From 31f3f8b5a4fccfda98ad2bef37d935921305b162 Mon Sep 17 00:00:00 2001 From: lehins Date: Tue, 16 Apr 2024 10:58:25 +0000 Subject: [PATCH] Remove all existing files --- .editorconfig | 15 - .git-blame-ignore-revs | 40 - .gitattributes | 7 - .github/PULL_REQUEST_TEMPLATE.md | 18 - .github/tools/extract_criterion.jq | 3 - .github/workflows/bench.yml | 46 - .github/workflows/gh-pages.yml | 83 - .github/workflows/haskell.yml | 234 - .github/workflows/push-specs.yml | 34 - .gitignore | 69 - .readthedocs.yml | 16 - CHANGELOG.md | 747 - CODE-OF-CONDUCT.md | 1 - CODEOWNERS | 7 - CONTRIBUTING.md | 436 - HowToProfileLedger.md | 190 - LICENSE | 177 - NOTICE | 12 - README.md | 180 - RELEASING.md | 317 - REVISIONING.md | 288 - SECURITY.md | 1 - bors.toml | 7 - cabal.project | 96 - default.nix | 10 - doc/.gitignore | 1 - doc/README.md | 30 - doc/_static/.gitkeep | 0 doc/_templates/.gitkeep | 0 doc/cardano-logo.png | Bin 15171 -> 0 bytes doc/conf.py | 99 - doc/explanations/faq.rst | 267 - doc/explanations/features.rst | 103 - doc/explanations/glossary.rst | 86 - doc/explanations/index.rst | 16 - .../learn-about-native-tokens.rst | 33 - doc/explanations/listing.rst | 52 - doc/explanations/min-utxo-alonzo.rst | 120 - doc/explanations/min-utxo-mary.rst | 146 - doc/explanations/policies.rst | 111 - doc/explanations/token-bundles.rst | 143 - doc/flake.nix | 27 - doc/index.rst | 10 - doc/requirements.in | 4 - doc/requirements.txt | 69 - docs/LedgerEvents.md | 141 - ...2-01_001-record-architectural-decisions.md | 30 - ...12-05_002-version-serialization-schemes.md | 43 - ...022-12-05_003-track-individual-deposits.md | 89 - ...4-untranslatable-data-in-script-context.md | 41 - .../2022-12-05_005-remove-ptr-addresses.md | 45 - ...2022-12-05_006-cost-model-serialization.md | 102 - .../2022-12-12_007-optimize-ledger-view.md | 63 - docs/graphviz-diagrams/conway_transitions.gv | 99 - docs/graphviz-diagrams/conway_transitions.svg | 378 - docs/graphviz-diagrams/shelley-transitions.gv | 65 - .../graphviz-diagrams/shelley-transitions.svg | 376 - .../IOHKCoverPage.sty | 264 - docs/non-integer-calculations/Makefile | 44 - docs/non-integer-calculations/cf_exp.png | Bin 47644 -> 0 bytes docs/non-integer-calculations/d2-depends.pdf | Bin 55444 -> 0 bytes docs/non-integer-calculations/flake.nix | 64 - docs/non-integer-calculations/habbrv.bst | 1376 - docs/non-integer-calculations/haskell.png | Bin 78711 -> 0 bytes .../iohk-share-logo.jpg | Bin 9689 -> 0 bytes docs/non-integer-calculations/iohk.sty | 46 - docs/non-integer-calculations/ln_cf.png | Bin 54592 -> 0 bytes docs/non-integer-calculations/ln_taylor.png | Bin 60215 -> 0 bytes .../non-integer-calculations.tex | 594 - docs/non-integer-calculations/references.bib | 180 - docs/non-integer-calculations/taylor_exp.png | Bin 52327 -> 0 bytes docs/pool-ranking/Makefile | 50 - docs/pool-ranking/flake.nix | 66 - docs/pool-ranking/habbrv.bst | 1376 - docs/pool-ranking/pool-ranking.tex | 301 - docs/pool-ranking/references.bib | 15 - docs/proxy-keys/images/addresses.pdf | Bin 17029 -> 0 bytes docs/proxy-keys/proxy-key-sols.tex | 319 - docs/small-step-semantics/Makefile | 47 - docs/small-step-semantics/flake.nix | 60 - .../small-step-semantics.tex | 293 - eras/allegra/impl/.ghcid | 1 - eras/allegra/impl/CHANGELOG.md | 112 - eras/allegra/impl/Setup.hs | 3 - .../allegra/impl/cardano-ledger-allegra.cabal | 137 - eras/allegra/impl/cddl-files/allegra.cddl | 277 - eras/allegra/impl/cddl-files/crypto.cddl | 13 - eras/allegra/impl/cddl-files/extras.cddl | 27 - .../impl/src/Cardano/Ledger/Allegra.hs | 48 - .../impl/src/Cardano/Ledger/Allegra/Core.hs | 11 - .../impl/src/Cardano/Ledger/Allegra/Era.hs | 85 - .../src/Cardano/Ledger/Allegra/PParams.hs | 59 - .../impl/src/Cardano/Ledger/Allegra/Rules.hs | 24 - .../src/Cardano/Ledger/Allegra/Rules/Bbody.hs | 53 - .../src/Cardano/Ledger/Allegra/Rules/Deleg.hs | 16 - .../Cardano/Ledger/Allegra/Rules/Delegs.hs | 29 - .../src/Cardano/Ledger/Allegra/Rules/Delpl.hs | 26 - .../Cardano/Ledger/Allegra/Rules/Ledger.hs | 49 - .../Cardano/Ledger/Allegra/Rules/Ledgers.hs | 49 - .../src/Cardano/Ledger/Allegra/Rules/Pool.hs | 14 - .../src/Cardano/Ledger/Allegra/Rules/Ppup.hs | 14 - .../src/Cardano/Ledger/Allegra/Rules/Utxo.hs | 482 - .../src/Cardano/Ledger/Allegra/Rules/Utxow.hs | 99 - .../src/Cardano/Ledger/Allegra/Scripts.hs | 343 - .../src/Cardano/Ledger/Allegra/Transition.hs | 30 - .../src/Cardano/Ledger/Allegra/Translation.hs | 170 - .../impl/src/Cardano/Ledger/Allegra/Tx.hs | 82 - .../src/Cardano/Ledger/Allegra/TxAuxData.hs | 180 - .../impl/src/Cardano/Ledger/Allegra/TxBody.hs | 383 - .../impl/src/Cardano/Ledger/Allegra/TxCert.hs | 70 - .../impl/src/Cardano/Ledger/Allegra/TxOut.hs | 34 - .../impl/src/Cardano/Ledger/Allegra/TxSeq.hs | 25 - .../impl/src/Cardano/Ledger/Allegra/TxWits.hs | 43 - .../impl/src/Cardano/Ledger/Allegra/UTxO.hs | 38 - eras/allegra/impl/test/Main.hs | 19 - .../Cardano/Ledger/Allegra/Binary/CddlSpec.hs | 23 - .../Test/Cardano/Ledger/Allegra/BinarySpec.hs | 36 - .../Test/Cardano/Ledger/Allegra/Arbitrary.hs | 139 - .../Cardano/Ledger/Allegra/Binary/Cddl.hs | 18 - .../Test/Cardano/Ledger/Allegra/ImpTest.hs | 77 - .../Test/Cardano/Ledger/Allegra/TreeDiff.hs | 61 - ...pec with Plutus Integration - Review 1.rtf | 88 - ...pec with Plutus Integration - Review 2.rtf | 39 - ...pec with Plutus Integration - Review 3.rtf | 67 - ...pec with Plutus Integration - Review 4.rtf | 44 - ...pec with Plutus Integration - Review 5.rtf | 50 - ...pec with Plutus Integration - Review 6.rtf | 50 - eras/alonzo/formal-spec/IOHKCoverPage.sty | 266 - eras/alonzo/formal-spec/Makefile | 43 - eras/alonzo/formal-spec/alonzo-ledger.tex | 397 - eras/alonzo/formal-spec/chain.tex | 151 - eras/alonzo/formal-spec/comments.sty | 49 - eras/alonzo/formal-spec/constants.tex | 16 - eras/alonzo/formal-spec/flake.nix | 30 - eras/alonzo/formal-spec/frontmatter.tex | 58 - eras/alonzo/formal-spec/introduction.tex | 88 - eras/alonzo/formal-spec/iohk-share-logo.jpg | Bin 9689 -> 0 bytes eras/alonzo/formal-spec/iohk.sty | 47 - eras/alonzo/formal-spec/ledger.tex | 119 - eras/alonzo/formal-spec/mir.tex | 288 - eras/alonzo/formal-spec/properties.tex | 618 - .../formal-spec/protocol-parameters.tex | 198 - eras/alonzo/formal-spec/references.bib | 120 - eras/alonzo/formal-spec/transactions.tex | 302 - eras/alonzo/formal-spec/txinfo.tex | 332 - eras/alonzo/formal-spec/utxo.tex | 915 - eras/alonzo/formal-spec/value-size.tex | 49 - eras/alonzo/impl/.ghcid | 1 - eras/alonzo/impl/CHANGELOG.md | 305 - eras/alonzo/impl/Setup.hs | 3 - eras/alonzo/impl/cardano-ledger-alonzo.cabal | 165 - eras/alonzo/impl/cddl-files/alonzo.cddl | 407 - eras/alonzo/impl/cddl-files/crypto.cddl | 13 - eras/alonzo/impl/cddl-files/extras.cddl | 40 - eras/alonzo/impl/src/Cardano/Ledger/Alonzo.hs | 79 - .../impl/src/Cardano/Ledger/Alonzo/Core.hs | 73 - .../impl/src/Cardano/Ledger/Alonzo/Data.hs | 10 - .../impl/src/Cardano/Ledger/Alonzo/Era.hs | 92 - .../impl/src/Cardano/Ledger/Alonzo/Genesis.hs | 241 - .../src/Cardano/Ledger/Alonzo/Language.hs | 5 - .../impl/src/Cardano/Ledger/Alonzo/PParams.hs | 866 - .../Cardano/Ledger/Alonzo/Plutus/Context.hs | 131 - .../Cardano/Ledger/Alonzo/Plutus/Evaluate.hs | 246 - .../Cardano/Ledger/Alonzo/Plutus/TxInfo.hs | 327 - .../impl/src/Cardano/Ledger/Alonzo/Rules.hs | 29 - .../src/Cardano/Ledger/Alonzo/Rules/Bbody.hs | 299 - .../src/Cardano/Ledger/Alonzo/Rules/Deleg.hs | 14 - .../src/Cardano/Ledger/Alonzo/Rules/Delegs.hs | 29 - .../src/Cardano/Ledger/Alonzo/Rules/Delpl.hs | 26 - .../src/Cardano/Ledger/Alonzo/Rules/Ledger.hs | 213 - .../Cardano/Ledger/Alonzo/Rules/Ledgers.hs | 65 - .../src/Cardano/Ledger/Alonzo/Rules/Pool.hs | 14 - .../src/Cardano/Ledger/Alonzo/Rules/Ppup.hs | 16 - .../src/Cardano/Ledger/Alonzo/Rules/Utxo.hs | 747 - .../src/Cardano/Ledger/Alonzo/Rules/Utxos.hs | 505 - .../src/Cardano/Ledger/Alonzo/Rules/Utxow.hs | 460 - .../impl/src/Cardano/Ledger/Alonzo/Scripts.hs | 576 - .../src/Cardano/Ledger/Alonzo/Scripts/Data.hs | 5 - .../src/Cardano/Ledger/Alonzo/Transition.hs | 71 - .../src/Cardano/Ledger/Alonzo/Translation.hs | 166 - .../impl/src/Cardano/Ledger/Alonzo/Tx.hs | 512 - .../src/Cardano/Ledger/Alonzo/TxAuxData.hs | 348 - .../impl/src/Cardano/Ledger/Alonzo/TxBody.hs | 715 - .../impl/src/Cardano/Ledger/Alonzo/TxCert.hs | 71 - .../impl/src/Cardano/Ledger/Alonzo/TxOut.hs | 514 - .../impl/src/Cardano/Ledger/Alonzo/TxSeq.hs | 275 - .../impl/src/Cardano/Ledger/Alonzo/TxWits.hs | 744 - .../impl/src/Cardano/Ledger/Alonzo/UTxO.hs | 333 - eras/alonzo/impl/test/Main.hs | 29 - .../Cardano/Ledger/Alonzo/Binary/CddlSpec.hs | 34 - .../Test/Cardano/Ledger/Alonzo/BinarySpec.hs | 28 - .../Test/Cardano/Ledger/Alonzo/Arbitrary.hs | 493 - .../Test/Cardano/Ledger/Alonzo/Binary/Cddl.hs | 18 - .../Ledger/Alonzo/Binary/CostModelsSpec.hs | 158 - .../Cardano/Ledger/Alonzo/Binary/RoundTrip.hs | 78 - .../Ledger/Alonzo/Binary/TxWitsSpec.hs | 180 - .../testlib/Test/Cardano/Ledger/Alonzo/Imp.hs | 23 - .../Cardano/Ledger/Alonzo/Imp/UtxosSpec.hs | 86 - .../Test/Cardano/Ledger/Alonzo/ImpTest.hs | 412 - .../Test/Cardano/Ledger/Alonzo/TreeDiff.hs | 174 - eras/alonzo/test-suite/.ghcid | 1 - eras/alonzo/test-suite/CHANGELOG.md | 42 - .../cardano-ledger-alonzo-test.cabal | 132 - .../test-suite/golden/FailureDescription.json | 1 - eras/alonzo/test-suite/golden/IsValid.json | 1 - .../golden/TagMismatchDescription.json | 1 - .../test-suite/golden/ValidityInterval.json | 1 - eras/alonzo/test-suite/golden/block.cbor | Bin 1865 -> 0 bytes .../golden/hex-block-node-issue-4228.cbor | 1 - .../golden/mainnet-alonzo-genesis.json | 195 - .../test-suite/golden/translations.cbor | Bin 2805008 -> 0 bytes eras/alonzo/test-suite/golden/tx.cbor | Bin 865 -> 0 bytes .../Cardano/Ledger/Alonzo/AlonzoEraGen.hs | 568 - .../Test/Cardano/Ledger/Alonzo/EraMapping.hs | 11 - .../Ledger/Alonzo/Examples/Consensus.hs | 191 - .../src/Test/Cardano/Ledger/Alonzo/Scripts.hs | 6 - .../Ledger/Alonzo/Serialisation/Generators.hs | 122 - .../src/Test/Cardano/Ledger/Alonzo/Trace.hs | 82 - .../Ledger/Alonzo/Translation/Golden.hs | 86 - .../Alonzo/Translation/TranslatableGen.hs | 119 - .../Alonzo/Translation/TranslationInstance.hs | 176 - .../test-suite/test/GenerateGoldenFileMain.hs | 11 - .../Test/Cardano/Ledger/Alonzo/ChainTrace.hs | 174 - .../test/Test/Cardano/Ledger/Alonzo/Golden.hs | 577 - .../Ledger/Alonzo/GoldenTranslation.hs | 40 - .../Ledger/Alonzo/PlutusScriptExamples.hs | 200 - .../Ledger/Alonzo/Serialisation/Canonical.hs | 134 - .../Ledger/Alonzo/Serialisation/Tripping.hs | 61 - .../Test/Cardano/Ledger/Alonzo/Translation.hs | 70 - .../test/Test/Cardano/Ledger/Alonzo/TxInfo.hs | 148 - eras/alonzo/test-suite/test/Tests.hs | 59 - eras/babbage/formal-spec/IOHKCoverPage.sty | 265 - eras/babbage/formal-spec/Makefile | 43 - eras/babbage/formal-spec/babbage-ledger.tex | 384 - eras/babbage/formal-spec/comments.sty | 49 - eras/babbage/formal-spec/flake.nix | 30 - eras/babbage/formal-spec/frontmatter.tex | 71 - eras/babbage/formal-spec/introduction.tex | 21 - eras/babbage/formal-spec/iohk-share-logo.jpg | Bin 9689 -> 0 bytes eras/babbage/formal-spec/iohk.sty | 47 - eras/babbage/formal-spec/notation.tex | 16 - eras/babbage/formal-spec/references.bib | 135 - eras/babbage/formal-spec/remove-overlay.tex | 201 - eras/babbage/formal-spec/rewards.tex | 29 - eras/babbage/formal-spec/transactions.tex | 74 - eras/babbage/formal-spec/txinfo.tex | 42 - eras/babbage/formal-spec/utxo.tex | 368 - eras/babbage/impl/.ghcid | 1 - eras/babbage/impl/CHANGELOG.md | 152 - eras/babbage/impl/Setup.hs | 3 - .../babbage/impl/cardano-ledger-babbage.cabal | 148 - eras/babbage/impl/cddl-files/babbage.cddl | 441 - eras/babbage/impl/cddl-files/crypto.cddl | 13 - eras/babbage/impl/cddl-files/extras.cddl | 47 - .../impl/src/Cardano/Ledger/Babbage.hs | 53 - .../src/Cardano/Ledger/Babbage/Collateral.hs | 57 - .../impl/src/Cardano/Ledger/Babbage/Core.hs | 21 - .../impl/src/Cardano/Ledger/Babbage/Era.hs | 103 - .../src/Cardano/Ledger/Babbage/PParams.hs | 645 - .../impl/src/Cardano/Ledger/Babbage/Rules.hs | 31 - .../src/Cardano/Ledger/Babbage/Rules/Bbody.hs | 95 - .../src/Cardano/Ledger/Babbage/Rules/Deleg.hs | 16 - .../Cardano/Ledger/Babbage/Rules/Delegs.hs | 29 - .../src/Cardano/Ledger/Babbage/Rules/Delpl.hs | 26 - .../Cardano/Ledger/Babbage/Rules/Ledger.hs | 168 - .../Cardano/Ledger/Babbage/Rules/Ledgers.hs | 75 - .../src/Cardano/Ledger/Babbage/Rules/Pool.hs | 14 - .../src/Cardano/Ledger/Babbage/Rules/Ppup.hs | 14 - .../src/Cardano/Ledger/Babbage/Rules/Utxo.hs | 523 - .../src/Cardano/Ledger/Babbage/Rules/Utxos.hs | 299 - .../src/Cardano/Ledger/Babbage/Rules/Utxow.hs | 442 - .../src/Cardano/Ledger/Babbage/Scripts.hs | 112 - .../src/Cardano/Ledger/Babbage/Transition.hs | 31 - .../src/Cardano/Ledger/Babbage/Translation.hs | 172 - .../impl/src/Cardano/Ledger/Babbage/Tx.hs | 76 - .../src/Cardano/Ledger/Babbage/TxAuxData.hs | 24 - .../impl/src/Cardano/Ledger/Babbage/TxBody.hs | 865 - .../impl/src/Cardano/Ledger/Babbage/TxCert.hs | 70 - .../impl/src/Cardano/Ledger/Babbage/TxInfo.hs | 355 - .../impl/src/Cardano/Ledger/Babbage/TxOut.hs | 719 - .../impl/src/Cardano/Ledger/Babbage/TxWits.hs | 62 - .../impl/src/Cardano/Ledger/Babbage/UTxO.hs | 156 - eras/babbage/impl/test/Main.hs | 29 - .../Cardano/Ledger/Babbage/Binary/CddlSpec.hs | 36 - .../Test/Cardano/Ledger/Babbage/BinarySpec.hs | 41 - .../Test/Cardano/Ledger/Babbage/Arbitrary.hs | 167 - .../Cardano/Ledger/Babbage/Binary/Cddl.hs | 18 - .../Test/Cardano/Ledger/Babbage/ImpTest.hs | 43 - .../Test/Cardano/Ledger/Babbage/TreeDiff.hs | 74 - eras/babbage/test-suite/.ghcid | 1 - eras/babbage/test-suite/CHANGELOG.md | 42 - .../cardano-ledger-babbage-test.cabal | 99 - .../test-suite/golden/translations.cbor | Bin 3752125 -> 0 bytes .../Ledger/Babbage/Examples/Consensus.hs | 187 - .../Babbage/Serialisation/Generators.hs | 84 - .../Babbage/Translation/TranslatableGen.hs | 173 - .../src/Test/Cardano/Ledger/Babbage/TxInfo.hs | 382 - .../test-suite/test/GenerateGoldenFileMain.hs | 11 - .../Ledger/Babbage/GoldenTranslation.hs | 40 - .../Ledger/Babbage/Serialisation/Tripping.hs | 34 - eras/babbage/test-suite/test/Tests.hs | 34 - eras/byron/README.md | 65 - eras/byron/cddl-spec/Makefile | 45 - eras/byron/cddl-spec/README.md | 20 - eras/byron/cddl-spec/byron-binary.tex | 582 - eras/byron/cddl-spec/byron.cddl | 209 - eras/byron/cddl-spec/flake.nix | 49 - eras/byron/cddl-spec/latexmkrc | 8 - eras/byron/chain/executable-spec/.ghcid | 1 - eras/byron/chain/executable-spec/CHANGELOG.md | 21 - eras/byron/chain/executable-spec/Setup.hs | 3 - .../executable-spec/byron-spec-chain.cabal | 66 - eras/byron/chain/executable-spec/flake.nix | 13 - .../src/Byron/Spec/Chain/STS/Block.hs | 322 - .../src/Byron/Spec/Chain/STS/Rule/BBody.hs | 128 - .../src/Byron/Spec/Chain/STS/Rule/Bupi.hs | 82 - .../src/Byron/Spec/Chain/STS/Rule/Chain.hs | 373 - .../src/Byron/Spec/Chain/STS/Rule/Epoch.hs | 60 - .../src/Byron/Spec/Chain/STS/Rule/Pbft.hs | 60 - .../src/Byron/Spec/Chain/STS/Rule/SigCnt.hs | 139 - eras/byron/chain/executable-spec/test/Main.hs | 23 - .../Test/Byron/AbstractSize/Properties.hs | 185 - .../Test/Byron/Spec/Chain/STS/Properties.hs | 230 - eras/byron/chain/formal-spec/Makefile | 47 - .../chain/formal-spec/byron-blockchain.tex | 1486 - .../byron/chain/formal-spec/calculating-t.png | Bin 13107 -> 0 bytes eras/byron/chain/formal-spec/flake.nix | 59 - eras/byron/chain/formal-spec/references.bib | 43 - eras/byron/crypto/.ghcid | 1 - eras/byron/crypto/CHANGELOG.md | 21 - eras/byron/crypto/README.md | 17 - eras/byron/crypto/Setup.hs | 3 - .../byron/crypto/cardano-crypto-wrapper.cabal | 138 - eras/byron/crypto/src/Cardano/Crypto.hs | 9 - .../crypto/src/Cardano/Crypto/Encryption.hs | 38 - .../crypto/src/Cardano/Crypto/Hashing.hs | 310 - .../crypto/src/Cardano/Crypto/Orphans.hs | 113 - .../src/Cardano/Crypto/ProtocolMagic.hs | 163 - .../byron/crypto/src/Cardano/Crypto/Random.hs | 78 - eras/byron/crypto/src/Cardano/Crypto/Raw.hs | 17 - .../crypto/src/Cardano/Crypto/Signing.hs | 12 - .../src/Cardano/Crypto/Signing/KeyGen.hs | 33 - .../src/Cardano/Crypto/Signing/Redeem.hs | 10 - .../Cardano/Crypto/Signing/Redeem/Compact.hs | 155 - .../Cardano/Crypto/Signing/Redeem/KeyGen.hs | 32 - .../Crypto/Signing/Redeem/Signature.hs | 113 - .../Crypto/Signing/Redeem/SigningKey.hs | 52 - .../Crypto/Signing/Redeem/VerificationKey.hs | 169 - .../crypto/src/Cardano/Crypto/Signing/Safe.hs | 8 - .../src/Cardano/Crypto/Signing/Safe/KeyGen.hs | 30 - .../Cardano/Crypto/Signing/Safe/PassPhrase.hs | 79 - .../Cardano/Crypto/Signing/Safe/SafeSigner.hs | 21 - .../src/Cardano/Crypto/Signing/Signature.hs | 234 - .../src/Cardano/Crypto/Signing/SigningKey.hs | 84 - .../crypto/src/Cardano/Crypto/Signing/Tag.hs | 88 - .../Cardano/Crypto/Signing/VerificationKey.hs | 141 - eras/byron/crypto/test/.ghcid | 1 - eras/byron/crypto/test/CHANGELOG.md | 29 - eras/byron/crypto/test/GetDataFileName.hs | 37 - eras/byron/crypto/test/Setup.hs | 3 - .../crypto/test/Test/Cardano/Crypto/CBOR.hs | 318 - .../crypto/test/Test/Cardano/Crypto/Dummy.hs | 30 - .../test/Test/Cardano/Crypto/Example.hs | 90 - .../crypto/test/Test/Cardano/Crypto/Gen.hs | 212 - .../test/Test/Cardano/Crypto/Hashing.hs | 75 - .../crypto/test/Test/Cardano/Crypto/Json.hs | 38 - .../crypto/test/Test/Cardano/Crypto/Keys.hs | 62 - .../crypto/test/Test/Cardano/Crypto/Limits.hs | 100 - .../test/Test/Cardano/Crypto/Orphans.hs | 31 - .../crypto/test/Test/Cardano/Crypto/Random.hs | 19 - .../Test/Cardano/Crypto/Signing/Redeem.hs | 75 - .../Cardano/Crypto/Signing/Redeem/Compact.hs | 46 - .../test/Test/Cardano/Crypto/Signing/Safe.hs | 63 - .../Test/Cardano/Crypto/Signing/Signing.hs | 72 - .../crypto/test/cardano-crypto-test.cabal | 63 - eras/byron/crypto/test/golden/AbstractHash | 3 - eras/byron/crypto/test/golden/DecShare | 7 - eras/byron/crypto/test/golden/EncShare | 3 - eras/byron/crypto/test/golden/PassPhrase | 3 - eras/byron/crypto/test/golden/RedeemSignature | 5 - .../byron/crypto/test/golden/RedeemSigningKey | 5 - .../crypto/test/golden/RedeemVerificationKey | 3 - eras/byron/crypto/test/golden/Secret | 3 - eras/byron/crypto/test/golden/SecretProof | 26 - eras/byron/crypto/test/golden/Signature | 5 - eras/byron/crypto/test/golden/SigningKey | 9 - eras/byron/crypto/test/golden/VerificationKey | 5 - eras/byron/crypto/test/golden/VssPublicKey | 3 - .../ProtocolMagic0_Legacy_HasNetworkMagic | 1 - .../ProtocolMagic1_Legacy_HasNetworkMagic | 1 - .../ProtocolMagic2_Legacy_HasNetworkMagic | 1 - .../json/ProtocolMagic_Legacy_NMMustBeJust | 1 - .../json/ProtocolMagic_Legacy_NMMustBeNothing | 1 - eras/byron/crypto/test/test.hs | 28 - eras/byron/ledger/executable-spec/.ghcid | 1 - .../byron/ledger/executable-spec/CHANGELOG.md | 25 - eras/byron/ledger/executable-spec/Setup.hs | 3 - .../executable-spec/byron-spec-ledger.cabal | 86 - eras/byron/ledger/executable-spec/flake.nix | 13 - .../src/Byron/Spec/Ledger/Core.hs | 474 - .../src/Byron/Spec/Ledger/Core/Generators.hs | 97 - .../src/Byron/Spec/Ledger/Core/Omniscient.hs | 37 - .../src/Byron/Spec/Ledger/Delegation.hs | 861 - .../src/Byron/Spec/Ledger/Delegation/Test.hs | 32 - .../src/Byron/Spec/Ledger/GlobalParams.hs | 41 - .../src/Byron/Spec/Ledger/STS/UTXO.hs | 117 - .../src/Byron/Spec/Ledger/STS/UTXOW.hs | 165 - .../src/Byron/Spec/Ledger/STS/UTXOWS.hs | 76 - .../src/Byron/Spec/Ledger/UTxO.hs | 215 - .../src/Byron/Spec/Ledger/UTxO/Generators.hs | 369 - .../src/Byron/Spec/Ledger/Update.hs | 1877 - .../Byron/Spec/Ledger/Update/Generators.hs | 89 - .../src/Byron/Spec/Ledger/Update/Test.hs | 70 - .../executable-spec/src/Data/AbstractSize.hs | 227 - .../src/Hedgehog/Gen/Double.hs | 18 - .../byron/ledger/executable-spec/test/Main.hs | 63 - .../Spec/Ledger/AbstractSize/Properties.hs | 164 - .../Spec/Ledger/Core/Generators/Properties.hs | 61 - .../Byron/Spec/Ledger/Delegation/Examples.hs | 218 - .../Spec/Ledger/Delegation/Properties.hs | 414 - .../Byron/Spec/Ledger/Relation/Properties.hs | 255 - .../Test/Byron/Spec/Ledger/UTxO/Properties.hs | 233 - .../Test/Byron/Spec/Ledger/Update/Examples.hs | 213 - .../Byron/Spec/Ledger/Update/Properties.hs | 633 - eras/byron/ledger/formal-spec/Makefile | 46 - .../formal-spec/blockchain-interface.tex | 1145 - .../byron/ledger/formal-spec/byron-ledger.tex | 162 - .../ledger/formal-spec/crypto-primitives.tex | 103 - eras/byron/ledger/formal-spec/delegation.tex | 474 - eras/byron/ledger/formal-spec/flake.nix | 60 - eras/byron/ledger/formal-spec/frontmatter.tex | 38 - eras/byron/ledger/formal-spec/gitinfo2.mk | 24 - eras/byron/ledger/formal-spec/intro.tex | 25 - eras/byron/ledger/formal-spec/iohk.sty | 48 - eras/byron/ledger/formal-spec/notation.tex | 85 - eras/byron/ledger/formal-spec/properties.tex | 245 - eras/byron/ledger/formal-spec/references.bib | 6 - .../ledger/formal-spec/update-mechanism.tex | 1425 - eras/byron/ledger/formal-spec/utxo.tex | 420 - eras/byron/ledger/impl/.ghcid | 1 - eras/byron/ledger/impl/CHANGELOG.md | 29 - eras/byron/ledger/impl/README.md | 7 - eras/byron/ledger/impl/Setup.hs | 3 - .../ledger/impl/cardano-ledger-byron.cabal | 399 - eras/byron/ledger/impl/doc/network-magic.md | 123 - eras/byron/ledger/impl/mainnet-genesis.json | 14572 --- .../ledger/impl/src/Cardano/Chain/Block.hs | 12 - .../impl/src/Cardano/Chain/Block/Block.hs | 625 - .../impl/src/Cardano/Chain/Block/Body.hs | 95 - .../impl/src/Cardano/Chain/Block/Boundary.hs | 84 - .../impl/src/Cardano/Chain/Block/Header.hs | 765 - .../impl/src/Cardano/Chain/Block/Proof.hs | 117 - .../src/Cardano/Chain/Block/Validation.hs | 630 - .../src/Cardano/Chain/Block/ValidationMode.hs | 27 - .../impl/src/Cardano/Chain/Byron/API.hs | 29 - .../src/Cardano/Chain/Byron/API/Common.hs | 160 - .../src/Cardano/Chain/Byron/API/Mempool.hs | 261 - .../src/Cardano/Chain/Byron/API/Protocol.hs | 20 - .../src/Cardano/Chain/Byron/API/Validation.hs | 201 - .../ledger/impl/src/Cardano/Chain/Common.hs | 21 - .../Cardano/Chain/Common/AddrAttributes.hs | 180 - .../Cardano/Chain/Common/AddrSpendingData.hs | 127 - .../impl/src/Cardano/Chain/Common/Address.hs | 365 - .../src/Cardano/Chain/Common/AddressHash.hs | 26 - .../src/Cardano/Chain/Common/Attributes.hs | 245 - .../src/Cardano/Chain/Common/BlockCount.hs | 37 - .../impl/src/Cardano/Chain/Common/CBOR.hs | 137 - .../Cardano/Chain/Common/ChainDifficulty.hs | 57 - .../impl/src/Cardano/Chain/Common/Compact.hs | 68 - .../impl/src/Cardano/Chain/Common/KeyHash.hs | 55 - .../impl/src/Cardano/Chain/Common/Lovelace.hs | 267 - .../Cardano/Chain/Common/LovelacePortion.hs | 119 - .../impl/src/Cardano/Chain/Common/Merkle.hs | 239 - .../src/Cardano/Chain/Common/NetworkMagic.hs | 84 - .../src/Cardano/Chain/Common/TxFeePolicy.hs | 129 - .../src/Cardano/Chain/Common/TxSizeLinear.hs | 90 - .../impl/src/Cardano/Chain/Constants.hs | 16 - .../impl/src/Cardano/Chain/Delegation.hs | 8 - .../Cardano/Chain/Delegation/Certificate.hs | 265 - .../impl/src/Cardano/Chain/Delegation/Map.hs | 97 - .../src/Cardano/Chain/Delegation/Payload.hs | 81 - .../Chain/Delegation/Validation/Activation.hs | 80 - .../Chain/Delegation/Validation/Interface.hs | 218 - .../Chain/Delegation/Validation/Scheduling.hs | 234 - .../impl/src/Cardano/Chain/Epoch/File.hs | 141 - .../src/Cardano/Chain/Epoch/Validation.hs | 104 - .../ledger/impl/src/Cardano/Chain/Genesis.hs | 15 - .../src/Cardano/Chain/Genesis/AvvmBalances.hs | 59 - .../impl/src/Cardano/Chain/Genesis/Config.hs | 200 - .../impl/src/Cardano/Chain/Genesis/Data.hs | 185 - .../src/Cardano/Chain/Genesis/Delegation.hs | 128 - .../src/Cardano/Chain/Genesis/Generate.hs | 454 - .../impl/src/Cardano/Chain/Genesis/Hash.hs | 26 - .../src/Cardano/Chain/Genesis/Initializer.hs | 44 - .../src/Cardano/Chain/Genesis/KeyHashes.hs | 57 - .../Cardano/Chain/Genesis/NonAvvmBalances.hs | 124 - .../impl/src/Cardano/Chain/Genesis/Spec.hs | 54 - .../impl/src/Cardano/Chain/MempoolPayload.hs | 94 - .../src/Cardano/Chain/ProtocolConstants.hs | 46 - .../ledger/impl/src/Cardano/Chain/Slotting.hs | 10 - .../Chain/Slotting/EpochAndSlotCount.hs | 100 - .../src/Cardano/Chain/Slotting/EpochNumber.hs | 97 - .../src/Cardano/Chain/Slotting/EpochSlots.hs | 58 - .../src/Cardano/Chain/Slotting/SlotCount.hs | 21 - .../src/Cardano/Chain/Slotting/SlotNumber.hs | 82 - .../ledger/impl/src/Cardano/Chain/Ssc.hs | 254 - .../ledger/impl/src/Cardano/Chain/UTxO.hs | 16 - .../impl/src/Cardano/Chain/UTxO/Compact.hs | 271 - .../src/Cardano/Chain/UTxO/GenesisUTxO.hs | 33 - .../ledger/impl/src/Cardano/Chain/UTxO/Tx.hs | 226 - .../impl/src/Cardano/Chain/UTxO/TxAux.hs | 117 - .../impl/src/Cardano/Chain/UTxO/TxPayload.hs | 93 - .../impl/src/Cardano/Chain/UTxO/TxProof.hs | 106 - .../impl/src/Cardano/Chain/UTxO/TxWitness.hs | 161 - .../impl/src/Cardano/Chain/UTxO/UTxO.hs | 195 - .../Cardano/Chain/UTxO/UTxOConfiguration.hs | 63 - .../impl/src/Cardano/Chain/UTxO/Validation.hs | 414 - .../src/Cardano/Chain/UTxO/ValidationMode.hs | 24 - .../ledger/impl/src/Cardano/Chain/Update.hs | 17 - .../Cardano/Chain/Update/ApplicationName.hs | 123 - .../src/Cardano/Chain/Update/InstallerHash.hs | 66 - .../impl/src/Cardano/Chain/Update/Payload.hs | 99 - .../impl/src/Cardano/Chain/Update/Proof.hs | 19 - .../impl/src/Cardano/Chain/Update/Proposal.hs | 265 - .../Chain/Update/ProtocolParameters.hs | 222 - .../Chain/Update/ProtocolParametersUpdate.hs | 204 - .../Cardano/Chain/Update/ProtocolVersion.hs | 69 - .../src/Cardano/Chain/Update/SoftforkRule.hs | 96 - .../Cardano/Chain/Update/SoftwareVersion.hs | 117 - .../src/Cardano/Chain/Update/SystemTag.hs | 138 - .../Chain/Update/Validation/Endorsement.hs | 237 - .../Chain/Update/Validation/Interface.hs | 539 - .../Interface/ProtocolVersionBump.hs | 64 - .../Chain/Update/Validation/Registration.hs | 597 - .../Cardano/Chain/Update/Validation/Voting.hs | 209 - .../impl/src/Cardano/Chain/Update/Vote.hs | 260 - .../impl/src/Cardano/Chain/ValidationMode.hs | 108 - eras/byron/ledger/impl/test/.ghcid | 1 - eras/byron/ledger/impl/test/CHANGELOG.md | 29 - .../byron/ledger/impl/test/GetDataFileName.hs | 30 - eras/byron/ledger/impl/test/NormalFormTest.hs | 28 - eras/byron/ledger/impl/test/Setup.hs | 3 - .../test/Test/Cardano/Chain/Block/CBOR.hs | 338 - .../impl/test/Test/Cardano/Chain/Block/Gen.hs | 251 - .../test/Test/Cardano/Chain/Block/Model.hs | 563 - .../Cardano/Chain/Block/Model/Examples.hs | 41 - .../test/Test/Cardano/Chain/Block/Size.hs | 207 - .../Test/Cardano/Chain/Block/Validation.hs | 143 - .../Cardano/Chain/Block/ValidationMode.hs | 302 - .../impl/test/Test/Cardano/Chain/Buildable.hs | 230 - .../impl/test/Test/Cardano/Chain/Byron/API.hs | 246 - .../test/Test/Cardano/Chain/Common/Address.hs | 34 - .../Test/Cardano/Chain/Common/Attributes.hs | 24 - .../test/Test/Cardano/Chain/Common/CBOR.hs | 374 - .../test/Test/Cardano/Chain/Common/Compact.hs | 52 - .../test/Test/Cardano/Chain/Common/Example.hs | 88 - .../test/Test/Cardano/Chain/Common/Gen.hs | 203 - .../Test/Cardano/Chain/Common/Lovelace.hs | 127 - .../impl/test/Test/Cardano/Chain/Config.hs | 33 - .../Test/Cardano/Chain/Delegation/CBOR.hs | 66 - .../Cardano/Chain/Delegation/Certificate.hs | 72 - .../Test/Cardano/Chain/Delegation/Example.hs | 25 - .../test/Test/Cardano/Chain/Delegation/Gen.hs | 77 - .../Test/Cardano/Chain/Delegation/Model.hs | 147 - .../Test/Cardano/Chain/Elaboration/Block.hs | 336 - .../Cardano/Chain/Elaboration/Delegation.hs | 130 - .../Test/Cardano/Chain/Elaboration/Keys.hs | 60 - .../Test/Cardano/Chain/Elaboration/UTxO.hs | 153 - .../Test/Cardano/Chain/Elaboration/Update.hs | 244 - .../test/Test/Cardano/Chain/Epoch/File.hs | 39 - .../test/Test/Cardano/Chain/Genesis/CBOR.hs | 56 - .../test/Test/Cardano/Chain/Genesis/Dummy.hs | 155 - .../Test/Cardano/Chain/Genesis/Example.hs | 195 - .../test/Test/Cardano/Chain/Genesis/Gen.hs | 190 - .../test/Test/Cardano/Chain/Genesis/Json.hs | 80 - .../Test/Cardano/Chain/MempoolPayload/CBOR.hs | 150 - .../Cardano/Chain/MempoolPayload/Example.hs | 32 - .../Test/Cardano/Chain/MempoolPayload/Gen.hs | 22 - .../test/Test/Cardano/Chain/Slotting/CBOR.hs | 81 - .../Test/Cardano/Chain/Slotting/Example.hs | 24 - .../test/Test/Cardano/Chain/Slotting/Gen.hs | 88 - .../Test/Cardano/Chain/Slotting/Properties.hs | 74 - .../impl/test/Test/Cardano/Chain/Ssc/CBOR.hs | 216 - .../impl/test/Test/Cardano/Chain/UTxO/CBOR.hs | 379 - .../test/Test/Cardano/Chain/UTxO/Compact.hs | 90 - .../test/Test/Cardano/Chain/UTxO/Example.hs | 149 - .../impl/test/Test/Cardano/Chain/UTxO/Gen.hs | 212 - .../test/Test/Cardano/Chain/UTxO/Model.hs | 160 - .../Test/Cardano/Chain/UTxO/ValidationMode.hs | 247 - .../test/Test/Cardano/Chain/Update/CBOR.hs | 259 - .../test/Test/Cardano/Chain/Update/Example.hs | 176 - .../test/Test/Cardano/Chain/Update/Gen.hs | 262 - .../Test/Cardano/Chain/Update/Properties.hs | 160 - .../ledger/impl/test/Test/Cardano/Mirror.hs | 34 - eras/byron/ledger/impl/test/Test/Options.hs | 172 - .../impl/test/cardano-ledger-byron-test.cabal | 209 - .../test/golden/cbor/block/BlockSignature | 17 - .../ledger/impl/test/golden/cbor/block/Body | 139 - .../golden/cbor/block/BoundaryBlockHeader | 5 - .../impl/test/golden/cbor/block/BoundaryBody | 6 - .../golden/cbor/block/BoundaryConsensusData | 1 - .../impl/test/golden/cbor/block/BoundaryProof | 3 - .../impl/test/golden/cbor/block/ExtraBodyData | 1 - .../ledger/impl/test/golden/cbor/block/Header | 38 - .../impl/test/golden/cbor/block/HeaderHash | 3 - .../ledger/impl/test/golden/cbor/block/Proof | 11 - .../golden/cbor/block/StaticConfig_GCSpec | 61 - .../ledger/impl/test/golden/cbor/block/ToSign | 17 - .../cbor/common/AddrSpendingData_Redeem | 3 - .../cbor/common/AddrSpendingData_VerKey | 5 - .../impl/test/golden/cbor/common/AddrType_R | 1 - .../impl/test/golden/cbor/common/AddrType_VK | 1 - .../impl/test/golden/cbor/common/Address | 5 - .../impl/test/golden/cbor/common/Address0 | 5 - .../impl/test/golden/cbor/common/Address1 | 3 - .../impl/test/golden/cbor/common/Address2 | 5 - .../impl/test/golden/cbor/common/Address3 | 6 - .../impl/test/golden/cbor/common/Address4 | 4 - .../impl/test/golden/cbor/common/Attributes | 1 - .../impl/test/golden/cbor/common/BlockCount | 1 - .../test/golden/cbor/common/ChainDifficulty | 1 - .../impl/test/golden/cbor/common/KeyHash | 2 - .../impl/test/golden/cbor/common/Lovelace | 1 - .../test/golden/cbor/common/LovelacePortion | 1 - .../impl/test/golden/cbor/common/MerkleRoot | 3 - .../impl/test/golden/cbor/common/MerkleTree | 3 - .../golden/cbor/common/TxFeePolicy_Linear | 2 - .../impl/test/golden/cbor/common/TxSizeLinear | 2 - .../test/golden/cbor/delegation/Certificate | 13 - .../test/golden/cbor/delegation/DlgPayload | 51 - .../golden/cbor/mempoolpayload/MempoolPayload | 15 - .../cbor/mempoolpayload/MempoolPayload1 | 13 - .../cbor/mempoolpayload/MempoolPayload2 | 63 - .../cbor/mempoolpayload/MempoolPayload3 | 11 - .../golden/cbor/slotting/EpochAndSlotCount | 1 - .../test/golden/cbor/slotting/EpochNumber | 1 - .../impl/test/golden/cbor/slotting/EpochSlots | 1 - .../impl/test/golden/cbor/slotting/SlotNumber | 1 - .../impl/test/golden/cbor/ssc/Commitment | 844 - .../impl/test/golden/cbor/ssc/CommitmentsMap | 853 - .../impl/test/golden/cbor/ssc/InnerSharesMap | 34 - .../ledger/impl/test/golden/cbor/ssc/Opening | 3 - .../impl/test/golden/cbor/ssc/OpeningsMap | 5 - .../impl/test/golden/cbor/ssc/SharesMap | 36 - .../test/golden/cbor/ssc/SignedCommitment | 853 - .../cbor/ssc/SscPayload_CertificatesPayload | 44 - .../cbor/ssc/SscPayload_CommitmentsPayload | 896 - .../cbor/ssc/SscPayload_OpeningsPayload | 48 - .../golden/cbor/ssc/SscPayload_SharesPayload | 79 - .../cbor/ssc/SscProof_CertificatesProof | 3 - .../golden/cbor/ssc/SscProof_CommitmentsProof | 5 - .../golden/cbor/ssc/SscProof_OpeningsProof | 5 - .../test/golden/cbor/ssc/SscProof_SharesProof | 5 - .../impl/test/golden/cbor/ssc/VssCertificate | 11 - .../test/golden/cbor/ssc/VssCertificatesHash | 3 - .../test/golden/cbor/ssc/VssCertificatesMap | 44 - .../test/golden/cbor/update/ApplicationName | 1 - .../update/AttackTarget_NetworkAddressTarget | 1 - .../update/AttackTarget_PubKeyAddressTarget | 1 - .../golden/cbor/update/BlockHeader_Boundary | 5 - .../golden/cbor/update/CommitmentSignature | 5 - .../impl/test/golden/cbor/update/HashRaw | 3 - .../impl/test/golden/cbor/update/HashTx | 3 - .../test/golden/cbor/update/InstallerHash | 9 - .../impl/test/golden/cbor/update/Payload | 73 - .../ledger/impl/test/golden/cbor/update/Proof | 3 - .../impl/test/golden/cbor/update/Proposal | 63 - .../impl/test/golden/cbor/update/ProposalBody | 54 - .../golden/cbor/update/ProtocolParameters | 4 - .../cbor/update/ProtocolParametersUpdate | 5 - .../test/golden/cbor/update/ProtocolVersion | 1 - .../golden/cbor/update/SharesDistribution | 3 - .../impl/test/golden/cbor/update/SoftforkRule | 1 - .../test/golden/cbor/update/SoftwareVersion | 1 - .../golden/cbor/update/StaticConfig_GCSpec | 1 - .../golden/cbor/update/StaticConfig_GCSrc | 1 - .../impl/test/golden/cbor/update/SystemTag | 2 - .../ledger/impl/test/golden/cbor/update/UpId | 3 - .../ledger/impl/test/golden/cbor/update/Vote | 11 - .../ledger/impl/test/golden/cbor/utxo/HashTx | 3 - .../ledger/impl/test/golden/cbor/utxo/Tx | 6 - .../impl/test/golden/cbor/utxo/TxAttributes | 1 - .../ledger/impl/test/golden/cbor/utxo/TxId | 3 - .../impl/test/golden/cbor/utxo/TxInList | 3 - .../cbor/utxo/TxInWitness_RedeemWitness | 7 - .../golden/cbor/utxo/TxInWitness_VKWitness | 9 - .../impl/test/golden/cbor/utxo/TxIn_Utxo | 3 - .../ledger/impl/test/golden/cbor/utxo/TxOut | 3 - .../ledger/impl/test/golden/cbor/utxo/TxOut1 | 4 - .../impl/test/golden/cbor/utxo/TxOutList | 3 - .../impl/test/golden/cbor/utxo/TxOutList1 | 3 - .../impl/test/golden/cbor/utxo/TxPayload1 | 36 - .../ledger/impl/test/golden/cbor/utxo/TxProof | 5 - .../ledger/impl/test/golden/cbor/utxo/TxSig | 5 - .../impl/test/golden/cbor/utxo/TxSigData | 3 - .../impl/test/golden/cbor/utxo/TxWitness | 9 - .../GenesisData0_Legacy_HasNetworkMagic | 86 - eras/byron/ledger/impl/test/test.hs | 73 - eras/conway/impl/.ghcid | 1 - eras/conway/impl/CHANGELOG.md | 697 - eras/conway/impl/Setup.hs | 3 - eras/conway/impl/cardano-ledger-conway.cabal | 201 - eras/conway/impl/cddl-files/conway.cddl | 608 - eras/conway/impl/cddl-files/crypto.cddl | 13 - eras/conway/impl/cddl-files/extra.cddl | 59 - eras/conway/impl/src/Cardano/Ledger/Conway.hs | 59 - .../impl/src/Cardano/Ledger/Conway/Core.hs | 69 - .../impl/src/Cardano/Ledger/Conway/Era.hs | 152 - .../impl/src/Cardano/Ledger/Conway/Genesis.hs | 103 - .../src/Cardano/Ledger/Conway/Governance.hs | 459 - .../Ledger/Conway/Governance/DRepPulser.hs | 420 - .../Ledger/Conway/Governance/Internal.hs | 578 - .../Ledger/Conway/Governance/Procedures.hs | 923 - .../Ledger/Conway/Governance/Proposals.hs | 680 - .../impl/src/Cardano/Ledger/Conway/PParams.hs | 1361 - .../Cardano/Ledger/Conway/Plutus/Context.hs | 212 - .../impl/src/Cardano/Ledger/Conway/Rules.hs | 47 - .../src/Cardano/Ledger/Conway/Rules/Bbody.hs | 104 - .../src/Cardano/Ledger/Conway/Rules/Cert.hs | 268 - .../src/Cardano/Ledger/Conway/Rules/Certs.hs | 270 - .../src/Cardano/Ledger/Conway/Rules/Deleg.hs | 182 - .../src/Cardano/Ledger/Conway/Rules/Enact.hs | 121 - .../src/Cardano/Ledger/Conway/Rules/Epoch.hs | 421 - .../src/Cardano/Ledger/Conway/Rules/Gov.hs | 461 - .../Cardano/Ledger/Conway/Rules/GovCert.hs | 227 - .../src/Cardano/Ledger/Conway/Rules/Ledger.hs | 493 - .../Cardano/Ledger/Conway/Rules/Ledgers.hs | 84 - .../Cardano/Ledger/Conway/Rules/NewEpoch.hs | 238 - .../src/Cardano/Ledger/Conway/Rules/Pool.hs | 12 - .../src/Cardano/Ledger/Conway/Rules/Ratify.hs | 375 - .../src/Cardano/Ledger/Conway/Rules/Tickf.hs | 93 - .../src/Cardano/Ledger/Conway/Rules/Utxo.hs | 69 - .../src/Cardano/Ledger/Conway/Rules/Utxos.hs | 302 - .../src/Cardano/Ledger/Conway/Rules/Utxow.hs | 138 - .../impl/src/Cardano/Ledger/Conway/Scripts.hs | 281 - .../src/Cardano/Ledger/Conway/Transition.hs | 166 - .../src/Cardano/Ledger/Conway/Translation.hs | 202 - .../impl/src/Cardano/Ledger/Conway/Tx.hs | 101 - .../src/Cardano/Ledger/Conway/TxAuxData.hs | 24 - .../impl/src/Cardano/Ledger/Conway/TxBody.hs | 745 - .../impl/src/Cardano/Ledger/Conway/TxCert.hs | 817 - .../impl/src/Cardano/Ledger/Conway/TxInfo.hs | 663 - .../impl/src/Cardano/Ledger/Conway/TxOut.hs | 72 - .../impl/src/Cardano/Ledger/Conway/TxWits.hs | 60 - .../impl/src/Cardano/Ledger/Conway/UTxO.hs | 173 - eras/conway/impl/test/Main.hs | 45 - .../Cardano/Ledger/Conway/Binary/CddlSpec.hs | 42 - .../Test/Cardano/Ledger/Conway/BinarySpec.hs | 32 - .../Ledger/Conway/CommitteeRatifySpec.hs | 394 - .../Cardano/Ledger/Conway/DRepRatifySpec.hs | 328 - .../Test/Cardano/Ledger/Conway/GenesisSpec.hs | 141 - .../Ledger/Conway/GovActionReorderSpec.hs | 37 - .../Ledger/Conway/Plutus/PlutusSpec.hs | 23 - .../conway/impl/test/data/conway-genesis.json | 76 - .../Test/Cardano/Ledger/Conway/Arbitrary.hs | 774 - .../Test/Cardano/Ledger/Conway/Binary/Cddl.hs | 18 - .../Ledger/Conway/Binary/Regression.hs | 147 - .../Cardano/Ledger/Conway/Binary/RoundTrip.hs | 92 - .../testlib/Test/Cardano/Ledger/Conway/Imp.hs | 66 - .../Cardano/Ledger/Conway/Imp/EnactSpec.hs | 429 - .../Cardano/Ledger/Conway/Imp/EpochSpec.hs | 389 - .../Cardano/Ledger/Conway/Imp/GovCertSpec.hs | 237 - .../Test/Cardano/Ledger/Conway/Imp/GovSpec.hs | 1223 - .../Cardano/Ledger/Conway/Imp/RatifySpec.hs | 806 - .../Cardano/Ledger/Conway/Imp/UtxoSpec.hs | 165 - .../Cardano/Ledger/Conway/Imp/UtxosSpec.hs | 763 - .../Test/Cardano/Ledger/Conway/ImpTest.hs | 1327 - .../Test/Cardano/Ledger/Conway/Proposals.hs | 83 - .../Test/Cardano/Ledger/Conway/TreeDiff.hs | 235 - eras/conway/test-suite/.ghcid | 1 - eras/conway/test-suite/CHANGELOG.md | 46 - .../cardano-ledger-conway-test.cabal | 89 - .../test-suite/golden/translations.cbor | Bin 68526 -> 0 bytes .../Ledger/Conway/Examples/Consensus.hs | 206 - .../Conway/Translation/TranslatableGen.hs | 86 - .../test-suite/test/GenerateGoldenFileMain.hs | 12 - .../test/Test/Cardano/Ledger/Conway/TxInfo.hs | 15 - eras/conway/test-suite/test/Tests.hs | 20 - eras/mary/impl/.ghcid | 1 - eras/mary/impl/CHANGELOG.md | 104 - eras/mary/impl/Setup.hs | 3 - eras/mary/impl/cardano-ledger-mary.cabal | 147 - eras/mary/impl/cddl-files/crypto.cddl | 13 - eras/mary/impl/cddl-files/extras.cddl | 27 - eras/mary/impl/cddl-files/mary.cddl | 292 - eras/mary/impl/src/Cardano/Ledger/Mary.hs | 46 - .../mary/impl/src/Cardano/Ledger/Mary/Core.hs | 9 - eras/mary/impl/src/Cardano/Ledger/Mary/Era.hs | 75 - .../impl/src/Cardano/Ledger/Mary/PParams.hs | 64 - .../impl/src/Cardano/Ledger/Mary/Rules.hs | 20 - .../src/Cardano/Ledger/Mary/Rules/Bbody.hs | 53 - .../src/Cardano/Ledger/Mary/Rules/Deleg.hs | 14 - .../src/Cardano/Ledger/Mary/Rules/Delegs.hs | 29 - .../src/Cardano/Ledger/Mary/Rules/Delpl.hs | 26 - .../src/Cardano/Ledger/Mary/Rules/Ledger.hs | 49 - .../src/Cardano/Ledger/Mary/Rules/Ledgers.hs | 49 - .../src/Cardano/Ledger/Mary/Rules/Pool.hs | 14 - .../src/Cardano/Ledger/Mary/Rules/Ppup.hs | 14 - .../src/Cardano/Ledger/Mary/Rules/Utxo.hs | 25 - .../src/Cardano/Ledger/Mary/Rules/Utxow.hs | 29 - .../impl/src/Cardano/Ledger/Mary/Scripts.hs | 29 - .../src/Cardano/Ledger/Mary/Transition.hs | 31 - .../src/Cardano/Ledger/Mary/Translation.hs | 166 - eras/mary/impl/src/Cardano/Ledger/Mary/Tx.hs | 59 - .../impl/src/Cardano/Ledger/Mary/TxAuxData.hs | 34 - .../impl/src/Cardano/Ledger/Mary/TxBody.hs | 316 - .../impl/src/Cardano/Ledger/Mary/TxCert.hs | 84 - .../impl/src/Cardano/Ledger/Mary/TxOut.hs | 79 - .../impl/src/Cardano/Ledger/Mary/TxSeq.hs | 25 - .../impl/src/Cardano/Ledger/Mary/TxWits.hs | 43 - .../mary/impl/src/Cardano/Ledger/Mary/UTxO.hs | 92 - .../impl/src/Cardano/Ledger/Mary/Value.hs | 893 - eras/mary/impl/test/Main.hs | 21 - .../Cardano/Ledger/Mary/Binary/CddlSpec.hs | 23 - .../Test/Cardano/Ledger/Mary/BinarySpec.hs | 36 - .../Test/Cardano/Ledger/Mary/ValueSpec.hs | 125 - .../Test/Cardano/Ledger/Mary/Arbitrary.hs | 242 - .../Test/Cardano/Ledger/Mary/Binary/Cddl.hs | 18 - .../Test/Cardano/Ledger/Mary/ImpTest.hs | 34 - .../Test/Cardano/Ledger/Mary/TreeDiff.hs | 47 - eras/shelley-ma/formal-spec/IOHKCoverPage.sty | 266 - eras/shelley-ma/formal-spec/Makefile | 50 - eras/shelley-ma/formal-spec/TODO | 14 - eras/shelley-ma/formal-spec/chain.tex | 84 - eras/shelley-ma/formal-spec/epoch.tex | 71 - eras/shelley-ma/formal-spec/flake.nix | 30 - eras/shelley-ma/formal-spec/frontmatter.tex | 51 - eras/shelley-ma/formal-spec/introduction.tex | 58 - .../formal-spec/iohk-share-logo.jpg | Bin 9689 -> 0 bytes eras/shelley-ma/formal-spec/iohk.sty | 46 - eras/shelley-ma/formal-spec/mary-ledger.tex | 390 - eras/shelley-ma/formal-spec/notation.tex | 11 - eras/shelley-ma/formal-spec/properties.tex | 88 - eras/shelley-ma/formal-spec/references.bib | 109 - .../formal-spec/timelock-language.tex | 197 - eras/shelley-ma/formal-spec/transactions.tex | 154 - eras/shelley-ma/formal-spec/utxo.tex | 268 - eras/shelley-ma/formal-spec/value-size.tex | 171 - eras/shelley-ma/formal-spec/value.tex | 233 - eras/shelley-ma/test-suite/.ghcid | 1 - eras/shelley-ma/test-suite/CHANGELOG.md | 33 - eras/shelley-ma/test-suite/README.md | 9 - .../cardano-ledger-shelley-ma-test.cabal | 112 - .../Ledger/Allegra/Examples/Consensus.hs | 78 - .../src/Test/Cardano/Ledger/AllegraEraGen.hs | 214 - .../src/Test/Cardano/Ledger/EraBuffet.hs | 20 - .../Cardano/Ledger/Mary/Examples/Consensus.hs | 43 - .../src/Test/Cardano/Ledger/Mary/Golden.hs | 207 - .../src/Test/Cardano/Ledger/MaryEraGen.hs | 337 - .../ShelleyMA/Serialisation/Generators.hs | 9 - .../ShelleyMA/Serialisation/Roundtrip.hs | 51 - .../Test/Cardano/Ledger/ShelleyMA/TxBody.hs | 80 - .../Test/Cardano/Ledger/TranslationTools.hs | 80 - .../Ledger/Allegra/ScriptTranslation.hs | 77 - .../Cardano/Ledger/Allegra/Translation.hs | 70 - .../test/Test/Cardano/Ledger/Mary/Examples.hs | 56 - .../Test/Cardano/Ledger/Mary/Examples/Cast.hs | 93 - .../Ledger/Mary/Examples/MultiAssets.hs | 658 - .../Test/Cardano/Ledger/Mary/Translation.hs | 76 - .../test/Test/Cardano/Ledger/Mary/Value.hs | 443 - .../Cardano/Ledger/ShelleyMA/Serialisation.hs | 21 - .../Serialisation/Golden/Encoding.hs | 450 - .../ShelleyMA/Serialisation/Timelocks.hs | 61 - eras/shelley-ma/test-suite/test/Tests.hs | 92 - eras/shelley/Deliverables.pdf | Bin 280735 -> 0 bytes eras/shelley/design-spec/.gitignore | 28 - eras/shelley/design-spec/CHANGELOG.md | 119 - eras/shelley/design-spec/IOHKCoverPage.sty | 271 - eras/shelley/design-spec/Makefile | 51 - eras/shelley/design-spec/addresses.dot | 52 - eras/shelley/design-spec/addresses.pdf | Bin 17029 -> 0 bytes eras/shelley/design-spec/cm-super-t1.enc | 290 - eras/shelley/design-spec/d1-depends.pdf | Bin 78923 -> 0 bytes eras/shelley/design-spec/flake.nix | 56 - eras/shelley/design-spec/habbrv.bst | 1376 - eras/shelley/design-spec/iohk-share-logo.jpg | Bin 9689 -> 0 bytes eras/shelley/design-spec/references.bib | 202 - eras/shelley/design-spec/rewards.png | Bin 13274 -> 0 bytes eras/shelley/design-spec/sftt1200.pfb | Bin 167085 -> 0 bytes .../design-spec/shelley-delegation.tex | 4593 - eras/shelley/formal-spec/CHANGELOG.md | 66 - eras/shelley/formal-spec/IOHKCoverPage.sty | 264 - eras/shelley/formal-spec/Makefile | 50 - eras/shelley/formal-spec/Properties.md | 458 - eras/shelley/formal-spec/address-binary.tex | 109 - eras/shelley/formal-spec/address.tex | 219 - .../formal-spec/bootstrap-witnesses.tex | 55 - eras/shelley/formal-spec/cddl.tex | 17 - eras/shelley/formal-spec/chain.tex | 2019 - eras/shelley/formal-spec/crypto-details.tex | 126 - .../shelley/formal-spec/crypto-primitives.tex | 267 - eras/shelley/formal-spec/delegation.tex | 1181 - eras/shelley/formal-spec/epoch.tex | 1541 - eras/shelley/formal-spec/errata.tex | 130 - eras/shelley/formal-spec/flake.nix | 66 - eras/shelley/formal-spec/frontmatter.tex | 96 - eras/shelley/formal-spec/habbrv.bst | 1376 - eras/shelley/formal-spec/hand_proofs.tex | 646 - eras/shelley/formal-spec/incentives.tex | 1196 - eras/shelley/formal-spec/intro.tex | 56 - eras/shelley/formal-spec/iohk-share-logo.jpg | Bin 9689 -> 0 bytes eras/shelley/formal-spec/iohk.sty | 46 - eras/shelley/formal-spec/leader-value.tex | 60 - eras/shelley/formal-spec/ledger.tex | 195 - eras/shelley/formal-spec/multi-sig.tex | 884 - eras/shelley/formal-spec/notation.tex | 98 - eras/shelley/formal-spec/proofs.tex | 393 - eras/shelley/formal-spec/properties.tex | 682 - .../formal-spec/protocol-parameters.tex | 240 - eras/shelley/formal-spec/references.bib | 342 - eras/shelley/formal-spec/rules.dot | 50 - eras/shelley/formal-spec/rules.pdf | Bin 12644 -> 0 bytes .../formal-spec/scripts-multicurrency.tex | 559 - eras/shelley/formal-spec/shelley-ledger.tex | 385 - eras/shelley/formal-spec/software-updates.tex | 44 - eras/shelley/formal-spec/sts-overview.tex | 28 - eras/shelley/formal-spec/transactions.tex | 194 - eras/shelley/formal-spec/txsize.tex | 7 - eras/shelley/formal-spec/update.tex | 278 - eras/shelley/formal-spec/utxo.tex | 607 - eras/shelley/impl/.ghcid | 1 - eras/shelley/impl/CHANGELOG.md | 461 - eras/shelley/impl/Setup.hs | 3 - .../shelley/impl/cardano-ledger-shelley.cabal | 209 - eras/shelley/impl/cddl-files/crypto.cddl | 13 - eras/shelley/impl/cddl-files/extras.cddl | 27 - eras/shelley/impl/cddl-files/shelley.cddl | 258 - eras/shelley/impl/src/Cardano/Ledger/Chain.hs | 78 - .../impl/src/Cardano/Ledger/Shelley.hs | 24 - .../impl/src/Cardano/Ledger/Shelley/API.hs | 12 - .../Ledger/Shelley/API/ByronTranslation.hs | 188 - .../src/Cardano/Ledger/Shelley/API/Genesis.hs | 123 - .../src/Cardano/Ledger/Shelley/API/Mempool.hs | 322 - .../src/Cardano/Ledger/Shelley/API/Types.hs | 153 - .../Cardano/Ledger/Shelley/API/Validation.hs | 267 - .../src/Cardano/Ledger/Shelley/API/Wallet.hs | 520 - .../src/Cardano/Ledger/Shelley/AdaPots.hs | 173 - .../Ledger/Shelley/Address/Bootstrap.hs | 7 - .../src/Cardano/Ledger/Shelley/BlockChain.hs | 263 - .../impl/src/Cardano/Ledger/Shelley/Core.hs | 46 - .../Ledger/Shelley/Delegation/Certificates.hs | 6 - .../Cardano/Ledger/Shelley/EpochBoundary.hs | 7 - .../impl/src/Cardano/Ledger/Shelley/Era.hs | 122 - .../src/Cardano/Ledger/Shelley/Genesis.hs | 698 - .../src/Cardano/Ledger/Shelley/Governance.hs | 235 - .../src/Cardano/Ledger/Shelley/HardForks.hs | 66 - .../src/Cardano/Ledger/Shelley/Internal.hs | 67 - .../src/Cardano/Ledger/Shelley/LedgerState.hs | 161 - .../Shelley/LedgerState/IncrementalStake.hs | 371 - .../Shelley/LedgerState/NewEpochState.hs | 152 - .../Shelley/LedgerState/PulsingReward.hs | 347 - .../Ledger/Shelley/LedgerState/Types.hs | 741 - .../src/Cardano/Ledger/Shelley/Metadata.hs | 7 - .../src/Cardano/Ledger/Shelley/PParams.hs | 582 - .../src/Cardano/Ledger/Shelley/PoolParams.hs | 7 - .../src/Cardano/Ledger/Shelley/PoolRank.hs | 389 - .../Ledger/Shelley/RewardProvenance.hs | 322 - .../Cardano/Ledger/Shelley/RewardUpdate.hs | 366 - .../src/Cardano/Ledger/Shelley/Rewards.hs | 371 - .../impl/src/Cardano/Ledger/Shelley/Rules.hs | 48 - .../src/Cardano/Ledger/Shelley/Rules/Bbody.hs | 220 - .../src/Cardano/Ledger/Shelley/Rules/Deleg.hs | 412 - .../Cardano/Ledger/Shelley/Rules/Delegs.hs | 320 - .../src/Cardano/Ledger/Shelley/Rules/Delpl.hs | 248 - .../src/Cardano/Ledger/Shelley/Rules/Epoch.hs | 276 - .../Cardano/Ledger/Shelley/Rules/Ledger.hs | 343 - .../Cardano/Ledger/Shelley/Rules/Ledgers.hs | 185 - .../src/Cardano/Ledger/Shelley/Rules/Mir.hs | 184 - .../Cardano/Ledger/Shelley/Rules/NewEpoch.hs | 271 - .../src/Cardano/Ledger/Shelley/Rules/Newpp.hs | 137 - .../src/Cardano/Ledger/Shelley/Rules/Pool.hs | 238 - .../Cardano/Ledger/Shelley/Rules/PoolReap.hs | 234 - .../src/Cardano/Ledger/Shelley/Rules/Ppup.hs | 222 - .../Cardano/Ledger/Shelley/Rules/Reports.hs | 106 - .../src/Cardano/Ledger/Shelley/Rules/Rupd.hs | 171 - .../src/Cardano/Ledger/Shelley/Rules/Snap.hs | 126 - .../src/Cardano/Ledger/Shelley/Rules/Tick.hs | 388 - .../src/Cardano/Ledger/Shelley/Rules/Upec.hs | 146 - .../src/Cardano/Ledger/Shelley/Rules/Utxo.hs | 667 - .../src/Cardano/Ledger/Shelley/Rules/Utxow.hs | 569 - .../src/Cardano/Ledger/Shelley/Scripts.hs | 221 - .../src/Cardano/Ledger/Shelley/SoftForks.hs | 21 - .../Cardano/Ledger/Shelley/StabilityWindow.hs | 36 - .../src/Cardano/Ledger/Shelley/Transition.hs | 495 - .../src/Cardano/Ledger/Shelley/Translation.hs | 57 - .../impl/src/Cardano/Ledger/Shelley/Tx.hs | 402 - .../src/Cardano/Ledger/Shelley/TxAuxData.hs | 370 - .../impl/src/Cardano/Ledger/Shelley/TxBody.hs | 391 - .../impl/src/Cardano/Ledger/Shelley/TxCert.hs | 678 - .../impl/src/Cardano/Ledger/Shelley/TxOut.hs | 185 - .../impl/src/Cardano/Ledger/Shelley/TxWits.hs | 285 - .../impl/src/Cardano/Ledger/Shelley/UTxO.hs | 312 - eras/shelley/impl/test/Main.hs | 19 - .../Cardano/Ledger/Shelley/Binary/CddlSpec.hs | 49 - .../Ledger/Shelley/Binary/GoldenSpec.hs | 15 - .../Ledger/Shelley/Binary/RoundTripSpec.hs | 30 - .../Test/Cardano/Ledger/Shelley/BinarySpec.hs | 10 - .../Test/Cardano/Ledger/Shelley/Arbitrary.hs | 738 - .../Cardano/Ledger/Shelley/Binary/Cddl.hs | 18 - .../Cardano/Ledger/Shelley/Binary/Golden.hs | 85 - .../Ledger/Shelley/Binary/RoundTrip.hs | 89 - .../Test/Cardano/Ledger/Shelley/Constants.hs | 153 - .../Test/Cardano/Ledger/Shelley/Imp.hs | 30 - .../Cardano/Ledger/Shelley/Imp/EpochSpec.hs | 47 - .../Cardano/Ledger/Shelley/Imp/LedgerSpec.hs | 56 - .../Cardano/Ledger/Shelley/Imp/UtxowSpec.hs | 51 - .../Test/Cardano/Ledger/Shelley/ImpTest.hs | 1389 - .../Test/Cardano/Ledger/Shelley/TreeDiff.hs | 264 - .../Shelley/UnitTests/IncrementalStakeTest.hs | 138 - eras/shelley/test-suite/.ghcid | 1 - eras/shelley/test-suite/CHANGELOG.md | 45 - eras/shelley/test-suite/Setup.hs | 3 - .../test-suite/bench/BenchUTxOAggregate.hs | 141 - .../test-suite/bench/BenchValidation.hs | 212 - .../bench/Cardano/Ledger/Shelley/Bench/Gen.hs | 126 - .../Cardano/Ledger/Shelley/Bench/Rewards.hs | 215 - eras/shelley/test-suite/bench/Main.hs | 512 - eras/shelley/test-suite/bench/README.md | 22 - .../cardano-ledger-shelley-test.cabal | 209 - .../Ledger/Shelley/Address/Bootstrap.hs | 34 - .../Ledger/Shelley/BenchmarkFunctions.hs | 545 - .../Ledger/Shelley/ByronTranslation.hs | 59 - .../Ledger/Shelley/ConcreteCryptoTypes.hs | 59 - .../Cardano/Ledger/Shelley/Examples/Cast.hs | 243 - .../Ledger/Shelley/Examples/Consensus.hs | 575 - .../Ledger/Shelley/Examples/Federation.hs | 155 - .../Cardano/Ledger/Shelley/Generator/Block.hs | 308 - .../Ledger/Shelley/Generator/Constants.hs | 7 - .../Cardano/Ledger/Shelley/Generator/Core.hs | 561 - .../Ledger/Shelley/Generator/Delegation.hs | 6 - .../Ledger/Shelley/Generator/EraGen.hs | 371 - .../Ledger/Shelley/Generator/Presets.hs | 173 - .../Ledger/Shelley/Generator/ScriptClass.hs | 256 - .../Ledger/Shelley/Generator/ShelleyEraGen.hs | 146 - .../Ledger/Shelley/Generator/Trace/Chain.hs | 265 - .../Ledger/Shelley/Generator/Trace/DCert.hs | 6 - .../Ledger/Shelley/Generator/Trace/Ledger.hs | 184 - .../Ledger/Shelley/Generator/Trace/TxCert.hs | 290 - .../Ledger/Shelley/Generator/TxAuxData.hs | 134 - .../Ledger/Shelley/Generator/TxCert.hs | 571 - .../Ledger/Shelley/Generator/Update.hs | 351 - .../Cardano/Ledger/Shelley/Generator/Utxo.hs | 901 - .../Test/Cardano/Ledger/Shelley/LaxBlock.hs | 57 - .../Cardano/Ledger/Shelley/PropertyTests.hs | 90 - .../Test/Cardano/Ledger/Shelley/Rewards.hs | 822 - .../Ledger/Shelley/Rules/AdaPreservation.hs | 638 - .../Cardano/Ledger/Shelley/Rules/Chain.hs | 462 - .../Ledger/Shelley/Rules/ClassifyTraces.hs | 433 - .../Ledger/Shelley/Rules/CollisionFreeness.hs | 200 - .../Cardano/Ledger/Shelley/Rules/Deleg.hs | 218 - .../Cardano/Ledger/Shelley/Rules/Deposits.hs | 117 - .../Ledger/Shelley/Rules/IncrementalStake.hs | 230 - .../Test/Cardano/Ledger/Shelley/Rules/Pool.hs | 210 - .../Cardano/Ledger/Shelley/Rules/PoolReap.hs | 117 - .../Cardano/Ledger/Shelley/Rules/TestChain.hs | 347 - .../Serialisation/EraIndepGenerators.hs | 7 - .../Shelley/Serialisation/Generators.hs | 3 - .../Shelley/Serialisation/GoldenUtils.hs | 169 - .../Ledger/Shelley/ShelleyTranslation.hs | 23 - .../src/Test/Cardano/Ledger/Shelley/Utils.hs | 259 - .../Test/Cardano/Ledger/Shelley/WitVKeys.hs | 46 - .../src/Test/Cardano/Ledger/TerseTools.hs | 113 - .../test-suite/test/Golden/ShelleyGenesis | 93 - .../Test/Cardano/Ledger/Shelley/Examples.hs | 39 - .../Ledger/Shelley/Examples/Combinators.hs | 832 - .../Ledger/Shelley/Examples/EmptyBlock.hs | 118 - .../Shelley/Examples/GenesisDelegation.hs | 270 - .../Cardano/Ledger/Shelley/Examples/Init.hs | 109 - .../Cardano/Ledger/Shelley/Examples/Mir.hs | 396 - .../Ledger/Shelley/Examples/MirTransfer.hs | 260 - .../Ledger/Shelley/Examples/NetworkID.hs | 97 - .../Ledger/Shelley/Examples/PoolLifetime.hs | 1086 - .../Ledger/Shelley/Examples/PoolReReg.hs | 320 - .../Ledger/Shelley/Examples/TwoPools.hs | 811 - .../Ledger/Shelley/Examples/Updates.hs | 398 - .../test/Test/Cardano/Ledger/Shelley/Fees.hs | 543 - .../Ledger/Shelley/MultiSigExamples.hs | 308 - .../Test/Cardano/Ledger/Shelley/RulesTests.hs | 585 - .../Test/Cardano/Ledger/Shelley/SafeHash.hs | 100 - .../Cardano/Ledger/Shelley/Serialisation.hs | 19 - .../Shelley/Serialisation/Golden/Address.hs | 233 - .../Shelley/Serialisation/Golden/Encoding.hs | 1146 - .../Shelley/Serialisation/Golden/Genesis.hs | 285 - .../Shelley/Serialisation/Tripping/CBOR.hs | 56 - .../Shelley/Serialisation/Tripping/JSON.hs | 41 - .../Test/Cardano/Ledger/Shelley/UnitTests.hs | 707 - eras/shelley/test-suite/test/Tests.hs | 66 - flake.lock | 942 - flake.nix | 281 - fourmolu.yaml | 16 - hie.yaml | 319 - implementation-decisions.md | 117 - libs/cardano-data/.ghcid | 1 - libs/cardano-data/CHANGELOG.md | 44 - libs/cardano-data/Setup.hs | 3 - libs/cardano-data/cardano-data.cabal | 96 - libs/cardano-data/flake.nix | 14 - libs/cardano-data/src/Data/CanonicalMaps.hs | 112 - libs/cardano-data/src/Data/ListMap.hs | 170 - libs/cardano-data/src/Data/MapExtras.hs | 273 - libs/cardano-data/src/Data/MonoTuple.hs | 29 - libs/cardano-data/src/Data/OMap/Strict.hs | 425 - libs/cardano-data/src/Data/OSet/Strict.hs | 280 - libs/cardano-data/src/Data/Pulse.hs | 173 - libs/cardano-data/src/Data/Universe.hs | 214 - libs/cardano-data/test/Main.hs | 36 - .../test/Test/Cardano/Data/MapExtrasSpec.hs | 41 - .../test/Test/Cardano/Data/OMap/StrictSpec.hs | 168 - .../test/Test/Cardano/Data/OSet/StrictSpec.hs | 104 - .../cardano-data/testlib/Test/Cardano/Data.hs | 25 - .../testlib/Test/Cardano/Data/Arbitrary.hs | 20 - .../testlib/Test/Cardano/Data/TreeDiff.hs | 17 - libs/cardano-ledger-api/.ghcid | 1 - libs/cardano-ledger-api/CHANGELOG.md | 171 - libs/cardano-ledger-api/Setup.hs | 6 - .../cardano-ledger-api.cabal | 126 - .../src/Cardano/Ledger/Api.hs | 29 - .../src/Cardano/Ledger/Api/Era.hs | 87 - .../src/Cardano/Ledger/Api/Governance.hs | 85 - .../src/Cardano/Ledger/Api/PParams.hs | 298 - .../src/Cardano/Ledger/Api/Scripts.hs | 59 - .../src/Cardano/Ledger/Api/Scripts/Data.hs | 33 - .../src/Cardano/Ledger/Api/Scripts/ExUnits.hs | 249 - .../src/Cardano/Ledger/Api/State/Query.hs | 276 - .../Api/State/Query/CommitteeMembersState.hs | 186 - .../src/Cardano/Ledger/Api/Transition.hs | 54 - .../src/Cardano/Ledger/Api/Tx.hs | 84 - .../src/Cardano/Ledger/Api/Tx/Address.hs | 108 - .../src/Cardano/Ledger/Api/Tx/AuxData.hs | 29 - .../src/Cardano/Ledger/Api/Tx/Body.hs | 152 - .../src/Cardano/Ledger/Api/Tx/Cert.hs | 106 - .../src/Cardano/Ledger/Api/Tx/In.hs | 29 - .../src/Cardano/Ledger/Api/Tx/Out.hs | 161 - .../src/Cardano/Ledger/Api/Tx/Wits.hs | 63 - .../src/Cardano/Ledger/Api/UTxO.hs | 8 - .../Cardano/Ledger/Api/State/Imp/QuerySpec.hs | 308 - .../Cardano/Ledger/Api/State/QuerySpec.hs | 456 - .../test/Test/Cardano/Ledger/Api/Tx.hs | 112 - .../test/Test/Cardano/Ledger/Api/Tx/Body.hs | 171 - .../test/Test/Cardano/Ledger/Api/Tx/Out.hs | 111 - libs/cardano-ledger-api/test/Tests.hs | 29 - .../Test/Cardano/Ledger/Api/Arbitrary.hs | 9 - .../Test/Cardano/Ledger/Api/State/Query.hs | 29 - libs/cardano-ledger-binary/.ghcid | 1 - libs/cardano-ledger-binary/CHANGELOG.md | 111 - libs/cardano-ledger-binary/Setup.hs | 3 - libs/cardano-ledger-binary/bench/Bench.hs | 142 - .../cardano-ledger-binary.cabal | 194 - libs/cardano-ledger-binary/flake.nix | 14 - .../src/Cardano/Ledger/Binary.hs | 45 - .../src/Cardano/Ledger/Binary/Coders.hs | 30 - .../src/Cardano/Ledger/Binary/Crypto.hs | 138 - .../src/Cardano/Ledger/Binary/Decoding.hs | 286 - .../Ledger/Binary/Decoding/Annotated.hs | 213 - .../Cardano/Ledger/Binary/Decoding/Coders.hs | 630 - .../Cardano/Ledger/Binary/Decoding/DecCBOR.hs | 663 - .../Cardano/Ledger/Binary/Decoding/Decoder.hs | 1442 - .../Cardano/Ledger/Binary/Decoding/Drop.hs | 69 - .../Cardano/Ledger/Binary/Decoding/Sharing.hs | 204 - .../Cardano/Ledger/Binary/Decoding/Sized.hs | 80 - .../src/Cardano/Ledger/Binary/Encoding.hs | 123 - .../Cardano/Ledger/Binary/Encoding/Coders.hs | 238 - .../Cardano/Ledger/Binary/Encoding/EncCBOR.hs | 1163 - .../Cardano/Ledger/Binary/Encoding/Encoder.hs | 577 - .../src/Cardano/Ledger/Binary/FlatTerm.hs | 20 - .../src/Cardano/Ledger/Binary/Group.hs | 63 - .../src/Cardano/Ledger/Binary/Plain.hs | 144 - .../src/Cardano/Ledger/Binary/Version.hs | 138 - libs/cardano-ledger-binary/test/.ghcid | 1 - libs/cardano-ledger-binary/test/Main.hs | 35 - .../Test/Cardano/Ledger/Binary/Failure.hs | 74 - .../Test/Cardano/Ledger/Binary/PlainSpec.hs | 16 - .../Cardano/Ledger/Binary/RoundTripSpec.hs | 333 - .../Test/Cardano/Ledger/Binary/Success.hs | 48 - .../Cardano/Ledger/Binary/Vintage/Coders.hs | 399 - .../Cardano/Ledger/Binary/Vintage/Drop.hs | 78 - .../Cardano/Ledger/Binary/Vintage/Failure.hs | 101 - .../Ledger/Binary/Vintage/RoundTrip.hs | 114 - .../Ledger/Binary/Vintage/Serialization.hs | 176 - .../Ledger/Binary/Vintage/SizeBounds.hs | 192 - .../Test/Cardano/Ledger/Binary/Arbitrary.hs | 239 - .../Test/Cardano/Ledger/Binary/Cddl.hs | 306 - .../Cardano/Ledger/Binary/Plain/Golden.hs | 95 - .../Cardano/Ledger/Binary/Plain/RoundTrip.hs | 244 - .../Test/Cardano/Ledger/Binary/Random.hs | 51 - .../Test/Cardano/Ledger/Binary/RoundTrip.hs | 585 - .../Test/Cardano/Ledger/Binary/TreeDiff.hs | 198 - .../Test/Cardano/Ledger/Binary/Twiddle.hs | 257 - .../Cardano/Ledger/Binary/Vintage/Helpers.hs | 263 - .../Binary/Vintage/Helpers/GoldenRoundTrip.hs | 183 - libs/cardano-ledger-conformance/Setup.hs | 3 - .../cardano-ledger-conformance.cabal | 81 - .../src/Test/Cardano/Ledger/Conformance.hs | 17 - .../Ledger/Conformance/ExecSpecRule/Conway.hs | 143 - .../Ledger/Conformance/ExecSpecRule/Core.hs | 134 - .../Cardano/Ledger/Conformance/Orphans.hs | 117 - .../Cardano/Ledger/Conformance/Spec/Conway.hs | 17 - .../Conformance/SpecTranslate/Conway.hs | 877 - .../Ledger/Conformance/SpecTranslate/Core.hs | 65 - libs/cardano-ledger-conformance/test/Main.hs | 10 - libs/cardano-ledger-core/.ghcid | 1 - libs/cardano-ledger-core/CHANGELOG.md | 430 - libs/cardano-ledger-core/bench/Addr.hs | 45 - libs/cardano-ledger-core/bench/UMap.hs | 56 - .../cardano-ledger-core.cabal | 274 - .../src/Cardano/Ledger/Address.hs | 981 - .../src/Cardano/Ledger/Ap.hs | 116 - .../src/Cardano/Ledger/AuxiliaryData.hs | 40 - .../src/Cardano/Ledger/BHeaderView.hs | 49 - .../src/Cardano/Ledger/BaseTypes.hs | 860 - .../src/Cardano/Ledger/Block.hs | 171 - .../src/Cardano/Ledger/CertState.hs | 637 - .../src/Cardano/Ledger/Coin.hs | 166 - .../src/Cardano/Ledger/Compactible.hs | 33 - .../src/Cardano/Ledger/Core.hs | 623 - .../src/Cardano/Ledger/Core/Era.hs | 299 - .../src/Cardano/Ledger/Core/PParams.hs | 568 - .../src/Cardano/Ledger/Core/Translation.hs | 123 - .../src/Cardano/Ledger/Core/TxCert.hs | 188 - .../src/Cardano/Ledger/Credential.hs | 337 - .../src/Cardano/Ledger/Crypto.hs | 45 - .../src/Cardano/Ledger/DRep.hs | 175 - .../src/Cardano/Ledger/EpochBoundary.hs | 345 - .../src/Cardano/Ledger/Era.hs | 61 - .../src/Cardano/Ledger/HKD.hs | 64 - .../src/Cardano/Ledger/Hashes.hs | 91 - .../src/Cardano/Ledger/Keys.hs | 10 - .../src/Cardano/Ledger/Keys/Bootstrap.hs | 243 - .../src/Cardano/Ledger/Keys/Internal.hs | 369 - .../src/Cardano/Ledger/Keys/WitVKey.hs | 137 - .../src/Cardano/Ledger/Language.hs | 5 - .../src/Cardano/Ledger/MemoBytes.hs | 269 - .../src/Cardano/Ledger/Orphans.hs | 88 - .../src/Cardano/Ledger/Plutus.hs | 15 - .../src/Cardano/Ledger/Plutus/CostModels.hs | 499 - .../src/Cardano/Ledger/Plutus/Data.hs | 256 - .../src/Cardano/Ledger/Plutus/Evaluate.hs | 316 - .../src/Cardano/Ledger/Plutus/ExUnits.hs | 216 - .../src/Cardano/Ledger/Plutus/Language.hs | 403 - .../src/Cardano/Ledger/Plutus/ToPlutusData.hs | 127 - .../src/Cardano/Ledger/Plutus/TxInfo.hs | 212 - .../src/Cardano/Ledger/PoolDistr.hs | 112 - .../src/Cardano/Ledger/PoolParams.hs | 341 - .../src/Cardano/Ledger/Rewards.hs | 110 - .../Cardano/Ledger/Rules/ValidationMode.hs | 115 - .../src/Cardano/Ledger/SafeHash.hs | 243 - .../src/Cardano/Ledger/Serialization.hs | 188 - .../src/Cardano/Ledger/Slot.hs | 76 - .../src/Cardano/Ledger/Tools.hs | 267 - .../src/Cardano/Ledger/TxIn.hs | 119 - .../src/Cardano/Ledger/UMap.hs | 1037 - .../src/Cardano/Ledger/UTxO.hs | 271 - .../src/Cardano/Ledger/Val.hs | 140 - libs/cardano-ledger-core/test/Main.hs | 20 - .../test/Test/Cardano/Ledger/AddressSpec.hs | 270 - .../test/Test/Cardano/Ledger/BaseTypesSpec.hs | 92 - .../test/Test/Cardano/Ledger/BinarySpec.hs | 50 - .../test/Test/Cardano/Ledger/JsonSpec.hs | 40 - .../test/Test/Cardano/Ledger/PlutusSpec.hs | 58 - .../test/Test/Cardano/Ledger/UMapSpec.hs | 576 - .../testlib/Test/Cardano/Ledger/Common.hs | 143 - .../Test/Cardano/Ledger/Core/Address.hs | 369 - .../Test/Cardano/Ledger/Core/Arbitrary.hs | 893 - .../Test/Cardano/Ledger/Core/Binary.hs | 218 - .../Cardano/Ledger/Core/Binary/RoundTrip.hs | 264 - .../testlib/Test/Cardano/Ledger/Core/JSON.hs | 60 - .../Test/Cardano/Ledger/Core/KeyPair.hs | 244 - .../Test/Cardano/Ledger/Core/Rational.hs | 42 - .../testlib/Test/Cardano/Ledger/Core/Utils.hs | 53 - .../testlib/Test/Cardano/Ledger/Imp/Common.hs | 438 - .../testlib/Test/Cardano/Ledger/Plutus.hs | 122 - .../Test/Cardano/Ledger/Plutus/Examples.hs | 883 - .../Ledger/Plutus/ScriptTestContext.hs | 31 - .../Cardano/Ledger/Plutus/ToPlutusData.hs | 22 - .../testlib/Test/Cardano/Ledger/TreeDiff.hs | 253 - libs/cardano-ledger-test/.ghcid | 1 - libs/cardano-ledger-test/CHANGELOG.md | 1 - libs/cardano-ledger-test/Setup.hs | 3 - .../bench/Bench/Cardano/Ledger/ApplyTx.hs | 152 - .../bench/Bench/Cardano/Ledger/ApplyTx/Gen.hs | 99 - .../Bench/Cardano/Ledger/EpochBoundary.hs | 208 - .../Ledger/Serialisation/Generators.hs | 32 - .../bench/Bench/Cardano/Ledger/StakeDistr.hs | 357 - .../bench/Bench/Cardano/Ledger/SumStake.hs | 43 - .../bench/Bench/Cardano/Ledger/TxOut.hs | 169 - .../bench/Bench/Constrained/STS.hs | 40 - libs/cardano-ledger-test/bench/Main.hs | 26 - .../bench/resources/0_ledgerstate.cbor | Bin 4869 -> 0 bytes .../bench/resources/0_tx.cbor | Bin 529 -> 0 bytes .../bench/resources/1_ledgerstate.cbor | Bin 4072 -> 0 bytes .../bench/resources/1_tx.cbor | Bin 369 -> 0 bytes .../bench/resources/DESCRIPTION.md | 76 - .../cardano-ledger-test/benchProperty/Main.hs | 73 - .../cardano-ledger-test.cabal | 246 - .../src/Test/Cardano/Ledger/Alonzo/Tools.hs | 317 - .../Test/Cardano/Ledger/Constrained/Ast.hs | 1238 - .../Cardano/Ledger/Constrained/Classes.hs | 1221 - .../Cardano/Ledger/Constrained/Combinators.hs | 241 - .../Test/Cardano/Ledger/Constrained/Conway.hs | 13 - .../Cardano/Ledger/Constrained/Conway/Cert.hs | 53 - .../Ledger/Constrained/Conway/Deleg.hs | 63 - .../Cardano/Ledger/Constrained/Conway/Gov.hs | 444 - .../Ledger/Constrained/Conway/GovCert.hs | 61 - .../Ledger/Constrained/Conway/Instances.hs | 1305 - .../Ledger/Constrained/Conway/Ledger.hs | 33 - .../Ledger/Constrained/Conway/PParams.hs | 64 - .../Cardano/Ledger/Constrained/Conway/Pool.hs | 85 - .../Cardano/Ledger/Constrained/Conway/Utxo.hs | 186 - .../Test/Cardano/Ledger/Constrained/Env.hs | 253 - .../Cardano/Ledger/Constrained/Examples.hs | 925 - .../Test/Cardano/Ledger/Constrained/Lenses.hs | 226 - .../Test/Cardano/Ledger/Constrained/Monad.hs | 86 - .../Cardano/Ledger/Constrained/Pairing.hs | 51 - .../Ledger/Constrained/Preds/CertState.hs | 371 - .../Cardano/Ledger/Constrained/Preds/Certs.hs | 662 - .../Ledger/Constrained/Preds/LedgerState.hs | 438 - .../Ledger/Constrained/Preds/NewEpochState.hs | 153 - .../Ledger/Constrained/Preds/PParams.hs | 160 - .../Cardano/Ledger/Constrained/Preds/Repl.hs | 79 - .../Cardano/Ledger/Constrained/Preds/Tx.hs | 1086 - .../Cardano/Ledger/Constrained/Preds/TxOut.hs | 220 - .../Cardano/Ledger/Constrained/Preds/UTxO.hs | 78 - .../Ledger/Constrained/Preds/Universes.hs | 693 - .../Cardano/Ledger/Constrained/Rewrite.hs | 798 - .../Cardano/Ledger/Constrained/Scripts.hs | 253 - .../Test/Cardano/Ledger/Constrained/Shrink.hs | 77 - .../Test/Cardano/Ledger/Constrained/Size.hs | 145 - .../Test/Cardano/Ledger/Constrained/Solver.hs | 1029 - .../Test/Cardano/Ledger/Constrained/Spec.hs | 2354 - .../Cardano/Ledger/Constrained/SpecClass.hs | 274 - .../Test/Cardano/Ledger/Constrained/Stage.hs | 98 - .../Test/Cardano/Ledger/Constrained/Tests.hs | 742 - .../Ledger/Constrained/Trace/Actions.hs | 63 - .../Ledger/Constrained/Trace/DrepCertTx.hs | 261 - .../Ledger/Constrained/Trace/Pipeline.hs | 233 - .../Ledger/Constrained/Trace/SimpleTx.hs | 388 - .../Cardano/Ledger/Constrained/Trace/Tests.hs | 192 - .../Ledger/Constrained/Trace/TraceMonad.hs | 562 - .../Cardano/Ledger/Constrained/TypeRep.hs | 1140 - .../Test/Cardano/Ledger/Constrained/Utils.hs | 50 - .../Test/Cardano/Ledger/Constrained/Vars.hs | 2333 - .../src/Test/Cardano/Ledger/EraClass.hs | 183 - .../Test/Cardano/Ledger/Examples/AlonzoAPI.hs | 115 - .../Cardano/Ledger/Examples/AlonzoBBODY.hs | 756 - .../Ledger/Examples/AlonzoCollectInputs.hs | 204 - .../Ledger/Examples/AlonzoInvalidTxUTXOW.hs | 1011 - .../Ledger/Examples/AlonzoValidTxUTXOW.hs | 1026 - .../Ledger/Examples/BabbageFeatures.hs | 1482 - .../Cardano/Ledger/Examples/STSTestUtils.hs | 474 - .../Cardano/Ledger/Generic/AggPropTests.hs | 194 - .../Test/Cardano/Ledger/Generic/ApplyTx.hs | 395 - .../src/Test/Cardano/Ledger/Generic/Fields.hs | 756 - .../Test/Cardano/Ledger/Generic/Functions.hs | 453 - .../Test/Cardano/Ledger/Generic/GenState.hs | 1247 - .../Test/Cardano/Ledger/Generic/Indexed.hs | 69 - .../Test/Cardano/Ledger/Generic/MockChain.hs | 264 - .../Test/Cardano/Ledger/Generic/ModelState.hs | 451 - .../Test/Cardano/Ledger/Generic/PrettyCore.hs | 3394 - .../Test/Cardano/Ledger/Generic/PrettyTest.hs | 59 - .../src/Test/Cardano/Ledger/Generic/Proof.hs | 530 - .../Test/Cardano/Ledger/Generic/Properties.hs | 423 - .../src/Test/Cardano/Ledger/Generic/Same.hs | 631 - .../Test/Cardano/Ledger/Generic/Scriptic.hs | 168 - .../src/Test/Cardano/Ledger/Generic/Trace.hs | 655 - .../src/Test/Cardano/Ledger/Generic/TxGen.hs | 1150 - .../Test/Cardano/Ledger/Generic/Updaters.hs | 445 - .../src/Test/Cardano/Ledger/NoThunks.hs | 56 - .../src/Test/Cardano/Ledger/STS.hs | 304 - .../src/Test/Cardano/Ledger/TestableEra.hs | 14 - .../src/Test/Cardano/Ledger/Tickf.hs | 63 - .../src/Test/Cardano/Ledger/ValueFromList.hs | 39 - libs/cardano-ledger-test/test/Tests.hs | 67 - libs/cardano-protocol-tpraos/.ghcid | 1 - libs/cardano-protocol-tpraos/CHANGELOG.md | 74 - libs/cardano-protocol-tpraos/Setup.hs | 3 - .../cardano-protocol-tpraos.cabal | 102 - .../src/Cardano/Protocol/TPraos/API.hs | 598 - .../src/Cardano/Protocol/TPraos/BHeader.hs | 527 - .../src/Cardano/Protocol/TPraos/OCert.hs | 174 - .../Cardano/Protocol/TPraos/Rules/OCert.hs | 114 - .../Cardano/Protocol/TPraos/Rules/Overlay.hs | 380 - .../Cardano/Protocol/TPraos/Rules/Prtcl.hs | 261 - .../Cardano/Protocol/TPraos/Rules/Tickn.hs | 99 - .../src/Cardano/Protocol/TPraos/Rules/Updn.hs | 76 - libs/cardano-protocol-tpraos/test/Main.hs | 10 - .../Test/Cardano/Protocol/Binary/CddlSpec.hs | 36 - .../Test/Cardano/Protocol/Crypto/KES.hs | 23 - .../Test/Cardano/Protocol/Crypto/VRF.hs | 23 - .../Test/Cardano/Protocol/Crypto/VRF/Fake.hs | 201 - .../Test/Cardano/Protocol/TPraos/Arbitrary.hs | 197 - .../Test/Cardano/Protocol/TPraos/Create.hs | 295 - libs/constrained-generators/bench/Main.hs | 7 - .../constrained-generators.cabal | 87 - .../constrained-generators/src/Constrained.hs | 125 - .../src/Constrained/Base.hs | 4236 - .../src/Constrained/Bench.hs | 38 - .../src/Constrained/Core.hs | 90 - .../src/Constrained/Env.hs | 56 - .../src/Constrained/GenT.hs | 248 - .../src/Constrained/Graph.hs | 116 - .../src/Constrained/Instances.hs | 90 - .../src/Constrained/Internals.hs | 9 - .../src/Constrained/List.hs | 155 - .../src/Constrained/Spec.hs | 22 - .../src/Constrained/Spec/Generics.hs | 569 - .../src/Constrained/Spec/Maps.hs | 233 - .../src/Constrained/Spec/Pairs.hs | 113 - .../src/Constrained/Spec/Tree.hs | 229 - .../src/Constrained/Test.hs | 874 - .../src/Constrained/Univ.hs | 389 - libs/constrained-generators/test/Tests.hs | 8 - libs/ledger-state/.ghcid | 1 - libs/ledger-state/ChangeLog.md | 3 - libs/ledger-state/README.md | 72 - libs/ledger-state/Setup.hs | 3 - libs/ledger-state/app/Main.hs | 101 - libs/ledger-state/bench/Address.hs | 192 - libs/ledger-state/bench/Memory.hs | 107 - libs/ledger-state/bench/Performance.hs | 268 - libs/ledger-state/ledger-state.cabal | 138 - libs/ledger-state/src/Cardano/Ledger/State.hs | 1 - .../src/Cardano/Ledger/State/Orphans.hs | 157 - .../src/Cardano/Ledger/State/Query.hs | 786 - .../src/Cardano/Ledger/State/Schema.hs | 141 - .../src/Cardano/Ledger/State/Transform.hs | 51 - .../src/Cardano/Ledger/State/UTxO.hs | 787 - .../src/Cardano/Ledger/State/Vector.hs | 41 - libs/non-integral/.ghcid | 1 - libs/non-integral/CHANGELOG.md | 9 - libs/non-integral/README.md | 1 - libs/non-integral/Setup.hs | 3 - libs/non-integral/non-integral.cabal | 42 - libs/non-integral/reference/Makefile | 19 - libs/non-integral/reference/golden_tests.txt | 100000 --------------- .../reference/golden_tests_result.txt | 100000 --------------- libs/non-integral/reference/non_integral.c | 447 - libs/non-integral/reference/non_integral.h | 26 - libs/non-integral/reference/non_integral.hpp | 13 - .../reference/non_integral_test.cpp | 179 - libs/non-integral/reference/randomize.cpp | 50 - .../src/Cardano/Ledger/NonIntegral.hs | 210 - libs/non-integral/test/Tests.hs | 40 - .../test/Tests/Cardano/Ledger/NonIntegral.hs | 477 - libs/plutus-preprocessor/.ghcid | 1 - libs/plutus-preprocessor/CHANGELOG.md | 5 - .../plutus-preprocessor.cabal | 59 - libs/plutus-preprocessor/src/Debug.hs | 10 - libs/plutus-preprocessor/src/Main.hs | 194 - .../src/PlutusV1Scripts.hs | 107 - .../src/PlutusV3Scripts.hs | 107 - libs/plutus-preprocessor/src/ScriptSource.hs | 112 - libs/set-algebra/.ghcid | 1 - libs/set-algebra/CHANGELOG.md | 21 - libs/set-algebra/Setup.hs | 3 - libs/set-algebra/flake.nix | 13 - libs/set-algebra/set-algebra.cabal | 59 - .../src/Control/Iterate/BaseTypes.hs | 306 - .../src/Control/Iterate/Collect.hs | 146 - libs/set-algebra/src/Control/Iterate/Exp.hs | 667 - .../src/Control/Iterate/SetAlgebra.hs | 420 - libs/set-algebra/src/Control/SetAlgebra.hs | 155 - libs/set-algebra/test/Main.hs | 18 - .../Test/Control/Iterate/RelationReference.hs | 166 - .../test/Test/Control/Iterate/SetAlgebra.hs | 642 - libs/small-steps/.ghcid | 1 - libs/small-steps/CHANGELOG.md | 23 - libs/small-steps/Setup.hs | 3 - libs/small-steps/flake.nix | 12 - libs/small-steps/small-steps.cabal | 108 - libs/small-steps/src/Control/Provenance.hs | 353 - .../src/Control/State/Transition.hs | 4 - .../src/Control/State/Transition/Extended.hs | 830 - .../src/Control/State/Transition/Simple.hs | 30 - libs/small-steps/test/Main.hs | 35 - .../State/Transition/Examples/CommitReveal.hs | 247 - .../State/Transition/Examples/GlobalSum.hs | 92 - .../Control/State/Transition/Examples/Sum.hs | 69 - .../Control/State/Transition/Generator.hs | 727 - .../Control/State/Transition/Invalid/Trace.hs | 51 - .../Test/Control/State/Transition/Trace.hs | 600 - .../Transition/Trace/Generator/QuickCheck.hs | 410 - .../testlib/Test/Hedgehog/Extra/Manual.hs | 132 - libs/vector-map/.ghcid | 1 - libs/vector-map/CHANGELOG.md | 17 - libs/vector-map/Setup.hs | 3 - libs/vector-map/bench/Bench.hs | 131 - libs/vector-map/src/Data/VMap.hs | 278 - libs/vector-map/src/Data/VMap/KVVector.hs | 429 - libs/vector-map/test/Main.hs | 16 - libs/vector-map/test/Test/Common.hs | 30 - libs/vector-map/test/Test/VMap.hs | 80 - .../testlib/Test/Data/VMap/TreeDiff.hs | 10 - libs/vector-map/vector-map.cabal | 89 - nix/flake-compat.nix | 11 - nix/latex.nix | 59 - nix/pkgs.nix | 6 - nix/pkgs/cddl/Gemfile | 2 - nix/pkgs/cddl/Gemfile.lock | 40 - nix/pkgs/cddl/default.nix | 10 - nix/pkgs/cddl/gemset.nix | 146 - scripts/cabal-format.sh | 7 - scripts/fourmolize.sh | 23 - scripts/gen-hie.sh | 7 - scripts/ghcid | 47 - scripts/haddocks.sh | 114 - scripts/haskell-language-server | 3 - scripts/mkprolog.sh | 24 - semantics/executable-spec | 1 - semantics/formal-spec | 1 - semantics/small-steps-test | 1 - shell.nix | 9 - weeder.dhall | 21 - 1512 files changed, 501372 deletions(-) delete mode 100644 .editorconfig delete mode 100644 .git-blame-ignore-revs delete mode 100644 .gitattributes delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/tools/extract_criterion.jq delete mode 100644 .github/workflows/bench.yml delete mode 100644 .github/workflows/gh-pages.yml delete mode 100644 .github/workflows/haskell.yml delete mode 100644 .github/workflows/push-specs.yml delete mode 100644 .gitignore delete mode 100644 .readthedocs.yml delete mode 100644 CHANGELOG.md delete mode 100644 CODE-OF-CONDUCT.md delete mode 100644 CODEOWNERS delete mode 100644 CONTRIBUTING.md delete mode 100644 HowToProfileLedger.md delete mode 100644 LICENSE delete mode 100644 NOTICE delete mode 100644 README.md delete mode 100644 RELEASING.md delete mode 100644 REVISIONING.md delete mode 100644 SECURITY.md delete mode 100644 bors.toml delete mode 100644 cabal.project delete mode 100644 default.nix delete mode 100644 doc/.gitignore delete mode 100644 doc/README.md delete mode 100644 doc/_static/.gitkeep delete mode 100644 doc/_templates/.gitkeep delete mode 100644 doc/cardano-logo.png delete mode 100644 doc/conf.py delete mode 100644 doc/explanations/faq.rst delete mode 100644 doc/explanations/features.rst delete mode 100644 doc/explanations/glossary.rst delete mode 100644 doc/explanations/index.rst delete mode 100644 doc/explanations/learn-about-native-tokens.rst delete mode 100644 doc/explanations/listing.rst delete mode 100644 doc/explanations/min-utxo-alonzo.rst delete mode 100644 doc/explanations/min-utxo-mary.rst delete mode 100644 doc/explanations/policies.rst delete mode 100644 doc/explanations/token-bundles.rst delete mode 100644 doc/flake.nix delete mode 100644 doc/index.rst delete mode 100644 doc/requirements.in delete mode 100644 doc/requirements.txt delete mode 100644 docs/LedgerEvents.md delete mode 100644 docs/adr/2022-12-01_001-record-architectural-decisions.md delete mode 100644 docs/adr/2022-12-05_002-version-serialization-schemes.md delete mode 100644 docs/adr/2022-12-05_003-track-individual-deposits.md delete mode 100644 docs/adr/2022-12-05_004-untranslatable-data-in-script-context.md delete mode 100644 docs/adr/2022-12-05_005-remove-ptr-addresses.md delete mode 100644 docs/adr/2022-12-05_006-cost-model-serialization.md delete mode 100644 docs/adr/2022-12-12_007-optimize-ledger-view.md delete mode 100644 docs/graphviz-diagrams/conway_transitions.gv delete mode 100644 docs/graphviz-diagrams/conway_transitions.svg delete mode 100644 docs/graphviz-diagrams/shelley-transitions.gv delete mode 100644 docs/graphviz-diagrams/shelley-transitions.svg delete mode 100644 docs/non-integer-calculations/IOHKCoverPage.sty delete mode 100644 docs/non-integer-calculations/Makefile delete mode 100644 docs/non-integer-calculations/cf_exp.png delete mode 100644 docs/non-integer-calculations/d2-depends.pdf delete mode 100644 docs/non-integer-calculations/flake.nix delete mode 100644 docs/non-integer-calculations/habbrv.bst delete mode 100644 docs/non-integer-calculations/haskell.png delete mode 100644 docs/non-integer-calculations/iohk-share-logo.jpg delete mode 100644 docs/non-integer-calculations/iohk.sty delete mode 100644 docs/non-integer-calculations/ln_cf.png delete mode 100644 docs/non-integer-calculations/ln_taylor.png delete mode 100644 docs/non-integer-calculations/non-integer-calculations.tex delete mode 100644 docs/non-integer-calculations/references.bib delete mode 100644 docs/non-integer-calculations/taylor_exp.png delete mode 100644 docs/pool-ranking/Makefile delete mode 100644 docs/pool-ranking/flake.nix delete mode 100644 docs/pool-ranking/habbrv.bst delete mode 100644 docs/pool-ranking/pool-ranking.tex delete mode 100644 docs/pool-ranking/references.bib delete mode 100644 docs/proxy-keys/images/addresses.pdf delete mode 100644 docs/proxy-keys/proxy-key-sols.tex delete mode 100644 docs/small-step-semantics/Makefile delete mode 100644 docs/small-step-semantics/flake.nix delete mode 100644 docs/small-step-semantics/small-step-semantics.tex delete mode 100644 eras/allegra/impl/.ghcid delete mode 100644 eras/allegra/impl/CHANGELOG.md delete mode 100644 eras/allegra/impl/Setup.hs delete mode 100644 eras/allegra/impl/cardano-ledger-allegra.cabal delete mode 100644 eras/allegra/impl/cddl-files/allegra.cddl delete mode 100644 eras/allegra/impl/cddl-files/crypto.cddl delete mode 100644 eras/allegra/impl/cddl-files/extras.cddl delete mode 100644 eras/allegra/impl/src/Cardano/Ledger/Allegra.hs delete mode 100644 eras/allegra/impl/src/Cardano/Ledger/Allegra/Core.hs delete mode 100644 eras/allegra/impl/src/Cardano/Ledger/Allegra/Era.hs delete mode 100644 eras/allegra/impl/src/Cardano/Ledger/Allegra/PParams.hs delete mode 100644 eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules.hs delete mode 100644 eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Bbody.hs delete mode 100644 eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Deleg.hs delete mode 100644 eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Delegs.hs delete mode 100644 eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Delpl.hs delete mode 100644 eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Ledger.hs delete mode 100644 eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Ledgers.hs delete mode 100644 eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Pool.hs delete mode 100644 eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Ppup.hs delete mode 100644 eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Utxo.hs delete mode 100644 eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Utxow.hs delete mode 100644 eras/allegra/impl/src/Cardano/Ledger/Allegra/Scripts.hs delete mode 100644 eras/allegra/impl/src/Cardano/Ledger/Allegra/Transition.hs delete mode 100644 eras/allegra/impl/src/Cardano/Ledger/Allegra/Translation.hs delete mode 100644 eras/allegra/impl/src/Cardano/Ledger/Allegra/Tx.hs delete mode 100644 eras/allegra/impl/src/Cardano/Ledger/Allegra/TxAuxData.hs delete mode 100644 eras/allegra/impl/src/Cardano/Ledger/Allegra/TxBody.hs delete mode 100644 eras/allegra/impl/src/Cardano/Ledger/Allegra/TxCert.hs delete mode 100644 eras/allegra/impl/src/Cardano/Ledger/Allegra/TxOut.hs delete mode 100644 eras/allegra/impl/src/Cardano/Ledger/Allegra/TxSeq.hs delete mode 100644 eras/allegra/impl/src/Cardano/Ledger/Allegra/TxWits.hs delete mode 100644 eras/allegra/impl/src/Cardano/Ledger/Allegra/UTxO.hs delete mode 100644 eras/allegra/impl/test/Main.hs delete mode 100644 eras/allegra/impl/test/Test/Cardano/Ledger/Allegra/Binary/CddlSpec.hs delete mode 100644 eras/allegra/impl/test/Test/Cardano/Ledger/Allegra/BinarySpec.hs delete mode 100644 eras/allegra/impl/testlib/Test/Cardano/Ledger/Allegra/Arbitrary.hs delete mode 100644 eras/allegra/impl/testlib/Test/Cardano/Ledger/Allegra/Binary/Cddl.hs delete mode 100644 eras/allegra/impl/testlib/Test/Cardano/Ledger/Allegra/ImpTest.hs delete mode 100644 eras/allegra/impl/testlib/Test/Cardano/Ledger/Allegra/TreeDiff.hs delete mode 100644 eras/alonzo/formal-spec/Formal Spec with Plutus Integration - Review 1.rtf delete mode 100644 eras/alonzo/formal-spec/Formal Spec with Plutus Integration - Review 2.rtf delete mode 100644 eras/alonzo/formal-spec/Formal Spec with Plutus Integration - Review 3.rtf delete mode 100644 eras/alonzo/formal-spec/Formal Spec with Plutus Integration - Review 4.rtf delete mode 100644 eras/alonzo/formal-spec/Formal Spec with Plutus Integration - Review 5.rtf delete mode 100644 eras/alonzo/formal-spec/Formal Spec with Plutus Integration - Review 6.rtf delete mode 100644 eras/alonzo/formal-spec/IOHKCoverPage.sty delete mode 100644 eras/alonzo/formal-spec/Makefile delete mode 100644 eras/alonzo/formal-spec/alonzo-ledger.tex delete mode 100644 eras/alonzo/formal-spec/chain.tex delete mode 100644 eras/alonzo/formal-spec/comments.sty delete mode 100644 eras/alonzo/formal-spec/constants.tex delete mode 100644 eras/alonzo/formal-spec/flake.nix delete mode 100644 eras/alonzo/formal-spec/frontmatter.tex delete mode 100644 eras/alonzo/formal-spec/introduction.tex delete mode 100644 eras/alonzo/formal-spec/iohk-share-logo.jpg delete mode 100644 eras/alonzo/formal-spec/iohk.sty delete mode 100644 eras/alonzo/formal-spec/ledger.tex delete mode 100644 eras/alonzo/formal-spec/mir.tex delete mode 100644 eras/alonzo/formal-spec/properties.tex delete mode 100644 eras/alonzo/formal-spec/protocol-parameters.tex delete mode 100644 eras/alonzo/formal-spec/references.bib delete mode 100644 eras/alonzo/formal-spec/transactions.tex delete mode 100644 eras/alonzo/formal-spec/txinfo.tex delete mode 100644 eras/alonzo/formal-spec/utxo.tex delete mode 100644 eras/alonzo/formal-spec/value-size.tex delete mode 100644 eras/alonzo/impl/.ghcid delete mode 100644 eras/alonzo/impl/CHANGELOG.md delete mode 100644 eras/alonzo/impl/Setup.hs delete mode 100644 eras/alonzo/impl/cardano-ledger-alonzo.cabal delete mode 100644 eras/alonzo/impl/cddl-files/alonzo.cddl delete mode 100644 eras/alonzo/impl/cddl-files/crypto.cddl delete mode 100644 eras/alonzo/impl/cddl-files/extras.cddl delete mode 100644 eras/alonzo/impl/src/Cardano/Ledger/Alonzo.hs delete mode 100644 eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Core.hs delete mode 100644 eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Data.hs delete mode 100644 eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Era.hs delete mode 100644 eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Genesis.hs delete mode 100644 eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Language.hs delete mode 100644 eras/alonzo/impl/src/Cardano/Ledger/Alonzo/PParams.hs delete mode 100644 eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Plutus/Context.hs delete mode 100644 eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Plutus/Evaluate.hs delete mode 100644 eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Plutus/TxInfo.hs delete mode 100644 eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules.hs delete mode 100644 eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Bbody.hs delete mode 100644 eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Deleg.hs delete mode 100644 eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Delegs.hs delete mode 100644 eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Delpl.hs delete mode 100644 eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Ledger.hs delete mode 100644 eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Ledgers.hs delete mode 100644 eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Pool.hs delete mode 100644 eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Ppup.hs delete mode 100644 eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Utxo.hs delete mode 100644 eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Utxos.hs delete mode 100644 eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Utxow.hs delete mode 100644 eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Scripts.hs delete mode 100644 eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Scripts/Data.hs delete mode 100644 eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Transition.hs delete mode 100644 eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Translation.hs delete mode 100644 eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Tx.hs delete mode 100644 eras/alonzo/impl/src/Cardano/Ledger/Alonzo/TxAuxData.hs delete mode 100644 eras/alonzo/impl/src/Cardano/Ledger/Alonzo/TxBody.hs delete mode 100644 eras/alonzo/impl/src/Cardano/Ledger/Alonzo/TxCert.hs delete mode 100644 eras/alonzo/impl/src/Cardano/Ledger/Alonzo/TxOut.hs delete mode 100644 eras/alonzo/impl/src/Cardano/Ledger/Alonzo/TxSeq.hs delete mode 100644 eras/alonzo/impl/src/Cardano/Ledger/Alonzo/TxWits.hs delete mode 100644 eras/alonzo/impl/src/Cardano/Ledger/Alonzo/UTxO.hs delete mode 100644 eras/alonzo/impl/test/Main.hs delete mode 100644 eras/alonzo/impl/test/Test/Cardano/Ledger/Alonzo/Binary/CddlSpec.hs delete mode 100644 eras/alonzo/impl/test/Test/Cardano/Ledger/Alonzo/BinarySpec.hs delete mode 100644 eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/Arbitrary.hs delete mode 100644 eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/Binary/Cddl.hs delete mode 100644 eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/Binary/CostModelsSpec.hs delete mode 100644 eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/Binary/RoundTrip.hs delete mode 100644 eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/Binary/TxWitsSpec.hs delete mode 100644 eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/Imp.hs delete mode 100644 eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/Imp/UtxosSpec.hs delete mode 100644 eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/ImpTest.hs delete mode 100644 eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/TreeDiff.hs delete mode 100644 eras/alonzo/test-suite/.ghcid delete mode 100644 eras/alonzo/test-suite/CHANGELOG.md delete mode 100644 eras/alonzo/test-suite/cardano-ledger-alonzo-test.cabal delete mode 100644 eras/alonzo/test-suite/golden/FailureDescription.json delete mode 100644 eras/alonzo/test-suite/golden/IsValid.json delete mode 100644 eras/alonzo/test-suite/golden/TagMismatchDescription.json delete mode 100644 eras/alonzo/test-suite/golden/ValidityInterval.json delete mode 100644 eras/alonzo/test-suite/golden/block.cbor delete mode 100644 eras/alonzo/test-suite/golden/hex-block-node-issue-4228.cbor delete mode 100644 eras/alonzo/test-suite/golden/mainnet-alonzo-genesis.json delete mode 100644 eras/alonzo/test-suite/golden/translations.cbor delete mode 100644 eras/alonzo/test-suite/golden/tx.cbor delete mode 100644 eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/AlonzoEraGen.hs delete mode 100644 eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/EraMapping.hs delete mode 100644 eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/Examples/Consensus.hs delete mode 100644 eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/Scripts.hs delete mode 100644 eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/Serialisation/Generators.hs delete mode 100644 eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/Trace.hs delete mode 100644 eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/Translation/Golden.hs delete mode 100644 eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/Translation/TranslatableGen.hs delete mode 100644 eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/Translation/TranslationInstance.hs delete mode 100644 eras/alonzo/test-suite/test/GenerateGoldenFileMain.hs delete mode 100644 eras/alonzo/test-suite/test/Test/Cardano/Ledger/Alonzo/ChainTrace.hs delete mode 100644 eras/alonzo/test-suite/test/Test/Cardano/Ledger/Alonzo/Golden.hs delete mode 100644 eras/alonzo/test-suite/test/Test/Cardano/Ledger/Alonzo/GoldenTranslation.hs delete mode 100644 eras/alonzo/test-suite/test/Test/Cardano/Ledger/Alonzo/PlutusScriptExamples.hs delete mode 100644 eras/alonzo/test-suite/test/Test/Cardano/Ledger/Alonzo/Serialisation/Canonical.hs delete mode 100644 eras/alonzo/test-suite/test/Test/Cardano/Ledger/Alonzo/Serialisation/Tripping.hs delete mode 100644 eras/alonzo/test-suite/test/Test/Cardano/Ledger/Alonzo/Translation.hs delete mode 100644 eras/alonzo/test-suite/test/Test/Cardano/Ledger/Alonzo/TxInfo.hs delete mode 100644 eras/alonzo/test-suite/test/Tests.hs delete mode 100644 eras/babbage/formal-spec/IOHKCoverPage.sty delete mode 100644 eras/babbage/formal-spec/Makefile delete mode 100644 eras/babbage/formal-spec/babbage-ledger.tex delete mode 100644 eras/babbage/formal-spec/comments.sty delete mode 100644 eras/babbage/formal-spec/flake.nix delete mode 100644 eras/babbage/formal-spec/frontmatter.tex delete mode 100644 eras/babbage/formal-spec/introduction.tex delete mode 100644 eras/babbage/formal-spec/iohk-share-logo.jpg delete mode 100644 eras/babbage/formal-spec/iohk.sty delete mode 100644 eras/babbage/formal-spec/notation.tex delete mode 100644 eras/babbage/formal-spec/references.bib delete mode 100644 eras/babbage/formal-spec/remove-overlay.tex delete mode 100644 eras/babbage/formal-spec/rewards.tex delete mode 100644 eras/babbage/formal-spec/transactions.tex delete mode 100644 eras/babbage/formal-spec/txinfo.tex delete mode 100644 eras/babbage/formal-spec/utxo.tex delete mode 100644 eras/babbage/impl/.ghcid delete mode 100644 eras/babbage/impl/CHANGELOG.md delete mode 100644 eras/babbage/impl/Setup.hs delete mode 100644 eras/babbage/impl/cardano-ledger-babbage.cabal delete mode 100644 eras/babbage/impl/cddl-files/babbage.cddl delete mode 100644 eras/babbage/impl/cddl-files/crypto.cddl delete mode 100644 eras/babbage/impl/cddl-files/extras.cddl delete mode 100644 eras/babbage/impl/src/Cardano/Ledger/Babbage.hs delete mode 100644 eras/babbage/impl/src/Cardano/Ledger/Babbage/Collateral.hs delete mode 100644 eras/babbage/impl/src/Cardano/Ledger/Babbage/Core.hs delete mode 100644 eras/babbage/impl/src/Cardano/Ledger/Babbage/Era.hs delete mode 100644 eras/babbage/impl/src/Cardano/Ledger/Babbage/PParams.hs delete mode 100644 eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules.hs delete mode 100644 eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Bbody.hs delete mode 100644 eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Deleg.hs delete mode 100644 eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Delegs.hs delete mode 100644 eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Delpl.hs delete mode 100644 eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Ledger.hs delete mode 100644 eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Ledgers.hs delete mode 100644 eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Pool.hs delete mode 100644 eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Ppup.hs delete mode 100644 eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Utxo.hs delete mode 100644 eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Utxos.hs delete mode 100644 eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Utxow.hs delete mode 100644 eras/babbage/impl/src/Cardano/Ledger/Babbage/Scripts.hs delete mode 100644 eras/babbage/impl/src/Cardano/Ledger/Babbage/Transition.hs delete mode 100644 eras/babbage/impl/src/Cardano/Ledger/Babbage/Translation.hs delete mode 100644 eras/babbage/impl/src/Cardano/Ledger/Babbage/Tx.hs delete mode 100644 eras/babbage/impl/src/Cardano/Ledger/Babbage/TxAuxData.hs delete mode 100644 eras/babbage/impl/src/Cardano/Ledger/Babbage/TxBody.hs delete mode 100644 eras/babbage/impl/src/Cardano/Ledger/Babbage/TxCert.hs delete mode 100644 eras/babbage/impl/src/Cardano/Ledger/Babbage/TxInfo.hs delete mode 100644 eras/babbage/impl/src/Cardano/Ledger/Babbage/TxOut.hs delete mode 100644 eras/babbage/impl/src/Cardano/Ledger/Babbage/TxWits.hs delete mode 100644 eras/babbage/impl/src/Cardano/Ledger/Babbage/UTxO.hs delete mode 100644 eras/babbage/impl/test/Main.hs delete mode 100644 eras/babbage/impl/test/Test/Cardano/Ledger/Babbage/Binary/CddlSpec.hs delete mode 100644 eras/babbage/impl/test/Test/Cardano/Ledger/Babbage/BinarySpec.hs delete mode 100644 eras/babbage/impl/testlib/Test/Cardano/Ledger/Babbage/Arbitrary.hs delete mode 100644 eras/babbage/impl/testlib/Test/Cardano/Ledger/Babbage/Binary/Cddl.hs delete mode 100644 eras/babbage/impl/testlib/Test/Cardano/Ledger/Babbage/ImpTest.hs delete mode 100644 eras/babbage/impl/testlib/Test/Cardano/Ledger/Babbage/TreeDiff.hs delete mode 100644 eras/babbage/test-suite/.ghcid delete mode 100644 eras/babbage/test-suite/CHANGELOG.md delete mode 100644 eras/babbage/test-suite/cardano-ledger-babbage-test.cabal delete mode 100644 eras/babbage/test-suite/golden/translations.cbor delete mode 100644 eras/babbage/test-suite/src/Test/Cardano/Ledger/Babbage/Examples/Consensus.hs delete mode 100644 eras/babbage/test-suite/src/Test/Cardano/Ledger/Babbage/Serialisation/Generators.hs delete mode 100644 eras/babbage/test-suite/src/Test/Cardano/Ledger/Babbage/Translation/TranslatableGen.hs delete mode 100644 eras/babbage/test-suite/src/Test/Cardano/Ledger/Babbage/TxInfo.hs delete mode 100644 eras/babbage/test-suite/test/GenerateGoldenFileMain.hs delete mode 100644 eras/babbage/test-suite/test/Test/Cardano/Ledger/Babbage/GoldenTranslation.hs delete mode 100644 eras/babbage/test-suite/test/Test/Cardano/Ledger/Babbage/Serialisation/Tripping.hs delete mode 100644 eras/babbage/test-suite/test/Tests.hs delete mode 100644 eras/byron/README.md delete mode 100644 eras/byron/cddl-spec/Makefile delete mode 100644 eras/byron/cddl-spec/README.md delete mode 100644 eras/byron/cddl-spec/byron-binary.tex delete mode 100644 eras/byron/cddl-spec/byron.cddl delete mode 100644 eras/byron/cddl-spec/flake.nix delete mode 100644 eras/byron/cddl-spec/latexmkrc delete mode 100644 eras/byron/chain/executable-spec/.ghcid delete mode 100644 eras/byron/chain/executable-spec/CHANGELOG.md delete mode 100644 eras/byron/chain/executable-spec/Setup.hs delete mode 100644 eras/byron/chain/executable-spec/byron-spec-chain.cabal delete mode 100644 eras/byron/chain/executable-spec/flake.nix delete mode 100644 eras/byron/chain/executable-spec/src/Byron/Spec/Chain/STS/Block.hs delete mode 100644 eras/byron/chain/executable-spec/src/Byron/Spec/Chain/STS/Rule/BBody.hs delete mode 100644 eras/byron/chain/executable-spec/src/Byron/Spec/Chain/STS/Rule/Bupi.hs delete mode 100644 eras/byron/chain/executable-spec/src/Byron/Spec/Chain/STS/Rule/Chain.hs delete mode 100644 eras/byron/chain/executable-spec/src/Byron/Spec/Chain/STS/Rule/Epoch.hs delete mode 100644 eras/byron/chain/executable-spec/src/Byron/Spec/Chain/STS/Rule/Pbft.hs delete mode 100644 eras/byron/chain/executable-spec/src/Byron/Spec/Chain/STS/Rule/SigCnt.hs delete mode 100644 eras/byron/chain/executable-spec/test/Main.hs delete mode 100644 eras/byron/chain/executable-spec/test/Test/Byron/AbstractSize/Properties.hs delete mode 100644 eras/byron/chain/executable-spec/test/Test/Byron/Spec/Chain/STS/Properties.hs delete mode 100644 eras/byron/chain/formal-spec/Makefile delete mode 100644 eras/byron/chain/formal-spec/byron-blockchain.tex delete mode 100644 eras/byron/chain/formal-spec/calculating-t.png delete mode 100644 eras/byron/chain/formal-spec/flake.nix delete mode 100644 eras/byron/chain/formal-spec/references.bib delete mode 100644 eras/byron/crypto/.ghcid delete mode 100644 eras/byron/crypto/CHANGELOG.md delete mode 100644 eras/byron/crypto/README.md delete mode 100644 eras/byron/crypto/Setup.hs delete mode 100644 eras/byron/crypto/cardano-crypto-wrapper.cabal delete mode 100644 eras/byron/crypto/src/Cardano/Crypto.hs delete mode 100644 eras/byron/crypto/src/Cardano/Crypto/Encryption.hs delete mode 100644 eras/byron/crypto/src/Cardano/Crypto/Hashing.hs delete mode 100644 eras/byron/crypto/src/Cardano/Crypto/Orphans.hs delete mode 100644 eras/byron/crypto/src/Cardano/Crypto/ProtocolMagic.hs delete mode 100644 eras/byron/crypto/src/Cardano/Crypto/Random.hs delete mode 100644 eras/byron/crypto/src/Cardano/Crypto/Raw.hs delete mode 100644 eras/byron/crypto/src/Cardano/Crypto/Signing.hs delete mode 100644 eras/byron/crypto/src/Cardano/Crypto/Signing/KeyGen.hs delete mode 100644 eras/byron/crypto/src/Cardano/Crypto/Signing/Redeem.hs delete mode 100644 eras/byron/crypto/src/Cardano/Crypto/Signing/Redeem/Compact.hs delete mode 100644 eras/byron/crypto/src/Cardano/Crypto/Signing/Redeem/KeyGen.hs delete mode 100644 eras/byron/crypto/src/Cardano/Crypto/Signing/Redeem/Signature.hs delete mode 100644 eras/byron/crypto/src/Cardano/Crypto/Signing/Redeem/SigningKey.hs delete mode 100644 eras/byron/crypto/src/Cardano/Crypto/Signing/Redeem/VerificationKey.hs delete mode 100644 eras/byron/crypto/src/Cardano/Crypto/Signing/Safe.hs delete mode 100644 eras/byron/crypto/src/Cardano/Crypto/Signing/Safe/KeyGen.hs delete mode 100644 eras/byron/crypto/src/Cardano/Crypto/Signing/Safe/PassPhrase.hs delete mode 100644 eras/byron/crypto/src/Cardano/Crypto/Signing/Safe/SafeSigner.hs delete mode 100644 eras/byron/crypto/src/Cardano/Crypto/Signing/Signature.hs delete mode 100644 eras/byron/crypto/src/Cardano/Crypto/Signing/SigningKey.hs delete mode 100644 eras/byron/crypto/src/Cardano/Crypto/Signing/Tag.hs delete mode 100644 eras/byron/crypto/src/Cardano/Crypto/Signing/VerificationKey.hs delete mode 100644 eras/byron/crypto/test/.ghcid delete mode 100644 eras/byron/crypto/test/CHANGELOG.md delete mode 100644 eras/byron/crypto/test/GetDataFileName.hs delete mode 100644 eras/byron/crypto/test/Setup.hs delete mode 100644 eras/byron/crypto/test/Test/Cardano/Crypto/CBOR.hs delete mode 100644 eras/byron/crypto/test/Test/Cardano/Crypto/Dummy.hs delete mode 100644 eras/byron/crypto/test/Test/Cardano/Crypto/Example.hs delete mode 100644 eras/byron/crypto/test/Test/Cardano/Crypto/Gen.hs delete mode 100644 eras/byron/crypto/test/Test/Cardano/Crypto/Hashing.hs delete mode 100644 eras/byron/crypto/test/Test/Cardano/Crypto/Json.hs delete mode 100644 eras/byron/crypto/test/Test/Cardano/Crypto/Keys.hs delete mode 100644 eras/byron/crypto/test/Test/Cardano/Crypto/Limits.hs delete mode 100644 eras/byron/crypto/test/Test/Cardano/Crypto/Orphans.hs delete mode 100644 eras/byron/crypto/test/Test/Cardano/Crypto/Random.hs delete mode 100644 eras/byron/crypto/test/Test/Cardano/Crypto/Signing/Redeem.hs delete mode 100644 eras/byron/crypto/test/Test/Cardano/Crypto/Signing/Redeem/Compact.hs delete mode 100644 eras/byron/crypto/test/Test/Cardano/Crypto/Signing/Safe.hs delete mode 100644 eras/byron/crypto/test/Test/Cardano/Crypto/Signing/Signing.hs delete mode 100644 eras/byron/crypto/test/cardano-crypto-test.cabal delete mode 100644 eras/byron/crypto/test/golden/AbstractHash delete mode 100644 eras/byron/crypto/test/golden/DecShare delete mode 100644 eras/byron/crypto/test/golden/EncShare delete mode 100644 eras/byron/crypto/test/golden/PassPhrase delete mode 100644 eras/byron/crypto/test/golden/RedeemSignature delete mode 100644 eras/byron/crypto/test/golden/RedeemSigningKey delete mode 100644 eras/byron/crypto/test/golden/RedeemVerificationKey delete mode 100644 eras/byron/crypto/test/golden/Secret delete mode 100644 eras/byron/crypto/test/golden/SecretProof delete mode 100644 eras/byron/crypto/test/golden/Signature delete mode 100644 eras/byron/crypto/test/golden/SigningKey delete mode 100644 eras/byron/crypto/test/golden/VerificationKey delete mode 100644 eras/byron/crypto/test/golden/VssPublicKey delete mode 100644 eras/byron/crypto/test/golden/json/ProtocolMagic0_Legacy_HasNetworkMagic delete mode 100644 eras/byron/crypto/test/golden/json/ProtocolMagic1_Legacy_HasNetworkMagic delete mode 100644 eras/byron/crypto/test/golden/json/ProtocolMagic2_Legacy_HasNetworkMagic delete mode 100644 eras/byron/crypto/test/golden/json/ProtocolMagic_Legacy_NMMustBeJust delete mode 100644 eras/byron/crypto/test/golden/json/ProtocolMagic_Legacy_NMMustBeNothing delete mode 100644 eras/byron/crypto/test/test.hs delete mode 100644 eras/byron/ledger/executable-spec/.ghcid delete mode 100644 eras/byron/ledger/executable-spec/CHANGELOG.md delete mode 100644 eras/byron/ledger/executable-spec/Setup.hs delete mode 100644 eras/byron/ledger/executable-spec/byron-spec-ledger.cabal delete mode 100644 eras/byron/ledger/executable-spec/flake.nix delete mode 100644 eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/Core.hs delete mode 100644 eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/Core/Generators.hs delete mode 100644 eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/Core/Omniscient.hs delete mode 100644 eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/Delegation.hs delete mode 100644 eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/Delegation/Test.hs delete mode 100644 eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/GlobalParams.hs delete mode 100644 eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/STS/UTXO.hs delete mode 100644 eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/STS/UTXOW.hs delete mode 100644 eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/STS/UTXOWS.hs delete mode 100644 eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/UTxO.hs delete mode 100644 eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/UTxO/Generators.hs delete mode 100644 eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/Update.hs delete mode 100644 eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/Update/Generators.hs delete mode 100644 eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/Update/Test.hs delete mode 100644 eras/byron/ledger/executable-spec/src/Data/AbstractSize.hs delete mode 100644 eras/byron/ledger/executable-spec/src/Hedgehog/Gen/Double.hs delete mode 100644 eras/byron/ledger/executable-spec/test/Main.hs delete mode 100644 eras/byron/ledger/executable-spec/test/Test/Byron/Spec/Ledger/AbstractSize/Properties.hs delete mode 100644 eras/byron/ledger/executable-spec/test/Test/Byron/Spec/Ledger/Core/Generators/Properties.hs delete mode 100644 eras/byron/ledger/executable-spec/test/Test/Byron/Spec/Ledger/Delegation/Examples.hs delete mode 100644 eras/byron/ledger/executable-spec/test/Test/Byron/Spec/Ledger/Delegation/Properties.hs delete mode 100644 eras/byron/ledger/executable-spec/test/Test/Byron/Spec/Ledger/Relation/Properties.hs delete mode 100644 eras/byron/ledger/executable-spec/test/Test/Byron/Spec/Ledger/UTxO/Properties.hs delete mode 100644 eras/byron/ledger/executable-spec/test/Test/Byron/Spec/Ledger/Update/Examples.hs delete mode 100644 eras/byron/ledger/executable-spec/test/Test/Byron/Spec/Ledger/Update/Properties.hs delete mode 100644 eras/byron/ledger/formal-spec/Makefile delete mode 100644 eras/byron/ledger/formal-spec/blockchain-interface.tex delete mode 100644 eras/byron/ledger/formal-spec/byron-ledger.tex delete mode 100644 eras/byron/ledger/formal-spec/crypto-primitives.tex delete mode 100644 eras/byron/ledger/formal-spec/delegation.tex delete mode 100644 eras/byron/ledger/formal-spec/flake.nix delete mode 100644 eras/byron/ledger/formal-spec/frontmatter.tex delete mode 100644 eras/byron/ledger/formal-spec/gitinfo2.mk delete mode 100644 eras/byron/ledger/formal-spec/intro.tex delete mode 100644 eras/byron/ledger/formal-spec/iohk.sty delete mode 100644 eras/byron/ledger/formal-spec/notation.tex delete mode 100644 eras/byron/ledger/formal-spec/properties.tex delete mode 100644 eras/byron/ledger/formal-spec/references.bib delete mode 100644 eras/byron/ledger/formal-spec/update-mechanism.tex delete mode 100644 eras/byron/ledger/formal-spec/utxo.tex delete mode 100644 eras/byron/ledger/impl/.ghcid delete mode 100644 eras/byron/ledger/impl/CHANGELOG.md delete mode 100644 eras/byron/ledger/impl/README.md delete mode 100644 eras/byron/ledger/impl/Setup.hs delete mode 100644 eras/byron/ledger/impl/cardano-ledger-byron.cabal delete mode 100644 eras/byron/ledger/impl/doc/network-magic.md delete mode 100644 eras/byron/ledger/impl/mainnet-genesis.json delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Block.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Block/Block.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Block/Body.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Block/Boundary.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Block/Header.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Block/Proof.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Block/Validation.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Block/ValidationMode.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Byron/API.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Byron/API/Common.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Byron/API/Mempool.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Byron/API/Protocol.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Byron/API/Validation.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Common.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Common/AddrAttributes.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Common/AddrSpendingData.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Common/Address.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Common/AddressHash.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Common/Attributes.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Common/BlockCount.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Common/CBOR.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Common/ChainDifficulty.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Common/Compact.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Common/KeyHash.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Common/Lovelace.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Common/LovelacePortion.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Common/Merkle.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Common/NetworkMagic.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Common/TxFeePolicy.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Common/TxSizeLinear.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Constants.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Delegation.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Delegation/Certificate.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Delegation/Map.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Delegation/Payload.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Delegation/Validation/Activation.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Delegation/Validation/Interface.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Delegation/Validation/Scheduling.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Epoch/File.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Epoch/Validation.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Genesis.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Genesis/AvvmBalances.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Genesis/Config.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Genesis/Data.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Genesis/Delegation.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Genesis/Generate.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Genesis/Hash.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Genesis/Initializer.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Genesis/KeyHashes.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Genesis/NonAvvmBalances.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Genesis/Spec.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/MempoolPayload.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/ProtocolConstants.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Slotting.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Slotting/EpochAndSlotCount.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Slotting/EpochNumber.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Slotting/EpochSlots.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Slotting/SlotCount.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Slotting/SlotNumber.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Ssc.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/UTxO.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/UTxO/Compact.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/UTxO/GenesisUTxO.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/UTxO/Tx.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/UTxO/TxAux.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/UTxO/TxPayload.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/UTxO/TxProof.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/UTxO/TxWitness.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/UTxO/UTxO.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/UTxO/UTxOConfiguration.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/UTxO/Validation.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/UTxO/ValidationMode.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Update.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Update/ApplicationName.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Update/InstallerHash.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Update/Payload.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Update/Proof.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Update/Proposal.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Update/ProtocolParameters.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Update/ProtocolParametersUpdate.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Update/ProtocolVersion.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Update/SoftforkRule.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Update/SoftwareVersion.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Update/SystemTag.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Update/Validation/Endorsement.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Update/Validation/Interface.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Update/Validation/Interface/ProtocolVersionBump.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Update/Validation/Registration.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Update/Validation/Voting.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/Update/Vote.hs delete mode 100644 eras/byron/ledger/impl/src/Cardano/Chain/ValidationMode.hs delete mode 100644 eras/byron/ledger/impl/test/.ghcid delete mode 100644 eras/byron/ledger/impl/test/CHANGELOG.md delete mode 100644 eras/byron/ledger/impl/test/GetDataFileName.hs delete mode 100644 eras/byron/ledger/impl/test/NormalFormTest.hs delete mode 100644 eras/byron/ledger/impl/test/Setup.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Block/CBOR.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Block/Gen.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Block/Model.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Block/Model/Examples.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Block/Size.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Block/Validation.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Block/ValidationMode.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Buildable.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Byron/API.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Common/Address.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Common/Attributes.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Common/CBOR.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Common/Compact.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Common/Example.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Common/Gen.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Common/Lovelace.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Config.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Delegation/CBOR.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Delegation/Certificate.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Delegation/Example.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Delegation/Gen.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Delegation/Model.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Elaboration/Block.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Elaboration/Delegation.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Elaboration/Keys.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Elaboration/UTxO.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Elaboration/Update.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Epoch/File.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Genesis/CBOR.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Genesis/Dummy.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Genesis/Example.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Genesis/Gen.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Genesis/Json.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/MempoolPayload/CBOR.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/MempoolPayload/Example.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/MempoolPayload/Gen.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Slotting/CBOR.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Slotting/Example.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Slotting/Gen.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Slotting/Properties.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Ssc/CBOR.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/UTxO/CBOR.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/UTxO/Compact.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/UTxO/Example.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/UTxO/Gen.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/UTxO/Model.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/UTxO/ValidationMode.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Update/CBOR.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Update/Example.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Update/Gen.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Chain/Update/Properties.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Cardano/Mirror.hs delete mode 100644 eras/byron/ledger/impl/test/Test/Options.hs delete mode 100644 eras/byron/ledger/impl/test/cardano-ledger-byron-test.cabal delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/block/BlockSignature delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/block/Body delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/block/BoundaryBlockHeader delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/block/BoundaryBody delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/block/BoundaryConsensusData delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/block/BoundaryProof delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/block/ExtraBodyData delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/block/Header delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/block/HeaderHash delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/block/Proof delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/block/StaticConfig_GCSpec delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/block/ToSign delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/common/AddrSpendingData_Redeem delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/common/AddrSpendingData_VerKey delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/common/AddrType_R delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/common/AddrType_VK delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/common/Address delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/common/Address0 delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/common/Address1 delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/common/Address2 delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/common/Address3 delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/common/Address4 delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/common/Attributes delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/common/BlockCount delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/common/ChainDifficulty delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/common/KeyHash delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/common/Lovelace delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/common/LovelacePortion delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/common/MerkleRoot delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/common/MerkleTree delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/common/TxFeePolicy_Linear delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/common/TxSizeLinear delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/delegation/Certificate delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/delegation/DlgPayload delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/mempoolpayload/MempoolPayload delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/mempoolpayload/MempoolPayload1 delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/mempoolpayload/MempoolPayload2 delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/mempoolpayload/MempoolPayload3 delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/slotting/EpochAndSlotCount delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/slotting/EpochNumber delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/slotting/EpochSlots delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/slotting/SlotNumber delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/ssc/Commitment delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/ssc/CommitmentsMap delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/ssc/InnerSharesMap delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/ssc/Opening delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/ssc/OpeningsMap delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/ssc/SharesMap delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/ssc/SignedCommitment delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/ssc/SscPayload_CertificatesPayload delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/ssc/SscPayload_CommitmentsPayload delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/ssc/SscPayload_OpeningsPayload delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/ssc/SscPayload_SharesPayload delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/ssc/SscProof_CertificatesProof delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/ssc/SscProof_CommitmentsProof delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/ssc/SscProof_OpeningsProof delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/ssc/SscProof_SharesProof delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/ssc/VssCertificate delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/ssc/VssCertificatesHash delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/ssc/VssCertificatesMap delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/update/ApplicationName delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/update/AttackTarget_NetworkAddressTarget delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/update/AttackTarget_PubKeyAddressTarget delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/update/BlockHeader_Boundary delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/update/CommitmentSignature delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/update/HashRaw delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/update/HashTx delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/update/InstallerHash delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/update/Payload delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/update/Proof delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/update/Proposal delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/update/ProposalBody delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/update/ProtocolParameters delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/update/ProtocolParametersUpdate delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/update/ProtocolVersion delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/update/SharesDistribution delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/update/SoftforkRule delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/update/SoftwareVersion delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/update/StaticConfig_GCSpec delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/update/StaticConfig_GCSrc delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/update/SystemTag delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/update/UpId delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/update/Vote delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/utxo/HashTx delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/utxo/Tx delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/utxo/TxAttributes delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/utxo/TxId delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/utxo/TxInList delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/utxo/TxInWitness_RedeemWitness delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/utxo/TxInWitness_VKWitness delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/utxo/TxIn_Utxo delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/utxo/TxOut delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/utxo/TxOut1 delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/utxo/TxOutList delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/utxo/TxOutList1 delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/utxo/TxPayload1 delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/utxo/TxProof delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/utxo/TxSig delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/utxo/TxSigData delete mode 100644 eras/byron/ledger/impl/test/golden/cbor/utxo/TxWitness delete mode 100644 eras/byron/ledger/impl/test/golden/json/genesis/GenesisData0_Legacy_HasNetworkMagic delete mode 100644 eras/byron/ledger/impl/test/test.hs delete mode 100644 eras/conway/impl/.ghcid delete mode 100644 eras/conway/impl/CHANGELOG.md delete mode 100644 eras/conway/impl/Setup.hs delete mode 100644 eras/conway/impl/cardano-ledger-conway.cabal delete mode 100644 eras/conway/impl/cddl-files/conway.cddl delete mode 100644 eras/conway/impl/cddl-files/crypto.cddl delete mode 100644 eras/conway/impl/cddl-files/extra.cddl delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/Core.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/Era.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/Genesis.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/Governance.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/Governance/DRepPulser.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/Governance/Internal.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/Governance/Procedures.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/Governance/Proposals.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/PParams.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/Plutus/Context.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/Rules.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Bbody.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Cert.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Certs.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Deleg.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Enact.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Epoch.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Gov.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/Rules/GovCert.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Ledger.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Ledgers.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/Rules/NewEpoch.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Pool.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Ratify.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Tickf.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Utxo.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Utxos.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Utxow.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/Scripts.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/Transition.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/Translation.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/Tx.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/TxAuxData.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/TxBody.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/TxCert.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/TxInfo.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/TxOut.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/TxWits.hs delete mode 100644 eras/conway/impl/src/Cardano/Ledger/Conway/UTxO.hs delete mode 100644 eras/conway/impl/test/Main.hs delete mode 100644 eras/conway/impl/test/Test/Cardano/Ledger/Conway/Binary/CddlSpec.hs delete mode 100644 eras/conway/impl/test/Test/Cardano/Ledger/Conway/BinarySpec.hs delete mode 100644 eras/conway/impl/test/Test/Cardano/Ledger/Conway/CommitteeRatifySpec.hs delete mode 100644 eras/conway/impl/test/Test/Cardano/Ledger/Conway/DRepRatifySpec.hs delete mode 100644 eras/conway/impl/test/Test/Cardano/Ledger/Conway/GenesisSpec.hs delete mode 100644 eras/conway/impl/test/Test/Cardano/Ledger/Conway/GovActionReorderSpec.hs delete mode 100644 eras/conway/impl/test/Test/Cardano/Ledger/Conway/Plutus/PlutusSpec.hs delete mode 100644 eras/conway/impl/test/data/conway-genesis.json delete mode 100644 eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Arbitrary.hs delete mode 100644 eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Binary/Cddl.hs delete mode 100644 eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Binary/Regression.hs delete mode 100644 eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Binary/RoundTrip.hs delete mode 100644 eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Imp.hs delete mode 100644 eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Imp/EnactSpec.hs delete mode 100644 eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Imp/EpochSpec.hs delete mode 100644 eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Imp/GovCertSpec.hs delete mode 100644 eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Imp/GovSpec.hs delete mode 100644 eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Imp/RatifySpec.hs delete mode 100644 eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Imp/UtxoSpec.hs delete mode 100644 eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Imp/UtxosSpec.hs delete mode 100644 eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/ImpTest.hs delete mode 100644 eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Proposals.hs delete mode 100644 eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/TreeDiff.hs delete mode 100644 eras/conway/test-suite/.ghcid delete mode 100644 eras/conway/test-suite/CHANGELOG.md delete mode 100644 eras/conway/test-suite/cardano-ledger-conway-test.cabal delete mode 100644 eras/conway/test-suite/golden/translations.cbor delete mode 100644 eras/conway/test-suite/src/Test/Cardano/Ledger/Conway/Examples/Consensus.hs delete mode 100644 eras/conway/test-suite/src/Test/Cardano/Ledger/Conway/Translation/TranslatableGen.hs delete mode 100644 eras/conway/test-suite/test/GenerateGoldenFileMain.hs delete mode 100644 eras/conway/test-suite/test/Test/Cardano/Ledger/Conway/TxInfo.hs delete mode 100644 eras/conway/test-suite/test/Tests.hs delete mode 100644 eras/mary/impl/.ghcid delete mode 100644 eras/mary/impl/CHANGELOG.md delete mode 100644 eras/mary/impl/Setup.hs delete mode 100644 eras/mary/impl/cardano-ledger-mary.cabal delete mode 100644 eras/mary/impl/cddl-files/crypto.cddl delete mode 100644 eras/mary/impl/cddl-files/extras.cddl delete mode 100644 eras/mary/impl/cddl-files/mary.cddl delete mode 100644 eras/mary/impl/src/Cardano/Ledger/Mary.hs delete mode 100644 eras/mary/impl/src/Cardano/Ledger/Mary/Core.hs delete mode 100644 eras/mary/impl/src/Cardano/Ledger/Mary/Era.hs delete mode 100644 eras/mary/impl/src/Cardano/Ledger/Mary/PParams.hs delete mode 100644 eras/mary/impl/src/Cardano/Ledger/Mary/Rules.hs delete mode 100644 eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Bbody.hs delete mode 100644 eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Deleg.hs delete mode 100644 eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Delegs.hs delete mode 100644 eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Delpl.hs delete mode 100644 eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Ledger.hs delete mode 100644 eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Ledgers.hs delete mode 100644 eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Pool.hs delete mode 100644 eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Ppup.hs delete mode 100644 eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Utxo.hs delete mode 100644 eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Utxow.hs delete mode 100644 eras/mary/impl/src/Cardano/Ledger/Mary/Scripts.hs delete mode 100644 eras/mary/impl/src/Cardano/Ledger/Mary/Transition.hs delete mode 100644 eras/mary/impl/src/Cardano/Ledger/Mary/Translation.hs delete mode 100644 eras/mary/impl/src/Cardano/Ledger/Mary/Tx.hs delete mode 100644 eras/mary/impl/src/Cardano/Ledger/Mary/TxAuxData.hs delete mode 100644 eras/mary/impl/src/Cardano/Ledger/Mary/TxBody.hs delete mode 100644 eras/mary/impl/src/Cardano/Ledger/Mary/TxCert.hs delete mode 100644 eras/mary/impl/src/Cardano/Ledger/Mary/TxOut.hs delete mode 100644 eras/mary/impl/src/Cardano/Ledger/Mary/TxSeq.hs delete mode 100644 eras/mary/impl/src/Cardano/Ledger/Mary/TxWits.hs delete mode 100644 eras/mary/impl/src/Cardano/Ledger/Mary/UTxO.hs delete mode 100644 eras/mary/impl/src/Cardano/Ledger/Mary/Value.hs delete mode 100644 eras/mary/impl/test/Main.hs delete mode 100644 eras/mary/impl/test/Test/Cardano/Ledger/Mary/Binary/CddlSpec.hs delete mode 100644 eras/mary/impl/test/Test/Cardano/Ledger/Mary/BinarySpec.hs delete mode 100644 eras/mary/impl/test/Test/Cardano/Ledger/Mary/ValueSpec.hs delete mode 100644 eras/mary/impl/testlib/Test/Cardano/Ledger/Mary/Arbitrary.hs delete mode 100644 eras/mary/impl/testlib/Test/Cardano/Ledger/Mary/Binary/Cddl.hs delete mode 100644 eras/mary/impl/testlib/Test/Cardano/Ledger/Mary/ImpTest.hs delete mode 100644 eras/mary/impl/testlib/Test/Cardano/Ledger/Mary/TreeDiff.hs delete mode 100644 eras/shelley-ma/formal-spec/IOHKCoverPage.sty delete mode 100644 eras/shelley-ma/formal-spec/Makefile delete mode 100644 eras/shelley-ma/formal-spec/TODO delete mode 100644 eras/shelley-ma/formal-spec/chain.tex delete mode 100644 eras/shelley-ma/formal-spec/epoch.tex delete mode 100644 eras/shelley-ma/formal-spec/flake.nix delete mode 100644 eras/shelley-ma/formal-spec/frontmatter.tex delete mode 100644 eras/shelley-ma/formal-spec/introduction.tex delete mode 100644 eras/shelley-ma/formal-spec/iohk-share-logo.jpg delete mode 100644 eras/shelley-ma/formal-spec/iohk.sty delete mode 100644 eras/shelley-ma/formal-spec/mary-ledger.tex delete mode 100644 eras/shelley-ma/formal-spec/notation.tex delete mode 100644 eras/shelley-ma/formal-spec/properties.tex delete mode 100644 eras/shelley-ma/formal-spec/references.bib delete mode 100644 eras/shelley-ma/formal-spec/timelock-language.tex delete mode 100644 eras/shelley-ma/formal-spec/transactions.tex delete mode 100644 eras/shelley-ma/formal-spec/utxo.tex delete mode 100644 eras/shelley-ma/formal-spec/value-size.tex delete mode 100644 eras/shelley-ma/formal-spec/value.tex delete mode 100644 eras/shelley-ma/test-suite/.ghcid delete mode 100644 eras/shelley-ma/test-suite/CHANGELOG.md delete mode 100644 eras/shelley-ma/test-suite/README.md delete mode 100644 eras/shelley-ma/test-suite/cardano-ledger-shelley-ma-test.cabal delete mode 100644 eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/Allegra/Examples/Consensus.hs delete mode 100644 eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/AllegraEraGen.hs delete mode 100644 eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/EraBuffet.hs delete mode 100644 eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/Mary/Examples/Consensus.hs delete mode 100644 eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/Mary/Golden.hs delete mode 100644 eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/MaryEraGen.hs delete mode 100644 eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/ShelleyMA/Serialisation/Generators.hs delete mode 100644 eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/ShelleyMA/Serialisation/Roundtrip.hs delete mode 100644 eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/ShelleyMA/TxBody.hs delete mode 100644 eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/TranslationTools.hs delete mode 100644 eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/Allegra/ScriptTranslation.hs delete mode 100644 eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/Allegra/Translation.hs delete mode 100644 eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/Mary/Examples.hs delete mode 100644 eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/Mary/Examples/Cast.hs delete mode 100644 eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/Mary/Examples/MultiAssets.hs delete mode 100644 eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/Mary/Translation.hs delete mode 100644 eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/Mary/Value.hs delete mode 100644 eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/ShelleyMA/Serialisation.hs delete mode 100644 eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/ShelleyMA/Serialisation/Golden/Encoding.hs delete mode 100644 eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/ShelleyMA/Serialisation/Timelocks.hs delete mode 100644 eras/shelley-ma/test-suite/test/Tests.hs delete mode 100644 eras/shelley/Deliverables.pdf delete mode 100644 eras/shelley/design-spec/.gitignore delete mode 100644 eras/shelley/design-spec/CHANGELOG.md delete mode 100644 eras/shelley/design-spec/IOHKCoverPage.sty delete mode 100644 eras/shelley/design-spec/Makefile delete mode 100644 eras/shelley/design-spec/addresses.dot delete mode 100644 eras/shelley/design-spec/addresses.pdf delete mode 100644 eras/shelley/design-spec/cm-super-t1.enc delete mode 100644 eras/shelley/design-spec/d1-depends.pdf delete mode 100644 eras/shelley/design-spec/flake.nix delete mode 100644 eras/shelley/design-spec/habbrv.bst delete mode 100644 eras/shelley/design-spec/iohk-share-logo.jpg delete mode 100644 eras/shelley/design-spec/references.bib delete mode 100644 eras/shelley/design-spec/rewards.png delete mode 100644 eras/shelley/design-spec/sftt1200.pfb delete mode 100644 eras/shelley/design-spec/shelley-delegation.tex delete mode 100644 eras/shelley/formal-spec/CHANGELOG.md delete mode 100644 eras/shelley/formal-spec/IOHKCoverPage.sty delete mode 100644 eras/shelley/formal-spec/Makefile delete mode 100644 eras/shelley/formal-spec/Properties.md delete mode 100644 eras/shelley/formal-spec/address-binary.tex delete mode 100644 eras/shelley/formal-spec/address.tex delete mode 100644 eras/shelley/formal-spec/bootstrap-witnesses.tex delete mode 100644 eras/shelley/formal-spec/cddl.tex delete mode 100644 eras/shelley/formal-spec/chain.tex delete mode 100644 eras/shelley/formal-spec/crypto-details.tex delete mode 100644 eras/shelley/formal-spec/crypto-primitives.tex delete mode 100644 eras/shelley/formal-spec/delegation.tex delete mode 100644 eras/shelley/formal-spec/epoch.tex delete mode 100644 eras/shelley/formal-spec/errata.tex delete mode 100644 eras/shelley/formal-spec/flake.nix delete mode 100644 eras/shelley/formal-spec/frontmatter.tex delete mode 100644 eras/shelley/formal-spec/habbrv.bst delete mode 100644 eras/shelley/formal-spec/hand_proofs.tex delete mode 100644 eras/shelley/formal-spec/incentives.tex delete mode 100644 eras/shelley/formal-spec/intro.tex delete mode 100644 eras/shelley/formal-spec/iohk-share-logo.jpg delete mode 100644 eras/shelley/formal-spec/iohk.sty delete mode 100644 eras/shelley/formal-spec/leader-value.tex delete mode 100644 eras/shelley/formal-spec/ledger.tex delete mode 100644 eras/shelley/formal-spec/multi-sig.tex delete mode 100644 eras/shelley/formal-spec/notation.tex delete mode 100644 eras/shelley/formal-spec/proofs.tex delete mode 100644 eras/shelley/formal-spec/properties.tex delete mode 100644 eras/shelley/formal-spec/protocol-parameters.tex delete mode 100644 eras/shelley/formal-spec/references.bib delete mode 100644 eras/shelley/formal-spec/rules.dot delete mode 100644 eras/shelley/formal-spec/rules.pdf delete mode 100644 eras/shelley/formal-spec/scripts-multicurrency.tex delete mode 100644 eras/shelley/formal-spec/shelley-ledger.tex delete mode 100644 eras/shelley/formal-spec/software-updates.tex delete mode 100644 eras/shelley/formal-spec/sts-overview.tex delete mode 100644 eras/shelley/formal-spec/transactions.tex delete mode 100644 eras/shelley/formal-spec/txsize.tex delete mode 100644 eras/shelley/formal-spec/update.tex delete mode 100644 eras/shelley/formal-spec/utxo.tex delete mode 100644 eras/shelley/impl/.ghcid delete mode 100644 eras/shelley/impl/CHANGELOG.md delete mode 100644 eras/shelley/impl/Setup.hs delete mode 100644 eras/shelley/impl/cardano-ledger-shelley.cabal delete mode 100644 eras/shelley/impl/cddl-files/crypto.cddl delete mode 100644 eras/shelley/impl/cddl-files/extras.cddl delete mode 100644 eras/shelley/impl/cddl-files/shelley.cddl delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Chain.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/API.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/API/ByronTranslation.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/API/Genesis.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/API/Mempool.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/API/Types.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/API/Validation.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/API/Wallet.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/AdaPots.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/Address/Bootstrap.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/BlockChain.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/Core.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/Delegation/Certificates.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/EpochBoundary.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/Era.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/Genesis.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/Governance.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/HardForks.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/Internal.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/LedgerState.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/LedgerState/IncrementalStake.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/LedgerState/NewEpochState.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/LedgerState/PulsingReward.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/LedgerState/Types.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/Metadata.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/PParams.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/PoolParams.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/PoolRank.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/RewardProvenance.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/RewardUpdate.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/Rewards.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Bbody.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Deleg.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Delegs.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Delpl.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Epoch.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Ledger.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Ledgers.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Mir.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/NewEpoch.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Newpp.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Pool.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/PoolReap.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Ppup.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Reports.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Rupd.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Snap.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Tick.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Upec.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Utxo.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Utxow.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/Scripts.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/SoftForks.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/StabilityWindow.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/Transition.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/Translation.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/Tx.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/TxAuxData.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/TxBody.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/TxCert.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/TxOut.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/TxWits.hs delete mode 100644 eras/shelley/impl/src/Cardano/Ledger/Shelley/UTxO.hs delete mode 100644 eras/shelley/impl/test/Main.hs delete mode 100644 eras/shelley/impl/test/Test/Cardano/Ledger/Shelley/Binary/CddlSpec.hs delete mode 100644 eras/shelley/impl/test/Test/Cardano/Ledger/Shelley/Binary/GoldenSpec.hs delete mode 100644 eras/shelley/impl/test/Test/Cardano/Ledger/Shelley/Binary/RoundTripSpec.hs delete mode 100644 eras/shelley/impl/test/Test/Cardano/Ledger/Shelley/BinarySpec.hs delete mode 100644 eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/Arbitrary.hs delete mode 100644 eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/Binary/Cddl.hs delete mode 100644 eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/Binary/Golden.hs delete mode 100644 eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/Binary/RoundTrip.hs delete mode 100644 eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/Constants.hs delete mode 100644 eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/Imp.hs delete mode 100644 eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/Imp/EpochSpec.hs delete mode 100644 eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/Imp/LedgerSpec.hs delete mode 100644 eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/Imp/UtxowSpec.hs delete mode 100644 eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/ImpTest.hs delete mode 100644 eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/TreeDiff.hs delete mode 100644 eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/UnitTests/IncrementalStakeTest.hs delete mode 100644 eras/shelley/test-suite/.ghcid delete mode 100644 eras/shelley/test-suite/CHANGELOG.md delete mode 100644 eras/shelley/test-suite/Setup.hs delete mode 100644 eras/shelley/test-suite/bench/BenchUTxOAggregate.hs delete mode 100644 eras/shelley/test-suite/bench/BenchValidation.hs delete mode 100644 eras/shelley/test-suite/bench/Cardano/Ledger/Shelley/Bench/Gen.hs delete mode 100644 eras/shelley/test-suite/bench/Cardano/Ledger/Shelley/Bench/Rewards.hs delete mode 100644 eras/shelley/test-suite/bench/Main.hs delete mode 100644 eras/shelley/test-suite/bench/README.md delete mode 100644 eras/shelley/test-suite/cardano-ledger-shelley-test.cabal delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Address/Bootstrap.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/BenchmarkFunctions.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/ByronTranslation.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/ConcreteCryptoTypes.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Examples/Cast.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Examples/Consensus.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Examples/Federation.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Block.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Constants.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Core.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Delegation.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/EraGen.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Presets.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/ScriptClass.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/ShelleyEraGen.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Trace/Chain.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Trace/DCert.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Trace/Ledger.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Trace/TxCert.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/TxAuxData.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/TxCert.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Update.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Utxo.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/LaxBlock.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/PropertyTests.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rewards.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/AdaPreservation.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/Chain.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/ClassifyTraces.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/CollisionFreeness.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/Deleg.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/Deposits.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/IncrementalStake.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/Pool.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/PoolReap.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/TestChain.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Serialisation/EraIndepGenerators.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Serialisation/Generators.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Serialisation/GoldenUtils.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/ShelleyTranslation.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Utils.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/WitVKeys.hs delete mode 100644 eras/shelley/test-suite/src/Test/Cardano/Ledger/TerseTools.hs delete mode 100644 eras/shelley/test-suite/test/Golden/ShelleyGenesis delete mode 100644 eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples.hs delete mode 100644 eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/Combinators.hs delete mode 100644 eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/EmptyBlock.hs delete mode 100644 eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/GenesisDelegation.hs delete mode 100644 eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/Init.hs delete mode 100644 eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/Mir.hs delete mode 100644 eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/MirTransfer.hs delete mode 100644 eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/NetworkID.hs delete mode 100644 eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/PoolLifetime.hs delete mode 100644 eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/PoolReReg.hs delete mode 100644 eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/TwoPools.hs delete mode 100644 eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/Updates.hs delete mode 100644 eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Fees.hs delete mode 100644 eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/MultiSigExamples.hs delete mode 100644 eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/RulesTests.hs delete mode 100644 eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/SafeHash.hs delete mode 100644 eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Serialisation.hs delete mode 100644 eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Serialisation/Golden/Address.hs delete mode 100644 eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Serialisation/Golden/Encoding.hs delete mode 100644 eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Serialisation/Golden/Genesis.hs delete mode 100644 eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Serialisation/Tripping/CBOR.hs delete mode 100644 eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Serialisation/Tripping/JSON.hs delete mode 100644 eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/UnitTests.hs delete mode 100644 eras/shelley/test-suite/test/Tests.hs delete mode 100644 flake.lock delete mode 100644 flake.nix delete mode 100644 fourmolu.yaml delete mode 100644 hie.yaml delete mode 100644 implementation-decisions.md delete mode 100644 libs/cardano-data/.ghcid delete mode 100644 libs/cardano-data/CHANGELOG.md delete mode 100644 libs/cardano-data/Setup.hs delete mode 100644 libs/cardano-data/cardano-data.cabal delete mode 100644 libs/cardano-data/flake.nix delete mode 100644 libs/cardano-data/src/Data/CanonicalMaps.hs delete mode 100644 libs/cardano-data/src/Data/ListMap.hs delete mode 100644 libs/cardano-data/src/Data/MapExtras.hs delete mode 100644 libs/cardano-data/src/Data/MonoTuple.hs delete mode 100644 libs/cardano-data/src/Data/OMap/Strict.hs delete mode 100644 libs/cardano-data/src/Data/OSet/Strict.hs delete mode 100644 libs/cardano-data/src/Data/Pulse.hs delete mode 100644 libs/cardano-data/src/Data/Universe.hs delete mode 100644 libs/cardano-data/test/Main.hs delete mode 100644 libs/cardano-data/test/Test/Cardano/Data/MapExtrasSpec.hs delete mode 100644 libs/cardano-data/test/Test/Cardano/Data/OMap/StrictSpec.hs delete mode 100644 libs/cardano-data/test/Test/Cardano/Data/OSet/StrictSpec.hs delete mode 100644 libs/cardano-data/testlib/Test/Cardano/Data.hs delete mode 100644 libs/cardano-data/testlib/Test/Cardano/Data/Arbitrary.hs delete mode 100644 libs/cardano-data/testlib/Test/Cardano/Data/TreeDiff.hs delete mode 100644 libs/cardano-ledger-api/.ghcid delete mode 100644 libs/cardano-ledger-api/CHANGELOG.md delete mode 100644 libs/cardano-ledger-api/Setup.hs delete mode 100644 libs/cardano-ledger-api/cardano-ledger-api.cabal delete mode 100644 libs/cardano-ledger-api/src/Cardano/Ledger/Api.hs delete mode 100644 libs/cardano-ledger-api/src/Cardano/Ledger/Api/Era.hs delete mode 100644 libs/cardano-ledger-api/src/Cardano/Ledger/Api/Governance.hs delete mode 100644 libs/cardano-ledger-api/src/Cardano/Ledger/Api/PParams.hs delete mode 100644 libs/cardano-ledger-api/src/Cardano/Ledger/Api/Scripts.hs delete mode 100644 libs/cardano-ledger-api/src/Cardano/Ledger/Api/Scripts/Data.hs delete mode 100644 libs/cardano-ledger-api/src/Cardano/Ledger/Api/Scripts/ExUnits.hs delete mode 100644 libs/cardano-ledger-api/src/Cardano/Ledger/Api/State/Query.hs delete mode 100644 libs/cardano-ledger-api/src/Cardano/Ledger/Api/State/Query/CommitteeMembersState.hs delete mode 100644 libs/cardano-ledger-api/src/Cardano/Ledger/Api/Transition.hs delete mode 100644 libs/cardano-ledger-api/src/Cardano/Ledger/Api/Tx.hs delete mode 100644 libs/cardano-ledger-api/src/Cardano/Ledger/Api/Tx/Address.hs delete mode 100644 libs/cardano-ledger-api/src/Cardano/Ledger/Api/Tx/AuxData.hs delete mode 100644 libs/cardano-ledger-api/src/Cardano/Ledger/Api/Tx/Body.hs delete mode 100644 libs/cardano-ledger-api/src/Cardano/Ledger/Api/Tx/Cert.hs delete mode 100644 libs/cardano-ledger-api/src/Cardano/Ledger/Api/Tx/In.hs delete mode 100644 libs/cardano-ledger-api/src/Cardano/Ledger/Api/Tx/Out.hs delete mode 100644 libs/cardano-ledger-api/src/Cardano/Ledger/Api/Tx/Wits.hs delete mode 100644 libs/cardano-ledger-api/src/Cardano/Ledger/Api/UTxO.hs delete mode 100644 libs/cardano-ledger-api/test/Test/Cardano/Ledger/Api/State/Imp/QuerySpec.hs delete mode 100644 libs/cardano-ledger-api/test/Test/Cardano/Ledger/Api/State/QuerySpec.hs delete mode 100644 libs/cardano-ledger-api/test/Test/Cardano/Ledger/Api/Tx.hs delete mode 100644 libs/cardano-ledger-api/test/Test/Cardano/Ledger/Api/Tx/Body.hs delete mode 100644 libs/cardano-ledger-api/test/Test/Cardano/Ledger/Api/Tx/Out.hs delete mode 100644 libs/cardano-ledger-api/test/Tests.hs delete mode 100644 libs/cardano-ledger-api/testlib/Test/Cardano/Ledger/Api/Arbitrary.hs delete mode 100644 libs/cardano-ledger-api/testlib/Test/Cardano/Ledger/Api/State/Query.hs delete mode 100644 libs/cardano-ledger-binary/.ghcid delete mode 100644 libs/cardano-ledger-binary/CHANGELOG.md delete mode 100644 libs/cardano-ledger-binary/Setup.hs delete mode 100644 libs/cardano-ledger-binary/bench/Bench.hs delete mode 100644 libs/cardano-ledger-binary/cardano-ledger-binary.cabal delete mode 100644 libs/cardano-ledger-binary/flake.nix delete mode 100644 libs/cardano-ledger-binary/src/Cardano/Ledger/Binary.hs delete mode 100644 libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Coders.hs delete mode 100644 libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Crypto.hs delete mode 100644 libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Decoding.hs delete mode 100644 libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Decoding/Annotated.hs delete mode 100644 libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Decoding/Coders.hs delete mode 100644 libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Decoding/DecCBOR.hs delete mode 100644 libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Decoding/Decoder.hs delete mode 100644 libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Decoding/Drop.hs delete mode 100644 libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Decoding/Sharing.hs delete mode 100644 libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Decoding/Sized.hs delete mode 100644 libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Encoding.hs delete mode 100644 libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Encoding/Coders.hs delete mode 100644 libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Encoding/EncCBOR.hs delete mode 100644 libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Encoding/Encoder.hs delete mode 100644 libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/FlatTerm.hs delete mode 100644 libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Group.hs delete mode 100644 libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Plain.hs delete mode 100644 libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Version.hs delete mode 100644 libs/cardano-ledger-binary/test/.ghcid delete mode 100644 libs/cardano-ledger-binary/test/Main.hs delete mode 100644 libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/Failure.hs delete mode 100644 libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/PlainSpec.hs delete mode 100644 libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/RoundTripSpec.hs delete mode 100644 libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/Success.hs delete mode 100644 libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/Vintage/Coders.hs delete mode 100644 libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/Vintage/Drop.hs delete mode 100644 libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/Vintage/Failure.hs delete mode 100644 libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/Vintage/RoundTrip.hs delete mode 100644 libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/Vintage/Serialization.hs delete mode 100644 libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/Vintage/SizeBounds.hs delete mode 100644 libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/Arbitrary.hs delete mode 100644 libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/Cddl.hs delete mode 100644 libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/Plain/Golden.hs delete mode 100644 libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/Plain/RoundTrip.hs delete mode 100644 libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/Random.hs delete mode 100644 libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/RoundTrip.hs delete mode 100644 libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/TreeDiff.hs delete mode 100644 libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/Twiddle.hs delete mode 100644 libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/Vintage/Helpers.hs delete mode 100644 libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/Vintage/Helpers/GoldenRoundTrip.hs delete mode 100644 libs/cardano-ledger-conformance/Setup.hs delete mode 100644 libs/cardano-ledger-conformance/cardano-ledger-conformance.cabal delete mode 100644 libs/cardano-ledger-conformance/src/Test/Cardano/Ledger/Conformance.hs delete mode 100644 libs/cardano-ledger-conformance/src/Test/Cardano/Ledger/Conformance/ExecSpecRule/Conway.hs delete mode 100644 libs/cardano-ledger-conformance/src/Test/Cardano/Ledger/Conformance/ExecSpecRule/Core.hs delete mode 100644 libs/cardano-ledger-conformance/src/Test/Cardano/Ledger/Conformance/Orphans.hs delete mode 100644 libs/cardano-ledger-conformance/src/Test/Cardano/Ledger/Conformance/Spec/Conway.hs delete mode 100644 libs/cardano-ledger-conformance/src/Test/Cardano/Ledger/Conformance/SpecTranslate/Conway.hs delete mode 100644 libs/cardano-ledger-conformance/src/Test/Cardano/Ledger/Conformance/SpecTranslate/Core.hs delete mode 100644 libs/cardano-ledger-conformance/test/Main.hs delete mode 100644 libs/cardano-ledger-core/.ghcid delete mode 100644 libs/cardano-ledger-core/CHANGELOG.md delete mode 100644 libs/cardano-ledger-core/bench/Addr.hs delete mode 100644 libs/cardano-ledger-core/bench/UMap.hs delete mode 100644 libs/cardano-ledger-core/cardano-ledger-core.cabal delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/Address.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/Ap.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/AuxiliaryData.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/BHeaderView.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/BaseTypes.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/Block.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/CertState.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/Coin.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/Compactible.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/Core.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/Core/Era.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/Core/PParams.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/Core/Translation.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/Core/TxCert.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/Credential.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/Crypto.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/DRep.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/EpochBoundary.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/Era.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/HKD.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/Hashes.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/Keys.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/Keys/Bootstrap.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/Keys/Internal.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/Keys/WitVKey.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/Language.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/MemoBytes.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/Orphans.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/Plutus.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/Plutus/CostModels.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/Plutus/Data.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/Plutus/Evaluate.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/Plutus/ExUnits.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/Plutus/Language.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/Plutus/ToPlutusData.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/Plutus/TxInfo.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/PoolDistr.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/PoolParams.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/Rewards.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/Rules/ValidationMode.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/SafeHash.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/Serialization.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/Slot.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/Tools.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/TxIn.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/UMap.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/UTxO.hs delete mode 100644 libs/cardano-ledger-core/src/Cardano/Ledger/Val.hs delete mode 100644 libs/cardano-ledger-core/test/Main.hs delete mode 100644 libs/cardano-ledger-core/test/Test/Cardano/Ledger/AddressSpec.hs delete mode 100644 libs/cardano-ledger-core/test/Test/Cardano/Ledger/BaseTypesSpec.hs delete mode 100644 libs/cardano-ledger-core/test/Test/Cardano/Ledger/BinarySpec.hs delete mode 100644 libs/cardano-ledger-core/test/Test/Cardano/Ledger/JsonSpec.hs delete mode 100644 libs/cardano-ledger-core/test/Test/Cardano/Ledger/PlutusSpec.hs delete mode 100644 libs/cardano-ledger-core/test/Test/Cardano/Ledger/UMapSpec.hs delete mode 100644 libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Common.hs delete mode 100644 libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Core/Address.hs delete mode 100644 libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Core/Arbitrary.hs delete mode 100644 libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Core/Binary.hs delete mode 100644 libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Core/Binary/RoundTrip.hs delete mode 100644 libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Core/JSON.hs delete mode 100644 libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Core/KeyPair.hs delete mode 100644 libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Core/Rational.hs delete mode 100644 libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Core/Utils.hs delete mode 100644 libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Imp/Common.hs delete mode 100644 libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Plutus.hs delete mode 100644 libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Plutus/Examples.hs delete mode 100644 libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Plutus/ScriptTestContext.hs delete mode 100644 libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Plutus/ToPlutusData.hs delete mode 100644 libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/TreeDiff.hs delete mode 100644 libs/cardano-ledger-test/.ghcid delete mode 100644 libs/cardano-ledger-test/CHANGELOG.md delete mode 100644 libs/cardano-ledger-test/Setup.hs delete mode 100644 libs/cardano-ledger-test/bench/Bench/Cardano/Ledger/ApplyTx.hs delete mode 100644 libs/cardano-ledger-test/bench/Bench/Cardano/Ledger/ApplyTx/Gen.hs delete mode 100644 libs/cardano-ledger-test/bench/Bench/Cardano/Ledger/EpochBoundary.hs delete mode 100644 libs/cardano-ledger-test/bench/Bench/Cardano/Ledger/Serialisation/Generators.hs delete mode 100644 libs/cardano-ledger-test/bench/Bench/Cardano/Ledger/StakeDistr.hs delete mode 100644 libs/cardano-ledger-test/bench/Bench/Cardano/Ledger/SumStake.hs delete mode 100644 libs/cardano-ledger-test/bench/Bench/Cardano/Ledger/TxOut.hs delete mode 100644 libs/cardano-ledger-test/bench/Bench/Constrained/STS.hs delete mode 100644 libs/cardano-ledger-test/bench/Main.hs delete mode 100644 libs/cardano-ledger-test/bench/resources/0_ledgerstate.cbor delete mode 100644 libs/cardano-ledger-test/bench/resources/0_tx.cbor delete mode 100644 libs/cardano-ledger-test/bench/resources/1_ledgerstate.cbor delete mode 100644 libs/cardano-ledger-test/bench/resources/1_tx.cbor delete mode 100644 libs/cardano-ledger-test/bench/resources/DESCRIPTION.md delete mode 100644 libs/cardano-ledger-test/benchProperty/Main.hs delete mode 100644 libs/cardano-ledger-test/cardano-ledger-test.cabal delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Alonzo/Tools.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Ast.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Classes.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Combinators.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway/Cert.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway/Deleg.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway/Gov.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway/GovCert.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway/Instances.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway/Ledger.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway/PParams.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway/Pool.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway/Utxo.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Env.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Examples.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Lenses.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Monad.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Pairing.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/CertState.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/Certs.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/LedgerState.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/NewEpochState.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/PParams.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/Repl.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/Tx.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/TxOut.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/UTxO.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/Universes.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Rewrite.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Scripts.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Shrink.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Size.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Solver.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Spec.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/SpecClass.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Stage.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Tests.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Trace/Actions.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Trace/DrepCertTx.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Trace/Pipeline.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Trace/SimpleTx.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Trace/Tests.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Trace/TraceMonad.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/TypeRep.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Utils.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Vars.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/EraClass.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Examples/AlonzoAPI.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Examples/AlonzoBBODY.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Examples/AlonzoCollectInputs.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Examples/AlonzoInvalidTxUTXOW.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Examples/AlonzoValidTxUTXOW.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Examples/BabbageFeatures.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Examples/STSTestUtils.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/AggPropTests.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/ApplyTx.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/Fields.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/Functions.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/GenState.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/Indexed.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/MockChain.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/ModelState.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/PrettyCore.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/PrettyTest.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/Proof.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/Properties.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/Same.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/Scriptic.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/Trace.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/TxGen.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/Updaters.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/NoThunks.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/STS.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/TestableEra.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/Tickf.hs delete mode 100644 libs/cardano-ledger-test/src/Test/Cardano/Ledger/ValueFromList.hs delete mode 100644 libs/cardano-ledger-test/test/Tests.hs delete mode 100644 libs/cardano-protocol-tpraos/.ghcid delete mode 100644 libs/cardano-protocol-tpraos/CHANGELOG.md delete mode 100644 libs/cardano-protocol-tpraos/Setup.hs delete mode 100644 libs/cardano-protocol-tpraos/cardano-protocol-tpraos.cabal delete mode 100644 libs/cardano-protocol-tpraos/src/Cardano/Protocol/TPraos/API.hs delete mode 100644 libs/cardano-protocol-tpraos/src/Cardano/Protocol/TPraos/BHeader.hs delete mode 100644 libs/cardano-protocol-tpraos/src/Cardano/Protocol/TPraos/OCert.hs delete mode 100644 libs/cardano-protocol-tpraos/src/Cardano/Protocol/TPraos/Rules/OCert.hs delete mode 100644 libs/cardano-protocol-tpraos/src/Cardano/Protocol/TPraos/Rules/Overlay.hs delete mode 100644 libs/cardano-protocol-tpraos/src/Cardano/Protocol/TPraos/Rules/Prtcl.hs delete mode 100644 libs/cardano-protocol-tpraos/src/Cardano/Protocol/TPraos/Rules/Tickn.hs delete mode 100644 libs/cardano-protocol-tpraos/src/Cardano/Protocol/TPraos/Rules/Updn.hs delete mode 100644 libs/cardano-protocol-tpraos/test/Main.hs delete mode 100644 libs/cardano-protocol-tpraos/test/Test/Cardano/Protocol/Binary/CddlSpec.hs delete mode 100644 libs/cardano-protocol-tpraos/testlib/Test/Cardano/Protocol/Crypto/KES.hs delete mode 100644 libs/cardano-protocol-tpraos/testlib/Test/Cardano/Protocol/Crypto/VRF.hs delete mode 100644 libs/cardano-protocol-tpraos/testlib/Test/Cardano/Protocol/Crypto/VRF/Fake.hs delete mode 100644 libs/cardano-protocol-tpraos/testlib/Test/Cardano/Protocol/TPraos/Arbitrary.hs delete mode 100644 libs/cardano-protocol-tpraos/testlib/Test/Cardano/Protocol/TPraos/Create.hs delete mode 100644 libs/constrained-generators/bench/Main.hs delete mode 100644 libs/constrained-generators/constrained-generators.cabal delete mode 100644 libs/constrained-generators/src/Constrained.hs delete mode 100644 libs/constrained-generators/src/Constrained/Base.hs delete mode 100644 libs/constrained-generators/src/Constrained/Bench.hs delete mode 100644 libs/constrained-generators/src/Constrained/Core.hs delete mode 100644 libs/constrained-generators/src/Constrained/Env.hs delete mode 100644 libs/constrained-generators/src/Constrained/GenT.hs delete mode 100644 libs/constrained-generators/src/Constrained/Graph.hs delete mode 100644 libs/constrained-generators/src/Constrained/Instances.hs delete mode 100644 libs/constrained-generators/src/Constrained/Internals.hs delete mode 100644 libs/constrained-generators/src/Constrained/List.hs delete mode 100644 libs/constrained-generators/src/Constrained/Spec.hs delete mode 100644 libs/constrained-generators/src/Constrained/Spec/Generics.hs delete mode 100644 libs/constrained-generators/src/Constrained/Spec/Maps.hs delete mode 100644 libs/constrained-generators/src/Constrained/Spec/Pairs.hs delete mode 100644 libs/constrained-generators/src/Constrained/Spec/Tree.hs delete mode 100644 libs/constrained-generators/src/Constrained/Test.hs delete mode 100644 libs/constrained-generators/src/Constrained/Univ.hs delete mode 100644 libs/constrained-generators/test/Tests.hs delete mode 100644 libs/ledger-state/.ghcid delete mode 100644 libs/ledger-state/ChangeLog.md delete mode 100644 libs/ledger-state/README.md delete mode 100644 libs/ledger-state/Setup.hs delete mode 100644 libs/ledger-state/app/Main.hs delete mode 100644 libs/ledger-state/bench/Address.hs delete mode 100644 libs/ledger-state/bench/Memory.hs delete mode 100644 libs/ledger-state/bench/Performance.hs delete mode 100644 libs/ledger-state/ledger-state.cabal delete mode 100644 libs/ledger-state/src/Cardano/Ledger/State.hs delete mode 100644 libs/ledger-state/src/Cardano/Ledger/State/Orphans.hs delete mode 100644 libs/ledger-state/src/Cardano/Ledger/State/Query.hs delete mode 100644 libs/ledger-state/src/Cardano/Ledger/State/Schema.hs delete mode 100644 libs/ledger-state/src/Cardano/Ledger/State/Transform.hs delete mode 100644 libs/ledger-state/src/Cardano/Ledger/State/UTxO.hs delete mode 100644 libs/ledger-state/src/Cardano/Ledger/State/Vector.hs delete mode 100644 libs/non-integral/.ghcid delete mode 100644 libs/non-integral/CHANGELOG.md delete mode 100644 libs/non-integral/README.md delete mode 100644 libs/non-integral/Setup.hs delete mode 100644 libs/non-integral/non-integral.cabal delete mode 100644 libs/non-integral/reference/Makefile delete mode 100644 libs/non-integral/reference/golden_tests.txt delete mode 100644 libs/non-integral/reference/golden_tests_result.txt delete mode 100644 libs/non-integral/reference/non_integral.c delete mode 100644 libs/non-integral/reference/non_integral.h delete mode 100644 libs/non-integral/reference/non_integral.hpp delete mode 100644 libs/non-integral/reference/non_integral_test.cpp delete mode 100644 libs/non-integral/reference/randomize.cpp delete mode 100644 libs/non-integral/src/Cardano/Ledger/NonIntegral.hs delete mode 100644 libs/non-integral/test/Tests.hs delete mode 100644 libs/non-integral/test/Tests/Cardano/Ledger/NonIntegral.hs delete mode 100644 libs/plutus-preprocessor/.ghcid delete mode 100644 libs/plutus-preprocessor/CHANGELOG.md delete mode 100644 libs/plutus-preprocessor/plutus-preprocessor.cabal delete mode 100644 libs/plutus-preprocessor/src/Debug.hs delete mode 100644 libs/plutus-preprocessor/src/Main.hs delete mode 100644 libs/plutus-preprocessor/src/PlutusV1Scripts.hs delete mode 100644 libs/plutus-preprocessor/src/PlutusV3Scripts.hs delete mode 100644 libs/plutus-preprocessor/src/ScriptSource.hs delete mode 100644 libs/set-algebra/.ghcid delete mode 100644 libs/set-algebra/CHANGELOG.md delete mode 100644 libs/set-algebra/Setup.hs delete mode 100644 libs/set-algebra/flake.nix delete mode 100644 libs/set-algebra/set-algebra.cabal delete mode 100644 libs/set-algebra/src/Control/Iterate/BaseTypes.hs delete mode 100644 libs/set-algebra/src/Control/Iterate/Collect.hs delete mode 100644 libs/set-algebra/src/Control/Iterate/Exp.hs delete mode 100644 libs/set-algebra/src/Control/Iterate/SetAlgebra.hs delete mode 100644 libs/set-algebra/src/Control/SetAlgebra.hs delete mode 100644 libs/set-algebra/test/Main.hs delete mode 100644 libs/set-algebra/test/Test/Control/Iterate/RelationReference.hs delete mode 100644 libs/set-algebra/test/Test/Control/Iterate/SetAlgebra.hs delete mode 100644 libs/small-steps/.ghcid delete mode 100644 libs/small-steps/CHANGELOG.md delete mode 100644 libs/small-steps/Setup.hs delete mode 100644 libs/small-steps/flake.nix delete mode 100644 libs/small-steps/small-steps.cabal delete mode 100644 libs/small-steps/src/Control/Provenance.hs delete mode 100644 libs/small-steps/src/Control/State/Transition.hs delete mode 100644 libs/small-steps/src/Control/State/Transition/Extended.hs delete mode 100644 libs/small-steps/src/Control/State/Transition/Simple.hs delete mode 100644 libs/small-steps/test/Main.hs delete mode 100644 libs/small-steps/test/Test/Control/State/Transition/Examples/CommitReveal.hs delete mode 100644 libs/small-steps/test/Test/Control/State/Transition/Examples/GlobalSum.hs delete mode 100644 libs/small-steps/test/Test/Control/State/Transition/Examples/Sum.hs delete mode 100644 libs/small-steps/testlib/Test/Control/State/Transition/Generator.hs delete mode 100644 libs/small-steps/testlib/Test/Control/State/Transition/Invalid/Trace.hs delete mode 100644 libs/small-steps/testlib/Test/Control/State/Transition/Trace.hs delete mode 100644 libs/small-steps/testlib/Test/Control/State/Transition/Trace/Generator/QuickCheck.hs delete mode 100644 libs/small-steps/testlib/Test/Hedgehog/Extra/Manual.hs delete mode 100644 libs/vector-map/.ghcid delete mode 100644 libs/vector-map/CHANGELOG.md delete mode 100644 libs/vector-map/Setup.hs delete mode 100644 libs/vector-map/bench/Bench.hs delete mode 100644 libs/vector-map/src/Data/VMap.hs delete mode 100644 libs/vector-map/src/Data/VMap/KVVector.hs delete mode 100644 libs/vector-map/test/Main.hs delete mode 100644 libs/vector-map/test/Test/Common.hs delete mode 100644 libs/vector-map/test/Test/VMap.hs delete mode 100644 libs/vector-map/testlib/Test/Data/VMap/TreeDiff.hs delete mode 100644 libs/vector-map/vector-map.cabal delete mode 100644 nix/flake-compat.nix delete mode 100644 nix/latex.nix delete mode 100644 nix/pkgs.nix delete mode 100644 nix/pkgs/cddl/Gemfile delete mode 100644 nix/pkgs/cddl/Gemfile.lock delete mode 100644 nix/pkgs/cddl/default.nix delete mode 100644 nix/pkgs/cddl/gemset.nix delete mode 100755 scripts/cabal-format.sh delete mode 100755 scripts/fourmolize.sh delete mode 100755 scripts/gen-hie.sh delete mode 100755 scripts/ghcid delete mode 100755 scripts/haddocks.sh delete mode 100755 scripts/haskell-language-server delete mode 100755 scripts/mkprolog.sh delete mode 120000 semantics/executable-spec delete mode 120000 semantics/formal-spec delete mode 120000 semantics/small-steps-test delete mode 100644 shell.nix delete mode 100644 weeder.dhall diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index fbf2eaf360e..00000000000 --- a/.editorconfig +++ /dev/null @@ -1,15 +0,0 @@ -root = true - -[*] -indent_style = space -indent_size = 2 -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true -# See: https://github.com/input-output-hk/cardano-wallet/wiki/Coding-Standards -max_line_length = 80 - -[*.hs] -indent_size = 2 -max_line_length = 80 diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs deleted file mode 100644 index fed96474587..00000000000 --- a/.git-blame-ignore-revs +++ /dev/null @@ -1,40 +0,0 @@ -### NOTE -# Run `git config blame.ignoreRevsFile .git-blame-ignore-revs` -# from the repository's root to tell `git blame` to ignore -# the commits below. - -# Fourmolize with `column-limit` rule enabled -# CommitDate: Sun Mar 17 21:36:58 2024 +0100 -e4a1422d3f149f9c6070ca78f253d43f2cbfb607 - -# Fourmolize with new version of fourmolu-0.13.1.0 -# CommitDate: Wed Jul 19 17:44:40 2023 +0100 -cda8146aee32e3c282f88bcd715cbf0e195287b2 - -# Fourmolize! -# CommitDate: Wed Dec 28 13:59:33 2022 +0300 -9ff8a727d2d5ee4a6fdf6bb0eab4e139c545cc7c - -# Ormolize with ormolu-0.4.0.0 -# CommitDate: Fri Mar 4 02:05:06 2022 +0300 -7599e835f8c6a437e0e481898575053069d94183 - -# Bump ormolu version and reformat. -# CommitDate: Thu Nov 11 09:38:59 2021 +0100 -e52bd7226ebe0f5b0a8adb7e54e86969177fff90 - -# Apply `ormolu` to all Haskell files to ensure consistent formatting. -# CommitDate: Thu Jul 15 23:41:34 2021 +0300 -db951c118c4658bd92580736c8b96c9f4a70aeb4 - -# New ormolu version changes format slightly -# CommitDate: Mon Jun 22 11:55:11 2020 +0200 -ccf6d0efaff1a37218948040f42be92fa5bd4ed5 - -# Format with ormolu -# CommitDate: Tue May 12 10:44:32 2020 +0200 -5e87a0fd32d5bdb2e82d90c5a76617ec46162404 - -# Add brittany check to CI -# CommitDate: Fri Nov 9 10:07:35 2018 -0400 -65dff911cea8103edf3e09bb779c0cf9d1561262 diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 03e5e1237f3..00000000000 --- a/.gitattributes +++ /dev/null @@ -1,7 +0,0 @@ -# GitHub Linguist annotations. -# Hide nix/.stack.nix/*.nix -# That is stuff that is generated by nix-tools stack-to-nix - -nix/.stack.nix/*.nix linguist-generated=true -.stack-to-nix.cache linguist-generated=true -nix/.stack-pkgs.nix linguist-generated=true diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 578b68457df..00000000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,18 +0,0 @@ -# Description - - - -# Checklist - -- [ ] Commit sequence broadly makes sense and commits have useful messages -- [ ] New tests are added if needed and existing tests are updated -- [ ] When applicable, versions are updated in `.cabal` and `CHANGELOG.md` files according to the - [versioning process](https://github.com/intersectmbo/cardano-ledger/blob/master/RELEASING.md#versioning-process). -- [ ] The version bounds in `.cabal` files for all affected packages are updated. **If you change the bounds in a cabal file, that package itself must have a version increase.** (See [RELEASING.md](https://github.com/intersectmbo/cardano-ledger/blob/master/RELEASING.md#versioning-process)) -- [ ] All visible changes are prepended to the latest section of a `CHANGELOG.md` for the affected packages. **New section is never added with the code changes.** (See [RELEASING.md](https://github.com/intersectmbo/cardano-ledger/blob/master/RELEASING.md#changelogmd)) -- [x] Code is formatted with [`fourmolu`](https://github.com/fourmolu/fourmolu) (use `scripts/fourmolize.sh`) -- [x] Cabal files are formatted (use `scripts/cabal-format.sh`) -- [x] [`hie.yaml`](https://github.com/intersectmbo/cardano-ledger/blob/master/hie.yaml) has been updated (use `scripts/gen-hie.sh`) -- [ ] Self-reviewed the diff diff --git a/.github/tools/extract_criterion.jq b/.github/tools/extract_criterion.jq deleted file mode 100644 index 4fa33c09669..00000000000 --- a/.github/tools/extract_criterion.jq +++ /dev/null @@ -1,3 +0,0 @@ -[.[2][] | -.reportName as $bench_name | -{ name: $bench_name, unit: "Nanoseconds", value: .reportAnalysis.anMean.estPoint, range: .reportAnalysis.anStdDev.estPoint }] diff --git a/.github/workflows/bench.yml b/.github/workflows/bench.yml deleted file mode 100644 index 7ceddc505c7..00000000000 --- a/.github/workflows/bench.yml +++ /dev/null @@ -1,46 +0,0 @@ -name: Ledger Benchmarks -on: - push: - branches: - - master - - nc/bench-tx - -permissions: - contents: write - deployments: write - -jobs: - benchmark: - name: cardano-ledger benchmarks - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: cachix/install-nix-action@v15 - with: - nix_path: nixpkgs=channel:nixos-unstable - extra_nix_config: | - trusted-public-keys = hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ= cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= - substituters = https://cache.iog.io https://cache.nixos.org/ - - name: Build benchmarks - run: nix build .#cardano-ledger-test:bench:bench - - name: Run benchmark - run: | - cd libs/cardano-ledger-test - ../../result/bin/bench "applyTxBenchmarks" --json bench.json - - name: Transform results - run: | - nix-env -i jq -f '' - jq -f .github/tools/extract_criterion.jq < libs/cardano-ledger-test/bench.json > output.json - - name: Store benchmark result - uses: benchmark-action/github-action-benchmark@v1 - with: - name: Haskell Benchmark - tool: 'customSmallerIsBetter' - output-file-path: output.json - github-token: ${{ secrets.GITHUB_TOKEN }} - auto-push: true - # Show alert with commit comment on detecting possible performance regression - alert-threshold: '200%' - comment-on-alert: true - fail-on-alert: true - alert-comment-cc-users: '@nc6' diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml deleted file mode 100644 index b9dc9254c55..00000000000 --- a/.github/workflows/gh-pages.yml +++ /dev/null @@ -1,83 +0,0 @@ -name: Haddocks to GitHub Pages - -on: - push: - branches: [ "master" ] - workflow_dispatch: - -jobs: - gh-pages: - runs-on: ubuntu-latest - permissions: - contents: write - - steps: - - uses: actions/checkout@v4 - - - name: Install Haskell - uses: input-output-hk/setup-haskell@v1 - id: setup-haskell - with: - ghc-version: "9.2.8" - cabal-version: latest - - - name: Install system dependencies - uses: input-output-hk/actions/base@latest - with: - use-sodium-vrf: false # default is true - - - name: Configure to use libsodium - run: | - cat >> cabal.project <CNAME - touch .nojekyll - git add CNAME .nojekyll - git commit -qm "Add CNAME and .nojekyll" - - # Preserve benchmark results, if any - git ls-remote origin --heads gh-pages | - while read -r _SHA REFNAME; do - git fetch origin "$REFNAME" - if git diff --name-only FETCH_HEAD -- dev | grep -q .; then - git checkout FETCH_HEAD dev - git commit -qC "$(git log -1 --format=%H FETCH_HEAD dev)" - fi - done - - # Add Haddocks - git add -A --force ./haddocks - git mv ./haddocks/* . - git commit -qm "Updated from ${GITHUB_SHA} via ${GITHUB_EVENT_NAME}" - - - name: Push to gh-pages - uses: ad-m/github-push-action@v0.8.0 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - branch: gh-pages - force: true - directory: . diff --git a/.github/workflows/haskell.yml b/.github/workflows/haskell.yml deleted file mode 100644 index 04980d61bb0..00000000000 --- a/.github/workflows/haskell.yml +++ /dev/null @@ -1,234 +0,0 @@ -name: Haskell CI -# If it's a scheduled (for us: nightly) build, set the name of this run to a static value, so we can identify it easier. -# Otherwise, replicate the default run name: either the PR title if it exists, or the commit message otherwise. -run-name: | - ${{github.event_name == 'schedule' && 'Haskell CI - NIGHTLY' - || github.event.pull_request.title == '' && github.event.head_commit.message - || github.event.pull_request.title}} - -on: - push: - branches: [ "master", "release/**" ] - pull_request: - branches: [ "**" ] - schedule: - # "Nightly" builds: Every day at 06:00 UTC - - cron: '0 6 * * *' - # for running the workflow manually - useful for branches without PRs, for which jobs don't get ran automatically - workflow_dispatch: - inputs: - nightly: - description: Run with the same settings as a nightly build - type: boolean - default: false - -# Cancel running actions when a new action on the same PR is started -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true - -jobs: - build: - runs-on: ${{ matrix.os }} - - env: - # Modify this value to "invalidate" the cabal cache. - CABAL_CACHE_VERSION: "2023-07-17" - - # current ref from: 27.02.2022 - SECP256K1_REF: ac83be33d0956faf6b7f61a60ab524ef7d6a473a - - SECP_CACHE_VERSION: "2022-12-30" - - defaults: - run: - shell: bash - - strategy: - fail-fast: false - matrix: - ghc: ["8.10.7", "9.2.8", "9.6.4", "9.8.2"] - os: [ubuntu-latest] - - steps: - - uses: actions/checkout@v4 - - - name: Set NIGHTLY environment variable if the job was triggered by the scheduler - if: "${{ github.event_name == 'schedule' - || contains(github.event.pull_request.title, 'nightly') - || github.event_name == 'workflow_dispatch' && github.event.inputs.nightly }}" - run: | - echo "NIGHTLY=true" >> $GITHUB_ENV - - - name: Set up Ruby 2.7 - uses: ruby/setup-ruby@v1 - with: - ruby-version: 2.7 - - - name: Install cbor-diag and cddl - run: | - gem install cddl -v 0.10.3 - gem install cbor-diag - - - name: Install Haskell - uses: input-output-hk/setup-haskell@v1 - id: setup-haskell - with: - ghc-version: ${{ matrix.ghc }} - cabal-version: latest - - - name: Install system dependencies - uses: input-output-hk/actions/base@latest - with: - use-sodium-vrf: false # default is true - - - name: Configure to use libsodium - run: | - cat >> cabal.project <> $GITHUB_PATH - - - name: Run fourmolu - run: ./scripts/fourmolize.sh - - cabal-format: - runs-on: ubuntu-latest - - defaults: - run: - shell: bash - - strategy: - fail-fast: false - - steps: - - uses: actions/checkout@v4 - - name: Format all cabal files - run: ./scripts/cabal-format.sh - - gen-hie: - runs-on: ubuntu-latest - - defaults: - run: - shell: bash - - strategy: - fail-fast: false - - steps: - - name: Cache implicit-hie executable (gen-hie) - id: cache-gen-hie - uses: actions/cache@v4 - with: - path: | - ~/.cabal/bin/gen-hie - key: ${{ runner.os }}-cache-gen-hie - - - name: Install gen-hie if not cached - if: steps.cache-gen-hie.outputs.cache-hit != 'true' - run: cabal update && cabal install implicit-hie --install-method=copy --overwrite-policy=always - - - name: Add cabal-bin to PATH - run: echo "$HOME/.cabal/bin" >> $GITHUB_PATH - - - uses: actions/checkout@v4 - - - name: Regenerate hie.yaml and confirm that it is in sync - run: ./scripts/gen-hie.sh - - notify-nightly-failure: - name: Send a slack notification on \#ledger-internal if the nightly build failed - runs-on: ubuntu-latest - needs: - - build - if: always() && github.event_name == 'schedule' && needs.build.result == 'failure' - steps: - - name: Send slack notification - id: slack - uses: slackapi/slack-github-action@v1.24.0 - with: - payload: | - { - "blocks": [ - { - "type": "section", - "text": { - "type": "mrkdwn", - "text": "Nightly Github Actions build failed: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" - } - } - ] - } - env: - SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} - SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK diff --git a/.github/workflows/push-specs.yml b/.github/workflows/push-specs.yml deleted file mode 100644 index 68374484091..00000000000 --- a/.github/workflows/push-specs.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: Push Specs - -on: - push: - tags: - - 'cardano-ledger-spec-[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]' - -jobs: - push-docs: - runs-on: ubuntu-latest - permissions: - contents: write - - steps: - - uses: actions/checkout@v3 - - uses: cachix/install-nix-action@v18 - with: - nix_path: nixpkgs=channel:nixos-unstable - extra_nix_config: | - trusted-public-keys = hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ= cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= - substituters = https://cache.iog.io https://cache.nixos.org/ - - name: Build specs - run: nix build .#specs -o output/spec - - name: Collect dereferenced docs - run: | - mkdir -p deref - for d in output/* ; do - dr="$(basename $d)"; - cp -L $d/*.pdf deref; - done - - name: Create specs release - uses: ncipollo/release-action@v1 - with: - artifacts: "deref/*" diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 29d80c16b02..00000000000 --- a/.gitignore +++ /dev/null @@ -1,69 +0,0 @@ -## Ignore LaTeX build products -**/*.aux -**/*.lof -**/*.log -**/*.lot -**/*.fls -**/*.out -**/*.toc -**/*.fmt -**/*.fot -**/*.cb -**/*.cb2 -**/*.lb -**/*.pdf -**/*.fdb_latexmk -**/auto -**/*.synctex.gz - -## Bibliography auxiliary files (bibtex/biblatex/biber): -**/*.bbl -**/*.bcf -**/*.blg -**/*-blx.aux -**/*-blx.bib -**/*.run.xml - -## Cabal & Stack -.stack-work*/ -.stack-work-local/ -*/dist -*~ -dist-newstyle/ -cabal.project.local -stack.yaml.lock -.ghc.environment.* -ghcid.txt - -## Editors -TAGS -tags -*.temp -.dir-locals.el - -## Emacs auto-generated Emacs-lisp code -auto/ - -## Nix artifacts -specs/**/result* -result* -specs/**/.ghc.environment.x86_64-linux-* -.stack-to-nix.cache - -*.pdf -.envrc -.direnv - -## macOS -.DS_Store - -## python for generating the doc site's transitive dependencies -.venv - -## ignore profiling output -**/*.eventlog -**/*.eventlog.json -**/*.prof - -## Misc -.pre-commit-config.yaml diff --git a/.readthedocs.yml b/.readthedocs.yml deleted file mode 100644 index 3e7de8b1b91..00000000000 --- a/.readthedocs.yml +++ /dev/null @@ -1,16 +0,0 @@ - -version: 2 - -build: - os: ubuntu-22.04 - tools: - python: "3.12" - - -sphinx: - configuration: doc/conf.py - -# Optionally set the version of Python and requirements required to build your docs -python: - install: - - requirements: doc/requirements.txt diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index c76b6029176..00000000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,747 +0,0 @@ -# Changelog - -This changelog contains notable changes that made into each [`cardano-node` release](https://github.com/input-output-hk/cardano-node/releases), -starting with version `8.0`. We also provide per-Haskell-package changelogs. Please see -the `CHANGELOG.md` for each individual package for any changes relevant for developers. - -If you are looking for the Ledger Releasing and Versioning Process then you can find it in -[RELEASING.md](https://github.com/intersectmbo/cardano-ledger/blob/master/RELEASING.md#changelogmd). - -## 8.10 - -- Retention of Anchor for proposal procedures in the ledger state in order for users to be able to query the node for those anchors -- The minimum fee calculation has been updated to take into consideration a new protocol parameter controlling the contribution of reference scripts sizes -- Redeemers serialization improvement: encode redeemers as a Map, instead of a list for Conway -- Support for intra-era hardfork initiation and necessary updates to the SPO stake distribution calculation. -- Fail translation when Conway features are present in transactions that use Plutus v1/v2 -- New Conway predicate failure: `ConwayUtxosPredFailure` (to decouple Conway from `PPUP` dependency) -- Remove `small-steps-test` package and convert it into a sublibrary of `small-steps` -- Support for injecting transition configuration data in `NewEpochState`, to decouple this concern from Consensus -- Query-related changes: - - Era-specific queries: Conway functionality supported only starting with Conway era - - Change committee query to return non-optional `CommitteeMembersState` - - Add optional `Anchor` to resigned status in `CommitteeMembersState` - -- Important bug fixes: - - Use the correct stake pool distribution for voting (instead of one that is an epoch too old) - - Fix DRep stake distribution to correctly add rewards to deleged stake - - JSON serialization of rational numbers in protocol parameters and governance procedures are encoded without loss of precision - (`BoundedRatio` and `Prices`) - - JSON serialization fix for `ConwayGovState` - - Fixed the intermittent failure of Github page containing haddock documentation - -## 8.8 - -- Full PlutusV3 support -- Support for governance policy script -- Remove the library `cardano-ledger-pretty` -- Ensure all sets are prefixed with tag 258 in CBOR serialization -- Added DRep injections into the ledger state, thus allowing more complex testing and - benchmarking of Conway features -- Addition of new ledger events -- Increasing the limit for Url in Anchors to 128 bytes -- Provide accurate transaction fee estimation functionality for Haskell tools -- Important bug fixes: - - - missing `"protocolVersion"` field in JSON instance for Babbage and Conway protocol parameters - - requiring witnesses for DRep registration - - new committee governance action ratification was implemented incorrectly - - guard against invalid protocol versions in hard fork initiation proposals - - failures during updates of Plutus CostModels were not retained - - fixed the types for some protocol parameters in order to prevent values that are too large - - serialization and CDDL fixes for transaction witnesses in the Conway Era - -## 8.7 - -- Fix `PParamsUpdate` governance action ratification. Votes of DReps are now accounted for. -- Move CDDL specification files from test packages into libraries that actually implement each era. -- Add ability to retain Plutus logs for debugging when running scripts -- Adition of `ConwayGovEvent` -- Enforce no duplicates for submitted ProposalProcedures -- Fix deserialization of `CostModels` in the `PParamsUpdate`. Invalid `CostModels` are no longer allowed, only `CostModels` for unrecognized Plutus versions are allowed starting with Conway -- Improve deposit and refund calculation logic -- Fix deserialization of `ValueNotConservedUTxO` predicate failure that could not - previously report zero ADA. - -## 8.6 - -- Prevent updating protocol version with PParamUpdate -- Slight performance improvements to native script handling: - - Remove redundant script hash verification. - - Short circuit multisig and timelock verification for `RequireMOf` as soon as necessary number of scripts have been validated. -- Check that the previous governance action of a specific type is either the very last action that has been enacted or is already in the current proposals set. -- Replace `queryCommitteeState` with more powerful `queryCommitteeMembersState`, which returns more information about committee members and supports filters based on credentials and statuses. -- Repurpose `DRepPulser` to encapsulate the Snapshots needed to run the `EPOCH` and `RATIFY` Rules. This has fixed some problem related to snapshots and behaviour at the epoch boundary. -- Add an optional anchor to committee member resignation certificate -- Prevent delegation to non-registered pools - -## 8.5 - -- Prevent `DRep` expiry when there are no Governance Actions. -- Refreshing of expiry with votes and `UpdateTxCert` -- Disable ability to submit transactions with votes by Stake Pool Operators and - Constitutional Committee members on Governance Actions that they should not - be able to vote on. -- Add ability to supply initial Constitutional Committee and initial version of Constitution. -- Preserve order of submitted ProposalProcedures and account for their priority. -- Disallow empty fields in CBOR of Conway TxBody -- Add some sanity checks for `UpdateCommittee` proposals and change semantics of the - proposal from overwrite to modify the Committee -- Implement Constitutional Committee expiration, validation and modification -- Respect Constitutional Committee members votes and thresholds during ratification -- Whenever Constitutional Committee size goes below `CommitteeMinSize` parameter the whole - committee will vote `No` on all proposals. -- Restructure initial configuration in such a way that makes it possible for Conway era to - start without going through all previous eras, which is needed for testing and - benchmarking. -- Apply ADA treasury transfers after enactment of `TreasuryWithdrawals` proposals -- Enforce `currentTreasuryValue` field in the TxBody matches the actual Treasury amount, - whenver the field is supplied - -## 8.4 - -- `GovernanceProposals` functionality: - - Implement expiry - - Enforce the supplied deposit amount - - Enforce previous GovActionId is correct -- Enforce deposits and ensure refunds for `DRep`s. This affects transaction building functionality. -- Enforce thresholds for votes from PParams for Stake Pool Operators and DReps -- Delaying of ratification after `NoConfidence`, `HardForkInitiation`, `NewCommittee`, - `NewConstitution` actions have been enacted. - -## 8.3 - -- `DRep` functionality progress: - - Implement `DRep` voting and use actual `DRep` stake distribution for ratification - - Implement `DRep` expiry for stale DRep's - - Add `DRep` deposit tracking. - - Add `Anchor`s for `DRep`s -- Fix `ProposalProcedure` deposit tracking. -- Add ability to upgrade core types from one era to the next. -- Add `Script` capability to Constitutional Committee Hot and Cold credentials. -- Add `NetworkId` validation for `ProposalProcedure` and `TreasuryWithdrawals` -- Add `currentTreasuryValue` as a new field to Conway `TxBody` -- Voting thresholds have been added to `PParams` - -## 8.2 - -- Restructure certificate interface -- Conway related changes: - - Introduction of a `DRep` with the defaults that vote No and Abstain. - - Change `DCert` type to a `TxCert` type family and introduce new certificates - - Implement voting on `NewConstitution` by StakePools as the most basic example of voting. - - Implement query for getting `Constitution` hash from the ledger state. - - Change structure of Governance Procedures in the TxBody - - Fix `TICKF` rule, avoiding VRF verification and syncing issues - - Clear out TxOuts with zero value from the UTxO upon translation into Conway - -## 8.1 - -- Plutus V3 support, only available in the conway ledger era. -- `PState` is now parametric in era, not crypto. -- Adjust for new conway era certificates. -- Ledger `UMapCompact` is now `UMap` -- Ledger types with names involving `DState` are renamed to `CertState`. - -## 8.0 - -- The provenance for the reward calculation has been removed. The type signature to the API function `getRewardProvenance` has not changed, it just returns an empty provenance value. -- We have created a Ledger API, with the aim of providing a user-friendly interface to the ledger libraries. See [here](https://github.com/intersectmbo/cardano-ledger/tree/b00e28698d9c7fbbeda1c9cfdd1238d3bc4569cf/libs/cardano-ledger-api). -- The initial funds and staking in the Shelley genesis type (used only for testing) now use `ListMap` instead of `Map`. -- There is a new `calculatePoolDistr'` function which is similar to `calculatePoolDistr` but has a new filter argument to only include the stake pool ids (stake pool key hashes) that are needed. -- The ledger events are not guaranteed to appear in any given order within a block. For this reason, motivated by the use case in db-sync, the `TotalDeposits` event now includes a transaction ID and emits the change in deposits instead of the value. -- We changed the way deposits are tracked. See [here](https://github.com/intersectmbo/cardano-ledger/blob/b00e28698d9c7fbbeda1c9cfdd1238d3bc4569cf/docs/adr/2022-12-05_003-track-individual-deposits.md) for the details. -- We changed the API function Cardano.Ledger.Shelley.API.Wallet(`evaluateTransactionBalance`) to take `DPState` as input. This can no longer be computed without the `DPState` -- Some noticeable changes have been made which will only become apparent starting at major protocol version 9: - - There is a new ledger era, namely `conway`. - - We now have the ability to more easily change serializations when the major protocol version changes. Though this change is not immediately visible to the node, it enables visible changes in the future. See [CIP-80](https://github.com/cardano-foundation/CIPs/tree/master/CIP-0080) For the deprecation cycle. - - Pointer addresses will no longer accrue rewards starting with version 9. - - We fixed the incorrect conversion of the validity interval's upper bound in `transVITime`. - - Starting in version 9, duplicate keys in CBOR maps and sets are no longer allowed. - - Starting in version 9, `CostModel`s can now be deserialized from any map of Word8 values to lists of integers. Only valid cost models are actually converted to evaluation contexts that can be used. Errors and unrecognized language versions are stored in the `CostModel` type so that: - - They can accept cost models that they do not yet understand. - - Upon deserializing after a software update, new cost models are available from the prior serialization. - -# Deprecated changlog - -Below was the last `cardano-ledger` repository branch based release and we now have fully -switched to [CHaPs](https://github.com/input-output-hk/cardano-haskell-packages). - -## Release tag `ledger/1.2.0` - -Changes recorded below are for all of the package versions in the list: - - * `small-steps-1.0.0.0` - * `small-steps-test-1.0.0.0` - * `vector-map-1.0.0.0` - * `cardano-data-1.0.0.0` - * `set-algebra-1.0.0.0` - * `cardano-ledger-binary-1.0.0.0` - * `cardano-ledger-core-1.0.0.0` - * `cardano-protocol-tpraos-1.0.0.0` - * `cardano-ledger-api-1.0.0.0` - * `cardano-ledger-pretty-1.0.0.0` - * `cardano-ledger-shelley-1.0.0.0` - * `cardano-ledger-allegra-1.0.0.0` - * `cardano-ledger-mary-1.0.0.0` - * `cardano-ledger-alonzo-1.0.0.0` - * `cardano-ledger-babbage-1.0.0.0` - * `cardano-ledger-conway-1.0.0.0` - * `cardano-ledger-shelley-ma-1.0.0.0` - * `cardano-ledger-alonzo-test-1.0.0.0` - * `cardano-ledger-babbage-test-1.0.0.0` - * `cardano-ledger-conway-test-1.0.0.0` - * `cardano-ledger-shelley-ma-test-1.0.0.0` - * `cardano-ledger-shelley-test-1.0.0.0` - -### Added - -- Addition of `encodeWithOrigin` and `decodeWithOrigin`. #3297 -- Change `mkVersion` to accept any `Integral`. Add `getVersion` function. #3297 -- Added type classes: `EraPParams`, `AlonzoEraPParams` and `BabbageEraPParams` with lenses - that can access and manipulate both `PParams` and `ParamsUpdate`. #3242 -- Added types `CoinPerWord` and `CoinPerByte` to prevent mixing up the two: #3242 -- Add `fromShelleyPParams` to `CanStartFromGenesis`: #3224 -- Add `setMinFeeTx` to `Cardano.Ledger.Api.Tx`: #3201 -- Add ToExpr (from tree-diff) instances for all types inside NewEpochState - - Add module Cardano.Ledger.TreeDiff in cardano-binary. Includes all needed operations, classes, and orphan instances -- Add deposits (key deposits) to DState{dsDeposits} and (pool deposits) PState{psDeposits} - - Added property tests that test the new invariants that must hold - - utxosDeposits == sum (dsDeposited) + sum (psDeposited) - - dom rewards == dom dsDeposited -- Add functions that computed deposits, obligation, and refunds that take DPState as input -- Add `PlutusDebug` to `TransactionScriptFailure.ValidationFailedV{1|2}`: #3135 - - Also add a harmless dummy `Show` instance for `PlutusDebug` with a constant `"PlutusDebug Omitted"` -- Create a `cardano-ledger-binary` package that does versioned serialization as a - replacement for `cardano-binary` package: #3063, #3078 -- Switch to `cardano-ledger-binary` package throughout the ledger codebase: #3138 -- Created `translateEraThroughCBOR`: #3138 -- Start on the `cardano-ledger-api` package and implement - `setMinCoinTxOut`+`setMinCoinSizedTxOut`: #2995 -- Added `getMinCoinTxOut`/`getMinCoinSizedTxOut` to `EraTxOut`: #3008 -- Added `getMinFeeTx` to `EraTx` -- Added `datumTxOutF` to `AlonzoEraTxOut` -- Added `allInputsTxBodyF` -- Added `EraUTxO` class with `getConsumedValue` -- Added type synonyms for eras: `Shelley`, `Allegra`, `Mary`, `Alonzo`, `Babbage` and `Conway`. -- Added `Twiddle` class to test alternative serializations: #2994 -- Added `getScriptsNeeded` and `getScriptsHashesNeeded` to `EraUTxO` class: #3019 -- Added `evaluateTransactionExecutionUnitsWithLogs` to `Alonzo`: #3111 -- Added `mkAlonzoTxAuxData` and `getAlonzoTxAuxDataScripts` that help to recover previous - behavior of `AlonzoTxAuxData` #3165 and #3166 -- Addition of `Memoized` type class and helper functions that utilize this new - abstraction: `mkMemoized`, `getMemoSafeHash`, `getMemoRawType`, `zipMemoRawType`, - `getMemoRawBytes` and `lensMemoRawType` #3165 -- Added upper protocol version bounds to `updateTxBodyL` and `certsTxBodyL` and - removed the corresponding fields from the Conway transaction body #3176 -- Added `ConwayEraTxBody` class with new lenses #3176 -- Added `ConwayDCert` data type which is similar to `DCert` but does not have - MIR certificates #3176 -- Added CDDL files for Conway era #3176 -- Added `Vote`, `VoterRole`, `VoteDecision`, `GovernanceActionInfo` and - `GovernanceAction` data types #3176 -- Added `ctbrVotes` and `ctbrGovActions` fields to `ConwayTxBodyRaw` and - corresponding fields to `ConwayTxBody` #3176 -- Added `ToCBOR` and `FromCBOR` instances to `ConwayTxBody` and all its - constituent data types #3176 -- Added `ConwayUTXOS` rule #3176 -- Added `PPUPPredFailurePV` type family and `PPUPPredFailure` type synonym #3216 -- Added `EraGovernance` type class with `GovernanceState` type family and implemented it - for each era #3279 -- Added `updateTxBodyG` getter to EraTxBody #3216 -- Added new rules to the Conway era: #3216 - - `TALLY` (new) - - `ENACTMENT` (new) - - `NEWEPOCH` - - `EPOCH` - - `LEDGER` -- Added `ConwayTallyState` #3216 -- Added `ConwayEpochEvent` #3216 -- Added `ConwayLedgerPredFailure` #3216 -- Added `ConwayNewEpochPredFailure` #3216 -- Added `ConwayNewEpochEvent` #3216 -- Added new governance related data types to Conway: #3216 - - `GovernanceActionState` - - `GovernanceProcedure` - - `TallyEnv` - -### Changed - -- Renamed `GenesisDelegCert` to `ConstitutionalDelegCert`: #3176 -- Fix `ToCBOR`/`FromCBOR` insatance for `PParams Babbage` and `PParams Alonzo`: #3297 and #3288 -- Disallow decoding a 0-value `MultiAsset` in the de-serialization. #3241 -- Move `Wdrl` to `Core`. Also rename it to `Withdrawals`, while switching `Test.Cardano.Ledger.Generic.Fields.Withdrawals` to `Withdrawals'` #3239 -- Moved `PreviousEra` into `Era` type class. Added `Era` instance for a new data type - `ByronEra`. -- Renamed record fields for all `PParams` types. Too many to list, but follows the same - convention, eg. `AlonzoPParams._maxTxSize` -> `AlonzoPParams.appMaxTxSize` -- Renamed `AlonzoGenesis` fields #3242: - - `coinsPerUTxOWord` -> `agCoinsPerUTxOWord` - - `costmdls` -> `agCostModels` - - `prices` -> `agPrices` - - `maxTxExUnits` -> `agMaxTxExUnits` - - `maxBlockExUnits` -> `agMaxBlockExUnits` - - `maxValSize` -> `agMaxValSize` - - `collateralPercentage` -> `agCollateralPercentage` - - `maxCollateralInputs` -> `agMaxCollateralInputs` -- Split `Cardano.Ledger.Alonzo.Data` module into `Cardano.Ledger.Alonzo.Scripts.Data` and `Cardano.Ledeger.Alonzo.TxAuxData`: #3229 -- Changed `ConwayGenesis`, by adding `AlonzoGenesis` to it: #3224 -- Switch parameterization of `ShelleyGenesis` on crypto, i.e. `ShelleyGenesis era` -> `ShelleyGenesis c`: #3224 -- Moved `KeyPair` type and related functions to a new `KeyPair` module in `cardano-ledger-core:testlib` #3210 -- Changed the representaion of key deposits. Deleted the field dsDeposits. Moved it to the UMap. Added some new functions to UMapCompact module to accomodate changes. -- Replace `NominalDiffTime` with a `newtype` wrapper `NominalDiffTimeMicro`. Remove use of `NominalDiffTime`, as we don't use its full precision. #3208 -- Switched `PlutusDebug` to use a `GADT` with `singletons` for better type-safety. #3167 - - Made `Plutus` imports uniform. -- Removed the module `Test.Cardano.Ledger.Generic.Types`. Functionality moved to `Test.Cardano.Ledger.Generic.Functions` -- Renamed module `Cardano.Ledger.Shelley.Metadata` -> `Cardano.Ledger.Shelley.TxAuxData` #3205 -- Updated `Conway` low protocol version to 9 and `Babbage` high protocol version to 8: #3174 -- Fixed mismathed parenthesis in the `Show` instance for `Ptr`: #3184. -- Moved Cardano.Ledger.Shelley.LedgerState(DPState) to Cardano.Ledger(DPState) in Core - - Since the old file was hidden, this will have no noticeable effects. -- Changed the API function Cardano.Ledger.Shelley.API.Wallet(evaluateTransactionBalance) to take DPState as input. This can no lnger be computed without the DPState -- Changed UtxoEnv by replacing pool info (Map (KeyHash 'StakePool c) (PoolParams c)) with DPState - to show differences in two NewEpochState's. -- Split `cardano-ledger-shelley-ma` into `cardano-ledger-allegra` and `cardano-ledger-mary` #3175: - - Moved `ShelleyMA.AuxiliaryData` -> `Allegra.TxAuxData` - - Moved `ShelleyMA.Timelocks` -> `Allegra.Scripts` - - `ShelleyMA.TxBody.MATxBody` was split into `Allegra.AllegraTxBody` and `Mary.MaryTxBody`. pattern record fields were renamed correspondingly - - `inputs` to `atbInputs` and `mtbInputs` - - `outputs` to `atbOutputs` and `mtbOutputs` - - `certs` to `atbCerts` and `mtbCerts` - - `wdrls` to `atbWdrls` and `mtbWdrls` - - `txfee` to `atbTxFee` and `mtbTxFee` - - `vldt` to `atbValidityInterval` and `mtbValidityInterval` - - `update` to `atbUpdate` and `mtbUpdate` - - `adHash` to `atbAuxDataHash` and `mtbAuxDataHash` - - `mint` to `mtbMint` -- Changed structure and field names of `Cardano.Ledger.Alonzo.Data.AlonzoTxAuxData` #3165: - - Renamed `AlonzoTxAuxData.txMD` to `AlonzoTxAuxData.atadMetadata`: - - Removed `AlonzoTxAuxData.scripts` in favor of two new fields `atadTimelock` and - `atadPlutus`. This was needed due to #3166 -- Changed instance for `TranslationContext (ShelleyEra c)` to a data type that can be used to - translate from Byron to Shelley: #3164 -- Changed major version in `ProtVer` to use new type `Version` instead of `Natural`: #3138 -- Renamed records fields in `Cardano.Ledger` to names without `_` (underscores) #3126 - - `Alonzo.TxBody.AlonzoTxBody` pattern synonym - - `inputs` to `atbInputs` - - `collateral` to `atbCollateral` - - `outputs` to `atbOutputs` - - `txcerts` to `atbCerts` - - `txwdrls` to `atbWdrls` - - `txfee` to `atbTxFee` - - `txvldt` to `atbValidityInterval` - - `txUpdates` to `atbUpdate` - - `reqSignerHashes` to `atbReqSignerHashes` - - `mint` to `atbMint` - - `scriptIntegrityHash` to `atbScriptIntegrityHash` - - `adHash` to `atbAuxDataHash` - - `txnetworkid` to `atbTxNetworkId` - - `Babbage.TxBody.BabbageTxBody` pattern synonym - - `inputs` to `btbInputs` - - `collateral` to `btbCollateral` - - `referenceInputs` to `btbReferenceInputs` - - `outputs` to `btbOutputs` - - `collateralReturn` to `btbCollateralReturn` - - `totalCollateral` to `btbTotalCollateral` - - `txcerts` to `btbCerts` - - `txwdrls` to `btbWdrls` - - `txfee` to `btbTxFee` - - `txvldt` to `btbValidityInterval` - - `txUpdates` to `btbUpdate` - - `reqSignerHashes` to `btbReqSignerHashes` - - `mint` to `btbMint` - - `scriptIntegrityHash` to `btbScriptIntegrityHash` - - `adHash` to `btbAuxDataHash` - - `txnetworkid` to `btbrTxNetworkId` - - `Shelley.TxBody.TxBodyRaw` to `Shelley.TxBody.ShelleyTxBodyRaw` - - `inputsX` to `stbrInputs` - - `outputsX` to `stbrOutputs` - - `certsX` to `stbrCerts` - - `wdrlsX` to `stbrWdrls` - - `txfeeX` to `stbrTxFee` - - `ttlX` to `stbrTTL` - - `txUpdateX` to `stbrUpdate` - - `mdHashX` to `stbrMDHash` - - `Shelley.TxBody.ShelleyTxBody` pattern synonym - - `_inputs` to `stbInputs` - - `_outputs` to `stbOutputs` - - `_certs` to `stbCerts` - - `_wdrls` to `stbWdrls` - - `_txfee` to `stbTxFee` - - `_ttl` to `stbTTL` - - `_txUpdate` to `stbUpdate` - - `_mdHash` to `stbMDHash` - - Renamed records fields in `Cardano.Ledger` to names without `_` (underscores) #3118 - - `Shelley.LedgerState.Types.AccountState` - - `_treasury -> asTreasury` - - `_reserves -> asReserves` - - `PoolParams.PoolParams` - - `_poolId -> ppId` - - `_poolVrf -> ppVrf` - - `_poolPledge -> ppPledge` - - `_poolCost -> ppCost` - - `_poolMargin -> ppMargin` - - `_poolRAcnt -> ppRewardAcnt` - - `_poolOwners -> ppOwners` - - `_poolRelays -> ppRelays` - - `_poolMD -> ppMetadata` - - `PoolParams.PoolMetadata` - - `_poolMDUrl -> pmUrl` - - `_poolMDHash -> pmHash` -- Renamed records fields in `Cardano.Ledger` to names without `_` (underscores) #3120 - - `Shelley.Delegation.Certificates` - - `_delegator` to `dDelegator` - - `_delegatee` to `dDelegatee` - - `EpochBoundary.SnapShot` - - `_stake` to `ssStake` - - `_delegations` to `ssDelegations` - - `_poolParams` to `ssPoolParams` - - `EpochBoundary.SnapShots` - - `_pstakeMark` to `ssStakeMark` - - `_pstakeSet` to `ssStakeSet` - - `_pstakeGo` to `ssStakeGo` - - `_feeSS` to `ssFee` -- Renamed records fields in `Cardano.Ledger.Shelley.LedgerState.DPState` to names without `_` (underscores) #3116 - - `DState` - - `_unified -> dsUnified` - - `_fGenDelegs -> dsFutureGenDelegs` - - `_genDelegs -> dsGenDelegs` - - `_irwd -> dsIRewards` - - `PState` - - `_pParams -> psStakePoolParams` - - `_fPParams -> psFutureStakePoolParams` - - `_retiring -> psRetiring` -- Renamed `Cardano.Ledger.Shelley.LedgerState.Types.UTxOState` fields to names without `_` (underscores) #3108 - - `_utxo -> utxosUtxo` - - `_deposited -> utxosDeposited` - - `_fees -> utxosFees` - - `_ppups -> utxosPpups` - - `_stakeDistro -> utxosStakeDistr` (notice the lacking `o` at the end) -- Moved Cardano.Ledger.Shelley.Orphans to Cardano.Ledger.Orphans in the core modules -- Moved Cardano.Ledger.Shelley.PoolParms to Cardano.Ledger.PoolParams in the core modules -- Moved Cardano.Ledger.Shelley.EpochBoundary to Cardano.Ledger.EpochBoundary in the core modules -- Added deprecated modules that import the moved ones and export their contents -- Moved `Data.AbstractSize` from `cardano-data` to `byron-spec-ledger` #3046 -- Renamed in `Cardano.Ledger.Mary.Value`: #3047 - - `insert` to `insertMultiAsset` - - `lookup` to `lookupMultiAsset` -- Changed `mint` field type to `MultiAsset (Crypto era)` in `MATxBody`, `AlonzoTxBody`, `BabbageTxBody` - #2954 -- All Shelley rules are now available through `Cadano.Ledger.Shelley.Rules` module: #2996 -- Renamed the `Crypto` dependent type in the `Era` class to `EraCrypto` #3009 -- Renamed in `Cardano.Ledger.Core` #2976: - - `EraWitnesses` to `EraTxWits` - - `Witnesses` to `EraTxWits` - - `mkBasicWitnesses` to `mkBasicTxWits` - - `addrWitsL` to `addrTxWitsL` - - `bootAddrWitsL` to `bootAddrTxWitsL` - - `scriptWitsL` to `scriptTxWitsL` - -- Renamed in (new) module `Cardano.Ledger.Alonzo.TxWits` (renamed from `Cardano.Ledger.Alonzo.TxWitness`) #2976: - - `AlonzoEraWitnesses` to `AlonzoEraTxWits` - - `TxWitness` to `AlonzoTxWits` - - `addrAlonzoWitsL` to `addrAlonzoTxWitsL` - - `bootAddrAlonzoWitsL` to `bootAddrAlonzoTxWitsL` - - `scriptAlonzoWitsL` to `scriptAlonzoTxWitsL` - - `datsWitsL` to `datsTxWitsL` - - `datsAlonzoWitsL` to `datsAlonzoTxWitsL` - - `rdmrsWitsL` to `rdmrsTxWitsL` - - `rdmrsAlonzoWitsL` to `rdmrsAlonzoTxWitsL` - -- Renamed in (new) module `Cardano.Ledger.Shelley.TxWits` (extracted from `Cardano.Ledger.Shelley.Tx`) #2976: - - `ShelleyWitnesses` to `ShelleyTxWits` - - `addrShelleyWitsL` to `addrShelleyTxWitsL` - - `bootAddrShelleyWitsL` to `bootAddrShelleyTxWitsL` - - `scriptShelleyWitsL` to `scriptShelleyTxWitsL` -- Updated package metadata #3023 -- Moved `TxOut` to a separate module in each era #3024 -- Moved `mintedTxBodyF` into `ShelleyMAEraTxBody` class #3019 -- Moved thet `RewardType` and `Reward` types from the `Cardano.Ledger.Shelley.Reward` module in the - `cardano-ledger-shelley` package into a new module `Cardano.Ledger.Reward` - inside the `cardano-ledger-core` package. #3059 -- Added the tx hash to the `TotalDeposits` event and replaced the deposits by the deposits change #3212 -- Renamed the old `PPUPState` datatype to `ShelleyPPUPState` #3216 -- Removed some references to specific rules in constraints: #3216 - - Replaced `State (EraRule "PPUP" era)` with `PPUPState era` - - Replaced `PredicateFailure (EraRule "PPUP" era)` with `PPUPPredFailure era` - - Replaced `PredicateFailure (EraRule "UPEC" era)` with `UpecPredFailure era` -- Changed the type of the first field of `ShelleyBbodyState` to #3216 - `State (EraRule "LEDGERS" era)` -- Starting in version 9, CostModels can now be deserialized from any map of Word8 values to lists of integers. - Only valid cost models are actually converted to evaluation contexts that can be used. - Errors and unrecognized language versions are stored in the CostModels type so that: - - they can accept cost models that they do not yet understand - - upon deserializing after a software update, new cost models are available from the prior serialization. - #3283 - -### Removed - -- Removed `extendPP` and `retractPP` in favor of `EraPParams` type class functions - `upgradePParams`/`upgradePParamsUpdate` and `downgradePParams`/`downgradePParamsUpdate` - which can be used to change `PParams` from and to a previous era: #3224 -- Removed deprecated synonyms: `PParams`, `PParams'`, `PParamsUpdate`, `PParamsDelta`, - `Value`, `TxBody`, `TxOut` -- Removed `Cardano.Ledger.Babbage.Genesis` module, since now it is completely empty: #3224 -- `TranslateEra` instance for `ShelleyGenesis`: #3224 -- Deprecated `Cardano.Ledger.CompactAddress` module in favor of `Cardano.Ledger.Address`: #3218 -- Removed deprecated `Cardano.Ledger.Shelley.CompactAddr`: #3218 -- Removed depracted type synonyms: `ValidatedTx`, `TxOut`, `TxBody`, `TxSeq`, `Script`, - `Value`, `PParamDelta`. #3205 -- Removed unused `deserialiseAddrStakeRef` function from `Address` module: #3174 -- `MAClass` is gone: #3175 -- `ShelleyMAEra` type in favor of `AllegraEra` and `MaryEra`: #3175 -- `MATxBody` type in favor of `AllegraTxBody` and `MaryTxBody`: #3175 -- Deprecated `Cardano.Ledger.Serialization` in favor of `Cardano.Ledger.Binary` from - `cardano-ledger-binary`: #3138 -- Removed `Data.Coders` from `cardano-data` in favor of `Cardano.Ledger.Binary.Coders` from - `cardano-ledger-binary`: #3138 -- Removed `Data.Sharing` from `cardano-data` in favor of `Cardano.Ledger.Binary` from - `cardano-ledger-binary`: #3138 -- Removed `boundedRationalFromCBOR`/`boundedRationalToCBOR` as obsolete and invalid: #3138 -- Removed pattern synonym `Cardano.Ledger.ShelleyMA.TxBody.MATxBody.TxBody'` with fields #3126 - - `adHash'` - - `certs'` - - `inputs'` - - `mint'` - - `outputs'` - - `txfee'` - - `update'` - - `vldt'` - - `wdrls'` -- Deprecated the `validPlutusdata` function: #3006 -- Deprecated the misspelled `HasAlgorithm` type alias: #3007 -- Deprecated `CLI.evaluateMinLovelaceOutput` in favor of newly added - `EraTxOut.getMinCoinTxOut`/`EraTxOut.getMinCoinSizedTxOut` #3008 -- Deprecated `minfee` and `CLI.evaluateMinfee` in favor of new `EraTx.getMinFeeTx` -- Deprecated `ExtendedUTxO.getTxOutDatum` in favor of new `AlonzoEraTxOut.datumTxOutF` -- Removed `ExtendedUTxO.allOuts` and `ExtendedUTxO.allSizedOuts` in favor of - `BabbageEraTxBody.allInputsTxBodyF` -- Deprecated `consumed` and `evaluateConsumed` in favor of new `EraUTxO.getConsumedValue` -- Removed `CLI` class -- Deprecated `scriptsNeededFromBody` and `scriptsNeeded` in all eras in favor of new class - function `EraUTxO.getScriptsNeeded` #3019 -- Remove model test framework #3019 -- The `Cardano.Ledger.Alonzo.Scripts` module no longer re-exports the - `plutus-ledger-api`'s `assertWellFormedCostModelParams`. #3065 -- Removed unused `Data.BiMap` module from `cardano-data` #3089 -- Removed `getMultiSigBytes` as unused #3138 -- Removed `hashCostModel` as unused and invalid #3138 -- Removed `EncodeMint`/`DecodeMint` classes in favor of regular `ToCBOR`/`FromCBOR` #3172 - -### Fixed - -- Fixed typo in makeHashWithExplicitProxys phantom type (indexl to index). #3072 -- Fixed the incorrect conversion of the validity interval's upper bound in `transVITime` (fixes #3043). #3200 -- Enforce that the CostModel deserializers expect a specific length prior to version 9. -- Starting in version 9, duplicate keys in CBOR maps are not longer allowed - -## Release tag `ledger/1.1.0` - -### Added -- New `calculatePoolDistr'` function which is similar to `calculatePoolDistr` but has a new - filter argument to only include the stake pool ids (stake pool key hashes) that are needed. - #2957 -- New package `cardano-ledger-conway`, which defines new era: the `ConwayEra` -- Added `coinsPerUTxOByteToCoinsPerUTxOWord` helper function for Babbage - #2896 -- Core type classes: `EraSegWits`, `EraTx`, `EraTxBody`, `EraTxOut`, `EraPParams`, - `EraAuxiliaryData`, `EraTxWits`, `EraScript` -- Era specific type classes: `ShelleyEraTxBody`, `ShelleyMAEraTxBody`, - `AlonzoEraTxBody`, `AlonzoEraTxOut`, `AlonzoEraTx`, `BabbageEraTxBody`, `BabbageEraTxOut` -- Type class hierarchy: -``` -EraSegWits --> EraTx --> EraTxBody --> EraTxOut --> Era - \ `--> EraPParams --> Era - `--> EraTxWits --> EraScript --> Era - `--> EraAuxiliaryData --> Era -``` -- Shelley: -``` -ShelleyEraTxBody --> EraTxBody --> EraTxOut --> Era -``` -- ShelleyMA: -``` -ShelleyMAEraTxBody --> ShelleyEraTxBody --> EraTxBody --> EraTxOut --> Era -``` -- Alonzo: -``` -AlonzoEraTx --> EraTx --> ... - `--> AlonzoEraTxBody --> ShelleyMAEraTxBody --> ShelleyEraTxBody --> EraTxBody --> ... - `--> AlonzoEraTxOut -> ShelleyEraTxOut --> EraTxOut --> ... -``` -- Babbage: -``` -BabbageEraTxBody --> AlonzoEraTxBody --> .... - `--> BabbageEraTxOut -> AlonzoEraTxOut --> -``` -### Changed -- Introduced a new switch in `HardForks` that turns off pointer address resolution in `IncrementalStake` starting with version 9 -- Some types have been moved: - - The `WitVKey` type has been moved into its own module in core. - - The `HKD` type has been moved to `cardano-ledger-core`. - - The `PoolParams` type has been moved into its own module - - The `DCert` type and related functionality from `TxBody` to `Cardano.Ledger.Shelley.Delegation.Certificates`. - #2880 -- The initial funds and staking in the Shelley genesis type (used only for testing) now use `ListMap` instead of `Map`. - #2871, #2890, #2892, #2895 -- Renamed `SupportsSegWit` to `EraSegWits` -- Split `ValidateScript` into `EraScript` and `EraTx.validateScript` -- Renamed `ValidateAuxiliaryData` to `EraAuxiliaryData` while removing usage of FunDeps. -- Renamed in `Cardano.Ledger.Shelley`: - - `Tx` to `ShelleyTx` (kept type synonym with a deprecation message) - - `TxOut` to `ShelleyTxOut` (kept type synonym with a deprecation message) - - `TxBody` to `ShelleyTxBody` (kept type synonym with a deprecation message) - - `PParams` to `ShelleyPParams` (kept type synonym with a deprecation message) - - `PParamsUpdate` to `ShelleyPParamsUpdate` (kept type synonym with a deprecation message) - - `AuxiliaryData` to `ShelleyAuxiliaryData` (kept type synonym with a deprecation message) -- Renamed in `Cardano.Ledger.Mary`: - - Renamed `Value` to `MaryValue` (kept type synonym with a deprecation message) -- Renamed in `Cardano.Ledger.ShelleyMA`: - - `TxBody` to `MATxBody` (kept type synonym with a deprecation message) - - `AuxiliaryData` to `ShelleyAuxiliaryData` (kept type synonym with a deprecation message) -- Renamed in `Cardano.Ledger.Alonzo`: - - `ValidatedTx` to `AlonzoTx` (kept type synonym with a deprecation message) - - `TxOut` to `AlonzoTxOut` (kept type synonym with a deprecation message) - - `TxBody` to `AlonzoTxBody` (kept type synonym with a deprecation message) - - `Script` to `AlonzoScript` (kept type synonym with a deprecation message) - - `PParams` to `AlonzoPParams` (kept type synonym with a deprecation message) - - `PParamsUpdate` to `AlonzoPParamsUpdate` (kept type synonym with a deprecation message) - - `AuxiliaryData` to `AlonzoAuxiliaryData` (kept type synonym with a deprecation message) -- Renamed in `Cardano.Ledger.Babbage`: - - `TxOut` to `BabbageTxOut` (kept type synonym with a deprecation message) - - `TxBody` to `BabbageTxBody` (kept type synonym with a deprecation message) - - `PParams` to `BabbagePParams` (kept type synonym with a deprecation message) - - `PParamsUpdate` to `BabbagePParamsUpdate` (kept type synonym with a deprecation message) -- Renamed Rules: - - `BBODY` -> `ShelleyBBODY` - - `DELEG` -> `ShelleyDELEG` - - `DELEGS` -> `ShelleyDELEGS` - - `DELPL` -> `ShelleyDELPL` - - `EPOCH` -> `ShelleyEPOCH` - - `LEDGER` -> `ShelleyLEDGER` - - `LEDGERS` -> `ShelleyLEDGERS` - - `MIR` -> `ShelleyMIR` - - `NEWEPOCH` -> `ShelleyNEWEPOCH` - - `NEWPP` -> `ShelleyNEWPP` - - `POOL` -> `ShelleyPOOL` - - `POOLREAP` -> `ShelleyPOOLREAP` - - `PPUP` -> `ShelleyPPUP` - - `RUPD` -> `ShelleyRUPD` - - `SNAP` -> `ShelleySNAP` - - `TICK` -> `ShelleyTICK, ShelleyTICKF` - - `UPEC` -> `ShelleyUPEC` - - `UTXO` -> `ShelleyUTXO` - - `UTXOW` -> `ShelleyUTXOW` -- Renamed rules environments: - - `PPUPEnv -> PpupEnv` -- Renamed rules events: - - `BbodyEvent` -> `ShelleyBbodyEvent` - - `DelegEvent` -> `ShelleyDelegEvent` - - `DelegsEvent` -> `ShelleyDelegsEvent` - - `DelplEvent` -> `ShelleyDelplEvent` - - `EpochEvent` -> `ShelleyEpochEvent` - - `LedgerEvent` -> `ShelleyLedgerEvent` - - `LedgersEvent` -> `ShelleyLedgersEvent` - - `MirEvent` -> `ShelleyMirEvent` - - `NewEpochEvent` -> `ShelleyNewEpochEvent` - - `PoolreapEvent` -> `ShelleyPoolreapEvent` - - `TickEvent` -> `ShelleyTickEvent` - - `TickfEvent` -> `ShelleyTickfEvent` - - `UtxowEvent` -> `ShelleyUtxowEvent` -- Renamed predicate failure type names: - - `Cardano.Ledger.Shelley.Rules`: - - `BbodyPredicateFailure` -> `ShelleyBbodyPredFailure` - - `DelegPredicateFailure` -> `ShelleyDelegPredFailure` - - `DelegsPredicateFailure` -> `ShelleyDelegsPredFailure` - - `DelplPredicateFailure` -> `ShelleyDelplPredFailure` - - `EpochPredicateFailure` -> `ShelleyEpochPredFailure` - - `LedgerPredicateFailure` -> `ShelleyLedgerPredFailure` - - `LedgersPredicateFailure` -> `ShelleyLedgersPredFailure` - - `MirPredicateFailure` -> `ShelleyMirPredFailure` - - `NewEpochPredicateFailure` -> `ShelleyNewEpochPredFailure` - - `NewppPredicateFailure` -> `ShelleyNewppPredFailure` - - `LedgerPredicateFailure` -> `ShelleyLedgerPredFailure` - - `PoolPredicateFailure` -> `ShelleyPoolPredFailure` - - `PoolreapPredicateFailure` -> `ShelleyPoolreapPredFailure` - - `PpupPredicateFailure` -> `ShelleyPpupPredFailure` - - `RupdPredicateFailure` -> `ShelleyRupdPredFailure` - - `SnapPredicateFailure` -> `ShelleySnapPredFailure` - - `TickPredicateFailure` -> `ShelleyTickPredFailure` - - `TickfPredicateFailure` -> `ShelleyTickfPredFailure` - - `UpecPredicateFailure` -> `ShelleyUpecPredFailure` - - `UtxoPredicateFailure` -> `ShelleyUtxoPredFailure` - - `UtxowPredicateFailure` -> `ShelleyUtxowPredFailure` - - `Cardano.Ledger.ShelleyMA.Rules`: - - `UtxoPredicateFailure` -> `ShelleyMAUtxoPredFailure` - - `Cardano.Ledger.Alonzo.Rules`: - - `AlonzoBbodyPredFail` -> `AlonzoBbodyPredFailure` and constructor: - - `ShelleyInAlonzoPredFail` -> `ShelleyInAlonzoBbodyPredFailure` - - `UtxoPredicateFailure` -> `AlonzoUtxoPredFailure` - - `UtxosPredicateFailure` -> `AlonzoUtxosPredFailure` - - `UtxowPredicateFail` -> `AlonzoUtxowPredFailure` and constructor: - - `WrappedShelleyEraFailure` -> `ShelleyInAlonzoUtxowPredFailure` - - `Cardano.Ledger.Babbage.Rules`: - - `BabbageUtxoPred` -> `BabbageUtxoPredFailure` and constructor: - - `FromAlonzoUtxoFail` -> `AlonzoInBabbageUtxoPredFailure` - - `BabbageUtxowPred` -> `BabbageUtxowPredFailure` and constructor: - - `FromAlonzoUtxowFail` -> `AlonzoInBabbageUtxowPredFailure` -### Deprecated -- The provenance for the reward calculation has been removed. - The type signature to the API function `getRewardProvenance` has not change, - it just returns an empty provenance value. - The type signature will be changed once the corresponding query has been - deprecated in the ouroboros-network repository. - #2879 -- `getTxOutAddr txOut` in favor of `txOut ^. addrTxOutL` -- `getTxOutEitherAddr txOut` in favor of `txOut ^. addrEitherTxOutL` -- `getTxOutCompactAddr txOut` in favor of `txOut ^. compactAddrTxOutL` -- `getTxOutBootstrapAddress txOut` in favor of `txOut ^. bootAddrTxOutF` -- `getAllInputs txBody` in favor of ` txBody ^. allInputsTxBodyF` -- `getCoin txOut` in favor of `txOut ^. coinTxOutL` -### Removed -- The `StakeCreds` type was unused and is now removed. - #2880 -- The`Ord` instance for `MemoBytes` was removed. - #2881 -- `makeTxOut` in favor of `mkBasicTxOut` -- `HasField` instances for: `"inputs"`, `"outputs"`, `"txfee"`, - `"auxiliaryData"`, `"minted"`, `"wdrls"`, `"ttl"`, `"update"`, `"certs"`, - `"vldt"`, `"mint"`, `"collateral"`, `"reqSignerHashes"`, - `"scriptIntegrityHash"`, `"txnetworkid"`, `"sizedOutputs"`, - `"referenceInputs"`, `"totalCollateral"`, `"collateralReturn"`, - `"sizedCollateralReturn"`, `"body"`, `"wits"`, `"auxData"`, `"size"`, - `"isValid"`, `"addrWits"`, `"scriptWits"`, `"bootWits"`, `"txdatahash"`, - `"addr"`, `"bootAddr"`, `"script"`, `"dats"`, `"rdmrs"` -- `ValidateScript` in favor of `EraScript` and `EraTx` -- Type class synonyms: - - `Trans*` - - `Uses*`: `UsesPParams`, `UsesScript`, `UsesTxBody`, `UsesTxOut`, `UsesAuxiliaryData` - - `BlockAnn` - - `ChainData` - - `AnnotatedData` - - `SerialisableData` - - `WellFormed` - - `ConcreteAlonzo` - - `ConcreteBabbage` - - ... - -### Fixed - -- The error message for failed Plutus V2 scripts was being obscured by a bug which has now been fixed. - #2888 - -## Release tag `ledger/1.0.0` - -The first release branch in the cardano-ledger repository, -namely `release/1.0.0`, branches from the -cardano-ledger commit used for the 1.35.0 release of cardano-node release. - -### Fixed - -- Ensure Babbage TxOut decoder can't fail due to malformed Ptr. - This bug was manifesting in the cardano-node as: - if a node is running in the Babbage era and shuts down, when it comes back up it has to re-sync from genesis. - #2897 -- The Alonzo UTxO rule was previously using the incorrect minfee function (from Shelley). - It now uses the Alonze minfee function. - #2936 diff --git a/CODE-OF-CONDUCT.md b/CODE-OF-CONDUCT.md deleted file mode 100644 index e9f01485c31..00000000000 --- a/CODE-OF-CONDUCT.md +++ /dev/null @@ -1 +0,0 @@ -See the code of conduct in the [Cardano engineering handbook](https://github.com/input-output-hk/cardano-engineering-handbook/blob/main/CODE-OF-CONDUCT.md). diff --git a/CODEOWNERS b/CODEOWNERS deleted file mode 100644 index dc8a636cd87..00000000000 --- a/CODEOWNERS +++ /dev/null @@ -1,7 +0,0 @@ -# code owners are automatically assigned to review PRs - -# DevX -*.nix @input-output-hk/core-tech-devx @input-output-hk/core-tech-release -nix @input-output-hk/core-tech-devx @input-output-hk/core-tech-release -flake.lock @input-output-hk/core-tech-devx @input-output-hk/core-tech-release -.github @input-output-hk/core-tech-devx @input-output-hk/core-tech-release diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index 30271551c7c..00000000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,436 +0,0 @@ -# Contributing to the Cardano Ledger - -## Roles and responsibilities - -The -[@cardano-ledger](https://github.com/orgs/input-output-hk/teams/cardano-ledger) -group is responsible for -helping with reviewing and merging pull requests, adjudicating technical (or other) disputes, -releasing the ledger packages on [CHaP](https://github.com/input-output-hk/cardano-haskell-packages). - -@hamishmack can help with issues regarding this repository's continuous integration and nix infrastructure. - -**For security related issues** please consult the security file in the -[Cardano engineering handbook](https://github.com/input-output-hk/cardano-engineering-handbook/blob/main/SECURITY.md). - -## Development - -We use trunk based developement. Normal development will branch off of master and be -merged back to master. - -### Recommended `git` configuration - -Once you cloned the repository, it is recommended to run the following -from the repository's root: -```bash -git config blame.ignoreRevsFile .git-blame-ignore-revs -``` -This way `git blame` will ignore the commits specified in the `.git-blame-ignore-revs` -file. This can come in handy if you want to exclude large commits -with only formatting changes. -You can ignore the above however, if you tend to look at `git blame` -through GitHub. In that case, you don't have to do anything, -as GitHub will pick up `.git-blame-ignore-revs` automatically and ignore -the specified commits. - -If you want to add further revisions to the `ignore-revs` file, -just prepend the full commit hash that you want `git blame` to ignore -and add the commit's title and date as a comment for clarity. - -### Releasing and versioning - -See documentation on the adopted [release and versioning processes](./RELEASING.md) in ledger. - -### Releasing the ledger packages to CHaP - -Ledger packages are released to [CHaP](https://github.com/input-output-hk/cardano-haskell-packages). - -Also see the CHaP README for [instructions](https://github.com/input-output-hk/cardano-haskell-packages#-from-github). - -## Building - -See the [Readme](https://github.com/intersectmbo/cardano-ledger#building) for instructions on building. - -### GHC 9.2 transition - -We are transitioning to use GHC 9.2 rather than GHC 8.10. -We need to retain 8.10 compatibility until we are sure that the Cardano node can switch over to 9.2 without any problems. -At that point we can drop it. - -The main `nix develop` shell will now give you a GHC 9.2 compiler, but you can get a GHC 8.10 shell by calling -``` -nix develop .#ghc8107 -``` -(this pattern can also be used to test any supported GHC version) - -## Updating dependencies - -Our Haskell packages come from two package repositories: -- Hackage -- [CHaP](https://github.com/input-output-hk/cardano-haskell-packages) (which is essentially another Hackage) - -The "index state" of each repository is pinned to a particular time in `cabal.project`. -This tells Cabal to treat the repository "as if" it was the specified time, ensuring reproducibility. -If you want to use a package version from repository X which was added after the pinned index state time, you need to bump the index state for X. -This is not a big deal, since all it does is change what packages `cabal` considers to be available when doing solving, but it will change what package versions cabal picks for the plan, and so will likely result in significant recompilation, and potentially some breakage. -That typically just means that we need to fix the breakage (and add a lower-bound on the problematic package), or add an upper-bound on the problematic package. - -Note that `cabal` itself keeps track of what index states it knows about, so when you bump the pinned index state you may need call `cabal update` in order for `cabal` to be happy. - -The Nix code which builds our packages also cares about the index state. -This is represented by inputs managed by `nix flake`: -You can update these by running: -- `nix flake lock --update-input haskellNix/hackage` for Hackage -- `nix flake lock --update-input CHaP` for CHaP (Cardano Haskell Packages) - -If you fail to do this you may get an error like this from Nix: -``` -error: Unknown index-state 2021-08-08T00:00:00Z, the latest index-state I know about is 2021-08-06T00:00:00Z. You may need to update to a newer hackage.nix. -``` - -### Use of `source-repository-package`s - -We *can* use Cabal's `source-repository-package` mechanism to pull in un-released package versions. -However, we should try and avoid this. -In particular, we should not release our packages to CHaP while we depend on a `source-repository-package`. - -If we are stuck in a situation where we need a long-running fork of a package, we should release it to CHaP instead (see the [CHaP README](https://github.com/input-output-hk/cardano-haskell-packages) for more). - -If you do add a `source-repository-package`, you need to provide a `--sha256` comment in `cabal.project` so that Nix knows the hash of the content. - -## Warnings - -While building most compilation warnings will be turned into an error due to -`-Werror` flag. However during development it might be a bit inconvenient thus -can be disabled on per project basis: - -```shell -cabal configure --ghc-options="-Wwarn" -cabal build -``` - -## Publishing specifications -PDF specs are stored as attachments to [github releases](https://github.com/intersectmbo/cardano-ledger/releases) -We can create a release that builds and attaches the latest specs, by triggering the [push-docs github action](https://github.com/intersectmbo/cardano-ledger/blob/master/.github/workflows/push-specs.yml). -This github action can be triggered by pushing a tag of the pattern: `cardano-ledger-spec-YYYY-MM-DD`, for example: `cardano-ledger-spec-2023-01-17` - -For example, if we decide it's time to publish new versions of docs, -we can do the following to publish the PDFs under release `cardano-ledger-spec-2023-03-21`: -``` -git tag cardano-ledger-spec-2023-03-21 -git push origin cardano-ledger-spec-2023-03-21 -``` - -This will create a new release that will be available as [latest](https://github.com/intersectmbo/cardano-ledger/releases/latest). -Make sure that the `YYYY-MM-DD` part in the tag name is alphabetically greater than the rest, otherwise the release won't be tagged as `latest`. -Using the current date should ensure that this is the case. - -## Testing the Haskell programs - -The tests can be run with cabal. -For example the Shelley tests can be run with: - -```shell -cabal test cardano-ledger-shelley-test -``` - -**Note** that the tests in `cardano-ledger-shelley-test` require two Ruby gems, -[cbor-diag](https://rubygems.org/gems/cbor-diag) and -[cddl](https://rubygems.org/gems/cddl). - -It can be helpful to use the `--test-show-details=streaming` option for seeing -the output of the tests while they run: - -```shell -cabal test cardano-ledger-shelley-test --test-show-details=streaming -``` - -### Running Specific Tests - -The test suites use [Tasty](https://github.com/feuerbach/tasty), -which allows for running specific tests. -This is done by passing the `-p` flag to the test program, followed by an `awk` pattern. -You can alternatively use the `TASTY_PATTERN` environment variable with a pattern. -For example, the Shelley golden tests can be run with: - -```shell -cabal test cardano-ledger-shelley-test --test-options="-p golden" -``` - -or - -```shell -TASTY_PATTERN=golden cabal test cardano-ledger-shelley-test -``` - -`Tasty` allows for more -[complex patterns](https://github.com/feuerbach/tasty#patterns). -For instance, to run only the Byron update mechanism tests for the ledger -that classify traces, we can pass the -`-p $1 ~ /Ledger/ && $2 ~ /Update/ && $3 ~ /classified/` option. -Here each `$i` refers to a level in the tests names hierarchy. -Passing `-l` to `tasty` will list the available test names. - -When testing using `cabal`, pay special attention to escaping the right symbols, e.g.: - -```shell -cabal test byron-spec-ledger:test:byron-spec-ledger-test --test-options "-p \"\$1 ~ /Ledger/ && \$2 ~ /Update/ && \$3 ~ /classified/\"" -``` - -### Replaying QuickCheck Failures - -When a QuickCheck test fails, the seed which produced the failure is reported. -The failure can be replayed with: - -```shell -cabal test cardano-ledger-shelley-test --test-options "--quickcheck-replay=42" -``` -(where 42 is an example seed). - -### Test Scenarios - -Most of the test suites are grouped into test scenarios. -For example, the Shelley test suite contains -`ContinuousIntegration`, `Development`, `Nightly`, and `Fast`, -which can be run with the `--scenario` flag. For example: - -```shell -cabal test cardano-ledger-shelley-test --test-options --scenario=Fast -``` - -### Default and Nightly builds -Most test suites have two different sets of tests: default and "nightly" (which take longer to run). -The latter are being run when the environment variable NIGHTLY is set: - -```shell -NIGHTLY=true cabal test cardano-ledger-shelley-test -``` -### ghcid - -We have support for running -[ghcid](https://github.com/ndmitchell/ghcid) -from inside of `nix develop`. -Enter `nix develop` from the base directory of the repository, -change directories to the cabal package that you wish to check, -then run `ghcid`. - -For example: - -```shell -nix develop -cd eras/shelley/impl/ -ghcid -``` - -`ghcid` may complain of not being able to load multiple components at once for targets with multiple components. -In this case, just appending the `ghcid` command with the name of the component usually solves the problem. - -For example, under `cardano-ledger-binary`, running `ghcid` errors out with the following output: - -```shell -Error: cabal: Cannot open a repl for multiple components at once. The target '' refers to the package cardano-ledger-binary-0.1.0.0 which includes the libraries testlib and cardano-ledger-binary. -``` - -Specifying the component solves this problem: - -```shell -nix develop -cd libs/cardano-ledger-binary/ -ghcid testlib # or `ghcid cardano-ledger-binary` -``` - -## nix build Infrastructure - -The artifacts in this repository can be built and tested using nix. This is -additionally used by the Hydra CI to test building, including cross-compilation -for other systems. - -### To add a new Haskell package - -To add a new Haskell package, you should do the following: - -1. Create the project in the usual way. It should have an appropriate `.cabal` file. -2. Test that you can build your new project by running the following: `nix build - .#:lib:`. If you have executables, then - you may also try building these using the `.#:exe:` - attribute path. A good way to see what's available is to execute `:lf .` - in `nix repl`. This will allow you to explore the potential - attribute names by using tab completion on "packages.". - -### To add a new LaTeX specification - -To add a new LaTeX specification, the easiest way is to copy from one of the -existing specifications. You will want the `Makefile` and `default.nix` (say -from [the Shelley ledger spec](./eras/shelley/formal-spec)). - -1. Copy these files into the root of your new LaTeX specification. -2. Modify the `DOCNAME` in the `Makefile`. -3. Update `default.nix` to: - 1. Update the `buildInputs` to add in any LaTeX packages you need in your - document, and remove any unneeded ones. - 2. Alter the `meta` description field to reflect the nature of this document. -4. Add a link to the package near the bottom of [flake.nix](./flake.nix), - following the existing examples. - -### To update the conformance test - -To update the conformance test, do the following: - -1. Clone the [Agda specification repo](https://github.com/IntersectMBO/formal-ledger-specifications) -2. Run `nix-build -A ledger.hsSrc` in the cloned repo, take note of the output path - in the nix store -3. Clone the [executable spec repo](https://github.com/input-output-hk/cardano-ledger-executable-spec) -4. Replace the content of the repo cloned above with the files at `/nix/store//haskell/Ledger/*` - ```bash - rm -rf cardano-ledger-executable-spec/* - cp -r /nix/store//haskell/Ledger/* cardano-ledger-executable-spec - ``` - Then make a commit and push it. -5. In the `cardano-ledger` repo, edit `cabal.project`. Look for - `source-repository-package` that points to the executable spec repo, and - update the `tag` and `sha256` entries in that block. - -### Additional documentation - -You can find additional documentation on the nix infrastructure used in this -repo in the following places: - -- [The haskell.nix user guide](https://github.com/input-output-hk/haskell.nix/blob/documentation/docs/user-guide.md) -- [The nix-tools repository](https://github.com/input-output-hk/nix-tools) -- [The iohk-nix repository](https://github.com/input-output-hk/iohk-nix) - -Note that the user guide linked above is incomplete and does not correctly refer -to projects built using `iohk-nix`, as this one is. A certain amount of trial -and error may be required to make substantive changes! - -## Working Conventions - -### Code formatting - -We use [`fourmolu`](https://github.com/fourmolu/fourmolu) for formatting. -You can either use it via a [script](https://github.com/intersectmbo/cardano-ledger/blob/master/scripts/fourmolize.sh) or use `pre-commit`. -`pre-commit` is provided via a separate `devShell` which uses -the default shell as a base and adds `pre-commit` on top. -You can use it by calling `nix develop .#pre-commit`. -If you use `direnv` in some form, you can make this your default shell -by adding a flake parameter to `use flake` in your `.envrc`. I.e: -`use flake .#pre-commit`. - -When running `fourmolu` manually via the `fourmolize.sh` script, -you can instruct the script to run it only on changed files (compared to `origin/master`) -by providing the `--changes` flag. If you omit it, then `fourmolu` will format everything. - -### Compiler warnings - -The CI builds Haskell code with -Werror, so will fail if there are any compiler warnings. - -If the warnings are stupid, we can turn them off, e.g. sometimes it makes sense to add -Wno-orphans. - -### Commit messages - -Summarize changes in around 50 characters or less. - -Provide more detailed explanatory text, if necessary. -Wrap it to about 72 characters or so. -In some contexts, the first line is treated as the -subject of the commit and the rest of the text as the body. -The blank line separating the summary from the body is critical -(unless you omit the body entirely); -various tools like `log`, `shortlog` and `rebase` can get -confused if you run the two together. - -Explain the problem that this commit is solving, -and use one commit per conceptual change. -Focus on why you are making this change as opposed to how (the code explains that). -Are there side effects or other unintuitive consequences of this -change? Here's the place to explain them. - -Further paragraphs come after blank lines. - - - Bullet points are okay, too - - - Typically a hyphen or asterisk is used for the bullet, preceded - by a single space, with blank lines in between, but conventions - vary here - -If you use an issue tracker, put references to them at the bottom, -like this: - -Resolves: #123 -See also: #456, #789 - -### Commit signing - -Commits are required to be [signed](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits). - -### Pull Requests - -Keep commits to a single logical change where possible. -The reviewer will be happier, and you’ll be happier if you ever have to revert it. -If you can’t do this (say because you have a huge mess), best to just have one commit with everything in it. - -Keep your PRs to a single topic. -Including unrelated changes makes things harder for your reviewers, slowing them down, and makes it harder to integrate new changes. - -If you’re working on something that’s likely to conflict with someone else, talk to them. It’s not a race. - -## Performance - -### Memory - -The [ledger-state](https://github.com/intersectmbo/cardano-ledger/tree/master/libs/ledger-state) -tool is helpful for obverserving the memory overhead of the ledger state. - -### Profiling - -A good way to profile the ledger code is to use the -[db-analyser](https://github.com/input-output-hk/ouroboros-network/blob/master/ouroboros-consensus-cardano/tools/db-analyser/Documentation.md) -to replay block validation from mainnet. - -First, inside the ouroboros repository base directory, -open a nix shell with profiling enabled: -``` -~/ouroboros-network$ nix-shell --arg config "{ haskellNix.profiling = true; }" -``` - -Configure cabal to build everything with profiling enabled: -``` -cabal configure --enable-profiling --profiling-detail=all-functions -``` - -Now we need to run a node to build up the dataabase. -This can be done in the cardano-node repository by running: -``` -nix run .#mainnet/node -``` -This will take a very long time. -You can stop the node once it is past any slots that you care about. - -Change directories back to the ouroboros-network repository. -Download the [mainnet config files](https://hydra.iohk.io/job/Cardano/iohk-nix/cardano-deployment/latest-finished/download/1/index.html). - -Create a snapshot at the slot that you wish the profiling to start. We use 45288084 in this example: - -``` -cabal run db-analyser -- --db ~/io/cardano-node/state-node-mainnet/db-mainnet/ --minimum-block-validation cardano --configByron mainnet-byron-genesis.json --configShelley mainnet-shelley-genesis.json --nonce 1a3be38bcbb7911969283716ad7aa550250226b76a61fc51cc9a9a35d9276d81 --configAlonzo mainnet-alonzo-genesis.json --only-immutable-db --store-ledger 45288084 -``` - -The value of the nonce used above can be discovered in the -[config](https://github.com/input-output-hk/cardano-node/blob/61da26bddd4d34a5ec750492aa625c62941d808a/configuration/cardano/mainnet-config.json#L15a). - -Finally, - -Run the block validation, say for 1000 slots, with: -``` -cabal run db-analyser -- --db /cardano-node/state-node-mainnet/db-mainnet/ --minimum-block-validation cardano --configByron mainnet-byron-genesis.json --configShelley mainnet-shelley-genesis.json --configAlonzo mainnet-alonzo-genesis.json --only-immutable-db --analyse-from 45288084 --num-blocks-to-process 1000 --trace-ledger +RTS -pj -l-agu -RTS -``` - -This produces the profiling file `db-analyser.prof`. - -## Architectural Decision Records - -See [ADR-1](docs/adr/2022-12-01_001-record-architectural-decisions.md). - -## Odds and Ends - -See the [wiki](https://github.com/intersectmbo/cardano-ledger/wiki) for some other odds and ends. diff --git a/HowToProfileLedger.md b/HowToProfileLedger.md deleted file mode 100644 index 12f22e2741e..00000000000 --- a/HowToProfileLedger.md +++ /dev/null @@ -1,190 +0,0 @@ - How To Profile Ledger - last edited - May 7, 2022 - Tim Sheard - -Motivation -Profiling the ledger is an intricate dance between nix, cabal, and ghc. This document -describes how I set all this up to profile some of the property tests in the -cardano-ledger-test module. I hope this is useful to others who want to profile -other parts of the Ledger code. - -Background -Profiling is an important tool to analyze performance (time and space) in Haskel code. -I recommend reading through the GHC users guide. Here is a link to the appropriates section -https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/profiling.html -This is great background, but the gude says almost nothing about how to make it all work -in a repository that uses nix and cabal. Hence this document - - -Summary -We list here a high level description of the steps needed. In further sections we go into -greater detail about each step - -1. Decide what you want to profile, and arrange the code so this is possible -2. Choreograph the dance between nix, cabal, and ghc. This has two parts - a. Adding stuff to files like cabal.project, cabal.project.local - b. Passing the right flags to cabal, and ghc, running the right `nix develop` shell, -3. Recompiling everything so it can be profiled. This takes a very long time (greater than - 30 minutes when I did it) -4. Start up the profiling. I used "cabal test" with just the right command line arguments. -5. Inspect the produced .prof file, and decide what to do -6. Repeat steps 3-5, until satisfied. -7. Undo all the changes (from steps 1 and 2) made just for profiling. - -Deciding what to profile -Usually one wants to profile code that appears to be using too many resoures (space or time). -Because of the difficulty in getting nix, cabal, and ghc to work together, I have found that -co-opting an existing Test file is the way to go. Here are the reasons why this is a good idea - -1) Everything is already set up to compile and run the test file by simply typing: cabal test - in the root directory of the module that contains the test. -2) Is is usually quite easy to rename the 'main' variable in the test file to something else - and add your own 'main', that contains the code you want to profile -3) Using a quick check property test, allows for your code to consist of mutltiple "tests" each - with a different random input. This means your profiling results are less likely to be biased - by a bad choice of input. - -Here is how I did it. I edited the file cardano-ledger/libs/cardano-ledger-test/test/Test.hs -Here is a synopsis of what it originally looked like, and what it looked like after I edited it. - -BEFORE ------------------------- -... - --- main entry point -main :: IO () -main = do - hSetEncoding stdout utf8 - defaultMain tests ------------------------- - -AFTER ------------------------ -... -import Test.Cardano.Ledger.Generic.Properties (adaIsPreservedBabbage) - -mainSave :: IO () -mainSave = do - hSetEncoding stdout utf8 - defaultMain tests - -main :: IO () -main = defaultMain adaIsPreservedBabbage ------------------------ - -The variable 'adaIsPreservedBabbage' is a property test of type 'TestTree' that takes -about 1 minute to run. Similar tests took about 10-20 seconds, so I was interested why -it took so long. So now I have a 'main' that runs just this one test. I could see that I -have set things up properly by changing directory to cardano-ledger/libs/cardano-ledger-test -The root directory of the module. This is the directory that contains the cardano-ledger-test.cabal file. -So I can simply type: cabal test, and the test runs. Now all I need to do is get it to be profiled. - -Choreographing the dance. - -We need to tell nix, cabal, and ghc that we want to profile. We do this by changing a few of the -files that build the system, and by passing the right flags to nix, cabal, and GHC. - - -First we must add (or change if you already have it) cabal.project.local In the root of the -ledger repository. Put this in cabal.project.local ---------------------- -ignore-project: False -profiling: True -profiling-detail: all-functions ---------------------- - -The final step is to pass the right flags to cabal, ghc, and running the right `nix develop` shell. Here is a summary. - -1) to start nix, we must use - `nix develop .#profiling` -2) to build with cabal, we must use - `cabal build --enable-profiling` -3) to run the test, we must pass extra flags to ghc, so we must use - `cabal test --test-options="+RTS -i60 -p"` - -How to build the system for profiling - -Be sure you have set up the files cabal.project.local and nix/haskell.nix as described above. -Exit the nix shell, if you are running it. Now change directories to the root of the Ledger repository. - -Now to start nix type -``` -nix develop .#profiling -``` -(or, eg. `nix develop .#ghc8107.profiling` for alternative compiler) - -When the `nix develop` shell completes (this can take a long time, since it must make sure -every file in the Ledger is compiled with profiling enabled). This might take a -while. Be patient. Take the dogs for a walk. - -If `nix develop .#profiling` fails to give you a nix shell this may be related to a problem -with 'plutus-core' that uses template haskell, and happens to trigger a known bug in ghc. -https://gitlab.haskell.org/ghc/ghc/-/issues/18320 There are also a few slack threads about this. For example -https://input-output-rnd.slack.com/archives/C21UF2WVC/p1624555583258300 -The workaround for this is quite convoluted, but if you fail to get a nix-shell working there are two things -you may need to do: - -1) add the following to `cabal.project.local`: -``` -package plutus-core - ghc-options: -fexternal-interpreter -``` -2) uncomment the following in `flake.nix`: -``` -# packages.plutus-core.components.library.ghcOptions = [ "-fexternal-interpreter" ]; -``` - -Now change directories to the root directory of the modlue that contains your -modified Test file, and type -``` -cabal build --enable-profiling -``` -This might also take a while. Take the dogs for second walk. When this completes -you are ready to start profiing! - -How to run a profile. - -In the same directory where you did (cabal build --enable-profiling) type -``` -cabal test --test-options="+RTS -i60 -p" -``` -This should take slightly longer than running the test without profiling. -When it is done, there will be a file in this same directory with extension .prof -When I did it, the file was called cardano-ledger-test.prof . It is a big file -Here are the first few lines. -``` ----------------------------------------------------------------------------------------------------------- -Fri May 6 14:02 2022 Time and Allocation Profiling Report (Final) - - cardano-ledger-test +RTS -i60 -p -RTS - - total time = 51.05 secs (51050 ticks @ 1000 us, 1 processor) - total alloc = 109,620,447,376 bytes (excludes profiling overheads) - -COST CENTRE MODULE SRC %time %alloc - -showsPrec Cardano.Ledger.Alonzo.TxInfo src/Cardano/Ledger/Alonzo/TxInfo.hs:504:13-16 10.3 19.9 -evalScripts Cardano.Ledger.Alonzo.PlutusScriptApi src/Cardano/Ledger/Alonzo/PlutusScriptApi.hs:(231,1)-(247,55) 7.5 1.6 -evalScripts.endMsg Cardano.Ledger.Alonzo.PlutusScriptApi src/Cardano/Ledger/Alonzo/PlutusScriptApi.hs:(240,7)-(246,11) 6.5 17.8 -show Cardano.Ledger.Alonzo.Scripts src/Cardano/Ledger/Alonzo/Scripts.hs:202:3-74 6.1 14.8 -blake2b_libsodium Cardano.Crypto.Hash.Blake2b src/Cardano/Crypto/Hash/Blake2b.hs:(37,1)-(43,104) 2.6 1.0 -decodeAddrStateT Cardano.Ledger.CompactAddress src/Cardano/Ledger/CompactAddress.hs:(287,1)-(304,40) 2.3 1.2 -splitSMGen System.Random.SplitMix src/System/Random/SplitMix.hs:(225,1)-(229,31) 1.4 3.2 -explainPlutusFailure.line Cardano.Ledger.Alonzo.TxInfo src/Cardano/Ledger/Alonzo/TxInfo.hs:(665,13)-(673,19) 1.4 2.3 -toBuilder Codec.CBOR.Write src/Codec/CBOR/Write.hs:(102,1)-(103,57) 1.3 0.5 -genValidatedTxAndInfo Test.Cardano.Ledger.Generic.TxGen src/Test/Cardano/Ledger/Generic/TxGen.hs:(759,1)-(947,55) 1.3 0.1 -runE Data.Coders src/Data/Coders.hs:(566,1)-(577,20) 1.3 0.7 -showsPrec Cardano.Ledger.Alonzo.TxInfo src/Cardano/Ledger/Alonzo/TxInfo.hs:467:13-16 1.2 3.2 -hashWith Cardano.Crypto.Hash.Class src/Cardano/Crypto/Hash/Class.hs:(125,1)-(129,13) 1.2 0.5 -genKeyHash.\ Test.Cardano.Ledger.Generic.GenState src/Test/Cardano/Ledger/Generic/GenState.hs:369:37-83 1.1 0.4 -serializeEncoding Cardano.Binary.Serialize src/Cardano/Binary/Serialize.hs:(61,1)-(67,49) 0.8 2.1 -toLazyByteString Codec.CBOR.Write src/Codec/CBOR/Write.hs:86:1-49 0.7 4.9 ---------------------------------------------------------------------------------------------------------------------- -``` - -The problem with my test, was that evalScripts was inadvertantly showing a large data structure -using tellEvent. This was added when debugging and never removed. After fixing this, we had much better results. -I hope you experience is just as rewarding. - -Don't forget to revert cabal.project.local, nix/haskell.nix and your Test file to their original state. diff --git a/LICENSE b/LICENSE deleted file mode 100644 index f433b1a53f5..00000000000 --- a/LICENSE +++ /dev/null @@ -1,177 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS diff --git a/NOTICE b/NOTICE deleted file mode 100644 index f4b8daf6a77..00000000000 --- a/NOTICE +++ /dev/null @@ -1,12 +0,0 @@ -copyright: 2018-2023 Input Output Global Inc (IOG) - -Licensed under the Apache License, Version 2.0 (the "License"). -You may not use this file except in compliance with the License. -You may obtain a copy of the License at -http://www.apache.org/licenses/LICENSE-2.0.txt - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either -express or implied. See the License for the specific language -governing permissions and limitations under the License. diff --git a/README.md b/README.md deleted file mode 100644 index ea10cf12374..00000000000 --- a/README.md +++ /dev/null @@ -1,180 +0,0 @@ -

Cardano Ledger

- -

- - CEH - - - GitHub Workflow Status (master) - - - Haddock (master) - -

- -This repository contains the formal specifications, executable models, -and implementations of the Cardano Ledger. - -The documents are built in our CI and can be readily accessed using the -following links: - -Era | Design Documents | Formal Specification | CDDL -----|------------------|----------------------|----- -Byron | | [Chain Spec](https://github.com/intersectmbo/cardano-ledger/releases/latest/download/byron-blockchain.pdf "Specification of the Blockchain Layer"), [Ledger Spec](https://github.com/intersectmbo/cardano-ledger/releases/latest/download/byron-ledger.pdf "A Formal Specification of the Cardano Ledger") | [CDDL](https://github.com/intersectmbo/cardano-ledger/tree/master/eras/byron/cddl-spec/byron.cddl), [PDF](https://github.com/intersectmbo/cardano-ledger/releases/latest/download/byron-binary.pdf) -Shelley | [Design](https://github.com/intersectmbo/cardano-ledger/releases/latest/download/shelley-delegation.pdf "Design Specification for Delegation and Incentives in Cardano") | [Spec](https://github.com/intersectmbo/cardano-ledger/releases/latest/download/shelley-ledger.pdf "A Formal Specification of the Cardano Ledger") | [CDDL](https://github.com/intersectmbo/cardano-ledger/tree/master/eras/shelley/impl/cddl-files) -Allegra | Same as Mary era below | Same as Mary era below | [CDDL](https://github.com/intersectmbo/cardano-ledger/tree/master/eras/allegra/impl/cddl-files) -Mary | [Multi-Currency](https://eprint.iacr.org/2020/895 "Multi-Currency Ledgers"), [UTXOma](https://iohk.io/en/research/library/papers/utxoma-utxo-with-multi-asset-support/ "UTXOma:UTXO with Multi-Asset Support") | [Spec](https://github.com/intersectmbo/cardano-ledger/releases/latest/download/mary-ledger.pdf "A Formal Specification of the Cardano Ledger with a Native Multi-Asset Implementation") | [CDDL](https://github.com/intersectmbo/cardano-ledger/tree/master/eras/mary/impl/cddl-files) -Alonzo | [eUTXO](https://iohk.io/en/research/library/papers/the-extended-utxo-model/ "The Extended UTXO Model")| [Spec](https://github.com/intersectmbo/cardano-ledger/releases/latest/download/alonzo-ledger.pdf "A Formal Specification of the Cardano Ledger integrating Plutus Core") | [CDDL](https://github.com/intersectmbo/cardano-ledger/tree/master/eras/alonzo/impl/cddl-files) -Babbage | [batch-verification](https://iohk.io/en/research/library/papers/on-uc-secure-range-extension-and-batch-verification-for-ecvrf/ "On UC-Secure Range Extension and Batch Verification for ECVRF"), [CIP-31](https://github.com/cardano-foundation/CIPs/pull/159 "Reference inputs"), [CIP-32](https://github.com/cardano-foundation/CIPs/pull/160 "Inline datums"), [CIP-33](https://github.com/cardano-foundation/CIPs/pull/161 "Reference scripts") | [Spec](https://github.com/intersectmbo/cardano-ledger/releases/latest/download/babbage-ledger.pdf "Formal Specification of the Cardano Ledger for the Babbage era") | [CDDL](https://github.com/intersectmbo/cardano-ledger/tree/master/eras/babbage/impl/cddl-files) -Conway | [CIP-1694](https://github.com/cardano-foundation/CIPs/tree/master/CIP-1694) | [Spec (WIP)](https://github.com/intersectmbo/formal-ledger-specifications) | [CDDL](https://github.com/intersectmbo/cardano-ledger/tree/master/eras/conway/impl/cddl-files) - - -Other Documents: -- [Non-integer calculations specification](https://github.com/intersectmbo/cardano-ledger/releases/latest/download/non-integer-calculations.pdf): details on the parts of the Shelley specification that use real numbers. -- [Stake pool ranking specification](https://github.com/intersectmbo/cardano-ledger/releases/latest/download/pool-ranking.pdf): details for a robust stake pool ranking mechanism. -- [Explanation of the small-step-semantics framework](https://github.com/intersectmbo/cardano-ledger/releases/latest/download/small-step-semantics.pdf): a guide to the notation and style used by our ledger rules. - -In addition, there is a formalization of the Ledger Specification in Isabelle/HOL which can be found [here](https://github.com/input-output-hk/fm-ledger-formalization). - -Some user documentation is published on [Read the Docs](https://cardano-ledger.readthedocs.io/en/latest) - -Haddock code documentation of the latest master branch is available [here](https://input-output-hk.github.io/cardano-ledger). - -# Repository structure - -The directory structure of this repository is as follows: - -- [Byron](./eras/byron) - - [ledger](./eras/byron/ledger) - - [formal-spec](./eras/byron/ledger/formal-spec) - - [executable-spec](./eras/byron/ledger/executable-spec) - - [implementation](./eras/byron/ledger/impl) - - [chain](./eras/byron/chain) - - [formal-spec](./eras/byron/chain/formal-spec) - - [executable-spec](./eras/byron/chain/executable-spec) - - [cddl](./eras/byron/cddl-spec) -- [Shelley](./eras/shelley) - - [design-spec](./eras/shelley/design-spec) - - [formal-spec](./eras/shelley/formal-spec) - - [implementation](./eras/shelley/impl) - - [tests](./eras/shelley/test-suite) - - [cddl](./eras/shelley/impl/cddl-files) -- [Allegra - Timelocks](./eras/allegra) - - [formal-spec](./eras/shelley-ma/formal-spec) - - [implementation](./eras/allegra/impl) - - [tests](./eras/shelley-ma/test-suite) -- [Mary - Multi-Assets](./eras/allegra) - - [formal-spec](./eras/shelley-ma/formal-spec) - - [implementation](./eras/allegra/impl) - - [tests](./eras/shelley-ma/test-suite) -- [Alonzo - Smart Contracts](./eras/alonzo) - - [formal-spec](./eras/alonzo/formal-spec) - - [implementation](./eras/alonzo/impl) - - [cddl](./eras/alonzo/impl/cddl-files) - - [tests](./eras/alonzo/test-suite) -- [Babbage](./eras/babbage) - - [formal-spec](./eras/babbage/formal-spec) - - [implementation](./eras/babbage/impl) - - [cddl](./eras/babbage/impl/cddl-files) - - [tests](./eras/babbage/test-suite) -- [Conway - Governance](./eras/conway) - - [formal-spec](./eras/conway/formal-spec) - - [implementation](./eras/conway/impl) - - [cddl](./eras/conway/impl/cddl-files) - - [tests](./eras/conway/impl/test) -- [Libraries](./libs) - -# Building - -It is recommended to use [`nix`](https://nixos.org/nix/download.html) for building everything in this repository. -Haskell files can be built with [`cabal`](https://www.haskell.org/cabal/) inside of a nix shell. - -Make sure you have a recent version of `nix` by following this [guide](https://nixos.org/manual/nix/stable/installation/upgrading.html) - -## Nix Cache - -When using `nix` it is recommended that you setup the cache, so that it can -reuse built artifacts, reducing the compilation times dramatically: - -If you are using [NixOS](https://nixos.org/) add the snippet below to your -`/etc/nixos/configuration.nix`: - -``` -nix.settings = { - experimental-features = [ "nix-command" "flakes" ]; - substituters = [ - "https://cache.nixos.org" - "https://cache.iog.io" - ]; - trusted-public-keys = [ - "hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ=" - ]; -}; -``` - -If you are using the `nix` package manager next to another operating system put -the following in `/etc/nix/nix.conf`: - -``` -experimental-features = nix-command flakes -substituters = https://cache.iog.io https://cache.nixos.org/ -trusted-public-keys = hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ= cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= -``` - -## Building the LaTeX documents and executable specifications - -When using `nix` the documents and Haskell code can be readily -built by running: - -```shell -nix build .#specs -``` - -The LaTeX documents will be placed inside a directory named `result`, e.g.: - -```shell -result/byron-ledger.pdf -result/shelley-delegation.pdf -result/non-integer-calculations.pdf -result/small-step-semantics.pdf -result/shelley-ledger.pdf -result/byron-blockchain.pdf -``` - - -## Building individual LaTeX documents - - -Change to the latex directory where the latex document is (e.g. `eras/shelley/formal-spec` -for the ledger specification corresponding to the Shelley release, or -`eras/byron/ledger/formal-spec` for the ledger specification corresponding to -the Byron release). Then, build the latex document by running: - -```shell -cd -nix develop --command make -``` - -For a continuous compilation of the `LaTeX` file run: - -```shell -cd -nix develop --command make watch -``` - -# Testing - -Run `cabal test all` to run all tests or `cabal test ` to run the tests for a specific package. - -Note: The `CARDANO_MAINNET_MIRROR` environment variable can be overriden in `flake.nix` if one desires to run -the Byron tests with a different version of the [mainnet epochs](https://github.com/input-output-hk/cardano-mainnet-mirror/tree/master/epochs). - -# Submitting an issue - -Issues can be filed in the [GitHub Issue tracker](https://github.com/intersectmbo/cardano-ledger/issues). - -However, note that this is pre-release software, so we will not usually be providing support. - -# Contributing - -See [CONTRIBUTING](https://github.com/intersectmbo/cardano-ledger/blob/master/CONTRIBUTING.md). diff --git a/RELEASING.md b/RELEASING.md deleted file mode 100644 index c56566ef97e..00000000000 --- a/RELEASING.md +++ /dev/null @@ -1,317 +0,0 @@ -# Versioning and release processes - -## Versioning Process - -Ledger team has fully adopted the [PVP versioning scheme](https://pvp.haskell.org/) for -all packages in this repo. - -Updating the version for every package in this repository is the responsibility of the -developer that is introducing a change to any package that is subject to release -process. Version must be updated in both the `CHANGELOG.md` and in the `.cabal` file for -the package in the same PR, as well as every other package that is affected by the change -in the repository. Every affected package that is subject to release process must receive -a lower and, potentially, an upper bound update on the dependency that has experienced the -change. - -For example if I add a function to `cardano-ledger-core` and use it in -`cardano-ledger-conway`, then I must add a minor version bump to `cardano-ledger-core` and -I also must add a lower version restriction in `cardano-ledger-conway` for -`cardano-ledger-core`, as per PVP. - -In other words, when it comes to versioning, the fact that all of the packages in this -repository are built together at the same time should be ignored. It should be assumed -that every package and all of its required dependencies can be released to CHaPs at any -point in time. This is necessary to guarantee that if such a package is compatible with -other packages from this repository, which have been previously released, the version -bounds should reflect that. - -### Upper bounds - -Normally, [upper bounds are required by -PVP](https://pvp.haskell.org/#dependencies-in-cabal) for all dependencies of a -package. This is the only exception we make to the PVP, and we do not require strict upper -bounds for dependencies that come from Hackage. For example, there is no need to add an -upper bound on `containers` package, unless there is a known incompatibility. Speculative -upper bounds over time lead to overly restrictive build plans that are forced to favor -older packages. Moreover, they lead to a lot of redundant maintenance burden. That being -said, most of the packages from within `cardano-ledger` repository are a lot more volatile -and require tight interoperability, therefore speculative upper bounds are encouraged. - -### Lower bounds - -Placing lower bounds is a lot less controversial than upper bounds, because they don't -suffer from speculation about the future. Older versions of dependencies are known at -release time. Therefore lower bounds must be added for all dependencies that are known to -be incompatible with the package - -### Handbook - -See the [versioning section](https://github.com/input-output-hk/cardano-engineering-handbook/blob/main/policy/haskell/packaging/versioning.md) -of the Cardano Engineering Handbook for more detailed information on this topic. - -### `CHANGELOG.md` - -Every package, that [is subject to the release -process](packages-excluded-from-release-process), will always have the top most entry in -the `CHANGELOG.md` set to an unreleased version. That top most section will have either -the patch, minor or the major versions bumped, but not all three, when compared to the -latest released version. Which one it will be depends on the recent changes that were -added after the latest release was made. More on why this should always be true is in the -[Release Process](#release-process) section. For instance, if the latest version of -`cardano-ledger-core` that was released to CHaPs is `1.2.3.0`, then there will be a -section like this which will have a version that is strictly higher than `1.2.3.0`, eg: - -``` -# Version history for `cardano-ledger-core` - -## 1.2.3.1 - -* Add ... -... -``` - -In order to decide if the version needs to be bumped up it is necessary to know what was -the latest released version of a package. Two simple ways are either look at the version -on CHaP or look at the latest git tag for the version. - -However the easiest, while also reliable way to figure out whether you need to bump up the -version is to simply look at the current version in the changelog. It will be easier to -explain why this is the case with an example. - -Let's say you submit a PR which contains breaking changes to `cardano-ledger-core`. You -then look into the changelog for current development version on `master`: - -* If the current version is set to `cardano-ledger-core-1.2.3.5`. We see that the patch - version is bumped (not zero), that means that the latest version released is - `cardano-ledger-core-1.2.3.4`, so you update it to `cardano-ledger-core-1.3.0.0`, - because your changes break stuff -* If the current version is set to `cardano-ledger-core-1.2.4.0`. That means there was at - most a minor version bump and currently released version is - `cardano-ledger-core-1.2.3.x`. But your changes are breaking so you increase it even - further to `cardano-ledger-core-1.3.0.0` -* If the current version is `cardano-ledger-core-1.3.0.0`. That means currently released - version to CHaPs is `cardano-ledger-core-1.2.x.x`. There is nothing to do, the version - on `master` already contains some other breaking changes since the last release to CHaPs -* If the current version is `cardano-ledger-core-2.0.0.0`. There was a complete - overhaul. Definitely nothing needs to be bumped. :grin: - - -It is quite common to experience conflicts in the changelog, since that will be the most -common section of the codebase being updated at the same time. When it comes to conflicts -resolution, it is pretty easy: - -* on the package version, the highest value should usually win. -* on the change log entries, all entries should usually survive. - -New entries should always be prepended to the **top** of the section. - -#### When to update - -`CHANGELOG.md` must be updated for the package that is experiencing a change and any other -package in the repository that re-exports that change in one form or another. In general -an entry is added according to these rules: - -* Every breaking change MUST appear in the `CHANGELOG.md`. - -* Every non-breaking change SHOULD appear in the `CHANGELOG.md` - -* Every change that does not affect the user facing semantics of the code (eg. changes to - documentation, dependency bounds, test suites, addition of internal functions, - performance improvements, etc.) COULD be added to the `CHANGELOG.md`, but they are - discouraged. Exceptions should be made for changes that could really be valuable to the - downstream user. - -* Every change to a public sub-library of a package must be added to a separate section in - the `CHANGELOG.md` and is versioned together with the main library. Eg. `testlib`: - - ``` - # Version history for `cardano-ledger-core` - - ## 1.20.2.0 - - * Add `someFunction` - - ### `testlib` - - * Add `Arbitrary` instance for ... - ... - ``` - -## Release Process - -Usually a package release will happen directly from the `master` branch. Current release -process even allows for a release to happen from a commit that is slightly behind `HEAD` -of the `master` branch. On a rare occasion when a bugfix needs to be backported to an -older version, a release can happen from an ephemeral release branch. Such a release -branch must follow the same procedure of a PR review and CI, that is why it should be -prefixed with `release/some-branch-name`, because that will ensure that CI is triggered. - -### Release Steps - -Here are the steps for a release engineer to follow. - -#### Decide what to release - -Normally it should be OK to release at the same time all of the packages from the -repository that have experienced some sort of change, but that is not mandatory. It is -fine to release any package by itself at any point from the `HEAD` of `master` or even a -commit that is behind the `HEAD` on the `master` branch. A release from an ephemeral -branch is also possible, but it is paramount to ensure that all of the same changes will -be present in the next release from `master` branch. - -The most common case is to blindly release all of the packages that were changed since -they were last released. This begs a question. How to decide which of the packages have -changed, thus deserve a release? - -The rule is very simple. Every package that falls under this release process and has a -version in its cabal file higher than the highest version released to CHaPs is allowed to -be released. It is also possible to rely on git tags for deriving information about the -latest released version of a package, because it is a mandatory step after the release to -CHaP. (TODO: implement a script that lists all of the package that fit the above criteria) - -#### Release to CHaP - -1. Follow the [CHaP release - instructions](https://github.com/intersectmbo/cardano-haskell-packages#-from-github) - - For example, to release commit with SHA `deadbeef`: - - ```shell - $ ./scripts/add-from-github.sh https://github.com/intersectmbo/cardano-ledger deadbeef libs/cardano-ledger-core ... - ``` - It is important to supply a commit SHA instead of a branch name. - -2. Create and merge a PR to https://github.com/intersectmbo/cardano-haskell-packages - with the release(s). In case that a current release causes breakage on some downstream - package due to that package lacking upper bounds, you will require to [add a revision - for that package](https://github.com/intersectmbo/cardano-haskell-packages#how-to-add-a-new-package-metadata-revision) that fixes the bounds in the same PR as the release. Also it is - necessary to notify the maintainers of the package via a bug report or a PR with a fix. - -3. Once the PR is merged then create a git tag with the same version for the same git SHA - that was released, eg: - - ``` - $ git tag cardano-ledger-core-1.20.1.1 deadbeef... - $ git push tag cardano-ledger-core-1.20.1.1 - ``` - -4. Create a PR to `master` that updates `CHANGELOG.md` files for all of the packages that - have just been released. The only addition to the file should be a markdown header - section with the next patch version bumped, which must bring the `CHANGELOG.md` to the - state of the top level section containing a version higher than the highest one ever - released. Due to concurrent nature of editing the repository it is possible that - `CHANGELOG.md` have already received a version bump with a section that fits the - higher version criteria, in which case nothing needs to be added. The body of the - section, if added, must be empty with just one single asterisk `*`. - - For example, if `cardano-ledger-core-1.20.1.1` was just released, then a new empty - `1.20.1.2` section in the `CHANGELOG.md` must be added: - - ```markdown - # Version history for `cardano-ledger-core` - - ## 1.20.1.2 - - * - - ## 1.20.1.1 - - ... - ``` - - It is important to note that the version in the cabal file should *not* be changed at - this stage, because it will later be used for deciding which package have changed and - can be released. - -##### Adding revisions - -As mentioned above, sometimes a release could break downstream packages in which case you will need to add revisions. -The instructions [here](https://github.com/IntersectMBO/cardano-ledger/blob/master/REVISIONING.md) will walk you through a specific case that we had when we released some packages in `cardano-base` -and will also provide general instructions on how to add and test revisions. - -#### Backporting changes - -It is occasionally necessary to release a minor version for a package that has its history -diverged from a version on `master` significantly enough to make it impossible for a minor -version to be released from `master`. In other words a patch backporting. In such a -scenario a few steps should be followed: - -1. Two ephemeral branches with a prefix `release/` need to be created. Both should branch - of from a tag of a package version that is being updated. For example if a current - version on `master` is `cardano-ledger-core-1.22.10.0` then the latest - `cardano-ledger-core-1.21.x` should be used as base: - - ```shell - $ git checkout -b release/cardano-ledger-core-1.21.2.1 cardano-ledger-core-1.21.2.1 - $ git push -u origin release/cardano-ledger-core-1.21.2.1 - $ git checkout -b release/cardano-ledger-core-1.21.3.0 cardano-ledger-core-1.21.2.1 - ``` - - We'll need the first branch in order to use it as base when creating a PR for code - review. - -2. Changes that need to be released should be `cherry-pick`ed from master. If a fix on - `master` was implemented in some incompatible fashion to the current release, then it - is fine to reimplement it anew, as long as the change being introduced is also present - on master in some form. That requirement also concerns the changelog entry, it should - be present in both the patched version and in the next version released from `master`. - -3. Regular release process should follow from here. - -4. Once the package has been released and a git tag for that release was created, both of - the `release/` branches can be removed. - -This process does not accommodate backporting fixes to versions that are at least two major -versions behind the one on `master`. - -## Packages excluded from release process - -We release most of the packages in this repo to [CHaP (Cardano Haskell -Packages)](https://github.com/intersectmbo/cardano-haskell-packages). However, there -are a few packages that are either used for testing, debugging or benchmarking and do not -deserve to be released into the World. They are neither released nor versioned. Bounds on -the local dependencies do not need to be updated, because they will always use the versions -for ledger packages from within the repository, rather than from CHaPs. Here is the full -list of such packages as of today: - -* `libs/cardano-ledger-test` -* `libs/plutus-preprocessor` -* `libs/ledger-state` - -Above list is likely to change in the future. - -## Test packages - -Here are test suite packages that are still subject to the versioning and release process, -but the changelog _only_ needs to indicate if breaking changes have been made: - -* `cardano-ledger-shelley-test` -* `cardano-ledger-shelley-ma-test` -* `cardano-ledger-alonzo-test` -* `cardano-ledger-babbage-test` -* `cardano-ledger-conway-test` -* `cardano-crypto-test` -* `cardano-ledger-byron-test` - -A changelog which indicates that no changes have been made will have the form: - -``` -# Version history for `cardano-ledger-conway-test` - -## 1.2.0.1 - -* -``` - -A changelog which indicates that changes have been made will have the form: - -``` -# Version history for `cardano-ledger-conway-test` - -## 1.3.0.0 - -* breaking changes -``` - -These packages are mostly used internally and are planned to be deprecated and removed in the near -future in favor of `testlib`s for each corresponding package. diff --git a/REVISIONING.md b/REVISIONING.md deleted file mode 100644 index 850a308d723..00000000000 --- a/REVISIONING.md +++ /dev/null @@ -1,288 +0,0 @@ -When you attempt to release packages to CHaP, they might cause breakage -on some downstream packages due to lacking upper bounds. -The purpose of this document is to show you how to resolve these issues, -to show you how to release packages to CHaP with revisions. -The first section gives you a [general overview](#general-overview-on-how-to-do-revisions) on the steps that you will need to take. -The other section is a more detailed [step-by-step guide](#step-by-step-example), that will walk you through an exact case in the past, -when we released `cardano-slotting-0.2.0.0` and `cardano-strict-containers-0.1.3.0` from `cardano-base`. -The former caused some breakages downstream and thus required revisioning. -It is recommended to familiarise yourself first with the following documents before attempting to follow the steps below: - * https://github.com/IntersectMBO/cardano-haskell-packages?tab=readme-ov-file#cardano-haskell-package-repository-chap - * https://github.com/IntersectMBO/cardano-ledger/blob/master/RELEASING.md - -# General overview on how to do revisions - -1. In `cardano-haskell-packages`, `for all` the packages `name-of-package` that you want to add to the release of commit `commit-sha` from repo `my-repo`, `do`: - ```bash - ./scripts/add-from-github.sh https://github.com/my-repo commit-sha name-of-package - ``` - Sidenote: you can provide multiple packages as arguments at once - (i.e: `./scripts/add-from-github.sh https://github.com/IntersectMBO/cardano-base commit-sha name-of-package-1 name-of-package-2`) - but that will create a single commit. - One could argue that this violates the atomicity of commits. -2. `Repeat` until there are no errors: - 1. Build `_repo` with: - ```bash - nix develop --command bash -c "foliage build -j 0 --write-metadata" - ``` - 2. Try building your local packages with `Nix` or `Cabal` against your locally built CHaP. - 3. `If` the above fails for package `p` with version `v1.v2.v3.v4`, - `for all` available releases `v'` between `v1.*.*.*` and `v1+1.*.*.*`, `do`: - * ```bash - ./scripts/add-revision.sh _repo p v' - ``` - * Update the version bounds as necessary in the freshly added `.cabal` file `for all` `_sources/p/v'/revisions/` - -# Step-by-step example - -As mentioned in the introduction, this was a specific case that we had to deal with when we attempted to release `cardano-slotting-0.2.0.0` -and `cardano-strict-containers-0.1.3.0`. -At the time, the most recent commit for `cardano-haskell-packages` was -`4fab1fe2`, so we will checkout that commit in order to exactly simulate the situation that we had. - -1. Clone `cardano-haskell-packages` if you haven't done so already, `cd` into it and checkout commit `4fab1fe2`: - ```bash - git clone git@github.com:IntersectMBO/cardano-haskell-packages.git - cd cardano-haskell-packages - git checkout 4fab1fe2 - ``` -2. If you had cloned `cardano-haskell-packages` earlier and built a local version of CHaPs with `foliage` before in `cardano-haskell-packages/_repo/`, then make sure that you delete `_repo` before you continue. -3. Add `cardano-slotting` and `cardano-strict-containers` packages from `cardano-base` at `f11ddc7f87038c16d5a6d7611fb5dda51be9533d` - (this was the first commit that contained all the changes we wanted to release) by running the following in `cardano-haskell-packages`: - ```bash - ./scripts/add-from-github.sh https://github.com/IntersectMBO/cardano-base f11ddc7f cardano-strict-containers - ./scripts/add-from-github.sh https://github.com/IntersectMBO/cardano-base f11ddc7f cardano-slotting - ``` -4. Build `_repo` with foliage by running: - ```bash - nix develop --command bash -c "foliage build -j 0 --write-metadata" - ``` - -Next, you will add the actual revisions and test if you can build your packages locally against your local version of CHaPs. You can either build them with `Nix` or `Cabal`. - -## Building with `Nix` -1. Try running the following in `cardano-haskell-packages`: - ```bash - nix build --override-input CHaP path:/home/user/cardano-haskell-packages/_repo \ - '.#"ghc96/cardano-ledger-allegra/1.3.0.0"' \ - '.#"ghc96/cardano-ledger-alonzo/1.6.0.0"' \ - '.#"ghc96/cardano-ledger-alonzo-test/1.2.0.0"' \ - '.#"ghc96/cardano-ledger-babbage/1.6.0.0"' \ - '.#"ghc96/cardano-ledger-babbage-test/1.2.0.0"' \ - '.#"ghc96/byron-spec-chain/1.0.0.2"' \ - '.#"ghc96/byron-spec-ledger/1.0.0.2"' \ - '.#"ghc96/cardano-ledger-byron/1.0.0.4"' \ - '.#"ghc96/cardano-ledger-byron-test/1.5.0.1"' \ - '.#"ghc96/cardano-crypto-wrapper/1.5.1.1"' \ - '.#"ghc96/cardano-crypto-test/1.5.0.1"' \ - '.#"ghc96/cardano-ledger-conway/1.12.0.0"' \ - '.#"ghc96/cardano-ledger-conway-test/1.2.1.3"' \ - '.#"ghc96/cardano-ledger-mary/1.5.0.0"' \ - '.#"ghc96/cardano-ledger-shelley/1.9.0.0"' \ - '.#"ghc96/cardano-ledger-shelley-test/1.3.0.1"' \ - '.#"ghc96/cardano-ledger-shelley-ma-test/1.2.1.6"' \ - '.#"ghc96/cardano-ledger-api/1.8.0.0"' \ - '.#"ghc96/cardano-ledger-core/1.10.0.0"' \ - '.#"ghc96/cardano-ledger-binary/1.3.0.0"' \ - '.#"ghc96/cardano-protocol-tpraos/1.1.0.0"' \ - '.#"ghc96/non-integral/1.0.0.0"' \ - '.#"ghc96/small-steps/1.0.1.0"' \ - '.#"ghc96/small-steps-test/1.0.1.0"' \ - '.#"ghc96/cardano-data/1.2.0.0"' \ - '.#"ghc96/set-algebra/1.1.0.2"' \ - '.#"ghc96/vector-map/1.1.0.0"' - ``` - You could also run `nix build --override-input CHaP path:/home/lucsanszky/cardano-haskell-packages/_repo .#allSmokeTestPackages` - instead (which is also ran by CI), but that will take longer. -2. If all is right, the above should fail for `cardano-ledger-shelley-1.9.0.0` (or another version for that package), so you will have to add a revision for it by running: - ```bash - ./scripts/add-revision.sh _repo cardano-ledger-shelley 1.9.0.0 - ``` - If all went well, you should see that there are unstaged changes in `git` for - `_sources/cardano-ledger-shelley/1.9.0.0/meta.toml` and also some untracked file(s) in `_sources/cardano-ledger-shelley/1.9.0.0/revisions`. - You will want to edit the `.cabal` file from the untracked files. - Its name will depend on whether there were some earlier revisions or not. - For the first revision, its name will be `1.cabal`, for the second it will be `2.cabal`, etc. - Proceed to edit the `.cabal` file by adding version bounds to the freshly released package that caused the breakage. In our case, you will have to - replace the `cardano-slotting` dependency with `cardano-slotting <0.2` in the `build-depends` section. - Note, that it was `cardano-slotting-0.2.0.0` that caused the breakage in `cardano-ledger-shelley-1.9.0.0`, hence the `<0.2` bound. -3. When such a failure happens, you will have to add revisions for all of - the available versions for that release of the package and update all of the `.cabal` files like above. - In our case, you will have to repeat `step 2` for all `cardano-ledger-shelley` versions between 1.0 and 2.0 (so >=1.0 and <=2.0). -4. Rebuild `_repo` again with `foliage` and try rebuilding your packages by running: - ```bash - nix develop --command bash -c "foliage build -j 0 --write-metadata" - nix build --override-input CHaP path:/home/user/cardano-haskell-packages/_repo \ - '.#"ghc96/cardano-ledger-allegra/1.3.0.0"' \ - '.#"ghc96/cardano-ledger-alonzo/1.6.0.0"' \ - '.#"ghc96/cardano-ledger-alonzo-test/1.2.0.0"' \ - '.#"ghc96/cardano-ledger-babbage/1.6.0.0"' \ - '.#"ghc96/cardano-ledger-babbage-test/1.2.0.0"' \ - '.#"ghc96/byron-spec-chain/1.0.0.2"' \ - '.#"ghc96/byron-spec-ledger/1.0.0.2"' \ - '.#"ghc96/cardano-ledger-byron/1.0.0.4"' \ - '.#"ghc96/cardano-ledger-byron-test/1.5.0.1"' \ - '.#"ghc96/cardano-crypto-wrapper/1.5.1.1"' \ - '.#"ghc96/cardano-crypto-test/1.5.0.1"' \ - '.#"ghc96/cardano-ledger-conway/1.12.0.0"' \ - '.#"ghc96/cardano-ledger-conway-test/1.2.1.3"' \ - '.#"ghc96/cardano-ledger-mary/1.5.0.0"' \ - '.#"ghc96/cardano-ledger-shelley/1.9.0.0"' \ - '.#"ghc96/cardano-ledger-shelley-test/1.3.0.1"' \ - '.#"ghc96/cardano-ledger-shelley-ma-test/1.2.1.6"' \ - '.#"ghc96/cardano-ledger-api/1.8.0.0"' \ - '.#"ghc96/cardano-ledger-core/1.10.0.0"' \ - '.#"ghc96/cardano-ledger-binary/1.3.0.0"' \ - '.#"ghc96/cardano-protocol-tpraos/1.1.0.0"' \ - '.#"ghc96/non-integral/1.0.0.0"' \ - '.#"ghc96/small-steps/1.0.1.0"' \ - '.#"ghc96/small-steps-test/1.0.1.0"' \ - '.#"ghc96/cardano-data/1.2.0.0"' \ - '.#"ghc96/set-algebra/1.1.0.2"' \ - '.#"ghc96/vector-map/1.1.0.0"' - ``` - In our case, it should succeed this time. In general however, you might run into some more failures. - If that is the case, you will have to add further revisions for the failing packages, effectively repeating the steps from `step 2` onwards. - -## Building with `Cabal` -For this, you will want to create a minimal `cabal` project. For example, a directory with the following files would do: - - `cabal.project` - - `releasing.cabal` - -Paste the following in `cabal.project`: -```cabal --- Give it a different name to avoid cabal confusing it with the --- real CHaP -repository cardano-haskell-packages-local - -- Point this to the *built* repository - url: file:/home/user/cardano-haskell-packages/_repo - secure: True - -- You can skip the root-keys field - -packages: - releasing.cabal --- Add all the packages you want to try building -extra-packages: - cardano-ledger-allegra-1.3.0.0, - cardano-ledger-alonzo-1.6.0.0, - cardano-ledger-alonzo-test-1.2.0.0, - cardano-ledger-babbage-1.6.0.0, - cardano-ledger-babbage-test-1.2.0.0, - byron-spec-chain-1.0.0.2, - byron-spec-ledger-1.0.0.2, - cardano-ledger-byron-1.0.0.4, - cardano-ledger-byron-test-1.5.0.1, - cardano-crypto-wrapper-1.5.1.1, - cardano-crypto-test-1.5.0.1, - cardano-ledger-conway-1.12.0.0, - cardano-ledger-conway-test-1.2.1.3, - cardano-ledger-mary-1.5.0.0, - cardano-ledger-shelley-1.9.0.0, - cardano-ledger-shelley-test-1.3.0.1, - cardano-ledger-shelley-ma-test-1.2.1.6, - cardano-ledger-api-1.8.0.0, - cardano-ledger-core-1.10.0.0, - cardano-ledger-binary-1.3.0.0, - cardano-protocol-tpraos-1.1.0.0, - non-integral-1.0.0.0, - small-steps-1.0.1.0, - small-steps-test-1.0.1.0, - cardano-data-1.2.0.0, - set-algebra-1.1.0.2, - vector-map-1.1.0.0 -``` - -Paste the following in `releasing.cabal`: -```cabal -cabal-version: 3.0 -name: releasing -version: 0.1.0.0 -build-type: Simple -library - build-depends: base ^>=4.16.4.0 - default-language: Haskell2010 -``` -1. Now run the following: - ```bash - cabal update - cabal build \ - cardano-ledger-allegra \ - cardano-ledger-alonzo \ - cardano-ledger-alonzo-test \ - cardano-ledger-babbage \ - cardano-ledger-babbage-test \ - byron-spec-chain \ - byron-spec-ledger \ - cardano-ledger-byron \ - cardano-ledger-byron-test \ - cardano-crypto-wrapper \ - cardano-crypto-test \ - cardano-ledger-conway \ - cardano-ledger-conway-test \ - cardano-ledger-mary \ - cardano-ledger-shelley \ - cardano-ledger-shelley-test \ - cardano-ledger-shelley-ma-test \ - cardano-ledger-api \ - cardano-ledger-core \ - cardano-ledger-binary \ - cardano-protocol-tpraos \ - non-integral \ - small-steps \ - small-steps-test \ - cardano-data \ - set-algebra \ - vector-map - ``` -2. If all is right, the above should fail for `cardano-ledger-shelley-1.9.0.0` (or another version for that package), so you will have to add a revision for it in `cardano-haskell-packages` by running: - ```bash - cd /home/user/cardano-haskell-packages - ./scripts/add-revision.sh _repo cardano-ledger-shelley 1.9.0.0 - ``` - If all went well, you should see that there are unstaged changes in `git` for - `_sources/cardano-ledger-shelley/1.9.0.0/meta.toml` and also some untracked file(s) in `_sources/cardano-ledger-shelley/1.9.0.0/revisions`. - You will want to edit the `.cabal` file from the untracked files. - Its name will depend on whether there were some earlier revisions or not. - For the first revision, its name will be `1.cabal`, for the second it will be `2.cabal`, etc. - Proceed to edit the `.cabal` file by adding version bounds to the freshly released package that caused the breakage. In our case, you will have to - replace the `cardano-slotting` dependency with `cardano-slotting <0.2` in the `build-depends` section. - Note, that it was `cardano-slotting-0.2.0.0` that caused the breakage in `cardano-ledger-shelley-1.9.0.0`, hence the `<0.2` bound. -3. When such a failure happens, you will have to add revisions for all of - the available versions for that release of the package and update all of the `.cabal` files like above. - In our case, you will have to repeat `step 2` for all `cardano-ledger-shelley` versions between 1.0 and 2.0 (so >=1.0 and <=2.0). -4. Rebuild `_repo` again in `cardano-haskell-packages` with `foliage` and try rebuilding your packages by running: - ```bash - nix develop --command bash -c "foliage build -j 0 --write-metadata" - cd /path_to/your/minimal_cabal_project - cabal update - cabal build \ - cardano-ledger-allegra \ - cardano-ledger-alonzo \ - cardano-ledger-alonzo-test \ - cardano-ledger-babbage \ - cardano-ledger-babbage-test \ - byron-spec-chain \ - byron-spec-ledger \ - cardano-ledger-byron \ - cardano-ledger-byron-test \ - cardano-crypto-wrapper \ - cardano-crypto-test \ - cardano-ledger-conway \ - cardano-ledger-conway-test \ - cardano-ledger-mary \ - cardano-ledger-shelley \ - cardano-ledger-shelley-test \ - cardano-ledger-shelley-ma-test \ - cardano-ledger-api \ - cardano-ledger-core \ - cardano-ledger-binary \ - cardano-protocol-tpraos \ - non-integral \ - small-steps \ - small-steps-test \ - cardano-data \ - set-algebra \ - vector-map - ``` - In our case, it should succeed this time. In general however, you might run into some more failures. - If that is the case, you will have to add further revisions for the failing packages, effectively repeating the steps from `step 2` onwards. diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index b35604de249..00000000000 --- a/SECURITY.md +++ /dev/null @@ -1 +0,0 @@ -See the security file in the [Cardano engineering handbook](https://github.com/input-output-hk/cardano-engineering-handbook/blob/main/SECURITY.md). diff --git a/bors.toml b/bors.toml deleted file mode 100644 index 995fcd02d05..00000000000 --- a/bors.toml +++ /dev/null @@ -1,7 +0,0 @@ -status = [ - "ci/hydra:Cardano:cardano-ledger:required", -] -timeout_sec = 7200 -required_approvals = 1 -block_labels = [ "WIP", "DO NOT MERGE" ] -delete_merged_branches = true diff --git a/cabal.project b/cabal.project deleted file mode 100644 index 0268777d8ed..00000000000 --- a/cabal.project +++ /dev/null @@ -1,96 +0,0 @@ --- Custom repository for cardano haskell packages, see CONTRIBUTING for more -repository cardano-haskell-packages - url: https://chap.intersectmbo.org/ - secure: True - root-keys: - 3e0cce471cf09815f930210f7827266fd09045445d65923e6d0238a6cd15126f - 443abb7fb497a134c343faf52f0b659bd7999bc06b7f63fa76dc99d631f9bea1 - a86a1f6ce86c449c46666bda44268677abf29b5b2d2eb5ec7af903ec2f117a82 - bcec67e8e99cabfa7764d75ad9b158d72bfacf70ca1d0ec8bc6b4406d1bf8413 - c00aae8461a256275598500ea0e187588c35a5d5d7454fb57eac18d9edb86a56 - d4a35cd3121aa00d18544bb0ac01c3e1691d618f462c46129271bccf39f7e8ee - -source-repository-package - type: git - location: https://github.com/input-output-hk/cardano-ledger-executable-spec.git - tag: 324fafa887b7b6b38e15d2b505c4eec5a3247176 - --sha256: sha256-zpQToGA04NQ3TfkeWBJXIzisvoGLfYdWNbVQ/2BfeEI= - -index-state: - -- Bump this if you need newer packages from Hackage - , hackage.haskell.org 2024-03-19T11:25:56Z - -- Bump this if you need newer packages from CHaP - , cardano-haskell-packages 2024-04-08T00:00:00Z - -packages: - eras/allegra/impl - eras/alonzo/impl - eras/alonzo/test-suite - eras/babbage/impl - eras/babbage/test-suite - eras/conway/impl - eras/conway/test-suite - eras/mary/impl - eras/shelley/impl - eras/shelley/test-suite - eras/shelley-ma/test-suite - libs/cardano-ledger-api - libs/cardano-ledger-core - libs/cardano-ledger-binary - libs/cardano-protocol-tpraos - libs/non-integral - libs/small-steps - libs/cardano-data - libs/set-algebra - libs/vector-map - - -- == Byron era == - -- byron-spec-chain: - eras/byron/chain/executable-spec - -- byron-spec-ledger: - eras/byron/ledger/executable-spec - -- cardano-ledger-byron: - eras/byron/ledger/impl - -- cardano-ledger-byron-test: - eras/byron/ledger/impl/test - -- cardano-crypto-wrapper: - eras/byron/crypto - -- cardano-crypto-test: - eras/byron/crypto/test - - -- Packages used during development and are not released to CHaPs: - libs/cardano-ledger-conformance - libs/cardano-ledger-test - libs/plutus-preprocessor - libs/ledger-state - libs/constrained-generators - --- GHC 9.8 introduces new warnings on partial functions. -if impl(ghc < 9.8) - program-options - ghc-options: -Werror - -package plutus-preprocessor - haddock-options: "--optghc=-fplugin-opt PlutusTx.Plugin:defer-errors" - -package cardano-ledger-core - flags: +asserts - -package cardano-ledger-shelley - flags: +asserts - -package cardano-ledger-mary - flags: +asserts - -package cardano-ledger-conway - flags: +asserts - --- Always write GHC env files, because they are needed for repl and by the doctests. -write-ghc-environment-files: always - --- Always build tests and benchmarks. -tests: true -benchmarks: true - --- The only sensible test display option -test-show-details: streaming diff --git a/default.nix b/default.nix deleted file mode 100644 index cf1c0655e4f..00000000000 --- a/default.nix +++ /dev/null @@ -1,10 +0,0 @@ -# a non-flake nix compat wrapper using https://github.com/edolstra/flake-compat -# DO NOT EDIT THIS FILE -__trace -'' ************************************************************************************ - Hi there! This project has been moved to nix flakes. You are using the default.nix - compatibility layer. Please consider using flake commands like `nix build .#...`, - `nix repl` with `:lf .` and similar instead. - ************************************************************************************ -'' -(import ./nix/flake-compat.nix).defaultNix diff --git a/doc/.gitignore b/doc/.gitignore deleted file mode 100644 index e35d8850c96..00000000000 --- a/doc/.gitignore +++ /dev/null @@ -1 +0,0 @@ -_build diff --git a/doc/README.md b/doc/README.md deleted file mode 100644 index bca78cfbf92..00000000000 --- a/doc/README.md +++ /dev/null @@ -1,30 +0,0 @@ -# Documentation site - -This is a sphinx site. You can build it with sphinx from a `nix develop` shell: - -``` -sphinx-build -n . _build -``` - -Or via nix at the top-level: - -``` -nix build .#doc.site -``` - -[Read the Docs](https://cardano-ledger.readthedocs.io/en/latest) is building the site on every PR and publishing it on every merge. - -## Updating Sphinx dependencies - -The direct dependencies are specified in `requirements.in`. This file is only used to generate manually the `requirements.txt` file - which contains the direct and transitive dependencies and is actually used when building the site. - -### Regenerating `requirements.txt` - -* Update `requirements.in` as desired -* In `doc`, enter a `nix develop` shell that includes pip-tools: - * ``` - cd doc - nix develop - pip-compile requirements.in - ``` - This should have modified `requirements.txt` to reflect the changes from `requirements.in` and any necessary changes in transitive dependencies. diff --git a/doc/_static/.gitkeep b/doc/_static/.gitkeep deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/doc/_templates/.gitkeep b/doc/_templates/.gitkeep deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/doc/cardano-logo.png b/doc/cardano-logo.png deleted file mode 100644 index 7233b4fb4dffa4e3c190d0a1a29ed62ab5c2b1b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15171 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. This is conditioned by the fact that ERC20 token creation requires manual modification of the contract standard, which can result in errors and possible bugs. Creating and transacting tokens natively removes the possibility of human error, since the ledger itself handles the token logic. Additionally, over- and under-flow vulnerabilities that are present for ERC20 are eliminated for native tokens, as Cardano’s scripting language does not have fixed-size integers and the ledger itself (rather than the ERC20 user code) tracks tokens movement. - -+----------------------------------------+---------+---------------+----------------------------------------------------------------------+ -| |ERC20 |Native tokens |Comment | -+----------------------------------------+---------+---------------+----------------------------------------------------------------------+ -|User errors in copying standard code |Y |N |All shared functionality is provided by the ledger | -+----------------------------------------+---------+---------------+----------------------------------------------------------------------+ -|Over-/under-flow vulnerabilities |Y |N |Cardano’s scripting languages don’t have fixed-size integers | -+----------------------------------------+---------+---------------+----------------------------------------------------------------------+ -|Unprotected functions |Y |N |User code is called only in very specific cases to validate minting. | -+----------------------------------------+---------+---------------+----------------------------------------------------------------------+ -|Denial of service via gas price attacks |Y |N |Denial of service attacks on the entire system are still possible. | -+----------------------------------------+---------+---------------+----------------------------------------------------------------------+ diff --git a/doc/explanations/glossary.rst b/doc/explanations/glossary.rst deleted file mode 100644 index 289154e199f..00000000000 --- a/doc/explanations/glossary.rst +++ /dev/null @@ -1,86 +0,0 @@ -Glossary -============= - -**Asset group** - - A collection of tokens/assets that share the same minting policy. - -**Custom token** - - A token featuring custom, user-defined functionality. - -**Minting** - - The action of minting or burning tokens. A negative minting amount indicates burning tokens, and a positive amount indicates minting new tokens. - -**Minting transaction** - - Transactions with a field specifying token minting details. These transactions also carry the minting policies to be checked during validation. - -**Fungible token/asset** - - An asset that is interchangeable and indistinguishable with some other asset(s). Same denomination bills and coins are fungible assets, for example, like equal quantities of ada to lovelaces. - -**Multi-asset (MA)** - - Ledgers that support accounting or transaction of more than one type of asset are considered to have 'multi-asset' functionality. These ledgers can include blockchains, wallets, cryptocurrencies, or banking platforms, for example. Multi-assets usually include a platform's primary currency and multiple, user-defined assets. - -**Multisig** - - Simple scripting language supported by Cardano Shelley. Multisig specifies a minimal set of signatures required to allow a transaction to perform certain actions, and can also be used to specify simple minting policies. - -**Native token** - - A token type accounting and tracking of which is natively supported by its underlying platform without a need for additional software. - -**Non-fungible token/asset** - - A unique asset that is not interchangeable with any other asset(s). Non-fungible assets represent specific information (IP rights for example), and act as one unit that cannot be divided into smaller fractions. - -**One-time minting policy** - - A type of minting policy where the complete set of tokens of a given asset group is minted by a single transaction. Same tokens cannot be minted again. - -**Principal currency** - - On a cryptocurrency platform, this refers to a type of a token/asset that is used for administrative purposes, such as paying fees, delegating to a stake pool, or being minted. Cardano’s primary currency is ada, Bitcoin’s is bitcoin. - -**Securitization** - - The process of creating liquid, asset-backed securities from pools of illiquid assets. - -**Security token** - - A digital asset that derives its value from an external asset that can be traded. Usually, it represents stocks, bonds, or revenue participation notes. Security tokens are subject to federal law governing regulations. - -**Single-issuer policy** - - A minting policy that allows only the entity holding a particular set of keys (specified in the policy) to mint tokens of the associated asset group. - -**Token builder** - - A piece of software that allows users to define tokens to be minted by a minting transaction. - -**Token bundle** - - A collection of mixed tokens belonging to one or more different asset groups, usually stored in a single output. - -**Token burning** - - The process of removing a token from circulation, (destroying the token). - -**Token** - - Digital representation of an asset of value defined by the community, market state, or self-governed entity. A token can be fungible or non-fungible, and act as a payment unit, reward, trading asset, or information holder. - -**Tokenization** - - The process of representing real-world assets with digital tokens. - -**Token minting** - - The process of creating new tokens. - -**Utility token** - - A digital token that holds certain functionality in regards to a concrete project or environment. These tokens can be used as payment units, rewards, or grant access to a specific network. diff --git a/doc/explanations/index.rst b/doc/explanations/index.rst deleted file mode 100644 index 8c426a997a8..00000000000 --- a/doc/explanations/index.rst +++ /dev/null @@ -1,16 +0,0 @@ -Ledger Explanations -=================== - -.. toctree:: - :maxdepth: 3 - :titlesonly: - - learn-about-native-tokens - token-bundles - features - policies - min-utxo-mary - min-utxo-alonzo - listing - faq - glossary diff --git a/doc/explanations/learn-about-native-tokens.rst b/doc/explanations/learn-about-native-tokens.rst deleted file mode 100644 index 052b7b83589..00000000000 --- a/doc/explanations/learn-about-native-tokens.rst +++ /dev/null @@ -1,33 +0,0 @@ -Learn about native tokens -========================= - -*Native tokens* is a feature that enables the transacting of multi-assets on Cardano. Users can transact with ada, and an unlimited number of user-defined (custom) tokens natively. - -Native support offers distinct advantages for developers: there is no need to create smart contracts to handle custom tokens, for example, which removes a layer of added complexity and potential for manual errors since the ledger handles all token-related functionality. - -The native tokens feature extends the existing accounting infrastructure defined in the ledger model (originally designed for processing ada-only transactions) to accommodate transactions using a range of assets. These assets include ada and a variety of user-defined custom token types. - -Single asset ledgers --------------------- - -Cryptocurrency ledgers that track exactly one type of asset are called single-asset ledgers. - -Multi-Asset (MA) support ------------------------- - -A blockchain, ledger, or cryptocurrency is said to have multi-asset (MA) support when the network or ledger supports tracking transfer and ownership of different types of assets on its ledger. In the Cardano environment, this functionality is provided by the native tokens feature. - -This feature extends the existing accounting infrastructure defined in the ledger model, which is designed for processing ada-only transactions, to accommodate transactions that simultaneously use a range of assets. These assets include ada and a variety of user-defined custom token types. - -Native versus non-native MA support ------------------------------------ - -Some cryptocurrency ledgers have built-in support to track ownership and transfer of more than one type of asset. This type of MA support is called native. Cardano's MA functionality is native. - -If a cryptocurrency platform has sufficiently powerful smart contract functionality, it is possible to track assets for which there is no ledger accounting support. This is done with a layer-2 solution built using smart contracts. This type of MA support is non-native. - -Using ada for administrative operations ---------------------------------------- - -Assets on Cardano are all native, however, ada is Cardano's principal asset. It means that ada is the only asset that, at this time, is accepted to pay fees, make deposits, and it is the only asset in which rewards are distributed. This property of ada (and no other type of asset) is due to the construction of the underlying consensus protocol. It is also essential to hold ada (besides other currencies) to transfer multi-asset tokens between addresses. - diff --git a/doc/explanations/listing.rst b/doc/explanations/listing.rst deleted file mode 100644 index 2b1347a4626..00000000000 --- a/doc/explanations/listing.rst +++ /dev/null @@ -1,52 +0,0 @@ -============================================ -Listing Cardano native assets on an exchange -============================================ - -There currently are many native assets running on Cardano, and new ones -are added daily. Some of these native assets have done well in the -crypto marketplace, where community members and financial institutions -have shown interest and made investments. A `non-exhaustive -list `__ of native assets running on Cardano -is available. - -Going public with Cardano native assets -======================================= - -Token creators have two options to make their tokens available to the -public: - -- they can sell the native asset privately in a token sale, or -- use an exchange (i.e., list the native asset on an exchange while - adhering to the exchange’s policies and guidelines) - -Private token sale ------------------- - -Native asset creators intending to sell their tokens privately should -conduct due diligence and research before deciding what is the best -route to commercialize their tokens. - -Listing your token on an exchange’s marketplace ------------------------------------------------ - -Native asset creators might decide to use an exchange to list and sell -their tokens. Every exchange operates by their own specific set of -rules, guidelines, and legal policies regarding token listing. - -Cardano can help in answering any questions from a technical perspective -only. We can address issues such as the token creation, minting, -burning, etc., while any questions related to the listing process should -be directed to the respective exchange. - -If you have created a native asset and intend to list it on an exchange, -we suggest consulting with the exchange directly beforehand. Most -exchanges have an email address on their website that you can use to -start the listing process and answer any questions you might have. - -Need technical support with your token? -======================================= - -The Cardano Foundation is the first point of contact regarding technical -support for exchanges. If you have any technical issues or questions, -contact the Cardano Foundation on the usual support channel, or -alternatively, open a support ticket. diff --git a/doc/explanations/min-utxo-alonzo.rst b/doc/explanations/min-utxo-alonzo.rst deleted file mode 100644 index d7c745e424e..00000000000 --- a/doc/explanations/min-utxo-alonzo.rst +++ /dev/null @@ -1,120 +0,0 @@ -Minimum ada value calculation in Alonzo -======================================= - -There is no longer a ``minUTxOValue`` protocol parameter in Alonzo, it was -deprecated at the end of the Mary era. However, the requirement that each -UTXO must contain an amount of ada that depends on the size of the entry is -still enforced in the Alonzo era. -The size-dependent minimum ada amount in a UTXO is still referred to as the min-ada-value, and -is now calculated using the Alonzo parameter ``coinsPerUTxOWord``. - -The formula for the min-ada-value calculation, for a UTXO containing an output ``txout``, is: - -``utxoEntrySize (txout) * coinsPerUTxOWord`` - -where - -``utxoEntrySize (txout) = utxoEntrySizeWithoutVal + size (v) + dataHashSize (dh)`` - -The ``v`` variable is the token bundle inside the ``txout`` output. -The minimum ada value calculation relies on the ``size`` function for determining -the size of a token bundle or a lovelace value, which is described in -the Mary era min-value document. - -The variable ``dh`` is the hash of the datum that is contained in the output. If there is -no datum, the hash is represented by ``Nothing``, and takes up ``0`` space. If there -is a datum in the output, it takes up ``10`` words of memory space. - -Example minimum ada value calculations and constants -#################################################### - -Note that the ``coinsPerUTxOWord`` is a protocol parameter and is subject to -change. The values ``utxoEntrySizeWithoutVal`` and ``dataHashSize (dh)`` -are fixed at least for the entire Alonzo era. - -The following table gives the values of the constants used in the calculation above. -Recall that - -``1 ada = 1,000,000 lovelace`` - -+------------------------------------------+---------------------+ -| Ada-only min-utxo value |1,000,000 lovelace | -+------------------------------------------+---------------------+ -| ``utxoEntrySizeWithoutVal`` |27 words | -+------------------------------------------+---------------------+ -| ``coinsPerUTxOWord`` |34,482 lovelace | -+------------------------------------------+---------------------+ -| ``dataHashSize (dh)``, ``dh = Nothing`` |0 words | -+------------------------------------------+---------------------+ -| ``dataHashSize (dh)``, ``dh <> Nothing`` |10 words | -+------------------------------------------+---------------------+ - -** NO datum hash: ** - -+--------------------------+-----------------+-----------------+-------------------+------------------+------------------+---------------------------------+ -| | One policyID, | One policyID, | One PolicyID, | Two PolicyIDs, | Two PolicyIDs, | Three PolicyIDs, | -| | | | | | | | -| | one 0-character | one 1-character | three 1-character | one 0-character | one 1-character | ninety-six 1-character | -| | | | | | | | -| | asset name (i) | asset name (ii) | asset names (iii) | name (iv) | name for each (v)| names between them (total) (vi) | -+--------------------------+-----------------+-----------------+-------------------+------------------+------------------+---------------------------------+ -| size of value | 11 | 12 | 15 | 16 | 17 | 173 | -+--------------------------+-----------------+-----------------+-------------------+------------------+------------------+---------------------------------+ -| ``utxoEntrySize`` | 38 | 39 | 42 | 43 | 44 | 200 | -+--------------------------+-----------------+-----------------+-------------------+------------------+------------------+---------------------------------+ -| ``minUTxO`` (in lovelace)| 1,310,316 | 1,344,798 | 1,448,244 | 1,482,726 | 1,517,208 | 6,896,400 | -+--------------------------+-----------------+-----------------+-------------------+------------------+------------------+---------------------------------+ - -** WITH datum hash: ** - -+--------------------------+-----------------+--------------------+------------------+ -| | One policyID, | One PolicyID, | Two PolicyIDs, | -| | | | | -| | one 0-character | three 32-character | one 0-character | -| | | | | -| | asset name (i) | asset name (vii) | name (viii) | -+--------------------------+-----------------+--------------------+------------------+ -| size of value | 11 | 26 | 16 | -+--------------------------+-----------------+--------------------+------------------+ -| ``utxoEntrySize`` | 48 | 63 | 53 | -+--------------------------+-----------------+--------------------+------------------+ -| ``minUTxO`` (in lovelace)| 1,655,136 | 2,172,366 | 1,827,546 | -+--------------------------+-----------------+--------------------+------------------+ - -The following are calculations of the sizes of token bundles (values) -described in the tables above. These are according to the ``size`` function -given in the min-ada-value document for the Mary era. - -* (i) : ``6 + FLOOR(((1 * 12) + 0 + (1 * 28) + 7)/8, 1) = 11`` - -* (ii) : ``6 + FLOOR(((1 * 12) + 1 + (1 * 28) + 7)/8, 1) = 12`` - -* (iii) : ``6 + FLOOR(((3 * 12) + (3*1) + (1 * 28) + 7)/8, 1) = 15`` - -* (iv) : ``6 + FLOOR(((2 * 12) + 0 + (2 * 28) + 7)/8, 1) = 16`` - -* (v) : ``6 + FLOOR(((2 * 12) + (1*2) + (2 * 28) + 7)/8, 1) = 17`` - -* (vi) : ``6 + FLOOR(((96 * 12) + 96 + (3 * 28) + 7)/8, 1) = 173`` - -* (vii) : ``6 + FLOOR(((3 * 12) + 96 + (1 * 28) + 7)/8, 1) = 26`` - -* (viii) : ``6 + FLOOR(((3 * 12) + 96 + (1 * 28) + 7)/8, 1) = 16`` - - -Constraint on the token bundle size -################################### - -In addition to the min-ada-value requirement, the ledger enforces a constraint -on the sizes of token bundles in transaction outputs. The reason for having this -constraint is to ensure that any single output is, in most cases, not so big -that a transaction attempting to spend it would have to exceed the maximum -transaction size. - -For this constraint, the size of the token bundle is not estimated (as for the min-ada-value -constraint), but rather taken to be the size of the serialized representation of -the token bundle. We do not provide a formula for the serialized size calculation here. -The following protocol parameter gives this constraint, and has the -following current value currently (subject to change): - -``maxValSize = 4000`` bytes, ie. ``500`` words diff --git a/doc/explanations/min-utxo-mary.rst b/doc/explanations/min-utxo-mary.rst deleted file mode 100644 index c6268adf60f..00000000000 --- a/doc/explanations/min-utxo-mary.rst +++ /dev/null @@ -1,146 +0,0 @@ -Minimum ada value requirement -============================== - -UTXOs on the ledger may contain a heterogeneous collection of tokens, including ada, which is a limited resource in the Cardano system. Requiring some amount of ada to be included in every UTXO (where that amount is based on the size of the UTXO, in bytes), limits the maximum total size taken up by UTXO entries on the ledger at any given time. - -The maximum possible UTXO size (the sum of the sizes of all UTXO entries) is implicitly adjusted by raising and lowering the ``min-ada-value`` variable. In this way, the constraint protects the Cardano ledger from growing beyond a certain size. A ledger without a size bound is vulnerable to being populated by so much data that users will unable to process it (or run a node) with machines meeting the recommended specifications for running a node. - -The ada-only case -########################### - -Because of the min-ada-value constraint, a guaranteed -bound on the number of entries in an ada-only UTXO is - -``max No. UTxOs <= (total ada in circulation) / (minimum ada value)`` - -This formula bounds the number of UTXO entries, but says nothing about adjusting -for the size of each entry, because all UTXO entries that contain only ada -are (close enough to) the same size. The size of the UTXO set is bounded by - -``max UTxO size <= (max No. UTxOs) * (max UTxO entry size) + overhead`` - -In the multi-asset Cardano ledger, UTXO entries have different sizes. In particular, -any entries containing a non-ada asset contain records of the Policy IDs, asset names, -and quantities of each of the non-ada assets. To maintain the ``max UTxO size`` -bound on the UTXO stored on the ledger with variable entry sizes, -we must adjust the ``minimum ada value`` for each UTXO entry (based on its size). - -Below, we present a calculation and a more detailed justification for this adjustment. - - -Minimum ada value calculation -############################# - -The minimum ada amount required to be contained in every ada-only UTXO with no additional data (ie, a UTXO containing only the address and ada amount) is a protocol parameter of the Cardano system, called : ``minUTxOValue`` - -The size of such a UTXO has an upper bound : ``adaOnlyUTxOSize`` - -We can calculate the upper bound of the UTXO size ``u`` containing non-ada tokens : ``sizeBound (u)`` - -We want to calculate the min-ada required to be contained in ``u`` : ``minAda (u)`` - -A minUTxOValue amount of ada pays for ``adaOnlyUTxOSize`` bytes of UTXO storage on the ledger. To make the min-ada-value proportional for all UTXOs, the following proportion must be satisfied : - - ``minUTxOValue / adaOnlyUTxOSize = minAda (u) / sizeBound (u)`` - -The min-ada calculation for any UTXO approximates the above formula. This uses the constants, - - ``coinSize = 0`` (note: this is an implementation error, and will be changed to the correct value, 2, in the next fork. This will decrease the minimum ada value by a small percentage) - - ``utxoEntrySizeWithoutVal = 27`` - - ``adaOnlyUTxOSize = utxoEntrySizeWithoutVal + coinSize = 27`` - -The functions used in the formula below are : - -* ``quot a b`` is the quotient of ``(a, b)``, ie. - ``quot 11 5 = 2`` because ``11 = 5 * 2 + 1`` - -* ``numAssets`` : the number of distinct AssetIDs in ``B``, eg. if - ``B = [(policyID1, myAssetNameSBS, 10), - (policyID1, yourAssetNameSBS, 5), - (policyID2, someAssetNameSBS, 250), - (policyID3, someAssetNameSBS, 43)]`` - - ``numAssets B = 4`` - -* ``numPIDs`` : the number of distinct PolicyIDs in ``B`` - eg. if ``B`` is as above, ``numPIDs B = 3`` - (which are ``policyID1, policyID2, policyID3``) - -* ``sumAssetNameLengths`` : the sum of the length of the ByteStrings representing distinct asset names - eg. if ``B`` is as above, - - ``sumAssetNameLengths B = length myAssetNameSBS + length yourAssetNameSBS + length someAssetNameSBS`` - -* ``pidSize`` : the length of the hash of a policy (ie, the length of the PolicyID). These lengths are the same for all policies, and are dictated by the current hashing algorithm used to compute payment and staking address hashes. - - ``pidSize B = 28`` currently (also, in the next era) - -* ``roundupBytesToWords`` converts bytes to 8-byte long words, rounding up - ``roundupBytesToWords b = quot (b + 7) 8`` - -* ``size B`` is size of the token bundle ``B`` in 8-byte long words : - ``size B = 6 + roundupBytesToWords (((numAssets B) * 12) + (sumAssetNameLengths B) + ((numPids B) * pidSize))`` - -For a UTXO containing a token bundle ``B`` the min-ada-value calculation is as follows : - -* Case 1 : Token bundle ``B`` in the UTxO ``u`` contains only ada (no other tokens) - ``minAda (u) = minUTxOValue`` - -* Case 2 : Token bundle ``B`` in the UTxO ``u`` contains ada as well as other tokens - ``minAda (u) = max (minUTxOValue, (quot (minUTxOValue, adaOnlyUTxOSize)) * (utxoEntrySizeWithoutVal + (size B)))`` - - -**As a consequence of this design,** - -- It is impossible to make outputs containing only custom tokens -- The number of each token kind in an output can slightly affect the min-ada-value of this output. This is because the minimum UTXO value takes memory overhead into account when storing it on a running computer. The increase in ada value affects the memory overhead *insignificantly*, however, adding more multi-assets affects this value much more. The reason for this is that the names and policy IDs of each of the types of tokens take up additional space in the output. -- Sending custom tokens to an address always involves sending the min-ada-value of ada to that address alongside the custom tokens (by including the ada in the same output). If - the address is not spendable by the user sending the tokens, the ada sent alongside the tokens no longer belongs to the sender. -- Before transferring custom tokens, users may choose to use off-chain communication to negotiate who supplies the ada to cover the min-ada-value in the output made by the transferring transaction -- To recover the ada stored alongside custom tokens in an output O, the user must either: a) Spend the output O, and burn the custom tokens stored therein b) Spend an output O and an output O’, and consolidate the tokens therein with the same collection of types of custom tokens stored in another output (spent within the same transaction) - -Eg. ``(CryptoDoggiesPolicy, poodle, 1)`` contained in O can be consolidated with -``(CryptoDoggiesPolicy, poodle, 3)`` in O’, for a total of ``(CryptoDoggiesPolicy, poodle, 4)`` in a new output made by the consolidating transaction. - -- Splitting custom tokens into more outputs than they were contained in before the transaction getting processed requires using, in total, more ada to cover the min-ada-value, as ada is needed in the additional outputs. - -**Example min-ada-values and calculations** - -+----------------------------------------+---------------------+ -|Ada-only ``minUTxOValue`` (in lovelace) |1,000,000 (1 ada) | -+----------------------------------------+---------------------+ -| ``utxoEntrySizeWithoutVal`` |27 | -+----------------------------------------+---------------------+ -| ``coinSize`` |0 | -+----------------------------------------+---------------------+ -| ``txoutLenNoVal`` |14 | -+----------------------------------------+---------------------+ -| ``txinLen`` |7 | -+----------------------------------------+---------------------+ -| ``coinsPerUTxOWord`` (in lovelace) |37,037 | -+----------------------------------------+---------------------+ - -+---------------------+----------------+-----------------+------------------+------------------+------------------+ -| | One policyID, | One policyID, | One PolicyID, | One PolicyID, | 60 PolicyIDs, | -| | | | | | | -| | no asset names | one 1-character | one 32-character | 110 32-character | each with one | -| | | | | | | -| | (i) | asset name (ii) | asset name (iii) | names (iv) | 32-character name| -+---------------------+----------------+-----------------+------------------+------------------+------------------+ -| size of value | 11 | 12 | 15 | 615 | 546 | -+---------------------+----------------+-----------------+------------------+------------------+------------------+ -| ``minUTxO`` | 1,407,406 | 1,444,443 | 1,555,554 | 23,777,754 | 21,222,201 | -+---------------------+----------------+-----------------+------------------+------------------+------------------+ -| ``minUTxO`` (in ada)| 1.407406 | 1.444443 | 1.555554 | 23.777754 | 21.222201 | -+---------------------+----------------+-----------------+------------------+------------------+------------------+ - -* (i) : ``6 + FLOOR (((1 * 12) + 0 + (1 * 28) + 7) / 8) = 11`` - -* (ii) : ``6 + FLOOR (((1 * 12) + 1 + (1 * 28) + 7) / 8) = 13`` - -* (iii) : ``6 + FLOOR (((1 * 12) + 32 + (1 * 28) + 7) / 8) = 15`` - -* (iv) : ``6 + FLOOR (((110 * 12) + 32*110 + (1 * 28) + 7) / 8) = 615`` - -* (v) : ``6 + FLOOR (((60 * 12) + 60*32 + (60 * 28) + 7) / 8) = 546`` diff --git a/doc/explanations/policies.rst b/doc/explanations/policies.rst deleted file mode 100644 index 65f7a3ba3c6..00000000000 --- a/doc/explanations/policies.rst +++ /dev/null @@ -1,111 +0,0 @@ -Minting policy -================ - -A minting policy is the set of rules that govern the minting and burning of assets scoped under that policy. The point of a minting policy is to specify the conditions under which tokens are minted (or burned). For example, the rules might specify who has control over the asset supply through minting and burning. - -Minting policies are defined by the users who want to create a new asset. For example, a user might wish to only allow themselves to mint any more of a certain kind of token. This would be specified in the policy. - -Minting rules can be expressed: - -- As very basic set of rules that is made up of (ANDs and ORs of): - - * A specification of what signatures are needed to allow the mint (eg, a multisig specification, where no code is needed). - * A specification of during what slot the script can be spent from (eg, after slot 15 and before slot 20) - -- With a Plutus Core script - -Adherence to minting policies is checked by the node at the time a transaction is processed, by running the code or checking the relevant signatures. Transactions must adhere to all the minting policies of all assets that the transaction is attempting to mint. - -Important points about minting policies and assets scoped under them -******************************************************************** - -* All assets necessarily have a minting policy. For example, the minting policy of ada is 'new ada can never be minted'. -* A token is associated with (eg, scoped under) exactly one minting policy. -* A single policy specifies both minting and burning conditions of tokens scoped under it. Adherence to it is checked both at the time of minting as well as burning. -* An asset cannot ever change its associated minting policy. This association is permanent. In other words, existing tokens cannot be associated with a new policy. Users can, however, buy back and burn all existing tokens and mint new ones, with a new minting policy. Note that this is a feature, not a bug. -* If an existing asset on the ledger is scoped under a particular policy, it is guaranteed that it was originally minted according to that policy. -* Unless tokens of a given policy are being minted in a transaction, the actual policy is irrelevant. It is just used as an identifier of the asset. -* Assets associated with different minting policies are never fungible with one another. They can be traded in the same way one may use USD to buy CAD: the amount of CAD you can buy with a fixed amount of USD depends on the exchange rate of the place where you do the trade. - -Association between an asset and its minting policy -****************************************************** - -The association between an asset and its minting policy is permanent for safety reasons: this feature protects the users and the system from illegitimately minted tokens. - -If the minting policy of a token changes, it is not really the same token any more, and its value cannot be compared to that of the original token. This permanent asset-policy association scheme is integral to defining high-assurance policies. Loosening this identification opens the MA scheme to various attacks. Having a permanent association between these allows us to guarantee that every token was minted in accordance with its minting policy, and not any other policy which it might have previously been associated with. - -Note that this is not as restrictive as it sounds. In a loose parallel with US monetary policy, we can say that the policy is 'government and laws set the policy', and this is a policy which requires looking up the current laws (which themselves could change), and only minting money in adherence to them. - -Minting policy examples -*************************** - -* Single-issuer policy -* Time-locked mint policy -* One-time mint policy - -Note: There are many other types of minting policies. - -**Single-issuer policy** - -A single-issuer minting policy specifies that only the entity holding a particular set of keys is allowed to mint tokens of the particular asset group. For example, the set of keys specified in the minting policy must have signed the minting transaction. - -An example of an asset group that would use a single-issuer policy would be tokens representing baseball cards. The company manufacturing legitimate collectors' cards would publish the keys required by the minting script to mint new baseball cards. This would mean that no new baseball card tokens can be minted without the company's signatures. -This type of policy can be implemented without Plutus smart contracts. - -**Time-locked minting policy (token-locking)** - -This type of policy can be used to specify when tokens can be spent from an address. In particular, - -- only in or after a specified time slot -- only before a specified time slot - -This type of policy is usually not used by itself. Usually, it is in conjunction with the multisignature or single issuer policy, e.g. This output can be spent after slot *s* and only by a transaction signed by key *k*. - -This type of policy can be implemented without Plutus smart contracts. - -**One-time minting policy** - -In a one-time mint policy, the complete set of tokens of a given asset group is minted by one specific transaction. This means that no more tokens in that particular asset group will ever be minted. This type of policy needs Plutus smart contracts to be implemented. - -One-type mint policies would be useful for generating concert ticket tokens for a specific concert, for example. The venue capacity is known ahead of time, so there'll be no need to ever allow more tickets to be minted. - -Minting transactions -******************** - -To introduce new quantities of new tokens on the ledger (minting) or to remove existing tokens (burning), each transaction features a mint field. The transactions where the mint field is not empty are known as minting transactions. The use of this field needs to be tightly controlled to ensure that the minting and burning of tokens occurs according to the token’s minting policy - -Apart from the mint field, minting transactions must also carry the minting policies for the tokens they are minting, so that these tokens can be checked during validation. - -The outcome of processing a minting transaction is that the ledger will contain the assets included in the mint field, which is included in the balancing of the transaction: if the field is positive, then the outputs of the transaction must contain more assets than the inputs provide; if it is negative then they must contain fewer. - -It is important to highlight that a single transaction might mint tokens associated with multiple and distinct minting policies. For example, ``(Policy1, SomeTokens)`` or ``(Policy2, SomeOtherTokens)``. -Also, a transaction might simultaneously mint some tokens and burn others. - -The native token lifecycle -************************** - -The native token lifecycle consists of five main phases: - -1. minting -2. issuing -3. using -4. redeeming -5. burning - -The following diagram outlines the interaction between the system components: - -.. image:: https://ucarecdn.com/75b79657-9f94-41b9-9426-7a65245f14ee/multiassetdiagram.png - -Each of these logical phases involves transactions on the Cardano blockchain, which may incur fees in ada. The main groups of actors are: - -- **Asset controllers**, who define the policy for the asset class, and *authorise* token issuers to mint/burn tokens. They may also retain co-signing rights for any tokens that are issued/burnt. -- **Token issuers**, who mint new tokens, maintain the reserve of tokens in circulation, issue them to token holders, and burn tokens when they are no longer of use. -- **Token holders**, who hold tokens, send them to other users, use them for payment, and who may redeem them with the issuers when they have finished using them. Token users may include normal users, exchanges etc. - -The lifecycle of multi-asset tokens starts with their creation – **minting**, which refers to the process whereby new tokens are created by one or more *token issuers* in accordance with the *monetary policy script* that the *asset controller* has defined. New tokens will usually be created to fulfil specific purposes. For example, *fungible* or *non-fungible* (unique) tokens may be created to be used for specific payment, purchasing, or exchange needs. When a new token is minted, the total *token supply* for that token increases, but there is no impact on the *ada supply*. Minting coins and transferring them to new addresses may require an ada deposit to be paid, which may be proportional to the number of different tokens that are held, for example. - -Token holders will hold tokens in their wallets, may pass them on to other users, exchange them for items of value (including non-native tokens), etc. in exactly the same way that they can use ada. When a user has finished using the token, they may choose to **redeem** them. This means that tokens are returned to an issuer (perhaps in return for a product, service, or some other currency, for instance). Once redeemed, tokens could then be re-issued to other users as needed. Token holders will need to maintain some ada in their wallets to pay for transaction fees. - -When tokens become redundant, they can be **burned**, if desired, in accordance with the underlying monetary policy script. The process of burning destroys these tokens (removes them from circulation), and the total token supply decreases. Any deposits will be returned at this point. The burning process is identical for fungible and non-fungible tokens. - - Note: The multi-asset token lifecycle potentially allows tokens to be obtained and reissued by other parties - token holders who act as *reissuers* for the token. This can be done to e.g., enable trading in multiple asset classes, maintain liquidity in one or more tokens (by acting as a broker), or to eliminate the effort/cost of token minting, issuing or metadata server maintenance. Thus, both reissuers and issuers can gain from such a deal - eliminating cost and effort, maintaining separation and integrity, and injecting value into the asset class. diff --git a/doc/explanations/token-bundles.rst b/doc/explanations/token-bundles.rst deleted file mode 100644 index c8e57eb24db..00000000000 --- a/doc/explanations/token-bundles.rst +++ /dev/null @@ -1,143 +0,0 @@ -Assets, tokens, and token bundles -================================= - -Terminology -#################### - -**Asset** - -An asset is an object that represents value on the blockchain. These objects can be a variety of things, such as a digital asset like ada, a role, a credential, or a quantity of goods. The term asset can refer to either: - -* the identifier of a class of objects, such as 'ada' or -* a particular quantity of a specific object, such as '100 lovelace', 'this house' or 'these 10 tonnes of coffee' - -An asset is uniquely identified by an asset ID. - -**Asset ID** - -A pair of both the **policy ID** and **asset name**. It is important to note that although ada can *act* as an asset, it is not represented using an explicit policy ID. - -Tokens that have the same asset ID have the property of being fungible with each other, and are *not* fungible with tokens that have a different asset ID. An asset ID is a unique identifier for a collection of fungible tokens. - -**Policy ID** - -The unique identifier that is associated with a minting policy. Let’s take a look at two policy ID examples: - -``NFLPlayerCardsPolicyID`` and ``RushConcertPolicyID``. - -The ID is computed by applying a hash function to the policy itself, and is thus a sequence of letters and numbers. For example: - -``NFLPlayerCardsPolicyID = e0d123e5f316bef7`` - -**Asset name** - -An (immutable) property of an asset that is used to distinguish different assets within the same policy. Unlike the *policyID*, the asset name does not refer to any code or set of rules, and can be common words. In ``TB_Example``, the names for the assets with policy ID ``RushConcertPolicyID`` are: - -``Tickets`` and ``VIPTickets`` - -However, the policy under which an asset is scoped can specify some constraints on valid asset names. - -Different policies can use the same asset names for different tokens. For example, the token bundle: - -``FAKERushConcertPolicyID { (Tickets, 500), (VIPTickets, 50) }`` - -contains ``Tickets`` and ``VIPTickets`` asset names, but these are not fungible with the ``RushConcertPolicyID`` tickets that have been defined in the ``TB_Example`` token bundle, as they are scoped under different policies. - -**Token** - -A *token* is a short term for 'asset token', which is the on-chain representation of an asset and its basic accounting unit. A token can represent one ada, one USDT, one house, or the value of ten tonnes of coffee, for example. - -**Policy or minting policy** - -A set of rules that govern the minting and burning of assets scoped under that policy. There are no actual policies in ``TB_Example`` above, only references to them (ie, their IDs). The association of an asset with its minting policy is permanent, and made at the time of the asset issuance necessarily under that policy. - -**Quantity** - -The number of tokens with a particular asset ID that is specified in a token bundle. For example, there are 500 tokens with asset ID - -``(RushConcertPolicyID, Tickets)`` - -in ``TB_Example``. This means that there are 500 non-vip Rush concert tickets in this bundle. - -**Value** - -The type which is used by the ledger to represent tokens that are tracked. Before Mary, value was just a quantity of ada. After Mary, value became a bundle of tokens with associated quantities. The ledger never talks about bare 'tokens', it always uses 'value' instead. For example: - -* 1 lovelace and 3 USDT -* 1000 lovelace and 100 USDT -* Just 10 lovelace - -**Script** - -A piece of code that runs on the Cardano blockchain. The script is used to support smart contracts. Cardano supports several scripting languages like the multisig language in Mary and Plutus Core since Alonzo. For example, a multisig script can state that the transaction is authorized if it is signed by both Alice and Bob. - -**Minting policy script** - -A script that determines whether a transaction is allowed to mint or burn a particular currency. For example, a multisig script stating the minting or burning is authorized if the transaction is signed by Alice. Alice, therefore, has complete freedom to mint and burn tokens as she desires. - - -Token bundle -#################### - -A token bundle is a heterogeneous (‘mixed’) collection of tokens. Any tokens can be bundled together. Token bundles are the standard – and only – way to represent and store assets on the Cardano blockchain. - -Token bundles organize tokens into a particular kind of data structure (see example and explanation below), so that which tokens are fungible with which other tokens explicitly adheres to this organization. - -In previous versions of the Cardano ledger, ada amounts were specified in transaction and UTXO outputs. With the introduction of multi-asset support, these amounts have been extended with token bundles, which can specify an ada amount alongside quantities of other assets in a single output. - -Token bundles are contained in outputs and mint fields of transactions, and the outputs in the UTXO set tracked by the ledger. Note that certain fields of a transaction must still explicitly specify ada amounts, such as the fee field. - -Token bundle example -********************** - -Here is an example of a token bundle, let’s call it ``TB_Example`` : :: - - { - NFLPlayerCardsPolicyID { - (SomeNFLPlayerCard, 1), - (SomeOtherNFLPlayerCard, 1), - (YetAnotherNFLPlayerCard, 1)} - - RushConcertPolicyID { - (Tickets, 500), - (VIPTickets, 50)} - } - - -How and where are token bundles stored? -******************************************** - -Token bundles can be found: - -1. As the mint field of a transaction, indicating that the transaction is minting the tokens in the bundle. -2. In an output of a transaction or an output in the current UTXO tracked by the ledger, alongside the address of the output, e.g: - -``{ MyAddress, TB_Example }`` - -Splitting and combining token bundles -******************************************** - -Transactions can arbitrarily split and combine token bundles into different bundles. Note that assets with the same ID are always fungible with each other, even when contained in separate bundles. For example, we can split the bundle ``TB_Example`` into two: - -``TB_Example_Part1`` : :: - - { - NFLPlayerCardsPolicyID { - (SomeNFLPlayerCard, 1)} - - RushConcertPolicyID { - (Tickets, 200), - (VIPTickets, 20)} - } - -``TB_ExamplePart2`` : :: - - { - NFLPlayerCardsPolicyID { - (SomeOtherNFLPlayerCard, 1), - (YetAnotherNFLPlayerCard, 1)} - - RushConcertPolicyID { - (Tickets, 300), - (VIPTickets, 30)} - } diff --git a/doc/flake.nix b/doc/flake.nix deleted file mode 100644 index c28787b665d..00000000000 --- a/doc/flake.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ - outputs = inputs: { - packages = - builtins.mapAttrs (_: {nixpkgs, ...}: { - default = with nixpkgs; - stdenv.mkDerivation { - name = "ledger-docs"; - src = lib.sourceFilesBySuffices ./. [".py" ".rst" ".hs" ".png"]; - buildInputs = with python3Packages; [ - sphinx - sphinx_rtd_theme - sphinx-markdown-tables - sphinxemoji - recommonmark - # for regenerating requirements.txt - pip-tools - ]; - buildPhase = '' - # -n gives warnings on missing link targets, -W makes warnings into errors - sphinx-build -n -W . $out - ''; - dontInstall = true; - }; - }) - (inputs.main or (import ../nix/flake-compat.nix).defaultNix).legacyPackages; - }; -} diff --git a/doc/index.rst b/doc/index.rst deleted file mode 100644 index 4f36bad0f33..00000000000 --- a/doc/index.rst +++ /dev/null @@ -1,10 +0,0 @@ -The Cardano Ledger -================== - -The Cardano Ledger is the core of the Cardano blockchain. - -.. toctree:: - :caption: Ledger explanations - :maxdepth: 2 - - explanations/index diff --git a/doc/requirements.in b/doc/requirements.in deleted file mode 100644 index 35fdf291a7f..00000000000 --- a/doc/requirements.in +++ /dev/null @@ -1,4 +0,0 @@ -sphinx_markdown_tables==0.0.15 --e git+https://github.com/input-output-hk/sphinx_rtd_theme.git#egg=sphinx_rtd_theme -sphinxemoji==0.1.6 -recommonmark==0.7.1 diff --git a/doc/requirements.txt b/doc/requirements.txt deleted file mode 100644 index e0f8e24f144..00000000000 --- a/doc/requirements.txt +++ /dev/null @@ -1,69 +0,0 @@ -# -# This file is autogenerated by pip-compile with python 3.10 -# To update, run: -# -# pip-compile requirements.in -# --e git+https://github.com/input-output-hk/sphinx_rtd_theme.git#egg=sphinx_rtd_theme - # via -r requirements.in -alabaster==0.7.12 - # via sphinx -babel==2.10.3 - # via sphinx -certifi==2023.7.22 - # via requests -charset-normalizer==2.1.0 - # via requests -commonmark==0.9.1 - # via recommonmark -docutils==0.18.1 - # via - # recommonmark - # sphinx -idna==3.7 - # via requests -imagesize==1.4.1 - # via sphinx -jinja2==3.1.3 - # via sphinx -markdown==3.3.7 - # via sphinx-markdown-tables -markupsafe==2.1.1 - # via jinja2 -packaging==21.3 - # via sphinx -pygments==2.15.0 - # via sphinx -pyparsing==3.0.9 - # via packaging -pytz==2022.1 - # via babel -recommonmark==0.7.1 - # via -r requirements.in -requests==2.31.0 - # via sphinx -snowballstemmer==2.2.0 - # via sphinx -sphinx==5.0.2 - # via - # recommonmark - # sphinx-rtd-theme - # sphinxemoji -sphinx-markdown-tables==0.0.15 - # via -r requirements.in -sphinxcontrib-applehelp==1.0.2 - # via sphinx -sphinxcontrib-devhelp==1.0.2 - # via sphinx -sphinxcontrib-htmlhelp==2.0.0 - # via sphinx -sphinxcontrib-jsmath==1.0.1 - # via sphinx -sphinxcontrib-qthelp==1.0.3 - # via sphinx -sphinxcontrib-serializinghtml==1.1.5 - # via sphinx -sphinxemoji==0.1.6 - # via -r requirements.in -urllib3==1.26.18 - # via requests diff --git a/docs/LedgerEvents.md b/docs/LedgerEvents.md deleted file mode 100644 index c6d86eac6e0..00000000000 --- a/docs/LedgerEvents.md +++ /dev/null @@ -1,141 +0,0 @@ -# Ledger Events - -## Overview - -The main API function provided by the ledger, `applyBlockOpts`, can be configured to return ledger events by -setting the event policy to `EPReturn` in the `asoEvents` field of `ApplySTSOpts`. -The events come at the cost of performance, but are useful for understanding changes to the ledger state -after each block is applied. Note that there are no guarantees about the ordering of the events -for any given block. - -Note that when we say that an event only occurs on an epoch boundary, we mean that it only occurs on the first -block of a new epoch. - -## List of Events - -### `NewEpoch epoch` - -This event signals the fact that the given block is the first block of a new epoch, namely `epoch`. - -### `RetiredPools refundPools unclaimedPools epoch` - -This event only occurs on epoch boundaries, -it provides information about pools which have been retired. -In particular, it provides the stake pool registration deposit amount -which is being returned. -Note that any given stake credential can be registered to multiple stake pools as the account -where the leader rewards are received. - -When a stake pool retires, the refund is added to the stake pool's stake address, -provided the stake addresses is registered. -The field `refundPools` provides this information. -It is a map from stake credentials to another map, namely a map of pool IDs -to the deposit refund. - -The field `unclaimedPools` is similar to `refundPools`, but captures the information -for those stake pools whose listed stake credential is not registered. - - -### `StakeDistEvent stakeMap` - -A new stake distribution snapshot is taken on every epoch boundary, -corresponding to the "mark" snapshot as described in the Shelley ledger formal spec. -This event provides the new snapshot, `stakeMap`, which is -a map from registered stake credentials to the stake pool it is registered -to and the amount of stake (in lovelace) that it controls. - -### `MirTransfer mir` - -This event only occurs on epoch boundaries, -it describes any credits that are being added to the reward accounts from -MIR certificates. -The field `mir` is a record which contains: -* A map from stake credentials to lovelace, to be taken from the reserves. -* A map from stake credentials to lovelace, to be taken from the treasury. -* Additions to the reserves, being taken from the treasury. -* Additions to the treasury, being taken from the reserves. - -### `NoMirTransfer mir availableReserves availableTreasury` - -This event only occurs on epoch boundaries, -it describes a failed MIR certificate (due to a lack of funds in the reserves or treasury). -The field `mir` is the same as in the `MirTransfer` event. -The fields `availableReserves` and `availableTreasury` give the total available lovelace -that a MIR certificate can utilize from the reserves or the treasury (respectively). - -### `RestrainedRewards e eraIgnored unregistered` - -This event only occurs on epoch boundaries, -it describes rewards which are calculated by the ledger, but are not -delivered to a stake address. -The field `e` is the epoch number of the new epoch. -The field `eraIgnored` corresponds to the rewards not delivered -due to the Shelley bug described in Section 17.4 of the Shelley ledger specification. -The field `unregistered` corresponds to the rewards not delivered -due to the account being de-registered. - -### `RupdEvent e rewards` - -This event describes the new reward calculations done as a part of the -incremental reward calculation. -The field `e` is the epoch when these rewards become available -(the epoch following the one when the calculation is performed). -Some of these rewards may not end up being delivered, due to the reasons -described in the `RestrainedRewards` event. -The field `rewards` is a map from stake credentials to lovelace. - -### `TotalRewardEvent e regRU` - -This event only occurs on epoch boundaries, it contains all the rewards which -are delivered on the epoch boundary. -The field `e` is the epoch number of the new epoch. -It is related to the other rewards events by the property: -``` -RupdEvent - RestrainedRewards = Total -``` - -### `TotalDeposits txHash depositChange` - -This event happens for every transaction, it contains the sum of all the deposits -paid by the given transaction (both stake credential registration deposits and -stake pool registration deposits) minus the sum of all refunds. It also contains -the transaction hash. - -### `RegisterPool poolID` - -This event happens for every new stake pool registration certificate. -The field `poolID` is the stake pool ID. - -### `ReregisterPool hk` - -This event happens for every stake pool re-registration certificate -(a change in stake pool parameters). -The field `poolID` is the stake pool ID. - -### `SuccessfulPlutusScriptsEvent debugInformation` - -This event happens for every collection of Plutus scripts in a given transaction -which successfully execute. -The field `debugInformation` is a list of `PlutusDebug`, which is a record containing -all the information needed to re-run a Plutus script. - -### `FailedPlutusScriptsEvent debugInformation` - -This event is the same as `SuccessfulPlutusScriptsEvent`, except that it contains the -information for all the failed Plutus scripts in a single transaction. - -### `EpochBoundaryRatifyState ratifyState` - -This event happens on the epoch boundary and gives us the ratification state (`RatifyState era`) _up to the current epoch boundary_. - -### `GovNewProposals txid proposalsSnapshot` - -This event is triggered on each tx and gives us the votes, proposals and txid of a particular tx. - -### `TxUTxODiff utxosConsumed utxosCreated` - -This event is triggered on each tx and gives us the consumed and created UTxOs of that valid tx. - -## Notes / TODO - -There appears to be multiple, redundant `NewEpoch` events. diff --git a/docs/adr/2022-12-01_001-record-architectural-decisions.md b/docs/adr/2022-12-01_001-record-architectural-decisions.md deleted file mode 100644 index a8d6d9b0f82..00000000000 --- a/docs/adr/2022-12-01_001-record-architectural-decisions.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -slug: 1 -title: | - 1. Record Architecture Decisions -authors: [] -tags: [Accepted] ---- - -## Status - -Accepted - -## Context - -We are in search for a means to describe our technical architecture. - -We prefer light-weight documentation methods which accomodate change easily. - -The [Hydra team](https://github.com/input-output-hk/hydra) -has had success with the solution described below. -See the [Hydra ADR 1](https://github.com/input-output-hk/hydra/blob/master/docs/adr/2021-06-05_001-record-architectural-decisions.md). - -## Decision - -* We will use _Architecture Decision Records_, as described by Michael Nygard in this [article](http://thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions). -* We will follow the convention of storing those ADRs as Markdown formatted documents stored under `docs/adr` directory, as exemplified in Nat Pryce's [adr-tools](https://github.com/npryce/adr-tools). This does not imply we will be using `adr-tools` itself. - -## Consequences - -See Michael Nygard's article, linked above. diff --git a/docs/adr/2022-12-05_002-version-serialization-schemes.md b/docs/adr/2022-12-05_002-version-serialization-schemes.md deleted file mode 100644 index 9cfe8d80467..00000000000 --- a/docs/adr/2022-12-05_002-version-serialization-schemes.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -slug: 2 -title: | - 2. Versioned Serialization Schemes -authors: [Jared Corduan] -tags: [Accepted] ---- - -## Status - -Accepted - -## Context - -The cardando ledger uses CBOR to serialize blocks and transactions on the network. -When we encounter a problem with our deserializers, such as in #3003, #2965 and #2444, -it can be very difficult to implement a fix. -It is difficult because we can only fix such issues during a hard fork, -and leading up to the hard fork we must maintain two serializations for the same type in order -to not cause unintended network splitting -(the problematic version must be used before the hard fork, and the fixed version is used afterwards). -This can be especially tricky with the FromCBOR typeclass, -since it is not always easy to search for where all the problematic uses are located. - -This issue is captured in #3014. - -## Decision - -Create a new typeclass to replace ToCBOR and FromCBOR which depends not only on the type -but also on the protocol version (or, alternatively, the ledger era). -The first instances will all be implemented identically to our current -ToCBOR and FromCBOR instances for all protocol versions up to the current one. - -## Consequences - -This change affects downstream components that rely on the ledger serializers, -since they will now need to supply either the protocol version or a ledger era -(using a ledger era is less precise, due to intra-era hard forks). - -This change will let us easily fix several outstanding issues, and will make fixing future -issues with the serialization much easier. - -A deprecation cycle was proposed in [CIP-80](https://github.com/cardano-foundation/CIPs/pull/372). diff --git a/docs/adr/2022-12-05_003-track-individual-deposits.md b/docs/adr/2022-12-05_003-track-individual-deposits.md deleted file mode 100644 index b0eb16dccbc..00000000000 --- a/docs/adr/2022-12-05_003-track-individual-deposits.md +++ /dev/null @@ -1,89 +0,0 @@ ---- -slug: 3 -title: | - 3. Track individual deposits -authors: [Jared Corduan] -tags: [Accepted] ---- - -## Status - -Accepted - -## Context - -Individual deposits are not currently tracked by the ledger, -only the values as given in the protocol parameters. -This has several problems and needs to be addressed. - -See #3113. - -### What happens currently if the deposit amounts are changed? - -We currently collect deposits for: -* stake credential registrations -* stake pool registrations - -The amount in Lovelace is determined by two protocol parameters. -In the event of a change to these parameters, the reserves absorb the difference, -assuming it is large enough (otherwise the entire protocol parameter update is ignored). - -In particular: - -* If the deposit amount is raised, the appropriate number of Lovelace is removed from the - reserves and added to the deposit pot. Users de-registering these resources will be given - back a larger deposit than they originally gave. -* If the deposit amount is lowered, the appropriate number of Lovelace is added to the reserves - and removed from the deposit pot. Users de-registering these resources will be given back a - smaller deposit than they originally gave. - - -### Pros for this methods - -* We do not have to track the value of each deposit paid by the many registered stake credentials - (the stake pool deposits are less problematic since there are far fewer of them). - This is not only less complexity, but also less memory used. - -### Cons for this methods - -* Most folks expect a deposit to be paid back exactly. -* We cannot increase the deposit amount once the reserves hits zero. -* If folks know that the deposit amount is soon to be increased, - they can make free Lovelace by registering a lot of credentials. -* Because of the problems above, it is going to be incredibly hard to ever change the values. -* There is a serious issue involving hard forks explained below in its own subsection. - -#### Serious flaw with the current design - -Note the logic of the `NEWPP` rule. It checks three things: - -1. There is a non-trivial update. -2. There is enough in the reserves to account for increasing the deposit values. -3. The maxBlockSize is not being set to something obviously problematic. - -Note also that consensus makes the decision about whether or not to enact a hard fork based on the -protocol parameter update state two stability windows before the end of the epoch. - -This means that if quorum is met regarding changing the major protocol version, -but the update violates 2. or 3. above, consensus will change the era but the ledger will not -change the major protocol version, leaving the ledger in a split-brain state. - -We must therefore commit to accepting a protocol parameter update two stability windows from the -end of the epoch. This mean that: - -* We must check the max block size at the time the update is provided - (there is no good reason we are not doing it this way now). -* We must track the deposits and pay back exactly what was paid. - -## Decision - -Rewrite the ledger to track how much everyone deposited, and pay back exactly what they -originally deposited (we have the history, we just do not track it in the ledger state). - -## Consequences - -The already problematically large stake credential map will become larger, -but probably not more than one word (eight bytes) per stake credential if we are smart -about the implementation. - -All the cons listed above, especially the issue involving hard forks, are addressed. diff --git a/docs/adr/2022-12-05_004-untranslatable-data-in-script-context.md b/docs/adr/2022-12-05_004-untranslatable-data-in-script-context.md deleted file mode 100644 index d2ddeca550f..00000000000 --- a/docs/adr/2022-12-05_004-untranslatable-data-in-script-context.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -slug: 4 -title: | - 4. Untranslatable data in script context -authors: [Jared Corduan] -tags: [Accepted] ---- - -## Status - -Accepted - -## Context - -Sometimes there is data in a transaction which a Plutus script author might -expect to be present in the script context, but which we do not want to translate. -One example is the legacy Byron addresses. -Another example is the features which were added to the Babbage ledger era -(such as inline datums) which are not a part of the Plutus V1 script context since they did not -exist when Plutus V1 was released. - - -There are basically two options for dealing with such information: -1. Silently ignore parts of the relevant script context during the translation. -2. Force a phase 1 validation error. - -## Decision - -We chose option 2, since option 1 could lead to surprising and unfortunate mistakes by -script authors. - -## Consequences - -Scripts will fail phase 1 validation if used in a transaction that contains data not available -for the corresponding script context. -For example, one cannot spend a Plutus V1 output and pay to a Plutus V2 output with -inline datum at the same time. - -See this test suite for the list of untranslatable data at the time of the creation of this ADR: - -https://github.com/intersectmbo/cardano-ledger/blob/064acb8e7ab7b2aeef138ec0c821f8c5f1402621/eras/babbage/test-suite/test/Test/Cardano/Ledger/Babbage/TxInfo.hs#L190-L193 diff --git a/docs/adr/2022-12-05_005-remove-ptr-addresses.md b/docs/adr/2022-12-05_005-remove-ptr-addresses.md deleted file mode 100644 index 7cc3cc297b4..00000000000 --- a/docs/adr/2022-12-05_005-remove-ptr-addresses.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -slug: 5 -title: | - 5. Remove support for pointer addresses -authors: [Jared Corduan] -tags: [Accepted] ---- - -## Status - -Accepted - -## Context - -[CRC-2](https://github.com/cardano-foundation/CIPs/pull/374) provides context. - -The removal of pointer addresses is needed for -[Ouroboros Leios](https://iohk.io/en/research/library/papers/ouroboros-leios-design-goals-and-concepts/). - -## Decision - -We will remove support for pointer addresses. -We will accomplish this in two steps: - -1. First, we will prevent the creation of new pointer addresses by using the versioned serialization - scheme to reject deserializing transaction outputs that contain pointer addresses starting at - major protocol version 9. -2. Next, after mainnet is on major protocol version 9, we will make the ledger era that follows - translate the pointer addresses to enterprise addresses. - - -## Consequences - -Pointer addresses will no longer be available. -The existing ~11 pointer addresses will be converted to enterprise addresses. -(We could attempt to resolve the valid pointers at a hard fork that removes them, -but this would involved getting the millions of stake credentials into the -[translation context](https://github.com/intersectmbo/cardano-ledger/blob/8b6f8e1a75034ca66fd66a39d437252eec927d71/eras/conway/impl/src/Cardano/Ledger/Conway/Translation.hs#L66) -which is used by the consensus hard fork combinator, which would be very difficult and hence -not worth the effort.) - -The size in memory of the ledger state will be reduced -(there are millions of stake credentials). - -The hurdle to Ouroboros Leios will be removed. diff --git a/docs/adr/2022-12-05_006-cost-model-serialization.md b/docs/adr/2022-12-05_006-cost-model-serialization.md deleted file mode 100644 index ca360a805a8..00000000000 --- a/docs/adr/2022-12-05_006-cost-model-serialization.md +++ /dev/null @@ -1,102 +0,0 @@ ---- -slug: 6 -title: | - 6. Cost model serialization -authors: [Jared Corduan] -tags: [Accepted] ---- - -## Status - -Accepted - -## Context - -The current cost model serialization scheme is problematic: - -``` - costmdls = - { ? 0 : [ 166*166 int ] ; Plutus v1 - , ? 1 : [ 175*175 int ] ; Plutus v2 - } -``` - -The are two problems: - -* We cannot add a V3 cost model in the same protocol parameter update that initiates a hard fork. - We can only count on nodes to be updated after a hard fork - (chainChecks provides this fantastic guarantee), and so nodes that have not updated would not be - able to deserialize a V3 cost model. This is operationally annoying for us, - and also means we have to wait an extra epoch to use new versions of Plutus. -* We cannot add new fields to existing cost models. - -We need a more flexible serialization scheme that address these two problems. -Note that the ledger deserializes the CBOR list of integers into a map by using keys provided to -us by the Plutus library -(where the list is assumed to be ordered corresponding to the alphabetical sorting of the key). - -See #2902. - -## Decision - -* The Plutus function `mkEvaluationContext` will be changed to take `[Integer]` - instead of `Map Text Integer` (matching the wire spec). - * If `mkEvaluationContext` receives fewer integers than it needs (for a given version of Plutus), - it will return an error message - * If `mkEvaluationContext` receives at least as many integers as it needs, - it will return an evaluation context, possibly with a warning that too many integers were - supplied and ignored - -* The `CostModel` serialization will be made more permissive. - * It will accept any `[int]` - * It will store whatever `[int]` given to it, and also the results of `mkEvaluationContext` - * If it is for a version of Plutus that the ledger is unaware of, - it will not call `mkEvaluationContext` but instead store an appropriate error - * We will use the [versioned serialization scheme](docs/adr/2022-12-05_002-version-serialization-schemes.md) - to change the serialization at a given new major protocol version. - -### How this works, new language built-ins - -Suppose version `x` of the node supports Plutus V2 cost models with 10 fields. -Suppose version `x+1` of the node supports Plutus V2 cost models with 11 fields. -Let `f` be the new field, let `m` be the current major protocol version, and suppose that -Plutus V2 will not support `f` until `m+1`. - -During major protocol `m`: - -* Node `x` sees a cost model with 11 fields, it makes an `EvaluationContext` with the 10 fields - it knows about, but also stores a warning and the original 11 fields. - * It happily evaluates all V2 scripts, and Plutus will gracefully fail (phase 2) - if it sees `f` (it will fail to deserialize). -* Node `x+1` sees a cost model with 11 fields, it makes an `EvaluationContext` with all of them. - * It also happily evaluates all V2 scripts, and Plutus will gracefully fail (phase 2) - if it sees `f` (based on `m`). -* Node `x` shuts down, the operator updates the software, and comes back up with a node `x+1`. - Upon re-serialization of the ledger state, the operator is now in the case above (a normal `x+1` node). - -During major protocol `m+1`: -* Node `x` can no longer participate in the chain, due to the `ObsoleteNode` error. -* Node `x+1` is ready to process scripts with `f` in V2. - -### How this works, new Plutus versions - -Suppose version `x` of the node does not know anything about Plutus V3. -Suppose version `x+1` of the node adds support for Plutus V3. Let `m` be the -current major protocol version, and suppose that Plutus V3 is introduced at `m+1`. - -During major protocol `m`: - -* Node `x` sees a cost model for V3. It stores the cost model integers, but in place of an - `EvaluationContext` it stores an error. - * Any V3 script will be rejected since `x` does not know how to deserialize V3. -* Node `x+1` sees a cost model for V3, it makes an `EvaluationContext` for it. - * Any V3 script will be rejected by the Plutus evaluator based on `m`. -* Node `x` shuts down, the operator updates the software, and comes back up with a node `x+1`. - Upon re-serialization of the ledger state, the operator is now in the case above - (a normal `x+1` node). - -## Consequences - -We will be able to add new fields to existing cost models, -and we will be able to add cost models for new languages ahead of the hard forks -that introduce the languages. diff --git a/docs/adr/2022-12-12_007-optimize-ledger-view.md b/docs/adr/2022-12-12_007-optimize-ledger-view.md deleted file mode 100644 index fa9d491a448..00000000000 --- a/docs/adr/2022-12-12_007-optimize-ledger-view.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -slug: 7 -title: | - 7. Optimize TICKF -authors: [Jared Corduan] -tags: [Accepted] ---- - -## Status - -Accepted - -## Context - -Large computations on the epoch boundary are problematic. -In the past they have led to delayed block production in new epochs. -We have removed most of the problems surrounding large computations in the ledger on the epoch -boundary (such as making the reward calculation and the stake distribution calculation incremental), -but benchmarks from the consensus team still indicate performance problems in the ledger. -In particular, the `TICKF` transition, which is used for forecasting the ledger state in order -to check block headers and to check for leadership, still take too long. -The node needs to check for leadership once per slot (so once per second on mainnet), -so if `TICKF` takes a second to compute then the node is guaranteed to start skipping leadership checks. -The performance problems with `TICKF` can exacerbate situations like -[this](https://github.com/input-output-hk/cardano-node/issues/4421). - -Upon examination, the `TICKF` rule is still performing at least one large computation which can -be optimized, namely computing the per-pool stake distribution from the per-stake-credential -stake distribution using the delegation relation. -The computation is currently being done on the epoch boundary when it is first needed, -but could be performed on the previous epoch boundary. -In particular, the leadership check appears to be computing it repeatedly on every slot -crossing the epoch boundary until the first block in the new epoch is made. - -The per-pool stake distribution, however, only appears to account for about half of the -duration of the `TICKF` rule (from our benchmarks). - -## Decision - -@nfrisby suggested two very helpful optimizations -(but we take full responsibility for the implementation). - -The first suggestion was to create a thunk for the pool distribution on the first epoch -boundary when the computation is able to be performed. -This way the node will only have to pay the computational cost once, instead of at every -slot in a new epoch until the first block is produced. -In particular, we can add a lazy field to the `SnapShots` record to memoize the computation. - -The second suggestion was to strip down `TICKF` to only what is required to compute the 'LedgerView'. - -Preliminary benchmarks from the consensus team show that these two optimizations remove the -problematic behavior on the epoch boundary. - -## Consequences - -The most dramatic consequence of these two decisions is the rapid leader checks on the epoch -boundary. - -On the negative side, we have now diverged further from the formal specification -(though it is semantically the same). -Furthermore, the `TICKF` implementation is less obviously correct, as it has to duplicate logic. -To combat the problem that `TICKF` could diverge from `TICK` with respect to the -ledger view, we added a property test. diff --git a/docs/graphviz-diagrams/conway_transitions.gv b/docs/graphviz-diagrams/conway_transitions.gv deleted file mode 100644 index ed75c226430..00000000000 --- a/docs/graphviz-diagrams/conway_transitions.gv +++ /dev/null @@ -1,99 +0,0 @@ -digraph conway_transitions { - label="NOTE - A straight arrow form one node to another represents a sub-rule relationship. - A dotted arrow from one node to another represents a dependency: - that the output of the target rule in an input to the source rule, - either as part of the source state, the evironment or the signal. - In most cases these dependencies are between sub-rules of a rule. - In the case of a recursive rule, the sub-rule can also have a dependency on the super rule. - Those recursively call themselves while traversing the input signal sequence, - until reaching the base case with an empty input sequence. - A blue colored box indicates a trigger in consensus that triggers the rule in ledger. - - NOTE - In the Shelley ledger, the @CHAIN@ rule is used to apply a whole block. - In consensus, we split up the application of a block to the ledger into - separate steps that are performed together by 'applyExtLedgerState': - - 1. 'applyChainTickLedgerResult': executes the @TICK@ transition - 2. 'validateHeader': - 2.1. 'validateEnvelope': executes the @chainChecks@ - 2.2. 'updateChainDepState': executes the @PRTCL@ transition - 3. 'applyBlockLedgerResult': executes the @BBODY@ transition"; - - # Externals - - applyTickOpts [shape=box, label="ApplyBlock.applyTickOpts (API.Validation)" , color=blue]; - applyBlockOpts [shape=box, label="ApplyBlock.applyBlockOpts (API.Validation)", color=blue]; - applyTx [shape=box, label="ApplyTx (API.Mempool)" , color=blue]; - futureLedger [shape=box, label="FutureLedgerView" , color=blue]; - - # Internals - - BBODY [shape=box, label="BBODY (alonzo) \nenv:BbodyEnv,state:ShelleyBbodyState,signal:Block(BHeaderView)."]; - UTXO [shape=box, label="UTXO (babbage) \nenv:UtxoEnv,state:UTxOState,signal:Tx."]; - CERT [shape=box, label="CERT (conway) \nenv:CertEnv,state:CertState,signal:TxCert."]; - CERTS [shape=box, label="CERTS (conway) \nenv:CertsEnv,state:CertState,signal:Seq(TxCert)."]; - DELEG [shape=box, label="DELEG (conway) \nenv:PParams,state:DState,signal:ConwayDelegCert."]; - ENACT [shape=box, label="ENACT (conway) \nenv:(),state:EnactState,signal:GovAction."]; - EPOCH [shape=box, label="EPOCH (conway) \nenv:PoolDistr,state:EpochState,signal:EpochNo."]; - GOV [shape=box, label="GOV (conway) \nenv:GovEnv,state:GovActionState,signal:GovProcedures."]; - GOVCERT [shape=box, label="GOVCERT (conway) \nenv:ConwayGovCertEnv,state:VState,signal:ConwayGovCert."]; - LEDGER [shape=box, label="LEDGER (conway) \nenv:LedgerEnv,state:LedgerState,signal:Tx."]; - NEWEPOCH [shape=box, label="NEWEPOCH (conway) \nenv:(),state:NewEpochState,signal:EpochNo."]; - POOL [shape=box, label="POOL (conway) \nenv:PoolEnv,state:PState,signal:PoolCert."]; - RATIFY [shape=box, label="RATIFY (conway) \nenv:RatifyEnv,state:RatifyState,signal:RatifySignal."]; - TICKF [shape=box, label="TICKF (conway) \nenv:(),state:NewEpochState,signal:SlotNo."]; - UTXOS [shape=box, label="UTXOS (conway) \nenv:UtxoEnv,state:UTxOState,signal:AlonzoTx."]; - UTXOW [shape=box, label="UTXOW (conway) \nenv:UtxoEnv,state:UTxOState,signal:Tx."]; - LEDGERS [shape=box, label="LEDGERS (shelley) \nenv:ShelleyLedgersEnv,state:LedgerState,signal:Seq(Tx)."]; - POOLREAP [shape=box, label="POOLREAP (shelley) \nenv:ShelleyPoolreapEnv,state:ShelleyPoolreapState,signal:EpochNo."]; - RUPD [shape=box, label="RUPD (shelley) \nenv:RupdEnv,state:StrictMaybe(PulsingRewUpdate),signal:SlotNo."]; - SNAP [shape=box, label="SNAP (shelley) \nenv:SnapEnv,state:SnapShots,signal:()."]; - TICK [shape=box, label="TICK (shelley) \nenv:(),state:NewEpochState,signal:SlotNo."]; - - # Graph - - applyTickOpts -> TICK; - applyBlockOpts -> BBODY; - applyTx -> LEDGER; - futureLedger -> TICKF; - - BBODY -> LEDGERS; - - TICK -> RUPD; - TICK -> NEWEPOCH; - - RUPD -> NEWEPOCH[style=dotted]; - - NEWEPOCH -> EPOCH; - - EPOCH -> SNAP; - EPOCH -> RATIFY; - EPOCH -> POOLREAP; - - RATIFY -> SNAP[style=dotted]; - RATIFY -> POOLREAP[style=dotted]; - RATIFY -> ENACT; - - LEDGERS -> LEDGERS; - LEDGERS -> LEDGER; - - LEDGER -> LEDGERS[style=dotted]; - LEDGER -> UTXOW; - LEDGER -> CERTS; - LEDGER -> GOV; - - UTXOW -> UTXO; - UTXOW -> CERTS[style=dotted]; - - UTXO -> UTXOS; - - CERTS -> CERTS; - CERTS -> CERT; - - CERT -> CERTS[style=dotted]; - CERT -> DELEG; - CERT -> POOL; - CERT -> GOVCERT; -} diff --git a/docs/graphviz-diagrams/conway_transitions.svg b/docs/graphviz-diagrams/conway_transitions.svg deleted file mode 100644 index f8d3a89dc3a..00000000000 --- a/docs/graphviz-diagrams/conway_transitions.svg +++ /dev/null @@ -1,378 +0,0 @@ - - - -conway_transitions - -NOTE -    A straight arrow form one node to another represents a sub-rule relationship. -    A dotted arrow from one node to another represents a dependency: -      that the output of the target rule in an input to the source rule, -      either as part of the source state, the evironment or the signal. -    In most cases these dependencies are between sub-rules of a rule. -    In the case of a recursive rule, the sub-rule can also have a dependency on the super rule. -    Those recursively call themselves while traversing the input signal sequence, -      until reaching the base case with an empty input sequence. -    A blue colored box indicates a trigger in consensus that triggers the rule in ledger. -    NOTE -    In the Shelley ledger, the @CHAIN@ rule is used to apply a whole block. -    In consensus, we split up the application of a block to the ledger into -    separate steps that are performed together by 'applyExtLedgerState': -     -    1. 'applyChainTickLedgerResult': executes the @TICK@ transition -    2. 'validateHeader': -       2.1. 'validateEnvelope': executes the @chainChecks@ -       2.2. 'updateChainDepState': executes the @PRTCL@ transition -    3. 'applyBlockLedgerResult': executes the @BBODY@ transition - - -applyTickOpts - -ApplyBlock.applyTickOpts (API.Validation) - - - -TICK - -TICK (shelley)      -env:(),state:NewEpochState,signal:SlotNo. - - - -applyTickOpts->TICK - - - - - -applyBlockOpts - -ApplyBlock.applyBlockOpts (API.Validation) - - - -BBODY - -BBODY (alonzo)      -env:BbodyEnv,state:ShelleyBbodyState,signal:Block(BHeaderView). - - - -applyBlockOpts->BBODY - - - - - -applyTx - -ApplyTx (API.Mempool) - - - -LEDGER - -LEDGER (conway)     -env:LedgerEnv,state:LedgerState,signal:Tx. - - - -applyTx->LEDGER - - - - - -futureLedger - -FutureLedgerView - - - -TICKF - -TICKF (conway)      -env:(),state:NewEpochState,signal:SlotNo. - - - -futureLedger->TICKF - - - - - -NEWEPOCH - -NEWEPOCH (conway)   -env:(),state:NewEpochState,signal:EpochNo. - - - -TICK->NEWEPOCH - - - - - -RUPD - -RUPD (shelley)      -env:RupdEnv,state:StrictMaybe(PulsingRewUpdate),signal:SlotNo. - - - -TICK->RUPD - - - - - -LEDGERS - -LEDGERS (shelley)   -env:ShelleyLedgersEnv,state:LedgerState,signal:Seq(Tx). - - - -BBODY->LEDGERS - - - - - -CERTS - -CERTS (conway)      -env:CertsEnv,state:CertState,signal:Seq(TxCert). - - - -LEDGER->CERTS - - - - - -GOV - -GOV (conway)        -env:GovEnv,state:GovActionState,signal:GovProcedures. - - - -LEDGER->GOV - - - - - -UTXOW - -UTXOW (conway)      -env:UtxoEnv,state:UTxOState,signal:Tx. - - - -LEDGER->UTXOW - - - - - -LEDGER->LEDGERS - - - - - -UTXO - -UTXO (babbage)      -env:UtxoEnv,state:UTxOState,signal:Tx. - - - -UTXOS - -UTXOS (conway)      -env:UtxoEnv,state:UTxOState,signal:AlonzoTx. - - - -UTXO->UTXOS - - - - - -CERT - -CERT (conway)       -env:CertEnv,state:CertState,signal:TxCert. - - - -CERT->CERTS - - - - - -DELEG - -DELEG (conway)      -env:PParams,state:DState,signal:ConwayDelegCert. - - - -CERT->DELEG - - - - - -GOVCERT - -GOVCERT (conway)    -env:ConwayGovCertEnv,state:VState,signal:ConwayGovCert. - - - -CERT->GOVCERT - - - - - -POOL - -POOL (conway)       -env:PoolEnv,state:PState,signal:PoolCert. - - - -CERT->POOL - - - - - -CERTS->CERT - - - - - -CERTS->CERTS - - - - - -ENACT - -ENACT (conway)      -env:(),state:EnactState,signal:GovAction. - - - -EPOCH - -EPOCH (conway)      -env:PoolDistr,state:EpochState,signal:EpochNo. - - - -RATIFY - -RATIFY (conway)     -env:RatifyEnv,state:RatifyState,signal:RatifySignal. - - - -EPOCH->RATIFY - - - - - -POOLREAP - -POOLREAP (shelley) -env:ShelleyPoolreapEnv,state:ShelleyPoolreapState,signal:EpochNo. - - - -EPOCH->POOLREAP - - - - - -SNAP - -SNAP (shelley)      -env:SnapEnv,state:SnapShots,signal:(). - - - -EPOCH->SNAP - - - - - -NEWEPOCH->EPOCH - - - - - -RATIFY->ENACT - - - - - -RATIFY->POOLREAP - - - - - -RATIFY->SNAP - - - - - -UTXOW->UTXO - - - - - -UTXOW->CERTS - - - - - -LEDGERS->LEDGER - - - - - -LEDGERS->LEDGERS - - - - - -RUPD->NEWEPOCH - - - - - \ No newline at end of file diff --git a/docs/graphviz-diagrams/shelley-transitions.gv b/docs/graphviz-diagrams/shelley-transitions.gv deleted file mode 100644 index 5497f249b04..00000000000 --- a/docs/graphviz-diagrams/shelley-transitions.gv +++ /dev/null @@ -1,65 +0,0 @@ -digraph shelley_transitions { - label="NOTE - A straight arrow form one node to another represents a sub-rule relationship. - A dotted arrow from one node to another represents a dependency: - that the output of the target rule in an input to the source rule, - either as part of the source state, the evironment or the signal. - In most cases these dependencies are between sub-rules of a rule. - In the case of a recursive rule, the sub-rule can also have a dependency on the super rule. - Those recursively call themselves while traversing the input signal sequence, - until reaching the base case with an empty input sequence."; - - chain -> tick; - chain -> bbody; - chain -> prtcl; - chain -> tickn; - - bbody -> ledgers; - bbody -> tick[style=dotted]; - bbody -> prtcl[style=dotted]; - - tickn -> prtcl[style=dotted]; - - prtcl -> tick[style=dotted]; - prtcl -> overlay; - prtcl -> updn; - - tick -> rupd; - tick -> newepoch; - - overlay -> ocert; - - rupd -> newepoch[style=dotted]; - - newepoch -> mir; - newepoch -> epoch; - - mir -> epoch[style=dotted]; - - epoch -> snap; - epoch -> newpp; - epoch -> poolreap; - - newpp -> snap[style=dotted]; - newpp -> poolreap[style=dotted]; - - ledgers -> ledgers; - ledgers -> ledger; - - ledger -> ledgers[style=dotted]; - ledger -> utxow; - ledger -> delegs; - - utxow -> utxo; - utxow -> delegs[style=dotted]; - - utxo -> ppup; - - delegs -> delegs; - delegs -> delpl; - - delpl -> delegs[style=dotted]; - delpl -> deleg; - delpl -> pool; -} - diff --git a/docs/graphviz-diagrams/shelley-transitions.svg b/docs/graphviz-diagrams/shelley-transitions.svg deleted file mode 100644 index eb005bdc353..00000000000 --- a/docs/graphviz-diagrams/shelley-transitions.svg +++ /dev/null @@ -1,376 +0,0 @@ - - - -shelley_transitions - -NOTE -    A straight arrow form one node to another represents a sub-rule relationship. -    A dotted arrow from one node to another represents a dependency: -      that the output of the target rule in an input to the source rule, -      either as part of the source state, the evironment or the signal. -    In most cases these dependencies are between sub-rules of a rule. -    In the case of a recursive rule, the sub-rule can also have a dependency on the super rule. -    Those recursively call themselves while traversing the input signal sequence, -      until reaching the base case with an empty input sequence. - - -chain - -chain - - - -tick - -tick - - - -chain->tick - - - - - -bbody - -bbody - - - -chain->bbody - - - - - -prtcl - -prtcl - - - -chain->prtcl - - - - - -tickn - -tickn - - - -chain->tickn - - - - - -rupd - -rupd - - - -tick->rupd - - - - - -newepoch - -newepoch - - - -tick->newepoch - - - - - -bbody->tick - - - - - -bbody->prtcl - - - - - -ledgers - -ledgers - - - -bbody->ledgers - - - - - -prtcl->tick - - - - - -overlay - -overlay - - - -prtcl->overlay - - - - - -updn - -updn - - - -prtcl->updn - - - - - -tickn->prtcl - - - - - -ledgers->ledgers - - - - - -ledger - -ledger - - - -ledgers->ledger - - - - - -ocert - -ocert - - - -overlay->ocert - - - - - -rupd->newepoch - - - - - -mir - -mir - - - -newepoch->mir - - - - - -epoch - -epoch - - - -newepoch->epoch - - - - - -mir->epoch - - - - - -snap - -snap - - - -epoch->snap - - - - - -newpp - -newpp - - - -epoch->newpp - - - - - -poolreap - -poolreap - - - -epoch->poolreap - - - - - -newpp->snap - - - - - -newpp->poolreap - - - - - -ledger->ledgers - - - - - -utxow - -utxow - - - -ledger->utxow - - - - - -delegs - -delegs - - - -ledger->delegs - - - - - -utxow->delegs - - - - - -utxo - -utxo - - - -utxow->utxo - - - - - -delegs->delegs - - - - - -delpl - -delpl - - - -delegs->delpl - - - - - -ppup - -ppup - - - -utxo->ppup - - - - - -delpl->delegs - - - - - -deleg - -deleg - - - -delpl->deleg - - - - - -pool - -pool - - - -delpl->pool - - - - - \ No newline at end of file diff --git a/docs/non-integer-calculations/IOHKCoverPage.sty b/docs/non-integer-calculations/IOHKCoverPage.sty deleted file mode 100644 index 06978e8c1c7..00000000000 --- a/docs/non-integer-calculations/IOHKCoverPage.sty +++ /dev/null @@ -1,264 +0,0 @@ -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{IOHKCoverPage}[2019/09/12] - -\RequirePackage{fancyhdr} -%\RequirePackage{xcolor} - -\newif\if@deliverable -\newif\if@teamreport -\newif\if@wpreport -\newif\if@techreport -\DeclareOption{deliverable} - {\@deliverabletrue} -\DeclareOption{teamreport} - {\@teamreporttrue} -\DeclareOption{wpreport} - {\@wpreporttrue} -\DeclareOption{techreport} - {\@techreporttrue} - \ProcessOptions -% -\def\IOHK{IOHK} -% -\def\reportnumber#1{\def\@reportnumber{#1}} -\def\reportmonth#1{\def\@reportmonth{#1}} -\def\reportyear#1{\def\@reportyear{#1}} -\def\email#1{\def\@email{#1}} -\def\@reportnumber{?} -\def\@reportmonth{} -\def\@reportyear{} -% -\def\Project#1{\def\@Project{#1}} -\def\ReportNumber#1{\def\@ReportNumber{#1}} -\def\DeliverableNumber#1{\def\@DeliverableNumber{#1}} -\def\DeliverableTitle#1#2{\def\@DeliverableTitle{#1}\def\@ShortDelTitle{#2}} -\def\DueDate#1{\def\@DueDate{#1}} -%% should be possible to convert! KH -\def\SubmissionDate#1#2{\def\@SubmissionDate{#1}\def\@ShortSubmissionDate{#2}} -\def\VersionDate#1{\def\@VersionDate{#1}} -\def\LeaderName#1{\def\@LeaderName{#1}} -\def\Authors#1{\def\@Authors{#1}} -\def\DeliverableResponsible#1{\def\@DeliverableResponsible{#1}} -\def\Institution#1{\def\@Institution{#1}} -\def\InstitutionAddress#1{\def\@InstitutionAddress{#1}} -\def\EditorName#1{\def\@EditorName{#1}} -\def\WorkPackage#1{\def\@WorkPackage{#1}} -\def\TaskNumber#1{\def\@TaskNumber{{\@emph Task number:} #1}} -\def\Version#1{\def\@Version{#1}} -\def\SVNRevision#1{\def\@SVNRevision{#1}} -\def\LastEditor#1{\def\@LastEditor{#1}} -%\def\Reviewers#1{\def\@ReviewersTitle{\@bold Reviewers:}\def\@Reviewers{#1}} -\def\Reviewers#1{\@Reviewerstrue\def\@Reviewers{#1}} -\def\LastDate#1{\def\@LastDate{#1}} -\def\DisseminationPU{\def\@IsPU{$\surd$}} -\def\DisseminationCO{\def\@IsCO{$\surd$}} -\def\DisseminationDR{\def\@IsDR{$\surd$}} -\newcommand{\Revision}[5]{\@writefile{cov}{\hline \hfil #1\hfil\\}} -\newcommand{\Task}[3]{\@Taskstrue\@writefile{par}{\hline #1\\}} - -\def\@Project{Cardano} -\def\@Authors{XXXX} -\def\@ReportNumber{XXXX} -\def\@DeliverableNumber{XXXX} -\def\@DeliverableTitle{XXXX} -\def\@ShortDelTitle{\@DeliverableTitle} -\def\@DueDate{XXXX} -\def\@SubmissionDate{XXXX} -\def\@ShortSubmissionDate{\@SubmissionDate} -\def\@LeaderName{XXXX} -\def\@DeliverableResponsible{XXXX} -\def\@Institution{XXXX} -\def\@InstitutionAddress{XXXX} -\def\@EditorName{XXXX} -\def\@WorkPackage{XXXX} -\def\@TaskNumber{~} -\def\@Version{XXXX} -\def\@SVNRevision{XXXX} -\def\@LastEditor{XXXX} -\def\@Reviewers{~} -\newif\if@Reviewers -\newif\if@Tasks -\@Tasksfalse -\def\@LastDate{XXXX} -\def\@IsPU{} -\def\@IsCO{} -\def\@IsDR{} -\def\@Revision{} -\def\@Task{} - -%%cover fonts -\def\@ProjFont{\fontsize{24}{28}\usefont{T1}{ptm}{b}{n}\selectfont} -\def\@TitleFont{\fontsize{18}{24}\usefont{T1}{ptm}{b}{n}\selectfont} -\def\@Large{\fontsize{18}{21}\usefont{T1}{ptm}{m}{n}\selectfont} -\def\@Small{\fontsize{9}{11}\usefont{T1}{ptm}{m}{n}\selectfont} -\def\@font{\fontsize{12}{12}\usefont{T1}{ptm}{m}{n}\selectfont} -\def\@sc{\fontshape{sc}\selectfont} -\def\@emph{\fontshape{sl}\selectfont} -\def\@bold{\fontseries{b}\selectfont} - - -\newdimen\@CoverPageWidth -\newdimen\@CoverPageHeight -\newdimen\@TableWidth -\@CoverPageWidth=\paperwidth -\@CoverPageHeight=\paperheight -\@TableWidth=\paperwidth -\advance\@CoverPageWidth by -1.5in -\advance\@CoverPageHeight by -2in -\advance\@TableWidth by -5cm -\newdimen\TableWidth -\TableWidth=\@TableWidth - - -\newcommand{\@CoverBody}{ -\@font -\parbox{\linewidth}{\centering - \vspace{15mm} -% {Project no. 644235}\par - \vspace{6mm} - {\@ProjFont \Project{}}\par - \vspace{6mm} -% {Research \& Innovation Action (RIA)}\par -% {\@sc \large{\textbf{Refactoring Parallel Heterogeneous Resource-Aware Applications -- a Software Engineering Approach}}}\par - \vspace{10mm} - \if@deliverable - {\@TitleFont \@DeliverableTitle\\ - \vspace{18mm} - {Deliverable }\@DeliverableNumber}\par - \vspace{16mm} - \begin{large} - \begin{center} - {\@Authors } - \end{center} - \end{large} - \par - \vspace{1cm} -% \begin{tabular}{r@{: }l} -% Due date of deliverable& \@DueDate\\ -% Actual submission date& \@SubmissionDate -% \end{tabular} - \par - \fi - \if@techreport - {\@TitleFont \@DeliverableTitle\\ - \vspace{3mm}} - {\Project{} Technical Report \# \@ReportNumber}\par - \vspace{6mm} - {\@Authors \vspace{1cm} }\par - \fi - -} -\parbox{\linewidth}{\flushright - \vspace{10mm} - \if@techreport - Report Registration Date: \@SubmissionDate - \else - {\@emph Project:} \@Project \par - \vspace{5mm} - \fi - \if@deliverable - {\@emph Type:} Deliverable\par - {\@emph Due Date:} \@DueDate\par - % {\@emph WP number:} \@WorkPackage\par - %{\@TaskNumber}\par - \vspace{5mm} - {\@emph Responsible team:} \@DeliverableResponsible\par - {\@emph Editor:} \@EditorName\par - {\@emph Team Leader:} \@LeaderName\par - \fi - \if@teamreport - \vspace{5mm} - {\@emph Report type:} Team Leader's Progress Report\par - \vspace{5mm} - {\@emph Name of Team leader:} \@LeaderName\par - {\@emph Institution \& address:} \@InstitutionAddress\par - \fi - \if@wpreport - {\@emph Report type:} WP Leader's Progress Report\par - {\@emph WP number:} \@WorkPackage\par - \vspace{5mm} - {\@emph Name of WP leader:} \@LeaderName\par - {\@emph Institution \& address:} \@InstitutionAddress\par - \fi -} -\vfill -\parbox{\linewidth}{\centering -{Version \@Version}\par - {\@SubmissionDate}\par - \vspace{5mm}} -{ -\newdimen\@msize -\@msize=\linewidth -\advance\@msize by -1cm -\advance\@msize by -6\tabcolsep -\begin{tabular}{ | p{0.7cm} | p{\@msize} | p{0.3cm} |} - \hline - \multicolumn{3}{|c|}{{\@bold Dissemination Level}}\\ - \hline - {\@bold PU} & Public & \@IsPU\\ - \hline - {{\@bold CO}} & Confidential, only for company distribution & \@IsCO\\ - \hline - {\@bold DR} & Draft, not for general circulation & \@IsDR\\ - \hline - \end{tabular} - } -} - -\newcommand{\@PrintCoverPage}{\bgroup\global\setbox255\vbox{% - \vspace*{-.25in}% - \noindent\hspace*{-.25in}% - \renewcommand{\thepage}{\roman{page}} - \pagestyle{myheadings} \markboth{}{} - - \rlap{ - \begin{minipage}[t][\@CoverPageHeight][t]{\@CoverPageWidth}% - \parbox{\linewidth}{ - \begin{minipage}[c]{6cm} - \includegraphics[width=6cm]{iohk-share-logo.jpg} - \end{minipage} - \hfill -% \begin{minipage}[c]{3.5cm} -% \includegraphics[width=3.5cm]{figures/H2020.jpg} -% \end{minipage} - } - \@CoverBody - \end{minipage} - }% -}\egroup\shipout\box255} - - -\newcommand{\@PrintBackCoverPage}{% -\pagestyle{myheadings}% -\markboth{\@Project: \@ShortDelTitle~(\@DeliverableNumber~v.\@Version, \@ShortSubmissionDate)}% - {\@Project: \@ShortDelTitle~(\@DeliverableNumber~v.\@Version, \@ShortSubmissionDate)}% -} - - - -\AtBeginDocument{\@PrintCoverPage\@PrintBackCoverPage% - \renewcommand{\thepage}{\roman{page}}% -% \setcounter{page}{1}% -} - -%% Added change log -- KH - -\newcounter{change} - -\newenvironment{changelog}{% -\clearpage -\setcounter{change}{0} -\section*{Change Log} -% -\begin{tabular}{||p{0.8cm}|p{1.8cm}|p{3cm}|p{1.5cm}|p{7.4cm}||}% -\hline\hline% -\textbf{Rev.} & \textbf{Date} & \textbf{Who} & \textbf{Team} & \textbf{What}% -}{% -\\\hline\hline% -\end{tabular}% -\clearpage% -} - -\newcommand{\change}[4]{\stepcounter{change}% -\\\hline% -\arabic{change}} diff --git a/docs/non-integer-calculations/Makefile b/docs/non-integer-calculations/Makefile deleted file mode 100644 index 39b707a7c40..00000000000 --- a/docs/non-integer-calculations/Makefile +++ /dev/null @@ -1,44 +0,0 @@ -## -## Makefile for a specification of non-integer calculations - -# Document name -DOCNAME = non-integer-calculations - -# You want latexmk to *always* run, because make does not have all the info. -# Also, include non-file targets in .PHONY so they are run regardless of any -# file of the given name existing. -.PHONY: $(DOCNAME).pdf all clean - -# The first rule in a Makefile is the one executed by default ("make"). It -# should always be the "all" rule, so that "make" and "make all" are identical. -all: $(DOCNAME).pdf - -## -## CUSTOM BUILD RULES -## - - -## -## MAIN LATEXMK RULE -## - -# -pdf tells latexmk to generate PDF directly (instead of DVI). -# -pdflatex="" tells latexmk to call a specific backend with specific options. -# -use-make tells latexmk to call make for generating missing files. - -# -interaction=nonstopmode keeps the pdflatex backend from stopping at a -# missing file reference and interactively asking you for an alternative. - -$(DOCNAME).pdf: $(DOCNAME).tex - latexmk -pdf -pdflatex="pdflatex -interaction=nonstopmode -synctex=1" -use-make $(DOCNAME).tex - -watch: $(DOCNAME).tex - latexmk -pvc -pdf -pdflatex="pdflatex -interaction=nonstopmode -synctex=1" -use-make $(DOCNAME).tex - -clean: - latexmk -CA - -install: - mkdir -pv ${out}/nix-support/ - cp non-integer-calculations.pdf ${out}/ - echo "doc-pdf non-integer-calculations ${out}/non-integer-calculations.pdf" > ${out}/nix-support/hydra-build-products diff --git a/docs/non-integer-calculations/cf_exp.png b/docs/non-integer-calculations/cf_exp.png deleted file mode 100644 index cd2450c8d800e171f3e46a4a376eaa734c23f0b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47644 zcmeFYhgVbE@&}H3m3KwtdTmz`umBNh0s>NF#{eNp?}$>Q*AO5S6_qOrNCKgQC4ixY z9y$sFh8Cr_B+?BnkN^SFeu;A5d*6THw|;B=US@gLF*)o#duI0Rna|95amPqcc>l@$ z0s;cUpxZZ$1qAk-77+MN=#PE8Z_ddbx+5U)yR_T&>v!B9JP;7L{URyJ^$ybNcsrG@ zO?h_Z&uh_lt|wfOdX)Hw_4(d{4_AI<-nr@dclB=Bn7=RGe0_7*aoeP`9ygB&y?nC! zSYVXg?v7f&qj#@b`I1j$GQ@!O+*CNhhZ8VM3LtFx?mGQU#eznJ0k)Zx)>gyYwMe6Yo0> zMdG>5t`?Rhw%?V>mJ>fBLlzBsn&h?-Qw!a85l8n6oRZlVJ;;5|4WP!DUVgGR{Namd zF2vt7)I8-hBDJdbck$%TwIh;xt|n)Jwns>&BH z{pR4h+O}X2f94i9lHhvNpifadaw%5SOM z&<{z%!vA`-`^S}i=XaaE`91LQp^JM^ACFxYIR1TC*wsIV1vXFblia=Q%kG+cg69Qp z-jlfeuly_W4+X$)j%Mu3{H|TSyEtm>yTV`l;vfHE_$2wtZ=}b2|MjHgj}z~%D!={{ zeUNhH)*qr}&rh9J|025o$+fo+&;Q=>$p3BTokOPk&8|Z499|O&JXpJ%_;laf=&zSA z?O_XtKRuN4Tc6`z%RPh9BNqjOo`p}W`(Db}KlgEK#hy1^G^AN<<>;oG_5q=Z`bag`x_q!50$OOi=wKo(7!(Z@i6dMt$4alOwn6R&*Zs_)tUsUTtz=h0^OS$HDXS18!8UX!$&`Z)fhPjm8j(G}vR z)+UIx`|6XAXDttf{qFZv?CJh%vJ)pAU#&d9Et&sE_Y3>amXksE_pTmU-RGCF`S^yE z8?qYxhw(l)MapH0GUW_KIMs0Q^cW%vPnm9*mZq7}OlWYWw3MvBAad6{(=974qlaG) z%kIy5XEbp~?T-KXnM9RDtwbxo`s(MGEwl~83W6&)HCFGgYW$w|^zGB=8}DwE-YEYJ ze&Kcjm46lb=GGlLru~Bj=J2Jbx%yMRn-!TA`$knqCB?40ehXQ<9D0cDx-DQQ2}-(z zT1)Oi6{6}-%Q&4rAiOU=;p2J743}3Ib@gR#`=QU~Y}~HY7Y213bb`k8_4JSH<3J(? zk%^8Sm%n`OTui1UhMawg7(lHfx)C~O;ouTjPoR=EAerznLo;l^U+Tn|$>r7;i0OjxnSldWCW&ku8Sz%rC-I&pL-V zyUrY#(VW>ev-c<}CR;yCKfU9y*^>)4s`{0Nm3n6AT=Z-)s$lTl#%(cdk9quEAexk? zi~ZF5udl;J-!Mwu2$xk$jlyGtDbiMbw^Yo^?dgrjZoMoziiKJ(6sr|_y%T$HR}`)% zIH)x6VnCx%rFwruN0?b}{$$4Cb}A%AG?f|#s=9octMBehuSpT658}$Nu+!=90v!bucd@3 ztEwDLsY>ff!K6M*8%T*Qqj*Asl$g&oM#p=?(zinBBFA!%QI6%wbISTFU*SBfGVEKd z57*>6c0WyuF-tMaO!}JUCgvXAZ~gGS=V2EUA9|PhfLe3ax1gB!tuLlBrt8a8N)8WK zj&%pfSKCx4FCBsdnAe!Q1oNY^uP3#b=pAi;*nUhe0r{fOC9kvRp{vClyXU?3Uh(Xq z&xdPLYCQcYP^p^jYV#W1fWDx^)zG?@WrbzI@%F)dEZBOCvP(NyTu?hJxJ=tbCvv?x zI3&~zuES7U>seo>zuod&bK3}+^O&=lWDZ066kD+E*^?5J$ci?wGXm?i7rZv|D}!VaU_0%BF{*l*?Z>Pg4II#5PAG`-5JN0XR(Q~j-rI8@2>B; zmVW(si+1yT%WQMVgzCgu-Q>u>xysFI@8s@F_g*Nw
#LjEOp&Cv_nSJn()fek~t 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 } - { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't := - nameptr #1 > - { namesleft #1 > - { ", " * t * } - { numnames #2 > - { "," * } - 'skip$ - if$ - t "others" = - { " et~al." * } - { " and " * t * } - if$ - } - if$ - } - 't - if$ - nameptr #1 + 'nameptr := - namesleft #1 - 'namesleft := - } - while$ -} - -FUNCTION {format.authors} -{ author empty$ - { "" } - { author format.names } - if$ -} - -FUNCTION {format.editors} -{ editor empty$ - { "" } - { editor format.names - editor num.names$ #1 > - { ", editors" * } - { ", editor" * } - if$ - } - if$ -} - -FUNCTION {format.title} -{ title empty$ - { "" } - { title "t" change.case$ } - if$ -} - -FUNCTION {format.eprint} -{ eprint empty$ - { "" } - { "\burlalt{" eprint * "}{http://arxiv.org/abs/" * eprint * "}" * } - if$ -} - -FUNCTION {format.url} -{ doi empty$ not - url empty$ - or - { "" } - { "\urlprefix\url{" url * "}" * } - if$ -} - -FUNCTION {format.doi} -{ doi empty$ - { "" } - { "\doi{" doi * "}" * } - if$ -} - - -FUNCTION {n.dashify} -{ 't := - "" - { t empty$ not } - { t #1 #1 substring$ "-" = - { t #1 #2 substring$ "--" = not - { "--" * - t #2 global.max$ substring$ 't := - } - { { t #1 #1 substring$ "-" = } - { "-" * - t #2 global.max$ substring$ 't := - } - while$ - } - if$ - } - { t #1 #1 substring$ * - t #2 global.max$ substring$ 't := - } - if$ - } - while$ -} - -FUNCTION {format.date} -{ year empty$ - { month empty$ - { "" } - { "there's a month but no year in " cite$ * warning$ - month - } - if$ - } - { month empty$ - 'year - { month " " * year * } - if$ - } - if$ -} - -FUNCTION {format.btitle} -{ title emphasize -} - -FUNCTION {tie.or.space.connect} -{ duplicate$ text.length$ #3 < - { "~" } - { " " } - if$ - swap$ * * -} - -FUNCTION {either.or.check} -{ empty$ - 'pop$ - { "can't use both " swap$ * " fields in " * cite$ * warning$ } - if$ -} - -FUNCTION {format.bvolume} -{ volume empty$ - { "" } - { "volume" volume tie.or.space.connect - series empty$ - 'skip$ - { " of " * series emphasize * } - if$ - "volume and number" number either.or.check - } - if$ -} - -FUNCTION {format.number.series} -{ volume empty$ - { number empty$ - { series field.or.null } - { output.state mid.sentence = - { "number" } - { "Number" } - if$ - number tie.or.space.connect - series empty$ - { "there's a number but no series in " cite$ * warning$ } - { " in " * series * } - if$ - } - if$ - } - { "" } - if$ -} - -FUNCTION {format.edition} -{ edition empty$ - { "" } - { output.state mid.sentence = - { edition "l" change.case$ " edition" * } - { edition "t" change.case$ " edition" * } - if$ - } - if$ -} - -INTEGERS { multiresult } - -FUNCTION {multi.page.check} -{ 't := - #0 'multiresult := - { multiresult not - t empty$ not - and - } - { t #1 #1 substring$ - duplicate$ "-" = - swap$ duplicate$ "," = - swap$ "+" = - or or - { #1 'multiresult := } - { t #2 global.max$ substring$ 't := } - if$ - } - while$ - multiresult -} - -FUNCTION {format.pages} -{ pages empty$ - { "" } - { pages multi.page.check - { "pages" pages n.dashify tie.or.space.connect } - { "page" pages tie.or.space.connect } - if$ - } - if$ -} - -FUNCTION {format.vol.num.pages} -{ volume field.or.null - number empty$ - 'skip$ - { "(" number * ")" * * - volume empty$ - { "there's a number but no volume in " cite$ * warning$ } - 'skip$ - if$ - } - if$ - pages empty$ - 'skip$ - { duplicate$ empty$ - { pop$ format.pages } - { ":" * pages n.dashify * } - if$ - } - if$ -} - -FUNCTION {format.chapter.pages} -{ chapter empty$ - 'format.pages - { type empty$ - { "chapter" } - { type "l" change.case$ } - if$ - chapter tie.or.space.connect - pages empty$ - 'skip$ - { ", " * format.pages * } - if$ - } - if$ -} - -FUNCTION {format.in.ed.booktitle} -{ booktitle empty$ - { "" } - { editor empty$ - { "In " booktitle emphasize * } - { "In " format.editors * ", " * booktitle emphasize * } - if$ - } - if$ -} - -FUNCTION {empty.misc.check} -{ author empty$ title empty$ howpublished empty$ - month empty$ year empty$ note empty$ - and and and and and - key empty$ not and - { "all relevant fields are empty in " cite$ * warning$ } - 'skip$ - if$ -} - -FUNCTION {format.thesis.type} -{ type empty$ - 'skip$ - { pop$ - type "t" change.case$ - } - if$ -} - -FUNCTION {format.tr.number} -{ type empty$ - { "Technical Report" } - 'type - if$ - number empty$ - { "t" change.case$ } - { number tie.or.space.connect } - if$ -} - -FUNCTION {format.article.crossref} -{ key empty$ - { journal empty$ - { "need key or journal for " cite$ * " to crossref " * crossref * - warning$ - "" - } - { "In {\em " journal * "\/}" * } - if$ - } - { "In " key * } - if$ - " \cite{" * crossref * "}" * -} - -FUNCTION {format.crossref.editor} -{ editor #1 "{vv~}{ll}" format.name$ - editor num.names$ duplicate$ - #2 > - { pop$ " et~al." * } - { #2 < - 'skip$ - { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = - { " et~al." * } - { " and " * editor #2 "{vv~}{ll}" format.name$ * } - if$ - } - if$ - } - if$ -} - -FUNCTION {format.book.crossref} -{ volume empty$ - { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ - "In " - } - { "Volume" volume tie.or.space.connect - " of " * - } - if$ - editor empty$ - editor field.or.null author field.or.null = - or - { key empty$ - { series empty$ - { "need editor, key, or series for " cite$ * " to crossref " * - crossref * warning$ - "" * - } - { "{\em " * series * "\/}" * } - if$ - } - { key * } - if$ - } - { format.crossref.editor * } - if$ - " \cite{" * crossref * "}" * -} - -FUNCTION {format.incoll.inproc.crossref} -{ editor empty$ - editor field.or.null author field.or.null = - or - { key empty$ - { booktitle empty$ - { "need editor, key, or booktitle for " cite$ * " to crossref " * - crossref * warning$ - "" - } - { "In {\em " booktitle * "\/}" * } - if$ - } - { "In " key * } - if$ - } - { "In " format.crossref.editor * } - if$ - " \cite{" * crossref * "}" * -} - -FUNCTION {article} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - crossref missing$ - { journal emphasize "journal" output.check - format.vol.num.pages output - format.date "year" output.check - } - { format.article.crossref output.nonnull - format.pages output - } - if$ - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {book} -{ output.bibitem - author empty$ - { format.editors "author and editor" output.check } - { format.authors output.nonnull - crossref missing$ - { "author and editor" editor either.or.check } - 'skip$ - if$ - } - if$ - new.block - format.btitle "title" output.check - crossref missing$ - { format.bvolume output - new.block - format.number.series output - new.sentence - publisher "publisher" output.check - address output - } - { new.block - format.book.crossref output.nonnull - } - if$ - format.edition output - format.date "year" output.check - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {booklet} -{ output.bibitem - format.authors output - new.block - format.title "title" output.check - howpublished address new.block.checkb - howpublished output - address output - format.date output - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {inbook} -{ output.bibitem - author empty$ - { format.editors "author and editor" output.check } - { format.authors output.nonnull - crossref missing$ - { "author and editor" editor either.or.check } - 'skip$ - if$ - } - if$ - new.block - format.btitle "title" output.check - crossref missing$ - { format.bvolume output - format.chapter.pages "chapter and pages" output.check - new.block - format.number.series output - new.sentence - publisher "publisher" output.check - address output - } - { format.chapter.pages "chapter and pages" output.check - new.block - format.book.crossref output.nonnull - } - if$ - format.edition output - format.date "year" output.check - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {incollection} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - crossref missing$ - { format.in.ed.booktitle "booktitle" output.check - format.bvolume output - format.number.series output - format.chapter.pages output - new.sentence - publisher "publisher" output.check - address output - format.edition output - format.date "year" output.check - } - { format.incoll.inproc.crossref output.nonnull - format.chapter.pages output - } - if$ - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {inproceedings} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - crossref missing$ - { format.in.ed.booktitle "booktitle" output.check - format.bvolume output - format.number.series output - format.pages output - address empty$ - { organization publisher new.sentence.checkb - organization output - publisher output - format.date "year" output.check - } - { address output.nonnull - format.date "year" output.check - new.sentence - organization output - publisher output - } - if$ - } - { format.incoll.inproc.crossref output.nonnull - format.pages output - } - if$ - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {conference} { inproceedings } - -FUNCTION {manual} -{ output.bibitem - author empty$ - { organization empty$ - 'skip$ - { organization output.nonnull - address output - } - if$ - } - { format.authors output.nonnull } - if$ - new.block - format.btitle "title" output.check - author empty$ - { organization empty$ - { address new.block.checka - address output - } - 'skip$ - if$ - } - { organization address new.block.checkb - organization output - address output - } - if$ - format.edition output - format.date output - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {mastersthesis} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - "Master's thesis" format.thesis.type output.nonnull - school "school" output.check - address output - format.date "year" output.check - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {misc} -{ output.bibitem - format.authors output - title howpublished new.block.checkb - format.title output - howpublished new.block.checka - howpublished output - format.date output - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry - empty.misc.check -} - -FUNCTION {phdthesis} -{ output.bibitem - format.authors "author" output.check - new.block - format.btitle "title" output.check - new.block - "PhD thesis" format.thesis.type output.nonnull - school "school" output.check - address output - format.date "year" output.check - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {proceedings} -{ output.bibitem - editor empty$ - { organization output } - { format.editors output.nonnull } - if$ - new.block - format.btitle "title" output.check - format.bvolume output - format.number.series output - address empty$ - { editor empty$ - { publisher new.sentence.checka } - { organization publisher new.sentence.checkb - organization output - } - if$ - publisher output - format.date "year" output.check - } - { address output.nonnull - format.date "year" output.check - new.sentence - editor empty$ - 'skip$ - { organization output } - if$ - publisher output - } - if$ - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {techreport} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - format.tr.number output.nonnull - institution "institution" output.check - address output - format.date "year" output.check - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {unpublished} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - note "note" output.check - format.date output - format.eprint output - format.doi output - new.block - format.url output - fin.entry -} - -FUNCTION {default.type} { misc } - -MACRO {jan} {"Jan."} - -MACRO {feb} {"Feb."} - -MACRO {mar} {"Mar."} - -MACRO {apr} {"Apr."} - -MACRO {may} {"May"} - -MACRO {jun} {"June"} - -MACRO {jul} {"July"} - -MACRO {aug} {"Aug."} - -MACRO {sep} {"Sept."} - -MACRO {oct} {"Oct."} - -MACRO {nov} {"Nov."} - -MACRO {dec} {"Dec."} - -MACRO {acmcs} {"ACM Comput. Surv."} - -MACRO {acta} {"Acta Inf."} - -MACRO {cacm} {"Commun. ACM"} - -MACRO {ibmjrd} {"IBM J. Res. Dev."} - -MACRO {ibmsj} {"IBM Syst.~J."} - -MACRO {ieeese} {"IEEE Trans. Softw. Eng."} - -MACRO {ieeetc} {"IEEE Trans. Comput."} - -MACRO {ieeetcad} - {"IEEE Trans. Comput.-Aided Design Integrated Circuits"} - -MACRO {ipl} {"Inf. Process. Lett."} - -MACRO {jacm} {"J.~ACM"} - -MACRO {jcss} {"J.~Comput. Syst. Sci."} - -MACRO {scp} {"Sci. Comput. Programming"} - -MACRO {sicomp} {"SIAM J. Comput."} - -MACRO {tocs} {"ACM Trans. Comput. Syst."} - -MACRO {tods} {"ACM Trans. Database Syst."} - -MACRO {tog} {"ACM Trans. Gr."} - -MACRO {toms} {"ACM Trans. Math. Softw."} - -MACRO {toois} {"ACM Trans. Office Inf. Syst."} - -MACRO {toplas} {"ACM Trans. Prog. Lang. Syst."} - -MACRO {tcs} {"Theoretical Comput. Sci."} - -READ - -FUNCTION {sortify} -{ purify$ - "l" change.case$ -} - -INTEGERS { len } - -FUNCTION {chop.word} -{ 's := - 'len := - s #1 len substring$ = - { s len #1 + global.max$ substring$ } - 's - if$ -} - -INTEGERS { et.al.char.used } - -FUNCTION {initialize.et.al.char.used} -{ #0 'et.al.char.used := -} - -EXECUTE {initialize.et.al.char.used} - -FUNCTION {format.lab.names} -{ 's := - s num.names$ 'numnames := - numnames #1 > - { numnames #4 > - { #3 'namesleft := } - { numnames 'namesleft := } - if$ - #1 'nameptr := - "" - { namesleft #0 > } - { nameptr numnames = - { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" = - { "{\etalchar{+}}" * - #1 'et.al.char.used := - } - { s nameptr "{v{}}{l{}}" format.name$ * } - if$ - } - { s nameptr "{v{}}{l{}}" format.name$ * } - if$ - nameptr #1 + 'nameptr := - namesleft #1 - 'namesleft := - } - while$ - numnames #4 > - { "{\etalchar{+}}" * - #1 'et.al.char.used := - } - 'skip$ - if$ - } - { s #1 "{v{}}{l{}}" format.name$ - duplicate$ text.length$ #2 < - { pop$ s #1 "{ll}" format.name$ #3 text.prefix$ } - 'skip$ - if$ - } - if$ -} - -FUNCTION {author.key.label} -{ author empty$ - { key empty$ - { cite$ #1 #3 substring$ } - { key #3 text.prefix$ } - if$ - } - { author format.lab.names } - if$ -} - -FUNCTION {author.editor.key.label} -{ author empty$ - { editor empty$ - { key empty$ - { cite$ #1 #3 substring$ } - { key #3 text.prefix$ } - if$ - } - { editor format.lab.names } - if$ - } - { author format.lab.names } - if$ -} - -FUNCTION {author.key.organization.label} -{ author empty$ - { key empty$ - { organization empty$ - { cite$ #1 #3 substring$ } - { "The " #4 organization chop.word #3 text.prefix$ } - if$ - } - { key #3 text.prefix$ } - if$ - } - { author format.lab.names } - if$ -} - -FUNCTION {editor.key.organization.label} -{ editor empty$ - { key empty$ - { organization empty$ - { cite$ #1 #3 substring$ } - { "The " #4 organization chop.word #3 text.prefix$ } - if$ - } - { key #3 text.prefix$ } - if$ - } - { editor format.lab.names } - if$ -} - -FUNCTION {calc.label} -{ label empty$ - { type$ "book" = - type$ "inbook" = - or - 'author.editor.key.label - { type$ "proceedings" = - 'editor.key.organization.label - { type$ "manual" = - 'author.key.organization.label - 'author.key.label - if$ - } - if$ - } - if$ - duplicate$ - year field.or.null purify$ #-1 #2 substring$ - * - } - { label duplicate$ } - if$ - 'cite.label := - year field.or.null purify$ #-1 #4 substring$ - * - sortify 'sort.label := -} - -FUNCTION {sort.format.names} -{ 's := - #1 'nameptr := - "" - s num.names$ 'numnames := - numnames 'namesleft := - { namesleft #0 > } - { nameptr #1 > - { " " * } - 'skip$ - if$ - s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := - nameptr numnames = t "others" = and - { "et al" * } - { t sortify * } - if$ - nameptr #1 + 'nameptr := - namesleft #1 - 'namesleft := - } - while$ -} - -FUNCTION {sort.format.title} -{ 't := - "A " #2 - "An " #3 - "The " #4 t chop.word - chop.word - chop.word - sortify - #1 global.max$ substring$ -} - -FUNCTION {author.sort} -{ author empty$ - { key empty$ - { "to sort, need author or key in " cite$ * warning$ - "" - } - { key sortify } - if$ - } - { author sort.format.names } - if$ -} - -FUNCTION {author.editor.sort} -{ author empty$ - { editor empty$ - { key empty$ - { "to sort, need author, editor, or key in " cite$ * warning$ - "" - } - { key sortify } - if$ - } - { editor sort.format.names } - if$ - } - { author sort.format.names } - if$ -} - -FUNCTION {author.organization.sort} -{ author empty$ - { organization empty$ - { key empty$ - { "to sort, need author, organization, or key in " cite$ * warning$ - "" - } - { key sortify } - if$ - } - { "The " #4 organization chop.word sortify } - if$ - } - { author sort.format.names } - if$ -} - -FUNCTION {editor.organization.sort} -{ editor empty$ - { organization empty$ - { key empty$ - { "to sort, need editor, organization, or key in " cite$ * warning$ - "" - } - { key sortify } - if$ - } - { "The " #4 organization chop.word sortify } - if$ - } - { editor sort.format.names } - if$ -} - -FUNCTION {presort} -{ calc.label - sort.label - " " - * - type$ "book" = - type$ "inbook" = - or - 'author.editor.sort - { type$ "proceedings" = - 'editor.organization.sort - { type$ "manual" = - 'author.organization.sort - 'author.sort - if$ - } - if$ - } - if$ - * - " " - * - year field.or.null sortify - * - " " - * - title field.or.null - sort.format.title - * - #1 entry.max$ substring$ - 'sort.key$ := -} - -ITERATE {presort} - -SORT - -STRINGS { longest.label last.sort.label next.extra } - -INTEGERS { longest.label.width last.extra.num } - -FUNCTION {initialize.longest.label} -{ "" 'longest.label := - #0 int.to.chr$ 'last.sort.label := - "" 'next.extra := - #0 'longest.label.width := - #0 'last.extra.num := -} - -FUNCTION {forward.pass} -{ last.sort.label sort.label = - { last.extra.num #1 + 'last.extra.num := - last.extra.num int.to.chr$ 'extra.label := - } - { "a" chr.to.int$ 'last.extra.num := - "" 'extra.label := - sort.label 'last.sort.label := - } - if$ -} - -FUNCTION {reverse.pass} -{ next.extra "b" = - { "a" 'extra.label := } - 'skip$ - if$ - cite.label extra.label * 'cite.label := - cite.label width$ longest.label.width > - { cite.label 'longest.label := - cite.label width$ 'longest.label.width := - } - 'skip$ - if$ - extra.label 'next.extra := -} - -EXECUTE {initialize.longest.label} - -ITERATE {forward.pass} - -REVERSE {reverse.pass} - -FUNCTION {begin.bib} -{ et.al.char.used - { "\newcommand{\etalchar}[1]{$^{#1}$}" write$ newline$ } - 'skip$ - if$ - preamble$ empty$ - 'skip$ - { preamble$ write$ newline$ } - if$ - "\begin{thebibliography}{" longest.label * "}" * write$ newline$ - "\expandafter\ifx\csname url\endcsname\relax" - write$ newline$ - " \def\url#1{\texttt{#1}}\fi" - write$ newline$ - "\expandafter\ifx\csname doi\endcsname\relax" - write$ newline$ - " \def\doi#1{\burlalt{doi:#1}{http://dx.doi.org/#1}}\fi" - write$ newline$ - "\expandafter\ifx\csname urlprefix\endcsname\relax\def\urlprefix{URL }\fi" - write$ newline$ - "\expandafter\ifx\csname href\endcsname\relax" - write$ newline$ - " \def\href#1#2{#2}\fi" - write$ newline$ - "\expandafter\ifx\csname burlalt\endcsname\relax" - write$ newline$ - " \def\burlalt#1#2{\href{#2}{#1}}\fi" - write$ newline$ -} - -EXECUTE {begin.bib} - -EXECUTE {init.state.consts} - -ITERATE {call.type$} - -FUNCTION {end.bib} -{ newline$ - "\end{thebibliography}" write$ newline$ -} - -EXECUTE {end.bib} diff --git a/docs/non-integer-calculations/haskell.png b/docs/non-integer-calculations/haskell.png deleted file mode 100644 index 54aa942b5f1a9d4840b2ace3a5d0972f44f71597..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78711 zcmdqJ1z41AyDki(B1(uTNDCq%4Fb|CB~k*?-O}Bqpmaz{g93tdGeeGaGXj!B58d7I z--Ev2THm+6_3eM{wfC|2vFANJUU+8adG5Tf^E|KfCh)ba1kO#8n`mfgIFc_#70}Qy zpx~eWjqBiwRFcsh@W1Q&QWBzQ7pVWf)MiD2D_Ax!)$GyGZV{mVp`#@v-3J#j9VBJM zFp*bpU|l8LQM>L6E|HtQQFRcpwzM>|asa=gp^4ZT={Xn~K5#a5c>6#?Qs%WGixDOo z+5jfN8F% zmX}u?t|+m(6n?&?lO6ObcTLGGSV!a5V;?)QX8{Ty?_;Bj`h9pNdq;LYY5D-ut$_;b z_Jg<|Cr2)uHhAWR<@*bHWIOE>?v{!VZr^x7efjEZj=y&W|MDg8!}$AJ+Eo?N-!H6! zfZwk>n*VD*!wXZrdnID0mDOwO*0txThslnNRoe4AUN~I)^Y9+5Dj!BWise;rSN_DH zprE#{t~U?v;x)h6dM$AGR-lSee|!T!V(0UO@8tm4efB(F$}-7F(QEW$h@<{W55&KeVz646_3U6kI9R3XQz#c z&~d9Q>&ZGz=W$0vW8>vUqDQ}5-dB0#A%xwiySF@W3conT<23HlUHtiVc+IK8Vx+;J z((C(Gl|Sum+hW$PiRk1UT4owT%<1<{Dt3F?pHe|fOGZKA4rJVk6yrMf z)Q0y3znGZV>FI(n-r!cB6ssP0V&z%|;>9uxGqcgwO!Mk+v2R@5{Y=^9SF*CWXpl)S zeicpIYb%5K>BYqnSt)KoLpt8c#GJ-#dJP|R$J18D=WgdmaPJwX>iDO& z)Tr;=B4pBS4I?)+GP0fYJkWz6eCJqUr*_=d6VjHJ%q+3N@th|5#q{6s|MYnwiGLmH zdwP0G2%*o)%;a!h*Q9>+k$H8az1bJNB{h!QjlsRBDz zdRglQORcnDu|}duStlC&XPsP#!5IiJTWef$0DHB zEgcz#c?%a87eh5!1`BoYe!$N6SV7O0#;cv%w)mabGfGM#DbE%qRGA1hS%`Rfc|CS} zCF(h%=;T_=%Jn(oH(dn4#3#uv*q%6ca}C`lCYC%{AGfX41Vh_fY9dF5i;0?tp#m+c zIXany4|@0S`_*SiMyXai4Zn}pp}}X#@!^!d8*Hi zj2;=65R)f&_A(HT<&ivp_bWF@g zCd%a7!C-^)%8d}v`JHk$xIg~=%*DmGucV}WS3sMGEx042qR`vma6HMo`O1u73};{$ zC$J?1gcS=5E1x!xot>RYqXIh>-dbUaP=$F3y1KgN@7EibvRjTm(RQ7?r<|`2*2^_6 zE-s7VqW45P9$V4yHOh-aOn*Ge7UWiu#Yl;A>Q>B7qLn-$D%SA&Yr3zMGpUt)XbvW_ z2YutzYq+|-z3sADkGV9MPr9_Ul=1D`M>0;QRaJ2B=GBo>jr@KK?w!p>yq$(yteg7? zYXSm-#yquBb%9*>vMppQ0V!#xhIMUoCo7C>n_^5cCNZ(I&})w|CpVXv%j~X-j%T@$ z4T$3lVH$*a^Fu>;4>@_&>u-a`po@o*5qsQ&I~#Y!)q{}Xv(ld>hc}Y?>C?MzV}oDc z<*5)v%<6YFWo2cJdy;tbD@F#DMQ%fFZA8?0Av)P35MVy%q^|DG6XC@U+s<#m9_ zIOopedH#4_nskC8vakH(x0+%v%xYX0n_=wZZ%sD+i`bfieDkhhc5;Hwuw8cVI%kip zV`&dZ3EF_Sd8gPC;iOMqf5-sT z0QqXaobcJi$@l6I3~_w4{d%<=}~da9Y;dFsEUw!o#+(C!>nZDNK>r{-Ivb zWv-E0*{hgHPK$uSR&UI83GMnp$U^8IKf{$U4VIFeC`6in*?Rt&HvzOy1<6KOt zbunv?l$ykcPK`_0#p<$md6XA&WKf!vtnGg((zStnq{1;P>sDIb7_#gSPEVM#I-7K539L$;^`7pf&zu zH~0j!-SAs8yRj}uE@buA=SpKkKIO&`tj%BC(?uj7M#3+6QcNp718_?t$VkPN)yafk zhG(f9&?j-?xW9Og8=XTdA0{e~iTG8=N#<<2@ zN6^3*2CYxVWrO_hX!5egNoRiA^IRwKx>%1r9SUbnQ_-hE6V@IU zNY|Bx(Gapsb_^L&2r=;eSVNvbzH}_!i@6=;7{InUVGx+BTozU|>sZU+4K5su3L};=i(ae7fc(yZ>fX zNDbW^4L0em9om|fMt#PShH9Sw%vaT zgegvFIga+KvhOdb4I1}d@-Jm2+^Q4C?3|-9O=CPf{j6MmO^cuVhfHWB2uSr7%FCO_ zKE>9noIF-jeBI#P{r0TZ+$p%eYwOH)`s@W;{QVIg{KV!im{ZKoNP)C1H1KIisZQ%Fy;#(-V(YHh*zNF1#`}TaRFk z4@Gpg2`%qEqt)#xn`Uy$dPjUq=)tphNnVm!F;f)-PVR9sv>@pI3F#LHN{tNU&N9L$ zYAZ-N?_)&@x5clYW=#QNbyyjcq144}R!IfRXz7LB30(w2n86T{7sz5P<8W=rBLar2b}lM-WicPvC}fnf&AmF?CajbNmIL1=hRw6*Ecm1TD^58?a3@47FA^k zYgjT!!b#nUJc=3`!JTvZ^Ih?(OcGw<>QxR5lwOBa0|Nszj~>|~EFtW=Ki*9h|2ts) z9s^TBO|8Agb*D&`Nji}`l-;1^!`L17nq%3l)Yg5Y^V6d@N=hieF8})VyKyU%?b&us z+va=ugF5o^^_1tEm^W|U+&uCKxzFwc@EOKyb@h&!=HQWH155y7q?7q#l9G~is{wWw zya3qWwt8GT>1hOG0n`V;^df^++>(+K=tkX15n_$bk)l6S26?oQil;5AT4IQW>+efy zT@wKi3xs5{LVr~GC|x+5AQ^E_MYA4&=NFESTxTZ-3qAZB0$JxSU#_a~l^@em_NQn| z>W4(pg}WYDs&H^+*$d<8RXDe5p5bKImTvJSlemC|p`|G=j}JRrvqpDW&dzdK$%jDK zt5(on%E%b4k5!6_i21#pOzHvroGrwXpC76!Nn|X>w_Q zXSnX_6?7CdKi*quwTBBz08o2zzHuS@>eWpVe_Whwp4&IrtS1DHcb6I)KHe%;Wx7j5 zgfVq+63_3Tni3V!(jp64?hg>R_W&o*Zz@SOZ&S76Q-Ym%0Xv4f;1e^F*DY;>xF@D}%!dka);l{pAM){$l#XI%oB($!3+ZnjbKj1}y zhy^VKQG&v%?#MV#nQ^?z(V#CwGEWCqCswQDea7|Z(W5c9mHem4vfy2op@`OLr}Z&O zFk-^Tz2RW}0iI%KXLq=m9`4hsW8cjM=Ap0F-5GEbH8r)})e!>!#`^E_>BHsbD%Cyd zwX$59boN$&t>ErEZcf#&j#cg?k(>agPEGa1wduENo4NmMp+^f-MJs5Y^u}K_Sc_b*93^++R zSb-R9x`iZ#a^ zcENaiezzC$iQP_psWE__FO@AHoIf%g-^f>Z4K{BNm64GV;1T@LQ!O851%-ylM^cAt z*4|R;>Lh3v`_>oY4{pCLEkJ6u3&tGFW~Sx`hKJKJF@+rMEI>xHPyiTOV?M;v(b>7> zR$FhP7cQFs=1PRN0Q3=%l=YBS(jQik{$IcDY8Dn0v`pKS5l<2{@4BQ)NF-^fq-#Wr z^@!9R*HT?v(GK?kb8m-x)GB;lKi%lR)?gXCA9bp7zbjI6AFFjMEdS;F!tF)=kW zODih6{cfVx9mOR|j5q;X=nZkYpXew<46C`yAlJ3qgjt8*5#ylf^OO41AnHo5e>zb7^IxgRVm_eagu zKsX5|Vx6B)v^H+|fJKF+Q>>96xg^R44Id%f|%L` zco5drD~2W}NV`h5#BPDp&BmI|hFdjf`-rBdCN}fIys3M`oW$1e027J<9CGXYWTQV{ z142lkUrsoQ{M%3)+)P?M!=Ub)JDVYbq3MDcbF&5Vk3v##DM>is2+=_6*}AARd-~0( zV95k;&^8Yh;U`b$dDdP%;eTOZfV8D6SYbrUaeP9dMnP&PbeG+Qc^@gy@eFE8s4G6RS(CTA%DBt9Peb`=4Nno(f1~z z@CWL0z#koo*VV+#Cp*mJvx?{+@h&N5wk)6KXsX^<;B2=)`txVIMjRfSqq$g0ND9av zJ3lb+erCy~ewyQ)lOAy8+jD4g1)^32=lbVsxkr0@jcw9l%51VCUy84wS$A7q69H-h zQwMA&NRiL#5Md3ev_9IN13_fIC)r)Q1+2y2%GXN{en6W6;mSmJreI^dYF8nX3JXe$ z%#rPl1w?UdXS-E%k8*=;Zz<;VxLoG$dj4Y3euvP%R5=0=^^P`2pK;G?wlSfjYr)-`=w^~RMO3pw5@IGv$1fTw~u*0t3bOXqN zI6wNnNgV;&o(-r614AIfsyZ|zB*bX|NC#z6>n7%FIQQA!frzH~AJcxC=0C~aWN22f zGp7RR%uS)ASpvZBmq7G)o^Yk}(|c>fP=C+Vbb31=pg?X8j-b#~;kYhP4%%Kkd3uR9eyF=HfGX&jqAdjB1O^q{ludYGOaxey(}5Qhs7{kOE{%>%QDW@D_w~^;X7tW10v}@hT2(D9B zdd~ZNxIuVI6KjO0)e+O^w%s%-lwQALaQfv9pp_X_=WUjyLf-GVuALAIKjqr(e0*EC zr_ba1Zh+C!83EL}<3Y+%E79Fp3f#{lfZU$OS2CRo8-T$SbMz!Iz|1ULOkesw7Y>Qp zu146otY;DJti$#YYzR-={%b{(4I9YXmoOoFGP~-IR(*`@bY$MVsD0nh zC+8-X>?a-Oi{pYp&rNMTc8##2{4yh8$OpZ8+{YB0*>7wm@2xLi&(s+sYP6tcWDaA; zh*GOHq9m4-NP$2B6(6)NeCuYGXrqeLu-bZoANLvIzsN=kzFpEcvlw$1r|wxdj7?2S{a{Yb)9ko{6qlXQ6KlBaB*doq-#));h;@q1oglLa@@ zsXDu`(E9i2P=qghXjOXi2FMVUcAd8R`qb|Gt5^j>U$sWSA31ysZ@dcm{{5x!yC8pkK=LVqnt93bs>dlf0u6z5 zTD=kw9-dWGLskfx+mHo#5+!M(GRK%by!dS|H9%(?(weR{e53vFiqTtF!%is-IO0do z&mMDs-rlzJ5Yn;HP*WqewY4Qb=LOMs855+Yq~Nf#zLAB3>4Ocg_A?cnX*iJC2C7>l zZqH$_!a@_U2q#?ff>!4@K2Be9J|6;EV1H5hgjRxJx~L>m z*PAqZBAX#U&-{El|NA4B5?+RJRZVfHmWZp6zljDWOa-mx)q-PIkn7n20d2e)Duvn} zAjV603G>;!1C?xi0?YyG6o?ATe$I-8`{QX$CR%?qhiY?k(wgD?>)E!`XcqK*&rFRh zi)y;{jmsDVE3K_EbdwU2SjsLmkaDTvza+T0G9(l6UaPm=?gT2I>nmah&d+qT; zsg^&~-ENQ}8KE<@q5B&CRGQYs(~{i)Gs7d%W3X>_&;EHsgogGpjaUQ;QO^$Jt$1D_ zVm5XGJwszG(}Q-@3a_;NLvvc;HIQZP+w&n49UxSymYdxJsyH?|U)i{0oHQ-q?o`@d zM@Asm$vn6X)Oym`PBDNsL10AIV^U^lK&${7jr#m~umH6R2+Ez;%7;n}+wTyvYIgxq zAH`u3yocBmT@R=IU8g@1xty#)0s{l}2J_Sa6xYBI!zyUYuKXX$8sdIroO&M(jcQPjTb(ocMEd3PqwTX8B*@KJs@B+8MPs-Rs0chjq>(`XR@%2{#P~#vudr29S&(X zi6p>ohznRGBon?kf@_TP7_?vmjU8VTln325KaZua z2xyb9EddPRX#$F8A!NKI-3C!nQJ@|sn`>EfI1@~@GNk34d_5X~E@bCgs;JdP#wSYv zWa7ArT?uRBk;ne4av^s5ko)y2haRXsaxK=q$)9uM^I+j{o!7+&Wk|TwBhKSEJ_O%< zggGm=%qRan!;Yd9Dg=wP+?4-Ft@^L>VrWRNc!s})RDi>Wn)C1Jqe9tDgLmFTvQyM` zuw`-N!Q_`3131Tc1EuPF+_`a8wL*``phQ9T>58oh7t};Rqz}ozLG)ae4`;yWgJboL zPU5%`6rGYqY3xe3MWd%Wjxy@nTg$RkBJU$-+Y?KwS6!vMm-?4Z-j*f=1_oyg8aG-D zp4tP-LvA`;q<7N?U{>DAr+L?{&t|q+dWR~keAmq^Q$tO+FN?Q8qHiPawOLI6 zlKm5<9Mlh&?*KLfUVp23+g)EG){NNs%x_6mF3g2jE(=fSE%!4X?U^Ui zk7@Mkt;K+XfsnUS)`@h@z(=$<8)y8Xp`j!hs3-P40^Q)J*FI!GwO-xr3+43k8{7O-V`V&_ifuX6A|RWq+{>UTS!8^9JLHVa9Pg;KhCB%Pn zqjh8G#uYlkpPI~6B@H!^+2i~pE(;6*y z1t0TXr~f}!1WC<%_P}N$wDung50}scsI>MI7y7Ki?zYVR7w-2UOsb&>MLDIli1sjA z+@<;)Yk~nKjeT}68?#_!=OtWX>*^lTsh04UU(d$-$HEAraM;G(X2gmsAo#7evntLq zNo{L1gnS@{9Fj!^t;;@qFycvo{?r8;_JN*m5IOe3gBBsACNz2EJXi5|fC&^wROwMn zUN*Gd@TS`2e;L>;Sl3-~{b$G~xJq_`#MsnG%jVzLLq>=t?u=Q<%K}W)=zg7`16e*! z0m{%qtcA0eh8K`aoPx0+#gkeDnuV5|`VbOObHFJ2x`_5Iro8?PfQQ}!n)$lQc&}`B z8gYJ&U-1!SG8P|_hXx6edzkdYiuDOTcUp|Tm5pLnH|x$Hp4V)8Q899F)N74D1FQsu zCXjYl7*bKF<4aCOM5ANqzbtitfqimxYH`-$scvhTyS9I}hn|p-a9Ju4&5-J&QM4Nz zkBhBObH1et^t>sKL-(?w+nY0n#!OGXsHgP@l~ z`0P`VzjETpwu(e*rOWIcrD-RfJd4B>EE7)YZ6ZS zVvv-PdnR`z`)`8Sl6qHI^iRi!*r^SuPf}~09cX@hc6lRIgFN6?YDEcYk&myvxV#1+ z%n0x^XUi4N4i#Fa*;u#Al)YKcHaR|3N?zyO8nnRtVtgUY z^$e9oGCKP>p>`8nM;M^o+bMkFN2E;1VV)MeS{DcqPNFlp{@jAQ?Owpzr;6W>1&AzB z)UyX@Kc;gUo33907#rvAA8=tOa4Xij8C0N?hIsVYyG~s!XbG+#OvT^@s~$CL3pmPT zG<~#P_=a(Rj5CF2a3cfc2Uw+-YEhU8SnF)@(47)=D#s1yp(5QQ<%-xh_@sI!EpgH; z6rZqv;J|C(<>_w4nYzL_+QRUOh*qiG3U<)Uc9DJ`$N#o3VUoW1f8a|n1eAEnfzK9{ zgo;oz0#;52vv6WkvtJrUS3Gx8*X-id{;fOIs+&=oAQjbAyW+{6u5oHtx|0FXXnQ$< zI%g#@z(y5}Ge8h<0v;p(Un_W5<4T{T0%?i@W_uN}ue7~rp7=8G7TrUJo9~#b$GcMF zgPYkDi&|y=(o>MVLoC7*${ib4onI^JJGEE~<~nQdjdAh@XAHAZ9PNlJTb%n*8Xw&J z%=%kVK|^^B&P%N5ctU&7eyrdX89@>;3n^YaxII<;?Z_~*Y16-&rCvYo$V|uRrErfS zVhyFp510+;qFjd&EE4dkS6Mca$~TLrow{fVfY6~=dViI%kP0YCU&@{e9hY2vcS?>K zh+Eow@O}3F7ih*!XGe^F)^*VEs2IZ5xcBXO6D6#w^9d14syLjqKNJxk8qIDS3!hKA zWX|nV0q269#eFqX+tUYvDca-dHls`+yba5{JYa^XK*_8cwnO z)$TO1i66-^1y=2cY!-|#z!y|uYxWZ5%&1wh6Z&~ibLlQB(OO%ck~qs?7)N12vQlzJ z#nDh%7I9P^|Kv&Nf0Ag6PrlGWDTtww_8X-YiIRY?ak5gKITzOrAxa6p}QgZVkeB7%xH;?mYHi-8*>N5`$qejy;))L8NJ~VbD_?%g0xMgLQm9RiH z738Hf4eb@GKu}%{d5C2Np{Mi59h%-df~#tV5A92OJeKGYy#3|t*XbIPa9|8O{`&XL z17=h^GyMk3Rp+6rL;r#O+ra*T{WH@Ecf1Uv1uWLwJb3FE!`CfQNg`3aUc4k%Mau`TYvba+y+8^se?k87x)0RHB z$cXWZuXX%wcdlXrYEg1RquJ&lE6c_mPsQ!o2(vpRRB>S5nHSF(({a>#vhwPJVc(OjDQjLVaC7xiTHnc zaW7kY`3%vX2ZFx9be%I^`F*@KE}#7=3skb60F{_fcX9o-VSYiQ=vNAS8>nk2_M9AC zix`e#SveT&ds8g`{BNJd^4?7MPx0_Uy!rauPF{6Yh67Yw{tQl?HGu9i@{%!EsQz4< zTTMifTFF;KgrDu;os{+i-ZhQCvQ)NLhPdUSkhI28#)Ds+sPuex^hC)j)9Ye#b71{# zsr2{|>-5O+18q1r&RbNgmY(cl7bH3VOXr}rrl3B5##(4ICUHt{zG7?Z^Fq3L)>Be2%IB8(@diSa7pxRuu$b%6fl@kzJ z#AzT+ON96G`qaO044T&SiC0Iq+jCKJp3T(N9JRBc>SV-&QIuiQCKHJl`tFkVfI8zk zTlMv6o_Nt|%tN;lQ+HynQ0?nlw_8^`G4Uk&5!J?uN_GDP&06cNSxP1+)IQ_19i)1?$&|w=59VOnn1;qR8aG1 zmr3VD+dRgw7+IUI&-K53<0{HR7|+0dI$a4w@Iy9EjZXs-;!_#*Vk>6%uuglzY0dCvr3`0P1=3} z6$j7oS7GQuQaLujOA00kcu7Gb4k3=~T4p}+F)ARA4;x@JxFS$41Aw63KJp^eMBR!K zfE$`tzX*`q@%oTU1A;fRx?iL)29kgC7wOOuOe69e`Jl&b>*&NsdG`qfX5`FUTP-nD zrZ#N*qfy8i2Ndwovbuft5JJvx5LwhMRRkvE)p0q>lt&L=AgKg2D4R<6o_h?q?E~W{ zC^}PK7GBO+_qPXI3T=m;=yJ!~xG!htSYFkg`9x8Z3`+zSGSzY;N+f1h#nZa6{%0?u zF&f7_@{8Ra?pNcv`Kwuw{Qk){v1JmD>)GxPsOe0 zB`363Y&LDkvE*g*S}Q*uN>_M3&U5*(g3jvViO%$^|4js?0&rH1D}srUu=Sd)%zlc$DeJc7n@YvhXQNWV)31u23RvIvtu&Dqbpl=v%9S zynKWg{k^|Ck%CH132`>0z!zM<2Xq}^xir&!iUzjLYjri!G3(Me;xqd=u_Pk; zWu;=t#O=MnI_zp`$*%4F&PVWG9s|9ert+&?&ms+MB7i6U>fhVE(SW-$P_ z;WFesKs^NdFooWn&|1Ag7G~*!ks}0 zSJS3a!sF?V74d*sV&SCl*MT)4A`tY}p)5FY89Dw!F!ikYKk+{)V7eZONR@rOOf(edzFcEr&{>jS`QU6?3 zuNKwG?-l-%RzS+NcRh@|Ks64rE>L_fJLd%ci2E$p=V_sdiGcPr<*Avso4we1dl>g;Z!kJ zSaQU(B~l5Dy&qU@Mu-zPvVk`KV8g~y{*&malcRv=j-w$EmR&b+l?c2AoT>Mi{(5&Z ze6%oC_^1ILb_M15M1h?Q`I4&>|vtFvi7q`~k5gDUEqD9wS7 z^(hILMRO%iqUDzbltJ*vdidg_*TRM>xKHrPR3 z9-#lg^FQqP!?)4+C+j0WU_J*WWCRsTd#^nC7Jjr-i{u|L>2rXhB|I(`HM#~lO3ZmX zwnIXz!4wv4&h`8J8CJnd6CggbbaGi$bPzv0~K+FQNF+I!F5Wg1MRc&EH#T}*&aL5ZB zU;xLRKvMQqMa?1zu4sQiNEuY@=#S|FWZ(^}iADnNlMt14idKMeYN|2=fX)tlh3uXLf|N{C2utL1so;GqyLQUI*j=!Kl)gK{&_=VQWKRx;WHx zD%3q{sJ$oPX^x8)&fLAgy5eL9PQIYkoTHR~*Ue?BKgJ8=SJ>Xrl{>(%Q@F3>w~GWR zv7|^LrV+i8N_P*Nx&r^>j#?X|8Kp1{%CwA@-aveC|?d?qck{*U~rwb z)UC5lH{M)4(}1fh4o%LI0MPEZvqNuW{BNg3d$Ark-LU1m>*D4Z-e6k#Y2lT=#M1Pq zZI$rFk9yodG|)^=?!mm)y=Fb4CA+a6@zj#giEOh7B;@2+oFAs8x@Q$|@`3&KpeNoU z8T}uc+4^5^JL5>BV!)EZ|B5pV2?UjFjC(RdVDwRE&KlS1jj9J8u%x+;>v4TI-=$ET zaC+nJG?wBwb(}flYj_}Yb!uvw?@n5hYPkKat$2$Q!;gt|=vjf!&`5A=Fvu#!jx<02 z3$zjcV(_5S{P3(=$L>N&AJUW3mg}|C-%pWigUXf|D0!l=6%Mp^2kUArxCV} z5>v?qUn@y@0Ik5?A=fi1JkRN1l13qQ&tmsAD1EJP0QM)WF-s=DsE25bo4R#}KsJ^iwU27JI24w8^Iw zo3hh_V{7==G|)Ic0#p7Sa1s0)45Pb{-ZPgYZ4Q_iT@3CKX$;3 zb_{nKf7%7TbVS<4#U+?=<1#aWI(SViLO2iz4O9q}0nR*)5h`S_dGYBiP+oSG@ZsUj z)QuXq1L%}p_@T}GI7iL^w+`@k=OQGkBZ)nwlP$@2+RBOiXxkdyIE+-`pDc+o={|H> zoF<1h8)R(Q=#uuJr6fT11y#`GgWv~d4`TLuT`;EWS+A9H5lVG1M^onX6MaMh4wUe(1-4G6 zU~Od6eL6XcopnTkp_y!I&zacmCF+(@|DqOJT(6UTswl3Y0Bwl=y0(;-R`T`qzrIZV z+q+&PwOgK#_)`4}f$NWxJK)o5rOQno|GLA1n*iU|P@gFko`ueU8ZQ(EFlWQ&WRD=+ zg%WbAB?1ptFK(@ z1ed6yv^iY)HfkhhlMIw^pnd=^tn~}{L^7s?(!$Aww^QmwzodyT(=$RWP#B4jF~Yw} zOw{7&71W_5(YocvEKw^f6El=h>5^MkFnExQB&tJl_hb&q8}INtKPR?%{u=+a_=7K0 z@1DKb@9C4Q;;%hBzu|D_h4K~J#ua(75zpgYa5}qiM>5g5r|)uMP*XqrAS+MEizkK= zQ(I?T5sn@u^jo62RuB+!C6wQ4WseJ;eH!mOcW-17~DQ97VoLy{b@JvZyH#Z!*KRG!)Z^FIZ&*M}C ztC`L#SJ}8#v|Q;dF(!lsAzz2K-~H*ZC=5Adfm}7K6iLZRidahcCeP+)h2_)OC{6ycEz}G z>t8+O_Bxlv@@sGMRFPh*SVK-I59UpFzVDz_7;{=z)olBwSc(Rn8<81vu@y>`3M0Ul zI6A^3-0pOS%}&gTX$msZ)rE?QsWCAvd%$y~=(Yy4{Id_Psj~COlCpFlmmudY;9kb_ z-?oOGO~5(6t-Zqd#Lh4buCfaMcp<8olfopw=0yQ{eF-(3&dhKOzOeba!y(UAAq6=a z5@ck1{OMu>u}S_~{aXtQn!7iFXRJW-@|+=*ef=5`7#_9OlwEzn6#scVJzOhX&1=`_o^Z9f zkYzm^UQJ1i=NyiJgCl!90}F+_C%^RuUkA?4HgaWy)p{y^qZ@N-3l%t9{h^lf=xEb# zLj)yiP7kZ%oAlW!bRba;tA<`XKa9Xbbd;Vrt+d)y{8bX*f^tx6DksUj@VRzbwZUHkJW^CdALXmmJw6Dt zvJ(2Ohm6+lVjY@ok#GDkw1@#-(yQRTRa@V|?^|dHkdU7jO zR8_xIKAZc>6z#wLny^DejUEpy%0`p^bvv)a4rS%DROd?1Zg(I^B#e%ts|wi*Y^2b? znH*QFFCj*{)xai*Xaw8e>#Yl%CrsPQZ>-d)DdZsVy^|J8?%WW2d&}=+RpphB;Q6o> z*GordAz&XkU7J=MggBbQ!-j}LgeT>dJ8L8j(7#*mN2Sa*jkYp0HI6vJsx-|>u_RE< zQ&-RVkIfUYUk(j^T$5i@q(>R9$saXDsor9a$MQ(9o!Hy+d{!EF=SJUhY z8sb%MwwXmR%&Ig_?M-yMqV<~oHq@}iElIFK?b94pv*ki)zR`zt_E%wCMU@$m-@;5rfA8WE=_ zGkQ@)`YteDGDJ#d>Raf^7Q`P*ENxZL%~;IH+7j;=@3t|4ap~`nYq;AhlR2AI?Wl(i zx2D%yJFXoowYaI$-J#cBX0d+JOvoW1OKVIU!NXmQaA!&7O@TO*2TvLuzA=spY_(2l z9NlvVeH6)nt_hUs^Igl*%tZ_YsqxbA=ATX@MQS!>v2YXXXKmZZDr^>cjMX)hx*K8V z_fuiXAH~$hYILd55O}}X3Ok1|;@^QSzj@04XsmeNQ@<%rn76dm5!%?huS@Lr+|I7# z--Z_M!w}CD7dc`%Qrj5}b#|3MJsOwFa&Y&wh$N_P4)Fd6mn;;7J~?;sP`@HK>9u8w z@Yspyl&kiTmnRIC9Wl1va9wS=RZY}ZYOlu54?&dN+UctvA34leGvdDm%;t>lRg*8WsuRXO&5yr1>zQ1)= zrY>z5BGYOGS>d~^3J^Ow(58jF1^7XSqSo%sZaJj?i-ZA!fq@~xs4Jj% zqT-k;=bnO}uZ3L%zAaLozP!mzO?+ZOX}{bB4(Z=*6z3W@eD${ndG!A+35PTXh^625 zRi*j<^z!X%1#Qpr+}6kO6{D@jb(%$B#{uRSXXI91#t(%(4KPnSNqf}Y_v+AcQ{0_r zV;~XAXr;_-nFFHUf;Yg$uS z3CU*}N=yf`ZqKd4lVQ({l$TFh9z}5;^>T6cs3UykFHhW3Q&BySy41Hphm(5n3R#Rb zOu2GZdcLxC66gp~jdv$(u>L@n6zdJKr=0dL)ErMKfZMj3CrX)OeX!xr6HQ|Wy;x{R z%sV2io)8-BRV6b$?wASGSlBiadnoK`fH{(lb=Qy{eU%@CuUz9f-O~GSenBFaD>wz|Vwg`JqYt|l5r%iRWUw@| zKT|UznE3o4mn9hxb48F>XH3;$z_csSzK*UntO%r^U=osLuBuAM?O2#cH&esd9C#(dipGPkFef`6(ix-*{TL zJp86L$yESQT@3+Jt6i4sUn4In%MRD?K zB9SX3l&PPUOUs}p?-M`2%_`u1MlFSObK>eg#14?S`W32*^+J6R9YiP)l)}6(6*c&~ z&z&a5)LSC6N9cm!+%Kl-0cJ&$?vmCAS)bK%EF2~%O@GH|LwW@` zo+|W=R~5Zm;E65*Xn$Re`y*JHMTY9!2N(Lch$-j@IHTG~6NlFXW8q|QuqT=~I6NK$ z0Ey&*gM2M`>WZKOz@9>#J=sUGU|`LxIgczdN%?$pi%Q!i>#BdZE1Z!Bx7^2W5@fHwb zexGFxJ1n!TJ8GND(yIGTA1sz-Q3^Q_a6*0@zco8jnHQIgupIg5x-`CS;nBBWLQ;^N zIAp2jmX?kfqD;=Oz|2G%hN)tw8Ryc16DNSqz2Xy76R%NaYDtBV8{67C!JGvtvW;gm z**RG)oA%*`P_|VAQ!^})ZKDK-KdH$O`kyCWY1y(*sXWgKDWdArkpkj!g?620Q`$v45G>Fe$ zvVW_>eR*%UC0fPHr=aroY@*Xi!U280g~IL2Yv58(trEPJUq7fX|0LICQH9cW4F+rM zhFi>LS+DAPyEdws7fulA4%lymK|S@U#hbjb-&J(rBwU*3IUX;O0P{S^3&1?Tmr6M| z7kX0Z?1~TKNV6W-up=}qR3}>TiO^hLS#53JXWnZD;+i0OW9!SKEt@ggN>JbT``Uil z5I_ap{@>=lW@Zgb4l@pXT&9;g6@WZTr<=?A6*0=CZgXTeO9i&({`XVgOqOurl9U0ab0(b!fWf20ob4Ob4_-pnb4W|!8w_T_XD}&w0#neXNyR? zg4WP`A28~pEl1A4W_^J=E4q&(?WgnaJ5d&aoVTlk;nNoGMc|+)VXzp$qp1D+xazu! z_=nD*Qc1}o1MYaJnKCYS@N+Rw#%wG8|Bt<|j*7bN+QkATRgex91e6Bp5&;20Kv4uK zk?xL>Qc*%mLOLV_k&+s^rAs=7t`UZz1{i9Fa}Pc~@AJOTd)BwUbG{SntTTVHfSI{} zwfD8J>)QJsaC$UWRB-uK5`oobxwXp5Blv2>#Y58Gg%@gSU zd$6XgTsuU6GD86mwNGt&ZZssa<+M6%l})leury2~z`q#TaNeI8J~Y9>$vH^&>7)*a zuoK~m^494K3}7rzk1@ZChyJY1;yaQ<_l5DeYU~eweGmJa%SuUEEj=lT?X$E@2B7FI zDT)8wEJ-v`A}8+Bed>CjmZ!Fh2AxGC+X7I@}ks` zL6DT4J+w(sgkppfd`hY-@tC*FeTJQ-1yBNJ%Am`{_`M1HTDU^|{=f1BvXP0;=gZ3k zvDIAEEw+NxG4XiyCpj24R{-NQrMzOYHK}4OB8fVN^ynWxwD(6>G87v0U zN>7Cj73Ic}-{s-_=}yVcOx%TyR_R>A8dzUznl}cY1TiA7s)29C%>yV zv?K~@aerw$ak=-f9$Ah|4f~GLO1-?;kFpU19ZXVE--*_vK>wTyV@#I~5s{w+6qJk- zM~JY^eVDdZRC6~G>*;TpJ0z$|PstA#v}znld+RhB8LXz*?gazH?PH#gN-DKMu zotPVVQm=v7cu@TOJ}XhCv8#?N;1$>O^eKG2(fv0k^_dbDzT5K68O%EM1I{BvnlUB1 zexS_2b6jZJb75H7m`3Iup%@C8}oe|5?~>l`=ld`AhA~+SE4^ zMEGZV{P}_Z*yi2I$W|XWXDSoixBbfJzw;h0k;=&#Q-cf!y4a3?+Ie_&+lRIana17y z^GgT`Cz$J&!AO>sW^fU3|BtJ)Nuh&59-KiX!j~=fAN{5D&CN!6a0-+$J_2w6ywc-s zf7|!Kn`Ob3)q(-| zEC56lU|(1j(`{|x>9|Ro;;1=3rLWnU_=b;}mqNO)-eFw!q4l7K$F>oF|5Gr3^R^-G z$iShsErVN|3XqUPc5C%7Vk?}KuEq3H_vSD~6*;(xO8Eq=KBhu@dE63k9N24O^B)B{ zqHgN8cx^~ZoyHqOeg_axt85O-%RUMs(2k#q0x8Op#3`v9mj^lVY$2}X!upB5OA+&D zn;v>&ecv5zP4eKd!qeW4Ks(?Jq9h6un=S^Szj|lc5O?5RJ&S%pTkZ#Wbq?UO;vg0h zyOY|$ujh%eT3RZazeAFTG|W^}T*Pu@8S;s#MU6hxY${rwe-)Zu!Gm>SstOw<4{Rwn zc4U>VG;Ptg^0@kEnRM3P$8%-OZJsaU%T{(ER@WSR zTXv%jNCBXmf&!jV+Lv44$`;r=W_NQr9~Zx z#ex~jY>Bp(R#bb#*Cktofv_-BlXW9+LbRX98b- z>mkBRrazLNda36$SJV8QVjd4xVh9-^t?I0O;qCR3b4^~96*n&=DexdQeIL8Qoj@T! z%_wE!r4zHe>h9IBhhhN4P{M7>SL3GA%Sx)bUWs=l0HF}IEay3EAB$RCfq~9;FxHO@ zl;u$;HTqr1QPPh~x}tEE%r%7z9RFzox@E5OYr?pq@+zlg6;$kIr!UOV#HoFg5%xZ* zVe~64X0!DpiA@HpE9GZcr)BKZ9}j0jl^h?9tg_JulIrApl}f75+PD5p?_-~}->Z%d z`~3McFw`@4+=Z~8tnuBJIuO2Yw_gwn_0XB`g}pHZ6Z{;qFW^~o?QB#>{fAG)>L!&Q+wy=v1*DpofkES$Bfs%m%ev_S<8(W!}>KX(! zph>u1U(`WAEp)|9T?<2orO;<&=Ovl?h}+q68MP0tk~f>trP@bbShmFjWHKMO;OiKn zwbp4yR*JwP^cQrnBNE6#BKzpq=C|(~8Ktx4{6dTWyVA11w^8Q*NLp@bPoL1t`IwQx z^5B>8>orGz%sCByZQdKjup*BbDu?y0v^`W+jOz04!6*yPGj~jw5(&VW#nI+o$=T#u z%-jHUe~CFJ#dRM@R+LFa-BVMj(GV(Eo)2d5q8F~VWhPWhpWUj8Hn{Z`@(6eb(Av0#8i#AQAa#T&0*j$P(Tdn|-#XC1EibI={3}UZ@is4wGqmJrLPi zPE26bqWZk!-E>1H^RM{P@sq-YrVn(v)k(Zu{PNSvE=wjX8u|e6dxk>3%`Y03onI9G zWIpK$1B^i%drWNXmw)7DYixQQvXGO~<|!{O8l9x{7;}%Blgb#Udh#DYOph~1MpXPX zPMtK6O9CKJAJb72bw+?@n) zNOuVYKk0(!N9y5cskQ-Wt--{TLmZ+}`BPBiD!zDfd#(Ty@7_mbN^!c{KEcB+~)Pp7WHV+h*7{27_q(?!R z_r_iH3QiWz@C0Oh+pxJgp#2)VCyu9^-JG^_^cg%njU&j5#g>Mj#~x!>&jZlL;BaWv ziM9JSSgXOqXpobR*PeQ9^t?}_r zyG?*cubxKh>Bcrp8R@UYpNS7JletZK0}PK1e5+u53~Ikr^#Jq7(=MFgyueeOwqQqG zy|#1l6&0%@>atcIvCHI-DvmoWw1Ptq4u;6?kCo$w8OgbR4LYoq{76$_v5B7gQ>2cI zO8^2`+lsIom{vPck?{en7!DZF&4C0{jo8IyCl9m!UX8=84r#8;RKd2|uHn$%UI5g3 z)JF5j4wxSTi1gkNs>Kx7L!cl04Hw|!{X5RS8K&p5%rbSb%?sYcVG4I_l7~oOhNnf; z$G&$}-)1~qo?{4PZM>Q#y|EuHfDK<<_9+hl%p~|ybWO>- zl&RZ6;EZ5Qx0YYiE~)jbLhJCw!VX|U^`K@?-Wz~}d*VbE3$7_G_FQt8+W#6qZOi>m zD_A_5qUCUOM7N06l+}!_81)&3kBQis3xn zob-aQqXQ$UiKp!*&0}~#cipAm1R}rbZUP#Ve;b3xhjh|)X4iU;;I`4d^wW7)ksOgt zLsFVODIyDyL4zr#D0;Zhq&FB@9ms@%9#VT)wK4^7?9YltsL@|IK2m1@hdJk$P_t_;M?Ffui#nuP{SrYlpLYgI39sV1DuG0YTUyYi~2gB52i(G$DS8Mqjf zWwJSy+yi~e9UIVU!pzYu@1S~Xx+n)yOjcVlCk3aO?bnI*li;GhZtKNJC9G~`S8 z7W<&9@@mobz`PLsu6a1CjWCJL86lK)xr7gg@)jY zx@zzpitk~nKpzL0vMQvo%(dfde7UJBH+Zsu)I~bd)1IFDHM_UMIby&z^#*l6+XSAm zG4YnTeYfT_E=F1-)zC6I|DyuFi#O;=XG!G7bm*k!eMnxLAB9<%fl-a>k#~Vl;e?C; z(n^z7TwgeUN%$aOgvpOb~|!F_+eI zV~SdtK#OMfS`VBw=XIT=#1{wRVRZq9w$X^hB(G9!;`l0SHwA5*BXf5HNQ(2&J96CJ zO;!*)#f+%scM#8&#TOr;u_q?V4z^zht}nS+B*uV@d7OmdZ>j{qBPNB zF{)bxP31^UuSSwPE-pKt-cM-Vmiv@XAJqK5+m^|(3VCVcTqBDZ@uMU&Y+1{zaK$!j z>3J(VWo6|Z>F0mJtY7MpYERNr-jHW~(-bNRk00F(G6a4QDxuYRpJ~X2eIxQyF)jRARellF+r!FchCsk3PI# zNdfUp>v7a)wesS6iXdL@zNzSe<<%?Z42rA%iZa&EzhQM{_WSW;TrH$i_* zR8(7B8HBkWari35qO`Z;hfJtzJO)`^Q5t+hLp)#Fn#iwEhXmZpcnl*Wnu5@sioAuh zbgea6(odY(VRVYpYGyC)U5{&5^{%jx#_sa=X$7a3a(TK`7s4xldoLIee%BxFGVYvK z|Mw1$rersTx=5fp3h4*iaOABC{Bc6s0pf?9f0wSJ=tjoA4z7mLqiBCzssJ9c&iEY< z{KWR^H-)QG&!iV1w__nrnW)l&inA9(<@Q(HnTy#n5#(#uS1MS^Nn?nfzVT=~zI=J2 zT$dqia!ugatkC(WrXOsTA??fDiNi4IW8e{~Di=xc_rdT<`G^w*6_rC|T1mWEO(0tQ zTnUFhh3|;NB7vV|AxR`+DB*8BS>m3R?AX+ugE1IS1(1(tajZY$*!vC;y?_P7jdK~Y z^7`-87VtDR1BdEfx06Z1Cw+iszH=9^caH?XZ~B8)2P6ds#7M8&k=I(aGg!oDAZC z->Q2ZN)L*=7K>uymy9H)Q_g}>`{N_JZ$icIswI5rh-I0SL0dcCD0g6ECEdrIQYKd5 zd?Vg>_2zPy^!vQLYa0p^8nE=uQIcRw@|AEwUp8^wdkGVBnZDnBn?Q4Bs zy7zaVIEj;#KFJupUVeGPY+F#q1xpP;+ExTf?MH{DbG8ttC}u$tE!avdFRMkH0eJ?( zHwsj9C#4@66A1W#08ne&2%S)HCnOy1R{?E`sT#Q9z{pBpJKeMM z!6@Fi`mfSdI9><$g-&)}+UnQ7hrn|Lx|$6692Vsg(r_aqPF5M8njYfNXHHQJ33&be z>SYZ-+>-&W`U0JRSFrcC+E*}`)JUb}!xY{7@9fzF`%}2TGrtR+Kl$c>08pa*dR-}R zS_Po=;j^*Z)`<3sF(&4A1QX-)Nd*FbFV8ZGs=xv(Pq;Nb+3^Z9=~H2=%cSZQ0(q&_ zuYXk3#X_%L{5-{U<14})cVs=&r`>?gw#&}Fru#_IuQglpW%L$?6|GRiQx6QPk~v1U zB!2try`lEViHS>P(g64ycVatE6&z10bI+79MOj`aQ$J5cP<^R(_uzv6U3dvnjib?8 zls2vQq0a}L3@N%!IHAboFUp<5#~9Wrbp7CZQfwgBUbj%ESpk2i*+d zX>#Mfxv)huk8>OzZD)>Am_iOFrsB3ygSFLLYC#s}BwN5e=DF!2>6+6(Lbd2LFTbBP z=?zX+kk4f68uJd2CAs4g+r#qXPSrcuaaawnFWxaB2fDu-C-*{sw)Up$Q$4Z3GAT(F z@SgW$6%+Ok8P)1`gh?L@0ev~7wN{+Se~9{rNdC(gl64;LG~k_hJhr3$O{N<)ovc8u zocaS~PP_PQ3q$F6ddxbpw}4?F^MT@QN}a%&ChPZbXnL-n$w2F=?RYm6Svs8AH0yZw zI$@CnK<^XieoF6`1Drt6-brZB0?Irv!NIV!KS9ES;T?9+xzDMk;0!^}@0*tK?GE<< zEntT{&*{%$PTxD7+;{*b%y$Zy8nuCF@lHE=0Qwt1T|R?FqEq->JPD6CfAG`l z_#Sm4Quw6=UjruE6=usxIS&l9H@j4qgvoUMnt4%ASdo&MaIp|6^@jlcJtFGczJy4=YMts z3zL*hZH>t|?0}8L*c#{lEv^zfIA|-7UTX6C2yy|*KWsy$b&zRbbyUOD)or3YD7U(N z)=YtkW|FYKmS0pCX|#A0D4VQ+S;WY+J77nURKVP_*JoE11_0|(!}%1ZeCGY{;TyeV zL*PJfF~*dRR5(9UtxS-uBz04N!Rq^A%um{~g})x*(8SiW5O8V-`|}e_Vn^9Cj+`_^$lKSLU*|l;`l?F ze-up0E|DqfA{}J zo{yeQB6P*tnTY41Iy)DH@xYYAJJ$;p0~9}9iEIz%dsQrn7a*hKK^R=vfn9@Gu z6%1ATYim1pFsj|4g+&w;CDo3{5d(~R`g~QW&}x$>-GhRM7ZlPa^SjR~Dwk-C&|keA z(oEE_k}1@GnV~6J_*IkX#rMw1s$;8mt%gp!@pe9OyQR`S&enjz)bbiwJ++9mBSXy@ zpdA+9k-HdLqyY}aF4tD5iw^YX{PVtkn=33(ZB zEiK62ZL)aaZ%3Fb&25Mb80=On zZ2wS}jan;H6{BhtYVaujy?*@-KH0a<0@RccDkBgq54+0hR1U|P%=n>STmJBho#{9P z(tT{yA}&k#f*@IBib+0Y#$WK9vnp(u41xo#iOZfyEACTonIG1QO|`8CE+4$5>+(+> z3l_L`>gnCn`Df91$2Vr2D;&xv$|rq~M|Q$wE3r6p=R#LfF>^T}gduw)O!KI+;&1Fh z2~^G#Kg>WyabuvU;+RUOZ9^n3HcoCT5bPgV@i!-UV4YADk|ZM~3q(MiK#gK&uc z06l$v;BvWs{iLF%>yL8!k;?m3Uw~t#`mOWDa8zU1{9Ph8Z8YYo{!E*1q z2q$ZQKfce|k%>{#K58W;rBQ34cRT>mIr^y-I@yo@mjV2(m6y*{Y~OUd1Utyt-zX<| zG7~-MLQ(!ymEQC9frWg4-;yS4tfk@(3qRPyj<{*>9_q)A%wHZ|k)+5v1*x4u4d%)e z$_Iipf0*5niKS&g8ug*7kOXwwgJhX+mszE6-ZT3CcFftsyd% z+IV?6PSa!qzq!MmX+2KI%vDkX8tpNyTsXF806+nE2}UH&xE5|`uNpdobL*vF5AN&l zMVZj2-ymPapqXzV6Ds&(Iu{!k9W4lO$t&0oXGM#ygnqdzlG?pM?Z|kknH`)z9GPFM zy(sm>H0iSWBSsuZ1|ZtlxkGKZw3|&(NC@mP>3I+K?UpJIdjQIOt2;I>l?fAhKcSk! zG=t+jZW(oFDucjID7Y8E?YMvZE7KqBd@Z>RVm_bh3d#YG+X>8Y-Y^RPK+!SHbGR#r zTY;af6?^7IRetRYNlg;;l#%>Ye|$pIXZ8ovR!)z+^cXCb&5pS{Yz#&EDIU)JUZ=>I z3k6>fuY9i(W2*UMLtLqnX!4g9G6tnTJnK!+V%AyS_ow=(zu&9>+!?N=V1Nrn3+oy6dO+rvd>TPD*|V-4 z^YB+kS?@}$j;|s1u$UQ;cW&R2VO)nCV?}k2^#~ty1koOn;B$Oi)0YM&6SoJkzEgO8 zb{mi9q3XfMw@9`|d{5m?{osmo6}Fjk+cSI7L(73@U4k1H@H2>b9Xt9<^EWH4TVKzc zX*_aHgoZn59{^7P#Oly6t&bW&`!Xn#DFFJI+V#0c;$246qY?Taa`dKoQcSZO!UkG? zO@{FaE>Zfp19=QzDBIUbp8PK8eRDRb00HQMy%9SY_IQ<>k7gW5RyNU6Dx~X04%|mc20l0}Oj2y1TsCK_EtNM?P1TC*x9EQjd z`;$$b;GL)39h#)*g?!ibgyKpO=wzYkDSo64CjT(Ku5c1a5<0t2`!1j7v$;!ne3V23 zWab3y|9%3$DL1?DR2IjnGV#p>E~t(U*dZt*Bf~rk_v9pYo~8nR%`?58c2ao26VSdc zE%n_dh!8LK!a(^Xla0s5y+-{|x|e27^#Idw>qQgAVD z;2*)(rHxkhD6sRXCbyyZ`!OTZCZ3k3fxi<8odmXA;0}Bgo782;SWb)^r2GCJURoh_ z&Ir;N_&L-j#A0|jX!qOc#M@LKe7Y)d;Z;~|?wpxhcNQ1*((9+tqJrwz{`uUj0?o}v z1$JUjmc9p69ryM`uadjv8&-Xl<_ff|;Ak_D;BgPnZAUt%_U`x_@{e zy1Y@fW@8k|2R=UYa5U#a-0?&=D3q$MWO$i4mXEh~?34RTgdKDq`bNwj6~K6KyXmA) zyD}NsA@_VQNlEJ}Yy~pUrZ9a42l`lo+p556IU~_o*x#99Z9^dLynNc|^*$K`0uM(F zHN!|Bsr(4~U6Wx_CQjkndT^y2_zc6C3M+xT0a(AOc<@xQX=FGrnRi)f@cRQz?zW%o zuk!2I$#VEMin9-4Q|gBhO9Rp;!cG~(t;N$-XMwR>D=g9qzO*@u?O;5&_KUkuuCeky z!T<{--akB%KqL5zCsKaqm-E71R|ps&+nEv+v4NWaSuH$&g8CDjR(b0)Mw5FbxyXot z2V@S3{Oy5^1}6=eF=3>GC%paHBN&$x{=d@p)Y30%|0q2}fe?HbV#KHIL#I_uu z@D)|R;b>{cajwUL&}DL4Jbr$DeD%>}c2$P#yKlv%im`ix-(r-rYB(TN2-cQkZ7Vs;pOEq~vPpDWwd z*y$Guc&tNth!kD`yZxMxlz1cHMo-0puAC4mIOrLauu0WlCyGd3`04u0)~~fW{FycUris3gCh7=U*brOt(AIuYR5V8yY-+|>A6DK);G0Vp;Q6?Dd?`S?ATJ?PBXt0 z*}sCLrLoVc%O=07m7fB8YOd9_g)n&`t3PgisuLYCzWx(!lpU@+6al#VNEW%?w+In1zy1dousypBcA4gXm>yOT( zzfbvy(zosU0o=M{q7p$~*3`j)<`G5mRB@QPO@)``evQL5O(>SYO5^Y>0$qV%E0_rWG_ht0W{~NH3=?300dKzM^lgtjkV9BgHE8C= zQ49Kq8+d>#R&;(w5T)dO@A~3S-X?RZZ;}G0J3%0>V1U)RuEkL$q8Jp${e6{`!0!p} zirD67E8j{rU5*|ae;AoLXyW@CpT;8I)zwZru3&eb$Ut6f*UHL@gF8l99LIrW1Ub1< z{hgdw?ffTle%H;?P1}#^nJflig*3H2|i0t^l$P?=d{LBuhH=%R~Dji$@+9Lu(hll@n$$5wv5GrvkmN-}7j*s+J zia>tQp&=fv$7A>Ecr0{Fx(_Brp16!bQQVQ%1b5 zMk>~=yQ3mE^bxA`VdRmaG=v+SCAVkgciprHa z@En_6-ES{|{MBn0kd+bnYuH0s#j8I)=2IG9kSd@t{ow4}gYxW2Pe%=j_KG&q6r2gU z@zeYIb{D;H4i%imlqU5z zYCC6JC9NXwlW&9(UgkiT66>P!A5xQjq zxv8x4Pb~Bai%}Xa)*esjlj(-*HT&U zbx2UA62QxPU%cR>w@Q>s6uPu|@qXj;+n$R^MMcG{^rTk)IJ^?<0>pxOWwSeK)5uHp z65l1dF5)-JcK%>uoJ<=v=3l;c(zODLiHzKv85dtxn5+L;UA(yeUV!~A3hW#slwi{Z zg_qp&z?BR*Cy`||T>DBR#Ka_vy=Q=f7`LW;{Cn~zM&Ogu1oxX0^#QjAunNZRhAS2L z$eat{1IMr5EFrlTmLb9{-~LiE4EJ}O6N&2Ucq3tIOeFN$!X@H#P;P)1&Ie2d;l5%n z`AkO#>^1MpJ+cgXH$&KYf3GB&1tD2pbCg#byTwZzJm?`yr~=++Og|u-iTeQXI=AM& zHIvB@HB=Hh?#M56Xe0qKG80X3V`AFDN`iYRs|V7O%Y@K}b+=avk=(_7@Wa>QmvX(Z zy)jp)$ar{ICrw5eYwqrQe>_a@8)zPfAA8ClPRtT*)um`U!jGyQ%A{Qx@(f4%;$vg# z(0&MaObtKD!X@*c#7-sG6unyO%UBNITyjm^Dn1NOQItbD{c?ej%COU8&Td8bTkCEP zJM>Y~OkxVN(vl(ak@@Bx(~^(7cg|&x=FOWuJAh)IR2RcpX6@hFi!_RRs217y41Jm| z`y!GgYZh;Aj_AKbpLvJc^O}f`j`)nD;iqn@)a*$$VEB83n|iwcKBRr@=nP$%Q|pn$ zZgfg|6O*xKXabvELg3h-p26`_4L_9OOXEDrhs98MU|ph&h5r3@^i=VeS7@@7W-4L< zah`XXu1tvOsh~0Ah1tdCiAV9>z6q`yk%vo<5|?T1y_hZFpKTyJ;=+9sv-8c;jHbug z_pB+&-FP@>lHZ-f(QinRXD45sPqc*F6?zz_U;(az#PBN@90ihYO zT5@V*Ynb`F_5+Ec7q@t}n<&E#|i4Jw)YOtSw|em7al5KT~{|8FWvLO0BvmC}l#}zrQ+4MqoeVh(0LGbbHL8 zFf_ekn8ZHgYaHAgO%syL4SE=U4z!xXDqLKJm>6>AchH?zFVChfHrLqDn{#Tb+{-k* zQMm3dS*Dkgo<4ED)I&ncM)UcM^r*9o%j~8*ctq9BaS#1dr`JUGC12wVB#NkCnF+7Y zmoX*J6xec}zREV#o>`~=hGVK@xVLwsc-pJQuGURJ$jPn2^;=OOoJr@+nDKW!PhHK{ z13?sf&+73Iqi>#FIkLKh>(WeC9VUtfv<)2&a9AvFY`WQb-i5*%-rThC8m0@Bb9Y5a zy)TZ~8_CjqE<_`$IeGey$Yn#|F_{pNjD**UrtswG>}~3Jv^$EkcPO5Hj*clk+Ujd| zK6oRsvqC_hZMn1zQ*KiXg)7*t&XT31EUle8$A@N)U!T(N|8@R7!?X@|OSkDlkqDx3vmRSKg)2amVUD;+a4^i4&Ajs@c+ zf59Lkf5}k%&cm7}v;9K?DnnlCy;+3UA+-%)p#yqVg+4fA@9&wh(Z+@&TdvpzibcO% z$P^Pzg_NhK6&Ew4^PTECLsjlw$5b$qa}rDzIBuJku}=%u;YIenYB!(BKeu1)QC^9* z;<#U==sL_R#}*iMoeqPhAnzJ&;>ON3s1P}k4Hzk*gPKga6gK+(CWU| zuj{&&n9|$hy`;=ofKs0vY#=vCcs*&^@`C?S1Ooq4TINUa$bk6Y;E6>EcXt`LHW0z| zi!&}ht^U}x;C|n6@<`sB@Z56XXr5`bYVVA@4eY}K-{Yq4+tIaNMlw>S>8FbO>Jt%< zZq}Jgtv7Vs%U4#bw-p4Z?5k*nimUkElvS05<@#J-LRL$nlE>4TB3Ptk*XL0#$#2b*jK2G)pvo)^A5yGPLz z-j%J&@g#X|znmn=5ErWEqf*Fnq6$H5Zgb~1eQF=cK$Y)Zo+K16Q9Bh@#`I;b4xN~m z-Q?f*{8RgYyj9k5+Ty%lN#5_XRjJAI`gv>}WEnHndrtNep}^(+IyH{5lEsU7pCLCV zz;ih$Cr&xA=%Zo2y{Gsf7~!O2Tgj2!@v>JQS+s+lHszaj)!!58dC`aRLtG^@{>xULv$xU{rwbzPVvPw z2XZsMftelB$|T6UNmQt$-lY8FH5Rst$VAV_np7^FI~xaYK&KkR?28Y{$&5Qz_~~(1 zozZ@~W&nzp4hb&ZI)D7*qW1LE7+yHu)euxjtQ z+}$txq|wWF4vjLrU>XjgJLv9^n|1}#ZMYC?GXmeR6Yta(lZ-rDbt6-Su%G;k!XxLrdrZXA8%a!t>JU0#GU5;9xO#B+lO#txB--@ z89{bAR8B;1x~H(1D~2Z_yv?}G_bJqchwl74QRm7FuhLYg+EwZ7ywqiQ>1Q|MOsAxE zo4Rjkrzg9)RgsUmRo9kLAC~9Z)_W3kI)4HzV(k#r`SN+cb|sgVC^Wb>yf+4#(RKPA zAPicMJMu26P*Qw$m~o!}*4n4u(yiEvxMOtTDm9_gsx^@lk%r4#x@!r|a`!Cx14-!u zNyRC3=t({3X_PjNS(+nV`*OYkNK){XqXHMj$@^mU8fvmxf?Vpb7sEz+`M{;r zOKI@yai+vIM;=!PImaY52Fq;?;Cm}}3dc}x&J8zJe_Om5R*={N9_ktcx}Jj<7G^%g z_-7C!UGq<2p<6$tYZb0iu!=V~$aeA^cLtx*sxxKe!EW-B*}RN7e~D79`xDDZNZ<3B zu|xP~W3=xPyp>JSb=>{sPVN-PoAfy0dJvV`TaL$inWUs;<2lxf2wv>OtlxVj#$=*gqnVCFn4gSE96AyVZ&y zdr=neFA?g;Z_6!|xGDBS>&+V5-QF$-ftwH4-!YO<2EF_KR_-(<0apvJ66u-j>`6C# z=XZE&)aiWzFl3AQ?OQn57GCh-+T}pqO{z+%{~833wSAaxL8dWsspW^hLgqlgK-``B z)fr>u0OG80`N%3FT|3^!;dyVBSv&z7_%96q;HQN1VbotnKpYG>F;;-RmK`Qli~Zt* zpMoF-@CHpWGEYxv@oO7$zct!?BlrhP)oXh*BAZ%GdsYR#9#ejMBWO5zYwz;$XSd)hmTBB(x9_|M<>|6BxNSD~JqdBm@e7tb_S4t~ zF7oTaf&D#JpP9&kF5uK%EugUcc!K%?o{o#X{{Cc38Jq=ZXeK|qG6|{xfrx5ksysaD zO2-KZ*ZJAs5M95th-;Q}{K$LjG!Fg#RTWVENof*p^<#7C!(EXAz6f4cNNmUlIR8z1 z+`r+zIG!|lz{-K!UPBlkGTMa?eg$5*k1l!eeq{A6V^R{s_g3-z(F55_=39POO8!9m z6_;7rfJgG-$e7a0yNy?Le6Hr6Bx&Q^pPVPiA6GntvXR-2%V(e+myOLVjHE{K0mzpc({zUOhgvxZ&2*OXqfIG}1>4uzMh6-@~pvbYz-i;0|MEd?;@gtnqDQxC5+3 z)8K8dm2aYT-@rE^{?n-?Yl-7)I= zi7-s~PPBM38`cpY+_5#&9=&O&r=&e84S2g&t105gy>fj#cuXV1{bQ({lr4n7>1KGr`Ta_t_u{s@Lt`>%2X_MYSH* zaNr6K0$h~OH5~O_iN>|ZJC9WE$=ca^aP$;94lk_DG2fpO>`uZV(W4_BqMIGgeLt7y z0-w5Wf`UXnK8D|%H6<#=Xmc=F>X2g?WWCB$p^pVo6YEmA>Mg>8#_IrJ$g-ZEB@p$h zvEDRt*Ck4-%gaIlF%i_>Hkiw@%TNG^BAlF~=veD`UKQjJ<#hWsJg1JaA@*+q@ZIn> zEqFY~Ex?VQcG@jh$oanlzB}(!{Ry7VZwyR(cLc8*V=>DgOPu%is)VJk!H~}zqDrI? zAz-;x5T<5rr6Ys}2X8_!eU9z2lv0SCRvm;%ShaVd!mbD2xkBlEG^}4VLHeHm@~Kgb z30Iw`Ghb5eRkfOfQwm?>AqTsc`6K4{`{+FOn&4R#9x^grn1H3KvY71zyAqXju4#|c zjIz_Uxwf-0VXkF61a;UCNeY%)4fG|3xWru4H&cgMkXfHY>fH7?eU4|YgUlxFS!2hPZqte&+8k@gkLWSDaJ(va zMxbc2e2(j3>!YxV$82o3$=u}bre4j<1ENc&A%Dm;dIVZlMjnXsGJ@#A>-Yab{NF+R z=~@wCE*AC0K>JEAiB%sn$;pEAgl}h1<1=55#QSn9%5Y&BLsQIA-X2Qylxjki?g690 zdMk|V@#eILYTw{&lR58?h2^x;0iV7t2ifuA=LkAmaUL6Gy_}dkyj|1P+urN&H>u~} z(F7h%XMF_l>HMqyYKk@O$9F8#7=o6!>TceC>6yXWvQxn&Jb6XUqz0bmI`;AyY%E|e z&f`gM#y7h|;6E6aN^6^0xXsn)otmdv90&~>t}08bMO*IOfuOZqyhstk>qe6++A$`Q z>a0B?ohCG-pL=~5lN|fX1B+uVHeM1;_Ea~nL0XgZ*X|0sMMO?0sY>0-2?DjByO&I& zP*A8npQ4)DIvOQY9C`J}@)_ze59_8`Uh0s?&`?`LTEY`V};E#!T%Nl)!o=A~E@5GKERqv4*c4ppjsM%l$&D z5=W82ram;<=W)aN%e?tF2Z4x9F#)!U-qy&=NZf-nK!OCdyM{tJ_2AIZj?RK>qNLy0 z`Ca$cfTbBfX8d@urr2QhC<(DLvBMAtca`?HcT?BqAQT@zeq5&d_7@z)n#)%uzb`E% zrfQXyB279KZqSdL4obI1V1F}pwQ1w^)5F=a}#Y=jy3ycb9tg&ce8jU zUk9^@9~WWR!6DeQG%g>wh9=omc#Z|ju~sou7v*`3-C^%a9e998VN!{MsR&;}zy|pD z-bP_(X>GaNX?LotU`cJY^E)-oqo79{ZmIMz5h4sqD={w~qPAxsPTu3kx5f^erq@^Hsg^&`_d8cw??H7NmS0 z5UB7`LZ9)mgxfs=J^-7gDPKD(=o4Eq6hjcrUL*aTj2lnm=fsn0PQyC>`_K%}mDp9Wb92gvf zRPN+0MfASEg$0M*jD%>k$&DPu^ilfgaobvt!(1t+NDm2Am%yaYg8P!0*g=xpGFOKJ z?cF`uOZ3Pr2T>%m_j|{y#Qq3huma61p{lQS1{jwjSMYY9(+TKFfg${$u`a#Hc2er| zf0mGE{_yen!s=Ktb>lo*shKX;SmXR)H#86TD>S{^WUsCgh&A5FOZSo;u_n@-_}VgF*D5XDuA2@iWxy!iAS@Cj*tioCGT^h?CZ} zM5=mu*p)6L;^g_?EyekI4Bl7DshIFF9kRcc7@(rk>BvPmTPf|3AsyqZ;o#(TN?%lNpy}JjdUVWJ9(oZ}Wkt_x3Gf za3bSI&)EX%o@ci#%5?sHS!fWn?dMvUE$vn_*kuO19q_a2~s z7W&YOqzbr#0E#T2-9DtelI8SMg`C7jk2b(d?&qpG8%4iwY(BnzLCkYrMUh+%6gVf2 z4Y7&c(x66m>*_VK+ZPo(k}+K@hipOPVjoQI?AT3l7{OlOl9!gWV`V6wP zWDueI@rJf%18*_vk+~(h5R0sdeQ=LaU%v~KEfU}iOIO%&H^=3l8WE1b5t~ozoXEQw zr1X#G4R=#4znk&_^nQ9xTkFUA0iC2?^-&fx{TDD$I@G>tkl5Q@;U=D0g4ie^@&F~z zB5ot$tiji5YP@Ufh6M9;QSC~&N-H^`b&?3Rzb|f}u0PPRdPL#vyiPyInHhUfxKhDY zU156z)DCz&c9M4!hrTm&WNtM^%VL)3xCYES4XUN_5ioENqb?=UyZLwmP7(Xq5oJCa zl9~!+o=9tlcI2tFCB1=(c8vn>`rf+I4}cW{e0;LI2^BanQcwo@nrf&M4Cay0| zKySjx)Ha?9Q=a+|xnewEz|(NW&IAEB+Z$V#nirm~qDiQzdM>Ut_8k?*)nLv40#AxN z#|RS-p)jjFnEVrQo!wiulQy~M%72XAzW+?j^JtPTEPc!? z<|o|}ULF@{+Bc7WhDaXGq6Q{vK3!e%mIKQHYzIczZUHQ#TlbOIHQeWm<_Hzj8Y zd(dXf+r*(GP?FzlHB6Xt!ANR)Sajs`BmIH#sv6&qA-XZiuO=-SZ?8Xba@;RJqM!D# z5yqd%BI^ngjoi(zHz{Ky!vWqJQzgUoE2!TTKB(g-_=Lkc{MI1pkn9VO2cZ!Q-{cvT zC0B(6O1YB68h5hoLY$vXIN$s9898^oUC9bI^zimOUm1zm{WKwwH>DZs0%_|^bm46u zQ&=AX{F_4e7be^GID&y{$*A&wlG|Ud%=iE81^8#4-=pr`%k)+S%NM#SFvkJCO(3Ii zTgK#}kA=Wa;Hbt{2TF2%AA3a%_19TbTIK1>NUCv5!36Uv^BND16^~;rUiGP(b8|bQ zxVzjX$4oDJ=T4l+JZFrFNR$*=v|ES#JZsO3%mxI5vp9;d3eMnBc^Yp))iFZ6ykSji;S2e8z~eGi|ozf$ch zqc`v_OnWS6$2VNWEO15dkYpucN=+W6F_cjO+65U7+;jo06o1-ohzdP&# zu79O(fEbczr(fnei+Cokq!d86Q+;YKm-Tci(bL@V|5em~O3LK0e>TojRt^b4jw~6~}#o+o)ha-|+vq#8fTO95rf(ZJYgt@7rc9prkr_NfsW86gJ zo3_ehLFXBgvvKhs2i<t? zHO9s4lt^W8Ntj}W9NIJZO;dwvrPJ|B3C{#E&%iyqY% zvYht(clY-8956pvt*U5_p5wMMBcUAxiF|8_qFnf+apBqs)7<6(PMbN5ahCpJ2G+4C zQ0%^y;ugMEqybtYyvOT(!jG5wuj@~|jHQCo&uxAj0O70*ZPlc0z=>Q9Yk2+~uK*w&2^D@$Qg;v(m3m*6b#4$0vQ!^+zC7r2DN8Q#C~9@m8N$AgVrElKtRjB z9u_);6S50DJ!tTzYhA>q_lLM$>2sHsP-@Q^*(0yq(5|k?p)ZgQ0D)~wgtnu+V${9` zC#6)ToR<`6?aq*^p{kU2^^bh}ooK#b05$}lztG8aO^Uj4mUqsPQ&UIc@G_S`4^aGvuRP+YXkC^6vBpPwBU{iD?VC$a3vYR!Yq`LbPm_>m_Na6*(= z?N&L#R+vSsEpyJ*OErKH_C)V$do8h|-IwCbDv#SXyL$8Ee09&B$)!k` zX3lS++DPbxf)TFqf`i7@x4M-LU9qFxA-Yx89Z$kxAiMX?R0O;}U%^eDcZnnQQ=q+E zL0nuLf6~1O6-_a5jg3Rh34AyJggZ?E&UA0s_)VBP!C;ol19?G}6*3A%ap8(kU%1-5t{1amI_E-}?4i>zuXr_1o9E_P%~+ zUi?GNcg`{A7|;FO_x(I$Y;h~$1&JbV>a->Oy?Y3yH6ZF{Zc6 z-ZpmoTZwMeo@fO_h^8;y`hnx4n%fPLK^h=MapTd=O*L7^Gbx%R#+?S`|DnkPuT`ej zoncaK=x0Db2hek zMvYt7sC9Aqo|TCOz+&m@u0laq|NSe*lP6g@Az%A$&fXqZH4`p*2^B2$p1CYqdTsKl zHy36-ddTXvgFd=n>q8G4QtIQ(b3D#N%rh)t&9-tJVc=m9oIzX z+dRRv=U>VN&G8^DSV$G5zY|E~*Ni;}t8ZW)lbxx(C%U4i#eBW6$m>9xcoIWteh;z3 zw*8<*r#GFGHT%SEM@^~mBCu}(H6SrHUR1Fr;>c%*Pf>)zuMk~E-$4wN;H57sv#t>?)&EBIXVlt_hq5G^TI|n8P&1-Zw`yE8rA{@#5HX)BEAwORr~c8Dz_xZmU*GJR&wi4! z@oLU)mfI?p$-~y6h?jj9^F0nsPaP*9&Mq6+AOMo9J&Xm*;X3#1t3*kS>xHX_sbG}(VT2XD z+rPgs!-c^a$4p0~So&_vsWuI8bcy{)xp6DTux}udL=K4~Bg&!~SYSg5zRX|c_;*R4 zQWPWvtCUh}va=GHhZNT9~Xb#LV&cHAT zGB&hEz=7rKa6~Lft29iKn0qu^0Gm}XMCfWOr@KRDW%j-H)8~N^4Q`9LCDRyy3)?82 zk)r(u(h&KS*p`OJUtxj!v3Q*T@+}G(@T!Y#KNAH`dd}R{roRE7m5qZgz;Hzy` zv$N%_ke`PLF6+aX&`}tyh>wgS>x-BfYX-V;&onBE{`M2j*}A$9v+h|&Bo=4n#fMu^ zh2iX#lZMys2IjcShX4=;An?uD7|L9G6;3?>;kK*D7&Lo%GzkgT$LL&MLxAA2tr&?B z)7i;~X+}T@q;&MS6Su&={S!=~5b7CmYRV7}E?6 zFluzXaIn>f?Q2G8)TMp(We%0}PU?-)6H43hsYxkXQQAy?M(6@zh-M{UZ{`U@mjx3& z(5QvF?{Z@8ursP0V;HshMURsR1XIGiad8KOCp)7J#cUK^XA4{ezg<)G8xy(tC%dN) z2EQbQeW==;;uU(Idet2-puL(={mGZUo(ryKIJDL91MMifu*3_d7h8`-Ugonr;R^O6DC9=Wv3}T(htt*O!+?U?b|EtC&kl!T}`=@wqJU(xpq`g zS*hA^=U1~u=vG9a__q+pz!8Ca+(z&5$H~`OopySb)5mZxFHh1GIUP=cQHs;0`qkE< zPMP~uWcj19^MJ|T=aUMf>-VtG4!BwCW-qFA8ASCYsc%kR-va;(7OXn{ZUp#|Nw3=V zt1qok!pJE;1>1O7cD-tUAM~u`kV}dz)ZPfzAejez$gTdCnd#_<8>LPOf2bypZSCZl(UG=OIcB=j!ry% zCOVb7iVg%)Y-BBGr02<_vMIylk7k?L@4oU1EwgfC>@B{ouX?z=b%f+{Ci|pv>zwS` z!i4vEj>$XSik6tCBCfD6!|v9phz9b7Ba(8{5ElU=<-%Ry{s1|cOgz*5yVOzHBbh`Q7CKFZT#x25HB)zJYN%o*Qre8@qe<)}2}HZJ#mfX%bywD=0kpz!$3O zj{Ry6R4!Z7S0dGh+!{>^?*?=b33wg?I5NIl;4j9=*?@wZojUqV2x!sdP`{*4X4%8e zrLfdx5Z*>wKog(Q+R?i5tjmJj0vxbFYox4a?Rx zi_owLTqB2+KKQ^J3W(&#pZ2kj%jGxMT7KHUOX90#8cD*;x}BnbwC{OXnfA{xdflWw zpea=(Ec=AY4Mi)2X3!)Gk;ASbbapp^x$t>!l5M4jM$XxiEzb3z2o75pZ58YdGkg_- zYT)Wrtm%=jOqv*7TCAQ$SOm;YDJf(N3k!JAHa|fS1ABy%Es802s&Btil!x-{@-r&o zOrI|9{0Mt6pW8)y@7{d|=t+rd0Gw@$Un%VHGqs{5tE+QuyygBuQEpYh%kuSMzTcR) z5OzEm*Y4aSMNP%*H&E6z)czB%vCzbglk zdh=ae6fF-s1AaJcPn{Km$vqaIrgRLPUpMoF1uy*Z&h~$SwVtH3T#_1_+PiNxCu`bn zIBXReD_l5UNZ2fI`?irOaZ%fn`St$;;J*PlmDK-b08V`1`?jJK&bLWeG;`y#z$-^b zM}780sb|lASV3DcMVS@<7g6-bUa*3HKph+y&+|#y#HiHn2BErlaTpX{CvEhGHFrUq z&=HfmC@DYS?;h9SWsQyK`-Y-^rUFPKi%0&an}%>tSBw0-95de#k6UW) z#R0eQ6U)!hxHx+ja~S4-rYc=L`{MUF+GZApeRstqrKp0*Y7$QB>IJo1<1S?@C9o&X zseyo0<$7FQd2;dGb{e8IRQ6+N+W;)y389F9*qY+xhz15#w~)q1&rxhzHNe;XP6x%v zIN_$V>wk*3S10*atChZ+sk>D;eJP3B_<{RHqsMop&QyklBL4lNThUe<DL>oOTK?BIVl5jW&V{F`SE^_E-P(QSp2UAw7lj}hPkFk z+T!_Y0)-s)3J*z7G!^_y2NmnW^)uAVt?TWoVj66W)!k*vjeft|os94+J!tt^y4&sf zEjV3RQsgX!k_qrcYpotromXu~$Kc^&+?sC$nZK#gZi zyYKa0x#V>h73A50LZyj3%%|XEPt+sHh=`$<%EuMUA8Qsq<)3H{v1shvSPz^8)(y2~!wzaB+feSSX5M(iZqug5(q+xy zLC(Ar6Vmn~rB&K@lz+`}1>doc|JWV@(viAE3w$^c-`6w4v&pq}uyT6XjgfGCo2=y@ z@*wVvg$Yy6wd)tNFZ|p^H0a)_B%w%m__VN~e`Tx$T=ajdQf~S;Kz04U;U>bwZEH?<-vJy=|t9Vi^;KtY%A}`EI0SZ+PZ5>sO=FH?ld=SF#}ac8fP;u zf&IReZ2D(V8S-pR4)6tw#mMN?!ib&z|@;e)wJRXJS@{V#tG=5+S-+_feaGL{i9VIxAbcXV8^<|&-eK`}Bi zI!E|Rp>o6>v+lHi;;jFZUEkiuZHwqyN38qG-l?~2uK1+kw~riU5Vu3BUea&Z)AMa@WP<-2{6MIk8`1`$Eh^O4n^Vo%Da5| zzM7ipVBia%)d=;_ROZ&L_x*z%Hr3#}1K+&#fzROkMRviHgm*s|E_7IpnqoMCHI&GX z4mdt|tgCIn`ogei{9(}{y%-(~&7aq?+`r2IlYy7;L!zh2oWbxpaDj`@u0z@_o%AD| z=AK!Huj#m_So9m=knPoZY_6?=BF2phsGqrmhZB^bSTT0$PZtTbEFM8!Q75cFJ=6PQ zqzSuBjQ5s=cBrR~a@c61E)P^nGSB{=LSOwh9RJIv)UM0+#j{7i^DB@Rt{2_lMfFM) z$pp$S_ZzzZ8&l{lMcZ}#Pq*61fgql87e+?Q$z zr9ffcVvIa?hqJ@Y!ncGOE#^hBlpe|Xm`^SIDJmv6`2-(jlb`A9XF8VOzCMrWRQ}Ou zKONsZPfJ$iI!m@;&vz7g{}wJ(fsU4Yt%S8c2)RvY0ZcVvjVh;n>ZNLdFQAYZ>Ug&# zvp~E5=Z18+@0;~28PBo3Vh?XkIZ)>d+q7%y%YPrD1M5CO52?y<{+)DN!qAU_BJXLL za_R0-`0O^)m%nz8g*t91`StXBWOn_jhnytK7NO7gmOGCn5h_NR0u=OlZ=_=iG&ew# z!u(qU{l!jDt|_NH$Y0TTwo>?3iAz26ff5Y}FizxOdB(Q* z7bqTA))c6%O|XyGayvv>zIeGE0oYL}fXCmm3uNuM@l@{wA-iq*8i4cwfYtT2uV+XL zK`rEWy3JFw{eVxeFb0S4$?eB6d*R0%_`Ho*p_)O5ACtA%{8~=&zx2-x{;2quyf_*E zHCEY0v(ig+?ICW*fY*lsyl%(&o@>ytF*GMxDAWS!^R6?TVb!9`0;>rykAwJn!pt~#)oikd(A?eo92C;FpI4mda}m2ZyF3IJ zd;m&`FPG}8fM)|yb5?4?<+Xh`@2L&)A^gX&M!^(nL?>hJG=PMf-XX z8??H_L3vWCXNo9Pn}z3H`r~*O1|P5El2k zY?*b2!uMz^O#%Uk7SG*Oyc2ml-ETIs6G8)Krv7ggzH&-U zB-GpoN^cv^W_rfDrx7NbzSE_7ncp#v#)jLqQM(Ijrm}bjhj+>mHD;|R!Be4bl=Zr} z&ruS6c9Ns=lejG*}gc_6}7xh4xfQptXkvZCs zuGH!z!tW{Nq%_yN&I<>O_Rxdmos$!foBG6V6Hn65DeOaI6S8++IUv~VW^y005-oj# zg|1#huUn4iNQP2Z4M-l@s+w>2FJ94q-V+%>P~Ef)lAu;KXDQ~8S7cEnuRhL)zR20sR7n)~{`$P8bs0UQ z4%&Kie19Xl_;sJWKrwrT#)yYero2>*5m6`Tu|GLvG{f)#hm$Y$>X?H+>#EiuIj>Ic zMPjwGr}XKISz^GilSMO`t39bf?z*C-n@giwaX65oa(8&XK*Sh$#)=h z1!Q5$gqLr0bFnxp_;i0T1_)R|9OP;))hOay$ z6MO!ibna=7pc~eRQViL+1ydlQ%O2GopI4u2*_=S2hj}oAD#)*JA2= zv%6Th%IDiY1sk0AbWUob7S|9f1mlT_V1&>h7fAat8>}Yewc^4=A!`>Az7f_HzKV&9 z+sDNC>o`1#Au1M&xjA+~P`^vAno7R;SSj4+_0}o{-_+xdY*;#yVaP;ZQGuDw;ka_B zdcgCzG)(-vQf~A4CbH}cU!{WN7a}hD8h`FlVWBPPi;?zfnf|Od_rbsoGp(&J@=z-h z@>V2#0P*e?7epiBb-c?M$cokS^RuzLO*H}cGA+8x%+^Lh^T68xxrdG)hNevFuR!Pc zW1{Y{b#<^g4y;u8uwU#+p4;=t*xYtjs~#~=WwLVoG&KI`%Wj^O$}!G47rf3|;?3Kh zo8EmCjaAPdB*bF#f1FKO!g;t5=DPNheQo%el#y+242m>p1AoKfRrO-x1`FJpQKEmlh;WZLTgz>NVzsNP2y;x_b_nV5nfAC30eA zEDqr+NDEVW{5Z^E^063}Nca19-YIxAE!5atvmB(8sIm)nG_%d=QHy)ART+XlVu{=k z0rxI@^Q(3ncl&%48&`=6RQ;ov+s-|Lh#cjaC9X?ORf2LlE?yqJp;`Fo&Q~TO5Qxx4 zlhWlSCX&sZA-d&yB`oNx&)oU+Td%K?wX3__cUtVeEUA?jDsYKK9zFNcuio|#Mu#P& zlU|(o$4SxlzbZq1Hr)UAvOf<#L0W63Jbx>YY2(OMiWa9n3)=T1%r0{dSu@+HXXI+k z_GT&wrN>M!KY!JkxV^OIt@T9;=aNZVm=xWPyBcCJW!pMi$lyTI39i>UN<=|N-NMvT z7nkMK*!8{kw$&$Fjzwmu>AmFMW5$v`%4lJdA>K-1`^G~0FZG$Fw*@vYeeEpaVWe?& z{FJjq^!1kljSj4-Zl~?-yQ{_)ajkVtR%O%`CtsH~wJegQto`{8#}8?mk=Y3eHTkH? zE+K8UkE65ccuk`tp#&5q=9HoxKBfA;)2mBO7%|J%(R2`V{Vr#XatsY1nUMf{%L z!DYLz2fN<$)q}-M;q61KHiuVcX1+bf2F}pMli50OcAGvvESRnByK8v7O=zri!pZKy ztFlNbqqUs?CH6!#^@6xJQ1nsUc#oPSRcZa0>6M#6lP9WXqI6p$6hy1e;S4z2mFR^| zE6{gXNd7u)a4ym{gyXi;4MC+i9)hyr_x2^%5Q!;A=ZV}oSKFmNsJ`DO#(9a8}!!+mj z{xLB^r4cS^>=p`r&;f!vFVW6UN6e=qP>;&7N!y{1d$mVdMiiP*>A&G8$oDuKv}|oX z_c3qTh@Hx8j@kJ-MgD?|aHRh7=a=yD?c@1|>zBcks~^Ivw`_K$A7G??LU%i>S$WZ> z^O!Yk;%s~!V?jX!;%IfcI+gaF$JG z<<`QKa?qn~oO?QcMjXv)7rjp^n3KK3uN`(0(o2JdOpS%SaFuxg+!ocdqtlUhBNSf} zaH?y`^Hxj*^ylSGT^4g&1mZO(C~>LJD-l5}6& z84PagOTj-JAv81q*DUa53*zZq^I_Y}`B_uw)6?@5Vz0AIJY>Y;LQ4L!aIi#uqHK%#KtxvXsu8nDHhhAc zwWtp@q8(i%QW(qci}s>z)tqAuRqQh=f&(1*UvDwenzRFl=gpiuq;W;?$=+!5>|#AB z2MnaMn8f^|6BdMnO+jV<)!8cotE&aNj(b}a>axn}yZaG@!qh=ju+|@jLSN*W(D2L8 z8t7bopn5my$ej)IV27`E&0gf*iM&H^t@FQ zG-vXo_>^4Xry`w7=NfI+JX%-@J2kd?6{FZ0M(bZ_9y2D-I{G z=|tX>+>#AT{COz?Nf-v>SHApFcvu)!W`YE1x(-9IO%!y3lo1ze5#_CX5W@ToLho;Jq|rm(8%m1nf+w>MWv`zp}AQNp63Z$*YM6j}IZ_k?{7DWUv% zdJ~dEztGs(Td%^};jMj7EK|fE#MSEuJ${GIcVpP^02n1Kk@_gpM%*+#F@U3-VmU{I zngD$1tt_d=IPktdF*L%ZYd6b?d3xUCcGit2&G~sRM92f-c`_=gWfG1fodt_kMRPO_ zv7MJok#;1EuVgsUS2WbZ=au?k;1sn--%c85>o4cy<)_5@Oq%3m)E0gPTVf?Du!tm2 zk`7yG!}wzq$YnLrG-a1V*0*3F-t>?Z(_O8-h}D_fB^HyW9BDLtdrCups6(%~N-W~! zeQq0)1fgzm4HZGKZgExr`mVj2Hn#kq?_+m?4A@Zh@^F|{^rmkWlbS{Z>^PK%Gl?P# z1KC%2Q3;lvmi3rOl<5Y=S0z>0d5W4gs+P6d{@)Qb;*Z`1dd59RAbOM zWVljG?6izXWZOQ1Y1Hz4%2MqlHdvBsD^8CVw8OVjjCaY3 zeAd5ae>~Z@8G3vWZc%tF`pC!!@jfo+Y4y<5hGup5&tnmqc*&ERcxgC(NKH=GX9Uo1 zZte~Ia@_7tU~+0|PXm0nuNoWXZCo$aC1!lv_w^!BJgBJb3V6nS$&;z#E2#`hg5LTN@}KBm2T9IOdT{hA=qMCuCpg5&0ZJ znzQ`9m=jp5stKOFw`k2Zsx$6O3ONOA6D12*+5A*? z+;$h;8rwi_+s4I2{LwiakHY{gq(gcLpiYC)4BJy!k(5HyHo_b;8%3EPk*m}7Gkjp- zMaDOH@~p?>w!tXKS3(O4TVaY=y_Zy9sJb*%SHPbH9YipWNTfBxN?wCbLbY*5Vi;pJD&|@>AK>OyDU;J z96d9nU5gwkrqAO(Vd-vRa+5W1o4+qmcE|_Xw(XY@Hw4s(rR+yMrK5&|c*3PO?$%5kTpaAaoCg_r4^^ht2CvxIi#$aeGo9C_>Y| z$Ydwx1|P_71#v!&`#E+Vv3Rx z&JDM3p!+`3I5FtDvZG<-Eb=cdNn11`>)U4hwq^Gt@;xy(bz<#-5izX~QC>5%%oDR2 z*~_0y0_D^vZ|$O4Co63XF5<~Z-&2$xWVR6q`_e#)k8p78fAqhM(YmJWg`C(^n^#bE}0nN2%|6wu^A z(MNyP;T_-Dy9EnbatxGFQga7qlmsEfw;Sr9YEowoh|uCtwdsa#qRUdh8F*#*2htB_ zPi$@Y)}6_ayxYfx4b!+u zz@3ZKN1K(K8hmPI@x7n*7et~+!18~3>WtVVkbrQYOWv(NwJLuzA1DwO+$NxH_=oEr z+|cjK&6e++T4*rjoTlnY5DNmvR5aAF~TKr0#8lnrb zX=ubI6HpA~iYFY5Mn7FHaKUQHl$&i`K2lBMFP`1YAFrk`BQ%=7vg*z1T>180?NgvZDVC4RNlh4U}7f6#AGXR2LyPmpDIT_H=a{)lgx#x_P|Jg@2!&@wa=*LGm z3?xYU*5PaTfH^FE9g7D^8yjK~plk7zCzwlZ^(dw2j|lk7EfX+bx0AP~;2Er)bsqNATETw7pg<%$0MHP}B@n@Y2#1GY8iF`Y6^MWnTRi{*7KsRs%v7 z+(f7A@#uRg+I0uAzfr9nkDyd*fRnS_Z}_%{Cax8Nn|L=+d6bJ^cj!Cs8?Y>AhDpMW zXG-k4*7d&%IR2L2>v1vnbuy#wNO^64A8~r->|ho9{frA=Y()u9+ye~=BhqKirlMk&}WS|=BQz*VQN@a8%L(TxVf++|RYIu}hYeFl50m6r^J0wsJZS*I3Tcg$s(c?7 zfMh~&^mAV0qrrwy_+pm9%b-Cf(ZDfDQFz_K^>HY}pjxrT0gv5sdH+tw(}&bd@)15i zpE@sv`38+LMMb5Hsi$yda#5@GU7y!D>CtJAyODtPZ9XG=RPU@irq{|Bke&YoAHBFx zP*RS#WT`+}w-SIW{(JC7{Ocy36%7arwYXVN+wy);xUXNPzJ?wkQjs(GQ+Mr0cwI3z zgc2F{(ADGplU{7}7zQG;X6^xM5}LH>mwtdKq7ve;RGrW%br33_5~^rtMXH{tw4s5_ zee!{|jKL6a3cY3c1rl0SJDNwQLIauu_3%S7l6Y}RVof`&aFsyhv(~N+%AdVNJXb3P z4}EwwrP|EQMz0+M^sjCy)P@dcp(QToNMBPO05Q+o^;WX*Pv&sKpo)j_heRT%R*$|Z zR@3A?reXPJ$daN|g({Aoj(Sn(2DhiDXYp86k@M0SgJl4@(!{e3|Ktc7|KG+aQH$hj zV^%5gIiflQ!{gFPdy8gxt9C2+1?Yu8gv~6rI*INg0uA#9cpeU|&S;}PeE9HJs1J}d zlgAcYn=>;LGc&s93)Y0&SpRVQV7I*777m13Y7#ef)j91%B%0s9Y!bMIC}T19vmR&} zVv35m(sbI8-(!PtP$?Z1(}MmK@P0uE+p0s#>Tf?hbno>16OH%=@$LOEg5t1W93+$j zyyX;cLBasm0&k`GVt>WW^$s{Y2pARA*neJFlR$N)=O|0i2L($xD4NOAX3e9-C@%B9iwrDgjlrk{U_XO^ z*}~M2_x0xpj*pA+5W~nIyAv}w42H1en(X&7%K>z%J$`yeMv1G50$G112428HgB&vV z&!|XhQ-d=*f4w3Tt1Amu0YGh#COZ;}Q3n;*Q<8S=)6D~Hx4TheLd7p1@f<`!{4`ND z3nst{jy&jX%X}RS@dg>iVlU|rz|Y>D(A1We<(iAHSP{W;(l%_UtR;VLM}N$p2F*IQ zGMQ^{dR#ciHC1_;@SVC}H1EvZU>JQZNQg52#^KcCC(7s-*I*&T__k|Z@8mQx*}R2D zC8?s?k|l*7RMXw+IXNH%l6vx}%e^w`64Z9~pop5g;@tH!Vt{7C?B|EDnhaIPH+76ufQ%+D4S2 z5)Fq45`;%%&fjRK||#?NFHSxE-Wroo>wU*vy6{ri_8t(m=C+ z-W$_fN8nONGo;^>LPu5%u0`SJ+(=DT)z#F*wGeZ;*9Z#y-0Fk3VCIB5;v18i0s?rN zjp9eR;9K7NZT$!FsKOA?RSIC-*sPD8;hlTcPm@cKvv|hKqumo`W3)WKzr3aL#%ri0I0Pe zi)B(fs_p)YxN`DN%M$d;Jx?*W9%uu?Z}cSgOC!3Nz|M5X?>r-Bm1=VmiQ79ViZK@^ z<$Sy^;6nj!3J%ry_&C}d1QrQj#5~+$KBL^onu%-N;nVarSY}6VAc`?_5vt!!3!383H8SQ*Vt5wzP!4R`}$B-`4$oKe!$IfV`E^8)LO5XB=XR1{A zAg3-=uP?RAlEet<>FFdyEFJI0H2J-7V2_50h9c302pfje1lcpg0tE6W9?>CNzjK-5ICPLf4Nb7 zMk|K`t7Q6!lcXp8`hM*9FL5>9i+iCVf>oTgl}PdDhr163i;pPU_Xdg?TYlnah?&z+ z!G3vtWL~?!_d0*_nAitd|2hVK=>t(zZ0?h$Lt26THW8pA0TTjMfkB^XWFolGR*-7G>WICsXfavyd8Ox#(w!HqAe-lL{`1m#?b?J$d_w+rmge zqJxiTon=2)W$@=)Xht4C<4I~6kJasA0mI_i{lAFtq1 z>HDVP5ya^tPlSRdZ$Cf3+}aoYszOL7`>P!fG|EHQkCw2 zN;F|~9afM!Dk$(iF2E*lHLtv`2*uWt{t=ygcrTbtW&dSz3xI4i0BV3W1G;vsiPElQ zyWWBWY_()=4nGVq6+1|p<2OzIk}?aW-$KnmYPMfBNNAw4qA~2!hYdG-|E{lmb5YG?j6XE#A^b z;PyDXueI&Tt3J`yUL5vRddN&vlHLFmvZdTz$l4)U>-nlMV9d}?53nn?nE;@LDa83A z$se@~Wgc}C2Z#ukyyp+x*>0f7Za6~+ln9*Oo99_-|0iscDbKieKs9HdSy-Q@Cs$=x>s0|7$C0yf3qo^as?I^a^IIDpJt=^y4qJY4x4^O^92E!3&?OVHIpG# zYI~}l9{Z7BNzo9CUHaq=>09UeB3RytV=ZdFc)oT9Fk$(XAJ)+oD^-lp*+0)d)5qNkFN*m3P4 z-ldNoIKOTNf@ic9d0YIwuc|+N@u!P-NoLZO`<-*~OFy!UJ8lMkizYXS8w9pN&IJV*Z z$;DnOrTFa9?%63S^j1p$OA*K_h1&m?G1;qiqWNP@2q6!u)o$Eq6=tEr3yZ(IkK`+C zw&WBWw4%^YsFwj%#<}8Gltd*If9A`O7wSn#x}1rb zW~5%HRCA6ri`)%w#0xMk9A3VBDJ3HlUR{NqoA0+M>jet|k>C~QyjD8MY5w4M*cTjl z)CaurITYo9O#sj)EftvGrTXIl5qHDIf1SlIEhrH)F^Ink-Yqm$b`Tx zVs*}#Ze6dxqj*D(cZ9jSr7DR4Y9eDTtf2~B7zCmeR<)>u*CKIHgNN3eDJ2?l>c1ir z63Va2sI7j-{1oB}b9{B$uYi@G5jBsJk^#A&o>myAsWpZqRc0+ZbLSwa-7*kvYc!~M z+&qEpjZ=s2o96~?K!R=`@gi$~(*7AMN5v1LILr^Z@#Apm-uL#LV#`SrWa^+ZMI68e ziYsT5BMe6Gc90@r7pXwC*)krBKk(o`K`I%m|J(ys_tE1%W8M?b_(`}U?zA_mDbarP zGXiMIgT4TH+w}RM$>@SOFB17YyZ`gB-1lZ7M#i~4U7sebm%Norw(yXa_EwS1LI11j zk&%(yshZi5u^>c{c5S`r|fknD3T24r9TAso3~+NS4) zk#fUA(ij=$B!4zGqy1(g?S~J?ONt>roDcNm0LHd5ArT zi#sqh)FKR3XXGZYme>P8z~zkbFO-6>lZ5-^M-l(YX#$z0S^^rd6HZfQ0{W@e965eT z&|r27zJv9i#k}F^%PN{=2zM$$F8uQ1_D_{=_9FfcAyD25HHU;kK1`I7{0+01B3ML! ziTV`Voww+L-j+Yzo`;IC9rJ0{}i=CB0+MpC3Yor6HJL2pKX(Fd*K*!)pv8p%8mo@ z+@43u^zRHFp=E{`xkRU{bb_=pb04w0H>FVyyd09)DlhRzhBYwRKiA0aFd+EHag6CDR7Vq z`}8iT?U%2d(q<)NA&jx*6{p6A%g9|hIMc0|%ux80X}m>rp;(&Ih7)jE~$%-rzU zrQ@Iao9-RD+vX!qdX_+3W6|6qUe2F6HMD9pRNk=-#&RT$S}SM(&ZRl2PsGW}eUgru z^^+UGhQPJO`<4_)_*HJJbHK?2*xXRsERw`Ke2_+fXll#!9z*6jxiJ^J-l+rAs;L+5 z9eA6PA3orEkj(^iQVW`&ldd$+AI}fm4U|)u4sBOiqHIe4#<7DppJhO3^TgBj)fvZd z&*_!#mWS1h9iErqrQmkW!)V-OkiW z-k~@dj~XtcwO7o0#Ha1#lZnv=^2(DW>pOoMi{!LTwwwg=2n_)XB~tVb%Do)&Jov#s zVlzJkuQa4qr0O}Ga@aq!@bc`nvxm+dkTOwcA|v0N6AIY!l6?39vol~@qnWG1Kx9m$ zcFN!D^7y9Vny`gkZD>``%1kVAW#T;wQNij=NnxyVzGp;;o6mm{O8t3>_(D402o+TdbB2gpX2ZyRTo9=dTPvKQ-$}}`*yn(On zOS^$wmzYpjHf(58Z#&8-NKU)c@P4WXDYS5)R!)*q+f14YckT#DG@?KT6R)JBkU>BsM?7oz&U>N$t(1N+@y8IZpx}4 z)K?SGv-4vV6k0eo=EmB=1~!><9r!Z-Mp?%V+0pc3nF=C6FA-=ItmH~Y2M%3anowr- z`ZL5`=g3OO2ec&UUMiA7J9Q^mW#dp)6d4{cji>Lhi-0K|F+U;EXTlgMJSK^z-b3zh zgo>y8U`+qnM_?1-`O_uuO_Oa53JQK>FkljkXFewHYwG#aVw10y5Db*m(*^qn+L}&c zM6Ee++B%f>{_EEOk$GKI!&ZHg3=(hL7F%XWh-KmlG~fK(A~(;^L$< zhTTcPk|7B9xVnw6PY$$Exl$JuSa#;hy1pcd!LwuTaBO5&b^RPwf=BMl~ zKiTe#EovDZE*%jX9E&wC_qV=G(4ly~VlwJvB{?$8w{8Z?GJw6MS2k?+GXm!d^L$Mg zC5hPCu?PtXM_$ITdWBDw7!1--(1d)0(#o$(P7=Ti)bIM3ZS zAG+(PqeRIN#x5HC6}Lz-N!YTN(7*8M+6w5I*QLZ8F5@t!TsP=b3AJoLu6eK7 zh6Qi{q6jmN2xF9Rft+v)55vT2jVfBAG~!ov!8y0brN1mCB&{EC?tH-U6!>VvKAWu| zm9_iD{TdNBOze?WT`Ta0csw53ZASZ(iFml62Jg(n19gUE%!PbAcz_uDS4t)U;np*9 z->DrVpnv}I>;UY1@fSI!{n2+((}h$zC@q8TBS7_r${tIj;E#fuTgI0F@4-Ph_N_Vl z)(vxuZ!+b50vW(1_2_u@VDUM#YKht@;{Jt1kz_+n96&ybxsMhMMQw901#SfXjw_Pn zL~X8h={OxOBEo`RVw2+jdN`G31*vUS%3oj+O{D+qymz~~F%J|;1;|W&j|JS%xVfaJ zyTD&RkP`KY1Omz9^Pu_uFY^)~e_<}@UHv+MaV56!vXM;`0QnYD_Upk+zyzY4Z zNMfjMe-))!yKm-vQrj5?hznd>ECJ$J20$x|TYm8kZW3c|)TvL@F_ZkC+0Wvk@qw+kh%V}g&D=t%cEFmuGHclkkc&djJK`I3IwSd1`a{rfX#4Rzg@jO`v| z_2pcutlG5;H!jQs5bwNdlCL#R5qSbrVPUypa{?A_F1%hjAnLtR(z~@=kDwn=ZH;9m zMC+podR0N-y@7Z8%YhuPY0@T;g-~n4r2GbTWWSqf=z)?3Ao(HdW7{f(stO2VBgu^T zp-e$N)<25d9ia~E;qriUezkGG&OLPoBb=B~wTrub>j=c)?FC;@-+`b^$YHpHCeI@n ze1{RHIGsoIf@KxXFFi@LXH~wza-;3ls!;t7=uJ3ZZ?5nWeC1S>zagb3euC630Z-Fh z{%27zO(JRpOc4+3?qI$!2JGfD-{D}@RCc8fEsL9AQ+GLg7=jv7{U~IDWYhu-S&)xI zojgAb?P!#9DiL!5rRp78xld&=Pr+a=R3Miyf zc`!R(Ax{(7y0Wr_3S~|LIesG{UtF~EnQ^W?4P=`ID;*We|JB}i z07bR5+m0Zhh=58)G6E7636gVC$w{*0oRb5R1(cjQ>-OPHeK9c|&+L3|Aa?KaZ9Yp!Fhg0nA+bZ;{;C)VihO00x@dPyYs~J9GXC zuZ?%ifzae17^fQuriv)+{Xh2(|4ZJO32#x>zyS3Ie;wp7Ua|&?QTu4JQn;d(XcmW= z^$~o)TV=4r$3*ig`&2C8%b%ZQHYw0hcmpgiVxA_mA1hlxhG&r> zMXCAt_%@fcf`SyZw6RQ|Vcs=`H80oPtpDxpX*oW3W0;{JAVIB1y4n}-Dc47cx zKIdj+0F!QXH!yHg0h2BW&Y8RVe|lmV(qnq{iA-1GhJV}*{_-f{H7zB`lZFSh=Kk~o ztg9|`QUIw)w}v#-VNU7&Us4Xyd*(O%qj6W9P(^(FlfM%sej2z)|4b6yW%y+qaG{Kk zQ$Kzj`R`%HAO6f-ao4Wwy(AqH!9=2g9m7gQG_^)TS7-E>3(i-PO*aU6S4;5t%Sszc za8;YPr^yTmpg{{`q?zxk-l4;o+@S8huV#O!B$8gT;%l}c`y1$ajJ^K|ACD5za_MUG z=!$3}Z7JTuyK$Y8VBhNYpW$YKK0F;3=snXPisWw?cwbC^1gPv0Fw%toJ0nepEcub+ z%3!T61vi1j15fx>-QiWq-=Ezb&Ns5L|6WEGXg6^y?Q8q@TL{+6)@oFSV(YD=eFfqI zE{u@@yAb5)R@ni!qOGcW1Km%NPtsk3xTrI%&9=tT4+woEJpW66U(64eD?<7gUr}Ec zkLQyajsddoV4_75{{G(VR{-E7f7~8l7k4NM5OFGFw!M46I2BQ;sxs$2m2i)U5nwOp zk!2^zLtSmiN6lhIA<6pc*Z9W&Z&N!%FTXi8D9+D@JoURq9m&Ahxq9fPsIHC?-F+Pt zpoYqUV14p`qt|zch|0!HxYZ`Gu-N(~*qm2c`P?fhNngOlYVvGXRlR-Met-qm1jtxC zPR2g2(U+T(_4Ej(m-(K!GNjmtDHYa=n(ldh{0T1BC%2zZft?=5 zQYhzt#5R+`_200~lvtCKtz=JEX}&|drX)f%?tIXoZO6$icIO@{)ZqKaLr{;IuD~!& zp5eIj3BcE9&BCaK|$4sxu~u;X*6 zhtPfk6m}f9@G(E9H_wiigvo)FPoT&CEAFpR+Y^?<6Owi!|-MKEJ*IzW>G#j)FyU=j$DJHQlYiq*%Fweli52F zE6*n7?1-h3nN}Rh55SfewWbBuVisGK0FAt9);D3&8X3w{2?WJ6YK0241s?R%heOS7 zIx`y)E5U?m+2Ia@9FA#=V5z)v1z!Kc(Y9+jr`<@qxhno-pzI5<`PeFnV8i* z{fJ73?)yzY<^TSPGRK8Z*os##%LKpDpyk89eC}q3zv|#f^FnP1Sn-yS|3b47& zbxVOHHj(z+-dQ4&9BSQA-*iofCr80mTd@a%4te#q`{Pv1mL1kQxpoD-M8T~-nJY<~ zbt0W5FDK{0xM%d*emM;d&BCUBZ!6^^@wz+sk5*GP)pJN!;>>h4=F%%$oDNNj&n|x6 z@_aft6NJx1D-*7+R<7t~w@n0%K!ZkLXka;$%U+(Q@xtN7tG;MGeSP;2X0F%akSX=% z%JzIH8hz_^5-6f2x8o=$-*{G_d9)M18$in8wmupId^^&>x6^mtrCO+Vd*jduhxG^k zACCp4o;-KBfdYXf)9(b38kyO~W1&k>M`mv>)ShogH&v;EO#XJ5$QPd4R`su8XgMph z6NC^*dd<+(RFCwYn5(0MLrio##s!h~W*b^m>scqk9ncs}GTb6opgUN*VyftqNF(PR zVV_&s>DwaBAI_!kZf~o(ilK^t(L`WCBP4njzu8(Ci20xp3h$ZC)W_nwt%zJ-6d_m? zAvY2shoG@~M?Snf=$KPd;zyD7B1~z!h?qSEQ2RGG$nYoSH z_Uh2}s~#g;h>~hQJH$MHa~(tBD@yGmy{8Es)xo1$_^&Y`kBF0s>GHnzMI!gAH+Z$u zf}v!(0tf3{@S{zN!=16T!}Al0qElhc!;}>dAqDh;ezuW;R|jAWA^bzH6z;U>1z|5B zN`~@3+0=Z}Wh2GHt8Hyj^(a_da6A~lH?h`H_u%2gr7^6CeS{PfmH z`O3U$`ZdTS6i(aO{ClO1nbnDj`VCKxXZxnnW@s}uQtV-I-@#+f>JmI-D z5>GmM%(-!-wN$J66O}vspF$u+-P85;0SI1nKM`kF*NU>1GH&Jzo*MmR+XKYl782P1+&WIzIiHgzS5nhY|U^==h5O;*0uQ#v4N|2~>uORMng7({wD!g1Pe-%sNdPy(Nj+^OuLpRW9dF?VG#x#-8sl){ZZW z+YeI`HKMZUZId2Y);~Tv*%=@!U2m6lzz|Io9LT|Fc_K?klco>O?I86~J~%xw<`vz^ zse)D$`v+?y>_k`&b=p=O3SX%Y`Rzwu)FDLr(_%`$%oB0H+LFvt6hJJ?fx5%+jc4%2=-@dg)^0xMh)c6&7x>iE&``Xj7<$2wKfUd zR7WSM^fQNr4MKWHBevV4EjB_0EeI20R8oky4*?di0x(!`Fz$UhpGf7A=N8cqmqH(j z_p&5EdOhGtfz5=6S=I#RB33p{D7?VZ(ehB>R?J+5R9WW9CjEO;Oko*K{=%2GR)wlM zgS{ z_Uq^_nM@h@&k|bCc_{6uc;s@`=$WJYP1k#@A6&m{@vHNi4Tzrp@>Itz`{t1n!+ukk zZFhN!fck_LdqJUk!x)%U+z;8dFN{oI8q8}AhdLOiBBl~;Vz_b7J}tmlXJXA2wQADZ z2m?DhB3KVUWL1$Kt!|M?#ip1KwR67+ z-{RbQKK6~Sf5X{5{o>5=VMz(YFiokodJT6vQy$)W7}GQ2RtN;^Zqk=btH6cELIx?+ zYfHwao$#=E3srF?5zpoqax3w=Y%SU7GUn#y4ok~DW*p^Z5lUE!g5%fF;UJVaEzI8S zXX+)5If^ftD^i_L^J>GvaMLO?@TXnd?Rm!a3}+yV2B(}7XOA-YbyeeW>TG9t@8w}> zuZEgS8w&RjzZ?K1)PiZv7fJJ2(mteS7Q@YfD0+h z=cGzBt1MoY(!1OFl(vE;0K{G~T(JJVs+&Iz`($kmZeh^wLe>w37M#R;4ec&;8gnI0 znMv~```vm2%8C@+20T2jL0Y?Fb{sxDGJWl3mXexUGCZtgY+_R07U3}IcZ=5NFr0<@ zIt0>Oz&$9LrLCdCetUmk3)Bn}CV&;tdvT?-l>RMwWHr|*%^hFL-y?gAhE5$W!Yo|Z ziU*)a_S=A(IqJ7_P~2<3Fqody^QsSbXm3Kr8OB>aUo zWTFGDzl-C;q4cDvc(o8Ev2(o((Hl+slqh?YxAs7?0pubqYwnpGw3gLceiV(cOuoP5~^;m(<-GChZ0Q~Nt<>V2%G%<9b}T$EciF6Wh-r^m$LhMOUfxrI*W^-F|M)z3Bg zAjz!j?5+H1o&`hYolp#gwRoDQc<%jHI%1prk6Qwz?$Kkp(&b}qF7H~2U!Xr<)m zxSo$Y8E)>*r|{{H1tu+Gzvb{qevad5n)pIeupI^RiZc1=HD0JB$iZ$H;=bl52Xgeo zXm>_G6hhRc_emx_TR0XM*>6}bI%=<3a+8FvuW`E;G@8X+oaRk*8NC?Es1KW*?_4sm z=xzm8o+E#iR;@5_mdm2C}58Mn=fY!a{+=ZEw zIX9u$va1@MAY89Xi%sx^x0r9got*ogv>dy-Bzyi4!~!D78VgI1)nvMjpNNfL2COsS zlYR<2NuZHHRz?Kv+Q9{4+WitCma6rLXmsx2Ah^_)vh^znWs<4OtfdYWR%N2w!CX6n zA6yFrm6K*lIs8Pd;eyU?C^xGj-@T4=r2-=Jl8FY4XYuL0`9#@r#Y%|L)Ie&XB^UA7 zSRs5JOs%9CLRYWyCj*|MRx;c@vCtz^%X-B*;niE=LJd~xxf0fJPjtQedv&ffzr*1{ zJ1#cUG`#p@wjIAe9Ji!U=x!uPBgel{rZ$RZC_Lj=@9FJLc*J1$c(lkQ%lDh~<_cJV z)f^4f@yJt*m7m9}XV@(^I*M*g&$`(!cp@B5ml7jZB4}Ck8Xo*!CQVltl&9_oO0eh% z`qK=(jGUQVQw(b-QO8yVQv`axSqqj!65d9}4W7#SW;ji}pIH9)p~=ZEQq|uPay6Qb zPb-gJKJGD#Y(jPOJVuqP6NCF`K9vSc*s)^Tbu+@_yLf2bMhO+HxTHkRup^{yb)F_q zuKSYhGSiHM5$uu(kU%!M6elMqUL9U7kwwm_#xyirV*)j8y*bKK5nDH?zQCT*|zKAGzYib8BdL)Q#W7xa%-=WgL7k_3`<8x z2jnYQTnb+e>;!&nnQI~f0t5 zu9Tr1I}&v8l}Rghr}9H3&wZ%&Kv{uL?pg&io^R>WNA=)xac<(upmfGr$_v)@MqGH&*Mw=e$cmwBRdY zFovK)9w|taw58wAQy%bS^~F0njo}k_w`3A(d7qzerWl!)K2Dvn*afoV%)h^9@n(h0*kgf|@lx;7 zvTJ{1CqnzU&5!p7&Lw3iS>e#-f)@h~jaXe>oy@s5@me558kC~WVyr;FDHTvB%_vVg zR?JLfutgw{N4}HKo-H~n{T0B+q3IS{(v=rfexBAa@{+exS8QfE-w6=uaWtqbCTjB0)-HC zG)iy0NaO8b`@(LQP0hXQzrUAOmb^Kd9^cHuz|b4eOcq_bAH8wiu9J|)rliT^{zhMs z9MHH>=- z&O9rQ3>1h`{Zl&%-t3V;><`6-!NQOBI_#bnfrdu++Au6^Z0I8N1A<>rEl;@$Djt3_ z*}5o_wY3r`(qm34rD!^doO^AQ0Z>L%c0AX1{Fv1!eBy;%{?@onn(oc<{ zm!5EScV{4i7ID^2Vm~Xje-yUQQ2U!ZH)KQnQi!> zryQYiT5DI6Ba(>03Tn_>Qer*)Y0dC#3pPBKgj`q85PCwYmNoL+edMKD%kiseo|p5y z+VdY09`LyBRcn;zk{X6zZqM!lAV=#;nZ354?e>Fj#E5;5m;mzXWbYKQhlWy~*#Fii zk|)4J5Za_WWySRg07$$2&$3UJjxadAl$r^=3}?NoNJAwL0Z35Q<#=}abHvh!J$Fq( zM{09t!Qn~O@*LA*Wm1*>#7)G{;_$~;c=~_u)SW32+A5vk#FvQ5 z2F$rY=kx*S)WSL}4To#B&YhrZ0cR}_T!I(TTW%+3nD|CBhl{oaAQmsw8_&I+T);`T znke1Acrzv6Qm1@bkI26`N;1Z>g0z0bzkxosKh?0W`2`574pWd^TX`W}_a7z-5@pZT z<(Wn?+}91zw)^*=8Ldwl@>v>`U{APq#MP|4ETmiJGkTJwGBY@4>lLT1$e0Ib&Vv^L zx&{ym92ur$rO8U^G`CmC$DK!JZPRQ~xUkts421RAC@dT;Vgz8ofG=aYt;P0oQ5gqB_1K$GEM{Ta{BrD(a;!p#GWD zR!Mgj(LM0-b8}5L=~55>c?Bn&!ItvCzcWpznrS4n+D6Ea4f}MqA@Yh?Hk2-ZB%U?A zyMX!JfnI~IJwwP@;{m9~ziTTaE~0WFEzav8o=PJX;3S|44f-4tAAb)(uz$1Zg*M8ZQ_OuX>e6JLGdxA20%$wNq;dR_x1!^yj}@_filB;Ra$^Px>`2T{k~-) zy8a{k^8Gxf`ajo%?9HsK7DE}Y0$?Yu(H+_6%E~hDU(iLfN3H<C=YVc!f#_V}5sG zFO@e(vBI?XvGw#Ieob+4Pj|OWvj|}74vuC())gd94gR)AXvxanmS6?L(EOzqjUQG7 zsm^Z?g(Y^pwWUC6E00UCni|)vz&r;>VOc!`m8;)K zb32jM;OlnL%ZK#>3SNjhJau)vwaAI;!Wq)RSY=G-PW&9eptXLC*RP^e_1QRn9ndJG zSg0Cs;KcKUox=hkQ?2l#q9Q7ti&yVY5WG3C@Sl!P@3WJH@<#^V5#yNiSckAq{Y#7u z_7mDGUgN}~;vHydw}&aJJ9{;hyT_*DAsb&(*<R0{(R-O4ctPcZw4(y~B^zJ3iN4MmTZ zDe=GMoS7qWfAakuo`8`N)xFg$UYGCJ^?^w8VeJ>9@unpXk>tsJp{VhQL64GBk5ZU{ zNW<_ci)`I3LPjRsh?%Xpc~}Y)fG$}1zsQ@`cLs9u>a--PniQ^&AOVL&TuJ!v#ex1S zNdy1^1S0LMR-wV3bQ6Wf6-%qQT(kJP2%u*e##&B+CIhS_1@iLrH~s`KiTt8A+@vT- zrbH^eF5#bOQReHH7xQli7fyB;7+G2A{`zD+e;?0m+ZD&+-4s*En-)oc9S!uYE7>jr zBZ3(wLXCt804E^n5Xhq!cJJ6DeCu6z=-!fN+@l}e+Q0KBUJ1$PAJ$>j=nQ*c2k=U3 z27TJ!uvf@Oeg{GprEZ#VTrPm4TG>sokRw5P#+~$+I3_7hekWY2?a0L!9h|FVMY~=W z!042fDW0C5{)6_R4j;k5DRAC5@kM9#4SsROHG#vC{R4~R$I*Wg{0KV)CG&sShBx3J zy_U41NW54O8a)UUk{)6p#RJLE)J5^SvMfbfR!wTH9QOc=Ox*>W`vqb@Xlf~T2?(?3 z*$99=;sh=QQEx-MY4J-wD9)r^WamcHOIcBbwfrnc{sEi!PNjoRb&ZcMjR9T6ch&ee zj8(OB8yj7u@pLrgb`0GRy6(KZTKvB**Jw zjT0ztPWdG?N5}Sc37U>O_zu(k)3qCKJuk*P&kpDHn1Z{BTuI;8PVSM{H;aO_w+iU; zfZl?6Wduo9?e(XeEysu=HV5jE+)m!OYGGGwM!7Gu%y3&hwty=PMP}Hr)OsTAXksHV zh+0O8;qF+fp|u<6ll|ce41@GwR^S#$m=8wOYs@dZT?F2E_+yrDx$SYQ0yBU;oZVJ* za~DIddPCjSt9dgIpf4}Dr;68kKRY@X1R_RR+^nmgCT~-y>X~KVI(^8^AszLGUha)& z>gKDjvsz$c61rxWX*mP9+HC4G?0&=m@^b?(A!W$3;qMw>+zhpf*EQjZf284qA-*$( z5-MrUe*nmrrNJU9#2g(M4xA1vMLj;|v8sKY<1ZD@O%*YpjnKo zLZ<4r4&unP8$Sn}JMcti&7!Gd_uR&Jdmf_k4i7pHEZ8RUQB~KR{GiP z$=@N0XpnniZ4L7|JDEU1diGaJW}5q<>jxQPydJBA9|tlU8+Iq&FVDy5tRyn{|M`w?Vt4CLX@;qC{Z{&SJ!8P;T+}wc7 zFn+-OG`{SYL~DJGnmAkLQddO4|JR5F^) zF3*4aPhhVeX;)J4UgljZWLa2S$Bvm8 z8XAcIpCU(PxJ6q(>M~$|IATINSc(-a!4)k-Ob~n@yEFYwihjk^+0P#oL}8PD!GixS z)&?5(c3K)#!fDN=sK>4Ohn`ouwCloaepmu|_9U6G;J+?FQ8~KRvs+dBGzFE9F}8GP zzbI7I(9rO!zi?^Lp}V()B1s^|(PKR9-FEaZQ8SL6f7&uA$E@K6!mc&G_vm{P;<>-p z+~oE6k*>*YtG1mf!3bT96j^KEy*&3C8y%!v8P4f(ddhmrC6erzs0~g2i;8(ei~0u5 zBm_3p7j@qkxO=-3dU}_fp5kEzf@Dg{h$3jGMNfl_4AWl}Gi*?h(m%~l9D>!%M_^a` z2m<*)Jz}FyNu=`hE^*n)$1oDkXXN2hHZ@7NF@c<;SNvOS3b+H#fJ4f_9XLhFwej3tM_4Bx_-tcf3XOPbe6Y%jh&*(eT_{x}~M1 ze-9yw7CP=A@qus@um``mAutWhF^O74zqM^NC`5(|R8ArvS2*b}Wb$`v27L9^F@G1N z0I7uh-``l~@1OYHocE{!H45cn(aSPlpxQwqoPgkl{EReafEfqL19arSTctb6e+gZ` zZ8?AMi5;uWz3bUGN+$~Ab=_nx5A`l{0CNR*nX#_luHR6~+{sXoE^WD}cLC`1=*R`1 zfWTsHI4ALmsodt{mXj}R2fLjVou1V*TW*NMiD>rli?hUMh7ayzTY{rj5Eo|~r4s_j zv(X2JhV22jr^}6l<&vLfSe7=a9nX7tiSA35hsHMVNq>Q6x9mnfbCl83$e!lE3v;AW zT@Je_|B67eTp|acmBPZp=WLBXeAn045Bi?K%w}ut6WNWQ4Ic{-VLgi?_c%~oT3#+F zD0o(=UOK)$R;a3=fa^XR?)B49$K!D9;bZc%bxX!j{H&pT?zz`AM-}rs6Y~i8{91W0 zYcOAFWZ#m5d3V%<>1L1f2ciB(q)Z-5kwN>?UJEp_%Tdkc(p6B})D_W!J~D)H+j)3K z8&!`m=8eGi>1yjFn-+wNv9YmvPs~HjkFR_LfBtBXS#9Yz8EHD6D+F37Pl}w!hSt22 zjZH}yxq#ci0>}`DM@9_wx;G6xWWSUR^96GR2)|`9xatiz` z;0{s?15B|ip(+$ieKdU!`e+C}S+n_3Wb2s0 z2I{F^7f|HrhW~hMXwY(bRMS$dm?hb5P?ld`uL*ehs~=8BiaH~V^aH=zA5woj|3ixPLR)&QZoyz5Wgp2wir6hnd|uh_HmQ(_;wP8i zJXg7c9a!adXaP?37uKKl9Yq=y2J_*>Pb4w0?+@yM`{ic8@mVV@1?_=fKuk7;S2as2 zTyCl?va2z&z|bH1w(c!7duK(Iae&OD|5hKVp1?pGnv$@tZYncDa2OdM!8zPC%_FzW zurpW1{(ROECKE;Od7___b0~mFctHmYdof+Pu6oMQqBjRaQuaEFG^!nvUWQcootXPK z9B=MRU&8!VlK9S&2>;+lrcNl}Qe!Hq6>ULm*)F*>s46RGZOzmGsUgD%@4a}XNk2&) z+(zJFPz+@MnCO0Ggt#s9rPedmAHddoa5&uU5^;P8=9cBr=9EmlgqMfxSee7u)@#mA zPOE#pZ1N1HMhue!{DcGiY@fc_X&X`zcRtgDW`E}&Rww_!6@L&bQP59=5Fk`C-(F?A zHRpwOTa1Gw^e$?|Pq%r;0h^i)_xW?(o>`2Vy1LWG{S4Z*?S`H4+uXC1KxZ*cg-UjY zktsjDucoLN*?iozV?Ngi1-;-$Uax!KgV`AGzF(ymI+ghZ4K>;rFCLk(ZSfe`v1vXv z0e388E-8z!GR!IESF$HxV+vPEdVc0!l0D2nJnu*q``5Ha#wJL7h*->3D)jfD^!H%* rUk;Cue;QDKH~07N_~-Fin)Q-mB{s%e_40KDvb!=8a^fYTuYCUvEMUCLYV+`;NNt=3*bq*nb~*&AOQJc zSOoy?SHLeVU0od^Y;5)}tS06TrZ84B2Rk-T6Gt`&7-dn;*}dE1x?m{W@gQwn-QJnbCqV6G;Vo_4nO zE)Y*4>c5mj9@>9~*{CW1VsW(*q89sOmGZTs3Z;aDGmMglm7T?motK@GmxGmqi<^&+ zkC~E_or9f?os*4&lZAs1!o>+;XQ%uJQ9oF7Hn)JNNlO32)@bF;u;9_-f ze#6EgARzEZ2PY@X0|$$Xm%XcrCyTwyi+^g6gt?eGTRFN~IoMPF(P(1o;N~hs{ov_; zO~KCbUuyrywfb+2ii-b#Ry(^t3-Fg(7gsgdzy19m6}xD7Il|b~U@i`B&StO&_7{JI z9U&6VFcVh?XAK7j+kdX2ilu|AgNvnuBc+5o52d1snU(#Y{$KoxiVi>ryf84M~Z zME#(F)ym2oBEZehCB?-dDZ$Sr#=#-Q!_P0kEyXR#!za$kEg&T&{ZCm*2QxQ2n7!*i zWzGLBEA<~`|3Jac@xihr%-PBvW-jgQU`P4alp$9C*%$HusP7-L=Kt9jiT^0e_TUWL zpBww%ZuCEg9?7sXNq0XBV1XZe!~^32BEaof<&3d4 z?tY%_F|=Ew+^#!CYIc-HIuu6-yOAHB%5B zhYa16n95DlRL`JhY3}RxVx+d@wkGp)NLSVE#?mknx#xAo4S%ABga2XM!dNO@m-o|? zd^fz+jE_%j=@Onqqk)D6j1$C$DP#QDQGr(Ou#NUS8`9&+#_^wy>>(uqoUDw9hJglW zM@7`VzqW2Xw`i()LRevn-yH*k~V2lO&%hLbcd@&Rtr?rO}_?9tX3btxg9T%94jJcKn z$|BDTMS7D%uHf-_E}N62s5c3kKaK#SJO#mK=k%WUmSyQx0#!Pvq8yJC;;UeP)!r9S zY3Z4Pn&uDth(w*@sIm;g_KEEASORiB^yApep63hswsR2%DipHG zqc8ZQ$QN2wX?_Ud;RH(nM@NHEP$^G6!`X}R&DCaU<+I)PpZ9>vDpqqhxOvfaHAx#Q z%YByvP%w!?5*>{G)`awkp-~1ExF(dz@OO@ylE)#g7isNNnd5QxY!)WlaTiKddwtGj zpS_0}ark|vo?((Ji&f9JKed2BirXxHPu}|1Ljv4W~zQM_ltB&kv4jE$tqv( zq%K+Yq#`|rkNOJQS_NpjDqRR-pN+>dDogdFv`e2JldqbE%HP@wb~a`e#Wasd8MDX9 zy_i`P+oIHM7AP{WF0yO0AuOwX`?X_G(Up)6rZEp9;lm}rFzj)^!I&U;lR5vL@ z#V(%ZBV0r!J_*S1XC3?Xn>|24bYVe~3x6+sflOd(oYb}X<`sy-`N!Wc{D;nz74(y;ZHR{b(sY$_GH zwYJ@#hE!ZD{8CQC0W?UtnqueBLbRx`Yva(^Splk6&Hexj$F-w{UC1xqI;H*3a(781 z%2){b&zACC#8XGvJ&rksMNa2tHY};hk~JS>oHVN`RiJ6{$)aZDl5hscfH*neB~|ay zZ}YW)5sS4IHl@{`<9k3`876RpMc!jq>D;q_8g+UP2y)mD*vBX-4}R@}Ivx*@YB?@L ze13m+K}6xV*cp5^g_)S-pFKh4Y7F&>md$U9(G(Q2pzPt4;9zI?q-6Yrpwo6fm?@F~ z1mM$2X)00h<1Yy1NRiVQRSA8)A@qp|=)DIRcZXtlx^}4f-kRxf1$)cHc^5>Rfyq>F z<b}s6vej(F$T1I^ql~H5b)bwmyQ}ca=^J@1%1!owujwYW+8_lguq!0j1 zozaJ1W5&bAn0ISPW0UD43lzSVK5s8`jreF=F*so|*dLlPD<3#XsEr)BywZwia^9Iq zg0k^9@S<|y4E0GeGkC#AZK=$jE672h;re=R`Jwg$jqo*{9@R^d@4%dzn-?t#R9a$eD(q#G@PCuZ z0sXFL&hE}t_#h4Z-89uQnm7nLj0lMJl%zAXIIZi^FQ${rZAK?A@L1a* zkZg)D3uSw9vfgtl5lSK9T|bFi5EGBSNp}o zrseALk|xf`!b%X1Si9|xU`Y97=?TG_sEQpKW1_ndb>K|nQA&*!_aCvo>_hjTq`(qY zPbbS;l<+=L~hotr|c=! zZCN1HA=sttTTQxibTwv_)H+zMF+>n9Da?d8{MN63r;?bxC6JVtk?)-HZQ)u-V>eGT zK>5l%F8k0DacIAf*Ed^z!%_n&C|`?QoZ5H~N01ljOcHy3(xf3%E9sI{*ltwn-fLb| zwVXz8@Plb0CHIX=SKuJeH10e~W-M*1qO91Cm)Ib>BUu+=;eG%T zDIioA?dLt$r(a~kp+*6pR)-m7nGYovd5Fk{S_TBk#N+J6Jz8{mC+WH7h<*Myc=BUQ zct%emOSE`Beo>2-o|``ipdIrF^c%zzmtSx>m5=Nc<(-rqW!96w$nQ!2n&07f57g&% zD;8+JC3b$cPSkL0^y+|ic|iM#GNJ!4&41-Y|2VR0r4LKX+jO%$3 z1ZgR0S(>cS1FHLslGxO!*pk6WsldE@RQ!O_#^aMxuvO(gk*mkEWG|XzS5L&LasT;# zhQ*h+$2djjXs<*pl^WlTewBDhSNsZYo&1JFo=KetfYQji5$RPaWd>7H+oO?k#626L zPj*Paf@G*p2pOck(=f5-7}E(=a02cZ+qED=ZWjPMM~lYq@@mF%*N4_g1q#VhZ^#4a!ZO4y|#`lES0v#aEGi1u=q~VfY~f zUZ@jA+P6yMHX?Dpsnr$pV}%aizwY)=5DPyo*zI}Jl663^qiNC5oW^wCAr%`tC^cSM zbD8{=KNd&%j5Y6#|IvbivRp}dka|gxagD4b=6DbQ-dI6s{Fc)((;jR*_gNQ?@K$OQ zS?{j&S4;w4SVDY-g*(hVEAp5WlQ^9?Z&%1!D}t%5{A6ehWnvu-CCeUb@JtMQR;2`q zUsMz}jwvZl?rs05RW;6eIdEOb??kfFp^L!aFsRJPbre+vUxzS9-}sq#M6*(aPHOr1 zruV1UHw4}yX3r;BTpZ&AKTG2aDR<0BMqTu!;ajV!0n2*U4ybJS{L zD$5USXFrJD^iC2On3Ayr)SOBmD?%09C2%Jzejl2EO5-WtG5Pc?(HB+^Xl)#Mw>VgaN7yS46~V(3 zRQl+gW3pc)#71|rzguTG#T~Tk?{CZ>o6CsbEG=hxrHi8weA7xu%9t67dzi?;z;3?x>>i~ebGN3m*$w5 zjeYlZ-pXCyH*Q|{_wGI5gTo7sU=8sO(fM)@q?+#+7YY*&dBogkY=0Bapt%Pc`sm+S zMyS5m6`yd)t4%HA4d+DfV`|LlEXY((;ylkPM;9cK^x>jD5AC}0j=5~98@UxZbKk43 zHj{tLQUKKwF#dho&vGM6+{Hpzu=K0hsKQ`uuGoW;`LZ&rF{|JVT}ZzmV~!~^p&uD% za5dL>FPWiz&}wSY-KbCG^?uoWwJzb?Q{4|v1K8Mj4rKLp-{8Ft-(_U>%CIvDpZag! zeYB3W;~~*aFgfuFDqYgC*)-T>0pIpmv+ah9oNyo6-0+{Xt|?vL`96SV$xDpfa=~aV zIPFeBeE({s28*}8VDw3jWXroV-jT0xOT_ovz&Yk<;surF)r(^hyx}*U<30UW!cv|~ zUz=bvizM@|LJT~`p9h+4c)Vt0YmZU6^1TQZWNhPK1T#gezs_K6aKn~JM|K7Yc*Wi^ zy!VJYzkB;TRsl)$c1>hC!S}tC%srsT*(!8l$hu{4U0Su)y*OpNKdO0UuFkJ*uiq@H zDkdG0x`tG3KuMuEm5&XA3Su2@b{BrHiEo;%HhUUo-~yY`6<1)`7Y!CePhy>vM50*^ zd~S|O=B)aVGJv+{Pd5@4o;M}fiSGZ}b%P_lR2OUcWJ7c0ZWXgRL7CvC^kEAlcupX| z9}oLmB3f;J^?vopJ<#OE;`L=FTYJjg0LyAX$eC5FV?%y`R6JS}w z4{!DC<35t&50QI7O7P|`baLs|hZ%ejpRsCl;q+eK*5Oy;F499hxud;2B3?beTjaPJ zinT)&s3fW_V=rO0|6VIpE^9FJCu-Yl3Yc2fZGMiYV<6SX|NYa`LlURZhSBU?xJRWdh!Fv#J0D!{?c zVeTRQe5?WK6LJ@TJsO9l%F!9LkL@-5veuxL#iGfm4U)qvki|IrNQx--+9}e9fbsT||qoR2nikv!{Q6e}TCID^f+X!e+ zkLKC zF+-DRwGAYgD)#ZM{cp$ezjSWkxl=Tufm%_r9Z2(;&c2D*j}bdgZrdB2y?1+AJch34 z{u8bN)r!l~Xs3NUgGJKc`8_Kr=}|U`S}1Q)9mD4z)!mO6oO84ad>GPB!@963lb+?A z)HeEQ$ZzrMCeq!(h7MJ?3^*MM&eI}0e6`s0;#giOS(k^U)W1s7D?;4xW)p@vhayUJ z<8iDnE4l2BK2GUgwM%_-sC~(pyWSpzx-HBl!(Ncv&;??ki3^`m(GkUdH0^RH>qs

zra?|{#BpN#71TNj@3y7khkGglUSiYTqpyjK?YKv20nMDWqG_+*rb ziqEMXJPH$?gz<3&;?j*Y3u@OEvT%mV*TU|b3?u~~7aB5{l*+T$4Bt|e%_tQf6JGO0 zB&WO)8{}hDtF)=-(#TcgCqdAy7kZ(F5~85{cHyfEDE&-qx()asd(_?8WSRJhzRX+O zSY~gpSV+GRGN;#IfpLRG|0F-q>$ym&JgaH7HD=*nE*!(7sO;EDRSXYl?((*(I0dhy zKd3RtYcD}tPg&c?I`8@(@RN6;=$8%Sei^T=O8eyH4=GnEO`&R8s{Lo_ey@ujj(RYS zFWc?`A@+<^)QP<7x|OTdJB7BC5(M{eqqncp1Z_@-`tE@R`MPyO+0fs46{;FRD#4jO zaeavbATUD+I=W9P%y^YtzwkKwh5q(w4Ls2|=Xy>1Q8RW&!9{M$7iu&kO<5!SGMjao z7-p||vdlaFW=YW;0lziSbFt0*PjyrC;Z@0vs-cGhybWb5N3YTvoyHDcQ8a4PE9%=x z^LgH7X{sbJ^dOH7j6}(oQOHgi?_D=`CGSNFJk1x7(aI8z&_|oo$g%8Q2kqfUNf4k3 zc|5b*;od$xnwpQa*)nju#qMb`tY)s1>!QF;7btNnwh?zJwj}3MOo5pd+w|6b>P9l- zgv$nVh9s`zCw3kP_@VjZu0b~XA$lsgud~CZZuJ^$m|qbe)S~srXm&TjDeczHKTQcs zZrjB=>R2{Npj&n0*wWgr^g{(S@tCa0ieojF=`O%g38hAUI3$prmf99;bx+TF^1PAR z$I?4xJ2kg7E=zI6ec}inRk+R4Wm}$t!-=lKm}g!8c=4$bS9JSUI{pcV)W< zBC8!guI}u4W@Wobz`)7x=aS1JhY@MuHq+rSD{?oY?S8p$$0$eW$bv4D2K;OzO?S_4 z+rHbJBkmS?u1(!D`XXBL&ou9%ZXNjyu2jjXYC2`=#Irdr-fv9|_O&1#c5-rV_Rji%=w|g;diWdtqDo<-aIqXF z)@(U`)Lb8yo|LM$hBC#(l!lTqWBqE$TVcAdUWz#HyaaM?%4aFa)SJAkn`U?+zQ@IS z%p-dybWd-|xUF+v)glTh`^sP8vkeN8$V7bDp<{EKy<)#njWuy!7#F_JZ*w zZCl2=cWV`jS_E*eknz~fvX8hRc9$MdZwM;rYM>YhjCon=q!^=W~4D$B?K{+<4p_? zA;_)E2- z8RPk`jUs;_0%XlxbVo39KYpqP~N$+SE}w;|kXL0bmp;OF2_qc)o%Z%rY0bJQHBoG1iqZ9k%3TQfIAWfY$bYonu`v6_ zs(AMETfD~P$MpFv@gt?&W+c@~YVu42GJHRM2?Mu=l|>8k46OPl2xCK&KYBbfiB<3k zW+je6!QNZJHk9HCugKNNV>nhnG^UW?JUzeVcGk=NdGT1|U?7cg8Xmf$1SL4f7rq*m z-nIzwgE`Gs$LUQrRgXN1r_nK-$yu6>tm=sA*+So*69>g!h)C9pNz0QUYQXqMUCHYo z;nDswN{EiS%eQFgNd|8ITLA+b{Oh?#uEguW-*~9E*shUt z*g{NP;NfE)8Af-3gz}4LiXUSpXJUU(dHxXVjv4pwQO)m&66qc7t0pU)Zj4?kV6od~ zOS^zydPgnoe3pNrwe%ug_P?JwJk(4`0wn=(y4O8G2Ypy4%bB0>#!t z@Vu`8whv@|e0x10``U%W-cCD?fYq8R-fc3ycYK;KVPVqf+|%3KqQbV6I%mQE7v}*w z_(pc?cNSM4}S!;XzmiT8(B0 zNoh)E!W77&P>^uHeSRU#_4=C+YPQS#-uFk!c{;Wwg7ZrXX)k*cmJ2x0PnTuJrZ}Hw z`!eI9>=i?49pHY`-p4)=>D3&%EX_iuf~OYvSVSC3Kk@DAvBaFadZW=YuR|Eydqc>O zaVQ=V%`M7`vP`?3Uij-+L)PCeqyyz{Khv@T!(*kF*qLV3b3Ct^UqAQ9aYMn1c2(s? zL;=X*sR!|=>;&`-6N=Z^Q78^VTG5y}S3x+TKaRU~1r?}{XyC>#?ri-80Sbkhx%^?d zw%(;1%^8}sK>hB3n7Ev(G8R(DU4BGBegb}we5r%R_?jfd+nCfa{n*9S&^B3fFOoNz zJA+y+RVx9E)cBQ|XSB0g=Sbuk1d)bv4@mpfI_>2~m92HkpQfJp8Ik?1Y-h%PegrRn z5gxPI+ryC%^_GxsHVTCmcMnmi6lJeod)iq18X|R3#Usv@BOITXbrrQd6UPfTg1X|8KoIvKr z=4e~q(zRmv_kPhpN-0~v3>I`*c~p^3CY1DzUgrIq#_U@A{RDMA;#jMeF^88`PqYZaqIUzdC*&pSR1y>z+pK zFf}2KgTT*lBktUe&~}~|`Z-(5Tzv!SIGIAof)ldD&Zssh2#|%ptJ)@g>-cEUy_y%A z7It)l5!q-rmiNrvVCLpHHq_{HYKcy^>KBUm#|ig%OV@0vZGR~72N;p-o(i^5kCGN= zXwmy?8TLrSg`(UR$NB14ft5z_R{fu7m4XQ1=Pz70BPC_lhvhV;==JeA*YMdNqnX$+ z5lsZ#rcP^GXoX}Uv>(eY=Th&HJt-jLa*hdUgnjyr$Z}2@?_fZpB{*2iI`2dEzp1#Ol>Y2vmrI%y1#-d$KmyPydg13tFG6?~d z?EBYp*yLTZ=sp3bVi!k;NY7H{A;$r9L_XR-13Oq&t1U)L*xlGvG2i?wT}<64;4Y5Q zO8byu=29X8$y1R7)G&H7iOdvs`_jUmyTELVcnS>Ms*|kaM_Gj>j$W?{D~2&rGq-JJ zP5+`Uv_i%PvY@FSpU{~eD@kHx{4W*hhe$kW>((o8{%ZOqv#Hu)X`}EL`23-XLTi=< zm_W`nF_-~E;o(b)hXXJHz0VU}GEu5A*^`E&ixE5cIoY9YCI>&=e#KqwQE(p-zK+W> z8+XjkLyzuJ`BhR%{;LR)3kfCj1fGz!3j%1Fs9FnO?Np7U6n)p!kL29NcLy}(??iw;0&?PZ7J_G~O zbUy(>-dK^^-i780ZUj1W+1G`2jt$+A0mPT!ScWfyCYMp7t$g8s3k82Z8~DE-S6JZt Gng0VXU1MYb diff --git a/docs/non-integer-calculations/iohk.sty b/docs/non-integer-calculations/iohk.sty deleted file mode 100644 index 220e6536b45..00000000000 --- a/docs/non-integer-calculations/iohk.sty +++ /dev/null @@ -1,46 +0,0 @@ -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{iohk}[2018/10/18] - -\RequirePackage{amssymb} -\RequirePackage{extarrows} -\RequirePackage{slashed} -\RequirePackage[tikz]{bclogo} -\RequirePackage{stmaryrd} - -\DeclareMathOperator{\dom}{dom} -\DeclareMathOperator{\range}{range} - -\newcommand{\powerset}[1]{\ensuremath{\mathbb{P}~#1}} -\newcommand{\restrictdom}{\ensuremath{\lhd}} -\newcommand{\subtractdom}{\ensuremath{\mathbin{\slashed{\restrictdom}}}} -\newcommand{\restrictrange}{\ensuremath{\rhd}} -\newcommand{\subtractrange}{\ensuremath{\mathbin{\slashed{\restrictrange}}}} -\newcommand{\union}{\ensuremath{\cup}} -\newcommand{\unionoverrideRight}{\ensuremath{\mathbin{\underrightarrow\cup}}} -\newcommand{\unionoverrideLeft}{\ensuremath{\mathbin{\underleftarrow\cup}}} -\newcommand{\unionoverridePlus}{\ensuremath{\mathbin{\cup_{+}}}} -\newcommand{\unionoverrideZero}{\ensuremath{\mathbin{\cup_{0}}}} -\newcommand{\uniondistinct}{\ensuremath{\uplus}} -\newcommand{\var}[1]{\ensuremath{\mathit{#1}}} -\newcommand{\fun}[1]{\ensuremath{\mathsf{#1}}} -\newcommand{\type}[1]{\ensuremath{\mathsf{#1}}} -\newcommand{\signed}[2]{\ensuremath{\llbracket #1 \rrbracket_{#2}}} -\newcommand{\size}[1]{\ensuremath{\left| #1 \right|}} -\newcommand{\trans}[2]{\ensuremath{\xlongrightarrow[\textsc{#1}]{#2}}} -\newcommand{\seqof}[1]{\ensuremath{#1^{*}}} -\newcommand{\nextdef}{\ensuremath{\\[1em]}} -\newcommand{\where}{\ensuremath{~ ~ \mathbf{where}~ ~ }} - -\newcommand{\varUpdate}[1]{\boldsymbol{\color{Violet}#1}} - -\newenvironment{question} - {\begin{bclogo}[logo=\bcquestion, couleur=orange!10, arrondi=0.2]{ QUESTION}} - {\end{bclogo}} -% \newenvironment{todo} -% {\begin{bclogo}[logo=\bcoutil, couleur=red!5, couleurBarre=red, arrondi=0.2]{ TODO}} -% {\end{bclogo}} -\newenvironment{note} - {\begin{bclogo}[logo=\bcattention, couleur=orange!10, arrondi=0.2]{ NOTE}} - {\end{bclogo}} - -\endinput diff --git a/docs/non-integer-calculations/ln_cf.png b/docs/non-integer-calculations/ln_cf.png deleted file mode 100644 index 4d05c4b3019ae0f0c06fcac78d68526f9dab3a04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54592 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 diff --git a/docs/non-integer-calculations/ln_taylor.png b/docs/non-integer-calculations/ln_taylor.png deleted file mode 100644 index 03b03273765746d9e0f8c77e5deb4e5352930f67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60215 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�d)*kCWMRFx=u=*y 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 diff --git a/docs/non-integer-calculations/non-integer-calculations.tex b/docs/non-integer-calculations/non-integer-calculations.tex deleted file mode 100644 index f5852ce06a7..00000000000 --- a/docs/non-integer-calculations/non-integer-calculations.tex +++ /dev/null @@ -1,594 +0,0 @@ -\documentclass[11pt,a4paper,dvipsnames,twosided]{article} - -\usepackage[deliverable]{IOHKCoverPage} - -% data for Deliverable header -- added by KH from an EU H2020 project template -\DeliverableNumber{SL-D1} -\DeliverableTitle{A Specification of the Non-Integral Calculations \\ in the Shelley Ledger}{Non-Integral Cals.} -\DeliverableResponsible{Formal Methods Team} -\EditorName{Matthias G\"udemann, \IOHK} -\Authors{Matthias G\"udemann \quad \texttt{} -} -\DueDate{20$^{\textrm{th}}$ September 2019} -\SubmissionDate{18$^{\textrm{th}}$ September 2019}{2019/09/18} -\LeaderName{Philipp Kant, \IOHK} -\InstitutionAddress{\IOHK} -\Version{0.2} -\Project{Shelley Ledger} -\DisseminationDR - -\usepackage[margin=2.5cm]{geometry} -\usepackage{lscape} -\usepackage{iohk} -\usepackage{microtype} -\usepackage{mathpazo} % nice fonts -\usepackage{amsmath} -\usepackage{amssymb} -\usepackage{amsthm} -\usepackage{latexsym} -\usepackage{mathtools} -\usepackage{subcaption} -\usepackage{stmaryrd} -\usepackage{extarrows} -\usepackage{slashed} -%\usepackage[colon]{natbib} -\usepackage[unicode=true,pdftex,pdfa,colorlinks=true]{hyperref} -\usepackage{xcolor} -\usepackage[capitalise,noabbrev,nameinlink]{cleveref} -\usepackage{float} -\floatstyle{boxed} -\restylefloat{figure} -\usepackage{tikz} - -%% Commenting -- KH -\usepackage[final,obeyFinal]{todonotes} -\newcommand{\khcomment}[1]{\todo[color=blue!20]{KH: #1}} - -%% In-para enumeration -- KH -\usepackage{paralist} - -%% -%% Package `semantic` can be used for writing inference rules. -%% -\usepackage{semantic} -%% Setup for the semantic package -\setpremisesspace{20pt} - -\newcommand{\unitInterval}{\ensuremath{[0,~1]}} -\newcommand{\nonnegReals}{\ensuremath{[0,~\infty)}} -\newcommand{\posReals}{\ensuremath{(0,~\infty)}} - -\theoremstyle{definition} -\newtheorem{definition}{Definition}[section] - -\theoremstyle{definition} -\newtheorem{property}{Property}[section] - -\begin{document} - -\hypersetup{ - pdftitle={A Specification of the Non-Integral Calculations in the Shelley Ledger}, - breaklinks=true, - bookmarks=true, - colorlinks=false, - linkcolor={blue}, - citecolor={blue}, - urlcolor={blue}, - linkbordercolor={white}, - citebordercolor={white}, - urlbordercolor={white} -} - - \cleardoublepage% - \tableofcontents% - \listoffigures% - \clearpage% - - \begin{changelog} - \change{05/09/19}{Matthias G\"udemann}{FM (IOHK)}{Initial version (0.1).} - \change{05/09/19}{Kevin Hammond}{FM (IOHK)}{Reviewed and applied comments.} - \change{12/09/19}{Kevin Hammond}{FM (IOHK)}{Added cover page for consistency.} - \change{12/09/19}{Kevin Hammond}{FM (IOHK)}{Included review comments from MG.} - \change{17/09/19}{Matthias G\"udemann}{FM (IOHK)}{Reviewed and commented.} - \change{18/09/19}{Kevin Hammond}{FM (IOHK)}{MG comments incorporated, added deliverable number, frozen to V0.2} -\end{changelog} -\begin{landscape} -\floatstyle{plain} -\restylefloat{figure} -\begin{figure*} -\includegraphics[scale=0.8,angle=90]{d2-depends.pdf} -\caption{Positioning of this Deliverable (outlined in red).} -\end{figure*} -\end{landscape} -%\floatstyle{boxed} -\restylefloat{figure} -\pagestyle{empty} - -\cleardoublepage -\renewcommand{\thepage}{\arabic{page}} -\setcounter{page}{1} - -\title{A Specification of the Non-Integral Calculations in the Shelley Ledger} - -\author{Matthias G\"udemann \\ {\small \texttt{matthias.gudemann@iohk.io}}} - -%\date{} - -\maketitle - -\begin{abstract} - This document defines a consistent way to perform non-integral calculations in - the Shelley ledger for Cardano. These calculations are defined in terms of - \emph{elementary} mathematical functions, and are used in a few, but - important, places in the ledger calculation. The main objective of this work - is to provide a clear and unambiguous specification that will give the same - results for each calculation, regardless of the computer architecture or - programming language implementation that is chosen. The goal is to prevent - blockchain forks because of slight differences in the calculated values that - might otherwise come from different implementations of the Shelley ledger - specification or Ouroboros protocol, for example. -\end{abstract} - -\tableofcontents -\listoffigures - -\section{Introduction} -\label{sec:introduction} - -The Shelley ledger specification~\cite{shelley_spec} and the Ouroboros -protocol~\cite{ouroboros} use non-integral calculations in a few places. Most of -these can be implemented in an exact way using rational numbers and arbitrary -precision integers, which are available either directly as programming language -constructs (e.g. in Haskell) or via external libraries.~ \footnote{The most - widely used library is the GNU multi-precision library (GMP)} -% -In addition, there are some instances where the results of elementary functions -cannot be precisely represented as rational numbers, and therefore require a -representation that covers a wider range of \emph{real numbers}. These include -the exponential function $e^{x}, x \in \mathbb{R}$, which is used to calculate -how refunds decay over time, and general non-integral exponentiation -$x^{y}, x, y \in \mathbb{R}$. %, which is used to \khcomment{MG, please fix!}. - -\section{Problem Description} -\label{sec:problem-description} - -The calculations in the Shelley ledger specification and Ouroboros protocol that involve elementary functions are concerned with: -\begin{inparaenum} -\item - the decay of the value that should be refunded from a deposit; -and -\item - the leader election probability. -\end{inparaenum} -% -In all these cases, it is important that all distributed nodes calculate the -same values, since otherwise there might be a disagreement about what should be -included in the blockchain and forks might then result. This is a particular -problem where there could be multiple independent implementations that could -deliver inconsistent results. Since Cardano aims to be a cryptocurrency that is -fully defined by a precise specification, we need an exact specification of -non-integer calculations, allowing different implementations to have the same, -correct and verifiable, -behavior. - -\section{Implementation Possibilities for Non-Integer Arithmetic} -\label{sec:impl-poss} - -There are three main different possibilities to implement non-integral -calculations. In Haskell, we can use typeclasses or parametric polymorphism -to design generic algorithms that can handle different choices. Each implementation choice has its -own advantages and disadvantages. - -\subsection{IEEE~754 Floating Point} -\label{sec:ieee-754-floating} - -A straightforward approach is to use IEEE~754 floating-point arithmetic. This is -widely supported by common programming languages and CPU/GPU architectures. -% -The basic arithmetic operations of IEEE~754 floating-point are well specified, -and they are usually very efficient due to direct HW implementation. -% -Double-precision IEEE~754 floating-point numbers (\emph{binary64}) provide 53 bits (~15.99 decimal digits) of -precision. This is slightly less than is needed to represent the -required fraction of 1 lovelace: there are $4.5\cdot10^{16}$ possible fractions. -Moreover, the elementary functions that are required for Cardano are not standardized and there can be -subtle differences in different implementations, with results even varying when different compiler settings are used -on the same implementation\footnote{e.g. maintaining intermediate representations within internal registers \emph{vs.} writing to memory.}. It is also worth noting that some architectures -provide excess precision~\footnote{The original x87 provided 80 bit - floating-point}, which can result in greater accuracy, but can also give slight differences in results -between implementations. Some programming languages, e.g., D, exploit this by default. Many -languages support excess precision, but default to IEEE~754 64 bits. In -particular on the AMD64 architecture most language implementations use SSE floating-point arithmetic. -A final problem is that IEEE~754 supports different rounding modes\footnote{round to nearest (with even digits breaking ties or ties rounding away from zero), round down, round up, round to zero}, which will obviously give -different results in some cases. Some programming languages allow the rounding mode to be changed, e.g. C99 onwards, but others do -not, e.g., Haskell. - -\subsection{Rational Numbers} -\label{sec:rational-numbers} - -Rational numbers can be implemented on top of exact arbitrary precision integral -arithmetic using a pair of numbers to represent a numerator and denominator. -Effectively, \emph{gcd} calculations are used to normalize the results -after each basic operation. While not all real numbers are rationals, this approach allows for -arbitrarily precise approximation of all real numbers. However, arbitrarily -long numerators or denominators may be needed to represent irrational numbers to the required precision. -These arbitrarily long numerators and denominators are undesirable, since they will incur non-predictable~\footnote{potentially > 1s for basic arithmetic operations} -run-time. - -\subsection{Fixed Point Arithmetic} - -%% KH: added this discussion -Fixed point arithmetic uses a fixed size value (typically 32 or 64 bits) to -represent non-integer numbers. A fixed scaling factor is used to determine the -position of the decimal point and normal integer arithmetic operations are -applied for addition, multiplication etc. Like floating point, this has the -advantage of allowing a compact number representation, and allows fast implementation even on -a system without floating point supprt. It also allows precise arithmetic. However, -arbitrarily large numbers cannot be supported, which would make it unsuitable for -representing currency in Cardano (it might, however, be suitable for e.g. leader election calculations). - - -\subsection{Fixed Precision Arithmetic} -\label{sec:fixed-point-arithm} - -An alternative approach is to use fixed precision arithmetic based on exact -integers where a proportion of the integer is used as fractional part. The -number of fractional digits is fixed to a constant. This is more efficient than -using the rational number approach described above, since it is not necessary to -normalise values after calculations, arbitrary precision results are not -supported, and only a single arbitrarily sized integer needs to be stored. -Since it is implemented purely in software on top of exact integer arithmetic, -this approach will be less efficient than IEEE~754 floating point. However, it -can be made to behave equivalently in different implementations, including -ensuring consistent (bounded) timings for each architecture, by providing golden -tests to validate consistent esults for different architectures etc. - -The basic idea is the following: for $n$ decimal digits of precision, multiply -each integral value by $10^{n}$ and take this into account in the basic -operations. For Cardano, this would mean using $n=17$ to support the required 17 -digits of precision that would track each possible stake fraction. Haskell -provides library support for fixed precision numbers and arithmetic. - -\subsection{Exact Real Numbers} - -Finally, there has been some research work on exact representations of real -numbers using e.g. \emph{continued fractions}, exploiting lazy evaluation to -produce the required number of digits of precision -(e.g. \cite{DBLP:journals/tcs/Escardo96}). All real numbers can be represented, -whether rational or irrational. These approaches have not yet been widely used, -however, except for research purposes. Implementations are often complicated -and expensive, and some algorithms may need to be changed (for example, exact -equality may be impossible to determine in a finite time). - -\subsection{Conclusion} -\label{sec:summary} - -For the Cardano cryptocurrency, the fixed precision arithmetic approach -seems to be most suitable. It allows for the desired precision and can be -implemented in an equivalent way, because it uses exact integer -arithmetic.~\footnote{There already exist two implementations, Haskell and C.} -While the fixed-precision approach is less efficient than IEEE~754 floating point, -by using partial pre-computation and other techniques, it will be possible to improve performance considerably in -some cases (e.g. when using a constant base for exponentiation): experiments show that improvements -of two orders of magnitude are possible. - -\section{Approximation Algorithms} -\label{sec:algorithms} - -Other than basic arithmetic (addition, multiplication, subtraction, and -division), the only elementary functions that are required by the ledger -specification are the exponential function, $e^{x}$, and its generalisation to -the exponentiation function, $x^{y}$. Exponentiation of arbitrary real numbers -is calculated using the identity: -$x^{y}= \exp({\ln(x^{y})}) = \exp(y\cdot \ln(x))$. This means that we need -suitable approximation schemes for $\exp(x)$ and $\ln(x)$. -% -There are two main approaches that are used for approximation: Taylor / MacLaurin series and -continued fractions. Both require only basic arithmetic operations and allow for -iterative approximation, i.e., constructing a sequence of $x_{0},x_{1},\ldots -x_{n}$ where each successive $x_{i}$ is a better -approximation to the desired value. - -\subsection{Taylor Series} -\label{sec:taylor-series} - -A Taylor series defines an infinite series that approximates an infinitely -differentiable function around a point $a$. It has the following general -form for a function $f$: - -\begin{equation*} - Tf(x; a) := \sum_{n=0}^{\infty}\frac{f^{(n)}(a)}{n!} - {\left( - x - a - \right)}^{n} -\end{equation*} - -Most commonly the Taylor series is used at $a=0$. This is also called the -MacLaurin series. It uses a truncated, finite polynomial for the function -approximation as follows: - -\begin{equation*} - x_{m} := \sum_{n=0}^{m}\frac{f^{(n)}(0)}{n!} x^{n} -\end{equation*} - -Using the above, the exponential function can be approximated using the Taylor series -by: - -\begin{equation*} - \exp(x) := \sum_{n=0}^{\infty}\frac{x^{n}}{n!} -\end{equation*} - -The natural logarithm can similarly be approximated by: - -\begin{equation*} - \ln(x) := \sum_{n=1}^{\infty}\frac{(-1)^{n+1}}{n} - {\left( - x - 1 - \right)}^{n} -\end{equation*} - -\subsection{Continued Fractions} -\label{sec:continued-fractions} - -Continued fractions are a way to represent a number as the sum of its integral -part and the reciprocal of another number. The most general form looks like -this: - -\begin{equation*} - b_{0} + \cfrac{a_{1}}{b_{1} + \cfrac{a_{2}}{b_{2} + \cfrac{a_{3}}{\ddots}}} -\end{equation*} - -The convergents $x_{i} = \frac{A_{i}}{B_{i}}$ are computed via the following -recursion: - -\begin{align*} - A_{-1} & := 1 \\ - A_{0} & := b_{0} \\ - B_{-1} & := 0 \\ - B_{0} & := 1 \\ - A_{n} & := b_{n}\cdot A_{n-1} + a_{n}\cdot A_{n-2} \\ - B_{n} & := b_{n}\cdot B_{n-1} + a_{n}\cdot B_{n-2} -\end{align*} - -For the exponential function $\exp(x)$, the sequences of $a_{i}$ and $b_{i}$ are -as follows: - -\begin{align*} - \sigma(a_{i}) & := 1 \cdot x, -1 \cdot x, -2 \cdot x, \ldots \\ - \sigma(b_{i}) & := 1, 2 + x, 3 + x, \ldots -\end{align*} - -For the natural logarithm $\ln(x+1)$, the sequences of $a_{i}$ and $b_{i}$ are -as follows: - -\begin{align*} - \sigma(a_{i}) & := x, 1^{2}\cdot x, 1^{2}\cdot x, 2^{2}\cdot x, 2^{2}\cdot x, 3^{2}\cdot - x, 3^{2}\cdot x, \ldots\\ - \sigma(b_{i}) & := 1, 2, 3, \ldots -\end{align*} - -\subsection{Scaling} -\label{sec:scaling} - -Neither Taylor series approximations nor continued fractions converge for arbitrary input -values: their convergence radius is limited. Therefore, we apply scaling before -we do the approximation, using the mathematical properties of $\exp$ and $\ln$ -to obtain the correct results. - -To calculate the exponential functions, we scale $x$ in such a way that -$x \in [0; 1]$ via: - -\begin{equation*} - \exp(x) = \exp - \left( - \frac{x}{n}\cdot n - \right) = - {\left( - \exp{ - \left( - \frac{x}{n} - \right)} - \right)}^{n}, \text{ with } n := \lceil x \rceil -\end{equation*} - -For the natural logarithm, we calculate $n$ in such a way that -$\exp(n) \leq x < \exp(n+1)$ and use this as follows: - -\begin{equation*} - \ln(x) = \ln - \left( - \exp(n) \cdot \frac{x}{\exp(n)} - \right) = \ln(\exp(n)) + \ln - \left( - \frac{x}{\exp(n)} - \right) = n + \ln - \left( - \frac{x}{\exp(n)} - \right) -\end{equation*} - -This guarantees that $\frac{x}{\exp(n)}$ is in the interval $[1; e]$, which lies -in the convergence radius of the approximation schemes. - -\subsection{Convergence} -\label{sec:convergence} - -Our experimental results have shown that continued fractions converge faster, in particular for the natural logarithm. - -\khcomment{Give captions for the plots. Combine the plots from Figs. 1 and 2 into a single figure (one above the other?). Do the same for Figs. 3 and 4.} - -\begin{figure}[ht] - \centering - \includegraphics[width=\textwidth]{ln_taylor} - \caption{Relative Error for Taylor Series Approximation of $\ln$} - \label{fig:ln-approx-taylor} -\end{figure} - -\begin{figure}[ht] - \centering - \includegraphics[width=\textwidth]{ln_cf} - \caption{Relative Error for Continued Fraction Approximation of $\ln$} - \label{fig:ln-approx-cf} -\end{figure} - -Figure~\ref{fig:ln-approx-taylor} shows the relative approximation error for -$\ln$ with 10, 20, and 50 iterations using a Taylor -series. Figure~\ref{fig:ln-approx-cf} shows the relative approximation error for -10, 20, and 50 iterations using continued fractions. In this case, the error of -the continued fraction approach is multiple orders of magnitude lower for the -same number of iterations. - -\begin{figure}[ht] - \centering - \includegraphics[width=\textwidth]{taylor_exp} - \caption{Relative Error for Taylor Series Approximation of $\exp$} - \label{fig:exp-approx-taylor} -\end{figure} - -\begin{figure}[ht] - \centering - \includegraphics[width=\textwidth]{cf_exp} - \caption{Relative Error for Continued Fraction Approximation of $\exp$} - \label{fig:exp-approx-cf} -\end{figure} - -Figure~\ref{fig:exp-approx-taylor} shows the relative approximation error of 10 -and 20 iterations using a Taylor series approximation. Figure~\ref{fig:exp-approx-cf} -shows the relative error of 10 and 20 iterations using continued fractions. In -this case the error of continued fractions is around one order of magnitude -lower for the same number of iterations. - -\subsection{Conclusion} -\label{sec:conclusion} - -From these experiments, we conclude that the convergence speed is higher for -continued fractions, in particular for the natural logarithm algorithm. However, -timing analysis has shown that due to the simpler calculation per iteration of -Taylor series, the exponential function can be approximated more efficiently -using that approach. We have therefore decided to use both approaches: Taylor series for $\exp$ -and continued fractions for $\ln$. In order to decide when the approximation has obtained enough precision, -we use the following criterion for two successive approximations $x_{n}, x_{n+1}$: -\begin{equation*} - \vert x_{n} - x_{n+1}\vert < \epsilon -\end{equation*} - -Both approximation schemes therefore will give the same precision. - -\section{Reference Implementation} -\label{sec:refer-impl} - -The continued fraction approach using fixed point arithmetic has been -implemented in Haskell and in C using the GNU multi-precision -library~\footnote{\url{https://gmplib.org}}. -% -For the Haskell version, Quickcheck property-based tests are provided that will validate -the mathematical consistency of the laws for $\ln$ and $\exp$. -% -For both the C and Haskell versions, there exist test programs that read -two numbers with 34 decimal digits of precision and calculate -$x^{y}$. This has been used to validate the two different -implementations for 20.000.000 randomly generated testcases, where $x$ and $y$ -have been drawn uniformly from the interval $[0.1; 100.1]$. Our results showed that all -calculation were identical for all 34 decimal digits. -A key aspect to obtaining equivalent results is to use the same approach to -rounding after a division. In particular, in our tests we have used rounding to $-\infty$. - -\section{Optimisations for Specific Use-Cases} -\label{sec:optim-spec-use} - -One specific use case for non-integral calculations in Shelley is the calculation of the -probability of being a slot leader. This calculation has to be done locally every 2s -for each potential slot leader. The calculation also needs to be done in order to -validate a block (to make sure that the block producer actually had the right to -do so). -% -More precisely, it is necessary to check whether for a given $p$, $\sigma$ and a -constant $f$ (at least for one epoch), the following inequality holds: - -\begin{equation*} - p < 1 - {(1 - f)}^{\sigma} -\end{equation*} - -Since $1-f$ is considered to be constant, and because ${(1-f)}^{\sigma}$ is equal -to $\exp(\sigma\cdot\ln(1-f))$, we can pre-compute the value of $\ln(1-f)$ once for -each epoch, and use it for every following computation in that epoch. - -Setting $c= \ln(1 - f)$ and using $q = 1 - p$ we obtain the following: - -\begin{equation*} - \begin{array}[h]{ccc} - & p < 1 - \exp(\sigma \cdot c) & \\ - \Leftrightarrow & \exp(\sigma \cdot c) < 1 - p & (\textrm{c is negative})\\ - \Leftrightarrow & \frac{1}{\exp(-\sigma \cdot c)} < q & \\ - \Leftrightarrow & \frac{1}{q} < \exp(-\sigma \cdot c) & \\ - \Leftrightarrow & \ln(\frac{1}{q}) < (-\sigma \cdot c) & \\ - \Leftrightarrow & \ln(q) > \sigma \cdot c & - \end{array} -\end{equation*} - -\noindent -The terms $\exp(-\sigma \cdot c)$ or $\ln(q)$ can be computed using the Taylor series as -described in Section~\ref{sec:taylor-series}. By using table lookup on $\ln{q}$, a quick -check can be obtained on whether the comparison is definitely true or not true. If it is -not certain, then the full calculation can be performed. By using a log calculation, integer sizes will -be reduced, which will also improve the performance of the calculation. -Alternatively, since the result of the function falls within known limits, we can use linear lower and upper bounds -to quickly eliminate comparisons that will certainly fail, without needing to perform the full calculation. - -Since the relevant information is not the result of the calculation, but only whether -the given $p$ is less than or greater than this value, one can also optimize the $\exp{\ldots}$ or $\ln{\ldots}$ -calculation further if desired. Using the Lagrange remainder to estimate the error, it is possible to -only compute as many iterations as necessary to get the desired information. - -\begin{equation*} - T \exp(x; a) := \sum_{n=0}^{\infty}\frac{x^{n}}{n!} = - \sum_{n=0}^k\frac{x^{n}}{n!} + R_{k}(x) -\end{equation*} - -By using an upper bound $M$ on the domain of $x$, the remainder (or error -term) $R_{k}(x)$ can be estimated as follows: - -\begin{equation*} - R_{k}(x) \leq \vert M \cdot \frac{x^{k+1}}{(k+1)!}\vert -\end{equation*} - -For the leader election use-case, a good integral bound for the error estimation -is the maximal value of $\vert\ln(1 - f)\vert\leq M$ for $f \in [0, 0.95]$, that -is $M = 3$\footnote{Since $f$ is the active slot coefficient, we will very - likely stay at lower values, and $M=12$ would then be enough for $[0, 0.99].$} -For larger values of $f$, a different value of $M$ would need to be chosen. The -current value for $f$ in the Shelley ledger is $0.1$. - -In general, $M$ can easily be estimated as the smallest -integer that is larger than the exponential function that is evaluated at -the upper bound of the interval of the domain of $x$. For each partial sum $\Sigma_{k}$, it -is then possible to test whether $p$ is greater than $\Sigma_k + \vert R_{k}(x) \vert$ or less than -$\Sigma_k - \vert R_{k}(x)\vert$ in order to decide whether to stop the calculation at an early -iteration. - -\begin{figure}[ht] - \centering - \includegraphics[width=0.75\textwidth]{haskell.png} - \caption{Benchmark Results for the Haskell Implementation} - \label{fig:haskell-optimization-results} -\end{figure} - -Figure~\ref{fig:haskell-optimization-results} shows the benchmark results for -test data using the Haskell implementation. The lower (red) results show the -run-time (in $\mu s$) for the naive, full computation. The middle (blue) part -shows the run-time using a partial pre-computation of $\ln (1-f)$ for the -exponentiation. The upper (yellow) part shows the run-time using the proposed -optimization. For the 10 data points, the first 5 succeed in the leader -election, the remaining 5 do not. - -\addcontentsline{toc}{section}{References} -% \bibliographystyle{plainnat} -\bibliographystyle{habbrv} -\bibliography{references} - -\end{document} - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: t -%%% End: diff --git a/docs/non-integer-calculations/references.bib b/docs/non-integer-calculations/references.bib deleted file mode 100644 index 9b951c49ff5..00000000000 --- a/docs/non-integer-calculations/references.bib +++ /dev/null @@ -1,180 +0,0 @@ -@misc{small_step_semantics, - label = {FM-TR-2018-01}, - author = {{IOHK Formal Methods Team}}, - title = {{Small Step Semantics for Cardano, IOHK Technical Report FM-TR-2018-01}}, - year = {2018}, - url = {https://github.com/input-output-hk/cardano-chain/blob/master/specs/semantics/latex/small-step-semantics.tex}, -} - - -@misc{delegation_design, - label = {SL-D1}, - author = {{IOHK Formal Methods Team}}, - title = {{Design Specification for Delegation and Incentives in Cardano, IOHK Deliverable SL-D1}}, - year = {2018}, - url = {https://github.com/intersectmbo/cardano-ledger/tree/master/eras/shelley/design-spec/shelley-delegation.tex}, -} - -@misc{byron_ledger_spec, - label = {BL-D1}, - author = {{IOHK Formal Methods Team}}, - title = {{Byron Ledger Specification, IOHK Deliverable BL-D1}}, - year = {2019}, - url = {https://github.com/intersectmbo/cardano-ledger/tree/master/docs/}, -} - -@misc{byron_chain_spec, - label = {BC-D1}, - author = {{IOHK Formal Methods Team}}, - title = {{Byron Blockchain Specification, IOHK Deliverable BC-D1}}, - year = {2019}, - url = {https://github.com/intersectmbo/cardano-ledger/tree/master/docs/}, -} - -@article{chimeric, - author = {Joachim Zahnentferner}, - title = {Chimeric Ledgers: Translating and Unifying UTXO-based and Account-based Cryptocurrencies}, - journal = {Cryptology ePrint Archive, Report 2018/262}, - year = {2018}, - url = {https://eprint.iacr.org/2018/262}, -} - -@article{utxo_scripts, - author = {Joachim Zahnentferner}, - title = {An Abstract Model of UTxO-based Cryptocurrencies with Scripts}, - journal = {Cryptology ePrint Archive, Report 2018/469}, - year = {2018}, - url = {https://eprint.iacr.org/2018/469}, -} - -@article{multi_currency, - author = {Joachim Zahnentferner}, - title = {Multi-Currency Ledgers}, - journal = {??}, - year = {2018}, -} - -@article{shelley_consensus, - label = {SC-DX}, - author = {{IOHK Formal Methods Team}}, - title = {{?? - Shelley Consensus, IOHK Deliverable SC-DX}}, - year = {TODO}, -} - -@misc{shelley_spec, - label = {SL-D5}, - author = {{IOHK Formal Methods Team}}, - title = {{A Formal Specification of the Cardano Ledger, IOHK Deliverable SL-D5}}, - year = {2019}, - url = {https://github.com/intersectmbo/cardano-ledger/tree/master/eras/shelley/formal-spec/shelley-ledger.tex} -} - -@misc{shelley_multisig, - label = {SL-D3}, - author = {{IOHK Formal Methods Team}}, - title = {{A Formal Specification of a Multi-Signature Scheme using Scripts, IOHK Deliverable SL-D3}}, - year = {2019}, -} - -@misc{ouroboros, - label = {Ouroboros-Protocol}, - author = {Aggelos Kiayias and Alexander Russell and Bernardo David and Roman Oliynykov}, - title = {Ouroboros: A Provably Secure Proof-of-Stake Blockchain Protocol}, - howpublished = {Cryptology ePrint Archive, Report 2016/889}, - year = {2016}, - note = {\url{http://eprint.iacr.org/2016/889}}, -} - -@inproceedings{chakravarty2020extended, - title={The extended UTXO model}, - author={Chakravarty, Manuel MT and Chapman, James and MacKenzie, Kenneth and Melkonian, Orestis and Jones, Michael Peyton and Wadler, Philip}, - booktitle={International Conference on Financial Cryptography and Data Security}, - pages={525--539}, - year={2020}, - organization={Springer}, - url={https://iohk.io/en/research/library/papers/the-extended-utxo-model/} -} - -@conference{ouroboros_classic, - author = {Aggelos Kiayias and Alexander Russell and Bernardo David and Roman Oliynykov}, - title = {Ouroboros: A Provably Secure Proof-of-Stake Blockchain Protocol}, - booktitle = {Advances in Cryptology -- CRYPTO 2017}, - series = {Security and Cryptology}, - volume = {10401}, - year = {2017}, - publisher = {Springer International Publishing}, - url = {https://eprint.iacr.org/2016/889}, - doi = {10.1007/978-3-319-63688-7}, -} - -@article{ouroboros_praos, - title={Ouroboros Praos: An adaptively-secure, semi-synchronous proof-of-stake protocol}, - author={Bernardo Machado David and Peter Gazi and Aggelos Kiayias and Alexander Russell}, - journal={IACR Cryptology ePrint Archive}, - year={2017}, - volume={2017}, - pages={573} -} - -@article{utxo_accounting, - author = {Joachim Zahnentferner}, - title = {Chimeric Ledgers: Translating and Unifying UTXO-based and Account-based Cryptocurrencies}, - journal = {Cryptology ePrint Archive, Report 2018/262}, - year = {2018}, - url = {https://eprint.iacr.org/2018/262}, -} - -@misc{bip32, - author = {Pieter Wuille}, - title = {Hierarchical Deterministic Wallets}, - year = {2012}, - month = {February}, - url = {https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki}, - note = {BIP-32}, -} - -@misc{bkks2018, - Author = {Lars Bruenjes and Aggelos Kiayias and Elias Koutsoupias and Aikaterini-Panagiota Stouka}, - Date-Added = {2018-08-05 08:14:11 +0000}, - Date-Modified = {2018-08-07 09:48:36 +0000}, - Howpublished = {Computer Science and Game Theory (cs.GT) arXiv:1807.11218}, - Title = {Reward Sharing Schemes for Stake Pools}, - Year = {2018}} - -@misc{cryptoeprint:2001:034, - author = {Tal Malkin and Daniele Micciancio and Sara Miner}, - title = {Composition and Efficiency Tradeoffs for Forward-Secure Digital Signatures}, - howpublished = {Cryptology ePrint Archive, Report 2001/034}, - year = {2001}, - note = {\url{https://eprint.iacr.org/2001/034}}, -} - -@article{DBLP:journals/jar/AkbarpourP10, - author = {Behzad Akbarpour and - Lawrence C. Paulson}, - title = {MetiTarski: An Automatic Theorem Prover for Real-Valued Special Functions}, - journal = {J. Autom. Reasoning}, - volume = {44}, - number = {3}, - pages = {175--205}, - year = {2010}, - url = {https://doi.org/10.1007/s10817-009-9149-2}, - doi = {10.1007/s10817-009-9149-2}, - timestamp = {Wed, 14 Nov 2018 10:38:36 +0100}, - biburl = {https://dblp.org/rec/bib/journals/jar/AkbarpourP10}, - bibsource = {dblp computer science bibliography, https://dblp.org} - } - -@article{DBLP:journals/tcs/Escardo96, - author = {Mart{\'{\i}}n H{\"{o}}tzel Escard{\'{o}}}, - title = {{PCF} Extended with Real Numbers}, - journal = {Theor. Comput. Sci.}, - volume = {162}, - number = {1}, - pages = {79--115}, - year = {1996}, - url = {https://doi.org/10.1016/0304-3975(95)00250-2}, - doi = {10.1016/0304-3975(95)00250-2}, - timestamp = {Sun, 28 May 2017 13:20:09 +0200}, - biburl = {https://dblp.org/rec/bib/journals/tcs/Escardo96}, -} diff --git a/docs/non-integer-calculations/taylor_exp.png b/docs/non-integer-calculations/taylor_exp.png deleted file mode 100644 index cb3d5e26c5640255c62c05ae6912010a8b2904e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52327 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 z zc%a!5qCd}UDYM$BcD6!2*;>JQ;bo12^T~!OibFIz0S0_9A-6I2LKh>c>lWN6smm2% zF2MXT9$A*5(B69I>Dx)gsjOprJ?sNc=p2?sPbs%qCuFA>h^`V@HU!K{G<4ql1?hyl zQ&VN64;qx20s;lcPl>h3qXRI3uY~R?Pr@v}N-|F@UmH8Fk_R!$kFM!9diKQ0`1S6qwgr8Df)>+qb! z>BNY`D<>wNrwpYF0Blu|+4}U(3~j7AvMwk<3A)lSjfouZ>42OhOkA;sD}1sDM3iKe z_Q2wBOQ!>qp-8I`x=uk*C|w7%CfufY81<|=XbA7N5DwbeV9d|>=(-qW*&5!)Gt2hL_g3qj_iA&Yi&RnUt4+# zLj_MLi)Nn<=zZo2|7d6C3ctiyyP^o&Si3?>a5{Z5HdS`3E{hsp%YH&@hdCGcuTcBnk#{aFfF#R|ETC*eX_ zkICx@6L11h3aplwaTq8q0H5obnCG&&ePNwhAY1X8 zDA)-0dJw56{31m(Fg*YwJF zA(OyW=mW5&@&LF9Ym428EbeeIp0GHesJmVNp+l+kO6`%6+ukAT)4Hay>(ivB8d|9_ zYzYTXA9Qn$0I>*z%o;+u5|_nXpq8V05v|>_;S;Bzb>WRQl+xTo1~+>4JPEd z$4;CsBsTJvS&f)cia)Hp*%-kZEhvv+jd~|Bhayo)OiYk?1hSse3L5fiRG@4Q&(zqt zyUf*JBc-<6vb+7d&>elyMjDF^I`l)wenL?AY*TOwU zVtklN>V~z8!+z6dj^Fai=@IL(hjy<_9ieMKqBc9Bed~RxG?+R^8wRct7`8FeN!}~VlU30Hk)HU!%Z^R|) zA2DWtk(0<-#V0dqOLnymBkm+7mCZv^Q7eg{=hSg-VQ6BGr~F>ieO0HT@gxI!m2{QWvk*TpSRy17%N-$_>rc zLkjj1N~rH+_pwE-YO~%AJSiiE(;2ITD`1pZ9TEe;~Q z?I4-hcC#XK@dck(er7@)o;T~Zw68|I-{hIquy>2Hgbs*RIs|KuT~HcWu_wB4^9!oB zF>P2i9zcc~65Y9`jxjOY)Gs1m11;bO;iU`cV2KWEIo;DvocB}0Ql`(mZLj#)qIWkt zr1~eF^|%0HCHM1|$0Y) z8;$R%aa;`!TM(j}@HW;8fSP&RQ;#+CGSs4dCQlyp06lslrxo()llKy~oV#9w%Cil; zT62EjfQK>pV}k_ECMVmK^*O)Xm1V)8RK+3(VPp$u(|*>=LGe^p!7g2N7t+YuE>0%0 zwsC#WY%Uszg03v;-z5KmOf!(|Oq;gXJS-A-Ve$*pB6ns1a`(Mfz?7i`HFMi0WIi{2 z0x_RUf|+r{`(b8Er5;eO#e#!HuGr674INN4`U)U-kX~(HP=o%%?}?t*N11$^wo0E7 z^>d5=C98yl{>#SgQbqqSGnXxuFSSw&twOGJf0D@;!+4uN@-|2B3%w!6IYM*GEe?f4 z#)|6gf{P)|R>+lOr+e{37Cq2Z1s>H$%@`z3%Bet;heQ&;Cj|FWiSj%fiqM^FhjnGkR()X?_FrBEXnZah*ID4=e(>A0= z@LkikG#!!v8U?pV00A_Q2p*i~kzTUeBO+e9dbM}qfxF@c>*x;GkH}wSVwE)2Vm;Rm zCKB~lb~4H2=vd#7xz~OsQFE_Bb(7!ddHLtkc$FjteGM)Q&d5ukDB4 zm@hg37uv2=fq@ao&lJ+gIyn!u#hEFkOyHMFDQMQ_!ce(~smh|qF!3Fq9~0YkMw{Gk zglXF3xvUU3W3^&1^VwEZz&y%~Z^)uPFR>>&b8l~gb{@|H)3Dp*_5P%CSr1*4hT=O8 zlVukwXQy3E2(#0qV-Lh-qCb5D=+3o|Wqb+Hts4IlP8v@h<9-@X1}wmud4mhETqDBz zw4o^>v~u)(v3&LDd6FktVQbNotc);9rmf++;DKfSp>82943~z2#H=dX&r^k5zT==P#YI2cL5#uf2klaL>8`oK>_3p)E26L-} zDv<@_hD#IkmcpD4mixR(Bezq##^ z%!g}nH|NX2C}XH0afwsAjv*aaPR=m;Ykni7AlwwV=w7PINCYrWXiW8m;jkD$7klx$_V^G?0|{c`1O* zvpq7aZHVNpsOq8D&1mMyiSkI|U;4C+(5Hd|xALB_k1b~9p2uSJrxz##iFX(Wfy8Ge zNHU&Tf&^=+wQ4OY&Sdi2Il6Pi=W6qfxD_-3#O|P&PVm+Mrk}(a4>X@HgjpB(8@OTA z2;OT-iJBm(@`}i$Hh;iz-=qxfoA!);S#a}Ozbxt4x>#n!rzYI=SNY`S$S|#n&W{=r zjergh1Shq_BeRUC%!s&SA~GohjXee;34>Gw^5G;PW?$GdJZ zZ5+)x7MG%w1O_7+eR%KwN#ZE$r4)&CP1N)xM->!uF;9K7@oxUbJr^+c9K;%}4GSCr zvc0hYYIoiGl4i5JONsiRvL9~y`aLzw^fg;% zoNS(OW*6ud!?*~M6;4cdrSa#j6O`l7F?{esdnxgRvb*DKoSnO)QejN~R_dq&+D)YK zaJULU-X$VnyaLWxjT86SUX3Firx}M#9H%KQ->vODU*t_U+r9`LcBu_9Ru1XKIUToE>`cxp8F&RdH~&HIot> z?xeLo({^&mBhOYo)3DPZW@+U>=h^+gc2-aMv~?z=D<$T+Z*06Oz+}R@qW$MwNN2pT zGVCwIfNXC}0Gh9Ibug3I&4JGWPe$Wg3Qk66sU4}h_2t!R5-w5M?d<$3+_w4J^Qq&Y zczbzg_^s5EYOV#PygCN*Ji!*=G=>PKwdG~1nj7W&kxJ@U>i!(R83x&< zmTIz<>b3|q%+h9zya{!3UETz|r9fb=Hpc^H(t~Bv4~^XXBz3XYTnst=PFD}_~_7UAzCYyz1z8Yfxt{pJ~K}406SS?d0#;pY^oO2nic$k$cpE9GH zZ*#yhdGA9X=aKr#V4rD%Bc$jeQ*7KY3~aOA{To$((hwww$w$3O3YJ@rm1d0o81Oi= zKZYdIQGSOb(g8FE(-9Cd27OEheGH^^_Trh1#D$?8r%>OnOc3p$p~vt}%Zz|l633Ka zH>-H*Ay1YJYgdK|pyZ2Da=p{fa6a*A^3LJrx5*{ORa;+hoA#x3x0?s3G#EE_f$2iT zrWm_zg^l!)&=r>L8Zs{Q#@*EK_gelJVl&mz_?S0T1H?3Lv7{Td%#DIXSLxv+0}ER} z{8-#i#+Gk4PchMtn6eYFNK?{4gMkAuGu0_Gb>_b7vx8{$h_R3k^$4qOBhHsrvXPO@ zctjZWYYgU?rZ@uesgsnU-ClCqH)-ZWv%=WIhh}uBrYVyVs>!EOiEZ0b(=JcIwWEH; zF}0(>9m_S%HsWE7HleCLVsP80a^{tiw0gq{#7vKwSj zGSU6{8t{AqTc80UHUETyp`iN6;NI*59MJl?_54+lDW)hlk%9&~R7^5fn;&x|syhhBZ1A z6~0XF<~l*@%kOwh61=nZDPKl>ZL~N8ljUM4ZIwma;lg*-RFn0Y1~6?deJ2fAqxDP)U*gd~ntyXDHaUBUrve$;`$uWb}C-dIUz^ zJs<;dTUc?M2Qgx_aJ{T3Y#JQ2<5X$`8`4y9vDM4( zQUaND;-=1n&=MB8f22tXxL23mV_X1jCMRco0PK&vPRSmfNU64_RC5nZAC}q$z^zxw z4L$SKD9eo4f*2PO0Bz$EK3dtA272Rd@kVXHaCcw+KIBEvXg@4Q5b2*TxE`;djvh14 zw{}VgFnxoi1YEJ2n@|4kaxRc07M|92%IJ@YV8N6F({1hH{9xh^2u}m*H}+4yIQui< zp%bsMnLM=g{Op(>t!3U!Nm4O9dj!@AC_mgNiPePboe=#e4MLFeF}ZwMn!J#9*tF0E z(ij7&2#ud^tg&Q345Y9EBKv;{#+Hu2z@?TV)bi2B*>beeV37yqF{oWyTvbecS1|j< zu4@-ko2Dbd3wo1i9Ot!|S-4XQATIH95n7Ej^TZNe-Km;y^P6S*Z$EN2?)td8)fIMt zGqPR?qH2qa|3u91N(>s;Ubov}SV~o8Ss@mXkz!;cZzav(@LAD+ z@;>hR*iIX0dr5Cu9&vExwC)E2C36jz`q#%G1^3^4P&m5VB%#i?k50}_=yLl3z!ZMr z%^Do1ueLlQT8DH%;AQju{z(_PA!EmUJ>Ljc$V;J)%+<*US&3XM77MDdDZGBZ@5cYg z)Um45B$mxpb?8yi*j!AtP2g?IT#>8;KNVW(8*l|@2|+DC!IKP?N_kq|tw|K6Ojr7i zo-oI~2X|X@L*{z)P14_4SfHq|dd4Z*G;V5DLjswk3Rk`5{Oi3rC35 zZEpy{g)P|_;7Ygcss5P*lXiL&*2USPttk6ot2u8s4}wNKidJC8ulfsLKr4iQWX!zR zdQ*0DbVT9^Iw5TIEzK7cd(GadwtiRQ^iK^xDRhC3Za+3tO0B}n_e9(->^s+o`zKq* z(LP|}PAr#Q<%*}%B1RBmxQVAiEp;p=kd|0VL)C3MtYLRxvYBRsOvp9WA& z*L*vM-)-mrJcur3vt%^+0>{7v8Ezs=`=KwO#exXy$HjY$OsG3dOzjuXb~^(<-}@>! zwfT{Dioi?)mCyZ<$f|EAXveGRsX$8{qxl?JbV8RQa|LdF%wmBg@$ouPcdw zY-xg9I2^)@q);QGe`xFa-5<4_4c_##L3xH`<2Y-z4&l-IDx7NiJ1J=ae{?o*>)&e9 zqD=yO9(n*Is~Vro$6P~i$z*Kq+K7(C(I2%~4{Xb&C81fSJq3_+rbFpTj~M90YInJzrE>Vi3$&uXPzxF zr0vXWgJw%SvjemX`(NG|x%sn>$IwXMuP*Ci)(Od)(CdAtRfvVH*T&OQ3?$WDej2>B zRcnOb%GsrRxKnRK%IWt&JFwA!aYE5SkUcd#& zNCg|t-O_-caMan&;rVg#OM?@$Y7@oGkE}R`E#AlDURf8k8T)ZI+eY$jg#Vw8UuwmK z)@4WQT*TEEwbei=~=cN3KS1-c^D`cm5eD&=T%T|t)FMd;(v9{tN zoo4nwGG*h{G~gji)!5$rn3V`Yrd3DWhkTp;oy!0Clyik$U$CL}kh=Bii^^rWw&9CB z1kp6z;IJCyr}C8SqZ^kiMwLLV_6NJOtNb84of@G?5BFVr`DwW+j;#mQhcb-~Ni|76 zqVa&)f{2W9_@!Odl)mc!Cpj)HVpGDGyR|NgsT^_{>yKjN0`jHYMmH=NKmRl;T4OP=p0nJ9{ry9Q_ELxTHbzBraf5)n&m7LzYi4&CM)8n zZKr%@%DQM*gO0@N`n6Q|VG`JlWjztM3NM~t|7o`;p0_tjDV$=CDvAGMC*Ts`s!bBr1gqE z^gP7mZEL$*Z01Z#0x0#t?nD%}yz!&QDdyv6t}}PM%W;g!GUkSQnt|w9&7XZtt2Im< zl8y&#R{8O6eICQLrR>RlB*t3s7f&^iJ1hRLRAsxhzlmGDZ}0ZVt7GfZN|L4vTEw9T zg5m2*{JCbR_-{u}WS?;Xj?^rs`y9kDf&&Y}j$9MC@}_@Xc_qux&y_QBAIBjF4lciQ zhv>az)ug%YwpAK=_lHrc`M}9wV;%;BP8e_O-@5%A=b&NE7dX+mwqO47^}P&eY-TAM zPwk4l!)U^VxYq@;N7(y#$A4OhC1`CN&%W)aEV_?2Zi>vtF)D)Co6Tjrdi~eSDkT|y zAqH-(U>3(uRS}M0mmbLA`Fa7DANWRR?dHuB9%4W{JMR z8beobjHIAMRxA*7%&y`WDUMl&fI%!YF4)Q$4Mkt`GE0)z)bRm%)Mjc0JhC|1f6glQzj0NdAk6)^~s;U3k)TG%w%Tk7)heeBzQrhPT8j}WgHT2 zsTEx?X(&on8S&w1tVd*GZB4H2T$+^tb(v_h`xh}!f(-FX-)l({$MgPN`}j95s0Kek zx3?TTQaSjn<`ICcvq*UdyV&bV7DI*)uTy_@PSdIpyxSpkPNLeZ^%V;N;%fTxgPr4X zc5Til1GZWLByIlJ6&LekaS$Tngs5U_?^yx0rcHWqT_K0@EoG*i85F(J&P2W>Ke;x&?XJAJ(~Fg zY~Vo~mph~P`+gi)gM4EQ7W$m9%3h;Spl9A#Yi-sR)>${JJ3+~*Tdq*D_v`(#>ch9r z_ZESRO-fmub=MlN+a3K+K?(uU@76xFdv}}(H}dK@gO)c~>Vd}F2-2v&wkjHPzP6I~ z`G}_&Urh_B{(40=u=*OKr$Stw-BUp-yB?8?U+DLaH;xz%jW@6c~4_McsIfJ#ZIy5&F&m% z2Ow_Yq(_N~o{DMtri#3~b%-;Xl{+*@G6o;4EY477q8WUI0D* znYC+rb$5a$$7b57#BH`T3L9V=#15t;pWJl2n{O%LuC8vEtU66rdDpBJCwT-$Gqz_s zfTkw;G7;SRg$_4tb?#8OI|V_Kb!n~`kabboxBTawj=P5FH2)gc;#p_XmttRc?e(IW znGZm56U3d$@Aoc?t3@51kGM&cVCQBSeVu=70}ivuLvA(rVUarex2Iq0nB1Pm&7M)m zLU+FKbNwf3*2{7u0=1UjLd~oVRb?Q$xFGX!s-iBA{cQOn9;mszF=eB{`to|H;9YQqX4J0MdRX zbEeQJwZMYAvAe=#5%HpLmh>ugRIoj~B#i-3ccEh;qrV)LyUXc(Zda0rEk=5E$YL0Q zoptI|9Tg*o$gC1pM%|-nFC0VX5A4zS-)x2 z@BX~xIsPqPG8&({U|;5<4_)W#P+{v_z-ukl*95&XE@x|ohjxunNQLRwgJ^+LXzrggYXMd#mcR{-i7w}Y=GCh|T!P7oJp_-=kt(EE*- z54@JS0lH*S$;jnb2Dy0TG_?7Ghj#ZDVEDx9P%UP9sZHz^SVD`Pnw1x zgugId-yWPaji#Vt*<=_W0fD;@Ana&LMCi74E9?kbrzwOq#awKo8zBS2k zto~vpBO|q=#7G&zM%QTy3LLMOWx1efz08|g1~2mf(429-#^CVY)pM=;M8yF$9fJxk z$N&Z@3R}V?MS&XGqvJ!%gc(g??(7SqT*_IKp6zqf`$$K`%hy(qhyx!uC^Rv?rD9qP z;@~0+fK2R8CZE`JuQ4=Y*(T(2*(XU*o1Y}sE;>zaJANPk&NoGL)m)A?twf(RStX8* z*`!<+Uv@HFhFAd6w?YVeZ?Dm{@9W5LgR7XR1v0)Rabsnism0-74nlSSM|9~!5 zWZ7P;K#2-inBn$Km@aYq(5!@A;5ai3Oefez%G&uX^eYbMJDZj2Z*N0iE^BODUiPkY z32*eNb3tqCx`$3{>)MP)*L6iuqIKsZ9Egpq@zf2?6^{v`(R_$o`U2iHy*j3LsVWd_ ztvXod*m!fvo42`Mjzw{)G^}9JfYZvdtA}ga%GATHi}Kz^y`n$%{w7EX6c)4U-aQ;z zj{=(I#`e#f<>twSZ+ZGDhKDmS;wZ)>*u-kIv^OXQ2V+Jz(k!`W1(qnZ{pN5) z;W+Z^8PK%+!Mbc_I_{=<0dYe>_u0OSKDFyIb#MXZBhPRpO#&Dd#?)*Lj5=VVHL0CU z!TjOfW$mMjn({!>NZ;$sh{miX95;7qB>?5uyOI?8-^(H80elR^KMg@v;VN*t_X&X%qv@TZ zJZ0&6EqKHPM7b7dRwJMKgtzk@o6JLK-Ppc6x$hD1q_`{M+vk0l%F8~9pQV&K%26Cv zM>*CtZ1A$5TbRApM$=20sIex3@el}(WIUYVic+boTv3cVFi1bR^D*DZVc=8IbGzdh z`A5sA!s1_&23pG$!Z+XH_@8*k*~wP7>)wvP3QzR@veM28`m%!d801vWrE7!Qz9oE+ ze1K_RP8yeO1ft~DI{rY(Jy(-!zO&Kt6|{q6fMzjh7uI<1N?I(*J$?y3>>jTa*ikD_ z8T7T?)k)VCZuuL2WUnTgfpl4+#)d)ao1?CF>Y@b{B85Lua}Q;;Yb1KF?p&Ju+naif zEjAKi-W%>sc^+t{Ebh+v)+X+r(;sMG=QQq1dQtJ9UF=BqV#7{e_DTbym)>O$tBpD% z!)SRX{ix}g9C!3L_&xtL{aiY>S_&)HaeguT;@rLuRtJCG4g5gka(7?vH1D#ZSH zVTPK5FB2qaHJvRSF6k_fvQyr%_mw=X_|8_q6hoY015w3;E=ovP4bvV8OI-|RDnzUV zNA&8w4Zb@40@rq4UF>%7RdiKocsFmV=?9a$0Q_D8H2TQ(fDxq5`9!@pwV^( z(rgL&?jZnwGt_RgnC>v3xx-7M64%(e%8lWa8cNwX!!#S~VC=YgW8eV_<-SQ6VB4=` z|8t_d$osUMyvQ?$YwM^FX(qp~DhqlYEj`#=$cd(2SGfCD5$jrfhEi3*mBA`ZJLXB`2@{>`QM(gv%DK0p6IVA??79tS(%`=6~iYB z_-leVp7AsIUKK4y`umc}D_{|3O(bD}iK$FTE3O%NA)r!reo`shj|R$30@;sC(FuNr zLDXgs^!3gyb&p+Y=zocnp5~fKB!YaX%S4w+;e4BYo&N@bx<1M6^hXJ}*p89h0^W(j z=vqoejQcK&Vxn?R&=z_t0WF068M9KKv5x!6na=m(nox}o@X;qhfoovT*(UE>olXlThGf)3F&lAN))$KWp4xw~uF{Tk7e1)HP2CI4VNsKQxx0nr7Y2 zDzJ-kDiWSK%Ki+v$gp@Bx;uhDnTyr(tTg|SXb3Y~rp}6BTA0%lh#`OlZ056{d;!m= ztqtC&i7D~;o+DB2?L|?QURTI z_oMRnA6ns8vIhJVO=s!2#W^WrkXvd>Ahi;l4Htyz=0CO1uf(VIEoZ;GDWF0N{P5D4 z5)YmHXmdgC`(vedKPn**Zqgyy{qPLuGi%bISuZyjz43$~42NE$-#PcMv9X>880Al< z;bMzNUKiMaRQmwj*o(0qR6-T=5`}BVe z>J954ZBf734>H)m5VvbZS0=hpdnOZh6DX~Ic3OJ?X2N~**wp5;LtsQ$`X8W|m5kA% z8o>%xzru0eO)x%XYJ`Lw15_eo>_u?~p>w9=_&Jro^GY zCy2MdiUJ&I=qWg*q=Fq>ZnfcaRTdKRyAN>q|Mu$@-o-b-cqai@;;?XVl&_+4sMI}w zV2nuEZWJV+|4-i}2efSrBU%asbg@nHRzR+|jc45bseM_1pQH=tOxxk>R`hrqO3)Ms zS82(VWT9LI>A$A`jsh?NJ811u=?>xZni~DOEmVURoWB-W3I>z^_s@P|ZyEVaZiZ5= zDm}S%3##Y@F9S}4f6V_S^0qu@bB9(Ah?6bW4cfGY=u{5?19b%?>^H@Vf5^G_rq^`u zj6QqJRFZTE<3Q_10YfPRDJz00`M(-Ne`C{CAlO#aj4v-S&kK^5J>q_v6i-w5Y}xp` z%Mc=O@e#BUkO~X;A7H+N#P21D{M0P}WktYR%6>)VwrPK=YnV6WE1@sT7`6KZ2hZOG z|L#IC=lK`8U#mL6hJTS}XH!#QNpO;skav;reb(FMrNg)BYGE_?LoBP}_jp(Dy2L^q`X_MZoy4+Wk8nJ;WukD$AJu zaiet-SqH3Yx)N?h9NlfP;1!MC*1YGxj{J%?)iBY6Ho+%fAPNAf#P3=!nSlc55iS3d z20vCOw(au0!a4Pg|;qAYk?9H3yhD;cWfP`!X6j#fq9v&=o zAHJO^FqTV&eS19Oehwu6nl9oq8@pwrdH}AmHEIYdXeo;W3TF1Uf!e*@!~>yK-7}#s z-C%lMCgDbJJZRQ$9Q=K#w*Tc_)W3DW1aG4i8LB|HZ%yQ$p@LMgi{XJ(s9@G|PX2Tc zsDXDY_w7RyKoys{FD-omlDZLk^)458&E@}4_1*DQzwiH*Br+OGcHVYEkv)!RIAny# zCM$by$5BKjqa$QfN3!=`MaY(!c`}cK<8aJ#IOqIcr|9$jc|M%K?sJdpzOL)O@8@;h z_c@*^^AUz*$n1M#Sj)(Ww=gvJy|;6%d5So>CkDSxvy*%ByLhEeqtT{i0^DXU>xGuQ z-T4K(e!1~akq<{xkYDGWlc8vz1IH%0h~ptSKteS%;%KZdo+8^-;=(0tnLg7$yv|w= z8gL~6q9-1S)uMK6fApi`R)z+PoG{Vt+jsa!NX|~cAvwSLxQ-|55>pa;Lnu)`|NNl- zH$$+pa}#gZ-2BKRIhw(esr*UDiOD#CYOV(opm3$|n{bcjl@W3`ef5qa2THjk!l}F6 z)W!Vq5x(prfss5+*<8jzm}3KT^RJ7#(X80(KF*cfY}xJ#3KYzB8gtes{Up1>OMiv> z)g!;g6@4#KmXFR@c)xQk3ibw4A2ht$LiTgie>KITcBEvkfw~;XkSmmKc#{5p&$ar? zRuoy6{#OfeDJdn$M@7fSWVLcaRISU*zSMTr@J|`17k`4uH>y`;wNj*K?ZEe%`?dl` z`3CDVa6&TW?|Ncp*pa}6#Jv#fvtj=P?Gm#!KCfw!4*_SS>W zPvx9xgypq`rf++6O|EWO`{^9-jM4aYMRNT4Mlp-4Sq-K^3ii}{I&%W>^5x7A@*WEy2ceWT~1UYo&`D$^AQY7q>IUl;u$=9}CJZ>vp9@Dv%{;)5_ zb0&3bi6@FdQt{Wmg_uL)qx!cKy!L*dXOqJ1V2%b2K5dQ$59?+ocV>$A_>ksM;ttY0 zBh@@O7>8TzT>3jB3(5S&{@7&xxO)e}6Rtml&AES*>0bC|X?q6?r}`C4jbBHb9G}F& z=$di4t4_IZ?~FtszeM23+T(Hq9Z&sULkTV8!tvl%QlA(21IPAYxc&j&kzXDB2M;5*UC>EIbOk~i}6 zjpVXtYJ<3)zGB~Cg>lyog3pv|$AU2kH>%aN6UQTG+i@8BvmMupWXJ%?`#TOBf0|*5 zU;A@@wgDfApzA9zu!Wt5^szYM{t0Y>aK9Rd{Q9?f4tbFzpPvj@L+v2}IIjt$AyNm|#qsp?CW=0Z-f5JohWc9&+CQt^sV)1V%5w#g}}JBMW#ga)F4bK2C~t} z02?U}&==ilCGW=sp4V{k4|J}D3o){;>kI@*Xv{b_Qct#q*P|RcHM=o~` zA7N0GK)h4rzuIf;Iup>@GRD-@w6Oz69w;C%I3j{`%nqq2w>K`6w1;g-L^h@lL-k39 z1UqmylTp(E_N8^#JzbGxkDrJPDMA#=^&ylysn%lYMbbG~ZAXuS?fTf0mOQ^lz+;K` zz%layY-95^qBQCH2h|hJBSdn>Wde^OIYZq#sNF7TaHp`y)f*zzSpq!Vp#y>dvJT1q zqE4u&6OY4J4e6(E_zXIc zIwWD*?DZS|unWGho9F^X?IyzJ?AwOkG>&faWh~s26>}P(Ine(_MR7#MaOB&Ja$9 z{ml?geq)#FMIU3A#P{raKHB4VI$!yf3DxRlfv4(9A%89U_ z)SUF0knAMXg7)~w|1-9Z)M-9PehlC?^`c{Z@#7|aon=D+Nwm$*`_8Sd>hvG)%mqr^g;UO_$^M@5dHY2&3 z-Y_!d33k^bgJ{<&1c>znk>r3m^utb8^IhijULD66fDKa;3@Q{#hjWRZZx-9IPyK;w zZ2PxAEJktqCx=}TH|lwIiyMWXE<&L3)9}EEb@n>n{eyYg%W?qXx+1TO<~0Zy$~$a+ zY5N4ryZ1OU?+Pz#LCH57)`D2Jnx*HC95uE&4O!$n(mbAG{GKposy=DA_UB*>I?xpn zcmQvuX4hPHQ!c~n=7TEny5KyW_&oRuG4CLMU5iD;z6K5?#*M5O`nXmGie*1lYkN;x zbnRUbjLUhL4y&loo)$*CfQ^cNdPF5S@|341?erAb!Gx=)Ji3LeANp{VY=xvz@w{v! zqtj8voE1MY0LSik%?rh7)#>{dt{VXf>STo*pq+l)P$eypD`OorZ!7`MA39S#zOl}e zW1Zn-zT);3`r=d=U)EFPn=~OG&CzM-G+}HSHCwCXr@g9fiQb%Te|0V`i}q64m@d>&Ot)|qaD8aohz!8(WVeX!VeXOZgOKZ}Np;7CJ{VObDGLajuPo!s_N7pTU*y`utV0w`z%BR~Z_J zUl-3%?dhoa~Iam*SOYB`nyd`RgEhpTmrmf>e%`^v+)(LUsZ1V@X z88m>Dl(v3qOOUF|m-y)zdQ2VhmEav+LI$&!Gt3%zLn=9^Oou9jr}L!DH7cI^hLY}c z^$oEV4S9=?g^SgK9}y$5=I{9*%s>|i4`wnBaj_syEK&tVII|{Y(R>oT*ED_LgGr$+ zW;2s%5JQ>%8I8yAn+Jt{!*4o^%??K*n*(mic>l_6)nregO_%dq|6SWj!(Zq&NW)Lq zdh*hf2Fch5-d(G+8&jy~8;VH^?%B42SzX~M-}vyd^Ohq=`O+;%zMW4i4@P3tngUyV zwf5Jk!R@wA?R>^j6Ar`rpI~6lhj@!Ys?J$fj;7gJR=(!ct!|m-)VLtx3bHtu=z#s? z19I5=Y2UeyuLKion{fU@(qhVh>#gq(Pn}f%yP_wytMQ zth~EtVL^~zOU7RfyOLa7gj-4Od?CS9P;1d^Jur30ld4zajH2X5>GK%gS^=iTk8r|0 zw5S905w_kc*tZ804K~AU2jq;&@ea|D(Mh9XaJ8;w!1~8^6@BJ1H68zeMO1tabjO6k zh1G2`WD-_RbQ|UD!>eG8ipK&PM}-7AA1mes>4_Cgm-w_!@S5h;>-pjaFX{_5*I*-s znm?q9ucx{r->REUVk!w{lcKo|S=jI{R+uFNeW2T~P;jD39oyhytPbMO%4qwAk8`mS z{(131N&|34FYSFJN00M{O|(3=iAa=X+sGi_`(GLOq!L4~02A(Tk@4v+H77KT+Epvo z?~Hf010hlpmB-Hhy%_WD{d;AQDw0v$yGH$$N}b|(n3>jIK;77od4Oe{6HJ3BzDG`e z4T1m4w?)3B;`J{4+<-&ngHyz%{0MUM09W;d<>-ul+gP2R)Zl)Y3!dHT%6QzAq_;L^ z6M!KBlz@f(Q94zxzD8oqC=`+ncW7=}EvSkE@7ZZ+hQU?yb3ZbRzA=aH3 z{%t>~#o$xo*P+q62H>!teUzhlTh3dmPkz5V2iDH8iWkNC>-hWhSDrb{1rEvoD^m%) ziuJn?3-@@s2ih@K5L}(Yjyb!CkbCowYIW@?Y%`bWQ*#Ig5woNW9vTT7&WF1q;^3yE zT`Jl1R5y-t$U;>09YQyqnGP3(Z&blm!3sDnJpR6l$oSYa~2q zXSW%3h=vCZ?Z)`l0-0bTIwhyCkkz$hEhWiVOf1(B^@+Z?TFr>9X)fDwn7yX7A7&fsT0xxR!34O|YMz~u zNs=D1qC0g)3OK-Pt0jE>^Wa>9zXWU0_NTEJ%{)o;r29xe%*p6yHFg+~w_4|MQ`h?n z5%!&pVDzm^oQJ>T;BBTtg%TAufCXth|I1oDu^l0~-^VRP#chAVnE0ybc;6{@WvC(d z=JVH!Psk(tDwe-HvnkaG@zTMitqUKRr!$H;l&Y_i3EF2g4@1ahPIRZMN3PyBgAK1K z5@)33_=VG1{0@zp9}aRE+hKs=C!hLDK$Y~^*Z8`mFkc3%AaF4~6B4;~6$o_xG!UCq z(mi4b6J#pug9Gq^ll+$xef+8?^}+rclLR>pA@A#%f{%{ciyrsCX237OT#Z^yi(7Fm ztXYZ`jti=GbF#F|Z9S>+T4R8`{Dj!tpNF?~^dN5J0qpu_)80X38NB;T zzF8za+MDi|jRD;htS`gQCJ1` zvX=)K{}QMne8tkWO=uV)ZeomI_-ddBS-lM%D*;9_Q?UGR8uY-z2u2oN`kFh=Y4qkN z%LDjIV>+^E|A5ChQI>f??}(UBZb+VP=iFMF1l!!(qdQ=VYcbE`w68QEcjt(xepc7# zT3|nQD;GkT|K?g8U-3b4qb$o8U_?r894X|0wZx(Oy6flS#M|;szbk4DcpnQNR2iZB z0FF)%;OI1f6C-)%GCT9oIQ!Yga@dZp=^4|>#3SruxH%wE1k{x& zbL5zL%X#8R+q3V$hR%_Q3YiMh+W!9$h~m&a*ra3Gy_{fd@w!KGqH38ObjkuyO)@lqIA~un2k^jgRUHeiD>!l@fWxS_$ zTz4NDJv2iNWCijWDtr3@LJMfb+TyzHlBYk;lh< z+@)NI(;S4eDCPZ*leg(4CAh7Zy?D8b?614IkJ6M$P02y2)v$@)4#MV6dEAvD{a=(w0V;*d3@YQn%!KuKgk=)6r+(4MB0+;FyI^UEgJS%-U1lv8~sNb*Ic;1C8-&<6`iw~ypJB`4FjF82oztN%)sBy34{CY6q6Fl$pUYd}wDow;=G~%NMxliJk zuHCrwxi4KdaAj>Fq0n_4pHLX*zqQnxBIPQ0=0hxXQtVq(t2Gv@G1Vd$Pw$lcNuDwK zI-h|`;6}PH$!`z%Fz;g}-|BqpC{;9F^17 z@^Q^~5(=E8 zx9&4Yh*`#7j=fCr7BNWe4z}n%6X&j5g9;c%`D)kw-UB9fQ?J{HJI|XHH^!(eh7&(E zvF-3$n7Kap|MdL#Cm%9+-#0HM{w zg1z~zD?P?HUBAg+)p1vCYx4s(D$UXxi5QY#S_7D9* zOQdiM+(H~f7QeDqSbE6D>}+dm1j&E(KQN334AV1daKw%taQXNV2iB@H^^AHw=>z_o z$=zni+9gBj!ac?|xu|U<_TrNXDQ8>plv#o$h9MAowWrpl&)c&oRL4`jS6G7S$u}DP z!${-^kPL0vJtgc}-Se_hVR!e}B*k@p1I?mT+RLEgeg8Iu+g9O|EdZW=mBabjX2O)c zE0Xz>1tL@Kd+fdlcd74P9RON|tz4KryRZ5|rdH?8IH{yeJ%)ItOizh6?aUdAHc>`+ z%N7h-rdezZep9CseHrF^X-313$qXFCyBUA?!xQJHm9IyBe_)F7-~7Oo<&;w9+*O5J z49a3s5e+vBTeBJOE=&9-H3spVmKwXGHukZyS?#n-XvAXs0p1%1h*Rd4t(nznny($(3sp{DsLC z4ug5%o4EAOy@yRyeX26ti*FhInwJhF5XIC}edsCr?My0#%;mX{k&zJ!AK}VzP`r}{ks|8(kIo@aAuz|M8zKo`3za)F6s(8G~ z_JGB2zE&zda9&0=@0}iZ?wQm1FCKrp{#(6iLH$(&hra?=cH3br-?Z3gAdK(!>%Gnd zvXH?CIrnbU=qnQq5lavV4^KwmfH?z*{foL(`fJ}Bm=F~BDUU3VC|+BSdXCe2s3L)uN~3)=>My z&`SYn1FKNk#4r1kx+_g@9qz&ZEw3oQu4siOt;2_7(*K6rEhf)f z1yTF@DS*qe}(7hUaLluTen#8=pSth>m8b^FA0s8&q@Bx+vD*elNvd zfm7O_)Q&V7KK1nbtCM7U?iJ&G8t#{0DNVjoZYr)GsV}1(-|9qEMvY@ z;W*=ox>Bwglv+{6*pQi4AUl3<8Sx3qa5kC&K!kP@85y*Pvr)x=-kV&jJnuv=NtH66 zW`_4P40)DuKJeD=)3tkkmEZE|%$!ep>b;<{xuLC}aWPl3u{6q=OdxU)_EK;03Qn;%(DG z#_Q9Ds6I8{mI+NqxkB`5lU4~63e@yqeYS7t?_K~JuPWaH2;2Dcmx0vs6QAu3lge67 z{}}jY{W<&$m=4CG)Gw@1y*+h`JM`VRA1BKCx@3h`Z>S0->WdVz^?>Y&;4Q6FWk3Eq z_hK>>0JOCQZOt#oH7pE(?xGaGi{=z9wcI5izO}b|hVg$?mDliFYSdog8|8(9;Y=qw z)n#L1XBXyVD+!sqlR;}Epu+V$jC8Q%B2v3R4Dws}{6phi%081;teT?hiz0|}`}eo6 znJ>-u#vl&&dt83!kF;>8)kiv= zr(a-H>TpkWC3#pPch&Vt&3P{6uk=186n=@m{!%k`x_>m0{VXLl>&T@olS>**2`vQ$~5ih-TLZF-K5;)4E4~8X1-jZ2;1b+FUgLo=O5edMMhp}ebA`5vhzq(nhO`Ua0$j$tLc%p zAbYcXt*1=9yXD3DxjNBhdS5eNq_?jb)odLZ8`zJDOpOg^qt^nh5!?sL0b|=msAe0g zSAPs_Fr#1@S2#aPcUqCb_0@JrSfmi*@j)^thdjDD!vGfS3M`+Za34){>I5^(%+N-9 z_@2_!k?(o0A47uiYO>!;NgcwKqod&O(}OI*-E;_e}OV7`W< zV@H~PMJpdvNWA^~deK}SX`@9Hct5jsoFSF)b)4ZVMX~%w7e(>cOs>#yT9#9#nq+9N zqK#a~0$A%nlZ5g0{!{&%Z2fnth3ZUyqG_IZ9Ka?Mr|8Fun}Z2Et6Zf|pSFE}qwV;x z@K$B}*EWpV;d&cJSy~~LLo;U2LH&j0E@*hhTz5GN~_hLd$2>2Ic?9+Gy7&3BgaqzoFF*VFy>zSr}&B!6~HF0!Y2H%i8U z+q2dzx(H=dzZz5@U(T6f0CC(Y9I0-BfcJQ(6Hhxv8+!I6TV3Ol0C1UQ=I2IqxUUjw zdk~c^toV1rnhG4ff;X)NuHqpjPr2WN6+V0KP0q8c!H5dvf&6!l8vs|lo(^fKrtlqr zfmio$zc8Pf-DJ%UPQu%)Bo4gMuQ>Ij+h~-C-5R7J&k=(?H(SvPwPo4a0zC0+zb$L6L>C2X{^fUsCgKphj z7sz;AYfNrbwESOHp5sAX^|1)g-l^h`vBP=6Mq823>9go&%jeiNVZlj>U;n5D7`82b zr{fS`E2Z*tq0pweJ7R%~Rni$3K(4L$e?tK2N(ZgtRxdtZP$m7aij7TI{4{F6smTj& zPN)29NicYZV2zt|Z*kEJ_(vl;2I6^Txl0V9@t4S*U-hTHaU=|o?0*y0H5`oFB*liO zay%IO3f#bVzX%u{(Z_!6s87V)<;3B9Z+T_xB2m${S zm=>k@=w)G3y4Qf+nmL{fo6KGl98#FcW{ToMK$6g5hHiMz_aTV}eIOr5&Ql3bb%$I!-ayAz7Ur08;Lcw3BKtp!Xs*bdtrc;t1PDl<{&grRxRk2qiGyGnd!F?EhnjXmeRX9 z5ITM#R&wb_wH600&!d#~O--PA(77WM$>o`B_ne{`f4tQ3xi@?vJIY02+xFF3VNJut zgkMA)929-5WqL0zGmN`qKIdd+_W5Fj<+l0dKsqw-=jYQjVMOWUrggv-aj)f1jN2>~ zCgXW{L>;~MvRb)drtXkRXY#seVwDiYT&aRP#@kmK_avQX$%d$IlgrJA~(kUdz=bXm3rNAAf8aJR(ZA zQ)1A+5m9Rg5u&@L%;<1X-0mCR%h%AYqYu1YPV(p^sF8&UZ3_G6m$pGaejB=kueD{k zrqrE=Azb{PbT=!vq@kuA*%*}2eh=Qm{Ys8IyKB`ZwSKi^lkW%AVcJ)nBV^kjsmbhd zRXaL)?JY3%Z#a)-We=^0x;1rb+#H%N;jPHiJhD-fP^{cCuste4Y(mbz{Znt*zj{^L zLVczhHeJZ|cJYp>;9qzmmOQ2Op=@6?JDHyI-vijrw8xmSb^W#w7<3hs$KuiYkCc`S*shtM*ZFs8Now%|IeNX z-+a>NC4UgNw~{cA!x#2gikxs#sx>^2J5iQ@s^s`LDv)*%dUs38>?}^Jn6(Uk3qIm_ zaBqx5$-mCSuwe*1*wmqJapb%X%Fu7;HGi1hEM6Rr;Hq_LP1SFUbyLr_mq?HFl?G4v z8XjB8LCM_7$^I!nzJ(Y=-+9cc{4yyoBd<&aDMZ=NV$T90?Hv_xrX;47pn9zd6{9?T}4SB3C;@It!yOCb?|+UYkAK&XvHo0Shmh^iNvS z0%rBAaN$5M65bU=tfPb%I&Rq@Pi3CUsoPS45q)QlJt|%ty=Z0jJT-2qKL~n`N8<~q z0_UUp%or8V(nvN~wf|`<^y6G*z2>A2Elvtrk6%rXt;*|_OG`XqUy-QHuA;QGfhW2>tKdpRYR4RCCCA_u z;2#&9`JX}!AD~vb3;%o&QT3&hEuFPNMuq}fMPQ_9cbv*KBFuBhJnttru6yLVpIY_^%*?c7yxaW#bhU;@igzHzv;5GgYXAB+lHnu@xXMx+g6DjXfPZ z{{8w75ee6|3X$0D$J42N1g=}9D^%X1uK|mab^E6z&7bDH>-&CP3_l#t&oI`b8N^r1 z?GAH?sC>AuNjB5xt*4HbJ-mXoc+B24Ihz@{J%r2Ne%dWAEB0!xY_{i6yOdeEm=tB`JZQ8b7R*z0-y{+~FR0+TxPV@+LVkVETX@Z!}o z8ZIxsKN;Ed)_VJ=pZ~Ou6gsz4--poQz%mu2H-2G|u*_L?4+$cy;@5h(eM_d&DY28bIBYzol@2@9rzPE`tWpc_rjZ-%;uU3-ZZqp!J{i@l zY6b$PSzeSsj6PJ}bmV%QAsIZeZ@=MR-#-bNS?@Rn-{g+sv_Cv+^3MO>(&Z%W%AgVK zl%6L4iT+zqv_-eE4wvA*p2AVUtXl+7G(tCxI|p=s}TAVU*Xz0sOO z>1xar^+jGa#u=84(U9shUpvY{>4Z(Ent-(tt749GiT$-feT$yIr$;bF!M+j=q^X1c zMiSeGr0bSsgUQZfo~Xe~LvFjMREdj4S3TNdg~Gq~3QFZnrJiCo6|b}PdTH0KXuLaK zcHWs0z&0z^1~}7)C6J*6w;?07Kl{(R!E3UaXWHR1ej2x>uVv_U9=>DGr06X^@WJla!m9+=SXGfT2|0o>^}E8E854!vEZoaENZS^x`Ys=#Wc%sW)fC zs6o;73km8jwF_64&Fi6PV&&{)P7`EhGAHxD%eiNrCMxWQK5N`8Y_DJ$a!_hte*2U8 zQ`V#M`@Jj@p>YUB96AmWj%7%ImK=sQrwTRe2Im}V-n9Dt_PO{Ofcak-TOL9XDsD3eL^A^+-qLyGCM;?th+~hCo_L*H$&s$KsUo3tXwCCrm(TizRrkB$e8lZ&yfcPoP;g+NjsN}S_oel`PqMY0bpl* z&^^Pz+$a`cv;9J@9dU~oy{TR0I9_B^ul&iEwQ+LU^aFl-I44Ju&YX?dHfzpCUmeo` zSwM4V^+?zh33~Q6_gC6s(>nwCTKk66a^-ZhHX%_M#~?(12m9b$?3IX$5W|?B0P9ii z5+q!KA1y=u#)lCtFmW>bK_Z7~z->|k(+?25O3gWbf@YTyEjXcjdeUrqccsbz3OR|5 zc`?rk{mPq~;TGJ2i!I@{e9%HqtW^o~F0f(`Yodp+<5`re!(Hg6Suo`y1ezLbP#w05v^#J$+o9RHvb2rC6~)knvfn5k>c|l#JMoCoNXgF$BNj38({D-ALKb z6M(q(%j&TdE{W&OFMNZry$ zN0ApVO|SSE{-TUV`bCo%YRk6D0c82PY);M9YUA;PV~I^fLf(6JUp)C_=MXH1S1S~JneXujy^}s7h}s~ehd^-U z{>YpGlu+09xgCIVyj`BW?jrND>7T0$T>f{luNE$lW?x@Q`tjW_!~4%xb5~TRAL34+ zdYm=9RcXX7PkoX5al|k?wUVfQhg=#xV`pWYBmY>qZbE9=!h7Ckc}2V6zQa`9d9Smw zr`hL@sq>0l3*B#@Px%F}ZCPb-o-;o~#z5^ol+A%>Ds0K7#67@ z2ECnatqodtG_7uZ*gL0XJ^FLLZ__GJ9&MS< zXLu@^~1@DnxgI}V5{ylTWz?I&v7 zxQk&45dc(nU#(pj=eB6+zGRlZA;z<-y7ulDg~P*wTcz!Hzucj7IE*y8*UzY+yG=W6 zrW>e%mMHP-o0Ew|Dg{mq5&7q@#F)zmZ~8rxE}!iQ7w6j99PZHNj4+sNoLC?6`8s0K zJL0xWZI=Oje5FqPN_~?YyPu!9gMYPs0mYqp|4*=$VtvtUJ!;SJ57mbH$|$ezXBW)y zs}h&SKn%FTBa(-=ou1F?+4z*4>cg->Q~&ES<~8JyZ5=z%g_^q_s(`i+|Bxnm~u{3P;0Popv(QY%~sR$IRNr_^jHf9a|;eV`# z>dWd=srwnv6_`1L6oRjYts|oc6ttWA1xwEvpDGUXy>~;A$G+K;?2iZg;AvpFS=g1t ziW)ejb>ENFcQO<&M9Byt2V=ZGi?d&h;HTGOqZee?mHq4$CL6c%Fi)I%eaa8nE+^Hp zpcALAAwnsh((5Ey&OF@wiO9Z#330SDliQj|($4kGo{0}2;e*&Y);HWDBC@{Re-!nR z<>q`jb4Kqz?SG!!0A}&*W0;y?s*0k)I@oLv8$3`2g)+@cUTK_!23@E`L{uXtjGJ^8q%L07Hm4{7iGzKm~&ooR`5!1*a zF2nNyH*!5uV{_~}ux(><6fzd;--Q&+Q1PuBB7o=)I~s4Dx%KJ}X>Qg?*s-#JQkbfO zZNTHicdQkzH0UgXu}Ls!2$~`4;j^&zW894<$Bo7f8y3f(Dt~fW-5js{ObbANe@3F4 zLrX4ojCL8-F$pR96Xu5 zk7XZ`%>K3>j=6sya@uCh_rt*IDODpxX6E7?z!LBf%#IJ!UP`Z~KN`s5|6B{^%ZT`vJ{o#>yMdsOlMlr98a?RU3o} zjme^S#seogAxqUt;)*7Oz5-5~eVr{`&8m*OL^St53( zhk`dj9uHa;$UA+)qlVLeWBxF;1ZBxmma@bi;|()8fd<@xgiv&Z+Foj$e9f7#qKC<_ zLGc+bUNH3bG1HWLx3hjeWiVr!dVB;K@wqpQhEVU?UvOVzDBbs5wywF~txVeq1eR=o^s_xW_rVE9?(IbfRX!2Z^N1q+ zwt42mLMx8dO?e*kU^o1%99i~^qQ^YSglL;$mnqC!aII+z9i>$rzOWhP$T3c-K@Y~7&{K_dh{vq&O#&BRWF@-kzUafYlxu8S7BA=o=?*O zzH-c=4-#k577qu`?ndMGw+xz|FGFO6cHh6m+Q@?3-Ty0*E#un!L6#+2=y-xF%zwDZ zHqTU?`r%r)G}tz#)MgO)zP3&*EI)BQ%|{D3i^Fy$%ufA{JAn@>4qb#mhjV;CTn=!z zbVZ)4Rqx3L|E@ky-NmnG&p}pPNc{1Ed>8yOMKTSz-6Iwg0K(wV+Qd%X=$Z{RRa%Dx z7wb(fFrM;%6~AB3RJdHF^?ce~bB5USM0Is~H$gWhd_g!u@0o%KaMT7LoI9RP`;7BE z$g%!hx_X}`2`uVlY!I}yl^#MlSXEJb_&y~h^us00TiE|$#pd$uE417-ekpi#eYmx! zT%(7ov)9O4`+Dgh-IV?dV=~h^D<&5BLey~}MJK3-HsOra*O}3Be4~%--7yT|sh!N1 zjX`^+-GhtD@fVlkS2+KC<=<%M{Y;BofamKJ*|#YPmf=X946D)(b~ z2r>Wkm#Bx^GAPEE@moJW*v56TWWJ56t{M zYy=w1?00;o|JHoWZlD-0Yzs(>0>9a-86-zS%>cnMS*U#(?cit5k;4kd5Jv1(R`R+D z>q^P|s{p9I5iY#)CVT97(1gmoNQCyM?}>5iVIBydx(Y28H&X#oC-S_8{%c{cG+GXI zGEnpYj$1`4KWat?N(NJ1#@0a)P{A-wjnt&=;06^n7(L@ZO=yms3TzGtT6*&1;CD(@ zMjCy*h=SdSh85Rg;xKD>+GVniQA8b6!`mRip+Yg@|~(TZr++Im&;s};Ggp9)6l+Ny#D+1B3U$EnOhg1{Ixy& z;}_ACbRJYHS3HLhinJbqq6$tflJ9G?Ap36_u4R`je%Td0>Gq(ZTn%RZuZ1rb-M+;T zan{`i+-zRrlCpI9wq5R?3VsvG=Dr1qb-Ne;exjOqbAQ_}C!Pm|Ikv%V==V2UlGdVO z1-Cq-{XO{>Dox&%{5BI1|1#~HV@8qtGNKsmcY4Da4rxi;)D!~3k;mSL=LC(}lfCW1 z^%A@82nLNB=Kol`*i76d;fX8dHb1gsH|(?TNQ9Ga`t6gpbznS%+2bbZwM)lqjmy@< z3pzcEpyl!lX>}eeFAOq!_8y?+A=lt83O9UO&VA*5r$cQspQaB4^xBUIIn)W=0XMX; zc~po(p(1`Rd+9v0S+MTnZY*)LR?bz1{-TSz)|Xo#vWv$fj&(TRt#r>5X}c3vAg)Ml zR?L7a5In@n3h1u>%2T+m)FmWL#m+>rPS1ZA*qMNN!;U{%{xx^LRNW(beCXt^ZNI$hppU>l zv3|}~|4x!;wD7X~bvR??@-&g=_vel5S*_~`}e>>ydGJcM2%x82ymS}^=oVS z?fNB0<+;J@`Htq4C`?AR|MG?N%um+gT~Wb)(QOd``+3a#R%E=6?@TVK=U6M0b?k<} z)*i5clmv0T?*zGk`@ykgMg9{%xkKtz%p+FY(im8C{ppE~1^D>5t^YrvJ*Tb^XjGgdC z-#*#d$};VhN)`jDDSDJvx;dfB^1S_%s^IMRei89Nh~rr080~((4opD%aqgzxnlDQ1 zkNAi-9t+;1fA1XFvS?>cm0d51n*2;Z5UarjBqYFsFCQ)QaM0wog^$~n1vHxf3l)m*O*W^G&q+h9?M|GZN%aZ9nVv}H!2E#m#4{eR*3F63-{MOvwTHco zQFL+F98sy&2>FX|I@VMX@+@7Ap4bOW`k@P-=w;_hbVFv}TNyN{sKfNcj-4MN@uPut z-{cGhw%IVPZ28d-$7ZbSxdfH%$VMsjDVQfq8gw~G094SuuRftvqtf--CZ}Dlk_Sw6 z=2&Fr=T|d4Thc|eH}G{k>N78=(A|nj)zoiT*HwSrroNb`pQ`VC1+MpO^XUPjD#!Rn zdV<2W20nB?O~i=}<%XC$WKVf4L53IVG&4UOsVJe-vE^md3kr=+19p{J8#Nj`V_q+Q z^Z?FP_{GA@sQl{SQ(Xw}L3?Cx#E;K3dj{;M-hUEjqM$&rW31lspp=e7sPys@k>zjh zE6;uvo*Xr0@MrGMfi}_7_yp~3N>!@}$P5Z($?(`nt^_?3{34y-Yh_xcGDrDXazut% zT8xd_m9or`4Wj}a;7G|wUA$gvcD64Pa`GP1S!?P8HLlS>^YH1l1_I=&?=a&zek z=L#%ZTC{?4k}r^l4JNT3O-cpgHC-QbEs{dO&vm*i+f|vPd$O;d<4yRwwDr(^)n_K| z29;J^yjde(=4F+z>~vk#HEb>2gDwSbr%yw_LVTQAX0gzYO%lnfR+X}I!)@8Jxlp+?^0g`yp=^* z-b+I7@N@5q2vTW|Io^2Gg|gzT0Zk002aazh0?19-r8}|$RKNI5A7igmj4?Cs8gi)? zOdC8#m_+Xc=Z|Cr`7@sGXXG^AH&Dfw^>J%Rs^G+O^crr`z7}%yael(245nUHZ=_`- zwgyE|gw8>O!$A8G-{+pf@ZzJ$q&eaj=NtOI{fz^c^M&ye z&&F_HcbCt#NvSMX!RxZM!o%V(2k5h&dL5THW-+y11?UG3SC8?uL^ zpMlOx;nuUinx~TF2D_$korEzXHyk(+X1o-r8IR82zd^p@)#|@Vq+18-e}!}w@iJ(i z5|eLe`yeby69Nz}3$YH2^DBp~wvreG9eU8JZgqSO_O#SvE*>tlwKP=s+YU6cMlO!NzcD}*|RggjQ$QO6YOso#g(`$>``_>&TQ0}+P>#U@! z&ZKyshCi?Dkpf|h$I>~M`j5GjsCq&djN9uYy=3e)ZvfOu=lRB{Z6BvG-bv3kQ)Wqwl>o2%s6u=_!n$xS!9H`ruH~+Rf_;p9!v^^F4|zvZuc^A*7WQ$ z5mN87z45(JZei@LDQf^7$~`dTsw{o55PYn>v(-2QhYswtPhH6Djf(l$H{cVx@z(iC zkw+eQN;Kq3w2}5S2_C4vBuP!VHE))$mu!ebz@TfS=Rm=%Q=B|mbcdNH-SjsdgUm81GbE)leF)qWXuA?L0HfbR_0Ngc34ASn^ZMoO2z+S+l@sFN;M?12}y zyxt8M)ox%BL)kbdEE{6{hwp~=y z<2N?h~MmSy-*`o z`|IN+dj`zr6CCa(Iz0Fk`HmWz;=y)zQ#z84oUl;bP%LO98tB&*24Yr!rcpdW{GhD7 zfg(m`#^+IyLbsPcr|-F0{R*e~iWENjnGdQH zaJTEklAmN<^8b9|g6xR#(nA`1d;Q5b0X!SWRwaA)OJoLE*X|r*O3vSreCx%gEJbNd z1%Rhu99c)<@z(3U^0mr5vZXQHmobT2^&Jb=lUHpEX)5FxUtKt&W#$vZ$Ec9lGPQGA zb33zU$o1xq=9C`;<1~XLpvp&0`FVHReD1n;`{RYs5SF_tN^gary}egux2`@b076lB z=VO_a_l#8nP7c4tK)ymJ@S*}xqu|B#uT;jGvP{>VR1l38)b45&6h`PpL5oKWS16^W zrstybCX)3E?|)we8(7LgCvbxs>fJ9#nm|{)XPYB#nc8N(7ViaRRr=sCdMRS^zC7Xj z$yqSkb0eaBOfFAbc3U$L(K#}!myIIp7(K~Qgg$T3NF${!6ME&;h78JLQBaLc!Vp=C zxe@MNMPm}b#Bc@*U-0t0Rfgi+rUL_~q?AmN3&0cm8t>L#8pnu+VsGPvI@xV&0Jfap z&%UJ?93Val$I6oj4<&rz2b_Y;NJWnIYik)I1B}tUr{AHl*u#>rx*ITV@*1FDV@aLG zpy|HBXEHK8xFM@q+!T$3v0$j6CkwV4k$Uep{K0pP{X5ebWpv)GR;C!u-oVKD4byko z`L*>3q}J=>rl&dfV{Y$iq2p?ljZjI;sEBq!l(X5x8 z&ads2wxDy{O1WXwVOQj}OmL|%T~>diIzsu$1QWe4Pr`^aKRiptobS#>J#xciHqx~) z+V%jY#JSo`q=TA-&JIRgL5}HhT3_hGgc7*oeZ<4K)TtpGM)=EsXv6jqgpX0c*7p%(J3hT)6i8W&)^vAX_-j7Ba_0DNhfG9_46$0 z7q*aF)HFUq{47XC&h@XdU&FZwjfvsY5Jxtu@ix83AH3L=uNCDche)k^Y(C#b@eH9@ zpn_FIZ*Yi0C4YP$Jcz=>iVszMl?bN3-4mUL@$5q*wH;=&MOkZ<24>%TdhKb7S5B0U zUHxHmF$=9xf-<*G0U7H ze^Q!DJKJ1^*4Bfe5;fdOB+YsX7KC+Jt*?i(6hLB3*Kek)gRNc*{q&UCiVPWZ6T@Km zsUF25ZIV*df8vMpZES}fk;lGt62J#7!rT&-s8!oH`|&+CCu|Z__t4BBzZMk9Ov*k= z-qNe7&T)Y&@2Es)d`zz-%*csA`+@?>CwF~da!a|Dhx_qhaS3m=jZ4s{7=Ec-!Z27) zrSc}${HM3d$|%eVrZJW#;)H1Nj8Yu^qkf#ei`Bq1!XNK38cv)vI+L%_B~PXN9H>yH zOhYJhY^&kBd8!gBn2j}w2Y;We5; zc#M~|=hq@mh^@Q1*OE(S3>INf5Jr%;rgE@zvUBo)$PalFf<}_13%tz3`a%tf4VmZB zA;CBTj0UxND$l(;Gm`3=P87iL&v@ry8S44wQJ`EDHtrzM(Qmq)!_J% zhw)7!*HyvV6Si))&aP4hn|^9`oK4PLTbL@f?h%S>ec{$p2x{d?{m$&w`!N@$eSqc(V#v3$EQ1Sbst)}t*8qOcDijA_3S!>vTvsd1L#Wfj2h*}Q*vG&>?OHl9=1 zCY_2A0F@z@Gj}FDtFji=K^1pCireo;iokG=A~VcSVhK~ zbZ%KaOfl-8>mVb8n3xL;?5;AqS88B3I>`sFSn^{l{-1{Ly&_XQ$O;G1=9xV902jt@0yjGjoV6C4N7b1iyzs*!^&! zrxCKJnM+Uejf07p4pf9-1EovJaZX_aYBss888X%?`y(S9VC|UQXZeF5u0(O6TpD@1 zmGt;2nkLe3=MPsotw&EzFSx94bs5`z$aA9%Q%SrZhh`6Zs_=;!O+tO|%5aGbUxM~t z>@MlR+d=fD!D`1aB{bB*KFpdc9!i|m)x0P}mPvGi?H_~+Is1&igvS@E460-^p{c|z zkMg}cLrPH|j=Dl*h^%8!+R8JLhBSN#SEM`%Ye^dHZkCBTP`Lt1Z%bP{*7%>wg3nv= zPM9xIS9=kIc+LDsn0~&#`ePdCn~TtkVCFcb^R83Zku1q2Zf@G=ez&k^amKI@7X3j( z865OL%8)U(3<$fKQ|;<%=8eT(AJe6FslfPs`*5-PnThQ_#~29n!m=!&ACD@8SXv0cZs^UBaffl`ovM(&(7XIkD&g9`_h;t+c z`)P4a^1zEVKyO1696w`@)h>k&uejH1O_*E2tg9?e*OJYY&BSnPc8_lMr|)PE`HH*x zS21(?riIDPD zvK6mVBM-pkUr&=lj-^FB%W?4oI?p)5Rc=Fwn^hC$nLF)hMcLPHu_0-E_%(5bKZj)a z`CKMjXnimMP0|#-_s5HE9^?(z!&K966V4>X6oa3Zh*QiAD7KZ8DB^| z{fM1;f0h^T!C5;ck*D107yY!g3h8(58`3d~Q3H=V{n^C%3Et3kP|ipGV5GR}c(nnW z)d~$5e6DZ_u6uZFwx!9b8=wXCG2Y1y$QHyY+B5v_uAePET|%%$_Hz_?{%{R=o$V7o*~%aW2wX= zx)3TLP_2HeyIk}mNfFToPKL~`PM&2Aojj|2QnDyR$Yk>vEzV#n`9tP3{IdF%4i;uv zcbSE~uEk*I8rd8SSzq!GDzpS}v6kKkQ$cTIQwUIU*3ZmMS{~#3)89)urQ9`ZVIioN zUi+?;7-k@S0a@N9kuDsFgh=3jHE^vR-0NMEKB(4otJ)oSe`TvyL8MwdtyP^fF88N*%a8*dMk5W zMw-NSe^|9>HRfI&sJyA?)cVr8=9}T_4&GPk4yB7pMLJ4U=-`!w^)Q5uf-ro?kRFg| z0kM!nJT@b}nqp@SVkyvlqAeira-q>yli;A0bw*a~hTvvmQj&<5_Pc&tB4BhYYi4fT<6v1= z@W(y{xH3phX*^Y%F60o><9sWVI3;k6G|KcYMi?y2iGVCT)5_V>`5`t8PZ1lo*D-6z zaVUpb7uC&=+4S}K8gsxj<6eIlLKFK9<}4%<7b4Dj=$=E@);;)$pE~d9lllOyCIljY zD_A@0%O9aEJ4=J3l6s7`?khXb6 zf#LN${2+5JX&^y~0Ux{f?YKrTXTt7GA2_S5MVyd}(}6MT%wr|(Y?7z4CJ4q;!ivjNyaP^*uK|US zj*v-UimQ3o-Fl1mKT&%?AP4YF^^!3Zo_0c=)MU-#IG9g<`$;pD`&>t^1k`H07?^^9vEhO*f_Q(R0RXT<6r3QMLmcv<@4a0pe9U(+%N7*=wI z-D&a2Ex72V@KrjMns+<^qaWDBp(otPQSbCPwToLSJCzcNbI#}v!T zQN*n$#V~-jTEM|>@;CpQmmy;6d|(k&ZdqXdPFlVE_k)x}qouK|K-T|0xrzTQb!hXQh9mK$#k;3K;RT&$Ov zah5E-DxYvDb#?V$n6cRVx=&?K(O;g`{Nm&5|0RA08iVHz>Ly_m%A5`YY6JWge9yVe zxH$*$fjm?Rv?y)e@&G5yF}QttRy;b_Pd|Ha$R|xh^;-3`NShY)VWcs)sEp2r1WY4|} z;5(PO-o6AfWJn*CCFpkty2UH~^*NM>uIEWX>txy$PQ6V67cIu{dSI!WiEQ(^v#A!A zbzeas()LHD6`q9H+6!TuQRPB)0~~EQq0T~@!9O+(ghTO8opAo=W&iJY*X-h}w7Hpl zWKTGwz2auO|IIjK&Tj*x-p8*e)XG!Mg@V&mJ-H@ov9o3s5K#eCC~eIy-H*=!FvXgt z_m)3!GolI_3ipf8XIFciVJ~JcA-Y^OV5eN^B~)NTXb`>-=U3PDh>9@ih89J<&vVg`!n7E^?j@`PPel zy&s4xZ7XKI7%Z~B`)o(D_F`#=XD%F*n;42&EU`N2RxE+{^w<3-c5RQxf4dp>J4gWW zJ@yy6M+T#II@~qkhBY`f#}{@8#IbLUSucs5qyDW7hO@KS3mI6RKW1^!4nJmJ>c^X@MF<4{(bbLb1qL>_cC)kA5+H!;QcAlN0u^3@7M@{iu9oA{)Pdow1Jj`ag8xR4=Tn4U7=XIF# zK}4$1bOUCwq2J8H=H1pmouKl_N{)QKjoCG3*0{JVF8tgx!O1s2->U3azu4lZ_TO52 zt;j$m)1PTIckxtI8i-U}#FnIAZ=98+!=69N)_j^PJ(gStw83Se=64!skU4niKY3nx zWW#g5F{l^abU%wI8(=ZbU=p$1kb2c?M#8ku6#Y~q{JZUjzl|yQ(nZyMa^Y3Z&24xjS6?4^{S0nn;f^dP+iVD!%rn3(|by zPZ=^-i8qx(6)9BQ?KQw&toUj5zCXmI(dTGmln6KazPRl!+qm;ugq#p9VgHeTG0M%K z@z`(cZ2Vx)gv4f6lmEN5?VvXFyy~ly@44Xk<=T#-mlRjT*~(O)D! zwR}|lX~eri{_%PqO|}|HjT((niFh}9uaHj{XaU`D((POF!}OFW5L1wQw!!bfHIu}_ z`VJ~#C<91$nPdRg3>@=|EDYRdPy&AX38?vE?7+c7I@L)7HL0rDm>jhFy&d@Y9zv$6srnGrXDtiN!#A<-7|Eh1;2o0lvwB`9@Nd2b645YVvCEI9fIt zRwq8P%y?Sb3v-aPzlAdxVl8tx+iytAMM?!TbM5KkWUUUnlblww)n+ju(&*;1>Mp#s z-kL7CWmA*8!YSaCPr!+?^EU0d00V_d+Q*~zOek$;%hzMoqV0XKlRkf6Dq^u}&Mo9N z_FuQP9{r|MtvfTfrC`M^>U(=cxawz_z=!Y`8vQ;#zlRaxPEUoIKHrYuG<7=j=@}c? zJOC;^ozs3Ibrh{xe<|F!v+ki$LL~6uhSH*o@|~W#4qt(sxcS2SrlY3?xX%Dx7eTy6 z(2Nr*!1rVd6u^x(Ih6pXn8yJsuXDGXSt3}!8bC<@WUnrI%%2#>FO_q~*vmN03$Wke za)dX^pdAR3_fiCC{heIh)Nr&6T-cADHl>WN=g-ODMhC9FJp!--MQw?!joVU^CYJsw zM;5>3w(rlf5N3y&v#Y{*9sD=jW;c8l@|r0oz?0DrpD||E9gi!yda3sbD4$ex3doeE*48C z7j2^pB}mED)r1A+wZ}(nwF=d~1zh(0vU&2g{qx;jkHgKivFA0;Q{huw)3|TRSR@lp zLA!({yS~WR^6WC@tLFV(>9?j@ZWvgae@G_eeY(2%iFRgb?V)1par+dNlPU2Fj&fb| zOPH$Jw!c4W)7KQ%Yh^F_`rsbqI_(@a5{PF>k}3d{l7uei34QQcWW!e@00`F7kT@FA z(g+VDBbQV<1tSX|Y#Rz1H?8lhCCgzEFk^gY9ZNUz-H(oDHA#ZLSg;td_ROAmZ`oSy ziFeslFroGP3q^>E7fRh==M14`ADoI@%7OwTU5XZ0dPO#9D#`o@5a z^DTtsHRY#wHoRZDK0-?(w0Ygd5sPPZ{jiP-hW-F?nm+O6Us`?QI3X{Zi(cviGQ1mg zyNwiN*Pz)Br$k2gF-H<*Xl4A6x{BEP>Y|FN(fPsO*oqK!M z)A;*lfw7*9>(?dqt~9W#;ZjwngVenk<%cPdm2=*)(4$BX{v===GzmZzL8ru@i zBfqn&=)Y683_A1EhQEvAv9?lKIf1*9@529Xh~$H z6WfQoic#66)mzAN-yT_mj7mux{{Ts@^@^PSILXkqDRL*(29k1Qmk;Zv-t?i%a8IfU z@{sqLzJS?in9jgSTvPI4Bld=UUIn}l7r&SU0B3~PLSa6)jfX9CSJKa&?3jU z9F}lLQ~mU;CJ>FjOK%KypC5$q)V*|XUc2UTO5GBiaCqr7)@Xd<8NR30p+P4_`OyE# zdX%#1k9Sd4M&gUFYT)f8oQ~F*DC1LPILa7b{KqYE5K1TZn6ut@Yp1LpkJ<7D>3mfc zW6h1YjA#xog<6hoV@%)botZi>jyCnEw7X*4z$~+~?dp{5OH=p7Q*HYbA-9)L?Ql=p zT*Qu$I|42?-L!G6Q(Y2LH#XW>yyM|KP6hLK8K(k1QNH<`hTGmu`?$;kO13d0805OF zMe6#!QrDO4bV@g2Qt28G0D&+`LVt>L{E)=v?w8B`9XK&y$XIw@o!V$o5Rb0nRnt+D2F3<>QbQi_~NXle_fd$IY)9#P8DE?d!*Pe3Gs%tT&$7wxv$K zNl3vmU%BDWl}dGK;wJPG*pTyj*BoG}zoR{(13>OHYgb`DD(I#>&-G=)=8mx!s?OJJ z0r}RKbtk;%L&H{Q&xbI)V!yd=yy7rlA{1vsHIOxfSU*$iZxx$BnIqy!{Mz;WD1qUl z@)3x+KLkApJ1HK<1mtp)WC;Z(1wQ#3kgMH&Sh5tY=lcl(%Q3|G{m*=2R-S$KZ>rt{ zgqM3IG-hwn{W)ESOjQFpF9kZi8CSzUQ)QOwnU%DdNJ-NFNdX~u?vJT$@Z3fr zmlC+%3|3`1C``>w{OL(f{Z7ggUA7n7aO8TNFTfpOOmQY!>V_f?%lxP3MJ4^`=Z|al+GsQy_T-`9gWz9yyo`&@@9_BO!~P`GG2f9i*c*(D z4ruR3xPz5b69qXO?lL!~ANmY!ma;amHmsVWISv`x<@djLjXg9a%8gQ?O5{2}Ir#Ea zlPUl9O(tu$EN&%grpfC98N1Q5(@vQmVB+)^y4e6)$$CI3mzAqNg>5)kK>}69)`P`2DN%8*CzNS8) zgM5qgrjh}llMDd%mcLq+4b=lXnXU^Dp|+!_Zx4@dvDOlOdHjHbisBp-xh#$DwA{ zjqsz0-=UZlc)#d*XwJ=#ySCy9D2q#+{lhosw?0?6_4NfaeW87_{N~Y~35CsUoTty^ zy3JR)MyCybEfmdZ0ZPvwu>pKXQPGBe(+i70$qv!Y%_0~tD$%>-moMbdd@x=CSVVKC zRGTBQ2A|#lvD8m7vxt!SruJQMbP{{k^P+01dL}>;712fW(CH(w@@3pP%TZ{#X~Jbz zQSx}~RkUdA4Gi2}bsO0_4ByVXKCDisx;k|?66n4+6$luGT33CU_+)7p1P3axEh+3j z@V-6ndx4xfL6W`$B6;AWUn6{4{b3F1-Vz5svg)m$BSc67ug-lHcj#)pm~)KMUA?=P zLG-jY0CNDK9wgW!1+VL|soAKsD)VW4@*aA2x*JT!aJq{L{j$hMm$8mdVkl@oQOfd; zK`dbFv}|Cxn9IwfmWX}YXnuuIs6(uwGSIHHp?M#-XMWchh7$FodMEC-l)}^>#^;$) zcJXdzw+qP8onj3PJsbf5^zoTTLBDT-^X_Yt6tu)=XV6|QS$Dq3sF1XhAilOd6>3EU zhi~7lG8`x6?dunoTJ)nnS*W4vXvAOac+VgdKwBD0w-vND1faR*tPXP%{d`MeUAZ61 z9a$MIvXivvD6(@Gx_aq_3|#ex@}6`}v%0}Y%XNDUI75>OP1*hOLF#^6Z5`@<#08c* zy#=3e#QG<^`}*8oc2+VDM?4GV8m@na;-&L>>I(pW^4^BnnQPT`C%QyWkc}pR1iYS} z;~TdVY)K~MTQkuL@z5BR&^c)X?u`9aWp5r>pRcyo`_r!;i;Hdznnja_ZmjA_ApxhoG2|rLxGu=Rw=L9BR z>C`3v2F6lBt&UsaO3T~m&!?SlqkpXNJPTZODiBG_a-B0JDaME-%VnN@fNEo-n z)CZm0VS2uJz^a`A@t5_`=XLC=VOgAO?qO&^H}}9D5LK6x$Dw1z(Cx^v;-K4$itiYn z(2Ejp@Z`0E$01&FGbA4K@llesYw=NY=Rp0<ZunP7LC% zY^PLPA?foP>i2iL>*0a@R}vQ|VYU(lM|r<*Sxeu#FYTfUKt59RqQbKG(?FhTHrM+) zX=|X7v^C?1iLtN8_9*0NxFAFKlA^$|sIF||Y2N)}fC%<^05fZ-ed}u)dZO=S#s1FQ zp?}Tp&n|ekdn#cMR|Q3?yJ|}h3v*35FA0+bjVIl0w1hWivXK%S#%sex8Wobg;95J^ zv87@VGhUa>e)O2Q)8{GSY8NhT37{T^j>gqV36SjpK$MuQXJX_CUkygAcu8vbKpM?D;yGCOtl!o8QA!81&9-hB|nzhtD$l zt|o0=4XF5EBaMi5H& zUh`iM`zf)90GSfvtTbA(J|6qxIF6~z&}@3-~SU98Cb z#jd&rcj#uJITP%wz=g#k=^4W%yxk&ySrmyL{jy;6+}{@$0gN)jhCBJ zJL3t57s~WW;*Y(lM*`tjL`SAUb<3McC5H4hVX8IE$o0y=)3yBiox089`khY|Oi1N` z!pq|-A;4KH&VIbuK&9xcmo**{EPNid1+0H&sTNAy#s zM)`(@Xx&Mvc7q#apxOWw10OsqFJ@QY7ry}r>iiyS$25jDoYHp)W%$OtE=4oRf8#cW zUnF&ibvgZ8!9zLj>iuOk#@@rVzunJ&`H}zftOIEY|CX&{R%UnkM@Y}Ctoinz{|u_XcmD6?e-`-90{>ayKMVY4f&VP< z|D6SLuE*$U|MYsoKfA7D{L>=lraQ?0qel=NgS0!u=#e(}Ti`!naaYiHH#c*)5Pj`x z0sO+?<#{5)$-~R}gjf3skLVL#Q9dCKo+qL_JVeq8#{Xjn2PbnIOYi^l4nB03^S}<^ zno)_ cBL9^036~I9$kwJF_&bKOg1UUM?8}h<1> ${out}/nix-support/hydra-build-products ; \ - done diff --git a/docs/pool-ranking/flake.nix b/docs/pool-ranking/flake.nix deleted file mode 100644 index 61645fffb2d..00000000000 --- a/docs/pool-ranking/flake.nix +++ /dev/null @@ -1,66 +0,0 @@ -{ - outputs = inputs: { - packages = - builtins.mapAttrs (_: {nixpkgs, ...}: { - default = with nixpkgs; - buildLatex { - name = "pool-ranking"; - texFiles = ["pool-ranking"]; - meta = with lib; { - description = "Stake Pool Ranking in Cardano"; - license = licenses.asl20; - platforms = platforms.linux; - }; - src = filterLatex ./.; - - texInputs = { - inherit - (texlive) - scheme-small - # libraries - - stmaryrd - lm-math - amsmath - extarrows - cleveref - semantic - xcolor - xstring - paralist - cm-super - tocloft - # bclogo and dependencies - - bclogo - mdframed - xkeyval - etoolbox - needspace - # font libraries `mathpazo` seems to depend on palatino, but it isn't pulled. - - mathpazo - palatino - microtype - # libraries for marginal notes - - xargs - todonotes - # Tikz - - pgf - tikz-cd - # build tools - - latexmk - # Referencing - - zref - ; - }; - buildInputs = [gitMinimal]; - }; - }) - (inputs.main or (import ../../nix/flake-compat.nix).defaultNix).legacyPackages; - }; -} diff --git a/docs/pool-ranking/habbrv.bst b/docs/pool-ranking/habbrv.bst deleted file mode 100644 index 44081672c77..00000000000 --- a/docs/pool-ranking/habbrv.bst +++ /dev/null @@ -1,1376 +0,0 @@ -% 2017-11-13 Gautam Iyer: Modified habbrv.bst to use abbrv style author names -% (e.g. G. Iyer), and alpha style citations (e.g. Iye17). -% -% halpha: adds eprint field (www-admin@xxx.lanl.gov) -% an extension of: -% BibTeX standard bibliography style `alpha' - % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09. - % Copyright (C) 1985, all rights reserved. - % Copying of this file is authorized only if either - % (1) you make absolutely no changes to your copy, including name, or - % (2) if you do make changes, you name it something other than - % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst. - % This restriction helps ensure that all standard styles are identical. - % The file btxbst.doc has the documentation for this style. - -ENTRY - { address - author - booktitle - label - chapter - edition - editor - eprint - howpublished - institution - journal - key - month - note - number - organization - pages - publisher - school - series - title - type - url - doi - volume - year - } - {} - { cite.label extra.label sort.label } - -INTEGERS { output.state before.all mid.sentence after.sentence after.block } - -FUNCTION {init.state.consts} -{ #0 'before.all := - #1 'mid.sentence := - #2 'after.sentence := - #3 'after.block := -} - -STRINGS { s t } - -FUNCTION {output.nonnull} -{ 's := - output.state mid.sentence = - { ", " * write$ } - { output.state after.block = - { add.period$ write$ - newline$ - "\newblock " write$ - } - { output.state before.all = - 'write$ - { add.period$ " " * write$ } - if$ - } - if$ - mid.sentence 'output.state := - } - if$ - s -} - -FUNCTION {output} -{ duplicate$ empty$ - 'pop$ - 'output.nonnull - if$ -} - -FUNCTION {output.check} -{ 't := - duplicate$ empty$ - { pop$ "empty " t * " in " * cite$ * warning$ } - 'output.nonnull - if$ -} - -FUNCTION {output.bibitem} -{ newline$ - "\bibitem[" write$ - cite.label write$ - "]{" write$ - cite$ write$ - "}" write$ - newline$ - "" - before.all 'output.state := -} - -FUNCTION {fin.entry} -{ add.period$ - write$ - newline$ -} - -FUNCTION {new.block} -{ output.state before.all = - 'skip$ - { after.block 'output.state := } - if$ -} - -FUNCTION {new.sentence} -{ output.state after.block = - 'skip$ - { output.state before.all = - 'skip$ - { after.sentence 'output.state := } - if$ - } - if$ -} - -FUNCTION {not} -{ { #0 } - { #1 } - if$ -} - -FUNCTION {and} -{ 'skip$ - { pop$ #0 } - if$ -} - -FUNCTION {or} -{ { pop$ #1 } - 'skip$ - if$ -} - -FUNCTION {new.block.checka} -{ empty$ - 'skip$ - 'new.block - if$ -} - -FUNCTION {new.block.checkb} -{ empty$ - swap$ empty$ - and - 'skip$ - 'new.block - if$ -} - -FUNCTION {new.sentence.checka} -{ empty$ - 'skip$ - 'new.sentence - if$ -} - -FUNCTION {new.sentence.checkb} -{ empty$ - swap$ empty$ - and - 'skip$ - 'new.sentence - if$ -} - -FUNCTION {field.or.null} -{ duplicate$ empty$ - { pop$ "" } - 'skip$ - if$ -} - -FUNCTION {emphasize} -{ duplicate$ empty$ - { pop$ "" } - { "{\em " swap$ * "}" * } - if$ -} - -INTEGERS { nameptr namesleft numnames } - -FUNCTION {format.names} -{ 's := - #1 'nameptr := - s num.names$ 'numnames := - numnames 'namesleft := - { namesleft #0 > } - { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't := - nameptr #1 > - { namesleft #1 > - { ", " * t * } - { numnames #2 > - { "," * } - 'skip$ - if$ - t "others" = - { " et~al." * } - { " and " * t * } - if$ - } - if$ - } - 't - if$ - nameptr #1 + 'nameptr := - namesleft #1 - 'namesleft := - } - while$ -} - -FUNCTION {format.authors} -{ author empty$ - { "" } - { author format.names } - if$ -} - -FUNCTION {format.editors} -{ editor empty$ - { "" } - { editor format.names - editor num.names$ #1 > - { ", editors" * } - { ", editor" * } - if$ - } - if$ -} - -FUNCTION {format.title} -{ title empty$ - { "" } - { title "t" change.case$ } - if$ -} - -FUNCTION {format.eprint} -{ eprint empty$ - { "" } - { "\burlalt{" eprint * "}{http://arxiv.org/abs/" * eprint * "}" * } - if$ -} - -FUNCTION {format.url} -{ doi empty$ not - url empty$ - or - { "" } - { "\urlprefix\url{" url * "}" * } - if$ -} - -FUNCTION {format.doi} -{ doi empty$ - { "" } - { "\doi{" doi * "}" * } - if$ -} - - -FUNCTION {n.dashify} -{ 't := - "" - { t empty$ not } - { t #1 #1 substring$ "-" = - { t #1 #2 substring$ "--" = not - { "--" * - t #2 global.max$ substring$ 't := - } - { { t #1 #1 substring$ "-" = } - { "-" * - t #2 global.max$ substring$ 't := - } - while$ - } - if$ - } - { t #1 #1 substring$ * - t #2 global.max$ substring$ 't := - } - if$ - } - while$ -} - -FUNCTION {format.date} -{ year empty$ - { month empty$ - { "" } - { "there's a month but no year in " cite$ * warning$ - month - } - if$ - } - { month empty$ - 'year - { month " " * year * } - if$ - } - if$ -} - -FUNCTION {format.btitle} -{ title emphasize -} - -FUNCTION {tie.or.space.connect} -{ duplicate$ text.length$ #3 < - { "~" } - { " " } - if$ - swap$ * * -} - -FUNCTION {either.or.check} -{ empty$ - 'pop$ - { "can't use both " swap$ * " fields in " * cite$ * warning$ } - if$ -} - -FUNCTION {format.bvolume} -{ volume empty$ - { "" } - { "volume" volume tie.or.space.connect - series empty$ - 'skip$ - { " of " * series emphasize * } - if$ - "volume and number" number either.or.check - } - if$ -} - -FUNCTION {format.number.series} -{ volume empty$ - { number empty$ - { series field.or.null } - { output.state mid.sentence = - { "number" } - { "Number" } - if$ - number tie.or.space.connect - series empty$ - { "there's a number but no series in " cite$ * warning$ } - { " in " * series * } - if$ - } - if$ - } - { "" } - if$ -} - -FUNCTION {format.edition} -{ edition empty$ - { "" } - { output.state mid.sentence = - { edition "l" change.case$ " edition" * } - { edition "t" change.case$ " edition" * } - if$ - } - if$ -} - -INTEGERS { multiresult } - -FUNCTION {multi.page.check} -{ 't := - #0 'multiresult := - { multiresult not - t empty$ not - and - } - { t #1 #1 substring$ - duplicate$ "-" = - swap$ duplicate$ "," = - swap$ "+" = - or or - { #1 'multiresult := } - { t #2 global.max$ substring$ 't := } - if$ - } - while$ - multiresult -} - -FUNCTION {format.pages} -{ pages empty$ - { "" } - { pages multi.page.check - { "pages" pages n.dashify tie.or.space.connect } - { "page" pages tie.or.space.connect } - if$ - } - if$ -} - -FUNCTION {format.vol.num.pages} -{ volume field.or.null - number empty$ - 'skip$ - { "(" number * ")" * * - volume empty$ - { "there's a number but no volume in " cite$ * warning$ } - 'skip$ - if$ - } - if$ - pages empty$ - 'skip$ - { duplicate$ empty$ - { pop$ format.pages } - { ":" * pages n.dashify * } - if$ - } - if$ -} - -FUNCTION {format.chapter.pages} -{ chapter empty$ - 'format.pages - { type empty$ - { "chapter" } - { type "l" change.case$ } - if$ - chapter tie.or.space.connect - pages empty$ - 'skip$ - { ", " * format.pages * } - if$ - } - if$ -} - -FUNCTION {format.in.ed.booktitle} -{ booktitle empty$ - { "" } - { editor empty$ - { "In " booktitle emphasize * } - { "In " format.editors * ", " * booktitle emphasize * } - if$ - } - if$ -} - -FUNCTION {empty.misc.check} -{ author empty$ title empty$ howpublished empty$ - month empty$ year empty$ note empty$ - and and and and and - key empty$ not and - { "all relevant fields are empty in " cite$ * warning$ } - 'skip$ - if$ -} - -FUNCTION {format.thesis.type} -{ type empty$ - 'skip$ - { pop$ - type "t" change.case$ - } - if$ -} - -FUNCTION {format.tr.number} -{ type empty$ - { "Technical Report" } - 'type - if$ - number empty$ - { "t" change.case$ } - { number tie.or.space.connect } - if$ -} - -FUNCTION {format.article.crossref} -{ key empty$ - { journal empty$ - { "need key or journal for " cite$ * " to crossref " * crossref * - warning$ - "" - } - { "In {\em " journal * "\/}" * } - if$ - } - { "In " key * } - if$ - " \cite{" * crossref * "}" * -} - -FUNCTION {format.crossref.editor} -{ editor #1 "{vv~}{ll}" format.name$ - editor num.names$ duplicate$ - #2 > - { pop$ " et~al." * } - { #2 < - 'skip$ - { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = - { " et~al." * } - { " and " * editor #2 "{vv~}{ll}" format.name$ * } - if$ - } - if$ - } - if$ -} - -FUNCTION {format.book.crossref} -{ volume empty$ - { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ - "In " - } - { "Volume" volume tie.or.space.connect - " of " * - } - if$ - editor empty$ - editor field.or.null author field.or.null = - or - { key empty$ - { series empty$ - { "need editor, key, or series for " cite$ * " to crossref " * - crossref * warning$ - "" * - } - { "{\em " * series * "\/}" * } - if$ - } - { key * } - if$ - } - { format.crossref.editor * } - if$ - " \cite{" * crossref * "}" * -} - -FUNCTION {format.incoll.inproc.crossref} -{ editor empty$ - editor field.or.null author field.or.null = - or - { key empty$ - { booktitle empty$ - { "need editor, key, or booktitle for " cite$ * " to crossref " * - crossref * warning$ - "" - } - { "In {\em " booktitle * "\/}" * } - if$ - } - { "In " key * } - if$ - } - { "In " format.crossref.editor * } - if$ - " \cite{" * crossref * "}" * -} - -FUNCTION {article} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - crossref missing$ - { journal emphasize "journal" output.check - format.vol.num.pages output - format.date "year" output.check - } - { format.article.crossref output.nonnull - format.pages output - } - if$ - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {book} -{ output.bibitem - author empty$ - { format.editors "author and editor" output.check } - { format.authors output.nonnull - crossref missing$ - { "author and editor" editor either.or.check } - 'skip$ - if$ - } - if$ - new.block - format.btitle "title" output.check - crossref missing$ - { format.bvolume output - new.block - format.number.series output - new.sentence - publisher "publisher" output.check - address output - } - { new.block - format.book.crossref output.nonnull - } - if$ - format.edition output - format.date "year" output.check - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {booklet} -{ output.bibitem - format.authors output - new.block - format.title "title" output.check - howpublished address new.block.checkb - howpublished output - address output - format.date output - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {inbook} -{ output.bibitem - author empty$ - { format.editors "author and editor" output.check } - { format.authors output.nonnull - crossref missing$ - { "author and editor" editor either.or.check } - 'skip$ - if$ - } - if$ - new.block - format.btitle "title" output.check - crossref missing$ - { format.bvolume output - format.chapter.pages "chapter and pages" output.check - new.block - format.number.series output - new.sentence - publisher "publisher" output.check - address output - } - { format.chapter.pages "chapter and pages" output.check - new.block - format.book.crossref output.nonnull - } - if$ - format.edition output - format.date "year" output.check - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {incollection} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - crossref missing$ - { format.in.ed.booktitle "booktitle" output.check - format.bvolume output - format.number.series output - format.chapter.pages output - new.sentence - publisher "publisher" output.check - address output - format.edition output - format.date "year" output.check - } - { format.incoll.inproc.crossref output.nonnull - format.chapter.pages output - } - if$ - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {inproceedings} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - crossref missing$ - { format.in.ed.booktitle "booktitle" output.check - format.bvolume output - format.number.series output - format.pages output - address empty$ - { organization publisher new.sentence.checkb - organization output - publisher output - format.date "year" output.check - } - { address output.nonnull - format.date "year" output.check - new.sentence - organization output - publisher output - } - if$ - } - { format.incoll.inproc.crossref output.nonnull - format.pages output - } - if$ - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {conference} { inproceedings } - -FUNCTION {manual} -{ output.bibitem - author empty$ - { organization empty$ - 'skip$ - { organization output.nonnull - address output - } - if$ - } - { format.authors output.nonnull } - if$ - new.block - format.btitle "title" output.check - author empty$ - { organization empty$ - { address new.block.checka - address output - } - 'skip$ - if$ - } - { organization address new.block.checkb - organization output - address output - } - if$ - format.edition output - format.date output - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {mastersthesis} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - "Master's thesis" format.thesis.type output.nonnull - school "school" output.check - address output - format.date "year" output.check - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {misc} -{ output.bibitem - format.authors output - title howpublished new.block.checkb - format.title output - howpublished new.block.checka - howpublished output - format.date output - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry - empty.misc.check -} - -FUNCTION {phdthesis} -{ output.bibitem - format.authors "author" output.check - new.block - format.btitle "title" output.check - new.block - "PhD thesis" format.thesis.type output.nonnull - school "school" output.check - address output - format.date "year" output.check - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {proceedings} -{ output.bibitem - editor empty$ - { organization output } - { format.editors output.nonnull } - if$ - new.block - format.btitle "title" output.check - format.bvolume output - format.number.series output - address empty$ - { editor empty$ - { publisher new.sentence.checka } - { organization publisher new.sentence.checkb - organization output - } - if$ - publisher output - format.date "year" output.check - } - { address output.nonnull - format.date "year" output.check - new.sentence - editor empty$ - 'skip$ - { organization output } - if$ - publisher output - } - if$ - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {techreport} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - format.tr.number output.nonnull - institution "institution" output.check - address output - format.date "year" output.check - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {unpublished} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - note "note" output.check - format.date output - format.eprint output - format.doi output - new.block - format.url output - fin.entry -} - -FUNCTION {default.type} { misc } - -MACRO {jan} {"Jan."} - -MACRO {feb} {"Feb."} - -MACRO {mar} {"Mar."} - -MACRO {apr} {"Apr."} - -MACRO {may} {"May"} - -MACRO {jun} {"June"} - -MACRO {jul} {"July"} - -MACRO {aug} {"Aug."} - -MACRO {sep} {"Sept."} - -MACRO {oct} {"Oct."} - -MACRO {nov} {"Nov."} - -MACRO {dec} {"Dec."} - -MACRO {acmcs} {"ACM Comput. Surv."} - -MACRO {acta} {"Acta Inf."} - -MACRO {cacm} {"Commun. ACM"} - -MACRO {ibmjrd} {"IBM J. Res. Dev."} - -MACRO {ibmsj} {"IBM Syst.~J."} - -MACRO {ieeese} {"IEEE Trans. Softw. Eng."} - -MACRO {ieeetc} {"IEEE Trans. Comput."} - -MACRO {ieeetcad} - {"IEEE Trans. Comput.-Aided Design Integrated Circuits"} - -MACRO {ipl} {"Inf. Process. Lett."} - -MACRO {jacm} {"J.~ACM"} - -MACRO {jcss} {"J.~Comput. Syst. Sci."} - -MACRO {scp} {"Sci. Comput. Programming"} - -MACRO {sicomp} {"SIAM J. Comput."} - -MACRO {tocs} {"ACM Trans. Comput. Syst."} - -MACRO {tods} {"ACM Trans. Database Syst."} - -MACRO {tog} {"ACM Trans. Gr."} - -MACRO {toms} {"ACM Trans. Math. Softw."} - -MACRO {toois} {"ACM Trans. Office Inf. Syst."} - -MACRO {toplas} {"ACM Trans. Prog. Lang. Syst."} - -MACRO {tcs} {"Theoretical Comput. Sci."} - -READ - -FUNCTION {sortify} -{ purify$ - "l" change.case$ -} - -INTEGERS { len } - -FUNCTION {chop.word} -{ 's := - 'len := - s #1 len substring$ = - { s len #1 + global.max$ substring$ } - 's - if$ -} - -INTEGERS { et.al.char.used } - -FUNCTION {initialize.et.al.char.used} -{ #0 'et.al.char.used := -} - -EXECUTE {initialize.et.al.char.used} - -FUNCTION {format.lab.names} -{ 's := - s num.names$ 'numnames := - numnames #1 > - { numnames #4 > - { #3 'namesleft := } - { numnames 'namesleft := } - if$ - #1 'nameptr := - "" - { namesleft #0 > } - { nameptr numnames = - { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" = - { "{\etalchar{+}}" * - #1 'et.al.char.used := - } - { s nameptr "{v{}}{l{}}" format.name$ * } - if$ - } - { s nameptr "{v{}}{l{}}" format.name$ * } - if$ - nameptr #1 + 'nameptr := - namesleft #1 - 'namesleft := - } - while$ - numnames #4 > - { "{\etalchar{+}}" * - #1 'et.al.char.used := - } - 'skip$ - if$ - } - { s #1 "{v{}}{l{}}" format.name$ - duplicate$ text.length$ #2 < - { pop$ s #1 "{ll}" format.name$ #3 text.prefix$ } - 'skip$ - if$ - } - if$ -} - -FUNCTION {author.key.label} -{ author empty$ - { key empty$ - { cite$ #1 #3 substring$ } - { key #3 text.prefix$ } - if$ - } - { author format.lab.names } - if$ -} - -FUNCTION {author.editor.key.label} -{ author empty$ - { editor empty$ - { key empty$ - { cite$ #1 #3 substring$ } - { key #3 text.prefix$ } - if$ - } - { editor format.lab.names } - if$ - } - { author format.lab.names } - if$ -} - -FUNCTION {author.key.organization.label} -{ author empty$ - { key empty$ - { organization empty$ - { cite$ #1 #3 substring$ } - { "The " #4 organization chop.word #3 text.prefix$ } - if$ - } - { key #3 text.prefix$ } - if$ - } - { author format.lab.names } - if$ -} - -FUNCTION {editor.key.organization.label} -{ editor empty$ - { key empty$ - { organization empty$ - { cite$ #1 #3 substring$ } - { "The " #4 organization chop.word #3 text.prefix$ } - if$ - } - { key #3 text.prefix$ } - if$ - } - { editor format.lab.names } - if$ -} - -FUNCTION {calc.label} -{ label empty$ - { type$ "book" = - type$ "inbook" = - or - 'author.editor.key.label - { type$ "proceedings" = - 'editor.key.organization.label - { type$ "manual" = - 'author.key.organization.label - 'author.key.label - if$ - } - if$ - } - if$ - duplicate$ - year field.or.null purify$ #-1 #2 substring$ - * - } - { label duplicate$ } - if$ - 'cite.label := - year field.or.null purify$ #-1 #4 substring$ - * - sortify 'sort.label := -} - -FUNCTION {sort.format.names} -{ 's := - #1 'nameptr := - "" - s num.names$ 'numnames := - numnames 'namesleft := - { namesleft #0 > } - { nameptr #1 > - { " " * } - 'skip$ - if$ - s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := - nameptr numnames = t "others" = and - { "et al" * } - { t sortify * } - if$ - nameptr #1 + 'nameptr := - namesleft #1 - 'namesleft := - } - while$ -} - -FUNCTION {sort.format.title} -{ 't := - "A " #2 - "An " #3 - "The " #4 t chop.word - chop.word - chop.word - sortify - #1 global.max$ substring$ -} - -FUNCTION {author.sort} -{ author empty$ - { key empty$ - { "to sort, need author or key in " cite$ * warning$ - "" - } - { key sortify } - if$ - } - { author sort.format.names } - if$ -} - -FUNCTION {author.editor.sort} -{ author empty$ - { editor empty$ - { key empty$ - { "to sort, need author, editor, or key in " cite$ * warning$ - "" - } - { key sortify } - if$ - } - { editor sort.format.names } - if$ - } - { author sort.format.names } - if$ -} - -FUNCTION {author.organization.sort} -{ author empty$ - { organization empty$ - { key empty$ - { "to sort, need author, organization, or key in " cite$ * warning$ - "" - } - { key sortify } - if$ - } - { "The " #4 organization chop.word sortify } - if$ - } - { author sort.format.names } - if$ -} - -FUNCTION {editor.organization.sort} -{ editor empty$ - { organization empty$ - { key empty$ - { "to sort, need editor, organization, or key in " cite$ * warning$ - "" - } - { key sortify } - if$ - } - { "The " #4 organization chop.word sortify } - if$ - } - { editor sort.format.names } - if$ -} - -FUNCTION {presort} -{ calc.label - sort.label - " " - * - type$ "book" = - type$ "inbook" = - or - 'author.editor.sort - { type$ "proceedings" = - 'editor.organization.sort - { type$ "manual" = - 'author.organization.sort - 'author.sort - if$ - } - if$ - } - if$ - * - " " - * - year field.or.null sortify - * - " " - * - title field.or.null - sort.format.title - * - #1 entry.max$ substring$ - 'sort.key$ := -} - -ITERATE {presort} - -SORT - -STRINGS { longest.label last.sort.label next.extra } - -INTEGERS { longest.label.width last.extra.num } - -FUNCTION {initialize.longest.label} -{ "" 'longest.label := - #0 int.to.chr$ 'last.sort.label := - "" 'next.extra := - #0 'longest.label.width := - #0 'last.extra.num := -} - -FUNCTION {forward.pass} -{ last.sort.label sort.label = - { last.extra.num #1 + 'last.extra.num := - last.extra.num int.to.chr$ 'extra.label := - } - { "a" chr.to.int$ 'last.extra.num := - "" 'extra.label := - sort.label 'last.sort.label := - } - if$ -} - -FUNCTION {reverse.pass} -{ next.extra "b" = - { "a" 'extra.label := } - 'skip$ - if$ - cite.label extra.label * 'cite.label := - cite.label width$ longest.label.width > - { cite.label 'longest.label := - cite.label width$ 'longest.label.width := - } - 'skip$ - if$ - extra.label 'next.extra := -} - -EXECUTE {initialize.longest.label} - -ITERATE {forward.pass} - -REVERSE {reverse.pass} - -FUNCTION {begin.bib} -{ et.al.char.used - { "\newcommand{\etalchar}[1]{$^{#1}$}" write$ newline$ } - 'skip$ - if$ - preamble$ empty$ - 'skip$ - { preamble$ write$ newline$ } - if$ - "\begin{thebibliography}{" longest.label * "}" * write$ newline$ - "\expandafter\ifx\csname url\endcsname\relax" - write$ newline$ - " \def\url#1{\texttt{#1}}\fi" - write$ newline$ - "\expandafter\ifx\csname doi\endcsname\relax" - write$ newline$ - " \def\doi#1{\burlalt{doi:#1}{http://dx.doi.org/#1}}\fi" - write$ newline$ - "\expandafter\ifx\csname urlprefix\endcsname\relax\def\urlprefix{URL }\fi" - write$ newline$ - "\expandafter\ifx\csname href\endcsname\relax" - write$ newline$ - " \def\href#1#2{#2}\fi" - write$ newline$ - "\expandafter\ifx\csname burlalt\endcsname\relax" - write$ newline$ - " \def\burlalt#1#2{\href{#2}{#1}}\fi" - write$ newline$ -} - -EXECUTE {begin.bib} - -EXECUTE {init.state.consts} - -ITERATE {call.type$} - -FUNCTION {end.bib} -{ newline$ - "\end{thebibliography}" write$ newline$ -} - -EXECUTE {end.bib} diff --git a/docs/pool-ranking/pool-ranking.tex b/docs/pool-ranking/pool-ranking.tex deleted file mode 100644 index 9f9411dcbbf..00000000000 --- a/docs/pool-ranking/pool-ranking.tex +++ /dev/null @@ -1,301 +0,0 @@ -\documentclass[11pt,a4paper,dvipsnames,twosided]{article} - -\usepackage{amsmath} -\usepackage[unicode=true,pdftex,pdfa,colorlinks=true]{hyperref} -\usepackage{xcolor} -\usepackage{todonotes} - -\newcommand\pbar{\overline{p}} - -\begin{document} - -\title{Stake Pool Ranking in Cardano} - -\author{Alexander Byaly \\ {\small \texttt{alexander.byaly@iohk.io}} \\ - \and Jared Corduan \\ {\small \texttt{jared.corduan@iohk.io}}} - -%\date{} - -\hypersetup{ - pdftitle={Stake Pool Ranking in Cardano}, - breaklinks=true, - bookmarks=true, - colorlinks=false, - linkcolor={blue}, - citecolor={blue}, - urlcolor={blue}, - linkbordercolor={white}, - citebordercolor={white}, - urlbordercolor={white} -} - -\setlength{\parindent}{0pt} -\setlength{\parskip}{12pt plus 3pt minus 2pt} - -\maketitle - -\section{Introduction} - -The purpose of the stake pool ranking algorithm is to provide a systematic and unique ordering for stake pools, -based on the expected long-term rewards that each stake pool will produce. -The pool ranking is provided to users (wallets, people who own ADA, etc.), and can be used as a single -metric to guide delegation decisions. -The ranking is based upon past performance but should be a useful predictor of future performance. - -An obvious, but na\"{i}ve, approach to the ranking problem would order pools based on the rewards that are -currently being paid out to their delegators. There are, however, a number of problems with this approach. - -\begin{enumerate} - \item - The na\"{i}ve approach is \emph{short-sighted}, in the sense that it does not take into - account the rewards that a newly formed stake pool would yield when it reaches saturation (\cite{bkks2018} describes this in detail). - The specific relationship to the Cardano design is explained in the IOHK delegation design document \cite[Section 5.6]{delegation_design}. - \item - A stake pool will sometimes have the opportunity to produce blocks, - but fails to do so due to issues such as a poor network connection or untimely downtime. The rate at - which a pool uses their opportunities to make blocks, which we will call its \emph{hit rate}, affects rewards. - It needs to be taken into account. -\end{enumerate} - -Our aim with the pool ranking algorithm is to address all these concerns. - -\section{Hit Rate} - -As described above, the \emph{hit rate} for some time period $T$ is the ratio of expected to actual blocks -that the pool produces during that time period. - -$$ -\begin{array}{l} - \begin{array}{lclp{3in}} - Hit~Rate_T &=& B_{Produced,T} / B_{Leader,T} \\ - ~~ \textit{where} \\ - \end{array} -\\ -~~~~ - \begin{array}{lcp{3in}} - B_{Produced,T} &=& \text{The actual number of blocks that a pool}\\ - && \text{has produced in time T}\\ - B_{Leader,T} &=& \text{The number of blocks during time T}\\ - && \text{in a pool's private leader schedule} - \end{array} -\end{array} -$$ - -Note that the pool operator is the only one who knows $B_{Leader,T}$, -since only they have access to their internal VRF calculation. -Other actors can only estimate it using public knowledge of the -pool's relative stake and the number of blocks that it has produced. - -\subsection{Hit Rate Estimation} - -Each slot, a stake pool with relative (active) stake $\sigma_a$ has probability -\[ 1 - (1-f)^{\sigma_a} \] -of producing a block, where $f$ is the active slot coefficient. -We can use this to estimate the hit rate. -% -We represent such an estimate as a probability distribution on the interval $[0,1]$. - -After each epoch, we refine our estimate into a more accurate one as follows. -% -Assume that we can -observe all the blocks that a stake pool produces during an epoch, that we have a previous estimate of the blocks that -we expected to produce during this epoch, $w_e$; we know that the -epoch $e$ has a total of $E$ slots; the pool produces $n_e$ blocks; and we calculate that on a given slot -the chance that the pool is allowed to produce a block is $t_e$. -% -The \emph{likelihood function}, $L_e$, is then shown below, where $L_e(x)$ is the probability of producing exactly $n_e$ blocks, -and $S_e(x)$ is the probability that the pool produces a block at a given slot, under the assumption that the -\emph{hit rate}, $p$, is equal to $x$. - -\[ L_e(x) = \left( E \atop n_e \right) S_e(x)^{n_e} (1-S_e(x))^{E - n_e}, \] - -\[ -\begin{array}{rcl} - S_e(x) &=& P( \text{made block} | p = x) \\ - &=& t_e \cdot P( \text{made block} | p = x,~b) + (1-t_e) \cdot P( \text{made block} | p = x,~\neg~b) \\ - &=& t_ex + (1-t_e) \cdot 0 \\ - &=& t_ex \\ - \\ - b &=& \text{can make a block} -\end{array} -\] - -Our refined hit rate estimate is then $w_{e+1}(x) =w_e(x)L_e(x)$. - -This formula will generally not produce a proper proability distribution. The associated probability distribution is -$$q_e(x)=\frac{w_e(x)}{\int w_e(x)},$$ -which is the function used to construct rankings for epoch $e$. - -The data we store is the product -$$\mathcal{L}_e(x) = \prod_{i=1}^e L_i(x),$$ -with the initial prior distribution $w_0$ included at the time a ranking is produced. - -We have - -\begin{equation} - \label{post} - q_e(x) = \frac{w_0(x)\mathcal{L}_e(x)}{\int w_0(x)\mathcal{L}_e(x)}. -\end{equation} - -\subsection{Implementation} - -We approximate a \emph{probability density function}, $g$, using a sequence of sample points, - -\[ A(g) = \big(\ln(g(0.005)),~ \ln(g(0.015)),~ \ldots,~ \ln(g(0.995))\big). \] - -This allows us to use multiplication rather than exponentiation for most of our calculations. - -Because of the normalization step in Equation \eqref{post}, any scalar multiple of $g$ -will ultimately yield the same result. It follows that any constant shift of $A(g)$ will also yield the same result. -In order to reduce the magnitude of the numbers that we are dealing with, we therefore use the logarithmic normal form. -\footnote{There may be tradeoffs, such as the computational cost of logs, that we have not yet explored.} - -\[ A'(g) = \big(\ln(g(0.005)) - m,~ \ln(g(0.015)) - m,~ \ldots,~ \ln(g(0.995)) - m\big), \] -where $\ln$ is the \emph{natural logarithm} and $m$ is the minimal sample point. We use $g^i$ to denote the $i$'th term of $A'(g)$. -For each stake pool, we compute $A'(L_e)$, add it to $A'(\mathcal{L}_{e-1})$, and -normalize the result to approximate $A'(\mathcal{L}_e)$. - -To calculate the final probability distribution function that we need for pool ranking, we approximate Equation \eqref{post}. We use - -\[ q_e^i \approx \mathsf{exp}(w_0^i + \mathcal{L}_e^i) / S, \] -where -\[ S = \sum (0.01) \mathsf{exp}(w_0^i + \mathcal{L}_e^i). \] - -In the ranking calculation, we use the $j$'th percentile of this distribution for some $j$. -We do so by computing the minimal $i$ such that the sum of $[q_e^0,~\ldots,q_e^i]$ is at least $j$. -Then $i/100$ is the $j$'th percentile. - -Putting it all together, given some prior distribution, $w_0$, a percentile, $j$, and a cumulative likelihood approximation -$A'(\mathcal{L}_e)$, we estimate the hit rate to be $i/100$. - - -\subsection{Example} - -Assume that Alice's pool has been active for two epochs, -there are 432,000 slots per epoch, and the active slot coefficient is 0.05 -(these are the mainnet values at the time of writing). -\begin{itemize} -\item - During the first epoch (epoch 1), the relative stake was $0.001$ and 10 blocks were produced. -\item - During the second epoch (epoch 2), the relative stake was $0.01$ and 200 blocks were produced. -\end{itemize} -We calculate $\ln(L_1(x))$ for the first epoch as follows. -% -With relative stake $0.001$, the probability of being allowed to produce a block on -each slot is $t_1 = 1-(1-0.05)^{0.001},$ and $S_1(x)= t_1x$. -Since 10 blocks were produced, the real likelihood function is - -\[ L_1(x) = \left( 432,000 \atop 10 \right) (t_1x)^{10} (1-t_1x)^{431,990} \] - -and we will use -\[ -\begin{array}{rl} - \ell_1(x) &= \ln\left( (t_1x)^{10} (t_1x)^{431,990} \right) \\ - &= 10 \ln(t_1 x) + 431,990 \ln(1 - t_1 x) \\ -\end{array} -\] -to record information about Alice's pool's performance this epoch. -In particular, we record - -\[ A'(L_1) = [\ell_1(0.005)-m_1,~\ell_1(0.015)-m_1,~\ldots,~\ell_1(.995)-m_1] \] -where $m_1=\min\{\ell_1(0.005),\ldots,\ell_1(0.995)\}$ - -For the second epoch, -\[ -\begin{array}{rl} - t_2 &= 1-(1-0.05)^{0.01} \\ - \ell_2(x) &= 200 \ln(t_2 x) + 431,800 \ln(1 - t_2 x).\\ -\end{array} -\] -Then for the second epoch we store: -\[ A'(L_2) = [\ell_2(0.005)+\ell_1(0.005)-m_2,~\ldots,~\ell_2(.995)+\ell_1(.995)-m_2] \] -where $m_2=\min\{\ell_2(0.005)+\ell_1(0.005),\ldots,\ell_2(0.995)+\ell_1(0.995)\}$. - -\section{Ranking and Saturation} - -We now describe how the hit rate estimation can be used to calculate the stake pool ranking, -as described in \cite{bkks2018} and \cite[Section 5.6]{delegation_design}. -First we must turn the sampling of the likelihood functions into a concrete value. -Given a percentage, $z$, we will calculate the $z$'th percentile\footnote{At present we use the 10th percentile (i.e. $z=10\%$), but we ultimately aim for this to be user configurable.}. -For a given stake pool $P$, let $h_z$ denote the $z$'th percentile. -% -Following \cite[Section 5.6.1]{delegation_design}, -we can then compute the stake pool's rewards when it reaches \emph{saturation} (it has the optimal level of stake) using: -\[ - \tilde{f}(s, \pbar) := - \hat{f}(s,z_0,\pbar)= - \frac{\pbar R}{1 + a_0} - \cdot - \left(z_0 + \min(s,z_0)\cdot a_0\right). -\] - -where $\bar{p}$ is the \textit{apparent performance} of the stake pool, as defined in -\cite[Section 5.5.2]{delegation_design}. -We will substitute our estimate of the hit rate, $h_z$, for the apparent performance, $\bar{p}$, -Given a pool, $P$ with pledged owner stake \(s\), costs \(c\) and margin \(m\), -the \emph{desirability function} of \cite[Section 5.6.1]{delegation_design} becomes: -\[ - d(c, m, s, h_z) := - \left\{ - \begin{array}{ll} - \displaystyle 0 & - \text{if $\tilde{f}(s,h_z)\leq c$,} \\ - \displaystyle\left(\tilde{f}(s,h_z) - c\right)\cdot(1-m) & - \text{otherwise.} - \end{array} - \right. -\] -From here, we proceed exactly as in -\cite[Section 5.6.2]{delegation_design} and -\cite[Section 5.6.4]{delegation_design}. - -The desirability function above can be used to provide an overall ranking over stake pools, -ordering the pools in terms of their \emph{non-myopic rewards} for some stake. -For a stake pool with pledged owner stake $s$, total stake $\sigma$, rank -$r$ and member stake $t$, we define the \emph{non-myopic stake} $\sigma_\mathrm{nm}$ as: -\[ - \sigma_\mathrm{nm}(s,\sigma,t,r) := - \left\{ - \begin{array}{ll} - \max(\sigma+t,z_0) & - \text{if $r\leq k$,} \\ - s+t & - \text{otherwise,} - \end{array} - \right. -\] -where $k$ is the parameter that is defined in \cite[Section 5.2]{delegation_design}, -and which represents the desired number of stake pools in an equilibrium state. -% -The \emph{non-myopic pool member reward} -% of a pool with costs $c$, margin $m$, -% pledged owner stake $s$, stake $\sigma$, rank $r$, -for a member that contributes member stake $t$ to a -stake pool with hit-rate estimate $h_z$, is then: -\[ - r_\mathrm{member, nm}(c, m, s, \sigma, t, r, h_z) := - r_\mathrm{member}\Bigl(\hat{f}\bigl(s,\sigma_\mathrm{nm}(s,\sigma,t,r),h_z\bigr), - c, m, t, \sigma_\mathrm{nm}(s,\sigma,t,r)\Bigr), -\label{eq:non-myopic-member-rewards} -\] -where -\[ - r_\mathrm{member}(\hat{f}, c, m, t, \sigma) := - \left\{ - \begin{array}{ll} - \displaystyle 0 & - \text{if $\hat{f}\leq c$,} \\ - \displaystyle (\hat{f} - c)\cdot(1-m)\cdot\frac{t}{\sigma} & - \text{otherwise.} - \end{array} - \right. -\] -Delegators can use $r_\mathrm{member, nm}$ to select a pool -that maximizes their rewards. - -\addcontentsline{toc}{section}{References} -\bibliographystyle{habbrv} -\bibliography{references} - -\end{document} diff --git a/docs/pool-ranking/references.bib b/docs/pool-ranking/references.bib deleted file mode 100644 index a8d58e92311..00000000000 --- a/docs/pool-ranking/references.bib +++ /dev/null @@ -1,15 +0,0 @@ -@misc{delegation_design, - label = {SL-D1}, - author = {{IOHK Formal Methods Team}}, - title = {{Design Specification for Delegation and Incentives in Cardano, IOHK Deliverable SL-D1}}, - year = {2018}, - url = {https://github.com/intersectmbo/cardano-ledger/releases/latest/download/shelley-delegation.pdf} -} - -@misc{bkks2018, - Author = {Lars Bruenjes and Aggelos Kiayias and Elias Koutsoupias and Aikaterini-Panagiota Stouka}, - Date-Added = {2018-08-05 08:14:11 +0000}, - Date-Modified = {2018-08-07 09:48:36 +0000}, - Howpublished = {Computer Science and Game Theory (cs.GT) arXiv:1807.11218}, - Title = {Reward Sharing Schemes for Stake Pools}, - Year = {2018}} diff --git a/docs/proxy-keys/images/addresses.pdf b/docs/proxy-keys/images/addresses.pdf deleted file mode 100644 index c1b80a2a69356f4aa40afa884c0142dc0dd710f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17029 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

r9HJAl?5YC<* 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, where $n$ is the balance which is \emph{not} proxied, we must take some undesirable action, such as: - \begin{itemize} - \item Immediately invalidate all proxied rights. - \item Reissue all proxy delegation certificates with a new notional, reduced proportionally across all \glsplural{trustee}. - \item Lock funds until manual action is taken. - \end{itemize} - \item Granular control over generated rewards is difficult to manage in a Ledger solution context, without further metadata being added to the proxy delegation certificates and a radical change to how the Ledger handles reward flows. - \item A Ledger based solution will still require interactivity, i.e. sharing of the $\mathcal{A}_{p,\text{target}}$ public key/hash. To minimise interactivity we could define a request/response mechanism, however this would open a possible DDOS attack vector. - \item Privacy is difficult to achieve in a Ledger solution context. The chain is transparent by design and a Ledger based solution requires posting data to the chain. Privacy would require implementation of a zero knowledge proving/verification system between all parties using the chain. - \item A Ledger based solution does not avoid changes to the Wallet. -\end{enumerate} - -\pagebreak - -\subsection{A Wallet based approach} -Conceptually, the Wallet based solution to deliver Proxy-keys is predicated on the notion of creating a -\gls{joint address} comprised of both a \gls{trustor} and \gls{trustee} component. Let us remind ourselves how -a Cardano \emph{Shelley}-era address is generated: - -\begin{figure}[ht] - \includegraphics[width=\linewidth]{images/addresses.pdf} - \caption{address/credential interaction - from SL-D1} - \label{fig:addresses} -\end{figure} - -As shown above the structure of a Shelley-era address (from which one can delegate stake), is forged from a -\emph{payment credential}, $\mathcal{A}_p$ and a \emph{stake credential}, $\mathcal{A}_s$. With the current -core Cardano protocol, the payment credential, (or more accurately the credential's private key counterpart), -controls the spending of funds, and the stake credential controls delegation/de-delegation and withdrawal of -rewards from the account they accumulates to. \\ - -\subsubsection{High-level design} -Cognisant of the above, the solution to deliver the Proxy-key/partial delegation feature is to deposit funds -to an address which is formed from two distinct, separately created keypairs both of type \lstinline{ed25519}. -The \gls{trustor} public credential forms the "payment" side of the \gls{joint address}, and the -\gls{trustee} public credential forms the "stake" side of the \gls{joint address}. This will ultimately yield -a wallet where the \gls{trustor} has sole control of spending rights, whilst the \gls{trustee} enjoys sole -staking rights. The mechanism of delegating to a given stake pool will remain unmodified, by posting a \emph{delegation -certificate} to the blockchain. \\ - -We can use hardened key derivation, by performing a \lstinline{BLAKE2b} hash on the \gls{trustor} \& \gls{trustee} -private keys: $\mathcal{H}(\mathcal{A}_{(x)})$, where $_{(x)}=\mathcal{A}_p$, or $\mathcal{A}_s$. -This will yield the ability to create an arbitrary number of proxy wallets from $2$ independently -stored seeds, which makes wallet recovery trivial. \\ - -Finally, if we use the hash of a \emph{Plutus script} as the \emph{stake credential} component during the process outlined -above, then we can enjoy granular control over any \emph{rewards} generated. Including both permitting or restricting -withdrawal of rewards by the Proxy-key. Plutus scripts have context. They understand whether an action is Spending, -Minting, Delegating or Rewarding, thus, we can express conditional logic which finely controls actions executed by the \gls{trustee} Proxy-key. - -\pagebreak - -\subsubsection{Benefits \& drawbacks} -Next, again, we will explore the benefits and drawbacks. This time of a Wallet based solution. We will also explore -which requirements described in the PRD would be possible to meet. - -\paragraph{Benefits:} -\begin{enumerate} - \item Leverages existing Ledger primitives (Shelley design), so we don't require a protocol hard-fork, nor do we add complexity to the core node. - \item Controlling reward flow is trivial using Plutus scripts. - \item There is no further computational/accounting burden on the core Cardano node. - \item There is no complex management needed when a \gls{trustor} spends funds in the context of proxy to multiple \glsplural{trustee}. - \item There is no need to proxy delegate a partial balance back to self. - \item This approach will likely dovetail well with the expected voting implementation. - \item All requirements of the Proxy-key PRD can be met, including privacy, with reasonable implementation effort. -\end{enumerate} - -\paragraph{Drawbacks:} -\begin{enumerate} - \item Hardware wallets will require development to support Proxy-keys. - \item Additional development would be required by all software wallets to support the Proxy-key feature. - \item There is no hook to provide a non-interactive UX. -\end{enumerate} - -\pagebreak - -\section{Considerations \& conclusion} -Both solutions designs are viable approaches to implement the Proxy-keys feature. Additionally, both designs have -individual benefits and drawbacks. Notwithstanding, there are some specific considerations which should influence our decision -as to which approach is selected: - -\begin{itemize} - \item Ultimately, both the Ledger based approach and the Wallet based approach require interactivity in some form, though this could be hidden from the user in the case of a Ledger based solution. - \item Both approaches will require knowledge of the trustee's Proxy-key public curve point which would then either be: - \begin{itemize} - \item formed into a stake credential and subsequently combined with the appropriate payment credential to form a \gls{joint address}, or; - \item embedded into a proxy delegation certificate and posted to the chain. - \end{itemize} - \item Privacy is an important aspect to the solution, Ledger based privacy is going to significantly increase delivery time for the feature. - \item Control of reward flow is an important aspect to the solution, which is significantly easier to achieve in a Wallet based solution, via Plutus. - \item Both solution approaches will require development work in the Wallet. - \item A Wallet based approach simplifies accounting in the context of proxy to multiple \glsplural{trustee}. - \end{itemize} - -\textbf{ \\ \\ Mindful of the discussion points herein, the recommendation from Architecture and Engineering is to pursue a Wallet -based solution to implement Proxy-keys \& Partial delegation}. -\pagebreak - -\printglossaries - -\end{document} \ No newline at end of file diff --git a/docs/small-step-semantics/Makefile b/docs/small-step-semantics/Makefile deleted file mode 100644 index 3fe9d8d6779..00000000000 --- a/docs/small-step-semantics/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -## -## Makefile for the ledger rules, based on: -## -## https://tex.stackexchange.com/questions/40738/how-to-properly-make-a-latex-project -## - -# Document name -DOCNAME = small-step-semantics - -# You want latexmk to *always* run, because make does not have all the info. -# Also, include non-file targets in .PHONY so they are run regardless of any -# file of the given name existing. -.PHONY: $(DOCNAME).pdf all clean - -# The first rule in a Makefile is the one executed by default ("make"). It -# should always be the "all" rule, so that "make" and "make all" are identical. -all: $(DOCNAME).pdf - -## -## CUSTOM BUILD RULES -## - - -## -## MAIN LATEXMK RULE -## - -# -pdf tells latexmk to generate PDF directly (instead of DVI). -# -pdflatex="" tells latexmk to call a specific backend with specific options. -# -use-make tells latexmk to call make for generating missing files. - -# -interaction=nonstopmode keeps the pdflatex backend from stopping at a -# missing file reference and interactively asking you for an alternative. - -$(DOCNAME).pdf: $(DOCNAME).tex - latexmk -pdf -pdflatex="pdflatex -interaction=nonstopmode" -use-make $(DOCNAME).tex - -watch: $(DOCNAME).tex - latexmk -pvc -pdf -pdflatex="pdflatex -interaction=nonstopmode" -use-make $(DOCNAME).tex - -clean: - latexmk -CA - -install: - mkdir -pv ${out}/nix-support/ - cp small-step-semantics.pdf ${out}/ - echo "doc-pdf semantics-spec ${out}/small-step-semantics.pdf" > ${out}/nix-support/hydra-build-products diff --git a/docs/small-step-semantics/flake.nix b/docs/small-step-semantics/flake.nix deleted file mode 100644 index 5ab8e8fa928..00000000000 --- a/docs/small-step-semantics/flake.nix +++ /dev/null @@ -1,60 +0,0 @@ -{ - outputs = inputs: { - packages = - builtins.mapAttrs (_: {nixpkgs, ...}: { - default = with nixpkgs; - buildLatex { - name = "small-step-semantics-spec"; - texFiles = ["small-step-semantics"]; - meta = with lib; { - description = "Small Step Semantics Specification"; - license = licenses.asl20; - platforms = platforms.linux; - }; - src = filterLatex ./.; - - texInputs = { - inherit - (texlive) - scheme-small - # libraries - - stmaryrd - lm-math - amsmath - extarrows - cleveref - semantic - tikz-cd - xcolor - # bclogo and dependencies - - bclogo - mdframed - xkeyval - etoolbox - needspace - pgf - # font libraries `mathpazo` seems to depend on palatino, but it isn't pulled. - - mathpazo - palatino - microtype - # libraries for marginal notes - - xargs - todonotes - # build tools - - latexmk - # Referencing - - zref - ; - }; - buildInputs = [gitMinimal]; - }; - }) - (inputs.main or (import ../../nix/flake-compat.nix).defaultNix).legacyPackages; - }; -} diff --git a/docs/small-step-semantics/small-step-semantics.tex b/docs/small-step-semantics/small-step-semantics.tex deleted file mode 100644 index 1c505d5b3a8..00000000000 --- a/docs/small-step-semantics/small-step-semantics.tex +++ /dev/null @@ -1,293 +0,0 @@ -\documentclass[11pt,a4paper]{article} -\usepackage[margin=2.5cm]{geometry} -\usepackage{microtype} -\usepackage{mathpazo} % nice fonts -\usepackage{amsmath} -\usepackage{amssymb} -\usepackage{amsthm} -\usepackage{latexsym} -\usepackage{mathtools} -\usepackage{stmaryrd} -\usepackage{extarrows} -\usepackage{slashed} -\usepackage[colon]{natbib} -\usepackage[unicode=true,pdftex,pdfa]{hyperref} -\usepackage{xcolor} -\usepackage{xparse} -\usepackage[capitalise,noabbrev,nameinlink]{cleveref} -\hypersetup{ - pdftitle={Small Step Semantics for Cardano}, - breaklinks=true, - bookmarks=true, - colorlinks=false, - linkcolor={blue}, - citecolor={blue}, - urlcolor={blue}, - linkbordercolor={white}, - citebordercolor={white}, - urlbordercolor={white} -} -\usepackage{tikz-cd} -\usepackage{float} -\floatstyle{boxed} -\restylefloat{figure} -% For notes containing warnings, questions, etc. -\usepackage[tikz]{bclogo} -\newenvironment{question} - {\begin{bclogo}[logo=\bcquestion, couleur=orange!10, arrondi=0.2]{ QUESTION}} - {\end{bclogo}} -\newenvironment{todo} - {\begin{bclogo}[logo=\bcoutil, couleur=red!5, couleurBarre=red, arrondi=0.2]{ TODO}} - {\end{bclogo}} -%% -%% Package `semantic` can be used for writing inference rules. -%% -\usepackage{semantic} -%% Setup for the semantic package -\setpremisesspace{20pt} - -\DeclareMathOperator{\dom}{dom} -\DeclareMathOperator{\range}{range} - -%% -%% TODO: we should package this -%% -\newcommand{\powerset}[1]{\mathbb{P}~#1} -\newcommand{\restrictdom}{\lhd} -\newcommand{\subtractdom}{\mathbin{\slashed{\restrictdom}}} -\newcommand{\restrictrange}{\rhd} -\newcommand{\union}{\cup} -\newcommand{\unionoverride}{\mathbin{\underrightarrow\cup}} -\newcommand{\uniondistinct}{\uplus} -\newcommand{\var}[1]{\mathit{#1}} -\newcommand{\fun}[1]{\mathsf{#1}} -\newcommand{\type}[1]{\mathsf{#1}} -\newcommand{\signed}[2]{\llbracket #1 \rrbracket_{#2}} -\newcommand{\size}[1]{\left| #1 \right|} -\newcommand{\trans}[2]{\xlongrightarrow[\textsc{#1}]{#2}} -\newcommand{\seqof}[1]{#1^{*}} -\newcommand{\nextdef}{\\[1em]} -\newcommand{\bytes}{\textbf{Bytes}} - -\NewDocumentCommand{\tion}{o m m m m}{ - \IfNoValueF{#1}{\var{#1}\vdash} \var{#3} \trans{#2}{#4} \var{#5} -} - -\theoremstyle{definition} -\newtheorem{definition}{Definition}[section] - -\theoremstyle{remark} -\newtheorem{remark}{Remark}[section] - -\begin{document} -\title{Small Step Semantics for Cardano} -\author{} -\date{October 17, 2018} - -\maketitle - -\begin{abstract} -We define the basis for our version of ``small-step semantics'' as applied to -defining components of the Cardano cryptocurrency. -\end{abstract} - -\section{Introduction} -\label{sec:introduction} - -In defining Cardano, we are concerned with the means to construct inductive -datatypes satisfying some validity conditions. For example, we wish to consider -when a sequence of transactions forms a valid \textit{ledger}, or a sequence of -blocks forms a valid \textit{chain}. - -This document describes the semi-formal methods we use to describe such validity -conditions and how they result in the construction of valid states. - -\section{Preliminaries and Notation} - -In this section, we define some preliminaries and some notation common to -Cardano specifications. - -\begin{description} -\item [Functions and partial functions] We denote the set of functions from $A$ - to $B$ as $A \to B$, and a function from $A$ to $B$ as $f \in A \to B$ or $f : - A \to B$. We - denote the set of partial functions from $A$ to $B$ as $A \mapsto B$, and an - equivalent partial function as $g \in A \mapsto B$ or $g : A \mapsto B$. \\ - Analogously to Haskell, we use spacing for function application. So $f ~ a$ - represents the application of $a$ to the function $f$. - -\end{description} - - -\section{Transition Systems} -\label{sec:preliminaries} - -In describing the semantics for a system $L$ we are principally concerned with -five things: - -\begin{description} -\item [States] The underlying datatype of our system, whose validity we are - required to prove. -\item [Transitions] The means by which we might move from one (valid) state to - another. -\item [Signals] The means by which transitions are triggered. -\item [Rules] Formulae describing how to derive valid states or transitions. A - rule has an \textit{antecedent} (sometimes called \textit{premise}) and a - \textit{consequent} (sometimes called \textit{conclusion}), such that if the - conditions in the antecedent hold, the consequent is assumed to be a valid - state or transition. -\item [Environment] Sometimes we may implicitly rely on some additional - information being present in the system to evaluate the rules. An environment - does not have to exist (or, equivalently, we may have an empty environment), - but crucially an environment is not modified by transitions. -\end{description} - -\begin{definition}[State transition system] -A \textit{state transition system} $L$ is given by a 5-tuple $(S, T, \Sigma, R, \Gamma)$ -where: -\begin{description} -\item[$S$] is a set of (not necessarily valid) states. -\item[$\Sigma$] is a set of signals. -\item[$\Gamma$] is a set of environment values. -\item[$T$] is a set of (not necessarily valid) transitions. We have - that \[T\subseteq\powerset{(\Gamma\times S\times\Sigma\times S)}\] -\item[$R$] is a set of derivation rules. A derivation rule is given by two - parts: its antecedent is a logical formula in $S\cup\Sigma\cup\Gamma$. Its - consequent is either: - \begin{itemize} - \item A state $s\in S$, or - \item A transition $t\in T$. - \end{itemize} -\end{description} -\end{definition} -\begin{remark} - The above definition is somewhat redundant, since the transition set $T$ - implicitly defines the state, signal and environment sets. We use the above - definition for clarity, since we often wish to refer to states and signals directly. -\end{remark} -\begin{definition}[Validity] - For a transition system $(S, T, \Sigma, R, \Gamma)$ and environment $\gamma\in\Gamma$, we say that a state $s\in - S$ is valid if either: -\begin{itemize} -\item It appears as a consequent of a rule $r\in R$ whose antecedent has no - variables in $S\cup\Sigma$ and which is true as evaluated at $\gamma$, or -\item There exists a tuple $(s', \sigma, r, t)\in S\times\Sigma\times R \times - T$ such that $s'$ is valid, the antecedent of $r$ is true as evaluated at $(\gamma, s', - \sigma)$ and where $t=(\gamma, s', \sigma, s)$. -\end{itemize} -\end{definition} - -\begin{figure}[h] - \label{fig:notation} - For a state transition system $L=(S,T,\Sigma, R, \Gamma)$, we use the - following notation to represent transitions and rules. \\ - - \textit{Transitions} - \[ \_ \vdash \_ \trans{L}{\_} \_ \in T \] - - \textit{Rules} - \[ \inference[Rule-name] - {\textit{antecedent}} - {\textit{consequent}} - \in R - \] - \caption{Notation for a state transition system.} -\end{figure} -Figure \ref{fig:notation} gives the notation for transitions and rules. For -notational convenience, we allow for some additional constructions in the -antecedent: -\begin{itemize} - \item Rather than a single logical predicate in the antecedent, we allow - multiple predicate formulae. All predicates defined in the antecedent must be - true; that is, the antecedent is treated as the conjunction of all predicates defined - there. - \item The antecedent may contain variable definitions of the form $z=f(s)$, - where $z$ is an additional binding to be introduced. We will refer to these - as ``let-bindings'' in analogy with their use in programming languages. - \end{itemize} -We can give an example of such a rule: - \[ \inference[Example] - {P(A) & z = f ~ s & B = g(A,z)} - {\tion[E1]{S2}{A}{s}{B}} - \] -To read such a rule, we proceed as follows: -\begin{enumerate} - \item Firstly, we look at the LHS of the consequent. This introduces the basic - environment, initial state and signal. - \item We then expand our set of variables using let bindings in the - antecedent. - \item We evaluate all predicates in the antecedent ($P(A)$ in the example above), which should now be - defined in terms of $S\cup\Sigma\cup\Gamma$ and the variables introduced in - step 2. - \item If all predicates evaluate to true, then we may assume a valid - transition to the RHS of the consequent. -\end{enumerate} -\section{Composition of Transition Systems} - -Part of the benefit of this approach is that it allows us to define systems -which themselves rely on other state transition systems. To do this, we allow -for an additional construction in the antecedent. - -\begin{itemize} -\item The antecedent may contain a transition of the form $\tion[ENV1]{SYS}{A}{s}{B}$. - This may either act as a predicate (if $B$ is already bound) or as an - introduction of $B$ as per the state transition rules for system $\var{SYS}$. -\end{itemize} - -We then allow a construction as follows: - -\[ - \inference[Example] - {P(A) & z = f ~ s & \tion[E1]{S1}{A}{z}{B}} - {\tion[E1]{S2}{A}{s}{B}} -\] - -The transition in the antecedent acts as a predicate requiring that $A$ -transitions to $B$ under the system $S1$, and, assuming $B$ is otherwise free -(has not been bound by the LHS of the consequent or by another let binding), -acts as an introduction rule for $B$ as determined by the transition rules for -system $S1$. - -\section{Serialisation} -Various of our specifications will rely on a serialisation function which -encodes a variety of types to a binary format. - -\begin{figure}[h] - \label{fig:serialisation} - \begin{align*} - & \llbracket\_\rrbracket \in \textbf{Hask}\mapsto\_\to\bytes - & \text{serialisation} \\ - & \llbracket\_\rrbracket_{A} \in \var{A}\to\bytes - \end{align*} - \caption{Serialisation functions} -\end{figure} - -Figure \ref{fig:serialisation} gives the definition of a serialisation function. -We define this as a partial function since it is defined only on a subset of -Haskell types. As an abuse of notation, we drop the subscript $A$ for the -serialisation function on type $A$, since it is unambiguously determined by its -first argument. - -We require our serialisation function to satisfy the following property: -\begin{definition}[Distributivity over injective functions] - Let $s:\mathcal{C}\mapsto\_\to\var{D}$ be a function defined over a subset of - objects in $\mathcal{C}$, such that $s_A:A\to\var{D}$ for all $A\in\dom{s}$. - We say that $s$ \textit{distributes over injective functions} if, for all - injective functions $f:A\to B$ where $A,B\in\dom{s}$, there exists a function - $f_s:\var{D}\to\var{D}$ such that the following diagram commutes: - \[ - \begin{tikzcd} - A \arrow{r}{f} \arrow{d}{s_A} & B \arrow{d}{s_B} \\ - D \arrow{r}{f_s} & D - \end{tikzcd} - \] -\end{definition} - -This property allows us to extract specific subparts of our serialised form. Our -specifications will rely in places on functions defined over the serialisesation -of a value. If we have a type $A=(B,C,D,E)$, for example, and we need to extract -$\llbracket\var{B}\rrbracket$ from $\llbracket\var{A}\rrbracket$, it is this -property which guarantees we may do so without round-tripping through $A$, -since $\llbracket \pi_1 ~ A\rrbracket = (\pi_1)_{\llbracket\rrbracket} ~ \llbracket A -\rrbracket$ (where $\pi_1$ is the projection onto the first component of the tuple). -\end{document} diff --git a/eras/allegra/impl/.ghcid b/eras/allegra/impl/.ghcid deleted file mode 100644 index 7743f4ac8a4..00000000000 --- a/eras/allegra/impl/.ghcid +++ /dev/null @@ -1 +0,0 @@ ---command="cabal repl --repl-options='-isrc -fwarn-unused-binds -fwarn-unused-imports -fno-code -fobject-code -g2 -fno-break-on-exception -fno-break-on-error -ferror-spans -j -Wno-unused-packages'" --clear --no-height-limit --reverse-errors --reload=../../../ --outputfile=/tmp/cardano-ledger-allegra-ghcid.txt \ No newline at end of file diff --git a/eras/allegra/impl/CHANGELOG.md b/eras/allegra/impl/CHANGELOG.md deleted file mode 100644 index 1e67767648d..00000000000 --- a/eras/allegra/impl/CHANGELOG.md +++ /dev/null @@ -1,112 +0,0 @@ -# Version history for `cardano-ledger-allegra` - -## 1.4.1.0 - -* Add a `ToJSON` instance for `ValidityInterval` - -## 1.4.0.0 - -* Add type `EraRuleEvent` instances for `LEDGER` and `TICK` events -* Add `Eq` and `NFData` instances for `AllegraUtxoEvent` -* Add instances for `InjectRuleFailure` and switch to using `injectFailure` -* Add `shelleyToAllegraUtxoPredFailure` -* Add `NFData` instance for `AllegraUtxoPredFailure` -* Add implementation for `getMinFeeTxUtxo` - -### `testlib` - -* Add `ToExpr` instance for `AllegraUtxoEvent` -* Add `RuleListEra` instance for Allegra - -## 1.3.0.0 - -* Remove `ShelleyEraTxBody` superclass constraint on `AllegraEraTxBody` -* Stop exporting all of the internal `hkd*` functions and `PParamsHKD` from - `Cardano.Ledger.Allegra.Core`. -* Export `ValidityInterval` from `Cardano.Ledger.Allegra.Core` -* Moved `ToExpr` instances out of the main library and into the testlib. -* Add `TxUTxODiff (UTxO era) (UTxO era)` inhabitant to the `AllegraUtxoEvent era` data type. - -### `testlib` - -* Add `impAllegraSatisfyNativeScript` - -## 1.2.5.1 - -* Update `cardano-ledger-core` bounds - -## 1.2.5.0 - -### `testlib` - -* Provide CDDL spec files with `readBabbageCddlFileNames` and `readBabbageCddlFiles` from - `Test.Cardano.Ledger.Babbage.Binary.Cddl` - -## 1.2.4.0 - -* Add `NFData` instance for `AllegraUtxoPredFailure` -* Implement `getScriptsProvided` -* Flip arguments on `validateTimelock` (breaking change, but mistakenly only minor version - was bumped) - -### `testlib` - -* Add `Test.Cardano.Ledger.Allegra.ImpTest` -* Add `EraImpTest` instance for `AllegraEra` - -## 1.2.3.0 - -* Add `ToExpr` instance for `AllegraTxBody` -* Add `EraTransition` instance. - -## 1.2.2.0 - -* Add `EqRaw` instance for `Timelock`, `AllegraTxAuxData` and `AllegraTxBody` -* Add `ToExpr` instance for `AllegraTxAuxData` - -## 1.2.1.1 - -* - -## 1.2.1.0 - -* Add implementation for `spendableInputsTxBodyL` - -## 1.2.0.3 - -* - -## 1.2.0.2 - -* - -## 1.2.0.1 - -* - -## 1.2.0.0 - -* Introduction of `TxCert` and `EraTxCert` -* Add `EraTxCert` and `ShelleyEraTxCert` instances to `AllegraEra` -* Fix an issue where `TotalDeposits` didn't appear on Allegra and Mary era - -## 1.1.1.0 - -* Add `TranslateEra` instances for: - * `DState` - * `PState` - * `VState` - -## 1.1.0.0 - -* Remove redundant pattern synonym `AllegraTxAuxData'` -* Hide internal `AllegraTxAuxDataRaw` constructor with `atadrMetadata` and `atadrTimelock` - record fields. - -### `testlib` - -* Consolidate all `Arbitrary` instances from the test package to under a new `testlib`. #3285 - -## 1.0.0.0 - -* First properly versioned release. diff --git a/eras/allegra/impl/Setup.hs b/eras/allegra/impl/Setup.hs deleted file mode 100644 index e8ef27dbba9..00000000000 --- a/eras/allegra/impl/Setup.hs +++ /dev/null @@ -1,3 +0,0 @@ -import Distribution.Simple - -main = defaultMain diff --git a/eras/allegra/impl/cardano-ledger-allegra.cabal b/eras/allegra/impl/cardano-ledger-allegra.cabal deleted file mode 100644 index 3c3704ed2b3..00000000000 --- a/eras/allegra/impl/cardano-ledger-allegra.cabal +++ /dev/null @@ -1,137 +0,0 @@ -cabal-version: 3.0 -name: cardano-ledger-allegra -version: 1.4.1.0 -license: Apache-2.0 -maintainer: operations@iohk.io -author: IOHK -bug-reports: https://github.com/intersectmbo/cardano-ledger/issues -synopsis: Allegra ledger era that introduces time lock support. -description: - This package builds upon Shelley era with support for timelocks. - -category: Network -build-type: Simple -data-files: - cddl-files/allegra.cddl - cddl-files/crypto.cddl - cddl-files/extras.cddl - -extra-source-files: CHANGELOG.md - -source-repository head - type: git - location: https://github.com/intersectmbo/cardano-ledger - subdir: eras/allegra/impl - -library - exposed-modules: - Cardano.Ledger.Allegra - Cardano.Ledger.Allegra.Core - Cardano.Ledger.Allegra.Rules - Cardano.Ledger.Allegra.Scripts - Cardano.Ledger.Allegra.Transition - Cardano.Ledger.Allegra.Translation - Cardano.Ledger.Allegra.Tx - Cardano.Ledger.Allegra.TxAuxData - Cardano.Ledger.Allegra.TxBody - - hs-source-dirs: src - other-modules: - Cardano.Ledger.Allegra.TxCert - Cardano.Ledger.Allegra.Era - Cardano.Ledger.Allegra.PParams - Cardano.Ledger.Allegra.TxOut - Cardano.Ledger.Allegra.TxSeq - Cardano.Ledger.Allegra.TxWits - Cardano.Ledger.Allegra.Rules.Bbody - Cardano.Ledger.Allegra.Rules.Deleg - Cardano.Ledger.Allegra.Rules.Delegs - Cardano.Ledger.Allegra.Rules.Delpl - Cardano.Ledger.Allegra.Rules.Pool - Cardano.Ledger.Allegra.Rules.Ppup - Cardano.Ledger.Allegra.Rules.Ledger - Cardano.Ledger.Allegra.Rules.Ledgers - Cardano.Ledger.Allegra.Rules.Utxo - Cardano.Ledger.Allegra.Rules.Utxow - Cardano.Ledger.Allegra.UTxO - - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wpartial-fields - -Wunused-packages - - build-depends: - base >=4.14 && <5, - aeson, - bytestring, - cardano-crypto-class, - cardano-ledger-binary ^>=1.3, - cardano-ledger-core ^>=1.11, - cardano-ledger-shelley ^>=1.10, - cardano-strict-containers, - cardano-slotting, - cborg, - containers, - deepseq, - microlens, - nothunks, - small-steps >=1.1, - transformers, - validation-selective - -library testlib - exposed-modules: - Test.Cardano.Ledger.Allegra.Arbitrary - Test.Cardano.Ledger.Allegra.Binary.Cddl - Test.Cardano.Ledger.Allegra.ImpTest - Test.Cardano.Ledger.Allegra.TreeDiff - - visibility: public - hs-source-dirs: testlib - other-modules: Paths_cardano_ledger_allegra - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wpartial-fields - -Wunused-packages - - build-depends: - base, - bytestring, - cardano-ledger-allegra, - cardano-crypto-class, - cardano-ledger-binary:{cardano-ledger-binary, testlib}, - cardano-ledger-core:{cardano-ledger-core, testlib}, - cardano-ledger-shelley:{cardano-ledger-shelley, testlib}, - cardano-strict-containers, - containers, - generic-random, - microlens, - mtl, - small-steps, - QuickCheck - -test-suite tests - type: exitcode-stdio-1.0 - main-is: Main.hs - hs-source-dirs: test - other-modules: - Test.Cardano.Ledger.Allegra.BinarySpec - Test.Cardano.Ledger.Allegra.Binary.CddlSpec - - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wpartial-fields - -Wunused-packages -threaded -rtsopts -with-rtsopts=-N - - build-depends: - base, - cardano-ledger-allegra, - cardano-ledger-binary:testlib, - cardano-ledger-core:{cardano-ledger-core, testlib}, - testlib, - cardano-ledger-shelley:testlib, - data-default-class, - testlib diff --git a/eras/allegra/impl/cddl-files/allegra.cddl b/eras/allegra/impl/cddl-files/allegra.cddl deleted file mode 100644 index 18e8c8b3cca..00000000000 --- a/eras/allegra/impl/cddl-files/allegra.cddl +++ /dev/null @@ -1,277 +0,0 @@ -block = - [ header - , transaction_bodies : [* transaction_body] - , transaction_witness_sets : [* transaction_witness_set] - , auxiliary_data_set : - { * transaction_index => auxiliary_data } - ]; Valid blocks must also satisfy the following two constraints: - ; 1) the length of transaction_bodies and transaction_witness_sets - ; must be the same - ; 2) every transaction_index must be strictly smaller than the - ; length of transaction_bodies - -transaction = - [ transaction_body - , transaction_witness_set - , auxiliary_data / null - ] - -transaction_index = uint .size 2 - -header = - [ header_body - , body_signature : $kes_signature - ] - -header_body = - [ block_number : uint - , slot : uint - , prev_hash : $hash32 / null - , issuer_vkey : $vkey - , vrf_vkey : $vrf_vkey - , nonce_vrf : $vrf_cert - , leader_vrf : $vrf_cert - , block_body_size : uint - , block_body_hash : $hash32 ; merkle triple root - , operational_cert - , protocol_version - ] - -operational_cert = - ( hot_vkey : $kes_vkey - , sequence_number : uint - , kes_period : uint - , sigma : $signature - ) - -next_major_protocol_version = 5 - -major_protocol_version = 1..next_major_protocol_version - -protocol_version = (major_protocol_version, uint) - -transaction_input = [ transaction_id : $hash32 - , index : uint - ] - -; address = bytes -; reward_account = bytes - -; address format: -; [ 8 bit header | payload ]; -; -; shelley payment addresses: -; bit 7: 0 -; bit 6: base/other -; bit 5: pointer/enterprise [for base: stake cred is keyhash/scripthash] -; bit 4: payment cred is keyhash/scripthash -; bits 3-0: network id -; -; reward addresses: -; bits 7-5: 111 -; bit 4: credential is keyhash/scripthash -; bits 3-0: network id -; -; byron addresses: -; bits 7-4: 1000 - -; 0000: base address: keyhash28,keyhash28 -; 0001: base address: scripthash28,keyhash28 -; 0010: base address: keyhash28,scripthash28 -; 0011: base address: scripthash28,scripthash28 -; 0100: pointer address: keyhash28, 3 variable length uint -; 0101: pointer address: scripthash28, 3 variable length uint -; 0110: enterprise address: keyhash28 -; 0111: enterprise address: scripthash28 -; 1000: byron address -; 1110: reward account: keyhash28 -; 1111: reward account: scripthash28 -; 1001 - 1101: future formats - -certificate = - [ stake_registration - // stake_deregistration - // stake_delegation - // pool_registration - // pool_retirement - // genesis_key_delegation - // move_instantaneous_rewards_cert - ] - -stake_registration = (0, stake_credential) -stake_deregistration = (1, stake_credential) -stake_delegation = (2, stake_credential, pool_keyhash) -pool_registration = (3, pool_params) -pool_retirement = (4, pool_keyhash, epoch) -genesis_key_delegation = (5, genesishash, genesis_delegate_hash, vrf_keyhash) -move_instantaneous_rewards_cert = (6, move_instantaneous_reward) - -move_instantaneous_reward = [ 0 / 1, { * stake_credential => coin } ] -; The first field determines where the funds are drawn from. -; 0 denotes the reserves, 1 denotes the treasury. - -stake_credential = - [ 0, addr_keyhash - // 1, scripthash - ] - -pool_params = ( operator: pool_keyhash - , vrf_keyhash: vrf_keyhash - , pledge: coin - , cost: coin - , margin: unit_interval - , reward_account: reward_account - , pool_owners: set - , relays: [* relay] - , pool_metadata: pool_metadata / null - ) - -port = uint .le 65535 -ipv4 = bytes .size 4 -ipv6 = bytes .size 16 -dns_name = tstr .size (0..64) - -single_host_addr = ( 0 - , port / null - , ipv4 / null - , ipv6 / null - ) -single_host_name = ( 1 - , port / null - , dns_name ; An A or AAAA DNS record - ) -multi_host_name = ( 2 - , dns_name ; A SRV DNS record - ) -relay = - [ single_host_addr - // single_host_name - // multi_host_name - ] - -pool_metadata = [url, metadata_hash] -url = tstr .size (0..64) - -withdrawals = { * reward_account => coin } - -update = [ proposed_protocol_parameter_updates - , epoch - ] - -proposed_protocol_parameter_updates = - { * genesishash => protocol_param_update } - -protocol_param_update = - { ? 0: uint ; minfee A - , ? 1: uint ; minfee B - , ? 2: uint ; max block body size - , ? 3: uint ; max transaction size - , ? 4: uint ; max block header size - , ? 5: coin ; key deposit - , ? 6: coin ; pool deposit - , ? 7: epoch ; maximum epoch - , ? 8: uint ; n_opt: desired number of stake pools - , ? 9: nonnegative_interval ; pool pledge influence - , ? 10: unit_interval ; expansion rate - , ? 11: unit_interval ; treasury growth rate - , ? 12: unit_interval ; d. decentralization constant - , ? 13: $nonce ; extra entropy - , ? 14: [protocol_version] ; protocol version - , ? 15: coin ; min utxo value - } - -transaction_witness_set = - { ? 0: [* vkeywitness ] - , ? 1: [* native_script ] - , ? 2: [* bootstrap_witness ] - ; In the future, new kinds of witnesses can be added like this: - ; , ? 4: [* foo_script ] - ; , ? 5: [* plutus_script ] - } - -transaction_metadatum = - { * transaction_metadatum => transaction_metadatum } - / [ * transaction_metadatum ] - / int - / bytes .size (0..64) - / text .size (0..64) - -transaction_metadatum_label = uint - -auxiliary_data = - { * transaction_metadatum_label => transaction_metadatum } - / [ transaction_metadata: { * transaction_metadatum_label => transaction_metadatum } - , auxiliary_scripts: [ * native_script ] - ; other types of metadata... - ] - -vkeywitness = [ $vkey, $signature ] - -bootstrap_witness = - [ public_key : $vkey - , signature : $signature - , chain_code : bytes .size 32 - , attributes : bytes - ] - -native_script = - [ script_pubkey - // script_all - // script_any - // script_n_of_k - // invalid_before - ; Timelock validity intervals are half-open intervals [a, b). - ; This field specifies the left (included) endpoint a. - // invalid_hereafter - ; Timelock validity intervals are half-open intervals [a, b). - ; This field specifies the right (excluded) endpoint b. - ] - -script_pubkey = (0, addr_keyhash) -script_all = (1, [ * native_script ]) -script_any = (2, [ * native_script ]) -script_n_of_k = (3, n: uint, [ * native_script ]) -invalid_before = (4, uint) -invalid_hereafter = (5, uint) - -coin = uint - -multiasset = { * policy_id => { * asset_name => a } } -policy_id = scripthash -asset_name = bytes .size (0..32) - -value = coin / [coin,multiasset] -mint = multiasset - -int64 = -9223372036854775808 .. 9223372036854775807 - -epoch = uint - -addr_keyhash = $hash28 -genesis_delegate_hash = $hash28 -pool_keyhash = $hash28 -genesishash = $hash28 - -vrf_keyhash = $hash32 -metadata_hash = $hash32 - -; To compute a script hash, note that you must prepend -; a tag to the bytes of the script before hashing. -; The tag is determined by the language. -; In the Allegra and Mary eras there is only one such tag, -; namely "\x00" for multisig scripts. -scripthash = $hash28 - -; allegra differences -transaction_body = - { 0 : set - , 1 : [* transaction_output] - , 2 : coin ; fee - , ? 3 : uint ; ttl - , ? 4 : [* certificate] - , ? 5 : withdrawals - , ? 6 : update - , ? 7 : metadata_hash - , ? 8 : uint ; validity interval start - } -transaction_output = [address, amount : coin] diff --git a/eras/allegra/impl/cddl-files/crypto.cddl b/eras/allegra/impl/cddl-files/crypto.cddl deleted file mode 100644 index 339444964d2..00000000000 --- a/eras/allegra/impl/cddl-files/crypto.cddl +++ /dev/null @@ -1,13 +0,0 @@ -$hash28 /= bytes .size 28 -$hash32 /= bytes .size 32 - -$vkey /= bytes .size 32 - -$vrf_vkey /= bytes .size 32 -$vrf_cert /= [bytes, bytes .size 80] - -$kes_vkey /= bytes .size 32 -$kes_signature /= bytes .size 448 -signkeyKES = bytes .size 64 - -$signature /= bytes .size 64 diff --git a/eras/allegra/impl/cddl-files/extras.cddl b/eras/allegra/impl/cddl-files/extras.cddl deleted file mode 100644 index e7fb0b6937e..00000000000 --- a/eras/allegra/impl/cddl-files/extras.cddl +++ /dev/null @@ -1,27 +0,0 @@ -finite_set = [* a] - -set = [* a] - -;unit_interval = #6.30([uint, uint]) -unit_interval = #6.30([1, 2]) - ; real unit_interval is: #6.30([uint, uint]) - ; but this produces numbers outside the unit interval - ; and can also produce a zero in the denominator - -positive_int = 1 .. 18446744073709551615 - -nonnegative_interval = #6.30([uint, positive_int]) - -address = - h'001000000000000000000000000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000' / - h'102000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000' / - h'203000000000000000000000000000000000000000000000000000000033000000000000000000000000000000000000000000000000000000' / - h'304000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000' / - h'405000000000000000000000000000000000000000000000000000000087680203' / - h'506000000000000000000000000000000000000000000000000000000087680203' / - h'6070000000000000000000000000000000000000000000000000000000' / - h'7080000000000000000000000000000000000000000000000000000000' - -reward_account = - h'E090000000000000000000000000000000000000000000000000000000' / - h'F0A0000000000000000000000000000000000000000000000000000000' diff --git a/eras/allegra/impl/src/Cardano/Ledger/Allegra.hs b/eras/allegra/impl/src/Cardano/Ledger/Allegra.hs deleted file mode 100644 index 3d6f7b76ca0..00000000000 --- a/eras/allegra/impl/src/Cardano/Ledger/Allegra.hs +++ /dev/null @@ -1,48 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE UndecidableInstances #-} --- CanStartFromGenesis -{-# OPTIONS_GHC -Wno-deprecations #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Allegra ( - Allegra, - AllegraEra, -) -where - -import Cardano.Ledger.Allegra.Era (AllegraEra) -import Cardano.Ledger.Allegra.PParams () -import Cardano.Ledger.Allegra.Rules () -import Cardano.Ledger.Allegra.Scripts () -import Cardano.Ledger.Allegra.Transition () -import Cardano.Ledger.Allegra.Translation () -import Cardano.Ledger.Allegra.Tx () -import Cardano.Ledger.Allegra.TxSeq () -import Cardano.Ledger.Allegra.UTxO () -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto (Crypto, StandardCrypto) -import Cardano.Ledger.Keys (DSignable, Hash) -import Cardano.Ledger.Shelley.API ( - ApplyBlock, - ApplyTx, - CanStartFromGenesis (fromShelleyPParams), - ) - -type Allegra = AllegraEra StandardCrypto - --------------------------------------------------------------------------------- --- Mempool instances --------------------------------------------------------------------------------- - -instance - (Crypto c, DSignable c (Hash c EraIndependentTxBody)) => - ApplyTx (AllegraEra c) - -instance - (Crypto c, DSignable c (Hash c EraIndependentTxBody)) => - ApplyBlock (AllegraEra c) - -instance Crypto c => CanStartFromGenesis (AllegraEra c) where - fromShelleyPParams _ = translateEra' () diff --git a/eras/allegra/impl/src/Cardano/Ledger/Allegra/Core.hs b/eras/allegra/impl/src/Cardano/Ledger/Allegra/Core.hs deleted file mode 100644 index 9816a68d56f..00000000000 --- a/eras/allegra/impl/src/Cardano/Ledger/Allegra/Core.hs +++ /dev/null @@ -1,11 +0,0 @@ -module Cardano.Ledger.Allegra.Core ( - AllegraEraTxBody (..), - ValidityInterval (..), - module Cardano.Ledger.Shelley.Core, -) -where - -import Cardano.Ledger.Allegra.Scripts (ValidityInterval (..)) -import Cardano.Ledger.Allegra.Tx () -import Cardano.Ledger.Allegra.TxBody (AllegraEraTxBody (..)) -import Cardano.Ledger.Shelley.Core diff --git a/eras/allegra/impl/src/Cardano/Ledger/Allegra/Era.hs b/eras/allegra/impl/src/Cardano/Ledger/Allegra/Era.hs deleted file mode 100644 index 93f318e34d5..00000000000 --- a/eras/allegra/impl/src/Cardano/Ledger/Allegra/Era.hs +++ /dev/null @@ -1,85 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} - -module Cardano.Ledger.Allegra.Era ( - AllegraEra, - AllegraUTXO, - AllegraUTXOW, -) where - -import Cardano.Ledger.Coin (Coin) -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Shelley (ShelleyEra) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.Rules - --- | The Allegra era -data AllegraEra c - -instance Crypto c => Era (AllegraEra c) where - type PreviousEra (AllegraEra c) = ShelleyEra c - type EraCrypto (AllegraEra c) = c - type ProtVerLow (AllegraEra c) = 3 - - eraName = "Allegra" - --------------------------------------------------------------------------------- --- Core instances --------------------------------------------------------------------------------- - --- | No context is needed to translate from Shelley to Allegra. -type instance TranslationContext (AllegraEra c) = () - -type instance Value (AllegraEra _) = Coin - --- These rules are all inherited from Shelley - -type instance EraRule "BBODY" (AllegraEra c) = ShelleyBBODY (AllegraEra c) - -type instance EraRule "DELEG" (AllegraEra c) = ShelleyDELEG (AllegraEra c) - -type instance EraRule "DELEGS" (AllegraEra c) = ShelleyDELEGS (AllegraEra c) - -type instance EraRule "DELPL" (AllegraEra c) = ShelleyDELPL (AllegraEra c) - -type instance EraRule "EPOCH" (AllegraEra c) = ShelleyEPOCH (AllegraEra c) - -type instance EraRule "LEDGER" (AllegraEra c) = ShelleyLEDGER (AllegraEra c) - -type instance EraRule "LEDGERS" (AllegraEra c) = ShelleyLEDGERS (AllegraEra c) - -type instance EraRule "MIR" (AllegraEra c) = ShelleyMIR (AllegraEra c) - -type instance EraRule "NEWEPOCH" (AllegraEra c) = ShelleyNEWEPOCH (AllegraEra c) - -type instance EraRule "NEWPP" (AllegraEra c) = ShelleyNEWPP (AllegraEra c) - -type instance EraRule "POOL" (AllegraEra c) = ShelleyPOOL (AllegraEra c) - -type instance EraRule "POOLREAP" (AllegraEra c) = ShelleyPOOLREAP (AllegraEra c) - -type instance EraRule "PPUP" (AllegraEra c) = ShelleyPPUP (AllegraEra c) - -type instance EraRule "RUPD" (AllegraEra c) = ShelleyRUPD (AllegraEra c) - -type instance EraRule "SNAP" (AllegraEra c) = ShelleySNAP (AllegraEra c) - -type instance EraRule "TICK" (AllegraEra c) = ShelleyTICK (AllegraEra c) - -type instance EraRule "TICKF" (AllegraEra c) = ShelleyTICKF (AllegraEra c) - -type instance EraRule "UPEC" (AllegraEra c) = ShelleyUPEC (AllegraEra c) - --- These rules are defined anew in the Allegra era - -data AllegraUTXO era - -type instance EraRule "UTXO" (AllegraEra c) = AllegraUTXO (AllegraEra c) - -data AllegraUTXOW era - -type instance EraRule "UTXOW" (AllegraEra c) = AllegraUTXOW (AllegraEra c) diff --git a/eras/allegra/impl/src/Cardano/Ledger/Allegra/PParams.hs b/eras/allegra/impl/src/Cardano/Ledger/Allegra/PParams.hs deleted file mode 100644 index b0b5f2da656..00000000000 --- a/eras/allegra/impl/src/Cardano/Ledger/Allegra/PParams.hs +++ /dev/null @@ -1,59 +0,0 @@ -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Allegra.PParams () where - -import Cardano.Ledger.Allegra.Era (AllegraEra) -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto -import Cardano.Ledger.Shelley.Governance -import Cardano.Ledger.Shelley.PParams -import Data.Coerce -import Lens.Micro - -instance Crypto c => EraPParams (AllegraEra c) where - type PParamsHKD f (AllegraEra c) = ShelleyPParams f (AllegraEra c) - - type UpgradePParams f (AllegraEra c) = () - type DowngradePParams f (AllegraEra c) = () - - emptyPParamsIdentity = emptyShelleyPParams - emptyPParamsStrictMaybe = emptyShelleyPParamsUpdate - - upgradePParamsHKD () = coerce - downgradePParamsHKD () = coerce - - hkdMinFeeAL = lens sppMinFeeA $ \pp x -> pp {sppMinFeeA = x} - hkdMinFeeBL = lens sppMinFeeB $ \pp x -> pp {sppMinFeeB = x} - hkdMaxBBSizeL = lens sppMaxBBSize $ \pp x -> pp {sppMaxBBSize = x} - hkdMaxTxSizeL = lens sppMaxTxSize $ \pp x -> pp {sppMaxTxSize = x} - hkdMaxBHSizeL = lens sppMaxBHSize $ \pp x -> pp {sppMaxBHSize = x} - hkdKeyDepositL = lens sppKeyDeposit $ \pp x -> pp {sppKeyDeposit = x} - hkdPoolDepositL = lens sppPoolDeposit $ \pp x -> pp {sppPoolDeposit = x} - hkdEMaxL = lens sppEMax $ \pp x -> pp {sppEMax = x} - hkdNOptL = lens sppNOpt $ \pp x -> pp {sppNOpt = x} - hkdA0L = lens sppA0 $ \pp x -> pp {sppA0 = x} - hkdRhoL = lens sppRho $ \pp x -> pp {sppRho = x} - hkdTauL = lens sppTau $ \pp x -> pp {sppTau = x} - hkdDL = lens sppD $ \pp x -> pp {sppD = x} - hkdExtraEntropyL = lens sppExtraEntropy $ \pp x -> pp {sppExtraEntropy = x} - hkdProtocolVersionL = lens sppProtocolVersion $ \pp x -> pp {sppProtocolVersion = x} - hkdMinUTxOValueL = lens sppMinUTxOValue $ \pp x -> pp {sppMinUTxOValue = x} - hkdMinPoolCostL = lens sppMinPoolCost $ \pp x -> pp {sppMinPoolCost = x} - -instance Crypto c => EraGov (AllegraEra c) where - type GovState (AllegraEra c) = ShelleyGovState (AllegraEra c) - emptyGovState = - ShelleyGovState - emptyPPPUpdates - emptyPPPUpdates - emptyPParams - emptyPParams - - getProposedPPUpdates = Just . sgsCurProposals - - curPParamsGovStateL = curPParamsShelleyGovStateL - - prevPParamsGovStateL = prevPParamsShelleyGovStateL - - obligationGovState = const mempty diff --git a/eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules.hs b/eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules.hs deleted file mode 100644 index aef45197edf..00000000000 --- a/eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules.hs +++ /dev/null @@ -1,24 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE TypeFamilies #-} - -module Cardano.Ledger.Allegra.Rules ( - module Cardano.Ledger.Allegra.Rules.Utxo, - module Cardano.Ledger.Allegra.Rules.Utxow, -) -where - -import Cardano.Ledger.Allegra.Core (EraRuleEvent) -import Cardano.Ledger.Allegra.Era (AllegraEra) -import Cardano.Ledger.Allegra.Rules.Bbody () -import Cardano.Ledger.Allegra.Rules.Deleg () -import Cardano.Ledger.Allegra.Rules.Delegs () -import Cardano.Ledger.Allegra.Rules.Delpl () -import Cardano.Ledger.Allegra.Rules.Ledger () -import Cardano.Ledger.Allegra.Rules.Ledgers () -import Cardano.Ledger.Allegra.Rules.Pool () -import Cardano.Ledger.Allegra.Rules.Ppup () -import Cardano.Ledger.Allegra.Rules.Utxo -import Cardano.Ledger.Allegra.Rules.Utxow -import Cardano.Ledger.Shelley.Rules (ShelleyTickEvent) - -type instance EraRuleEvent "TICK" (AllegraEra c) = ShelleyTickEvent (AllegraEra c) diff --git a/eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Bbody.hs b/eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Bbody.hs deleted file mode 100644 index b8f1338482e..00000000000 --- a/eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Bbody.hs +++ /dev/null @@ -1,53 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Allegra.Rules.Bbody () where - -import Cardano.Ledger.Allegra.Era (AllegraEra) -import Cardano.Ledger.Allegra.Rules.Ledgers () -import Cardano.Ledger.Core -import Cardano.Ledger.Shelley.Rules ( - ShelleyBbodyPredFailure (..), - ShelleyDelegPredFailure, - ShelleyDelegsPredFailure, - ShelleyDelplPredFailure, - ShelleyLedgerPredFailure, - ShelleyLedgersPredFailure, - ShelleyPoolPredFailure, - ShelleyPpupPredFailure, - ShelleyUtxoPredFailure, - ShelleyUtxowPredFailure, - ) - -type instance EraRuleFailure "BBODY" (AllegraEra c) = ShelleyBbodyPredFailure (AllegraEra c) - -instance InjectRuleFailure "BBODY" ShelleyBbodyPredFailure (AllegraEra c) - -instance InjectRuleFailure "BBODY" ShelleyLedgersPredFailure (AllegraEra c) where - injectFailure = LedgersFailure - -instance InjectRuleFailure "BBODY" ShelleyLedgerPredFailure (AllegraEra c) where - injectFailure = LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyUtxowPredFailure (AllegraEra c) where - injectFailure = LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyUtxoPredFailure (AllegraEra c) where - injectFailure = LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyPpupPredFailure (AllegraEra c) where - injectFailure = LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyDelegsPredFailure (AllegraEra c) where - injectFailure = LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyDelplPredFailure (AllegraEra c) where - injectFailure = LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyPoolPredFailure (AllegraEra c) where - injectFailure = LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyDelegPredFailure (AllegraEra c) where - injectFailure = LedgersFailure . injectFailure diff --git a/eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Deleg.hs b/eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Deleg.hs deleted file mode 100644 index 87193b7b0a2..00000000000 --- a/eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Deleg.hs +++ /dev/null @@ -1,16 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Allegra.Rules.Deleg () where - -import Cardano.Ledger.Allegra.Era (AllegraEra) -import Cardano.Ledger.Core -import Cardano.Ledger.Shelley.Rules ( - ShelleyDelegPredFailure, - ) - -type instance EraRuleFailure "DELEG" (AllegraEra c) = ShelleyDelegPredFailure (AllegraEra c) - -instance InjectRuleFailure "DELEG" ShelleyDelegPredFailure (AllegraEra c) diff --git a/eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Delegs.hs b/eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Delegs.hs deleted file mode 100644 index 868ef085f8a..00000000000 --- a/eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Delegs.hs +++ /dev/null @@ -1,29 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Allegra.Rules.Delegs () where - -import Cardano.Ledger.Allegra.Era (AllegraEra) -import Cardano.Ledger.Allegra.Rules.Delpl () -import Cardano.Ledger.Core -import Cardano.Ledger.Shelley.Rules ( - ShelleyDelegPredFailure, - ShelleyDelegsPredFailure (..), - ShelleyDelplPredFailure, - ShelleyPoolPredFailure, - ) - -type instance EraRuleFailure "DELEGS" (AllegraEra c) = ShelleyDelegsPredFailure (AllegraEra c) - -instance InjectRuleFailure "DELEGS" ShelleyDelegsPredFailure (AllegraEra c) - -instance InjectRuleFailure "DELEGS" ShelleyDelplPredFailure (AllegraEra c) where - injectFailure = DelplFailure - -instance InjectRuleFailure "DELEGS" ShelleyPoolPredFailure (AllegraEra c) where - injectFailure = DelplFailure . injectFailure - -instance InjectRuleFailure "DELEGS" ShelleyDelegPredFailure (AllegraEra c) where - injectFailure = DelplFailure . injectFailure diff --git a/eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Delpl.hs b/eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Delpl.hs deleted file mode 100644 index 4922e3e4ba2..00000000000 --- a/eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Delpl.hs +++ /dev/null @@ -1,26 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Allegra.Rules.Delpl () where - -import Cardano.Ledger.Allegra.Era (AllegraEra) -import Cardano.Ledger.Allegra.Rules.Deleg () -import Cardano.Ledger.Allegra.Rules.Pool () -import Cardano.Ledger.Core -import Cardano.Ledger.Shelley.Rules ( - ShelleyDelegPredFailure, - ShelleyDelplPredFailure (..), - ShelleyPoolPredFailure, - ) - -type instance EraRuleFailure "DELPL" (AllegraEra c) = ShelleyDelplPredFailure (AllegraEra c) - -instance InjectRuleFailure "DELPL" ShelleyDelplPredFailure (AllegraEra c) - -instance InjectRuleFailure "DELPL" ShelleyPoolPredFailure (AllegraEra c) where - injectFailure = PoolFailure - -instance InjectRuleFailure "DELPL" ShelleyDelegPredFailure (AllegraEra c) where - injectFailure = DelegFailure diff --git a/eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Ledger.hs b/eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Ledger.hs deleted file mode 100644 index fc6efa2494c..00000000000 --- a/eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Ledger.hs +++ /dev/null @@ -1,49 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Allegra.Rules.Ledger () where - -import Cardano.Ledger.Allegra.Era (AllegraEra) -import Cardano.Ledger.Allegra.Rules.Delegs () -import Cardano.Ledger.Allegra.Rules.Utxow () -import Cardano.Ledger.Core -import Cardano.Ledger.Shelley.Rules ( - ShelleyDelegPredFailure, - ShelleyDelegsPredFailure, - ShelleyDelplPredFailure, - ShelleyLedgerEvent, - ShelleyLedgerPredFailure (..), - ShelleyPoolPredFailure, - ShelleyPpupPredFailure, - ShelleyUtxoPredFailure, - ShelleyUtxowPredFailure, - ) - -type instance EraRuleFailure "LEDGER" (AllegraEra c) = ShelleyLedgerPredFailure (AllegraEra c) - -instance InjectRuleFailure "LEDGER" ShelleyLedgerPredFailure (AllegraEra c) - -instance InjectRuleFailure "LEDGER" ShelleyUtxowPredFailure (AllegraEra c) where - injectFailure = UtxowFailure - -instance InjectRuleFailure "LEDGER" ShelleyUtxoPredFailure (AllegraEra c) where - injectFailure = UtxowFailure . injectFailure - -instance InjectRuleFailure "LEDGER" ShelleyPpupPredFailure (AllegraEra c) where - injectFailure = UtxowFailure . injectFailure - -instance InjectRuleFailure "LEDGER" ShelleyDelegsPredFailure (AllegraEra c) where - injectFailure = DelegsFailure - -instance InjectRuleFailure "LEDGER" ShelleyDelplPredFailure (AllegraEra c) where - injectFailure = DelegsFailure . injectFailure - -instance InjectRuleFailure "LEDGER" ShelleyPoolPredFailure (AllegraEra c) where - injectFailure = DelegsFailure . injectFailure - -instance InjectRuleFailure "LEDGER" ShelleyDelegPredFailure (AllegraEra c) where - injectFailure = DelegsFailure . injectFailure - -type instance EraRuleEvent "LEDGER" (AllegraEra c) = ShelleyLedgerEvent (AllegraEra c) diff --git a/eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Ledgers.hs b/eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Ledgers.hs deleted file mode 100644 index bb1622e7eea..00000000000 --- a/eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Ledgers.hs +++ /dev/null @@ -1,49 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Allegra.Rules.Ledgers () where - -import Cardano.Ledger.Allegra.Era (AllegraEra) -import Cardano.Ledger.Allegra.Rules.Ledger () -import Cardano.Ledger.Core -import Cardano.Ledger.Shelley.Rules ( - ShelleyDelegPredFailure, - ShelleyDelegsPredFailure, - ShelleyDelplPredFailure, - ShelleyLedgerPredFailure, - ShelleyLedgersPredFailure (..), - ShelleyPoolPredFailure, - ShelleyPpupPredFailure, - ShelleyUtxoPredFailure, - ShelleyUtxowPredFailure, - ) - -type instance EraRuleFailure "LEDGERS" (AllegraEra c) = ShelleyLedgersPredFailure (AllegraEra c) - -instance InjectRuleFailure "LEDGERS" ShelleyLedgersPredFailure (AllegraEra c) - -instance InjectRuleFailure "LEDGERS" ShelleyLedgerPredFailure (AllegraEra c) where - injectFailure = LedgerFailure - -instance InjectRuleFailure "LEDGERS" ShelleyUtxowPredFailure (AllegraEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ShelleyUtxoPredFailure (AllegraEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ShelleyPpupPredFailure (AllegraEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ShelleyDelegsPredFailure (AllegraEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ShelleyDelplPredFailure (AllegraEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ShelleyPoolPredFailure (AllegraEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ShelleyDelegPredFailure (AllegraEra c) where - injectFailure = LedgerFailure . injectFailure diff --git a/eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Pool.hs b/eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Pool.hs deleted file mode 100644 index 8ef0bd8cdf0..00000000000 --- a/eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Pool.hs +++ /dev/null @@ -1,14 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Allegra.Rules.Pool () where - -import Cardano.Ledger.Allegra.Era (AllegraEra) -import Cardano.Ledger.Core -import Cardano.Ledger.Shelley.Rules (ShelleyPoolPredFailure) - -type instance EraRuleFailure "POOL" (AllegraEra c) = ShelleyPoolPredFailure (AllegraEra c) - -instance InjectRuleFailure "POOL" ShelleyPoolPredFailure (AllegraEra c) diff --git a/eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Ppup.hs b/eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Ppup.hs deleted file mode 100644 index 99a1394165a..00000000000 --- a/eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Ppup.hs +++ /dev/null @@ -1,14 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Allegra.Rules.Ppup () where - -import Cardano.Ledger.Allegra.Era (AllegraEra) -import Cardano.Ledger.Core -import Cardano.Ledger.Shelley.Rules (ShelleyPpupPredFailure) - -type instance EraRuleFailure "PPUP" (AllegraEra c) = ShelleyPpupPredFailure (AllegraEra c) - -instance InjectRuleFailure "PPUP" ShelleyPpupPredFailure (AllegraEra c) diff --git a/eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Utxo.hs b/eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Utxo.hs deleted file mode 100644 index c136df23b4b..00000000000 --- a/eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Utxo.hs +++ /dev/null @@ -1,482 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Allegra.Rules.Utxo ( - AllegraUTXO, - AllegraUtxoEvent (..), - AllegraUtxoPredFailure (..), - validateOutsideValidityIntervalUTxO, - shelleyToAllegraUtxoPredFailure, -) -where - -import Cardano.Ledger.Address (Addr, RewardAccount) -import Cardano.Ledger.Allegra.Core -import Cardano.Ledger.Allegra.Era (AllegraEra, AllegraUTXO) -import Cardano.Ledger.Allegra.Rules.Ppup () -import Cardano.Ledger.Allegra.Scripts (inInterval) -import Cardano.Ledger.BaseTypes ( - Network, - ProtVer (pvMajor), - ShelleyBase, - StrictMaybe (..), - networkId, - ) -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - decodeRecordSum, - encodeListLen, - invalidKey, - serialize, - ) -import Cardano.Ledger.CertState (certDState, dsGenDelegs) -import Cardano.Ledger.Coin (Coin) -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Rules.ValidationMode (Test, runTest) -import Cardano.Ledger.SafeHash (SafeHash, hashAnnotated) -import qualified Cardano.Ledger.Shelley.LedgerState as Shelley -import Cardano.Ledger.Shelley.PParams (Update) -import Cardano.Ledger.Shelley.Rules ( - PpupEnv (..), - ShelleyPPUP, - ShelleyPpupPredFailure, - ) -import qualified Cardano.Ledger.Shelley.Rules as Shelley -import Cardano.Ledger.TxIn (TxIn) -import Cardano.Ledger.UTxO ( - EraUTxO (..), - UTxO (..), - txouts, - ) -import qualified Cardano.Ledger.Val as Val -import Cardano.Slotting.Slot (SlotNo) -import Control.DeepSeq (NFData) -import Control.Monad.Trans.Reader (asks) -import Control.State.Transition.Extended -import qualified Data.ByteString.Lazy as BSL (length) -import Data.Foldable (toList) -import Data.Int (Int64) -import qualified Data.Map.Strict as Map -import Data.Set (Set) -import Data.Word (Word8) -import GHC.Generics (Generic) -import Lens.Micro -import NoThunks.Class (NoThunks) -import Validation - --- ========================================================== - -data AllegraUtxoPredFailure era - = BadInputsUTxO - !(Set (TxIn (EraCrypto era))) -- The bad transaction inputs - | OutsideValidityIntervalUTxO - !ValidityInterval -- transaction's validity interval - !SlotNo -- current slot - | MaxTxSizeUTxO - !Integer -- the actual transaction size - !Integer -- the max transaction size - | InputSetEmptyUTxO - | FeeTooSmallUTxO - !Coin -- the minimum fee for this transaction - !Coin -- the fee supplied in this transaction - | ValueNotConservedUTxO - !(Value era) -- the Coin consumed by this transaction - !(Value era) -- the Coin produced by this transaction - | WrongNetwork - !Network -- the expected network id - !(Set (Addr (EraCrypto era))) -- the set of addresses with incorrect network IDs - | WrongNetworkWithdrawal - !Network -- the expected network id - !(Set (RewardAccount (EraCrypto era))) -- the set of reward addresses with incorrect network IDs - | OutputTooSmallUTxO - ![TxOut era] -- list of supplied transaction outputs that are too small - | UpdateFailure (EraRuleFailure "PPUP" era) -- Subtransition Failures - | OutputBootAddrAttrsTooBig - ![TxOut era] -- list of supplied bad transaction outputs - | -- Kept for backwards compatibility: no longer used because the `MultiAsset` type of mint doesn't allow for this possibility - TriesToForgeADA -- TODO: remove - | OutputTooBigUTxO - ![TxOut era] -- list of supplied bad transaction outputs - deriving (Generic) - -type instance EraRuleFailure "UTXO" (AllegraEra c) = AllegraUtxoPredFailure (AllegraEra c) - -instance InjectRuleFailure "UTXO" AllegraUtxoPredFailure (AllegraEra c) - -instance InjectRuleFailure "UTXO" ShelleyPpupPredFailure (AllegraEra c) where - injectFailure = UpdateFailure - -instance InjectRuleFailure "UTXO" Shelley.ShelleyUtxoPredFailure (AllegraEra c) where - injectFailure = shelleyToAllegraUtxoPredFailure - -deriving stock instance - ( Show (TxOut era) - , Show (Value era) - , Show (EraRuleFailure "PPUP" era) - ) => - Show (AllegraUtxoPredFailure era) - -deriving stock instance - ( Eq (TxOut era) - , Eq (Value era) - , Eq (EraRuleFailure "PPUP" era) - ) => - Eq (AllegraUtxoPredFailure era) - -instance - ( NoThunks (TxOut era) - , NoThunks (Value era) - , NoThunks (EraRuleFailure "PPUP" era) - ) => - NoThunks (AllegraUtxoPredFailure era) - -instance - ( Era era - , NFData (TxOut era) - , NFData (Value era) - , NFData (EraRuleFailure "PPUP" era) - ) => - NFData (AllegraUtxoPredFailure era) - -data AllegraUtxoEvent era - = UpdateEvent (Event (EraRule "PPUP" era)) - | TotalDeposits (SafeHash (EraCrypto era) EraIndependentTxBody) Coin - | -- | The UTxOs consumed and created by a signal tx - TxUTxODiff - -- | UTxO consumed - (UTxO era) - -- | UTxO created - (UTxO era) - deriving (Generic) - -deriving instance - ( Era era - , Eq (TxOut era) - , Eq (Event (EraRule "PPUP" era)) - ) => - Eq (AllegraUtxoEvent era) - -instance - ( Era era - , NFData (TxOut era) - , NFData (Event (EraRule "PPUP" era)) - ) => - NFData (AllegraUtxoEvent era) - --- | The UTxO transition rule for the Allegra era. -utxoTransition :: - forall era. - ( EraUTxO era - , ShelleyEraTxBody era - , AllegraEraTxBody era - , Eq (EraRuleFailure "PPUP" era) - , Show (EraRuleFailure "PPUP" era) - , Embed (EraRule "PPUP" era) (EraRule "UTXO" era) - , Environment (EraRule "PPUP" era) ~ PpupEnv era - , State (EraRule "PPUP" era) ~ ShelleyGovState era - , Signal (EraRule "PPUP" era) ~ StrictMaybe (Update era) - , GovState era ~ ShelleyGovState era - , InjectRuleFailure "UTXO" AllegraUtxoPredFailure era - , InjectRuleFailure "UTXO" Shelley.ShelleyUtxoPredFailure era - , EraRule "UTXO" era ~ AllegraUTXO era - ) => - TransitionRule (EraRule "UTXO" era) -utxoTransition = do - TRC (Shelley.UtxoEnv slot pp certState, utxos, tx) <- judgmentContext - let Shelley.UTxOState utxo _ _ ppup _ _ = utxos - txBody = tx ^. bodyTxL - genDelegs = dsGenDelegs (certDState certState) - - {- ininterval slot (txvld tx) -} - runTest $ validateOutsideValidityIntervalUTxO slot txBody - - {- txins txb ≠ ∅ -} - runTest $ Shelley.validateInputSetEmptyUTxO txBody - - {- minfee pp tx ≤ txfee txb -} - runTest $ Shelley.validateFeeTooSmallUTxO pp tx utxo - - {- txins txb ⊆ dom utxo -} - runTest $ Shelley.validateBadInputsUTxO utxo $ txBody ^. inputsTxBodyL - - netId <- liftSTS $ asks networkId - - {- ∀(_ → (a, _)) ∈ txouts txb, netId a = NetworkId -} - runTest $ Shelley.validateWrongNetwork netId . toList $ txBody ^. outputsTxBodyL - - {- ∀(a → ) ∈ txwdrls txb, netId a = NetworkId -} - runTest $ Shelley.validateWrongNetworkWithdrawal netId txBody - - {- consumed pp utxo txb = produced pp poolParams txb -} - runTest $ Shelley.validateValueNotConservedUTxO pp utxo certState txBody - - -- process Protocol Parameter Update Proposals - ppup' <- - trans @(EraRule "PPUP" era) $ TRC (PPUPEnv slot pp genDelegs, ppup, txBody ^. updateTxBodyL) - - {- adaPolicy ∉ supp mint tx - above check not needed because mint field of type MultiAsset cannot contain ada -} - - let outputs = txouts txBody - {- ∀ txout ∈ txouts txb, getValue txout ≥ inject (scaledMinDeposit v (minUTxOValue pp)) -} - runTest $ validateOutputTooSmallUTxO pp outputs - - {- ∀ txout ∈ txouts txb, serSize (getValue txout) ≤ MaxValSize -} - -- MaxValSize = 4000 - runTest $ validateOutputTooBigUTxO pp outputs - - {- ∀ ( _ ↦ (a,_)) ∈ txoutstxb, a ∈ Addrbootstrap → bootstrapAttrsSize a ≤ 64 -} - runTest $ Shelley.validateOutputBootAddrAttrsTooBig (Map.elems (unUTxO outputs)) - - {- txsize tx ≤ maxTxSize pp -} - runTest $ Shelley.validateMaxTxSizeUTxO pp tx - - Shelley.updateUTxOState - pp - utxos - txBody - certState - ppup' - (tellEvent . TotalDeposits (hashAnnotated txBody)) - (\a b -> tellEvent $ TxUTxODiff a b) - --- | Ensure the transaction is within the validity window. --- --- > ininterval slot (txvld tx) -validateOutsideValidityIntervalUTxO :: - AllegraEraTxBody era => - SlotNo -> - TxBody era -> - Test (AllegraUtxoPredFailure era) -validateOutsideValidityIntervalUTxO slot txb = - failureUnless (inInterval slot (txb ^. vldtTxBodyL)) $ - OutsideValidityIntervalUTxO (txb ^. vldtTxBodyL) slot - --- | Ensure that there are no `TxOut`s that have `Value` of size larger than @MaxValSize@ --- --- > ∀ txout ∈ txouts txb, serSize (getValue txout) ≤ MaxValSize -validateOutputTooBigUTxO :: - EraTxOut era => - PParams era -> - UTxO era -> - Test (AllegraUtxoPredFailure era) -validateOutputTooBigUTxO pp (UTxO outputs) = - failureUnless (null outputsTooBig) $ OutputTooBigUTxO outputsTooBig - where - version = pvMajor (pp ^. ppProtocolVersionL) - maxValSize = 4000 :: Int64 - outputsTooBig = - filter - ( \out -> - let v = out ^. valueTxOutL - in BSL.length (serialize version v) > maxValSize - ) - (Map.elems outputs) - --- | Ensure that there are no `TxOut`s that have value less than the scaled @minUTxOValue@ --- --- > ∀ txout ∈ txouts txb, getValue txout ≥ inject (scaledMinDeposit v (minUTxOValue pp)) -validateOutputTooSmallUTxO :: - EraTxOut era => - PParams era -> - UTxO era -> - Test (AllegraUtxoPredFailure era) -validateOutputTooSmallUTxO pp (UTxO outputs) = - failureUnless (null outputsTooSmall) $ OutputTooSmallUTxO outputsTooSmall - where - outputsTooSmall = - filter - ( \txOut -> - let v = txOut ^. valueTxOutL - in Val.pointwise (<) v (Val.inject $ getMinCoinTxOut pp txOut) - ) - (Map.elems outputs) - --------------------------------------------------------------------------------- --- UTXO STS --------------------------------------------------------------------------------- -instance - forall era. - ( EraTx era - , EraUTxO era - , ShelleyEraTxBody era - , AllegraEraTxBody era - , Embed (EraRule "PPUP" era) (AllegraUTXO era) - , Environment (EraRule "PPUP" era) ~ PpupEnv era - , State (EraRule "PPUP" era) ~ ShelleyGovState era - , Signal (EraRule "PPUP" era) ~ StrictMaybe (Update era) - , ProtVerAtMost era 8 - , Eq (EraRuleFailure "PPUP" era) - , Show (EraRuleFailure "PPUP" era) - , EraRule "UTXO" era ~ AllegraUTXO era - , GovState era ~ ShelleyGovState era - , InjectRuleFailure "UTXO" AllegraUtxoPredFailure era - , InjectRuleFailure "UTXO" Shelley.ShelleyUtxoPredFailure era - ) => - STS (AllegraUTXO era) - where - type State (AllegraUTXO era) = Shelley.UTxOState era - type Signal (AllegraUTXO era) = Tx era - type Environment (AllegraUTXO era) = Shelley.UtxoEnv era - type BaseM (AllegraUTXO era) = ShelleyBase - type PredicateFailure (AllegraUTXO era) = AllegraUtxoPredFailure era - type Event (AllegraUTXO era) = AllegraUtxoEvent era - - initialRules = [] - transitionRules = [utxoTransition] - -instance - ( Era era - , STS (ShelleyPPUP era) - , EraRuleFailure "PPUP" era ~ ShelleyPpupPredFailure era - , Event (EraRule "PPUP" era) ~ Event (ShelleyPPUP era) - ) => - Embed (ShelleyPPUP era) (AllegraUTXO era) - where - wrapFailed = UpdateFailure - wrapEvent = UpdateEvent - --------------------------------------------------------------------------------- --- Serialisation --------------------------------------------------------------------------------- -instance - ( Era era - , Crypto (EraCrypto era) - , EncCBOR (Value era) - , EncCBOR (TxOut era) - , EncCBOR (EraRuleFailure "PPUP" era) - ) => - EncCBOR (AllegraUtxoPredFailure era) - where - encCBOR = \case - BadInputsUTxO ins -> - encodeListLen 2 <> encCBOR (0 :: Word8) <> encCBOR ins - (OutsideValidityIntervalUTxO a b) -> - encodeListLen 3 - <> encCBOR (1 :: Word8) - <> encCBOR a - <> encCBOR b - (MaxTxSizeUTxO a b) -> - encodeListLen 3 - <> encCBOR (2 :: Word8) - <> encCBOR a - <> encCBOR b - InputSetEmptyUTxO -> encodeListLen 1 <> encCBOR (3 :: Word8) - (FeeTooSmallUTxO a b) -> - encodeListLen 3 - <> encCBOR (4 :: Word8) - <> encCBOR a - <> encCBOR b - (ValueNotConservedUTxO a b) -> - encodeListLen 3 - <> encCBOR (5 :: Word8) - <> encCBOR a - <> encCBOR b - OutputTooSmallUTxO outs -> - encodeListLen 2 - <> encCBOR (6 :: Word8) - <> encCBOR outs - (UpdateFailure a) -> - encodeListLen 2 - <> encCBOR (7 :: Word8) - <> encCBOR a - (WrongNetwork right wrongs) -> - encodeListLen 3 - <> encCBOR (8 :: Word8) - <> encCBOR right - <> encCBOR wrongs - (WrongNetworkWithdrawal right wrongs) -> - encodeListLen 3 - <> encCBOR (9 :: Word8) - <> encCBOR right - <> encCBOR wrongs - OutputBootAddrAttrsTooBig outs -> - encodeListLen 2 - <> encCBOR (10 :: Word8) - <> encCBOR outs - TriesToForgeADA -> encodeListLen 1 <> encCBOR (11 :: Word8) - OutputTooBigUTxO outs -> - encodeListLen 2 - <> encCBOR (12 :: Word8) - <> encCBOR outs - -instance - ( EraTxOut era - , DecCBOR (EraRuleFailure "PPUP" era) - ) => - DecCBOR (AllegraUtxoPredFailure era) - where - decCBOR = - decodeRecordSum "PredicateFailureUTXO" $ - \case - 0 -> do - ins <- decCBOR - pure (2, BadInputsUTxO ins) -- The (2,..) indicates the number of things decoded, INCLUDING the tags, which are decoded by decodeRecordSumNamed - 1 -> do - a <- decCBOR - b <- decCBOR - pure (3, OutsideValidityIntervalUTxO a b) - 2 -> do - a <- decCBOR - b <- decCBOR - pure (3, MaxTxSizeUTxO a b) - 3 -> pure (1, InputSetEmptyUTxO) - 4 -> do - a <- decCBOR - b <- decCBOR - pure (3, FeeTooSmallUTxO a b) - 5 -> do - a <- decCBOR - b <- decCBOR - pure (3, ValueNotConservedUTxO a b) - 6 -> do - outs <- decCBOR - pure (2, OutputTooSmallUTxO outs) - 7 -> do - a <- decCBOR - pure (2, UpdateFailure a) - 8 -> do - right <- decCBOR - wrongs <- decCBOR - pure (3, WrongNetwork right wrongs) - 9 -> do - right <- decCBOR - wrongs <- decCBOR - pure (3, WrongNetworkWithdrawal right wrongs) - 10 -> do - outs <- decCBOR - pure (2, OutputBootAddrAttrsTooBig outs) - 11 -> pure (1, TriesToForgeADA) - 12 -> do - outs <- decCBOR - pure (2, OutputTooBigUTxO outs) - k -> invalidKey k - -shelleyToAllegraUtxoPredFailure :: Shelley.ShelleyUtxoPredFailure era -> AllegraUtxoPredFailure era -shelleyToAllegraUtxoPredFailure = \case - Shelley.BadInputsUTxO ins -> BadInputsUTxO ins - Shelley.ExpiredUTxO ttl current -> - OutsideValidityIntervalUTxO (ValidityInterval SNothing (SJust ttl)) current - Shelley.MaxTxSizeUTxO a m -> MaxTxSizeUTxO a m - Shelley.InputSetEmptyUTxO -> InputSetEmptyUTxO - Shelley.FeeTooSmallUTxO mf af -> FeeTooSmallUTxO mf af - Shelley.ValueNotConservedUTxO vc vp -> ValueNotConservedUTxO vc vp - Shelley.WrongNetwork n as -> WrongNetwork n as - Shelley.WrongNetworkWithdrawal n as -> WrongNetworkWithdrawal n as - Shelley.OutputTooSmallUTxO x -> OutputTooSmallUTxO x - Shelley.UpdateFailure x -> UpdateFailure x - Shelley.OutputBootAddrAttrsTooBig outs -> OutputTooBigUTxO outs diff --git a/eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Utxow.hs b/eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Utxow.hs deleted file mode 100644 index 604692c8fa6..00000000000 --- a/eras/allegra/impl/src/Cardano/Ledger/Allegra/Rules/Utxow.hs +++ /dev/null @@ -1,99 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Allegra.Rules.Utxow (AllegraUTXOW) where - -import Cardano.Ledger.Allegra.Core -import Cardano.Ledger.Allegra.Era (AllegraEra, AllegraUTXOW) -import Cardano.Ledger.Allegra.Rules.Utxo (AllegraUTXO, AllegraUtxoPredFailure) -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.Keys (DSignable, Hash) -import Cardano.Ledger.Shelley.LedgerState (UTxOState) -import Cardano.Ledger.Shelley.Rules ( - ShelleyPpupPredFailure, - ShelleyUtxoPredFailure, - ShelleyUtxowEvent (..), - ShelleyUtxowPredFailure (..), - UtxoEnv, - transitionRulesUTXOW, - ) -import qualified Cardano.Ledger.Shelley.Rules as Shelley -import Cardano.Ledger.Shelley.UTxO (ShelleyScriptsNeeded) -import Cardano.Ledger.UTxO (EraUTxO (..)) -import Control.State.Transition.Extended - -type instance EraRuleFailure "UTXOW" (AllegraEra c) = ShelleyUtxowPredFailure (AllegraEra c) - -instance InjectRuleFailure "UTXOW" ShelleyUtxowPredFailure (AllegraEra c) - -instance InjectRuleFailure "UTXOW" AllegraUtxoPredFailure (AllegraEra c) where - injectFailure = UtxoFailure - -instance InjectRuleFailure "UTXOW" ShelleyUtxoPredFailure (AllegraEra c) where - injectFailure = UtxoFailure . injectFailure - -instance InjectRuleFailure "UTXOW" ShelleyPpupPredFailure (AllegraEra c) where - injectFailure = UtxoFailure . injectFailure - --------------------------------------------------------------------------------- --- UTXOW STS --------------------------------------------------------------------------------- - -instance - forall era. - ( EraTx era - , EraUTxO era - , ShelleyEraTxBody era - , ScriptsNeeded era ~ ShelleyScriptsNeeded era - , -- Allow UTXOW to call UTXO - Embed (EraRule "UTXO" era) (AllegraUTXOW era) - , Environment (EraRule "UTXO" era) ~ UtxoEnv era - , State (EraRule "UTXO" era) ~ UTxOState era - , Signal (EraRule "UTXO" era) ~ Tx era - , EraRule "UTXOW" era ~ AllegraUTXOW era - , InjectRuleFailure "UTXOW" ShelleyUtxowPredFailure era - , DSignable (EraCrypto era) (Hash (EraCrypto era) EraIndependentTxBody) - ) => - STS (AllegraUTXOW era) - where - type State (AllegraUTXOW era) = UTxOState era - type Signal (AllegraUTXOW era) = Tx era - type Environment (AllegraUTXOW era) = UtxoEnv era - type BaseM (AllegraUTXOW era) = ShelleyBase - type PredicateFailure (AllegraUTXOW era) = ShelleyUtxowPredFailure era - type Event (AllegraUTXOW era) = ShelleyUtxowEvent era - - transitionRules = [transitionRulesUTXOW] - - -- The Allegra Era uses the same PredicateFailure type - -- as Shelley, so the 'embed' function is identity - initialRules = [] - -instance - ( Era era - , STS (AllegraUTXO era) - , PredicateFailure (EraRule "UTXO" era) ~ AllegraUtxoPredFailure era - , Event (EraRule "UTXO" era) ~ Event (AllegraUTXO era) - ) => - Embed (AllegraUTXO era) (AllegraUTXOW era) - where - wrapFailed = UtxoFailure - wrapEvent = UtxoEvent - -instance - ( Era era - , STS (AllegraUTXOW era) - , PredicateFailure (EraRule "UTXOW" era) ~ ShelleyUtxowPredFailure era - , Event (EraRule "UTXOW" era) ~ Event (AllegraUTXOW era) - ) => - Embed (AllegraUTXOW era) (Shelley.ShelleyLEDGER era) - where - wrapFailed = Shelley.UtxowFailure - wrapEvent = Shelley.UtxowEvent diff --git a/eras/allegra/impl/src/Cardano/Ledger/Allegra/Scripts.hs b/eras/allegra/impl/src/Cardano/Ledger/Allegra/Scripts.hs deleted file mode 100644 index d2853b404d7..00000000000 --- a/eras/allegra/impl/src/Cardano/Ledger/Allegra/Scripts.hs +++ /dev/null @@ -1,343 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE ViewPatterns #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Allegra.Scripts ( - Timelock ( - RequireSignature, - RequireAllOf, - RequireAnyOf, - RequireMOf, - RequireTimeExpire, - RequireTimeStart - ), - TimelockRaw, - pattern TimelockConstr, - inInterval, - showTimelock, - evalTimelock, - eqTimelockRaw, - ValidityInterval (..), - encodeVI, - decodeVI, - -- translate, - translateTimelock, -) -where - -import Cardano.Crypto.Hash.Class (HashAlgorithm) -import Cardano.Ledger.Allegra.Era (AllegraEra) -import Cardano.Ledger.BaseTypes (StrictMaybe (SJust, SNothing)) -import Cardano.Ledger.Binary ( - Annotator (..), - DecCBOR (decCBOR), - EncCBOR (encCBOR), - ToCBOR (..), - ) -import Cardano.Ledger.Binary.Coders ( - Decode (..), - Density (..), - Encode (..), - Wrapped (..), - decode, - encode, - (!>), - ( Encode ('Closed 'Dense) ValidityInterval -encodeVI (ValidityInterval f t) = Rec ValidityInterval !> To f !> To t - -instance EncCBOR ValidityInterval where - encCBOR vi = encode (encodeVI vi) - -decodeVI :: Decode ('Closed 'Dense) ValidityInterval -decodeVI = RecD ValidityInterval NoThunks (TimelockRaw era) - -deriving instance HashAlgorithm (HASH (EraCrypto era)) => Show (TimelockRaw era) - --- | This function deconstructs and then reconstructs the timelock script --- to prove the compiler that we can arbirarily switch out the eras as long --- as the cryptos for both eras are the same. -translateTimelock :: - forall era1 era2. - ( Era era1 - , Era era2 - , EraCrypto era1 ~ EraCrypto era2 - ) => - Timelock era1 -> - Timelock era2 -translateTimelock (TimelockConstr (Memo tl bs)) = - let rewrap rtl = TimelockConstr $ mkMemoBytes rtl (fromStrict $ fromShort bs) - in case tl of - Signature s -> rewrap $ Signature s - AllOf l -> rewrap . AllOf $ translateTimelock <$> l - AnyOf l -> rewrap . AnyOf $ translateTimelock <$> l - MOfN n l -> rewrap $ MOfN n (translateTimelock <$> l) - TimeStart x -> rewrap $ TimeStart x - TimeExpire x -> rewrap $ TimeExpire x - --- These coding choices are chosen so that a MultiSig script --- can be deserialised as a Timelock script - -instance Era era => EncCBOR (TimelockRaw era) where - encCBOR = - encode . \case - Signature hash -> Sum Signature 0 !> To hash - AllOf xs -> Sum AllOf 1 !> To xs - AnyOf xs -> Sum AnyOf 2 !> To xs - MOfN m xs -> Sum MOfN 3 !> To m !> To xs - TimeStart m -> Sum TimeStart 4 !> To m - TimeExpire m -> Sum TimeExpire 5 !> To m - --- This instance allows us to derive instance DecCBOR (Annotator (Timelock crypto)). --- Since Timelock is a newtype around (Memo (Timelock crypto)). - -instance Era era => DecCBOR (Annotator (TimelockRaw era)) where - decCBOR = decode (Summands "TimelockRaw" decRaw) - where - decRaw :: Word -> Decode 'Open (Annotator (TimelockRaw era)) - decRaw 0 = Ann (SumD Signature decCBOR) - decRaw 2 = Ann (SumD AnyOf) <*! D (sequence <$> decCBOR) - decRaw 3 = Ann (SumD MOfN) <*! Ann From <*! D (sequence <$> decCBOR) - decRaw 4 = Ann (SumD TimeStart EncCBOR (Timelock era) - -instance Memoized Timelock where - type RawType Timelock = TimelockRaw - -deriving instance HashAlgorithm (HASH (EraCrypto era)) => Show (Timelock era) - --- | Since Timelock scripts are a strictly backwards compatible extension of --- MultiSig scripts, we can use the same 'scriptPrefixTag' tag here as we did --- for the ValidateScript instance in MultiSig -instance Crypto c => EraScript (AllegraEra c) where - type Script (AllegraEra c) = Timelock (AllegraEra c) - type NativeScript (AllegraEra c) = Timelock (AllegraEra c) - - upgradeScript = \case - Shelley.RequireSignature keyHash -> RequireSignature keyHash - Shelley.RequireAllOf sigs -> RequireAllOf $ Seq.fromList $ map upgradeScript sigs - Shelley.RequireAnyOf sigs -> RequireAnyOf $ Seq.fromList $ map upgradeScript sigs - Shelley.RequireMOf n sigs -> RequireMOf n $ Seq.fromList $ map upgradeScript sigs - - scriptPrefixTag _script = nativeMultiSigTag -- "\x00" - - getNativeScript = Just - - fromNativeScript = id - -instance EqRaw (Timelock era) where - eqRaw = eqTimelockRaw - -deriving via - Mem TimelockRaw era - instance - Era era => DecCBOR (Annotator (Timelock era)) - -pattern RequireSignature :: Era era => KeyHash 'Witness (EraCrypto era) -> Timelock era -pattern RequireSignature akh <- (getMemoRawType -> Signature akh) - where - RequireSignature akh = mkMemoized (Signature akh) - -pattern RequireAllOf :: Era era => StrictSeq (Timelock era) -> Timelock era -pattern RequireAllOf ms <- (getMemoRawType -> AllOf ms) - where - RequireAllOf ms = mkMemoized (AllOf ms) - -pattern RequireAnyOf :: Era era => StrictSeq (Timelock era) -> Timelock era -pattern RequireAnyOf ms <- (getMemoRawType -> AnyOf ms) - where - RequireAnyOf ms = mkMemoized (AnyOf ms) - -pattern RequireMOf :: Era era => Int -> StrictSeq (Timelock era) -> Timelock era -pattern RequireMOf n ms <- (getMemoRawType -> MOfN n ms) - where - RequireMOf n ms = mkMemoized (MOfN n ms) - -pattern RequireTimeExpire :: Era era => SlotNo -> Timelock era -pattern RequireTimeExpire mslot <- (getMemoRawType -> TimeExpire mslot) - where - RequireTimeExpire mslot = mkMemoized (TimeExpire mslot) - -pattern RequireTimeStart :: Era era => SlotNo -> Timelock era -pattern RequireTimeStart mslot <- (getMemoRawType -> TimeStart mslot) - where - RequireTimeStart mslot = mkMemoized (TimeStart mslot) - -{-# COMPLETE - RequireSignature - , RequireAllOf - , RequireAnyOf - , RequireMOf - , RequireTimeExpire - , RequireTimeStart - #-} - --- ================================================================= --- Evaluating and validating a Timelock - --- | less-than-equal comparison, where Nothing is negative infinity -lteNegInfty :: SlotNo -> StrictMaybe SlotNo -> Bool -lteNegInfty _ SNothing = False -- i > -∞ -lteNegInfty i (SJust j) = i <= j - --- | less-than-equal comparison, where Nothing is positive infinity -ltePosInfty :: StrictMaybe SlotNo -> SlotNo -> Bool -ltePosInfty SNothing _ = False -- ∞ > j -ltePosInfty (SJust i) j = i <= j - -evalTimelock :: - Era era => - Set.Set (KeyHash 'Witness (EraCrypto era)) -> - ValidityInterval -> - Timelock era -> - Bool -evalTimelock vhks (ValidityInterval txStart txExp) = go - where - -- The important part of this validator is that it will stop as soon as it reaches the - -- required number of valid scripts - isValidMOf n SSeq.Empty = n <= 0 - isValidMOf n (ts SSeq.:<| tss) = - n <= 0 || if go ts then isValidMOf (n - 1) tss else isValidMOf n tss - go = \case - RequireTimeStart lockStart -> lockStart `lteNegInfty` txStart - RequireTimeExpire lockExp -> txExp `ltePosInfty` lockExp - RequireSignature hash -> hash `Set.member` vhks - RequireAllOf xs -> all go xs - RequireAnyOf xs -> any go xs - RequireMOf m xs -> isValidMOf m xs - --- ========================================================= --- Operations on Timelock scripts - --- | Test if a slot is in the Validity interval. Recall that a ValidityInterval --- is a half Open interval, that is why we use (slot < top) -inInterval :: SlotNo -> ValidityInterval -> Bool -inInterval _slot (ValidityInterval SNothing SNothing) = True -inInterval slot (ValidityInterval SNothing (SJust top)) = slot < top -inInterval slot (ValidityInterval (SJust bottom) SNothing) = bottom <= slot -inInterval slot (ValidityInterval (SJust bottom) (SJust top)) = - bottom <= slot && slot < top - -showTimelock :: Era era => Timelock era -> String -showTimelock (RequireTimeStart (SlotNo i)) = "(Start >= " ++ show i ++ ")" -showTimelock (RequireTimeExpire (SlotNo i)) = "(Expire < " ++ show i ++ ")" -showTimelock (RequireAllOf xs) = "(AllOf " ++ foldl accum ")" xs - where - accum ans x = showTimelock x ++ " " ++ ans -showTimelock (RequireAnyOf xs) = "(AnyOf " ++ foldl accum ")" xs - where - accum ans x = showTimelock x ++ " " ++ ans -showTimelock (RequireMOf m xs) = "(MOf " ++ show m ++ " " ++ foldl accum ")" xs - where - accum ans x = showTimelock x ++ " " ++ ans -showTimelock (RequireSignature hash) = "(Signature " ++ show hash ++ ")" - --- | Check the equality of two underlying types, while ignoring their binary --- representation, which `Eq` instance normally does. This is used for testing. -eqTimelockRaw :: Timelock era -> Timelock era -> Bool -eqTimelockRaw t1 t2 = go (getMemoRawType t1) (getMemoRawType t2) - where - seqEq Empty Empty = True - seqEq (x :<| xs) (y :<| ys) = eqTimelockRaw x y && seqEq xs ys - seqEq _ _ = False - go (Signature kh1) (Signature kh2) = kh1 == kh2 - go (AllOf ts1) (AllOf ts2) = seqEq ts1 ts2 - go (AnyOf ts1) (AnyOf ts2) = seqEq ts1 ts2 - go (MOfN n1 ts1) (MOfN n2 ts2) = n1 == n2 && seqEq ts1 ts2 - go (TimeStart sn1) (TimeStart sn2) = sn1 == sn2 - go (TimeExpire sn1) (TimeExpire sn2) = sn1 == sn2 - go _ _ = False diff --git a/eras/allegra/impl/src/Cardano/Ledger/Allegra/Transition.hs b/eras/allegra/impl/src/Cardano/Ledger/Allegra/Transition.hs deleted file mode 100644 index 69b14e70e91..00000000000 --- a/eras/allegra/impl/src/Cardano/Ledger/Allegra/Transition.hs +++ /dev/null @@ -1,30 +0,0 @@ -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Allegra.Transition (TransitionConfig (..)) where - -import Cardano.Ledger.Allegra.Era -import Cardano.Ledger.Allegra.Translation () -import Cardano.Ledger.Crypto -import Cardano.Ledger.Shelley -import Cardano.Ledger.Shelley.Transition -import Data.Aeson (FromJSON (..), ToJSON (..)) -import Lens.Micro -import NoThunks.Class (NoThunks (..)) - -instance Crypto c => EraTransition (AllegraEra c) where - newtype TransitionConfig (AllegraEra c) = AllegraTransitionConfig - { atcShelleyTransitionConfig :: TransitionConfig (ShelleyEra c) - } - deriving (Show, Eq, NoThunks, ToJSON, FromJSON) - - mkTransitionConfig () = AllegraTransitionConfig - - injectIntoTestState = registerInitialFundsThenStaking - - tcPreviousEraConfigL = - lens atcShelleyTransitionConfig (\atc pc -> atc {atcShelleyTransitionConfig = pc}) - - tcTranslationContextL = lens (const ()) (const . id) diff --git a/eras/allegra/impl/src/Cardano/Ledger/Allegra/Translation.hs b/eras/allegra/impl/src/Cardano/Ledger/Allegra/Translation.hs deleted file mode 100644 index cb571e32a71..00000000000 --- a/eras/allegra/impl/src/Cardano/Ledger/Allegra/Translation.hs +++ /dev/null @@ -1,170 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Allegra.Translation (shelleyToAllegraAVVMsToDelete) where - -import Cardano.Ledger.Allegra.Era (AllegraEra) -import Cardano.Ledger.Allegra.Tx () -import Cardano.Ledger.Binary (DecoderError) -import Cardano.Ledger.CertState (CommitteeState (..)) -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Shelley (ShelleyEra) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState ( - CertState (..), - DState (..), - EpochState (..), - LedgerState (..), - NewEpochState (..), - PState (..), - UTxOState (..), - VState (..), - returnRedeemAddrsToReserves, - ) -import Cardano.Ledger.Shelley.PParams (ProposedPPUpdates (..), Update (..)) -import Cardano.Ledger.Shelley.Tx (ShelleyTx) -import Cardano.Ledger.Shelley.TxOut (ShelleyTxOut) -import Cardano.Ledger.Shelley.TxWits (ShelleyTxWits) -import Cardano.Ledger.UTxO (UTxO (..)) -import Data.Coerce (coerce) -import qualified Data.Map.Strict as Map - --------------------------------------------------------------------------------- --- Translation from Shelley to Allegra --- --- The instances below are needed by the consensus layer. Do not remove any of --- them without coordinating with consensus. --- --- Please add auxiliary instances and other declarations at the bottom of this --- module, not in the list below so that it remains clear which instances the --- consensus layer needs. --- --- WARNING: when a translation instance currently uses the default --- 'TranslationError', i.e., 'Void', it means the consensus layer relies on it --- being total. Do not change it! --------------------------------------------------------------------------------- - --- | Return the subset of UTxO corresponding to Byron-era AVVM addresses, which --- are to be removed on the Shelley/Allegra boundary. This set will be passed --- _back_ to the translation functions as the UTxO, allowing these addresses to --- be removed. This is needed because we cannot do a full scan on the UTxO at --- this point, since it has been persisted to disk. -shelleyToAllegraAVVMsToDelete :: NewEpochState (ShelleyEra c) -> UTxO (ShelleyEra c) -shelleyToAllegraAVVMsToDelete = stashedAVVMAddresses - -instance Crypto c => TranslateEra (AllegraEra c) NewEpochState where - translateEra ctxt nes = - return $ - NewEpochState - { nesEL = nesEL nes - , nesBprev = nesBprev nes - , nesBcur = nesBcur nes - , nesEs = translateEra' ctxt $ returnRedeemAddrsToReserves $ nesEs nes - , nesRu = nesRu nes - , nesPd = nesPd nes - , -- At this point, the consensus layer has passed in our stashed AVVM - -- addresses as our UTxO, and we have deleted them above (with - -- 'returnRedeemAddrsToReserves'), so we may safely discard this map. - stashedAVVMAddresses = () - } - -instance forall c. Crypto c => TranslateEra (AllegraEra c) ShelleyTx where - type TranslationError (AllegraEra c) ShelleyTx = DecoderError - translateEra _ctx = translateEraThroughCBOR "ShelleyTx" - --------------------------------------------------------------------------------- --- Auxiliary instances and functions --------------------------------------------------------------------------------- - -instance Crypto c => TranslateEra (AllegraEra c) PParams - -instance Crypto c => TranslateEra (AllegraEra c) PParamsUpdate - -instance Crypto c => TranslateEra (AllegraEra c) ProposedPPUpdates where - translateEra ctxt (ProposedPPUpdates ppup) = - return $ ProposedPPUpdates $ Map.map (translateEra' ctxt) ppup - -instance Crypto c => TranslateEra (AllegraEra c) ShelleyGovState where - translateEra ctxt ps = - return - ShelleyGovState - { sgsCurProposals = translateEra' ctxt $ sgsCurProposals ps - , sgsFutureProposals = translateEra' ctxt $ sgsFutureProposals ps - , sgsCurPParams = translateEra' ctxt $ sgsCurPParams ps - , sgsPrevPParams = translateEra' ctxt $ sgsPrevPParams ps - } - -instance Crypto c => TranslateEra (AllegraEra c) ShelleyTxOut where - translateEra () = pure . upgradeTxOut - -instance Crypto c => TranslateEra (AllegraEra c) UTxO where - translateEra ctxt utxo = - return $ UTxO (translateEra' ctxt `Map.map` unUTxO utxo) - -instance Crypto c => TranslateEra (AllegraEra c) UTxOState where - translateEra ctxt us = - return - UTxOState - { utxosUtxo = translateEra' ctxt $ utxosUtxo us - , utxosDeposited = utxosDeposited us - , utxosFees = utxosFees us - , utxosGovState = translateEra' ctxt $ utxosGovState us - , utxosStakeDistr = utxosStakeDistr us - , utxosDonation = utxosDonation us - } - -instance Crypto c => TranslateEra (AllegraEra c) DState where - translateEra _ DState {..} = pure DState {..} - -instance Crypto c => TranslateEra (AllegraEra c) CommitteeState where - translateEra _ CommitteeState {..} = pure CommitteeState {..} - -instance Crypto c => TranslateEra (AllegraEra c) VState where - translateEra ctx VState {..} = do - committeeState <- translateEra ctx vsCommitteeState - pure VState {vsCommitteeState = committeeState, ..} - -instance Crypto c => TranslateEra (AllegraEra c) PState where - translateEra _ PState {..} = pure PState {..} - -instance Crypto c => TranslateEra (AllegraEra c) CertState where - translateEra ctxt ls = - pure - CertState - { certDState = translateEra' ctxt $ certDState ls - , certPState = translateEra' ctxt $ certPState ls - , certVState = translateEra' ctxt $ certVState ls - } - -instance Crypto c => TranslateEra (AllegraEra c) LedgerState where - translateEra ctxt ls = - return - LedgerState - { lsUTxOState = translateEra' ctxt $ lsUTxOState ls - , lsCertState = translateEra' ctxt $ lsCertState ls - } - -instance Crypto c => TranslateEra (AllegraEra c) EpochState where - translateEra ctxt es = - return - EpochState - { esAccountState = esAccountState es - , esSnapshots = esSnapshots es - , esLState = translateEra' ctxt $ esLState es - , esNonMyopic = esNonMyopic es - } - -instance Crypto c => TranslateEra (AllegraEra c) ShelleyTxWits where - type TranslationError (AllegraEra c) ShelleyTxWits = DecoderError - translateEra _ctx = translateEraThroughCBOR "ShelleyTxWits" - -instance Crypto c => TranslateEra (AllegraEra c) Update where - translateEra _ (Update pp en) = pure $ Update (coerce pp) en diff --git a/eras/allegra/impl/src/Cardano/Ledger/Allegra/Tx.hs b/eras/allegra/impl/src/Cardano/Ledger/Allegra/Tx.hs deleted file mode 100644 index 8c885cbbd15..00000000000 --- a/eras/allegra/impl/src/Cardano/Ledger/Allegra/Tx.hs +++ /dev/null @@ -1,82 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Allegra.Tx ( - validateTimelock, -) -where - -import Cardano.Ledger.Allegra.Era (AllegraEra) -import Cardano.Ledger.Allegra.PParams () -import Cardano.Ledger.Allegra.Scripts (Timelock, evalTimelock) -import Cardano.Ledger.Allegra.TxAuxData () -import Cardano.Ledger.Allegra.TxBody (AllegraEraTxBody (..)) -import Cardano.Ledger.Allegra.TxWits () -import Cardano.Ledger.Core ( - EraTx (..), - EraTxAuxData (upgradeTxAuxData), - EraTxWits (..), - upgradeTxBody, - ) -import Cardano.Ledger.Crypto (Crypto, StandardCrypto) -import Cardano.Ledger.Keys.WitVKey (witVKeyHash) -import Cardano.Ledger.Shelley.Tx ( - ShelleyTx (..), - auxDataShelleyTxL, - bodyShelleyTxL, - mkBasicShelleyTx, - shelleyMinFeeTx, - sizeShelleyTxF, - witsShelleyTxL, - ) -import qualified Data.Set as Set (map) -import Lens.Micro ((^.)) - --- ======================================== - -instance Crypto c => EraTx (AllegraEra c) where - {-# SPECIALIZE instance EraTx (AllegraEra StandardCrypto) #-} - - type Tx (AllegraEra c) = ShelleyTx (AllegraEra c) - - mkBasicTx = mkBasicShelleyTx - - bodyTxL = bodyShelleyTxL - {-# INLINE bodyTxL #-} - - witsTxL = witsShelleyTxL - {-# INLINE witsTxL #-} - - auxDataTxL = auxDataShelleyTxL - {-# INLINE auxDataTxL #-} - - sizeTxF = sizeShelleyTxF - {-# INLINE sizeTxF #-} - - validateNativeScript = validateTimelock - {-# INLINE validateNativeScript #-} - - getMinFeeTx pp tx _ = shelleyMinFeeTx pp tx - - upgradeTx (ShelleyTx txb txwits txAux) = - ShelleyTx - <$> upgradeTxBody txb - <*> pure (upgradeTxWits txwits) - <*> pure (fmap upgradeTxAuxData txAux) - --- ======================================================= --- Validating timelock scripts --- We extract ValidityInterval from TxBody with vldtTxBodyL getter --- We still need to correctly compute the witness set for TxBody as well. - -validateTimelock :: - (EraTx era, AllegraEraTxBody era) => Tx era -> Timelock era -> Bool -validateTimelock tx timelock = evalTimelock vhks (tx ^. bodyTxL . vldtTxBodyL) timelock - where - vhks = Set.map witVKeyHash (tx ^. witsTxL . addrTxWitsL) -{-# INLINEABLE validateTimelock #-} diff --git a/eras/allegra/impl/src/Cardano/Ledger/Allegra/TxAuxData.hs b/eras/allegra/impl/src/Cardano/Ledger/Allegra/TxAuxData.hs deleted file mode 100644 index b73a916bd1d..00000000000 --- a/eras/allegra/impl/src/Cardano/Ledger/Allegra/TxAuxData.hs +++ /dev/null @@ -1,180 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE ViewPatterns #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Allegra.TxAuxData ( - AllegraTxAuxData (AllegraTxAuxData), - AllegraTxAuxDataRaw, - - -- * Deprecations - AuxiliaryData, -) -where - -import Cardano.Crypto.Hash (HashAlgorithm) -import Cardano.Ledger.Allegra.Era (AllegraEra) -import Cardano.Ledger.Allegra.Scripts (Timelock) -import Cardano.Ledger.AuxiliaryData (AuxiliaryDataHash (..)) -import Cardano.Ledger.Binary ( - Annotator (..), - DecCBOR (..), - EncCBOR (..), - ToCBOR, - peekTokenType, - ) -import Cardano.Ledger.Binary.Coders -import Cardano.Ledger.Core ( - Era (..), - EraTxAuxData (..), - ) -import Cardano.Ledger.Crypto (Crypto (HASH)) -import Cardano.Ledger.Hashes (EraIndependentTxAuxData) -import Cardano.Ledger.MemoBytes ( - EqRaw, - Mem, - MemoBytes, - MemoHashIndex, - Memoized (RawType), - getMemoRawType, - getMemoSafeHash, - mkMemoized, - ) -import Cardano.Ledger.SafeHash (HashAnnotated, SafeToHash, hashAnnotated) -import Cardano.Ledger.Shelley.TxAuxData (Metadatum, ShelleyTxAuxData (..), validMetadatum) -import Codec.CBOR.Decoding ( - TokenType ( - TypeListLen, - TypeListLen64, - TypeListLenIndef, - TypeMapLen, - TypeMapLen64, - TypeMapLenIndef - ), - ) -import Control.DeepSeq (NFData, deepseq) -import Data.Map.Strict (Map) -import Data.Sequence.Strict (StrictSeq) -import qualified Data.Sequence.Strict as StrictSeq -import Data.Word (Word64) -import GHC.Generics (Generic) -import NoThunks.Class (NoThunks) - --- ======================================= - --- | Raw, un-memoised metadata type -data AllegraTxAuxDataRaw era = AllegraTxAuxDataRaw - { atadrMetadata :: !(Map Word64 Metadatum) - -- ^ Structured transaction metadata - , atadrTimelock :: !(StrictSeq (Timelock era)) - -- ^ Pre-images of script hashes found within the TxBody, but which are not - -- required as witnesses. Examples include: - -- - Token policy IDs appearing in transaction outputs - -- - Pool reward account registrations - } - deriving (Generic, Eq) - -instance Crypto c => EraTxAuxData (AllegraEra c) where - type TxAuxData (AllegraEra c) = AllegraTxAuxData (AllegraEra c) - - upgradeTxAuxData (ShelleyTxAuxData md) = AllegraTxAuxData md mempty - - validateTxAuxData _ (AllegraTxAuxData md as) = as `deepseq` all validMetadatum md - - hashTxAuxData aux = AuxiliaryDataHash (hashAnnotated aux) - -deriving instance HashAlgorithm (HASH (EraCrypto era)) => Show (AllegraTxAuxDataRaw era) - -deriving instance Era era => NoThunks (AllegraTxAuxDataRaw era) - -instance NFData (AllegraTxAuxDataRaw era) - -newtype AllegraTxAuxData era = AuxiliaryDataWithBytes (MemoBytes AllegraTxAuxDataRaw era) - deriving (Generic) - deriving newtype (Eq, ToCBOR, SafeToHash) - -instance Memoized AllegraTxAuxData where - type RawType AllegraTxAuxData = AllegraTxAuxDataRaw - -type instance MemoHashIndex AllegraTxAuxDataRaw = EraIndependentTxAuxData - -instance c ~ EraCrypto era => HashAnnotated (AllegraTxAuxData era) EraIndependentTxAuxData c where - hashAnnotated = getMemoSafeHash - -deriving newtype instance - HashAlgorithm (HASH (EraCrypto era)) => - Show (AllegraTxAuxData era) - -deriving newtype instance Era era => NoThunks (AllegraTxAuxData era) - -deriving newtype instance NFData (AllegraTxAuxData era) - -instance EqRaw (AllegraTxAuxData era) - -pattern AllegraTxAuxData :: - Era era => - Map Word64 Metadatum -> - StrictSeq (Timelock era) -> - AllegraTxAuxData era -pattern AllegraTxAuxData blob sp <- (getMemoRawType -> AllegraTxAuxDataRaw blob sp) - where - AllegraTxAuxData blob sp = mkMemoized $ AllegraTxAuxDataRaw blob sp - -{-# COMPLETE AllegraTxAuxData #-} - -type AuxiliaryData = AllegraTxAuxData - -{-# DEPRECATED AuxiliaryData "Use `AllegraTxAuxData` instead" #-} - --------------------------------------------------------------------------------- --- Serialisation --------------------------------------------------------------------------------- - -instance Era era => EncCBOR (AllegraTxAuxDataRaw era) where - encCBOR (AllegraTxAuxDataRaw blob sp) = - encode (Rec AllegraTxAuxDataRaw !> To blob !> To sp) - --- | Encodes memoized bytes created upon construction. -instance Era era => EncCBOR (AllegraTxAuxData era) - -instance Era era => DecCBOR (Annotator (AllegraTxAuxDataRaw era)) where - decCBOR = - peekTokenType >>= \case - TypeMapLen -> decodeFromMap - TypeMapLen64 -> decodeFromMap - TypeMapLenIndef -> decodeFromMap - TypeListLen -> decodeFromList - TypeListLen64 -> decodeFromList - TypeListLenIndef -> decodeFromList - _ -> error "Failed to decode AuxiliaryData" - where - decodeFromMap = - decode - ( Ann (Emit AllegraTxAuxDataRaw) - <*! Ann From - <*! Ann (Emit StrictSeq.empty) - ) - decodeFromList = - decode - ( Ann (RecD AllegraTxAuxDataRaw) - <*! Ann From - <*! D (sequence <$> decCBOR) - ) - -deriving via - (Mem AllegraTxAuxDataRaw era) - instance - Era era => DecCBOR (Annotator (AllegraTxAuxData era)) diff --git a/eras/allegra/impl/src/Cardano/Ledger/Allegra/TxBody.hs b/eras/allegra/impl/src/Cardano/Ledger/Allegra/TxBody.hs deleted file mode 100644 index dc86fb1989c..00000000000 --- a/eras/allegra/impl/src/Cardano/Ledger/Allegra/TxBody.hs +++ /dev/null @@ -1,383 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} -{-# LANGUAGE ViewPatterns #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Allegra.TxBody ( - AllegraEraTxBody (..), - AllegraTxBody ( - AllegraTxBody, - atbAuxDataHash, - atbCerts, - atbInputs, - atbOutputs, - atbTxFee, - atbUpdate, - atbValidityInterval, - atbWithdrawals - ), - emptyAllegraTxBodyRaw, - AllegraTxBodyRaw (..), - StrictMaybe (..), - ValidityInterval (..), -) -where - -import Cardano.Ledger.Allegra.Era (AllegraEra) -import Cardano.Ledger.Allegra.Scripts (ValidityInterval (..)) -import Cardano.Ledger.Allegra.TxCert () -import Cardano.Ledger.Allegra.TxOut () -import Cardano.Ledger.AuxiliaryData (AuxiliaryDataHash) -import Cardano.Ledger.BaseTypes (SlotNo, StrictMaybe (SJust, SNothing)) -import Cardano.Ledger.Binary (Annotator, DecCBOR (..), EncCBOR (..), ToCBOR) -import Cardano.Ledger.Binary.Coders ( - Decode (..), - Encode (..), - Field, - decode, - encode, - encodeKeyedStrictMaybe, - field, - invalidField, - ofield, - (!>), - ) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Compactible (Compactible (..)) -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto (Crypto, StandardCrypto) -import Cardano.Ledger.MemoBytes ( - EqRaw, - Mem, - MemoBytes, - MemoHashIndex, - Memoized (RawType), - getMemoRawType, - getMemoSafeHash, - lensMemoRawType, - mkMemoized, - ) -import Cardano.Ledger.SafeHash (HashAnnotated (..), SafeToHash) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.PParams (Update (..), upgradeUpdate) -import Cardano.Ledger.Shelley.TxBody (getShelleyGenesisKeyHashCountTxBody) -import Cardano.Ledger.TxIn (TxIn (..)) -import Control.DeepSeq (NFData (..)) -import qualified Data.Map.Strict as Map -import Data.Sequence.Strict (StrictSeq, fromList) -import Data.Set (Set, empty) -import GHC.Generics (Generic) -import Lens.Micro -import NoThunks.Class (NoThunks (..)) - -class EraTxBody era => AllegraEraTxBody era where - vldtTxBodyL :: Lens' (TxBody era) ValidityInterval - --- ======================================================= - -data AllegraTxBodyRaw ma era = AllegraTxBodyRaw - { atbrInputs :: !(Set (TxIn (EraCrypto era))) - , atbrOutputs :: !(StrictSeq (TxOut era)) - , atbrCerts :: !(StrictSeq (TxCert era)) - , atbrWithdrawals :: !(Withdrawals (EraCrypto era)) - , atbrTxFee :: !Coin - , atbrValidityInterval :: !ValidityInterval - , atbrUpdate :: !(StrictMaybe (Update era)) - , atbrAuxDataHash :: !(StrictMaybe (AuxiliaryDataHash (EraCrypto era))) - , atbrMint :: !ma - } - -deriving instance - (Era era, NFData (TxOut era), NFData (TxCert era), NFData (PParamsUpdate era), NFData ma) => - NFData (AllegraTxBodyRaw ma era) - -deriving instance - (Era era, Eq (PParamsUpdate era), Eq (TxOut era), Eq (TxCert era), Eq ma) => - Eq (AllegraTxBodyRaw ma era) - -deriving instance - (Era era, Show (TxOut era), Show (TxCert era), Show (PParamsUpdate era), Show ma) => - Show (AllegraTxBodyRaw ma era) - -deriving instance Generic (AllegraTxBodyRaw ma era) - -deriving instance - (Era era, NoThunks (TxOut era), NoThunks (TxCert era), NoThunks (PParamsUpdate era), NoThunks ma) => - NoThunks (AllegraTxBodyRaw ma era) - -instance (DecCBOR ma, Monoid ma, AllegraEraTxBody era) => DecCBOR (AllegraTxBodyRaw ma era) where - decCBOR = - decode - ( SparseKeyed - "AllegraTxBodyRaw" - emptyAllegraTxBodyRaw - bodyFields - [(0, "atbrInputs"), (1, "atbrOutputs"), (2, "atbrTxFee")] - ) - -instance AllegraEraTxBody era => DecCBOR (Annotator (AllegraTxBodyRaw () era)) where - decCBOR = pure <$> decCBOR - --- Sparse encodings of AllegraTxBodyRaw, the key values are fixed by backward compatibility --- concerns as we want the ShelleyTxBody to deserialise as AllegraTxBody. --- txXparse and bodyFields should be Duals, visual inspection helps ensure this. -instance - (EraTxOut era, EraTxCert era, Eq ma, EncCBOR ma, Monoid ma) => - EncCBOR (AllegraTxBodyRaw ma era) - where - encCBOR (AllegraTxBodyRaw inp out cert wdrl fee (ValidityInterval bot top) up hash frge) = - encode $ - Keyed - ( \i o f topx c w u h botx forg -> - AllegraTxBodyRaw i o c w f (ValidityInterval botx topx) u h forg - ) - !> Key 0 (To inp) -- We don't have to send these in TxBodyX order - !> Key 1 (To out) -- Just hack up a fake constructor with the lambda. - !> Key 2 (To fee) - !> encodeKeyedStrictMaybe 3 top - !> Omit null (Key 4 (To cert)) - !> Omit (null . unWithdrawals) (Key 5 (To wdrl)) - !> encodeKeyedStrictMaybe 6 up - !> encodeKeyedStrictMaybe 7 hash - !> encodeKeyedStrictMaybe 8 bot - !> Omit (== mempty) (Key 9 (To frge)) - -bodyFields :: (DecCBOR ma, EraTxOut era, EraTxCert era) => Word -> Field (AllegraTxBodyRaw ma era) -bodyFields 0 = field (\x tx -> tx {atbrInputs = x}) From -bodyFields 1 = field (\x tx -> tx {atbrOutputs = x}) From -bodyFields 2 = field (\x tx -> tx {atbrTxFee = x}) From -bodyFields 3 = - ofield - ( \x tx -> - tx - { atbrValidityInterval = - (atbrValidityInterval tx) {invalidHereafter = x} - } - ) - From -bodyFields 4 = field (\x tx -> tx {atbrCerts = x}) From -bodyFields 5 = field (\x tx -> tx {atbrWithdrawals = x}) From -bodyFields 6 = ofield (\x tx -> tx {atbrUpdate = x}) From -bodyFields 7 = ofield (\x tx -> tx {atbrAuxDataHash = x}) From -bodyFields 8 = - ofield - ( \x tx -> - tx - { atbrValidityInterval = - (atbrValidityInterval tx) {invalidBefore = x} - } - ) - From -bodyFields 9 = field (\x tx -> tx {atbrMint = x}) From -bodyFields n = invalidField n - -emptyAllegraTxBodyRaw :: Monoid ma => AllegraTxBodyRaw ma era -emptyAllegraTxBodyRaw = - AllegraTxBodyRaw - empty - (fromList []) - (fromList []) - (Withdrawals Map.empty) - (Coin 0) - (ValidityInterval SNothing SNothing) - SNothing - SNothing - mempty - --- =========================================================================== --- Wrap it all up in a newtype, hiding the insides with a pattern construtor. - -newtype AllegraTxBody e = TxBodyConstr (MemoBytes (AllegraTxBodyRaw ()) e) - deriving newtype (SafeToHash, ToCBOR) - -instance Memoized AllegraTxBody where - type RawType AllegraTxBody = AllegraTxBodyRaw () - -deriving instance - (Era era, Eq (PParamsUpdate era), Eq (TxOut era), Eq (TxCert era)) => - Eq (AllegraTxBody era) - -deriving instance - (Era era, Show (TxOut era), Show (TxCert era), Compactible (Value era), Show (PParamsUpdate era)) => - Show (AllegraTxBody era) - -deriving instance Generic (AllegraTxBody era) - -deriving newtype instance - (Era era, NoThunks (TxOut era), NoThunks (TxCert era), NoThunks (PParamsUpdate era)) => - NoThunks (AllegraTxBody era) - -deriving newtype instance - ( NFData (TxOut era) - , NFData (TxCert era) - , NFData (PParamsUpdate era) - , Era era - ) => - NFData (AllegraTxBody era) - --- | Encodes memoized bytes created upon construction. -instance Era era => EncCBOR (AllegraTxBody era) - -deriving via - Mem (AllegraTxBodyRaw ()) era - instance - AllegraEraTxBody era => DecCBOR (Annotator (AllegraTxBody era)) - -type instance MemoHashIndex (AllegraTxBodyRaw c) = EraIndependentTxBody - -instance (c ~ EraCrypto era, Era era) => HashAnnotated (AllegraTxBody era) EraIndependentTxBody c where - hashAnnotated = getMemoSafeHash - --- | A pattern to keep the newtype and the MemoBytes hidden -pattern AllegraTxBody :: - (EraTxOut era, EraTxCert era) => - Set (TxIn (EraCrypto era)) -> - StrictSeq (TxOut era) -> - StrictSeq (TxCert era) -> - Withdrawals (EraCrypto era) -> - Coin -> - ValidityInterval -> - StrictMaybe (Update era) -> - StrictMaybe (AuxiliaryDataHash (EraCrypto era)) -> - AllegraTxBody era -pattern AllegraTxBody - { atbInputs - , atbOutputs - , atbCerts - , atbWithdrawals - , atbTxFee - , atbValidityInterval - , atbUpdate - , atbAuxDataHash - } <- - ( getMemoRawType -> - AllegraTxBodyRaw - { atbrInputs = atbInputs - , atbrOutputs = atbOutputs - , atbrCerts = atbCerts - , atbrWithdrawals = atbWithdrawals - , atbrTxFee = atbTxFee - , atbrValidityInterval = atbValidityInterval - , atbrUpdate = atbUpdate - , atbrAuxDataHash = atbAuxDataHash - } - ) - where - AllegraTxBody - inputs - outputs - certs - withdrawals - txFee - validityInterval - update - auxDataHash = - mkMemoized $ - AllegraTxBodyRaw - { atbrInputs = inputs - , atbrOutputs = outputs - , atbrCerts = certs - , atbrWithdrawals = withdrawals - , atbrTxFee = txFee - , atbrValidityInterval = validityInterval - , atbrUpdate = update - , atbrAuxDataHash = auxDataHash - , atbrMint = () - } - -{-# COMPLETE AllegraTxBody #-} - -instance Crypto c => EraTxBody (AllegraEra c) where - {-# SPECIALIZE instance EraTxBody (AllegraEra StandardCrypto) #-} - - type TxBody (AllegraEra c) = AllegraTxBody (AllegraEra c) - - mkBasicTxBody = mkMemoized emptyAllegraTxBodyRaw - - inputsTxBodyL = - lensMemoRawType atbrInputs $ \txBodyRaw inputs -> txBodyRaw {atbrInputs = inputs} - {-# INLINEABLE inputsTxBodyL #-} - - outputsTxBodyL = - lensMemoRawType atbrOutputs $ \txBodyRaw outputs -> txBodyRaw {atbrOutputs = outputs} - {-# INLINEABLE outputsTxBodyL #-} - - feeTxBodyL = - lensMemoRawType atbrTxFee $ \txBodyRaw fee -> txBodyRaw {atbrTxFee = fee} - {-# INLINEABLE feeTxBodyL #-} - - auxDataHashTxBodyL = - lensMemoRawType atbrAuxDataHash $ - \txBodyRaw auxDataHash -> txBodyRaw {atbrAuxDataHash = auxDataHash} - {-# INLINEABLE auxDataHashTxBodyL #-} - - spendableInputsTxBodyF = inputsTxBodyL - {-# INLINE spendableInputsTxBodyF #-} - - allInputsTxBodyF = inputsTxBodyL - {-# INLINEABLE allInputsTxBodyF #-} - - withdrawalsTxBodyL = - lensMemoRawType atbrWithdrawals $ - \txBodyRaw withdrawals -> txBodyRaw {atbrWithdrawals = withdrawals} - {-# INLINEABLE withdrawalsTxBodyL #-} - - certsTxBodyL = - lensMemoRawType atbrCerts $ \txBodyRaw certs -> txBodyRaw {atbrCerts = certs} - {-# INLINEABLE certsTxBodyL #-} - - getGenesisKeyHashCountTxBody = getShelleyGenesisKeyHashCountTxBody - - upgradeTxBody txBody = do - certs <- traverse upgradeTxCert (txBody ^. certsTxBodyL) - pure $ - AllegraTxBody - { atbInputs = txBody ^. inputsTxBodyL - , atbOutputs = upgradeTxOut <$> (txBody ^. outputsTxBodyL) - , atbCerts = certs - , atbWithdrawals = txBody ^. withdrawalsTxBodyL - , atbTxFee = txBody ^. feeTxBodyL - , atbValidityInterval = ttlToValidityInterval (txBody ^. ttlTxBodyL) - , atbUpdate = upgradeUpdate () <$> (txBody ^. updateTxBodyL) - , atbAuxDataHash = txBody ^. auxDataHashTxBodyL - } - where - ttlToValidityInterval :: SlotNo -> ValidityInterval - ttlToValidityInterval ttl = ValidityInterval SNothing (SJust ttl) - -instance Crypto c => ShelleyEraTxBody (AllegraEra c) where - {-# SPECIALIZE instance ShelleyEraTxBody (AllegraEra StandardCrypto) #-} - - ttlTxBodyL = notSupportedInThisEraL - {-# INLINEABLE ttlTxBodyL #-} - - updateTxBodyL = - lensMemoRawType atbrUpdate $ \txBodyRaw update -> txBodyRaw {atbrUpdate = update} - {-# INLINEABLE updateTxBodyL #-} - -instance Crypto c => AllegraEraTxBody (AllegraEra c) where - {-# SPECIALIZE instance AllegraEraTxBody (AllegraEra StandardCrypto) #-} - - vldtTxBodyL = - lensMemoRawType atbrValidityInterval $ - \txBodyRaw vldt -> txBodyRaw {atbrValidityInterval = vldt} - {-# INLINEABLE vldtTxBodyL #-} - -instance - (Era era, Eq (PParamsUpdate era), Eq (TxOut era), Eq (TxCert era)) => - EqRaw (AllegraTxBody era) diff --git a/eras/allegra/impl/src/Cardano/Ledger/Allegra/TxCert.hs b/eras/allegra/impl/src/Cardano/Ledger/Allegra/TxCert.hs deleted file mode 100644 index 7abda25228b..00000000000 --- a/eras/allegra/impl/src/Cardano/Ledger/Allegra/TxCert.hs +++ /dev/null @@ -1,70 +0,0 @@ -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Allegra.TxCert () where - -import Cardano.Ledger.Allegra.Era -import Cardano.Ledger.Allegra.PParams () -import Cardano.Ledger.Crypto -import Cardano.Ledger.Shelley.TxCert - -instance Crypto c => EraTxCert (AllegraEra c) where - {-# SPECIALIZE instance EraTxCert (AllegraEra StandardCrypto) #-} - - type TxCert (AllegraEra c) = ShelleyTxCert (AllegraEra c) - - upgradeTxCert = Right . upgradeShelleyTxCert - - getVKeyWitnessTxCert = getVKeyWitnessShelleyTxCert - - getScriptWitnessTxCert = getScriptWitnessShelleyTxCert - - mkRegPoolTxCert = ShelleyTxCertPool . RegPool - - getRegPoolTxCert (ShelleyTxCertPool (RegPool poolParams)) = Just poolParams - getRegPoolTxCert _ = Nothing - - mkRetirePoolTxCert poolId epochNo = ShelleyTxCertPool $ RetirePool poolId epochNo - - getRetirePoolTxCert (ShelleyTxCertPool (RetirePool poolId epochNo)) = Just (poolId, epochNo) - getRetirePoolTxCert _ = Nothing - - lookupRegStakeTxCert = \case - RegTxCert c -> Just c - _ -> Nothing - lookupUnRegStakeTxCert = \case - UnRegTxCert c -> Just c - _ -> Nothing - - getTotalDepositsTxCerts = shelleyTotalDepositsTxCerts - - getTotalRefundsTxCerts pp lookupStakeDeposit _ = shelleyTotalRefundsTxCerts pp lookupStakeDeposit - -instance Crypto c => ShelleyEraTxCert (AllegraEra c) where - {-# SPECIALIZE instance ShelleyEraTxCert (AllegraEra StandardCrypto) #-} - - mkRegTxCert = ShelleyTxCertDelegCert . ShelleyRegCert - - getRegTxCert (ShelleyTxCertDelegCert (ShelleyRegCert c)) = Just c - getRegTxCert _ = Nothing - - mkUnRegTxCert = ShelleyTxCertDelegCert . ShelleyUnRegCert - - getUnRegTxCert (ShelleyTxCertDelegCert (ShelleyUnRegCert c)) = Just c - getUnRegTxCert _ = Nothing - - mkDelegStakeTxCert c kh = ShelleyTxCertDelegCert $ ShelleyDelegCert c kh - - getDelegStakeTxCert (ShelleyTxCertDelegCert (ShelleyDelegCert c kh)) = Just (c, kh) - getDelegStakeTxCert _ = Nothing - - mkGenesisDelegTxCert = ShelleyTxCertGenesisDeleg - - getGenesisDelegTxCert (ShelleyTxCertGenesisDeleg c) = Just c - getGenesisDelegTxCert _ = Nothing - - mkMirTxCert = ShelleyTxCertMir - - getMirTxCert (ShelleyTxCertMir c) = Just c - getMirTxCert _ = Nothing diff --git a/eras/allegra/impl/src/Cardano/Ledger/Allegra/TxOut.hs b/eras/allegra/impl/src/Cardano/Ledger/Allegra/TxOut.hs deleted file mode 100644 index 4e4c86b17de..00000000000 --- a/eras/allegra/impl/src/Cardano/Ledger/Allegra/TxOut.hs +++ /dev/null @@ -1,34 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Allegra.TxOut () where - -import Cardano.Ledger.Allegra.Era (AllegraEra) -import Cardano.Ledger.Allegra.PParams () -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto (Crypto, StandardCrypto) -import Cardano.Ledger.Shelley.TxOut ( - ShelleyTxOut (..), - addrEitherShelleyTxOutL, - valueEitherShelleyTxOutL, - ) -import Data.Coerce (coerce) -import Lens.Micro ((^.)) - -instance Crypto c => EraTxOut (AllegraEra c) where - {-# SPECIALIZE instance EraTxOut (AllegraEra StandardCrypto) #-} - - type TxOut (AllegraEra c) = ShelleyTxOut (AllegraEra c) - - mkBasicTxOut = ShelleyTxOut - - upgradeTxOut (TxOutCompact addr cfval) = TxOutCompact (coerce addr) cfval - - addrEitherTxOutL = addrEitherShelleyTxOutL - {-# INLINE addrEitherTxOutL #-} - - valueEitherTxOutL = valueEitherShelleyTxOutL - {-# INLINE valueEitherTxOutL #-} - - getMinCoinTxOut pp _txOut = pp ^. ppMinUTxOValueL diff --git a/eras/allegra/impl/src/Cardano/Ledger/Allegra/TxSeq.hs b/eras/allegra/impl/src/Cardano/Ledger/Allegra/TxSeq.hs deleted file mode 100644 index 7618fcb75e0..00000000000 --- a/eras/allegra/impl/src/Cardano/Ledger/Allegra/TxSeq.hs +++ /dev/null @@ -1,25 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Allegra.TxSeq () where - -import Cardano.Ledger.Allegra.Era (AllegraEra) -import Cardano.Ledger.Allegra.Tx () -import Cardano.Ledger.Core (EraSegWits (..)) -import Cardano.Ledger.Crypto (Crypto, StandardCrypto) -import Cardano.Ledger.Shelley.BlockChain (ShelleyTxSeq (..), bbHash, txSeqTxns) - -instance Crypto c => EraSegWits (AllegraEra c) where - {-# SPECIALIZE instance EraSegWits (AllegraEra StandardCrypto) #-} - type TxSeq (AllegraEra c) = ShelleyTxSeq (AllegraEra c) - fromTxSeq = txSeqTxns - toTxSeq = ShelleyTxSeq - hashTxSeq = bbHash - numSegComponents = 3 diff --git a/eras/allegra/impl/src/Cardano/Ledger/Allegra/TxWits.hs b/eras/allegra/impl/src/Cardano/Ledger/Allegra/TxWits.hs deleted file mode 100644 index 0f0854b90c6..00000000000 --- a/eras/allegra/impl/src/Cardano/Ledger/Allegra/TxWits.hs +++ /dev/null @@ -1,43 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Allegra.TxWits () where - -import Cardano.Ledger.Allegra.Era (AllegraEra) -import Cardano.Ledger.Allegra.TxAuxData () -import Cardano.Ledger.Core (EraScript (upgradeScript), EraTxWits (..)) -import Cardano.Ledger.Crypto (Crypto, StandardCrypto) -import Cardano.Ledger.Shelley.TxWits ( - ShelleyTxWits (..), - addrShelleyTxWitsL, - bootAddrShelleyTxWitsL, - scriptShelleyTxWitsL, - ) - -instance Crypto c => EraTxWits (AllegraEra c) where - {-# SPECIALIZE instance EraTxWits (AllegraEra StandardCrypto) #-} - - type TxWits (AllegraEra c) = ShelleyTxWits (AllegraEra c) - - mkBasicTxWits = mempty - - addrTxWitsL = addrShelleyTxWitsL - {-# INLINE addrTxWitsL #-} - - bootAddrTxWitsL = bootAddrShelleyTxWitsL - {-# INLINE bootAddrTxWitsL #-} - - scriptTxWitsL = scriptShelleyTxWitsL - {-# INLINE scriptTxWitsL #-} - - upgradeTxWits stw = - ShelleyTxWits - (addrWits stw) - (upgradeScript <$> scriptWits stw) - (bootWits stw) diff --git a/eras/allegra/impl/src/Cardano/Ledger/Allegra/UTxO.hs b/eras/allegra/impl/src/Cardano/Ledger/Allegra/UTxO.hs deleted file mode 100644 index 3309f007154..00000000000 --- a/eras/allegra/impl/src/Cardano/Ledger/Allegra/UTxO.hs +++ /dev/null @@ -1,38 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Allegra.UTxO () where - -import Cardano.Ledger.Allegra.Core -import Cardano.Ledger.Allegra.Era (AllegraEra) -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Shelley.UTxO ( - ShelleyScriptsNeeded (..), - getConsumedCoin, - getShelleyMinFeeTxUtxo, - getShelleyScriptsNeeded, - getShelleyWitsVKeyNeeded, - shelleyProducedValue, - ) -import Cardano.Ledger.UTxO (EraUTxO (..), ScriptsProvided (..)) -import Lens.Micro - -instance Crypto c => EraUTxO (AllegraEra c) where - type ScriptsNeeded (AllegraEra c) = ShelleyScriptsNeeded (AllegraEra c) - - getConsumedValue pp lookupKeyDeposit _ = getConsumedCoin pp lookupKeyDeposit - - getProducedValue = shelleyProducedValue - - getScriptsProvided _ tx = ScriptsProvided (tx ^. witsTxL . scriptTxWitsL) - - getScriptsNeeded = getShelleyScriptsNeeded - - getScriptsHashesNeeded (ShelleyScriptsNeeded scriptHashes) = scriptHashes - - getWitsVKeyNeeded = getShelleyWitsVKeyNeeded - - getMinFeeTxUtxo pp tx _ = getShelleyMinFeeTxUtxo pp tx diff --git a/eras/allegra/impl/test/Main.hs b/eras/allegra/impl/test/Main.hs deleted file mode 100644 index f3ef5d2f674..00000000000 --- a/eras/allegra/impl/test/Main.hs +++ /dev/null @@ -1,19 +0,0 @@ -{-# LANGUAGE TypeApplications #-} - -module Main where - -import Cardano.Ledger.Allegra (Allegra) -import qualified Test.Cardano.Ledger.Allegra.Binary.CddlSpec as CddlSpec -import qualified Test.Cardano.Ledger.Allegra.BinarySpec as BinarySpec -import Test.Cardano.Ledger.Allegra.ImpTest () -import Test.Cardano.Ledger.Common -import qualified Test.Cardano.Ledger.Shelley.Imp as ShelleyImp - -main :: IO () -main = - ledgerTestMain $ - describe "Allegra" $ do - BinarySpec.spec - CddlSpec.spec - describe "Imp" $ do - ShelleyImp.spec @Allegra diff --git a/eras/allegra/impl/test/Test/Cardano/Ledger/Allegra/Binary/CddlSpec.hs b/eras/allegra/impl/test/Test/Cardano/Ledger/Allegra/Binary/CddlSpec.hs deleted file mode 100644 index 070ddf250e3..00000000000 --- a/eras/allegra/impl/test/Test/Cardano/Ledger/Allegra/Binary/CddlSpec.hs +++ /dev/null @@ -1,23 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Allegra.Binary.CddlSpec (spec) where - -import Cardano.Ledger.Allegra (Allegra) -import Cardano.Ledger.Core -import Test.Cardano.Ledger.Allegra.Binary.Cddl (readAllegraCddlFiles) -import Test.Cardano.Ledger.Binary.Cddl ( - beforeAllCddlFile, - cddlRoundTripAnnCborSpec, - cddlRoundTripCborSpec, - ) -import Test.Cardano.Ledger.Common - -spec :: Spec -spec = - describe "CDDL" $ beforeAllCddlFile 3 readAllegraCddlFiles $ do - let v = eraProtVerLow @Allegra - cddlRoundTripCborSpec @(Value Allegra) v "coin" - cddlRoundTripAnnCborSpec @(TxBody Allegra) v "transaction_body" - cddlRoundTripAnnCborSpec @(Script Allegra) v "native_script" - cddlRoundTripAnnCborSpec @(TxAuxData Allegra) v "auxiliary_data" diff --git a/eras/allegra/impl/test/Test/Cardano/Ledger/Allegra/BinarySpec.hs b/eras/allegra/impl/test/Test/Cardano/Ledger/Allegra/BinarySpec.hs deleted file mode 100644 index 45af8524a92..00000000000 --- a/eras/allegra/impl/test/Test/Cardano/Ledger/Allegra/BinarySpec.hs +++ /dev/null @@ -1,36 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Allegra.BinarySpec (spec) where - -import Cardano.Ledger.Allegra -import Cardano.Ledger.Crypto (Crypto) -import Data.Default.Class (def) -import Test.Cardano.Ledger.Allegra.Arbitrary () -import Test.Cardano.Ledger.Allegra.TreeDiff () -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Core.Binary (specUpgrade) -import Test.Cardano.Ledger.Core.Binary.RoundTrip (RuleListEra (..)) -import Test.Cardano.Ledger.Shelley.Binary.RoundTrip (roundTripShelleyCommonSpec) - -spec :: Spec -spec = do - specUpgrade @Allegra def - describe "RoundTrip" $ do - roundTripShelleyCommonSpec @Allegra - -instance Crypto c => RuleListEra (AllegraEra c) where - type - EraRules (AllegraEra c) = - '[ "DELEG" - , "DELEGS" - , "DELPL" - , "LEDGER" - , "LEDGERS" - , "POOL" - , "PPUP" - , "UTXO" - , "UTXOW" - ] diff --git a/eras/allegra/impl/testlib/Test/Cardano/Ledger/Allegra/Arbitrary.hs b/eras/allegra/impl/testlib/Test/Cardano/Ledger/Allegra/Arbitrary.hs deleted file mode 100644 index 4e058cb8969..00000000000 --- a/eras/allegra/impl/testlib/Test/Cardano/Ledger/Allegra/Arbitrary.hs +++ /dev/null @@ -1,139 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Allegra.Arbitrary ( - sizedTimelock, - maxTimelockDepth, -) where - -import Cardano.Ledger.Allegra.Rules (AllegraUtxoPredFailure) -import Cardano.Ledger.Allegra.Scripts (Timelock (..), ValidityInterval (..)) -import Cardano.Ledger.Allegra.TxAuxData (AllegraTxAuxData (..)) -import Cardano.Ledger.Allegra.TxBody (AllegraTxBody (AllegraTxBody)) -import Cardano.Ledger.Binary (EncCBOR) -import Cardano.Ledger.Core -import Cardano.Ledger.Shelley.API (KeyHash (KeyHash), ShelleyTxAuxData (ShelleyTxAuxData)) -import Data.Maybe.Strict (StrictMaybe) -import Data.Sequence.Strict (StrictSeq, fromList) -import Generic.Random (genericArbitraryU) -import Test.Cardano.Ledger.Binary.Random (mkDummyHash) -import Test.Cardano.Ledger.Shelley.Arbitrary (genMetadata') -import Test.QuickCheck ( - Arbitrary (arbitrary, shrink), - Gen, - choose, - genericShrink, - listOf, - oneof, - resize, - scale, - vectorOf, - ) - -maxTimelockDepth :: Int -maxTimelockDepth = 3 - -maxTimelockListLens :: Int -maxTimelockListLens = 5 - -sizedTimelock :: - Era era => - Int -> - Gen (Timelock era) -sizedTimelock 0 = RequireSignature . KeyHash . mkDummyHash <$> (arbitrary :: Gen Int) -sizedTimelock n = - oneof - [ RequireSignature . KeyHash . mkDummyHash <$> (arbitrary :: Gen Int) - , RequireAllOf - <$> ( fromList - <$> resize - maxTimelockListLens - (listOf (sizedTimelock (n - 1))) - ) - , RequireAnyOf - <$> ( fromList - <$> resize - maxTimelockListLens - (listOf (sizedTimelock (n - 1))) - ) - , do - subs <- resize maxTimelockListLens (listOf (sizedTimelock (n - 1))) - let i = length subs - RequireMOf <$> choose (0, i) <*> pure (fromList subs) - , RequireTimeStart <$> arbitrary - , RequireTimeExpire <$> arbitrary - ] - --- TODO Generate metadata with script preimages -instance - forall era. - ( EncCBOR (Script era) - , Arbitrary (Script era) - , Era era - ) => - Arbitrary (AllegraTxAuxData era) - where - -- Why do we use the \case instead of a do statement? like this: - -- - -- @ - -- arbitrary = do - -- ShelleyTxAuxData m <- genMetadata' - -- AllegraTxAuxData m <$> genScriptSeq - -- @ - -- - -- The above leads to an error about a failable - -- pattern, despite the pattern being COMPLETE, resulting - -- in an unsatisfied `MonadFail` constraint. - arbitrary = - genMetadata' @era >>= \case - ShelleyTxAuxData m -> AllegraTxAuxData m <$> (genScriptSeq @era) - -genScriptSeq :: Era era => Gen (StrictSeq (Timelock era)) -genScriptSeq = do - n <- choose (0, 3) - l <- vectorOf n arbitrary - pure (fromList l) - -instance - ( Era era - , Arbitrary (Value era) - , Arbitrary (TxOut era) - , Arbitrary (EraRuleFailure "PPUP" era) - ) => - Arbitrary (AllegraUtxoPredFailure era) - where - arbitrary = genericArbitraryU - -instance - ( EraTxOut era - , EraTxCert era - , Arbitrary (TxOut era) - , Arbitrary (PParamsHKD StrictMaybe era) - , Arbitrary (TxCert era) - ) => - Arbitrary (AllegraTxBody era) - where - arbitrary = - AllegraTxBody - <$> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> scale (`div` 15) arbitrary - <*> arbitrary - -instance Era era => Arbitrary (Timelock era) where - arbitrary = sizedTimelock maxTimelockDepth - -instance Arbitrary ValidityInterval where - arbitrary = genericArbitraryU - shrink = genericShrink diff --git a/eras/allegra/impl/testlib/Test/Cardano/Ledger/Allegra/Binary/Cddl.hs b/eras/allegra/impl/testlib/Test/Cardano/Ledger/Allegra/Binary/Cddl.hs deleted file mode 100644 index 385866c1e83..00000000000 --- a/eras/allegra/impl/testlib/Test/Cardano/Ledger/Allegra/Binary/Cddl.hs +++ /dev/null @@ -1,18 +0,0 @@ -module Test.Cardano.Ledger.Allegra.Binary.Cddl ( - readAllegraCddlFileNames, - readAllegraCddlFiles, -) where - -import qualified Data.ByteString.Lazy as BSL -import Paths_cardano_ledger_allegra - -readAllegraCddlFileNames :: IO [FilePath] -readAllegraCddlFileNames = do - base <- getDataFileName "cddl-files/allegra.cddl" - crypto <- getDataFileName "cddl-files/crypto.cddl" - extras <- getDataFileName "cddl-files/extras.cddl" - -- extras contains the types whose restrictions cannot be expressed in CDDL - pure [base, crypto, extras] - -readAllegraCddlFiles :: IO [BSL.ByteString] -readAllegraCddlFiles = mapM BSL.readFile =<< readAllegraCddlFileNames diff --git a/eras/allegra/impl/testlib/Test/Cardano/Ledger/Allegra/ImpTest.hs b/eras/allegra/impl/testlib/Test/Cardano/Ledger/Allegra/ImpTest.hs deleted file mode 100644 index 23b72e4cc0c..00000000000 --- a/eras/allegra/impl/testlib/Test/Cardano/Ledger/Allegra/ImpTest.hs +++ /dev/null @@ -1,77 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Allegra.ImpTest (impAllegraSatisfyNativeScript) where - -import Cardano.Crypto.DSIGN (DSIGNAlgorithm (..), Ed25519DSIGN) -import Cardano.Crypto.Hash.Class (Hash) -import Cardano.Ledger.Allegra (AllegraEra) -import Cardano.Ledger.Allegra.Core -import Cardano.Ledger.Allegra.Scripts (Timelock (..)) -import Cardano.Ledger.Crypto (Crypto (..)) -import Cardano.Ledger.Keys (KeyHash, KeyRole (..)) -import Control.Monad.State.Strict (get) -import qualified Data.Map.Strict as Map -import Data.Sequence.Strict (StrictSeq (..)) -import qualified Data.Set as Set -import Lens.Micro ((^.)) -import Test.Cardano.Ledger.Allegra.TreeDiff () -import Test.Cardano.Ledger.Core.KeyPair (KeyPair) -import Test.Cardano.Ledger.Imp.Common -import Test.Cardano.Ledger.Shelley.ImpTest - -instance - ( Crypto c - , NFData (SigDSIGN (DSIGN c)) - , NFData (VerKeyDSIGN (DSIGN c)) - , DSIGN c ~ Ed25519DSIGN - , Signable (DSIGN c) (Hash (HASH c) EraIndependentTxBody) - ) => - ShelleyEraImp (AllegraEra c) - where - initImpNES = initShelleyImpNES - - impSatisfyNativeScript = impAllegraSatisfyNativeScript - - fixupTx = shelleyFixupTx - -impAllegraSatisfyNativeScript :: - (ShelleyEraImp era, NativeScript era ~ Timelock era) => - Set.Set (KeyHash 'Witness (EraCrypto era)) -> - NativeScript era -> - ImpTestM era (Maybe (Map.Map (KeyHash 'Witness (EraCrypto era)) (KeyPair 'Witness (EraCrypto era)))) -impAllegraSatisfyNativeScript providedVKeyHashes script = do - impState <- get - let - keyPairs = impState ^. impKeyPairsG - prevSlotNo = impState ^. impLastTickG - satisfyMOf m Empty - | m <= 0 = Just mempty - | otherwise = Nothing - satisfyMOf m (x :<| xs) = - case satisfyScript x of - Nothing -> satisfyMOf m xs - Just kps -> do - kps' <- satisfyMOf (m - 1) xs - Just $ kps <> kps' - satisfyScript = \case - RequireSignature keyHash - | keyHash `Set.member` providedVKeyHashes -> Just mempty - | otherwise -> do - keyPair <- Map.lookup keyHash keyPairs - Just $ Map.singleton keyHash keyPair - RequireAllOf ss -> satisfyMOf (length ss) ss - RequireAnyOf ss -> satisfyMOf 1 ss - RequireMOf m ss -> satisfyMOf m ss - RequireTimeExpire slotNo - | slotNo < prevSlotNo -> Just mempty - | otherwise -> Nothing - RequireTimeStart slotNo - | slotNo > prevSlotNo -> Just mempty - | otherwise -> Nothing - pure $ satisfyScript script diff --git a/eras/allegra/impl/testlib/Test/Cardano/Ledger/Allegra/TreeDiff.hs b/eras/allegra/impl/testlib/Test/Cardano/Ledger/Allegra/TreeDiff.hs deleted file mode 100644 index b713bf1bf4c..00000000000 --- a/eras/allegra/impl/testlib/Test/Cardano/Ledger/Allegra/TreeDiff.hs +++ /dev/null @@ -1,61 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE MonoLocalBinds #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Allegra.TreeDiff ( - module Test.Cardano.Ledger.Shelley.TreeDiff, -) where - -import Cardano.Ledger.Allegra.Rules -import Cardano.Ledger.Allegra.Scripts -import Cardano.Ledger.Allegra.TxAuxData -import Cardano.Ledger.Allegra.TxBody -import Cardano.Ledger.Core -import Cardano.Ledger.Shelley.PParams -import Control.State.Transition.Extended (STS (..)) -import Test.Cardano.Ledger.Shelley.TreeDiff - --- Scripts -instance ToExpr ValidityInterval - -instance ToExpr (TimelockRaw era) - -instance ToExpr (Timelock era) - --- TxAuxData -instance ToExpr (AllegraTxAuxDataRaw era) - -instance ToExpr (AllegraTxAuxData era) - --- TxBody -instance - ( ToExpr ma - , ToExpr (TxOut era) - , ToExpr (TxCert era) - , ToExpr (Update era) - ) => - ToExpr (AllegraTxBodyRaw ma era) - -instance - ( ToExpr (TxOut era) - , ToExpr (TxCert era) - , ToExpr (Update era) - ) => - ToExpr (AllegraTxBody era) - --- Rules/Utxo -instance - ( ToExpr (TxOut era) - , ToExpr (Value era) - , ToExpr (EraRuleFailure "PPUP" era) - ) => - ToExpr (AllegraUtxoPredFailure era) - -instance - ( Era era - , ToExpr (TxOut era) - , ToExpr (Event (EraRule "PPUP" era)) - ) => - ToExpr (AllegraUtxoEvent era) diff --git a/eras/alonzo/formal-spec/Formal Spec with Plutus Integration - Review 1.rtf b/eras/alonzo/formal-spec/Formal Spec with Plutus Integration - Review 1.rtf deleted file mode 100644 index e108eb644b1..00000000000 --- a/eras/alonzo/formal-spec/Formal Spec with Plutus Integration - Review 1.rtf +++ /dev/null @@ -1,88 +0,0 @@ -{\rtf1\ansi\ansicpg1252\cocoartf1671\cocoasubrtf500 -{\fonttbl\f0\fswiss\fcharset0 Helvetica;} -{\colortbl;\red255\green255\blue255;\red251\green2\blue7;\red251\green2\blue7;} -{\*\expandedcolortbl;;\cssrgb\c100000\c14913\c0;\cssrgb\c100000\c14913\c0;} -\margl1440\margr1440\vieww10800\viewh18480\viewkind0 -\deftab720 -\pard\pardeftab720\partightenfactor0 - -\f0\fs24 \cf0 A Formal Specification of the Cardano Ledger with Plutus Integration\ -Review 1\ -\ -\ -- Perhaps it is better to have page numbers as Arabic numerals rather than Roman numerals?\ -\cf2 Yes!\cf0 \ -\ -- p4 The type \'93resource primitives\'94 is not defined?\ -\cf2 \'93Resource primitives\'94 will be specified when there is a final decision of the exact type of CostMod - \ -The Plutus team is working on it!\cf0 \ -\ -- p4 \'93set of arguments passed to the interpreter for for script\'85\'94 - extra \'93for\'94\ -\cf2 Yup!\cf0 \ -\ -- p7 \'93Yes for when it is for when all scripts will validate\'94 -> \'93Yes for when all scripts will validate\'94\ -\cf2 Yup\cf0 \ -\ -- p8 I\'92m not sure how marking all inputs as for-fees helps with privacy?\ -\cf2 Does this help?:\ - An example of \ - how marking only certain inputs as for-fees may be more telling than \ - a user intended is as follows. Suppose there is a single Plutus script carried by a \ - transaction. The inputs marked as for-fees, as well as the data in the UTxO outputs they are \ - spending, can then be associated with the script.\ -\ -Should I add this into the spec?\cf0 \ -\ -- p8 \'93processed full\'94 -> \'93processed in full\'94\ -\cf2 Yup\cf0 \ -\ -- p8 I am not clear about what the description of HasDV means. The best I can paraphrase is \'93HasDV: This is a tag attached to a transaction\'92s output, used to indicate whether the transaction output contains the full datum object corresponding to the data hash.\'94 Is this correct?\ -\cf2 Does this make more sense?:\ -This is a tag attached to a transaction output if it is locked by a Plutus \ - script. That is, the output contains an address, a value, and necessarily a \ - hash of a datum. \ - This tag indicates whether the transaction carrying the output\ - contains, in its set of datum objects, the full datum corresponding \ - to the hash of the datum in the output. \ -\ - Note that it is up to the user \ - to decide whether the transaction should have the full datum. The purpose of \ - including it is strictly to communicate it to the user who will be spending \ - the output in the future, and will require the full datum to validate \ - the Plutus script locking the output. However, this tag must be applied \ - correctly, otherwise the transaction will not validate. \cf0 \ -\ -- p8 \'93destinction\'94 -> \'93distinction\'94\ -\pard\pardeftab720\partightenfactor0 -\cf3 Yup\cf0 \ -\ -- According to p14 \'93the fee-marked inputs are strictly of the type that are key or multisignature script locked\'94. Does this contradict on p8 \'93Only VK-spending inputs can be used to pay fees\'94? Or does \'93VK-spending inputs\'94 also contain multisignature scripts?\ -\pard\pardeftab720\partightenfactor0 -\cf2 MSig script inputs can pay fees as they are not involved in 2-phase script validation. This was \ -A mistake, thank you!\ -\cf0 \ -- What is the reason that only key/multisig script locked inputs can be marked for fees? Is this to prevent complications with using outputs from scripts?\ -\cf2 Key and MSig input spending is validated in phase 1, so by the time phase 2 must be performed, we already know that spending these is OK (valid). So, these inputs can then be used to pay for validating the Plutus scripts. The intuition is that Plutus scripts will cost more that MSig or VK validation, so we want to charge people for running them even if they don\'92t validate. This is one way to do it. Does this make sense? Should I elaborate on this, and at what point in the document do you think is best to discuss it?\cf0 \ -\ -- p8 \'93and for all purposes - forgin, \'85\'94 -> \'93and for all purposes - forgining tokens, \'85\'94\ -\pard\pardeftab720\partightenfactor0 -\cf3 Yup\ -\pard\pardeftab720\partightenfactor0 -\cf0 \ -(Fig 2)\ -- p9 The UTxOOut type is different from TxOut in the ledger spec (SL-D5, v.0.2, Oct 08, 2019) which is defined as Addr x Coin. Are these two compatible or does this spec\'92s UTxOOut replace the TxOut type in the v.0.2 ledger spec? Also, are the Coin type and the Value type (used in this spec) compatible, or is the Coin type replaced by Value?\ -\pard\pardeftab720\partightenfactor0 -\cf3 The Coin type is still used everywhere that is Ada-only - like reward accounts, treasury, etc.\ -Coin type can be converted into a Value type. In the UTxO and transaction outputs, everything \ -Is strictly Value (even Ada is expressed as Value). And yes, the UTxOOut replaces the TxOut \ -that used to be in the UTxO, because transaction outputs and UTxO outputs don\'92t have exactly \ -the same information any more (e.g. no HasDV tag in the UTxO). \cf0 \ -\ -- p9 Why does UTxOOut include the slot number of when the output is created, but TxOut does not?\ -\cf3 TxOut does not need a slot number because the slot number is known from the block the transaction \ -Is in. Adding that slot number in the UTxO allows us to keep that information.\cf0 \ -\ -- p9 According to its description, CurItem is a hash of a forging script, transaction input, etc. However in Fig 2, its type is ScriptHash U TxIn U Wdrl U DCert. The ScriptHash type includes hash of any script, right? If so, how does one know/check that it is specifically a hash of a forging script?\ -\cf3 We don\'92t know what script it is a hash of. The way CurItem is used (to look up redeemers) \ -Is limited to only ever it being a hash of a forging script (see Figure 10). \ -} \ No newline at end of file diff --git a/eras/alonzo/formal-spec/Formal Spec with Plutus Integration - Review 2.rtf b/eras/alonzo/formal-spec/Formal Spec with Plutus Integration - Review 2.rtf deleted file mode 100644 index 4d18a2ef4a7..00000000000 --- a/eras/alonzo/formal-spec/Formal Spec with Plutus Integration - Review 2.rtf +++ /dev/null @@ -1,39 +0,0 @@ -{\rtf1\ansi\ansicpg1252\cocoartf1671\cocoasubrtf500 -{\fonttbl\f0\fswiss\fcharset0 Helvetica;} -{\colortbl;\red255\green255\blue255;\red251\green2\blue7;} -{\*\expandedcolortbl;;\cssrgb\c100000\c14913\c0;} -\margl1440\margr1440\vieww10800\viewh15040\viewkind0 -\deftab720 -\pard\pardeftab720\partightenfactor0 - -\f0\fs24 \cf0 A Formal Specification of the Cardano Ledger with Plutus Integration\ -Review 2\ -\ -- p9 - \'93refecences\'94 -> \'93references\'94\ -\cf2 Yes\ -\cf0 \ -- p9 - \'93\'85we can to look\'85\'94 -> \'93\'85we can look\'85\'94\ -\cf2 Yes\cf0 \ -\ -- p9 - \'93\'85locked UTxO entry it contains\'85\'94 -> \'93\'85locked UTxO entry contains\'85\'94\ -\cf2 Yes\cf0 \ -\ -- p10 - The sentence \'93We do so by indexing\'85 the specific item (for the validation of which the witnessing term is needed).\'94 is a bit confusing. Can it be paraphrased to \'93We do so by indexing the witnessing terms by keys that uniquely identifies the item for which the witnessing term helps validate.\'94?\ -\cf2 Yes, that sounds better. \ -\cf0 \ -- p10 - The bullet points for \'93Body of the Transaction\'94 is missing MetaDataHash. If I understand correctly this is the thing which protects the integrity of the transaction metadata?\ -\cf2 That is why it is there - but I did not add an explanation because that\'92s a Shelley feature (since fairly recently)\ -\cf0 \ -- p11 - Is EUTxO short for extended UTxO?\ -\cf2 Yes, I will point that out the first time I use it.\ -\cf0 \ -- p11 - \'93additionaly\'94 -> \'93additionally\'94\ -\cf2 Yes\cf0 \ -\ -- p11 - \'93The second is cmlangs, which, given a set of scripts, returns the set of language tags of scripts whose languages have a corresponding cost model.\'94 - Does this mean it is possible to have a script which uses a language with no cost model? How does one compute execution costs in this case?\ -\cf2 Yes - the native MSig scripts don\'92t have a cost model in the Cost Models map. Their execution cost is not discussed in the Shelley formal spec, but in the executable spec it is analyzed and included in the transaction fee calculation. Note that it is not included *directly* in the fee - these scripts are analyzed as part of the tx size calculation, based on which the fee is calculated (this size -> fee calculation is in the Shelley spec). \cf0 \ -\ -- p13 - Could you explain the description of adaID, which says \'93guessing a script that hashes to this value and validates will allow a user to forge unlimited amounts of Ada\'94? How is this attack performed, and this obvious point of attack seems rather dangerous?\ -\cf2 We use a specific value for adaID like the bystestring \'93\'94 , but later on, as you will see in the rules, we actually check that nothing with ID \'93\'94 is forged. If someone accidentally happens to make a script that hashes to \'93\'94 (I don\'92t think this is even possible?), it will be easy to correct this with a small change to the script. I will explain this in that section.\cf0 \ -\ -} \ No newline at end of file diff --git a/eras/alonzo/formal-spec/Formal Spec with Plutus Integration - Review 3.rtf b/eras/alonzo/formal-spec/Formal Spec with Plutus Integration - Review 3.rtf deleted file mode 100644 index f82535df208..00000000000 --- a/eras/alonzo/formal-spec/Formal Spec with Plutus Integration - Review 3.rtf +++ /dev/null @@ -1,67 +0,0 @@ -{\rtf1\ansi\ansicpg1252\cocoartf1671\cocoasubrtf600 -{\fonttbl\f0\fswiss\fcharset0 Helvetica;} -{\colortbl;\red255\green255\blue255;\red251\green2\blue7;\red251\green2\blue7;} -{\*\expandedcolortbl;;\cssrgb\c100000\c14913\c0;\cssrgb\c100000\c14913\c0;} -\margl1440\margr1440\vieww10800\viewh11560\viewkind0 -\deftab720 -\pard\pardeftab720\partightenfactor0 - -\f0\fs24 \cf0 A Formal Specification of the Cardano Ledger with Plutus Integration\ -Review 3\ -\ -- p16 \'93\'85based on current resource use pricing.\'94 is a bit more clear if replaced by \'93based on pricing for current resource use\'94\ -\cf2 Changed to: .. based on the amount of $\\ExUnits$ it has budgeted for running the \ - scripts it carries, and the prices (as indicated in the current protocol parameters) \ - for each of the components of $\\ExUnits$. Recall that a transaction pays a flat \ - fee for running a Plutus script, plus some amount per unit of memory \ - and per reduction step.\cf0 \ -\ -Figure 8\ -- \'93tx VK inputs used for fees\'94 -> \'93tx VK and multisignature script inputs used for fees\'94?\ -\cf2 Yes\cf0 \ -\ -- Very minor, but there are extra parentheses in definition of txinputs_vf, ie ((txid, ix), isfee) should be (txid, ix, isfee).\ -\cf3 Yes\cf0 \ -\ -- Does \'93range\'94 output empty set if the input to range is empty? For example, in feesOK, does range(txinputs_vf\'85) output empty set if none of the fee-marked inputs are in UTXO or no input is marked for fees?\ -\cf3 Yes\cf0 \ -\ -- In feesOK, the line \'93^ ubalance (txinputs_vf txb) \\in Coin\'94 should be \'93^ ubalance (txinputs_vf txb \\lefttriangle utxo) \\in Coin\'94 \ -\cf3 Yes\cf0 \ -\ -- ubalance outputs the type Value, which is different from Coin. How is it checked that the output of ubalance is in the set Coin? This should be done by checking that the Value part of the fee-marked inputs all have domain that is equal to adaID, right?\ -\cf2 I added a note about notation abuse, and put it in the section where I explain adaID:\ -\'93However, we will abuse notation and\ -write shorthand that $v ~\\in~ \\Coin$ is $\\type\{True\}$ when\ -$v~ =~ \\fun\{coinToValue\}~ c$ for some $c~\\in~\\Coin$.\'94\cf0 \ -\ -- The definition of outs: According to the definition of UTxOOut, the output part of UTXO has \'93slot\'94 only when it has a DataHash (ie. when UTxOOut is type TxOutP x Slot). However in the definition of outs, slot is always included in the output. This would result in the wrong type if the output of getOut is of type TxOutND.\ -\cf2 Thank you! There is a mistake here - the brackets are wrong for the UTxOOut definition, the slot should be included regardless \ -of whether the output type is TxOutP or TxOutND. \ -getOut throws away the HasDV value in the case that a TxOut is of type TxOutP, and keeps \ -the whole output if it is of type TxOutND (because it does not have a HasDV tag). The outs \ -function adds the slot number to whatever getOut returned. \cf0 \ -\ -- Very minor, but we could replace \'93TxId x Ix\'94 in definition of txins with UTxOIn.\ -\cf2 This is intentional. Even though they are the same, we do not want to conflate them,\ -As they may be different in the future.\cf0 \ -\ -Figure 9\ -- \'93UTxO with only the Ada coins\'94 -> \'93UtxO with only Ada coins\'94\ -\cf2 Changed to:\ -\'93returns the addresses in the UTxO paired with the amount of Ada in them\'94\cf0 \ -\ -- The definition of ubalance: The function getValue takes input UTxOOut or TxOut, so the definition should be \'93\\sum_\{_-> out \\in utxo\} getValue out\'94. \ -\cf2 Yup!\cf0 \ -\ -- The argument \'93rewards\'94 is not used in the definition of \'93consumed\'94.\ -\cf2 Removed\cf0 \ -\ -- The description of \'93consumed\'94 is in slightly different order than the definition. According to the definition, the description should be \'93sum of the value UTXO entries consumed, reward address value consumed, value consumed from the deposit pot, and the value forged by a transaction.\'94\ -\cf3 Yup!\cf0 \ -\ -- I\'92m not sure which part of the definition of \'93produced\'94 is the fee for processing scripts? According to definition txfee, it is the non-script fee, right?\ -\cf3 The fee now covers the script fees as well (I made a note saying that).\cf0 \ -\ -- The description of \'93produced\'94 is also in a slightly different order than the definition. According to the definition, the description should be \'93contains the output it adds to UTxO, the fee\'85, and the deposits\'85\'94\ -\cf3 Yup!} \ No newline at end of file diff --git a/eras/alonzo/formal-spec/Formal Spec with Plutus Integration - Review 4.rtf b/eras/alonzo/formal-spec/Formal Spec with Plutus Integration - Review 4.rtf deleted file mode 100644 index 5ac06bb25e7..00000000000 --- a/eras/alonzo/formal-spec/Formal Spec with Plutus Integration - Review 4.rtf +++ /dev/null @@ -1,44 +0,0 @@ -{\rtf1\ansi\ansicpg1252\cocoartf1671\cocoasubrtf600 -{\fonttbl\f0\fswiss\fcharset0 Helvetica;} -{\colortbl;\red255\green255\blue255;\red251\green2\blue7;\red251\green2\blue7;} -{\*\expandedcolortbl;;\cssrgb\c100000\c14913\c0;\cssrgb\c100000\c14913\c0;} -\margl1440\margr1440\vieww10800\viewh14920\viewkind0 -\deftab720 -\pard\pardeftab720\partightenfactor0 - -\f0\fs24 \cf0 A Formal Specification of the Cardano Ledger with Plutus Integration\ -Review 4\ -\ -- p22 - \'93signle\'94 -> \'93single\'94\ -\cf2 Yup!\cf0 \ -\ -- p23 - \'93alloted\'94 -> \'93allotted\'94\ -\cf2 Yup!\cf0 \ -\ -Figure 10\ -- In the first definition of indexof, there is an extra right arrow \'93->\'94\ -\cf2 Yup!\cf0 \ -\ -- In the definition of getmdl, what happens if \'93(language s) <| (costmdls pp)\'94 is empty, eg. a multisig script which does not have a cost model? Will all scripts called with this function have a cost model?\ -\cf3 Since all the scripts that go into the sLst are Plutus scripts, they are supposed to have have a cost model. Do you have a suggestion for a better way to to express things so that there is no need for implicitly assuming that the list of cost models will be non empty? \cf0 \ -\ -- In the definition of findRdmr, when indexof is given arguments of wrong type (eg. if the first argument is type Wdrl but second argument is DCert*) will it just cause the predicate the return false? Or might it output an error?\ -\cf3 The intention was that it cannot be applied at all to a predicate of the wrong type, so there is no way the predicate in the subset definition should not be satisfied in case of wrong type. I am not sure if this is a problem?\cf0 \ -\ -Figure 11\ -- In the definition of allCertScrts, does it output (script_v, r; \'85) such that \'93r\'94 is all the items in \'93findRdmr tx cert\'94 appended together? Or is there a different (script_v, r; \'85) for each \'93r\'94 in \'93findRdmr tx cert\'94?\ -\cf3 the r would be any redeemer that is associated with the CurItem, and there would be an element (script_v, r; \'85) in the set for each associated r found. However, the idea is that there is a unique r associated with each item, so it should be just one element. Does this make sense?\cf0 \ -\ -- In the definition of allWDRLSScrts: The input of validatorHash should be type Addr^script but the definition of Wdrl in Shelley spec is Addr_rwd. Has Addr_rwd been replaced by Addr^script?\ -\cf3 Mistake. The reward address contains exactly one thing - the hash of either a key or a script which can collect rewards. This is what should be used to look up the script in indexedScripts. By default it will only return anything if the reward address was a script hash.\cf0 \ -\ -Figure 12\ -- In the definition of allInsScrts: The output of txinputs is TxIn which has the IsFee field, so \'93(txid, ix) \\in txinputs (txbody tx),\'94 should be \'93(txid, ix, _) \\in txinputs (txbody tx),\'94\ -\cf2 Yup!\cf0 \ -\ -- The function findRdmr takes second argument of type TxIn (type in CurItem) which has the IsFee field so \'93r \\in findRdmr tx (txid, ix),\'94 should be \'93r \\in findRdmr tx (txid, ix, _),\'94 \ -\cf3 I am changing the types of CurItem slightly to get rid of data not needed for uniquely identifying \ -the current item, including removing IsFee , changing Wdrl to just the address, and only the certificate entity being registered/deregistered. \cf0 \ -\ -- \'93(txid, ix) -> ((a, v), h_d) \\in utxo,\'94 should be \'93(txid, ix) -> ((a, v), h_d, _) \\in utxo,\'94 (is missing the \'93Slot\'94 part of UTxOOut)\ -\cf2 Yup!} \ No newline at end of file diff --git a/eras/alonzo/formal-spec/Formal Spec with Plutus Integration - Review 5.rtf b/eras/alonzo/formal-spec/Formal Spec with Plutus Integration - Review 5.rtf deleted file mode 100644 index 04c8a8201ff..00000000000 --- a/eras/alonzo/formal-spec/Formal Spec with Plutus Integration - Review 5.rtf +++ /dev/null @@ -1,50 +0,0 @@ -{\rtf1\ansi\ansicpg1252\cocoartf1671\cocoasubrtf600 -{\fonttbl\f0\fswiss\fcharset0 Helvetica;} -{\colortbl;\red255\green255\blue255;\red251\green2\blue7;} -{\*\expandedcolortbl;;\cssrgb\c100000\c14913\c0;} -\margl1440\margr1440\vieww10800\viewh14280\viewkind0 -\deftab720 -\pard\pardeftab720\partightenfactor0 - -\f0\fs24 \cf0 A Formal Specification of the Cardano Ledger with Plutus Integration\ -Review 5\ -\ -Figure 14\ -- In the line \'93(isVal, remExU\'92\'92) := [[fst \'85\'94, the term remExU\'92 does not exist yet when it is used. Should the SVAL transition be done first?\ -\cf2 Yeah\cf0 \ -\ -- I am a bit confused about the use of SVAL. It is supposed to check that the validation tag is applied correctly, but how does one know this (from remExU?)\ -\cf2 The check that it is applied correctly means that if some script does not validate or runs out of ExUnits, the tag is Nope, and if all scripts validate, the tag is Yes. It does not matter if there are ExUnits left over\cf0 \ -\ -Figure 16\ -- \'93txup tx\'94 -> should be \'93txUpdates txb\'94?\ -\cf2 This was changed\ -\cf0 \ -- \'93refunded := \'85 txb\'94 -> should be tx instead of txb?\ -\cf2 This was changed\ -\cf0 \ -- \'93decayed := \'85 txb\'94 -> should be tx instead of txb?\ -\cf2 This was changed\ -\cf0 \ -- Similarly, in Figure 9 the definition of \'93consumed\'94, the line \'93+ keyRefunds \'85 txb) + forge txb\'94 should be \'93+ keyRefunds \'85 tx) + forge txb\'94 right?\ -\cf2 This was changed\ -\cf0 \ -Figure 17\ -- In line \'93\\forall txout \\in txouts txb, getValue\'85\'94 there is an extra \'93\}\'94 bracket. Also, I\'92m not sure if the notation \'93\\geq \\epsilon\'94 defined. Should this line be instead \'93\\forall txout \\in txouts txb, _ |-> (_ |-> q) := getValue txout, q \\geq 0\'94?\ -\cf2 Yup\cf0 \ -\ -Figure 18\ -\cf2 I changed the return type in this figure, it is just ScriptHash now, adjusted other things\ -\cf0 - The line \'93\{i |-> validatorHash (getAddr \'85\'94 - How do we know that \'93getAddr txout\'94 will be a script address? The requirement that \'93i \\in txinsScript\'85\'94 only refers to the inputs right?\ -\ -- There is an extra right parens \'93)\'94 in the line \'93\{(a |-> c) |-> stakeCred_r a\'85\'94\ -\ -- The output of \'93stakeCred_r a\'94 can be both KeyHash_stake or ScriptHash (Credential_stake type). Should there be something which ensures it is of type ScriptHash? ie. \'93\{(a |-> c) |-> stakeCred_r a | stakeCred_r a \\in ScriptHash, a |-> c \\in txwdrls txb\'85\'94\ -\ -- The \'93cert\'94 in the line \'93\{ cert |-> a | a \\in ScriptHash \'85\'94 is not defined.\ -\ -- The line \'93\{ (cid |-> tkns) \'85\'94 - The type of \'93( cid |-> tkns )\'94 is \'93Value\'94, but \'93CurItem\'94 doesn\'92t include \'93Value\'94 as one of its types. \ -\cf2 I will make CurItem consistent everywhere. It should be just cid, which is a script hash.\ -\cf0 \ -- The term \'93txw\'94 is defined but not used.\ -\cf2 Removed} \ No newline at end of file diff --git a/eras/alonzo/formal-spec/Formal Spec with Plutus Integration - Review 6.rtf b/eras/alonzo/formal-spec/Formal Spec with Plutus Integration - Review 6.rtf deleted file mode 100644 index 98e7956c65e..00000000000 --- a/eras/alonzo/formal-spec/Formal Spec with Plutus Integration - Review 6.rtf +++ /dev/null @@ -1,50 +0,0 @@ -{\rtf1\ansi\ansicpg1252\cocoartf1671\cocoasubrtf600 -{\fonttbl\f0\fswiss\fcharset0 Helvetica;} -{\colortbl;\red255\green255\blue255;\red251\green2\blue7;} -{\*\expandedcolortbl;;\cssrgb\c100000\c14913\c0;} -\margl1440\margr1440\vieww10800\viewh14560\viewkind0 -\deftab720 -\pard\pardeftab720\partightenfactor0 - -\f0\fs24 \cf0 A Formal Specification of the Cardano Ledger with Plutus Integration\ -Review 6\ -\ -p31\ -- \'93To do this, we have two separate rules in for\'85\'94 -> the \'93in\'94 is extra\ -\cf2 Yup\cf0 \ -\ -p32\ -- \'93\'85we have tx \\in ShelleyTx, see Figure 19\'94 -> should be Figure 20\ -\ -Figure 19\ -- \'93\\forall txin \\in txinputs txb, \'85 \\in dom(indexedDats txw)\'94 -> \'93\\in dom(indexedDats tx)\'94 (txw should be tx)\ -\cf2 Yup\cf0 \ -\ -- \'93cert \\in txcerts txb, regCred cert\'85\'94 - regCred takes type DCert_regpool; however this line also checks that cert \\in DCert_deregkey. Are these the same type?\ -\cf2 The registration credential of a deregestration certificate can be a script hash, but for no other kinds of certs \cf0 \ -\ -- \'93hashMD\'94 is not defined in this document. Is this the same as the \'93hash\'94 function?\ -\cf2 MD is a Shelley feature\ -\cf0 \ -Figure 20\ -- \'93mdh := txMDhash txb md := txMD tx\'94 and \'93(mdh = <> ^ md = <>)\'85\'94 - If tx is a ShelleyTx it shouldn\'92t have the MetaData field right? So perhaps these couple lines should be omitted?\ -\cf2 MD is a Shelley feature\ -\cf0 \ -Figure 21, Figure 22\ -- \'93(stkCreds, _, _, _, _, genDelegs) := dstate\'94 (in two places in Figure 21, and also in Fig 22) - should be \'93(stkCreds, _, _, _, _, genDelegs, _) := dstate\'94 (since in the DState definition in Shelley spec Fig 27, after genDelegs there is i_rwd).\ -\cf2 Yup\cf0 \ -\ -- \'93(stpools, _, _, _) := pstate\'94 (in two places in Figure 21, and also in Fig 22) - should be \'93(stpools, _, _) := pstate\'94 since in the Shelley spec Fig 27 there are only 3 components in PState.\ -\cf2 Yup\cf0 \ -\ -Figure 24\ -\cf2 I changed the format of this figure\ -\cf0 - In the Shelley ChainState, the field corresponding to \'93utxo\'94 in toGoguen is type UTxOState which contains UTxO as its first (of 4) components (Shelley spec Fig 19). So in toGoguen, instead of utxo, should be \'93(utxo, _, _, _)\'94\ -\ -- The component v_10 in toGoguen seems to be extra, since in Shelley spec, NewEpochState (Fig 60), the first component of Shelley ChainState, has only 7 components.\ -\ -Figure 25\ -- Should toGoguenTx also include \'93rdmrsHash txb\'92 = <>\'94, \'93txMDhash txb\'92 = <>\'94, \'93IsValidating = No\'94, \'93MetaData = <>\'94?\ -\cf2 Yes\cf0 \ -\ -- \'93txwits tx\'92 = (\\epsilon, \'85\'94 - Shelley transactions also have the field accessed by txwitsVKey, so this field should be included in Goguen transaction right?} \ No newline at end of file diff --git a/eras/alonzo/formal-spec/IOHKCoverPage.sty b/eras/alonzo/formal-spec/IOHKCoverPage.sty deleted file mode 100644 index be8f75ac50e..00000000000 --- a/eras/alonzo/formal-spec/IOHKCoverPage.sty +++ /dev/null @@ -1,266 +0,0 @@ -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{IOHKCoverPage}[2019/09/12] - -\RequirePackage{fancyhdr} -%\RequirePackage{xcolor} - -\newif\if@deliverable -\newif\if@teamreport -\newif\if@wpreport -\newif\if@techreport -\DeclareOption{deliverable} - {\@deliverabletrue} -\DeclareOption{teamreport} - {\@teamreporttrue} -\DeclareOption{wpreport} - {\@wpreporttrue} -\DeclareOption{techreport} - {\@techreporttrue} - \ProcessOptions -% -\def\IOHK{IOHK} -% -\def\reportnumber#1{\def\@reportnumber{#1}} -\def\reportmonth#1{\def\@reportmonth{#1}} -\def\reportyear#1{\def\@reportyear{#1}} -\def\email#1{\def\@email{#1}} -\def\@reportnumber{?} -\def\@reportmonth{} -\def\@reportyear{} -% -\def\Project#1{\def\@Project{#1}} -\def\ReportNumber#1{\def\@ReportNumber{#1}} -\def\DeliverableNumber#1{\def\@DeliverableNumber{#1}} -\def\DeliverableTitle#1#2{\def\@DeliverableTitle{#1}\def\@ShortDelTitle{#2}} -\def\DueDate#1{\def\@DueDate{#1}} -%% should be possible to convert! KH -\def\SubmissionDate#1#2{\def\@SubmissionDate{#1}\def\@ShortSubmissionDate{#2}} -\def\VersionDate#1{\def\@VersionDate{#1}} -\def\LeaderName#1{\def\@LeaderName{#1}} -\def\Authors#1{\def\@Authors{#1}} -\def\DeliverableResponsible#1{\def\@DeliverableResponsible{#1}} -\def\Institution#1{\def\@Institution{#1}} -\def\InstitutionAddress#1{\def\@InstitutionAddress{#1}} -\def\EditorName#1{\def\@EditorName{#1}} -\def\WorkPackage#1{\def\@WorkPackage{#1}} -\def\TaskNumber#1{\def\@TaskNumber{{\@emph Task number:} #1}} -\def\Version#1{\def\@Version{#1}} -\def\SVNRevision#1{\def\@SVNRevision{#1}} -\def\LastEditor#1{\def\@LastEditor{#1}} -%\def\Reviewers#1{\def\@ReviewersTitle{\@bold Reviewers:}\def\@Reviewers{#1}} -\def\Reviewers#1{\@Reviewerstrue\def\@Reviewers{#1}} -\def\LastDate#1{\def\@LastDate{#1}} -\def\DisseminationPU{\def\@IsPU{$\surd$}} -\def\DisseminationCO{\def\@IsCO{$\surd$}} -\def\DisseminationDR{\def\@IsDR{$\surd$}} -\newcommand{\Revision}[5]{\@writefile{cov}{\hline \hfil #1\hfil\\}} -\newcommand{\Task}[3]{\@Taskstrue\@writefile{par}{\hline #1\\}} - -\def\@Project{Cardano} -\def\@Authors{XXXX} -\def\@ReportNumber{XXXX} -\def\@DeliverableNumber{XXXX} -\def\@DeliverableTitle{XXXX} -\def\@ShortDelTitle{\@DeliverableTitle} -\def\@DueDate{XXXX} -\def\@SubmissionDate{XXXX} -\def\@ShortSubmissionDate{\@SubmissionDate} -\def\@LeaderName{XXXX} -\def\@DeliverableResponsible{XXXX} -\def\@Institution{XXXX} -\def\@InstitutionAddress{XXXX} -\def\@EditorName{XXXX} -\def\@WorkPackage{XXXX} -\def\@TaskNumber{~} -\def\@Version{XXXX} -\def\@SVNRevision{XXXX} -\def\@LastEditor{XXXX} -\def\@Reviewers{~} -\newif\if@Reviewers -\newif\if@Tasks -\@Tasksfalse -\def\@LastDate{XXXX} -\def\@IsDR{} -\def\@IsPP{} -\def\@IsPU{} -\def\@IsRE{} -\def\@IsCO{} -\def\@Revision{} -\def\@Task{} - -%%cover fonts -\def\@ProjFont{\fontsize{24}{28}\usefont{T1}{ptm}{b}{n}\selectfont} -\def\@TitleFont{\fontsize{18}{24}\usefont{T1}{ptm}{b}{n}\selectfont} -\def\@Large{\fontsize{18}{21}\usefont{T1}{ptm}{m}{n}\selectfont} -\def\@Small{\fontsize{9}{11}\usefont{T1}{ptm}{m}{n}\selectfont} -\def\@font{\fontsize{12}{12}\usefont{T1}{ptm}{m}{n}\selectfont} -\def\@sc{\fontshape{sc}\selectfont} -\def\@emph{\fontshape{sl}\selectfont} -\def\@bold{\fontseries{b}\selectfont} - - -\newdimen\@CoverPageWidth -\newdimen\@CoverPageHeight -\newdimen\@TableWidth -\@CoverPageWidth=\paperwidth -\@CoverPageHeight=\paperheight -\@TableWidth=\paperwidth -\advance\@CoverPageWidth by -1.5in -\advance\@CoverPageHeight by -2in -\advance\@TableWidth by -5cm -\newdimen\TableWidth -\TableWidth=\@TableWidth - - -\newcommand{\@CoverBody}{ -\@font -\parbox{\linewidth}{\centering - \vspace{15mm} -% {Project no. 644235}\par - \vspace{6mm} - {\@ProjFont \Project{}}\par - \vspace{6mm} -% {Research \& Innovation Action (RIA)}\par -% {\@sc \large{\textbf{Refactoring Parallel Heterogeneous Resource-Aware Applications -- a Software Engineering Approach}}}\par - \vspace{10mm} - \if@deliverable - {\@TitleFont \@DeliverableTitle\\ - \vspace{18mm} - {Deliverable }\@DeliverableNumber}\par - \vspace{16mm} - \begin{large} - \begin{center} - {\@Authors } - \end{center} - \end{large} - \par - \vspace{1cm} -% \begin{tabular}{r@{: }l} -% Due date of deliverable& \@DueDate\\ -% Actual submission date& \@SubmissionDate -% \end{tabular} - \par - \fi - \if@techreport - {\@TitleFont \@DeliverableTitle\\ - \vspace{3mm}} - {\Project{} Technical Report \# \@ReportNumber}\par - \vspace{6mm} - {\@Authors \vspace{1cm} }\par - \fi - -} -\parbox{\linewidth}{\flushright - \vspace{10mm} - \if@techreport - Report Registration Date: \@SubmissionDate - \else - {\@emph Project:} \@Project \par - \vspace{5mm} - \fi - \if@deliverable - {\@emph Type:} Deliverable\par - {\@emph Due Date:} \@DueDate\par - % {\@emph WP number:} \@WorkPackage\par - %{\@TaskNumber}\par - \vspace{5mm} - {\@emph Responsible team:} \@DeliverableResponsible\par - {\@emph Editor:} \@EditorName\par - {\@emph Team Leader:} \@LeaderName\par - \fi - \if@teamreport - \vspace{5mm} - {\@emph Report type:} Team Leader's Progress Report\par - \vspace{5mm} - {\@emph Name of Team leader:} \@LeaderName\par - {\@emph Institution \& address:} \@InstitutionAddress\par - \fi - \if@wpreport - {\@emph Report type:} WP Leader's Progress Report\par - {\@emph WP number:} \@WorkPackage\par - \vspace{5mm} - {\@emph Name of WP leader:} \@LeaderName\par - {\@emph Institution \& address:} \@InstitutionAddress\par - \fi -} -\vfill -\parbox{\linewidth}{\centering -{Version \@Version}\par - {\@SubmissionDate}\par - \vspace{5mm}} -{ -\newdimen\@msize -\@msize=\linewidth -\advance\@msize by -1cm -\advance\@msize by -6\tabcolsep -\begin{tabular}{ | p{0.7cm} | p{\@msize} | p{0.3cm} |} - \hline - \multicolumn{3}{|c|}{{\@bold Dissemination Level}}\\ - \hline - {\@bold PU} & Public & \@IsPU\\ - \hline - {{\@bold CO}} & Confidential, only for company distribution & \@IsCO\\ - \hline - {\@bold DR} & Draft, not for general circulation & \@IsDR\\ - \hline - \end{tabular} - } -} - -\newcommand{\@PrintCoverPage}{\bgroup\global\setbox255\vbox{% - \vspace*{-.25in}% - \noindent\hspace*{-.25in}% - \renewcommand{\thepage}{\roman{page}} - \pagestyle{myheadings} \markboth{}{} - - \rlap{ - \begin{minipage}[t][\@CoverPageHeight][t]{\@CoverPageWidth}% - \parbox{\linewidth}{ - \begin{minipage}[c]{6cm} - \includegraphics[width=6cm]{iohk-share-logo.jpg} - \end{minipage} - \hfill -% \begin{minipage}[c]{3.5cm} -% \includegraphics[width=3.5cm]{figures/H2020.jpg} -% \end{minipage} - } - \@CoverBody - \end{minipage} - }% -}\egroup\shipout\box255} - - -\newcommand{\@PrintBackCoverPage}{% -\pagestyle{myheadings}% -\markboth{\@Project: \@ShortDelTitle~(v.\@Version, \@ShortSubmissionDate)}% - {\@Project: \@ShortDelTitle~(v.\@Version, \@ShortSubmissionDate)}% -} - - - -\AtBeginDocument{\@PrintCoverPage\@PrintBackCoverPage% - \renewcommand{\thepage}{\roman{page}}% -% \setcounter{page}{1}% -} - -%% Added change log -- KH - -\newcounter{change} - -\newenvironment{changelog}{% -\clearpage -\setcounter{change}{0} -\section*{Change Log} -% -\begin{tabular}{||p{0.8cm}|p{1.6cm}|p{3cm}|p{1.5cm}|p{7.6cm}||}% -\hline\hline% -\textbf{Rev.} & \textbf{Date} & \textbf{Who} & \textbf{Team} & \textbf{What}% -}{% -\\\hline\hline% -\end{tabular}% -\clearpage% -} - -\newcommand{\change}[4]{\stepcounter{change}% -\\\hline% -\arabic{change}} diff --git a/eras/alonzo/formal-spec/Makefile b/eras/alonzo/formal-spec/Makefile deleted file mode 100644 index 18aafcd3e99..00000000000 --- a/eras/alonzo/formal-spec/Makefile +++ /dev/null @@ -1,43 +0,0 @@ -## -## Makefile for the Alonzo ledger specification, based on: -## -## https://tex.stackexchange.com/questions/40738/how-to-properly-make-a-latex-project -## - -# Document name -ifndef DOCNAME - DOCNAME = alonzo-ledger -endif - -# You want latexmk to *always* run, because make does not have all the info. -# Also, include non-file targets in .PHONY so they are run regardless of any -# file of the given name existing. -.PHONY: $(DOCNAME).pdf all clean - -# The first rule in a Makefile is the one executed by default ("make"). It -# should always be the "all" rule, so that "make" and "make all" are identical. -all: $(DOCNAME).pdf - -## -## CUSTOM BUILD RULES -## - -## -## MAIN LATEXMK RULE -## - -# -pdf tells latexmk to generate PDF directly (instead of DVI). -# -pdflatex="" tells latexmk to call a specific backend with specific options. -# -use-make tells latexmk to call make for generating missing files. - -# -interaction=nonstopmode keeps the pdflatex backend from stopping at a -# missing file reference and interactively asking you for an alternative. - -$(DOCNAME).pdf: $(DOCNAME).tex - latexmk -pdf -pdflatex="pdflatex -synctex=1 -interaction=nonstopmode" -use-make $(DOCNAME).tex - -watch: $(DOCNAME).tex - latexmk -pvc -pdf -pdflatex="pdflatex -synctex=1 -interaction=nonstopmode" -use-make $(DOCNAME).tex - -clean: - latexmk -CA diff --git a/eras/alonzo/formal-spec/alonzo-ledger.tex b/eras/alonzo/formal-spec/alonzo-ledger.tex deleted file mode 100644 index b34c0b5cd6f..00000000000 --- a/eras/alonzo/formal-spec/alonzo-ledger.tex +++ /dev/null @@ -1,397 +0,0 @@ -\documentclass[11pt,a4paper,dvipsnames]{article} -\usepackage[deliverable]{IOHKCoverPage} - - -\usepackage[margin=2.5cm]{geometry} -\usepackage{iohk} -\usepackage{microtype} -\usepackage{mathpazo} % nice fonts -\usepackage{amsmath} -\usepackage{amssymb} -\usepackage{amsthm} -\usepackage{latexsym} -\usepackage{mathtools} -\usepackage{stmaryrd} -\usepackage{extarrows} -\usepackage{slashed} -\usepackage[colon]{natbib} -\usepackage[unicode=true,pdftex,pdfa,colorlinks=true]{hyperref} -\usepackage{xcolor} -\usepackage[capitalise,noabbrev,nameinlink]{cleveref} -\usepackage{float} -\floatstyle{boxed} -\restylefloat{figure} -\usepackage{tikz} -\usepackage{booktabs} -\usepackage{enumerate} -\usepackage{comments} \newcommand{\khcomment}[1]{\comment{KH}{#1}} - - -%% -%% Package `semantic` can be used for writing inference rules. -%% -\usepackage{semantic} -%% Setup for the semantic package -\setpremisesspace{20pt} - -% data for Deliverable header -- added by KH from an EU H2020 project template -\DeliverableNumber{GL-D2} -\DeliverableTitle{A Formal Specification of the Cardano Ledger integrating Plutus Core}{Formal Spec: Cardano Ledger with Plutus Core} -\DeliverableResponsible{Formal Methods Team} -\EditorName{Andre Knispel, \IOHK} -\Authors{ - Andre Knispel \quad \texttt{andre.knispel@iohk.io}\\ - Polina Vinogradova \quad \texttt{polina.vinogradova@iohk.io} - % I think Andre is the main author of this document? KH -} -\DueDate{28$^{\textrm{th}}$ February 2021} -\SubmissionDate{}{} -\LeaderName{Philipp Kant, \IOHK} -\InstitutionAddress{\IOHK} -\Version{FS-2.2.0} -\Project{Goguen Ledger} -\DisseminationPU - -%% -%% Types -%% -\newcommand{\Nothing}{\ensuremath{\Diamond}} -\newcommand{\N}{\ensuremath{\mathbb{N}}} -\newcommand{\Bool}{\type{Bool}} -\newcommand{\Npos}{\ensuremath{\mathbb{N}^{+}}} -\newcommand{\Z}{\ensuremath{\mathbb{Z}}} -\newcommand{\R}{\ensuremath{\mathbb{R}}} -\newcommand{\Rnn}{\ensuremath{\mathbb{R}^{\geq 0}}} -\newcommand{\Tx}{\type{Tx}} -\newcommand{\ShelleyTx}{\type{ShelleyTx}} -\newcommand{\GoguenTx}{\type{GoguenTx}} -\newcommand{\TxBody}{\type{TxBody}} -\newcommand{\UnsignedData}{\type{UnsignedData}} -\newcommand{\VldSR}{\type{VldSR}} -\newcommand{\VldOut}{\type{VldOut}} -\newcommand{\Vlds}{\type{Vlds}} -\newcommand{\TxWitness}{\type{TxWitness}} -\newcommand{\Ix}{\type{Ix}} -\newcommand{\RdmrPtr}{\type{RdmrPtr}} -\newcommand{\TxId}{\type{TxId}} -\newcommand{\Addr}{\type{Addr}} -\newcommand{\UTxO}{\type{UTxO}} -\newcommand{\UTxOIn}{\type{UTxOIn}} -\newcommand{\Wdrl}{\type{Wdrl}} -\newcommand{\Coin}{\type{Coin}} -\newcommand{\PParams}{\type{PParams}} -\newcommand{\ShelleyPParams}{\type{ShelleyPParams}} -\newcommand{\NewParams}{\type{NewParams}} -\newcommand{\Slot}{\type{Slot}} -\newcommand{\MemoryEstimate}{\type{MemoryEstimate}} -\newcommand{\UTCTime}{\type{UTCTime}} -\newcommand{\SlotsPrior}{\ensuremath{\mathsf{SlotsPrior}}} -\newcommand{\SlotsPerEpoch}{\mathsf{SlotsPerEpoch}} -\newcommand{\SlotsPerKESPeriod}{\mathsf{SlotsPerKESPeriod}} -\newcommand{\SlotsStabilityParam}{\fun{k}} -\newcommand{\Duration}{\type{Duration}} -\newcommand{\StakePools}{\type{StakePools}} -\newcommand{\StakeDeleg}{\type{StakeDeleg}} -\newcommand{\StakeCreds}{\type{StakeCreds}} -\newcommand{\Seed}{\type{Seed}} -\newcommand{\seedOp}{\star} -\newcommand{\Ppm}{\type{Ppm}} -\newcommand{\Tppm}{\mathsf{T_{ppm}}} -\newcommand{\Value}{\type{Value}} -\newcommand{\ProtVer}{\ensuremath{\type{ProtVer}}} -\newcommand{\Language}{\type{Language}} -\newcommand{\ApName}{\ensuremath{\type{ApName}}} -\newcommand{\ApVer}{\ensuremath{\type{ApVer}}} -\newcommand{\SystemTag}{\ensuremath{\type{SystemTag}}} -\newcommand{\InstallerHash}{\ensuremath{\type{InstallerHash}}} -\newcommand{\PPUpdate}{\type{PPUpdate}} -\newcommand{\Applications}{\type{Applications}} -\newcommand{\AVUpdate}{\type{AVUpdate}} -\newcommand{\Update}{\type{Update}} -\newcommand{\DCert}{\type{DCert}} -\newcommand{\DCertRegKey}{\type{DCert_{regkey}}} -\newcommand{\DCertDeRegKey}{\type{DCert_{deregkey}}} -\newcommand{\DCertDeleg}{\type{DCert_{delegate}}} -\newcommand{\DCertRegPool}{\type{DCert_{regpool}}} -\newcommand{\DCertRetirePool}{\type{DCert_{retirepool}}} -\newcommand{\DCertGen}{\type{DCert_{genesis}}} -\newcommand{\DCertMir}{\type{DCert_{mir}}} -\newcommand{\PoolParam}{\type{PoolParam}} -\newcommand{\UTxOState}{\ensuremath{\type{UTxOState}}} -\newcommand{\SFState}{\ensuremath{\type{SFState}}} -\newcommand{\ledgerState}{\ensuremath{\type{ledgerState}}} -\newcommand{\ValEnv}{\type{ValEnv}} -\newcommand{\ValState}{\type{ValState}} -\newcommand{\ScrInData}{\type{ScrInData}} -\newcommand{\AddrRWD}{\type{Addr_{rwd}}} -\newcommand{\AddrB}{\type{Addr_{base}}} -\newcommand{\AddrP}{\type{Addr_{ptr}}} -\newcommand{\AddrE}{\type{Addr_{enterprise}}} -\newcommand{\AddrBS}{\type{Addr_{bootstrap}}} -\newcommand{\Ptr}{\type{Ptr}} -\newcommand{\DState}{\type{DState}} -\newcommand{\DWEnv}{\type{DWEnv}} -\newcommand{\DPSEnv}{\type{DPSEnv}} -\newcommand{\DPEnv}{\type{DPEnv}} -\newcommand{\DEnv}{\type{DEnv}} -\newcommand{\PEnv}{\type{PEnv}} -\newcommand{\DPState}{\type{DPState}} -\newcommand{\PState}{\type{PState}} -\newcommand{\DCertBody}{\type{DCertBody}} -\newcommand{\TData}{\type{TData}} -\newcommand{\DPoolReap}{\ensuremath{\type{poolreap}}} -\newcommand{\UPIState}{\type{UPIState}} -\newcommand{\UpdatePayload}{\type{UpdatePayload}} -\newcommand{\NetworkId}{\mathsf{NetworkId}} - -% multi-signature -\newcommand{\StakeCredential}{\type{Credential}_{stake}} -\newcommand{\StakeDelegs}{\type{StakeDelegs}} -\newcommand{\Quorum}{\type{Quorum}} - -\newcommand{\txwitsVKey}[1]{\fun{txwitsVKey}~\var{#1}} -\newcommand{\txwitsScript}[1]{\fun{txwitsScript}~\var{#1}} - -\newcommand{\AddrVKey}{\type{Addr^{vkey}}} -\newcommand{\AddrRWDVKey}{\type{Addr_{rwd}^{vkey}}} -\newcommand{\AddrRWDScr}{\type{Addr_{rwd}^{script}}} -\newcommand{\AddrVKeyB}{\type{Addr^{vkey}_{base}}} -\newcommand{\AddrVKeyP}{\type{Addr^{vkey}_{ptr}}} -\newcommand{\AddrVKeyE}{\type{Addr^{vkey}_{enterprise}}} -\newcommand{\AddrVKeyBS}{\type{Addr^{vkey}_{bootstrap}}} -\newcommand{\AddrScr}{\type{Addr^{script}}} -\newcommand{\AddrScrBase}{\type{Addr_{base}^{script}}} -\newcommand{\AddrScrEnterprise}{\type{Addr_{enterprise}^{script}}} -\newcommand{\AddrScrPtr}{\type{Addr_{ptr}^{script}}} -\newcommand{\AuxiliaryDataHash}{\type{AuxiliaryDataHash}} -\newcommand{\AuxiliaryData}{\type{AuxiliaryData}} -\newcommand{\Metadata}{\type{Metadata}} -\newcommand{\DataHash}{\type{DataHash}} -\newcommand{\TxInfo}{\type{TxInfo}} -\newcommand{\Datum}{\type{Datum}} -\newcommand{\Redeemer}{\type{Redeemer}} -\newcommand{\EpochInfo}{\type{EpochInfo}} -\newcommand{\SystemStart}{\type{SystemStart}} -\newcommand{\ScriptHash}{\type{ScriptHash}} -\newcommand{\PolicyID}{\type{PolicyID}} -\newcommand{\LangDepView}{\type{LangDepView}} -\newcommand{\ScriptIntegrityHash}{\type{ScriptIntegrityHash}} -\newcommand{\Script}{\type{Script}} -\newcommand{\ScriptPlutus}{\type{Script}_{plc}} -\newcommand{\PlutusVI}{\type{PlutusV1}} -\newcommand{\PlutusVII}{\type{PlutusV2}} -\newcommand{\ScriptPhOne}{\type{Script^{ph1}}} -\newcommand{\ScriptPhTwo}{\type{Script^{ph2}}} -\newcommand{\ScriptV}{\type{Script_{v}}} -\newcommand{\ScriptPurpose}{\type{ScriptPurpose}} -\newcommand{\Rdmrs}{\type{Rdmrs}} -\newcommand{\DorR}{\type{DorR}} -\newcommand{\ValidationData}{\type{ValidationData}} -\newcommand{\IsValid}{\type{IsValid}} -\newcommand{\HashUnsData}{\type{HashUnsData}} -\newcommand{\True}{\mathsf{True}} -\newcommand{\False}{\mathsf{False}} -\newcommand{\MSig}{\type{MSig}} -\newcommand{\Tag}{\type{Tag}} -\newcommand{\Credential}{\type{Credential}} -\newcommand{\AssetID}{\type{AssetID}} -\newcommand{\Integer}{\type{Integer}} - -%% Adding witnesses -\newcommand{\AssetName}{\type{AssetName}} -\newcommand{\Quantity}{\type{Quantity}} -\newcommand{\TxIn}{\type{TxIn}} -\newcommand{\OutRef}{\type{OutRef}} -\newcommand{\ShelleyTxIn}{\type{ShelleyTxIn}} -\newcommand{\ShelleyTxOut}{\type{ShelleyTxOut}} -\newcommand{\ShelleyUTxO}{\type{ShelleyUTxO}} -\newcommand{\ShelleyChainState}{\type{ShelleyChainState}} -\newcommand{\HasDV}{\type{HasDV}} -\newcommand{\TxInScr}{\type{TxInScr}} -\newcommand{\Info}{\type{Info}} -\newcommand{\ExUnits}{\type{ExUnits}} -\newcommand{\CostMod}{\type{CostModel}} -\newcommand{\ByteString}{\type{ByteString}} -\newcommand{\ValidityInterval}{\type{ValidityInterval}} -\newcommand{\Network}{\type{Network}} -\newcommand{\Prices}{\type{Prices}} -\newcommand{\IsFee}{\type{IsFee}} -\newcommand{\TxOut}{\type{TxOut}} -\newcommand{\OutFoo}{\type{OutFoo}} -\newcommand{\VKey}{\type{VKey}} -\newcommand{\VKeyEv}{\type{VKey_{ev}}} -\newcommand{\VKeyGen}{\type{VKey_G}} -\newcommand{\SKey}{\type{SKey}} -\newcommand{\SKeyEv}{\type{SKey_{ev}}} -\newcommand{\KeyHash}{\type{KeyHash}} -\newcommand{\RewardAcnt}{\type{RewardAcnt}} -\newcommand{\KeyHashGen}{\type{KeyHash_G}} -\newcommand{\KeyPair}{\type{KeyPair}} -\newcommand{\KeyPairEv}{\type{KeyPair_{ev}}} -\newcommand{\Sig}{\type{Sig}} -\newcommand{\Data}{\type{Data}} -%% Adding delegation -\newcommand{\Epoch}{\type{Epoch}} -\newcommand{\KESPeriod}{\type{KESPeriod}} -%% Blockchain -\newcommand{\Gkeys}{\var{G_{keys}}} -\newcommand{\Block}{\type{Block}} -\newcommand{\SlotId}{\type{SlotId}} -\newcommand{\PPUpdateEnv}{\type{PPUpdateEnv}} -\newcommand{\AVUpdateEnv}{\type{AVUpdateEnv}} -\newcommand{\AVUpdateState}{\type{AVUpdateState}} -\newcommand{\UpdateEnv}{\type{UpdateEnv}} -\newcommand{\UpdateState}{\type{UpdateState}} -\newcommand{\UTxOEnv}{\type{UTxOEnv}} -\newcommand{\CEEnv}{\type{CEEnv}} -\newcommand{\CEState}{\type{CEState}} -\newcommand{\BDEnv}{\type{BDEnv}} -\newcommand{\BDState}{\type{BDState}} -\newcommand{\LEnv}{\type{LEnv}} -\newcommand{\LState}{\type{LState}} -\newcommand{\GoguenChainState}{\type{GoguenChainState}} -%% -%% Functions -%% -\newcommand{\txins}[1]{\fun{txins}~ \var{#1}} -\newcommand{\txouts}[1]{\fun{txouts}~ \var{#1}} -\newcommand{\txcerts}[1]{\fun{txcerts}~ \var{#1}} -\newcommand{\txid}[1]{\fun{txid}~ \var{#1}} -\newcommand{\outs}[1]{\fun{outs}~ \var{#1}} -\newcommand{\values}[1]{\fun{values}~ #1} -\newcommand{\ubalance}[1]{\fun{ubalance}~ \var{#1}} -\newcommand{\txttl}[1]{\fun{txttl}~ \var{#1}} -\newcommand{\firstSlot}[1]{\fun{firstSlot}~ \var{#1}} -\newcommand{\deposited}[2]{\fun{deposited}~ \var{#1} ~ \var{#2}} -\newcommand{\decayedKey}[4]{\fun{decayedKey}~ \var{#1}~ \var{#2}~ \var{#3}~ \var{#4}} -\newcommand{\decayedTx}[3]{\fun{decayedTx}~ \var{#1}~ \var{#2}~ \var{#3}} -\newcommand{\keyRefund}[6]{\fun{keyRefund}~ {#1}~{#2}~{#3}~\var{#4}~\var{#5}~\var{#6}} -\newcommand{\refund}[4]{\fun{refund}~ \var{#1}~ \var{#2}~ {#3}~ {#4}} -\newcommand{\keyRefunds}[2]{\fun{keyRefunds}~ \var{#1}~ \var{#2}} -\newcommand{\consumed}[4]{\fun{consumed}~ \var{#1}~ \var{#2}~ \var{#3}~ \var{#4}} -\newcommand{\produced}[2]{\fun{produced}~ \var{#1}~ \var{#2}} -\newcommand{\applyFun}[2]{\fun{#1}~\var{#2}} - -\newcommand{\RegKey}[1]{\textsc{RegKey}(#1)} -\newcommand{\DeregKey}[1]{\textsc{DeregKey}(#1)} -\newcommand{\Delegate}[1]{\textsc{Delegate}(#1)} -\newcommand{\RegPool}[1]{\textsc{RegPool}(#1)} -\newcommand{\RetirePool}[1]{\textsc{RetirePool}(#1)} -\newcommand{\cwitness}[1]{\fun{cwitness}~ \var{#1}} -\newcommand{\dpool}[1]{\fun{dpool}~ \var{#1}} -\newcommand{\poolParam}[1]{\fun{poolParam}~ \var{#1}} -\newcommand{\retire}[1]{\fun{retire}~ \var{#1}} -\newcommand{\addrRw}[1]{\fun{addr_{rwd}}~ \var{#1}} -\newcommand{\epoch}[1]{\fun{epoch}~\var{#1}} -\newcommand{\kesPeriod}[1]{\fun{kesPeriod}~\var{#1}} -\newcommand{\pps}[1]{\fun{pps}~ \var{#1}} - -%% UTxO witnesses -\newcommand{\inputs}[1]{\fun{inputs}~ \var{#1}} -\newcommand{\txwits}[1]{\fun{txwits}~ \var{#1}} -\newcommand{\verify}[3]{\fun{verify} ~ #1 ~ #2 ~ #3} -\newcommand{\sign}[2]{\fun{sign} ~ #1 ~ #2} -\newcommand{\verifyEv}[4]{\fun{verify_{ev}} ~ #1 ~ #2 ~ #3 ~ #4} -\newcommand{\signEv}[3]{\fun{sign_{ev}} ~ #1 ~ #2 ~ #3} -\newcommand{\serialised}[1]{\llbracket \var{#1} \rrbracket} -\newcommand{\hashKey}[1]{\fun{hashKey}~ \var{#1}} -\newcommand{\txbody}[1]{\fun{txbody}~ \var{#1}} -\newcommand{\txfee}[1]{\fun{txfee}~ \var{#1}} -\newcommand{\txwdrls}[1]{\fun{txwdrls}~ \var{#1}} -\newcommand{\minfee}[2]{\fun{minfee}~ \var{#1}~ \var{#2}} -\newcommand{\slotminus}[2]{\var{#1}~-_{s}~\var{#2}} -\DeclarePairedDelimiter\floor{\lfloor}{\rfloor} -% wildcard parameter -\newcommand{\wcard}[0]{\underline{\phantom{a}}} -%% Adding ledgers... -\newcommand{\utxo}[1]{\fun{utxo}~ #1} -%% Delegation -\newcommand{\delegatesName}{\fun{delegates}} -\newcommand{\delegates}[3]{\delegatesName~#1~#2~#3} -\newcommand{\dwho}[1]{\fun{dwho}~\var{#1}} -\newcommand{\depoch}[1]{\fun{depoch}~\var{#1}} -\newcommand{\dval}{\ensuremath{d_{\mathsf{val}}}} -%% Delegation witnesses -\newcommand{\dbody}[1]{\fun{dbody}~\var{#1}} -\newcommand{\dwit}[1]{\fun{dwit}~\var{#1}} -%% Blockchain -\newcommand{\bwit}[1]{\fun{bwit}~\var{#1}} -\newcommand{\bslot}[1]{\fun{bslot}~\var{#1}} -\newcommand{\bbody}[1]{\fun{bbody}~\var{#1}} -\newcommand{\bhbody}[1]{\fun{bhbody}~\var{#1}} -\newcommand{\bdlgs}[1]{\fun{bdlgs}~\var{#1}} -%% ledgerstate constants -\newcommand{\genesisId}{\ensuremath{Genesis_{Id}}} -\newcommand{\genesisTxOut}{\ensuremath{Genesis_{Out}}} -\newcommand{\genesisUTxO}{\ensuremath{Genesis_{UTxO}}} -\newcommand{\genesisUTxOState}{(\genesisUTxO,\wcard,\wcard,\wcard)} -\newcommand{\emax}{\ensuremath{\mathsf{E_{max}}}} - -\newcommand{\unitInterval}{\ensuremath{[0,~1]}} -\newcommand{\unitIntervalNonNull}{\ensuremath{(0,~1]}} -\newcommand{\nonnegReals}{\ensuremath{[0,~\infty)}} -\newcommand{\posReals}{\ensuremath{(0,~\infty)}} - -\newcommand{\Val}{\fun{Val}} -\newcommand{\Utxo}{\fun{Utxo}} -\newcommand{\field}{\fun{field}} - - -\theoremstyle{definition} -\newtheorem{definition}{Definition}[section] -\newtheorem{property}{Property}[section] -\newtheorem{lemma}[definition]{Lemma} -\newtheorem{theorem}[definition]{Theorem} -\newtheorem{corollary}[definition]{Corollary} - -\newcommand{\leteq}{\ensuremath{\mathrel{\mathop:}=}} - -\definecolor{hldiffcolor}{rgb}{0.95, 0.93, 0} -\newcommand{\hldiff}[1]{\mathchoice - {\colorbox{hldiffcolor}{$\displaystyle#1$}} - {\colorbox{hldiffcolor}{$\textstyle#1$}} - {\colorbox{hldiffcolor}{$\scriptstyle#1$}} - {\colorbox{hldiffcolor}{$\scriptscriptstyle#1$}}} -\DeclareMathOperator{\supp}{supp} - -%% In-para enumeration -- KH -\usepackage{paralist} - -%% Enumeration args -- KH -\usepackage{enumitem} - -\begin{document} - -\input{frontmatter} - -\tableofcontents -\listoffigures - -\include{introduction} - -\include{protocol-parameters} - -\include{transactions} - -\include{utxo} - -\include{ledger} - -\include{chain} - -\include{mir} - -%\include{constants} - - -\addcontentsline{toc}{section}{References} -\bibliographystyle{plainnat} -\bibliography{references} - -\begin{appendix} - \include{txinfo} - \include{value-size} - \include{properties} -\end{appendix} - -\end{document} diff --git a/eras/alonzo/formal-spec/chain.tex b/eras/alonzo/formal-spec/chain.tex deleted file mode 100644 index bc3470b8725..00000000000 --- a/eras/alonzo/formal-spec/chain.tex +++ /dev/null @@ -1,151 +0,0 @@ -\section{Blockchain layer} -\label{sec:chain} - -\newcommand{\Proof}{\type{Proof}} -\newcommand{\Seedl}{\mathsf{Seed}_\ell} -\newcommand{\Seede}{\mathsf{Seed}_\eta} -\newcommand{\activeSlotCoeff}[1]{\fun{activeSlotCoeff}~ \var{#1}} -\newcommand{\slotToSeed}[1]{\fun{slotToSeed}~ \var{#1}} -\newcommand{\isOverlaySlot}[3]{\fun{isOverlaySlot}~\var{#1}~\var{#2}~\var{#3}} - -\newcommand{\T}{\type{T}} -\newcommand{\vrf}[3]{\fun{vrf}_{#1} ~ #2 ~ #3} -\newcommand{\verifyVrf}[4]{\fun{verifyVrf}_{#1} ~ #2 ~ #3 ~#4} - -\newcommand{\HashHeader}{\type{HashHeader}} -\newcommand{\HashBBody}{\type{HashBBody}} -\newcommand{\bhHash}[1]{\fun{bhHash}~ \var{#1}} -\newcommand{\bHeaderSize}[1]{\fun{bHeaderSize}~ \var{#1}} -\newcommand{\bSize}[1]{\fun{bSize}~ \var{#1}} -\newcommand{\bBodySize}[1]{\fun{bBodySize}~ \var{#1}} -\newcommand{\OCert}{\type{OCert}} -\newcommand{\BHeader}{\type{BHeader}} -\newcommand{\BHBody}{\type{BHBody}} - -\newcommand{\bheader}[1]{\fun{bheader}~\var{#1}} -\newcommand{\hsig}[1]{\fun{hsig}~\var{#1}} -\newcommand{\bprev}[1]{\fun{bprev}~\var{#1}} -\newcommand{\bhash}[1]{\fun{bhash}~\var{#1}} -\newcommand{\bvkcold}[1]{\fun{bvkcold}~\var{#1}} -\newcommand{\bseedl}[1]{\fun{bseed}_{\ell}~\var{#1}} -\newcommand{\bprfn}[1]{\fun{bprf}_{n}~\var{#1}} -\newcommand{\bseedn}[1]{\fun{bseed}_{n}~\var{#1}} -\newcommand{\bprfl}[1]{\fun{bprf}_{\ell}~\var{#1}} -\newcommand{\bocert}[1]{\fun{bocert}~\var{#1}} -\newcommand{\bnonce}[1]{\fun{bnonce}~\var{#1}} -\newcommand{\bleader}[1]{\fun{bleader}~\var{#1}} -\newcommand{\hBbsize}[1]{\fun{hBbsize}~\var{#1}} -\newcommand{\bbodyhash}[1]{\fun{bbodyhash}~\var{#1}} -\newcommand{\overlaySchedule}[4]{\fun{overlaySchedule}~\var{#1}~\var{#2}~{#3}~\var{#4}} - -\newcommand{\PrtclState}{\type{PrtclState}} -\newcommand{\PrtclEnv}{\type{PrtclEnv}} -\newcommand{\OverlayEnv}{\type{OverlayEnv}} -\newcommand{\VRFState}{\type{VRFState}} -\newcommand{\NewEpochEnv}{\type{NewEpochEnv}} -\newcommand{\NewEpochState}{\type{NewEpochState}} -\newcommand{\PoolDistr}{\type{PoolDistr}} -\newcommand{\BBodyEnv}{\type{BBodyEnv}} -\newcommand{\BBodyState}{\type{BBodyState}} -\newcommand{\RUpdEnv}{\type{RUpdEnv}} -\newcommand{\ChainEnv}{\type{ChainEnv}} -\newcommand{\ChainState}{\type{ChainState}} -\newcommand{\ChainSig}{\type{ChainSig}} - - - -\subsection{Block Body Transition} -\label{sec:block-body-trans} - - -Figure~\ref{fig:rules:bbody} includes an additional check that the sum of the -execution units of all transactions in a block does not exceed the maximum total units per -block (specified in a protocol parameter). - -\begin{figure}[ht] - \begin{equation}\label{eq:bbody} - \inference[Block-Body] - { - \var{txs} \leteq \bbody{block} - & - \var{bhb} \leteq \bhbody{(\bheader{block})} - & - \var{hk} \leteq \hashKey{(\bvkcold{bhb})} - \\~\\ - \bBodySize{txs} = \hBbsize{bhb} - & - \fun{bbodyhash}~{txs} = \bhash{bhb} - \\~\\ - \\ - \var{slot} \leteq \bslot{bhb} - & - \var{fSlot} \leteq \fun{firstSlot}~(\epoch{slot}) - \\~\\ - \hldiff{\sum_{tx\in txs} \fun{totExunits}~{tx} \leq \fun{maxBlockExUnits}~\var{pp}} - \\~\\ - { - {\begin{array}{c} - \bslot{bhb} \\ - \var{pp} \\ - \var{acnt} - \end{array}} - \vdash - \var{ls} \\ - \trans{\hyperref[fig:rules:ledger-sequence]{ledgers}}{\var{txs}} - \var{ls}' \\ - } - } - { - {\begin{array}{c} - \var{pp} \\ - \var{acnt} - \end{array}} - \vdash - {\left(\begin{array}{c} - \var{ls} \\ - \var{b} \\ - \end{array}\right)} - \trans{bbody}{\var{block}} - {\left(\begin{array}{c} - \varUpdate{\var{ls}'} \\ - \varUpdate{\fun{incrBlocks}~{\left(\isOverlaySlot{fSlot}{(\fun{d}~pp)}{slot}\right)}~{hk}~{b}} \\ - \end{array}\right)} - } - \end{equation} - \caption{BBody rules} - \label{fig:rules:bbody} -\end{figure} - -We have also defined a function that transforms the Shelley ledger state into -the corresponding Alonzo one, see Figure~\ref{fig:functions:to-shelley}. We -refer to the Shelley-era protocol parameter type as $\ShelleyPParams$, and the corresponding Alonzo -type as $\PParams$. We use the notation $\var{chainstate}_{x}$ to represent -variable $x$ in the chain state. We do not specify the variables that -remain unchanged during the transition. - -%% -%% Figure - Shelley to Alonzo Transition -%% -\begin{figure}[htb] - \emph{Types and Constants} - % - \begin{align*} - & \NewParams = (\Language \mapsto \CostMod) \times \Prices \times \ExUnits \times \ExUnits \\ - & ~~~~~~~~ \times \N \times \Coin \times \N \times \N \\ - & \text{the type of new parameters to add for Alonzo} - \nextdef - & \var{ivPP} \in \NewParams \\ - & \text{the initial values for new Alonzo parameters} - \end{align*} - \emph{Shelley to Alonzo Transition Functions} - % - \begin{align*} - & \fun{toAlonzo} : \ShelleyChainState \to \ChainState \\ - & \fun{toAlonzo}~\var{chainstate} =~\var{chainstate'} \\ - &~~\where \\ - &~~~~\var{chainstate'}_{pparams}~=~(\var{pp}\cup \var{ivPP})~ - ~\var{minUTxOValue}\\ - & \text{transform Shelley chain state to Alonzo state} - \end{align*} - \caption{Shelley to Alonzo State Transtition} - \label{fig:functions:to-shelley} -\end{figure} diff --git a/eras/alonzo/formal-spec/comments.sty b/eras/alonzo/formal-spec/comments.sty deleted file mode 100644 index b7255e82ecf..00000000000 --- a/eras/alonzo/formal-spec/comments.sty +++ /dev/null @@ -1,49 +0,0 @@ -% $id$ -% KH: created comments style file to allow alternative versions of a document. -% KH: added draft environment - -% \newcommand{\red}[1]{#1} - -%% \usepackage[usenames]{color} -%% \definecolor{BrickRed}{cmyk}{0, .89, .5, 0} -%% \definecolor{Blue}{cmyk}{.8, .3, .2, 0} -%% \definecolor{Green}{cmyk}{1, 0, 1, 0} -%% \definecolor{Black}{cmyk}{1, 1, 1, 0} -\newcommand{\red}{\color{BrickRed}} -\newcommand{\blue}{\color{Blue}} -\newcommand{\green}{\color{Green}} -\newcommand{\black}{\color{Black}} - -\newcommand{\eucommentary}[1]{{\red\(\spadesuit\){\textbf{EC Commentary}: \emph{#1}}\(\spadesuit\)}} -\newcommand{\euevaluation}[2]{{\red\(\spadesuit\){\textbf{Evaluation Criteria ({#1})}: \emph{#2}}\(\spadesuit\)}} - -\newcommand{\comment}[2]{{\blue\(\spadesuit\){\bf #1: }{\textit{#2}}\(\spadesuit\)}} -\newcommand{\draftpage}{\newpage} - -\newcommand{\FIXME}[1]{[\textbf{FIXME}: #1]} - -\newcommand{\TODO}[1]{{\green\(\spadesuit\){\textbf{TO DO}: \emph{#1}}\(\spadesuit\)}} - -\newcommand{\TOWRITE}[2]{{\green\(\spadesuit\){#1 [\textbf{WRITE HERE}: #2]}\(\spadesuit\)}} - -\usepackage{marginnote} - -\newcommand{\commentwidth}{8cm} -\newcommand{\marginparsepwidth}{2cm} - - -\newenvironment{draft}{}{} - -\newcommand{\nocomments}{ -\renewcommand{\eucommentary}[1]{} -\renewcommand{\euevaluation}[2]{} -\renewcommand{\comment}[2]{} -\renewcommand{\draftpage}{} -\renewcommand{\FIXME}[1]{} -\renewcommand{\TODO}[1]{} -\renewcommand{\TOWRITE}[2]{} -} - -\DeclareOption{final}{\nocomments} -\DeclareOption{draft}{} -\ProcessOptions* diff --git a/eras/alonzo/formal-spec/constants.tex b/eras/alonzo/formal-spec/constants.tex deleted file mode 100644 index dcb377c318f..00000000000 --- a/eras/alonzo/formal-spec/constants.tex +++ /dev/null @@ -1,16 +0,0 @@ -\section{Constants} - -This section specifies the values of the constants used in this document. - -\begin{note} - TODO specify these, and give the names of the cost model params for PlutusV1 -\end{note} - -\begin{itemize} - \item $\NetworkId$ - - \item $\SystemStart$ - - \item $\EpochInfo$ - -\end{itemize} diff --git a/eras/alonzo/formal-spec/flake.nix b/eras/alonzo/formal-spec/flake.nix deleted file mode 100644 index 7199d424773..00000000000 --- a/eras/alonzo/formal-spec/flake.nix +++ /dev/null @@ -1,30 +0,0 @@ -{ - outputs = inputs: { - packages = - builtins.mapAttrs (_: {nixpkgs, ...}: { - default = with nixpkgs; - buildLatex { - name = "alonzo-spec"; - texFiles = ["alonzo-ledger"]; - meta = with lib; { - description = "Goguen ledger specification"; - license = licenses.asl20; - platforms = platforms.linux; - }; - src = filterLatex ./.; - - texInputs = { - inherit - (texlive) - scheme-small - collection-latexextra - collection-latexrecommended - collection-mathscience - bclogo - ; - }; - }; - }) - (inputs.main or (import ../../../nix/flake-compat.nix).defaultNix).legacyPackages; - }; -} diff --git a/eras/alonzo/formal-spec/frontmatter.tex b/eras/alonzo/formal-spec/frontmatter.tex deleted file mode 100644 index a8b3bfe0576..00000000000 --- a/eras/alonzo/formal-spec/frontmatter.tex +++ /dev/null @@ -1,58 +0,0 @@ -\hypersetup{ - pdftitle={Formal Specification of the Cardano Ledger with Plutus - Integration}, - breaklinks=true, - bookmarks=true, - colorlinks=false, - linkcolor={blue}, - citecolor={blue}, - urlcolor={blue}, - linkbordercolor={white}, - citebordercolor={white}, - urlbordercolor={white} -} - - -\floatstyle{boxed} -\restylefloat{figure} -\cleardoublepage -\renewcommand{\thepage}{\arabic{page}} -\setcounter{page}{1} - -\title{Formal Specification of the Cardano Ledger with Plutus -Integration} - -\author{ - Polina Vinogradova \\ {\small \texttt{polina.vinogradova@iohk.io}} \\ - Andre Knispel \\ {\small \texttt{andre.knispel@iohk.io}} \\ - } - -\date{} - -\maketitle - -\begin{abstract} -This document presents modifications to the Shelley ledger -specification~\cite{shelley_spec} that will enable it to support the requirements for Plutus Foundation, within the context of the Goguen era -of Cardano. This specification is based on the Plutus system and the extended -UTxO specification of the mockchain on which it operates, as outlined in~\cite{chakravarty2020extended}. -% -We present a unified way to process both Plutus scripts and Shelley-style multi-signature scripts -(see~\cite{multi_sig}). -\end{abstract} - -\section*{List of Contributors} -\label{acknowledgements} - -Duncan Coutts, -Philipp Kant, -Michal Peyton Jones, -Jann Mueller, -Jared Corduan, -Matthias Gudemann, -Manuel Chakravarty, -Kevin Hammond, -Tim Sheard, -Nicholas Clarke, -Alex Byaly, -Yun Lu diff --git a/eras/alonzo/formal-spec/introduction.tex b/eras/alonzo/formal-spec/introduction.tex deleted file mode 100644 index a0f1c9df6b3..00000000000 --- a/eras/alonzo/formal-spec/introduction.tex +++ /dev/null @@ -1,88 +0,0 @@ -\section{Introduction} - -This document describes the extensions to the multi-asset formal ledger specification~\cite{shelley_ma_spec} that are -required for the support of phase two scripts, in particular Plutus Core. This underpins future Plutus development: there should be minimal changes to these ledger rules to support future phase-2 languages (eg. upcoming versions of Plutus). -% -The two major extensions that are described here are: - -\begin{inparaenum} -\item -the introduction -of \emph{phase-2} scripts, i.e. scripts that are not evaluated internally by the ledger; and -\item - additions to the Shelley-era UTxO (unspent transaction output) model that are needed to support Plutus - constructs (the ``extended UTxO'' model). -\end{inparaenum} - -This document defines these extensions as changes to the multi-asset structured transition system, -using the same notation and conventions that were used for the multi-asset specification~\cite{shelley_ma_spec}. -As with the multi-asset formal specification, these rules will be implemented in the form of an executable ledger specification that will then be -integrated with the Cardano node. - -\subsection{Phase Two Scripts} - -The Shelley formal specification introduced the concept of ``multi-signature'' scripts. -\emph{Phase one scripts}, such as these, are captured entirely by the ledger rules. -Execution costs can therefore be easily assessed \emph{before} they are processed by the implementation, -and any fees can be calculated directly within the ledger rule implementation, -based on e.g. the size of the transaction that includes the script. - -In contrast, \emph{phase-2} scripts can perform arbitrary -(and, in principle, Turing-complete) computations. -We require transactions that use phase-2 scripts -to have a budget in terms of a number of abstract $\ExUnits$. -This budget gives a quantitative bound on resource usage in terms of a number of specific metrics, including memory usage or abstract execution steps. -The budget is then used as part of the transaction fee calculation. - -Every phase-2 scripting language -converts the calculated execution cost into a number of $\ExUnits$ using a cost model, -$\CostMod$, which depends on the language and is provided as a protocol parameter. -This allows execution costs (and so transaction fees) to be varied without requiring a major protocol version change (``hard fork''). -This may be used, for example, if a more efficient interpreter is produced. - -The approach we use to bound execution costs to a pre-determined constant is -distinct from the usual ``gas'' model in the following notable ways : - -\begin{itemize} - \item The budget to run a script is expressed in terms of computational resources, - and included in the transaction data. The \emph{exact} resource budget required can - be computed before submitting a transaction, since script execution is deterministic. - See Section \ref{sec:determinism}. - In the gas model, the budget is expressed indirectly as an upper bound - on the fee the submitter is willing to pay for execution of the - contract (eg. their total available funds). - - \item The user specifies the UTxO entries containing funds sufficient to cover a percentage - (usually $100$ or more) of the total transaction fee. - These inputs are only collected \emph{in the case of script validation failure}, - and are called \emph{collateral inputs}. In the case of - script validation success, the fee specified in the fee field of the transaction is collected, - but the collateral is not. - - This scheme is different from the gas model in that the exact payment collected in - both the case of script validation success and validation failure is known ahead of time, - though the collected fees are different in the two cases. -\end{itemize} - -Another important point to make about both phase one and two scripts on Cardano is that -running scripts in all languages will be supported indefinitely whenever possible. -Making it impossible to run a script in a particular scripting language -makes UTxO entries locked by that script unspendable. - -We use the terms Plutus, $\PlutusVI$, and ``phase two scripting language'' in this specification -somewhat interchangeably. The reason for this is that while we intend for the infrastructure -set up in this document to be somewhat language-agnostic (in particular, -able to support multiple versions of Plutus), it only gives all the details for -the first and (currently only) phase-2 script language, $\PlutusVI$, -the introduction of which represents the -start of the Alonzo era. - - -\subsection{Extended UTxO} - -The specification of the extended UTxO model follows the description that was given in~\cite{chakravarty2020extended}. -All transaction outputs that are locked by phase-2 scripts must include the hash of an additional ``datum''. The actual datum needs to be supplied by the transaction spending that output, and can be used to encode state, for example. -While this datum could instead have been stored directly in the UTxO, our choice of storing it in the transaction body improves space efficiency in the implementation by reducing the UTxO storage requirements. The datum is passed to a script that validates that the output is spent correctly. - -All transactions also need to supply a \emph{redeemer} for all items that are validated by a script. This is an additional piece of data that is passed to the script, and that could be considered as a form of user-input to the script. Note that the same script could be used for multiple different purposes in the same transaction, so in general it might be necessary to include more than one redeemer per script. -There will, however, always be at least one redeemer per script. diff --git a/eras/alonzo/formal-spec/iohk-share-logo.jpg b/eras/alonzo/formal-spec/iohk-share-logo.jpg deleted file mode 100644 index 9c864e184c9115ae3013c592fcbec14b8d4410be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9689 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 Gng0VXU1MYb diff --git a/eras/alonzo/formal-spec/iohk.sty b/eras/alonzo/formal-spec/iohk.sty deleted file mode 100644 index a604bf81698..00000000000 --- a/eras/alonzo/formal-spec/iohk.sty +++ /dev/null @@ -1,47 +0,0 @@ -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{iohk}[2018/10/18] - -\RequirePackage{amssymb} -\RequirePackage{extarrows} -\RequirePackage{slashed} -\RequirePackage[tikz]{bclogo} -\RequirePackage{stmaryrd} -\RequirePackage{todonotes} - -\DeclareMathOperator{\dom}{dom} -\DeclareMathOperator{\range}{range} - -\newcommand{\powerset}[1]{\ensuremath{\mathbb{P}~#1}} -\newcommand{\restrictdom}{\ensuremath{\lhd}} -\newcommand{\subtractdom}{\ensuremath{\mathbin{\slashed{\restrictdom}}}} -\newcommand{\restrictrange}{\ensuremath{\rhd}} -\newcommand{\subtractrange}{\ensuremath{\mathbin{\slashed{\restrictrange}}}} -\newcommand{\union}{\ensuremath{\cup}} -\newcommand{\unionoverrideRight}{\ensuremath{\mathbin{\underrightarrow\cup}}} -\newcommand{\unionoverrideLeft}{\ensuremath{\mathbin{\underleftarrow\cup}}} -\newcommand{\unionoverridePlus}{\ensuremath{\mathbin{\cup_{+}}}} -\newcommand{\unionoverrideZero}{\ensuremath{\mathbin{\cup_{0}}}} -\newcommand{\uniondistinct}{\ensuremath{\uplus}} -\newcommand{\var}[1]{\ensuremath{\mathit{#1}}} -\newcommand{\fun}[1]{\ensuremath{\mathsf{#1}}} -\newcommand{\type}[1]{\ensuremath{\mathsf{#1}}} -\newcommand{\signed}[2]{\ensuremath{\llbracket #1 \rrbracket_{#2}}} -\newcommand{\size}[1]{\ensuremath{\left| #1 \right|}} -\newcommand{\trans}[2]{\ensuremath{\xlongrightarrow[\textsc{#1}]{#2}}} -\newcommand{\seqof}[1]{\ensuremath{#1^{*}}} -\newcommand{\nextdef}{\ensuremath{\\[1em]}} -\newcommand{\where}{\ensuremath{~ ~ \mathbf{where}~ ~ }} - -\newcommand{\varUpdate}[1]{\boldsymbol{\color{Violet}#1}} - -\newenvironment{question} - {\begin{bclogo}[logo=\bcquestion, couleur=orange!10, arrondi=0.2]{ QUESTION}} - {\end{bclogo}} -%\newenvironment{todo} -% {\begin{bclogo}[logo=\bcoutil, couleur=red!5, couleurBarre=red, arrondi=0.2]{ TODO}} -% {\end{bclogo}} -\newenvironment{note} - {\begin{bclogo}[logo=\bcattention, couleur=orange!10, arrondi=0.2]{ NOTE}} - {\end{bclogo}} - -\endinput diff --git a/eras/alonzo/formal-spec/ledger.tex b/eras/alonzo/formal-spec/ledger.tex deleted file mode 100644 index 28b7bfb6ec5..00000000000 --- a/eras/alonzo/formal-spec/ledger.tex +++ /dev/null @@ -1,119 +0,0 @@ -\section{Ledger State Transition} -\label{sec:ledger-trans} - -Figure~\ref{fig:rules:ledger} separates the case where all the scripts -in a transaction successfully validate from the case where there is one or more that does not. -These two cases are distinguished by the use of the $\IsValid$ tag. -% -Besides collateral collection, no side effects should occur when processing a -transaction that contains a script that does not validate. That is, no -delegation or pool state updates, update proposals, or any other observable state change, should be -applied. The UTxO rule is still applied, however, as this is where the correctness of the -validation tag is verified, and where collateral inputs are collected. - -\begin{figure} - \begin{equation} - \label{eq:ledger} - \inference[ledger-V] - { - \fun{isValid}~{tx} = \True \\~\\ - { - \begin{array}{c} - \var{slot} \\ - \var{txIx} \\ - \var{pp} \\ - \var{tx}\\ - \var{acnt} - \end{array} - } - \vdash - dpstate \trans{\hyperref[fig:rules:delegation-sequence]{delegs}}{ - \fun{txcerts}~(\txbody{tx})} dpstate' - \\~\\ - (\var{dstate}, \var{pstate}) \leteq \var{dpstate} \\ - (\_, \_, \_, \_, \_, \var{genDelegs}, \_) \leteq \var{dstate} \\ - (\var{poolParams}, \_, \_) \leteq \var{pstate} \\ - \\~\\ - { - \begin{array}{c} - \var{slot} \\ - \var{pp} \\ - \var{poolParams} \\ - \var{genDelegs} \\ - \end{array} - } - \vdash \var{utxoSt} \trans{\hyperref[fig:rules:utxow-shelley]{utxow}}{tx} \var{utxoSt'} - } - { - \begin{array}{c} - \var{slot} \\ - \var{txIx} \\ - \var{pp} \\ - \var{acnt} - \end{array} - \vdash - \left( - \begin{array}{ll} - \var{utxoSt} \\ - \var{dpstate} \\ - \end{array} - \right) - \trans{ledger}{tx} - \left( - \begin{array}{ll} - \varUpdate{utxoSt'} \\ - \varUpdate{dpstate'} \\ - \end{array} - \right) - } - \end{equation} - % - \nextdef - % - \begin{equation} - \label{eq:ledger} - \inference[ledger-NV] - { - \fun{isValid}~{tx} = \False \\~\\ - (\var{dstate}, \var{pstate}) \leteq \var{dpstate} \\ - (\_, \_, \_, \_, \_, \var{genDelegs}, \_) \leteq \var{dstate} \\ - (\var{poolParams}, \_, \_) \leteq \var{pstate} \\ - \\~\\ - { - \begin{array}{c} - \var{slot} \\ - \var{pp} \\ - \var{poolParams} \\ - \var{genDelegs} \\ - \end{array} - } - \vdash \var{utxoSt} \trans{\hyperref[fig:rules:utxow-shelley]{utxow}}{tx} \var{utxoSt'} - } - { - \begin{array}{c} - \var{slot} \\ - \var{txIx} \\ - \var{pp} \\ - \var{acnt} - \end{array} - \vdash - \left( - \begin{array}{ll} - \var{utxoSt} \\ - \var{dpstate} \\ - \end{array} - \right) - \trans{ledger}{tx} - \left( - \begin{array}{ll} - \varUpdate{utxoSt'} \\ - \var{dpstate} \\ - \end{array} - \right) - } - \end{equation} - \caption{Ledger inference rules} - \label{fig:rules:ledger} -\end{figure} - -\clearpage diff --git a/eras/alonzo/formal-spec/mir.tex b/eras/alonzo/formal-spec/mir.tex deleted file mode 100644 index 725f1304910..00000000000 --- a/eras/alonzo/formal-spec/mir.tex +++ /dev/null @@ -1,288 +0,0 @@ -\section{MIR Certificates} -\label{sec:mir} - -\newcommand{\InstantaneousRewards}{\type{InstantaneousRewards}} -\newcommand{\MIRPot}{\type{MIRPot}} -\newcommand{\ReservesMIR}{\type{ReservesMIR}} -\newcommand{\TreasuryMIR}{\type{TreasuryMIR}} - -In the Alonzo era, MIR certs have: - -\begin{itemize} - \item Slightly different behavior - - prior to the Alonzo era, MIR certificates within the same epoch override - values for repeated stake addresses. - In the Alonzo era, repetitions are handled by adding the values. - Moreover, negative values are allowed, so long as the change never results in - an overall negative sum. - See Figure \ref{fig:dcert-mir}. - \item Extended functionality - - MIR certificates can now be used to transfer funds between the reserves and the treasury. - See Figure \ref{fig:dcert-mir-trans}. -\end{itemize} - -Figure \ref{fig:defs:alonzo-mir} describes the necessary changes to the types. -Note that $\fun{mirTarget}$ was named $\fun{credCoinMap}$ in the Shelley specification. -Figure \ref{fig:dcert-mir} is a modification to the DELEG rule, and -Figure \ref{fig:dcert-mir-trans} is an addition to the DELEG rule. -Lastly, Figure \ref{fig:rules:mir} is the updated MIR rule. - - -\begin{figure*}[htb] - \emph{Derived types} - % - \begin{equation*} - \begin{array}{r@{~~}l@{~~}l@{\qquad}l} - \InstantaneousRewards = - & (\StakeCredential \mapsto \Coin) - & \text{rewards from reserves} - \\ - & \times (\StakeCredential \mapsto \Coin) - & \text{rewards from treasury} - \\ - & \times \hldiff{\Coin} - & \text{pending modification to reserves} - \\ - & \times \hldiff{\Coin} - & \text{pending modification to treasury} - \end{array} - \end{equation*} - % - \emph{New MIR Cert accessor} - % - \begin{equation*} - \begin{array}{r@{~:~}lr} - \fun{mirTarget} - & \DCertMir \to (\StakeCredential \mapsto \Coin) \uniondistinct \hldiff{\MIRPot} - \end{array} - \end{equation*} - \caption{Alonzo Types for MIR updates} - \label{fig:defs:alonzo-mir} -\end{figure*} - -\begin{figure}[htp] - \centering - \begin{equation}\label{eq:deleg-mir} - \inference[Deleg-Mir] - { - \var{c}\in \DCertMir - & - \hldiff{\fun{mirTarget}~\var{c}\in \StakeCredential \mapsto \Coin} - \\ - slot < \fun{firstSlot}~((\epoch{slot}) + 1) - \fun{StabilityWindow}\\ - (\var{irR},~\var{irT}\hldiff{,~\var{dR},~\var{dT}})\leteq\var{i_{rwd}} - & - (\var{treasury},~\var{reserves})\leteq\var{acnt} - \\ - (\var{pot}\hldiff{,~\var{deltaPot}},~\var{irPot})\leteq - {\begin{cases} - (\var{reserves}\hldiff{,~\var{dR}},~\var{irR}) & \fun{mirPot}~\var{c}=\ReservesMIR \\ - (\var{treasury}\hldiff{,~\var{dT}},~\var{irT}) & \fun{mirPot}~\var{c}=\TreasuryMIR - \end{cases}} - \\ - \var{combined}\leteq(\fun{mirTarget}~\var{c})\hldiff{\unionoverridePlus}\var{irPot} - \\ - \sum\limits_{\wcard\mapsto\var{val}\in\var{combined}} val \leq\var{pot} \hldiff{+ \var{deltaPot}} - \\ - \forall \var{r}\in\range{\hldiff{\var{combinedR}}},~r\geq 0 - \\ - \var{i_{rwd}'}\leteq - {\begin{cases} - (\var{combined},~\var{irT}\hldiff{,~\var{dR},~\var{dT}}) & \fun{mirPot}~\var{c}=\ReservesMIR \\ - (\var{irR},~\var{combined}\hldiff{,~\var{dR},~\var{dT}}) & \fun{mirPot}~\var{c}=\TreasuryMIR - \end{cases}} - } - { - \begin{array}{r} - \var{slot} \\ - \var{ptr} \\ - \var{acnt} - \end{array} - \vdash - \left( - \begin{array}{r} - \var{rewards} \\ - \var{delegations} \\ - \var{ptrs} \\ - \var{fGenDelegs} \\ - \var{genDelegs} \\ - \var{i_{rwd}} - \end{array} - \right) - \trans{deleg}{c} - \left( - \begin{array}{c} - \var{rewards} \\ - \var{delegations} \\ - \var{ptrs} \\ - \var{fGenDelegs}\\ - \var{genDelegs} \\ - \varUpdate{\var{i_{rwd}'}} \\ - \end{array} - \right) - } - \end{equation} - - \caption{Move Instantaneous Rewards Inference Rule} - \label{fig:dcert-mir} -\end{figure} - -\begin{figure}[htp] - \centering - \begin{equation}\label{eq:deleg-mir-transfer} - \inference[Deleg-Mir-Trans] - { - \var{c}\in \DCertMir - & - \fun{mirTarget}~\var{c}\in \Coin - \\ - slot < \fun{firstSlot}~((\epoch{slot}) + 1) - \fun{StabilityWindow}\\ - (\var{irR},~\var{irT},~\var{dR},~\var{dT})\leteq\var{i_{rwd}} - \\ - \var{coin}\leteq\fun{mirTarget}~\var{c} - & - \var{coin} \geq 0 - & - (\var{treasury},~\var{reserves})\leteq\var{acnt} - \\ - \var{available}\leteq - {\begin{cases} - \var{reserves}+\var{dR}+ - \left(\sum\limits_{\wcard\mapsto\var{val}\in\var{irR}} val\right) - & \fun{mirPot}~\var{c}=\ReservesMIR \\ - \var{treasury}+\var{dT}+ - \left(\sum\limits_{\wcard\mapsto\var{val}\in\var{irT}} val\right) - & \fun{mirPot}~\var{c}=\TreasuryMIR - \end{cases} - } - \\ - \var{coin} \leq \var{available} - \\ - \var{i_{rwd}'}\leteq - {\begin{cases} - (\var{irR},~\var{irT},~\var{dR}-\var{coin},~\var{dT}+\var{coin}) - & \fun{mirPot}~\var{c}=\ReservesMIR \\ - (\var{irR},~\var{irT},~\var{dR}+\var{coin},~\var{dT}-\var{coin}) - & \fun{mirPot}~\var{c}=\TreasuryMIR - \end{cases} - } - } - { - \begin{array}{r} - \var{slot} \\ - \var{ptr} \\ - \var{acnt} - \end{array} - \vdash - \left( - \begin{array}{r} - \var{rewards} \\ - \var{delegations} \\ - \var{ptrs} \\ - \var{fGenDelegs} \\ - \var{genDelegs} \\ - \var{i_{rwd}} - \end{array} - \right) - \trans{deleg}{c} - \left( - \begin{array}{c} - \var{rewards} \\ - \var{delegations} \\ - \var{ptrs} \\ - \var{fGenDelegs}\\ - \var{genDelegs} \\ - \varUpdate{\var{i_{rwd}'}} \\ - \end{array} - \right) - } - \end{equation} - - \caption{MIR transfer Inference Rule} - \label{fig:dcert-mir-trans} -\end{figure} - -\begin{figure}[ht] - \begin{equation}\label{eq:mir} - \inference[MIR] - { - (\var{rewards},~\var{delegations},~ - \var{ptrs},~\var{fGenDelegs},~\var{genDelegs},~\var{i_{rwd}}) - \leteq \var{ds} - \\ - (\var{treasury},~\var{reserves})\leteq\var{acnt} - \\ - (\var{irReserves},~\var{irTreasury}\hldiff{,~\var{deltaReserves},~\var{deltaTreasury}})\leteq\var{i_{rwd}} - \\~\\ - \var{irwdR}\leteq - \left\{ - \fun{addr_{rwd}}~\var{hk}\mapsto\var{val} - ~\vert~\var{hk}\mapsto\var{val}\in(\dom{rewards})\restrictdom\var{irReserves} - \right\} - \\ - \var{irwdT}\leteq - \left\{ - \fun{addr_{rwd}}~\var{hk}\mapsto\var{val} - ~\vert~\var{hk}\mapsto\var{val}\in(\dom{rewards})\restrictdom\var{irTreasury} - \right\} - \\ - \hldiff{\var{availableReserves}\leteq\var{reserves}+\var{deltaReserves}} - \\ - \hldiff{\var{availableTreasury}\leteq\var{treasury}+\var{deltaTreasury}} - \\~\\ - \var{totR}\leteq\sum\limits_{\wcard\mapsto v\in\var{irwdR}}v - & - \var{totT}\leteq\sum\limits_{\wcard\mapsto v\in\var{irwdT}}v - \\ - \var{enough}\leteq - \var{totR}\leq\hldiff{\var{availableReserves}} - \land\var{totT}\leq\hldiff{\var{availableTreasury}} - \\ - \var{acnt'}\leteq - {\begin{cases} - (\hldiff{\var{availableTreasury}}-\var{totT},~\hldiff{\var{availableReserves}}-\var{totR}) - & \var{enough} - \\ - \var{acnt} - & - \text{otherwise} - \end{cases}} - \\~\\ - \var{rewards'}\leteq - {\begin{cases} - \var{rewards}\unionoverridePlus\var{irwdR}\unionoverridePlus\var{irwdT} - & \var{enough} - \\ - \var{rewards} - & - \text{otherwise} - \end{cases}} - \\ - \var{ds'} \leteq - (\varUpdate{\var{rewards}'},~\var{delegations},~ - \var{ptrs},~\var{fGenDelegs},~\var{genDelegs}, - ~(\varUpdate{\emptyset},~\varUpdate{\emptyset},~\varUpdate{0},~\varUpdate{0})) - } - { - \vdash - {\left(\begin{array}{c} - \var{acnt} \\ - \var{ss} \\ - (\var{us},~(\var{ds},~\var{ps})) \\ - \var{prevPP} \\ - \var{pp} \\ - \end{array}\right)} - \trans{mir}{} - {\left(\begin{array}{c} - \varUpdate{\var{acnt'}} \\ - \var{ss} \\ - (\var{us},~(\varUpdate{\var{ds'}},~\var{ps})) \\ - \var{prevPP} \\ - \var{pp} \\ - \end{array}\right)} - } - \end{equation} - - \caption{MIR rules} - \label{fig:rules:mir} -\end{figure} diff --git a/eras/alonzo/formal-spec/properties.tex b/eras/alonzo/formal-spec/properties.tex deleted file mode 100644 index cf853f10122..00000000000 --- a/eras/alonzo/formal-spec/properties.tex +++ /dev/null @@ -1,618 +0,0 @@ -\section{Formal Properties} -\label{sec:properties} - -This appendix collects the main formal properties that the new ledger rules are expected to satisfy. -Note here that in every property in this section we consider a only phase-1 valid -transactions, ie. ones that can indeed get processed. - -\begin{enumerate}[label=P{\arabic*}:\ ] -\item - \emph{Consistency with Shelley.} - \begin{itemize} - \item properties 15.6 - 15.16 (except 15.8 and 15.13) hold specifically in the $\fun{txValTag}~tx~=~\True$ case, because - the calculations refer to the UTxO as if it was updated by a scripts-validating transaction - \item other properties hold as-is - \end{itemize} - -\item - \emph{Consistency with Multi-Asset.} - \begin{itemize} - \item properties 8.1 and 8.2 hold specifically in the $\fun{txValTag}~tx~=~\True$ case, because - the calculations refer to the UTxO as if it was updated by a scripts-validating transaction - \item other properties hold as-is - \end{itemize} -\end{enumerate} - - -\begin{definition} - For a state $s$ that is used in any subtransaction of - $\mathsf{CHAIN}$, we define $\Utxo(s) \in \UTxO$ to be the $\UTxO$ - contained in $s$, or an empty map if it does not exist. This is - similar to the definition of $\Val$ in the Shelley specification. - - Similarly, we also define $\field_{v}~(s)$ for the field $v$ that is part of - the ledger state $s$, referenced by the typical variable name (eg. $\var{fees}$ - for the fee pot on the ledger). -\end{definition} - -We also define a helper function $\varphi$ as follows: -\[\varphi(x, tx) := - \begin{cases} - x & \fun{txValTag}~tx = \True \\ - 0 & \fun{txValTag}~tx = \False - \end{cases}\] -This function is useful to distinguish between the two -cases where a transaction can mint tokens or not, depending on whether -its scripts validate. - -\begin{property}[General Accounting] - \label{prop:pov} - The \emph{general accounting} property in Alonzo encompasses two parts - \begin{itemize} - \item preservation of value property expressed via the $\fun{produced}$ and $\fun{consumed}$ - calculations, applicable for transactions with $\fun{txValTag}~tx~=~\True$, which - is specified as in the ShelleyMA POV. - \item the preservation of value for $\fun{txValTag}~tx~=~\False$, when - only the collateral fees are collected into the fee pot. - \end{itemize} - -Both of these are expressed in the following lemma. - -\begin{lemma} - For all environments $e$, transactions $tx$ and states $s, s'$, if - \begin{equation*} - e\vdash s\trans{utxos}{tx}s' - \end{equation*} - then - \begin{equation*} - \Val(s) + \varphi(\fun{mint}~(\fun{txbody}~tx), tx) = \Val(s') - \end{equation*} -\end{lemma} - -\begin{proof} - In the case that $\fun{txValTag}~tx = \True$ holds, the proof is - identical to the proof of Lemma 9.1 of the multi-asset - specification. Otherwise, the transition must have been done via the - $\mathsf{Scripts-No}$ rule, which removes - $\fun{collateral}~(\fun{txbody}~tx)$ from the UTxO, and increases the fee pot by the amount of the sum of Ada in the - collateral UTxO entries. The value contained in $s$ is not changed. - - Note that in the $\fun{feesOK}$ function, there is a check that verifies - that, in the case that there are phase-2 scripts, there are no non-Ada tokens in the UTxOs - which the collateral inputs reference, so non-Ada tokens do not get minted, burned, or transferred - in this case. -\end{proof} -\end{property} - -\begin{property}[Extended UTxO Validation] - \label{prop:fees-only} - - If a phase-1 valid transaction extends the UTxO, all its scripts validate - (i.e. $\fun{txValTag}~tx = \True$). - - If a transaction is accepted and marked as paying collateral only - (i.e. $\fun{txValTag}~tx = \False$), then the only change to the ledger - when processing the transaction is that the collateral inputs - are moved to the fee pot. In particular, it does not extend the UTxO. - - \begin{lemma} - For all environments $e$, transactions $tx$ and states $s, s'$, if and - \begin{equation*} - e\vdash s\trans{ledger}{tx}s' - \end{equation*} - then - \[\Utxo(s') \nsubseteq \Utxo(s)~\Rightarrow~\fun{txValTag}~tx = \True \] - - Also, - \[\fun{txvaltag}~tx = \False~ \Rightarrow~\] - \begin{itemize} - \item $ \field_{v}~(s') = \field_{v}~(s) \text{ for all } v~\neq~{fees}, ~v~\neq~{utxo}$ - \item $\field_{fees}~(s') = \field~\var{fees}~(s) + \fun{coin}~(\Val~(\fun{collateral}~{tx} \subtractdom \Utxo(s)))$ - \item $\Utxo(s') = \fun{collateral}~{tx} \subtractdom \Utxo(s)$ - \end{itemize} - \end{lemma} - - \begin{proof} - A ledger UTxO update is specified explicitly only by the $\mathsf{UTXOS}$ transition, - and propagated (ie. applied as-specified) to a chain-state update via the - $\mathsf{UTXO}$ and $\mathsf{UTXOW}$ transitions. - - The only case in which the $\mathsf{UTXOS}$ transition adds entries to the UTxO - map is in the $\mathsf{Scripts-No}$ rule, when $\fun{txValTag}~tx = \True$. - Adding entries to the UTxO map implies exactly that the updated map is not a - submap of the original, so we get that - - \[\Utxo(s') \nsubseteq \Utxo(s)~\Rightarrow~\fun{txValTag}~tx = \True \] - - In the case that $\fun{txValTag}~tx = \False$, $\mathsf{LEDGER}$ calls the rule - that does not update $\DPState$ at all, only the $\UTxOState$. This state update is specified - in the $\mathsf{UTXOS}$ transition (and applied via the $\mathsf{UTXO}$ and $\mathsf{UTXOW}$ transitions). - - The only parts of the state that are updated are - \begin{itemize} - \item the fee pot, which is increased by the amount of the sum of Ada in the - collateral UTxO entries, and - \item the UTxO, where the collateral entries - are removed. - \end{itemize} - \end{proof} -\end {property} - -\begin{property}[Validating when No NN Scripts] - \label{prop:is-valid} - -Whenever a valid transaction does not have any phase-2 scripts, its -$\fun{txValTag} = \True$. - -\begin{lemma} - For all environments $e$, transactions $tx$ and states $s, s'$ such that - \begin{equation*} - e\vdash s\trans{ledger}{tx}s', - \end{equation*} - If $\range (\fun{txscripts}~tx) \cap \ScriptPhTwo = \emptyset$ - then $\fun{txValTag} = \True$. -\end{lemma} -\begin{proof} - With the same argument as previously, we only need to discuss the - equivalent claim for the $\mathsf{UTXOS}$ transition. Under these - assumptions, $\var{sLst}$ is an empty - list. Thus $\fun{evalScripts}~sLst = \True$, and the transition rule - had to be $\mathsf{Scripts{-}Yes}$. -\end{proof} -\end{property} - -\begin{property}[Paying fees] - \label{prop:pay-fees} - -In the case that all phase-2 scripts in a transaction validate, the transaction pays -at least the minimum transaction fee amount into the fee pot. In the case that -some do not validate, it must pay at least the percentage of the minimum fee -the collateral is required to cover. - -\begin{lemma} - For all environments $e$, transactions $tx$ and states $s, s'$ such that - \begin{equation*} - e\vdash s\trans{ledger}{tx}s' - \end{equation*} - The following holds : \\ - $\field_{fees}~(s')~\geq~\field_{fees}~(s)~+ - \begin{cases} - \fun{minfee}~{tx} & \fun{txValTag} = \True \\ - \fun{quot}~(\fun{collateralPercent}~(\field_{pp}~(s)))~*~(\fun{minfee}~{tx})~100 & \fun{txValTag} = \False\\ - \end{cases}$. -\end{lemma} -\begin{proof} - The fee pot is updated by the $\mathsf{Scripts{-}Yes}$ and the $\mathsf{Scripts{-}No}$ - rules, one of which is necessarily called by a valid transaction via the sequence - of transitions called in the order $\mathsf{LEDGER}, \mathsf{UTXOW}, \mathsf{UTXO}, \mathsf{UTXOS}$. - - The $\mathsf{Scripts{-}Yes}$ rule (i.e. $\fun{txValTag} = \True$) - transfers the amount of Lovelace in the $\fun{txfee}$ field of the - transaction to the fee pot, which is checked to be at least the $\fun{minfee}$ - by $\fun{feesOK}$ in the $\mathsf{UTXO}$ transition. So, we get - - \[\field_{fees}~(s')~=~\field_{fees}~(s)~+~\fun{txfee}~{tx}~\geq~\field_{fees}~(s)~+~\fun{minfee}~{tx}\] - - The $\mathsf{Scripts{-}No}$ rule (i.e. $\fun{txValTag} = \False$) removes the - $\fun{collateral}$ inputs from the - UTxO, and adds the balance of these realized inputs to the fee pot. - - \[\field_{fees}~(s')~=~field_{fees}~(s)~+~\fun{ubalance}~(\fun{collateral}~{txb} \restrictdom \var{utxo})\] - - We can conclude that $\fun{txrdmrs}$ is non-empty whenever $\fun{txValTag} = \False$ - from the following observations : - \begin{itemize} - \item $\fun{txValTag} = \False$ whenever $\fun{evalScripts}$ fails. - \item $\fun{evalScripts}$ is a $\wedge$-fold over a list of scripts and - their inputs, containing all scripts that need to be run to validate this transaction - \item All phase-1 scripts must succeed, as this is checked in phase-1 validation (UTXOW - rule check). Therefore, - $\fun{evalScripts}$ encounters a failing script which is phase-2. - \item All phase-2 scripts necessarily have an associated redeemer attached to the - transaction (UTXOW rule check) - \end{itemize} - - See Property~\ref{prop:fixed-inputs} for more details on what inputs $\fun{evalScripts}$ has, - and what we can say about the outcome of its computation with respect to its inputs. - - The $\fun{feesOK}$ check enforces that if a transaction has a non-empty - $\fun{txrdmrs}$ field, the balance of the realized collateral inputs - (which $\field_{fees}~(s)$ is increased by as part of processing $tx$) is - - \[\fun{ubalance}~(\fun{collateral}~{txb} \restrictdom \var{utxo})~\geq~\fun{quot}~(\txfee~{txb} * (\fun{collateralPercent}~pp))~100\] - - which, since $\txfee~{txb}~\geq~\fun{minfee}~{txb}$, gives - - \[ \geq~\fun{quot}~(\fun{minfee}~{txb} * (\fun{collateralPercent}~pp))~100)) \] - - where $\fun{txbody}~{tx}~=~{txb}$. This shows that the total collateral that gets - moved into the fee pot from the UTxO by the $\mathsf{Scripts{-}No}$ rule is at - least the minimum transaction fee scaled by the collateral percent parameter. - - \[\field_{fees}~(s')~\geq~\field_{fees}~(s)~+~\fun{quot}~(\fun{minfee}~{txb} * (\fun{collateralPercent}~pp))~100))\] -\end{proof} - -An immediate corollary to this property is that when the $\fun{collateralPercent}$ is set to 100 or more, -the transaction always pays at least the minimum fee. This, in turn, implies that it -pays at least the fee that it has stated in the $\fun{txfee}$ field. - -\begin{corollary} - For all environments $e$, transactions $tx$ and states $s, s'$ such that - \begin{equation*} - e\vdash s\trans{ledger}{tx}s'~~\wedge~~\fun{collateralPercent}~(\field_{pp}~(s)) \geq 100 - \end{equation*} - The following holds : - \[\field_{fees}~(s')~\geq~\field_{fees}~(s)~+~\fun{minfee}~{tx} \] -\end{corollary} - -\begin{proof} - In both two cases in the lemma above, the $\field_{fees}$ field in the ledger state - is increased by at least $\fun{minfee}~{tx}$ : - \begin{itemize} - \item when $\fun{txValTag} = \True$, the lemma states already that - \[\field_{fees}~(s')~\geq~\field_{fees}~(s)~+~\fun{minfee}~{tx}\] - \item when $\fun{txValTag} = \False$, we have - $ \field_{fees}~(s')~\geq~\field_{fees}~(s)~+~\fun{quot}~(\fun{minfee}~{txb} * (\fun{collateralPercent}~pp))~100$ \\ - $~~~\geq~\field_{fees}~(s)~+~\fun{quot}~(\fun{minfee}~{tx}~*~100)~100$ \\ - $~~~=~\field_{fees}~(s)~+~\fun{minfee}~{tx}$ - \end{itemize} -\end{proof} - -\end{property} - -\begin{property}[Correct tag] - \label{prop:correct-tag} - -The $\fun{txValTag}~tx$ tag of a phase-1 valid transaction must match the result of the $\fun{evalScripts}$ -function for that transaction. - -\begin{lemma} - For all environments $e$, transactions $tx$ and states $s, s'$ such that - \begin{equation*} - e\vdash s\trans{utxos}{tx}s', - \end{equation*} - The following holds : - \[\fun{txValTag}~tx ~=~ \fun{evalScripts}~{tx}~{sLst} \] - where - \[ \var{sLst} \leteq \fun{collectTwoPhaseScriptInputs}~\mathsf{EI}~\mathsf{SysSt} ~\field_{pp}(s)~\var{tx}~ \Utxo(s) \] -\end{lemma} -\begin{proof} - Inspecting the $\mathsf{Scripts{-}Yes}$ and the $\mathsf{Scripts{-}No}$ rules of the $\mathsf{UTXOS}$ transition, - we see that both the $\fun{txValTag}$ and the result of $\fun{evalScripts}$ - are $\True$ in the former, and $\False$ in the latter. -\end{proof} -\end{property} - -\begin{property}[Replay protection] - \label{prop:replay} - -A transaction always removes at least one UTxO entry from the ledger, which provides -replay protection. - -\begin{lemma} - For all environments $e$, transactions $tx$ and states $s, s'$ such that - \begin{equation*} - e\vdash s\trans{ledger}{tx}s', - \end{equation*} - The following holds : $\Utxo~(s)~\nsubseteq~\Utxo~(s')$. -\end{lemma} -\begin{proof} - The UTxO is updated by the $\mathsf{Scripts{-}Yes}$ and the $\mathsf{Scripts{-}No}$ - rules, on of which is necessarily called by a valid transaction. Both of these - rules remove UTxOs corresponding to a set of inputs. - - In both cases, there is a check that the removed inputs set is non-empty. - The $\mathsf{Scripts{-}Yes}$ rule of the $\mathsf{UTXOS}$ transition - removes the UTxOs associated with the input set $\fun{txinputs}~{tx}$ from the ledger. - The $\fun{txinputs}~{tx}$ set must be non-empty because there is a check in the - $\mathsf{UTXO}$ rule (which calls $\mathsf{UTXOS}$) that ensure this is true. - - For the $\mathsf{Scripts{-}No}$ rule of the $\mathsf{UTXOS}$ transition - removes the UTxOs associated with the input set $\fun{collateral}~{tx}$ from the ledger. - The $\fun{collateral}~{tx}$ set must be non-empty because - the $\fun{feesOK}$ function (called by the same rule that calls $\mathsf{UTXO}, - \mathsf{UTXOS}$) ensures that in the case that the $tx$ contains phase-2 scripts, - $\fun{collateral}~{tx}$ must be non-empty. - - Note that by property~\ref{prop:is-valid}, phase-2 scripts must always be present - if $\fun{txValTag}~tx = \False$ (that is, whenever $\mathsf{Scripts{-}No}$ rule is used). -\end{proof} -\end{property} - -\begin{property}[UTxO-changing transitions] - \label{prop:utxo-change} - -The $\mathsf{UTXOS}$ transition fully specifies the change in the ledger $\UTxO$ -for each transaction. - -\begin{lemma} - For all environments $e$, transitions $\mathsf{TRNS}$, transactions $tx$ and states $s, s'$ such that - \begin{equation*} - e\vdash s\trans{trns}{tx}s' - \end{equation*} - The following holds : - \begin{equation*} - \Utxo(s) \neq \Utxo(s')~\Rightarrow~e'\vdash u\trans{utxos}{tx}u' - \end{equation*} - where $\Utxo(s) = \Utxo(u)~\wedge~\Utxo(s') = \Utxo(u')$ for some environment $e'$, - and states $u, u'$. -\end{lemma} -\begin{proof} - By inspecting each transition in this specification, as well as those inherited from the - Shelley one, we see that a non-trivial update from the UTxO of $s$ to that of $s'$ - must be done by $\mathsf{UTXOS}$. Every other transition that changes the UTxO and - has a signal of type $\Tx$ only applies the $\mathsf{UTXOS}$. -\end{proof} -\end{property} - -\begin{property}[Deterministic script evaluation] - \label{prop:fixed-inputs} - -The deterministic script evaluation property, also stated as -"script interpreter arguments are fixed", is a property of the Alonzo ledger -that guarantees that the outcome of phase-2 script validation in a (phase-1 valid) transaction -depends only on the contents of that transaction, and not on when, by who, or in what -block that transaction was submitted. - -For this property, we make some assumptions about things that are outside the scope of this specification : - -\begin{itemize} - \item The Plutus script - interpreter is a pure function that receives only the arguments provided by the ledger when it is - invoked by calling the $\fun{runPLCScript}$ function. We assume that this is - also true in an implementation. In particular, the interpreter does not - obtain any system randomness, etc. - - \item We do not need to check here that the hashes that are the keys of the - $\fun{txscripts}$ and $\fun{txdats}$ fields match the computed hashes of the scripts and - datum objects they index. This is because these hashes must be computed as part of - the deserialization of a transaction (see the CDDL specification), - instead of being transmitted as part of the transaction and then checked. We - assume these hashes are correct. - - \item We assume that the consensus - function $\fun{epochInfoSlotToUTCTime}$ for converting a slot interval into a - system time interval is deterministic. - - \item We assume that the two global - constants, $\EpochInfo$ and $\SystemStart$, which it also takes as parameters, - cannot change within the span of any interval for which $\fun{epochInfoSlotToUTCTime}$ - is able to convert both endpoints to system time. -\end{itemize} - -The assumptions above are implicit in the functional style of definitions in this -specification, but they are worth pointing out for implementation. -With these assumptions in mind, we can say that -script evaluation is deterministic. - -We split this result into a lemma and its corollary : - -\begin{itemize} - \item First, we demonstrate that all the scripts and their arguments that are - collected for phase-2 validation are the same for two phase-1 valid transactions with the same body, - independent of the (necessarily valid) ledger state to which they are being applied - - \item Second, we derive the corollary that under the same validity assumptions, - phase-2 validation results in the same outcome for both transactions -\end{itemize} - -\begin{lemma} - \label{lem:inputs} - For all environments $e, e'$, transactions $tx, tx'$ and states $s, s', u, u'$ such that - $e$ and $s$ are subsets of fields of some valid chain state $c$, and - $e'$ and $s'$ are subsets of fields of some valid chain state $c'$, - - \begin{equation*} - e\vdash s\trans{ledger}{tx}s', \\ - e'\vdash u\trans{ledger}{tx'}u', \\ - \txbody{tx} = \txbody{tx'} - \end{equation*} - - The following holds : - - \[\fun{toSet}~(\fun{collectTwoPhaseScriptInputs}~\mathsf{EI}~\mathsf{SysSt} ~\field_{pp}(s)~\var{tx}~ \Utxo(s))\] - \[ = \] - \[\fun{toSet}~(\fun{collectTwoPhaseScriptInputs}~\mathsf{EI}~\mathsf{SysSt} ~\field_{pp}(u)~\var{tx'}~ \Utxo(u))\] - -\end{lemma} -\begin{proof} - - The $\fun{collectTwoPhaseScriptInputs}$ - function (see \ref{fig:functions:script2}) - constructs a list where each entry contains a Plutus script - and the arguments passed to the interpreter for its evaluation. - - To show that $\fun{collectTwoPhaseScriptInputs}$ returns a list containing - the same elements for both $tx$ and $tx'$, we observe that - the set of elements from which this list is produced via $\fun{toList}$ - is generated using the following functions, as well as set comprehension - and list operations. - We demonstrate that the functions used in this definition - produce the same output for $tx$ and $tx'$, as all the data they - inspect is fixed by the transaction body : - - \begin{itemize} - \item $\fun{scriptsNeeded}$ : The $\PolicyID$, $\AddrRWD$, and $\DCert$ data - output by this function as the second term of the hash-purpose pair - is obtained directly from the $\fun{mint}$, $\fun{txwdrls}$, - $\fun{txcerts}$ fields of the transaction, which are all fixed by the - body of the transaction. These types of script purposes all include - the hash of the validating script. - - The only other data this function inspects is the UTxO entries associated - with the $\fun{txinputs}$ (passed via the $\UTxO$ argument) to get the realized inputs. - We know that the UTxO is a field in a valid chain state for both the phase-1 valid - transactions $tx$ and - the $tx'$ ($\Utxo(s)$ and $\Utxo(u)$, respectively). This means that the $\TxId$ - in each input present in either UTxO is a hash of the body of the transaction - containing the $\TxOut$ part of the UTxO entry indexed by that input. The - order of the outputs is also fixed by the body, which fixes the $\Ix$ of - the entry. - - A different value in output part of the UTxO entry (or a different order of - outputs) would necessarily imply - that the hash of the body containing that output must be different. - Therefore, for all Plutus script-locked realized inputs of either transaction, - the script hash in the payment credential of the address - (and, by the same argument, the datum hash) are fixed by the inputs in body of the - transaction, despite not being explicitly contained in it. We then get that - - \[ \fun{scriptsNeeded}~\Utxo(s)~(\txbody{tx}) = \fun{scriptsNeeded}~\Utxo(u)~(\txbody{tx'}) \] - - \item $\fun{getDatum}$ : In the case the script purpose - is of the input type, the datum this function returns is one that - is associated with the corresponding realized input. More precisely, it is the datum whose - hash is specified in the realized input, and is looked up by hash in the $\fun{txdats}$ - transaction field. If there is no datum hash in the realized input, or the script purpose - is of a non-input type, the empty list is returned. - - The $\mathsf{UTXOW}$ rule checks that the transaction is carrying all datums corresponding - to its realized inputs. Since the inputs (and realized inputs) are the same - for $tx$ and $tx'$ (fixed by the body), this guarantees that - of the datum hashes in the realized inputs (and therefore, their preimages) - are the same as well. - - \item $\fun{txscripts}$ : in the $\mathsf{UTXOW}$ rule, there is a check that all the - script preimages of the script hashes returned by the $\fun{scriptsNeeded}$ - function must be present in this field. - - \item $\fun{indexedRdmrs}$ : like $\fun{scriptsNeeded}$, this function - examines four fields fixed by the transaction body ($\fun{mint}$, $\fun{txwdrls}$, - $\fun{txcerts}$, and $\fun{txinputs}$). - It also looks at data in the $\fun{txrdmrs}$ field, which is fixed - by the transaction body via the $\fun{scriptIntegrityHash}$ - hash. This is done as follows: the $\mathsf{UTXOW}$ rule verifies that this - hash-containing field matches the computed hash - of the preimage constructed from several fields of the transaction, - including $\fun{txrdmrs}$ (this calculation - is done by the $\fun{hashScriptIntegrity}$ function). - - \item $\fun{language}$ : this is directly conveyed by the type of a script. - - \item $\fun{costmdls}$ : The hash calculated by the $\fun{hashScriptIntegrity}$ - function and compared to the hash value in the $\fun{scriptIntegrityHash}$ field - must include in the preimage the current cost models of - all script languages of scripts carried by the transaction. Recall that - if a cost model changed between when a transaction was submitted and the - time at which it was processed, the field and the calculated hash values - will not match. - - \item $\fun{valContext}$ and $\fun{txInfo}$ : - The $\fun{valContext}$ function is defined in \ref{sec:txinfo} and is pure. - All fields of the $\TxInfo$ - structure, with the exceptions listed below, - are straightforward translations of the corresponding transaction body fields (see \ref{sec:txinfo}) that - are given no additional arguments, - and therefore completely determined by $tx$ and $tx'$. The fields not directly - appearing in the body are : - - \begin{itemize} - \item $\fun{txInfoInputs}$ : this field contains the realized inputs of - the transaction which are fixed by the transaction and the unique - UTxO entries to which the inputs correspond. As explained above, - accessing information in realized inputs for script evaluation - does not break determinism. - - \item $\fun{txInfoValidRange}$ : this field contains the transaction - validity interval as system time (converted from the slot numbers, which are - used to specify the interval in the transaction body). This conversion is - done by a function defined in the consensus layer, and takes two global - constants in addition to the slot interval itself. Since the slot interval - conversion function $\fun{epochInfoSlotToUTCTime}$ necessarily - succeeds if both $tx$ and $tx'$ pass phase-1 validation, the additional - global constant arguments must be the same (by assumption). The determinism of this conversion - is one of the assumptions of this property, and thus gives the same output - for both transactions. - - \item $\fun{txInfoData}$ : this field is populated with the datums (and their - hashes) in the transaction field $\fun{txdats}$, which are fixed by the body - via the $\fun{scriptIntegrityHash}$ field. - - \item $\fun{txInfoId}$ : this field contains the hash of the transaction body, - which is clearly the same for transactions with the same body. - \end{itemize} - - Therefore, each field of the $\TxInfo$ structure is - the same for two transactions with the same body, ie. - - \[ \fun{txInfo}~\PlutusVI~\Utxo(s)~\var{tx} = \fun{txInfo}~\PlutusVI~\Utxo(u)~\var{tx'}\] - - \end{itemize} -\end{proof} - -We can now make the general statement about evaluation of all scripts done in -phase-2 validation : for any phase-1 valid transactions with the same body, -the outcome of phase-2 script evaluation is the same. We make the same assumptions -as in Lemma \ref{lem:inputs}. - -\begin{corollary} - For all environments $e, e'$, transactions $tx, tx'$ and states $s, s', u, u'$ such that - \begin{equation*} - e\vdash s\trans{ledger}{tx}s', \\ - e'\vdash u\trans{ledger}{tx'}u', \\ - \txbody{tx} = \txbody{tx'} - \end{equation*} - The following holds : - - \[\fun{evalScripts}~{tx}~ (\fun{collectTwoPhaseScriptInputs}~\mathsf{EI}~\mathsf{SysSt} ~\field_{pp}(s)~\var{tx}~ \Utxo(s))\] - \[ = \] - \[\fun{evalScripts}~{tx'}~ (\fun{collectTwoPhaseScriptInputs}~\mathsf{EI}~\mathsf{SysSt} ~\field_{pp}(u)~\var{tx'}~ \Utxo(u))\] - -\end{corollary} - -\begin{proof} - Let us consider the use of arguments of $\fun{evalScripts}$ (see Figure \ref{fig:functions:script2}). - The first argument (of type $\Tx$) is only inspected in the case that the script $sc$ (the first element - in the pair at the head of the list of script-arguments pairs is a phase-1 script. Since all phase-1 scripts - are checked in phase one of validation (see \ref{fig:rules:utxow-alonzo}) by calling $\fun{validateScript}$ - on all scripts attached to the transaction. For this to apply to $sc$, we must also show - that $sc$ is a script attached to the transaction (see the second argument explanation). - Note also that the $tx$ argument passed to $\fun{evalScripts}$ at the use site (in the $\mathsf{UTXOS}$ transition) - is the same, unmodified $tx$ as is the signal for the LEDGER transition. We verify this by inspecting - the sequence of transitions through which it is propagated - ($\mathsf{UTXOS}$, $\mathsf{UTXO}$, $\mathsf{UTXOW}$, and $\mathsf{LEDGER}$), and their signals. - - This allows us to conclude that at every step of the iteration over the script-arguments pairs list, - the first argument to $\fun{evalScripts}$, - - \begin{itemize} - \item has no impact on the outcome of script evaluation in the case the script - being validated at this step is phase-2, as it is completely ignored, and, - - \item because $\fun{collectTwoPhaseScriptInputs}$ filters out all phase-1 scripts, - is, in fact, ignored always. - \end{itemize} - - The second argument to $\fun{evalScripts}$, ie. the list of scripts and their arguments, - has already been shown to contain the same tuples for both transactions in the lemma above. - The order of the list does not affect the validation outcome, since the interpreter is run - on each tuple of a script and its arguments independently of all other tuples in the list. - The function $\fun{evalScripts}$ is a $\wedge$-fold over the list. Thus, we may ignore the order - of the elements in the generated list as it does not affect the evaluation outcome. - - From this we may conclude that the outcome of both phase-1 and phase-2 script evaluations - at each step of $\fun{evalScripts}$ must be the same for $tx$ and $tx'$. Therefore, - the $\wedge$-fold of them done by $\fun{evalScripts}$ also produces the same outcome - for both transactions. - -\end{proof} -\end{property} - - -\begin{enumerate} -\item - \emph{Commutativity of Translation.} Translate, then apply to Alonzo ledger is - the same as apply to MA ledger, then translate the ledger. -\item - \emph{Zero ExUnits.} If a script is run (there’s a redeemer/exunits) , it will fail with 0 units -\item - \emph{Cost Increase.} if a transaction is valid, it will remain valid if you increase the execution units -\item - \emph{Cost Lower Bound.} if a transaction contains at least one valid script, it must have at least one execution unit -\item - \emph{Tx backwards Compatibility.} Any transaction that was accepted in a previous version of the ledger rules - has exactly the same cost and effect, except that the transaction output is extended. -\item \emph{Run all scripts.} All scripts attached to a transaction are run -\item - ... \todo{Anything else?} -\end{enumerate} diff --git a/eras/alonzo/formal-spec/protocol-parameters.tex b/eras/alonzo/formal-spec/protocol-parameters.tex deleted file mode 100644 index 267a317e7c0..00000000000 --- a/eras/alonzo/formal-spec/protocol-parameters.tex +++ /dev/null @@ -1,198 +0,0 @@ -\section{Language Versions and Cost Models} -\label{sec:protocol-parameters} - -We require the following types (see Figure~\ref{fig:defs:protocol-parameters}) -in addition to those that are already defined in the Shelley specification~\cite{shelley_spec}. - -\vspace{12pt} -\begin{tabular}{lp{5in}} - $\ExUnits$ & - $\ExUnits$ is made up of two integer values, representing abstract notions of the - relative memory usage and script execution steps respectively. - We give it the structure of a partially ordered monoid via its product structure, - i.e. addition and comparisons are defined point-wise. - \\ - $\Prices$ & - $\Prices$ consists of two rational numbers that correspond to the components of $\ExUnits$: - the price per unit of memory and price per reduction step. - \\ - $\CostMod$ & - A cost model is a vector of coefficients that are used to compute - the execution units required to execute a script. Its specifics depend on - specific versions of the Plutus interpreter it is used with. - We keep this type as abstract in the specification, see \cite{plutuscore} and \cite{plutustech} - for details. - \\ - $\Language$ & - This represents phase-2 language types. Currently there is only $\PlutusVI$. - \\ - $\LangDepView$ & - A pair of two byte strings, where the first represents the serialized language tag (eg. the tag for $\PlutusVI$), - and the second, the protocol parameters that must be fixed (by the transaction) when carrying a phase-2 script - in that language. -\end{tabular} - -The function $\fun{serialize}$ is left abstract, as -these is an implementation-dependent serialization function. It must -be implemented for all serializable types, including all -collections of protocol parameters needed to construct a $\LangDepView$ for -each existing language. - -\subsection{Language Versions and Backwards Compatibility Requirements} -\label{sec:versions} - -In the $\Language$ type, each \emph{version} of a language is considered to be a different language (so there might be several versions of the Plutus language, each of which would be considered to -be different). -Each such language needs to be interpreted by a language-specific interpreter that is called from the ledger implementation. -The interpreter is provided with the (language- and version-specific) arguments that it requires. -It is necessary for the ledger to be capable of executing scripts in all languages it has ever supported. -This implies that it is necessary to maintain all forms of ledger -data that is needed by any past or current language, which constrains future ledger designs. -Introducing a new language will require a protocol version update, since the datatypes need to support the new language and the ledger rules must be updated to use the new interpreter. - -\subsection{Determinism of Script Evaluation} -\label{sec:determinism} - -The data that is passed to the interpreter -includes the validator script, the redeemer, possibly a datum from the UTxO, information about the transaction that -embeds the script, any relevant ledger data, and any relevant protocol parameters. -It is necessary for the validation outcome of any scripts to remain the same during the entire -period between transaction -submission and completion of the script processing. -% -In order to achieve this, -any data that is passed to the interpreter must be determined by the transaction body. -In property \ref{prop:fixed-inputs}, we make precise what deterministic script evaluation means. -The transaction body therefore includes a hash of any such data that is not uniquely determined by other parts of the transaction body or the UTXO. -When the transaction is processed, as part of the UTXOW rule, this hash is compared with a hash of the data that is passed to the interpreter. This -ensures that scripts are only executed if they have been provided with the intended data. - -The $\fun{getLanguageView}$ function is used in the computation of this integrity hash. -Shown in (Figure~\ref{fig:defs:protocol-parameters}), it filters the data relvant -to a given language from the protocol parameters, and returns a pair of byte strings : -the serialized representation of -the language tag, and the serialized representation of the relevant data in the protocol -parameters, which, for -$\PlutusVI$, is just its cost model, $\fun{costmdls}~{pp}~\{\PlutusVI\}$. -This function must be defined for all -existing script languages that require a cost model (are phase-2), which, in Alonzo, is only $\PlutusVI$. -The only relevant parameter for $\PlutusVI$ is the cost model for this language. - -\subsection{Script Evaluation Cost Model and Prices} -\label{sec:cost-mod} - -To convert resource primitives into the -more abstract $\ExUnits$ during script execution a cost model needs to be supplied to the interpreter. -The cost models required for this purpose are recorded in the $\var{costmdls}$ protocol parameter. -% -The calculation of the actual cost, in Ada, of running -a script that takes $\var{exunits} \in \ExUnits$ resources to run, -is done by a formula in the ledger rules, which uses the -$\var{prices}$ parameter. This is a parameter that applies to all -scripts and that cannot be varied for individual languages. This parameter -reflects the real-world costs in terms of energy usage, hardware resources etc. - -In Alonzo, the protocol parameter $\var{minUTxOValue}$ is deprecated, and replaced by -$\var{coinsPerUTxOWord}$. This specifies directly the deposit required for storing -bytes of data on the ledger in the form of UTxO entries. - -\textbf{Limiting Script Execution Costs.} -The $\var{maxTxExUnits}$ and $\var{maxBlockExUnits}$ protocol parameters are -used to limit the total per-transaction and per-block resource use. These only apply to phase-2 scripts. -The parameters are used to ensure that the time and memory that are required to verify a block are bounded. - -\textbf{Value size limit as a protocol parameter.} -The new parameter $\var{maxValSize}$ replaces the constant $\mathsf{maxValSize}$ -used (in the ShelleyMA era) to limit the size of the $\Value$ part of an output in a -serialised transaction. - -\textbf{Collateral inputs.} -Collateral inputs in a transaction are used to cover the transaction fees in the case -that a phase-2 script fails (see Section~\ref{sec:transctions}). -The term \emph{collateral} refers to the total Ada contained in the UTxOs referenced -by collateral inputs. - -The parameter $\var{collateralPercent}$ is used to specify the percentage of -the total transaction fee its collateral must (at minimum) cover. The -collateral inputs must not themselves be locked by a script. That is, they must -be VKey inputs. The parameter $\var{maxCollateralInputs}$ is used to limit, additionally, -the total number of collateral inputs, and thus the total number of additional -signatures that must be checked during validation. - -\begin{figure*}[htb] - \emph{Abstract types} - % - \begin{equation*} - \begin{array}{l@{\qquad\qquad\qquad}r} - \CostMod & \text{Coefficients for the cost model} - \end{array} - \end{equation*} - % - \emph{Derived types} - \begin{equation*} - \begin{array}{l@{\quad=\quad}l@{\qquad}r} - \Language - & \{\PlutusVI, \dotsb\} - & \text{Script Language} - \\ - \Prices - & \mathsf{Rational} \times \mathsf{Rational} - & \text {Coefficients for $\ExUnits$ prices} - \\ - \ExUnits - & \N \times \N - & \text{Abstract execution units} - \\ - \LangDepView - & \ByteString~\times~\ByteString - & \text{Language Tag and PParams view} - \end{array} - \end{equation*} - % - \emph{Deprecated Protocol Parameters} - % - \begin{equation*} - \begin{array}{r@{~\in~}l@{\qquad}r} - \var{minUTxOValue} \mapsto \Coin & \PParams & \text{Min. amount of Ada each UTxO must contain} - \end{array} - \end{equation*} - % - \emph{New Protocol Parameters} - % - \begin{equation*} - \begin{array}{r@{~\in~}l@{\qquad}r} - \var{costmdls} \mapsto (\Language \mapsto \CostMod) & \PParams \\ - % & \text{Script exec. cost model}\\ - \var{prices} \mapsto \Prices & \PParams \\ - % & \text{Coefficients for $\ExUnits$ prices} \\ - \var{maxTxExUnits} \mapsto \ExUnits & \PParams \\ - % & \text{Max. total tx script exec. resources}\\ - \var{maxBlockExUnits} \mapsto \ExUnits & \PParams \\ - % & \text{Max. total block script exec. resources}\\ - \var{maxValSize} \mapsto \N & \PParams \\ - % & \text{Max size a value can be}\\ - \var{coinsPerUTxOWord} \mapsto \Coin & \PParams \\ - % & \text{Min. Lovelace per word (8 bytes) a UTxO entry must contain} - \var{collateralPercent} \mapsto \N & \PParams \\ - % & \text{Percentage of Tx fee which collateral must cover} - \var{maxCollateralInputs} \mapsto \N & \PParams \\ - % & \text{Maximum number of VK inputs that can be used to cover collateral} - \end{array} - \end{equation*} - % - \emph{Accessor Functions} - % - \begin{center} - \fun{costmdls},~\fun{prices},~\fun{maxTxExUnits},~\fun{maxBlockExUnits},~\fun{maxValSize},~\fun{coinsPerUTxOWord},\\ - \fun{collateralPercent},~\fun{maxCollateralInputs} - \end{center} - % - \emph{Helper Functions} - % - \begin{align*} - & \fun{getLanguageView} : \PParams \to \Language \to \LangDepView \\ - & \fun{getLanguageView}~\var{pp}~\PlutusVI = (\fun{serialize}~\PlutusVI, ~ (\fun{serialize}~(\fun{costmdls}~{pp}~\{\PlutusVI\}))) - \end{align*} - \caption{Definitions Used in Protocol Parameters} - \label{fig:defs:protocol-parameters} -\end{figure*} diff --git a/eras/alonzo/formal-spec/references.bib b/eras/alonzo/formal-spec/references.bib deleted file mode 100644 index 2433b1d3ea6..00000000000 --- a/eras/alonzo/formal-spec/references.bib +++ /dev/null @@ -1,120 +0,0 @@ -@misc{small_step_semantics, - label = {CdoSem}, - author = {{Formal Methods Team, IOHK}}, - title = {{Small Step Semantics for Cardano}}, - year = {2018}, - url = {https://github.com/input-output-hk/cardano-chain/blob/master/specs/semantics/latex/small-step-semantics.tex}, -} - - -@misc{delegation_design, - label = {cdoDel}, - author = {Philipp Kant and Lars Br\"unjes and Duncan Coutts}, - title = {{Design Specification for Delegation and Incentives in Cardano}}, - year = {2018}, - url = {https://github.com/intersectmbo/cardano-ledger/tree/master/eras/shelley/design-spec/shelley-delegation.tex}, -} - -@article{chimeric, - author = {Joachim Zahnentferner}, - title = {Chimeric Ledgers: Translating and Unifying UTXO-based and Account-based Cryptocurrencies}, - journal = {Cryptology ePrint Archive, Report 2018/262}, - year = {2018}, - url = {https://eprint.iacr.org/2018/262}, -} - -@article{utxo_scripts, - author = {Joachim Zahnentferner}, - title = {An Abstract Model of UTxO-based Cryptocurrencies with Scripts}, - journal = {Cryptology ePrint Archive, Report 2018/469}, - year = {2018}, - url = {https://eprint.iacr.org/2018/469}, -} - -@article{multi_currency, - author = {Joachim Zahnentferner}, - title = {Multi-Currency Ledgers}, - journal = {??}, - year = {2018}, -} - -@techreport{cardano_consensus, - title = {{The Cardano Consensus and Storage Layer}}, - author = {Edsko de Vries and Thomas Winant and Duncan Coutts}, - year = {2021}, - institution = {IOHK}, - url = {https://hydra.iohk.io/build/5265971/download/1/report.pdf} -} - -@misc{shelley_spec, - label = {CdoLedger}, - author = {{Formal Methods Team, IOHK}}, - title = {{A Formal Specification of the Cardano Ledger}}, - year = {2019}, - url = {https://github.com/intersectmbo/cardano-ledger/tree/master/eras/shelley/formal-spec/shelley-ledger.tex} -} - -@misc{shelley_ma_spec, - label = {CdoLedger}, - author = {{Formal Methods Team, IOHK}}, - title = {{A Formal Specification of the Cardano Ledger with a Native Multi-Asset Implementation}}, - year = {2019}, - url = {https://github.com/intersectmbo/cardano-ledger/tree/master/eras/shelley-ma/formal-spec/mary-ledger.tex} -} - -@misc{ouroboros, - label = {CdoProt}, - author = {Aggelos Kiayias and Alexander Russell and Bernardo David and Roman Oliynykov}, - title = {Ouroboros: A Provably Secure Proof-of-Stake Blockchain Protocol}, - howpublished = {Cryptology ePrint Archive, Report 2016/889}, - year = {2016}, - note = {\url{http://eprint.iacr.org/2016/889}}, -} - -@inproceedings{chakravarty2020extended, - title={The extended UTXO model}, - author={Chakravarty, Manuel MT and Chapman, James and MacKenzie, Kenneth and Melkonian, Orestis and Jones, Michael Peyton and Wadler, Philip}, - booktitle={International Conference on Financial Cryptography and Data Security}, - pages={525--539}, - year={2020}, - organization={Springer}, - url={https://iohk.io/en/research/library/papers/the-extended-utxo-model/} -} - -@misc{formal_multicur, -label = {CdoFMCUR}, -author = {{Plutus Team, Ledger Team, IOHK}}, -title = {{A Formal Specification of a UTxO Ledger with Scripts and Multi-Currency}}, -year = {2019}, -url = {https://github.com/intersectmbo/cardano-ledger/blob/master/eras/shelley/formal-spec/scripts-multicurrency.tex} -} - -@misc{multi_sig, - label = {CdoMSIG}, - author = {{Formal Methods Team, IOHK}}, - title = {{A Formal Specification of a Multi-Signature Scheme using Scripts}}, - year = {2019}, - url = {https://github.com/intersectmbo/cardano-ledger/blob/master/eras/shelley/formal-spec/multi-sig.tex} -} - -@misc{non_int, - label = {CdoNonInt}, - author = {{Matthias Gudemann}}, - title = {{A Specification of the Non-Integral Calculations in the Ledger}}, - year = {2019}, - url = {https://github.com/intersectmbo/cardano-ledger/releases/latest/download/non-integer-calculations.pdf} -} - -@misc{plutustech, - author = {{Plutus Team}}, - title = {{The Plutus Platform: An IOHK technical report}}, - year = {2021}, - url = {https://hydra.iohk.io/build/7244348/download/1/plutus.pdf} -} - -@misc{plutuscore, - author = {{Plutus Team}}, - title = {{Formal Specification of the Plutus Core Language}}, - year = {2021}, - url = {https://hydra.iohk.io/build/7244320/download/1/plutus-core-specification.pdf} -} diff --git a/eras/alonzo/formal-spec/transactions.tex b/eras/alonzo/formal-spec/transactions.tex deleted file mode 100644 index 1353c084692..00000000000 --- a/eras/alonzo/formal-spec/transactions.tex +++ /dev/null @@ -1,302 +0,0 @@ -\section{Transactions} -\label{sec:transactions} - -This section outlines the changes that are needed to the transaction -structure to enable phase-2 scripts to validate -the minting of tokens, spending outputs, verifying certificates, and -verifying withdrawals. -% -Figure \ref{fig:defs:utxo-shelley-1} gives the modified transaction types and helper functions. -We make the following changes and additions: - -\begin{itemize} - \item $\ScriptIntegrityHash$ is the type of a hash of script execution - related data. It is the hash of $\fun{txrdmrs}$ and relevant protocol parameters. - - \item $\ScriptPhOne$ is the type of phase-1 scripts. - - \item $\ScriptPhTwo$ is the type of phase-2 scripts. - - \item $\Data$ is a type for communicating data to script. It is kept abstract here. - - \item $\Script$ is the type of all scripts, both phase-1 and phase-2. - - \item $\IsValid$ is a tag that indicates that a transaction - expects that all its phase-2 scripts will be validated. - This tag is added by the block creator when - constructing a block, and its correctness is verified as part of the script execution. - - \item $\Datum$ is a type alias for the $\Data$ type, used to signify that - terms of this type are intended to be used strictly as datum objects. - - \item $\Redeemer$ is also a type alias for the $\Data$ type, used to signify that - terms of this type are intended to be used strictly as redeemers. - - \item $\TxOut$ is the type of transaction outputs. These are extended to include - an optional hash of a datum. Note that \emph{any} output can - optionally include such a hash, even though only phase-2 scripts - can actually use the hash value. Since it is in general impossible for the ledger implementation to - know at the time of transaction creation whether or not an output belongs to a phase-2 - script, we simply allow any output to contain a hash of a datum. - - \item $\Tag$ lets us differentiate what a script - can validate, i.e. \\ - \begin{tabular}{l@{~to validate~}l} - $\mathsf{Spend}$ & spending a script UTxO entry; \\ - $\mathsf{Mint}$ & minting tokens; \\ - $\mathsf{Cert}$ & certificates with script credentials; and \\ - $\mathsf{Rewrd}$ & reward withdrawals from script addresses. - \end{tabular} - - \item $\RdmrPtr$ is a pair of a tag and an index. This type is - used to index the Plutus redeemers that are included in a transaction, as discussed - below. - -\end{itemize} - -We add the following helper functions: - -\begin{itemize} - \item $\fun{language}$ selects the language of a phase-2 script, and $\Nothing$ in case - the script is phase-1. - \item $\fun{hashData}$ hashes a value of type $\Data$. - \item $\fun{hashScriptIntegrity}$ hashes the protocol parameters and data relevant to script execution. - In particular, the redeemer structure, and the datum objects. -\end{itemize} - -\begin{figure*}[htb] - \emph{Abstract types} - % - \begin{equation*} - \begin{array}{l@{\quad\quad\quad\quad}r} - \ScriptIntegrityHash & \text{Script data hash}\\ - \ScriptPlutus & \text{Plutus core scripts} \\ - \Data & \text{Generic script data} - \end{array} - \end{equation*} - % - \emph{Script types} - % - \begin{equation*} - \begin{array}{l@{\qquad=\qquad}lr} - \ScriptPhTwo & \ScriptPlutus \\ - \Script & \ScriptPhOne \uniondistinct \ScriptPhTwo \\ - \IsValid & \Bool \\ - \Datum & \Data \\ - \Redeemer & \Data - \end{array} - \end{equation*} -% - \emph{Derived types} - % - \begin{equation*} - \begin{array}{l@{\qquad=\qquad}lr} - \ValidityInterval - & \Slot^? \times \Slot^? - \\ - \TxOut - & \Addr \times \Value \times \hldiff{\DataHash^?} - \\ - \Tag - & \{\mathsf{Spend},~\mathsf{Mint},~\mathsf{Cert},~\mathsf{Rewrd}\} - \\ - \RdmrPtr - & \Tag \times \Ix - \end{array} - \end{equation*} - % - \emph{Helper Functions} - % - \begin{align*} - \fun{language}& : \Script \to \Language^?\\ - \fun{hashData}& : \Data \to \DataHash - \nextdef - \fun{getCoin}& : \TxOut \to \Coin \\ - \fun{getCoin}&~\hldiff{{(\_, \var{v}, \_)}} = \fun{valueToCoin}~{v} - \end{align*} - % - \begin{align*} - &\fun{hashScriptIntegrity} : \PParams \to \powerset{\Language} \to (\RdmrPtr \mapsto \Redeemer \times \ExUnits) \\ - &~~~~ \to (\DataHash \mapsto \Datum) \to \ScriptIntegrityHash^? \\ - &\fun{hashScriptIntegrity}~{pp}~{langs}~{rdmrs}~{dats} = \\ - &~~~~ \begin{cases} - \Nothing & rdmrs = \emptyset \land langs = \emptyset \land dats = \emptyset \\ - \fun{hash} (rdmrs, dats, \{ \fun{getLanguageView}~pp~l \mid l \in langs \}) & \text{otherwise} - \end{cases} - \end{align*} - \caption{Definitions for Transactions} - \label{fig:defs:utxo-shelley-1} -\end{figure*} - - -\begin{figure*}[htb] - \emph{Transaction Types} - % - \begin{equation*} - \begin{array}{r@{~~}l@{~~}l@{\qquad}l} - \TxWitness = - & (\VKey \mapsto \Sig) & \fun{txwitsVKey} & \text{VKey signatures}\\ - & \times ~(\ScriptHash \mapsto \Script) & \fun{txscripts} & \text{All scripts}\\ - & \times~ \hldiff{(\DataHash \mapsto \Datum)} & \hldiff{\fun{txdats}} & \text{All datum objects}\\ - & \times ~\hldiff{(\RdmrPtr \mapsto \Redeemer \times \ExUnits)}& \hldiff{\fun{txrdmrs}}& \text{Redeemers/budget} - \end{array} - \end{equation*} - % - \begin{equation*} - \begin{array}{r@{~~}l@{~~}l@{\qquad}l} - \TxBody = - & \powerset{\TxIn} & \fun{txins}& \text{Inputs}\\ - & \times ~\hldiff{\powerset{\TxIn}} & \hldiff{\fun{collateral}} & \text{Collateral inputs}\\ - & \times ~(\Ix \mapsto \TxOut) & \fun{txouts}& \text{Outputs}\\ - & \times~ \seqof{\DCert} & \fun{txcerts}& \text{Certificates}\\ - & \times ~\Value & \fun{mint} &\text{A minted value}\\ - & \times ~\Coin & \fun{txfee} &\text{Total fee}\\ - & \times ~\ValidityInterval & \fun{txvldt} & \text{Validity interval}\\ - & \times~ \Wdrl & \fun{txwdrls} &\text{Reward withdrawals}\\ - & \times ~\Update^? & \fun{txUpdates} & \text{Update proposals}\\ - & \times ~\hldiff{\powerset{\KeyHash}} & \hldiff{\fun{reqSignerHashes}} & \text{Hashes of VKeys passed to scripts}\\ - & \times ~\hldiff{\ScriptIntegrityHash^?} & \hldiff{\fun{scriptIntegrityHash}} & \text{Hash of script-related data}\\ - & \times ~\AuxiliaryDataHash^? & \fun{txADhash} & \text{Auxiliary data hash}\\ - & \times ~\hldiff{\Network^?} & \hldiff{\fun{txnetworkid}} & \text{Tx network ID}\\ - \end{array} - \end{equation*} - % - \begin{equation*} - \begin{array}{r@{~~}l@{~~}l@{\qquad}l} - \Tx = - & \TxBody & \fun{txbody} & \text{Body}\\ - & \times ~\TxWitness & \fun{txwits} & \text{Witnesses}\\ - & \times ~\hldiff{\IsValid} & \hldiff{\fun{isValid}}&\text{Validation tag}\\ - & \times ~\AuxiliaryData^? & \fun{auxiliaryData}&\text{Auxiliary data}\\ - \end{array} - \end{equation*} - \caption{Definitions for transactions, cont.} - \label{fig:defs:utxo-shelley-2} -\end{figure*} - -\textbf{Auxiliary Data. } The auxiliary data in an Alonzo transaction has the same structure as -in a ShelleyMA transaction, but can additionally contain phase-2 scripts. - -\subsection{Witnessing} -Figure \ref{fig:defs:utxo-shelley-2} defines the witness type, $\TxWitness$. This contains everything -in a transaction that is needed for witnessing, namely: - -\begin{itemize} - \item VKey signatures; - \item a map of scripts indexed by their hashes, including phase-2 scripts; - \item a map of terms of type $\Datum$ indexed by their hashes, containing all required datum objects - as well as any supplemental ones that are posted for communication (see \ref{sec:wits}); and - \item a map of a pair of a $\Redeemer$ object and an $\ExUnits$ value indexed by $\RdmrPtr$, - containing the redeemers and execution units budgets. -\end{itemize} - -Note that there is a difference between the way scripts and datum objects are included in -a transaction (as a set) versus how redeemers are included -(as an indexed structure). - -\begin{description} -\item - [Hash reference (script/datum object):] - Scripts and datum objects are referred to explicitly via their hashes, - which are included in the $\UTxO$ or the transaction. Thus, they can be - looked up in the transaction without any key in the data structure. - - \item[No hash reference (redeemers):] For redeemers, - we use a reverse pointer approach and - index the redeemer by a pointer to the item for which it will be used. - For details on how a script finds its redeemer, see Section~\ref{sec:scripts-inputs}. -\end{description} - -\subsection{Transactions} -\label{sec:transctions} -We have also made the following changes to -the body of the transaction: - -\begin{itemize} - \item The new field $\fun{collateral}$ is used to specify the \emph{collateral inputs} - that are collected (into the fee pot) to cover a percentage of - transaction fees (usually $100$ percent or more) - \emph{in case the transaction contains failing phase-2 scripts}. They are not collected otherwise. - The purpose of the collateral is to cover the resource use costs - incurred by block producers running scripts that do not validate. - - Collateral inputs behave like regular inputs, except that they - must be VKey locked and can only contain Ada. See \ref{fig:functions:utxo}. - - It is permitted to use the same inputs as both collateral and a regular inputs, as exactly - one set of inputs is ever collected: collateral ones in the case of script failure, and regular inputs - in the case when all scripts validate. - - \item There is a new field called $\fun{reqSignerHashes}$ that is used to specify a set of hashes - of keys that must sign the transaction in addition to the signatures required to validate - spending from VKey addresses, checking certificate validity, and validating reward withdrawals. - This field is there to allow users to add signatures that - \begin{itemize} - \item cannot be stripped from a transaction without invalidating it in phase 1 (ie. the - validation phase where fees are not collected for the validation work done) - \item are not attached to any validation being done in phase 1, such as VKey output spending - \end{itemize} - - This is a field where users can add signatures that a phase-2 script requires internally - - the transaction and the ledger are otherwise unaware of what signatures are expected by these scripts. - - \item We include a hash of some script-related data, specifically the redeemers and protocol parameters, - with accessor $\fun{scriptIntegrityHash}$. - - \item We include the ID of the network on which the transaction lives, $\fun{txnetworkid}$. - This is in addition to the network ID's already included in the reward and output addresses. -\end{itemize} - -A complete transaction is comprised of: - -\begin{enumerate} - \item the transaction body, - \item all the information that is needed to witness transactions, - \item the $\IsValid$ tag, which indicates whether all scripts - that are executed during the script execution phase validate. - The correctness of the tag is verified as part of the ledger rules, and the block is - deemed to be invalid if it is applied incorrectly. - It can be used to re-apply blocks without script re-validation. - Since this tag is not part of the body, i.e. it is not signed, the block producer can - (and must) choose the correct value. - \item any auxiliary data. -\end{enumerate} -\begin{note} - In the implementation the $\IsValid$ tag is part of a user-submitted - transaction, but it is ignored and re-computed by the block - producer. -\end{note} -\subsection{Additional Role of Signatures on TxBody} - -The transaction body and the UTxO must uniquely determine all the data -that can influence on-chain transfer of value. -This is so that the signatures can ensure that this data is not tampered with. -As before, a transaction that does not include the correct signatures is completely invalid. -Thus, all data that influences script validation outcomes must also be determined by the body. - -Scripts and datum objects whose hashes are specified on-chain do not require to be -signed when included in a transaction. That is, script hashes locking UTxOs (as well as -with the datum hashes these UTxOs contain), and also the posted -certificates, minting policies, and reward addresses do not need to be signed. -The supplemental datum objects (see \ref{sec:wits}), however, could be stripped from the transaction without making -it invalid. The supplemental datums are stored in the same map the required ones, so, -for this reason, we do include all datum objects in the script integrity hash calculation. -% -The hash of the indexed redeemer structure and the protocol parameters that are used by -script interpreters are included in the body of the transaction, as these are composed -by the transaction author rather than -fixed via a hash on the ledger. In the future, other parts of the ledger -state may also need to be included in this hash, if they are passed as -arguments to a new script interpreter. - -\subsection{Data required for script validation.} -\label{sec:script-data} - -The body of the transaction, alongside the witness data, are required for script validation. -Script validation should not depend on the auxiliary data in any way. Script validation -may require certain supplemental datums (see \ref{sec:wits}) to be posted. For this reason, we include supplemental -datums in the part of the transaction (the witnesses) which scripts do see. -Any metadata that a user wants to expose to a transaction can be included in the -redeemer, whose purpose is to contain all user-supplied data relevant to validation. - -For more about what scripts do and do not inspect, see Section~\ref{sec:txinfo}. diff --git a/eras/alonzo/formal-spec/txinfo.tex b/eras/alonzo/formal-spec/txinfo.tex deleted file mode 100644 index 09bd5ed4f8a..00000000000 --- a/eras/alonzo/formal-spec/txinfo.tex +++ /dev/null @@ -1,332 +0,0 @@ -\section{TxInfo Construction} -\label{sec:txinfo} - -This section specifies exactly what parts of the transaction and ledger -state are used by the $\fun{txInfo}$ function to construct the -$\TxInfo$ element that, together with the script purpose for which the script -is being run, gets passed as a $\Data$ argument to the Plutus interpreter. - -\subsection{Type Translations} - -We give the Plutus types corresponding to the ledger counterparts in Figures \ref{fig:txinfo-types} -and \ref{fig:txinfo-types-two}. Details for types that have non-identity translation -functions between ledger and Plutus types are in Figure \ref{fig:txinfo-translations}. - -\textbf{Notation.} -In this Section we use the notation $\type{P.PlutusType}$ for the Plutus type -$\type{PlutusType}$ (specified in the Plutus library) to distinguish it from ledger types. - -If $\type{LT}$ is a ledger type, and $\type{P.LT}$ is the corresponding Plutus type to -which elements of $\type{LT}$ must be translated, we denote the -translation function by: - -\[ \fun{toPlutusType_{LT}} : \type{LT} \to \type{P.LT} \] - -As a shorthand, we always write $t_P$ for $\fun{toPlutusType}_{LT}~t$, if $t$ is of type $\type{LT}$. - -In many cases this function is simply the identity function, and all -the cases in which it is not the identity will be described below. - -\textbf{Sets and maps.} -Since the $\Data$ type is effectively a serialization, we need to make some arbitrary choices -for how to encode certain types that aren't inherently ordered. We encode sets as -lexicographically ordered lists, and maps in the same way by treating them first as -sets of key-value pairs. - -\textbf{Untranslatable Types.} -Certain types, such as the bootstrap address type, cannot be passed to scripts, and -are therefore translated as $\Nothing$. Any type that cannot be fully translated -as a Plutus-library type is also translated to $\Nothing$. -For example, since a bootstrap address $a \in \AddrBS$ -is not translatable, neither is $a\in\Addr$, and $(a,\wcard,\wcard) \in \TxOut$ -also translates to $\Nothing$. - -\textbf{Certificates. } -Translating certain kinds of certificates drops the data in the -certificates, in particular, the $\DCertGen$ and $\DCertMir$ ones. -The $\DCertRegPool$ pool registration certificate has a non-identity translation function, -$\fun{transPoolCert}$. - -\textbf{Time Translation.} -Functions needed to implement conversion of a slot number to POSIX time are -given in Figure \ref{fig:time-funcs}. - -\textbf{Time Range Translation.} -Performed by $\fun{transVITime}$ given in Figure \ref{fig:time-funcs}. -In case when both upper and lower bounds are set to specific slots, -resulting \type{P.POSIXTimeRange} will have non-strict lower bound -and strict upper bound. - -\textbf{Value Translation.} -\textbf{CAUTION}: Details provided here expose internals of the \type{Value} abstraction. -It is \textbf{strongly} recommended to use abstractions provided by the Plutus library, -where these details are handled under the hood for the user by library functions. -Providing these details aims to help developers with very specific needs, -who understand the risk of bypassing abstractions provided by the library. - -During $\fun{toPlutusType}_{\Value} \in \Value \to \type{P.Value}$ translation (Figure \ref{fig:time-funcs}), -if there is no Ada in the \type{Value}, then translated \type{P.Value} will contain 0 Ada value, -i.e. there will be \type{P.Value} with 0 Ada in it. Consequently, $\TxInfo$ mint field -will contain 0 Ada \type{P.Value} among other assets. - -\textbf{Pointer Address Resolution. } -Note that the $\Ptr$ addresses translated and passed to Plutus scripts are -not resolvable to their corresponding key or script staking credencials. This -is because doing a lookup in the resolution map, which part of the ledger state, -could break determinism. - -\textbf{Well-Formed Scripts and Data. } -During the transaction encoding and decoding process, a transaction is discarded if it is not -encoded correctly. This includes, in particular, a check that $\Script$ and $\Data$ -elements contained in the transaction are well-formed. Functions that perfom these checks are -in Figure \ref{fig:data-script-check}. The $\fun{P.validateScript}$ function -is a Plutus-library function which checks whether a bytestring represents a -Plutus script. - -\begin{figure*}[htb] - \emph{Hash Types} \\ - \begin{equation*} - \begin{array}{l@{~~~}l} - \ScriptHash & \type{P.ValidatorHash} \\ - \KeyHash & \type{P.PubKeyHash} \\ - \DataHash & \type{P.DatumHash} \\ - \TxId & \type{P.TxId} \\ - \end{array} - \end{equation*} - \emph{Transaction Input, ie. Output Reference} \\ - \begin{equation*} - \begin{array}{l@{~~~}l} - \TxIn & \type{P.TxOutRef} \\ - \end{array} - \end{equation*} - \emph{Credential Types} \\ - \begin{equation*} - \begin{array}{l@{~~~}l} - \Ptr & \type{P.StakingPtr} \\ - \Credential & \type{P.Credential} \\ - \Credential & \type{P.StakingHash} \\ - \StakeCredential & \type{P.StakingCredential} \\ - \end{array} - \end{equation*} - \emph{Value Types} \\ - \begin{equation*} - \begin{array}{l@{~~~}l} - \Wdrl & \type{P.StakingCredential} \times \Integer \\ - \PolicyID & \type{P.CurrencySymbol} \\ - \AssetName & \type{P.TokenName} \\ - \Coin & \Integer \\ - \Quantity & \Integer \\ - \end{array} - \end{equation*} - \emph{Certificate Types} \\ - \begin{equation*} - \begin{array}{l@{~~~}l} - \DCert & \type{P.DCert} \\ - \DCertRegKey & \type{P.DCertDelegRegKey} \\ - \DCertDeRegKey & \type{P.DCertDelegDeRegKey} \\ - \DCertDeleg & \type{P.DCertDelegDelegate} \\ - \DCertRetirePool & \type{P.DCertPoolRetire} \\ - \end{array} - \end{equation*} - \emph{Data-dropping Types} \\ - \begin{equation*} - \begin{array}{l@{~~~}l} - \RewardAcnt & \type{P.StakingHash} \\ - \DCertGen & \type{P.DCertGenesis} \\ - \DCertMir & \type{P.DCertMir} \\ - \end{array} - \end{equation*} - \caption{TxInfo and Constituent Types} - \label{fig:txinfo-types} -\end{figure*} - -\begin{figure*}[htb] - \emph{Script Purpose Types} \\ - \begin{equation*} - \begin{array}{l@{~~~}l} - \mathsf{Cert} & \type{P.Certifying} \\ - \mathsf{Rwrd} & \type{P.Rewarding} \\ - \mathsf{Mint} & \type{P.Minting} \\ - \mathsf{Spend} & \type{P.Spending} \\ - \end{array} - \end{equation*} - \emph{Execution Budget Types} \\ - \begin{equation*} - \begin{array}{l@{~~~}l} - \Integer & \type{P.ExCPU} \\ - \Integer & \type{P.ExMemory}\\ - \ExUnits & \type{P.ExBudget} \\ - \end{array} - \end{equation*} - \emph{TxInfo} \\ - \begin{align*} - & \TxInfo = \\ - & ~~~~ \seqof{\type{P.TxInInfo^?}} % & \text{inputs} \\ %\type{P.txInfoInputs} & - & \text{realized inputs} \\ - & ~~~~ \times \seqof{\type{P.TxOut^?}} - & \text{outputs} \\ %\type{P.txInfoOutputs} - & ~~~~ \times \type{P.Value} - & \text{fee} \\ %= transValue (inject @(Mary.Value (Crypto era)) fee), \type{P.txInfoFee} - & ~~~~ \times \type{P.Value} - & \text{mint field} \\ % = transValue forge, \type{P.txInfoMint} - & ~~~~ \times \seqof{\type{P.DCert}} - & \text{list of certificates} \\ %= foldr (\c ans \to transDCert c : ans) [] (certs' tbody), \type{P.txInfoDCert} - & ~~~~ \times (\type{P.StakingCredential} \times \Integer) - & \text{reward withdrawal} \\ % = Map.toList (transWdrl (wdrls' tbody)), \type{P.txInfoWdrl} - & ~~~~ \times \type{P.POSIXTimeRange} - & \text{validity interval in POSIX time} \\ % = timeRange, \type{P.txInfoValidRange} - & ~~~~ \times \seqof{\type{P.PubKeyHash}} - & \text{key hashes of required signatures} \\ % = map transKeyHash (Set.toList (reqSignerHashes' tbody)), \type{P.txInfoSignatories} - & ~~~~ \times \seqof{(\DataHash \times \Data)} - & \text{list of datums and their hashes} \\ % = map transDataPair datpairs, \type{P.txInfoData} - & ~~~~ \times \type{P.TxId} % = (transSafeHash (hashAnnotated @(Crypto era) tbody)) \type{P.txInfoId} - & \text{transaction ID} - \end{align*} - \caption{TxInfo and Constituent Types} - \label{fig:txinfo-types-two} -\end{figure*} - -\begin{figure*}[htb] - \emph{Abstract Types} - \begin{equation*} - \begin{array}{r@{~\in~}l@{\quad\quad\quad\quad}r} - \var{scs} & \type{Seconds} & \text{time in seconds} - \end{array} - \end{equation*} - % - \emph{Abstract Conversion Functions} - \begin{align*} - & \fun{utcTimeToPOSIXSeconds} \UTCTime \to \type{Seconds} \\ - & \text{Convert UTC Time to seconds} - \end{align*} - % - \emph{Rounding Functions} - \begin{align*} - & \fun{truncate} \type{Fraction} \to \Integer \\ - & \text{Round a fractional value to the nearest integer} - \end{align*} - % - \emph{Slot to Time Conversion} - \begin{align*} - & \fun{slotToPOSIXTime} \in \PParams \to \EpochInfo \to \SystemStart \to \Slot \to \type{P.POSIXTime} \\ - & \fun{slotToPOSIXTime}~pp~ei~sysS~vs~=~\\ - & ~~~~\fun{truncate}~ ((\fun{utcTimeToPOSIXSeconds}~(\fun{epochInfoSlotToUTCTime}~pp~ei~sysS~vs))~*~1000) \\ - & \text{Translate validity interval to a POSIX time range} - \end{align*} - \caption{Types and Functions Used in Time Conversion} - \label{fig:time-funcs} -\end{figure*} - -\begin{figure*}[htb] - \emph{Conversion Functions} - \begin{align*} - & \fun{toPlutusType}_{\Addr} \in \Addr \to \type{P.Address} \\ - & \fun{toPlutusType}_{\Addr} ~a = \begin{cases} - \Nothing & \text{if}~a \in \AddrBS \\ - (ob,~st) & \text{if}~a = (\wcard, ob_P,~st_P) - \end{cases} \\ - & \text{Address translation} - \nextdef - & \fun{toPlutusType}_{\Value} \in \Value \to \type{P.Value} \\ - & \fun{toPlutusType}_{\Value}~ (c,~ mp) = \{~ pid_P\mapsto (aid_P \mapsto q_P) \mid pid \mapsto (aid \mapsto q) \in mp ~\} \\ - & ~~~~\cup \{~\type{P.adaSymbol}\mapsto (\type{P.adaToken} \mapsto c_P) ~\} \\ - & \text{Value translation} - \nextdef - & \fun{toPlutusType}_{\TxOut} \in \TxOut \to \type{P.TxOut} \\ - & \fun{toPlutusType}_{\TxOut}~ (a, v, h) = (a_P, v_P, h_P) \\ - & \text{Output translation} - \nextdef - & \fun{toPlutusType}_{\DCert} \in \DCert \to \type{P.DCert} \\ - & \fun{toPlutusType}_{\DCert}~\var{c} = \begin{cases} - (\fun{poolId}~\var{c},~\fun{poolVrf}~\var{c}) & \text{if } \var{c}\in \DCertRegPool \\ - c_P & \text{otherwise} - \end{cases} \\ - & \text{Certificate translation} - \nextdef - & \fun{transVITime} \in \PParams \to \EpochInfo \to \SystemStart \to \ValidityInterval \to \type{P.POSIXTimeRange} \\ - & \fun{transVITime} ~pp ~ei~ sysS~ (vs,~ vf) = \\ - & ~~~~ \begin{cases} - \type{P.always} & \text{if } vs = \Nothing ~\wedge~ vf = \Nothing \\ - \type{P.to}~(\fun{slotToPOSIXTime}~pp~ei~sysS~vf) & \text{if } vs = \Nothing ~\wedge~ vf \neq \Nothing \\ - \type{P.from}~(\fun{slotToPOSIXTime}~pp~ei~sysS~vs) & \text{if } vs \neq \Nothing ~\wedge~ vf = \Nothing \\ - (\fun{slotToPOSIXTime}~pp~ei~sysS~vs,~\fun{slotToPOSIXTime}~pp~ei~sysS~vf) & \text{if } vs \neq \Nothing ~\wedge~ vf \neq \Nothing \\ - \end{cases} \\ - \end{align*} - \caption{TxInfo Constituent Type Translation Functions} - \label{fig:txinfo-translations} -\end{figure*} - -\begin{figure*}[htb] - \begin{align*} - & \fun{validScript} \in \Script \to \Bool \\ - & \fun{validScript} ~sc = \begin{cases} - \True & \text{if $sc \in \ScriptPhOne$} \\ - \type{P.validateScript} ~sc & \text{if $sc \in \ScriptPhTwo$} - \end{cases} \\ - & \text{Checks if a script is constructed correctly} - \end{align*} - \caption{Script and Data construction correctness checks} - \label{fig:data-script-check} -\end{figure*} - -\subsection{Building Transaction Summary} - -The functions in Figure \ref{fig:txinfo-funcs} are needed to build a $\Data$ summary of a transaction. -The function $\type{P.toData}$ converts a Plutus-library element -into a $\Data$ element. - -\textbf{The $\fun{txInfo}$ Function.} -$\fun{txInfo}$ summarizes all the necessary transaction and chain state information - that needs to be passed to the script interpreter. Below, we specify how to - represent relevant transaction data in terms of a Plutus - library-defined type. The $\fun{txInfo}$ function builds this representation. - - The $\Language$ argument - is required because different languages have different expectations of the - format and contents of the $\TxInfo$ summary. The $\EpochInfo$ and $\SystemStart$ - arguments are needed for translating slot numbers to POSIX time. - - Note that $\fun{txInfo}$ has a $\UTxO$ argument. Even though the full ledger UTxO - is passed to it, we define this function in such a way that the only - entries in the ledger UTxO map that a Plutus script - actually sees via the argument $\fun{txInfo}$ builds are the ones corresponding to the transaction - inputs (ie. its realized inputs). This is done in order to maintain the locality of - evaluation. For details, see the deterministic script evaluation property~\ref{prop:fixed-inputs}. - -\textbf{The $\fun{valContext}$ Function.} - $\fun{valContext}$ constructs the \emph{validation context}, also referred to as the - script context. A validation context is - a $\Data$ element which encodes both the summary of the transaction and ledger information - (this is supplied by the $\fun{txInfo}$ summarization function), and the script purpose. - -\begin{figure} - \emph{Plutus Library Functions} - % - \begin{align*} - &\fun{P.toData} \in \type{P.T} \to \Data \\ - &\text{Constructs a Data element from a Plutus-library-type element of type P.T} - \end{align*} - \emph{Ledger Functions} - % - \begin{align*} - &\fun{txInfo} \in \Language \to \PParams \to \EpochInfo \to \SystemStart \to \UTxO \to \Tx \to \TxInfo \\ - &\fun{txInfo}~ pp~ ei~ sysS~ utxo~tx = \\ - & ~~~~ (\{~(\var{txin}_P, \var{txout}_P) \mid \var{txin}\in \fun{txinputs}~tx,~(\var{txin}\mapsto\var{txout})\in\var{utxo}~\}, \\ - & ~~~~ \{~\var{tout}_P\mid\var{tout}\in\fun{txouts}~{tx}~\} , \\ - & ~~~~ (\fun{inject}~(\fun{txfee}~{tx}))_P, \\ - & ~~~~ (\fun{mint}~{tx})_P , \\ - & ~~~~ [~ c_P \mid c \in \fun{txcerts}~{tx} ~] , \\ - & ~~~~ \{~(s_P,~c_P)\mid s\mapsto c \in \fun{txwdrls}~{tx}~\} , \\ - & ~~~~ \fun{transVITime} ~pp ~ei~ sysS~ (\fun{txvldt}~tx) , \\ - & ~~~~ \{~k_P\mid k \in \fun{reqSignerHashes}~{tx}~\} , \\ - & ~~~~ \{~(h_P,~d_P)\mid h\mapsto d \in \fun{txdats}~{tx}~\} , \\ - & ~~~~ (\fun{txid}~{tx})_P) \\ - &\text{Summarizes transaction data} - \nextdef - &\fun{valContext} \in \type{P.TxInfo} \to \ScriptPurpose \to \Data \\ - &\fun{valContext}~\var{txinfo}~\var{sp} = \fun{P.toData}~(txinfo,~sp_P) \\ - &\text{Pairs transaction data with a script purpose} - \end{align*} - \caption{Transaction Summarization Functions} - \label{fig:txinfo-funcs} -\end{figure} diff --git a/eras/alonzo/formal-spec/utxo.tex b/eras/alonzo/formal-spec/utxo.tex deleted file mode 100644 index cbd936a5f4a..00000000000 --- a/eras/alonzo/formal-spec/utxo.tex +++ /dev/null @@ -1,915 +0,0 @@ -\section{UTxO} -\label{sec:utxo} - -\begin{figure*}[htb] - \emph{Functions} - % - \begin{align*} - & \fun{isTwoPhaseScriptAddress} : \Tx \to \Addr \to \Bool \\ - & \fun{isTwoPhaseScriptAddress}~tx~a = \\ - &\quad\begin{cases} - \True & a \in \AddrScr \land \fun{validatorHash}~a \mapsto s \in \fun{txscripts} (\fun{txwits}~tx) \land s \in \ScriptPhTwo \\ - \False & \text{otherwise} - \end{cases} - \nextdef - & \fun{totExUnits} : \Tx \to \ExUnits \\ - & \fun{totExUnits}~\var{tx} = \sum_{r \in \fun{txrdmrs}~tx} \fun{exunits}~r - \nextdef - & \fun{feesOK} : \PParams \to \Tx \to \UTxO \to \Bool \\ - & \fun{feesOK}~\var{pp}~tx~utxo~= \\ - &~~ \minfee{pp}~{tx} \leq \txfee{txb} \wedge (\fun{txrdmrs}~tx \neq \emptyset \Rightarrow \\ - &~~~~~~(\forall (a, \wcard, \wcard) \in \fun{range}~(\fun{collateral}~{txb} \restrictdom \var{utxo}), a \in \AddrVKey) \\ - &~~~~~~\wedge~ \fun{isAdaOnly}~\var{balance} \\ - &~~~~~~\wedge~ \var{balance}*100 \geq \txfee{txb} * (\fun{collateralPercent}~pp) \\ - &~~~~~~\wedge~ \fun{collateral}~{tx} \neq \emptyset) \\ - &~~ \where \\ - & ~~~~~~~ \var{txb} = \txbody{tx} \\ - & ~~~~~~~ \var{balance} = \fun{ubalance}~(\fun{collateral}~{txb} \restrictdom \var{utxo}) - \nextdef - & \fun{cbalance} : \UTxO \to \Coin \\ - & \fun{cbalance}~\var{utxo} = \fun{valueToCoin}~(\fun{ubalance}~\var{utxo}) - \nextdef - & \fun{txscriptfee} : \Prices \to \ExUnits \to \Coin \\ - & \fun{txscriptfee}~(pr_{mem}, pr_{steps})~ (\var{mem, steps}) - = \fun{ceiling}~(\var{pr_{mem}}*\var{mem} + \var{pr_{steps}}*\var{steps}) - \nextdef - &\fun{minfee} : \PParams \to \Tx \to \Coin \\ - &\fun{minfee}~\var{pp}~\var{tx} = \\ - &~~(\fun{a}~\var{pp}) \cdot \fun{txSize}~\var{tx} + (\fun{b}~\var{pp}) + - \hldiff{\fun{txscriptfee}~(\fun{prices}~{pp})~(\fun{totExunits}~(\fun{txbody}~{tx}))} - \end{align*} - \caption{Functions related to fees and collateral} - \label{fig:functions:utxo} -\end{figure*} - -We have added or changed several functions that deal with fees and collateral as shown in Figure \ref{fig:functions:utxo}. - -\begin{itemize} - \item $\fun{isTwoPhaseScriptAddress}$ is a predicate that checks - whether an address is used as a script address with a phase-2 - script. - \item $\fun{totExunits}$ calculates the total $\ExUnits$ in a transaction by summing - the per-script units stored in the indexed redeemer structure - \item The predicate $\fun{feesOK}$ checks whether the transaction is - paying the necessary fees, and that it does it correctly. That is, it checks that: - \begin{enumerate}[label=({\roman*})] - \item the fee amount that the transaction states it is paying suffices to cover - the minimum fee that the transaction is obligated to pay; and if the transaction uses phase-2 scripts, that - \item the collateral inputs refer only to UTxOs with key-hash addresses; - \item all the collateral inputs refer to UTxOs containing Ada only and no other kinds of token; and - \item the collateral provided is sufficient to cover the percentage of the - transaction fee amount specified by the protocol parameter $\fun{collateralPercent}$ - \item the set of collateral inputs is non-empty - \end{enumerate} - Note that checking that a transaction is carrying redeemers is the most simple way to - check that it is carrying phase-2 scripts. A separate check is done in the rule prior to - calling the $\fun{feesOK}$ function that ensure that this is the case. - \item $\fun{txscriptfee}$ calculates the fee that a transaction must pay for script - execution based on the amount of $\ExUnits$ it has budgeted, and the prices in the current protocol parameters - for each component of $\ExUnits$. The prices are expressed as rational numbers, - so we take the ceiling of the result of the calculation to get an integer-valued $\Coin$. - \item The minimum fee calculation, $\fun{minfee}$, includes the script - fees that the transaction is obligated to pay in order to run its scripts. -\end{itemize} - -Note that when creating a transaction, the wallet is responsible for -determining the fees. Thus, it also has to execute the phase-2 scripts -and include the fees for their execution. - -\subsection{Combining Scripts with Their Inputs} -\label{sec:scripts-inputs} - -Figure~\ref{fig:functions:script1} shows the functions that are needed to -retrieve all the data that is relevant to Plutus script validation. -These include: - -\begin{itemize} -\item $\mathsf{EI}$ is a global constant needed to compute the current system time. -\item $\mathsf{SysSt}$ is another global constant needed to compute the system time. -\item $\UTCTime$ is the system time (UTC time zone) -\item - $\ScriptPurpose$ is a sum type of all parts of a transaction that may - require a script witness to validate. Note that this contains the data - (eg. a certificate $c \in \fun{txcerts}~{txb}$, - or a transaction input $tin \in \fun{txcerts}~{txb}$) of the item being validated, - not just a tag indicating the type. -\item - $\fun{indexof}$ is a helper function that finds the index of a given certificate, value, input, or - withdrawal in a list, finite map, or set of such objects. The implementation is not given - directly, but we give a high-level description of how it relies on the underlying ordering. - For each of these, it computes the index as follows: - \begin{itemize} - \item certificates in the $\DCert$ list are indexed in the order in which they arranged - in the (full, unfiltered) list of certificates inside the transaction - \item the index of a reward account $\var{ract}$ in the reward withdrawals map is - the index of $\var{ract}$ as a key in the (unfiltered) map. The keys of the $\Wdrl$ - map are arranged in the order defined on the $\RewardAcnt$ type, which is a lexicographical - order on the pair of the $\Network$ and the $\Credential$. - \item the set of inputs is ordered according to the lexicographical order on - the type $\TxIn$, and the index is the index of the list obtained from this ordering. - \item as with the inputs, the set of policy IDs is ordered lexicographically and the - index is derived from the list obtained from this ordering. - \end{itemize} - Note that in all the orderings above, long and short lex are one in the same, since - for each of the ordered types, all the terms of that type have the same length. -\item - $\fun{indexedRdmrs}$ indexes the pair of a redeemer and an $\ExUnits$ value - for a given script by its script purpose (eg. the input, or certificate, etc.), - and $\Nothing$ if no associated data is found. - It uses the script purpose to generate the $\RdmrPtr$ key, - then find the corresponding entry in the redeemer structure. - \item $\fun{rdptr}$ builds a redeemer pointer from a script purpose by - setting the tag according to the type of the script purpose, and the index - according to the placement of script purpose inside its container (ie. by using $\fun{indexof}$) -\end{itemize} - - -\begin{figure}[htb] - \emph{Global Constants} - % - \begin{equation*} - \begin{array}{r@{~\in~}l@{}lr} - \mathsf{EI} - & \EpochInfo - & \text{Alonzo epoch info} \\ - \mathsf{SysSt} - & \SystemStart - & \text{System start time} - \end{array} - \end{equation*} - \emph{Abstract Types} - % - \begin{equation*} - \begin{array}{r@{~\in~}l@{}lr} - \var{tm} - & \UTCTime - & \text{System time} - \end{array} - \end{equation*} - % - \emph{Derived types} - % - \begin{equation*} - \begin{array}{r@{~\in~}l@{\qquad=\qquad}lr} - \var{sp} - & \ScriptPurpose - & \PolicyID \uniondistinct \TxIn \uniondistinct \AddrRWD \uniondistinct \DCert -% & \text{item the script is validated for} - \end{array} - \end{equation*} - % - \emph{Abstract functions} - \begin{align*} - &\fun{indexOf} : \DCert \to \seqof{\DCert} \to \Ix^?\\ - &\fun{indexOf} : \AddrRWD \to \Wdrl \to \Ix^?\\ - &\fun{indexOf} : \TxIn \to \powerset{\TxIn} \to \Ix^?\\ - &\fun{indexOf} : \PolicyID \to \powerset{\PolicyID} \to \Ix^? - \end{align*} - % - \emph{Indexing functions} - \begin{align*} - &\fun{indexedRdmrs} : \Tx \to \ScriptPurpose \to (\Redeemer~\times~\ExUnits)^?\\ - &\fun{indexedRdmrs}~tx~sp = - \begin{cases} - r & (\fun{rdptr}~txb~sp)~ \mapsto r \in \fun{txrdmrs}~(\fun{txwits}~{tx}) \} \\ - \Nothing & \text{otherwise} - \end{cases} \\ - & ~~\where \\ - & ~~\quad \var{txb} = \txbody{tx} - \nextdef - &\fun{rdptr} :\TxBody~\to~\ScriptPurpose~ \to~ \RdmrPtr^? \\ - &\fun{rdptr}~txb~sp~ = - \begin{cases} - (\mathsf{Cert},\fun{indexOf}~\var{sp}~(\fun{txcerts}~{txb})) & \var{sp} \in \DCert \\ - (\mathsf{Rewrd},\fun{indexOf}~\var{sp}~(\fun{txwdrls}~{txb})) & \var{sp} \in \AddrRWD \\ - (\mathsf{Mint},\fun{indexOf}~\var{sp}~(\dom (\fun{mint}~{txb}))) & \var{sp} \in \PolicyID \\ - (\mathsf{Spend},\fun{indexOf}~\var{sp}~(\fun{txinputs}~{txb})) & \var{sp} \in \TxIn - \end{cases} - \end{align*} - \caption{Indexing script and data objects} - \label{fig:functions:script1} -\end{figure} - - -\subsection{Plutus Script Validation} -Figure~\ref{fig:defs:functions-valid} shows the abstract functions that are used for script validation. -In this figure, the function $\fun{txInfo}$, which creates a summary of the transaction -and ledger state as a $\TxInfo$, is defined in Section \ref{sec:txinfo}, as is the $\TxInfo$ -type itself. -The function $\fun{valContext}$, also defined in \ref{sec:txinfo}, constructs the -validation context from the $\TxInfo$ summary. - -\begin{itemize} -\item $\fun{epochInfoSlotToUTCTime}$ translates a slot number to system time if possible. -This translation is implemented by the consensus algorithm (not the ledger), and requires -two additional parameters to do this. Note that this does not depend on the clock of the node. - -If it is not possible to do this translation, $\Nothing$ is returned. -The reason it may not be possible to translate is that the slot number -is too far in the future for the system to accurately -predict the exact time to which it refers. - -\item - $\fun{runPLCScript}$ validates Plutus scripts. It takes the following - arguments: - \begin{itemize} - \item A cost model, that is used to calculate the $\ExUnits$ that are needed for script execution; - \item A script to execute; - \item the execution unit budget; and - \item A list of terms of type $\Data$ that will be passed to the script. - \end{itemize} - It outputs the validation result. - Note that script execution stops if the full budget has been spent before validation is complete. - It is left abstract because it is implemented as part of the phase-1 script interpreter, not the ledger. - The interpreter called depends on the language of the script. -\end{itemize} - - -\textbf{Slot to time translation.} -One of the inputs to scripts is the transaction validity interval (recall here that -they do not actually see the current slot number). The length of a -slot may change in a future era. In this case, for a script written in a previous -era, if we were to pass the transaction validity interval expressed as slot numbers, -we get that - -\begin{itemize} - \item the script logic is expressed in terms of slot numbers - which likely assume the slot length of the era in which it was created - \item the slot numbers in the validity interval of the transaction are used - assuming slot length of the current era -\end{itemize} - -Therefore, the slot numbers inside the contract and the slot numbers in the transaction -map differently onto points in time. The ledger does not have access to data (or conversion functions) -that is needed to convert transaction validity interval slots numbers to slots numbers -that correspond to the contracts world view. To address this, we decided to pass -phase-2 contracts (in all languages and all eras) the system time instead of slot numbers. -The conversion function is implemented by consensus (see~\cite{cardano_consensus}), -which has the information to do this correctly for - -\begin{itemize} - \item all slots prior to the current slot - \item a number of slots after the current slot (this number is determined by - the consensus's forecast window) -\end{itemize} - -Note that because of this potential slot length change issue, Plutus scripts will -not receive any information in terms of slot numbers (no phase-1 scripts, no -validity intervals as slots, and not the current slot). Phase-1 timelock scripts -continue to operate on validity interval data expressed as slot numbers, and are -therefore vulnerable to the consequences of changing the slot length. - -\textbf{Validation context construction.} - As additional phase-2 scripting languages become supported in the future, scripts of different - languages may expect different (or differently structured) transaction and ledger data summary. - The $\fun{txInfo}$ function will be implemented differently - for each new language. So, the construction is - dependent on both the language of the script being validated and the ledger/transaction structure - of the current era. - - In order to ensure that running scripts of all script languages is supported indefinitely across - future eras, the $\fun{txInfo}$ function must be total. - Recall here that while \emph{running} all scripts must be supported across - all future ledger changes, - it is not a requirement that every script must \emph{validate} within the context of some transaction. - - The $\fun{txInfo}$ output is computed once for the whole transaction. The output of the function - $\fun{valContext}$ is computed separately for each script purpose. - The script purpose is passed to it - to allow the script to reference itself via its hash, and to be aware of what it is validating. - -\textbf{Know your contract arguments.} - A Plutus validator script may receive either a list of three terms of type $\Data$, in case it validates the spending of script outputs - or two terms (redeemer and context, with no datum), for all other uses. - Script authors must keep this in mind when writing scripts, since the ledger call to the interpreter is oblivious to what - arguments are required. - - The following is a summary of what arguments are required for what scripts: - \begin{itemize} - \item Datum objects are required for all output-locking phase-2 scripts. That is, a - phase-2 script-locked output that does not include a datum hash is unspendable. - \item Non-output locking scripts do not expect datum objects - that is, it is not possible to pass - a datum to a script used for another purpose (certificate, etc.). - \item Redeemers are required for all phase-2 scripts. - \end{itemize} - - If a transaction carrying a Plutus script is missing any inputs required - to run a script, we have specified this to be a phase 1 - ledger failure, and the script is never run (even if its code does not look at - the missing input). The reason for this approach is that - not passing all inputs results in a script never actually getting run, - rather than running and failing. - -\begin{figure*}[htb] - \emph{Abstract Script Validation Functions} - % - \begin{align*} - &\fun{epochInfoSlotToUTCTime} : \EpochInfo \to \SystemStart \to \Slot \to \UTCTime^? \\ - &\text{Translate slot number to system time or fail} \\~\\ - &\fun{runPLCScript} : \CostMod \to \ScriptPlutus \to \ExUnits \to \seqof{\Data} \to - \IsValid \\ - &\text{Validate a Plutus script, taking resource limits into account} - \end{align*} - % - \emph{Notation} - % - \begin{align*} - \llbracket \var{script_v} \rrbracket_{\var{cm},\var{eu}}~\var{d} - &=& \fun{runPLCScript}~{cm} ~\var{script_v}~\var{eu}~\var{d} - \end{align*} - \caption{Script Validation, cont.} - \label{fig:defs:functions-valid} -\end{figure*} - -Figure \ref{fig:functions:script2} contains the functions used to -match scripts with their corresponding inputs and pass them to the -evaluator. - -\begin{itemize} - \item $\fun{getDatum}$ looks for a datum associated with a given script purpose. Note that - only an $\TxIn$-type script purpose can result in finding an associated datum hash. - If no datum is found, an empty list is returned. A list containing the found datum - is returned otherwise. - - \item $\fun{collectTwoPhaseScriptInputs}$ builds a list of scripts, paired with their - inputs. Specifically, each tuple in the list contains : - - \begin{itemize} - \item the script, only if it is a phase-2 one; - - \item a list of the following script arguments, in this order: - - \begin{itemize} - \item the hash of the required datum, if any (returned by the $\fun{getDatum}$ function, - wrapped in a list type instead of a $\Data^?$ type). - - \item a redeemer, returned as the first term of the pair by the $\fun{indexedRdmrs}$ function. - and an $\ExUnits$ amount. We are assuming this value is not $\Nothing$ here - because that must have already been checked by the UTXOW rule. - - \item the validation context, built by the $\fun{valContext}$ function using - the transaction summary built by $\fun{txInfo}$, together with the current item being validated; - \end{itemize} - - \item an $\ExUnits$ amount, which is the second term of the pair returned by the $\fun{indexedRdmrs}$ function. - - \item the cost model for $\PlutusVI$, specified in the protocol parameters - \end{itemize} - - \item $\fun{evalScripts}$ evaluates a whole list of scripts. For $\PlutusVI$ scripts, - it evaluates them paired with all their - inputs by calling the phase-2 script validator function, $\fun{runPLCScript}$ (see - \ref{sec:txinfo} for details). - For phase-1 (timelock) scripts, it calls $\fun{evalTimelock}$. This case - is unused though, as - the list of scripts and inputs that gets passed to the this function is constructed - to contain only Plutus scripts. So, phase-1 scripts do not get evaluated twice. -\end{itemize} - -Note that no ``checks'' are performed within these functions (though they may be, -in the implementation). -Missing validators, missing inputs, incorrect hashes, the wrong type of script etc, -are caught during the application of the UTXOW rule (before these functions are ever applied). - -\begin{figure}[htb] - \begin{align*} - & \fun{getDatum} : \Tx \to \UTxO \to \ScriptPurpose \to \seqof{\Datum} \\ - & \fun{getDatum}~{tx}~{utxo}~{sp} = - \begin{cases} - [\var{d}] & \var{sp} \mapsto (\_, \_, h_d) \in \var{utxo}, \var{h_d}\mapsto \var{d} \in \fun{txdats}~(\fun{txwits}~tx) \\ - \epsilon & \text{otherwise} - \end{cases} - \nextdef - & \fun{collectTwoPhaseScriptInputs} : \EpochInfo \to \SystemStart \to \PParams \to \Tx \to \UTxO \to \\ - & ~~~~ \seqof{(\Script \times \seqof{\Data} \times \ExUnits \times \CostMod)} \\ - & \fun{collectTwoPhaseScriptInputs} ~\var{ei}~\var{sysSt}~\var{pp}~\var{tx}~ \var{utxo} = \\ - & ~~\fun{toList} \{ (\var{script}, (\fun{getDatum}~tx~utxo~sp ; \var{rdmr};\fun{valContext}~\var{txinfo}~\var{sp}), \var{eu}, \var{cm}) \mid \\ - & ~~~~(\var{sp}, \var{scriptHash}) \in \fun{scriptsNeeded}~{utxo}~{(\txbody{tx})}, \\ - & ~~~~\var{scriptHash}\mapsto \var{script}\in \fun{txscripts}~(\fun{txwits}~tx), \\ - & ~~~~(\var{rdmr}, \var{eu}) := \fun{indexedRdmrs}~tx~sp, \\ - & ~~~~\fun{language}~{script} \mapsto \var{cm} \in \fun{costmdls}~{pp}, \\ - & ~~~~\var{script} \in \ScriptPhTwo \} \\ - & \where \\ - & ~~~~~~~ \var{txinfo} = \fun{txInfo}~\var{ei}~\var{sysSt}~(\fun{language}~{script})~{pp}~\var{utxo}~\var{tx} - \nextdef - & \fun{evalScripts} : \Tx \times \seqof{(\Script \times \seqof{\Data} \times \ExUnits \times \CostMod)} \to \IsValid \\ - & \fun{evalScripts}~\var{tx}~\epsilon = \True \\ - & \fun{evalScripts}~\var{tx}~((\var{sc}, \var{d}, \var{eu}, \var{cm});\Gamma) = \\ - & \begin{cases} - \llbracket sc \rrbracket_{cm,\var{eu}} d \land \fun{evalScripts}~\var{tx}~\Gamma & \var{sc}\in\ScriptPlutus \\ - \fun{evalTimelock}~\var{tx}~\var{sc} \land \fun{evalScripts}~\var{tx}~\Gamma & \var{sc}\in\ScriptPhOne - \end{cases} - \end{align*} - \caption{Scripts and their arguments} - \label{fig:functions:script2} -\end{figure} - -\subsection{Two-Phase Transaction Validation for Phase-2 Scripts} -\label{sec:two-phase} - -Transactions are validated in two phases: -the first phase consists of every aspect of transaction validation apart from executing the phase-2 scripts; and -the second phase involves actually executing those scripts. -This ensures that users pay for the computational resources that are needed to validate phase-2 scripts, even -if script validation fails. % -In order to handle script execution, an additional transition system is used, called UTXOS. -It performs the appropriate UTxO state changes, based on the -value of the $\IsValid$ tag, which it checks using the $\fun{evalScripts}$ function. - -In general, there is no way to check \emph{a-priori} that the budget that has been supplied is sufficient for the transaction. -This can only be done by actually running the scripts. From the perspective of the ledger, there is no difference -between a script that exhausts the $\ExUnits$ budget during validation, and one that fails to validate. - -\textbf{Transaction integrity and charging for failing scripts.} -If a transaction contains a failing script, the only change to the ledger that is made -is that the collateral is collected into the fee pot. It is important to note here -that it can be the case that the only signatures on a transaction are those -of the keys for the collateral UTxOs (but this must include at least one signature). - -The implication of this is that the collateral key owners may be the only -users that attest to the integrity of the data in the body of the transaction. These -same key owners, however, are also the only users who stand to lose money if the -transaction is modified in some way that results in phase-2 failure. -Transactions with the same body will necessarily have the same outcome of phase-2 -script validation (we give the details in the deterministic script validation property, \ref{prop:fixed-inputs}). -Therefore, signing the body ensures any modification to any part of a transaction (including -witnesses, etc.) or update to the ledger state that affect the transaction's validity will result in a phase-1 failure, -and no collateral collected. The implication of this is that -the collateral-locking keys have full control over the outcome of phase-2 validation. - - -\textbf{The $\IsValid$ Tag. } -It is always in the interest of the slot leader to have the new block validate, -and for it to contain only valid transactions. This motivates the -slot leader to: - -\begin{enumerate} - \item Correctly apply the $\IsValid$ tag; - \item Include all transactions that validate within the block, - \textit{even when there is a 2nd phase script validation failure}; - \item Exclude any transactions that are phase-1 invalid -\end{enumerate} - -One important reason for adding the validation tag -to a transaction is that re-applying blocks will not require repeat -execution of scripts in the transactions inside a block, which would increase execution costs. -In fact, when replaying -blocks, all the witnessing information can be thrown away. - -\subsection{The UTXOS transition system} -\label{sec:utxo-state-trans} - -We have defined a separate transition system, UTXOS, to represent the two distinct -UTxO state changes: i) when all the scripts in a transaction validate; and -ii) when at least one fails to validate. Its transition types -are identical to the UTXO transition (Figure -\ref{fig:ts-types:utxo-scripts}). - -\begin{figure}[htb] - \emph{State transitions} - \begin{equation*} - \_ \vdash - \var{\_} \trans{utxos}{\_} \var{\_} - \subseteq \powerset (\UTxOEnv \times \UTxOState \times \Tx \times \UTxOState) - \end{equation*} - % - \caption{UTxO script state update types} - \label{fig:ts-types:utxo-scripts} -\end{figure} - -There are two rules, corresponding to the two possible state changes of the -UTxO state in the UTXOS transition system (Figure~\ref{fig:rules:utxo-state-upd}). -% -In both cases, the $\fun{evalScripts}$ function is called upon to verify that the $\IsValid$ -tag has been applied correctly. The function $\fun{collectTwoPhaseScriptInputs}$ is used to build -the input list $\var{sLst}$ for the $\fun{evalScripts}$ function. -% -The first rule -applies when the validation tag is $\True$. -In this case, the states of the UTxO, fee - and deposit pots, and updates are updated exactly as in the current Shelley - ledger spec. -% - The second rule - applies when the validation tag is $\False$. - In this case, the UTxO state changes as follows: - - \begin{enumerate} - \item All the - UTxO entries corresponding to the collateral inputs are removed; - - \item The sum total of the value of the collateral UTxO entries - is added to the fee pot. - \end{enumerate} - - -\begin{figure}[htb] - \begin{equation} - \inference[Scripts-Yes] - { - \var{txb}\leteq\txbody{tx} & - \var{sLst} := \fun{collectTwoPhaseScriptInputs}~\mathsf{EI}~\mathsf{SysSt}~\var{pp}~\var{tx}~\var{utxo} - \\~\\ - { - \begin{array}{r} - \var{slot} \\ - \var{pp} \\ - \var{genDelegs} \\ - \end{array} - } - \vdash \var{pup} \trans{\hyperref[fig:rules:update]{ppup}}{\fun{txup}~\var{tx}} \var{pup'} - \\~\\ - \var{refunded} \leteq \keyRefunds{pp}{txb} - \\ - \var{depositChange} \leteq - \fun{totalDeposits}~{pp}~\var{poolParams}~(\txcerts{txb})~-~\var{refunded} - \\~\\ - \fun{isValid}~\var{tx} = \fun{evalScripts}~\var{tx}~\var{sLst} = \True - } - { - \begin{array}{l} - \var{slot}\\ - \var{pp}\\ - \var{poolParams}\\ - \var{genDelegs}\\ - \end{array} - \vdash - \left( - \begin{array}{r} - \var{utxo} \\ - \var{deposits} \\ - \var{fees} \\ - \var{pup} \\ - \end{array} - \right) - \trans{utxos}{tx} - \left( - \begin{array}{r} - \varUpdate{\var{(\txins{txb} \subtractdom \var{utxo}) \cup \outs{txb}}} \\ - \varUpdate{\var{deposits} + \var{depositChange}} \\ - \varUpdate{\var{fees} + \txfee{txb}} \\ - \varUpdate{\var{pup'}} \\ - \end{array} - \right) \\ - } - \end{equation} - \begin{equation} - \inference[Scripts-No] - { - \var{txb}\leteq\txbody{tx} & - \var{sLst} := \fun{collectTwoPhaseScriptInputs}~\mathsf{EI}~\mathsf{SysSt}~\var{pp}~\var{tx}~\var{utxo} - \\ - ~ - \\ - \fun{isValid}~\var{tx} = \fun{evalScripts}~\var{tx}~\var{sLst} = \False - } - { - \begin{array}{l} - \var{slot}\\ - \var{pp}\\ - \var{poolParams}\\ - \var{genDelegs}\\ - \end{array} - \vdash - \left( - \begin{array}{r} - \var{utxo} \\ - \var{deposits} \\ - \var{fees} \\ - \var{pup} \\ - \end{array} - \right) - \trans{utxos}{tx} - \left( - \begin{array}{r} - \varUpdate{\var{\fun{collateral}~{txb} \subtractdom \var{utxo}}} \\ - \var{deposits} \\ - \varUpdate{\var{fees} + \fun{cbalance}~(\fun{collateral}~{txb}\restrictdom \var{utxo})} \\ - \var{pup} \\ - \end{array} - \right) - } - \end{equation} - \caption{State update rules} - \label{fig:rules:utxo-state-upd} -\end{figure} - -Figure \ref{fig:rules:utxo-shelley} shows the $\type{UTxO-inductive}$ -transition rule for the UTXO transition type. -This rule has the following changes: - -\begin{enumerate} - \item The transaction pays fees and supplies collateral Ada correctly, as defined above; - - \item The end of the transaction validity interval is translatable into - system time (ie. within the consensus's forecast window). This is checked - by $\fun{epochInfoSlotToUTCTime}$, which returns $\Nothing$ if the end slot is outside. - Note that we do not need to check that the start slot can be converted to - time, because all pasts slots can be converted into time correctly. - - \item $\fun{coinsPerUTxOWord}$ is now a protocol parameter explicitly, the - $\fun{utxoEntrySize}$ calculation is defined differently than for ShelleyMA - (see Section~\ref{sec:value-size}) - - \item $\fun{maxValSize}$ is now also a protocol parameter (not a constant). - It represents a size (in bytes) of the total transaction - size that the size of a $\Value$ in an output can be. Otherwise, this check is - the same as in ShelleyMA. - - \item The network ID field in the transaction body must match the - network ID constant - - \item The execution unit budget for a transaction is within the maximum - permitted number of units for a transaction; - - \item The number of maximum allowed collateral inputs is not exceeded - - \item The UTXOS state transition is valid (this is the transition that runs the - phase-2 scripts) -\end{enumerate} - -The resulting state transition is defined entirely by the application of the -UTXOS rule. - -\begin{figure}[htb] - \begin{equation}\label{eq:utxo-inductive-shelley} - \inference[UTxO-inductive] - { - \var{txb}\leteq\txbody{tx} & - \fun{ininterval}~\var{slot}~(\fun{txvldt}~{txb}) & - \hldiff{\var{(\wcard, i_f)}\leteq\fun{txvldt}~{tx}} \\~\\ - \hldiff{\Nothing \notin \{\fun{txrdmrs}~\var{tx}, i_f\} \Rightarrow \fun{epochInfoSlotToUTCTime}~\mathsf{EI}~\mathsf{SysSt}~i_f \neq \Nothing} \\ - \txins{txb} \neq \emptyset - & \hldiff{\fun{feesOK}~pp~tx~utxo} - & \txins{txb}~\cup~\fun{collateral}~{txb}~ \subseteq~ \dom \var{utxo} - \\ - \consumed{pp}{utxo}{txb} = \produced{pp}{poolParams}~{txb} - \\~\\ - \mathsf{adaID}\notin \supp {\fun{mint}~tx} \\~\\ - \forall txout \in \txouts{txb}, \\ - \fun{getValue}~txout \geq \fun{inject}~(\hldiff{\fun{utxoEntrySize}~{txout} * \fun{coinsPerUTxOWord}~pp)} \\~ - \\ - \forall txout \in \txouts{txb},\\ - \fun{serSize}~(\fun{getValue}~txout) \leq \hldiff{\fun{maxValSize}~pp} \\~ - \\ - \forall (\wcard\mapsto (a,~\wcard)) \in \txouts{txb}, a \in \AddrBS \Rightarrow \fun{bootstrapAttrsSize}~a \leq 64 \\ - \forall (\wcard\mapsto (a,~\wcard)) \in \txouts{txb}, \fun{netId}~a = \NetworkId - \\ - \forall (a\mapsto\wcard) \in \txwdrls{txb}, \fun{netId}~a = \NetworkId \\ - \hldiff{(\fun{txnetworkid}~\var{txb} = \NetworkId) \vee (\fun{txnetworkid}~\var{txb} = \Nothing)} - \\~\\ - \fun{txsize}~{tx}\leq\fun{maxTxSize}~\var{pp} \\~\\ - \hldiff{\fun{totExunits}~{tx} \leq \fun{maxTxExUnits}~{pp}} & \hldiff{\| \fun{collateral}~{tx} \| \leq \fun{maxCollateralInputs}~{pp}} - \\ - ~ - \\ - \hldiff{{ - \begin{array}{c} - \var{slot}\\ - \var{pp}\\ - \var{poolParams}\\ - \var{genDelegs}\\ - \end{array} - } - \vdash - { - \left( - \begin{array}{r} - \var{utxo} \\ - \var{deposits} \\ - \var{fees} \\ - \var{pup}\\ - \end{array} - \right) - } - \trans{utxos}{\var{tx}} - { - \left( - \begin{array}{r} - \var{utxo'} \\ - \var{deposits'} \\ - \var{fees'} \\ - \var{pup'}\\ - \end{array} - \right) - } - }} - { - \begin{array}{l} - \var{slot}\\ - \var{pp}\\ - \var{poolParams}\\ - \var{genDelegs}\\ - \end{array} - \vdash - \left( - \begin{array}{r} - \var{utxo} \\ - \var{deposits} \\ - \var{fees} \\ - \var{pup}\\ - \end{array} - \right) - \trans{utxo}{tx} - \left( - \begin{array}{r} - \varUpdate{\var{utxo'}} \\ - \varUpdate{\var{deposits'}} \\ - \varUpdate{\var{fees'}} \\ - \varUpdate{\var{pup'}}\\ - \end{array} - \right) - } - \end{equation} - \caption{UTxO inference rules} - \label{fig:rules:utxo-shelley} -\end{figure} - -\subsection{Witnessing} -\label{sec:wits} - -Because of two-phase transaction validation, phase-2 script validation is not part of phase one of transaction witnessing -(it is done in phase 2, once the rest of the transaction is validated). -However, phase-1 script validation does remain part of transaction witnessing. -When witnessing a transaction in phase one, we therefore need to validate only the phase-1 scripts. - -We construct the following helper functions : - -\begin{itemize} - \item $\fun{witsVKeyNeeded}$ is a Shelley function adjusted to include - keys that are specified in the $\fun{reqSignerHashes}$ field of the transaction, - as well as keys locking the UTxOs to which the collateral inputs of the transaction point. - - \item $\fun{scriptsNeeded}$ assembles the all the $\ScriptPurpose$ terms - for validation of every transaction action that requires script validation, - paired with the hashes of corresponding the witnessing scripts. - This function collects hashes of both phase-1 and phase-2 scripts. - - \item $\fun{languages}$ returns the set of (phase-2) script languages - of all the scripts included in the transaction -\end{itemize} - -\begin{figure}[htb] - \begin{align*} - & \hspace{-0.8cm}\fun{witsVKeyNeeded} : \UTxO \to \Tx \to (\KeyHashGen\mapsto\VKey) \to - \powerset{\KeyHash} \\ - & \hspace{-0.8cm}\fun{witsVKeyNeeded}~\var{utxo}~\var{tx}~\var{genDelegs} = \\ - & ~~\{ \fun{paymentHK}~a \mid i \mapsto (a, \wcard) \in \var{utxo},~i\in\fun{txinsVKey}~{tx} \cup \hldiff{\fun{collateral}~{tx}} \} \\ - \cup & ~~ - \{\fun{stakeCred_r}~a\mid a\mapsto \wcard \in \AddrRWDVKey - \restrictdom \txwdrls{tx}\}\\ - \cup & ~~(\AddrVKey \cap \fun{certWitsNeeded}~{tx}) \\ - \cup & ~~\fun{propWits}~(\fun{txup}~\var{tx})~\var{genDelegs} \\ - \cup & ~~\bigcup_{\substack{c \in \txcerts{tx} \\ ~c \in\DCertRegPool}} \fun{poolOwners}~{c} \\ - \cup & ~~\hldiff{\fun{reqSignerHashes}~\var{tx}} - \nextdef - & \hspace{-1cm}\fun{scriptsNeeded} : \UTxO \to \TxBody \to \powerset (\ScriptPurpose \times \ScriptHash) \\ - & \hspace{-1cm}\fun{scriptsNeeded}~\var{utxo}~\var{txb} = \\ - & ~~\{ (\var{i}, \fun{validatorHash}~a) \mid i\in\fun{txinsScript}~{(\fun{txins~\var{txb}})}~{utxo}, i \mapsto (a, \wcard, \wcard) \in \var{utxo} \} \\ - \cup & ~~\{ (\var{a}, \fun{stakeCred_{r}}~\var{a}) \mid a \in \dom (\AddrRWDScr - \restrictdom \fun{txwdrls}~\var{txb}) \} \\ - \cup & ~~\{ (\var{cert}, \var{c}) \mid \var{cert} \in (\DCertDeleg \cup \DCertDeRegKey)\cap\fun{txcerts}~txb, \\ - & ~~~~~~\var{c} \in \cwitness{cert} \cap \AddrScr\} \\ - \cup & ~~\{ (\var{pid}, \var{pid}) \mid \var{pid} \in \supp~(\fun{mint}~\var{txb}) \} - \nextdef - & \hspace{-1cm}\fun{languages} : \TxWitness \to \powerset{\Language} \\ - & \hspace{-1cm}\fun{languages}~\var{txw} = - \{\fun{language}~s \mid s \in \range (\fun{txscripts}~{txw}) \cap \ScriptPhTwo\} - \end{align*} - \caption{UTXOW helper functions} - \label{fig:functions-witnesses} -\end{figure} - -We have made the following changes and additions to the UTXOW preconditions: - -\begin{itemize} - -\item All the phase-1 scripts in the transaction validate; - -\item The transaction contains exactly those scripts that are required for witnessing and no -additional ones; - - \item The datums included in the witnesses contain all the datums required for - validating in phase 2. That is, - datums for all output-locking phase-2 scripts for the payment credentials of the addresses of the - UTxOs the transaction is spending must have attached datum objects. This check will also fail if - the datum hash fields of such UTxOs are $\Nothing$, as $\Nothing$ is not a - hash of a datum (and therefore is not a key of the $\DataHash$-indexed map). - - \item The only datums included in a transaction have hashes that are either in a UTxO - corresponding to a transaction input, or in a transaction output. The - output datums are for communication only, and are therefore optional, hence - the use of subset equality. No additional datums are permitted. - We call the datums corresponding to the inputs the \textbf{required datums} - and the datums corresponding to the outputs the \textbf{supplemental datums}. - - \item For every item that needs to be validated by a phase-2 script, and that - phase-2 script is present, the transaction contains - an entry in the indexed redeemer structure (ie. the execution units and redeemer for it are specified). - Note here that if the full script is not present, we cannot tell from the hash - that the script is phase-2, and therefore requires a redeemer; - - \item Each redeemer pointer in the indexed redeemer structure corresponds to - a pointer constructed using $\fun{rdptr}$ from some script purpose of a phase-2 - script of the transaction. - This ensures that there are no additional entries present in the structure - (ie. those that are not required for validation of any script); - - \item The signatures of the keys whose hashes are specified in the - $\fun{reqSignerHashes}$ field in a transaction - have all indeed signed it; - - \item - The hash of the subset of protocol parameter values and witnessing data that have been included in the - transaction body is the same as - the hash of the witness data and the subset of protocol parameters that are currently contained in the ledger; -\end{itemize} - -If these conditions are all satisfied, then the resulting UTxO state change is fully determined -by the UTXO transition (the application of which is also part of the conditions). - -\begin{figure}[htb] - \emph{State transitions} - \begin{equation*} - \_ \vdash - \var{\_} \trans{utxow}{\_} \var{\_} - \subseteq \powerset (\UTxOEnv \times \UTxOState \times \Tx \times \UTxOState) - \end{equation*} - % - \caption{UTxO with witnesses state update types} - \label{fig:ts-types:utxo-witness} -\end{figure} - -\begin{figure} - \begin{equation} - \label{eq:utxo-witness-inductive-alonzo} - \inference[UTxO-witG] - { - \var{txb}\leteq\txbody{tx} & - \var{txw}\leteq\fun{txwits}~{tx} \\ - (utxo, \wcard, \wcard, \wcard) \leteq \var{utxoSt} \\ - \var{witsKeyHashes} \leteq \{\fun{hashKey}~\var{vk} \vert \var{vk} \in - \dom (\txwitsVKey{txw}) \}\\ - \hldiff{\var{inputHashes}\leteq \{ h \mid (\_ \mapsto (a, \_, h)) \in \txins{txb} \restrictdom \var{utxo}, \fun{isTwoPhaseScriptAddress}~{tx}~{a}\}} \\~\\ - \hldiff{\forall \var{s} \in \range (\fun{txscripts}~{txw}) \cap \ScriptPhOne, - \fun{validateScript}~\var{s}~\var{tx}}\\~\\ - \hldiff{\{ h \mid (\_, h) \in \fun{scriptsNeeded}~\var{utxo}~txb\} = \dom (\fun{txscripts}~{txw})} \\~\\ - \hldiff{\var{inputHashes} \subseteq \dom (\fun{txdats}~{txw})} \\~\\ - \hldiff{\dom (\fun{txdats}~{txw}) \subseteq \var{inputHashes} \cup \{h~\mid~ (\wcard, \wcard, h)\in\fun{txouts}~{tx}\}} - \\~\\ - \hldiff{\ \dom (\fun{txrdmrs}~tx) = \{~\fun{rdptr}~txb~sp~ - \vert~ (sp,h) \in \fun{scriptsNeeded}~\var{utxo}~(\txbody{tx}), } \\ - \hldiff{h\mapsto s \in \fun{txscripts}~{txw}, s \in \ScriptPhTwo \}} - \\~\\ - \var{txbodyHash}\leteq\fun{hash}~(\txbody{tx}) \\ - \forall \var{vk} \mapsto \sigma \in \txwitsVKey{tx}, - \mathcal{V}_{\var{vk}}{\serialised{txbodyHash}}_{\sigma} \\ - \fun{witsVKeyNeeded}~{utxo}~{tx}~{genDelegs} \subseteq witsKeyHashes - \\~\\ - genSig \leteq - \left\{ - \fun{hashKey}~gkey \vert gkey \in\dom{genDelegs} - \right\} - \cap - \var{witsKeyHashes} - \\ - \left\{ - c\in\txcerts{txb}~\cap\DCertMir - \right\} \neq\emptyset \implies \vert genSig\vert \geq \Quorum - \\~\\ - \var{adh}\leteq\fun{txADhash}~\var{txb} - & - \var{ad}\leteq\fun{auxiliaryData}~\var{tx} - \\ - (\var{adh}=\Nothing \land \var{ad}=\Nothing) - \lor - (\var{adh}=\fun{hashAD}~\var{ad}) - \\~\\ - \hldiff{\fun{languages}~{txw} \subseteq \dom(\fun{costmdls}~{pp})} \\ - \hldiff{\fun{scriptIntegrityHash}~{txb} = - \fun{hashScriptIntegrity}~\var{pp}~(\fun{languages}~{txw})~(\fun{txrdmrs}~{txw})~(\fun{txdats}~{txw})} - \\~\\ - { - \begin{array}{r} - \var{slot}\\ - \var{pp}\\ - \var{poolParams}\\ - \var{genDelegs}\\ - \end{array} - } - \vdash \var{utxoSt} \trans{\hyperref[fig:rules:utxo-shelley]{utxo}}{tx} - \var{utxoSt'}\\ - } - { - \begin{array}{r} - \var{slot}\\ - \var{pp}\\ - \var{poolParams}\\ - \var{genDelegs}\\ - \end{array} - \vdash \var{utxoSt} \trans{utxow}{tx} \varUpdate{\var{utxoSt'}} - } - \end{equation} - \caption{UTxO with witnesses inference rules for Tx} - \label{fig:rules:utxow-alonzo} -\end{figure} diff --git a/eras/alonzo/formal-spec/value-size.tex b/eras/alonzo/formal-spec/value-size.tex deleted file mode 100644 index 0251e775ce6..00000000000 --- a/eras/alonzo/formal-spec/value-size.tex +++ /dev/null @@ -1,49 +0,0 @@ -\section{Output Size} -\label{sec:value-size} - -Figure \ref{fig:test} gives the formula for calculating the size of a UTxO entry -in the Alonzo era. In addition to the data found in the UTxO in the ShelleyMA -era, the hash of a datum (or $\Nothing$) is added to the output type, which -is accounted for in the size calculation. - -\begin{figure*}[h] - \emph{Constants} - \begin{align*} - & \mathsf{JustDataHashSize} \in \MemoryEstimate \\ - & \text{The size of a datum hash wrapped in $\DataHash^?$} \\~ - \\ - & \mathsf{NothingSize} \in \MemoryEstimate \\ - & \text{The size of $\Nothing$ wrapped in $\DataHash^?$} - \end{align*} - % - \emph{Helper Functions} - \begin{align*} - & \fun{dataHashSize} \in \DataHash^? \to \MemoryEstimate \\ - & \fun{dataHashSize}~ \Nothing = \mathsf{NothingSize} \\ - & \fun{dataHashSize}~ \wcard = \mathsf{JustDataHashSize} \\ - & \text{Return the size of $\DataHash^?$} \\~\\ - & \fun{utxoEntrySize} \in \TxOut \to \MemoryEstimate \\ - & \fun{utxoEntrySize}~\var{(a, v, d)} = \mathsf{utxoEntrySizeWithoutVal} + (\fun{size} (\fun{getValue}~(a, v, d))) + \mathsf{dataHashSize}~d \\ - & \text{Calculate the size of a UTxO entry} - \end{align*} - \caption{Value Size} - \label{fig:test} -\end{figure*} - -\begin{note} - Get dataHashSize from heapwords on the code -\end{note} - -There is a change of constant value from the ShelleyMA era, specifically: - -\begin{itemize} - \item $\mathsf{adaOnlyUTxOSize} = 29$ instead of $27$ - \item $\mathsf{k_0} = 2$ instead of $0$ -\end{itemize} - -Additionally, the new constants used in Alonzo have values : - -\begin{itemize} - \item $\mathsf{JustDataHashSize} = 10$ words - \item $\mathsf{NothingSize} = 0$ words -\end{itemize} diff --git a/eras/alonzo/impl/.ghcid b/eras/alonzo/impl/.ghcid deleted file mode 100644 index 081c5d317b6..00000000000 --- a/eras/alonzo/impl/.ghcid +++ /dev/null @@ -1 +0,0 @@ ---command="cabal repl --repl-options='-isrc -fwarn-unused-binds -fwarn-unused-imports -fno-code -fobject-code -g2 -fno-break-on-exception -fno-break-on-error -ferror-spans -j -Wno-unused-packages'" --clear --no-height-limit --reverse-errors --reload=../../../ --outputfile=/tmp/cardano-ledger-alonzo-ghcid.txt \ No newline at end of file diff --git a/eras/alonzo/impl/CHANGELOG.md b/eras/alonzo/impl/CHANGELOG.md deleted file mode 100644 index 17b8e52cf32..00000000000 --- a/eras/alonzo/impl/CHANGELOG.md +++ /dev/null @@ -1,305 +0,0 @@ -# Version history for `cardano-ledger-alonzo` - -## 1.8.0.0 - -* Change the type of the balance field in `InsufficientCollateral` to `DeltaCoin` -* Add `ToJSON` instances for `FailureDescription` and `TagMismatchDescription` -* Undeprecate `redeemerPointer`. - -## 1.7.0.0 - -* Add type `EraRuleEvent` instances for `PPUP`, `LEDGER` and `TICK` events -* Add `Eq` and `NFData` instances for `AlonzoUtxoEvent`, `AlonzoUtxowEvent` and `AlonzoUtxosEvent` -* Add instances for `InjectRuleFailure` and switch to using `injectFailure` -* Add `allegraToAlonzoUtxoPredFailure` -* Add `NFData` instances for: - * `CollectError` - * `AlonzoUtxoPredFailure` - * `FailureDescription` - * `TagMismatchDescription` - * `AlonzoUtxosPredFailure` - * `AlonzoUtxowPredFailure` -* Add `Semigroup` and `Monoid` instances for `Redeemers` -* Add `alonzoScriptPrefixTag` -* Add implementation for `getMinFeeTxUtxo` -* Deprecated `indexRedeemers` and `redeemerPointer`. -* Add `lookupRedeemer` -* Rename `AsIndex` to `AsIx` and `upgradePlutusPurposeAsIndex` to `upgradePlutusPurposeAsIx` -* Add `AsIxItem` as well as `toAsItem`, `toAsIx`. -* Switch `PlutusPurpose` to `AsIxItem` in `AlonzoScriptsNeeded` -* Add `hoistPlutusPurpose`, `toSpendingPurpose`, `toMintingPurpose`, - `toCertifyingPurpose`, `toRewardingPurpose`, `fromSpendingPurpose`, - `fromMintingPurpose`, `fromCertifyingPurpose`, `fromRewardingPurpose` to `AlonzoEraScript` -* Add `SpendingPurpose`, `MintingPurpose`, `CertifyingPurpose`, `RewardingPurpose` pattern synonyms. -* Add `getSpendingScriptsNeeded`, `getRewardingScriptsNeeded`, `getMintingScriptsNeeded` -* Add `zipAsIxItem` -* Modify `PParams` JSON instances to match `cardano-api` - -### `testlib` - -* Add `ToExpr` instances for `AlonzoUtxoEvent`, `AlonzoUtxowEvent` and `AlonzoUtxosEvent` -* Add `RuleListEra` instance for Alonzo -* Add: - * `impLookupPlutusScriptMaybe` - * `fixupOutputDatums` -* Remove root coin argument from `initAlonzoImpNES` -* Rename `fixupPlutusScripts` to `fixupRedeemers` -* Add: - * `fixupPPHash` - * `fixupPlutusScripts` - * `addCollateralInput` - * `impGetPlutusContexts` - * `fixupDatums` -* Add `Test.Cardano.Ledger.Alonzo.Imp.UtxosSpec` -* Add `alonzoFixupTx` - -## 1.6.0.0 - -* Deprecated `getAlonzoSpendingTxIn` in favor of `plutusPurposeSpendingTxIn` -* Add `PlutusPurpose`, `plutusPurposeSpendingTxIn` and `upgradePlutusPurposeAsIndex` to - `AlonzoEraScript`. -* Add `AsIndex`, `AsItem` and `AlonzoPlutusPurpose` -* Remove `RdmrPtr` and `Tag` in favor of `PlutusPurpose AsIndex` -* Remove `ScriptPurpose` in favor of `PlutusPurpose AsItem` -* Add `AlonzoTxAuxData'`, `atadMetadata'`, `atadTimelock'`, `atadPlutus'` -* Add `alonzoRedeemerPointer`, `alonzoRedeemerPointerInverse` -* Remove `rdptr` and `rdptrInv` in favor of `redeemerPointer` and `redeemerPointerInverse` - respectively -* Rename `indexedRdmrs` to `indexRedeemers` and change the type of one of its arguments -* Deprecate `requiredSignersAreWitnessed` -* Add `ToJSON` for `AlonzoContextError` and `CollectError` -* Stop exporting all of the internal `hkd*` functions and `PParamsHKD` from - `Cardano.Ledger.Alonzo.Core`. -* Export `AlonzoEraTx` from `Cardano.Ledger.Alonzo.Core` -* Add `transTxBodyId`, `transTxBodyCerts`, `transTxBodyWithdrawals`, `transTxBodyReqSignerHashes`, - `transTxWitsDatums` -* Remove deprecated `VersionedTxInfo`, `getDatum`, `getAllowedSupplimentalDataHashes`, `txscripts` -* Remove `ExtendedUTxO` in favor of `PlutusEraTxInfo` and `txInfo` in favor of `toPlutusTxInfo` -* Rename `alonzoTransTxCert` to `transTxCert` -* Remove `alonzoTxInfo` and `languages` as unnecessary. -* Remove `transTxOutAddr` in favor of `transAddr` -* Remove `txInfoIn'`, `txInfoIn` as unnecessary -* Rename `txInfoOut` to `transTxOut` for consistency -* Replace `valContext` with `toPlutusContext`, -* Stop exporting from `Cardano.Ledger.Alonzo.Plutus.TxInfo`: `getWitVKeyHash`, - `transKeyHash`, `transKeyHash`, `transSafeHash`, `transStakeReference`, - `slotToPOSIXTime`, `transCred`, `transProtocolVersion`, `validScript`, `transDataHash'`, - `transDataHash`, `transExUnits`, `ScriptFailure`, `ScriptResult`, `scriptPass`, - `scriptFail`, `PlutusDebugLang`, `PlutusDebug`, `PlutusData`, `PlutusError`, - `PlutusDebugInfo`, `EraPlutusContext`, `PlutusWithContext`, `PlutusTxCert`, - `unTxCertV1`, `unTxCertV2`, `unTxCertV3`, `debugPlutus`, `runPlutusScript`, - `runPlutusScriptWithLogs`, `deserialiseAndEvaluateScript` and - `explainPlutusEvaluationError`. -* Add new module `Cardano.Ledger.Alonzo.Plutus.Context` that contains new type classes for - plutus context translation: `EraPlutusTxInfo` and `EraPlutusContext` as well as the type - families for plutus specific types: `PlutusTxInfo`, `PlutusTxCert`, - `PlutusScriptPurpose`, `PlutusScriptContext` -* Remove deprecated module `Cardano.Ledger.Alonzo.TxInfo` -* Add `lookupPlutusScript` and `transLookupTxOut` -* Add `transValidityInterval` -* Remove `transVITime` in favor of `transValidityInterval`. -* Remove deprecated `scriptsNeeded`, `scriptsNeededFromBody`, `evalScripts`, - `evalScriptsWithLogs`, `collectTwoPhaseScriptInputs` `getDatumAlonzo`, `getSpendingTxIn`. -* Remove `language` in favor of two separate functions `plutusScriptLanguage` and `toPlutusScript` -* Remove `knownToNotBe1Phase` in favor of `lookupPlutusScript`. -* Rename `Cardano.Ledger.Alonzo.PlutusScriptApi` to `Cardano.Ledger.Alonzo.Plutus.Evaluate` -* Turn `TranslationError` sum type into a `ContextError` data family -* Add `AlonzoEraScript` type class with associated data family `PlutusScript` and functions: - `eraMaxLanguage`, `toPlutusScript`, `fromplutusScript`, `mkPlutusScript` and `withPlutusScript` -* Add `withPlutusScriptLanguage`, `plutusScriptLanguage`, `decodePlutusScript`, - `plutusScriptBinary`, `mkBinaryPlutusScript`, `isValidPlutusScript` and - `toPlutusSLanguage` -* Remove `Cardano.Ledger.Alonzo.TxInfo` module -* Remove `ExtendedUTxO` -* Instead of accepting `UTxO` the validation function `ppViewHashesMatch` now accepts - `ScriptsProvided` and remove the no longer needed `languages` function. -* Delete `utxoPredFailMaToAlonzo`, `utxoPredFailShelleyToAlonzo` -* Moved `ToExpr` instances out of the main library and into the testlib. -* Changed the type of the ConwayPParams field appEMax -* Add `TxUTxODiff (UTxO era) (UTxO era)` inhabitant to the `AlonzoUtxosEvent era` data type. - -### `testlib` - -* Added `ShelleyEraImp` constraint to `emptyAlonzoImpNES` -* Rename `emptyAlonzoImpNES` to `initAlonzoImpNES` -* Remove `Test.Cardano.Ledger.Alonzo.CostModel` in favor of `Test.Cardano.Ledger.Plutus` -* Move `costModelParamsCount` to `Cardano.Ledger.Plutus.CostModels` -* Add `mkPlutusScript'` -* Add `alwaysSucceedsLang` and `alwaysFailsLang` -* Change `alwaysSucceeds` and `alwaysFails` to accept the language version at the type level. -* Export `genNativeScript` and `genPlutusScript` from Arbitrary - -## 1.5.1.0 - -* Move `Cardano.Ledger.Alonzo.Scripts.Data` to `Cardano.Ledger.Plutus.Data` -* Deprecated `Cardano.Ledger.Alonzo.Language` -* Move `Cardano.Ledger.Alonzo.TxInfo` to `Cardano.Ledger.Alonzo.Plutus.TxInfo` with - deprecation of the former. -* Add `evalScriptsWithLogs`, `evalPlutusScriptsWithLogs` and `runPlutusScriptWithLogs`: #3843 - -### `testlib` - -* Provide CDDL spec files with `readAlonzoCddlFileNames` and `readAlonzoCddlFiles` from - `Test.Cardano.Ledger.Alonzo.Binary.Cddl` -* Expose `genValidAndUnknownCostModels` in `Arbitrary` - -## 1.5.0.0 - -* Add `Test.Cardano.Ledger.Alonzo.CostModel` -* Add `updateCostModels` -* Add `AlonzoEraUTxO` and use in the rules. -* Deprecate `getDatum` in favor of `getSpendingDatum` -* Deprecate `getDatumAlonzo` in favor of `getAlonzoSpendingDatum` -* Deprecate `getSpendingTxIn` in favor of `getAlonzoSpendingTxIn` -* Deprecate `getAllowedSupplimentalDataHashes` in favor of `getSupplementalDataHashes` -* Rename `NonOutputSupplimentaryDatums` to `NotAllowedSupplementalDatums` -* Remove unused `isTwoPhaseScriptAddress` -* Change arguments to `hasExactSetOfRedeemers` - -### `testlib` - -* Add `emptyAlonzoImpNES` -* Add `Test.Cardano.Ledger.Alonzo.ImpTest` -* Add `EraImpTest` instance for `AlonzoEra` -* Add `ToExpr` instances for: - * `CollectError` - * `AlonzoUtxoPredFailure` - * `FailureDescription` - * `TagMismatchDescription` - * `AlonzoUtxosPredFailure` - * `AlonzoUtxowPredFailure` - * `BinaryData` - * `Datum` - * `IsValid` - * `ScriptPurpose` - * `TxOutSource` - * `TranslationError` - * `Addr28Extra` - * `DataHash32` - * `RdmrPtr` -* Expose `genValidCostModel` in `Arbitrary` - -## 1.4.2.0 - -* Add `ToExpr` instance for: - * `PlutusData` - * `Data` - * `BinaryData` - * `Datum` - * `AlonzoTx` - * `AlonzoTxBody` - * `AlonzoTxOut` - * `AlozoTxWits` - * `IsValid` - * `Addr28Extra` - * `DataHash32` - * `RdmrPtr` - * `Redeemers` -* Add `Generic` instance for : - * `AlonzoTxBody` - * `Redeemers` - * `TxDats` -* Add `upgradeData`, `upgradeRedeemers` and `upgradeTxDats` -* Add `TxUpgradeError` type to `EraTx` -* Add `AlonzoTxBodyUpgradeError`, `AlonzoTxUpgradeError` -* Add `toAlonzoTransitionConfigPairs` and `EraTransition` instance. -* Rename `alonzoGenesisAesonPairs` -> `toAlonzoGenesisPairs` for consistency. - -### `testlib` - -* Add `Test.Cardano.Ledger.Alonzo.Binary.RoundTrip` module with: - * `roundTripAlonzoCommonSpec` - * `roundTripAlonzoEraTypesSpec` - -## 1.4.1.0 - -* Made `isPlutusScript` more general. -* Add `alonzoEqTxRaw` and `alonzoEqTxWitsRaw` -* Add `EqRaw` instance for `AlonzoScript`, `AlonzoTxWits`, `AlonzoTxAuxData`, - `AlonzoTxBody` and `AlonzoTx` - -## 1.4.0.0 - -* Add `translateAlonzoTxAuxData`, `translateAlonzoScript` and `translateDatum` -* Deprecated `translateTxOut` in favor of `upgradeTxOut` -* Deprecated `transStakeCred` in favor of `transCred` -* Rename `transShelleyTxCert` to `alonzoTransTxCert` -* Change type of `Plutus` to use `BinaryPlutus` instead of `ShortByteString` -* Deprecate `runPLCScript` in favor of `runPlutusScript` -* Addition of `PlutusWithContext` -* Deprecation of `collectTwoPhaseScriptInputs` in favor of `collectPlutusScriptsWithContext` -* Deprecation of `evalScripts` in favor of `evalPlutusScripts` -* Deprecation of `runPLCScript` in favor of `runPlutusScript` -* Deprecation of `explainPlutusFailure` in favor of `explainPlutusEvaluationError` -* Move `BinaryPlutus` into `cardano-ledger-core` package in `Cardano.Ledger.Language` module -* Change `PlutusScript` constructor of the `AlonzoScript` type. It now accepts the new - `Plutus` type instead of a `Language` and `ShortByteString` -* Rename `pdSBS` field to `pdPlutusScript` in the `PlutusDebugLang` data type - -## 1.3.3.0 - -* Export `transMintValue` - -## 1.3.2.0 - -* Add implementation for `spendableInputsTxBodyL` - -## 1.3.1.1 - -* - -## 1.3.1.0 - -* Added `Semigroup` and `Monoid` instances to `AlonzoScriptsNeeded` - -## 1.3.0.0 - -* Introduction of `TxCert` and `EraTxCert` -* Add `EraTxCert` and `ShelleyEraTxCert` instances to `AlonzoEra` -* Add `PlutusTxCert` -* Add `unTxCertV1`, `unTxCertV2`, `unTxCertV3` -* Add `EraPlutusContext` -* Add `EraPlutusContext 'PlutusV1` instance to `AlonzoEra` -* Rename `transTxCert` to `transShelleyTxCert` -* Remove `witsVKeyNeeded`, in favor of the one from `cardano-ledger-shelley` -* Fix an issue where `TotalDeposits` didn't appear on Alonzo era - -## 1.2.1.0 - -* Fix `PParams AlonzoEra` serialization. [#3440](https://github.com/intersectmbo/cardano-ledger/pull/3440) - -## 1.2.0.0 - -* Replace `DPState c` with `CertState era` -* Add `TranslateEra` instances for: - * `DState` - * `PState` - * `VState` -* Added support for Plutus V3 in the types and functions that use `Language`. - (Note that the Alonzo ledger era rules do not allow V3 scripts, however.). -* Fix a bug of converting a mint field to the plutus context: [#3398](https://github.com/intersectmbo/cardano-ledger/pull/3398) -* Change parametrization of `ScriptPurpose`, `CollectError` and `TransactionScriptFailure` - from `c`rypto to `era` - -## 1.1.0.0 - -* Add `ToJSON` instance for `AlonzoTxOut`, `AlonzoScript` and `Datum` -* Add `ToJSON` instance for `AlonzoPParams StrictMaybe` -* Stop exporting an internal function `decodeBinaryData` -* Remove redundant `Redeemers'` pattern synonym. -* Move `Cardano.Ledger.Alonzo.Tools` module into `cardano-ledger-api:Cardano.Ledger.Api.Scripts` -* Add helper lens `hashDataTxWitsL` -* Rename `smMap` to `cmValues` -* Remove redundant pattern synonym `AlonzoTxAuxData'{atadMetadata',atadTimelock',atadPlutus'}` -* Addition of `costModelToMap`, `costModelFromMap` and `costModelParamNames` -* Made it possible for `FromJSON` to decode `CostModels` both as the new approach: - 1. as a list of cost models values, - 2. and the old approach of mapping from the parameter name to the cost model value - -### `testlib` - -* Consolidate all `Arbitrary` instances from the test package to under a new `testlib`. #3285 - -## 1.0.0.0 - -* First properly versioned release. diff --git a/eras/alonzo/impl/Setup.hs b/eras/alonzo/impl/Setup.hs deleted file mode 100644 index e8ef27dbba9..00000000000 --- a/eras/alonzo/impl/Setup.hs +++ /dev/null @@ -1,3 +0,0 @@ -import Distribution.Simple - -main = defaultMain diff --git a/eras/alonzo/impl/cardano-ledger-alonzo.cabal b/eras/alonzo/impl/cardano-ledger-alonzo.cabal deleted file mode 100644 index a3ad743209b..00000000000 --- a/eras/alonzo/impl/cardano-ledger-alonzo.cabal +++ /dev/null @@ -1,165 +0,0 @@ -cabal-version: 3.0 -name: cardano-ledger-alonzo -version: 1.8.0.0 -license: Apache-2.0 -maintainer: operations@iohk.io -author: IOHK -bug-reports: https://github.com/intersectmbo/cardano-ledger/issues -synopsis: Cardano ledger introducing Plutus Core -description: - This package builds upon the Mary ledger with support for extended UTxO - via Plutus Core. - -category: Network -build-type: Simple -data-files: - cddl-files/alonzo.cddl - cddl-files/crypto.cddl - cddl-files/extras.cddl - -extra-source-files: CHANGELOG.md - -source-repository head - type: git - location: https://github.com/intersectmbo/cardano-ledger - subdir: eras/alonzo/impl - -library - exposed-modules: - Cardano.Ledger.Alonzo - Cardano.Ledger.Alonzo.Core - Cardano.Ledger.Alonzo.Data - Cardano.Ledger.Alonzo.Transition - Cardano.Ledger.Alonzo.Genesis - Cardano.Ledger.Alonzo.Language - Cardano.Ledger.Alonzo.Plutus.Context - Cardano.Ledger.Alonzo.Plutus.Evaluate - Cardano.Ledger.Alonzo.Plutus.TxInfo - Cardano.Ledger.Alonzo.PParams - Cardano.Ledger.Alonzo.Rules - Cardano.Ledger.Alonzo.Scripts - Cardano.Ledger.Alonzo.Scripts.Data - Cardano.Ledger.Alonzo.Translation - Cardano.Ledger.Alonzo.Tx - Cardano.Ledger.Alonzo.TxAuxData - Cardano.Ledger.Alonzo.TxBody - Cardano.Ledger.Alonzo.TxOut - Cardano.Ledger.Alonzo.TxSeq - Cardano.Ledger.Alonzo.TxWits - Cardano.Ledger.Alonzo.UTxO - - hs-source-dirs: src - other-modules: - Cardano.Ledger.Alonzo.TxCert - Cardano.Ledger.Alonzo.Era - Cardano.Ledger.Alonzo.Rules.Bbody - Cardano.Ledger.Alonzo.Rules.Deleg - Cardano.Ledger.Alonzo.Rules.Delegs - Cardano.Ledger.Alonzo.Rules.Delpl - Cardano.Ledger.Alonzo.Rules.Pool - Cardano.Ledger.Alonzo.Rules.Ppup - Cardano.Ledger.Alonzo.Rules.Ledger - Cardano.Ledger.Alonzo.Rules.Ledgers - Cardano.Ledger.Alonzo.Rules.Utxo - Cardano.Ledger.Alonzo.Rules.Utxos - Cardano.Ledger.Alonzo.Rules.Utxow - - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints - -Wunused-packages - - build-depends: - base >=4.14 && <5, - aeson >=2.2, - base64-bytestring, - bytestring, - cardano-data ^>=1.2.1, - cardano-ledger-allegra ^>=1.4, - cardano-crypto-class, - cardano-ledger-binary ^>=1.3, - cardano-ledger-core ^>=1.11, - cardano-ledger-mary ^>=1.5, - cardano-ledger-shelley ^>=1.10, - cardano-slotting, - cardano-strict-containers, - containers, - data-default-class, - deepseq, - mtl, - microlens, - nothunks, - plutus-ledger-api ^>=1.25.0, - set-algebra >=1.0, - small-steps >=1.1, - text, - transformers, - validation-selective - - if !impl(ghc >=9.2) - ghc-options: -Wno-name-shadowing - -library testlib - exposed-modules: - Test.Cardano.Ledger.Alonzo.Arbitrary - Test.Cardano.Ledger.Alonzo.Binary.Cddl - Test.Cardano.Ledger.Alonzo.Binary.CostModelsSpec - Test.Cardano.Ledger.Alonzo.Binary.RoundTrip - Test.Cardano.Ledger.Alonzo.Binary.TxWitsSpec - Test.Cardano.Ledger.Alonzo.Imp - Test.Cardano.Ledger.Alonzo.Imp.UtxosSpec - Test.Cardano.Ledger.Alonzo.ImpTest - Test.Cardano.Ledger.Alonzo.TreeDiff - - visibility: public - hs-source-dirs: testlib - other-modules: Paths_cardano_ledger_alonzo - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints - -Wunused-packages - - build-depends: - base, - bytestring, - containers, - cardano-crypto-class, - cardano-data, - cardano-ledger-allegra:testlib, - cardano-ledger-alonzo, - cardano-ledger-binary, - cardano-ledger-mary:testlib, - cardano-ledger-core:{cardano-ledger-core, testlib}, - cardano-strict-containers, - cardano-ledger-shelley:{cardano-ledger-shelley, testlib}, - data-default-class, - plutus-ledger-api, - generic-random, - microlens, - text, - tree-diff - -test-suite tests - type: exitcode-stdio-1.0 - main-is: Main.hs - hs-source-dirs: test - other-modules: - Test.Cardano.Ledger.Alonzo.BinarySpec - Test.Cardano.Ledger.Alonzo.Binary.CddlSpec - - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wpartial-fields - -Wunused-packages -threaded -rtsopts -with-rtsopts=-N - - build-depends: - base, - cardano-ledger-allegra, - cardano-ledger-alonzo, - cardano-ledger-binary:testlib, - cardano-ledger-core:{cardano-ledger-core, testlib}, - cardano-ledger-shelley:testlib, - testlib diff --git a/eras/alonzo/impl/cddl-files/alonzo.cddl b/eras/alonzo/impl/cddl-files/alonzo.cddl deleted file mode 100644 index 24c4cb08ab4..00000000000 --- a/eras/alonzo/impl/cddl-files/alonzo.cddl +++ /dev/null @@ -1,407 +0,0 @@ -block = - [ header - , transaction_bodies : [* transaction_body] - , transaction_witness_sets : [* transaction_witness_set] - , auxiliary_data_set : {* transaction_index => auxiliary_data } - , invalid_transactions : [* transaction_index ] ; New - ]; Valid blocks must also satisfy the following two constraints: - ; 1) the length of transaction_bodies and transaction_witness_sets - ; must be the same - ; 2) every transaction_index must be strictly smaller than the - ; length of transaction_bodies - -transaction = - [ transaction_body - , transaction_witness_set - , bool - , auxiliary_data / null - ] - -transaction_index = uint .size 2 - -header = - [ header_body - , body_signature : $kes_signature - ] - -header_body = - [ block_number : uint - , slot : uint - , prev_hash : $hash32 / null - , issuer_vkey : $vkey - , vrf_vkey : $vrf_vkey - , nonce_vrf : $vrf_cert - , leader_vrf : $vrf_cert - , block_body_size : uint - , block_body_hash : $hash32 ; merkle triple root - , operational_cert - , protocol_version - ] - -operational_cert = - ( hot_vkey : $kes_vkey - , sequence_number : uint - , kes_period : uint - , sigma : $signature - ) - -next_major_protocol_version = 7 - -major_protocol_version = 1..next_major_protocol_version - -protocol_version = (major_protocol_version, uint) - -transaction_body = - { 0 : set ; inputs - , 1 : [* transaction_output] - , 2 : coin ; fee - , ? 3 : uint ; time to live - , ? 4 : [* certificate] - , ? 5 : withdrawals - , ? 6 : update - , ? 7 : auxiliary_data_hash - , ? 8 : uint ; validity interval start - , ? 9 : mint - , ? 11 : script_data_hash ; New - , ? 13 : set ; Collateral ; new - , ? 14 : required_signers ; New - , ? 15 : network_id ; New - } - -required_signers = set - -transaction_input = [ transaction_id : $hash32 - , index : uint - ] - -transaction_output = - [ address - , amount : value - , ? datum_hash : $hash32 ; New - ] - -script_data_hash = $hash32 ; New -; This is a hash of data which may affect evaluation of a script. -; This data consists of: -; - The redeemers from the transaction_witness_set (the value of field 5). -; - The datums from the transaction_witness_set (the value of field 4). -; - The value in the costmdls map corresponding to the script's language -; (in field 18 of protocol_param_update.) -; (In the future it may contain additional protocol parameters.) -; -; Since this data does not exist in contiguous form inside a transaction, it needs -; to be independently constructed by each recipient. -; -; The bytestring which is hashed is the concatenation of three things: -; redeemers || datums || language views -; The redeemers are exactly the data present in the transaction witness set. -; Similarly for the datums, if present. If no datums are provided, the middle -; field is omitted (i.e. it is the empty/null bytestring). -; -; language views CDDL: -; { * language => script_integrity_data } -; -; This must be encoded canonically, using the same scheme as in -; RFC7049 section 3.9: -; - Maps, strings, and bytestrings must use a definite-length encoding -; - Integers must be as small as possible. -; - The expressions for map length, string length, and bytestring length -; must be as short as possible. -; - The keys in the map must be sorted as follows: -; - If two keys have different lengths, the shorter one sorts earlier. -; - If two keys have the same length, the one with the lower value -; in (byte-wise) lexical order sorts earlier. -; -; For PlutusV1 (language id 0), the language view is the following: -; - the value of costmdls map at key 0 is encoded as an indefinite length -; list and the result is encoded as a bytestring. (our apologies) -; - the language ID tag is also encoded twice. first as a uint then as -; a bytestring. (our apologies) -; -; Note that each Plutus language represented inside a transaction must have -; a cost model in the costmdls protocol parameter in order to execute, -; regardless of what the script integrity data is. In the Alonzo era, -; this means costmdls must have a key 0 for Plutus V1. -; -; Finally, note that in the case that a transaction includes datums but does not -; include any redeemers, the script data format becomes (in hex): -; [ 80 | datums | A0 ] -; corresponding to a CBOR empty list and an empty map (our apologies). - -; address = bytes -; reward_account = bytes - -; address format: -; [ 8 bit header | payload ]; -; -; shelley payment addresses: -; bit 7: 0 -; bit 6: base/other -; bit 5: pointer/enterprise [for base: stake cred is keyhash/scripthash] -; bit 4: payment cred is keyhash/scripthash -; bits 3-0: network id -; -; reward addresses: -; bits 7-5: 111 -; bit 4: credential is keyhash/scripthash -; bits 3-0: network id -; -; byron addresses: -; bits 7-4: 1000 - -; 0000: base address: keyhash28,keyhash28 -; 0001: base address: scripthash28,keyhash28 -; 0010: base address: keyhash28,scripthash28 -; 0011: base address: scripthash28,scripthash28 -; 0100: pointer address: keyhash28, 3 variable length uint -; 0101: pointer address: scripthash28, 3 variable length uint -; 0110: enterprise address: keyhash28 -; 0111: enterprise address: scripthash28 -; 1000: byron address -; 1110: reward account: keyhash28 -; 1111: reward account: scripthash28 -; 1001 - 1101: future formats - -certificate = - [ stake_registration - // stake_deregistration - // stake_delegation - // pool_registration - // pool_retirement - // genesis_key_delegation - // move_instantaneous_rewards_cert - ] - -stake_registration = (0, stake_credential) -stake_deregistration = (1, stake_credential) -stake_delegation = (2, stake_credential, pool_keyhash) -pool_registration = (3, pool_params) -pool_retirement = (4, pool_keyhash, epoch) -genesis_key_delegation = (5, genesishash, genesis_delegate_hash, vrf_keyhash) -move_instantaneous_rewards_cert = (6, move_instantaneous_reward) - -move_instantaneous_reward = [ 0 / 1, { * stake_credential => delta_coin } / coin ] -; The first field determines where the funds are drawn from. -; 0 denotes the reserves, 1 denotes the treasury. -; If the second field is a map, funds are moved to stake credentials, -; otherwise the funds are given to the other accounting pot. - -delta_coin = int ; New - -stake_credential = - [ 0, addr_keyhash - // 1, scripthash - ] - -pool_params = ( operator: pool_keyhash - , vrf_keyhash: vrf_keyhash - , pledge: coin - , cost: coin - , margin: unit_interval - , reward_account: reward_account - , pool_owners: set - , relays: [* relay] - , pool_metadata: pool_metadata / null - ) - -port = uint .le 65535 -ipv4 = bytes .size 4 -ipv6 = bytes .size 16 -dns_name = tstr .size (0..64) - -single_host_addr = ( 0 - , port / null - , ipv4 / null - , ipv6 / null - ) -single_host_name = ( 1 - , port / null - , dns_name ; An A or AAAA DNS record - ) -multi_host_name = ( 2 - , dns_name ; A SRV DNS record - ) -relay = - [ single_host_addr - // single_host_name - // multi_host_name - ] - -pool_metadata = [url, pool_metadata_hash] -url = tstr .size (0..64) - -withdrawals = { * reward_account => coin } - -update = [ proposed_protocol_parameter_updates - , epoch - ] - -proposed_protocol_parameter_updates = - { * genesishash => protocol_param_update } - -protocol_param_update = - { ? 0: uint ; minfee A - , ? 1: uint ; minfee B - , ? 2: uint ; max block body size - , ? 3: uint ; max transaction size - , ? 4: uint ; max block header size - , ? 5: coin ; key deposit - , ? 6: coin ; pool deposit - , ? 7: epoch ; maximum epoch - , ? 8: uint ; n_opt: desired number of stake pools - , ? 9: nonnegative_interval ; pool pledge influence - , ? 10: unit_interval ; expansion rate - , ? 11: unit_interval ; treasury growth rate - , ? 12: unit_interval ; d. decentralization constant - , ? 13: $nonce ; extra entropy - , ? 14: [protocol_version] ; protocol version - , ? 16: coin ; min pool cost ; New - , ? 17: coin ; ada per utxo byte ; New - , ? 18: costmdls ; cost models for script languages ; New - , ? 19: ex_unit_prices ; execution costs ; New - , ? 20: ex_units ; max tx ex units ; New - , ? 21: ex_units ; max block ex units ; New - , ? 22: uint ; max value size ; New - , ? 23: uint ; collateral percentage ; New - , ? 24: uint ; max collateral inputs ; New - } - -transaction_witness_set = - { ? 0: [* vkeywitness ] - , ? 1: [* native_script ] - , ? 2: [* bootstrap_witness ] - , ? 3: [* plutus_script ] ;New - , ? 4: [* plutus_data ] ;New - , ? 5: [* redeemer ] ;New - } - -plutus_script = bytes ; New - -plutus_data = ; New - constr - / { * plutus_data => plutus_data } - / [ * plutus_data ] - / big_int - / bounded_bytes - -big_int = int / big_uint / big_nint ; New -big_uint = #6.2(bounded_bytes) ; New -big_nint = #6.3(bounded_bytes) ; New - -constr = ; New - #6.121([* a]) - / #6.122([* a]) - / #6.123([* a]) - / #6.124([* a]) - / #6.125([* a]) - / #6.126([* a]) - / #6.127([* a]) - ; similarly for tag range: 6.1280 .. 6.1400 inclusive - / #6.102([uint, [* a]]) - -redeemer = [ tag: redeemer_tag, index: uint, data: plutus_data, ex_units: ex_units ] ; New -redeemer_tag = ; New - 0 ; inputTag "Spend" - / 1 ; mintTag "Mint" - / 2 ; certTag "Cert" - / 3 ; wdrlTag "Reward" -ex_units = [mem: uint, steps: uint] ; New - -ex_unit_prices = ; New - [ mem_price: sub_coin, step_price: sub_coin ] - -; This is an enumeration. for now there's only one value ; New -language = 0 ; Plutus v1 - -costmdls = { * language => cost_model } ; New - -; The keys to the cost model map are not present in the serialization. -; The values in the serialization are assumed to be ordered -; lexicographically by their correpsonding key value. -; See Plutus' `ParamName` for parameter ordering -cost_model = [ 166*166 int ] ; New - -transaction_metadatum = - { * transaction_metadatum => transaction_metadatum } - / [ * transaction_metadatum ] - / int - / bytes .size (0..64) - / text .size (0..64) - -transaction_metadatum_label = uint -metadata = { * transaction_metadatum_label => transaction_metadatum } - -auxiliary_data = - metadata ; Shelley - / [ transaction_metadata: metadata ; Shelley-ma - , auxiliary_scripts: [ * native_script ] - ] - / #6.259({ ? 0 => metadata ; Alonzo and future ; New - , ? 1 => [ * native_script ] - , ? 2 => [ * plutus_script ] - }) - - - -vkeywitness = [ $vkey, $signature ] - -bootstrap_witness = - [ public_key : $vkey - , signature : $signature - , chain_code : bytes .size 32 - , attributes : bytes - ] - -native_script = - [ script_pubkey - // script_all - // script_any - // script_n_of_k - // invalid_before - ; Timelock validity intervals are half-open intervals [a, b). - ; This field specifies the left (included) endpoint a. - // invalid_hereafter - ; Timelock validity intervals are half-open intervals [a, b). - ; This field specifies the right (excluded) endpoint b. - ] - -script_pubkey = (0, addr_keyhash) -script_all = (1, [ * native_script ]) -script_any = (2, [ * native_script ]) -script_n_of_k = (3, n: uint, [ * native_script ]) -invalid_before = (4, uint) -invalid_hereafter = (5, uint) - -coin = uint - -sub_coin = positive_interval - -multiasset = { * policy_id => { * asset_name => a } } -policy_id = scripthash -asset_name = bytes .size (0..32) - -value = coin / [coin,multiasset] -mint = multiasset - -int64 = -9223372036854775808 .. 9223372036854775807 - -network_id = 0 / 1 ; New - -epoch = uint - -addr_keyhash = $hash28 -genesis_delegate_hash = $hash28 -pool_keyhash = $hash28 -genesishash = $hash28 - -vrf_keyhash = $hash32 -auxiliary_data_hash = $hash32 -pool_metadata_hash = $hash32 - -; To compute a script hash, note that you must prepend -; a tag to the bytes of the script before hashing. -; The tag is determined by the language. -; The tags in the Alonzo era are: -; "\x00" for multisig scripts -; "\x01" for Plutus V1 scripts -scripthash = $hash28 diff --git a/eras/alonzo/impl/cddl-files/crypto.cddl b/eras/alonzo/impl/cddl-files/crypto.cddl deleted file mode 100644 index 339444964d2..00000000000 --- a/eras/alonzo/impl/cddl-files/crypto.cddl +++ /dev/null @@ -1,13 +0,0 @@ -$hash28 /= bytes .size 28 -$hash32 /= bytes .size 32 - -$vkey /= bytes .size 32 - -$vrf_vkey /= bytes .size 32 -$vrf_cert /= [bytes, bytes .size 80] - -$kes_vkey /= bytes .size 32 -$kes_signature /= bytes .size 448 -signkeyKES = bytes .size 64 - -$signature /= bytes .size 64 diff --git a/eras/alonzo/impl/cddl-files/extras.cddl b/eras/alonzo/impl/cddl-files/extras.cddl deleted file mode 100644 index 80e262021dc..00000000000 --- a/eras/alonzo/impl/cddl-files/extras.cddl +++ /dev/null @@ -1,40 +0,0 @@ -finite_set = [* a ] - -set = [* a] - -;unit_interval = #6.30([uint, uint]) -unit_interval = #6.30([1, 2]) - ; real unit_interval is: #6.30([uint, uint]) - ; but this produces numbers outside the unit interval - ; and can also produce a zero in the denominator - -positive_int = 1 .. 18446744073709551615 - -nonnegative_interval = #6.30([uint, positive_int]) - -positive_interval = #6.30([positive_int, positive_int]) - -address = - h'001000000000000000000000000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000' / - h'102000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000' / - h'203000000000000000000000000000000000000000000000000000000033000000000000000000000000000000000000000000000000000000' / - h'304000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000' / - h'405000000000000000000000000000000000000000000000000000000087680203' / - h'506000000000000000000000000000000000000000000000000000000087680203' / - h'6070000000000000000000000000000000000000000000000000000000' / - h'7080000000000000000000000000000000000000000000000000000000' - -reward_account = - h'E090000000000000000000000000000000000000000000000000000000' / - h'F0A0000000000000000000000000000000000000000000000000000000' - -bounded_bytes = bytes .size (0..64) - ; the real bounded_bytes does not have this limit. it instead has a different - ; limit which cannot be expressed in CDDL. - ; The limit is as follows: - ; - bytes with a definite-length encoding are limited to size 0..64 - ; - for bytes with an indefinite-length CBOR encoding, each chunk is - ; limited to size 0..64 - ; ( reminder: in CBOR, the indefinite-length encoding of bytestrings - ; consists of a token #2.31 followed by a sequence of definite-length - ; encoded bytestrings and a stop code ) diff --git a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo.hs b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo.hs deleted file mode 100644 index 65d8905a581..00000000000 --- a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo.hs +++ /dev/null @@ -1,79 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} --- CanStartFromGenesis -{-# OPTIONS_GHC -Wno-deprecations #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Alonzo ( - Alonzo, - AlonzoEra, - AlonzoTxOut, - MaryValue, - AlonzoTxBody, - AlonzoScript, - AlonzoTxAuxData, - reapplyAlonzoTx, -) -where - -import Cardano.Ledger.Alonzo.Era -import Cardano.Ledger.Alonzo.Genesis -import Cardano.Ledger.Alonzo.PParams () -import Cardano.Ledger.Alonzo.Plutus.TxInfo () -import Cardano.Ledger.Alonzo.Rules () -import Cardano.Ledger.Alonzo.Scripts (AlonzoScript (..)) -import Cardano.Ledger.Alonzo.Transition () -import Cardano.Ledger.Alonzo.Translation () -import Cardano.Ledger.Alonzo.Tx () -import Cardano.Ledger.Alonzo.TxAuxData (AlonzoTxAuxData) -import Cardano.Ledger.Alonzo.TxBody (AlonzoTxBody, AlonzoTxOut) -import Cardano.Ledger.Alonzo.TxWits () -import Cardano.Ledger.Alonzo.UTxO () -import Cardano.Ledger.BaseTypes (Globals) -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto (Crypto, StandardCrypto) -import Cardano.Ledger.Keys (DSignable, Hash) -import Cardano.Ledger.Mary.Value (MaryValue) -import Cardano.Ledger.Plutus.Data () -import Cardano.Ledger.Rules.ValidationMode (applySTSNonStatic) -import qualified Cardano.Ledger.Shelley.API as API -import Cardano.Ledger.Shelley.API.Mempool -import Control.Arrow (left) -import Control.Monad.Except (MonadError, liftEither) -import Control.Monad.Reader (runReader) -import Control.State.Transition.Extended (TRC (TRC)) - -type Alonzo = AlonzoEra StandardCrypto - --- ===================================================== - -reapplyAlonzoTx :: - forall era m. - (API.ApplyTx era, MonadError (ApplyTxError era) m) => - Globals -> - MempoolEnv era -> - MempoolState era -> - Validated (Tx era) -> - m (MempoolState era) -reapplyAlonzoTx globals env state vtx = - let res = - flip runReader globals - . applySTSNonStatic - @(EraRule "LEDGER" era) - $ TRC (env, state, API.extractTx vtx) - in liftEither . left API.ApplyTxError $ res - -instance (Crypto c, DSignable c (Hash c EraIndependentTxBody)) => API.ApplyTx (AlonzoEra c) where - reapplyTx = reapplyAlonzoTx - -instance (Crypto c, DSignable c (Hash c EraIndependentTxBody)) => API.ApplyBlock (AlonzoEra c) - -instance Crypto c => API.CanStartFromGenesis (AlonzoEra c) where - type AdditionalGenesisConfig (AlonzoEra c) = AlonzoGenesis - fromShelleyPParams ag = translateEra' ag . API.fromShelleyPParams () diff --git a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Core.hs b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Core.hs deleted file mode 100644 index 295014dc10b..00000000000 --- a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Core.hs +++ /dev/null @@ -1,73 +0,0 @@ -{-# LANGUAGE PatternSynonyms #-} - -module Cardano.Ledger.Alonzo.Core ( - AlonzoEraTx (..), - AlonzoEraTxOut (..), - AlonzoEraScript (..), - AsIx (..), - AsItem (..), - AsIxItem (..), - pattern SpendingPurpose, - pattern MintingPurpose, - pattern CertifyingPurpose, - pattern RewardingPurpose, - ScriptIntegrityHash, - AlonzoEraTxBody (..), - AlonzoEraTxWits (..), - AlonzoEraPParams, - CoinPerWord (..), - ppCoinsPerUTxOWordL, - ppCostModelsL, - ppPricesL, - ppMaxTxExUnitsL, - ppMaxBlockExUnitsL, - ppMaxValSizeL, - ppCollateralPercentageL, - ppMaxCollateralInputsL, - ppuCoinsPerUTxOWordL, - ppuCostModelsL, - ppuPricesL, - ppuMaxTxExUnitsL, - ppuMaxBlockExUnitsL, - ppuMaxValSizeL, - ppuCollateralPercentageL, - ppuMaxCollateralInputsL, - module Cardano.Ledger.Mary.Core, -) -where - -import Cardano.Ledger.Alonzo.PParams ( - AlonzoEraPParams, - CoinPerWord (..), - ppCoinsPerUTxOWordL, - ppCollateralPercentageL, - ppCostModelsL, - ppMaxBlockExUnitsL, - ppMaxCollateralInputsL, - ppMaxTxExUnitsL, - ppMaxValSizeL, - ppPricesL, - ppuCoinsPerUTxOWordL, - ppuCollateralPercentageL, - ppuCostModelsL, - ppuMaxBlockExUnitsL, - ppuMaxCollateralInputsL, - ppuMaxTxExUnitsL, - ppuMaxValSizeL, - ppuPricesL, - ) -import Cardano.Ledger.Alonzo.Scripts ( - AlonzoEraScript (..), - AsItem (..), - AsIx (..), - AsIxItem (..), - pattern CertifyingPurpose, - pattern MintingPurpose, - pattern RewardingPurpose, - pattern SpendingPurpose, - ) -import Cardano.Ledger.Alonzo.Tx (AlonzoEraTx (..)) -import Cardano.Ledger.Alonzo.TxBody (AlonzoEraTxBody (..), ScriptIntegrityHash) -import Cardano.Ledger.Alonzo.TxOut (AlonzoEraTxOut (..)) -import Cardano.Ledger.Alonzo.TxWits (AlonzoEraTxWits (..)) -import Cardano.Ledger.Mary.Core diff --git a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Data.hs b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Data.hs deleted file mode 100644 index dafa3c4b3ac..00000000000 --- a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Data.hs +++ /dev/null @@ -1,10 +0,0 @@ -module Cardano.Ledger.Alonzo.Data - {-# DEPRECATED - "This module has been split into two \"Cardano.Ledger.Alonzo.TxAuxData\" and \"Cardano.Ledger.Plutus.Data\"" - #-} ( - module X, -) -where - -import Cardano.Ledger.Alonzo.TxAuxData as X -import Cardano.Ledger.Plutus.Data as X diff --git a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Era.hs b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Era.hs deleted file mode 100644 index 287206df049..00000000000 --- a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Era.hs +++ /dev/null @@ -1,92 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE TypeFamilies #-} - -module Cardano.Ledger.Alonzo.Era ( - AlonzoEra, - AlonzoUTXO, - AlonzoUTXOS, - AlonzoUTXOW, - AlonzoBBODY, - AlonzoLEDGER, -) -where - -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Mary (MaryEra, MaryValue) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.Rules - --- ===================================================== - --- | The Alonzo era -data AlonzoEra c - -instance Crypto c => Era (AlonzoEra c) where - type EraCrypto (AlonzoEra c) = c - type PreviousEra (AlonzoEra c) = MaryEra c - type ProtVerLow (AlonzoEra c) = 5 - type ProtVerHigh (AlonzoEra c) = 6 - - eraName = "Alonzo" - -type instance Value (AlonzoEra c) = MaryValue c - -------------------------------------------------------------------------------- --- Era Mapping -------------------------------------------------------------------------------- - --- These rules are new or changed in Alonzo - -data AlonzoUTXOS era - -type instance EraRule "UTXOS" (AlonzoEra c) = AlonzoUTXOS (AlonzoEra c) - -data AlonzoUTXO era - -type instance EraRule "UTXO" (AlonzoEra c) = AlonzoUTXO (AlonzoEra c) - -data AlonzoUTXOW era - -type instance EraRule "UTXOW" (AlonzoEra c) = AlonzoUTXOW (AlonzoEra c) - -data AlonzoLEDGER era - -type instance EraRule "LEDGER" (AlonzoEra c) = AlonzoLEDGER (AlonzoEra c) - -data AlonzoBBODY era - -type instance EraRule "BBODY" (AlonzoEra c) = AlonzoBBODY (AlonzoEra c) - --- Rules inherited from Shelley - -type instance EraRule "DELEG" (AlonzoEra c) = ShelleyDELEG (AlonzoEra c) - -type instance EraRule "DELEGS" (AlonzoEra c) = ShelleyDELEGS (AlonzoEra c) - -type instance EraRule "DELPL" (AlonzoEra c) = ShelleyDELPL (AlonzoEra c) - -type instance EraRule "EPOCH" (AlonzoEra c) = ShelleyEPOCH (AlonzoEra c) - -type instance EraRule "LEDGERS" (AlonzoEra c) = ShelleyLEDGERS (AlonzoEra c) - -type instance EraRule "MIR" (AlonzoEra c) = ShelleyMIR (AlonzoEra c) - -type instance EraRule "NEWEPOCH" (AlonzoEra c) = ShelleyNEWEPOCH (AlonzoEra c) - -type instance EraRule "NEWPP" (AlonzoEra c) = ShelleyNEWPP (AlonzoEra c) - -type instance EraRule "POOL" (AlonzoEra c) = ShelleyPOOL (AlonzoEra c) - -type instance EraRule "POOLREAP" (AlonzoEra c) = ShelleyPOOLREAP (AlonzoEra c) - -type instance EraRule "PPUP" (AlonzoEra c) = ShelleyPPUP (AlonzoEra c) - -type instance EraRule "RUPD" (AlonzoEra c) = ShelleyRUPD (AlonzoEra c) - -type instance EraRule "SNAP" (AlonzoEra c) = ShelleySNAP (AlonzoEra c) - -type instance EraRule "TICK" (AlonzoEra c) = ShelleyTICK (AlonzoEra c) - -type instance EraRule "TICKF" (AlonzoEra c) = ShelleyTICKF (AlonzoEra c) - -type instance EraRule "UPEC" (AlonzoEra c) = ShelleyUPEC (AlonzoEra c) diff --git a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Genesis.hs b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Genesis.hs deleted file mode 100644 index 502bdbcc122..00000000000 --- a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Genesis.hs +++ /dev/null @@ -1,241 +0,0 @@ -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE ViewPatterns #-} - -module Cardano.Ledger.Alonzo.Genesis ( - AlonzoGenesis ( - AlonzoGenesisWrapper, - unAlonzoGenesisWrapper, - AlonzoGenesis, - agCoinsPerUTxOWord, - agCostModels, - agPrices, - agMaxTxExUnits, - agMaxBlockExUnits, - agMaxValSize, - agCollateralPercentage, - agMaxCollateralInputs - ), - toAlonzoGenesisPairs, - - -- * Deprecated - alonzoGenesisAesonPairs, - coinsPerUTxOWord, - costmdls, - prices, - maxTxExUnits, - maxBlockExUnits, - maxValSize, - collateralPercentage, - maxCollateralInputs, -) -where - -import Cardano.Ledger.Alonzo.Era (AlonzoEra) -import Cardano.Ledger.Alonzo.PParams (CoinPerWord, UpgradeAlonzoPParams (..)) -import Cardano.Ledger.Alonzo.Scripts (CostModels, ExUnits (..), Prices (..)) -import Cardano.Ledger.Binary ( - DecCBOR, - EncCBOR, - FromCBOR (..), - ToCBOR (..), - ) -import Cardano.Ledger.Binary.Coders ( - Decode (From, RecD), - Encode (Rec, To), - decode, - encode, - (!>), - ( - CostModels -> - Prices -> - ExUnits -> - ExUnits -> - Natural -> - Natural -> - Natural -> - AlonzoGenesis -pattern AlonzoGenesis - { agCoinsPerUTxOWord - , agCostModels - , agPrices - , agMaxTxExUnits - , agMaxBlockExUnits - , agMaxValSize - , agCollateralPercentage - , agMaxCollateralInputs - } <- - ( unAlonzoGenesisWrapper -> - UpgradeAlonzoPParams - { uappCoinsPerUTxOWord = agCoinsPerUTxOWord - , uappCostModels = agCostModels - , uappPrices = agPrices - , uappMaxTxExUnits = agMaxTxExUnits - , uappMaxBlockExUnits = agMaxBlockExUnits - , uappMaxValSize = agMaxValSize - , uappCollateralPercentage = agCollateralPercentage - , uappMaxCollateralInputs = agMaxCollateralInputs - } - ) - where - AlonzoGenesis - coinsPerUTxOWord_ - costModels_ - prices_ - maxTxExUnits_ - maxBlockExUnits_ - maxValSize_ - collateralPercentage_ - maxCollateralInputs_ = - AlonzoGenesisWrapper $ - UpgradeAlonzoPParams - { uappCoinsPerUTxOWord = coinsPerUTxOWord_ - , uappCostModels = costModels_ - , uappPrices = prices_ - , uappMaxTxExUnits = maxTxExUnits_ - , uappMaxBlockExUnits = maxBlockExUnits_ - , uappMaxValSize = maxValSize_ - , uappCollateralPercentage = collateralPercentage_ - , uappMaxCollateralInputs = maxCollateralInputs_ - } - -{-# COMPLETE AlonzoGenesis #-} - --------------------------------------------------------------------------------- --- Serialisation --------------------------------------------------------------------------------- - --- | Genesis types are always encoded with the version of era they are defined in. -instance DecCBOR AlonzoGenesis - -instance EncCBOR AlonzoGenesis - -instance FromCBOR AlonzoGenesis where - fromCBOR = - eraDecoder @(AlonzoEra StandardCrypto) $ - decode $ - RecD AlonzoGenesis - To agCoinsPerUTxOWord - !> To agCostModels - !> To agPrices - !> To agMaxTxExUnits - !> To agMaxBlockExUnits - !> To agMaxValSize - !> To agCollateralPercentage - !> To agMaxCollateralInputs - -instance FromJSON AlonzoGenesis where - parseJSON = Aeson.withObject "Alonzo Genesis" $ \o -> do - agCoinsPerUTxOWord <- o .: "lovelacePerUTxOWord" - agCostModels <- o .: "costModels" - agPrices <- o .: "executionPrices" - agMaxTxExUnits <- o .: "maxTxExUnits" - agMaxBlockExUnits <- o .: "maxBlockExUnits" - agMaxValSize <- o .: "maxValueSize" - agCollateralPercentage <- o .: "collateralPercentage" - agMaxCollateralInputs <- o .: "maxCollateralInputs" - return AlonzoGenesis {..} - -instance ToJSON AlonzoGenesis where - toJSON = object . toAlonzoGenesisPairs - toEncoding = pairs . mconcat . toAlonzoGenesisPairs - -toAlonzoGenesisPairs :: Aeson.KeyValue e a => AlonzoGenesis -> [a] -toAlonzoGenesisPairs ag = - [ "lovelacePerUTxOWord" .= coinsPerUTxOWord ag - , "costModels" .= costmdls ag - , "executionPrices" .= prices ag - , "maxTxExUnits" .= maxTxExUnits ag - , "maxBlockExUnits" .= maxBlockExUnits ag - , "maxValueSize" .= maxValSize ag - , "collateralPercentage" .= collateralPercentage ag - , "maxCollateralInputs" .= maxCollateralInputs ag - ] - -alonzoGenesisAesonPairs :: Aeson.KeyValue e a => AlonzoGenesis -> [a] -alonzoGenesisAesonPairs = toAlonzoGenesisPairs -{-# DEPRECATED alonzoGenesisAesonPairs "In favor of `toAlonzoGenesisPairs`" #-} - -coinsPerUTxOWord :: AlonzoGenesis -> CoinPerWord -coinsPerUTxOWord = agCoinsPerUTxOWord -{-# DEPRECATED coinsPerUTxOWord "Use `agCoinsPerUTxOWord` instead" #-} - -costmdls :: AlonzoGenesis -> CostModels -costmdls = agCostModels -{-# DEPRECATED costmdls "Use `agCostModels` instead" #-} - -prices :: AlonzoGenesis -> Prices -prices = agPrices -{-# DEPRECATED prices "Use `agPrices` instead" #-} - -maxTxExUnits :: AlonzoGenesis -> ExUnits -maxTxExUnits = agMaxTxExUnits -{-# DEPRECATED maxTxExUnits "Use `agMaxTxExUnits` instead" #-} - -maxBlockExUnits :: AlonzoGenesis -> ExUnits -maxBlockExUnits = agMaxBlockExUnits -{-# DEPRECATED maxBlockExUnits "Use `agMaxBlockExUnits` instead" #-} - -maxValSize :: AlonzoGenesis -> Natural -maxValSize = agMaxValSize -{-# DEPRECATED maxValSize "Use `agMaxValSize` instead" #-} - -collateralPercentage :: AlonzoGenesis -> Natural -collateralPercentage = agCollateralPercentage -{-# DEPRECATED collateralPercentage "Use `agCollateralPercentage` instead" #-} - -maxCollateralInputs :: AlonzoGenesis -> Natural -maxCollateralInputs = agMaxCollateralInputs -{-# DEPRECATED maxCollateralInputs "Use `agMaxCollateralInputs` instead" #-} diff --git a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Language.hs b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Language.hs deleted file mode 100644 index e1c9ee31faa..00000000000 --- a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Language.hs +++ /dev/null @@ -1,5 +0,0 @@ -module Cardano.Ledger.Alonzo.Language - {-# DEPRECATED "Use \"Cardano.Ledger.Plutus.Language\" instead" #-} - (module Cardano.Ledger.Plutus.Language) where - -import Cardano.Ledger.Plutus.Language diff --git a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/PParams.hs b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/PParams.hs deleted file mode 100644 index bce3a166436..00000000000 --- a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/PParams.hs +++ /dev/null @@ -1,866 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE InstanceSigs #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} -{-# OPTIONS_GHC -Wno-orphans #-} - --- | This module contains just the type of protocol parameters. -module Cardano.Ledger.Alonzo.PParams ( - -- * Era Agnostic - AlonzoEraPParams (..), - ppCoinsPerUTxOWordL, - ppCostModelsL, - ppPricesL, - ppMaxTxExUnitsL, - ppMaxBlockExUnitsL, - ppMaxValSizeL, - ppCollateralPercentageL, - ppMaxCollateralInputsL, - ppuCoinsPerUTxOWordL, - ppuCostModelsL, - ppuPricesL, - ppuMaxTxExUnitsL, - ppuMaxBlockExUnitsL, - ppuMaxValSizeL, - ppuCollateralPercentageL, - ppuMaxCollateralInputsL, - - -- * Alonzo specific - AlonzoPParams (..), - UpgradeAlonzoPParams (..), - DowngradeAlonzoPParams (..), - emptyAlonzoPParams, - emptyAlonzoPParamsUpdate, - upgradeAlonzoPParams, - downgradeAlonzoPParams, - getLanguageView, - LangDepView (..), - encodeLangViews, - OrdExUnits (..), - CoinPerWord (..), - - -- * JSON helpers - alonzoCommonPParamsHKDPairs, -) -where - -import Cardano.Ledger.Alonzo.Era (AlonzoEra) -import Cardano.Ledger.BaseTypes ( - EpochInterval (..), - NonNegativeInterval, - Nonce (NeutralNonce), - StrictMaybe (..), - UnitInterval, - isSNothing, - ) -import qualified Cardano.Ledger.BaseTypes as BT (ProtVer (..)) -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - Encoding, - FromCBOR (..), - ToCBOR (..), - decCBORGroup, - decodeRecordNamed, - encCBORGroup, - encodeFoldableAsDefLenList, - encodeFoldableAsIndefLenList, - encodeListLen, - encodeMapLen, - encodeNull, - encodePreEncoded, - listLen, - serialize', - ) -import Cardano.Ledger.Binary.Coders ( - Decode (..), - Density (..), - Encode (..), - Field (..), - Wrapped (..), - decode, - encode, - field, - (!>), - ) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Core (EraPParams (..)) -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.HKD (HKD, HKDFunctor (..)) -import Cardano.Ledger.Mary.Core -import Cardano.Ledger.Plutus.CostModels ( - CostModel, - CostModels, - costModelsValid, - emptyCostModels, - getCostModelLanguage, - getCostModelParams, - ) -import Cardano.Ledger.Plutus.ExUnits ( - ExUnits (..), - Prices (..), - zipSemiExUnits, - ) -import Cardano.Ledger.Plutus.Language (Language (..)) -import Cardano.Ledger.Shelley.PParams ( - ShelleyPParams (..), - emptyPPPUpdates, - shelleyCommonPParamsHKDPairs, - shelleyCommonPParamsHKDPairsV6, - shelleyCommonPParamsHKDPairsV8, - ) -import Control.DeepSeq (NFData) -import Data.Aeson as Aeson ( - FromJSON (parseJSON), - Key, - KeyValue ((.=)), - ToJSON (..), - object, - pairs, - withObject, - (.!=), - (.:), - ) -import qualified Data.Aeson.Types as Aeson -import Data.ByteString (ByteString) -import qualified Data.ByteString as BS -import Data.Coerce (coerce) -import Data.Default.Class (Default (def)) -import Data.Function (on) -import Data.Functor.Identity (Identity (..)) -import Data.List (sortBy) -import qualified Data.Map.Strict as Map -import Data.Proxy (Proxy (Proxy)) -import Data.Set (Set) -import qualified Data.Set as Set -import Data.Word (Word16, Word32) -import GHC.Generics (Generic) -import Lens.Micro (Lens', lens, (^.)) -import NoThunks.Class (NoThunks (..)) -import Numeric.Natural (Natural) - -class EraPParams era => AlonzoEraPParams era where - hkdCoinsPerUTxOWordL :: - (HKDFunctor f, ExactEra AlonzoEra era) => - Lens' (PParamsHKD f era) (HKD f CoinPerWord) - - hkdCostModelsL :: HKDFunctor f => Lens' (PParamsHKD f era) (HKD f CostModels) - - hkdPricesL :: HKDFunctor f => Lens' (PParamsHKD f era) (HKD f Prices) - - hkdMaxTxExUnitsL :: HKDFunctor f => Lens' (PParamsHKD f era) (HKD f ExUnits) - - hkdMaxBlockExUnitsL :: HKDFunctor f => Lens' (PParamsHKD f era) (HKD f ExUnits) - - hkdMaxValSizeL :: HKDFunctor f => Lens' (PParamsHKD f era) (HKD f Natural) - - hkdCollateralPercentageL :: HKDFunctor f => Lens' (PParamsHKD f era) (HKD f Natural) - - hkdMaxCollateralInputsL :: HKDFunctor f => Lens' (PParamsHKD f era) (HKD f Natural) - -ppCoinsPerUTxOWordL :: - forall era. - (AlonzoEraPParams era, ExactEra AlonzoEra era) => - Lens' (PParams era) CoinPerWord -ppCoinsPerUTxOWordL = ppLens . hkdCoinsPerUTxOWordL @era @Identity - -ppCostModelsL :: forall era. AlonzoEraPParams era => Lens' (PParams era) CostModels -ppCostModelsL = ppLens . hkdCostModelsL @era @Identity - -ppPricesL :: forall era. AlonzoEraPParams era => Lens' (PParams era) Prices -ppPricesL = ppLens . hkdPricesL @era @Identity - -ppMaxTxExUnitsL :: forall era. AlonzoEraPParams era => Lens' (PParams era) ExUnits -ppMaxTxExUnitsL = ppLens . hkdMaxTxExUnitsL @era @Identity - -ppMaxBlockExUnitsL :: forall era. AlonzoEraPParams era => Lens' (PParams era) ExUnits -ppMaxBlockExUnitsL = ppLens . hkdMaxBlockExUnitsL @era @Identity - -ppMaxValSizeL :: forall era. AlonzoEraPParams era => Lens' (PParams era) Natural -ppMaxValSizeL = ppLens . hkdMaxValSizeL @era @Identity - -ppCollateralPercentageL :: forall era. AlonzoEraPParams era => Lens' (PParams era) Natural -ppCollateralPercentageL = ppLens . hkdCollateralPercentageL @era @Identity - -ppMaxCollateralInputsL :: forall era. AlonzoEraPParams era => Lens' (PParams era) Natural -ppMaxCollateralInputsL = ppLens . hkdMaxCollateralInputsL @era @Identity - -ppuCoinsPerUTxOWordL :: - forall era. - (AlonzoEraPParams era, ExactEra AlonzoEra era) => - Lens' (PParamsUpdate era) (StrictMaybe CoinPerWord) -ppuCoinsPerUTxOWordL = ppuLens . hkdCoinsPerUTxOWordL @era @StrictMaybe - -ppuCostModelsL :: - forall era. - AlonzoEraPParams era => - Lens' (PParamsUpdate era) (StrictMaybe CostModels) -ppuCostModelsL = ppuLens . hkdCostModelsL @era @StrictMaybe - -ppuPricesL :: - forall era. - AlonzoEraPParams era => - Lens' (PParamsUpdate era) (StrictMaybe Prices) -ppuPricesL = ppuLens . hkdPricesL @era @StrictMaybe - -ppuMaxTxExUnitsL :: - forall era. - AlonzoEraPParams era => - Lens' (PParamsUpdate era) (StrictMaybe ExUnits) -ppuMaxTxExUnitsL = ppuLens . hkdMaxTxExUnitsL @era @StrictMaybe - -ppuMaxBlockExUnitsL :: - forall era. - AlonzoEraPParams era => - Lens' (PParamsUpdate era) (StrictMaybe ExUnits) -ppuMaxBlockExUnitsL = ppuLens . hkdMaxBlockExUnitsL @era @StrictMaybe - -ppuMaxValSizeL :: - forall era. - AlonzoEraPParams era => - Lens' (PParamsUpdate era) (StrictMaybe Natural) -ppuMaxValSizeL = ppuLens . hkdMaxValSizeL @era @StrictMaybe - -ppuCollateralPercentageL :: - forall era. - AlonzoEraPParams era => - Lens' (PParamsUpdate era) (StrictMaybe Natural) -ppuCollateralPercentageL = ppuLens . hkdCollateralPercentageL @era @StrictMaybe - -ppuMaxCollateralInputsL :: - forall era. - AlonzoEraPParams era => - Lens' (PParamsUpdate era) (StrictMaybe Natural) -ppuMaxCollateralInputsL = ppuLens . hkdMaxCollateralInputsL @era @StrictMaybe - --- | Protocol parameters. --- Shelley parameters + additional ones -data AlonzoPParams f era = AlonzoPParams - { appMinFeeA :: !(HKD f Coin) - -- ^ The linear factor for the minimum fee calculation - , appMinFeeB :: !(HKD f Coin) - -- ^ The constant factor for the minimum fee calculation - , appMaxBBSize :: !(HKD f Word32) - -- ^ Maximal block body size - , appMaxTxSize :: !(HKD f Word32) - -- ^ Maximal transaction size - , appMaxBHSize :: !(HKD f Word16) - -- ^ Maximal block header size - , appKeyDeposit :: !(HKD f Coin) - -- ^ The amount of a key registration deposit - , appPoolDeposit :: !(HKD f Coin) - -- ^ The amount of a pool registration deposit - , appEMax :: !(HKD f EpochInterval) - -- ^ Maximum number of epochs in the future a pool retirement is allowed to - -- be scheduled for. - , appNOpt :: !(HKD f Natural) - -- ^ Desired number of pools - , appA0 :: !(HKD f NonNegativeInterval) - -- ^ Pool influence - , appRho :: !(HKD f UnitInterval) - -- ^ Monetary expansion - , appTau :: !(HKD f UnitInterval) - -- ^ Treasury expansion - , appD :: !(HKD f UnitInterval) - -- ^ Decentralization parameter. Note that the scale is inverted here - a - -- value of 0 indicates full decentralisation, where 1 indicates full - -- federalisation. - , appExtraEntropy :: !(HKD f Nonce) - -- ^ Extra entropy - , appProtocolVersion :: !(HKD f BT.ProtVer) - -- ^ Protocol version - , appMinPoolCost :: !(HKD f Coin) - -- ^ Minimum Stake Pool Cost - , -- new/updated for alonzo - - appCoinsPerUTxOWord :: !(HKD f CoinPerWord) - -- ^ Cost in lovelace per word (8 bytes) of UTxO storage (instead of appMinUTxOValue) - , appCostModels :: !(HKD f CostModels) - -- ^ Cost models for non-native script languages - , appPrices :: !(HKD f Prices) - -- ^ Prices of execution units (for non-native script languages) - , appMaxTxExUnits :: !(HKD f OrdExUnits) - -- ^ Max total script execution resources units allowed per tx - , appMaxBlockExUnits :: !(HKD f OrdExUnits) - -- ^ Max total script execution resources units allowed per block - , appMaxValSize :: !(HKD f Natural) - -- ^ Max size of a Value in an output - , appCollateralPercentage :: !(HKD f Natural) - -- ^ Percentage of the txfee which must be provided as collateral when - -- including non-native scripts. - , appMaxCollateralInputs :: !(HKD f Natural) - -- ^ Maximum number of collateral inputs allowed in a transaction - } - deriving (Generic) - -deriving instance Eq (AlonzoPParams Identity era) - -deriving instance Ord (AlonzoPParams Identity era) - -deriving instance Show (AlonzoPParams Identity era) - -instance NoThunks (AlonzoPParams Identity era) - -instance NFData (AlonzoPParams Identity era) - -deriving instance Eq (AlonzoPParams StrictMaybe era) - -deriving instance Ord (AlonzoPParams StrictMaybe era) - -deriving instance Show (AlonzoPParams StrictMaybe era) - -instance NoThunks (AlonzoPParams StrictMaybe era) - -instance NFData (AlonzoPParams StrictMaybe era) - -instance Crypto c => EraPParams (AlonzoEra c) where - type PParamsHKD f (AlonzoEra c) = AlonzoPParams f (AlonzoEra c) - type UpgradePParams f (AlonzoEra c) = UpgradeAlonzoPParams f - type DowngradePParams f (AlonzoEra c) = DowngradeAlonzoPParams f - - emptyPParamsIdentity = emptyAlonzoPParams - emptyPParamsStrictMaybe = emptyAlonzoPParamsUpdate - - upgradePParamsHKD = upgradeAlonzoPParams - downgradePParamsHKD = downgradeAlonzoPParams - - hkdMinFeeAL = lens appMinFeeA $ \pp x -> pp {appMinFeeA = x} - hkdMinFeeBL = lens appMinFeeB $ \pp x -> pp {appMinFeeB = x} - hkdMaxBBSizeL = lens appMaxBBSize $ \pp x -> pp {appMaxBBSize = x} - hkdMaxTxSizeL = lens appMaxTxSize $ \pp x -> pp {appMaxTxSize = x} - hkdMaxBHSizeL = lens appMaxBHSize $ \pp x -> pp {appMaxBHSize = x} - hkdKeyDepositL = lens appKeyDeposit $ \pp x -> pp {appKeyDeposit = x} - hkdPoolDepositL = lens appPoolDeposit $ \pp x -> pp {appPoolDeposit = x} - hkdEMaxL = lens appEMax $ \pp x -> pp {appEMax = x} - hkdNOptL = lens appNOpt $ \pp x -> pp {appNOpt = x} - hkdA0L = lens appA0 $ \pp x -> pp {appA0 = x} - hkdRhoL = lens appRho $ \pp x -> pp {appRho = x} - hkdTauL = lens appTau $ \pp x -> pp {appTau = x} - hkdDL = lens appD $ \pp x -> pp {appD = x} - hkdExtraEntropyL = lens appExtraEntropy $ \pp x -> pp {appExtraEntropy = x} - hkdProtocolVersionL = lens appProtocolVersion $ \pp x -> pp {appProtocolVersion = x} - hkdMinUTxOValueL = notSupportedInThisEraL - hkdMinPoolCostL = lens appMinPoolCost $ \pp x -> pp {appMinPoolCost = x} - -instance Crypto c => AlonzoEraPParams (AlonzoEra c) where - hkdCoinsPerUTxOWordL = lens appCoinsPerUTxOWord $ \pp x -> pp {appCoinsPerUTxOWord = x} - hkdCostModelsL = lens appCostModels $ \pp x -> pp {appCostModels = x} - hkdPricesL = lens appPrices $ \pp x -> pp {appPrices = x} - hkdMaxTxExUnitsL :: forall f. HKDFunctor f => Lens' (PParamsHKD f (AlonzoEra c)) (HKD f ExUnits) - hkdMaxTxExUnitsL = - lens (hkdMap (Proxy @f) unOrdExUnits . appMaxTxExUnits) $ \pp x -> - pp {appMaxTxExUnits = hkdMap (Proxy @f) OrdExUnits x} - hkdMaxBlockExUnitsL :: forall f. HKDFunctor f => Lens' (PParamsHKD f (AlonzoEra c)) (HKD f ExUnits) - hkdMaxBlockExUnitsL = - lens (hkdMap (Proxy @f) unOrdExUnits . appMaxBlockExUnits) $ \pp x -> - pp {appMaxBlockExUnits = hkdMap (Proxy @f) OrdExUnits x} - hkdMaxValSizeL = lens appMaxValSize $ \pp x -> pp {appMaxValSize = x} - hkdCollateralPercentageL = - lens appCollateralPercentage $ \pp x -> pp {appCollateralPercentage = x} - hkdMaxCollateralInputsL = - lens appMaxCollateralInputs $ \pp x -> pp {appMaxCollateralInputs = x} - -instance Crypto c => EraGov (AlonzoEra c) where - type GovState (AlonzoEra c) = ShelleyGovState (AlonzoEra c) - emptyGovState = - ShelleyGovState - emptyPPPUpdates - emptyPPPUpdates - emptyPParams - emptyPParams - - getProposedPPUpdates = Just . sgsCurProposals - - curPParamsGovStateL = curPParamsShelleyGovStateL - - prevPParamsGovStateL = prevPParamsShelleyGovStateL - - obligationGovState = const mempty - -instance Era era => EncCBOR (AlonzoPParams Identity era) where - encCBOR AlonzoPParams {..} = - encodeListLen (23 + listLen appProtocolVersion) - <> encCBOR appMinFeeA - <> encCBOR appMinFeeB - <> encCBOR appMaxBBSize - <> encCBOR appMaxTxSize - <> encCBOR appMaxBHSize - <> encCBOR appKeyDeposit - <> encCBOR appPoolDeposit - <> encCBOR appEMax - <> encCBOR appNOpt - <> encCBOR appA0 - <> encCBOR appRho - <> encCBOR appTau - <> encCBOR appD - <> encCBOR appExtraEntropy - <> encCBORGroup appProtocolVersion - <> encCBOR appMinPoolCost - -- new/updated for alonzo - <> encCBOR appCoinsPerUTxOWord - <> encCBOR appCostModels - <> encCBOR appPrices - <> encCBOR appMaxTxExUnits - <> encCBOR appMaxBlockExUnits - <> encCBOR appMaxValSize - <> encCBOR appCollateralPercentage - <> encCBOR appMaxCollateralInputs - -instance Era era => DecCBOR (AlonzoPParams Identity era) where - decCBOR = - decodeRecordNamed "PParams" (\pp -> 23 + fromIntegral (listLen (appProtocolVersion pp))) $ do - appMinFeeA <- decCBOR - appMinFeeB <- decCBOR - appMaxBBSize <- decCBOR - appMaxTxSize <- decCBOR - appMaxBHSize <- decCBOR - appKeyDeposit <- decCBOR - appPoolDeposit <- decCBOR - appEMax <- decCBOR - appNOpt <- decCBOR - appA0 <- decCBOR - appRho <- decCBOR - appTau <- decCBOR - appD <- decCBOR - appExtraEntropy <- decCBOR - appProtocolVersion <- decCBORGroup - appMinPoolCost <- decCBOR - -- new/updated for alonzo - appCoinsPerUTxOWord <- decCBOR - appCostModels <- decCBOR - appPrices <- decCBOR - appMaxTxExUnits <- decCBOR - appMaxBlockExUnits <- decCBOR - appMaxValSize <- decCBOR - appCollateralPercentage <- decCBOR - appMaxCollateralInputs <- decCBOR - pure AlonzoPParams {..} - -instance Era era => ToCBOR (AlonzoPParams Identity era) where - toCBOR = toEraCBOR @era - -instance Era era => FromCBOR (AlonzoPParams Identity era) where - fromCBOR = fromEraCBOR @era - -instance Crypto c => ToJSON (AlonzoPParams Identity (AlonzoEra c)) where - toJSON = object . alonzoPParamsPairs - toEncoding = pairs . mconcat . alonzoPParamsPairs - -alonzoPParamsPairs :: - forall c a e. - (Crypto c, KeyValue e a) => - PParamsHKD Identity (AlonzoEra c) -> - [a] -alonzoPParamsPairs pp = - uncurry (.=) <$> alonzoPParamsHKDPairs (Proxy @Identity) pp - -instance FromJSON (AlonzoPParams Identity era) where - parseJSON = - Aeson.withObject "PParams" $ \obj -> - AlonzoPParams - <$> obj .: "txFeePerByte" - <*> obj .: "txFeeFixed" - <*> obj .: "maxBlockBodySize" - <*> obj .: "maxTxSize" - <*> obj .: "maxBlockHeaderSize" - <*> obj .: "stakeAddressDeposit" - <*> obj .: "stakePoolDeposit" - <*> obj .: "poolRetireMaxEpoch" - <*> obj .: "stakePoolTargetNum" - <*> obj .: "poolPledgeInfluence" - <*> obj .: "monetaryExpansion" - <*> obj .: "treasuryCut" - <*> obj .: "decentralization" - <*> obj .: "extraPraosEntropy" - <*> obj .: "protocolVersion" - <*> obj .: "minPoolCost" .!= mempty - <*> obj .: "utxoCostPerByte" - <*> obj .: "costModels" - <*> obj .: "executionUnitPrices" - <*> obj .: "maxTxExecutionUnits" - <*> obj .: "maxBlockExecutionUnits" - <*> obj .: "maxValueSize" - <*> obj .: "collateralPercentage" - <*> obj .: "maxCollateralInputs" - -newtype CoinPerWord = CoinPerWord {unCoinPerWord :: Coin} - deriving stock (Eq, Ord) - deriving newtype (EncCBOR, DecCBOR, ToJSON, FromJSON, NFData, NoThunks, Show) - --- | This is a helper type that allows us to define an `Ord` instance for executions units --- without affecting the `ExUnits` type. This is needed in order to derive an `Ord` instance` --- for PParams. This is just a helper type and should not be used directly. Both lenses --- that operate on TxExUnits and BlockExUnits use the `ExUnits` type, not this one. -newtype OrdExUnits = OrdExUnits {unOrdExUnits :: ExUnits} - deriving (Eq) - deriving newtype (Show, NoThunks, NFData, DecCBOR, EncCBOR, FromJSON, ToJSON) - -instance Ord OrdExUnits where - compare = coerce (zipSemiExUnits compare) - --- | Parameters that were added in Alonzo -data UpgradeAlonzoPParams f = UpgradeAlonzoPParams - { uappCoinsPerUTxOWord :: !(HKD f CoinPerWord) - , uappCostModels :: !(HKD f CostModels) - , uappPrices :: !(HKD f Prices) - , uappMaxTxExUnits :: !(HKD f ExUnits) - , uappMaxBlockExUnits :: !(HKD f ExUnits) - , uappMaxValSize :: !(HKD f Natural) - , uappCollateralPercentage :: !(HKD f Natural) - , uappMaxCollateralInputs :: !(HKD f Natural) - } - deriving (Generic) - -deriving instance Eq (UpgradeAlonzoPParams Identity) - -deriving instance Show (UpgradeAlonzoPParams Identity) - -instance NoThunks (UpgradeAlonzoPParams Identity) - -instance NFData (UpgradeAlonzoPParams Identity) - -instance Default (UpgradeAlonzoPParams StrictMaybe) where - def = - UpgradeAlonzoPParams - { uappCoinsPerUTxOWord = SNothing - , uappCostModels = SNothing - , uappPrices = SNothing - , uappMaxTxExUnits = SNothing - , uappMaxBlockExUnits = SNothing - , uappMaxValSize = SNothing - , uappCollateralPercentage = SNothing - , uappMaxCollateralInputs = SNothing - } - --- | Parameters that were removed in Alonzo -newtype DowngradeAlonzoPParams f = DowngradeAlonzoPParams - { dappMinUTxOValue :: HKD f Coin - } - deriving (Generic) - -deriving instance Eq (DowngradeAlonzoPParams Identity) - -deriving instance Show (DowngradeAlonzoPParams Identity) - -instance NoThunks (DowngradeAlonzoPParams Identity) - -instance NFData (DowngradeAlonzoPParams Identity) - --- | Returns a basic "empty" `PParams` structure with all zero values. -emptyAlonzoPParams :: forall era. Era era => AlonzoPParams Identity era -emptyAlonzoPParams = - AlonzoPParams - { appMinFeeA = Coin 0 - , appMinFeeB = Coin 0 - , appMaxBBSize = 0 - , appMaxTxSize = 2048 - , appMaxBHSize = 0 - , appKeyDeposit = Coin 0 - , appPoolDeposit = Coin 0 - , appEMax = EpochInterval 0 - , appNOpt = 100 - , appA0 = minBound - , appRho = minBound - , appTau = minBound - , appD = minBound - , appExtraEntropy = NeutralNonce - , appProtocolVersion = BT.ProtVer (eraProtVerLow @era) 0 - , appMinPoolCost = mempty - , -- new/updated for alonzo - appCoinsPerUTxOWord = CoinPerWord (Coin 0) - , appCostModels = emptyCostModels - , appPrices = Prices minBound minBound - , appMaxTxExUnits = OrdExUnits $ ExUnits 0 0 - , appMaxBlockExUnits = OrdExUnits $ ExUnits 0 0 - , appMaxValSize = 0 - , appCollateralPercentage = 150 - , appMaxCollateralInputs = 5 - } - -emptyAlonzoPParamsUpdate :: AlonzoPParams StrictMaybe era -emptyAlonzoPParamsUpdate = - AlonzoPParams - { appMinFeeA = SNothing - , appMinFeeB = SNothing - , appMaxBBSize = SNothing - , appMaxTxSize = SNothing - , appMaxBHSize = SNothing - , appKeyDeposit = SNothing - , appPoolDeposit = SNothing - , appEMax = SNothing - , appNOpt = SNothing - , appA0 = SNothing - , appRho = SNothing - , appTau = SNothing - , appD = SNothing - , appExtraEntropy = SNothing - , appProtocolVersion = SNothing - , appMinPoolCost = SNothing - , -- new/updated for alonzo - appCoinsPerUTxOWord = SNothing - , appCostModels = SNothing - , appPrices = SNothing - , appMaxTxExUnits = SNothing - , appMaxBlockExUnits = SNothing - , appMaxValSize = SNothing - , appCollateralPercentage = SNothing - , appMaxCollateralInputs = SNothing - } - --- ======================================================= --- A PParamsUpdate has StrictMaybe fields, we want to Sparse encode it, by --- writing only those fields where the field is (SJust x), that is the role of --- the local function (omitStrictMaybe key x) - -encodePParamsUpdate :: - AlonzoPParams StrictMaybe era -> - Encode ('Closed 'Sparse) (AlonzoPParams StrictMaybe era) -encodePParamsUpdate ppup = - Keyed AlonzoPParams - !> omitStrictMaybe 0 (appMinFeeA ppup) encCBOR - !> omitStrictMaybe 1 (appMinFeeB ppup) encCBOR - !> omitStrictMaybe 2 (appMaxBBSize ppup) encCBOR - !> omitStrictMaybe 3 (appMaxTxSize ppup) encCBOR - !> omitStrictMaybe 4 (appMaxBHSize ppup) encCBOR - !> omitStrictMaybe 5 (appKeyDeposit ppup) encCBOR - !> omitStrictMaybe 6 (appPoolDeposit ppup) encCBOR - !> omitStrictMaybe 7 (appEMax ppup) encCBOR - !> omitStrictMaybe 8 (appNOpt ppup) encCBOR - !> omitStrictMaybe 9 (appA0 ppup) encCBOR - !> omitStrictMaybe 10 (appRho ppup) encCBOR - !> omitStrictMaybe 11 (appTau ppup) encCBOR - !> omitStrictMaybe 12 (appD ppup) encCBOR - !> omitStrictMaybe 13 (appExtraEntropy ppup) encCBOR - !> omitStrictMaybe 14 (appProtocolVersion ppup) encCBOR - !> omitStrictMaybe 16 (appMinPoolCost ppup) encCBOR - !> omitStrictMaybe 17 (appCoinsPerUTxOWord ppup) encCBOR - !> omitStrictMaybe 18 (appCostModels ppup) encCBOR - !> omitStrictMaybe 19 (appPrices ppup) encCBOR - !> omitStrictMaybe 20 (appMaxTxExUnits ppup) encCBOR - !> omitStrictMaybe 21 (appMaxBlockExUnits ppup) encCBOR - !> omitStrictMaybe 22 (appMaxValSize ppup) encCBOR - !> omitStrictMaybe 23 (appCollateralPercentage ppup) encCBOR - !> omitStrictMaybe 24 (appMaxCollateralInputs ppup) encCBOR - where - omitStrictMaybe :: - Word -> StrictMaybe a -> (a -> Encoding) -> Encode ('Closed 'Sparse) (StrictMaybe a) - omitStrictMaybe key x enc = Omit isSNothing (Key key (E (enc . fromSJust) x)) - - fromSJust :: StrictMaybe a -> a - fromSJust (SJust x) = x - fromSJust SNothing = error "SNothing in fromSJust. This should never happen, it is guarded by isSNothing." - -instance Era era => EncCBOR (AlonzoPParams StrictMaybe era) where - encCBOR ppup = encode (encodePParamsUpdate ppup) - -updateField :: Word -> Field (AlonzoPParams StrictMaybe era) -updateField 0 = field (\x up -> up {appMinFeeA = SJust x}) From -updateField 1 = field (\x up -> up {appMinFeeB = SJust x}) From -updateField 2 = field (\x up -> up {appMaxBBSize = SJust x}) From -updateField 3 = field (\x up -> up {appMaxTxSize = SJust x}) From -updateField 4 = field (\x up -> up {appMaxBHSize = SJust x}) From -updateField 5 = field (\x up -> up {appKeyDeposit = SJust x}) From -updateField 6 = field (\x up -> up {appPoolDeposit = SJust x}) From -updateField 7 = field (\x up -> up {appEMax = SJust x}) From -updateField 8 = field (\x up -> up {appNOpt = SJust x}) From -updateField 9 = field (\x up -> up {appA0 = SJust x}) From -updateField 10 = field (\x up -> up {appRho = SJust x}) From -updateField 11 = field (\x up -> up {appTau = SJust x}) From -updateField 12 = field (\x up -> up {appD = SJust x}) From -updateField 13 = field (\x up -> up {appExtraEntropy = SJust x}) From -updateField 14 = field (\x up -> up {appProtocolVersion = SJust x}) From -updateField 16 = field (\x up -> up {appMinPoolCost = SJust x}) From -updateField 17 = field (\x up -> up {appCoinsPerUTxOWord = SJust x}) From -updateField 18 = field (\x up -> up {appCostModels = SJust x}) From -updateField 19 = field (\x up -> up {appPrices = SJust x}) From -updateField 20 = field (\x up -> up {appMaxTxExUnits = SJust x}) From -updateField 21 = field (\x up -> up {appMaxBlockExUnits = SJust x}) From -updateField 22 = field (\x up -> up {appMaxValSize = SJust x}) From -updateField 23 = field (\x up -> up {appCollateralPercentage = SJust x}) From -updateField 24 = field (\x up -> up {appMaxCollateralInputs = SJust x}) From -updateField k = field (\_x up -> up) (Invalid k) - -instance Era era => DecCBOR (AlonzoPParams StrictMaybe era) where - decCBOR = - decode (SparseKeyed "PParamsUpdate" emptyAlonzoPParamsUpdate updateField []) - -instance Era era => ToCBOR (AlonzoPParams StrictMaybe era) where - toCBOR = toEraCBOR @era - -instance Era era => FromCBOR (AlonzoPParams StrictMaybe era) where - fromCBOR = fromEraCBOR @era - -instance Crypto c => ToJSON (AlonzoPParams StrictMaybe (AlonzoEra c)) where - toJSON = object . alonzoPParamsUpdatePairs - toEncoding = pairs . mconcat . alonzoPParamsUpdatePairs - -alonzoPParamsUpdatePairs :: - forall c a e. - (Crypto c, KeyValue e a) => - PParamsHKD StrictMaybe (AlonzoEra c) -> - [a] -alonzoPParamsUpdatePairs pp = - [ k .= v - | (k, SJust v) <- alonzoPParamsHKDPairs (Proxy @StrictMaybe) pp - ] - -alonzoPParamsHKDPairs :: - forall f c. - (HKDFunctor f, Crypto c) => - Proxy f -> - PParamsHKD f (AlonzoEra c) -> - [(Key, HKD f Aeson.Value)] -alonzoPParamsHKDPairs px pp = - alonzoCommonPParamsHKDPairs px pp - ++ shelleyCommonPParamsHKDPairsV8 px pp - ++ shelleyCommonPParamsHKDPairsV6 px pp - ++ [("utxoCostPerByte", hkdMap px (toJSON @CoinPerWord) (pp ^. hkdCoinsPerUTxOWordL @_ @f))] - --- | These are the fields that are common across all eras starting with Alonzo. -alonzoCommonPParamsHKDPairs :: - forall f era. - (HKDFunctor f, AlonzoEraPParams era) => - Proxy f -> - PParamsHKD f era -> - [(Key, HKD f Aeson.Value)] -alonzoCommonPParamsHKDPairs px pp = - shelleyCommonPParamsHKDPairs px pp - ++ [ ("costModels", hkdMap px (toJSON @CostModels) (pp ^. hkdCostModelsL @era @f)) - , ("executionUnitPrices", hkdMap px (toJSON @Prices) (pp ^. hkdPricesL @era @f)) - , ("maxTxExecutionUnits", hkdMap px (toJSON @ExUnits) (pp ^. hkdMaxTxExUnitsL @era @f)) - , ("maxBlockExecutionUnits", hkdMap px (toJSON @ExUnits) (pp ^. hkdMaxBlockExUnitsL @era @f)) - , ("maxValueSize", hkdMap px (toJSON @Natural) (pp ^. hkdMaxValSizeL @era @f)) - , ("collateralPercentage", hkdMap px (toJSON @Natural) (pp ^. hkdCollateralPercentageL @era @f)) - , ("maxCollateralInputs", hkdMap px (toJSON @Natural) (pp ^. hkdMaxCollateralInputsL @era @f)) - ] - --- =================================================== --- Figure 1: "Definitions Used in Protocol Parameters" - --- The LangDepView is a key value pair. The key is the (canonically) encoded --- language tag and the value is the (canonically) encoded set of relevant --- protocol parameters -data LangDepView = LangDepView {tag :: ByteString, params :: ByteString} - deriving (Eq, Show, Ord, Generic, NoThunks) - -encodeCostModel :: CostModel -> Encoding -encodeCostModel cm = - case getCostModelLanguage cm of - -- In the Alonzo era, the map of languages to cost models was mistakenly encoded - -- using an indefinite CBOR map (contrary to canonical CBOR, as intended) when - -- computing the script integrity hash. - -- For this reason, PlutusV1 remains with this encoding. - -- Future versions of Plutus, starting with PlutusV2 in the Babbage era, will - -- use the intended definite length encoding. - PlutusV1 -> encodeFoldableAsIndefLenList encCBOR $ getCostModelParams cm - -- Since cost model serializations need to be independently reproduced, - -- we use the 'canonical' serialization with definite list length. - PlutusV2 -> encodeFoldableAsDefLenList encCBOR $ getCostModelParams cm - PlutusV3 -> encodeFoldableAsDefLenList encCBOR $ getCostModelParams cm - -getLanguageView :: - AlonzoEraPParams era => - PParams era -> - Language -> - LangDepView -getLanguageView pp lang = - case lang of - PlutusV1 -> - LangDepView -- The silly double bagging is to keep compatibility with a past bug - (serialize' version (serialize' version lang)) - (serialize' version costModelEncoding) - PlutusV2 -> latestLangDepView - PlutusV3 -> latestLangDepView - where - -- LangDepView for PlutusV1 differs from the rest - latestLangDepView = LangDepView (serialize' version lang) costModelEncoding - costModel = Map.lookup lang (costModelsValid $ pp ^. ppCostModelsL) - costModelEncoding = serialize' version $ maybe encodeNull encodeCostModel costModel - version = BT.pvMajor $ pp ^. ppProtocolVersionL - -encodeLangViews :: Set LangDepView -> Encoding -encodeLangViews views = encodeMapLen n <> foldMap encPair ascending - where - n = fromIntegral (Set.size views) :: Word - ascending = sortBy (shortLex `on` tag) $ Set.toList views - encPair (LangDepView k v) = encodePreEncoded k <> encodePreEncoded v - shortLex :: ByteString -> ByteString -> Ordering - shortLex a b - | BS.length a < BS.length b = LT - | BS.length a > BS.length b = GT - | otherwise = compare a b - --- | Given the missing pieces, turn a ShelleyPParams into a AlonzoPParams -upgradeAlonzoPParams :: - forall f era1 era2. - HKDFunctor f => - UpgradeAlonzoPParams f -> - ShelleyPParams f era1 -> - AlonzoPParams f era2 -upgradeAlonzoPParams UpgradeAlonzoPParams {..} ShelleyPParams {..} = - AlonzoPParams - { appMinFeeA = sppMinFeeA - , appMinFeeB = sppMinFeeB - , appMaxBBSize = sppMaxBBSize - , appMaxTxSize = sppMaxTxSize - , appMaxBHSize = sppMaxBHSize - , appKeyDeposit = sppKeyDeposit - , appPoolDeposit = sppPoolDeposit - , appEMax = sppEMax - , appNOpt = sppNOpt - , appA0 = sppA0 - , appRho = sppRho - , appTau = sppTau - , appD = sppD - , appExtraEntropy = sppExtraEntropy - , appProtocolVersion = sppProtocolVersion - , appMinPoolCost = sppMinPoolCost - , -- new in alonzo - appCoinsPerUTxOWord = uappCoinsPerUTxOWord - , appCostModels = uappCostModels - , appPrices = uappPrices - , appMaxTxExUnits = hkdMap (Proxy @f) OrdExUnits uappMaxTxExUnits - , appMaxBlockExUnits = hkdMap (Proxy @f) OrdExUnits uappMaxBlockExUnits - , appMaxValSize = uappMaxValSize - , appCollateralPercentage = uappCollateralPercentage - , appMaxCollateralInputs = uappMaxCollateralInputs - } - --- | Turn an AlonzoPParams into a ShelleyParams -downgradeAlonzoPParams :: DowngradeAlonzoPParams f -> AlonzoPParams f era2 -> ShelleyPParams f era1 -downgradeAlonzoPParams DowngradeAlonzoPParams {dappMinUTxOValue} AlonzoPParams {..} = - ShelleyPParams - { sppMinFeeA = appMinFeeA - , sppMinFeeB = appMinFeeB - , sppMaxBBSize = appMaxBBSize - , sppMaxTxSize = appMaxTxSize - , sppMaxBHSize = appMaxBHSize - , sppKeyDeposit = appKeyDeposit - , sppPoolDeposit = appPoolDeposit - , sppEMax = appEMax - , sppNOpt = appNOpt - , sppA0 = appA0 - , sppRho = appRho - , sppTau = appTau - , sppD = appD - , sppExtraEntropy = appExtraEntropy - , sppProtocolVersion = appProtocolVersion - , sppMinUTxOValue = dappMinUTxOValue -- <- parameter that was dropped in Alonzo - , sppMinPoolCost = appMinPoolCost - } diff --git a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Plutus/Context.hs b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Plutus/Context.hs deleted file mode 100644 index 82d04880502..00000000000 --- a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Plutus/Context.hs +++ /dev/null @@ -1,131 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DefaultSignatures #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilyDependencies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableSuperClasses #-} - -module Cardano.Ledger.Alonzo.Plutus.Context ( - EraPlutusTxInfo (..), - EraPlutusContext (..), - mkPlutusLanguageContext, - - -- * Language dependent translation - PlutusTxInfo, - PlutusTxCert, - PlutusScriptPurpose, - PlutusScriptContext, -) -where - -import Cardano.Ledger.Alonzo.Scripts ( - AlonzoEraScript, - AsIxItem (..), - PlutusPurpose, - PlutusScript (..), - ) -import Cardano.Ledger.Binary (DecCBOR (..), EncCBOR (..)) -import Cardano.Ledger.Core -import Cardano.Ledger.Plutus.Data (Data (..)) -import Cardano.Ledger.Plutus.Language (Language (..), PlutusLanguage) -import Cardano.Ledger.UTxO (UTxO (..)) -import Cardano.Slotting.EpochInfo (EpochInfo) -import Cardano.Slotting.Time (SystemStart) -import Control.DeepSeq (NFData) -import Data.Aeson (ToJSON) -import Data.Kind (Type) -import Data.Text (Text) -import NoThunks.Class (NoThunks) -import qualified PlutusLedgerApi.V1 as P (ToData, toData) -import qualified PlutusLedgerApi.V1 as PV1 -import qualified PlutusLedgerApi.V2 as PV2 -import qualified PlutusLedgerApi.V3 as PV3 - -class (PlutusLanguage l, EraPlutusContext era) => EraPlutusTxInfo (l :: Language) era where - toPlutusTxCert :: proxy l -> TxCert era -> Either (ContextError era) (PlutusTxCert l) - - toPlutusScriptPurpose :: - proxy l -> - PlutusPurpose AsIxItem era -> - Either (ContextError era) (PlutusScriptPurpose l) - - toPlutusTxInfo :: - proxy l -> - PParams era -> - EpochInfo (Either Text) -> - SystemStart -> - UTxO era -> - Tx era -> - Either (ContextError era) (PlutusTxInfo l) - - toPlutusScriptContext :: - proxy l -> - PlutusTxInfo l -> - PlutusPurpose AsIxItem era -> - Either (ContextError era) (PlutusScriptContext l) - -class - ( AlonzoEraScript era - , Eq (ContextError era) - , Show (ContextError era) - , NFData (ContextError era) - , NoThunks (ContextError era) - , EncCBOR (ContextError era) - , DecCBOR (ContextError era) - , ToJSON (ContextError era) - ) => - EraPlutusContext era - where - type ContextError era = (r :: Type) | r -> era - - mkPlutusScriptContext :: - PlutusScript era -> - PlutusPurpose AsIxItem era -> - PParams era -> - EpochInfo (Either Text) -> - SystemStart -> - UTxO era -> - Tx era -> - Either (ContextError era) (Data era) - -mkPlutusLanguageContext :: - (EraPlutusTxInfo l era, P.ToData (PlutusScriptContext l)) => - proxy l -> - PlutusPurpose AsIxItem era -> - PParams era -> - EpochInfo (Either Text) -> - SystemStart -> - UTxO era -> - Tx era -> - Either (ContextError era) (Data era) -mkPlutusLanguageContext proxy scriptPurpose pp epochInfo sysStart utxo tx = do - txInfo <- toPlutusTxInfo proxy pp epochInfo sysStart utxo tx - scriptContext <- toPlutusScriptContext proxy txInfo scriptPurpose - pure $ Data $ P.toData scriptContext - --- ============================================= --- Type families that specify Plutus types that are different from one version to another - -type family PlutusTxCert (l :: Language) where - PlutusTxCert 'PlutusV1 = PV1.DCert - PlutusTxCert 'PlutusV2 = PV2.DCert - PlutusTxCert 'PlutusV3 = PV3.TxCert - -type family PlutusScriptPurpose (l :: Language) where - PlutusScriptPurpose 'PlutusV1 = PV1.ScriptPurpose - PlutusScriptPurpose 'PlutusV2 = PV2.ScriptPurpose - PlutusScriptPurpose 'PlutusV3 = PV3.ScriptPurpose - -type family PlutusScriptContext (l :: Language) where - PlutusScriptContext 'PlutusV1 = PV1.ScriptContext - PlutusScriptContext 'PlutusV2 = PV2.ScriptContext - PlutusScriptContext 'PlutusV3 = PV3.ScriptContext - -type family PlutusTxInfo (l :: Language) where - PlutusTxInfo 'PlutusV1 = PV1.TxInfo - PlutusTxInfo 'PlutusV2 = PV2.TxInfo - PlutusTxInfo 'PlutusV3 = PV3.TxInfo diff --git a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Plutus/Evaluate.hs b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Plutus/Evaluate.hs deleted file mode 100644 index 441e2e29bb8..00000000000 --- a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Plutus/Evaluate.hs +++ /dev/null @@ -1,246 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} - -module Cardano.Ledger.Alonzo.Plutus.Evaluate ( - evalPlutusScripts, - evalPlutusScriptsWithLogs, - CollectError (..), - collectPlutusScriptsWithContext, - lookupPlutusScript, -) -where - -import Cardano.Ledger.Alonzo.Core -import Cardano.Ledger.Alonzo.Plutus.Context (EraPlutusContext (..)) -import Cardano.Ledger.Alonzo.Scripts (plutusScriptLanguage, toAsItem, toAsIx) -import Cardano.Ledger.Alonzo.TxWits (lookupRedeemer) -import Cardano.Ledger.Alonzo.UTxO (AlonzoEraUTxO (getSpendingDatum), AlonzoScriptsNeeded (..)) -import Cardano.Ledger.BaseTypes (ProtVer (pvMajor), kindObject, natVersion) -import Cardano.Ledger.Binary (DecCBOR (..), EncCBOR (..)) -import Cardano.Ledger.Binary.Coders -import Cardano.Ledger.Plutus.CostModels (costModelsValid) -import Cardano.Ledger.Plutus.Data (getPlutusData) -import Cardano.Ledger.Plutus.Evaluate ( - PlutusDatums (..), - PlutusWithContext (..), - ScriptResult (..), - runPlutusScriptWithLogs, - ) -import Cardano.Ledger.Plutus.Language (Language (..)) -import Cardano.Ledger.UTxO (EraUTxO (..), ScriptsProvided (..), UTxO (..)) -import Cardano.Slotting.EpochInfo (EpochInfo) -import Cardano.Slotting.Time (SystemStart) -import Control.DeepSeq (NFData) -import Control.Monad (guard) -import Data.Aeson (ToJSON (..), (.=), pattern String) -import Data.List (intercalate) -import qualified Data.Map.Strict as Map -import Data.Maybe (mapMaybe) -import qualified Data.Set as Set -import Data.Text (Text) -import Debug.Trace (traceEvent) -import GHC.Generics -import Lens.Micro -import NoThunks.Class (NoThunks) - --- =============================================================== --- From the specification, Figure 7 "Scripts and their Arguments" --- =============================================================== - --- | When collecting inputs for two phase scripts, 3 things can go wrong. -data CollectError era - = NoRedeemer !(PlutusPurpose AsItem era) - | NoWitness !(ScriptHash (EraCrypto era)) - | NoCostModel !Language - | BadTranslation !(ContextError era) - deriving (Generic) - -deriving instance - (AlonzoEraScript era, Eq (ContextError era)) => - Eq (CollectError era) - -deriving instance - (AlonzoEraScript era, Show (ContextError era)) => - Show (CollectError era) - -deriving instance - (AlonzoEraScript era, NoThunks (ContextError era)) => - NoThunks (CollectError era) - -deriving instance - (AlonzoEraScript era, NFData (ContextError era)) => - NFData (CollectError era) - -instance (AlonzoEraScript era, EncCBOR (ContextError era)) => EncCBOR (CollectError era) where - encCBOR (NoRedeemer x) = encode $ Sum NoRedeemer 0 !> To x - encCBOR (NoWitness x) = encode $ Sum (NoWitness @era) 1 !> To x - encCBOR (NoCostModel x) = encode $ Sum NoCostModel 2 !> To x - encCBOR (BadTranslation x) = encode $ Sum (BadTranslation @era) 3 !> To x - -instance (AlonzoEraScript era, DecCBOR (ContextError era)) => DecCBOR (CollectError era) where - decCBOR = decode (Summands "CollectError" dec) - where - dec 0 = SumD NoRedeemer - ToJSON (CollectError era) - where - toJSON = \case - NoRedeemer sPurpose -> - kindObject "CollectError" $ - [ "error" .= String "NoRedeemer" - , "plutusPurpose" .= toJSON sPurpose - ] - NoWitness sHash -> - kindObject "CollectError" $ - [ "error" .= String "NoWitness" - , "scriptHash" .= toJSON sHash - ] - NoCostModel lang -> - kindObject "CollectError" $ - [ "error" .= String "NoCostModel" - , "language" .= toJSON lang - ] - BadTranslation err -> - kindObject "BadTranslation" ["error" .= toJSON err] - --- | Given a script hash and a Map of available scripts, find the PlutusScript. Returns --- Nothing when script is missing or it is not a PlutusScript -lookupPlutusScript :: - AlonzoEraScript era => - Map.Map (ScriptHash (EraCrypto era)) (Script era) -> - ScriptHash (EraCrypto era) -> - Maybe (PlutusScript era) -lookupPlutusScript scriptsAvailable scriptHash = do - script <- scriptHash `Map.lookup` scriptsAvailable - toPlutusScript script - -collectPlutusScriptsWithContext :: - forall era. - ( AlonzoEraTxBody era - , AlonzoEraTxWits era - , AlonzoEraUTxO era - , ScriptsNeeded era ~ AlonzoScriptsNeeded era - , EraPlutusContext era - ) => - EpochInfo (Either Text) -> - SystemStart -> - PParams era -> - Tx era -> - UTxO era -> - Either [CollectError era] [PlutusWithContext (EraCrypto era)] -collectPlutusScriptsWithContext epochInfo sysStart pp tx utxo = - -- TODO: remove this whole complicated check when we get into Conway. It is much simpler - -- to fail on a CostModel lookup in the `apply` function (already implemented). - let missingCostModels = Set.filter (`Map.notMember` costModels) usedLanguages - in case guard (protVerMajor < natVersion @9) >> Set.lookupMin missingCostModels of - Just l -> Left [NoCostModel l] - Nothing -> - merge - apply - (map getScriptWithRedeemer neededPlutusScripts) - (Right []) - where - -- Check on a protocol version to preserve failure mode (a single NoCostModel failure - -- for languages with missing cost models) until we are in Conway era. After we hard - -- fork into Conway it will be safe to remove this check together with the - -- `missingCostModels` lookup - -- - -- We also need to pass major protocol version to the script for script evaluation - protVerMajor = pvMajor (pp ^. ppProtocolVersionL) - costModels = costModelsValid $ pp ^. ppCostModelsL - - ScriptsProvided scriptsProvided = getScriptsProvided utxo tx - AlonzoScriptsNeeded scriptsNeeded = getScriptsNeeded utxo (tx ^. bodyTxL) - neededPlutusScripts = - mapMaybe (\(sp, sh) -> (,) (sh, sp) <$> lookupPlutusScript scriptsProvided sh) scriptsNeeded - usedLanguages = Set.fromList $ map (plutusScriptLanguage . snd) neededPlutusScripts - - getScriptWithRedeemer ((plutusScriptHash, plutusPurpose), plutusScript) = - let redeemerIndex = hoistPlutusPurpose toAsIx plutusPurpose - in case lookupRedeemer redeemerIndex $ tx ^. witsTxL . rdmrsTxWitsL of - Just (d, exUnits) -> Right (plutusScript, plutusPurpose, d, exUnits, plutusScriptHash) - Nothing -> Left (NoRedeemer (hoistPlutusPurpose toAsItem plutusPurpose)) - apply (plutusScript, plutusPurpose, d, exUnits, plutusScriptHash) = do - let lang = plutusScriptLanguage plutusScript - costModel <- maybe (Left (NoCostModel lang)) Right $ Map.lookup lang costModels - case mkPlutusScriptContext plutusScript plutusPurpose pp epochInfo sysStart utxo tx of - Right scriptContext -> - let spendingDatum = getSpendingDatum utxo tx $ hoistPlutusPurpose toAsItem plutusPurpose - datums = maybe id (:) spendingDatum [d, scriptContext] - in Right $ - withPlutusScript plutusScript $ \plutus -> - PlutusWithContext - { pwcProtocolVersion = protVerMajor - , pwcScript = Left plutus - , pwcScriptHash = plutusScriptHash - , pwcDatums = PlutusDatums (getPlutusData <$> datums) - , pwcExUnits = exUnits - , pwcCostModel = costModel - } - Left te -> Left $ BadTranslation te - --- | Merge two lists (the first of which may have failures, i.e. (Left _)), collect all the failures --- but if there are none, use 'f' to construct a success. -merge :: forall t b a. (t -> Either a b) -> [Either a t] -> Either [a] [b] -> Either [a] [b] -merge _f [] answer = answer -merge f (x : xs) zs = merge f xs (gg x zs) - where - gg :: Either a t -> Either [a] [b] -> Either [a] [b] - gg (Right t) (Right cs) = - case f t of - Right c -> Right $ c : cs - Left e -> Left [e] - gg (Left a) (Right _) = Left [a] - gg (Right _) (Left cs) = Left cs - gg (Left a) (Left cs) = Left (a : cs) - --- | Evaluate a list of Plutus scripts. All scripts in the list must evaluate to `True`. -evalPlutusScripts :: - EraTx era => - Tx era -> - [PlutusWithContext (EraCrypto era)] -> - ScriptResult (EraCrypto era) -evalPlutusScripts tx pwcs = snd $ evalPlutusScriptsWithLogs tx pwcs - -evalPlutusScriptsWithLogs :: - EraTx era => - Tx era -> - [PlutusWithContext (EraCrypto era)] -> - ([Text], ScriptResult (EraCrypto era)) -evalPlutusScriptsWithLogs _tx [] = mempty -evalPlutusScriptsWithLogs tx (plutusWithContext : rest) = - let beginMsg = - intercalate - "," - [ "[LEDGER][PLUTUS_SCRIPT]" - , "BEGIN" - ] - !res = traceEvent beginMsg $ runPlutusScriptWithLogs plutusWithContext - endMsg = - intercalate - "," - [ "[LEDGER][PLUTUS_SCRIPT]" - , "END" - ] - in traceEvent endMsg res <> evalPlutusScriptsWithLogs tx rest diff --git a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Plutus/TxInfo.hs b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Plutus/TxInfo.hs deleted file mode 100644 index fa22eaf1f28..00000000000 --- a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Plutus/TxInfo.hs +++ /dev/null @@ -1,327 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DefaultSignatures #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Alonzo.Plutus.TxInfo ( - AlonzoContextError (..), - TxOutSource (..), - transLookupTxOut, - transTxOut, - transValidityInterval, - transPolicyID, - transAssetName, - transMultiAsset, - transMintValue, - transValue, - transWithdrawals, - transDataPair, - transTxCert, - transTxCertCommon, - transPlutusPurpose, - transTxBodyId, - transTxBodyCerts, - transTxBodyWithdrawals, - transTxBodyReqSignerHashes, - transTxWitsDatums, -) -where - -import Cardano.Crypto.Hash.Class (hashToBytes) -import Cardano.Ledger.Alonzo.Core -import Cardano.Ledger.Alonzo.Era (AlonzoEra) -import Cardano.Ledger.Alonzo.Plutus.Context -import Cardano.Ledger.Alonzo.Scripts (AlonzoPlutusPurpose (..), PlutusScript (..), toAsItem) -import Cardano.Ledger.Alonzo.TxWits (unTxDats) -import Cardano.Ledger.BaseTypes (StrictMaybe (..), strictMaybeToMaybe) -import Cardano.Ledger.Binary (DecCBOR (..), EncCBOR (..)) -import Cardano.Ledger.Binary.Coders ( - Decode (..), - Encode (..), - decode, - encode, - (!>), - ( EraPlutusTxInfo 'PlutusV1 (AlonzoEra c) where - toPlutusTxCert _ = pure . transTxCert - - toPlutusScriptPurpose proxy = transPlutusPurpose proxy . hoistPlutusPurpose toAsItem - - toPlutusTxInfo proxy pp epochInfo systemStart utxo tx = do - timeRange <- transValidityInterval pp epochInfo systemStart (txBody ^. vldtTxBodyL) - txInsMaybes <- forM (Set.toList (txBody ^. inputsTxBodyL)) $ \txIn -> do - txOut <- transLookupTxOut utxo txIn - pure $ PV1.TxInInfo (transTxIn txIn) <$> transTxOut txOut - txCerts <- transTxBodyCerts proxy txBody - Right $ - PV1.TxInfo - { -- A mistake was made in Alonzo of filtering out Byron addresses, so we need to - -- preserve this behavior by only retaining the Just case: - PV1.txInfoInputs = catMaybes txInsMaybes - , PV1.txInfoOutputs = mapMaybe transTxOut $ F.toList (txBody ^. outputsTxBodyL) - , PV1.txInfoFee = transCoinToValue (txBody ^. feeTxBodyL) - , PV1.txInfoMint = transMintValue (txBody ^. mintTxBodyL) - , PV1.txInfoDCert = txCerts - , PV1.txInfoWdrl = transTxBodyWithdrawals txBody - , PV1.txInfoValidRange = timeRange - , PV1.txInfoSignatories = transTxBodyReqSignerHashes txBody - , PV1.txInfoData = transTxWitsDatums (tx ^. witsTxL) - , PV1.txInfoId = transTxBodyId txBody - } - where - txBody = tx ^. bodyTxL - - toPlutusScriptContext proxy txInfo scriptPurpose = - PV1.ScriptContext txInfo <$> toPlutusScriptPurpose proxy scriptPurpose - -instance Crypto c => EraPlutusContext (AlonzoEra c) where - type ContextError (AlonzoEra c) = AlonzoContextError (AlonzoEra c) - - mkPlutusScriptContext (AlonzoPlutusV1 p) = - mkPlutusLanguageContext p - -data AlonzoContextError era - = TranslationLogicMissingInput !(TxIn (EraCrypto era)) - | TimeTranslationPastHorizon !Text - deriving (Eq, Show, Generic) - -instance NoThunks (AlonzoContextError era) - -instance Inject (AlonzoContextError era) (AlonzoContextError era) - -instance Era era => NFData (AlonzoContextError era) - -instance Era era => EncCBOR (AlonzoContextError era) where - encCBOR = \case - TranslationLogicMissingInput txIn -> - encode $ Sum (TranslationLogicMissingInput @era) 1 !> To txIn - TimeTranslationPastHorizon err -> - encode $ Sum (TimeTranslationPastHorizon @era) 7 !> To err - -instance Era era => DecCBOR (AlonzoContextError era) where - decCBOR = decode $ Summands "ContextError" $ \case - 1 -> SumD (TranslationLogicMissingInput @era) SumD (TimeTranslationPastHorizon @era) Invalid n - -instance ToJSON (AlonzoContextError era) where - toJSON = \case - TranslationLogicMissingInput txin -> - String $ "Transaction input does not exist in the UTxO: " <> txInToText txin - TimeTranslationPastHorizon msg -> - String $ "Time translation requested past the horizon: " <> msg - -transLookupTxOut :: - forall era a. - Inject (AlonzoContextError era) a => - UTxO era -> - TxIn (EraCrypto era) -> - Either a (TxOut era) -transLookupTxOut (UTxO utxo) txIn = - case Map.lookup txIn utxo of - Nothing -> Left $ inject $ TranslationLogicMissingInput @era txIn - Just txOut -> Right txOut - --- | Translate a validity interval to POSIX time -transValidityInterval :: - forall era a. - (Inject (AlonzoContextError era) a, EraPParams era) => - PParams era -> - EpochInfo (Either Text) -> - SystemStart -> - ValidityInterval -> - Either a PV1.POSIXTimeRange -transValidityInterval pp epochInfo systemStart = \case - ValidityInterval SNothing SNothing -> pure PV1.always - ValidityInterval (SJust i) SNothing -> PV1.from <$> transSlotToPOSIXTime i - ValidityInterval SNothing (SJust i) -> do - t <- transSlotToPOSIXTime i - pure $ - if HardForks.translateUpperBoundForPlutusScripts (pp ^. ppProtocolVersionL) - then - PV1.Interval - (PV1.LowerBound PV1.NegInf True) - (PV1.strictUpperBound t) - else PV1.to t - ValidityInterval (SJust i) (SJust j) -> do - t1 <- transSlotToPOSIXTime i - t2 <- transSlotToPOSIXTime j - pure $ - PV1.Interval - (PV1.lowerBound t1) - (PV1.strictUpperBound t2) - where - transSlotToPOSIXTime = - left (inject . TimeTranslationPastHorizon @era) - . slotToPOSIXTime epochInfo systemStart - --- | Translate a TxOut. Returns `Nothing` if a Byron address is present in the TxOut. -transTxOut :: - (Value era ~ MaryValue c, AlonzoEraTxOut era) => TxOut era -> Maybe PV1.TxOut -transTxOut txOut = do - -- Minor optimization: - -- We can check for Byron address without decompacting the address in the TxOut - guard $ isNothing (txOut ^. bootAddrTxOutF) - let val = txOut ^. valueTxOutL - dataHash = txOut ^. dataHashTxOutL - address <- transAddr (txOut ^. addrTxOutL) - pure $ PV1.TxOut address (transValue val) (transDataHash <$> strictMaybeToMaybe dataHash) - -transTxBodyId :: EraTxBody era => TxBody era -> PV1.TxId -transTxBodyId txBody = PV1.TxId (transSafeHash (hashAnnotated txBody)) - --- | Translate all `TxCert`s from within a `TxBody` -transTxBodyCerts :: - (EraPlutusTxInfo l era, EraTxBody era) => - proxy l -> - TxBody era -> - Either (ContextError era) [PlutusTxCert l] -transTxBodyCerts proxy txBody = - mapM (toPlutusTxCert proxy) $ F.toList (txBody ^. certsTxBodyL) - -transWithdrawals :: Withdrawals c -> Map.Map PV1.StakingCredential Integer -transWithdrawals (Withdrawals mp) = Map.foldlWithKey' accum Map.empty mp - where - accum ans rewardAccount (Coin n) = - Map.insert (PV1.StakingHash (transRewardAccount rewardAccount)) n ans - --- | Translate all `Withdrawal`s from within a `TxBody` -transTxBodyWithdrawals :: EraTxBody era => TxBody era -> [(PV1.StakingCredential, Integer)] -transTxBodyWithdrawals txBody = Map.toList (transWithdrawals (txBody ^. withdrawalsTxBodyL)) - --- | Translate all required signers produced by `reqSignerHashesTxBodyL`s from within a --- `TxBody` -transTxBodyReqSignerHashes :: AlonzoEraTxBody era => TxBody era -> [PV1.PubKeyHash] -transTxBodyReqSignerHashes txBody = transKeyHash <$> Set.toList (txBody ^. reqSignerHashesTxBodyL) - --- | Translate all `TxDats`s from within `TxWits` -transTxWitsDatums :: AlonzoEraTxWits era => TxWits era -> [(PV1.DatumHash, PV1.Datum)] -transTxWitsDatums txWits = transDataPair <$> Map.toList (unTxDats $ txWits ^. datsTxWitsL) - --- ================================== --- translate Values - -transPolicyID :: PolicyID c -> PV1.CurrencySymbol -transPolicyID (PolicyID (ScriptHash x)) = PV1.CurrencySymbol (PV1.toBuiltin (hashToBytes x)) - -transAssetName :: AssetName -> PV1.TokenName -transAssetName (AssetName bs) = PV1.TokenName (PV1.toBuiltin (SBS.fromShort bs)) - -transMultiAsset :: MultiAsset c -> PV1.Value -transMultiAsset ma = transMultiAssetInternal ma mempty - -transMultiAssetInternal :: MultiAsset c -> PV1.Value -> PV1.Value -transMultiAssetInternal (MultiAsset m) initAcc = Map.foldlWithKey' accum1 initAcc m - where - accum1 ans sym mp2 = Map.foldlWithKey' accum2 ans mp2 - where - accum2 ans2 tok quantity = - PV1.unionWith - (+) - ans2 - (PV1.singleton (transPolicyID sym) (transAssetName tok) quantity) - --- | Hysterical raisins: --- --- Previously transaction body contained a mint field with MaryValue instead of a --- MultiAsset, which has changed since then to just MultiAsset (because minting ADA --- makes no sense). However, if we don't preserve previous translation, scripts that --- previously succeeded will fail. -transMintValue :: MultiAsset c -> PV1.Value -transMintValue m = transMultiAssetInternal m (transCoinToValue zero) - -transValue :: MaryValue c -> PV1.Value -transValue (MaryValue c m) = transCoinToValue c <> transMultiAsset m - --- ============================================= --- translate fields like TxCert, Withdrawals, and similar - -transTxCert :: (ShelleyEraTxCert era, ProtVerAtMost era 8) => TxCert era -> PV1.DCert -transTxCert txCert = - case transTxCertCommon txCert of - Just cert -> cert - Nothing -> - case txCert of - GenesisDelegTxCert {} -> PV1.DCertGenesis - MirTxCert {} -> PV1.DCertMir - _ -> error "Impossible: All certificates should have been accounted for" - --- | Just like `transTxCert`, but do not translate certificates that were deprecated in Conway -transTxCertCommon :: ShelleyEraTxCert era => TxCert era -> Maybe PV1.DCert -transTxCertCommon = \case - RegTxCert stakeCred -> - Just $ PV1.DCertDelegRegKey (PV1.StakingHash (transCred stakeCred)) - UnRegTxCert stakeCred -> - Just $ PV1.DCertDelegDeRegKey (PV1.StakingHash (transCred stakeCred)) - DelegStakeTxCert stakeCred keyHash -> - Just $ PV1.DCertDelegDelegate (PV1.StakingHash (transCred stakeCred)) (transKeyHash keyHash) - RegPoolTxCert (PoolParams {ppId, ppVrf}) -> - Just $ - PV1.DCertPoolRegister (transKeyHash ppId) (PV1.PubKeyHash (PV1.toBuiltin (hashToBytes ppVrf))) - RetirePoolTxCert poolId retireEpochNo -> - Just $ PV1.DCertPoolRetire (transKeyHash poolId) (transEpochNo retireEpochNo) - _ -> Nothing - -transPlutusPurpose :: - (EraPlutusTxInfo l era, PlutusTxCert l ~ PV1.DCert) => - proxy l -> - AlonzoPlutusPurpose AsItem era -> - Either (ContextError era) PV1.ScriptPurpose -transPlutusPurpose proxy = \case - AlonzoSpending (AsItem txIn) -> pure $ PV1.Spending (transTxIn txIn) - AlonzoMinting (AsItem policyId) -> pure $ PV1.Minting (transPolicyID policyId) - AlonzoCertifying (AsItem txCert) -> PV1.Certifying <$> toPlutusTxCert proxy txCert - AlonzoRewarding (AsItem rewardAccount) -> - pure $ PV1.Rewarding (PV1.StakingHash (transRewardAccount rewardAccount)) diff --git a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules.hs b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules.hs deleted file mode 100644 index 94f44eee6d6..00000000000 --- a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules.hs +++ /dev/null @@ -1,29 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE TypeFamilies #-} - -module Cardano.Ledger.Alonzo.Rules ( - module Cardano.Ledger.Alonzo.Rules.Bbody, - module Cardano.Ledger.Alonzo.Rules.Ledger, - module Cardano.Ledger.Alonzo.Rules.Utxo, - module Cardano.Ledger.Alonzo.Rules.Utxos, - module Cardano.Ledger.Alonzo.Rules.Utxow, -) -where - -import Cardano.Ledger.Alonzo.Core (EraRuleEvent) -import Cardano.Ledger.Alonzo.Era (AlonzoEra) -import Cardano.Ledger.Alonzo.Rules.Bbody -import Cardano.Ledger.Alonzo.Rules.Deleg () -import Cardano.Ledger.Alonzo.Rules.Delegs () -import Cardano.Ledger.Alonzo.Rules.Delpl () -import Cardano.Ledger.Alonzo.Rules.Ledger -import Cardano.Ledger.Alonzo.Rules.Ledgers () -import Cardano.Ledger.Alonzo.Rules.Pool () -import Cardano.Ledger.Alonzo.Rules.Ppup () -import Cardano.Ledger.Alonzo.Rules.Utxo -import Cardano.Ledger.Alonzo.Rules.Utxos -import Cardano.Ledger.Alonzo.Rules.Utxow -import Cardano.Ledger.Shelley.Rules (ShelleyLedgerEvent, ShelleyTickEvent) - -type instance EraRuleEvent "LEDGER" (AlonzoEra c) = ShelleyLedgerEvent (AlonzoEra c) -type instance EraRuleEvent "TICK" (AlonzoEra c) = ShelleyTickEvent (AlonzoEra c) diff --git a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Bbody.hs b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Bbody.hs deleted file mode 100644 index 79c9ca61000..00000000000 --- a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Bbody.hs +++ /dev/null @@ -1,299 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Alonzo.Rules.Bbody ( - AlonzoBBODY, - AlonzoBbodyPredFailure (..), - AlonzoBbodyEvent (..), - bbodyTransition, -) where - -import Cardano.Ledger.Allegra.Rules (AllegraUtxoPredFailure) -import Cardano.Ledger.Alonzo.Era (AlonzoBBODY, AlonzoEra) -import Cardano.Ledger.Alonzo.PParams (AlonzoEraPParams, ppMaxBlockExUnitsL) -import Cardano.Ledger.Alonzo.Rules.Ledgers () -import Cardano.Ledger.Alonzo.Rules.Utxo (AlonzoUtxoPredFailure) -import Cardano.Ledger.Alonzo.Rules.Utxos (AlonzoUtxosPredFailure) -import Cardano.Ledger.Alonzo.Rules.Utxow (AlonzoUtxowPredFailure) -import Cardano.Ledger.Alonzo.Scripts (ExUnits (..), pointWiseExUnits) -import Cardano.Ledger.Alonzo.Tx (AlonzoTx, totExUnits) -import Cardano.Ledger.Alonzo.TxSeq (AlonzoTxSeq, txSeqTxns) -import Cardano.Ledger.Alonzo.TxWits (AlonzoEraTxWits (..)) -import Cardano.Ledger.BHeaderView (BHeaderView (..), isOverlaySlot) -import Cardano.Ledger.BaseTypes (ShelleyBase, epochInfoPure) -import Cardano.Ledger.Binary (DecCBOR (..), EncCBOR (..)) -import Cardano.Ledger.Binary.Coders -import Cardano.Ledger.Block (Block (..)) -import Cardano.Ledger.Core -import qualified Cardano.Ledger.Era as Era -import Cardano.Ledger.Keys (DSignable, Hash, coerceKeyRole) -import Cardano.Ledger.Shelley.BlockChain (incrBlocks) -import Cardano.Ledger.Shelley.LedgerState (LedgerState) -import Cardano.Ledger.Shelley.Rules ( - BbodyEnv (..), - ShelleyBbodyEvent (..), - ShelleyBbodyPredFailure (..), - ShelleyBbodyState (..), - ShelleyDelegPredFailure, - ShelleyDelegsPredFailure, - ShelleyDelplPredFailure, - ShelleyLedgerPredFailure, - ShelleyLedgersEnv (..), - ShelleyLedgersPredFailure, - ShelleyPoolPredFailure, - ShelleyPpupPredFailure, - ShelleyUtxoPredFailure, - ShelleyUtxowPredFailure, - ) -import Cardano.Ledger.Slot (epochInfoEpoch, epochInfoFirst) -import Control.Monad.Trans.Reader (asks) -import Control.State.Transition ( - Embed (..), - STS (..), - TRC (..), - TransitionRule, - judgmentContext, - liftSTS, - trans, - (?!), - ) -import Data.Kind (Type) -import Data.Sequence (Seq) -import qualified Data.Sequence.Strict as StrictSeq -import Data.Typeable -import GHC.Generics (Generic) -import Lens.Micro ((^.)) -import NoThunks.Class (NoThunks (..)) - --- ======================================= --- A new PredicateFailure type - -data AlonzoBbodyPredFailure era - = ShelleyInAlonzoBbodyPredFailure (ShelleyBbodyPredFailure era) - | TooManyExUnits - -- | Computed Sum of ExUnits for all plutus scripts - !ExUnits - -- | Maximum allowed by protocal parameters - !ExUnits - deriving (Generic) - -newtype AlonzoBbodyEvent era - = ShelleyInAlonzoEvent (ShelleyBbodyEvent era) - -type instance EraRuleFailure "BBODY" (AlonzoEra c) = AlonzoBbodyPredFailure (AlonzoEra c) - -instance InjectRuleFailure "BBODY" AlonzoBbodyPredFailure (AlonzoEra c) - -instance InjectRuleFailure "BBODY" ShelleyBbodyPredFailure (AlonzoEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure - -instance InjectRuleFailure "BBODY" ShelleyLedgersPredFailure (AlonzoEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure - -instance InjectRuleFailure "BBODY" ShelleyLedgerPredFailure (AlonzoEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" AlonzoUtxowPredFailure (AlonzoEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyUtxowPredFailure (AlonzoEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" AlonzoUtxoPredFailure (AlonzoEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" AlonzoUtxosPredFailure (AlonzoEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyPpupPredFailure (AlonzoEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyUtxoPredFailure (AlonzoEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" AllegraUtxoPredFailure (AlonzoEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyDelegsPredFailure (AlonzoEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyDelplPredFailure (AlonzoEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyPoolPredFailure (AlonzoEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyDelegPredFailure (AlonzoEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -deriving instance - (Era era, Show (PredicateFailure (EraRule "LEDGERS" era))) => - Show (AlonzoBbodyPredFailure era) - -deriving instance - (Era era, Eq (PredicateFailure (EraRule "LEDGERS" era))) => - Eq (AlonzoBbodyPredFailure era) - -deriving anyclass instance - (Era era, NoThunks (PredicateFailure (EraRule "LEDGERS" era))) => - NoThunks (AlonzoBbodyPredFailure era) - -instance - ( Typeable era - , EncCBOR (ShelleyBbodyPredFailure era) - ) => - EncCBOR (AlonzoBbodyPredFailure era) - where - encCBOR (ShelleyInAlonzoBbodyPredFailure x) = encode (Sum ShelleyInAlonzoBbodyPredFailure 0 !> To x) - encCBOR (TooManyExUnits x y) = encode (Sum TooManyExUnits 1 !> To x !> To y) - -instance - ( Typeable era - , DecCBOR (ShelleyBbodyPredFailure era) -- TODO why is there no DecCBOR for (ShelleyBbodyPredFailure era) - ) => - DecCBOR (AlonzoBbodyPredFailure era) - where - decCBOR = decode (Summands "AlonzoBbodyPredFail" dec) - where - dec 0 = SumD ShelleyInAlonzoBbodyPredFailure Type) era. - ( STS (someBBODY era) - , Signal (someBBODY era) ~ Block (BHeaderView (EraCrypto era)) era - , PredicateFailure (someBBODY era) ~ AlonzoBbodyPredFailure era - , BaseM (someBBODY era) ~ ShelleyBase - , State (someBBODY era) ~ ShelleyBbodyState era - , Environment (someBBODY era) ~ BbodyEnv era - , Embed (EraRule "LEDGERS" era) (someBBODY era) - , Environment (EraRule "LEDGERS" era) ~ ShelleyLedgersEnv era - , State (EraRule "LEDGERS" era) ~ LedgerState era - , Signal (EraRule "LEDGERS" era) ~ Seq (Tx era) - , EraSegWits era - , AlonzoEraTxWits era - , Era.TxSeq era ~ AlonzoTxSeq era - , Tx era ~ AlonzoTx era - , AlonzoEraPParams era - ) => - TransitionRule (someBBODY era) -bbodyTransition = - judgmentContext - >>= \( TRC - ( BbodyEnv pp account - , BbodyState ls b - , UnserialisedBlock bh txsSeq - ) - ) -> do - let txs = txSeqTxns txsSeq - actualBodySize = bBodySize (pp ^. ppProtocolVersionL) txsSeq - actualBodyHash = hashTxSeq @era txsSeq - - actualBodySize - == fromIntegral (bhviewBSize bh) - ?! ShelleyInAlonzoBbodyPredFailure - ( WrongBlockBodySizeBBODY actualBodySize (fromIntegral $ bhviewBSize bh) - ) - - actualBodyHash - == bhviewBHash bh - ?! ShelleyInAlonzoBbodyPredFailure - ( InvalidBodyHashBBODY @era actualBodyHash (bhviewBHash bh) - ) - - ls' <- - trans @(EraRule "LEDGERS" era) $ - TRC (LedgersEnv (bhviewSlot bh) pp account, ls, StrictSeq.fromStrict txs) - - -- Note that this may not actually be a stake pool - it could be a - -- genesis key delegate. However, this would only entail an overhead of - -- 7 counts, and it's easier than differentiating here. - -- - -- TODO move this computation inside 'incrBlocks' where it belongs. Here - -- we make an assumption that 'incrBlocks' must enforce, better for it - -- to be done in 'incrBlocks' where we can see that the assumption is - -- enforced. - let hkAsStakePool = coerceKeyRole . bhviewID $ bh - slot = bhviewSlot bh - firstSlotNo <- liftSTS $ do - ei <- asks epochInfoPure - e <- epochInfoEpoch ei slot - epochInfoFirst ei e - - {- ∑(tx ∈ txs)(totExunits tx) ≤ maxBlockExUnits pp -} - let txTotal, ppMax :: ExUnits - txTotal = foldMap totExUnits txs - ppMax = pp ^. ppMaxBlockExUnitsL - pointWiseExUnits (<=) txTotal ppMax ?! TooManyExUnits txTotal ppMax - - pure $ - BbodyState @era - ls' - ( incrBlocks - (isOverlaySlot firstSlotNo (pp ^. ppDG) slot) - hkAsStakePool - b - ) - -instance - ( DSignable (EraCrypto era) (Hash (EraCrypto era) EraIndependentTxBody) - , Embed (EraRule "LEDGERS" era) (AlonzoBBODY era) - , Environment (EraRule "LEDGERS" era) ~ ShelleyLedgersEnv era - , State (EraRule "LEDGERS" era) ~ LedgerState era - , Signal (EraRule "LEDGERS" era) ~ Seq (AlonzoTx era) - , AlonzoEraTxWits era - , Tx era ~ AlonzoTx era - , Era.TxSeq era ~ AlonzoTxSeq era - , Tx era ~ AlonzoTx era - , EraSegWits era - , AlonzoEraPParams era - ) => - STS (AlonzoBBODY era) - where - type - State (AlonzoBBODY era) = - ShelleyBbodyState era - - type - Signal (AlonzoBBODY era) = - (Block (BHeaderView (EraCrypto era)) era) - - type Environment (AlonzoBBODY era) = BbodyEnv era - - type BaseM (AlonzoBBODY era) = ShelleyBase - - type PredicateFailure (AlonzoBBODY era) = AlonzoBbodyPredFailure era - type Event (AlonzoBBODY era) = AlonzoBbodyEvent era - - initialRules = [] - transitionRules = [bbodyTransition @AlonzoBBODY] - -instance - ( Era era - , BaseM ledgers ~ ShelleyBase - , ledgers ~ EraRule "LEDGERS" era - , STS ledgers - , DSignable (EraCrypto era) (Hash (EraCrypto era) EraIndependentTxBody) - , Era era - ) => - Embed ledgers (AlonzoBBODY era) - where - wrapFailed = ShelleyInAlonzoBbodyPredFailure . LedgersFailure - wrapEvent = ShelleyInAlonzoEvent . LedgersEvent diff --git a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Deleg.hs b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Deleg.hs deleted file mode 100644 index 7fa58bcf868..00000000000 --- a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Deleg.hs +++ /dev/null @@ -1,14 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Alonzo.Rules.Deleg () where - -import Cardano.Ledger.Alonzo.Era (AlonzoEra) -import Cardano.Ledger.Core -import Cardano.Ledger.Shelley.Rules (ShelleyDelegPredFailure) - -type instance EraRuleFailure "DELEG" (AlonzoEra c) = ShelleyDelegPredFailure (AlonzoEra c) - -instance InjectRuleFailure "DELEG" ShelleyDelegPredFailure (AlonzoEra c) diff --git a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Delegs.hs b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Delegs.hs deleted file mode 100644 index a609c55561e..00000000000 --- a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Delegs.hs +++ /dev/null @@ -1,29 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Alonzo.Rules.Delegs () where - -import Cardano.Ledger.Alonzo.Era (AlonzoEra) -import Cardano.Ledger.Alonzo.Rules.Delpl () -import Cardano.Ledger.Core -import Cardano.Ledger.Shelley.Rules ( - ShelleyDelegPredFailure, - ShelleyDelegsPredFailure (..), - ShelleyDelplPredFailure, - ShelleyPoolPredFailure, - ) - -type instance EraRuleFailure "DELEGS" (AlonzoEra c) = ShelleyDelegsPredFailure (AlonzoEra c) - -instance InjectRuleFailure "DELEGS" ShelleyDelegsPredFailure (AlonzoEra c) - -instance InjectRuleFailure "DELEGS" ShelleyDelplPredFailure (AlonzoEra c) where - injectFailure = DelplFailure - -instance InjectRuleFailure "DELEGS" ShelleyPoolPredFailure (AlonzoEra c) where - injectFailure = DelplFailure . injectFailure - -instance InjectRuleFailure "DELEGS" ShelleyDelegPredFailure (AlonzoEra c) where - injectFailure = DelplFailure . injectFailure diff --git a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Delpl.hs b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Delpl.hs deleted file mode 100644 index 2756dfe0f55..00000000000 --- a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Delpl.hs +++ /dev/null @@ -1,26 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Alonzo.Rules.Delpl () where - -import Cardano.Ledger.Alonzo.Era (AlonzoEra) -import Cardano.Ledger.Alonzo.Rules.Deleg () -import Cardano.Ledger.Alonzo.Rules.Pool () -import Cardano.Ledger.Core -import Cardano.Ledger.Shelley.Rules ( - ShelleyDelegPredFailure, - ShelleyDelplPredFailure (..), - ShelleyPoolPredFailure, - ) - -type instance EraRuleFailure "DELPL" (AlonzoEra c) = ShelleyDelplPredFailure (AlonzoEra c) - -instance InjectRuleFailure "DELPL" ShelleyDelplPredFailure (AlonzoEra c) - -instance InjectRuleFailure "DELPL" ShelleyPoolPredFailure (AlonzoEra c) where - injectFailure = PoolFailure - -instance InjectRuleFailure "DELPL" ShelleyDelegPredFailure (AlonzoEra c) where - injectFailure = DelegFailure diff --git a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Ledger.hs b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Ledger.hs deleted file mode 100644 index 268264be4cd..00000000000 --- a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Ledger.hs +++ /dev/null @@ -1,213 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Alonzo.Rules.Ledger ( - AlonzoLEDGER, - ledgerTransition, -) where - -import Cardano.Ledger.Allegra.Rules (AllegraUtxoPredFailure) -import Cardano.Ledger.Alonzo.Era (AlonzoEra, AlonzoLEDGER) -import Cardano.Ledger.Alonzo.Rules.Delegs () -import Cardano.Ledger.Alonzo.Rules.Utxo (AlonzoUtxoPredFailure) -import Cardano.Ledger.Alonzo.Rules.Utxos (AlonzoUtxosPredFailure) -import Cardano.Ledger.Alonzo.Rules.Utxow (AlonzoUTXOW, AlonzoUtxowEvent, AlonzoUtxowPredFailure) -import Cardano.Ledger.Alonzo.Tx (AlonzoEraTx (..), AlonzoTx (..), IsValid (..)) -import Cardano.Ledger.BaseTypes (ShelleyBase) -import Cardano.Ledger.Keys (DSignable, Hash) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState ( - CertState (..), - LedgerState (..), - UTxOState (..), - ) -import Cardano.Ledger.Shelley.Rules ( - DelegsEnv (..), - ShelleyDELEGS, - ShelleyDelegPredFailure, - ShelleyDelegsEvent, - ShelleyDelegsPredFailure, - ShelleyDelplPredFailure (..), - ShelleyLEDGERS, - ShelleyPoolPredFailure, - ShelleyPpupPredFailure, - ShelleyUtxoPredFailure, - ShelleyUtxowPredFailure, - UtxoEnv (..), - shelleyLedgerAssertions, - ) -import Cardano.Ledger.Shelley.Rules as Shelley ( - LedgerEnv (..), - ShelleyLedgerEvent (..), - ShelleyLedgerPredFailure (..), - ShelleyLedgersEvent (..), - ShelleyLedgersPredFailure (..), - renderDepositEqualsObligationViolation, - ) -import Control.State.Transition ( - Embed (..), - STS (..), - TRC (..), - TransitionRule, - judgmentContext, - trans, - ) -import Data.Kind (Type) -import Data.Sequence (Seq) -import qualified Data.Sequence.Strict as StrictSeq -import Lens.Micro - -type instance EraRuleFailure "LEDGER" (AlonzoEra c) = ShelleyLedgerPredFailure (AlonzoEra c) - -instance InjectRuleFailure "LEDGER" ShelleyLedgerPredFailure (AlonzoEra c) - -instance InjectRuleFailure "LEDGER" AlonzoUtxowPredFailure (AlonzoEra c) where - injectFailure = UtxowFailure - -instance InjectRuleFailure "LEDGER" ShelleyUtxowPredFailure (AlonzoEra c) where - injectFailure = UtxowFailure . injectFailure - -instance InjectRuleFailure "LEDGER" AlonzoUtxoPredFailure (AlonzoEra c) where - injectFailure = UtxowFailure . injectFailure - -instance InjectRuleFailure "LEDGER" AlonzoUtxosPredFailure (AlonzoEra c) where - injectFailure = UtxowFailure . injectFailure - -instance InjectRuleFailure "LEDGER" ShelleyPpupPredFailure (AlonzoEra c) where - injectFailure = UtxowFailure . injectFailure - -instance InjectRuleFailure "LEDGER" ShelleyUtxoPredFailure (AlonzoEra c) where - injectFailure = UtxowFailure . injectFailure - -instance InjectRuleFailure "LEDGER" AllegraUtxoPredFailure (AlonzoEra c) where - injectFailure = UtxowFailure . injectFailure - -instance InjectRuleFailure "LEDGER" ShelleyDelegsPredFailure (AlonzoEra c) where - injectFailure = DelegsFailure - -instance InjectRuleFailure "LEDGER" ShelleyDelplPredFailure (AlonzoEra c) where - injectFailure = DelegsFailure . injectFailure - -instance InjectRuleFailure "LEDGER" ShelleyPoolPredFailure (AlonzoEra c) where - injectFailure = DelegsFailure . injectFailure - -instance InjectRuleFailure "LEDGER" ShelleyDelegPredFailure (AlonzoEra c) where - injectFailure = DelegsFailure . injectFailure - --- ======================================= - --- | An abstract Alonzo Era, Ledger transition. Fix 'someLedger' at a concrete type to --- make it concrete. -ledgerTransition :: - forall (someLEDGER :: Type -> Type) era. - ( Signal (someLEDGER era) ~ Tx era - , State (someLEDGER era) ~ LedgerState era - , Environment (someLEDGER era) ~ LedgerEnv era - , Embed (EraRule "UTXOW" era) (someLEDGER era) - , Embed (EraRule "DELEGS" era) (someLEDGER era) - , Environment (EraRule "DELEGS" era) ~ DelegsEnv era - , State (EraRule "DELEGS" era) ~ CertState era - , Signal (EraRule "DELEGS" era) ~ Seq (TxCert era) - , Environment (EraRule "UTXOW" era) ~ UtxoEnv era - , State (EraRule "UTXOW" era) ~ UTxOState era - , Signal (EraRule "UTXOW" era) ~ Tx era - , AlonzoEraTx era - ) => - TransitionRule (someLEDGER era) -ledgerTransition = do - TRC (LedgerEnv slot txIx pp account, LedgerState utxoSt certState, tx) <- judgmentContext - let txBody = tx ^. bodyTxL - - certState' <- - if tx ^. isValidTxL == IsValid True - then - trans @(EraRule "DELEGS" era) $ - TRC - ( DelegsEnv slot txIx pp tx account - , certState - , StrictSeq.fromStrict $ txBody ^. certsTxBodyL - ) - else pure certState - - utxoSt' <- - trans @(EraRule "UTXOW" era) $ - TRC - ( UtxoEnv @era slot pp certState - , utxoSt - , tx - ) - pure $ LedgerState utxoSt' certState' - -instance - ( DSignable (EraCrypto era) (Hash (EraCrypto era) EraIndependentTxBody) - , AlonzoEraTx era - , EraGov era - , Tx era ~ AlonzoTx era - , Embed (EraRule "DELEGS" era) (AlonzoLEDGER era) - , Embed (EraRule "UTXOW" era) (AlonzoLEDGER era) - , Environment (EraRule "UTXOW" era) ~ UtxoEnv era - , State (EraRule "UTXOW" era) ~ UTxOState era - , Signal (EraRule "UTXOW" era) ~ AlonzoTx era - , Environment (EraRule "DELEGS" era) ~ DelegsEnv era - , State (EraRule "DELEGS" era) ~ CertState era - , Signal (EraRule "DELEGS" era) ~ Seq (TxCert era) - , ProtVerAtMost era 8 - ) => - STS (AlonzoLEDGER era) - where - type State (AlonzoLEDGER era) = LedgerState era - type Signal (AlonzoLEDGER era) = AlonzoTx era - type Environment (AlonzoLEDGER era) = LedgerEnv era - type BaseM (AlonzoLEDGER era) = ShelleyBase - type PredicateFailure (AlonzoLEDGER era) = ShelleyLedgerPredFailure era - type Event (AlonzoLEDGER era) = ShelleyLedgerEvent era - - initialRules = [] - transitionRules = [ledgerTransition @AlonzoLEDGER] - - renderAssertionViolation = Shelley.renderDepositEqualsObligationViolation - - assertions = shelleyLedgerAssertions - -instance - ( Era era - , STS (ShelleyDELEGS era) - , PredicateFailure (EraRule "DELEGS" era) ~ ShelleyDelegsPredFailure era - , Event (EraRule "DELEGS" era) ~ ShelleyDelegsEvent era - ) => - Embed (ShelleyDELEGS era) (AlonzoLEDGER era) - where - wrapFailed = DelegsFailure - wrapEvent = DelegsEvent - -instance - ( Era era - , STS (AlonzoUTXOW era) - , PredicateFailure (EraRule "UTXOW" era) ~ AlonzoUtxowPredFailure era - , Event (EraRule "UTXOW" era) ~ AlonzoUtxowEvent era - ) => - Embed (AlonzoUTXOW era) (AlonzoLEDGER era) - where - wrapFailed = UtxowFailure - wrapEvent = UtxowEvent - -instance - ( Era era - , STS (AlonzoLEDGER era) - , PredicateFailure (EraRule "LEDGER" era) ~ ShelleyLedgerPredFailure era - , Event (EraRule "LEDGER" era) ~ ShelleyLedgerEvent era - ) => - Embed (AlonzoLEDGER era) (ShelleyLEDGERS era) - where - wrapFailed = Shelley.LedgerFailure - wrapEvent = Shelley.LedgerEvent diff --git a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Ledgers.hs b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Ledgers.hs deleted file mode 100644 index 5dbcfd680ca..00000000000 --- a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Ledgers.hs +++ /dev/null @@ -1,65 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Alonzo.Rules.Ledgers () where - -import Cardano.Ledger.Allegra.Rules (AllegraUtxoPredFailure) -import Cardano.Ledger.Alonzo.Era (AlonzoEra) -import Cardano.Ledger.Alonzo.Rules.Ledger () -import Cardano.Ledger.Alonzo.Rules.Utxo (AlonzoUtxoPredFailure) -import Cardano.Ledger.Alonzo.Rules.Utxos (AlonzoUtxosPredFailure) -import Cardano.Ledger.Alonzo.Rules.Utxow (AlonzoUtxowPredFailure) -import Cardano.Ledger.Core -import Cardano.Ledger.Shelley.Rules ( - ShelleyDelegPredFailure, - ShelleyDelegsPredFailure, - ShelleyDelplPredFailure, - ShelleyLedgerPredFailure, - ShelleyLedgersPredFailure (..), - ShelleyPoolPredFailure, - ShelleyPpupPredFailure, - ShelleyUtxoPredFailure, - ShelleyUtxowPredFailure, - ) - -type instance EraRuleFailure "LEDGERS" (AlonzoEra c) = ShelleyLedgersPredFailure (AlonzoEra c) - -instance InjectRuleFailure "LEDGERS" ShelleyLedgersPredFailure (AlonzoEra c) - -instance InjectRuleFailure "LEDGERS" ShelleyLedgerPredFailure (AlonzoEra c) where - injectFailure = LedgerFailure - -instance InjectRuleFailure "LEDGERS" AlonzoUtxowPredFailure (AlonzoEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ShelleyUtxowPredFailure (AlonzoEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" AlonzoUtxoPredFailure (AlonzoEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" AlonzoUtxosPredFailure (AlonzoEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ShelleyPpupPredFailure (AlonzoEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ShelleyUtxoPredFailure (AlonzoEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" AllegraUtxoPredFailure (AlonzoEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ShelleyDelegsPredFailure (AlonzoEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ShelleyDelplPredFailure (AlonzoEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ShelleyPoolPredFailure (AlonzoEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ShelleyDelegPredFailure (AlonzoEra c) where - injectFailure = LedgerFailure . injectFailure diff --git a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Pool.hs b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Pool.hs deleted file mode 100644 index 798db3dc7af..00000000000 --- a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Pool.hs +++ /dev/null @@ -1,14 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Alonzo.Rules.Pool () where - -import Cardano.Ledger.Alonzo.Era (AlonzoEra) -import Cardano.Ledger.Core -import Cardano.Ledger.Shelley.Rules (ShelleyPoolPredFailure) - -type instance EraRuleFailure "POOL" (AlonzoEra c) = ShelleyPoolPredFailure (AlonzoEra c) - -instance InjectRuleFailure "POOL" ShelleyPoolPredFailure (AlonzoEra c) diff --git a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Ppup.hs b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Ppup.hs deleted file mode 100644 index 990f956f18d..00000000000 --- a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Ppup.hs +++ /dev/null @@ -1,16 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Alonzo.Rules.Ppup () where - -import Cardano.Ledger.Alonzo.Era (AlonzoEra) -import Cardano.Ledger.Core -import Cardano.Ledger.Shelley.Rules (PpupEvent, ShelleyPpupPredFailure) - -type instance EraRuleFailure "PPUP" (AlonzoEra c) = ShelleyPpupPredFailure (AlonzoEra c) - -type instance EraRuleEvent "PPUP" (AlonzoEra c) = PpupEvent (AlonzoEra c) - -instance InjectRuleFailure "PPUP" ShelleyPpupPredFailure (AlonzoEra c) diff --git a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Utxo.hs b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Utxo.hs deleted file mode 100644 index 43a315589cf..00000000000 --- a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Utxo.hs +++ /dev/null @@ -1,747 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PartialTypeSignatures #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TupleSections #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Alonzo.Rules.Utxo ( - AlonzoUTXO, - AlonzoUtxoPredFailure (..), - allegraToAlonzoUtxoPredFailure, - AlonzoUtxoEvent (..), - validateCollateralContainsNonADA, - validateExUnitsTooBigUTxO, - validateOutputTooBigUTxO, - validateInsufficientCollateral, - validateOutsideForecast, - validateScriptsNotPaidUTxO, - validateTooManyCollateralInputs, - validateWrongNetworkInTxBody, - vKeyLocked, -) where - -import Cardano.Ledger.Address ( - Addr (..), - CompactAddr, - RewardAccount, - isBootstrapCompactAddr, - isPayCredScriptCompactAddr, - ) -import Cardano.Ledger.Allegra.Rules (AllegraUtxoPredFailure, shelleyToAllegraUtxoPredFailure) -import qualified Cardano.Ledger.Allegra.Rules as Allegra -import Cardano.Ledger.Allegra.Scripts (ValidityInterval (..)) -import Cardano.Ledger.Alonzo.Era (AlonzoEra, AlonzoUTXO) -import Cardano.Ledger.Alonzo.PParams -import Cardano.Ledger.Alonzo.Rules.Ppup () -import Cardano.Ledger.Alonzo.Rules.Utxos (AlonzoUTXOS, AlonzoUtxosPredFailure) -import Cardano.Ledger.Alonzo.Scripts (ExUnits (..), pointWiseExUnits) -import Cardano.Ledger.Alonzo.Tx (AlonzoEraTx (..), totExUnits) -import Cardano.Ledger.Alonzo.TxBody ( - AllegraEraTxBody (..), - AlonzoEraTxBody (..), - AlonzoEraTxOut (..), - MaryEraTxBody (..), - ) -import Cardano.Ledger.Alonzo.TxWits (AlonzoEraTxWits (..), nullRedeemers) -import Cardano.Ledger.BaseTypes ( - Network, - ProtVer (..), - ShelleyBase, - StrictMaybe (..), - epochInfo, - networkId, - systemStart, - ) -import Cardano.Ledger.Binary (DecCBOR (..), EncCBOR (..), serialize) -import Cardano.Ledger.Binary.Coders ( - Decode (..), - Encode (..), - Wrapped (Open), - decode, - encode, - (!>), - ( - Show (AlonzoUtxoPredFailure era) - -deriving stock instance - ( Era era - , Eq (Value era) - , Eq (TxOut era) - , Eq (PredicateFailure (EraRule "UTXOS" era)) - ) => - Eq (AlonzoUtxoPredFailure era) - -instance - ( NoThunks (Value era) - , NoThunks (UTxO era) - , NoThunks (PredicateFailure (EraRule "UTXOS" era)) - , NoThunks (TxOut era) - ) => - NoThunks (AlonzoUtxoPredFailure era) - -instance - ( Era era - , NFData (Value era) - , NFData (UTxO era) - , NFData (PredicateFailure (EraRule "UTXOS" era)) - , NFData (TxOut era) - ) => - NFData (AlonzoUtxoPredFailure era) - -newtype AlonzoUtxoEvent era - = UtxosEvent (Event (EraRule "UTXOS" era)) - deriving (Generic) - -deriving instance Eq (Event (EraRule "UTXOS" era)) => Eq (AlonzoUtxoEvent era) - -instance NFData (Event (EraRule "UTXOS" era)) => NFData (AlonzoUtxoEvent era) - --- | Returns true for VKey locked addresses, and false for any kind of --- script-locked address. -isKeyHashAddr :: Addr c -> Bool -isKeyHashAddr (AddrBootstrap _) = True -isKeyHashAddr (Addr _ (KeyHashObj _) _) = True -isKeyHashAddr _ = False - --- | This is equivalent to `isKeyHashAddr`, but for compacted version of an address. -isKeyHashCompactAddr :: CompactAddr c -> Bool -isKeyHashCompactAddr cAddr = - isBootstrapCompactAddr cAddr || not (isPayCredScriptCompactAddr cAddr) - -vKeyLocked :: EraTxOut era => TxOut era -> Bool -vKeyLocked txOut = - case txOut ^. addrEitherTxOutL of - Left addr -> isKeyHashAddr addr - Right cAddr -> isKeyHashCompactAddr cAddr - --- | feesOK is a predicate with several parts. Some parts only apply in special circumstances. --- 1) The fee paid is >= the minimum fee --- 2) If the total ExUnits are 0 in both Memory and Steps, no further part needs to be checked. --- 3) The collateral consists only of VKey addresses --- 4) The collateral is sufficient to cover the appropriate percentage of the --- fee marked in the transaction --- 5) The collateral inputs do not contain any non-ADA part --- 6) There is at least one collateral input --- As a TransitionRule it will return (), and produce a validation failure (rather than --- return) if any of the required parts are False. -feesOK :: - forall era. - ( AlonzoEraTx era - , EraUTxO era - ) => - PParams era -> - Tx era -> - UTxO era -> - Test (AlonzoUtxoPredFailure era) -feesOK pp tx u@(UTxO utxo) = - let txBody = tx ^. bodyTxL - collateral = txBody ^. collateralInputsTxBodyL -- Inputs allocated to pay txfee - -- restrict Utxo to those inputs we use to pay fees. - utxoCollateral = eval (collateral ◁ utxo) - theFee = txBody ^. feeTxBodyL - minFee = getMinFeeTxUtxo pp tx u - in sequenceA_ - [ -- Part 1: minfee pp tx ≤ txfee txb - failureUnless (minFee <= theFee) (FeeTooSmallUTxO minFee theFee) - , -- Part 2: (txrdmrs tx ≠ ∅ ⇒ validateCollateral) - unless (nullRedeemers (tx ^. witsTxL . rdmrsTxWitsL)) $ - validateCollateral pp txBody utxoCollateral - ] - -validateCollateral :: - ( EraTxBody era - , AlonzoEraPParams era - ) => - PParams era -> - TxBody era -> - Map.Map (TxIn (EraCrypto era)) (TxOut era) -> - Test (AlonzoUtxoPredFailure era) -validateCollateral pp txb utxoCollateral = - sequenceA_ - [ -- Part 3: (∀(a,_,_) ∈ range (collateral txb ◁ utxo), a ∈ Addrvkey) - validateScriptsNotPaidUTxO utxoCollateral - , -- Part 4: balance ∗ 100 ≥ txfee txb ∗ (collateralPercent pp) - validateInsufficientCollateral pp txb bal - , -- Part 5: isAdaOnly balance - validateCollateralContainsNonADA utxoCollateral - , -- Part 6: (∀(a,_,_) ∈ range (collateral txb ◁ utxo), a ∈ Addrvkey) - failureIf (null utxoCollateral) NoCollateralInputs - ] - where - bal = toDeltaCoin $ coinBalance (UTxO utxoCollateral) - --- > (∀(a,_,_) ∈ range (collateral txb ◁ utxo), a ∈ Addrvkey) -validateScriptsNotPaidUTxO :: - EraTxOut era => - Map.Map (TxIn (EraCrypto era)) (TxOut era) -> - Test (AlonzoUtxoPredFailure era) -validateScriptsNotPaidUTxO utxoCollateral = - failureUnless (all vKeyLocked utxoCollateral) $ - ScriptsNotPaidUTxO (UTxO (Map.filter (not . vKeyLocked) utxoCollateral)) - --- > balance ∗ 100 ≥ txfee txb ∗ (collateralPercent pp) -validateInsufficientCollateral :: - ( EraTxBody era - , AlonzoEraPParams era - ) => - PParams era -> - TxBody era -> - DeltaCoin -> - Test (AlonzoUtxoPredFailure era) -validateInsufficientCollateral pp txBody bal = - failureUnless (Val.scale (100 :: Int) bal >= Val.scale collPerc (toDeltaCoin txfee)) $ - InsufficientCollateral bal $ - rationalToCoinViaCeiling $ - (fromIntegral collPerc * unCoin txfee) % 100 - where - txfee = txBody ^. feeTxBodyL -- Coin supplied to pay fees - collPerc = pp ^. ppCollateralPercentageL - --- > isAdaOnly balance -validateCollateralContainsNonADA :: - (Foldable f, EraTxOut era) => - f (TxOut era) -> - Test (AlonzoUtxoPredFailure era) -validateCollateralContainsNonADA collateralTxOuts = - failureUnless (areAllAdaOnly collateralTxOuts) $ - CollateralContainsNonADA $ - sumAllValue collateralTxOuts - --- | If tx has non-native scripts, end of validity interval must translate to time --- --- > (_,i_f) := txvldt tx --- > ◇ ∉ { txrdmrs tx, i_f } ⇒ epochInfoSlotToUTCTime epochInfo systemTime i_f ≠ ◇ -validateOutsideForecast :: - ( MaryEraTxBody era - , AlonzoEraTxWits era - , EraTx era - ) => - EpochInfo (Either a) -> - -- | Current slot number - SlotNo -> - SystemStart -> - Tx era -> - Test (AlonzoUtxoPredFailure era) -validateOutsideForecast ei slotNo sysSt tx = - {- (_,i_f) := txvldt tx -} - case tx ^. bodyTxL . vldtTxBodyL of - ValidityInterval _ (SJust ifj) - | not (nullRedeemers (tx ^. witsTxL . rdmrsTxWitsL)) -> - let ei' = unsafeLinearExtendEpochInfo slotNo ei - in -- ◇ ∉ { txrdmrs tx, i_f } ⇒ - failureUnless (isRight (epochInfoSlotToUTCTime ei' sysSt ifj)) $ OutsideForecast ifj - _ -> pure () - --- | Ensure that there are no `TxOut`s that have value less than the sized @coinsPerUTxOWord@ --- --- > ∀ txout ∈ txouts txb, getValue txout ≥ inject (utxoEntrySize txout ∗ coinsPerUTxOWord pp) -validateOutputTooSmallUTxO :: - (AlonzoEraTxOut era, Foldable f) => - PParams era -> - f (TxOut era) -> - Test (AlonzoUtxoPredFailure era) -validateOutputTooSmallUTxO pp outputs = - failureUnless (null outputsTooSmall) $ OutputTooSmallUTxO outputsTooSmall - where - outputsTooSmall = - filter - ( \txOut -> - let v = txOut ^. valueTxOutL - in -- pointwise is used because non-ada amounts must be >= 0 too - not $ Val.pointwise (>=) v (Val.inject $ getMinCoinTxOut pp txOut) - ) - (toList outputs) - --- | Ensure that there are no `TxOut`s that have `Value` of size larger --- than @MaxValSize@. We use serialized length of `Value` because this Value --- size is being limited inside a serialized `Tx`. --- --- > ∀ txout ∈ txouts txb, serSize (getValue txout) ≤ maxValSize pp -validateOutputTooBigUTxO :: - ( EraTxOut era - , AlonzoEraPParams era - , Foldable f - ) => - PParams era -> - f (TxOut era) -> - Test (AlonzoUtxoPredFailure era) -validateOutputTooBigUTxO pp outputs = - failureUnless (null outputsTooBig) $ OutputTooBigUTxO outputsTooBig - where - maxValSize = pp ^. ppMaxValSizeL - protVer = pp ^. ppProtocolVersionL - outputsTooBig = foldl' accum [] outputs - accum ans txOut = - let v = txOut ^. valueTxOutL - serSize = fromIntegral $ BSL.length $ serialize (pvMajor protVer) v - in if serSize > maxValSize - then (fromIntegral serSize, fromIntegral maxValSize, txOut) : ans - else ans - --- | Ensure if NetworkId is present in the txbody it matches the global NetworkId --- --- > (txnetworkid txb = NetworkId) ∨ (txnetworkid txb = ◇) -validateWrongNetworkInTxBody :: - AlonzoEraTxBody era => - Network -> - TxBody era -> - Test (AlonzoUtxoPredFailure era) -validateWrongNetworkInTxBody netId txBody = - case txBody ^. networkIdTxBodyL of - SNothing -> pure () - SJust bid -> failureUnless (netId == bid) $ WrongNetworkInTxBody netId bid - --- | Ensure that execution units to not exceed the maximum allowed @maxTxExUnits@ parameter. --- --- > totExunits tx ≤ maxTxExUnits pp -validateExUnitsTooBigUTxO :: - ( AlonzoEraTxWits era - , EraTx era - , AlonzoEraPParams era - ) => - PParams era -> - Tx era -> - Test (AlonzoUtxoPredFailure era) -validateExUnitsTooBigUTxO pp tx = - failureUnless (pointWiseExUnits (<=) totalExUnits maxTxExUnits) $ - ExUnitsTooBigUTxO maxTxExUnits totalExUnits - where - maxTxExUnits = pp ^. ppMaxTxExUnitsL - -- This sums up the ExUnits for all embedded Plutus Scripts anywhere in the transaction: - totalExUnits = totExUnits tx - --- | Ensure that number of collaterals does not exceed the allowed @maxCollInputs@ parameter. --- --- > ‖collateral tx‖ ≤ maxCollInputs pp -validateTooManyCollateralInputs :: - AlonzoEraTxBody era => - PParams era -> - TxBody era -> - Test (AlonzoUtxoPredFailure era) -validateTooManyCollateralInputs pp txBody = - failureUnless (numColl <= maxColl) $ TooManyCollateralInputs maxColl numColl - where - maxColl, numColl :: Natural - maxColl = pp ^. ppMaxCollateralInputsL - numColl = fromIntegral . Set.size $ txBody ^. collateralInputsTxBodyL - --- ================================================================ - --- | The UTxO transition rule for the Alonzo eras. -utxoTransition :: - forall era. - ( EraUTxO era - , AlonzoEraTx era - , ProtVerAtMost era 8 - , EraRule "UTXO" era ~ AlonzoUTXO era - , InjectRuleFailure "UTXO" ShelleyUtxoPredFailure era - , InjectRuleFailure "UTXO" AlonzoUtxoPredFailure era - , InjectRuleFailure "UTXO" AllegraUtxoPredFailure era - , Embed (EraRule "UTXOS" era) (AlonzoUTXO era) - , Environment (EraRule "UTXOS" era) ~ UtxoEnv era - , State (EraRule "UTXOS" era) ~ UTxOState era - , Signal (EraRule "UTXOS" era) ~ Tx era - ) => - TransitionRule (EraRule "UTXO" era) -utxoTransition = do - TRC (UtxoEnv slot pp dpstate, utxos, tx) <- judgmentContext - let utxo = utxosUtxo utxos - - {- txb := txbody tx -} - let txBody = tx ^. bodyTxL - inputsAndCollateral = - Set.union - (txBody ^. inputsTxBodyL) - (txBody ^. collateralInputsTxBodyL) - - {- ininterval slot (txvld txb) -} - runTest $ - Allegra.validateOutsideValidityIntervalUTxO slot txBody - - sysSt <- liftSTS $ asks systemStart - ei <- liftSTS $ asks epochInfo - - {- epochInfoSlotToUTCTime epochInfo systemTime i_f ≠ ◇ -} - runTest $ validateOutsideForecast ei slot sysSt tx - - {- txins txb ≠ ∅ -} - runTestOnSignal $ Shelley.validateInputSetEmptyUTxO txBody - - {- feesOK pp tx utxo -} - runTest $ feesOK pp tx utxo -- Generalizes the fee to small from earlier Era's - - {- inputsAndCollateral = txins txb ∪ collateral txb -} - {- (txins txb) ∪ (collateral txb) ⊆ dom utxo -} - runTest $ Shelley.validateBadInputsUTxO utxo inputsAndCollateral - - {- consumed pp utxo txb = produced pp poolParams txb -} - runTest $ Shelley.validateValueNotConservedUTxO pp utxo dpstate txBody - - {- adaPolicy ∉ supp mint tx - above check not needed because mint field of type MultiAsset cannot contain ada -} - - let outputs = txBody ^. outputsTxBodyL - {- ∀ txout ∈ txouts txb, getValuetxout ≥ inject (uxoEntrySizetxout ∗ coinsPerUTxOWord p) -} - runTest $ validateOutputTooSmallUTxO pp outputs - - {- ∀ txout ∈ txouts txb, serSize (getValue txout) ≤ maxValSize pp -} - runTest $ validateOutputTooBigUTxO pp outputs - - {- ∀ ( _ ↦ (a,_)) ∈ txoutstxb, a ∈ Addrbootstrap → bootstrapAttrsSize a ≤ 64 -} - runTestOnSignal $ Shelley.validateOutputBootAddrAttrsTooBig outputs - - netId <- liftSTS $ asks networkId - - {- ∀(_ → (a, _)) ∈ txouts txb, netId a = NetworkId -} - runTestOnSignal $ Shelley.validateWrongNetwork netId outputs - - {- ∀(a → ) ∈ txwdrls txb, netId a = NetworkId -} - runTestOnSignal $ Shelley.validateWrongNetworkWithdrawal netId txBody - - {- (txnetworkid txb = NetworkId) ∨ (txnetworkid txb = ◇) -} - runTestOnSignal $ validateWrongNetworkInTxBody netId txBody - - {- txsize tx ≤ maxTxSize pp -} - runTestOnSignal $ Shelley.validateMaxTxSizeUTxO pp tx - - {- totExunits tx ≤ maxTxExUnits pp -} - runTest $ validateExUnitsTooBigUTxO pp tx - - {- ‖collateral tx‖ ≤ maxCollInputs pp -} - - trans @(EraRule "UTXOS" era) =<< coerce <$> judgmentContext - --------------------------------------------------------------------------------- --- AlonzoUTXO STS --------------------------------------------------------------------------------- - -instance - forall era. - ( EraUTxO era - , AlonzoEraTx era - , Embed (EraRule "UTXOS" era) (AlonzoUTXO era) - , Environment (EraRule "UTXOS" era) ~ UtxoEnv era - , State (EraRule "UTXOS" era) ~ UTxOState era - , Signal (EraRule "UTXOS" era) ~ Tx era - , EraRule "UTXO" era ~ AlonzoUTXO era - , InjectRuleFailure "UTXO" ShelleyUtxoPredFailure era - , InjectRuleFailure "UTXO" AlonzoUtxoPredFailure era - , InjectRuleFailure "UTXO" AllegraUtxoPredFailure era - , ProtVerAtMost era 8 - ) => - STS (AlonzoUTXO era) - where - type State (AlonzoUTXO era) = UTxOState era - type Signal (AlonzoUTXO era) = Tx era - type Environment (AlonzoUTXO era) = UtxoEnv era - type BaseM (AlonzoUTXO era) = ShelleyBase - type PredicateFailure (AlonzoUTXO era) = AlonzoUtxoPredFailure era - type Event (AlonzoUTXO era) = AlonzoUtxoEvent era - - initialRules = [] - transitionRules = [utxoTransition] - -instance - ( Era era - , STS (AlonzoUTXOS era) - , PredicateFailure (EraRule "UTXOS" era) ~ AlonzoUtxosPredFailure era - , Event (EraRule "UTXOS" era) ~ Event (AlonzoUTXOS era) - ) => - Embed (AlonzoUTXOS era) (AlonzoUTXO era) - where - wrapFailed = UtxosFailure - wrapEvent = UtxosEvent - --------------------------------------------------------------------------------- --- Serialisation --------------------------------------------------------------------------------- - -instance - ( Era era - , EncCBOR (TxOut era) - , EncCBOR (Value era) - , EncCBOR (PredicateFailure (EraRule "UTXOS" era)) - ) => - EncCBOR (AlonzoUtxoPredFailure era) - where - encCBOR x = encode (encFail x) - -encFail :: - forall era. - ( Era era - , EncCBOR (TxOut era) - , EncCBOR (Value era) - , EncCBOR (PredicateFailure (EraRule "UTXOS" era)) - ) => - AlonzoUtxoPredFailure era -> - Encode 'Open (AlonzoUtxoPredFailure era) -encFail (BadInputsUTxO ins) = - Sum (BadInputsUTxO @era) 0 !> To ins -encFail (OutsideValidityIntervalUTxO a b) = - Sum OutsideValidityIntervalUTxO 1 !> To a !> To b -encFail (MaxTxSizeUTxO a b) = - Sum MaxTxSizeUTxO 2 !> To a !> To b -encFail InputSetEmptyUTxO = - Sum InputSetEmptyUTxO 3 -encFail (FeeTooSmallUTxO a b) = - Sum FeeTooSmallUTxO 4 !> To a !> To b -encFail (ValueNotConservedUTxO a b) = - Sum (ValueNotConservedUTxO @era) 5 !> To a !> To b -encFail (OutputTooSmallUTxO outs) = - Sum (OutputTooSmallUTxO @era) 6 !> To outs -encFail (UtxosFailure a) = - Sum (UtxosFailure @era) 7 !> To a -encFail (WrongNetwork right wrongs) = - Sum (WrongNetwork @era) 8 !> To right !> To wrongs -encFail (WrongNetworkWithdrawal right wrongs) = - Sum (WrongNetworkWithdrawal @era) 9 !> To right !> To wrongs -encFail (OutputBootAddrAttrsTooBig outs) = - Sum (OutputBootAddrAttrsTooBig @era) 10 !> To outs -encFail TriesToForgeADA = - Sum TriesToForgeADA 11 -encFail (OutputTooBigUTxO outs) = - Sum (OutputTooBigUTxO @era) 12 !> To outs -encFail (InsufficientCollateral a b) = - Sum InsufficientCollateral 13 !> To a !> To b -encFail (ScriptsNotPaidUTxO a) = - Sum ScriptsNotPaidUTxO 14 !> To a -encFail (ExUnitsTooBigUTxO a b) = - Sum ExUnitsTooBigUTxO 15 !> To a !> To b -encFail (CollateralContainsNonADA a) = - Sum CollateralContainsNonADA 16 !> To a -encFail (WrongNetworkInTxBody a b) = - Sum WrongNetworkInTxBody 17 !> To a !> To b -encFail (OutsideForecast a) = - Sum OutsideForecast 18 !> To a -encFail (TooManyCollateralInputs a b) = - Sum TooManyCollateralInputs 19 !> To a !> To b -encFail NoCollateralInputs = - Sum NoCollateralInputs 20 - -decFail :: - ( Era era - , DecCBOR (TxOut era) - , DecCBOR (Value era) - , DecCBOR (PredicateFailure (EraRule "UTXOS" era)) - ) => - Word -> - Decode 'Open (AlonzoUtxoPredFailure era) -decFail 0 = SumD BadInputsUTxO (Integer, Integer, TxOut era) - fromRestricted (sz, mv, txOut) = (toInteger sz, toInteger mv, txOut) - in SumD OutputTooBigUTxO decCBOR) -decFail 13 = SumD InsufficientCollateral decCBOR) -decFail 15 = SumD ExUnitsTooBigUTxO - DecCBOR (AlonzoUtxoPredFailure era) - where - decCBOR = decode (Summands "UtxoPredicateFailure" decFail) - --- ===================================================== --- Injecting from one PredicateFailure to another - -allegraToAlonzoUtxoPredFailure :: - forall t era. - ( EraRuleFailure "PPUP" era ~ t era - , InjectRuleFailure "UTXOS" t era - ) => - AllegraUtxoPredFailure era -> - AlonzoUtxoPredFailure era -allegraToAlonzoUtxoPredFailure = \case - Allegra.BadInputsUTxO x -> BadInputsUTxO x - Allegra.OutsideValidityIntervalUTxO vi slotNo -> OutsideValidityIntervalUTxO vi slotNo - Allegra.MaxTxSizeUTxO x y -> MaxTxSizeUTxO x y - Allegra.InputSetEmptyUTxO -> InputSetEmptyUTxO - Allegra.FeeTooSmallUTxO c1 c2 -> FeeTooSmallUTxO c1 c2 - Allegra.ValueNotConservedUTxO vc vp -> ValueNotConservedUTxO vc vp - Allegra.WrongNetwork x y -> WrongNetwork x y - Allegra.WrongNetworkWithdrawal x y -> WrongNetworkWithdrawal x y - Allegra.OutputTooSmallUTxO x -> OutputTooSmallUTxO x - Allegra.UpdateFailure x -> UtxosFailure (injectFailure @"UTXOS" @t x) - Allegra.OutputBootAddrAttrsTooBig xs -> OutputTooBigUTxO (map (0,0,) xs) - Allegra.TriesToForgeADA -> TriesToForgeADA - Allegra.OutputTooBigUTxO xs -> OutputTooBigUTxO (map (0,0,) xs) diff --git a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Utxos.hs b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Utxos.hs deleted file mode 100644 index c33311923d7..00000000000 --- a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Utxos.hs +++ /dev/null @@ -1,505 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Alonzo.Rules.Utxos ( - AlonzoUTXOS, - AlonzoUtxosPredFailure (..), - lbl2Phase, - TagMismatchDescription (..), - validBegin, - validEnd, - invalidBegin, - invalidEnd, - AlonzoUtxosEvent (..), - when2Phase, - FailureDescription (..), - scriptFailureToFailureDescription, -) -where - -import Cardano.Ledger.Alonzo.Core -import Cardano.Ledger.Alonzo.Era (AlonzoEra, AlonzoUTXOS) -import Cardano.Ledger.Alonzo.Plutus.Context (ContextError, EraPlutusContext) -import Cardano.Ledger.Alonzo.Plutus.Evaluate ( - CollectError (..), - collectPlutusScriptsWithContext, - evalPlutusScripts, - ) -import Cardano.Ledger.Alonzo.Rules.Ppup () -import Cardano.Ledger.Alonzo.Tx (IsValid (..)) -import Cardano.Ledger.Alonzo.UTxO (AlonzoEraUTxO (..), AlonzoScriptsNeeded) -import Cardano.Ledger.BaseTypes ( - Globals, - ShelleyBase, - StrictMaybe, - epochInfo, - kindObject, - systemStart, - ) -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - ) -import Cardano.Ledger.Binary.Coders -import qualified Cardano.Ledger.Binary.Plain as Plain -import Cardano.Ledger.CertState (certDState, dsGenDelegs) -import Cardano.Ledger.Coin (Coin) -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Plutus.Evaluate ( - PlutusWithContext, - ScriptFailure (..), - ScriptResult (..), - ) -import Cardano.Ledger.Rules.ValidationMode (lblStatic) -import Cardano.Ledger.SafeHash (SafeHash, hashAnnotated) -import Cardano.Ledger.Shelley.LedgerState (UTxOState (..), updateStakeDistribution) -import qualified Cardano.Ledger.Shelley.LedgerState as Shelley -import Cardano.Ledger.Shelley.PParams (Update) -import Cardano.Ledger.Shelley.Rules ( - PpupEnv (..), - PpupEvent, - ShelleyPPUP, - ShelleyPpupPredFailure, - UtxoEnv (..), - updateUTxOState, - ) -import Cardano.Ledger.Shelley.TxCert (ShelleyTxCert) -import Cardano.Ledger.UTxO ( - EraUTxO (..), - UTxO (..), - coinBalance, - ) -import Cardano.Slotting.EpochInfo.Extend (unsafeLinearExtendEpochInfo) -import Cardano.Slotting.Slot (SlotNo) -import Control.DeepSeq (NFData) -import Control.Monad.Trans.Reader (ReaderT, asks) -import Control.State.Transition.Extended -import Data.Aeson (ToJSON (..), (.=)) -import qualified Data.Aeson as Aeson -import Data.ByteString as BS (ByteString) -import qualified Data.ByteString.Base64 as B64 -import Data.List (intercalate) -import Data.List.NonEmpty (NonEmpty (..), nonEmpty) -import qualified Data.List.NonEmpty as NE -import Data.MapExtras (extractKeys) -import Data.Text (Text) -import Debug.Trace (traceEvent) -import GHC.Generics (Generic) -import Lens.Micro -import NoThunks.Class (NoThunks) - --------------------------------------------------------------------------------- --- The AlonzoUTXOS transition system --------------------------------------------------------------------------------- - -instance - forall era. - ( AlonzoEraTx era - , AlonzoEraPParams era - , ShelleyEraTxBody era - , AlonzoEraUTxO era - , ScriptsNeeded era ~ AlonzoScriptsNeeded era - , AlonzoEraScript era - , TxCert era ~ ShelleyTxCert era - , EraGov era - , GovState era ~ ShelleyGovState era - , State (EraRule "PPUP" era) ~ ShelleyGovState era - , Embed (EraRule "PPUP" era) (AlonzoUTXOS era) - , Environment (EraRule "PPUP" era) ~ PpupEnv era - , Signal (EraRule "PPUP" era) ~ StrictMaybe (Update era) - , EncCBOR (PredicateFailure (EraRule "PPUP" era)) -- Serializing the PredicateFailure, - , Eq (EraRuleFailure "PPUP" era) - , Show (EraRuleFailure "PPUP" era) - , EraPlutusContext era - ) => - STS (AlonzoUTXOS era) - where - type BaseM (AlonzoUTXOS era) = ShelleyBase - type Environment (AlonzoUTXOS era) = UtxoEnv era - type State (AlonzoUTXOS era) = UTxOState era - type Signal (AlonzoUTXOS era) = Tx era - type PredicateFailure (AlonzoUTXOS era) = AlonzoUtxosPredFailure era - type Event (AlonzoUTXOS era) = AlonzoUtxosEvent era - transitionRules = [utxosTransition] - -data AlonzoUtxosEvent era - = AlonzoPpupToUtxosEvent (EraRuleEvent "PPUP" era) - | TotalDeposits (SafeHash (EraCrypto era) EraIndependentTxBody) Coin - | SuccessfulPlutusScriptsEvent (NonEmpty (PlutusWithContext (EraCrypto era))) - | FailedPlutusScriptsEvent (NonEmpty (PlutusWithContext (EraCrypto era))) - | -- | The UTxOs consumed and created by a signal tx - TxUTxODiff - -- | UTxO consumed - (UTxO era) - -- | UTxO created - (UTxO era) - deriving (Generic) - -deriving instance - ( Era era - , Eq (TxOut era) - , Eq (EraRuleEvent "PPUP" era) - ) => - Eq (AlonzoUtxosEvent era) - -instance - ( Era era - , NFData (TxOut era) - , NFData (EraRuleEvent "PPUP" era) - ) => - NFData (AlonzoUtxosEvent era) - -instance - ( Era era - , STS (ShelleyPPUP era) - , EraRuleFailure "PPUP" era ~ ShelleyPpupPredFailure era - , Event (EraRule "PPUP" era) ~ Event (ShelleyPPUP era) - , EraRuleEvent "PPUP" era ~ PpupEvent era - ) => - Embed (ShelleyPPUP era) (AlonzoUTXOS era) - where - wrapFailed = UpdateFailure - wrapEvent = AlonzoPpupToUtxosEvent - -utxosTransition :: - forall era. - ( AlonzoEraTx era - , ShelleyEraTxBody era - , AlonzoEraUTxO era - , ScriptsNeeded era ~ AlonzoScriptsNeeded era - , TxCert era ~ ShelleyTxCert era - , EraGov era - , GovState era ~ ShelleyGovState era - , State (EraRule "PPUP" era) ~ ShelleyGovState era - , Environment (EraRule "PPUP" era) ~ PpupEnv era - , Signal (EraRule "PPUP" era) ~ StrictMaybe (Update era) - , Embed (EraRule "PPUP" era) (AlonzoUTXOS era) - , EncCBOR (PredicateFailure (EraRule "PPUP" era)) -- Serializing the PredicateFailure - , Eq (EraRuleFailure "PPUP" era) - , Show (EraRuleFailure "PPUP" era) - , EraPlutusContext era - ) => - TransitionRule (AlonzoUTXOS era) -utxosTransition = - judgmentContext >>= \(TRC (_, _, tx)) -> do - case tx ^. isValidTxL of - IsValid True -> alonzoEvalScriptsTxValid - IsValid False -> alonzoEvalScriptsTxInvalid - --- =================================================================== - -scriptsTransition :: - ( STS sts - , Monad m - , AlonzoEraTxBody era - , AlonzoEraTxWits era - , AlonzoEraUTxO era - , ScriptsNeeded era ~ AlonzoScriptsNeeded era - , BaseM sts ~ ReaderT Globals m - , PredicateFailure sts ~ AlonzoUtxosPredFailure era - , EraPlutusContext era - ) => - SlotNo -> - PParams era -> - Tx era -> - UTxO era -> - (ScriptResult (EraCrypto era) -> Rule sts ctx ()) -> - Rule sts ctx () -scriptsTransition slot pp tx utxo action = do - sysSt <- liftSTS $ asks systemStart - ei <- liftSTS $ asks epochInfo - case collectPlutusScriptsWithContext (unsafeLinearExtendEpochInfo slot ei) sysSt pp tx utxo of - Right sLst -> - when2Phase $ action $ evalPlutusScripts tx sLst - Left info - | alonzoFailures <- filter isNotBadTranslation info - , not (null alonzoFailures) -> - failBecause (CollectErrors alonzoFailures) - | otherwise -> pure () - where - -- BadTranslation was introduced in Babbage, thus we need to filter those failures out. - isNotBadTranslation = \case - BadTranslation {} -> False - _ -> True - -alonzoEvalScriptsTxValid :: - forall era. - ( AlonzoEraTx era - , AlonzoEraUTxO era - , ShelleyEraTxBody era - , ScriptsNeeded era ~ AlonzoScriptsNeeded era - , STS (AlonzoUTXOS era) - , Environment (EraRule "PPUP" era) ~ PpupEnv era - , Signal (EraRule "PPUP" era) ~ StrictMaybe (Update era) - , Embed (EraRule "PPUP" era) (AlonzoUTXOS era) - , GovState era ~ ShelleyGovState era - , State (EraRule "PPUP" era) ~ ShelleyGovState era - , EraPlutusContext era - ) => - TransitionRule (AlonzoUTXOS era) -alonzoEvalScriptsTxValid = do - TRC (UtxoEnv slot pp certState, utxos@(UTxOState utxo _ _ pup _ _), tx) <- - judgmentContext - let txBody = tx ^. bodyTxL - genDelegs = dsGenDelegs (certDState certState) - - () <- pure $! traceEvent validBegin () - - scriptsTransition slot pp tx utxo $ \case - Fails _ps fs -> - failBecause $ - ValidationTagMismatch - (tx ^. isValidTxL) - (FailedUnexpectedly (scriptFailureToFailureDescription <$> fs)) - Passes ps -> mapM_ (tellEvent . SuccessfulPlutusScriptsEvent) (nonEmpty ps) - - () <- pure $! traceEvent validEnd () - - ppup' <- - trans @(EraRule "PPUP" era) $ - TRC (PPUPEnv slot pp genDelegs, pup, txBody ^. updateTxBodyL) - - updateUTxOState - pp - utxos - txBody - certState - ppup' - (tellEvent . TotalDeposits (hashAnnotated txBody)) - (\a b -> tellEvent $ TxUTxODiff a b) - -alonzoEvalScriptsTxInvalid :: - forall era. - ( AlonzoEraTx era - , AlonzoEraUTxO era - , ScriptsNeeded era ~ AlonzoScriptsNeeded era - , STS (AlonzoUTXOS era) - , EraPlutusContext era - ) => - TransitionRule (AlonzoUTXOS era) -alonzoEvalScriptsTxInvalid = do - TRC (UtxoEnv slot pp _, us@(UTxOState utxo _ fees _ _ _), tx) <- judgmentContext - let txBody = tx ^. bodyTxL - - () <- pure $! traceEvent invalidBegin () - - scriptsTransition slot pp tx utxo $ \case - Passes _ps -> - failBecause $ - ValidationTagMismatch (tx ^. isValidTxL) PassedUnexpectedly - Fails ps fs -> do - mapM_ (tellEvent . SuccessfulPlutusScriptsEvent) (nonEmpty ps) - tellEvent (FailedPlutusScriptsEvent (scriptFailurePlutus <$> fs)) - - () <- pure $! traceEvent invalidEnd () - - {- utxoKeep = txBody ^. collateralInputsTxBodyL ⋪ utxo -} - {- utxoDel = txBody ^. collateralInputsTxBodyL ◁ utxo -} - let !(utxoKeep, utxoDel) = extractKeys (unUTxO utxo) (txBody ^. collateralInputsTxBodyL) - pure $! - us - { utxosUtxo = UTxO utxoKeep - , utxosFees = fees <> coinBalance (UTxO utxoDel) - , utxosStakeDistr = updateStakeDistribution pp (utxosStakeDistr us) (UTxO utxoDel) mempty - } - --- ======================================= --- Names for the events we will tell - -validBegin, validEnd, invalidBegin, invalidEnd :: String -validBegin = intercalate "," ["[LEDGER][SCRIPTS_VALIDATION]", "BEGIN"] -validEnd = intercalate "," ["[LEDGER][SCRIPTS_VALIDATION]", "END"] -invalidBegin = intercalate "," ["[LEDGER][SCRIPTS_NOT_VALIDATE_TRANSITION]", "BEGIN"] -invalidEnd = intercalate "," ["[LEDGER][SCRIPTS_NOT_VALIDATE_TRANSITION]", "END"] - --- ============================================= --- PredicateFailure data type for AlonzoUTXOS - -data FailureDescription - = PlutusFailure Text BS.ByteString - deriving (Show, Eq, Generic, NoThunks) - -instance NFData FailureDescription - -instance EncCBOR FailureDescription where - -- This strange encoding results from the fact that 'FailureDescription' - -- used to have another constructor, which used key 0. - -- We must maintain the original serialization in order to not disrupt - -- the node-to-client protocol of the cardano node. - encCBOR (PlutusFailure s b) = encode $ Sum PlutusFailure 1 !> To s !> To b - -instance DecCBOR FailureDescription where - decCBOR = decode $ Summands "FailureDescription" $ \case - -- Note the lack of key 0. See the EncCBOR instance above for an explanation. - 1 -> SumD PlutusFailure Invalid n - -instance ToJSON FailureDescription where - toJSON (PlutusFailure t _bs) = - kindObject - "FailureDescription" - [ "error" .= Aeson.String "PlutusFailure" - , "description" .= t - -- Plutus context can be pretty big, therefore it's omitted in JSON - -- "reconstructionDetail" .= bs - ] - -scriptFailureToFailureDescription :: Crypto c => ScriptFailure c -> FailureDescription -scriptFailureToFailureDescription (ScriptFailure msg pwc) = - PlutusFailure msg (B64.encode $ Plain.serialize' pwc) - -data TagMismatchDescription - = PassedUnexpectedly - | FailedUnexpectedly (NonEmpty FailureDescription) - deriving (Show, Eq, Generic, NoThunks) - -instance NFData TagMismatchDescription - -instance EncCBOR TagMismatchDescription where - encCBOR PassedUnexpectedly = encode (Sum PassedUnexpectedly 0) - encCBOR (FailedUnexpectedly fs) = encode (Sum FailedUnexpectedly 1 !> To fs) - -instance DecCBOR TagMismatchDescription where - decCBOR = decode (Summands "TagMismatchDescription" dec) - where - dec 0 = SumD PassedUnexpectedly - dec 1 = SumD FailedUnexpectedly - kindObject - "TagMismatchDescription" - ["error" .= Aeson.String "PassedUnexpectedly"] - FailedUnexpectedly forReasons -> - kindObject - "TagMismatchDescription" - [ "error" .= Aeson.String "FailedUnexpectedly" - , "reconstruction" .= forReasons - ] - -data AlonzoUtxosPredFailure era - = -- | The 'isValid' tag on the transaction is incorrect. The tag given - -- here is that provided on the transaction (whereas evaluation of the - -- scripts gives the opposite.). The Text tries to explain why it failed. - ValidationTagMismatch IsValid TagMismatchDescription - | -- | We could not find all the necessary inputs for a Plutus Script. - -- Previous PredicateFailure tests should make this impossible, but the - -- consequences of not detecting this means scripts get dropped, so things - -- might validate that shouldn't. So we double check in the function - -- collectTwoPhaseScriptInputs, it should find data for every Script. - CollectErrors [CollectError era] - | UpdateFailure (EraRuleFailure "PPUP" era) - deriving - (Generic) - -type instance EraRuleFailure "UTXOS" (AlonzoEra c) = AlonzoUtxosPredFailure (AlonzoEra c) - -instance InjectRuleFailure "UTXOS" AlonzoUtxosPredFailure (AlonzoEra c) - -instance InjectRuleFailure "UTXOS" ShelleyPpupPredFailure (AlonzoEra c) where - injectFailure = UpdateFailure - -instance - ( EraTxCert era - , AlonzoEraScript era - , EncCBOR (ContextError era) - , EncCBOR (EraRuleFailure "PPUP" era) - ) => - EncCBOR (AlonzoUtxosPredFailure era) - where - encCBOR (ValidationTagMismatch v descr) = encode (Sum ValidationTagMismatch 0 !> To v !> To descr) - encCBOR (CollectErrors cs) = - encode (Sum (CollectErrors @era) 1 !> To cs) - encCBOR (UpdateFailure pf) = encode (Sum (UpdateFailure @era) 2 !> To pf) - -instance - ( EraTxCert era - , AlonzoEraScript era - , DecCBOR (ContextError era) - , DecCBOR (EraRuleFailure "PPUP" era) - ) => - DecCBOR (AlonzoUtxosPredFailure era) - where - decCBOR = decode (Summands "AlonzoUtxosPredicateFailure" dec) - where - dec 0 = SumD ValidationTagMismatch - Show (AlonzoUtxosPredFailure era) - -deriving stock instance - ( AlonzoEraScript era - , Eq (TxCert era) - , Eq (ContextError era) - , Eq (Shelley.UTxOState era) - , Eq (EraRuleFailure "PPUP" era) - ) => - Eq (AlonzoUtxosPredFailure era) - -instance - ( AlonzoEraScript era - , NoThunks (TxCert era) - , NoThunks (ContextError era) - , NoThunks (Shelley.UTxOState era) - , NoThunks (EraRuleFailure "PPUP" era) - ) => - NoThunks (AlonzoUtxosPredFailure era) - -instance - ( AlonzoEraScript era - , NFData (TxCert era) - , NFData (ContextError era) - , NFData (Shelley.UTxOState era) - , NFData (EraRuleFailure "PPUP" era) - ) => - NFData (AlonzoUtxosPredFailure era) - --------------------------------------------------------------------------------- --- 2-phase checks --------------------------------------------------------------------------------- - --- $2-phase --- --- Above and beyond 'static' checks (see 'Cardano.Ledger.Rules.ValidateMode') we --- additionally label 2-phase checks. This is to support a workflow where we --- validate a 'AlonzoTx'. We would like to trust the flag we have ourselves just --- computed rather than re-calculating it. However, all other checks should be --- computed as normal. - --- | Indicates that this check depends only upon the signal to the transition, --- not the state or environment. -lbl2Phase :: Label -lbl2Phase = "2phase" - --- | Construct a 2-phase predicate check. --- --- Note that 2-phase predicate checks are by definition static. -when2Phase :: Rule sts ctx () -> Rule sts ctx () -when2Phase = labeled $ lblStatic NE.:| [lbl2Phase] diff --git a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Utxow.hs b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Utxow.hs deleted file mode 100644 index f687212aef9..00000000000 --- a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Rules/Utxow.hs +++ /dev/null @@ -1,460 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PartialTypeSignatures #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Alonzo.Rules.Utxow ( - AlonzoUTXOW, - AlonzoUtxowEvent (WrappedShelleyEraEvent), - AlonzoUtxowPredFailure (..), - hasExactSetOfRedeemers, - missingRequiredDatums, - ppViewHashesMatch, - requiredSignersAreWitnessed, -) -where - -import Cardano.Crypto.DSIGN.Class (DSIGNAlgorithm (..), Signable) -import Cardano.Crypto.Hash.Class (Hash) -import Cardano.Ledger.Allegra.Rules (AllegraUtxoPredFailure) -import Cardano.Ledger.Alonzo.Core -import Cardano.Ledger.Alonzo.Era (AlonzoEra, AlonzoUTXOW) -import Cardano.Ledger.Alonzo.PParams (getLanguageView) -import Cardano.Ledger.Alonzo.Rules.Utxo ( - AlonzoUTXO, - AlonzoUtxoEvent, - AlonzoUtxoPredFailure (..), - ) -import Cardano.Ledger.Alonzo.Rules.Utxos (AlonzoUtxosPredFailure) -import Cardano.Ledger.Alonzo.Scripts (plutusScriptLanguage, toAsItem, toAsIx) -import Cardano.Ledger.Alonzo.Tx (hashScriptIntegrity) -import Cardano.Ledger.Alonzo.TxWits ( - unRedeemers, - unTxDats, - ) -import Cardano.Ledger.Alonzo.UTxO ( - AlonzoEraUTxO (..), - AlonzoScriptsNeeded (..), - getInputDataHashesTxBody, - ) -import Cardano.Ledger.BaseTypes ( - ShelleyBase, - StrictMaybe (..), - quorum, - ) -import Cardano.Ledger.Binary (DecCBOR (..), EncCBOR (..)) -import Cardano.Ledger.Binary.Coders -import Cardano.Ledger.CertState (certDState, dsGenDelegs) -import Cardano.Ledger.Crypto (DSIGN, HASH) -import Cardano.Ledger.Keys (KeyHash, KeyRole (..)) -import Cardano.Ledger.Rules.ValidationMode (Test, runTest, runTestOnSignal) -import Cardano.Ledger.Shelley.LedgerState (UTxOState (..)) -import Cardano.Ledger.Shelley.Rules ( - ShelleyPpupPredFailure, - ShelleyUtxoPredFailure, - ShelleyUtxowEvent (UtxoEvent), - ShelleyUtxowPredFailure (..), - UtxoEnv (..), - validateNeededWitnesses, - ) -import qualified Cardano.Ledger.Shelley.Rules as Shelley -import Cardano.Ledger.Shelley.Tx (witsFromTxWitnesses) -import Cardano.Ledger.Shelley.UTxO (ShelleyScriptsNeeded (..)) -import Cardano.Ledger.TxIn (TxIn (..)) -import Cardano.Ledger.UTxO (EraUTxO (..), ScriptsProvided (..), UTxO (..)) -import Control.DeepSeq (NFData) -import Control.Monad.Trans.Reader (asks) -import Control.SetAlgebra (domain, eval, (⊆), (➖)) -import Control.State.Transition.Extended -import Data.Foldable (sequenceA_) -import qualified Data.Map.Strict as Map -import Data.Maybe (mapMaybe) -import Data.Set (Set) -import qualified Data.Set as Set -import Data.Typeable (Typeable) -import GHC.Generics (Generic) -import Lens.Micro -import NoThunks.Class -import Validation - --- ================================================= - --- | The Predicate failure type in the Alonzo Era. It embeds the Predicate --- failure type of the Shelley Era, as they share some failure modes. -data AlonzoUtxowPredFailure era - = ShelleyInAlonzoUtxowPredFailure !(ShelleyUtxowPredFailure era) - | -- | List of scripts for which no redeemers were supplied - MissingRedeemers - ![(PlutusPurpose AsItem era, ScriptHash (EraCrypto era))] - | MissingRequiredDatums - -- | Set of missing data hashes - !(Set (DataHash (EraCrypto era))) - -- | Set of received data hashes - !(Set (DataHash (EraCrypto era))) - | NotAllowedSupplementalDatums - -- | Set of unallowed data hashes - !(Set (DataHash (EraCrypto era))) - -- | Set of acceptable supplemental data hashes - !(Set (DataHash (EraCrypto era))) - | PPViewHashesDontMatch - -- | The PPHash in the TxBody - !(StrictMaybe (ScriptIntegrityHash (EraCrypto era))) - -- | Computed from the current Protocol Parameters - !(StrictMaybe (ScriptIntegrityHash (EraCrypto era))) - | -- | Set of witnesses which were needed and not supplied - MissingRequiredSigners -- TODO: remove once in Conway. It is now redundant. See #3972 - (Set (KeyHash 'Witness (EraCrypto era))) - | -- | Set of transaction inputs that are TwoPhase scripts, and should have a DataHash but don't - UnspendableUTxONoDatumHash - (Set (TxIn (EraCrypto era))) - | -- | List of redeemers not needed - ExtraRedeemers - ![PlutusPurpose AsIx era] - deriving (Generic) - -type instance EraRuleFailure "UTXOW" (AlonzoEra c) = AlonzoUtxowPredFailure (AlonzoEra c) - -instance InjectRuleFailure "UTXOW" AlonzoUtxowPredFailure (AlonzoEra c) - -instance InjectRuleFailure "UTXOW" ShelleyUtxowPredFailure (AlonzoEra c) where - injectFailure = ShelleyInAlonzoUtxowPredFailure - -instance InjectRuleFailure "UTXOW" AlonzoUtxoPredFailure (AlonzoEra c) where - injectFailure = ShelleyInAlonzoUtxowPredFailure . UtxoFailure - -instance InjectRuleFailure "UTXOW" AlonzoUtxosPredFailure (AlonzoEra c) where - injectFailure = ShelleyInAlonzoUtxowPredFailure . UtxoFailure . injectFailure - -instance InjectRuleFailure "UTXOW" ShelleyPpupPredFailure (AlonzoEra c) where - injectFailure = ShelleyInAlonzoUtxowPredFailure . UtxoFailure . injectFailure - -instance InjectRuleFailure "UTXOW" ShelleyUtxoPredFailure (AlonzoEra c) where - injectFailure = ShelleyInAlonzoUtxowPredFailure . UtxoFailure . injectFailure - -instance InjectRuleFailure "UTXOW" AllegraUtxoPredFailure (AlonzoEra c) where - injectFailure = ShelleyInAlonzoUtxowPredFailure . UtxoFailure . injectFailure - -deriving instance - ( AlonzoEraScript era - , Show (TxCert era) - , Show (PredicateFailure (EraRule "UTXO" era)) - ) => - Show (AlonzoUtxowPredFailure era) - -deriving instance - ( AlonzoEraScript era - , Eq (TxCert era) - , Eq (PredicateFailure (EraRule "UTXO" era)) - ) => - Eq (AlonzoUtxowPredFailure era) - -instance - ( AlonzoEraScript era - , NoThunks (TxCert era) - , NoThunks (PredicateFailure (EraRule "UTXO" era)) - ) => - NoThunks (AlonzoUtxowPredFailure era) - -instance - ( AlonzoEraScript era - , NFData (TxCert era) - , NFData (PredicateFailure (EraRule "UTXO" era)) - , NFData (VerKeyDSIGN (DSIGN (EraCrypto era))) - ) => - NFData (AlonzoUtxowPredFailure era) - -instance - ( AlonzoEraScript era - , EncCBOR (TxCert era) - , EncCBOR (PredicateFailure (EraRule "UTXO" era)) - , Typeable (TxAuxData era) - ) => - EncCBOR (AlonzoUtxowPredFailure era) - where - encCBOR = - encode . \case - ShelleyInAlonzoUtxowPredFailure x -> Sum ShelleyInAlonzoUtxowPredFailure 0 !> To x - MissingRedeemers x -> Sum MissingRedeemers 1 !> To x - MissingRequiredDatums x y -> Sum MissingRequiredDatums 2 !> To x !> To y - NotAllowedSupplementalDatums x y -> Sum NotAllowedSupplementalDatums 3 !> To x !> To y - PPViewHashesDontMatch x y -> Sum PPViewHashesDontMatch 4 !> To x !> To y - MissingRequiredSigners x -> Sum MissingRequiredSigners 5 !> To x - UnspendableUTxONoDatumHash x -> Sum UnspendableUTxONoDatumHash 6 !> To x - ExtraRedeemers x -> Sum ExtraRedeemers 7 !> To x - -newtype AlonzoUtxowEvent era - = WrappedShelleyEraEvent (ShelleyUtxowEvent era) - deriving (Generic) - -deriving instance Eq (Event (EraRule "UTXO" era)) => Eq (AlonzoUtxowEvent era) - -instance NFData (Event (EraRule "UTXO" era)) => NFData (AlonzoUtxowEvent era) - -instance - ( AlonzoEraScript era - , DecCBOR (TxCert era) - , DecCBOR (PredicateFailure (EraRule "UTXO" era)) - , Typeable (TxAuxData era) - ) => - DecCBOR (AlonzoUtxowPredFailure era) - where - decCBOR = - decode $ Summands "UtxowPredicateFail" $ \case - 0 -> SumD ShelleyInAlonzoUtxowPredFailure SumD MissingRedeemers SumD MissingRequiredDatums SumD NotAllowedSupplementalDatums SumD PPViewHashesDontMatch SumD MissingRequiredSigners SumD UnspendableUTxONoDatumHash SumD ExtraRedeemers Invalid n - --- ================= - -{- { h | (_ → (a,_,h)) ∈ txins tx ◁ utxo, isTwoPhaseScriptAddress tx a} ⊆ dom(txdats txw) -} -{- dom(txdats txw) ⊆ inputHashes ∪ {h | ( , , h, ) ∈ txouts tx ∪ utxo (refInputs tx) } -} -missingRequiredDatums :: - forall era. - ( AlonzoEraTx era - , AlonzoEraUTxO era - ) => - UTxO era -> - Tx era -> - Test (AlonzoUtxowPredFailure era) -missingRequiredDatums utxo tx = do - let txBody = tx ^. bodyTxL - scriptsProvided = getScriptsProvided utxo tx - (inputHashes, txInsNoDataHash) = getInputDataHashesTxBody utxo txBody scriptsProvided - txHashes = domain (unTxDats $ tx ^. witsTxL . datsTxWitsL) - unmatchedDatumHashes = eval (inputHashes ➖ txHashes) - allowedSupplementalDataHashes = getSupplementalDataHashes utxo txBody - supplimentalDatumHashes = eval (txHashes ➖ inputHashes) - (okSupplimentalDHs, notOkSupplimentalDHs) = - Set.partition (`Set.member` allowedSupplementalDataHashes) supplimentalDatumHashes - sequenceA_ - [ failureUnless - (Set.null txInsNoDataHash) - (UnspendableUTxONoDatumHash txInsNoDataHash) - , failureUnless - (Set.null unmatchedDatumHashes) - (MissingRequiredDatums unmatchedDatumHashes txHashes) - , failureUnless - (Set.null notOkSupplimentalDHs) - (NotAllowedSupplementalDatums notOkSupplimentalDHs okSupplimentalDHs) - ] - --- ================== -{- dom (txrdmrs tx) = { rdptr txb sp | (sp, h) ∈ scriptsNeeded utxo tx, - h ↦ s ∈ txscripts txw, s ∈ Scriptph2} -} -hasExactSetOfRedeemers :: - forall era. - AlonzoEraTx era => - Tx era -> - ScriptsProvided era -> - AlonzoScriptsNeeded era -> - Test (AlonzoUtxowPredFailure era) -hasExactSetOfRedeemers tx (ScriptsProvided scriptsProvided) (AlonzoScriptsNeeded scriptsNeeded) = do - let redeemersNeeded = - [ (hoistPlutusPurpose toAsIx sp, (hoistPlutusPurpose toAsItem sp, sh)) - | (sp, sh) <- scriptsNeeded - , Just script <- [Map.lookup sh scriptsProvided] - , not (isNativeScript script) - ] - (extraRdmrs, missingRdmrs) = - extSymmetricDifference - (Map.keys $ unRedeemers $ tx ^. witsTxL . rdmrsTxWitsL) - id - redeemersNeeded - fst - sequenceA_ - [ failureUnless (null extraRdmrs) (ExtraRedeemers extraRdmrs) - , failureUnless (null missingRdmrs) (MissingRedeemers (map snd missingRdmrs)) - ] - --- ====================== -requiredSignersAreWitnessed :: - AlonzoEraTxBody era => - TxBody era -> - Set (KeyHash 'Witness (EraCrypto era)) -> - Test (AlonzoUtxowPredFailure era) -requiredSignersAreWitnessed txBody witsKeyHashes = do - let reqSignerHashes' = txBody ^. reqSignerHashesTxBodyL - failureUnless - (eval (reqSignerHashes' ⊆ witsKeyHashes)) - (MissingRequiredSigners (eval $ reqSignerHashes' ➖ witsKeyHashes)) -{-# DEPRECATED requiredSignersAreWitnessed "As no longer used. `validateNeededWitnesses` now handles this check" #-} - --- ======================= -{- scriptIntegrityHash txb = hashScriptIntegrity pp (languages txw) (txrdmrs txw) -} -ppViewHashesMatch :: - forall era. - AlonzoEraTx era => - Tx era -> - PParams era -> - ScriptsProvided era -> - Set (ScriptHash (EraCrypto era)) -> - Test (AlonzoUtxowPredFailure era) -ppViewHashesMatch tx pp (ScriptsProvided scriptsProvided) scriptsNeeded = do - let scriptsUsed = Map.elems $ Map.restrictKeys scriptsProvided scriptsNeeded - langs = Set.fromList $ plutusScriptLanguage <$> mapMaybe toPlutusScript scriptsUsed - langViews = Set.map (getLanguageView pp) langs - txWits = tx ^. witsTxL - computedPPhash = hashScriptIntegrity langViews (txWits ^. rdmrsTxWitsL) (txWits ^. datsTxWitsL) - bodyPPhash = tx ^. bodyTxL . scriptIntegrityHashTxBodyL - failureUnless - (bodyPPhash == computedPPhash) - (PPViewHashesDontMatch bodyPPhash computedPPhash) - --- ============================================================== --- Here we define the transtion function, using reusable tests. --- The tests are very generic and reusabe, but the transition --- function is very specific to the Alonzo Era. - --- | A very specialized transitionRule function for the Alonzo Era. -alonzoStyleWitness :: - forall era. - ( AlonzoEraTx era - , ShelleyEraTxBody era - , AlonzoEraUTxO era - , ScriptsNeeded era ~ AlonzoScriptsNeeded era - , Signable (DSIGN (EraCrypto era)) (Hash (HASH (EraCrypto era)) EraIndependentTxBody) - , EraRule "UTXOW" era ~ AlonzoUTXOW era - , InjectRuleFailure "UTXOW" ShelleyUtxowPredFailure era - , InjectRuleFailure "UTXOW" AlonzoUtxowPredFailure era - , -- Allow UTXOW to call UTXO - Embed (EraRule "UTXO" era) (AlonzoUTXOW era) - , Environment (EraRule "UTXO" era) ~ UtxoEnv era - , State (EraRule "UTXO" era) ~ UTxOState era - , Signal (EraRule "UTXO" era) ~ Tx era - ) => - TransitionRule (EraRule "UTXOW" era) -alonzoStyleWitness = do - TRC (utxoEnv@(UtxoEnv _ pp certState), u, tx) <- judgmentContext - - {- (utxo,_,_,_ ) := utxoSt -} - {- txb := txbody tx -} - {- txw := txwits tx -} - {- witsKeyHashes := { hashKey vk | vk ∈ dom(txwitsVKey txw) } -} - let utxo = utxosUtxo u - txBody = tx ^. bodyTxL - witsKeyHashes = witsFromTxWitnesses @era tx - scriptsProvided = getScriptsProvided utxo tx - - -- check scripts - {- ∀ s ∈ range(txscripts txw) ∩ Scriptnative), runNativeScript s tx -} - runTestOnSignal $ Shelley.validateFailedNativeScripts scriptsProvided tx - - {- { h | (_,h) ∈ scriptsNeeded utxo tx} = dom(txscripts txw) -} - let scriptsNeeded = getScriptsNeeded utxo txBody - scriptsHashesNeeded = getScriptsHashesNeeded scriptsNeeded - shelleyScriptsNeeded = ShelleyScriptsNeeded scriptsHashesNeeded - runTest $ Shelley.validateMissingScripts shelleyScriptsNeeded scriptsProvided - - {- inputHashes := { h | (_ → (a,_,h)) ∈ txins tx ◁ utxo, isTwoPhaseScriptAddress tx a} -} - {- inputHashes ⊆ dom(txdats txw) -} - runTest $ missingRequiredDatums utxo tx - - {- dom(txdats txw) ⊆ inputHashes ∪ {h | ( , , h) ∈ txouts tx -} - -- This is incorporated into missingRequiredDatums, see the - -- (failure . UnspendableUTxONoDatumHash) path. - - {- dom (txrdmrs tx) = { rdptr txb sp | (sp, h) ∈ scriptsNeeded utxo tx, - h ↦ s ∈ txscripts txw, s ∈ Scriptph2} -} - runTest $ hasExactSetOfRedeemers tx scriptsProvided scriptsNeeded - - -- check VKey witnesses - {- ∀ (vk ↦ σ) ∈ (txwitsVKey txw), V_vk⟦ txBodyHash ⟧_σ -} - runTestOnSignal $ Shelley.validateVerifiedWits tx - - {- witsVKeyNeeded utxo tx genDelegs ⊆ witsKeyHashes -} - runTest $ validateNeededWitnesses witsKeyHashes certState utxo txBody - - -- check genesis keys signatures for instantaneous rewards certificates - {- genSig := { hashKey gkey | gkey ∈ dom(genDelegs)} ∩ witsKeyHashes -} - {- { c ∈ txcerts txb ∩ TxCert_mir} ≠ ∅ ⇒ (|genSig| ≥ Quorum) ∧ (d pp > 0) -} - let genDelegs = dsGenDelegs (certDState certState) - coreNodeQuorum <- liftSTS $ asks quorum - runTest $ - Shelley.validateMIRInsufficientGenesisSigs genDelegs coreNodeQuorum witsKeyHashes tx - - -- check metadata hash - {- adh := txADhash txb; ad := auxiliaryData tx -} - {- ((adh = ◇) ∧ (ad= ◇)) ∨ (adh = hashAD ad) -} - runTestOnSignal $ Shelley.validateMetadata pp tx - - {- languages txw ⊆ dom(costmdls pp) -} - -- This check is checked when building the TxInfo using collectTwoPhaseScriptInputs, if it fails - -- It raises 'NoCostModel' a constructor of the predicate failure 'CollectError'. - - {- scriptIntegrityHash txb = hashScriptIntegrity pp (languages txw) (txrdmrs txw) -} - runTest $ ppViewHashesMatch tx pp scriptsProvided scriptsHashesNeeded - - trans @(EraRule "UTXO" era) $ TRC (utxoEnv, u, tx) - --- ================================ - -extSymmetricDifference :: Ord k => [a] -> (a -> k) -> [b] -> (b -> k) -> ([a], [b]) -extSymmetricDifference as fa bs fb = (extraA, extraB) - where - intersection = Set.fromList (map fa as) `Set.intersection` Set.fromList (map fb bs) - extraA = filter (\x -> not $ fa x `Set.member` intersection) as - extraB = filter (\x -> not $ fb x `Set.member` intersection) bs - --- ==================================== --- Make the STS instance - -instance - forall era. - ( AlonzoEraTx era - , EraTxAuxData era - , AlonzoEraUTxO era - , ShelleyEraTxBody era - , ScriptsNeeded era ~ AlonzoScriptsNeeded era - , Signable (DSIGN (EraCrypto era)) (Hash (HASH (EraCrypto era)) EraIndependentTxBody) - , EraRule "UTXOW" era ~ AlonzoUTXOW era - , InjectRuleFailure "UTXOW" ShelleyUtxowPredFailure era - , InjectRuleFailure "UTXOW" AlonzoUtxowPredFailure era - , -- Allow UTXOW to call UTXO - Embed (EraRule "UTXO" era) (AlonzoUTXOW era) - , Environment (EraRule "UTXO" era) ~ UtxoEnv era - , State (EraRule "UTXO" era) ~ UTxOState era - , Signal (EraRule "UTXO" era) ~ Tx era - ) => - STS (AlonzoUTXOW era) - where - type State (AlonzoUTXOW era) = UTxOState era - type Signal (AlonzoUTXOW era) = Tx era - type Environment (AlonzoUTXOW era) = UtxoEnv era - type BaseM (AlonzoUTXOW era) = ShelleyBase - type PredicateFailure (AlonzoUTXOW era) = AlonzoUtxowPredFailure era - type Event (AlonzoUTXOW era) = AlonzoUtxowEvent era - transitionRules = [alonzoStyleWitness @era] - initialRules = [] - -instance - ( Era era - , STS (AlonzoUTXO era) - , PredicateFailure (EraRule "UTXO" era) ~ AlonzoUtxoPredFailure era - , Event (EraRule "UTXO" era) ~ AlonzoUtxoEvent era - , BaseM (AlonzoUTXOW era) ~ ShelleyBase - , PredicateFailure (AlonzoUTXOW era) ~ AlonzoUtxowPredFailure era - , Event (AlonzoUTXOW era) ~ AlonzoUtxowEvent era - ) => - Embed (AlonzoUTXO era) (AlonzoUTXOW era) - where - wrapFailed = ShelleyInAlonzoUtxowPredFailure . UtxoFailure - wrapEvent = WrappedShelleyEraEvent . UtxoEvent diff --git a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Scripts.hs b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Scripts.hs deleted file mode 100644 index 4edf67f2734..00000000000 --- a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Scripts.hs +++ /dev/null @@ -1,576 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DefaultSignatures #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE QuantifiedConstraints #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilyDependencies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} -{-# LANGUAGE ViewPatterns #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Alonzo.Scripts ( - PlutusBinary (..), - AlonzoScript (TimelockScript, PlutusScript), - Script, - isPlutusScript, - validScript, - eqAlonzoScriptRaw, - AlonzoEraScript (..), - PlutusScript (..), - withPlutusScriptLanguage, - plutusScriptLanguage, - decodePlutusScript, - plutusScriptBinary, - mkBinaryPlutusScript, - isValidPlutusScript, - toPlutusSLanguage, - alonzoScriptPrefixTag, - - -- ** Plutus Purpose - pattern SpendingPurpose, - pattern MintingPurpose, - pattern CertifyingPurpose, - pattern RewardingPurpose, - AlonzoPlutusPurpose (..), - AsItem (..), - AsIx (..), - AsIxItem (..), - toAsItem, - toAsIx, - - -- * Re-exports - module Cardano.Ledger.Plutus.CostModels, - module Cardano.Ledger.Plutus.ExUnits, -) -where - -import Cardano.Ledger.Address (RewardAccount) -import Cardano.Ledger.Allegra.Scripts (Timelock, eqTimelockRaw, translateTimelock) -import Cardano.Ledger.Alonzo.Era (AlonzoEra) -import Cardano.Ledger.Alonzo.TxCert () -import Cardano.Ledger.BaseTypes (ProtVer (..), kindObject) -import Cardano.Ledger.Binary ( - Annotator, - DecCBOR (decCBOR), - DecCBORGroup (..), - Decoder, - EncCBOR (..), - EncCBORGroup (..), - ToCBOR (toCBOR), - Version, - decodeWord8, - encodeWord8, - ) -import Cardano.Ledger.Binary.Coders ( - Decode (Ann, D, From, Invalid, SumD, Summands), - Encode (Sum, To), - Wrapped (..), - decode, - encode, - (!>), - ( - AlonzoEraScript era - where - data PlutusScript era :: Type - - type PlutusPurpose (f :: Type -> Type -> Type) era = (r :: Type) | r -> era - - -- | Highest supported Plutus language version for this era. - eraMaxLanguage :: Language - - -- | Attempt to extract a `PlutusScript` from a wrapper type family `Script`. Whenevr - -- `Script` is a native script `Nothing` will be returned - toPlutusScript :: Script era -> Maybe (PlutusScript era) - default toPlutusScript :: Script era ~ AlonzoScript era => Script era -> Maybe (PlutusScript era) - toPlutusScript = \case - PlutusScript ps -> Just ps - _ -> Nothing - - -- | Convert a `PlutusScript` to a wrapper type family `Script` - fromPlutusScript :: PlutusScript era -> Script era - default fromPlutusScript :: Script era ~ AlonzoScript era => PlutusScript era -> Script era - fromPlutusScript = PlutusScript - - -- | Returns Nothing, whenver plutus language is not supported for this era. - mkPlutusScript :: PlutusLanguage l => Plutus l -> Maybe (PlutusScript era) - - -- | Give a `PlutusScript` apply a function that can handle `Plutus` scripts of all - -- known versions. - withPlutusScript :: - PlutusScript era -> - (forall l. PlutusLanguage l => Plutus l -> a) -> - a - - hoistPlutusPurpose :: - (forall ix it. g ix it -> f ix it) -> - PlutusPurpose g era -> - PlutusPurpose f era - - mkSpendingPurpose :: f Word32 (TxIn (EraCrypto era)) -> PlutusPurpose f era - - toSpendingPurpose :: PlutusPurpose f era -> Maybe (f Word32 (TxIn (EraCrypto era))) - - mkMintingPurpose :: f Word32 (PolicyID (EraCrypto era)) -> PlutusPurpose f era - - toMintingPurpose :: PlutusPurpose f era -> Maybe (f Word32 (PolicyID (EraCrypto era))) - - mkCertifyingPurpose :: f Word32 (TxCert era) -> PlutusPurpose f era - - toCertifyingPurpose :: PlutusPurpose f era -> Maybe (f Word32 (TxCert era)) - - mkRewardingPurpose :: f Word32 (RewardAccount (EraCrypto era)) -> PlutusPurpose f era - - toRewardingPurpose :: PlutusPurpose f era -> Maybe (f Word32 (RewardAccount (EraCrypto era))) - - upgradePlutusPurposeAsIx :: - AlonzoEraScript (PreviousEra era) => - PlutusPurpose AsIx (PreviousEra era) -> - PlutusPurpose AsIx era - -mkBinaryPlutusScript :: AlonzoEraScript era => Language -> PlutusBinary -> Maybe (PlutusScript era) -mkBinaryPlutusScript lang pb = withSLanguage lang (mkPlutusScript . (`asSLanguage` Plutus pb)) - --- | Apply a function to a plutus script, but only if it is of expected language version, --- otherwise it will return Nothing. -withPlutusScriptLanguage :: - AlonzoEraScript era => - Language -> - PlutusScript era -> - (forall l. PlutusLanguage l => Plutus l -> a) -> - Maybe a -withPlutusScriptLanguage lang ps f = - withPlutusScript ps $ \plutus -> - f plutus <$ guard (plutusLanguage plutus == lang) - --- | Attempt to extract the version aware `Plutus` script, but only if it matches the --- language version supplied. This is useful whenever the version is known by some other --- means. -toPlutusSLanguage :: - forall l era. - (PlutusLanguage l, AlonzoEraScript era) => - SLanguage l -> - PlutusScript era -> - Maybe (Plutus l) -toPlutusSLanguage _ ps = withPlutusScript ps gcast - --- | Get value level plutus language of the plutus script -plutusScriptLanguage :: AlonzoEraScript era => PlutusScript era -> Language -plutusScriptLanguage ps = withPlutusScript ps plutusLanguage - --- | Extract binary representation of the script. -plutusScriptBinary :: AlonzoEraScript era => PlutusScript era -> PlutusBinary -plutusScriptBinary ps = withPlutusScript ps plutusBinary - --- | Verifies whether Plutus script is well formed or not, which simply means whether it --- deserializes successfully or not. -isValidPlutusScript :: AlonzoEraScript era => Version -> PlutusScript era -> Bool -isValidPlutusScript pv ps = withPlutusScript ps (isValidPlutus pv) - --- Alonzo Plutus Purpose ======================================================= - -newtype AsIx ix it = AsIx {unAsIx :: ix} - deriving stock (Show) - deriving newtype (Eq, Ord, NFData, NoThunks, EncCBOR, DecCBOR, Generic) - -newtype AsItem ix it = AsItem {unAsItem :: it} - deriving stock (Show) - deriving newtype (Eq, Ord, NFData, NoThunks, EncCBOR, DecCBOR, Generic) - -data AsIxItem ix it = AsIxItem - { asIndex :: !ix - , asItem :: !it - } - deriving (Eq, Ord, Show, Generic) - -instance (NoThunks ix, NoThunks it) => NoThunks (AsIxItem ix it) - -instance (NFData ix, NFData it) => NFData (AsIxItem ix it) where - rnf (AsIxItem ix it) = ix `deepseq` rnf it - -instance ToJSON ix => ToJSON (AsIx ix it) where - toJSON (AsIx i) = object ["index" .= toJSON i] - -instance ToJSON it => ToJSON (AsItem ix it) where - toJSON (AsItem i) = object ["item" .= toJSON i] - -instance (ToJSON ix, ToJSON it) => ToJSON (AsIxItem ix it) where - toJSON (AsIxItem ix it) = - object - [ "index" .= toJSON ix - , "item" .= toJSON it - ] - -toAsItem :: AsIxItem ix it -> AsItem ix it -toAsItem (AsIxItem _ it) = AsItem it - -toAsIx :: AsIxItem ix it -> AsIx ix it -toAsIx (AsIxItem ix _) = AsIx ix - -data AlonzoPlutusPurpose f era - = AlonzoSpending !(f Word32 (TxIn (EraCrypto era))) - | AlonzoMinting !(f Word32 (PolicyID (EraCrypto era))) - | AlonzoCertifying !(f Word32 (TxCert era)) - | AlonzoRewarding !(f Word32 (RewardAccount (EraCrypto era))) - deriving (Generic) - -deriving instance Eq (AlonzoPlutusPurpose AsIx era) -deriving instance Ord (AlonzoPlutusPurpose AsIx era) -deriving instance Show (AlonzoPlutusPurpose AsIx era) -instance NoThunks (AlonzoPlutusPurpose AsIx era) - -deriving instance Eq (TxCert era) => Eq (AlonzoPlutusPurpose AsItem era) -deriving instance Show (TxCert era) => Show (AlonzoPlutusPurpose AsItem era) -instance NoThunks (TxCert era) => NoThunks (AlonzoPlutusPurpose AsItem era) - -deriving instance Eq (TxCert era) => Eq (AlonzoPlutusPurpose AsIxItem era) -deriving instance Show (TxCert era) => Show (AlonzoPlutusPurpose AsIxItem era) -instance NoThunks (TxCert era) => NoThunks (AlonzoPlutusPurpose AsIxItem era) - -instance - (forall a b. (NFData a, NFData b) => NFData (f a b), NFData (TxCert era), Era era) => - NFData (AlonzoPlutusPurpose f era) - where - rnf = \case - AlonzoSpending x -> rnf x - AlonzoMinting x -> rnf x - AlonzoCertifying x -> rnf x - AlonzoRewarding x -> rnf x - -instance Era era => EncCBORGroup (AlonzoPlutusPurpose AsIx era) where - listLen _ = 2 - listLenBound _ = 2 - encCBORGroup = \case - AlonzoSpending (AsIx redeemerIx) -> encodeWord8 0 <> encCBOR redeemerIx - AlonzoMinting (AsIx redeemerIx) -> encodeWord8 1 <> encCBOR redeemerIx - AlonzoCertifying (AsIx redeemerIx) -> encodeWord8 2 <> encCBOR redeemerIx - AlonzoRewarding (AsIx redeemerIx) -> encodeWord8 3 <> encCBOR redeemerIx - encodedGroupSizeExpr size_ _proxy = - encodedSizeExpr size_ (Proxy :: Proxy Word8) - + encodedSizeExpr size_ (Proxy :: Proxy Word16) - -instance Era era => DecCBORGroup (AlonzoPlutusPurpose AsIx era) where - decCBORGroup = - decodeWord8 >>= \case - 0 -> AlonzoSpending . AsIx <$> decCBOR - 1 -> AlonzoMinting . AsIx <$> decCBOR - 2 -> AlonzoCertifying . AsIx <$> decCBOR - 3 -> AlonzoRewarding . AsIx <$> decCBOR - n -> fail $ "Unexpected tag for AlonzoPlutusPurpose: " <> show n - --- | Incorrect CBOR implementation. Missing length encoding. Must keep it for backwards --- compatibility -instance Era era => EncCBOR (AlonzoPlutusPurpose AsIx era) where - encCBOR = encCBORGroup - --- | Incorrect CBOR implementation. Missing length encoding. Must keep it for backwards --- compatibility -instance Era era => DecCBOR (AlonzoPlutusPurpose AsIx era) where - decCBOR = decCBORGroup - -instance - ( forall a b. (ToJSON a, ToJSON b) => ToJSON (f a b) - , ToJSON (TxCert era) - , Era era - ) => - ToJSON (AlonzoPlutusPurpose f era) - where - toJSON = \case - AlonzoSpending n -> kindObjectWithValue "AlonzoSpending" n - AlonzoMinting n -> kindObjectWithValue "AlonzoMinting" n - AlonzoCertifying n -> kindObjectWithValue "AlonzoCertifying" n - AlonzoRewarding n -> kindObjectWithValue "AlonzoRewarding" n - where - kindObjectWithValue name n = kindObject name ["value" .= n] - --- | /Note/ - serialization of `AlonzoPlutusPurpose` `AsItem` --- --- * Tags do not match the `AlonzoPlutusPurpose` `AsIx`. Unfortunate inconsistency --- --- * It is only used for predicate failures. Thus we can change it after Conway to be --- consistent with `AlonzoPlutusPurpose` `AsIx` -instance (Era era, EncCBOR (TxCert era)) => EncCBOR (AlonzoPlutusPurpose AsItem era) where - encCBOR = \case - AlonzoSpending (AsItem x) -> encode (Sum (AlonzoSpending @_ @era . AsItem) 1 !> To x) - AlonzoMinting (AsItem x) -> encode (Sum (AlonzoMinting @_ @era . AsItem) 0 !> To x) - AlonzoCertifying (AsItem x) -> encode (Sum (AlonzoCertifying . AsItem) 3 !> To x) - AlonzoRewarding (AsItem x) -> encode (Sum (AlonzoRewarding @_ @era . AsItem) 2 !> To x) - --- | See note on the `EncCBOR` instace. -instance (Era era, DecCBOR (TxCert era)) => DecCBOR (AlonzoPlutusPurpose AsItem era) where - decCBOR = decode (Summands "AlonzoPlutusPurpose" dec) - where - dec 1 = SumD (AlonzoSpending . AsItem) f Word32 (TxIn (EraCrypto era)) -> PlutusPurpose f era -pattern SpendingPurpose c <- (toSpendingPurpose -> Just c) - where - SpendingPurpose c = mkSpendingPurpose c - -pattern MintingPurpose :: - AlonzoEraScript era => f Word32 (PolicyID (EraCrypto era)) -> PlutusPurpose f era -pattern MintingPurpose c <- (toMintingPurpose -> Just c) - where - MintingPurpose c = mkMintingPurpose c - -pattern CertifyingPurpose :: - AlonzoEraScript era => f Word32 (TxCert era) -> PlutusPurpose f era -pattern CertifyingPurpose c <- (toCertifyingPurpose -> Just c) - where - CertifyingPurpose c = mkCertifyingPurpose c - -pattern RewardingPurpose :: - AlonzoEraScript era => f Word32 (RewardAccount (EraCrypto era)) -> PlutusPurpose f era -pattern RewardingPurpose c <- (toRewardingPurpose -> Just c) - where - RewardingPurpose c = mkRewardingPurpose c - --- Alonzo Script =============================================================== - --- | Scripts in the Alonzo Era, Either a Timelock script or a Plutus script. -data AlonzoScript era - = TimelockScript !(Timelock era) - | PlutusScript !(PlutusScript era) - deriving (Generic) - -deriving instance Eq (PlutusScript era) => Eq (AlonzoScript era) - -instance (Era era, NoThunks (PlutusScript era)) => NoThunks (AlonzoScript era) - -instance NFData (PlutusScript era) => NFData (AlonzoScript era) where - rnf = \case - TimelockScript ts -> rnf ts - PlutusScript ps -> rnf ps - -instance (AlonzoEraScript era, Script era ~ AlonzoScript era) => Show (AlonzoScript era) where - show (TimelockScript x) = "TimelockScript " ++ show x - show s@(PlutusScript plutus) = - "PlutusScript " ++ show (plutusScriptLanguage plutus) ++ " " ++ show (hashScript @era s) - --- | Both constructors know their original bytes -instance SafeToHash (PlutusScript era) => SafeToHash (AlonzoScript era) where - originalBytes (TimelockScript t) = originalBytes t - originalBytes (PlutusScript plutus) = originalBytes plutus - -isPlutusScript :: AlonzoEraScript era => Script era -> Bool -isPlutusScript = isJust . toPlutusScript - -instance Crypto c => EraScript (AlonzoEra c) where - type Script (AlonzoEra c) = AlonzoScript (AlonzoEra c) - type NativeScript (AlonzoEra c) = Timelock (AlonzoEra c) - - upgradeScript = TimelockScript . translateTimelock - - scriptPrefixTag = alonzoScriptPrefixTag - - getNativeScript = \case - TimelockScript ts -> Just ts - _ -> Nothing - - fromNativeScript = TimelockScript - -alonzoScriptPrefixTag :: - (AlonzoEraScript era, AlonzoScript era ~ Script era) => - Script era -> - BS.ByteString -alonzoScriptPrefixTag = \case - TimelockScript _ -> nativeMultiSigTag -- "\x00" - PlutusScript plutusScript -> BS.singleton (withPlutusScript plutusScript plutusLanguageTag) - -instance Crypto c => AlonzoEraScript (AlonzoEra c) where - newtype PlutusScript (AlonzoEra c) = AlonzoPlutusV1 (Plutus 'PlutusV1) - deriving newtype (Eq, Ord, Show, NFData, NoThunks, SafeToHash, Generic) - - type PlutusPurpose f (AlonzoEra c) = AlonzoPlutusPurpose f (AlonzoEra c) - - eraMaxLanguage = PlutusV1 - - mkPlutusScript plutus = - case plutusSLanguage plutus of - SPlutusV1 -> Just $ AlonzoPlutusV1 plutus - _ -> Nothing - - withPlutusScript (AlonzoPlutusV1 plutus) f = f plutus - - hoistPlutusPurpose f = \case - AlonzoSpending x -> AlonzoSpending $ f x - AlonzoMinting x -> AlonzoMinting $ f x - AlonzoCertifying x -> AlonzoCertifying $ f x - AlonzoRewarding x -> AlonzoRewarding $ f x - - mkSpendingPurpose = AlonzoSpending - - toSpendingPurpose (AlonzoSpending i) = Just i - toSpendingPurpose _ = Nothing - - mkMintingPurpose = AlonzoMinting - - toMintingPurpose (AlonzoMinting i) = Just i - toMintingPurpose _ = Nothing - - mkCertifyingPurpose = AlonzoCertifying - - toCertifyingPurpose (AlonzoCertifying i) = Just i - toCertifyingPurpose _ = Nothing - - mkRewardingPurpose = AlonzoRewarding - - toRewardingPurpose (AlonzoRewarding i) = Just i - toRewardingPurpose _ = Nothing - - upgradePlutusPurposeAsIx = - error "Impossible: No `PlutusScript` and `AlonzoEraScript` instances in the previous era" - -instance Eq (PlutusScript era) => EqRaw (AlonzoScript era) where - eqRaw = eqAlonzoScriptRaw - -instance AlonzoEraScript era => ToJSON (AlonzoScript era) where - toJSON = String . serializeAsHexText - --------------------------------------------------------------------------------- --- Serialisation --------------------------------------------------------------------------------- - -decodePlutusScript :: - forall era l s. - (AlonzoEraScript era, PlutusLanguage l) => - SLanguage l -> - Decoder s (PlutusScript era) -decodePlutusScript slang = do - pb <- decCBOR - case mkPlutusScript $ asSLanguage slang $ Plutus pb of - Nothing -> - fail $ show (plutusLanguage slang) ++ " is not supported in " ++ eraName @era ++ " era." - Just plutusScript -> pure plutusScript - -instance AlonzoEraScript era => EncCBOR (AlonzoScript era) - -instance AlonzoEraScript era => ToCBOR (AlonzoScript era) where - toCBOR = toEraCBOR @era . encode . encodeScript - -encodeScript :: AlonzoEraScript era => AlonzoScript era -> Encode 'Open (AlonzoScript era) -encodeScript = \case - TimelockScript i -> Sum TimelockScript 0 !> To i - PlutusScript plutusScript -> withPlutusScript plutusScript $ \plutus@(Plutus pb) -> - case plutusSLanguage plutus of - SPlutusV1 -> Sum (PlutusScript . fromJust . mkPlutusScript . Plutus @'PlutusV1) 1 !> To pb - SPlutusV2 -> Sum (PlutusScript . fromJust . mkPlutusScript . Plutus @'PlutusV2) 2 !> To pb - SPlutusV3 -> Sum (PlutusScript . fromJust . mkPlutusScript . Plutus @'PlutusV3) 3 !> To pb - -instance AlonzoEraScript era => DecCBOR (Annotator (AlonzoScript era)) where - decCBOR = decode (Summands "AlonzoScript" decodeScript) - where - decodeAnnPlutus slang = - Ann (SumD PlutusScript) <*! Ann (D (decodePlutusScript slang)) - {-# INLINE decodeAnnPlutus #-} - decodeScript :: Word -> Decode 'Open (Annotator (AlonzoScript era)) - decodeScript = \case - 0 -> Ann (SumD TimelockScript) <*! From - 1 -> decodeAnnPlutus SPlutusV1 - 2 -> decodeAnnPlutus SPlutusV2 - 3 -> decodeAnnPlutus SPlutusV3 - n -> Invalid n - {-# INLINE decodeScript #-} - {-# INLINE decCBOR #-} - --- | Verify that every `Script` represents a valid script. Force native scripts to Normal --- Form, to ensure that there are no bottoms and deserialize `Plutus` scripts into a --- `Cardano.Ledger.Plutus.Language.PlutusRunnable`. -validScript :: (HasCallStack, AlonzoEraScript era) => ProtVer -> Script era -> Bool -validScript pv script = - case toPlutusScript script of - Just plutusScript -> isValidPlutusScript (pvMajor pv) plutusScript - Nothing -> - case getNativeScript script of - Just timelockScript -> deepseq timelockScript True - Nothing -> error "Impossible: There are only Native and Plutus scripts available" - --- | Check the equality of two underlying types, while ignoring their binary --- representation, which `Eq` instance normally does. This is used for testing. -eqAlonzoScriptRaw :: Eq (PlutusScript era) => AlonzoScript era -> AlonzoScript era -> Bool -eqAlonzoScriptRaw (TimelockScript t1) (TimelockScript t2) = eqTimelockRaw t1 t2 -eqAlonzoScriptRaw (PlutusScript ps1) (PlutusScript ps2) = ps1 == ps2 -eqAlonzoScriptRaw _ _ = False diff --git a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Scripts/Data.hs b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Scripts/Data.hs deleted file mode 100644 index da27bec82ea..00000000000 --- a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Scripts/Data.hs +++ /dev/null @@ -1,5 +0,0 @@ -module Cardano.Ledger.Alonzo.Scripts.Data - {-# DEPRECATED "Use \"Cardano.Ledger.Plutus.Data\" instead" #-} - (module Cardano.Ledger.Plutus.Data) where - -import Cardano.Ledger.Plutus.Data diff --git a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Transition.hs b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Transition.hs deleted file mode 100644 index a8233de2768..00000000000 --- a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Transition.hs +++ /dev/null @@ -1,71 +0,0 @@ -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Alonzo.Transition ( - TransitionConfig (..), - toAlonzoTransitionConfigPairs, -) where - -import Cardano.Ledger.Alonzo.Era -import Cardano.Ledger.Alonzo.Genesis (AlonzoGenesis, toAlonzoGenesisPairs) -import Cardano.Ledger.Alonzo.Translation () -import Cardano.Ledger.Crypto -import Cardano.Ledger.Mary -import Cardano.Ledger.Mary.Transition (TransitionConfig (MaryTransitionConfig)) -import Cardano.Ledger.Shelley.Transition -import Data.Aeson ( - FromJSON (..), - KeyValue (..), - ToJSON (..), - Value (..), - object, - pairs, - withObject, - (.:), - ) -import GHC.Generics -import Lens.Micro -import NoThunks.Class (NoThunks (..)) - -instance Crypto c => EraTransition (AlonzoEra c) where - data TransitionConfig (AlonzoEra c) = AlonzoTransitionConfig - { atcAlonzoGenesis :: !AlonzoGenesis - , atcMaryTransitionConfig :: !(TransitionConfig (MaryEra c)) - } - deriving (Show, Eq, Generic) - - mkTransitionConfig = AlonzoTransitionConfig - - injectIntoTestState = registerInitialFundsThenStaking - - tcPreviousEraConfigL = - lens atcMaryTransitionConfig (\atc pc -> atc {atcMaryTransitionConfig = pc}) - - tcTranslationContextL = - lens atcAlonzoGenesis (\atc ag -> atc {atcAlonzoGenesis = ag}) - -instance Crypto c => NoThunks (TransitionConfig (AlonzoEra c)) - -instance Crypto c => ToJSON (TransitionConfig (AlonzoEra c)) where - toJSON = object . toAlonzoTransitionConfigPairs - toEncoding = pairs . mconcat . toAlonzoTransitionConfigPairs - -toAlonzoTransitionConfigPairs :: (KeyValue e a, Crypto c) => TransitionConfig (AlonzoEra c) -> [a] -toAlonzoTransitionConfigPairs alonzoConfig = - toShelleyTransitionConfigPairs shelleyConfig - ++ ["alonzo" .= object (toAlonzoGenesisPairs (alonzoConfig ^. tcTranslationContextL))] - where - maryConfig = alonzoConfig ^. tcPreviousEraConfigL - allegraConfig = maryConfig ^. tcPreviousEraConfigL - shelleyConfig = allegraConfig ^. tcPreviousEraConfigL - -instance Crypto c => FromJSON (TransitionConfig (AlonzoEra c)) where - parseJSON = withObject "AlonzoTransitionConfig" $ \o -> do - pc <- parseJSON (Object o) - ag <- o .: "alonzo" - pure $ mkTransitionConfig pc ag diff --git a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Translation.hs b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Translation.hs deleted file mode 100644 index 58ba3bc90c9..00000000000 --- a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Translation.hs +++ /dev/null @@ -1,166 +0,0 @@ -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeSynonymInstances #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Alonzo.Translation where - -import Cardano.Ledger.Alonzo.Core hiding (Tx) -import qualified Cardano.Ledger.Alonzo.Core as Core -import Cardano.Ledger.Alonzo.Era (AlonzoEra) -import Cardano.Ledger.Alonzo.Genesis (AlonzoGenesis (..)) -import Cardano.Ledger.Alonzo.PParams () -import Cardano.Ledger.Alonzo.Tx (AlonzoTx (..), IsValid (..)) -import Cardano.Ledger.Binary (DecoderError) -import Cardano.Ledger.CertState (CommitteeState (..), PState (..), VState (..)) -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Mary (MaryEra) -import Cardano.Ledger.Shelley.LedgerState ( - CertState (..), - DState (..), - EpochState (..), - LedgerState (..), - NewEpochState (..), - UTxOState (..), - ) -import Cardano.Ledger.Shelley.PParams (ProposedPPUpdates (..)) -import Cardano.Ledger.UTxO (UTxO (..)) -import Data.Default.Class (def) -import qualified Data.Map.Strict as Map -import Lens.Micro ((^.)) - --------------------------------------------------------------------------------- --- Translation from Mary to Alonzo --- --- The instances below are needed by the consensus layer. Do not remove any of --- them without coordinating with consensus. --- --- Please add auxiliary instances and other declarations at the bottom of this --- module, not in the list below so that it remains clear which instances the --- consensus layer needs. --- --- WARNING: when a translation instance currently uses the default --- 'TranslationError', i.e., 'Void', it means the consensus layer relies on it --- being total. Do not change it! --------------------------------------------------------------------------------- - -type instance TranslationContext (AlonzoEra c) = AlonzoGenesis - -instance Crypto c => TranslateEra (AlonzoEra c) NewEpochState where - translateEra ctxt nes = - return $ - NewEpochState - { nesEL = nesEL nes - , nesBprev = nesBprev nes - , nesBcur = nesBcur nes - , nesEs = translateEra' ctxt $ nesEs nes - , nesRu = nesRu nes - , nesPd = nesPd nes - , stashedAVVMAddresses = () - } - -instance Crypto c => TranslateEra (AlonzoEra c) PParams where - translateEra (AlonzoGenesisWrapper upgradeArgs) = pure . upgradePParams upgradeArgs - -newtype Tx era = Tx {unTx :: Core.Tx era} - -instance Crypto c => TranslateEra (AlonzoEra c) Tx where - type TranslationError (AlonzoEra c) Tx = DecoderError - translateEra _ctxt (Tx tx) = do - -- Note that this does not preserve the hidden bytes field of the transaction. - -- This is under the premise that this is irrelevant for TxInBlocks, which are - -- not transmitted as contiguous chunks. - txBody <- translateEraThroughCBOR "TxBody" $ tx ^. bodyTxL - txWits <- translateEraThroughCBOR "TxWits" $ tx ^. witsTxL - txAuxData <- mapM (translateEraThroughCBOR "TxAuxData") (tx ^. auxDataTxL) - -- transactions from Mary era always pass script ("phase 2") validation - let validating = IsValid True - pure $ Tx $ AlonzoTx txBody txWits validating txAuxData - --------------------------------------------------------------------------------- --- Auxiliary instances and functions --------------------------------------------------------------------------------- - -instance Crypto c => TranslateEra (AlonzoEra c) EpochState where - translateEra ctxt es = - return - EpochState - { esAccountState = esAccountState es - , esSnapshots = esSnapshots es - , esLState = translateEra' ctxt $ esLState es - , esNonMyopic = esNonMyopic es - } - -instance Crypto c => TranslateEra (AlonzoEra c) DState where - translateEra _ DState {..} = pure DState {..} - -instance Crypto c => TranslateEra (AlonzoEra c) CommitteeState where - translateEra _ CommitteeState {..} = pure CommitteeState {..} - -instance Crypto c => TranslateEra (AlonzoEra c) VState where - translateEra ctx VState {..} = do - committeeState <- translateEra ctx vsCommitteeState - pure VState {vsCommitteeState = committeeState, ..} - -instance Crypto c => TranslateEra (AlonzoEra c) PState where - translateEra _ PState {..} = pure PState {..} - -instance Crypto c => TranslateEra (AlonzoEra c) CertState where - translateEra ctxt ls = - pure - CertState - { certDState = translateEra' ctxt $ certDState ls - , certPState = translateEra' ctxt $ certPState ls - , certVState = translateEra' ctxt $ certVState ls - } - -instance Crypto c => TranslateEra (AlonzoEra c) LedgerState where - translateEra ctxt ls = - return - LedgerState - { lsUTxOState = translateEra' ctxt $ lsUTxOState ls - , lsCertState = translateEra' ctxt $ lsCertState ls - } - -instance Crypto c => TranslateEra (AlonzoEra c) UTxOState where - translateEra ctxt us = - return - UTxOState - { utxosUtxo = translateEra' ctxt $ utxosUtxo us - , utxosDeposited = utxosDeposited us - , utxosFees = utxosFees us - , utxosGovState = translateEra' ctxt $ utxosGovState us - , utxosStakeDistr = utxosStakeDistr us - , utxosDonation = utxosDonation us - } - -instance Crypto c => TranslateEra (AlonzoEra c) UTxO where - translateEra _ctxt utxo = - return $ UTxO $ translateTxOut `Map.map` unUTxO utxo - -instance Crypto c => TranslateEra (AlonzoEra c) ShelleyGovState where - translateEra ctxt ps = - return - ShelleyGovState - { sgsCurProposals = translateEra' ctxt $ sgsCurProposals ps - , sgsFutureProposals = translateEra' ctxt $ sgsFutureProposals ps - , sgsCurPParams = translateEra' ctxt $ sgsCurPParams ps - , sgsPrevPParams = translateEra' ctxt $ sgsPrevPParams ps - } - -instance Crypto c => TranslateEra (AlonzoEra c) ProposedPPUpdates where - translateEra _ctxt (ProposedPPUpdates ppup) = - return $ ProposedPPUpdates $ fmap (upgradePParamsUpdate def) ppup - -translateTxOut :: - Crypto c => - TxOut (MaryEra c) -> - TxOut (AlonzoEra c) -translateTxOut = upgradeTxOut -{-# DEPRECATED translateTxOut "Use `upgradeTxOut` instead" #-} diff --git a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Tx.hs b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Tx.hs deleted file mode 100644 index 213f848caa6..00000000000 --- a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Tx.hs +++ /dev/null @@ -1,512 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} -{-# OPTIONS_GHC -Wno-orphans #-} - --- | This module exports implementations of many of the functions outlined in the Alonzo specification. --- The link to source of the specification --- https://github.com/intersectmbo/cardano-ledger/tree/master/eras/alonzo/formal-spec --- The most recent version of the document can be found here: --- https://github.com/intersectmbo/cardano-ledger/releases/latest/download/alonzo-ledger.pdf --- The functions can be found in Figures in that document, and sections of this code refer to those figures. -module Cardano.Ledger.Alonzo.Tx ( - -- Figure 1 - CostModel, - getLanguageView, - -- Figure 2 - Data, - DataHash, - IsValid (..), - hashData, - nonNativeLanguages, - hashScriptIntegrity, - getCoin, - EraIndependentScriptIntegrity, - ScriptIntegrity (ScriptIntegrity), - ScriptIntegrityHash, - -- Figure 3 - AlonzoTx (AlonzoTx, body, wits, isValid, auxiliaryData), - AlonzoEraTx (..), - mkBasicAlonzoTx, - bodyAlonzoTxL, - witsAlonzoTxL, - auxDataAlonzoTxL, - sizeAlonzoTxF, - isValidAlonzoTxL, - txdats', - txscripts', - txrdmrs, - AlonzoTxBody (..), - -- Figure 4 - totExUnits, - alonzoMinFeeTx, - minfee, - -- Figure 5 - isTwoPhaseScriptAddressFromMap, - Shelley.txouts, - indexRedeemers, - -- Figure 6 - getMapFromValue, - -- Segwit - alonzoSegwitTx, - -- Other - toCBORForSizeComputation, - toCBORForMempoolSubmission, - alonzoEqTxRaw, -) -where - -import Cardano.Ledger.Address (Addr (..)) -import Cardano.Ledger.Allegra.Tx (validateTimelock) -import Cardano.Ledger.Alonzo.Era (AlonzoEra) -import Cardano.Ledger.Alonzo.PParams ( - AlonzoEraPParams, - LangDepView (..), - encodeLangViews, - getLanguageView, - ppPricesL, - ) -import Cardano.Ledger.Alonzo.Scripts ( - AlonzoEraScript (PlutusPurpose, hoistPlutusPurpose), - AsIxItem, - CostModel, - ExUnits (..), - toAsIx, - txscriptfee, - ) -import Cardano.Ledger.Alonzo.TxBody ( - AlonzoEraTxBody (..), - AlonzoTxBody (..), - AlonzoTxBodyUpgradeError, - ScriptIntegrityHash, - ) -import Cardano.Ledger.Alonzo.TxWits ( - AlonzoEraTxWits (..), - AlonzoTxWits (..), - Redeemers (..), - TxDats (..), - nullDats, - nullRedeemers, - txrdmrs, - unRedeemers, - ) -import Cardano.Ledger.Binary ( - Annotator (..), - DecCBOR (..), - EncCBOR (encCBOR), - Encoding, - ToCBOR (..), - decodeNullMaybe, - encodeListLen, - encodeNullMaybe, - serialize, - serialize', - ) -import Cardano.Ledger.Binary.Coders -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto -import Cardano.Ledger.Mary.Value (AssetName, MaryValue (..), MultiAsset (..), PolicyID (..)) -import Cardano.Ledger.MemoBytes (EqRaw (..)) -import Cardano.Ledger.Plutus.Data (Data, hashData) -import Cardano.Ledger.Plutus.Language (nonNativeLanguages) -import Cardano.Ledger.SafeHash (HashAnnotated, SafeToHash (..), hashAnnotated) -import Cardano.Ledger.Shelley.Tx (ShelleyTx (ShelleyTx), shelleyEqTxRaw) -import qualified Cardano.Ledger.UTxO as Shelley -import Cardano.Ledger.Val (Val ((<+>), (<×>))) -import Control.Arrow (left) -import Control.DeepSeq (NFData (..)) -import Data.Aeson (ToJSON (..)) -import qualified Data.ByteString.Lazy as LBS -import qualified Data.Map.Strict as Map -import Data.Maybe.Strict ( - StrictMaybe (..), - maybeToStrictMaybe, - strictMaybeToMaybe, - ) -import Data.Set (Set) -import qualified Data.Set as Set -import Data.Typeable (Typeable) -import GHC.Generics (Generic) -import Lens.Micro hiding (set) -import NoThunks.Class (NoThunks) - --- =================================================== - --- | Tag indicating whether non-native scripts in this transaction are expected --- to validate. This is added by the block creator when constructing the block. -newtype IsValid = IsValid Bool - deriving (Eq, Show, Generic) - deriving newtype (NoThunks, NFData, ToCBOR, EncCBOR, DecCBOR, ToJSON) - -data AlonzoTx era = AlonzoTx - { body :: !(TxBody era) - , wits :: !(TxWits era) - , isValid :: !IsValid - , auxiliaryData :: !(StrictMaybe (TxAuxData era)) - } - deriving (Generic) - -newtype AlonzoTxUpgradeError = ATUEBodyUpgradeError AlonzoTxBodyUpgradeError - deriving (Show) - -instance Crypto c => EraTx (AlonzoEra c) where - {-# SPECIALIZE instance EraTx (AlonzoEra StandardCrypto) #-} - - type Tx (AlonzoEra c) = AlonzoTx (AlonzoEra c) - type TxUpgradeError (AlonzoEra c) = AlonzoTxUpgradeError - - mkBasicTx = mkBasicAlonzoTx - - bodyTxL = bodyAlonzoTxL - {-# INLINE bodyTxL #-} - - witsTxL = witsAlonzoTxL - {-# INLINE witsTxL #-} - - auxDataTxL = auxDataAlonzoTxL - {-# INLINE auxDataTxL #-} - - sizeTxF = sizeAlonzoTxF - {-# INLINE sizeTxF #-} - - validateNativeScript = validateTimelock - {-# INLINE validateNativeScript #-} - - getMinFeeTx pp tx _ = alonzoMinFeeTx pp tx - {-# INLINE getMinFeeTx #-} - - upgradeTx (ShelleyTx body wits aux) = - AlonzoTx - <$> left ATUEBodyUpgradeError (upgradeTxBody body) - <*> pure (upgradeTxWits wits) - <*> pure (IsValid True) - <*> pure (fmap upgradeTxAuxData aux) - -instance (Tx era ~ AlonzoTx era, AlonzoEraTx era) => EqRaw (AlonzoTx era) where - eqRaw = alonzoEqTxRaw - -class - (EraTx era, AlonzoEraTxBody era, AlonzoEraTxWits era, AlonzoEraScript era) => - AlonzoEraTx era - where - isValidTxL :: Lens' (Tx era) IsValid - -instance Crypto c => AlonzoEraTx (AlonzoEra c) where - {-# SPECIALIZE instance AlonzoEraTx (AlonzoEra StandardCrypto) #-} - - isValidTxL = isValidAlonzoTxL - {-# INLINE isValidTxL #-} - -mkBasicAlonzoTx :: Monoid (TxWits era) => TxBody era -> AlonzoTx era -mkBasicAlonzoTx txBody = AlonzoTx txBody mempty (IsValid True) SNothing - --- | `TxBody` setter and getter for `AlonzoTx`. -bodyAlonzoTxL :: Lens' (AlonzoTx era) (TxBody era) -bodyAlonzoTxL = lens body (\tx txBody -> tx {body = txBody}) -{-# INLINEABLE bodyAlonzoTxL #-} - --- | `TxWits` setter and getter for `AlonzoTx`. -witsAlonzoTxL :: Lens' (AlonzoTx era) (TxWits era) -witsAlonzoTxL = lens wits (\tx txWits -> tx {wits = txWits}) -{-# INLINEABLE witsAlonzoTxL #-} - --- | `TxAuxData` setter and getter for `AlonzoTx`. -auxDataAlonzoTxL :: Lens' (AlonzoTx era) (StrictMaybe (TxAuxData era)) -auxDataAlonzoTxL = lens auxiliaryData (\tx txTxAuxData -> tx {auxiliaryData = txTxAuxData}) -{-# INLINEABLE auxDataAlonzoTxL #-} - --- | txsize computes the length of the serialised bytes -sizeAlonzoTxF :: forall era. EraTx era => SimpleGetter (AlonzoTx era) Integer -sizeAlonzoTxF = - to $ - fromIntegral - . LBS.length - . serialize (eraProtVerLow @era) - . toCBORForSizeComputation -{-# INLINEABLE sizeAlonzoTxF #-} - -isValidAlonzoTxL :: Lens' (AlonzoTx era) IsValid -isValidAlonzoTxL = lens isValid (\tx valid -> tx {isValid = valid}) -{-# INLINEABLE isValidAlonzoTxL #-} - -deriving instance - (Era era, Eq (TxBody era), Eq (TxWits era), Eq (TxAuxData era)) => Eq (AlonzoTx era) - -deriving instance - (Era era, Show (TxBody era), Show (TxAuxData era), Show (Script era), Show (TxWits era)) => - Show (AlonzoTx era) - -instance - ( Era era - , NoThunks (TxWits era) - , NoThunks (TxAuxData era) - , NoThunks (TxBody era) - ) => - NoThunks (AlonzoTx era) - -instance - ( Era era - , NFData (TxWits era) - , NFData (TxAuxData era) - , NFData (TxBody era) - ) => - NFData (AlonzoTx era) - --- ========================================================= --- Figure 2: Definitions for Transactions - -getCoin :: EraTxOut era => TxOut era -> Coin -getCoin txOut = txOut ^. coinTxOutL -{-# DEPRECATED getCoin "In favor of `coinTxOutL`" #-} - --- | A ScriptIntegrityHash is the hash of three things. The first two come --- from the witnesses and the last comes from the Protocol Parameters. -data ScriptIntegrity era - = ScriptIntegrity - !(Redeemers era) -- From the witnesses - !(TxDats era) - !(Set LangDepView) -- From the Protocol parameters - deriving (Eq, Generic, Typeable) - -deriving instance AlonzoEraScript era => Show (ScriptIntegrity era) - -deriving instance AlonzoEraScript era => NoThunks (ScriptIntegrity era) - --- ScriptIntegrity is not transmitted over the network. The bytes are independently --- reconstructed by all nodes. There are no original bytes to preserve. --- Instead, we must use a reproducable serialization -instance Era era => SafeToHash (ScriptIntegrity era) where - originalBytes (ScriptIntegrity m d l) = - let dBytes = if nullDats d then mempty else originalBytes d - lBytes = serialize' (eraProtVerLow @era) (encodeLangViews l) - in originalBytes m <> dBytes <> lBytes - -instance - (Era era, c ~ EraCrypto era) => - HashAnnotated (ScriptIntegrity era) EraIndependentScriptIntegrity c - -hashScriptIntegrity :: - forall era. - AlonzoEraScript era => - Set LangDepView -> - Redeemers era -> - TxDats era -> - StrictMaybe (ScriptIntegrityHash (EraCrypto era)) -hashScriptIntegrity langViews rdmrs dats = - if nullRedeemers rdmrs && Set.null langViews && nullDats dats - then SNothing - else SJust (hashAnnotated (ScriptIntegrity rdmrs dats langViews)) - --- =============================================================== --- From the specification, Figure 4 "Functions related to fees" --- =============================================================== - --- | This ensures that the size of transactions from Mary is unchanged. --- The individual components all store their bytes; the only work we do in this --- function is concatenating -toCBORForSizeComputation :: - ( EncCBOR (TxBody era) - , EncCBOR (TxWits era) - , EncCBOR (TxAuxData era) - ) => - AlonzoTx era -> - Encoding -toCBORForSizeComputation AlonzoTx {body, wits, auxiliaryData} = - encodeListLen 3 - <> encCBOR body - <> encCBOR wits - <> encodeNullMaybe encCBOR (strictMaybeToMaybe auxiliaryData) - -alonzoMinFeeTx :: - ( EraTx era - , AlonzoEraTxWits era - , AlonzoEraPParams era - ) => - PParams era -> - Tx era -> - Coin -alonzoMinFeeTx pp tx = - (tx ^. sizeTxF <×> pp ^. ppMinFeeAL) - <+> (pp ^. ppMinFeeBL) - <+> txscriptfee (pp ^. ppPricesL) allExunits - where - allExunits = totExUnits tx - -minfee :: - ( EraTx era - , AlonzoEraTxWits era - , AlonzoEraPParams era - ) => - PParams era -> - Tx era -> - Coin -minfee = alonzoMinFeeTx -{-# DEPRECATED minfee "In favor of `getMinFeeTx`" #-} - -totExUnits :: - (EraTx era, AlonzoEraTxWits era) => - Tx era -> - ExUnits -totExUnits tx = - foldMap snd . Map.elems . unRedeemers $ tx ^. witsTxL . rdmrsTxWitsL - --- =============================================================== --- Operations on scripts from specification --- Figure 6:Indexing script and data objects --- =============================================================== - -{-# DEPRECATED getMapFromValue "No longer used" #-} -getMapFromValue :: MaryValue c -> Map.Map (PolicyID c) (Map.Map AssetName Integer) -getMapFromValue (MaryValue _ (MultiAsset m)) = m - --- | Find the Data and ExUnits assigned to a plutus script. -indexRedeemers :: - (AlonzoEraTxWits era, EraTx era) => - Tx era -> - PlutusPurpose AsIxItem era -> - Maybe (Data era, ExUnits) -indexRedeemers tx sp = Map.lookup (hoistPlutusPurpose toAsIx sp) redeemers - where - redeemers = unRedeemers (tx ^. witsTxL . rdmrsTxWitsL) -{-# DEPRECATED indexRedeemers "As no longer needed" #-} - --------------------------------------------------------------------------------- --- Serialisation --------------------------------------------------------------------------------- - --- | Construct an annotated Alonzo style transaction. -alonzoSegwitTx :: - AlonzoEraTx era => - Annotator (TxBody era) -> - Annotator (TxWits era) -> - IsValid -> - Maybe (Annotator (TxAuxData era)) -> - Annotator (Tx era) -alonzoSegwitTx txBodyAnn txWitsAnn isValid auxDataAnn = Annotator $ \bytes -> - let txBody = runAnnotator txBodyAnn bytes - txWits = runAnnotator txWitsAnn bytes - txAuxData = maybeToStrictMaybe (flip runAnnotator bytes <$> auxDataAnn) - in mkBasicTx txBody - & witsTxL .~ txWits - & auxDataTxL .~ txAuxData - & isValidTxL .~ isValid - --------------------------------------------------------------------------------- --- Mempool Serialisation --- --- We do not store the Tx bytes for the following reasons: --- - A Tx serialised in this way never forms part of any hashed structure, hence --- we do not worry about the serialisation changing and thus seeing a new --- hash. --- - The three principal components of this Tx already store their own bytes; --- here we simply concatenate them. The final component, `IsValid`, is --- just a flag and very cheap to serialise. --------------------------------------------------------------------------------- - --- | Encode to CBOR for the purposes of transmission from node to node, or from --- wallet to node. --- --- Note that this serialisation is neither the serialisation used on-chain --- (where Txs are deconstructed using segwit), nor the serialisation used for --- computing the transaction size (which omits the `IsValid` field for --- compatibility with Mary - see 'toCBORForSizeComputation'). -toCBORForMempoolSubmission :: - ( EncCBOR (TxBody era) - , EncCBOR (TxWits era) - , EncCBOR (TxAuxData era) - ) => - AlonzoTx era -> - Encoding -toCBORForMempoolSubmission - AlonzoTx {body, wits, auxiliaryData, isValid} = - encode $ - Rec AlonzoTx - !> To body - !> To wits - !> To isValid - !> E (encodeNullMaybe encCBOR . strictMaybeToMaybe) auxiliaryData - -instance - ( Era era - , EncCBOR (TxBody era) - , EncCBOR (TxAuxData era) - , EncCBOR (TxWits era) - ) => - EncCBOR (AlonzoTx era) - where - encCBOR = toCBORForMempoolSubmission - -instance - ( Era era - , EncCBOR (TxBody era) - , EncCBOR (TxAuxData era) - , EncCBOR (TxWits era) - ) => - ToCBOR (AlonzoTx era) - where - toCBOR = toEraCBOR @era - -instance - ( Typeable era - , DecCBOR (Annotator (TxBody era)) - , DecCBOR (Annotator (TxWits era)) - , DecCBOR (Annotator (TxAuxData era)) - ) => - DecCBOR (Annotator (AlonzoTx era)) - where - decCBOR = - decode $ - Ann (RecD AlonzoTx) - <*! From - <*! From - <*! Ann From - <*! D - ( sequence . maybeToStrictMaybe - <$> decodeNullMaybe decCBOR - ) - {-# INLINE decCBOR #-} - --- ======================================================================= --- Some generic functions that compute over Tx. We try to be abstract over --- things that might differ from Era to Era like --- 1) TxOut will have additional fields --- 2) Scripts might appear in places other than the witness set. So --- we need such a 'witness' we pass it as a parameter and each call site --- can use a different method to compute it in the current Era. - --- | Compute if an Addr has the hash of a TwoPhaseScript, we can tell --- what kind of Script from the Hash, by looking it up in the Map -isTwoPhaseScriptAddressFromMap :: - forall era. - EraScript era => - Map.Map (ScriptHash (EraCrypto era)) (Script era) -> - Addr (EraCrypto era) -> - Bool -isTwoPhaseScriptAddressFromMap hashScriptMap addr = - case Shelley.getScriptHash @(EraCrypto era) addr of - Nothing -> False - Just hash -> any ok hashScriptMap - where - ok script = hashScript @era script == hash && not (isNativeScript @era script) - -alonzoEqTxRaw :: AlonzoEraTx era => Tx era -> Tx era -> Bool -alonzoEqTxRaw tx1 tx2 = - shelleyEqTxRaw tx1 tx2 && (tx1 ^. isValidTxL == tx2 ^. isValidTxL) diff --git a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/TxAuxData.hs b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/TxAuxData.hs deleted file mode 100644 index 28097ab391a..00000000000 --- a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/TxAuxData.hs +++ /dev/null @@ -1,348 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE ViewPatterns #-} -{-# OPTIONS_GHC -fno-warn-orphans #-} - -module Cardano.Ledger.Alonzo.TxAuxData ( - -- * AlonzoTxAuxData - AlonzoTxAuxData ( - AlonzoTxAuxData, - AlonzoTxAuxData', - atadMetadata, - atadTimelock, - atadPlutus, - atadMetadata', - atadTimelock', - atadPlutus' - ), - AlonzoTxAuxDataRaw, - mkAlonzoTxAuxData, - AuxiliaryDataHash (..), - hashAlonzoTxAuxData, - validateAlonzoTxAuxData, - getAlonzoTxAuxDataScripts, - translateAlonzoTxAuxData, - - -- * Deprecated - AuxiliaryData, -) -where - -import Cardano.Crypto.Hash.Class (HashAlgorithm) -import Cardano.Ledger.Allegra.Scripts (Timelock, translateTimelock) -import Cardano.Ledger.Allegra.TxAuxData (AllegraTxAuxData (..)) -import Cardano.Ledger.Alonzo.Era -import Cardano.Ledger.Alonzo.Scripts ( - AlonzoEraScript (..), - AlonzoScript (..), - mkBinaryPlutusScript, - plutusScriptBinary, - plutusScriptLanguage, - validScript, - ) -import Cardano.Ledger.AuxiliaryData (AuxiliaryDataHash (..)) -import Cardano.Ledger.BaseTypes (ProtVer) -import Cardano.Ledger.Binary ( - Annotator (..), - DecCBOR (..), - EncCBOR (..), - ToCBOR, - TokenType (..), - decodeStrictSeq, - peekTokenType, - ) -import Cardano.Ledger.Binary.Coders -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto (Crypto (HASH)) -import Cardano.Ledger.MemoBytes ( - EqRaw, - Mem, - MemoBytes (..), - MemoHashIndex, - Memoized (RawType), - getMemoRawType, - getMemoSafeHash, - mkMemoized, - ) -import Cardano.Ledger.Plutus.Language (Language (..), PlutusBinary (..), guardPlutus) -import Cardano.Ledger.SafeHash (HashAnnotated, SafeToHash (..), hashAnnotated) -import Cardano.Ledger.Shelley.TxAuxData (Metadatum, validMetadatum) -import Control.DeepSeq (NFData, deepseq) -import Data.List (intercalate) -import qualified Data.List.NonEmpty as NE -import Data.Map (Map) -import qualified Data.Map.Strict as Map -import Data.Maybe (isNothing, mapMaybe) -import Data.Sequence.Strict (StrictSeq ((:<|))) -import qualified Data.Sequence.Strict as StrictSeq -import Data.Word (Word64) -import GHC.Generics (Generic) -import GHC.Stack -import NoThunks.Class (InspectHeapNamed (..), NoThunks) - --- ============================================================================= --- Version without serialized bytes - -data AlonzoTxAuxDataRaw era = AlonzoTxAuxDataRaw - { atadrMetadata :: !(Map Word64 Metadatum) - , atadrTimelock :: !(StrictSeq (Timelock era)) - , atadrPlutus :: !(Map Language (NE.NonEmpty PlutusBinary)) - } - deriving (Generic) - -deriving instance Eq (Timelock era) => Eq (AlonzoTxAuxDataRaw era) - -deriving instance Show (Timelock era) => Show (AlonzoTxAuxDataRaw era) - -instance NFData (Timelock era) => NFData (AlonzoTxAuxDataRaw era) - -deriving via - InspectHeapNamed "AlonzoTxAuxDataRaw" (AlonzoTxAuxDataRaw era) - instance - NoThunks (AlonzoTxAuxDataRaw era) - --- | Encodes memoized bytes created upon construction. -instance Era era => EncCBOR (AlonzoTxAuxData era) - -instance Era era => EncCBOR (AlonzoTxAuxDataRaw era) where - encCBOR AlonzoTxAuxDataRaw {atadrMetadata, atadrTimelock, atadrPlutus} = - encode $ - Tag 259 $ - Keyed - ( \m ts mps1 mps2 mps3 -> - AlonzoTxAuxDataRaw m ts $ - Map.fromList - [ (pv, ps) - | (pv, Just ps) <- - [ (PlutusV1, mps1) - , (PlutusV2, mps2) - , (PlutusV3, mps3) - ] - ] - ) - !> Omit null (Key 0 $ To atadrMetadata) - !> Omit null (Key 1 $ To atadrTimelock) - !> Omit isNothing (Key 2 $ E (maybe mempty encCBOR) (Map.lookup PlutusV1 atadrPlutus)) - !> Omit isNothing (Key 3 $ E (maybe mempty encCBOR) (Map.lookup PlutusV2 atadrPlutus)) - !> Omit isNothing (Key 4 $ E (maybe mempty encCBOR) (Map.lookup PlutusV3 atadrPlutus)) - --- | Helper function that will construct Auxiliary data from Metadatum map and a list of scripts. --- --- Note that the relative order of same type scripts will be preserved. -mkAlonzoTxAuxData :: - forall f era. - (Foldable f, AlonzoEraScript era) => - Map Word64 Metadatum -> - f (AlonzoScript era) -> - AlonzoTxAuxData era -mkAlonzoTxAuxData atadrMetadata allScripts = - mkMemoized $ AlonzoTxAuxDataRaw {atadrMetadata, atadrTimelock, atadrPlutus} - where - partitionScripts (tss, pss) = - \case - TimelockScript ts -> (ts :<| tss, pss) - PlutusScript ps -> - let lang = plutusScriptLanguage ps - bs = plutusScriptBinary ps - in (tss, Map.alter (Just . maybe (pure bs) (NE.cons bs)) lang pss) - (atadrTimelock, atadrPlutus) = - foldr (flip partitionScripts) (mempty, Map.empty) allScripts - -getAlonzoTxAuxDataScripts :: - forall era. - AlonzoEraScript era => - AlonzoTxAuxData era -> - StrictSeq (AlonzoScript era) -getAlonzoTxAuxDataScripts AlonzoTxAuxData {atadTimelock = timelocks, atadPlutus = plutus} = - mconcat $ - (TimelockScript <$> timelocks) - : [ StrictSeq.fromList $ - -- It is fine to filter out unsupported languages with mapMaybe, because the invariant for - -- AlonzoTxAuxData is that it does not contain scripts with languages that are not - -- supported in this era - mapMaybe (fmap PlutusScript . mkBinaryPlutusScript lang) $ - NE.toList plutusScripts - | lang <- [PlutusV1 .. eraMaxLanguage @era] - , Just plutusScripts <- [Map.lookup lang plutus] - ] - -instance Era era => DecCBOR (Annotator (AlonzoTxAuxDataRaw era)) where - decCBOR = - peekTokenType >>= \case - TypeMapLen -> decodeShelley - TypeMapLen64 -> decodeShelley - TypeMapLenIndef -> decodeShelley - TypeListLen -> decodeShelleyMA - TypeListLen64 -> decodeShelleyMA - TypeListLenIndef -> decodeShelleyMA - TypeTag -> decodeAlonzo - TypeTag64 -> decodeAlonzo - _ -> fail "Failed to decode AuxiliaryData" - where - decodeShelley = - decode - ( Ann (Emit AlonzoTxAuxDataRaw) - <*! Ann From - <*! Ann (Emit StrictSeq.empty) - <*! Ann (Emit Map.empty) - ) - decodeShelleyMA = - decode - ( Ann (RecD AlonzoTxAuxDataRaw) - <*! Ann From - <*! D - (sequence <$> decodeStrictSeq decCBOR) - <*! Ann (Emit Map.empty) - ) - decodeAlonzo = - decode $ - TagD 259 $ - SparseKeyed "AuxiliaryData" (pure emptyAuxData) auxDataField [] - - addPlutusScripts lang scripts ad = - case NE.nonEmpty scripts of - Nothing -> ad - Just neScripts -> - -- Avoid leaks by deepseq, since non empty list is lazy. - neScripts `deepseq` ad {atadrPlutus = Map.insert lang neScripts $ atadrPlutus ad} - - auxDataField :: Word -> Field (Annotator (AlonzoTxAuxDataRaw era)) - auxDataField 0 = fieldA (\x ad -> ad {atadrMetadata = x}) From - auxDataField 1 = - fieldAA - (\x ad -> ad {atadrTimelock = atadrTimelock ad <> x}) - (D (sequence <$> decodeStrictSeq decCBOR)) - auxDataField 2 = fieldA (addPlutusScripts PlutusV1) (D (guardPlutus PlutusV1 >> decCBOR)) - auxDataField 3 = fieldA (addPlutusScripts PlutusV2) (D (guardPlutus PlutusV2 >> decCBOR)) - auxDataField 4 = fieldA (addPlutusScripts PlutusV3) (D (guardPlutus PlutusV3 >> decCBOR)) - auxDataField n = field (\_ t -> t) (Invalid n) - -emptyAuxData :: AlonzoTxAuxDataRaw era -emptyAuxData = AlonzoTxAuxDataRaw mempty mempty mempty - --- ================================================================================ --- Version with serialized bytes. - -newtype AlonzoTxAuxData era = AuxiliaryDataConstr (MemoBytes AlonzoTxAuxDataRaw era) - deriving (Generic) - deriving newtype (ToCBOR, SafeToHash) - -instance Memoized AlonzoTxAuxData where - type RawType AlonzoTxAuxData = AlonzoTxAuxDataRaw - -instance EqRaw (AlonzoTxAuxData era) - -type AuxiliaryData era = AlonzoTxAuxData era - -{-# DEPRECATED AuxiliaryData "Use `AlonzoTxAuxData` instead" #-} - -instance Crypto c => EraTxAuxData (AlonzoEra c) where - type TxAuxData (AlonzoEra c) = AlonzoTxAuxData (AlonzoEra c) - - upgradeTxAuxData (AllegraTxAuxData md scripts) = - mkMemoized $ - AlonzoTxAuxDataRaw - { atadrMetadata = md - , atadrTimelock = translateTimelock <$> scripts - , atadrPlutus = mempty - } - - hashTxAuxData = hashAlonzoTxAuxData - - validateTxAuxData = validateAlonzoTxAuxData - -hashAlonzoTxAuxData :: - (HashAlgorithm (HASH c), HashAnnotated x EraIndependentTxAuxData c) => - x -> - AuxiliaryDataHash c -hashAlonzoTxAuxData x = AuxiliaryDataHash (hashAnnotated x) - -validateAlonzoTxAuxData :: - (AlonzoEraScript era, Script era ~ AlonzoScript era) => - ProtVer -> - AuxiliaryData era -> - Bool -validateAlonzoTxAuxData pv auxData@AlonzoTxAuxData {atadMetadata = metadata} = - all validMetadatum metadata - && all (validScript pv) (getAlonzoTxAuxDataScripts auxData) - -instance EraCrypto era ~ c => HashAnnotated (AuxiliaryData era) EraIndependentTxAuxData c where - hashAnnotated = getMemoSafeHash - -deriving newtype instance NFData (AuxiliaryData era) - -deriving instance Eq (AuxiliaryData era) - -deriving instance HashAlgorithm (HASH (EraCrypto era)) => Show (AuxiliaryData era) - -type instance MemoHashIndex AlonzoTxAuxDataRaw = EraIndependentTxAuxData - -deriving via - InspectHeapNamed "AlonzoTxAuxDataRaw" (AuxiliaryData era) - instance - NoThunks (AuxiliaryData era) - -deriving via - (Mem AlonzoTxAuxDataRaw era) - instance - Era era => DecCBOR (Annotator (AuxiliaryData era)) - --- | Construct auxiliary data. Make sure not to supply plutus script versions that are not --- supported in this era, because it will result in a runtime exception. Use --- `mkAlonzoTxAuxData` instead if you need runtime safety guarantees. -pattern AlonzoTxAuxData :: - forall era. - (HasCallStack, AlonzoEraScript era) => - Map Word64 Metadatum -> - StrictSeq (Timelock era) -> - Map Language (NE.NonEmpty PlutusBinary) -> - AlonzoTxAuxData era -pattern AlonzoTxAuxData {atadMetadata, atadTimelock, atadPlutus} <- - (getMemoRawType -> AlonzoTxAuxDataRaw atadMetadata atadTimelock atadPlutus) - where - AlonzoTxAuxData atadrMetadata atadrTimelock atadrPlutus = - let unsupportedScripts = - Map.filterWithKey (\lang _ -> lang > eraMaxLanguage @era) atadrPlutus - prefix = - intercalate "," (show <$> Map.keys unsupportedScripts) - ++ if Map.size unsupportedScripts > 1 then " languages are" else " language is" - in if Map.null unsupportedScripts - then mkMemoized $ AlonzoTxAuxDataRaw {atadrMetadata, atadrTimelock, atadrPlutus} - else error $ prefix ++ " not supported in " ++ eraName @era - -{-# COMPLETE AlonzoTxAuxData #-} - -pattern AlonzoTxAuxData' :: - forall era. - Map Word64 Metadatum -> - StrictSeq (Timelock era) -> - Map Language (NE.NonEmpty PlutusBinary) -> - AlonzoTxAuxData era -pattern AlonzoTxAuxData' {atadMetadata', atadTimelock', atadPlutus'} <- - (getMemoRawType -> AlonzoTxAuxDataRaw atadMetadata' atadTimelock' atadPlutus') - -translateAlonzoTxAuxData :: - (AlonzoEraScript era1, AlonzoEraScript era2, EraCrypto era1 ~ EraCrypto era2) => - AlonzoTxAuxData era1 -> - AlonzoTxAuxData era2 -translateAlonzoTxAuxData AlonzoTxAuxData {atadMetadata, atadTimelock, atadPlutus} = - AlonzoTxAuxData - { atadMetadata = atadMetadata - , atadTimelock = translateTimelock <$> atadTimelock - , atadPlutus = atadPlutus - } diff --git a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/TxBody.hs b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/TxBody.hs deleted file mode 100644 index 0cd630af704..00000000000 --- a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/TxBody.hs +++ /dev/null @@ -1,715 +0,0 @@ -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} -{-# LANGUAGE ViewPatterns #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Alonzo.TxBody ( - AlonzoTxOut (..), - AlonzoEraTxOut (..), - -- Constructors are not exported for safety: - Addr28Extra, - DataHash32, - AlonzoTxBody ( - AlonzoTxBody, - atbInputs, - atbCollateral, - atbOutputs, - atbCerts, - atbWithdrawals, - atbTxFee, - atbValidityInterval, - atbUpdate, - atbReqSignerHashes, - atbMint, - atbScriptIntegrityHash, - atbAuxDataHash, - atbTxNetworkId - ), - AlonzoTxBodyRaw, - AlonzoTxBodyUpgradeError (..), - AlonzoEraTxBody (..), - ShelleyEraTxBody (..), - AllegraEraTxBody (..), - MaryEraTxBody (..), - Indexable (..), - inputs', - collateral', - outputs', - certs', - withdrawals', - txfee', - vldt', - update', - reqSignerHashes', - mint', - scriptIntegrityHash', - adHash', - txnetworkid', - getAdaOnly, - decodeDataHash32, - encodeDataHash32, - encodeAddress28, - decodeAddress28, - viewCompactTxOut, - viewTxOut, - EraIndependentScriptIntegrity, - ScriptIntegrityHash, - getAlonzoTxOutEitherAddr, - utxoEntrySize, - alonzoRedeemerPointer, - alonzoRedeemerPointerInverse, -) -where - -import Cardano.Ledger.Alonzo.Era -import Cardano.Ledger.Alonzo.PParams () -import Cardano.Ledger.Alonzo.Scripts ( - AlonzoPlutusPurpose (..), - AsItem (..), - AsIx (..), - AsIxItem (..), - PlutusPurpose, - ) -import Cardano.Ledger.Alonzo.TxAuxData (AuxiliaryDataHash (..)) -import Cardano.Ledger.Alonzo.TxCert () -import Cardano.Ledger.Alonzo.TxOut -import Cardano.Ledger.BaseTypes ( - Network (..), - StrictMaybe (..), - ) -import Cardano.Ledger.Binary ( - Annotator, - DecCBOR (..), - EncCBOR (..), - ToCBOR (..), - ) -import Cardano.Ledger.Binary.Coders -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Crypto -import Cardano.Ledger.Keys (KeyHash (..), KeyRole (..)) -import Cardano.Ledger.Mary (MaryEra) -import Cardano.Ledger.Mary.Core -import Cardano.Ledger.Mary.TxBody (MaryTxBody (..)) -import Cardano.Ledger.Mary.Value ( - MaryValue (MaryValue), - MultiAsset (..), - PolicyID (..), - policies, - ) -import Cardano.Ledger.MemoBytes ( - EqRaw, - Mem, - MemoBytes, - MemoHashIndex, - Memoized (..), - getMemoRawType, - getMemoSafeHash, - lensMemoRawType, - mkMemoized, - ) -import Cardano.Ledger.SafeHash (HashAnnotated (..), SafeHash, SafeToHash) -import Cardano.Ledger.Shelley.PParams (ProposedPPUpdates (..), Update (..)) -import Cardano.Ledger.Shelley.TxBody (getShelleyGenesisKeyHashCountTxBody) -import Cardano.Ledger.TxIn (TxIn (..)) -import Control.Arrow (left) -import Control.DeepSeq (NFData (..)) -import Control.Monad (when) -import Data.Default.Class (def) -import qualified Data.Map.Strict as Map -import Data.Maybe.Strict (isSJust) -import Data.OSet.Strict (OSet) -import qualified Data.OSet.Strict as OSet -import Data.Sequence.Strict (StrictSeq) -import qualified Data.Sequence.Strict as StrictSeq -import Data.Set (Set) -import qualified Data.Set as Set -import Data.Typeable (Typeable) -import Data.Void (absurd) -import Data.Word (Word32) -import GHC.Generics (Generic) -import Lens.Micro -import NoThunks.Class (NoThunks) - -type ScriptIntegrityHash c = SafeHash c EraIndependentScriptIntegrity - -class (MaryEraTxBody era, AlonzoEraTxOut era) => AlonzoEraTxBody era where - collateralInputsTxBodyL :: Lens' (TxBody era) (Set (TxIn (EraCrypto era))) - - reqSignerHashesTxBodyL :: Lens' (TxBody era) (Set (KeyHash 'Witness (EraCrypto era))) - - scriptIntegrityHashTxBodyL :: - Lens' (TxBody era) (StrictMaybe (ScriptIntegrityHash (EraCrypto era))) - - networkIdTxBodyL :: Lens' (TxBody era) (StrictMaybe Network) - - -- | This function is called @rdptr@ in the spec. Given a `TxBody` and a plutus - -- purpose with an item, we should be able to find the plutus purpose as in index - redeemerPointer :: - TxBody era -> - PlutusPurpose AsItem era -> - StrictMaybe (PlutusPurpose AsIx era) - - -- | This is an inverse of `redeemerPointer`. Given purpose as an index return it as an item. - redeemerPointerInverse :: - TxBody era -> - PlutusPurpose AsIx era -> - StrictMaybe (PlutusPurpose AsIxItem era) - --- ====================================== - -data AlonzoTxBodyRaw era = AlonzoTxBodyRaw - { atbrInputs :: !(Set (TxIn (EraCrypto era))) - , atbrCollateral :: !(Set (TxIn (EraCrypto era))) - , atbrOutputs :: !(StrictSeq (TxOut era)) - , atbrCerts :: !(StrictSeq (TxCert era)) - , atbrWithdrawals :: !(Withdrawals (EraCrypto era)) - , atbrTxFee :: !Coin - , atbrValidityInterval :: !ValidityInterval - , atbrUpdate :: !(StrictMaybe (Update era)) - , atbrReqSignerHashes :: Set (KeyHash 'Witness (EraCrypto era)) - , atbrMint :: !(MultiAsset (EraCrypto era)) - , atbrScriptIntegrityHash :: !(StrictMaybe (ScriptIntegrityHash (EraCrypto era))) - , atbrAuxDataHash :: !(StrictMaybe (AuxiliaryDataHash (EraCrypto era))) - , atbrTxNetworkId :: !(StrictMaybe Network) - } - deriving (Generic, Typeable) - -deriving instance - (Era era, Eq (TxOut era), Eq (TxCert era), Eq (PParamsUpdate era)) => - Eq (AlonzoTxBodyRaw era) - -instance - (Era era, NoThunks (TxOut era), NoThunks (TxCert era), NoThunks (PParamsUpdate era)) => - NoThunks (AlonzoTxBodyRaw era) - -instance - (Era era, NFData (TxOut era), NFData (TxCert era), NFData (PParamsUpdate era)) => - NFData (AlonzoTxBodyRaw era) - -deriving instance - (Era era, Show (TxOut era), Show (TxCert era), Show (PParamsUpdate era)) => - Show (AlonzoTxBodyRaw era) - -newtype AlonzoTxBody era = TxBodyConstr (MemoBytes AlonzoTxBodyRaw era) - deriving (ToCBOR, Generic) - deriving newtype (SafeToHash) - -instance Memoized AlonzoTxBody where - type RawType AlonzoTxBody = AlonzoTxBodyRaw - -data AlonzoTxBodyUpgradeError - = -- | The TxBody contains a protocol parameter update that attempts to update - -- the min UTxO. Since this doesn't exist in Alonzo, we fail if an attempt is - -- made to update it. - ATBUEMinUTxOUpdated - deriving (Show) - -instance Crypto c => EraTxBody (AlonzoEra c) where - {-# SPECIALIZE instance EraTxBody (AlonzoEra StandardCrypto) #-} - - type TxBody (AlonzoEra c) = AlonzoTxBody (AlonzoEra c) - type TxBodyUpgradeError (AlonzoEra c) = AlonzoTxBodyUpgradeError - - mkBasicTxBody = mkMemoized emptyAlonzoTxBodyRaw - - inputsTxBodyL = - lensMemoRawType atbrInputs (\txBodyRaw inputs_ -> txBodyRaw {atbrInputs = inputs_}) - {-# INLINEABLE inputsTxBodyL #-} - - outputsTxBodyL = - lensMemoRawType atbrOutputs (\txBodyRaw outputs_ -> txBodyRaw {atbrOutputs = outputs_}) - {-# INLINEABLE outputsTxBodyL #-} - - feeTxBodyL = - lensMemoRawType atbrTxFee (\txBodyRaw fee_ -> txBodyRaw {atbrTxFee = fee_}) - {-# INLINEABLE feeTxBodyL #-} - - auxDataHashTxBodyL = - lensMemoRawType - atbrAuxDataHash - (\txBodyRaw auxDataHash -> txBodyRaw {atbrAuxDataHash = auxDataHash}) - {-# INLINEABLE auxDataHashTxBodyL #-} - - spendableInputsTxBodyF = allInputsTxBodyF - {-# INLINE spendableInputsTxBodyF #-} - - allInputsTxBodyF = - to $ \txBody -> (txBody ^. inputsTxBodyL) `Set.union` (txBody ^. collateralInputsTxBodyL) - {-# INLINEABLE allInputsTxBodyF #-} - - withdrawalsTxBodyL = - lensMemoRawType - atbrWithdrawals - (\txBodyRaw withdrawals_ -> txBodyRaw {atbrWithdrawals = withdrawals_}) - {-# INLINEABLE withdrawalsTxBodyL #-} - - certsTxBodyL = - lensMemoRawType atbrCerts (\txBodyRaw certs_ -> txBodyRaw {atbrCerts = certs_}) - {-# INLINEABLE certsTxBodyL #-} - - getGenesisKeyHashCountTxBody = getShelleyGenesisKeyHashCountTxBody - - upgradeTxBody - MaryTxBody - { mtbInputs - , mtbOutputs - , mtbCerts - , mtbWithdrawals - , mtbTxFee - , mtbValidityInterval - , mtbUpdate - , mtbAuxDataHash - , mtbMint - } = do - certs <- - traverse - (left absurd . upgradeTxCert) - mtbCerts - - updates <- traverse upgradeUpdate mtbUpdate - pure $ - AlonzoTxBody - { atbInputs = mtbInputs - , atbOutputs = upgradeTxOut <$> mtbOutputs - , atbCerts = certs - , atbWithdrawals = mtbWithdrawals - , atbTxFee = mtbTxFee - , atbValidityInterval = mtbValidityInterval - , atbUpdate = updates - , atbAuxDataHash = mtbAuxDataHash - , atbMint = mtbMint - , atbCollateral = mempty - , atbReqSignerHashes = mempty - , atbScriptIntegrityHash = SNothing - , atbTxNetworkId = SNothing - } - where - upgradeUpdate :: - Update (MaryEra c) -> - Either AlonzoTxBodyUpgradeError (Update (AlonzoEra c)) - upgradeUpdate (Update pp epoch) = - Update <$> upgradeProposedPPUpdates pp <*> pure epoch - - upgradeProposedPPUpdates :: - ProposedPPUpdates (MaryEra c) -> - Either AlonzoTxBodyUpgradeError (ProposedPPUpdates (AlonzoEra c)) - upgradeProposedPPUpdates (ProposedPPUpdates m) = - ProposedPPUpdates - <$> traverse - ( \ppu -> do - when (isSJust $ ppu ^. ppuMinUTxOValueL) $ - Left ATBUEMinUTxOUpdated - pure $ upgradePParamsUpdate def ppu - ) - m - -instance Crypto c => ShelleyEraTxBody (AlonzoEra c) where - {-# SPECIALIZE instance ShelleyEraTxBody (AlonzoEra StandardCrypto) #-} - - ttlTxBodyL = notSupportedInThisEraL - - updateTxBodyL = - lensMemoRawType atbrUpdate (\txBodyRaw update_ -> txBodyRaw {atbrUpdate = update_}) - {-# INLINEABLE updateTxBodyL #-} - -instance Crypto c => AllegraEraTxBody (AlonzoEra c) where - {-# SPECIALIZE instance AllegraEraTxBody (AlonzoEra StandardCrypto) #-} - - vldtTxBodyL = - lensMemoRawType atbrValidityInterval (\txBodyRaw vldt_ -> txBodyRaw {atbrValidityInterval = vldt_}) - {-# INLINEABLE vldtTxBodyL #-} - -instance Crypto c => MaryEraTxBody (AlonzoEra c) where - {-# SPECIALIZE instance MaryEraTxBody (AlonzoEra StandardCrypto) #-} - - mintTxBodyL = - lensMemoRawType atbrMint (\txBodyRaw mint_ -> txBodyRaw {atbrMint = mint_}) - {-# INLINEABLE mintTxBodyL #-} - - mintValueTxBodyF = mintTxBodyL . to (MaryValue mempty) - {-# INLINEABLE mintValueTxBodyF #-} - - mintedTxBodyF = to (policies . atbrMint . getMemoRawType) - {-# INLINEABLE mintedTxBodyF #-} - -instance Crypto c => AlonzoEraTxBody (AlonzoEra c) where - {-# SPECIALIZE instance AlonzoEraTxBody (AlonzoEra StandardCrypto) #-} - - collateralInputsTxBodyL = - lensMemoRawType atbrCollateral (\txBodyRaw collateral_ -> txBodyRaw {atbrCollateral = collateral_}) - {-# INLINEABLE collateralInputsTxBodyL #-} - - reqSignerHashesTxBodyL = - lensMemoRawType - atbrReqSignerHashes - (\txBodyRaw reqSignerHashes_ -> txBodyRaw {atbrReqSignerHashes = reqSignerHashes_}) - {-# INLINEABLE reqSignerHashesTxBodyL #-} - - scriptIntegrityHashTxBodyL = - lensMemoRawType - atbrScriptIntegrityHash - (\txBodyRaw scriptIntegrityHash_ -> txBodyRaw {atbrScriptIntegrityHash = scriptIntegrityHash_}) - {-# INLINEABLE scriptIntegrityHashTxBodyL #-} - - networkIdTxBodyL = - lensMemoRawType atbrTxNetworkId (\txBodyRaw networkId -> txBodyRaw {atbrTxNetworkId = networkId}) - {-# INLINEABLE networkIdTxBodyL #-} - - redeemerPointer = alonzoRedeemerPointer - - redeemerPointerInverse = alonzoRedeemerPointerInverse - -deriving newtype instance - (Era era, Eq (TxOut era), Eq (TxCert era), Eq (PParamsUpdate era)) => - Eq (AlonzoTxBody era) - -deriving instance - (Era era, NoThunks (TxOut era), NoThunks (TxCert era), NoThunks (PParamsUpdate era)) => - NoThunks (AlonzoTxBody era) - -deriving instance - (Era era, NFData (TxOut era), NFData (TxCert era), NFData (PParamsUpdate era)) => - NFData (AlonzoTxBody era) - -deriving instance - (Era era, Show (TxOut era), Show (TxCert era), Show (PParamsUpdate era)) => - Show (AlonzoTxBody era) - -deriving via - (Mem AlonzoTxBodyRaw era) - instance - (Era era, DecCBOR (TxOut era), DecCBOR (TxCert era), DecCBOR (PParamsUpdate era)) => - DecCBOR (Annotator (AlonzoTxBody era)) - -pattern AlonzoTxBody :: - (EraTxOut era, EraTxCert era) => - Set (TxIn (EraCrypto era)) -> - Set (TxIn (EraCrypto era)) -> - StrictSeq (TxOut era) -> - StrictSeq (TxCert era) -> - Withdrawals (EraCrypto era) -> - Coin -> - ValidityInterval -> - StrictMaybe (Update era) -> - Set (KeyHash 'Witness (EraCrypto era)) -> - MultiAsset (EraCrypto era) -> - StrictMaybe (ScriptIntegrityHash (EraCrypto era)) -> - StrictMaybe (AuxiliaryDataHash (EraCrypto era)) -> - StrictMaybe Network -> - AlonzoTxBody era -pattern AlonzoTxBody - { atbInputs - , atbCollateral - , atbOutputs - , atbCerts - , atbWithdrawals - , atbTxFee - , atbValidityInterval - , atbUpdate - , atbReqSignerHashes - , atbMint - , atbScriptIntegrityHash - , atbAuxDataHash - , atbTxNetworkId - } <- - ( getMemoRawType -> - AlonzoTxBodyRaw - { atbrInputs = atbInputs - , atbrCollateral = atbCollateral - , atbrOutputs = atbOutputs - , atbrCerts = atbCerts - , atbrWithdrawals = atbWithdrawals - , atbrTxFee = atbTxFee - , atbrValidityInterval = atbValidityInterval - , atbrUpdate = atbUpdate - , atbrReqSignerHashes = atbReqSignerHashes - , atbrMint = atbMint - , atbrScriptIntegrityHash = atbScriptIntegrityHash - , atbrAuxDataHash = atbAuxDataHash - , atbrTxNetworkId = atbTxNetworkId - } - ) - where - AlonzoTxBody - inputs - collateral - outputs - certs - withdrawals - txFee - validityInterval - update - reqSignerHashes - mint - scriptIntegrityHash - auxDataHash - txNetworkId = - mkMemoized $ - AlonzoTxBodyRaw - { atbrInputs = inputs - , atbrCollateral = collateral - , atbrOutputs = outputs - , atbrCerts = certs - , atbrWithdrawals = withdrawals - , atbrTxFee = txFee - , atbrValidityInterval = validityInterval - , atbrUpdate = update - , atbrReqSignerHashes = reqSignerHashes - , atbrMint = mint - , atbrScriptIntegrityHash = scriptIntegrityHash - , atbrAuxDataHash = auxDataHash - , atbrTxNetworkId = txNetworkId - } - -{-# COMPLETE AlonzoTxBody #-} - -type instance MemoHashIndex AlonzoTxBodyRaw = EraIndependentTxBody - -instance c ~ EraCrypto era => HashAnnotated (AlonzoTxBody era) EraIndependentTxBody c where - hashAnnotated = getMemoSafeHash - --- ============================================================================== --- We define these accessor functions manually, because if we define them using --- the record syntax in the TxBody pattern, they inherit the (AlonzoBody era) --- constraint as a precondition. This is unnecessary, as one can see below --- they need not be constrained at all. This should be fixed in the GHC compiler. - -inputs' :: AlonzoTxBody era -> Set (TxIn (EraCrypto era)) -collateral' :: AlonzoTxBody era -> Set (TxIn (EraCrypto era)) -outputs' :: AlonzoTxBody era -> StrictSeq (TxOut era) -certs' :: AlonzoTxBody era -> StrictSeq (TxCert era) -txfee' :: AlonzoTxBody era -> Coin -withdrawals' :: AlonzoTxBody era -> Withdrawals (EraCrypto era) -vldt' :: AlonzoTxBody era -> ValidityInterval -update' :: AlonzoTxBody era -> StrictMaybe (Update era) -reqSignerHashes' :: AlonzoTxBody era -> Set (KeyHash 'Witness (EraCrypto era)) -adHash' :: AlonzoTxBody era -> StrictMaybe (AuxiliaryDataHash (EraCrypto era)) -mint' :: AlonzoTxBody era -> MultiAsset (EraCrypto era) -scriptIntegrityHash' :: AlonzoTxBody era -> StrictMaybe (ScriptIntegrityHash (EraCrypto era)) -txnetworkid' :: AlonzoTxBody era -> StrictMaybe Network -inputs' = atbrInputs . getMemoRawType - -collateral' = atbrCollateral . getMemoRawType - -outputs' = atbrOutputs . getMemoRawType - -certs' = atbrCerts . getMemoRawType - -withdrawals' = atbrWithdrawals . getMemoRawType - -txfee' = atbrTxFee . getMemoRawType - -vldt' = atbrValidityInterval . getMemoRawType - -update' = atbrUpdate . getMemoRawType - -reqSignerHashes' = atbrReqSignerHashes . getMemoRawType - -adHash' = atbrAuxDataHash . getMemoRawType - -mint' = atbrMint . getMemoRawType - -scriptIntegrityHash' = atbrScriptIntegrityHash . getMemoRawType - -txnetworkid' = atbrTxNetworkId . getMemoRawType - -instance - (Era era, Eq (PParamsUpdate era), Eq (TxOut era), Eq (TxCert era)) => - EqRaw (AlonzoTxBody era) - --------------------------------------------------------------------------------- --- Serialisation --------------------------------------------------------------------------------- - --- | Encodes memoized bytes created upon construction. -instance Era era => EncCBOR (AlonzoTxBody era) - -instance - (Era era, EncCBOR (TxOut era), EncCBOR (TxCert era), EncCBOR (PParamsUpdate era)) => - EncCBOR (AlonzoTxBodyRaw era) - where - encCBOR - AlonzoTxBodyRaw - { atbrInputs - , atbrCollateral - , atbrOutputs - , atbrCerts - , atbrWithdrawals - , atbrTxFee - , atbrValidityInterval = ValidityInterval bot top - , atbrUpdate - , atbrReqSignerHashes - , atbrMint - , atbrScriptIntegrityHash - , atbrAuxDataHash - , atbrTxNetworkId - } = - encode $ - Keyed - ( \i ifee o f t c w u b rsh mi sh ah ni -> - AlonzoTxBodyRaw i ifee o c w f (ValidityInterval b t) u rsh mi sh ah ni - ) - !> Key 0 (To atbrInputs) - !> Omit null (Key 13 (To atbrCollateral)) - !> Key 1 (To atbrOutputs) - !> Key 2 (To atbrTxFee) - !> encodeKeyedStrictMaybe 3 top - !> Omit null (Key 4 (To atbrCerts)) - !> Omit (null . unWithdrawals) (Key 5 (To atbrWithdrawals)) - !> encodeKeyedStrictMaybe 6 atbrUpdate - !> encodeKeyedStrictMaybe 8 bot - !> Omit null (Key 14 (To atbrReqSignerHashes)) - !> Omit (== mempty) (Key 9 (To atbrMint)) - !> encodeKeyedStrictMaybe 11 atbrScriptIntegrityHash - !> encodeKeyedStrictMaybe 7 atbrAuxDataHash - !> encodeKeyedStrictMaybe 15 atbrTxNetworkId - -instance - (Era era, DecCBOR (TxOut era), DecCBOR (TxCert era), DecCBOR (PParamsUpdate era)) => - DecCBOR (AlonzoTxBodyRaw era) - where - decCBOR = - decode $ - SparseKeyed - "AlonzoTxBodyRaw" - emptyAlonzoTxBodyRaw - bodyFields - requiredFields - where - bodyFields :: Word -> Field (AlonzoTxBodyRaw era) - bodyFields 0 = field (\x tx -> tx {atbrInputs = x}) From - bodyFields 13 = field (\x tx -> tx {atbrCollateral = x}) From - bodyFields 1 = field (\x tx -> tx {atbrOutputs = x}) From - bodyFields 2 = field (\x tx -> tx {atbrTxFee = x}) From - bodyFields 3 = - ofield - (\x tx -> tx {atbrValidityInterval = (atbrValidityInterval tx) {invalidHereafter = x}}) - From - bodyFields 4 = field (\x tx -> tx {atbrCerts = x}) From - bodyFields 5 = field (\x tx -> tx {atbrWithdrawals = x}) From - bodyFields 6 = ofield (\x tx -> tx {atbrUpdate = x}) From - bodyFields 7 = ofield (\x tx -> tx {atbrAuxDataHash = x}) From - bodyFields 8 = - ofield - (\x tx -> tx {atbrValidityInterval = (atbrValidityInterval tx) {invalidBefore = x}}) - From - bodyFields 9 = field (\x tx -> tx {atbrMint = x}) From - bodyFields 11 = ofield (\x tx -> tx {atbrScriptIntegrityHash = x}) From - bodyFields 14 = field (\x tx -> tx {atbrReqSignerHashes = x}) From - bodyFields 15 = ofield (\x tx -> tx {atbrTxNetworkId = x}) From - bodyFields n = field (\_ t -> t) (Invalid n) - requiredFields = - [ (0, "inputs") - , (1, "outputs") - , (2, "fee") - ] - -emptyAlonzoTxBodyRaw :: AlonzoTxBodyRaw era -emptyAlonzoTxBodyRaw = - AlonzoTxBodyRaw - mempty - mempty - StrictSeq.empty - StrictSeq.empty - (Withdrawals mempty) - mempty - (ValidityInterval SNothing SNothing) - SNothing - mempty - mempty - SNothing - SNothing - SNothing - -instance - (Era era, DecCBOR (TxOut era), DecCBOR (TxCert era), DecCBOR (PParamsUpdate era)) => - DecCBOR (Annotator (AlonzoTxBodyRaw era)) - where - decCBOR = pure <$> decCBOR - -alonzoRedeemerPointer :: - forall era. - MaryEraTxBody era => - TxBody era -> - AlonzoPlutusPurpose AsItem era -> - StrictMaybe (AlonzoPlutusPurpose AsIx era) -alonzoRedeemerPointer txBody = \case - AlonzoSpending txIn -> - AlonzoSpending <$> indexOf txIn (txBody ^. inputsTxBodyL) - AlonzoMinting policyID -> - AlonzoMinting <$> indexOf policyID (txBody ^. mintedTxBodyF :: Set (PolicyID (EraCrypto era))) - AlonzoCertifying txCert -> - AlonzoCertifying <$> indexOf txCert (txBody ^. certsTxBodyL) - AlonzoRewarding rewardAccount -> - AlonzoRewarding <$> indexOf rewardAccount (unWithdrawals (txBody ^. withdrawalsTxBodyL)) - -alonzoRedeemerPointerInverse :: - MaryEraTxBody era => - TxBody era -> - AlonzoPlutusPurpose AsIx era -> - StrictMaybe (AlonzoPlutusPurpose AsIxItem era) -alonzoRedeemerPointerInverse txBody = \case - AlonzoSpending idx -> - AlonzoSpending <$> fromIndex idx (txBody ^. inputsTxBodyL) - AlonzoMinting idx -> - AlonzoMinting <$> fromIndex idx (txBody ^. mintedTxBodyF) - AlonzoCertifying idx -> - AlonzoCertifying <$> fromIndex idx (txBody ^. certsTxBodyL) - AlonzoRewarding idx -> - AlonzoRewarding <$> fromIndex idx (unWithdrawals (txBody ^. withdrawalsTxBodyL)) - -class Indexable elem container where - indexOf :: AsItem Word32 elem -> container -> StrictMaybe (AsIx Word32 elem) - fromIndex :: AsIx Word32 elem -> container -> StrictMaybe (AsIxItem Word32 elem) - -instance Ord k => Indexable k (Set k) where - indexOf (AsItem n) s = case Set.lookupIndex n s of - Just x -> SJust (AsIx (fromIntegral @Int @Word32 x)) - Nothing -> SNothing - fromIndex (AsIx w32) s = - let i = fromIntegral @Word32 @Int w32 - in if i < Set.size s - then SJust $ AsIxItem w32 (Set.elemAt i s) - else SNothing - -instance Eq k => Indexable k (StrictSeq k) where - indexOf (AsItem n) seqx = case StrictSeq.findIndexL (== n) seqx of - Just m -> SJust (AsIx (fromIntegral @Int @Word32 m)) - Nothing -> SNothing - fromIndex (AsIx w32) seqx = - case StrictSeq.lookup (fromIntegral @Word32 @Int w32) seqx of - Nothing -> SNothing - Just x -> SJust $ AsIxItem w32 x - -instance Ord k => Indexable k (Map.Map k v) where - indexOf (AsItem n) mp = case Map.lookupIndex n mp of - Just x -> SJust (AsIx (fromIntegral @Int @Word32 x)) - Nothing -> SNothing - fromIndex (AsIx w32) mp = - let i = fromIntegral @Word32 @Int w32 - in if i < fromIntegral (Map.size mp) - then SJust . AsIxItem w32 . fst $ Map.elemAt i mp - else SNothing - -instance Ord k => Indexable k (OSet k) where - indexOf asItem = indexOf asItem . OSet.toStrictSeq - fromIndex asIndex = fromIndex asIndex . OSet.toStrictSeq diff --git a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/TxCert.hs b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/TxCert.hs deleted file mode 100644 index 7d516c27c91..00000000000 --- a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/TxCert.hs +++ /dev/null @@ -1,71 +0,0 @@ -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Alonzo.TxCert () where - -import Cardano.Ledger.Alonzo.Era (AlonzoEra) -import Cardano.Ledger.Alonzo.PParams () -import Cardano.Ledger.Crypto (Crypto, StandardCrypto) -import Cardano.Ledger.Shelley.TxCert - -instance Crypto c => EraTxCert (AlonzoEra c) where - {-# SPECIALIZE instance EraTxCert (AlonzoEra StandardCrypto) #-} - - type TxCert (AlonzoEra c) = ShelleyTxCert (AlonzoEra c) - - upgradeTxCert = Right . upgradeShelleyTxCert - - getVKeyWitnessTxCert = getVKeyWitnessShelleyTxCert - - getScriptWitnessTxCert = getScriptWitnessShelleyTxCert - - mkRegPoolTxCert = ShelleyTxCertPool . RegPool - - getRegPoolTxCert (ShelleyTxCertPool (RegPool poolParams)) = Just poolParams - getRegPoolTxCert _ = Nothing - - mkRetirePoolTxCert poolId epochNo = ShelleyTxCertPool $ RetirePool poolId epochNo - - getRetirePoolTxCert (ShelleyTxCertPool (RetirePool poolId epochNo)) = Just (poolId, epochNo) - getRetirePoolTxCert _ = Nothing - - lookupRegStakeTxCert = \case - RegTxCert c -> Just c - _ -> Nothing - lookupUnRegStakeTxCert = \case - UnRegTxCert c -> Just c - _ -> Nothing - - getTotalDepositsTxCerts = shelleyTotalDepositsTxCerts - - getTotalRefundsTxCerts pp lookupStakeDeposit _ = shelleyTotalRefundsTxCerts pp lookupStakeDeposit - -instance Crypto c => ShelleyEraTxCert (AlonzoEra c) where - {-# SPECIALIZE instance ShelleyEraTxCert (AlonzoEra StandardCrypto) #-} - - mkRegTxCert = ShelleyTxCertDelegCert . ShelleyRegCert - - getRegTxCert (ShelleyTxCertDelegCert (ShelleyRegCert c)) = Just c - getRegTxCert _ = Nothing - - mkUnRegTxCert = ShelleyTxCertDelegCert . ShelleyUnRegCert - - getUnRegTxCert (ShelleyTxCertDelegCert (ShelleyUnRegCert c)) = Just c - getUnRegTxCert _ = Nothing - - mkDelegStakeTxCert c kh = ShelleyTxCertDelegCert $ ShelleyDelegCert c kh - - getDelegStakeTxCert (ShelleyTxCertDelegCert (ShelleyDelegCert c kh)) = Just (c, kh) - getDelegStakeTxCert _ = Nothing - - mkGenesisDelegTxCert = ShelleyTxCertGenesisDeleg - - getGenesisDelegTxCert (ShelleyTxCertGenesisDeleg c) = Just c - getGenesisDelegTxCert _ = Nothing - - mkMirTxCert = ShelleyTxCertMir - - getMirTxCert (ShelleyTxCertMir c) = Just c - getMirTxCert _ = Nothing diff --git a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/TxOut.hs b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/TxOut.hs deleted file mode 100644 index 6e9a0c405df..00000000000 --- a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/TxOut.hs +++ /dev/null @@ -1,514 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} -{-# LANGUAGE ViewPatterns #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Alonzo.TxOut ( - AlonzoEraTxOut (..), - AlonzoTxOut (.., AlonzoTxOut, TxOutCompact, TxOutCompactDH), - -- Constructors are not exported for safety: - Addr28Extra, - DataHash32, - getAdaOnly, - decodeDataHash32, - encodeDataHash32, - encodeAddress28, - decodeAddress28, - viewCompactTxOut, - viewTxOut, - getAlonzoTxOutEitherAddr, - utxoEntrySize, - internAlonzoTxOut, -) -where - -import Cardano.Crypto.Hash -import Cardano.Ledger.Address ( - Addr (..), - CompactAddr, - compactAddr, - decompactAddr, - fromCborBothAddr, - ) -import Cardano.Ledger.Alonzo.Era -import Cardano.Ledger.Alonzo.PParams (AlonzoEraPParams, CoinPerWord (..), ppCoinsPerUTxOWordL) -import Cardano.Ledger.Alonzo.Scripts () -import Cardano.Ledger.BaseTypes ( - Network (..), - StrictMaybe (..), - inject, - strictMaybeToMaybe, - ) -import Cardano.Ledger.Binary ( - DecCBOR (decCBOR), - DecShareCBOR (Share, decShareCBOR), - DecoderError (DecoderErrorCustom), - EncCBOR (encCBOR), - FromCBOR (..), - Interns, - ToCBOR (..), - cborError, - decodeBreakOr, - decodeListLenOrIndef, - encodeListLen, - interns, - ) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Compactible -import Cardano.Ledger.Credential (Credential (..), PaymentCredential, StakeReference (..)) -import Cardano.Ledger.Crypto -import Cardano.Ledger.Keys (KeyHash (..), KeyRole (..)) -import Cardano.Ledger.Plutus.Data (Datum (..), dataHashSize) -import Cardano.Ledger.SafeHash (extractHash, unsafeMakeSafeHash) -import Cardano.Ledger.Shelley.Core -import qualified Cardano.Ledger.Shelley.TxOut as Shelley -import Cardano.Ledger.Val (Val (..)) -import Control.DeepSeq (NFData (..), rwhnf) -import Control.Monad (guard, (<$!>)) -import Data.Aeson (ToJSON (..), object, (.=)) -import qualified Data.Aeson as Aeson (Value (Null, String)) -import Data.Bits -import Data.Maybe (fromMaybe) -import Data.Typeable (Proxy (..), (:~:) (Refl)) -import Data.Word -import GHC.Generics (Generic) -import GHC.Stack (HasCallStack) -import GHC.TypeLits -import Lens.Micro -import NoThunks.Class (InspectHeapNamed (..), NoThunks) - -class (AlonzoEraPParams era, EraTxOut era) => AlonzoEraTxOut era where - dataHashTxOutL :: Lens' (TxOut era) (StrictMaybe (DataHash (EraCrypto era))) - - datumTxOutF :: SimpleGetter (TxOut era) (Datum era) - -data Addr28Extra - = Addr28Extra - {-# UNPACK #-} !Word64 -- Payment Addr - {-# UNPACK #-} !Word64 -- Payment Addr - {-# UNPACK #-} !Word64 -- Payment Addr - {-# UNPACK #-} !Word64 -- Payment Addr (32bits) + ... + 0/1 for Testnet/Mainnet + 0/1 Script/Pubkey - deriving (Eq, Show, Generic, NoThunks) - -data DataHash32 - = DataHash32 - {-# UNPACK #-} !Word64 -- DataHash - {-# UNPACK #-} !Word64 -- DataHash - {-# UNPACK #-} !Word64 -- DataHash - {-# UNPACK #-} !Word64 -- DataHash - deriving (Eq, Show, Generic, NoThunks) - -decodeAddress28 :: - forall c. - HashAlgorithm (ADDRHASH c) => - Credential 'Staking c -> - Addr28Extra -> - Maybe (Addr c) -decodeAddress28 stakeRef (Addr28Extra a b c d) = do - Refl <- sameNat (Proxy @(SizeHash (ADDRHASH c))) (Proxy @28) - let network = if d `testBit` 1 then Mainnet else Testnet - paymentCred = - if d `testBit` 0 - then KeyHashObj (KeyHash addrHash) - else ScriptHashObj (ScriptHash addrHash) - addrHash :: Hash (ADDRHASH c) a - addrHash = - hashFromPackedBytes $ - PackedBytes28 a b c (fromIntegral (d `shiftR` 32)) - pure $! Addr network paymentCred (StakeRefBase stakeRef) -{-# INLINE decodeAddress28 #-} - -data AlonzoTxOut era - = TxOutCompact' - {-# UNPACK #-} !(CompactAddr (EraCrypto era)) - !(CompactForm (Value era)) - | TxOutCompactDH' - {-# UNPACK #-} !(CompactAddr (EraCrypto era)) - !(CompactForm (Value era)) - !(DataHash (EraCrypto era)) - | TxOut_AddrHash28_AdaOnly - !(Credential 'Staking (EraCrypto era)) - {-# UNPACK #-} !Addr28Extra - {-# UNPACK #-} !(CompactForm Coin) -- Ada value - | TxOut_AddrHash28_AdaOnly_DataHash32 - !(Credential 'Staking (EraCrypto era)) - {-# UNPACK #-} !Addr28Extra - {-# UNPACK #-} !(CompactForm Coin) -- Ada value - {-# UNPACK #-} !DataHash32 - -deriving stock instance (Eq (Value era), Compactible (Value era)) => Eq (AlonzoTxOut era) - -deriving instance Generic (AlonzoTxOut era) - --- | Already in NF -instance NFData (AlonzoTxOut era) where - rnf = rwhnf - -addressErrorMsg :: String -addressErrorMsg = "Impossible: Compacted an address of non-standard size" -{-# NOINLINE addressErrorMsg #-} - -decodeDataHash32 :: - forall c. - HashAlgorithm (HASH c) => - DataHash32 -> - Maybe (DataHash c) -decodeDataHash32 (DataHash32 a b c d) = do - Refl <- sameNat (Proxy @(SizeHash (HASH c))) (Proxy @32) - Just $! unsafeMakeSafeHash $ hashFromPackedBytes $ PackedBytes32 a b c d - -viewCompactTxOut :: - (Era era, Val (Value era)) => - AlonzoTxOut era -> - (CompactAddr (EraCrypto era), CompactForm (Value era), StrictMaybe (DataHash (EraCrypto era))) -viewCompactTxOut txOut = case txOut of - TxOutCompact' addr val -> (addr, val, SNothing) - TxOutCompactDH' addr val dh -> (addr, val, SJust dh) - TxOut_AddrHash28_AdaOnly stakeRef addr28Extra adaVal - | Just addr <- decodeAddress28 stakeRef addr28Extra -> - (compactAddr addr, injectCompact adaVal, SNothing) - | otherwise -> error addressErrorMsg - TxOut_AddrHash28_AdaOnly_DataHash32 stakeRef addr28Extra adaVal dataHash32 - | Just addr <- decodeAddress28 stakeRef addr28Extra - , Just dh <- decodeDataHash32 dataHash32 -> - (compactAddr addr, injectCompact adaVal, SJust dh) - | otherwise -> error addressErrorMsg - -viewTxOut :: - (Era era, Val (Value era)) => - AlonzoTxOut era -> - (Addr (EraCrypto era), Value era, StrictMaybe (DataHash (EraCrypto era))) -viewTxOut (TxOutCompact' bs c) = (addr, val, SNothing) - where - addr = decompactAddr bs - val = fromCompact c -viewTxOut (TxOutCompactDH' bs c dh) = (addr, val, SJust dh) - where - addr = decompactAddr bs - val = fromCompact c -viewTxOut (TxOut_AddrHash28_AdaOnly stakeRef addr28Extra adaVal) - | Just addr <- decodeAddress28 stakeRef addr28Extra = - (addr, inject (fromCompact adaVal), SNothing) -viewTxOut (TxOut_AddrHash28_AdaOnly_DataHash32 stakeRef addr28Extra adaVal dataHash32) - | Just addr <- decodeAddress28 stakeRef addr28Extra - , Just dh <- decodeDataHash32 dataHash32 = - (addr, inject (fromCompact adaVal), SJust dh) -viewTxOut TxOut_AddrHash28_AdaOnly {} = error addressErrorMsg -viewTxOut TxOut_AddrHash28_AdaOnly_DataHash32 {} = error addressErrorMsg - -instance (Era era, Val (Value era)) => Show (AlonzoTxOut era) where - show = show . viewTxOut -- FIXME: showing tuple is ugly - -deriving via InspectHeapNamed "AlonzoTxOut" (AlonzoTxOut era) instance NoThunks (AlonzoTxOut era) - -encodeAddress28 :: - forall c. - HashAlgorithm (ADDRHASH c) => - Network -> - PaymentCredential c -> - Maybe (SizeHash (ADDRHASH c) :~: 28, Addr28Extra) -encodeAddress28 network paymentCred = do - let networkBit, payCredTypeBit :: Word64 - networkBit = - case network of - Mainnet -> 0 `setBit` 1 - Testnet -> 0 - payCredTypeBit = - case paymentCred of - KeyHashObj {} -> 0 `setBit` 0 - ScriptHashObj {} -> 0 - encodeAddr :: - Hash (ADDRHASH c) a -> - Maybe (SizeHash (ADDRHASH c) :~: 28, Addr28Extra) - encodeAddr h = do - refl@Refl <- sameNat (Proxy @(SizeHash (ADDRHASH c))) (Proxy @28) - case hashToPackedBytes h of - PackedBytes28 a b c d -> - let d' = (fromIntegral d `shiftL` 32) .|. networkBit .|. payCredTypeBit - in Just (refl, Addr28Extra a b c d') - _ -> Nothing - case paymentCred of - KeyHashObj (KeyHash addrHash) -> encodeAddr addrHash - ScriptHashObj (ScriptHash addrHash) -> encodeAddr addrHash - -encodeDataHash32 :: - forall c. - HashAlgorithm (HASH c) => - DataHash c -> - Maybe (SizeHash (HASH c) :~: 32, DataHash32) -encodeDataHash32 dataHash = do - refl@Refl <- sameNat (Proxy @(SizeHash (HASH c))) (Proxy @32) - case hashToPackedBytes (extractHash dataHash) of - PackedBytes32 a b c d -> Just (refl, DataHash32 a b c d) - _ -> Nothing - -getAdaOnly :: - forall era. - Val (Value era) => - Proxy era -> - Value era -> - Maybe (CompactForm Coin) -getAdaOnly _ v = do - guard $ isAdaOnly v - toCompact $ coin v - -pattern AlonzoTxOut :: - forall era. - (Era era, Val (Value era), HasCallStack) => - Addr (EraCrypto era) -> - Value era -> - StrictMaybe (DataHash (EraCrypto era)) -> - AlonzoTxOut era -pattern AlonzoTxOut addr vl dh <- - (viewTxOut -> (addr, vl, dh)) - where - AlonzoTxOut (Addr network paymentCred stakeRef) vl SNothing - | StakeRefBase stakeCred <- stakeRef - , Just adaCompact <- getAdaOnly (Proxy @era) vl - , Just (Refl, addr28Extra) <- encodeAddress28 network paymentCred = - TxOut_AddrHash28_AdaOnly stakeCred addr28Extra adaCompact - AlonzoTxOut (Addr network paymentCred stakeRef) vl (SJust dh) - | StakeRefBase stakeCred <- stakeRef - , Just adaCompact <- getAdaOnly (Proxy @era) vl - , Just (Refl, addr28Extra) <- encodeAddress28 network paymentCred - , Just (Refl, dataHash32) <- encodeDataHash32 dh = - TxOut_AddrHash28_AdaOnly_DataHash32 stakeCred addr28Extra adaCompact dataHash32 - AlonzoTxOut addr vl mdh = - let v = fromMaybe (error $ "Illegal value in TxOut: " ++ show vl) $ toCompact vl - a = compactAddr addr - in case mdh of - SNothing -> TxOutCompact' a v - SJust dh -> TxOutCompactDH' a v dh - -{-# COMPLETE AlonzoTxOut #-} - -instance Crypto c => EraTxOut (AlonzoEra c) where - {-# SPECIALIZE instance EraTxOut (AlonzoEra StandardCrypto) #-} - - type TxOut (AlonzoEra c) = AlonzoTxOut (AlonzoEra c) - - mkBasicTxOut addr vl = AlonzoTxOut addr vl SNothing - - upgradeTxOut (Shelley.TxOutCompact addr value) = TxOutCompact addr value - - addrEitherTxOutL = - lens - getAlonzoTxOutEitherAddr - ( \txOut eAddr -> - let cVal = getTxOutCompactValue txOut - (_, _, dh) = viewTxOut txOut - in case eAddr of - Left addr -> mkTxOutCompact addr (compactAddr addr) cVal dh - Right cAddr -> mkTxOutCompact (decompactAddr cAddr) cAddr cVal dh - ) - {-# INLINE addrEitherTxOutL #-} - - valueEitherTxOutL = - lens - (Right . getTxOutCompactValue) - ( \txOut eVal -> - case eVal of - Left val -> - let (addr, _, dh) = viewTxOut txOut - in AlonzoTxOut addr val dh - Right cVal -> - let dh = getAlonzoTxOutDataHash txOut - in case getAlonzoTxOutEitherAddr txOut of - Left addr -> mkTxOutCompact addr (compactAddr addr) cVal dh - Right cAddr -> mkTxOutCompact (decompactAddr cAddr) cAddr cVal dh - ) - {-# INLINE valueEitherTxOutL #-} - - getMinCoinTxOut pp txOut = - case pp ^. ppCoinsPerUTxOWordL of - CoinPerWord (Coin cpw) -> Coin $ utxoEntrySize txOut * cpw - -instance - (Era era, Val (Value era)) => - EncCBOR (AlonzoTxOut era) - where - encCBOR (TxOutCompact addr cv) = - encodeListLen 2 - <> encCBOR addr - <> encCBOR cv - encCBOR (TxOutCompactDH addr cv dh) = - encodeListLen 3 - <> encCBOR addr - <> encCBOR cv - <> encCBOR dh - -instance (Era era, Val (Value era)) => DecCBOR (AlonzoTxOut era) where - decCBOR = do - lenOrIndef <- decodeListLenOrIndef - case lenOrIndef of - Nothing -> do - (a, ca) <- fromCborBothAddr - cv <- decCBOR - decodeBreakOr >>= \case - True -> pure $ mkTxOutCompact a ca cv SNothing - False -> do - dh <- decCBOR - decodeBreakOr >>= \case - True -> pure $ mkTxOutCompact a ca cv (SJust dh) - False -> cborError $ DecoderErrorCustom "txout" "Excess terms in txout" - Just 2 -> do - (a, ca) <- fromCborBothAddr - cv <- decCBOR - pure $ mkTxOutCompact a ca cv SNothing - Just 3 -> do - (a, ca) <- fromCborBothAddr - cv <- decCBOR - mkTxOutCompact a ca cv . SJust <$> decCBOR - Just _ -> cborError $ DecoderErrorCustom "txout" "wrong number of terms in txout" - {-# INLINEABLE decCBOR #-} - -instance (Era era, Val (Value era)) => DecShareCBOR (AlonzoTxOut era) where - type Share (AlonzoTxOut era) = Interns (Credential 'Staking (EraCrypto era)) - decShareCBOR credsInterns = do - internAlonzoTxOut (interns credsInterns) <$!> decCBOR - {-# INLINEABLE decShareCBOR #-} - -internAlonzoTxOut :: - (Credential 'Staking (EraCrypto era) -> Credential 'Staking (EraCrypto era)) -> - AlonzoTxOut era -> - AlonzoTxOut era -internAlonzoTxOut internCred = \case - TxOut_AddrHash28_AdaOnly cred addr28Extra ada -> - TxOut_AddrHash28_AdaOnly (internCred cred) addr28Extra ada - TxOut_AddrHash28_AdaOnly_DataHash32 cred addr28Extra ada dataHash32 -> - TxOut_AddrHash28_AdaOnly_DataHash32 (internCred cred) addr28Extra ada dataHash32 - txOut -> txOut -{-# INLINE internAlonzoTxOut #-} - -instance (Era era, Val (Value era)) => ToCBOR (AlonzoTxOut era) where - toCBOR = toEraCBOR @era - {-# INLINE toCBOR #-} - -instance (Era era, Val (Value era)) => FromCBOR (AlonzoTxOut era) where - fromCBOR = fromEraCBOR @era - {-# INLINE fromCBOR #-} - -instance (Era era, Val (Value era)) => ToJSON (AlonzoTxOut era) where - toJSON (AlonzoTxOut addr v dataHash) = - object - [ "address" .= toJSON addr - , "value" .= toJSON v - , "datahash" .= case strictMaybeToMaybe dataHash of - Nothing -> Aeson.Null - Just dHash -> - Aeson.String . hashToTextAsHex $ - extractHash dHash - ] - -pattern TxOutCompact :: - (Era era, Val (Value era), HasCallStack) => - CompactAddr (EraCrypto era) -> - CompactForm (Value era) -> - AlonzoTxOut era -pattern TxOutCompact addr vl <- - (viewCompactTxOut -> (addr, vl, SNothing)) - where - TxOutCompact cAddr cVal = mkTxOutCompact (decompactAddr cAddr) cAddr cVal SNothing - -pattern TxOutCompactDH :: - (Era era, Val (Value era), HasCallStack) => - CompactAddr (EraCrypto era) -> - CompactForm (Value era) -> - DataHash (EraCrypto era) -> - AlonzoTxOut era -pattern TxOutCompactDH addr vl dh <- - (viewCompactTxOut -> (addr, vl, SJust dh)) - where - TxOutCompactDH cAddr cVal dh = mkTxOutCompact (decompactAddr cAddr) cAddr cVal (SJust dh) - -{-# COMPLETE TxOutCompact, TxOutCompactDH #-} - -mkTxOutCompact :: - (Era era, HasCallStack, Val (Value era)) => - Addr (EraCrypto era) -> - CompactAddr (EraCrypto era) -> - CompactForm (Value era) -> - StrictMaybe (DataHash (EraCrypto era)) -> - AlonzoTxOut era -mkTxOutCompact addr cAddr cVal mdh - | isAdaOnlyCompact cVal = AlonzoTxOut addr (fromCompact cVal) mdh - | SJust dh <- mdh = TxOutCompactDH' cAddr cVal dh - | otherwise = TxOutCompact' cAddr cVal - -getAlonzoTxOutDataHash :: - forall era. - (HasCallStack, HashAlgorithm (HASH (EraCrypto era))) => - AlonzoTxOut era -> - StrictMaybe (DataHash (EraCrypto era)) -getAlonzoTxOutDataHash = \case - TxOutCompactDH' _ _ dh -> SJust dh - TxOut_AddrHash28_AdaOnly_DataHash32 _ _ _ dh -> - case decodeDataHash32 dh of - Nothing -> error $ "Impossible: Compacted a DataHash of non-standard size: " ++ show dh - Just dataHash -> SJust dataHash - _ -> SNothing - -getAlonzoTxOutEitherAddr :: - HashAlgorithm (ADDRHASH (EraCrypto era)) => - AlonzoTxOut era -> - Either (Addr (EraCrypto era)) (CompactAddr (EraCrypto era)) -getAlonzoTxOutEitherAddr = \case - TxOutCompact' cAddr _ -> Right cAddr - TxOutCompactDH' cAddr _ _ -> Right cAddr - TxOut_AddrHash28_AdaOnly stakeRef addr28Extra _ - | Just addr <- decodeAddress28 stakeRef addr28Extra -> Left addr - | otherwise -> error addressErrorMsg - TxOut_AddrHash28_AdaOnly_DataHash32 stakeRef addr28Extra _ _ - | Just addr <- decodeAddress28 stakeRef addr28Extra -> Left addr - | otherwise -> error addressErrorMsg - --- | Compute an estimate of the size of storing one UTxO entry. --- This function implements the UTxO entry size estimate done by scaledMinDeposit in the ShelleyMA era -utxoEntrySize :: AlonzoEraTxOut era => TxOut era -> Integer -utxoEntrySize txOut = utxoEntrySizeWithoutVal + size v + dataHashSize dh - where - v = txOut ^. valueTxOutL - dh = txOut ^. dataHashTxOutL - -- lengths obtained from tracing on HeapWords of inputs and outputs - -- obtained experimentally, and number used here - -- units are Word64s - - -- size of UTxO entry excluding the Value part - utxoEntrySizeWithoutVal :: Integer - utxoEntrySizeWithoutVal = 27 -- 6 + txoutLenNoVal [14] + txinLen [7] - -instance Crypto c => AlonzoEraTxOut (AlonzoEra c) where - {-# SPECIALIZE instance AlonzoEraTxOut (AlonzoEra StandardCrypto) #-} - - dataHashTxOutL = - lens getAlonzoTxOutDataHash (\(AlonzoTxOut addr cv _) dh -> AlonzoTxOut addr cv dh) - {-# INLINEABLE dataHashTxOutL #-} - - datumTxOutF = to $ \txOut -> - case getAlonzoTxOutDataHash txOut of - SNothing -> NoDatum - SJust dh -> DatumHash dh - {-# INLINEABLE datumTxOutF #-} - -getTxOutCompactValue :: EraTxOut era => AlonzoTxOut era -> CompactForm (Value era) -getTxOutCompactValue = - \case - TxOutCompact' _ cv -> cv - TxOutCompactDH' _ cv _ -> cv - TxOut_AddrHash28_AdaOnly _ _ cc -> injectCompact cc - TxOut_AddrHash28_AdaOnly_DataHash32 _ _ cc _ -> injectCompact cc diff --git a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/TxSeq.hs b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/TxSeq.hs deleted file mode 100644 index d0ab86e57df..00000000000 --- a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/TxSeq.hs +++ /dev/null @@ -1,275 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE ViewPatterns #-} -{-# OPTIONS_GHC -Wno-orphans #-} - --- | TxSeq. This is effectively the block body, which consists of a sequence of --- transactions with segregated witness and metadata information. -module Cardano.Ledger.Alonzo.TxSeq ( - AlonzoTxSeq (AlonzoTxSeq, txSeqTxns), - TxSeq, - hashTxSeq, - hashAlonzoTxSeq, -) -where - -import qualified Cardano.Crypto.Hash as Hash -import Cardano.Ledger.Alonzo.Era -import Cardano.Ledger.Alonzo.Tx (AlonzoEraTx (..), IsValid (..), alonzoSegwitTx) -import Cardano.Ledger.Binary ( - Annotator, - DecCBOR (..), - EncCBORGroup (..), - encCBOR, - encodeFoldableEncoder, - encodeFoldableMapEncoder, - encodePreEncoded, - encodedSizeExpr, - serialize, - withSlice, - ) -import Cardano.Ledger.Core hiding (TxSeq, hashTxSeq) -import qualified Cardano.Ledger.Core as Core -import Cardano.Ledger.Crypto -import Cardano.Ledger.Keys (Hash) -import Cardano.Ledger.SafeHash (SafeToHash, originalBytes) -import Cardano.Ledger.Shelley.BlockChain (constructMetadata) -import Control.Monad (unless) -import Data.ByteString (ByteString) -import Data.ByteString.Builder (shortByteString, toLazyByteString) -import qualified Data.ByteString.Lazy as BSL -import Data.Coerce (coerce) -import qualified Data.Map.Strict as Map -import Data.Maybe.Strict (strictMaybeToMaybe) -import Data.Proxy (Proxy (..)) -import qualified Data.Sequence as Seq -import Data.Sequence.Strict (StrictSeq) -import qualified Data.Sequence.Strict as StrictSeq -import Data.Typeable (Typeable) -import GHC.Generics (Generic) -import Lens.Micro -import Lens.Micro.Extras (view) -import NoThunks.Class (AllowThunksIn (..), NoThunks) - --- ================================================= - --- $TxSeq --- --- * TxSeq --- --- TxSeq provides an alternate way of formatting transactions in a block, in --- order to support segregated witnessing. - -data AlonzoTxSeq era = AlonzoTxSeqRaw - { txSeqTxns :: !(StrictSeq (Tx era)) - , txSeqBodyBytes :: BSL.ByteString - -- ^ Bytes encoding @Seq ('AlonzoTxBody' era)@ - , txSeqWitsBytes :: BSL.ByteString - -- ^ Bytes encoding @Seq ('TxWitness' era)@ - , txSeqMetadataBytes :: BSL.ByteString - -- ^ Bytes encoding a @Map Int ('AuxiliaryData')@. Missing indices have - -- 'SNothing' for metadata - , txSeqIsValidBytes :: BSL.ByteString - -- ^ Bytes representing a set of integers. These are the indices of - -- transactions with 'isValid' == False. - } - deriving (Generic) - -instance Crypto c => EraSegWits (AlonzoEra c) where - type TxSeq (AlonzoEra c) = AlonzoTxSeq (AlonzoEra c) - fromTxSeq = txSeqTxns - toTxSeq = AlonzoTxSeq - hashTxSeq = hashAlonzoTxSeq - numSegComponents = 4 - -pattern AlonzoTxSeq :: - forall era. - ( AlonzoEraTx era - , SafeToHash (TxWits era) - ) => - StrictSeq (Tx era) -> - AlonzoTxSeq era -pattern AlonzoTxSeq xs <- - AlonzoTxSeqRaw xs _ _ _ _ - where - AlonzoTxSeq txns = - let version = eraProtVerLow @era - serializeFoldablePreEncoded x = - serialize version $ - encodeFoldableEncoder encodePreEncoded x - metaChunk index m = encodeIndexed <$> strictMaybeToMaybe m - where - encodeIndexed metadata = encCBOR index <> encodePreEncoded metadata - in AlonzoTxSeqRaw - { txSeqTxns = txns - , txSeqBodyBytes = - serializeFoldablePreEncoded $ originalBytes . view bodyTxL <$> txns - , txSeqWitsBytes = - serializeFoldablePreEncoded $ originalBytes . view witsTxL <$> txns - , txSeqMetadataBytes = - serialize version . encodeFoldableMapEncoder metaChunk $ - fmap originalBytes . view auxDataTxL <$> txns - , txSeqIsValidBytes = - serialize version $ encCBOR $ nonValidatingIndices txns - } - -{-# COMPLETE AlonzoTxSeq #-} - -type TxSeq era = AlonzoTxSeq era - -{-# DEPRECATED TxSeq "Use `AlonzoTxSeq` instead" #-} - -deriving via - AllowThunksIn - '[ "txSeqBodyBytes" - , "txSeqWitsBytes" - , "txSeqMetadataBytes" - , "txSeqIsValidBytes" - ] - (TxSeq era) - instance - (Typeable era, NoThunks (Tx era)) => NoThunks (TxSeq era) - -deriving stock instance Show (Tx era) => Show (TxSeq era) - -deriving stock instance Eq (Tx era) => Eq (TxSeq era) - --------------------------------------------------------------------------------- --- Serialisation and hashing --------------------------------------------------------------------------------- - -instance Era era => EncCBORGroup (TxSeq era) where - encCBORGroup (AlonzoTxSeqRaw _ bodyBytes witsBytes metadataBytes invalidBytes) = - encodePreEncoded $ - BSL.toStrict $ - bodyBytes <> witsBytes <> metadataBytes <> invalidBytes - encodedGroupSizeExpr size _proxy = - encodedSizeExpr size (Proxy :: Proxy ByteString) - + encodedSizeExpr size (Proxy :: Proxy ByteString) - + encodedSizeExpr size (Proxy :: Proxy ByteString) - + encodedSizeExpr size (Proxy :: Proxy ByteString) - listLen _ = 4 - listLenBound _ = 4 - -hashTxSeq :: - forall era. - Era era => - AlonzoTxSeq era -> - Hash (EraCrypto era) EraIndependentBlockBody -hashTxSeq = hashAlonzoTxSeq -{-# DEPRECATED hashTxSeq "Use `hashAlonzoTxSeq` instead" #-} - --- | Hash a given block body -hashAlonzoTxSeq :: - forall era. - Era era => - AlonzoTxSeq era -> - Hash (EraCrypto era) EraIndependentBlockBody -hashAlonzoTxSeq (AlonzoTxSeqRaw _ bodies ws md vs) = - coerce $ - hashStrict $ - BSL.toStrict $ - toLazyByteString $ - mconcat - [ hashPart bodies - , hashPart ws - , hashPart md - , hashPart vs - ] - where - hashStrict :: ByteString -> Hash (EraCrypto era) ByteString - hashStrict = Hash.hashWith id - hashPart = shortByteString . Hash.hashToBytesShort . hashStrict . BSL.toStrict - -instance AlonzoEraTx era => DecCBOR (Annotator (TxSeq era)) where - decCBOR = do - (bodies, bodiesAnn) <- withSlice decCBOR - (ws, witsAnn) <- withSlice decCBOR - let b = length bodies - inRange x = (0 <= x) && (x <= (b - 1)) - w = length ws - (auxData, auxDataAnn) <- withSlice $ - do - m <- decCBOR - unless - (all inRange (Map.keysSet m)) - ( fail - ( "Some Auxiliarydata index is not in the range: 0 .. " - ++ show (b - 1) - ) - ) - pure (constructMetadata b m) - (isValIdxs, isValAnn) <- withSlice decCBOR - let vs = alignedValidFlags b isValIdxs - unless - (b == w) - ( fail $ - "different number of transaction bodies (" - <> show b - <> ") and witness sets (" - <> show w - <> ")" - ) - unless - (all inRange isValIdxs) - ( fail - ( "Some IsValid index is not in the range: 0 .. " - ++ show (b - 1) - ++ ", " - ++ show isValIdxs - ) - ) - - let txns = - sequenceA $ - StrictSeq.forceToStrict $ - Seq.zipWith4 alonzoSegwitTx bodies ws vs auxData - pure $ - AlonzoTxSeqRaw - <$> txns - <*> bodiesAnn - <*> witsAnn - <*> auxDataAnn - <*> isValAnn - --------------------------------------------------------------------------------- --- Internal utility functions --------------------------------------------------------------------------------- - --- | Given a sequence of transactions, return the indices of those which do not --- validate. We store the indices of the non-validating transactions because we --- expect this to be a much smaller set than the validating transactions. -nonValidatingIndices :: AlonzoEraTx era => StrictSeq (Tx era) -> [Int] -nonValidatingIndices (StrictSeq.fromStrict -> xs) = - Seq.foldrWithIndex - ( \idx tx acc -> - if tx ^. isValidTxL == IsValid False - then idx : acc - else acc - ) - [] - xs - --- | Given the number of transactions, and the set of indices for which these --- transactions do not validate, create an aligned sequence of `IsValid` --- flags. --- --- This function operates much as the inverse of 'nonValidatingIndices'. -alignedValidFlags :: Int -> [Int] -> Seq.Seq IsValid -alignedValidFlags = alignedValidFlags' (-1) - where - alignedValidFlags' _ n [] = Seq.replicate n $ IsValid True - alignedValidFlags' prev n (x : xs) = - Seq.replicate (x - prev - 1) (IsValid True) - Seq.>< IsValid False - Seq.<| alignedValidFlags' x (n - (x - prev)) xs diff --git a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/TxWits.hs b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/TxWits.hs deleted file mode 100644 index 81b799d1346..00000000000 --- a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/TxWits.hs +++ /dev/null @@ -1,744 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE StrictData #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} -{-# LANGUAGE ViewPatterns #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Alonzo.TxWits ( - Redeemers (Redeemers), - RedeemersRaw, - unRedeemers, - nullRedeemers, - lookupRedeemer, - upgradeRedeemers, - TxDats (TxDats, TxDats'), - TxDatsRaw, - upgradeTxDats, - AlonzoTxWits ( - AlonzoTxWits, - txwitsVKey, - txwitsBoot, - txscripts, - txdats, - txrdmrs, - AlonzoTxWits', - txwitsVKey', - txwitsBoot', - txscripts', - txdats', - txrdmrs' - ), - AlonzoTxWitsRaw, - addrAlonzoTxWitsL, - bootAddrAlonzoTxWitsL, - scriptAlonzoTxWitsL, - datsAlonzoTxWitsL, - rdmrsAlonzoTxWitsL, - AlonzoEraTxWits (..), - hashDataTxWitsL, - unTxDats, - nullDats, - alonzoEqTxWitsRaw, -) -where - -import Cardano.Crypto.DSIGN.Class (SigDSIGN, VerKeyDSIGN) -import Cardano.Crypto.Hash.Class (HashAlgorithm) -import Cardano.Ledger.Alonzo.Era (AlonzoEra) -import Cardano.Ledger.Alonzo.Scripts ( - AlonzoEraScript (..), - AsIx (..), - decodePlutusScript, - fromPlutusScript, - toPlutusSLanguage, - ) -import Cardano.Ledger.Binary ( - Annotator, - DecCBOR (..), - DecCBORGroup (..), - Decoder, - EncCBOR (..), - EncCBORGroup (..), - Encoding, - ToCBOR (..), - TokenType (..), - allowTag, - decodeList, - decodeListLenOrIndef, - decodeListLikeWithCount, - decodeMapLenOrIndef, - decodeMapLikeEnforceNoDuplicates, - decodeNonEmptyList, - encodeFoldableEncoder, - encodeListLen, - encodeTag, - ifDecoderVersionAtLeast, - ifEncodingVersionAtLeast, - natVersion, - peekTokenType, - setTag, - ) -import Cardano.Ledger.Binary.Coders -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto (Crypto (DSIGN, HASH), StandardCrypto) -import Cardano.Ledger.Keys (KeyRole (Witness), WitVKey) -import Cardano.Ledger.Keys.Bootstrap (BootstrapWitness) -import Cardano.Ledger.MemoBytes ( - EqRaw (..), - Mem, - MemoBytes, - Memoized (..), - eqRawType, - getMemoRawType, - lensMemoRawType, - mkMemoized, - ) -import Cardano.Ledger.Plutus.Data (Data, hashData, upgradeData) -import Cardano.Ledger.Plutus.ExUnits (ExUnits (..)) -import Cardano.Ledger.Plutus.Language ( - Language (..), - Plutus (..), - PlutusLanguage, - SLanguage (..), - plutusBinary, - plutusLanguage, - ) -import Cardano.Ledger.SafeHash (SafeToHash (..)) -import Cardano.Ledger.Shelley.TxWits ( - ShelleyTxWits (..), - mapTraverseableDecoderA, - shelleyEqTxWitsRaw, - ) -import Control.DeepSeq (NFData) -import Control.Monad (when, (>=>)) -import Data.Bifunctor (Bifunctor (first)) -import qualified Data.List.NonEmpty as NE -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import qualified Data.MapExtras as Map (fromElems) -import Data.Maybe (mapMaybe) -import Data.Proxy (Proxy (..)) -import Data.Set (Set) -import qualified Data.Set as Set -import Data.Typeable (Typeable) -import GHC.Generics (Generic) -import Lens.Micro -import NoThunks.Class (NoThunks) - --- ========================================== - -newtype RedeemersRaw era = RedeemersRaw - { unRedeemersRaw :: Map (PlutusPurpose AsIx era) (Data era, ExUnits) - } - deriving (Generic) - -deriving newtype instance AlonzoEraScript era => Eq (RedeemersRaw era) -deriving newtype instance AlonzoEraScript era => NFData (RedeemersRaw era) -deriving newtype instance AlonzoEraScript era => NoThunks (RedeemersRaw era) -deriving newtype instance AlonzoEraScript era => Show (RedeemersRaw era) - -instance AlonzoEraScript era => EncCBOR (RedeemersRaw era) where - encCBOR (RedeemersRaw rs) = - ifEncodingVersionAtLeast - (natVersion @9) - (encCBOR rs) - (encodeFoldableEncoder keyValueEncoder $ Map.toAscList rs) - where - keyValueEncoder (ptr, (dats, exs)) = - encodeListLen (listLen ptr + 2) - <> encCBORGroup ptr - <> encCBOR dats - <> encCBOR exs - -instance Memoized Redeemers where - type RawType Redeemers = RedeemersRaw - --- | Note that 'Redeemers' are based on 'MemoBytes' since we must preserve --- the original bytes for the 'Cardano.Ledger.Alonzo.Tx.ScriptIntegrity'. --- Since the 'Redeemers' exist outside of the transaction body, --- this is how we ensure that they are not manipulated. -newtype Redeemers era = RedeemersConstr (MemoBytes RedeemersRaw era) - deriving newtype (Generic, ToCBOR, SafeToHash, Typeable) - -deriving newtype instance AlonzoEraScript era => Eq (Redeemers era) -deriving newtype instance AlonzoEraScript era => NFData (Redeemers era) -deriving newtype instance AlonzoEraScript era => NoThunks (Redeemers era) -deriving instance AlonzoEraScript era => Show (Redeemers era) - -instance AlonzoEraScript era => Semigroup (Redeemers era) where - Redeemers x <> Redeemers y = Redeemers $ x <> y - -instance AlonzoEraScript era => Monoid (Redeemers era) where - mempty = Redeemers mempty - --- ===================================================== --- Pattern for Redeemers - -pattern Redeemers :: - forall era. - AlonzoEraScript era => - Map (PlutusPurpose AsIx era) (Data era, ExUnits) -> - Redeemers era -pattern Redeemers rs <- - (getMemoRawType -> RedeemersRaw rs) - where - Redeemers rs' = mkMemoized $ RedeemersRaw rs' - -{-# COMPLETE Redeemers #-} - -unRedeemers :: Redeemers era -> Map (PlutusPurpose AsIx era) (Data era, ExUnits) -unRedeemers = unRedeemersRaw . getMemoRawType - -nullRedeemers :: Redeemers era -> Bool -nullRedeemers = Map.null . unRedeemers - -emptyRedeemers :: AlonzoEraScript era => Redeemers era -emptyRedeemers = Redeemers mempty - -lookupRedeemer :: - Ord (PlutusPurpose AsIx era) => - PlutusPurpose AsIx era -> - Redeemers era -> - Maybe (Data era, ExUnits) -lookupRedeemer key = Map.lookup key . unRedeemers - --- | Upgrade redeemers from one era to another. The underlying data structure --- will remain identical, but the memoised serialisation may change to reflect --- the versioned serialisation of the new era. -upgradeRedeemers :: - forall era. - (AlonzoEraScript (PreviousEra era), AlonzoEraScript era) => - Redeemers (PreviousEra era) -> - Redeemers era -upgradeRedeemers = - Redeemers - . Map.mapKeys upgradePlutusPurposeAsIx - . Map.map (first upgradeData) - . unRedeemers - --- ==================================================================== --- In the Spec, AlonzoTxWits has 4 logical fields. Here in the implementation --- we make two physical modifications. --- 1) The witsVKey field of AlonzoTxWits is specified as a (Map VKey Signature) --- for efficiency this is stored as a (Set WitVKey) where WitVKey is --- logically a triple (VKey,Signature,VKeyHash). --- 2) We add a 5th field _witsBoot to be backwards compatible with --- earlier Eras: Byron, Mary, Allegra --- So logically things look like this --- data AlonzoTxWits = AlonzoTxWits --- (Set (WitVKey 'Witness (Crypto era))) --- (Set (BootstrapWitness (Crypto era))) --- (Map (ScriptHash (Crypto era)) (Script era)) --- (TxDats era) --- (Map RdmrPtr (Data era, ExUnits)) - --- | Internal 'AlonzoTxWits' type, lacking serialised bytes. -data AlonzoTxWitsRaw era = AlonzoTxWitsRaw - { atwrAddrTxWits :: !(Set (WitVKey 'Witness (EraCrypto era))) - , atwrBootAddrTxWits :: !(Set (BootstrapWitness (EraCrypto era))) - , atwrScriptTxWits :: !(Map (ScriptHash (EraCrypto era)) (Script era)) - , atwrDatsTxWits :: !(TxDats era) - , atwrRdmrsTxWits :: !(Redeemers era) - } - deriving (Generic) - -instance - ( Era era - , NFData (Script era) - , NFData (TxDats era) - , NFData (Redeemers era) - , NFData (SigDSIGN (DSIGN (EraCrypto era))) - , NFData (VerKeyDSIGN (DSIGN (EraCrypto era))) - ) => - NFData (AlonzoTxWitsRaw era) - -newtype AlonzoTxWits era = TxWitnessConstr (MemoBytes AlonzoTxWitsRaw era) - deriving newtype (SafeToHash, ToCBOR) - deriving (Generic) - -instance Memoized AlonzoTxWits where - type RawType AlonzoTxWits = AlonzoTxWitsRaw - -instance AlonzoEraScript era => Semigroup (AlonzoTxWits era) where - (<>) x y | isEmptyTxWitness x = y - (<>) x y | isEmptyTxWitness y = x - (<>) - (getMemoRawType -> AlonzoTxWitsRaw a b c d (Redeemers e)) - (getMemoRawType -> AlonzoTxWitsRaw u v w x (Redeemers y)) = - AlonzoTxWits (a <> u) (b <> v) (c <> w) (d <> x) (Redeemers (e <> y)) - -instance AlonzoEraScript era => Monoid (AlonzoTxWits era) where - mempty = AlonzoTxWits mempty mempty mempty mempty (Redeemers mempty) - -deriving instance - ( Era era - , NFData (Script era) - , NFData (TxDats era) - , NFData (Redeemers era) - , NFData (SigDSIGN (DSIGN (EraCrypto era))) - , NFData (VerKeyDSIGN (DSIGN (EraCrypto era))) - ) => - NFData (AlonzoTxWits era) - -isEmptyTxWitness :: AlonzoEraScript era => AlonzoTxWits era -> Bool -isEmptyTxWitness (getMemoRawType -> AlonzoTxWitsRaw a b c d (Redeemers e)) = - Set.null a && Set.null b && Map.null c && nullDats d && Map.null e - --- ===================================================== -newtype TxDatsRaw era = TxDatsRaw {unTxDatsRaw :: Map (DataHash (EraCrypto era)) (Data era)} - deriving (Generic, Typeable, Eq) - deriving newtype (NoThunks, NFData) - -deriving instance HashAlgorithm (HASH (EraCrypto era)) => Show (TxDatsRaw era) - -instance (Typeable era, EncCBOR (Data era)) => EncCBOR (TxDatsRaw era) where - encCBOR = encodeWithSetTag . Map.elems . unTxDatsRaw - -pattern TxDats' :: Map (DataHash (EraCrypto era)) (Data era) -> TxDats era -pattern TxDats' m <- (getMemoRawType -> TxDatsRaw m) - -{-# COMPLETE TxDats' #-} - -pattern TxDats :: Era era => Map (DataHash (EraCrypto era)) (Data era) -> TxDats era -pattern TxDats m <- (getMemoRawType -> TxDatsRaw m) - where - TxDats m = mkMemoized (TxDatsRaw m) - -{-# COMPLETE TxDats #-} - -unTxDats :: TxDats era -> Map (DataHash (EraCrypto era)) (Data era) -unTxDats (TxDats' m) = m - -nullDats :: TxDats era -> Bool -nullDats (TxDats' d) = Map.null d - -instance Era era => DecCBOR (Annotator (TxDatsRaw era)) where - decCBOR = - ifDecoderVersionAtLeast - (natVersion @9) - ( allowTag setTag - >> mapTraverseableDecoderA - (decodeNonEmptyList decCBOR) - (TxDatsRaw . Map.fromElems hashData . NE.toList) - ) - (mapTraverseableDecoderA (decodeList decCBOR) (TxDatsRaw . Map.fromElems hashData)) - {-# INLINE decCBOR #-} - --- | Note that 'TxDats' are based on 'MemoBytes' since we must preserve --- the original bytes for the 'Cardano.Ledger.Alonzo.Tx.ScriptIntegrity'. --- Since the 'TxDats' exist outside of the transaction body, --- this is how we ensure that they are not manipulated. -newtype TxDats era = TxDatsConstr (MemoBytes TxDatsRaw era) - deriving newtype (SafeToHash, ToCBOR, Eq, NoThunks, NFData) - deriving (Generic) - -instance Memoized TxDats where - type RawType TxDats = TxDatsRaw - -deriving instance HashAlgorithm (HASH (EraCrypto era)) => Show (TxDats era) - -instance Era era => Semigroup (TxDats era) where - (TxDats m) <> (TxDats m') = TxDats (m <> m') - -instance Era era => Monoid (TxDats era) where - mempty = TxDats mempty - --- | Encodes memoized bytes created upon construction. -instance Era era => EncCBOR (TxDats era) - -deriving via - (Mem TxDatsRaw era) - instance - Era era => DecCBOR (Annotator (TxDats era)) - --- | Upgrade 'TxDats' from one era to another. The underlying data structure --- will remain identical, but the memoised serialisation may change to reflect --- the versioned serialisation of the new era. -upgradeTxDats :: - (Era era1, Era era2, EraCrypto era1 ~ EraCrypto era2) => - TxDats era1 -> - TxDats era2 -upgradeTxDats (TxDats datMap) = TxDats $ fmap upgradeData datMap - --- ===================================================== --- AlonzoTxWits instances - -deriving stock instance AlonzoEraScript era => Eq (AlonzoTxWitsRaw era) - -deriving stock instance AlonzoEraScript era => Show (AlonzoTxWitsRaw era) - -instance AlonzoEraScript era => NoThunks (AlonzoTxWitsRaw era) - -deriving newtype instance AlonzoEraScript era => Eq (AlonzoTxWits era) - -deriving newtype instance AlonzoEraScript era => Show (AlonzoTxWits era) - -deriving newtype instance AlonzoEraScript era => NoThunks (AlonzoTxWits era) - --- ===================================================== --- Pattern for AlonzoTxWits - -pattern AlonzoTxWits' :: - Era era => - Set (WitVKey 'Witness (EraCrypto era)) -> - Set (BootstrapWitness (EraCrypto era)) -> - Map (ScriptHash (EraCrypto era)) (Script era) -> - TxDats era -> - Redeemers era -> - AlonzoTxWits era -pattern AlonzoTxWits' {txwitsVKey', txwitsBoot', txscripts', txdats', txrdmrs'} <- - (getMemoRawType -> AlonzoTxWitsRaw txwitsVKey' txwitsBoot' txscripts' txdats' txrdmrs') - -{-# COMPLETE AlonzoTxWits' #-} - -pattern AlonzoTxWits :: - AlonzoEraScript era => - Set (WitVKey 'Witness (EraCrypto era)) -> - Set (BootstrapWitness (EraCrypto era)) -> - Map (ScriptHash (EraCrypto era)) (Script era) -> - TxDats era -> - Redeemers era -> - AlonzoTxWits era -pattern AlonzoTxWits {txwitsVKey, txwitsBoot, txscripts, txdats, txrdmrs} <- - (getMemoRawType -> AlonzoTxWitsRaw txwitsVKey txwitsBoot txscripts txdats txrdmrs) - where - AlonzoTxWits witsVKey' witsBoot' witsScript' witsDat' witsRdmr' = - mkMemoized $ AlonzoTxWitsRaw witsVKey' witsBoot' witsScript' witsDat' witsRdmr' - -{-# COMPLETE AlonzoTxWits #-} - --- ======================================================= --- Accessors --- ======================================================= - -addrAlonzoTxWitsL :: - AlonzoEraScript era => - Lens' (AlonzoTxWits era) (Set (WitVKey 'Witness (EraCrypto era))) -addrAlonzoTxWitsL = - lensMemoRawType atwrAddrTxWits $ \witsRaw addrWits -> witsRaw {atwrAddrTxWits = addrWits} -{-# INLINEABLE addrAlonzoTxWitsL #-} - -bootAddrAlonzoTxWitsL :: - AlonzoEraScript era => - Lens' (AlonzoTxWits era) (Set (BootstrapWitness (EraCrypto era))) -bootAddrAlonzoTxWitsL = - lensMemoRawType atwrBootAddrTxWits $ - \witsRaw bootAddrWits -> witsRaw {atwrBootAddrTxWits = bootAddrWits} -{-# INLINEABLE bootAddrAlonzoTxWitsL #-} - -scriptAlonzoTxWitsL :: - AlonzoEraScript era => - Lens' (AlonzoTxWits era) (Map (ScriptHash (EraCrypto era)) (Script era)) -scriptAlonzoTxWitsL = - lensMemoRawType atwrScriptTxWits $ \witsRaw scriptWits -> witsRaw {atwrScriptTxWits = scriptWits} -{-# INLINEABLE scriptAlonzoTxWitsL #-} - -datsAlonzoTxWitsL :: - AlonzoEraScript era => - Lens' (AlonzoTxWits era) (TxDats era) -datsAlonzoTxWitsL = - lensMemoRawType atwrDatsTxWits $ \witsRaw datsWits -> witsRaw {atwrDatsTxWits = datsWits} -{-# INLINEABLE datsAlonzoTxWitsL #-} - -rdmrsAlonzoTxWitsL :: - AlonzoEraScript era => - Lens' (AlonzoTxWits era) (Redeemers era) -rdmrsAlonzoTxWitsL = - lensMemoRawType atwrRdmrsTxWits $ \witsRaw rdmrsWits -> witsRaw {atwrRdmrsTxWits = rdmrsWits} -{-# INLINEABLE rdmrsAlonzoTxWitsL #-} - -instance (EraScript (AlonzoEra c), Crypto c) => EraTxWits (AlonzoEra c) where - {-# SPECIALIZE instance EraTxWits (AlonzoEra StandardCrypto) #-} - - type TxWits (AlonzoEra c) = AlonzoTxWits (AlonzoEra c) - - mkBasicTxWits = mempty - - addrTxWitsL = addrAlonzoTxWitsL - {-# INLINE addrTxWitsL #-} - - bootAddrTxWitsL = bootAddrAlonzoTxWitsL - {-# INLINE bootAddrTxWitsL #-} - - scriptTxWitsL = scriptAlonzoTxWitsL - {-# INLINE scriptTxWitsL #-} - - upgradeTxWits (ShelleyTxWits {addrWits, scriptWits, bootWits}) = - AlonzoTxWits addrWits bootWits (upgradeScript <$> scriptWits) mempty emptyRedeemers - -class (EraTxWits era, AlonzoEraScript era) => AlonzoEraTxWits era where - datsTxWitsL :: Lens' (TxWits era) (TxDats era) - - rdmrsTxWitsL :: Lens' (TxWits era) (Redeemers era) - -instance (EraScript (AlonzoEra c), Crypto c) => AlonzoEraTxWits (AlonzoEra c) where - {-# SPECIALIZE instance AlonzoEraTxWits (AlonzoEra StandardCrypto) #-} - - datsTxWitsL = datsAlonzoTxWitsL - {-# INLINE datsTxWitsL #-} - - rdmrsTxWitsL = rdmrsAlonzoTxWitsL - {-# INLINE rdmrsTxWitsL #-} - -instance (TxWits era ~ AlonzoTxWits era, AlonzoEraTxWits era) => EqRaw (AlonzoTxWits era) where - eqRaw = alonzoEqTxWitsRaw - --- | This is a convenience Lens that will hash the `Data` when it is being added to the --- `TxWits`. See `datsTxWitsL` for a version that aloows setting `TxDats` instead. -hashDataTxWitsL :: AlonzoEraTxWits era => Lens (TxWits era) (TxWits era) (TxDats era) [Data era] -hashDataTxWitsL = - lens - (\wits -> wits ^. datsTxWitsL) - (\wits ds -> wits & datsTxWitsL .~ TxDats (Map.fromList [(hashData d, d) | d <- ds])) -{-# INLINEABLE hashDataTxWitsL #-} - --------------------------------------------------------------------------------- --- Serialisation --------------------------------------------------------------------------------- - --- | Encodes memoized bytes created upon construction. -instance Era era => EncCBOR (AlonzoTxWits era) - -instance AlonzoEraScript era => EncCBOR (AlonzoTxWitsRaw era) where - encCBOR (AlonzoTxWitsRaw vkeys boots scripts dats rdmrs) = - encode $ - Keyed - ( \a b c d e f g h -> - let ps = toScript @'PlutusV1 d <> toScript @'PlutusV2 e <> toScript @'PlutusV3 f - in AlonzoTxWitsRaw a b (c <> ps) g h - ) - !> Omit null (Key 0 $ To vkeys) - !> Omit null (Key 2 $ To boots) - !> Omit - null - ( Key 1 $ - E - (encodeWithSetTag . mapMaybe getNativeScript . Map.elems) - (Map.filter isNativeScript scripts) - ) - !> Omit null (Key 3 $ encodePlutus SPlutusV1) - !> Omit null (Key 6 $ encodePlutus SPlutusV2) - !> Omit null (Key 7 $ encodePlutus SPlutusV3) - !> Omit nullDats (Key 4 $ To dats) - !> Omit nullRedeemers (Key 5 $ To rdmrs) - where - encodePlutus :: - PlutusLanguage l => - SLanguage l -> - Encode ('Closed 'Dense) (Map.Map (ScriptHash (EraCrypto era)) (Plutus l)) - encodePlutus slang = - E - (encodeWithSetTag . encCBOR . map plutusBinary . Map.elems) - (Map.mapMaybe (toPlutusScript >=> toPlutusSLanguage slang) scripts) - toScript :: - forall l h. PlutusLanguage l => Map.Map h (Plutus l) -> Map.Map h (Script era) - toScript ps = - case traverse (fmap fromPlutusScript . mkPlutusScript) ps of - Nothing -> - error $ - "Impossible: Re-constructing unsupported language: " - ++ show (plutusLanguage (Proxy @l)) - Just plutusScripts -> plutusScripts - -instance AlonzoEraScript era => DecCBOR (Annotator (RedeemersRaw era)) where - decCBOR = do - ifDecoderVersionAtLeast - (natVersion @9) - ( peekTokenType >>= \case - TypeMapLenIndef -> decodeMapRedeemers - TypeMapLen -> decodeMapRedeemers - _ -> decodeListRedeemers - ) - ( mapTraverseableDecoderA - (decodeList decodeAnnElement) - (RedeemersRaw . Map.fromList) - ) - where - decodeRedeemersWith nonEmptyDecoder = - mapTraverseableDecoderA - nonEmptyDecoder - (RedeemersRaw . Map.fromList . NE.toList) - decodeMapRedeemers = decodeRedeemersWith $ do - (_, xs) <- decodeListLikeWithCount decodeMapLenOrIndef (:) $ \_ -> do - ptr <- decCBOR - (annData, exUnits) <- decCBOR - pure $ (\d -> (ptr, (d, exUnits))) <$> annData - case NE.nonEmpty xs of - Nothing -> fail "Expected redeemers map to be non-empty" - Just neList -> pure $ NE.reverse neList - decodeListRedeemers = - decodeRedeemersWith (decodeNonEmptyList decodeAnnElement) - decodeAnnElement :: - forall s. Decoder s (Annotator (PlutusPurpose AsIx era, (Data era, ExUnits))) - decodeAnnElement = do - (rdmrPtr, dat, ex) <- decodeElement - let f x y z = (x, (y, z)) - pure $ f rdmrPtr <$> dat <*> pure ex - {-# INLINE decodeAnnElement #-} - decodeElement :: - forall s. Decoder s (PlutusPurpose AsIx era, Annotator (Data era), ExUnits) - decodeElement = do - decodeRecordNamed - "Redeemer" - (\(rdmrPtr, _, _) -> fromIntegral (listLen rdmrPtr) + 2) - $ (,,) <$> decCBORGroup <*> decCBOR <*> decCBOR - {-# INLINE decodeElement #-} - {-# INLINE decCBOR #-} - --- | Encodes memoized bytes created upon construction. -instance AlonzoEraScript era => EncCBOR (Redeemers era) - -deriving via - (Mem RedeemersRaw era) - instance - AlonzoEraScript era => DecCBOR (Annotator (Redeemers era)) - -instance - ( AlonzoEraScript era - , EncCBOR (Data era) - ) => - DecCBOR (Annotator (AlonzoTxWitsRaw era)) - where - decCBOR = - decode $ - SparseKeyed - "AlonzoTxWits" - (pure emptyTxWitness) - txWitnessField - [] - where - emptyTxWitness = AlonzoTxWitsRaw mempty mempty mempty mempty emptyRedeemers - - txWitnessField :: Word -> Field (Annotator (AlonzoTxWitsRaw era)) - txWitnessField 0 = - fieldAA - (\x wits -> wits {atwrAddrTxWits = x}) - ( D $ - ifDecoderVersionAtLeast - (natVersion @9) - ( allowTag setTag - >> mapTraverseableDecoderA (decodeNonEmptyList decCBOR) (Set.fromList . NE.toList) - ) - (mapTraverseableDecoderA (decodeList decCBOR) Set.fromList) - ) - txWitnessField 1 = - fieldAA - addScripts - (D nativeScriptsDecoder) - txWitnessField 2 = - fieldAA - (\x wits -> wits {atwrBootAddrTxWits = x}) - ( D $ - ifDecoderVersionAtLeast - (natVersion @9) - ( allowTag setTag - >> mapTraverseableDecoderA (decodeNonEmptyList decCBOR) (Set.fromList . NE.toList) - ) - (mapTraverseableDecoderA (decodeList decCBOR) Set.fromList) - ) - txWitnessField 3 = fieldA addScripts (decodePlutus SPlutusV1) - txWitnessField 4 = - fieldAA - (\x wits -> wits {atwrDatsTxWits = x}) - From - txWitnessField 5 = fieldAA (\x wits -> wits {atwrRdmrsTxWits = x}) From - txWitnessField 6 = fieldA addScripts (decodePlutus SPlutusV2) - txWitnessField 7 = fieldA addScripts (decodePlutus SPlutusV3) - txWitnessField n = field (\_ t -> t) (Invalid n) - {-# INLINE txWitnessField #-} - - nativeScriptsDecoder :: Decoder s (Annotator (Map (ScriptHash (EraCrypto era)) (Script era))) - nativeScriptsDecoder = - ifDecoderVersionAtLeast - (natVersion @9) - ( allowTag setTag - >> mapTraverseableDecoderA (decodeNonEmptyList pairDecoder) (Map.fromList . NE.toList) - ) - (mapTraverseableDecoderA (decodeList pairDecoder) Map.fromList) - where - pairDecoder :: Decoder s (Annotator (ScriptHash (EraCrypto era), Script era)) - pairDecoder = fmap (asHashedPair . fromNativeScript) <$> decCBOR - - addScripts :: - Map (ScriptHash (EraCrypto era)) (Script era) -> - AlonzoTxWitsRaw era -> - AlonzoTxWitsRaw era - addScripts scriptWitnesses txWits = - txWits - { atwrScriptTxWits = scriptWitnesses <> atwrScriptTxWits txWits - } - {-# INLINE addScripts #-} - - decodePlutus :: - PlutusLanguage l => - SLanguage l -> - Decode ('Closed 'Dense) (Map (ScriptHash (EraCrypto era)) (Script era)) - decodePlutus slang = - D $ - ifDecoderVersionAtLeast - (natVersion @9) - (scriptDecoderV9 (fromPlutusScript <$> decodePlutusScript slang)) - (scriptDecoder (fromPlutusScript <$> decodePlutusScript slang)) - {-# INLINE decodePlutus #-} - - scriptDecoderV9 :: - Decoder s (Script era) -> - Decoder s (Map (ScriptHash (EraCrypto era)) (Script era)) - scriptDecoderV9 decodeScript = do - allowTag setTag - scriptMap <- decodeMapLikeEnforceNoDuplicates decodeListLenOrIndef $ do - asHashedPair <$> decodeScript - when (Map.null scriptMap) $ fail "Empty list of scripts is not allowed" - pure scriptMap - {-# INLINE scriptDecoderV9 #-} - - scriptDecoder :: - Decoder s (Script era) -> - Decoder s (Map (ScriptHash (EraCrypto era)) (Script era)) - scriptDecoder decodeScript = - fmap Map.fromList $ - decodeList $ - asHashedPair <$> decodeScript - {-# INLINE scriptDecoder #-} - - asHashedPair script = - let !scriptHash = hashScript @era script - in (scriptHash, script) - {-# INLINE asHashedPair #-} - {-# INLINE decCBOR #-} - -deriving via - (Mem AlonzoTxWitsRaw era) - instance - AlonzoEraScript era => DecCBOR (Annotator (AlonzoTxWits era)) - -alonzoEqTxWitsRaw :: AlonzoEraTxWits era => TxWits era -> TxWits era -> Bool -alonzoEqTxWitsRaw txWits1 txWits2 = - shelleyEqTxWitsRaw txWits1 txWits2 - && eqRawType (txWits1 ^. datsTxWitsL) (txWits2 ^. datsTxWitsL) - && eqRawType (txWits1 ^. rdmrsTxWitsL) (txWits2 ^. rdmrsTxWitsL) - -encodeWithSetTag :: EncCBOR a => a -> Encoding -encodeWithSetTag xs = - ifEncodingVersionAtLeast - (natVersion @9) - (encodeTag setTag <> encCBOR xs) - (encCBOR xs) diff --git a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/UTxO.hs b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/UTxO.hs deleted file mode 100644 index 9ed6ed2d85d..00000000000 --- a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/UTxO.hs +++ /dev/null @@ -1,333 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TupleSections #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Alonzo.UTxO ( - AlonzoEraUTxO (..), - getAlonzoSpendingDatum, - getAlonzoSpendingTxIn, - - -- * Scripts needed - AlonzoScriptsNeeded (..), - getAlonzoScriptsNeeded, - getSpendingScriptsNeeded, - getRewardingScriptsNeeded, - getMintingScriptsNeeded, - getAlonzoScriptsHashesNeeded, - zipAsIxItem, - - -- * Datums needed - getInputDataHashesTxBody, - - -- * WitsVKey needed - getAlonzoWitsVKeyNeeded, -) -where - -import Cardano.Ledger.Alonzo.Core -import Cardano.Ledger.Alonzo.Era (AlonzoEra) -import Cardano.Ledger.Alonzo.Scripts (AlonzoPlutusPurpose (..)) -import Cardano.Ledger.Alonzo.Tx (isTwoPhaseScriptAddressFromMap) -import Cardano.Ledger.Alonzo.TxWits (unTxDats) -import Cardano.Ledger.BaseTypes (StrictMaybe (..)) -import Cardano.Ledger.CertState (CertState) -import Cardano.Ledger.Credential (credScriptHash) -import Cardano.Ledger.Crypto -import Cardano.Ledger.Keys (KeyHash, KeyRole (Witness)) -import Cardano.Ledger.Mary.UTxO (getConsumedMaryValue) -import Cardano.Ledger.Mary.Value (PolicyID (..)) -import Cardano.Ledger.Plutus.Data (Data, Datum (..)) -import Cardano.Ledger.Shelley.TxBody (raCredential) -import Cardano.Ledger.Shelley.UTxO ( - getShelleyMinFeeTxUtxo, - getShelleyWitsVKeyNeeded, - shelleyProducedValue, - ) -import Cardano.Ledger.TxIn -import Cardano.Ledger.UTxO ( - EraUTxO (..), - ScriptsProvided (..), - UTxO (..), - getScriptHash, - ) -import Control.SetAlgebra (eval, (◁)) -import Data.Foldable (foldl', toList) -import qualified Data.Map.Strict as Map -import Data.Maybe (catMaybes, fromMaybe) -import qualified Data.Set as Set -import Data.Word (Word32) -import Lens.Micro ((^.)) -import Lens.Micro.Extras (view) - --- | Alonzo era style `ScriptsNeeded` require also a `PlutusPurpose`, not only the `ScriptHash` -newtype AlonzoScriptsNeeded era - = AlonzoScriptsNeeded [(PlutusPurpose AsIxItem era, ScriptHash (EraCrypto era))] - deriving (Monoid, Semigroup) - -deriving instance AlonzoEraScript era => Eq (AlonzoScriptsNeeded era) -deriving instance AlonzoEraScript era => Show (AlonzoScriptsNeeded era) - -instance Crypto c => EraUTxO (AlonzoEra c) where - type ScriptsNeeded (AlonzoEra c) = AlonzoScriptsNeeded (AlonzoEra c) - - getConsumedValue = getConsumedMaryValue - - getProducedValue = shelleyProducedValue - - getScriptsProvided _ tx = ScriptsProvided (tx ^. witsTxL . scriptTxWitsL) - - getScriptsNeeded = getAlonzoScriptsNeeded - - getScriptsHashesNeeded = getAlonzoScriptsHashesNeeded - - getWitsVKeyNeeded = getAlonzoWitsVKeyNeeded - - getMinFeeTxUtxo pp tx _ = getShelleyMinFeeTxUtxo pp tx - -class EraUTxO era => AlonzoEraUTxO era where - -- | Get data hashes for a transaction that are not required. Such datums are optional, - -- but they can be added to the witness set. In a broaded terms datums corresponding to - -- the inputs that might be spent are the required datums and the datums corresponding - -- to the outputs and reference inputs are the supplemental datums. - getSupplementalDataHashes :: - UTxO era -> - TxBody era -> - Set.Set (DataHash (EraCrypto era)) - - -- | Lookup the TxIn from the `Spending` ScriptPurpose and find the datum needed for - -- spending that input. This function will return `Nothing` for all script purposes, - -- except spending, because only spending scripts require an extra datum. - -- - -- This is the same function as in the spec: - -- - -- @ - -- getDatum :: Tx era -> UTxO era -> ScriptPurpose era -> [Data era] - -- @ - getSpendingDatum :: - UTxO era -> - Tx era -> - PlutusPurpose AsItem era -> - Maybe (Data era) - -instance Crypto c => AlonzoEraUTxO (AlonzoEra c) where - getSupplementalDataHashes _ = getAlonzoSupplementalDataHashes - - getSpendingDatum = getAlonzoSpendingDatum - -getAlonzoSupplementalDataHashes :: - (EraTxBody era, AlonzoEraTxOut era) => - TxBody era -> - Set.Set (DataHash (EraCrypto era)) -getAlonzoSupplementalDataHashes txBody = - Set.fromList - [ dh - | txOut <- toList $ txBody ^. outputsTxBodyL - , SJust dh <- [txOut ^. dataHashTxOutL] - ] - --- | Get the Data associated with a ScriptPurpose. Only the Spending ScriptPurpose --- contains Data. Nothing is returned for the other kinds. -getAlonzoSpendingDatum :: - (AlonzoEraTxWits era, AlonzoEraTxOut era, EraTx era) => - UTxO era -> - Tx era -> - PlutusPurpose AsItem era -> - Maybe (Data era) -getAlonzoSpendingDatum (UTxO m) tx sp = do - AsItem txIn <- toSpendingPurpose sp - txOut <- Map.lookup txIn m - SJust hash <- Just $ txOut ^. dataHashTxOutL - Map.lookup hash (unTxDats $ tx ^. witsTxL . datsTxWitsL) - --- | Only the Spending ScriptPurpose contains TxIn -getAlonzoSpendingTxIn :: AlonzoPlutusPurpose AsItem era -> Maybe (TxIn (EraCrypto era)) -getAlonzoSpendingTxIn = \case - AlonzoSpending (AsItem txIn) -> Just txIn - AlonzoMinting _policyId -> Nothing - AlonzoRewarding _rewardAccount -> Nothing - AlonzoCertifying _txCert -> Nothing -{-# DEPRECATED getAlonzoSpendingTxIn "In favor of more general `toSpendingPurpose`" #-} - -getAlonzoScriptsHashesNeeded :: AlonzoScriptsNeeded era -> Set.Set (ScriptHash (EraCrypto era)) -getAlonzoScriptsHashesNeeded (AlonzoScriptsNeeded sn) = Set.fromList (map snd sn) - --- | Compute two sets for all TwoPhase scripts in a Tx. --- --- 1) DataHashes for each Two phase Script in a TxIn that has a DataHash --- 2) TxIns that are TwoPhase scripts, and should have a DataHash but don't. --- --- @{ h | (_ → (a,_,h)) ∈ txins tx ◁ utxo, isNonNativeScriptAddress tx a}@ -getInputDataHashesTxBody :: - (EraTxBody era, AlonzoEraTxOut era, EraScript era) => - UTxO era -> - TxBody era -> - ScriptsProvided era -> - (Set.Set (DataHash (EraCrypto era)), Set.Set (TxIn (EraCrypto era))) -getInputDataHashesTxBody (UTxO mp) txBody (ScriptsProvided scriptsProvided) = - Map.foldlWithKey' accum (Set.empty, Set.empty) spendUTxO - where - spendInputs = txBody ^. inputsTxBodyL - spendUTxO = eval (spendInputs ◁ mp) - accum ans@(!hashSet, !inputSet) txIn txOut = - let addr = txOut ^. addrTxOutL - isTwoPhaseScriptAddress = isTwoPhaseScriptAddressFromMap scriptsProvided addr - in case txOut ^. datumTxOutF of - NoDatum - | isTwoPhaseScriptAddress -> (hashSet, Set.insert txIn inputSet) - DatumHash dataHash - | isTwoPhaseScriptAddress -> (Set.insert dataHash hashSet, inputSet) - -- Though it is somewhat odd to allow non-two-phase-scripts to include a datum, - -- the Alonzo era already set the precedent with datum hashes, and several dapp - -- developers see this as a helpful feature. - _ -> ans - --- | --- Uses of inputs in ‘txscripts’ and ‘neededScripts’ --- There are currently 3 sets of inputs (spending, collateral, reference). A particular TxInput --- can appear in more than one of the sets. Even in all three at the same, but that may not be --- a really useful case. Inputs are where you find scripts with the 'Spending' purpose. --- --- 1) Collateral inputs are only spent if phase two fails. Their corresponding TxOut can only have --- Key (not Script) Pay credentials, so ‘neededScripts’ does not look there. --- 2) Reference inputs are not spent in the current Tx, unless that same input also appears in one --- of the other sets. If that is not the case, their credentials are never needed, so anyone can --- access the inline datums and scripts in their corresponding TxOut, without needing any --- authorizing credentials. So ‘neededScripts’ does not look there. --- 3) Spending inputs are always spent. So their Pay credentials are always needed. --- --- Collect information (purpose and ScriptHash) about all the Credentials that refer to scripts --- that will be needed to run in a TxBody in the Utxow rule. Note there may be credentials that --- cannot be run, so are not collected. In Babbage, reference inputs, fit that description. --- Purposes include --- 1) Spending (payment script credentials, but NOT staking scripts) in the Addr of a TxOut, pointed --- to by some input that needs authorization. Be sure (txBody ^. inputsTxBodyL) gets all such inputs. --- In some Eras there may be multiple sets of inputs, which ones should be included? Currently that --- is only the spending inputs. Because collateral inputs can only have key-locked credentials, --- and reference inputs are never authorized. That might not always be the case. --- 2) Rewarding (Withdrawals), --- 3) Minting (minted field), and --- 4) Certifying (Delegating) scripts. --- --- 'getAlonzoScriptsNeeded' is an aggregation of the needed Credentials referring to --- Scripts used in Utxow rule. The flip side of 'getAlonzoScriptsNeeded' (which collects --- script hashes) is 'txscripts' which finds the actual scripts. We maintain an invariant --- that every script credential refers to some actual script. This is tested in the test --- function 'validateMissingScripts' in the Utxow rule. -getAlonzoScriptsNeeded :: - (MaryEraTxBody era, AlonzoEraScript era) => - UTxO era -> - TxBody era -> - AlonzoScriptsNeeded era -getAlonzoScriptsNeeded utxo txBody = - getSpendingScriptsNeeded utxo txBody - <> getRewardingScriptsNeeded txBody - <> certifyingScriptsNeeded - <> getMintingScriptsNeeded txBody - where - certifyingScriptsNeeded = - AlonzoScriptsNeeded $ - case foldl' addUniqueTxCertPurpose (Map.empty, 0, []) (txBody ^. certsTxBodyL) of - (_, _, certPurposes) -> reverse certPurposes - where - -- We need to do this funny index manipulation here because we've allowed - -- duplicate certificates all the way until Conway. This prevented second - -- occurance of a duplicate certificate in the sequence to be used. In order to - -- preserve this behavior we need to use the index of the first occurrence of a - -- duplicate certificate. - -- - -- The `ix + 1` part is to count the actual index of each element. It is only when - -- we see a duplicate we use the index of the first occurrence of the element, but - -- that should not affect indices of other elements. - -- - -- For example if these are our certificates: - -- cert = [c0, c1, c2, c3, c4, c5] - -- - -- Let's say `c3` is locked by a native script or a key witness, so it does not - -- participate in the script purpose - -- - -- Also, let's say `c1 == c4`. Here is what we should get for the plutus purpose: - -- plutusPurpose = [(0, c0), (1, c1), (2, c2), (1, c4), (5, c5)] - -- - -- The count must continue no matter what, thus the counter `ix + 1`, but - -- whenever we find a duplicate we use the stored `ix'`. - -- - addUniqueTxCertPurpose (!certScriptHashes, !ix, !certPurposes) txCert = - fromMaybe (certScriptHashes, ix + 1, certPurposes) $ do - scriptHash <- getScriptWitnessTxCert txCert - case Map.lookup scriptHash certScriptHashes of - Nothing -> do - let !purpose = CertifyingPurpose (AsIxItem ix txCert) - !certScriptHashes' = Map.insert scriptHash ix certScriptHashes - pure (certScriptHashes', ix + 1, (purpose, scriptHash) : certPurposes) - Just ix' -> do - let !purpose = CertifyingPurpose (AsIxItem ix' txCert) - pure (certScriptHashes, ix + 1, (purpose, scriptHash) : certPurposes) -{-# INLINEABLE getAlonzoScriptsNeeded #-} - -zipAsIxItem :: Foldable f => f it -> (AsIxItem Word32 it -> c) -> [c] -zipAsIxItem xs f = - -- Past experience showed that enumeration for Int is faster than for Word32 - zipWith (\it ix -> f (AsIxItem (fromIntegral @Int @Word32 ix) it)) (toList xs) [0 ..] -{-# INLINE zipAsIxItem #-} - -getSpendingScriptsNeeded :: - (AlonzoEraScript era, EraTxBody era) => - UTxO era -> - TxBody era -> - AlonzoScriptsNeeded era -getSpendingScriptsNeeded (UTxO utxo) txBody = - AlonzoScriptsNeeded $ - catMaybes $ - zipAsIxItem (txBody ^. inputsTxBodyL) $ - \asIxItem@(AsIxItem _ txIn) -> do - addr <- view addrTxOutL <$> Map.lookup txIn utxo - hash <- getScriptHash addr - return (SpendingPurpose asIxItem, hash) -{-# INLINEABLE getSpendingScriptsNeeded #-} - -getRewardingScriptsNeeded :: - (AlonzoEraScript era, EraTxBody era) => - TxBody era -> - AlonzoScriptsNeeded era -getRewardingScriptsNeeded txBody = - AlonzoScriptsNeeded $ - catMaybes $ - zipAsIxItem (Map.keys (unWithdrawals $ txBody ^. withdrawalsTxBodyL)) $ - \asIxItem@(AsIxItem _ rewardAccount) -> - (RewardingPurpose asIxItem,) <$> credScriptHash (raCredential rewardAccount) -{-# INLINEABLE getRewardingScriptsNeeded #-} - -getMintingScriptsNeeded :: - (AlonzoEraScript era, MaryEraTxBody era) => - TxBody era -> - AlonzoScriptsNeeded era -getMintingScriptsNeeded txBody = - AlonzoScriptsNeeded $ - zipAsIxItem (txBody ^. mintedTxBodyF) $ - \asIxItem@(AsIxItem _ (PolicyID scriptHash)) -> (MintingPurpose asIxItem, scriptHash) -{-# INLINEABLE getMintingScriptsNeeded #-} - --- | Just like `getShelleyWitsVKeyNeeded`, but also requires `reqSignerHashesTxBodyL`. -getAlonzoWitsVKeyNeeded :: - forall era. - (EraTx era, AlonzoEraTxBody era, ShelleyEraTxBody era) => - CertState era -> - UTxO era -> - TxBody era -> - Set.Set (KeyHash 'Witness (EraCrypto era)) -getAlonzoWitsVKeyNeeded certState utxo txBody = - getShelleyWitsVKeyNeeded certState utxo txBody - `Set.union` (txBody ^. reqSignerHashesTxBodyL) -{-# INLINEABLE getAlonzoWitsVKeyNeeded #-} diff --git a/eras/alonzo/impl/test/Main.hs b/eras/alonzo/impl/test/Main.hs deleted file mode 100644 index b47824a774f..00000000000 --- a/eras/alonzo/impl/test/Main.hs +++ /dev/null @@ -1,29 +0,0 @@ -{-# LANGUAGE TypeApplications #-} - -module Main where - -import Cardano.Ledger.Alonzo (Alonzo) -import qualified Test.Cardano.Ledger.Alonzo.Binary.CddlSpec as CddlSpec -import qualified Test.Cardano.Ledger.Alonzo.Binary.CostModelsSpec as CostModelsSpec -import qualified Test.Cardano.Ledger.Alonzo.Binary.TxWitsSpec as TxWitsSpec -import qualified Test.Cardano.Ledger.Alonzo.BinarySpec as BinarySpec -import qualified Test.Cardano.Ledger.Alonzo.Imp as AlonzoImp -import Test.Cardano.Ledger.Alonzo.ImpTest () -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Core.JSON (roundTripJsonEraSpec) -import qualified Test.Cardano.Ledger.Shelley.Imp as ShelleyImp - -main :: IO () -main = - ledgerTestMain $ - describe "Alonzo" $ do - BinarySpec.spec - CddlSpec.spec - roundTripJsonEraSpec @Alonzo - describe "Imp" $ do - ShelleyImp.spec @Alonzo - AlonzoImp.spec @Alonzo - describe "CostModels" $ do - CostModelsSpec.spec @Alonzo - describe "TxWits" $ do - TxWitsSpec.spec @Alonzo diff --git a/eras/alonzo/impl/test/Test/Cardano/Ledger/Alonzo/Binary/CddlSpec.hs b/eras/alonzo/impl/test/Test/Cardano/Ledger/Alonzo/Binary/CddlSpec.hs deleted file mode 100644 index 64197d9fe50..00000000000 --- a/eras/alonzo/impl/test/Test/Cardano/Ledger/Alonzo/Binary/CddlSpec.hs +++ /dev/null @@ -1,34 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Alonzo.Binary.CddlSpec (spec) where - -import Cardano.Ledger.Allegra.Scripts -import Cardano.Ledger.Alonzo (Alonzo) -import Cardano.Ledger.Alonzo.Scripts (CostModels) -import Cardano.Ledger.Alonzo.TxWits (AlonzoTxWits, Redeemers) -import Cardano.Ledger.Core -import Cardano.Ledger.Plutus.Data (Data) -import Test.Cardano.Ledger.Alonzo.Binary.Cddl (readAlonzoCddlFiles) -import Test.Cardano.Ledger.Binary.Cddl ( - beforeAllCddlFile, - cddlRoundTripAnnCborSpec, - cddlRoundTripCborSpec, - ) -import Test.Cardano.Ledger.Common - -spec :: Spec -spec = - describe "CDDL" $ beforeAllCddlFile 3 readAlonzoCddlFiles $ do - let v = eraProtVerHigh @Alonzo - cddlRoundTripCborSpec @(Value Alonzo) v "coin" - cddlRoundTripAnnCborSpec @(TxBody Alonzo) v "transaction_body" - cddlRoundTripAnnCborSpec @(TxAuxData Alonzo) v "auxiliary_data" - cddlRoundTripAnnCborSpec @(Timelock Alonzo) v "native_script" - cddlRoundTripAnnCborSpec @(Data Alonzo) v "plutus_data" - cddlRoundTripCborSpec @(TxOut Alonzo) v "transaction_output" - cddlRoundTripAnnCborSpec @(AlonzoTxWits Alonzo) v "transaction_witness_set" - cddlRoundTripCborSpec @(PParamsUpdate Alonzo) v "protocol_param_update" - cddlRoundTripAnnCborSpec @(Redeemers Alonzo) v "[* redeemer]" - cddlRoundTripAnnCborSpec @(Tx Alonzo) v "transaction" - cddlRoundTripCborSpec @CostModels v "costmdls" diff --git a/eras/alonzo/impl/test/Test/Cardano/Ledger/Alonzo/BinarySpec.hs b/eras/alonzo/impl/test/Test/Cardano/Ledger/Alonzo/BinarySpec.hs deleted file mode 100644 index 3c6f0fe0cca..00000000000 --- a/eras/alonzo/impl/test/Test/Cardano/Ledger/Alonzo/BinarySpec.hs +++ /dev/null @@ -1,28 +0,0 @@ -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Alonzo.BinarySpec (spec) where - -import Cardano.Ledger.Alonzo -import Cardano.Ledger.Alonzo.Genesis -import Cardano.Ledger.Alonzo.Scripts -import Test.Cardano.Ledger.Alonzo.Arbitrary () -import Test.Cardano.Ledger.Alonzo.Binary.RoundTrip (roundTripAlonzoCommonSpec) -import Test.Cardano.Ledger.Alonzo.TreeDiff () -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Core.Binary (BinaryUpgradeOpts (..), specUpgrade) -import Test.Cardano.Ledger.Core.Binary.RoundTrip (roundTripEraSpec) - -spec :: Spec -spec = do - -- Scripts are not upgradeable from Mary through their CBOR instances, since - -- Mary had no concept of a prefix. - -- Transactions are also not upgradeable through deserialisation, though we - -- check them via the translateEra method - specUpgrade @Alonzo (BinaryUpgradeOpts False False) - describe "RoundTrip" $ do - roundTripAlonzoCommonSpec @Alonzo - -- AlonzoGenesis only makes sense in Alonzo era - roundTripEraSpec @Alonzo @AlonzoGenesis - -- CostModel serialization changes drastically for Conway, which requires a different - -- QuickCheck generator, hence Arbitrary can't be reused - roundTripEraSpec @Alonzo @CostModels diff --git a/eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/Arbitrary.hs b/eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/Arbitrary.hs deleted file mode 100644 index 59d54eef179..00000000000 --- a/eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/Arbitrary.hs +++ /dev/null @@ -1,493 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Alonzo.Arbitrary ( - mkPlutusScript', - alwaysSucceeds, - alwaysSucceedsLang, - alwaysFails, - alwaysFailsLang, - FlexibleCostModels (..), - genAlonzoScript, - genNativeScript, - genPlutusScript, - genScripts, - genValidCostModel, - genValidAndUnknownCostModels, - genAlonzoPlutusPurposePointer, -) where - -import Cardano.Ledger.Alonzo.Core -import Cardano.Ledger.Alonzo.Genesis (AlonzoGenesis (..)) -import Cardano.Ledger.Alonzo.PParams (AlonzoPParams (AlonzoPParams), OrdExUnits (OrdExUnits)) -import Cardano.Ledger.Alonzo.Plutus.Context (ContextError) -import Cardano.Ledger.Alonzo.Plutus.Evaluate (CollectError) -import Cardano.Ledger.Alonzo.Plutus.TxInfo (AlonzoContextError) -import Cardano.Ledger.Alonzo.Rules ( - AlonzoUtxoPredFailure (..), - AlonzoUtxosPredFailure (..), - AlonzoUtxowPredFailure (..), - FailureDescription (..), - TagMismatchDescription (..), - ) -import Cardano.Ledger.Alonzo.Scripts ( - AlonzoPlutusPurpose (..), - AlonzoScript (..), - ) -import Cardano.Ledger.Alonzo.Tx ( - AlonzoTx (AlonzoTx), - IsValid (IsValid), - ScriptIntegrity (ScriptIntegrity), - getLanguageView, - ) -import Cardano.Ledger.Alonzo.TxAuxData ( - AlonzoTxAuxData (..), - mkAlonzoTxAuxData, - ) -import Cardano.Ledger.Alonzo.TxBody (AlonzoTxBody (AlonzoTxBody)) -import Cardano.Ledger.Alonzo.TxOut (AlonzoTxOut (AlonzoTxOut)) -import Cardano.Ledger.Alonzo.TxWits ( - AlonzoTxWits (AlonzoTxWits), - Redeemers (Redeemers), - TxDats (TxDats), - ) -import Cardano.Ledger.BaseTypes (StrictMaybe) -import Cardano.Ledger.Plutus.Data ( - BinaryData, - Data (..), - Datum (..), - dataToBinaryData, - hashData, - ) -import Cardano.Ledger.Plutus.ExUnits (ExUnits (..)) -import Cardano.Ledger.Plutus.Language ( - Language (..), - Plutus (..), - PlutusLanguage, - asSLanguage, - plutusLanguage, - withSLanguage, - ) -import Cardano.Ledger.Shelley.Rules (PredicateFailure, ShelleyUtxowPredFailure) -import Data.Functor.Identity (Identity) -import Data.List.NonEmpty (NonEmpty ((:|))) -import qualified Data.Map.Strict as Map -import qualified Data.MapExtras as Map (fromElems) -import qualified Data.Set as Set -import Data.Text (pack) -import Data.Word -import Generic.Random (genericArbitraryU) -import Numeric.Natural (Natural) -import qualified PlutusLedgerApi.V1 as PV1 -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Core.Arbitrary ( - FlexibleCostModels (..), - genValidAndUnknownCostModels, - genValidCostModel, - ) -import Test.Cardano.Ledger.Mary.Arbitrary () -import Test.Cardano.Ledger.Plutus (alwaysFailsPlutus, alwaysSucceedsPlutus) - -instance Era era => Arbitrary (Data era) where - arbitrary = Data <$> arbitrary - -instance Era era => Arbitrary (BinaryData era) where - arbitrary = dataToBinaryData <$> arbitrary - -instance Arbitrary PV1.Data where - arbitrary = resize 5 (sized gendata) - where - gendata n - | n > 0 = - oneof - [ PV1.I <$> arbitrary - , PV1.B <$> arbitrary - , PV1.Map <$> listOf ((,) <$> gendata (n `div` 2) <*> gendata (n `div` 2)) - , PV1.Constr - <$> fmap fromIntegral (arbitrary :: Gen Natural) - <*> listOf (gendata (n `div` 2)) - , PV1.List <$> listOf (gendata (n `div` 2)) - ] - gendata _ = oneof [PV1.I <$> arbitrary, PV1.B <$> arbitrary] - -instance - ( Arbitrary (AlonzoScript era) - , AlonzoEraScript era - ) => - Arbitrary (AlonzoTxAuxData era) - where - arbitrary = mkAlonzoTxAuxData @[] <$> arbitrary <*> arbitrary - -instance - (AlonzoEraScript era, Arbitrary (PlutusPurpose AsIx era)) => - Arbitrary (Redeemers era) - where - arbitrary = Redeemers <$> arbitrary - -instance - ( Era era - , Arbitrary (Script era) - , AlonzoEraScript era - , Arbitrary (PlutusPurpose AsIx era) - ) => - Arbitrary (AlonzoTxWits era) - where - arbitrary = - AlonzoTxWits - <$> arbitrary - <*> arbitrary - <*> genScripts - <*> arbitrary - <*> arbitrary - -genScripts :: - forall era. - ( EraScript era - , Arbitrary (Script era) - ) => - Gen (Map.Map (ScriptHash (EraCrypto era)) (Script era)) -genScripts = Map.fromElems (hashScript @era) <$> (arbitrary :: Gen [Script era]) - -instance Era era => Arbitrary (TxDats era) where - arbitrary = TxDats . Map.fromElems @[] hashData <$> arbitrary - -instance - ( EraTxOut era - , Arbitrary (Value era) - ) => - Arbitrary (AlonzoTxOut era) - where - arbitrary = - AlonzoTxOut - <$> arbitrary - <*> scale (`div` 15) arbitrary - <*> arbitrary - -instance - ( EraTxOut era - , EraTxCert era - , Arbitrary (TxOut era) - , Arbitrary (PParamsHKD StrictMaybe era) - , Arbitrary (TxCert era) - ) => - Arbitrary (AlonzoTxBody era) - where - arbitrary = - AlonzoTxBody - <$> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> scale (`div` 15) arbitrary - <*> arbitrary - <*> scale (`div` 15) arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - -deriving newtype instance Arbitrary IsValid - -instance - ( Arbitrary (TxBody era) - , Arbitrary (TxWits era) - , Arbitrary (TxAuxData era) - ) => - Arbitrary (AlonzoTx era) - where - arbitrary = - AlonzoTx - <$> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - -instance (AlonzoEraScript era, Script era ~ AlonzoScript era) => Arbitrary (AlonzoScript era) where - arbitrary = do - lang <- elements [minBound .. eraMaxLanguage @era] - genAlonzoScript lang - -genAlonzoScript :: - ( AlonzoEraScript era - , Script era ~ AlonzoScript era - ) => - Language -> - Gen (AlonzoScript era) -genAlonzoScript lang = - frequency - [ (2, genPlutusScript lang) - , (8, genNativeScript) - ] - -genNativeScript :: AlonzoEraScript era => Gen (AlonzoScript era) -genNativeScript = TimelockScript <$> arbitrary - -genPlutusScript :: - ( AlonzoEraScript era - , Script era ~ AlonzoScript era - ) => - Language -> - Gen (AlonzoScript era) -genPlutusScript lang = - frequency - [ (5, alwaysSucceedsLang lang <$> elements [1, 2, 3]) - , (5, alwaysFailsLang lang <$> elements [1, 2, 3]) - ] - -instance Arbitrary (AlonzoPParams Identity era) where - arbitrary = - AlonzoPParams - <$> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - -deriving instance Arbitrary OrdExUnits - -instance Arbitrary (AlonzoPParams StrictMaybe era) where - arbitrary = - AlonzoPParams - <$> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - -instance Arbitrary FailureDescription where - arbitrary = PlutusFailure <$> (pack <$> arbitrary) <*> arbitrary - -instance Arbitrary TagMismatchDescription where - arbitrary = - oneof [pure PassedUnexpectedly, FailedUnexpectedly <$> ((:|) <$> arbitrary <*> arbitrary)] - -instance - ( Era era - , Arbitrary (EraRuleFailure "PPUP" era) - , Arbitrary (PlutusPurpose AsItem era) - , Arbitrary (ContextError era) - ) => - Arbitrary (AlonzoUtxosPredFailure era) - where - arbitrary = genericArbitraryU - -instance - ( Era era - , Arbitrary (PlutusPurpose AsItem era) - , Arbitrary (ContextError era) - ) => - Arbitrary (CollectError era) - where - arbitrary = genericArbitraryU - -instance Era era => Arbitrary (AlonzoContextError era) where - arbitrary = genericArbitraryU - -instance - ( EraTxOut era - , Era era - , Arbitrary (Value era) - , Arbitrary (TxOut era) - , Arbitrary (PredicateFailure (EraRule "UTXOS" era)) - ) => - Arbitrary (AlonzoUtxoPredFailure era) - where - arbitrary = genericArbitraryU - -instance - ( Era era - , Arbitrary (PredicateFailure (EraRule "UTXO" era)) - , Arbitrary (ShelleyUtxowPredFailure era) - , Arbitrary (TxCert era) - , Arbitrary (PlutusPurpose AsItem era) - , Arbitrary (PlutusPurpose AsIx era) - ) => - Arbitrary (AlonzoUtxowPredFailure era) - where - -- Switch to this implementation once #4110 is taken care of - -- arbitrary = genericArbitraryU - arbitrary = - oneof - [ ShelleyInAlonzoUtxowPredFailure <$> arbitrary - , -- MissingRedeemers <$> arbitrary -- see #4110 - MissingRequiredDatums <$> arbitrary <*> arbitrary - , NotAllowedSupplementalDatums <$> arbitrary <*> arbitrary - , PPViewHashesDontMatch <$> arbitrary <*> arbitrary - , MissingRequiredSigners <$> arbitrary - , UnspendableUTxONoDatumHash <$> arbitrary - -- , ExtraRedeemers <$> arbitrary -- see #4110 - ] - -deriving instance Arbitrary ix => Arbitrary (AsIx ix it) - -deriving instance Arbitrary it => Arbitrary (AsItem ix it) - -instance (Arbitrary ix, Arbitrary it) => Arbitrary (AsIxItem ix it) where - arbitrary = AsIxItem <$> arbitrary <*> arbitrary - -genAlonzoPlutusPurposePointer :: Word32 -> Gen (AlonzoPlutusPurpose AsIx era) -genAlonzoPlutusPurposePointer i = - elements - [ AlonzoSpending (AsIx i) - , AlonzoMinting (AsIx i) - , AlonzoCertifying (AsIx i) - , AlonzoRewarding (AsIx i) - ] - -instance - ( Era era - , Arbitrary (TxCert era) - ) => - Arbitrary (AlonzoPlutusPurpose AsItem era) - where - arbitrary = - oneof - [ AlonzoSpending <$> arbitrary - , AlonzoMinting <$> arbitrary - , AlonzoCertifying <$> arbitrary - , AlonzoRewarding <$> arbitrary - ] - -instance - ( Era era - , Arbitrary (TxCert era) - ) => - Arbitrary (AlonzoPlutusPurpose AsIxItem era) - where - arbitrary = - oneof - [ AlonzoSpending <$> arbitrary - , AlonzoMinting <$> arbitrary - , AlonzoCertifying <$> arbitrary - , AlonzoRewarding <$> arbitrary - ] - -instance Era era => Arbitrary (AlonzoPlutusPurpose AsIx era) where - arbitrary = arbitrary >>= genAlonzoPlutusPurposePointer - -instance - ( AlonzoEraScript era - , AlonzoEraPParams era - , Arbitrary (PParams era) - , Arbitrary (PlutusPurpose AsIx era) - ) => - Arbitrary (ScriptIntegrity era) - where - arbitrary = - ScriptIntegrity - <$> arbitrary - <*> arbitrary - -- FIXME: why singleton? We should generate empty as well as many value sets - <*> (Set.singleton <$> (getLanguageView @era <$> arbitrary <*> arbitrary)) - -instance - Era era => - Arbitrary (Datum era) - where - arbitrary = - oneof - [ pure NoDatum - , DatumHash <$> arbitrary - , Datum . dataToBinaryData <$> arbitrary - ] - -deriving instance Arbitrary CoinPerWord - -instance Arbitrary AlonzoGenesis where - arbitrary = - AlonzoGenesis - <$> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - -alwaysSucceeds :: - forall l era. - (HasCallStack, PlutusLanguage l, AlonzoEraScript era) => - Natural -> - Script era -alwaysSucceeds n = mkPlutusScript' (alwaysSucceedsPlutus @l n) - -alwaysFails :: - forall l era. - (HasCallStack, PlutusLanguage l, AlonzoEraScript era) => - Natural -> - Script era -alwaysFails n = mkPlutusScript' (alwaysFailsPlutus @l n) - -alwaysSucceedsLang :: (HasCallStack, AlonzoEraScript era) => Language -> Natural -> Script era -alwaysSucceedsLang lang n = - withSLanguage lang $ \slang -> mkPlutusScript' $ asSLanguage slang (alwaysSucceedsPlutus n) - -alwaysFailsLang :: (HasCallStack, AlonzoEraScript era) => Language -> Natural -> Script era -alwaysFailsLang lang n = - withSLanguage lang $ \slang -> mkPlutusScript' $ asSLanguage slang (alwaysFailsPlutus n) - --- | Partial version of `mkPlutusScript` -mkPlutusScript' :: - forall era l. - (HasCallStack, AlonzoEraScript era, PlutusLanguage l) => - Plutus l -> - Script era -mkPlutusScript' plutus = - case mkPlutusScript plutus of - Nothing -> - error $ - "Plutus version " ++ show (plutusLanguage plutus) ++ " is not supported in " ++ eraName @era - Just plutusScript -> fromPlutusScript plutusScript diff --git a/eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/Binary/Cddl.hs b/eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/Binary/Cddl.hs deleted file mode 100644 index 0915cf47374..00000000000 --- a/eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/Binary/Cddl.hs +++ /dev/null @@ -1,18 +0,0 @@ -module Test.Cardano.Ledger.Alonzo.Binary.Cddl ( - readAlonzoCddlFileNames, - readAlonzoCddlFiles, -) where - -import qualified Data.ByteString.Lazy as BSL -import Paths_cardano_ledger_alonzo - -readAlonzoCddlFileNames :: IO [FilePath] -readAlonzoCddlFileNames = do - base <- getDataFileName "cddl-files/alonzo.cddl" - crypto <- getDataFileName "cddl-files/crypto.cddl" - extras <- getDataFileName "cddl-files/extras.cddl" - -- extras contains the types whose restrictions cannot be expressed in CDDL - pure [base, crypto, extras] - -readAlonzoCddlFiles :: IO [BSL.ByteString] -readAlonzoCddlFiles = mapM BSL.readFile =<< readAlonzoCddlFileNames diff --git a/eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/Binary/CostModelsSpec.hs b/eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/Binary/CostModelsSpec.hs deleted file mode 100644 index 43ef4e37b2b..00000000000 --- a/eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/Binary/CostModelsSpec.hs +++ /dev/null @@ -1,158 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Alonzo.Binary.CostModelsSpec (spec) where - -import Cardano.Ledger.Alonzo.Core -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.Binary.Decoding -import Cardano.Ledger.Binary.Encoding -import Cardano.Ledger.Plutus.CostModels -import Cardano.Ledger.Plutus.Language -import qualified Data.Map as Map -import Data.Text (Text) -import Data.Word (Word8) -import Lens.Micro -import Test.Cardano.Ledger.Alonzo.Arbitrary () -import Test.Cardano.Ledger.Common - -spec :: forall era. AlonzoEraPParams era => Spec -spec = do - describe "CBOR deserialization" $ do - validCostModelProp @era - invalidCostModelProp @era - unknownCostModelProp @era - prop "applyPPUpdates" $ \valid validUpdate unknown unknownUpdate -> do - let - validExpected = mkCostModels (costModelsValid validUpdate <> costModelsValid valid) - unknownExpected = unknownUpdate <> unknown - original = mkCostModelsLenient (flattenCostModels valid <> unknown) - update = mkCostModelsLenient (flattenCostModels validUpdate <> unknownUpdate) - expected = mkCostModelsLenient (flattenCostModels validExpected <> unknownExpected) - pp = - emptyPParams & ppCostModelsL .~ original - ppUpdate = - emptyPParamsUpdate & ppuCostModelsL .~ SJust update - -- Starting with Conway we update CostModel on per-language basis, while before - -- that CostModels where overwritten completely - applyPPUpdates @era pp ppUpdate - `shouldBe` if eraProtVerLow @era >= natVersion @9 - then pp & ppCostModelsL .~ expected - else pp & ppCostModelsL .~ update - -validCostModelProp :: - forall era. - AlonzoEraPParams era => - Spec -validCostModelProp = do - prop "valid CostModels deserialize correctly, both independently and within PParamsUpdate" $ - \(lang :: Language) -> do - forAllShow (genValidCostModelEnc lang) (showEnc @era) $ - \validCmEnc -> do - encodeAndCheckDecoded @era validCmEnc $ - \cmDecoded ppuDecoded -> do - expectRight cmDecoded >>= (`shouldSatisfy` validCm) - ppuRes <- expectRight ppuDecoded - ppuRes `shouldSatisfy` \ppu -> (validCm <$> ppu ^. ppuCostModelsL) == SJust True - where - genValidCostModelEnc lang = genCostModelEncForLanguage lang (costModelParamsCount lang) - validCm cms = - not (null (costModelsValid cms)) && null (costModelsErrors cms) && null (costModelsUnknown cms) - -invalidCostModelProp :: - forall era. - AlonzoEraPParams era => - Spec -invalidCostModelProp = do - prop "invalid CostModels fail within PParamsUpdate" $ - \(lang :: Language) -> do - forAllShow (genInvalidCostModelEnc lang) (showEnc @era) $ - \invalidCmEnc -> do - encodeAndCheckDecoded @era invalidCmEnc $ - \cmDecoded ppuDecoded -> do - -- pre-Conway we are failing when deserializing invalid costmodels - if eraProtVerHigh @era < natVersion @9 - then expectDeserialiseFailure cmDecoded (Just "CostModels") - else do - -- post-Conway, we are collecting CostModels deserialization errors - cmRes <- expectRight cmDecoded - cmRes `shouldSatisfy` invalidCm - - -- in no era are we deserializing invalid costmodels within PParamsUpdate - expectDeserialiseFailure ppuDecoded Nothing - where - genInvalidCostModelEnc lang = do - let validCount = costModelParamsCount lang - count <- choose (0, validCount - 1) - genCostModelEncForLanguage lang count - - invalidCm cms = - null (costModelsValid cms) && not (null (costModelsErrors cms)) - -unknownCostModelProp :: - forall era. - AlonzoEraPParams era => - Spec -unknownCostModelProp = do - prop "unknown CostModels deserialize correctly within PParamsUpdate starting with Conway" $ - forAllShow genUnknownCostModelEnc (showEnc @era) $ - \unknownCmEnc -> do - encodeAndCheckDecoded @era unknownCmEnc $ - \cmDecoded ppuDecoded -> do - -- pre-Conway we are failing when deserializing unknown costmodels - if eraProtVerHigh @era < natVersion @9 - then do - expectDeserialiseFailure cmDecoded (Just "CostModels") - expectDeserialiseFailure ppuDecoded Nothing - else do - -- post-Conway, we are collecting unknown CostModels - cmRes <- expectRight cmDecoded - cmRes `shouldSatisfy` unknownCm - ppuRes <- expectRight ppuDecoded - ppuRes `shouldSatisfy` \ppu -> (unknownCm <$> ppu ^. ppuCostModelsL) == SJust True - where - genUnknownCostModelEnc = do - let firstUnknownLang = fromEnum (maxBound @Language) + 1 - lang <- choose (fromIntegral firstUnknownLang, maxBound @Word8) - NonNegative count <- arbitrary - genCostModelsEnc lang count - unknownCm cms = - null (costModelsValid cms) && null (costModelsErrors cms) && not (null (costModelsUnknown cms)) - -encodeAndCheckDecoded :: - forall era. - AlonzoEraPParams era => - Encoding -> - (Either DecoderError CostModels -> Either DecoderError (PParamsUpdate era) -> IO ()) -> - IO () -encodeAndCheckDecoded cmEnc check = do - let ver = eraProtVerHigh @era - ppuEnc = encCBOR (Map.singleton (18 :: Int) cmEnc) - cmBytes = serialize ver cmEnc - ppuBytes = serialize ver ppuEnc - check - (decodeFull @CostModels ver cmBytes) - (decodeFull @(PParamsUpdate era) ver ppuBytes) - -genCostModelsEnc :: Word8 -> Int -> Gen Encoding -genCostModelsEnc lang count = do - values <- vectorOf count (arbitrary :: Gen Int) - pure $ encCBOR $ Map.singleton lang values - -genCostModelEncForLanguage :: Language -> Int -> Gen Encoding -genCostModelEncForLanguage = genCostModelsEnc . fromIntegral . fromEnum - -expectDeserialiseFailure :: (HasCallStack, Show t) => Either DecoderError t -> Maybe Text -> IO () -expectDeserialiseFailure e expectedTxt = do - res <- expectLeft e - res `shouldSatisfy` \case - DecoderErrorDeserialiseFailure txt _ -> maybe True (== txt) expectedTxt - _ -> False - -showEnc :: forall era. Era era => Encoding -> String -showEnc enc = show $ toPlainEncoding (eraProtVerHigh @era) enc diff --git a/eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/Binary/RoundTrip.hs b/eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/Binary/RoundTrip.hs deleted file mode 100644 index 55cbbcc7403..00000000000 --- a/eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/Binary/RoundTrip.hs +++ /dev/null @@ -1,78 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Alonzo.Binary.RoundTrip ( - roundTripAlonzoCommonSpec, - roundTripAlonzoEraTypesSpec, -) where - -import Cardano.Ledger.Alonzo (AlonzoEra) -import Cardano.Ledger.Compactible -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Plutus.Data -import Cardano.Ledger.Shelley.Governance -import Cardano.Ledger.Shelley.LedgerState -import Test.Cardano.Ledger.Alonzo.Arbitrary () -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Core.Binary.RoundTrip -import Test.Cardano.Ledger.Shelley.Binary.RoundTrip (roundTripShelleyCommonSpec) - -roundTripAlonzoCommonSpec :: - forall era. - ( EraTx era - , EraGov era - , StashedAVVMAddresses era ~ () - , Arbitrary (Tx era) - , Arbitrary (TxBody era) - , Arbitrary (TxOut era) - , Arbitrary (TxCert era) - , Arbitrary (TxWits era) - , Arbitrary (TxAuxData era) - , Arbitrary (Value era) - , Arbitrary (CompactForm (Value era)) - , Arbitrary (Script era) - , Arbitrary (GovState era) - , Arbitrary (PParams era) - , Arbitrary (PParamsUpdate era) - , RuleListEra era - ) => - Spec -roundTripAlonzoCommonSpec = do - roundTripAlonzoEraTypesSpec @era - roundTripShelleyCommonSpec @era - -roundTripAlonzoEraTypesSpec :: - forall era. - Era era => - Spec -roundTripAlonzoEraTypesSpec = do - describe "Alonzo era types" $ do - roundTripAnnEraTypeSpec @era @Data - roundTripEraTypeSpec @era @BinaryData - xdescribe "Datum doesn't roundtrip" $ do - -- TODO: Adjust Datum implementation somehow to avoid this situtaiton - -- It doesn't roundtrip because we do not en/decode NoDatum - -- Possibly use peekAvailable, but haven't looked into the issue too deeply - roundTripEraTypeSpec @era @Datum - -instance Crypto c => RuleListEra (AlonzoEra c) where - type - EraRules (AlonzoEra c) = - '[ "DELEG" - , "DELEGS" - , "DELPL" - , "LEDGER" - , "LEDGERS" - , "POOL" - , "PPUP" - , "UTXO" - , "UTXOW" - , "UTXOS" - ] diff --git a/eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/Binary/TxWitsSpec.hs b/eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/Binary/TxWitsSpec.hs deleted file mode 100644 index 38da8f678ae..00000000000 --- a/eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/Binary/TxWitsSpec.hs +++ /dev/null @@ -1,180 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeOperators #-} - -module Test.Cardano.Ledger.Alonzo.Binary.TxWitsSpec (spec) where - -import Cardano.Ledger.Alonzo.Core -import Cardano.Ledger.Alonzo.Scripts -import Cardano.Ledger.Alonzo.TxWits (AlonzoTxWits (..)) -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.Binary (DeserialiseFailure (..)) -import Cardano.Ledger.Binary.Decoding -import Cardano.Ledger.Binary.Encoding -import Cardano.Ledger.Plutus.Language -import Data.List (isPrefixOf) -import qualified Data.Map as Map -import qualified Data.Maybe as Maybe (mapMaybe) -import Test.Cardano.Ledger.Alonzo.Arbitrary -import Test.Cardano.Ledger.Common - -spec :: - forall era. - ( AlonzoEraScript era - , Script era ~ AlonzoScript era - ) => - Spec -spec = do - describe "AlonzoTxWits deserialization" $ do - describe "plutus scripts" $ do - emptyFieldsProps @era - plutusScriptsProp @era - nativeScriptsProp @era - -emptyFieldsProps :: - forall era. - AlonzoEraScript era => - Spec -emptyFieldsProps = do - prop "fails to deserialize if fields contain an empty collection" $ - conjoin $ - emptyFieldProp <$> [0 .. 7] - where - emptyFieldProp :: Int -> Property - emptyFieldProp k = - property $ - expectDeserialiseFailureFromVersion @era - (natVersion @9) - (emptyEnc k) - "Empty list" - emptyEnc k = encCBOR $ Map.singleton k (encCBOR ([] :: [Encoding])) - -plutusScriptsProp :: - forall era. - ( AlonzoEraScript era - , Script era ~ AlonzoScript era - ) => - Spec -plutusScriptsProp = do - prop "fails to deserialize if empty or if it contains duplicates, starting with Conway" $ - conjoin $ - [ distinctProp - , duplicateProp - ] - <*> [minBound .. eraMaxLanguage @era] - where - distinctProp lang = - forAllShow (genEncoding lang False) (showEnc @era) $ - expectDeserialiseSuccess @era - - duplicateProp lang = - forAllShow (genEncoding lang True) (showEnc @era) $ - \enc -> - expectDeserialiseFailureFromVersion @era - (natVersion @9) - enc - "Final number of elements" - - genEncoding :: Language -> Bool -> Gen Encoding - genEncoding lang duplicate = do - sc <- genPlutusScript @era lang - let scs - | duplicate = [sc, sc] - | otherwise = [sc] - let plutusBins = withSLanguage lang $ \slang -> - Maybe.mapMaybe - (\x -> plutusBinary <$> (toPlutusScript x >>= toPlutusSLanguage slang)) - scs - pure $ encCBOR $ Map.singleton (keys lang) (encCBOR plutusBins) - keys PlutusV1 = 3 :: Int - keys PlutusV2 = 6 - keys PlutusV3 = 7 - -nativeScriptsProp :: - forall era. - ( AlonzoEraScript era - , Script era ~ AlonzoScript era - ) => - Spec -nativeScriptsProp = do - prop - "fails to deserialize if empty, starting with Conway" - distinctProp - where - distinctProp = - forAllShow (genEncoding False) (showEnc @era) $ - expectDeserialiseSuccess @era - - -- TODO: enable this after we enforce distinct entries for Annotator - -- duplicateProp = - -- forAllShow (genEncoding True) (showEnc @era) $ - -- \enc -> - -- expectDeserialiseFailureFromVersion @era - -- (natVersion @9) - -- enc - -- "Final number of elements" - - genEncoding :: Bool -> Gen Encoding - genEncoding duplicate = do - sc <- genNativeScript @era - let scs - | duplicate = [sc, sc] - | otherwise = [sc] - - let natives = Maybe.mapMaybe getNativeScript scs - pure $ encCBOR $ Map.singleton (1 :: Int) (encCBOR natives) - -expectDeserialiseSuccess :: - forall era. - (AlonzoEraScript era, HasCallStack) => - Encoding -> - IO () -expectDeserialiseSuccess enc = - encodeAndCheckDecoded @era enc $ - \decoded -> void $ expectRight decoded - -expectDeserialiseFailureFromVersion :: - forall era. - (AlonzoEraScript era, HasCallStack) => - Version -> - Encoding -> - String -> - IO () -expectDeserialiseFailureFromVersion v enc errMsgPrefix = - encodeAndCheckDecoded @era enc $ - \decoded -> do - if eraProtVerHigh @era < v - then void $ expectRight decoded - else expectDeserialiseFailure (void decoded) errMsgPrefix - -expectDeserialiseFailure :: - (HasCallStack, Show t) => - Either DecoderError t -> - String -> - IO () -expectDeserialiseFailure e errMsgPrefix = do - res <- expectLeft e - res `shouldSatisfy` \case - DecoderErrorDeserialiseFailure _ (DeserialiseFailure _ errMsg) -> - errMsgPrefix `isPrefixOf` errMsg - _ -> False - -encodeAndCheckDecoded :: - forall era. - AlonzoEraScript era => - Encoding -> - (Either DecoderError (Annotator (AlonzoTxWits era)) -> IO ()) -> - IO () -encodeAndCheckDecoded enc check = do - let ver = eraProtVerHigh @era - bytes = serialize ver enc - check (decodeFull @(Annotator (AlonzoTxWits era)) ver bytes) - -showEnc :: forall era. Era era => Encoding -> String -showEnc enc = show $ toPlainEncoding (eraProtVerHigh @era) enc diff --git a/eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/Imp.hs b/eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/Imp.hs deleted file mode 100644 index 8b1e66ab0a0..00000000000 --- a/eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/Imp.hs +++ /dev/null @@ -1,23 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Alonzo.Imp where - -import Cardano.Ledger.Alonzo.Tx (AlonzoEraTx) -import qualified Test.Cardano.Ledger.Alonzo.Imp.UtxosSpec as Utxos -import Test.Cardano.Ledger.Alonzo.ImpTest (ShelleyEraImp, withImpState) -import Test.Cardano.Ledger.Common (Spec, describe) - -spec :: - forall era. - ( ShelleyEraImp era - , AlonzoEraTx era - ) => - Spec -spec = - describe "AlonzoImpTest" . withImpState @era $ do - Utxos.spec @era diff --git a/eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/Imp/UtxosSpec.hs b/eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/Imp/UtxosSpec.hs deleted file mode 100644 index 0cef49fc2cd..00000000000 --- a/eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/Imp/UtxosSpec.hs +++ /dev/null @@ -1,86 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} - -module Test.Cardano.Ledger.Alonzo.Imp.UtxosSpec (spec) where - -import Cardano.Ledger.Address (Addr (..)) -import Cardano.Ledger.Alonzo.Core ( - AlonzoEraScript (..), - AlonzoEraTx (..), - AlonzoEraTxWits (..), - AsIx (AsIx), - Era (..), - ppMaxTxExUnitsL, - ) -import Cardano.Ledger.Alonzo.Tx (IsValid (..)) -import Cardano.Ledger.Alonzo.TxWits (Redeemers (..)) -import Cardano.Ledger.BaseTypes (Inject (..), Network (..)) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Core (EraTx (..), EraTxBody (..), EraTxOut (..)) -import Cardano.Ledger.Credential (Credential (..), StakeReference (..)) -import Cardano.Ledger.Plutus.Data (Data (..)) -import Cardano.Ledger.Plutus.Language (SLanguage (..), hashPlutusScript) -import Cardano.Ledger.Shelley.LedgerState (curPParamsEpochStateL, nesEsL) -import Cardano.Ledger.TxIn (TxIn) -import qualified Data.Map.Strict as Map -import qualified Data.Sequence.Strict as SSeq -import qualified Data.Set as Set -import Lens.Micro ((&), (.~)) -import qualified PlutusLedgerApi.Common as P -import Test.Cardano.Ledger.Alonzo.ImpTest ( - ImpTestM, - ImpTestState, - ShelleyEraImp, - getsNES, - impAnn, - submitTxAnn, - submitTxAnn_, - submitTx_, - ) -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Core.Utils (txInAt) -import Test.Cardano.Ledger.Plutus.Examples (guessTheNumber3) - -submitProducingTx :: forall era. ShelleyEraImp era => ImpTestM era (TxIn (EraCrypto era)) -submitProducingTx = - fmap (txInAt (0 :: Int)) . submitTxAnn "Sumbit a transaction with a script output" $ - mkBasicTx mkBasicTxBody - & bodyTxL . outputsTxBodyL - .~ SSeq.singleton - ( mkBasicTxOut - (Addr Testnet (ScriptHashObj $ hashPlutusScript (guessTheNumber3 SPlutusV1)) StakeRefNull) - (inject (Coin 100)) - ) - -spec :: - forall era. - ( ShelleyEraImp era - , AlonzoEraTx era - ) => - SpecWith (ImpTestState era) -spec = describe "UTXOS" $ do - it "Plutus script transactions are fixed up" $ do - txIn0 <- submitProducingTx - submitTxAnn_ "Submit a transaction that consumes the script output" $ - mkBasicTx mkBasicTxBody - & bodyTxL . inputsTxBodyL - .~ Set.singleton txIn0 - it "Invalid plutus script fails in phase 2" $ do - txIn0 <- submitProducingTx - exUnits <- getsNES $ nesEsL . curPParamsEpochStateL . ppMaxTxExUnitsL - impAnn "Submitting consuming transaction" $ - submitTx_ - ( mkBasicTx mkBasicTxBody - & bodyTxL . inputsTxBodyL .~ Set.singleton txIn0 - & isValidTxL .~ IsValid False - & witsTxL . rdmrsTxWitsL - .~ Redeemers - ( Map.singleton - (mkSpendingPurpose $ AsIx 0) - (Data $ P.I 32, exUnits) - ) - ) diff --git a/eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/ImpTest.hs b/eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/ImpTest.hs deleted file mode 100644 index a711f6ee8a4..00000000000 --- a/eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/ImpTest.hs +++ /dev/null @@ -1,412 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE NumericUnderscores #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TupleSections #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Alonzo.ImpTest ( - module ImpTest, - AlonzoEraImp (..), - initAlonzoImpNES, - impLookupPlutusScriptMaybe, - addCollateralInput, - impGetPlutusContexts, - alonzoFixupTx, - plutusTestScripts, - impGetScriptContext, - impGetScriptContextMaybe, - -- Fixup - fixupDatums, - fixupOutputDatums, - fixupPPHash, - fixupRedeemers, - fixupScriptWits, -) where - -import Cardano.Crypto.DSIGN (DSIGNAlgorithm (..), Ed25519DSIGN) -import Cardano.Ledger.Address (Addr (..)) -import Cardano.Ledger.Alonzo (AlonzoEra) -import Cardano.Ledger.Alonzo.Core -import Cardano.Ledger.Alonzo.PParams (getLanguageView) -import Cardano.Ledger.Alonzo.Scripts ( - ExUnits (..), - plutusScriptLanguage, - toAsItem, - toAsIx, - ) -import Cardano.Ledger.Alonzo.Tx (hashScriptIntegrity) -import Cardano.Ledger.Alonzo.TxWits (Redeemers (..), TxDats (..)) -import Cardano.Ledger.Alonzo.UTxO (AlonzoEraUTxO (..), AlonzoScriptsNeeded (..)) -import Cardano.Ledger.BaseTypes (StrictMaybe (..)) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Credential (Credential (..)) -import Cardano.Ledger.Crypto (Crypto (..)) -import Cardano.Ledger.Keys (Hash) -import Cardano.Ledger.Plutus (SLanguage (..), hashPlutusScript) -import Cardano.Ledger.Plutus.Data (Data (..), Datum (..), hashData) -import Cardano.Ledger.Plutus.Language ( - Language (..), - Plutus, - PlutusLanguage, - ) -import Cardano.Ledger.Shelley.LedgerState ( - NewEpochState, - StashedAVVMAddresses, - curPParamsEpochStateL, - esLStateL, - lsUTxOStateL, - nesEsL, - utxosUtxoL, - ) -import Cardano.Ledger.Shelley.UTxO (EraUTxO (..), ScriptsProvided (..)) -import Cardano.Ledger.TxIn (TxIn) -import Control.Monad (forM) -import Data.Default.Class (Default) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.MapExtras (fromElems) -import Data.Maybe (catMaybes) -import Data.Set (Set) -import qualified Data.Set as Set -import Lens.Micro -import qualified PlutusLedgerApi.Common as P -import Test.Cardano.Ledger.Allegra.ImpTest ( - impAllegraSatisfyNativeScript, - ) -import Test.Cardano.Ledger.Alonzo.TreeDiff () -import Test.Cardano.Ledger.Core.Arbitrary () -import Test.Cardano.Ledger.Imp.Common -import Test.Cardano.Ledger.Plutus ( - PlutusArgs (..), - ScriptTestContext (..), - testingCostModels, - ) -import Test.Cardano.Ledger.Plutus.Examples -import Test.Cardano.Ledger.Shelley.ImpTest as ImpTest - -class - ( ShelleyEraImp era - , AlonzoEraScript era - , AlonzoEraTxWits era - , AlonzoEraTx era - , AlonzoEraUTxO era - ) => - AlonzoEraImp era - where - scriptTestContexts :: Map (ScriptHash (EraCrypto era)) ScriptTestContext - -initAlonzoImpNES :: - forall era. - ( AlonzoEraPParams era - , Default (StashedAVVMAddresses era) - , ShelleyEraImp era - , AlonzoEraScript era - ) => - NewEpochState era -initAlonzoImpNES = - initShelleyImpNES - & nesEsL . curPParamsEpochStateL %~ initPParams - where - initPParams pp = - pp - & ppMaxValSizeL .~ 1_000_000_000 - & ppMaxTxExUnitsL .~ ExUnits 10_000_000 10_000_000 - & ppCostModelsL - .~ testingCostModels - [PlutusV1 .. eraMaxLanguage @era] - -makeCollateralInput :: ShelleyEraImp era => ImpTestM era (TxIn (EraCrypto era)) -makeCollateralInput = do - -- TODO: make more accurate - let collateral = Coin 10_000_000 - (_, addr) <- freshKeyAddr - withFixup fixupTx $ sendCoinTo addr collateral - -addCollateralInput :: - (AlonzoEraImp era, ScriptsNeeded era ~ AlonzoScriptsNeeded era) => - Tx era -> - ImpTestM era (Tx era) -addCollateralInput tx = impAnn "addCollateralInput" $ do - ctx <- impGetPlutusContexts tx - if null ctx - then pure tx - else do - collateralInput <- makeCollateralInput - pure $ - tx - & bodyTxL . collateralInputsTxBodyL <>~ Set.singleton collateralInput - -impLookupPlutusScriptMaybe :: - forall era. - AlonzoEraImp era => - ScriptHash (EraCrypto era) -> - Maybe (PlutusScript era) -impLookupPlutusScriptMaybe sh = - (\(ScriptTestContext plutus _) -> mkPlutusScript plutus) =<< impGetScriptContextMaybe @era sh - -impGetPlutusContexts :: - forall era. - (ScriptsNeeded era ~ AlonzoScriptsNeeded era, AlonzoEraImp era) => - Tx era -> - ImpTestM - era - [(PlutusPurpose AsIxItem era, ScriptHash (EraCrypto era), ScriptTestContext)] -impGetPlutusContexts tx = do - let txBody = tx ^. bodyTxL - utxo <- getsNES $ nesEsL . esLStateL . lsUTxOStateL . utxosUtxoL - let AlonzoScriptsNeeded asn = getScriptsNeeded utxo txBody - mbyContexts <- forM asn $ \(prp, sh) -> do - pure $ (prp,sh,) <$> impGetScriptContextMaybe @era sh - pure $ catMaybes mbyContexts - -fixupRedeemerIndices :: - forall era. - AlonzoEraImp era => - Tx era -> - ImpTestM era (Tx era) -fixupRedeemerIndices tx = impAnn "fixupRedeemerIndices" $ do - (rootTxIn, _) <- lookupImpRootTxOut - let - txInputs = tx ^. bodyTxL . inputsTxBodyL - rootTxIndex = toEnum $ Set.findIndex rootTxIn txInputs - updateIndex (SpendingPurpose (AsIx i)) - | i >= rootTxIndex = SpendingPurpose . AsIx $ succ i - updateIndex x = x - pure $ - tx - & witsTxL . rdmrsTxWitsL - %~ (\(Redeemers m) -> Redeemers $ Map.mapKeys updateIndex m) - -fixupRedeemers :: - forall era. - ( ScriptsNeeded era ~ AlonzoScriptsNeeded era - , AlonzoEraImp era - ) => - Tx era -> - ImpTestM era (Tx era) -fixupRedeemers tx = impAnn "fixupRedeemers" $ do - contexts <- impGetPlutusContexts tx - exUnits <- getsNES $ nesEsL . curPParamsEpochStateL . ppMaxTxExUnitsL - let - mkNewRedeemers (prpIdx, _, ScriptTestContext _ (PlutusArgs dat _)) = - (hoistPlutusPurpose @era toAsIx prpIdx, (Data dat, exUnits)) - Redeemers oldRedeemers = tx ^. witsTxL . rdmrsTxWitsL - newRedeemers = Map.fromList (mkNewRedeemers <$> contexts) - pure $ - tx - & witsTxL . rdmrsTxWitsL .~ Redeemers (Map.union oldRedeemers newRedeemers) - -fixupScriptWits :: - forall era. - ( ScriptsNeeded era ~ AlonzoScriptsNeeded era - , AlonzoEraImp era - ) => - Tx era -> - ImpTestM era (Tx era) -fixupScriptWits tx = impAnn "fixupScriptWits" $ do - contexts <- impGetPlutusContexts tx - utxo <- getUTxO - let ScriptsProvided provided = getScriptsProvided utxo tx - let contextsToAdd = filter (\(_, sh, _) -> not (Map.member sh provided)) contexts - let - plutusToScript :: - forall l. - PlutusLanguage l => - Plutus l -> - ImpTestM era (Script era) - plutusToScript p = - case mkPlutusScript @era p of - Just x -> pure $ fromPlutusScript x - Nothing -> error "Plutus version not supported by era" - scriptWits <- forM contextsToAdd $ \(_, sh, ScriptTestContext plutus _) -> - (sh,) <$> plutusToScript plutus - pure $ - tx - & witsTxL . scriptTxWitsL <>~ Map.fromList scriptWits - -fixupDatums :: - forall era. - ( HasCallStack - , ScriptsNeeded era ~ AlonzoScriptsNeeded era - , AlonzoEraImp era - ) => - Tx era -> - ImpTestM era (Tx era) -fixupDatums tx = impAnn "fixupDatums" $ do - contexts <- impGetPlutusContexts tx - let purposes = (^. _1) <$> contexts - datums <- traverse collectDatums purposes - let TxDats prevDats = tx ^. witsTxL . datsTxWitsL - pure $ - tx - & witsTxL . datsTxWitsL - .~ TxDats - (Map.union prevDats $ fromElems hashData (catMaybes datums)) - where - collectDatums :: PlutusPurpose AsIxItem era -> ImpTestM era (Maybe (Data era)) - collectDatums purpose = do - let txIn = unAsItem <$> toSpendingPurpose (hoistPlutusPurpose toAsItem purpose) - txOut <- traverse (impLookupUTxO @era) txIn - pure $ getData =<< txOut - - getData :: TxOut era -> Maybe (Data era) - getData txOut = case txOut ^. datumTxOutF of - DatumHash _dh -> spendDatum <$> Map.lookup (txOutScriptHash txOut) (scriptTestContexts @era) - _ -> Nothing - - txOutScriptHash txOut - | Addr _ (ScriptHashObj sh) _ <- txOut ^. addrTxOutL = sh - | otherwise = error "TxOut does not have a payment script" - - spendDatum (ScriptTestContext _ (PlutusArgs _ (Just d))) = Data d - spendDatum _ = error "Context does not have a spending datum" - -fixupPPHash :: - forall era. - AlonzoEraImp era => - Tx era -> - ImpTestM era (Tx era) -fixupPPHash tx = impAnn "fixupPPHash" $ do - pp <- getsNES $ nesEsL . curPParamsEpochStateL - utxo <- getUTxO - let - scriptHashes :: Set (ScriptHash (EraCrypto era)) - scriptHashes = getScriptsHashesNeeded . getScriptsNeeded utxo $ tx ^. bodyTxL - plutusLanguage sh = do - let mbyPlutus = impLookupPlutusScriptMaybe sh - pure $ getLanguageView pp . plutusScriptLanguage @era <$> mbyPlutus - langs <- traverse plutusLanguage $ Set.toList scriptHashes - let - integrityHash = - hashScriptIntegrity - (Set.fromList $ catMaybes langs) - (tx ^. witsTxL . rdmrsTxWitsL) - (tx ^. witsTxL . datsTxWitsL) - pure $ - tx - & bodyTxL . scriptIntegrityHashTxBodyL .~ integrityHash - -fixupOutputDatums :: - forall era. - AlonzoEraImp era => - Tx era -> - ImpTestM era (Tx era) -fixupOutputDatums tx = impAnn "fixupOutputDatums" $ do - let - isDatum (Datum _) = True - isDatum _ = False - addDatum txOut = - case txOut ^. addrTxOutL of - Addr _ (ScriptHashObj sh) _ -> do - case impGetScriptContextMaybe @era sh of - Just (ScriptTestContext _ (PlutusArgs _ mbySpendDatum)) - | not $ isDatum (txOut ^. datumTxOutF) -> do - spendDatum <- - impAnn "Looking up spend datum" $ - expectJust mbySpendDatum - pure $ - txOut - & dataHashTxOutL .~ SJust (hashData @era $ Data spendDatum) - _ -> pure txOut - _ -> pure txOut - newOutputs <- traverse addDatum $ tx ^. bodyTxL . outputsTxBodyL - pure $ - tx - & bodyTxL . outputsTxBodyL .~ newOutputs - -alonzoFixupTx :: - ( ScriptsNeeded era ~ AlonzoScriptsNeeded era - , HasCallStack - , AlonzoEraImp era - ) => - Tx era -> - ImpTestM era (Tx era) -alonzoFixupTx = - addNativeScriptTxWits - >=> addCollateralInput - >=> addRootTxIn - -- We need to update the indices after adding the rootTxIn because the - -- indices of inputs might get bumped if the rootTxIn appears before them - >=> fixupRedeemerIndices - >=> fixupRedeemers - >=> fixupScriptWits - >=> fixupOutputDatums - >=> fixupDatums - >=> fixupPPHash - >=> fixupFees - >=> updateAddrTxWits - -mkScriptTestEntry :: - (PlutusLanguage l, Crypto c) => - Plutus l -> - PlutusArgs -> - (ScriptHash c, ScriptTestContext) -mkScriptTestEntry script args = - ( hashPlutusScript script - , ScriptTestContext - { stcScript = script - , stcArgs = args - } - ) - -plutusTestScripts :: - (Crypto c, PlutusLanguage l) => - SLanguage l -> - Map.Map (ScriptHash c) ScriptTestContext -plutusTestScripts lang = - Map.fromList - [ mkScriptTestEntry (alwaysSucceeds2 lang) $ PlutusArgs (P.I 0) Nothing - , mkScriptTestEntry (alwaysSucceeds3 lang) $ PlutusArgs (P.I 0) (Just $ P.I 0) - , mkScriptTestEntry (alwaysFails2 lang) $ PlutusArgs (P.I 0) Nothing - , mkScriptTestEntry (alwaysFails3 lang) $ PlutusArgs (P.I 0) (Just $ P.I 0) - , mkScriptTestEntry (guessTheNumber2 lang) $ PlutusArgs (P.I 3) Nothing - , mkScriptTestEntry (guessTheNumber3 lang) $ PlutusArgs (P.I 3) (Just $ P.I 3) - , mkScriptTestEntry (evendata3 lang) $ PlutusArgs (P.I 4) (Just $ P.I 0) - , mkScriptTestEntry (odddata3 lang) $ PlutusArgs (P.I 3) (Just $ P.I 0) - , mkScriptTestEntry (evenRedeemer3 lang) $ PlutusArgs (P.I 0) (Just $ P.I 2) - , mkScriptTestEntry (oddRedeemer3 lang) $ PlutusArgs (P.I 0) (Just $ P.I 3) - , mkScriptTestEntry (sumsTo103 lang) $ PlutusArgs (P.I 4) (Just $ P.I 6) - , mkScriptTestEntry (oddRedeemer2 lang) $ PlutusArgs (P.I 0) Nothing - , mkScriptTestEntry (evenRedeemer2 lang) $ PlutusArgs (P.I 0) Nothing - , mkScriptTestEntry (redeemerIs102 lang) $ PlutusArgs (P.I 0) Nothing - ] - -instance - ( Crypto c - , NFData (SigDSIGN (DSIGN c)) - , NFData (VerKeyDSIGN (DSIGN c)) - , DSIGN c ~ Ed25519DSIGN - , Signable (DSIGN c) (Hash (HASH c) EraIndependentTxBody) - ) => - ShelleyEraImp (AlonzoEra c) - where - initImpNES = initAlonzoImpNES - impSatisfyNativeScript = impAllegraSatisfyNativeScript - fixupTx = alonzoFixupTx - -instance ShelleyEraImp (AlonzoEra c) => AlonzoEraImp (AlonzoEra c) where - scriptTestContexts = plutusTestScripts SPlutusV1 - -impGetScriptContextMaybe :: - forall era. - AlonzoEraImp era => - ScriptHash (EraCrypto era) -> - Maybe ScriptTestContext -impGetScriptContextMaybe sh = Map.lookup sh $ scriptTestContexts @era - -impGetScriptContext :: - forall era. - AlonzoEraImp era => - ScriptHash (EraCrypto era) -> - ImpTestM era ScriptTestContext -impGetScriptContext sh = - impAnn ("Getting script context for " <> show sh) - . expectJust - $ impGetScriptContextMaybe @era sh diff --git a/eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/TreeDiff.hs b/eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/TreeDiff.hs deleted file mode 100644 index 1a9d735ae5f..00000000000 --- a/eras/alonzo/impl/testlib/Test/Cardano/Ledger/Alonzo/TreeDiff.hs +++ /dev/null @@ -1,174 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE MonoLocalBinds #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Alonzo.TreeDiff ( - module Test.Cardano.Ledger.Mary.TreeDiff, -) where - -import Cardano.Ledger.Alonzo (AlonzoEra) -import Cardano.Ledger.Alonzo.Core -import Cardano.Ledger.Alonzo.PParams -import Cardano.Ledger.Alonzo.Plutus.Context -import Cardano.Ledger.Alonzo.Plutus.Evaluate -import Cardano.Ledger.Alonzo.Plutus.TxInfo -import Cardano.Ledger.Alonzo.Rules -import Cardano.Ledger.Alonzo.Scripts -import Cardano.Ledger.Alonzo.Tx -import Cardano.Ledger.Alonzo.TxAuxData -import Cardano.Ledger.Alonzo.TxBody -import Cardano.Ledger.Alonzo.TxWits -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.Compactible -import Cardano.Ledger.Plutus.Evaluate (PlutusWithContext (..)) -import Cardano.Ledger.Shelley.Rules -import qualified Data.TreeDiff.OMap as OMap -import Test.Cardano.Ledger.Mary.TreeDiff - --- Scripts -instance ToExpr (PlutusScript (AlonzoEra c)) - -instance ToExpr (PlutusScript era) => ToExpr (AlonzoScript era) - -instance ToExpr (AlonzoPlutusPurpose AsIx era) - -instance ToExpr (TxCert era) => ToExpr (AlonzoPlutusPurpose AsItem era) - -deriving newtype instance ToExpr ix => ToExpr (AsIx ix it) - -deriving newtype instance ToExpr it => ToExpr (AsItem ix it) - --- Core -deriving newtype instance ToExpr CoinPerWord - --- TxAuxData -instance ToExpr (AlonzoTxAuxDataRaw era) - -instance ToExpr (AlonzoTxAuxData era) - --- PParams -deriving newtype instance ToExpr OrdExUnits - -instance ToExpr (AlonzoPParams StrictMaybe era) - -instance ToExpr (AlonzoPParams Identity era) - --- TxWits -instance ToExpr (PlutusPurpose AsIx era) => ToExpr (RedeemersRaw era) - -instance ToExpr (PlutusPurpose AsIx era) => ToExpr (Redeemers era) - -instance - ( Era era - , ToExpr (TxDats era) - , ToExpr (Redeemers era) - , ToExpr (Script era) - ) => - ToExpr (AlonzoTxWitsRaw era) - -instance - ( Era era - , ToExpr (TxDats era) - , ToExpr (Redeemers era) - , ToExpr (Script era) - ) => - ToExpr (AlonzoTxWits era) - -instance ToExpr (Data era) => ToExpr (TxDatsRaw era) - -instance ToExpr (Data era) => ToExpr (TxDats era) - --- TxOut -instance ToExpr Addr28Extra - -instance ToExpr DataHash32 - -instance ToExpr (CompactForm (Value era)) => ToExpr (AlonzoTxOut era) - --- TxBody -instance - (Era era, ToExpr (TxOut era), ToExpr (TxCert era), ToExpr (PParamsUpdate era)) => - ToExpr (AlonzoTxBodyRaw era) - -instance - (Era era, ToExpr (TxOut era), ToExpr (TxCert era), ToExpr (PParamsUpdate era)) => - ToExpr (AlonzoTxBody era) - --- Tx -instance ToExpr IsValid - -instance - (ToExpr (TxBody era), ToExpr (TxWits era), ToExpr (TxAuxData era)) => - ToExpr (AlonzoTx era) - --- Plutus/TxInfo -instance ToExpr (AlonzoContextError era) - -instance - ( ToExpr (ContextError era) - , ToExpr (PlutusPurpose AsItem era) - , ToExpr (TxCert era) - ) => - ToExpr (CollectError era) - --- Rules/Utxo -instance - ( ToExpr (Value era) - , ToExpr (TxOut era) - , ToExpr (PredicateFailure (EraRule "UTXOS" era)) - ) => - ToExpr (AlonzoUtxoPredFailure era) - --- Rules/Utxos -instance ToExpr FailureDescription - -instance ToExpr TagMismatchDescription - -instance - ( ToExpr (PlutusPurpose AsItem era) - , ToExpr (EraRuleFailure "PPUP" era) - , ToExpr (ContextError era) - , ToExpr (TxCert era) - ) => - ToExpr (AlonzoUtxosPredFailure era) - --- Rules/Utxow -instance - ( Era era - , ToExpr (PlutusPurpose AsIx era) - , ToExpr (PlutusPurpose AsItem era) - , ToExpr (PredicateFailure (EraRule "UTXO" era)) - , ToExpr (TxCert era) - ) => - ToExpr (AlonzoUtxowPredFailure era) - -instance ToExpr (Event (EraRule "UTXO" era)) => ToExpr (AlonzoUtxowEvent era) - -instance ToExpr (Event (EraRule "UTXOS" era)) => ToExpr (AlonzoUtxoEvent era) - -instance - ( ToExpr (EraRuleEvent "PPUP" era) - , ToExpr (TxOut era) - , ToExpr (PlutusWithContext (EraCrypto era)) - ) => - ToExpr (AlonzoUtxosEvent era) - -instance - ToExpr (ScriptHash c) => - ToExpr (PlutusWithContext c) - where - toExpr PlutusWithContext {..} = - Rec "PlutusWithContext" $ - OMap.fromList - [ ("pwcProtocolVersion", toExpr pwcProtocolVersion) - , ("pwcScriptHash", toExpr pwcScriptHash) - , ("pwcExUnits", toExpr pwcExUnits) - , ("pwcCostModel", toExpr pwcCostModel) - ] diff --git a/eras/alonzo/test-suite/.ghcid b/eras/alonzo/test-suite/.ghcid deleted file mode 100644 index 65b5a340f4a..00000000000 --- a/eras/alonzo/test-suite/.ghcid +++ /dev/null @@ -1 +0,0 @@ ---command="cabal repl --repl-options='-isrc -fwarn-unused-binds -fwarn-unused-imports -fno-code -fobject-code -g2 -fno-break-on-exception -fno-break-on-error -ferror-spans -j -Wno-unused-packages'" --clear --no-height-limit --reverse-errors --reload=../../../ --outputfile=/tmp/cardano-ledger-alonzo-test-ghcid.txt \ No newline at end of file diff --git a/eras/alonzo/test-suite/CHANGELOG.md b/eras/alonzo/test-suite/CHANGELOG.md deleted file mode 100644 index 7464aa98a28..00000000000 --- a/eras/alonzo/test-suite/CHANGELOG.md +++ /dev/null @@ -1,42 +0,0 @@ -# Version history for `cardano-ledger-alonzo-test` - -## 1.2.1.1 - -* - -## 1.2.1.0 - -* Replaced `small-steps-test` dependency with `small-steps:testlib` - -## 1.2.0.0 - -* Change type signature of `genTranslationInstance`. It no longer accepts a list of - supported languages - -## 1.1.2.7 - -* Move `cddl-files` to `cardano-ledger-alonzo` - -## 1.1.2.6 - -* - -## 1.1.2.5 - -* - -## 1.1.2.4 - -* - -## 1.1.2.3 - -* - -## 1.1.2.2 - -* - -## 1.1.2.1 - -* diff --git a/eras/alonzo/test-suite/cardano-ledger-alonzo-test.cabal b/eras/alonzo/test-suite/cardano-ledger-alonzo-test.cabal deleted file mode 100644 index 95b08250a8e..00000000000 --- a/eras/alonzo/test-suite/cardano-ledger-alonzo-test.cabal +++ /dev/null @@ -1,132 +0,0 @@ -cabal-version: 3.0 -name: cardano-ledger-alonzo-test -version: 1.2.1.1 -license: Apache-2.0 -maintainer: operations@iohk.io -author: IOHK -bug-reports: https://github.com/intersectmbo/cardano-ledger/issues -synopsis: Tests for Cardano ledger introducing Plutus Core -description: - This package builds upon the Mary ledger with support for extended UTxO - via Plutus Core. - -category: Network -build-type: Simple -data-files: - golden/*.cbor - golden/*.json - -source-repository head - type: git - location: https://github.com/intersectmbo/cardano-ledger - subdir: eras/alonzo/test-suite - -library - exposed-modules: - Test.Cardano.Ledger.Alonzo.AlonzoEraGen - Test.Cardano.Ledger.Alonzo.EraMapping - Test.Cardano.Ledger.Alonzo.Examples.Consensus - Test.Cardano.Ledger.Alonzo.Serialisation.Generators - Test.Cardano.Ledger.Alonzo.Scripts - Test.Cardano.Ledger.Alonzo.Translation.TranslationInstance - Test.Cardano.Ledger.Alonzo.Translation.TranslatableGen - Test.Cardano.Ledger.Alonzo.Translation.Golden - Test.Cardano.Ledger.Alonzo.Trace - - hs-source-dirs: src - other-modules: Paths_cardano_ledger_alonzo_test - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints - -Wunused-packages - - build-depends: - base >=4.14 && <5, - bytestring, - cardano-ledger-alonzo:{cardano-ledger-alonzo, testlib} >=1.7, - cardano-ledger-binary:{cardano-ledger-binary, testlib} >=1.0, - cardano-ledger-core:{cardano-ledger-core, testlib} >=1.11 && <1.12, - cardano-ledger-allegra >=1.2, - cardano-ledger-shelley:{cardano-ledger-shelley, testlib} >=1.6 && <1.11, - cardano-ledger-shelley-test >=1.2, - cardano-ledger-shelley-ma-test ^>=1.2, - cardano-ledger-mary >=1.4, - cardano-protocol-tpraos >=1.0, - cardano-slotting, - cardano-strict-containers, - cborg, - containers, - data-default-class, - microlens, - plutus-ledger-api ^>=1.25.0, - QuickCheck, - random, - serialise, - small-steps:{small-steps, testlib} >=1.1, - tasty-hunit, - time, - transformers - -executable gen-golden - main-is: GenerateGoldenFileMain.hs - hs-source-dirs: test - other-modules: Paths_cardano_ledger_alonzo_test - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints - -Wunused-packages - - build-depends: - base, - cardano-ledger-alonzo, - cardano-ledger-alonzo-test - -test-suite cardano-ledger-alonzo-test - type: exitcode-stdio-1.0 - main-is: Tests.hs - hs-source-dirs: test - other-modules: - Test.Cardano.Ledger.Alonzo.ChainTrace - Test.Cardano.Ledger.Alonzo.Golden - Test.Cardano.Ledger.Alonzo.GoldenTranslation - Test.Cardano.Ledger.Alonzo.PlutusScriptExamples - Test.Cardano.Ledger.Alonzo.Serialisation.Canonical - Test.Cardano.Ledger.Alonzo.Serialisation.Tripping - Test.Cardano.Ledger.Alonzo.Translation - Test.Cardano.Ledger.Alonzo.TxInfo - Paths_cardano_ledger_alonzo_test - - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints - -Wunused-packages - - build-depends: - base, - aeson >=2, - base16-bytestring, - bytestring, - cardano-ledger-alonzo:{cardano-ledger-alonzo, testlib}, - cardano-ledger-alonzo-test, - cardano-ledger-binary:{cardano-ledger-binary, testlib}, - cardano-ledger-core:{cardano-ledger-core, testlib}, - cardano-ledger-mary:{cardano-ledger-mary, testlib}, - cardano-ledger-shelley-ma-test, - cardano-protocol-tpraos, - cardano-slotting, - containers, - data-default-class, - plutus-ledger-api, - QuickCheck, - small-steps:{small-steps, testlib} >=1.1, - cardano-ledger-shelley:{cardano-ledger-shelley, testlib}, - cardano-ledger-shelley-test, - microlens, - cardano-strict-containers, - tasty, - tasty-hunit, - tasty-quickcheck, - time diff --git a/eras/alonzo/test-suite/golden/FailureDescription.json b/eras/alonzo/test-suite/golden/FailureDescription.json deleted file mode 100644 index 66176a2ba90..00000000000 --- a/eras/alonzo/test-suite/golden/FailureDescription.json +++ /dev/null @@ -1 +0,0 @@ -[{"description":"A description","error":"PlutusFailure","kind":"FailureDescription"}] diff --git a/eras/alonzo/test-suite/golden/IsValid.json b/eras/alonzo/test-suite/golden/IsValid.json deleted file mode 100644 index b29ad08f1ee..00000000000 --- a/eras/alonzo/test-suite/golden/IsValid.json +++ /dev/null @@ -1 +0,0 @@ -[true,false] diff --git a/eras/alonzo/test-suite/golden/TagMismatchDescription.json b/eras/alonzo/test-suite/golden/TagMismatchDescription.json deleted file mode 100644 index 7edf8757fd2..00000000000 --- a/eras/alonzo/test-suite/golden/TagMismatchDescription.json +++ /dev/null @@ -1 +0,0 @@ -[{"error":"PassedUnexpectedly","kind":"TagMismatchDescription"},{"error":"FailedUnexpectedly","kind":"TagMismatchDescription","reconstruction":[{"description":"A description","error":"PlutusFailure","kind":"FailureDescription"}]}] diff --git a/eras/alonzo/test-suite/golden/ValidityInterval.json b/eras/alonzo/test-suite/golden/ValidityInterval.json deleted file mode 100644 index ec77b70a517..00000000000 --- a/eras/alonzo/test-suite/golden/ValidityInterval.json +++ /dev/null @@ -1 +0,0 @@ -[{},{"invalidBefore":12345},{"invalidHereafter":12354},{"invalidBefore":12345,"invalidHereafter":12354}] diff --git a/eras/alonzo/test-suite/golden/block.cbor b/eras/alonzo/test-suite/golden/block.cbor deleted file mode 100644 index 5808f3e47f5f49342cf00553740e33c80b43712e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1865 zcmai!X*iS%6vy9p#*CRMWb2yCFwr)n7)vhMvyDk5iMNF;*)_w=FqV|}wO&i9Y)PJ( zh&EeUVicu9gBnFlS|};klBMXT>*{{IAM!ls+xb8L|L-~HJSPb`jmAS{A+2PKy3glI z$q~ZtG&kKC#Y;|Oz$APoHu-i@yrR-Ih@6)C?iCk5o%6%xPlmQf$ZWm93^zGhZ?b~@X=0?=O z!CF-O*7Bd6Q|tjxlZ<^sq|a6=6UxwpyqZ-4bG+^DWm_<7Aeh z{t4U^@%e8pove$4MXl>(%lMOiN?qwVWg-DL-#we}>Z`1?=1qA~U(1D~s-Y_D9Z&IK z#&LzWwA@m&KC+vwFXW8hJ7F<{^|a1?imN5~3N5q;3y!`Cn3@}=-EyT+NK+2}iSoOp zZQL)n8#YIeJ%LPFpBBa9lYbD4NuOd$B%b!PD%W+}idHch7hZ&hoLxo4Qy?@0^hlxS?f>FB$XLW`l+DwE{6m|QDr zLFM$=0yQIKuuDAy{$WY#mb06*rTpnXqf$QQ)g!y-RUMZ~kHz6TgAdkr)X2fd!#%!0 zm2uK_Dy-E{^uj&we+TlVX*bpee|7&5fW=h~HT#hqnP7F>l6sB3QvVZi{X6X~6cfX< zMx6wSl1FA{%m8sp-K$+#uJ>}{+iXr^9)`bK=}OdI?6r3q`>#K&p1~E~oj#TgPD5c% z>U+3y;TxW`0aq{PJvGp|am!+7Q|9%}>~U@LZ$paZlE1`m&5!oHY18-KMV$~6pkl{! z^;H=Nb@rO~p%CGPjju<1Dd($3UH@4z{CB;Za*-gXH2o?bZKly=lhs0fH zVck|44MIoV_t})F&c=(k^{4~VSdBAVWl=SiyTIV^9QsW*WmW#dD z`kk@yhooY08>|IVL^(cyL&+{Pt z4srW3j@|j;hS_zmZBrG=xBNTJAMks_z0AW#{)+fi0Z diff --git a/eras/alonzo/test-suite/golden/hex-block-node-issue-4228.cbor b/eras/alonzo/test-suite/golden/hex-block-node-issue-4228.cbor deleted file mode 100644 index 29736450c93..00000000000 --- a/eras/alonzo/test-suite/golden/hex-block-node-issue-4228.cbor +++ /dev/null @@ -1 +0,0 @@ -85828f1a00732af21a0402ab19582036bb06938a6ce453d5a357ba486d9d15aa23743cfb5d425e3593ca03b51428c858205a0fa4a3f0c398be9c03fe3611fde09cbd4c32fc287b3f8f5a303318082afd35582072c6324a56c5fde420ff0f324247e0fadb9b8d716d3564316c5c31cfcf26c32d825840fc49185820ef32a787a31d3b33528e91587b78303d8e198a8839509b03be5155aec3ed458453f4c009f50e9e0c5bbb8f779452ce7263a5e899b09add9b9f358d585033b2576655184276bb9652a8af9e468ae53692adbd6c7ddf0f5a0bfb1ae6472826a4bc67e2eab640f64391a9168274b965b59ac14f8e8f5da7668f1746a6de698fcddc7c7d866a0b543170826843600c825840000236845b7338d6d7d676fd5d95e0eecba5b402ee83d794a86aa1bdf476362a6300f37050fe3281e17f5fe6492d7a8c443ddffbe1061f541e8b7548af1fbdbf5850384d42f298789d679397821c6a619b2a2adb323d60198bca243c82140196aa276c2e53f97ae6fbba7339c70a449eac833df53b1875abc31f0e20b2b154a2314e03a950bf1890ad7a36c57792f32cf4011a00010c2c58205d2acff0c9c5c54f4c7becff9972c3a366cd4384921b754e9d2cfd996bdf1cea5820664469502e7b1a5d0eecf412a897b1eeffa1ddaf56004b7b0c7940b1175fda850a1901f358401ffd155349fa5d080240ab473281f450c35edd6f1d5a64d4e320909d4d34dddcfcdb0758c20ed65e4f45477e31b73d0a8035c1330517f05927934a13e736370007005901c0399258fa6d88fe65fc14a311e0413180dcfaecb6b69796ff316a5f3fefab0888216bfc10e3123057a41e91e9a63bab712f2ce1928f5062113c4445082fcf250bd17463e76141a86bf1f90696707c6d3d361bef6a2f30b249221612b0d0a870873bb945d41ec70d57c9d2a3e4ffda2bb55127f266a6cf317b868ccbb9198b5063fba4ac05cf56cee8b4ce6d214e3645dbfead8f16c8e6c19c037e296fed4a45a4a74c704d0a442d3001fde6b876cccf81f22ef583aef79b74fd3ba22dc0d539140db9bb1390768bfa19e6a3afc98a13516019e1ef3f9e2eb978f63a0856378c7798fd70ac766af54e0f29e380133526a20a74df60de5966b72534eb5b1a7038fc44229d8068d23d0b6eff970ae80d1bb661aa7ac3ca663215fe4c70ef6f954bf0c9b52682f8e057ff6e4613f53f795f29fd759ea9a5bc867fc86cdff583a72f45628e45a5edc11b9d375c22f39a307cc3e7f2d7da1a862b52ae38253434b2b953f6544610092cb53bfc3cecb57d5a30c5b4035aafd470baabfd804cdd3ed96820982324c22e6e64cefe83c81129ff2317c8e85a76a528bb343c01e06959c6125bc4d06c3f66d34f49976f0dd518dc725445d3d2b6e7fe1a5f7f07099f404b372d92a60082825820f62596501cf723d5089842befb6558c74467aff19f62812700ac2147b1b3c948008258206b50c416ba6b945507bafd24410abb2208d2575f6ce362fb26f4f2fa2f4a45580401828258390133318e7ff4fd4c1be92a183f9df5200d954a0bfdcdbad0e6f280fa5d76c22769aba8c2e8f3b6623c0f3592618d7e6accd684ee05b1ae0747821a001e8480a1581cf0ff48bbb7bbe9d59a40f1ce90e9e9d0ff5002ec48f232b49ca0fb9aa14774617264757374018258390133318e7ff4fd4c1be92a183f9df5200d954a0bfdcdbad0e6f280fa5d76c22769aba8c2e8f3b6623c0f3592618d7e6accd684ee05b1ae07471a003d01db021a000f49650b5820d5e716dbb55644dccb049747406023c007d907a546b81bea2bca285e1794b1a00d83825820a90eedc78232dd2d223d2e338f9e3ca177829764a8ccefca261f84e4099d8b79048258206b50c416ba6b945507bafd24410abb2208d2575f6ce362fb26f4f2fa2f4a455804825820601d6835795d901f1372d3563c0b43a8b40b97198035033664f8181f23f4c59e000e81581c33318e7ff4fd4c1be92a183f9df5200d954a0bfdcdbad0e6f280fa5da600838258205f8b3faf4b308b6906a09af96633fe6d304bcf2dd4a9143aa60da87bca6e37db00825820ee71f3a923a6884dfbe41c537a2daa341cee8cb8c24ccc7e7972edaa83c4b8cf008258205fde6536f622b0be2f911250d313d6b03d76c204c7ca7372a30f30b7b0795c970001828258390133318e7ff4fd4c1be92a183f9df5200d954a0bfdcdbad0e6f280fa5d76c22769aba8c2e8f3b6623c0f3592618d7e6accd684ee05b1ae0747821a001e8480a1581cf0ff48bbb7bbe9d59a40f1ce90e9e9d0ff5002ec48f232b49ca0fb9aa14a69676e69666963616e74018258390133318e7ff4fd4c1be92a183f9df5200d954a0bfdcdbad0e6f280fa5d76c22769aba8c2e8f3b6623c0f3592618d7e6accd684ee05b1ae0747821a002866a7a2581c372b988d54c5ae6468daf62a72d24837495ea92dc0a6e57f9e518101a44a48616c69656e30303530014a48616c69656e30373431014a48616c69656e32353239014a48616c69656e3239373401581cf0ff48bbb7bbe9d59a40f1ce90e9e9d0ff5002ec48f232b49ca0fb9aa1477461726475737401021a000f5f390b58203fe090c031d08fddce9c81177e91aabba6856b7859b4bc02b911a8ae91c44a980d82825820a90eedc78232dd2d223d2e338f9e3ca177829764a8ccefca261f84e4099d8b7904825820601d6835795d901f1372d3563c0b43a8b40b97198035033664f8181f23f4c59e000e81581c33318e7ff4fd4c1be92a183f9df5200d954a0bfdcdbad0e6f280fa5da70083825820c5b02f8992942f94377ba2297f9a44e55daddd1d2586b46fb67b3e3d0cc7e57c01825820c5b02f8992942f94377ba2297f9a44e55daddd1d2586b46fb67b3e3d0cc7e57c00825820c5b02f8992942f94377ba2297f9a44e55daddd1d2586b46fb67b3e3d0cc7e57c02018383583911a55f409501bf65805bb0dc76f6f9ae90b61e19ed870bc0025681360881728e7ed4cf324e1323135e7e6d931f01e30792d9cdf17129cb806d1a04c4b4005820b92c7eea4b39b66718bb9cee2d290b4140e7e89276a403f2ada95043ba91347d82583901752a54749b04cb9796db37faa3d572f0b2ca2ac5202f0930d1a8cea65dd2041f5b92105604aeb934f86599bbf5e62a54c2cf08c54b5c8ad91a004c4b4082583901752a54749b04cb9796db37faa3d572f0b2ca2ac5202f0930d1a8cea65dd2041f5b92105604aeb934f86599bbf5e62a54c2cf08c54b5c8ad91a04388224021a00036d02031a0402b903075820928cb29a2d5c08639b6fed29219aeffa5b7d46fedd2b2c6d8dc51fcf10ef7a72081a0402aaf30e81581c752a54749b04cb9796db37faa3d572f0b2ca2ac5202f0930d1a8cea6a600818258205d437ac1ed0e8967e6449ae9265dd477f6744b91a390f96d59a1673cc241d54b010181825839015523975678d2656389494414413c4fdaeac784bfad7241891a9e1ccfaa435a0bfc18164001791d78c56af1a6e15848b9e6d59bd9cb9a8c3a1b00000002778d204d021a0002a515031a0402c6d8048182018200581caa435a0bfc18164001791d78c56af1a6e15848b9e6d59bd9cb9a8c3a05a1581de1aa435a0bfc18164001791d78c56af1a6e15848b9e6d59bd9cb9a8c3a1a295fd15ea800858258201b6737fcfd25e79341a1c14a55d0cbd6ecaf91c5a17166b0ae9e094ff9ea3eb80082582035c7d85b7ebd23e7b34b3e2158058b9228ca404c555653073852a11ec293ca56008258204a3dda57e99b26fdc823c836364d28e89460f0dc418ad46d5336e69b41eb0e9301825820d06d8a1157a75cbf15be651e685953d8fe00b52c58c08cff0ae066f0f656d22a00825820e629570b7b91f6f3226ebe3615195109ac546ac4227a9bb5ae8a1638e36d4387040d8182582035c7d85b7ebd23e7b34b3e2158058b9228ca404c555653073852a11ec293ca5600018582581d612ebacbaf16275a0184357de07c81d4a895f29343c235974f3b4c1d7d1a07cdf4bf82581d612ebacbaf16275a0184357de07c81d4a895f29343c235974f3b4c1d7d821a00150bd0a1581c2f2e0404310c106e2a260e8eb5a7e43f00cff42c667489d30e179816a14d313636303536363930363338370182583901cf16cf016f4a4952403e22ae1c02c02bc9413b7edb705640cb78ea10f592e2f4158556f0ff82439aa0011b813d92f0aed34ae605bd1d5e3e1a4ba08b7b825839012565dfe12f53eb5db12bb707d720be07bc91464c2a0f03df8cc16f9c2411c27854bd121f398d5bb965c35c07a843d7f3ab85c531a856701e821a59d2fec0a1581c6f46e1304b16d884c85c62fb0eef35028facdc41aaa0fd319a152ed6a1444d434f531a03cfbd8983583911e1317b152faac13426e6a83e06ff88a4d62cce3c1634ab0a5ec1330952563c5410bff6a0d43ccebb7c37e1f69f5eb260552521adff33b9c2821b0000015f0f941939a3581c0be55d262b29f564998ff81efe21bdc0022621c12f15af08d0f2ddb1a15820cea292f40d57247753653a1b089d2eabff3b48521120a412d4f9f0323da9a32701581c13aa2accf2e1561723aa26871e071fdf32c867cff7e7d50ad470d62fa1474d494e5357415001581c6f46e1304b16d884c85c62fb0eef35028facdc41aaa0fd319a152ed6a1444d434f531b0000118f1ef6f70858207669ea58a0e1af8ae30561eabe50494754fc85836bff40146b5db5c7e8fbb700021a000dac92031a0402aedb0e81581c2ebacbaf16275a0184357de07c81d4a895f29343c235974f3b4c1d7d0b58202b634e0a0fd9a9ad5196775d8c7d7dc5d07a7c64fb20775a22c01efba05df79707582078798f332d87bea1480dde2f75bcf0f0aa5c4cc55eaff95c25dfc12ed97a1350a60081825820bd0f718a720db705eabafe262273b0ed09b4be3929c15935c810b986321233c900018682583901a5d7479b676e7a0225502b013a270024aa2ab28df32e7d24189344fba3f0bddda4666031388ce8dddda3f75125c1e3f1762c9283db62e58d1a000f424082583901a5d7479b676e7a0225502b013a270024aa2ab28df32e7d24189344fba3f0bddda4666031388ce8dddda3f75125c1e3f1762c9283db62e58d1a000f424082583901a5d7479b676e7a0225502b013a270024aa2ab28df32e7d24189344fba3f0bddda4666031388ce8dddda3f75125c1e3f1762c9283db62e58d1a000f424082583901a5d7479b676e7a0225502b013a270024aa2ab28df32e7d24189344fba3f0bddda4666031388ce8dddda3f75125c1e3f1762c9283db62e58d1a000f424082583901a5d7479b676e7a0225502b013a270024aa2ab28df32e7d24189344fba3f0bddda4666031388ce8dddda3f75125c1e3f1762c9283db62e58d1a000f424082583901a5d7479b676e7a0225502b013a270024aa2ab28df32e7d24189344fba3f0bddda4666031388ce8dddda3f75125c1e3f1762c9283db62e58d1b00000009e00e3cfc021a0002dcf1031a0402c6f5048182018200581ca3f0bddda4666031388ce8dddda3f75125c1e3f1762c9283db62e58d05a1581de1a3f0bddda4666031388ce8dddda3f75125c1e3f1762c9283db62e58d1a4fa84546a600828258209c1d600d18d45149c6d762160dbc989f5c77b2a9cb298b285b75c7a68cf35ff2018258209c1d600d18d45149c6d762160dbc989f5c77b2a9cb298b285b75c7a68cf35ff202018283581d71a65ca58a4e9c755fa830173d2a5caed458ac0c73f97db7faae2e7e3b821a003d0900a1581ce4214b7cce62ac6fbba385d164df48e157eae5863521b4b67ca71d86a15820cea292f40d57247753653a1b089d2eabff3b48521120a412d4f9f0323da9a3271afd3ea60e5820fa5602513ecb8e3518a6335ee0b9b02023549c3d8aa7f84d87d8c285b4ecb679825839013f561bfaaf483a3dc74d4a012441c4b5c1d186888d2fbad5cdc924498abedb0643918cba37203061d71cc0398d5cac6e14a47c58e41dfa36821a07a854b3ac581c0a1edba9b8221b65291757308abc4f85b1bf8a6c19ef0b8e62f1d90bb83248426165205368756e0148446f6920436f72610148446f69204c656e6101484a696e204861727501484c6565204461776e014851756f6e204176610149417a756d612045756e0149446f6920536869726f01494e616d204b796f6b6f01494f79616d61204f6b6901495a68656e6720456d69014a446f692048616e616b6f014a456e646f20416e6e6965014a476f746f20416e6e6965014a4a696e204a692d576f6e014a4b696d204a692d536f6f014a4d696b616d69204d696e014a4e616d2054616d61796f014a4f79616d612054686561014a51756f6e20486f736869014a5265652053752d4a696e014a57616e67204b617a7565014a5869616f204761626279014a5869616f204b616f7269014a59616d6164612045756e014a5a68656e67204e616d69014b426165204b757368696e61014b476f746f20486172756e61014b476f746f204b7572756d69014b476f746f204d6173616d69014b4f79616d61205961796f69014b54616a696d612059756d69014b54616a696d612059756e6f014b57616e67204b616e6f6b6f014b5869616f204d6173616b6f014b5a68656e67204e616f6d69014c46756a696b617761204f6b69014c48616d61646120456d696b6f014c5869616f204b757368696e61014c59616d616461205961796f69014c5a68656e6720497473756b69014d46756a696b617761204a692d55014d476f746f20596f6f2d4a756e67014d5563686979616d612053757a79014d59616d6164612054616b617261014e54616a696d61204d616368696b6f014e5563686979616d6120416b616d65014e5563686979616d61204b61656465014f476f746f204779656f6e672d53756b0150496368696b617761205365756c2d476901581c0af69d267670bfc1bea2c591b95131688b201f499310360e52cee812b823504d6f636f7373694c616e64303030353101504d6f636f7373694c616e64303032313301504d6f636f7373694c616e64303036353501504d6f636f7373694c616e64303039343001504d6f636f7373694c616e64303131333201504d6f636f7373694c616e64303131333701504d6f636f7373694c616e64303133313801504d6f636f7373694c616e64303138353501504d6f636f7373694c616e64303239323801504d6f636f7373694c616e64303438353501504d6f636f7373694c616e64303534343101504d6f636f7373694c616e64303632323501504d6f636f7373694c616e64303633343901504d6f636f7373694c616e64303636393201504d6f636f7373694c616e64303734363101504d6f636f7373694c616e64303734373001504d6f636f7373694c616e64303737343201504d6f636f7373694c616e64303831383001504d6f636f7373694c616e64303930363401504d6f636f7373694c616e64303931303301504d6f636f7373694c616e64303931323201504d6f636f7373694c616e64303931333101504d6f636f7373694c616e64303931363601504d6f636f7373694c616e64303931373701504d6f636f7373694c616e64303931383001504d6f636f7373694c616e64303931393901504d6f636f7373694c616e64303932303201504d6f636f7373694c616e64303932373201504d6f636f7373694c616e64303933363101504d6f636f7373694c616e64303934303001504d6f636f7373694c616e64303934303301504d6f636f7373694c616e64303935353201504d6f636f7373694c616e64303936363901504d6f636f7373694c616e64303938303801504d6f636f7373694c616e64303939353801581c321717eeb2a65153aa32185c600936d0a6f7e5d211caa5c94c7f97feb8195348494d412048616c6c20506173732023303035015348494d412048616c6c20506173732023303131015348494d412048616c6c20506173732023303136015348494d412048616c6c20506173732023303232015348494d412048616c6c20506173732023303237015348494d412048616c6c20506173732023303332015348494d412048616c6c20506173732023303337015348494d412048616c6c20506173732023303432015348494d412048616c6c20506173732023303438015348494d412048616c6c20506173732023303439015348494d412048616c6c20506173732023303536015348494d412048616c6c20506173732023303630015348494d412048616c6c20506173732023303635015348494d412048616c6c20506173732023303730015348494d412048616c6c20506173732023303735015348494d412048616c6c20506173732023303830015348494d412048616c6c20506173732023303834015348494d412048616c6c20506173732023313834015348494d412048616c6c20506173732023313837015348494d412048616c6c20506173732023323139015348494d412048616c6c20506173732023323432015348494d412048616c6c20506173732023323633015348494d412048616c6c20506173732023323730015348494d412048616c6c20506173732023333032015348494d412048616c6c2050617373202333313001581c4bf184e01e0f163296ab253edd60774e2d34367d0e7b6cbc689b567da8525061766961506c7573313530506c7573393201525061766961506c7573313635506c7573353501525061766961506c7573313933506c75733332015350617669614d696e75733231334d696e75733601535061766961506c757339354d696e7573313738015450617669614d696e75733136374d696e75733138015450617669614d696e75733137344d696e75733135015550617669614d696e75733135334d696e757331333001581c4c3f8a1773b7813e537a75f7b1b2897996bdc0e1d6d7d0c11252e252b841504d6f636f73736949746f32303030383601504d6f636f73736949746f32303031323201504d6f636f73736949746f32303031373601504d6f636f73736949746f32303031393301504d6f636f73736949746f32303033343101504d6f636f73736949746f32303037303801504d6f636f73736949746f32303134323401504d6f636f73736949746f32303138353101504d6f636f73736949746f32303232363601504d6f636f73736949746f32303236313101504d6f636f73736949746f32303236323301504d6f636f73736949746f32303236323901504d6f636f73736949746f32303236333401504d6f636f73736949746f32303237353801504d6f636f73736949746f32303531303501504d6f636f73736949746f32303531303701504d6f636f73736949746f32303531303901504d6f636f73736949746f32303531323301504d6f636f73736949746f32303531333701504d6f636f73736949746f32303531353301504d6f636f73736949746f32303539353201504d6f636f73736949746f32303733323501504d6f636f73736949746f32303737353201504d6f636f73736949746f32303737353301504d6f636f73736949746f32303737353401504d6f636f73736949746f32303737353801504d6f636f73736949746f32313032383601504d6f636f73736949746f32313032383701504d6f636f73736949746f32313032383801504d6f636f73736949746f32313032393101504d6f636f73736949746f32313032393401504d6f636f73736949746f32313032393801504d6f636f73736949746f32313237373101504d6f636f73736949746f32313237373201504d6f636f73736949746f32313237373501504d6f636f73736949746f32313237373701504d6f636f73736949746f32313237373801504d6f636f73736949746f32313237383001504d6f636f73736949746f32313332333101504d6f636f73736949746f32313439383301504d6f636f73736949746f32313535333501504d6f636f73736949746f32313535333901504d6f636f73736949746f32313535343301504d6f636f73736949746f32313537313001504d6f636f73736949746f32313537313301504d6f636f73736949746f32313537313501504d6f636f73736949746f32313631363801504d6f636f73736949746f32313833383301504d6f636f73736949746f32313833383901504d6f636f73736949746f32313833393901504d6f636f73736949746f32313834303101504d6f636f73736949746f32313834303401504d6f636f73736949746f32313834303601504d6f636f73736949746f32313938363501504d6f636f73736949746f32313938363601504d6f636f73736949746f32313938363801504d6f636f73736949746f32313938373001504d6f636f73736949746f32313938373401504d6f636f73736949746f32313938373701504d6f636f73736949746f32323230333901504d6f636f73736949746f32323230343001504d6f636f73736949746f32323230343101504d6f636f73736949746f32323230343201504d6f636f73736949746f32323230343401504d6f636f73736949746f32323230343501581c5d5b205252b9f5016422d0eace869d7fd45074a4ea4b6c1dc78d1705ad4e4d6f636f73736949746f30313733014e4d6f636f73736949746f30353231014e4d6f636f73736949746f30393432014e4d6f636f73736949746f31333836014e4d6f636f73736949746f32353932014e4d6f636f73736949746f32363630014e4d6f636f73736949746f33303237014e4d6f636f73736949746f33343037014e4d6f636f73736949746f33343736014e4d6f636f73736949746f34373331014e4d6f636f73736949746f35353831014e4d6f636f73736949746f37333837014e4d6f636f73736949746f3939393601581c70ec4e94135a71250cdcd4b83f81a6e371abfb132c98650bf6e1175fa251546865416d6574687973744f6e653238320151546865416d6574687973744f6e6533353201581c852526a77c45662e981181ed9b0afca13cfd8e45c169a20b37832ea7ab464d617834333501465265783632380146536b793333370148417374726f3034320148437962657232303001484c7563696130353301484d7563636133343801485348454c4c303538014a4d697474656e73323337014b537061726b6c6573363639014c506176794a6f6e657332343301581c884892bcdc360bcef87d6b3f806e7f9cd5ac30d999d49970e7a903aea145504156494119c350581cd4473a78ae992ed6d95299e7177b45c8053d5db5495467a29ff0c780b2554d6f636f7373694d6167696350696c6c303536373801554d6f636f7373694d6167696350696c6c303634333801554d6f636f7373694d6167696350696c6c303738353101554d6f636f7373694d6167696350696c6c303838373201554d6f636f7373694d6167696350696c6c303932323101554d6f636f7373694d6167696350696c6c303932323901554d6f636f7373694d6167696350696c6c303932393001554d6f636f7373694d6167696350696c6c303939373301554d6f636f7373694d6167696350696c6c303939373501554d6f636f7373694d6167696350696c6c303939373601554d6f636f7373694d6167696350696c6c303939383001554d6f636f7373694d6167696350696c6c313130343301554d6f636f7373694d6167696350696c6c313432313401554d6f636f7373694d6167696350696c6c313432313501554d6f636f7373694d6167696350696c6c313432313601554d6f636f7373694d6167696350696c6c313432313701554d6f636f7373694d6167696350696c6c313432313801554d6f636f7373694d6167696350696c6c313432313901581cefd7bd84c73fa01400d3c892365ce90b203981aab678bcffb6f3406aa14a3432343837343133393001581cf0ff48bbb7bbe9d59a40f1ce90e9e9d0ff5002ec48f232b49ca0fb9aa14963757465746570696501021a0005be75031a0402d52d0758207cce1809afd843fd63688ede0a360bd003722f6f5652d327c4baa5edaace3db90b5820d01f241279626384d035423982b91f99d6bcaf95747947a1ba76b41f7678c5d2a80085825820fd625510d32235cacc07323c886748b8c5cd65e1eb2b6b75749a70d6908649fb0082582003b6680791c830a377b4e71744a107d57b4bf8a03add3cabb2ce7ca49fa9fe4a0182582040ea69038f8084b19ae37c02fcdea7eec69cdacdc80838d1b375b2d4f15d00990182582079b546a69fe5206d2efd3733bc947bbfef6be2643559a8fb355a96c80dda43380c82582040ea69038f8084b19ae37c02fcdea7eec69cdacdc80838d1b375b2d4f15d009902018682583901defea977fe110adb48fd3e446caa5cef7c4385299f0e763e079eca5c1f744f16189d1570bf081eac56d52bea9cf1a11344db310db0d43ed41a000f42408258390170e60f3b5ea7153e0acc7a803e4401d44b8ed1bae1c7baaad1a62a721e78aae7c90cc36d624f7b3bb6d86b52696dc84e490f343eba89005f1a000f4240825839017cf58d6e5f8d836f865720a1ba41f1825b113239d9638dcb7eb1337820ecc4fa5c505bc8c575af6fff54e79c14f42b3d68f19023ee0b044f1a007a120082583901defea977fe110adb48fd3e446caa5cef7c4385299f0e763e079eca5c1f744f16189d1570bf081eac56d52bea9cf1a11344db310db0d43ed4821a0017bac2a1581c77d5987385fc0b171742c1a3393cf7b65b81ddcb1cc7b7a8f2169866a15253696e67756c6172697469657330343831310182583901defea977fe110adb48fd3e446caa5cef7c4385299f0e763e079eca5c1f744f16189d1570bf081eac56d52bea9cf1a11344db310db0d43ed41a004c4b4082583901defea977fe110adb48fd3e446caa5cef7c4385299f0e763e079eca5c1f744f16189d1570bf081eac56d52bea9cf1a11344db310db0d43ed41a00329a65021a000dcfb9031a0402b8d4081a0402aac40b5820bd82bfb128e0b249866bd0dbb40376cbb3e603fcc2b7c1fa8bf531f6a9ffc5f00d81825820699d2a7cd83dcb4869ad5136adbebc55fc0f25b6c7bc83d39fd6f8f502afef15000e81581cdefea977fe110adb48fd3e446caa5cef7c4385299f0e763e079eca5ca600838258208fa7144909bfc30701d14ca2638263ae214eda0a65a063fc1a4cf13fe43e9f9204825820932d2ff83900c4fc0fb3070aaa4ebf1c7082c45029a1b20dd31d6ee1b5b30e2501825820de2e235e32352bfeb7a6d2a7f7a58c35e6c05bdd0506be3d8498ccfe4c97d197070d80018a82581d614478aeea3e2a7e050a1d1a3ed97486643305d724cbbf2ad8b41b9fde1b00000001f9c9ed2082584c82d818584283581c8723a71163ce6e9415b71f1a9fdfc5f8f0b7c4dab9d85dcb350ce322a101581e581cb49a3d160d1f3ea6c4adc28b9f744bf0fa9ce95a8d64eac17ea88e26001aaeb676951a1a11b2d382581d6112ba0ff860f653da5cd488bd5c156dc06dffd0e8fdba480dc26c99271a069ab000825839013be6fc205534c38ef19f0ee600221e67174b2e6c6db3d2eefbd26fb0c397e99c4b1a0ecb5588aa58914a1ba6db53ab08824f2b1ee2d246af1a29d2972682581d611bc839a0da49bc6ed52b6b4fd33ef7a671e72b81872d5b03efbfadbe1a13e44e0282584c82d818584283581ce777c995ea230ec44d65e813b0776dc6ed6228dd2995118e0a2805c8a101581e581cca3e553c9c63c5b634f6f9438239b12169f29855c5ca1e27c912bcf3001a385c28241a9acf086282584c82d818584283581c3908d91468a5ab8e4a8b949d71b33e331d45a34b812941b41b7e28d6a101581e581cca3e553c9c63c5858b3dbe436c895fe9b79726fb67662032401b6a52001ab367d0751a08091dde82584c82d818584283581ceb32d08fe31f937c27ac34c30ba9d57c4b05cc2e4fc31edf79e204f6a101581e581cca3e553c9c63c5e43fdfef435b92d34777aeedf0868ec5b818d85035001a4b9b6f921a021488d382584c82d818584283581cfac4711396a27eacddec3775de49369a4c43af60d00858521d074c02a101581e581cca3e553c9c63c5e81566f043702f211253bc78c7e5a396b7556a8ef5001a0811561e1a0cdb011382584c82d818584283581cedeb5281ca4a2b04645535346e0c4a9bdf7a5bbb31cfb3a1eb12b94da101581e581cca3e553c9c63c5d96dd539430b6f16014d7a63e447d8c304e4aed824001af4298ac61a0625479b021a000356cd031a0402c4120e80a900828258201dac10f9584118507079de73d8fc24d136d4399a648c46ce9ae39c4b888a52b6008258204ddcb951cfd2b338fa512a20997ca383318531d279c94275b2f885aa1133e88601018283583911a55f409501bf65805bb0dc76f6f9ae90b61e19ed870bc0025681360881728e7ed4cf324e1323135e7e6d931f01e30792d9cdf17129cb806d821a001a4ec4a1581ca484ff902de682d1c05158daf246b40b533a7a2b2e9f81a41ad48fe4a14b73706964657230303832320158201b752a8865f84c3a4870e41a44817c10337392f1aa17ca5e6b6b6e0eb6fc43a882583901932e5848d5d558df2c3b404edd53bdfb8838ad9ea70e067119c16f83bea787343e01f13ec94333d2304ab82db7fcf4462df490593dd215c91a003245c9021a0008a287031a0402b8d4075820b9418837d63f119528c377b599c9f3040f4d93b81763f045d5c86b3484af2fb5081a0402aac40b582076ad78eafdcb93704cde8641f63dac35a00996ba8a703a5dd6cba51ff6932e460d818258208badc259fc6ca8d8e95b971edd0e7a5b5a74f2ad6549e550bed9b1f341de409e000e81581c932e5848d5d558df2c3b404edd53bdfb8838ad9ea70e067119c16f83a700898258204dadde67adfe17f6859c8131da444793720262a6e6fb89ec375cc142370f5fea00825820774330e3e02d23e18a2b45368eccb83c32ef8c8e9ee94abd55dbca91f2c2dfd301825820aa2fbbb5f973efbd2ff6a747327c26433c9ff37949302babcf056ef0647fa2c601825820e7ec9fda96e49b004775ca60a594b861e2e3793a0b2b30fdb2a5bd1a58cbca8901825820240cfba6787a1b270e75dc252f1e4a8eea681f5e3738c1af9f61d7a0d0d26f17058258200d494984bee201445462a7ba9079803b6d102de32afe67d1e31addbe32149bb501825820240cfba6787a1b270e75dc252f1e4a8eea681f5e3738c1af9f61d7a0d0d26f1704825820240cfba6787a1b270e75dc252f1e4a8eea681f5e3738c1af9f61d7a0d0d26f1703825820f95c53af174e61707ac8427da396808973ee8ef645d1b9f32a50be9f0644dae801018582583901ae39902c1f8542c850d38755642b43379ef74e81ddd810551ef96a7ea2370fae4310d37739f55748737831af8a8ab1a56461f6d82984c9e11a05c6cbae82583901815f778a2ba10aa0fdc4acf1436e701f78d6f717361d4164c95dcfb77e9edebd75b1908b72519186c997cd98e6d62e5636f0e3aea1ee51401a002625a082583901941b9a725c68aa7cc61392808a87f34ed8d14a193a7f3898410ca96f093089fe55383aa1c67689dc0016609b4111345dc3be9a43d70a32a11a0025317c8258390114b85ff97720b1e033a7f5ff5ccbb482c5c38b7df57f245cafd0e6a2ac016335b1cd1c832a16acf25e93fe20df1c2ca623801bdd7dbaf091821a00150bd0a1581c9d0dd643ce0b3ba482dc8ba5ee69dba7c7a10f6d59ecc1e5142454bca14d4e617275426974733030323934018258390114b85ff97720b1e033a7f5ff5ccbb482c5c38b7df57f245cafd0e6a2ac016335b1cd1c832a16acf25e93fe20df1c2ca623801bdd7dbaf091821a027672c3b822581c0029cb7c88c7567b63d1a512c0ed626aa169688ec980730c0473b913a1446c7020201a00012696581c025146866af908340247fe4e9672d5ac7059f1e8534696b5f920c9e6a14563625448431a1dcd6500581c0c92aabef5a8f91a36470d0762806c165c0d04aa992541e25d55486aa1434243471a01312d00581c0fe7b9c1abbf139414d8e138721a85dd8d6e24ee7dc0d895587b4f57b8884a6a6330303030303030310f4a6a6330303030303030320d4a6a6330303030303030330f4a6a6330303030303030340a4a6a633030303030303035094a6a633030303030303036124a6a6330303030303030370e4a6a6330303030303030380b4a6a6330303030303030390e4a6a633030303030303130094a6a633030303030303131144a6a6330303030303031320b4a6a6330303030303031330e4a6a6330303030303031340b4a6a633030303030303135124a6a6330303030303031360e4a6a633030303030303137124a6a6330303030303031380c4a6a6330303030303031390e4a6a6330303030303032300b4a6a6330303030303032310a4a6a6330303030303032320e4a6a6330303030303032330f4a6a633030303030303234084a6a6330303030303032350e4a6a633030303030303236064a6a633030303030303237094a6a6330303030303032380b4a6a633030303030303239054a6a633030303030303330084a6a633030303030303331084a6a633030303030303332094a6a633030303030303333074a6a633030303030303334074a6a6330303030303033350c4a6a633030303030303336064a6a633030303030303337084a6a633030303030303338054a6a633030303030303339094a6a6330303030303034300f4a6a6330303030303034310b4a6a633030303030303432044a6a633030303030303433084a6a633030303030303434084a6a633030303030303435054a6a633030303030303436064a6a633030303030303437054a6a633030303030303438064a6a633030303030303530034a6a633030303030303531044a6a633030303030303532034a6a633030303030303534024a6a633030303030303536024a6a633030303030303537044a6a633030303030303538044a6a633030303030303539034a6a633030303030303630044a6a633030303030303631034a6a633030303030303632014a6a633030303030303633044a6a633030303030303634024a6a633030303030303635014a6a633030303030303636024a6a633030303030303637024a6a633030303030303638024a6a633030303030303639064a6a633030303030303730034a6a633030303030303936014a6a633030303030303937014a6a633030303136333730014a6a633030303136333732014a6a633030303136333734014a6a633030303136333735014a6a633030303136333736014a6a633030303136333738014a6a633030303136333839014a6a633030303136333930014a6a633030303136353239014a6a633030303136353431014a6a633030303136353432014a6a633030303136353531014a6a633030303136353532014a6a633030303136353534014a6a633030303136353536014a6a633030303136353632014a6a633030303136353633014a6a633030303136353634014a6a633030303136353635014a6a633030303136353934014a6a633030303136353939014a6a633030303136363030014a6a633030303136363032014a6a633030303138373038014a6a633030303138373130014a6a633030303138373132014a6a633030303138373733014a6a633030303138373734014a6a633030303138373735014a6a633030303138373736014a6a633030303138373737014a6a633030303138373831014a6a633030303138373835014a6a633030303138373836014a6a633030303138373837014a6a633030303139303039014a6a633030303139303130014a6a633030303139343139014a6a633030303230333439014a6a633030303230333530014a6a633030303230333531014a6a633030303230333532014a6a633030303230333533014a6a633030303230333534014a6a633030303230333535014a6a633030303230333536014a6a633030303230333537014a6a633030303230333538014a6a633030303230333631014a6a633030303230333632014a6a633030303230333634014a6a633030303230333635014a6a633030303230333636014a6a633030303230333637014a6a633030303230333638014a6a633030303230333639014a6a633030303231323630014a6a633030303231323632014a6a633030303231323633014a6a633030303231323635014a6a633030303231323636014a6a633030303231323637014a6a633030303231323638014a6a633030303231323639014a6a633030303231323731014a6a633030303231323733014a6a63303030323132373401581c101dcbab5b3c6d18f9121613cb999d12600e5e7e77c147d455b51443b81e50634e6332314c50414f726373303235320150634e6332314c50414f726373313133350150634e6332314c50414f726373323231300151634e6332314c50414d55534553313038310151634e6332314c50414d55534553313137310151634e6332314c50414d55534553313931390151634e6332314c5041526f6e696e313731390151634e6332314c5041526f6e696e323434310151634e6332314c504159694e676f303031330153634e6332314c504144726163616e6f313830360153634e6332314c504152756770756c6c303333380153634e6332314c504152756770756c6c303737320153634e6332314c5041566974616c696b323133360154634e6332314c5041416461446f6c6c73303434320154634e6332314c50414372797074696573323438350154634e6332314c50414445414450584c5a313930360154634e6332314c50414445414450584c5a313934360154634e6332314c50414445414450584c5a323134330154634e6332314c50414865726b696d6572303830360154634e6332314c50414865726b696d6572303838360154634e6332314c50414865726b696d6572313634390154634e6332314c50414865726b696d6572323236370154634e6332314c50414b6e697474696573303231320156634e6332314c5041466f7274476f7474656e313033320156634e6332314c50414e464d656d6f72696573313835300156634e6332314c50414e696674795465646479323237380156634e6332314c504153757368694279746573303937380156634e6332314c504177697468737061636573303530350157634e6332314c504143686164694e6173736172303933350157634e6332314c50414379706865726b69636b733231303401581c10a49b996e2402269af553a8a96fb8eb90d79e9eca79e2b4223057b6a1444745524f1a3b9aa79c581c1cb5dc0a7d6a6210f2c10804175aff7e07552028c3a6854a174f8b7ca1564444434e4654556e636f6d6d6f6e576869746530313801581c3a7975014cd6f48df29c9a4851aaa6690326529cdd17838150556809a1581b59756d6d6948616c6c6f7765656e323032314f72616e676530363601581c6787a47e9f73efe4002d763337140da27afa8eb9a39413d2c39d4286a149524144546f6b656e73192710581cc4c00fbd8fa227442a5e7cdecde33b24588494d05a2c50fda8938c6da1444b49445a19044c581cc5b50ef2453bdd867db094872237ef95cab1d4f2861867fe46a7d124a1554e4654553030303846616861646f756b656e30343601581cc79b6baa1aa54b0d55352f6fac73d2588d5efba121bc5388a4c42ecea2544e46545530303035436f6c6c614269747330353601544e46545530303035436f6c6c614269747332333401581cc7dcfa416c127f630b263c7e0fe0564430cfa9c56bba43e1a37c6915a145474f4b455918c8581cc88bbd1848db5ea665b1fffbefba86e8dcd723b5085348e8a8d2260fa14444414e411a00989680581cccdd2f5e413cb5afc9ffb482d32fc175aaef6477567869ec8f0a16c1a145434152474f184b581cd030b626219d81673bd32932d2245e0c71ae5193281f971022b23a78a148436172646f67656f1a000f4240581cd05271dc4748d2a2c69ddf91135d1a712b034f1c1b375d623a12a7d8a3581f54727962626c65735365726965734f6e65456d6f6b6f30303132346f66353001581f54727962626c65735365726965734f6e65456d6f6b6f30333332306f66353001581f54727962626c65735365726965734f6e65456d6f6b6f31313032316f66323501581cd3558649b7874a1a596378515f9b80da63e73f324439ea113d34c9bba14442454147192710581cd3a034e403b98cbdb0adbc8a3144d7779330916e190d387815bb85c6a144505552521a01312d00581cd5dec6074942b36b50975294fd801f7f28c907476b1ecc1b57c916eda1435241541a05f5e100581cd6f58216e602613eedec7cf3532c4038532c8bb6f5812bc4c280f644a1524164614b617761696952696b6f6e6130313701581cd894897411707efa755a76deb66d26dfd50593f2e70863e1661e98a0a14a7370616365636f696e731912c0581cdb30c7905f598ed0154de14f970de0f61f0cb3943ed82c891968480aa144434c41501a0035a32e581cdc080e8a2ac5a8ce20ce89fa14ef7b3964763fffcdb0426cc9aacc39a1581b4a4c526f796b736f7070436861726c6573424f54426c756530333301581cdefca4b95934aec82b818cbafd4bd0ab45511c1d690b58759f07d9b1a144567946691832581ce246da43032167e581837a7eac691b2a826fb70e6508f9d4c41026efa24c61757054726f706879373037014e6175704661766f7241526163653501581ce3ac0dd93edbe6bafec38fb120cf7c3e223686a97261008c2bfe0d6da54f43617264616e6f5370616365414c34014f43617264616e6f5370616365414c35014f43617264616e6f5370616365414d34014f43617264616e6f5370616365414d35014f43617264616e6f537061636549393301581cebb0764ff1284a78e9941490be142d97a67d7439a118be62f40b8664a14d4e657264496e6d61746530333201581cf0eca3e1fbe2d3801eff903b755d06bed64f19c30aacb1f124d18d6ca1581b416b6f6d616e426972676973736f6e7468654166666c696374656401581cf4364875e75320d405ceadebdf0db63fadaff55c72d4ff6b82f0676aa145434152474f1a0483da70581cf456dbdd3629be1e138699419ed4f9fe0bcd70cc473b149d658f0f10a34d43617264616369747931454241014d4361726461636974794e394158014d436172646163697479504b465401581cf555c46bad0731d080c9381d7fff6f82839946a66bd070d185e1ea2fa14542444f4745192710581cf7c777fdd4531cf1c477551360e45b9684073c05c2fa61334f8f9adda14d5665726974726565546f6b656e0a581cff791cdf3857627970df7f7930bfb7c8eee3ce45df43860d68b9ef60a1464348494d50591a4d7c6d00021a00197e47031a0402b90a081a0402aa640b5820a5364890672dc1a9e65300d8e0a45eb4864187ac336e7cc8a9f77b1086a69c2c0d81825820e7ec9fda96e49b004775ca60a594b861e2e3793a0b2b30fdb2a5bd1a58cbca8902a70081825820c7a20f399f49e5c87ea0145f12d700daf96bddad7110e09876dc9b48e6efbe280101828258390199225827dc9a2bb5e3f4d88a7161a220a6af801ea83b35c7559a2347bd497d3e418d9fb21ccadda3916c308c6e9e1189860fa728eb9fe86b821a00169b08a1581cf0ff48bbb7bbe9d59a40f1ce90e9e9d0ff5002ec48f232b49ca0fb9aa149626562657265786861018258390111202916ed2057fe2a7c86cea0c41c62131f0c2442db33198f665213a7b816cfe60c1859f9c603b7f0cbf1432894a4b6fd332eada8288cf81a474436c6021a0002f375031a0402d9e4075820a4d5275bde36b832f44f5fb51b958c9be4138bb7f235c2aff080a3410bc4795f080009a1581cf0ff48bbb7bbe9d59a40f1ce90e9e9d0ff5002ec48f232b49ca0fb9aa14962656265726578686101a900828258200f210cb36d1e7c4a0faddc8d98af05db03ce45f4ec2447d3c897d021e10a9cb00082582070b1120ffa815d812886f52a5acbef88f8e185f1db74e2afbbd0986fb31140d603018383583911a55f409501bf65805bb0dc76f6f9ae90b61e19ed870bc0025681360881728e7ed4cf324e1323135e7e6d931f01e30792d9cdf17129cb806d821a001a4ec4a1581c95ecc388dbffbeee39d99fe5a3657a1b3674256004457d2d1cb651cba14c4f4754616767656430363730015820c9fe538f9601bcff2617c5b07c3f9d872378db5206be7077170982d03ed92f78825839019e55464df77392636ae058d376c09a643419b0dad36abb5fc7897790fef590d24b9ed4f2cedf3ecc5f14a73179fa4d37c5c7fd12e230e53b1a004c4b40825839019e55464df77392636ae058d376c09a643419b0dad36abb5fc7897790fef590d24b9ed4f2cedf3ecc5f14a73179fa4d37c5c7fd12e230e53b1a06de2157021a0008cfae031a0402b8d4075820594e1e7477b717fd2a26877cf64612111b314ab32df3f34a908e5fb7ca1d1d46081a0402aac40b58206a702a8a145b902686f48506555fb8fe0f640d6e1e728ceee23285bf424f75f00d81825820fe7e2bad4af5e7a20f525c341168418e48c5940cbf20e02fe400d51fdf74621b040e81581c9e55464df77392636ae058d376c09a643419b0dad36abb5fc7897790a50082825820bedeaef7bdd3bc159e34a773cc71e95b36e1969f62c55ce707f0f2b0344659670182582082f54dab7181e69756f876e6a3742776c50cde25d070696eea547d27901d05d100018282583901eae4488cced262f6c42fede495cb24c5f5a5088bb70176382debe622a270825631106a093da663e33e644f4505b82c426aa31624de2ff53d821a00150bd0a1581c3ee441f40fe395a2e98eea1df7cf8816b0fca3d5d164893596ce306da14e4a656c6c79637562652023323134018258390124f4181f1275ce5a923d23a75873bf9c9228c993b91b9a758f47e2d89a655e3653d018baeefcd4f1b7547a2d16608cf4cf554bf9781ec0d0821a0025893aa3581c11ebbfbfd62985cbae7330b95488b9dcf17ecb5e728442031362ad81a14e48756e677279436f77233539343701581c21c26b0c4d1cb37225374c96f38df70ecffd808bbd7f1aae23d8b3e3a1457461696c731864581c3ee441f40fe395a2e98eea1df7cf8816b0fca3d5d164893596ce306da24e4a656c6c79637562652023333233014e4a656c6c7963756265202338393001021a0002c279031a0402ff530758206b80864659b5880c993d7f3d25a012073ccc55248e2cec5c58f960fc7435808ea40083825820f40c4384e0274c8f2de168668cb3951a1ae36f25663fe65dd33526a62ff970460282582039bc621c42380f523879057cd3871cfafb7593141ad926962279fd29bf98de6f02825820887156da65c00a8da02ff519617af80f629cc551d92ef68ba8d7fb84474c2fe401018282581d6124d274bfd913b241a8cca20c6977775718fddb8f3763f1d365c854451a001e84808258390144d8bff2911805992b10f3ed3e5df12bf19177375bb7b72c0cebe32a993dc7a6cd866ad0aee729885a37bf4416f2cc1d58545274440b5418821a0076ddafa2581ca0028f350aaabe0545fdcb56b039bfb08e4bb4d8c4d7c3c7d481c235a145484f534b591a682ce820581ca5bb0e5bb275a573d744a021f9b3bff73595468e002755b447e01559b82256484f534b5943617368477261623030303033363838300156484f534b5943617368477261623030303131313934330156484f534b5943617368477261623030303131313935330156484f534b5943617368477261623030303131313935350156484f534b5943617368477261623030303131323339330156484f534b5943617368477261623030303131323339380156484f534b5943617368477261623030303131323431300156484f534b5943617368477261623030303131323937320156484f534b5943617368477261623030303131323937390156484f534b5943617368477261623030303131333031370156484f534b5943617368477261623030303131333035330156484f534b5943617368477261623030303131333035370156484f534b5943617368477261623030303131333134350156484f534b5943617368477261623030303131333135390156484f534b5943617368477261623030303131333136380156484f534b5943617368477261623030303131333137310156484f534b5943617368477261623030303131333138340156484f534b5943617368477261623030303131333138350156484f534b5943617368477261623030303131333139330156484f534b5943617368477261623030303131333139370156484f534b5943617368477261623030303131333230310156484f534b5943617368477261623030303131333234310156484f534b5943617368477261623030303131333235310156484f534b5943617368477261623030303131333331300156484f534b5943617368477261623030303131333331360156484f534b5943617368477261623030303131333332330156484f534b5943617368477261623030303131353935340156484f534b5943617368477261623030303131353936310156484f534b5943617368477261623030303131373737310156484f534b5943617368477261623030303131373737350156484f534b5943617368477261623030303131383237370156484f534b5943617368477261623030303131383237380156484f534b5943617368477261623030303131383338310156484f534b59436173684772616230303031313835353801021a0003325d031a0402d533a60081825820a755c6e005278150b77b3c9a448d7c40ca725dd4735f2fbd2f1447a834f9df9e010d8001828258390100872751591232a970ae9f7a5a7892e794add1a082cf35e0f79ba901464a732d7be3c9478ab01b4c9223a32f0c12e8ba0641db40ed948cc11a3b9aca0082583901e27b13d9d612549cda821ab4b8a9dd2b8c137927e7b1029242caa4ef2d1653c688d7eb6eb296773a195fc4458b6a7d111ffa0dcba9a318c31b0000000b6450df86021a0002943d031a0402c7240e80a400858258202a64cce782f4c0fc5fc220fb36b2942036c58ea8c190659ff6469582c51773490282582046e4b1f4f3f6d809ad715d5c4d50f72f505b07099414d47f6f48ccd7b4e684bb018258207b83bb5732aab4ccfb7464a84473fcb6eea6bbc2d8e769b44bd0e19c931dffe701825820b4fef8ebe659d29bd20254db7c63c99bf87228d72460689dba645f4b09b493a701825820b4fef8ebe659d29bd20254db7c63c99bf87228d72460689dba645f4b09b493a702018282583901019dad74457a447b9cdb06d526638ef22bea966a9a69357a308194d2f2b04215d72e1d9fc3817a3129ebace1eb6060ec957e898e9b75dd9d1a02625a0082583901f2930f5b2e9e912e9ed67df6632adfd7ce1a71b26f40b3a3b6f5263e3470639ee556d2cf35d0abc7943471ad79ddda21abed49910c1b6352821a01d8d672b861581c0171c997b8853fde686763d93b36ab8e04ce947bb6aa09a9ee5c4401a145544f4b454e195793581c05ded3e66d6413f90908e65d14ca3cc1456a5f650e79a8ad93414cb2a144525547471a00a2a746581c0c442180dd6163682d8e03b271caefb4944a24412bdd07adafb04ccba14a50494e41434f4c4144411909c4581c0fd9819a9d7fb414880883f43a42d33458f12bc5f9841cec6457dc15a14556695275531a00e778ff581c133fac9e153194428eb0919be39837b42b9e977fc7298f3ff1b76ef9a14550554447591a3f2e4cb3581c152756a3bdb4cd3f1357c24d0486310f5edf399f1581a63bd730597ca1484d656f7743686f771b0000000196f3059d581c162ce9d46a21900149027edf2f6ace391d6d1db9450b3c479b857adaa1494964696f74636f696e1b0000000b5ae5b2e3581c1774343241680e4daef7cbfe3536fc857ce23fb66cd0b66320b2e3dda1454249534f4e1b0000000679301893581c1a71dc14baa0b4fcfb34464adc6656d0e562571e2ac1bc990c9ce5f6a144574f4c461b00009b67da376066581c1d7f33bd23d85e1a25d87d86fac4f199c3197a2f7afeb662a0f34e1ea150776f726c646d6f62696c65746f6b656e1a05f5e100581c1f4b1b277c9c001c1522727506a2cfb401a0d0ade069b0241f16f07da34248491b0000001f1b106b7c43484947014348495302581c20665a50f959765195c5c9f2e7b0c4b043f96f16513b131fd67b91e6a145535045524d1a06422c40581c20cd68533b47565f3c61efb39c30fdace9963bfa4c0060b613448e3ca14650524f5849451a001e8480581c238b2d53fa9e2259c6377a9f0e9288edf3780739428e3aee67270c65aa4c4c4f42535445523630393937014d4c4f4253544552303034393939014d4c4f4253544552323232383335014d4c4f4253544552343933393839014d4c4f4253544552353335383331014d4c4f4253544552353439393733014d4c4f4253544552363334333838014e4c4f425354455230303633313036014e4c4f425354455235353831343235014e4c4f42535445523538363130323401581c2a6c1ea5b4805b1aabae53758e9e2e6623e7332cded72fef7e1ff8bfa14a50726f786965576f6d6202581c2aa9c1557fcf8e7caa049fa0911a8724a1cdaf8037fe0b431c6ac664a14950494759546f6b656e1a000182e3581c2af89e99de1bf692b10230c0b38fe89cc764364d0e15cc7cc47e0ad0a1534372617a79204b69746368656e20566f6c203101581c2afb448ef716bfbed1dcb676102194c3009bee5399e93b90def9db6aa1454249534f4e1b00000006796d2193581c2b8822f7799f325e278991a244e7715591945b1c2a3589cc76035ca9a147736372617463681a02faf080581c2c98407be4262d124773e4d38745863652d7d63dc9795bbbfc149e39ac4d526f79616c4c65676163793334014d526f79616c4c65676163793436014d526f79616c4c65676163793439014d526f79616c4c65676163793637014d526f79616c4c65676163793639014d526f79616c4c65676163793730014d526f79616c4c65676163793731014d526f79616c4c65676163793735014d526f79616c4c65676163793737014d526f79616c4c656761637937380151526f79616c4c656761637942726f6e7a650151526f79616c4c656761637953696c76657201581c2d7444cf9e317a12e3eb72bf424fd2a0c8fbafedf10e20bfdb4ad8aba1464348454444411a000a8750581c333926224ce02ae8750e4c4000352e6f1f5dd94115636e944dc43e28a148507567436f696e731a00018128581c37b47fcaeb067582eb0b4230632633adffa7753481139b67cc8fe3cea1465045524e49531a000c6ec2581c4247d5091db82330100904963ab8d0850976c80d3f1b927e052e07bda146546f6b68756e0c581c439a507a11336327048f333935dbb4b7f949a6a7f03845b4fb3aa1cea24642414e414e411864473242414e414e411832581c48d143dfa8e151f0e0bf862f6a733ad0505eeb1509c1e3ef524856f9a14752554750554c4c1b000009852abb99dd581c4cb48d60d1f7823d1307c61b9ecf472ff78cf22d1ccc5786d59461f8a1474144414d4f4f4e1a0010579a581c4fd0d998dc0700ca6ef89fafff05fbf523a3a25c1fc8314bf7e4d1c2a14647726f7774680e581c5029eeccd52fef299509d509a8318fd7930c3dffcce1f9f39ff11ef9a1434647431832581c544571c086d0e5c5022aca9717dd0f438e21190abb48f37b3ae129f0a14447524f5705581c547ceed647f57e64dc40a29b16be4f36b0d38b5aa3cd7afb286fc094a1476262486f736b791a002bb4ac581c56673962a054070732569178ba2b3e1cb591e3413ecd7b57a9e3f18ba1454245414e531903e8581c58c6c528c44cc320901f8854d282df65cdedf25f4dfb57988299266ea1494b494e474b554e54411b00000437be705dce581c5ad8deb64bfec21ad2d96e1270b5873d0c4d0f231b928b4c39eb2435a14661646f7369611a02faf080581c641f0571d02b45b868ac1c479fc8118c5be6744ec3d2c5e13bd888b6a1465a4f4d424945190bb8581c65ab799f268884ac04f29760e72e07f5a01cba857af5410262744204a24b636861726c7a3035363438014b636861726c7a313234363301581c6873bddc4ae10fdc75ce8104c4b032cb02d8ef0022531e8f067fee6ca14642494c4c4f4e1a001f20c0581c689a968894defc17d80f64dd83b2ab1f11d8ffee23a41eba623d530fa84e4d724361744b696e736f6e323335014e4d724361744b696e736f6e323831014e4d724361744b696e736f6e323839014e4d724361744b696e736f6e333037014e4d724361744b696e736f6e343339014e4d724361744b696e736f6e363333014e4d724361744b696e736f6e383434014e4d724361744b696e736f6e39333901581c6dd1c7c57846fda14ae9aacf23bc7192009826460968f9ee55589469a144534c415419c0f8581c6ddd6503e0ab63538c77bd51f679b9ed84998af89901b01ce3dace88a14b5369636b4369747933333901581c70dd7ddb331dd9dcf23c417f33ae0a1673bb95d613d83e0e5983abd8a1554361707461696e4f6644616564616c75733133333401581c715d89545d6ce3cfca7680b216a3f327ee61d377732431049ed0b240a1465368726f6f6d1a4c4b188c581c81fd41215b08ab60f78dda8c076487f65228ace5bb9ca122e8bc05f4a14842697473636f696e19048e581c8654e8b350e298c80d2451beb5ed80fc9eee9f38ce6b039fb8706bc3a1474c4f42535445521b000000f73fee9659581c884892bcdc360bcef87d6b3f806e7f9cd5ac30d999d49970e7a903aea145504156494119270e581c88691a70bb0fe49cf9124b4f78553c36c09fa6264844e2b294119173a1454575736b6f14581c8c368b175075d41931d73ef07e5fa99dd21d5ccaa2ecfa296d7421e3a14c4561726c794269726431333001581c8d0ae3c5b13b47907b16511a540d47436d12dcc96453c0f59089b451a14542524f4f4d1a00c81bbb581c8fef2d34078659493ce161a6c7fba4b56afefa8535296a5743f69587a144414144411a05f5e100581c987c1f90efe1c95957509b460e0e4f6d6b3f7025a7aca99cd2909037a1444d5954481904b0581c9a9693a9a37912a5097918f97918d15240c92ab729a0b7c4aa144d77a14653554e4441451a00562a57581c9c54bb728df9847b0358c84c942500646326a1b581a2b8c43689d220a14c5374726970706572436f696e1a00026db5581ca0028f350aaabe0545fdcb56b039bfb08e4bb4d8c4d7c3c7d481c235a145484f534b591b00000003498023d5581ca3914cb7a564d010c7b67774ac8720a8ece3a758279b51d8a1c05cc5a1495745444e45534441591a00011df0581ca4da8764a57e66a0085b5bfcde96c89b798d92ee83a75f59237e375ba144464952451a00037d5c581ca6124329634b5c500fefbbbeb78c76c6a6560806700e234b7a812db0a14546524559411a017d7840581ca9fc4ed73402b211098ecacbc92dffa12aea088ea81db2727c1d28c6a14550495a5a411a00041517581cad0aec69bf304355029bfdc6f87e6e6aba7e219f3140646b69aed96ca1434c4f4c1b00016a6efc62f080581cad1c1ed3a0bb6f83630ef052a31b71ba3287bf4bafa8370758f14d31a1445349434b1a00029810581caf2e27f580f7f08e93190a81f72462f153026d06450924726645891ba144445249501b0000000f6bd7e7b6581cafc910d7a306d20c12903979d4935ae4307241d03245743548e76783a14541534849421b0000000342770c00581cb0446f1c9105f0cc5bb6bd092f5c3e523e13f8a999b31c870298fa40a144515549441980a2581cb0af30edf2c7f11465853821137e0a6ebc395cab71ee39c24127ffb4a1444e4654431832581cb1eb73a732247342724b85ca10f626b9494c69b6f5d21a2bd4052bf7a150544150316368696c6c696e673230323203581cb24a29b9c16d349df16d9b5553b119e399e46ae19d6150c1a843ef61a1466469646974731a0ee6b275581cb34b3ea80060ace9427bda98690a73d33840e27aaa8d6edb7f0c757aa145634e4554411864581cb3a5712135ac8fd9a0ab562664863a50b36d5aa4e05e58dafa99e34aa151426561676c654275636b734e465436353701581cb4273f1d8d0021d188784c3d72dc514f602b7ab8cfb87e3134550c42a147446f67654144411a00011166581cb788fbee71a32d2efc5ee7d151f3917d99160f78fb1e41a1bbf80d8fa1494c454146544f4b454e1b00000403b46324f1581cb7c783f6304eddbdf8f0dece4715d63cb9f453be89d97c8fba155d57a144524553491842581cbab3599e728f209b157e2c8fb122b8b9e1d3daa74c57c4e3f665f6aba84f4d72734361744b696e736f6e33373301504d72734361744b696e736f6e3330373401504d72734361744b696e736f6e3533353801504d72734361744b696e736f6e3630323101504d72734361744b696e736f6e3635383801504d72734361744b696e736f6e3639323401504d72734361744b696e736f6e3737393201504d72734361744b696e736f6e3738383801581cbb4ca4df81a224393751ee5189a57a5778c2427f38d85e2fbfd76234a34e53616d6d79204e65772059656172034f426c61636b2053616d6d79203036320150476f6c64656e2053616d6d792030373701581cc6d397ee4cfabd25cb8ffd06c7ef43dc70ad2721ef7c105dc6bbddefa145564950455218fa581cc898c986b97e7ac5b33e999bc11b054a9987f48ec4459f8c1ea0c32ba148435245414d5049451b000000b5b1d5a8b3581ccc23ae82bd518021787ab4929062718fdce75726c9e78b360a953925a145444f47474f1a3b9aca00581ccc409a8cfd42f649a66b1716a84d9437dbb424e7af0d291494674bc7a24f435245414d5049454e465430313534014f435245414d5049454e46543031353501581cd01794c4604f3c0e544c537bb1f4268c0e81f45880c00c09ebe4b4a7a1444d5953541930d4581cd030b626219d81673bd32932d2245e0c71ae5193281f971022b23a78a148436172646f67656f190b7c581cd0ec062966515421bab9e40d5798cbf462becaf1a3bb127860373b3ba14853746172447573741910c7581cd1333653aa3ac24adfa9c6d09c1a2cc8e2b7b86ad334c17f2acb8647a14842696f546f6b656e04581cd3558649b7874a1a596378515f9b80da63e73f324439ea113d34c9bba144424541471a00011f74581cd3a034e403b98cbdb0adbc8a3144d7779330916e190d387815bb85c6a144505552521a02d8291f581cd4139a0b0f70973fcf28bf0e1d46103f12f969b12182bcd95f18dc87a1505765646e657364617946726f6737353301581cd894897411707efa755a76deb66d26dfd50593f2e70863e1661e98a0a14a7370616365636f696e73190190581cd94682d571edf2ed9b1d5bde7ab599cd83ddf93c8397fce809a03158a1505765646e6573636c617946726f67353801581ce0baa1f0887a766daf5196f92c88728e356e71255c5ad00866607484a1582092f701d2a628b524c3497cf99d75d687df548fff628375283708e6ca396c6e1e1b000000012ffbd300581ce14fe3ab348f9a6198359481472601f4557b9f86984f40a186a3b1e8a1464348455252591b00000013142a36f5581ce4214b7cce62ac6fbba385d164df48e157eae5863521b4b67ca71d86a1582003c840491ecd729d4ed59f97df971477225f4959a45ef94357af057917bfc0501b000000012ffbd300581ce98165a25cd0320b25f22d686268e58e66f855b6d85974947ccd708da146414441464f581a000107ac581ce9c28a71273f825b13f38244ccf1fea97c4025813610d01a7c5d681fa14c436861726c7a20546f6b656e1a1a9cce81581cea2d23f1fa631b414252824c153f2d6ba833506477a929770a4dd9c2a1464d414442554c1a006ad59c581cf09deff3d6fe282874ac5c3c541f566cfe5ecec9058b814f1acd0742a14962624c6f62737465721a016c2b6f581cf0ff48bbb7bbe9d59a40f1ce90e9e9d0ff5002ec48f232b49ca0fb9aa14b6d656d652d77616c6c657401581cf1ead232c80a327005f3a5836430aa25adb1b63a532d09dd61be802aa44d484f534b455645525345363239014e484f534b45564552534531383333014e484f534b45564552534536333631014e484f534b4556455253453936393901581cf28f457472e539dc75e1598a2beddf49ce5a717998c708f05f5de610a144444546531832581cf4d97191f857096b441a410c036f63d6697dde0c71d2755dd664e302a1434d4b411a05f5e12a581cff97c85de383ebf0b047667ef23c697967719def58d380caf7f04b64a144534f554c1943a4021a00062721031a0402d53da40081825820b9b15f1a4859a2a16187774d9261d67db44d296acded1c9a896a643af1fd4a610701986582581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000002e90edd00082581d612b3dad38ac9295a0088e8b782adcd59989e102bdb3b06b777f2224061b0000243da15575f6021a0005bc2a031a0402c27492a40082825820114d77ab2b0e9cdb5dbc142d16972286bfe1a6cbc77b6c16b8c60844935a8cba5840bbc8d0e323be10afa494e7e7cc48d9ec596a0b70eedc45c1d4bb6af8dae4877034cb77fc911bc6b263880f955772156ba12cd0a303f32bbe6d586293ef2164028258208f7c51a7c25331a30672a05b8dcc47375499c2ad10e38aa5cecc00e0f7e7c0675840425c891e0fb0bbd3b9a42b5fe0db0dbaa7a7f45cc68b9c425df9cdb19a9964c08d0a0da833a37a4cc59b34483a4b985a6aee29c2b52728306725aca84a8f5500038159116c5911690100003323322333222332233223232333222323332223233333333222222223233322232333322223232332232333222323332223232332233223232333332222233223322332233223322332222323232323232232232325335303833300d3333573466e1cd55cea805a400046666664444446666660ba00c00a0080060040026eb8d5d0a8059bad35742a0146eb8d5d0a8049bae35742a0106eb8d5d0a8039bad357426ae89401c8d4138d4c13ccd5ce2490350543100050499263333573466e1d40112002205423333573466e1d40152000205623504f353050335738921035054310005149926498cccd5cd19b8735573aa004900011980819191919191919191919191999ab9a3370e6aae75402920002333333333301e33502c232323333573466e1cd55cea80124000466048607e6ae854008c0c4d5d09aba2500223505e35305f3357389201035054310006049926135573ca00226ea8004d5d0a80519a8160169aba150093335503375ca0646ae854020ccd540cdd728191aba1500733502c04835742a00c66a05866aa0b20a2eb4d5d0a8029919191999ab9a3370e6aae754009200023350263232323333573466e1cd55cea80124000466a05c66a08eeb4d5d0a80118261aba135744a00446a0c46a60c666ae712401035054310006449926135573ca00226ea8004d5d0a8011919191999ab9a3370e6aae7540092000233502c33504775a6ae854008c130d5d09aba250022350623530633357389201035054310006449926135573ca00226ea8004d5d09aba2500223505e35305f3357389201035054310006049926135573ca00226ea8004d5d0a80219a8163ae35742a00666a05866aa0b2eb88004d5d0a801181f1aba135744a00446a0b46a60b666ae71241035054310005c49926135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135573ca00226ea8004d5d0a8011919191999ab9a3370ea00290031181198201aba135573ca00646666ae68cdc3a801240084604460946ae84d55cf280211999ab9a3370ea006900111811181a9aba135573ca00a46666ae68cdc3a802240004604a6eb8d5d09aab9e50062350553530563357389201035054310005749926499264984d55cea80089baa001357426ae8940088d4138d4c13ccd5ce249035054310005049926104f13504d35304e3357389201035054350004f4984d55cf280089baa001135573a6ea80044d5d1280089aba25001135744a00226ae8940044d55cf280089baa0012212330010030022001222222222212333333333300100b00a00900800700600500400300220012212330010030022001122123300100300212001122123300100300212001122123300100300212001212222300400521222230030052122223002005212222300100520011232230023758002640026aa072446666aae7c004940388cd4034c010d5d080118019aba200203323232323333573466e1cd55cea801a4000466600e6464646666ae68cdc39aab9d5002480008cc034c0c4d5d0a80119a8098169aba135744a00446a06c6a606e66ae71241035054310003849926135573ca00226ea8004d5d0a801999aa805bae500a35742a00466a01eeb8d5d09aba25002235032353033335738921035054310003449926135744a00226aae7940044dd50009110919980080200180110009109198008018011000899aa800bae75a224464460046eac004c8004d540cc88c8cccd55cf80112804919a80419aa81898031aab9d5002300535573ca00460086ae8800c0b84d5d08008891001091091198008020018900089119191999ab9a3370ea002900011a80418029aba135573ca00646666ae68cdc3a801240044a01046a0526a605466ae712401035054310002b499264984d55cea80089baa001121223002003112200112001232323333573466e1cd55cea8012400046600c600e6ae854008dd69aba135744a00446a0466a604866ae71241035054310002549926135573ca00226ea80048848cc00400c00880048c8cccd5cd19b8735573aa002900011bae357426aae7940088d407cd4c080cd5ce24810350543100021499261375400224464646666ae68cdc3a800a40084a00e46666ae68cdc3a8012400446a014600c6ae84d55cf280211999ab9a3370ea00690001280511a8111a981199ab9c490103505431000244992649926135573aa00226ea8004484888c00c0104488800844888004480048c8cccd5cd19b8750014800880188cccd5cd19b8750024800080188d4068d4c06ccd5ce249035054310001c499264984d55ce9baa0011220021220012001232323232323333573466e1d4005200c200b23333573466e1d4009200a200d23333573466e1d400d200823300b375c6ae854014dd69aba135744a00a46666ae68cdc3a8022400c46601a6eb8d5d0a8039bae357426ae89401c8cccd5cd19b875005480108cc048c050d5d0a8049bae357426ae8940248cccd5cd19b875006480088c050c054d5d09aab9e500b23333573466e1d401d2000230133016357426aae7940308d407cd4c080cd5ce2481035054310002149926499264992649926135573aa00826aae79400c4d55cf280109aab9e500113754002424444444600e01044244444446600c012010424444444600a010244444440082444444400644244444446600401201044244444446600201201040024646464646666ae68cdc3a800a400446660106eb4d5d0a8021bad35742a0066eb4d5d09aba2500323333573466e1d400920002300a300b357426aae7940188d4040d4c044cd5ce2490350543100012499264984d55cea80189aba25001135573ca00226ea80048488c00800c888488ccc00401401000c80048c8c8cccd5cd19b875001480088c018dd71aba135573ca00646666ae68cdc3a80124000460106eb8d5d09aab9e500423500a35300b3357389201035054310000c499264984d55cea80089baa001212230020032122300100320011122232323333573466e1cd55cea80124000466aa016600c6ae854008c014d5d09aba25002235007353008335738921035054310000949926135573ca00226ea8004498480048004448848cc00400c008448004488008488004800488888848cccccc00401c01801401000c0088004448c8c00400488cc00cc008008004cc8c8c8ccc888c8c8cc88c8c8ccc888c8c8cccc8888c8cc88cc88c8c8cc88cc88c8c8c8c8cc88ccc888ccc888ccc888cccccccc88888888cc88ccccc88888cccc8888cc88cc88cc88ccc888cc88cc88cc88cc88cc88c8c8c8c888c888c94cd4c0dc00c54cd4c168cc0f4c028ccc01cccd54c128480054111414ccc02001940052201004881003303e3303c4800920c801300a35303a00522222200515335305a333573466e1cccc01cccd54c128480054111414ccc0214cd4d4144d4c0354004888888888800c4c178588854cd4d414c0044008884c188594004d4c0e8014888888010d4c0e801488888800d200205c05b15335305a3303d300a33300733355304a12001504450533300835303a0052222220065001489004881003303e3303c3370266e0520d00f48050d4c0e801488888800520d00f300a35303a00522222200515335305a5335305a333573466e1d4011200005c05b105c13303d300a33300733355304a12001504450533300835303a0052222220025001489004881003303e3303c5004483403cc028d4c0e80148888880144ccd5cd19b87323320013200133355305112001323350592233350590030010023505600133505822230033002001200122337000029001000a4000666aa60942400244a66a60b86a602a6a60260044440064466a607000440c04a66a6a034004420c220c2266a0a80040022002a0a6664464600266aa60182400246a6026002440026a6020a0084444444444014640026aa0c244a66a6a0aa0022006442646600e0060026008002a0a4a0a6900102e02d882d882d882d882d899911a98078011111111111299a9a810999aa982e0900099a83191299a9a811801108018800a8111299a9833999ab9a3371e0180020d20d026a0480022a046006420d220ce6a6016004440046a607400a44444400c26a60140024400426a606c0024444440024446464600200a640026aa0b84466a6a0a00029000111a9aa82480111299a982e999ab9a3371e0040120be0bc2600e0022600c006640026aa0b64466a6a09e0029000111a9aa82400111299a982e199ab9a3371e00400e0bc0ba20022600c006446a600e0024444444444666aa609c24002446a602e0044446a60380064466a607e0044a66a60cc666ae68cdc780a000834033899a82f00280388039003a82b804990009aa82b110891299a9a8260008a82711099a827980200119aa980309000802000919a81d000a40044424660020060044002444444444424666666666600201601401201000e00c00a0080060044002442466002006004400244424666002008006004400244246600200600440022424460040062244002240022442466002006004240022442466002006004240022442466002006004240022424446006008224440042244400224002424444600800a424444600600a424444600400a424444600200a40024424660020060044002424444444600e01044244444446600c012010424444444600a010244444440082444444400644244444446600401201044244444446600201201040024244600400644424466600200a00800640024244600400642446002006400224400424400240024444442466666600200e00c00a0080060044002446600a66e080094cd4c080ccd5cd19b870014800008808452000153353020333573466e2400520000210221480084cdc0a40009001299a9810199ab9a337100029000011010899b8148000004400488d4d401c00888d4d402400c88c94cd4c090ccd5cd19b87005003026025153353024333573466e1c0100080980944098540045400454cd4c08cccd5cd19b893370400800266e0800800c0940904090409488d4d401800888d4d402000c88cc01ccdc100200119b8200300122325335301e333573466e1c009200002001f132635300433573892103505433000054984cd401ccdc2001a80099b84002500113301c5335301d333573466e20009200001f01e13370290000010801299a980e999ab9a33710002900000f80f099b8148000004400448004800448848cc00400c00848004488cd54c034480048d4d5401c00488cd54028008cd54c040480048d4d5402800488cd54034008ccd4d5403c0048cc0892000001223302300200123302200148000004cd54c034480048d4d5401c00488cd54028008ccd4d540300048cd54c044480048d4d5402c00488cd54038008d5404c00400488ccd55402006c0080048cd54c044480048d4d5402c00488cd54038008d54044004004ccd55400c058008004444888ccd54c020480054040cd54c034480048d4d5401c00488cd54028008d5403c004ccd54c0204800488d4d54020008894cd4c070ccd54c04848004c8cd406888ccd4d402c00c88008008004d4d402400488004cd4024894cd4c078008408040040748d4d5402c00488cc028008014018400c4cd405001000d4044004cd54c034480048d4d5401c00488c8cd5402c00cc004014c8004d54080894cd4d40500044d5403c00c884d4d54034008894cd4c084cc0300080204cd5405001c0044c01800c00848848cc00400c00848004448848cc00400c008448004c8004d5405488448894cd4d40300044008884cc014008ccd54c01c480040140100044484888c00c01044884888cc0080140104484888c004010448004c8004d540408844894cd4d401800454020884cd4024c010008cd54c01848004010004c8004d5403c88448894cd4d40180044d402400c884ccd4030014c010008ccd54c01c480040140100044488008488488cc00401000c4800448d4d400c0048800448d4d40080048800848848cc00400c0084800488ccd5cd19b8f0020010060053200135500622253353004333573466e1c005200000600510021330030013370a00400224400424400240024466e0000800498448c8c00400488cc00cc00800800522011c09aaedfc2c267948a623a4dddd093327c235c3fa88a47f14d41a734700010481d866820086581c33318e7ff4fd4c1be92a183f9df5200d954a0bfdcdbad0e6f280fa5d1a1dbe22c0581cf0ff48bbb7bbe9d59a40f1ce90e9e9d0ff5002ec48f232b49ca0fb9a4774617264757374581c33318e7ff4fd4c1be92a183f9df5200d954a0bfdcdbad0e6f280fa5dc241000581840001d866820180821a006acfc01ab2d05e00a40082825820114d77ab2b0e9cdb5dbc142d16972286bfe1a6cbc77b6c16b8c60844935a8cba5840a4eeed5135504815e5699f033f99fdda6d0f72e704b93d0927d7889c3aacd24981efa1d73a5d89bdb69909afebea5fe789abc879bfad020d885f7c4f270964048258208f7c51a7c25331a30672a05b8dcc47375499c2ad10e38aa5cecc00e0f7e7c0675840a1c223a40c99d6c3d0c140c451e0f0927ba2471d7d5f9b28e39ac97fce80d5af92f7346a04045df2a06ed4b23002b5853b6b23eb5a8d4a53a67d2319a634a004038159116c5911690100003323322333222332233223232333222323332223233333333222222223233322232333322223232332232333222323332223232332233223232333332222233223322332233223322332222323232323232232232325335303833300d3333573466e1cd55cea805a400046666664444446666660ba00c00a0080060040026eb8d5d0a8059bad35742a0146eb8d5d0a8049bae35742a0106eb8d5d0a8039bad357426ae89401c8d4138d4c13ccd5ce2490350543100050499263333573466e1d40112002205423333573466e1d40152000205623504f353050335738921035054310005149926498cccd5cd19b8735573aa004900011980819191919191919191919191999ab9a3370e6aae75402920002333333333301e33502c232323333573466e1cd55cea80124000466048607e6ae854008c0c4d5d09aba2500223505e35305f3357389201035054310006049926135573ca00226ea8004d5d0a80519a8160169aba150093335503375ca0646ae854020ccd540cdd728191aba1500733502c04835742a00c66a05866aa0b20a2eb4d5d0a8029919191999ab9a3370e6aae754009200023350263232323333573466e1cd55cea80124000466a05c66a08eeb4d5d0a80118261aba135744a00446a0c46a60c666ae712401035054310006449926135573ca00226ea8004d5d0a8011919191999ab9a3370e6aae7540092000233502c33504775a6ae854008c130d5d09aba250022350623530633357389201035054310006449926135573ca00226ea8004d5d09aba2500223505e35305f3357389201035054310006049926135573ca00226ea8004d5d0a80219a8163ae35742a00666a05866aa0b2eb88004d5d0a801181f1aba135744a00446a0b46a60b666ae71241035054310005c49926135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135573ca00226ea8004d5d0a8011919191999ab9a3370ea00290031181198201aba135573ca00646666ae68cdc3a801240084604460946ae84d55cf280211999ab9a3370ea006900111811181a9aba135573ca00a46666ae68cdc3a802240004604a6eb8d5d09aab9e50062350553530563357389201035054310005749926499264984d55cea80089baa001357426ae8940088d4138d4c13ccd5ce249035054310005049926104f13504d35304e3357389201035054350004f4984d55cf280089baa001135573a6ea80044d5d1280089aba25001135744a00226ae8940044d55cf280089baa0012212330010030022001222222222212333333333300100b00a00900800700600500400300220012212330010030022001122123300100300212001122123300100300212001122123300100300212001212222300400521222230030052122223002005212222300100520011232230023758002640026aa072446666aae7c004940388cd4034c010d5d080118019aba200203323232323333573466e1cd55cea801a4000466600e6464646666ae68cdc39aab9d5002480008cc034c0c4d5d0a80119a8098169aba135744a00446a06c6a606e66ae71241035054310003849926135573ca00226ea8004d5d0a801999aa805bae500a35742a00466a01eeb8d5d09aba25002235032353033335738921035054310003449926135744a00226aae7940044dd50009110919980080200180110009109198008018011000899aa800bae75a224464460046eac004c8004d540cc88c8cccd55cf80112804919a80419aa81898031aab9d5002300535573ca00460086ae8800c0b84d5d08008891001091091198008020018900089119191999ab9a3370ea002900011a80418029aba135573ca00646666ae68cdc3a801240044a01046a0526a605466ae712401035054310002b499264984d55cea80089baa001121223002003112200112001232323333573466e1cd55cea8012400046600c600e6ae854008dd69aba135744a00446a0466a604866ae71241035054310002549926135573ca00226ea80048848cc00400c00880048c8cccd5cd19b8735573aa002900011bae357426aae7940088d407cd4c080cd5ce24810350543100021499261375400224464646666ae68cdc3a800a40084a00e46666ae68cdc3a8012400446a014600c6ae84d55cf280211999ab9a3370ea00690001280511a8111a981199ab9c490103505431000244992649926135573aa00226ea8004484888c00c0104488800844888004480048c8cccd5cd19b8750014800880188cccd5cd19b8750024800080188d4068d4c06ccd5ce249035054310001c499264984d55ce9baa0011220021220012001232323232323333573466e1d4005200c200b23333573466e1d4009200a200d23333573466e1d400d200823300b375c6ae854014dd69aba135744a00a46666ae68cdc3a8022400c46601a6eb8d5d0a8039bae357426ae89401c8cccd5cd19b875005480108cc048c050d5d0a8049bae357426ae8940248cccd5cd19b875006480088c050c054d5d09aab9e500b23333573466e1d401d2000230133016357426aae7940308d407cd4c080cd5ce2481035054310002149926499264992649926135573aa00826aae79400c4d55cf280109aab9e500113754002424444444600e01044244444446600c012010424444444600a010244444440082444444400644244444446600401201044244444446600201201040024646464646666ae68cdc3a800a400446660106eb4d5d0a8021bad35742a0066eb4d5d09aba2500323333573466e1d400920002300a300b357426aae7940188d4040d4c044cd5ce2490350543100012499264984d55cea80189aba25001135573ca00226ea80048488c00800c888488ccc00401401000c80048c8c8cccd5cd19b875001480088c018dd71aba135573ca00646666ae68cdc3a80124000460106eb8d5d09aab9e500423500a35300b3357389201035054310000c499264984d55cea80089baa001212230020032122300100320011122232323333573466e1cd55cea80124000466aa016600c6ae854008c014d5d09aba25002235007353008335738921035054310000949926135573ca00226ea8004498480048004448848cc00400c008448004488008488004800488888848cccccc00401c01801401000c0088004448c8c00400488cc00cc008008004cc8c8c8ccc888c8c8cc88c8c8ccc888c8c8cccc8888c8cc88cc88c8c8cc88cc88c8c8c8c8cc88ccc888ccc888ccc888cccccccc88888888cc88ccccc88888cccc8888cc88cc88cc88ccc888cc88cc88cc88cc88cc88c8c8c8c888c888c94cd4c0dc00c54cd4c168cc0f4c028ccc01cccd54c128480054111414ccc02001940052201004881003303e3303c4800920c801300a35303a00522222200515335305a333573466e1cccc01cccd54c128480054111414ccc0214cd4d4144d4c0354004888888888800c4c178588854cd4d414c0044008884c188594004d4c0e8014888888010d4c0e801488888800d200205c05b15335305a3303d300a33300733355304a12001504450533300835303a0052222220065001489004881003303e3303c3370266e0520d00f48050d4c0e801488888800520d00f300a35303a00522222200515335305a5335305a333573466e1d4011200005c05b105c13303d300a33300733355304a12001504450533300835303a0052222220025001489004881003303e3303c5004483403cc028d4c0e80148888880144ccd5cd19b87323320013200133355305112001323350592233350590030010023505600133505822230033002001200122337000029001000a4000666aa60942400244a66a60b86a602a6a60260044440064466a607000440c04a66a6a034004420c220c2266a0a80040022002a0a6664464600266aa60182400246a6026002440026a6020a0084444444444014640026aa0c244a66a6a0aa0022006442646600e0060026008002a0a4a0a6900102e02d882d882d882d882d899911a98078011111111111299a9a810999aa982e0900099a83191299a9a811801108018800a8111299a9833999ab9a3371e0180020d20d026a0480022a046006420d220ce6a6016004440046a607400a44444400c26a60140024400426a606c0024444440024446464600200a640026aa0b84466a6a0a00029000111a9aa82480111299a982e999ab9a3371e0040120be0bc2600e0022600c006640026aa0b64466a6a09e0029000111a9aa82400111299a982e199ab9a3371e00400e0bc0ba20022600c006446a600e0024444444444666aa609c24002446a602e0044446a60380064466a607e0044a66a60cc666ae68cdc780a000834033899a82f00280388039003a82b804990009aa82b110891299a9a8260008a82711099a827980200119aa980309000802000919a81d000a40044424660020060044002444444444424666666666600201601401201000e00c00a0080060044002442466002006004400244424666002008006004400244246600200600440022424460040062244002240022442466002006004240022442466002006004240022442466002006004240022424446006008224440042244400224002424444600800a424444600600a424444600400a424444600200a40024424660020060044002424444444600e01044244444446600c012010424444444600a010244444440082444444400644244444446600401201044244444446600201201040024244600400644424466600200a00800640024244600400642446002006400224400424400240024444442466666600200e00c00a0080060044002446600a66e080094cd4c080ccd5cd19b870014800008808452000153353020333573466e2400520000210221480084cdc0a40009001299a9810199ab9a337100029000011010899b8148000004400488d4d401c00888d4d402400c88c94cd4c090ccd5cd19b87005003026025153353024333573466e1c0100080980944098540045400454cd4c08cccd5cd19b893370400800266e0800800c0940904090409488d4d401800888d4d402000c88cc01ccdc100200119b8200300122325335301e333573466e1c009200002001f132635300433573892103505433000054984cd401ccdc2001a80099b84002500113301c5335301d333573466e20009200001f01e13370290000010801299a980e999ab9a33710002900000f80f099b8148000004400448004800448848cc00400c00848004488cd54c034480048d4d5401c00488cd54028008cd54c040480048d4d5402800488cd54034008ccd4d5403c0048cc0892000001223302300200123302200148000004cd54c034480048d4d5401c00488cd54028008ccd4d540300048cd54c044480048d4d5402c00488cd54038008d5404c00400488ccd55402006c0080048cd54c044480048d4d5402c00488cd54038008d54044004004ccd55400c058008004444888ccd54c020480054040cd54c034480048d4d5401c00488cd54028008d5403c004ccd54c0204800488d4d54020008894cd4c070ccd54c04848004c8cd406888ccd4d402c00c88008008004d4d402400488004cd4024894cd4c078008408040040748d4d5402c00488cc028008014018400c4cd405001000d4044004cd54c034480048d4d5401c00488c8cd5402c00cc004014c8004d54080894cd4d40500044d5403c00c884d4d54034008894cd4c084cc0300080204cd5405001c0044c01800c00848848cc00400c00848004448848cc00400c008448004c8004d5405488448894cd4d40300044008884cc014008ccd54c01c480040140100044484888c00c01044884888cc0080140104484888c004010448004c8004d540408844894cd4d401800454020884cd4024c010008cd54c01848004010004c8004d5403c88448894cd4d40180044d402400c884ccd4030014c010008ccd54c01c480040140100044488008488488cc00401000c4800448d4d400c0048800448d4d40080048800848848cc00400c0084800488ccd5cd19b8f0020010060053200135500622253353004333573466e1c005200000600510021330030013370a00400224400424400240024466e0000800498448c8c00400488cc00cc00800800522011c09aaedfc2c267948a623a4dddd093327c235c3fa88a47f14d41a734700010481d866820086581c33318e7ff4fd4c1be92a183f9df5200d954a0bfdcdbad0e6f280fa5d1a11d260c0581cf0ff48bbb7bbe9d59a40f1ce90e9e9d0ff5002ec48f232b49ca0fb9a4a69676e69666963616e74581c33318e7ff4fd4c1be92a183f9df5200d954a0bfdcdbad0e6f280fa5dc241000581840000d866820180821a006acfc01ab2d05e00a100818258202eb7da4b62324dfcfbdf0c6a9bc858411f6d3433501572d7737a77e79bdbb1e158404eb5d775da884a452905061102c91126ee53a70fa6b4f895e58844ee7c6c4d55cf20804b62fa4179c6257bc9a0f4568cc54089b13ec27f16ba1e1d24212a080ca10082825820dbc5e827723d858c0794df094b85e97416288ebcd9aa6a970d1061fdbe6bbf3258403fda76c7d65f6b147da46da9135a1bcdd4f06eee12dac3e7dff9008c15808c7e81360972269d9057f05f86fd3c5d8c88290e3c34891099e0555968e491439b0e8258200d7ab41250518587907a4ae7b3e1e71c8e78ddceb19ea34843b329d496877672584036614c0faa0d1dacdafaba1c07b7620d080057ade82045ece9a696f7dc9a05a948b7e87b8348b3f613c8c3ee8ce03d557c8a6564cb6af1c19bc4ca9c4b588d07a40081825820d2beea31ad3bbc59b0d50a84a9395e9f55dca859ac7a78da7b0c1ea946fdd3635840f04933d67c4e65f2f4005623f8e625dbda88bab8f78184a46a41f9d196d0752533610d8771b950bc81f5793930e9f331f2825e96872086417e11a4e833189008038259014f59014c01000032323232323232322223232325333009300e30070021323233533300b3370e9000180480109118011bae30100031225001232533300d3300e22533301300114a02a66601e66ebcc04800400c5288980118070009bac3010300c300c300c300c300c300c300c007149858dd48008b18060009baa300c300b3754601860166ea80184ccccc0288894ccc04000440084c8c94ccc038cd4ccc038c04cc030008488c008dd718098018912800919b8f0014891ce1317b152faac13426e6a83e06ff88a4d62cce3c1634ab0a5ec133090014a0266008444a00226600a446004602600a601a00626600a008601a006601e0026ea8c03cc038dd5180798071baa300f300b300e3754601e00244a0026eb0c03000c92616300a001375400660106ea8c024c020dd5000aab9d5744ae688c8c0088cc0080080048c0088cc00800800555cf2ba15573e6e1d200201591e1b591e1801000032323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232222323232533533355333573460cc0042646424446600200a0086eb4d5d09aba25002375a6ae85400454ccd5cd1832801099091118010021bad357426aae7800c54ccd5cd1832001099190911198018028021bad357426ae894008c0ccd5d0a80082e1119191a827911111a80391191111aa99a9824806108008b1119191a9a9a80103102d91191919191919191aa99a982a89119982d91299a99820a8071a80103409980200100088008008020b03c9111919191919191919191919191982a299a8050a99aa8100999ab9a3094013303a307908101330820106700b06706e0060063305433355307908101305c05a305953353502b2233500206e2071210011635014222222207a33054353501422208e0122350012322533355333500a2153335004215333500c2130054984c011261533350052130054984c0112603c04f15333500b2130044984c00d261533350042130044984c00d2603b153335003205003a04f153335003215333500b2130044984c00d261533350042130044984c00d2603b04e15333500a2130034984c009261533350032130034984c0092603a153350010700820108201070253335002215333500a21533350042133303a03b00200116161604e15333500921533350032133303903a00200116161604d04e33054330500153306f00b02733054330533306301602548008cc150cc14ccc18c02c0952002330543305333063001010002330543333084012222533500315335002135001222223305d3305c0053306c01402b3305d3305c0043306c01402a3305d3305c00300c3305d3305c0023306c0140193305c001304800d0910122153350041622153350071622153350081622133300c003001323232323232323533307d0050070272222225335330743305100248000cc1440052000161333335003235500b2222223501d222223501b22235051222223232323232323232323253353308b013308b013306e00848000cc1b802920003308b013306d00201e3308b0153353306e00a00315335330870100e07013308b013308a013309a010110703370066e0402800c060cc22804cc2680404411c0084cc22c04cc22804cc268040441c0060cc22c04cc22804cc2680404411c008cc22804cdc08050019984d008088070a99a998370041a802055008a99a99843808078380998458099845009984d0080883819b80337020106a008154020306611402661340202208e00426611602661140266134020220e003066116026611402661340202208e004661140266e04020d40102a804cc2680404403c4cc22c04cc22804cc2680404411c008cc22804cc268040441c0060cc22c04cc20c04048070cc2080404006c4c8c8c8ccccc2c80400c008cdc019b800180050013370002e002a66a0082605466e0800c00840594cd400c4cccc0a005406406005c520003370002e00866e0005cd40102a80458c27c04028d40082a404d40042a404d54cd54ccd5cd19b8900148000278044c94ccd5cd19b890014800027c044c94ccd5cd19b8900148000280044c28404ccc2ec0400c0080054ccd5cd19b8900400610041006350020ad0121001160b901350010b0015333573466e2400400c54ccd5cd19b880010031330a8010023370666e080080400444cc2a0040080104cc2a004cdc199b820040110100043370666e080040380414cd4cc1fc01c1a04cdc0998490081100399b80011010133092010220073370666e080040300354cd4cc1f40101984cdc0998480081000219b8000f00e133090010200042235500c2222223501e222223501c222350522222232323232323232323253353308b013306e00748000cc22c04cc1b4008074cc22c04cc22c04cc22804cc2680404011c008cc22804cc268040401c005ccc22c04cc20c0404406ccc2080403c0684c8c8c8c8ccccc2cc0400c008cdc019b800180060013370002e002a66a00a2605666e0800c00840594cd40104cccc0a405406406005c52000350020b301350010b60153353330690870100e01e1330ae013370002c00e02a26615c0202c66e0005401c58c27c04024cdc199b820010123370200400266604400600266e0ccdc0981219b803370400400466e08cdc119b82337049004241941e90680780200198600080199b824801120ca0f350050a70130be01001350030a60153353308001001069133702661260204600266e000440404cc24c0408c004d400428804d54cd4ccc1801f80140544ccc2d0040140340304ccc2d004010030034888d400c88ccc2e40401401000c88d54030888888d407888888d4070888d414888888c8c8c8c94cd4cc21804cc1a4009200033086013306800101833086015335330820101906b13308501330950100b0193370000202426610c026610a026612a020160320026610a026612a020160d60246610c02660fc01802c660fa01402a2a66a6660c8104020120322666661540266e00044008cdc08080008078070068999998550099b810110013370002000401e01c01a2c66603e6a00614c026a00614a02002a66a66100020020d2266e04cc24c0408c004cdc0008808099849808118009a800851009aa99a99983003f00280a899985a00802806806099985a008020060069111a8019119985c80802802001911aa8061111111a80f111111a80e1111a82911111191919191919299a998440099835802240006611002660d80020086611002a66a66108020360da266110026610e026612e0201a03666e00068050cc21c04cc25c04034014cdc08020008a99a99842008028368998440099843809984b8080680d80d19843809984b8080680299b8033702008002028266110026610e026612e0201a03603466110026610e026612e0201a00a66e04010004cc21c04cc25c040341b4050cc22004cc20004038060cc1fc03005c54cd4ccc1982100402c06c4ccccc2b004cdc000980099b8101201a01101000f1333330ac013370202603466e0004800404404003c594cd54ccd5cd19b880190011309f013370066e0ccdc119b82002019483403ccdc119b81001019483283d200209e012100116350040a601350030a60153353308001001069133702661260204600266e000440404cc24c0408c004d400428804d54cd4ccc1801f80140544ccc2d0040140340304ccc2d004010030034888d400c88ccc2e40401401000c88d54030888888d407888888d4070888d414888888c8c8c8c94cd4cc21804cc1a4011200033086013308601330680030193306800201833086015335330820100906b133086013308501330950100b009337000060246610a026612a020160100042a66a66104020100d626610c026610a026612a0201601066e00008048cc21404cc2540402c02400c4cc21804cc21404cc2540402c02400ccc21804cc21404cc2540402c020008cc21404cc2540402c1ac048cc21804cc1f8030058cc1f40280544c8c8c8ccccc2b40400800ccdc019b8101200700133700022002a66a0082604a66e0800800c40414cd400c4cccc08c03c04c048044520003370202400866e0404000858c26804010cdc199b8200200e00d3370666e08004038030cc244040840f8888c8cdc199b820010033370066e0801120d00f0013370400290650791112999ab9a3371200890000a4000264a666ae68cdc48008028a4000264a666ae68cdc4800a400029000080099b833370400466e04004014cdc019b8200148028014c014cdc10018011192999ab9a33710004900004d808a999ab9a30a10100214800054ccd5cd1851008010a40042a666ae68c28c04008520021330010023370066e0c009200448008c254048894ccd5cd19b880010021330030013370666e00cdc1802000800a4008200426660f2002006046464a666ae68c27c04d55ce80089919191919191919191919191919091999998008050048040028018011bad357426ae88008dd69aba100135744010a666ae68c2b4040084c8c8488888cc01001c018dd69aba135744a0046660f8eb9d71aba15001153335734615802004264642444446600200e00c6eb4d5d09aba25002375a6ae85400454ccd5cd18558080109909111118028031bad357426aae7801854ccd5cd18550080109919091111198010038031bad357426ae894008ccc1f1d73ae35742a0022a666ae68c2a4040084c8c8488888cc00c01c018dd69aba135744a0046660f8eb9d71aba150010a101135573c00a6aae74010cc1e1d71aba100530743574200a60e66ae84014dd51aba1001357440026ae88004d5d10009aab9e0010970137540026a002104026a00810c0260c82446660d444a66a660b066606c0d46a004104026a03c1040266606c0a06a6a0040fc0ee05e266008004002200200202a60c82446660d444a66a660b066606c0a06a0040ee6a0200ee66606c0a06a0040ee05e2660080040022002002026666660f0660c602c044660c602c04203e660c602c02003c660a8660a0044607a008660a8660a0042607c008660a8024660a8a66a60c82446660d444a66a660a66aa03a104026a6a0040ee1040226600800400220020020260d6442a66a0020fe440dea66a6660640a600490000998299981d183c840809984100833800a40042660a66607460f21020266104020ce0029000183800999b8100101d303d001333066059008010305333307f22322325333573466e1c010dc680488010a999ab9a308f0100415333573466e1d205a500313370290001980299b800044800800800400454ccd5cd19b885002481805854ccd5cd19b8950023370090302402426600866e0000d20023370066e08005201433702a00490300b099b8e0060014800120001533500400115335501a13335734611a026606860e60f6660f80c200a0c20d00022a66a0062a66aa0320022666ae68c23804cc0ccc1c81e8cc1ec18001018019c0044ccd5cd18460099819183883c9983d02f80182f833299a9983d91299a8008321109a80111299a9982b00101089834800898030019a9a99a983b03c00501083883610a99a8008b1109a80111299a8018a99a99827800a400420042c112022c666ae68cdc49982c800803240000c80ba6a0020d4a66a60b02446660bc44a66a66088a0226a0040d6266008004002200200200e2c0f8660ce02c6a00a0d460c2006a66a60a42446660b044a66a660826aa0160e06a6a6a0040d80ca0e026600800400220020020060b2442a66a0020da440ba60ba0026a0280d4660b40020246a6a0080c80be26a6a0020c20b4a66a609601c420022c2a66a660600040320ba266060002032603200e6068010464646a09c4444464646464646464660706606a00c0066607066068660a600c018660a6006018660706606e6608e6a6a66a60c60ca00401e0bc0b2660b601201090011981c1981f998188070009981c1981b9811800a40006607066068604201c60420026607066068604401c60440026606e604801c6048002660706606a60aa00a09666070a66a609024466609c44a66a60a26a6a0040c40b8266008004002200200200809e442a66a0020c6440a6a66a609024466609c44a66a60a26a0040b8266008004002200200260b000e09e442a66a0020c6440a666609a08000600860a40066a0020aca66a608824466609444a66a660666a6a6a00e0bc0ae0c46a6a0040ae0c4266008004002200200260a80062c0d06a0100ba6a6a0020b00a6a66a608400c420022c603000c606600e4464646a09e44444a66a6a00e440a8426464646464646464646464646607e660700286660aa09000800c6607e66076014660b40060246607e6607e6607c6609c6a0040c00120106607e6606e6a0040bc6a01a0d26606c6a0040be6a01a0ca6607e6607866aa60ce0d846a00244660ca00466aa60d40de46a00244660d0004666a0026e012000700466e0000520000013304000b3500922330723306400233072330640010090540540033303f3303e3304e3535335306a06c0010160650603306200f00e48008cc0fccc0f0c1700181494cd4c13c488ccc154894cd4c160d4d40081a418c4cc010008004400400400c1588854cd40041a888168c168014cd4c1a01a800c04cd40041754cd4c12c488ccc144894cd4cc0dcd4d4030194178d40081784cc010008004400400400c581bcc160004d403418cccd4080178d4d4080188178004cc11800c004cc164020d4004170cc140004020d4d40041681554cd4c11001c8400458124c06401cc0d0020448004584d55cf0011aab9d0013754004444a66a6600600400207809c46a0020b0246666666600204044a666ae68cdc38010008020a999ab9a3371200400203203044666ae68cdc400100081b01e802802001912999ab9a337120040022002200444a666ae68cdc4801000880108008881f11199ab9a3371000400207406644666ae68cdc480100081c81911199ab9a337120040020620706607c91100488100223333550023303f2233350050480010023500304222337000029001000a4000660784446006600400240026607666076e01200070246a0024444400a46a0020a246a0024407246a0024406c464a666ae68c140d55ce8008991919191981e2999ab9a305435573a00626464646464646464646464646464646464646464646424666666666600201a01801601401201000e00a00600460446ae84d5d10011980f1981dbae2001357420026ae88008cc071d71aba100135744016a666ae68c190d55ce804899191919827a999ab9a306735573a004264660a066038eb4d5d0800980d9aba1357440026aae7800817d4ccd5cd18339aab9d001132330503301c75a6ae84004c06cd5d09aba200135573c0020be6ea8d5d09aba200237546ae84004d55cf00482e1980c9981b019bad35742014660300326ae84028ccc059d70029aba100a33301575c0086ae84028cc054008d5d08051980a1192999ab9a306035573a0022646609260326ae84004c010d5d09aba200135573c0020b06ea8004d5d08051192999ab9a305f35573a002264646660b060606ae84008ccc059d70029aba10013303375c6ae84d5d10009aba200135573c0020ae6ea8004cc045d73ad37546ae84004d5d10009aba2001357440026ae88004d5d10009aba200135573c006098a666ae68c15c0044c848888c010014c02cd5d09aab9e00215333573460ac00226424444600400a60486ae84d55cf0010a999ab9a3055001132122223001005300c357426aae7800854ccd5cd182a0008990911118018029bae357426aae78008130d55ce8009baa357426ae88008dd51aba100135573c0020906ea80048c94ccd5cd182800081e8a999ab9a304f00102b04735573a6ea800488c8c94ccd5cd18290008058a999ab9a3051001130193004357426aae7800854ccd5cd18280008050241aab9d00137540024464460046eac004c10888cccd55cf8009014119198239981c98031aab9d001300535573c00260086ae8800cd5d0801020919118011bac00130402233335573e002404c46608860086ae84008c00cd5d100101f91919192999ab9a305300211222203515333573460a4004220922a666ae68c1440084c8c848888888cc004024020dd69aba135744a0046eb8d5d0a8008a999ab9a3050002132321222222233002009008375c6ae84d5d128011bae35742a0022a666ae68c13c0084c8c848888888cc018024020dd71aba135744a004603a6ae85400454ccd5cd1827001099091111111803804180e9aba135573c0062a666ae68c1340084c848888888c014020c074d5d09aab9e003045135573c0046aae74004dd50009192999ab9a304a35573a0022646606660086ae84004dd69aba1357440026aae78004108dd50009192999ab9a304935573a00226eb8d5d09aab9e0010413754002220582205444a66a00442a66a00442660240040020462a66a0024046068446a004446a006446666010008006004002446a004444446a00c44444a66a6601e01400a2a66a6601e0120082a666ae68cdc38040018a999ab9a3370e00e0042a66a00c42a66a004426a004446a004446a00a446a00444a66a666602e00c00a0040022a66a00e42a66a008426604800400206a2a66a006406a08c0680562a66a002405607805405405405444446466a00a466a0084a666ae68cdc78010008018121013919a802101392999ab9a3371e0040020060482a66a00642a66a0044266a004466a00446601200400244405444466a0084054444a666ae68cdc38030018a999ab9a3370e00a0042660220080020520520442a66a00240440664466a004466a00446601c0040024046466a004404646601c004002446a004446a00644a666ae68cdc780200109980780180081091199aa9815019180680191a80091199aa981681a980800311a80091199a800919805a40000020144660160029000000998030010009981280100a91199ab9a3370e00400202c03a44a66a00420020324466aa605205c46a002446604e004666a002466aa605a06446a0024466056004601800200244666010016004002466aa605a06446a0024466056004601600200266600600c004002444666aa605005c06466aa605205c46a002446604e0046010002666aa605005c446a00444a66a666aa6054064601a01646a002446601400400a00c200626606c00800602800266aa605205c46a002446604e0046606844a66a002260120064426a00444a66a6601800401022444660040140082600c00600800442444600200842444600600844666ae68cdc780100080800b9980e80080a11299a801012080091980e11199a8018128010009a80080f9192999ab9a303435573a00226464646466666042666016eb9d71aba100433300b75ceb8d5d08019bad357420046eb4d5d0800998051192999ab9a303a35573a0022646604660146ae84004cc035d71aba1357440026aae780040c8dd50009aba1357440026ae88004d5d10009aba200135573c0020586ea80048c94ccd5cd18199aab9d0011323301c3005357420026600c0086ae84d5d10009aab9e00102b375400246464a666ae68c0d00044c8c8c8c8c8488ccc00401801000cdd69aba1357440046eb4d5d08009aba2002375a6ae84004d55cf0010a999ab9a3033001130103004357426aae780080acd55ce8009baa0012323253335734606600226424460020066eb8d5d09aab9e00215333573460640022601e6eb8d5d09aab9e00202a35573a0026ea800488c8c94ccd5cd18190008980798021aba135573c0042a666ae68c0cc0040380a8d55ce8009baa001222325333573460626aae740044c8cc068c014d5d080098021aba1357440026aae780040a4dd5000911a8009119198131119a800a4000446a00444a666ae68cdc7801004898038008980300180298129119a800a4000446a00444a666ae68cdc7801003880089803001919a80081100211a800911a80111111111111999a805900b900b900b9199aa981101500b11a80091299a998090010020980c00180b805912999ab9a3371e6a0040346a0020342666ae68cdc39a80100b1a80080b001805003880b91180f11299a80088019109980300118020009299a800900b0019111a801111299a800909a8029111111111299aa99a999aa981001400a11a800912999ab9a3371e00401c2602c00602a0044260286a0020440244260240022c2c2006424460040066601444a66a0044200620020022018446602e44a66a00203c4426a00444a666ae68cdc78010038a99a8008111109a80111299a8018a999ab9a302d00113301400b0020262202813006003002235001222222222200a2350012201c23500122222222220092220032220012220023333300248811c0be55d262b29f564998ff81efe21bdc0022621c12f15af08d0f2ddb10048811ce4214b7cce62ac6fbba385d164df48e157eae5863521b4b67ca71d8600330014891c13aa2accf2e1561723aa26871e071fdf32c867cff7e7d50ad470d62f004881074d494e535741500048811c2f2e0404310c106e2a260e8eb5a7e43f00cff42c667489d30e179816004881054f574e455200221233001003002222221233333001006005004003002300b22112225335001135003006221333500500c300400233355300700f0050040012200130092211222533500110022213300500233355300700d005004001300822112253350010052213300f30040023355300600b00400111001220023005221225333573466e20005200013005490103505436001533500213005491035054370022153335734602c0062004266a600c01000266e0400d2002253357380022c240026004444a66a00220044426a004446600e66601000400c00200660024444a66a00220044426a00444a666ae68c0500044ccc02001c01800c4ccc02001ccc028ccc02c01c00800401800c8c8c00400488cc00cc00800800488488cc00401000c88848ccc00401000c00854cd5ce2490350543100162215335001100200715335738921001622222222007220053704904d0f910b111110021b8748000dc3a40046e1d2004370e90031b8748020dc3a40146e1d200c010483d8799fd8799f4040ffd8799f581c6f46e1304b16d884c85c62fb0eef35028facdc41aaa0fd319a152ed6444d434f53ff1b000004e7a8761d3500d87a80ffd8799fd8799fd8799f581c2565dfe12f53eb5db12bb707d720be07bc91464c2a0f03df8cc16f9cffd8799fd8799fd8799f581c2411c27854bd121f398d5bb965c35c07a843d7f3ab85c531a856701effffffffd8799fd8799f581c2565dfe12f53eb5db12bb707d720be07bc91464c2a0f03df8cc16f9cffd8799fd8799fd8799f581c2411c27854bd121f398d5bb965c35c07a843d7f3ab85c531a856701effffffffd87a80d87a9fd8799f4040ff1a59b47a40ff1a001e84801a001e8480ffd8799fd8799fd8799f581ccf16cf016f4a4952403e22ae1c02c02bc9413b7edb705640cb78ea10ffd8799fd8799fd8799f581cf592e2f4158556f0ff82439aa0011b813d92f0aed34ae605bd1d5e3effffffffd8799fd8799f581ccf16cf016f4a4952403e22ae1c02c02bc9413b7edb705640cb78ea10ffd8799fd8799fd8799f581cf592e2f4158556f0ff82439aa0011b813d92f0aed34ae605bd1d5e3effffffffd87a80d8799fd8799f4040ff1a4b21dba4ff1a001e84801a001e8480ff0583840000d879808219ee801a01f8b5cd840003d879808219ee801a01f8b5cd840004d8799fd8799fd8799f581c2ebacbaf16275a0184357de07c81d4a895f29343c235974f3b4c1d7dffd87a80ff02ff821a003409031a4c9b21e8a100828258208fad5bad87434ed3f86151ce87c9191e0e1f6f4ed19d3c00b6f1dc8f445db97958407762c04dfcf3de61228a1a1b839e03e4d981569b3c82346970c96c9f5581049c29376f903c66aa678e4bc40ae44df1d68c6d4b7086111654a93f7e16adfbdc07825820b1d60213361fd2daccef5c5f4eb850f6ea2aadbe354d5c9757fc8ee0857f6c8c5840810ea4ae08eeb0a81f32676004347be284dd115bd16fa89666d0cd66553c175d42b9c552d13a5136663b86c3981a6053241b71213db9704433bfb895a2f35104a20081825820ff9262e776688e318ff88d3c1e51608b5a67a03a7fcd507491bbeb37361767325840611c4d26c4d3a39791e3715edcf53c453aeec678564f427518b75e30678a6fc1be2fc1d808f33fa4fa1beed06dd849a29dde21463da59a278fc9c3a23d7c480a049fd8799fd8799fd8799f581c3f561bfaaf483a3dc74d4a012441c4b5c1d186888d2fbad5cdc92449ffd8799fd8799fd8799f581c8abedb0643918cba37203061d71cc0398d5cac6e14a47c58e41dfa36ffffffffd8799fd8799f581c3f561bfaaf483a3dc74d4a012441c4b5c1d186888d2fbad5cdc92449ffd8799fd8799fd8799f581c8abedb0643918cba37203061d71cc0398d5cac6e14a47c58e41dfa36ffffffffd87a80d87c9f1a4694158e1b0000000384655046ff1a001e84801a001e8480ffffa4008182582002bce9638549bf0d76207b9851a7c3abaaf06aa7b5ae327c813673062f96de2c5840b22040d5a6172a7b66a437e0794abd2e0a811c8eb5bc1e5b538fcaa78dd78553e56f3521b9679f885b8342863593c8ae5ff1d6fa343828f6e09cf34bdd04430b0381590fc1590fbe0100003233223232323322333222323233322232333222323332223322323322323332223232332233223232332232323332223322332233223322323232323232323232323232332232323232323232323322323232332232333322223232323232322232232325335305c33223530310012235303500222222222322235304400c23232325335306f333222533530723300300200110731074506e32353047001220023253353505a00113507649010350543800221002302e5002004107115335304a01313301b49101350033355029302f1200123535505e00122323355030335502d30331200123535506200122353550640012253353506f335503533550250490040062153353507033550363335550323039120012235355069002232233225335350770022130020011507800425335350763335502c0500040072153353080013304d0010031335503d5079300400215335308001330630010031335503d507933335502e0510053304900100300215078150773200135508601225335350680011506a2213535506e002225335308201330530020071003133506d33550710020013006003350720010022133026491023130003322333573466e200080041f41f8cc8cd54c0ec48004d40c00048004cd40c40952000335530321200123535506900122001001004133573892010231310007a133573892010231320007900233233553023120013503500135034001335038223355302c120012353550630012233550660023355302f12001235355066001223355069002333535502b0012330264800000488cc09c0080048cc09800520000013355302c1200123535506300122335506600233353550280012335530301200123535506700122335506a00235502f0010012233355502804a0020012335530301200123535506700122335506a00235502d001001333555023045002001505e33233553023120012253353506c3003002213350610010021001505f2353053001222533530763332001504100600313506f0021506e011320013333555028302f1200122353055002225335307333044002500b10031333355502c303312001235305a00122253353506e333550245042003001213333550265043004335530301200123535506700122335506a002333535502c0012001223535506b002223535506d0032233550703302c00400233553039120012353550700012233550730023335355035001200122330310020012001333555030052003001200133355502704900300100213333550255042003002001003001505b500113301b49101340033355029302f1200123530540012233043500a00250011533535058335530401200123320015051320013530460012235305100122253353506b0012321300100d3200135507f2253353506100113507d491022d310022135355067002225335307b3304c00200710011300600313507a49101370050011350744901013600221335530421200123320015053320013530480012235305300122253353506d0012321300100f32001355081012253353506300113507f491022d310022135355069002225335307d3304e00200710011300600313507c4910137005003133355301d12001225335306f335306a303e302d35304600222001207125335307033041001300401010721350764901013300133505a0020011001505900d3200135507622533535058001135074491022d31002213530470022253353072333200150710020071353063303000122335306f00223507b491022d310020011300600315335350520011306d4988854cd4d41500044008884c1c5263333573466e1d40112002203a23333573466e1d40152000203a23263530663357380b80ce0ca0c80c66666ae68cdc39aab9d5002480008cc0c4c8c8c8c8c8c8c8c8c8c8c8cccd5cd19b8735573aa01490001199999999981f99a828919191999ab9a3370e6aae7540092000233045304b35742a00460986ae84d5d1280111931a983a99ab9c06b076074073135573ca00226ea8004d5d0a80519a8288241aba1500935742a0106ae85401cd5d0a8031aba1500535742a00866a0a2eb8d5d0a80199a82899aa82b3ae200135742a0046ae84d5d1280111931a983899ab9c06707207006f135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135573ca00226ea8004d5d0a80119191999ab9a3370e6aae75400520022303a303e357426aae7940088c98d4c1a0cd5ce02f03483383309baa001357426ae8940088c98d4c194cd5ce02d833032031883289931a983219ab9c49010350543500065063135573ca00226ea80044d55ce9baa001223370000400244a66a60ac00220b0266ae7000815c4488c88c008004c8004d5417c894cd4d41040045413c884d4d5411c008894cd4c16ccc02000801c4d41500044c01800c448888c8cd54c03c480048d4d5411800488cd54124008ccd4d5402c0048004880048004ccd554018014008004c8cd40054109410c488cc008cd5411c014010004444888ccd54c0104800540fccd54c030480048d4d5410c00488cd54118008d5402c004ccd54c0104800488d4d54110008894cd4c160ccd54c06048004d4034cd403c894cd4c168008417040041648d4d5411c00488cc028008014018400c4cd410c01000d4100004cd54c030480048d4d5410c00488c8cd5411c00cc004014c8004d54184894cd4d410c0044d5402c00c884d4d54124008894cd4c174cc0300080204cd5404001c0044c01800c008c8004d5416888448894cd4d40fc0044008884cc014008ccd54c01c480040140100044484888c00c01044884888cc0080140104484888c00401044800448cd404888ccd4d401000c88008008004d4d40080048800448848cc00400c00848004c8004d541488844894cd4d40d8004540e0884cd40e4c010008cd54c018480040100044448888cccd54011403c00c0040084488cd54008c8cd403c88ccd4d401800c88008008004d4d401000488004cd401005012800448848cc00400c008480044488c0080048d4c08c00488800cc8004d5412c88c8c94cd4c114cc0a14009200213300c300433530081200150010033004335300d12001500100310031332233706004002a002900209999aa9801890009919a80511199a8040018008011a802800a8039119b800014800800520003200135504a221122253353502f00113500600322133350090053004002333553007120010050040011235350050012200112353500400122002320013550472212253353041333573466e2400920000430421502d153353502b0011502d22133502e002335300612001337020089001000899a801111180198010009000891091980080180109000990009aa821911299a9a81300108009109a980a801111a982180111299a9a8160038a99a9a8160038804110b1109a980d801111a982480111299a9824199ab9a33720010004094092266a0660186601e01601a2a66a6090666ae68cdc8804001024825099a819803198078070028a99a982419809003800899a81980619807805806899a81980319807807002990009aa82111091299a9a8130008a814110a99a981f19804002240002006266a600c240026600e00890010009119b8100200122333573466e240080040e80e4488cc00ccc01cc018008c018004cc894cd4d40c0008854cd4d40c400884cd4c0b80088cd4c0bc0088cc034008004888100888cd4c0c401081008894cd4c104ccd5cd19b87006003043042153353041333573466e1c01400810c1084cc0380100044108410840ec54cd4d40c0004840ec40ecc014008c014004894cd4c0d8008400440dc88ccd5cd19b8700200103703623530240012200123530230012200222335302d0022335302e00223300500200120352335302e002203523300500200122333573466e3c0080040cc0c8c8004d540e08844894cd4d407000454078884cd407cc010008cd54c018480040100048848cc00400c0088004888888888848cccccccccc00402c02802402001c01801401000c00880048848cc00400c0088004848c004008800448800848800480048c8c8cccd5cd19b8735573aa004900011981519191999ab9a3370e6aae75400520002375c6ae84d55cf280111931a981899ab9c02703203002f137540026ae854008dd69aba135744a004464c6a605c66ae700900bc0b40b04d55cf280089baa00123232323333573466e1cd55cea801a4000466600e602c6ae85400cccd5403dd719aa807bae75a6ae854008cd4071d71aba135744a004464c6a605c66ae700900bc0b40b04d5d1280089aab9e5001137540024442466600200800600440022464646666ae68cdc39aab9d5002480008cc88cc024008004dd71aba1500233500a232323333573466e1cd55cea80124000466446601e004002602c6ae854008ccd5403dd719aa809919299a981419805a800a40022a00226a05c921022d33001375a00266aa01eeb88c94cd4c0a0cc02d400520001500113502e491022d32001375a0026ae84d5d1280111931a981719ab9c02402f02d02c135573ca00226ea8004d5d09aba25002232635302a33573804005605205026aae7940044dd500091199ab9a33712004002040042442466002006004400244246600200600440022464460046eb0004c8004d5408c88cccd55cf80092804119a80398021aba1002300335744004048224464460046eac004c8004d5408c88c8cccd55cf80112804919a80419aa80618031aab9d5002300535573ca00460086ae8800c0944d5d0800889100109109119800802001890008891119191999ab9a3370e6aae754009200023355008300635742a004600a6ae84d5d1280111931a981099ab9c01702202001f135573ca00226ea8004448848cc00400c0084480048c8c8cccd5cd19b8735573aa004900011980318071aba1500233500a2323232323333573466e1d40052002233300e375a6ae854010dd69aba15003375a6ae84d5d1280191999ab9a3370ea004900011808180a9aba135573ca00c464c6a604666ae700640900880840804d55cea80189aba25001135573ca00226ea8004d5d09aba25002232635301c33573802403a03603426aae7940044dd5000910919800801801100090911801001911091199800802802001900089119191999ab9a3370ea002900011a80418029aba135573ca00646666ae68cdc3a801240044a010464c6a603066ae7003806405c0580544d55cea80089baa001121223002003112200112001232323333573466e1d4005200223006375c6ae84d55cf280191999ab9a3370ea0049000118041bae357426aae7940108c98d4c04ccd5ce00480a00900880809aab9d50011375400242446004006424460020064002921035054310012253353003333573466e3cd4c01800888008d4c018004880080140104ccd5cd19b873530060022200135300600122001005004100412200212200120012212330010030022001235002490101310012326353003335738002008004930900090008891918008009119801980100100081049fd8799f581c7cf58d6e5f8d836f865720a1ba41f1825b113239d9638dcb7eb133789fd8799fd8799fd8799f581cdefea977fe110adb48fd3e446caa5cef7c4385299f0e763e079eca5cffd8799fd8799fd8799f581c1f744f16189d1570bf081eac56d52bea9cf1a11344db310db0d43ed4ffffffffa140d8799f00a1401a000f4240ffffd8799fd8799fd8799f581c70e60f3b5ea7153e0acc7a803e4401d44b8ed1bae1c7baaad1a62a72ffd8799fd8799fd8799f581c1e78aae7c90cc36d624f7b3bb6d86b52696dc84e490f343eba89005fffffffffa140d8799f00a1401a000f4240ffffd8799fd8799fd8799f581c7cf58d6e5f8d836f865720a1ba41f1825b113239d9638dcb7eb13378ffd8799fd8799fd8799f581c20ecc4fa5c505bc8c575af6fff54e79c14f42b3d68f19023ee0b044fffffffffa140d8799f00a1401a007a1200ffffffffff0581840004d87a80821a005c09e81a7df57944a10283845820b2dffa8e405c4f18694c581679f88a0189fbb6359f951ce0188412783095d6dc5840d20df4c3df5b439ef4710b7251eae985f483428e18e8065bca93115173fb77133f4eba08566935f72c876035e495a614ea97290aafe09e2b1c4bab3052c0ae0958207974685e7494b8a4296a584c442a2b17bb44e88a30d427c5b3b2eaa090ef52ac5822a101581e581cca3e553c9c63c5cb6222a043c168b2a016d9d2f8abad7c8a092de1e4845820ce708045fde76fc6173e02a7c9f9680066b6fcfc06b6b3cbe3b00087fe3a87dc5840b98cc171c339a9a94ece7db53b64e0d572440e4968becbbb1d8d22de68992c7dd6b95cea166e4111bde1a6652d2003a57096482d1b97067283e682012dcc68045820b75832736985c6db1a2865adcffd3c83340f9f6b2f9e0dbd8c90bedd1aa548485822a101581e581cca3e553c9c63c5c3ae48d8432c773e0b43948eecc401da09128211ff8458200a6193a858db9524b74ee8eec76925e036d13145bec7d36315b813014ea670e55840fcf5b8ed5757fad8cb964b8241c378ce6489c6f642edda22e1460412d0aa37e5d18653a32cce20ec63b17ff39412f2805f086fc1e7512d9619b776f3fc02e20a5820b67f06c364bb817a4ac20302ce8b2f1f52c48edb976c0e40d8ea10ced9a23b995822a101581e581cca3e553c9c63c58fa90982434163ba0da931ac80db3ae4f0f24f5e92a40081825820fc0cb4b69b834ce5e6b41dbf7046bc8cf46a791349e875ef027af5288f94bff85840e7bf1b29dc89f920281645486bf577d9adb2b4e716ae448cff5567a8f6ece0f70b21d9220923f5a51fae40aa92619772e507be2f1c471c2b199b4bf0e8f9c60f0381590fc1590fbe0100003233223232323322333222323233322232333222323332223322323322323332223232332233223232332232323332223322332233223322323232323232323232323232332232323232323232323322323232332232333322223232323232322232232325335305c33223530310012235303500222222222322235304400c23232325335306f333222533530723300300200110731074506e32353047001220023253353505a00113507649010350543800221002302e5002004107115335304a01313301b49101350033355029302f1200123535505e00122323355030335502d30331200123535506200122353550640012253353506f335503533550250490040062153353507033550363335550323039120012235355069002232233225335350770022130020011507800425335350763335502c0500040072153353080013304d0010031335503d5079300400215335308001330630010031335503d507933335502e0510053304900100300215078150773200135508601225335350680011506a2213535506e002225335308201330530020071003133506d33550710020013006003350720010022133026491023130003322333573466e200080041f41f8cc8cd54c0ec48004d40c00048004cd40c40952000335530321200123535506900122001001004133573892010231310007a133573892010231320007900233233553023120013503500135034001335038223355302c120012353550630012233550660023355302f12001235355066001223355069002333535502b0012330264800000488cc09c0080048cc09800520000013355302c1200123535506300122335506600233353550280012335530301200123535506700122335506a00235502f0010012233355502804a0020012335530301200123535506700122335506a00235502d001001333555023045002001505e33233553023120012253353506c3003002213350610010021001505f2353053001222533530763332001504100600313506f0021506e011320013333555028302f1200122353055002225335307333044002500b10031333355502c303312001235305a00122253353506e333550245042003001213333550265043004335530301200123535506700122335506a002333535502c0012001223535506b002223535506d0032233550703302c00400233553039120012353550700012233550730023335355035001200122330310020012001333555030052003001200133355502704900300100213333550255042003002001003001505b500113301b49101340033355029302f1200123530540012233043500a00250011533535058335530401200123320015051320013530460012235305100122253353506b0012321300100d3200135507f2253353506100113507d491022d310022135355067002225335307b3304c00200710011300600313507a49101370050011350744901013600221335530421200123320015053320013530480012235305300122253353506d0012321300100f32001355081012253353506300113507f491022d310022135355069002225335307d3304e00200710011300600313507c4910137005003133355301d12001225335306f335306a303e302d35304600222001207125335307033041001300401010721350764901013300133505a0020011001505900d3200135507622533535058001135074491022d31002213530470022253353072333200150710020071353063303000122335306f00223507b491022d310020011300600315335350520011306d4988854cd4d41500044008884c1c5263333573466e1d40112002203a23333573466e1d40152000203a23263530663357380b80ce0ca0c80c66666ae68cdc39aab9d5002480008cc0c4c8c8c8c8c8c8c8c8c8c8c8cccd5cd19b8735573aa01490001199999999981f99a828919191999ab9a3370e6aae7540092000233045304b35742a00460986ae84d5d1280111931a983a99ab9c06b076074073135573ca00226ea8004d5d0a80519a8288241aba1500935742a0106ae85401cd5d0a8031aba1500535742a00866a0a2eb8d5d0a80199a82899aa82b3ae200135742a0046ae84d5d1280111931a983899ab9c06707207006f135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135573ca00226ea8004d5d0a80119191999ab9a3370e6aae75400520022303a303e357426aae7940088c98d4c1a0cd5ce02f03483383309baa001357426ae8940088c98d4c194cd5ce02d833032031883289931a983219ab9c49010350543500065063135573ca00226ea80044d55ce9baa001223370000400244a66a60ac00220b0266ae7000815c4488c88c008004c8004d5417c894cd4d41040045413c884d4d5411c008894cd4c16ccc02000801c4d41500044c01800c448888c8cd54c03c480048d4d5411800488cd54124008ccd4d5402c0048004880048004ccd554018014008004c8cd40054109410c488cc008cd5411c014010004444888ccd54c0104800540fccd54c030480048d4d5410c00488cd54118008d5402c004ccd54c0104800488d4d54110008894cd4c160ccd54c06048004d4034cd403c894cd4c168008417040041648d4d5411c00488cc028008014018400c4cd410c01000d4100004cd54c030480048d4d5410c00488c8cd5411c00cc004014c8004d54184894cd4d410c0044d5402c00c884d4d54124008894cd4c174cc0300080204cd5404001c0044c01800c008c8004d5416888448894cd4d40fc0044008884cc014008ccd54c01c480040140100044484888c00c01044884888cc0080140104484888c00401044800448cd404888ccd4d401000c88008008004d4d40080048800448848cc00400c00848004c8004d541488844894cd4d40d8004540e0884cd40e4c010008cd54c018480040100044448888cccd54011403c00c0040084488cd54008c8cd403c88ccd4d401800c88008008004d4d401000488004cd401005012800448848cc00400c008480044488c0080048d4c08c00488800cc8004d5412c88c8c94cd4c114cc0a14009200213300c300433530081200150010033004335300d12001500100310031332233706004002a002900209999aa9801890009919a80511199a8040018008011a802800a8039119b800014800800520003200135504a221122253353502f00113500600322133350090053004002333553007120010050040011235350050012200112353500400122002320013550472212253353041333573466e2400920000430421502d153353502b0011502d22133502e002335300612001337020089001000899a801111180198010009000891091980080180109000990009aa821911299a9a81300108009109a980a801111a982180111299a9a8160038a99a9a8160038804110b1109a980d801111a982480111299a9824199ab9a33720010004094092266a0660186601e01601a2a66a6090666ae68cdc8804001024825099a819803198078070028a99a982419809003800899a81980619807805806899a81980319807807002990009aa82111091299a9a8130008a814110a99a981f19804002240002006266a600c240026600e00890010009119b8100200122333573466e240080040e80e4488cc00ccc01cc018008c018004cc894cd4d40c0008854cd4d40c400884cd4c0b80088cd4c0bc0088cc034008004888100888cd4c0c401081008894cd4c104ccd5cd19b87006003043042153353041333573466e1c01400810c1084cc0380100044108410840ec54cd4d40c0004840ec40ecc014008c014004894cd4c0d8008400440dc88ccd5cd19b8700200103703623530240012200123530230012200222335302d0022335302e00223300500200120352335302e002203523300500200122333573466e3c0080040cc0c8c8004d540e08844894cd4d407000454078884cd407cc010008cd54c018480040100048848cc00400c0088004888888888848cccccccccc00402c02802402001c01801401000c00880048848cc00400c0088004848c004008800448800848800480048c8c8cccd5cd19b8735573aa004900011981519191999ab9a3370e6aae75400520002375c6ae84d55cf280111931a981899ab9c02703203002f137540026ae854008dd69aba135744a004464c6a605c66ae700900bc0b40b04d55cf280089baa00123232323333573466e1cd55cea801a4000466600e602c6ae85400cccd5403dd719aa807bae75a6ae854008cd4071d71aba135744a004464c6a605c66ae700900bc0b40b04d5d1280089aab9e5001137540024442466600200800600440022464646666ae68cdc39aab9d5002480008cc88cc024008004dd71aba1500233500a232323333573466e1cd55cea80124000466446601e004002602c6ae854008ccd5403dd719aa809919299a981419805a800a40022a00226a05c921022d33001375a00266aa01eeb88c94cd4c0a0cc02d400520001500113502e491022d32001375a0026ae84d5d1280111931a981719ab9c02402f02d02c135573ca00226ea8004d5d09aba25002232635302a33573804005605205026aae7940044dd500091199ab9a33712004002040042442466002006004400244246600200600440022464460046eb0004c8004d5408c88cccd55cf80092804119a80398021aba1002300335744004048224464460046eac004c8004d5408c88c8cccd55cf80112804919a80419aa80618031aab9d5002300535573ca00460086ae8800c0944d5d0800889100109109119800802001890008891119191999ab9a3370e6aae754009200023355008300635742a004600a6ae84d5d1280111931a981099ab9c01702202001f135573ca00226ea8004448848cc00400c0084480048c8c8cccd5cd19b8735573aa004900011980318071aba1500233500a2323232323333573466e1d40052002233300e375a6ae854010dd69aba15003375a6ae84d5d1280191999ab9a3370ea004900011808180a9aba135573ca00c464c6a604666ae700640900880840804d55cea80189aba25001135573ca00226ea8004d5d09aba25002232635301c33573802403a03603426aae7940044dd5000910919800801801100090911801001911091199800802802001900089119191999ab9a3370ea002900011a80418029aba135573ca00646666ae68cdc3a801240044a010464c6a603066ae7003806405c0580544d55cea80089baa001121223002003112200112001232323333573466e1d4005200223006375c6ae84d55cf280191999ab9a3370ea0049000118041bae357426aae7940108c98d4c04ccd5ce00480a00900880809aab9d50011375400242446004006424460020064002921035054310012253353003333573466e3cd4c01800888008d4c018004880080140104ccd5cd19b873530060022200135300600122001005004100412200212200120012212330010030022001235002490101310012326353003335738002008004930900090008891918008009119801980100100081049fd8799f581c932e5848d5d558df2c3b404edd53bdfb8838ad9ea70e067119c16f839fd8799fd8799fd8799f581ca580aeb796df6b71a1902b558f6bdc196864deeafd32a008fc275cbbffd8799fd8799fd8799f581c2a155537b85ca0dcbc5b6eb2d112bab3ff0fe416ec94c4a392b16155ffffffffa140d8799f00a1401a0036ee80ffffd8799fd8799fd8799f581c70e60f3b5ea7153e0acc7a803e4401d44b8ed1bae1c7baaad1a62a72ffd8799fd8799fd8799f581c1e78aae7c90cc36d624f7b3bb6d86b52696dc84e490f343eba89005fffffffffa140d8799f00a1401a00249f00ffffd8799fd8799fd8799f581c932e5848d5d558df2c3b404edd53bdfb8838ad9ea70e067119c16f83ffd8799fd8799fd8799f581cbea787343e01f13ec94333d2304ab82db7fcf4462df490593dd215c9ffffffffa140d8799f00a1401a06cb8080ffffffffff0581840000d87980821a0018f8e21a2853ef35a400818258201afcdd859fd74f29ffb072155776ee81e6ad6bf919be2260220eaf44e452a8c25840744bd636c3616002f16a3979379eeac655614def7378f2c86e7de372444e8d0df8f060e376805a5e201a41961e79b8d832b52cecc45cde46424982ab551d5d0a03815913a65913a3010000332332233223332223233223232333222333222333333332222222233223333322222333322223332223322332233223332223322332233223322332232323232323232323232323232323232323232323232323233550013333555504875ceb8cd54049d6bad00f00f11222222300733300430060033005002300800125335302b001105013504835304f3357389201025064000504988c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c26603aa002a0042600c6ae8540084c050d5d09aba25001135573ca00226ea80084d411d262323232323232323232323232323232323232323232323333573466e1cd55cea80aa40004a0044a02e93099999999998172800a8012801a8022802a8032803a8042804a805099a81080b1aba15012133502001635742a0202666aa032eb94060d5d0a8070999aa80c3ae501735742a018266a03a0426ae8540284cd4070cd54078085d69aba15008133501675a6ae8540184cd4069d71aba150041335019335501b75c0346ae8540084c080d5d09aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135573ca00226ea80084d41192623232323232323333573466e1cd55cea802a40004a0044a00e9309980fa800a8010980b9aba1500213005357426ae8940044d55cf280089baa0021350454988c8c8c8c8c8c8c8c8cccd5cd19b8735573aa00e90001280112804a4c2666044a002a004a006260106ae8540104ccd54029d728049aba15002133500775c6ae84d5d1280089aba25001135573ca00226ea80084d41112623232323232323333573466e1cd55cea802a40004a0044a00e93099810a800a8010980a1aba150021335005012357426ae8940044d55cf280089baa002135043498488c8c8c8c8c8c8cccd5cd19b87500448000940089401126135024500113006357426aae79400c4cccd5cd19b87500148008940889401126135573aa00226ea80084d410d261335500175ceb444888c8c8c004dd58019a80090008918009aa827111919191919191999aab9f0075504e25002053133504f50025001130063574400a266aa0a4a002a004260106aae7540084c018d55cf280089aba10011223232323232323333573466e1cd55cea802a40004a0044a00e93099a811a800a801099a8038031aba150021335007005357426ae8940044d55cf280089baa002135040498488c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c266a04ca002a004266a01000c6ae8540084c020d5d09aba25001135573ca00226ea80084d40fd261223232323232323333573466e1cd55cea802a40004a0044a00e93099a811a800a801099a8038031aba1500213007357426ae8940044d55cf280089baa00213503e498488c8c8c8c8c8c8c8cccd5cd19b87500548010940b0940092613333573466e1d4011200225002250044984d40ad40044c018d5d09aab9e500313333573466e1d4005200025029250044984d55cea80089baa00213503d4988c8c8c8cccd5cd19b875002480088090940092613333573466e1d400520002022250034984d55ce9baa00213503b498488c8c8c004dd60019a80090008918009aa823911999aab9f00125045233504430063574200460066ae88008118800444888c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c266aa092a002a0042600e6ae8540084c014d5d09aba25001135573ca00226ea80084d40e926232323232323232323232323232323333573466e1d4029200625002250044984c0c940044c038d5d09aab9e500b13333573466e1d401d200425002250044984c0b540044c030d5d09aab9e500813333573466e1d4011200225002250044984c0a540044c02cd5d09aab9e500513333573466e1d4005200025003250064984d55cea80189813a80089bae357426aae7940044dd500109a81ba4c4646464646464646464646464646464646464646464646464646666ae68cdc3a80aa401840884a0049309999ab9a3370ea028900510221280124c26666ae68cdc3a809a40104a0044a00c9309981f2800a80109bae35742a00426eb4d5d09aba25001135573ca02426666ae68cdc3a8072400c4a0044a00c9309981d2800a80109bae35742a00426eb8d5d09aba25001135573ca01a26666ae68cdc3a804a40084a0044a00c9309981ca800a801098069aba150021375c6ae84d5d1280089aab9e500813333573466e1d4011200225002250044984c0d540044c020d5d09aab9e500513333573466e1d4005200025003250064984d55cea80189817a800898021aba135573ca00226ea80084d40d92623232323232323232323232323333573466e1d4021200225002250084984ccc0e940054009400c4dd69aba150041375a6ae8540084dd69aba135744a00226ae8940044d55cf280289999ab9a3370ea0029000128019280324c26aae75400c4c0cd40044c010d5d09aab9e50011375400426a06a93119191919191919191999ab9a3370ea0089001128011280224c26070a00226eb8d5d09aab9e500513333573466e1d4005200025003250064984d55cea8018981aa80089bae357426aae7940044dd500109a81a24c46464646464646666ae68cdc39aab9d500548000940089401d26133028500150021300635742a00426eb4d5d09aba25001135573ca00226ea80084d40cd2623232323333573466e1cd55cea801240004a0044a0089309bae357426aae7940044dd500109a81924c4424660020060044002444444444424666666666600201601401201000e00c00a00800600440024424660020060044002444246660020080060044002442466002006004400224244600400622440022400224424660020060042400224424660020060042400224424660020060042400224400424400240022424446006008224440042244400224002424444600800a424444600600a424444600400a424444600200a40024424660020060044002424444444600e01044244444446600c012010424444444600a010244444440082444444400644244444446600401201044244444446600201201040024244600400644424466600200a008006400242446004006424460020064002222244444646464646464646464646666ae68cdc39aab9d500948000940089402d2613333555501150015002500350041300d35742a00c260166ae8540104c024d5d0a801098039aba135744a00226ae8940044d5d1280089aab9e50011375400426a00c930930888911109199980080280200180108889000889280208910010910911980080200189000890009000889109198008018010890008891918008009119801980100100099919991119991119991119911991199911199119991119199119911999999991111111199991111991199119911991191919199119199999111119911919191919191919911919199119191919191999911119191991191919191919191919191919191919191919191919199119199119191900091111a981d8009129999a981f80090b10b10b10991919299a9833804099299a98341999aa981109000a8248009a9aa838280111000835099998068058050039a9aa8382801110010834910350998058048030a99a9a83598009a982680291111111110050b11099aa8388010009a80090008918009aa83d11299a9a8360008a8371109a983200111299a98359835000899a838800980300189803001911a9aaaa802001111119199aa980e89000a8009198081a98370009119838801283999837983c003283899aa980d8900091a98339a982f800910009110019a9825003111111111100509a80ba81011111a98040021111a9aaaa80400311111a9aa83700111191919191919191919191919191919299a983b999ab9a3370e020900003c83c0a99a983b998111a80fa80799983d998410098458080aa84200a800a8420089981119a982309000a807a40046660f66610402611602030a10802a014a1080220f02a66a60ee660446a03ea01e6660f6661040261160202aa10802a002a108022a66a60ee6604466a608c24002a01e900119983d998410098458080c284200a80528420089981119a982309000a807a40086660f66610402611602028a1080266a0fa66aa1000291010033507d335508001489005006507e507e50840110781078133507c5001507d1335507e489005001133507a5001507b1335507c489005001133702a004a002266608a01402066e0402d40204cdc0a800a803899b80009500115335306e0091333044353071010222002489004881001480004cd41cd400541d04cd541d522100500113350715001507213355073489005001133304000900800313355304012001235306c00122233307035307635306f0042220032233079002507b00200135304f00b222222222200911112222123333001005004003002111120011253353505e00113502c35302a3357389210250620002b49888400888848ccc00401000c0088004894cd4c15ccc00cd4c16800888800cd4c16800488800c54cd4c15cccc01c014d4c168008888008d4c1680048880084d4c1680088894cd4d419800484d4c1780148894cd4d41a800484cc048014004417c4d4c1740108894cd4d41a40048417c417c4160416088d4c18000888d4c18800c88c8cd4c1b40148cd4c1b801094cd4c174ccd5cd19b8f00200105f05e15003105e205e2335306e004205e25335305d333573466e3c00800417c1785400c417854cd4d419800c854cd4d419c00884cc024008004417054cd4d419800484170417088cd4c1900088cd4c1940088cc018008004888168888cd4c19c01081688894cd4c16cccd5cd19b8700600305d05c15335305b333573466e1c0140081741704cc0240100044170417088ccd5cd19b87002001056055223353065002233530660022330080020012056233530660022056233008002001222333004233353550180012330054800000488cc0180080048cc01400520000020012223233355300d120013501d501b23535505c0012233355301012001500423535505f00122300a0010013300500300213501c501a22335530081200123535505900122335505c002333535501700123355300c1200123535505d00122335506000235501e0010012233355500900800200123355300c1200123535505d00122335506000235501c00100133355500400300200122333573466e3c008004144140444888ccd54c044480054154cd54c01c480048d4d5416000488cd5416c008d54064004ccd54c0444800488d4d54164008894cd4c14cccd54c03448004d402140448d4d5417000488cc028008014018400c4cd416401000d4158004cd54c01c480048d4d5416000488c8c8cd54174010c004018d4004800448c004d541a0894cd4d41680044d54068010884d4d5417c008894cd4c164cc0340080244cd5407c0200044c01800c00848cd40bc88ccd401400c008004d400800448d4d402c0048800448d4d402800488008d4004800448c004d541748844894cd4d41440045414c884cd4150c010008cd54c01848004010004d4004800448c004d5416c88448c8894cd4d41440044d4020010884cd4014c010008ccd54c020480040180100044d401800448d4d409c0048800448d4d4098004880084cd400c00410c894cd4c10c0084114400448848cc00400c00848004d4004800448c004d5414c88448894cd4d41200044008884cc014008ccd54c01c480040140100044484888c00c01044884888cc0080140104484888c0040104480044cd40180040e8894cd4c0e4008400440e848cd406888ccd401400c008004d400800448d4d400c0048800448d4d40080048800848848cc00400c00848004d4004800448c004d54118884894cd4c0d4ccd5cd19b88001480000dc0d84d4020d4c018cd5ce24810250390000749854cd4d40e80084d4020d4c018cd5ce2481025061000074988854cd4c0dcccd5cd19b87003480000e40e040084cd4c01848004004cdc0801a400424002400224c44464a66a6060666ae68cdc3a800a400006406229000099802801a800899b833370400200690680791299a9816999ab9a3371200400205e05c20022004444646464600200c6a00240022460026aa0884466a6a06c0029000111a9aa81d80111299a981a999ab9a3371e00401406e06c260100022600c0064646460020066a00240022460026aa0884466a6a06c0029000111a9aa81d80111299a981a999ab9a3371e00401206e06c20022600c00644464a66a605a666ae68cdc4801a8008178170a8008801899b8300100335001200112300135503d2211225335350310011503322133503430040023355300612001004001221233001003002200121222230040052122223003005212222300200521222230010052001133500250045003122123300100300212001120011223355500300200111122230033002001222222222212333333333300100b00a0090080070060050040030022001122123300100300212001122123300100300212001122123300100300212001121222300300411222002112220011200121222222230070082212222222330060090082122222223005008122222220041222222200322122222223300200900822122222223300100900820012212330010030022001221233001003002200123530050012225335350110012100810061220021220012001222123330010040030022001112200212212233001004003120011122123300100300211200122123300100300220011212230020031122001120012122300200322212233300100500400320012122300200321223001003200111232300100122330033002002001332233300248811c815f778a2ba10aa0fdc4acf1436e701f78d6f717361d4164c95dcfb700481412080897a2221233300100400300220011049fd866820084581cae39902c1f8542c850d38755642b43379ef74e81ddd810551ef96a7e581c941b9a725c68aa7cc61392808a87f34ed8d14a193a7f3898410ca96fd8668200821a05f5e1001819d866820180ff0581840004d87a80821a008779281ace2fdb7ca20082825820bd2048b1375425d3ff4d42b464ee5b9d3f4a37b75fbaac3e836011acd4e3360558403708cfe417a52b84441f5243bf72a9688b09d05b78e1224264f12d4785a129b20482faed101b0727e5bcd2b1447c458053bdb1a2b7c815cdefa2f1b6c2ad6309825820b62a7193927f47ef703ba99a06add1ee2d4d94853a16dcd68ad0f5d9baa185305840663edb0e52b1f58a35141bf2587c7e1561c789d5ef40a86ac2b3cc2d74bab6ac221b23bb0f5cfbd085db6506b3c36c5acb743cb77c1b4d4ee5c42390125c4a0801818200581c4da965a049dfd15ed1ee19fba6e2974a0b79fc416dd1796a1f97f5e1a4008182582011d8ff26a37887dc74d9d447257fb785c6ea6070ee19d50f51ce1b32bce2c03b58402702f0e487acb8dd7cb40fde4d4474f1345aa565c2865fa253fa3856a6a02b7a4899e9f0a58583e8e7f0c57d618ccdfcb47baafdea65df6db04e526d1507c20e0381590fc1590fbe0100003233223232323322333222323233322232333222323332223322323322323332223232332233223232332232323332223322332233223322323232323232323232323232332232323232323232323322323232332232333322223232323232322232232325335305c33223530310012235303500222222222322235304400c23232325335306f333222533530723300300200110731074506e32353047001220023253353505a00113507649010350543800221002302e5002004107115335304a01313301b49101350033355029302f1200123535505e00122323355030335502d30331200123535506200122353550640012253353506f335503533550250490040062153353507033550363335550323039120012235355069002232233225335350770022130020011507800425335350763335502c0500040072153353080013304d0010031335503d5079300400215335308001330630010031335503d507933335502e0510053304900100300215078150773200135508601225335350680011506a2213535506e002225335308201330530020071003133506d33550710020013006003350720010022133026491023130003322333573466e200080041f41f8cc8cd54c0ec48004d40c00048004cd40c40952000335530321200123535506900122001001004133573892010231310007a133573892010231320007900233233553023120013503500135034001335038223355302c120012353550630012233550660023355302f12001235355066001223355069002333535502b0012330264800000488cc09c0080048cc09800520000013355302c1200123535506300122335506600233353550280012335530301200123535506700122335506a00235502f0010012233355502804a0020012335530301200123535506700122335506a00235502d001001333555023045002001505e33233553023120012253353506c3003002213350610010021001505f2353053001222533530763332001504100600313506f0021506e011320013333555028302f1200122353055002225335307333044002500b10031333355502c303312001235305a00122253353506e333550245042003001213333550265043004335530301200123535506700122335506a002333535502c0012001223535506b002223535506d0032233550703302c00400233553039120012353550700012233550730023335355035001200122330310020012001333555030052003001200133355502704900300100213333550255042003002001003001505b500113301b49101340033355029302f1200123530540012233043500a00250011533535058335530401200123320015051320013530460012235305100122253353506b0012321300100d3200135507f2253353506100113507d491022d310022135355067002225335307b3304c00200710011300600313507a49101370050011350744901013600221335530421200123320015053320013530480012235305300122253353506d0012321300100f32001355081012253353506300113507f491022d310022135355069002225335307d3304e00200710011300600313507c4910137005003133355301d12001225335306f335306a303e302d35304600222001207125335307033041001300401010721350764901013300133505a0020011001505900d3200135507622533535058001135074491022d31002213530470022253353072333200150710020071353063303000122335306f00223507b491022d310020011300600315335350520011306d4988854cd4d41500044008884c1c5263333573466e1d40112002203a23333573466e1d40152000203a23263530663357380b80ce0ca0c80c66666ae68cdc39aab9d5002480008cc0c4c8c8c8c8c8c8c8c8c8c8c8cccd5cd19b8735573aa01490001199999999981f99a828919191999ab9a3370e6aae7540092000233045304b35742a00460986ae84d5d1280111931a983a99ab9c06b076074073135573ca00226ea8004d5d0a80519a8288241aba1500935742a0106ae85401cd5d0a8031aba1500535742a00866a0a2eb8d5d0a80199a82899aa82b3ae200135742a0046ae84d5d1280111931a983899ab9c06707207006f135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135573ca00226ea8004d5d0a80119191999ab9a3370e6aae75400520022303a303e357426aae7940088c98d4c1a0cd5ce02f03483383309baa001357426ae8940088c98d4c194cd5ce02d833032031883289931a983219ab9c49010350543500065063135573ca00226ea80044d55ce9baa001223370000400244a66a60ac00220b0266ae7000815c4488c88c008004c8004d5417c894cd4d41040045413c884d4d5411c008894cd4c16ccc02000801c4d41500044c01800c448888c8cd54c03c480048d4d5411800488cd54124008ccd4d5402c0048004880048004ccd554018014008004c8cd40054109410c488cc008cd5411c014010004444888ccd54c0104800540fccd54c030480048d4d5410c00488cd54118008d5402c004ccd54c0104800488d4d54110008894cd4c160ccd54c06048004d4034cd403c894cd4c168008417040041648d4d5411c00488cc028008014018400c4cd410c01000d4100004cd54c030480048d4d5410c00488c8cd5411c00cc004014c8004d54184894cd4d410c0044d5402c00c884d4d54124008894cd4c174cc0300080204cd5404001c0044c01800c008c8004d5416888448894cd4d40fc0044008884cc014008ccd54c01c480040140100044484888c00c01044884888cc0080140104484888c00401044800448cd404888ccd4d401000c88008008004d4d40080048800448848cc00400c00848004c8004d541488844894cd4d40d8004540e0884cd40e4c010008cd54c018480040100044448888cccd54011403c00c0040084488cd54008c8cd403c88ccd4d401800c88008008004d4d401000488004cd401005012800448848cc00400c008480044488c0080048d4c08c00488800cc8004d5412c88c8c94cd4c114cc0a14009200213300c300433530081200150010033004335300d12001500100310031332233706004002a002900209999aa9801890009919a80511199a8040018008011a802800a8039119b800014800800520003200135504a221122253353502f00113500600322133350090053004002333553007120010050040011235350050012200112353500400122002320013550472212253353041333573466e2400920000430421502d153353502b0011502d22133502e002335300612001337020089001000899a801111180198010009000891091980080180109000990009aa821911299a9a81300108009109a980a801111a982180111299a9a8160038a99a9a8160038804110b1109a980d801111a982480111299a9824199ab9a33720010004094092266a0660186601e01601a2a66a6090666ae68cdc8804001024825099a819803198078070028a99a982419809003800899a81980619807805806899a81980319807807002990009aa82111091299a9a8130008a814110a99a981f19804002240002006266a600c240026600e00890010009119b8100200122333573466e240080040e80e4488cc00ccc01cc018008c018004cc894cd4d40c0008854cd4d40c400884cd4c0b80088cd4c0bc0088cc034008004888100888cd4c0c401081008894cd4c104ccd5cd19b87006003043042153353041333573466e1c01400810c1084cc0380100044108410840ec54cd4d40c0004840ec40ecc014008c014004894cd4c0d8008400440dc88ccd5cd19b8700200103703623530240012200123530230012200222335302d0022335302e00223300500200120352335302e002203523300500200122333573466e3c0080040cc0c8c8004d540e08844894cd4d407000454078884cd407cc010008cd54c018480040100048848cc00400c0088004888888888848cccccccccc00402c02802402001c01801401000c00880048848cc00400c0088004848c004008800448800848800480048c8c8cccd5cd19b8735573aa004900011981519191999ab9a3370e6aae75400520002375c6ae84d55cf280111931a981899ab9c02703203002f137540026ae854008dd69aba135744a004464c6a605c66ae700900bc0b40b04d55cf280089baa00123232323333573466e1cd55cea801a4000466600e602c6ae85400cccd5403dd719aa807bae75a6ae854008cd4071d71aba135744a004464c6a605c66ae700900bc0b40b04d5d1280089aab9e5001137540024442466600200800600440022464646666ae68cdc39aab9d5002480008cc88cc024008004dd71aba1500233500a232323333573466e1cd55cea80124000466446601e004002602c6ae854008ccd5403dd719aa809919299a981419805a800a40022a00226a05c921022d33001375a00266aa01eeb88c94cd4c0a0cc02d400520001500113502e491022d32001375a0026ae84d5d1280111931a981719ab9c02402f02d02c135573ca00226ea8004d5d09aba25002232635302a33573804005605205026aae7940044dd500091199ab9a33712004002040042442466002006004400244246600200600440022464460046eb0004c8004d5408c88cccd55cf80092804119a80398021aba1002300335744004048224464460046eac004c8004d5408c88c8cccd55cf80112804919a80419aa80618031aab9d5002300535573ca00460086ae8800c0944d5d0800889100109109119800802001890008891119191999ab9a3370e6aae754009200023355008300635742a004600a6ae84d5d1280111931a981099ab9c01702202001f135573ca00226ea8004448848cc00400c0084480048c8c8cccd5cd19b8735573aa004900011980318071aba1500233500a2323232323333573466e1d40052002233300e375a6ae854010dd69aba15003375a6ae84d5d1280191999ab9a3370ea004900011808180a9aba135573ca00c464c6a604666ae700640900880840804d55cea80189aba25001135573ca00226ea8004d5d09aba25002232635301c33573802403a03603426aae7940044dd5000910919800801801100090911801001911091199800802802001900089119191999ab9a3370ea002900011a80418029aba135573ca00646666ae68cdc3a801240044a010464c6a603066ae7003806405c0580544d55cea80089baa001121223002003112200112001232323333573466e1d4005200223006375c6ae84d55cf280191999ab9a3370ea0049000118041bae357426aae7940108c98d4c04ccd5ce00480a00900880809aab9d50011375400242446004006424460020064002921035054310012253353003333573466e3cd4c01800888008d4c018004880080140104ccd5cd19b873530060022200135300600122001005004100412200212200120012212330010030022001235002490101310012326353003335738002008004930900090008891918008009119801980100100081049fd8799f581c9e55464df77392636ae058d376c09a643419b0dad36abb5fc78977909fd8799fd8799fd8799f581c3f04ceee7a3946df7a61637afce974d47d88d690a7415900465a1809ffd8799fd8799fd8799f581c4df29d4e11ffa5117796482351256391dd491784f9b6369cc8e5aa1dffffffffa140d8799f00a1401a004630c0ffffd8799fd8799fd8799f581c70e60f3b5ea7153e0acc7a803e4401d44b8ed1bae1c7baaad1a62a72ffd8799fd8799fd8799f581c1e78aae7c90cc36d624f7b3bb6d86b52696dc84e490f343eba89005fffffffffa140d8799f00a1401a001c1380ffffd8799fd8799fd8799f581c9e55464df77392636ae058d376c09a643419b0dad36abb5fc7897790ffd8799fd8799fd8799f581cfef590d24b9ed4f2cedf3ecc5f14a73179fa4d37c5c7fd12e230e53bffffffffa140d8799f00a1401a05198ac0ffffffffff0581840000d87980821a001a6afa1a2adaa79da10081825820f5a6718866f8a8aed1ed468fa47b31d2c9815457d8f3e863684481bc827eb3e65840dcb815ebffddf088288136f6bf2b55b16f4c934b9d6980946871f24f9a9361d5920d438bf378f43247fcdd3c2be7ad132a75bb4317f504dbc6c254e6fbc22200a10081825820530284231eeff37a4a3b620f37a399b811fd50a9d0462f9405d2d7eca11e84b95840f0756d243327470f1d85ee8e2eeccbc80525ff4b8c950ff8af22135a6cd5e764e234dc9342e4a6fd379fee0c04c11af0dc53c79a563999a8d7d50f3dcdb71104a10081825820fcff5508896f3dbfaffa99bb9d93edfc4c5bd6657d94527e95f822aa4f21753e58406b0f6adb3faa38d81f7c562e08719faf4a0eb118b3c85334230f067afb290a37b384ce2adc776e30d9526ff525ed87752f68d8151d98974f2c29bb7cd97f4e0da10083825820a2449a3d6b778389031f37432200a201c240602a2c420e281ad144018f44ed2a5840f8d9966dc521fe6f614877cdc949cd90e297b8cd092c670dd30ed7cb9a90350ba0272f65110cdbe146dcfc2e7645af98493939356a4264fb2d41c36b9f0e7a05825820adec01c0edd9c2fe53a5f9453ec516dfa01176acb95d625231100c56e3c97ad958402ec4fc50c5ea08bf5ec061cc0956fb99fc052d61a4768e94bda4a3fa66ec2e09db69de581a4479dd24d428985ac51f39f4a85888bd082c1bf4aa44929433ed05825820bb5133c1e7cb9096e9deaab0d617999aeede7e57f738d935b74eeb2d211be651584054594464d238b4db47da30ae3317ff50d315b91e4e69f92d72d2e2cae418a853feff40395e09bee83e833db4a4b299d5048ecc25e06386b20baf721b8f71d409a1008182582015c796520938af1e36d3b9c5743b47048894be82009cda9c6a8352c128e91d0d5840e69d3332db0b62cb290d848ce0591ee37b313b9ed668dc46193ea0dbcad38775921d5ca0302aa2abacff9e29974d0e1576fb35d6e8d4387055f62a892f4f0101a702af007840643837393966353831633735326135343734396230346362393739366462333766616133643537326630623263613261633532303266303933306431613863650178406136396664383739396664383739396664383739396635383163376564396535343861383230396466323433373864306335333938303864303832363136623702784034323466356363316237613234376365356666666438373939666438373939666438373939663538316334626433643934316563396536616239343936623238037840626565303730663462326237646637303266366364356262376362333338353363646666666666666666613134306438373939663030613134303161303031650478403834383066666666643837393966643837393966643837393966353831633730653630663362356561373135336530616363376138303365343430316434346205784038656431626165316337626161616431613632613732666664383739396664383739396664383739396635383163316537386161653763393063633336643632067840346637623362623664383662353236393664633834653439306633343365626138393030356666666666666666666131343064383739396630306131343031610778403030313836613030666666666438373939666438373939666438373939663538316337353261353437343962303463623937393664623337666161336435373208784066306232636132616335323032663039333064316138636561366666643837393966643837393966643837393966353831633564643230343166356239323130097840353630346165623933346638363539396262663565363261353463326366303863353462356338616439666666666666666661313538316338633036623363360a7840313165633962633930333763373661396532636632373063376131343733343165366461666665646136313463646435643837393966303061313437343236660b743732363733343339333630316666666666666666181e6131183278403863303662336336313165633962633930333763373661396532636632373063376131343733343165366461666665646136313463646435343236663732363718336633343339333604d90103a100a11902a2a1636d7367836f4c616d696e61722052656c61796572784034613738393135386439613236643765333163323334633764363537616135646339303861363762353238356661363761333739623338363933383161363163613006a11902a2a1636d736781774d696e737761703a205769746864726177204f7264657209ac007840643837393966353831633933326535383438643564353538646632633362343034656464353362646662383833386164396561373065303637313139633136660178403833396664383739396664383739396664383739396635383163613538306165623739366466366237316131393032623535386636626463313936383634646502784065616664333261303038666332373563626266666438373939666438373939666438373939663538316332613135353533376238356361306463626335623665037840623264313132626162336666306665343136656339346334613339326231363135356666666666666666613134306438373939663030613134303161303032320478403535313066666666643837393966643837393966643837393966353831633730653630663362356561373135336530616363376138303365343430316434346205784038656431626165316337626161616431613632613732666664383739396664383739396664383739396635383163316537386161653763393063633336643632067840346637623362623664383662353236393664633834653439306633343365626138393030356666666666666666666131343064383739396630306131343031610778403030313665333630666666666438373939666438373939666438373939663538316339333265353834386435643535386466326333623430346564643533626408784066623838333861643965613730653036373131396331366638336666643837393966643837393966643837393966353831636265613738373334336530316631097840336563393433333364323330346162383264623766636634343632646634393035393364643231356339666666666666666661313430643837393966303061310a743430316130343366333035306666666666666666181e61310ba11902d1a178386630666634386262623762626539643539613430663163653930653965396430666635303032656334386632333262343963613066623961a169626562657265786861a6646e616d656a246265626572657868616b6465736372697074696f6e735468652048616e646c65205374616e6461726467776562736974657568747470733a2f2f61646168616e646c652e636f6d65696d6167657835697066733a2f2f516d567438434373327258463334704878627862557074536e76457361546774766146703376584855533553784564636f7265a5626f67006a7465726d736f66757365781968747470733a2f2f61646168616e646c652e636f6d2f746f756e68616e646c65456e636f64696e67657574662d386670726566697861246776657273696f6e006d6175676d656e746174696f6e73800cac007840643837393966353831633965353534363464663737333932363336616530353864333736633039613634333431396230646164333661626235666337383937370178403930396664383739396664383739396664383739396635383163336630346365656537613339343664663761363136333761666365393734643437643838643602784039306137343135393030343635613138303966666438373939666438373939666438373939663538316334646632396434653131666661353131373739363438037840323335313235363339316464343931373834663962363336396363386535616131646666666666666666613134306438373939663030613134303161303033360478406565383066666666643837393966643837393966643837393966353831633730653630663362356561373135336530616363376138303365343430316434346205784038656431626165316337626161616431613632613732666664383739396664383739396664383739396635383163316537386161653763393063633336643632067840346637623362623664383662353236393664633834653439306633343365626138393030356666666666666666666131343064383739396630306131343031610778403030313566393030666666666438373939666438373939666438373939663538316339653535343634646637373339323633366165303538643337366330396108784036343334313962306461643336616262356663373839373739306666643837393966643837393966643837393966353831636665663539306432346239656434097840663263656466336563633566313461373331373966613464333763356337666431326532333065353362666666666666666661313430643837393966303061310a743430316130336664626138306666666666666666181e61310da11902a2a1636d73678164544f4f5480 \ No newline at end of file diff --git a/eras/alonzo/test-suite/golden/mainnet-alonzo-genesis.json b/eras/alonzo/test-suite/golden/mainnet-alonzo-genesis.json deleted file mode 100644 index 95fe5d7b451..00000000000 --- a/eras/alonzo/test-suite/golden/mainnet-alonzo-genesis.json +++ /dev/null @@ -1,195 +0,0 @@ -{ - "lovelacePerUTxOWord": 34482, - "executionPrices": { - "prSteps": - { - "numerator" : 721, - "denominator" : 10000000 - }, - "prMem": - { - "numerator" : 577, - "denominator" : 10000 - } - }, - "maxTxExUnits": { - "exUnitsMem": 10000000, - "exUnitsSteps": 10000000000 - }, - "maxBlockExUnits": { - "exUnitsMem": 50000000, - "exUnitsSteps": 40000000000 - }, - "maxValueSize": 5000, - "collateralPercentage": 150, - "maxCollateralInputs": 3, - "costModels": { - "PlutusV1": { - "sha2_256-memory-arguments": 4, - "equalsString-cpu-arguments-constant": 1000, - "cekDelayCost-exBudgetMemory": 100, - "lessThanEqualsByteString-cpu-arguments-intercept": 103599, - "divideInteger-memory-arguments-minimum": 1, - "appendByteString-cpu-arguments-slope": 621, - "blake2b-cpu-arguments-slope": 29175, - "iData-cpu-arguments": 150000, - "encodeUtf8-cpu-arguments-slope": 1000, - "unBData-cpu-arguments": 150000, - "multiplyInteger-cpu-arguments-intercept": 61516, - "cekConstCost-exBudgetMemory": 100, - "nullList-cpu-arguments": 150000, - "equalsString-cpu-arguments-intercept": 150000, - "trace-cpu-arguments": 150000, - "mkNilData-memory-arguments": 32, - "lengthOfByteString-cpu-arguments": 150000, - "cekBuiltinCost-exBudgetCPU": 29773, - "bData-cpu-arguments": 150000, - "subtractInteger-cpu-arguments-slope": 0, - "unIData-cpu-arguments": 150000, - "consByteString-memory-arguments-intercept": 0, - "divideInteger-memory-arguments-slope": 1, - "divideInteger-cpu-arguments-model-arguments-slope": 118, - "listData-cpu-arguments": 150000, - "headList-cpu-arguments": 150000, - "chooseData-memory-arguments": 32, - "equalsInteger-cpu-arguments-intercept": 136542, - "sha3_256-cpu-arguments-slope": 82363, - "sliceByteString-cpu-arguments-slope": 5000, - "unMapData-cpu-arguments": 150000, - "lessThanInteger-cpu-arguments-intercept": 179690, - "mkCons-cpu-arguments": 150000, - "appendString-memory-arguments-intercept": 0, - "modInteger-cpu-arguments-model-arguments-slope": 118, - "ifThenElse-cpu-arguments": 1, - "mkNilPairData-cpu-arguments": 150000, - "lessThanEqualsInteger-cpu-arguments-intercept": 145276, - "addInteger-memory-arguments-slope": 1, - "chooseList-memory-arguments": 32, - "constrData-memory-arguments": 32, - "decodeUtf8-cpu-arguments-intercept": 150000, - "equalsData-memory-arguments": 1, - "subtractInteger-memory-arguments-slope": 1, - "appendByteString-memory-arguments-intercept": 0, - "lengthOfByteString-memory-arguments": 4, - "headList-memory-arguments": 32, - "listData-memory-arguments": 32, - "consByteString-cpu-arguments-intercept": 150000, - "unIData-memory-arguments": 32, - "remainderInteger-memory-arguments-minimum": 1, - "bData-memory-arguments": 32, - "lessThanByteString-cpu-arguments-slope": 248, - "encodeUtf8-memory-arguments-intercept": 0, - "cekStartupCost-exBudgetCPU": 100, - "multiplyInteger-memory-arguments-intercept": 0, - "unListData-memory-arguments": 32, - "remainderInteger-cpu-arguments-model-arguments-slope": 118, - "cekVarCost-exBudgetCPU": 29773, - "remainderInteger-memory-arguments-slope": 1, - "cekForceCost-exBudgetCPU": 29773, - "sha2_256-cpu-arguments-slope": 29175, - "equalsInteger-memory-arguments": 1, - "indexByteString-memory-arguments": 1, - "addInteger-memory-arguments-intercept": 1, - "chooseUnit-cpu-arguments": 150000, - "sndPair-cpu-arguments": 150000, - "cekLamCost-exBudgetCPU": 29773, - "fstPair-cpu-arguments": 150000, - "quotientInteger-memory-arguments-minimum": 1, - "decodeUtf8-cpu-arguments-slope": 1000, - "lessThanInteger-memory-arguments": 1, - "lessThanEqualsInteger-cpu-arguments-slope": 1366, - "fstPair-memory-arguments": 32, - "modInteger-memory-arguments-intercept": 0, - "unConstrData-cpu-arguments": 150000, - "lessThanEqualsInteger-memory-arguments": 1, - "chooseUnit-memory-arguments": 32, - "sndPair-memory-arguments": 32, - "addInteger-cpu-arguments-intercept": 197209, - "decodeUtf8-memory-arguments-slope": 8, - "equalsData-cpu-arguments-intercept": 150000, - "mapData-cpu-arguments": 150000, - "mkPairData-cpu-arguments": 150000, - "quotientInteger-cpu-arguments-constant": 148000, - "consByteString-memory-arguments-slope": 1, - "cekVarCost-exBudgetMemory": 100, - "indexByteString-cpu-arguments": 150000, - "unListData-cpu-arguments": 150000, - "equalsInteger-cpu-arguments-slope": 1326, - "cekStartupCost-exBudgetMemory": 100, - "subtractInteger-cpu-arguments-intercept": 197209, - "divideInteger-cpu-arguments-model-arguments-intercept": 425507, - "divideInteger-memory-arguments-intercept": 0, - "cekForceCost-exBudgetMemory": 100, - "blake2b-cpu-arguments-intercept": 2477736, - "remainderInteger-cpu-arguments-constant": 148000, - "tailList-cpu-arguments": 150000, - "encodeUtf8-cpu-arguments-intercept": 150000, - "equalsString-cpu-arguments-slope": 1000, - "lessThanByteString-memory-arguments": 1, - "multiplyInteger-cpu-arguments-slope": 11218, - "appendByteString-cpu-arguments-intercept": 396231, - "lessThanEqualsByteString-cpu-arguments-slope": 248, - "modInteger-memory-arguments-slope": 1, - "addInteger-cpu-arguments-slope": 0, - "equalsData-cpu-arguments-slope": 10000, - "decodeUtf8-memory-arguments-intercept": 0, - "chooseList-cpu-arguments": 150000, - "constrData-cpu-arguments": 150000, - "equalsByteString-memory-arguments": 1, - "cekApplyCost-exBudgetCPU": 29773, - "quotientInteger-memory-arguments-slope": 1, - "verifySignature-cpu-arguments-intercept": 3345831, - "unMapData-memory-arguments": 32, - "mkCons-memory-arguments": 32, - "sliceByteString-memory-arguments-slope": 1, - "sha3_256-memory-arguments": 4, - "ifThenElse-memory-arguments": 1, - "mkNilPairData-memory-arguments": 32, - "equalsByteString-cpu-arguments-slope": 247, - "appendString-cpu-arguments-intercept": 150000, - "quotientInteger-cpu-arguments-model-arguments-slope": 118, - "cekApplyCost-exBudgetMemory": 100, - "equalsString-memory-arguments": 1, - "multiplyInteger-memory-arguments-slope": 1, - "cekBuiltinCost-exBudgetMemory": 100, - "remainderInteger-memory-arguments-intercept": 0, - "sha2_256-cpu-arguments-intercept": 2477736, - "remainderInteger-cpu-arguments-model-arguments-intercept": 425507, - "lessThanEqualsByteString-memory-arguments": 1, - "tailList-memory-arguments": 32, - "mkNilData-cpu-arguments": 150000, - "chooseData-cpu-arguments": 150000, - "unBData-memory-arguments": 32, - "blake2b-memory-arguments": 4, - "iData-memory-arguments": 32, - "nullList-memory-arguments": 32, - "cekDelayCost-exBudgetCPU": 29773, - "subtractInteger-memory-arguments-intercept": 1, - "lessThanByteString-cpu-arguments-intercept": 103599, - "consByteString-cpu-arguments-slope": 1000, - "appendByteString-memory-arguments-slope": 1, - "trace-memory-arguments": 32, - "divideInteger-cpu-arguments-constant": 148000, - "cekConstCost-exBudgetCPU": 29773, - "encodeUtf8-memory-arguments-slope": 8, - "quotientInteger-cpu-arguments-model-arguments-intercept": 425507, - "mapData-memory-arguments": 32, - "appendString-cpu-arguments-slope": 1000, - "modInteger-cpu-arguments-constant": 148000, - "verifySignature-cpu-arguments-slope": 1, - "unConstrData-memory-arguments": 32, - "quotientInteger-memory-arguments-intercept": 0, - "equalsByteString-cpu-arguments-constant": 150000, - "sliceByteString-memory-arguments-intercept": 0, - "mkPairData-memory-arguments": 32, - "equalsByteString-cpu-arguments-intercept": 112536, - "appendString-memory-arguments-slope": 1, - "lessThanInteger-cpu-arguments-slope": 497, - "modInteger-cpu-arguments-model-arguments-intercept": 425507, - "modInteger-memory-arguments-minimum": 1, - "sha3_256-cpu-arguments-intercept": 0, - "verifySignature-memory-arguments": 1, - "cekLamCost-exBudgetMemory": 100, - "sliceByteString-cpu-arguments-intercept": 150000 - }, - "PlutusV2": [197209, 0, 1, 1, 396231, 621, 0, 1, 150000, 1000, 0, 1, 150000, 32, 2477736, 29175, 4, 29773, 100, 29773, 100, 29773, 100, 29773, 100, 29773, 100, 29773, 100, 100, 100, 29773, 100, 150000, 32, 150000, 32, 150000, 32, 150000, 1000, 0, 1, 150000, 32, 150000, 1000, 0, 8, 148000, 425507, 118, 0, 1, 1, 150000, 1000, 0, 8, 150000, 112536, 247, 1, 150000, 10000, 1, 136542, 1326, 1, 1000, 150000, 1000, 1, 150000, 32, 150000, 32, 150000, 32, 1, 1, 150000, 1, 150000, 4, 103599, 248, 1, 103599, 248, 1, 145276, 1366, 1, 179690, 497, 1, 150000, 32, 150000, 32, 150000, 32, 150000, 32, 150000, 32, 150000, 32, 148000, 425507, 118, 0, 1, 1, 61516, 11218, 0, 1, 150000, 32, 148000, 425507, 118, 0, 1, 1, 148000, 425507, 118, 0, 1, 1, 2477736, 29175, 4, 0, 82363, 4, 150000, 5000, 0, 1, 150000, 32, 197209, 0, 1, 1, 150000, 32, 150000, 32, 150000, 32, 150000, 32, 150000, 32, 150000, 32, 150000, 32, 3345831, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] } } diff --git a/eras/alonzo/test-suite/golden/translations.cbor b/eras/alonzo/test-suite/golden/translations.cbor deleted file mode 100644 index 26b75fd4f24a6761be13ba75d5a86292fcebf439..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2805008 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 z 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

Bu1q>(D{Mm>?5Zkm9*L-X)zV1sq?iiZKFT# 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/_a9RVa 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ʂpJ{@htB{X%svBc!{F75xj?w(1iP!yPXu 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

^_hEVe0_=P$~o@t zLgc;p#phh=^3(Ybh7ld~J@`?tEQ7-MkM5 zc_iUda(>8uspntiMtAZhr2@uxeN?6Wn_i<=^USyQyCkrhKm74NC$^(sXjm6K-)c#_ znN$3}<&HM8_xX0S_!Q#lvYA^?&)8_8ckU(fcGT{lxOLt?+3M4tH`B^oy(}HeN)^@j zs11j915o`y{8#SEqx&;OrvvJvpg(N=MzR<3tK;S|;X!6Z-q(e;nU|aD2ed*8e@+=J zNsEcX`sFyWGK@C6FM)k7YPi;`XH@imcBCM=jY9fKAKOXFxsoa%8LD}Si< ztq4kn{@Y+Br*(3isNd9)Qz2O)@kHL4BiUc?8y=J4{4^!H%$1!kVW`etg%0C=*L0Ad z$UE1rxQ9<><}I#eN!aRG$fM9Z7fW(@vS?qKja&wGf(DMuS9NDbMjfjQ?kIN%c1b=x zD-^i<8v|<(H|b;|EJ_<|uWA);rl+819ctjG;^1u`7~o+W<{0ZM*t=h!-K;T-IL2!!F1dZyve!p}d-vexzN9 zt07uZ!Sokw8gR0u2?2W6O3~g?UeN^ORmC7bYeT%gnP-TKqj~`OBcO(^h_J-!+efM@ zcq{80sChZy(LPaR8K|tSHUa?GniCc_QV>X)6$J8L1p?uWgg{oI*a~A7{ULyOjfFt$ zRUwd0MzA9R79|nx5$%h&4Uv^q^HmOy4lobXSB~}wv=1=fYpN)3YNtvF_EP#~IJmf> zSFl}}gMqx2hnKIJva-$Ub?3oVLt`z(q#=;jPzc013Ih4cM?Sf?m!}uumvP`iS{4=_ z`uet3_A=IyA^y6KF-m9y2b`_}Q87@S;2mtMOwbR|3ktBcmysptny4GQtJ!!4M<}T1 z{))vP7`Lpiy`!a%eTZ+Av44n%N2t59fwifZt%a>pSb!P9-6SZ8s304yZenGt5^3)r z>|sWv9jK4

5EFZ8>~201&xT#?!* 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�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�V&C^x6Cr8acxedYhj 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

Ja|M;^b~r?0svHu3;4i@81^EN6?+MH?wU&I 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 z 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 Ma%JRdvaYD$Q~j>*F5jtl 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

*!;HPDtqsk`WyqFrnv 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

5u9y}~eA(yyDe?;} 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

!mbL?)(7U*~6a_u>2+- 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⋘̸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®gEvj%{?WjR_0X?E+e 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 Gng0VXU1MYb diff --git a/eras/babbage/formal-spec/iohk.sty b/eras/babbage/formal-spec/iohk.sty deleted file mode 100644 index a604bf81698..00000000000 --- a/eras/babbage/formal-spec/iohk.sty +++ /dev/null @@ -1,47 +0,0 @@ -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{iohk}[2018/10/18] - -\RequirePackage{amssymb} -\RequirePackage{extarrows} -\RequirePackage{slashed} -\RequirePackage[tikz]{bclogo} -\RequirePackage{stmaryrd} -\RequirePackage{todonotes} - -\DeclareMathOperator{\dom}{dom} -\DeclareMathOperator{\range}{range} - -\newcommand{\powerset}[1]{\ensuremath{\mathbb{P}~#1}} -\newcommand{\restrictdom}{\ensuremath{\lhd}} -\newcommand{\subtractdom}{\ensuremath{\mathbin{\slashed{\restrictdom}}}} -\newcommand{\restrictrange}{\ensuremath{\rhd}} -\newcommand{\subtractrange}{\ensuremath{\mathbin{\slashed{\restrictrange}}}} -\newcommand{\union}{\ensuremath{\cup}} -\newcommand{\unionoverrideRight}{\ensuremath{\mathbin{\underrightarrow\cup}}} -\newcommand{\unionoverrideLeft}{\ensuremath{\mathbin{\underleftarrow\cup}}} -\newcommand{\unionoverridePlus}{\ensuremath{\mathbin{\cup_{+}}}} -\newcommand{\unionoverrideZero}{\ensuremath{\mathbin{\cup_{0}}}} -\newcommand{\uniondistinct}{\ensuremath{\uplus}} -\newcommand{\var}[1]{\ensuremath{\mathit{#1}}} -\newcommand{\fun}[1]{\ensuremath{\mathsf{#1}}} -\newcommand{\type}[1]{\ensuremath{\mathsf{#1}}} -\newcommand{\signed}[2]{\ensuremath{\llbracket #1 \rrbracket_{#2}}} -\newcommand{\size}[1]{\ensuremath{\left| #1 \right|}} -\newcommand{\trans}[2]{\ensuremath{\xlongrightarrow[\textsc{#1}]{#2}}} -\newcommand{\seqof}[1]{\ensuremath{#1^{*}}} -\newcommand{\nextdef}{\ensuremath{\\[1em]}} -\newcommand{\where}{\ensuremath{~ ~ \mathbf{where}~ ~ }} - -\newcommand{\varUpdate}[1]{\boldsymbol{\color{Violet}#1}} - -\newenvironment{question} - {\begin{bclogo}[logo=\bcquestion, couleur=orange!10, arrondi=0.2]{ QUESTION}} - {\end{bclogo}} -%\newenvironment{todo} -% {\begin{bclogo}[logo=\bcoutil, couleur=red!5, couleurBarre=red, arrondi=0.2]{ TODO}} -% {\end{bclogo}} -\newenvironment{note} - {\begin{bclogo}[logo=\bcattention, couleur=orange!10, arrondi=0.2]{ NOTE}} - {\end{bclogo}} - -\endinput diff --git a/eras/babbage/formal-spec/notation.tex b/eras/babbage/formal-spec/notation.tex deleted file mode 100644 index 022705bf951..00000000000 --- a/eras/babbage/formal-spec/notation.tex +++ /dev/null @@ -1,16 +0,0 @@ -\newcommand{\pto}{\to_{*}} - -\section{Notation} - -This specification features some changes to the notation used in previous specifications. - -\begin{description} -\item[Maps and partial functions] We use the notation $f : A \pto B$ - to denote a finitely supported partial function. If $B$ is a monoid, - $f$ is a function such that $f a = 0$ for all but finitely many - $a$. Otherwise it is a function $f : A \to B^?$ such that - $f a = \Nothing$ for all but finitely many $a$. -\item[Map operations] We use standard notation for restriction and - corestriction of functions to operate on partial functions as well. -\end{description} - diff --git a/eras/babbage/formal-spec/references.bib b/eras/babbage/formal-spec/references.bib deleted file mode 100644 index 1f2bf125a2b..00000000000 --- a/eras/babbage/formal-spec/references.bib +++ /dev/null @@ -1,135 +0,0 @@ -@misc{small_step_semantics, - label = {CdoSem}, - author = {{Formal Methods Team, IOHK}}, - title = {{Small Step Semantics for Cardano}}, - year = {2018}, - url = {https://github.com/input-output-hk/cardano-chain/blob/master/specs/semantics/latex/small-step-semantics.tex}, -} - - -@misc{delegation_design, - label = {cdoDel}, - author = {Philipp Kant and Lars Br\"unjes and Duncan Coutts}, - title = {{Design Specification for Delegation and Incentives in Cardano}}, - year = {2018}, - url = {https://github.com/intersectmbo/cardano-ledger/tree/master/eras/shelley/design-spec/shelley-delegation.tex}, -} - -@article{chimeric, - author = {Joachim Zahnentferner}, - title = {Chimeric Ledgers: Translating and Unifying UTXO-based and Account-based Cryptocurrencies}, - journal = {Cryptology ePrint Archive, Report 2018/262}, - year = {2018}, - url = {https://eprint.iacr.org/2018/262}, -} - -@article{utxo_scripts, - author = {Joachim Zahnentferner}, - title = {An Abstract Model of UTxO-based Cryptocurrencies with Scripts}, - journal = {Cryptology ePrint Archive, Report 2018/469}, - year = {2018}, - url = {https://eprint.iacr.org/2018/469}, -} - -@article{multi_currency, - author = {Joachim Zahnentferner}, - title = {Multi-Currency Ledgers}, - journal = {??}, - year = {2018}, -} - -@techreport{cardano_consensus, - title = {{The Cardano Consensus and Storage Layer}}, - author = {Edsko de Vries and Thomas Winant and Duncan Coutts}, - year = {2021}, - institution = {IOHK}, - url = {https://hydra.iohk.io/build/5265971/download/1/report.pdf} -} - -@misc{shelley_spec, - label = {CdoLedger}, - author = {{Formal Methods Team, IOHK}}, - title = {{A Formal Specification of the Cardano Ledger}}, - year = {2019}, - url = {https://github.com/intersectmbo/cardano-ledger/releases/latest/download/shelley-ledger.pdf} -} - -@misc{shelley_ma_spec, - label = {CdoLedger}, - author = {{Formal Methods Team, IOHK}}, - title = {{A Formal Specification of the Cardano Ledger with a Native Multi-Asset Implementation}}, - year = {2019}, - url = {https://github.com/intersectmbo/cardano-ledger/tree/master/eras/shelley-ma/formal-spec/mary-ledger.tex} -} - -@misc{alonzo_spec, - label = {CdoLedger}, - author = {{Formal Methods Team, IOHK}}, - title = {{A Formal Specification of the Cardano Ledger with Plutus Integration}}, - year = {2021}, - url = {https://github.com/intersectmbo/cardano-ledger/tree/master/eras/alonzo/formal-spec/alonzo-ledger.tex} -} - -@misc{ouroboros, - label = {CdoProt}, - author = {Aggelos Kiayias and Alexander Russell and Bernardo David and Roman Oliynykov}, - title = {Ouroboros: A Provably Secure Proof-of-Stake Blockchain Protocol}, - howpublished = {Cryptology ePrint Archive, Report 2016/889}, - year = {2016}, - note = {\url{http://eprint.iacr.org/2016/889}}, -} - -@inproceedings{chakravarty2020extended, - title={The extended UTXO model}, - author={Chakravarty, Manuel MT and Chapman, James and MacKenzie, Kenneth and Melkonian, Orestis and Jones, Michael Peyton and Wadler, Philip}, - booktitle={International Conference on Financial Cryptography and Data Security}, - pages={525--539}, - year={2020}, - organization={Springer}, - url={https://iohk.io/en/research/library/papers/the-extended-utxo-model/} -} - -@misc{formal_multicur, -label = {CdoFMCUR}, -author = {{Plutus Team, Ledger Team, IOHK}}, -title = {{A Formal Specification of a UTxO Ledger with Scripts and Multi-Currency}}, -year = {2019}, -url = {https://github.com/intersectmbo/cardano-ledger/blob/master/eras/shelley/formal-spec/scripts-multicurrency.tex} -} - -@misc{multi_sig, - label = {CdoMSIG}, - author = {{Formal Methods Team, IOHK}}, - title = {{A Formal Specification of a Multi-Signature Scheme using Scripts}}, - year = {2019}, - url = {https://github.com/intersectmbo/cardano-ledger/blob/master/eras/shelley/formal-spec/multi-sig.tex} -} - -@misc{non_int, - label = {CdoNonInt}, - author = {{Matthias Gudemann}}, - title = {{A Specification of the Non-Integral Calculations in the Ledger}}, - year = {2019}, - url = {https://github.com/intersectmbo/cardano-ledger/releases/latest/download/non-integer-calculations.pdf} -} - -@misc{plutustech, - author = {{Plutus Team}}, - title = {{The Plutus Platform: An IOHK technical report}}, - year = {2021}, - url = {https://hydra.iohk.io/build/7244348/download/1/plutus.pdf} -} - -@misc{plutuscore, - author = {{Plutus Team}}, - title = {{Formal Specification of the Plutus Core Language}}, - year = {2021}, - url = {https://hydra.iohk.io/build/7244320/download/1/plutus-core-specification.pdf} -} - -@misc{vrf-range-extension, - author = {Christian Badertscher and Peter Gaži and Iñigo Querejeta-Azurmendi and Alexander Russell}, - title = {On UC-Secure Range Extension and Batch Verification for ECVRF}, - year = {2022}, - url = {https://iohk.io/en/research/library/papers/on-uc-secure-range-extension-and-batch-verification-for-ecvrf} -} diff --git a/eras/babbage/formal-spec/remove-overlay.tex b/eras/babbage/formal-spec/remove-overlay.tex deleted file mode 100644 index 5f007ea2c17..00000000000 --- a/eras/babbage/formal-spec/remove-overlay.tex +++ /dev/null @@ -1,201 +0,0 @@ -\newcommand{\createRUpd}[4]{\fun{createRUpd}~\var{#1}~\var{#2}~\var{#3}~\var{#4}} -\newcommand{\mkApparentPerformance}[3]{\fun{mkApparentPerformance}~{#1}~\var{#2}~\var{#3}} -\newcommand{\Q}{\ensuremath{\mathbb{Q}}} -\newcommand{\ActiveSlotCoeff}{\mathsf{ActiveSlotCoeff}} -\newcommand{\EpochState}{\type{EpochState}} -\newcommand{\BlocksMade}{\type{BlocksMade}} -\newcommand{\RewardUpdate}{\type{RewardUpdate}} -\newcommand{\PrtclState}{\type{PrtclState}} -\newcommand{\PrtclEnv}{\type{PrtclEnv}} -\newcommand{\PoolDistr}{\type{PoolDistr}} -\newcommand{\BHBody}{\type{BHBody}} -\newcommand{\HashHeader}{\type{HashHeader}} -\newcommand{\HashBBody}{\type{HashBBody}} -\newcommand{\BlockNo}{\type{BlockNo}} -\newcommand{\Proof}{\type{Proof}} -\newcommand{\OCert}{\type{OCert}} -\newcommand{\bheader}[1]{\fun{bheader}~\var{#1}} -\newcommand{\verifyVrf}[4]{\fun{verifyVrf}_{#1} ~ #2 ~ #3 ~#4} -\newcommand{\slotToSeed}[1]{\fun{slotToSeed}~ \var{#1}} -\newcommand{\XOR}{\mathsf{XOR}} - -\section{Removal of the Overlay Schedule} - -The overlay schedule was only used during the early days of the Shelley ledger, and can be safely removed. First, the protocol parameter $\var{d}$ is removed, and any functions that use it are reduced to the case $\var{d} = 0$. The function $\fun{mkApparentPerformance}$ is reduced to one of its branches, and its first argument is dropped. It is only used in the definition of $\fun{rewardOnePool}$, which needs to be adjusted accordingly. - -Additionally, the block header body now contains a single VRF value to be used for both the leader check and the block nonce. - -\begin{figure}[htb] - \begin{align*} - & \fun{mkApparentPerformance} \in \unitInterval \to \N \to \N \to \Q \\ - & \mkApparentPerformance{\sigma}{n}{\overline{N}} = \frac{\beta}{\sigma} \\ - & ~~~\where \\ - & ~~~~~~~\beta = \frac{n}{\max(1, \overline{N})} \\ - \end{align*} - \caption{Function used in the Reward Calculation} - \label{fig:functions:rewards} -\end{figure} - -The function $\fun{createRUpd}$ is adjusted by simplifying $\eta$. - -\begin{figure}[htb] - \emph{Calculation to create a reward update} - % - \begin{align*} - & \fun{createRUpd} \in \N \to \BlocksMade \to \EpochState \to \Coin \to \RewardUpdate \\ - & \createRUpd{slotsPerEpoch}{b}{es}{total} = \left( - \Delta t_1,-~\Delta r_1+\Delta r_2,~\var{rs},~-\var{feeSS}\right) \\ - & ~~~\where \\ - & ~~~~~~~\dotsb \\ - & ~~~~~~~\eta = - \frac{blocksMade}{\floor{{slotsPerEpoch} \cdot \ActiveSlotCoeff}} \\ - & ~~~~~~~\dotsb - \end{align*} - - \caption{Reward Update Creation} - \label{fig:functions:reward-update-creation} -\end{figure} - -$\fun{incrBlocks}$ gets the same treatment as $\fun{mkApparentPerformance}$. Its invocation in $\mathsf{BBODY}$ needs to be adjusted as well. - -\begin{figure} - \begin{align*} - & \fun{incrBlocks} \in \KeyHash_{pool} \to - \BlocksMade \to \BlocksMade \\ - & \fun{incrBlocks}~\var{hk}~\var{b} = - \begin{cases} - b\cup\{\var{hk}\mapsto 1\} & \text{if }\var{hk}\notin\dom{b} \\ - b\unionoverrideRight\{\var{hk}\mapsto n+1\} & \text{if }\var{hk}\mapsto n\in b \\ - \end{cases} - \end{align*} -\end{figure} - -\newpage -Finally, the $\mathsf{PRTCL}$ STS needs to be adjusted. -To retire the $\mathsf{OVERLAY}$ STS, we inline the definition of its -'decentralized' case and drop all the unnecessary variables from its environment. -It is invoked in $\mathsf{CHAIN}$, which needs to be adjusted accordingly. - -As there is now only a single VRF check, slight modifications are needed for the -definition of the block header body \text{BHBody} type and the function \text{vrfChecks}. -The Shelley era accessor functions $\fun{bleader}$ and $\fun{bnonce}$ are replaced with new functions -which make use of the VRF range extension as described in \cite{vrf-range-extension}[4.1], -to re-use the single VRF value. - -\begin{figure*}[htb] - % - \emph{Block Header Body} - % - \begin{equation*} - \BHBody = - \left( - \begin{array}{r@{~\in~}lr} - \var{prev} & \HashHeader^? & \text{hash of previous block header}\\ - \var{vk} & \VKey & \text{block issuer}\\ - \var{vrfVk} & \VKey & \text{VRF verification key}\\ - \var{blockno} & \BlockNo & \text{block number}\\ - \var{slot} & \Slot & \text{block slot}\\ - \hldiff{\var{vrfRes}} & \hldiff{\Seed} & \hldiff{\text{VRF result value}}\\ - \var{prf} & \Proof & \text{vrf proof}\\ - \var{bsize} & \N & \text{size of the block body}\\ - \var{bhash} & \HashBBody & \text{block body hash}\\ - \var{oc} & \OCert & \text{operational certificate}\\ - \var{pv} & \ProtVer & \text{protocol version}\\ - \end{array} - \right) - \end{equation*} - % - \emph{New Accessor Function} - \begin{equation*} - \begin{array}{r@{~\in~}l} - \fun{bVrfRes} & \BHBody \to \Seed \\ - \fun{bVrfProof} & \BHBody \to \Proof \\ - \end{array} - \end{equation*} - % - \emph{New Helper Functions} - \begin{align*} - & \fun{bleader} \in \BHBody \to \Seed \\ - & \fun{bleader}~(\var{bhb}) = \fun{hash}~(``L"~|~(\fun{bVrfRes}~\var{bhb}))\\ - \\ - & \fun{bnonce} \in \BHBody \to \Seed \\ - & \fun{bnonce}~(\var{bhb}) = \fun{hash}~(``N"~|~(\fun{bVrfRes}~\var{bhb}))\\ - \\ - & \fun{vrfChecks} \in \Seed \to \BHBody \to \Bool \\ - & \fun{vrfChecks}~\eta_0~\var{bhb} = - \verifyVrf{\Seed}{\var{vrfK}}{(\slotToSeed{slot}~\XOR~\eta_0)}{(\var{value},~\var{proof}}) \\ - & ~~~~\where \\ - & ~~~~~~~~~~\var{slot} \leteq \bslot{bhb} \\ - & ~~~~~~~~~~\var{vrfK} \leteq \fun{bvkvrf}~\var{bhb} \\ - & ~~~~~~~~~~\var{value} \leteq \fun{bVrfRes}~\var{bhb} \\ - & ~~~~~~~~~~\var{proof} \leteq \fun{bVrfProof}~\var{bhb} \\ - \end{align*} - % - \caption{Block Definitions} - \label{fig:defs:blocks} -\end{figure*} - - -\begin{figure} - \emph{Protocol environments} - \begin{equation*} - \PrtclEnv = - \left( - \begin{array}{r@{~\in~}lr} - \var{pd} & \PoolDistr & \text{pool stake distribution} \\ - \eta_0 & \Seed & \text{epoch nonce} \\ - \end{array} - \right) - \end{equation*} - \caption{Protocol transition-system types} - \label{fig:ts-types:prtcl} -\end{figure} - -\begin{figure}[ht] - \begin{equation}\label{eq:prtcl} - \inference[PRTCL] - { - \var{bhb}\leteq\bheader{bh} & - \eta\leteq\fun{bnonce}~(\bhbody{bhb}) - \\~\\ - { - \eta - \vdash - {\left(\begin{array}{c} - \eta_v \\ - \eta_c \\ - \end{array}\right)} - \trans{\hyperref[fig:rules:update-nonce]{updn}}{\var{slot}} - {\left(\begin{array}{c} - \eta_v' \\ - \eta_c' \\ - \end{array}\right)} - }\\~\\ - { - \vdash\var{cs}\trans{\hyperref[fig:rules:ocert]{ocert}}{\var{bh}}\var{cs'} - } - \\~\\ - \fun{praosVrfChecks}~\eta_0~\var{pd}~\ActiveSlotCoeff~\var{bhb} - } - { - {\begin{array}{c} - \var{pd} \\ - \eta_0 \\ - \end{array}} - \vdash - {\left(\begin{array}{c} - \var{cs} \\ - \eta_v \\ - \eta_c \\ - \end{array}\right)} - \trans{prtcl}{\var{bh}} - {\left(\begin{array}{c} - \varUpdate{cs'} \\ - \varUpdate{\eta_v'} \\ - \varUpdate{\eta_c'} \\ - \end{array}\right)} - } - \end{equation} - \caption{Protocol rules} - \label{fig:rules:prtcl} -\end{figure} \ No newline at end of file diff --git a/eras/babbage/formal-spec/rewards.tex b/eras/babbage/formal-spec/rewards.tex deleted file mode 100644 index 3a7624122b0..00000000000 --- a/eras/babbage/formal-spec/rewards.tex +++ /dev/null @@ -1,29 +0,0 @@ -\newcommand{\Stake}{\type{Stake}} - -\section{Forgo Reward Calculation Prefilter} - -The reward calculation no longer filters out the unregistered stake -credentials when creating a reward update. As in the Shelley era, though, -they are still filtered on the epoch boundary when the reward update is applied. -This addresses errata 17.2 in the Shelley ledger specification \cite{shelley_spec}[17.2]. -The change consists of removing the line -$$\var{addrs_{rew}}\restrictdom{\var{potentialRewards}}$$ -from the last line of the $\fun{rewardOnePool}$ function. - -\begin{figure}[htb] - \emph{Calculation to reward a single stake pool} - % - \begin{align*} - & \fun{rewardOnePool} \in \PParams \to \Coin \to \N \to \N \to \PoolParam\\ - & ~~~\to \Stake \to \Q \to \Q \to \Coin \to (\AddrRWD \mapsto \Coin) \\ - & \fun{rewardOnePool}~\var{pp}~\var{R}~\var{n}~\var{\overline{N}}~\var{pool}~\var{stake}~{\sigma}~{\sigma_a}~\var{tot} = - \var{rewards}\\ - & ~~~\where \\ - & ~~~~~~~\ldots \\ - & ~~~~~~~\hldiff{\var{rewards}} = - \var{mRewards} \unionoverridePlus - \{(\fun{poolRAcnt}~\var{pool})\mapsto\var{lReward}\} \\ - \end{align*} - \caption{Reward Calculation Helper Function} - \label{fig:functions:reward-calc} -\end{figure} diff --git a/eras/babbage/formal-spec/transactions.tex b/eras/babbage/formal-spec/transactions.tex deleted file mode 100644 index 9416bba8fb0..00000000000 --- a/eras/babbage/formal-spec/transactions.tex +++ /dev/null @@ -1,74 +0,0 @@ -\section{Transactions} -\label{sec:transactions} -\begin{figure*}[htb] - \emph{Derived Types} - % - \begin{equation*} - \begin{array}{l@{\qquad=\qquad}lr} - \TxOut & \Addr \times \Value \times (\hldiff{\Datum} \uniondistinct \DataHash)^? \times \hldiff{\Script^?} - \end{array} - \end{equation*} - % - \emph{Transaction Types} - % - \begin{equation*} - \begin{array}{r@{~~}l@{~~}l@{\qquad}l} - \TxBody ~=~ - & \powerset{\TxIn} & \fun{spendInputs}& \text{Inputs}\\ - & \times ~\powerset{\TxIn} & \fun{collInputs} & \text{Collateral inputs}\\ - & \times ~\hldiff{\powerset{\TxIn}} & \hldiff{\fun{refInputs}} & \hldiff{\text{Reference inputs}}\\ - & \times ~(\Ix \pto \TxOut) & \fun{txouts}& \text{Outputs}\\ - & \times ~\hldiff{\TxOut^?} & \hldiff{\fun{collRet}} & \hldiff{\text{Collateral return output}}\\ - & \times ~\hldiff{\Coin^?} & \hldiff{\fun{txcoll}} & \hldiff{\text{Total collateral}}\\ - & \times~ \seqof{\DCert} & \fun{txcerts}& \text{Certificates}\\ - & \times ~\Value & \fun{mint} &\text{A minted value}\\ - & \times ~\Coin & \fun{txfee} &\text{Total fee}\\ - & \times ~\ValidityInterval & \fun{txvldt} & \text{Validity interval}\\ - & \times~ \Wdrl & \fun{txwdrls} &\text{Reward withdrawals}\\ - & \times ~\Update^? & \fun{txUpdates} & \text{Update proposals}\\ - & \times ~\powerset{\KeyHash} & \fun{reqSignerHashes} & \text{Hashes of VKeys passed to scripts}\\ - & \times ~\ScriptIntegrityHash^? & \fun{scriptIntegrityHash} & \text{Hash of script-related data}\\ - & \times ~\AuxiliaryDataHash^? & \fun{txADhash} & \text{Auxiliary data hash}\\ - & \times ~\Network^? & \fun{txnetworkid} & \text{Tx network ID}\\ - \end{array} - \end{equation*} - \caption{Definitions for transactions} - \label{fig:defs:utxo-shelley-2} -\end{figure*} - -We add a field $\fun{refInputs}$ to the transaction that specifies -\emph{reference inputs}. A reference input is not spent and does not -require any witnessing to be included in a valid transaction. The only -requirement is that is has to be present in the ledger state -UTxO. There are no restrictions on which outputs can be used as a -reference input. Reference inputs only affect the information that is -passed to scripts by them being included in $\TxInfo$. -For consistency, we've renamed the regular and collateral inputs to -$\fun{spendInputs}$ and $\fun{collInputs}$ respectively. - -We add two fields to the transaction dealing with -collateral. $\fun{collRet}$ specifies outputs that get created in case -a transaction script fails. $\fun{txcoll}$ asserts the total amount -of collateral that would get collected as fees. Specifying this field -does not change how collateral is computed, but transactions whose -collateral is different than the amount in $\fun{txcoll}$ will be -invalid. This lets users write transactions whose collateral is -evident by just looking at the transaction body instead of requiring -information contained in the UTXO, which hardware wallets for example -might not have access to. - -We also add support for supplying a $\Datum$ and a $\Script$ directly in a $\TxOut$ -instead of just its hash. The \emph{inline} $\Datum$ has two main purposes: -\begin{itemize} -\item In case of a sufficiently small $\Datum$, this is more efficient -\item Used together with reference inputs, this allows for many - transactions to use a $\Datum$ without repeating it every time, thus - reducing fees and block size -\end{itemize} -The \emph{inline} script is visible to Plutus scripts and the scripts -can be used together with reference inputs to not have to provide -scripts in the transaction itself. - -This change requires the size calculation of outputs to be adjusted, -to properly scale with the new additions. For simplicity and -future-proofing, we now use the serialized size. diff --git a/eras/babbage/formal-spec/txinfo.tex b/eras/babbage/formal-spec/txinfo.tex deleted file mode 100644 index 2c3f249717e..00000000000 --- a/eras/babbage/formal-spec/txinfo.tex +++ /dev/null @@ -1,42 +0,0 @@ -\section{TxInfo Construction} -\label{sec:txinfo} - -The context of $\PlutusVII$ needs to be adjusted to contain the new -features. Additionally, the redeemers are provided to the context, but -without the execution units budget. - -\begin{figure*}[htb] - \emph{Conversion Functions} - \begin{align*} - & \fun{toPlutusType}_{\Script} \in \Script \to \type{P.ScriptHash} \\ - & \fun{toPlutusType}_{\Script}~ s = \fun{hash}~s - \nextdef - & \fun{toPlutusType}_{\TxOut} \in \TxOut \to \type{P.TxOut} \\ - & \fun{toPlutusType}_{\TxOut}~ (a, v, d, s) = (a_P, v_P, d_P, s_P) - \end{align*} - \caption{TxInfo Constituent Type Translation Functions} - \label{fig:txinfo-translations} -\end{figure*} - -\begin{figure} - \emph{Ledger Functions} - % - \begin{align*} - &\fun{txInfo} : \Language \to \PParams \to \EpochInfo \to \SystemStart \to \UTxO \to \Tx \to \TxInfo \\ - &\fun{txInfo}~\PlutusVII~pp~ ei~ sysS~ utxo~tx = \\ - & ~~~~ (\{~(\var{txin}_P, \var{txout}_P) \mid \var{txin}\in\fun{spendInputs}~tx,~\var{txin}\mapsto\var{txout}\in\var{utxo}~\}, \\ - & ~~~~ \hldiff{\{~(\var{txin}_P, \var{txout}_P) \mid \var{txin}\in\fun{refInputs}~tx,~\var{txin}\mapsto\var{txout}\in\var{utxo}~\}}, \\ - & ~~~~ \{~\var{tout}_P\mid\var{tout}\in\fun{txouts}~{tx}~\} , \\ - & ~~~~ (\fun{inject}~(\fun{txfee}~{tx}))_P, \\ - & ~~~~ (\fun{mint}~{tx})_P , \\ - & ~~~~ [~ c_P \mid c \in \fun{txcerts}~{tx} ~] , \\ - & ~~~~ \{~(s_P,~c_P)\mid s\mapsto c \in \fun{txwdrls}~{tx}~\} , \\ - & ~~~~ \fun{transVITime} ~pp ~ei~ sysS~ (\fun{txvldt}~tx) , \\ - & ~~~~ \{~k_P\mid k \in \fun{reqSignerHashes}~{tx}~\} , \\ - & ~~~~ \hldiff{\{ (sp_P, d_P) \mid sp \mapsto (d, \_) \in \fun{indexedRdmrs}~tx \}}, \\ - & ~~~~ \{~(h_P,~d_P)\mid h\mapsto d \in \fun{txdats}~{tx}~\} , \\ - & ~~~~ (\fun{txid}~{tx})_P) - \end{align*} - \caption{Transaction Summarization Functions} - \label{fig:txinfo-funcs} -\end{figure} diff --git a/eras/babbage/formal-spec/utxo.tex b/eras/babbage/formal-spec/utxo.tex deleted file mode 100644 index 171bc62c0a1..00000000000 --- a/eras/babbage/formal-spec/utxo.tex +++ /dev/null @@ -1,368 +0,0 @@ -\section{UTxO} -\label{sec:utxo} - -Some of the functions related to scripts, datums and collateral need -to be adjusted for the new features. Most of these adjustments are -self-explanatory. Note that the new $\fun{collOuts}$ function -generates a single output with an index $| \txouts{txb} |$. This is to -avoid potential confusion for transactions spending that output. Note -that $\TxId$ can only hold integers up to $2^{16} - 1$. In case of an -overflow, we let this number be $2^{16} - 1$. - -\begin{figure*}[htb] - \emph{Functions} - % - \begin{align*} - & \fun{isTwoPhaseScriptAddress} : \Tx \to \hldiff{\UTxO} \to \Addr \to \Bool \\ - & \fun{isTwoPhaseScriptAddress}~tx~\hldiff{utxo}~a = \\ - &\quad\begin{cases} - \True & a \in \AddrScr \land \fun{validatorHash}~a \mapsto s \in \fun{txscripts}~tx~\hldiff{utxo} \land s \in \ScriptPhTwo \\ - \False & \text{otherwise} - \end{cases} - \nextdef - & \fun{collOuts} : \TxBody \to \UTxO \\ - & \fun{collOuts}~txb = - \begin{cases} - \emptyset & \fun{collRet}~txb = \Nothing \\ - \{ (\txid{txb}, | \txouts{txb} |) \mapsto \fun{collRet}~txb \} & \text{otherwise} - \end{cases} - \nextdef - & \fun{collBalance} : \TxBody \to \UTxO \to \Value \\ - & \fun{collBalance}~txb~utxo = \fun{ubalance}~(\var{utxo}|_{\fun{collInputs}~{txb}}) - \fun{ubalance}~(\fun{collOuts}~txb) - \nextdef - & \fun{feesOK} : \PParams \to \Tx \to \UTxO \to \Bool \\ - & \fun{feesOK}~\var{pp}~tx~utxo = \\ - &~~ \minfee{pp}{tx} \leq \txfee{tx} \wedge (\fun{txrdmrs}~tx \neq \Nothing \Rightarrow \\ - &~~~~~~~~~~\forall (a, \wcard, \wcard, \wcard) \in \fun{range}~(\fun{collInputs}~tx \restrictdom \var{utxo}), a \in \AddrVKey \\ - &~~~~~~\wedge \fun{adaOnly}~\var{balance} \\ - &~~~~~~\wedge \var{balance} \geq \hldiff{\txfee{txb} * \fun{collateralPercent}~pp / 100} \\ - &~~~~~~\wedge \hldiff{(\fun{txcoll}~tx \neq \Nothing) \Rightarrow \var{balance} = \fun{txcoll}~tx} \\ - &~~~~~~\wedge \fun{collInputs}~{tx} \neq \emptyset) \\ - &~~ \where \\ - & ~~~~~~~ \var{balance}=\hldiff{\fun{collBalance}~tx~utxo} - \end{align*} - \caption{Functions related to fees and collateral} - \label{fig:functions:utxo} -\end{figure*} - -\begin{figure*} - \begin{align*} - & \fun{getDatum} : \Tx \to \UTxO \to \ScriptPurpose \to \seqof{\Datum} \\ - & \fun{getDatum}~{tx}~{utxo}~{sp} = - \begin{cases} - [\var{d}] & \var{sp} \in \TxIn, (\_, \_, h, \_) \in \var{utxo}~\var{sp},~ \var{d}\in\fun{txdats}~(\fun{txwits}~tx)~\var{h} \\ - [\var{d}] & \hldiff{\var{sp} \in \TxIn, (\_, \_, d, \_) \in \var{utxo}~\var{sp},~ \var{d} \in \Datum} \\ - \epsilon & \text{otherwise} - \end{cases} - \nextdef - & \fun{refScripts} : \Tx \to \hldiff{\UTxO} \to \ScriptHash \pto \Script \\ - & \fun{refScripts}~tx~utxo = \{ \fun{hash}~s \mapsto s \mid (\_, \_, \_, s) \in \var{utxo}~(\fun{spendInputs}~tx \cup \fun{refInputs}~tx)\} - \nextdef - & \fun{txscripts} : \Tx \to \hldiff{\UTxO} \to \ScriptHash \pto \Script \\ - & \fun{txscripts}~tx~utxo = \fun{txwitscripts}~tx \cup \hldiff{\fun{refScripts}~tx~utxo} - \nextdef - & \fun{allOuts} : \Tx \to \powerset{\TxOut} \\ - & \fun{allOuts}~tx = \range \txouts{tx} \cup \fun{collRet}~tx - \nextdef - & \fun{languages} : \Tx \to \UTxO \to \powerset{\Language} \\ - & \fun{languages}~tx~utxo = - \{\fun{language}~s \mid s \in \range (\fun{txscripts}~tx~\hldiff{utxo}) \cap \ScriptPhTwo\} - \nextdef - & \fun{allowedLanguages} : \Tx \to \UTxO \to \powerset{\Language} \\ - & \fun{allowedLanguages}~tx~utxo = \\ - & \begin{cases} - \emptyset & \text{if}~\exists (a, \_, \_, \_) \in os, a \in \AddrBS \\ - \{ \PlutusVII \} & \text{if}~\exists (\_, \_, d, s) \in os, d \in \Datum \lor s \neq \Nothing \lor \fun{refInputs}~tx \neq \emptyset \\ - \{ \PlutusVI, \PlutusVII \} & \text{otherwise} - \end{cases} \\ - & \where \var{os} = \range \txouts{tx} \cup \var{utxo}~(\fun{spendInputs}~tx \cup \fun{refInputs}~tx) - \end{align*} - \caption{Functions related to scripts} - \label{fig:functions:data} -\end{figure*} - -\begin{figure}[htb] - \begin{equation} - \inference[Scripts-Yes] - { - \var{txb}\leteq\txbody{tx} & - \var{sLst} := \fun{collectTwoPhaseScriptInputs}~\var{pp}~\var{tx}~\var{utxo} - \\~\\ - { - \begin{array}{r} - \var{slot} \\ - \var{pp} \\ - \var{genDelegs} \\ - \end{array} - } - \vdash \var{pup} \trans{\hyperref[fig:rules:update]{ppup}}{\fun{txup}~\var{tx}} \var{pup'} - \\~\\ - \var{refunded} \leteq \keyRefunds{pp}{txb} - \\ - \var{depositChange} \leteq - \fun{totalDeposits}~{pp}~\var{poolParams}~(\txcerts{txb})~-~\var{refunded} - \\~\\ - \fun{isValid}~\var{tx} = \fun{evalScripts}~\var{tx}~\var{sLst} = \True - } - { - \begin{array}{l} - \var{slot}\\ - \var{pp}\\ - \var{poolParams}\\ - \var{genDelegs}\\ - \end{array} - \vdash - \left( - \begin{array}{r} - \var{utxo} \\ - \var{deposits} \\ - \var{fees} \\ - \var{pup} \\ - \end{array} - \right) - \trans{utxos}{tx} - \left( - \begin{array}{r} - \varUpdate{\var{(\fun{spendInputs}~txb \subtractdom \var{utxo}) \cup \outs{txb}}} \\ - \varUpdate{\var{deposits} + \var{depositChange}} \\ - \varUpdate{\var{fees} + \txfee{txb}} \\ - \varUpdate{\var{pup'}} \\ - \end{array} - \right) \\ - } - \end{equation} - \begin{equation} - \inference[Scripts-No] - { - \var{txb}\leteq\txbody{tx} & - \var{sLst} := \fun{collectTwoPhaseScriptInputs}~\var{pp}~\var{tx}~\var{utxo} \\ - \hldiff{\var{collateralFees} := \fun{valueToCoin}~(\fun{collBalance}~txb~utxo)} - \\ - ~ - \\ - \fun{isValid}~\var{tx} = \fun{evalScripts}~\var{tx}~\var{sLst} = \False - } - { - \begin{array}{l} - \var{slot}\\ - \var{pp}\\ - \var{poolParams}\\ - \var{genDelegs}\\ - \end{array} - \vdash - \left( - \begin{array}{r} - \var{utxo} \\ - \var{deposits} \\ - \var{fees} \\ - \var{pup} \\ - \end{array} - \right) - \trans{utxos}{tx} - \left( - \begin{array}{r} - \varUpdate{\var{(\fun{collInputs}~{txb} \subtractdom \var{utxo})} \cup \hldiff{\fun{collOuts}~txb}} \\ - \var{deposits} \\ - \varUpdate{\var{fees} + \hldiff{\var{collateralFees}}} \\ - \var{pup} \\ - \end{array} - \right) - } - \end{equation} - \caption{State update rules} - \label{fig:rules:utxo-state-upd} -\end{figure} - -In the UTXO rule, we switch from a manual estimation of the size consumed by $\UTxO$ entries to an estimation using the serialization. However, since the $\TxIn$ used as a key in the $\UTxO$ map is not part of the serialization, we need to account for it manually. By itself it is $40$ bytes, but we add another $120$ bytes of overhead for the in-memory representation of Haskell data. - -\begin{figure}[htb] - \begin{equation} - \inference[UTxO-inductive] - { - \var{txb}\leteq\txbody{tx} & - \fun{ininterval}~\var{slot}~(\fun{txvldt}~{txb}) & - \var{(\wcard, i_f)}\leteq\fun{txvldt}~{tx} \\~\\ - \Nothing \notin \{\fun{txrdmrs}~\var{tx}, i_f\} \Rightarrow \fun{epochInfoSlotToUTCTime}~\mathsf{EI}~\mathsf{SysSt}~i_f \neq \Nothing \\ - \fun{spendInputs}~txb \neq \emptyset - & \fun{feesOK}~pp~tx~utxo - \\ - \fun{spendInputs}~txb \cup \fun{collInputs}~txb \cup \hldiff{\fun{refInputs}~{tx}} \subseteq \dom \var{utxo} \\ - \consumed{pp}{utxo}{txb} = \produced{pp}{poolParams}~{txb} - \\~\\ - \mathsf{adaID}\notin \supp {\fun{mint}~tx} \\~\\ - \forall txout \in \hldiff{\fun{allOuts}~txb}, \\ - \fun{getValue}~txout \geq \fun{inject}~(\hldiff{(\fun{serSize}~txout + 160) * \fun{coinsPerUTxOByte}~pp}) \\~ - \\ - \forall txout \in \hldiff{\fun{allOuts}~txb},\\ - \fun{serSize}~(\fun{getValue}~txout) \leq \fun{maxValSize}~pp \\~ - \\ - \forall (\wcard\mapsto (a,~\wcard, \wcard, \wcard)) \in \hldiff{\fun{allOuts}~txb}, a \in \AddrBS \Rightarrow \fun{bootstrapAttrsSize}~a \leq 64 \\ - \forall (\wcard\mapsto (a,~\wcard, \wcard, \wcard)) \in \hldiff{\fun{allOuts}~txb}, \fun{netId}~a = \NetworkId - \\ - \forall (a\mapsto\wcard) \in \txwdrls{txb}, \fun{netId}~a = \NetworkId \\ - (\fun{txnetworkid}~\var{txb} = \NetworkId) \vee (\fun{txnetworkid}~\var{txb} = \Nothing) - \\~\\ - \fun{txsize}~{tx}\leq\fun{maxTxSize}~\var{pp} \\~\\ - \fun{totExunits}~{tx} \leq \fun{maxTxExUnits}~{pp} & \| \fun{collInputs}~{tx} \| \leq \fun{maxCollateralInputs}~{pp} - \\ - ~ - \\ - { - \begin{array}{c} - \var{slot}\\ - \var{pp}\\ - \var{poolParams}\\ - \var{genDelegs}\\ - \end{array} - } - \vdash - { - \left( - \begin{array}{r} - \var{utxo} \\ - \var{deposits} \\ - \var{fees} \\ - \var{pup}\\ - \end{array} - \right) - } - \trans{utxos}{\var{tx}} - { - \left( - \begin{array}{r} - \var{utxo'} \\ - \var{deposits'} \\ - \var{fees'} \\ - \var{pup'}\\ - \end{array} - \right) - } - } - { - \begin{array}{l} - \var{slot}\\ - \var{pp}\\ - \var{poolParams}\\ - \var{genDelegs}\\ - \end{array} - \vdash - \left( - \begin{array}{r} - \var{utxo} \\ - \var{deposits} \\ - \var{fees} \\ - \var{pup}\\ - \end{array} - \right) - \trans{utxo}{tx} - \left( - \begin{array}{r} - \varUpdate{\var{utxo'}} \\ - \varUpdate{\var{deposits'}} \\ - \varUpdate{\var{fees'}} \\ - \varUpdate{\var{pup'}}\\ - \end{array} - \right) - } - \end{equation} - \caption{UTxO inference rules} - \label{fig:rules:utxo-babbage} -\end{figure} - -To the UTXOW rule, in addition to the changes required by the new -features, we add a check that all scripts and datums involved in the -transaction are well-formed. We forbid transactions that try to -execute $\PlutusVI$ scripts and use the new features which can't be -translated to $\PlutusVI$'s $\TxInfo$ (reference inputs, inline datums -and reference scripts). We also forbid transactions that involve Byron -addresses. - -\begin{figure} - \begin{equation} - \label{eq:utxo-witness-inductive-babbage} - \inference[UTxO-witG] - { - \var{txb}\leteq\txbody{tx} & - \var{txw}\leteq\fun{txwits}~{tx} \\ - (utxo, \wcard, \wcard, \wcard) \leteq \var{utxoSt} \\ - \var{witsKeyHashes} \leteq \{\fun{hashKey}~\var{vk} \vert \var{vk} \in - \dom (\txwitsVKey{txw}) \}\\ - \var{inputHashes}\leteq \left\{ h \,\middle| - { - \begin{array}{l} - (a, \_, h, \_) \in \range(\var{utxo}|_{\fun{spendInputs}~tx}) \\ - \fun{isTwoPhaseScriptAddress}~tx~\hldiff{utxo}~a \\ - \end{array} - } - \right\} - \hldiff{\Datum} \\~\\ - \var{neededHashes}\leteq \{ h \mid (\_, h) \in \fun{scriptsNeeded}~\var{utxo}~txb\} \\ - \forall \var{s} \in (\fun{txscripts}~txw~\hldiff{utxo~\var{neededHashes}}) \cap \ScriptPhOne, - \fun{validateScript}~\var{s}~\var{tx}\\~\\ - \var{neededHashes} - \hldiff{\dom (\fun{refScripts}~tx~utxo)} = \dom (\fun{txwitscripts}~txw) \\~\\ - \var{inputHashes} \subseteq \dom (\fun{txdats}~{txw}) \\ - \dom (\fun{txdats}~{txw}) \subseteq \var{inputHashes} \cup {\{h \mid (\wcard, \wcard, h, \wcard)\in\fun{allOuts}~tx \cup \hldiff{\var{utxo}~(\fun{refInputs}~{tx})}\}} \\~\\ - \\~\\ - \dom (\fun{txrdmrs}~tx) = \left\{ \fun{rdptr}~txb~sp \,\middle| - { - \begin{array}{l} - (sp,h) \in \fun{scriptsNeeded}~\var{utxo}~txb \\ - \fun{txscripts}~{txw}~\hldiff{utxo}~h \in \ScriptPhTwo - \end{array} - } \right\} - \\~\\ - \var{txbodyHash}\leteq\fun{hash}~(\txbody{tx}) \\ - \forall \var{vk} \mapsto \sigma \in \txwitsVKey{tx}, - \mathcal{V}_{\var{vk}}{\serialised{txbodyHash}}_{\sigma} \\ - \fun{witsVKeyNeeded}~{utxo}~{tx}~{genDelegs} \subseteq witsKeyHashes - \\~\\ - genSig \leteq - \left\{ - \fun{hashKey}~gkey \vert gkey \in\dom{genDelegs} - \right\} - \cap - \var{witsKeyHashes} - \\ - \left\{ - c\in\txcerts{txb}~\cap\DCertMir - \right\} \neq\emptyset \implies \vert genSig\vert \geq \Quorum - \\~\\ - \var{adh}\leteq\fun{txADhash}~\var{txb} - & - \var{ad}\leteq\fun{auxiliaryData}~\var{tx} - \\ - (\var{adh}=\Nothing \land \var{ad}=\Nothing) - \lor - (\var{adh}=\fun{hashAD}~\var{ad}) - \\~\\ - \hldiff{\forall x \in \range (\fun{txdats}~txw) \cup \range (\fun{txwitscripts}~txw)} \\ - \hldiff{\cup \bigcup_{(\_, \_, d, s) \in \hldiff{\fun{allOuts}~txb}} \{s, d\} \cup \fun{scripts}~(\fun{auxiliaryData}~tx),} \\ - \hldiff{x \in \Script \cup \Datum \Rightarrow \fun{isWellFormed}~x} - \\~\\ - \fun{languages}~tx~\hldiff{utxo} \subseteq \dom(\fun{costmdls}~pp) \cap \fun{allowedLanguages}~tx~utxo \\ - \fun{scriptIntegrityHash}~{txb} = - \fun{hashScriptIntegrity}~\var{pp}~(\fun{languages}~{txw}~\hldiff{utxo})~(\fun{txrdmrs}~{txw})~(\fun{txdats}~{txw}) - \\~\\ - { - \begin{array}{r} - \var{slot}\\ - \var{pp}\\ - \var{poolParams}\\ - \var{genDelegs}\\ - \end{array} - } - \vdash \var{utxoSt} \trans{\hyperref[fig:rules:utxo-shelley]{utxo}}{tx} - \var{utxoSt'}\\ - } - { - \begin{array}{r} - \var{slot}\\ - \var{pp}\\ - \var{poolParams}\\ - \var{genDelegs}\\ - \end{array} - \vdash \var{utxoSt} \trans{utxow}{tx} \varUpdate{\var{utxoSt'}} - } - \end{equation} - \caption{UTxO with witnesses inference rules for Tx} - \label{fig:rules:utxow-babbage} -\end{figure} diff --git a/eras/babbage/impl/.ghcid b/eras/babbage/impl/.ghcid deleted file mode 100644 index 492fc411472..00000000000 --- a/eras/babbage/impl/.ghcid +++ /dev/null @@ -1 +0,0 @@ ---command="cabal repl --repl-options='-isrc -fwarn-unused-binds -fwarn-unused-imports -fno-code -fobject-code -g2 -fno-break-on-exception -fno-break-on-error -ferror-spans -j -Wno-unused-packages'" --clear --no-height-limit --reverse-errors --reload=../../../ --outputfile=/tmp/cardano-ledger-babbage-ghcid.txt \ No newline at end of file diff --git a/eras/babbage/impl/CHANGELOG.md b/eras/babbage/impl/CHANGELOG.md deleted file mode 100644 index d9ee2707817..00000000000 --- a/eras/babbage/impl/CHANGELOG.md +++ /dev/null @@ -1,152 +0,0 @@ -# Version history for `cardano-ledger-babbage` - -## 1.8.0.0 - -* Change the return type of `collAdaBalance` to `DeltaCoin` -* Change the type of the provided collateral field in `IncorrectTotalCollateralField` to `DeltaCoin` -* Change the type of `validateCollateralEqBalance` - -## 1.7.0.0 - -* Add type `EraRuleEvent` instances for the event type of: - * `UTXOS` - * `PPUP` - * `LEDGER` - * `TICK` -* Add instances for `InjectRuleFailure` and switch to using `injectFailure` -* Add `NFData` instance for `BabbageUtxoPredFailure`, `BabbageUtxowPredFailure` -* Add implementation for `getMinFeeTxUtxo` -* Add `getReferenceScriptsNonDistinct` -* Add the constructor `BabbageNonDisjointRefInputs` to `BabbageUtxoPredFailure` - * Utxo rule raises that `PredicateFailure` in Conway and future Eras when they are not disjoint. -* Modify `PParams` JSON instances to match `cardano-api` - -### `testlib` - -* Add `RuleListEra` instance for Babbage - -## 1.6.0.0 - -* Remove deprecated `getDatumBabbage`, `babbageTxScripts`, `refScripts` -* Add `ToJSON` for `BabbageContextError` -* `FromJSON` instance for `PParamsUPdate`: #3949 -* Fixed JSON serialization of `PParams` to include the `protocolVersion`: #3953 -* Stop exporting all of the internal `hkd*` functions and `PParamsHKD` from - `Cardano.Ledger.Babbage.Core`. -* Stop exporting `AllegraEraTxBody`, `AlonzoEraTxBody`,`AlonzoTxBody`, - `MaryEraTxBody`,`ShelleyEraTxBody`, `addrEitherBabbageTxOutL`, - `valueEitherBabbageTxOutL`, `dataHashBabbageTxOutL`, `dataBabbageTxOutL`, - `datumBabbageTxOutL`, `referenceScriptBabbageTxOutL`, `getDatumBabbageTxOut`, `Datum` - `mkBabbageTxBody`, `inputsBabbageTxBodyL`, `outputsBabbageTxBodyL`, `feeBabbageTxBodyL`, - `auxDataHashBabbageTxBodyL`, `mintedBabbageTxBodyF`, `mintValueBabbageTxBodyF`, - `withdrawalsBabbbageTxBodyL`, `notSupportedInThisEraL`, `updateBabbageTxBodyL`, - `certsBabbageTxBodyL`, `vldtBabbageTxBodyL`, `mintBabbageTxBodyL`, - `collateralInputsBabbageTxBodyL`, `reqSignerHashesBabbageTxBodyL`, - `scriptIntegrityHashBabbageTxBodyL`, `networkIdBabbageTxBodyL`, - `sizedOutputsBabbageTxBodyL`, `referenceInputsBabbageTxBodyL`, - `totalCollateralBabbageTxBodyL`, `collateralReturnBabbageTxBodyL`, - `sizedCollateralReturnBabbageTxBodyL` from `Cardano.Ledger.Babbage.TxBody` -* Remove `txInfoOutV1`, `txInfoOutV2`, `txInfoInV1` and `txInfoInV2`. -* Add `transTxOutV1`, `transTxOutV2`, `transTxInInfoV1`, `transTxInInfoV2` and `transTxRedeemers` -* Remove `babbageScriptPrefixTag` -* Moved `ToExpr` instances out of the main library and into the testlib. -* Change the type of `ppEMaxL` - -## 1.5.1.0 - -### `testlib` - -* Provide CDDL spec files with `readBabbageCddlFileNames` and `readBabbageCddlFiles` from - `Test.Cardano.Ledger.Babbage.Binary.Cddl` - -## 1.5.0.0 - -* Add `Generic` instance for: - * `BabbageUtxoPredFailure` - * `BabbageUtxowPredFailure` -* Add `ToExpr` instance for: - * `BabbageUtxoPredFailure` - * `BabbageUtxowPredFailure` - * `BabbageTxOut` -* Switch to using `AlonzoEraUTxO` in rules -* Deprecate `getDatumBabbage` in favor of `getBabbageSpendingDatum` -* Add `getBabbageSupplementalDataHashes` -* Remove unused `isTwoPhaseScriptAddress` -* Deprecate `babbageTxScripts` and `refScripts` - -### `testlib` - -* Add `Test.Cardano.Ledger.Babbage.ImpTest` -* Add `EraImpTest` instance for `BabbageEra` - -## 1.4.5.0 - -* Add `ToExpr` instance for: - * `BabbageTxBody` - * `BabbageTxOut` -* Add `Generic` instance for `BabbageTxBody` -* Add `BabbageTxUpgradeError` and `BabbageTxBodyUpgradeError` -* Add `EraTransition` instance. - -## 1.4.4.0 - -* Add `EqRaw` instance for `BabbageTxBody` - -## 1.4.3.0 - -* Deprecate `translateTxOut` -* Added `babbagePParamsHKDPairs` - -## 1.4.2.0 - -* Fix `mint` field Plutus translation bug. - -## 1.4.1.0 - -* Add implementation for `spendableInputsTxBodyL` - -## 1.4.0.0 - -* Added a protocol version constraint to: - * `STS (BabbageUTXOS era)` instance - * `STS (BabbageUTXOW era)` instance - * `utxosTransition` - * `babbageUtxowTransition` - -## 1.3.0.0 - -* Introduction of `TxCert` and `EraTxCert` -* Add `EraTxCert` and `ShelleyEraTxCert` instances to `BabbageEra` -* Add `EraPlutusContext 'PlutusV1` instance to `BabbageEra` -* Add `EraPlutusContext 'PlutusV2` instance to `BabbageEra` -* Fix an issue where `TotalDeposits` didn't appear on Babbage era - -## 1.2.1.0 - -* Fix `PParams BabbageEra` serialization. [#3440](https://github.com/intersectmbo/cardano-ledger/pull/3440) - -## 1.2.0.0 - -* Replace `DPState c` with `CertState era` -* Add `TranslateEra` instances for: - * `DState` - * `PState` - * `VState` -* Added support for Plutus V3 in the types and functions that use `Language`. - (Note that the Alonzo and Babbage ledger era rules do not allow V3 scripts, however.). - Addition of `babbageTxInfoV1` and `babbageTxInfoV2` - -## 1.1.0.0 - -* Add `ToJSON` instance for `BabbageTxOut`. -* Add `ToJSON` instance for `BabbagePParams Identity` and `BabbagePParams StrictMaybe` -* Removed validation function `validateOutputTooBigUTxO`, in favor of the same function - from `cardano-ledger-alonzo`. - -###`testlib` - -* Consolidate all `Arbitrary` instances from the test package to under a new `testlib`. #3285 - -## 1.0.0.0 - -* First properly versioned release. diff --git a/eras/babbage/impl/Setup.hs b/eras/babbage/impl/Setup.hs deleted file mode 100644 index e8ef27dbba9..00000000000 --- a/eras/babbage/impl/Setup.hs +++ /dev/null @@ -1,3 +0,0 @@ -import Distribution.Simple - -main = defaultMain diff --git a/eras/babbage/impl/cardano-ledger-babbage.cabal b/eras/babbage/impl/cardano-ledger-babbage.cabal deleted file mode 100644 index 97638302296..00000000000 --- a/eras/babbage/impl/cardano-ledger-babbage.cabal +++ /dev/null @@ -1,148 +0,0 @@ -cabal-version: 3.0 -name: cardano-ledger-babbage -version: 1.8.0.0 -license: Apache-2.0 -maintainer: operations@iohk.io -author: IOHK -bug-reports: https://github.com/intersectmbo/cardano-ledger/issues -synopsis: - Cardano ledger introducing refrence scripts and inline datums - -description: - This package builds upon the Alonzo ledger with support for reference scripts, - reference inputs and inline datums. - -category: Network -build-type: Simple -data-files: - cddl-files/babbage.cddl - cddl-files/crypto.cddl - cddl-files/extras.cddl - -extra-source-files: CHANGELOG.md - -source-repository head - type: git - location: https://github.com/intersectmbo/cardano-ledger - subdir: eras/babbage/impl - -library - exposed-modules: - Cardano.Ledger.Babbage - Cardano.Ledger.Babbage.Collateral - Cardano.Ledger.Babbage.Core - Cardano.Ledger.Babbage.PParams - Cardano.Ledger.Babbage.Rules - Cardano.Ledger.Babbage.Scripts - Cardano.Ledger.Babbage.Tx - Cardano.Ledger.Babbage.TxBody - Cardano.Ledger.Babbage.TxOut - Cardano.Ledger.Babbage.TxInfo - Cardano.Ledger.Babbage.TxWits - Cardano.Ledger.Babbage.Transition - Cardano.Ledger.Babbage.Translation - Cardano.Ledger.Babbage.UTxO - - hs-source-dirs: src - other-modules: - Cardano.Ledger.Babbage.Era - Cardano.Ledger.Babbage.TxAuxData - Cardano.Ledger.Babbage.TxCert - Cardano.Ledger.Babbage.Rules.Bbody - Cardano.Ledger.Babbage.Rules.Deleg - Cardano.Ledger.Babbage.Rules.Delegs - Cardano.Ledger.Babbage.Rules.Delpl - Cardano.Ledger.Babbage.Rules.Pool - Cardano.Ledger.Babbage.Rules.Ppup - Cardano.Ledger.Babbage.Rules.Ledger - Cardano.Ledger.Babbage.Rules.Ledgers - Cardano.Ledger.Babbage.Rules.Utxo - Cardano.Ledger.Babbage.Rules.Utxos - Cardano.Ledger.Babbage.Rules.Utxow - - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints - -Wunused-packages - - build-depends: - base >=4.14 && <5, - aeson >=2.2, - bytestring, - cardano-crypto-class, - cardano-data >=1.2, - cardano-ledger-allegra ^>=1.4, - cardano-ledger-alonzo ^>=1.8, - cardano-ledger-binary ^>=1.3, - cardano-ledger-core ^>=1.11, - cardano-ledger-mary ^>=1.5, - cardano-ledger-shelley ^>=1.10, - cardano-strict-containers, - containers, - deepseq, - microlens, - nothunks, - plutus-ledger-api ^>=1.25.0, - set-algebra, - small-steps >=1.1, - text, - transformers, - validation-selective - -library testlib - exposed-modules: - Test.Cardano.Ledger.Babbage.Arbitrary - Test.Cardano.Ledger.Babbage.Binary.Cddl - Test.Cardano.Ledger.Babbage.ImpTest - Test.Cardano.Ledger.Babbage.TreeDiff - - visibility: public - hs-source-dirs: testlib - other-modules: Paths_cardano_ledger_babbage - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints - -Wunused-packages - - build-depends: - base, - bytestring, - cardano-ledger-allegra:testlib, - cardano-ledger-alonzo:{cardano-ledger-alonzo, testlib}, - cardano-ledger-shelley:{cardano-ledger-shelley, testlib}, - cardano-crypto-class, - cardano-ledger-babbage, - cardano-ledger-binary, - cardano-ledger-core:{cardano-ledger-core, testlib}, - generic-random, - small-steps >=1.1, - QuickCheck - -test-suite tests - type: exitcode-stdio-1.0 - main-is: Main.hs - hs-source-dirs: test - other-modules: - Test.Cardano.Ledger.Babbage.BinarySpec - Test.Cardano.Ledger.Babbage.Binary.CddlSpec - - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wpartial-fields - -Wunused-packages -threaded -rtsopts -with-rtsopts=-N - - build-depends: - base, - cardano-ledger-alonzo, - cardano-ledger-allegra, - cardano-ledger-babbage, - cardano-ledger-core, - cardano-ledger-binary:testlib, - cardano-ledger-shelley:testlib, - cardano-ledger-core:testlib, - cardano-ledger-alonzo:testlib, - data-default-class, - testlib diff --git a/eras/babbage/impl/cddl-files/babbage.cddl b/eras/babbage/impl/cddl-files/babbage.cddl deleted file mode 100644 index c91c4d5c029..00000000000 --- a/eras/babbage/impl/cddl-files/babbage.cddl +++ /dev/null @@ -1,441 +0,0 @@ -block = - [ header - , transaction_bodies : [* transaction_body] - , transaction_witness_sets : [* transaction_witness_set] - , auxiliary_data_set : {* transaction_index => auxiliary_data } - , invalid_transactions : [* transaction_index ] - ]; Valid blocks must also satisfy the following two constraints: - ; 1) the length of transaction_bodies and transaction_witness_sets - ; must be the same - ; 2) every transaction_index must be strictly smaller than the - ; length of transaction_bodies - -transaction = - [ transaction_body - , transaction_witness_set - , bool - , auxiliary_data / null - ] - -transaction_index = uint .size 2 - -header = - [ header_body - , body_signature : $kes_signature - ] - -header_body = - [ block_number : uint - , slot : uint - , prev_hash : $hash32 / null - , issuer_vkey : $vkey - , vrf_vkey : $vrf_vkey - , vrf_result : $vrf_cert ; New, replaces nonce_vrf and leader_vrf - , block_body_size : uint - , block_body_hash : $hash32 ; merkle triple root - , operational_cert - , protocol_version - ] - -operational_cert = - [ hot_vkey : $kes_vkey - , sequence_number : uint - , kes_period : uint - , sigma : $signature - ] - -next_major_protocol_version = 9 - -major_protocol_version = 1..next_major_protocol_version - -protocol_version = [(major_protocol_version, uint)] - -transaction_body = - { 0 : set ; inputs - , 1 : [* transaction_output] - , 2 : coin ; fee - , ? 3 : uint ; time to live - , ? 4 : [* certificate] - , ? 5 : withdrawals - , ? 6 : update - , ? 7 : auxiliary_data_hash - , ? 8 : uint ; validity interval start - , ? 9 : mint - , ? 11 : script_data_hash - , ? 13 : set ; collateral inputs - , ? 14 : required_signers - , ? 15 : network_id - , ? 16 : transaction_output ; collateral return; New - , ? 17 : coin ; total collateral; New - , ? 18 : set ; reference inputs; New - } - -required_signers = set - -transaction_input = [ transaction_id : $hash32 - , index : uint - ] - -; Both of the Alonzo and Babbage style TxOut formats are equally valid -; and can be used interchangeably -transaction_output = pre_babbage_transaction_output / post_alonzo_transaction_output ; New - -pre_babbage_transaction_output = - [ address - , amount : value - , ? datum_hash : $hash32 - ] - -post_alonzo_transaction_output = - { 0 : address - , 1 : value - , ? 2 : datum_option ; New; datum option - , ? 3 : script_ref ; New; script reference - } - -script_data_hash = $hash32 -; This is a hash of data which may affect evaluation of a script. -; This data consists of: -; - The redeemers from the transaction_witness_set (the value of field 5). -; - The datums from the transaction_witness_set (the value of field 4). -; - The value in the costmdls map corresponding to the script's language -; (in field 18 of protocol_param_update.) -; (In the future it may contain additional protocol parameters.) -; -; Since this data does not exist in contiguous form inside a transaction, it needs -; to be independently constructed by each recipient. -; -; The bytestring which is hashed is the concatenation of three things: -; redeemers || datums || language views -; The redeemers are exactly the data present in the transaction witness set. -; Similarly for the datums, if present. If no datums are provided, the middle -; field is omitted (i.e. it is the empty/null bytestring). -; -; language views CDDL: -; { * language => script_integrity_data } -; -; This must be encoded canonically, using the same scheme as in -; RFC7049 section 3.9: -; - Maps, strings, and bytestrings must use a definite-length encoding -; - Integers must be as small as possible. -; - The expressions for map length, string length, and bytestring length -; must be as short as possible. -; - The keys in the map must be sorted as follows: -; - If two keys have different lengths, the shorter one sorts earlier. -; - If two keys have the same length, the one with the lower value -; in (byte-wise) lexical order sorts earlier. -; -; For PlutusV1 (language id 0), the language view is the following: -; - the value of costmdls map at key 0 (in other words, the script_integrity_data) -; is encoded as an indefinite length list and the result is encoded as a bytestring. -; (our apologies) -; For example, the script_integrity_data corresponding to the all zero costmodel for V1 -; would be encoded as (in hex): -; 58a89f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ff -; - the language ID tag is also encoded twice. first as a uint then as -; a bytestring. (our apologies) -; Concretely, this means that the language version for V1 is encoded as -; 4100 in hex. -; For PlutusV2 (language id 1), the language view is the following: -; - the value of costmdls map at key 1 is encoded as an definite length list. -; For example, the script_integrity_data corresponding to the all zero costmodel for V2 -; would be encoded as (in hex): -; 98af0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -; - the language ID tag is encoded as expected. -; Concretely, this means that the language version for V2 is encoded as -; 01 in hex. -; -; Note that each Plutus language represented inside a transaction must have -; a cost model in the costmdls protocol parameter in order to execute, -; regardless of what the script integrity data is. -; -; Finally, note that in the case that a transaction includes datums but does not -; include the redeemers field, the script data format becomes (in hex): -; [ 80 | datums | A0 ] -; corresponding to a CBOR empty list and an empty map. -; Note that a transaction might include the redeemers field and set it to the -; empty map, in which case the user supplied encoding of the empty map is used. - -; address = bytes -; reward_account = bytes - -; address format: -; [ 8 bit header | payload ]; -; -; shelley payment addresses: -; bit 7: 0 -; bit 6: base/other -; bit 5: pointer/enterprise [for base: stake cred is keyhash/scripthash] -; bit 4: payment cred is keyhash/scripthash -; bits 3-0: network id -; -; reward addresses: -; bits 7-5: 111 -; bit 4: credential is keyhash/scripthash -; bits 3-0: network id -; -; byron addresses: -; bits 7-4: 1000 - -; 0000: base address: keyhash28,keyhash28 -; 0001: base address: scripthash28,keyhash28 -; 0010: base address: keyhash28,scripthash28 -; 0011: base address: scripthash28,scripthash28 -; 0100: pointer address: keyhash28, 3 variable length uint -; 0101: pointer address: scripthash28, 3 variable length uint -; 0110: enterprise address: keyhash28 -; 0111: enterprise address: scripthash28 -; 1000: byron address -; 1110: reward account: keyhash28 -; 1111: reward account: scripthash28 -; 1001 - 1101: future formats - -certificate = - [ stake_registration - // stake_deregistration - // stake_delegation - // pool_registration - // pool_retirement - // genesis_key_delegation - // move_instantaneous_rewards_cert - ] - -stake_registration = (0, stake_credential) -stake_deregistration = (1, stake_credential) -stake_delegation = (2, stake_credential, pool_keyhash) -pool_registration = (3, pool_params) -pool_retirement = (4, pool_keyhash, epoch) -genesis_key_delegation = (5, genesishash, genesis_delegate_hash, vrf_keyhash) -move_instantaneous_rewards_cert = (6, move_instantaneous_reward) - -move_instantaneous_reward = [ 0 / 1, { * stake_credential => delta_coin } / coin ] -; The first field determines where the funds are drawn from. -; 0 denotes the reserves, 1 denotes the treasury. -; If the second field is a map, funds are moved to stake credentials, -; otherwise the funds are given to the other accounting pot. - -delta_coin = int - -stake_credential = - [ 0, addr_keyhash - // 1, scripthash - ] - -pool_params = ( operator: pool_keyhash - , vrf_keyhash: vrf_keyhash - , pledge: coin - , cost: coin - , margin: unit_interval - , reward_account: reward_account - , pool_owners: set - , relays: [* relay] - , pool_metadata: pool_metadata / null - ) - -port = uint .le 65535 -ipv4 = bytes .size 4 -ipv6 = bytes .size 16 -dns_name = tstr .size (0..64) - -single_host_addr = ( 0 - , port / null - , ipv4 / null - , ipv6 / null - ) -single_host_name = ( 1 - , port / null - , dns_name ; An A or AAAA DNS record - ) -multi_host_name = ( 2 - , dns_name ; A SRV DNS record - ) -relay = - [ single_host_addr - // single_host_name - // multi_host_name - ] - -pool_metadata = [url, pool_metadata_hash] -url = tstr .size (0..64) - -withdrawals = { * reward_account => coin } - -update = [ proposed_protocol_parameter_updates - , epoch - ] - -proposed_protocol_parameter_updates = - { * genesishash => protocol_param_update } - -protocol_param_update = - { ? 0: uint ; minfee A - , ? 1: uint ; minfee B - , ? 2: uint ; max block body size - , ? 3: uint ; max transaction size - , ? 4: uint ; max block header size - , ? 5: coin ; key deposit - , ? 6: coin ; pool deposit - , ? 7: epoch ; maximum epoch - , ? 8: uint ; n_opt: desired number of stake pools - , ? 9: nonnegative_interval ; pool pledge influence - , ? 10: unit_interval ; expansion rate - , ? 11: unit_interval ; treasury growth rate - , ? 14: protocol_version ; protocol version - , ? 16: coin ; min pool cost - , ? 17: coin ; ada per utxo byte - , ? 18: costmdls ; cost models for script languages - , ? 19: ex_unit_prices ; execution costs - , ? 20: ex_units ; max tx ex units - , ? 21: ex_units ; max block ex units - , ? 22: uint ; max value size - , ? 23: uint ; collateral percentage - , ? 24: uint ; max collateral inputs - } - -transaction_witness_set = - { ? 0: [* vkeywitness ] - , ? 1: [* native_script ] - , ? 2: [* bootstrap_witness ] - , ? 3: [* plutus_v1_script ] - , ? 4: [* plutus_data ] - , ? 5: [* redeemer ] - , ? 6: [* plutus_v2_script ] ; New - } - -plutus_v1_script = bytes -plutus_v2_script = bytes - -plutus_data = - constr - / { * plutus_data => plutus_data } - / [ * plutus_data ] - / big_int - / bounded_bytes - -big_int = int / big_uint / big_nint -big_uint = #6.2(bounded_bytes) -big_nint = #6.3(bounded_bytes) - -constr = - #6.121([* a]) - / #6.122([* a]) - / #6.123([* a]) - / #6.124([* a]) - / #6.125([* a]) - / #6.126([* a]) - / #6.127([* a]) - ; similarly for tag range: 6.1280 .. 6.1400 inclusive - / #6.102([uint, [* a]]) - -redeemer = [ tag: redeemer_tag, index: uint, data: plutus_data, ex_units: ex_units ] -redeemer_tag = - 0 ; inputTag "Spend" - / 1 ; mintTag "Mint" - / 2 ; certTag "Cert" - / 3 ; wdrlTag "Reward" -ex_units = [mem: uint, steps: uint] - -ex_unit_prices = - [ mem_price: sub_coin, step_price: sub_coin ] - -language = 0 ; Plutus v1 - / 1 ; Plutus v2 - -costmdls = - { ? 0 : [ 166*166 int ] ; Plutus v1 - , ? 1 : [ 175*175 int ] ; Plutus v2 - } - -transaction_metadatum = - { * transaction_metadatum => transaction_metadatum } - / [ * transaction_metadatum ] - / int - / bytes .size (0..64) - / text .size (0..64) - -transaction_metadatum_label = uint -metadata = { * transaction_metadatum_label => transaction_metadatum } - -auxiliary_data = - metadata ; Shelley - / [ transaction_metadata: metadata ; Shelley-ma - , auxiliary_scripts: [ * native_script ] - ] - / #6.259({ ? 0 => metadata ; Alonzo and beyond - , ? 1 => [ * native_script ] - , ? 2 => [ * plutus_v1_script ] - , ? 3 => [ * plutus_v2_script ] - }) - -vkeywitness = [ $vkey, $signature ] - -bootstrap_witness = - [ public_key : $vkey - , signature : $signature - , chain_code : bytes .size 32 - , attributes : bytes - ] - -native_script = - [ script_pubkey - // script_all - // script_any - // script_n_of_k - // invalid_before - ; Timelock validity intervals are half-open intervals [a, b). - ; This field specifies the left (included) endpoint a. - // invalid_hereafter - ; Timelock validity intervals are half-open intervals [a, b). - ; This field specifies the right (excluded) endpoint b. - ] - -script_pubkey = (0, addr_keyhash) -script_all = (1, [ * native_script ]) -script_any = (2, [ * native_script ]) -script_n_of_k = (3, n: uint, [ * native_script ]) -invalid_before = (4, uint) -invalid_hereafter = (5, uint) - -coin = uint - -sub_coin = positive_interval - -multiasset = { * policy_id => { * asset_name => a } } -policy_id = scripthash -asset_name = bytes .size (0..32) - -value = coin / [coin,multiasset] -mint = multiasset - -int64 = -9223372036854775808 .. 9223372036854775807 - -network_id = 0 / 1 - -epoch = uint - -addr_keyhash = $hash28 -genesis_delegate_hash = $hash28 -pool_keyhash = $hash28 -genesishash = $hash28 - -vrf_keyhash = $hash32 -auxiliary_data_hash = $hash32 -pool_metadata_hash = $hash32 - -; To compute a script hash, note that you must prepend -; a tag to the bytes of the script before hashing. -; The tag is determined by the language. -; The tags in the Babbage era are: -; "\x00" for multisig scripts -; "\x01" for Plutus V1 scripts -; "\x02" for Plutus V2 scripts -scripthash = $hash28 - -datum_hash = $hash32 -data = #6.24(bytes .cbor plutus_data) - -datum_option = [ 0, $hash32 // 1, data ] - -script_ref = #6.24(bytes .cbor script) - -script = [ 0, native_script // 1, plutus_v1_script // 2, plutus_v2_script ] diff --git a/eras/babbage/impl/cddl-files/crypto.cddl b/eras/babbage/impl/cddl-files/crypto.cddl deleted file mode 100644 index 339444964d2..00000000000 --- a/eras/babbage/impl/cddl-files/crypto.cddl +++ /dev/null @@ -1,13 +0,0 @@ -$hash28 /= bytes .size 28 -$hash32 /= bytes .size 32 - -$vkey /= bytes .size 32 - -$vrf_vkey /= bytes .size 32 -$vrf_cert /= [bytes, bytes .size 80] - -$kes_vkey /= bytes .size 32 -$kes_signature /= bytes .size 448 -signkeyKES = bytes .size 64 - -$signature /= bytes .size 64 diff --git a/eras/babbage/impl/cddl-files/extras.cddl b/eras/babbage/impl/cddl-files/extras.cddl deleted file mode 100644 index 9740ed155f1..00000000000 --- a/eras/babbage/impl/cddl-files/extras.cddl +++ /dev/null @@ -1,47 +0,0 @@ -; These are definitions which are being overwritten in a mock cddl file for -; use in tests - -set = [* a] - -; The description of the contents of these bytes is in the main cddl - -finite_set = [* a] - -;unit_interval = #6.30([uint, uint]) -unit_interval = #6.30([1, 2]) - ; real unit_interval is: #6.30([uint, uint]) - ; but this produces numbers outside the unit interval - ; and can also produce a zero in the denominator - -positive_int = 1 .. 18446744073709551615 - -nonnegative_interval = #6.30([uint, positive_int]) - -positive_interval = #6.30([positive_int, positive_int]) - -;address = bytes -address = - h'001000000000000000000000000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000' / - h'102000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000' / - h'203000000000000000000000000000000000000000000000000000000033000000000000000000000000000000000000000000000000000000' / - h'304000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000' / - h'405000000000000000000000000000000000000000000000000000000087680203' / - h'506000000000000000000000000000000000000000000000000000000087680203' / - h'6070000000000000000000000000000000000000000000000000000000' / - h'7080000000000000000000000000000000000000000000000000000000' - -;reward_account = bytes -reward_account = - h'E090000000000000000000000000000000000000000000000000000000' / - h'F0A0000000000000000000000000000000000000000000000000000000' - -bounded_bytes = bytes .size (0..64) - ; the real bounded_bytes does not have this limit. it instead has a different - ; limit which cannot be expressed in CDDL. - ; The limit is as follows: - ; - bytes with a definite-length encoding are limited to size 0..64 - ; - for bytes with an indefinite-length CBOR encoding, each chunk is - ; limited to size 0..64 - ; ( reminder: in CBOR, the indefinite-length encoding of bytestrings - ; consists of a token #2.31 followed by a sequence of definite-length - ; encoded bytestrings and a stop code ) diff --git a/eras/babbage/impl/src/Cardano/Ledger/Babbage.hs b/eras/babbage/impl/src/Cardano/Ledger/Babbage.hs deleted file mode 100644 index 87b4a4b2260..00000000000 --- a/eras/babbage/impl/src/Cardano/Ledger/Babbage.hs +++ /dev/null @@ -1,53 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} --- CanStartFromGenesis -{-# OPTIONS_GHC -Wno-deprecations #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Babbage ( - Babbage, - BabbageEra, - BabbageTxOut, - BabbageTxBody, - AlonzoScript, - AlonzoTxAuxData, -) -where - -import Cardano.Ledger.Alonzo (reapplyAlonzoTx) -import Cardano.Ledger.Alonzo.Genesis (AlonzoGenesis (..)) -import Cardano.Ledger.Alonzo.Scripts (AlonzoScript (..)) -import Cardano.Ledger.Alonzo.TxAuxData (AlonzoTxAuxData (..)) -import Cardano.Ledger.Babbage.Core -import Cardano.Ledger.Babbage.Era (BabbageEra) -import Cardano.Ledger.Babbage.Rules () -import Cardano.Ledger.Babbage.Transition () -import Cardano.Ledger.Babbage.Translation () -import Cardano.Ledger.Babbage.TxBody ( - BabbageTxBody, - BabbageTxOut, - ) -import Cardano.Ledger.Babbage.TxInfo () -import Cardano.Ledger.Babbage.UTxO () -import Cardano.Ledger.Crypto (Crypto, StandardCrypto) -import Cardano.Ledger.Keys (DSignable, Hash) -import qualified Cardano.Ledger.Shelley.API as API - -type Babbage = BabbageEra StandardCrypto - --- ===================================================== - -instance (Crypto c, DSignable c (Hash c EraIndependentTxBody)) => API.ApplyTx (BabbageEra c) where - reapplyTx = reapplyAlonzoTx - -instance (Crypto c, DSignable c (Hash c EraIndependentTxBody)) => API.ApplyBlock (BabbageEra c) - -instance Crypto c => API.CanStartFromGenesis (BabbageEra c) where - type AdditionalGenesisConfig (BabbageEra c) = AlonzoGenesis - - fromShelleyPParams ag = translateEra' () . API.fromShelleyPParams ag diff --git a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Collateral.hs b/eras/babbage/impl/src/Cardano/Ledger/Babbage/Collateral.hs deleted file mode 100644 index 40e3034b3a1..00000000000 --- a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Collateral.hs +++ /dev/null @@ -1,57 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - --- | Figure 2: Functions related to fees and collateral --- Babbage Specification -module Cardano.Ledger.Babbage.Collateral ( - collAdaBalance, - collOuts, -) -where - -import Cardano.Ledger.Babbage.PParams () -import Cardano.Ledger.Babbage.TxBody (BabbageEraTxBody (..)) -import Cardano.Ledger.BaseTypes (TxIx (..), txIxFromIntegral) -import Cardano.Ledger.Coin (DeltaCoin, toDeltaCoin) -import Cardano.Ledger.Core -import Cardano.Ledger.TxIn (TxIn (..)) -import Cardano.Ledger.UTxO (UTxO (..), coinBalance) -import Cardano.Ledger.Val ((<->)) -import qualified Data.Map.Strict as Map -import Data.Maybe.Strict (StrictMaybe (..)) -import Data.Word (Word16, Word64) -import Lens.Micro - --- ============================================================ - -collAdaBalance :: - forall era. - BabbageEraTxBody era => - TxBody era -> - Map.Map (TxIn (EraCrypto era)) (TxOut era) -> - DeltaCoin -collAdaBalance txBody utxoCollateral = toDeltaCoin $ - case txBody ^. collateralReturnTxBodyL of - SNothing -> colbal - SJust txOut -> colbal <-> (txOut ^. coinTxOutL @era) - where - colbal = coinBalance $ UTxO utxoCollateral - -collOuts :: - BabbageEraTxBody era => - TxBody era -> - UTxO era -collOuts txBody = - case txBody ^. collateralReturnTxBodyL of - SNothing -> UTxO Map.empty - SJust txOut -> UTxO (Map.singleton (TxIn (txIdTxBody txBody) index) txOut) - where - index = case txIxFromIntegral (length (txBody ^. outputsTxBodyL)) of - Just i -> i - -- In the impossible event that there are more transaction outputs - -- in the transaction than will fit into a Word16 (which backs the TxIx), - -- we give the collateral return output an index of maxBound. - Nothing -> TxIx ((fromIntegral :: Word16 -> Word64) (maxBound :: Word16)) diff --git a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Core.hs b/eras/babbage/impl/src/Cardano/Ledger/Babbage/Core.hs deleted file mode 100644 index 0e30f92efaf..00000000000 --- a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Core.hs +++ /dev/null @@ -1,21 +0,0 @@ -module Cardano.Ledger.Babbage.Core ( - BabbageEraTxOut (..), - BabbageEraTxBody (..), - BabbageEraPParams (..), - CoinPerByte (..), - ppCoinsPerUTxOByteL, - ppuCoinsPerUTxOByteL, - module Cardano.Ledger.Alonzo.Core, -) -where - -import Cardano.Ledger.Alonzo.Core -import Cardano.Ledger.Babbage.PParams ( - BabbageEraPParams (..), - CoinPerByte (..), - ppCoinsPerUTxOByteL, - ppuCoinsPerUTxOByteL, - ) -import Cardano.Ledger.Babbage.Tx () -import Cardano.Ledger.Babbage.TxBody (BabbageEraTxBody (..)) -import Cardano.Ledger.Babbage.TxOut (BabbageEraTxOut (..)) diff --git a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Era.hs b/eras/babbage/impl/src/Cardano/Ledger/Babbage/Era.hs deleted file mode 100644 index e8e3d6150e4..00000000000 --- a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Era.hs +++ /dev/null @@ -1,103 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE TypeFamilies #-} - -module Cardano.Ledger.Babbage.Era ( - BabbageEra, - BabbageUTXO, - BabbageUTXOS, - BabbageUTXOW, - BabbageLEDGER, -) -where - -import Cardano.Ledger.Alonzo (AlonzoEra) -import Cardano.Ledger.Alonzo.Rules (AlonzoBBODY) -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto -import Cardano.Ledger.Mary.Value (MaryValue) -import qualified Cardano.Ledger.Shelley.API as API -import Cardano.Ledger.Shelley.Rules ( - ShelleyEPOCH, - ShelleyMIR, - ShelleyNEWPP, - ShelleyRUPD, - ShelleySNAP, - ShelleyTICK, - ShelleyTICKF, - ShelleyUPEC, - ) - --- ===================================================== - --- | The Babbage era -data BabbageEra c - -instance Crypto c => Era (BabbageEra c) where - type PreviousEra (BabbageEra c) = AlonzoEra c - type EraCrypto (BabbageEra c) = c - type ProtVerLow (BabbageEra c) = 7 - type ProtVerHigh (BabbageEra c) = 8 - - eraName = "Babbage" - -type instance Value (BabbageEra c) = MaryValue c - -------------------------------------------------------------------------------- --- Era Mapping -------------------------------------------------------------------------------- - -data BabbageUTXOS era - -type instance EraRule "UTXOS" (BabbageEra c) = BabbageUTXOS (BabbageEra c) - -data BabbageUTXO era - -type instance EraRule "UTXO" (BabbageEra c) = BabbageUTXO (BabbageEra c) - -data BabbageUTXOW era - -type instance EraRule "UTXOW" (BabbageEra c) = BabbageUTXOW (BabbageEra c) - -data BabbageLEDGER c - -type instance EraRule "LEDGER" (BabbageEra c) = BabbageLEDGER (BabbageEra c) - --- Rules inherited from Alonzo - -type instance EraRule "BBODY" (BabbageEra c) = AlonzoBBODY (BabbageEra c) - --- Rules inherited from Shelley - -type instance EraRule "DELEG" (BabbageEra c) = API.ShelleyDELEG (BabbageEra c) - -type instance EraRule "DELEGS" (BabbageEra c) = API.ShelleyDELEGS (BabbageEra c) - -type instance EraRule "DELPL" (BabbageEra c) = API.ShelleyDELPL (BabbageEra c) - -type instance EraRule "EPOCH" (BabbageEra c) = ShelleyEPOCH (BabbageEra c) - -type instance EraRule "LEDGERS" (BabbageEra c) = API.ShelleyLEDGERS (BabbageEra c) - -type instance EraRule "MIR" (BabbageEra c) = ShelleyMIR (BabbageEra c) - -type instance EraRule "NEWEPOCH" (BabbageEra c) = API.ShelleyNEWEPOCH (BabbageEra c) - -type instance EraRule "NEWPP" (BabbageEra c) = ShelleyNEWPP (BabbageEra c) - -type instance EraRule "POOL" (BabbageEra c) = API.ShelleyPOOL (BabbageEra c) - -type instance EraRule "POOLREAP" (BabbageEra c) = API.ShelleyPOOLREAP (BabbageEra c) - -type instance EraRule "PPUP" (BabbageEra c) = API.ShelleyPPUP (BabbageEra c) - -type instance EraRule "RUPD" (BabbageEra c) = ShelleyRUPD (BabbageEra c) - -type instance EraRule "SNAP" (BabbageEra c) = ShelleySNAP (BabbageEra c) - -type instance EraRule "TICK" (BabbageEra c) = ShelleyTICK (BabbageEra c) - -type instance EraRule "TICKF" (BabbageEra c) = ShelleyTICKF (BabbageEra c) - -type instance EraRule "UPEC" (BabbageEra c) = ShelleyUPEC (BabbageEra c) - --- ================================================= diff --git a/eras/babbage/impl/src/Cardano/Ledger/Babbage/PParams.hs b/eras/babbage/impl/src/Cardano/Ledger/Babbage/PParams.hs deleted file mode 100644 index 7a7c3fa0fd5..00000000000 --- a/eras/babbage/impl/src/Cardano/Ledger/Babbage/PParams.hs +++ /dev/null @@ -1,645 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE InstanceSigs #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} -{-# OPTIONS_GHC -Wno-orphans #-} - --- | This module contains the type of protocol parameters and EraPParams instance -module Cardano.Ledger.Babbage.PParams ( - BabbageEraPParams (..), - CoinPerByte (..), - ppCoinsPerUTxOByteL, - ppuCoinsPerUTxOByteL, - BabbagePParams (..), - emptyBabbagePParams, - emptyBabbagePParamsUpdate, - DowngradeBabbagePParams (..), - upgradeBabbagePParams, - getLanguageView, - LangDepView (..), - encodeLangViews, - coinsPerUTxOWordToCoinsPerUTxOByte, - coinsPerUTxOByteToCoinsPerUTxOWord, - babbagePParamsHKDPairs, - babbageCommonPParamsHKDPairs, -) -where - -import Cardano.Ledger.Alonzo (AlonzoEra) -import Cardano.Ledger.Alonzo.Core -import Cardano.Ledger.Alonzo.PParams ( - AlonzoEraPParams (..), - AlonzoPParams (..), - LangDepView (..), - OrdExUnits (..), - alonzoCommonPParamsHKDPairs, - encodeLangViews, - getLanguageView, - ) -import Cardano.Ledger.Alonzo.Scripts ( - CostModels, - ExUnits (..), - Prices (..), - emptyCostModels, - ) -import Cardano.Ledger.Babbage.Era (BabbageEra) -import Cardano.Ledger.BaseTypes ( - EpochInterval (..), - NonNegativeInterval, - Nonce, - ProtVer (..), - StrictMaybe (..), - UnitInterval, - isSNothing, - ) -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - Encoding, - FromCBOR (..), - ToCBOR (..), - decCBORGroup, - decodeRecordNamed, - encCBORGroup, - encodeListLen, - listLen, - ) -import Cardano.Ledger.Binary.Coders ( - Decode (..), - Density (..), - Encode (..), - Field (..), - Wrapped (..), - decode, - encode, - field, - (!>), - ) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Core (EraPParams (..)) -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.HKD (HKD, HKDFunctor (..)) -import Cardano.Ledger.Orphans () -import Cardano.Ledger.Shelley.PParams (emptyPPPUpdates, shelleyCommonPParamsHKDPairsV8) -import Control.DeepSeq (NFData) -import Data.Aeson as Aeson ( - FromJSON (..), - Key, - KeyValue ((.=)), - ToJSON (..), - Value, - object, - pairs, - withObject, - (.!=), - (.:), - ) -import Data.Functor.Identity (Identity (..)) -import Data.Proxy (Proxy (Proxy)) -import Data.Word (Word16, Word32) -import GHC.Generics (Generic) -import Lens.Micro -import NoThunks.Class (NoThunks (..)) -import Numeric.Natural (Natural) - -newtype CoinPerByte = CoinPerByte {unCoinPerByte :: Coin} - deriving stock (Eq, Ord) - deriving newtype (EncCBOR, DecCBOR, ToJSON, FromJSON, NFData, NoThunks, Show) - -class AlonzoEraPParams era => BabbageEraPParams era where - hkdCoinsPerUTxOByteL :: HKDFunctor f => Lens' (PParamsHKD f era) (HKD f CoinPerByte) - -ppCoinsPerUTxOByteL :: - forall era. BabbageEraPParams era => Lens' (PParams era) CoinPerByte -ppCoinsPerUTxOByteL = ppLens . hkdCoinsPerUTxOByteL @era @Identity - -ppuCoinsPerUTxOByteL :: - forall era. BabbageEraPParams era => Lens' (PParamsUpdate era) (StrictMaybe CoinPerByte) -ppuCoinsPerUTxOByteL = ppuLens . hkdCoinsPerUTxOByteL @era @StrictMaybe - --- | Babbage Protocol parameters. Ways in which parameters have changed from Alonzo: lack --- of @d@, @extraEntropy@ and replacement of @coinsPerUTxOWord@ with @coinsPerUTxOByte@ -data BabbagePParams f era = BabbagePParams - { bppMinFeeA :: !(HKD f Coin) - -- ^ The linear factor for the minimum fee calculation - , bppMinFeeB :: !(HKD f Coin) - -- ^ The constant factor for the minimum fee calculation - , bppMaxBBSize :: !(HKD f Word32) - -- ^ Maximal block body size - , bppMaxTxSize :: !(HKD f Word32) - -- ^ Maximal transaction size - , bppMaxBHSize :: !(HKD f Word16) - -- ^ Maximal block header size - , bppKeyDeposit :: !(HKD f Coin) - -- ^ The amount of a key registration deposit - , bppPoolDeposit :: !(HKD f Coin) - -- ^ The amount of a pool registration deposit - , bppEMax :: !(HKD f EpochInterval) - -- ^ Maximum number of epochs in the future a pool retirement is allowed to - -- be scheduled for. - , bppNOpt :: !(HKD f Natural) - -- ^ Desired number of pools - , bppA0 :: !(HKD f NonNegativeInterval) - -- ^ Pool influence - , bppRho :: !(HKD f UnitInterval) - -- ^ Monetary expansion - , bppTau :: !(HKD f UnitInterval) - -- ^ Treasury expansion - , bppProtocolVersion :: !(HKD f ProtVer) - -- ^ Protocol version - , bppMinPoolCost :: !(HKD f Coin) - -- ^ Minimum Stake Pool Cost - , bppCoinsPerUTxOByte :: !(HKD f CoinPerByte) - -- ^ Cost in lovelace per byte of UTxO storage (instead of bppCoinsPerUTxOByte) - , bppCostModels :: !(HKD f CostModels) - -- ^ Cost models for non-native script languages - , bppPrices :: !(HKD f Prices) - -- ^ Prices of execution units (for non-native script languages) - , bppMaxTxExUnits :: !(HKD f OrdExUnits) - -- ^ Max total script execution resources units allowed per tx - , bppMaxBlockExUnits :: !(HKD f OrdExUnits) - -- ^ Max total script execution resources units allowed per block - , bppMaxValSize :: !(HKD f Natural) - -- ^ Max size of a Value in an output - , bppCollateralPercentage :: !(HKD f Natural) - -- ^ Percentage of the txfee which must be provided as collateral when - -- including non-native scripts. - , bppMaxCollateralInputs :: !(HKD f Natural) - -- ^ Maximum number of collateral inputs allowed in a transaction - } - deriving (Generic) - -deriving instance Eq (BabbagePParams Identity era) - -deriving instance Ord (BabbagePParams Identity era) - -deriving instance Show (BabbagePParams Identity era) - -instance NoThunks (BabbagePParams Identity era) - -instance NFData (BabbagePParams Identity era) - -deriving instance Eq (BabbagePParams StrictMaybe era) - -deriving instance Ord (BabbagePParams StrictMaybe era) - -deriving instance Show (BabbagePParams StrictMaybe era) - -instance NoThunks (BabbagePParams StrictMaybe era) - -instance NFData (BabbagePParams StrictMaybe era) - -data DowngradeBabbagePParams f = DowngradeBabbagePParams - { dbppD :: !(HKD f UnitInterval) - , dbppExtraEntropy :: !(HKD f Nonce) - } - -instance Crypto c => EraPParams (BabbageEra c) where - type PParamsHKD f (BabbageEra c) = BabbagePParams f (BabbageEra c) - type UpgradePParams f (BabbageEra c) = () - type DowngradePParams f (BabbageEra c) = DowngradeBabbagePParams f - - emptyPParamsIdentity = emptyBabbagePParams - emptyPParamsStrictMaybe = emptyBabbagePParamsUpdate - - upgradePParamsHKD () = upgradeBabbagePParams True - downgradePParamsHKD = downgradeBabbagePParams - - hkdMinFeeAL = lens bppMinFeeA $ \pp x -> pp {bppMinFeeA = x} - hkdMinFeeBL = lens bppMinFeeB $ \pp x -> pp {bppMinFeeB = x} - hkdMaxBBSizeL = lens bppMaxBBSize $ \pp x -> pp {bppMaxBBSize = x} - hkdMaxTxSizeL = lens bppMaxTxSize $ \pp x -> pp {bppMaxTxSize = x} - hkdMaxBHSizeL = lens bppMaxBHSize $ \pp x -> pp {bppMaxBHSize = x} - hkdKeyDepositL = lens bppKeyDeposit $ \pp x -> pp {bppKeyDeposit = x} - hkdPoolDepositL = lens bppPoolDeposit $ \pp x -> pp {bppPoolDeposit = x} - hkdEMaxL = lens bppEMax $ \pp x -> pp {bppEMax = x} - hkdNOptL = lens bppNOpt $ \pp x -> pp {bppNOpt = x} - hkdA0L = lens bppA0 $ \pp x -> pp {bppA0 = x} - hkdRhoL = lens bppRho $ \pp x -> pp {bppRho = x} - hkdTauL = lens bppTau $ \pp x -> pp {bppTau = x} - hkdProtocolVersionL = lens bppProtocolVersion $ \pp x -> pp {bppProtocolVersion = x} - hkdMinPoolCostL = lens bppMinPoolCost $ \pp x -> pp {bppMinPoolCost = x} - - ppDG = to (const minBound) - hkdDL = notSupportedInThisEraL - hkdExtraEntropyL = notSupportedInThisEraL - hkdMinUTxOValueL = notSupportedInThisEraL - -instance Crypto c => AlonzoEraPParams (BabbageEra c) where - hkdCoinsPerUTxOWordL = notSupportedInThisEraL - hkdCostModelsL = lens bppCostModels $ \pp x -> pp {bppCostModels = x} - hkdPricesL = lens bppPrices $ \pp x -> pp {bppPrices = x} - hkdMaxTxExUnitsL :: forall f. HKDFunctor f => Lens' (PParamsHKD f (BabbageEra c)) (HKD f ExUnits) - hkdMaxTxExUnitsL = - lens (hkdMap (Proxy @f) unOrdExUnits . bppMaxTxExUnits) $ \pp x -> - pp {bppMaxTxExUnits = hkdMap (Proxy @f) OrdExUnits x} - hkdMaxBlockExUnitsL :: forall f. HKDFunctor f => Lens' (PParamsHKD f (BabbageEra c)) (HKD f ExUnits) - hkdMaxBlockExUnitsL = - lens (hkdMap (Proxy @f) unOrdExUnits . bppMaxBlockExUnits) $ \pp x -> - pp {bppMaxBlockExUnits = hkdMap (Proxy @f) OrdExUnits x} - hkdMaxValSizeL = lens bppMaxValSize $ \pp x -> pp {bppMaxValSize = x} - hkdCollateralPercentageL = - lens bppCollateralPercentage $ \pp x -> pp {bppCollateralPercentage = x} - hkdMaxCollateralInputsL = - lens bppMaxCollateralInputs $ \pp x -> pp {bppMaxCollateralInputs = x} - -instance Crypto c => BabbageEraPParams (BabbageEra c) where - hkdCoinsPerUTxOByteL = lens bppCoinsPerUTxOByte (\pp x -> pp {bppCoinsPerUTxOByte = x}) - -instance Crypto c => EraGov (BabbageEra c) where - type GovState (BabbageEra c) = ShelleyGovState (BabbageEra c) - emptyGovState = - ShelleyGovState - emptyPPPUpdates - emptyPPPUpdates - emptyPParams - emptyPParams - - getProposedPPUpdates = Just . sgsCurProposals - - curPParamsGovStateL = curPParamsShelleyGovStateL - - prevPParamsGovStateL = prevPParamsShelleyGovStateL - - obligationGovState = const mempty - -instance Era era => EncCBOR (BabbagePParams Identity era) where - encCBOR BabbagePParams {..} = - encodeListLen (21 + listLen bppProtocolVersion) - <> encCBOR bppMinFeeA - <> encCBOR bppMinFeeB - <> encCBOR bppMaxBBSize - <> encCBOR bppMaxTxSize - <> encCBOR bppMaxBHSize - <> encCBOR bppKeyDeposit - <> encCBOR bppPoolDeposit - <> encCBOR bppEMax - <> encCBOR bppNOpt - <> encCBOR bppA0 - <> encCBOR bppRho - <> encCBOR bppTau - <> encCBORGroup bppProtocolVersion - <> encCBOR bppMinPoolCost - <> encCBOR bppCoinsPerUTxOByte - <> encCBOR bppCostModels - <> encCBOR bppPrices - <> encCBOR bppMaxTxExUnits - <> encCBOR bppMaxBlockExUnits - <> encCBOR bppMaxValSize - <> encCBOR bppCollateralPercentage - <> encCBOR bppMaxCollateralInputs - -instance Era era => ToCBOR (BabbagePParams Identity era) where - toCBOR = toEraCBOR @era - -instance Era era => DecCBOR (BabbagePParams Identity era) where - decCBOR = - decodeRecordNamed "PParams" (\pp -> 21 + fromIntegral (listLen (bppProtocolVersion pp))) $ do - bppMinFeeA <- decCBOR - bppMinFeeB <- decCBOR - bppMaxBBSize <- decCBOR - bppMaxTxSize <- decCBOR - bppMaxBHSize <- decCBOR - bppKeyDeposit <- decCBOR - bppPoolDeposit <- decCBOR - bppEMax <- decCBOR - bppNOpt <- decCBOR - bppA0 <- decCBOR - bppRho <- decCBOR - bppTau <- decCBOR - bppProtocolVersion <- decCBORGroup - bppMinPoolCost <- decCBOR - bppCoinsPerUTxOByte <- decCBOR - bppCostModels <- decCBOR - bppPrices <- decCBOR - bppMaxTxExUnits <- decCBOR - bppMaxBlockExUnits <- decCBOR - bppMaxValSize <- decCBOR - bppCollateralPercentage <- decCBOR - bppMaxCollateralInputs <- decCBOR - pure BabbagePParams {..} - -instance Era era => FromCBOR (BabbagePParams Identity era) where - fromCBOR = fromEraCBOR @era - -instance - (PParamsHKD Identity era ~ BabbagePParams Identity era, BabbageEraPParams era, ProtVerAtMost era 8) => - ToJSON (BabbagePParams Identity era) - where - toJSON = object . babbagePParamsPairs - toEncoding = pairs . mconcat . babbagePParamsPairs - -babbagePParamsPairs :: - forall era a e. - (BabbageEraPParams era, KeyValue e a, ProtVerAtMost era 8) => - PParamsHKD Identity era -> - [a] -babbagePParamsPairs pp = - uncurry (.=) <$> babbagePParamsHKDPairs (Proxy @Identity) pp - -instance FromJSON (BabbagePParams Identity era) where - parseJSON = - withObject "PParams" $ \obj -> - BabbagePParams - <$> obj .: "txFeePerByte" - <*> obj .: "txFeeFixed" - <*> obj .: "maxBlockBodySize" - <*> obj .: "maxTxSize" - <*> obj .: "maxBlockHeaderSize" - <*> obj .: "stakeAddressDeposit" - <*> obj .: "stakePoolDeposit" - <*> obj .: "poolRetireMaxEpoch" - <*> obj .: "stakePoolTargetNum" - <*> obj .: "poolPledgeInfluence" - <*> obj .: "monetaryExpansion" - <*> obj .: "treasuryCut" - <*> obj .: "protocolVersion" - <*> obj .: "minPoolCost" .!= mempty - <*> obj .: "utxoCostPerByte" - <*> obj .: "costModels" - <*> obj .: "executionUnitPrices" - <*> obj .: "maxTxExecutionUnits" - <*> obj .: "maxBlockExecutionUnits" - <*> obj .: "maxValueSize" - <*> obj .: "collateralPercentage" - <*> obj .: "maxCollateralInputs" - --- | Returns a basic "empty" `PParams` structure with all zero values. -emptyBabbagePParams :: forall era. Era era => BabbagePParams Identity era -emptyBabbagePParams = - BabbagePParams - { bppMinFeeA = Coin 0 - , bppMinFeeB = Coin 0 - , bppMaxBBSize = 0 - , bppMaxTxSize = 2048 - , bppMaxBHSize = 0 - , bppKeyDeposit = Coin 0 - , bppPoolDeposit = Coin 0 - , bppEMax = EpochInterval 0 - , bppNOpt = 100 - , bppA0 = minBound - , bppRho = minBound - , bppTau = minBound - , bppProtocolVersion = ProtVer (eraProtVerLow @era) 0 - , bppMinPoolCost = mempty - , bppCoinsPerUTxOByte = CoinPerByte $ Coin 0 - , bppCostModels = emptyCostModels - , bppPrices = Prices minBound minBound - , bppMaxTxExUnits = OrdExUnits $ ExUnits 0 0 - , bppMaxBlockExUnits = OrdExUnits $ ExUnits 0 0 - , bppMaxValSize = 0 - , bppCollateralPercentage = 150 - , bppMaxCollateralInputs = 5 - } - -emptyBabbagePParamsUpdate :: BabbagePParams StrictMaybe era -emptyBabbagePParamsUpdate = - BabbagePParams - { bppMinFeeA = SNothing - , bppMinFeeB = SNothing - , bppMaxBBSize = SNothing - , bppMaxTxSize = SNothing - , bppMaxBHSize = SNothing - , bppKeyDeposit = SNothing - , bppPoolDeposit = SNothing - , bppEMax = SNothing - , bppNOpt = SNothing - , bppA0 = SNothing - , bppRho = SNothing - , bppTau = SNothing - , bppProtocolVersion = SNothing - , bppMinPoolCost = SNothing - , bppCoinsPerUTxOByte = SNothing - , bppCostModels = SNothing - , bppPrices = SNothing - , bppMaxTxExUnits = SNothing - , bppMaxBlockExUnits = SNothing - , bppMaxValSize = SNothing - , bppCollateralPercentage = SNothing - , bppMaxCollateralInputs = SNothing - } - --- ======================================================= --- A PParamsUpdate has StrictMaybe fields, we want to Sparse encode it, by --- writing only those fields where the field is (SJust x), that is the role of --- the local function (omitStrictMaybe key x) - -encodePParamsUpdate :: - BabbagePParams StrictMaybe era -> - Encode ('Closed 'Sparse) (BabbagePParams StrictMaybe era) -encodePParamsUpdate ppup = - Keyed BabbagePParams - !> omitStrictMaybe 0 (bppMinFeeA ppup) encCBOR - !> omitStrictMaybe 1 (bppMinFeeB ppup) encCBOR - !> omitStrictMaybe 2 (bppMaxBBSize ppup) encCBOR - !> omitStrictMaybe 3 (bppMaxTxSize ppup) encCBOR - !> omitStrictMaybe 4 (bppMaxBHSize ppup) encCBOR - !> omitStrictMaybe 5 (bppKeyDeposit ppup) encCBOR - !> omitStrictMaybe 6 (bppPoolDeposit ppup) encCBOR - !> omitStrictMaybe 7 (bppEMax ppup) encCBOR - !> omitStrictMaybe 8 (bppNOpt ppup) encCBOR - !> omitStrictMaybe 9 (bppA0 ppup) encCBOR - !> omitStrictMaybe 10 (bppRho ppup) encCBOR - !> omitStrictMaybe 11 (bppTau ppup) encCBOR - !> omitStrictMaybe 14 (bppProtocolVersion ppup) encCBOR - !> omitStrictMaybe 16 (bppMinPoolCost ppup) encCBOR - !> omitStrictMaybe 17 (bppCoinsPerUTxOByte ppup) encCBOR - !> omitStrictMaybe 18 (bppCostModels ppup) encCBOR - !> omitStrictMaybe 19 (bppPrices ppup) encCBOR - !> omitStrictMaybe 20 (bppMaxTxExUnits ppup) encCBOR - !> omitStrictMaybe 21 (bppMaxBlockExUnits ppup) encCBOR - !> omitStrictMaybe 22 (bppMaxValSize ppup) encCBOR - !> omitStrictMaybe 23 (bppCollateralPercentage ppup) encCBOR - !> omitStrictMaybe 24 (bppMaxCollateralInputs ppup) encCBOR - where - omitStrictMaybe :: - Word -> StrictMaybe a -> (a -> Encoding) -> Encode ('Closed 'Sparse) (StrictMaybe a) - omitStrictMaybe key x enc = Omit isSNothing (Key key (E (enc . fromSJust) x)) - - fromSJust :: StrictMaybe a -> a - fromSJust (SJust x) = x - fromSJust SNothing = error "SNothing in fromSJust. This should never happen, it is guarded by isSNothing." - -instance Era era => EncCBOR (BabbagePParams StrictMaybe era) where - encCBOR ppup = encode (encodePParamsUpdate ppup) - -updateField :: Word -> Field (BabbagePParams StrictMaybe era) -updateField 0 = field (\x up -> up {bppMinFeeA = SJust x}) From -updateField 1 = field (\x up -> up {bppMinFeeB = SJust x}) From -updateField 2 = field (\x up -> up {bppMaxBBSize = SJust x}) From -updateField 3 = field (\x up -> up {bppMaxTxSize = SJust x}) From -updateField 4 = field (\x up -> up {bppMaxBHSize = SJust x}) From -updateField 5 = field (\x up -> up {bppKeyDeposit = SJust x}) From -updateField 6 = field (\x up -> up {bppPoolDeposit = SJust x}) From -updateField 7 = field (\x up -> up {bppEMax = SJust x}) From -updateField 8 = field (\x up -> up {bppNOpt = SJust x}) From -updateField 9 = field (\x up -> up {bppA0 = SJust x}) From -updateField 10 = field (\x up -> up {bppRho = SJust x}) From -updateField 11 = field (\x up -> up {bppTau = SJust x}) From -updateField 14 = field (\x up -> up {bppProtocolVersion = SJust x}) From -updateField 16 = field (\x up -> up {bppMinPoolCost = SJust x}) From -updateField 17 = field (\x up -> up {bppCoinsPerUTxOByte = SJust x}) From -updateField 18 = field (\x up -> up {bppCostModels = SJust x}) From -updateField 19 = field (\x up -> up {bppPrices = SJust x}) From -updateField 20 = field (\x up -> up {bppMaxTxExUnits = SJust x}) From -updateField 21 = field (\x up -> up {bppMaxBlockExUnits = SJust x}) From -updateField 22 = field (\x up -> up {bppMaxValSize = SJust x}) From -updateField 23 = field (\x up -> up {bppCollateralPercentage = SJust x}) From -updateField 24 = field (\x up -> up {bppMaxCollateralInputs = SJust x}) From -updateField k = field (\_x up -> up) (Invalid k) - -instance Era era => DecCBOR (BabbagePParams StrictMaybe era) where - decCBOR = - decode - (SparseKeyed "PParamsUpdate" emptyBabbagePParamsUpdate updateField []) - -instance Era era => ToCBOR (BabbagePParams StrictMaybe era) where - toCBOR = toEraCBOR @era - -instance Era era => FromCBOR (BabbagePParams StrictMaybe era) where - fromCBOR = fromEraCBOR @era - -instance - ( PParamsHKD StrictMaybe era ~ BabbagePParams StrictMaybe era - , BabbageEraPParams era - , ProtVerAtMost era 8 - ) => - ToJSON (BabbagePParams StrictMaybe era) - where - toJSON = object . babbagePParamsUpdatePairs - toEncoding = pairs . mconcat . babbagePParamsUpdatePairs - -babbagePParamsUpdatePairs :: - forall era a e. - (BabbageEraPParams era, KeyValue e a, ProtVerAtMost era 8) => - PParamsHKD StrictMaybe era -> - [a] -babbagePParamsUpdatePairs pp = - [ k .= v - | (k, SJust v) <- babbagePParamsHKDPairs (Proxy @StrictMaybe) pp - ] - -babbagePParamsHKDPairs :: - forall era f. - (BabbageEraPParams era, HKDFunctor f, ProtVerAtMost era 8) => - Proxy f -> - PParamsHKD f era -> - [(Key, HKD f Aeson.Value)] -babbagePParamsHKDPairs px pp = - babbageCommonPParamsHKDPairs px pp - <> shelleyCommonPParamsHKDPairsV8 px pp -- for "protocolVersion" - --- | These are the fields that are common across all eras starting with Babbage. -babbageCommonPParamsHKDPairs :: - forall era f. - (BabbageEraPParams era, HKDFunctor f) => - Proxy f -> - PParamsHKD f era -> - [(Key, HKD f Aeson.Value)] -babbageCommonPParamsHKDPairs px pp = - alonzoCommonPParamsHKDPairs px pp - <> [("utxoCostPerByte", hkdMap px (toJSON @CoinPerByte) (pp ^. hkdCoinsPerUTxOByteL @_ @f))] - -upgradeBabbagePParams :: - forall f c. - HKDFunctor f => - Bool -> - PParamsHKD f (AlonzoEra c) -> - BabbagePParams f (BabbageEra c) -upgradeBabbagePParams updateCoinsPerUTxOWord AlonzoPParams {..} = - BabbagePParams - { bppMinFeeA = appMinFeeA - , bppMinFeeB = appMinFeeB - , bppMaxBBSize = appMaxBBSize - , bppMaxTxSize = appMaxTxSize - , bppMaxBHSize = appMaxBHSize - , bppKeyDeposit = appKeyDeposit - , bppPoolDeposit = appPoolDeposit - , bppEMax = appEMax - , bppNOpt = appNOpt - , bppA0 = appA0 - , bppRho = appRho - , bppTau = appTau - , bppProtocolVersion = appProtocolVersion - , bppMinPoolCost = appMinPoolCost - , bppCoinsPerUTxOByte = - hkdMap - (Proxy @f) - ( if updateCoinsPerUTxOWord - then coinsPerUTxOWordToCoinsPerUTxOByte - else coinsPerUTxOWordToCoinsPerUTxOByteInTx - ) - appCoinsPerUTxOWord - , bppCostModels = appCostModels - , bppPrices = appPrices - , bppMaxTxExUnits = appMaxTxExUnits - , bppMaxBlockExUnits = appMaxBlockExUnits - , bppMaxValSize = appMaxValSize - , bppCollateralPercentage = appCollateralPercentage - , bppMaxCollateralInputs = appMaxCollateralInputs - } - -downgradeBabbagePParams :: - forall f c. - HKDFunctor f => - DowngradeBabbagePParams f -> - BabbagePParams f (BabbageEra c) -> - PParamsHKD f (AlonzoEra c) -downgradeBabbagePParams DowngradeBabbagePParams {..} BabbagePParams {..} = - AlonzoPParams - { appMinFeeA = bppMinFeeA - , appMinFeeB = bppMinFeeB - , appMaxBBSize = bppMaxBBSize - , appMaxTxSize = bppMaxTxSize - , appMaxBHSize = bppMaxBHSize - , appKeyDeposit = bppKeyDeposit - , appPoolDeposit = bppPoolDeposit - , appEMax = bppEMax - , appNOpt = bppNOpt - , appA0 = bppA0 - , appRho = bppRho - , appTau = bppTau - , appD = dbppD - , appExtraEntropy = dbppExtraEntropy - , appProtocolVersion = bppProtocolVersion - , appMinPoolCost = bppMinPoolCost - , appCoinsPerUTxOWord = hkdMap (Proxy @f) coinsPerUTxOByteToCoinsPerUTxOWord bppCoinsPerUTxOByte - , appCostModels = bppCostModels - , appPrices = bppPrices - , appMaxTxExUnits = bppMaxTxExUnits - , appMaxBlockExUnits = bppMaxBlockExUnits - , appMaxValSize = bppMaxValSize - , appCollateralPercentage = bppCollateralPercentage - , appMaxCollateralInputs = bppMaxCollateralInputs - } - --- | A word is 8 bytes, so convert from coinsPerUTxOWord to coinsPerUTxOByte, rounding down. -coinsPerUTxOWordToCoinsPerUTxOByte :: CoinPerWord -> CoinPerByte -coinsPerUTxOWordToCoinsPerUTxOByte (CoinPerWord (Coin c)) = CoinPerByte $ Coin $ c `div` 8 - --- | A word is 8 bytes, so convert from coinsPerUTxOByte to coinsPerUTxOWord. -coinsPerUTxOByteToCoinsPerUTxOWord :: CoinPerByte -> CoinPerWord -coinsPerUTxOByteToCoinsPerUTxOWord (CoinPerByte (Coin c)) = CoinPerWord $ Coin $ c * 8 - --- | Naively convert coins per UTxO word to coins per byte. This function only --- exists to support the very unusual case of translating a transaction --- containing an update to the 'coinsPerUTxOWord' field, in which case we must --- not do the translation above, since this would render the transaction --- invalid. -coinsPerUTxOWordToCoinsPerUTxOByteInTx :: CoinPerWord -> CoinPerByte -coinsPerUTxOWordToCoinsPerUTxOByteInTx (CoinPerWord (Coin c)) = CoinPerByte $ Coin c diff --git a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules.hs b/eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules.hs deleted file mode 100644 index 2e1c8462de3..00000000000 --- a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules.hs +++ /dev/null @@ -1,31 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE TypeFamilies #-} - -module Cardano.Ledger.Babbage.Rules ( - module Cardano.Ledger.Babbage.Rules.Ledger, - module Cardano.Ledger.Babbage.Rules.Utxo, - module Cardano.Ledger.Babbage.Rules.Utxos, - module Cardano.Ledger.Babbage.Rules.Utxow, -) -where - -import Cardano.Ledger.Babbage.Core (EraRuleEvent) -import Cardano.Ledger.Babbage.Era (BabbageEra) -import Cardano.Ledger.Babbage.Rules.Bbody () -import Cardano.Ledger.Babbage.Rules.Deleg () -import Cardano.Ledger.Babbage.Rules.Delegs () -import Cardano.Ledger.Babbage.Rules.Delpl () -import Cardano.Ledger.Babbage.Rules.Ledger -import Cardano.Ledger.Babbage.Rules.Ledgers () -import Cardano.Ledger.Babbage.Rules.Pool () -import Cardano.Ledger.Babbage.Rules.Ppup () -import Cardano.Ledger.Babbage.Rules.Utxo -import Cardano.Ledger.Babbage.Rules.Utxos -import Cardano.Ledger.Babbage.Rules.Utxow -import Cardano.Ledger.Shelley.Rules (PpupEvent, ShelleyLedgerEvent, ShelleyTickEvent) - -type instance EraRuleEvent "TICK" (BabbageEra c) = ShelleyTickEvent (BabbageEra c) - -type instance EraRuleEvent "LEDGER" (BabbageEra c) = ShelleyLedgerEvent (BabbageEra c) - -type instance EraRuleEvent "PPUP" (BabbageEra c) = PpupEvent (BabbageEra c) diff --git a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Bbody.hs b/eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Bbody.hs deleted file mode 100644 index 3db94eb59e7..00000000000 --- a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Bbody.hs +++ /dev/null @@ -1,95 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Babbage.Rules.Bbody () where - -import Cardano.Ledger.Allegra.Rules (AllegraUtxoPredFailure) -import Cardano.Ledger.Alonzo.Rules ( - AlonzoBbodyPredFailure (..), - AlonzoUtxoPredFailure, - AlonzoUtxosPredFailure, - AlonzoUtxowPredFailure, - ) -import Cardano.Ledger.Babbage.Era (BabbageEra) -import Cardano.Ledger.Babbage.Rules.Ledgers () -import Cardano.Ledger.Babbage.Rules.Utxo (BabbageUtxoPredFailure) -import Cardano.Ledger.Babbage.Rules.Utxow (BabbageUtxowPredFailure) -import Cardano.Ledger.Core - -import Cardano.Ledger.Shelley.Rules ( - ShelleyBbodyPredFailure (..), - ShelleyDelegPredFailure, - ShelleyDelegsPredFailure, - ShelleyDelplPredFailure, - ShelleyLedgerPredFailure, - ShelleyLedgersPredFailure, - ShelleyPoolPredFailure, - ShelleyPpupPredFailure, - ShelleyUtxoPredFailure, - ShelleyUtxowPredFailure, - ) - -type instance EraRuleFailure "BBODY" (BabbageEra c) = AlonzoBbodyPredFailure (BabbageEra c) - -instance InjectRuleFailure "BBODY" AlonzoBbodyPredFailure (BabbageEra c) - -instance InjectRuleFailure "BBODY" ShelleyBbodyPredFailure (BabbageEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure - -instance InjectRuleFailure "BBODY" ShelleyLedgersPredFailure (BabbageEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure - -instance InjectRuleFailure "BBODY" ShelleyLedgerPredFailure (BabbageEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" BabbageUtxowPredFailure (BabbageEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" AlonzoUtxowPredFailure (BabbageEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyUtxowPredFailure (BabbageEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" BabbageUtxoPredFailure (BabbageEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" AlonzoUtxoPredFailure (BabbageEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" AlonzoUtxosPredFailure (BabbageEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyPpupPredFailure (BabbageEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyUtxoPredFailure (BabbageEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" AllegraUtxoPredFailure (BabbageEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyDelegsPredFailure (BabbageEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyDelplPredFailure (BabbageEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyPoolPredFailure (BabbageEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyDelegPredFailure (BabbageEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure diff --git a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Deleg.hs b/eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Deleg.hs deleted file mode 100644 index 5f647dea02a..00000000000 --- a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Deleg.hs +++ /dev/null @@ -1,16 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Babbage.Rules.Deleg () where - -import Cardano.Ledger.Babbage.Era (BabbageEra) -import Cardano.Ledger.Core -import Cardano.Ledger.Shelley.Rules ( - ShelleyDelegPredFailure, - ) - -type instance EraRuleFailure "DELEG" (BabbageEra c) = ShelleyDelegPredFailure (BabbageEra c) - -instance InjectRuleFailure "DELEG" ShelleyDelegPredFailure (BabbageEra c) diff --git a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Delegs.hs b/eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Delegs.hs deleted file mode 100644 index 94f636ae2eb..00000000000 --- a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Delegs.hs +++ /dev/null @@ -1,29 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Babbage.Rules.Delegs () where - -import Cardano.Ledger.Babbage.Era (BabbageEra) -import Cardano.Ledger.Babbage.Rules.Delpl () -import Cardano.Ledger.Core -import Cardano.Ledger.Shelley.Rules ( - ShelleyDelegPredFailure, - ShelleyDelegsPredFailure (..), - ShelleyDelplPredFailure, - ShelleyPoolPredFailure, - ) - -type instance EraRuleFailure "DELEGS" (BabbageEra c) = ShelleyDelegsPredFailure (BabbageEra c) - -instance InjectRuleFailure "DELEGS" ShelleyDelegsPredFailure (BabbageEra c) - -instance InjectRuleFailure "DELEGS" ShelleyDelplPredFailure (BabbageEra c) where - injectFailure = DelplFailure - -instance InjectRuleFailure "DELEGS" ShelleyPoolPredFailure (BabbageEra c) where - injectFailure = DelplFailure . injectFailure - -instance InjectRuleFailure "DELEGS" ShelleyDelegPredFailure (BabbageEra c) where - injectFailure = DelplFailure . injectFailure diff --git a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Delpl.hs b/eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Delpl.hs deleted file mode 100644 index e35896a6b3c..00000000000 --- a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Delpl.hs +++ /dev/null @@ -1,26 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Babbage.Rules.Delpl () where - -import Cardano.Ledger.Babbage.Era (BabbageEra) -import Cardano.Ledger.Babbage.Rules.Deleg () -import Cardano.Ledger.Babbage.Rules.Pool () -import Cardano.Ledger.Core -import Cardano.Ledger.Shelley.Rules ( - ShelleyDelegPredFailure, - ShelleyDelplPredFailure (..), - ShelleyPoolPredFailure, - ) - -type instance EraRuleFailure "DELPL" (BabbageEra c) = ShelleyDelplPredFailure (BabbageEra c) - -instance InjectRuleFailure "DELPL" ShelleyDelplPredFailure (BabbageEra c) - -instance InjectRuleFailure "DELPL" ShelleyPoolPredFailure (BabbageEra c) where - injectFailure = PoolFailure - -instance InjectRuleFailure "DELPL" ShelleyDelegPredFailure (BabbageEra c) where - injectFailure = DelegFailure diff --git a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Ledger.hs b/eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Ledger.hs deleted file mode 100644 index a512c53b0be..00000000000 --- a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Ledger.hs +++ /dev/null @@ -1,168 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Babbage.Rules.Ledger (BabbageLEDGER) where - -import Cardano.Ledger.Allegra.Rules (AllegraUtxoPredFailure) -import Cardano.Ledger.Alonzo.Rules ( - AlonzoUtxoPredFailure, - AlonzoUtxosPredFailure, - AlonzoUtxowEvent, - AlonzoUtxowPredFailure, - ledgerTransition, - ) -import Cardano.Ledger.Babbage.Core -import Cardano.Ledger.Babbage.Era (BabbageEra, BabbageLEDGER) -import Cardano.Ledger.Babbage.Rules.Delegs () -import Cardano.Ledger.Babbage.Rules.Utxo (BabbageUtxoPredFailure) -import Cardano.Ledger.Babbage.Rules.Utxow (BabbageUTXOW, BabbageUtxowPredFailure) -import Cardano.Ledger.BaseTypes (ShelleyBase) -import Cardano.Ledger.Shelley.LedgerState ( - CertState (..), - LedgerState (..), - UTxOState (..), - ) -import Cardano.Ledger.Shelley.Rules ( - DelegsEnv (..), - LedgerEnv (..), - ShelleyDELEGS, - ShelleyDelegPredFailure, - ShelleyDelegsEvent, - ShelleyDelegsPredFailure, - ShelleyDelplPredFailure, - ShelleyLEDGERS, - ShelleyLedgerEvent (..), - ShelleyLedgerPredFailure (..), - ShelleyPoolPredFailure, - ShelleyPpupPredFailure, - ShelleyUtxoPredFailure, - ShelleyUtxowPredFailure, - UtxoEnv (..), - shelleyLedgerAssertions, - ) -import Cardano.Ledger.Shelley.Rules as Shelley ( - ShelleyLedgersEvent (LedgerEvent), - ShelleyLedgersPredFailure (LedgerFailure), - renderDepositEqualsObligationViolation, - ) -import Control.State.Transition ( - Embed (..), - STS (..), - ) -import Data.Sequence (Seq) - --- ================================================== - -type instance EraRuleFailure "LEDGER" (BabbageEra c) = ShelleyLedgerPredFailure (BabbageEra c) - -instance InjectRuleFailure "LEDGER" ShelleyLedgerPredFailure (BabbageEra c) - -instance InjectRuleFailure "LEDGER" BabbageUtxowPredFailure (BabbageEra c) where - injectFailure = UtxowFailure - -instance InjectRuleFailure "LEDGER" AlonzoUtxowPredFailure (BabbageEra c) where - injectFailure = UtxowFailure . injectFailure - -instance InjectRuleFailure "LEDGER" ShelleyUtxowPredFailure (BabbageEra c) where - injectFailure = UtxowFailure . injectFailure - -instance InjectRuleFailure "LEDGER" BabbageUtxoPredFailure (BabbageEra c) where - injectFailure = UtxowFailure . injectFailure - -instance InjectRuleFailure "LEDGER" AlonzoUtxoPredFailure (BabbageEra c) where - injectFailure = UtxowFailure . injectFailure - -instance InjectRuleFailure "LEDGER" AlonzoUtxosPredFailure (BabbageEra c) where - injectFailure = UtxowFailure . injectFailure - -instance InjectRuleFailure "LEDGER" ShelleyPpupPredFailure (BabbageEra c) where - injectFailure = UtxowFailure . injectFailure - -instance InjectRuleFailure "LEDGER" ShelleyUtxoPredFailure (BabbageEra c) where - injectFailure = UtxowFailure . injectFailure - -instance InjectRuleFailure "LEDGER" AllegraUtxoPredFailure (BabbageEra c) where - injectFailure = UtxowFailure . injectFailure - -instance InjectRuleFailure "LEDGER" ShelleyDelegsPredFailure (BabbageEra c) where - injectFailure = DelegsFailure - -instance InjectRuleFailure "LEDGER" ShelleyDelplPredFailure (BabbageEra c) where - injectFailure = DelegsFailure . injectFailure - -instance InjectRuleFailure "LEDGER" ShelleyPoolPredFailure (BabbageEra c) where - injectFailure = DelegsFailure . injectFailure - -instance InjectRuleFailure "LEDGER" ShelleyDelegPredFailure (BabbageEra c) where - injectFailure = DelegsFailure . injectFailure - -instance - ( AlonzoEraTx era - , EraGov era - , Embed (EraRule "DELEGS" era) (BabbageLEDGER era) - , Embed (EraRule "UTXOW" era) (BabbageLEDGER era) - , Environment (EraRule "UTXOW" era) ~ UtxoEnv era - , State (EraRule "UTXOW" era) ~ UTxOState era - , Signal (EraRule "UTXOW" era) ~ Tx era - , Environment (EraRule "DELEGS" era) ~ DelegsEnv era - , State (EraRule "DELEGS" era) ~ CertState era - , Signal (EraRule "DELEGS" era) ~ Seq (TxCert era) - , ProtVerAtMost era 8 - ) => - STS (BabbageLEDGER era) - where - type State (BabbageLEDGER era) = LedgerState era - type Signal (BabbageLEDGER era) = Tx era - type Environment (BabbageLEDGER era) = LedgerEnv era - type BaseM (BabbageLEDGER era) = ShelleyBase - type PredicateFailure (BabbageLEDGER era) = ShelleyLedgerPredFailure era - type Event (BabbageLEDGER era) = ShelleyLedgerEvent era - - initialRules = [] - transitionRules = [ledgerTransition @BabbageLEDGER] - - renderAssertionViolation = Shelley.renderDepositEqualsObligationViolation - - assertions = shelleyLedgerAssertions - -instance - ( Era era - , STS (ShelleyDELEGS era) - , PredicateFailure (EraRule "DELEGS" era) ~ ShelleyDelegsPredFailure era - , Event (EraRule "DELEGS" era) ~ ShelleyDelegsEvent era - ) => - Embed (ShelleyDELEGS era) (BabbageLEDGER era) - where - wrapFailed = DelegsFailure - wrapEvent = DelegsEvent - -instance - ( Era era - , STS (BabbageUTXOW era) - , Event (EraRule "UTXOW" era) ~ AlonzoUtxowEvent era - , PredicateFailure (EraRule "UTXOW" era) ~ BabbageUtxowPredFailure era - ) => - Embed (BabbageUTXOW era) (BabbageLEDGER era) - where - wrapFailed = UtxowFailure - wrapEvent = UtxowEvent - -instance - ( Era era - , STS (BabbageLEDGER era) - , PredicateFailure (EraRule "LEDGER" era) ~ ShelleyLedgerPredFailure era - , Event (EraRule "LEDGER" era) ~ ShelleyLedgerEvent era - ) => - Embed (BabbageLEDGER era) (ShelleyLEDGERS era) - where - wrapFailed = Shelley.LedgerFailure - wrapEvent = Shelley.LedgerEvent diff --git a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Ledgers.hs b/eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Ledgers.hs deleted file mode 100644 index b6caf2ba9c5..00000000000 --- a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Ledgers.hs +++ /dev/null @@ -1,75 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Babbage.Rules.Ledgers () where - -import Cardano.Ledger.Allegra.Rules (AllegraUtxoPredFailure) -import Cardano.Ledger.Alonzo.Rules ( - AlonzoUtxoPredFailure, - AlonzoUtxosPredFailure, - AlonzoUtxowPredFailure, - ) -import Cardano.Ledger.Babbage.Era (BabbageEra) -import Cardano.Ledger.Babbage.Rules.Ledger () -import Cardano.Ledger.Babbage.Rules.Utxo (BabbageUtxoPredFailure) -import Cardano.Ledger.Babbage.Rules.Utxow (BabbageUtxowPredFailure) -import Cardano.Ledger.Core -import Cardano.Ledger.Shelley.Rules ( - ShelleyDelegPredFailure, - ShelleyDelegsPredFailure, - ShelleyDelplPredFailure, - ShelleyLedgerPredFailure, - ShelleyLedgersPredFailure (..), - ShelleyPoolPredFailure, - ShelleyPpupPredFailure, - ShelleyUtxoPredFailure, - ShelleyUtxowPredFailure, - ) - -type instance EraRuleFailure "LEDGERS" (BabbageEra c) = ShelleyLedgersPredFailure (BabbageEra c) - -instance InjectRuleFailure "LEDGERS" ShelleyLedgersPredFailure (BabbageEra c) - -instance InjectRuleFailure "LEDGERS" ShelleyLedgerPredFailure (BabbageEra c) where - injectFailure = LedgerFailure - -instance InjectRuleFailure "LEDGERS" BabbageUtxowPredFailure (BabbageEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" AlonzoUtxowPredFailure (BabbageEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ShelleyUtxowPredFailure (BabbageEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" BabbageUtxoPredFailure (BabbageEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" AlonzoUtxoPredFailure (BabbageEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" AlonzoUtxosPredFailure (BabbageEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ShelleyPpupPredFailure (BabbageEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ShelleyUtxoPredFailure (BabbageEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" AllegraUtxoPredFailure (BabbageEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ShelleyDelegsPredFailure (BabbageEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ShelleyDelplPredFailure (BabbageEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ShelleyPoolPredFailure (BabbageEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ShelleyDelegPredFailure (BabbageEra c) where - injectFailure = LedgerFailure . injectFailure diff --git a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Pool.hs b/eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Pool.hs deleted file mode 100644 index 5327fdac501..00000000000 --- a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Pool.hs +++ /dev/null @@ -1,14 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Babbage.Rules.Pool () where - -import Cardano.Ledger.Babbage.Era (BabbageEra) -import Cardano.Ledger.Core -import Cardano.Ledger.Shelley.Rules (ShelleyPoolPredFailure) - -type instance EraRuleFailure "POOL" (BabbageEra c) = ShelleyPoolPredFailure (BabbageEra c) - -instance InjectRuleFailure "POOL" ShelleyPoolPredFailure (BabbageEra c) diff --git a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Ppup.hs b/eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Ppup.hs deleted file mode 100644 index 1c30fe9eff0..00000000000 --- a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Ppup.hs +++ /dev/null @@ -1,14 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Babbage.Rules.Ppup () where - -import Cardano.Ledger.Babbage.Era (BabbageEra) -import Cardano.Ledger.Core -import Cardano.Ledger.Shelley.Rules (ShelleyPpupPredFailure) - -type instance EraRuleFailure "PPUP" (BabbageEra c) = ShelleyPpupPredFailure (BabbageEra c) - -instance InjectRuleFailure "PPUP" ShelleyPpupPredFailure (BabbageEra c) diff --git a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Utxo.hs b/eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Utxo.hs deleted file mode 100644 index 1bc0f0cbd2f..00000000000 --- a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Utxo.hs +++ /dev/null @@ -1,523 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PartialTypeSignatures #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Babbage.Rules.Utxo ( - BabbageUTXO, - BabbageUtxoPredFailure (..), - utxoTransition, - feesOK, - validateTotalCollateral, - validateCollateralEqBalance, - validateOutputTooSmallUTxO, -) where - -import Cardano.Ledger.Allegra.Rules (AllegraUtxoPredFailure, shelleyToAllegraUtxoPredFailure) -import qualified Cardano.Ledger.Allegra.Rules as Allegra ( - validateOutsideValidityIntervalUTxO, - ) -import Cardano.Ledger.Alonzo.Rules ( - AlonzoUtxoEvent (..), - AlonzoUtxoPredFailure (..), - AlonzoUtxosPredFailure (..), - allegraToAlonzoUtxoPredFailure, - ) -import qualified Cardano.Ledger.Alonzo.Rules as Alonzo ( - validateExUnitsTooBigUTxO, - validateInsufficientCollateral, - validateOutputTooBigUTxO, - validateOutsideForecast, - validateScriptsNotPaidUTxO, - validateTooManyCollateralInputs, - validateWrongNetworkInTxBody, - ) -import Cardano.Ledger.Alonzo.Tx (AlonzoTx (..)) -import Cardano.Ledger.Alonzo.TxWits (nullRedeemers) -import Cardano.Ledger.Babbage.Collateral (collAdaBalance) -import Cardano.Ledger.Babbage.Core -import Cardano.Ledger.Babbage.Era (BabbageEra, BabbageUTXO) -import Cardano.Ledger.Babbage.Rules.Ppup () -import Cardano.Ledger.Babbage.Rules.Utxos (BabbageUTXOS) -import Cardano.Ledger.BaseTypes ( - ProtVer (..), - ShelleyBase, - epochInfo, - networkId, - systemStart, - ) -import Cardano.Ledger.Binary (DecCBOR (..), EncCBOR (..), Sized (..)) -import Cardano.Ledger.Binary.Coders -import Cardano.Ledger.Coin (Coin (..), DeltaCoin, toDeltaCoin) -import Cardano.Ledger.Rules.ValidationMode ( - Test, - runTest, - runTestOnSignal, - ) -import Cardano.Ledger.Shelley.LedgerState (UTxOState (utxosUtxo)) -import Cardano.Ledger.Shelley.Rules (ShelleyPpupPredFailure, ShelleyUtxoPredFailure, UtxoEnv) -import qualified Cardano.Ledger.Shelley.Rules as Shelley -import Cardano.Ledger.TxIn (TxIn) -import Cardano.Ledger.UTxO (EraUTxO (..), UTxO (..), areAllAdaOnly, balance) -import Cardano.Ledger.Val ((<->)) -import qualified Cardano.Ledger.Val as Val (inject, isAdaOnly, pointwise) -import Control.DeepSeq (NFData) -import Control.Monad (unless, when) -import Control.Monad.Trans.Reader (asks) -import Control.SetAlgebra (eval, (◁)) -import Control.State.Transition.Extended ( - Embed (..), - STS (..), - TRC (..), - TransitionRule, - failureOnNonEmpty, - judgmentContext, - liftSTS, - trans, - validate, - ) -import Data.Bifunctor (first) -import Data.Coerce (coerce) -import Data.Foldable (sequenceA_, toList) -import Data.List.NonEmpty (NonEmpty) -import qualified Data.Map.Strict as Map -import Data.Maybe.Strict (StrictMaybe (..)) -import Data.Set (Set) -import qualified Data.Set as Set -import Data.Typeable (Typeable) -import GHC.Generics (Generic) -import Lens.Micro -import NoThunks.Class (InspectHeapNamed (..), NoThunks (..)) -import Validation (Validation, failureIf, failureUnless) - --- ====================================================== - --- | Predicate failure for the Babbage Era -data BabbageUtxoPredFailure era - = AlonzoInBabbageUtxoPredFailure !(AlonzoUtxoPredFailure era) -- Inherited from Alonzo - | -- | The collateral is not equivalent to the total collateral asserted by the transaction - IncorrectTotalCollateralField - -- | collateral provided - !DeltaCoin - -- | collateral amount declared in transaction body - !Coin - | -- | list of supplied transaction outputs that are too small, - -- together with the minimum value for the given output. - BabbageOutputTooSmallUTxO - ![(TxOut era, Coin)] - | -- | TxIns that appear in both inputs and reference inputs - BabbageNonDisjointRefInputs - !(NonEmpty (TxIn (EraCrypto era))) - deriving (Generic) - -type instance EraRuleFailure "UTXO" (BabbageEra c) = BabbageUtxoPredFailure (BabbageEra c) - -instance InjectRuleFailure "UTXO" BabbageUtxoPredFailure (BabbageEra c) - -instance InjectRuleFailure "UTXO" AlonzoUtxoPredFailure (BabbageEra c) where - injectFailure = AlonzoInBabbageUtxoPredFailure - -instance InjectRuleFailure "UTXO" ShelleyPpupPredFailure (BabbageEra c) where - injectFailure = AlonzoInBabbageUtxoPredFailure . UtxosFailure . injectFailure - -instance InjectRuleFailure "UTXO" ShelleyUtxoPredFailure (BabbageEra c) where - injectFailure = - AlonzoInBabbageUtxoPredFailure - . allegraToAlonzoUtxoPredFailure - . shelleyToAllegraUtxoPredFailure - -instance InjectRuleFailure "UTXO" AllegraUtxoPredFailure (BabbageEra c) where - injectFailure = AlonzoInBabbageUtxoPredFailure . allegraToAlonzoUtxoPredFailure - -instance InjectRuleFailure "UTXO" AlonzoUtxosPredFailure (BabbageEra c) where - injectFailure = AlonzoInBabbageUtxoPredFailure . UtxosFailure - -deriving instance - ( Era era - , Show (AlonzoUtxoPredFailure era) - , Show (PredicateFailure (EraRule "UTXO" era)) - , Show (TxOut era) - , Show (Script era) - , Show (TxIn (EraCrypto era)) - ) => - Show (BabbageUtxoPredFailure era) - -deriving instance - ( Era era - , Eq (AlonzoUtxoPredFailure era) - , Eq (PredicateFailure (EraRule "UTXO" era)) - , Eq (TxOut era) - , Eq (Script era) - , Eq (TxIn (EraCrypto era)) - ) => - Eq (BabbageUtxoPredFailure era) - -instance - ( Era era - , NFData (Value era) - , NFData (TxOut era) - , NFData (PredicateFailure (EraRule "UTXOS" era)) - ) => - NFData (BabbageUtxoPredFailure era) - --- ======================================================= - --- | feesOK is a predicate with several parts. Some parts only apply in special circumstances. --- 1) The fee paid is >= the minimum fee --- 2) If the total ExUnits are 0 in both Memory and Steps, no further part needs to be checked. --- 3) The collateral consists only of VKey addresses --- 4) The collateral inputs do not contain any non-ADA part --- 5) The collateral is sufficient to cover the appropriate percentage of the --- fee marked in the transaction --- 6) The collateral is equivalent to total collateral asserted by the transaction --- 7) There is at least one collateral input --- --- feesOK can differ from Era to Era, as new notions of fees arise. This is the Babbage version --- See: Figure 2: Functions related to fees and collateral, in the Babbage specification --- In the spec feesOK is a boolean function. Because wee need to handle predicate failures --- in the implementaion, it is coded as a Test. Which is a validation. --- This version is generic in that it can be lifted to any PredicateFailure type that --- embeds BabbageUtxoPred era. This makes it possibly useful in future Eras. -feesOK :: - forall era rule. - ( EraUTxO era - , BabbageEraTxBody era - , AlonzoEraTxWits era - , InjectRuleFailure rule AlonzoUtxoPredFailure era - , InjectRuleFailure rule BabbageUtxoPredFailure era - ) => - PParams era -> - Tx era -> - UTxO era -> - Test (EraRuleFailure rule era) -feesOK pp tx u@(UTxO utxo) = - let txBody = tx ^. bodyTxL - collateral' = txBody ^. collateralInputsTxBodyL -- Inputs allocated to pay txfee - -- restrict Utxo to those inputs we use to pay fees. - utxoCollateral = eval (collateral' ◁ utxo) - theFee = txBody ^. feeTxBodyL -- Coin supplied to pay fees - minFee = getMinFeeTxUtxo pp tx u - in sequenceA_ - [ -- Part 1: minfee pp tx ≤ txfee txBody - failureUnless (minFee <= theFee) (injectFailure $ FeeTooSmallUTxO minFee theFee) - , -- Part 2: (txrdmrs tx ≠ ∅ ⇒ validateCollateral) - unless (nullRedeemers $ tx ^. witsTxL . rdmrsTxWitsL) $ - validateTotalCollateral pp txBody utxoCollateral - ] - --- | Test that inputs and refInpts are disjoint, in Conway and later Eras. -disjointRefInputs :: - forall era. - EraPParams era => - PParams era -> - Set (TxIn (EraCrypto era)) -> - Set (TxIn (EraCrypto era)) -> - Test (BabbageUtxoPredFailure era) -disjointRefInputs pp inputs refInputs = - when - (pvMajor (pp ^. ppProtocolVersionL) > eraProtVerHigh @(BabbageEra (EraCrypto era))) - (failureOnNonEmpty common BabbageNonDisjointRefInputs) - where - common = inputs `Set.intersection` refInputs - -validateTotalCollateral :: - forall era rule. - ( BabbageEraTxBody era - , InjectRuleFailure rule AlonzoUtxoPredFailure era - , InjectRuleFailure rule BabbageUtxoPredFailure era - ) => - PParams era -> - TxBody era -> - Map.Map (TxIn (EraCrypto era)) (TxOut era) -> - Test (EraRuleFailure rule era) -validateTotalCollateral pp txBody utxoCollateral = - sequenceA_ - [ -- Part 3: (∀(a,_,_) ∈ range (collateral txb ◁ utxo), a ∈ Addrvkey) - fromAlonzoValidation $ Alonzo.validateScriptsNotPaidUTxO utxoCollateral - , -- Part 4: isAdaOnly balance - fromAlonzoValidation $ - validateCollateralContainsNonADA txBody utxoCollateral - , -- Part 5: balance ≥ ⌈txfee txb ∗ (collateralPercent pp) / 100⌉ - fromAlonzoValidation $ Alonzo.validateInsufficientCollateral pp txBody bal - , -- Part 6: (txcoll tx ≠ ◇) ⇒ balance = txcoll tx - first (fmap injectFailure) $ validateCollateralEqBalance bal (txBody ^. totalCollateralTxBodyL) - , -- Part 7: collInputs tx ≠ ∅ - fromAlonzoValidation $ failureIf (null utxoCollateral) (NoCollateralInputs @era) - ] - where - bal = collAdaBalance txBody utxoCollateral - fromAlonzoValidation = first (fmap injectFailure) - --- | This validation produces the same failure as in Alonzo, but is slightly --- different then the corresponding one in Alonzo, since it is possible to add --- non-ada collateral, but only if the same amount of the same multi-asset is --- present in the collateral return output. --- --- > isAdaOnly balance -validateCollateralContainsNonADA :: - forall era. - BabbageEraTxBody era => - TxBody era -> - Map.Map (TxIn (EraCrypto era)) (TxOut era) -> - Test (AlonzoUtxoPredFailure era) -validateCollateralContainsNonADA txBody utxoCollateral = - failureUnless onlyAdaInCollateral $ CollateralContainsNonADA valueWithNonAda - where - onlyAdaInCollateral = - utxoCollateralAndReturnHaveOnlyAda || allNonAdaIsConsumedByReturn - -- When we do not have any non-ada TxOuts we can short-circuit the more expensive - -- validation of NonAda being fully consumed by the return output, which requires - -- computation of the full balance on the Value, not just the Coin. - utxoCollateralAndReturnHaveOnlyAda = - utxoCollateralHasOnlyAda && areAllAdaOnly (txBody ^. collateralReturnTxBodyL) - utxoCollateralHasOnlyAda = areAllAdaOnly utxoCollateral - -- Whenever return TxOut consumes all of the NonAda value then the total collateral - -- balance is considered valid. - allNonAdaIsConsumedByReturn = Val.isAdaOnly totalCollateralBalance - -- When reporting failure the NonAda value can be present in either: - -- - Only in collateral inputs. - -- - Only in return output, thus we report the return output value, rather than utxo. - -- - Both inputs and return address, but does not balance out. In which case - -- we report utxo balance - valueWithNonAda = - case txBody ^. collateralReturnTxBodyL of - SNothing -> collateralBalance - SJust retTxOut -> - if utxoCollateralHasOnlyAda - then retTxOut ^. valueTxOutL - else collateralBalance - -- This is the balance that is provided by the collateral inputs - collateralBalance = balance $ UTxO utxoCollateral - -- This is the total amount that will be spent as collateral. This is where we account - -- for the fact that we can remove Non-Ada assets from collateral inputs, by directing - -- them to the return TxOut. - totalCollateralBalance = case txBody ^. collateralReturnTxBodyL of - SNothing -> collateralBalance - SJust retTxOut -> collateralBalance <-> (retTxOut ^. valueTxOutL @era) - --- > (txcoll tx ≠ ◇) => balance == txcoll tx -validateCollateralEqBalance :: - DeltaCoin -> StrictMaybe Coin -> Validation (NonEmpty (BabbageUtxoPredFailure era)) () -validateCollateralEqBalance bal txcoll = - case txcoll of - SNothing -> pure () - SJust tc -> failureUnless (bal == toDeltaCoin tc) (IncorrectTotalCollateralField bal tc) - --- > getValue txout ≥ inject ( serSize txout ∗ coinsPerUTxOByte pp ) -validateOutputTooSmallUTxO :: - (EraTxOut era, Foldable f) => - PParams era -> - f (Sized (TxOut era)) -> - Test (BabbageUtxoPredFailure era) -validateOutputTooSmallUTxO pp outs = - failureUnless (null outputsTooSmall) $ BabbageOutputTooSmallUTxO outputsTooSmall - where - outs' = map (\out -> (sizedValue out, getMinCoinSizedTxOut pp out)) (toList outs) - outputsTooSmall = - filter - ( \(out, minSize) -> - let v = out ^. valueTxOutL - in -- pointwise is used because non-ada amounts must be >= 0 too - not $ - Val.pointwise - (>=) - v - (Val.inject minSize) - ) - outs' - --- | The UTxO transition rule for the Babbage eras. -utxoTransition :: - forall era. - ( EraUTxO era - , BabbageEraTxBody era - , AlonzoEraTxWits era - , Tx era ~ AlonzoTx era - , EraRule "UTXO" era ~ BabbageUTXO era - , InjectRuleFailure "UTXO" ShelleyUtxoPredFailure era - , InjectRuleFailure "UTXO" AllegraUtxoPredFailure era - , InjectRuleFailure "UTXO" AlonzoUtxoPredFailure era - , InjectRuleFailure "UTXO" BabbageUtxoPredFailure era - , -- In this function we we call the UTXOS rule, so we need some assumptions - Embed (EraRule "UTXOS" era) (BabbageUTXO era) - , Environment (EraRule "UTXOS" era) ~ UtxoEnv era - , State (EraRule "UTXOS" era) ~ UTxOState era - , Signal (EraRule "UTXOS" era) ~ Tx era - ) => - TransitionRule (EraRule "UTXO" era) -utxoTransition = do - TRC (Shelley.UtxoEnv slot pp certState, utxos, tx) <- judgmentContext - let utxo = utxosUtxo utxos - - {- txb := txbody tx -} - let txBody = body tx - allInputs = txBody ^. allInputsTxBodyF - refInputs :: Set (TxIn (EraCrypto era)) - refInputs = txBody ^. referenceInputsTxBodyL - inputs :: Set (TxIn (EraCrypto era)) - inputs = txBody ^. inputsTxBodyL - - {- inputs ∩ refInputs = ∅ -} - runTest $ disjointRefInputs pp inputs refInputs - - {- ininterval slot (txvld txb) -} - runTest $ Allegra.validateOutsideValidityIntervalUTxO slot txBody - - sysSt <- liftSTS $ asks systemStart - ei <- liftSTS $ asks epochInfo - - {- epochInfoSlotToUTCTime epochInfo systemTime i_f ≠ ◇ -} - runTest $ Alonzo.validateOutsideForecast ei slot sysSt tx - - {- txins txb ≠ ∅ -} - runTestOnSignal $ Shelley.validateInputSetEmptyUTxO txBody - - {- feesOK pp tx utxo -} - validate $ feesOK pp tx utxo -- Generalizes the fee to small from earlier Era's - - {- allInputs = spendInputs txb ∪ collInputs txb ∪ refInputs txb -} - {- (spendInputs txb ∪ collInputs txb ∪ refInputs txb) ⊆ dom utxo -} - runTest $ Shelley.validateBadInputsUTxO utxo allInputs - - {- consumed pp utxo txb = produced pp poolParams txb -} - runTest $ Shelley.validateValueNotConservedUTxO pp utxo certState txBody - - {- adaID ∉ supp mint tx - check not needed because mint field of type MultiAsset - cannot contain ada -} - - {- ∀ txout ∈ allOuts txb, getValue txout ≥ inject (serSize txout ∗ coinsPerUTxOByte pp) -} - let allSizedOutputs = txBody ^. allSizedOutputsTxBodyF - runTest $ validateOutputTooSmallUTxO pp allSizedOutputs - - let allOutputs = fmap sizedValue allSizedOutputs - {- ∀ txout ∈ allOuts txb, serSize (getValue txout) ≤ maxValSize pp -} - runTest $ Alonzo.validateOutputTooBigUTxO pp allOutputs - - {- ∀ ( _ ↦ (a,_)) ∈ allOuts txb, a ∈ Addrbootstrap → bootstrapAttrsSize a ≤ 64 -} - runTestOnSignal $ Shelley.validateOutputBootAddrAttrsTooBig allOutputs - - netId <- liftSTS $ asks networkId - - {- ∀(_ → (a, _)) ∈ allOuts txb, netId a = NetworkId -} - runTestOnSignal $ Shelley.validateWrongNetwork netId allOutputs - - {- ∀(a → ) ∈ txwdrls txb, netId a = NetworkId -} - runTestOnSignal $ Shelley.validateWrongNetworkWithdrawal netId txBody - - {- (txnetworkid txb = NetworkId) ∨ (txnetworkid txb = ◇) -} - runTestOnSignal $ Alonzo.validateWrongNetworkInTxBody netId txBody - - {- txsize tx ≤ maxTxSize pp -} - runTestOnSignal $ Shelley.validateMaxTxSizeUTxO pp tx - - {- totExunits tx ≤ maxTxExUnits pp -} - runTest $ Alonzo.validateExUnitsTooBigUTxO pp tx - - {- ‖collateral tx‖ ≤ maxCollInputs pp -} - runTest $ Alonzo.validateTooManyCollateralInputs pp txBody - - trans @(EraRule "UTXOS" era) =<< coerce <$> judgmentContext - --------------------------------------------------------------------------------- --- BabbageUTXO STS --------------------------------------------------------------------------------- - -instance - forall era. - ( EraTx era - , EraUTxO era - , BabbageEraTxBody era - , AlonzoEraTxWits era - , Tx era ~ AlonzoTx era - , EraRule "UTXO" era ~ BabbageUTXO era - , InjectRuleFailure "UTXO" ShelleyUtxoPredFailure era - , InjectRuleFailure "UTXO" AllegraUtxoPredFailure era - , InjectRuleFailure "UTXO" AlonzoUtxoPredFailure era - , InjectRuleFailure "UTXO" BabbageUtxoPredFailure era - , -- instructions for calling UTXOS from BabbageUTXO - Embed (EraRule "UTXOS" era) (BabbageUTXO era) - , Environment (EraRule "UTXOS" era) ~ UtxoEnv era - , State (EraRule "UTXOS" era) ~ UTxOState era - , Signal (EraRule "UTXOS" era) ~ Tx era - , PredicateFailure (EraRule "UTXO" era) ~ BabbageUtxoPredFailure era - ) => - STS (BabbageUTXO era) - where - type State (BabbageUTXO era) = UTxOState era - type Signal (BabbageUTXO era) = AlonzoTx era - type Environment (BabbageUTXO era) = UtxoEnv era - type BaseM (BabbageUTXO era) = ShelleyBase - type PredicateFailure (BabbageUTXO era) = BabbageUtxoPredFailure era - type Event (BabbageUTXO era) = AlonzoUtxoEvent era - - initialRules = [] - transitionRules = [utxoTransition @era] - -instance - ( Era era - , STS (BabbageUTXOS era) - , PredicateFailure (EraRule "UTXOS" era) ~ AlonzoUtxosPredFailure era - , Event (EraRule "UTXOS" era) ~ Event (BabbageUTXOS era) - ) => - Embed (BabbageUTXOS era) (BabbageUTXO era) - where - wrapFailed = AlonzoInBabbageUtxoPredFailure . UtxosFailure - wrapEvent = UtxosEvent - --- ============================================ --- CBOR for Predicate faiure type - -instance - ( Era era - , EncCBOR (TxOut era) - , EncCBOR (Value era) - , EncCBOR (PredicateFailure (EraRule "UTXOS" era)) - , EncCBOR (PredicateFailure (EraRule "UTXO" era)) - , EncCBOR (Script era) - , EncCBOR (TxIn (EraCrypto era)) - , Typeable (TxAuxData era) - ) => - EncCBOR (BabbageUtxoPredFailure era) - where - encCBOR = - encode . \case - AlonzoInBabbageUtxoPredFailure x -> Sum AlonzoInBabbageUtxoPredFailure 1 !> To x - IncorrectTotalCollateralField c1 c2 -> Sum IncorrectTotalCollateralField 2 !> To c1 !> To c2 - BabbageOutputTooSmallUTxO x -> Sum BabbageOutputTooSmallUTxO 3 !> To x - BabbageNonDisjointRefInputs x -> Sum BabbageNonDisjointRefInputs 4 !> To x - -instance - ( Era era - , DecCBOR (TxOut era) - , DecCBOR (Value era) - , DecCBOR (PredicateFailure (EraRule "UTXOS" era)) - , DecCBOR (PredicateFailure (EraRule "UTXO" era)) - , Typeable (Script era) - , Typeable (TxAuxData era) - ) => - DecCBOR (BabbageUtxoPredFailure era) - where - decCBOR = decode $ Summands "BabbageUtxoPred" $ \case - 1 -> SumD AlonzoInBabbageUtxoPredFailure SumD IncorrectTotalCollateralField SumD BabbageOutputTooSmallUTxO SumD BabbageNonDisjointRefInputs Invalid n - -deriving via - InspectHeapNamed "BabbageUtxoPred" (BabbageUtxoPredFailure era) - instance - NoThunks (BabbageUtxoPredFailure era) diff --git a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Utxos.hs b/eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Utxos.hs deleted file mode 100644 index e5a1f212c69..00000000000 --- a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Utxos.hs +++ /dev/null @@ -1,299 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Babbage.Rules.Utxos ( - BabbageUTXOS, - utxosTransition, - expectScriptsToPass, - babbageEvalScriptsTxInvalid, -) where - -import Cardano.Ledger.Alonzo.Plutus.Context (EraPlutusContext) -import Cardano.Ledger.Alonzo.Plutus.Evaluate ( - collectPlutusScriptsWithContext, - evalPlutusScripts, - ) -import Cardano.Ledger.Alonzo.Rules ( - AlonzoUtxosEvent (..), - AlonzoUtxosPredFailure (..), - TagMismatchDescription (..), - invalidBegin, - invalidEnd, - scriptFailureToFailureDescription, - validBegin, - validEnd, - when2Phase, - ) -import Cardano.Ledger.Alonzo.UTxO ( - AlonzoEraUTxO (..), - AlonzoScriptsNeeded, - ) -import Cardano.Ledger.Babbage.Collateral ( - collAdaBalance, - collOuts, - ) -import Cardano.Ledger.Babbage.Core -import Cardano.Ledger.Babbage.Era (BabbageEra, BabbageUTXOS) -import Cardano.Ledger.Babbage.Rules.Ppup () -import Cardano.Ledger.Babbage.Tx -import Cardano.Ledger.BaseTypes ( - ShelleyBase, - StrictMaybe, - epochInfo, - systemStart, - ) -import Cardano.Ledger.Binary (EncCBOR (..)) -import Cardano.Ledger.CertState (certDState, dsGenDelegs) -import Cardano.Ledger.Coin (Coin (..), DeltaCoin (..)) -import Cardano.Ledger.Plutus.Evaluate ( - ScriptFailure (..), - ScriptResult (..), - ) -import Cardano.Ledger.SafeHash (hashAnnotated) -import Cardano.Ledger.Shelley.LedgerState (UTxOState (..), updateStakeDistribution) -import Cardano.Ledger.Shelley.PParams (Update) -import Cardano.Ledger.Shelley.Rules ( - PpupEnv (..), - PpupEvent, - ShelleyPPUP, - ShelleyPpupPredFailure, - UtxoEnv (..), - updateUTxOState, - ) -import Cardano.Ledger.UTxO (EraUTxO (..), UTxO (..)) -import Control.Monad.Trans.Reader (asks) -import Control.State.Transition.Extended -import Data.List.NonEmpty (nonEmpty) -import qualified Data.Map.Strict as Map -import Data.MapExtras (extractKeys) -import Debug.Trace (traceEvent) -import Lens.Micro - -type instance EraRuleFailure "UTXOS" (BabbageEra c) = AlonzoUtxosPredFailure (BabbageEra c) -type instance EraRuleEvent "UTXOS" (BabbageEra c) = AlonzoUtxosEvent (BabbageEra c) - -instance InjectRuleFailure "UTXOS" AlonzoUtxosPredFailure (BabbageEra c) - -instance InjectRuleEvent "UTXOS" AlonzoUtxosEvent (BabbageEra c) - -instance InjectRuleFailure "UTXOS" ShelleyPpupPredFailure (BabbageEra c) where - injectFailure = UpdateFailure - --- ===================================================== - -instance - ( AlonzoEraTx era - , AlonzoEraPParams era - , ShelleyEraTxBody era - , BabbageEraTxBody era - , AlonzoEraUTxO era - , EraPlutusContext era - , ScriptsNeeded era ~ AlonzoScriptsNeeded era - , EraGov era - , GovState era ~ ShelleyGovState era - , Embed (EraRule "PPUP" era) (BabbageUTXOS era) - , Environment (EraRule "PPUP" era) ~ PpupEnv era - , Signal (EraRule "PPUP" era) ~ StrictMaybe (Update era) - , State (EraRule "PPUP" era) ~ ShelleyGovState era - , Signal (BabbageUTXOS era) ~ Tx era - , EncCBOR (EraRuleFailure "PPUP" era) - , Eq (EraRuleFailure "PPUP" era) - , Show (EraRuleFailure "PPUP" era) - , InjectRuleFailure "UTXOS" AlonzoUtxosPredFailure era - , InjectRuleEvent "UTXOS" AlonzoUtxosEvent era - , EraRule "UTXOS" era ~ BabbageUTXOS era - ) => - STS (BabbageUTXOS era) - where - type BaseM (BabbageUTXOS era) = ShelleyBase - type Environment (BabbageUTXOS era) = UtxoEnv era - type State (BabbageUTXOS era) = UTxOState era - type Signal (BabbageUTXOS era) = AlonzoTx era - type PredicateFailure (BabbageUTXOS era) = AlonzoUtxosPredFailure era - type Event (BabbageUTXOS era) = AlonzoUtxosEvent era - transitionRules = [utxosTransition] - -instance - ( Era era - , STS (ShelleyPPUP era) - , EraRuleFailure "PPUP" era ~ ShelleyPpupPredFailure era - , EraRuleEvent "PPUP" era ~ PpupEvent era - ) => - Embed (ShelleyPPUP era) (BabbageUTXOS era) - where - wrapFailed = UpdateFailure - wrapEvent = AlonzoPpupToUtxosEvent - -utxosTransition :: - forall era. - ( AlonzoEraTx era - , ShelleyEraTxBody era - , BabbageEraTxBody era - , AlonzoEraUTxO era - , ScriptsNeeded era ~ AlonzoScriptsNeeded era - , EraGov era - , GovState era ~ ShelleyGovState era - , Environment (EraRule "PPUP" era) ~ PpupEnv era - , Signal (EraRule "PPUP" era) ~ StrictMaybe (Update era) - , Embed (EraRule "PPUP" era) (BabbageUTXOS era) - , State (EraRule "PPUP" era) ~ ShelleyGovState era - , Signal (BabbageUTXOS era) ~ Tx era - , EncCBOR (EraRuleFailure "PPUP" era) - , Eq (EraRuleFailure "PPUP" era) - , Show (EraRuleFailure "PPUP" era) - , EraPlutusContext era - , EraRule "UTXOS" era ~ BabbageUTXOS era - , InjectRuleFailure "UTXOS" AlonzoUtxosPredFailure era - , InjectRuleEvent "UTXOS" AlonzoUtxosEvent era - ) => - TransitionRule (BabbageUTXOS era) -utxosTransition = - judgmentContext >>= \(TRC (_, _, tx)) -> do - case tx ^. isValidTxL of - IsValid True -> babbageEvalScriptsTxValid - IsValid False -> babbageEvalScriptsTxInvalid - --- =================================================================== - -expectScriptsToPass :: - forall era. - ( AlonzoEraTx era - , EraPlutusContext era - , AlonzoEraUTxO era - , ScriptsNeeded era ~ AlonzoScriptsNeeded era - , STS (EraRule "UTXOS" era) - , InjectRuleFailure "UTXOS" AlonzoUtxosPredFailure era - , BaseM (EraRule "UTXOS" era) ~ ShelleyBase - , InjectRuleEvent "UTXOS" AlonzoUtxosEvent era - ) => - PParams era -> - Tx era -> - UTxO era -> - Rule (EraRule "UTXOS" era) 'Transition () -expectScriptsToPass pp tx utxo = do - sysSt <- liftSTS $ asks systemStart - ei <- liftSTS $ asks epochInfo - {- sLst := collectTwoPhaseScriptInputs pp tx utxo -} - case collectPlutusScriptsWithContext ei sysSt pp tx utxo of - Right sLst -> do - {- isValid tx = evalScripts tx sLst = True -} - whenFailureFree $ - when2Phase $ case evalPlutusScripts tx sLst of - Fails _ fs -> - failBecause $ - injectFailure $ - ValidationTagMismatch - (tx ^. isValidTxL) - (FailedUnexpectedly (scriptFailureToFailureDescription <$> fs)) - Passes ps -> mapM_ (tellEvent . injectEvent . SuccessfulPlutusScriptsEvent) (nonEmpty ps) - Left info -> failBecause (injectFailure $ CollectErrors info) - -babbageEvalScriptsTxValid :: - forall era. - ( AlonzoEraTx era - , AlonzoEraUTxO era - , ShelleyEraTxBody era - , ScriptsNeeded era ~ AlonzoScriptsNeeded era - , STS (BabbageUTXOS era) - , Signal (BabbageUTXOS era) ~ Tx era - , Environment (EraRule "PPUP" era) ~ PpupEnv era - , Signal (EraRule "PPUP" era) ~ StrictMaybe (Update era) - , Embed (EraRule "PPUP" era) (BabbageUTXOS era) - , GovState era ~ ShelleyGovState era - , State (EraRule "PPUP" era) ~ ShelleyGovState era - , EraPlutusContext era - , InjectRuleFailure "UTXOS" AlonzoUtxosPredFailure era - , EraRule "UTXOS" era ~ BabbageUTXOS era - , InjectRuleEvent "UTXOS" AlonzoUtxosEvent era - ) => - TransitionRule (BabbageUTXOS era) -babbageEvalScriptsTxValid = do - TRC (UtxoEnv slot pp certState, utxos@(UTxOState utxo _ _ pup _ _), tx) <- - judgmentContext - let txBody = tx ^. bodyTxL - genDelegs = dsGenDelegs (certDState certState) - - -- We intentionally run the PPUP rule before evaluating any Plutus scripts. - -- We do not want to waste computation running plutus scripts if the - -- transaction will fail due to `PPUP` - ppup' <- - trans @(EraRule "PPUP" era) $ - TRC (PPUPEnv slot pp genDelegs, pup, txBody ^. updateTxBodyL) - - () <- pure $! traceEvent validBegin () - expectScriptsToPass pp tx utxo - () <- pure $! traceEvent validEnd () - - updateUTxOState - pp - utxos - txBody - certState - ppup' - (tellEvent . TotalDeposits (hashAnnotated txBody)) - (\a b -> tellEvent $ TxUTxODiff a b) - -babbageEvalScriptsTxInvalid :: - forall era. - ( AlonzoEraTx era - , BabbageEraTxBody era - , EraPlutusContext era - , AlonzoEraUTxO era - , ScriptsNeeded era ~ AlonzoScriptsNeeded era - , STS (EraRule "UTXOS" era) - , Environment (EraRule "UTXOS" era) ~ UtxoEnv era - , Signal (EraRule "UTXOS" era) ~ Tx era - , State (EraRule "UTXOS" era) ~ UTxOState era - , BaseM (EraRule "UTXOS" era) ~ ShelleyBase - , InjectRuleFailure "UTXOS" AlonzoUtxosPredFailure era - , InjectRuleEvent "UTXOS" AlonzoUtxosEvent era - ) => - TransitionRule (EraRule "UTXOS" era) -babbageEvalScriptsTxInvalid = do - TRC (UtxoEnv _ pp _, us@(UTxOState utxo _ fees _ _ _), tx) <- judgmentContext - {- txb := txbody tx -} - let txBody = tx ^. bodyTxL - sysSt <- liftSTS $ asks systemStart - ei <- liftSTS $ asks epochInfo - - () <- pure $! traceEvent invalidBegin () - - case collectPlutusScriptsWithContext ei sysSt pp tx utxo of - Right sLst -> - {- sLst := collectTwoPhaseScriptInputs pp tx utxo -} - {- isValid tx = evalScripts tx sLst = False -} - whenFailureFree $ - when2Phase $ case evalPlutusScripts tx sLst of - Passes _ -> - failBecause $ - injectFailure $ - ValidationTagMismatch (tx ^. isValidTxL) PassedUnexpectedly - Fails ps fs -> do - mapM_ (tellEvent . injectEvent @"UTXOS" . SuccessfulPlutusScriptsEvent @era) (nonEmpty ps) - tellEvent (injectEvent $ FailedPlutusScriptsEvent (scriptFailurePlutus <$> fs)) - Left info -> failBecause (injectFailure $ CollectErrors info) - - () <- pure $! traceEvent invalidEnd () - - {- utxoKeep = txBody ^. collateralInputsTxBodyL ⋪ utxo -} - {- utxoDel = txBody ^. collateralInputsTxBodyL ◁ utxo -} - let !(utxoKeep, utxoDel) = extractKeys (unUTxO utxo) (txBody ^. collateralInputsTxBodyL) - UTxO collouts = collOuts txBody - DeltaCoin collateralFees = collAdaBalance txBody utxoDel -- NEW to Babbage - pure $! - us {- (collInputs txb ⋪ utxo) ∪ collouts tx -} - { utxosUtxo = UTxO (Map.union utxoKeep collouts) -- NEW to Babbage - {- fees + collateralFees -} - , utxosFees = fees <> Coin collateralFees -- NEW to Babbage - , utxosStakeDistr = updateStakeDistribution pp (utxosStakeDistr us) (UTxO utxoDel) (UTxO collouts) - } diff --git a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Utxow.hs b/eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Utxow.hs deleted file mode 100644 index cd0a7210387..00000000000 --- a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Rules/Utxow.hs +++ /dev/null @@ -1,442 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Babbage.Rules.Utxow ( - BabbageUTXOW, - BabbageUtxowPredFailure (..), - babbageMissingScripts, - validateFailedBabbageScripts, - validateScriptsWellFormed, - babbageUtxowTransition, -) -where - -import Cardano.Crypto.DSIGN.Class (DSIGNAlgorithm (..), Signable) -import Cardano.Crypto.Hash.Class (Hash) -import Cardano.Ledger.Allegra.Rules (AllegraUtxoPredFailure) -import Cardano.Ledger.Alonzo.Rules ( - AlonzoUtxoPredFailure, - AlonzoUtxosPredFailure, - AlonzoUtxowEvent (WrappedShelleyEraEvent), - AlonzoUtxowPredFailure (..), - hasExactSetOfRedeemers, - missingRequiredDatums, - ppViewHashesMatch, - ) -import Cardano.Ledger.Alonzo.Rules as Alonzo (AlonzoUtxoEvent) -import Cardano.Ledger.Alonzo.Scripts (validScript) -import Cardano.Ledger.Alonzo.UTxO (AlonzoEraUTxO, AlonzoScriptsNeeded) -import Cardano.Ledger.Babbage.Core -import Cardano.Ledger.Babbage.Era (BabbageEra, BabbageUTXOW) -import Cardano.Ledger.Babbage.Rules.Utxo (BabbageUTXO, BabbageUtxoPredFailure (..)) -import Cardano.Ledger.Babbage.UTxO (getReferenceScripts) -import Cardano.Ledger.BaseTypes (ShelleyBase, quorum, strictMaybeToMaybe) -import Cardano.Ledger.Binary (DecCBOR (..), EncCBOR (..)) -import Cardano.Ledger.Binary.Coders ( - Decode (From, Invalid, SumD, Summands), - Encode (Sum, To), - decode, - encode, - (!>), - ( - Show (BabbageUtxowPredFailure era) - -deriving instance - ( AlonzoEraScript era - , Eq (ShelleyUtxowPredFailure era) - , Eq (PredicateFailure (EraRule "UTXO" era)) - , Eq (PredicateFailure (EraRule "UTXOS" era)) - , Eq (TxOut era) - , Eq (TxCert era) - ) => - Eq (BabbageUtxowPredFailure era) - -instance - ( AlonzoEraScript era - , EncCBOR (TxOut era) - , EncCBOR (TxCert era) - , EncCBOR (Value era) - , EncCBOR (PredicateFailure (EraRule "UTXOS" era)) - , EncCBOR (PredicateFailure (EraRule "UTXO" era)) - , Typeable (TxAuxData era) - ) => - EncCBOR (BabbageUtxowPredFailure era) - where - encCBOR = - encode . \case - AlonzoInBabbageUtxowPredFailure x -> Sum AlonzoInBabbageUtxowPredFailure 1 !> To x - UtxoFailure x -> Sum UtxoFailure 2 !> To x - MalformedScriptWitnesses x -> Sum MalformedScriptWitnesses 3 !> To x - MalformedReferenceScripts x -> Sum MalformedReferenceScripts 4 !> To x - -instance - ( AlonzoEraScript era - , DecCBOR (TxOut era) - , DecCBOR (TxCert era) - , DecCBOR (Value era) - , DecCBOR (PredicateFailure (EraRule "UTXOS" era)) - , DecCBOR (PredicateFailure (EraRule "UTXO" era)) - , Typeable (TxAuxData era) - ) => - DecCBOR (BabbageUtxowPredFailure era) - where - decCBOR = decode $ Summands "BabbageUtxowPred" $ \case - 1 -> SumD AlonzoInBabbageUtxowPredFailure SumD UtxoFailure SumD MalformedScriptWitnesses SumD MalformedReferenceScripts Invalid n - -deriving via - InspectHeapNamed "BabbageUtxowPred" (BabbageUtxowPredFailure era) - instance - NoThunks (BabbageUtxowPredFailure era) - -instance - ( AlonzoEraScript era - , NFData (TxCert era) - , NFData (PredicateFailure (EraRule "UTXO" era)) - , NFData (VerKeyDSIGN (DSIGN (EraCrypto era))) - ) => - NFData (BabbageUtxowPredFailure era) - --- ================================================== --- Reuseable tests first used in the Babbage Era - --- Int the Babbage Era with reference scripts, the needed --- scripts only has to be a subset of the txscripts. -{- { s | (_,s) ∈ scriptsNeeded utxo tx} - dom(refScripts tx utxo) = dom(txscripts txw) -} -{- sNeeded := scriptsNeeded utxo tx -} -{- sReceived := Map.keysSet (tx ^. witsTxL . scriptTxWitsL) -} -babbageMissingScripts :: - forall era. - PParams era -> - Set (ScriptHash (EraCrypto era)) -> - Set (ScriptHash (EraCrypto era)) -> - Set (ScriptHash (EraCrypto era)) -> - Test (ShelleyUtxowPredFailure era) -babbageMissingScripts _ sNeeded sRefs sReceived = - sequenceA_ - [ failureUnless (Set.null extra) $ Shelley.ExtraneousScriptWitnessesUTXOW extra - , failureUnless (Set.null missing) $ Shelley.MissingScriptWitnessesUTXOW missing - ] - where - neededNonRefs = sNeeded `Set.difference` sRefs - missing = neededNonRefs `Set.difference` sReceived - extra = sReceived `Set.difference` neededNonRefs - -{- ∀ s ∈ (txscripts txw utxo ∩ Scriptnative), validateScript s tx -} -validateFailedBabbageScripts :: - EraTx era => - Tx era -> - ScriptsProvided era -> - Set (ScriptHash (EraCrypto era)) -> - Test (ShelleyUtxowPredFailure era) -validateFailedBabbageScripts tx (ScriptsProvided scriptsProvided) neededHashes = - let failedScripts = - Map.filterWithKey - ( \scriptHash script -> - case getNativeScript script of - Nothing -> False - Just nativeScript -> - let scriptIsNeeded = scriptHash `Set.member` neededHashes - scriptDoesNotValidate = not (validateNativeScript tx nativeScript) - in scriptIsNeeded && scriptDoesNotValidate - ) - scriptsProvided - in failureUnless - (Map.null failedScripts) - (Shelley.ScriptWitnessNotValidatingUTXOW $ Map.keysSet failedScripts) - -{- ∀x ∈ range(txdats txw) ∪ range(txwitscripts txw) ∪ ⋃ ( , ,d,s)∈txouts tx{s, d}, - x ∈ Script ∪ Datum ⇒ isWellFormed x --} -validateScriptsWellFormed :: - forall era. - ( EraTx era - , BabbageEraTxBody era - ) => - PParams era -> - Tx era -> - Test (BabbageUtxowPredFailure era) -validateScriptsWellFormed pp tx = - sequenceA_ - [ failureUnless (Map.null invalidScriptWits) $ - MalformedScriptWitnesses (Map.keysSet invalidScriptWits) - , failureUnless (null invalidRefScripts) $ MalformedReferenceScripts invalidRefScriptHashes - ] - where - scriptWits = tx ^. witsTxL . scriptTxWitsL - invalidScriptWits = Map.filter (not . validScript (pp ^. ppProtocolVersionL)) scriptWits - - txBody = tx ^. bodyTxL - normalOuts = toList $ txBody ^. outputsTxBodyL - returnOut = txBody ^. collateralReturnTxBodyL - outs = case returnOut of - SNothing -> normalOuts - SJust rOut -> rOut : normalOuts - rScripts = mapMaybe (strictMaybeToMaybe . view referenceScriptTxOutL) outs - invalidRefScripts = filter (not . validScript (pp ^. ppProtocolVersionL)) rScripts - invalidRefScriptHashes = Set.fromList $ map (hashScript @era) invalidRefScripts - --- ============================================================== --- Here we define the transtion function, using reusable tests. --- The tests are very generic and reusable, but the transition --- function is very specific to the Babbage Era. - -babbageUtxowMirTransition :: - forall era. - ( AlonzoEraTx era - , ShelleyEraTxBody era - , STS (EraRule "UTXOW" era) - , InjectRuleFailure "UTXOW" ShelleyUtxowPredFailure era - , BaseM (EraRule "UTXOW" era) ~ ShelleyBase - , Environment (EraRule "UTXOW" era) ~ UtxoEnv era - , Signal (EraRule "UTXOW" era) ~ Tx era - ) => - Rule (EraRule "UTXOW" era) 'Transition () -babbageUtxowMirTransition = do - TRC (UtxoEnv _ _ certState, _, tx) <- judgmentContext - -- check genesis keys signatures for instantaneous rewards certificates - {- genSig := { hashKey gkey | gkey ∈ dom(genDelegs)} ∩ witsKeyHashes -} - {- { c ∈ txcerts txb ∩ TxCert_mir} ≠ ∅ ⇒ |genSig| ≥ Quorum -} - let genDelegs = dsGenDelegs (certDState certState) - witsKeyHashes = witsFromTxWitnesses tx - coreNodeQuorum <- liftSTS $ asks quorum - runTest $ - Shelley.validateMIRInsufficientGenesisSigs genDelegs coreNodeQuorum witsKeyHashes tx - --- | UTXOW transition rule that is used in Babbage and Conway era. -babbageUtxowTransition :: - forall era. - ( AlonzoEraTx era - , AlonzoEraUTxO era - , ScriptsNeeded era ~ AlonzoScriptsNeeded era - , BabbageEraTxBody era - , Signable (DSIGN (EraCrypto era)) (Hash (HASH (EraCrypto era)) EraIndependentTxBody) - , Environment (EraRule "UTXOW" era) ~ UtxoEnv era - , Signal (EraRule "UTXOW" era) ~ Tx era - , State (EraRule "UTXOW" era) ~ UTxOState era - , InjectRuleFailure "UTXOW" ShelleyUtxowPredFailure era - , InjectRuleFailure "UTXOW" AlonzoUtxowPredFailure era - , InjectRuleFailure "UTXOW" BabbageUtxowPredFailure era - , -- Allow UTXOW to call UTXO - Embed (EraRule "UTXO" era) (EraRule "UTXOW" era) - , Environment (EraRule "UTXO" era) ~ UtxoEnv era - , Signal (EraRule "UTXO" era) ~ Tx era - , State (EraRule "UTXO" era) ~ UTxOState era - ) => - TransitionRule (EraRule "UTXOW" era) -babbageUtxowTransition = do - TRC (utxoEnv@(UtxoEnv _ pp certState), u, tx) <- judgmentContext - - {- (utxo,_,_,_ ) := utxoSt -} - {- txb := txbody tx -} - {- txw := txwits tx -} - {- witsKeyHashes := { hashKey vk | vk ∈ dom(txwitsVKey txw) } -} - let utxo = utxosUtxo u - txBody = tx ^. bodyTxL - witsKeyHashes = witsFromTxWitnesses tx - inputs = (txBody ^. referenceInputsTxBodyL) `Set.union` (txBody ^. inputsTxBodyL) - - -- check scripts - {- neededHashes := {h | ( , h) ∈ scriptsNeeded utxo txb} -} - {- neededHashes − dom(refScripts tx utxo) = dom(txwitscripts txw) -} - let scriptsNeeded = getScriptsNeeded utxo txBody - scriptsProvided = getScriptsProvided utxo tx - scriptHashesNeeded = getScriptsHashesNeeded scriptsNeeded - {- ∀s ∈ (txscripts txw utxo neededHashes ) ∩ Scriptph1 , validateScript s tx -} - -- CHANGED In BABBAGE txscripts depends on UTxO - runTest $ validateFailedBabbageScripts tx scriptsProvided scriptHashesNeeded - - {- neededHashes − dom(refScripts tx utxo) = dom(txwitscripts txw) -} - let sReceived = Map.keysSet $ tx ^. witsTxL . scriptTxWitsL - sRefs = Map.keysSet $ getReferenceScripts utxo inputs - runTest $ babbageMissingScripts pp scriptHashesNeeded sRefs sReceived - - {- inputHashes ⊆ dom(txdats txw) ⊆ allowed -} - runTest $ missingRequiredDatums utxo tx - - {- dom (txrdmrs tx) = { rdptr txb sp | (sp, h) ∈ scriptsNeeded utxo tx, - h ↦ s ∈ txscripts txw, s ∈ Scriptph2} -} - runTest $ hasExactSetOfRedeemers tx scriptsProvided scriptsNeeded - - -- check VKey witnesses - -- let txbodyHash = hashAnnotated @(Crypto era) txbody - {- ∀ (vk ↦ σ) ∈ (txwitsVKey txw), V_vk⟦ txbodyHash ⟧_σ -} - runTestOnSignal $ Shelley.validateVerifiedWits tx - - {- witsVKeyNeeded utxo tx genDelegs ⊆ witsKeyHashes -} - runTest $ validateNeededWitnesses witsKeyHashes certState utxo txBody - - -- check metadata hash - {- adh := txADhash txb; ad := auxiliaryData tx -} - {- ((adh = ◇) ∧ (ad= ◇)) ∨ (adh = hashAD ad) -} - runTestOnSignal $ Shelley.validateMetadata pp tx - - {- ∀x ∈ range(txdats txw) ∪ range(txwitscripts txw) ∪ (⋃ ( , ,d,s) ∈ txouts tx {s, d}), - x ∈ Script ∪ Datum ⇒ isWellFormed x - -} - runTest $ validateScriptsWellFormed pp tx - -- Note that Datum validation is done during deserialization, - -- as given by the decoders in the Plutus libraray - - {- languages tx utxo ⊆ dom(costmdls pp) -} - -- This check is checked when building the TxInfo using collectTwoPhaseScriptInputs, if it fails - -- It raises 'NoCostModel' a construcotr of the predicate failure 'CollectError'. - - {- scriptIntegrityHash txb = hashScriptIntegrity pp (languages txw) (txrdmrs txw) -} - runTest $ ppViewHashesMatch tx pp scriptsProvided scriptHashesNeeded - - trans @(EraRule "UTXO" era) $ TRC (utxoEnv, u, tx) - --- ================================ - -instance - forall era. - ( AlonzoEraTx era - , AlonzoEraUTxO era - , ShelleyEraTxBody era - , ScriptsNeeded era ~ AlonzoScriptsNeeded era - , BabbageEraTxBody era - , Signable (DSIGN (EraCrypto era)) (Hash (HASH (EraCrypto era)) EraIndependentTxBody) - , EraRule "UTXOW" era ~ BabbageUTXOW era - , InjectRuleFailure "UTXOW" ShelleyUtxowPredFailure era - , InjectRuleFailure "UTXOW" AlonzoUtxowPredFailure era - , InjectRuleFailure "UTXOW" BabbageUtxowPredFailure era - , -- Allow UTXOW to call UTXO - Embed (EraRule "UTXO" era) (BabbageUTXOW era) - , Environment (EraRule "UTXO" era) ~ UtxoEnv era - , State (EraRule "UTXO" era) ~ UTxOState era - , Signal (EraRule "UTXO" era) ~ Tx era - , Eq (PredicateFailure (EraRule "UTXOS" era)) - , Show (PredicateFailure (EraRule "UTXOS" era)) - ) => - STS (BabbageUTXOW era) - where - type State (BabbageUTXOW era) = UTxOState era - type Signal (BabbageUTXOW era) = Tx era - type Environment (BabbageUTXOW era) = UtxoEnv era - type BaseM (BabbageUTXOW era) = ShelleyBase - type PredicateFailure (BabbageUTXOW era) = BabbageUtxowPredFailure era - type Event (BabbageUTXOW era) = AlonzoUtxowEvent era - transitionRules = [babbageUtxowMirTransition @era >> babbageUtxowTransition @era] - initialRules = [] - -instance - ( Era era - , STS (BabbageUTXO era) - , PredicateFailure (EraRule "UTXO" era) ~ BabbageUtxoPredFailure era - , Event (EraRule "UTXO" era) ~ AlonzoUtxoEvent era - , BaseM (BabbageUTXOW era) ~ ShelleyBase - , PredicateFailure (BabbageUTXOW era) ~ BabbageUtxowPredFailure era - , Event (BabbageUTXOW era) ~ AlonzoUtxowEvent era - ) => - Embed (BabbageUTXO era) (BabbageUTXOW era) - where - wrapFailed = UtxoFailure - wrapEvent = WrappedShelleyEraEvent . UtxoEvent diff --git a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Scripts.hs b/eras/babbage/impl/src/Cardano/Ledger/Babbage/Scripts.hs deleted file mode 100644 index c538b1e408f..00000000000 --- a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Scripts.hs +++ /dev/null @@ -1,112 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# OPTIONS_GHC -Wno-orphans #-} - --- | Figure 3: Functions related to scripts --- Babbage Specification -module Cardano.Ledger.Babbage.Scripts ( - AlonzoScript (..), - isPlutusScript, - PlutusScript (..), -) -where - -import Cardano.Ledger.Allegra.Scripts (Timelock, translateTimelock) -import Cardano.Ledger.Alonzo.Core -import Cardano.Ledger.Alonzo.Scripts ( - AlonzoPlutusPurpose (..), - AlonzoScript (..), - PlutusScript (..), - alonzoScriptPrefixTag, - isPlutusScript, - ) -import Cardano.Ledger.Babbage.Era -import Cardano.Ledger.Babbage.TxCert () -import Cardano.Ledger.Crypto -import Cardano.Ledger.Plutus.Language -import Cardano.Ledger.SafeHash (SafeToHash (..)) -import Control.DeepSeq (NFData (..), rwhnf) -import GHC.Generics -import NoThunks.Class (NoThunks (..)) - -instance Crypto c => EraScript (BabbageEra c) where - type Script (BabbageEra c) = AlonzoScript (BabbageEra c) - type NativeScript (BabbageEra c) = Timelock (BabbageEra c) - - upgradeScript = \case - TimelockScript ts -> TimelockScript $ translateTimelock ts - PlutusScript (AlonzoPlutusV1 ps) -> PlutusScript $ BabbagePlutusV1 ps - - scriptPrefixTag = alonzoScriptPrefixTag - - getNativeScript = \case - TimelockScript ts -> Just ts - _ -> Nothing - - fromNativeScript = TimelockScript - -instance Crypto c => AlonzoEraScript (BabbageEra c) where - data PlutusScript (BabbageEra c) - = BabbagePlutusV1 !(Plutus 'PlutusV1) - | BabbagePlutusV2 !(Plutus 'PlutusV2) - deriving (Eq, Ord, Show, Generic) - type PlutusPurpose f (BabbageEra c) = AlonzoPlutusPurpose f (BabbageEra c) - - eraMaxLanguage = PlutusV2 - - mkPlutusScript plutus = - case plutusSLanguage plutus of - SPlutusV1 -> Just $ BabbagePlutusV1 plutus - SPlutusV2 -> Just $ BabbagePlutusV2 plutus - _ -> Nothing - - withPlutusScript (BabbagePlutusV1 plutus) f = f plutus - withPlutusScript (BabbagePlutusV2 plutus) f = f plutus - - hoistPlutusPurpose f = \case - AlonzoSpending x -> AlonzoSpending $ f x - AlonzoMinting x -> AlonzoMinting $ f x - AlonzoCertifying x -> AlonzoCertifying $ f x - AlonzoRewarding x -> AlonzoRewarding $ f x - - mkSpendingPurpose = AlonzoSpending - - toSpendingPurpose (AlonzoSpending i) = Just i - toSpendingPurpose _ = Nothing - - mkMintingPurpose = AlonzoMinting - - toMintingPurpose (AlonzoMinting i) = Just i - toMintingPurpose _ = Nothing - - mkCertifyingPurpose = AlonzoCertifying - - toCertifyingPurpose (AlonzoCertifying i) = Just i - toCertifyingPurpose _ = Nothing - - mkRewardingPurpose = AlonzoRewarding - - toRewardingPurpose (AlonzoRewarding i) = Just i - toRewardingPurpose _ = Nothing - - upgradePlutusPurposeAsIx = \case - AlonzoMinting (AsIx ix) -> AlonzoMinting (AsIx ix) - AlonzoSpending (AsIx ix) -> AlonzoSpending (AsIx ix) - AlonzoRewarding (AsIx ix) -> AlonzoRewarding (AsIx ix) - AlonzoCertifying (AsIx ix) -> AlonzoCertifying (AsIx ix) - -instance NFData (PlutusScript (BabbageEra c)) where - rnf = rwhnf -instance NoThunks (PlutusScript (BabbageEra c)) -instance Crypto c => SafeToHash (PlutusScript (BabbageEra c)) where - originalBytes ps = withPlutusScript ps originalBytes diff --git a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Transition.hs b/eras/babbage/impl/src/Cardano/Ledger/Babbage/Transition.hs deleted file mode 100644 index 834e367c2f1..00000000000 --- a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Transition.hs +++ /dev/null @@ -1,31 +0,0 @@ -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Babbage.Transition (TransitionConfig (..)) where - -import Cardano.Ledger.Alonzo -import Cardano.Ledger.Alonzo.Transition -import Cardano.Ledger.Babbage.Era -import Cardano.Ledger.Babbage.Translation () -import Cardano.Ledger.Crypto -import Cardano.Ledger.Shelley.Transition -import Data.Aeson (FromJSON (..), ToJSON (..)) -import Lens.Micro -import NoThunks.Class (NoThunks (..)) - -instance Crypto c => EraTransition (BabbageEra c) where - newtype TransitionConfig (BabbageEra c) = BabbageTransitionConfig - { btcAlonzoTransitionConfig :: TransitionConfig (AlonzoEra c) - } - deriving (Show, Eq, NoThunks, ToJSON, FromJSON) - - mkTransitionConfig () = BabbageTransitionConfig - - injectIntoTestState = registerInitialFundsThenStaking - - tcPreviousEraConfigL = - lens btcAlonzoTransitionConfig (\btc pc -> btc {btcAlonzoTransitionConfig = pc}) - - tcTranslationContextL = lens (const ()) (const . id) diff --git a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Translation.hs b/eras/babbage/impl/src/Cardano/Ledger/Babbage/Translation.hs deleted file mode 100644 index 4973530a053..00000000000 --- a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Translation.hs +++ /dev/null @@ -1,172 +0,0 @@ -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeSynonymInstances #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Babbage.Translation where - -import Cardano.Ledger.Alonzo (AlonzoEra) -import qualified Cardano.Ledger.Alonzo.Tx as Alonzo -import Cardano.Ledger.Babbage.Core hiding (Tx) -import Cardano.Ledger.Babbage.Era (BabbageEra) -import Cardano.Ledger.Babbage.PParams () -import Cardano.Ledger.Babbage.Tx (AlonzoTx (..)) -import Cardano.Ledger.BaseTypes (StrictMaybe (..)) -import Cardano.Ledger.Binary (DecoderError) -import Cardano.Ledger.CertState (CommitteeState (..)) -import qualified Cardano.Ledger.Core as Core (Tx) -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Shelley.LedgerState ( - CertState (..), - DState (..), - EpochState (..), - LedgerState (..), - NewEpochState (..), - PState (..), - UTxOState (..), - VState (..), - ) -import Cardano.Ledger.Shelley.PParams (ProposedPPUpdates (..)) -import Cardano.Ledger.UTxO (UTxO (..)) -import qualified Data.Map.Strict as Map -import Lens.Micro - --------------------------------------------------------------------------------- --- Translation from Alonzo to Babbage --- --- The instances below are needed by the consensus layer. Do not remove any of --- them without coordinating with consensus. --- --- Please add auxiliary instances and other declarations at the bottom of this --- module, not in the list below so that it remains clear which instances the --- consensus layer needs. --- --- WARNING: when a translation instance currently uses the default --- 'TranslationError', i.e., 'Void', it means the consensus layer relies on it --- being total. Do not change it! --------------------------------------------------------------------------------- - -type instance TranslationContext (BabbageEra c) = () - -instance - Crypto c => - TranslateEra (BabbageEra c) NewEpochState - where - translateEra ctxt nes = - pure $ - NewEpochState - { nesEL = nesEL nes - , nesBprev = nesBprev nes - , nesBcur = nesBcur nes - , nesEs = translateEra' ctxt $ nesEs nes - , nesRu = nesRu nes - , nesPd = nesPd nes - , stashedAVVMAddresses = () - } - -newtype Tx era = Tx {unTx :: Core.Tx era} - -instance Crypto c => TranslateEra (BabbageEra c) Tx where - type TranslationError (BabbageEra c) Tx = DecoderError - translateEra _ctxt (Tx tx) = do - -- Note that this does not preserve the hidden bytes field of the transaction. - -- This is under the premise that this is irrelevant for TxInBlocks, which are - -- not transmitted as contiguous chunks. - txBody <- translateEraThroughCBOR "TxBody" $ tx ^. bodyTxL - txWits <- translateEraThroughCBOR "TxWitness" $ tx ^. witsTxL - auxData <- case tx ^. auxDataTxL of - SNothing -> pure SNothing - SJust auxData -> SJust <$> translateEraThroughCBOR "AuxData" auxData - let validating = tx ^. Alonzo.isValidTxL - pure $ Tx $ AlonzoTx txBody txWits validating auxData - --------------------------------------------------------------------------------- --- Auxiliary instances and functions --------------------------------------------------------------------------------- - -instance Crypto c => TranslateEra (BabbageEra c) PParams where - translateEra _ = pure . upgradePParams () - -instance Crypto c => TranslateEra (BabbageEra c) EpochState where - translateEra ctxt es = - pure - EpochState - { esAccountState = esAccountState es - , esSnapshots = esSnapshots es - , esLState = translateEra' ctxt $ esLState es - , esNonMyopic = esNonMyopic es - } - -instance Crypto c => TranslateEra (BabbageEra c) DState where - translateEra _ DState {..} = pure DState {..} - -instance Crypto c => TranslateEra (BabbageEra c) CommitteeState where - translateEra _ CommitteeState {..} = pure CommitteeState {..} - -instance Crypto c => TranslateEra (BabbageEra c) VState where - translateEra ctx VState {..} = do - committeeState <- translateEra ctx vsCommitteeState - pure VState {vsCommitteeState = committeeState, ..} - -instance Crypto c => TranslateEra (BabbageEra c) PState where - translateEra _ PState {..} = pure PState {..} - -instance Crypto c => TranslateEra (BabbageEra c) CertState where - translateEra ctxt ls = - pure - CertState - { certDState = translateEra' ctxt $ certDState ls - , certPState = translateEra' ctxt $ certPState ls - , certVState = translateEra' ctxt $ certVState ls - } - -instance Crypto c => TranslateEra (BabbageEra c) LedgerState where - translateEra ctxt ls = - pure - LedgerState - { lsUTxOState = translateEra' ctxt $ lsUTxOState ls - , lsCertState = translateEra' ctxt $ lsCertState ls - } - -instance Crypto c => TranslateEra (BabbageEra c) UTxOState where - translateEra ctxt us = - pure - UTxOState - { utxosUtxo = translateEra' ctxt $ utxosUtxo us - , utxosDeposited = utxosDeposited us - , utxosFees = utxosFees us - , utxosGovState = translateEra' ctxt $ utxosGovState us - , utxosStakeDistr = utxosStakeDistr us - , utxosDonation = utxosDonation us - } - -instance Crypto c => TranslateEra (BabbageEra c) UTxO where - translateEra _ctxt utxo = - pure $ UTxO $ translateTxOut `Map.map` unUTxO utxo - -instance Crypto c => TranslateEra (BabbageEra c) ShelleyGovState where - translateEra ctxt ps = - pure - ShelleyGovState - { sgsCurProposals = translateEra' ctxt $ sgsCurProposals ps - , sgsFutureProposals = translateEra' ctxt $ sgsFutureProposals ps - , sgsCurPParams = translateEra' ctxt $ sgsCurPParams ps - , sgsPrevPParams = translateEra' ctxt $ sgsPrevPParams ps - } - -instance Crypto c => TranslateEra (BabbageEra c) ProposedPPUpdates where - translateEra _ctxt (ProposedPPUpdates ppup) = - pure $ ProposedPPUpdates $ fmap (upgradePParamsUpdate ()) ppup - -translateTxOut :: - Crypto c => - TxOut (AlonzoEra c) -> - TxOut (BabbageEra c) -translateTxOut = upgradeTxOut -{-# DEPRECATED translateTxOut "Use `upgradeTxOut` instead" #-} diff --git a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Tx.hs b/eras/babbage/impl/src/Cardano/Ledger/Babbage/Tx.hs deleted file mode 100644 index 03180d62eeb..00000000000 --- a/eras/babbage/impl/src/Cardano/Ledger/Babbage/Tx.hs +++ /dev/null @@ -1,76 +0,0 @@ -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Babbage.Tx ( - AlonzoTx (..), - BabbageTxBody (..), - module X, -) -where - -import Cardano.Ledger.Allegra.Tx (validateTimelock) -import Cardano.Ledger.Alonzo.Tx as X -import Cardano.Ledger.Alonzo.TxSeq ( - AlonzoTxSeq (AlonzoTxSeq, txSeqTxns), - hashAlonzoTxSeq, - ) -import Cardano.Ledger.Babbage.Era (BabbageEra) -import Cardano.Ledger.Babbage.TxAuxData () -import Cardano.Ledger.Babbage.TxBody ( - BabbageTxBody (..), - BabbageTxBodyUpgradeError, - ) -import Cardano.Ledger.Babbage.TxWits () -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto -import Control.Arrow (left) - -newtype BabbageTxUpgradeError - = BTUEBodyUpgradeError BabbageTxBodyUpgradeError - deriving (Eq, Show) - -instance Crypto c => EraTx (BabbageEra c) where - {-# SPECIALIZE instance EraTx (BabbageEra StandardCrypto) #-} - - type Tx (BabbageEra c) = AlonzoTx (BabbageEra c) - type TxUpgradeError (BabbageEra c) = BabbageTxUpgradeError - - mkBasicTx = mkBasicAlonzoTx - - bodyTxL = bodyAlonzoTxL - {-# INLINE bodyTxL #-} - - witsTxL = witsAlonzoTxL - {-# INLINE witsTxL #-} - - auxDataTxL = auxDataAlonzoTxL - {-# INLINE auxDataTxL #-} - - sizeTxF = sizeAlonzoTxF - {-# INLINE sizeTxF #-} - - validateNativeScript = validateTimelock - {-# INLINE validateNativeScript #-} - - getMinFeeTx pp tx _ = alonzoMinFeeTx pp tx - - upgradeTx (AlonzoTx b w valid aux) = - AlonzoTx - <$> left BTUEBodyUpgradeError (upgradeTxBody b) - <*> pure (upgradeTxWits w) - <*> pure valid - <*> pure (fmap upgradeTxAuxData aux) - -instance Crypto c => AlonzoEraTx (BabbageEra c) where - {-# SPECIALIZE instance AlonzoEraTx (BabbageEra StandardCrypto) #-} - - isValidTxL = isValidAlonzoTxL - {-# INLINE isValidTxL #-} - -instance Crypto c => EraSegWits (BabbageEra c) where - type TxSeq (BabbageEra c) = AlonzoTxSeq (BabbageEra c) - fromTxSeq = txSeqTxns - toTxSeq = AlonzoTxSeq - hashTxSeq = hashAlonzoTxSeq - numSegComponents = 4 diff --git a/eras/babbage/impl/src/Cardano/Ledger/Babbage/TxAuxData.hs b/eras/babbage/impl/src/Cardano/Ledger/Babbage/TxAuxData.hs deleted file mode 100644 index e4d184b39e2..00000000000 --- a/eras/babbage/impl/src/Cardano/Ledger/Babbage/TxAuxData.hs +++ /dev/null @@ -1,24 +0,0 @@ -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Babbage.TxAuxData () where - -import Cardano.Ledger.Alonzo.TxAuxData ( - AlonzoTxAuxData, - hashAlonzoTxAuxData, - translateAlonzoTxAuxData, - validateAlonzoTxAuxData, - ) -import Cardano.Ledger.Babbage.Era -import Cardano.Ledger.Babbage.Scripts () -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto - -instance Crypto c => EraTxAuxData (BabbageEra c) where - type TxAuxData (BabbageEra c) = AlonzoTxAuxData (BabbageEra c) - - upgradeTxAuxData = translateAlonzoTxAuxData - - hashTxAuxData = hashAlonzoTxAuxData - - validateTxAuxData = validateAlonzoTxAuxData diff --git a/eras/babbage/impl/src/Cardano/Ledger/Babbage/TxBody.hs b/eras/babbage/impl/src/Cardano/Ledger/Babbage/TxBody.hs deleted file mode 100644 index 8d1e51e31af..00000000000 --- a/eras/babbage/impl/src/Cardano/Ledger/Babbage/TxBody.hs +++ /dev/null @@ -1,865 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} -{-# LANGUAGE ViewPatterns #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Babbage.TxBody ( - BabbageTxOut ( - BabbageTxOut, - TxOutCompact, - TxOutCompactDH, - TxOutCompactDatum, - TxOutCompactRefScript - ), - allSizedOutputsBabbageTxBodyF, - babbageMinUTxOValue, - BabbageTxBody ( - BabbageTxBody, - btbInputs, - btbCollateral, - btbReferenceInputs, - btbOutputs, - btbCollateralReturn, - btbTotalCollateral, - btbCerts, - btbWithdrawals, - btbTxFee, - btbValidityInterval, - btbUpdate, - btbReqSignerHashes, - btbMint, - btbScriptIntegrityHash, - btbAuxDataHash, - btbTxNetworkId - ), - BabbageTxBodyRaw, - BabbageTxBodyUpgradeError (..), - babbageAllInputsTxBodyF, - babbageSpendableInputsTxBodyF, - BabbageEraTxBody (..), - spendInputs', - collateralInputs', - referenceInputs', - outputs', - collateralReturn', - totalCollateral', - certs', - withdrawals', - txfee', - vldt', - update', - reqSignerHashes', - mint', - scriptIntegrityHash', - adHash', - txnetworkid', - getEitherAddrBabbageTxOut, - EraIndependentScriptIntegrity, - ScriptIntegrityHash, - txOutData, - txOutDataHash, - txOutScript, -) where - -import Cardano.Ledger.Alonzo (AlonzoEra) -import Cardano.Ledger.Alonzo.Core -import Cardano.Ledger.Alonzo.PParams (AlonzoPParams (appExtraEntropy), appD) -import Cardano.Ledger.Alonzo.TxAuxData (AuxiliaryDataHash (..)) -import Cardano.Ledger.Alonzo.TxBody (alonzoRedeemerPointer, alonzoRedeemerPointerInverse) -import Cardano.Ledger.Babbage.Era (BabbageEra) -import Cardano.Ledger.Babbage.PParams (upgradeBabbagePParams) -import Cardano.Ledger.Babbage.Scripts () -import Cardano.Ledger.Babbage.TxCert () -import Cardano.Ledger.Babbage.TxOut hiding (TxOut) -import Cardano.Ledger.BaseTypes ( - Network (..), - StrictMaybe (..), - isSJust, - ) -import Cardano.Ledger.Binary ( - Annotator (..), - DecCBOR (..), - EncCBOR (..), - Sized (..), - ToCBOR (..), - mkSized, - ) -import Cardano.Ledger.Binary.Coders -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Crypto -import Cardano.Ledger.Keys (KeyHash (..), KeyRole (..)) -import Cardano.Ledger.Mary.Value (MaryValue (MaryValue), MultiAsset, PolicyID (..), policies) -import Cardano.Ledger.MemoBytes ( - EqRaw, - Mem, - MemoBytes, - MemoHashIndex, - Memoized (..), - eqRaw, - getMemoRawType, - getMemoSafeHash, - lensMemoRawType, - mkMemoized, - zipMemoRawType, - ) -import Cardano.Ledger.SafeHash (HashAnnotated (..), SafeToHash) -import Cardano.Ledger.Shelley.PParams (ProposedPPUpdates (ProposedPPUpdates), Update (..)) -import Cardano.Ledger.Shelley.TxBody (getShelleyGenesisKeyHashCountTxBody) -import Cardano.Ledger.TxIn (TxIn (..)) -import Control.Arrow (left) -import Control.DeepSeq (NFData) -import Control.Monad (when) -import Data.Foldable (foldl') -import Data.Sequence.Strict (StrictSeq, (|>)) -import qualified Data.Sequence.Strict as StrictSeq -import Data.Set (Set) -import qualified Data.Set as Set -import Data.Typeable (Typeable) -import Data.Void (absurd) -import GHC.Generics (Generic) -import Lens.Micro -import NoThunks.Class (NoThunks) - -class (AlonzoEraTxBody era, BabbageEraTxOut era) => BabbageEraTxBody era where - sizedOutputsTxBodyL :: Lens' (TxBody era) (StrictSeq (Sized (TxOut era))) - - referenceInputsTxBodyL :: Lens' (TxBody era) (Set (TxIn (EraCrypto era))) - - totalCollateralTxBodyL :: Lens' (TxBody era) (StrictMaybe Coin) - - collateralReturnTxBodyL :: Lens' (TxBody era) (StrictMaybe (TxOut era)) - - sizedCollateralReturnTxBodyL :: Lens' (TxBody era) (StrictMaybe (Sized (TxOut era))) - - allSizedOutputsTxBodyF :: SimpleGetter (TxBody era) (StrictSeq (Sized (TxOut era))) - --- ====================================== - -data BabbageTxBodyRaw era = BabbageTxBodyRaw - { btbrSpendInputs :: !(Set (TxIn (EraCrypto era))) - , btbrCollateralInputs :: !(Set (TxIn (EraCrypto era))) - , btbrReferenceInputs :: !(Set (TxIn (EraCrypto era))) - , btbrOutputs :: !(StrictSeq (Sized (TxOut era))) - , btbrCollateralReturn :: !(StrictMaybe (Sized (TxOut era))) - , btbrTotalCollateral :: !(StrictMaybe Coin) - , btbrCerts :: !(StrictSeq (TxCert era)) - , btbrWithdrawals :: !(Withdrawals (EraCrypto era)) - , btbrTxFee :: !Coin - , btbrValidityInterval :: !ValidityInterval - , btbrUpdate :: !(StrictMaybe (Update era)) - , btbrReqSignerHashes :: !(Set (KeyHash 'Witness (EraCrypto era))) - , btbrMint :: !(MultiAsset (EraCrypto era)) - , -- The spec makes it clear that the mint field is a - -- Cardano.Ledger.Mary.Value.MaryValue, not a Value. - -- Operations on the TxBody in the BabbageEra depend upon this. - -- We now store only the MultiAsset part of a Mary.Value. - btbrScriptIntegrityHash :: !(StrictMaybe (ScriptIntegrityHash (EraCrypto era))) - , btbrAuxDataHash :: !(StrictMaybe (AuxiliaryDataHash (EraCrypto era))) - , btbrTxNetworkId :: !(StrictMaybe Network) - } - deriving (Generic, Typeable) - --- We override this instance because the 'Sized' types also reference their --- serialisation and as such cannot be compared directly. An alternative would --- be to derive `EqRaw` for `Sized`. -instance - (Era era, Eq (TxOut era), Eq (TxCert era), Eq (PParamsUpdate era)) => - EqRaw (BabbageTxBodyRaw era) - where - eqRaw a b = - btbrSpendInputs a == btbrSpendInputs b - && btbrCollateralInputs a == btbrCollateralInputs b - && btbrReferenceInputs a == btbrReferenceInputs b - && btbrOutputs a `eqSeqUnsized` btbrOutputs b - && btbrCollateralReturn a `eqMbUnsized` btbrCollateralReturn b - && btbrTotalCollateral a == btbrTotalCollateral b - && btbrCerts a == btbrCerts b - && btbrWithdrawals a == btbrWithdrawals b - && btbrTxFee a == btbrTxFee b - && btbrValidityInterval a == btbrValidityInterval b - && btbrUpdate a == btbrUpdate b - && btbrReqSignerHashes a == btbrReqSignerHashes b - && btbrMint a == btbrMint b - && btbrScriptIntegrityHash a == btbrScriptIntegrityHash b - && btbrAuxDataHash a == btbrAuxDataHash b - && btbrTxNetworkId a == btbrTxNetworkId b - where - eqMbUnsized x y = case (x, y) of - (SJust a', SJust b') -> a' `eqUnsized` b' - (SNothing, SNothing) -> True - _ -> False - eqSeqUnsized x y = - length x == length y - && foldl' (\acc (x', y') -> acc && x' `eqUnsized` y') True (StrictSeq.zip x y) - eqUnsized x y = sizedValue x == sizedValue y - -type instance MemoHashIndex BabbageTxBodyRaw = EraIndependentTxBody - -deriving instance - (Era era, Eq (TxOut era), Eq (TxCert era), Eq (PParamsUpdate era)) => - Eq (BabbageTxBodyRaw era) - -instance - (Era era, NoThunks (TxOut era), NoThunks (TxCert era), NoThunks (PParamsUpdate era)) => - NoThunks (BabbageTxBodyRaw era) - -instance - (Era era, NFData (TxOut era), NFData (TxCert era), NFData (PParamsUpdate era)) => - NFData (BabbageTxBodyRaw era) - -deriving instance - (Era era, Show (TxOut era), Show (TxCert era), Show (PParamsUpdate era)) => - Show (BabbageTxBodyRaw era) - -newtype BabbageTxBody era = TxBodyConstr (MemoBytes BabbageTxBodyRaw era) - deriving newtype (Generic, SafeToHash, ToCBOR) - -instance Memoized BabbageTxBody where - type RawType BabbageTxBody = BabbageTxBodyRaw - -deriving newtype instance - (Era era, NFData (TxOut era), NFData (TxCert era), NFData (PParamsUpdate era)) => - NFData (BabbageTxBody era) - -inputsBabbageTxBodyL :: - BabbageEraTxBody era => Lens' (BabbageTxBody era) (Set (TxIn (EraCrypto era))) -inputsBabbageTxBodyL = - lensMemoRawType btbrSpendInputs $ \txBodyRaw inputs -> txBodyRaw {btbrSpendInputs = inputs} -{-# INLINEABLE inputsBabbageTxBodyL #-} - -outputsBabbageTxBodyL :: - forall era. BabbageEraTxBody era => Lens' (BabbageTxBody era) (StrictSeq (TxOut era)) -outputsBabbageTxBodyL = - lensMemoRawType (fmap sizedValue . btbrOutputs) $ - \txBodyRaw outputs -> txBodyRaw {btbrOutputs = mkSized (eraProtVerLow @era) <$> outputs} -{-# INLINEABLE outputsBabbageTxBodyL #-} - -feeBabbageTxBodyL :: BabbageEraTxBody era => Lens' (BabbageTxBody era) Coin -feeBabbageTxBodyL = - lensMemoRawType btbrTxFee $ \txBodyRaw fee -> txBodyRaw {btbrTxFee = fee} -{-# INLINEABLE feeBabbageTxBodyL #-} - -auxDataHashBabbageTxBodyL :: - BabbageEraTxBody era => Lens' (BabbageTxBody era) (StrictMaybe (AuxiliaryDataHash (EraCrypto era))) -auxDataHashBabbageTxBodyL = - lensMemoRawType btbrAuxDataHash $ - \txBodyRaw auxDataHash -> txBodyRaw {btbrAuxDataHash = auxDataHash} -{-# INLINEABLE auxDataHashBabbageTxBodyL #-} - -babbageSpendableInputsTxBodyF :: - BabbageEraTxBody era => SimpleGetter (TxBody era) (Set (TxIn (EraCrypto era))) -babbageSpendableInputsTxBodyF = - to $ \txBody -> - (txBody ^. inputsTxBodyL) - `Set.union` (txBody ^. collateralInputsTxBodyL) -{-# INLINEABLE babbageSpendableInputsTxBodyF #-} - -babbageAllInputsTxBodyF :: - BabbageEraTxBody era => SimpleGetter (TxBody era) (Set (TxIn (EraCrypto era))) -babbageAllInputsTxBodyF = - to $ \txBody -> - (txBody ^. inputsTxBodyL) - `Set.union` (txBody ^. collateralInputsTxBodyL) - `Set.union` (txBody ^. referenceInputsTxBodyL) -{-# INLINEABLE babbageAllInputsTxBodyF #-} - -mintedBabbageTxBodyF :: SimpleGetter (BabbageTxBody era) (Set (PolicyID (EraCrypto era))) -mintedBabbageTxBodyF = to (policies . btbrMint . getMemoRawType) -{-# INLINEABLE mintedBabbageTxBodyF #-} - -withdrawalsBabbbageTxBodyL :: - BabbageEraTxBody era => - Lens' (BabbageTxBody era) (Withdrawals (EraCrypto era)) -withdrawalsBabbbageTxBodyL = - lensMemoRawType btbrWithdrawals $ - \txBodyRaw withdrawals -> txBodyRaw {btbrWithdrawals = withdrawals} -{-# INLINEABLE withdrawalsBabbbageTxBodyL #-} - -updateBabbageTxBodyL :: - BabbageEraTxBody era => Lens' (BabbageTxBody era) (StrictMaybe (Update era)) -updateBabbageTxBodyL = - lensMemoRawType btbrUpdate $ \txBodyRaw update -> txBodyRaw {btbrUpdate = update} -{-# INLINEABLE updateBabbageTxBodyL #-} - -certsBabbageTxBodyL :: - BabbageEraTxBody era => Lens' (BabbageTxBody era) (StrictSeq (TxCert era)) -certsBabbageTxBodyL = - lensMemoRawType btbrCerts $ \txBodyRaw certs -> txBodyRaw {btbrCerts = certs} -{-# INLINEABLE certsBabbageTxBodyL #-} - -vldtBabbageTxBodyL :: BabbageEraTxBody era => Lens' (BabbageTxBody era) ValidityInterval -vldtBabbageTxBodyL = - lensMemoRawType btbrValidityInterval $ \txBodyRaw vldt -> txBodyRaw {btbrValidityInterval = vldt} -{-# INLINEABLE vldtBabbageTxBodyL #-} - -mintBabbageTxBodyL :: - BabbageEraTxBody era => Lens' (BabbageTxBody era) (MultiAsset (EraCrypto era)) -mintBabbageTxBodyL = - lensMemoRawType btbrMint $ \txBodyRaw mint -> txBodyRaw {btbrMint = mint} -{-# INLINEABLE mintBabbageTxBodyL #-} - -mintValueBabbageTxBodyF :: - (BabbageEraTxBody era, Value era ~ MaryValue (EraCrypto era)) => - SimpleGetter (BabbageTxBody era) (Value era) -mintValueBabbageTxBodyF = mintBabbageTxBodyL . to (MaryValue mempty) -{-# INLINEABLE mintValueBabbageTxBodyF #-} - -collateralInputsBabbageTxBodyL :: - BabbageEraTxBody era => Lens' (BabbageTxBody era) (Set (TxIn (EraCrypto era))) -collateralInputsBabbageTxBodyL = - lensMemoRawType btbrCollateralInputs $ - \txBodyRaw collateral -> txBodyRaw {btbrCollateralInputs = collateral} -{-# INLINEABLE collateralInputsBabbageTxBodyL #-} - -reqSignerHashesBabbageTxBodyL :: - BabbageEraTxBody era => Lens' (BabbageTxBody era) (Set (KeyHash 'Witness (EraCrypto era))) -reqSignerHashesBabbageTxBodyL = - lensMemoRawType btbrReqSignerHashes $ - \txBodyRaw reqSignerHashes -> txBodyRaw {btbrReqSignerHashes = reqSignerHashes} -{-# INLINEABLE reqSignerHashesBabbageTxBodyL #-} - -scriptIntegrityHashBabbageTxBodyL :: - BabbageEraTxBody era => - Lens' (BabbageTxBody era) (StrictMaybe (ScriptIntegrityHash (EraCrypto era))) -scriptIntegrityHashBabbageTxBodyL = - lensMemoRawType btbrScriptIntegrityHash $ - \txBodyRaw scriptIntegrityHash -> txBodyRaw {btbrScriptIntegrityHash = scriptIntegrityHash} -{-# INLINEABLE scriptIntegrityHashBabbageTxBodyL #-} - -networkIdBabbageTxBodyL :: BabbageEraTxBody era => Lens' (BabbageTxBody era) (StrictMaybe Network) -networkIdBabbageTxBodyL = - lensMemoRawType btbrTxNetworkId $ \txBodyRaw networkId -> txBodyRaw {btbrTxNetworkId = networkId} -{-# INLINEABLE networkIdBabbageTxBodyL #-} - -sizedOutputsBabbageTxBodyL :: - BabbageEraTxBody era => - Lens' (BabbageTxBody era) (StrictSeq (Sized (TxOut era))) -sizedOutputsBabbageTxBodyL = - lensMemoRawType btbrOutputs $ \txBodyRaw outputs -> txBodyRaw {btbrOutputs = outputs} -{-# INLINEABLE sizedOutputsBabbageTxBodyL #-} - -referenceInputsBabbageTxBodyL :: - BabbageEraTxBody era => - Lens' (BabbageTxBody era) (Set (TxIn (EraCrypto era))) -referenceInputsBabbageTxBodyL = - lensMemoRawType btbrReferenceInputs $ - \txBodyRaw reference -> txBodyRaw {btbrReferenceInputs = reference} -{-# INLINEABLE referenceInputsBabbageTxBodyL #-} - -totalCollateralBabbageTxBodyL :: - BabbageEraTxBody era => Lens' (BabbageTxBody era) (StrictMaybe Coin) -totalCollateralBabbageTxBodyL = - lensMemoRawType btbrTotalCollateral $ - \txBodyRaw totalCollateral -> txBodyRaw {btbrTotalCollateral = totalCollateral} -{-# INLINEABLE totalCollateralBabbageTxBodyL #-} - -collateralReturnBabbageTxBodyL :: - forall era. - BabbageEraTxBody era => - Lens' (BabbageTxBody era) (StrictMaybe (TxOut era)) -collateralReturnBabbageTxBodyL = - lensMemoRawType (fmap sizedValue . btbrCollateralReturn) $ - \txBodyRaw collateralReturn -> - txBodyRaw {btbrCollateralReturn = mkSized (eraProtVerLow @era) <$> collateralReturn} -{-# INLINEABLE collateralReturnBabbageTxBodyL #-} - -sizedCollateralReturnBabbageTxBodyL :: - BabbageEraTxBody era => - Lens' (BabbageTxBody era) (StrictMaybe (Sized (TxOut era))) -sizedCollateralReturnBabbageTxBodyL = - lensMemoRawType btbrCollateralReturn $ - \txBodyRaw collateralReturn -> txBodyRaw {btbrCollateralReturn = collateralReturn} -{-# INLINEABLE sizedCollateralReturnBabbageTxBodyL #-} - -allSizedOutputsBabbageTxBodyF :: - BabbageEraTxBody era => - SimpleGetter (TxBody era) (StrictSeq (Sized (TxOut era))) -allSizedOutputsBabbageTxBodyF = - to $ \txBody -> - let txOuts = txBody ^. sizedOutputsTxBodyL - in case txBody ^. sizedCollateralReturnTxBodyL of - SNothing -> txOuts - SJust collTxOut -> txOuts |> collTxOut -{-# INLINEABLE allSizedOutputsBabbageTxBodyF #-} - -data BabbageTxBodyUpgradeError - = -- | The update attempts to update the decentralistion parameter, which is - -- dropped in Babbage. - BTBUEUpdatesD - | -- | The update attempts to update the extra entropy, which is dropped in - -- Babbage. - BTBUEUpdatesExtraEntropy - deriving (Eq, Show) - -instance Crypto c => EraTxBody (BabbageEra c) where - {-# SPECIALIZE instance EraTxBody (BabbageEra StandardCrypto) #-} - - type TxBody (BabbageEra c) = BabbageTxBody (BabbageEra c) - type TxBodyUpgradeError (BabbageEra c) = BabbageTxBodyUpgradeError - - mkBasicTxBody = mkMemoized basicBabbageTxBodyRaw - - inputsTxBodyL = inputsBabbageTxBodyL - {-# INLINE inputsTxBodyL #-} - - outputsTxBodyL = outputsBabbageTxBodyL - {-# INLINE outputsTxBodyL #-} - - feeTxBodyL = feeBabbageTxBodyL - {-# INLINE feeTxBodyL #-} - - auxDataHashTxBodyL = auxDataHashBabbageTxBodyL - {-# INLINE auxDataHashTxBodyL #-} - - spendableInputsTxBodyF = babbageSpendableInputsTxBodyF - {-# INLINE spendableInputsTxBodyF #-} - - allInputsTxBodyF = babbageAllInputsTxBodyF - {-# INLINE allInputsTxBodyF #-} - - withdrawalsTxBodyL = withdrawalsBabbbageTxBodyL - {-# INLINE withdrawalsTxBodyL #-} - - certsTxBodyL = certsBabbageTxBodyL - {-# INLINE certsTxBodyL #-} - - getGenesisKeyHashCountTxBody = getShelleyGenesisKeyHashCountTxBody - - upgradeTxBody txBody = do - certs <- - traverse - (left absurd . upgradeTxCert) - (txBody ^. certsTxBodyL) - updates <- traverse upgradeUpdate (txBody ^. updateTxBodyL) - pure $ - BabbageTxBody - { btbInputs = txBody ^. inputsTxBodyL - , btbOutputs = - mkSized (eraProtVerLow @(BabbageEra c)) . upgradeTxOut <$> (txBody ^. outputsTxBodyL) - , btbCerts = certs - , btbWithdrawals = txBody ^. withdrawalsTxBodyL - , btbTxFee = txBody ^. feeTxBodyL - , btbValidityInterval = txBody ^. vldtTxBodyL - , btbUpdate = updates - , btbAuxDataHash = txBody ^. auxDataHashTxBodyL - , btbMint = txBody ^. mintTxBodyL - , btbCollateral = txBody ^. collateralInputsTxBodyL - , btbReqSignerHashes = txBody ^. reqSignerHashesTxBodyL - , btbScriptIntegrityHash = txBody ^. scriptIntegrityHashTxBodyL - , btbTxNetworkId = txBody ^. networkIdTxBodyL - , btbReferenceInputs = mempty - , btbCollateralReturn = SNothing - , btbTotalCollateral = SNothing - } - where - upgradeUpdate :: - Update (AlonzoEra c) -> - Either BabbageTxBodyUpgradeError (Update (BabbageEra c)) - upgradeUpdate (Update pp epoch) = - Update <$> upgradeProposedPPUpdates pp <*> pure epoch - - -- Note that here we use 'upgradeBabbagePParams False' in order to - -- preserve 'CoinsPerUTxOWord', in spite of the value now being - -- semantically incorrect. Anything else will result in an invalid - -- transaction. - upgradeProposedPPUpdates :: - ProposedPPUpdates (AlonzoEra c) -> - Either BabbageTxBodyUpgradeError (ProposedPPUpdates (BabbageEra c)) - upgradeProposedPPUpdates (ProposedPPUpdates m) = - ProposedPPUpdates - <$> traverse - ( \(PParamsUpdate pphkd) -> do - when (isSJust $ appD pphkd) $ - Left BTBUEUpdatesD - when (isSJust $ appExtraEntropy pphkd) $ - Left BTBUEUpdatesExtraEntropy - pure . PParamsUpdate $ upgradeBabbagePParams False pphkd - ) - m - -instance Crypto c => ShelleyEraTxBody (BabbageEra c) where - {-# SPECIALIZE instance ShelleyEraTxBody (BabbageEra StandardCrypto) #-} - - ttlTxBodyL = notSupportedInThisEraL - {-# INLINE ttlTxBodyL #-} - - updateTxBodyL = updateBabbageTxBodyL - {-# INLINE updateTxBodyL #-} - -instance Crypto c => AllegraEraTxBody (BabbageEra c) where - {-# SPECIALIZE instance AllegraEraTxBody (BabbageEra StandardCrypto) #-} - - vldtTxBodyL = vldtBabbageTxBodyL - {-# INLINE vldtTxBodyL #-} - -instance Crypto c => MaryEraTxBody (BabbageEra c) where - {-# SPECIALIZE instance MaryEraTxBody (BabbageEra StandardCrypto) #-} - - mintTxBodyL = mintBabbageTxBodyL - {-# INLINE mintTxBodyL #-} - - mintValueTxBodyF = mintValueBabbageTxBodyF - {-# INLINE mintValueTxBodyF #-} - - mintedTxBodyF = mintedBabbageTxBodyF - {-# INLINE mintedTxBodyF #-} - -instance Crypto c => AlonzoEraTxBody (BabbageEra c) where - {-# SPECIALIZE instance AlonzoEraTxBody (BabbageEra StandardCrypto) #-} - - collateralInputsTxBodyL = collateralInputsBabbageTxBodyL - {-# INLINE collateralInputsTxBodyL #-} - - reqSignerHashesTxBodyL = reqSignerHashesBabbageTxBodyL - {-# INLINE reqSignerHashesTxBodyL #-} - - scriptIntegrityHashTxBodyL = scriptIntegrityHashBabbageTxBodyL - {-# INLINE scriptIntegrityHashTxBodyL #-} - - networkIdTxBodyL = networkIdBabbageTxBodyL - {-# INLINE networkIdTxBodyL #-} - - redeemerPointer = alonzoRedeemerPointer - - redeemerPointerInverse = alonzoRedeemerPointerInverse - -instance Crypto c => BabbageEraTxBody (BabbageEra c) where - {-# SPECIALIZE instance BabbageEraTxBody (BabbageEra StandardCrypto) #-} - - sizedOutputsTxBodyL = sizedOutputsBabbageTxBodyL - {-# INLINE sizedOutputsTxBodyL #-} - - referenceInputsTxBodyL = referenceInputsBabbageTxBodyL - {-# INLINE referenceInputsTxBodyL #-} - - totalCollateralTxBodyL = totalCollateralBabbageTxBodyL - {-# INLINE totalCollateralTxBodyL #-} - - collateralReturnTxBodyL = collateralReturnBabbageTxBodyL - {-# INLINE collateralReturnTxBodyL #-} - - sizedCollateralReturnTxBodyL = sizedCollateralReturnBabbageTxBodyL - {-# INLINE sizedCollateralReturnTxBodyL #-} - - allSizedOutputsTxBodyF = allSizedOutputsBabbageTxBodyF - {-# INLINE allSizedOutputsTxBodyF #-} - -instance - (Era era, Eq (PParamsUpdate era), Eq (TxOut era), Eq (TxCert era)) => - EqRaw (BabbageTxBody era) - where - eqRaw = zipMemoRawType eqRaw - -deriving newtype instance - (Era era, Eq (TxOut era), Eq (TxCert era), Eq (PParamsUpdate era)) => - Eq (BabbageTxBody era) - -deriving instance - (Era era, NoThunks (TxOut era), NoThunks (TxCert era), NoThunks (PParamsUpdate era)) => - NoThunks (BabbageTxBody era) - -deriving instance - (Era era, Show (TxOut era), Show (TxCert era), Show (PParamsUpdate era)) => - Show (BabbageTxBody era) - -deriving via - (Mem BabbageTxBodyRaw era) - instance - (Era era, DecCBOR (TxOut era), DecCBOR (TxCert era), DecCBOR (PParamsUpdate era)) => - DecCBOR (Annotator (BabbageTxBody era)) - -instance - (Era era, DecCBOR (TxOut era), DecCBOR (TxCert era), DecCBOR (PParamsUpdate era)) => - DecCBOR (Annotator (BabbageTxBodyRaw era)) - where - decCBOR = pure <$> decCBOR - -pattern BabbageTxBody :: - BabbageEraTxBody era => - Set (TxIn (EraCrypto era)) -> - Set (TxIn (EraCrypto era)) -> - Set (TxIn (EraCrypto era)) -> - StrictSeq (Sized (TxOut era)) -> - StrictMaybe (Sized (TxOut era)) -> - StrictMaybe Coin -> - StrictSeq (TxCert era) -> - Withdrawals (EraCrypto era) -> - Coin -> - ValidityInterval -> - StrictMaybe (Update era) -> - Set (KeyHash 'Witness (EraCrypto era)) -> - MultiAsset (EraCrypto era) -> - StrictMaybe (ScriptIntegrityHash (EraCrypto era)) -> - StrictMaybe (AuxiliaryDataHash (EraCrypto era)) -> - StrictMaybe Network -> - BabbageTxBody era -pattern BabbageTxBody - { btbInputs - , btbCollateral - , btbReferenceInputs - , btbOutputs - , btbCollateralReturn - , btbTotalCollateral - , btbCerts - , btbWithdrawals - , btbTxFee - , btbValidityInterval - , btbUpdate - , btbReqSignerHashes - , btbMint - , btbScriptIntegrityHash - , btbAuxDataHash - , btbTxNetworkId - } <- - ( getMemoRawType -> - BabbageTxBodyRaw - { btbrSpendInputs = btbInputs - , btbrCollateralInputs = btbCollateral - , btbrReferenceInputs = btbReferenceInputs - , btbrOutputs = btbOutputs - , btbrCollateralReturn = btbCollateralReturn - , btbrTotalCollateral = btbTotalCollateral - , btbrCerts = btbCerts - , btbrWithdrawals = btbWithdrawals - , btbrTxFee = btbTxFee - , btbrValidityInterval = btbValidityInterval - , btbrUpdate = btbUpdate - , btbrReqSignerHashes = btbReqSignerHashes - , btbrMint = btbMint - , btbrScriptIntegrityHash = btbScriptIntegrityHash - , btbrAuxDataHash = btbAuxDataHash - , btbrTxNetworkId = btbTxNetworkId - } - ) - where - BabbageTxBody - inputs - collateral - referenceInputs - outputs - collateralReturn - totalCollateral - certs - withdrawals - txFee - validityInterval - update - reqSignerHashes - mint - scriptIntegrityHash - auxDataHash - txNetworkId = - mkMemoized $ - BabbageTxBodyRaw - { btbrSpendInputs = inputs - , btbrCollateralInputs = collateral - , btbrReferenceInputs = referenceInputs - , btbrOutputs = outputs - , btbrCollateralReturn = collateralReturn - , btbrTotalCollateral = totalCollateral - , btbrCerts = certs - , btbrWithdrawals = withdrawals - , btbrTxFee = txFee - , btbrValidityInterval = validityInterval - , btbrUpdate = update - , btbrReqSignerHashes = reqSignerHashes - , btbrMint = mint - , btbrScriptIntegrityHash = scriptIntegrityHash - , btbrAuxDataHash = auxDataHash - , btbrTxNetworkId = txNetworkId - } - -{-# COMPLETE BabbageTxBody #-} - -instance c ~ EraCrypto era => HashAnnotated (BabbageTxBody era) EraIndependentTxBody c where - hashAnnotated = getMemoSafeHash - --- ============================================================================== --- We define these accessor functions manually, because if we define them using --- the record syntax in the TxBody pattern, they inherit the (BabbageBody era) --- constraint as a precondition. This is unnecessary, as one can see below --- they need not be constrained at all. This should be fixed in the GHC compiler. - -spendInputs' :: BabbageTxBody era -> Set (TxIn (EraCrypto era)) -collateralInputs' :: BabbageTxBody era -> Set (TxIn (EraCrypto era)) -referenceInputs' :: BabbageTxBody era -> Set (TxIn (EraCrypto era)) -outputs' :: BabbageTxBody era -> StrictSeq (TxOut era) -collateralReturn' :: BabbageTxBody era -> StrictMaybe (TxOut era) -totalCollateral' :: BabbageTxBody era -> StrictMaybe Coin -certs' :: BabbageTxBody era -> StrictSeq (TxCert era) -txfee' :: BabbageTxBody era -> Coin -withdrawals' :: BabbageTxBody era -> Withdrawals (EraCrypto era) -vldt' :: BabbageTxBody era -> ValidityInterval -update' :: BabbageTxBody era -> StrictMaybe (Update era) -reqSignerHashes' :: BabbageTxBody era -> Set (KeyHash 'Witness (EraCrypto era)) -adHash' :: BabbageTxBody era -> StrictMaybe (AuxiliaryDataHash (EraCrypto era)) -mint' :: BabbageTxBody era -> MultiAsset (EraCrypto era) -scriptIntegrityHash' :: BabbageTxBody era -> StrictMaybe (ScriptIntegrityHash (EraCrypto era)) -spendInputs' = btbrSpendInputs . getMemoRawType - -txnetworkid' :: BabbageTxBody era -> StrictMaybe Network - -collateralInputs' = btbrCollateralInputs . getMemoRawType - -referenceInputs' = btbrReferenceInputs . getMemoRawType - -outputs' = fmap sizedValue . btbrOutputs . getMemoRawType - -collateralReturn' = fmap sizedValue . btbrCollateralReturn . getMemoRawType - -totalCollateral' = btbrTotalCollateral . getMemoRawType - -certs' = btbrCerts . getMemoRawType - -withdrawals' = btbrWithdrawals . getMemoRawType - -txfee' = btbrTxFee . getMemoRawType - -vldt' = btbrValidityInterval . getMemoRawType - -update' = btbrUpdate . getMemoRawType - -reqSignerHashes' = btbrReqSignerHashes . getMemoRawType - -adHash' = btbrAuxDataHash . getMemoRawType - -mint' = btbrMint . getMemoRawType - -scriptIntegrityHash' = btbrScriptIntegrityHash . getMemoRawType - -txnetworkid' = btbrTxNetworkId . getMemoRawType - --------------------------------------------------------------------------------- --- Serialisation --------------------------------------------------------------------------------- - --- | Encodes memoized bytes created upon construction. -instance Era era => EncCBOR (BabbageTxBody era) - -instance - (Era era, EncCBOR (TxOut era), EncCBOR (TxCert era), EncCBOR (PParamsUpdate era)) => - EncCBOR (BabbageTxBodyRaw era) - where - encCBOR - BabbageTxBodyRaw - { btbrSpendInputs - , btbrCollateralInputs - , btbrReferenceInputs - , btbrOutputs - , btbrCollateralReturn - , btbrTotalCollateral - , btbrCerts - , btbrWithdrawals - , btbrTxFee - , btbrValidityInterval = ValidityInterval bot top - , btbrUpdate - , btbrReqSignerHashes - , btbrMint - , btbrScriptIntegrityHash - , btbrAuxDataHash - , btbrTxNetworkId - } = - encode $ - Keyed - ( \i ifee ri o cr tc f t c w u b rsh mi sh ah ni -> - BabbageTxBodyRaw i ifee ri o cr tc c w f (ValidityInterval b t) u rsh mi sh ah ni - ) - !> Key 0 (To btbrSpendInputs) - !> Omit null (Key 13 (To btbrCollateralInputs)) - !> Omit null (Key 18 (To btbrReferenceInputs)) - !> Key 1 (To btbrOutputs) - !> encodeKeyedStrictMaybe 16 btbrCollateralReturn - !> encodeKeyedStrictMaybe 17 btbrTotalCollateral - !> Key 2 (To btbrTxFee) - !> encodeKeyedStrictMaybe 3 top - !> Omit null (Key 4 (To btbrCerts)) - !> Omit (null . unWithdrawals) (Key 5 (To btbrWithdrawals)) - !> encodeKeyedStrictMaybe 6 btbrUpdate - !> encodeKeyedStrictMaybe 8 bot - !> Omit null (Key 14 (To btbrReqSignerHashes)) - !> Omit (== mempty) (Key 9 (To btbrMint)) - !> encodeKeyedStrictMaybe 11 btbrScriptIntegrityHash - !> encodeKeyedStrictMaybe 7 btbrAuxDataHash - !> encodeKeyedStrictMaybe 15 btbrTxNetworkId - -instance - (Era era, DecCBOR (TxOut era), DecCBOR (TxCert era), DecCBOR (PParamsUpdate era)) => - DecCBOR (BabbageTxBodyRaw era) - where - decCBOR = - decode $ - SparseKeyed - "BabbageTxBodyRaw" - basicBabbageTxBodyRaw - bodyFields - requiredFields - where - bodyFields :: Word -> Field (BabbageTxBodyRaw era) - bodyFields 0 = field (\x tx -> tx {btbrSpendInputs = x}) From - bodyFields 13 = field (\x tx -> tx {btbrCollateralInputs = x}) From - bodyFields 18 = field (\x tx -> tx {btbrReferenceInputs = x}) From - bodyFields 1 = field (\x tx -> tx {btbrOutputs = x}) From - bodyFields 16 = ofield (\x tx -> tx {btbrCollateralReturn = x}) From - bodyFields 17 = ofield (\x tx -> tx {btbrTotalCollateral = x}) From - bodyFields 2 = field (\x tx -> tx {btbrTxFee = x}) From - bodyFields 3 = - ofield - (\x tx -> tx {btbrValidityInterval = (btbrValidityInterval tx) {invalidHereafter = x}}) - From - bodyFields 4 = field (\x tx -> tx {btbrCerts = x}) From - bodyFields 5 = field (\x tx -> tx {btbrWithdrawals = x}) From - bodyFields 6 = ofield (\x tx -> tx {btbrUpdate = x}) From - bodyFields 7 = ofield (\x tx -> tx {btbrAuxDataHash = x}) From - bodyFields 8 = - ofield - (\x tx -> tx {btbrValidityInterval = (btbrValidityInterval tx) {invalidBefore = x}}) - From - bodyFields 9 = field (\x tx -> tx {btbrMint = x}) From - bodyFields 11 = ofield (\x tx -> tx {btbrScriptIntegrityHash = x}) From - bodyFields 14 = field (\x tx -> tx {btbrReqSignerHashes = x}) From - bodyFields 15 = ofield (\x tx -> tx {btbrTxNetworkId = x}) From - bodyFields n = field (\_ t -> t) (Invalid n) - {-# INLINE bodyFields #-} - requiredFields :: [(Word, String)] - requiredFields = - [ (0, "inputs") - , (1, "outputs") - , (2, "fee") - ] - {-# INLINE decCBOR #-} - -basicBabbageTxBodyRaw :: BabbageTxBodyRaw era -basicBabbageTxBodyRaw = - BabbageTxBodyRaw - mempty - mempty - mempty - StrictSeq.empty - SNothing - SNothing - StrictSeq.empty - (Withdrawals mempty) - mempty - (ValidityInterval SNothing SNothing) - SNothing - mempty - mempty - SNothing - SNothing - SNothing diff --git a/eras/babbage/impl/src/Cardano/Ledger/Babbage/TxCert.hs b/eras/babbage/impl/src/Cardano/Ledger/Babbage/TxCert.hs deleted file mode 100644 index 4e3940444f9..00000000000 --- a/eras/babbage/impl/src/Cardano/Ledger/Babbage/TxCert.hs +++ /dev/null @@ -1,70 +0,0 @@ -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Babbage.TxCert () where - -import Cardano.Ledger.Babbage.Era -import Cardano.Ledger.Babbage.PParams () -import Cardano.Ledger.Crypto -import Cardano.Ledger.Shelley.TxCert - -instance Crypto c => EraTxCert (BabbageEra c) where - {-# SPECIALIZE instance EraTxCert (BabbageEra StandardCrypto) #-} - - type TxCert (BabbageEra c) = ShelleyTxCert (BabbageEra c) - - upgradeTxCert = Right . upgradeShelleyTxCert - - getVKeyWitnessTxCert = getVKeyWitnessShelleyTxCert - - getScriptWitnessTxCert = getScriptWitnessShelleyTxCert - - mkRegPoolTxCert = ShelleyTxCertPool . RegPool - - getRegPoolTxCert (ShelleyTxCertPool (RegPool poolParams)) = Just poolParams - getRegPoolTxCert _ = Nothing - - mkRetirePoolTxCert poolId epochNo = ShelleyTxCertPool $ RetirePool poolId epochNo - - getRetirePoolTxCert (ShelleyTxCertPool (RetirePool poolId epochNo)) = Just (poolId, epochNo) - getRetirePoolTxCert _ = Nothing - - lookupRegStakeTxCert = \case - RegTxCert c -> Just c - _ -> Nothing - lookupUnRegStakeTxCert = \case - UnRegTxCert c -> Just c - _ -> Nothing - - getTotalDepositsTxCerts = shelleyTotalDepositsTxCerts - - getTotalRefundsTxCerts pp lookupStakeDeposit _ = shelleyTotalRefundsTxCerts pp lookupStakeDeposit - -instance Crypto c => ShelleyEraTxCert (BabbageEra c) where - {-# SPECIALIZE instance ShelleyEraTxCert (BabbageEra StandardCrypto) #-} - - mkRegTxCert = ShelleyTxCertDelegCert . ShelleyRegCert - - getRegTxCert (ShelleyTxCertDelegCert (ShelleyRegCert c)) = Just c - getRegTxCert _ = Nothing - - mkUnRegTxCert = ShelleyTxCertDelegCert . ShelleyUnRegCert - - getUnRegTxCert (ShelleyTxCertDelegCert (ShelleyUnRegCert c)) = Just c - getUnRegTxCert _ = Nothing - - mkDelegStakeTxCert c kh = ShelleyTxCertDelegCert $ ShelleyDelegCert c kh - - getDelegStakeTxCert (ShelleyTxCertDelegCert (ShelleyDelegCert c kh)) = Just (c, kh) - getDelegStakeTxCert _ = Nothing - - mkGenesisDelegTxCert = ShelleyTxCertGenesisDeleg - - getGenesisDelegTxCert (ShelleyTxCertGenesisDeleg c) = Just c - getGenesisDelegTxCert _ = Nothing - - mkMirTxCert = ShelleyTxCertMir - - getMirTxCert (ShelleyTxCertMir c) = Just c - getMirTxCert _ = Nothing diff --git a/eras/babbage/impl/src/Cardano/Ledger/Babbage/TxInfo.hs b/eras/babbage/impl/src/Cardano/Ledger/Babbage/TxInfo.hs deleted file mode 100644 index 1ca2e79b728..00000000000 --- a/eras/babbage/impl/src/Cardano/Ledger/Babbage/TxInfo.hs +++ /dev/null @@ -1,355 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Babbage.TxInfo ( - BabbageContextError (..), - transReferenceScript, - transTxOutV1, - transTxOutV2, - transTxInInfoV1, - transTxInInfoV2, - transTxRedeemers, -) where - -import Cardano.Ledger.Alonzo.Plutus.Context ( - EraPlutusContext (..), - EraPlutusTxInfo (..), - PlutusScriptPurpose, - mkPlutusLanguageContext, - ) -import Cardano.Ledger.Alonzo.Plutus.TxInfo (AlonzoContextError (..)) -import qualified Cardano.Ledger.Alonzo.Plutus.TxInfo as Alonzo -import Cardano.Ledger.Alonzo.Scripts (toAsItem) -import Cardano.Ledger.Alonzo.Tx (Data) -import Cardano.Ledger.Alonzo.TxWits (unRedeemers) -import Cardano.Ledger.Babbage.Core -import Cardano.Ledger.Babbage.Era (BabbageEra) -import Cardano.Ledger.Babbage.Scripts (PlutusScript (..)) -import Cardano.Ledger.BaseTypes (Inject (..), StrictMaybe (..), isSJust, kindObject) -import Cardano.Ledger.Binary (DecCBOR (..), EncCBOR (..)) -import Cardano.Ledger.Binary.Coders ( - Decode (..), - Encode (..), - decode, - encode, - (!>), - ( - StrictMaybe (Script era) -> - Maybe PV2.ScriptHash -transReferenceScript SNothing = Nothing -transReferenceScript (SJust s) = Just . transScriptHash . hashScript @era $ s - --- | Given a TxOut, translate it for V2 and return (Right transalation). --- If the transaction contains any Byron addresses or Babbage features, return Left. -transTxOutV1 :: - forall era. - ( Inject (BabbageContextError era) (ContextError era) - , Value era ~ MaryValue (EraCrypto era) - , BabbageEraTxOut era - ) => - TxOutSource (EraCrypto era) -> - TxOut era -> - Either (ContextError era) PV1.TxOut -transTxOutV1 txOutSource txOut = do - when (isSJust (txOut ^. referenceScriptTxOutL)) $ do - Left $ inject $ ReferenceScriptsNotSupported @era txOutSource - when (isSJust (txOut ^. dataTxOutL)) $ do - Left $ inject $ InlineDatumsNotSupported @era txOutSource - case Alonzo.transTxOut txOut of - Nothing -> Left $ inject $ ByronTxOutInContext @era txOutSource - Just plutusTxOut -> Right plutusTxOut - --- | Given a TxOut, translate it for V2 and return (Right transalation). It is --- possible the address part is a Bootstrap Address, in that case return Left. -transTxOutV2 :: - forall era. - ( Inject (BabbageContextError era) (ContextError era) - , Value era ~ MaryValue (EraCrypto era) - , BabbageEraTxOut era - ) => - TxOutSource (EraCrypto era) -> - TxOut era -> - Either (ContextError era) PV2.TxOut -transTxOutV2 txOutSource txOut = do - let val = txOut ^. valueTxOutL - referenceScript = transReferenceScript $ txOut ^. referenceScriptTxOutL - datum = - case txOut ^. datumTxOutF of - NoDatum -> PV2.NoOutputDatum - DatumHash dh -> PV2.OutputDatumHash $ transDataHash dh - Datum binaryData -> - PV2.OutputDatum - . PV2.Datum - . PV2.dataToBuiltinData - . getPlutusData - . binaryDataToData - $ binaryData - case transAddr (txOut ^. addrTxOutL) of - Nothing -> Left $ inject $ ByronTxOutInContext @era txOutSource - Just addr -> - Right (PV2.TxOut addr (Alonzo.transValue val) datum referenceScript) - --- | Given a TxIn, look it up in the UTxO. If it exists, translate it to the V1 context -transTxInInfoV1 :: - forall era. - ( Inject (BabbageContextError era) (ContextError era) - , Value era ~ MaryValue (EraCrypto era) - , BabbageEraTxOut era - ) => - UTxO era -> - TxIn (EraCrypto era) -> - Either (ContextError era) PV1.TxInInfo -transTxInInfoV1 utxo txIn = do - txOut <- left (inject . AlonzoContextError @era) $ Alonzo.transLookupTxOut utxo txIn - plutusTxOut <- transTxOutV1 (TxOutFromInput txIn) txOut - Right (PV1.TxInInfo (transTxIn txIn) plutusTxOut) - --- | Given a TxIn, look it up in the UTxO. If it exists, translate it to the V2 context -transTxInInfoV2 :: - forall era. - ( Inject (BabbageContextError era) (ContextError era) - , Value era ~ MaryValue (EraCrypto era) - , BabbageEraTxOut era - ) => - UTxO era -> - TxIn (EraCrypto era) -> - Either (ContextError era) PV2.TxInInfo -transTxInInfoV2 utxo txIn = do - txOut <- left (inject . AlonzoContextError @era) $ Alonzo.transLookupTxOut utxo txIn - plutusTxOut <- transTxOutV2 (TxOutFromInput txIn) txOut - Right (PV2.TxInInfo (transTxIn txIn) plutusTxOut) - -transRedeemer :: Data era -> PV2.Redeemer -transRedeemer = PV2.Redeemer . PV2.dataToBuiltinData . getPlutusData - -transRedeemerPtr :: - forall proxy l era. - ( EraPlutusTxInfo l era - , AlonzoEraTxBody era - , Inject (BabbageContextError era) (ContextError era) - ) => - proxy l -> - TxBody era -> - (PlutusPurpose AsIx era, (Data era, ExUnits)) -> - Either (ContextError era) (PlutusScriptPurpose l, PV2.Redeemer) -transRedeemerPtr proxy txBody (ptr, (d, _)) = - case redeemerPointerInverse txBody ptr of - SNothing -> Left $ inject $ RedeemerPointerPointsToNothing ptr - SJust sp -> do - plutusScriptPurpose <- toPlutusScriptPurpose proxy sp - Right (plutusScriptPurpose, transRedeemer d) - --- | Translate all `Redeemers` from within a `Tx` into a Map from a `PlutusScriptPurpose` --- to a `PV2.Redeemer` -transTxRedeemers :: - ( EraPlutusTxInfo l era - , AlonzoEraTxBody era - , EraTx era - , AlonzoEraTxWits era - , Inject (BabbageContextError era) (ContextError era) - ) => - proxy l -> - Tx era -> - Either (ContextError era) (PV2.Map (PlutusScriptPurpose l) PV2.Redeemer) -transTxRedeemers proxy tx = - PV2.unsafeFromList - <$> mapM - (transRedeemerPtr proxy (tx ^. bodyTxL)) - (Map.toList (unRedeemers $ tx ^. witsTxL . rdmrsTxWitsL)) - -instance Crypto c => EraPlutusContext (BabbageEra c) where - type ContextError (BabbageEra c) = BabbageContextError (BabbageEra c) - - mkPlutusScriptContext = \case - BabbagePlutusV1 p -> mkPlutusLanguageContext p - BabbagePlutusV2 p -> mkPlutusLanguageContext p - -data BabbageContextError era - = AlonzoContextError !(AlonzoContextError era) - | ByronTxOutInContext !(TxOutSource (EraCrypto era)) - | RedeemerPointerPointsToNothing !(PlutusPurpose AsIx era) - | InlineDatumsNotSupported !(TxOutSource (EraCrypto era)) - | ReferenceScriptsNotSupported !(TxOutSource (EraCrypto era)) - | ReferenceInputsNotSupported !(Set.Set (TxIn (EraCrypto era))) - deriving (Generic) - -deriving instance - (Eq (AlonzoContextError era), Eq (PlutusPurpose AsIx era)) => - Eq (BabbageContextError era) - -deriving instance - (Show (AlonzoContextError era), Show (PlutusPurpose AsIx era)) => - Show (BabbageContextError era) - -instance NoThunks (PlutusPurpose AsIx era) => NoThunks (BabbageContextError era) - -instance (Era era, NFData (PlutusPurpose AsIx era)) => NFData (BabbageContextError era) - -instance Inject (BabbageContextError era) (BabbageContextError era) - -instance Inject (AlonzoContextError era) (BabbageContextError era) where - inject = AlonzoContextError - -instance (Era era, EncCBOR (PlutusPurpose AsIx era)) => EncCBOR (BabbageContextError era) where - encCBOR = \case - ByronTxOutInContext txOutSource -> - encode $ Sum (ByronTxOutInContext @era) 0 !> To txOutSource - AlonzoContextError (TranslationLogicMissingInput txIn) -> - encode $ Sum (TranslationLogicMissingInput @era) 1 !> To txIn - RedeemerPointerPointsToNothing ptr -> - encode $ Sum RedeemerPointerPointsToNothing 2 !> To ptr - InlineDatumsNotSupported txOutSource -> - encode $ Sum (InlineDatumsNotSupported @era) 4 !> To txOutSource - ReferenceScriptsNotSupported txOutSource -> - encode $ Sum (ReferenceScriptsNotSupported @era) 5 !> To txOutSource - ReferenceInputsNotSupported txIns -> - encode $ Sum (ReferenceInputsNotSupported @era) 6 !> To txIns - AlonzoContextError (TimeTranslationPastHorizon err) -> - encode $ Sum TimeTranslationPastHorizon 7 !> To err - -instance (Era era, DecCBOR (PlutusPurpose AsIx era)) => DecCBOR (BabbageContextError era) where - decCBOR = decode $ Summands "ContextError" $ \case - 0 -> SumD ByronTxOutInContext SumD (AlonzoContextError . TranslationLogicMissingInput) SumD RedeemerPointerPointsToNothing SumD InlineDatumsNotSupported SumD ReferenceScriptsNotSupported SumD ReferenceInputsNotSupported SumD (AlonzoContextError . TimeTranslationPastHorizon) Invalid n - -instance ToJSON (PlutusPurpose AsIx era) => ToJSON (BabbageContextError era) where - toJSON = \case - AlonzoContextError err -> toJSON err - ByronTxOutInContext txOutSource -> - String $ "Byron UTxO being created or spent: " <> txOutSourceToText txOutSource - RedeemerPointerPointsToNothing ptr -> - kindObject "RedeemerPointerPointsToNothing" ["ptr" .= toJSON ptr] - InlineDatumsNotSupported txOutSource -> - String $ "Inline datums not supported, output source: " <> txOutSourceToText txOutSource - ReferenceScriptsNotSupported txOutSource -> - String $ "Reference scripts not supported, output source: " <> txOutSourceToText txOutSource - ReferenceInputsNotSupported txIns -> - String $ - "Reference inputs not supported: " - <> T.intercalate ", " (map txInToText (Set.toList txIns)) - -instance Crypto c => EraPlutusTxInfo 'PlutusV1 (BabbageEra c) where - toPlutusTxCert _ = pure . Alonzo.transTxCert - - toPlutusScriptPurpose proxy = Alonzo.transPlutusPurpose proxy . hoistPlutusPurpose toAsItem - - toPlutusTxInfo proxy pp epochInfo systemStart utxo tx = do - let refInputs = txBody ^. referenceInputsTxBodyL - unless (Set.null refInputs) $ Left (ReferenceInputsNotSupported refInputs) - - timeRange <- Alonzo.transValidityInterval pp epochInfo systemStart (txBody ^. vldtTxBodyL) - inputs <- mapM (transTxInInfoV1 utxo) (Set.toList (txBody ^. inputsTxBodyL)) - outputs <- - zipWithM - (transTxOutV1 . TxOutFromOutput) - [minBound ..] - (F.toList (txBody ^. outputsTxBodyL)) - txCerts <- Alonzo.transTxBodyCerts proxy txBody - pure - PV1.TxInfo - { PV1.txInfoInputs = inputs - , PV1.txInfoOutputs = outputs - , PV1.txInfoFee = transCoinToValue (txBody ^. feeTxBodyL) - , PV1.txInfoMint = Alonzo.transMintValue (txBody ^. mintTxBodyL) - , PV1.txInfoDCert = txCerts - , PV1.txInfoWdrl = Alonzo.transTxBodyWithdrawals txBody - , PV1.txInfoValidRange = timeRange - , PV1.txInfoSignatories = Alonzo.transTxBodyReqSignerHashes txBody - , PV1.txInfoData = Alonzo.transTxWitsDatums (tx ^. witsTxL) - , PV1.txInfoId = Alonzo.transTxBodyId txBody - } - where - txBody = tx ^. bodyTxL - - toPlutusScriptContext proxy txInfo scriptPurpose = - PV1.ScriptContext txInfo <$> toPlutusScriptPurpose proxy scriptPurpose - -instance Crypto c => EraPlutusTxInfo 'PlutusV2 (BabbageEra c) where - toPlutusTxCert _ = pure . Alonzo.transTxCert - - toPlutusScriptPurpose proxy = Alonzo.transPlutusPurpose proxy . hoistPlutusPurpose toAsItem - - toPlutusTxInfo proxy pp epochInfo systemStart utxo tx = do - timeRange <- Alonzo.transValidityInterval pp epochInfo systemStart (txBody ^. vldtTxBodyL) - inputs <- mapM (transTxInInfoV2 utxo) (Set.toList (txBody ^. inputsTxBodyL)) - refInputs <- mapM (transTxInInfoV2 utxo) (Set.toList (txBody ^. referenceInputsTxBodyL)) - outputs <- - zipWithM - (transTxOutV2 . TxOutFromOutput) - [minBound ..] - (F.toList (txBody ^. outputsTxBodyL)) - txCerts <- Alonzo.transTxBodyCerts proxy txBody - plutusRedeemers <- transTxRedeemers proxy tx - pure - PV2.TxInfo - { PV2.txInfoInputs = inputs - , PV2.txInfoOutputs = outputs - , PV2.txInfoReferenceInputs = refInputs - , PV2.txInfoFee = transCoinToValue (txBody ^. feeTxBodyL) - , PV2.txInfoMint = Alonzo.transMintValue (txBody ^. mintTxBodyL) - , PV2.txInfoDCert = txCerts - , PV2.txInfoWdrl = PV2.unsafeFromList $ Alonzo.transTxBodyWithdrawals txBody - , PV2.txInfoValidRange = timeRange - , PV2.txInfoSignatories = Alonzo.transTxBodyReqSignerHashes txBody - , PV2.txInfoRedeemers = plutusRedeemers - , PV2.txInfoData = PV2.unsafeFromList $ Alonzo.transTxWitsDatums (tx ^. witsTxL) - , PV2.txInfoId = Alonzo.transTxBodyId txBody - } - where - txBody = tx ^. bodyTxL - - toPlutusScriptContext proxy txInfo scriptPurpose = - PV2.ScriptContext txInfo <$> toPlutusScriptPurpose proxy scriptPurpose diff --git a/eras/babbage/impl/src/Cardano/Ledger/Babbage/TxOut.hs b/eras/babbage/impl/src/Cardano/Ledger/Babbage/TxOut.hs deleted file mode 100644 index eb97a295789..00000000000 --- a/eras/babbage/impl/src/Cardano/Ledger/Babbage/TxOut.hs +++ /dev/null @@ -1,719 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} -{-# LANGUAGE ViewPatterns #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Babbage.TxOut ( - BabbageTxOut ( - BabbageTxOut, - TxOutCompact, - TxOutCompactDH, - TxOutCompactDatum, - TxOutCompactRefScript - ), - BabbageEraTxOut (..), - TxOut, - addrEitherBabbageTxOutL, - valueEitherBabbageTxOutL, - dataHashBabbageTxOutL, - dataBabbageTxOutL, - datumBabbageTxOutL, - referenceScriptBabbageTxOutL, - getDatumBabbageTxOut, - babbageMinUTxOValue, - getEitherAddrBabbageTxOut, - txOutData, - txOutDataHash, - txOutScript, - internBabbageTxOut, -) where - -import Cardano.Crypto.Hash (HashAlgorithm) -import Cardano.Ledger.Address ( - Addr (..), - CompactAddr, - compactAddr, - decompactAddr, - fromCborBackwardsBothAddr, - fromCborBothAddr, - ) -import Cardano.Ledger.Alonzo.Core -import Cardano.Ledger.Alonzo.TxBody ( - Addr28Extra, - AlonzoTxOut (AlonzoTxOut), - DataHash32, - decodeAddress28, - decodeDataHash32, - encodeAddress28, - encodeDataHash32, - getAdaOnly, - ) -import qualified Cardano.Ledger.Alonzo.TxBody as Alonzo -import Cardano.Ledger.Babbage.Era (BabbageEra) -import Cardano.Ledger.Babbage.PParams ( - BabbageEraPParams (..), - CoinPerByte (..), - ppCoinsPerUTxOByteL, - ) -import Cardano.Ledger.Babbage.Scripts () -import Cardano.Ledger.BaseTypes ( - StrictMaybe (..), - strictMaybeToMaybe, - ) -import Cardano.Ledger.Binary ( - Annotator (..), - DecCBOR (..), - DecShareCBOR (..), - Decoder, - DecoderError (..), - EncCBOR (..), - Encoding, - FromCBOR (..), - Interns, - Sized (..), - ToCBOR (..), - TokenType (..), - cborError, - decodeBreakOr, - decodeFullAnnotator, - decodeListLenOrIndef, - decodeNestedCborBytes, - encodeListLen, - encodeNestedCbor, - getDecoderVersion, - interns, - peekTokenType, - ) -import Cardano.Ledger.Binary.Coders -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Compactible -import Cardano.Ledger.Credential (Credential (..), StakeReference (..)) -import Cardano.Ledger.Crypto (Crypto (ADDRHASH), StandardCrypto) -import Cardano.Ledger.Keys (KeyRole (..)) -import Cardano.Ledger.Plutus.Data ( - BinaryData, - Data, - Datum (..), - binaryDataToData, - dataToBinaryData, - ) -import Cardano.Ledger.Val (Val (..)) -import Control.DeepSeq (NFData (rnf), rwhnf) -import Control.Monad ((<$!>)) -import Data.Aeson (KeyValue, ToJSON (..), object, pairs, (.=)) -import qualified Data.ByteString.Lazy as LBS -import Data.Maybe (fromMaybe) -import qualified Data.Text as T -import Data.Typeable (Proxy (..), (:~:) (Refl)) -import GHC.Generics (Generic) -import GHC.Stack (HasCallStack) -import Lens.Micro (Lens', lens, to, (^.)) -import NoThunks.Class (NoThunks) - -class (AlonzoEraTxOut era, AlonzoEraScript era) => BabbageEraTxOut era where - referenceScriptTxOutL :: Lens' (TxOut era) (StrictMaybe (Script era)) - - dataTxOutL :: Lens' (TxOut era) (StrictMaybe (Data era)) - - datumTxOutL :: Lens' (TxOut era) (Datum era) - -data BabbageTxOut era - = TxOutCompact' - {-# UNPACK #-} !(CompactAddr (EraCrypto era)) - !(CompactForm (Value era)) - | TxOutCompactDH' - {-# UNPACK #-} !(CompactAddr (EraCrypto era)) - !(CompactForm (Value era)) - !(DataHash (EraCrypto era)) - | TxOutCompactDatum - {-# UNPACK #-} !(CompactAddr (EraCrypto era)) - !(CompactForm (Value era)) - {-# UNPACK #-} !(BinaryData era) -- Inline data - | TxOutCompactRefScript - {-# UNPACK #-} !(CompactAddr (EraCrypto era)) - !(CompactForm (Value era)) - !(Datum era) - !(Script era) - | TxOut_AddrHash28_AdaOnly - !(Credential 'Staking (EraCrypto era)) - {-# UNPACK #-} !Addr28Extra - {-# UNPACK #-} !(CompactForm Coin) -- Ada value - | TxOut_AddrHash28_AdaOnly_DataHash32 - !(Credential 'Staking (EraCrypto era)) - {-# UNPACK #-} !Addr28Extra - {-# UNPACK #-} !(CompactForm Coin) -- Ada value - {-# UNPACK #-} !DataHash32 - deriving (Generic) - -instance Crypto c => EraTxOut (BabbageEra c) where - {-# SPECIALIZE instance EraTxOut (BabbageEra StandardCrypto) #-} - - type TxOut (BabbageEra c) = BabbageTxOut (BabbageEra c) - - mkBasicTxOut addr vl = BabbageTxOut addr vl NoDatum SNothing - - upgradeTxOut (AlonzoTxOut addr value mDatumHash) = BabbageTxOut addr value datum SNothing - where - datum = case mDatumHash of - SNothing -> NoDatum - SJust datumHash -> DatumHash datumHash - - addrEitherTxOutL = addrEitherBabbageTxOutL - {-# INLINE addrEitherTxOutL #-} - - valueEitherTxOutL = valueEitherBabbageTxOutL - {-# INLINE valueEitherTxOutL #-} - - getMinCoinSizedTxOut = babbageMinUTxOValue - -dataHashBabbageTxOutL :: - EraTxOut era => Lens' (BabbageTxOut era) (StrictMaybe (DataHash (EraCrypto era))) -dataHashBabbageTxOutL = - lens - getDataHashBabbageTxOut - ( \(BabbageTxOut addr cv _ s) -> \case - SNothing -> BabbageTxOut addr cv NoDatum s - SJust dh -> BabbageTxOut addr cv (DatumHash dh) s - ) -{-# INLINEABLE dataHashBabbageTxOutL #-} - -instance Crypto c => AlonzoEraTxOut (BabbageEra c) where - {-# SPECIALIZE instance AlonzoEraTxOut (BabbageEra StandardCrypto) #-} - - dataHashTxOutL = dataHashBabbageTxOutL - {-# INLINEABLE dataHashTxOutL #-} - - datumTxOutF = to getDatumBabbageTxOut - {-# INLINEABLE datumTxOutF #-} - -dataBabbageTxOutL :: EraTxOut era => Lens' (BabbageTxOut era) (StrictMaybe (Data era)) -dataBabbageTxOutL = - lens - getDataBabbageTxOut - ( \(BabbageTxOut addr cv _ s) -> - \case - SNothing -> BabbageTxOut addr cv NoDatum s - SJust d -> BabbageTxOut addr cv (Datum (dataToBinaryData d)) s - ) -{-# INLINEABLE dataBabbageTxOutL #-} - -datumBabbageTxOutL :: EraTxOut era => Lens' (BabbageTxOut era) (Datum era) -datumBabbageTxOutL = - lens getDatumBabbageTxOut (\(BabbageTxOut addr cv _ s) d -> BabbageTxOut addr cv d s) -{-# INLINEABLE datumBabbageTxOutL #-} - -referenceScriptBabbageTxOutL :: EraTxOut era => Lens' (BabbageTxOut era) (StrictMaybe (Script era)) -referenceScriptBabbageTxOutL = - lens getScriptBabbageTxOut (\(BabbageTxOut addr cv d _) s -> BabbageTxOut addr cv d s) -{-# INLINEABLE referenceScriptBabbageTxOutL #-} - -instance Crypto c => BabbageEraTxOut (BabbageEra c) where - {-# SPECIALIZE instance BabbageEraTxOut (BabbageEra StandardCrypto) #-} - dataTxOutL = dataBabbageTxOutL - {-# INLINEABLE dataTxOutL #-} - - datumTxOutL = datumBabbageTxOutL - {-# INLINEABLE datumTxOutL #-} - - referenceScriptTxOutL = referenceScriptBabbageTxOutL - {-# INLINEABLE referenceScriptTxOutL #-} - -addrEitherBabbageTxOutL :: - EraTxOut era => - Lens' (BabbageTxOut era) (Either (Addr (EraCrypto era)) (CompactAddr (EraCrypto era))) -addrEitherBabbageTxOutL = - lens - getEitherAddrBabbageTxOut - ( \txOut eAddr -> - let cVal = getCompactValueBabbageTxOut txOut - (_, _, datum, mScript) = viewTxOut txOut - in case eAddr of - Left addr -> mkTxOutCompact addr (compactAddr addr) cVal datum mScript - Right cAddr -> mkTxOutCompact (decompactAddr cAddr) cAddr cVal datum mScript - ) -{-# INLINEABLE addrEitherBabbageTxOutL #-} - -valueEitherBabbageTxOutL :: - forall era. - EraTxOut era => - Lens' (BabbageTxOut era) (Either (Value era) (CompactForm (Value era))) -valueEitherBabbageTxOutL = - lens - (Right . getCompactValueBabbageTxOut) - ( \txOut eVal -> - let (cAddr, _, datum, mScript) = viewCompactTxOut txOut - in case eVal of - Left val -> mkTxOut (decompactAddr cAddr) cAddr val datum mScript - Right cVal -> mkTxOutCompact (decompactAddr cAddr) cAddr cVal datum mScript - ) -{-# INLINEABLE valueEitherBabbageTxOutL #-} - -deriving stock instance - (Era era, Eq (Script era), Eq (CompactForm (Value era))) => - Eq (BabbageTxOut era) - --- | Already in NF -instance NFData (BabbageTxOut era) where - rnf = rwhnf - -instance - (Era era, ToJSON (Datum era), ToJSON (Script era), Val (Value era)) => - ToJSON (BabbageTxOut era) - where - toJSON = object . toBabbageTxOutPairs - toEncoding = pairs . mconcat . toBabbageTxOutPairs - -toBabbageTxOutPairs :: - ( Era era - , KeyValue e a - , Val (Value era) - , ToJSON (Script era) - ) => - BabbageTxOut era -> - [a] -toBabbageTxOutPairs (BabbageTxOut !addr !val !dat !mRefScript) = - [ "address" .= addr - , "value" .= val - , "datum" .= dat - , "referenceScript" .= mRefScript - ] - -viewCompactTxOut :: - forall era. - (Era era, Val (Value era)) => - BabbageTxOut era -> - (CompactAddr (EraCrypto era), CompactForm (Value era), Datum era, StrictMaybe (Script era)) -viewCompactTxOut txOut = case txOut of - TxOutCompact' addr val -> (addr, val, NoDatum, SNothing) - TxOutCompactDH' addr val dh -> (addr, val, DatumHash dh, SNothing) - TxOutCompactDatum addr val datum -> (addr, val, Datum datum, SNothing) - TxOutCompactRefScript addr val datum rs -> (addr, val, datum, SJust rs) - TxOut_AddrHash28_AdaOnly stakeRef addr28Extra adaVal -> - let (a, b, c) = - Alonzo.viewCompactTxOut @era $ Alonzo.TxOut_AddrHash28_AdaOnly stakeRef addr28Extra adaVal - in (a, b, toDatum c, SNothing) - TxOut_AddrHash28_AdaOnly_DataHash32 stakeRef addr28Extra adaVal dataHash32 -> - let (a, b, c) = - Alonzo.viewCompactTxOut @era $ - Alonzo.TxOut_AddrHash28_AdaOnly_DataHash32 stakeRef addr28Extra adaVal dataHash32 - in (a, b, toDatum c, SNothing) - where - toDatum = \case - SNothing -> NoDatum - SJust dh -> DatumHash dh -{-# INLINEABLE viewCompactTxOut #-} - -viewTxOut :: - forall era. - (Era era, Val (Value era)) => - BabbageTxOut era -> - (Addr (EraCrypto era), Value era, Datum era, StrictMaybe (Script era)) -viewTxOut (TxOutCompact' bs c) = (addr, val, NoDatum, SNothing) - where - addr = decompactAddr bs - val = fromCompact c -viewTxOut (TxOutCompactDH' bs c dh) = (addr, val, DatumHash dh, SNothing) - where - addr = decompactAddr bs - val = fromCompact c -viewTxOut (TxOutCompactDatum bs c d) = (addr, val, Datum d, SNothing) - where - addr = decompactAddr bs - val = fromCompact c -viewTxOut (TxOutCompactRefScript bs c d rs) = (addr, val, d, SJust rs) - where - addr = decompactAddr bs - val = fromCompact c -viewTxOut (TxOut_AddrHash28_AdaOnly stakeRef addr28Extra adaVal) = (addr, val, NoDatum, SNothing) - where - (addr, val, _) = - Alonzo.viewTxOut @era $ Alonzo.TxOut_AddrHash28_AdaOnly stakeRef addr28Extra adaVal -viewTxOut (TxOut_AddrHash28_AdaOnly_DataHash32 stakeRef addr28Extra adaVal dataHash32) = - case mDataHash of - SNothing -> (addr, val, NoDatum, SNothing) - SJust dh -> (addr, val, DatumHash dh, SNothing) - where - (addr, val, mDataHash) = - Alonzo.viewTxOut @era $ - Alonzo.TxOut_AddrHash28_AdaOnly_DataHash32 stakeRef addr28Extra adaVal dataHash32 -{-# INLINEABLE viewTxOut #-} - -instance - (Era era, Show (Script era), Val (Value era)) => - Show (BabbageTxOut era) - where - show = show . viewTxOut - -instance (Era era, NoThunks (Script era), Val (Value era)) => NoThunks (BabbageTxOut era) - -pattern BabbageTxOut :: - (Era era, Val (Value era), HasCallStack) => - Addr (EraCrypto era) -> - Value era -> - Datum era -> - StrictMaybe (Script era) -> - BabbageTxOut era -pattern BabbageTxOut addr vl datum refScript <- - (viewTxOut -> (addr, vl, datum, refScript)) - where - BabbageTxOut addr vl datum refScript = mkTxOut addr (compactAddr addr) vl datum refScript - -{-# COMPLETE BabbageTxOut #-} - --- | Helper function for constructing a BabbageTxOut. Both compacted and uncompacted --- address should be the exact same address in different forms. -mkTxOut :: - forall era. - (Era era, Val (Value era), HasCallStack) => - Addr (EraCrypto era) -> - CompactAddr (EraCrypto era) -> - Value era -> - Datum era -> - StrictMaybe (Script era) -> - BabbageTxOut era -mkTxOut addr _cAddr vl NoDatum SNothing - | Just adaCompact <- getAdaOnly (Proxy @era) vl - , Addr network paymentCred stakeRef <- addr - , StakeRefBase stakeCred <- stakeRef - , Just (Refl, addr28Extra) <- encodeAddress28 network paymentCred = - TxOut_AddrHash28_AdaOnly stakeCred addr28Extra adaCompact -mkTxOut addr _cAddr vl (DatumHash dh) SNothing - | Just adaCompact <- getAdaOnly (Proxy @era) vl - , Addr network paymentCred stakeRef <- addr - , StakeRefBase stakeCred <- stakeRef - , Just (Refl, addr28Extra) <- encodeAddress28 network paymentCred - , Just (Refl, dataHash32) <- encodeDataHash32 dh = - TxOut_AddrHash28_AdaOnly_DataHash32 stakeCred addr28Extra adaCompact dataHash32 -mkTxOut _addr cAddr vl d rs = - let cVal = fromMaybe (error ("Illegal Value in TxOut: " ++ show vl)) $ toCompact vl - in case rs of - SNothing -> case d of - NoDatum -> TxOutCompact' cAddr cVal - DatumHash dh -> TxOutCompactDH' cAddr cVal dh - Datum binaryData -> TxOutCompactDatum cAddr cVal binaryData - SJust rs' -> TxOutCompactRefScript cAddr cVal d rs' -{-# INLINEABLE mkTxOut #-} - --- TODO: Implement mkTxOut in terms of mkTxOutCompact, it will avoid unnecessary --- MultiAsset serilization/deserialization -mkTxOutCompact :: - (Era era, Val (Value era)) => - Addr (EraCrypto era) -> - CompactAddr (EraCrypto era) -> - CompactForm (Value era) -> - Datum era -> - StrictMaybe (Script era) -> - BabbageTxOut era -mkTxOutCompact addr cAddr cVal = mkTxOut addr cAddr (fromCompact cVal) -{-# INLINE mkTxOutCompact #-} - -pattern TxOutCompact :: - (Era era, Val (Value era), Compactible (Value era), HasCallStack) => - CompactAddr (EraCrypto era) -> - CompactForm (Value era) -> - BabbageTxOut era -pattern TxOutCompact addr vl <- - (viewCompactTxOut -> (addr, vl, NoDatum, SNothing)) - where - TxOutCompact cAddr cVal - | isAdaOnlyCompact cVal = - mkTxOut (decompactAddr cAddr) cAddr (fromCompact cVal) NoDatum SNothing - | otherwise = TxOutCompact' cAddr cVal - -pattern TxOutCompactDH :: - (Era era, Val (Value era), Compactible (Value era), HasCallStack) => - CompactAddr (EraCrypto era) -> - CompactForm (Value era) -> - DataHash (EraCrypto era) -> - BabbageTxOut era -pattern TxOutCompactDH addr vl dh <- - (viewCompactTxOut -> (addr, vl, DatumHash dh, SNothing)) - where - TxOutCompactDH cAddr cVal dh - | isAdaOnlyCompact cVal = - mkTxOut (decompactAddr cAddr) cAddr (fromCompact cVal) (DatumHash dh) SNothing - | otherwise = TxOutCompactDH' cAddr cVal dh - -{-# COMPLETE TxOutCompact, TxOutCompactDH #-} - -instance (EraScript era, Val (Value era)) => ToCBOR (BabbageTxOut era) where - toCBOR = toEraCBOR @era - {-# INLINE toCBOR #-} - -instance (EraScript era, Val (Value era)) => FromCBOR (BabbageTxOut era) where - fromCBOR = fromEraCBOR @era - {-# INLINE fromCBOR #-} - -instance (EraScript era, Val (Value era)) => EncCBOR (BabbageTxOut era) where - encCBOR = \case - TxOutCompactRefScript addr cv d rs -> encodeTxOut addr cv d (SJust rs) - TxOutCompactDatum addr cv d -> encodeTxOut addr cv (Datum d) SNothing - TxOutCompactDH addr cv dh -> encodeListLen 3 <> encCBOR addr <> encCBOR cv <> encCBOR dh - TxOutCompact addr cv -> encodeListLen 2 <> encCBOR addr <> encCBOR cv - -instance (EraScript era, Val (Value era)) => DecCBOR (BabbageTxOut era) where - decCBOR = decodeBabbageTxOut fromCborBothAddr - {-# INLINE decCBOR #-} - -instance (EraScript era, Val (Value era)) => DecShareCBOR (BabbageTxOut era) where - type Share (BabbageTxOut era) = Interns (Credential 'Staking (EraCrypto era)) - decShareCBOR credsInterns = - -- Even in Babbage the ledger state still contains garbage pointers that we need to - -- deal with. This will be taken care of upon entry to Conway era. After which this - -- backwards compatibility shim can be removed. - internBabbageTxOut (interns credsInterns) <$!> decodeBabbageTxOut fromCborBackwardsBothAddr - {-# INLINEABLE decShareCBOR #-} - -internBabbageTxOut :: - (Credential 'Staking (EraCrypto era) -> Credential 'Staking (EraCrypto era)) -> - BabbageTxOut era -> - BabbageTxOut era -internBabbageTxOut internCred = \case - TxOut_AddrHash28_AdaOnly cred addr28Extra ada -> - TxOut_AddrHash28_AdaOnly (internCred cred) addr28Extra ada - TxOut_AddrHash28_AdaOnly_DataHash32 cred addr28Extra ada dataHash32 -> - TxOut_AddrHash28_AdaOnly_DataHash32 (internCred cred) addr28Extra ada dataHash32 - txOut -> txOut -{-# INLINE internBabbageTxOut #-} - -decodeBabbageTxOut :: - (EraScript era, Val (Value era)) => - -- | We need to use a backwards compatible decoder for any address in a pre-babbage - -- TxOut format. This is needed in order to get rid of bogus pointers from the ledger - -- state in Conway - (forall s'. Decoder s' (Addr (EraCrypto era), CompactAddr (EraCrypto era))) -> - Decoder s (BabbageTxOut era) -decodeBabbageTxOut decAddr = do - peekTokenType >>= \case - TypeMapLenIndef -> decodeTxOut decAddr - TypeMapLen -> decodeTxOut decAddr - _ -> oldTxOut - where - oldTxOut = do - lenOrIndef <- decodeListLenOrIndef - case lenOrIndef of - Nothing -> do - (a, ca) <- decAddr - v <- decCBOR - decodeBreakOr >>= \case - True -> pure $ mkTxOut a ca v NoDatum SNothing - False -> do - dh <- decCBOR - decodeBreakOr >>= \case - True -> pure $ mkTxOut a ca v (DatumHash dh) SNothing - False -> cborError $ DecoderErrorCustom "TxOut" "Excess terms in TxOut" - Just 2 -> do - (a, ca) <- decAddr - v <- decCBOR - pure $ mkTxOut a ca v NoDatum SNothing - Just 3 -> do - (a, ca) <- decAddr - v <- decCBOR - dh <- decCBOR - pure $ mkTxOut a ca v (DatumHash dh) SNothing - Just _ -> cborError $ DecoderErrorCustom "TxOut" "Wrong number of terms in TxOut" - {-# INLINE oldTxOut #-} -{-# INLINEABLE decodeBabbageTxOut #-} - -encodeTxOut :: - forall era. - (EraScript era, Val (Value era)) => - CompactAddr (EraCrypto era) -> - CompactForm (Value era) -> - Datum era -> - StrictMaybe (Script era) -> - Encoding -encodeTxOut cAddr cVal datum script = - encode $ - Keyed (,,,,) - !> Key 0 (To cAddr) - !> Key 1 (To (fromCompact cVal)) - !> Omit (== NoDatum) (Key 2 (To datum)) - !> encodeKeyedStrictMaybeWith 3 encodeNestedCbor script -{-# INLINE encodeTxOut #-} - -data DecodingTxOut era = DecodingTxOut - { decodingTxOutAddr :: !(StrictMaybe (Addr (EraCrypto era), CompactAddr (EraCrypto era))) - , decodingTxOutVal :: !(Value era) - , decodingTxOutDatum :: !(Datum era) - , decodingTxOutScript :: !(StrictMaybe (Script era)) - } - -decodeTxOut :: - forall s era. - (EraScript era, Val (Value era)) => - (forall s'. Decoder s' (Addr (EraCrypto era), CompactAddr (EraCrypto era))) -> - Decoder s (BabbageTxOut era) -decodeTxOut decAddr = do - dtxo <- decode $ SparseKeyed "TxOut" initial bodyFields requiredFields - case dtxo of - DecodingTxOut SNothing _ _ _ -> - cborError $ DecoderErrorCustom "BabbageTxOut" "Impossible: no Addr" - DecodingTxOut (SJust (addr, cAddr)) val d script -> - pure $ mkTxOut addr cAddr val d script - where - initial :: DecodingTxOut era - initial = DecodingTxOut SNothing mempty NoDatum SNothing - bodyFields :: (Word -> Field (DecodingTxOut era)) - bodyFields 0 = - field - (\x txo -> txo {decodingTxOutAddr = SJust x}) - (D decAddr) - bodyFields 1 = - field - (\x txo -> txo {decodingTxOutVal = x}) - From - bodyFields 2 = - field - (\x txo -> txo {decodingTxOutDatum = x}) - (D decCBOR) - bodyFields 3 = - ofield - (\x txo -> txo {decodingTxOutScript = x}) - (D $ decodeCIC "Script") - bodyFields n = field (\_ t -> t) (Invalid n) - {-# INLINE bodyFields #-} - requiredFields = - [ (0, "addr") - , (1, "val") - ] -{-# INLINE decodeTxOut #-} - -babbageMinUTxOValue :: - BabbageEraPParams era => - PParams era -> - Sized a -> - Coin -babbageMinUTxOValue pp sizedTxOut = - Coin $ fromIntegral (constantOverhead + sizedSize sizedTxOut) * cpb - where - CoinPerByte (Coin cpb) = pp ^. ppCoinsPerUTxOByteL - -- This constant is an approximation of the memory overhead that comes - -- from TxIn and an entry in the Map data structure: - -- - -- 160 = 20 words * 8bytes - -- - -- This means that if: - -- - -- * 'coinsPerUTxOByte' = 4310 - -- * A simple TxOut with staking and payment credentials with ADA only - -- amount of 978370 lovelace - -- - -- we get the size of TxOut to be 67 bytes and the minimum value will come - -- out to be 978597 lovelace. Also the absolute minimum value will be - -- 857690, because TxOut without staking address can't be less than 39 bytes - constantOverhead = 160 -{-# INLINE babbageMinUTxOValue #-} - -getEitherAddrBabbageTxOut :: - (HasCallStack, HashAlgorithm (ADDRHASH (EraCrypto era))) => - BabbageTxOut era -> - Either (Addr (EraCrypto era)) (CompactAddr (EraCrypto era)) -getEitherAddrBabbageTxOut = \case - TxOutCompact' cAddr _ -> Right cAddr - TxOutCompactDH' cAddr _ _ -> Right cAddr - TxOutCompactRefScript cAddr _ _ _ -> Right cAddr - TxOutCompactDatum cAddr _ _ -> Right cAddr - TxOut_AddrHash28_AdaOnly stakeRef addr28Extra _ - | Just addr <- decodeAddress28 stakeRef addr28Extra -> Left addr - | otherwise -> error "Impossible: Compacted an address of non-standard size" - TxOut_AddrHash28_AdaOnly_DataHash32 stakeRef addr28Extra _ _ - | Just addr <- decodeAddress28 stakeRef addr28Extra -> Left addr - | otherwise -> error "Impossible: Compacted an address or a hash of non-standard size" -{-# INLINE getEitherAddrBabbageTxOut #-} - --- TODO: Switch to using `getDatumBabbageTxOut` -getDataBabbageTxOut :: Era era => BabbageTxOut era -> StrictMaybe (Data era) -getDataBabbageTxOut = \case - TxOutCompact' {} -> SNothing - TxOutCompactDH' {} -> SNothing - TxOutCompactDatum _ _ binaryData -> SJust $ binaryDataToData binaryData - TxOutCompactRefScript _ _ datum _ - | Datum binaryData <- datum -> SJust $ binaryDataToData binaryData - | otherwise -> SNothing - TxOut_AddrHash28_AdaOnly {} -> SNothing - TxOut_AddrHash28_AdaOnly_DataHash32 {} -> SNothing -{-# INLINE getDataBabbageTxOut #-} - --- TODO: Switch to using `getDatumBabbageTxOut` - --- | Return the data hash of a given transaction output, if one is present. --- Note that this function does *not* return the hash of an inline datum --- if one is present. -getDataHashBabbageTxOut :: - (HasCallStack, Era era) => - BabbageTxOut era -> - StrictMaybe (DataHash (EraCrypto era)) -getDataHashBabbageTxOut txOut = - case getDatumBabbageTxOut txOut of - NoDatum -> SNothing - DatumHash dh -> SJust dh - Datum _d -> SNothing -{-# INLINE getDataHashBabbageTxOut #-} - -getScriptBabbageTxOut :: BabbageTxOut era -> StrictMaybe (Script era) -getScriptBabbageTxOut = \case - TxOutCompact' {} -> SNothing - TxOutCompactDH' {} -> SNothing - TxOutCompactDatum {} -> SNothing - TxOutCompactRefScript _ _ _ s -> SJust s - TxOut_AddrHash28_AdaOnly {} -> SNothing - TxOut_AddrHash28_AdaOnly_DataHash32 {} -> SNothing -{-# INLINE getScriptBabbageTxOut #-} - -getDatumBabbageTxOut :: (HasCallStack, Era era) => BabbageTxOut era -> Datum era -getDatumBabbageTxOut = \case - TxOutCompact' {} -> NoDatum - TxOutCompactDH' _ _ dh -> DatumHash dh - TxOutCompactDatum _ _ binaryData -> Datum binaryData - TxOutCompactRefScript _ _ datum _ -> datum - TxOut_AddrHash28_AdaOnly {} -> NoDatum - TxOut_AddrHash28_AdaOnly_DataHash32 _ _ _ dataHash32 - | Just dh <- decodeDataHash32 dataHash32 -> DatumHash dh - | otherwise -> error $ "Impossible: Compacted a hash of non-standard size: " ++ show dataHash32 -{-# INLINEABLE getDatumBabbageTxOut #-} - -getCompactValueBabbageTxOut :: EraTxOut era => BabbageTxOut era -> CompactForm (Value era) -getCompactValueBabbageTxOut = - \case - TxOutCompact' _ cv -> cv - TxOutCompactDH' _ cv _ -> cv - TxOutCompactDatum _ cv _ -> cv - TxOutCompactRefScript _ cv _ _ -> cv - TxOut_AddrHash28_AdaOnly _ _ cc -> injectCompact cc - TxOut_AddrHash28_AdaOnly_DataHash32 _ _ cc _ -> injectCompact cc -{-# INLINE getCompactValueBabbageTxOut #-} - -txOutData :: Era era => BabbageTxOut era -> Maybe (Data era) -txOutData = strictMaybeToMaybe . getDataBabbageTxOut -{-# DEPRECATED txOutData "In favor of `dataTxOutL` or `getDataBabbageTxOut`" #-} - -txOutDataHash :: Era era => BabbageTxOut era -> Maybe (DataHash (EraCrypto era)) -txOutDataHash = strictMaybeToMaybe . getDataHashBabbageTxOut -{-# DEPRECATED txOutDataHash "In favor of `dataHashTxOutL` or `getDataHashBabbageTxOut`" #-} - -txOutScript :: BabbageTxOut era -> Maybe (Script era) -txOutScript = strictMaybeToMaybe . getScriptBabbageTxOut -{-# DEPRECATED txOutScript "In favor of `dataTxOutL` or `getScriptBabbageTxOut`" #-} - -decodeCIC :: DecCBOR (Annotator b) => T.Text -> Decoder s b -decodeCIC s = do - version <- getDecoderVersion - lbs <- decodeNestedCborBytes - case decodeFullAnnotator version s decCBOR (LBS.fromStrict lbs) of - Left e -> fail $ T.unpack s <> ": " <> show e - Right x -> pure x -{-# INLINEABLE decodeCIC #-} diff --git a/eras/babbage/impl/src/Cardano/Ledger/Babbage/TxWits.hs b/eras/babbage/impl/src/Cardano/Ledger/Babbage/TxWits.hs deleted file mode 100644 index d4ba31ea734..00000000000 --- a/eras/babbage/impl/src/Cardano/Ledger/Babbage/TxWits.hs +++ /dev/null @@ -1,62 +0,0 @@ -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Babbage.TxWits ( - module BabbageTxWitsReExport, -) -where - -import Cardano.Ledger.Alonzo.TxWits ( - AlonzoEraTxWits (..), - AlonzoTxWits (..), - addrAlonzoTxWitsL, - bootAddrAlonzoTxWitsL, - datsAlonzoTxWitsL, - rdmrsAlonzoTxWitsL, - scriptAlonzoTxWitsL, - ) -import Cardano.Ledger.Alonzo.TxWits as BabbageTxWitsReExport ( - AlonzoEraTxWits (..), - AlonzoTxWits (..), - upgradeRedeemers, - upgradeTxDats, - ) -import Cardano.Ledger.Babbage.Era (BabbageEra) -import Cardano.Ledger.Babbage.TxBody () -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto - -instance Crypto c => EraTxWits (BabbageEra c) where - {-# SPECIALIZE instance EraTxWits (BabbageEra StandardCrypto) #-} - - type TxWits (BabbageEra c) = AlonzoTxWits (BabbageEra c) - - mkBasicTxWits = mempty - - addrTxWitsL = addrAlonzoTxWitsL - {-# INLINE addrTxWitsL #-} - - bootAddrTxWitsL = bootAddrAlonzoTxWitsL - {-# INLINE bootAddrTxWitsL #-} - - scriptTxWitsL = scriptAlonzoTxWitsL - {-# INLINE scriptTxWitsL #-} - - upgradeTxWits atw = - AlonzoTxWits - { txwitsVKey = txwitsVKey atw - , txwitsBoot = txwitsBoot atw - , txscripts = upgradeScript <$> txscripts atw - , txdats = upgradeTxDats (txdats atw) - , txrdmrs = upgradeRedeemers (txrdmrs atw) - } - -instance Crypto c => AlonzoEraTxWits (BabbageEra c) where - {-# SPECIALIZE instance AlonzoEraTxWits (BabbageEra StandardCrypto) #-} - - datsTxWitsL = datsAlonzoTxWitsL - {-# INLINE datsTxWitsL #-} - - rdmrsTxWitsL = rdmrsAlonzoTxWitsL - {-# INLINE rdmrsTxWitsL #-} diff --git a/eras/babbage/impl/src/Cardano/Ledger/Babbage/UTxO.hs b/eras/babbage/impl/src/Cardano/Ledger/Babbage/UTxO.hs deleted file mode 100644 index b1327db232d..00000000000 --- a/eras/babbage/impl/src/Cardano/Ledger/Babbage/UTxO.hs +++ /dev/null @@ -1,156 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Babbage.UTxO ( - getBabbageSupplementalDataHashes, - getBabbageSpendingDatum, - getBabbageScriptsProvided, - getReferenceScripts, - getReferenceScriptsNonDistinct, -) where - -import Cardano.Ledger.Alonzo.TxWits (unTxDats) -import Cardano.Ledger.Alonzo.UTxO ( - AlonzoEraUTxO (..), - AlonzoScriptsNeeded, - getAlonzoScriptsHashesNeeded, - getAlonzoScriptsNeeded, - getAlonzoWitsVKeyNeeded, - ) -import Cardano.Ledger.Babbage.Core -import Cardano.Ledger.Babbage.Era (BabbageEra) -import Cardano.Ledger.BaseTypes (StrictMaybe (..), strictMaybeToMaybe) -import Cardano.Ledger.Binary (sizedValue) -import Cardano.Ledger.Crypto -import Cardano.Ledger.Mary.UTxO (getConsumedMaryValue) -import Cardano.Ledger.Plutus.Data (Data) -import Cardano.Ledger.Shelley.UTxO (getShelleyMinFeeTxUtxo, shelleyProducedValue) -import Cardano.Ledger.TxIn (TxIn) -import Cardano.Ledger.UTxO (EraUTxO (..), ScriptsProvided (..), UTxO (..)) -import Control.Applicative -import Control.SetAlgebra (eval, (◁)) -import Data.Foldable (toList) -import qualified Data.Map.Strict as Map -import Data.Set (Set) -import qualified Data.Set as Set -import Lens.Micro - -instance Crypto c => EraUTxO (BabbageEra c) where - {-# SPECIALIZE instance EraUTxO (BabbageEra StandardCrypto) #-} - type ScriptsNeeded (BabbageEra c) = AlonzoScriptsNeeded (BabbageEra c) - - getConsumedValue = getConsumedMaryValue - - getProducedValue = shelleyProducedValue - - getScriptsProvided = getBabbageScriptsProvided - - getScriptsNeeded = getAlonzoScriptsNeeded - {-# INLINEABLE getScriptsNeeded #-} - - getScriptsHashesNeeded = getAlonzoScriptsHashesNeeded - - getWitsVKeyNeeded = getAlonzoWitsVKeyNeeded - - getMinFeeTxUtxo pp tx _ = getShelleyMinFeeTxUtxo pp tx - -instance Crypto c => AlonzoEraUTxO (BabbageEra c) where - getSupplementalDataHashes = getBabbageSupplementalDataHashes - - getSpendingDatum = getBabbageSpendingDatum - -getBabbageSupplementalDataHashes :: - BabbageEraTxBody era => - UTxO era -> - TxBody era -> - Set.Set (DataHash (EraCrypto era)) -getBabbageSupplementalDataHashes (UTxO utxo) txBody = - Set.fromList [dh | txOut <- outs, SJust dh <- [txOut ^. dataHashTxOutL]] - where - newOuts = map sizedValue $ toList $ txBody ^. allSizedOutputsTxBodyF - referencedOuts = Map.elems $ Map.restrictKeys utxo (txBody ^. referenceInputsTxBodyL) - outs = newOuts <> referencedOuts - --- | Extract binary data either directly from the `Tx` as an "inline datum" --- or look it up in the witnesses by the hash. -getBabbageSpendingDatum :: - ( AlonzoEraTx era - , BabbageEraTxOut era - ) => - UTxO era -> - Tx era -> - PlutusPurpose AsItem era -> - Maybe (Data era) -getBabbageSpendingDatum (UTxO utxo) tx sp = do - AsItem txIn <- toSpendingPurpose sp - txOut <- Map.lookup txIn utxo - let txOutDataFromWits = do - dataHash <- strictMaybeToMaybe (txOut ^. dataHashTxOutL) - Map.lookup dataHash (unTxDats (tx ^. witsTxL . datsTxWitsL)) - strictMaybeToMaybe (txOut ^. dataTxOutL) <|> txOutDataFromWits - --- Figure 3 of the Specification -{- txscripts tx utxo = txwitscripts tx ∪ {hash s ↦ s | ( , , , s) ∈ utxo (spendInputs tx ∪ refInputs tx)} -} - --- Uses of inputs in ‘txscripts’ and ‘neededScripts’ --- There are currently 3 sets of inputs (spending, collateral, reference). A particular TxInput --- can appear in more than one of the sets. Even in all three at the same, but that may not be --- a really useful case. --- --- 1) Collateral inputs are only spent if phase two fails. Their corresponding TxOut can only have --- Key (not Script) Pay credentials, so ‘neededScripts’ does not look there. --- 2) Reference inputs are not spent in the current Tx, unless that same input also appears in one --- of the other sets. If that is not the case, their credentials are never needed, so anyone can --- access the inline datums and scripts in their corresponding TxOut, without needing any --- authorizing credentials. So ‘neededScripts’ does not look there. --- 3) Spending inputs are always spent. So their Pay credentials are always needed. --- --- Compute a Map of (ScriptHash -> Script) for all Scripts found in a AlonzoTx. --- Note we are interested in the actual scripts that might be run during the Utxow --- rule. There are two places to look: --- 1) The Script part of the TxWits --- 2) The reference scripts found in the TxOuts, pointed to by the spending and reference inputs --- of the Tx. Given such a TxOut, we look in the Pay credentials of the Addr of that TxOut. --- A. We only look in the Pay credential of the TxOut, because the Stake credential plays --- no role in the Utxow rule. --- B. We don’t use the collateral inputs, because they only have key-locked Pay credentials --- 3) Note that 'txscripts' includes both Plutus and Non-Plutus scripts --- --- The flip side is 'ScriptsNeeded' which computes the ScriptHash of every Pay Credential --- in spending and collateral inputs. Since reference inputs do not need to be authorized, --- 'scriptsNeeded' does not look there. --- It is an invariant that every such Credential points to some actual script found here. - -getBabbageScriptsProvided :: - ( EraTx era - , BabbageEraTxBody era - ) => - UTxO era -> - Tx era -> - ScriptsProvided era -getBabbageScriptsProvided utxo tx = ScriptsProvided ans - where - txBody = tx ^. bodyTxL - ins = (txBody ^. referenceInputsTxBodyL) `Set.union` (txBody ^. inputsTxBodyL) - ans = getReferenceScripts utxo ins `Map.union` (tx ^. witsTxL . scriptTxWitsL) - --- | Collect all the reference scripts found in the TxOuts, pointed to by some input. -getReferenceScripts :: - BabbageEraTxOut era => - UTxO era -> - Set (TxIn (EraCrypto era)) -> - Map.Map (ScriptHash (EraCrypto era)) (Script era) -getReferenceScripts utxo ins = Map.fromList (getReferenceScriptsNonDistinct utxo ins) - -getReferenceScriptsNonDistinct :: - BabbageEraTxOut era => - UTxO era -> - Set (TxIn (EraCrypto era)) -> - [(ScriptHash (EraCrypto era), Script era)] -getReferenceScriptsNonDistinct (UTxO mp) inputs = - [ (hashScript script, script) - | txOut <- Map.elems (eval (inputs ◁ mp)) - , SJust script <- [txOut ^. referenceScriptTxOutL] - ] diff --git a/eras/babbage/impl/test/Main.hs b/eras/babbage/impl/test/Main.hs deleted file mode 100644 index 756387591bc..00000000000 --- a/eras/babbage/impl/test/Main.hs +++ /dev/null @@ -1,29 +0,0 @@ -{-# LANGUAGE TypeApplications #-} - -module Main where - -import Cardano.Ledger.Babbage (Babbage) -import qualified Test.Cardano.Ledger.Alonzo.Binary.CostModelsSpec as CostModelsSpec -import qualified Test.Cardano.Ledger.Alonzo.Binary.TxWitsSpec as TxWitsSpec -import qualified Test.Cardano.Ledger.Alonzo.Imp as AlonzoImp -import qualified Test.Cardano.Ledger.Babbage.Binary.CddlSpec as CddlSpec -import qualified Test.Cardano.Ledger.Babbage.BinarySpec as BinarySpec -import Test.Cardano.Ledger.Babbage.ImpTest () -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Core.JSON (roundTripJsonEraSpec) -import qualified Test.Cardano.Ledger.Shelley.Imp as ShelleyImp - -main :: IO () -main = - ledgerTestMain $ - describe "Babbage" $ do - BinarySpec.spec - CddlSpec.spec - roundTripJsonEraSpec @Babbage - describe "Imp" $ do - AlonzoImp.spec @Babbage - ShelleyImp.spec @Babbage - describe "CostModels" $ do - CostModelsSpec.spec @Babbage - describe "TxWits" $ do - TxWitsSpec.spec @Babbage diff --git a/eras/babbage/impl/test/Test/Cardano/Ledger/Babbage/Binary/CddlSpec.hs b/eras/babbage/impl/test/Test/Cardano/Ledger/Babbage/Binary/CddlSpec.hs deleted file mode 100644 index a8da5f716e6..00000000000 --- a/eras/babbage/impl/test/Test/Cardano/Ledger/Babbage/Binary/CddlSpec.hs +++ /dev/null @@ -1,36 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Babbage.Binary.CddlSpec (spec) where - -import Cardano.Ledger.Allegra.Scripts -import Cardano.Ledger.Alonzo.Scripts (CostModels) -import Cardano.Ledger.Alonzo.TxWits (Redeemers) -import Cardano.Ledger.Babbage (Babbage) -import Cardano.Ledger.Core -import Cardano.Ledger.Plutus.Data (Data, Datum) -import Test.Cardano.Ledger.Babbage.Binary.Cddl (readBabbageCddlFiles) -import Test.Cardano.Ledger.Binary.Cddl ( - beforeAllCddlFile, - cddlRoundTripAnnCborSpec, - cddlRoundTripCborSpec, - ) -import Test.Cardano.Ledger.Common - -spec :: Spec -spec = - describe "CDDL" $ beforeAllCddlFile 3 readBabbageCddlFiles $ do - let v = eraProtVerHigh @Babbage - cddlRoundTripCborSpec @(Value Babbage) v "coin" - cddlRoundTripAnnCborSpec @(TxBody Babbage) v "transaction_body" - cddlRoundTripAnnCborSpec @(TxAuxData Babbage) v "auxiliary_data" - cddlRoundTripAnnCborSpec @(Timelock Babbage) v "native_script" - cddlRoundTripAnnCborSpec @(Data Babbage) v "plutus_data" - cddlRoundTripCborSpec @(TxOut Babbage) v "transaction_output" - cddlRoundTripAnnCborSpec @(Script Babbage) v "script" - cddlRoundTripCborSpec @(Datum Babbage) v "datum_option" - cddlRoundTripAnnCborSpec @(TxWits Babbage) v "transaction_witness_set" - cddlRoundTripCborSpec @(PParamsUpdate Babbage) v "protocol_param_update" - cddlRoundTripCborSpec @CostModels v "costmdls" - cddlRoundTripAnnCborSpec @(Redeemers Babbage) v "[* redeemer]" - cddlRoundTripAnnCborSpec @(Tx Babbage) v "transaction" diff --git a/eras/babbage/impl/test/Test/Cardano/Ledger/Babbage/BinarySpec.hs b/eras/babbage/impl/test/Test/Cardano/Ledger/Babbage/BinarySpec.hs deleted file mode 100644 index 82ebf96b2dc..00000000000 --- a/eras/babbage/impl/test/Test/Cardano/Ledger/Babbage/BinarySpec.hs +++ /dev/null @@ -1,41 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Babbage.BinarySpec (spec) where - -import Cardano.Ledger.Alonzo.Scripts -import Cardano.Ledger.Babbage -import Cardano.Ledger.Crypto (Crypto) -import Data.Default.Class (def) -import Test.Cardano.Ledger.Alonzo.Binary.RoundTrip (roundTripAlonzoCommonSpec) -import Test.Cardano.Ledger.Babbage.Arbitrary () -import Test.Cardano.Ledger.Babbage.TreeDiff () -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Core.Binary (specUpgrade) -import Test.Cardano.Ledger.Core.Binary.RoundTrip (RuleListEra (..), roundTripEraSpec) - -spec :: Spec -spec = do - specUpgrade @Babbage def - describe "RoundTrip" $ do - roundTripAlonzoCommonSpec @Babbage - -- CostModel serialization changes drastically for Conway, which requires a different - -- QuickCheck generator, hence Arbitrary can't be reused - roundTripEraSpec @Babbage @CostModels - -instance Crypto c => RuleListEra (BabbageEra c) where - type - EraRules (BabbageEra c) = - '[ "DELEG" - , "DELEGS" - , "DELPL" - , "LEDGER" - , "LEDGERS" - , "POOL" - , "PPUP" - , "UTXO" - , "UTXOW" - , "UTXOS" - ] diff --git a/eras/babbage/impl/testlib/Test/Cardano/Ledger/Babbage/Arbitrary.hs b/eras/babbage/impl/testlib/Test/Cardano/Ledger/Babbage/Arbitrary.hs deleted file mode 100644 index ddb71613a82..00000000000 --- a/eras/babbage/impl/testlib/Test/Cardano/Ledger/Babbage/Arbitrary.hs +++ /dev/null @@ -1,167 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Babbage.Arbitrary () where - -import Cardano.Ledger.Babbage -import Cardano.Ledger.Babbage.Core -import Cardano.Ledger.Babbage.PParams -import Cardano.Ledger.Babbage.Rules (BabbageUtxoPredFailure (..), BabbageUtxowPredFailure (..)) -import Cardano.Ledger.Babbage.Tx -import Cardano.Ledger.Babbage.TxBody (BabbageTxOut (..)) -import Cardano.Ledger.Babbage.TxInfo (BabbageContextError (..)) -import Cardano.Ledger.BaseTypes (StrictMaybe) -import Cardano.Ledger.Binary (Sized) -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Plutus.TxInfo (TxOutSource) -import Control.State.Transition (STS (PredicateFailure)) -import Data.Functor.Identity (Identity) -import Generic.Random (genericArbitraryU) -import Test.Cardano.Ledger.Alonzo.Arbitrary () -import Test.QuickCheck - -deriving instance Arbitrary CoinPerByte - -instance Arbitrary (BabbagePParams Identity era) where - arbitrary = - BabbagePParams - <$> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - -instance Arbitrary (BabbagePParams StrictMaybe era) where - arbitrary = - BabbagePParams - <$> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - -instance Crypto crypto => Arbitrary (TxOutSource crypto) where - arbitrary = genericArbitraryU - -instance - ( Era era - , Arbitrary (PlutusPurpose AsIx era) - ) => - Arbitrary (BabbageContextError era) - where - -- Switch to this implementation once #4110 is taken care of - -- arbitrary = genericArbitraryU - arbitrary = - oneof - [ AlonzoContextError <$> arbitrary - , ByronTxOutInContext <$> arbitrary - , -- , RedeemerPointerPointsToNothing <$> arbitrary -- see #4110 - InlineDatumsNotSupported <$> arbitrary - , ReferenceScriptsNotSupported <$> arbitrary - , ReferenceInputsNotSupported <$> arbitrary - ] - -instance - ( EraTxOut era - , Arbitrary (Value era) - , Arbitrary (TxOut era) - , Arbitrary (PredicateFailure (EraRule "UTXOS" era)) - ) => - Arbitrary (BabbageUtxoPredFailure era) - where - arbitrary = genericArbitraryU - -instance - ( Era era - , Arbitrary (PredicateFailure (EraRule "UTXO" era)) - , Arbitrary (TxCert era) - , Arbitrary (PlutusPurpose AsItem era) - , Arbitrary (PlutusPurpose AsIx era) - ) => - Arbitrary (BabbageUtxowPredFailure era) - where - arbitrary = genericArbitraryU - -instance - ( EraTxOut era - , Arbitrary (Value era) - , Arbitrary (Script era) - ) => - Arbitrary (BabbageTxOut era) - where - arbitrary = - BabbageTxOut - <$> arbitrary - <*> scale (`div` 15) arbitrary - <*> arbitrary - <*> arbitrary - -instance - ( BabbageEraTxBody era - , Arbitrary (Sized (TxOut era)) - , Arbitrary (TxOut era) - , Arbitrary (Value era) - , Arbitrary (Script era) - , Arbitrary (PParamsHKD StrictMaybe era) - , Arbitrary (TxCert era) - ) => - Arbitrary (BabbageTxBody era) - where - arbitrary = - BabbageTxBody - <$> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> scale (`div` 15) arbitrary - <*> arbitrary - <*> scale (`div` 15) arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary diff --git a/eras/babbage/impl/testlib/Test/Cardano/Ledger/Babbage/Binary/Cddl.hs b/eras/babbage/impl/testlib/Test/Cardano/Ledger/Babbage/Binary/Cddl.hs deleted file mode 100644 index 3c6aa9bf369..00000000000 --- a/eras/babbage/impl/testlib/Test/Cardano/Ledger/Babbage/Binary/Cddl.hs +++ /dev/null @@ -1,18 +0,0 @@ -module Test.Cardano.Ledger.Babbage.Binary.Cddl ( - readBabbageCddlFileNames, - readBabbageCddlFiles, -) where - -import qualified Data.ByteString.Lazy as BSL -import Paths_cardano_ledger_babbage - -readBabbageCddlFileNames :: IO [FilePath] -readBabbageCddlFileNames = do - base <- getDataFileName "cddl-files/babbage.cddl" - crypto <- getDataFileName "cddl-files/crypto.cddl" - extras <- getDataFileName "cddl-files/extras.cddl" - -- extras contains the types whose restrictions cannot be expressed in CDDL - pure [base, crypto, extras] - -readBabbageCddlFiles :: IO [BSL.ByteString] -readBabbageCddlFiles = mapM BSL.readFile =<< readBabbageCddlFileNames diff --git a/eras/babbage/impl/testlib/Test/Cardano/Ledger/Babbage/ImpTest.hs b/eras/babbage/impl/testlib/Test/Cardano/Ledger/Babbage/ImpTest.hs deleted file mode 100644 index 2f9874e7b7f..00000000000 --- a/eras/babbage/impl/testlib/Test/Cardano/Ledger/Babbage/ImpTest.hs +++ /dev/null @@ -1,43 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Babbage.ImpTest () where - -import Cardano.Crypto.DSIGN (DSIGNAlgorithm (..), Ed25519DSIGN) -import Cardano.Crypto.Hash (Hash) -import Cardano.Ledger.Babbage (BabbageEra) -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto (Crypto (..)) -import Cardano.Ledger.Plutus.Language (SLanguage (..)) -import Test.Cardano.Ledger.Allegra.ImpTest (impAllegraSatisfyNativeScript) -import Test.Cardano.Ledger.Alonzo.ImpTest ( - AlonzoEraImp (..), - alonzoFixupTx, - initAlonzoImpNES, - plutusTestScripts, - ) -import Test.Cardano.Ledger.Babbage.TreeDiff () -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Shelley.ImpTest (ShelleyEraImp (..)) - -instance - ( Crypto c - , NFData (SigDSIGN (DSIGN c)) - , NFData (VerKeyDSIGN (DSIGN c)) - , DSIGN c ~ Ed25519DSIGN - , Signable (DSIGN c) (Hash (HASH c) EraIndependentTxBody) - ) => - ShelleyEraImp (BabbageEra c) - where - initImpNES = initAlonzoImpNES - impSatisfyNativeScript = impAllegraSatisfyNativeScript - fixupTx = alonzoFixupTx - -instance ShelleyEraImp (BabbageEra c) => AlonzoEraImp (BabbageEra c) where - scriptTestContexts = plutusTestScripts SPlutusV1 <> plutusTestScripts SPlutusV2 diff --git a/eras/babbage/impl/testlib/Test/Cardano/Ledger/Babbage/TreeDiff.hs b/eras/babbage/impl/testlib/Test/Cardano/Ledger/Babbage/TreeDiff.hs deleted file mode 100644 index 8a8bb66e6b7..00000000000 --- a/eras/babbage/impl/testlib/Test/Cardano/Ledger/Babbage/TreeDiff.hs +++ /dev/null @@ -1,74 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE MonoLocalBinds #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Babbage.TreeDiff ( - module Test.Cardano.Ledger.Alonzo.TreeDiff, -) where - -import Cardano.Ledger.Address -import Cardano.Ledger.Alonzo.Rules -import Cardano.Ledger.Babbage (BabbageEra) -import Cardano.Ledger.Babbage.Core -import Cardano.Ledger.Babbage.PParams -import Cardano.Ledger.Babbage.Rules -import Cardano.Ledger.Babbage.TxBody -import Cardano.Ledger.Babbage.TxInfo (BabbageContextError (..)) -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.Compactible -import Cardano.Ledger.Shelley.Rules -import Test.Cardano.Ledger.Alonzo.TreeDiff - --- Core -deriving newtype instance ToExpr CoinPerByte - --- Scripts -instance ToExpr (PlutusScript (BabbageEra c)) - --- PlutusContext -instance ToExpr (PlutusPurpose AsIx era) => ToExpr (BabbageContextError era) - --- PParams -instance ToExpr (BabbagePParams StrictMaybe era) - -instance ToExpr (BabbagePParams Identity era) - --- TxOut -instance - ( ToExpr (CompactAddr (EraCrypto era)) - , ToExpr (CompactForm (Value era)) - , ToExpr (Script era) - ) => - ToExpr (BabbageTxOut era) - --- TxBody -instance - (Era era, ToExpr (TxOut era), ToExpr (TxCert era), ToExpr (PParamsUpdate era)) => - ToExpr (BabbageTxBodyRaw era) - -instance - (Era era, ToExpr (TxOut era), ToExpr (TxCert era), ToExpr (PParamsUpdate era)) => - ToExpr (BabbageTxBody era) - --- Rules/Utxo -instance - ( ToExpr (AlonzoUtxoPredFailure era) - , ToExpr (TxOut era) - ) => - ToExpr (BabbageUtxoPredFailure era) - --- Rules/Utxow -instance - ( Era era - , ToExpr (PredicateFailure (EraRule "UTXO" era)) - , ToExpr (PlutusPurpose AsIx era) - , ToExpr (PlutusPurpose AsItem era) - , ToExpr (TxCert era) - ) => - ToExpr (BabbageUtxowPredFailure era) diff --git a/eras/babbage/test-suite/.ghcid b/eras/babbage/test-suite/.ghcid deleted file mode 100644 index c70da9f9f3e..00000000000 --- a/eras/babbage/test-suite/.ghcid +++ /dev/null @@ -1 +0,0 @@ ---command="cabal repl --repl-options='-isrc -fwarn-unused-binds -fwarn-unused-imports -fno-code -fobject-code -g2 -fno-break-on-exception -fno-break-on-error -ferror-spans -j -Wno-unused-packages'" --clear --no-height-limit --reverse-errors --reload=../../../ --outputfile=/tmp/cardano-ledger-babbage-test-ghcid.txt \ No newline at end of file diff --git a/eras/babbage/test-suite/CHANGELOG.md b/eras/babbage/test-suite/CHANGELOG.md deleted file mode 100644 index fb609846b12..00000000000 --- a/eras/babbage/test-suite/CHANGELOG.md +++ /dev/null @@ -1,42 +0,0 @@ -# Version history for `cardano-ledger-babbage-test` - -## 1.2.0.2 - -* - -## 1.2.0.1 - -* - -## 1.2.0.0 - -* Remove `txInfoTestsBabbageOnly` and `BabbageTxInfoTests` - -## 1.1.1.8 - -* Move `cddl-files` to `cardano-ledger-alonzo` - -## 1.1.1.7 - -* Update CDDL files to reflect the change in header structure in - cardano-protocol-praos. - -## 1.1.1.6 - -* - -## 1.1.1.5 - -* - -## 1.1.1.4 - -* - -## 1.1.1.3 - -* - -## 1.1.1.2 - -* diff --git a/eras/babbage/test-suite/cardano-ledger-babbage-test.cabal b/eras/babbage/test-suite/cardano-ledger-babbage-test.cabal deleted file mode 100644 index f908814dce6..00000000000 --- a/eras/babbage/test-suite/cardano-ledger-babbage-test.cabal +++ /dev/null @@ -1,99 +0,0 @@ -cabal-version: 3.0 -name: cardano-ledger-babbage-test -version: 1.2.0.1 -license: Apache-2.0 -maintainer: operations@iohk.io -author: IOHK -bug-reports: https://github.com/intersectmbo/cardano-ledger/issues -synopsis: Tests for Cardano ledger babbage era -description: This package builds upon the Alonzo ledger -category: Network -build-type: Simple -data-files: golden/*.cbor - -source-repository head - type: git - location: https://github.com/intersectmbo/cardano-ledger - subdir: eras/babbage/test-suite - -library - exposed-modules: - Test.Cardano.Ledger.Babbage.Examples.Consensus - Test.Cardano.Ledger.Babbage.Serialisation.Generators - Test.Cardano.Ledger.Babbage.Translation.TranslatableGen - Test.Cardano.Ledger.Babbage.TxInfo - - hs-source-dirs: src - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints - -Wunused-packages - - build-depends: - base >=4.14 && <5, - cardano-ledger-allegra >=1.1, - cardano-ledger-binary:{cardano-ledger-binary, testlib} >=1.0, - cardano-ledger-alonzo:{cardano-ledger-alonzo, testlib} >=1.5.1, - cardano-ledger-alonzo-test >=1.1, - cardano-ledger-babbage:{cardano-ledger-babbage, testlib} >=1.5 && <1.9, - cardano-ledger-core:{cardano-ledger-core, testlib} >=1.11, - cardano-ledger-shelley-ma-test >=1.1, - cardano-ledger-mary >=1.4, - cardano-ledger-shelley-test >=1.1, - cardano-ledger-shelley >=1.6 && <1.11, - cardano-strict-containers, - cardano-slotting, - containers, - data-default-class, - microlens, - QuickCheck, - time, - plutus-ledger-api, - tasty, - tasty-hunit - -executable gen-golden - main-is: GenerateGoldenFileMain.hs - hs-source-dirs: test - other-modules: Paths_cardano_ledger_babbage_test - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints - -Wunused-packages - - build-depends: - base, - cardano-ledger-alonzo-test, - cardano-ledger-babbage, - cardano-ledger-babbage-test - -test-suite cardano-ledger-babbage-test - type: exitcode-stdio-1.0 - main-is: Tests.hs - hs-source-dirs: test - other-modules: - Test.Cardano.Ledger.Babbage.Serialisation.Tripping - Test.Cardano.Ledger.Babbage.GoldenTranslation - Paths_cardano_ledger_babbage_test - - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints - -Wunused-packages - - build-depends: - base, - cardano-ledger-binary:testlib, - cardano-ledger-alonzo-test, - cardano-ledger-babbage:{cardano-ledger-babbage, testlib}, - cardano-ledger-babbage-test, - cardano-ledger-core, - cardano-ledger-shelley-ma-test, - cardano-ledger-shelley-test, - cardano-protocol-tpraos >=1.0, - tasty-hunit, - tasty-quickcheck, - tasty diff --git a/eras/babbage/test-suite/golden/translations.cbor b/eras/babbage/test-suite/golden/translations.cbor deleted file mode 100644 index 7d436463411bd07e3c32b8f367fa2cf82c46530a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3752125 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

dIItpe8qb?9m5-%bOG(oRAN8S+%Gm?X443;& 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%0D?tk=&TzL56w2YbB{xbrIRh-@-b_Z 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⩔5MD(gDgLvLAoae86dt!F&8I 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 nbLR2rFevs$xq^ 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%0Dg0lwp3`;qJY>(Gl@1ZO=S&5J1fRcDIGxwd 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
HkjgtIe)vt#03w>}=V`BntN&6z`%Fd$RXnuvUm= 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¥5XkP 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�oC|{3tpRZ*$G7^9%8b`LPVG!%J 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

KI#K5J{HI{G9;(;keEAz<_R5WdeqM%2bXB-}?# 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 ~yqALeub)j%&X7}X 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%0D5luhXGCB2^#i-y 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�uRbkn*#eex4_ipm)GS1Fz`KNGR8$Dq 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�o5)A2??qxQt!OS`@w?tF-JRi-S-;wGQ0-Oh3&4ns)!X>s)N0y_&-*_?*;bsgn6kM|dz9`K zo6hMcdyJM7IDjQ&czWS$T{CjP663c8c8T}&2CYnm#PJ#}axbX-XnJH+NT=Sunwh5? zviIr<*=oK`TcG%e9wbJb7y#ed$|(Sk5Y%{SbxuI)!}v`9>4hf$SNFa(TbuJek4CuI zOy*5?J#B_V+HZ&vH^F&_gG6G#m%M<6X7i;jKIa-HQ`%Kjt;w{fPgLJv%C1*~_Gn!6 zvnZo|M<*;!Uf#79bAb}=g)yDl_;`|9i{=~AWVY{NS8WPUzM9Qczy(bT8Ow5eU2LVG zQ5!ezymz#>?wG;lJAMoC`{S<1QT9T&+EA8-;&?lTPn<=a*zG#E=dc$~yG!3)o9j$h z)Sw1!>1EAl7zerbPZP|p)<|5%A+8KS#6^8pU#C1Do0YRXm1a`oM3Z*XCz#bi^#q<# z<20~QQ3-)bx#lTfL*ShlXD9P29{4df_2=U15{Ck%PUwEk2e7&;L+d`U%R-%Qs7akTNO{io_atLe^&VzL|gra2U*5}i*9yEKv8@ZaFu9dxku98Jq|`s z>R%c4O<4HzM!^>{gL^0Ya*rXIS#N$Uy|E_j>v$vU$QYUQd;Grgs(JZ=n=@p!w~hiE zAFLPt<`kIv0Q9PBGDmDW<3exoynm$`6oftIK`VK2U4ZK)^vD|u;#v$57;;rqZKBdJ zi6h8zm?_%Rbi$qt^se8Fj5^Wm)FTBB86DwXh7lICEwhFngI7hpU*fEd|* zT6beW46w+F&Zkf8PjX=UR2z0ozoud4p!?EgwL|2EYjq!t#79phd~*5d$&7xGv0P=A z;qRe1jacZvkiGTpaX$FqQ4N;ANV5CZv(GqprD>WixAp4UPNB{DP?s-!=y=cEB4u{B z{;OCP7ZpYt`VyU@=iJ8i_A(T_j>N$N+*nMU2oVXy8_Ne$AXnn7dV>qNjS0wBY(kO~ zc<_9ZYY-fwKHg3`f|D7N$dnWBXn$eobMRZ`giz0}JxnyTg2}$>V1s4n?v2m+aBi2& zL-kW0LkZ%_E{qIah!`hI&z|JD#q0M(J5C)C%z7-fey?fNMV<1A%icS39VfMoMSKP# zt%18ZEwOmUaKBs!U6R!2JWn@^K0s|;^(om_*E%V3Q6P6_^R@F&Z+`HJ!?odN0{{>) zpz`7n4Xhyy-ZM0OdLkFoyzCB;x3wCckWd%S=JoP&Nx8vo0f&@xwGtKMi^Cjv|L}@` z^X(va2kpJ%0uOXLmn+ZHY151by_-vLcw}onm3}{@NmPe-UWV@V(xt+;^>cMux6S~? z=#S*No!l9!3>2eR8C~GK`Pg*|`)*Wxh@+&EDXGW{Ub;Y9QjDg)?F zoS}i;-Xxd|(EQE`@ITGht+CVe(O=)SmbA_4t}2_T8N!C19Qx5+rUQq>E}S814tZy? zzG6xl%8l;=I)#5cDz{VTYcuz7bqIcx$tHjef7z#_NS&f-CB``)Q@SFR z*31qxKfFu5;QpESWk7SW@Wbvqy=zlC*v{)ukIo+&?(*!f<*cB&&s5q3mT_}@EiS?i6d#bpWA{I& z1G}LF^w$Uip$P1dqObY@sxASKB%lProPwMmRR%-fEh7kqlJVma7{@Uxls6d}IFSp5 z=Hh`o1-i$SfQjRsAx>&U_^{U!_gYb)E)(()*o<#kw1NbDAxayy4ikVuuvQKQN64Uf z3PD0Hfw&3APmXTgPskTQkzpK`JHR}MV(d&P4E&8%8ydbu$fFPd4Pp>R_6rjXTBK+H zva!pa(%hG}@|j=F%^ttLzW0`~bCX}thn|}+T-;v5A*El|!@!g|RL4X_#%XD`Q8GbA zhEMbRMcLr++ae{R`AMIi7$)o!DG$OKBHxPMr56v0XBO1-x~8%0D2=E(v@yqjqxWc^ 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 z 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 z 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 uexsHlDG99sVELQ#D6cqsX|Yc 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 diff --git a/eras/babbage/test-suite/src/Test/Cardano/Ledger/Babbage/Examples/Consensus.hs b/eras/babbage/test-suite/src/Test/Cardano/Ledger/Babbage/Examples/Consensus.hs deleted file mode 100644 index b1f9422aa21..00000000000 --- a/eras/babbage/test-suite/src/Test/Cardano/Ledger/Babbage/Examples/Consensus.hs +++ /dev/null @@ -1,187 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Babbage.Examples.Consensus where - -import Cardano.Ledger.Allegra.Scripts (Timelock (..)) -import Cardano.Ledger.Alonzo.Scripts (AlonzoPlutusPurpose (..), AlonzoScript (..), ExUnits (..)) -import Cardano.Ledger.Alonzo.Translation () -import Cardano.Ledger.Alonzo.Tx (AlonzoTx (..), IsValid (..)) -import Cardano.Ledger.Alonzo.TxAuxData ( - AuxiliaryDataHash (..), - mkAlonzoTxAuxData, - ) -import Cardano.Ledger.Alonzo.TxWits (AlonzoTxWits (..), Redeemers (..), TxDats (..)) -import Cardano.Ledger.Babbage (Babbage) -import Cardano.Ledger.Babbage.Core -import Cardano.Ledger.Babbage.Translation () -import Cardano.Ledger.Babbage.TxBody (BabbageTxBody (..), BabbageTxOut (..)) -import Cardano.Ledger.BaseTypes (StrictMaybe (..)) -import Cardano.Ledger.Binary (mkSized) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Crypto (StandardCrypto) -import Cardano.Ledger.Keys (asWitness) -import Cardano.Ledger.Mary.Value (MaryValue (..)) -import Cardano.Ledger.Plutus.Data ( - Data (..), - Datum (..), - dataToBinaryData, - hashData, - ) -import Cardano.Ledger.Plutus.Language (Language (..)) -import Cardano.Ledger.SafeHash (hashAnnotated) -import Cardano.Ledger.Shelley.API ( - ApplyTxError (..), - Credential (..), - Network (..), - NewEpochState (..), - ProposedPPUpdates (..), - RewardAccount (..), - TxId (..), - Update (..), - ) -import Cardano.Ledger.Shelley.Rules (ShelleyDelegsPredFailure (..), ShelleyLedgerPredFailure (..)) -import Cardano.Ledger.Shelley.Tx (ShelleyTx (..)) -import Cardano.Ledger.TxIn (mkTxInPartial) -import Cardano.Slotting.Slot (EpochNo (..), SlotNo (..)) -import Data.Default.Class (def) -import qualified Data.Map.Strict as Map -import Data.Proxy (Proxy (..)) -import qualified Data.Sequence.Strict as StrictSeq -import qualified Data.Set as Set -import Lens.Micro -import qualified PlutusLedgerApi.Common as P -import Test.Cardano.Ledger.Alonzo.Arbitrary (alwaysFails, alwaysSucceeds) -import Test.Cardano.Ledger.Core.KeyPair (mkAddr, mkWitnessesVKey) -import qualified Test.Cardano.Ledger.Core.Utils as SLE -import qualified Test.Cardano.Ledger.Mary.Examples.Consensus as MarySLE -import qualified Test.Cardano.Ledger.Shelley.Examples.Consensus as SLE - --- | ShelleyLedgerExamples for Babbage era -ledgerExamplesBabbage :: SLE.ShelleyLedgerExamples Babbage -ledgerExamplesBabbage = - SLE.ShelleyLedgerExamples - { SLE.sleBlock = SLE.exampleShelleyLedgerBlock exampleTransactionInBlock - , SLE.sleHashHeader = SLE.exampleHashHeader (Proxy @Babbage) - , SLE.sleTx = exampleTransactionInBlock - , SLE.sleApplyTxError = - ApplyTxError $ - pure $ - DelegsFailure $ - DelegateeNotRegisteredDELEG @Babbage (SLE.mkKeyHash 1) - , SLE.sleRewardsCredentials = - Set.fromList - [ Left (Coin 100) - , Right (ScriptHashObj (SLE.mkScriptHash 1)) - , Right (KeyHashObj (SLE.mkKeyHash 2)) - ] - , SLE.sleResultExamples = resultExamples - , SLE.sleNewEpochState = exampleBabbageNewEpochState - , SLE.sleChainDepState = SLE.exampleLedgerChainDepState 1 - , SLE.sleTranslationContext = () - } - where - resultExamples = - SLE.ShelleyResultExamples - { SLE.srePParams = def - , SLE.sreProposedPPUpdates = examplePPPU - , SLE.srePoolDistr = SLE.examplePoolDistr - , SLE.sreNonMyopicRewards = SLE.exampleNonMyopicRewards - , SLE.sreShelleyGenesis = SLE.testShelleyGenesis - } - examplePPPU = - ProposedPPUpdates $ - Map.singleton - (SLE.mkKeyHash 0) - (emptyPParamsUpdate & ppuCollateralPercentageL .~ SJust 150) - -collateralOutput :: BabbageTxOut Babbage -collateralOutput = - BabbageTxOut - (mkAddr (SLE.examplePayKey, SLE.exampleStakeKey)) - (MaryValue (Coin 8675309) mempty) - NoDatum - SNothing - -exampleTxBodyBabbage :: TxBody Babbage -exampleTxBodyBabbage = - BabbageTxBody - (Set.fromList [mkTxInPartial (TxId (SLE.mkDummySafeHash Proxy 1)) 0]) -- spending inputs - (Set.fromList [mkTxInPartial (TxId (SLE.mkDummySafeHash Proxy 2)) 1]) -- collateral inputs - (Set.fromList [mkTxInPartial (TxId (SLE.mkDummySafeHash Proxy 1)) 3]) -- reference inputs - ( StrictSeq.fromList - [ mkSized (eraProtVerHigh @Babbage) $ - BabbageTxOut - (mkAddr (SLE.examplePayKey, SLE.exampleStakeKey)) - (MarySLE.exampleMultiAssetValue 2) - (Datum $ dataToBinaryData datumExample) -- inline datum - (SJust $ alwaysSucceeds @'PlutusV2 3) -- reference script - ] - ) - (SJust $ mkSized (eraProtVerHigh @Babbage) collateralOutput) -- collateral return - (SJust $ Coin 8675309) -- collateral tot - SLE.exampleCerts -- txcerts - ( Withdrawals $ - Map.singleton - (RewardAccount Testnet (SLE.keyToCredential SLE.exampleStakeKey)) - (Coin 100) -- txwdrls - ) - (Coin 999) -- txfee - (ValidityInterval (SJust (SlotNo 2)) (SJust (SlotNo 4))) -- txvldt - ( SJust $ - Update - ( ProposedPPUpdates $ - Map.singleton - (SLE.mkKeyHash 1) - (emptyPParamsUpdate & ppuMaxBHSizeL .~ SJust 4000) - ) - (EpochNo 0) - ) -- txUpdates - (Set.singleton $ SLE.mkKeyHash 212) -- reqSignerHashes - exampleMultiAsset -- mint - (SJust $ SLE.mkDummySafeHash (Proxy @StandardCrypto) 42) -- scriptIntegrityHash - (SJust . AuxiliaryDataHash $ SLE.mkDummySafeHash (Proxy @StandardCrypto) 42) -- adHash - (SJust Mainnet) -- txnetworkid - where - MaryValue _ exampleMultiAsset = MarySLE.exampleMultiAssetValue 3 - -datumExample :: Data Babbage -datumExample = Data (P.I 191) - -redeemerExample :: Data Babbage -redeemerExample = Data (P.I 919) - -exampleTx :: ShelleyTx Babbage -exampleTx = - ShelleyTx - exampleTxBodyBabbage - ( AlonzoTxWits - (mkWitnessesVKey (hashAnnotated exampleTxBodyBabbage) [asWitness SLE.examplePayKey]) -- vkey - mempty -- bootstrap - ( Map.singleton - (hashScript @Babbage $ alwaysSucceeds @'PlutusV1 3) - (alwaysSucceeds @'PlutusV1 3) -- txscripts - ) - (TxDats $ Map.singleton (hashData datumExample) datumExample) - ( Redeemers $ - Map.singleton (AlonzoSpending $ AsIx 0) (redeemerExample, ExUnits 5000 5000) - ) -- redeemers - ) - ( SJust $ - mkAlonzoTxAuxData - SLE.exampleAuxDataMap -- metadata - [alwaysFails @'PlutusV1 2, TimelockScript $ RequireAllOf mempty] -- Scripts - ) - -exampleTransactionInBlock :: AlonzoTx Babbage -exampleTransactionInBlock = AlonzoTx b w (IsValid True) a - where - ShelleyTx b w a = exampleTx - -exampleBabbageNewEpochState :: NewEpochState Babbage -exampleBabbageNewEpochState = - SLE.exampleNewEpochState - (MarySLE.exampleMultiAssetValue 1) - emptyPParams - (emptyPParams & ppCoinsPerUTxOByteL .~ CoinPerByte (Coin 1)) diff --git a/eras/babbage/test-suite/src/Test/Cardano/Ledger/Babbage/Serialisation/Generators.hs b/eras/babbage/test-suite/src/Test/Cardano/Ledger/Babbage/Serialisation/Generators.hs deleted file mode 100644 index fc8dd5f4bbe..00000000000 --- a/eras/babbage/test-suite/src/Test/Cardano/Ledger/Babbage/Serialisation/Generators.hs +++ /dev/null @@ -1,84 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE PartialTypeSignatures #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TupleSections #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Babbage.Serialisation.Generators where - -import Cardano.Ledger.Babbage.Core -import Cardano.Ledger.Babbage.Tx -import Cardano.Ledger.Babbage.TxBody (BabbageTxOut (..)) -import Cardano.Ledger.Binary (Sized, Term (..)) -import Cardano.Ledger.Shelley.PParams (Update (..)) -import Cardano.Ledger.Val (Val) -import Data.Maybe (catMaybes) -import Test.Cardano.Ledger.Alonzo.Serialisation.Generators () -import Test.Cardano.Ledger.Binary.Twiddle (Twiddle (..), emptyOrNothing, toTerm, twiddleStrictMaybe) -import Test.QuickCheck - -instance EraPParams era => Twiddle (Update era) where - twiddle v = twiddle v . toTerm v - -instance Twiddle a => Twiddle (Sized a) - -instance (EraScript era, Val (Value era)) => Twiddle (BabbageTxOut era) where - twiddle v = twiddle v . toTerm v - -instance - ( Era era - , Twiddle (TxOut era) - , Twiddle (TxCert era) - , BabbageEraTxBody era - ) => - Twiddle (BabbageTxBody era) - where - twiddle v txBody = do - inputs' <- twiddle v $ btbInputs txBody - outputs' <- twiddle v $ btbOutputs txBody - fee' <- twiddle v $ btbTxFee txBody - -- Empty collateral can be represented by empty set or the - -- value can be omitted entirely - ttl' <- twiddleStrictMaybe v . invalidHereafter $ btbValidityInterval txBody - cert' <- emptyOrNothing v $ btbCerts txBody - withdrawals' <- twiddle v $ btbWithdrawals txBody - update' <- twiddleStrictMaybe v $ btbUpdate txBody - auxDataHash' <- twiddleStrictMaybe v $ btbAuxDataHash txBody - validityStart' <- twiddleStrictMaybe v . invalidBefore $ btbValidityInterval txBody - mint' <- twiddle v $ btbMint txBody - scriptDataHash' <- twiddleStrictMaybe v $ btbScriptIntegrityHash txBody - collateral' <- emptyOrNothing v $ btbCollateral txBody - requiredSigners' <- emptyOrNothing v $ btbReqSignerHashes txBody - networkId' <- twiddleStrictMaybe v $ btbTxNetworkId txBody - collateralReturn <- twiddleStrictMaybe v $ btbCollateralReturn txBody - totalCollateral <- twiddleStrictMaybe v $ btbTotalCollateral txBody - referenceInputs <- emptyOrNothing v $ btbReferenceInputs txBody - mp <- elements [TMap, TMapI] - let fields = - [ (TInt 0, inputs') - , (TInt 1, outputs') - , (TInt 2, fee') - ] - <> catMaybes - [ (TInt 3,) <$> ttl' - , (TInt 4,) <$> cert' - , (TInt 5,) <$> Just withdrawals' - , (TInt 6,) <$> update' - , (TInt 7,) <$> auxDataHash' - , (TInt 8,) <$> validityStart' - , (TInt 9,) <$> Just mint' - , (TInt 11,) <$> scriptDataHash' - , (TInt 13,) <$> collateral' - , (TInt 14,) <$> requiredSigners' - , (TInt 15,) <$> networkId' - , (TInt 16,) <$> collateralReturn - , (TInt 17,) <$> totalCollateral - , (TInt 18,) <$> referenceInputs - ] - fields' <- shuffle fields - pure $ mp fields' diff --git a/eras/babbage/test-suite/src/Test/Cardano/Ledger/Babbage/Translation/TranslatableGen.hs b/eras/babbage/test-suite/src/Test/Cardano/Ledger/Babbage/Translation/TranslatableGen.hs deleted file mode 100644 index 69bb4896bf7..00000000000 --- a/eras/babbage/test-suite/src/Test/Cardano/Ledger/Babbage/Translation/TranslatableGen.hs +++ /dev/null @@ -1,173 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Babbage.Translation.TranslatableGen ( - genTx, - genTxOut, - utxoWithTx, -) where - -import Cardano.Ledger.Address (Addr (..)) -import Cardano.Ledger.Alonzo.Scripts (AlonzoPlutusPurpose (..), ExUnits (..)) -import Cardano.Ledger.Alonzo.Tx (AlonzoTx (..)) -import Cardano.Ledger.Alonzo.TxWits -import Cardano.Ledger.Babbage (Babbage, BabbageEra) -import Cardano.Ledger.Babbage.Core -import Cardano.Ledger.Babbage.TxBody (BabbageTxBody (..), BabbageTxOut (..)) -import Cardano.Ledger.Binary (mkSized) -import Cardano.Ledger.Credential (StakeReference (..)) -import Cardano.Ledger.Crypto -import Cardano.Ledger.Plutus.Data (Data (..), Datum (..)) -import Cardano.Ledger.Plutus.Language (Language (..), SLanguage (..)) -import Cardano.Ledger.TxIn (TxIn (..)) -import Cardano.Ledger.UTxO (UTxO (..)) -import qualified Data.Map.Strict as Map -import Data.Maybe.Strict -import Data.Sequence.Strict (fromList) -import qualified Data.Set as Set -import Lens.Micro ((^.)) -import Test.Cardano.Ledger.Alonzo.Arbitrary (genScripts) -import Test.Cardano.Ledger.Alonzo.Translation.TranslatableGen ( - TranslatableGen (..), - TxInfoLanguage (..), - ) -import Test.Cardano.Ledger.Babbage.Arbitrary () -import Test.Cardano.Ledger.Babbage.Serialisation.Generators () -import Test.Cardano.Ledger.Core.Arbitrary () -import Test.QuickCheck ( - Arbitrary, - Gen, - arbitrary, - elements, - frequency, - listOf1, - oneof, - scale, - vectorOf, - ) - -instance TranslatableGen Babbage where - tgRedeemers = genRedeemers - tgTx l = genTx @Babbage (genTxBody l) - tgUtxo = utxoWithTx @Babbage - mkTxInfoLanguage PlutusV1 = TxInfoLanguage SPlutusV1 - mkTxInfoLanguage PlutusV2 = TxInfoLanguage SPlutusV2 - mkTxInfoLanguage lang = - error $ "Language " ++ show lang ++ " is not supported in " ++ eraName @Babbage - -utxoWithTx :: - forall era. - ( EraTx era - , Arbitrary (Value era) - , Arbitrary (Script era) - , TxOut era ~ BabbageTxOut era - ) => - Language -> - Tx era -> - Gen (UTxO era) -utxoWithTx l tx = do - let allIns = tx ^. bodyTxL ^. allInputsTxBodyF - outs <- vectorOf (length allIns) (genTxOut @era l) - pure $ UTxO (Map.fromList $ Set.toList allIns `zip` outs) - -genTx :: - forall era. - ( TranslatableGen era - , Arbitrary (TxAuxData era) - , Arbitrary (Script era) - , AlonzoEraScript era - , AlonzoTxWits era ~ TxWits era - ) => - Gen (TxBody era) -> - Gen (AlonzoTx era) -genTx txbGen = - AlonzoTx - <$> txbGen - <*> genTxWits @era - <*> arbitrary - <*> arbitrary - -genTxOut :: - forall era. - ( EraTxOut era - , Arbitrary (Value era) - , Arbitrary (Script era) - ) => - Language -> - Gen (BabbageTxOut era) -genTxOut l = do - addr <- genNonByronAddr @(EraCrypto era) - value <- scale (`div` 15) arbitrary - script <- case l of - PlutusV1 -> pure SNothing - _ -> arbitrary - datum <- case l of - PlutusV1 -> oneof [pure NoDatum, DatumHash <$> (arbitrary :: Gen (DataHash (EraCrypto era)))] - _ -> arbitrary - pure $ BabbageTxOut addr value datum script - -genTxBody :: forall c. Crypto c => Language -> Gen (BabbageTxBody (BabbageEra c)) -genTxBody l = do - let genTxOuts = fromList <$> listOf1 (mkSized (eraProtVerLow @Babbage) <$> genTxOut @(BabbageEra c) l) - let genTxIns = Set.fromList <$> listOf1 (arbitrary :: Gen (TxIn c)) - BabbageTxBody - <$> genTxIns - <*> arbitrary - <*> ( case l of -- refinputs - PlutusV1 -> pure Set.empty - _ -> arbitrary - ) - <*> genTxOuts - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> scale (`div` 15) arbitrary - <*> arbitrary - <*> scale (`div` 15) arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - -genNonByronAddr :: forall c. Crypto c => Gen (Addr c) -genNonByronAddr = - Addr - <$> arbitrary - <*> arbitrary - <*> frequency - [ (85, StakeRefBase <$> arbitrary) - , (15, pure StakeRefNull) - ] - -genTxWits :: - ( TranslatableGen era - , Arbitrary (Script era) - , AlonzoEraScript era - ) => - Gen (AlonzoTxWits era) -genTxWits = - AlonzoTxWits - <$> arbitrary - <*> arbitrary - <*> genScripts - <*> arbitrary - <*> tgRedeemers - -genRedeemers :: - forall era. - (AlonzoEraScript era, PlutusPurpose AsIx era ~ AlonzoPlutusPurpose AsIx era) => - Gen (Redeemers era) -genRedeemers = do - d <- arbitrary :: Gen (Data era) - eu <- arbitrary :: Gen ExUnits - -- We provide `RdrmPtr Spend 0` as the only valid reedemer, because - -- for any other redeemer type, we would have to modify the body of the transaction - -- in order for the translation to succeed - Redeemers <$> elements [Map.singleton (AlonzoSpending $ AsIx 0) (d, eu), Map.empty] diff --git a/eras/babbage/test-suite/src/Test/Cardano/Ledger/Babbage/TxInfo.hs b/eras/babbage/test-suite/src/Test/Cardano/Ledger/Babbage/TxInfo.hs deleted file mode 100644 index 9ac3f87db4a..00000000000 --- a/eras/babbage/test-suite/src/Test/Cardano/Ledger/Babbage/TxInfo.hs +++ /dev/null @@ -1,382 +0,0 @@ -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeOperators #-} - -module Test.Cardano.Ledger.Babbage.TxInfo where - -import Cardano.Ledger.Address (Addr (..), BootstrapAddress (..)) -import Cardano.Ledger.Alonzo.Plutus.Context ( - ContextError, - EraPlutusTxInfo (toPlutusTxInfo), - PlutusTxInfo, - ) -import Cardano.Ledger.Alonzo.Plutus.TxInfo (AlonzoContextError (..), TxOutSource (..)) -import Cardano.Ledger.Babbage.Core -import Cardano.Ledger.Babbage.TxInfo (BabbageContextError (..), transTxInInfoV2, transTxOutV2) -import Cardano.Ledger.BaseTypes (Inject (..), Network (..), StrictMaybe (..), natVersion) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Credential (StakeReference (..)) -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Mary.Value (MaryValue) -import Cardano.Ledger.Plutus.Data (Data (..), Datum (..), dataToBinaryData) -import Cardano.Ledger.Plutus.Language (Language (..), SLanguage (..)) -import Cardano.Ledger.TxIn (TxIn (..), mkTxInPartial) -import Cardano.Ledger.UTxO (UTxO (..)) -import Cardano.Slotting.EpochInfo (EpochInfo, fixedEpochInfo) -import Cardano.Slotting.Slot (EpochSize (..)) -import Cardano.Slotting.Time (SystemStart (..), mkSlotLength) -import Data.Default.Class (def) -import qualified Data.Map.Strict as Map -import Data.Proxy (Proxy (..)) -import qualified Data.Sequence.Strict as StrictSeq -import qualified Data.Set as Set -import Data.Time.Clock.POSIX (posixSecondsToUTCTime) -import GHC.Stack -import Lens.Micro -import qualified PlutusLedgerApi.V1 as PV1 -import qualified PlutusLedgerApi.V2 as PV2 -import qualified PlutusLedgerApi.V3 as PV3 -import Test.Cardano.Ledger.Alonzo.Arbitrary (alwaysSucceeds) -import Test.Cardano.Ledger.Shelley.Address.Bootstrap (aliceByronAddr) -import Test.Cardano.Ledger.Shelley.Examples.Cast (alicePHK) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (genesisId) -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.HUnit (Assertion, assertBool, assertFailure, testCase, (@?=)) - -byronAddr :: Addr c -byronAddr = AddrBootstrap (BootstrapAddress aliceByronAddr) - -shelleyAddr :: Crypto c => Addr c -shelleyAddr = Addr Testnet alicePHK StakeRefNull - -ei :: EpochInfo (Either a) -ei = fixedEpochInfo (EpochSize 100) (mkSlotLength 1) - -ss :: SystemStart -ss = SystemStart $ posixSecondsToUTCTime 0 - --- This input is only a "Byron input" in the sense --- that we attach it to a Byron output in the UTxO created below. -byronInput :: Crypto c => TxIn c -byronInput = mkTxInPartial genesisId 0 - --- This input is only unknown in the sense --- that it is not present in the UTxO created below. -unknownInput :: Crypto c => TxIn c -unknownInput = mkTxInPartial genesisId 1 - -byronOutput :: forall era. EraTxOut era => TxOut era -byronOutput = mkBasicTxOut byronAddr (inject $ Coin 1) - -shelleyOutput :: forall era. EraTxOut era => TxOut era -shelleyOutput = mkBasicTxOut (shelleyAddr) (inject $ Coin 2) - -datumEx :: forall era. Era era => Datum era -datumEx = Datum . dataToBinaryData . Data . PV1.I $ 123 - -inlineDatumOutput :: - forall era. - ( BabbageEraTxOut era - , Value era ~ MaryValue (EraCrypto era) - ) => - TxOut era -inlineDatumOutput = - mkBasicTxOut (shelleyAddr) (inject $ Coin 3) - & datumTxOutL .~ datumEx - -refScriptOutput :: BabbageEraTxOut era => TxOut era -refScriptOutput = - mkBasicTxOut (shelleyAddr) (inject $ Coin 3) - & referenceScriptTxOutL .~ (SJust $ alwaysSucceeds @'PlutusV2 3) - --- This input is only a "Shelley input" in the sense --- that we attach it to a Shelley output in the UTxO created below. -shelleyInput :: Crypto c => TxIn c -shelleyInput = mkTxInPartial genesisId 2 - -inputWithInlineDatum :: Crypto c => TxIn c -inputWithInlineDatum = mkTxInPartial genesisId 3 - -inputWithRefScript :: Crypto c => TxIn c -inputWithRefScript = mkTxInPartial genesisId 4 - -utxo :: - ( BabbageEraTxOut era - , Value era ~ MaryValue (EraCrypto era) - ) => - UTxO era -utxo = - UTxO $ - Map.fromList - [ (byronInput, byronOutput) - , (shelleyInput, shelleyOutput) - , (inputWithInlineDatum, inlineDatumOutput) - , (inputWithRefScript, refScriptOutput) - ] - -txb :: - forall era. - BabbageEraTxBody era => - TxIn (EraCrypto era) -> - Maybe (TxIn (EraCrypto era)) -> - TxOut era -> - TxBody era -txb i mRefInp o = - mkBasicTxBody - & inputsTxBodyL .~ Set.singleton i - & referenceInputsTxBodyL .~ maybe mempty Set.singleton mRefInp - & outputsTxBodyL .~ StrictSeq.singleton o - & feeTxBodyL .~ Coin 2 - -txBare :: - forall era. - (EraTx era, BabbageEraTxBody era) => - TxIn (EraCrypto era) -> - TxOut era -> - Tx era -txBare i o = mkBasicTx (txb i Nothing o) - -txRefInput :: forall era. (EraTx era, BabbageEraTxBody era) => TxIn (EraCrypto era) -> Tx era -txRefInput refInput = mkBasicTx (txb shelleyInput (Just refInput) shelleyOutput) - -hasReferenceInput :: SLanguage l -> PlutusTxInfo l -> Bool -hasReferenceInput slang txInfo = - case slang of - SPlutusV1 -> False - SPlutusV2 -> PV2.txInfoReferenceInputs txInfo /= mempty - SPlutusV3 -> PV3.txInfoReferenceInputs txInfo /= mempty - -expectOneInput :: PV2.TxInInfo -> SLanguage l -> PlutusTxInfo l -> Bool -expectOneInput i slang txInfo = - case slang of - SPlutusV1 -> False - SPlutusV2 -> PV2.txInfoInputs txInfo == [i] - SPlutusV3 -> False - -expectOneOutput :: PV2.TxOut -> SLanguage l -> PlutusTxInfo l -> Bool -expectOneOutput o slang txInfo = - case slang of - SPlutusV1 -> False - SPlutusV2 -> PV2.txInfoOutputs txInfo == [o] - SPlutusV3 -> PV3.txInfoOutputs txInfo == [o] - -successfulTranslation :: - ( BabbageEraTxOut era - , EraPlutusTxInfo l era - , Value era ~ MaryValue (EraCrypto era) - ) => - SLanguage l -> - Tx era -> - (SLanguage l -> PlutusTxInfo l -> Bool) -> - Assertion -successfulTranslation slang tx f = - case toPlutusTxInfo slang def ei ss utxo tx of - Right txInfo -> assertBool "unexpected transaction info" (f slang txInfo) - Left e -> assertFailure $ "no translation error was expected, but got: " <> show e - -expectTranslationError :: - ( BabbageEraTxOut era - , EraPlutusTxInfo l era - , Value era ~ MaryValue (EraCrypto era) - ) => - SLanguage l -> - Tx era -> - ContextError era -> - Assertion -expectTranslationError slang tx expected = - case toPlutusTxInfo slang def ei ss utxo tx of - Right _ -> assertFailure "This translation was expected to fail, but it succeeded." - Left e -> e @?= expected - -expectV1TranslationError :: - ( BabbageEraTxOut era - , EraPlutusTxInfo 'PlutusV1 era - , Value era ~ MaryValue (EraCrypto era) - ) => - Tx era -> - ContextError era -> - Assertion -expectV1TranslationError = expectTranslationError SPlutusV1 - -errorTranslate :: - forall era b. - (HasCallStack, Show (ContextError era)) => - String -> - Either (ContextError era) b -> - b -errorTranslate exampleName = - either (\err -> error $ exampleName ++ " failed: " ++ show err) id - -translatedInputEx1 :: - forall era. - ( BabbageEraTxOut era - , Show (ContextError era) - , Value era ~ MaryValue (EraCrypto era) - , Inject (BabbageContextError era) (ContextError era) - ) => - Proxy era -> - PV2.TxInInfo -translatedInputEx1 _ = - errorTranslate @era "translatedInputEx1" $ transTxInInfoV2 @era utxo inputWithInlineDatum - -translatedInputEx2 :: - forall era. - ( BabbageEraTxOut era - , Show (ContextError era) - , Value era ~ MaryValue (EraCrypto era) - , Inject (BabbageContextError era) (ContextError era) - ) => - Proxy era -> - PV2.TxInInfo -translatedInputEx2 _ = - errorTranslate @era "translatedInputEx2" $ transTxInInfoV2 @era utxo inputWithRefScript - -translatedOutputEx1 :: - forall era. - ( BabbageEraTxOut era - , Show (ContextError era) - , Value era ~ MaryValue (EraCrypto era) - , Inject (BabbageContextError era) (ContextError era) - ) => - Proxy era -> - PV2.TxOut -translatedOutputEx1 _ = - errorTranslate @era "translatedOutputEx1" $ - transTxOutV2 @era (TxOutFromOutput minBound) inlineDatumOutput - -translatedOutputEx2 :: - forall era. - ( BabbageEraTxOut era - , Show (ContextError era) - , Value era ~ MaryValue (EraCrypto era) - , Inject (BabbageContextError era) (ContextError era) - ) => - Proxy era -> - PV2.TxOut -translatedOutputEx2 _ = - errorTranslate @era "translatedOutputEx2" $ - transTxOutV2 @era (TxOutFromOutput minBound) refScriptOutput - -txInfoTestsV1 :: - forall era. - ( EraTx era - , BabbageEraTxBody era - , Value era ~ MaryValue (EraCrypto era) - , EraPlutusTxInfo 'PlutusV1 era - , Inject (BabbageContextError era) (ContextError era) - ) => - Proxy era -> - TestTree -txInfoTestsV1 _ = - testGroup - "Plutus V1" - $ [ testCase "translation error on byron txout" $ - expectV1TranslationError @era - (txBare shelleyInput byronOutput) - (inject $ ByronTxOutInContext @era (TxOutFromOutput minBound)) - , testCase "translation error on byron txin" $ - expectV1TranslationError @era - (txBare byronInput shelleyOutput) - (inject $ ByronTxOutInContext @era (TxOutFromInput byronInput)) - , testCase "translation error on unknown txin (logic error)" $ - expectV1TranslationError @era - (txBare unknownInput shelleyOutput) - (inject $ AlonzoContextError $ TranslationLogicMissingInput @era unknownInput) - , testCase "translation error on inline datum in input" $ - expectV1TranslationError @era - (txBare inputWithInlineDatum shelleyOutput) - (inject $ InlineDatumsNotSupported @era (TxOutFromInput inputWithInlineDatum)) - , testCase "translation error on inline datum in output" $ - expectV1TranslationError @era - (txBare shelleyInput inlineDatumOutput) - (inject $ InlineDatumsNotSupported @era (TxOutFromOutput minBound)) - ] - ++ if eraProtVerLow @era < natVersion @9 - then - [ testCase "translation error on reference script in input" $ - expectV1TranslationError @era - (txBare inputWithRefScript shelleyOutput) - (inject $ ReferenceScriptsNotSupported @era (TxOutFromInput inputWithRefScript)) - , testCase "translation error on reference script in output" $ - expectV1TranslationError @era - (txBare shelleyInput refScriptOutput) - (inject $ ReferenceScriptsNotSupported @era (TxOutFromOutput minBound)) - , testCase "translation error on reference input" $ - expectV1TranslationError @era - (txRefInput shelleyInput) - (inject $ ReferenceInputsNotSupported @era (Set.singleton shelleyInput)) - ] - else [] - -txInfoTestsV2 :: - forall era l. - ( EraTx era - , EraPlutusTxInfo l era - , BabbageEraTxBody era - , Value era ~ MaryValue (EraCrypto era) - , Inject (BabbageContextError era) (ContextError era) - ) => - Proxy era -> - SLanguage l -> - TestTree -txInfoTestsV2 p lang = - testGroup - (show lang) - [ testCase "translation error on byron txout" $ - expectTranslationError @era - lang - (txBare shelleyInput byronOutput) - (inject $ ByronTxOutInContext @era (TxOutFromOutput minBound)) - , testCase "translation error on byron txin" $ - expectTranslationError @era - lang - (txBare byronInput shelleyOutput) - (inject $ ByronTxOutInContext @era (TxOutFromInput byronInput)) - , testCase "translation error on unknown txin (logic error)" $ - expectTranslationError @era - lang - (txBare unknownInput shelleyOutput) - (inject $ AlonzoContextError $ TranslationLogicMissingInput @era unknownInput) - , testCase "use reference input starting in Babbage" $ - successfulTranslation @era - lang - (txRefInput shelleyInput) - hasReferenceInput - , testCase "use inline datum in input" $ - successfulTranslation @era - lang - (txBare inputWithInlineDatum shelleyOutput) - (expectOneInput (translatedInputEx1 p)) - , testCase "use inline datum in output" $ - successfulTranslation @era - lang - (txBare shelleyInput inlineDatumOutput) - (expectOneOutput (translatedOutputEx1 p)) - , testCase "use reference script in input" $ - successfulTranslation @era - lang - (txBare inputWithRefScript shelleyOutput) - (expectOneInput (translatedInputEx2 p)) - , testCase "use reference script in output" $ - successfulTranslation @era - lang - (txBare shelleyInput refScriptOutput) - (expectOneOutput (translatedOutputEx2 p)) - ] - -txInfoTests :: - forall era. - ( EraTx era - , BabbageEraTxBody era - , Value era ~ MaryValue (EraCrypto era) - , Inject (BabbageContextError era) (ContextError era) - , EraPlutusTxInfo 'PlutusV1 era - , EraPlutusTxInfo 'PlutusV2 era - ) => - Proxy era -> - TestTree -txInfoTests p = testGroup "txInfo translation" [txInfoTestsV1 p, txInfoTestsV2 p SPlutusV2] diff --git a/eras/babbage/test-suite/test/GenerateGoldenFileMain.hs b/eras/babbage/test-suite/test/GenerateGoldenFileMain.hs deleted file mode 100644 index 352f62d8ec8..00000000000 --- a/eras/babbage/test-suite/test/GenerateGoldenFileMain.hs +++ /dev/null @@ -1,11 +0,0 @@ -{-# LANGUAGE TypeApplications #-} - -module Main where - -import Cardano.Ledger.Babbage (Babbage) -import Test.Cardano.Ledger.Alonzo.Translation.Golden (generateGoldenFile) -import Test.Cardano.Ledger.Babbage.Translation.TranslatableGen () - --- | Generates golden translation file for Babbage era -main :: IO () -main = generateGoldenFile @Babbage "eras/babbage/test-suite/golden/translations.cbor" diff --git a/eras/babbage/test-suite/test/Test/Cardano/Ledger/Babbage/GoldenTranslation.hs b/eras/babbage/test-suite/test/Test/Cardano/Ledger/Babbage/GoldenTranslation.hs deleted file mode 100644 index 6c106199913..00000000000 --- a/eras/babbage/test-suite/test/Test/Cardano/Ledger/Babbage/GoldenTranslation.hs +++ /dev/null @@ -1,40 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE BlockArguments #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - --- | Deserializes `TranslationInstance`s from golden/translations.cbor file. --- --- Each instance represents arguments passed to `ExtendedUTxO.txInfo` along with the produced result. --- This test checks that calling `alonzoTxInfo` with the arguments from this file, produces the same result as in the flie. --- --- To regenerate the golden file (for example, if the logic in the translation changes), --- run the following command from the root of the repository: --- cabal run cardano-ledger--test:gen-golden" -module Test.Cardano.Ledger.Babbage.GoldenTranslation ( - tests, -) -where - -import Cardano.Ledger.Babbage (Babbage) -import Paths_cardano_ledger_babbage_test (getDataFileName) -import Test.Cardano.Ledger.Alonzo.Translation.Golden (assertTranslationResultsMatchGolden) -import Test.Cardano.Ledger.Babbage.Serialisation.Generators () -import Test.Cardano.Ledger.Babbage.Translation.TranslatableGen () -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.HUnit (Assertion, testCase) - -tests :: TestTree -tests = - testGroup - "Golden translation tests" - [testCase "golden/translations.cbor" $ check "golden/translations.cbor"] - -check :: String -> Assertion -check file = assertTranslationResultsMatchGolden @Babbage (getDataFileName file) diff --git a/eras/babbage/test-suite/test/Test/Cardano/Ledger/Babbage/Serialisation/Tripping.hs b/eras/babbage/test-suite/test/Test/Cardano/Ledger/Babbage/Serialisation/Tripping.hs deleted file mode 100644 index abb49e2eb9f..00000000000 --- a/eras/babbage/test-suite/test/Test/Cardano/Ledger/Babbage/Serialisation/Tripping.hs +++ /dev/null @@ -1,34 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Babbage.Serialisation.Tripping where - -import Cardano.Ledger.Babbage (Babbage) -import Cardano.Ledger.Babbage.Rules (BabbageUtxoPredFailure) -import Cardano.Ledger.Block (Block) -import Cardano.Ledger.Core -import Cardano.Protocol.TPraos.BHeader (BHeader) -import Test.Cardano.Ledger.Babbage.Arbitrary () -import Test.Cardano.Ledger.Babbage.Serialisation.Generators () -import Test.Cardano.Ledger.Binary.RoundTrip -import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes -import Test.Cardano.Ledger.ShelleyMA.Serialisation.Generators () -import Test.Tasty -import Test.Tasty.QuickCheck - -tests :: TestTree -tests = - testGroup - "Babbage CBOR round-trip" - [ testProperty "babbage/BabbageUtxoPredFailure" $ - roundTripCborRangeExpectation @(BabbageUtxoPredFailure Babbage) - (eraProtVerLow @Babbage) - (eraProtVerHigh @Babbage) - , testProperty "babbage/Block" $ - roundTripAnnRangeExpectation @(Block (BHeader StandardCrypto) Babbage) - (eraProtVerLow @Babbage) - (eraProtVerHigh @Babbage) - ] diff --git a/eras/babbage/test-suite/test/Tests.hs b/eras/babbage/test-suite/test/Tests.hs deleted file mode 100644 index fc2617d93e1..00000000000 --- a/eras/babbage/test-suite/test/Tests.hs +++ /dev/null @@ -1,34 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE TypeApplications #-} - -module Main where - -import Cardano.Ledger.Babbage (Babbage) -import Data.Proxy (Proxy (..)) -import System.Environment (lookupEnv) -import qualified Test.Cardano.Ledger.Babbage.GoldenTranslation as Golden (tests) -import qualified Test.Cardano.Ledger.Babbage.Serialisation.Tripping as Tripping -import Test.Cardano.Ledger.Babbage.TxInfo (txInfoTests) -import Test.Tasty (TestTree, defaultMain, testGroup) - -main :: IO () -main = do - nightly <- lookupEnv "NIGHTLY" - defaultMain $ case nightly of - Nothing -> defaultTests - Just _ -> nightlyTests - -defaultTests :: TestTree -defaultTests = - testGroup - "Babbage tests" - [ Golden.tests - , Tripping.tests - , txInfoTests (Proxy @Babbage) - ] - -nightlyTests :: TestTree -nightlyTests = - testGroup - "Babbage tests - nightly" - [] diff --git a/eras/byron/README.md b/eras/byron/README.md deleted file mode 100644 index 3f5f15ef7f4..00000000000 --- a/eras/byron/README.md +++ /dev/null @@ -1,65 +0,0 @@ -# Formal and executable specifications for the cardano chain - -This directory is organized as follows: - -- [`ledger/formal-spec`](ledger/formal-spec) contains the LaTeX specification of Cardano - ledger semantics. -- [`ledger/executable-spec`](ledger/executable-spec) contains an executable specification of Cardano - ledger semantics. -- [`chain/formal-spec`](chain/formal-spec) contains the LaTeX specification of Cardano - chain semantics. -- [`chain/executable-spec`](chain/executable-spec) contains an executable specification of Cardano chain - semantics. - -## Building the documents - -To build the `LaTeX` document run: - -```shell -nix develop --command make -``` - -For a continuous compilation of the `LaTeX` file run: - -```shell -nix develop --command make watch -``` - -## Building the executable specification - -The executable specifications can be built and tested using -[Nix](https://nixos.org/nix/). - -To build to go to the directory in which the executable specifications are -(e.g. [`ledger/executable-spec`](ledger/executable-spec)) and then run: - -```sh -nix build -``` - -To build, or run, tests: -```sh -nix build .#tests -nix run .#tests -``` - -### Development - -For running the tests you can use, in a `nix develop` shell: - -```sh -cabal new-test -``` - -Example, while in the `byron/ledger/executable-spec` directory one can run: - -```sh -cabal new-test ledger-delegation-test -``` - -To have the warnings not being treated as errors the `-Wwarn` ghc flag can be -used to negate the effect of `-Werror`, e.g.: - -```sh -cabal new-test ledger-delegation-test --ghc-options='-Wwarn' -``` diff --git a/eras/byron/cddl-spec/Makefile b/eras/byron/cddl-spec/Makefile deleted file mode 100644 index aad8fe4c57f..00000000000 --- a/eras/byron/cddl-spec/Makefile +++ /dev/null @@ -1,45 +0,0 @@ -## Makefile based on: -## -## https://tex.stackexchange.com/questions/40738/how-to-properly-make-a-latex-project -## - -# Document name -DOCNAME = byron-binary - -# You want latexmk to *always* run, because make does not have all the info. -# Also, include non-file targets in .PHONY so they are run regardless of any -# file of the given name existing. -.PHONY: $(DOCNAME).pdf all clean - -# The first rule in a Makefile is the one executed by default ("make"). It -# should always be the "all" rule, so that "make" and "make all" are identical. -all: $(DOCNAME).pdf - -## -## CUSTOM BUILD RULES -## - -## -## MAIN LATEXMK RULE -## - -# -pdf tells latexmk to generate PDF directly (instead of DVI). -# -pdflatex="" tells latexmk to call a specific backend with specific options. -# -use-make tells latexmk to call make for generating missing files. - -# -interaction=nonstopmode keeps the pdflatex backend from stopping at a -# missing file reference and interactively asking you for an alternative. - -$(DOCNAME).pdf: $(DOCNAME).tex - latexmk -pdf -pdflatex="pdflatex -interaction=nonstopmode -synctex=1" -use-make $(DOCNAME).tex - -watch: $(DOCNAME).tex - latexmk -pvc -pdf -pdflatex="pdflatex -interaction=nonstopmode -synctex=1" -use-make $(DOCNAME).tex - -clean: - latexmk -CA - -install: - mkdir -pv ${out}/nix-support/ - cp ${DOCNAME}.pdf ${out}/ - echo "doc-pdf ${DOCNAME} ${out}/${DOCNAME}.pdf" > ${out}/nix-support/hydra-build-products diff --git a/eras/byron/cddl-spec/README.md b/eras/byron/cddl-spec/README.md deleted file mode 100644 index 11c94828919..00000000000 --- a/eras/byron/cddl-spec/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# CDDL spec - -The current binary format is specified in `byron.cddl`. You can use this -to generate (pseudo-)valid blocks: - -```shell -nix develop -cddl byron.cddl generate | diag2pretty.rb > test.pretty -``` - -By default these are produced in [CBOR Diagnostic -notation](https://tools.ietf.org/html/rfc7049#section-6), so you can use -`diag2pretty.rb` or `diag2cbor.rb` to convert them to a pretty-printed or binary -encoded CBOR format respectively. - -The CDDL tools may also be used to validate existing blocks: - -```shell -cddl byron.cddl validate test.block -``` diff --git a/eras/byron/cddl-spec/byron-binary.tex b/eras/byron/cddl-spec/byron-binary.tex deleted file mode 100644 index 8463704f712..00000000000 --- a/eras/byron/cddl-spec/byron-binary.tex +++ /dev/null @@ -1,582 +0,0 @@ -\documentclass{article} - -\usepackage{amssymb} -\usepackage{amsmath} -\usepackage{appendix} -\usepackage{float} -\usepackage{enumitem} -\usepackage{syntax} -\usepackage{hyperref} -\usepackage{listings} -\usepackage{microtype} -\usepackage[a4paper]{geometry} - -\floatstyle{boxed} -\restylefloat{figure} - -\setlength{\grammarindent}{7em} -%% Define a'' `field' separator for records. -\def\fld{\\\llap{,\quad}}% - -\newlist{record}{description}{3} -\setlist[record]{itemsep=0pt, format=$-$\bfseries} - -\newcommand{\rhu}{\rightharpoonup} -\newcommand{\N}{\mathbb{N}} - -\newcommand{\lists}[1]{\left[{#1}\right]} -\newcommand{\nelists}[1]{\left[{#1}\right]^+} -\newcommand{\sets}[1]{\{{#1}\}} -\newcommand{\maybe}[1]{$()$ | {#1}} - -\newcommand{\idsof}[1]{\mathcal{I}\!_#1} -\newcommand{\txids}{\idsof{\txs}} -\newcommand{\blockids}{\idsof{\blocks}} -\newcommand{\agentids}{\idsof{\agents}} -\newcommand{\epochids}{\idsof{\mathcal{E}}} -\newcommand{\slotids}{\idsof{\mathcal{S}}} -\newcommand{\updids}{\idsof{\mathcal{UP}}} -\newcommand{\stakeholderids}{\idsof{\mathcal{K}}} -\newcommand{\pubkey}{\chi_{\textbf{pub}}} -\newcommand{\signature}{\chi_{\textbf{sig}}} - -\newcommand{\vsspubkey}{\mathcal{VSS}_{\chi_{\textbf{pub}}}} -\newcommand{\vssproof}{\mathcal{VSS}_{\textbf{proof}}} -\newcommand{\vsssec}{\mathcal{VSS}_{\textbf{sec}}} -\newcommand{\vssencshare}{\mathcal{VSS}_{\textbf{enc}}} -\newcommand{\vssdecshare}{\mathcal{VSS}_{\textbf{dec}}} -\newcommand{\agents}{\mathcal{A}} -\newcommand{\txs}{\mathcal{T}} -\newcommand{\txins}{\txs_{\textbf{in}}} -\newcommand{\txfeepol}{\txs_{\textbf{feepol}}} -\newcommand{\txpf}{\txs_{\textbf{proof}}} -\newcommand{\twit}{\mathcal{TW}} -\newcommand{\twitpk}{\twit_{\textbf{pk}}} -\newcommand{\twitscript}{\twit_{\textbf{script}}} -\newcommand{\twitredeem}{\twit_{\textbf{redeem}}} -\newcommand{\ssc}{\mathcal{SSC}} -\newcommand{\ssccomm}{\ssc_{\textbf{comm}}} -\newcommand{\sscopen}{\ssc_{\textbf{open}}} -\newcommand{\sscshare}{\ssc_{\textbf{share}}} -\newcommand{\ssccert}{\ssc_{\textbf{cert}}} -\newcommand{\sscpf}{\ssc_{\textbf{proof}}} -\newcommand{\dlg}{\mathcal{DLG}} -\newcommand{\dlglight}{\dlg^{\textbf{l}}} -\newcommand{\proxysig}{\dlg_{\textbf{sig}}} -\newcommand{\proxysiglight}{\dlg^{\textbf{l}}_{\textbf{sig}}} -\newcommand{\upd}{\mathcal{UP}} -\newcommand{\updprop}{\upd_{\textbf{prop}}} -\newcommand{\upddata}{\upd_{\textbf{data}}} -\newcommand{\updvote}{\upd_{\textbf{vote}}} -\newcommand{\blocks}{\mathcal{B}} -\newcommand{\blockver}{\blocks_{\textbf{ver}}} -\newcommand{\blockvermod}{\blocks_{\textbf{ver}\Delta}} -\newcommand{\bbodies}{\blocks_{\textbf{body}}} -\newcommand{\bheads}{\blocks_{\textbf{head}}} -\newcommand{\bheadpf}{\blocks_{\textbf{proof}}} -\newcommand{\bheadcons}{\blocks_{\textbf{cons}}} -\newcommand{\bheadex}{\blocks_{\textbf{headex}}} -\newcommand{\blocksig}{\blocks_{\textbf{sig}}} -\newcommand{\blockpf}{\blocks_{\textbf{proof}}} -\newcommand{\ebb}{\mathcal{B}^\prime} -\newcommand{\ebbhead}{\ebb_{\textbf{head}}} -\newcommand{\ebbheadcons}{\ebb_{\textbf{cons}}} - -\newcommand{\hstype}[1]{\textbf{#1}} -\newcommand{\String}{\hstype{String}} -\newcommand{\Word}[1]{\hstype{Word#1}} -\newcommand{\hash}{\hstype{Hash}} -\newcommand{\Integer}{\mathbb{I}} -\newcommand{\Bool}{\mathbb{B}} -\newcommand{\Bytes}{\hstype{Bytes}} - - -\title{Cardano on-the-wire specification} -\author{Nicholas Clarke} -\begin{document} -\maketitle -\tableofcontents - -\section{Introduction} - -This document describes the binary serialisation formats used for the Cardano -blockchain. - -It proceeds as follows: section \ref{sec:types} describes the core types which -must be serialised for the purposes of Cardano communication. We then detail the -requirements on the binary format in \ref{sec:reqs}. In section \ref{sec:binfmt} -we describe the explicit binary serialisation of the core types satisfying these -requirements. - -Appendix \ref{sec:currentfmt} details the current binary format. - -\subsection{Notation} - -\begin{description} -\item[Lists] Lists of type $A$ are written as $\lists{A}$. -\item[Non-empty lists] Non-empty lists of type $A$ are written as $\nelists{A}$. -\item[Sets] Sets of type $A$ are written as $\sets{A}$. -\item[Maps] A map from items of type $A$ to items of type $B$ is written as - $A\rhu B$.\footnote{We use this terminology for consistency with - \cite{spiwack}, where these are partial functions.} -\item[Records] We denote records as: - \begin{grammar} - = \{ - \fld fieldName :: type - \fld fieldName2 :: type2 - \} - \end{grammar} -\item[Variants] We denote variants as: - \begin{grammar} - = Option1 \alt Option2 \alt Option3. - \end{grammar} -\item[Optional values] We denote an optional value of type $A$ as $\maybe{A}$ -\end{description} - -We will use capitalised words for variant constructors and lower-case -terms for field names, as per standard Haskell syntax. - -\subsection{Relation to the abstract specification and to the Cardano implementation} - -This document straddles the middle-ground between the rule-based specification -given in \cite{spiwack} and the concrete implementation at \cite{cardano}. As -such, it tries to compromise between the differing presentations of how the -blockchain is constructed. - -In general, we take the following approach: - -\begin{itemize} -\item Where possible, we take our nomenclature from \cite{spiwack}. So, for - example, we refer to the type of transactions as $\txs$ rather than - $\textbf{Tx}$. Where there is no name given in \cite{spiwack} we generally - invent a new identifier in the similar style. -\item Structure, on the other hand, typically derives from the code in - \cite{cardano}, with some exceptions: - \begin{itemize} - \item We drop \verb|newtype| wrappers. - \item We flatten nested records where doing so would not lead to significant - confusion (for example, by requiring convoluted or length names to - contextualise fields). - \item In general, we tend to be fairly free with translating between - isomorphic representations where it increases the readability of this spec. - \item We monomorphize any polymorphic variables to the type they are - instantiated to when they are serialised. - \item We ignore \verb|AsBinary| and its ilk. These provide `typed' wrappers - around \verb|ByteString| in order to defer encoding/decoding. They only - confuse an abstract definition. - \end{itemize} -\end{itemize} - -\section{Core datatypes} -\label{sec:types} - -The types in this section are derived from a combination of the blockchain spec -and Haskell datatypes in the codebase. - -\subsection{Primitives} - -Primitive types: - -\begin{description} -\item [$\Bool$] Boolean value -\item [$\Word{8}$] 8-bit word -\item [$\Word{32}$] 32-bit word -\item [$\Word{64}$] 64-bit word -\item [$\String$] Arbitrary UTF8-encoded string type. We do not draw any - distinctions as to whether this is implemented as a $\hstype{String}$ or - $\hstype{Text}$. -\item [$\Bytes$] Arbitrary string of bytes. -\item [$\Integer$] arbitrary precision integers. -\end{description} - -\subsection{Basic Cardano Types} - -We start with sets of identifiers. These are represented in code as Blake2b-256 -hashes. We also sometimes deal with these hashes directly. - -\begin{itemize} -\item{Transaction identifiers $\txids$} -\item{Block identifiers $\blockids$} -\item Update identifiers $\updids$ -\item Concrete hashes $\hash$ -\end{itemize} - -We also have addresses, which are represented as Blake2b-224 hashes. - -\begin{itemize} -\item{Address (agent) identifiers $\agentids$} -\item Stakeholder identifiers $\stakeholderids$ -\end{itemize} - -Epochs are identified by their index as a $\Word{64}$. Slots are identified as a -pair of epoch identifier and a $\Word{16}$ index within the slot. - -\begin{itemize} -\item Epoch indices $\epochids$ -\item Slot indices $\slotids$ -\end{itemize} - -Cardano public keys are elliptic curve DH keys on curve 25519. - -\begin{itemize} -\item Public keys $\pubkey$ -\item Signatures $\signature$ -\end{itemize} - -\subsection{Addresses} - -We have a set of addresses $\agents$. An address has an identifier, a type, and -some additional data held in an \verb|attributes| field. In particular, each -address contains a stake distribution $\agents_{\textbf{distr}}$. - -\begin{figure}[H] - \begin{grammar} - <$\agents_{\textbf{distr}}$> = Bootstrap - \alt SingleKey $\agentids$ - \alt MultiKey $\agentids \rhu \Word{64}$. - - <$\agents_{\textbf{type}}$> = PubKey \alt Script \alt Redeem \alt Unknown $\Word{8}$. - - <$\agents_{\textbf{attr}}$> = \{ - \fld pkDerivationPath :: $\maybe{\Bytes}$ - \fld stakeDistr :: $\agents_{\textbf{distr}}$ - \fld unparsed :: $\Word{8}\rhu\Bytes$ - \}. - - <$\agents$> = \{ - \fld root :: $\agentids$ - \fld attributes :: $\agents_{\textbf{attr}}$ - \fld type :: $\agents_{\textbf{type}}$ - \}. - \end{grammar} - - \caption{Address Types} -\end{figure} - -\subsection{Transactions} - -We have a set of transactions $\txs$. - -\begin{figure}[H] - \caption{Transactions} - \label{fig:txin} - \begin{grammar} - <$\txins$> = Valid $\txids\times\Word{32}$. - \alt Invalid $\Word{8}\times\Bytes$. - - <$\txs$> = \{ - \fld inputs :: $\lists{\txins}$ - \fld outputs :: $\nelists{\agentids \times \Word{64}}$ - \} - - <$\txpf$> = \{ - \fld txCount :: $\Word{32}$ - \fld merkleRoot :: $\hash$ - \fld witnessHash :: $\hash$ - \} - \end{grammar} -\end{figure} - -We also have transaction witnesses, which provide proof that the transaction has -authority to spend its inputs. - -\begin{figure}[H] - \caption{Transaction witnesses} - \begin{grammar} - <$\twitpk$> = \{ - \fld key :: $\pubkey$ - \fld signature :: $\signature$ - \} - - <$\twitscript$> = \{ - \fld validator :: $\Word{16}\times\Bytes$ - \fld redeemer :: $\Word{16}\times\Bytes$ - \} - - <$\twitredeem$> = \{ - \fld key :: $\pubkey$ - \fld signature :: $\signature$ - \} - - <$\twit$> = PublicKey $\twitpk$ - \alt Script $\twitscript$ - \alt Redeem $\twitredeem$ - \alt Unknown $\Word{8}$ \Bytes - \end{grammar} -\end{figure} - -\subsection{Shared Seed Computation} - -Shared seed computation deals with commitments, openings, shares and -certificates. - -We start with some basic types used for VSS. VSS uses its own public key -cryptography scheme. - -\begin{itemize} -\item VSS public keys $\vsspubkey$ -\item VSS secret $\vsssec$ -\item VSS encrypted and decrypted shares $\vssencshare$ and $\vssdecshare$ -\item VSS secret proof $\vssproof$ -\end{itemize} - -\begin{figure}[H] - \caption{Shared seed computation} - \begin{grammar} - <$\ssccomm$> = $\pubkey \times ((\vsspubkey \rhu \vssencshare) \times \vssproof) - \times \signature$ - - <$\sscopen$> = $\stakeholderids \rhu \vsssec$ - - <$\sscshare$> = $\stakeholderids \rhu (\stakeholderids \rhu \nelists{\vssdecshare})$ - - <$\ssccert$> = \{ - \fld vsskey :: $\vsspubkey$ - \fld signingKey :: $\pubkey$ - \fld expiry :: $\epochids$ - \fld signature :: $\signature$ - \} - - <$\ssc$> = Commitments $\lists{\ssccomm} \times \lists{\ssccert}$ - \alt Openings $\sscopen \times \lists{\ssccert}$ - \alt Shares $\sscshare \times \lists{\ssccert}$ - \alt Certificates $\lists{\ssccert}$ - - <$\sscpf$> = CommitmentsProof $\hash \times \hash$ - \alt OpeningsProof $\hash \times \hash$ - \alt SharesProof $\hash \times \hash$ - \alt CertificatesProof $\hash$ - \end{grammar} -\end{figure} - -\subsection{Delegation} - -The heavyweight delegation system is used to allow stakeholders to authorise -other parties to issue blocks on their behalf. - -\begin{figure}[H] - \begin{grammar} - <$\dlg$> = \{ - \fld epoch :: $\epochids$ - \fld issuer :: $\pubkey$ - \fld delegate :: $\pubkey$ - \fld certificate :: $\signature$ - \} - - <$\proxysig$> = \{ - \fld psk :: $\dlg$ - \fld sig :: $\signature$ - \} - - <$\dlglight$> = \{ - \fld epoch :: $\epochids\times\epochids$ - \fld issuer :: $\pubkey$ - \fld delegate :: $\pubkey$ - \fld certificate :: $\signature$ - \} - - <$\proxysiglight$> = \{ - \fld psk :: $\dlglight$ - \fld sig :: $\signature$ - \} - \end{grammar} - \caption{Delegation} - \label{fig:dlgtypes} -\end{figure} - -\subsection{Updates} - -This section covers the types used to orchestrate updates of the system. We also -introduce the block version and transaction fee policy in this section, since -they are only serialised as part of the update system. - -\begin{figure}[H] - \begin{grammar} - <$\blockver$> = $\Word{16}\times\Word{16}\times\Word{8}$ - - <$\txfeepol$> = Linear $\Integer$ $\Integer$ - \alt Unknown \Word{8} \Bytes - - <$\blockvermod$> = \{ - \fld scriptVersion :: $\maybe{\Word{16}}$ - \fld slotDuration :: $\maybe{\Integer}$ - \fld maxBlockSize :: $\maybe{\Integer}$ - \fld maxHeaderSize :: $\maybe{\Integer}$ - \fld maxTxSize :: $\maybe{\Integer}$ - \fld maxProposalSize :: $\maybe{\Integer}$ - \fld mpcThd :: $\maybe{\Word{64}}$ - \fld heavyDelThd :: $\maybe{\Word{64}}$ - \fld updateVoteThd :: $\maybe{\Word{64}}$ - \fld updateProposalThd :: $\maybe{\Word{64}}$ - \fld updateImplicit :: $\maybe{\Word{64}}$ - \fld softforkRule :: $\maybe{(\Word64\times\Word64\times\Word64)}$ - \fld txFeePolicy :: $\maybe{\txfeepol}$ - \fld unlockStakeEpoch :: $\maybe{\epochids}$ - \} - - <$\upddata$> = \{ - \fld appDiffHash :: \hash - \fld pkgHash :: \hash - \fld updaterHash :: \hash - \fld mdHash :: \hash - \} - - <$\updprop$> = \{ - \fld blockVersion :: $\blockver$ - \fld blockVersionMod :: $\blockvermod$ - \fld softwareVersion :: $\String \times \Word{32}$ - \fld data :: $\String \rhu \upddata$ - \fld attributes :: $\Word{8} \rhu \Bytes$ - \fld from :: $\pubkey$ - \fld signature :: $\signature$ - \} - - <$\updvote$> = \{ - \fld voter :: $\pubkey$ - \fld proposalId :: $\updids$ - \fld vote :: $\Bool$ - \fld signature :: $\signature$ - \} - - <$\upd$> = \{ - \fld proposal :: $\maybe{\updprop}$ - \fld votes :: $\lists{\updvote}$ - \} - \end{grammar} - \caption{Updates} - \label{fig:updtypes} -\end{figure} -\subsection{Blocks} - -A block consists of a block header and a block body. The block header consists -of verification for the various components in the block body. - -\begin{figure}[H] - \caption{Blocks} - \label{fig:block} - \begin{grammar} - <$\blocksig$> = Signature $\signature$ - \alt ProxySigLight $\proxysiglight$ - \alt ProxySigHeavy $\proxysig$ - - <$\bheadcons$> = \{ - \fld slotId :: $\slotids$ - \fld leaderKey :: $\pubkey$ - \fld difficulty :: $\Word{64}$ - \fld signature :: $\blocksig$ - \} - - <$\bheadex$> = \{ - \fld blockVersion :: $\blockver$ - \fld softwareVersion :: $\String \times \Word{32}$ - \fld extraProof :: $\hash$ - \fld attributes :: $\String \rhu \emptyset$ - \} - - <$\blockpf$> = \{ - \fld txProof :: $\txpf$ - \fld sscProof :: $\sscpf$ - \fld dlgProof :: $\hash$ - \fld updProof :: $\hash$ - \} - - <$\bheads$> = \{ - \fld prevBlock :: $\blockids$ - \fld bodyProof :: $\blockpf$ - \fld consensusData :: $\bheadcons$ - \fld extraData :: $\bheadex$ - \} - - <$\bbodies$> = \{ - \fld txPayload :: $\lists{\txs\times\lists{\twit}}$ - \fld sscPayload :: $\ssc$ - \fld dlgPayload ::$\lists{\dlg}$ - \fld updPayload :: $\upd$ - \} - - <$\blocks$> = \{ - \fld header :: $\bheads$ - \fld body :: $\bbodies$ - \fld extra :: $\Word{8} \rhu \Bytes$ - \} - - \end{grammar} -\end{figure} - -\subsubsection{Epoch Boundary Blocks} - -In addition to regular blocks, epoch boundary blocks contain a list of slot -leaders for a given epoch. They are not conventionally distributed as part of -the blockchain, but can be requested as part of catch-up and as such form part -of the on-the-wire protocol. - -\begin{figure}[H] - \begin{grammar} - <$\ebbheadcons$> = \{ - \fld epoch :: $\epochids$ - \fld chainDifficulty :: $\Word{64}$ - \} - - <$\ebbhead$> = \{ - \fld prevBlock :: $\blockids$ - \fld bodyProof :: $\hash$ - \fld consensusData :: $\ebbheadcons$ - \fld extraData :: $\Word{8} \rhu \Bytes$ - \} - - <$\ebb$> = \{ - \fld header :: $\ebbhead$ - \fld body :: $\nelists{\stakeholderids}$ - \fld extra :: $\Word{8} \rhu \Bytes$ - \} - \end{grammar} - \caption{Epoch Boundary Blocks} - \label{fig:ebb} -\end{figure} - -\section{Requirements on the binary format} -\label{sec:reqs} - -\subsection{Cryptographic properties} - -\subsection{Dependencies on the binary format} - -\section{Binary specification} -\label{sec:binfmt} - -\begin{thebibliography}{9} -\bibitem{spiwack} - \textit{Rule-based specification of the blockchain logic}. - Erik de Castro Lopo, Nicholas Clarke \& Arnaud Spiwack. - -\bibitem{cardano} - \textit{Cryptographic currency implementing Ouroboros PoS protocol}. - \url{https://github.com/input-output-hk/cardano-sl/} - -\bibitem{cbor} - \textit{RFC 7049 Concise Binary Object Representation}. - \url{http://cbor.io} - -\bibitem{cddl} - \textit{Concise data definition language (CDDL): a notational - convention to express CBOR data structures} - \url{https://tools.ietf.org/html/draft-ietf-cbor-cddl-00} - -\end{thebibliography} - -\begin{appendices} - \section{Current binary format} - \label{sec:currentfmt} - - This section documents the current binary serialisation format, as of - 2018-06-03. - - The current blockchain is serialized using CBOR\cite{cbor}. Consequently we - present the current description as a CDDL\cite{cddl} document. Terms in use - below should be interpreted in that context and with reference to Appendix E - of \cite{cddl}, which defines a standard prelude available to such things. - - \lstinputlisting{byron.cddl} - -\end{appendices} -\end{document} diff --git a/eras/byron/cddl-spec/byron.cddl b/eras/byron/cddl-spec/byron.cddl deleted file mode 100644 index 7725ae80407..00000000000 --- a/eras/byron/cddl-spec/byron.cddl +++ /dev/null @@ -1,209 +0,0 @@ -; Cardano Byron blockchain CBOR schema - -block = [0, ebblock] - / [1, mainblock] - -mainblock = [ "header" : blockhead - , "body" : blockbody - , "extra" : [attributes] - ] - -ebblock = [ "header" : ebbhead - , "body" : [+ stakeholderid] - , extra : [attributes] - ] - -u8 = uint .lt 256 -u16 = uint .lt 65536 -u32 = uint -u64 = uint - -; Basic Cardano Types - -blake2b-256 = bytes .size 32 - -txid = blake2b-256 -blockid = blake2b-256 -updid = blake2b-256 -hash = blake2b-256 - -blake2b-224 = bytes .size 28 - -addressid = blake2b-224 -stakeholderid = blake2b-224 - -epochid = u64 -slotid = [ epoch: epochid, slot : u64 ] - -pubkey = bytes -signature = bytes - -; Attributes - at the moment we do not bother deserialising these, since they -; don't contain anything - -attributes = {* any => any} - -; Addresses - -addrdistr = [1] / [0, stakeholderid] - -addrtype = &("PubKey" : 0, "Script" : 1, "Redeem" : 2) / (u64 .gt 2) -addrattr = { ? 0 : addrdistr - , ? 1 : bytes} -address = [ #6.24(bytes .cbor ([addressid, addrattr, addrtype])), u64 ] - -; Transactions - -txin = [0, #6.24(bytes .cbor ([txid, u32]))] / [u8 .ne 0, encoded-cbor] -txout = [address, u64] - -tx = [[+ txin], [+ txout], attributes] - -txproof = [u32, hash, hash] - -twit = [0, #6.24(bytes .cbor ([pubkey, signature]))] - / [1, #6.24(bytes .cbor ([[u16, bytes], [u16, bytes]]))] - / [2, #6.24(bytes .cbor ([pubkey, signature]))] - / [u8 .gt 2, encoded-cbor] - -; Shared Seed Computation - -vsspubkey = bytes ; This is encoded using the 'Binary' instance - ; for Scrape.PublicKey -vsssec = bytes ; This is encoded using the 'Binary' instance - ; for Scrape.Secret. -vssenc = [bytes] ; This is encoded using the 'Binary' instance - ; for Scrape.EncryptedSi. - ; TODO work out why this seems to be in a length 1 array -vssdec = bytes ; This is encoded using the 'Binary' instance - ; for Scrape.DecryptedShare -vssproof = [bytes, bytes, bytes, [* bytes]] ; This is encoded using the - ; 'Binary' instance for Scrape.Proof - -ssccomm = [pubkey, [{vsspubkey => vssenc},vssproof], signature] -ssccomms = #6.258([* ssccomm]) - -sscopens = {stakeholderid => vsssec} - -sscshares = {addressid => [addressid, [* vssdec]]} - -ssccert = [vsspubkey, pubkey, epochid, signature] -ssccerts = #6.258([* ssccert]) - -ssc = [0, ssccomms, ssccerts] - / [1, sscopens, ssccerts] - / [2, sscshares, ssccerts] - / [3, ssccerts] - -sscproof = [0, hash, hash] - / [1, hash, hash] - / [2, hash, hash] - / [3, hash] - -; Delegation - -dlg = [ epoch : epochid - , issuer : pubkey - , delegate : pubkey - , certificate : signature - ] - -dlgsig = [dlg, signature] - -lwdlg = [ epochRange : [epochid, epochid] - , issuer : pubkey - , delegate : pubkey - , certificate : signature - ] - -lwdlgsig = [lwdlg, signature] - -; Updates - -bver = [u16, u16, u8] - -txfeepol = [0, #6.24(bytes .cbor ([bigint, bigint]))] - / [u8 .gt 0, encoded-cbor] - -bvermod = [ scriptVersion : [? u16] - , slotDuration : [? bigint] - , maxBlockSize : [? bigint] - , maxHeaderSize : [? bigint] - , maxTxSize : [? bigint] - , maxProposalSize : [? bigint] - , mpcThd : [? u64] - , heavyDelThd : [? u64] - , updateVoteThd : [? u64] - , updateProposalThd : [? u64] - , updateImplicit : [? u64] - , softForkRule : [? [u64, u64, u64]] - , txFeePolicy : [? txfeepol] - , unlockStakeEpoch : [? epochid] - ] - -updata = [ hash, hash, hash, hash ] - -upprop = [ "blockVersion" : bver - , "blockVersionMod" : bvermod - , "softwareVersion" : [ text, u32 ] - , "data" : #6.258([text, updata]) - , "attributes" : attributes - , "from" : pubkey - , "signature" : signature - ] - -upvote = [ "voter" : pubkey - , "proposalId" : updid - , "vote" : bool - , "signature" : signature - ] - -up = [ "proposal" : [? upprop] - , votes : [* upvote] - ] - -; Blocks - -difficulty = [u64] - -blocksig = [0, signature] - / [1, lwdlgsig] - / [2, dlgsig] - -blockcons = [slotid, pubkey, difficulty, blocksig] - -blockheadex = [ "blockVersion" : bver - , "softwareVersion" : [ text, u32 ] - , "attributes" : attributes - , "extraProof" : hash - ] - -blockproof = [ "txProof" : txproof - , "sscProof" : sscproof - , "dlgProof" : hash - , "updProof" : hash - ] - -blockhead = [ "protocolMagic" : u32 - , "prevBlock" : blockid - , "bodyProof" : blockproof - , "consensusData" : blockcons - , "extraData" : blockheadex - ] - -blockbody = [ "txPayload" : [* [tx, [* twit]]] - , "sscPayload" : ssc - , "dlgPayload" : [* dlg] - , "updPayload" : up - ] - -; Epoch Boundary Blocks - -ebbcons = [ epochid, difficulty ] - -ebbhead = [ "protocolMagic" : u32 - , "prevBlock" : blockid - , "bodyProof" : hash - , "consensusData" : ebbcons - , "extraData" : [attributes] - ] diff --git a/eras/byron/cddl-spec/flake.nix b/eras/byron/cddl-spec/flake.nix deleted file mode 100644 index 52f473b14ae..00000000000 --- a/eras/byron/cddl-spec/flake.nix +++ /dev/null @@ -1,49 +0,0 @@ -{ - outputs = inputs: { - packages = - builtins.mapAttrs (_: {nixpkgs, ...}: { - default = with nixpkgs; - buildLatex { - name = "blocks-cddl-spec"; - texFiles = ["byron-binary"]; - meta = with lib; { - description = "Byron blocks CDDL specification"; - license = licenses.asl20; - platforms = platforms.linux; - }; - src = ./.; - - texInputs = { - inherit - (texlive) - scheme-small - # Fonts - - cm-super - # libraries - - unicode-math - lm-math - amsmath - enumitem - bclogo - xcolor - newunicodechar - appendix - syntax - # build tools - - latexmk - ; - }; - buildInputs = [ - gitMinimal - # CBOR scheme specification related tools - cddl - cbor-diag - ]; - }; - }) - (inputs.main or (import ../../../nix/flake-compat.nix).defaultNix).legacyPackages; - }; -} diff --git a/eras/byron/cddl-spec/latexmkrc b/eras/byron/cddl-spec/latexmkrc deleted file mode 100644 index df5a41ca3b6..00000000000 --- a/eras/byron/cddl-spec/latexmkrc +++ /dev/null @@ -1,8 +0,0 @@ -$pdf_mode = "1"; -$pdflatex = "xelatex --shell-escape -halt-on-error -synctex=1"; -$clean_ext = "bbl synctex.gz synctex.gz(busy)"; - -# When a file required for the compilation of the main latex file -# (such as an image for `\includegraphics`) latexmk will call `make` -# in order to have it built. -$use_make_for_missing_files = "1"; diff --git a/eras/byron/chain/executable-spec/.ghcid b/eras/byron/chain/executable-spec/.ghcid deleted file mode 100644 index 158b8fb1f82..00000000000 --- a/eras/byron/chain/executable-spec/.ghcid +++ /dev/null @@ -1 +0,0 @@ ---command="cabal repl --repl-options='-isrc -fwarn-unused-binds -fwarn-unused-imports -fno-code -fobject-code -g2 -fno-break-on-exception -fno-break-on-error -ferror-spans -j -Wno-unused-packages'" --clear --no-height-limit --reverse-errors --reload=../../../../ --outputfile=/tmp/byron-spec-chain-ghcid.txt \ No newline at end of file diff --git a/eras/byron/chain/executable-spec/CHANGELOG.md b/eras/byron/chain/executable-spec/CHANGELOG.md deleted file mode 100644 index 208a1b69048..00000000000 --- a/eras/byron/chain/executable-spec/CHANGELOG.md +++ /dev/null @@ -1,21 +0,0 @@ -# Version history for `byron-spec-chain` - -## 1.0.1.1 - -* - -## 1.0.1.0 - -* Replaced `small-steps-test` dependency with `small-steps:testlib` - -## 1.0.0.2 - -* - -## 1.0.0.1 - -* - -## 1.0.0.0 - -* First properly versioned release. diff --git a/eras/byron/chain/executable-spec/Setup.hs b/eras/byron/chain/executable-spec/Setup.hs deleted file mode 100644 index e8ef27dbba9..00000000000 --- a/eras/byron/chain/executable-spec/Setup.hs +++ /dev/null @@ -1,3 +0,0 @@ -import Distribution.Simple - -main = defaultMain diff --git a/eras/byron/chain/executable-spec/byron-spec-chain.cabal b/eras/byron/chain/executable-spec/byron-spec-chain.cabal deleted file mode 100644 index 2324b1ec88b..00000000000 --- a/eras/byron/chain/executable-spec/byron-spec-chain.cabal +++ /dev/null @@ -1,66 +0,0 @@ -cabal-version: 3.0 -name: byron-spec-chain -version: 1.0.1.0 -license: Apache-2.0 -maintainer: operations@iohk.io -author: IOHK -homepage: https://github.com/input-output-hk/cardano-legder -synopsis: Executable specification of the Cardano blockchain -category: Testing -build-type: Simple -extra-source-files: CHANGELOG.md - -library - exposed-modules: - Byron.Spec.Chain.STS.Block - Byron.Spec.Chain.STS.Rule.BBody - Byron.Spec.Chain.STS.Rule.Bupi - Byron.Spec.Chain.STS.Rule.Chain - Byron.Spec.Chain.STS.Rule.Epoch - Byron.Spec.Chain.STS.Rule.Pbft - Byron.Spec.Chain.STS.Rule.SigCnt - - hs-source-dirs: src - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wunused-packages - - build-depends: - base >=4.14 && <5, - bimap >=0.4 && <0.6, - bytestring, - containers, - byron-spec-ledger >=1.0, - hashable, - hedgehog >=1.0.4, - microlens, - microlens-th, - small-steps:{small-steps, testlib} >=1.1 - -test-suite chain-rules-test - type: exitcode-stdio-1.0 - main-is: Main.hs - hs-source-dirs: test - other-modules: - Test.Byron.Spec.Chain.STS.Properties - Test.Byron.AbstractSize.Properties - - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wunused-packages - "-with-rtsopts=-K4m -M300m" - - build-depends: - base, - containers, - data-ordlist, - hedgehog, - microlens, - tasty, - tasty-hedgehog, - tasty-hunit, - byron-spec-chain, - byron-spec-ledger, - small-steps:{small-steps, testlib} >=1.1 diff --git a/eras/byron/chain/executable-spec/flake.nix b/eras/byron/chain/executable-spec/flake.nix deleted file mode 100644 index 2b5cd7f6f41..00000000000 --- a/eras/byron/chain/executable-spec/flake.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ - outputs = inputs: let - main = inputs.main or (import ../../../../nix/flake-compat.nix).defaultNix; - in { - packages = - builtins.mapAttrs (_: {cabalProject, ...}: { - default = cabalProject.hsPkgs.byron-spec-chain.components.library; - test = cabalProject.hsPkgs.byron-spec-chain.components.tests.chain-rules-test; - }) - main.legacyPackages; - inherit (main) devShells; - }; -} diff --git a/eras/byron/chain/executable-spec/src/Byron/Spec/Chain/STS/Block.hs b/eras/byron/chain/executable-spec/src/Byron/Spec/Chain/STS/Block.hs deleted file mode 100644 index 04786229673..00000000000 --- a/eras/byron/chain/executable-spec/src/Byron/Spec/Chain/STS/Block.hs +++ /dev/null @@ -1,322 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DeriveDataTypeable #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedLists #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TemplateHaskell #-} - -module Byron.Spec.Chain.STS.Block where - -import Byron.Spec.Ledger.Core (Hash (Hash), Sig (Sig), Slot, VKey, hash, owner) -import Byron.Spec.Ledger.Delegation -import Byron.Spec.Ledger.UTxO (Tx, TxIn, TxOut, Wit) -import Byron.Spec.Ledger.Update (ProtVer, STag, UProp, Vote) -import Data.AbstractSize -import Data.ByteString (ByteString) -import Data.Data (Data, Typeable) -import Data.Function (on) -import qualified Data.Hashable as H -import qualified Data.Map.Strict as Map -import Data.Sequence ((<|)) -import Data.Typeable (typeOf) -import GHC.Generics (Generic) -import Lens.Micro ((^.)) -import Lens.Micro.Extras (view) -import Lens.Micro.TH (makeLenses) -import Numeric.Natural (Natural) -import Test.Control.State.Transition.Generator - -data BlockHeader = BlockHeader - { _bhPrevHash :: !Hash - -- ^ Hash of the previous block header, or 'genesisHash' in case of - -- the first block in a chain. - , _bhSlot :: !Slot - -- ^ Absolute slot for which the block was generated. - , _bhIssuer :: !VKey - -- ^ Block issuer. - , _bhSig :: !(Sig Hash) - -- ^ Part of the block header which must be signed. - , _bhUtxoHash :: !Hash - -- ^ UTxO hash - , _bhDlgHash :: !Hash - -- ^ Delegation hash - , _bhUpdHash :: !Hash - -- ^ Update payload hash - } - deriving (Eq, Generic, Show, Data, Typeable) - --- TODO: BlockVersion – the protocol (block) version that created the block --- TODO: SoftwareVersion – the software version that created the block - -makeLenses ''BlockHeader - --- We declare a specific instance here to avoid recursing into cardano-crypto -instance HasTypeReps BlockHeader where - typeReps x = - typeOf x - <| typeOf (undefined :: Hash) - <| typeOf (x ^. bhUtxoHash :: Hash) - <| typeOf (x ^. bhDlgHash :: Hash) - <| typeOf (x ^. bhUpdHash :: Hash) - <| typeReps (x ^. bhSlot :: Slot) - <> typeReps (x ^. bhIssuer :: VKey) - <> typeReps (x ^. bhSig :: Sig Hash) - -data BlockBody = BlockBody - { _bDCerts :: ![DCert] - -- ^ Delegation certificates - , _bUtxo :: ![Tx] - -- ^ UTxO payload - , _bUpdProp :: !(Maybe UProp) - -- ^ Update proposal payload - , _bUpdVotes :: ![Vote] - -- ^ Update votes payload - , _bProtVer :: !ProtVer - -- ^ Protocol version - } - deriving (Generic, Show, Data, Typeable) - -makeLenses ''BlockBody - -instance HasTypeReps BlockBody - --- | A block in the chain. The specification only models regular blocks since --- epoch boundary blocks will be largely ignored in the Byron-Shelley bridge. -data Block = Block - { _bHeader :: BlockHeader - , _bBody :: BlockBody - } - deriving (Generic, Show, Data, Typeable) - -makeLenses ''Block - -instance HasTypeReps Block - -mkBlock :: - -- | Hash of the previous block - Hash -> - -- | Current slot - Slot -> - -- | Issuer - VKey -> - -- | Protocol version - ProtVer -> - -- | Delegation certificates - [DCert] -> - -- | Update proposal - Maybe UProp -> - -- | Votes on update proposals - [Vote] -> - -- | UTxO payload - [Tx] -> - Block -mkBlock - prevHash - currentSlot - issuer - version - delegationCerts - maybeUpdateProposal - updateProposalVotes - utxoTransactions = Block signedHeader body - where - signedHeader = - unsignedHeader {_bhSig = Sig (hashHeader unsignedHeader) (owner issuer)} - where - unsignedHeader = - BlockHeader - { _bhPrevHash = prevHash - , _bhSlot = currentSlot - , _bhIssuer = issuer - , _bhSig = dummySig - , _bhUtxoHash = (hash utxoTransactions) - , _bhDlgHash = (hash delegationCerts) - , _bhUpdHash = (hash (maybeUpdateProposal, updateProposalVotes)) - } - where - dummySig = Sig genesisHash (owner issuer) - - body = - BlockBody - { _bProtVer = version - , _bDCerts = delegationCerts - , _bUpdProp = maybeUpdateProposal - , _bUpdVotes = updateProposalVotes - , _bUtxo = utxoTransactions - } - --- | Dummy genesis hash. -genesisHash :: Hash --- Not sure we need a concrete hash in the specs ... -genesisHash = Hash $ Just $ H.hash ("" :: ByteString) - --- | Protocol version endorsment -bEndorsment :: Block -> (ProtVer, VKey) -bEndorsment b = (b ^. bBody ^. bProtVer, b ^. bHeader ^. bhIssuer) - --- | Slot the block is published in -bSlot :: Block -> Slot -bSlot b = b ^. bHeader ^. bhSlot - --- | Block update payload -bUpdPayload :: Block -> (Maybe UProp, [Vote]) -bUpdPayload b = (b ^. bBody ^. bUpdProp, b ^. bBody ^. bUpdVotes) - --- | Compute the abstract size (in words) that a block takes. -bSize :: Block -> Natural -bSize b = bHeaderSize (b ^. bHeader) + bBodySize (b ^. bBody) - --- | Compute the abstract size (in words) that a block body occupies. -bBodySize :: BlockBody -> Natural -bBodySize = fromIntegral . abstractSize costs - where - costs = - Map.fromList - [ (typeOf (undefined :: Maybe UProp), 1) - , (typeOf (undefined :: STag), 1) - , (typeOf (undefined :: ProtVer), 1) - , (typeOf (undefined :: DCert), 1) - , (typeOf (undefined :: Vote), 1) - , (typeOf (undefined :: Tx), 1) - , (typeOf (undefined :: Wit), 1) - , (typeOf (undefined :: TxIn), 1) - , (typeOf (undefined :: TxOut), 1) - ] - --- | Compute the abstract size (in words) that a block header occupies. -bHeaderSize :: BlockHeader -> Natural -bHeaderSize = fromIntegral . abstractSize costs - where - costs = - Map.fromList - [ (typeOf (undefined :: Hash), 1) - , (typeOf (undefined :: Slot), 1) - , (typeOf (undefined :: VKey), 1) - , (typeOf (undefined :: Sig Hash), 1) - ] - --- | Computes the hash of a header. -hashHeader :: BlockHeader -> Hash -hashHeader bh = Hash $ Just $ H.hash (bh ^. bhPrevHash, bh ^. bhSlot, bh ^. bhIssuer) - --- | Computes the hash of the header. -bhToSign :: BlockHeader -> Hash -bhToSign = hashHeader - -bhHash :: BlockHeader -> Hash -bhHash = hashHeader - --- | Checks if a block is an epoch boundary block. --- --- The function always returns False because tests will be performed --- only against chains without EBBs. -bIsEBB :: Block -> Bool -bIsEBB = const False - -instance HasSizeInfo Block where - isTrivial = null . view (bBody . bDCerts) - --- | Update a field of the block body, recomputing the hashes to get a valid --- block. -updateBody :: - Block -> - (BlockBody -> BlockBody) -> - Block -updateBody block bodyUpdate = - mkBlock - (_bhPrevHash . _bHeader $ block) - (_bhSlot . _bHeader $ block) - (_bhIssuer . _bHeader $ block) - (_bProtVer newBody) - (_bDCerts newBody) - (_bUpdProp newBody) - (_bUpdVotes newBody) - (_bUtxo newBody) - where - newBody = bodyUpdate (_bBody block) - --------------------------------------------------------------------------------- --- Block statistics --------------------------------------------------------------------------------- - -data BlockStats = BlockStats - { blockStatsUtxo :: Word - -- ^ Number of regular transactions - , blockStatsDCerts :: Word - -- ^ Number of delegation certificates - , blockStatsUpdVotes :: Word - -- ^ Number of update votes - , blockStatsUpdProp :: Word - -- ^ Number of update proposals - -- - -- For a single block this will be 0 or 1. - } - deriving (Show) - --- | Count number of transactions in the block --- --- Returns the number of --- --- * Regular transactions --- * Delegation certificates --- * Update votes --- * Update proposals (0 or 1) -blockStats :: Block -> BlockStats -blockStats (Block _header body) = - BlockStats - { blockStatsUtxo = fromIntegral . length $ _bUtxo body - , blockStatsDCerts = fromIntegral . length $ _bDCerts body - , blockStatsUpdVotes = fromIntegral . length $ _bUpdVotes body - , blockStatsUpdProp = maybe 0 (const 1) $ _bUpdProp body - } - --- | Block stats for an entire chain --- --- Computes minimum, maximum, and average values. --- --- Returns 'Nothing' for the empty chain. -chainBlockStats :: [BlockStats] -> Maybe (BlockStats, BlockStats, BlockStats) -chainBlockStats [] = Nothing -chainBlockStats (b : bs) = Just $ go b b b 1 bs - where - go :: - BlockStats -> -- Minimum - BlockStats -> -- Maximum - BlockStats -> -- Sum - Word -> -- Count - [BlockStats] -> - (BlockStats, BlockStats, BlockStats) - go !sMin !sMax !sSum !cnt [] = - ( sMin - , sMax - , BlockStats - { blockStatsUtxo = blockStatsUtxo sSum `div` cnt - , blockStatsDCerts = blockStatsDCerts sSum `div` cnt - , blockStatsUpdVotes = blockStatsUpdVotes sSum `div` cnt - , blockStatsUpdProp = blockStatsUpdProp sSum `div` cnt - } - ) - go !sMin !sMax !sSum !cnt (b' : bs') = - go - BlockStats - { blockStatsUtxo = (min `on` blockStatsUtxo) sMin b' - , blockStatsDCerts = (min `on` blockStatsDCerts) sMin b' - , blockStatsUpdVotes = (min `on` blockStatsUpdVotes) sMin b' - , blockStatsUpdProp = (min `on` blockStatsUpdProp) sMin b' - } - BlockStats - { blockStatsUtxo = (max `on` blockStatsUtxo) sMax b' - , blockStatsDCerts = (max `on` blockStatsDCerts) sMax b' - , blockStatsUpdVotes = (max `on` blockStatsUpdVotes) sMax b' - , blockStatsUpdProp = (max `on` blockStatsUpdProp) sMax b' - } - BlockStats - { blockStatsUtxo = ((+) `on` blockStatsUtxo) sSum b' - , blockStatsDCerts = ((+) `on` blockStatsDCerts) sSum b' - , blockStatsUpdVotes = ((+) `on` blockStatsUpdVotes) sSum b' - , blockStatsUpdProp = ((+) `on` blockStatsUpdProp) sSum b' - } - (cnt + 1) - bs' diff --git a/eras/byron/chain/executable-spec/src/Byron/Spec/Chain/STS/Rule/BBody.hs b/eras/byron/chain/executable-spec/src/Byron/Spec/Chain/STS/Rule/BBody.hs deleted file mode 100644 index 4f7a27fd545..00000000000 --- a/eras/byron/chain/executable-spec/src/Byron/Spec/Chain/STS/Rule/BBody.hs +++ /dev/null @@ -1,128 +0,0 @@ -{-# LANGUAGE DeriveDataTypeable #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Byron.Spec.Chain.STS.Rule.BBody where - -import Byron.Spec.Chain.STS.Block -import Byron.Spec.Chain.STS.Rule.Bupi -import Byron.Spec.Ledger.Core (BlockCount, Epoch, hash) -import Byron.Spec.Ledger.Delegation ( - DELEG, - DIState, - DSEnv (DSEnv), - _dIStateDelegationMap, - _dSEnvAllowedDelegators, - _dSEnvEpoch, - _dSEnvK, - _dSEnvSlot, - ) -import Byron.Spec.Ledger.STS.UTXO (UTxOEnv (UTxOEnv, pps, utxo0), UTxOState) -import Byron.Spec.Ledger.STS.UTXOWS (UTXOWS) -import Byron.Spec.Ledger.UTxO (UTxO) -import Byron.Spec.Ledger.Update (PParams, UPIState, maxBkSz) -import Control.State.Transition ( - Embed, - Environment, - STS (..), - Signal, - State, - TRC (TRC), - initialRules, - judgmentContext, - trans, - transitionRules, - wrapFailed, - (?!), - ) -import Data.Bimap (keys) -import Data.Data (Data, Typeable) -import Data.Set (fromList) -import Data.Word (Word8) -import Lens.Micro ((^.)) - -data BBODY deriving (Data, Typeable) - --- | These `PredicateFailure`s are all throwable. -data BbodyPredicateFailure - = InvalidBlockSize - | InvalidUtxoHash - | InvalidDelegationHash - | InvalidUpdateProposalHash - | BUPIFailure (PredicateFailure BUPI) - | DelegationFailure (PredicateFailure DELEG) - | UTXOWSFailure (PredicateFailure UTXOWS) - deriving (Eq, Show, Data, Typeable) - -instance STS BBODY where - type - Environment BBODY = - ( PParams - , Epoch - , UTxO - , Word8 - , BlockCount -- Chain stability parameter - ) - - type - State BBODY = - ( UTxOState - , DIState - , UPIState - ) - - type Signal BBODY = Block - - type PredicateFailure BBODY = BbodyPredicateFailure - - initialRules = [] - - transitionRules = - [ do - TRC ((ppsVal, e_n, utxoGenesis, ngk, k), (utxoSt, ds, us), b) <- judgmentContext - let bMax = ppsVal ^. maxBkSz - bSize b <= bMax ?! InvalidBlockSize - let bh = b ^. bHeader - hash (b ^. bBody ^. bUtxo) == bh ^. bhUtxoHash ?! InvalidUtxoHash - hash (b ^. bBody ^. bDCerts) == bh ^. bhDlgHash ?! InvalidDelegationHash - hash (bUpdPayload b) == bh ^. bhUpdHash ?! InvalidUpdateProposalHash - - us' <- - trans @BUPI $ - TRC - ( (bh ^. bhSlot, _dIStateDelegationMap ds, k, ngk) - , us - , (b ^. bBody ^. bUpdProp, b ^. bBody ^. bUpdVotes, bEndorsment b) - ) - ds' <- - trans @DELEG $ - TRC - ( ( DSEnv - { _dSEnvAllowedDelegators = - (fromList . keys . _dIStateDelegationMap) ds - , _dSEnvEpoch = e_n - , _dSEnvSlot = bh ^. bhSlot - , _dSEnvK = k - } - ) - , ds - , b ^. bBody ^. bDCerts - ) - utxoSt' <- - trans @UTXOWS $ - TRC - (UTxOEnv {utxo0 = utxoGenesis, pps = ppsVal}, utxoSt, b ^. bBody ^. bUtxo) - - return $! (utxoSt', ds', us') - ] - -instance Embed BUPI BBODY where - wrapFailed = BUPIFailure - -instance Embed DELEG BBODY where - wrapFailed = DelegationFailure - -instance Embed UTXOWS BBODY where - wrapFailed = UTXOWSFailure diff --git a/eras/byron/chain/executable-spec/src/Byron/Spec/Chain/STS/Rule/Bupi.hs b/eras/byron/chain/executable-spec/src/Byron/Spec/Chain/STS/Rule/Bupi.hs deleted file mode 100644 index 37c49c9fc70..00000000000 --- a/eras/byron/chain/executable-spec/src/Byron/Spec/Chain/STS/Rule/Bupi.hs +++ /dev/null @@ -1,82 +0,0 @@ -{-# LANGUAGE DeriveDataTypeable #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Byron.Spec.Chain.STS.Rule.Bupi where - -import Byron.Spec.Ledger.Core (VKey) -import Byron.Spec.Ledger.Update (ProtVer, UPIEND, UPIEnv, UPIREG, UPIState, UPIVOTES, UProp, Vote) -import Control.State.Transition ( - Embed, - Environment, - PredicateFailure, - STS (..), - Signal, - State, - TRC (TRC), - TransitionRule, - initialRules, - judgmentContext, - trans, - transitionRules, - wrapFailed, - ) -import Data.Data (Data, Typeable) - -type UpdatePayload = - ( Maybe UProp - , [Vote] - , (ProtVer, VKey) - ) - -data BUPI deriving (Data, Typeable) - -data BupiPredicateFailure - = UPIREGFailure (PredicateFailure UPIREG) - | UPIVOTESFailure (PredicateFailure UPIVOTES) - | UPIENDFailure (PredicateFailure UPIEND) - deriving (Eq, Show, Data, Typeable) - -instance STS BUPI where - type Environment BUPI = UPIEnv - - type State BUPI = UPIState - - type Signal BUPI = UpdatePayload - - type PredicateFailure BUPI = BupiPredicateFailure - - initialRules = [] - - transitionRules = - [ do - TRC (_, _, (mProp, _, _)) <- judgmentContext - case mProp of - Just prop -> hasProposalRule prop - Nothing -> noProposalRule - ] - where - hasProposalRule :: UProp -> TransitionRule BUPI - hasProposalRule prop = do - TRC (env, us, (_, votes, end)) <- judgmentContext - us' <- trans @UPIREG $ TRC (env, us, prop) - us'' <- trans @UPIVOTES $ TRC (env, us', votes) - us''' <- trans @UPIEND $ TRC (env, us'', end) - return $! us''' - - noProposalRule :: TransitionRule BUPI - noProposalRule = do - TRC (env, us, (_, votes, end)) <- judgmentContext - us' <- trans @UPIVOTES $ TRC (env, us, votes) - us'' <- trans @UPIEND $ TRC (env, us', end) - return $! us'' - -instance Embed UPIREG BUPI where - wrapFailed = UPIREGFailure - -instance Embed UPIVOTES BUPI where - wrapFailed = UPIVOTESFailure - -instance Embed UPIEND BUPI where - wrapFailed = UPIENDFailure diff --git a/eras/byron/chain/executable-spec/src/Byron/Spec/Chain/STS/Rule/Chain.hs b/eras/byron/chain/executable-spec/src/Byron/Spec/Chain/STS/Rule/Chain.hs deleted file mode 100644 index 073d6b4bd9f..00000000000 --- a/eras/byron/chain/executable-spec/src/Byron/Spec/Chain/STS/Rule/Chain.hs +++ /dev/null @@ -1,373 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveDataTypeable #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedLists #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} --- For the Field5 instance -{-# OPTIONS_GHC -Wno-orphans #-} - -module Byron.Spec.Chain.STS.Rule.Chain where - -import Byron.Spec.Chain.STS.Block -import Byron.Spec.Chain.STS.Rule.BBody -import Byron.Spec.Chain.STS.Rule.Epoch (EPOCH, sEpoch) -import Byron.Spec.Chain.STS.Rule.Pbft -import qualified Byron.Spec.Chain.STS.Rule.SigCnt as SigCntGen -import Byron.Spec.Ledger.Core -import qualified Byron.Spec.Ledger.Core.Generators as CoreGen -import Byron.Spec.Ledger.Delegation -import qualified Byron.Spec.Ledger.GlobalParams as GP -import Byron.Spec.Ledger.STS.UTXO (UTxOEnv (UTxOEnv, pps, utxo0), UTxOState) -import Byron.Spec.Ledger.STS.UTXOWS (UTXOWS) -import Byron.Spec.Ledger.UTxO (UTxO, mapUTxOValues) -import Byron.Spec.Ledger.Update hiding (delegationMap) -import qualified Byron.Spec.Ledger.Update as Update -import Control.State.Transition -import Data.Bimap (Bimap) -import Data.Bits (shift) -import Data.Data (Data, Typeable) -import qualified Data.Map as Map -import Data.Sequence (Seq) -import Data.Set (Set) -import qualified Data.Set as Set -import Data.Word (Word8) -import GHC.Stack (HasCallStack) -import Hedgehog (Gen, MonadTest) -import qualified Hedgehog.Gen as Gen -import Hedgehog.Internal.Property (CoverPercentage) -import qualified Hedgehog.Range as Range -import Lens.Micro (Lens', (^.)) -import Lens.Micro.Internal (Field1 (..), Field5 (..)) -import Numeric.Natural (Natural) -import Test.Control.State.Transition.Generator - -data CHAIN deriving (Data, Typeable) - -data ChainPredicateFailure - = EpochFailure (PredicateFailure EPOCH) - | HeaderSizeTooBig BlockHeader Natural (Threshold Natural) - | BBodyFailure (PredicateFailure BBODY) - | PBFTFailure (PredicateFailure PBFT) - | MaximumBlockSize Natural Natural - | LedgerDelegationFailure (PredicateFailure DELEG) - | LedgerUTxOFailure (PredicateFailure UTXOWS) - deriving (Eq, Show, Data, Typeable) - -instance STS CHAIN where - type - Environment CHAIN = - ( Slot -- Current slot - , UTxO - , -- Components needed to be able to bootstrap the traces generator. They are - -- not part of the formal spec. These might be removed once we have decided - -- on how do we want to model initial states. - Set VKeyGenesis -- Allowed delegators. Needed by the initial delegation rules. The number of - -- genesis keys is the size of this set. - , PParams -- Needed to bootstrap this part of the chain state, - -- which is used in the delegation rules - , BlockCount -- Chain stability parameter - ) - - type - State CHAIN = - ( Slot - , Seq VKeyGenesis - , Hash - , UTxOState - , DIState - , UPIState - ) - - type Signal CHAIN = Block - - type PredicateFailure CHAIN = ChainPredicateFailure - - initialRules = - [ do - IRC (_sNow, utxo0', ads, pps', k) <- judgmentContext - let s0 = Slot 0 - -- Since we only test the delegation state we initialize the - -- remaining fields of the update interface state to (m)empty. Once - -- the formal spec includes initial rules for update we can use - -- them here. - upiState0 = - ( (ProtVer 0 0 0, pps') - , [] - , Map.empty - , Map.empty - , Map.empty - , Map.empty - , Set.empty - , Set.empty - , Map.empty - ) - utxoSt0 <- trans @UTXOWS $ IRC UTxOEnv {utxo0 = utxo0', pps = pps'} - let dsEnv = - DSEnv - { _dSEnvAllowedDelegators = ads - , _dSEnvEpoch = sEpoch s0 k - , _dSEnvSlot = s0 - , _dSEnvK = k - } - ds <- trans @DELEG $ IRC dsEnv - pure $! - ( s0 - , [] - , genesisHash - , utxoSt0 - , ds - , upiState0 - ) - ] - - transitionRules = - [ do - TRC (_, _, b) <- judgmentContext - case bIsEBB b of - True -> isEBBRule - False -> notEBBRule - ] - where - isEBBRule :: TransitionRule CHAIN - isEBBRule = do - TRC ((_sNow, _, _, _, _), (sLast, sgs, _, utxo, ds, us), b) <- judgmentContext - bSize b <= (2 `shift` 21) ?! MaximumBlockSize (bSize b) (2 `shift` 21) - let h' = bhHash (b ^. bHeader) - pure $! (sLast, sgs, h', utxo, ds, us) - - notEBBRule :: TransitionRule CHAIN - notEBBRule = do - TRC ((sNow, utxoGenesis, ads, _pps, k), (sLast, sgs, h, utxoSt, ds, us), b) <- judgmentContext - let dm = _dIStateDelegationMap ds :: Bimap VKeyGenesis VKey - us' <- - trans @EPOCH $ TRC ((sEpoch sLast k, k), us, bSlot b) - headerIsValid us' (b ^. bHeader) - let ppsUs' = snd (us' ^. _1) - (utxoSt', ds', us'') <- - trans @BBODY $ - TRC - ( - ( ppsUs' - , sEpoch (bSlot b) k - , utxoGenesis - , fromIntegral (Set.size ads) - , k - ) - , (utxoSt, ds, us') - , b - ) - (h', sgs') <- - trans @PBFT $ TRC ((ppsUs', dm, sLast, sNow, k), (h, sgs), b ^. bHeader) - pure $! (bSlot b, sgs', h', utxoSt', ds', us'') - -instance Embed EPOCH CHAIN where - wrapFailed = EpochFailure - -instance Embed BBODY CHAIN where - wrapFailed = BBodyFailure - -instance Embed PBFT CHAIN where - wrapFailed = PBFTFailure - -instance Embed DELEG CHAIN where - wrapFailed = LedgerDelegationFailure - -instance Embed UTXOWS CHAIN where - wrapFailed = LedgerUTxOFailure - -isHeaderSizeTooBigFailure :: PredicateFailure CHAIN -> Bool -isHeaderSizeTooBigFailure (HeaderSizeTooBig _ _ _) = True -isHeaderSizeTooBigFailure _ = False - -headerIsValid :: UPIState -> BlockHeader -> Rule CHAIN 'Transition () -headerIsValid us bh = do - let sMax = snd (us ^. _1) ^. maxHdrSz - bHeaderSize bh - <= sMax - ?! HeaderSizeTooBig bh (bHeaderSize bh) (Threshold sMax) - --- | Lens for the delegation interface state contained in the chain state. -disL :: Lens' (State CHAIN) DIState -disL = _5 - -instance HasTrace CHAIN where - envGen chainLength = do - ngk <- Gen.integral (Range.linear 1 14) - k <- CoreGen.k chainLength (chainLength `div` 10) - sigCntT <- SigCntGen.sigCntT k ngk - (,,,,) - <$> gCurrentSlot - <*> (adjustUTxO . utxo0 <$> envGen @UTXOWS chainLength) - <*> pure (mkVkGenesisSet ngk) - -- TODO: for now we're returning a constant set of parameters, where only '_bkSgnCntT' varies. - <*> pure initialPParams {_bkSgnCntT = Update.BkSgnCntT sigCntT} - <*> pure k - where - -- If we want to generate large traces, we need to set up the value of the - -- current slot to a sufficiently large value. - gCurrentSlot = Slot <$> Gen.integral (Range.constant 32768 2147483648) - - -- The UTXOW generators assume the @b@ fee parameter to be @0 <= b <= 10@, - -- and pick UTxO values that are correspondingly small. In order to allow - -- for a difference in real transaction size between the spec and impl, - -- however, the `initialParams` pick a value of @10 * GP.c@ for @b@ - -- instead. This @c@ correction factor allows real transactions to be - -- @c@ times larger than the spec ones and still guarantee that the real - -- transaction will have sufficient fees when the abstract tx does. - -- If we don't apply this same correction factor to the generated UTxO, - -- however, we will be unable to generate any /abstract/ transactions, - -- because the UTxO values will not be large enough to cover tx fees. - adjustUTxO :: UTxO -> UTxO - adjustUTxO = mapUTxOValues $ \(Lovelace v) -> - Lovelace $ v * fromIntegral GP.c - - sigGen = sigGenChain GenDelegation GenUTxO GenUpdate - -data ShouldGenDelegation = GenDelegation | NoGenDelegation - -data ShouldGenUTxO = GenUTxO | NoGenUTxO - -data ShouldGenUpdate = GenUpdate | NoGenUpdate - -sigGenChain :: - ShouldGenDelegation -> - ShouldGenUTxO -> - ShouldGenUpdate -> - Environment CHAIN -> - State CHAIN -> - Gen (Signal CHAIN) -sigGenChain - shouldGenDelegation - shouldGenUTxO - shouldGenUpdate - (_sNow, utxo0, ads, _pps, k) - (Slot s, sgs, h, utxo, ds, us) = - do - -- We'd expect the slot increment to be close to 1, even for large Gen's - -- size numbers. - nextSlot <- Slot . (s +) <$> Gen.integral (Range.exponential 1 10) - - -- We need to generate delegation, update proposals, votes, and transactions - -- after a potential update in the protocol parameters (which is triggered - -- only at epoch boundaries). Otherwise the generators will use a state that - -- won't hold when the rules that correspond to these generators are - -- applied. For instance, the fees might change, which will render the - -- transaction as invalid. - -- - let (us', _) = - applySTSIndifferently @EPOCH $ - TRC - ( (sEpoch (Slot s) k, k) - , us - , nextSlot - ) - - pps' = protocolParameters us' - - upienv = - ( Slot s - , _dIStateDelegationMap ds - , k - , toNumberOfGenesisKeys $ Set.size ads - ) - - -- TODO: we might need to make the number of genesis keys a newtype, and - -- provide this function in the same module where this newtype is - -- defined. - toNumberOfGenesisKeys n - | fromIntegral (maxBound :: Word8) < n = - error $ "sigGenChain: too many genesis keys: " ++ show n - | otherwise = fromIntegral n - - aBlockVersion <- - Update.protocolVersionEndorsementGen upienv us' - - -- Here we do not want to shrink the issuer, since @Gen.element@ shrinks - -- towards the first element of the list, which in this case won't provide - -- us with better shrinks. - vkI <- SigCntGen.issuer (pps', ds ^. dmsL, k) sgs - - delegationPayload <- - case shouldGenDelegation of - GenDelegation -> - -- In practice there won't be a delegation payload in every block, so we - -- make this payload sparse. - -- - -- NOTE: We arbitrarily chose to generate delegation payload in 30% of - -- the cases. We could make this configurable. - Gen.frequency - [ (7, pure []) - , - ( 3 - , let dsEnv = - DSEnv - { _dSEnvAllowedDelegators = ads - , _dSEnvEpoch = sEpoch nextSlot k - , _dSEnvSlot = nextSlot - , _dSEnvK = k - } - in dcertsGen dsEnv ds - ) - ] - NoGenDelegation -> pure [] - - utxoPayload <- - case shouldGenUTxO of - GenUTxO -> - let utxoEnv = UTxOEnv utxo0 pps' - in sigGen @UTXOWS utxoEnv utxo - NoGenUTxO -> pure [] - - (anOptionalUpdateProposal, aListOfVotes) <- - case shouldGenUpdate of - GenUpdate -> - Update.updateProposalAndVotesGen upienv us' - NoGenUpdate -> - pure (Nothing, []) - - pure $! - mkBlock - h - nextSlot - vkI - aBlockVersion - delegationPayload - anOptionalUpdateProposal - aListOfVotes - utxoPayload - -coverInvalidBlockProofs :: - forall m a. - ( MonadTest m - , HasCallStack - , Data a - ) => - -- | Minimum percentage that each failure must occur. - CoverPercentage -> - -- | Structure containing the failures - a -> - m () -coverInvalidBlockProofs coverPercentage = - coverFailures @_ @BBODY - coverPercentage - [ InvalidDelegationHash - , InvalidUpdateProposalHash - , InvalidUtxoHash - ] - --------------------------------------------------------------------------------- --- FieldX instances for a 6-tuple --------------------------------------------------------------------------------- - -instance Field1 (a, b, c, d, e, f) (a', b, c, d, e, f) a a' where - _1 k ~(a, b, c, d, e, f) = (\a' -> (a', b, c, d, e, f)) <$> k a - {-# INLINE _1 #-} - -instance Field5 (a, b, c, d, e, f) (a, b, c, d, e', f) e e' where - _5 k ~(a, b, c, d, e, f) = (\e' -> (a, b, c, d, e', f)) <$> k e - {-# INLINE _5 #-} diff --git a/eras/byron/chain/executable-spec/src/Byron/Spec/Chain/STS/Rule/Epoch.hs b/eras/byron/chain/executable-spec/src/Byron/Spec/Chain/STS/Rule/Epoch.hs deleted file mode 100644 index db51cb5a0d0..00000000000 --- a/eras/byron/chain/executable-spec/src/Byron/Spec/Chain/STS/Rule/Epoch.hs +++ /dev/null @@ -1,60 +0,0 @@ -{-# LANGUAGE DeriveDataTypeable #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Byron.Spec.Chain.STS.Rule.Epoch where - -import Byron.Spec.Ledger.Core -import Byron.Spec.Ledger.GlobalParams (slotsPerEpoch) -import Byron.Spec.Ledger.Update -import Control.State.Transition -import Data.Data (Data, Typeable) -import GHC.Stack (HasCallStack) - --- | Compute the epoch for the given _absolute_ slot and chain stability parameter. -sEpoch :: - HasCallStack => - Slot -> - BlockCount -> - Epoch -sEpoch (Slot s) k = - if k' > 0 - then Epoch $ s `div` k' - else error ("sEpoch: bad `k` provided: " <> show k) - where - k' = slotsPerEpoch k - -data EPOCH deriving (Data, Typeable) - -data EpochPredicateFailure - = UPIECFailure (PredicateFailure UPIEC) - deriving (Eq, Show, Data, Typeable) - -instance STS EPOCH where - type - Environment EPOCH = - ( Epoch - , BlockCount -- Chain stability paramter; this is a global - -- constant in the formal specification, which we put - -- in this environment so that we can test with - -- different values of it. - ) - type State EPOCH = UPIState - type Signal EPOCH = Slot - type PredicateFailure EPOCH = EpochPredicateFailure - - initialRules = [] - - transitionRules = - [ do - TRC ((e_c, k), us, s) <- judgmentContext - if sEpoch s k <= e_c - then pure $! us - else do - us' <- trans @UPIEC $ TRC ((sEpoch s k, k), us, ()) - pure $! us' - ] - -instance Embed UPIEC EPOCH where - wrapFailed = UPIECFailure diff --git a/eras/byron/chain/executable-spec/src/Byron/Spec/Chain/STS/Rule/Pbft.hs b/eras/byron/chain/executable-spec/src/Byron/Spec/Chain/STS/Rule/Pbft.hs deleted file mode 100644 index ba27a61b546..00000000000 --- a/eras/byron/chain/executable-spec/src/Byron/Spec/Chain/STS/Rule/Pbft.hs +++ /dev/null @@ -1,60 +0,0 @@ -{-# LANGUAGE DeriveDataTypeable #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Byron.Spec.Chain.STS.Rule.Pbft where - -import Byron.Spec.Chain.STS.Block -import Byron.Spec.Chain.STS.Rule.SigCnt -import Byron.Spec.Ledger.Core -import Byron.Spec.Ledger.Update -import Control.State.Transition -import Data.Bimap (Bimap) -import Data.Data (Data, Typeable) -import Data.Sequence (Seq) -import Lens.Micro ((^.)) - -data PBFT deriving (Data, Typeable) - -data PbftPredicateFailure - = SlotNotAfterLastBlock Slot Slot - | SlotInTheFuture Slot Slot - | PrevHashNotMatching Hash Hash - | InvalidHeaderSignature VKey (Sig Hash) - | SigCountFailure (PredicateFailure SIGCNT) - deriving (Eq, Show, Data, Typeable) - -instance STS PBFT where - type - Environment PBFT = - ( PParams - , Bimap VKeyGenesis VKey - , Slot - , Slot - , BlockCount -- Chain stability parameter - ) - - type State PBFT = (Hash, Seq VKeyGenesis) - - type Signal PBFT = BlockHeader - - type PredicateFailure PBFT = PbftPredicateFailure - - initialRules = [] - - transitionRules = - [ do - TRC ((pps, ds, sLast, sNow, k), (h, sgs), bh) <- judgmentContext - let vkd = bh ^. bhIssuer :: VKey - s = bh ^. bhSlot :: Slot - s > sLast ?! SlotNotAfterLastBlock s sLast - s <= sNow ?! SlotInTheFuture s sNow - (bh ^. bhPrevHash) == h ?! PrevHashNotMatching (bh ^. bhPrevHash) h - verify vkd (bhToSign bh) (bh ^. bhSig) ?! InvalidHeaderSignature vkd (bh ^. bhSig) - sgs' <- trans @SIGCNT $ TRC ((pps, ds, k), sgs, vkd) - pure $! (bhHash bh, sgs') - ] - -instance Embed SIGCNT PBFT where - wrapFailed = SigCountFailure diff --git a/eras/byron/chain/executable-spec/src/Byron/Spec/Chain/STS/Rule/SigCnt.hs b/eras/byron/chain/executable-spec/src/Byron/Spec/Chain/STS/Rule/SigCnt.hs deleted file mode 100644 index 5f15af67759..00000000000 --- a/eras/byron/chain/executable-spec/src/Byron/Spec/Chain/STS/Rule/SigCnt.hs +++ /dev/null @@ -1,139 +0,0 @@ -{-# LANGUAGE DeriveDataTypeable #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Byron.Spec.Chain.STS.Rule.SigCnt where - -import Byron.Spec.Ledger.Core hiding ((|>)) -import Byron.Spec.Ledger.Update hiding (NotADelegate) -import Control.Arrow ((|||)) -import Control.State.Transition -import Data.Bimap (Bimap) -import qualified Data.Bimap as Bimap -import Data.Data (Data, Typeable) -import Data.Sequence (Seq, (|>)) -import qualified Data.Sequence as S -import Data.Word (Word8) -import Hedgehog (Gen) -import qualified Hedgehog.Gen as Gen -import qualified Hedgehog.Range as Range -import Lens.Micro ((^.)) - -data SIGCNT deriving (Data, Typeable) - --- | These `PredicateFailure`s are all throwable. -data SigcntPredicateFailure - = -- | The given genesis key issued too many blocks. - TooManyIssuedBlocks VKeyGenesis - | -- | The key signing the block is not a delegate of a genesis key. - NotADelegate - deriving (Eq, Show, Data, Typeable) - -instance STS SIGCNT where - type - Environment SIGCNT = - ( PParams - , Bimap VKeyGenesis VKey - , BlockCount -- Chain stability parameter - ) - - type State SIGCNT = Seq VKeyGenesis - - type Signal SIGCNT = VKey - type PredicateFailure SIGCNT = SigcntPredicateFailure - - initialRules = [] - - transitionRules = - [ do - TRC ((pps, dms, k), sgs, vk) <- judgmentContext - let t' = pps ^. bkSgnCntT - case Bimap.lookupR vk dms of - Just vkG -> do - let sgs' = S.drop (S.length sgs + 1 - (fromIntegral . unBlockCount $ k)) (sgs |> vkG) - nrSignedBks = fromIntegral (S.length (S.filter (== vkG) sgs')) - nrSignedBks <= fromIntegral (unBlockCount k) * t' ?! TooManyIssuedBlocks vkG - pure $! sgs' - Nothing -> do - failBecause NotADelegate - pure $! sgs -- TODO: this is a quite inconvenient encoding for this transition system! - ] - ----------------------------------------------------------------------------------------------------- --- Generators ----------------------------------------------------------------------------------------------------- - --- | Generate an issuer that can still issue blocks according to the @SIGCNT@ rule. The issuers are --- taken from the range of the delegation map passed as parameter. --- --- This generator will throw an error if no suitable issuer can be found, which means that the block --- production halted. -issuer :: - Environment SIGCNT -> - State SIGCNT -> - Gen VKey -issuer (pps, dms, k) sgs = - if null validIssuers - then - error $ - "No valid issuers!" - ++ "\n" - ++ "k = " - ++ show k - ++ "\n" - ++ "keys = " - ++ show (Bimap.elems dms) - ++ "\n" - ++ "sgs = " - ++ show sgs - ++ "\n" - ++ "length sgs = " - ++ show (length sgs) - ++ "\n" - ++ "_bkSgnCntT = " - ++ show (_bkSgnCntT pps) - ++ "\n" - ++ "dms = " - ++ show dms - else Gen.element validIssuers - where - validIssuers = - filter canIssueABlock anyIssuer - anyIssuer = Bimap.elems dms - canIssueABlock :: VKey -> Bool - canIssueABlock vk = - (const False ||| const True) $ applySTS @SIGCNT (TRC ((pps, dms, k), sgs, vk)) - --- | Generate a signature count threshold given a chain stability parameter @k@ and number of --- genesis keys @ngk@. --- --- This threshold must allow that all the (honest) genesis keys can issue enough blocks to fill the --- rolling window of @k@. If this is not possible, then the block production will halt since there --- will not be valid issuers. So the threshold must make it possible to find an integer @n@ such --- that: --- --- > n <= k * t --- --- and --- --- > k < ngk * n --- > = { algebra } --- > k / ngk < n --- --- We know there must be an integer in the interval --- --- > (k/ngk, k/ngk + 1] --- --- So to satisfy the requirements above, we can pick a @t@ such that: --- --- > k/ngk + 1 <= k * t --- > = { algebra } --- > 1/ngk + 1/k <= t --- --- To pick a value for @t@ we vary the proportion of honest keys. -sigCntT :: BlockCount -> Word8 -> Gen Double -sigCntT (BlockCount k) ngk = - Gen.double (Range.constant lower upper) - where - lower = 1 / (fromIntegral ngk * 0.7) + 1 / fromIntegral k - upper = 1 / (fromIntegral ngk * 0.5) + 1 / fromIntegral k diff --git a/eras/byron/chain/executable-spec/test/Main.hs b/eras/byron/chain/executable-spec/test/Main.hs deleted file mode 100644 index 2e9cd45eb5d..00000000000 --- a/eras/byron/chain/executable-spec/test/Main.hs +++ /dev/null @@ -1,23 +0,0 @@ -module Main (main) where - -import Test.Byron.AbstractSize.Properties (testAbstractSize, testProperty) -import Test.Byron.Spec.Chain.STS.Properties as CHAIN -import Test.Tasty (TestTree, defaultMain, testGroup) - -main :: IO () -main = defaultMain tests - where - tests :: TestTree - tests = - testGroup - "Chain" - [ testGroup - "Properties" - [ testProperty "Increasing slots" CHAIN.slotsIncrease - , testProperty "Block issuers are delegates" CHAIN.blockIssuersAreDelegates - , testAbstractSize - , testProperty "Only valid signals are generated" CHAIN.onlyValidSignalsAreGenerated - , testProperty "Signers list is bounded by k " CHAIN.signersListIsBoundedByK - , testProperty "We are generating reasonable Chain Traces" CHAIN.relevantCasesAreCovered - ] - ] diff --git a/eras/byron/chain/executable-spec/test/Test/Byron/AbstractSize/Properties.hs b/eras/byron/chain/executable-spec/test/Test/Byron/AbstractSize/Properties.hs deleted file mode 100644 index 1028e80e0cb..00000000000 --- a/eras/byron/chain/executable-spec/test/Test/Byron/AbstractSize/Properties.hs +++ /dev/null @@ -1,185 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Byron.AbstractSize.Properties (testAbstractSize, testProperty) where - -import Byron.Spec.Chain.STS.Block (Block (..), BlockBody (..), BlockHeader (..)) -import Byron.Spec.Chain.STS.Rule.Chain (CHAIN) -import Byron.Spec.Ledger.Core hiding ((<|)) -import Byron.Spec.Ledger.Delegation (DCert) -import Byron.Spec.Ledger.UTxO -import Byron.Spec.Ledger.Update (ProtVer (..), UProp (..), Vote) -import Data.AbstractSize -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Maybe (maybeToList) -import Data.Sequence ((<|), (><)) -import qualified Data.Sequence as Seq -import qualified Data.Set as Set -import Data.Typeable (TypeRep, Typeable, typeOf) -import Data.Word (Word64) -import Hedgehog (MonadTest, Property, diff, forAll, property, withTests, (===)) -import Hedgehog.Internal.Property (PropertyName (..)) -import Numeric.Natural (Natural) -import Test.Control.State.Transition.Generator (trace) -import Test.Control.State.Transition.Trace (TraceOrder (OldestFirst), traceSignals) -import Test.Tasty (TestName, TestTree, testGroup) -import Test.Tasty.HUnit (Assertion, testCase, (@?=)) -import Test.Tasty.Hedgehog hiding (testProperty) - --- | testProperty has been deprecated. We make our own version here. -testProperty :: TestName -> Property -> TestTree -testProperty s p = testPropertyNamed s (Hedgehog.Internal.Property.PropertyName s) p - --------------------------------------------------------------------------------- --- Example typeReps for Block/Header/Body --------------------------------------------------------------------------------- - -aTx :: TxBody -aTx = undefined - -aTxId :: TxId -aTxId = TxId (hash aTx) - -aHeader :: BlockHeader -aHeader = - BlockHeader - { _bhPrevHash = undefined :: Hash - , _bhSlot = undefined :: Slot - , _bhIssuer = undefined :: VKey - , _bhSig = undefined :: Sig Hash - , _bhUtxoHash = undefined :: Hash - , _bhDlgHash = undefined :: Hash - , _bhUpdHash = undefined :: Hash - } - -aTxWits :: Tx -aTxWits = - let (in0, in1) = (TxIn aTxId 0, TxIn aTxId 1) - outs = [] - wits = [] - in Tx (TxBody [in0, in1] outs) wits - -aBody :: BlockBody -aBody = - BlockBody - { _bDCerts = [] - , _bUtxo = [aTxWits, aTxWits] - , _bUpdProp = Nothing - , _bUpdVotes = [] - , _bProtVer = - ProtVer - { _pvMaj = 0 - , _pvMin = 1 - , _pvAlt = 1 - } - } - -aBlock :: Block -aBlock = - Block - { _bHeader = aHeader - , _bBody = aBody - } - --- | A BlockHeader term has fixed typeReps -exampleTypeRepsBlockHeader :: Assertion -exampleTypeRepsBlockHeader = - typeReps aHeader - @?= Seq.fromList - [ typeOf (undefined :: BlockHeader) - , typeOf (undefined :: Hash) - , typeOf (undefined :: Hash) - , typeOf (undefined :: Hash) - , typeOf (undefined :: Hash) - , typeOf (undefined :: Slot) - , typeOf (undefined :: Word64) - , typeOf (undefined :: VKey) - , typeOf (undefined :: Owner) - , typeOf (undefined :: Natural) - , typeOf (undefined :: Sig Hash) - ] - --- | A BlockBody has variable typeReps, depending on the collections --- [DCert], [TxWits], [Vote] and [STag] (in UProp) --- --- In this example, we can see the repetition of typeReps for 2 TxWits -exampleTypeRepsBlockBody :: Assertion -exampleTypeRepsBlockBody = - typeReps aBody - @?= Seq.fromList - [ typeOf (undefined :: BlockBody) - , typeOf (undefined :: [DCert]) - , typeOf (undefined :: [Tx]) - ] - >< typeReps aTxWits - >< typeReps aTxWits - >< Seq.fromList - [ typeOf (undefined :: Maybe UProp) - , typeOf (undefined :: [Vote]) - , typeOf (undefined :: ProtVer) - , typeOf (undefined :: Natural) - , typeOf (undefined :: Natural) - , typeOf (undefined :: Natural) - ] - --- | The typeReps for a 'Block' is a combination of typeReps for --- the header and body in the block. -exampleTypeRepsBlock :: Assertion -exampleTypeRepsBlock = - typeReps aBlock - @?= typeOf (undefined :: Block) - <| typeReps aHeader - >< typeReps aBody - --------------------------------------------------------------------------------- --- Properties of abstractSize for Block/Header/Body --------------------------------------------------------------------------------- - --- | Make a singleton cost of "1" for the given term's type -mkCost :: forall a. Typeable a => Map TypeRep Size -mkCost = Map.singleton (typeOf (undefined :: a)) 1 - --- | This property tests that for abstractSize --- - we should account for each DCert/TxWits/Vote/UProp/STag in a Block Body --- - the BlockHeader and BlockBody should each be counted only once -propMultipleOfSizesBlock :: - MonadTest m => Block -> m () -propMultipleOfSizesBlock b = - let body_ = _bBody b - in do - abstractSize (mkCost @DCert) b === length (_bDCerts body_) - abstractSize (mkCost @Tx) b === length (_bUtxo body_) - abstractSize (mkCost @Vote) b === length (_bUpdVotes body_) - abstractSize (mkCost @UProp) b === length (maybeToList (_bUpdProp body_)) - -- A STag is a string, so we need to make sure that all the characters are - -- accounted for in the size computation. We cannot use equality, since - -- characters might appear in other parts of the block. - diff - (maybe 0 (sum . fmap length . Set.toList . _upSTags) (_bUpdProp body_)) - (<=) - (abstractSize (mkCost @Char) b) - - -- BlockHeader appears only once - abstractSize (mkCost @BlockHeader) b === 1 - -- BlockBody appears only once - abstractSize (mkCost @BlockBody) b === 1 - -propBlockAbstractSize :: Property -propBlockAbstractSize = - withTests 50 $ - property $ do - tr <- forAll (trace @CHAIN () 100) - let blocks = traceSignals OldestFirst tr :: [Block] - mapM_ propMultipleOfSizesBlock blocks - -testAbstractSize :: TestTree -testAbstractSize = - testGroup - "Test abstractSize" - [ testCase "AbstractSize - example - BlockHeader" exampleTypeRepsBlockHeader - , testCase "AbstractSize - example - BlockBody" exampleTypeRepsBlockBody - , testCase "AbstractSize - example - Block" exampleTypeRepsBlock - , testProperty "AbstractSize - Block/Header/Body" propBlockAbstractSize - ] diff --git a/eras/byron/chain/executable-spec/test/Test/Byron/Spec/Chain/STS/Properties.hs b/eras/byron/chain/executable-spec/test/Test/Byron/Spec/Chain/STS/Properties.hs deleted file mode 100644 index 2c4afa7924d..00000000000 --- a/eras/byron/chain/executable-spec/test/Test/Byron/Spec/Chain/STS/Properties.hs +++ /dev/null @@ -1,230 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Test.Byron.Spec.Chain.STS.Properties where - -import Byron.Spec.Chain.STS.Block -import Byron.Spec.Chain.STS.Rule.Chain -import Byron.Spec.Chain.STS.Rule.Epoch (sEpoch) -import Byron.Spec.Ledger.Core (BlockCount (BlockCount), Epoch, Slot (unSlot)) -import Byron.Spec.Ledger.Delegation -import Byron.Spec.Ledger.GlobalParams (slotsPerEpoch) -import Control.Arrow ((***)) -import Control.State.Transition -import Data.Foldable (traverse_) -import Data.List.Ordered (nubSortBy) -import Data.Ord (Down (Down), comparing) -import Hedgehog ( - MonadTest, - Property, - assert, - cover, - failure, - forAll, - property, - withTests, - (===), - ) -import Lens.Micro ((&), (^.), (^..), _1, _5) -import Lens.Micro.Extras (view) -import Test.Control.State.Transition.Generator ( - TraceLength (Desired, Maximum), - classifyTraceLength, - traceSigGen, - ) -import qualified Test.Control.State.Transition.Generator as Transition.Generator -import Test.Control.State.Transition.Trace - -slotsIncrease :: Property -slotsIncrease = property $ do - let (maxTraceLength, step) = (100, 10) - tr <- - forAll $ - traceSigGen - () - (Maximum maxTraceLength) - (sigGenChain NoGenDelegation NoGenUTxO NoGenUpdate) - classifyTraceLength tr maxTraceLength step - slotsIncreaseInTrace tr - -slotsIncreaseInTrace :: MonadTest m => Trace CHAIN -> m () -slotsIncreaseInTrace tr = slots === nubSortBy (comparing Down) slots - where - blocks = traceSignals NewestFirst tr - slots = blocks ^.. traverse . bHeader . bhSlot - -blockIssuersAreDelegates :: Property -blockIssuersAreDelegates = - withTests 300 $ - property $ do - let (maxTraceLength, step) = (100, 10) - tr <- - forAll $ - traceSigGen - () - (Maximum maxTraceLength) - (sigGenChain GenDelegation NoGenUTxO GenUpdate) - classifyTraceLength tr maxTraceLength step - checkBlockIssuersAreDelegates tr - where - checkBlockIssuersAreDelegates :: MonadTest m => Trace CHAIN -> m () - checkBlockIssuersAreDelegates tr = - traverse_ checkIssuer $ preStatesAndSignals OldestFirst tr - where - checkIssuer :: MonadTest m => (State CHAIN, Signal CHAIN) -> m () - checkIssuer (st, bk) = - case delegatorOf dm issuer of - Just _ -> pure () - Nothing -> failure - where - issuer = bk ^. bHeader . bhIssuer - dm = st ^. disL . delegationMap - -onlyValidSignalsAreGenerated :: Property -onlyValidSignalsAreGenerated = - withTests 200 $ Transition.Generator.onlyValidSignalsAreGenerated @CHAIN () 100 - -signersListIsBoundedByK :: Property -signersListIsBoundedByK = withTests 300 $ - property $ do - let maxTraceLength = 100 - tr <- - forAll $ - traceSigGen - () - (Maximum maxTraceLength) - (sigGenChain GenDelegation NoGenUTxO GenUpdate) - signersListIsBoundedByKInTrace tr - where - signersListIsBoundedByKInTrace :: MonadTest m => Trace CHAIN -> m () - signersListIsBoundedByKInTrace tr = - traverse_ (signersListIsBoundedByKInState k) $ traceStates OldestFirst tr - where - (_, _, _, _, k) = _traceEnv @CHAIN tr - - signersListIsBoundedByKInState :: MonadTest m => BlockCount -> State CHAIN -> m () - signersListIsBoundedByKInState (BlockCount k') (_sLast, sgs, _h, _utxoSt, _ds, _us) = - assert $ length sgs <= fromIntegral k' - -relevantCasesAreCovered :: Property -relevantCasesAreCovered = withTests 200 $ - property $ do - tr <- forAll $ traceSigGen () (Desired 200) (sigGenChain GenDelegation NoGenUTxO NoGenUpdate) - let certs = traceDCerts tr - - -- for at least 1% of traces... - cover - 1 - "there are more certificates than blocks" - (traceLength tr <= length certs) - - -- for at least 10% of traces... - cover - 10 - "at most 75% of blocks have no certificates" - (emptyDelegationPayloadRatio (traceDCertsByBlock tr) <= 0.75) - - -- for at least 25% of traces... - cover - 25 - "at least 25% of delegates will delegate to this epoch" - (0.25 <= thisEpochDelegationsRatio (epochDelegationEpoch tr)) - - -- for at least 60% of traces... - cover - 60 - "at least 50% of delegations will delegate to the next epoch" - (0.5 <= nextEpochDelegationsRatio (epochDelegationEpoch tr)) - - -- for at least 10% of traces... - cover - 10 - "at most 30% of certificates will self-delegate" - (selfDelegationsRatio certs <= 0.30) - - -- for at least 60% of traces... - cover - 60 - "at least 25% delegates have multiple delegators" - (0.25 <= multipleDelegationsRatio certs) - - -- for at least 20% of traces... - cover - 20 - "some delegates have at least 5 corresponding delegators" - (5 <= maxDelegationsTo certs) - - -- for at least 5% of traces... - cover - 5 - "at most 50% of delegators change their delegation" - (changedDelegationsRatio certs <= 0.5) - - -- for at least 20% of traces... - cover - 20 - "some delegators have changed their delegation 5 or more times" - (5 <= maxChangedDelegations certs) - - -- for at least 2% of traces... - cover - 2 - "at most 25% of delegations are repeats" - (repeatedDelegationsRatio certs <= 0.25) - - -- for at least 30% of traces... - cover - 30 - "some delegations are repeated 10 or more times" - (10 <= maxRepeatedDelegations certs) - - -- for at least 15% of traces... - cover - 15 - "some blocks have 5 or more certificates" - (5 <= maxCertsPerBlock (traceDCertsByBlock tr)) - - -- for at least 50% of traces... - cover - 50 - "there is at least one change of epoch in the trace" - (2 <= epochBoundariesInTrace tr) - - -- for at least 30% of traces... - cover - 30 - "there are at least 5 epoch changes in the trace" - (5 <= epochBoundariesInTrace tr) - where - -- Get the epoch in which the delegation certificates of the trace were - -- applied, paired with the epoch of the delegation certificate. - epochDelegationEpoch :: Trace CHAIN -> [(Epoch, Epoch)] - epochDelegationEpoch tr = - preStatesAndSignals @CHAIN OldestFirst tr - & fmap (sEpoch_ . view _1 *** (fmap depoch . (_bDCerts . _bBody))) - & fmap (\(e, es) -> zip (repeat e) es) - & concat - where - blockCount = _traceEnv tr ^. _5 - sEpoch_ = flip sEpoch blockCount - - -- Count the number of epoch boundaries in the trace - epochBoundariesInTrace :: Trace CHAIN -> Int - epochBoundariesInTrace tr = - length $ - filter (== 0) (isAtBoundary <$> slots) - where - blocks = traceSignals NewestFirst tr - slots = blocks ^.. traverse . bHeader . bhSlot - k = _traceEnv tr ^. _5 - isAtBoundary = (`rem` slotsPerEpoch k) . unSlot - --- | Extract the delegation certificates in the blocks, in the order they would --- have been applied. -traceDCertsByBlock :: Trace CHAIN -> [[DCert]] -traceDCertsByBlock tr = _bDCerts . _bBody <$> traceSignals OldestFirst tr - --- | Flattended list of DCerts for the given Trace -traceDCerts :: Trace CHAIN -> [DCert] -traceDCerts = concat . traceDCertsByBlock diff --git a/eras/byron/chain/formal-spec/Makefile b/eras/byron/chain/formal-spec/Makefile deleted file mode 100644 index 5528c2bbc83..00000000000 --- a/eras/byron/chain/formal-spec/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -## -## Makefile for a specification of the blockchain layer, based on: -## -## https://tex.stackexchange.com/questions/40738/how-to-properly-make-a-latex-project -## - -# Document name -DOCNAME = byron-blockchain - -# You want latexmk to *always* run, because make does not have all the info. -# Also, include non-file targets in .PHONY so they are run regardless of any -# file of the given name existing. -.PHONY: $(DOCNAME).pdf all clean - -# The first rule in a Makefile is the one executed by default ("make"). It -# should always be the "all" rule, so that "make" and "make all" are identical. -all: $(DOCNAME).pdf - -## -## CUSTOM BUILD RULES -## - - -## -## MAIN LATEXMK RULE -## - -# -pdf tells latexmk to generate PDF directly (instead of DVI). -# -pdflatex="" tells latexmk to call a specific backend with specific options. -# -use-make tells latexmk to call make for generating missing files. - -# -interaction=nonstopmode keeps the pdflatex backend from stopping at a -# missing file reference and interactively asking you for an alternative. - -$(DOCNAME).pdf: $(DOCNAME).tex - latexmk -pdf -pdflatex="pdflatex -interaction=nonstopmode" -use-make $(DOCNAME).tex - -watch: $(DOCNAME).tex - latexmk -pvc -pdf -pdflatex="pdflatex -interaction=nonstopmode -synctex=1" -use-make $(DOCNAME).tex - -clean: - latexmk -CA - -install: - mkdir -pv ${out}/nix-support/ - cp ${DOCNAME}.pdf ${out}/ - echo "doc-pdf ${DOCNAME}.pdf ${out}/${DOCNAME}.pdf" > ${out}/nix-support/hydra-build-products diff --git a/eras/byron/chain/formal-spec/byron-blockchain.tex b/eras/byron/chain/formal-spec/byron-blockchain.tex deleted file mode 100644 index 149223cfdb5..00000000000 --- a/eras/byron/chain/formal-spec/byron-blockchain.tex +++ /dev/null @@ -1,1486 +0,0 @@ -\documentclass[11pt,a4paper]{article} -\usepackage{amsmath} -\usepackage{amssymb} -\usepackage{array} -\usepackage{extarrows} -\usepackage{float} -\usepackage[margin=2.5cm]{geometry} -\usepackage[unicode=true,pdftex,pdfa]{hyperref} -\usepackage[capitalise,noabbrev,nameinlink]{cleveref} -\usepackage[utf8]{inputenc} -\usepackage{latexsym} -\usepackage{listings} -\usepackage{mathpazo} % nice fonts -\usepackage{mathtools} -\usepackage{microtype} -\usepackage[colon]{natbib} -\usepackage[toc,page]{appendix} -%% -%% Package `semantic` can be used for writing inference rules. -%% -\usepackage{semantic} -\usepackage{slashed} -\usepackage{stmaryrd} -\usepackage[colorinlistoftodos,prependcaption,textsize=tiny]{todonotes} - -\hypersetup{ - pdftitle={Specification of the Blockchain Layer}, - breaklinks=true, - bookmarks=true, - colorlinks=false, - linkcolor={blue}, - citecolor={blue}, - urlcolor={blue}, - linkbordercolor={white}, - citebordercolor={white}, - urlbordercolor={white} -} -\floatstyle{boxed} -\restylefloat{figure} - -%% Setup for the semantic package -\setpremisesspace{20pt} - -\DeclareMathOperator{\dom}{dom} -\DeclareMathOperator{\range}{range} - -%% -\newcommand{\powerset}[1]{\mathbb{P}~#1} -\newcommand\Set[2]{\left\{\,#1\mid#2\,\right\}} -\newcommand{\restrictdom}{\lhd} -\newcommand{\subtractdom}{\mathbin{\slashed{\restrictdom}}} -\newcommand{\restrictrange}{\rhd} -\newcommand{\union}{\cup} -\newcommand{\unionoverride}{\mathbin{\underrightarrow\cup}} -\newcommand{\uniondistinct}{\uplus} -\newcommand{\var}[1]{\mathit{#1}} -\newcommand{\fun}[1]{\mathsf{#1}} -\newcommand{\type}[1]{\mathsf{#1}} -\newcommand{\pp}[1]{\mathsf{#1}} -\newcommand{\size}[1]{\left| #1 \right|} -\newcommand{\trans}[2]{\xlongrightarrow[\textsc{#1}]{#2}} -\newcommand{\stslabel}[1]{\footnotesize{\textsc{#1}}} -\newcommand{\seqof}[1]{#1^{*}} -\newcommand{\serialised}[1]{\llbracket \var{#1} \rrbracket} - -\newcommand{\leteq}{\ensuremath{\mathrel{\mathop:}=}} - -% Partial and total function aliases -\newcommand{\totalf}{\to} -\newcommand{\partialf}{\mapsto} - -%% -%% Types -%% -\newcommand{\Hash}{\type{Hash}} % hashes of various things, including blocks -\newcommand{\Slot}{\type{Slot}} -\newcommand{\SlotCount}{\type{SlotCount}} -\newcommand{\BlockIx}{\type{BlockIx}} -\newcommand{\Block}{\type{Block}} -\newcommand{\DCert}{\type{DCert}} -\newcommand{\Queue}{\type{Q}} -\newcommand{\Tx}{\type{Tx}} - -\newcommand{\VKey}{\type{VKey}} -\newcommand{\VKeyGen}{\type{VKey_G}} -\newcommand{\Sig}{\type{Sig}} -\newcommand{\Data}{\type{Data}} -\newcommand{\DelegState}{\type{DIState}} - -\newcommand{\ProtParams}{\type{PParams}} % protocol parameters -\newcommand{\ProtPm}{\ensuremath{\type{Ppm}}} -\newcommand{\maxblocksize}{\pp{maxBlockSize}} -\newcommand{\maxheadersize}{\pp{maxHeaderSize}} - -\newcommand{\Nothing}{\Diamond} - -%% -%% Function and relation names -%% -\newcommand{\bsizename}{bSize} -\newcommand{\bhdrsizename}{bHeaderSize} -\newcommand{\verifyname}{verify} - -\newcommand{\isebbname}{bIsEBB} -\newcommand{\bcertsname}{bCerts} -\newcommand{\bhsigname}{bhSig} -\newcommand{\bhissuername}{bhIssuer} - -%% -%% Functions and relations -%% -\newcommand{\verify}[3]{\fun{\verifyname} ~ #1 ~ #2 ~ #3} -\newcommand{\bsize}[1]{\fun{\bsizename} ~ #1} -\newcommand{\bhdrsize}[1]{\fun{\bhdrsizename} ~ #1} -\newcommand{\delegation}[2]{\fun{\delegationname} ~ #1 ~ #2} -\newcommand{\signmap}[1]{\fun{\signmapname} ~ #1} -\newcommand{\qrestr}[2]{\fun{\qrestrname} ~ #1 ~ #2} -\newcommand{\trimix}[2]{\fun{\trimixname} ~ #1 ~ #2} -\newcommand{\incixmap}[3]{\fun{\incixmapname} ~ #1 ~ #2 ~ #3} - -\newcommand{\hashofblock}[1]{\fun{\hashofblockname} ~ #1} -\newcommand{\blocksizelimit}[2]{\fun{\blocksizelimitname} ~ #1 ~ #2} -\newcommand{\isebb}[1]{\fun{\isebbname} ~ #1} -\newcommand{\bcerts}[1]{\fun{\bcertsname} ~ #1} -\newcommand{\bhsig}[1]{\fun{\bhsigname} ~ #1} -\newcommand{\bhissuer}[1]{\fun{\bhissuername} ~ #1} - -\newcommand{\qpop}[1]{\fun{\qpopname} ~ #1} -\newcommand{\qhead}[1]{\fun{\qheadname} ~ #1} -\newcommand{\qpush}[1]{\fun{\qpushname} ~ #1} - - -% A type alias for a map from a genesis block verification key to a queue of indices -\newcommand{\mapqueue}{\mathcal{Q}} -% comments -\newcommand{\marko}[1]{\todo[size=\small, color=yellow!40, inline]{Marko: #1}} - -\newcommand{\transtar}[2]{\xlongrightarrow[\textsc{#1}]{#2}\negthickspace^{*}} -\newtheorem{property}{Property} -\newtheorem{definition}{Definition} - -\begin{document} - -\title{Specification of the Blockchain Layer} - -\author{Marko Dimjašević \\ Nicholas Clarke} - -\date{May 2, 2019} - -\maketitle - -\begin{abstract} - This documents defines inference rules for operations on a blockchain as a - specification of the blockchain layer of Cardano in the Byron release and in - a transition to the Shelley release. - % - In particular, a block validity definition is given, which is accompanied by - small-step operational semantics inference rules. -\end{abstract} - -\section*{List of Contributors} -\label{acknowledgements} - -Damian Nadales, Yun Lu. - -\tableofcontents -\listoffigures - -\section{Introduction} -\label{sec:introduction} - -The idea behind this document is to formalise what it means for a new block to -be added to the blockchain to be valid. -% -The scope of the document is the Byron release and a transition phase to the -Shelley release of the Cardano blockchain platform. - - -Unless a new block is valid, it cannot be added to the blockchain and thereby -extend it. -% -This is needed for a system that is subscribed to the blockchain and keeps a -copy of it locally. -% -In particular, this document gives a formalisation that should be -straightforward to implement in a programming language, e.g., in Haskell. - -This document is intended to be read in conjunction with \cite{byron_ledger_spec}, -which covers the payload carried around in the blockchain. Certain of the -underlying systems and types defined will rely on definitions in that document. - -\section{Preliminaries} -\label{sec:preliminaries} - -\begin{description} -\item[Powerset] Given a set $\type{X}$, $\powerset{\type{X}}$ is the set of all - the subsets of $X$. -\item[Sequence] Given a set $\type{X}$, $\seqof{\type{X}}$ is a sequence - having elements taken from $\type{X}$. - % - The empty sequence is denoted by $\epsilon$, and given a sequence $\Lambda$, - $\Lambda; x$ is the sequence that results from appending - $x \in \type{X}$ to $\Lambda$. - % - Furthermore, $\epsilon$ is an identity element for sequence joining: - $\epsilon; x = x; \epsilon = x$. -\item[Dropping on sequences] Given a sequence $\Lambda$, - $\Lambda \shortdownarrow n$ is the sequence that is obtained after removing - (dropping) the first $n$ elements from $\Lambda$. If $n \leq 0$ then - $\Lambda \shortdownarrow n = \Lambda$. -\item[Appending with a moving window] Given a sequence $\Lambda$, we define - $$\Lambda ;_w x \leteq (\Lambda; x) \shortdownarrow (\size{\Lambda} + 1 - w)$$ -\item[Filtering on sequences] Given a sequence $\Lambda$, and a predicate $p$ - on the elements of $\Lambda$, $\fun{filter}~p~\Lambda$ is the sequence that - contains all the elements of $\Lambda$ that satisfy $p$, in the same order - they appear on $\Lambda$. -\item[Option type] An option type in type $A$ is denoted as $A^? = A + \Nothing$. The - $A$ case corresponds to a case when there is a value of type $A$ and the $\Nothing$ - case corresponds to a case when there is no value. -\item[Union override] The union override operation is defined in - Figure~\ref{fig:unionoverride}. - % - \begin{figure} - \begin{align*} - \var{K} \restrictdom \var{M} - & = \{ i \mapsto o \mid i \mapsto o \in \var{M}, ~ i \in \var{K} \} - & \text{domain restriction} - \\ - \var{K} \subtractdom \var{M} - & = \{ i \mapsto o \mid i \mapsto o \in \var{M}, ~ i \notin \var{K} \} - & \text{domain exclusion} - \\ - \var{M} \restrictrange \var{V} - & = \{ i \mapsto o \mid i \mapsto o \in \var{M}, ~ o \in \var{V} \} - & \text{range restriction} - \\ - & \unionoverride \in (A \mapsto B) \to (A \mapsto B) \to (A \mapsto B) - & \text{union override}\\ - & d_0 \unionoverride d_1 = d_1 \cup (\dom d_1 \subtractdom d_0) - \end{align*} - \caption{Definition of the Union Override Operation} - \label{fig:unionoverride} - \end{figure} -\item[Pattern matching in premises] In the inference-rules premises use - $\var{patt} = \var{exp}$ to pattern-match an expression $\var{exp} $ with a - certain pattern $\var{patt}$. For instance, we use $\Lambda'; x = \Lambda$ to - be able to deconstruct a sequence $\Lambda$ in its last element, and prefix. - If an expression does not match the given pattern, then the premise does not - hold, and the rule cannot trigger. -\item[Maps and partial functions] $A \mapsto B$ denotes a \textbf{partial - function} from $A$ to $B$, which can be seen as a map (dictionary) with - keys in $A$ and values in $B$. Given a map $m \in A \mapsto B$, notation - $a \mapsto b \in m$ is equivalent to $m~ a = b$. -\end{description} - -\subsection{Sets} -\label{sec:sets} - -There are several standard sets used in the document: -% -\begin{description} -\item[Booleans] The set of booleans is denoted with $\mathbb{B}$ and has two - values, $\mathbb{B} = \{\bot, \top\}$. -\item[Natural numbers] The set of natural numbers is denoted with - $\mathbb{N}$ and defined as $\mathbb{N} = \{0, 1, 2, \dots\}$. -\end{description} - -\section{Update interface} - -\newcommand{\bupdprop}[1]{\fun{bUpdProp}\ #1} -\newcommand{\bupdvotes}[1]{\fun{bUpdVotes}\ #1} -\newcommand{\bprotver}[1]{\fun{bProtVer}\ #1} -\newcommand{\bendorsment}[1]{\fun{bEndorsment}\ #1} - -\newcommand{\UpdatePayload}{\type{UpdatePayload}} -% Imported definitions - -\newcommand{\UPIEnv}{\type{UPIEnv}} -\newcommand{\UPIState}{\type{UPIState}} -\newcommand{\UProp}{\type{UProp}} -\newcommand{\Vote}{\ensuremath{\type{Vote}}} -\newcommand{\ProtVer}{\ensuremath{\type{ProtVer}}} - -We define a general update interface to abstract over the various update state -transitions which happen when a new block is processed. Figure -\ref{fig:defs:bupi} defines the type of signals used for this system. Figure -\ref{fig:rules:bupi} defines the rules for this system. The two rules handle the -cases where there is or is not an update proposal contained within the block. - -\begin{figure}[ht] - \emph{Update interface signals} - \begin{equation*} - \UpdatePayload = - \left( - \begin{array}{r@{~\in~}lr} - \var{mprop} & \UProp^{?} & \text{possible update proposal}\\ - \var{votes} & \seqof{\Vote} & \text{votes for update proposals}\\ - \var{end} & (\VKey \times \ProtVer) & \text{protocol version endorsment} - \end{array} - \right) - \end{equation*} - - \caption{Update interface processing types and functions} - \label{fig:defs:bupi} -\end{figure} - -\begin{figure}[ht] - \emph{Update interface processing transitions} - \begin{equation*} - \_ \vdash \var{\_} \trans{bupi}{\_} \var{\_} \subseteq - \powerset (\UPIEnv \times \UPIState \times \UpdatePayload \times \UPIState) - \end{equation*} - \caption{Update interface processing transition-system types} - \label{fig:ts-types:bupi} -\end{figure} - -\begin{figure}[ht] - \begin{equation*} - \inference - { \Gamma \vdash \var{us} - \trans{\hyperlink{byron_ledger_spec_link}{upireg}}{\var{prop}} \var{us'} - \\ - \Gamma \vdash \var{us'} - \trans{\hyperlink{byron_ledger_spec_link}{upivotes}}{\var{votes}} \var{us''} - & - \Gamma \vdash \var{us''} - \trans{\hyperlink{byron_ledger_spec_link}{upiend}}{\var{end}} \var{us'''} - } - { - \Gamma \vdash - {\var{us}} - \trans{bupi} - { - \left( - \begin{array}{l} - \var{prop} \\ - \var{votes} \\ - \var{end} - \end{array} - \right) - } - {\var{us'''}} - } - \end{equation*} - \vspace{20pt} - \begin{equation*} - \inference - { \Gamma \vdash \var{us} - \trans{\hyperlink{byron_ledger_spec_link}{upivotes}}{\var{votes}} \var{us'} - & - \Gamma \vdash \var{us'} - \trans{\hyperlink{byron_ledger_spec_link}{upiend}}{\var{end}} \var{us''} - } - { - \Gamma \vdash \var{us} - \trans{bupi}{ - \left( - \begin{array}{l} - \Nothing \\ - \var{votes} \\ - \var{end} - \end{array} - \right) - } - \var{us''} - } - \end{equation*} - \caption{Update interface processing rules} - \label{fig:rules:bupi} -\end{figure} - -\clearpage -\section{Permissive BFT} - -The majority of this specification is concerned with the processing of the -\textit{ledger}; that is, the content (contained in both the block header and -the block body). In addition, however, we must also concern ourselves with the -protocol used to transmit the blocks and whether, according to that protocol, we -may validly extend the chain with a new block (assuming that block forms a valid -extension to the chain under the ledger rules). - -Cardano's planned evolution can be split into roughly three eras: -\begin{description} -\item[Byron/Ouroboros] In the Byron/Ouroboros era, the Ouroboros (\cite{ouroboros}) - protocol is used to control who is eligible to issue a block, using a stake - distribution mediated by heavyweight delegation certificates. The Byron - payload includes such things as VSS and payloads verified by individual - signatures. -\item[Handover] In the handover era, blocks will be issued according to - Ouroboros BFT (\cite{ouroboros_bft}). The Byron payload will be retained, although - parts of will be superfluous. -\item[Shelley/Praos] In the Shelley/Praos era, blocks will be issued according - to the Ouroboros Praos (\cite{ouroboros_praos}) protocol, with stake distribution - determined according to the new delegation design in \cite{delegation_design}. -\end{description} - -During the handover era (as described in this document), while blocks will be -issued according to Ouroboros BFT, they will be validated according to a variant -known as Permissive BFT. This is designed such that it will successfully -validate blocks issued both under Ouroboros and under Ouroboros BFT (with a high -probability - see Appendix \ref{apdx:calculating-t}). - -This section therefore will describe the section of the rules concerned with the -Permissive BFT protocol. Note that all of these are concerned only with the -block header, since the block body is entirely concerned with the ledger. - -\subsection{Counting signed blocks} - -\newcommand{\BSCEnv}{\type{BSCEnv}} -\newcommand{\BSCState}{\type{BSCState}} - -To guard against the compromise of a minority of the genesis keys, we require -that in the rolling window of the last $k$ blocks, where $k$ is the chain -stability parameter, the number of blocks signed by keys that $sk_s$ delegated -to is no more than a threshold $k \cdot t$, where $t$ is a constant that will -be picked in the range $1/5 \leq t \leq 1/4$. Initial research suggests setting -$t=0.22$ as a good value. Specifically, given $k=2160$, we would allow a single -genesis key to issue (via delegates) $475$ blocks (since -$2160 \cdot 0.22 = 475.2$), but a $476^{\text{th}}$ block would be rejected. -See Appendix \ref{apdx:calculating-t} for the background on this value. The -abstract constant (nullary functions) related to the protocol are defined in -\cref{fig:defs:proto-abstract-funcs}. - -\begin{figure}[ht] - \emph{Abstract functions} - % - \begin{equation*} - \begin{array}{r@{~\in~}lr} - k & \mathbb{N} & \text{chain stability parameter}\\ - t & \left[\frac{1}{5}, \frac{1}{4}\right] & \text{block signature count threshold}\\ - \fun{dms} & \DelegState \totalf (\VKeyGen \mapsto \VKey) & \text{delegation-state delegation-map} - \end{array} - \end{equation*} - - \caption{Protocol abstract functions} - \label{fig:defs:proto-abstract-funcs} -\end{figure} - - -Figure \ref{fig:rules:sigcnt} gives the rules for signature counting. We verify -that the key that delegates to the signer of this block has not already signed -more than its allowed threshold of blocks. If there are no delegators for the -given key, or if there is more than one delegator, the rule will fail to trigger. -% -We then update the sequence of signers, and drop those elements that fall -outside the size of the moving window ($k$). - -\begin{figure}[ht] - \emph{Block signature count environments} - \begin{equation*} - \BSCEnv = - \left( - \begin{array}{r@{~\in~}lr} - \var{ds} & \DelegState & \text{delegation state} \\ - \end{array} - \right) - \end{equation*} - - \emph{Block signature count transitions} - \begin{equation*} - \_ \vdash \var{\_} \trans{sigcnt}{\_} \var{\_} \subseteq - \powerset (\BSCEnv \times \seqof{\VKeyGen} \times \VKey \times \seqof{\VKeyGen}) - \end{equation*} - \caption{Block signature count transition-system types} - \label{fig:ts-types:sigcnt} -\end{figure} - -\begin{figure}[ht] - \begin{equation*} - \inference - { - \{\var{vk_g}\} \leteq \dom{((\fun{dms} ~ \var{ds}) \restrictrange \{\var{vk_d}\})} - & \var{sgs'} \leteq \var{sgs};_k {vk_g} & - \size{\fun{filter}~(=\var{vk_g})~\var{sgs'}} \leq k \cdot t \\ - } - { - \var{ds} - \vdash - {\var{sgs}} - \trans{sigcnt}{\var{vk_d}} - {\var{sgs'}} - } - \label{eq:rule:sigcnt} - \end{equation*} - \caption{Block signature count rules} - \label{fig:rules:sigcnt} -\end{figure} - -\clearpage - -\subsection{Permissive BFT Header Processing} - -\newcommand{\PBFTEnv}{\type{PBFTEnv}} -\newcommand{\PBFTState}{\type{PBFTState}} - -\newcommand{\Bhead}{\type{BlockHeader}} -\newcommand{\Bhtosign}{\type{BHToSign}} - -\newcommand{\bhslotname}{bhSlot} -\newcommand{\bhslot}[1]{\fun{\bhslotname}\ #1} -\newcommand{\bhhashname}{bhHash} -\newcommand{\bhhash}[1]{\fun{\bhhashname}\ #1} -\newcommand{\bhprevhashname}{bhPrevHash} -\newcommand{\bhprevhash}[1]{\fun{\bhprevhashname}\ #1} -\newcommand{\bhtosignname}{bhToSign} -\newcommand{\bhtosign}[1]{\fun{\bhtosignname}\ #1} - -During PBFT processing of the block header, we do the following: -\begin{enumerate} - \item We check that the current block is being issued for a slot later than - that of the last block issued. - \item We check that the current block is being issued for a slot no later than - the current slot (as determined by the system clock). - \item We check that the previous block hash contained in the block header - corresponds to the known hash of the previous block. - \item We check that the header signature correctly verifies the ``signed'' - content of the header. - \item Finally, we verify and update the state according to the signature - count rules. - \end{enumerate} - \begin{figure}[ht] - \emph{Abstract types} - % - \begin{equation*} - \begin{array}{r@{~\in~}lr} - bh & \Bhead & \text{Block header} - \end{array} - \end{equation*} - % - \emph{Abstract functions} - % - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \fun{\bhprevhashname} & \Bhead \totalf \Hash & \text{previous header hash} \\ - \fun{\bhhashname} & \Bhead \totalf \Hash & \text{header hash} \\ - \fun{\bhsigname} & \Bhead \totalf \Sig & \text{block signature} \\ - \fun{\bhissuername} & \Bhead \totalf \VKey & \text{block issuer} \\ - \fun{\bhslotname} & \Bhead \totalf \Slot & \text{slot for which this block is issued} - \end{array} - \end{equation*} - \caption{Permissive BFT types and functions} - \label{fig:defs:pbft} -\end{figure} - -\begin{figure}[ht] - \emph{Permissive BFT environments} - \begin{equation*} - \PBFTEnv = - \left( - \begin{array}{r@{~\in~}lr} - \var{ds} & \DelegState & \text{delegation state} \\ - \var{s_{last}} & \Slot & \text{slot for which the last known block was issued} \\ - \var{s_{now}} & \Slot & \text{current slot} \\ - \end{array} - \right) - \end{equation*} - - \emph{Permissive BFT states} - \begin{equation*} - \PBFTState = - \left( - \begin{array}{r@{~\in~}lr} - \var{h} & \Hash & \text{Tip header hash} \\ - \var{sgs} & \seqof{\VKeyGen} & \text{Last signers} - \end{array} - \right) - \end{equation*} - \emph{Permissive BFT transitions} - \begin{equation*} - \_ \vdash \var{\_} \trans{pbft}{\_} \var{\_} \subseteq - \powerset (\PBFTEnv \times \PBFTState \times \Bhead \times \PBFTState) - \end{equation*} - \caption{Permissive BFT transition-system types} - \label{fig:ts-types:pbft} -\end{figure} - -\begin{figure}[ht] - \begin{equation*} - \inference - { - \var{vk_d} \leteq \bhissuer{bh} & \var{s} \leteq \bhslot{bh} - \\ \var{s} > \var{s_{last}} & \var{s} \leq \var{s_{now}} - \\ \bhprevhash{bh} = \var{h} & \verify{vk_d}{\serialised{\bhtosign{bh}}}{(\bhsig{bh})} - \\ - ds - \vdash - \var{sgs} \trans{\hyperref[fig:rules:sigcnt]{sigcnt}}{\var{vk_d}} \var{sgs'} - \\ - } - { - \left( - {\begin{array}{c} - \var{ds} \\ - \var{s_{last}} \\ - \var{s_{now}} \\ - \end{array}} - \right) - \vdash - \left( - {\begin{array}{c} - \var{h} \\ - \var{sgs} - \end{array}} - \right) - \trans{pbft}{\var{bh}} - \left( - {\begin{array}{c} - \bhhash{bh} \\ - \var{sgs}' - \end{array}} - \right) - } -\end{equation*} -\caption{Permissive BFT rules} -\label{fig:rules:pbft} -\end{figure} - - -\clearpage - -\section{Epoch transitions} - -\newcommand{\Epoch}{\type{Epoch}} - -\newcommand{\ETState}{\type{ETState}} -\newcommand{\ETEnv}{\type{ETEnv}} - -\newcommand{\sepochname}{sEpoch} -\newcommand{\sepoch}[2]{\fun{\sepochname}\ #1\ #2} - -During each block transition, we must determine whether that block sits on an -epoch boundary and, if so, carry out various actions which are done on that -boundary. In the BFT era, the only computation carried out at the epoch boundary -is the update of protocol versions. - -We rely on a function $\fun{\sepochname}$, whose type is given in -\cref{fig:defs:epoch}, to determine the epoch corresponding to a given slot. -% -We do not provide an implementation for such function in this specification, -but in practice a possible way of implementing such function is to rely on map -from the epochs to their corresponding length (given in number of slots they -contain). Such a map would also be required by the database layer to find the -requisite epoch file to look up a given block. We envision that an -implementation may of course choose a more compact representation for this -partial function that only records the changes in epoch length, rather than -storing a length for each epoch. -% -In addition, we rely on abstract constant (nullary function) $\var{ngk}$, which -determines the number of genesis keys. - -It is also worth noticing that in the Byron era, the number of slots per-epoch -is fixed to $10 \cdot k$, where $k$ is the chain stability parameter. - -Figure \ref{fig:rules:epoch} determines when an epoch change has occurred and -updates the update state to the correct version. - -\begin{figure}[ht] - \emph{Abstract functions} - % - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \fun{\sepochname} - & \Slot \totalf \mathbb{N} \totalf \Epoch - & \text{epoch containing this slot} \\ - \var{ngk} & \mathbb{N} & \text{number of genesis keys}\\ - \end{array} - \end{equation*} - - \caption{Epoch transition types and functions} - \label{fig:defs:epoch} -\end{figure} - -\begin{figure}[ht] - \emph{Epoch transition environments} - \begin{align*} - & \ETEnv - = \left( - \begin{array}{r@{~\in~}lr} - \var{e_c} & \Epoch & \text{current epoch} - \end{array}\right) - \end{align*} - - \emph{Epoch transition states} - \begin{equation*} - \ETState = - \left( - \begin{array}{r@{~\in~}lr} - \var{us} & \UPIState & \text{update interface state} - \end{array} - \right) - \end{equation*} - - \emph{Epoch transition transitions} - \begin{equation*} - \_ \vdash \var{\_} \trans{epoch}{\_} \var{\_} \subseteq - \powerset (\ETEnv \times \ETState \times \Slot \times \ETState) - \end{equation*} - \caption{Epoch transition transition-system types} - \label{fig:ts-types:epoch} -\end{figure} - -\begin{figure}[ht] - \begin{equation*} - \inference - { - \var{e_c} \geq \sepoch{s}{k} - } - {\var{e_c} - \vdash - { - {\begin{array}{c} - \var{us} - \end{array} - } - } - \trans{epoch}{s} - { - {\begin{array}{c} - \var{us} - \end{array} - } - } - } -\end{equation*} -\vspace{20pt} -\begin{equation*} - \inference - { - \var{e_c} < \sepoch{s}{k} - & - \sepoch{s}{k}\vdash \var{us} \trans{\hyperlink{byron_ledger_spec_link}{upiec}}{} \var{us'} - } - { - \var{e_c} - \vdash - { - {\begin{array}{c} - \var{us} - \end{array} - } - } - \trans{epoch}{s} - { - {\begin{array}{c} - \var{us'} - \end{array} - } - } -} -\end{equation*} -\caption{Epoch transition rules} -\label{fig:rules:epoch} -\end{figure} - -\clearpage - -\section{Block processing} -\label{sec:block-processing} - -\newcommand{\BHEnv}{\type{BHEnv}} -\newcommand{\BHState}{\type{BHState}} - -\newcommand{\BBEnv}{\type{BBEnv}} -\newcommand{\BBState}{\type{BBState}} - -\newcommand{\bheadname}{bHead} -\newcommand{\bhead}[1]{\fun{\bheadname}\ #1} -\newcommand{\bupdpayloadname}{bUpdPayload} -\newcommand{\bupdpayload}[1]{\fun{\bupdpayloadname}\ #1} - -\newcommand{\bslotname}{bSlot} -\newcommand{\bslot}[1]{\fun{\bslotname}\ #1} - -\newcommand{\butxo}[1]{\fun{bUtxo}\ #1} - -% Imported definitions -\newcommand{\UTxO}{\type{UTxO}} -\newcommand{\UTxOState}{\type{UTxOState}} -\newcommand{\DIEnv}{\type{DIEnv}} -\newcommand{\DIState}{\type{DIState}} - -We delineate here between processing the header and body of a block. It's useful -to make this distinction since we may process headers ahead of the -block body, and we have less context available to process headers - in -particular, we must be able to process block headers without the recent history -of block bodies. - -\begin{figure}[ht] - \emph{Abstract types} - % - \begin{equation*} - \begin{array}{r@{~\in~}lr} - b & \Block & \text{block} \\ - h & \Hash & \text{hash} \\ - \var{data} & \Data & \text{data} - \end{array} - \end{equation*} - % - % - \emph{Abstract functions} - % - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \fun{\bsizename} & \Block \totalf \mathbb{N} & \text{block size in bytes} \\ - \fun{\verifyname} & \VKey \times \Data \times \Sig & \text{verification relation} \\ - \end{array} - \end{equation*} - \caption{Basic Block-related Types and Functions} - \label{fig:block-defs} -\end{figure} - -\subsection{Block header processing} - -Processing headers doesn't require any changes to the state, so we simply check -predicates. Figure \ref{eq:func:header-is-valid} gives the validity -predicate for a header. We verify that the block header does not exceed the -maximum size specified in the protocol parameters. The $\maxheadersize{}$ -protocol parameter is defined in \cite{byron_ledger_spec}. - -\begin{figure}[ht] - \emph{Abstract types} - % - \begin{equation*} - \begin{array}{r@{~\in~}lr} - bh & \Bhead & \text{block header} \\ - bts & \Bhtosign & \text{part of the block header which must be signed} - \end{array} - \end{equation*} - % - \emph{Abstract functions} - % - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \fun{\bheadname} & \Block \totalf \Bhead & \text{block header} \\ - \fun{\bhdrsizename} & \Bhead \totalf \mathbb{N} & \text{block header size in bytes} - \end{array} - \end{equation*} - \caption{Block header processing types and functions} - \label{fig:defs:bhead} -\end{figure} - -\begin{figure}[ht] - \begin{equation} - \label{eq:func:header-is-valid} - \fun{headerIsValid}~\var{us}~\var{bh} = \maxheadersize \mapsto \var{s_{max}} \in \fun{pps}~\var{us} \Rightarrow \bhdrsize{bh} \leq \var{s_{max}} - \end{equation} - \caption{Block header validity functions} -\end{figure} - -\clearpage - -\subsection{Block body processing} - -During processing of the block body, we perform two main functions: -verification of the body integrity using the proofs contained in the block -header, and update of the various state components. These rules are given in -\cref{fig:rules:bbody}, where the types and the functions used there are -defined in \cref{fig:ts-types:bbody}. The UTxO, delegation, and update state as -well as the $\maxblocksize{}$ protocol parameter are defined in -\cite{byron_ledger_spec}. - -Verification is done independently for the three components of the body payload: -UTxO, delegation and update. Each of these three has a hash in the block -header. Note that Byron-era block payload also has an additional component: the -VSS payload. This part of the block is unnecessary during the BFT era, and hence -we do not verify it. - -In addition to block verification, we also process the three components of the -payload; UTxO, delegation and update. - -\begin{figure}[ht] - \emph{Abstract functions} - % - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \fun{bUtxo} & \Block \totalf (\Tx \times \powerset{(\VKey \times \Sig)}) & \text{block UTxO payload} \\ - \fun{\bcertsname} & \Block \totalf \seqof{\DCert} - & \text{block certificates} \\ - \fun{bUpdProp} & \Block \totalf \UProp^{?} & \text{block update proposal payload} \\ - \fun{bUpdVotes} & \Block \totalf \seqof{\Vote} & \text{block update votes payload} \\ - \fun{bProtVer} & \Block \totalf \ProtVer & \text{block protocol version} \\ - \fun{bhUtxoHash} & \Bhead \totalf \Hash & \text{UTxO payload hash} \\ - \fun{bhDlgHash} & \Bhead \totalf \Hash & \text{delegation payload hash} \\ - \fun{bhUpdHash} & \Bhead \totalf \Hash & \text{update payload hash} \\ - \fun{hash} & \type{Data} \totalf \Hash & \text{hash function} \\ - \end{array} - \end{equation*} - \emph{Derived functions} - \begin{equation*} - \begin{array}{rlr} - \fun{bEndorsment} & \in \Block \to \ProtVer \times \VKey & \text{Protocol version endorsment} \\ - \bendorsment{b} & = (\bprotver{b}, (\bhissuername \cdot \bheadname) ~ b)\\ - \fun{\bslotname} & \in \Block \to \Slot & \text{Slot for which this block is being issued} \\ - \bslot{b} & = (\bhslotname \cdot \bheadname)~b \\ - \fun{\bupdpayloadname} & \in \Block \to (\UProp^{?}\times\seqof{\Vote}) & \text{Block update payload} \\ - \bupdpayload{b} & = (\bupdprop{b},~\bupdvotes{b}) - \end{array} - \end{equation*} - \caption{Block body processing types and functions} - \label{fig:defs:bbody} -\end{figure} - -\begin{figure}[ht] - \emph{Block body processing environments} - \begin{equation*} - \BBEnv = - \left( - \begin{array}{r@{~\in~}lr} - \var{pps} & \ProtParams & \text{protocol parameters} \\ - \var{e_n} & \Epoch & \text{epoch we are currently processing blocks for} \\ - \var{utxo_0} & \UTxO & \text{genesis UTxO} - \end{array} - \right) - \end{equation*} - - \emph{Block body processing states} - \begin{equation*} - \BBState = - \left( - \begin{array}{r@{~\in~}lr} - \var{utxoSt} & \UTxOState & \text{UTxO state} \\ - \var{ds} & \DIState & \text{delegation state} \\ - \var{us} & \UPIState & \text{update interface state} - \end{array} - \right) - \end{equation*} - - \emph{Block body processing transitions} - \begin{equation*} - \_ \vdash \var{\_} \trans{bbody}{\_} \var{\_} \subseteq - \powerset (\BBEnv \times \BBState \times \Block \times \BBState) - \end{equation*} - \caption{Block body processing transition-system types} - \label{fig:ts-types:bbody} -\end{figure} - -\begin{figure}[ht] - \begin{equation*} - \inference - { \maxblocksize \mapsto \var{b_{max}} \in \var{pps} && \bsize{b} \leq \var{b_{max}} \\ - \var{bh} \leteq \bhead{b} & \var{vk_d} \leteq \bhissuer{\var{bh}} \\ - \fun{hash}~(\butxo{b}) = \fun{bhUtxoHash}~\var{bh} & - \fun{hash}~(\bcerts{b}) = \fun{bhDlgHash}~\var{bh} \\ - \fun{hash}~(\bupdpayload{b}) = \fun{bhUpdHash}~\var{bh}\\~\\ - {\left( - \begin{array}{l} - \bslot{b} \\ - \fun{dms}~ ds - \end{array} - \right)} - \vdash \var{us} \trans{\hyperref[fig:rules:bupi]{bupi}}{ - {\left( - \begin{array}{l} - \bupdprop{b} \\ - \bupdvotes{b} \\ - \bendorsment{b} - \end{array} - \right)} - } \var{us'} - \\ - {\left( - \begin{array}{l} - \dom{(\fun{dms}~ ds)} \\ - \var{e_n}\\ - \bslot{b} - \end{array} - \right)} - \vdash \var{ds} \trans{\hyperlink{byron_ledger_spec_link}{deleg}}{\bcerts{b}} \var{ds'} & - {\left( - \begin{array}{l} - \var{utxo_0} \\ - \var{pps} - \end{array} - \right)} - \vdash \var{utxoSt} - \trans{\hyperlink{byron_ledger_spec_link}{utxows}}{\butxo{b}} \var{utxoSt'} \\ - } - { - \left( - {\begin{array}{l} - \var{pps} \\ - \var{e_n} \\ - \var{utxo_0} - \end{array}} - \right) - \vdash - { - \left( - {\begin{array}{c} - \var{utxoSt} \\ - \var{ds} \\ - \var{us} - \end{array}} - \right) - } - \trans{bbody}{\var{b}} - { - \left( - {\begin{array}{c} - \var{utxoSt'} \\ - \var{ds'} \\ - \var{us'} - \end{array}} - \right) - } - } -\end{equation*} -\caption{Block body processing rules} -\label{fig:rules:bbody} -\end{figure} - -\clearpage - -\section{Blockchain extension} -\label{sec:chain-extension} - -\newcommand{\CEEnv}{\type{CEEnv}} -\newcommand{\CEState}{\type{CEState}} - -Figure \ref{fig:rules:chain-extension} captures the central chain extension -rule. This has two variants, depending on whether the block in question is an -epoch boundary block. Epoch boundary blocks are not required during the BFT era, -but whilst they are not distributed, epoch boundary blocks must still be -processed since their hash forms part of the chain. Since we do not care about -the contents of an epoch boundary block, we check that it does not exceed some -suitably large size, and otherwise simply update the header hash to the block -hash. - -If the block is not an epoch boundary block, then we process: -\begin{itemize} - \item a potential epoch change according to the rules in figure - \ref{fig:rules:epoch}, - \item the header using the validity predicate of equation - \ref{eq:func:header-is-valid}, and - \item the body according to the rules in figure \ref{fig:rules:bbody}. -\end{itemize} - -\begin{figure}[ht] - \emph{Abstract functions} - % - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \fun{\isebbname} & \Block \totalf \mathbb{B} & \text{epoch boundary block check} \\ - \fun{pps} & \UPIState \totalf \ProtParams & \text{update-state protocol-parameters} - \end{array} - \end{equation*} - \caption{Blockchain Extension Types and Functions} - \label{fig:defs:chain-extension} -\end{figure} - -\begin{figure}[ht] - \emph{Chain extension environments} - \begin{equation*} - \CEEnv - = \left( - \begin{array}{r@{~\in~}lr} - \var{s_{now}} & \Slot & \text{current slot} \\ - \var{utxo_0} & \UTxO & \text{genesis UTxO} - \end{array}\right) - \end{equation*} - - - \emph{Chain extension states} - \begin{equation*} - \CEState = - \left( - \begin{array}{r@{~\in~}lr} - \var{s_{last}} & \Slot & \text{slot of the last seen block} \\ - \var{sgs} & \seqof{\VKeyGen} & \text{last signers}\\ - \var{h} & \Hash & \text{current block hash} \\ - \var{utxoSt} & \UTxO & \text{UTxOState} \\ - \var{ds} & \DIState & \text{delegation state}\\ - \var{us} & \UPIState & \text{update interface state} \\ - \end{array} - \right) - \end{equation*} - - \emph{Chain extension transitions} - \begin{equation*} - \_ \vdash \var{\_} \trans{chain}{\_} \var{\_} \subseteq - \powerset (\CEEnv \times \CEState \times \Block \times \CEState) - \end{equation*} - - \caption{Blockchain extension transition-system types} - \label{fig:ts-types:chain-extension} -\end{figure} - -\begin{figure} - \begin{equation*} - \inference - { \isebb{b} & \bsize{b} \leq 2^{21} & - \var{h'} \leteq \bhhash{(\bhead b)} - } - { - \left( - {\begin{array}{l} - \var{s_{now}} \\ - \var{utxo_0} - \end{array}} - \right) - \vdash - \left( - {\begin{array}{c} - \var{s_{last}} \\ - \var{sgs} \\ - \var{h} \\ - \var{utxoSt} \\ - \var{ds} \\ - \var{us} - \end{array}} - \right) - \trans{chain}{b} - \left( - {\begin{array}{c} - \var{s_{last}} \\ - \var{sgs} \\ - \var{h'} \\ - \var{utxoSt} \\ - \var{ds} \\ - \var{us} - \end{array}} - \right) - } -\end{equation*} -\vspace{30pt} -\begin{equation*} - \inference - { - \neg\isebb{b} \\~\\ - { - \begin{array}{r@{~\vdash~}l} - {\left( - \begin{array}{l} - \sepoch{s_{last}}{k}\\ - \end{array} - \right)} - & - {\left( - \begin{array}{l} - us - \end{array} - \right)} - \trans{\hyperref[fig:rules:epoch]{epoch}}{\bslot{b}} - {\left( - \begin{array}{l} - us' - \end{array} - \right)}\\ - \multicolumn{1}{l}{~}\\ - \multicolumn{2}{c}{\fun{headerIsValid}~\var{us'}~(\bhead{b})}\\ - \multicolumn{1}{l}{~}\\ - {\left( - \begin{array}{l} - \fun{pps} ~ us' \\ - \sepoch{(\bslot{b})}{k} \\ - \var{utxo_0} - \end{array} - \right)} - & - {\left( - {\begin{array}{c} - \var{utxoSt} \\ - \var{ds} \\ - \var{us'} - \end{array}} - \right)} - \trans{\hyperref[fig:rules:bbody]{bbody}}{b} - {\left( - {\begin{array}{c} - \var{utxoSt'} \\ - \var{ds'} \\ - \var{us''} - \end{array}} - \right)}\\ - \multicolumn{1}{l}{~}\\ - \left( - {\begin{array}{l} - \var{ds} \\ - \var{s_{last}} \\ - \var{s_{now}} \\ - \end{array}} - \right) - & - \left( - {\begin{array}{c} - \var{h} \\ - \var{sgs} - \end{array}} - \right) - \trans{\hyperref[fig:rules:pbft]{pbft}}{\bhead{b}} - \left( - {\begin{array}{c} - \var{h'} \\ - \var{sgs}' - \end{array}} - \right) - \end{array} - } - } - { - \left( - {\begin{array}{l} - \var{s_{now}} \\ - \var{utxo_0} - \end{array}} - \right) - \vdash - \left( - {\begin{array}{c} - \var{s_{last}} \\ - \var{sgs} \\ - \var{h} \\ - \var{utxoSt} \\ - \var{ds} \\ - \var{us} - \end{array}} - \right) - \trans{chain}{b} - \left( - {\begin{array}{c} - \var{\bslot{b}} \\ - \var{sgs'} \\ - \var{h'} \\ - \var{utxoSt'} \\ - \var{ds'} \\ - \var{us''} - \end{array}} - \right) - } -\end{equation*} -\caption{Blockchain extension rules} -\label{fig:rules:chain-extension} -\end{figure} - -\clearpage - -\section{Transition systems properties} -\label{sec:ts-properties} - -\subsection{Header only validation} -\label{sec:header-only-validation} - -The following transition system is used in the properties enunciated in this -section. - -\begin{definition}[EPOCH+BHEAD+PBFT STS]\label{def:rule:epoch+bhead+pbft} - $$ - \inference - { - {\begin{array}{r@{~\vdash~}l} - {\left( - \begin{array}{l} - \sepoch{s_{last}}{k}\\ - \end{array} - \right)} - & - {\left( - \begin{array}{l} - us - \end{array} - \right)} - \trans{\hyperref[fig:rules:epoch]{epoch}}{\bslot{b}} - {\left( - \begin{array}{l} - us' - \end{array} - \right)}\\ - \multicolumn{1}{l}{~}\\ - \multicolumn{2}{c}{\fun{headerIsValid}~\var{us'}~(\bhead{b})}\\ - \multicolumn{1}{l}{~}\\ - \left( - {\begin{array}{l} - \var{ds} \\ - \var{s_{last}} \\ - \var{s_{now}} \\ - \end{array}} - \right) - & - \left( - {\begin{array}{c} - \var{h} \\ - \var{sgs} - \end{array}} - \right) - \trans{\hyperref[fig:rules:pbft]{pbft}}{\var{bh}} - \left( - {\begin{array}{c} - \var{h'} \\ - \var{sgs}' - \end{array}} - \right)\\ - \end{array}} - } - { - {\left( - {\begin{array}{l} - \var{ds} \\ - \var{s_{last}} \\ - \var{s_{now}} \\ - \end{array}} - \right) - \vdash - \left( - {\begin{array}{c} - \var{h} \\ - \var{sgs}\\ - \var{us} - \end{array}} - \right) - \trans{epoch+bhead+pbft}{\var{bh}} - \left( - {\begin{array}{c} - \var{h'} \\ - \var{sgs}'\\ - \var{us'} - \end{array}} - \right) - } - } - $$ -\end{definition} - -In any given ledger state, the consensus layer needs to be able to validate the -block headers without having to download the block bodies. -Property~\ref{prop:header-only-validation} states that if an extension of a -chain that spans less than $2 \cdot k$ slots is valid, then validating the -headers of that extension is also valid. This property is useful for its -converse: if the header validation check for a sequence of headers does not -pass, then we know that the block validation that corresponds to those headers -will not pass either. - -\begin{property}[Header only validation]\label{prop:header-only-validation} - For all environments $e$, states $s$ with slot number $t$\footnote{i.e. the - component $\var{s_{last}}$ of $s$ equals $t$}, and chain extensions $E$ - with corresponding headers $H$ such that: - % - $$ - 0 \leq t_E - t \leq 2 \cdot k - $$ - % - we have: - % - $$ - e \vdash s \transtar{chain}{E} s' \implies e_h \vdash s_h \transtar{epoch+bhead+pbft}{H} s'_h - $$ - where $t_E$ is the maximum slot number appearing in the blocks contained in - $E$, $e_h \leteq \fun{h_e}~e~s$ and $s_h \leteq \fun{h_s}~e~s$, and functions $\fun{h_e}$ - and $\fun{h_s}$ select the appropriate environment and state components - needed by the $\stslabel{epoch+bhead+pbft}$ transition system in the obvious way. -\end{property} - -Property~\ref{prop:body-only-validation} states that if we validate a sequence -of headers, we can validate their bodies independently and be sure that the -blocks will pass the chain validation rule. To see this, given an environment -$e$ and initial state $s$, assume that a sequence of headers -$H = [h_0, \ldots, h_n]$ corresponding to blocks in $E = [b_0, \ldots, b_n]$ is -valid according to the $\stslabel{epoch+bhead+pbft}$ transition system: -% -$$ -e_h \vdash s_h \transtar{epoch+bhead+pbft}{H} s'_h -$$ -% -where $e_h$ and $s_h$ are obtained from $e$ and $s$ as described in -Property~\ref{prop:header-only-validation}. Assume the bodies of $E$ are valid -according to the $\stslabel{bbody}$ rules, but $E$ is not valid according to -the $\stslabel{chain}$ rule. Assume that there is a $b_j \in E$ such that it is -\textbf{the first block} such that does not pass the $\stslabel{chain}$ -validation. Then: -% -$$ -e \vdash s \transtar{chain}{[b_0, \ldots b_{j-1}]} s_j -$$ -But by Property~\ref{prop:body-only-validation} we know that -% -$$ -e_{h_j} \vdash s_{h_j} \trans{epoch+bhead+pbft}{h_j} s_{h_{j+1}} -$$ -which means that block $b_j$ has valid headers, and this in turn means that the -validation of $b_j$ according to the chain rules must have failed because it -contained an invalid block body. But this contradicts our assumption that the -block bodies were valid. - -\begin{property}[Body only validation]\label{prop:body-only-validation} - For all environments $e$, states $s$ with slot number $t$, and chain - extensions $E = [b_0, \ldots, b_n]$ with corresponding headers $H$ such that: - $$ - 0 \leq t_E - t \leq 2 \cdot k - $$ - we have that for all $i \in [1, n]$: - $$ - e_h \vdash s_h \transtar{epoch+bhead+pbft}{H} s'_h - \wedge - e \vdash s \transtar{chain}{[b_0 \ldots b_{i-1}]} s_{i-1} - \implies - e_{h_{i-1}} \vdash s_{h_{i-1}}\trans{epoch+bhead+pbft}{h_i} s''_{h_{i}} - $$ - where $t_E$ is the maximum slot number appearing in the blocks contained in - $E$, $e_h \leteq \fun{h_e}~e~s$ and $s_h \leteq \fun{h_s}~e~s$, - $e_{h_{i-1}} \leteq \fun{h_e}~e~s_{i-1}$ and - $s_{h_{i-i}} \leteq \fun{h_s}~e~s_{i-1}$, and $\fun{h_e}$ and $\fun{h_s}$ are - the same functions mentioned in Property~\ref{prop:header-only-validation}. -\end{property} - -Property~\ref{prop:roll-back-funk} expresses the fact the there is a function -that allow us to recover the header-only state by rolling back at most $k$ -blocks, and use this state to validate the headers of an alternate chain. Note -that this property is not inherent to the $\stslabel{chain}$ rules and can be -trivially satisfied by any function that keeps track of the history of the -intermediate chain states up to $k$ blocks back. This property is stated here -so that it can be used as a reference for the tests in the consensus layer, -which uses the rules presented in this document. - -\begin{property}[Existence of roll back function]\label{prop:roll-back-funk} - There exists a function $\fun{f}$ such that for all chains - $$C = C_0 ; b; C_1$$ - we have that if for all alternative chains $C'_1$, $\size{C'_1} \leq k$, with - corresponding headers $H'_1$ - $$ - e \vdash s_0 \transtar{chain}{C_0;b} s_1 \transtar{chain}{C_1} s_2 - \wedge - e \vdash s_1 \transtar{chain}{C_1'} s'_1 - \implies - (\fun{f}~(\bhead{b})~s_2) \transtar{epoch+bhead+pbft}{H'_1} s_h - $$ -\end{property} - -\clearpage - -\bibliographystyle{plainnat} -\bibliography{references} - -\begin{appendices} - \section{Calculating the $t$ parameter} - \label{apdx:calculating-t} - - We originally give the range of $t$ as between $\frac{1}{5}$ and $\frac{1}{4}$. - The upper bound here is to reduce the possible number of malicious blocks; if - two of the genesis keys are comprimised, the attackers may not be able to - produce a longer chain than the honest participants. The lower bound is required - to prevent a situation in which a chain produced under the initial Ouroboros - setting produces a chain which, according to the new BFT semantics, is invalid. - - In order to determine the best value of $t$, we must consider the likelihood of - such an invalid chain being produced by the old procedure of randomly selecting - the slot leaders for each slot. Given the Cardano chain is still federated, the - likelihood of this happening is the same for each of the 7 stakeholders, and we - may model the number of selected slots within a $k$-slot window $X$ as a binomial - distribution $X \sim \mathrm{B}\left(k, \frac{1}{7}\right)$. - - In each epoch of size $n$ blocks, there are $n-k+1$ such $k$-block windows. - Boole's inequality gives us that the likelihood of exceeding the threshold in - any one of these windows is bounded above by the sum of the likelihoods for each - window. We may thus consider that the probability of a given stakeholder - violating the threshold in an epoch to be bounded by - - $$(n-k+1)\cdot P(X > t*k)$$ - - Appealing to Boole's inequality again, we may multiply this by the number of - epochs and the number of stakeholders to give a bound for the likelihood of - generating an invalid chain. - - Figure \ref{fig:calculating-t} gives the bound on the likelihood of threshold - violation for $t$ in our plausible range: from this we can see that the - likelihood decreases to a negligible level around $0.21$, and so we choose the - value of $t=0.22$, giving an upper bound on the likelihood around $6e-10$. - Increasing $t$ beyond this point gives no decrease in the likelihood of - violation. - - \begin{figure}[ht] - \begin{center} - \includegraphics[scale=0.5]{calculating-t.png} - \end{center} - \caption{Probability of generating an invalid chain for values of $t\in\left[ - \frac{1}{4}, \frac{1}{5} \right]$.} - \label{fig:calculating-t} - \end{figure} - -\end{appendices} -\end{document} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: t -%%% LaTeX-command: "nix develop --command make" -%%% End: diff --git a/eras/byron/chain/formal-spec/calculating-t.png b/eras/byron/chain/formal-spec/calculating-t.png deleted file mode 100644 index d6f35314ef3cd9c590540aa0430d0f1c8a408965..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13107 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

{umSG+ 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 Z6=7dYc~nWje})0nRkR=4.14 && <5, - aeson, - base16-bytestring >=1, - base64-bytestring, - base64-bytestring-type, - binary, - bytestring, - canonical-json, - cardano-ledger-binary >=1.3.1, - cardano-crypto, - cardano-prelude >=0.1.0.1, - heapwords, - cryptonite, - data-default, - deepseq, - formatting, - memory, - nothunks, - text - -test-suite test - type: exitcode-stdio-1.0 - main-is: test.hs - hs-source-dirs: test - other-modules: - Test.Cardano.Crypto.CBOR - Test.Cardano.Crypto.Dummy - Test.Cardano.Crypto.Example - Test.Cardano.Crypto.Gen - Test.Cardano.Crypto.Hashing - Test.Cardano.Crypto.Json - Test.Cardano.Crypto.Keys - Test.Cardano.Crypto.Limits - Test.Cardano.Crypto.Orphans - Test.Cardano.Crypto.Random - Test.Cardano.Crypto.Signing.Redeem - Test.Cardano.Crypto.Signing.Redeem.Compact - Test.Cardano.Crypto.Signing.Safe - Test.Cardano.Crypto.Signing.Signing - Paths_cardano_crypto_wrapper - GetDataFileName - - default-language: Haskell2010 - default-extensions: NoImplicitPrelude - ghc-options: - -Wall -Wno-all-missed-specialisations - -Wno-missing-deriving-strategies -Wno-missing-import-lists - -Wno-missing-safe-haskell-mode -Wno-prepositive-qualified-module - -Wno-safe -Wno-unsafe -Wunused-packages -threaded -rtsopts - - build-depends: - base, - bytestring, - cardano-ledger-binary:{cardano-ledger-binary, testlib}, - cardano-crypto, - cardano-crypto-wrapper, - cardano-prelude, - cardano-prelude-test, - cryptonite, - formatting, - filepath, - hedgehog >=1.0.4, - memory diff --git a/eras/byron/crypto/src/Cardano/Crypto.hs b/eras/byron/crypto/src/Cardano/Crypto.hs deleted file mode 100644 index 2607d3748c0..00000000000 --- a/eras/byron/crypto/src/Cardano/Crypto.hs +++ /dev/null @@ -1,9 +0,0 @@ -module Cardano.Crypto ( - module X, -) -where - -import Cardano.Crypto.Hashing as X -import Cardano.Crypto.ProtocolMagic as X -import Cardano.Crypto.Random as X -import Cardano.Crypto.Signing as X diff --git a/eras/byron/crypto/src/Cardano/Crypto/Encryption.hs b/eras/byron/crypto/src/Cardano/Crypto/Encryption.hs deleted file mode 100644 index 810fcfbc21d..00000000000 --- a/eras/byron/crypto/src/Cardano/Crypto/Encryption.hs +++ /dev/null @@ -1,38 +0,0 @@ -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE ViewPatterns #-} - --- | Wrapper over AES. `encode` and `decode` use AES256 CTR mode with IV = 0. --- Decryption functions are used in wallet. Encryption is not used anywhere. -module Cardano.Crypto.Encryption ( - AesKey (..), - aesEncrypt, - aesDecrypt, -) -where - -import Cardano.Prelude hiding (init) -import Crypto.Cipher.AES (AES256) -import Crypto.Cipher.Types (BlockCipher (..), cipherInit, ctrCombine, nullIV) -import Crypto.Error (CryptoError, eitherCryptoError) - --------------------------------------------------------------------------------- --- AES --------------------------------------------------------------------------------- - --- | Key to encrypt data -newtype AesKey = AesKey - { fromAESKey :: ByteString - } - deriving (Show, Eq, Generic) - -aesEncrypt :: ByteString -> AesKey -> Either CryptoError ByteString -aesEncrypt input (fromAESKey -> sk) = - ctrCombine <$> init <*> pure nullIV <*> pure input - where - -- FIXME: return either here - init :: Either CryptoError AES256 - init = eitherCryptoError $ cipherInit sk - -aesDecrypt :: ByteString -> AesKey -> Either CryptoError ByteString -aesDecrypt = aesEncrypt -- encryption/decryption is symmetric diff --git a/eras/byron/crypto/src/Cardano/Crypto/Hashing.hs b/eras/byron/crypto/src/Cardano/Crypto/Hashing.hs deleted file mode 100644 index a30ed55bd51..00000000000 --- a/eras/byron/crypto/src/Cardano/Crypto/Hashing.hs +++ /dev/null @@ -1,310 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneKindSignatures #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE UndecidableInstances #-} - --- | Hashing capabilities. -module Cardano.Crypto.Hashing ( - -- * 'AbstractHash' type supporting different hash algorithms - AbstractHash, - HashAlgorithm, - - -- ** Hashing - abstractHash, - unsafeAbstractHash, - - -- ** Conversion - abstractHashFromDigest, - abstractHashFromBytes, - unsafeAbstractHashFromBytes, - abstractHashToBytes, - unsafeAbstractHashFromShort, - abstractHashToShort, - - -- ** Parsing and printing - decodeAbstractHash, - - -- * Standard 'Hash' type using Blake2b 256 - Hash, - - -- ** Hashing - hash, - hashDecoded, - hashRaw, - serializeCborHash, - - -- ** Conversion - hashFromBytes, - unsafeHashFromBytes, - hashToBytes, - - -- ** Parsing and printing - decodeHash, - hashHexF, - mediumHashF, - shortHashF, -) -where - -import Cardano.Crypto.Raw (Raw (..)) -import Cardano.HeapWords -import Cardano.Ledger.Binary ( - DecCBOR (..), - Decoded (..), - DecoderError (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - byronProtVer, - cborError, - fromByronCBOR, - serialize, - toByronCBOR, - withWordSize, - ) -import Cardano.Prelude hiding (cborError) -import Crypto.Hash (Blake2b_256, Digest, HashAlgorithm, hashDigestSize) -import qualified Crypto.Hash as Hash -import Data.Aeson ( - FromJSON (..), - FromJSONKey (..), - FromJSONKeyFunction (..), - ToJSON (..), - ToJSONKey (..), - ) -import Data.Aeson.Types (toJSONKeyText) -import qualified Data.ByteArray as ByteArray -import qualified Data.ByteArray.Encoding as ByteArray -import qualified Data.ByteString as BS -import qualified Data.ByteString.Base16 as B16 -import qualified Data.ByteString.Char8 as BSC -import qualified Data.ByteString.Lazy as LBS -import qualified Data.ByteString.Short as SBS -import Data.String (String) -import qualified Data.Text.Encoding as T -import Formatting (Format, bprint, build, fitLeft, later, sformat, (%.)) -import qualified Formatting.Buildable as B (Buildable (..)) -import NoThunks.Class (NoThunks (..)) -import qualified Prelude - --------------------------------------------------------------------------------- --- AbstractHash --------------------------------------------------------------------------------- - --- | Hash wrapper with phantom type for more type-safety --- --- Made abstract in order to support different algorithms -type AbstractHash :: Type -> Type -> Type -newtype AbstractHash algo a = AbstractHash SBS.ShortByteString - deriving (Eq, Ord, Generic, NFData, NoThunks) - -instance Show (AbstractHash algo a) where - show (AbstractHash h) = - BSC.unpack - . ByteArray.convertToBase ByteArray.Base16 - . SBS.fromShort - $ h - -instance HashAlgorithm algo => Read (AbstractHash algo a) where - readsPrec _ s = case B16.decode (T.encodeUtf8 (toS s)) of - Left _ -> [] - Right bs -> case abstractHashFromBytes bs of - Nothing -> [] - Just h -> [(h, "")] - -instance B.Buildable (AbstractHash algo a) where - build = bprint mediumHashF - -instance ToJSON (AbstractHash algo a) where - toJSON = toJSON . sformat hashHexF - -instance HashAlgorithm algo => FromJSON (AbstractHash algo a) where - parseJSON = toAesonError . readEither @_ @String <=< parseJSON - -instance - (HashAlgorithm algo, FromJSON (AbstractHash algo a)) => - FromJSONKey (AbstractHash algo a) - where - fromJSONKey = FromJSONKeyTextParser (toAesonError . decodeAbstractHash) - -instance ToJSONKey (AbstractHash algo a) where - toJSONKey = toJSONKeyText (sformat hashHexF) - -instance (Typeable algo, Typeable a, HashAlgorithm algo) => ToCBOR (AbstractHash algo a) where - toCBOR = toByronCBOR - -instance (Typeable algo, Typeable a, HashAlgorithm algo) => EncCBOR (AbstractHash algo a) where - encCBOR (AbstractHash h) = encCBOR h - - encodedSizeExpr _ _ = - let realSz = hashDigestSize (panic "unused, I hope!" :: algo) - in fromInteger (toInteger (withWordSize realSz + realSz)) - -instance (Typeable algo, Typeable a, HashAlgorithm algo) => FromCBOR (AbstractHash algo a) where - fromCBOR = fromByronCBOR - -instance - (Typeable algo, Typeable a, HashAlgorithm algo) => - DecCBOR (AbstractHash algo a) - where - decCBOR = do - -- FIXME bad decode: it reads an arbitrary-length byte string. - -- Better instance: know the hash algorithm up front, read exactly that - -- many bytes, fail otherwise. Then convert to a digest. - bs <- decCBOR @SBS.ShortByteString - when (SBS.length bs /= expectedSize) - $ cborError - $ DecoderErrorCustom "AbstractHash" "Bytes not expected length" - return (AbstractHash bs) - where - expectedSize = hashDigestSize (Prelude.undefined :: algo) - -instance HeapWords (AbstractHash algo a) where - heapWords _ = - -- We have - -- - -- > newtype AbstractHash algo a = AbstractHash ShortByteString - -- > data ShortByteString = SBS ByteArray# - -- - -- so @AbstractHash algo a@ requires: - -- - -- - 1 word for the 'ShortByteString' object header - -- - 1 word for the pointer to the byte array object - -- - 1 word for the byte array object header - -- - 1 word for the size of the byte array payload in bytes - -- - 4 words (on a 64-bit arch) for the byte array payload containing the digest - -- - -- +---------+ - -- │ SBS │ * │ - -- +-------+-+ - -- | - -- v - -- +--------------+ - -- │BA#│sz│payload│ - -- +--------------+ - -- - 8 - --- | Parses given hash in base16 form. -decodeAbstractHash :: - HashAlgorithm algo => Text -> Either Text (AbstractHash algo a) -decodeAbstractHash prettyHash = do - bytes <- first (sformat build) $ B16.decode (T.encodeUtf8 prettyHash) - case abstractHashFromBytes bytes of - Nothing -> - Left - ( "decodeAbstractHash: " - <> "can't convert bytes to hash," - <> " the value was " - <> toS prettyHash - ) - Just h -> return h - --- | Hash the 'EncCBOR'-serialised version of a value --- Once this is no longer used outside this module it should be made private. -abstractHash :: (HashAlgorithm algo, EncCBOR a) => a -> AbstractHash algo a -abstractHash = unsafeAbstractHash . serialize byronProtVer - --- | Hash a lazy 'LByteString' --- --- You can choose the phantom type, hence the \"unsafe\". -unsafeAbstractHash :: HashAlgorithm algo => LByteString -> AbstractHash algo a -unsafeAbstractHash = abstractHashFromDigest . Hash.hashlazy - --- | Make an 'AbstractHash' from a 'Digest' for the same 'HashAlgorithm'. -abstractHashFromDigest :: Digest algo -> AbstractHash algo a -abstractHashFromDigest = AbstractHash . SBS.toShort . ByteArray.convert - --- | Make an 'AbstractHash' from the bytes representation of the hash. It will --- fail if given the wrong number of bytes for the choice of 'HashAlgorithm'. -abstractHashFromBytes :: - forall algo a. - HashAlgorithm algo => - ByteString -> - Maybe (AbstractHash algo a) -abstractHashFromBytes bs - | BS.length bs == expectedSize = Just (unsafeAbstractHashFromBytes bs) - | otherwise = Nothing - where - expectedSize = hashDigestSize (Prelude.undefined :: algo) - --- | Like 'abstractHashFromDigestBytes' but the number of bytes provided --- /must/ be correct for the choice of 'HashAlgorithm'. -unsafeAbstractHashFromBytes :: ByteString -> AbstractHash algo a -unsafeAbstractHashFromBytes = AbstractHash . SBS.toShort - --- | The bytes representation of the hash value. -abstractHashToBytes :: AbstractHash algo a -> ByteString -abstractHashToBytes (AbstractHash h) = SBS.fromShort h - --- | The 'SBS.ShortByteString' representation of the hash value. -unsafeAbstractHashFromShort :: SBS.ShortByteString -> AbstractHash algo a -unsafeAbstractHashFromShort = AbstractHash - --- | The 'SBS.ShortByteString' representation of the hash value. -abstractHashToShort :: AbstractHash algo a -> SBS.ShortByteString -abstractHashToShort (AbstractHash h) = h - --------------------------------------------------------------------------------- --- Hash --------------------------------------------------------------------------------- - --- | The type of our commonly used hash, Blake2b 256 -type Hash :: Type -> Type -type Hash = AbstractHash Blake2b_256 - -{-# DEPRECATED hash "Use serializeCborHash or hash the annotation instead." #-} - --- | The hash of a value, serialised via 'EncCBOR'. -hash :: EncCBOR a => a -> Hash a -hash = abstractHash - --- | The hash of a value, serialised via 'EncCBOR'. -serializeCborHash :: EncCBOR a => a -> Hash a -serializeCborHash = abstractHash - --- | The hash of a value's annotation -hashDecoded :: Decoded t => t -> Hash (BaseType t) -hashDecoded = unsafeAbstractHash . LBS.fromStrict . recoverBytes - --- | Hash a bytestring -hashRaw :: LBS.ByteString -> Hash Raw -hashRaw = unsafeAbstractHash - --- | Make a hash from it bytes representation. It must be a 32-byte bytestring. --- The size is checked. -hashFromBytes :: ByteString -> Maybe (Hash a) -hashFromBytes = abstractHashFromBytes - --- | Make a hash from a 32-byte bytestring. It must be exactly 32 bytes. -unsafeHashFromBytes :: ByteString -> Hash a -unsafeHashFromBytes = unsafeAbstractHashFromBytes - --- | The bytes representation of the hash value. -hashToBytes :: AbstractHash algo a -> ByteString -hashToBytes = abstractHashToBytes - --- | Parses given hash in base16 form. -decodeHash :: Text -> Either Text (Hash a) -decodeHash = decodeAbstractHash @Blake2b_256 - --- | Specialized formatter for 'Hash'. -hashHexF :: Format r (AbstractHash algo a -> r) -hashHexF = later $ \h -> B.build (show h :: Text) - --- | Smart formatter for 'Hash' to show only first @16@ characters of 'Hash'. -mediumHashF :: Format r (AbstractHash algo a -> r) -mediumHashF = fitLeft 16 %. hashHexF - --- | Smart formatter for 'Hash' to show only first @8@ characters of 'Hash'. -shortHashF :: Format r (AbstractHash algo a -> r) -shortHashF = fitLeft 8 %. hashHexF diff --git a/eras/byron/crypto/src/Cardano/Crypto/Orphans.hs b/eras/byron/crypto/src/Cardano/Crypto/Orphans.hs deleted file mode 100644 index 7738b611aa5..00000000000 --- a/eras/byron/crypto/src/Cardano/Crypto/Orphans.hs +++ /dev/null @@ -1,113 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Crypto.Orphans () where - -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - FromCBOR (..), - Size, - ToCBOR (..), - encodeBytes, - fromByronCBOR, - toByronCBOR, - toCborError, - withWordSize, - ) -import Cardano.Prelude hiding (toCborError) -import Crypto.Error (CryptoFailable (..)) -import qualified Crypto.PubKey.Ed25519 as Ed25519 -import Data.Aeson (FromJSON (..), ToJSON (..)) -import qualified Data.ByteArray as BA -import qualified Data.ByteString as BS -import Data.ByteString.Base64.Type (getByteString64, makeByteString64) -import qualified Data.Text as T - -fromByteStringToBytes :: ByteString -> BA.Bytes -fromByteStringToBytes = BA.convert - -fromByteStringToScrubbedBytes :: ByteString -> BA.ScrubbedBytes -fromByteStringToScrubbedBytes = BA.convert - -toByteString :: BA.ByteArrayAccess bin => bin -> ByteString -toByteString = BA.convert - -fromCryptoFailable :: T.Text -> CryptoFailable a -> Either T.Text a -fromCryptoFailable item (CryptoFailed e) = - Left $ "Cardano.Crypto.Orphan." <> item <> " failed because " <> show e -fromCryptoFailable _ (CryptoPassed r) = return r - -instance FromJSON Ed25519.PublicKey where - parseJSON v = do - res <- - Ed25519.publicKey - . fromByteStringToBytes - . getByteString64 - <$> parseJSON v - toAesonError $ fromCryptoFailable "parseJSON Ed25519.PublicKey" res - -instance ToJSON Ed25519.PublicKey where - toJSON = toJSON . makeByteString64 . toByteString - -instance FromJSON Ed25519.Signature where - parseJSON v = do - res <- - Ed25519.signature - . fromByteStringToBytes - . getByteString64 - <$> parseJSON v - toAesonError $ fromCryptoFailable "parseJSON Ed25519.Signature" res - -instance ToJSON Ed25519.Signature where - toJSON = toJSON . makeByteString64 . toByteString - -instance ToCBOR Ed25519.PublicKey where - toCBOR = toByronCBOR -instance FromCBOR Ed25519.PublicKey where - fromCBOR = fromByronCBOR -instance ToCBOR Ed25519.SecretKey where - toCBOR = toByronCBOR -instance FromCBOR Ed25519.SecretKey where - fromCBOR = fromByronCBOR -instance ToCBOR Ed25519.Signature where - toCBOR = toByronCBOR -instance FromCBOR Ed25519.Signature where - fromCBOR = fromByronCBOR - -instance EncCBOR Ed25519.PublicKey where - encCBOR = encodeBytes . toByteString - encodedSizeExpr _ _ = bsSize 32 - -instance DecCBOR Ed25519.PublicKey where - decCBOR = do - res <- Ed25519.publicKey . fromByteStringToBytes <$> decCBOR - toCborError $ fromCryptoFailable "decCBOR Ed25519.PublicKey" res - -instance EncCBOR Ed25519.SecretKey where - encodedSizeExpr _ _ = bsSize 64 - encCBOR sk = - encodeBytes - $ BS.append (toByteString sk) (toByteString $ Ed25519.toPublic sk) - -instance DecCBOR Ed25519.SecretKey where - decCBOR = do - res <- - Ed25519.secretKey - . fromByteStringToScrubbedBytes - . BS.take Ed25519.secretKeySize - <$> decCBOR - toCborError $ fromCryptoFailable "decCBOR Ed25519.SecretKey" res - -instance EncCBOR Ed25519.Signature where - encodedSizeExpr _ _ = bsSize 64 - encCBOR = encodeBytes . toByteString - -instance DecCBOR Ed25519.Signature where - decCBOR = do - res <- Ed25519.signature . fromByteStringToBytes <$> decCBOR - toCborError $ fromCryptoFailable "decCBOR Ed25519.Signature" res - --- Helper for encodedSizeExpr in EncCBOR instances -bsSize :: Int -> Size -bsSize x = fromIntegral (x + withWordSize x) diff --git a/eras/byron/crypto/src/Cardano/Crypto/ProtocolMagic.hs b/eras/byron/crypto/src/Cardano/Crypto/ProtocolMagic.hs deleted file mode 100644 index d53316e6b24..00000000000 --- a/eras/byron/crypto/src/Cardano/Crypto/ProtocolMagic.hs +++ /dev/null @@ -1,163 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE StandaloneKindSignatures #-} -{-# LANGUAGE UndecidableInstances #-} - -module Cardano.Crypto.ProtocolMagic ( - ProtocolMagicId (..), - ProtocolMagic, - AProtocolMagic (..), - RequiresNetworkMagic (..), - getProtocolMagic, - getProtocolMagicId, -) -where - -import Cardano.Ledger.Binary ( - Annotated (..), - DecCBOR (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - decodeTag, - encodeTag, - fromByronCBOR, - toByronCBOR, - ) -import Cardano.Prelude -import Control.Monad.Fail (fail) -import Data.Aeson ((.:), (.=)) -import qualified Data.Aeson as A -import NoThunks.Class (NoThunks) -import Text.JSON.Canonical (FromJSON (..), JSValue (..), ToJSON (..), expected) - --- | Magic number which should differ for different clusters. It's --- defined here, because it's used for signing. It also used for other --- things (e. g. it's part of a serialized block). --- --- mhueschen: As part of CO-353 I am adding `getRequiresNetworkMagic` in --- order to pipe configuration to functions which must generate & verify --- Addresses (which now must be aware of `NetworkMagic`). -type AProtocolMagic :: Type -> Type -data AProtocolMagic a = AProtocolMagic - { getAProtocolMagicId :: !(Annotated ProtocolMagicId a) - , getRequiresNetworkMagic :: !RequiresNetworkMagic - } - deriving (Eq, Show, Generic, NFData, NoThunks) - -type ProtocolMagic :: Type -type ProtocolMagic = AProtocolMagic () - -type ProtocolMagicId :: Type -newtype ProtocolMagicId = ProtocolMagicId - { unProtocolMagicId :: Word32 - } - deriving (Show, Eq, Generic) - deriving newtype (DecCBOR, EncCBOR, FromCBOR, ToCBOR) - deriving anyclass (NFData, NoThunks) - -instance A.ToJSON ProtocolMagicId where - toJSON = A.toJSON . unProtocolMagicId - -instance A.FromJSON ProtocolMagicId where - parseJSON v = ProtocolMagicId <$> A.parseJSON v - -getProtocolMagicId :: AProtocolMagic a -> ProtocolMagicId -getProtocolMagicId = unAnnotated . getAProtocolMagicId - --- mhueschen: For backwards-compatibility reasons, I redefine this function --- in terms of the two record accessors. -getProtocolMagic :: AProtocolMagic a -> Word32 -getProtocolMagic = unProtocolMagicId . getProtocolMagicId - -instance A.ToJSON ProtocolMagic where - toJSON (AProtocolMagic (Annotated (ProtocolMagicId ident) ()) rnm) = - A.object ["pm" .= ident, "requiresNetworkMagic" .= rnm] - -instance A.FromJSON ProtocolMagic where - parseJSON = A.withObject "ProtocolMagic" $ \o -> - AProtocolMagic - <$> o - .: "pm" - <*> o - .: "requiresNetworkMagic" - --- Canonical JSON instances -instance Monad m => ToJSON m ProtocolMagicId where - toJSON (ProtocolMagicId ident) = toJSON ident - -instance MonadError SchemaError m => FromJSON m ProtocolMagicId where - fromJSON v = ProtocolMagicId <$> fromJSON v - --------------------------------------------------------------------------------- --- RequiresNetworkMagic --------------------------------------------------------------------------------- - --- | Bool-isomorphic flag indicating whether we're on testnet --- or mainnet/staging. -type RequiresNetworkMagic :: Type -data RequiresNetworkMagic - = RequiresNoMagic - | RequiresMagic - deriving (Show, Eq, Generic, NFData, NoThunks) - -instance ToCBOR RequiresNetworkMagic where - toCBOR = toByronCBOR - -instance FromCBOR RequiresNetworkMagic where - fromCBOR = fromByronCBOR - -instance EncCBOR RequiresNetworkMagic where - encCBOR = \case - RequiresNoMagic -> encodeTag 0 - RequiresMagic -> encodeTag 1 - -instance DecCBOR RequiresNetworkMagic where - decCBOR = - decodeTag >>= \case - 0 -> return RequiresNoMagic - 1 -> return RequiresMagic - tag -> fail $ "RequiresNetworkMagic: unknown tag " ++ show tag - --- Aeson JSON instances --- N.B @RequiresNetworkMagic@'s ToJSON & FromJSON instances do not round-trip. --- They should only be used from a parent instance which handles the --- `requiresNetworkMagic` key. -instance A.ToJSON RequiresNetworkMagic where - toJSON RequiresNoMagic = A.String "RequiresNoMagic" - toJSON RequiresMagic = A.String "RequiresMagic" - -instance A.FromJSON RequiresNetworkMagic where - parseJSON = - A.withText "requiresNetworkMagic" - $ toAesonError - . \case - "RequiresNoMagic" -> Right RequiresNoMagic - "RequiresMagic" -> Right RequiresMagic - "NMMustBeNothing" -> Right RequiresNoMagic - "NMMustBeJust" -> Right RequiresMagic - other -> - Left - ( "invalid value " - <> other - <> ", acceptable values are RequiresNoMagic | RequiresMagic" - ) - --- Canonical JSON instances -instance Monad m => ToJSON m RequiresNetworkMagic where - toJSON RequiresNoMagic = pure (JSString "RequiresNoMagic") - toJSON RequiresMagic = pure (JSString "RequiresMagic") - -instance MonadError SchemaError m => FromJSON m RequiresNetworkMagic where - fromJSON = \case - JSString "RequiresNoMagic" -> pure RequiresNoMagic - JSString "RequiresMagic" -> pure RequiresMagic - other -> - expected "RequiresNoMagic | RequiresMagic" (Just $ show other) diff --git a/eras/byron/crypto/src/Cardano/Crypto/Random.hs b/eras/byron/crypto/src/Cardano/Crypto/Random.hs deleted file mode 100644 index 22616a1f749..00000000000 --- a/eras/byron/crypto/src/Cardano/Crypto/Random.hs +++ /dev/null @@ -1,78 +0,0 @@ -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneKindSignatures #-} -{-# LANGUAGE TypeApplications #-} - --- | Secure generation of random numbers and 'ByteString's -module Cardano.Crypto.Random ( - SecureRandom (..), - deterministic, - randomNumber, - randomNumberInRange, -) -where - -import Cardano.Prelude -import Crypto.Number.Basic (numBytes) -import Crypto.Number.Serialize (os2ip) -import Crypto.Random ( - ChaChaDRG, - MonadPseudoRandom, - MonadRandom, - drgNewSeed, - getRandomBytes, - seedFromInteger, - withDRG, - ) -import Crypto.Random.Entropy (getEntropy) - --- | You can use 'runSecureRandom' on any 'MonadRandom' computation to --- use the operating system entropy source to satisfy every request for --- randomness. That is, this does not use a fixed entropy pool shared across --- all requests; it gets entropy from the operating system for every request. --- --- This is suitable for key generation but is inappropriate for other uses --- since it can quickly drain the operating system entropy. -type SecureRandom :: Type -> Type -newtype SecureRandom a = SecureRandom - { runSecureRandom :: IO a - } - deriving (Functor, Applicative, Monad) - -instance MonadRandom SecureRandom where - getRandomBytes n = SecureRandom (getEntropy n) - --- | You can use 'deterministic' on any 'MonadRandom' computation to make it use --- a seed (hopefully produced by a Really Secure™ randomness source). The seed --- has to have enough entropy to make this function secure. -deterministic :: ByteString -> MonadPseudoRandom ChaChaDRG a -> a -deterministic seed gen = fst $ withDRG chachaSeed gen - where - chachaSeed = drgNewSeed . seedFromInteger . os2ip $ seed - --- | Generate a random number in range [0, n) --- --- We want to avoid modulo bias, so we use the arc4random_uniform --- implementation (http://stackoverflow.com/a/20051580/615030). Specifically, --- we repeatedly generate a random number in range [0, 2^x) until we hit on --- something outside of [0, 2^x mod n), which means that it'll be in range --- [2^x mod n, 2^x). The amount of numbers in this interval is guaranteed to --- be divisible by n, and thus applying 'mod' to it will be safe. -randomNumber :: forall m. MonadRandom m => Integer -> m Integer -randomNumber n - | n <= 0 = panic "randomNumber: n <= 0" - | otherwise = gen - where - size = max 4 (numBytes n) -- size of integers, in bytes - rangeMod = 2 ^ (size * 8) `rem` n -- 2^x mod n - gen :: m Integer - gen = do - x <- os2ip @ByteString <$> getRandomBytes size - if x < rangeMod then gen else return (x `rem` n) - --- | Generate a random number in range [a, b] -randomNumberInRange :: MonadRandom m => Integer -> Integer -> m Integer -randomNumberInRange a b - | a > b = panic "randomNumberInRange: a > b" - | otherwise = (a +) <$> randomNumber (b - a + 1) diff --git a/eras/byron/crypto/src/Cardano/Crypto/Raw.hs b/eras/byron/crypto/src/Cardano/Crypto/Raw.hs deleted file mode 100644 index 2cfda6607d8..00000000000 --- a/eras/byron/crypto/src/Cardano/Crypto/Raw.hs +++ /dev/null @@ -1,17 +0,0 @@ -{-# LANGUAGE GeneralizedNewtypeDeriving #-} - -module Cardano.Crypto.Raw ( - Raw (..), -) -where - -import Cardano.Ledger.Binary (DecCBOR, EncCBOR, FromCBOR, ToCBOR) -import Control.DeepSeq (NFData) -import Data.ByteString (ByteString) -import Prelude - --- | A wrapper over 'ByteString' for signalling that a bytestring should be --- processed as a sequence of bytes, not as a separate entity. It's used in --- crypto and binary code. -newtype Raw = Raw ByteString - deriving (Eq, Ord, Show, NFData, DecCBOR, EncCBOR, FromCBOR, ToCBOR) diff --git a/eras/byron/crypto/src/Cardano/Crypto/Signing.hs b/eras/byron/crypto/src/Cardano/Crypto/Signing.hs deleted file mode 100644 index 41408870b55..00000000000 --- a/eras/byron/crypto/src/Cardano/Crypto/Signing.hs +++ /dev/null @@ -1,12 +0,0 @@ -module Cardano.Crypto.Signing ( - module X, -) -where - -import Cardano.Crypto.Signing.KeyGen as X -import Cardano.Crypto.Signing.Redeem as X -import Cardano.Crypto.Signing.Safe as X -import Cardano.Crypto.Signing.Signature as X -import Cardano.Crypto.Signing.SigningKey as X -import Cardano.Crypto.Signing.Tag as X -import Cardano.Crypto.Signing.VerificationKey as X diff --git a/eras/byron/crypto/src/Cardano/Crypto/Signing/KeyGen.hs b/eras/byron/crypto/src/Cardano/Crypto/Signing/KeyGen.hs deleted file mode 100644 index 365ef7141ca..00000000000 --- a/eras/byron/crypto/src/Cardano/Crypto/Signing/KeyGen.hs +++ /dev/null @@ -1,33 +0,0 @@ -module Cardano.Crypto.Signing.KeyGen ( - keyGen, - deterministicKeyGen, -) -where - -import Cardano.Crypto.Signing.SigningKey (SigningKey (..)) -import Cardano.Crypto.Signing.VerificationKey (VerificationKey (..)) -import qualified Cardano.Crypto.Wallet as CC -import Cardano.Prelude -import Crypto.Random (MonadRandom, getRandomBytes) -import Data.ByteArray (ScrubbedBytes) -import qualified Data.ByteString as BS - --- TODO: this is just a placeholder for actual (not ready yet) derivation --- of keypair from seed in cardano-crypto API -createKeypairFromSeed :: BS.ByteString -> (CC.XPub, CC.XPrv) -createKeypairFromSeed seed = - let prv = CC.generate seed (mempty :: ScrubbedBytes) in (CC.toXPub prv, prv) - --- | Generate a key pair. It's recommended to run it with 'runSecureRandom' --- from "Cardano.Crypto.Random" because the OpenSSL generator is probably safer --- than the default IO generator. -keyGen :: MonadRandom m => m (VerificationKey, SigningKey) -keyGen = do - seed <- getRandomBytes 32 - let (vk, sk) = createKeypairFromSeed seed - return (VerificationKey vk, SigningKey sk) - --- | Create key pair deterministically from 32 bytes. -deterministicKeyGen :: BS.ByteString -> (VerificationKey, SigningKey) -deterministicKeyGen seed = - bimap VerificationKey SigningKey (createKeypairFromSeed seed) diff --git a/eras/byron/crypto/src/Cardano/Crypto/Signing/Redeem.hs b/eras/byron/crypto/src/Cardano/Crypto/Signing/Redeem.hs deleted file mode 100644 index c80e63916bf..00000000000 --- a/eras/byron/crypto/src/Cardano/Crypto/Signing/Redeem.hs +++ /dev/null @@ -1,10 +0,0 @@ -module Cardano.Crypto.Signing.Redeem ( - module X, -) -where - -import Cardano.Crypto.Signing.Redeem.Compact as X -import Cardano.Crypto.Signing.Redeem.KeyGen as X -import Cardano.Crypto.Signing.Redeem.Signature as X -import Cardano.Crypto.Signing.Redeem.SigningKey as X -import Cardano.Crypto.Signing.Redeem.VerificationKey as X diff --git a/eras/byron/crypto/src/Cardano/Crypto/Signing/Redeem/Compact.hs b/eras/byron/crypto/src/Cardano/Crypto/Signing/Redeem/Compact.hs deleted file mode 100644 index d8523e4a8be..00000000000 --- a/eras/byron/crypto/src/Cardano/Crypto/Signing/Redeem/Compact.hs +++ /dev/null @@ -1,155 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE StandaloneKindSignatures #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE UndecidableInstances #-} - -module Cardano.Crypto.Signing.Redeem.Compact ( - CompactRedeemVerificationKey (..), - fromCompactRedeemVerificationKey, - toCompactRedeemVerificationKey, -) -where - -import Cardano.Crypto.Signing.Redeem.VerificationKey ( - RedeemVerificationKey (..), - fromAvvmVK, - fromVerificationKeyToByteString, - redeemVKB64UrlF, - redeemVKBuild, - ) -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - encodeListLen, - enforceSize, - fromByronCBOR, - toByronCBOR, - ) -import Cardano.Prelude -import Data.Aeson ( - FromJSON (..), - FromJSONKey (..), - ToJSON (..), - ToJSONKey (..), - ToJSONKeyFunction (..), - ) -import qualified Data.Aeson.Encoding.Internal as A -import qualified Data.Aeson.Key as A -import Data.Binary.Get (Get, getWord64le, runGet) -import Data.Binary.Put (Put, putWord64le, runPut) -import qualified Data.ByteString.Lazy as BSL (fromStrict, toStrict) -import Formatting (build, formatToString, sformat) -import NoThunks.Class (InspectHeap (..), NoThunks (..)) -import Text.JSON.Canonical ( - FromObjectKey (..), - JSValue (..), - ToObjectKey (..), - toJSString, - ) - -type CompactRedeemVerificationKey :: Type -data CompactRedeemVerificationKey - = CompactRedeemVerificationKey - {-# UNPACK #-} !Word64 - {-# UNPACK #-} !Word64 - {-# UNPACK #-} !Word64 - {-# UNPACK #-} !Word64 - deriving (Eq, Generic, Show) - deriving (NoThunks) via InspectHeap CompactRedeemVerificationKey - deriving anyclass (NFData) - -instance ToCBOR CompactRedeemVerificationKey where - toCBOR = toByronCBOR - -instance FromCBOR CompactRedeemVerificationKey where - fromCBOR = fromByronCBOR - -instance EncCBOR CompactRedeemVerificationKey where - encCBOR (CompactRedeemVerificationKey a b c d) = - mconcat - [ encodeListLen 4 - , encCBOR @Word64 a - , encCBOR @Word64 b - , encCBOR @Word64 c - , encCBOR @Word64 d - ] - -instance DecCBOR CompactRedeemVerificationKey where - decCBOR = do - enforceSize "CompactRedeemVerificationKey" 4 - CompactRedeemVerificationKey - <$> decCBOR @Word64 - <*> decCBOR @Word64 - <*> decCBOR @Word64 - <*> decCBOR @Word64 - -getCompactRedeemVerificationKey :: Get CompactRedeemVerificationKey -getCompactRedeemVerificationKey = - CompactRedeemVerificationKey - <$> getWord64le - <*> getWord64le - <*> getWord64le - <*> getWord64le - -putCompactRedeemVerificationKey :: CompactRedeemVerificationKey -> Put -putCompactRedeemVerificationKey (CompactRedeemVerificationKey a b c d) = - putWord64le a - >> putWord64le b - >> putWord64le c - >> putWord64le d - -toCompactRedeemVerificationKey :: - RedeemVerificationKey -> - CompactRedeemVerificationKey -toCompactRedeemVerificationKey (RedeemVerificationKey pk) = - runGet getCompactRedeemVerificationKey (BSL.fromStrict bs) - where - bs :: ByteString - bs = fromVerificationKeyToByteString pk - -fromCompactRedeemVerificationKey :: - CompactRedeemVerificationKey -> - RedeemVerificationKey -fromCompactRedeemVerificationKey compactRvk = - redeemVKBuild bs - where - bs :: ByteString - bs = - BSL.toStrict - $ runPut - $ putCompactRedeemVerificationKey compactRvk - -instance Ord CompactRedeemVerificationKey where - compare = compare `on` fromCompactRedeemVerificationKey - -instance ToJSON CompactRedeemVerificationKey where - toJSON = toJSON . fromCompactRedeemVerificationKey - -instance FromJSON CompactRedeemVerificationKey where - parseJSON = fmap toCompactRedeemVerificationKey . parseJSON - -instance Monad m => ToObjectKey m CompactRedeemVerificationKey where - toObjectKey = pure . toJSString . formatToString redeemVKB64UrlF . fromCompactRedeemVerificationKey - -instance MonadError SchemaError m => FromObjectKey m CompactRedeemVerificationKey where - fromObjectKey = - fmap (Just . toCompactRedeemVerificationKey) - . parseJSString (first (sformat build) . fromAvvmVK) - . JSString - -instance ToJSONKey CompactRedeemVerificationKey where - toJSONKey = ToJSONKeyText render (A.key . render) - where - render = A.fromText . sformat redeemVKB64UrlF . fromCompactRedeemVerificationKey - -instance FromJSONKey CompactRedeemVerificationKey where - fromJSONKey = toCompactRedeemVerificationKey <$> fromJSONKey - fromJSONKeyList = map toCompactRedeemVerificationKey <$> fromJSONKeyList diff --git a/eras/byron/crypto/src/Cardano/Crypto/Signing/Redeem/KeyGen.hs b/eras/byron/crypto/src/Cardano/Crypto/Signing/Redeem/KeyGen.hs deleted file mode 100644 index 07201b49fd3..00000000000 --- a/eras/byron/crypto/src/Cardano/Crypto/Signing/Redeem/KeyGen.hs +++ /dev/null @@ -1,32 +0,0 @@ -module Cardano.Crypto.Signing.Redeem.KeyGen ( - redeemKeyGen, - redeemDeterministicKeyGen, -) -where - -import Cardano.Crypto.Signing.Redeem.SigningKey (RedeemSigningKey (..)) -import Cardano.Crypto.Signing.Redeem.VerificationKey (RedeemVerificationKey (..)) -import Cardano.Prelude -import Control.Monad (fail) -import Crypto.Error (maybeCryptoError) -import qualified Crypto.PubKey.Ed25519 as Ed25519 -import Crypto.Random (MonadRandom) -import qualified Data.ByteArray as BA -import qualified Data.ByteString as BS - --- | Generate a key pair. It's recommended to run it with 'runSecureRandom' from --- "Cardano.Crypto.Random" because the OpenSSL generator is probably safer --- than the default IO generator. -redeemKeyGen :: MonadRandom m => m (RedeemVerificationKey, RedeemSigningKey) -redeemKeyGen = do - sk <- Ed25519.generateSecretKey - return (RedeemVerificationKey $ Ed25519.toPublic sk, RedeemSigningKey sk) - --- | Create key pair deterministically from 32 bytes -redeemDeterministicKeyGen :: - BS.ByteString -> Maybe (RedeemVerificationKey, RedeemSigningKey) -redeemDeterministicKeyGen seed = - case maybeCryptoError $ Ed25519.secretKey (BA.convert seed :: BA.Bytes) of - Just r -> Just (RedeemVerificationKey $ Ed25519.toPublic r, RedeemSigningKey r) - Nothing -> - fail "Cardano.Crypto.Signing.Redeem.hs redeemDeterministicKeyGen failed" diff --git a/eras/byron/crypto/src/Cardano/Crypto/Signing/Redeem/Signature.hs b/eras/byron/crypto/src/Cardano/Crypto/Signing/Redeem/Signature.hs deleted file mode 100644 index 08aaa8941ac..00000000000 --- a/eras/byron/crypto/src/Cardano/Crypto/Signing/Redeem/Signature.hs +++ /dev/null @@ -1,113 +0,0 @@ -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE StandaloneKindSignatures #-} -{-# LANGUAGE TemplateHaskell #-} - -module Cardano.Crypto.Signing.Redeem.Signature ( - RedeemSignature (..), - redeemSign, - redeemSignRaw, - verifyRedeemSig, - verifyRedeemSigDecoded, - verifyRedeemSigRaw, -) -where - -import Cardano.Crypto.Orphans () -import Cardano.Crypto.ProtocolMagic (ProtocolMagicId) -import Cardano.Crypto.Raw (Raw (..)) -import Cardano.Crypto.Signing.Redeem.SigningKey (RedeemSigningKey (..)) -import Cardano.Crypto.Signing.Redeem.VerificationKey (RedeemVerificationKey (..)) -import Cardano.Crypto.Signing.Tag (SignTag, signTag, signTagDecoded) -import Cardano.Ledger.Binary ( - Annotated, - DecCBOR, - Decoded (..), - EncCBOR, - FromCBOR (..), - ToCBOR (..), - byronProtVer, - fromByronCBOR, - serialize', - toByronCBOR, - ) -import Cardano.Prelude -import qualified Crypto.PubKey.Ed25519 as Ed25519 -import Data.Aeson.TH (defaultOptions, deriveJSON) -import Data.Coerce (coerce) -import qualified Formatting.Buildable as B (Buildable (..)) - --- | Wrapper around 'Ed25519.Signature' -type RedeemSignature :: Type -> Type -newtype RedeemSignature a - = RedeemSignature Ed25519.Signature - deriving (Eq, Show, Generic, NFData, DecCBOR, EncCBOR) - -instance EncCBOR a => ToCBOR (RedeemSignature a) where - toCBOR = toByronCBOR - -instance DecCBOR a => FromCBOR (RedeemSignature a) where - fromCBOR = fromByronCBOR - --- Note that there is deliberately no Ord instance. The crypto libraries --- encourage using key /hashes/ not keys for things like sets, map etc. - -instance B.Buildable (RedeemSignature a) where - build _ = "" - -deriveJSON defaultOptions ''RedeemSignature - --- | Encode something with 'EncCBOR' and sign it -redeemSign :: - EncCBOR a => - ProtocolMagicId -> - SignTag -> - RedeemSigningKey -> - a -> - RedeemSignature a -redeemSign pm tag k = coerce . redeemSignRaw pm (Just tag) k . serialize' byronProtVer - --- | Alias for constructor -redeemSignRaw :: - ProtocolMagicId -> - Maybe SignTag -> - RedeemSigningKey -> - ByteString -> - RedeemSignature Raw -redeemSignRaw pm mbTag (RedeemSigningKey k) x = - RedeemSignature $ Ed25519.sign k (Ed25519.toPublic k) $ tag <> x - where - tag = maybe mempty (signTag pm) mbTag - --- | Verify a redeem signature -verifyRedeemSig :: - EncCBOR a => - ProtocolMagicId -> - SignTag -> - RedeemVerificationKey -> - a -> - RedeemSignature a -> - Bool -verifyRedeemSig pm tag k x s = - verifyRedeemSigRaw k (signTag pm tag <> serialize' minBound x) (coerce s) - -verifyRedeemSigDecoded :: - Decoded t => - Annotated ProtocolMagicId ByteString -> - SignTag -> - RedeemVerificationKey -> - t -> - RedeemSignature (BaseType t) -> - Bool -verifyRedeemSigDecoded pm tag k x s = - verifyRedeemSigRaw k (signTagDecoded pm tag <> recoverBytes x) (coerce s) - --- | Verify raw 'ByteString' -verifyRedeemSigRaw :: - RedeemVerificationKey -> - ByteString -> - RedeemSignature Raw -> - Bool -verifyRedeemSigRaw (RedeemVerificationKey k) x (RedeemSignature s) = - Ed25519.verify k x s diff --git a/eras/byron/crypto/src/Cardano/Crypto/Signing/Redeem/SigningKey.hs b/eras/byron/crypto/src/Cardano/Crypto/Signing/Redeem/SigningKey.hs deleted file mode 100644 index 55bf19f55ca..00000000000 --- a/eras/byron/crypto/src/Cardano/Crypto/Signing/Redeem/SigningKey.hs +++ /dev/null @@ -1,52 +0,0 @@ -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE StandaloneKindSignatures #-} - -module Cardano.Crypto.Signing.Redeem.SigningKey ( - RedeemSigningKey (..), - redeemToVerification, -) -where - -import Cardano.Crypto.Signing.Redeem.VerificationKey ( - RedeemVerificationKey (..), - redeemVKB64F, - ) -import Cardano.Ledger.Binary ( - DecCBOR, - EncCBOR, - FromCBOR (..), - ToCBOR (..), - fromByronCBOR, - toByronCBOR, - ) -import Cardano.Prelude -import qualified Crypto.PubKey.Ed25519 as Ed25519 -import Formatting (bprint) -import qualified Formatting.Buildable as B -import NoThunks.Class (InspectHeap (..), NoThunks (..)) - --- | Wrapper around 'Ed25519.SecretKey'. -type RedeemSigningKey :: Type -newtype RedeemSigningKey - = RedeemSigningKey Ed25519.SecretKey - deriving (Eq, Show, Generic, NFData, DecCBOR, EncCBOR) - deriving (NoThunks) via InspectHeap RedeemSigningKey - -instance ToCBOR RedeemSigningKey where - toCBOR = toByronCBOR - -instance FromCBOR RedeemSigningKey where - fromCBOR = fromByronCBOR - --- Note that there is deliberately no Ord instance. The crypto libraries --- encourage using key /hashes/ not keys for things like sets, map etc. - -instance B.Buildable RedeemSigningKey where - build = bprint ("redeem_sec_of_vk:" . redeemVKB64F) . redeemToVerification - --- | Verification key derivation function. -redeemToVerification :: RedeemSigningKey -> RedeemVerificationKey -redeemToVerification (RedeemSigningKey k) = RedeemVerificationKey (Ed25519.toPublic k) diff --git a/eras/byron/crypto/src/Cardano/Crypto/Signing/Redeem/VerificationKey.hs b/eras/byron/crypto/src/Cardano/Crypto/Signing/Redeem/VerificationKey.hs deleted file mode 100644 index ec5ea5d20b2..00000000000 --- a/eras/byron/crypto/src/Cardano/Crypto/Signing/Redeem/VerificationKey.hs +++ /dev/null @@ -1,169 +0,0 @@ -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE StandaloneKindSignatures #-} -{-# LANGUAGE TemplateHaskell #-} -{-# LANGUAGE UndecidableInstances #-} - -module Cardano.Crypto.Signing.Redeem.VerificationKey ( - RedeemVerificationKey (..), - redeemVKB64F, - redeemVKB64UrlF, - redeemVKB64ShortF, - fromAvvmVK, - fromVerificationKeyToByteString, - redeemVKBuild, -) -where - -import Cardano.Crypto.Orphans () -import Cardano.Ledger.Binary (DecCBOR, EncCBOR, FromCBOR, ToCBOR) -import Cardano.Prelude -import Crypto.Error (CryptoFailable (..)) -import qualified Crypto.PubKey.Ed25519 as Ed25519 -import Data.Aeson ( - FromJSONKey (..), - FromJSONKeyFunction (..), - ToJSONKey (..), - ToJSONKeyFunction (..), - ) -import qualified Data.Aeson.Encoding.Internal as A (key) -import qualified Data.Aeson.Key as A -import Data.Aeson.TH (defaultOptions, deriveJSON) -import qualified Data.ByteArray as BA -import qualified Data.ByteString as BS -import qualified Data.ByteString.Base64 as B64 -import qualified Data.ByteString.Base64.URL as B64URL -import qualified Data.ByteString.Char8 as Char8 -import qualified Data.Text as T -import qualified Data.Text.Encoding as T -import Formatting ( - Format, - bprint, - build, - fitLeft, - formatToString, - later, - sformat, - stext, - (%.), - ) -import qualified Formatting.Buildable as B -import NoThunks.Class (InspectHeap (..), NoThunks (..)) -import Text.JSON.Canonical ( - FromObjectKey (..), - JSValue (..), - ToObjectKey (..), - toJSString, - ) - --- | Wrapper around 'Ed25519.PublicKey'. -type RedeemVerificationKey :: Type -newtype RedeemVerificationKey - = RedeemVerificationKey Ed25519.PublicKey - deriving (Eq, Show, Generic, NFData, DecCBOR, EncCBOR, FromCBOR, ToCBOR) - deriving (NoThunks) via InspectHeap RedeemVerificationKey - --- Note that normally we would not provide any Ord instances. --- The crypto libraries encourage using key /hashes/ not keys for --- things like sets, map etc. However due to a historical mistake the --- AVVM balances use whole keys, not key hashes. So we compromise here --- and provide Ord instances so we can use RedeemVerificationKey --- as the key type in a Data.Map. - -instance Ord RedeemVerificationKey where - RedeemVerificationKey a `compare` RedeemVerificationKey b = - BA.convert a `compare` (BA.convert b :: ByteString) - -fromVerificationKeyToByteString :: Ed25519.PublicKey -> BS.ByteString -fromVerificationKeyToByteString = BA.convert - --- | Base64url Format for 'RedeemVerificationKey'. -redeemVKB64UrlF :: Format r (RedeemVerificationKey -> r) -redeemVKB64UrlF = later $ \(RedeemVerificationKey vk) -> - B.build . Char8.unpack . B64URL.encode $ fromVerificationKeyToByteString vk - -instance Monad m => ToObjectKey m RedeemVerificationKey where - toObjectKey = pure . toJSString . formatToString redeemVKB64UrlF - -type AvvmVKError :: Type -data AvvmVKError - = ApeAddressFormat Text - | ApeAddressLength Int - deriving (Show) - --- | Creates a verification key from 32 byte bytestring, fails with 'error' otherwise -redeemVKBuild :: ByteString -> RedeemVerificationKey -redeemVKBuild bs - | BS.length bs /= 32 = - panic - $ "consRedeemVK: failed to form vk, wrong bs length: " - <> show (BS.length bs) - <> ", when should be 32" - | otherwise = - case Ed25519.publicKey (BA.convert bs :: BA.Bytes) of - CryptoPassed r -> RedeemVerificationKey r - CryptoFailed e -> - panic - $ mappend - "Cardano.Crypto.Signing.Types.Redeem.hs consRedeemVK failed because " - (T.pack $ show e) - --- | Read the text into a redeeming verification key. The key should be in --- AVVM format which is base64(url). This function must be inverse of --- redeemVKB64UrlF formatter. -fromAvvmVK :: Text -> Either AvvmVKError RedeemVerificationKey -fromAvvmVK addrText = do - let base64rify = T.replace "-" "+" . T.replace "_" "/" - let parsedM = B64.decode . T.encodeUtf8 $ base64rify addrText - addrParsed <- case parsedM of - Left _ -> throwError $ ApeAddressFormat addrText - Right a -> Right a - let len = BS.length addrParsed - (len == 32) `orThrowError` ApeAddressLength len - pure $ redeemVKBuild addrParsed - -instance B.Buildable AvvmVKError where - build = \case - ApeAddressFormat addrText -> - bprint ("Address " . stext . " is not base64(url) format") addrText - ApeAddressLength len -> - bprint - ("Address length is " . build . ", expected 32, can't be redeeming vk") - len - -instance MonadError SchemaError m => FromObjectKey m RedeemVerificationKey where - fromObjectKey = - fmap Just . parseJSString (first (sformat build) . fromAvvmVK) . JSString - -deriveJSON defaultOptions ''RedeemVerificationKey - -instance ToJSONKey RedeemVerificationKey where - toJSONKey = ToJSONKeyText render (A.key . render) - where - render = A.fromText . sformat redeemVKB64UrlF - -instance FromJSONKey RedeemVerificationKey where - fromJSONKey = - FromJSONKeyTextParser $ toAesonError . first (sformat build) . fromAvvmVK - fromJSONKeyList = - FromJSONKeyTextParser - $ toAesonError - . bimap (sformat build) pure - . fromAvvmVK - -instance B.Buildable RedeemVerificationKey where - build = bprint ("redeem_vk:" . redeemVKB64F) - -redeemVKB64F :: Format r (RedeemVerificationKey -> r) -redeemVKB64F = later $ \(RedeemVerificationKey vk) -> - B.build . Char8.unpack . B64.encode $ fromVerificationKeyToByteString vk - -redeemVKB64ShortF :: Format r (RedeemVerificationKey -> r) -redeemVKB64ShortF = fitLeft 8 %. redeemVKB64F diff --git a/eras/byron/crypto/src/Cardano/Crypto/Signing/Safe.hs b/eras/byron/crypto/src/Cardano/Crypto/Signing/Safe.hs deleted file mode 100644 index fc9844a8c0d..00000000000 --- a/eras/byron/crypto/src/Cardano/Crypto/Signing/Safe.hs +++ /dev/null @@ -1,8 +0,0 @@ -module Cardano.Crypto.Signing.Safe ( - module X, -) -where - -import Cardano.Crypto.Signing.Safe.KeyGen as X -import Cardano.Crypto.Signing.Safe.PassPhrase as X -import Cardano.Crypto.Signing.Safe.SafeSigner as X diff --git a/eras/byron/crypto/src/Cardano/Crypto/Signing/Safe/KeyGen.hs b/eras/byron/crypto/src/Cardano/Crypto/Signing/Safe/KeyGen.hs deleted file mode 100644 index 79808e34568..00000000000 --- a/eras/byron/crypto/src/Cardano/Crypto/Signing/Safe/KeyGen.hs +++ /dev/null @@ -1,30 +0,0 @@ -module Cardano.Crypto.Signing.Safe.KeyGen ( - safeDeterministicKeyGen, - safeKeyGen, -) -where - -import Cardano.Crypto.Signing.Safe.PassPhrase (PassPhrase (..)) -import Cardano.Crypto.Signing.SigningKey (SigningKey (..)) -import Cardano.Crypto.Signing.VerificationKey (VerificationKey (..)) -import qualified Cardano.Crypto.Wallet as CC -import Cardano.Prelude -import Crypto.Random (MonadRandom, getRandomBytes) -import qualified Data.ByteString as BS - -safeCreateKeypairFromSeed :: BS.ByteString -> PassPhrase -> (CC.XPub, CC.XPrv) -safeCreateKeypairFromSeed seed (PassPhrase pp) = - let prv = CC.generate seed pp in (CC.toXPub prv, prv) - --- NB. It's recommended to run it with 'runSecureRandom' from --- "Cardano.Crypto.Random" because the OpenSSL generator is probably safer than --- the default IO generator. -safeKeyGen :: MonadRandom m => PassPhrase -> m (VerificationKey, SigningKey) -safeKeyGen pp = do - seed <- getRandomBytes 32 - pure $ safeDeterministicKeyGen seed pp - -safeDeterministicKeyGen :: - BS.ByteString -> PassPhrase -> (VerificationKey, SigningKey) -safeDeterministicKeyGen seed pp = - bimap VerificationKey SigningKey (safeCreateKeypairFromSeed seed pp) diff --git a/eras/byron/crypto/src/Cardano/Crypto/Signing/Safe/PassPhrase.hs b/eras/byron/crypto/src/Cardano/Crypto/Signing/Safe/PassPhrase.hs deleted file mode 100644 index 61a5305f33e..00000000000 --- a/eras/byron/crypto/src/Cardano/Crypto/Signing/Safe/PassPhrase.hs +++ /dev/null @@ -1,79 +0,0 @@ -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE StandaloneKindSignatures #-} -{-# LANGUAGE TypeApplications #-} - -module Cardano.Crypto.Signing.Safe.PassPhrase ( - PassPhrase (..), - emptyPassphrase, - passphraseLength, -) -where - -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - fromByronCBOR, - toByronCBOR, - toCborError, - ) -import Cardano.Prelude hiding (toCborError) -import Data.ByteArray (ByteArray, ByteArrayAccess, ScrubbedBytes) -import qualified Data.ByteArray as ByteArray -import qualified Data.ByteString as BS -import Data.Default (Default (..)) -import Formatting (int, sformat) -import Formatting.Buildable (Buildable (..)) -import qualified Prelude - -type PassPhrase :: Type -newtype PassPhrase - = PassPhrase ScrubbedBytes - deriving (Eq, Ord, Semigroup, Monoid, NFData, ByteArray, ByteArrayAccess) - -passphraseLength :: Int -passphraseLength = 32 - --- | Empty passphrase used in development -emptyPassphrase :: PassPhrase -emptyPassphrase = PassPhrase mempty - -instance Show PassPhrase where - show _ = "" - -instance Buildable PassPhrase where - build _ = "" - -instance Default PassPhrase where - def = emptyPassphrase - -instance ToCBOR PassPhrase where - toCBOR = toByronCBOR - -instance FromCBOR PassPhrase where - fromCBOR = fromByronCBOR - -instance EncCBOR PassPhrase where - encCBOR pp = encCBOR (ByteArray.convert pp :: ByteString) - -instance DecCBOR PassPhrase where - decCBOR = do - bs <- decCBOR @ByteString - let bl = BS.length bs - -- Currently passphrase may be either 32-byte long or empty (for - -- unencrypted keys). - toCborError - $ if bl == 0 || bl == passphraseLength - then Right $ ByteArray.convert bs - else - Left - $ sformat - ("put@PassPhrase: expected length 0 or " . int . ", not " . int) - passphraseLength - bl - -{-instance Monoid PassPhrase where - mempty = PassPhrase mempty - mappend (PassPhrase p1) (PassPhrase p2) = PassPhrase (p1 `mappend` p2)-} diff --git a/eras/byron/crypto/src/Cardano/Crypto/Signing/Safe/SafeSigner.hs b/eras/byron/crypto/src/Cardano/Crypto/Signing/Safe/SafeSigner.hs deleted file mode 100644 index abe008750de..00000000000 --- a/eras/byron/crypto/src/Cardano/Crypto/Signing/Safe/SafeSigner.hs +++ /dev/null @@ -1,21 +0,0 @@ -module Cardano.Crypto.Signing.Safe.SafeSigner ( - SafeSigner (..), - noPassSafeSigner, - safeToVerification, -) -where - -import Cardano.Crypto.Signing.Safe.PassPhrase (PassPhrase, emptyPassphrase) -import Cardano.Crypto.Signing.SigningKey (SigningKey (..), toVerification) -import Cardano.Crypto.Signing.VerificationKey (VerificationKey (..)) -import Cardano.Prelude - --- | SafeSigner datatype to encapsulate sensitive data -data SafeSigner = SafeSigner !SigningKey !PassPhrase - deriving (Show) - -noPassSafeSigner :: SigningKey -> SafeSigner -noPassSafeSigner sk = SafeSigner sk emptyPassphrase - -safeToVerification :: SafeSigner -> VerificationKey -safeToVerification (SafeSigner sk _) = toVerification sk diff --git a/eras/byron/crypto/src/Cardano/Crypto/Signing/Signature.hs b/eras/byron/crypto/src/Cardano/Crypto/Signing/Signature.hs deleted file mode 100644 index bae3b29e73b..00000000000 --- a/eras/byron/crypto/src/Cardano/Crypto/Signing/Signature.hs +++ /dev/null @@ -1,234 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} - -module Cardano.Crypto.Signing.Signature ( - -- * Signature - Signature (..), - encCBORXSignature, - decCBORXSignature, - fullSignatureHexF, - parseFullSignature, - - -- * Signing - sign, - signEncoded, - signRaw, - safeSign, - safeSignRaw, - - -- * Verification - verifySignature, - verifySignatureDecoded, - verifySignatureRaw, -) -where - -import Cardano.Crypto.ProtocolMagic (ProtocolMagicId) -import Cardano.Crypto.Raw (Raw (..)) -import Cardano.Crypto.Signing.Safe ( - PassPhrase (..), - SafeSigner (..), - ) -import Cardano.Crypto.Signing.SigningKey (SigningKey (..)) -import Cardano.Crypto.Signing.Tag (SignTag (..), signTag, signTagDecoded) -import Cardano.Crypto.Signing.VerificationKey (VerificationKey (..)) -import qualified Cardano.Crypto.Wallet as CC -import Cardano.Ledger.Binary ( - Annotated (..), - DecCBOR (..), - Decoded (..), - Decoder, - EncCBOR (..), - Encoding, - FromCBOR (..), - ToCBOR (..), - byronProtVer, - fromByronCBOR, - serialize, - serialize', - toByronCBOR, - toCborError, - ) -import Cardano.Prelude hiding (toCborError) -import Data.Aeson (FromJSON (..), ToJSON (..)) -import Data.ByteArray (ScrubbedBytes) -import qualified Data.ByteString.Base16 as B16 -import qualified Data.ByteString.Lazy as BSL -import Data.Coerce (coerce) -import qualified Data.Text.Encoding as T -import Formatting (Format, bprint, formatToString, later, sformat, shown, stext) -import qualified Formatting.Buildable as B -import NoThunks.Class (InspectHeap (..), NoThunks (..)) -import Text.JSON.Canonical (JSValue (..), toJSString) -import qualified Text.JSON.Canonical as TJC (FromJSON (..), ToJSON (..)) - --------------------------------------------------------------------------------- --- Signature --------------------------------------------------------------------------------- - --- | Wrapper around 'CC.XSignature' -newtype Signature a - = Signature CC.XSignature - deriving stock (Eq, Ord, Show, Generic) - deriving anyclass (NFData) - deriving (NoThunks) via InspectHeap CC.XSignature - -instance B.Buildable (Signature a) where - build _ = "" - -instance FromJSON (Signature w) where - parseJSON v = parseJSON v >>= toAesonError . parseFullSignature - -instance ToJSON (Signature w) where - toJSON = toJSON . sformat fullSignatureHexF - -instance Monad m => TJC.ToJSON m (Signature w) where - toJSON = pure . JSString . toJSString . formatToString fullSignatureHexF - -instance (Typeable x, MonadError SchemaError m) => TJC.FromJSON m (Signature x) where - fromJSON = parseJSString parseFullSignature - --- | Formatter for 'Signature' to show it in hex. -fullSignatureHexF :: Format r (Signature a -> r) -fullSignatureHexF = - later $ \(Signature x) -> base16Builder . CC.unXSignature $ x - -data SignatureParseError - = SignatureParseBase16Error ByteString - | SignatureParseXSignatureError Text - deriving (Eq, Show) - -instance B.Buildable SignatureParseError where - build = \case - SignatureParseBase16Error bs -> - bprint - ("Failed to parse base 16 while parsing Signature.\n Error: " . shown) - bs - SignatureParseXSignatureError err -> - bprint - ( "Failed to construct XSignature while parsing Signature.\n Error: " - . stext - ) - err - --- | Parse 'Signature' from base16 encoded string. -parseFullSignature :: Text -> Either SignatureParseError (Signature a) -parseFullSignature s = do - let bs = T.encodeUtf8 s - b <- first (const (SignatureParseBase16Error bs)) $ B16.decode bs - Signature <$> first (SignatureParseXSignatureError . toS) (CC.xsignature b) - -encCBORXSignature :: CC.XSignature -> Encoding -encCBORXSignature a = encCBOR $ CC.unXSignature a - -decCBORXSignature :: Decoder s CC.XSignature -decCBORXSignature = toCborError . CC.xsignature =<< decCBOR - -instance Typeable a => ToCBOR (Signature a) where - toCBOR = toByronCBOR - -instance Typeable a => FromCBOR (Signature a) where - fromCBOR = fromByronCBOR - -instance Typeable a => EncCBOR (Signature a) where - encCBOR (Signature a) = encCBORXSignature a - encodedSizeExpr _ _ = 66 - -instance Typeable a => DecCBOR (Signature a) where - decCBOR = fmap Signature decCBORXSignature - --------------------------------------------------------------------------------- --- Signing --------------------------------------------------------------------------------- - --- | Encode something with 'EncCBOR' and sign it -sign :: - EncCBOR a => - ProtocolMagicId -> - -- | See docs for 'SignTag' - SignTag -> - SigningKey -> - a -> - Signature a -sign pm tag sk = signEncoded pm tag sk . encCBOR - --- | Like 'sign' but without the 'EncCBOR' constraint -signEncoded :: - ProtocolMagicId -> SignTag -> SigningKey -> Encoding -> Signature a -signEncoded pm tag sk = - coerce . signRaw pm (Just tag) sk . BSL.toStrict . serialize byronProtVer - --- | Sign a 'Raw' bytestring -signRaw :: - ProtocolMagicId -> - -- | See docs for 'SignTag'. Unlike in 'sign', we allow no tag to be provided - -- just in case you need to sign /exactly/ the bytestring you provided. - Maybe SignTag -> - SigningKey -> - ByteString -> - Signature Raw -signRaw pm mTag (SigningKey sk) x = - Signature - (CC.sign (mempty :: ScrubbedBytes) sk (tag <> x)) - where - tag = maybe mempty (signTag pm) mTag - -safeSign :: - EncCBOR a => ProtocolMagicId -> SignTag -> SafeSigner -> a -> Signature a -safeSign pm t ss = coerce . safeSignRaw pm (Just t) ss . serialize' byronProtVer - -safeSignRaw :: - ProtocolMagicId -> - Maybe SignTag -> - SafeSigner -> - ByteString -> - Signature Raw -safeSignRaw pm mbTag (SafeSigner (SigningKey sk) (PassPhrase pp)) x = - Signature (CC.sign pp sk (tag <> x)) - where - tag = maybe mempty (signTag pm) mbTag - --------------------------------------------------------------------------------- --- Verification --------------------------------------------------------------------------------- - --- | Verify a signature -verifySignature :: - (a -> Encoding) -> - ProtocolMagicId -> - SignTag -> - VerificationKey -> - a -> - Signature a -> - Bool -verifySignature toEnc pm tag vk x sig = - verifySignatureRaw - vk - (signTag pm tag <> BSL.toStrict (serialize byronProtVer $ toEnc x)) - (coerce sig) - --- | Verify a signature -verifySignatureDecoded :: - Decoded t => - Annotated ProtocolMagicId ByteString -> - SignTag -> - VerificationKey -> - t -> - Signature (BaseType t) -> - Bool -verifySignatureDecoded pm tag vk x sig = - verifySignatureRaw vk (signTagDecoded pm tag <> recoverBytes x) (coerce sig) - --- | Verify 'Raw' signature -verifySignatureRaw :: - VerificationKey -> - ByteString -> - Signature Raw -> - Bool -verifySignatureRaw (VerificationKey k) x (Signature sig) = CC.verify k x sig diff --git a/eras/byron/crypto/src/Cardano/Crypto/Signing/SigningKey.hs b/eras/byron/crypto/src/Cardano/Crypto/Signing/SigningKey.hs deleted file mode 100644 index 1d922e763b9..00000000000 --- a/eras/byron/crypto/src/Cardano/Crypto/Signing/SigningKey.hs +++ /dev/null @@ -1,84 +0,0 @@ -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE StandaloneKindSignatures #-} -{-# LANGUAGE TypeApplications #-} - -module Cardano.Crypto.Signing.SigningKey ( - SigningKey (..), - toVerification, - encCBORXPrv, - decCBORXPrv, - toCBORXPrv, - fromCBORXPrv, -) -where - -import Cardano.Crypto.Signing.VerificationKey (VerificationKey (..), shortVerificationKeyHexF) -import qualified Cardano.Crypto.Wallet as CC -import Cardano.Ledger.Binary ( - DecCBOR (..), - Decoder, - EncCBOR (..), - Encoding, - FromCBOR (..), - ToCBOR (..), - fromByronCBOR, - toByronCBOR, - toCborError, - ) -import qualified Cardano.Ledger.Binary.Plain as Plain -import Cardano.Prelude hiding (toCborError) -import Formatting (bprint) -import Formatting.Buildable -import qualified GHC.Show -import NoThunks.Class (InspectHeap (..), NoThunks (..)) - --- | Wrapper around 'CC.XPrv'. -type SigningKey :: Type -newtype SigningKey = SigningKey - { unSigningKey :: CC.XPrv - } - deriving newtype (NFData) - deriving (NoThunks) via InspectHeap CC.XPrv - --- Note that there is deliberately no Eq instance. The cardano-crypto library --- does not define one for XPrv. - --- Note that there is deliberately no Ord instance. The crypto libraries --- encourage using key /hashes/ not keys for things like sets, map etc. - --- | Generate a verification key from a signing key. Fast (it just drops some bytes --- off the signing key). -toVerification :: SigningKey -> VerificationKey -toVerification (SigningKey k) = VerificationKey (CC.toXPub k) - -instance Show SigningKey where - show sk = "" - -instance Buildable SigningKey where - build = bprint ("sec:" . shortVerificationKeyHexF) . toVerification - -encCBORXPrv :: CC.XPrv -> Encoding -encCBORXPrv a = encCBOR $ CC.unXPrv a - -decCBORXPrv :: Decoder s CC.XPrv -decCBORXPrv = toCborError . CC.xprv =<< decCBOR @ByteString - -toCBORXPrv :: CC.XPrv -> Plain.Encoding -toCBORXPrv a = toCBOR $ CC.unXPrv a - -fromCBORXPrv :: Plain.Decoder s CC.XPrv -fromCBORXPrv = toCborError . CC.xprv =<< fromCBOR @ByteString - -instance ToCBOR SigningKey where - toCBOR = toByronCBOR - -instance FromCBOR SigningKey where - fromCBOR = fromByronCBOR - -instance EncCBOR SigningKey where - encCBOR (SigningKey a) = encCBORXPrv a - -instance DecCBOR SigningKey where - decCBOR = fmap SigningKey decCBORXPrv diff --git a/eras/byron/crypto/src/Cardano/Crypto/Signing/Tag.hs b/eras/byron/crypto/src/Cardano/Crypto/Signing/Tag.hs deleted file mode 100644 index 8f89d7d14ce..00000000000 --- a/eras/byron/crypto/src/Cardano/Crypto/Signing/Tag.hs +++ /dev/null @@ -1,88 +0,0 @@ -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE StandaloneKindSignatures #-} - -module Cardano.Crypto.Signing.Tag ( - SignTag (..), - signTag, - signTagDecoded, -) -where - -import Cardano.Crypto.ProtocolMagic (ProtocolMagicId (..)) -import Cardano.Crypto.Signing.VerificationKey (VerificationKey (..)) -import qualified Cardano.Crypto.Wallet as CC -import Cardano.Ledger.Binary (Annotated (..), byronProtVer, serialize') -import Cardano.Prelude -import Formatting (bprint, shown) -import Formatting.Buildable (Buildable (..)) - --- | To protect against replay attacks (i.e. when an attacker intercepts a --- signed piece of data and later sends it again), we add a tag to all data --- that we sign. This ensures that even if some bytestring can be deserialized --- into two different types of messages (A and B), the attacker can't take --- message A and send it as message B. --- --- We also automatically add the network tag ('protocolMagic') whenever it --- makes sense, to ensure that things intended for testnet won't work for --- mainnet. -type SignTag :: Type -data SignTag - = -- | Anything (to be used for testing only) - SignForTestingOnly - | -- | Tx: @TxSigData@ - SignTx - | -- | Redeem tx: @TxSigData@ - SignRedeemTx - | -- | Vss certificate: @(VssVerificationKey, EpochNumber)@ - SignVssCert - | -- | Update proposal: @UpdateProposalToSign@ - SignUSProposal - | -- | Commitment: @(EpochNumber, Commitment)@ - SignCommitment - | -- | US proposal vote: @(UpId, Bool)@ - SignUSVote - | -- | Block header: @ToSign@ - -- - -- This constructor takes the 'VerificationKey' of the delegation - -- certificate issuer, which is prepended to the signature as part of the - -- sign tag - SignBlock VerificationKey - | -- | Certificate: @Certificate@ - SignCertificate - deriving (Eq, Ord, Show, Generic) - --- TODO: it would be nice if we couldn't use 'SignTag' with wrong --- types. Maybe something with GADTs and data families? - -instance Buildable SignTag where - build = bprint shown - --- | Get magic bytes corresponding to a 'SignTag', taking `ProtocolMagic` bytes --- from the annotation -signTagDecoded :: Annotated ProtocolMagicId ByteString -> SignTag -> ByteString -signTagDecoded = signTagRaw . annotation - --- | Get magic bytes corresponding to a 'SignTag'. Guaranteed to be different --- (and begin with a different byte) for different tags. -signTag :: ProtocolMagicId -> SignTag -> ByteString -signTag = signTagRaw . serialize' byronProtVer . unProtocolMagicId - -signTagRaw :: ByteString -> SignTag -> ByteString -signTagRaw network = \case - SignForTestingOnly -> "\x00" - SignTx -> "\x01" <> network - SignRedeemTx -> "\x02" <> network - SignVssCert -> "\x03" <> network - SignUSProposal -> "\x04" <> network - SignCommitment -> "\x05" <> network - SignUSVote -> "\x06" <> network - -- "\x07" was used for SignMainBlock, but was never used in mainnet - -- "\x08" was used for SignMainBlockLight, but was never used in mainnet - - -- This tag includes the prefix that was previously added in @proxySign@, - -- allowing us to unify the two signing functions - SignBlock (VerificationKey issuerVK) -> - "01" <> CC.unXPub issuerVK <> "\x09" <> network - SignCertificate -> "\x0a" <> network diff --git a/eras/byron/crypto/src/Cardano/Crypto/Signing/VerificationKey.hs b/eras/byron/crypto/src/Cardano/Crypto/Signing/VerificationKey.hs deleted file mode 100644 index 67a0e20107d..00000000000 --- a/eras/byron/crypto/src/Cardano/Crypto/Signing/VerificationKey.hs +++ /dev/null @@ -1,141 +0,0 @@ -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE StandaloneKindSignatures #-} -{-# LANGUAGE UndecidableInstances #-} - -module Cardano.Crypto.Signing.VerificationKey ( - VerificationKey (..), - formatFullVerificationKey, - fullVerificationKeyF, - fullVerificationKeyHexF, - shortVerificationKeyHexF, - parseFullVerificationKey, -) -where - -import qualified Cardano.Crypto.Wallet as CC -import Cardano.Ledger.Binary ( - DecCBOR (..), - Decoder, - EncCBOR (..), - Encoding, - FromCBOR (..), - ToCBOR (..), - decodeBytesCanonical, - fromByronCBOR, - toByronCBOR, - toCborError, - ) -import Cardano.Prelude hiding (toCborError) -import Data.Aeson (FromJSON (..), ToJSON (..)) -import qualified Data.ByteString.Base64 as B64 -import qualified Data.ByteString.Char8 as BS -import qualified Data.Text as Text -import qualified Data.Text.Encoding as Text -import Data.Text.Lazy.Builder (Builder) -import qualified Data.Text.Lazy.Builder as Builder -import Formatting ( - Format, - bprint, - fitLeft, - formatToString, - later, - sformat, - stext, - (%.), - ) -import Formatting.Buildable (Buildable (..)) -import NoThunks.Class (InspectHeap (..), NoThunks (..)) -import Text.JSON.Canonical (JSValue (..), toJSString) -import qualified Text.JSON.Canonical as TJC (FromJSON (..), ToJSON (..)) - --- | Wrapper around 'CC.XPub'. -type VerificationKey :: Type -newtype VerificationKey = VerificationKey - { unVerificationKey :: CC.XPub - } - deriving stock (Eq, Ord, Show, Generic) - deriving newtype (NFData) - deriving (NoThunks) via InspectHeap CC.XPub - -instance ToJSON VerificationKey where - toJSON = toJSON . sformat fullVerificationKeyF - -instance FromJSON VerificationKey where - parseJSON v = parseJSON v >>= toAesonError . parseFullVerificationKey - -instance Monad m => TJC.ToJSON m VerificationKey where - toJSON = pure . JSString . toJSString . formatToString fullVerificationKeyF - -instance MonadError SchemaError m => TJC.FromJSON m VerificationKey where - fromJSON = parseJSString parseFullVerificationKey - -instance ToCBOR VerificationKey where - toCBOR = toByronCBOR - -instance FromCBOR VerificationKey where - fromCBOR = fromByronCBOR - -instance EncCBOR VerificationKey where - encCBOR (VerificationKey a) = encCBORXPub a - encodedSizeExpr _ _ = 66 - -instance DecCBOR VerificationKey where - decCBOR = fmap VerificationKey decCBORXPub - -encCBORXPub :: CC.XPub -> Encoding -encCBORXPub a = encCBOR $ CC.unXPub a - --- | We enforce canonical CBOR encodings for `VerificationKey`s, because we serialize --- them before hashing to get `KeyHash`es. -decCBORXPub :: Decoder s CC.XPub -decCBORXPub = toCborError . CC.xpub =<< decodeBytesCanonical - -instance Buildable VerificationKey where - build = bprint ("pub:" . shortVerificationKeyHexF) - --- | 'Builder' for 'VerificationKey' to show it in base64 encoded form. -formatFullVerificationKey :: VerificationKey -> Builder -formatFullVerificationKey (VerificationKey vk) = - Builder.fromString . BS.unpack . B64.encode . CC.unXPub $ vk - --- | Formatter for 'VerificationKey' to show it in base64. -fullVerificationKeyF :: Format r (VerificationKey -> r) -fullVerificationKeyF = later formatFullVerificationKey - --- | Formatter for 'VerificationKey' to show it in hex. -fullVerificationKeyHexF :: Format r (VerificationKey -> r) -fullVerificationKeyHexF = later $ \(VerificationKey x) -> base16Builder . CC.unXPub $ x - --- | Formatter for 'VerificationKey' to show it in hex, but only first 8 chars. -shortVerificationKeyHexF :: Format r (VerificationKey -> r) -shortVerificationKeyHexF = fitLeft 8 %. fullVerificationKeyHexF - -type VerificationKeyParseError :: Type -data VerificationKeyParseError - = VerificationKeyParseBase64Error Text - | VerificationKeyParseXPubError Text - deriving (Eq, Show) - -instance Buildable VerificationKeyParseError where - build = \case - VerificationKeyParseBase64Error err -> - bprint - ("Failed to decode base 64 while parsing VerificationKey.\n Error: " . stext) - err - VerificationKeyParseXPubError err -> - bprint - ("Failed to construct XPub while parsing VerificationKey.\n Error: " . stext) - err - --- | Parse 'VerificationKey' from base64 encoded string -parseFullVerificationKey :: Text -> Either VerificationKeyParseError VerificationKey -parseFullVerificationKey s = do - b <- first (VerificationKeyParseBase64Error . Text.pack) . B64.decode $ Text.encodeUtf8 s - VerificationKey <$> first (VerificationKeyParseXPubError . Text.pack) (CC.xpub b) diff --git a/eras/byron/crypto/test/.ghcid b/eras/byron/crypto/test/.ghcid deleted file mode 100644 index dd37acd051b..00000000000 --- a/eras/byron/crypto/test/.ghcid +++ /dev/null @@ -1 +0,0 @@ ---command="cabal repl --repl-options='-isrc -fwarn-unused-binds -fwarn-unused-imports -fno-code -fobject-code -g2 -fno-break-on-exception -fno-break-on-error -ferror-spans -j -Wno-unused-packages'" --clear --no-height-limit --reverse-errors --reload=../../../../ --outputfile=/tmp/cardano-crypto-test-ghcid.txt \ No newline at end of file diff --git a/eras/byron/crypto/test/CHANGELOG.md b/eras/byron/crypto/test/CHANGELOG.md deleted file mode 100644 index ac91e0f098b..00000000000 --- a/eras/byron/crypto/test/CHANGELOG.md +++ /dev/null @@ -1,29 +0,0 @@ -# Revision history for `cardano-crypto-test` - -## 1.5.0.3 - -* - -## 1.5.0.2 - -* - -## 1.5.0.1 - -* - -## 1.5.0.0 - -* - -## 1.4.2 - -* - -## 1.4.1 - -* - -## 1.3.0 - -* diff --git a/eras/byron/crypto/test/GetDataFileName.hs b/eras/byron/crypto/test/GetDataFileName.hs deleted file mode 100644 index 7383592580b..00000000000 --- a/eras/byron/crypto/test/GetDataFileName.hs +++ /dev/null @@ -1,37 +0,0 @@ -{-# LANGUAGE CPP #-} - -module GetDataFileName ( - withTestFileProperty, - (<:<), -) -where - -import Control.Monad.IO.Class -import Hedgehog.Internal.Property -import Prelude - -#ifdef CARDANO_CRYPTO_TEST -import Paths_cardano_crypto_test (getDataFileName) - -addPrefix :: FilePath -> FilePath -addPrefix = id -#else -import Paths_cardano_crypto_wrapper (getDataFileName) -import System.FilePath - -addPrefix :: FilePath -> FilePath -addPrefix fp = "test" fp -#endif - --- | This contraption is necessary because test modules in the folder are used --- in two different packages, but the file paths for test files are relative to --- the package itself, which has to accounted for. -withTestFileProperty :: FilePath -> (FilePath -> Property) -> Property -withTestFileProperty fp mkProperty = Property config $ do - actualFilePath <- liftIO $ getDataFileName $ addPrefix fp - propertyTest $ mkProperty actualFilePath - where - config = propertyConfig $ mkProperty "" - -(<:<) :: (FilePath -> Property) -> FilePath -> Property -(<:<) = flip withTestFileProperty diff --git a/eras/byron/crypto/test/Setup.hs b/eras/byron/crypto/test/Setup.hs deleted file mode 100644 index e8ef27dbba9..00000000000 --- a/eras/byron/crypto/test/Setup.hs +++ /dev/null @@ -1,3 +0,0 @@ -import Distribution.Simple - -main = defaultMain diff --git a/eras/byron/crypto/test/Test/Cardano/Crypto/CBOR.hs b/eras/byron/crypto/test/Test/Cardano/Crypto/CBOR.hs deleted file mode 100644 index d45cfa18ae3..00000000000 --- a/eras/byron/crypto/test/Test/Cardano/Crypto/CBOR.hs +++ /dev/null @@ -1,318 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TemplateHaskell #-} -{-# LANGUAGE TypeApplications #-} -{-# OPTIONS_GHC -Wno-incomplete-uni-patterns #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Crypto.CBOR ( - constantByteString, - getBytes, - tests, -) -where - -import Cardano.Crypto ( - AbstractHash, - PassPhrase, - ProtocolMagicId (..), - RedeemSignature, - SignTag (SignForTestingOnly), - Signature, - SigningKey (..), - VerificationKey (..), - redeemDeterministicKeyGen, - redeemSign, - serializeCborHash, - sign, - ) -import Cardano.Crypto.Wallet (xprv, xpub) -import Cardano.Ledger.Binary (Dropper, EncCBOR, dropBytes, dropList, enforceSize) -import Cardano.Prelude -import Crypto.Hash (Blake2b_224, Blake2b_256, Blake2b_384, Blake2b_512, SHA1) -import qualified Data.ByteArray as ByteArray -import qualified Data.ByteString as BS -import GetDataFileName ((<:<)) -import Hedgehog (Gen, Property) -import qualified Hedgehog as H -import Test.Cardano.Crypto.Gen -import Test.Cardano.Ledger.Binary.Vintage.Helpers (SizeTestConfig (..), scfg, sizeTest) -import Test.Cardano.Ledger.Binary.Vintage.Helpers.GoldenRoundTrip ( - deprecatedGoldenDecode, - goldenTestCBOR, - roundTripsCBORBuildable, - roundTripsCBORShow, - ) -import Test.Cardano.Prelude - --------------------------------------------------------------------------------- --- ProtocolMagic --------------------------------------------------------------------------------- - -roundTripProtocolMagicAeson :: Property -roundTripProtocolMagicAeson = eachOf 1000 genProtocolMagic roundTripsAesonShow - --------------------------------------------------------------------------------- --- RequiresNetworkMagic --------------------------------------------------------------------------------- - -roundTripRequiresNetworkMagicCBOR :: Property -roundTripRequiresNetworkMagicCBOR = - eachOf 100 genRequiresNetworkMagic roundTripsCBORShow - --------------------------------------------------------------------------------- --- VerificationKey --------------------------------------------------------------------------------- - -goldenVerificationKey :: Property -goldenVerificationKey = goldenTestCBOR vkey <:< "golden/VerificationKey" - where - Right vkey = VerificationKey <$> xpub (getBytes 0 64) - -roundTripVerificationKeyCBOR :: Property -roundTripVerificationKeyCBOR = eachOf 1000 genVerificationKey roundTripsCBORBuildable - -roundTripVerificationKeyAeson :: Property -roundTripVerificationKeyAeson = eachOf 1000 genVerificationKey roundTripsAesonBuildable - --------------------------------------------------------------------------------- --- VerificationKey --------------------------------------------------------------------------------- - -roundTripCompactRedeemVerificationKeyCBOR :: Property -roundTripCompactRedeemVerificationKeyCBOR = eachOf 1000 genCompactRedeemVerificationKey roundTripsCBORShow - --------------------------------------------------------------------------------- --- SigningKey --------------------------------------------------------------------------------- - -goldenSigningKey :: Property -goldenSigningKey = goldenTestCBOR skey <:< "golden/SigningKey" - where - Right skey = SigningKey <$> xprv (getBytes 10 128) - -roundTripSigningKeyCBOR :: Property -roundTripSigningKeyCBOR = eachOf 1000 genSigningKey roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- Signature --------------------------------------------------------------------------------- - -goldenSignature :: Property -goldenSignature = goldenTestCBOR sig <:< "golden/Signature" - where - Right skey = SigningKey <$> xprv (getBytes 10 128) - sig = sign (ProtocolMagicId 0) SignForTestingOnly skey () - -genUnitSignature :: Gen (Signature ()) -genUnitSignature = do - pm <- genProtocolMagicId - genSignature pm (pure ()) - -roundTripSignatureCBOR :: Property -roundTripSignatureCBOR = eachOf 1000 genUnitSignature roundTripsCBORBuildable - -roundTripSignatureAeson :: Property -roundTripSignatureAeson = eachOf 1000 genUnitSignature roundTripsAesonBuildable - --------------------------------------------------------------------------------- --- RedeemVerificationKey --------------------------------------------------------------------------------- - -goldenRedeemVerificationKey :: Property -goldenRedeemVerificationKey = goldenTestCBOR rvk <:< "golden/RedeemVerificationKey" - where - Just rvk = fst <$> redeemDeterministicKeyGen (getBytes 0 32) - -roundTripRedeemVerificationKeyCBOR :: Property -roundTripRedeemVerificationKeyCBOR = - eachOf 1000 genRedeemVerificationKey roundTripsCBORBuildable - -roundTripRedeemVerificationKeyAeson :: Property -roundTripRedeemVerificationKeyAeson = - eachOf 1000 genRedeemVerificationKey roundTripsAesonBuildable - --------------------------------------------------------------------------------- --- RedeemSigningKey --------------------------------------------------------------------------------- - -goldenRedeemSigningKey :: Property -goldenRedeemSigningKey = goldenTestCBOR rsk <:< "golden/RedeemSigningKey" - where - Just rsk = snd <$> redeemDeterministicKeyGen (getBytes 0 32) - -roundTripRedeemSigningKeyCBOR :: Property -roundTripRedeemSigningKeyCBOR = - eachOf 1000 genRedeemSigningKey roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- RedeemSignature --------------------------------------------------------------------------------- - -goldenRedeemSignature :: Property -goldenRedeemSignature = goldenTestCBOR rsig <:< "golden/RedeemSignature" - where - Just rsk = snd <$> redeemDeterministicKeyGen (getBytes 0 32) - rsig = redeemSign (ProtocolMagicId 0) SignForTestingOnly rsk () - -genUnitRedeemSignature :: Gen (RedeemSignature ()) -genUnitRedeemSignature = do - pm <- genProtocolMagicId - genRedeemSignature pm (pure ()) - -roundTripRedeemSignatureCBOR :: Property -roundTripRedeemSignatureCBOR = - eachOf 1000 genUnitRedeemSignature roundTripsCBORBuildable - -roundTripRedeemSignatureAeson :: Property -roundTripRedeemSignatureAeson = - eachOf 1000 genUnitRedeemSignature roundTripsAesonBuildable - --------------------------------------------------------------------------------- --- VssPublicKey --------------------------------------------------------------------------------- - -goldenDeprecatedVssPublicKey :: Property -goldenDeprecatedVssPublicKey = - deprecatedGoldenDecode "VssPublicKey" dropBytes <:< "golden/VssPublicKey" - --------------------------------------------------------------------------------- --- DecShare --------------------------------------------------------------------------------- - -goldenDeprecatedDecShare :: Property -goldenDeprecatedDecShare = - deprecatedGoldenDecode "DecShare" dropBytes <:< "golden/DecShare" - --------------------------------------------------------------------------------- --- EncShare --------------------------------------------------------------------------------- - -goldenDeprecatedEncShare :: Property -goldenDeprecatedEncShare = - deprecatedGoldenDecode "EncShare" dropBytes <:< "golden/EncShare" - --------------------------------------------------------------------------------- --- Secret --------------------------------------------------------------------------------- - -goldenDeprecatedSecret :: Property -goldenDeprecatedSecret = - deprecatedGoldenDecode "Secret" dropBytes <:< "golden/Secret" - --------------------------------------------------------------------------------- --- SecretProof --------------------------------------------------------------------------------- - -goldenDeprecatedSecretProof :: Property -goldenDeprecatedSecretProof = - deprecatedGoldenDecode - "SecretProof" - dropSecretProof - <:< "golden/SecretProof" - where - dropSecretProof :: Dropper s - dropSecretProof = do - enforceSize "SecretProof" 4 - replicateM_ 3 dropBytes - dropList dropBytes - --------------------------------------------------------------------------------- --- AbstractHash --------------------------------------------------------------------------------- - -goldenAbstractHash :: Property -goldenAbstractHash = goldenTestCBOR (serializeCborHash ()) <:< "golden/AbstractHash" - -genUnitAbstractHash :: Gen (AbstractHash Blake2b_256 ()) -genUnitAbstractHash = genAbstractHash $ pure () - -roundTripAbstractHashCBOR :: Property -roundTripAbstractHashCBOR = - eachOf 1000 genUnitAbstractHash roundTripsCBORBuildable - -roundTripAbstractHashAeson :: Property -roundTripAbstractHashAeson = - eachOf 1000 genUnitAbstractHash roundTripsAesonBuildable - --------------------------------------------------------------------------------- --- PassPhrase --------------------------------------------------------------------------------- - -goldenPassPhrase :: Property -goldenPassPhrase = goldenTestCBOR passphrase <:< "golden/PassPhrase" - where - -- PassPhrase has to be 32 bytes in length - passphrase = ByteArray.pack (BS.unpack $ getBytes 3 32) :: PassPhrase - -roundTripPassPhraseCBOR :: Property -roundTripPassPhraseCBOR = eachOf 1000 genPassPhrase roundTripsCBORBuildable - --------------------------------------------------------------------------------- - -getBytes :: Int -> Int -> ByteString -getBytes offset len = BS.take len $ BS.drop offset constantByteString - --- | Changing existing values in this string will break existing golden --- tests, but it us OK to append more data to the end. -constantByteString :: ByteString -constantByteString = - "Kmyw4lDSE5S4fSH6etNouiXezCyEjKc3tG4ja0kFjO8qzai26ZMPUEJfEy15ox5kJ0uKD\ - \bi7i6dLXkuesVZ9JfHgjrctsLFt2NvovXnchsOvX05Y6LohlTNt5mkPFhUoXu1EZSJTIy\ - \3fTU53b412r4AEusD7tcdRgH47yTr5hMO63bJnYBbmNperLHfiT1lP0MLQLh1J1DfoYBs\ - \auoJOzvtAgvjHo6UFttnK6vZ3Cknpuob6uMS2MkJKmuoQsqsAYcRDWbJ2Rgw4bm2ndTM4\ - \zFfuRDKvdrL6sDkuPNPYqxMWlqnXjSbU0eLtceZuKgXLHR8cdvsEvywt4JaZUQhnbq3Vl\ - \7nZqcXdoi4XGTCgSGcGp8N0SDVhvkVh0QF1RVpWPnOMyYISJvuaHfo1zXMdq9tEdtJfID" - --------------------------------------------------------------------------------- - -sizeEstimates :: H.Group -sizeEstimates = - let testPrecise :: forall a. (Show a, EncCBOR a) => Gen a -> Property - testPrecise g = sizeTest $ scfg {gen = g, precise = True} - in H.Group - "Encoded size bounds for crypto types." - [ ("VerificationKey", testPrecise genVerificationKey) - , - ( "AbstractHash Blake2b_224 VerificationKey" - , testPrecise @(AbstractHash Blake2b_224 VerificationKey) - $ genAbstractHash genVerificationKey - ) - , - ( "AbstractHash Blake2b_256 VerificationKey" - , testPrecise @(AbstractHash Blake2b_256 VerificationKey) - $ genAbstractHash genVerificationKey - ) - , - ( "AbstractHash Blake2b_384 VerificationKey" - , testPrecise @(AbstractHash Blake2b_384 VerificationKey) - $ genAbstractHash genVerificationKey - ) - , - ( "AbstractHash Blake2b_512 VerificationKey" - , testPrecise @(AbstractHash Blake2b_512 VerificationKey) - $ genAbstractHash genVerificationKey - ) - , - ( "AbstractHash SHA1 VerificationKey" - , testPrecise @(AbstractHash SHA1 VerificationKey) - $ genAbstractHash genVerificationKey - ) - , ("RedeemVerificationKey", testPrecise genRedeemVerificationKey) - , ("RedeemSigningKey", testPrecise genRedeemSigningKey) - , - ( "RedeemSignature VerificationKey" - , testPrecise (genRedeemSignature (ProtocolMagicId 0) genVerificationKey) - ) - ] - --------------------------------------------------------------------------------- - -tests :: IO Bool -tests = - and - <$> sequence - [ H.checkSequential $$discoverGolden - , H.checkParallel $$discoverRoundTrip - , H.checkParallel sizeEstimates - ] diff --git a/eras/byron/crypto/test/Test/Cardano/Crypto/Dummy.hs b/eras/byron/crypto/test/Test/Cardano/Crypto/Dummy.hs deleted file mode 100644 index 9786ebbb6af..00000000000 --- a/eras/byron/crypto/test/Test/Cardano/Crypto/Dummy.hs +++ /dev/null @@ -1,30 +0,0 @@ --- | Dummy values used in tests (replacing `configuration.yaml`) -module Test.Cardano.Crypto.Dummy ( - annotatedProtocolMagicId, - aProtocolMagic, - protocolMagic, - protocolMagicId, -) -where - -import Cardano.Crypto ( - AProtocolMagic (..), - ProtocolMagic, - ProtocolMagicId (..), - RequiresNetworkMagic (..), - ) -import Cardano.Ledger.Binary (Annotated (..), byronProtVer, serialize') -import Cardano.Prelude - -aProtocolMagic :: AProtocolMagic ByteString -aProtocolMagic = AProtocolMagic annotatedProtocolMagicId RequiresMagic - -protocolMagic :: ProtocolMagic -protocolMagic = AProtocolMagic (Annotated protocolMagicId ()) RequiresMagic - -annotatedProtocolMagicId :: Annotated ProtocolMagicId ByteString -annotatedProtocolMagicId = - Annotated protocolMagicId (serialize' byronProtVer protocolMagicId) - -protocolMagicId :: ProtocolMagicId -protocolMagicId = ProtocolMagicId 55550001 diff --git a/eras/byron/crypto/test/Test/Cardano/Crypto/Example.hs b/eras/byron/crypto/test/Test/Cardano/Crypto/Example.hs deleted file mode 100644 index 6622e01fe1d..00000000000 --- a/eras/byron/crypto/test/Test/Cardano/Crypto/Example.hs +++ /dev/null @@ -1,90 +0,0 @@ -{-# OPTIONS_GHC -Wno-incomplete-uni-patterns #-} - -module Test.Cardano.Crypto.Example ( - exampleProtocolMagic0, - exampleProtocolMagic1, - exampleProtocolMagic2, - exampleProtocolMagic3, - exampleProtocolMagic4, - exampleProtocolMagicId0, - exampleVerificationKey, - exampleVerificationKeys, - exampleRedeemVerificationKey, - exampleSigningKey, - exampleSigningKeys, - exampleSafeSigner, - staticSafeSigners, -) -where - -import Cardano.Crypto ( - AProtocolMagic (..), - ProtocolMagic, - ProtocolMagicId (..), - RedeemVerificationKey, - RequiresNetworkMagic (..), - SafeSigner, - SigningKey (..), - VerificationKey (..), - noPassSafeSigner, - redeemDeterministicKeyGen, - ) -import qualified Cardano.Crypto.Wallet as CC -import Cardano.Ledger.Binary (Annotated (..)) -import Cardano.Prelude -import Data.List ((!!)) -import Data.Maybe (fromJust) -import Test.Cardano.Crypto.CBOR (getBytes) - -exampleProtocolMagicId0 :: ProtocolMagicId -exampleProtocolMagicId0 = ProtocolMagicId 31337 - -exampleProtocolMagic0 :: ProtocolMagic -exampleProtocolMagic0 = - AProtocolMagic (Annotated exampleProtocolMagicId0 ()) RequiresMagic - -exampleProtocolMagic1 :: ProtocolMagic -exampleProtocolMagic1 = - AProtocolMagic (Annotated (ProtocolMagicId 2147000001) ()) RequiresMagic - -exampleProtocolMagic2 :: ProtocolMagic -exampleProtocolMagic2 = - AProtocolMagic (Annotated (ProtocolMagicId 58952) ()) RequiresMagic - -exampleProtocolMagic3 :: ProtocolMagic -exampleProtocolMagic3 = - AProtocolMagic (Annotated (ProtocolMagicId 31337) ()) RequiresMagic - -exampleProtocolMagic4 :: ProtocolMagic -exampleProtocolMagic4 = - AProtocolMagic (Annotated (ProtocolMagicId 500) ()) RequiresNoMagic - -exampleVerificationKey :: VerificationKey -exampleVerificationKey = vk where [vk] = exampleVerificationKeys 16 1 -- 16 could be any number, as we take the first key - -exampleVerificationKeys :: Int -> Int -> [VerificationKey] -exampleVerificationKeys offset count = map (toKey . (* offset)) [0 .. count - 1] - where - toKey start = - let Right vk = VerificationKey <$> CC.xpub (getBytes start 64) in vk - -exampleRedeemVerificationKey :: RedeemVerificationKey -exampleRedeemVerificationKey = - fromJust (fst <$> redeemDeterministicKeyGen (getBytes 0 32)) - --- In order to get the key starting at byte 10, we generate two with offsets of 10 --- between them and take the second. -exampleSigningKey :: SigningKey -exampleSigningKey = exampleSigningKeys 10 2 !! 1 - -exampleSigningKeys :: Int -> Int -> [SigningKey] -exampleSigningKeys offset count = map (toKey . (* offset)) [0 .. count - 1] - where - toKey start = - let Right sk = SigningKey <$> CC.xprv (getBytes start 128) in sk - -exampleSafeSigner :: Int -> SafeSigner -exampleSafeSigner offset = staticSafeSigners !! offset - -staticSafeSigners :: [SafeSigner] -staticSafeSigners = map noPassSafeSigner (exampleSigningKeys 1 6) diff --git a/eras/byron/crypto/test/Test/Cardano/Crypto/Gen.hs b/eras/byron/crypto/test/Test/Cardano/Crypto/Gen.hs deleted file mode 100644 index fca781968f8..00000000000 --- a/eras/byron/crypto/test/Test/Cardano/Crypto/Gen.hs +++ /dev/null @@ -1,212 +0,0 @@ -module Test.Cardano.Crypto.Gen ( - -- * Protocol Magic Generator - genProtocolMagic, - genProtocolMagicId, - genRequiresNetworkMagic, - - -- * Sign Tag Generator - genSignTag, - - -- * Key Generators - genKeypair, - genVerificationKey, - genSigningKey, - - -- * Redeem Key Generators - genRedeemKeypair, - genRedeemVerificationKey, - genCompactRedeemVerificationKey, - genRedeemSigningKey, - - -- * Signature Generators - genSignature, - genSignatureEncoded, - genRedeemSignature, - - -- * Hash Generators - genAbstractHash, - - -- * SafeSigner Generators - genSafeSigner, - - -- * PassPhrase Generators - genPassPhrase, - - -- * Helper Generators - genHashRaw, - genTextHash, - feedPM, -) -where - -import Cardano.Crypto (PassPhrase) -import Cardano.Crypto.Hashing ( - AbstractHash, - Hash, - HashAlgorithm, - abstractHash, - serializeCborHash, - ) -import Cardano.Crypto.ProtocolMagic ( - AProtocolMagic (..), - ProtocolMagic, - ProtocolMagicId (..), - RequiresNetworkMagic (..), - ) -import Cardano.Crypto.Raw (Raw (..)) -import Cardano.Crypto.Signing ( - SafeSigner (..), - SignTag (..), - Signature, - SigningKey, - VerificationKey, - deterministicKeyGen, - emptyPassphrase, - sign, - signRaw, - ) -import Cardano.Crypto.Signing.Redeem ( - CompactRedeemVerificationKey, - RedeemSignature, - RedeemSigningKey, - RedeemVerificationKey, - redeemDeterministicKeyGen, - redeemSign, - toCompactRedeemVerificationKey, - ) -import Cardano.Ledger.Binary (Annotated (..), EncCBOR) -import Cardano.Prelude -import qualified Data.ByteArray as ByteArray -import Data.Coerce (coerce) -import Hedgehog -import qualified Hedgehog.Gen as Gen -import qualified Hedgehog.Range as Range -import Test.Cardano.Crypto.Orphans () -import Test.Cardano.Prelude - --------------------------------------------------------------------------------- --- Protocol Magic Generator --------------------------------------------------------------------------------- - -genProtocolMagic :: Gen ProtocolMagic -genProtocolMagic = - AProtocolMagic - <$> (Annotated <$> genProtocolMagicId <*> pure ()) - <*> genRequiresNetworkMagic - --- | Whilst 'ProtocolMagicId' is represented as a 'Word32' in cardano-ledger, --- in @cardano-sl@ it was an 'Int32'. In order to tolerate this, and since we --- don't care about testing compatibility with negative values, we only --- generate values between @0@ and @(maxBound :: Int32) - 1@, inclusive. -genProtocolMagicId :: Gen ProtocolMagicId -genProtocolMagicId = - ProtocolMagicId - <$> Gen.word32 (Range.constant 0 $ fromIntegral (maxBound :: Int32) - 1) - -genRequiresNetworkMagic :: Gen RequiresNetworkMagic -genRequiresNetworkMagic = Gen.element [RequiresNoMagic, RequiresMagic] - --------------------------------------------------------------------------------- --- Sign Tag Generator --------------------------------------------------------------------------------- - -genSignTag :: Gen SignTag -genSignTag = - Gen.choice - [ pure SignForTestingOnly - , pure SignTx - , pure SignRedeemTx - , pure SignVssCert - , pure SignUSProposal - , pure SignCommitment - , pure SignUSVote - , SignBlock <$> genVerificationKey - , pure SignCertificate - ] - --------------------------------------------------------------------------------- --- Key Generators --------------------------------------------------------------------------------- - -genKeypair :: Gen (VerificationKey, SigningKey) -genKeypair = deterministicKeyGen <$> gen32Bytes - -genVerificationKey :: Gen VerificationKey -genVerificationKey = fst <$> genKeypair - -genSigningKey :: Gen SigningKey -genSigningKey = snd <$> genKeypair - --------------------------------------------------------------------------------- --- Redeem Key Generators --------------------------------------------------------------------------------- - -genRedeemKeypair :: Gen (RedeemVerificationKey, RedeemSigningKey) -genRedeemKeypair = Gen.just $ redeemDeterministicKeyGen <$> gen32Bytes - -genRedeemVerificationKey :: Gen RedeemVerificationKey -genRedeemVerificationKey = fst <$> genRedeemKeypair - -genCompactRedeemVerificationKey :: Gen CompactRedeemVerificationKey -genCompactRedeemVerificationKey = - toCompactRedeemVerificationKey <$> genRedeemVerificationKey - -genRedeemSigningKey :: Gen RedeemSigningKey -genRedeemSigningKey = snd <$> genRedeemKeypair - --------------------------------------------------------------------------------- --- Signature Generators --------------------------------------------------------------------------------- - -genSignature :: EncCBOR a => ProtocolMagicId -> Gen a -> Gen (Signature a) -genSignature pm genA = sign pm <$> genSignTag <*> genSigningKey <*> genA - -genSignatureEncoded :: Gen ByteString -> Gen (Signature a) -genSignatureEncoded genB = - coerce . signRaw <$> genProtocolMagicId <*> (Just <$> genSignTag) <*> genSigningKey <*> genB - -genRedeemSignature :: - EncCBOR a => ProtocolMagicId -> Gen a -> Gen (RedeemSignature a) -genRedeemSignature pm genA = redeemSign pm <$> gst <*> grsk <*> genA - where - gst = genSignTag - grsk = genRedeemSigningKey - --------------------------------------------------------------------------------- --- Hash Generators --------------------------------------------------------------------------------- - -genAbstractHash :: - (EncCBOR a, HashAlgorithm algo) => Gen a -> Gen (AbstractHash algo a) -genAbstractHash genA = abstractHash <$> genA - --------------------------------------------------------------------------------- --- PassPhrase Generators --------------------------------------------------------------------------------- - -genPassPhrase :: Gen PassPhrase -genPassPhrase = ByteArray.pack <$> genWord8List - where - genWord8List :: Gen [Word8] - genWord8List = - Gen.list (Range.singleton 32) (Gen.word8 Range.constantBounded) - --------------------------------------------------------------------------------- --- SafeSigner Generators --------------------------------------------------------------------------------- - -genSafeSigner :: Gen SafeSigner -genSafeSigner = SafeSigner <$> genSigningKey <*> pure emptyPassphrase - --------------------------------------------------------------------------------- --- Helper Generators --------------------------------------------------------------------------------- - -genHashRaw :: Gen (Hash Raw) -genHashRaw = genAbstractHash $ Raw <$> gen32Bytes - -genTextHash :: Gen (Hash Text) -genTextHash = serializeCborHash <$> Gen.text (Range.linear 0 10) Gen.alphaNum - -feedPM :: (ProtocolMagicId -> Gen a) -> Gen a -feedPM genA = genA =<< genProtocolMagicId diff --git a/eras/byron/crypto/test/Test/Cardano/Crypto/Hashing.hs b/eras/byron/crypto/test/Test/Cardano/Crypto/Hashing.hs deleted file mode 100644 index ee013c7ad49..00000000000 --- a/eras/byron/crypto/test/Test/Cardano/Crypto/Hashing.hs +++ /dev/null @@ -1,75 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TemplateHaskell #-} - -module Test.Cardano.Crypto.Hashing ( - tests, -) -where - -import Cardano.Crypto (decodeAbstractHash, hashHexF, serializeCborHash) -import Cardano.Ledger.Binary (EncCBOR) -import Cardano.Prelude -import Formatting (sformat) -import Hedgehog ( - Gen, - Property, - checkParallel, - discover, - forAll, - property, - withTests, - (/==), - (===), - ) -import qualified Hedgehog.Gen as Gen -import qualified Hedgehog.Range as Range - --------------------------------------------------------------------------------- --- Main Test Action --------------------------------------------------------------------------------- - -tests :: IO Bool -tests = checkParallel $$discover - --------------------------------------------------------------------------------- --- Hashing Properties --------------------------------------------------------------------------------- - -prop_hashInequalityBool :: Property -prop_hashInequalityBool = hashInequality Gen.bool - -prop_hashInequalityUnitList :: Property -prop_hashInequalityUnitList = - hashInequality $ Gen.list (Range.constant 0 50) (pure ()) - -prop_hashInequalityListOfList :: Property -prop_hashInequalityListOfList = - hashInequality $ - Gen.list - (Range.constant 0 10) - (Gen.list (Range.constant 0 20) (Gen.maybe $ Gen.int Range.constantBounded)) - --- | A golden test so that tests fail if the hash function changes -prop_goldenHash :: Property -prop_goldenHash = - withTests 1 - . property - $ sformat hashHexF (serializeCborHash (1 :: Word64)) - === "ee155ace9c40292074cb6aff8c9ccdd273c81648ff1149ef36bcea6ebb8a3e25" - --- | Check that 'decodeAbstractHash' correctly decodes hash values -prop_decodeAbstractHash :: Property -prop_decodeAbstractHash = property $ do - a <- serializeCborHash <$> forAll (Gen.int Range.constantBounded) - decodeAbstractHash (sformat hashHexF a) === Right a - --------------------------------------------------------------------------------- --- Helpers --------------------------------------------------------------------------------- - --- | Check that hashing two different @a@ values gives different hashes -hashInequality :: (Eq a, Show a, EncCBOR a) => Gen a -> Property -hashInequality genA = property $ do - a <- forAll genA - b <- forAll $ Gen.filter (/= a) genA - serializeCborHash a /== serializeCborHash b diff --git a/eras/byron/crypto/test/Test/Cardano/Crypto/Json.hs b/eras/byron/crypto/test/Test/Cardano/Crypto/Json.hs deleted file mode 100644 index b2c2c33e46f..00000000000 --- a/eras/byron/crypto/test/Test/Cardano/Crypto/Json.hs +++ /dev/null @@ -1,38 +0,0 @@ -{-# LANGUAGE TemplateHaskell #-} - -module Test.Cardano.Crypto.Json ( - tests, -) -where - -import Cardano.Prelude -import GetDataFileName ((<:<)) -import Hedgehog (Property) -import qualified Hedgehog as H -import Test.Cardano.Crypto.Example ( - exampleProtocolMagic3, - exampleProtocolMagic4, - ) -import Test.Cardano.Prelude - --------------------------------------------------------------------------------- --- ProtocolMagic --------------------------------------------------------------------------------- - --- Legacy JSON encoding where requiresNetworkMagic was --- encoded as "NMMustBeNothing" or "NMMustBeJust" - -goldenProtocolMagic3AesonDec_NMMustBeJust :: Property -goldenProtocolMagic3AesonDec_NMMustBeJust = - goldenTestJSONDec - exampleProtocolMagic3 - <:< "golden/json/ProtocolMagic_Legacy_NMMustBeJust" - -goldenProtocolMagic4AesonDec_NMMustBeNothing :: Property -goldenProtocolMagic4AesonDec_NMMustBeNothing = - goldenTestJSONDec - exampleProtocolMagic4 - <:< "golden/json/ProtocolMagic_Legacy_NMMustBeNothing" - -tests :: IO Bool -tests = H.checkSequential $$discoverGolden diff --git a/eras/byron/crypto/test/Test/Cardano/Crypto/Keys.hs b/eras/byron/crypto/test/Test/Cardano/Crypto/Keys.hs deleted file mode 100644 index 63b8e0eb706..00000000000 --- a/eras/byron/crypto/test/Test/Cardano/Crypto/Keys.hs +++ /dev/null @@ -1,62 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TemplateHaskell #-} - -module Test.Cardano.Crypto.Keys ( - tests, -) -where - -import Cardano.Crypto.Signing ( - deterministicKeyGen, - fullVerificationKeyF, - parseFullVerificationKey, - redeemDeterministicKeyGen, - redeemToVerification, - safeDeterministicKeyGen, - toVerification, - ) -import Cardano.Prelude -import Formatting (sformat) -import Hedgehog -import qualified Hedgehog.Gen as Gen -import qualified Hedgehog.Range as Range -import Test.Cardano.Crypto.Gen (genPassPhrase, genVerificationKey) - --------------------------------------------------------------------------------- --- Main Test Action --------------------------------------------------------------------------------- - -tests :: IO Bool -tests = checkParallel $$discover - --------------------------------------------------------------------------------- --- Key Properties --------------------------------------------------------------------------------- - --- | Derived 'VerificationKey' is the same as generated one -prop_pubKeyDerivedGenerated :: Property -prop_pubKeyDerivedGenerated = property $ do - seed <- forAll $ Gen.bytes (Range.singleton 32) - let (vk, sk) = deterministicKeyGen seed - vk === toVerification sk - -prop_pubKeyParsing :: Property -prop_pubKeyParsing = property $ do - vk <- forAll genVerificationKey - parseFullVerificationKey (sformat fullVerificationKeyF vk) === Right vk - --- | Derived 'RedeemVerificationKey' is the same as generated one -prop_redeemVerKeyDerivedGenerated :: Property -prop_redeemVerKeyDerivedGenerated = property $ do - seed <- forAll $ Gen.bytes (Range.singleton 32) - let (vk, sk) = - fromMaybe (panic "redeem keygen failed") $ redeemDeterministicKeyGen seed - vk === redeemToVerification sk - --- | Derived 'VerificationKey' is the same as generated one -prop_safeVerKeyDerivedGenerated :: Property -prop_safeVerKeyDerivedGenerated = property $ do - pp <- forAll genPassPhrase - seed <- forAll $ Gen.bytes (Range.singleton 32) - let (vk, sk) = safeDeterministicKeyGen seed pp - vk === toVerification sk diff --git a/eras/byron/crypto/test/Test/Cardano/Crypto/Limits.hs b/eras/byron/crypto/test/Test/Cardano/Crypto/Limits.hs deleted file mode 100644 index aaccfa4cf87..00000000000 --- a/eras/byron/crypto/test/Test/Cardano/Crypto/Limits.hs +++ /dev/null @@ -1,100 +0,0 @@ -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TemplateHaskell #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Crypto.Limits ( - tests, -) -where - -import Cardano.Crypto (AbstractHash, Signature (..), VerificationKey) -import qualified Cardano.Crypto.Wallet as CC -import Cardano.Ledger.Binary (EncCBOR, byronProtVer, serialize') -import Cardano.Prelude -import Crypto.Hash (Blake2b_224, Blake2b_256) -import Crypto.Hash.IO (HashAlgorithm, hashDigestSize) -import qualified Data.ByteString as BS -import Hedgehog -import qualified Hedgehog.Gen as Gen -import qualified Hedgehog.Range as Range -import Test.Cardano.Crypto.Gen ( - feedPM, - genAbstractHash, - genSignature, - genVerificationKey, - ) -import Test.Cardano.Prelude - --------------------------------------------------------------------------------- --- Main Test Action --------------------------------------------------------------------------------- - -tests :: IO Bool -tests = checkParallel $$discover - ---------------------------------------------------------------------------- --- Limit ---------------------------------------------------------------------------- - --- | A limit on the length of something (in bytes). --- TODO should check for overflow in the Num instance. --- Although, if the limit is anywhere near maxBound :: Word32 then something --- is almost certainly amiss. -newtype Limit t = Limit - { getLimit :: Word32 - } - deriving (Eq, Ord, Show, Num, Enum, Real, Integral) - -instance Functor Limit where - fmap _ (Limit x) = Limit x - --------------------------------------------------------------------------------- --- Helper Functions --------------------------------------------------------------------------------- - -mlAbstractHash :: - forall algo a. HashAlgorithm algo => Limit (AbstractHash algo a) -mlAbstractHash = - fromIntegral (hashDigestSize (panic "AbstractHash limit" :: algo) + 4) - -mlVerificationKey :: Limit VerificationKey -mlVerificationKey = 66 - -mlXSignature :: Limit CC.XSignature -mlXSignature = 66 - -mlSignature :: Limit (Signature a) -mlSignature = Signature <$> mlXSignature - --------------------------------------------------------------------------------- --- Message Length Properties --------------------------------------------------------------------------------- - -prop_pubKeyLenLimited :: Property -prop_pubKeyLenLimited = eachOf 1000 genVerificationKey (msgLenLimited mlVerificationKey) - -prop_signatureLenLimited :: Property -prop_signatureLenLimited = - eachOf - 1000 - (feedPM (\pm -> genSignature pm (Gen.list (Range.constant 0 1000) (pure ())))) - (msgLenLimited mlSignature) - -prop_abstractHash224LenLimited :: Property -prop_abstractHash224LenLimited = - eachOf - 1000 - (genAbstractHash @Int32 @Blake2b_224 (Gen.int32 Range.constantBounded)) - (msgLenLimited mlAbstractHash) - -prop_abstractHash256LenLimited :: Property -prop_abstractHash256LenLimited = - eachOf - 1000 - (genAbstractHash @Int32 @Blake2b_256 (Gen.int32 Range.constantBounded)) - (msgLenLimited mlAbstractHash) - -msgLenLimited :: EncCBOR a => Limit a -> a -> PropertyT IO () -msgLenLimited limit a = assert $ BS.length (serialize' byronProtVer a) <= fromIntegral limit diff --git a/eras/byron/crypto/test/Test/Cardano/Crypto/Orphans.hs b/eras/byron/crypto/test/Test/Cardano/Crypto/Orphans.hs deleted file mode 100644 index 0a80b5dd4df..00000000000 --- a/eras/byron/crypto/test/Test/Cardano/Crypto/Orphans.hs +++ /dev/null @@ -1,31 +0,0 @@ -{-# LANGUAGE StandaloneDeriving #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Crypto.Orphans () where - -import Cardano.Crypto ( - SigningKey (..), - ) -import Cardano.Crypto.Hashing (serializeCborHash) -import Cardano.Prelude -import qualified Crypto.PubKey.Ed25519 as Ed25519 -import qualified Data.ByteArray as BA - --- Note that we /only/ provide these Eq and Ord instances for test suites. --- The crypto libraries encourage using key /hashes/ not keys for things --- like sets, map etc. - -instance Eq SigningKey where - a == b = serializeCborHash a == serializeCborHash b - -instance Ord Ed25519.PublicKey where - compare x1 x2 = compare (toByteString x1) (toByteString x2) - -instance Ord Ed25519.SecretKey where - compare x1 x2 = compare (toByteString x1) (toByteString x2) - -instance Ord Ed25519.Signature where - compare x1 x2 = compare (toByteString x1) (toByteString x2) - -toByteString :: BA.ByteArrayAccess bin => bin -> ByteString -toByteString = BA.convert diff --git a/eras/byron/crypto/test/Test/Cardano/Crypto/Random.hs b/eras/byron/crypto/test/Test/Cardano/Crypto/Random.hs deleted file mode 100644 index a6920e5ccd1..00000000000 --- a/eras/byron/crypto/test/Test/Cardano/Crypto/Random.hs +++ /dev/null @@ -1,19 +0,0 @@ -{-# LANGUAGE TemplateHaskell #-} - -module Test.Cardano.Crypto.Random ( - tests, -) -where - -import Cardano.Crypto.Random (deterministic, randomNumber) -import Cardano.Prelude -import qualified Data.ByteString as BS -import Hedgehog (Property, checkParallel, discover, property, withTests, (===)) - -tests :: IO Bool -tests = checkParallel $$discover - -prop_randomNumberDeterminism :: Property -prop_randomNumberDeterminism = withTests 1 . property $ do - let seed = BS.pack [1 .. 40] - deterministic seed (randomNumber 1) === 0 diff --git a/eras/byron/crypto/test/Test/Cardano/Crypto/Signing/Redeem.hs b/eras/byron/crypto/test/Test/Cardano/Crypto/Signing/Redeem.hs deleted file mode 100644 index 471283ee396..00000000000 --- a/eras/byron/crypto/test/Test/Cardano/Crypto/Signing/Redeem.hs +++ /dev/null @@ -1,75 +0,0 @@ -{-# LANGUAGE TemplateHaskell #-} - -module Test.Cardano.Crypto.Signing.Redeem ( - tests, -) -where - -import Cardano.Crypto.Signing (SignTag (..)) -import Cardano.Crypto.Signing.Redeem ( - redeemSign, - redeemToVerification, - verifyRedeemSig, - ) -import Cardano.Prelude -import Hedgehog ( - Property, - assert, - checkParallel, - discover, - forAll, - property, - ) -import qualified Hedgehog.Gen as Gen -import qualified Test.Cardano.Crypto.Dummy as Dummy -import Test.Cardano.Crypto.Gen ( - genRedeemKeypair, - genRedeemSigningKey, - genRedeemVerificationKey, - ) -import Test.Cardano.Crypto.Signing.Signing (genData) - --------------------------------------------------------------------------------- --- Main Test Action --------------------------------------------------------------------------------- - -tests :: IO Bool -tests = checkParallel $$discover - --------------------------------------------------------------------------------- --- Redeem Signature Properties --------------------------------------------------------------------------------- - --- | Signing and verification with a redeem keys works -prop_redeemSign :: Property -prop_redeemSign = property $ do - (vk, sk) <- forAll genRedeemKeypair - a <- forAll genData - - assert $ - verifyRedeemSig Dummy.protocolMagicId SignForTestingOnly vk a $ - redeemSign Dummy.protocolMagicId SignForTestingOnly sk a - --- | Signing fails when the wrong 'RedeemVerificationKey' is used -prop_redeemSignDifferentKey :: Property -prop_redeemSignDifferentKey = property $ do - sk <- forAll genRedeemSigningKey - vk <- forAll $ Gen.filter (/= redeemToVerification sk) genRedeemVerificationKey - a <- forAll genData - - assert - . not - $ verifyRedeemSig Dummy.protocolMagicId SignForTestingOnly vk a - $ redeemSign Dummy.protocolMagicId SignForTestingOnly sk a - --- | Signing fails when then wrong signature data is used -prop_redeemSignDifferentData :: Property -prop_redeemSignDifferentData = property $ do - (vk, sk) <- forAll genRedeemKeypair - a <- forAll genData - b <- forAll $ Gen.filter (/= a) genData - - assert - . not - $ verifyRedeemSig Dummy.protocolMagicId SignForTestingOnly vk b - $ redeemSign Dummy.protocolMagicId SignForTestingOnly sk a diff --git a/eras/byron/crypto/test/Test/Cardano/Crypto/Signing/Redeem/Compact.hs b/eras/byron/crypto/test/Test/Cardano/Crypto/Signing/Redeem/Compact.hs deleted file mode 100644 index c115dac008e..00000000000 --- a/eras/byron/crypto/test/Test/Cardano/Crypto/Signing/Redeem/Compact.hs +++ /dev/null @@ -1,46 +0,0 @@ -{-# LANGUAGE TemplateHaskell #-} - -module Test.Cardano.Crypto.Signing.Redeem.Compact ( - tests, -) -where - -import Cardano.Crypto.Signing.Redeem ( - fromCompactRedeemVerificationKey, - toCompactRedeemVerificationKey, - ) -import Cardano.Prelude -import Hedgehog (MonadTest, Property, checkParallel, tripping) -import Test.Cardano.Crypto.Gen (genRedeemVerificationKey) -import Test.Cardano.Prelude - --------------------------------------------------------------------------------- --- Compact RedeemVerificationKey --------------------------------------------------------------------------------- - -roundTripCompactRedeemVerificationKey :: Property -roundTripCompactRedeemVerificationKey = - eachOf - 1000 - genRedeemVerificationKey - (trippingCompact toCompactRedeemVerificationKey fromCompactRedeemVerificationKey) - -------------------------------------------------------------------------------- --- Tripping util -------------------------------------------------------------------------------- - -trippingCompact :: - (HasCallStack, MonadTest m, Show a, Show b, Eq a) => - (a -> b) -> - (b -> a) -> - a -> - m () -trippingCompact toCompact fromCompact x = - tripping x toCompact (Identity . fromCompact) - -------------------------------------------------------------------------------- --- Main test export -------------------------------------------------------------------------------- - -tests :: IO Bool -tests = checkParallel $$discoverRoundTrip diff --git a/eras/byron/crypto/test/Test/Cardano/Crypto/Signing/Safe.hs b/eras/byron/crypto/test/Test/Cardano/Crypto/Signing/Safe.hs deleted file mode 100644 index ec35c33fcca..00000000000 --- a/eras/byron/crypto/test/Test/Cardano/Crypto/Signing/Safe.hs +++ /dev/null @@ -1,63 +0,0 @@ -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE TemplateHaskell #-} - -module Test.Cardano.Crypto.Signing.Safe ( - tests, -) -where - -import Cardano.Crypto.Signing ( - noPassSafeSigner, - safeToVerification, - toVerification, - ) -import Cardano.Prelude -import Hedgehog ( - Property, - checkParallel, - discover, - forAll, - property, - (===), - ) -import Test.Cardano.Crypto.Gen (genSigningKey) - --------------------------------------------------------------------------------- --- Main Test Action --------------------------------------------------------------------------------- - -tests :: IO Bool -tests = checkParallel $$discover - --------------------------------------------------------------------------------- --- Safe Signing Properties --------------------------------------------------------------------------------- - --- | Making a 'SafeSigner' from a 'SigningKey' preserves the 'VerificationKey' --- --- Since SafeSigner was simplified, this is a completely trivial property. --- --- Definitions: --- --- > safeToVerification (SafeSigner sk _) = toVerification sk --- > noPassSafeSigner sk = SafeSigner sk emptyPassphrase --- --- Theorem: --- --- > safeToVerification (noPassSafeSigner sk) = toVerification sk --- --- Proof: --- --- > safeToVerification (noPassSafeSigner sk) --- > --- > = { by expanding definition of noPassSafeSigner } --- > --- > safeToVerification (SafeSigner sk emptyPassphrase) --- > --- > = { by expanding definition of safeToVerification } --- > --- > toVerification sk -prop_safeSignerPreservesVerificationKey :: Property -prop_safeSignerPreservesVerificationKey = property $ do - sk <- forAll genSigningKey - safeToVerification (noPassSafeSigner sk) === toVerification sk diff --git a/eras/byron/crypto/test/Test/Cardano/Crypto/Signing/Signing.hs b/eras/byron/crypto/test/Test/Cardano/Crypto/Signing/Signing.hs deleted file mode 100644 index 6afd75a5f66..00000000000 --- a/eras/byron/crypto/test/Test/Cardano/Crypto/Signing/Signing.hs +++ /dev/null @@ -1,72 +0,0 @@ -{-# LANGUAGE TemplateHaskell #-} - -module Test.Cardano.Crypto.Signing.Signing (tests, genData) where - -import Cardano.Crypto.Signing (SignTag (..), sign, toVerification, verifySignature) -import Cardano.Ledger.Binary (encCBOR) -import Cardano.Prelude -import Hedgehog ( - Gen, - Property, - assert, - checkParallel, - discover, - forAll, - property, - ) -import qualified Hedgehog.Gen as Gen -import qualified Hedgehog.Range as Range -import qualified Test.Cardano.Crypto.Dummy as Dummy -import Test.Cardano.Crypto.Gen ( - genKeypair, - genSigningKey, - genVerificationKey, - ) - --------------------------------------------------------------------------------- --- Main Test Action --------------------------------------------------------------------------------- - -tests :: IO Bool -tests = checkParallel $$discover - --------------------------------------------------------------------------------- --- Redeem Signature Properties --------------------------------------------------------------------------------- - --- | Signing and verification works -prop_sign :: Property -prop_sign = property $ do - (vk, sk) <- forAll genKeypair - a <- forAll genData - - assert $ - verifySignature encCBOR Dummy.protocolMagicId SignForTestingOnly vk a $ - sign Dummy.protocolMagicId SignForTestingOnly sk a - --- | Signing fails when the wrong 'VerificationKey' is used -prop_signDifferentKey :: Property -prop_signDifferentKey = property $ do - sk <- forAll genSigningKey - vk <- forAll $ Gen.filter (/= toVerification sk) genVerificationKey - a <- forAll genData - - assert - . not - $ verifySignature encCBOR Dummy.protocolMagicId SignForTestingOnly vk a - $ sign Dummy.protocolMagicId SignForTestingOnly sk a - --- | Signing fails when then wrong signature data is used -prop_signDifferentData :: Property -prop_signDifferentData = property $ do - (vk, sk) <- forAll genKeypair - a <- forAll genData - b <- forAll $ Gen.filter (/= a) genData - - assert - . not - $ verifySignature encCBOR Dummy.protocolMagicId SignForTestingOnly vk b - $ sign Dummy.protocolMagicId SignForTestingOnly sk a - -genData :: Gen [Int32] -genData = Gen.list (Range.constant 0 50) (Gen.int32 Range.constantBounded) diff --git a/eras/byron/crypto/test/cardano-crypto-test.cabal b/eras/byron/crypto/test/cardano-crypto-test.cabal deleted file mode 100644 index ca373803897..00000000000 --- a/eras/byron/crypto/test/cardano-crypto-test.cabal +++ /dev/null @@ -1,63 +0,0 @@ -cabal-version: 3.0 -name: cardano-crypto-test -version: 1.5.0.2 -license: Apache-2.0 -maintainer: operations@iohk.io -author: IOHK -synopsis: Test helpers from cardano-crypto exposed to other packages -description: Test helpers from cardano-crypto exposed to other packages -category: Currency -build-type: Simple -data-files: - golden/AbstractHash - golden/DecShare - golden/EncShare - golden/PassPhrase - golden/RedeemSignature - golden/RedeemSigningKey - golden/RedeemVerificationKey - golden/Secret - golden/SecretProof - golden/Signature - golden/SigningKey - golden/VerificationKey - golden/VssPublicKey - golden/json/ProtocolMagic0_Legacy_HasNetworkMagic - golden/json/ProtocolMagic1_Legacy_HasNetworkMagic - golden/json/ProtocolMagic2_Legacy_HasNetworkMagic - golden/json/ProtocolMagic_Legacy_NMMustBeJust - golden/json/ProtocolMagic_Legacy_NMMustBeNothing - -library - exposed-modules: - Test.Cardano.Crypto.CBOR - Test.Cardano.Crypto.Dummy - Test.Cardano.Crypto.Example - Test.Cardano.Crypto.Gen - Test.Cardano.Crypto.Json - Test.Cardano.Crypto.Orphans - - cpp-options: -DCARDANO_CRYPTO_TEST - other-modules: - Paths_cardano_crypto_test - GetDataFileName - - default-language: Haskell2010 - default-extensions: NoImplicitPrelude - ghc-options: - -Weverything -Wno-all-missed-specialisations - -Wno-missing-deriving-strategies -Wno-missing-import-lists - -Wno-missing-safe-haskell-mode -Wno-prepositive-qualified-module - -Wno-safe -Wno-unsafe -Wunused-packages - - build-depends: - base >=4.14 && <5, - bytestring, - cardano-ledger-binary:{cardano-ledger-binary, testlib} >=1.3.1, - cardano-crypto, - cardano-crypto-wrapper ^>=1.5, - cardano-prelude, - cardano-prelude-test, - cryptonite, - hedgehog >=1.0.4, - memory diff --git a/eras/byron/crypto/test/golden/AbstractHash b/eras/byron/crypto/test/golden/AbstractHash deleted file mode 100644 index 7066c87fd26..00000000000 --- a/eras/byron/crypto/test/golden/AbstractHash +++ /dev/null @@ -1,3 +0,0 @@ -00: 582001f4b788593d4f70de2a45c2e1e8 -10: 7088bfbdfa29577ae1b62aba60e095e3 -20: ab53 diff --git a/eras/byron/crypto/test/golden/DecShare b/eras/byron/crypto/test/golden/DecShare deleted file mode 100644 index 95960396b11..00000000000 --- a/eras/byron/crypto/test/golden/DecShare +++ /dev/null @@ -1,7 +0,0 @@ -00: 58610379a7cfbc3c66ad878629f79505 -10: 10f9fd7ac85977306c53f3a6450c0725 -20: d8da31bfc752b92868d6f3276d15a14c -30: d7b95979d30b32fc33f1f988a149f63b -40: 6105a540c532f93b8bd26eb85570a3c7 -50: 7a1114942d23a2d9711f23918d4975a7 -60: d46fb7 diff --git a/eras/byron/crypto/test/golden/EncShare b/eras/byron/crypto/test/golden/EncShare deleted file mode 100644 index 5c7c813b630..00000000000 --- a/eras/byron/crypto/test/golden/EncShare +++ /dev/null @@ -1,3 +0,0 @@ -00: 582102d0ca9ebbac514ebfd135172a06 -10: 1e5f0bcf56babbe5781cdcefa1adb71e -20: dc2588 diff --git a/eras/byron/crypto/test/golden/PassPhrase b/eras/byron/crypto/test/golden/PassPhrase deleted file mode 100644 index 33db625247c..00000000000 --- a/eras/byron/crypto/test/golden/PassPhrase +++ /dev/null @@ -1,3 +0,0 @@ -00: 582077346c4453453553346653483665 -10: 744e6f756958657a4379456a4b633374 -20: 4734 diff --git a/eras/byron/crypto/test/golden/RedeemSignature b/eras/byron/crypto/test/golden/RedeemSignature deleted file mode 100644 index 0392032b66b..00000000000 --- a/eras/byron/crypto/test/golden/RedeemSignature +++ /dev/null @@ -1,5 +0,0 @@ -00: 584011cf71f75af2d73d3afa61af5cc2 -10: cc53a98704d78b97b7daec06ccf7eb7c -20: 6607a954f3fda82b80832290c646bf31 -30: 074c15aaef8eacda84b993882088be60 -40: 5701 diff --git a/eras/byron/crypto/test/golden/RedeemSigningKey b/eras/byron/crypto/test/golden/RedeemSigningKey deleted file mode 100644 index 0a806892729..00000000000 --- a/eras/byron/crypto/test/golden/RedeemSigningKey +++ /dev/null @@ -1,5 +0,0 @@ -00: 58404b6d7977346c4453453553346653 -10: 483665744e6f756958657a4379456a4b -20: 6333538960a916726b09f05c9d4d4a92 -30: 2b85b4e11acfcc1434673d95019b7a9a -40: 52d2 diff --git a/eras/byron/crypto/test/golden/RedeemVerificationKey b/eras/byron/crypto/test/golden/RedeemVerificationKey deleted file mode 100644 index 7d68dc2cdc7..00000000000 --- a/eras/byron/crypto/test/golden/RedeemVerificationKey +++ /dev/null @@ -1,3 +0,0 @@ -00: 5820538960a916726b09f05c9d4d4a92 -10: 2b85b4e11acfcc1434673d95019b7a9a -20: 52d2 diff --git a/eras/byron/crypto/test/golden/Secret b/eras/byron/crypto/test/golden/Secret deleted file mode 100644 index 09204eeaddd..00000000000 --- a/eras/byron/crypto/test/golden/Secret +++ /dev/null @@ -1,3 +0,0 @@ -00: 582103a889b85070721af446a282e8d2 -10: 3934612eb6ffc7c422f15aa85ad5c072 -20: 267c79 diff --git a/eras/byron/crypto/test/golden/SecretProof b/eras/byron/crypto/test/golden/SecretProof deleted file mode 100644 index 62972d29f1b..00000000000 --- a/eras/byron/crypto/test/golden/SecretProof +++ /dev/null @@ -1,26 +0,0 @@ -000: 8458210317f64d0daa9ed18cb2b51102 -010: 89755601862d2779c11d988bd31cd777 -020: 9f590ff8584034d60d150f99ef6a8b3a -030: 20d2243d5304c5926d99d739373a85fc -040: 32f29b099f2ad52f54d9692526b27830 -050: a77fd616d133bcdc502b248a1d9ecf95 -060: 9488b4da3f6458a8c1f9a1af53542e45 -070: f4d17a0a973e65657c35ac6712954843 -080: 914de6be15cec2ac0000000000000004 -090: 374869e2742d25443a466821097df49c -0a0: 941be59a40c45dfb4b4586482a9f12a8 -0b0: 5acfc58628ed128b878943cde8d33cdd -0c0: 582288400b81aa0cb673935f59f64536 -0d0: 5ba3189d04d323ff5f36b023bf297063 -0e0: 129dbdd1c718a561e9783e49697a27cb -0f0: 4b47d91f0934461fd6801248d54d50ff -100: 791ae1596a59fc842eb0ca9797604276 -110: 9f58210308f5d87bc37317806a481e85 -120: 5a31b64b8e3958b1eb0775bac0b3ec53 -130: 0275a8805821037a1844c68428b1e5b9 -140: 145a32acaae05826eafbca6877b64ef2 -150: df22004e479978582103faecfd77bcec -160: cf788f772fab560a72818f89fc7742e6 -170: e254417d245aa929223c58210282931f -180: f9451ef9f29948f97ed511843bf913ae -190: cd96b6bc4050e7ed6b48080012ff diff --git a/eras/byron/crypto/test/golden/Signature b/eras/byron/crypto/test/golden/Signature deleted file mode 100644 index 7855a6b9268..00000000000 --- a/eras/byron/crypto/test/golden/Signature +++ /dev/null @@ -1,5 +0,0 @@ -00: 5840b28bf6b4c08892f5b82dc11e9df0 -10: 8c0c4374a8f7e2b2558d42a83ed43ec2 -20: b6b76dabf1293a561971d772d3f96097 -30: f96f40a363b4201616202ef18fe52f27 -40: f806 diff --git a/eras/byron/crypto/test/golden/SigningKey b/eras/byron/crypto/test/golden/SigningKey deleted file mode 100644 index f5a09cc1350..00000000000 --- a/eras/byron/crypto/test/golden/SigningKey +++ /dev/null @@ -1,9 +0,0 @@ -00: 588053346653483665744e6f75695865 -10: 7a4379456a4b63337447346a61306b46 -20: 6a4f38717a616932365a4d5055454a66 -30: 457931356f78356b4a30754b44626937 -40: 6936644c586b756573565a394a664867 -50: 6a726374734c4674324e766f76586e63 -60: 68734f7658303559364c6f686c544e74 -70: 356d6b504668556f587531455a534a54 -80: 4979 diff --git a/eras/byron/crypto/test/golden/VerificationKey b/eras/byron/crypto/test/golden/VerificationKey deleted file mode 100644 index b6cd0149827..00000000000 --- a/eras/byron/crypto/test/golden/VerificationKey +++ /dev/null @@ -1,5 +0,0 @@ -00: 58404b6d7977346c4453453553346653 -10: 483665744e6f756958657a4379456a4b -20: 63337447346a61306b466a4f38717a61 -30: 6932365a4d5055454a66457931356f78 -40: 356b diff --git a/eras/byron/crypto/test/golden/VssPublicKey b/eras/byron/crypto/test/golden/VssPublicKey deleted file mode 100644 index 15eff83f1cb..00000000000 --- a/eras/byron/crypto/test/golden/VssPublicKey +++ /dev/null @@ -1,3 +0,0 @@ -00: 582102294842accb1d76aaa64bc1af23 -10: 1378e1a01a67c0fc8010824caa021097 -20: 0275c4 diff --git a/eras/byron/crypto/test/golden/json/ProtocolMagic0_Legacy_HasNetworkMagic b/eras/byron/crypto/test/golden/json/ProtocolMagic0_Legacy_HasNetworkMagic deleted file mode 100644 index 027791f42e5..00000000000 --- a/eras/byron/crypto/test/golden/json/ProtocolMagic0_Legacy_HasNetworkMagic +++ /dev/null @@ -1 +0,0 @@ -31337 \ No newline at end of file diff --git a/eras/byron/crypto/test/golden/json/ProtocolMagic1_Legacy_HasNetworkMagic b/eras/byron/crypto/test/golden/json/ProtocolMagic1_Legacy_HasNetworkMagic deleted file mode 100644 index c2e97ec3381..00000000000 --- a/eras/byron/crypto/test/golden/json/ProtocolMagic1_Legacy_HasNetworkMagic +++ /dev/null @@ -1 +0,0 @@ -2147000001 \ No newline at end of file diff --git a/eras/byron/crypto/test/golden/json/ProtocolMagic2_Legacy_HasNetworkMagic b/eras/byron/crypto/test/golden/json/ProtocolMagic2_Legacy_HasNetworkMagic deleted file mode 100644 index 8a64a267b8d..00000000000 --- a/eras/byron/crypto/test/golden/json/ProtocolMagic2_Legacy_HasNetworkMagic +++ /dev/null @@ -1 +0,0 @@ --58952 \ No newline at end of file diff --git a/eras/byron/crypto/test/golden/json/ProtocolMagic_Legacy_NMMustBeJust b/eras/byron/crypto/test/golden/json/ProtocolMagic_Legacy_NMMustBeJust deleted file mode 100644 index 12c352378ff..00000000000 --- a/eras/byron/crypto/test/golden/json/ProtocolMagic_Legacy_NMMustBeJust +++ /dev/null @@ -1 +0,0 @@ -{"pm":31337,"requiresNetworkMagic":"NMMustBeJust"} \ No newline at end of file diff --git a/eras/byron/crypto/test/golden/json/ProtocolMagic_Legacy_NMMustBeNothing b/eras/byron/crypto/test/golden/json/ProtocolMagic_Legacy_NMMustBeNothing deleted file mode 100644 index e0731ae45c2..00000000000 --- a/eras/byron/crypto/test/golden/json/ProtocolMagic_Legacy_NMMustBeNothing +++ /dev/null @@ -1 +0,0 @@ -{"pm":500,"requiresNetworkMagic":"NMMustBeNothing"} diff --git a/eras/byron/crypto/test/test.hs b/eras/byron/crypto/test/test.hs deleted file mode 100644 index e7a5093cc05..00000000000 --- a/eras/byron/crypto/test/test.hs +++ /dev/null @@ -1,28 +0,0 @@ -import Cardano.Prelude -import qualified Test.Cardano.Crypto.CBOR -import qualified Test.Cardano.Crypto.Hashing -import qualified Test.Cardano.Crypto.Json -import qualified Test.Cardano.Crypto.Keys -import qualified Test.Cardano.Crypto.Limits -import qualified Test.Cardano.Crypto.Random -import qualified Test.Cardano.Crypto.Signing.Redeem -import qualified Test.Cardano.Crypto.Signing.Redeem.Compact -import qualified Test.Cardano.Crypto.Signing.Safe -import qualified Test.Cardano.Crypto.Signing.Signing -import Test.Cardano.Prelude - --- | Main testing action -main :: IO () -main = - runTests - [ Test.Cardano.Crypto.CBOR.tests - , Test.Cardano.Crypto.Hashing.tests - , Test.Cardano.Crypto.Json.tests - , Test.Cardano.Crypto.Keys.tests - , Test.Cardano.Crypto.Limits.tests - , Test.Cardano.Crypto.Random.tests - , Test.Cardano.Crypto.Signing.Redeem.tests - , Test.Cardano.Crypto.Signing.Redeem.Compact.tests - , Test.Cardano.Crypto.Signing.Safe.tests - , Test.Cardano.Crypto.Signing.Signing.tests - ] diff --git a/eras/byron/ledger/executable-spec/.ghcid b/eras/byron/ledger/executable-spec/.ghcid deleted file mode 100644 index 9d91bfabd40..00000000000 --- a/eras/byron/ledger/executable-spec/.ghcid +++ /dev/null @@ -1 +0,0 @@ ---command="cabal repl --repl-options='-isrc -fwarn-unused-binds -fwarn-unused-imports -fno-code -fobject-code -g2 -fno-break-on-exception -fno-break-on-error -ferror-spans -j -Wno-unused-packages'" --clear --no-height-limit --reverse-errors --reload=../../../../ --outputfile=/tmp/byron-spec-ledger-ghcid.txt \ No newline at end of file diff --git a/eras/byron/ledger/executable-spec/CHANGELOG.md b/eras/byron/ledger/executable-spec/CHANGELOG.md deleted file mode 100644 index 98b11085cc0..00000000000 --- a/eras/byron/ledger/executable-spec/CHANGELOG.md +++ /dev/null @@ -1,25 +0,0 @@ -# Version history for `byron-spec-ledger` - -## 1.0.1.1 - -* - -## 1.0.1.0 - -* Replaced `small-steps-test` dependency with `small-steps:testlib` - -## 1.0.0.2 - -* - -## 1.0.0.1 - -* - -## 1.0.0.0 - -* First properly versioned release. - -## 0.1.0.0 - -* Some really old improperly versioned release diff --git a/eras/byron/ledger/executable-spec/Setup.hs b/eras/byron/ledger/executable-spec/Setup.hs deleted file mode 100644 index e8ef27dbba9..00000000000 --- a/eras/byron/ledger/executable-spec/Setup.hs +++ /dev/null @@ -1,3 +0,0 @@ -import Distribution.Simple - -main = defaultMain diff --git a/eras/byron/ledger/executable-spec/byron-spec-ledger.cabal b/eras/byron/ledger/executable-spec/byron-spec-ledger.cabal deleted file mode 100644 index d0f9617d383..00000000000 --- a/eras/byron/ledger/executable-spec/byron-spec-ledger.cabal +++ /dev/null @@ -1,86 +0,0 @@ -cabal-version: 3.0 -name: byron-spec-ledger -version: 1.0.1.0 -license: Apache-2.0 -maintainer: operations@iohk.io -author: IOHK -homepage: https://github.com/input-output-hk/cardano-legder -synopsis: Executable specification of Cardano ledger -category: Testing -build-type: Simple -extra-source-files: CHANGELOG.md - -library - exposed-modules: - Hedgehog.Gen.Double - Byron.Spec.Ledger.Core - Byron.Spec.Ledger.Core.Generators - Byron.Spec.Ledger.Core.Omniscient - Byron.Spec.Ledger.Delegation - Byron.Spec.Ledger.Delegation.Test - Byron.Spec.Ledger.GlobalParams - Byron.Spec.Ledger.Update - Byron.Spec.Ledger.Update.Generators - Byron.Spec.Ledger.Update.Test - Byron.Spec.Ledger.UTxO - Byron.Spec.Ledger.UTxO.Generators - Byron.Spec.Ledger.STS.UTXO - Byron.Spec.Ledger.STS.UTXOW - Byron.Spec.Ledger.STS.UTXOWS - Data.AbstractSize - - hs-source-dirs: src - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wunused-packages - - build-depends: - base >=4.14 && <5, - bimap >=0.4 && <0.6, - bytestring, - cardano-crypto-class, - cardano-ledger-binary >=1.0, - containers, - cryptonite, - hashable, - hedgehog >=1.0.4, - microlens, - microlens-th, - nothunks, - small-steps:{small-steps, testlib} >=1.1, - Unique >=0.4.7.6 - -test-suite byron-spec-ledger-test - type: exitcode-stdio-1.0 - main-is: Main.hs - hs-source-dirs: test - other-modules: - Test.Byron.Spec.Ledger.Core.Generators.Properties - Test.Byron.Spec.Ledger.Delegation.Examples - Test.Byron.Spec.Ledger.Delegation.Properties - Test.Byron.Spec.Ledger.AbstractSize.Properties - Test.Byron.Spec.Ledger.Update.Examples - Test.Byron.Spec.Ledger.Update.Properties - Test.Byron.Spec.Ledger.Relation.Properties - Test.Byron.Spec.Ledger.UTxO.Properties - - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wunused-packages - "-with-rtsopts=-K4m -M150m" - - build-depends: - base, - bimap, - containers, - hedgehog, - microlens, - microlens-th, - tasty, - tasty-hunit, - tasty-hedgehog, - Unique, - byron-spec-ledger, - small-steps:{small-steps, testlib} >=1.1 diff --git a/eras/byron/ledger/executable-spec/flake.nix b/eras/byron/ledger/executable-spec/flake.nix deleted file mode 100644 index ab1b6a77112..00000000000 --- a/eras/byron/ledger/executable-spec/flake.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ - outputs = inputs: let - main = inputs.main or (import ../../../../nix/flake-compat.nix).defaultNix; - in { - packages = - builtins.mapAttrs (_: {cabalProject, ...}: { - default = cabalProject.hsPkgs.byron-spec-ledger.components.library; - test = cabalProject.hsPkgs.byron-spec-ledger.components.tests.byron-spec-ledger-test; - }) - main.legacyPackages; - inherit (main) devShells; - }; -} diff --git a/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/Core.hs b/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/Core.hs deleted file mode 100644 index 803cb9ec176..00000000000 --- a/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/Core.hs +++ /dev/null @@ -1,474 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveDataTypeable #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE StrictData #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} - -module Byron.Spec.Ledger.Core where - -import Cardano.Ledger.Binary (DecCBOR, EncCBOR, FromCBOR, ToCBOR (..), toByronCBOR) -import Data.AbstractSize -import Data.Bimap (Bimap) -import qualified Data.Bimap as Bimap -import Data.Data (Data, Typeable) -import Data.Foldable (toList) -import Data.Hashable (Hashable) -import qualified Data.Hashable as H -import Data.Int (Int64) -import Data.Kind (Type) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Maybe (isJust) -import Data.Monoid (Sum (..)) -import qualified Data.Sequence as Seq -import Data.Set (Set, intersection, isSubsetOf) -import qualified Data.Set as Set -import Data.Typeable (typeOf) -import Data.Word (Word64, Word8) -import GHC.Generics (Generic) -import NoThunks.Class (NoThunks (..)) -import Numeric.Natural (Natural) - --- | An encoded hash of part of the system. --- --- 'Nothing' is used to signal to the elaborators (i.e. the algorithms that --- translate abstract data into data concrete) that they should produce an --- invalid concrete hash. -newtype Hash = Hash - { unHash :: Maybe Int - } - deriving stock (Show, Generic, Data, Typeable) - deriving newtype (Eq, Ord, Hashable, EncCBOR, NoThunks) - deriving anyclass (HasTypeReps) - -instance ToCBOR Hash where - toCBOR = toByronCBOR - -isValid :: Hash -> Bool -isValid = isJust . unHash - --- | Hash part of the ledger payload -class HasHash a where - hash :: a -> Hash - ---------------------------------------------------------------------------------- --- Signing and verification ---------------------------------------------------------------------------------- - --- | Representation of the owner of key pair. -newtype Owner = Owner - { unOwner :: Natural - } - deriving stock (Show, Generic, Data, Typeable) - deriving newtype (Eq, Ord, Hashable, DecCBOR, EncCBOR, FromCBOR, ToCBOR, NoThunks) - deriving anyclass (HasTypeReps) - -class HasOwner a where - owner :: a -> Owner - --- | Signing Key. -newtype SKey = SKey Owner - deriving stock (Show, Generic, Data, Typeable) - deriving newtype (Eq, Ord, EncCBOR, ToCBOR, NoThunks) - deriving anyclass (HasTypeReps) - -instance HasOwner SKey where - owner (SKey o) = o - --- | Verification Key. -newtype VKey = VKey Owner - deriving stock (Show, Generic, Data, Typeable) - deriving newtype (Eq, Ord, Hashable, DecCBOR, EncCBOR, FromCBOR, ToCBOR, NoThunks) - deriving anyclass (HasTypeReps) - -instance HasHash VKey where - hash = Hash . Just . H.hash - -instance HasOwner VKey where - owner (VKey o) = o - --- | A genesis key is a specialisation of a generic VKey. -newtype VKeyGenesis = VKeyGenesis {unVKeyGenesis :: VKey} - deriving stock (Show, Generic, Data, Typeable) - deriving newtype (Eq, Ord, Hashable, HasHash, DecCBOR, EncCBOR, FromCBOR, ToCBOR, NoThunks) - deriving anyclass (HasTypeReps) - -instance HasOwner VKeyGenesis where - owner (VKeyGenesis vk) = owner vk - -mkVKeyGenesis :: Natural -> VKeyGenesis -mkVKeyGenesis = VKeyGenesis . VKey . Owner - --- | Make a set of genesis keys. The genesis keys are continuously numbered from 0 to the given --- number of genesis keys minus 1. -mkVkGenesisSet :: - -- | Number of genesis keys - Word8 -> - Set VKeyGenesis -mkVkGenesisSet ngk = Set.fromAscList $ mkVKeyGenesis <$> [0 .. (fromIntegral ngk - 1)] - --- | Key Pair. -data KeyPair = KeyPair - { sKey :: SKey - , vKey :: VKey - } - deriving (Eq, Ord, Show, Generic, NoThunks) - -instance HasTypeReps KeyPair - --- | Return a key pair for a given owner. -keyPair :: Owner -> KeyPair -keyPair o = KeyPair (SKey o) (VKey o) - --- | A digital signature. -data Sig a = Sig a Owner - deriving (Show, Eq, Ord, Generic, Hashable, Typeable, Data, NoThunks) - --- | We need a custom instance here that returns only the top level type. --- A generic instance would have recursed into type 'a' and since we use --- 'typeReps' to compute 'abstractSize', this would mean the size of --- 'Sig a' would include the size of 'a' (e.g. 'Tx'). This would create an --- artificial coupling between the size of a type and it's "signature". -instance Typeable a => HasTypeReps (Sig a) where - typeReps x = typeOf x Seq.<| Seq.empty - --- | Produce a digital signature -sign :: SKey -> a -> Sig a -sign (SKey k) d = Sig d k - --- | Verify a digital signature -verify :: Eq a => VKey -> a -> Sig a -> Bool -verify (VKey vk) vd (Sig sd sk) = vk == sk && vd == sd - ---------------------------------------------------------------------------------- --- Slots and Epochs ---------------------------------------------------------------------------------- - -newtype Epoch = Epoch {unEpoch :: Word64} - deriving stock (Show, Generic, Data, Typeable) - deriving newtype (Eq, Ord, Hashable, Num, EncCBOR, ToCBOR, NoThunks) - deriving anyclass (HasTypeReps) - -newtype Slot = Slot {unSlot :: Word64} - deriving stock (Show, Generic, Data, Typeable) - deriving newtype (Eq, Ord, Hashable, EncCBOR, ToCBOR, NoThunks) - deriving anyclass (HasTypeReps) - --- | A number of slots. --- --- We use this newtype to distinguish between a cardinal slot and a relative --- period of slots, and also to distinguish between number of slots and number --- of blocks. -newtype SlotCount = SlotCount {unSlotCount :: Word64} - deriving stock (Generic, Show, Data, Typeable) - deriving newtype (Eq, Ord, Num, Hashable, EncCBOR, ToCBOR, NoThunks) - -instance HasTypeReps SlotCount - --- | Add a slot count to a slot. -addSlot :: Slot -> SlotCount -> Slot -addSlot (Slot n) (SlotCount m) = Slot $ m + n - --- | An alias for 'addSlot' -(+.) :: Slot -> SlotCount -> Slot -(+.) = addSlot - -infixl 6 +. - --- | Subtract a slot count from a slot. --- --- This is bounded below by 0. -minusSlot :: Slot -> SlotCount -> Slot -minusSlot (Slot m) (SlotCount n) - | m <= n = Slot 0 - | otherwise = Slot $ m - n - --- | An alias for 'minusSlot' -(-.) :: Slot -> SlotCount -> Slot -(-.) = minusSlot - -infixl 6 -. - --- | Multiply the block count by the given constant. This function does not --- check for overflow. -(*.) :: Word64 -> BlockCount -> SlotCount -n *. (BlockCount c) = SlotCount $ n * c - -infixl 7 *. - --- | Subtract a slot count from a slot. --- --- In case the slot count is greater than the slot's index, it returns --- Nothing. -minusSlotMaybe :: Slot -> SlotCount -> Maybe Slot -minusSlotMaybe (Slot m) (SlotCount n) - | m < n = Nothing - | otherwise = Just . Slot $ m - n - -newtype BlockCount = BlockCount {unBlockCount :: Word64} - deriving stock (Generic, Show) - deriving newtype (Eq, Ord, Num, Hashable, NoThunks, DecCBOR, EncCBOR, FromCBOR, ToCBOR) - -instance HasTypeReps BlockCount - ---------------------------------------------------------------------------------- --- Transactions ---------------------------------------------------------------------------------- - --- | The address of a transaction output, used to identify the owner. -newtype Addr = Addr VKey - deriving stock (Show, Generic, Data, Typeable) - deriving newtype (Eq, Ord, Hashable, HasOwner, EncCBOR, ToCBOR, NoThunks) - deriving anyclass (HasTypeReps) - --- | Create an address from a number. -mkAddr :: Natural -> Addr -mkAddr = Addr . VKey . Owner - -instance HasHash Addr where - hash = Hash . Just . H.hash - --- | A unit of value held by a UTxO. -newtype Lovelace = Lovelace - { unLovelace :: Integer - } - deriving stock (Show, Generic, Data, Typeable) - deriving newtype (Eq, Ord, Num, Hashable, Enum, Real, Integral, EncCBOR, ToCBOR, NoThunks) - deriving (Semigroup, Monoid) via (Sum Integer) - deriving anyclass (HasTypeReps) - --- | Constant amount of Lovelace in the system. -lovelaceCap :: Lovelace -lovelaceCap = Lovelace $ 45 * fromIntegral ((10 :: Int64) ^ (15 :: Int64)) - ---------------------------------------------------------------------------------- --- Domain restriction and exclusion ---------------------------------------------------------------------------------- - -class Relation m where - type Domain m :: Type - type Range m :: Type - - singleton :: Domain m -> Range m -> m - - -- | Domain - dom :: Ord (Domain m) => m -> Set (Domain m) - - -- | Range - range :: Ord (Range m) => m -> Set (Range m) - - -- | Domain restriction - -- - -- Unicode: 25c1 - (◁), (<|) :: (Ord (Domain m), Foldable f) => f (Domain m) -> m -> m - s <| r = s ◁ r - - -- | Domain exclusion - -- - -- Unicode: 22ea - (⋪), ( f (Domain m) -> m -> m - s ) :: Ord (Range m) => m -> Set (Range m) -> m - s |> r = s ▷ r - - -- | Range exclusion - -- - -- Unicode: 22eb - (⋫), (|/>) :: Ord (Range m) => m -> Set (Range m) -> m - s |/> r = s ⋫ r - - -- | Union - (∪) :: (Ord (Domain m), Ord (Range m)) => m -> m -> m - - -- | Union Override Right - (⨃) :: (Ord (Domain m), Ord (Range m), Foldable f) => m -> f (Domain m, Range m) -> m - - -- | Restrict domain to values less or equal than the given value. - -- - -- Unicode: 25c1 - (<=◁) :: Ord (Domain m) => Domain m -> m -> m - - infixl 5 <=◁ - - -- | Restrict range to values less or equal than the given value - -- - -- Unicode: 25b7 - (▷<=) :: Ord (Range m) => m -> Range m -> m - - infixl 5 ▷<= - - -- | Restrict range to values greater or equal than the given value - -- - -- Unicode: 25b7 - (▷>=) :: Ord (Range m) => m -> Range m -> m - - infixl 5 ▷>= - - -- | Size of the relation - size :: Integral n => m -> n - --- | Alias for 'elem'. --- --- Unicode: 2208 -(∈) :: (Eq a, Foldable f) => a -> f a -> Bool -a ∈ f = elem a f - --- | Alias for not 'elem'. --- --- Unicode: 2209 -(∉) :: (Eq a, Foldable f) => a -> f a -> Bool -a ∉ f = not $ elem a f - -infixl 4 ∉ - -instance (Ord k, Ord v) => Relation (Bimap k v) where - type Domain (Bimap k v) = k - type Range (Bimap k v) = v - - singleton = Bimap.singleton - - dom = Set.fromList . Bimap.keys - range = Set.fromList . Bimap.elems - - s ◁ r = Bimap.filter (\k _ -> k `Set.member` toSet s) r - - s ⋪ r = Bimap.filter (\k _ -> k `Set.notMember` toSet s) r - - r ▷ s = Bimap.filter (\_ v -> Set.member v s) r - - r ⋫ s = Bimap.filter (\_ v -> Set.notMember v s) r - - d0 ∪ d1 = Bimap.fold Bimap.insert d0 d1 - d0 ⨃ d1 = foldr (uncurry Bimap.insert) d0 (toList d1) - - vmax <=◁ r = Bimap.filter (\v _ -> v <= vmax) r - - r ▷<= vmax = Bimap.filter (\_ v -> v <= vmax) r - - r ▷>= vmin = Bimap.filter (\_ v -> v >= vmin) r - - size = fromIntegral . Bimap.size - -instance Relation (Map k v) where - type Domain (Map k v) = k - type Range (Map k v) = v - - singleton = Map.singleton - - dom = Map.keysSet - range = Set.fromList . Map.elems - - s ◁ r = Map.filterWithKey (\k _ -> k `Set.member` toSet s) r - - s ⋪ r = Map.filterWithKey (\k _ -> k `Set.notMember` toSet s) r - - r ▷ s = Map.filter (flip Set.member s) r - - r ⋫ s = Map.filter (flip Set.notMember s) r - - d0 ∪ d1 = Map.union d0 d1 - - -- For union override we pass @d1@ as first argument, since 'Map.union' is - -- left biased. - d0 ⨃ d1 = Map.union (Map.fromList . toList $ d1) d0 - - vmax <=◁ r = Map.filterWithKey (\k _ -> k <= vmax) r - - r ▷<= vmax = Map.filter (<= vmax) r - - r ▷>= vmin = Map.filter (>= vmin) r - - size = fromIntegral . Map.size - --- | Union override plus is (A\B)∪(B\A)∪{k|->v1+v2 | k|->v1 : A /\ k|->v2 : B} -(∪+) :: (Ord a, Ord b, Num b) => Map a b -> Map a b -> Map a b -a ∪+ b = ((dom a) ⋪ b) ∪ ((dom b) ⋪ a) ∪ (Map.unionWith (+) a b) - -instance Relation (Set (a, b)) where - type Domain (Set (a, b)) = a - type Range (Set (a, b)) = b - - singleton a b = Set.singleton (a, b) - - dom = Set.map fst - - range = Set.map snd - - s ◁ r = Set.filter (\(k, _) -> k `Set.member` toSet s) r - - s ⋪ r = Set.filter (\(k, _) -> k `Set.notMember` toSet s) r - - r ▷ s = Set.filter (\(_, v) -> Set.member v s) r - - r ⋫ s = Set.filter (\(_, v) -> Set.notMember v s) r - - (∪) = Set.union - - d0 ⨃ d1 = d1' ∪ ((dom d1') ⋪ d0) - where - d1' = toSet d1 - - vmax <=◁ r = Set.filter ((<= vmax) . fst) $ r - - r ▷<= vmax = Set.filter ((<= vmax) . snd) $ r - - r ▷>= vmax = Set.filter ((>= vmax) . snd) $ r - - size = fromIntegral . Set.size - -instance Relation [(a, b)] where - type Domain [(a, b)] = a - type Range [(a, b)] = b - - singleton a b = [(a, b)] - - dom = toSet . fmap fst - - range = toSet . fmap snd - - s ◁ r = filter ((`Set.member` toSet s) . fst) r - - s ⋪ r = filter ((`Set.notMember` toSet s) . fst) r - - r ▷ s = filter ((`Set.member` toSet s) . snd) r - - r ⋫ s = filter ((`Set.notMember` toSet s) . snd) r - - (∪) = (++) - - -- In principle a list of pairs allows for duplicated keys. - d0 ⨃ d1 = d0 ++ toList d1 - - vmax <=◁ r = filter ((<= vmax) . fst) r - - r ▷<= vmax = filter ((<= vmax) . snd) r - - r ▷>= vmin = filter ((vmin <=) . snd) r - - size = fromIntegral . length - ---------------------------------------------------------------------------------- --- Aliases ---------------------------------------------------------------------------------- - --- | Inclusion among foldables. --- --- Unicode: 2286 -(⊆) :: (Foldable f, Foldable g, Ord a) => f a -> g a -> Bool -x ⊆ y = toSet x `isSubsetOf` toSet y - -toSet :: (Foldable f, Ord a) => f a -> Set a -toSet = Set.fromList . toList - -(∩) :: Ord a => Set a -> Set a -> Set a -(∩) = intersection diff --git a/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/Core/Generators.hs b/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/Core/Generators.hs deleted file mode 100644 index 7fe45f6c012..00000000000 --- a/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/Core/Generators.hs +++ /dev/null @@ -1,97 +0,0 @@ --- | Generators for the 'Ledger.Core' values. -module Byron.Spec.Ledger.Core.Generators ( - vkGen, - vkgenesisGen, - addrGen, - slotGen, - epochGen, - blockCountGen, - k, - kForNumberOfEpochs, -) -where - -import Byron.Spec.Ledger.Core ( - Addr (Addr), - BlockCount (BlockCount), - Epoch (Epoch), - Owner (Owner), - Slot (Slot), - VKey (VKey), - VKeyGenesis (VKeyGenesis), - ) -import Byron.Spec.Ledger.GlobalParams (slotsPerEpochToK) -import Data.Word (Word64) -import Hedgehog (Gen) -import qualified Hedgehog.Gen as Gen -import qualified Hedgehog.Range as Range - -vkGen :: Gen VKey -vkGen = VKey . Owner <$> Gen.integral (Range.linear 0 100) - -vkgenesisGen :: Gen VKeyGenesis -vkgenesisGen = VKeyGenesis <$> vkGen - -addrGen :: Gen Addr -addrGen = Addr <$> vkGen - --- | Generates a slot within the given bound -slotGen :: Word64 -> Word64 -> Gen Slot -slotGen lower upper = - Slot <$> Gen.word64 (Range.linear lower upper) - --- | Generates an epoch within the given bound -epochGen :: Word64 -> Word64 -> Gen Epoch -epochGen lower upper = - Epoch <$> Gen.word64 (Range.linear lower upper) - --- | Generates a block count within the given bound -blockCountGen :: Word64 -> Word64 -> Gen BlockCount -blockCountGen lower upper = - BlockCount <$> Gen.word64 (Range.linear lower upper) - --- | Generate a chain stability parameter value (@k@) using the given chain length and desired --- number of epochs. -k :: - -- | Chain length - Word64 -> - -- | Maximum number of epochs - Word64 -> - Gen BlockCount -k chainLength maxNumberOfEpochs = - kForNumberOfEpochs chainLength <$> numberOfEpochsGen - where - numberOfEpochsGen :: Gen Word64 - numberOfEpochsGen = - Gen.frequency - [ (9, Gen.integral $ Range.linear 1 (maxNumberOfEpochs `max` 1)) - , (1, pure 1) - ] - --- | Given a chain length, determine the @k@ value that will split the chain length into the desired --- number of epochs. --- --- We have that: --- --- > chainLength = slotsPerEpoch k * numberOfEpochs --- > = { algebra } --- > chainLength / numberOfEpochs = slotsPerEpoch k --- > = { 'slotsPerEpochtoK' is the inverse of 'slotsPerEpoch'; algebra } --- > slotsPerEpochToK (chainLength / numberOfEpochs) = k --- --- So the resulting @k@ value will be directly proportional to the @chainLength@ and inversely --- proportional to the chosen @numberOfEpochs@. --- --- The minimum value for @k@ will be 1. In particular, this will be the value --- returned when the number of epochs is greater or equal than @chainLength@. -kForNumberOfEpochs :: - -- | Chain length - Word64 -> - -- | Desired number of epochs - Word64 -> - BlockCount -kForNumberOfEpochs chainLength numberOfEpochs = - max 1 (slotsPerEpochToK slotsPerEpoch) - where - slotsPerEpoch :: Word64 - slotsPerEpoch = round $ fromIntegral chainLength / (fromIntegral numberOfEpochs :: Double) diff --git a/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/Core/Omniscient.hs b/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/Core/Omniscient.hs deleted file mode 100644 index ae6663641c1..00000000000 --- a/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/Core/Omniscient.hs +++ /dev/null @@ -1,37 +0,0 @@ --- | Functions that are intended to be used in tests, but not in the executable --- specifications. These functions are not possible in practice (like recovering --- the signed data from the signature only), but are possible for the abstract --- data we use in the specifications. -module Byron.Spec.Ledger.Core.Omniscient where - -import Byron.Spec.Ledger.Core ( - SKey (SKey), - Sig (Sig), - VKey (VKey), - VKeyGenesis, - owner, - sign, - unVKeyGenesis, - ) - --- | Extract the verifying key of a signature. This is useful when elaborating --- an abstract signature into a concrete one. -signatureVKey :: Sig a -> VKey -signatureVKey (Sig _someData someOwner) = VKey someOwner - --- | Extract the signature data. -signatureData :: Sig a -> a -signatureData (Sig someData _someOwner) = someData - --- | Get the signing key from the verification key. We use this in the --- generators, where we need to generate signed data for a given verification --- key (e.g. one that appears in the delegation map) for which we don't have --- the signing key. -skey :: VKey -> SKey -skey = SKey . owner - --- | Sign using a genesis verifying key. --- --- See 'skey' for details about situations where this function is used. -signWithGenesisKey :: VKeyGenesis -> a -> Sig a -signWithGenesisKey vkg = sign (skey (unVKeyGenesis vkg)) diff --git a/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/Delegation.hs b/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/Delegation.hs deleted file mode 100644 index f4926b2a51c..00000000000 --- a/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/Delegation.hs +++ /dev/null @@ -1,861 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveDataTypeable #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE FunctionalDependencies #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE StrictData #-} -{-# LANGUAGE TemplateHaskell #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Byron.Spec.Ledger.Delegation ( - -- * Delegation scheduling - SDELEG, - SDELEGS, - DSState (DSState), - _dSStateScheduledDelegations, - _dSStateKeyEpochDelegations, - DCert (DCert), - delegator, - delegate, - depoch, - dwho, - mkDCert, - signature, - - -- * Delegation activation - ADELEG, - ADELEGS, - DSEnv ( - DSEnv, - _dSEnvAllowedDelegators, - _dSEnvEpoch, - _dSEnvSlot, - _dSEnvK - ), - allowedDelegators, - DState ( - DState, - _dStateDelegationMap, - _dStateLastDelegation - ), - - -- * Delegation interface - DELEG, - DIEnv, - DIState (DIState), - _dIStateDelegationMap, - _dIStateLastDelegation, - _dIStateScheduledDelegations, - _dIStateKeyEpochDelegations, - liveAfter, - EpochDiff (..), - - -- * State lens fields - slot, - epoch, - delegationMap, - - -- * State lens type classes - HasScheduledDelegations, - scheduledDelegations, - dmsL, - - -- * Generators - dcertGen, - dcertsGen, - initialEnvFromGenesisKeys, - randomDCertGen, - - -- * Functions on delegation state - delegatorOf, - - -- * Support Functions for delegation properties - delegatorDelegate, - emptyDelegationPayloadRatio, - thisEpochDelegationsRatio, - nextEpochDelegationsRatio, - selfDelegationsRatio, - multipleDelegationsRatio, - maxDelegationsTo, - changedDelegationsRatio, - maxChangedDelegations, - repeatedDelegationsRatio, - maxRepeatedDelegations, - maxCertsPerBlock, - - -- * Predicate failures - AdelegPredicateFailure (..), - AdelegsPredicateFailure (..), - SdelegPredicateFailure (..), - SdelegsPredicateFailure (..), - MsdelegPredicateFailure (..), - DelegPredicateFailure (..), -) -where - -import Byron.Spec.Ledger.Core ( - BlockCount, - Epoch (Epoch), - HasHash, - Hash (Hash), - Owner (Owner), - Sig, - Slot (Slot), - SlotCount (SlotCount), - VKey (VKey), - VKeyGenesis (VKeyGenesis), - addSlot, - hash, - mkVkGenesisSet, - owner, - range, - unBlockCount, - unVKeyGenesis, - verify, - (∈), - (∉), - (⨃), - ) -import Byron.Spec.Ledger.Core.Generators (epochGen, slotGen) -import qualified Byron.Spec.Ledger.Core.Generators as CoreGen -import Byron.Spec.Ledger.Core.Omniscient (signWithGenesisKey) -import Control.Arrow ((&&&)) -import Control.State.Transition ( - Embed, - Environment, - IRC (IRC), - PredicateFailure, - STS (..), - Signal, - State, - TRC (TRC), - initialRules, - judgmentContext, - trans, - transitionRules, - wrapFailed, - (?!), - ) -import Data.AbstractSize -import Data.Bimap (Bimap, (!>)) -import qualified Data.Bimap as Bimap -import Data.Data (Data, Typeable) -import Data.Hashable (Hashable) -import qualified Data.Hashable as H -import qualified Data.List as List -import Data.List.Unique (count) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Maybe (catMaybes) -import Data.Set (Set, (\\)) -import qualified Data.Set as Set -import Data.Word (Word64, Word8) -import GHC.Generics (Generic) -import Hedgehog (Gen) -import qualified Hedgehog.Gen as Gen -import qualified Hedgehog.Range as Range -import Lens.Micro (Lens', lens, to, (%~), (&), (.~), (<>~), (^.), _1) -import Lens.Micro.TH (makeFields) -import NoThunks.Class (NoThunks (..), allNoThunks, noThunksInKeysAndValues) -import Test.Control.State.Transition.Generator ( - HasTrace, - envGen, - genTrace, - sigGen, - ) -import Test.Control.State.Transition.Trace (TraceOrder (OldestFirst), traceSignals) - --------------------------------------------------------------------------------- --- Abstract types --------------------------------------------------------------------------------- - --- | A delegation certificate. -data DCert = DCert - { delegator :: VKeyGenesis - -- ^ Key that delegates - , delegate :: VKey - -- ^ Key that the delegator is delegating to - , depoch :: Epoch - -- ^ Certificate epoch - , signature :: Sig (VKey, Epoch) - -- ^ Witness for the delegation certificate - } - deriving (Show, Eq, Ord, Generic, Hashable, Data, Typeable, NoThunks) - -instance HasTypeReps DCert - -instance HasHash [DCert] where - hash = Hash . Just . H.hash - -mkDCert :: - VKeyGenesis -> - Sig (VKey, Epoch) -> - VKey -> - Epoch -> - DCert -mkDCert vkg s vkd e = - DCert - { delegator = vkg - , delegate = vkd - , depoch = e - , signature = s - } - --- | Who is delegating to whom. -dwho :: DCert -> (VKeyGenesis, VKey) -dwho = delegator &&& delegate - --- | Part of the delegation certificate that is signed by the delegator. -dbody :: DCert -> (VKey, Epoch) -dbody = delegate &&& depoch - --------------------------------------------------------------------------------- --- Derived types --------------------------------------------------------------------------------- - --- | Delegation scheduling environment -data DSEnv = DSEnv - { _dSEnvAllowedDelegators :: Set VKeyGenesis - -- ^ Set of allowed delegators - , _dSEnvEpoch :: Epoch - -- ^ Current epoch - , _dSEnvSlot :: Slot - -- ^ Current slot - , _dSEnvK :: BlockCount - -- ^ Chain stability parameter - } - deriving (Show, Eq, Generic, NoThunks) - -makeFields ''DSEnv - --- | Delegation scheduling state -data DSState = DSState - { _dSStateScheduledDelegations :: [(Slot, (VKeyGenesis, VKey))] - , _dSStateKeyEpochDelegations :: Set (Epoch, VKeyGenesis) - } - deriving (Show, Eq, Generic, NoThunks) - -makeFields ''DSState - --- | Delegation state -data DState = DState - { _dStateDelegationMap :: Bimap VKeyGenesis VKey - , _dStateLastDelegation :: Map VKeyGenesis Slot - -- ^ When was the last time each genesis key delegated. - } - deriving (Eq, Show, Generic) - -instance NoThunks DState where - wNoThunks ctxt (DState dmap lastDeleg) = - allNoThunks - [ noThunksInKeysAndValues ctxt $ Bimap.toList dmap - , noThunksInKeysAndValues ctxt $ Map.toList lastDeleg - ] - -makeFields ''DState - -delegatorOf :: Bimap VKeyGenesis VKey -> VKey -> Maybe VKeyGenesis -delegatorOf = flip Bimap.lookupR - --- | Interface environment is the same as scheduling environment. -type DIEnv = DSEnv - -data DIState = DIState - { _dIStateDelegationMap :: Bimap VKeyGenesis VKey - , _dIStateLastDelegation :: Map VKeyGenesis Slot - , _dIStateScheduledDelegations :: [(Slot, (VKeyGenesis, VKey))] - , _dIStateKeyEpochDelegations :: Set (Epoch, VKeyGenesis) - } - deriving (Show, Eq, Generic) - -makeFields ''DIState - -instance NoThunks DIState where - wNoThunks ctxt (DIState dmap lastDeleg sds sked) = - allNoThunks - [ noThunksInKeysAndValues ctxt $ Bimap.toList dmap - , noThunksInKeysAndValues ctxt $ Map.toList lastDeleg - , wNoThunks ctxt sds - , wNoThunks ctxt sked - ] - -dmsL :: - HasDelegationMap a (Bimap VKeyGenesis VKey) => - Lens' a (Bimap VKeyGenesis VKey) -dmsL = delegationMap - -dIStateDSState :: Lens' DIState DSState -dIStateDSState = - lens - (\dis -> DSState (dis ^. scheduledDelegations) (dis ^. keyEpochDelegations)) - ( \dis dss -> - dis - & scheduledDelegations - .~ dss - ^. scheduledDelegations - & keyEpochDelegations - .~ dss - ^. keyEpochDelegations - ) - -dIStateDState :: Lens' DIState DState -dIStateDState = - lens - (\dis -> DState (dis ^. delegationMap) (dis ^. lastDelegation)) - ( \dis dss -> - dis - & delegationMap - .~ dss - ^. delegationMap - & lastDelegation - .~ dss - ^. lastDelegation - ) - --------------------------------------------------------------------------------- --- Transition systems --------------------------------------------------------------------------------- - --- | Delegation scheduling rules -data SDELEG deriving (Data, Typeable) - -data EpochDiff = EpochDiff {currentEpoch :: Epoch, certEpoch :: Epoch} - deriving (Eq, Show, Data, Typeable, Generic, NoThunks) - --- | These `PredicateFailure`s are all "throwable". The disjunction of the --- rules' preconditions is not `True` - the `PredicateFailure`s represent --- `False` cases. -data SdelegPredicateFailure - = IsNotGenesisKey - | EpochInThePast EpochDiff - | EpochPastNextEpoch EpochDiff - | HasAlreadyDelegated - | IsAlreadyScheduled - | DoesNotVerify - deriving (Eq, Show, Data, Typeable, Generic, NoThunks) - -instance STS SDELEG where - type State SDELEG = DSState - type Signal SDELEG = DCert - type Environment SDELEG = DSEnv - type PredicateFailure SDELEG = SdelegPredicateFailure - - initialRules = - [ return - DSState - { _dSStateScheduledDelegations = [] - , _dSStateKeyEpochDelegations = Set.empty - } - ] - transitionRules = - [ do - TRC (env, st, cert) <- judgmentContext - verify - (unVKeyGenesis $ delegator cert) - (dbody cert) - (signature cert) - ?! DoesNotVerify - notAlreadyDelegated st cert ?! HasAlreadyDelegated - let d = liveAfter (env ^. k) - notAlreadyScheduled d env st cert ?! IsAlreadyScheduled - Set.member (cert ^. to dwho . _1) (env ^. allowedDelegators) ?! IsNotGenesisKey - env - ^. epoch - <= cert - ^. to depoch - ?! EpochInThePast - EpochDiff - { currentEpoch = env ^. epoch - , certEpoch = cert ^. to depoch - } - cert - ^. to depoch - <= env - ^. epoch - + 1 - ?! EpochPastNextEpoch - EpochDiff - { currentEpoch = env ^. epoch - , certEpoch = cert ^. to depoch - } - return $ - st - & scheduledDelegations - <>~ [ - ( (env ^. slot) `addSlot` d - , cert ^. to dwho - ) - ] - & keyEpochDelegations %~ Set.insert (epochDelegator cert) - ] - where - -- Check that this delegator hasn't already delegated this epoch - notAlreadyDelegated :: DSState -> DCert -> Bool - notAlreadyDelegated st cert = - Set.notMember (epochDelegator cert) (st ^. keyEpochDelegations) - - epochDelegator :: DCert -> (Epoch, VKeyGenesis) - epochDelegator cert = (cert ^. to depoch, cert ^. to dwho . _1) - - -- Check whether there is a scheduled delegation from this key - notAlreadyScheduled :: SlotCount -> DSEnv -> DSState -> DCert -> Bool - notAlreadyScheduled d env st cert = - List.notElem - ((env ^. slot) `addSlot` d, cert ^. to dwho . _1) - (st ^. scheduledDelegations . to (fmap $ fmap fst)) - --- | Compute after which slot the delegation certificate will become live, --- using the chain stability parameter. -liveAfter :: BlockCount -> SlotCount -liveAfter bc = SlotCount $ 2 * unBlockCount bc - --- | None of these `PredicateFailure`s are actually "throwable". The --- disjuction of the rules' preconditions is `True`, which means that one of --- them will pass. The `PredicateFailure` just act as switches to direct --- control flow to the successful one. -data AdelegPredicateFailure - = S_BeforeExistingDelegation - | S_NoLastDelegation - | S_AfterExistingDelegation - | S_AlreadyADelegateOf VKey VKeyGenesis - deriving (Eq, Show, Data, Typeable, Generic, NoThunks) - --- | Delegation rules -data ADELEG deriving (Data, Typeable) - -instance STS ADELEG where - type State ADELEG = DState - type Signal ADELEG = (Slot, (VKeyGenesis, VKey)) - type Environment ADELEG = Set VKeyGenesis - type PredicateFailure ADELEG = AdelegPredicateFailure - - initialRules = - [ do - IRC env <- judgmentContext - return - DState - { _dStateDelegationMap = - Bimap.fromList $ - map (\vkg@(VKeyGenesis key) -> (vkg, key)) (Set.toList env) - , _dStateLastDelegation = Map.fromSet (const (Slot 0)) env - } - ] - - transitionRules = - [ do - TRC - ( _env - , DState - { _dStateDelegationMap = dms - , _dStateLastDelegation = dws - } - , (s, (vks, vkd)) - ) <- - judgmentContext - vkd ∉ range dms ?! S_AlreadyADelegateOf vkd (dms !> vkd) - case Map.lookup vks dws of - Nothing -> pure () -- If vks hasn't delegated, then we proceed and - -- update the @ADELEG@ state. - Just sp -> sp < s ?! S_BeforeExistingDelegation - return $! - DState - { _dStateDelegationMap = dms ⨃ [(vks, vkd)] - , _dStateLastDelegation = dws ⨃ [(vks, s)] - } - , do - TRC - ( _env - , st@DState - { _dStateDelegationMap = dms - , _dStateLastDelegation = dws - } - , (s, (vks, vkd)) - ) <- - judgmentContext - if vkd ∈ range dms - then return st - else do - case Map.lookup vks dws of - Just sp -> sp >= s ?! S_AfterExistingDelegation - Nothing -> - error $ - "This can't happen since otherwise " - ++ "the previous rule would have been triggered." - return st - ] - --- | Delegation scheduling sequencing -data SDELEGS deriving (Data, Typeable) - -data SdelegsPredicateFailure - = SDelegFailure (PredicateFailure SDELEG) - deriving (Eq, Show, Data, Typeable, Generic, NoThunks) - -instance STS SDELEGS where - type State SDELEGS = DSState - type Signal SDELEGS = [DCert] - type Environment SDELEGS = DSEnv - type PredicateFailure SDELEGS = SdelegsPredicateFailure - - initialRules = - [ do - IRC env <- judgmentContext - trans @SDELEG $ IRC env - ] - transitionRules = - [ do - TRC (env, st, sig) <- judgmentContext - case sig of - [] -> return st - (x : xs) -> do - dss' <- trans @SDELEG $ TRC (env, st, x) - dss'' <- trans @SDELEGS $ TRC (env, dss', xs) - return dss'' - ] - -instance Embed SDELEG SDELEGS where - wrapFailed = SDelegFailure - --- | Delegation rules sequencing -data ADELEGS deriving (Data, Typeable) - -data AdelegsPredicateFailure - = ADelegFailure (PredicateFailure ADELEG) - deriving (Eq, Show, Data, Typeable, Generic, NoThunks) - -instance STS ADELEGS where - type State ADELEGS = DState - type Signal ADELEGS = [(Slot, (VKeyGenesis, VKey))] - type Environment ADELEGS = Set VKeyGenesis - - type - PredicateFailure ADELEGS = - AdelegsPredicateFailure - - initialRules = - [ do - IRC env <- judgmentContext - trans @ADELEG $ IRC env - ] - transitionRules = - [ do - TRC (env, st, sig) <- judgmentContext - case sig of - [] -> return st - (x : xs) -> do - ds' <- trans @ADELEG $ TRC (env, st, x) - ds'' <- trans @ADELEGS $ TRC (env, ds', xs) - return ds'' - ] - -instance Embed ADELEG ADELEGS where - wrapFailed = ADelegFailure - --- | Delegation interface -data DELEG deriving (Data, Typeable) - -data DelegPredicateFailure - = SDelegSFailure (PredicateFailure SDELEGS) - | ADelegSFailure (PredicateFailure ADELEGS) - deriving (Eq, Show, Data, Typeable, Generic, NoThunks) - -instance STS DELEG where - type State DELEG = DIState - type Signal DELEG = [DCert] - type Environment DELEG = DIEnv - - type PredicateFailure DELEG = DelegPredicateFailure - - initialRules = - [ do - IRC env <- judgmentContext - initADelegsState <- trans @ADELEGS $ IRC (env ^. allowedDelegators) - initSDelegsState <- trans @SDELEGS $ IRC env - pure $! - DIState - { _dIStateDelegationMap = initADelegsState ^. delegationMap - , _dIStateLastDelegation = initADelegsState ^. lastDelegation - , _dIStateScheduledDelegations = initSDelegsState ^. scheduledDelegations - , _dIStateKeyEpochDelegations = initSDelegsState ^. keyEpochDelegations - } - ] - transitionRules = - [ do - TRC (env, st, sig) <- judgmentContext - sds <- trans @SDELEGS $ TRC (env, st ^. dIStateDSState, sig) - let slots = filter ((<= (env ^. slot)) . fst) $ sds ^. scheduledDelegations - as <- trans @ADELEGS $ TRC (env ^. allowedDelegators, st ^. dIStateDState, slots) - return $ - DIState - (as ^. delegationMap) - (as ^. lastDelegation) - ( filter (((env ^. slot) `addSlot` 1 <=) . fst) $ - sds ^. scheduledDelegations - ) - ( Set.filter ((env ^. epoch <=) . fst) $ - sds ^. keyEpochDelegations - ) - ] - -instance Embed SDELEGS DELEG where - wrapFailed = SDelegSFailure - -instance Embed ADELEGS DELEG where - wrapFailed = ADelegSFailure - --------------------------------------------------------------------------------- --- Generators --------------------------------------------------------------------------------- - -dcertGen :: DSEnv -> Set (Epoch, VKeyGenesis) -> Gen (Maybe DCert) -dcertGen env eks = - let allowed :: [VKeyGenesis] - allowed = Set.toList (_dSEnvAllowedDelegators env) - -- We can generate delegation certificates using the allowed delegators, - -- and we can delegate for the current or next epoch only. - preCandidates :: Set (Epoch, VKeyGenesis) - preCandidates = - Set.fromList $ - zip (repeat $ _dSEnvEpoch env) allowed - ++ zip (repeat $ _dSEnvEpoch env + 1) allowed - -- We obtain the candidates by removing the ones that already delegated in - -- this or next epoch. - candidates :: [(Epoch, VKeyGenesis)] - candidates = Set.toList $ preCandidates \\ eks - -- Next, we choose to whom these keys delegate. - target :: [VKey] - -- NOTE: we might want to make this configurable for now we chose an upper - -- bound equal to two times the number of genesis keys to increase the - -- chance of having two genesis keys delegating to the same key. - target = VKey . Owner <$> [0 .. (2 * fromIntegral (length allowed))] - - mkDCert' ((e, vkg), vk) = mkDCert vkg (signWithGenesisKey vkg (vk, e)) vk e - in if null candidates - then return Nothing - else Just <$> Gen.element (mkDCert' <$> zip candidates target) - -dcertsGen :: DSEnv -> DIState -> Gen [DCert] -dcertsGen env st = - -- This generator can result in an empty list of delegation certificates if - -- no delegation certificates can be produced, according to the delegation - -- rules, given the initial state and environment. - catMaybes . traceSignals OldestFirst <$> genTrace @MSDELEG () n env subSt (sigGen @MSDELEG) - where - n = env ^. allowedDelegators . to length . to fromIntegral - subSt = - DSState - { _dSStateScheduledDelegations = _dIStateScheduledDelegations st - , _dSStateKeyEpochDelegations = _dIStateKeyEpochDelegations st - } - --- | Generate a random delegation certificate, which has a high probability of failing since --- we do not consider the current delegation state. So for instance, we could generate a --- delegation certificate for a genesis key that already delegated in this epoch. -randomDCertGen :: Environment DELEG -> Gen DCert -randomDCertGen env = do - (vkg, vk, e) <- (,,) <$> vkgGen' <*> vkGen' <*> epochGen' - pure $! mkDCert vkg (signWithGenesisKey vkg (vk, e)) vk e - where - vkgGen' = Gen.element $ Set.toList allowed - allowed = _dSEnvAllowedDelegators env - vkGen' = Gen.element $ VKey . Owner <$> [0 .. (2 * fromIntegral (length allowed))] - epochGen' = - Epoch - . fromIntegral -- We don't care about underflow. We want to generate large epochs anyway. - . (fromIntegral n +) - <$> Gen.integral (Range.constant (-2 :: Int) 2) - where - Epoch n = _dSEnvEpoch env - --- | Dummy transition system needed for generating sequences of delegation certificates. -data MSDELEG deriving (Data, Typeable) - -data MsdelegPredicateFailure = SDELEGFailure (PredicateFailure SDELEG) - deriving (Eq, Show, Data, Typeable, Generic, NoThunks) - -instance STS MSDELEG where - type Environment MSDELEG = DSEnv - type State MSDELEG = DSState - type Signal MSDELEG = Maybe DCert - type PredicateFailure MSDELEG = MsdelegPredicateFailure - - initialRules = [] - - transitionRules = - [ do - TRC (env, st, msig) <- judgmentContext - case msig of - Nothing -> pure st - Just sig -> trans @SDELEG $ TRC (env, st, sig) - ] - -instance Embed SDELEG MSDELEG where - wrapFailed = SDELEGFailure - -instance HasTrace MSDELEG where - envGen = delegEnvGen - - sigGen env st = dcertGen env (_dSStateKeyEpochDelegations st) - -instance HasTrace DELEG where - envGen = delegEnvGen - - sigGen = dcertsGen - -delegEnvGen :: Word64 -> Gen DSEnv -delegEnvGen chainLength = do - ngk <- Gen.integral (Range.linear 1 14) - initialEnvFromGenesisKeys ngk chainLength - --- | Generate an initial 'DELEG' environment from the given number of genesis --- keys. -initialEnvFromGenesisKeys :: - -- | Number of genesis keys. - Word8 -> - -- | Chain length - Word64 -> - Gen DSEnv -initialEnvFromGenesisKeys ngk chainLength = - DSEnv - -- We need at least one delegator in the environment to be able to generate - -- delegation certificates. - -- - -- The use of a linear generator and its bound is rather arbitrary. The - -- sizes passed to the `Gen` monad would be around 100~300, so we rather - -- arbitrarily decided that this size times 100 is a reasonable upper - -- bounds for epochs. - -- - -- A similar remark applies to the ranges chosen for slot and slot count - -- generators. - <$> pure (mkVkGenesisSet ngk) - <*> epochGen 0 10 - <*> slotGen 0 100 - <*> CoreGen.k chainLength (chainLength `div` 10) - --------------------------------------------------------------------------------- --- Shared support functions for Delegation Properties --------------------------------------------------------------------------------- - -delegatorDelegate :: DCert -> (VKeyGenesis, VKey) -delegatorDelegate = delegator &&& delegate - -ratioInt :: Int -> Int -> Double -ratioInt x y = - fromIntegral x / fromIntegral y - --- | Transforms the list and returns the ratio of lengths of --- the transformed and original lists. -lenRatio :: ([a] -> [b]) -> [a] -> Double -lenRatio f xs = - ratioInt - (length (f xs)) - (length xs) - --- | True if the tuple count (snd item) is >= 2 -multiple :: (a, Int) -> Bool -multiple = (2 <=) . snd - --- | Count the number of delegates/delegators in the given certificates -delegateCounter :: - Ord a => - ((VKeyGenesis, VKey) -> a) -> - [DCert] -> - [(a, Int)] -delegateCounter pick certs = - fmap delegatorDelegate certs - -- Remove duplicated elements, since we're not - -- interested in repeated delegations - & List.nub - -- Select the (unique) delegate/delegators - & fmap pick - -- If we have more than one occurrence, then there were - -- multiple delegations from/to that delegate - & count - --- | Count the number of times each delegate was delegated to -delegateCounts :: [DCert] -> [(VKey, Int)] -delegateCounts = delegateCounter snd - --- | Count the number of times each delegator changed their delegation -delegatorCounts :: [DCert] -> [(VKeyGenesis, Int)] -delegatorCounts = delegateCounter fst - --- | Ratio of certificate groups that are empty -emptyDelegationPayloadRatio :: [[DCert]] -> Double -emptyDelegationPayloadRatio = - lenRatio (filter null) - --- | Ratio of certificates that delegate to _this_ epoch, where --- each certificate is represented by (current epoch,cert epoch) -thisEpochDelegationsRatio :: [(Epoch, Epoch)] -> Double -thisEpochDelegationsRatio = - lenRatio (filter thisEpoch) - where - thisEpoch = uncurry (==) - --- | Ratio of certificates that delegate to the _next_ epoch, where --- each certificate is represented by (current epoch,cert epoch) -nextEpochDelegationsRatio :: [(Epoch, Epoch)] -> Double -nextEpochDelegationsRatio = - lenRatio (filter nextEpoch) - where - nextEpoch (e0, e1) = e0 + 1 == e1 - --- | Ratio of certificates that "delegate to self", that is, --- where the delegator and delegate are the same -selfDelegationsRatio :: [DCert] -> Double -selfDelegationsRatio = - lenRatio (filter selfDeleg . fmap delegatorDelegate) - where - selfDeleg (vks, vk) = owner vks == owner vk - --- | Ratio of delegates that have multiple delegators --- that are delegating to them -multipleDelegationsRatio :: [DCert] -> Double -multipleDelegationsRatio dcerts = - lenRatio (filter multiple) (delegateCounts dcerts) - --- | The maximum number of delegators to any particular delegate -maxDelegationsTo :: [DCert] -> Int -maxDelegationsTo dcerts = - case filter multiple (delegateCounts dcerts) of - [] -> 1 - xs -> List.maximum (snd <$> xs) - --- | Ratio of delegators that have changed their delegations -changedDelegationsRatio :: [DCert] -> Double -changedDelegationsRatio dcerts = - lenRatio (filter multiple) (delegatorCounts dcerts) - --- | The maximum number of change-of-delegate for any particular delegator -maxChangedDelegations :: [DCert] -> Int -maxChangedDelegations dcerts = - case filter multiple (delegateCounts dcerts) of - [] -> 1 - xs -> List.maximum (snd <$> xs) - --- | Ratio of repeated delegations to all delegations -repeatedDelegationsRatio :: [DCert] -> Double -repeatedDelegationsRatio dcerts = - fmap delegatorDelegate dcerts - & count - & lenRatio (filter multiple) - --- | The maximum number of repeated delegations in the given certificates -maxRepeatedDelegations :: [DCert] -> Int -maxRepeatedDelegations dcerts = - case filter multiple ds of - [] -> 1 - xs -> List.maximum (snd <$> xs) - where - ds = count (fmap delegatorDelegate dcerts) - -maxCertsPerBlock :: [[DCert]] -> Int -maxCertsPerBlock groupedCerts = - case groupedCerts of - [] -> 0 - _ -> List.maximum (length <$> groupedCerts) diff --git a/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/Delegation/Test.hs b/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/Delegation/Test.hs deleted file mode 100644 index 341d2504670..00000000000 --- a/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/Delegation/Test.hs +++ /dev/null @@ -1,32 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE TypeApplications #-} - -module Byron.Spec.Ledger.Delegation.Test (coverDelegFailures) where - -import Byron.Spec.Ledger.Delegation -import Data.Data (Data) -import GHC.Stack (HasCallStack) -import Hedgehog (MonadTest) -import Hedgehog.Internal.Property (CoverPercentage) -import qualified Test.Control.State.Transition.Generator as Generator - -coverDelegFailures :: - forall m a. - ( MonadTest m - , HasCallStack - , Data a - ) => - CoverPercentage -> - a -> - m () -coverDelegFailures coverPercentage = - Generator.coverFailures @_ @SDELEG - coverPercentage - [ EpochInThePast (EpochDiff 0 0) -- The value here is ignored, only the constructor is compared - , EpochPastNextEpoch (EpochDiff 0 0) -- The value here is ignored, only the constructor is compared - , IsAlreadyScheduled - , IsNotGenesisKey - , HasAlreadyDelegated - , DoesNotVerify - ] diff --git a/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/GlobalParams.hs b/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/GlobalParams.hs deleted file mode 100644 index 816eccca3fe..00000000000 --- a/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/GlobalParams.hs +++ /dev/null @@ -1,41 +0,0 @@ --- | Ledger global parameters. -module Byron.Spec.Ledger.GlobalParams ( - epochFirstSlot, - lovelaceCap, - slotsPerEpoch, - slotsPerEpochToK, - c, -) -where - -import Byron.Spec.Ledger.Core (BlockCount (BlockCount), Epoch (..), Slot (..), lovelaceCap) -import Data.Word (Word64) - --- | Given the chain stability parameter, often referred to as @k@, which is --- expressed in an amount of blocks, return the number of slots contained in an --- epoch. -slotsPerEpoch :: Integral n => BlockCount -> n -slotsPerEpoch (BlockCount bc) = fromIntegral $ bc * 10 - --- | The inverse of 'slotsPerEpoch': given a number of slots per-epoch, return --- the chain stability parameter @k@. -slotsPerEpochToK :: Integral n => n -> BlockCount -slotsPerEpochToK n = BlockCount $ floor $ (fromIntegral n :: Double) / 10 - --- | Given the chain stability parameter, calculate the first slot in a given --- epoch. -epochFirstSlot :: BlockCount -> Epoch -> Slot -epochFirstSlot bc (Epoch epochs) = Slot $ epochs * slotsPerEpoch bc - --- | Factor used to bound the concrete size by the abstract size. --- --- This constant should satisfy that given an elaboration function 'elaborate' --- which elaborates abstract values intro concrete ones, for each abstract data --- value 'a' we have: --- --- > size (elaborate a) <= c * abstractSize a --- --- TODO: we need to investigate what this factor is, and probably use different --- factors for different data types (update, UTxO transactions, etc). -c :: Word64 -c = 4096 diff --git a/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/STS/UTXO.hs b/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/STS/UTXO.hs deleted file mode 100644 index 5ab9e290036..00000000000 --- a/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/STS/UTXO.hs +++ /dev/null @@ -1,117 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveDataTypeable #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE StrictData #-} -{-# LANGUAGE TemplateHaskell #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - --- | UTXO transition system -module Byron.Spec.Ledger.STS.UTXO ( - UTXO, - UTxOEnv (UTxOEnv), - UTxOState (UTxOState), - UtxoPredicateFailure (..), - PredicateFailure, - utxo, - utxo0, - pps, - reserves, -) -where - -import Byron.Spec.Ledger.Core (Lovelace, dom, range, (∪), (⊆), (⋪), (◁)) -import Byron.Spec.Ledger.GlobalParams (lovelaceCap) -import Byron.Spec.Ledger.UTxO (Tx, UTxO, balance, body, pcMinFee, txins, txouts, unUTxO, value) -import Byron.Spec.Ledger.Update (PParams) -import Control.State.Transition ( - Environment, - IRC (IRC), - PredicateFailure, - STS (..), - Signal, - State, - TRC (TRC), - initialRules, - judgmentContext, - transitionRules, - (?!), - ) -import Data.Data (Data, Typeable) -import qualified Data.Set as Set -import GHC.Generics (Generic) -import NoThunks.Class (NoThunks (..)) - -data UTXO deriving (Data, Typeable) - -data UTxOEnv = UTxOEnv - { utxo0 :: UTxO - , pps :: PParams - } - deriving (Eq, Show, Generic, NoThunks) - -data UTxOState = UTxOState - { utxo :: UTxO - , reserves :: Lovelace - } - deriving (Eq, Show, Generic, NoThunks) - --- | These `PredicateFailure`s are all "throwable". The disjunction of the --- rules' preconditions is not `True` - the `PredicateFailure`s represent --- `False` cases. -data UtxoPredicateFailure - = EmptyTxInputs - | EmptyTxOutputs - | FeeTooLow - | IncreasedTotalBalance - | InputsNotInUTxO - | NonPositiveOutputs - deriving (Eq, Show, Data, Typeable, Generic, NoThunks) - -instance STS UTXO where - type Environment UTXO = UTxOEnv - type State UTXO = UTxOState - type Signal UTXO = Tx - type PredicateFailure UTXO = UtxoPredicateFailure - - initialRules = - [ do - IRC UTxOEnv {utxo0} <- judgmentContext - return $ - UTxOState - { utxo = utxo0 - , reserves = lovelaceCap - balance utxo0 - } - ] - transitionRules = - [ do - TRC - ( UTxOEnv _ pps - , UTxOState {utxo, reserves} - , tx - ) <- - judgmentContext - - let ins = txins $ body tx - outs = txouts $ body tx - - ins ⊆ dom utxo ?! InputsNotInUTxO - - let fee = balance (ins ◁ utxo) - balance outs - - pcMinFee pps tx <= fee ?! FeeTooLow - - (not . null) ins ?! EmptyTxInputs - - (not . null . unUTxO) outs ?! EmptyTxOutputs - - let outputValues = fmap value $ Set.toList $ range outs - all (0 <) outputValues ?! NonPositiveOutputs - - return $ - UTxOState - { utxo = (ins ⋪ utxo) ∪ outs - , reserves = reserves + fee - } - ] diff --git a/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/STS/UTXOW.hs b/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/STS/UTXOW.hs deleted file mode 100644 index 17ddb211550..00000000000 --- a/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/STS/UTXOW.hs +++ /dev/null @@ -1,165 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveDataTypeable #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StrictData #-} -{-# LANGUAGE TemplateHaskell #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - --- | UTXO transition system with witnessing -module Byron.Spec.Ledger.STS.UTXOW where - -import Byron.Spec.Ledger.Core (Addr (Addr), VKey, mkAddr, verify) -import Byron.Spec.Ledger.STS.UTXO -import Byron.Spec.Ledger.UTxO ( - Tx (..), - TxIn, - TxOut (TxOut), - UTxO (UTxO), - Wit (Wit), - fromTxOuts, - inputs, - pcMinFee, - ) -import qualified Byron.Spec.Ledger.UTxO.Generators as UTxOGen -import qualified Byron.Spec.Ledger.Update.Generators as UpdateGen -import Control.State.Transition ( - Embed, - Environment, - IRC (IRC), - STS (..), - Signal, - State, - TRC (TRC), - initialRules, - judgmentContext, - trans, - transitionRules, - wrapFailed, - (?!), - ) -import Data.Data (Data, Typeable) -import qualified Data.Map as Map -import GHC.Generics (Generic) -import GHC.Stack (HasCallStack) -import Hedgehog (MonadTest) -import Hedgehog.Internal.Property (CoverPercentage) -import NoThunks.Class (NoThunks (..)) -import Test.Control.State.Transition.Generator ( - HasTrace, - coverFailures, - envGen, - sigGen, - ) - -data UTXOW deriving (Data, Typeable) - --- | These `PredicateFailure`s are all throwable. -data UtxowPredicateFailure - = UtxoFailure (PredicateFailure UTXO) - | InsufficientWitnesses - deriving (Eq, Show, Data, Typeable, Generic, NoThunks) - -instance STS UTXOW where - type Environment UTXOW = UTxOEnv - type State UTXOW = UTxOState - type Signal UTXOW = Tx - type PredicateFailure UTXOW = UtxowPredicateFailure - - initialRules = - [ do - IRC env <- judgmentContext - trans @UTXO $ IRC env - ] - - transitionRules = - [ do - TRC (env, utxoSt@UTxOState {utxo}, tw) <- judgmentContext - witnessed tw utxo ?! InsufficientWitnesses - utxoSt' <- trans @UTXO $ TRC (env, utxoSt, tw) - return utxoSt' - ] - --- | Determine if a UTxO input is authorized by a given key. -authTxin :: VKey -> TxIn -> UTxO -> Bool -authTxin key txin (UTxO utxo) = case Map.lookup txin utxo of - Just (TxOut (Addr pay) _) -> key == pay - _ -> False - --- | Given a ledger state, determine if the UTxO witnesses in a given --- transaction are sufficient. --- TODO - should we only check for one witness for each unique input address? -witnessed :: Tx -> UTxO -> Bool -witnessed (Tx tx wits) utxo = - length wits == length ins && all (isWitness tx utxo) (zip ins wits) - where - ins = inputs tx - isWitness tx' unspent (input, Wit key sig) = - verify key tx' sig && authTxin key input unspent - -instance Embed UTXO UTXOW where - wrapFailed = UtxoFailure - --- | Constant list of addresses intended to be used in the generators. -traceAddrs :: [Addr] -traceAddrs = mkAddr <$> [0 .. 10] - -instance HasTrace UTXOW where - envGen _ = - UTxOEnv <$> genUTxO <*> UpdateGen.pparamsGen - where - genUTxO = do - txOuts <- UTxOGen.genInitialTxOuts traceAddrs - -- All the outputs in the initial UTxO need to refer to some - -- transaction id. Since there are no transactions where these outputs - -- come from we use the hash of the address as transaction id. - pure $ fromTxOuts txOuts - - sigGen UTxOEnv {pps} st = - UTxOGen.genTxFromUTxO traceAddrs (pcMinFee pps) (utxo st) - --------------------------------------------------------------------------------- --- Hedgehog coverage checking --------------------------------------------------------------------------------- - --- | Check that all the relevant predicate failures are covered. -coverUtxoFailure :: - forall m a. - ( MonadTest m - , HasCallStack - , Data a - ) => - -- | Minimum percentage that each failure must occur. - CoverPercentage -> - -- | Structure containing the failures - a -> - m () -coverUtxoFailure coverPercentage someData = do - coverFailures @_ @UTXOW - coverPercentage - [ InsufficientWitnesses - ] - someData - - coverFailures @_ @UTXO - coverPercentage - [ FeeTooLow - , InputsNotInUTxO - ] - someData - --- We do not check coverage of `EmptyTxInputs` & `EmptyTxOutputs`, because --- they such transactions are not constructible in `cardano-ledger`'s types, --- due to usage of `NonEmpty` for the lists of `TxIn` and `TxOut`. --- --- We do not check coverage of `NonPositiveOutputs` because it is not --- possible to represent a non-positive Lovelace value in a `TxOut` since --- there is bounds-checking on all constructions of `Lovelace` values. --- --- We do not check coverage of `IncreasedTotalBalance` because it is not --- throwable. diff --git a/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/STS/UTXOWS.hs b/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/STS/UTXOWS.hs deleted file mode 100644 index dce24a33eef..00000000000 --- a/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/STS/UTXOWS.hs +++ /dev/null @@ -1,76 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveDataTypeable #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StrictData #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - --- | Transition system that models the application of multiple transactions to --- the UTxO part of the ledger state. -module Byron.Spec.Ledger.STS.UTXOWS where - -import Byron.Spec.Ledger.STS.UTXO (UTxOEnv, UTxOState) -import Byron.Spec.Ledger.STS.UTXOW (UTXOW) -import Byron.Spec.Ledger.UTxO (Tx) -import Control.State.Transition ( - Embed, - Environment, - IRC (IRC), - PredicateFailure, - STS (..), - Signal, - State, - TRC (TRC), - initialRules, - judgmentContext, - trans, - transitionRules, - wrapFailed, - ) -import Data.Data (Data, Typeable) -import GHC.Generics (Generic) -import NoThunks.Class (NoThunks (..)) -import Test.Control.State.Transition.Generator (HasTrace, envGen, genTrace, sigGen) -import Test.Control.State.Transition.Trace (TraceOrder (OldestFirst), traceSignals) - -data UTXOWS deriving (Data, Typeable) - -data UtxowsPredicateFailure - = UtxowFailure (PredicateFailure UTXOW) - deriving (Eq, Show, Data, Typeable, Generic, NoThunks) - -instance STS UTXOWS where - type State UTXOWS = UTxOState - type Signal UTXOWS = [Tx] - type Environment UTXOWS = UTxOEnv - type PredicateFailure UTXOWS = UtxowsPredicateFailure - - initialRules = - [ do - IRC env <- judgmentContext - trans @UTXOW $ IRC env - ] - - transitionRules = - [ do - TRC (env, utxo, txWits) <- judgmentContext - case (txWits :: [Tx]) of - [] -> return utxo - (tx : gamma) -> do - utxo' <- trans @UTXOW $ TRC (env, utxo, tx) - utxo'' <- trans @UTXOWS $ TRC (env, utxo', gamma) - return utxo'' - ] - -instance Embed UTXOW UTXOWS where - wrapFailed = UtxowFailure - -instance HasTrace UTXOWS where - envGen = envGen @UTXOW - - -- We generate signal for UTXOWS as a list of signals from UTXOW - sigGen env st = - traceSignals OldestFirst <$> genTrace @UTXOW () 20 env st (sigGen @UTXOW) diff --git a/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/UTxO.hs b/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/UTxO.hs deleted file mode 100644 index a259fe292dc..00000000000 --- a/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/UTxO.hs +++ /dev/null @@ -1,215 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveDataTypeable #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StrictData #-} -{-# LANGUAGE TemplateHaskell #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-redundant-constraints #-} - -module Byron.Spec.Ledger.UTxO where - -import Byron.Spec.Ledger.Core hiding ((<|)) -import Byron.Spec.Ledger.Update (FactorA (..), FactorB (..), PParams (PParams), _factorA, _factorB) -import Data.AbstractSize (HasTypeReps, abstractSize) -import Data.Data (Data, Typeable) -import Data.Hashable (Hashable) -import qualified Data.Hashable as H -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Maybe (fromMaybe) -import Data.Typeable (typeOf) -import GHC.Generics (Generic) -import NoThunks.Class (NoThunks (..)) -import Numeric.Natural (Natural) - --- | A unique ID of a transaction, which is computable from the transaction. -newtype TxId = TxId {getTxId :: Hash} - deriving stock (Show, Generic, Data, Typeable) - deriving newtype (Eq, Ord, Hashable, NoThunks) - deriving anyclass (HasTypeReps) - --- | The input of a UTxO. --- --- * __TODO__ - is it okay to use list indices instead of implementing the Ix Type? -data TxIn = TxIn TxId Natural - deriving - ( Show - , Eq - , Ord - , Generic - , Hashable - , HasTypeReps - , Data - , Typeable - , NoThunks - ) - --- | The output of a UTxO. -data TxOut = TxOut - { addr :: Addr - , value :: Lovelace - } - deriving - ( Show - , Eq - , Ord - , Generic - , Hashable - , HasTypeReps - , Data - , Typeable - , NoThunks - ) - --- | The unspent transaction outputs. -newtype UTxO = UTxO - { unUTxO :: Map TxIn TxOut - } - deriving stock (Show, Data, Typeable) - deriving newtype (Eq, Relation, Semigroup, Monoid, NoThunks) - --- | Apply function uniformly across all outputs -mapUTxOValues :: (Lovelace -> Lovelace) -> UTxO -> UTxO -mapUTxOValues f (UTxO utxo) = UTxO (f' <$> utxo) - where - f' :: TxOut -> TxOut - f' (TxOut addr value) = TxOut addr (f value) - -addValue :: TxOut -> Lovelace -> TxOut -addValue tx@TxOut {value} d = tx {value = value + d} - --- | Construct a UTxO from initial TxOuts -fromTxOuts :: [TxOut] -> UTxO -fromTxOuts = UTxO . Map.fromList . fmap (\out -> (TxIn (mkId out) 0, out)) - where - mkId = TxId . hash . addr - --- | A raw transaction -data TxBody = TxBody - { inputs :: [TxIn] - , outputs :: [TxOut] - } - deriving - ( Eq - , Show - , Ord - , Generic - , Hashable - , HasTypeReps - , Data - , Typeable - , NoThunks - ) - -txid :: TxBody -> TxId -txid = TxId . hash - --- | Total value of a transaction. -txValue :: TxBody -> Lovelace -txValue TxBody {outputs} = sum $ fmap value outputs - --- | Compute the UTxO inputs of a transaction. -txins :: TxBody -> [TxIn] -txins = inputs - --- | Compute the UTxO outputs of a transaction. -txouts :: TxBody -> UTxO -txouts tx = - UTxO $ - Map.fromList - [(TxIn transId idx, out) | (out, idx) <- zip (outputs tx) [0 ..]] - where - transId = txid tx - --- | Determine the total balance contained in the UTxO. -balance :: UTxO -> Lovelace -balance (UTxO utxo) = Map.foldl' addValues mempty utxo - where - addValues b (TxOut _ a) = b <> a - -instance Byron.Spec.Ledger.Core.HasHash TxBody where - hash = Hash . Just . H.hash - ---------------------------------------------------------------------------------- --- UTxO transitions ---------------------------------------------------------------------------------- - -pcMinFee :: PParams -> Tx -> Lovelace -pcMinFee PParams {_factorA = FactorA a, _factorB = FactorB b} tx = - fromIntegral $ a + b * txsize tx - -txsize :: Tx -> Int -txsize = abstractSize costs - where - costs = - Map.fromList - [ (typeOf (undefined :: TxIn), 1) - , (typeOf (undefined :: TxOut), 1) - , (typeOf (undefined :: Wit), 1) - ] - ---------------------------------------------------------------------------------- --- UTxO transitions ---------------------------------------------------------------------------------- - --- | Proof/Witness that a transaction is authorized by the given key holder. -data Wit = Wit VKey (Sig TxBody) - deriving - ( Show - , Eq - , Ord - , Generic - , Hashable - , HasTypeReps - , Data - , Typeable - , NoThunks - ) - --- | A fully formed transaction. -data Tx = Tx - { body :: TxBody - , witnesses :: [Wit] - } - deriving - ( Show - , Eq - , Generic - , Hashable - , HasTypeReps - , Data - , Typeable - , NoThunks - ) - -instance HasHash [Tx] where - hash = Hash . Just . H.hash - --- | Create a witness for transaction -makeWitness :: KeyPair -> TxBody -> Wit -makeWitness keys tx = Wit (vKey keys) (sign (sKey keys) tx) - -makeTxWits :: UTxO -> TxBody -> Tx -makeTxWits (UTxO utxo) tx = - Tx - { body = tx - , witnesses = wits - } - where - getKey txin = - let TxOut (Addr (VKey o)) _ = - fromMaybe - (error "makeTxWits: Missing output for transaction input") - $ Map.lookup txin utxo - in KeyPair (SKey o) (VKey o) - keys = getKey <$> inputs tx - wits = makeWitness <$> keys <*> pure tx diff --git a/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/UTxO/Generators.hs b/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/UTxO/Generators.hs deleted file mode 100644 index 061af1a5e02..00000000000 --- a/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/UTxO/Generators.hs +++ /dev/null @@ -1,369 +0,0 @@ -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE ScopedTypeVariables #-} - -module Byron.Spec.Ledger.UTxO.Generators where - -import Byron.Spec.Ledger.Core hiding (Range, range) -import Byron.Spec.Ledger.UTxO -import Control.Applicative (empty) -import Data.Bitraversable (bitraverse) -import qualified Data.Map.Strict as M -import Hedgehog (Gen, Property, Range, assert, forAll, property, (===)) -import qualified Hedgehog.Gen as Gen -import Hedgehog.Internal.Gen ( - atLeast, - ensure, - mapGenT, - runDiscardEffectT, - toTree, - toTreeMaybeT, - ) -import Hedgehog.Internal.Tree (NodeT (..), TreeT (..), treeValue) -import qualified Hedgehog.Internal.Tree as Tree -import qualified Hedgehog.Range as Range - --------------------------------------------------------------------------------- --- Initial TxOut generator --------------------------------------------------------------------------------- - --- | Generate a set of initial 'TxOut's from a set of 'Addr's -genInitialTxOuts :: [Addr] -> Gen [TxOut] -genInitialTxOuts = - Gen.filter (not . null) - . genTraverseSubsequence (\a -> TxOut a <$> genLovelace) - -genLovelace :: Gen Lovelace -genLovelace = - Lovelace . fromIntegral <$> Gen.word32 (Range.linearFrom mid mn mx) - where - mn = 1 - mx = 10000 - mid = floor (fromIntegral (mx - mn) / 2 :: Double) - --- | Generate a subsequence of a list of values and traverse the subsequence --- with a generator producer -genTraverseSubsequence :: (a -> Gen b) -> [a] -> Gen [b] -genTraverseSubsequence genA as = - mapGenT (TreeT . (interleaveTreeT . nodeValue =<<) . runTreeT) $ do - sub <- Gen.subsequence as - traverse (toTreeMaybeT . genA) sub - --- | Generate a list using 'genTraverseSubsequence' -genList :: Range Int -> Gen a -> Gen [a] -genList range gen = Gen.sized $ \gSize -> - ensure (atLeast $ Range.lowerBound gSize range) $ - genTraverseSubsequence - (const gen) - (replicate (Range.upperBound gSize range) ()) - --- | Temporarily defined here until hedgehog exposes this function -interleaveTreeT :: Monad m => [TreeT m a] -> m (NodeT m [a]) -interleaveTreeT = fmap Tree.interleave . traverse runTreeT - --------------------------------------------------------------------------------- --- Tx generator --------------------------------------------------------------------------------- - --- | Generate a valid transaction from a given 'UTxO' -genTxFromUTxO :: - -- | List of addresses to choose from as recipients of the transaction - -- outputs. - [Addr] -> - -- | Fee calculation - (Tx -> Lovelace) -> - -- | UTxO used to determine which unspent outputs can be used in the - -- transaction. - UTxO -> - Gen Tx -genTxFromUTxO addrs txfee (UTxO utxo) = do - txbody <- genTxBody - let wits = witnessForTxIn txbody <$> inputs txbody - let tx = Tx txbody wits - subtractFees $ pure tx - where - genTxBody = - uncurry TxBody - <$> Gen.filter - (not . null . fst) - ( genInputOutput - (M.keys utxo) - (maybe 0 (unLovelace . value) . flip M.lookup utxo) - (fmap (. Lovelace) $ TxOut <$> Gen.element addrs) - (unLovelace . value) - (\f out -> out {value = Lovelace . f . unLovelace $ value out}) - ) - - witnessForTxIn :: TxBody -> TxIn -> Wit - witnessForTxIn tx txin = - case M.lookup txin utxo of - Just (TxOut (Addr pay) _) -> - witnessForTx (keyPair $ owner pay) tx - Nothing -> - error "The generators must ensure that we are spending unspent inputs" - - witnessForTx :: KeyPair -> TxBody -> Wit - witnessForTx (KeyPair sk vk) tx = Wit vk (sign sk tx) - subtractFees :: Gen Tx -> Gen Tx - subtractFees = - fmap subtractFees' - -- In Byron, we must disallow empty outputs in transactions in order to - -- maintain compatability with the `cardano-sl` implementation. - -- In order to do this, while also potentially removing some outputs from - -- the transaction to ensure that the transaction fee is covered, we only - -- generate transactions whose sum of outputs is greater than the - -- transaction fee. This way, we ensure that there will always remain at - -- least 1 'Lovelace' in the outputs. - . Gen.filter (\tx@(Tx txb _) -> sum (value <$> outputs txb) > txfee tx) - where - subtractFees' tx@(Tx txb _) = - let newBody = txb {outputs = subFromList (txfee tx) value updateValue (outputs txb)} - in Tx newBody (witnessForTxIn newBody <$> inputs newBody) - - updateValue f out = out {value = f (value out)} - --- | A property to test that the entire shrink tree generated by --- 'genInputOutput' maintains the invariant that the inputs and outputs have --- equal sums --- --- NB: This uses small values for the list and values, because we force the --- entire shrink tree, which can grow very large -propGenInputOutput :: Property -propGenInputOutput = property $ do - ins <- forAll $ Gen.list (Range.linear 0 5) (Gen.integral (Range.linear 0 5)) - insOutsTree <- forAll $ toTree (genInputOutput ins id (pure id) id id) - assert $ all (\(ins', outs) -> sum ins' == sum outs) insOutsTree - --- | Generate a subsequence of the inputs and split the value into a number of --- outputs --- --- The shrink tree maintains the invariant that the sum of the inputs is equal --- to the sum of the outputs. This is generalised to any type of input where --- we can view the contained value, and type of output where we can generate --- the type from a value, and view and modify the contained value -genInputOutput :: - -- | List of input to take a subsequence of - [input] -> - -- | A view of the value in the input used to preserve the invariant - (input -> Integer) -> - -- | A applicative generator for an output given a value - Gen (Integer -> output) -> - -- | A view of the value in the output used to preserve the invariant - (output -> Integer) -> - -- | An update function for the output value used to preserve the invariant - ((Integer -> Integer) -> output -> output) -> - Gen ([input], [output]) -genInputOutput ins inValue genOut outValue modifyOutValue = - mapGenT - ( TreeT - . ( interleaveInputOutputTreeT inValue outValue modifyOutValue - . nodeValue - =<< - ) - . runTreeT - ) - $ do - insTree <- toTreeMaybeT (Gen.subsequence ins) - case treeValue (runDiscardEffectT insTree) of - Nothing -> empty - Just is -> - (,) - <$> pure insTree - <*> toTreeMaybeT - ( genSplitValue - (sum $ inValue <$> is) - genOut - outValue - modifyOutValue - ) - --- | Used as part of 'genInputOutput', so see there for details of the arguments -interleaveInputOutputTreeT :: - Monad m => - (input -> Integer) -> - (output -> Integer) -> - ((Integer -> Integer) -> output -> output) -> - (TreeT m [input], TreeT m [output]) -> - m (NodeT m ([input], [output])) -interleaveInputOutputTreeT inValue outValue modifyOutValue = - fmap (interleaveInputOutput inValue outValue modifyOutValue) - . bitraverse runTreeT runTreeT - --- | Used as part of 'genInputOutput', so see there for details of the arguments -interleaveInputOutput :: - Monad m => - (input -> Integer) -> - (output -> Integer) -> - ((Integer -> Integer) -> output -> output) -> - (NodeT m [input], NodeT m [output]) -> - NodeT m ([input], [output]) -interleaveInputOutput inValue outValue modifyOutValue (as, bs) = - case nodeValue as of - [] -> NodeT ([], []) [] - _ -> - NodeT - (nodeValue as, nodeValue bs) - ( shrinkLeftPreserving inValue outValue modifyOutValue (as, bs) - ++ shrinkRight inValue outValue modifyOutValue (as, bs) - ) - --- | Used as part of 'genInputOutput', so see there for details of the arguments -shrinkRight :: - Monad m => - (input -> Integer) -> - (output -> Integer) -> - ((Integer -> Integer) -> output -> output) -> - (NodeT m [input], NodeT m [output]) -> - [TreeT m ([input], [output])] -shrinkRight inValue outValue modifyOutValue (xs, ys1) = do - ys2 <- nodeChildren ys1 - pure . TreeT $ do - ys3 <- runTreeT ys2 - pure $ interleaveInputOutput inValue outValue modifyOutValue (xs, ys3) - --- | Shrink the left value of a tuple, preserving the total value stored in the --- right value --- --- Used as part of 'genInputOutput', so see there for details of the arguments -shrinkLeftPreserving :: - Monad m => - (input -> Integer) -> - (output -> Integer) -> - ((Integer -> Integer) -> output -> output) -> - (NodeT m [input], NodeT m [output]) -> - [TreeT m ([input], [output])] -shrinkLeftPreserving inValue outValue modifyOutValue (xs1, ys1) = do - xs2 <- nodeChildren xs1 - pure . TreeT $ do - xs3 <- runTreeT xs2 - let lost = sum (inValue <$> nodeValue xs1) - sum (inValue <$> nodeValue xs3) - ys2 = subFromList lost outValue modifyOutValue <$> ys1 - pure $ interleaveInputOutput inValue outValue modifyOutValue (xs3, ys2) - --- | Remove total value from a list, removing from the front -subFromList :: - (Num n, Ord n) => - -- | The total value to remove from the list - n -> - -- | A view into the value contained in type @a@ - (a -> n) -> - -- | A modifier for the value contained in type @a@ - ((n -> n) -> a -> a) -> - -- | The list of @a@s to remove value from - [a] -> - [a] -subFromList n getVal modifyVal = go n - where - go 0 x = x - go _ [] = [] - go n' (x : xs) = - if getVal x > n' - then modifyVal (subtract n') x : xs - else go (n' - getVal x) xs - --- | A property to check that `genSplitValue` does indeed preserve the input -propGenSplitValue :: Property -propGenSplitValue = property $ do - n <- forAll $ Gen.integral (Range.linear 1 10000) - ints <- forAll $ genSplitValue n (pure id) id id - sum ints === n - --- | Given an input value and functions to generate, view, and update some type --- 'a' based on that value, split the input into a number of 'a's, preserving --- the value throughout the shrink tree -genSplitValue :: - -- | Total value to divide into outputs - Integer -> - -- | Applicative generator for an output given a value - Gen (Integer -> a) -> - -- | A view of the value in the output used to preserve the invariant - (a -> Integer) -> - -- | A modifier for the value in the output used to preserve the invariant - ((Integer -> Integer) -> a -> a) -> - Gen [a] -genSplitValue n genA getValue modifyValue = - mapGenT - ( TreeT - . (interleaveTreeTPreserving getValue modifyValue . nodeValue =<<) - . runTreeT - ) - $ go n [] - where - go 0 acc = pure acc - go left acc = do - mTree <- toTreeMaybeT (genA <*> Gen.integral (Range.constant 1 left)) - case treeValue (runDiscardEffectT mTree) of - Nothing -> empty - Just a -> go (left - getValue a) (mTree : acc) - --- | Used as part of 'genSplitValue', so see there for details of the arguments -interleaveTreeTPreserving :: - Monad m => - (a -> Integer) -> - ((Integer -> Integer) -> a -> a) -> - [TreeT m a] -> - m (NodeT m [a]) -interleaveTreeTPreserving getValue modifyValue = - fmap (interleavePreserving getValue modifyValue) . traverse runTreeT - --- | Used as part of 'genSplitValue', so see there for details of the arguments -interleavePreserving :: - Monad m => - (a -> Integer) -> - ((Integer -> Integer) -> a -> a) -> - [NodeT m a] -> - NodeT m [a] -interleavePreserving getValue modifyValue ts = - NodeT - (fmap nodeValue ts) - ( dropOnePreserving getValue modifyValue ts - ++ shrinkOnePreserving getValue modifyValue ts - ) - --- | Drop one of the outputs, preserving the invariant by moving its value to --- the left --- --- Used as part of 'genSplitValue', so see there for details of the arguments -dropOnePreserving :: - Monad m => - (a -> Integer) -> - ((Integer -> Integer) -> a -> a) -> - [NodeT m a] -> - [TreeT m [a]] -dropOnePreserving getValue modifyValue ts = do - (ws, x, y, zs) <- viewTwo ts - let x' = modifyValue (+ getValue (nodeValue y)) <$> x - pure . TreeT . pure $ - interleavePreserving - getValue - modifyValue - (ws ++ [x'] ++ zs) - --- | Shrink a value in a list, preserving the total value by moving the lost --- value to the left --- --- Used as part of 'genSplitValue', so see there for details of the arguments -shrinkOnePreserving :: - Monad m => - (a -> Integer) -> - ((Integer -> Integer) -> a -> a) -> - [NodeT m a] -> - [TreeT m [a]] -shrinkOnePreserving getValue modifyValue ts = do - (ws, x, y0, zs) <- viewTwo ts - y1 <- nodeChildren y0 - pure . TreeT $ do - y2 <- runTreeT y1 - let lost = getValue (nodeValue y0) - getValue (nodeValue y2) - x' = modifyValue (+ lost) <$> x - pure $ interleavePreserving getValue modifyValue (ws ++ [x', y2] ++ zs) - --- | All the ways of choosing two consecutive values from a list -viewTwo :: [a] -> [([a], a, a, [a])] -viewTwo = \case - [] -> [] - [_] -> [] - x : x' : xs -> - ([], x, x', xs) - : fmap (\(as, b, c, ds) -> (x : as, b, c, ds)) (viewTwo (x' : xs)) diff --git a/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/Update.hs b/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/Update.hs deleted file mode 100644 index e181d999401..00000000000 --- a/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/Update.hs +++ /dev/null @@ -1,1877 +0,0 @@ -{-# LANGUAGE CPP #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveDataTypeable #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE EmptyDataDeriving #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE MonadComprehensions #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE StrictData #-} -{-# LANGUAGE TemplateHaskell #-} -{-# LANGUAGE TupleSections #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} --- This is for the Hashable Set instance -{-# OPTIONS_GHC -Wno-orphans #-} - -module Byron.Spec.Ledger.Update ( - module Byron.Spec.Ledger.Update, - PredicateFailure (), -) -where - -import Byron.Spec.Ledger.Core ( - BlockCount (..), - HasHash, - Owner (Owner), - Relation (..), - Slot, - SlotCount (..), - VKey (VKey), - VKeyGenesis (VKeyGenesis), - dom, - hash, - (*.), - (-.), - (∈), - (∉), - (⋪), - (▷), - (▷<=), - (▷>=), - (◁), - (⨃), - ) -import qualified Byron.Spec.Ledger.Core as Core -import qualified Byron.Spec.Ledger.Core.Generators as CoreGen -import Byron.Spec.Ledger.Core.Omniscient (skey) -import qualified Byron.Spec.Ledger.GlobalParams as GP -import Control.Arrow (second, (&&&)) -import Control.State.Transition -import Data.AbstractSize (HasTypeReps) -import Data.Bimap (Bimap, empty, lookupR) -import qualified Data.Bimap as Bimap -import Data.Char (isAscii) -import Data.Data (Data, Typeable) -import Data.Foldable (foldl', toList) -import Data.Hashable (Hashable) -import qualified Data.Hashable as H -import Data.Ix (inRange) -import Data.List (sortOn) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Maybe (catMaybes, fromMaybe) -import Data.Ord (Down (Down)) -import Data.Set (Set, union, (\\)) -import qualified Data.Set as Set -import Data.Tuple (swap) -import Data.Word (Word8) -import GHC.Generics (Generic) -import Hedgehog (Gen) -import qualified Hedgehog.Gen as Gen -import qualified Hedgehog.Range as Range -import Lens.Micro -import Lens.Micro.Extras (view) -import Lens.Micro.Internal (Field1 (..), Field2 (..), Field3 (..)) -import Lens.Micro.TH (makeLenses) -import NoThunks.Class (NoThunks (..)) -import Numeric.Natural -import Test.Control.State.Transition.Generator ( - HasTrace, - envGen, - sigGen, - ) -import Prelude - -newtype FactorA = FactorA Int - deriving stock (Generic, Show, Data, Typeable) - deriving newtype (Eq, Ord, Hashable, NoThunks) - deriving anyclass (HasTypeReps) - -newtype FactorB = FactorB Int - deriving stock (Generic, Show, Data, Typeable) - deriving newtype (Eq, Ord, Hashable, NoThunks) - deriving anyclass (HasTypeReps) - -newtype UpAdptThd = UpAdptThd Double - deriving stock (Generic, Show, Data, Typeable) - deriving newtype (Eq, Ord, Hashable, Num, Real, Fractional, RealFrac, NoThunks) - deriving anyclass (HasTypeReps) - -newtype BkSgnCntT = BkSgnCntT Double - deriving stock (Generic, Show, Data, Typeable) - deriving newtype (Eq, Ord, Hashable, Num, Fractional, NoThunks) - deriving anyclass (HasTypeReps) - --- | Protocol parameters. -data PParams = PParams -- TODO: this should be a module of @byron-spec-ledger@. - { _maxBkSz :: !Natural - -- ^ Maximum (abstract) block size in words - , _maxHdrSz :: !Natural - -- ^ Maximum (abstract) block header size in words - , _maxTxSz :: !Natural - -- ^ Maximum (abstract) transaction size in words - , _maxPropSz :: !Natural - -- ^ Maximum (abstract) update proposal size in words - , _bkSgnCntT :: !BkSgnCntT - -- ^ Fraction [0, 1] of the blocks that can be signed by any given key in a - -- window of lenght '_bkSgnCntW'. This value will be typically between 1/5 - -- and 1/4 - , _bkSlotsPerEpoch :: !Core.SlotCount - -- ^ Number of slots in an epoch. - -- TODO: this should be removed since the number of slots per epoch should remain constant. - , _upTtl :: !Core.SlotCount - -- ^ Update proposal TTL in slots - , _scriptVersion :: !Natural - -- ^ Script version - , _upAdptThd :: !UpAdptThd - -- ^ Update adoption threshold: a proportion of block issuers that have to - -- endorse a given version to become candidate for adoption - , _factorA :: !FactorA -- TODO: these should have type 'Word64', like in `cardano-ledger`. - - -- ^ Minimum fees per transaction - , _factorB :: !FactorB - -- ^ Additional fees per transaction size - } - deriving (Eq, Generic, Ord, Show, Hashable, Data, Typeable, NoThunks) - -makeLenses ''PParams - -instance HasTypeReps PParams - -newtype UpId = UpId Int - deriving stock (Generic, Show, Data, Typeable) - deriving newtype (Eq, Ord, Hashable, NoThunks) - deriving anyclass (HasTypeReps) - --- | Protocol version -data ProtVer = ProtVer - { _pvMaj :: Natural - , _pvMin :: Natural - , _pvAlt :: Natural - } - deriving (Eq, Generic, Ord, Show, Hashable, Data, Typeable, NoThunks) - -makeLenses ''ProtVer - -instance HasTypeReps ProtVer - -newtype ApName = ApName String - deriving stock (Generic, Show, Data, Typeable) - deriving newtype (Eq, Ord, Hashable, NoThunks) - -instance HasTypeReps ApName - --- | Application version -newtype ApVer = ApVer Natural - deriving stock (Generic, Show, Data, Typeable) - deriving newtype (Eq, Ord, Num, Hashable, NoThunks) - -instance HasTypeReps ApVer - -data SwVer = SwVer - { _svName :: ApName - , _svVer :: ApVer - } - deriving (Eq, Generic, Show, Hashable, Data, Typeable, NoThunks) - -makeLenses ''SwVer - -instance HasTypeReps SwVer - --- | Part of the update proposal which must be signed -type UpSD = - ( ProtVer - , PParams - , SwVer - , Set STag - , Metadata - ) - --- | System tag, this represents a target operating system for the update (e.g. --- @linux@, @win64@, or @mac32@). -type STag = String - --- | For now we do not have any requirements on metadata. -data Metadata = Metadata - deriving (Eq, Ord, Show, Generic, Hashable, Data, Typeable, NoThunks) - --- | Update proposal -data UProp = UProp - { _upId :: UpId - , _upIssuer :: Core.VKey - , _upParams :: PParams - , _upPV :: ProtVer - , _upSwVer :: SwVer - , _upSig :: Core.Sig UpSD - , _upSTags :: Set STag - -- ^ System tags involved in the update proposal. - , _upMdt :: Metadata - -- ^ Metadata required for performing software updates. - } - deriving (Eq, Generic, Show, Hashable, Data, Typeable, NoThunks) - -#if MIN_VERSION_hashable(1,3,4) --- Instance Hashable (Set a) is provided by the hashable package -#else --- We need the Hashable instance before making lenses. -instance Hashable a => Hashable (Set a) where - hashWithSalt = H.hashUsing Set.toList -#endif - -makeLenses ''UProp - -upSigData :: Lens' UProp UpSD -upSigData = - lens - (\up -> (up ^. upPV, up ^. upParams, up ^. upSwVer, up ^. upSTags, up ^. upMdt)) - ( \up (pv, pps, sv, stags, mdt) -> - up - & upParams .~ pps - & upPV .~ pv - & upSwVer .~ sv - & upSTags .~ stags - & upMdt .~ mdt - ) - -getUpSigData :: UProp -> UpSD -getUpSigData = view upSigData - -mkUProp :: - UpId -> - Core.VKey -> - ProtVer -> - PParams -> - SwVer -> - Set STag -> - Metadata -> - UProp -mkUProp aUpId issuer pv pps sv stags mdt = uprop - where - uprop = - UProp - { _upId = aUpId - , _upIssuer = issuer - , _upParams = pps - , _upPV = pv - , _upSwVer = sv - , _upSig = Core.sign (skey issuer) (uprop ^. upSigData) - , _upSTags = stags - , _upMdt = mdt - } - -instance HasTypeReps (ProtVer, PParams, SwVer, Set STag, Metadata) - -instance HasTypeReps Metadata - -instance HasTypeReps UProp - --- | Test if a pair is present in a map. -inMap :: (Ord key, Eq v) => key -> v -> Map key v -> Bool -inMap key v m = case Map.lookup key m of - Just x | x == v -> True - _ -> False - --- | Invert a map --- --- Examples: --- --- >>> import qualified Data.Map.Strict as Map --- >>> import Byron.Spec.Ledger.Update (invertMap) --- >>> invertMap (Map.fromList [('a', 1 :: Int), ('b', 2), ('c', 3), ('d', 1)]) --- fromList [(1,fromList "ad"),(2,fromList "b"),(3,fromList "c")] -invertMap :: - (Ord k, Ord v) => - Map k v -> - Map v (Set k) -invertMap = - Map.fromListWith (Set.union) - . fmap (fmap Set.singleton . swap) - . Map.toList - --- | Invert a map which we assert to be a bijection. --- If this map is not a bijection, the behaviour is not guaranteed. --- --- Examples: --- --- >>> import qualified Data.Map.Strict as Map --- >>> invertBijection (Map.fromList [('a', 1 :: Int), ('b', 2), ('c', 3)]) --- fromList [(1,'a'),(2,'b'),(3,'c')] -invertBijection :: - Ord v => - Map k v -> - Map v k -invertBijection = - Map.fromListWith const - . fmap swap - . Map.toList - -(==>) :: Bool -> Bool -> Bool -a ==> b = not a || b - -infix 1 ==> - --- | Check whether a protocol version can follow the current protocol version. -pvCanFollow :: - -- | Next protocol version - ProtVer -> - -- | Previous protocol version - ProtVer -> - Bool -pvCanFollow (ProtVer mjn mn an) (ProtVer mjp mip ap) = - (mjp, mip, ap) < (mjn, mn, an) - && (inRange (0, 1) (mjn - mjp)) - && ((mjp == mjn) ==> (mip + 1 == mn)) - && ((mjp + 1 == mjn) ==> (mn == 0)) - --- | Check whether an update proposal marks a valid update -checkUpdateConstraints :: - PParams -> - UProp -> - [UpdateConstraintViolation] -checkUpdateConstraints pps prop = - catMaybes - [ (prop ^. upParams . maxBkSz <=? 2 * pps ^. maxBkSz) - `orError` BlockSizeTooLarge - , (prop ^. upParams . maxTxSz + 1 <=? prop ^. upParams . maxBkSz) - `orError` TransactionSizeTooLarge - , (pps ^. scriptVersion <=? prop ^. upParams . scriptVersion) - `orError` ScriptVersionTooSmall - , (prop ^. upParams . scriptVersion <=? pps ^. scriptVersion + 1) - `orError` ScriptVersionTooLarge - ] - -(<=?) :: Ord a => a -> a -> Maybe (a, Threshold a) -x <=? y = if x <= y then Nothing else Just (x, Threshold y) - -infix 4 <=? - -orError :: Maybe (a, b) -> (a -> b -> e) -> Maybe e -orError mab ferr = uncurry ferr <$> mab - -canUpdate :: PParams -> UProp -> Rule UPPVV ctx () -canUpdate pps prop = violations == [] ?! CannotUpdatePv violations - where - violations = checkUpdateConstraints pps prop - --- | Violations on the constraints of the allowed values for new protocol --- parameters. -data UpdateConstraintViolation - = BlockSizeTooLarge Natural (Threshold Natural) - | TransactionSizeTooLarge Natural (Threshold Natural) - | ScriptVersionTooLarge Natural (Threshold Natural) - | ScriptVersionTooSmall Natural (Threshold Natural) - deriving (Eq, Ord, Show, Data, Typeable, Generic, NoThunks) - -svCanFollow :: - Map ApName (ApVer, Core.Slot, Metadata) -> - (ApName, ApVer) -> - Bool -svCanFollow avs (an, av) = - ( case Map.lookup an avs of - Nothing -> True - Just (x, _, _) -> av == x + 1 - ) - && (an `Set.notMember` dom avs ==> (av == ApVer 0 || av == ApVer 1)) - where - ------------------------------------------------------------------------- --- Update proposals ------------------------------------------------------------------------- - --- | Update Proposal Software Version Validation -data UPSVV deriving (Generic, Data, Typeable) - --- | These `PredicateFailure`s are all "throwable". The disjunction of the --- rules' preconditions is not `True` - the `PredicateFailure`s represent --- `False` cases. -data UpsvvPredicateFailure - = AlreadyProposedSv - | CannotFollowSv - | InvalidApplicationName - | InvalidSystemTags - deriving (Eq, Show, Data, Typeable, Generic, NoThunks) - -instance STS UPSVV where - type Environment UPSVV = Map ApName (ApVer, Core.Slot, Metadata) - type State UPSVV = Map UpId (ApName, ApVer, Metadata) - type Signal UPSVV = UProp - type PredicateFailure UPSVV = UpsvvPredicateFailure - - initialRules = [] - transitionRules = - [ do - TRC (avs, raus, up) <- judgmentContext - let SwVer an av = up ^. upSwVer - apNameValid an ?! InvalidApplicationName - svCanFollow avs (an, av) ?! CannotFollowSv - an `notElem` fmap fst' (Map.elems raus) ?! AlreadyProposedSv - all sTagValid (up ^. upSTags) ?! InvalidSystemTags - return $! raus ⨃ [(up ^. upId, (an, av, up ^. upMdt))] - ] - where - fst' (x, _, _) = x - - apNameValid (ApName n) = all isAscii n && length n <= 12 - - sTagValid tag = all isAscii tag && length tag <= 10 - -data UPPVV deriving (Generic, Data, Typeable) - --- | These `PredicateFailure`s are all "throwable". The disjunction of the --- rules' preconditions is not `True` - the `PredicateFailure`s represent --- `False` cases. -data UppvvPredicateFailure - = CannotFollowPv - | CannotUpdatePv [UpdateConstraintViolation] - | AlreadyProposedPv - deriving (Eq, Show, Data, Typeable, Generic, NoThunks) - -instance STS UPPVV where - type - Environment UPPVV = - ( ProtVer - , PParams - ) - type State UPPVV = Map UpId (ProtVer, PParams) - type Signal UPPVV = UProp - type PredicateFailure UPPVV = UppvvPredicateFailure - - initialRules = [] - transitionRules = - [ do - TRC ((pv, pps), rpus, up) <- judgmentContext - let pid = up ^. upId - nv = up ^. upPV - ppsn = up ^. upParams - pvCanFollow nv pv ?! CannotFollowPv - canUpdate pps up - nv `notElem` (fst <$> Map.elems rpus) ?! AlreadyProposedPv - return $! rpus ⨃ [(pid, (nv, ppsn))] - ] - --- | Update proposal validity -data UPV deriving (Generic, Data, Typeable) - --- | These `PredicateFailure`s are all throwable. -data UpvPredicateFailure - = UPPVVFailure (PredicateFailure UPPVV) - | UPSVVFailure (PredicateFailure UPSVV) - | AVChangedInPVUpdate ApName ApVer (Maybe (ApVer, Slot, Metadata)) - | ParamsChangedInSVUpdate - | PVChangedInSVUpdate - deriving (Eq, Show, Data, Typeable, Generic, NoThunks) - -instance STS UPV where - type - Environment UPV = - ( ProtVer - , PParams - , Map ApName (ApVer, Core.Slot, Metadata) - ) - - type - State UPV = - ( Map UpId (ProtVer, PParams) - , Map UpId (ApName, ApVer, Metadata) - ) - - type Signal UPV = UProp - type PredicateFailure UPV = UpvPredicateFailure - - initialRules = [] - transitionRules = - [ do - TRC - ( (pv, pps, avs) - , (rpus, raus) - , up - ) <- - judgmentContext - rpus' <- trans @UPPVV $ TRC ((pv, pps), rpus, up) - let SwVer an av = up ^. upSwVer - inMap an av (swVer <$> avs) ?! AVChangedInPVUpdate an av (Map.lookup an avs) - pure $! (rpus', raus) - , do - TRC - ( (pv, pps, avs) - , (rpus, raus) - , up - ) <- - judgmentContext - pv == up ^. upPV ?! PVChangedInSVUpdate - up ^. upParams == pps ?! ParamsChangedInSVUpdate - raus' <- trans @UPSVV $ TRC (avs, raus, up) - pure $! (rpus, raus') - , do - TRC - ( (pv, pps, avs) - , (rpus, raus) - , up - ) <- - judgmentContext - rpus' <- trans @UPPVV $ TRC ((pv, pps), rpus, up) - raus' <- trans @UPSVV $ TRC (avs, raus, up) - pure $! (rpus', raus') - ] - where - swVer (x, _, _) = x - -instance Embed UPPVV UPV where - wrapFailed = UPPVVFailure - -instance Embed UPSVV UPV where - wrapFailed = UPSVVFailure - -data UPREG deriving (Generic, Data, Typeable) - --- | These `PredicateFailure`s are all throwable. -data UpregPredicateFailure - = UPVFailure (PredicateFailure UPV) - | NotGenesisDelegate - | DoesNotVerify - deriving (Eq, Show, Data, Typeable, Generic, NoThunks) - -instance STS UPREG where - type - Environment UPREG = - ( ProtVer - , PParams - , Map ApName (ApVer, Core.Slot, Metadata) - , Bimap Core.VKeyGenesis Core.VKey - ) - type - State UPREG = - ( Map UpId (ProtVer, PParams) - , Map UpId (ApName, ApVer, Metadata) - ) - type Signal UPREG = UProp - type PredicateFailure UPREG = UpregPredicateFailure - - initialRules = [] - transitionRules = - [ do - TRC - ( (pv, pps, avs, dms) - , (rpus, raus) - , up - ) <- - judgmentContext - (rpus', raus') <- trans @UPV $ TRC ((pv, pps, avs), (rpus, raus), up) - let vk = up ^. upIssuer - dms ▷ Set.singleton vk /= empty ?! NotGenesisDelegate - Core.verify vk (up ^. upSigData) (up ^. upSig) ?! DoesNotVerify - return $! (rpus', raus') - ] - -instance Embed UPV UPREG where - wrapFailed = UPVFailure - ------------------------------------------------------------------------- --- Update voting ------------------------------------------------------------------------- - -data Vote = Vote - { _vCaster :: Core.VKey - , _vPropId :: UpId - , _vSig :: Core.Sig UpId - } - deriving (Eq, Generic, Show, Hashable, Data, Typeable, NoThunks) - -makeLenses ''Vote - -instance HasTypeReps Vote - -mkVote :: Core.VKey -> UpId -> Vote -mkVote caster proposalId = - Vote - { _vCaster = caster - , _vPropId = proposalId - , _vSig = Core.sign (skey caster) proposalId - } - -instance HasHash (Maybe Byron.Spec.Ledger.Update.UProp, [Byron.Spec.Ledger.Update.Vote]) where - hash = Core.Hash . Just . H.hash - -data ADDVOTE deriving (Generic, Data, Typeable) - --- | These `PredicateFailure`s are all throwable. -data AddvotePredicateFailure - = AVSigDoesNotVerify - | NoUpdateProposal UpId - | VoteByNonGenesisDelegate VKey - | RepeatVoteByGenesisDelegate VKey - deriving (Eq, Show, Data, Typeable, Generic, NoThunks) - -instance STS ADDVOTE where - type - Environment ADDVOTE = - ( Set UpId - , Bimap Core.VKeyGenesis Core.VKey - ) - type State ADDVOTE = Set (UpId, Core.VKeyGenesis) - type Signal ADDVOTE = Vote - type PredicateFailure ADDVOTE = AddvotePredicateFailure - - initialRules = [] - transitionRules = - [ do - TRC - ( (rups, dms) - , vts - , vote - ) <- - judgmentContext - let pid = vote ^. vPropId - vk = vote ^. vCaster - vtsPid = - case lookupR vk dms of - Just vks -> Set.singleton (pid, vks) - Nothing -> Set.empty - vtsPid /= Set.empty ?! VoteByNonGenesisDelegate vk - not (vtsPid `Set.isSubsetOf` vts) ?! RepeatVoteByGenesisDelegate vk - Set.member pid rups ?! NoUpdateProposal pid - Core.verify vk pid (vote ^. vSig) ?! AVSigDoesNotVerify - return $! vts <> vtsPid - ] - -data UPVOTE deriving (Generic, Data, Typeable) - --- | The 3 non-embedded `PredicateFailure`s here are all structural. The --- disjuntion of the preconditions is `True` - one rule either fires or the --- other does. -data UpvotePredicateFailure - = ADDVOTEFailure (PredicateFailure ADDVOTE) - | S_HigherThanThdAndNotAlreadyConfirmed - | S_CfmThdNotReached - | S_AlreadyConfirmed - deriving (Eq, Show, Data, Generic, Typeable, NoThunks) - -instance STS UPVOTE where - type - Environment UPVOTE = - ( Core.Slot - , Word8 - , Set UpId - , Bimap Core.VKeyGenesis Core.VKey - ) - type - State UPVOTE = - ( Map UpId Core.Slot - , Set (UpId, Core.VKeyGenesis) - ) - type Signal UPVOTE = Vote - type PredicateFailure UPVOTE = UpvotePredicateFailure - - initialRules = [] - transitionRules = - [ do - TRC - ( (_, t, rups, dms) - , (cps, vts) - , vote - ) <- - judgmentContext - vts' <- trans @ADDVOTE $ TRC ((rups, dms), vts, vote) - let pid = vote ^. vPropId - size ([pid] ◁ vts') < t || pid ∈ dom cps ?! S_HigherThanThdAndNotAlreadyConfirmed - pure $! - ( cps - , vts' - ) - , do - TRC - ( (sn, t, rups, dms) - , (cps, vts) - , vote - ) <- - judgmentContext - vts' <- trans @ADDVOTE $ TRC ((rups, dms), vts, vote) - let pid = vote ^. vPropId - t <= size ([pid] ◁ vts') ?! S_CfmThdNotReached - pid ∉ dom cps ?! S_AlreadyConfirmed - pure $! - ( cps ⨃ [(pid, sn)] - , vts' - ) - ] - -instance Embed ADDVOTE UPVOTE where - wrapFailed = ADDVOTEFailure - ------------------------------------------------------------------------- --- Update voting ------------------------------------------------------------------------- - -data FADS deriving (Generic, Data, Typeable) - -data FadsPredicateFailure - deriving (Eq, Show, Data, Typeable, Generic) - -instance STS FADS where - type Environment FADS = () - type State FADS = [(Core.Slot, (ProtVer, PParams))] - type Signal FADS = (Core.Slot, (ProtVer, PParams)) - type PredicateFailure FADS = FadsPredicateFailure - - initialRules = [] - transitionRules = - [ do - TRC - ( () - , fads - , (sn, (bv, ppsc)) - ) <- - judgmentContext - return $ case fads of - ((_, (pvc, _)) : _) -> - if pvc < bv - then (sn, (bv, ppsc)) : fads - else fads - _ -> (sn, (bv, ppsc)) : fads - ] - -data UPEND deriving (Generic, Data, Typeable) - --- | Find the key that corresponds to the value satisfying the given predicate. --- In case zero or more than one key is found this function returns Nothing. -findKey :: (v -> Bool) -> Map k v -> Maybe (k, v) -findKey p m = - case Map.toList (Map.filter p m) of - [(k, v)] -> Just (k, v) - _ -> Nothing - --- | `S_TryNextRule` is a structural `PredicateFailure`, used to fail from --- one transition rule to the other. The other `PredicateFailure`s are all --- throwable. -data UpendPredicateFailure - = ProtVerUnknown ProtVer - | S_TryNextRule - | CanAdopt ProtVer - | CannotAdopt ProtVer - | NotADelegate VKey - | UnconfirmedProposal UpId - deriving (Eq, Show, Data, Typeable, Generic, NoThunks) - -instance STS UPEND where - type - Environment UPEND = - ( Core.Slot -- Current slot number - , Natural -- Adoption threshold - , Bimap VKeyGenesis VKey -- Delegation map - , Map UpId Core.Slot -- Confirmed proposals - , Map UpId (ProtVer, PParams) -- Registered update proposals - , BlockCount -- Chain stability parameter. This - -- is deemed to be a global - -- constant that we temporarily put - -- there. - ) - type - State UPEND = - ( [(Core.Slot, (ProtVer, PParams))] - , Set (ProtVer, Core.VKeyGenesis) - ) - type Signal UPEND = (ProtVer, Core.VKey) - type PredicateFailure UPEND = UpendPredicateFailure - - initialRules = [] - transitionRules = - [ do - TRC - ( (sn, _t, _dms, cps, rpus, k) - , (fads, bvs) - , (bv, _vk) - ) <- - judgmentContext - case findKey ((== bv) . fst) rpus of - Just (pid, _) -> do - -- If we found the proposal id that corresponds to 'bv' then we - -- have to check that it isn't confirmed for this rule to succeed. - pid ∉ dom (cps ▷<= sn -. 2 *. k) ?! S_TryNextRule - pure $! (fads, bvs) - Nothing -> - -- If we didn't find the proposal id that corresponds to 'bv' then - -- this rule succeeds. - -- - -- Note that the difference w.r.t. the case above is that this case - -- will succeed, whereas the case above can cause a predicate - -- failure if the condition of the '!?' operator is not met. Since - -- even on failure we _need_ to return a state, the case above also - -- returns the state unchanged in this case. - pure $! (fads, bvs) - , do - TRC - ( (sn, t, dms, cps, rpus, k) - , (fads, bvs) - , (bv, vk) - ) <- - judgmentContext - case lookupR vk dms of - Nothing -> do - False ?! S_TryNextRule - pure $! (fads, bvs) - Just vks -> do - let bvs' = bvs ∪ singleton bv vks - size ([bv] ◁ bvs') < t ?! CanAdopt bv - case findKey ((== bv) . fst) rpus of - Just (pid, _) -> do - pid ∈ dom (cps ▷<= sn -. 2 *. k) ?! S_TryNextRule - pure $! (fads, bvs') - Nothing -> do - False ?! S_TryNextRule - pure $! (fads, bvs') - , do - TRC - ( (sn, t, dms, cps, rpus, k) - , (fads, bvs) - , (bv, vk) - ) <- - judgmentContext - case lookupR vk dms of - Nothing -> do - False ?! NotADelegate vk - pure $! (fads, bvs) - Just vks -> do - let bvs' = bvs ∪ singleton bv vks - t <= size ([bv] ◁ bvs') ?! CannotAdopt bv - case findKey ((== bv) . fst) rpus of - Just (pid, (_, ppsc)) -> do - pid ∈ dom (cps ▷<= sn -. 2 *. k) ?! UnconfirmedProposal pid - fads' <- trans @FADS $ TRC ((), fads, (sn, (bv, ppsc))) - pure $! (fads', bvs') - Nothing -> do - False ?! ProtVerUnknown bv - pure $! (fads, bvs') - ] - -instance Embed FADS UPEND where - wrapFailed = error "No possible failures in FADS" - ------------------------------------------------------------------------- --- Update interface ------------------------------------------------------------------------- - --- | The update interface environment is shared amongst various rules, so --- we define it as an alias here. -type UPIEnv = - ( Core.Slot - , Bimap Core.VKeyGenesis Core.VKey - , BlockCount -- This is a global constant in the formal - -- specification, which we put in this environment so - -- that we can test with different values of it. - , Word8 -- Number of genesis keys, @ngk@. Also a global constant in the - -- formal specification which is placed here so that we can test - -- with different values. - ) - -delegationMap :: UPIEnv -> Bimap Core.VKeyGenesis Core.VKey -delegationMap (_, dms, _, _) = dms - --- | The update interface state is shared amongst various rules, so we define it --- as an alias here. -type UPIState = - ( (ProtVer, PParams) -- (pv, pps) - , [(Core.Slot, (ProtVer, PParams))] -- fads - , Map ApName (ApVer, Core.Slot, Metadata) -- avs - , Map UpId (ProtVer, PParams) -- rpus - , Map UpId (ApName, ApVer, Metadata) -- raus - , Map UpId Core.Slot -- cps - , Set (UpId, Core.VKeyGenesis) -- vts - , Set (ProtVer, Core.VKeyGenesis) -- bvs - , Map UpId Core.Slot -- pws - ) - -fstUPIState :: UPIState -> (ProtVer, PParams) -fstUPIState (f, _, _, _, _, _, _, _, _) = f - -sndUPIState :: UPIState -> [(Core.Slot, (ProtVer, PParams))] -sndUPIState (_, s, _, _, _, _, _, _, _) = s - -trdUPIState :: UPIState -> Map ApName (ApVer, Core.Slot, Metadata) -trdUPIState (_, _, t, _, _, _, _, _, _) = t - -emptyUPIState :: UPIState -emptyUPIState = - ( - ( ProtVer 0 0 0 - , initialPParams - ) - , [] - , Map.empty - , Map.empty - , Map.empty - , Map.empty - , Set.empty - , Set.empty - , Map.empty - ) - -initialPParams :: PParams -initialPParams = - PParams -- TODO: choose more sensible default values - { _maxBkSz = 10000 -- max sizes chosen as non-zero to allow progress - , _maxHdrSz = 1000 - , _maxTxSz = 500 - , _maxPropSz = 10 - , _bkSgnCntT = 0.22 -- As defined in the spec. - , _bkSlotsPerEpoch = 10 -- TODO: we need to remove this, since this should - -- be a constant. Also the name slots-per-epoch is - -- wrong. - , _upTtl = 10 -- The proposal time to live needs to be related to @k@ (or the number - -- of slots in an epoch). We pick an arbitrary value here. - , _scriptVersion = 0 - , _upAdptThd = 0.6 -- Value currently used in mainet - , -- To determine the factors @A@ and @B@ used in the calculation of the - -- transaction fees we need to know the constant @C@ that we use to bound - -- the size of a transaction. - -- - -- We have that for all transactions @tx@: - -- - -- > size (elaborate tx) <= C * abstractSize tx - -- - -- where @elaborate@ elaborates an abstract transaction into a concrete - -- one. - -- - -- We have that the (concrete) minimum fee is calculated as follows: - -- - -- > minFee tx = A_C + B_C * C - -- - -- where @A_C@ and @B_C@ are the concrete constants that correspond to - -- abstract constants @A@ and @B@. - -- - -- We need to guarantee that the abstract minimum fee we use for - -- transactions is no less than the concrete minimum fee, since otherwise - -- we run the risk that in the elaboration we end up paying a fee to low. - -- - -- Now consider the minimum fee for an elaborated transaction: - -- - -- > A_C + B_C * (size (elaborate tx)) - -- > <= { size (elaborate tx) <= C * abstractSize tx } - -- > A_C + B_C * C * abstractSize tx - -- - -- Which means that we should set: - -- - -- > _factorA = A_C - -- > _factorB = B_C * C - -- - -- For now we choose small numbers here so that we do not need a high UTxO - -- balance when generating the initial UTxO (see @module - -- Byron.Spec.Ledger.UTxO.Generators@). - _factorA = FactorA 1 -- In mainet this value is set to 155381000000000 (A_C in the derivation above) - , _factorB = FactorB (10 * fromIntegral GP.c) -- In mainet this value is set to 43946000000 - } - -protocolVersion :: UPIState -> ProtVer -protocolVersion ((pv, _), _, _, _, _, _, _, _, _) = pv - -protocolParameters :: UPIState -> PParams -protocolParameters ((_, pps), _, _, _, _, _, _, _, _) = pps - -applicationVersions :: UPIState -> Map ApName (ApVer, Core.Slot, Metadata) -applicationVersions ((_, _), _, avs, _, _, _, _, _, _) = avs - -confirmedProposals :: UPIState -> Map UpId Core.Slot -confirmedProposals ((_, _), _, _, _, _, cps, _, _, _) = cps - -futureAdoptions :: UPIState -> [(Core.Slot, (ProtVer, PParams))] -futureAdoptions ((_, _), fads, _, _, _, _, _, _, _) = fads - -endorsements :: UPIState -> Set (ProtVer, Core.VKeyGenesis) -endorsements ((_, _), _, _, _, _, _, _, bvs, _) = bvs - -registeredProtocolUpdateProposals :: UPIState -> Map UpId (ProtVer, PParams) -registeredProtocolUpdateProposals ((_, _), _, _, rpus, _, _, _, _, _) = rpus - -data UPIREG deriving (Generic, Data, Typeable) - -data UpiregPredicateFailure - = UPREGFailure (PredicateFailure UPREG) - deriving (Eq, Show, Data, Typeable, Generic, NoThunks) - -instance STS UPIREG where - type Environment UPIREG = UPIEnv - type State UPIREG = UPIState - type Signal UPIREG = UProp - type PredicateFailure UPIREG = UpiregPredicateFailure - - initialRules = [return $! emptyUPIState] - - transitionRules = - [ do - TRC - ( (sn, dms, _k, _ngk) - , ( (pv, pps) - , fads - , avs - , rpus - , raus - , cps - , vts - , bvs - , pws - ) - , up - ) <- - judgmentContext - (rpus', raus') <- trans @UPREG $ TRC ((pv, pps, avs, dms), (rpus, raus), up) - let pws' = pws ⨃ [(up ^. upId, sn)] - pure $! - ( (pv, pps) - , fads - , avs - , rpus' - , raus' - , cps - , vts - , bvs - , pws' - ) - ] - -instance Embed UPREG UPIREG where - wrapFailed = UPREGFailure - -instance HasTrace UPIREG where - envGen _ = upiEnvGen - - sigGen (_slot, dms, _k, _ngk) ((pv, pps), _fads, avs, rpus, raus, _cps, _vts, _bvs, pws) = - do - (vk, pv', pps', sv') <- - (,,,) - <$> issuerGen - <*> pvGen - <*> pparamsGen - <*> swVerGen - - Gen.frequency - [ -- Do not change the protocol version. We generate a lower fraction of - -- these kind of update proposals since we want to have more test cases - -- in which the protocol parameters change. Software only updates do - -- not offer as many possible variations as protocol parameter updates - -- do. - (10, generateUpdateProposalWith vk pps pv sv') - , -- Do not change the software version (unless there are no software - -- versions in @avs@). - - ( 45 - , do - -- Pick a current software version (if available) - let makeSoftwareVersion (apName, (apVersion, _, _)) = SwVer apName apVersion - avsList = Map.toList avs - currentSoftwareVersion <- - if null avsList - then pure $! sv' - else makeSoftwareVersion <$> Gen.element avsList - - generateUpdateProposalWith vk pps' pv' currentSoftwareVersion - ) - , -- Change protocol and software version. - (45, generateUpdateProposalWith vk pps' pv' sv') - ] - where - idGen :: Gen UpId - idGen = do - -- Chose an increment for the maximum version seen in the update - -- proposal IDs. - inc <- Gen.integral (Range.constant 1 10) - case Set.toDescList $ dom pws of - [] -> UpId <$> Gen.element [0 .. inc] - (UpId maxId : _) -> pure $ UpId (maxId + inc) - - -- As issuer we chose a current delegate. The delegation map must not be - -- empty for this signal generator to succeed. - issuerGen :: Gen Core.VKey - issuerGen = - if null delegates - then error "There are no delegates to issue an update proposal." - else Gen.element delegates - where - delegates = Set.toList (range dms) - - pparamsGen :: Gen PParams - pparamsGen = ppsUpdateFrom pps - - pvGen :: Gen ProtVer - pvGen = - nextAltVersion - <$> Gen.element - [ (_pvMaj pv + 1, 0) - , (_pvMaj pv, _pvMin pv + 1) - ] - where - -- Get the next alternate version, alt, so that @(maj, min, alt)@ - -- is not part of the registered protocol-update proposals - -- (@rpus@). - nextAltVersion :: (Natural, Natural) -> ProtVer - nextAltVersion (maj, mn) = - dom (range rpus) - & Set.filter protocolVersionEqualsMajMin - & Set.map _pvAlt - & Set.toDescList - & nextVersion - where - protocolVersionEqualsMajMin :: ProtVer -> Bool - protocolVersionEqualsMajMin pv' = - _pvMaj pv' == maj && _pvMin pv' == mn - - nextVersion :: [Natural] -> ProtVer - nextVersion [] = ProtVer maj mn 0 - nextVersion (x : _) = ProtVer maj mn (1 + x) - - -- Generate a software version update. - swVerGen :: Gen SwVer - swVerGen = - if null possibleNextVersions - then genNewApp - else Gen.choice [genANextVersion, genNewApp] - where - possibleNextVersions :: [(ApName, ApVer)] - possibleNextVersions = Set.toList $ nextVersions \\ registeredNextVersions - where - nextVersions :: Set (ApName, ApVer) - nextVersions = Set.fromList $ zip currentAppNames nextAppVersions - where - (currentAppNames, currentAppVersions) = unzip $ Map.toList avs - nextAppVersions :: [ApVer] - nextAppVersions = (+ 1) . fst3 <$> currentAppVersions - registeredNextVersions :: Set (ApName, ApVer) - registeredNextVersions = Set.map (fst3 &&& snd3) (range raus) - - -- Generate the next version for an existing application - genANextVersion :: Gen SwVer - genANextVersion = uncurry SwVer <$> Gen.element possibleNextVersions - - fst3 (x, _, _) = x - snd3 (_, y, _) = y - - -- Generate a new application - genNewApp :: Gen SwVer - genNewApp = - (`SwVer` 1) . ApName - <$> Gen.filter - ((`notElem` usedNames) . ApName) - (Gen.list (Range.constant 0 12) Gen.ascii) - where - usedNames = - Set.map fst3 (range raus) - `union` dom avs - - generateUpdateProposalWith :: - VKey -> - PParams -> - ProtVer -> - SwVer -> - Gen UProp - generateUpdateProposalWith vk pps' pv' sv' = - mkUProp - <$> idGen - <*> pure vk - <*> pure pv' - <*> pure pps' - <*> pure sv' - <*> stTagsGen - <*> mdtGen - - stTagsGen :: Gen (Set STag) - stTagsGen = - -- TODO: We need to benchmark this against @Gen.set@. This seems to be - -- slightly faster. - Set.fromList - <$> Gen.list (Range.linear 0 5) (Gen.list (Range.constant 0 10) Gen.ascii) - - mdtGen :: Gen Metadata - mdtGen = pure Metadata - -upiEnvGen :: Gen UPIEnv -upiEnvGen = do - ngk <- Gen.integral (Range.linear 1 14) - (,,,) - <$> CoreGen.slotGen 0 10 -- Current slot - <*> dmapGen ngk -- Delegation map - <*> (BlockCount <$> Gen.word64 (Range.constant 0 100)) -- Chain stability parameter (k) - <*> pure ngk - --- Generate an initial delegation map, using a constant number of genesis --- keys, which is determined in this generator. -dmapGen :: Word8 -> Gen (Bimap Core.VKeyGenesis Core.VKey) -dmapGen ngk = Bimap.fromList . uncurry zip <$> vkgVkPairsGen - where - vkgVkPairsGen :: Gen ([Core.VKeyGenesis], [Core.VKey]) - vkgVkPairsGen = (vkgs,) <$> Gen.filter (not . null) (Gen.subsequence vks) - where - vkgs = VKeyGenesis . VKey . Owner . fromIntegral <$> [0 .. ngk - 1] - -- As delegation targets we choose twice the number of genesis keys. - -- Note that the genesis keys can delegate to themselves in the - -- generated delegation map. - vks = VKey . Owner . fromIntegral <$> [0 .. 2 * (ngk - 1)] - --- | Generate a protocol parameter update from a given set of current --- protocol-parameters, ensuring the consistency of the new protocol parameters --- w.r.t. the current ones, according to the @canUpdate@ predicate in the --- formal specification. --- --- TODO: we can move this into a Generator's module, but first we need to --- disentangle the dependencies. Moving this to @Byron.Spec.Ledger.Update.Generators@ will --- cause a circular dependency. I think the rules need to be moved into their --- own modules. -ppsUpdateFrom :: PParams -> Gen PParams -ppsUpdateFrom pps = do - -- NOTE: we only generate small changes in the parameters to avoid leaving the - -- protocol parameters in a state that won't allow to produce any valid blocks - -- anymore (for instance if the maximum block size drops to a very small - -- value). - - -- Determine the change in the block size: a decrement or an increment that - -- is no more than twice the current block maximum size. - -- - -- We don't expect the maximum block size to change often, so we generate - -- more values around the current block size (@_maxBkSz@). - newMaxBkSize <- - Gen.integral - ( Range.linearFrom - _maxBkSz - (_maxBkSz -? 100) -- Decrement value was determined ad-hoc - (2 * _maxBkSz) - ) - `increasingProbabilityAt` (_maxBkSz -? 100, 2 * _maxBkSz) - - -- Similarly, we don't expect the transaction size to be changed often, so we - -- also generate more values around the current maximum transaction size. - let minTxSzBound = _maxTxSz `min` newMaxBkSize -? 1 - newMaxTxSize <- - Gen.integral - ( Range.exponential - (minTxSzBound -? 10) -- Decrement value determined ad-hoc - (newMaxBkSize -? 1) - ) - - PParams - <$> pure newMaxBkSize - <*> nextMaxHdrSzGen - <*> pure newMaxTxSize - <*> nextMaxPropSz - <*> nextBkSgnCntT - <*> pure _bkSlotsPerEpoch -- This parameter should be removed from 'PParams' - <*> nextUpTtl - <*> nextScriptVersion - <*> nextUpAdptThd - <*> nextFactorA - <*> nextFactorB - where - PParams - { _maxBkSz - , _maxHdrSz - , _maxTxSz - , _maxPropSz - , _bkSgnCntT - , _bkSlotsPerEpoch - , _upTtl - , _scriptVersion - , _upAdptThd - , _factorA - , _factorB - } = pps - - FactorA fA = _factorA - FactorB fB = _factorB - BkSgnCntT bsct = _bkSgnCntT - UpAdptThd uat = _upAdptThd - - nextMaxHdrSzGen :: Gen Natural - nextMaxHdrSzGen = - Gen.integral - ( Range.exponentialFrom - _maxHdrSz - (_maxHdrSz -? 10) - (2 * _maxHdrSz) - ) - - nextMaxPropSz :: Gen Natural - nextMaxPropSz = - Gen.integral - ( Range.exponentialFrom - _maxPropSz - (_maxPropSz -? 1) - (2 * _maxPropSz) - ) - - nextBkSgnCntT :: Gen BkSgnCntT - nextBkSgnCntT = - BkSgnCntT - <$> Gen.double - ( Range.exponentialFloatFrom - bsct - (bsct - 0.01) - (bsct + 0.01) - ) - - nextUpTtl :: Gen SlotCount - nextUpTtl = - SlotCount - <$> - -- TODO: here we need to decide what is right the minimum value for the - -- update-proposal TTL, and maybe adapt the rules to check the value of - -- this parameter cannot change to anything below this value. - -- - -- For now we choose an arbitrary constant. - Gen.integral (Range.exponentialFrom currUpTtl minTtl (2 * currUpTtl)) - `increasingProbabilityAt` (minTtl, 2 * currUpTtl) - where - SlotCount currUpTtl = _upTtl - minTtl = 2 - - -- The new script version can be increased at most 1 unit - nextScriptVersion :: Gen Natural - nextScriptVersion = Gen.element [_scriptVersion, _scriptVersion + 1] - - nextUpAdptThd :: Gen UpAdptThd - nextUpAdptThd = - UpAdptThd - <$> Gen.double (Range.exponentialFloatFrom uat 0 1) - `increasingProbabilityAt` (0, 1) - - nextFactorA :: Gen FactorA - nextFactorA = - FactorA - <$> - -- TODO: we choose arbitrary numbers here for now. - Gen.integral (Range.exponentialFrom fA 0 10) - `increasingProbabilityAt` (0, 10) - - -- The next value of the factor B shouldn't drop below 'GP.c' since when - -- elaborating this factor we divide it by 'GP.c' (see 'initialPParams'). - nextFactorB :: Gen FactorB - nextFactorB = - FactorB - <$> Gen.integral (Range.exponentialFrom fB minFactorB maxFactorB) - `increasingProbabilityAt` (minFactorB, maxFactorB) - where - minFactorB = 5 * fromIntegral GP.c - maxFactorB = 15 * fromIntegral GP.c - - (-?) :: Natural -> Natural -> Natural - n -? m = if n < m then 0 else n - m - --- | Generate values the given distribution in 90% of the cases, and values at --- the bounds of the range in 10% of the cases. --- --- This can be used to generate enough extreme values. The exponential and --- linear distributions provided by @hedgehog@ will generate a small percentage --- of these (0-1%). -increasingProbabilityAt :: - Gen a -> - (a, a) -> - Gen a -increasingProbabilityAt gen (lower, upper) = - Gen.frequency - [ (5, pure lower) - , (90, gen) - , (5, pure upper) - ] - --- | Generate a random update proposal id, by picking a large number so that the --- probability of having an update proposal with that id is nearly zero. -randomUpId :: Gen UpId -randomUpId = UpId <$> Gen.integral (Range.constant 10000 10100) - --- | Update the signature of the update proposal. -reSign :: UProp -> UProp -reSign uprop = - uprop - & upSig .~ Core.sign (skey (uprop ^. upIssuer)) (uprop ^. upSigData) - -data UPIVOTE deriving (Generic, Data, Typeable) - -data UpivotePredicateFailure - = UPVOTEFailure (PredicateFailure UPVOTE) - deriving (Eq, Show, Data, Typeable, Generic, NoThunks) - -instance STS UPIVOTE where - type Environment UPIVOTE = UPIEnv - type State UPIVOTE = UPIState - type Signal UPIVOTE = Vote - type PredicateFailure UPIVOTE = UpivotePredicateFailure - - initialRules = [] - transitionRules = - [ do - TRC - ( (sn, dms, _k, ngk) - , ( (pv, pps) - , fads - , avs - , rpus - , raus - , cps - , vts - , bvs - , pws - ) - , v - ) <- - judgmentContext - let q = pps ^. upAdptThd - (cps', vts') <- - trans @UPVOTE $ - TRC - ( - ( sn - , floor $ q * fromIntegral ngk - , dom pws - , dms - ) - , - ( cps - , vts - ) - , v - ) - pure $! - ( (pv, pps) - , fads - , avs - , rpus - , raus - , cps' - , vts' - , bvs - , pws - ) - ] - -instance Embed UPVOTE UPIVOTE where - wrapFailed = UPVOTEFailure - -data APPLYVOTES deriving (Generic, Data, Typeable) - -data ApplyVotesPredicateFailure - = UpivoteFailure (PredicateFailure UPIVOTE) - deriving (Eq, Show, Data, Typeable, Generic, NoThunks) - -instance STS APPLYVOTES where - type Environment APPLYVOTES = UPIEnv - type State APPLYVOTES = UPIState - type Signal APPLYVOTES = [Vote] - type PredicateFailure APPLYVOTES = ApplyVotesPredicateFailure - - initialRules = [return $! emptyUPIState] - - transitionRules = - [ do - TRC (env, us, sig) <- judgmentContext - case (sig :: [Vote]) of - [] -> return us - (x : xs) -> do - us' <- trans @UPIVOTE $ TRC (env, us, x) - us'' <- trans @APPLYVOTES $ TRC (env, us', xs) - return us'' - ] - -instance Embed UPIVOTE APPLYVOTES where - wrapFailed = UpivoteFailure - -data UPIVOTES deriving (Generic, Data, Typeable) - -data UpivotesPredicateFailure - = ApplyVotesFailure (PredicateFailure APPLYVOTES) - deriving (Eq, Show, Data, Typeable, Generic, NoThunks) - -instance STS UPIVOTES where - type Environment UPIVOTES = UPIEnv - type State UPIVOTES = UPIState - type Signal UPIVOTES = [Vote] - type PredicateFailure UPIVOTES = UpivotesPredicateFailure - - initialRules = [return $! emptyUPIState] - - transitionRules = - [ do - TRC (env, us, xs) <- judgmentContext - us' <- trans @APPLYVOTES $ TRC (env, us, xs) - -- Check which proposals are confirmed and stable, and update the - -- application versions map. - let (sn, _dms, _k, _ngk) = env - ( (pv, pps) - , fads - , avs - , rpus - , raus - , cps - , vts - , bvs - , pws - ) = us' - -- Ideally we could bump application versions for those proposals that - -- are stable, i.e. in: - -- - -- > dom (cps ▷<= sn -. 2 *. k) - -- - -- However in the legacy code, application versions are adopted as - -- soon as they are confirmed. The mainnet chain already contains such - -- proposal, so we cannot improve this. - cfmRaus = (dom cps) ◁ raus - avsNew = - [ (an, (av, sn, m)) - | (an, av, m) <- toList cfmRaus - ] - pure $! - ( (pv, pps) - , fads - , avs ⨃ avsNew - , rpus - , (dom cps) ⋪ raus - , cps - , vts - , bvs - , pws - ) - ] - -instance Embed APPLYVOTES UPIVOTES where - wrapFailed = ApplyVotesFailure - -instance HasTrace UPIVOTES where - envGen _ = upiEnvGen - - sigGen (_slot, dms, _k, _ngk) ((_pv, _pps), _fads, _avs, rpus, _raus, _cps, vts, _bvs, _pws) = - (mkVoteForDelegate <$>) . concatMap replicateFst - <$> genVotesOnMostVotedProposals completedVotes - where - -- Votes needed for confirmation, per proposal ID. - completedVotes :: [(UpId, [Core.VKeyGenesis])] - completedVotes = - completeVotes - (dom dms) - (groupVotesPerProposalId vts) - & fmap Set.toList - & Map.toList - - -- Make a vote for a delegate of a genesis key. - mkVoteForDelegate :: - (UpId, Core.VKeyGenesis) -> - Vote - mkVoteForDelegate (proposalId, vkg) = - Vote vk proposalId (Core.sign (skey vk) proposalId) - where - vk = fromMaybe err $ Bimap.lookup vkg dms - where - err = - error $ - "Byron.Spec.Ledger.Update.mkVoteForDelegate: " - ++ "the genesis key was not found in the delegation map, " - ++ "but it should be since we used `dms` to get the keys" - ++ "that can vote (and so they should have a pre-image in `dms`)." - - -- Group the votes issuing proposal id, taking into account the - -- proposals with no votes. - groupVotesPerProposalId :: - Set (UpId, Core.VKeyGenesis) -> - Map UpId (Set Core.VKeyGenesis) - groupVotesPerProposalId = - foldl' addVote proposalIdsWithNoVotes - where - proposalIdsWithNoVotes :: Map UpId (Set Core.VKeyGenesis) - proposalIdsWithNoVotes = Map.fromList $ (,Set.empty) <$> Set.toList (dom rpus) - - addVote :: - Map UpId (Set Core.VKeyGenesis) -> - (UpId, Core.VKeyGenesis) -> - Map UpId (Set Core.VKeyGenesis) - addVote m (proposalId, genesisKey) = - case Map.lookup proposalId m of - Nothing -> - Map.insert proposalId (Set.singleton genesisKey) m - Just votesForProposalId -> - Map.insert proposalId (Set.insert genesisKey votesForProposalId) m - - -- Add the missing votes w.r.t. a set of votes cast so far and genesis - -- keys that can vote. - completeVotes :: - -- Genesis keys that can vote - Set Core.VKeyGenesis -> - -- Votes for the registered update proposals - Map UpId (Set Core.VKeyGenesis) -> - Map UpId (Set Core.VKeyGenesis) - completeVotes genesisKeys votes = - (genesisKeys \\) <$> votes - - -- Given a sequence of update proposals ID's and the genesis keys that need - -- to vote for confirmation, generate votes on the most voted proposals. - -- - -- A proposal is said to be most voted if it is associated to the - -- minimal number of votes needed for confirmation. - -- - -- This basically takes the top @n@ most voted proposals (for some arbitrary - -- @n@), say @[(p_0, vs_0), ..., (p_n-1, vs_(n-1))]@ and generates votes of the - -- form, @(p_i, vs_i_j)@, where @vs_i_j@ is an arbitrary subsequence of @vs_i@. - genVotesOnMostVotedProposals :: - [(UpId, [Core.VKeyGenesis])] -> - Gen [(UpId, [Core.VKeyGenesis])] - genVotesOnMostVotedProposals votesNeeded = do - -- Determine on how many proposals we will vote - numberOfProposals <- Gen.int (Range.constant 0 (length votesNeeded)) - let votes :: [(UpId, [Core.VKeyGenesis])] - votes = take numberOfProposals $ sortOn (length . snd) votesNeeded - zip (fst <$> votes) <$> traverse Gen.subsequence (snd <$> votes) - - replicateFst :: - (a, [b]) -> - [(a, b)] - replicateFst (a, bs) = zip (repeat a) bs - -data UPIEND deriving (Generic, Data, Typeable) - -data UpiendPredicateFailure - = UPENDFailure (PredicateFailure UPEND) - deriving (Eq, Show, Data, Typeable, Generic, NoThunks) - -instance STS UPIEND where - type Environment UPIEND = UPIEnv - type State UPIEND = UPIState - type Signal UPIEND = (ProtVer, Core.VKey) - type PredicateFailure UPIEND = UpiendPredicateFailure - - initialRules = [return $! emptyUPIState] - - transitionRules = - [ do - TRC - ( (sn, dms, k, ngk) - , ( (pv, pps) - , fads - , avs - , rpus - , raus - , cps - , vts - , bvs - , pws - ) - , (bv, vk) - ) <- - judgmentContext - let t = floor $ pps ^. upAdptThd * fromIntegral ngk - (fads', bvs') <- trans @UPEND $ TRC ((sn, t, dms, cps, rpus, k), (fads, bvs), (bv, vk)) - let u = pps ^. upTtl - pidskeep = dom (pws ▷>= sn -. u) `union` dom cps - vskeep = dom (range rpus') - rpus' = pidskeep ◁ rpus - return - ( (pv, pps) - , fads' - , avs - , rpus' - , pidskeep ◁ raus - , cps - , pidskeep ◁ vts - , vskeep ◁ bvs' - , pidskeep ◁ pws - ) - ] - -instance Embed UPEND UPIEND where - wrapFailed = UPENDFailure - --- | Given a list of protocol versions and keys endorsing those versions, --- generate a protocol-version endorsement, or 'Nothing' if the list of --- endorsements is empty. The version to be endorsed will be selected from those --- versions that have the most endorsements. -pickHighlyEndorsedProtocolVersion :: - -- | Current set of endorsements - [(ProtVer, Set Core.VKeyGenesis)] -> - Gen (Maybe ProtVer) -pickHighlyEndorsedProtocolVersion endorsementsList = - if null mostEndorsedProposals - then pure Nothing - else Just <$> Gen.element mostEndorsedProposals - where - -- Take the top 5 most voted proposals, and endorse them. The constant 5 is determined arbitrarily - -- here. - - mostEndorsedProposals :: [ProtVer] - mostEndorsedProposals = - sortOn (Down . second length) endorsementsList - & take 5 - & fmap fst - -data PVBUMP deriving (Generic, Data, Typeable) - --- PVBUMP has no predicate failures -data PvbumpPredicateFailure = NoPVBUMPFailure - deriving (Eq, Show, Data, Typeable, Generic, NoThunks) - -instance STS PVBUMP where - type - Environment PVBUMP = - ( Core.Slot - , [(Core.Slot, (ProtVer, PParams))] - , BlockCount -- Chain stability parameter; this is a global - -- constant in the formal specification, which we put - -- in this environment so that we can test with - -- different values of it. - ) - type - State PVBUMP = - (ProtVer, PParams) - - type Signal PVBUMP = () - type PredicateFailure PVBUMP = PvbumpPredicateFailure - - initialRules = [] - transitionRules = - [ do - TRC ((s_n, fads, k), (pv, pps), ()) <- judgmentContext - case s_n -. 4 *. k <=◁ fads of - [] -> - pure $! (pv, pps) - (_s, (pv_c, pps_c)) : _xs -> - pure $! (pv_c, pps_c) - ] - -data UPIEC deriving (Generic, Data, Typeable) - -data UpiecPredicateFailure - = PVBUMPFailure (PredicateFailure PVBUMP) - deriving (Eq, Show, Data, Typeable, Generic, NoThunks) - -instance STS UPIEC where - type - Environment UPIEC = - ( Core.Epoch - , BlockCount -- Chain stability parameter; this is a global - -- constant in the formal specification, which we put - -- in this environment so that we can test with - -- different values of it. - ) - type State UPIEC = UPIState - type Signal UPIEC = () - type PredicateFailure UPIEC = UpiecPredicateFailure - - initialRules = [] - transitionRules = - [ do - TRC ((e_n, k), us, ()) <- judgmentContext - let (pv, pps) = fstUPIState us :: (ProtVer, PParams) - fads = sndUPIState us :: [(Core.Slot, (ProtVer, PParams))] - (pv', pps') <- - trans @PVBUMP $ - TRC ((GP.epochFirstSlot k e_n, fads, k), (pv, pps), ()) - return $! - if pv == pv' - then us - else - ( (pv', pps') :: (ProtVer, PParams) - , [] :: [(Core.Slot, (ProtVer, PParams))] - , trdUPIState us :: Map ApName (ApVer, Core.Slot, Metadata) - , Map.empty :: Map UpId (ProtVer, PParams) - , -- Note that we delete the registered application proposals from the - -- state on epoch change, since adopting these depends on the @cps@ - -- and @pws@ sets, which are deleted as well. So it doesn't seem - -- sensible to keep @raus@ around. - Map.empty :: Map UpId (ApName, ApVer, Metadata) - , Map.empty :: Map UpId Core.Slot - , Set.empty :: Set (UpId, Core.VKeyGenesis) - , Set.empty :: Set (ProtVer, Core.VKeyGenesis) - , Map.empty :: Map UpId Core.Slot - ) - ] - -instance Embed PVBUMP UPIEC where - wrapFailed = PVBUMPFailure - --- | Generate an optional update-proposal and a list of votes, given an update --- environment and state. --- --- The update proposal and votes need to be generated at the same time, since --- this allow us to generate update votes for update proposals issued in the --- same block as the votes. -updateProposalAndVotesGen :: - UPIEnv -> - UPIState -> - Gen (Maybe UProp, [Vote]) -updateProposalAndVotesGen upienv upistate = do - let rpus = registeredProtocolUpdateProposals upistate - if Set.null (dom rpus) - then generateUpdateProposalAndVotes - else - Gen.frequency - [ (5, generateOnlyVotes) - , (1, generateUpdateProposalAndVotes) - ] - where - generateOnlyVotes = (Nothing,) <$> sigGen @UPIVOTES upienv upistate - generateUpdateProposalAndVotes = do - updateProposal <- sigGen @UPIREG upienv upistate - -- We want to have the possibility of generating votes for the proposal we - -- registered. - case applySTS @UPIREG (TRC (upienv, upistate, updateProposal)) of - Left _ -> - (Just updateProposal,) - <$> sigGen @UPIVOTES upienv upistate - Right upistateAfterRegistration -> - (Just updateProposal,) - <$> sigGen @UPIVOTES upienv upistateAfterRegistration - --- | Generate an endorsement given an update environment and state. -protocolVersionEndorsementGen :: - UPIEnv -> - UPIState -> - Gen ProtVer -protocolVersionEndorsementGen upienv upistate = - fromMaybe (protocolVersion upistate) - <$> pickHighlyEndorsedProtocolVersion endorsementsList - where - -- Generate a list of protocol version endorsements. For this we look at the - -- current endorsements, and confirmed and stable proposals. - -- - -- If there are no endorsements, then the confirmed and stable proposals - -- provide fresh protocol versions that can be endorsed. - endorsementsList :: [(ProtVer, Set Core.VKeyGenesis)] - endorsementsList = - endorsementsMap `Map.union` emptyEndorsements - & Map.toList - where - emptyEndorsements :: Map ProtVer (Set Core.VKeyGenesis) - emptyEndorsements = - zip stableAndConfirmedVersions (repeat Set.empty) - & Map.fromList - where - stableAndConfirmedVersions :: - [ProtVer] - stableAndConfirmedVersions = - stableAndConfirmedProposalIDs ◁ rpus - & Map.elems - & fmap fst - where - stableAndConfirmedProposalIDs = - dom (confirmedProposals upistate ▷<= sn -. 4 *. k) - where - (sn, _, k, _) = upienv - - rpus = registeredProtocolUpdateProposals upistate - - endorsementsMap :: Map ProtVer (Set Core.VKeyGenesis) - endorsementsMap = - Set.toList (endorsements upistate) - & fmap (second Set.singleton) - & Map.fromListWith Set.union - --------------------------------------------------------------------------------- --- FieldX instances for a 9-tuple --------------------------------------------------------------------------------- - -instance Field1 (a, b, c, d, e, f, g, h, i) (a', b, c, d, e, f, g, h, i) a a' where - _1 k ~(a, b, c, d, e, f, g, h, i) = (\a' -> (a', b, c, d, e, f, g, h, i)) <$> k a - {-# INLINE _1 #-} - -instance Field2 (a, b, c, d, e, f, g, h, i) (a, b', c, d, e, f, g, h, i) b b' where - _2 k ~(a, b, c, d, e, f, g, h, i) = (\b' -> (a, b', c, d, e, f, g, h, i)) <$> k b - {-# INLINE _2 #-} - -instance Field3 (a, b, c, d, e, f, g, h, i) (a, b, c', d, e, f, g, h, i) c c' where - _3 k ~(a, b, c, d, e, f, g, h, i) = (\c' -> (a, b, c', d, e, f, g, h, i)) <$> k c - {-# INLINE _3 #-} diff --git a/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/Update/Generators.hs b/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/Update/Generators.hs deleted file mode 100644 index 3568a9dbfe9..00000000000 --- a/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/Update/Generators.hs +++ /dev/null @@ -1,89 +0,0 @@ -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TupleSections #-} - --- | Generators for the 'Ledger.Update' values. -module Byron.Spec.Ledger.Update.Generators (pparamsGen) where - -import Byron.Spec.Ledger.Core ( - BlockCount (BlockCount), - SlotCount (SlotCount), - unBlockCount, - unSlotCount, - ) -import Byron.Spec.Ledger.Update ( - BkSgnCntT (..), - FactorA (..), - FactorB (..), - PParams (PParams), - UpAdptThd (..), - ) -import Data.Word (Word64) -import Hedgehog -import qualified Hedgehog.Gen as Gen -import Hedgehog.Gen.Double (doubleInc) -import qualified Hedgehog.Range as Range -import Numeric.Natural (Natural) - --- | Generates valid protocol parameters --- --- TODO: The protocol parameters still need to be aligned with the formal --- spec. -pparamsGen :: Gen PParams -pparamsGen = - ( \((maxBkSz, maxHdrSz, maxTxSz, maxPropSz) :: (Natural, Natural, Natural, Natural)) - (bkSgnCntTDouble :: Double) - ((bkSlotsPerEpoch, upTtl) :: (SlotCount, SlotCount)) - (scriptVersion :: Natural) - (_cfmThd :: Double) - (upAdptThdDouble :: Double) - (factorAInt :: Int) - (factorBInt :: Int) -> - PParams - maxBkSz - maxHdrSz - maxTxSz - maxPropSz - (BkSgnCntT bkSgnCntTDouble) - bkSlotsPerEpoch - upTtl - scriptVersion - (UpAdptThd upAdptThdDouble) - (FactorA factorAInt) - (FactorB factorBInt) - ) - <$> szGen - <*> doubleInc -- bkSgnCntT - <*> slotBlockGen - <*> Gen.integral (Range.linear (0 :: Natural) 1000) -- scriptVersion - <*> Gen.double (Range.constant 0 1) -- cfmThd - <*> Gen.double (Range.constant 0 1) -- upAdptThd - <*> Gen.int (Range.linear 0 100) -- factor @a@ - <*> Gen.int (Range.linear 0 10) -- factor @b@ - where - szGen :: Gen (Natural, Natural, Natural, Natural) - szGen = do - bkSize <- Gen.integral (Range.linear 1 hi) - (bkSize,,,) - <$> gRange bkSize - <*> gRange bkSize - <*> gRange bkSize - where - lo = 1 :: Natural - -- In mainnet the maximum header size is set to 2000000 and the maximum - -- block size is also set to 2000000, so we have to make sure we cover - -- those values here. The upper bound is arbitrary though. - hi = 4000000 :: Natural - gRange :: Natural -> Gen Natural - gRange upper = Gen.integral (Range.linear lo upper) - - slotBlockGen :: Gen (SlotCount, SlotCount) - slotBlockGen = do - -- The number of slots per epoch is computed from 'k': - -- slots per-epoch = k * 10 - k <- BlockCount <$> Gen.integral (Range.linear 1 10000) - let perEpoch = SlotCount $ unBlockCount k * 10 - (perEpoch,) - <$> (SlotCount <$> gRange perEpoch) - where - gRange :: SlotCount -> Gen Word64 - gRange hi = Gen.word64 (Range.linear 1 (unSlotCount hi)) diff --git a/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/Update/Test.hs b/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/Update/Test.hs deleted file mode 100644 index aa40a8ff3b5..00000000000 --- a/eras/byron/ledger/executable-spec/src/Byron/Spec/Ledger/Update/Test.hs +++ /dev/null @@ -1,70 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE TypeApplications #-} - -module Byron.Spec.Ledger.Update.Test ( - coverUpiregFailures, - coverUpivoteFailures, -) -where - -import Byron.Spec.Ledger.Update -import Data.Data (Data) -import GHC.Stack (HasCallStack) -import Hedgehog (MonadTest) -import Hedgehog.Internal.Property (CoverPercentage) -import qualified Test.Control.State.Transition.Generator as Generator - --- | Check that all the relevant predicate failures are covered. -coverUpiregFailures :: - forall m a. - ( MonadTest m - , HasCallStack - , Data a - ) => - -- | Minimum percentage that each failure must occur. - CoverPercentage -> - -- | Structure containing the failures - a -> - m () -coverUpiregFailures coverPercentage someData = do - Generator.coverFailures @_ @UPPVV - coverPercentage - [ CannotFollowPv - , CannotUpdatePv [] - , AlreadyProposedPv - ] - someData - - Generator.coverFailures @_ @UPSVV - coverPercentage - [ AlreadyProposedSv - , CannotFollowSv - , InvalidApplicationName - , InvalidSystemTags - ] - someData - - Generator.coverFailures @_ @UPREG - coverPercentage - [ NotGenesisDelegate - , DoesNotVerify - ] - someData - --- | See 'coverUpiregFailures'. -coverUpivoteFailures :: - forall m a. - ( MonadTest m - , HasCallStack - , Data a - ) => - CoverPercentage -> - a -> - m () -coverUpivoteFailures coverPercentage = - Generator.coverFailures @_ @ADDVOTE - coverPercentage - [ AVSigDoesNotVerify - , NoUpdateProposal (UpId 0) -- We need to pass a dummy update id here. - ] diff --git a/eras/byron/ledger/executable-spec/src/Data/AbstractSize.hs b/eras/byron/ledger/executable-spec/src/Data/AbstractSize.hs deleted file mode 100644 index dcf5cf715cf..00000000000 --- a/eras/byron/ledger/executable-spec/src/Data/AbstractSize.hs +++ /dev/null @@ -1,227 +0,0 @@ -{-# LANGUAGE DefaultSignatures #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE OverloadedLists #-} -{-# LANGUAGE TypeOperators #-} - --- | An approach to computing the abstract size of data using 'TypeRep'. -module Data.AbstractSize ( - HasTypeReps, - typeReps, - abstractSize, - AccountingMap, - Size, -) -where - -import Cardano.Crypto.DSIGN.Class (SignedDSIGN (SignedDSIGN), VerKeyDSIGN) -import Cardano.Crypto.DSIGN.Mock (MockDSIGN, SigDSIGN (SigMockDSIGN)) -import Cardano.Crypto.Hash (Hash, hashToBytes) -import Cardano.Crypto.Hash.Short (ShortHash) -import qualified Crypto.Hash as Crypto -import qualified Data.ByteString as BS -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Sequence (Seq, empty, (<|), (><)) -import qualified Data.Sequence as Seq -import Data.Set (Set) -import Data.Typeable (TypeRep, Typeable, typeOf) -import Data.Word (Word16, Word32, Word64, Word8) -import GHC.Generics ( - Generic, - K1 (K1), - M1 (M1), - Rep, - U1 (U1), - from, - (:*:) ((:*:)), - (:+:) (L1, R1), - ) -import GHC.Natural (Natural) - --- | @abstractSize m a@ computes the abstract size of @a@, using the accounting --- map @m@. The map @m@ determines the abstract size of each 'TypeRep' --- contained in @a@, and this function simply adds all the individual abstract --- sizes. To be able to extract the type representations ('TypeRep's) inside --- @a@, we require it to be an instance of 'HasTypeReps'. --- --- Examples: --- --- >>> :set -XOverloadedLists --- >>> import Data.Typeable (typeOf) --- >>> abstractSize [(typeOf (undefined:: Char), 10)] 'a' --- 10 --- --- >>> abstractSize [(typeOf 'x', 10)] "hello" --- 50 --- --- >>> abstractSize [(typeOf 'x', 10), (typeOf True, 100)] ("hello", False) --- 150 --- --- >>> abstractSize [(typeOf (undefined :: [Int]), 6), (typeOf (1 :: Int), 1)] ([0, 1, 2, 3] :: [Int]) --- 10 --- --- >>> abstractSize [(typeOf (undefined :: [Int]), 3), (typeOf (1 :: Int), -1)] ([0, 1, 2] :: [Int]) --- 0 -abstractSize :: HasTypeReps a => AccountingMap -> a -> Size -abstractSize m a = sum $ fmap cost trs - where - trs = typeReps a - cost t = Map.findWithDefault 0 t m - -type Size = Int - -type AccountingMap = Map TypeRep Size - --------------------------------------------------------------------------------- --- HasTypeReps class --------------------------------------------------------------------------------- - --- | The 'typeReps' function retrieves all the type representations found while --- traversing the data given as parameter. --- --- CAUTION: for newtypes, do not use 'deriving newtype (HasTypeReps)' to derive --- instances, rather use 'deriving anyclass (HasTypeReps)'. --- This is because we use these instances in 'abstractSize', and for that --- we prefer to have the newtype wrapper type available for "costing". --- The difference between 'newtype' and 'anyclass' instances is as follows: --- --- newtype Hash = Hash { unHash :: Int } --- deriving newtype (..., HasTypeReps) --- > typeReps someHash = Seq.fromList [Int] --- vs --- newtype Hash = Hash { unHash :: Int } --- deriving stock (...,Generics); deriving anyclass (HasTypeReps) --- > typeReps someHash = Seq.fromList [Hash, Int] --- --- Examples: --- --- >>> typeReps "a" --- fromList [[Char],Char] --- --- >>> typeReps "ab" --- fromList [[Char],Char,Char] --- --- >>> typeReps ([] :: [Int]) --- fromList [[Int]] --- --- >>> :set -XDeriveGeneric --- >>> import GHC.Generics (Generic) --- >>> data Foo = Foo [Int] (Char, Char) deriving (Generic) --- >>> instance HasTypeReps Foo --- >>> typeReps $ Foo [1, 2] ('a', 'b') --- fromList [Foo,[Int],Int,Int,(Char,Char),Char,Char] -class HasTypeReps a where - typeReps :: a -> Seq TypeRep - default typeReps :: - ( Generic a - , GHasTypeReps (Rep a) - , Typeable a - ) => - a -> - Seq TypeRep - typeReps a = typeOf a <| gTypeReps (from a) - -class GHasTypeReps f where - gTypeReps :: f a -> Seq TypeRep - --------------------------------------------------------------------------------- --- GHasTypeReps instances --------------------------------------------------------------------------------- - --- | No types to report for a constructor without arguments. -instance GHasTypeReps U1 where - gTypeReps U1 = empty - --- | The types in a product is the concatenation of the types found in the --- values of the product terms. -instance (GHasTypeReps a, GHasTypeReps b) => GHasTypeReps (a :*: b) where - gTypeReps (a :*: b) = gTypeReps a >< gTypeReps b - -instance (GHasTypeReps a, GHasTypeReps b) => GHasTypeReps (a :+: b) where - gTypeReps (L1 a) = gTypeReps a - gTypeReps (R1 b) = gTypeReps b - --- | We do need to do anything for the metadata. -instance GHasTypeReps a => GHasTypeReps (M1 i c a) where - gTypeReps (M1 x) = gTypeReps x - --- | And the only interesting case, get the type of a type constructor -instance HasTypeReps a => GHasTypeReps (K1 i a) where - gTypeReps (K1 x) = typeReps x - --------------------------------------------------------------------------------- --- HasTypeReps instances --------------------------------------------------------------------------------- - -instance (Typeable a, HasTypeReps a) => HasTypeReps (Maybe a) where - typeReps x = typeOf x <| maybe [] typeReps x - -instance (Typeable a, HasTypeReps a) => HasTypeReps [a] where - typeReps xs = typeOf xs <| foldMap typeReps xs - -instance (Typeable a, HasTypeReps a) => HasTypeReps (Set a) where - typeReps xs = typeOf xs <| foldMap typeReps xs - -instance - ( Typeable a - , Typeable b - , HasTypeReps a - , HasTypeReps b - ) => - HasTypeReps (a, b) - where - typeReps t@(a, b) = typeOf t <| (typeReps a >< typeReps b) - -instance HasTypeReps Bool where - typeReps x = [typeOf x] - -instance HasTypeReps Char where - typeReps x = [typeOf x] - -instance HasTypeReps Int where - typeReps x = [typeOf x] - -instance HasTypeReps Integer where - typeReps x = [typeOf x] - -instance HasTypeReps Double where - typeReps x = [typeOf x] - -instance HasTypeReps Natural where - typeReps x = [typeOf x] - -instance HasTypeReps Word where - typeReps x = [typeOf x] - -instance HasTypeReps Word8 where - typeReps x = [typeOf x] - -instance HasTypeReps Word16 where - typeReps x = [typeOf x] - -instance HasTypeReps Word32 where - typeReps x = [typeOf x] - -instance HasTypeReps Word64 where - typeReps x = [typeOf x] - -instance HasTypeReps (Crypto.Digest Crypto.SHA256) where - typeReps x = [typeOf x] - -instance HasTypeReps ShortHash where - typeReps x = [typeOf x] - -instance Typeable a => HasTypeReps (Hash ShortHash a) where - typeReps x = [typeOf x] - -instance HasTypeReps (SignedDSIGN MockDSIGN a) where - -- A mock signature consists of a 'ByteString' (which is in turn a short hash) - -- and a 'Word64'. For the 'ByteString' representation we return one character - -- per byte. - typeReps (SignedDSIGN (SigMockDSIGN h i)) = - typeOf i <| Seq.replicate (BS.length (hashToBytes h)) (typeOf (undefined :: Char)) - -instance HasTypeReps (VerKeyDSIGN MockDSIGN) where - -- A mock verification key is just an 'Int'. - typeReps _ = [typeOf (undefined :: Int)] diff --git a/eras/byron/ledger/executable-spec/src/Hedgehog/Gen/Double.hs b/eras/byron/ledger/executable-spec/src/Hedgehog/Gen/Double.hs deleted file mode 100644 index 378e5ba5242..00000000000 --- a/eras/byron/ledger/executable-spec/src/Hedgehog/Gen/Double.hs +++ /dev/null @@ -1,18 +0,0 @@ --- | Generally useful generators not present in the upstream release --- of Hedgehog -module Hedgehog.Gen.Double (doubleInc) where - -import Data.Bits (shiftL) -import Data.Word (Word64) -import Hedgehog -import qualified Hedgehog.Gen as Gen -import qualified Hedgehog.Range as Range - --- | Generates a Double in the inclusive range [0, 1] -doubleInc :: Gen Double -doubleInc = do - b <- Gen.word64 (Range.linear 1 hi) - a <- Gen.word64 (Range.linear 0 b) - return $ (fromIntegral a) / (fromIntegral b) - where - hi = 2 `shiftL` 48 :: Word64 diff --git a/eras/byron/ledger/executable-spec/test/Main.hs b/eras/byron/ledger/executable-spec/test/Main.hs deleted file mode 100644 index 51469a066e9..00000000000 --- a/eras/byron/ledger/executable-spec/test/Main.hs +++ /dev/null @@ -1,63 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} - -module Main ( - main, -) -where - -import Test.Byron.Spec.Ledger.AbstractSize.Properties (testProperty, testTxHasTypeReps) -import qualified Test.Byron.Spec.Ledger.Core.Generators.Properties as CoreGen -import Test.Byron.Spec.Ledger.Delegation.Examples (deleg) -import qualified Test.Byron.Spec.Ledger.Delegation.Properties as DELEG -import Test.Byron.Spec.Ledger.Relation.Properties (testRelation) -import Test.Byron.Spec.Ledger.UTxO.Properties (moneyIsConstant) -import qualified Test.Byron.Spec.Ledger.UTxO.Properties as UTxO -import Test.Byron.Spec.Ledger.Update.Examples (upiendExamples) -import qualified Test.Byron.Spec.Ledger.Update.Properties as UPDATE -import Test.Tasty (TestTree, defaultMain, localOption, testGroup) -import Test.Tasty.Ingredients.ConsoleReporter (UseColor (Auto)) - -main :: IO () -main = defaultMain tests - where - tests :: TestTree - tests = - localOption Auto $ - testGroup - "Test.Byron.Spec.Ledger" - [ testGroup - "Core generators properties" - [testProperty "Relevant k values are generated" CoreGen.relevantKValuesAreGenerated] - , testGroup "Delegation Examples" deleg - , testGroup - "Delegation properties" - [ testProperty "Certificates are triggered" DELEG.dcertsAreTriggered - , testProperty "DBLOCK Traces are classified" DELEG.dblockTracesAreClassified - , testProperty "Relevant DBLOCK traces covered" DELEG.relevantCasesAreCovered - , testProperty "Duplicated certificates are rejected" DELEG.rejectDupSchedDelegs - , testProperty "Traces are classified" DELEG.tracesAreClassified - , testProperty "Only valid DBLOCK signals are generated" DELEG.onlyValidSignalsAreGenerated - ] - , testGroup - "UTxO properties" - [ testProperty "Money is constant" moneyIsConstant - , testProperty "Relevant UTxO traces are generated" UTxO.relevantCasesAreCovered - , testProperty "No double spending" UTxO.noDoubleSpending - , testProperty "UTxO is outputs minus inputs" UTxO.utxoDiff - , testProperty "UTxO and txouts are disjoint" UTxO.utxoAndTxoutsMustBeDisjoint - ] - , testTxHasTypeReps - , testGroup "Update examples" upiendExamples - , testGroup - "Update properties" - [ testProperty "UPIREG traces are classified" UPDATE.upiregTracesAreClassified - , testProperty "UBLOCK traces are classified" UPDATE.ublockTraceLengthsAreClassified - , testProperty "Relevant UPIREG traces are covered" UPDATE.upiregRelevantTracesAreCovered - , testProperty "Only valid UPIREG signals are generated" UPDATE.onlyValidSignalsAreGenerated - , testProperty "Only valid UBLOCK signals are generated" UPDATE.ublockOnlyValidSignalsAreGenerated - , testProperty "Relevant UBLOCK traces are covered" UPDATE.ublockRelevantTracesAreCovered - ] - , -- TODO move this out of here (these are not properties of the transition - -- systems) and also move the Relation class and instances out of Byron.Spec.Ledger.Core - testRelation - ] diff --git a/eras/byron/ledger/executable-spec/test/Test/Byron/Spec/Ledger/AbstractSize/Properties.hs b/eras/byron/ledger/executable-spec/test/Test/Byron/Spec/Ledger/AbstractSize/Properties.hs deleted file mode 100644 index 7022089b2fc..00000000000 --- a/eras/byron/ledger/executable-spec/test/Test/Byron/Spec/Ledger/AbstractSize/Properties.hs +++ /dev/null @@ -1,164 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Byron.Spec.Ledger.AbstractSize.Properties (testTxHasTypeReps, testProperty) where - -import Byron.Spec.Ledger.Core hiding ((<|)) -import Byron.Spec.Ledger.STS.UTXOW (UTXOW) -import Byron.Spec.Ledger.UTxO -import Data.AbstractSize -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Sequence (empty, (<|), (><)) -import qualified Data.Sequence as Seq -import Data.Typeable (TypeRep, Typeable, typeOf) -import Hedgehog (MonadTest, Property, forAll, property, withTests, (===)) -import Hedgehog.Internal.Property (PropertyName (..)) -import Numeric.Natural (Natural) -import Test.Control.State.Transition.Generator (trace) -import Test.Control.State.Transition.Trace (TraceOrder (OldestFirst), traceSignals) -import Test.Tasty (TestName, TestTree, testGroup) -import Test.Tasty.HUnit (Assertion, testCase, (@?=)) -import Test.Tasty.Hedgehog hiding (testProperty) - --- | testProperty has been deprecated. We make our own version here. -testProperty :: TestName -> Property -> TestTree -testProperty s p = testPropertyNamed s (Hedgehog.Internal.Property.PropertyName s) p - --------------------------------------------------------------------------------- --- Example HasTypeReps.typeReps for TxIn, Tx --------------------------------------------------------------------------------- - -aTx :: TxBody -aTx = undefined - -aTxId :: TxId -aTxId = TxId (hash aTx) - --- | 'TxIn' has a generic instance for 'HasTypeReps', which recursively adds --- 'typeReps' for all types within 'TxIn'. -exampleTypeRepsTxIn :: Assertion -exampleTypeRepsTxIn = - let txIn = TxIn aTxId 0 - in typeReps txIn - @?= typeOf (undefined :: TxIn) - <| typeOf (undefined :: TxId) - <| typeOf (undefined :: Hash) - <| typeOf (undefined :: Maybe Int) - <| typeOf (undefined :: Int) - <| typeOf (undefined :: Natural) - <| empty - --- | A 'TxWits' term may contain multiple inputs/outputs/witnesses. --- In this example, we have 2 inputs and show how the 'typeReps' for --- 'TxIn' is repeated twice. -exampleTypeRepsTx :: Assertion -exampleTypeRepsTx = - let (in0, in1) = (TxIn aTxId 0, TxIn aTxId 1) - outs = [] - wits = [] - tx = Tx (TxBody [in0, in1] outs) wits - in typeReps tx - @?= typeOf (undefined :: Tx) - <| typeOf (undefined :: TxBody) - <| typeOf (undefined :: [TxIn]) - <| typeReps in0 - >< typeReps in1 - >< ( Seq.fromList - [ typeOf (undefined :: [TxOut]) - , typeOf (undefined :: [Wit]) - ] - ) - --------------------------------------------------------------------------------- --- Properties of abstractSize of TxWits / TxIn /TxOut / Wit --------------------------------------------------------------------------------- - --- | Make a singleton cost of "1" for the given term's type -mkCost :: forall a. Typeable a => Map TypeRep Size -mkCost = Map.singleton (typeOf (undefined :: a)) 1 - --- | Tests that the size of a 'TxWits' term, computed with the combined costs --- of 'TxIn/TxOut/Wit', is the sum of costs of all 'TxIn/TxOut/Wit' contained --- in the 'TxWits'. -propSumOfSizesTx :: - MonadTest m => Tx -> m () -propSumOfSizesTx txw = - abstractSize (txInCosts <> txOutCosts <> witCosts) txw - === abstractSize txInCosts (body txw) - + abstractSize txOutCosts (body txw) - + abstractSize witCosts (witnesses txw) - where - txInCosts :: Map TypeRep Size - txInCosts = Map.unions [mkCost @TxIn, mkCost @TxId, mkCost @Hash] - - txOutCosts :: Map TypeRep Size - txOutCosts = Map.unions [mkCost @TxOut, mkCost @Addr, mkCost @VKey, mkCost @Lovelace] - - witCosts :: Map TypeRep Size - witCosts = Map.unions [mkCost @Wit, mkCost @VKey, mkCost @(Sig TxBody)] - --- | A TxWits contains multiple inputs, outputs and witnesses. --- This property tests that --- - the abstractSize of TxWits varies with the number of items --- - the combined cost is the sum of individual costs --- - types that are shared (e.g. VKey appears in both TxOut and Wit) --- should be counted for each appearance -propMultipleOfSizes :: - MonadTest m => Tx -> m () -propMultipleOfSizes txw = - let body_ = body txw - wits_ = witnesses txw - in do - -- we should account for each TxIn/TxId/Hash in a TxWits's size - abstractSize (mkCost @TxIn) txw === length (inputs body_) - abstractSize (mkCost @TxId) txw === length (inputs body_) - abstractSize (mkCost @Hash) txw === length (inputs body_) - -- the combined cost is the sum of individual costs - abstractSize (Map.unions [mkCost @TxIn, mkCost @TxId, mkCost @Hash]) txw - === abstractSize (mkCost @TxIn) txw - + abstractSize (mkCost @TxId) txw - + abstractSize (mkCost @Hash) txw - - -- we should account for each TxOut/Addr/Lovelace in a TxWits's size - abstractSize (mkCost @TxOut) txw === length (outputs body_) - abstractSize (mkCost @Addr) txw === length (outputs body_) - abstractSize (mkCost @Lovelace) txw === length (outputs body_) - -- the combined cost is the sum of individual costs - abstractSize (Map.unions [mkCost @TxOut, mkCost @Addr, mkCost @Lovelace]) txw - === abstractSize (mkCost @TxOut) txw - + abstractSize (mkCost @Addr) txw - + abstractSize (mkCost @Lovelace) txw - - -- we should account for each Wit/Sig in a TxWits's size - abstractSize (mkCost @Wit) txw === length wits_ - abstractSize (mkCost @(Sig TxBody)) txw === length wits_ - -- the combined cost is the sum of individual costs - abstractSize (Map.unions [mkCost @Wit, mkCost @(Sig TxBody)]) txw - === abstractSize (mkCost @Wit) txw - + abstractSize (mkCost @(Sig TxBody)) txw - - -- since Vkey appears in each input _and_ each witness, the size of - -- TxWits should be the total number of inputs and wits - abstractSize (mkCost @VKey) txw - === length (outputs body_) + length wits_ - -propTxAbstractSize :: Property -propTxAbstractSize = - withTests 50 $ - property $ do - tr <- forAll (trace @UTXOW () 100) - let txs = traceSignals OldestFirst tr :: [Tx] - mapM_ propSize txs - where - propSize txw = propSumOfSizesTx txw >> propMultipleOfSizes txw - -testTxHasTypeReps :: TestTree -testTxHasTypeReps = - testGroup - "Test HasTypeReps instances" - [ testCase "AbstractSize - example - TxIn" exampleTypeRepsTxIn - , testCase "AbstractSize - example - Tx" exampleTypeRepsTx - , testProperty "AbstractSize and HasTypeReps - Tx*" propTxAbstractSize - ] diff --git a/eras/byron/ledger/executable-spec/test/Test/Byron/Spec/Ledger/Core/Generators/Properties.hs b/eras/byron/ledger/executable-spec/test/Test/Byron/Spec/Ledger/Core/Generators/Properties.hs deleted file mode 100644 index 1cb496b2d51..00000000000 --- a/eras/byron/ledger/executable-spec/test/Test/Byron/Spec/Ledger/Core/Generators/Properties.hs +++ /dev/null @@ -1,61 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} - -module Test.Byron.Spec.Ledger.Core.Generators.Properties (relevantKValuesAreGenerated) where - -import qualified Byron.Spec.Ledger.Core.Generators as CoreGen -import qualified Byron.Spec.Ledger.GlobalParams as GP -import Control.Monad (when) -import Data.Word (Word64) -import Hedgehog (Property, cover, forAll, property, withTests) - --- | Coverage test to check that we're generating relevant 'k' values. -relevantKValuesAreGenerated :: Property -relevantKValuesAreGenerated = withTests 500 $ - property $ do - let chainLength = 1000 :: Word64 - - k <- forAll $ CoreGen.k chainLength (chainLength `div` 10) - - let slotsPerEpoch :: Word64 - slotsPerEpoch = GP.slotsPerEpoch k - - when (slotsPerEpoch /= 0) $ do - let epochs :: Word64 - epochs = round $ fromIntegral chainLength / (fromIntegral slotsPerEpoch :: Double) - - cover - 5 - "1 epochs " - (epochs == 1) - - cover - 20 - "epochs in [2, 25)" - (2 <= epochs && epochs < 25) - - cover - 5 - "epochs in [25, 50)" - (25 <= epochs && epochs < 50) - - cover - 5 - "50 epochs " - (epochs == 50) - - -- Note that we will not get any epochs between 50 and 100 since this will require the value of - -- @k@ to be a fraction. For instance, to get a @k@ value that will produce 70 epochs for a - -- chain of length 1000, we need (assuming @10k@ slots per-epoch): - -- - -- > 1000 / (10 * 70) ~ 1.428 - -- - -- So if we round this value up, we get 50 epochs: - -- - -- > 1000 / (10 * 2) == 50 - -- - -- And if we round this value down we get 100 epochs. - - cover - 6 - "100 epochs " - (epochs == 100) diff --git a/eras/byron/ledger/executable-spec/test/Test/Byron/Spec/Ledger/Delegation/Examples.hs b/eras/byron/ledger/executable-spec/test/Test/Byron/Spec/Ledger/Delegation/Examples.hs deleted file mode 100644 index 2f4dd285ce9..00000000000 --- a/eras/byron/ledger/executable-spec/test/Test/Byron/Spec/Ledger/Delegation/Examples.hs +++ /dev/null @@ -1,218 +0,0 @@ -{-# LANGUAGE OverloadedLists #-} -{-# LANGUAGE TypeApplications #-} - --- | Examples of the application of the delegation rules. -module Test.Byron.Spec.Ledger.Delegation.Examples ( - deleg, -) -where - -import Byron.Spec.Ledger.Core ( - BlockCount (BlockCount), - Epoch (Epoch), - Owner (Owner), - Sig (Sig), - Slot (Slot), - VKey (VKey), - VKeyGenesis (VKeyGenesis), - owner, - ) -import Byron.Spec.Ledger.Delegation ( - ADELEG, - ADELEGS, - DCert (DCert), - DELEG, - DIState (DIState), - DSEnv (DSEnv), - DSState (DSState), - DState (DState), - SDELEG, - _dIStateDelegationMap, - _dIStateKeyEpochDelegations, - _dIStateLastDelegation, - _dIStateScheduledDelegations, - _dSEnvAllowedDelegators, - _dSEnvEpoch, - _dSEnvK, - _dSEnvSlot, - ) -import Data.Functor.Identity (runIdentity) -import Data.Set (Set, fromList) -import Data.Word (Word64) -import Numeric.Natural (Natural) -import Test.Control.State.Transition.Trace (checkTrace, (.-), (.->)) -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.HUnit (testCase) - --- | Delegation examples. -deleg :: [TestTree] -deleg = - [ testGroup - "Activation" - [ testCase "Example 0" $ - checkTrace @ADELEG runIdentity genKeys $ - pure (DState [] []) - .- (s 0, (gk 0, k 10)) - .-> DState - [(gk 0, k 10)] - [(gk 0, s 0)] - .- (s 1, (gk 1, k 11)) - .-> DState - [(gk 0, k 10), (gk 1, k 11)] - [(gk 0, s 0), (gk 1, s 1)] - -- Here we try to delegate to a key @k 11@ that is already delegated (by - -- @gk 0@), so the state remains unaltered. - .- (s 2, (gk 0, k 11)) - .-> DState - [(gk 0, k 10), (gk 1, k 11)] - [(gk 0, s 0), (gk 1, s 1)] - .- (s 3, (gk 2, k 12)) - .-> DState - [(gk 0, k 10), (gk 1, k 11), (gk 2, k 12)] - [(gk 0, s 0), (gk 1, s 1), (gk 2, s 3)] - , testCase "Example 1" $ - checkTrace @ADELEG runIdentity genKeys $ - pure (DState [] []) - .- (s 0, (gk 0, k 2)) - .-> DState - [(gk 0, k 2)] - [(gk 0, s 0)] - -- Trying to delegate to a key that was delegated already has no effect - -- should be a no-op on the delegation state. - .- (s 1, (gk 1, k 2)) - .-> DState - [(gk 0, k 2)] - [(gk 0, s 0)] - , testCase "Example 2" $ - checkTrace @ADELEG runIdentity genKeys $ - pure (DState [] []) - .- (s 6, (gk 1, k 2)) - .-> DState - [(gk 1, k 2)] - [(gk 1, s 6)] - .- (s 7, (gk 2, k 2)) - .-> DState - [(gk 1, k 2)] - [(gk 1, s 6)] - .- (s 16, (gk 1, k 0)) - .-> DState - [(gk 1, k 0)] - [(gk 1, s 16)] - .- (s 19, (gk 2, k 0)) - .-> DState - [(gk 1, k 0)] - [(gk 1, s 16)] - ] - , testGroup - "Multiple Activations" - [ testCase "Example 0" $ - checkTrace @ADELEGS runIdentity genKeys $ - pure (DState [] []) - .- [ (s 4, (gk 1, k 0)) - , (s 5, (gk 2, k 0)) - , (s 5, (gk 1, k 1)) - ] - .-> DState - [(gk 1, k 1)] - [(gk 1, s 5)] - ] - , testGroup - "Scheduling" - [ testCase "Example 0" $ - checkTrace @SDELEG runIdentity (DSEnv [gk 0, gk 1, gk 2] (e 8) (s 2) (bk 2160)) $ - pure (DSState [] []) - .- dc (gk 0) (k 10) (e 8) - .-> DSState - [(s 4322, (gk 0, k 10))] - [(e 8, gk 0)] - .- dc (gk 1) (k 11) (e 8) - .-> DSState - [(s 4322, (gk 0, k 10)), (s 4322, (gk 1, k 11))] - [(e 8, gk 0), (e 8, gk 1)] - .- dc (gk 2) (k 10) (e 8) - .-> DSState - [(s 4322, (gk 0, k 10)), (s 4322, (gk 1, k 11)), (s 4322, (gk 2, k 10))] - [(e 8, gk 0), (e 8, gk 1), (e 8, gk 2)] - ] - , testGroup - "Interface" - [ testCase "Non-injective scheduled delegations are ignored." $ - let env = - DSEnv - { _dSEnvAllowedDelegators = [gk 0, gk 1] - , _dSEnvEpoch = e 0 - , _dSEnvSlot = s 21 - , _dSEnvK = bk 5 - } - st = - DIState - { _dIStateDelegationMap = - [ - ( gk 0 - , k 0 - ) - , - ( gk 1 - , k 1 - ) - ] - , _dIStateLastDelegation = - [ - ( gk 0 - , s 15 - ) - , - ( gk 1 - , s 0 - ) - ] - , _dIStateScheduledDelegations = - [ - ( s 21 - , - ( gk 1 - , k 0 - ) - ) - ] - , _dIStateKeyEpochDelegations = - fromList - [ - ( e 0 - , gk 0 - ) - , - ( e 0 - , gk 1 - ) - , - ( e 1 - , gk 0 - ) - ] - } - in checkTrace @DELEG runIdentity env $ - pure st .- [] .-> st {_dIStateScheduledDelegations = []} - ] - ] - where - s :: Word64 -> Slot - s = Slot - - k :: Natural -> VKey - k = VKey . Owner - - gk :: Natural -> VKeyGenesis - gk = VKeyGenesis . k - - e :: Word64 -> Epoch - e = Epoch - - bk :: Word64 -> BlockCount - bk = BlockCount - - dc :: VKeyGenesis -> VKey -> Epoch -> DCert - dc vkg vk ep = DCert vkg vk ep (Sig (vk, ep) (owner vkg)) - - genKeys :: Set VKeyGenesis - genKeys = fromList $ map (VKeyGenesis . VKey . Owner) [0 .. 6] diff --git a/eras/byron/ledger/executable-spec/test/Test/Byron/Spec/Ledger/Delegation/Properties.hs b/eras/byron/ledger/executable-spec/test/Test/Byron/Spec/Ledger/Delegation/Properties.hs deleted file mode 100644 index 6b1862625e2..00000000000 --- a/eras/byron/ledger/executable-spec/test/Test/Byron/Spec/Ledger/Delegation/Properties.hs +++ /dev/null @@ -1,414 +0,0 @@ -{-# LANGUAGE DeriveDataTypeable #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TemplateHaskell #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - --- | Properties of the delegation traces induced by the transition systems --- associated with this aspect of the ledger. -module Test.Byron.Spec.Ledger.Delegation.Properties ( - dcertsAreTriggered, - rejectDupSchedDelegs, - tracesAreClassified, - dblockTracesAreClassified, - relevantCasesAreCovered, - onlyValidSignalsAreGenerated, -) -where - -import Byron.Spec.Ledger.Core ( - Epoch (Epoch), - Sig (Sig), - Slot, - SlotCount (SlotCount), - VKey, - VKeyGenesis, - addSlot, - mkVKeyGenesis, - owner, - unSlot, - unSlotCount, - ) -import Byron.Spec.Ledger.Core.Generators (epochGen, slotGen, vkGen) -import qualified Byron.Spec.Ledger.Core.Generators as CoreGen -import Byron.Spec.Ledger.Delegation -import Byron.Spec.Ledger.GlobalParams (slotsPerEpoch) -import Control.Arrow (first, (***)) -import Control.State.Transition ( - Embed, - Environment, - IRC (IRC), - PredicateFailure, - STS (..), - Signal, - State, - TRC (TRC), - applySTS, - initialRules, - judgmentContext, - trans, - transitionRules, - wrapFailed, - (?!), - ) -import Data.Bimap (Bimap) -import qualified Data.Bimap as Bimap -import Data.Data (Data, Typeable) -import Data.Foldable (toList) -import Data.List (foldl') -import qualified Data.Map.Strict as Map -import qualified Data.Set as Set -import Hedgehog ( - Gen, - MonadTest, - Property, - assert, - cover, - forAll, - property, - success, - withTests, - (===), - ) -import qualified Hedgehog.Gen as Gen -import qualified Hedgehog.Range as Range -import Lens.Micro (to, (&), (.~), (^.)) -import Lens.Micro.Extras (view) -import Lens.Micro.TH (makeLenses) -import Test.Control.State.Transition.Generator ( - HasSizeInfo, - HasTrace, - classifySize, - classifyTraceLength, - envGen, - isTrivial, - nonTrivialTrace, - sigGen, - suchThatLastState, - trace, - traceLengthsAreClassified, - ) -import qualified Test.Control.State.Transition.Generator as Transition.Generator -import Test.Control.State.Transition.Trace ( - Trace, - TraceOrder (OldestFirst), - lastState, - preStatesAndSignals, - traceEnv, - traceLength, - traceSignals, - ) - --------------------------------------------------------------------------------- --- Delegation certification triggering tests --------------------------------------------------------------------------------- - --- | Initial state for the ADELEG and ADELEGS systems -initADelegsState :: DState -initADelegsState = - DState - { _dStateDelegationMap = Bimap.empty - , _dStateLastDelegation = Map.empty - } - --- | Initial state for the ADELEG and ADELEGS systems -initSDelegsState :: DSState -initSDelegsState = - DSState - { _dSStateScheduledDelegations = [] - , _dSStateKeyEpochDelegations = Set.empty - } - --- | Initial state for the DELEG system -initialDIState :: DIState -initialDIState = - DIState - { _dIStateDelegationMap = _dStateDelegationMap initADelegsState - , _dIStateLastDelegation = _dStateLastDelegation initADelegsState - , _dIStateScheduledDelegations = initSDelegsState ^. scheduledDelegations - , _dIStateKeyEpochDelegations = _dSStateKeyEpochDelegations initSDelegsState - } - --- | Delegation blocks. Simple blockchain to test delegation. -data DBLOCK deriving (Data, Typeable) - --- | A delegation block. -data DBlock = DBlock - { _blockSlot :: Slot - , _blockCerts :: [DCert] - } - deriving (Show, Eq) - -makeLenses ''DBlock - -data DBlockPredicateFailure - = DPF (PredicateFailure DELEG) - | NotIncreasingBlockSlot - deriving (Eq, Show, Data, Typeable) - --- | This corresponds to a state-transition rule where blocks with increasing --- slot-numbers are produced. -instance STS DBLOCK where - type Environment DBLOCK = DSEnv -- The initial environment is only used to bootstrap the initial state. - type State DBLOCK = (DSEnv, DIState) - type Signal DBLOCK = DBlock - type PredicateFailure DBLOCK = DBlockPredicateFailure - - initialRules = - [ do - IRC env <- judgmentContext - pure (env, initialDIState) - ] - - transitionRules = - [ do - TRC (_, (env, st), dblock) <- judgmentContext - let nextSlot = dblock ^. blockSlot - env ^. slot < nextSlot ?! NotIncreasingBlockSlot - stNext <- trans @DELEG $ TRC (env, st, dblock ^. blockCerts) - let nextEpoch = - if _dSEnvK env == 0 - then 0 - else Epoch $ unSlot nextSlot `div` slotsPerEpoch (_dSEnvK env) - return - ( env - & slot .~ nextSlot - & epoch .~ nextEpoch - , stNext - ) - ] - -instance Embed DELEG DBLOCK where - wrapFailed = DPF - --- | Check that all the delegation certificates in the trace were correctly --- applied. -dcertsAreTriggeredInTrace :: MonadTest m => Trace DBLOCK -> m () -dcertsAreTriggeredInTrace tr = - lastDms === trExpectedDms - where - lastDms = st ^. delegationMap - - trExpectedDms = - expectedDms - lastSlot - ((fromIntegral . unSlotCount . liveAfter) (_dSEnvK env)) - slotsAndDcerts - - (env, st) = lastState tr - - lastSlot :: Int - lastSlot = fst . last $ slotsAndDcerts - - slotsAndDcerts :: [(Int, DBlock)] - slotsAndDcerts = - first (view (to fst . slot . to unSlot . to fromIntegral)) - <$> preStatesAndSignals OldestFirst tr - --- | Compute the expected delegation map after applying the sequence of --- delegation certificates contained in the given blocks. --- --- Delegation certificates are applied in the order they appear in the within a --- block, and blocks are considered in the order they appear on the list passed --- as parameter. -expectedDms :: - -- | Last slot that should have been considered for certificate activation. - Int -> - -- | Delegation certificate liveness parameter. - Int -> - -- | Delegation certificates to apply, and the slot at which these - -- certificates where scheduled. - [(Int, DBlock)] -> - Bimap VKeyGenesis VKey -expectedDms s d sbs = - foldl' insertIfInjective Bimap.empty (fmap delegatorDelegate activeCerts) - where - insertIfInjective :: - Bimap VKeyGenesis VKey -> - (VKeyGenesis, VKey) -> - Bimap VKeyGenesis VKey - insertIfInjective m (k, v) = - if Bimap.memberR v m - then m - else Bimap.insert k v m - activeCerts :: [DCert] - activeCerts = concatMap _blockCerts activeBlocks - - activeBlocks :: [DBlock] - activeBlocks = - snd - <$> filter ((<= activationSlot) . fst) sbs - - activationSlot :: Int - activationSlot = s - d - -instance HasTrace DBLOCK where - envGen - chainLength = - DSEnv - <$> allowedDelegators' - -- We do not expect the current epoch to have an influence on the tests, so - -- we chose a small value here. - <*> epochGen 0 10 - -- As with epochs, the current slot should not have influence in the tests. - <*> slotGen 0 10 - -- 2160 the value of @k@ used in production. However, delegation certificates are activated - -- @2*k@ slots from the slot in which they are issued. This means that if we want to see - -- delegation activations, we need to choose a small value for @k@ since we do not want to blow - -- up the testing time by using large trace lengths. - -- - -- Choosing a small @k@ value amounts to picking a large number of epochs. Given a trace length - -- of @n@, if we have @10k@ slots per-epoch, we can have at most @n `div` 10@ epochs (by - -- choosing @k == 1@). - -- - <*> CoreGen.k chainLength (chainLength `div` 10) - where - -- We scale the number of delegators linearly up to twice the number of genesis keys we use in - -- production. Factor 2 is chosen ad-hoc here. - allowedDelegators' = do - n <- Gen.integral (Range.linear 0 13) - pure $! Set.fromAscList $ mkVKeyGenesis <$> [0 .. n] - - sigGen _ (env, st) = - DBlock <$> nextSlotGen env <*> sigGen @DELEG env st - --- | Generate a next slot. We want the resulting trace to include a large number of epoch changes, --- so we generate an epoch change with higher frequency. -nextSlotGen :: DSEnv -> Gen Slot -nextSlotGen env = - incSlot - <$> Gen.frequency - [ (1, Gen.integral (Range.constant 1 10)) - , (2, pure $! slotsPerEpoch (_dSEnvK env)) - ] - where - incSlot c = (env ^. slot) `addSlot` SlotCount c - -instance HasSizeInfo DBlock where - isTrivial = null . view blockCerts - -dcertsAreTriggered :: Property -dcertsAreTriggered = - withTests 300 $ - property $ - -- The number of tests was determined ad-hoc, since the default failed to - -- uncover the presence of errors. - forAll (nonTrivialTrace () 100) >>= dcertsAreTriggeredInTrace - -dblockTracesAreClassified :: Property -dblockTracesAreClassified = withTests 200 $ - property $ do - let (tl, step) = (100, 10) - tr <- forAll (trace @DBLOCK () tl) - classifyTraceLength tr tl step - -- Classify the traces by the total number of delegation certificates on - -- them. - classifySize "total dcerts" (traceDCerts tr) (fromIntegral . length) tl step - success - --- | Extract the delegation certificates in the blocks, in the order they would --- have been applied. -traceDCertsByBlock :: Trace DBLOCK -> [[DCert]] -traceDCertsByBlock tr = _blockCerts <$> traceSignals OldestFirst tr - --- | Flattended list of DCerts for the given Trace -traceDCerts :: Trace DBLOCK -> [DCert] -traceDCerts = concat . traceDCertsByBlock - -relevantCasesAreCovered :: Property -relevantCasesAreCovered = withTests 400 $ - property $ do - let tl = 100 - tr <- forAll (trace @DBLOCK () tl) - - -- 40% of the traces must contain as many delegation certificates as blocks. - cover - 40 - "there are at least as many delegation certificates as blocks" - (traceLength tr <= length (traceDCerts tr)) - - -- 50% of the traces must contain at most 25% of blocks with empty delegation payload. - cover - 50 - "at most 25% of the blocks can contain empty delegation payload" - (0.25 >= emptyDelegationPayloadRatio (traceDCertsByBlock tr)) - - -- 50% of the traces must contain at least 30% of delegations to this epoch. - cover - 50 - "at least 30% of all certificates delegate in this epoch" - (0.3 <= thisEpochDelegationsRatio (epochDelegationEpoch tr)) - - -- 70% of the traces must contain at least 50% of delegations to the next - -- epoch. - cover - 70 - "at least 50% of the certificates delegate in the next epoch" - (0.5 <= nextEpochDelegationsRatio (epochDelegationEpoch tr)) - - -- 30% of the traces must contain at least 30% of self-delegations. - cover - 30 - "at least 30% of the certificates self delegate" - (0.3 <= selfDelegationsRatio (traceDCerts tr)) - - -- 15% of the traces must contain at least 10% of delegations to the same - -- delegate. - cover - 50 - "at least 25% of delegates have multiple delegators" - (0.05 <= multipleDelegationsRatio (traceDCerts tr)) - where - -- Get the epoch in which the delegation certificates of the trace were - -- applied, paired with the epoch of the delegation certificate. - epochDelegationEpoch :: Trace DBLOCK -> [(Epoch, Epoch)] - epochDelegationEpoch tr = - preStatesAndSignals @DBLOCK OldestFirst tr - & fmap (_dSEnvEpoch . fst *** (fmap depoch . _blockCerts)) - & fmap (\(e, es) -> zip (repeat e) es) - & concat - -onlyValidSignalsAreGenerated :: Property -onlyValidSignalsAreGenerated = - withTests 300 $ Transition.Generator.onlyValidSignalsAreGenerated @DBLOCK () 100 - --------------------------------------------------------------------------------- --- Properties related to the transition rules --------------------------------------------------------------------------------- - --- | Reject delegation certificates where a genesis key tries to delegate in --- the same slot. --- --- This property tries to generate a trace where the last state contains a --- non-empty sequence of scheduled delegations. If such trace cannot be --- generated, then the test will fail when the heap limit is reached, or --- hedgehog gives up. -rejectDupSchedDelegs :: Property -rejectDupSchedDelegs = withTests 300 $ - property $ do - (tr, dcert) <- forAll $ do - tr <- - trace @DELEG () 100 - `suchThatLastState` (not . null . view scheduledDelegations) - let vkS = - case lastState tr ^. scheduledDelegations of - (_, (res, _)) : _ -> res - _ -> - error $ - "This should not happen: " - ++ "tr is guaranteed to contain a non-empty sequence of scheduled delegations" - vkD <- vkGen - epo <- Epoch <$> Gen.integral (Range.linear 0 100) - let dcert = mkDCert vkS (Sig (vkD, epo) (owner vkS)) vkD epo - return (tr, dcert) - let pfs = case applySTS @DELEG (TRC (tr ^. traceEnv, lastState tr, [dcert])) of - Left res -> toList res - Right _ -> [] - assert $ SDelegSFailure (SDelegFailure IsAlreadyScheduled) `elem` pfs - --- | Classify the traces. -tracesAreClassified :: Property -tracesAreClassified = traceLengthsAreClassified @DELEG () 1000 100 diff --git a/eras/byron/ledger/executable-spec/test/Test/Byron/Spec/Ledger/Relation/Properties.hs b/eras/byron/ledger/executable-spec/test/Test/Byron/Spec/Ledger/Relation/Properties.hs deleted file mode 100644 index 7b5e1af9c17..00000000000 --- a/eras/byron/ledger/executable-spec/test/Test/Byron/Spec/Ledger/Relation/Properties.hs +++ /dev/null @@ -1,255 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} - -module Test.Byron.Spec.Ledger.Relation.Properties (testRelation) where - -import Byron.Spec.Ledger.Core hiding ((<|)) -import Data.Bimap (Bimap) -import qualified Data.Bimap as Bimap -import Data.Map.Strict (Map) -import Data.Set (Set, union, (\\)) -import Hedgehog (Gen, MonadTest, Property, PropertyT, forAll, property, withTests, (===)) -import qualified Hedgehog.Gen as Gen -import Hedgehog.Internal.Property (PropertyName (..)) -import qualified Hedgehog.Range as Range -import Test.Tasty (TestName, TestTree, testGroup) -import Test.Tasty.Hedgehog hiding (testProperty) - --- | testProperty has been deprecated. We make our own version here. -testProperty :: TestName -> Property -> TestTree -testProperty s p = testPropertyNamed s (Hedgehog.Internal.Property.PropertyName s) p - --------------------------------------------------------------------------------- --- Properties on Relations --------------------------------------------------------------------------------- - --- | (dom r) ∩ s == dom (s ◁ r) --- --- By restricting the domain of 'Relation r' to 's', the new 'Domain r' --- is an intersection of the original 'Domain r' with 's' -propDomainRestrictionAndIntersection :: - (MonadTest m, Relation r, Ord (Domain r), Show (Domain r)) => - Set (Domain r) -> - r -> - m () -propDomainRestrictionAndIntersection s r = - dom r ∩ s === dom (s ◁ r) - --- | (dom r ∩ s) ◁ r == s ◁ r --- --- Restricting the domain of 'Relation r' to 's' --- is the same as restricting the domain to 'dom r ∩ s'. -propDomainRestrictionAndIntersectionB :: - (MonadTest m, Relation r, Eq r, Show r, Ord (Domain r)) => - Set (Domain r) -> - r -> - m () -propDomainRestrictionAndIntersectionB s r = - (dom r ∩ s) ◁ r === s ◁ r - --- | r ▷ (range r ∩ s) == r ▷ s --- --- By restricting the range of 'Relation r' to 's', the new 'Range r' --- is an intersection of the original 'Range r' with 's' -propRangeRestrictionAndIntersection :: - (MonadTest m, Relation r, Eq r, Show r, Ord (Range r)) => - Set (Range r) -> - r -> - m () -propRangeRestrictionAndIntersection s r = - r ▷ (range r ∩ s) === r ▷ s - --- | (range r) ∩ s == range (r ▷ s) --- --- By restricting the range of 'Relation r' to 's', the new 'Range r' --- is an intersection of the original 'Range r' with 's' -propRangeRestrictionAndIntersectionB :: - (MonadTest m, Relation r, Ord (Range r), Show (Range r)) => - Set (Range r) -> - r -> - m () -propRangeRestrictionAndIntersectionB s r = - (range r) ∩ s === range (r ▷ s) - --- | (dom r \\ s) ◁ r == s ⋪ r --- --- Excluding a set 's' from the domain of 'Relation r' --- is the same as restricting the domain to 'dom r \\ s'. -propDomainExclusionAndSetDifference :: - (MonadTest m, Relation r, Eq r, Show r, Ord (Domain r)) => - Set (Domain r) -> - r -> - m () -propDomainExclusionAndSetDifference s r = - (dom r \\ s) ◁ r === s ⋪ r - --- | (dom r1 ∪ s) ⋪ (r1 ∪ r2) == (dom r1 ∪ s) ⋪ r2 --- --- Excluding 'dom r1 ∪ s' from the domain of 'r1 ∪ r2' --- is the same as excluding 'dom r1 ∪ s' from the domain of just r2 --- (since 'dom r1 ⋪ r1' gives an empty relation) -propDomainExclusionAndUnion :: - ( MonadTest m - , Relation r - , Eq r - , Show r - , Ord (Domain r) - , Ord (Range r) - ) => - Set (Domain r) -> - r -> - r -> - m () -propDomainExclusionAndUnion s r1 r2 = - (dom r1 `union` s) - ⋪ (r1 ∪ r2) - === (dom r1 `union` s) - ⋪ r2 - --------------------------------------------------------------------------------- --- Property helpers --------------------------------------------------------------------------------- - -propRelation :: - (Show r, Show (Domain r)) => - Gen (Set (Domain r)) -> - Gen r -> - (Set (Domain r) -> r -> PropertyT IO ()) -> - Property -propRelation genS genR prop = - withTests 500 $ - property $ do - (s, r) <- (,) <$> forAll genS <*> forAll genR - prop s r - -propRelations :: - (Show r, Show (Domain r)) => - Gen (Set (Domain r)) -> - Gen r -> - (Set (Domain r) -> r -> r -> PropertyT IO ()) -> - Property -propRelations genS genR prop = - withTests 500 $ - property $ do - (s, r1, r2) <- (,,) <$> forAll genS <*> forAll genR <*> forAll genR - prop s r1 r2 - -genInt :: Gen Int -genInt = Gen.integral (Range.constant 0 100) - -genSetOf :: Ord a => Gen a -> Gen (Set a) -genSetOf genA = Gen.set aRange genA - -aRange :: Range.Range Int -aRange = Range.constant 0 50 - -genIntS :: Gen (Set Int) -genIntS = genSetOf genInt - -genMap :: Gen (Map Int Int) -genMap = Gen.map aRange $ (,) <$> genInt <*> genInt - -genSet :: Gen (Set (Int, Int)) -genSet = genSetOf ((,) <$> genInt <*> genInt) - -genPairsList :: Gen [(Int, Int)] -genPairsList = Gen.list aRange ((,) <$> genInt <*> genInt) - -genBimap :: Gen (Bimap Int Int) -genBimap = Bimap.fromList <$> genPairsList - --------------------------------------------------------------------------------- --- Property Tests --------------------------------------------------------------------------------- - -testRelation :: TestTree -testRelation = - testGroup - "Test Relation instances" - [ testGroup - "Relation - Set" - [ testProperty - "DomainRestrictionAndIntersection" - (propRelation genIntS genSet propDomainRestrictionAndIntersection) - , testProperty - "DomainRestrictionAndIntersectionB" - (propRelation genIntS genSet propDomainRestrictionAndIntersectionB) - , testProperty - "DomainExclusionAndSetDifference" - (propRelation genIntS genSet propDomainExclusionAndSetDifference) - , testProperty - "RangeRestrictionAndIntersection" - (propRelation genIntS genSet propRangeRestrictionAndIntersection) - , testProperty - "RangeRestrictionAndIntersectionB" - (propRelation genIntS genSet propRangeRestrictionAndIntersectionB) - ] - , testGroup - "Relation - Map" - [ testProperty - "DomainRestrictionAndIntersection" - (propRelation genIntS genMap propDomainRestrictionAndIntersection) - , testProperty - "DomainRestrictionAndIntersectionB" - (propRelation genIntS genMap propDomainRestrictionAndIntersectionB) - , testProperty - "DomainExclusionAndSetDifference" - (propRelation genIntS genMap propDomainExclusionAndSetDifference) - , testProperty - "RangeRestrictionAndIntersection" - (propRelation genIntS genMap propRangeRestrictionAndIntersection) - , testProperty - "RangeRestrictionAndIntersectionB" - (propRelation genIntS genMap propRangeRestrictionAndIntersectionB) - ] - , testGroup - "Relation - Bimap" - [ testProperty - "DomainRestrictionAndIntersection" - (propRelation genIntS genBimap propDomainRestrictionAndIntersection) - , testProperty - "DomainRestrictionAndIntersectionB" - (propRelation genIntS genBimap propDomainRestrictionAndIntersectionB) - , testProperty - "DomainExclusionAndSetDifference" - (propRelation genIntS genBimap propDomainExclusionAndSetDifference) - , testProperty - "RangeRestrictionAndIntersection" - (propRelation genIntS genBimap propRangeRestrictionAndIntersection) - , testProperty - "RangeRestrictionAndIntersectionB" - (propRelation genIntS genBimap propRangeRestrictionAndIntersectionB) - ] - , testGroup - "Relation - Pairs list" - [ testProperty - "DomainRestrictionAndIntersection" - (propRelation genIntS genPairsList propDomainRestrictionAndIntersection) - , testProperty - "DomainRestrictionAndIntersectionB" - (propRelation genIntS genPairsList propDomainRestrictionAndIntersectionB) - , testProperty - "DomainExclusionAndSetDifference" - (propRelation genIntS genPairsList propDomainExclusionAndSetDifference) - , testProperty - "RangeRestrictionAndIntersection" - (propRelation genIntS genPairsList propRangeRestrictionAndIntersection) - , testProperty - "RangeRestrictionAndIntersectionB" - (propRelation genIntS genPairsList propRangeRestrictionAndIntersectionB) - ] - , testGroup - "Relations" - [ testProperty - "Set instance" - (propRelations genIntS genSet propDomainExclusionAndUnion) - , testProperty - "Map instance" - (propRelations genIntS genMap propDomainExclusionAndUnion) - , testProperty - "Bimap instance" - (propRelations genIntS genBimap propDomainExclusionAndUnion) - ] - ] diff --git a/eras/byron/ledger/executable-spec/test/Test/Byron/Spec/Ledger/UTxO/Properties.hs b/eras/byron/ledger/executable-spec/test/Test/Byron/Spec/Ledger/UTxO/Properties.hs deleted file mode 100644 index 2263dc6f596..00000000000 --- a/eras/byron/ledger/executable-spec/test/Test/Byron/Spec/Ledger/UTxO/Properties.hs +++ /dev/null @@ -1,233 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Test.Byron.Spec.Ledger.UTxO.Properties where - -import Byron.Spec.Ledger.Core (Lovelace, dom, unLovelace, (∩), (∪), (⋪), (◁)) -import Byron.Spec.Ledger.STS.UTXO (UTxOState (UTxOState), pps, reserves, utxo) -import Byron.Spec.Ledger.STS.UTXOW (UTXOW) -import Byron.Spec.Ledger.UTxO ( - Tx (..), - TxBody (TxBody), - TxIn (TxIn), - TxOut (TxOut), - UTxO (UTxO), - balance, - body, - inputs, - outputs, - pcMinFee, - txins, - txouts, - ) -import Control.Arrow (second, (***)) -import Control.Monad (when) -import Data.Foldable (foldl', traverse_) -import qualified Data.Map.Strict as Map -import Data.Set (Set, empty, fromList, union) -import Hedgehog ( - MonadTest, - Property, - classify, - cover, - forAll, - property, - success, - withTests, - (===), - ) -import Lens.Micro ((&), (^.), _2) -import Lens.Micro.Extras (view) -import Test.Control.State.Transition.Generator (classifyTraceLength, trace, traceOfLength) -import Test.Control.State.Transition.Trace ( - Trace, - TraceOrder (OldestFirst), - firstAndLastState, - preStatesAndSignals, - traceEnv, - traceLength, - traceSignals, - _traceInitState, - ) - --------------------------------------------------------------------------------- --- UTxO Properties --------------------------------------------------------------------------------- - --- | Check that the money is constant in the system. -moneyIsConstant :: Property -moneyIsConstant = withTests 300 . property $ do - (st0, st) <- firstAndLastState <$> forAll (trace @UTXOW () 100) - reserves st0 + balance (utxo st0) === reserves st + balance (utxo st) - --- | Check that there is no double spending -noDoubleSpending :: Property -noDoubleSpending = withTests 300 . property $ do - t <- forAll (trace @UTXOW () 100) - let UTxOState {utxo = utxo0} = _traceInitState t - txs = body <$> traceSignals OldestFirst t - when (all (\ti -> dom (txouts ti) ∩ dom utxo0 == empty) txs) $ - traverse_ (noCommonInputsTxs txs) (zip txs [0 ..]) - where - noCommonInputsTxs :: MonadTest m => [TxBody] -> (TxBody, Int) -> m () - noCommonInputsTxs txs (tx, i) = - traverse_ (\txj -> txins' txj ∩ txins' tx === empty) (take i txs) - - txins' :: TxBody -> Set TxIn - txins' = fromList . txins - --- | Check that UTxO is outputs minus inputs -utxoDiff :: Property -utxoDiff = withTests 300 . property $ do - t <- forAll (trace @UTXOW () 100) - let (utxo0, utxoSt) = (utxo *** utxo) . firstAndLastState $ t - txs = body <$> traceSignals OldestFirst t - when (all (\ti -> dom (txouts ti) ∩ dom utxo0 == empty) txs) $ - foldl' union' empty txs ⋪ (utxo0 ∪ allTxOuts txs) === utxoSt - where - union' :: Set TxIn -> TxBody -> Set TxIn - union' s tx = s `union` fromList (txins tx) - - allTxOuts :: [TxBody] -> UTxO - allTxOuts txs = foldl' (∪) (UTxO Map.empty) (map txouts txs) - -utxoAndTxoutsMustBeDisjoint :: Property -utxoAndTxoutsMustBeDisjoint = withTests 300 . property $ do - t <- forAll (trace @UTXOW () 100) - traverse_ utxoAndTxoutsAreDisjoint $ - fmap (second body) $ - preStatesAndSignals OldestFirst t - where - utxoAndTxoutsAreDisjoint (UTxOState {utxo}, tx) = - dom utxo ∩ dom (txouts tx) === mempty - --------------------------------------------------------------------------------- --- Coverage guarantees for UTxO traces --------------------------------------------------------------------------------- - -relevantCasesAreCovered :: Property -relevantCasesAreCovered = withTests 400 $ - property $ do - let tl = 300 - tr <- forAll (traceOfLength @UTXOW () tl) - let n :: Integer - n = fromIntegral $ traceLength tr - - when (n > 0) $ do - let ss = preStatesAndSignals OldestFirst tr - txs = (body . view _2) <$> ss - (avgInputs, avgOutputs) = avgInputsOutputs txs - - cover 20 "all txs have zero fee surplus" (avgFeeSurplus tr n == 0) - cover 20 "avg. tx fee surplus (0,10]" (0 < avgFeeSurplus tr n && avgFeeSurplus tr n <= 10) - cover 20 "avg. tx fee surplus (10,30]" (10 < avgFeeSurplus tr n && avgFeeSurplus tr n <= 30) - cover 1 "avg. tx fee surplus (30,...)" (30 < avgFeeSurplus tr n) - - cover 20 "avg. nr. of tx inputs (1,5]" (1 <= avgInputs && avgInputs <= 5) - cover 20 "avg. nr. of tx inputs (5,10]" (5 < avgInputs && avgInputs <= 10) - - cover 20 "avg. nr. of tx outputs (1,5]" (1 <= avgOutputs && avgOutputs <= 5) - cover 20 "avg. nr. of tx outputs (5,10]" (5 < avgOutputs && avgOutputs <= 10) - - cover 80 "starting UTxO has no future inputs" (all (== empty) (futureInputs tr)) - where - avgFeeSurplus :: Trace UTXOW -> Integer -> Int - avgFeeSurplus tr n = - preStatesAndSignals OldestFirst tr - & map (txFeeSurplus (pcMinFee pps_)) - & sum - & (`div` n) - & fromIntegral - where - pps_ = pps (tr ^. traceEnv) - txFeeSurplus :: (Tx -> Lovelace) -> (UTxOState, Tx) -> Integer - txFeeSurplus txMinFee (st, txw) = - fee - minFee - where - tx_ = body txw - utxo_ = utxo st - fee = unLovelace $ balance (txins tx_ ◁ utxo_) - balance (txouts tx_) - minFee = unLovelace $ txMinFee txw - futureInputs :: Trace UTXOW -> [Set TxIn] - futureInputs tr = - let UTxOState {utxo = utxo0} = _traceInitState tr - txs = body <$> traceSignals OldestFirst tr - in (\ti -> dom (txouts ti) ∩ dom utxo0) <$> txs - --- | Returns the average number of inputs and outputs for a list of transactions. -avgInputsOutputs :: [TxBody] -> (Double, Double) -avgInputsOutputs txs = - case length txs of - 0 -> (0, 0) - n -> - ( nrInputs / (fromIntegral n) - , nrOutputs / (fromIntegral n) - ) - where - nrInputs = fromIntegral $ sum (length . inputs <$> txs) - nrOutputs = fromIntegral $ sum (length . outputs <$> txs) - --------------------------------------------------------------------------------- --- Classified Traces (not included in CI test runs, but useful for development) --------------------------------------------------------------------------------- - --- To test the performance of the integrated shrinker for UTxO traces one could --- replace the return statement of the 'UTXO' @transitionRule@ by: --- --- >>> let xs = --- >>> if 2 < length (txins tx) --- >>> then drop 1 (txins tx) --- >>> else txins tx --- >>> return $ UTxOState { utxo = (xs ⋪ utxo) ∪ txouts tx --- >>> , reserves = reserves + fee --- >>> } --- --- This should give a minimal counterexample of a trace with a signal --- containing exactly 3 inputs, and only one output. -tracesAreClassified :: Property -tracesAreClassified = withTests 200 . property $ do - let (tl, step) = (100, 10) - tr <- forAll (trace @UTXOW () tl) - classifyTraceLength tr tl step - - let pparams = pps (tr ^. traceEnv) - -- Transaction with one input, one output and no witnesses - unitTx = Tx (TxBody [TxIn undefined 0] [TxOut undefined 100]) [] - unitTxFee = pcMinFee pparams unitTx - classify "Unit transaction cost == 0" $ unitTxFee == 0 - classify "Unit transaction cost == 1" $ unitTxFee == 1 - classify "Unit transaction cost [2, 5)" $ 2 <= unitTxFee && unitTxFee < 5 - classify "Unit transaction cost [5, 10)" $ 5 <= unitTxFee && unitTxFee < 10 - classify "Unit transaction cost [10, 25)" $ 10 <= unitTxFee && unitTxFee < 25 - classify "Unit transaction cost [25, 100)" $ 25 <= unitTxFee && unitTxFee < 100 - classify "Unit transaction cost >= 100" $ 100 <= unitTxFee - - -- Classify the average number of inputs and outputs. Note that the intervals - -- were arbitrarily determined, since in order to have a good partition of - -- the interval [0, maximum possible number of inputs/outputs] we'd need to - -- know how many addresses are being used in the trace generation. - let actualTl = traceLength tr - when (0 < actualTl) $ do - let txs = body <$> traceSignals OldestFirst tr - (avgInputs, avgOutputs) = avgInputsOutputs txs - - -- Classify the average number of inputs - classify "avg nr. inputs == 0" $ (0 :: Double) == avgInputs - classify "avg nr. inputs == 1" $ 1 == avgInputs - classify "avg nr. inputs [2, 5)" $ 2 <= avgInputs && avgInputs < 5 - classify "avg nr. inputs [5, 10)" $ 5 <= avgInputs && avgInputs < 10 - classify "avg nr. inputs [10, 25)" $ 10 <= avgInputs && avgInputs < 25 - classify "avg nr. inputs [25, 100)" $ 25 <= avgInputs && avgInputs < 100 - classify ">= 100" $ 100 <= avgInputs - -- Classify the average number of outputs - classify "avg nr. outputs == 0" $ (0 :: Double) == avgOutputs - classify "avg nr. outputs == 1" $ 1 == avgOutputs - classify "avg nr. outputs [2, 5)" $ 2 <= avgOutputs && avgOutputs < 5 - classify "avg nr. outputs [5, 10)" $ 5 <= avgOutputs && avgOutputs < 10 - classify "avg nr. outputs [10, 25)" $ 10 <= avgOutputs && avgOutputs < 25 - classify "avg nr. outputs [25, 100)" $ 25 <= avgOutputs && avgOutputs < 100 - classify ">= 100" $ 100 <= avgOutputs - success diff --git a/eras/byron/ledger/executable-spec/test/Test/Byron/Spec/Ledger/Update/Examples.hs b/eras/byron/ledger/executable-spec/test/Test/Byron/Spec/Ledger/Update/Examples.hs deleted file mode 100644 index c595f6da854..00000000000 --- a/eras/byron/ledger/executable-spec/test/Test/Byron/Spec/Ledger/Update/Examples.hs +++ /dev/null @@ -1,213 +0,0 @@ -{-# LANGUAGE OverloadedLists #-} -{-# LANGUAGE TypeApplications #-} - --- | Examples of the application of the update rules. -module Test.Byron.Spec.Ledger.Update.Examples where - -import Byron.Spec.Ledger.Core ( - BlockCount (BlockCount), - Owner (Owner), - Slot (Slot), - SlotCount (SlotCount), - VKey (VKey), - VKeyGenesis (VKeyGenesis), - unBlockCount, - unOwner, - unSlot, - unSlotCount, - unVKeyGenesis, - ) -import Byron.Spec.Ledger.Update ( - ApName (ApName), - ApVer (ApVer), - FactorA (..), - FactorB (..), - Metadata (Metadata), - PParams (PParams), - ProtVer (ProtVer), - UPIEND, - UpId (UpId), - _bkSgnCntT, - _bkSlotsPerEpoch, - _factorA, - _factorB, - _maxBkSz, - _maxHdrSz, - _maxPropSz, - _maxTxSz, - _pvAlt, - _pvMaj, - _pvMin, - _scriptVersion, - _upAdptThd, - _upTtl, - ) -import Data.Functor.Identity (runIdentity) -import GHC.Exts (fromList) -import Test.Control.State.Transition.Trace (checkTrace, (.-), (.->)) -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.HUnit (testCase) - -upiendExamples :: [TestTree] -upiendExamples = - [ testGroup - "UPIEND" - [ testCase "Example 0" $ - let oldPParams = - PParams - { _maxBkSz = 10000 - , _maxHdrSz = 1000 - , _maxTxSz = 500 - , _maxPropSz = 10 - , _bkSgnCntT = 0.7857142857142857 - , _bkSlotsPerEpoch = SlotCount {unSlotCount = 10} - , _upTtl = SlotCount {unSlotCount = 10} - , _scriptVersion = 0 - , _upAdptThd = 0.6 - , _factorA = FactorA 1 - , _factorB = FactorB 2 - } - newPParams = - PParams - { _maxBkSz = 9900 - , _maxHdrSz = 1000 - , _maxTxSz = 489 - , _maxPropSz = 10 - , _bkSgnCntT = 0.7857142857142857 - , _bkSlotsPerEpoch = SlotCount {unSlotCount = 10} - , _upTtl = SlotCount {unSlotCount = 2} - , _scriptVersion = 0 - , _upAdptThd = 0.0 - , _factorA = FactorA 0 - , _factorB = FactorB 0 - } - in checkTrace @UPIEND - runIdentity - ( Slot {unSlot = 15} - , - [ - ( VKeyGenesis {unVKeyGenesis = VKey Owner {unOwner = 0}} - , VKey Owner {unOwner = 0} - ) - , - ( VKeyGenesis {unVKeyGenesis = VKey Owner {unOwner = 1}} - , VKey Owner {unOwner = 1} - ) - , - ( VKeyGenesis {unVKeyGenesis = VKey Owner {unOwner = 2}} - , VKey Owner {unOwner = 2} - ) - , - ( VKeyGenesis {unVKeyGenesis = VKey Owner {unOwner = 3}} - , VKey Owner {unOwner = 3} - ) - , - ( VKeyGenesis {unVKeyGenesis = VKey Owner {unOwner = 4}} - , VKey Owner {unOwner = 4} - ) - ] - , BlockCount {unBlockCount = 2} - , 5 - ) - $ pure - ( - ( ProtVer {_pvMaj = 0, _pvMin = 0, _pvAlt = 0} - , oldPParams - ) - , [] - , fromList [] - , fromList - [ - ( UpId 1 - , - ( ProtVer {_pvMaj = 1, _pvMin = 0, _pvAlt = 0} - , newPParams - ) - ) - ] - , fromList [(UpId 1, (ApName "", ApVer 0, Metadata))] - , fromList [(UpId 1, Slot {unSlot = 5})] - , fromList - [ - ( UpId 1 - , VKeyGenesis {unVKeyGenesis = VKey Owner {unOwner = 1}} - ) - , - ( UpId 1 - , VKeyGenesis {unVKeyGenesis = VKey Owner {unOwner = 2}} - ) - , - ( UpId 1 - , VKeyGenesis {unVKeyGenesis = VKey Owner {unOwner = 3}} - ) - ] - , fromList - [ - ( ProtVer {_pvMaj = 1, _pvMin = 0, _pvAlt = 0} - , VKeyGenesis {unVKeyGenesis = VKey Owner {unOwner = 1}} - ) - , - ( ProtVer {_pvMaj = 1, _pvMin = 0, _pvAlt = 0} - , VKeyGenesis {unVKeyGenesis = VKey Owner {unOwner = 3}} - ) - ] - , fromList [(UpId 1, Slot {unSlot = 2})] - ) - .- (ProtVer {_pvMaj = 1, _pvMin = 0, _pvAlt = 0}, VKey Owner {unOwner = 0}) - .-> ( - ( ProtVer {_pvMaj = 0, _pvMin = 0, _pvAlt = 0} - , oldPParams - ) - , - [ - ( Slot {unSlot = 15} - , - ( ProtVer {_pvMaj = 1, _pvMin = 0, _pvAlt = 0} - , newPParams - ) - ) - ] - , fromList [] - , fromList - [ - ( UpId 1 - , - ( ProtVer {_pvMaj = 1, _pvMin = 0, _pvAlt = 0} - , newPParams - ) - ) - ] - , fromList [(UpId 1, (ApName "", ApVer 0, Metadata))] - , fromList [(UpId 1, Slot {unSlot = 5})] - , fromList - [ - ( UpId 1 - , VKeyGenesis {unVKeyGenesis = VKey Owner {unOwner = 1}} - ) - , - ( UpId 1 - , VKeyGenesis {unVKeyGenesis = VKey Owner {unOwner = 2}} - ) - , - ( UpId 1 - , VKeyGenesis {unVKeyGenesis = VKey Owner {unOwner = 3}} - ) - ] - , fromList - [ - ( ProtVer {_pvMaj = 1, _pvMin = 0, _pvAlt = 0} - , VKeyGenesis {unVKeyGenesis = VKey Owner {unOwner = 0}} - ) - , - ( ProtVer {_pvMaj = 1, _pvMin = 0, _pvAlt = 0} - , VKeyGenesis {unVKeyGenesis = VKey Owner {unOwner = 1}} - ) - , - ( ProtVer {_pvMaj = 1, _pvMin = 0, _pvAlt = 0} - , VKeyGenesis {unVKeyGenesis = VKey Owner {unOwner = 3}} - ) - ] - , fromList [(UpId 1, Slot {unSlot = 2})] - ) - ] - ] diff --git a/eras/byron/ledger/executable-spec/test/Test/Byron/Spec/Ledger/Update/Properties.hs b/eras/byron/ledger/executable-spec/test/Test/Byron/Spec/Ledger/Update/Properties.hs deleted file mode 100644 index c1b11dbdc83..00000000000 --- a/eras/byron/ledger/executable-spec/test/Test/Byron/Spec/Ledger/Update/Properties.hs +++ /dev/null @@ -1,633 +0,0 @@ -{-# LANGUAGE DeriveDataTypeable #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TupleSections #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Test.Byron.Spec.Ledger.Update.Properties ( - upiregTracesAreClassified, - upiregRelevantTracesAreCovered, - onlyValidSignalsAreGenerated, - ublockTraceLengthsAreClassified, - ublockOnlyValidSignalsAreGenerated, - ublockRelevantTracesAreCovered, - ublockSampleTraceMetrics, -) -where - -import Byron.Spec.Ledger.Core ( - BlockCount (BlockCount), - Slot (Slot), - SlotCount (SlotCount), - dom, - unBlockCount, - ) -import qualified Byron.Spec.Ledger.Core as Core -import Byron.Spec.Ledger.GlobalParams (slotsPerEpoch) -import Byron.Spec.Ledger.Update ( - PParams, - ProtVer, - UPIEND, - UPIEnv, - UPIREG, - UPIState, - UPIVOTES, - UProp, - Vote, - emptyUPIState, - protocolParameters, - ) -import qualified Byron.Spec.Ledger.Update as Update -import Control.State.Transition ( - Embed, - Environment, - IRC (IRC), - PredicateFailure, - STS (..), - Signal, - State, - TRC (TRC), - initialRules, - judgmentContext, - trans, - transitionRules, - wrapFailed, - (?!), - ) -import qualified Data.Bimap as Bimap -import Data.Data (Data, Typeable) -import Data.Foldable (fold, traverse_) -import Data.Function ((&)) -import Data.List.Unique (count) -import Data.Maybe (catMaybes, isNothing) -import qualified Data.Set as Set -import Data.Word (Word64) -import GHC.Stack (HasCallStack) -import Hedgehog (Property, cover, forAll, property, withTests) -import qualified Hedgehog.Gen as Gen -import qualified Hedgehog.Range as Range -import Numeric.Natural (Natural) -import Test.Control.State.Transition.Generator ( - HasTrace, - envGen, - randomTraceOfSize, - ratio, - sigGen, - trace, - traceLengthsAreClassified, - traceOfLength, - ) -import qualified Test.Control.State.Transition.Generator as Transition.Generator -import Test.Control.State.Transition.Trace ( - Trace, - TraceOrder (OldestFirst), - traceLength, - traceSignals, - traceStates, - _traceEnv, - _traceInitState, - ) - -upiregTracesAreClassified :: Property -upiregTracesAreClassified = - withTests 100 $ traceLengthsAreClassified @UPIREG () 100 10 - -upiregRelevantTracesAreCovered :: Property -upiregRelevantTracesAreCovered = withTests 300 $ - property $ do - sample <- forAll (trace @UPIREG () 200) - - cover - 40 - "at least 30% of the update proposals increase the major version" - (0.25 <= ratio increaseMajor sample) - - cover - 40 - "at least 30% of the update proposals increase the minor version" - (0.25 <= ratio increaseMinor sample) - - cover - 30 - "at least 10% of the update proposals do not change the protocol version" - (0.10 <= ratio dontChangeProtocolVersion sample) - - -- We have a roughly fair distribution of issuers. - -- - -- Here we simply compute how many update proposals a given issuer should - -- have made if everybody made the same number of proposals, and check that - -- each issuer didn't produce less than a certain percentage of that. So for - -- instance, if we have 4 genesis keys and a trace length of 100, then in an - -- completely fair distribution of issuers we would expect to have 25 update - -- proposals per-genesis key. So in this test we would check that in 50% of - -- the generated traces, the deviation from the fair distribution (25 update - -- proposals per-key) is no greater than half its expected value (25 * 0.5 = - -- 12.5). - cover - 50 - "the distribution of the proposal issuers is roughly fair" - ( safeMaximum (issuersDeviationsWrtUniformDistribution sample) - <= expectedNumberOfUpdateProposalsPerKey sample * 0.5 - ) - - -------------------------------------------------------------------------------- - -- Maximum block-size checks - -------------------------------------------------------------------------------- - -- NOTE: since we want to generate valid signals, we cannot decrease the block - -- size in most of the cases. - cover - 20 - "at least 5% of the update proposals decrease the maximum block-size" - (0.05 <= ratio (wrtCurrentProtocolParameters Update._maxBkSz Decreases) sample) - - cover - 50 - "at least 30% of the update proposals increase the maximum block-size" - (0.3 <= ratio (wrtCurrentProtocolParameters Update._maxBkSz Increases) sample) - - cover - 30 - "at least 10% of the update proposals do not change the maximum block-size" - (0.1 <= ratio (wrtCurrentProtocolParameters Update._maxBkSz RemainsTheSame) sample) - - -------------------------------------------------------------------------------- - -- Maximum header-size checks - -------------------------------------------------------------------------------- - cover - 20 - "at least 5% of the update proposals decrease the maximum header-size" - (0.05 <= ratio (wrtCurrentProtocolParameters Update._maxHdrSz Decreases) sample) - - cover - 50 - "at least 30% of the update proposals increase the maximum header-size" - (0.3 <= ratio (wrtCurrentProtocolParameters Update._maxHdrSz Increases) sample) - - cover - 50 - "at least 10% of the update proposals do not change the maximum header-size" - (0.1 <= ratio (wrtCurrentProtocolParameters Update._maxHdrSz RemainsTheSame) sample) - - -------------------------------------------------------------------------------- - -- Maximum transaction-size checks - -------------------------------------------------------------------------------- - cover - 20 - "at least 5% of the update proposals decrease the maximum transaction-size" - (0.05 <= ratio (wrtCurrentProtocolParameters Update._maxTxSz Decreases) sample) - - cover - 50 - "at least 30% of the update proposals increase the maximum transaction-size" - (0.3 <= ratio (wrtCurrentProtocolParameters Update._maxTxSz Increases) sample) - - cover - 40 - "at least 10% of the update proposals do not change the maximum transaction-size" - (0.1 <= ratio (wrtCurrentProtocolParameters Update._maxTxSz RemainsTheSame) sample) - - -------------------------------------------------------------------------------- - -- Maximum proposal-size checks - -------------------------------------------------------------------------------- - cover - 20 - "at least 30% of the update proposals decrease the maximum proposal-size" - (0.05 <= ratio (wrtCurrentProtocolParameters Update._maxPropSz Decreases) sample) - - cover - 50 - "at least 30% of the update proposals increase the maximum proposal-size" - (0.3 <= ratio (wrtCurrentProtocolParameters Update._maxPropSz Increases) sample) - - cover - 50 - "at least 10% of the update proposals do not change the maximum proposal-size" - (0.1 <= ratio (wrtCurrentProtocolParameters Update._maxPropSz RemainsTheSame) sample) - where - -- NOTE: after empirically determining the checks above are sensible, we can - -- add more coverage tests for the other protocol parameters. - - increaseMajor :: Trace UPIREG -> Int - increaseMajor traceSample = - protocolVersions traceSample - & fmap Update._pvMaj - & filter (currPvMaj traceSample <) - & length - - protocolVersions :: Trace UPIREG -> [Update.ProtVer] - protocolVersions tr = - fmap Update._upPV (traceSignals OldestFirst tr) - - -- We can take the current protocol version from the initial state of - -- UPIREG, since this transition does not change the protocol version. - currPvMaj :: Trace UPIREG -> Natural - currPvMaj = Update._pvMaj . Update.protocolVersion . _traceInitState - - currentProtocolVersion :: Trace UPIREG -> Update.ProtVer - currentProtocolVersion = Update.protocolVersion . _traceInitState - - increaseMinor :: Trace UPIREG -> Int - increaseMinor traceSample = - protocolVersions traceSample - & fmap Update._pvMin - & filter (currPvMaj traceSample <) - & length - - dontChangeProtocolVersion :: Trace UPIREG -> Int - dontChangeProtocolVersion traceSample = - protocolVersions traceSample - & filter (currentProtocolVersion traceSample ==) - & length - - -- Given a accessor function for the protocol parameters, count the number - -- of update proposals that change the parameter value in the way specified - -- by the 'Change' parameter. - wrtCurrentProtocolParameters :: - Ord v => - (PParams -> v) -> - Change -> - Trace UPIREG -> - Int - wrtCurrentProtocolParameters parameterValue parameterValueChange traceSample = - fmap (parameterValue . Update._upParams) (traceSignals OldestFirst traceSample) - & filter (check parameterValueChange) - & length - where - currentParameterValue = parameterValue . protocolParameters . _traceInitState $ traceSample - check Increases proposedParameterValue = currentParameterValue < proposedParameterValue - check Decreases proposedParameterValue = proposedParameterValue < currentParameterValue - check RemainsTheSame proposedParameterValue = currentParameterValue == proposedParameterValue - - -- TODO: leaving this here as it might be useful in the future. Remove if it - -- isn't (dnadales - 07/17/2019). We use git, but nobody will see if it sits - -- in our history. - -- - -- Count the number of times in the sequence of update proposals that the - -- given protocol value is set to the given value. - -- - -- Example usage: - -- - -- > cover 20 - -- > "at least 5% of the update proposals set the maximum proposal-size to 0" - -- > (0.05 <= ratio (Update._maxPropSz `isSetTo` 0) sample) - -- isSetTo - -- :: Eq v - -- => (PParams -> v) - -- -> v - -- -> Trace UPIREG - -- -> Int - -- isSetTo parameterValue value traceSample - -- = fmap (parameterValue . Update._upParams) (traceSignals OldestFirst traceSample) - -- & filter (value ==) - -- & length - - expectedNumberOfUpdateProposalsPerKey :: Trace UPIREG -> Double - expectedNumberOfUpdateProposalsPerKey traceSample = - if numberOfGenesisKeys == 0 - then 0 - else fromIntegral $ traceLength traceSample `div` numberOfGenesisKeys - where - numberOfGenesisKeys :: Int - numberOfGenesisKeys = - length $ - Bimap.keys $ - delegationMap (_traceEnv traceSample) - - issuersDeviationsWrtUniformDistribution :: - Trace UPIREG -> - [Double] - issuersDeviationsWrtUniformDistribution traceSample = - fmap Update._upIssuer (traceSignals OldestFirst traceSample) - & count - -- Take the list of (issuer, count) pairs and keep the count only. - & fmap snd - & fmap deviationFromExpectation - where - deviationFromExpectation :: Int -> Double - deviationFromExpectation numberOfProposalsPerKey = - abs (fromIntegral numberOfProposalsPerKey - expectedNumberOfUpdateProposalsPerKey traceSample) - - delegationMap (_, dms, _, _) = dms - - safeMaximum xs = if null xs then 0 else maximum xs - --- | Change of a value w.r.t. some other value. -data Change = Increases | Decreases | RemainsTheSame - -onlyValidSignalsAreGenerated :: Property -onlyValidSignalsAreGenerated = - withTests 300 $ Transition.Generator.onlyValidSignalsAreGenerated @UPIREG () 100 - --- | Dummy transition system to test blocks with update payload only. -data UBLOCK deriving (Data, Typeable) - --- | An update block -data UBlock = UBlock - { issuer :: Core.VKey - , blockVersion :: ProtVer - , slot :: Core.Slot - , optionalUpdateProposal :: Maybe UProp - , votes :: [Vote] - } - deriving (Eq, Show) - --- | Update block state -data UBlockState = UBlockState - { upienv :: UPIEnv - , upistate :: UPIState - } - deriving (Eq, Show) - -data UBlockPredicateFailure - = UPIREGFailure (PredicateFailure UPIREG) - | UPIVOTESFailure (PredicateFailure UPIVOTES) - | UPIENDFailure (PredicateFailure UPIEND) - | NotIncreasingBlockSlot - deriving (Eq, Show, Data, Typeable) - -instance STS UBLOCK where - type Environment UBLOCK = UPIEnv - - type State UBLOCK = UBlockState - - type Signal UBLOCK = UBlock - - type PredicateFailure UBLOCK = UBlockPredicateFailure - - initialRules = - [ do - IRC env <- judgmentContext - let (_, _, k, _) = env - -- TODO: I (dnadales) should have used records for the UPIState :/ - ((pv, pps), fads, avs, rpus, raus, cps, vts, bvs, pws) = emptyUPIState - -- We overwrite 'upTtl' in the UBLOCK initial rule, so that we have a system where update - -- proposals can live long enough to allow for confirmation and consideration for - -- adoption. We set the time to live of a proposal to half the number of slots in an - -- epoch, which is about the same value we use in production. - pure - UBlockState - { upienv = env - , upistate = - ( (pv, pps {Update._upTtl = SlotCount $ slotsPerEpoch k `div` 2}) - , fads - , avs - , rpus - , raus - , cps - , vts - , bvs - , pws - ) - } - ] - - transitionRules = - [ do - TRC (_, UBlockState {upienv, upistate}, ublock) <- judgmentContext - let (sn, dms, k, ngk) = upienv - sn < slot ublock ?! NotIncreasingBlockSlot - upistateAfterRegistration <- - case optionalUpdateProposal ublock of - Nothing -> pure upistate - Just updateProposal -> - trans @UPIREG $ TRC (upienv, upistate, updateProposal) - upistateAfterVoting <- - trans @UPIVOTES $ TRC (upienv, upistateAfterRegistration, votes ublock) - upistateAfterEndorsement <- - trans @UPIEND $ TRC (upienv, upistateAfterVoting, (blockVersion ublock, issuer ublock)) - pure - UBlockState - { upienv = (slot ublock, dms, k, ngk) - , upistate = upistateAfterEndorsement - } - ] - -instance Embed UPIREG UBLOCK where - wrapFailed = UPIREGFailure - -instance Embed UPIVOTES UBLOCK where - wrapFailed = UPIVOTESFailure - -instance Embed UPIEND UBLOCK where - wrapFailed = UPIENDFailure - -instance HasTrace UBLOCK where - envGen _ = - do - let numberOfGenesisKeys = 7 - dms <- Update.dmapGen numberOfGenesisKeys - -- We don't want a large value of @k@, otherwise we won't see many - -- confirmed proposals or epoch changes. The problem here is that the - -- initial environment does not know anything about the trace size, and - -- @k@ should be a function of it. - pure (Slot 0, dms, BlockCount 10, numberOfGenesisKeys) - - sigGen _env UBlockState {upienv, upistate} = do - (anOptionalUpdateProposal, aListOfVotes) <- - Update.updateProposalAndVotesGen upienv upistate - - -- Don't shrink the issuer as this won't give us additional insight on a - -- test failure. - aBlockIssuer <- - Gen.prune $ - -- Pick a delegate from the delegation map - Gen.element $ - Bimap.elems (Update.delegationMap upienv) - - aBlockVersion <- - Update.protocolVersionEndorsementGen upienv upistate - - UBlock - <$> pure aBlockIssuer - <*> pure aBlockVersion - <*> nextSlotGen - <*> pure anOptionalUpdateProposal - <*> pure aListOfVotes - where - nextSlotGen = - incSlot - <$> Gen.frequency - [ (5, Gen.integral (Range.constant 1 10)) - , (1, Gen.integral (Range.linear 10 (unBlockCount k))) - ] - where - incSlot c = sn `Core.addSlot` Core.SlotCount c - (sn, _, k, _) = upienv - -ublockTraceLengthsAreClassified :: Property -ublockTraceLengthsAreClassified = - withTests 100 $ traceLengthsAreClassified @UBLOCK () 100 10 - -ublockOnlyValidSignalsAreGenerated :: HasCallStack => Property -ublockOnlyValidSignalsAreGenerated = - withTests 300 $ Transition.Generator.onlyValidSignalsAreGenerated @UBLOCK () 100 - -ublockRelevantTracesAreCovered :: Property -ublockRelevantTracesAreCovered = withTests 300 $ - property $ do - sample <- forAll (traceOfLength @UBLOCK () 100) - - -- Since we generate votes on the most voted proposals, we do not expect a very large percentage - -- of confirmed proposals. As a reference, in the runs that were performed manually, for a trace - -- of 500 blocks, 80-90 update proposals and 20-30 confirmed proposals were observed. - cover - 75 - "at least 20% of the proposals get confirmed" - (0.2 <= confirmedProposals sample / totalProposals sample) - - cover - 75 - "at least 30% of the proposals get unconfirmed" - (0.3 <= 1 - (confirmedProposals sample / totalProposals sample)) - - cover - 75 - "at least 2% of the proposals get voted in the same block " - (0.02 <= fromIntegral (numberOfVotesForBlockProposal sample) / totalProposals sample) - - cover - 75 - "at least 30% of blocks contain no votes" - (0.3 <= ratio numberOfBlocksWithoutVotes sample) - - -- Once the most voted update proposals get votes from all the genesis keys there is no - -- possibility of generating any more votes. So we do not expect a large percentage of blocks with - -- votes. - cover - 70 - "at least 10% of blocks contain votes" - (0.1 <= 1 - ratio numberOfBlocksWithoutVotes sample) - - -- We generate an update proposal with a probability 1/4, but we're conservative about the - -- coverage requirements, since we have variable trace lengths. - cover - 75 - "at least 70% of the blocks contain no update proposals" - (0.7 <= ratio numberOfBlocksWithoutUpdateProposals sample) - - cover - 75 - "at least 10% of the blocks contain an update proposals" - (0.1 <= 1 - ratio numberOfBlocksWithoutUpdateProposals sample) - - -- With traces of length 500, we expect to see about 80-90 proposals, which means that we will - -- have about 8 to 9 proposals scheduled for adoption. - cover - 60 - "at least 10% of the proposals get enough endorsements" - (0.1 <= proposalsScheduledForAdoption sample / totalProposals sample) - - cover - 80 - "at least 5% of the proposals get enough endorsements" - (0.05 <= proposalsScheduledForAdoption sample / totalProposals sample) - -confirmedProposals :: Trace UBLOCK -> Double -confirmedProposals sample = - traceStates OldestFirst sample - & fmap upistate - & fmap Update.confirmedProposals - & fmap dom - & fold - & Set.size - & fromIntegral - -totalProposals :: Trace UBLOCK -> Double -totalProposals sample = - traceSignals OldestFirst sample - & fmap optionalUpdateProposal - & catMaybes - & fmap Update._upId - & length - & fromIntegral - --- Count the number of votes for proposals that were included in the same --- block as the votes. -numberOfVotesForBlockProposal :: Trace UBLOCK -> Int -numberOfVotesForBlockProposal sample = - traceSignals OldestFirst sample - & filter voteForBlockProposal - & length - where - voteForBlockProposal :: UBlock -> Bool - voteForBlockProposal UBlock {optionalUpdateProposal, votes} = - case optionalUpdateProposal of - Nothing -> - False - Just updateProposal -> - Update._upId updateProposal `elem` (Update._vPropId <$> votes) - -numberOfBlocksWithoutVotes :: Trace UBLOCK -> Int -numberOfBlocksWithoutVotes sample = - traceSignals OldestFirst sample - & filter (null . votes) - & length - -numberOfBlocksWithoutUpdateProposals :: Trace UBLOCK -> Int -numberOfBlocksWithoutUpdateProposals sample = - traceSignals OldestFirst sample - & filter (isNothing . optionalUpdateProposal) - & length - -proposalsScheduledForAdoption :: Trace UBLOCK -> Double -proposalsScheduledForAdoption sample = - traceStates OldestFirst sample - & fmap upistate - -- We concat all the future adoptions together - & concatMap Update.futureAdoptions - -- Get the protocol versions of the future adoptions - & fmap (fst . snd) - -- Turn the list of versions into a list, since we're - -- interested in the number of unique protocol-versions - -- that are scheduled for adoption through the trace - -- states. - & Set.fromList - & Set.size - & fromIntegral - --- | Sample a 'UBLOCK' trace, and print different metrics. This can be used in the REPL, and it is --- useful for understanding the traces produced by the 'UBLOCK' transition system. -ublockSampleTraceMetrics :: Word64 -> IO () -ublockSampleTraceMetrics maxTraceSize = do - sample <- randomTraceOfSize @UBLOCK () maxTraceSize - let (_slot, _dms, k, numberOfGenesisKeys) = _traceEnv sample - traverse_ - print - [ "k = " - ++ show k - , "genesis keys = " - ++ show numberOfGenesisKeys - , "trace length = " - ++ show (traceLength sample) - , "proposals = " - ++ show (totalProposals sample) - , "confirmed proposals = " - ++ show (confirmedProposals sample) - , "scheduled proposals = " - ++ show (proposalsScheduledForAdoption sample) - , "total number of votes = " - ++ show (numberOfVotes sample) - , "blocks without votes = " - ++ show (numberOfBlocksWithoutVotes sample) - , "votes for block proposal in same block = " - ++ show (numberOfVotesForBlockProposal sample) - , "ratio of votes for block proposal in same block = " - ++ show (fromIntegral (numberOfVotesForBlockProposal sample) / totalProposals sample) - , "proposals scheduled for adoption = " - ++ show (proposalsScheduledForAdoption sample) - , "confirmed / total proposals = " - ++ show (confirmedProposals sample / totalProposals sample) - , "scheduled / total proposals = " - ++ show (proposalsScheduledForAdoption sample / totalProposals sample) - , "scheduled / confirmed proposals = " - ++ show (proposalsScheduledForAdoption sample / confirmedProposals sample) - ] - -numberOfVotes :: Trace UBLOCK -> Int -numberOfVotes sample = - traceSignals OldestFirst sample - & concatMap votes - & length diff --git a/eras/byron/ledger/formal-spec/Makefile b/eras/byron/ledger/formal-spec/Makefile deleted file mode 100644 index 0090f0d5217..00000000000 --- a/eras/byron/ledger/formal-spec/Makefile +++ /dev/null @@ -1,46 +0,0 @@ -## -## Makefile for the ledger rules, based on: -## -## https://tex.stackexchange.com/questions/40738/how-to-properly-make-a-latex-project -## - -# Document name -DOCNAME = byron-ledger - -# You want latexmk to *always* run, because make does not have all the info. -# Also, include non-file targets in .PHONY so they are run regardless of any -# file of the given name existing. -.PHONY: $(DOCNAME).pdf all clean - -# The first rule in a Makefile is the one executed by default ("make"). It -# should always be the "all" rule, so that "make" and "make all" are identical. -all: $(DOCNAME).pdf - -## -## CUSTOM BUILD RULES -## - -## -## MAIN LATEXMK RULE -## - -# -pdf tells latexmk to generate PDF directly (instead of DVI). -# -pdflatex="" tells latexmk to call a specific backend with specific options. -# -use-make tells latexmk to call make for generating missing files. - -# -interaction=nonstopmode keeps the pdflatex backend from stopping at a -# missing file reference and interactively asking you for an alternative. - -$(DOCNAME).pdf: $(DOCNAME).tex - latexmk -pdf -pdflatex="pdflatex -interaction=nonstopmode -synctex=1" -use-make $(DOCNAME).tex - -watch: $(DOCNAME).tex - latexmk -pvc -pdf -pdflatex="pdflatex -interaction=nonstopmode -synctex=1" -use-make $(DOCNAME).tex - -clean: - latexmk -CA - -install: - mkdir -pv ${out}/nix-support/ - cp $(DOCNAME).pdf ${out}/ - echo "doc-pdf $(DOCNAME) ${out}/$(DOCNAME).pdf" > ${out}/nix-support/hydra-build-products diff --git a/eras/byron/ledger/formal-spec/blockchain-interface.tex b/eras/byron/ledger/formal-spec/blockchain-interface.tex deleted file mode 100644 index fdf3a091376..00000000000 --- a/eras/byron/ledger/formal-spec/blockchain-interface.tex +++ /dev/null @@ -1,1145 +0,0 @@ -\section{Blockchain interface} -\label{sec:blockchain-interface} - -\newcommand{\DIEnv}{\type{DIEnv}} -\newcommand{\DIState}{\type{DIState}} - -\newcommand{\UPIEnv}{\type{UPIEnv}} -\newcommand{\UPIState}{\type{UPIState}} - -\subsection{Delegation interface} -\label{sec:delegation-interface} - -\begin{figure}[htb] - \emph{Delegation interface environments} - \begin{equation*} - \DIEnv = - \left( - \begin{array}{r@{~\in~}lr} - \mathcal{K} & \powerset{\VKeyGen} & \text{allowed delegators}\\ - \var{e} & \Epoch & \text{current epoch}\\ - \var{s} & \Slot & \text{current slot} - \end{array} - \right) - \end{equation*} - - \emph{Delegation interface states} - \begin{equation*} - \DIState - = \left( - \begin{array}{r@{~\in~}lr} - \var{dms} & \VKeyGen \mapsto \VKey & \text{delegation map}\\ - \var{dws} & \VKeyGen \mapsto \Slot & \text{when last delegation occurred}\\ - \var{sds} & \seqof{(\Slot \times (\VKeyGen \times \VKey))} & \text{scheduled delegations}\\ - \var{eks} & \powerset{(\Epoch \times \VKeyGen)} & \text{key-epoch delegations} - \end{array} - \right) - \end{equation*} - - \emph{Delegation transitions} - \begin{equation*} - \_ \vdash \_ \trans{deleg}{\_} \_ \in - \powerset (\DIEnv \times \DIState \times \seqof{\DCert} \times \DIState) - \end{equation*} - \caption{Delegation interface transition-system types} - \label{fig:ts-types:delegation-interface} -\end{figure} - -\subsubsection{Delegation interface rules} -\label{sec:delegation-interface-rules} - -\begin{figure}[htb] - \begin{equation} - \label{eq:rule:delegation-interface-init} - \inference - { - {\left(\begin{array}{l} - \mathcal{K}\\ - e\\ - s - \end{array}\right)} - \vdash - \trans{\hyperref[eq:sdeleg-bootstrap]{sdeleg}}{} - {\left( - \begin{array}{l} - \var{sds_0}\\ - \var{eks_0} - \end{array} - \right)} - & - { - \mathcal{K} - \vdash - \trans{\hyperref[eq:adeleg-bootstrap]{adeleg}}{} - \left( - \begin{array}{l} - \var{dms_0}\\ - \var{dws_0} - \end{array} - \right) - } - } - { - {\left(\begin{array}{l} - \mathcal{K} \\ - e\\ - s - \end{array}\right)} - \vdash - \trans{deleg}{} - { - \left( - \begin{array}{l} - \var{dms_0}\\ - \var{dws_0}\\ - \var{sds_0}\\ - \var{eks_0} - \end{array} - \right) - } - } - \end{equation} - \nextdef - \begin{equation} - \label{eq:rule:delegation-interface} - \inference - { - {\left(\begin{array}{l} - \mathcal{K} \\ - e\\ - s - \end{array}\right)} - \vdash - { - \left( - \begin{array}{l} - \var{sds}\\ - \var{eks} - \end{array} - \right) - } - \trans{\hyperref[fig:rules:delegation-scheduling-seq]{sdelegs}}{\Gamma} - { - \left( - \begin{array}{l} - \var{sds'}\\ - \var{eks'} - \end{array} - \right) - } - & - {\begin{array}{l} - \mathcal{K} - \end{array}} - \vdash - { - \left( - \begin{array}{l} - \var{dms}\\ - \var{dws} - \end{array} - \right) - } - \trans{\hyperref[fig:rules:delegation-seq]{adelegs}}{[.., s] \restrictdom \var{sds'}} - { - \left( - \begin{array}{l} - \var{dms'}\\ - \var{dws'} - \end{array} - \right) - } - } - { - {\left(\begin{array}{l} - \mathcal{K} \\ - e\\ - s - \end{array}\right)} - \vdash - { - \left( - \begin{array}{l} - \var{dms}\\ - \var{dws}\\ - \var{sds}\\ - \var{eks} - \end{array} - \right) - } - \trans{deleg}{\Gamma} - { - \left( - \begin{array}{l} - \var{dms'}\\ - \var{dws'}\\ - \var{[s+1, ..]} \restrictdom \var{sds'}\\ - \var{[e, ..]} \restrictdom \var{eks'} - \end{array} - \right) - } - } - \end{equation} - \caption{Delegation interface rules} - \label{fig:rules:delegation-interface} -\end{figure} - -\subsection{Update-proposals interface} -\label{sec:update-proposals-interface} - -Figure~\ref{fig:ts-types:upi} defines the types of the transition systems -related with the update-proposals interface. The acronyms in the transition -labels have the following meaning: -\begin{description} -\item[UPIREG] Update-proposal-interface registration. -\item[UPIVOTE] Update-proposal-interface vote. -\item[UPIEND] Update-proposal-interface endorsement. -\item[UPIEC] Update-proposal-interface epoch-change. -\end{description} - -In these rules we make use of the abstract constant $\var{ngk}$, defined in -\cref{fig:defs:upi}, which determines the number of genesis keys: - -\begin{figure}[ht] - \emph{Abstract functions} - % - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \var{ngk} & \mathbb{N} & \text{number of genesis keys}\\ - \fun{firstSlot} & \in ~ \Epoch \to \Slot - & \text{first slot of an epoch} - \end{array} - \end{equation*} - - \caption{Update interface types and functions} - \label{fig:defs:upi} -\end{figure} - - -\begin{figure}[htb] - \emph{Update-proposals interface environments} - \begin{align*} - & \UPIEnv - = \left( - \begin{array}{r@{~\in~}lr} - \var{s_n} & \Slot & \text{current slot number}\\ - \var{dms} & \VKeyGen \mapsto \VKey & \text{delegation map} - \end{array}\right) - \end{align*} - % - \emph{Update-proposals interface states} - \begin{align*} - & \UPIState = \\ - & \left( - \begin{array}{r@{~\in~}lr} - (\var{pv}, \var{pps}) & \ProtVer \times \PPMMap - & \text{current protocol information}\\ - \var{fads} & \seqof{(\Slot \times (\ProtVer \times \PPMMap))} - & \text{future protocol version adoptions}\\ - \var{avs} & \ApName \mapsto (\ApVer \times \Slot \times \Metadata) - & \text{application versions}\\ - \var{rpus} & \UPropId \mapsto (\ProtVer \times \PPMMap) - & \text{registered protocol update proposals}\\ - \var{raus} & \UPropId \mapsto (\ApName \times \ApVer \times \Metadata) - & \text{registered software update proposals}\\ - \var{cps} & \UPropId \mapsto \Slot & \text{confirmed proposals}\\ - \var{vts} & \powerset{(\UPropId \times \VKeyGen)} & \text{proposals votes}\\ - \var{bvs} & \powerset{(\ProtVer \times \VKeyGen)} - & \text{endorsement-key pairs}\\ - \var{pws} & \UPropId \mapsto \Slot & \text{proposal timestamps} - \end{array}\right)\\ - \end{align*} - % - \emph{Update-proposals interface transitions} - \begin{equation*} - \begin{array}{r@{~\in~}l} - \_ \vdash \_ \trans{upireg}{\_} \_ & - \powerset (\UPIEnv \times \UPIState \times \UProp \times \UPIState)\\ - \_ \vdash \_ \trans{upivote}{\_} \_ & - \powerset (\UPIEnv \times \UPIState \times \Vote \times \UPIState)\\ - \_ \vdash \_ \trans{upiend}{\_} \_ & - \powerset (\UPIEnv \times \UPIState - \times (\ProtVer \times \VKey) \times \UPIState)\\ - \_ \vdash \_ \trans{upiec}{} \_ & - \powerset (\Epoch \times \UPIState \times \UPIState) - \end{array} - \end{equation*} - \caption{Update-proposals interface transition-system types} - \label{fig:ts-types:upi} -\end{figure} - -\begin{figure}[htb] - \begin{equation} - \label{eq:rule:upi-reg-interface} - \inference - { - {\left( - \begin{array}{l} - \var{pv}\\ - \var{pps}\\ - \var{avs}\\ - \var{dms} - \end{array} - \right)} - \vdash - { - \left( - \begin{array}{l} - \var{rpus}\\ - \var{raus} - \end{array} - \right) - } - \trans{\hyperref[fig:rules:up-registration]{upreg}}{\var{up}} - { - \left( - \begin{array}{l} - \var{rpus'}\\ - \var{raus'} - \end{array} - \right) - } - & - pws' \leteq pws \unionoverrideRight \{ \upId{up} \mapsto s_n\} - } - { - {\left( - \begin{array}{l} - s_n\\ - \var{dms} - \end{array} - \right)} - \vdash - { - \left( - \begin{array}{l} - (\var{pv}, \var{pps})\\ - \var{fads}\\ - \var{avs}\\ - \var{rpus}\\ - \var{raus}\\ - \var{cps}\\ - \var{vts}\\ - \var{bvs}\\ - \var{pws} - \end{array} - \right) - } - \trans{upireg}{\var{up}} - { - \left( - \begin{array}{l} - (\var{pv}, \var{pps})\\ - \var{fads}\\ - \var{avs}\\ - \var{rpus'}\\ - \var{raus'}\\ - \var{cps}\\ - \var{vts}\\ - \var{bvs}\\ - \var{pws'} - \end{array} - \right) - } - } - \end{equation} - \caption{Update-proposals registration rules} - \label{fig:rules:upi-reg-interface} -\end{figure} - -\clearpage - -Rule~\ref{eq:rule:upi-vote} models the effect of voting on an update proposal. - -\begin{figure}[htb] - \begin{equation} - \label{eq:rule:upi-vote} - \inference - { - \var{upAdptThd} \mapsto q \in \var{pps}\\ - {\left( - \begin{array}{l} - s_n\\ - \floor{q \cdot \var{ngk}}\\ - \var{\dom~pws}\\ - \var{dms} - \end{array} - \right)} - \vdash - { - \left( - \begin{array}{l} - \var{cps}\\ - \var{vts} - \end{array} - \right) - } - \trans{\hyperref[fig:rules:up-vote-reg]{upvote}}{\var{v}} - { - \left( - \begin{array}{l} - \var{cps'}\\ - \var{vts'} - \end{array} - \right) - } - } - { - {\left( - \begin{array}{l} - s_n\\ - \var{dms} - \end{array} - \right)} - \vdash - { - \left( - \begin{array}{l} - (\var{pv}, \var{pps})\\ - \var{fads}\\ - \var{avs}\\ - \var{rpus}\\ - \var{raus}\\ - \var{cps}\\ - \var{vts}\\ - \var{bvs}\\ - \var{pws} - \end{array} - \right) - } - \trans{upivote}{\var{v}} - { - \left( - \begin{array}{l} - (\var{pv}, \var{pps})\\ - \var{fads}\\ - \var{avs}\\ - \var{rpus}\\ - \var{raus}\\ - \var{cps'}\\ - \var{vts'}\\ - \var{bvs}\\ - \var{pws} - \end{array} - \right) - } - } - \end{equation} - \caption{Voting on update-proposals rules} - \label{fig:rules:upi-vote} -\end{figure} - -Figure~\ref{fig:st-diagram-sw-up} shows the different states in which a -software proposal update might be: if valid, a software update proposal becomes -active whenever it is included in a block. If the update proposal gets enough -votes, then the corresponding software update proposal becomes confirmed. After -this confirmation becomes stable, the new software version gets adopted. If the -voting period ends without an update proposal being confirmed, then the -corresponding software update proposal gets rejected. -% -Protocol updates on the other hand, involve a slightly different logic, and the -state transition diagram for these kind of updates is shown in -Figure~\ref{fig:st-diagram-pt-up}. - -\begin{figure}[ht] - \centering - \begin{tikzpicture}[ align = center - , node distance = 6em and 12em - , text width = 5em - , font = \footnotesize - , >={Latex[width=0.5em, length=0.5em]} - , every node/.style = { rectangle - , rounded corners - , draw = black - , align = center - , minimum height = 4em } - ] - - \node (active) [fill = blue!10] {Active}; - \node (rejected) [below = of active, fill = red!10] {Rejected}; - \node (confirmed) [right = of active, fill = green!30] {Confirmed}; - \node (adopted) [below = of confirmed, fill = green!30] {Adopted}; - - \tikzset{every node/.style={align=center, text width=10em, text=brown}} - - \draw[->] (active) - edge node [above] {Software Update proposal\\ gets enough votes} - (confirmed); - - \draw[->] (active) - edge node [left] {Voting period \\ends} - (rejected); - - \draw[->] (confirmed) - edge node [right, text width=8em] - {Proposal was confirmed at least $4 \cdot k$ slots ago} - (adopted); - - - \end{tikzpicture} - - \caption{State-transition diagram for software-updates} - \label{fig:st-diagram-sw-up} -\end{figure} - -\clearpage - -A sequence of votes can be applied using $\trans{upivotes}{}$ transitions. The -inference rules for them are presented in \cref{fig:rules:apply-votes}. After -applying a sequence of votes, proposals might get confirmed, which means that -they will be added to the set $\var{cps'}$. In such case, the mapping of -application names to their latest version known to the ledger will be updated to -include the information about the confirmed proposals. Note that, unlike -protocol updates, software updates take effect as soon as a proposal is -confirmed (we cannot wait for stability since we need to preserve compatibility -with the existing chain, where there are software update proposals that were -adopted without waiting for $2\cdot k$ slots). In this rule, we also delete the -confirmed id's from the set of registered application update proposals -($\var{raus}$), since this information is no longer needed once the -application-name to software-version map ($\var{avs}$) is updated. - -Also note that, unlike the rules of \cref{fig:rules:upi-ec}, we need not remove -other update proposals that refer to the software names whose versions were -changed in $\var{avs_{new}}$. The reason for this is that the range of $\var{raus}$ -can contain only one pair of the form $(\var{an}, \wcard, \wcard)$ for any given -application name $\var{an}$ (see Rule~\ref{eq:rule:up-av-validity}). - - -\begin{figure}[htb] - \begin{equation} - \label{eq:rule:apply-votes-base} - \inference - { - } - { - {\left( - \begin{array}{l} - s_n\\ - \var{dms} - \end{array} - \right)} - \vdash - \var{us} - \trans{applyvotes}{\epsilon} - \var{us} - } - \end{equation} - % - \nextdef - % - \begin{equation} - \label{eq:rule:apply-votes-ind} - \inference - { - {\left( - \begin{array}{l} - s_n\\ - \var{dms} - \end{array} - \right)} - \vdash - \var{us} - \trans{applyvotes}{\Gamma} - \var{us'} - & - {\left( - \begin{array}{l} - s_n\\ - \var{dms} - \end{array} - \right)} - \vdash - \var{us'} - \trans{\hyperref[fig:rules:upi-vote]{upivote}}{v} - \var{us''} - } - { - {\left( - \begin{array}{l} - s_n\\ - \var{dms} - \end{array} - \right)} - \vdash - \var{us} - \trans{applyvotes}{\Gamma;v} - \var{us''} - } - \end{equation} - % - \nextdef - % - \begin{equation} - \label{eq:rule:upivotes} - \inference{ - {\left( - \begin{array}{l} - s_n\\ - \var{dms} - \end{array} - \right)} - \vdash - {\left( - \begin{array}{l} - (\var{pv}, \var{pps})\\ - \var{fads}\\ - \var{avs}\\ - \var{rpus}\\ - \var{raus}\\ - \var{cps}\\ - \var{vts}\\ - \var{bvs}\\ - \var{pws} - \end{array} - \right)} - \trans{applyvotes}{\Gamma} - {\left( - \begin{array}{l} - (\var{pv'}, \var{pps'})\\ - \var{fads'}\\ - \var{avs'}\\ - \var{rpus'}\\ - \var{raus'}\\ - \var{cps'}\\ - \var{vts'}\\ - \var{bvs'}\\ - \var{pws'} - \end{array} - \right)}\\ - % - {\begin{array}{r@{~\leteq~}l} - \var{cfm_{raus}} & \dom~(cps') \restrictdom \var{raus'}\\ - \var{avs_{new}} & \{ \var{an} \mapsto (\var{av}, \var{s_n}, m) - \mid (\var{an}, \var{av}, m) \in \var{cfm_{raus}} \} - \end{array}} - }{ - {\left( - \begin{array}{l} - s_n\\ - \var{dms} - \end{array} - \right)} - \vdash - {\left( - \begin{array}{l} - (\var{pv}, \var{pps})\\ - \var{fads}\\ - \var{avs}\\ - \var{rpus}\\ - \var{raus}\\ - \var{cps}\\ - \var{vts}\\ - \var{bvs}\\ - \var{pws} - \end{array} - \right)} - \trans{upivotes}{\Gamma} - {\left( - \begin{array}{l} - (\var{pv'}, \var{pps'})\\ - \var{fads'}\\ - \var{avs'} \unionoverrideRight \var{avs_{new}}\\ - \var{rpus'}\\ - \dom~(cps') \subtractdom \var{raus'}\\ - \var{cps'}\\ - \var{vts'}\\ - \var{bvs'}\\ - \var{pws'} - \end{array} - \right)} - } - \end{equation} - \caption{Applying multiple votes on update-proposals rules} - \label{fig:rules:apply-votes} -\end{figure} -\clearpage - -The interface rule for protocol-version endorsement makes use of the -$\trans{upend}{}$ transition, where we set the threshold for proposal adoption -to: the number of genesis keys ($\var{ngk}$) times the minimum proportion of -genesis keys that need to endorse an update proposal for it to become a -candidate for adoption (given by the protocol parameter $\var{upAdptThd}$). In -addition, the unconfirmed proposals that are older than $u$ blocks are removed -from the parts of the state that hold: -\begin{itemize} -\item the registered protocol and software update proposals, -\item the votes associated with the proposals, -\item the set of endorsement-key pairs, and -\item the block number in which proposals where added. -\end{itemize} - -In Rule~\ref{eq:rule:upi-pend}, the set of proposal id's $\var{pid_{keep}}$ -contains only those proposals that haven't expired yet or that are confirmed. -Once a proposal $\var{up}$ is confirmed, it is removed from the set of -confirmed proposals ($\var{cps}$) when a new a protocol version gets adopted -(see Rule~\ref{eq:rule:upi-ec-pv-change}). -% -The set of endorsement-key pairs is cleaned here as well as in the epoch change -rule (Rule~\ref{eq:rule:upi-ec-pv-change}). The reason for this is that this set grows at -each block, and it can get considerably large if no proposal gets adopted at -the end of an epoch. - -\begin{figure}[htb] - \begin{equation} - \label{eq:rule:upi-pend} - \inference - { - \var{upAdptThd} \mapsto q \in \var{pps} \\ - \left({ - \begin{array}{l} - s_n\\ - \floor{q \cdot \var{ngk}}\\ - \var{dms}\\ - \var{cps}\\ - \var{rpus} - \end{array} - }\right) - \vdash - { - \left( - \begin{array}{l} - \var{fads}\\ - \var{bvs} - \end{array} - \right) - } - \trans{\hyperref[fig:rules:up-end]{upend}}{(\var{bv}, \var{vk})} - { - \left( - \begin{array}{l} - \var{fads'}\\ - \var{bvs'} - \end{array} - \right) - }\\ - \var{upropTTL} \mapsto u \in \var{pps}\\ - { - \begin{array}{r@{~\leteq~}l} - \var{pids_{keep}} & \dom~(pws \restrictrange [s_n - u, ..]) \cup \dom~\var{cps}\\ - \var{vs_{keep}} & \dom~(\range~\var{rpus'})\\ - \var{rpus'} & \var{pids_{keep}} \restrictdom \var{rpus} - \end{array} - } - } - { - {\left( - \begin{array}{l} - s_n\\ - \var{dms} - \end{array} - \right)} - \vdash - { - \left( - \begin{array}{l} - (\var{pv}, \var{pps})\\ - \var{fads}\\ - \var{avs}\\ - \var{rpus}\\ - \var{raus}\\ - \var{cps}\\ - \var{vts}\\ - \var{bvs}\\ - \var{pws} - \end{array} - \right) - } - \trans{upiend}{(\var{bv}, \var{vk})} - { - \left( - \begin{array}{l} - (\var{pv}, \var{pps})\\ - \var{fads'}\\ - \var{avs}\\ - \var{rpus'}\\ - \var{pids_{keep}} \restrictdom \var{raus}\\ - \var{cps}\\ - \var{pids_{keep}} \restrictdom \var{vts}\\ - \var{vs_{keep}} \restrictdom \var{bvs'}\\ - \var{pids_{keep}} \restrictdom \var{pws} - \end{array} - \right) - } - } - \end{equation} - \caption{Proposal endorsement rules} - \label{fig:rules:upi-pend} -\end{figure} - -\clearpage - -Rule~\ref{eq:rule:upi-ec-pv-change} models how the protocol-version and its -parameters are changed depending on an epoch change signal. -% -On an epoch change, this rule will pick a candidate that gathered enough -endorsements at least $4 \cdot k$ slots ago. If a protocol-version candidate -cannot gather enough endorsements $4 \cdot k$ slots before the end of an epoch, -the proposal can only be adopted in the next epoch. The reason for the $4 \cdot -k$ slot delay is to allow a period between knowing when a proposal will be -adopted, and the event of its being adopted. Since update proposals can and will -make large changes to the way the chain operates, it is useful to be able to -guarantee a window in which it is known that no update will take place. -% -Figure~\ref{fig:up-confirmed-too-late} shows an example of a proposal being -confirmed too late in an epoch, where it is not possible to get enough -endorsements in the remaining window. In this Figure we take $k = 2$, and we -assume $4$ endorsements are needed to consider a proposal as candidate for -adoption. -% -Note that, in the final state, we use union override to define the updated -parameters ($\var{pps} \unionoverrideRight \var{pps'}$). This is because candidate -proposal might only update some parameters of the protocol. - -In Rule~\ref{eq:rule:upi-ec-pv-change}, when a new proposal gets adopted, all -the state components that refer to protocol update proposals get emptied. The -reason for this is that at the moment of registering a proposal, we evaluated -it in a state where the protocol parameters that we used for this are no longer -up to date (see for instance \cref{eq:func:can-update}). For instance, assume -we register a proposal $\var{up}$ which only changes the maximum transaction -size to $x$, and the current block size is set to $x + 1$. Then, -$\fun{canUpdate}$ holds, since the maximum transaction size is less than the -maximum block size. If now a new proposal gets adopted that changes the maximum -block size to $x - 1$, then this invalidates $\var{up}$ since $\fun{canUpdate}$ -no longer holds. -% - -If there are no candidates for adoption, then the state variables remain -unaltered (Rule~\ref{eq:rule:upi-ec-pv-unchanged}). - -Also note that the registered software-update proposals need not be cleaned -here, since this is done either when a proposal gets confirmed or when it -expires. - -\begin{figure}[htb] - \begin{equation} - \label{eq:rule:pvbump-change-epoch-only} - \inference - { - [.., s_n - 4 \cdot k] \restrictdom \var{fads} = \epsilon - } - { - {\left(\begin{array}{l} - s_n\\ - \var{fads} - \end{array}\right)} - \vdash - { - \left( - \begin{array}{l} - \var{pv}, \var{pps}\\ - \end{array} - \right) - } - \trans{pvbump}{} - { - \left( - \begin{array}{l} - \var{pv}, \var{pps}\\ - \end{array} - \right) - } - } - \end{equation} - \nextdef - \begin{equation} - \label{eq:rule:pvbump-change} - \inference - { - \wcard ; (\wcard , (\var{pv_c}, \var{pps_c})) \leteq [.., s_n - 4 \cdot k] \restrictdom \var{fads} - } - { - {\left(\begin{array}{l} - s_n\\ - \var{fads} - \end{array}\right)} - \vdash - { - \left( - \begin{array}{l} - \var{pv}, \var{pps}\\ - \end{array} - \right) - } - \trans{pvbump}{} - { - \left( - \begin{array}{l} - \var{pv_c}, \var{pps_c}\\ - \end{array} - \right) - } - } - \end{equation} - \caption{Protocol version bump rules} - \label{fig:rules:pvbump} -\end{figure} - -\begin{figure}[htb] - \begin{equation} - \label{eq:rule:upi-ec-pv-unchanged} - \inference - { - {\left(\begin{array}{l} - \fun{firstSlot}~e_n\\ - \var{fads} - \end{array}\right)} - \vdash - { - \left( - \begin{array}{l} - \var{pv}, \var{pps} - \end{array} - \right) - } - \trans{\hyperref[fig:rules:pvbump]{pvbump}}{} - { - \left( - \begin{array}{l} - \var{pv'}, \var{pps'}\\ - \end{array} - \right) - } &\var{pv} = \var{pv'} - } - { - (e_n) - \vdash - { - \left( - \begin{array}{l} - (\var{pv}, \var{pps})\\ - \var{fads}\\ - \var{avs}\\ - \var{rpus}\\ - \var{raus}\\ - \var{cps}\\ - \var{vts}\\ - \var{bvs}\\ - \var{pws} - \end{array} - \right) - } - \trans{upiec}{} - { - \left( - \begin{array}{l} - (\var{pv}, \var{pps})\\ - \var{fads}\\ - \var{avs}\\ - \var{rpus}\\ - \var{raus}\\ - \var{cps}\\ - \var{vts}\\ - \var{bvs}\\ - \var{pws} - \end{array} - \right) - } - } - \end{equation} - \nextdef - \begin{equation} - \label{eq:rule:upi-ec-pv-change} - \inference - { - {\left(\begin{array}{l} - \fun{firstSlot}~e_n\\ - \var{fads} - \end{array}\right)} - \vdash - { - \left( - \begin{array}{l} - \var{pv}, \var{pps}\\ - \end{array} - \right) - } - \trans{\hyperref[fig:rules:pvbump]{pvbump}}{} - { - \left( - \begin{array}{l} - \var{pv'}, \var{pps'}\\ - \end{array} - \right) - } - & \var{pv} \neq \var{pv'} - } - { - (e_n) - \vdash - { - \left( - \begin{array}{l} - \var{(\var{pv}, \var{pps})}\\ - \var{fads}\\ - \var{avs}\\ - \var{rpus}\\ - \var{raus}\\ - \var{cps}\\ - \var{vts}\\ - \var{bvs}\\ - \var{pws} - \end{array} - \right) - } - \trans{upiec}{} - { - \left( - \begin{array}{l} - (\var{pv'}, \var{pps'})\\ - \epsilon\\ - \var{avs}\\ - \emptyset\\ - \emptyset\\ - \emptyset\\ - \emptyset\\ - \emptyset\\ - \emptyset\\ - \end{array} - \right) - } - } - \end{equation} - \caption{Block version adoption on epoch change rules} - \label{fig:rules:upi-ec} -\end{figure} - -\begin{figure}[htb] - \centering - \begin{tikzpicture} - %% - %% Macros used in this picture - %% - % - % Number of slots - \pgfmathsetmacro{\nrSlots}{12} - % Slot in which the proposal gets confirmed - \pgfmathsetmacro{\cSlot}{1} - % Our special K. - \pgfmathsetmacro{\K}{4} - % Epoch end. - \pgfmathsetmacro{\eend}{11} - % Number of positive votes needed - \pgfmathsetmacro{\votes}{4} - - % Draw the horizontal line - \draw[thick, -Triangle] (0,0) -- (\nrSlots,0) - node[font=\scriptsize,below left=3pt and -8pt]{slots}; - - % % draw vertical lines - \foreach \x in {0,1,...,\nrSlots} - \draw (\x cm, 3pt) -- (\x cm, -3pt); - - % Add a label to with the block number in which the proposal got confirmed. - \node at (\cSlot, -.7) {$b_j$}; - - % Update in cps - \node at (\cSlot, -1.5) {$\var{cps'} = \var{cps} \cup \{ \var{pid} \mapsto b_j \}$}; - - % The no-endorsements red bar. - \draw[red, line width=4pt] (\cSlot, .5) -- +(\K, 0); - - % Brace above the no-endorsement window bar. - \draw[thick, red, decorate, decoration={brace, amplitude=5pt}] - (\cSlot, .7) -- +(\K, 0) - node[black!20!red, midway, above=4pt, font=\scriptsize] {No endorsements possible}; - - % The endorsements window. - \coordinate (ewStart) at (\cSlot + \K, .5); - \coordinate (ewEnd) at ($(\eend - \K, .5)$); - \draw[green, line width=4pt] - (ewStart) -- (ewEnd); - - % Brace above the endorsements window - \coordinate (ewStartB) at ($(ewStart) + (0, 0.2)$); - \coordinate (ewEndB) at ($(ewEnd) + (0, 0.2)$); - \draw[thick, green, decorate, decoration={brace, amplitude=5pt}] - (ewStartB) -- (ewEndB) - node[black!50!green, midway, above=18pt, font=\scriptsize] {Endorsements window}; - - % The no-candidates change window. - \coordinate (nccStart) at (\eend - \K, .5); - \coordinate (nccEnd) at ($(\eend, .5)$); - \draw[gray, line width=4pt] - (nccStart) -- (nccEnd); - - % Brace above the no-candidates change window. - \coordinate (nccStartB) at ($(nccStart) + (0, 0.2)$); - \coordinate (nccEndB) at ($(nccEnd) + (0, 0.2)$); - \draw[thick, gray, decorate, decoration={brace, amplitude=5pt}] - (nccStartB) -- (nccEndB) - node[gray, midway, above=5pt, font=\scriptsize] {No candidates change for current epoch}; - - - % The 2k before end-of-epoch window. - \coordinate (beeStart) at (\cSlot + \K, -.5); - \coordinate (beeEnd) at ($(\cSlot + \K + \votes, -.5)$); - \draw[blue, line width=4pt] - (beeStart) -- (beeEnd); - - % Brace on above the 2k before end-of-epoch window. - \coordinate (beeStartB) at ($(beeStart) - (0, 0.2)$); - \coordinate (beeEndB) at ($(beeEnd) - (0, 0.2)$); - \draw[thick, blue, decorate, decoration={brace, amplitude=5pt}] - (beeEndB) -- (beeStartB) - node[black!20!blue, midway, below=5pt, font=\scriptsize] {$\votes$ endorsements needed}; - - \draw[blue, line width=2pt] (\eend, 3pt) -- (\eend, -3pt); - - \draw[<-] (\cSlot, 4pt) -- +(-1, 1) - node [above=2pt, black, font=\scriptsize] - {Proposal with id $\var{pid}$ gets confirmed}; - - \draw[->] (\eend, -4pt) -- +(1, -1) - node[right, blue, font=\scriptsize] {End of epoch}; - \end{tikzpicture} - \caption{An update proposal confirmed too late} - \label{fig:up-confirmed-too-late} -\end{figure} - -Figure~\ref{fig:st-diagram-pt-up} shows the different states a protocol-update -proposal can be in, and what causes the transitions between them. - -\begin{figure}[ht] - \centering - \begin{tikzpicture}[ align = center - , node distance = 8em and 16em - , text width = 5em - , font = \footnotesize - , >={Latex[width=0.5em, length=0.5em]} - , every node/.style = { rectangle - , rounded corners - , draw = black - , align = center - , minimum height = 4em } - ] - - \node (active) [fill = blue!10] {Active}; - \node (rejected) [below = of active, fill = red!10] {Rejected}; - \node (confirmed) [right = of active, fill = green!10] {Confirmed}; - \node (adopted) [below = of confirmed, fill = green!30] {Adopted}; - - \tikzset{every node/.style={align=center, text width=10em, text=brown}} - - \draw[->] (active) - edge node [above] {Protocol update proposal\\ gets enough votes} - (confirmed); - - \draw[->] (active) - edge node [left] {Voting period \\ends} - (rejected); - - \draw[->] (confirmed) - edge node [above left] - {Proposal with higher version adopted} - (rejected); - - \draw[->] (confirmed) - edge node [right, text width=8em] - {Proposal gets enough endorsements $4 \cdot k$ slots before the end of an epoch} - (adopted); - - \end{tikzpicture} - - \caption{State-transition diagram for protocol-updates} - \label{fig:st-diagram-pt-up} -\end{figure} diff --git a/eras/byron/ledger/formal-spec/byron-ledger.tex b/eras/byron/ledger/formal-spec/byron-ledger.tex deleted file mode 100644 index 42e4b356a25..00000000000 --- a/eras/byron/ledger/formal-spec/byron-ledger.tex +++ /dev/null @@ -1,162 +0,0 @@ -\documentclass[11pt,a4paper]{article} -\usepackage[utf8]{inputenc} -\usepackage[margin=2.5cm]{geometry} -\usepackage{iohk} -\usepackage{microtype} -\usepackage{mathpazo} % nice fonts -\usepackage{amsmath} -\usepackage{amssymb} -\usepackage{latexsym} -\usepackage{mathtools} -\usepackage{stmaryrd} -\usepackage{extarrows} -\usepackage{slashed} -\usepackage[colon]{natbib} -\usepackage[unicode=true,pdftex,pdfa,colorlinks=true]{hyperref} -\usepackage{xcolor} -\usepackage[capitalise,noabbrev,nameinlink]{cleveref} -\usepackage{float} -\floatstyle{boxed} -\restylefloat{figure} -\usepackage{listings} % for code blocks. -%% -%% Package `semantic` can be used for writing inference rules. -%% -\usepackage{semantic} -%% Setup for the semantic package -\setpremisesspace{20pt} -\usepackage{tikz} -\usetikzlibrary{decorations.pathreplacing, positioning, arrows.meta, calc} -% For drawing simple diagrams involving arrows between LaTeX symbols -\usepackage{tikz-cd} - -%% -%% Types -%% -\newcommand{\Bool}{\type{Bool}} -\newcommand{\Tx}{\type{Tx}} -\newcommand{\Ix}{\type{Ix}} -\newcommand{\TxId}{\type{TxId}} -\newcommand{\Addr}{\type{Addr}} -\newcommand{\UTxO}{\type{UTxO}} -\newcommand{\Value}{\type{Value}} -\newcommand{\Lovelace}{\type{Lovelace}} -\newcommand{\UTxOEnv}{\type{UTxOEnv}} -\newcommand{\UTxOState}{\type{UTxOState}} -%% Adding witnesses -\newcommand{\TxIn}{\type{TxIn}} -\newcommand{\TxOut}{\type{TxOut}} -\newcommand{\VKey}{\type{VKey}} -\newcommand{\SKey}{\type{SKey}} -\newcommand{\KeyHash}{\type{KeyHash}} -\newcommand{\SkVk}{\type{SkVk}} -\newcommand{\Sig}{\type{Sig}} -\newcommand{\Data}{\type{Data}} -%% Adding delegation -\newcommand{\Epoch}{\type{Epoch}} -\newcommand{\VKeyGen}{\type{VKey_G}} -%% Blockchain -\newcommand{\Gkeys}{\var{G_{keys}}} -\newcommand{\Block}{\type{Block}} -\newcommand{\CEEnv}{\type{CEEnv}} -\newcommand{\CEState}{\type{CEState}} -\newcommand{\BDEnv}{\type{BDEnv}} -\newcommand{\BDState}{\type{BDState}} -\newcommand{\Slot}{\type{Slot}} -\newcommand{\SlotCount}{\type{SlotCount}} - -%% -%% Functions -%% -\newcommand{\txins}[1]{\fun{txins}~ \var{#1}} -\newcommand{\txid}[1]{\fun{txid}~ \var{#1}} -\newcommand{\txouts}[1]{\fun{txouts}~ \var{#1}} -\newcommand{\values}[1]{\fun{values}~ #1} -\newcommand{\balance}[1]{\fun{balance}~ \var{#1}} -%% UTxO witnesses -\newcommand{\inputs}[1]{\fun{inputs}~ \var{#1}} -\newcommand{\wits}[1]{\fun{wits}~ \var{#1}} -\newcommand{\verify}[3]{\fun{verify} ~ #1 ~ #2 ~ #3} -\newcommand{\sign}[2]{\fun{sign} ~ #1 ~ #2} -\newcommand{\serialised}[1]{\llbracket \var{#1} \rrbracket} -\newcommand{\addr}[1]{\fun{addr}~ \var{#1}} -\newcommand{\hash}[1]{\fun{hash}~ \var{#1}} -\newcommand{\txbody}[1]{\fun{txbody}~ \var{#1}} -\newcommand{\txfee}[1]{\fun{txfee}~ \var{#1}} -\newcommand{\minfee}[2]{\fun{minfee}~ \var{#1}~ \var{#2}} -% wildcard parameter -\newcommand{\wcard}[0]{\underline{\phantom{a}}} -%% Adding ledgers... -\newcommand{\utxo}[1]{\fun{utxo}~ #1} -%% Delegation -\newcommand{\delegatesName}{\fun{delegates}} -\newcommand{\delegates}[3]{\delegatesName~#1~#2~#3} -\newcommand{\dwho}[1]{\fun{dwho}~\var{#1}} -\newcommand{\depoch}[1]{\fun{depoch}~\var{#1}} -%% Delegation witnesses -\newcommand{\dbody}[1]{\fun{dbody}~\var{#1}} -\newcommand{\dwit}[1]{\fun{dwit}~\var{#1}} -%% Blockchain -\newcommand{\bwit}[1]{\fun{bwit}~\var{#1}} -\newcommand{\bslot}[1]{\fun{bslot}~\var{#1}} -\newcommand{\bbody}[1]{\fun{bbody}~\var{#1}} -\newcommand{\bdlgs}[1]{\fun{bdlgs}~\var{#1}} -%% Set notation -\newcommand\Set[2]{\{\,#1\mid#2\,\}} -%% Let bindings -\newcommand{\leteq}{\ensuremath{\mathrel{\mathop:}=}} - -%% For properties -\newcommand{\txs}{\ensuremath{\mathcal{T}}} -\newcommand{\transtar}[2]{\xlongrightarrow[\textsc{#1}]{#2}\negthickspace^{*}} -\newcommand{\biguo}[1]{\ensuremath{\underset{#1}{\underrightarrow\bigcup}}} - -%\includeonly{update-mechanism, delegation, blockchain-interface} - -%% Parameters that control floats placement. See https://robjhyndman.com/hyndsight/latex-floats/ -\setcounter{topnumber}{2} -\setcounter{bottomnumber}{2} -\setcounter{totalnumber}{4} -\renewcommand{\topfraction}{0.85} -\renewcommand{\bottomfraction}{0.85} -\renewcommand{\textfraction}{0.15} -\renewcommand{\floatpagefraction}{0.7} -\newcommand{\DEnv}{\type{DEnv}} -\newcommand{\DSEnv}{\type{DSEnv}} -\newcommand{\DSState}{\type{DSState}} -\newcommand{\DCert}{\type{DCert}} -\newcommand{\DState}{\type{DState}} -\newcommand{\DEState}{\type{DEState}} - - -\newtheorem{definition}{Definition} -\newtheorem{property}{Property} - -\begin{document} - -\input{frontmatter.tex} - -\tableofcontents -\listoffigures - -\include{intro} - -\include{notation} - -\include{crypto-primitives} - -\include{utxo} - -\include{delegation} - -\include{update-mechanism} - -\include{blockchain-interface} - -\include{properties} - -\addcontentsline{toc}{section}{References} -\bibliographystyle{plainnat} -\bibliography{references} - -\end{document} diff --git a/eras/byron/ledger/formal-spec/crypto-primitives.tex b/eras/byron/ledger/formal-spec/crypto-primitives.tex deleted file mode 100644 index e21fade0d19..00000000000 --- a/eras/byron/ledger/formal-spec/crypto-primitives.tex +++ /dev/null @@ -1,103 +0,0 @@ -\section{Cryptographic primitives} -\label{sec:crypto-primitives} - -Figure~\ref{fig:crypto-defs} introduces the cryptographic abstractions used in -this document. Note that we define a family of serialization functions -$\serialised{\wcard}_\type{A}$, for all types $\type{A}$ for which such -serialization function can be defined. When the context is clear, we omit the -type suffix, and use simply $\serialised{\wcard}$. - -\begin{figure}[htb] - \emph{Abstract types} - % - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \var{sk} & \SKey & \text{signing key}\\ - \var{vk} & \VKey & \text{verifying key}\\ - \var{hk} & \KeyHash & \text{hash of a key}\\ - \sigma & \Sig & \text{signature}\\ - \var{d} & \Data & \text{data}\\ - \end{array} - \end{equation*} - \emph{Derived types} - \begin{equation*} - \begin{array}{r@{~\in~}lr} - (sk, vk) & \SkVk & \text{signing-verifying key pairs} - \end{array} - \end{equation*} - \emph{Abstract functions} - % - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \hash{} & \VKey \to \KeyHash - & \text{hash function} \\ - % - \fun{verify} & \VKey \times \Data \times \Sig - & \text{verification relation}\\ - \serialised{\wcard}_\type{A} & \type{A} \to \Data - & \text{serialization function for values of type $\type{A}$}\\ - \fun{sign} & \SKey \to \Data \to \Sig - & \text{signing function} - \end{array} - \end{equation*} - \emph{Constraints} - \begin{align*} - & \forall (sk, vk) \in \SkVk,~ m \in \Data,~ \sigma \in \Sig \cdot - \sign{sk}{m} = \sigma \Rightarrow \verify{vk}{m}{\sigma} - \end{align*} - \emph{Notation} - \begin{align*} - & \mathcal{V}^\sigma_{\var{vk}}~{d} = \verify{vk}{d}{\sigma} - & \text{shorthand notation for } \fun{verify} - \end{align*} - \caption{Cryptographic definitions} - \label{fig:crypto-defs} -\end{figure} - -\subsection{A note on serialization} -\label{sec:a-note-on-serialization} - -\begin{definition}[Distributivity over serialization functions] - For all types $\type{A}$ and $\type{B}$, given a function - $\fun{f} \in \type{A} \to \type{B}$, we say that the serialization function - for values of type $\type{A}$, namely $\serialised{ }_\type{A}$ distributes - over $\fun{f}$ if there exists a function $\fun{f}_{\serialised{ }}$ such - that for all $a \in \type{A}$: - \begin{equation} - \label{eq:distributivity-serialization} - \serialised{\fun{f}~a}_\type{B} = \fun{f}_{\serialised{ }}~\serialised{a}_\type{A} - \end{equation} -\end{definition} -The equality defined in \cref{eq:distributivity-serialization} means that the -following diagram commutes: - -\[ - \begin{tikzcd} - A \arrow{r}{\fun{f}} \arrow{d}{\serialised{ }_\type{A}} - & B \arrow{d}{\serialised{ }_\type{B}} \\ - \Data \arrow{r}{\fun{f}_{\serialised{ }}} & \Data - \end{tikzcd} -\] - -Throughout this specification, whenever we use -$\serialised{\fun{f}~a}_\type{B}$, for some type $\type{B}$ and function -$\fun{f} \in \type{A} \to \type{B}$, we assume that $\serialised{ }_\type{A}$ -distributes over $\fun{f}$ (see for example -Rule~\ref{eq:utxo-witness-inductive}). This property is what allow us to -extract a component of the serialized data (if it is available) without -deserializing it in the cases in which the deserialization function -($\serialised{\wcard}^{-1}_\type{A}$) doesn't behave as an inverse of -serialization: - -\begin{equation*} - \serialised{\wcard}^{-1}_\type{A} \cdot \serialised{\wcard}_\type{A} \neq \fun{id}_\type{A} -\end{equation*} - -For the cases in which such an inverse exists, given a function $\fun{f}$, we -can readily define $\fun{f}_{\serialised{ }}$ as: - -\begin{equation*} - \fun{f}_{\serialised{ }} \dot{=} \serialised{\wcard}_\type{B} - . \fun{f} - . \serialised{\wcard}^{-1}_\type{A} -\end{equation*} diff --git a/eras/byron/ledger/formal-spec/delegation.tex b/eras/byron/ledger/formal-spec/delegation.tex deleted file mode 100644 index ec19f618fea..00000000000 --- a/eras/byron/ledger/formal-spec/delegation.tex +++ /dev/null @@ -1,474 +0,0 @@ -\section{Delegation} -\label{sec:delegation} - -An agent owning a key that can sign new blocks can delegate its signing rights -to another key by means of \textit{delegation certificates}. These certificates -are included in the ledger, and therefore also included in the body of the -blocks in the blockchain. - -There are several restrictions on a certificate posted on the blockchain: -\begin{enumerate} -\item Only genesis keys can delegate. -\item Certificates must be properly signed by the delegator. -\item Any given key can delegate at most once per-epoch. -\item Any given key can issue at most one certificate in a given slot. -\item The epochs in the certificates must refer to the current or to the next - epoch. We do not want to allow certificates from past epochs so that a - delegation certificate cannot be replayed. On the other hand if we allow - certificates with arbitrary future epochs, then a malicious key can issue a - delegation certificate per-slot, setting the epoch to a sufficiently large - value. This will cause a blow up in the size of the ledger state since we - will not be able to clean $\var{eks}$ (we only clean past epochs). Also note - that we do not check the relation between the certificate epoch and the slot - in which the certificate becomes active. This would bring additional - complexity without any obvious benefit. -\item Certificates do not become active immediately, but they require a certain - number of slots till they become stable in all the nodes. -\end{enumerate} -These conditions are formalized in \cref{fig:rules:delegation-scheduling}. -Rule~\ref{eq:rule:delegation-scheduling} determines when a certificate can -become ``scheduled''. The definitions used in these rules are presented in -\cref{fig:defs:delegation-scheduling}, and the types of the system induced by -$\trans{sdeleg}{\wcard}$ are presented in -\cref{fig:ts-types:delegation-scheduling}. Here and in the remaining rules we -will be using $k$ as an abstract constant that gives us the chain stability -parameter. - -\begin{figure}[htb] - \emph{Abstract types} - \begin{equation*} - \begin{array}{r@{~\in~}lr} - c & \DCert & \text{delegation certificate}\\ - \var{vk_g} & \VKeyGen & \text{genesis verification key}\\ - \end{array} - \end{equation*} - - \emph{Derived types} - \begin{equation*} - \begin{array}{r@{~\in~}l@{\qquad=\qquad}r@{~\in~}lr} - \var{e} & \Epoch & n & \mathbb{N} & \text{epoch}\\ - \var{s} & \Slot & s & \mathbb{N} & \text{slot}\\ - \var{d} & \SlotCount & s & \mathbb{N} & \text{slot} - \end{array} - \end{equation*} - - \emph{Constraints} - \begin{align*} - \VKeyGen \subseteq \VKey - \end{align*} - - \emph{Abstract functions} - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \fun{dbody} & \DCert \to (\VKey \times \Epoch) - & \text{body of the delegation certificate}\\ - \fun{dwit} & \DCert \to (\VKeyGen \times \Sig) - & \text{witness for the delegation certificate}\\ - \fun{dwho} & \DCert \mapsto (\VKeyGen \times \VKey) - & \text{who delegates to whom in the certificate}\\ - \fun{depoch} & \DCert \mapsto \Epoch - & \text{certificate epoch}\\ - \var{k} & \mathbb{N} & \text{chain stability parameter} - \end{array} - \end{equation*} - \caption{Delegation scheduling definitions} - \label{fig:defs:delegation-scheduling} -\end{figure} - -\begin{figure}[htb] - \emph{Delegation scheduling environments} - \begin{equation*} - \DSEnv = - \left( - \begin{array}{r@{~\in~}lr} - \mathcal{K} & \powerset{\VKeyGen} & \text{allowed delegators}\\ - \var{e} & \Epoch & \text{epoch}\\ - \var{s} & \Slot & \text{slot}\\ - \end{array} - \right) - \end{equation*} - - \emph{Delegation scheduling states} - \begin{equation*} - \DSState - = \left( - \begin{array}{r@{~\in~}lr} - \var{sds} & \seqof{(\Slot \times (\VKeyGen \times \VKey))} & \text{scheduled delegations}\\ - \var{eks} & \powerset{(\Epoch \times \VKeyGen)} & \text{key-epoch delegations} - \end{array} - \right) - \end{equation*} - - \emph{Delegation scheduling transitions} - \begin{equation*} - \var{\_} \vdash - \var{\_} \trans{sdeleg}{\_} \var{\_} - \subseteq \powerset (\DSEnv \times \DSState \times \DCert \times \DSState) - \end{equation*} - \caption{Delegation scheduling transition-system types} - \label{fig:ts-types:delegation-scheduling} -\end{figure} - -\begin{figure}[htb] - \begin{equation} - \label{eq:sdeleg-bootstrap} - \inference - { - \var{sds_0} \leteq \epsilon - & - \var{eks_0} \leteq \emptyset - } - { - {\left(\begin{array}{l} - \mathcal{K}\\ - e\\ - s - \end{array}\right)} - \vdash - \trans{sdeleg}{} - \left( - \begin{array}{l} - \var{sds_0}\\ - \var{eks_0} - \end{array} - \right) - } - \end{equation} - \nextdef - \begin{equation} - \label{eq:rule:delegation-scheduling} - \inference - { - (\var{vk_s},~ \sigma) \leteq \dwit{c} - & \verify{vk_s}{\serialised{\dbody{c}}}{\sigma} & vk_s \in \mathcal{K}\\ ~ \\ - (\var{vk_s},~ \var{vk_d}) \leteq \dwho{c} & e_d \leteq \depoch{c} - & (e_d,~ \var{vk_s}) \notin \var{eks} & 0 \leq e_d - e \leq 1 \\ ~ \\ - d \leteq 2 \cdot k & (s + d,~ (\var{vk_s},~ \wcard)) \notin \var{sds}\\ - } - { - {\left(\begin{array}{l} - \mathcal{K}\\ - e\\ - s - \end{array}\right)} - \vdash - { - \left( - \begin{array}{l} - \var{sds}\\ - \var{eks} - \end{array} - \right) - } - \trans{sdeleg}{c} - { - \left( - \begin{array}{l} - \var{sds}; (s + d,~ (\var{vk_s},~ \var{vk_d}))\\ - \var{eks} \cup \{(e_d,~ \var{vk_s})\} - \end{array} - \right) - } - } - \end{equation} - \caption{Delegation scheduling rules} - \label{fig:rules:delegation-scheduling} -\end{figure} - -\clearpage - -The rules in Figure~\ref{fig:rules:delegation} model the activation of -delegation certificates. Once a scheduled certificate becomes active -(see~\cref{sec:delegation-interface-rules}), the delegation map is changed by -it only if: -\begin{itemize} -\item The delegating key ($\var{vk_s}$) did not activate a delegation - certificate in a slot greater or equal than the certificate slot ($s$). This - check is performed to avoid having the constraint that the delegation - certificates have to be activated in slot order. -\item The key being delegated to ($\var{vk_d}$) has not been delegated by - another key (injectivity constraint). -\end{itemize} -The reason why we check that the delegation map is injective is to avoid a -potential risk (during the OBFT era) in which a malicious node gets control of -a genesis key $\var{vk_m}$ that issued the maximum number of blocks in a given -window. By delegating to another key $\var{vk_d}$, which was already delegated to -by some other key $\var{vk_g}$, the malicious node could prevent $\var{vk_g}$ -from issuing blocks. Even though the delegation certificates take several slots -to become effective, the malicious node could calculate when the certificate -would become active, and issue a delegation certificate at the right time. - -As an additional advantage, by having an injective delegation map, we are able -to simplify our specification when it comes to counting the blocks issued by -(delegates of) genesis keys. - -Note also, that we could not impose the injectivity constraint in -Rule~\ref{eq:rule:delegation-scheduling} since we do not have information about -the delegations that will become effective. We could of course detect a -violation in the injectivity constraint when scheduling a delegation -certificate, but this will lead to a complex computation and larger state in -said rule. - -Finally, note that we do not want to reject a scheduled delegation that would -violate the injectivity constraint (since delegation might not have been -scheduled by the node issuing the block). Instead, we simply ignore the -delegation certificate (Rule~\ref{eq:rule:delegation-nop}). - -\begin{figure}[htb] - \begin{align*} - & \unionoverrideRight \in (A \mapsto B) \to (A \mapsto B) \to (A \mapsto B) - & \text{union override}\\ - & d_0 \unionoverrideRight d_1 = d_1 \cup (\dom d_1 \subtractdom d_0) - \end{align*} - \caption{Functions used in delegation rules} - \label{fig:funcs:delegation} -\end{figure} - -\begin{figure}[htb] - \emph{Delegation environments} - \begin{equation*} - \DEnv = - \left( - \begin{array}{r@{~\in~}lr} - \mathcal{K} & \powerset{\VKeyGen} & \text{allowed delegators} - \end{array} - \right) - \end{equation*} - - \emph{Delegation states} - \begin{align*} - & \DState - = \left( - \begin{array}{r@{~\in~}lr} - \var{dms} & \VKeyGen \mapsto \VKey & \text{delegation map}\\ - \var{dws} & \VKeyGen \mapsto \Slot & \text{when last delegation occurred}\\ - \end{array}\right) - \end{align*} - \emph{Delegation transitions} - \begin{equation*} - \_ \vdash \_ \trans{adeleg}{\_} \_ \in - \powerset (\DEnv \times \DState \times (\Slot \times (\VKeyGen \times \VKey)) \times \DState) - \end{equation*} - \caption{Delegation transition-system types} - \label{fig:ts-types:delegation} -\end{figure} - -\begin{figure}[htb] - \begin{equation} - \label{eq:adeleg-bootstrap} - \inference - { - \var{dms_0} \leteq \Set{k \mapsto k}{k \in \mathcal{K}} & - \var{dws_0} \leteq \Set{k \mapsto 0}{k \in \mathcal{K}} - } - { - \left( - \mathcal{K} - \right) - \vdash - \trans{adeleg}{} - \left( - \begin{array}{l} - \var{dms_0}\\ - \var{dws_0} - \end{array} - \right) - } - \end{equation} - \nextdef - \begin{equation}\label{eq:rule:delegation-change} - \inference - { - \var{vk_d} \notin \range~\var{dms} & (\var{vk_s} \mapsto s_p \in \var{dws} \Rightarrow s_p < s) - } - { - \left(\mathcal{K}\right) - \vdash - \left( - \begin{array}{r} - \var{dms}\\ - \var{dws} - \end{array} - \right) - \trans{adeleg}{(s,~ (vk_s,~ vk_d))} - \left( - \begin{array}{lcl} - \var{dms} & \unionoverrideRight & \{\var{vk_s} \mapsto \var{vk_d}\}\\ - \var{dws} & \unionoverrideRight & \{\var{vk_s} \mapsto s \} - \end{array} - \right) - } - \end{equation} - \nextdef - \begin{equation}\label{eq:rule:delegation-nop} - \inference - {\var{vk_d} \in \range~\var{dms} \vee (\var{vk_s} \mapsto s_p \in \var{dws} \wedge s \leq s_p) - } - { - \left(\mathcal{K}\right) - \vdash - \left( - \begin{array}{r} - \var{dms}\\ - \var{dws} - \end{array} - \right) - \trans{adeleg}{(s,~ (\var{vk_s},~ \var{vk_d}))} - \left( - \begin{array}{lcl} - \var{dms}\\ - \var{dws} - \end{array} - \right) - } - \end{equation} - \caption{Delegation inference rules} - \label{fig:rules:delegation} -\end{figure} - -\clearpage - -\subsection{Delegation sequences} -\label{sec:delegation-sequences} - -This section presents the rules that model the effect that sequences of -delegations have on the ledger. - -\begin{figure}[htb] - \begin{equation} - \inference - { - {\begin{array}{l} - \var{delegEnv} - \end{array}} - \vdash - \trans{\hyperref[eq:sdeleg-bootstrap]{sdeleg}}{} - \var{delegSt} - } - { - {\begin{array}{l} - \var{delegEnv} - \end{array}} - \vdash - \trans{sdelegs}{} - \var{delegSt} - } - \end{equation} - \nextdef - \begin{equation} - \label{eq:rule:delegation-scheduling-seq-base} - \inference - {} - { - \var{delegEnv} - \vdash - \var{delegSt} - \trans{sdelegs}{\epsilon} - \var{delegSt} - } - \end{equation} - \nextdef - \begin{equation} - \label{eq:rule:delegation-scheduling-seq-ind} - \inference - { - \var{delegEnv} - \vdash - \var{delegSt} - \trans{sdelegs}{\Gamma} - \var{delegSt'} - & - \var{delegEnv} - \vdash - \var{delegSt'} - \trans{\hyperref[fig:rules:delegation-scheduling]{sdeleg}}{c} - \var{delegSt''} - } - { - \var{delegEnv} - \vdash - \var{delegSt} - \trans{sdelegs}{\Gamma; c} - \var{delegSt''} - } - \end{equation} - \caption{Delegation scheduling sequence rules} - \label{fig:rules:delegation-scheduling-seq} -\end{figure} - -\begin{figure} - \begin{equation} - \inference - { - {\begin{array}{l} - \var{delegEnv} - \end{array}} - \vdash - \trans{\hyperref[eq:adeleg-bootstrap]{adeleg}}{} - \var{delegSt} - } - { - {\begin{array}{l} - \var{delegEnv} - \end{array}} - \vdash - \trans{adelegs}{} - \var{delegSt} - } - \end{equation} - \nextdef - \begin{equation} - \label{eq:rule:delegation-seq-base} - \inference - {} - { - \var{delegEnv} - \vdash - \var{delegSt} - \trans{adelegs}{\epsilon} - \var{delegSt} - } - \end{equation} - \nextdef - \begin{equation} - \label{eq:rule:delegation-seq-ind} - \inference - { - \var{delegEnv} - \vdash - \var{delegSt} - \trans{adelegs}{\Gamma} - \var{delegSt'} - & - \var{delegEnv} - \vdash - \var{delegSt'} - \trans{\hyperref[fig:rules:delegation]{adeleg}}{c} - \var{delegSt''} - } - { - \var{delegEnv} - \vdash - \var{delegSt} - \trans{adelegs}{\Gamma; c} - \var{delegSt''} - } - \end{equation} - \caption{Delegations sequence rules} - \label{fig:rules:delegation-seq} -\end{figure} - -\subsection{Deviation from the \texttt{cardano-sl} implementation} -\label{sec:delegation:deviation-cardano-sl-imp} - -In the \texttt{cardano-sl} implementation, the block issuer needs to include a -delegation certificate in the block, which witness the fact that a genesis key -gave the issuer the rights of issuing blocks on behalf of this genesis key. The -reasons why this was implemented in this way in \texttt{cardano-sl} are not -clear, since the delegation certificates are posted on the chain, so the ledger -state contains the information about who delegates to whom. Hence in the -current specification we use a heavyweight delegation scheme, i.e. where the -certificates are posted on the chain, but an implementation of this rules that -aims at being compatible with the implementation in \texttt{cardano-sl} has to -take the fact that delegation certificates are also present in a block into -account. diff --git a/eras/byron/ledger/formal-spec/flake.nix b/eras/byron/ledger/formal-spec/flake.nix deleted file mode 100644 index d1dbc4b1273..00000000000 --- a/eras/byron/ledger/formal-spec/flake.nix +++ /dev/null @@ -1,60 +0,0 @@ -{ - outputs = inputs: { - packages = - builtins.mapAttrs (_: {nixpkgs, ...}: { - default = with nixpkgs; - buildLatex { - name = "byron-ledger-spec"; - texFiles = ["byron-ledger"]; - meta = with lib; { - description = "Byron Ledger Specification"; - license = licenses.asl20; - platforms = platforms.linux; - }; - src = filterLatex ./.; - - texInputs = { - inherit - (texlive) - scheme-small - # libraries - - stmaryrd - lm-math - amsmath - extarrows - cleveref - semantic - tikz-cd - xcolor - # bclogo and dependencies - - bclogo - mdframed - xkeyval - etoolbox - needspace - pgf - # font libraries `mathpazo` seems to depend on palatino, but it isn't pulled. - - mathpazo - palatino - microtype - # libraries for marginal notes - - xargs - todonotes - # build tools - - latexmk - # Referencing - - zref - ; - }; - buildInputs = [gitMinimal]; - }; - }) - (inputs.main or (import ../../../../nix/flake-compat.nix).defaultNix).legacyPackages; - }; -} diff --git a/eras/byron/ledger/formal-spec/frontmatter.tex b/eras/byron/ledger/formal-spec/frontmatter.tex deleted file mode 100644 index cc7c79be8dd..00000000000 --- a/eras/byron/ledger/formal-spec/frontmatter.tex +++ /dev/null @@ -1,38 +0,0 @@ -\hypersetup{ - pdftitle={A Formal Specification of the Cardano Ledger (Byron Release)}, - breaklinks=true, - bookmarks=true, - colorlinks=false, - linkcolor={blue}, - citecolor={blue}, - urlcolor={blue}, - linkbordercolor={white}, - citebordercolor={white}, - urlbordercolor={white} -} - -\title{ - A Formal Specification of the Cardano Ledger\\ - \small{(for the Byron release)} -} - -\author{Damian Nadales \\ - {\small \texttt{damian.nadales@iohk.io}}\\ -} - -\date{\today} - -\maketitle - -\begin{abstract} - This document defines the rules for extending a ledger with transactions, as - implemented in the Byron release of the Cardano Ledger. It is intended to - serve as the specification for random generators of transactions which adhere - to the rules presented here. -\end{abstract} - -\section*{List of Contributors} -\label{acknowledgements} - -Jared Corduan, Nicholas Clarke, Marko Dimjašević, Duncan Coutts, Ru Horlick, -Michael Hueschen, Ryan Lemmer. diff --git a/eras/byron/ledger/formal-spec/gitinfo2.mk b/eras/byron/ledger/formal-spec/gitinfo2.mk deleted file mode 100644 index 0a73e9d7e9c..00000000000 --- a/eras/byron/ledger/formal-spec/gitinfo2.mk +++ /dev/null @@ -1,24 +0,0 @@ -# Get info on current git status for gitinfo2 -# That package recommends creating the appropriate file via git hooks; however, -# that would require everyone working on the repository to install the hooks. -# Creating the auxiliary file in the Makefile instead assures that it's always -# there when the document is compiled. -FIRSTTAG := $(shell git describe --tags --always --dirty='-*' 2>/dev/null) -RELTAG := $(shell git describe --tags --long --always --dirty='-*' --match '[0-9]*.*' 2>/dev/null) -gitHeadLocal.gin: - git --no-pager log -1 --date=short --decorate=short --pretty=format:"\usepackage[shash={%h}\ -, lhash={%H}\ -, authname={%an}\ -, authemail={%ae}\ -, authsdate={%ad}\ -, authidate={%ai}\ -, authudate={%at}\ -, commname={%cn}\ -, commemail={%ce}\ -, commsdate={%cd}\ -, commidate={%ci}\ -, commudate={%ct}\ -, refnames={%d}\ -, firsttagdescribe={$(FIRSTTAG)}\ -, reltag={$(RELTAG)}\ -]{gitexinfo} " HEAD > gitHeadLocal.gin diff --git a/eras/byron/ledger/formal-spec/intro.tex b/eras/byron/ledger/formal-spec/intro.tex deleted file mode 100644 index a99a651806d..00000000000 --- a/eras/byron/ledger/formal-spec/intro.tex +++ /dev/null @@ -1,25 +0,0 @@ -\section{Introduction} -\label{sec:introduction} - -This specification models the \textit{conditions} that the different parts of a -transaction have to fulfill so that they can extend a ledger, which is -represented here as a list of transactions. In particular, we model the -following aspects: - -\begin{description} -\item[Preservation of value] relationship between the total value of input and - outputs in a new transaction, and the unspent outputs. -\item[Witnesses] authentication of parts of the transaction data by means of - cryptographic entities (such as signatures and private keys) contained in - these transactions. -\item[Delegation] validity of delegation certificates, which delegate - block-signing rights. -\item[Update validation] voting mechanism which captures the identification of - the voters, and the participants that can post update proposals. -\end{description} - -The following aspects will not be modeled (since they are not part of the Byron -release): -\begin{description} -\item[Stake] staking rights associated to an addresses. -\end{description} diff --git a/eras/byron/ledger/formal-spec/iohk.sty b/eras/byron/ledger/formal-spec/iohk.sty deleted file mode 100644 index 27982ea4572..00000000000 --- a/eras/byron/ledger/formal-spec/iohk.sty +++ /dev/null @@ -1,48 +0,0 @@ -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{iohk}[2018/10/18] - -\RequirePackage{amssymb} -\RequirePackage{extarrows} -\RequirePackage{slashed} -\RequirePackage[tikz]{bclogo} -\RequirePackage{stmaryrd} - -\DeclareMathOperator{\dom}{dom} -\DeclareMathOperator{\range}{range} - -\newcommand{\powerset}[1]{\mathbb{P}~#1} -\newcommand{\restrictdom}{\lhd} -\newcommand{\subtractdom}{\mathbin{\slashed{\restrictdom}}} -\newcommand{\restrictrange}{\rhd} -\newcommand{\subtractrange}{\mathbin{\slashed{\restrictrange}}} -\newcommand{\union}{\cup} -\newcommand{\unionoverrideRight}{\mathbin{\underrightarrow\cup}} -\newcommand{\uniondistinct}{\uplus} -\newcommand{\var}[1]{\mathit{#1}} -\newcommand{\fun}[1]{\mathsf{#1}} -\newcommand{\type}[1]{\mathsf{#1}} -\newcommand{\signed}[2]{\llbracket #1 \rrbracket_{#2}} -\newcommand{\size}[1]{\left| #1 \right|} -\newcommand{\trans}[2]{\xlongrightarrow[\textsc{#1}]{#2}} -\newcommand{\seqof}[1]{#1^{*}} -\newcommand{\nextdef}{\\[1em]} -\newcommand{\where}{~ ~ \mathbf{where}~ ~ } - -% Ceiling -\usepackage{mathtools} -\DeclarePairedDelimiter{\ceil}{\lceil}{\rceil} -% Floor -\DeclarePairedDelimiter{\floor}{\lfloor}{\rfloor} - - -\newenvironment{question} - {\begin{bclogo}[logo=\bcquestion, couleur=orange!10, arrondi=0.2]{ QUESTION}} - {\end{bclogo}} -\newenvironment{todo} - {\begin{bclogo}[logo=\bcoutil, couleur=red!5, couleurBarre=red, arrondi=0.2]{ TODO}} - {\end{bclogo}} -\newenvironment{note} - {\begin{bclogo}[logo=\bcattention, couleur=orange!10, arrondi=0.2]{ NOTE}} - {\end{bclogo}} - -\endinput diff --git a/eras/byron/ledger/formal-spec/notation.tex b/eras/byron/ledger/formal-spec/notation.tex deleted file mode 100644 index 32201690045..00000000000 --- a/eras/byron/ledger/formal-spec/notation.tex +++ /dev/null @@ -1,85 +0,0 @@ -\section{Notation}\label{sec:notation} - -\begin{description} -\item[Natural Numbers] The set $\mathbb{N}$ refers to the set of all natural - numbers $\{0, 1, 2, \ldots\}$. The set $\mathbb{Q}$ refers to the set of - rational numbers. -\item[Booleans] The set $\mathbb{B}$ denotes the set of booleans - $\{\var{True}, \var{False}\}$. -\item[Powerset] Given a set $\type{X}$, $\powerset{\type{X}}$ is the set of all - the subsets of $X$. -\item[Sequences] Given a set $\type{X}$, $\seqof{\type{X}}$ is the set of - sequences having elements taken from $\type{X}$. The empty sequence is - denoted by $\epsilon$, and given a sequence $\Lambda$, $\Lambda; \type{x}$ is - the sequence that results from appending $\type{x} \in \type{X}$ to - $\Lambda$. -\item[Functions] $A \to B$ denotes a \textbf{total function} from $A$ to $B$. - Given a function $f$ we write $f~a$ for the application of $f$ to argument - $a$. -\item[Inverse Image] Given a function $f: A \to B$ and $b\in B$, we write - $f^{-1}~b$ for the \textbf{inverse image} of $f$ at $b$, which is defined by - $\{a \mid\ f a = b\}$. -\item[Maps and partial functions] $A \mapsto B$ denotes a \textbf{partial - function} from $A$ to $B$, which can be seen as a map (dictionary) with - keys in $A$ and values in $B$. Given a map $m \in A \mapsto B$, notation - $a \mapsto b \in m$ is equivalent to both $m~ a = b$ and $\mathsf{a}~m = b$. - Given a set $A$, $A \mapsto A$ represents the identity map on $A$: - $\{a \mapsto a \mid a \in A\}$. The $\emptyset$ symbol is also used to - represent the empty map as well. -\item[Domain and range] Given a relation $R \in \powerset{(A \times B)}$, - $\dom~R \in \powerset{A}$ refers to the domain of $R$, and - $\range~R \in \powerset{B}$ refers to the range of $R$. Note that (partial) - functions (and hence maps) are also relations, so we will be using $\dom$ and - $\range$ on functions. -\item[Domain and range operations] Given a relation - $R \in \powerset{(A \times B)}$ we make use of the \textit{domain-restriction}, - \textit{domain-exclusion}, and \textit{range-restriction} operators, which - are defined in \cref{fig:domain-and-range-ops}. Note that a map $A \mapsto B$ - can be seen as a relation, which means that these operators can be - applied to maps as well. -\item[Integer ranges] Given $a, b \in \mathbb{Z}$, $[a, b]$ denotes the - sequence $[i \mid a \leq i \leq b]$ . Ranges can have open ends: $[.., b]$ - denotes sequence $[i \mid i \leq b]$, whereas $[a, ..]$ denotes sequence - $[i \mid a \leq i]$. Furthermore, sometimes we use $[a, b]$ to denote a set - instead of a sequence. The context in which it is used should provide enough - information about the specific type. -\item[Domain and range operations on sequences] We overload the $\restrictdom$, - $\subtractdom$, and $\restrictrange$ to operate over sequences. So for - instance given $S \in \seqof{A}$, and $R \in \seqof{(A \times B)}$: - $S \restrictdom R$ denotes the sequence - $[ (a, b) \mid (a, b) \in R, a \in S]$. -\item[Wildcard variables] When a variable is not needed in a term, we replace - it by $\wcard$ to make it explicit that we do not use this variable in the - scope of the given term. -\item[Implicit existential quantifications] Given a predicate - $P \in X \to \mathbb{B}$, we use $P \wcard$ as a shorthand notation for - $\exists x \cdot P~x$. - -\item[Pattern matching in premises] In the inference-rules premises use - $\var{patt} \leteq \var{exp}$ to pattern-match an expression $\var{exp} $ - with a certain pattern $\var{patt}$. For instance, we use - $\Lambda'; x \leteq \Lambda$ to be able to deconstruct a sequence $\Lambda$ - in its last element, and prefix. If an expression does not match the given - pattern, then the premise does not hold, and the rule cannot trigger. - -\item[Ceiling] Given a number $n \in \mathbb{R}$, $\ceil{n}$ represents the - ceiling of $n$, and $\floor{n}$ represents its floor. -\end{description} - -\begin{figure}[htb] - \begin{align*} - \var{S} \restrictdom \var{R} - & = \{ (a, b) \mid (a, b) \in R, ~ a \in S \} - & \text{domain restriction} - \\ - S \subtractdom R - & = \{ (a, b) \mid (a, b) \in R, ~ a \notin S \} - & \text{domain exclusion} - \\ - R \restrictrange S - & = \{ (a, b) \mid (a, b) \in R, ~ b \in S \} - & \text{range restriction} - \end{align*} - \caption{Domain and range operations} - \label{fig:domain-and-range-ops} -\end{figure} \ No newline at end of file diff --git a/eras/byron/ledger/formal-spec/properties.tex b/eras/byron/ledger/formal-spec/properties.tex deleted file mode 100644 index 727f6058eab..00000000000 --- a/eras/byron/ledger/formal-spec/properties.tex +++ /dev/null @@ -1,245 +0,0 @@ -\section{Transition Systems Properties} -\label{sec:ts-properties} - - -\subsection{Transition-system traces} -\label{sec:ts-traces} - -This section introduces the notion of traces induced by the transition systems -described in \cite{small_step_semantics}. - -\begin{definition}[Traces] - Given a state transition system $L=(S,T,\Sigma, R, \Gamma)$, the set of - traces of $L$, denoted as $\fun{traces}_L$ is defined as: - $$ - \{ (e, s, \txs, s') \mid e \in \Gamma,~ s \in S,~ \txs \in \seqof{\Sigma},~ s' \in S\} - $$ - -\end{definition} - - -\begin{definition}[Valid traces] - Given a state transition system $L=(S,T,\Sigma, R, \Gamma)$, we define the - notion of valid traces inductively: - - \begin{itemize} - \item For all $e \in \Gamma$, $s \in S$, $(e, s, \epsilon, s)$ is a valid - trace of $L$. - - \item If $(e, s, \txs, s')$ is a valid trace, and - $e \vdash s' \trans{}{\var{t}} s''$ is a valid transition according to the - rules of $L$, then $(e, s, \txs; t, s'')$ is also a valid trace. - \end{itemize} - -\end{definition} - -We denote the set of valid traces of $L$ as $\transtar{L}{}$, and we write -$e \vdash s \transtar{L}{\txs} s'$ as a shorthand for -$(e, s, \txs, s') \in \transtar{L}{}$. Furthermore, when the transition system -name is clear from the context we will omit it from the transition arrow label. - -\subsection{Additional notation} -\label{sec:additional-notation} - -We describe next additional notation needed in the properties of the transition -systems specified in this document. - -\subsubsection{Sequence indexing} -\label{sec:seq-indexing} - -Given a sequence $\mathcal{A} \in \seqof{\type{A}}$, and a natural number $i$ -such that $0 \leq i < \size{\mathcal{A}}$, $\mathcal{A}_i$ refers to the -$i^{\text{th}}$ element of $\mathcal{A}$. - - -Given a sequence $\mathcal{A}$, a quantification symbol $\bigoplus$, e.g. -$\forall$ or $\exists$, a range predicate $R$, and a quantification term $T$ -(both of which depend on an element of $\mathcal{A}$) we write: -% -$$ -\bigoplus \mathcal{A}_i \cdot R~\mathcal{A}_i \cdot T~\mathcal{A}_i -$$ -% -as a shorthand notation for: -% -$$ -\bigoplus i \cdot 0 \leq i < \size{\mathcal{A}} \wedge R~\mathcal{A}_i \cdot T~\mathcal{A}_i -$$ - -For instance: -% -$$ -\forall \txs_i \cdot \txins{\txs_i} \neq \emptyset -$$ -is a shorthand notation for: -$$ -\forall i \cdot 0 \leq i < \size{\txs} \Rightarrow \txins{\txs_i} \neq \emptyset -$$ -Remember that the range of a universal quantification can be expressed by an -implication, and the range of an existential qualification by a conjunction. - -\subsubsection{Quantifying over set operations} -\label{sec:quantifying-over-set-operators} - -Given a sequence $\mathcal{A} \in \seqof{A}$, a set $B$, a set operation -$\bigoplus$, e.g. $\cup$ or $\unionoverrideRight$, and a function -$\fun{f} \in \type{A} \to \type{B}$, the term: -% -$$ -\underset{\fun{f}}{\bigoplus} \mathcal{A} -$$ -is a shorthand notation for: -% -$$ -\underset{0 \leq i < \size{\mathcal{A}}}{\bigoplus} \mathcal{A}_i -$$ - -For instance: -$$ -\bigcup_{\txins{}} \txs -$$ -denotes the sequence of unions: -$$ -\bigcup_{0 \leq i < \size{\txs}} \txins{\txs_i} -$$ - -In a set operation quantification over a sequence $\mathcal{A}$, the operation -is applied to the elements the order in which they appear in $\mathcal{A}$. -This is crucial in the case of non-commutative operations, such as union -override ($\unionoverrideRight$). - -\subsection{UTxO Properties} -\label{sec:utxo-properties} - -Property~\ref{prop:no-double-spending} expresses the fact that transaction -inputs cannot be used more than once. This property requires that the starting -UTxO does not contain any future outputs, which is a reasonable constraint. - -\begin{property}[No double spending]\label{prop:no-double-spending} - For all - - $$ - \left( - \begin{array}{l} - \var{utxo_0}\\ - \var{reserves_0} - \end{array} - \right) - \transtar{\hyperref[fig:rules:utxo]{utxo}}{\txs} - \left( - \begin{array}{l} - \var{utxo}\\ - \var{reserves} - \end{array} - \right) - $$ - - such that - - $$ - \forall \txs_i \cdot \dom~(\txouts{\txs_i}) \cap \dom~(\var{utxo_0}) = \emptyset - $$ - - we have: - - $$ - \forall \txs_i,~\txs_j \cdot i < j \Rightarrow \txins{\txs_i} \cap \txins{\txs_j} = \emptyset - $$ -\end{property} - -Property~\ref{prop:utxo-out-min-in} expresses the fact that all inputs and -outputs are accounted for, in such a way that we can reconstruct the final -(UTxO) state by adding all the outputs to the initial state, and removing the -spent outputs. - -\begin{property}[UTxO is outputs minus inputs]\label{prop:utxo-out-min-in} - For all - - $$ - \left( - \begin{array}{l} - \var{utxo_0}\\ - \var{reserves_0} - \end{array} - \right) - \transtar{\hyperref[fig:rules:utxo]{utxo}}{\txs} - \left( - \begin{array}{l} - \var{utxo}\\ - \var{reserves} - \end{array} - \right) - $$ - - such that - - $$ - \forall \txs_i \cdot \dom~(\txouts{\txs_i}) \cap \dom~(\var{utxo_0}) = \emptyset - $$ - - we have: - - $$ - \bigcup_{\txins{}} \txs \subtractdom (\var{utxo_0} \cup \bigcup_{\txouts{}} \txs) = \var{utxo} - $$ - -\end{property} - -Property~\ref{prop:utxo-money-supply-cnst} models the fact that the amount of -money in the system (counted as Lovelaces) remains constant. - -\begin{property}[Money supply is constant in the system]\label{prop:utxo-money-supply-cnst} - For all - - $$ - \left( - \begin{array}{l} - \var{utxo_0}\\ - \var{reserves_0} - \end{array} - \right) - \transtar{\hyperref[fig:rules:utxo]{utxo}}{\txs} - \left( - \begin{array}{l} - \var{utxo}\\ - \var{reserves} - \end{array} - \right) - $$ - - we have: - - $$ \var{reserves} + \balance{utxo} = \var{reserves_0} + \balance{utxo_0} $$ -\end{property} - -\subsection{Delegation Properties} -\label{sec:delegation-props} - -Property~\ref{prop:no-dcert-replay} states that delegation certificates cannot be replayed. Remember -that $\Delta_i$ is the $i^{\text{th}}$ element of $\Delta$, which is a sequence of sequences of -delegation certificates, so $\Delta_i \in \seqof{\DCert}$ and $\Delta_{i_j} \in \DCert$ (assuming -$j$ is a valid index of $\Delta_i$). - -\begin{property}[No replay of delegation certificates]\label{prop:no-dcert-replay} - For all - % - $$ - \left( - \begin{array}{l} - \var{delegSt} - \end{array} - \right) - \transtar{\hyperref[fig:rules:delegation-interface]{deleg}}{\Delta} - \left( - \begin{array}{l} - \var{delegSt'} - \end{array} - \right) - $$ - % - we have: - % - $$ - \forall i, j, k, l \cdot j < l \Rightarrow \Delta_{i_j} \neq \Delta_{k_l} - $$ -\end{property} diff --git a/eras/byron/ledger/formal-spec/references.bib b/eras/byron/ledger/formal-spec/references.bib deleted file mode 100644 index 1620b953438..00000000000 --- a/eras/byron/ledger/formal-spec/references.bib +++ /dev/null @@ -1,6 +0,0 @@ -@misc{small_step_semantics, - author = {Formal Methods Team, IOHK}, - title = {Small Step Semantics for Cardano}, - year = {2018}, - url = {https://github.com/intersectmbo/cardano-ledger/releases/latest/download/small-step-semantics.pdf} -} diff --git a/eras/byron/ledger/formal-spec/update-mechanism.tex b/eras/byron/ledger/formal-spec/update-mechanism.tex deleted file mode 100644 index ddca288b940..00000000000 --- a/eras/byron/ledger/formal-spec/update-mechanism.tex +++ /dev/null @@ -1,1425 +0,0 @@ -\newcommand{\UProp}{\ensuremath{\type{UProp}}} -\newcommand{\UPropId}{\ensuremath{\type{UpId}}} -\newcommand{\UPropSD}{\ensuremath{\type{UpSD}}} -\newcommand{\ProtVer}{\ensuremath{\type{ProtVer}}} -\newcommand{\ProtPm}{\ensuremath{\type{Ppm}}} -\newcommand{\Rpus}{\ensuremath{\type{Rpus}}} -\newcommand{\UPVEnv}{\ensuremath{\type{UPVEnv}}} -\newcommand{\UPVState}{\ensuremath{\type{UPVState}}} -\newcommand{\UPLEnv}{\ensuremath{\type{UPLEnv}}} -\newcommand{\UPLState}{\ensuremath{\type{UPLState}}} -\newcommand{\UPREnv}{\ensuremath{\type{UPREnv}}} -\newcommand{\UPRState}{\ensuremath{\type{UPRState}}} -\newcommand{\Vote}{\ensuremath{\type{Vote}}} -\newcommand{\VREnv}{\ensuremath{\type{VREnv}}} -\newcommand{\VRState}{\ensuremath{\type{VRState}}} -\newcommand{\VEnv}{\ensuremath{\type{VEnv}}} -\newcommand{\VState}{\ensuremath{\type{VState}}} -\newcommand{\BVREnv}{\ensuremath{\type{BVREnv}}} -\newcommand{\BVRState}{\ensuremath{\type{BVRState}}} -\newcommand{\ApName}{\ensuremath{\type{ApName}}} -\newcommand{\SWVer}{\ensuremath{\type{SWVer}}} -\newcommand{\ApVer}{\ensuremath{\type{ApVer}}} -\newcommand{\Metadata}{\ensuremath{\type{Mdt}}} -\newcommand{\STag}{\ensuremath{\type{STag}}} - -\newcommand{\upSize}[1]{\ensuremath{\fun{upSize}~\var{#1}}} -\newcommand{\upPV}[1]{\ensuremath{\fun{upPV}~\var{#1}}} -\newcommand{\upId}[1]{\ensuremath{\fun{upId}~\var{#1}}} -\newcommand{\upSig}[1]{\ensuremath{\fun{upSig}~\var{#1}}} -\newcommand{\upSigData}[1]{\ensuremath{\fun{upSigData}~\var{#1}}} -\newcommand{\upIssuer}[1]{\ensuremath{\fun{upIssuer}~\var{#1}}} -\newcommand{\upParams}[1]{\ensuremath{\fun{upParams}~\var{#1}}} -\newcommand{\upSwVer}[1]{\ensuremath{\fun{upSwVer}~\var{#1}}} -\newcommand{\upMetadata}[1]{\ensuremath{\fun{upMdt}~\var{#1}}} -\newcommand{\vCaster}[1]{\ensuremath{\fun{vCaster}~\var{#1}}} -\newcommand{\vPropId}[1]{\ensuremath{\fun{vPropId}~\var{#1}}} -\newcommand{\vSig}[1]{\ensuremath{\fun{vSig}~\var{#1}}} - -\lstset{ frame=tb, - , language=Haskell - , basicstyle=\footnotesize\ttfamily, - , keywordstyle=\color{blue!80}, - , commentstyle=\itshape\color{purple!40!black}, - , identifierstyle=\bfseries\color{green!40!black}, - , stringstyle=\color{orange}, - } - -\lstMakeShortInline[columns=fixed]` - -\section{Update mechanism} -\label{sec:update} - -This section formalizes the update mechanism by which the protocol parameters -get updated. This formalization is a simplification of the current update -mechanism implemented in -\href{https://github.com/input-output-hk/cardano-sl/}{\texttt{cardano-sl}}, and -partially documented in: -\begin{itemize} -\item \href{https://cardanodocs.com/technical/updater/}{Updater implementation} -\item \href{https://cardanodocs.com/cardano/update-mechanism/}{Update mechanism} -\item - \href{https://github.com/input-output-hk/cardano-sl/blob/2a19d8ce2941b8e60f0208a5198943ec2ada1fd4/docs/block-processing/us.md}{Update system consensus rules} -\end{itemize} - -The reason for formalizing a simplified version of the current implementation -is that research work on blockchain update mechanisms is needed before -introducing a more complex update logic. Since this specification is to be -implemented in a federated setting, some of the constraints put in place in the -current implementation are no longer relevant. Once the research work is ready, -this specification can be extended to incorporate the research results. - -\subsection{Update proposals} -\label{sec:update-proposals} - -The definitions used in the update mechanism rules are presented in -\cref{fig:defs:update-proposals}. A system tag is used to identify the system -for which the update is proposed (in practice this would be a string referring -to an operating system; e.g. `linux`, `win64`, or `mac32`). The software update -metadata ($\Metadata$) is any information required for performing an update -such as hashes of software downloads. Note that the fact that the metadata is -kept abstract in the specification does not mean that we allow any arbitrary -metadata (in the actual implementation this abstract metadata would correspond -to `Map SystemTag UpdateData`, were the `SystemTag` corresponds with $\STag$ -and `UpdateData` contains the software hash for a specific platform). - -\begin{figure}[htb] - \emph{Abstract types} - % - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \var{up} & \UProp & \text{update proposal}\\ - \var{p} & \ProtPm & \text{protocol parameter}\\ - \var{upd} & \type{UpdData} & \text{update data}\\ - \var{upa} & \type{UpdAttrs} & \text{update attributes}\\ - \var{an} & \ApName & \text{application name}\\ - \var{t} & \STag & \text{system tag}\\ - \var{m} & \Metadata & \text{metadata} - \end{array} - \end{equation*} - % - \emph{Derived types} - \begin{equation*} - \begin{array}{r@{~\in~}l@{~=~}r@{~\in~}lr} - \var{s_n} & \Slot & n & \mathbb{N} & \text{slot number}\\ - \var{pv} & \ProtVer & (\var{maj}, \var{min}, \var{alt}) - & (\mathbb{N}, \mathbb{N}, \mathbb{N}) & \text{protocol version}\\ - \var{pps} & \PPMMap & \var{pps} & \ProtPm \mapsto \Value - & \text{protocol parameters map}\\ - \var{apv} & \ApVer & n & \mathbb{N}\\ - \var{swv} & \SWVer - & (\var{an}, \var{av}) & \ApName \times \ApVer - & \text{software version}\\ - \var{pb} & \UPropSD - & - {\left(\begin{array}{r l} - \var{pv}\\ - \var{pps}\\ - \var{swv}\\ - \var{upd}\\ - \var{upa}\\ - \end{array}\right)} - & { - \left( - \begin{array}{l} - \ProtVer\\ - \PPMMap\\ - \type{SWVer}\\ - \type{UpdData}\\ - \type{UpdAttrs}\\ - \end{array} - \right) - } - & \text{protocol update signed data} - \end{array} - \end{equation*} - \emph{Abstract functions} - % - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \fun{upIssuer} & \UProp \to \VKey & \text{update proposal issuer (delegate)}\\ - \fun{upSize} & \UProp \to \mathbb{N} & \text{update proposal size}\\ - \fun{upPV} & \UProp \to \ProtVer & \text{update proposal protocol version}\\ - \fun{upId} & \UProp \to \UPropId & \text{update proposal id}\\ - \fun{upParams} & \UProp \to \mathbb{\PPMMap} - & \text{proposed parameters update}\\ - \fun{upSwVer} & \UProp \to \SWVer & \text{software-version update proposal}\\ - \fun{upSig} & \UProp \to \Sig & \text{update proposal signature}\\ - \fun{upSigData} & \UProp \to \UPropSD & \text{update proposal signed data}\\ - \fun{upSTags} & \UProp \to \powerset{\STag} & \text{update proposal system tags}\\ - \fun{upMdt} & \UProp \to \Metadata & \text{software update metadata} - \end{array} - \end{equation*} - \caption{Update proposals definitions} - \label{fig:defs:update-proposals} -\end{figure} - -The set of protocol parameters ($\ProtPm$) is assumed to contain the following -keys, some of which correspond with fields of the -\href{https://github.com/input-output-hk/cardano-sl/}{\texttt{cardano-sl}} -`BlockVersionData` structure: -\begin{itemize} -\item Maximum block size: $\var{maxBlockSize}$ -\item Maximum transaction size: $\var{maxTxSize}$ -\item Maximum header size: $\var{maxHeaderSize}$ -\item Maximum proposal size: $\var{maxProposalSize}$ -\item Transaction fee policy: $\var{txFeePolicy}$ -\item Script version: $\var{scriptVersion}$ -\item Update adoption threshold: $\var{upAdptThd}$. This represents the minimum - percentage of the total number of genesis keys that have to endorse a protocol - version to be able to become adopted. We use this parameter to determine the - confirmation threshold as well. There is no corresponding parameter in the - `cardano-sl` protocol parameters, however we do have a soft-fork minimum - threshold parameter (`srMinThd` in `bvdSoftforkRule`). When divided by, - $1\times 10^{15}$, it determines the minimum portion of the total stake that - is needed for the adoption of a new protocol version. On mainnet, this number - is set to $6 \times 10^{14}$, so the minimum portion becomes $0.6$. This - number can be multiplied by the total number of genesis keys to obtain how - many keys are needed to reach a majority. -\item Update proposal time-to-live: $\var{upropTTL}$. This would correspond to - the number of slots specified by `bvdUpdateImplicit`. In `cardano-sl` the - rule was that after `bvdUpdateImplicit` slots, if a proposal did not reach a - majority of the votes, then if the proposal has more votes for than against - it, then it will become implicitly accepted, or rejected otherwise. In this - specification, we re-interpret the meaning of this parameter as the proposal - time-to-live: if after the number of slots specified by `bvdUpdateImplicit` - the proposal does not reach a majority of approvals, the proposal is simply - discarded. In the mainnet configuration (`mainnet-genesis.json`) this value is - set to $10000$, which corresponds with almost half of the total number of - slots in an epoch. -\end{itemize} - -The protocol parameters are formally defined in \cref{fig:prot-params-defs}. - -\begin{figure}[ht] - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \var{maxBlockSize} \mapsto \mathbb{N} & \PPMMap & \text{maximum block size}\\ - \var{maxTxSize} \mapsto \mathbb{N} & \PPMMap & \text{maximum transaction size}\\ - \var{maxHeaderSize} \mapsto \mathbb{N} & \PPMMap & \text{maximum header size}\\ - \var{scriptVersion} \mapsto \mathbb{N} & \PPMMap & \text{script version}\\ - \var{upAdptThd} \mapsto \mathbb{Q} & \PPMMap & \text{update proposal adoption threshold}\\ - \var{upropTTL} \mapsto \mathbb{\Slot} & \PPMMap & \text{update proposal time-to-live}\\ - \end{array} - \end{equation*} - \caption{Protocol-parameters definitions} - \label{fig:prot-params-defs} -\end{figure} - -\subsection{Update proposals registration} -\label{sec:update-proposals-registration} - -\begin{figure}[htb] - \emph{Update proposals validity environments} - \begin{equation*} - \UPVEnv = - \left( - \begin{array}{r@{~\in~}lr} - \var{pv} & \ProtVer & \text{adopted (current) protocol version}\\ - \var{pps} & \PPMMap & \text{adopted protocol parameters map}\\ - \var{avs} & \ApName \mapsto (\ApVer \times \Slot \times \Metadata) - & \text{application versions}\\ - \end{array} - \right) - \end{equation*} - % - \emph{Update proposals validity states} - \begin{align*} - & \UPVState \\ - & = \left( - \begin{array}{r@{~\in~}lr} - \var{rpus} & \UPropId \mapsto (\ProtVer \times \PPMMap) - & \text{registered protocol update proposals}\\ - \var{raus} & \UPropId \mapsto (\ApName \times \ApVer \times \Metadata) - & \text{registered software update proposals}\\ - \end{array} - \right) - \end{align*} - % - \emph{Update proposals validity transitions} - \begin{equation*} - \var{\_} \vdash - \var{\_} \trans{upv}{\_} \var{\_} - \subseteq \powerset (\UPVEnv \times \UPVState \times \UProp \times \UPVState) - \end{equation*} - \caption{Update proposals validity transition-system types} - \label{fig:ts-types:up-validity} -\end{figure} - -The rules in Figure~\ref{fig:rules:up-validity} model the validity of a proposal: -\begin{itemize} -\item if an update proposal proposes a change in the protocol version, it must - do so in a consistent manner: - \begin{itemize} - \item The proposed version must be lexicographically bigger than the - current version. - \item The major versions of the proposed and current version must differ in - at most one. - \item If the proposed major version is equal to the current major - version, then the proposed minor version must be incremented by one. - \item If the proposed major version is larger than the current major version, - then the proposed minor version must be zero. - \item must be consistent with the current protocol parameters: - \begin{itemize} - \item the proposal size must not exceed the maximum size specified by the - current protocol parameters, (note that here we use function application - to extract the value of the different protocol parameters, and a rule - that uses a value of the map can be applied only if the function -e.g. - $\var{pps}$- is defined for that value) - \item the proposed new maximum block size should be not greater than twice - current maximum block size, - \item the maximum transaction size must be smaller than the maximum block - size (this requirement is \textbf{crucial} for having every transaction - fitting in a block, and - \item the proposed new script version can be incremented by at most 1. - \end{itemize} - \item must have a unique version among the current active proposals. - \end{itemize} -\item if an update proposal proposes to increase the application version - version ($\var{av}$) for a given application ($\var{an}$), then there should - not be an active update proposal that proposes the same update. -\end{itemize} -Note that the rules in Figure~\ref{fig:rules:up-validity} allow for an update -that does not propose changes in the protocol version, or does not propose -changes to the software version. However the update proposal must contain a change -proposal in any of these two aspects. -% -Also note that we do not allow for updating the protocol parameters without -updating the protocol version. If an update in the protocol parameters does not -cause a soft-fork we might use the alt version for that purpose. - -In Rule~\ref{eq:rule:up-av-validity} we make use of the following abstract -functions: -\begin{itemize} -\item $\fun{apNameValid}$, which checks that the name is an ASCII string 12 - characters or less. -\item $\fun{sTagValid}$, which checks that the name is an ASCII string of 10 - characters or less. -\end{itemize} - -\begin{figure}[htb] - \emph{Abstract functions} - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \fun{apNameValid} & \ApName \rightarrow \mathbb{B} & \text{validity checking for application name}\\ - \fun{sTagValid} & \STag \rightarrow \mathbb{B} & \text{validity checking for system tag} - \end{array} - \end{equation*} - \caption{Update proposal validity definitions} - \label{fig:defs:update-proposal-validity} -\end{figure} - -\begin{figure}[htb] - \begin{equation} - \label{eq:func:pv-can-follow} - \begin{array}{r c l} - \fun{pvCanFollow}~(\var{mj_p}, \var{mi_p}, \var{a_p})~(\var{mj_n}, \var{mi_n}, \var{a_n}) - & = & (\var{mj_p}, \var{mi_p}, \var{a_p}) < (\var{mj_n}, \var{mi_n}, \var{a_n})\\ - & \wedge & 0 \leq \var{mj_n} - \var{mj_p} \leq 1\\ - & \wedge & (\var{mj_p} = \var{mj_n} \Rightarrow \var{mi_p} + 1 = \var{mi_n}))\\ - & \wedge & (\var{mj_p} + 1 = \var{mj_n} \Rightarrow \var{mi_n} = 0) - \end{array} - \end{equation} - \nextdef - \begin{equation} - \label{eq:func:can-update} - \begin{array}{l} - \fun{canUpdate}~\var{pps}~\var{pps'}\\ - {\begin{array}{r c l} - & = & \var{pps'}~\var{maxBlockSize} \leq 2\cdot\var{pps}~\var{maxBlockSize}\\ - & \wedge & \var{pps'}~\var{maxTxSize} < \var{pps'}~\var{maxBlockSize} \\ - & \wedge - & 0 \leq - \var{pps'}~\var{scriptVersion} - \var{pps}~\var{scriptVersion} - \leq 1 - \end{array}} - \end{array} - \end{equation} - \nextdef - \begin{equation} - \label{eq:func:av-can-follow} - \begin{array}{r c l} - \fun{svCanFollow}~\var{avs}~(\var{an}, \var{av}) & = - & (\var{an} \mapsto (\var{av_c}, \wcard, \wcard) \in \var{avs} - \Rightarrow \var{av} = \var{av_c} + 1)\\ - & \wedge & (\var{an} \notin \dom~\var{avs} \Rightarrow \var{av} = 0 \vee \var{av} = 1) - \end{array} - \end{equation} - \caption{Update validity functions} -\end{figure} - -\begin{figure}[htb] - \begin{equation} - \label{eq:rule:up-av-validity} - \inference - { - (\var{an}, \var{av}) \leteq \upSwVer{up} - & \fun{apNameValid}~\var{an}\\ - & \fun{svCanFollow}~\var{avs}~(\var{an}, \var{av}) - & (\var{an}, \wcard, \wcard) \notin \range~\var{raus}\\ - \forall \var{t} \in \fun{upSTags}~\var{up} \cdot \fun{sTagValid}~t - } - { - {\left( - \begin{array}{l} - \var{avs} - \end{array} - \right)} - \vdash - { - \left( - \begin{array}{l} - \var{raus} - \end{array} - \right) - } - \trans{upsvv}{up} - { - \left( - \begin{array}{l} - \var{raus} \unionoverrideRight \{ \upId{up} \mapsto (\var{an}, \var{av}, \upMetadata{up})\} - \end{array} - \right) - } - } - \end{equation} - \nextdef - \begin{equation} - \label{eq:rule:up-pv-validity} - \inference - { - \var{pps'} \leteq \var{pps} \unionoverrideRight \upParams{up} - & \fun{canUpdate}~\var{pps}~\var{pps'}\\ - & \var{nv} \leteq \upPV{up} - & \fun{pvCanFollow}~\var{nv}~\var{pv}\\ - & \upSize{up} \leq \var{pps}~\var{maxProposalSize} - & \var{nv} \notin \dom~(\range~\var{rpus}) - } - { - {\left( - \begin{array}{l} - \var{pv}\\ - \var{pps} - \end{array} - \right)} - \vdash - { - \left( - \begin{array}{l} - \var{rpus} - \end{array} - \right) - } - \trans{uppvv}{\var{up}} - { - \left( - \begin{array}{l} - \var{rpus} \unionoverrideRight - \{ \upId{up} \mapsto (\var{nv}, \var{pps'}) \} - \end{array} - \right) - } - } - \end{equation} - \nextdef - \begin{equation} - \label{eq:rule:up-validity-pu-nosu} - \inference - { - {\left( - \begin{array}{l} - \var{pv}\\ - \var{pps} - \end{array} - \right)} - \vdash - { - \left( - \begin{array}{l} - \var{rpus} - \end{array} - \right) - } - \trans{uppvv}{\var{up}} - { - \left( - \begin{array}{l} - \var{rpus'} - \end{array} - \right) - } - & - (\var{an}, \var{av}) \leteq \upSwVer{up} & \var{an} \mapsto (\var{av}, \_, \_) \in \var{avs} - } - { - {\left( - \begin{array}{l} - \var{pv}\\ - \var{pps}\\ - \var{avs} - \end{array} - \right)} - \vdash - { - \left( - \begin{array}{l} - \var{rpus}\\ - \var{raus} - \end{array} - \right) - } - \trans{upv}{\var{up}} - { - \left( - \begin{array}{l} - \var{rpus'}\\ - \var{raus} - \end{array} - \right) - } - } - \end{equation} - \nextdef - \begin{equation} - \label{eq:rule:up-validity-nopu-no} - \inference - { - \var{pv} = \upPV{up} & \upParams{up} = \emptyset & - {\left( - \begin{array}{l} - \var{avs} - \end{array} - \right)} - \vdash - { - \left( - \begin{array}{l} - \var{raus} - \end{array} - \right) - } - \trans{upsvv}{up} - { - \left( - \begin{array}{l} - \var{raus'} - \end{array} - \right) - } - } - { - {\left( - \begin{array}{l} - \var{pv}\\ - \var{pps}\\ - \var{avs} - \end{array} - \right)} - \vdash - { - \left( - \begin{array}{l} - \var{rpus}\\ - \var{raus} - \end{array} - \right) - } - \trans{upv}{\var{up}} - { - \left( - \begin{array}{l} - \var{rpus}\\ - \var{raus'} - \end{array} - \right) - } - } - \end{equation} - \nextdef - \begin{equation} - \label{eq:rule:up-validity-pu-su} - \inference - { - {\left( - \begin{array}{l} - \var{pv}\\ - \var{pps} - \end{array} - \right)} - \vdash - { - \left( - \begin{array}{l} - \var{rpus} - \end{array} - \right) - } - \trans{uppvv}{\var{up}} - { - \left( - \begin{array}{l} - \var{rpus'} - \end{array} - \right) - } - & - { - \begin{array}{l} - \var{avs} - \end{array} - } - \vdash - { - \left( - \begin{array}{l} - \var{raus} - \end{array} - \right) - } - \trans{upsvv}{up} - { - \left( - \begin{array}{l} - \var{raus'} - \end{array} - \right) - } - } - { - {\left( - \begin{array}{l} - \var{pv}\\ - \var{pps}\\ - \var{avs} - \end{array} - \right)} - \vdash - { - \left( - \begin{array}{l} - \var{rpus}\\ - \var{raus} - \end{array} - \right) - } - \trans{upv}{\var{up}} - { - \left( - \begin{array}{l} - \var{rpus'}\\ - \var{raus'} - \end{array} - \right) - } - } - \end{equation} - \caption{Update proposals validity rules} - \label{fig:rules:up-validity} -\end{figure} - -\clearpage - -The rule of Figure~\ref{fig:rules:up-registration} models the registration of -an update proposal: -\begin{itemize} -\item We consider the update proposal issuers to be the delegators of the key - ($\var{vk}$) that is associated with the proposal under consideration - ($\var{up}$). -\item We check that the issuer of a proposal was delegated by a genesis key - (which are in the domain of $\var{dms}$). -\item the update proposal data (see the definition of $\fun{upSigdata}$) must - be signed by the proposal issuer. -\end{itemize} - -\begin{figure}[htb] - \emph{Update proposals registration environments} - \begin{equation*} - \UPREnv = - \left( - \begin{array}{r@{~\in~}lr} - \var{pv} & \ProtVer & \text{adopted (current) protocol version}\\ - \var{pps} & \PPMMap & \text{adopted protocol parameters map}\\ - \var{avs} & \ApName \mapsto (\ApVer \times \Slot \times \Metadata) - & \text{application versions}\\ - \var{dms} & \VKeyGen \mapsto \VKey & \text{delegation map}\\ - \end{array} - \right) - \end{equation*} - % - \emph{Update proposals registration states} - \begin{align*} - & \UPRState = \\ - & \left( - \begin{array}{r@{~\in~}lr} - \var{rpus} & \UPropId \mapsto (\ProtVer \times \PPMMap) - & \text{registered update proposals}\\ - \var{raus} & \UPropId \mapsto (\ApName \times \ApVer \times \Metadata) - & \text{registered software update proposals} - \end{array} - \right) - \end{align*} - % - \emph{Update proposals registration transitions} - \begin{equation*} - \var{\_} \vdash - \var{\_} \trans{upreg}{\_} \var{\_} - \subseteq \powerset (\UPREnv \times \UPRState \times \UProp \times \UPRState) - \end{equation*} - \caption{Update proposals registration transition-system types} - \label{fig:ts-types:up-registration} -\end{figure} - -\begin{figure}[htb] - \begin{equation} - \label{eq:rule:up-registration} - \inference - { - {\left( - \begin{array}{l} - \var{pv}\\ - \var{pps}\\ - \var{avs} - \end{array} - \right)} - \vdash - { - \left( - \begin{array}{l} - \var{rpus}\\ - \var{raus}\\ - \end{array} - \right) - } - \trans{\hyperref[fig:rules:up-validity]{upv}}{\var{up}} - { - \left( - \begin{array}{l} - \var{rpus'}\\ - \var{raus'}\\ - \end{array} - \right) - } - & - \var{dms} \restrictrange \{\var{vk}\} \neq \emptyset\\ - \var{vk} \leteq \upIssuer{up} & - \mathcal{V}_{\var{vk}}\serialised{\upSigData{up}}_{(\upSig{up})} - } - { - {\left( - \begin{array}{l} - \var{pv}\\ - \var{pps}\\ - \var{avs}\\ - \var{dms} - \end{array} - \right)} - \vdash - { - \left( - \begin{array}{l} - \var{rpus}\\ - \var{raus} - \end{array} - \right) - } - \trans{upreg}{\var{up}} - { - \left( - \begin{array}{l} - \var{rpus'}\\ - \var{raus'} - \end{array} - \right) - } - } - \end{equation} - \caption{Update registration rules} - \label{fig:rules:up-registration} -\end{figure} - -\clearpage - -\subsection{Voting on update proposals} -\label{sec:voting-on-update-proposals} - -\begin{figure}[htb] - \emph{Abstract types} - % - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \var{v} & \Vote & \text{vote on an update proposal} - \end{array} - \end{equation*} - % - \emph{Abstract functions} - \begin{align*} - & \fun{vCaster} \in \Vote \to \VKey & \text{caster of a vote}\\ - & \fun{vPropId} \in \Vote \to \UPropId & \text{proposal id that is being voted}\\ - & \fun{vSig} \in \Vote \to \Sig & \text{vote signature} - \end{align*} - \caption{Voting definitions} - \label{fig:defs:voting} -\end{figure} - -\begin{figure}[htb] - \emph{Voting environments} - \begin{align*} - & \VREnv - = \left( - \begin{array}{r@{~\in~}lr} - \var{rups} & \powerset{\UPropId} - & \text{registered update proposals}\\ - \var{dms} & \VKeyGen \mapsto \VKey & \text{delegation map} - \end{array}\right) - \end{align*} - % - \emph{Voting states} - \begin{align*} - & \VRState - = \left( - \begin{array}{r@{~\in~}lr} - \var{vts} & \powerset{(\UPropId \times \VKeyGen)} & \text{votes} - \end{array}\right) - \end{align*} - % - \emph{Voting transitions} - \begin{equation*} - \_ \vdash \_ \trans{addvote}{\_} \_ \in - \powerset (\VREnv \times \VRState \times \Vote \times \VRState) - \end{equation*} - \caption{Voting transition-system types} - \label{fig:ts-types:voting} -\end{figure} - -In Rule~\ref{eq:rule:voting}: -\begin{itemize} -\item Only genesis keys can vote on an update proposal, although votes can be - cast by delegates of these genesis keys. -\item We count one vote per genesis key that delegated to the key that is - casting the vote. -\item The vote must refer to a registered update proposal. -\item The proposal id must be signed by the key that is casting the vote. -\item A given genesis key is only allowed to vote for a proposal once. This - provision guards against replay attacks, where a third party may replay the - vote in multiple blocks. -\end{itemize} - -\begin{figure}[htb] - \begin{equation} - \label{eq:rule:voting} - \inference - { - \var{pid} \leteq \vPropId{v} & \var{vk} \leteq \vCaster{v} & \var{pid} \in \var{rups}\\ - \var{vts}_{\var{pid}} \leteq - \{ (\var{pid}, \var{vk_s}) \mid \var{vk_s} \mapsto \var{vk} \in \var{dms} \} & - \var{vts}_{\var{pid}} \neq \emptyset & - \var{vts}_{\var{pid}} \nsubseteq \var{vts} \\ - \mathcal{V}_{\var{vk}}\serialised{\var{pid}}_{(\vSig{v})}\\ - } - { - {\left( - \begin{array}{l} - \var{rups}\\ - \var{dms} - \end{array} - \right)} - \vdash - { - \left( - \begin{array}{l} - \var{vts} - \end{array} - \right) - } - \trans{addvote}{\var{v}} - { - \left( - \begin{array}{l} - \var{vts} \cup \var{vts}_{\var{pid}}\\ - \end{array} - \right) - } - } - \end{equation} - \caption{Update voting rules} - \label{fig:rules:voting} -\end{figure} - -\clearpage - -\begin{figure}[htb] - \emph{Vote registration environments} - \begin{align*} - & \VEnv - = \left( - \begin{array}{r@{~\in~}lr} - \var{s_n} & \Slot & \text{current slot number}\\ - \var{t} & \mathbb{N} & \text{confirmation threshold}\\ - \var{rups} & \powerset{\UPropId} - & \text{registered update proposals}\\ - \var{dms} & \VKeyGen \mapsto \VKey & \text{delegation map} - \end{array}\right) - \end{align*} - % - \emph{Vote registration states} - \begin{align*} - & \VState - = \left( - \begin{array}{r@{~\in~}lr} - \var{cps} & \UPropId \mapsto \Slot & \text{confirmed proposals}\\ - \var{vts} & \powerset{(\UPropId \times \VKeyGen)} & \text{votes} - \end{array}\right) - \end{align*} - % - \emph{Vote registration transitions} - \begin{equation*} - \_ \vdash \_ \trans{UPVOTE}{\_} \_ \in - \powerset (\VEnv \times \VState \times \Vote \times \VState) - \end{equation*} - \caption{Vote registration transition-system types} - \label{fig:ts-types:vote-reg} -\end{figure} - -The rules in Figure~\ref{fig:rules:up-vote-reg} model the registration of a vote: -\begin{itemize} -\item The vote gets added to the list set of votes per-proposal ($\var{vts}$), - via transition $\trans{addvote}{}$. -\item If the number of votes for the proposal $v$ refers to exceeds the - confirmation threshold and this proposal was not confirmed already, then the - proposal gets added to the set of confirmed proposals ($\var{cps}$). The - reason why we check that the proposal was not already confirmed, is that we - want to keep in $\var{cps}$ the earliest block number in which the proposal - was confirmed. -\end{itemize} - -\begin{figure}[htb] - \begin{equation} - \label{eq:rule:up-no-confirmation} - \inference - { - {\left( - \begin{array}{l} - \var{rups}\\ - \var{dms} - \end{array} - \right)} - \vdash - { - \left( - \begin{array}{l} - \var{vts} - \end{array} - \right) - } - \trans{\hyperref[fig:rules:voting]{addvote}}{\var{v}} - { - \left( - \begin{array}{l} - \var{vts'} - \end{array} - \right) - }\\ - \var{pid} \leteq \vPropId{v} - & (\size{\{\var{pid}\} \restrictdom \var{vts'}} < t - \vee \var{pid} \in \dom~\var{cps} - ) - } - { - {\left( - \begin{array}{l} - s_n\\ - \var{t}\\ - \var{rups}\\ - \var{dms} - \end{array} - \right)} - \vdash - { - \left( - \begin{array}{l} - \var{cps}\\ - \var{vts} - \end{array} - \right) - } - \trans{upvote}{\var{v}} - { - \left( - \begin{array}{l} - \var{cps}\\ - \var{vts'} - \end{array} - \right) - } - } - \end{equation} - \nextdef - \begin{equation} - \label{eq:rule:up-vote-reg} - \inference - { - {\left( - \begin{array}{l} - \var{rups}\\ - \var{dms} - \end{array} - \right)} - \vdash - { - \left( - \begin{array}{l} - \var{vts} - \end{array} - \right) - } - \trans{\hyperref[fig:rules:voting]{addvote}}{\var{v}} - { - \left( - \begin{array}{l} - \var{vts'} - \end{array} - \right) - }\\ - \var{pid} \leteq \vPropId{v} - & t \leq \size{\{\var{pid}\} \restrictdom \var{vts'}} - & \var{pid} \notin \dom~\var{cps} - } - { - {\left( - \begin{array}{l} - \var{s_n}\\ - \var{t}\\ - \var{rups}\\ - \var{dms} - \end{array} - \right)} - \vdash - { - \left( - \begin{array}{l} - \var{cps}\\ - \var{vts} - \end{array} - \right) - } - \trans{upvote}{\var{v}} - { - \left( - \begin{array}{l} - \var{cps} \unionoverrideRight \{\var{pid} \mapsto s_n\} \\ - \var{vts'} - \end{array} - \right) - } - } - \end{equation} - \caption{Vote registration rules} - \label{fig:rules:up-vote-reg} -\end{figure} - -\clearpage - -\subsection{Update-proposal endorsement} -\label{sec:proposal-endorsement} - -Figure~\ref{fig:ts-types:up-end} shows the types of the transition system -associated with the registration of candidate protocol versions present in -blocks. Some clarifications are in order: -\begin{itemize} -\item The $k$ parameter is used to determine when a confirmed proposal is - stable. Given we are in a current slot $s_n$, all update proposals confirmed - at or before slot $s_n - 2 \cdot k$ are deemed stable. -\item For the sake of conciseness, we omit the types associated to the - transitions $\trans{fads}{}$, since they can be inferred from the types of - the $\trans{upend}{}$ transitions. -\end{itemize} - -\begin{figure}[htb] - \emph{Update-proposal endorsement environments} - \begin{align*} - & \BVREnv - = \left( - \begin{array}{r@{~\in~}lr} - \var{s_n} & \Slot & \text{current slot number}\\ - t & \mathbb{N} & \text{adoption threshold}\\ - \var{dms} & \VKeyGen \mapsto \VKey & \text{delegation map}\\ - \var{cps} & \UPropId \mapsto \Slot & \text{confirmed proposals}\\ - \var{rpus} & \UPropId \mapsto (\ProtVer \times \PPMMap) - & \text{registered update proposals}\\ - \end{array}\right) - \end{align*} - % - \emph{Update-proposal endorsement states} - \begin{align*} - & \BVRState - = \left( - \begin{array}{r@{~\in~}lr} - \var{fads} & \seqof{(\Slot \times (\ProtVer \times \PPMMap))} - & \text{future protocol-version adoptions}\\ - \var{bvs} & \powerset{(\ProtVer \times \VKeyGen)} - & \text{endorsement-key pairs} - \end{array}\right) - \end{align*} - % - \emph{Update-proposal endorsement transitions} - \begin{equation*} - \_ \vdash \_ \trans{upend}{\_} \_ \in - \powerset (\BVREnv \times \BVRState - \times (\ProtVer \times \VKey) \times \BVRState) - \end{equation*} - \caption{Update-proposal endorsement transition-system types} - \label{fig:ts-types:up-end} -\end{figure} - -Rules in \cref{fig:rules:up-end} specify what happens when a block issuer -signals that it is ready to upgrade to a new protocol version, given in the -rule by $\var{bv}$: -\begin{itemize} -\item The set $\var{bvs}$, containing which genesis keys are (through their - delegates) ready to adopt a given protocol version, is updated to reflect - that the delegators of the block issuer (identified by its verifying key - $\var{vk}$) are ready to upgrade to $\var{bv}$. Given a pair - $(\var{pv}, ~\var{vk_s}) \in \var{bvs}$, we say that (the owner of) key - $\var{vk_s}$ endorses the (proposed) protocol version $\var{pv}$. - % - Note that before the decentralized era we do not count the total number nodes - that are ready to upgrade to a new protocol version, but we count only nodes - that are delegated by a genesis key. This allows us to implement a simple - update mechanism while we transition to the decentralized era, where we will - incorporate the results of ongoing research on a decentralized update - mechanism. -\item If there are a significant number of genesis keys that endorse $\var{bv}$ - (the $t$ environment variable is used for this), there is a registered - proposal (which are contained in $\var{rpus}$) which proposes to upgrade the - protocol to version $\var{bv}$, and this update proposal was confirmed at - least $2 \cdot k$ slots ago (to ensure stability of the confirmation), then - we update the sequence of future protocol-version adoptions ($\var{fads}$). -\item An element $(s_c, (\var{pv_c}, \var{pps_c})$ of $\var{fads}$ represents - the fact that protocol version $\var{pv_c}$ got enough endorsements at slot - $s_c$. An invariant that this sequence should maintain is that it is sorted - in ascending order on slots and on protocol versions. This means that if we - want to know what is the next candidate to adopt at a slot $s_k$ we only need - to look at the last element of $[.., s_k] \restrictdom \var{fads}$. Since the - list is sorted in ascending order on protocol versions, we know that this - last element will contain the highest version to be adopted in the slot range - $[.., s_k]$. The $\trans{fads}{}$ transition rules take care of maintaining - the aforementioned invariant. If a given protocol-version $\var{bv}$ got - enough endorsements, but there is an adoption candidate as last element of - $\var{fads}$ with a higher version, we simply discard $\var{bv}$. -\item If a registered proposal cannot be adopted, we only register the - endorsement. -\item If a block version does not correspond to a registered or confirmed - proposal, we just ignore the endorsement. -\end{itemize} - -\begin{figure}[htb] - \begin{equation} - \label{eq:rule:fads-add} - \inference - { - (\wcard ; (\wcard, (\var{pv_c}, \wcard)) \leteq \var{fads} - \wedge \var{pv_c} < bv) \vee \epsilon = fads - } - { - { - \left( - \begin{array}{l} - \var{fads} - \end{array} - \right) - } - \trans{fads}{(s_n, (\var{bv}, \var{pps_c}))} - { - \left( - \begin{array}{l} - \var{fads}; (s_n, (\var{bv}, \var{pps_c})) - \end{array} - \right) - } - } - \end{equation} - % - \nextdef - \begin{equation} - \label{eq:rule:fads-noop} - \inference - { - \wcard ; (\wcard, (\var{pv_c}, \wcard)) \leteq \var{fads} & \var{bv} \leq \var{pv_c} - } - { - { - \left( - \begin{array}{l} - \var{fads} - \end{array} - \right) - } - \trans{fads}{(s_n, (\var{bv}, \var{pps_c}))} - { - \left( - \begin{array}{l} - \var{fads} - \end{array} - \right) - } - } - \end{equation} - \nextdef - \begin{equation} - \label{eq:rule:up-up-invalid} - \inference - { - \var{pid} \mapsto (\var{bv}, \wcard) \notin \var{rpus} - \vee \var{pid} \notin \dom~(\var{cps} \restrictrange [.., s_n - 2 \cdot k]) - } - { - {\left( - \begin{array}{l} - s_n\\ - t\\ - \var{dms}\\ - \var{cps}\\ - \var{rpus} - \end{array} - \right)} - \vdash - { - \left( - \begin{array}{l} - \var{fads}\\ - \var{bvs} - \end{array} - \right) - } - \trans{upend}{(\var{bv}, \var{vk})} - { - \left( - \begin{array}{l} - \var{fads}\\ - \var{bvs} - \end{array} - \right) - } - } - \end{equation} - \nextdef - % - \begin{equation} - \label{eq:rule:up-cant-adopt} - \inference - { - \var{bvs'} \leteq \var{bvs} \cup - \{ (\var{bv}, \var{vk_s}) \mid \var{vk_s} \mapsto \var{vk} \in \var{dms} \} - & \size{\{\var{bv}\} \restrictdom \var{bvs'}} < t\\ - \var{pid} \mapsto (\var{bv}, \wcard) \in \var{rpus} - & \var{pid} \in \dom~(\var{cps} \restrictrange [.., s_n - 2 \cdot k]) - } - { - {\left( - \begin{array}{l} - s_n\\ - t\\ - \var{dms}\\ - \var{cps}\\ - \var{rpus} - \end{array} - \right)} - \vdash - { - \left( - \begin{array}{l} - \var{fads}\\ - \var{bvs} - \end{array} - \right) - } - \trans{upend}{(\var{bv}, \var{vk})} - { - \left( - \begin{array}{l} - \var{fads}\\ - \var{bvs'} - \end{array} - \right) - } - } - \end{equation} - % - \nextdef - % - \begin{equation} - \label{eq:rule:up-canadopt} - \inference - { - \var{bvs'} \leteq \var{bvs} \cup - \{ (\var{bv}, \var{vk_s}) \mid \var{vk_s} \mapsto \var{vk} \in \var{dms} \} - & t \leq \size{\{\var{bv}\} \restrictdom \var{bvs'}}\\ - \var{pid} \mapsto (\var{bv}, \var{pps_c}) \in \var{rpus} - & \var{pid} \in \dom~(\var{cps} \restrictrange [.., s_n - 2 \cdot k])\\ - (\var{fads}) \trans{fads}{(s_n, (\var{bv}, \var{pps_c}))} (\var{fads'}) - } - { - {\left( - \begin{array}{l} - s_n\\ - t\\ - \var{dms}\\ - \var{cps}\\ - \var{rpus} - \end{array} - \right)} - \vdash - { - \left( - \begin{array}{l} - \var{fads}\\ - \var{bvs} - \end{array} - \right) - } - \trans{upend}{(\var{bv}, \var{vk})} - { - \left( - \begin{array}{l} - \var{fads'}\\ - \var{bvs'} - \end{array} - \right) - } - } - \end{equation} - \caption{Update-proposal endorsement rules} - \label{fig:rules:up-end} -\end{figure} - -\clearpage - -\subsection{Deviations from the \texttt{cardano-sl} implementation} -\label{sec:update:deviation-actual-impl} - -The current specification of the voting mechanism deviates from the actual -implementation, although it should be backwards compatible with the latter. -These deviations are required to simplify the voting and update mechanism -removing unnecessary features for a simplified setting, which will use the OBFT -consensus protocol with federated genesis key holders. This in turn, enables us -to remove any accidental complexity that might have been introduced in the -current implementation. The following subsections highlight the differences -between the this specification and the current implementation. - -\subsubsection{Positive votes} -\label{sec:only-positive-votes} - -Genesis keys can only vote (positively) for an update proposal. In the current -implementation stakeholders can vote for or against a proposal, which makes the -voting logic more complex: -\begin{itemize} -\item there are more cases to consider -\item the current voting validation rules allow voters to change their minds - (by flipping their vote) at most once, which requires to keep track how a - stake holder voted and how many times. Contrast this with - Rule~\ref{eq:rule:voting} where we only need to keep track of the set of - key-proposal-id's pairs. -\end{itemize} - -\subsubsection{Alternative version numbers} -\label{sec:alt-version-numbers-constraints} - -Alternative version numbers are only lexicographically constrained. The current -implementation seems to be dependent on the order in which the update proposals -arrive: given a new update proposal $\var{up}$, if a set $X$ of update -proposals with the same minor and major versions than $\var{up}$ exist, then -the alternative version of $\var{up}$ has to be one more than the maximum -alternative number of $X$. Not only this logic seems to be brittle since it -depends on the order of arrival of the update proposals, but it requires a more -complex check (which depends on state) to determine if a proposed version can -follow the current one. By being more lenient on the alternative versions of -update proposals we can simplify the version checking logic considerably. - -\subsubsection{No implicit agreement} -\label{sec:no-implicit-agreement} - -We do not model the implicit agreement rule. If a proposal does not get enough -votes before the end of the voting period, then we simply discard it. At the -moment it is not clear whether the implicit agreement rule is needed. -Furthermore, in a non-federated setting, one could imagine an attack based on -exploiting an implicit agreement rule, where the attacker would attempt to -carry out a DoS attack on the parts of network that are likely to affect a -proposal in a way that is undesirable for the attacker. Thus the explicit -agreement seems to be a safer option. - -\subsubsection{Adoption threshold} -\label{sec:adoption-threshold} - -The current implementation adopts a proposal with version $\var{pv}$ if the -portion of block issuers' stakes, which issued blocks with this version, is -greater than the threshold given by: - -\begin{lstlisting} -max spMinThd (spInitThd - (t - s) * spThdDecrement) -\end{lstlisting} - -where: -\begin{itemize} -\item \lstinline{spMinThd} is a minimum threshold required for adoption. -\item \lstinline{spInitThd} is an initial threshold. -\item \lstinline{spThdDecrement} is the decrement constant of the initial - threshold. -\end{itemize} - -In this specification we only make use of a minimum adoption threshold, -represented by the protocol parameter $\var{upAdptThd}$ until it becomes clear -why a dynamic alternative is needed. - -\subsubsection{No checks on unlock-stake-epoch parameter} -\label{sec:no-unlock-stake-epoch-check} - -The rule of Figure~\ref{eq:rule:up-pv-validity} does not check the -\lstinline{bvdUnlockStakeEpoch} parameter, since it will have a different -meaning in the handover phase: its use will be reserved for unlocking the -Ouroboros-BFT logic in the software. - -\subsubsection{Ignored attributes of proposals} - -In Figure~\ref{fig:defs:update-proposals} the types -$\type{UpdData}$, and $\type{UpdAttrs}$ are only needed to model the fact that -an update proposal must sign such data, however, we do not use them for any -other purpose in this formalization. - -\subsubsection{No limits on update proposals per-key per-epoch} -\label{sec:no-up-limits} - -In the current system a given genesis key can submit only one proposal per -epoch. At the moment, it is not clear what are the advantages of such -constraint: -\begin{itemize} -\item Genesis keys are controlled by the Cardano foundation. -\item Even if a genesis key falls in the hands of the adversary, only one - update proposal can be submitted per-block, and proposals have a time to live of $u$ blocks. So in the worst case scenario we are looking at an - increase in the state size of the ledger proportional to $u$. -\end{itemize} -On the other hand, having that constraint in place brings some extra complexity -in the specification, and therefore in the code that will implement it. -Furthermore, in the current system, if an error is made in an update proposal, -then if an amendment must be made within the current epoch, then a new update -proposal must be submitted with a different key, which adds extra complexity -for devops. In light of the preceding discussion, unless there is a benefit for -restricting the number of times a genesis key can submit an update proposal, we -opted for removing such a constraint in the current specification. - -\subsubsection{Acceptance of blocks endorsing unconfirmed proposal updates} -\label{sec:acceptance-of-uncofirmed-up-endorsements} - -A consequence of enforcing the update rules in \cref{fig:rules:up-end} is that -a block that is endorsing an unconfirmed proposal gets accepted, although it -will not have any effect on the update mechanism. It is not clear at this stage -whether such a block should be rejected, therefore we have chosen to be lenient. - -\subsubsection{Only genesis keys are counted for endorsement} -\label{sec:only-genesis-keys-count-for-endorsement} - -The rules in \cref{fig:rules:up-end} take only into account the endorsements by -delegates of genesis keys. The reason for this is that implementing a more -complex update mechanism depends on research that is in progress at the time of -writing this specification. We decided to keep the update mechanism as simple -as possible in the centralized era and incorporate the research results for the -decentralized era at a later stage. diff --git a/eras/byron/ledger/formal-spec/utxo.tex b/eras/byron/ledger/formal-spec/utxo.tex deleted file mode 100644 index 03902103350..00000000000 --- a/eras/byron/ledger/formal-spec/utxo.tex +++ /dev/null @@ -1,420 +0,0 @@ -\newcommand{\PPMMap}{\ensuremath{\type{PParams}}} -\newcommand{\Lmax}{\ensuremath{\mathbb{L}_{\var{max}}}} -\section{UTxO} -\label{sec:state-trans-utxo-1} - -The transition rules for unspent transaction outputs are presented in -Figure~\ref{fig:rules:utxo}. The states of the UTxO transition system, along -with their types are defined in Figure~\ref{fig:defs:utxo}: -\begin{itemize} -\item we define the protocol parameters as an abstract type, this type is made - concrete in Section~\ref{sec:update}, where the update mechanism is - discussed. -\item The lovelace supply cap ($\fun{lovelaceCap}$) is treated as an abstract - function in this specification. In the actual system this value equals - $$ - 45 \times 10^{15} - $$ -\end{itemize} - - -Functions on the types introduced in \cref{fig:rules:utxo} are defined in -\cref{fig:derived-defs:utxo}. In particular, note that in function -$\fun{minfee}$ we make use of the fact that the $\Lovelace$ type is an alias -for the set of the integers numbers ($\mathbb{Z}$). - -Rule~\ref{eq:utxo-bootstrap}, models the fact that the \textbf{reserves} of -the system are set to: -$$ \fun{lovelaceCap} - \balance{utxo_0} $$ -The Lovelace amount $45 \times 10^{15}$ is the initial money supply in the -system. - -\begin{figure*}[htb] - \emph{Abstract types} - % - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \var{tx} & \Tx & \text{transaction}\\ - % - \var{txid} & \TxId & \text{transaction id}\\ - % - ix & \Ix & \text{transaction index}\\ - % - \var{addr} & \Addr & \text{address}\\ - % - \var{pps} & \PPMMap & \text{protocol parameters} - \end{array} - \end{equation*} - % - \emph{Derived types} - % - \begin{equation*} - \begin{array}{r@{~\in~}l@{\qquad=\qquad}r@{~\in~}lr} - \ell & \Lovelace - & n & \mathbb{Z} - & \text{currency value} - \\ - \var{txin} - & \TxIn - & (\var{txid}, \var{ix}) - & \TxId \times \Ix - & \text{transaction input} - \\ - \var{txout} - & \type{TxOut} - & (\var{addr}, c) - & \Addr \times \Lovelace - & \text{transaction output} - \\ - \var{utxo} - & \UTxO - & m - & \TxIn \mapsto \TxOut - & \text{unspent tx outputs} - \end{array} - \end{equation*} - % - \emph{Abstract Functions} - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \txid{} & \Tx \to \TxId & \text{compute transaction id}\\ - % - \fun{txbody} & \Tx \to \powerset{\TxIn} \times (\Ix \mapsto \TxOut) - & \text{transaction body}\\ - % - \fun{a} & \PPMMap \to \mathbb{Z} & \text{minimum fee constant}\\ - % - \fun{b} & \PPMMap \to \mathbb{Z} & \text{minimum fee factor}\\ - % - \fun{txSize} & \Tx \to \mathbb{Z} & \text{abstract size of a transaction}\\ - % - \fun{lovelaceCap} & \Lovelace & \text{lovelace supply cap} - \end{array} - \end{equation*} - % - \emph{Constraints} - \begin{equation} - \label{eq:txid-injective} - \forall \var{tx_i}, \var{tx_j} \cdot - \txid{\var{tx_i}} = \txid{\var{tx_j}} \Rightarrow \var{tx_i} = \var{tx_j} - \end{equation} - \caption{Definitions used in the UTxO transition system} - \label{fig:defs:utxo} -\end{figure*} - -\begin{figure} - \begin{align*} - & \fun{txins} \in \Tx \to \powerset{\TxIn} - & \text{transaction inputs} \\ - & \txins{tx} = \var{inputs} \where \txbody{tx} = (\var{inputs}, ~\wcard) - \nextdef - & \fun{txouts} \in \Tx \to \UTxO - & \text{transaction outputs as UTxO} \\ - & \fun{txouts} ~ \var{tx} = - \left\{ (\fun{txid} ~ \var{tx}, \var{ix}) \mapsto \var{txout} ~ - \middle| \begin{array}{l@{~}c@{~}l} - (\_, \var{outputs}) & = & \txbody{tx} \\ - \var{ix} \mapsto \var{txout} & \in & \var{outputs} - \end{array} - \right\} - \nextdef - & \fun{balance} \in \UTxO \to \mathbb{Z} - & \text{UTxO balance} \\ - & \fun{balance} ~ utxo = \sum_{(~\wcard ~ \mapsto (\wcard, ~c)) \in \var{utxo}} c\\ - \nextdef - % - & \fun{minfee} \in \PPMMap \to \Tx \to \mathbb{Z} & \text{minimum fee}\\ - & \fun{minfee}~\var{pps}~\var{tx} = - \fun{a}~\var{pps} + \fun{b}~\var{pps} * \fun{txSize}~\var{tx} - \end{align*} - \caption{Functions used in UTxO rules} - \label{fig:derived-defs:utxo} -\end{figure} - -\begin{figure} - \emph{UTxO environments} - \begin{equation*} - \UTxOEnv = - \left( - \begin{array}{r@{~\in~}lr} - \var{utxo_0} & \UTxO & \text{genesis UTxO}\\ - \var{pps} & \PPMMap & \text{protocol parameters map} - \end{array} - \right) - \end{equation*} - - \emph{UTxO states} - \begin{equation*} - \UTxOState = - \left( - \begin{array}{r@{~\in~}lr} - \var{utxo} & \UTxO & \text{unspent transaction outputs}\\ - \var{reserves} & \Lovelace & \text{system's reserves} - \end{array} - \right) - \end{equation*} - - \emph{UTxO transitions} - \begin{equation*} - \_ \vdash - \var{\_} \trans{utxo}{\_} \var{\_} - \subseteq \powerset (\UTxOEnv \times \UTxOState \times \Tx \times \UTxOState) - \end{equation*} - \caption{UTxO transition-system types} - \label{fig:ts-types:utxo} -\end{figure} - -\begin{figure} - \begin{equation}\label{eq:utxo-bootstrap} - \inference - { - } - { - {\left(\begin{array}{l} - utxo_0\\ - pps - \end{array}\right)} - \vdash - \trans{utxo}{} - \left( - \begin{array}{l} - \var{utxo_0}\\ - \fun{lovelaceCap} - \balance{utxo_0} - \end{array} - \right) - } - \end{equation} - \nextdef - \begin{equation}\label{eq:utxo-inductive} - \inference - { \txins{tx} \subseteq \dom \var{utxo}\\ - \var{fee} \leteq \balance{(\txins{tx} \restrictdom \var{utxo})} - \balance{(\txouts{tx})} - & \minfee{pps}{tx} \leq \var{fee}\\ - \txins{tx} \neq \emptyset - & \txouts{tx} \neq \emptyset - & \forall \wcard \mapsto (\wcard, c) \in \txouts{tx} \cdot 0 < c - } - { - {\left(\begin{array}{l} - utxo_0\\ - pps - \end{array}\right)} - \vdash - \left( - \begin{array}{l} - \var{utxo}\\ - \var{reserves} - \end{array} - \right) - \trans{utxo}{tx} - \left( - \begin{array}{l} - (\txins{tx} \subtractdom \var{utxo}) \cup \txouts{tx}\\ - \var{reserves + \var{fee}} - \end{array} - \right) - } - \end{equation} - \caption{UTxO inference rules} - \label{fig:rules:utxo} -\end{figure} - -Rule~\ref{eq:utxo-inductive} specifies under which conditions a transaction can -be applied to a set of unspent outputs, and how the set of unspent output -changes with a transaction: -\begin{itemize} -\item Each input spent in the transaction must be in the set of unspent - outputs. -\item The minimum fee, which depends on the transaction and the protocol - parameters, must be less or equal than the difference between the balance of - the unspent outputs in a transaction (i.e. the total amount paid in a - transaction) and the amount of spent inputs. -\item The set of inputs must not be empty. -\item All the transaction outputs must be positive. We do not allow $0$ value - outputs to be consistent with the current implementation. -\item If the above conditions hold, then the new state will not have the inputs - spent in transaction $\var{tx}$ and it will have the new outputs in - $\var{tx}$. -\end{itemize} - -\clearpage - -\subsection{Witnesses} -\label{sec:witnesses} - -The rules for witnesses are presented in Figure~\ref{fig:rules:utxow}. In the -initial rules note that $\var{utxoEnv}$ and $\var{utxoSt}$ are tuples, where -$\var{utxoEnv} \in \UTxOEnv$ and $\var{utxoSt} \in \UTxOState$. The definitions -used in Rule~\ref{eq:utxo-witness-inductive} are given in -Figure~\ref{fig:defs:utxow}. Note that Rule~\ref{eq:utxo-witness-inductive} -uses the transition relation defined in Figure~\ref{fig:rules:utxo}. The main -reason for doing this is to define the rules incrementally, modeling different -aspects in isolation to keep the rules as simple as possible. Also note that -the $\trans{utxo}{}$ relation could have been defined in terms of -$\trans{utxow}{}$ (thus composing the rules in a different order). The choice -here is arbitrary. - -\begin{figure}[htb] - \emph{Abstract functions} - % - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \fun{wits} & \Tx \to \powerset{(\VKey \times \Sig)} - & \text{witnesses of a transaction}\\ - \fun{hash_{vkey}} & \Addr \mapsto \KeyHash - & \text{hash of a verifying key in an address}\\ - \end{array} - \end{equation*} - \caption{Definitions used in the UTxO transition system with witnesses} - \label{fig:defs:utxow} -\end{figure} -\begin{figure}[htb] - \begin{align*} - & \addr{}{} \in \UTxO \to \TxIn \mapsto \Addr & \text{addresses of inputs}\\ - & \addr{utxo} = \{ i \mapsto a \mid i \mapsto (a, \wcard) \in \var{utxo} \} \\ - \nextdef - & \fun{addr_h} \in \UTxO \to \TxIn \mapsto \KeyHash & \text{verifying key hashes}\\ - & \fun{addr_h}~utxo = \{ i \mapsto h \mid i \mapsto (a, \wcard) \in \var{utxo} - \wedge a \mapsto h \in \fun{hash_{vkey}} \} - \end{align*} - \caption{Functions used in rules witnesses} - \label{fig:derived-defs:utxow} -\end{figure} - -\begin{figure} - \emph{UTxO with witness transitions} - \begin{equation*} - \var{\_} \vdash - \var{\_} \trans{utxow}{\_} \var{\_} - \subseteq \powerset - (\UTxOEnv \times \UTxOState \times (\Tx \times \powerset{(\VKey \times \Sig)}) \times \UTxOState) - \end{equation*} - \caption{UTxO with witness transition-system types} - \label{fig:ts-types:utxow} -\end{figure} - -\begin{figure} - \begin{equation}\label{eq:utxow-bootstrap} - \inference - { - {\begin{array}{l} - utxoEnv - \end{array}} - \vdash - \trans{\hyperref[fig:rules:utxo]{utxo}}{} - \left( - \var{utxoSt} - \right) - } - { - {\begin{array}{l} - utxoEnv - \end{array}} - \vdash - \trans{utxow}{} - \left( - \var{utxoSt} - \right) - } - \end{equation} - \nextdef - \begin{equation} - \label{eq:utxo-witness-inductive} - \inference - { \var{utxoEnv} - \vdash - {\left( - \begin{array}{l} - \var{utxo}\\ - \var{reserves} - \end{array} - \right)} - \trans{\hyperref[fig:rules:utxo]{utxo}}{tx} - {\left( - \begin{array}{l} - \var{utxo'}\\ - \var{reserves'} - \end{array} - \right)} - & \var{maxTxSize} \mapsto \var{t} \in \var{pps} & \fun{txSize}~\var{tx} \leq t \\ ~ \\ - & \forall i \in \txins{tx} \cdot \exists (\var{vk}, \sigma) \in \wits{\var{tx}} - \cdot - \mathcal{V}^\sigma_{\var{vk}}~{\serialised{\txbody{tx}}} - \wedge \fun{addr_h}~{utxo}~i = \hash{vk}\\ - } - {\var{utxoEnv} \vdash - \left( - \begin{array}{l} - \var{utxo}\\ - \var{reserves} - \end{array} - \right) - \trans{utxow}{tx} - \left( - \begin{array}{l} - \var{utxo'}\\ - \var{reserves'} - \end{array} - \right) - } - \end{equation} - \caption{UTxO with witnesses inference rules} - \label{fig:rules:utxow} -\end{figure} - -\clearpage - -\subsection{Transaction sequences} -\label{sec:transaction-seqs} - -\cref{fig:rules:utxow-seq} models the application of a sequence of -transactions. For the sake of concision we omit the types of this transition -system, since they are the same as the ones of $\trans{utxow}{}$. - -\begin{figure}[htb] - \begin{equation}\label{eq:utxows-bootstrap} - \inference - { - {\begin{array}{l} - utxoEnv - \end{array}} - \vdash - \trans{\hyperref[fig:rules:utxo]{utxow}}{} - \left( - \var{utxoSt} - \right) - } - { - {\begin{array}{l} - utxoEnv - \end{array}} - \vdash - \trans{utxows}{} - \left( - \var{utxoSt} - \right) - } - \end{equation} - \nextdef - \begin{equation} - \label{eq:rule:utxow-seq-base} - \inference - {} - {\var{utxoEnv} \vdash \var{utxoSt} \trans{utxows}{\epsilon} \var{utxoSt}} - \end{equation} - % - \nextdef - % - \begin{equation} - \label{eq:rule:utxow-seq-ind} - \inference - { - \var{utxoEnv} \vdash \var{utxoSt} \trans{utxows}{\Gamma} \var{utxoSt'} - & - \var{utxoEnv} \vdash \var{utxoSt'} \trans{\hyperref[fig:rules:utxow]{utxow}}{\var{tx}} \var{utxoSt''} - } - {\var{utxoEnv} \vdash \var{utxoSt} \trans{utxows}{\Gamma;\var{tx}} \var{utxoSt''}} - \end{equation} - \caption{UTxO sequence rules} - \label{fig:rules:utxow-seq} -\end{figure} diff --git a/eras/byron/ledger/impl/.ghcid b/eras/byron/ledger/impl/.ghcid deleted file mode 100644 index f55324a3a61..00000000000 --- a/eras/byron/ledger/impl/.ghcid +++ /dev/null @@ -1 +0,0 @@ ---command="cabal repl --repl-options='-isrc -fwarn-unused-binds -fwarn-unused-imports -fno-code -fobject-code -g2 -fno-break-on-exception -fno-break-on-error -ferror-spans -j -Wno-unused-packages'" --clear --no-height-limit --reverse-errors --reload=../../../../ --outputfile=/tmp/cardano-ledger-byron-ghcid.txt \ No newline at end of file diff --git a/eras/byron/ledger/impl/CHANGELOG.md b/eras/byron/ledger/impl/CHANGELOG.md deleted file mode 100644 index 9e7c30cb635..00000000000 --- a/eras/byron/ledger/impl/CHANGELOG.md +++ /dev/null @@ -1,29 +0,0 @@ -# Revision history for `cardano-ledger-byron` - -## 1.0.1.1 - -* - -## 1.0.1.0 - -* Replaced `small-steps-test` dependency with `small-steps:testlib` - -## 1.0.0.4 - -* - -## 1.0.0.3 - -* Update `streaming-binary` dependency to 0.4. - -## 1.0.0.2 - -* - -## 1.0.0.1 - -* Make it build with `ghc-9.6`. - -## 1.0.0.0 - -* First properly versioned release. diff --git a/eras/byron/ledger/impl/README.md b/eras/byron/ledger/impl/README.md deleted file mode 100644 index eb3a36249c1..00000000000 --- a/eras/byron/ledger/impl/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# cardano-ledger - -This package contains the validation rules for the Cardano Ledger. The rules -define state transition systems that describe how to validate new blocks and -transaction, and how to extend the ledger. They are an implementation of the -formal specification defined in -[`cardano-ledger`](https://github.com/intersectmbo/cardano-ledger). diff --git a/eras/byron/ledger/impl/Setup.hs b/eras/byron/ledger/impl/Setup.hs deleted file mode 100644 index e8ef27dbba9..00000000000 --- a/eras/byron/ledger/impl/Setup.hs +++ /dev/null @@ -1,3 +0,0 @@ -import Distribution.Simple - -main = defaultMain diff --git a/eras/byron/ledger/impl/cardano-ledger-byron.cabal b/eras/byron/ledger/impl/cardano-ledger-byron.cabal deleted file mode 100644 index ce3cf78b4ae..00000000000 --- a/eras/byron/ledger/impl/cardano-ledger-byron.cabal +++ /dev/null @@ -1,399 +0,0 @@ -cabal-version: 3.0 -name: cardano-ledger-byron -version: 1.0.1.0 -license: Apache-2.0 -maintainer: operations@iohk.io -author: IOHK -synopsis: The blockchain layer of Cardano during the Byron era -description: The blockchain layer of Cardano during the Byron era -category: Currency -build-type: Simple -data-files: - golden/cbor/block/BlockSignature - golden/cbor/block/Body - golden/cbor/block/BoundaryBlockHeader - golden/cbor/block/BoundaryBody - golden/cbor/block/BoundaryConsensusData - golden/cbor/block/BoundaryProof - golden/cbor/block/ExtraBodyData - golden/cbor/block/Header - golden/cbor/block/HeaderHash - golden/cbor/block/Proof - golden/cbor/block/StaticConfig_GCSpec - golden/cbor/block/ToSign - golden/cbor/common/Address - golden/cbor/common/Address0 - golden/cbor/common/Address1 - golden/cbor/common/Address2 - golden/cbor/common/Address3 - golden/cbor/common/Address4 - golden/cbor/common/AddrSpendingData_Redeem - golden/cbor/common/AddrSpendingData_VerKey - golden/cbor/common/AddrType_R - golden/cbor/common/AddrType_VK - golden/cbor/common/Attributes - golden/cbor/common/BlockCount - golden/cbor/common/ChainDifficulty - golden/cbor/common/KeyHash - golden/cbor/common/Lovelace - golden/cbor/common/LovelacePortion - golden/cbor/common/MerkleRoot - golden/cbor/common/MerkleTree - golden/cbor/common/TxFeePolicy_Linear - golden/cbor/common/TxSizeLinear - golden/cbor/delegation/Certificate - golden/cbor/delegation/DlgPayload - golden/cbor/mempoolpayload/MempoolPayload - golden/cbor/mempoolpayload/MempoolPayload1 - golden/cbor/mempoolpayload/MempoolPayload2 - golden/cbor/mempoolpayload/MempoolPayload3 - golden/cbor/slotting/EpochAndSlotCount - golden/cbor/slotting/EpochNumber - golden/cbor/slotting/EpochSlots - golden/cbor/slotting/SlotNumber - golden/cbor/ssc/Commitment - golden/cbor/ssc/CommitmentsMap - golden/cbor/ssc/InnerSharesMap - golden/cbor/ssc/Opening - golden/cbor/ssc/OpeningsMap - golden/cbor/ssc/SharesMap - golden/cbor/ssc/SignedCommitment - golden/cbor/ssc/SscPayload_CertificatesPayload - golden/cbor/ssc/SscPayload_CommitmentsPayload - golden/cbor/ssc/SscPayload_OpeningsPayload - golden/cbor/ssc/SscPayload_SharesPayload - golden/cbor/ssc/SscProof_CertificatesProof - golden/cbor/ssc/SscProof_CommitmentsProof - golden/cbor/ssc/SscProof_OpeningsProof - golden/cbor/ssc/SscProof_SharesProof - golden/cbor/ssc/VssCertificate - golden/cbor/ssc/VssCertificatesHash - golden/cbor/ssc/VssCertificatesMap - golden/cbor/update/ApplicationName - golden/cbor/update/AttackTarget_NetworkAddressTarget - golden/cbor/update/AttackTarget_PubKeyAddressTarget - golden/cbor/update/BlockHeader_Boundary - golden/cbor/update/CommitmentSignature - golden/cbor/update/HashRaw - golden/cbor/update/HashTx - golden/cbor/update/InstallerHash - golden/cbor/update/Payload - golden/cbor/update/Proof - golden/cbor/update/Proposal - golden/cbor/update/ProposalBody - golden/cbor/update/ProtocolParameters - golden/cbor/update/ProtocolParametersUpdate - golden/cbor/update/ProtocolVersion - golden/cbor/update/SharesDistribution - golden/cbor/update/SoftforkRule - golden/cbor/update/SoftwareVersion - golden/cbor/update/StaticConfig_GCSpec - golden/cbor/update/StaticConfig_GCSrc - golden/cbor/update/SystemTag - golden/cbor/update/UpId - golden/cbor/update/Vote - golden/cbor/utxo/HashTx - golden/cbor/utxo/Tx - golden/cbor/utxo/TxAttributes - golden/cbor/utxo/TxId - golden/cbor/utxo/TxInList - golden/cbor/utxo/TxIn_Utxo - golden/cbor/utxo/TxInWitness_RedeemWitness - golden/cbor/utxo/TxInWitness_VKWitness - golden/cbor/utxo/TxOut - golden/cbor/utxo/TxOut1 - golden/cbor/utxo/TxOutList - golden/cbor/utxo/TxOutList1 - golden/cbor/utxo/TxPayload1 - golden/cbor/utxo/TxProof - golden/cbor/utxo/TxSig - golden/cbor/utxo/TxSigData - golden/cbor/utxo/TxWitness - golden/json/genesis/GenesisData0_Legacy_HasNetworkMagic - -data-dir: test -extra-source-files: - README.md - CHANGELOG.md - -flag test-normal-form - description: Test ledger state normal form during epoch validation - default: False - manual: True - -library - exposed-modules: - Cardano.Chain.Block - Cardano.Chain.Byron.API - Cardano.Chain.Common - Cardano.Chain.Constants - Cardano.Chain.Delegation - Cardano.Chain.Delegation.Validation.Activation - Cardano.Chain.Delegation.Validation.Interface - Cardano.Chain.Delegation.Validation.Scheduling - Cardano.Chain.Epoch.File - Cardano.Chain.Epoch.Validation - Cardano.Chain.Genesis - Cardano.Chain.MempoolPayload - Cardano.Chain.ProtocolConstants - Cardano.Chain.Slotting - Cardano.Chain.Ssc - Cardano.Chain.UTxO - Cardano.Chain.UTxO.UTxO - Cardano.Chain.UTxO.Validation - Cardano.Chain.Update - Cardano.Chain.Update.Proposal - Cardano.Chain.Update.Validation.Endorsement - Cardano.Chain.Update.Validation.Interface - Cardano.Chain.Update.Validation.Registration - Cardano.Chain.Update.Validation.Voting - Cardano.Chain.Update.Vote - Cardano.Chain.ValidationMode - - hs-source-dirs: src - other-modules: - Cardano.Chain.Block.Block - Cardano.Chain.Block.Body - Cardano.Chain.Block.Boundary - Cardano.Chain.Block.Header - Cardano.Chain.Block.Proof - Cardano.Chain.Block.Validation - Cardano.Chain.Block.ValidationMode - Cardano.Chain.Byron.API.Common - Cardano.Chain.Byron.API.Mempool - Cardano.Chain.Byron.API.Protocol - Cardano.Chain.Byron.API.Validation - Cardano.Chain.Common.AddrAttributes - Cardano.Chain.Common.AddrSpendingData - Cardano.Chain.Common.Address - Cardano.Chain.Common.AddressHash - Cardano.Chain.Common.Attributes - Cardano.Chain.Common.BlockCount - Cardano.Chain.Common.CBOR - Cardano.Chain.Common.ChainDifficulty - Cardano.Chain.Common.Compact - Cardano.Chain.Common.KeyHash - Cardano.Chain.Common.Lovelace - Cardano.Chain.Common.LovelacePortion - Cardano.Chain.Common.Merkle - Cardano.Chain.Common.NetworkMagic - Cardano.Chain.Common.TxFeePolicy - Cardano.Chain.Common.TxSizeLinear - Cardano.Chain.Delegation.Certificate - Cardano.Chain.Delegation.Map - Cardano.Chain.Delegation.Payload - Cardano.Chain.Genesis.AvvmBalances - Cardano.Chain.Genesis.Config - Cardano.Chain.Genesis.Data - Cardano.Chain.Genesis.Delegation - Cardano.Chain.Genesis.Generate - Cardano.Chain.Genesis.Hash - Cardano.Chain.Genesis.Initializer - Cardano.Chain.Genesis.KeyHashes - Cardano.Chain.Genesis.NonAvvmBalances - Cardano.Chain.Genesis.Spec - Cardano.Chain.Slotting.EpochAndSlotCount - Cardano.Chain.Slotting.EpochNumber - Cardano.Chain.Slotting.EpochSlots - Cardano.Chain.Slotting.SlotCount - Cardano.Chain.Slotting.SlotNumber - Cardano.Chain.UTxO.Compact - Cardano.Chain.UTxO.GenesisUTxO - Cardano.Chain.UTxO.Tx - Cardano.Chain.UTxO.TxAux - Cardano.Chain.UTxO.TxPayload - Cardano.Chain.UTxO.UTxOConfiguration - Cardano.Chain.UTxO.TxProof - Cardano.Chain.UTxO.TxWitness - Cardano.Chain.UTxO.ValidationMode - Cardano.Chain.Update.ApplicationName - Cardano.Chain.Update.InstallerHash - Cardano.Chain.Update.Payload - Cardano.Chain.Update.Proof - Cardano.Chain.Update.ProtocolParameters - Cardano.Chain.Update.ProtocolParametersUpdate - Cardano.Chain.Update.ProtocolVersion - Cardano.Chain.Update.SoftforkRule - Cardano.Chain.Update.SoftwareVersion - Cardano.Chain.Update.SystemTag - Cardano.Chain.Update.Validation.Interface.ProtocolVersionBump - - default-language: Haskell2010 - default-extensions: NoImplicitPrelude - ghc-options: - -Wall -Wno-all-missed-specialisations - -Wno-missing-deriving-strategies -Wno-missing-import-lists - -Wno-missing-safe-haskell-mode -Wno-prepositive-qualified-module - -Wno-safe -Wno-unsafe -Wunused-packages - - build-depends: - base >=4.14 && <5, - aeson, - base58-bytestring, - bimap >=0.4 && <0.6, - binary, - bytestring, - canonical-json, - cardano-crypto, - cardano-crypto-wrapper, - cardano-ledger-binary >=1.3.1, - cardano-prelude, - cborg, - containers, - contra-tracer, - cryptonite, - Cabal-syntax, - digest, - directory, - filepath, - formatting, - heapwords, - nothunks, - quiet, - resourcet, - streaming, - streaming-binary >=0.2 && <0.4, - streaming-bytestring, - text, - time, - vector - -test-suite cardano-ledger-byron-test - type: exitcode-stdio-1.0 - main-is: test.hs - hs-source-dirs: test - other-modules: - Test.Cardano.Chain.Block.CBOR - Test.Cardano.Chain.Block.Gen - Test.Cardano.Chain.Block.Model - Test.Cardano.Chain.Block.Model.Examples - Test.Cardano.Chain.Block.Size - Test.Cardano.Chain.Block.Validation - Test.Cardano.Chain.Block.ValidationMode - Test.Cardano.Chain.Byron.API - Test.Cardano.Chain.Buildable - Test.Cardano.Chain.Common.Address - Test.Cardano.Chain.Common.Attributes - Test.Cardano.Chain.Common.CBOR - Test.Cardano.Chain.Common.Compact - Test.Cardano.Chain.Common.Example - Test.Cardano.Chain.Common.Gen - Test.Cardano.Chain.Common.Lovelace - Test.Cardano.Chain.Config - Test.Cardano.Chain.Delegation.CBOR - Test.Cardano.Chain.Delegation.Certificate - Test.Cardano.Chain.Delegation.Example - Test.Cardano.Chain.Delegation.Gen - Test.Cardano.Chain.Delegation.Model - Test.Cardano.Chain.Elaboration.Block - Test.Cardano.Chain.Elaboration.Delegation - Test.Cardano.Chain.Elaboration.Keys - Test.Cardano.Chain.Elaboration.Update - Test.Cardano.Chain.Elaboration.UTxO - Test.Cardano.Chain.Epoch.File - Test.Cardano.Chain.Genesis.CBOR - Test.Cardano.Chain.Genesis.Dummy - Test.Cardano.Chain.Genesis.Example - Test.Cardano.Chain.Genesis.Gen - Test.Cardano.Chain.Genesis.Json - Test.Cardano.Chain.MempoolPayload.CBOR - Test.Cardano.Chain.MempoolPayload.Example - Test.Cardano.Chain.MempoolPayload.Gen - Test.Cardano.Chain.Ssc.CBOR - Test.Cardano.Chain.Slotting.CBOR - Test.Cardano.Chain.Slotting.Example - Test.Cardano.Chain.Slotting.Gen - Test.Cardano.Chain.Slotting.Properties - Test.Cardano.Chain.UTxO.CBOR - Test.Cardano.Chain.UTxO.Compact - Test.Cardano.Chain.UTxO.Example - Test.Cardano.Chain.UTxO.Gen - Test.Cardano.Chain.UTxO.Model - Test.Cardano.Chain.UTxO.ValidationMode - Test.Cardano.Chain.Update.CBOR - Test.Cardano.Chain.Update.Example - Test.Cardano.Chain.Update.Gen - Test.Cardano.Chain.Update.Properties - Test.Cardano.Mirror - Test.Options - GetDataFileName - Paths_cardano_ledger_byron - - default-language: Haskell2010 - default-extensions: NoImplicitPrelude - ghc-options: - -Wall -Wno-all-missed-specialisations - -Wno-missing-deriving-strategies -Wno-missing-import-lists - -Wno-missing-safe-haskell-mode -Wno-prepositive-qualified-module - -Wno-safe -Wno-unsafe -Wunused-packages - "-with-rtsopts=-K450K -M500M" - - build-depends: - base, - base16-bytestring >=1, - bimap, - bytestring, - cardano-crypto, - cardano-crypto-test, - cardano-crypto-wrapper, - cardano-ledger-binary, - cardano-ledger-binary:testlib, - cardano-ledger-byron, - cardano-prelude, - cardano-prelude-test, - containers, - byron-spec-chain, - byron-spec-ledger, - directory, - filepath, - formatting, - heapwords, - hedgehog >=1.0.4, - microlens, - resourcet, - small-steps:{small-steps, testlib} >=1.1, - streaming, - tasty, - tasty-hedgehog, - text, - time, - vector - -test-suite epoch-validation-normal-form-test - type: exitcode-stdio-1.0 - main-is: NormalFormTest.hs - hs-source-dirs: test - other-modules: - Test.Cardano.Chain.Block.Validation - Test.Cardano.Chain.Config - Test.Cardano.Mirror - Test.Options - - default-language: Haskell2010 - default-extensions: NoImplicitPrelude - ghc-options: - -Wall -Wno-all-missed-specialisations - -Wno-missing-deriving-strategies -Wno-missing-import-lists - -Wno-missing-safe-haskell-mode -Wno-prepositive-qualified-module - -Wno-safe -Wno-unsafe -Wunused-packages - "-with-rtsopts=-K450K -M500M" - - build-depends: - base, - bytestring, - cardano-ledger, - cardano-ledger-binary, - cardano-crypto-wrapper, - cardano-prelude, - cardano-prelude-test, - directory, - filepath, - hedgehog >=1.0.4, - resourcet, - silently, - streaming, - tasty, - tasty-hedgehog - - if !flag(test-normal-form) - buildable: False diff --git a/eras/byron/ledger/impl/doc/network-magic.md b/eras/byron/ledger/impl/doc/network-magic.md deleted file mode 100644 index 1d2e0762e35..00000000000 --- a/eras/byron/ledger/impl/doc/network-magic.md +++ /dev/null @@ -1,123 +0,0 @@ -# Address Discrimination (`NetworkMagic`) - -Address discrimination was a problem in the original -[`cardano-sl`](https://github.com/input-output-hk/cardano-sl) implementation -that came to our attention in mid-2018. This document briefly describes the -problem as well as the solution implemented. - -For those with access to IOHK's old internal issue tracker, YouTrack, all of -the nitty-gritty details can still be found under issues `CO-353` and -`CO-354`. - -## The Problem - -In the original `cardano-sl` design, there was no way of distinguishing -between addresses of different networks. This was undesirable because, for -example, it was totally valid for a user to attempt a transfer of funds from a -mainnet/staging address to a testnet address and vice versa which could result -in a loss of those funds. - -## The Solution - -Our solution was to introduce a new field to addresses which would contain a -specified protocol magic value (a magic value used to distinguish between -networks). That way, we could check the protocol magic values contained within -each address when validating transactions. - -However, because pre-existing mainnet and staging addresses would not contain -this new field, we had to ensure that its inclusion would be optional in order -to maintain backward compatibility. - -### `NetworkMagic` - -Given these requirements, we introduced a new data type to be used in -representing this new field in each address: - -``` -data NetworkMagic - = NetworkMainOrStage - | NetworkTestnet !Word32 -``` - -`NetworkMagic` effectively represents an _optional_ protocol magic ID value. -Depending on the type of network, `NetworkMagic` is utilized in different ways -with regard to its inclusion in addresses: - - - For maintaining backward compatibility, all mainnet and staging addresses - *must not* contain a network magic, i.e. they would contain a value of - `NetworkMainOrStage`. - - - All testnet addresses *must* contain a network magic, i.e. they would - contain a value of `NetworkTestnet`. At the time, we decided that it wasn't - necessary to maintain backward compatibility with pre-existing testnet - addresses. - -### `RequiresNetworkMagic` - -We also required a way to specify, via the node's configuration, whether a -network requires the inclusion of network magic in its addresses. Thus, we -introduced a new data type, `RequiresNetworkMagic`: - -``` -data RequiresNetworkMagic - = RequiresNoMagic - | RequiresMagic -``` - -We also added a `RequiresNetworkMagic` field to the `ProtocolMagic` data type. -The `ProtocolMagic` data type would now contain two fields for which values -would be specified in the configuration: - - - One field for `RequiresNetworkMagic` which is specified in the node's - configuration. - - - One field for the actual protocol magic ID (essentially a `Word32`) which - is specified in the genesis configuration. - -Here's a simplified version of the `ProtocolMagic` data type to display the -result of adding this new field: - -``` -data ProtocolMagic = ProtocolMagic !Word32 !RequiresNetworkMagic -``` - -One might question why we didn't just allow the `NetworkMagic` value to be -specified in the node's configuration as opposed to adding this new -`RequiresNetworkMagic` type. After all, this would clearly indicate whether -the network requires a `NetworkMagic` value to be serialized in its addresses -since there are only two clear cases: - - - `NetworkMainOrStage` - No network magic value serialized in addresses. - - - `NetworkTestnet !Word32` - Network magic value serialized in addresses. - -However, the problem with this is that, in the `NetworkTestnet` case, the -configuration could potentially specify a `Word32` value that differs from -the protocol magic ID value already specified in the immutable genesis -configuration. Because these values _must_ be the same, we figured it'd make -sense to limit the potential for human error and, instead, derive the -`NetworkMagic` value from the `ProtocolMagic` whenever necessary. - -Here's a simplified version of how this derivation might look: - -``` -makeNetworkMagic :: ProtocolMagic -> NetworkMagic -makeNetworkMagic (ProtocolMagic pmId reqNetMagic) = case reqNetMagic of - RequiresNoMagic -> NetworkMainOrStage - RequiresMagic -> NetworkTestnet pmId -``` - -### Transaction Validation With Address Discrimination - -With the "address discrimination" functionality: - - - You cannot transfer funds from a mainnet/staging address to a testnet - address as the testnet address will include a `NetworkMagic` while the - mainnet/staging node's configuration specifies that it `RequiresNoMagic`. - - - You cannot transfer funds from a testnet address to a mainnet/staging - address as the mainnet/staging address does not include a `NetworkMagic` - while the testnet node's configuration specifies that it `RequiresMagic`. - - - You cannot transfer funds between addresses that were generated on - different testnets as their `NetworkMagic` values will not all be equal. diff --git a/eras/byron/ledger/impl/mainnet-genesis.json b/eras/byron/ledger/impl/mainnet-genesis.json deleted file mode 100644 index 1215d5c58e3..00000000000 --- a/eras/byron/ledger/impl/mainnet-genesis.json +++ /dev/null @@ -1,14572 +0,0 @@ -{ - "avvmDistr": { - "-0BJDi-gauylk4LptQTgjMeo7kY9lTCbZv12vwOSTZk=": "9999300000000", - "-0Np4pyTOWF26iXWVIvu6fhz9QupwWRS2hcCaOEYlw0=": "3760024000000", - "-0_pjw54ACGTrCsH3SXreedq-Cj9pFBcZDbxT9sXaqQ=": "411085000000", - "-0f2smLIQ8XMD0aEX6Hyea9x7lvsPpXkJNkIxWgu7WU=": "394923000000", - "-0fIGh1Lc5glmQRyy0EfBXOV8WabO5kSEVGYYrXBD0A=": "915796000000", - "-0zTwqKpgqj4_OgP3U4iKsU6JHoKOd9ieKtwKRB9OW8=": "381805000000", - "-13zumvoaX3Pz77eoXL7NorM-SExtpwV8yhfTRn-TM0=": "384931000000", - "-1RjsQWENpqAFT1WqdQ2KPNU1AOcU7ZcQpYOOejK5Ns=": "769178000000", - "-22xrm7vKzEixOc5F1oj3xeKMN_MH2y8O_u2TH9DePM=": "803076000000", - "-2RkpQozYiWQhIIsD0aCs0gf1P8bVgnnzwsFg8c8RP0=": "1153846000000", - "-2XZaPcXhltDmOf1hvzYfZg57lKhlHnOS8PikQEkUVI=": "385510000000", - "-2o3qNBbRmRlnNlnzch0PN0_r_E7mLsKgs5OGRa4dxg=": "576923000000", - "-38c7PmGiIDIfQGiuprXyeGtunN4aNFxE_jO6tUN0Ck=": "382394000000", - "-3NbDv8uTc-dty8f0AR6-Yb-qaIkCwSkajjyFsXf-YE=": "1644282000000", - "-3UvSWkXUfNxcStJuoOXxTnRtJy3jQI4sUi3vHjXC8s=": "2426053000000", - "-3hZBJcnLmZjYodAosDF0XnW_xbQ1S6KS0XB3Qluszg=": "395499000000", - "-459i1m513sgQONC2P1ZWbJOM2sF_O7XjHcQylDHXnw=": "757764000000", - "-52oZuYSkpLCwNe0pGn6CUo92vOr01Np05mCoJ2mNhI=": "1207271000000", - "-57Zs0tjj9n8p2pvfgzaLZrM8iD1ISbJvSzmdgQaNIA=": "949056000000", - "-5Pgq4y8c_F2IBgu8yORFPcRB2fFsYzvf1Wtm8Q7220=": "458682000000", - "-5aZc2WtY3EAyILQd4UBnTG_CeQXnjL-y_zFDRcPYok=": "451138000000", - "-6Ed7TmLl3T53GAOiqMysVmamtt7XT9ERdscqMsM7Po=": "2044027000000", - "-6lnl3HES9BH0W2atqUFdtJLYnqBk9HzrIytY-DP0c4=": "382394000000", - "-76g9IHNPdYkxYUcogzbRUCBOQPNAgjx64hOwUpg6rA=": "1140914000000", - "-7LttasrZ4U5Grz49xp5vs_I_JuQZgnENQJadzHxhdM=": "1158541000000", - "-8I3X8YPjI80iD0dGl2WOwS7CiXsPc4DcZa6HOhoxZY=": "442614000000", - "-8WiQLpEQ7st5Ty-t3Lqh2d5VVPcv9n2UNTlNATDvmk=": "810455000000", - "-8uHVBbQrouWvBujh8Y6Zrj_4cZPin_xHgrZX5sZKRY=": "377786000000", - "-9IMLpHDIWwxDcLREa1l0WmXTHrSqP-g8XKvWCD-GlI=": "1153846000000", - "-9SaB1MbA4w0GYig3RCbBFk683YIQSSZqdKaQQmLaW0=": "636363000000", - "-9jeQK3V4UGkIF-F9Du1DKIIryNPSiekVN2eGBfAXRo=": "383322000000", - "-9pQVNlbr8DOGuk4UN5j5ee7ykKJrYN5clnFacHXYyg=": "385209000000", - "-Adr_ZFBQfWsPiNyhBhMFoz1rdj5UcDPyj59xKNkymg=": "469310000000", - "-Bcfv2Bym8nD1-uyQCF7u-16WcTWGEdFjgTlEJheQtA=": "461437000000", - "-BdInt6tiK0cshy7Ft2mN5ChXoOeJNK32XYhWYuZy_E=": "845859000000", - "-Boy9bMaRnk98bM9V4CkTtFXr0mMNJ-D4Vof7pnWPtk=": "455259000000", - "-BvExFvyMtGeBo0-uETFW1lQcDVqV6vBMMQt-MzNHiU=": "614226000000", - "-ByAPVJKRz34uqT6aOUr556DKrriOBHVWlmd8TMS_LE=": "454353000000", - "-C13tNbi3TIwk7MxHXRht--Gpo41mqqzafwch_4yWsI=": "4110858000000", - "-CMnLkiTXdAueE9UuawYfx81hH42CWoAErQ4SwvcA2o=": "468121000000", - "-CajmmZSyVGT6MeZ5J3Mu-Cn7v5xquGpuAtKh5EHHmg=": "1386434000000", - "-Cjf5nznzh5isQyBsTmWUt8hhUiKtd9T5145WF9DqcA=": "1837100000000", - "-DNTu6MVdzsnvj5UVjs_KbRIRwO6BI2N52ywxDTQnKQ=": "411085000000", - "-DSMe6DVA_oyFe-qyP3_L2sjdUm7AdWfOX5ilA1hhig=": "629928000000", - "-DgrQM4ccRxzSDWO7OMCQ5T3LReFOUxUT2QcQ1MkQuo=": "417634000000", - "-DqAfPlMXKnsaF1HUKIlnyK9R_g5k14nrBBey6CSK_c=": "385506000000", - "-ECxhd-9YI6cAO9Qui9hVkwM-u_yejSnoXF-4CwknCs=": "462839000000", - "-EJ4223naAg5SF1o0RRqB33ygRNd-2CZPBgFd1fRZpU=": "453711000000", - "-EOX9EsDeqIpxFRsZbYpubuDp0l4IG-Q0-CSQjdeprk=": "596818000000", - "-EYGheGaBI3ihwwVpuspt7TVA47oYAYEvQTAhWh8PMs=": "3856868000000", - "-EcscOlGPyNoRtXyMPNbSLjf332RIl7SohFR4Fx8br0=": "794258000000", - "-Eot4a-P3RKYYdZwisLhe7iflHhy9H6JwCsizjT0UQE=": "8133362000000", - "-FZ3PRPS2BqUIqbmyAfWh1SRyZRgjcXCoDVPx0C7-8c=": "384510000000", - "-F__yowsCEyWmp02BhUAztFfjZzZszSyRsvQ_XYwLFk=": "1797820000000", - "-FjIgqcldrkp5S2GWjNE7XumyCvEKUvBIfG7vZZW2ts=": "470310000000", - "-FueSz1tUOStKg9scEDc78cQfviOSt4--kJPrCjoEGw=": "384615000000", - "-FvOnyMxLtOln4MIXuTTj6tHTRRHfI8ibcvoEtpCg4I=": "1370199000000", - "-GJfncbUujVP19QDUvg6qPMRkBMgsCO3fB0jP_BhiCA=": "504600000000", - "-GNMn-2WtrtR-y8I2nHJlaKP5w0cZA-eYZmXQ1JWTWs=": "407808000000", - "-HO2UlTWX4o-BevbOVjVqalMLzM5zyvg57qYV0OpY0E=": "378062000000", - "-HOMAY11JRk4ynuEwDSyd2qEWwo7ow2_YnHSGUwfgbY=": "1156521000000", - "-HQfBXE7CzceH4RDi2msI3LZVFeKTHAlb4PZoieKxmw=": "578654000000", - "-Hs_alaDNKILbu900VVWCB668P6mwPb6gCfwwL__ujQ=": "389491000000", - "-IF74wbnopLbsCKbTJXWTLxWKAd95pXDo_XVkmCyP3s=": "1153846000000", - "-ISvyVhKB4YzexhTVVubxioMTDyUEREDbpLburbPN4I=": "422497000000", - "-IpCxwog17mKCwmKbwmeL7SrEvbN5NEYCMFqiXnWkuA=": "656960000000", - "-IrG2LB7XYZRFgrwtYuocP-Y1tLIxvyr4wazSlFiPiE=": "3846139000000", - "-J3MRlfkY1tl69nJtkqvj-r6fWZFH3qfhcjTT2u_qnY=": "416901000000", - "-J7gm_kKqUqZtmLlmaUKcC5dcvCN4J6VD9a0rEfzRDw=": "751740000000", - "-JA0yu-q4zDpk_V4XTkjgwaz4CpDthT3tZBrlVviDts=": "928308000000", - "-JFJICblDvcgM0BOdvt1Clg2rd8s_J_gB89HO85jfEk=": "456934000000", - "-JjpHv5u1XNfwqpbRpc9eSLTiGCsAXh4-aMkgiCaQZY=": "1249999000000", - "-JpVWtQ0hs7VdfRSgt2kabwbWPIf5iOZk7CCWAZdYn4=": "547510000000", - "-K-TDTIY03Hd4dqQNlbuJpFwWFYj82Jx7oLqXq6D9_A=": "378257000000", - "-KcL4jUiU9w8VDRqReTAD28XMUkPoavGWeFXIVFbwTs=": "384615000000", - "-L1AV7tA6KCUImfWf1ycIKsXIC5iuMfxHlEY4_UWG50=": "384435000000", - "-LFPcL65Ax07wslU1YrtDRrWRjNG_Wu2awSFM3hlykY=": "959893000000", - "-LGgZ5yDlG-4Eo_9PPORRqhqJwtCF3K1NTG5wgW0j5s=": "451268000000", - "-MqgWZ2b34_JaRXh5CxZBolR5yfEf_A1SDzHit5XU_c=": "384333000000", - "-MtBIlw_11i8Z2jkOlJcOhFKiQ75gWVujcG9UjuDNb0=": "404792000000", - "-NKYDGQ_-7uV0kx2XRnFSyS9W1ufT5TBpSQJMi3dhzY=": "577513000000", - "-NRuiEmwX_NWeEbE8ar--RYMtBzRCnGNThnjEE2MEZk=": "7707247000000", - "-NdXEFH_lt8BraFwRhJ98AhjSGHXng6UDzU6rsLldQI=": "769230000000", - "-OAt2LO5GE5SjfMwdZccTntKb_FADaf6gY6d1F0w37o=": "451662000000", - "-OFNssNYmlmA1JlJOpAD9HnUbW0PM79kUsnoPKxP5Q8=": "1542774000000", - "-OKgS0uLMnfbCV58GcKV5weCaLoj_VY4kTwkswJNv0Y=": "458917000000", - "-P491zXs8NfXwH20cpNeuBhZevdmJSkwVmPXCMml_MI=": "378040000000", - "-P92NKX7VfINRJkW4-uWnFt2GIucRijfRv-SyT1GzAs=": "423370000000", - "-PYRHrir4cnPUMrOh53tJ72tdzwaASHuyubwaYN64ZM=": "3133656000000", - "-PqOXEBQ5cWfb9Y7wbRK8u4Z43LfMlNQJQcu1p2JvxQ=": "500484000000", - "-QTY-QSDpuLRL79SUWONTS3kKGQyAoMBuAfqceqtwNY=": "1447378000000", - "-QVUcJ3dpF6jnIv6yw1ujd1bq8QkXx_-52-AV4HYoyI=": "461906000000", - "-Qv0wk7R_f2TwD8MxPR5SHko0b0t4sRUFxJk1ag2OLo=": "1538461000000", - "-SMHdyGhZnm2h5wSmZ6e3Gm6QfmZXSlWhVMs-NIsr6I=": "3846153000000", - "-SUhoC58THcRgFkqMHxb6iQ9XMhWWDqyL_iUQPFZd3U=": "416666000000", - "-SVZjwxl-F3wIIArEu_PNCvAISx45afdxIuG4aU66A8=": "1069958000000", - "-T-SQS4JtAvgsuHnINhzt1dLnO2qc1B-OlCbj1kGkOU=": "1538461000000", - "-TAF4lNusdqohxX16p8tMm1_ghFcQV7rlrZ1rH-FT1k=": "5385693000000", - "-TL-awV1QRQbVQiNvTPBGDWZGn7rm8PH-IyuHFWqQqA=": "1156522000000", - "-TTH7YJVuihIrrjpRQFLtJUnLiF85OFxCaz8kdokSgs=": "769230000000", - "-TVmCHoHbA47uNBcPHYBH5PKXRaNw_OEuYIwyXxtSbY=": "386141000000", - "-TYqe_FzQzDOY7wV4fcJyEq_m9sjsojxPf-UL6fzSyM=": "412309000000", - "-Takwzp-jrURutL6WUkltSdgMpHjynZTT8cLA2bSrKM=": "381059000000", - "-U6KatOQW0Z06gBCB9ibYj86S2ERgf-_qOFKdFpo9ew=": "454545000000", - "-UIsyr9Sdd-bpeRqN-WGIXxK4-A5gKKZgE-FR9y3mgk=": "392418000000", - "-Udj-P7FovROyPfpU3LF4e47Skcddubvj_ROeA_byIs=": "378385000000", - "-UeBwObtQ_18wCUiU4agn2B1qJSJ1kIStGjvlb-i7v0=": "503282000000", - "-UqPSh_AZpO0Xr1A23hYDgDP-yapTznmiKbu1setr9Q=": "379457000000", - "-VNHYeD_DDShZwKTgdEin25zL6iKp7iTQ7fGnE362yU=": "423312000000", - "-VYzhkIqzjjIYM9OiiwoVUShWQSYQYb97FfMjzkIau0=": "461296000000", - "-Vk819DZwAfLOnfY-G5t0BtuZ47ksldvmUOTtLSeDEA=": "499842000000", - "-Vub0gjBndzvtyUEHGe8ghngHLkexA2sbBJVo18zhA4=": "19230769000000", - "-Vx8K1NEL1MGWJ6PDmW5nfMk-5N7cii-mE6TYD_Mxow=": "382394000000", - "-WDdsOP769ixukqkcBfaC9Q9XnB1oT0pRQiVfharfuA=": "391797000000", - "-WMD8vYs9bEJAgrxTfvLSs8LpcM8pJQNHzulEgTdgHE=": "420676000000", - "-WPrHo6HSppH0WKi0DFKSE1lLlC9XvEwiXLgkGhywYU=": "434339000000", - "-WYlVxJb1J1bswAi5o87ZzLeqCD1JatLLysM_2uudnk=": "376125000000", - "-WiROA4EjGCyEvjNKFSXUEmecM_t0iNoMlHA8dCW1s4=": "384615000000", - "-XBtok2pjLy-DW0evQKEE-PRID53yWH64hZvOwe3ArQ=": "3114842000000", - "-X_ADEtk3rito8rgJGcmm7X6oOUln3TuhDcShLD9R6c=": "356922000000", - "-XiLEbhL2sBFtX3oEhzuM8FqZx6-XMXWC2FFGJ8UuAA=": "384615000000", - "-Xlz3x-LDH-srD_zRhPiYcTVRT5GP_VocdRDP3bhX1c=": "4651238000000", - "-XmxXh9ggnZ-ZuwJnAo0xv7cV7hnqK2IIuHHZ-hh9X0=": "4134900000000", - "-XthbIXp7_BgFsnyOvSM3ysSJohabUiUAbOXwmdj3IU=": "2006912000000", - "-Y5l7aG9QMu9RYLZJY-GaT_Y70prLsoViUVeUav63AY=": "615127000000", - "-YCwhqhF3BAUD9xHo0VU9VTxraudP0LH71GEyaauWQY=": "376889000000", - "-YE-3PtA1jjWUMcUWca-M9m5kUjvV7V8UaojI5dYiZA=": "363764000000", - "-YNoC_Jb3t7h9-CkvcoKZkKpVZWHakXNkCZCS0HW0xw=": "416666000000", - "-YPi39MlVJo3hCI689EZ_q6MDvdSnaaQh3ye4uofRS0=": "766000000000", - "-YTOQ8XccegJloX043lGm3obgKmTHYV8ItXsfqt899Y=": "2258472000000", - "-YYThSgiue6kDlFkVvxUNxSAQjRs61YZzJfVt_RBA1I=": "1213773000000", - "-ZX0cjedu6gJK1GPQZRNRtYH__8CjvS0OGW-jo5RjIg=": "392088000000", - "-ZYT-8LQFd-KCyiwsCYUpZgQqe50EuMSOg-ZlK9PTUI=": "462146000000", - "-Zlia6vABTQYHYTlJlPa4_M2JYs1wUGea9gikhOaeek=": "846741000000", - "-_TWWRWWQiPiLnol4sp6040zjHd1vmWaZrF6Z5PGbic=": "416666000000", - "-_fOwPJkH1ImH3Io6qCU-diTb6TJCY7WfSP9o1kw9nY=": "385458000000", - "-_iDleiPeDlebgAIbvF57PkoNjTeHRvRYA_24WWozCw=": "1923051000000", - "-a1vg1mkxvjKbC1sZVtVH4BrK5xbOfNnB0C1GBgrYxs=": "532264000000", - "-aHoQsV2CAbORGGbRgUyTsfYUfs3PHteyvO58vFESqk=": "383030000000", - "-ajWKWBHtigm-GxIgSmX6eFHaVYayf-xaKUgFyzPgys=": "382410000000", - "-aqy3uhWt2h5AtLOpfMMjeqU2FebrqOjW0GcTY0RUVM=": "917574000000", - "-b9psqj05A3j2GGZtu5TJKyIu6eNUklkg8ZEkiXr_rc=": "10967430000000", - "-bAYVxIXqh8OBKDOw-7ov-GQxEexevxXv6do8m0OUxg=": "3127867000000", - "-bT-EO_KZxV9nZO3CrGCC6aaU2EuqSqRlBHpjKMVFbE=": "389258000000", - "-bf0EVD3NHR1IWVxvvcgl9OIIjHLCeB5yVRK6rMRgI0=": "385508000000", - "-bhbolbb2hz3e7UkOohWwMuM8pUkO4vD3qWjMFw4Css=": "384586000000", - "-bp0nmh4-UO9eUasCJtCButfbNlM_Be_qMYWZv3vHfE=": "385506000000", - "-buxtZS1zCBKu-dOq6JA76qen_28yxPTheiADHMGYtw=": "1623129000000", - "-bzuGB_0CQ81rMboYA_6Kl1Y3G2tU9aYkKYreioMof4=": "769230000000", - "-cKaRmR5IVA8isaauCO3rX3AzX7u4aIGYv5E3Xp8QHk=": "384615000000", - "-cSSaMNtLgxJ56Uu43zeG2pT5Iud99IAuVIrdu_mvzU=": "1156518000000", - "-cUm-XTN5HSlTBFHXvq1LWYaUv2RPzbXpv12R9jA46Q=": "382252000000", - "-dYU1Yf74gnbIh9YTqCsWdQIYIXJQF15xJXdkfF9O1o=": "10967430000000", - "-dmT4TFIQdHVkZrd3kztUiy5Tp1gxeelhzbpesjigZk=": "675873000000", - "-eWycxIB-dYugb-nKX6sLEHbjZexmoCB3ZSNAzA_GqQ=": "4233446000000", - "-exhMA6kU_GuQUYbjoI9YBY6QpMgBKNSWrYEpcYobXI=": "384615000000", - "-eyk5kfGU1BU3q0gl6naR1zKqmzBdN5HzEboY7ByVWo=": "1275769000000", - "-fNiXrTHuhWSlLBMUgmm1VgwCP0opU6-ducQ7e-7UX0=": "389421000000", - "-fX8g_B-MsfUzdlofHWMwkC0xMWgp1Tm_6r-06ZeCpQ=": "383098000000", - "-fdyLtiENRdHJHMr1UJagMmy82668j3nimvrq0Q6gfA=": "908890000000", - "-g-EoJ37hZ1MRUuwQxMpfFJWZuhgmzQm5eTsZgHmtZg=": "380654000000", - "-gAY5vwff08wqycphsz9AxZaSKTFJZfUzllEqtqbjuo=": "4615753000000", - "-gCJZphXJtIDBTkpHA_avig-AxSEcA-TsmelPHuf0Uk=": "385507000000", - "-gPGNVsPJq06kB5dWpke7VAG9dU5KbBz6dvGvkLlo9k=": "423531000000", - "-gT0hsH4uEpJRnEVoDbWwKmB4T6PZechsyapoGmbeMo=": "385510000000", - "-gVIDHo4Tmzyi0pJAQgjUvo3zD8U0K3ifpaVL1O8a9w=": "384615000000", - "-ghro6k2u5vICz_LTkenlOHUlcbxp4R-1eqZ4DQ8IHA=": "458561000000", - "-gu8Y9k89cKNRxmD4ysL2G6w2hm9UGbhca35LRW3_CE=": "2827874000000", - "-h5cBcZ8CA51pEekCFfhPnJYhOGoyZlVZV9C9BJSsOU=": "396483000000", - "-h5ns13Fke-i0IIsiZT7Q1E6r-KWqPniKJPmSFJNv2k=": "1927537000000", - "-hRDY9ZOgTcmgz2PFPXyPS69W97tA31RXO1q5uofOTA=": "2343896000000", - "-i5slmnSzdsA5ObjT09Nngt5OgUuL22boFCPKZLoa0k=": "3972506000000", - "-iEm0mBKzLF4q4VHDLFJ207069YB9RsYHdL6jnWaeUk=": "773076000000", - "-iIvXf00Upf6wZw2sSc8znPRzyRziA1XgB1GxXrLAkE=": "407469000000", - "-imjSrMrUjsFS7z8qNnNu9WYJfCByBPaCL5IioWCc1M=": "416666000000", - "-j-yyCl6C89et-N6buPug8AOeXehpNYrgSnFq-J7LhU=": "769230000000", - "-jNodyNBNHYEKWJtgmi1RFG9IfjBoDMZHaYx9UGnCwc=": "418855000000", - "-jYwbQ1X4FlnjlvTIBbRQmi2rjiomzxNSmUn2P0EbvM=": "524269000000", - "-k2iAO_P-HfKOJKKGggjpSbYJ8GAE-VD3fcL5iMvfoI=": "464030000000", - "-kAk-9-qP6ZGel0NVhPKltQpZDzE6cZW8wxvqsSPtd8=": "2073677000000", - "-kNUj3Jz1aQvy5HhgTTh2S-0LWGd5_WiHJ_B6rzZOKU=": "394212000000", - "-kf0O_ct2AnKRAydQLQyMXLK8CE1gN1_ObUuGFP5g_g=": "418059000000", - "-l6wDluzWSqOTP9Y3Utv6Hu8cm24VUpxPW0dQk6Mnu8=": "466263000000", - "-lGfrO3-fTSrWafnMoAIZ_rh1T-3Lwr35G7KTEprdZU=": "1241455000000", - "-lkURGj0aso3uHEhT5m-0UbY89vk0n2jPWY6NR1hEV0=": "1709389000000", - "-luq8EnOP0tfjyq8jb5_eYk0x1rgg2j-Crnuul_bTjQ=": "464104000000", - "-mNMSMuJNRhMprfY5_LZ1yq10E5P3ZPt_KExLCQanA0=": "1891939000000", - "-mNY55KrCnadNwQxF1WBSEJwrkbDOGyq1BH0m9OeEjE=": "1669230000000", - "-mWsfRjEHFjLpKNg5APtJaAk9C4qK_AFewpz6KKBVqA=": "923141000000", - "-mlRcS1vLufrJrMgM0ZaZ2GVndoGcE3Tv4nfdBZbprE=": "461940000000", - "-mrF1fwl_2AbrYuhLbIJTcrNVWDtaZ_46IXyIaGI6Ik=": "452328000000", - "-mr_-RpfD5jb6Wu3OwiTMuQ6F0pRqzmTsDQim5PId00=": "377348000000", - "-mrwD1TWy2mmUEwlegsE1Z5t-UnkcmmlMtQ57zz6qH0=": "455736000000", - "-mzjQl6me7EpTlO3xsvNLzY5IJA0y1LI09a5LWXu2yk=": "7646955000000", - "-nDECej_BXdrLKi8HKRHb-fSLPqv4Sh3-pQZSYSBEH0=": "399999000000", - "-nlREoCcy0qiqDzBl6gPDhdrl-6higJv_CzQj_TmvKc=": "2146763000000", - "-osqazsfH5SOEJhqRIt6vFiRJuJ256iXdZrVlasjnuo=": "377902000000", - "-pgHK3S9NqYgu3aXNGX0yY8E_KECyz1iSXXTj4xrKBY=": "417632000000", - "-pwPdVoyGOMtBOgyvFN2C_Atc8iquRcVfcTUJtCoeiQ=": "382993000000", - "-q2jz_oh4x_fArzilDHlsIcFMavi3h4yOf3Co_xcHlc=": "402668000000", - "-qGZRf7L9lxZ2NhWN5URxX4olzB39NN6-MS0mXpi6SE=": "411085000000", - "-qIoHCpXb4tWJ7by57hIeEbu0UbLCovUYdJe9M6-VjM=": "851273000000", - "-qjtBPQMAw1UvwTO-CHhR2GgzYZGSTmdyVUmzqns_AI=": "808240000000", - "-qynXC1d2VZRjlsOT5TJdQXFxz4TXGwJtbpaZkGt7jw=": "1935699000000", - "-rMUDFwXBwMIytF_eDBIAm4IFieSUmmT8TE5l8SCUL0=": "3169709000000", - "-rTTCPNg7zWEKXyjurO5MdFvEKN4bUGrAASAik3alO8=": "637183000000", - "-rm4sBs0BR44H_5r6th3WtzxXwlz_iCp2uLo7jQfds0=": "897327000000", - "-rvW-9QOC9i90bQT_VIikJaaUt-gfPIoHjJ7kMrmtb4=": "1154332000000", - "-s0TbB6VfvIAf2gvFwwIcE3RYjPJSmtsEJVitlPCzXA=": "417632000000", - "-sWMRArmjLSMcwVdwfk0ifntQeiDfDDkPLQkFHUG2f8=": "384615000000", - "-uBMJuWyBfoY0kz_i63zjYpv8tbYyfUCCCM_OOpazTs=": "386645000000", - "-uifsFDah5UWG1WQ6rb1996xoL3tQzT-h96EJbmhH4M=": "844393000000", - "-uinLc3IGRhMIgOhiICZKcAUxtQjyG92YnIDIso_kYg=": "384615000000", - "-uqFrFRQG9uZ2ZYNkB7UeIaGVLyMOpMBoHCAuD5gBxs=": "833333000000", - "-v3pIdKntmG3XMBRx48V2GYFirLos_Nz2kctEwnGNUQ=": "464950000000", - "-vLJzO27k1REMZsYHhHCyWQWfcNYKxDXI_kWCAqzUZo=": "1538461000000", - "-vmdT5TV_YWYtzXxZQZvGe8TCS1x5nyr5CKI-6uXrok=": "27372915000000", - "-voQUQWKeMlhHLiZTJEm_pHXtUjE4m56ACKRmhVxOkQ=": "407808000000", - "-wgxxoeWKhwni7e1LLQUwKG_3c4oOrs1SYXUxaRwc4M=": "1234817000000", - "-xg21V8_MXykBme2Ml8yxmVcx7Ye9ynmIIDnTO51aww=": "2084345000000", - "-xpGmReYEnTsPrZXZ3A8fkwdDtUqzPr6_Y-88Quzlyo=": "836132000000", - "-y1-0o-v3rNkfyi3bK3ISaXZgEIXRoQZI7XwAsoDO_Q=": "11614219000000", - "-yGdgKwUrpZpNEDEhkLPGjwnGQIzB7WuLg7YJUuAoBY=": "1219880000000", - "-yIf8LECe7RQLdNMdVBkcp7wTeepJeweu7lNDvYf-O0=": "1177005000000", - "-yOYoDbHNxV7RuZy0uw9-9hIalipRbIomtd98kwxFXE=": "769230000000", - "-yQPBo15t0mEhSDqGUQMPPRPj9caYKNZb0tCsCT9OPI=": "384615000000", - "-yU3D2luIiHM21do-YOQAbfQjfwhGpoHODUALsZEjE0=": "500025000000", - "-ywc8L-hmoUycXuupjQNx5OjUTXmfYgLGIYhAXFIn8o=": "1145412000000", - "-z5AQh3jrQG7xw98iPwulO_Fl7lSSTWhO5g4euvqPdY=": "409514000000", - "-zMl7MZtEQPsvxLX6Wa0_aB0c_WVq3MvwZHsO5xt5SA=": "455094000000", - "0-12_W55GENO3jvuyaOOqwj3hVG7hQQQBekfR4akvEI=": "498437000000", - "0-7ePxzgBD5uVit84g3WiRk7QTBco7RF8CtbAxt-yao=": "460673000000", - "0-BTM9-eNCrgovKlNrGojml106pTrY6FLGbosy6-5AQ=": "473265000000", - "0-MxsDKfH2-0PXxFFg3b_Y0PvKRlYXS0Y1Z287XrsK8=": "2083321000000", - "0-hePHz29F2BGUSYRj_XO8ejXS0W2owykacgWy-8t58=": "417633000000", - "0-wdwrBmBwWiBqQQg-XRFN_AyYDUsepB3BVdDCHJ5Uo=": "33574379000000", - "007eg58p79DrMoxlJe23K7fIvUc2895NgZcFM5CAqyk=": "894213000000", - "009WYw04-e0RZRPv4ieq6ZcBlp34zRUkNdJmAsQS_yo=": "811044000000", - "00NqpRdugwLlatNTn84kbBgb1SFRw1NEC7hsgiKM8g8=": "470437000000", - "00OlXW7ruuBu8_vaRWpkP7g6bAbUnn5M5OvaTXA-omE=": "1233257000000", - "00YHzBlHQjrHoZYOJSXJ-nv-ue24PsZYYWpRkhPYS2k=": "384615000000", - "00eeUMbSdmOpJlHEtJSatAXFjh23KlXydw1A3fjxm5w=": "385507000000", - "017Y6InCSUrXU01NbukGXnKNb_ZngegBqIaN--SwLgU=": "6474753000000", - "01VVNJqdkdD_eyxVZUvPTSN5hXoiTLbeJPDOuTbNzDo=": "1807692000000", - "02BU985sqhNGkTpNRLA9LHRuO3WoMzPGVGLtuWKq5wU=": "747044000000", - "02mzEGTld08KzkM12syeb9sLNuVdtBrpvCzCFH5R7n8=": "1153710000000", - "03vZH5vDNfoci0Wa8D34PgwImtQkt7gKUOpq4-urRto=": "769230000000", - "04US0D8w2MeuJLtsx9eeQ6jGeHwosV63mycV8Bgd9sQ=": "470322000000", - "05G2toPU5pcdzhkt8CmWPoGWWLFPxQ6vAIg9YcIELcA=": "405357000000", - "066USWeuOsfj-pa2EkbgasE89w_x6rAu2G5LUmam358=": "4229856000000", - "06Bv_JAtudpTBiTanMCEe95DyCYKuwjg8hmTamdOmsU=": "412862000000", - "06DjhIkCDGgg0tq1PPxysh9M6hGv_ohQxcK4aXqB7Kk=": "384296000000", - "06NWGmTKOyyCRCNAG250HMVwOhoeC_3FG-AYhZ3bwkU=": "417534000000", - "06RxpMoyZCqIHd-0qKaMF9mmhS0VFvMXr6fAT0C6aeU=": "1413610000000", - "06haH4PxOUSoTafAEMsgYeAzwuqn6kfJVlhWwUNJV7c=": "577371000000", - "06sbPc13ROapFn2Cpm2v_fJrbKUJqyIsFvs9YNmFOL8=": "421613000000", - "07-XXtxfuKoFYZH--okM2n0iMMHVs9QNVVeUIJzoIsk=": "901165000000", - "07Qyi5QBZUOmUjPSZSVJcERDA8lu8ggGbuP2XE0jb_4=": "383087000000", - "07Sd0YXzHi7CLNoGcnslBPepYlxGuTU4xOV2atv9u-Q=": "1270391000000", - "07gU6WykwcgpQ5zqbat0gLHGPShBvVFDNAwEZKGeDC4=": "13636363000000", - "08CvvTa4jLAZ492Xx1Lnp04wmh_1xBIzeGCkzJA0xh8=": "761923000000", - "08m_aS1mxqD_0tff9ZQXXbhwVJvzRmdyS9d_KOwXsoM=": "1910522000000", - "0925LEMJYvAoMa8125lYqZc-05rcspbXUyoW3gOmpbU=": "404257000000", - "09EBxzSPPP7pAju4mPb9utejN0w6OKTKSywML3xBW_M=": "384140000000", - "09HzZXqRgyUkumDPynF5l2JDhnze8-_xikEDNlSvRFs=": "4545454000000", - "09NjAAs1J6qaiR2lTaGpfqedwaB99McqdxyNbZQ5Q0g=": "384905000000", - "09_Wrw20rdkplEOjeuBPzK5eI-dgnEZkXrkzk0HwVY4=": "384594000000", - "09gm7IWcheLxKBxBQma6L7zYyf8Cg1odGj_2a4upXAM=": "1249999000000", - "0AHvALGZa89hciPOSekjBYlBYpReaLvQQTWQmDLmojs=": "416666000000", - "0APBEp2VDwYDPEElvf0rV7RgXz8pquVCnCRb1oF4pKU=": "467177000000", - "0AYElmtgjNCreOwUSHiKaPTVk90lkkau-fjqQiVwM38=": "3656053000000", - "0AaWw_J0hndvrHnoWJNpWRohrJjtvcQgkjoHwSgfNIc=": "456296000000", - "0AsxuMhSJWrFvDMLnTJyOqaEA3Ap-8xHrkaoGknzUw4=": "769230000000", - "0AwufJPFqVnl1KJwKPwRAJztpY3iB_O0CdC-i79JQYc=": "487145000000", - "0B-U847DO619nKAOrFjSyfC24u3SzPqyVQODFQIoBUA=": "1621217000000", - "0BNA2Cd22JXU4I_W33Sys-xK-GkxAzpkgBQGnZ6cYgQ=": "458501000000", - "0BYYWztlE7NgqYKZDEB9GoC5s44AKsu7QuifulxzwKA=": "381770000000", - "0BanZ9WGB9LUVtCDf4n2wveRHDv1s1yX0syMUdhzK8w=": "1921754000000", - "0Bde_I6cLPnRYkUiCZ6YrQTsSVVJvTIty-2fjRhipus=": "694535000000", - "0C9fvkZOu8bedPGi1vKrssngfdn-Lun0Zvr93xqFBWg=": "462839000000", - "0CBiYsBDHLCFfyQK-rlOKeTnm2iZruFGbWlmrcKffEk=": "459880000000", - "0CTMyAhe_tmsjOTFTM3kTzgIMPA-NCTzOYHBzBF8Xqo=": "4179451000000", - "0CWdFOYhvbUlKAKiZvSvGbvwZffY0LaUfi595RIqBhs=": "378486000000", - "0DAUiGsXdKipliyE-IvTiDbXgm3VNw5Gv7_cBT1cBbY=": "469121000000", - "0DliC5RWCLriXuczIarJDroe4P-ElcCxAJo0bkCBtpE=": "385507000000", - "0DqQiFOqWSWK5ezRRUlQa4qg6j9yys-G_YDjrzi-1HQ=": "1259935000000", - "0EO_YwqgU535S5iA9i7eESjrIyN6Q67PnTAo5Cy1pco=": "386511000000", - "0EjWdftD0ogRlfCMhe_TDUNkPNinkh_okOiVDOtPTYs=": "1154829000000", - "0EmSaEp5OP1LlXjKRjViFmk1X-5bN7zr3nVhR49FDvg=": "411085000000", - "0EnpZcbnL5IxOs-XPqAui9_yrjgBWRsQj-Xi6gxXeoY=": "1145409000000", - "0F8V7mzs7XjERKmMHy1JVLzScWA0eOpRI7cKCxVU7Zs=": "382394000000", - "0FAA_lXNzGYxCogwxgAyEiB7TTKAhH6LZqoR9WdC5NY=": "419159000000", - "0FDbLTI1dH429axu0CYoM7TQg37C0gTj0MBol6qz0V8=": "386029000000", - "0Fruyrcb3wadSLziEC9G6W8PgdP3PfixzWFv2z8Tmgs=": "3643417000000", - "0GUopHpt6YzKFWKd0UvAF1J2J80m0LgBBDtjF3ASXyQ=": "2579427000000", - "0GYg7qMXXeEAoyhnekOCKcCQ7oc7QvIzs7T81PievBo=": "714413000000", - "0H3GXeR9x79TIrQOqHLWPhQCQuTbbeoqMSuHiVYYXxQ=": "384422000000", - "0H3ue0eZ10D9OjwdzGg2xGkTPBQ0uyOs57tmPmjE_D4=": "390141000000", - "0HAhKCafvtdjUr3tvVMo0xrSCCeW04y4tuB3UaZSSbs=": "3749999000000", - "0HUJDbGT0MD82sUFo8dTvEFzpseeBzG1x7z1COJIl0E=": "4999999000000", - "0HWEkOFVufWQ42e8mHLdbiDOhqp9OFl36YDnwLZM-6M=": "631538000000", - "0H_p4tIT5SZW1W6LIiy3Ii9H2eXWL11F_PyyApMWKk0=": "417451000000", - "0HbX0cqnXZPpgUqLjMa9bNRzoYSr4h-3P83gHHsC1oY=": "465482000000", - "0HdQ-n1CtkaZGu4e9Mk6-LX5GOBJjba4ZXFZWFAI1Uw=": "763848000000", - "0Higj7bI7MHm6oRjobKOT7noUJOrHa_cq7pP2xBwVWc=": "462146000000", - "0Hq8XvslWtyohPNPIH7QVJc1UTWleJXSUEMxn3mwtVM=": "834069000000", - "0I-CdW6g6DsfkTzLWtcNQHd8wamhZF-UrwG6eFcZ3PY=": "421824000000", - "0I-aMkwIre5bN0ksV1sJXY4Mu7u7jn4RFuZDfBN82yA=": "382394000000", - "0I1mkl-w004G2N8uEa_CWQnH-TosX7cYoUgyM5A7784=": "3716937000000", - "0JBTB5MZahRad3Bj-6oMpzKx2qeQel72RmWe0zVrnBA=": "487972000000", - "0JBq55yVgEgXbP0byt53CLmzcvpI1Z4LIzlQ_N4vCaY=": "1999999000000", - "0JQ76gKHdh6tFGGLJ9awEOpfBpVf_5zX_rCFAb3_uhI=": "378319000000", - "0JpAqR3oGNaoyajWxSanEYZhSr5BJAtkHQBHiMRP4j4=": "382479000000", - "0KFTbVhx3AVHu9mNJ11BuCXdrH3khJryN0vWPc94rLU=": "2871493000000", - "0KTP1QNqnZzzYbU8CPQB7qycynHIDXhaq7r0GVf8ka8=": "390808000000", - "0KVd4Vb_0nMUn2_ya1fQoX38_XaPV2G_Uc_llz-P74g=": "386496000000", - "0KcKP7flbmra5lFmqy538CERc49LEflFvSwvHle0v-s=": "836695000000", - "0LHwtNio_-zL0WJxjsdD0xJnBNAxMzTZZ4Pu1JKR7cw=": "778513000000", - "0LOf_HTaYCZWL_CyBNs32xA-Vi0dgJSHGv70HeWvZB8=": "383695000000", - "0LaZH489KCS-c6szIZEmIcpbUB_-yhIaLPXNCaEdIik=": "768421000000", - "0Lgf_56wtmNv1oWfAc0aZIkrkEVTR7hII6GfiW5FU4U=": "1795352000000", - "0LvgXoUdIXaFOIcCV7eqkrCEfg7EZS8NooHtOnusW6Q=": "413725000000", - "0LxzdwAQAuTYI9hg-k-UNdP5_SSXRnA4kNSfi92MdvU=": "406295000000", - "0MAmGwJVXxcnmiTLPmmN_dPSHj0kvacq2NlKodWz74A=": "1095456000000", - "0MIXaCfXoEgj143A3k5hz2BWFWQLDPRniD2k2WKVS1w=": "388941000000", - "0M_vySTXbO8LqMH0hI3UsXDuSmUcq0XgeJj_HX4s7sg=": "1124351000000", - "0Mn3KUvmPIAO_qHl6E07gPTaumyNaVec4weQJ0cvj1s=": "473874000000", - "0N5vdu3iqxPz-Pk2YwZ_SfHQJpZqYclnIqmTdr2W0CA=": "557005000000", - "0NggPFZsuUBXNWbyEdJwwn3mkakWwZikZ79vW7lu25w=": "385507000000", - "0Nmh7iallOajEeWb8Ruv6Qmpj7qe0Whq5wj-LwGt1mQ=": "642211000000", - "0OR-6ArnwAPnwYPR__Y69TvZ5EVU4yyC4LA_5ECacG0=": "404418000000", - "0OR481eQv6VkzuHd4xKowFU1OA58exitA8INe38OB5k=": "1927598000000", - "0PC_WYhvklWjz4G2J4_d_bpJfzEqd2BlR5g4KbEnVUc=": "68681632000000", - "0PL_m7qZOoE7s9m6URLQc61DB8m7NzjY-afUr7Vwfqc=": "1218233000000", - "0PUvPPVSXjLC4Pf_x_E1TSV6rqkkXRY-tQcp1RWpUs0=": "2278000000000", - "0Pd0vJF_G32VJm6GehSlE5S57KYmYB1aiYMZDAXjtSg=": "1636022000000", - "0PlXTJEj5YNAWMb2T8MemFxUqJm9Uh99KxNJVmm9Tl0=": "576923000000", - "0PuWLu73F0d6EvJbTXs0cyjjqtLkJX8H5XNlXBdjlzU=": "461600000000", - "0Pxg7awkFscI1ipeZpATFsyjuReGtwz8UEyWpDpsCM0=": "988758000000", - "0Q1ZGpKDndRqJQfw1TMfWpFOpesYQYtwqxcrE3M-iPQ=": "416901000000", - "0QM-Q5Y5edJEGG2fiMAtBW8OsXL82ZEvloyBQZkJ9zc=": "2152907000000", - "0QRIhc7NUEA__VHbK-reFBDSfNJ6WjnPBXJK4LaBIEs=": "458341000000", - "0RFe-N0WX_DGHPtESWJ2clsRnW8oe1YdDrL5MoCVlAM=": "387400000000", - "0RrPSCkuTC1ZLlqPShcFoHYiJtULEkwZjUJvbwLM7OY=": "388559000000", - "0S8-LTKMIyzA6z-MqfelDTwxisdiBmWuNIT67os04Uo=": "384786000000", - "0SBNPphNq6DTrEIkfWNHo9UoZe_hZ79C_rPj7li0qWk=": "16603876000000", - "0SnPc0OILnmSrjgB6nkVjp6PUdhtdaB9Pam3Z7XbchQ=": "628365000000", - "0SoJM6NTjKTuY7p7cdVcqynxYCgiEojJIZWWPUPqgtM=": "769230000000", - "0StINytL0vTc64ti5nbd4CqTr72XOluG3NGweyBbYiM=": "2793076000000", - "0TQMAGow1KWTrvc-0-VnPKh5PybaYyMcwPh6oGikaDM=": "382114000000", - "0UAA_jSMIZN1YwXmhzPHP5_sMoWXIhdPWdwS9e1CdDA=": "1590450000000", - "0UOfAzusd8LxxJtnbQ8wqzgJhIvZXIomTYRUMqinQBg=": "1156515000000", - "0UlMqnM3z2pOnEseVtXxwrDdJYoHWhqqqQhhOnTKSgg=": "1020398000000", - "0UoQg8xS1tEBqZtvsafo4ZMK2eJEr08pknZ3ICBKSLU=": "1236380000000", - "0UsnWJDHZ8E_UCAEG_aH-2W76ofoWBAJTCEUfsMwXoA=": "1876373000000", - "0VINvweixYmx6nLWZ8bVSeRsMXiZeIiLQ2fc4UJOCXA=": "384615000000", - "0VIi8wtnlZgIe9YqxE8ax91nYG4NhyZsu95szX_9Jl0=": "6027988000000", - "0VKI1RAqUqrM1_cJmr75H7GWlmEaBBmgYEpEFBhS7A4=": "454318000000", - "0VSRGs-DlJWuKe6Z3ClsFYrXa_vxMGqMtRdyGL4cX_k=": "578111000000", - "0W1_87GKve4g8tblt4Cyst8k3YRqkP8lXRm5kzT9ZKQ=": "411085000000", - "0WAdBplqF9lUvUL2rCnzDH1eadWRLYTs4w3FmYoRxJ4=": "769230000000", - "0WBsGSD8wT1YY6mr9x2iLo_en1S0GoBSNqLTZ6pBqrU=": "7413340000000", - "0WFEHzX3d3B7W32thuDv3QpADQLHOUBJwFxWas-6Cx0=": "379770000000", - "0WKfQ1lPOtnxHcrCB83_3AP31cB0GMhfiAdqtK2Aelc=": "1370078000000", - "0WLl54c4lmO4Nv9HGcsMReTuGgu_qEFt2USLT0tntSs=": "1153846000000", - "0XORaxVkle4SF6lMatCcl5TssFijAqhcGxA5Zzuvdrk=": "833333000000", - "0YiCioCz99N5Q9adqTlSjoaG1E94hBgw3G2w20OUOE8=": "384615000000", - "0Z6mxXb45QYI4gHAwEaAd9NB5F1G8F7cX3Kn2ai-_qs=": "458632000000", - "0ZBysUo8D-ZZspGwOck5Osa9bZrref3rx94_8GjZmKY=": "411085000000", - "0_M-xZso32Or_dVwa68IB8sMNf3Zg4P2dGAr_Kirw38=": "769209000000", - "0_UPEXVmDoaV1yS2PZca9mxzsUOxIXS3yLfxypgUGAc=": "384615000000", - "0_lKQsi2TZUi4aqNryKEx77ufXfAKJ0K3g615WNw2SM=": "385445000000", - "0_o5SxHqthY6oB-eLjJ_cvdplLCbP50dw30QODVTCcQ=": "769230000000", - "0a6BTaOFaWLHlZXXAGTbeZaDpmG4_gkOawSnGJeAfvs=": "384348000000", - "0aB-CbxvfPKHNOrB5hRV86_t7lDMKWw-5qURG5wGf1Y=": "385505000000", - "0aI9DPgs_Rx6AUL1aoxPxMZcbf671AlenKD_H94vjqM=": "640326000000", - "0b7jaIPKPhM9P2wib5UCrjvjstqUJ0X9a3bb610hjw4=": "385505000000", - "0bA8SIX-NwyZdk3TOqjEEE4zMMZjjoErh5b8H9ggIIw=": "1849333000000", - "0bgpjlpPQtQdxJ8iT4cdp96zCA8rtOzjcQ0wphpe3a4=": "384615000000", - "0bvL8BhNHTczPwWy8a7SrUGYkV2ETJ5OTRI49Q35uMM=": "645652000000", - "0c3o6huH4gnXm23X74e3EFAF8ger9O842Bz1LzS1cQU=": "470031000000", - "0c6rk27QrojR0YSmSbVJNsyLoeg2E4YppcykozTZpW0=": "421993000000", - "0c81zbM_Own5BMK8ahXZNrjCmgXTF8k_tBDwEfOsx8w=": "4595379000000", - "0cAZzmtB2CUjlsMULb30YcBrocvK7VhQjUk--MyY2_Q=": "8333333000000", - "0cL2j_yGsDubwZUq4qZsW6Fvr0bQm91B7YjLYsOujdI=": "470557000000", - "0cr307qvQE23b3mAWw3qOtJRouMgAdPnCHtB2xY_FRA=": "652751000000", - "0cudu8jn8GbKhBg0Zxak7-PJSbQS92kWYk7zmqcMNj8=": "577713000000", - "0d_asT_KaAXb7xHia9YqnBfmZ2TIUJFZIKIVtyxhh7s=": "1249999000000", - "0eDURz5R-t_eHKZChVH7hoBRakrGPJwBKLOQezaSZSs=": "455600000000", - "0eLQJ5-0VzG9OGU1W4KsWFWtTWcXPpFs0XLhjMi8dok=": "1315762000000", - "0f5qrJkrW3aCLCHgI9zDl4-GoHFKNQbTi8Ey6XfgRE8=": "384615000000", - "0fDoD_3WUJzdTF2WQFRVIGnxq3PseVaE88CBM6MLl-0=": "462146000000", - "0fRP9GhzfCHD5ca5OslTsoG__qqTOj2tF2_f8zM6sgQ=": "3081242000000", - "0fwyiOqkGiOmahBfmxU8Ol9m-fyYY2U7D8kwj7Kngpk=": "2112809000000", - "0g1pRSNEI46J-jmV1INRQgtzXDjWzL3YE2xatfMzFxk=": "914046000000", - "0gAWBv8pC32xRQsSeCKt6Mr_YhwNbiGkwR9yt7fZfJA=": "2196466000000", - "0gJKlycxzR2Yu1clCVNIrCguoozSUw7ra2c7bPHb8XY=": "2066574000000", - "0gNUk-i5MjBc11WytXzYTto7iCmiCxC5LtMVVpAlPGQ=": "384615000000", - "0gRT0p7AFgYe27ccJil8bF32JTsuiJrAg6B9hL75RNw=": "770237000000", - "0hBnnd1CtdtGXnY_mzWIBkkdFGfcXiWPGitUZyeA8Yw=": "521367000000", - "0hJA7cm-0-GcN8P4Jnqsko30HlmHnY5dGCUatDP-upM=": "4088167000000", - "0hMoZSTpaQiFuvB3lxZX217WtrjkW1ZUzMZt11-AXTU=": "2276242000000", - "0hUFqsOMyNdpj4amOMHFipILudZV1NnjU2G1E3UailM=": "1892805000000", - "0hkiJFVyCTF02_neyMpmbjPlRY-TrKkSY_w02VCyNrE=": "462839000000", - "0hvE3yy6htxDZqtOvtP8O66D2mE-pXNbRLFaSmrB9lE=": "444868000000", - "0iRum94vhz-PgylO0u9uY_KbPx_iiX_N3DXKQjB-9P0=": "464042000000", - "0iUotZq614FRRI-6y5eV2maLBY1CQLpJ9jhOzqrbQjA=": "833333000000", - "0iu0dm-jlNDehIongh4GxSqpLvhKvW9M06wtM2Xd6Zk=": "462146000000", - "0jfTvJ0TUSeeRXzg3YlGtEyIl8s19nQOelpLV9aYzCw=": "1818164000000", - "0k34eEfGFM6SXz_8qA7IP6WZNHNao48m-GVsmaePDFs=": "769776000000", - "0kGlMelWQvwP-JFWKWscUyD20JKF1vQDsA-nb0L58yk=": "544708000000", - "0kg8PY-Fa4_4HoTEjQErtxni_4FcfXk1XDl1lBgGdh0=": "3850930000000", - "0kufDsJZoqEQTFfrPngbTiHnU-DY48-FYbXLmGtemjo=": "3269230000000", - "0mK58JAh3wr_MaFT9sFffD9KP0ANsgipuX9QoE90_Bs=": "7735398000000", - "0mXO7JQNOjGx7XCJyzauY7gsGdCnX6POwetuCg9m-pg=": "528258000000", - "0ml_9xRUERGsPZK9bqSrjZCPPxkvPiIzeQ-2qVubhXs=": "3021153000000", - "0myZsW8Wqmd-F_p6S5PeskFye6mRDtcXBH_zGOjMITY=": "3176464000000", - "0nJiv60iDOnUclRNvcaqx6pry69aXmVWr2zNAyFEuVU=": "423710000000", - "0oVIhQ2v-FtomutKuoLk0WHXI0m_oRxMFE9_u1lvU-I=": "3850523000000", - "0ojzceHCKFxsT7wVpqxnCZsx4ZNpIRDSu-qEhV7haAY=": "405846000000", - "0pWewcOILN6Os0P2v51UxmMkns5DlrvPf_1Jhw63R9g=": "38550673000000", - "0q54N-gIm-RA135pQ690vB_eV7w-IUH4yeOgsCn-qH4=": "385219000000", - "0q7KRdsPaNd5k76ArnDCLuh8BC7nXzhX9a4ovwOpIGw=": "769230000000", - "0qAQqUqoRYCDsM8XHlcoKhcTgYR33ZtDEHnryJrHu44=": "1338809000000", - "0qP5LYQyyWCGdTKrxD1LuYO1rhiRNd-8Ku4gpNo9clA=": "411085000000", - "0qjDZijSZ9SatqkSOJQoWqaDMGj8j0HVo6B987L3ejc=": "395728000000", - "0r2w9FDssoutoYxkO8TFBRyoXSOBQA4MdUC8xTB_oWI=": "385061000000", - "0rujLGccCG-v2Z3WOUNg0gmNtEa3LEyOsqq7fgZp3WI=": "458399000000", - "0s6EwNy_nI5lN3NUoR2fsd2CM3O1TNISUhO6-AvnaKo=": "1145301000000", - "0sDwYOyiMSJd5_ww8AgzPDzdEPrp4ed5Q25bWSXzK-s=": "473148000000", - "0sFflxVsZmlc38XABoev2gsm9upzATPeawjfDByT2qY=": "1240088000000", - "0t-7Xl7Pmh9y9BkXJyEkD7MajcVSijrg_3pdxznHMtw=": "1666666000000", - "0tKWl0yjiD5c4G4mVkYhxDOntXCix8oCLaorZPZLDoE=": "1786027000000", - "0tUSAcRzjRINgUISjVX6cqSokYu_dMjyLACcSM0zisM=": "1889005000000", - "0tdVof4Cm7FF7B-b_THCTIB920tXajRaXWTg_LjgNzI=": "452405000000", - "0u7joemr-g0xGr98YAKQU4tH9DveseWOfQaAUVeRZWE=": "970578000000", - "0uBiDSwfVWoctoRXhwbCyn4KWdE_8AGfWGs2OwVnbTM=": "383517000000", - "0uXEW45PZqlH0s2Jxb3M1KaZ2yUeAOLq4Dia29JytXk=": "4545454000000", - "0uatR8FrvsnMs4Eiq2w2iM13FWFDrayUNFvXv9tGaWQ=": "2353655000000", - "0utn4MzdzEq0ThycQHb9UV5Eosp-BT427mWf0rg4B8k=": "416689000000", - "0vTYId8BqHNlgpbCHqKMhBmTjNXxQSNUBVVbHZasmxU=": "500000000000", - "0vVhMiampe9Xpgw-xO9_zZCnITBSG037lm-tBfgfNeM=": "416666000000", - "0vv0v-NUlw37aAbHAd6hUDzpr4edKvmAuWKcHgduGgw=": "384847000000", - "0vxyS5JB_5edX8wfysiaY1X0azvQmu7HN7nvX1evoYE=": "387031000000", - "0w2MYLXCHEUmTbLdWp11hzMdizES39nHG-MZ8Z858jg=": "425632000000", - "0wLyaJAC-pDfjErrFYZu1gRjEdRoGGfamJCYt-BlSz4=": "385500000000", - "0wUE-6WFXZT_phOR8fK0cEDwRweskhfwfbqrnw6r_Eg=": "418059000000", - "0wgO9TOgQ8A-BentPxRI3FcBooYt31wAZvXE3ilJUd8=": "344781000000", - "0x3zzBdi0_JmOzE_-xMPoOE8bUFpl2-q4ttZ-wAjzMQ=": "1794474000000", - "0x52SY5jXWW1JJDPO1SRFIDTusHu13Mbp3j4sPAqU4M=": "1306211000000", - "0x66X4eBKwgYA5fKOcF9N1UG2wRAvsIr_tLADwKuwXY=": "415889000000", - "0xAS5J0ML_qcllppgjFN3Ah982iW1iNYSGCKbELv3PY=": "379845000000", - "0xMetOHwz30XrCwgaeyyKqBeSTyPZnsTotHeFnFlDlQ=": "2260814000000", - "0xWrc1a8GmC_-qpLAYLcWd07bas2l56ObVgzjNU71bI=": "776976000000", - "0xbcWySw1bJcij16R89ZsJ2Tnd1lHb33VXDRSe8gNp0=": "2099037000000", - "0xitiIWO-0cDVckTd108T5bBqI4E-J8kmGjOZHW2WS8=": "3938593000000", - "0y3mg8cHzj47DgXz55xRzuZd_I27iTmjoC9XWt8284g=": "811804000000", - "0y5faSKyKPz3GmwpNozQu5PT9-aApAohdDA4Z0551pk=": "918467000000", - "0yfGblyy-PMfv8tZkLkC_CkOU3Q6P4dMhokulqM2s0E=": "768219000000", - "0z49RfGCmCmieWe2XuTbM8gns20F536xKJuipYLZkGQ=": "456256000000", - "0zmnuHP6BnLlcO0_2I2yIY7QiJ3iAmPj5e6YnY3mg60=": "4594199000000", - "1-DY5ig4kF8l1iXJpadawi9Dj5zAW-UKFYRxnZwh-rk=": "454356000000", - "102rj_hZAgn1yHRMr3R5t2IF5dhMRp2gUR7g6DpaZGQ=": "385406000000", - "10_ZmqdKdUWIsfuZkB3-8oXYVZeupv-TuIOZhlLFpUw=": "500517000000", - "10tsX8gjVy5nNNBXpZcKH6Fr08JS7s2JOnGziznWMkg=": "426267000000", - "111yZH8uC4iP9c26UTon5rnoIcuSpjPooPdw9-WqRCc=": "704912000000", - "11U8FuibSLohNs3V6Mu4qNU88KHUB2EAghX2mgIPsmI=": "382544000000", - "11lEO4W-Z7G6Koi6fjIP3r-_TG8eGN42EpFDauOrGNI=": "1156517000000", - "11ykICxoLgGz5PaF2SGZxB9Cm88hez_X4bz_t0S4EfA=": "411085000000", - "12569ZCMConMS_VM3jUkXgfoYXatIP947H5sYmNY4XA=": "449655000000", - "12JZbjmpLVUnuKSxQH9VXS0UKlCt0cbXq53JipGS4oM=": "422196000000", - "12lEdQzCt0K5t4uCHN4Y9KLRh9UI1g3agPQuObMF1B4=": "417630000000", - "12ysBQ1D-3EP7O4O-6VcEcXmz99S0on8iPldOSAd7m8=": "2310726000000", - "13-uQJH5hVgyCXd6nLhcAIYSQ2TZnfJ8oYKTSD9Odwk=": "385506000000", - "13Db4A6tiRTUpF-V0VPlwLVZ3YFItl1yrpjAq-Q-PEw=": "384615000000", - "13L3bfmmLGyXK1w2kOcHtYkyaWnvXwweddX6jiJ2pw0=": "418050000000", - "13QaaTsMRXT6WyGzgEBHffA12YSZ5O8xv9Rh0q-fN3E=": "476399000000", - "13WiImCdBTD-9_JmGf8zuL_phUsm3EcFGGEbsqyP8zY=": "381805000000", - "13Z-9nI-mEWT4DCd130WVYZGTk8tLZiVUZO7J5rw7QE=": "18172524000000", - "140o1lWdbNSMTcBWckb7muLIHtbCrKeEKXSSr8umHoE=": "454397000000", - "14YY-aMC_VhMOMM7GAHXcmvSdqqcEvLJsUh4HkZK250=": "417630000000", - "14rjfqjLzeLpnu8GcwSkLQ-Tn7v356YOeqviUuLm4vs=": "933611000000", - "150XceyaXx3jCjocuXL1-Ln1kn1B2Q-Dfpbw-2klouA=": "7692307000000", - "157nXUyhYTcaqX3tnFBlyY0jlGIeHRDQSi-AfpmOhxg=": "998955000000", - "15OC5rco51wBNk9xsJ6IUqU5UdIfq5ZgaMc9lz14H7I=": "423370000000", - "15T9o8-cnk_ocrkS2upCwPRLqn8Tl4iyb1F9Se0AMEQ=": "833333000000", - "15XcnWBOo817xn-yH_JzWhLpuy6tTyLcTm7dEOvJrek=": "580130000000", - "15kWBZuyC3J1F0-kSAfXrNPyw1S0FiKlxuSjwVWsA4I=": "769230000000", - "15vJORlkCrEygB-vDX3vSq2EW9mph1sUf842QyD8ChM=": "38550619000000", - "165SWSOexpB7OUR06m6EKOplwg4fLVCYgeTKhek0IsA=": "444184000000", - "16AbeNsAI2xN79yqoCoo-NHZ5_d6YJvdMDOOyh4rccs=": "1018466000000", - "16PCFdbIAmwpnIKND-u8jLMMuVkWTFfY92lxqNbMm44=": "833802000000", - "16vH3HDlsR5dE_9tqKLhMpQDmJzCVadLCysgdcWFhZU=": "2320523000000", - "173AOamiMAYZbIbfKcfiK_yXTHNSJ0Ww_-KuGt71Tbc=": "457253000000", - "173grx7dvpxYWgn3RV1hsYDYjrKU5AxjPn6-t14nkc0=": "456195000000", - "17RjIG4zgNUQbcjzKvMVdSWEZ90xn5hxatiz8j7rwlI=": "4196402000000", - "17XOHgv66oHFPXLPbpVmxZ8ZNWpiJpw0zcfGVkdR8cU=": "1207892000000", - "17mcBhwJVpBAgbXQsTN63uLNmFYJ_CKOyG0OvqUv_JQ=": "381520000000", - "17ozuRLdxABg79DxOgCPGwHfPBhQF_6nC7wlz_7htOI=": "4032905000000", - "18TK6KDdEpONRw1Y-fVKshz1hjIVdyqJ8ZYz8raXmPQ=": "847338000000", - "19OJzpIICxxqfHtAVolg_w6-uOQTvBr8kXkAs73hPOg=": "384426000000", - "19P0ndqUAbWO_hOv1czmlEI1lxlksmU642JbUD-c-zA=": "416674000000", - "19WuSS3RFH1qPMxuy2-dETWTCAfHu70uF7aj_LcuVJs=": "380347000000", - "19gIIVIJ7LOj9PGjnMtPaultX9ygR0wlHAwt6xdNSCg=": "3749807000000", - "1A3y0AFWW4PYCWLMVW2nWALo6qXU5QNH2OhZj6IW2gM=": "470730000000", - "1A94o6KzPKoto2MCvDMYaWjC7HLwadNZCLkhD3D3NDs=": "3346153000000", - "1A9uozQSYS_NgEVj4r9pqxJxNv5coIwa8iopgT7-TIc=": "832782000000", - "1ACGEzApcQdNtY3TDqA9dek40E31rsc1yJf3taeN4ok=": "3697374000000", - "1AFJ08Ebp4P53uQaAYvP1Uewo1eW1RGw7J6bdWprXFI=": "1923622000000", - "1B4DBO-laG8GETgkvVvf5rSu6kX-LUZnULGDEQZyU4o=": "423669000000", - "1BDi9t0JnHXCuGuvNfKbXWiO0kEb5tfcXaRNJeZcX1k=": "384615000000", - "1BPExDeOXlHJFs42umoh6VTiwWV9Jwb4iLn3pfCjEOU=": "769230000000", - "1Bzh_GGHaYrm7ux-NnhAKCWpv3j6q5QsSq1a2GjfPjI=": "415384000000", - "1CU6hawwd-4Il4dYKqK3Tp93fhdQ8wJq89G3kB23lc0=": "421367000000", - "1CqR53fUXMMvn-FzIYsOlFNcnO9I4dx0aRRVDOZp41s=": "454527000000", - "1D8suFrTIB0LlvfwtTjNWsVXnlXuYPS5g4pQkW5Q5yc=": "416666000000", - "1DZpSzhAZS4hYAeHCdsP8ti9dlk6KZy9dUv-Y_onsAA=": "376972000000", - "1E-MOqny5opknoygpxbh4_gJGugdEgrFb74d62dIk7U=": "3842547000000", - "1E3f1ISsTA3G63WbNPnq1RZr5ybD3keFLlqKXL43PMI=": "2039461000000", - "1E7vF5vUFL-lPfQWFEjkTWxgRrCWAm1-jSwYnFTEeMU=": "414907000000", - "1E9HJV3BuTQingfu9E--7z1h8E5xtHyNjpmDmmAtCTM=": "1045454000000", - "1EnSCJVs2uU8sdp6b3h5g35ikXRNmpTg2_zcqqlbyH0=": "1896724000000", - "1Eq-LDYs58ANWNhMd3OrDpph9lYrXlzoOaVLiF_4_O0=": "2324977000000", - "1EsXtR3yov9uM32Fnqgggpk9PAhdIyvYwNhreOPU8DU=": "769230000000", - "1F7-ka7WerZktwLYEVyN7P9x4jev0mzp6dogqSlm_5U=": "1229039000000", - "1FUPHXG7uTml1ZnrI-NJr0kSgbvMsOR6xhCfEGq74qY=": "15390259000000", - "1F_dLK1yyeGFzL34pnYbk_W4mnGjKFu6d7W26DmdUQo=": "893556000000", - "1FbBC_99c1zMx28szyk7uYBuGBdWJqCdCrxkDw7wn8E=": "382479000000", - "1GE2E_jVSaQI6fw59-X7heAW3eVkw3q_LwOtucCrmUQ=": "384615000000", - "1GVl_PR4dAZ1Gr8skD0xc9aRVu3tzLAHIfuSZmMnJzw=": "6002535000000", - "1GXdpuxvqXVZCacYnkq-oOR7q3pTlF2sXcX-UJ0dItc=": "1226468000000", - "1G_l0MCzGwDC-B5Z5YtVuFJ8_8PNEV_4TljlpFaqjoc=": "390384000000", - "1GadH4_mkfJV2FtW5sS38Ps1Z-yvtrCd8IyFykZIaM8=": "462839000000", - "1GhfBuUI3rRq_c47OsAu9gL5DAeg9gev5qP2XOMlhKM=": "385118000000", - "1GlKUamfO64pR_nWd2CJMY6NjJVjeQPbtX5cODlup7E=": "3076923000000", - "1Gm09kAVbmewfRvragwaXEh9LjPlm2Cz5O6GQAilXEc=": "385506000000", - "1Gq9kWYlKC3WNeqT44GJ9HavsVbSGo9eJIH4v-gHPzc=": "455600000000", - "1Gs7rHFw99pGK7zKxIc0lvzXiX19E-fTN8LzZ8R2xf8=": "459449000000", - "1GvIgtbLHJupYMl4GO5YWzgL6XGq8LgV0dNnK_ivHDo=": "10416666000000", - "1H9vd9fK1OayCL31qe56u_Vf7Y0fhjac5WVwA7wgBk8=": "384615000000", - "1HcDmUBBf7kBXP_48BH0G9fk8mY1CHuGXrq602YK_vs=": "1225445000000", - "1Hemc1_cWRGMvaPvAaBlmLiho9bFp8knlCPUwkatGmc=": "2943730000000", - "1Hqmg4IMKUcZnuIMZETSLsGxsFKkU8PTH7B132fh0BE=": "391593000000", - "1I1qTRB1TFx-hUssB0mTxTNQKQwVv9S0V-pNzvIrb-Y=": "378879000000", - "1IXPVn3aYKg3uLhyGhTqgYFNDDWN6iUNHjCP1DXSRcY=": "412884000000", - "1IXXFEVWPrEYzOeGPnw67e-sIOn5OU76nbPGhbr-FEU=": "382394000000", - "1IeCa4omziguNeuTBXlrK9LwrK4nredJgZlUzmq76tU=": "16077180000000", - "1IksiK_iZRfoInDfOSalZMI4bzzyeITMOQXJr7B61AU=": "823294000000", - "1IqKr4jCoTyuzyZD0yAAk-Nm18HUV_AMmI38yC1ZoAM=": "416595000000", - "1IrKAPVJuwG_9NvIOAnI0FEa07yI8xjgFpLY1tJ0_SQ=": "468961000000", - "1IuvRRcAq4rrqiHCxUPNYpZvGCyJVvNeL2M48Q-QIqU=": "385596000000", - "1JBoNJSBIzzNO-RGuUffWhs8AiulUHliDUE6yKhfPLo=": "453978000000", - "1JWtjzK6kIusnr3_K3AEkjWslpt9HpufzdwgG8bsWYA=": "384615000000", - "1JcbOSz3rFH3LU8O7_kGG5ACTxGTmqKEo2tlbYgBLRU=": "423370000000", - "1JsLQaDSmE1Ja6gctPkxRLGN6x4hDj8RP9EfSuuyIic=": "384615000000", - "1KhdPVbEyq4LjEZsgWD_ykJl_b11FqxK73eLJPfjhGg=": "1411170000000", - "1KpKBL3hLvnldyvRV2zRs2KpE6VVmNW0Jy-69o42UWw=": "386590000000", - "1KytNGVAC6H8S7ubKa_wODyH3vLBRC6cjtYy93QaLis=": "411085000000", - "1L1PLJ4lmyLcLrYpGGkxIb15vR5ibF43uQ7cQtMZxIw=": "453900000000", - "1L6XguY0sXMGH52oi4nJC05YP9p1ZdggmYW_nJEgi-E=": "391797000000", - "1LEv0IHJ5EYEnQTaGsGwMWDFO0UmiR8wLjrNEkZuPEQ=": "449746000000", - "1LeT5Rqco7-0fwPiUcs-UbeuIX2pAqihYD1udKANQXc=": "447942000000", - "1M0CPyjJMWMNrqFQ-RTp4KZw60u8sIQlq4GinZSCgYc=": "385258000000", - "1M1MUTGdVcFhOr5Ph7gGGI38j9IG8XiQACUEKCu1tcA=": "383621000000", - "1M2PnmnTNop7k1woMV4RPtTLxIMSSbuPdVw1rZ7qi60=": "1263180000000", - "1M8LZMMSGlwspPg2yTnRBGJyq535D64CpWEYdXvhUqI=": "2278000000000", - "1MH-6GxV8DnFmMivt15Tl7rAPDE3YMwOg14MA_iX5ts=": "1854180000000", - "1MtebMg9lZk8yrz2jameKqYIUrncS5ZxrHd4GbCw69M=": "385507000000", - "1N400Hr6RshoObWNzSXitT2bqhrMSbHArgj6jLCij6s=": "3384615000000", - "1NCWQRtnSPkOdPVT597FOXfC1m_oX2JrS4VqBQizuzI=": "554966000000", - "1NVDw6GEEnLGTPn271uE9gayiVhFTOaQEwPFt0js91w=": "769515000000", - "1NkWuhRc-m34InhtqroKOJ3Mji-SrSrhCQH48c1k6bY=": "3011269000000", - "1Nm7W25lH9fErHLVuj-vKSdHUNRCM5qqLIr_pAsbC8o=": "385681000000", - "1Nms6vw52bGanmlzsWT3B5DQfZDwcxW7OvOP6BAe8dM=": "814797000000", - "1P8S9Z9qXfWTzqdy8dVNISZJdXOKX5zb_FtTPWZY9Z4=": "391797000000", - "1Pi970mDm-w91n1gDFNXufqShRJV5KwSWlR1_Ype2bw=": "949302000000", - "1PrOTV3QVxv0RXSkPGZ6Y6GlKG6iJ4slTZWKcdklKyg=": "654571000000", - "1Qa50-odz1rqW0VbE9WCKvGwl__21a286IHk-aX1aDo=": "3106180000000", - "1QsbdbTxDdOgKfeej4-RbbzV3kgANizMHBt0Vx5Aee4=": "1551986000000", - "1R2V5reyITJZvCN_NV1BFSiu3lt-68-xbWHStoT82P8=": "1156517000000", - "1R5ySGmZ8c5A9POEyG6Ke_HX7pnFLW9C-BfTwcZOVGM=": "463193000000", - "1RQUR6Jmzd9BvC3EwMebrp3P0XeBkx_bDwCgo5mER14=": "2310948000000", - "1RdByu4anZLI2QMamKSrTISTfEXKJPiTw3uHEMWv-3M=": "384267000000", - "1ScIefI6L9aOnfl__HmpesTovjJ7NNZ-5TJvZ3lamjY=": "472079000000", - "1SdFcWBFElxC4yEX5F8cjBRpDyttYyyc2gEZ9WnSyrQ=": "4459818000000", - "1SfB_VOMm33P4vAccLc9u_MDS_6S3TmBC6GXpC4yJ9I=": "774024000000", - "1ShEXRSDybq4xR25w9jj0RY37Yvx68YPOFSFx6i2Ik4=": "384139000000", - "1SuGRRmrm7R_gQcnSl1QnaZvW7jkGT-fdqstyu-BQxg=": "2026785000000", - "1TaavOdapD0kSBhIT5J12PUArKDtvILG2FHhO3dizh8=": "940229000000", - "1TcULa2zCFuHdf-WEs2XBHCv0_Oxwl3bumVkFbxH4Sg=": "377767000000", - "1URORtHqR7xFprU4OQnf0C5WscdTim7xkG_cZjUaYXs=": "448053000000", - "1V7HcJSztYE0xZK81K3Q9S7lNN8YEcW81N3oYyo8UtE=": "384615000000", - "1VMXGwDI8uGBLXC2IjKCXRjQpdZ0RyG8KrgDjZvOxao=": "457166000000", - "1V_x3ZoJZcwMqLP0y2qu1pXsVZc_XflTqhQvthPCGtI=": "1142307000000", - "1WbFjcABRwe9AoY049fNmT_ETEzUiEezI_rIOnCj4Fo=": "395728000000", - "1Wc8EXhygRWcGf1Ra3sfEFIUblx7jw56sIs5hqq06fs=": "4105900000000", - "1WhyCRCKKqGNo99MAMndw5-3tQEypeu4-InrVHGJuBc=": "384615000000", - "1WnXu0hkkt4ciHK9s0NhwEuv3HC6FWsI_HX_alAOhrc=": "384615000000", - "1Wsta50am594NVSI86JV9uaC2KTxaPwUO136WvRbBrs=": "576544000000", - "1XCBopBKGcLjSsUaZYhquda1zVC2ZUidlOwHgOi9DBM=": "386038000000", - "1XUb8fhaP9GjMN3W-JC65xuG07mB0k0BXUD8BWcAfRU=": "644862000000", - "1XYAeroZEy5M3a5vVpxyBWe4nTdlGBSOoAPVnfRwSdQ=": "1560830000000", - "1XZ9qeGdTFpTD0jyt4CyRjRQaWHL9M5TnwuNT6_mOpM=": "920745000000", - "1XbqywXXrt641r7E-ebxtT1_EMGMwMyaT5l8DeDn-sQ=": "1002693000000", - "1XyIMXm-rWrN7kznUe_A-Zx23FY0HAzk3RE-UKjwDIA=": "386521000000", - "1Y4JHIgAC-33VBn9YFEW4v-TLGwW9XSosxycEL5YXmk=": "1841308000000", - "1YBIo0jTX_T-02ofGte8lATMjaD3c29r7glDxJz9QCQ=": "1914723000000", - "1YdKoDnc-_czIdMyGJCGKbG7CBvWjY9ycGlCkWyUl8o=": "946530000000", - "1YfzYkph3DefDXd63MhKBBN3INYuuHrbO0tpsTa3xCA=": "9795454000000", - "1ZQge4InDWpjyCk5TLTDok2ZY0ugzyCXRFY0us5Ti7s=": "383122000000", - "1ZRJ--kO-JHkWupuKQ1W4vuG9yDm3lCM_VKSaq3CVx4=": "381439000000", - "1ZVB8JiH_6Un5hS69qvM2uEfHjAU2yDJvPLtUm3vXgI=": "1825913000000", - "1ZzULRK51rk2yoMNR4st5FfDd59kPd_nUxE5ImdjWsI=": "388604000000", - "1_40dblcEXII6Ns74QpmcfYZ--n--LFGmGaRRg49b-8=": "905988000000", - "1_dLRwBBmRyXTa8v9qPV2owOmM7Y_DZSytpOItnBNQY=": "3909243000000", - "1aYALPY-c_TYDV_ss5ITss2aWUSwjWXgZocbaMMcjlY=": "3846153000000", - "1aqPKNWojZDwleox_zjDu_EQLC49SFAz8KHykSyyA3Y=": "384615000000", - "1auiR7A51lft5SuJTIuLG_xvOoc7FcDp8Vegf8fbIBA=": "384029000000", - "1bCWAAjGW7ZDH2ldYojcJ5pW4wKas9cD8BdTgEbj9Dw=": "471356000000", - "1bltGKEpZggH7ajkzqCDbGlCWF3eeybyxuSXenEUhp8=": "412353000000", - "1bxdV3NbCxr_P1fZginXVVTWZUIPYxf9OsvvDfN6J0o=": "1153846000000", - "1cVTd02A8ZT_XdENENSeEBqBDUQ5qQKDGRV8_f2cBm0=": "384615000000", - "1dQNQlX2xM-QtLmjQCRvxsP2iCr13OROSq7NURY9NUA=": "411085000000", - "1dSXN8m3LFaZTAFo_M_VxFlnkUePSMy764KaNYyCRWA=": "4970847000000", - "1dknO_o2A2HIch1N6RR5AEovYN4Q6cMX0RYhDuf4MiQ=": "2457488000000", - "1dpkDQ-O-lA4eDXZ7FsBww0-0PaMXuhykVbDWtSLzEw=": "384346000000", - "1eoP2t86ac5wZddVqSlDmWXyf2s2O7Oz9sBlCT0tRm8=": "1814415000000", - "1eofA2fezmhwuFLPGPUTELdpqnq-_WCUNRvh6w4gywE=": "389132000000", - "1f928K74Lb_HAB2JfUnCz1JDMYNQ-JV4iKAP0_c69_Q=": "2081255000000", - "1fKmR02U8YxnAGLs40voxAILDMHK-hxJhZG3WDrh5dI=": "770849000000", - "1g96a4JwpHClnMND-tP9m3R5oXKq-ZToclmYQAVsEls=": "387009000000", - "1ggEVGbtjmwZBoQIr36FHc_rKw80P_3MvK_lLarOkFs=": "393313000000", - "1h7Rg4dB4hPc1bnM43xWP0pc_d7qc7Jp2Zu0h8pVBbs=": "384615000000", - "1hCdBlZNU_ZsIA5wQCE3Bg4d3TmNGr5UiVoffYtSTy8=": "384615000000", - "1hdayabV8uooLHB3r8UJRSSIC4j8WBl_kJ_6CjrbWU0=": "994866000000", - "1i1fUVKgTViYW6kh5ieYXRCw-SeBQJEcehADuIZy61M=": "384108000000", - "1i2HfUBnEIfsSTfa_v2F7uTsSTT9D37VglEpXvyWa6s=": "1380711000000", - "1iH6WrmE-rDG1Spq3KikXTbWPqIn6_nVEy9VqZC-Kp4=": "703891000000", - "1ibtRUH6fg9YmRsmj-NnmuR0MN9ObDwjWKUhbrpp0VM=": "1153846000000", - "1ipcHwvSJ4FruF6sNdROnyzgvAmK70sAq16k4B39BK8=": "1154237000000", - "1ivEYVd_QOY6IkdsLTF99Bc3w5rvFxYBangcWsDkw18=": "3846154000000", - "1jKd5gRKG4lITZg7gQ_vIjwErwFkbm4PIT0x344jYPQ=": "481940000000", - "1jUU9NullcYeZG3VzZgwL25LrubMO0NguzD0hcXMYiE=": "384615000000", - "1jgZptujRWN4fq3g4DIiVKdjme4GR6p3Ub8YqB6yqJ8=": "452076000000", - "1jo2MwqdLpDDp7WjXkxVxhrvorBSa_7G89clxckKcxU=": "564372000000", - "1jq1CZIhgC4jPf2U9d2aXr9oUt0sAyTBM-OTkfC8sys=": "395497000000", - "1l0XYNadeTHsQWO3PgCpQLvWXmcNm0JxWE8qgQrcYBg=": "385510000000", - "1l0gNl6DZBIDTGY4xAKXU4orgVz72tAdyK5CzVslgkk=": "385507000000", - "1lgS6Ks2nYrVr_STatn_lfrK-JM9ZoPthQKikH4eMO0=": "396485000000", - "1m0sMI5DTRYL0KdjeVIs-_NGHCMvNQ_qvapvdSqIUlY=": "456954000000", - "1m2OmubJJRbX7CmsXcX3dgEQnLX-1C2Z9aKYvck66nE=": "770278000000", - "1mmKnrbNj_ZMLh3ztyeSTOZszPEMTc1PO7OroRqZJ9M=": "963931000000", - "1n2KWdmdgIu-eAgeTdH4DCrapsrvEFwDLRZeleNy5uY=": "3846153000000", - "1n87vR2lo0gw0BhfNqGYo4sDbgfNi2_EWkb93xNkwkw=": "455600000000", - "1n9AV7EYoIJw0uCUCAbDadSed5I4lRP3Xxu1LNe_l2g=": "381767000000", - "1nDannpxfySJUxsFpqLwpblZlu3xCVhUBVQXV8VjBJQ=": "384078000000", - "1nPJHNNuOKCJsaseO53SbGJ0J6FwuQo8_stKeAg63iY=": "486218000000", - "1nQN154p5exgNcc7Myjqz1cR8v7j8-trYRcVFRM5A1Y=": "1874440000000", - "1nUPWQzKQXgRQPiyLmx5rqMGecALeSA0DjqZwHc2_Ps=": "549800000000", - "1ngRp_0vTuADGeW8n7EhabtFJJPijT2hjI8VL8kXzGA=": "452875000000", - "1nwokYh6vtvzuiqH6dYGqskNBZYeip5llpD9eko8J5k=": "1223425000000", - "1o2UvXRrCIX1prsws9h2tr6LBJyiLKoXEODOzsdu1iw=": "454545000000", - "1oX7qKLXPQW-kC1FY1upGS2DdTsD3tLSMr-k7K8j9rQ=": "384615000000", - "1oZzJPiaMPpKiwlK7Rd4QK78NAb9VVWywz1oExBLuLA=": "4520394000000", - "1ooXN4TKKWEpPgY15PID0DlHcjgGf5zGWdQ6sEdqxsg=": "5959200000000", - "1pL5DFDhvW-j-2elJrHlr8V-91c_XoxPbkZcxRtL9sI=": "393313000000", - "1pLHkLCo4Z84ZSyHYefIfFdkLM7O1A1hQYaGeqJCUDA=": "396485000000", - "1pZOEbZoA0BZkrMV-G-SjbgsItCihSN14YUX-9KS5sA=": "377648000000", - "1phyIbYY3ztNqk060uC6eqVNkmPmm-DL0IyMbEmXc1s=": "1154647000000", - "1puG0REbNgLTPelpOn1zMPR8bDvKvqDnrEXaSJGU3qE=": "582396000000", - "1q-PHztf-PQ_B9Mmz1BQRKoho282ccPPCONXjdHlbQs=": "384615000000", - "1q4IofOeiFDNG6wuUcgXVntp3jN06w6xnkPj8mLafT0=": "384615000000", - "1qDPJfwZyZ4P-5flUfnc29eQfHGR3qpBEmipvTUHSoQ=": "398415000000", - "1qrTuHX3bcBtNH7buMiXkKGOeWNS2rSVcIhup-6NGFM=": "1153846000000", - "1rTbs579V-8QmLRPJEMejwXusSM-nefF_9Lo5AA85GY=": "1879350000000", - "1rnAavKeKb1GJzV9riasRmV4WnN-aIkAWl23EpMgLIs=": "384535000000", - "1rqsOlMgSZD2PQMg9IuTJsAmeWO0nbJ9LFpO0Od-Rr8=": "382530000000", - "1rsBw82UWT0rjSr5aNxDTAohDQgyzJxAdqZu6lHBrsI=": "1819166000000", - "1sD9Bq4GyZUKEvwx1UAYwo27zfdE3MkK3x0okV9BkvI=": "384615000000", - "1sYxZrxnG5vQH-KQdxdGlkcx2OQInYNCyd7-Ik3uuZ8=": "772717000000", - "1t6Uq6fFesLGtAU7yOKIYYWTFW4GBZ0o2e-zezSVTJ0=": "428037000000", - "1tRv-f_Kjpm_dW-lOfyGwoXX1z5UTDO45MbqAHfiDAk=": "1173970000000", - "1tg98BjhW5KXnUexRKijDU-xyD9JuaSpfpJygdympgY=": "454545000000", - "1vFZsKS9iHWO_tS3JWXtvJTFN9zo1Nbofad2-NwCj5Y=": "385509000000", - "1vYcjTv_sT4HSKreIMceRp-ZFZNkXt3hNCn_Gyu75Z0=": "494279000000", - "1vkqQZ__-peL9nPOBA0V0Fh1EizA0JV5cht2CKssm-o=": "462839000000", - "1wCHQuc8gbIGmA9RMhO37IC5z2oTpgEW6krFy3Vk1x0=": "499117000000", - "1wJiPvefKH_pwQoTcRC9Ir5TZGZdJ88GCWCwP_V81XA=": "769230000000", - "1wkd9jrSwkL3BLZEfZHUDurVkFKxd0KH3ALhYdWk1pI=": "385101000000", - "1x0X8DruMEGCt_GjHHi1HKIBLap2q1bdVwT1QliQZA0=": "2018910000000", - "1xm1MRcCrgUeOu2Fs8wNGJR4-rNPvmSmEUwZsfqdsiY=": "384615000000", - "1xsVb_1h0bUQtWv3kHY0JCvvenC6Yrn93uwOyF_oCl8=": "496125000000", - "1yCSM0CepuT8fOJyVBYgsjv6K8NY0EqVL9sQl-7zfnE=": "1408049000000", - "1yVcPwO3p8LCmQ4XwDX1b7E40OmASayMVM66GvIJjZc=": "384615000000", - "1yXfoSXoLhA7h3bRfzBIc_DTcd0054vsBV4BA8hYo74=": "481721000000", - "1z4fadqGqvdbFVLkhLPBRG1XzZJNCgC-UwbKK1iwL2k=": "384615000000", - "1z9f4AThp4IVB51reoGeOwlw3y5i6aLmM4zvw3419KI=": "1692588000000", - "1zIPfBqhVEWBILUdX5I0lrEAiMhpNEUN5v47emGx7bc=": "1927554000000", - "1zOQL0QZpASUm6SFRLk51bSkoflBSCmKxLG_oLtSYDo=": "1173546000000", - "1zyVVebj43cmLGZqhGj4l83YAW8XX0Ho8ceo1Nx3Ecs=": "1388846000000", - "2-9rTkF1Vh6gdzR7zo_A0nK7MfNjTft_LUWf1cbEGFQ=": "4898895000000", - "2-q4GIpO-Ypl1AMsydPOTXOMsu3oXVylLMbVQXE0OD8=": "1908054000000", - "2-sZtL39BXHMONiL3u3CUjnIRDPvETChZHZzpgt_9Uk=": "465999000000", - "202-uRZ7dm9en3oug0CkWkxIapChZfGuynodIhrarq4=": "389663000000", - "206t5Bel8ZZ8yYVTvBDKRbUEU6iZvcXZCfuD-p06k28=": "382394000000", - "20EzQXRIhWlJk_sV6puu7eUQbuxL2kxzFcxO4YJElWw=": "4985679000000", - "20FL55lTSYWBbAwM1ifnfK16S8UPTQxOvtBeCxiXT-4=": "384615000000", - "20LbnHxcW9jdlKTt0GejZzPjz1wTwRvIBx21MWO1wME=": "538504000000", - "20iImQA27UPfTxKSh1InItxvvXJtm6At1IYVvlhrHIg=": "2231533000000", - "20ovbzs9Y9uazDxXKTJq9YxY_MpF_jLY7HRlCDR9GyY=": "1629942000000", - "20umbLJX1ta5gmw--aEmN82DBAMjeQXZrD2Q4nb4boc=": "769230000000", - "20x_gBkYpVAyFQu9pxvFc2ei8atpXxWu_fKVgoittu8=": "446718000000", - "216Hz6GIZ9F-Ta8gx76rwd4d5YAUO-C0B3Db4yg9yHo=": "4265892000000", - "21LyU5KcrLSvNy4mLTBFmtfenAoXhxwS6xQodsWJE0E=": "419807000000", - "21U4-4-3qf625ctGWHofDNVha9OH2AocUqQvHrxl_mE=": "833345000000", - "220Le8Ag6EyisLKo1_PxOw2_a2O4YmxrFhKEXVui2Io=": "4545454000000", - "22Hwf-8EsVy8liLkBcSldcb8Q3RN4-v_3XQNfp6Z0Q8=": "1691022000000", - "22M1wjDJ8ZV1Vc4R1wrYFHTg4VJ_XZLKVae-Kpy7q2Q=": "384615000000", - "230j0qbN_sJU3SJV9bpnn95VFk36h0wMzQ2jQZNkA7U=": "411085000000", - "23Bm3GauOT09w7QaHtvalELbdQmKB_UT0UlJZmjdtSk=": "462146000000", - "24QNvTvaUz3KMyEslWTJysXsvKXPjIMO0-aIKvt393Y=": "1249999000000", - "24sMGgoGAq7eDkg3RcbADm9MqDhNgngHqrsMG3Eu2hU=": "2181416000000", - "251CTY574FhcZOGDZpRSW-A4lunSWQ4yfsJQwFn0AB4=": "420356000000", - "259qkTPxerJzrJqFJk9Qg65ia4mkI9zYFaLENY2LJoA=": "462687000000", - "25CvIltOLs62vBoQb6VD0Pa3NhQT94JuJ1EH3l8kSYo=": "3601765000000", - "25hH2bSsXLLxGkQNB6VAnXzNrpeKycJrSZ1SwTWFbEM=": "1684160000000", - "25j12wFnIG6Q54MmZusFk6w3elJFXW7zDP-3CshpfQE=": "380184000000", - "25shZcQfCZyunFCiKgpfFbLsq2biuRUh6QDQbknaqDM=": "909090000000", - "265GqC9WmZeXPtF0TqAeDdhl14QMeimmj5_taUv1HI8=": "379611000000", - "26G7qYcjQ0THT3Oa1wKi-Fv3Fh3yoP48RWPVKLQLGu8=": "10231499000000", - "26l-aRn1X2Np_Dt04kk4ZAZvQwyAorGPc5diHzlTjs0=": "1921191000000", - "26ov9VsjVgXJJQvm-q75lwMX4MaDETDSOqx7dbLpNcc=": "379344000000", - "2786d5yzBSCyAXoe0hyZ35pwP-8Tch-vl9vS-ClTzZA=": "4621453000000", - "27SVE2ZOu8adn7NuYNX-zhYzYSzN9uYLf_EtW5BGIJE=": "2269531000000", - "27Tx9pNQycHxCvN24VE2S7uw1rw6E4Fni6Mtk9_4SWQ=": "382579000000", - "27UAleyPz0cj6ikrKiK29lyJffXqWsgjgOUkmloVCNw=": "696563000000", - "27YHKq28PY4C4P5pIo19Xu7sk01Ivp3ju2iy41vFdkE=": "3715456000000", - "28P-yQDmNAZ-rMUH7I32IwatkPtgwD3WeiaBYpVy8go=": "1817993000000", - "28PS7fAyx0LtEYJn0Hc2CWRW195tmV3n43Mlm1Vo6l4=": "2055429000000", - "29Abp9k5cRixpBTR8BEJuKZ3YdIB7ZAb5NTd_KTdT64=": "9614135000000", - "29jR8J20Go7X_McvxHb-6cutRiiCI4yk_3ygXyM5TNU=": "1927554000000", - "29k9t8j6cmNG6VF39UYr5lHbiY-ilnLVvwXZnnSf34c=": "541995000000", - "29rg6FpjCFxs4sUdp3LsI4ANCO5fmfFK2sLAuN-0ryo=": "4166666000000", - "29vZnW4hZLnczTlWac5I3Ne9GaLAbU9d05Cegbbloqw=": "1363445000000", - "2AEcnuDmp2EHASrSnP3PiW7tv6HNYuDDQ6x-njI0Cow=": "383927000000", - "2AKftTOn4stz4r9vZpVRcFtFbMXpm6RuQyXyrL6t3ao=": "3457087000000", - "2AhKIcS152UzG56MTnkYZo7ikaICaMISp2cOIhHLI4M=": "2329231000000", - "2AyU2GnCuQVsv7WMiZ_kRxQucReaugnLUqlj_XpzWj4=": "462160000000", - "2B6UHWpElmnOSI1I8gw3qZKcMNSR2zKf-P9xZfPnbEk=": "427562000000", - "2B7L_0mSIfi80R7h0dToWDwcWNJbPrD25wTuKwFaUTc=": "2083333000000", - "2BKh_iy5JAJwzEgfh4_J6KyoqTdpthf6aMcVL4dDqK8=": "385509000000", - "2BeONsvmyMTkbT2iD5p0nX2Qy1ZCHCU7ZIg6SvOOTsM=": "3846153000000", - "2BqgEXGLvKlxpJFdCBKeJr9uPNTh21TSoLOrCF6p7M0=": "504682000000", - "2C8hAFtZF7g8wMCbwcOLWyi10xRDHxctjThpBw87iD0=": "461649000000", - "2CJyobBcNokB7_AXgsxhM1NDQaoyu-W-VEF332j3kW4=": "382018000000", - "2CepDz5gw9hEDejBcw1BrtYWAi8vUNhAca-kEyXBXqI=": "378006000000", - "2CybYaKX5dVnJcfCSkA617J_BjusgnRuscjOcTqwcvA=": "300149999000000", - "2DGyeilp8GU_Xnq358fHa8HAGyaGK1AhLk65JPwdvCU=": "6572350000000", - "2DHVoNDykzDX0wTanfnDCSL31Ig_9WFZM93hVyfLLZ0=": "418488000000", - "2D_qz1qlGFJhRm1rsMLtq6ECSQMP4NzNFJjMOJKr9sI=": "3989751000000", - "2DbaJoMqUjn2DIX4RpQvrv_UBx_08f80MLQk9nzCZBU=": "416886000000", - "2DhgcwFEDK6o16xB6Lxfg25vj1ZQNnc7M6aM_Lb7_qw=": "382394000000", - "2DoWj2s_C_3fe-R1Q8VljGPlHFPec905IFbhUw7CTrA=": "3473683000000", - "2EOJdN8d4g_JjWA5d8QsKbfdYxdc4Tr1EJJzetY0fTE=": "370748000000", - "2EhfV5HzD8k14-bADkV5lKAfVTMGqVHdGTAwHTOJ_lA=": "384615000000", - "2F8ZXFeW8mzak-XoDMCNubc8HlCz3491s8wmmiPrl9E=": "833346000000", - "2FD3_wmEYkJ795UR315kS9yP3DQ-n5jsnTNCjTxDBho=": "384594000000", - "2FE3aaXwLiCK0oPd6EDYbtjv4KjUdXoJcMk9de7JS90=": "1567190000000", - "2FGGYJRByMwZwF-zRXZmgNPu23eauKqmaM9adxDhVmQ=": "389557000000", - "2FH-SR4UYJVgP8GUBsALTP5dQRJjK6gfh285yQ4btKk=": "482708000000", - "2FIVyE0nJQANd6_TSFMcyNTd0teTQ_-LPGYUjesvoUM=": "381805000000", - "2FLcyu1P9O3oJtPZHTrlI_R7FQFx8rn_HaAOWNTvuqE=": "14999999000000", - "2FPGG6kyilaN6RaPY9xD1GnN7t_DCn5NaxoQXYXm_Ls=": "1538461000000", - "2FZJJjvY9w5vAMiR4g1ILyr--HVQ3b-sosroGRPClTA=": "1144901000000", - "2GJyyH91R3njjszYskyq7vt4Jc662LZUFD6w301Jddg=": "384615000000", - "2Gc7xhjsFl23Gj4gCgRWKmbPliZKkim2Fuy1DgXH8hk=": "1005098000000", - "2Gg3TF-txEISKKKCS2s8eNtZs8L-IuRpP0GIVEtC6f0=": "3079376000000", - "2GnQu62Vbc4xdy4eWuODdsHmw0RBzg6QG14qP6Nadbk=": "384486000000", - "2GwYY1D8nTrzORVzjWhVjMkeEF2BmgbKG2410C3Zh5M=": "382639000000", - "2H0wY3m7olOrgn1kgojGl69vAR5H2B0brrN1juvnP7I=": "11516316000000", - "2H_vcNjHv_WiCQJBSzrtPDjKFIYwO0Vj92vrBUuzhow=": "946530000000", - "2Hp_U7OVMyInk4cc7FLt6FU0fW-VDv_7bNQDpa8c0Ps=": "565333000000", - "2IKBqTcfG76idEw8UIyMtGw5lgPn9jC0Anvmj55x00U=": "466374000000", - "2ItdebmhxEr2sewgIP8HHCTxJa8a2HoyK7pqbrTdNwM=": "567311000000", - "2IzzBs25XBct_kRM4XVUmkNggczR6-FOmSXs2VMzq8k=": "2083312000000", - "2JC1fGFPpUAmbKWwkKprHuvOsmI9nrHiJBbuQwi5sac=": "1418240000000", - "2JOfdH0pJp78WvCNeZQu8CDdz1VkxWSu6it59Hw83Ds=": "470553000000", - "2KETrixJ7ZZMT5v75-1KANV8fUCWXcI7fyaNGLaPyxY=": "458833000000", - "2KM278b23zjhlUo-BXYMW01k3Kw04VrzY2djprKorF8=": "416666000000", - "2KT2qENIN4VBD5icQNQAZcruswYiXWqZTO0uLObZoLU=": "1513688000000", - "2KUqLLAcBam6HT-cBsIbccrJ9RsPrjxNdEtNnK_doWg=": "4090909000000", - "2KdW7lo3leaEN2Uv_DlBHyb4ANhyNgJbN29uIYZJJRs=": "454545000000", - "2L58K3r-fKf3PsP8IDP1cpFHileK6R5PCsNqTnTtRYw=": "7929702000000", - "2LIGPpL34bC_YohIpHMoVs8RL44tGDnqvMBaxhQF0u0=": "386085000000", - "2LVYj23sS3AJevQVXR3P7sDo5l_xh73Wx4zMq-Njvgo=": "385506000000", - "2LvkcmS1H59yPSY-7i98tirCX8OXZZatVt3sVGsOfPo=": "812900000000", - "2LzG75qS47l51p5kxwPb2-eoUfObn6B8NLZMdRFjctY=": "933085000000", - "2M7l8O9RcNPEqe49redCzBD_mFCOPRajQTaZYyAdPTY=": "2045454000000", - "2MHiVJwhrBFixHAmeM73iOWz9tuDgpOI6mgu94nkIM8=": "6073601000000", - "2MioTXYPPYrOFxPTFyuzw_dLh00GbY7rLi_-LU7sqxw=": "63598711000000", - "2Mor-xZ6f8TW4mDT5x30LEUt0btkCEcGUmg_DE-SX08=": "3434615000000", - "2NVH15CQYqzJak3HP7x3YE9co8xwdzfJmqr0kC5euC0=": "1897899000000", - "2NYMLJzdGY3NxtLJFVXkPebbfHgqCVCCi1ofarAuucc=": "448728000000", - "2Nh2s7y_JRQZRyg1lPPQDxfFHwiB5ewIdpb9k7Hybv4=": "769230000000", - "2O6jUs5JkH2eGH1izTqOeDYnSt6HMhS7WJA6P2v3qUM=": "6222964000000", - "2O6qJYrugwWVREGjQ6zMa8zjRMxDdn2dT5ug2LKQ81s=": "1514244000000", - "2Oe933QKBS7Nor70ZHh8H2mytkeLhNN_TWSLyJWXV-c=": "578472000000", - "2OrovwiMAmGduruLFhtqTxFqHNN2X1Jia-5noGSHU8w=": "769230000000", - "2P5ycvs8mtfiVZ_LikIRkYQNDyjzN_yLPI2OkqiKo6E=": "417633000000", - "2P9c3WUlvPXnBi2oaH5AYoc7v3v0X5VcELXWNwDSq7E=": "2296140000000", - "2P9ou1xtHh0QbkilWZDhNiTf1-N7b6GtVAjIPG-OoLQ=": "382902000000", - "2PSp5FMMwYhLT1-iHnhEX5anbOXtTwWeRxm4do8ibZY=": "541640000000", - "2PVOtzFQzOPEhknHyLhPlQme7o2EDew3Krn1Lmb2rKk=": "644862000000", - "2Py94W_hQq6wzYoZBNokZlAg1c9Ga8G3m0Q-YrUZUVQ=": "384866000000", - "2Q5viNo2YljKQSBeJ22lAUgQOWygCO1hM7U07VURuuw=": "1112522000000", - "2QL4P_cYvrfDH7OzUVtGlYYwgd8TIZ37AAN6UshT5go=": "384615000000", - "2RArjiTf0J2vp_IKgweBsgfO2ntBFKH1yM6UCaUIefs=": "767200000000", - "2RK3ASTnVTN1wobnMAKa5D6Dem0G3fbPnsK22Hz5JvE=": "499999000000", - "2RO3y7oy0wKK2uIJD2tW5jWJwvVbcZcjEXX23R01tyI=": "2727272000000", - "2RoN3hFTsuKLGIUr07jXHq_WbfMrce0iJoNgzKGINls=": "1379634000000", - "2Rxqw4xyOnmkP_SBMfSpqJ0PUH7F-joxpLgOWff5WF0=": "378257000000", - "2S00bRecx_YYd4UKHi7pI16V7XiHcnFYvMUPbYM6OJc=": "833347000000", - "2TJ1_xDeCP0ahjeqPMBbzgTZudMSR1IpqWYAPoqR9RQ=": "416928000000", - "2TK1x6OfWQr_80Ll6nP-8MF4AxrABnRRFGJNtMWMaY0=": "1926411000000", - "2TvbwYMYjb3iO9EWq5uu0V8AUNxAHGkIT_tkWcffEmk=": "5416641000000", - "2Tw01BG9AK8S-WdFdqLbDsfAZOxg-MOntaJrdROzstA=": "576969000000", - "2Ty5Y4Q3I355DdKw3kO7I3gc_9O1WvWtA93E2MsPSwA=": "663720000000", - "2UA8QVcL2YuAi96jB2V8P671GDrxsVaJojL288Qlo48=": "446538000000", - "2UQoveVz1l5NrgwWDiGCTlL6NXQw8qi-1CORquZoeLw=": "1223399000000", - "2UgpRi8C9f93c6KQZ540VDk88Qsaz4I0q2YpkboimTU=": "461548000000", - "2UnY8VabF7fdvBMom3zXFbBuJ8PTvgLmfuUirm3fiZo=": "446829000000", - "2UqWDL8SIX0JOInxYS6XXaE3jFzpkXTRGevUfIf9PT8=": "392602000000", - "2W10hYaqbpqGylO9sO34SiQU49fcnEwBRn72Y0YqYGM=": "417636000000", - "2W7oyCAZz6N1ikusJDy7SJHUnkyWBgH65q2Z6TOxmLQ=": "378384000000", - "2WBZ90rD7g1zXKyiDNrREe0hcuikDNkLP-VtZ6QszO0=": "404548000000", - "2Wd2C2lM_R6LVkdYknPYe97vfLFZeGK-qS3TE9D55mE=": "1928377000000", - "2WnOen6GdupU7kJS4lSIf9DltnDl1EjZLrtWuaFnY28=": "1491806000000", - "2XEKzopgRsbfswJZHzu_A0L28jCocpa6AncbfkhBx-g=": "1195983000000", - "2XNgzwhDSftPX7VWjRkjsUlaeQPdF-lR5Q3jJXsIVdg=": "387745000000", - "2Xd73MIJgv4qzaHk-dfi5GOUywNS4FDxtmGhW3jZLEw=": "10679012000000", - "2XoKKsIA28WoJhQFPdzo7fkbGuvJ0dzpG-n2de9EVqg=": "3099639000000", - "2YUWuQwacGHJvD1y9UJy_GVDd8Dm0E0PwhSOFvpTjbU=": "541645000000", - "2YcguRsYshughkVQvte14hWZykJGte9ZvW6Rnwjz8GY=": "416666000000", - "2YhsmO4pckmaTxeflO58MnJxt0SYKQRK5zbhyaDx6eM=": "4162967000000", - "2ZxlRlcuWx7GuJNBVutFH1hJe-WTKgxvgIJj2_Yxmzg=": "3793274000000", - "2_2PzES4JTkataHYDSjrfSpVNytr1TH0GcSD6zcraeo=": "909284000000", - "2__Wn3vPjJ7-OortzQKlyKwmo9_vwlBW8-XMT10ARPw=": "378404000000", - "2_iXk1fnS5Nd-PvI7MjSg2Up89UekNcgyT0AQFBg6Y0=": "1254148000000", - "2aAS5E7pfuWd5ddUfMEMO0_C_FpbGXHyoWB971oHKv4=": "1923076000000", - "2a_i8kaQgRwXjF3OHnsm8R_kTai7IPyK_6XbBQpsxVw=": "2916666000000", - "2arezeLtTRTXTTOhWzqUUUKPeAeofh6tlTIfbYUxhgM=": "487889000000", - "2awXXZNhjCO5YgJXag4UtwSRG9fHVbMg3sCLQV2odlE=": "384615000000", - "2bCcht9XdZnLQmKoT31z-IBZlOkUBZstiQ82ct0rBn4=": "385505000000", - "2bZpIWK4Vi1WofVFREdBIHLLKnwHQgbZ3wzg0pmDbyY=": "498584000000", - "2b_aluTGVHFyzU-chUGqURM9x3TBmRNk-DoGzNWUqvY=": "367238000000", - "2bwXCTreJh9xStSQ7z4TAt-l5be3lfGg9gcFCPqU-Jg=": "384778000000", - "2cFLwbdetN9CpK8fBNJvWa3fcBEPdWwzQ1WgYw7btyE=": "381805000000", - "2cqRgXU2ofDHhdLma17zw44txmLsozJoLii9dSJPJ24=": "384615000000", - "2csV2NA5FUl_BzfG06XDyvt1ArURbVJwiT9oVrDsyk4=": "411085000000", - "2ddCOGdDTJsKnUGU1zfV7fodT9-m7KfSeQJcdfDSTSA=": "416710000000", - "2decU3DM3l0AZ30AyVRxD7Vn-dka0E8hmrH56y2T4eQ=": "643181000000", - "2dn48QJq_As_8tnOd0aoDueO5J6n5VPXObMlQmPba5g=": "422561000000", - "2e6HzsWCAsx2NdBJ298u7ob-07hKq8S4Wi9b99OQfJg=": "628290000000", - "2e6g8n8IbOwxF7eXzJFJ1gm3ZFPYND2zjwQu1rn6P4E=": "384237000000", - "2ehuQ3xw3X97JnT6UHx9KWzyeHI7RQKCHy0IKj7X_sk=": "385831000000", - "2f54a74WK5IuWnoGvAP0xvCtbZRhaqmGpJHKQRZBves=": "847318000000", - "2fOMnp935hZa1ereCvLehWkshGdua0CJkLy_zM57mMg=": "414764000000", - "2fgNQJWoi17M8X7fayKS-X7AutTM-24DBJIRW-xFpQE=": "460135000000", - "2g1y4AdNX20RNxY3NlrmM9q46fw-xALfIfu1ZxFGJnQ=": "4188555000000", - "2gBeZLBqJ5Vy-aYAhONoKCeR_DkYBaRGvQ_bm-15zp4=": "455367000000", - "2h9DZquyLoMeQlj4CdrsCVkd5z4HKEnkQwb0AHLe1Ds=": "769230000000", - "2hg4zyhwDO9GjBMcszc76yM4xg523sNGhzAc2g0J8_o=": "416731000000", - "2i6WQjqGJPO7SyLVbAYDxh9hA1jWbVSuNK3nu0AMf-c=": "382544000000", - "2iNC--2a2FAXpONFQMO632IZnwqsQjfI_vB-fMWz5Qo=": "378626000000", - "2iOiFQsmzmm2msmPYlnSJRihbx06aqKkA1beeUDAOJE=": "448575000000", - "2iZ57Sfm4zK9dGK4T0xY4tb-ai3FmexBBOY9KAwSZjQ=": "409074000000", - "2ismzo7D3zG0bFHhv2fhE6wwCNpIOFkNF4p0KVClvB4=": "384615000000", - "2iynvl_vpF2-zgYaGW0NGdNqUQtEv2JI0jfSCVlXoHs=": "3234369000000", - "2iz9cnB4pyEDtOM0Ii6N0PRjZuXnnXa2SfOdVTfHsas=": "384420000000", - "2j5NOzzWC_Vna9_K4do6Cxabacg_45fVtNs5I0T0hm0=": "385507000000", - "2j9RS9kjram4IUAxBwS7a6jmTOJfBEzeR0YTXCED31M=": "1090764000000", - "2jPonkUdFSy38e5ZOZo1-FMWFD13oJynBZ1MkR_WhxI=": "1000664000000", - "2jZxD1gZxdoOD-LRZxky_qeyLmJnL4TxdiFO8r2pFRc=": "1361677000000", - "2jpj2iYlonDlzXMtSP2IMsewu6z3StvKlPGdM0iCSmU=": "460892000000", - "2kNLz9QLRWd-8dXxonuuqpM0wqFHf_G45C2SyacNz-Q=": "458682000000", - "2kQgBPEFlAos7VNwwx4WWLXAkSA3bdpJFzM4m7VO9W0=": "377309000000", - "2kTvsqF27HcrW2N0i1MH6gGa3pJm3WDXjs4Ocxn9GCU=": "369372000000", - "2kUpvWZgwds8sAjwKEUdWwV20GNzki_bLKddyNp_xyg=": "396966000000", - "2knKGz3MQdCxQ0cJhtlDIz-eVl5mIuzHrc5xjVgvEFE=": "392672000000", - "2kxZg2E7cs3WyYmo4ItlTdP_KfEkqR0BCr7VzjoFi3g=": "383487000000", - "2lOaWYLVPSzJ6oJt01u6KEuOyXWm2YoFtD1yLsVNl50=": "468907000000", - "2lVC_qmmVZx1_aZIcVTJM3lOBoAb69TCw_tvcwkzSPk=": "3731974000000", - "2mAdtsETxBnl9EVbi4huq3X1tybe1IT1FIgFWiTTNZE=": "2315273000000", - "2mEtSGlfepUinlAh3PHgdHnRSJDKhHiWR8DvM28i6FM=": "1153846000000", - "2mgR6zqGQCcU3Ug8BxRBZm90VOwdZwp8JvcfK6IY1wM=": "416666000000", - "2n1UrbCoj3mhm6CQRQI6g9AZqC8j0iqp-7Opk7U2U9M=": "443644000000", - "2n2EaO74-h0G8pkPQ4tnxhWXj1oDHOgRzPS30nv65Tk=": "1967856000000", - "2nmAq00IfTR1bPiiW66Jv-GcCWg-W9EPrcTYwWw2-wM=": "2891573000000", - "2nrzujMdbzG9kDtiJWKz287w4qjdFoBewEUXrawyKZ8=": "385509000000", - "2oIwOX2XSyesxhRtfuj0LPou9KiheHfe0JSVrA3q-BE=": "3846153000000", - "2oMtJVFf7ebkhVs6cz8e81r5Z_pTeUscRX08TLpxttg=": "385505000000", - "2oQCi4ym0Vqp08-hZz_fdP032-EzkfGDya0AoOxIhGM=": "957198000000", - "2ogEk30mT-s2iHTkD7p9Zh87cE0W6AulMN4eFTGgTRU=": "412483000000", - "2ok8Jsc-lv0CJ-IwImRLqQef5Xw-Dgz4EUTr1nY2PEg=": "384615000000", - "2oltwK9DPJLvo-Zc8wlq93SVpZ63qqUwGNvH4AbhHVo=": "1363636000000", - "2pIOSKebeZsUBOjOyt_CnpeP9ZGm1YCJks44EUPTuQg=": "403850000000", - "2peshWmfMxhoLu2FF4dDTeqlRx27gUlXUjpBNuR9nc0=": "461538000000", - "2puBjQnkNHdKK2sWpvxVS4M5ZcaMfXHy2ohu9S7RQok=": "385510000000", - "2pyVSDztfTSLEb8Cur4AjD9_WHhqgm-nY5_robtNnE4=": "467432000000", - "2qpPsf5cijjLaB5ce8pBfGhlslootb78akr5K6dB0ds=": "1233257000000", - "2qqEJnWasD2vfYflXXVTGlEPRBH4jiLmbw8pTZean-0=": "759047000000", - "2qsDIDAHgM9WO1PRC5vq1a_H8tytjC1P4GceI4UeG9U=": "31249999000000", - "2rkD04_3yTR4F4xY8iHzrHqLgwItjktJ4P12BqSD610=": "845123000000", - "2rkczTYUgshgqke_5O4AJniBl-LGL7booY0KOt5-SOM=": "1152669000000", - "2rp2T-JUgUKZ_wZrCNuhtqAIyMCm46z2ytRdbpbNAac=": "461555000000", - "2rsCqkpJVBNa_FjYZPgBoqwnftFrhQUgrRBUGmGPjPA=": "17364085000000", - "2sIRwmaAIdlql_KZDeqXwT7qporgjh7t2XO0bdXum24=": "522197000000", - "2sSKtBGMTiih0D5eIxaiAl6rNbe_cOh0sAcHK8w1yZQ=": "1156096000000", - "2skb1Rp76_a4n1Lo0X3-mSBxmHrHALoAtlfuMg9MHug=": "457533000000", - "2t0OSm7axhiq2Upzo3ljR3dJRAhvIKBh_GfoGD4PJPo=": "771534000000", - "2t2WcEQu8-Eay1rWVmbIQlDKyJ13ETCyc5nZH_6dVMk=": "794931000000", - "2t6aHuYMle4fLWIV9M-9FzvlbKVu09UFNErlCTlnGis=": "4251645000000", - "2u95CvMrYnSnGnIKIU1sIbvu8tWI3cUS-vA7aXXzOPo=": "421678000000", - "2u9NvKbkO1AvJkRKwe781zvZRB5rCS6YGIHPIIDTIho=": "385506000000", - "2ub_Y5R8L29bn66xANxMAA665VlqBJVHPpLFPkzInn0=": "462839000000", - "2ucUgSV8HUImRN5SvTaFk08dzNTHh-U8gvLzRFUNkIQ=": "4747163000000", - "2ujt_McnTsl2n8Xr3ApR5C3DNylWY4MmdKaulLL6kkw=": "423370000000", - "2unFclhguw44IguzLX85Cq7Xsep9LIRNqTMPwBZd6rg=": "662231000000", - "2v639DbYfs6JxaXWuUcUr-Ua7pxSlNMP12UTqCjUIHk=": "1249999000000", - "2vA3s_CZQYbkiQ4fNPFjTyq1YzYInA_rHDZDhI0aZ7Q=": "4142350000000", - "2vYP9zohrcUqtkZgXXtrPauK4Vje1OkJ-xpzToDrYlc=": "5384760000000", - "2w49Nk9nN3mhKQqqZjex6U3JGxqMLLhCVw_LsCxG_eI=": "4220351000000", - "2w4rSJOKY9qMO6Tc34ySRYxyaml54AY6vudRZYacEsw=": "384615000000", - "2w6tu1sFHd7xU9OlfxO446Dx5J23DkJecT2nS3WVh-U=": "1863549000000", - "2w8WvesbiMGmceq_XncnS8w4pN22pA8ejO_fnimPsDE=": "10360975000000", - "2wThm4yNE_R4JraEW3qZBc0HA9HdPAmWM5z7TDBsSU0=": "390451000000", - "2wUPuBcaC9Yxix-jADmskRqvLIj5en8ePEqrnbWkERA=": "20320387000000", - "2witlyGa_Lwfpb1aNNqv-7J4L-nsS_01HLfQ3UAZz_Y=": "384078000000", - "2x03YsB_DuvOwiP-dSz7gvxDQ_dfZB4dikg3SNVs0U0=": "553876000000", - "2x8zq36zdm49JFFv0r9hJO3fv1CMStAHI1yin7xH4js=": "4984767000000", - "2xPC9kfHghwliQ0KPVR4Y_R_e4L0vI2Bva3ULoIhS5Q=": "2360091000000", - "2xS1SP3FqytEDprJZq8MKvz1ncsvFEEVQsSFZ-Mzg9U=": "2498909000000", - "2xSWFESuMx83d-SLJc5ZGcPw5kx8h4pRs7DIkyle_co=": "2538459000000", - "2xVgwg1IDDGkkJRHuLoWXeblnJ5WequqGOwSM9RSOlM=": "709122000000", - "2y05mAv4aTV7tktzkEz6MT2diKpzJLpA_AWknFBTwcQ=": "789241000000", - "2yQjkrWhxaT3ssHeSM0s_b6HzIxUwzihzM60ByT2-7M=": "899403000000", - "2yclZHsMfb5g65c-j4Ld780-656nAnXSXzZwTq9dOZA=": "1000380000000", - "2ydogZ0y8qmlFPU90U06aGbBgqacBQFw74HPyIrlpPA=": "768604000000", - "2yv7qyX5L54LB9SGW61ZydoicfwaxRuvPwuI257O5dg=": "471013000000", - "2zM-AR-znl4byuaP-3KR-mLfNttEo_KNSYLaUJpIDdo=": "416666000000", - "2zldThkuESzuHKm9Kf4B9i3177Xw4DW4u6KoqH_lNHA=": "381805000000", - "3-m2hknLbifSyb_gQnXm4baQPwgmI1Oj6WpYkUgZLEw=": "464236000000", - "30dow8AULOWn6TpSHzkLoRZZ4De82XI_bX1sxypDXPc=": "386167000000", - "31alTY3wDTsK7DbLinPwQ_3PYzGhKUa_DZvVMrrT2sY=": "1084654000000", - "31yrGa7071yLkIqnjMaKNfrqoOF331k5HpvrTiluwr0=": "419686000000", - "327U9SyhocZVtBcLi8Hrl10sRsIh3Wd2AHYVwKLIi2k=": "2272727000000", - "335aVdcXc2sx1KyJuj-m1rvRe5ttaygDFK2JAE1Dd6E=": "384615000000", - "335k4jVjGeYl9bvCswJhA6i5IlNNT-UioNwNaqAJG_I=": "2421851000000", - "33bOpjQd2nuMmmSOdvqmhiycLJpPrbUufHTrIGMWgPs=": "1625602000000", - "34DNe_1Gg5YsIdMhnHRJ2nKjcB23v9P17IPB3b-kYGA=": "2088725000000", - "34ZaY5oey11asM2Eb3kQIvZlXVmj0HdlsIIvhiosPb4=": "464615000000", - "34fgu3mNp2NXxX6vnZocvuWf9JSZhx8Ogaqft4lpn3g=": "2668204000000", - "34yYKVvcrdkNThvIGCVIMrGInRyGGFkGj-XEfVrgQSQ=": "448384000000", - "35l4OPBqzKuuvUdsArbrF34_uLEOeZ0MD3zNF0SdtSk=": "18806282000000", - "35l7oKxFsJ89boyrmWuf30YnbipusxcrdUTNVTscLUo=": "4166738000000", - "36Wm8M5bUE07ekumAOzzf8Rj2xmgFpFfuBGQ9iYTMtI=": "2350507000000", - "36afBD4MmSeSwF_IZCYGDKkGiVXdcgu2yf1z_bSR1NI=": "575897000000", - "36e7fH35wHn3FbDKEYKXm8E_C1xoNHFF_cHYU5qDjOA=": "1134053000000", - "37WMxyCEJNZaqVFkVnLJCapINE_5f-KI8K3v6-vNr5w=": "510407000000", - "37khMO9bLTbCyyx1ivE681uHBzvpJDsVLYOjEDZvOwo=": "412370000000", - "37xHJNpDNYbouUNgiPbQlyoFCds5w_K9aR89ytl2KdM=": "420060000000", - "38j8pH3AnyCtvpeeSELJ6PbNr0SGsMqgcfBWe4ao7wE=": "469837000000", - "392ahy1gUwI7cdAjWzvSZaWEF11XqoGYMzYY1b-LaGU=": "411085000000", - "39EUuNR2DkBy2RMJF_AynMZ0lFWtPs-KejyLiwztTNM=": "2366658000000", - "39irny7kSo-HroE0bC8QJV3hWbKreikRkxxwaQ5G9nQ=": "462251000000", - "3APafQEU8rbeRXUHD6G70GdooZEpY7KqNuufT1mVrn8=": "823132000000", - "3AwiNPzwmJwtA0UTSvsv7fmJkun-FHlD2W0zR0_OcNA=": "3796319000000", - "3B1eLX00sadJuuu2rMKy9uJdJD9tOne0Y1hRqm96Tp4=": "675093000000", - "3B8t6tLhU8oasNiRTmuXHmLyavquhwyydRvOcqQfVFU=": "454545000000", - "3BAx6N_wwE8YL0Qk7-PbFdtNJztBUszbWxgZpV_lBog=": "1156520000000", - "3CLjUgVhSru8VNOIVaNvsXv60ZEILJeU0CR1f80eL2k=": "3856992000000", - "3CR7PiPWzwtEXD5T85pUKdSPD5p1cNBhRTxixcl1KU4=": "1147463000000", - "3CVE2XHRd5tF-A1dtEHqIazbvbnmBBuBdfz8EhHn3DI=": "413478000000", - "3ClkQodHVhT4QAU9hGVZvZz2YFL5Pti0V_r4hzSMfJg=": "384615000000", - "3CpM5yflPUH6FL-DspyhdIC_ZEZ3AuIVuKMRweAxBg8=": "384615000000", - "3DHMufF5oIFoquL2j8Hu_BH9dxRxiOSJAtvLJDDfnLI=": "383275000000", - "3EWrHy0Z8_ZMjcFudhngapzhtTo0tHJGqgO0xF5BwVQ=": "453417000000", - "3F7jWd5Rbf4uBgi-eiSevjdGGRa907Xr0az5zRWwvZw=": "2158227000000", - "3FRPCYcdV8WnN_9EUAlgjkTSJeZc6_U5pxevKh4DLRo=": "417629000000", - "3GGaVYfvvpJD90UCmFeyNbcQn5KvtJtsm1hZUcIu2IE=": "845507000000", - "3GNl7Y2zaYTVWwT0AJXGsd7ETmFyqpqFQE_0l1KKKS8=": "1423076000000", - "3GYnV2byz0nIGKs2_P4pJ6_BXPJkVpsy7qyxqRsVFxQ=": "642211000000", - "3GgQOuRKjIti4T-mHokrrbtHk7D-mTXD4vD4Z3pZCoA=": "456016000000", - "3HUAiFq9m55CSf_05GdLmMtGTrWnK47_jdfQ7ipWa3o=": "7027878000000", - "3HVWjrDeWvEqveW1BMjkjPF_9AXAepmTZZRFf9uawOQ=": "384937000000", - "3I51cKFjgJgUPBNrwWvtF7kxJFGzrnUj_Hp88k7JffU=": "357724000000", - "3IWW1Nyrb6X5hbFmxiCDAd8KrZK3ERicVbL7yrTkPEk=": "385190000000", - "3J-Wp1PJhXug2bhn4pSNAhejTR3CAF824E4p8RV7r0k=": "501408000000", - "3JAZ6R6Q_64eH3QfzC0ivkBAwf6yihn6VoDsLv3bKGU=": "390743000000", - "3JCwfKAozMLUA7Sj2OWBTDrY_88-ip66nxVsZbABP9Q=": "379203000000", - "3JJ1OiBN-D2fWnzD1K-AZ4bB_hsghoX_8j2WWx24Mzg=": "415824000000", - "3Jdb8DWPy2eSmjZnZaKITIjQKEnD6Wl_l6Qtl7Nh0ZM=": "416666000000", - "3JfxxeXKeyQOBgxB6cLgZqQW3DH4e6Kcw5hTBXjhxWg=": "2535371000000", - "3JzvdLISv3D0XPDYTrWmURxh6dQFU4EE1idawOnE4GE=": "4090909000000", - "3K-zBRFp3ZFd357EqbTSC4baWN_xFWRjGszfJ5UftNU=": "456480000000", - "3KZ4QMuTY5mAmFgAoCfFhK3ihflsNz1dY77VMCUYCeg=": "4086177000000", - "3L8GS6RKLdHLIOmtYO9qlc5eJP25lrPq4iKqa1fmGBw=": "385232000000", - "3LEIOwoTHOyam0qi4LSUQdX6-LFk3tIDuxyJDvnqD_Y=": "384615000000", - "3LOAg2Q-Oy_01o4sCnY2EoTG1LSk_IB1qXVWg8Vf_70=": "492028000000", - "3LWmTsKg0BXZwXl8dA-Fjfj4lXlA8LDNMS-jKJUnkpE=": "457943000000", - "3M1HMATeFvYa0oxYBlPWcdIooYRiWn_JTamU-hlQIfU=": "459886000000", - "3MCLrQvBnKsoFyGZGZWxiZXgfIM2mnrJMZC3T8ijLlQ=": "576333000000", - "3MO-olxQplF8EUXXkYFqSPbUFmpjWOklKRvnZr5mTUE=": "1259432000000", - "3MYYlDZlaIDDcJ8h3kxUa2Y-o39lmfpwGjQD1OrgSXY=": "19230769000000", - "3MZUv4sWoDl25sfJs2AlrIK6Zp__92_sJ5-b6IWOZUs=": "459730000000", - "3NQw0b02oQ1uY1CUPfk_zuG9UvRgJxhjorcnnZjDnu4=": "419238000000", - "3Ncj9ld5S1aJJxRBn8P33O5y5TKP88OC0VmyOym64cA=": "495551000000", - "3NlCCvttkZxu9n1vuNxaM76bo4ULGEujZI2OHygEbic=": "829079000000", - "3No77ny229KVRl58jXSU33Jfqv62elo0V6t5DAb8jKE=": "385021000000", - "3OSnumjxiTcqywBokMkqUFAxB9nopsHJ8K9oeVTRNfc=": "511240000000", - "3OWFh7WyD2DNh7licXfl47GyWdX04S5qJZpUJvat93M=": "384615000000", - "3OnkWk0LT38i2sx61NOR3rVQgI5YOdNni_JDH0O2rsY=": "749999000000", - "3OqQiyNsaS1dbUOIZiiE4K_WQjEIDk9p4w7pTZNkxWo=": "1102144000000", - "3PLV0_YYCm8eq2G1yi0myJi1CbR9bLyY7kntatcqi7Y=": "384410000000", - "3PX5Teacth2iRcADFOudKnmQaV0CGfycKa9PA8IKmw8=": "384615000000", - "3PYtQNIzWIjeJ03jW5Wkns0yOtwONUWju6zd9gFigvc=": "925947000000", - "3PxX5TVckFralUfy5DuQ7fhQgyk9pB97BEDkZKEzMeA=": "499877000000", - "3Q4F4XE362oLrDkafC6x7b94VG-alWrUnmWvPF0Q0b8=": "378532000000", - "3QKAj7_IL8V6yWjQ-_AL_7XoAIwGYnw7-EpTM96wbKs=": "568497000000", - "3QSTG_KFVD7MARmI4lUnSgFFM7NukplVs4qQCZuYWHw=": "776725000000", - "3R0G-4T2O6XgzQBVMSdGsHxCO5qOBv15uLzX5OFm-Jo=": "384615000000", - "3RDVbusG1x3qLtsYpTngBvbP9fIFnJpmMrWKHB1bqZ0=": "383971000000", - "3RFJaf_WVAozKls_jn_PteYFBkb4gSaY9RbuwBSgGMQ=": "458759000000", - "3RdqCqOwXnyxGO17WrKB3wgUDI0BPEdMD-4eokGVSkY=": "1767181000000", - "3SEBhBnISK7n7J4NZR7pRL5B1l2XWPyfyHHDBv_whqU=": "384615000000", - "3SGCzF--JzGRRo7h1zofVEzwD49paBBh7po7hLbc8SM=": "423370000000", - "3TgVr5JlLTg11x3m889rETgzC-Eala7GdwUlbMYgUmk=": "379260000000", - "3TkWf6j9jlzUanz9i7x8ygLxP1EhRNzI1y9i24AtH14=": "3076923000000", - "3TwS4ohGXXy0qOqm0D4v7luFDNcTdjDJsIo0Pn2ar9w=": "384615000000", - "3V-XC21sVA50UnWJARLkjyfPJimZi3d5g8QIa7LcRjM=": "1252888000000", - "3VDtZq3viFpA-L-CdfiQx2zcjyB719n9-V0CSgioD9g=": "450857000000", - "3VG1e1q_H37THxUn-uAH2bM9SZRBp8vT9As3t1er6Gs=": "384615000000", - "3VLthC-mrQVCncTgab14woOXwMWW1eDM6ObxMhWX1HA=": "809747000000", - "3VRwOQc2Mm6-pZWhL30Mshn5IoIp5FgOsZp8mCCHTTc=": "462146000000", - "3VWzxFGyB7vOCTco7ihUuclo1QdQAK9Y2fwbpCkHgu8=": "391600000000", - "3VhLwI-bfU0_8nN4-JTc2xVSMa1MWUp1Chza-bgFZyE=": "940062000000", - "3W9HmhbzYd9tHTtCStoOysJJeXH4JZ5sz3oxYIF_DR8=": "1153826000000", - "3WXuFEGWITHpE0AZbJ8OHhBun4H24zOkQaAKFbHAwz8=": "383550000000", - "3WY8jczGNG1m0LXxXARJBtx6ci3h9CQSgh2DzKoLb5A=": "385101000000", - "3WZ_38ku98IyT3iRp16baKEh1N-cbGZKk50eMamJWMY=": "5167237000000", - "3WijePMEixlPuAgSS7phWv0xfeQCr_coUX9LDOPlPOI=": "6249999000000", - "3XP7EgWtfc9OBbrbpKULcHl1mUVfdE119UaKUjTiWXY=": "385587000000", - "3XYOQreyzPKMxIjFI46DqrUcaSKksYU25gujL9K6UZ4=": "849918000000", - "3XeV_jdQRsM9sHKEwRXWeB46MvCGRXMa2poSEz1MFls=": "385353000000", - "3YAVYisTH5vUzthnGBjwvRWijNePAvI8X25OOALFqUc=": "405574000000", - "3Ynh7uenBdxzAUTl8_YcL9c5udp7ebhs4yZlFdWgSe0=": "411085000000", - "3YxUPNGdBjrAi0BSz7BNFpwrdyTW6mXZQlMkpOr-0r0=": "383968000000", - "3ZOQbNCM4sWsbs9oJIH5ZCpkdWzdTlWC4OmgG9VkS8g=": "1927643000000", - "3ZUHMmA-IIc73DUsT_gDhuyINDg0sb37XMjYkg9M-k4=": "447147000000", - "3ZizcyqsHO50S_HfsGhYOxXZmJAs9RZoQsKWzCxOvQI=": "777285000000", - "3ZkFzd1N1MHTtcNa59XpixTonJEj46L7SHQNxCOampU=": "379344000000", - "3ZsyP8a1wrQoYEP_mL4jyCY0XOpkDTUCxHCVp3L-zvk=": "1740450000000", - "3_5kkeRf7excUqE903Fc9vPj5_Of8CsJw6D2y-4XET8=": "3329213000000", - "3_BMvEyV4jK-W6bsAqFpuXuEEJYivjSroe6KGuy9HEU=": "812162000000", - "3_M9VnUcaUt2jrlgz0jNyjZD6NtkKcM1OVWsA5VzGNY=": "464104000000", - "3_SxyPYlNKcIFtg-iY_wncQZDNtvP5bHU4hSgFl6dXk=": "1923076000000", - "3_fvKzF5uPcudV09gVEOZnhWR15ZnpFe-1RefeVz38o=": "3969884000000", - "3_tBpCQ3L-AUv-X1LYnKw3vf6r0INhdoK2gUyRgIayk=": "383910000000", - "3_z0f0G14e0IuYVxZJTIDgd03DN8YNALXoqAp8ewzyA=": "2188411000000", - "3a58GaMavFxhij51SQuXdjEjEy0ep1xmgKDrXBUSbLI=": "499999000000", - "3a9jkIeJSHNnXiqWDy43Ex4fL52oL2FmONuPwSopP70=": "833801000000", - "3a_LGXiWuU1lT4nSTe0nl_YLjHUx3byTayVSbQ6WN5w=": "832188000000", - "3aldA117o_58oT4hMR3qR-XISRbqimaLFpkjlTJg5n8=": "2079648000000", - "3bF5OEqPi4j9t28dXV6k984pHLqM4036ZBxUZpE2HjQ=": "406308000000", - "3bKiWVoPS-rERTJMbrQcwB_7NTN6kg1VJZGdFOgRXrM=": "1092612000000", - "3bYn6FhKZNmhyxalu7o_z8fKPzHCpBB_kBlLoAIhhYc=": "467430000000", - "3bz5amXJx3GG4nJIo7zRVPwE8p7kI7WOD7qmTFT-qpc=": "417100000000", - "3cPvLve2mDMCfTC_3f-5VI5Ob1H5nf6ZhziTN6LtiV0=": "667307000000", - "3cYInVFdzx8lN_sobCGZien6gFrBwcaFufThANFqRaI=": "382394000000", - "3ciHZgNLwnv7uxoidpzrplyooWHnlvXAjsZb6z_Ix8M=": "490580000000", - "3d3qUUp0s-K5X1U_p5s7K11dO-d-FKIRZPyO4RZdbP8=": "2535436000000", - "3dBKO97oY_Q2ahyRtPwaxUx5CvQG8rmkMawcwJu5Kbk=": "407808000000", - "3dRakwa7as29dk_uiDA9Jvknw1SPy66DrTeamS5qSxo=": "501334000000", - "3dUKdcKcR2GbxdeRLbIfKt2C0PYV9RC0s9-K3_pRjlA=": "385211000000", - "3dV2nlywUlOzdqDyYHyoksmU-27opn6aNgCDO-Vz31c=": "385409000000", - "3dbBC2gyp528rkZVLTIZSbRqMCPxP3Mymm7zev9MxbY=": "378310000000", - "3dbSZ3a3OfYhQLOL9x3Z95-OnWDxwIYf3kwnPG-pgbI=": "384615000000", - "3de8ZWLnRfc64SVKQk9Ozt6AMKhacguEO3D6Qvu8MEw=": "769230000000", - "3dfcjB8SlH51XSp4lbicH6M8CXMckUA0uZ5X8788u0k=": "642211000000", - "3dvNHDMUnppFx6Xg4iiXAxOJjZcrlOoLYNXnPS0Tzzs=": "337729000000", - "3f-YJI1fCr0WtUBIjQbhOu8xNip2zykECm-8F7xiPZc=": "382394000000", - "3fHTSK_Q8kZxucGBNZ2i5s2-SPe9u9-0qPer2b8Oxow=": "831279000000", - "3fZlVun8POMdOrYdpeXM6KzFrJqlJvo1FCj5N-BbqqA=": "1407437000000", - "3feNisDDA4bJBk3R0xyOo4er7KpQpRRiB1czyS3fGUQ=": "892303000000", - "3fnQBLOJDgbklLXUH9JxyIiIs_hZguVVw8j7u-NiFwA=": "384615000000", - "3ftQJ7uLCT4b-zo-28Ezj0ePpMeES0aHdJCPxUVnFJU=": "825729000000", - "3gJcUJW4ijPdTwmmicY6bk34qpHmf5y6_wMyA5iHjQo=": "7018037000000", - "3gN0SiYN7MhkxJmtIRFDyNlSxj2MtnrCOB46Zikh5i0=": "384615000000", - "3gWhs8a44njYm75UbW9xX1y7lTCkDWcKvxhN83eIF-Y=": "381805000000", - "3gpw_bXV824F23La6K5FIQRNcRXqbINTCBaC3gENvXc=": "377818000000", - "3gve4sk90vNC2oAowFgYwqSPzXeP3CIpJHO1mjJzW7Q=": "457058000000", - "3hNE5hHNJy7FHvUSrXRxzQazqpjQypbjdiASBgNQgFQ=": "499999000000", - "3hWWp9nHpjmrMHXxxz7rUAjALO-X7kPL8qhlHWXvBOA=": "382479000000", - "3i3NNuRl8vT-huxbtiBpBRAUKf0rkboaTP8V3RPmoqE=": "884603000000", - "3iZ0DCRPuuzjithkigpY75vssN06KfZjFDojwAqa7So=": "6538461000000", - "3iqBpu-AKnnxu5Ge0W1dds0fXaKmnTVU12hTm4luLUE=": "41666666000000", - "3iroGObmOl-VNmQa8U60tz2bPRWNODKmojH-TGtXkQU=": "1001199000000", - "3jQt7yUUWJoTzZX4-MEyqj58HB-udj6Fex7JBzu5ask=": "397332000000", - "3k3VNlsCU7XBY2nkCemL-TiORZMqIxG_lBgdU8aoVps=": "384859000000", - "3k5-Wiac-K1PeErghfN1jq-FjUAY6aQZyR6BKT2YEBU=": "413004000000", - "3k6s7iy4wvEJkXu3QEd-98UUUHUjHc1S72aAi41siJ8=": "565274000000", - "3k7t6NI2ytHYw0vCNgdJ33rcytuuc26sGuJD9sslO7I=": "417532000000", - "3kEYE7OOpeTzIecTappjvscnt7oX9ZovAxUlE9lwdgc=": "385400000000", - "3kbQkOY5adB0UdiH59JBeSSaN2ywA7xtMgQejgxqMY8=": "1153846000000", - "3kcV_mO6lY9WQ3OWNRufM9_Fs9SYQ9oLEFv9AQAhAfQ=": "385211000000", - "3kgmjUt9VsDpfPKFBknYKmmYgJLTnQxiM4jX1wRSvkc=": "491141000000", - "3khindHMak8ZSce0ndy4mqkqBWgGzD_XoWvMvAY-vQo=": "1923076000000", - "3komdGVlztEM436og_84nde0qBtLKrGDOCM0GV3juUo=": "384615000000", - "3kutrrYMkaz5o1iAaAO7Mp16dC806dQ02iT2Q576yeQ=": "455433000000", - "3lNsamJvg-qqt9za4ub2Nguww9lIJ4B9gii-flHG8AQ=": "1588569000000", - "3lbBGwc4Ay5-4JnNxI05A7zok6lXFw34vYcBJwBLT_c=": "460854000000", - "3lquaglzViBpUj3YKUUzR5fppruTygB3rfWhYKR3DBg=": "417630000000", - "3m2FD6c_HVRnBSpv8gMIwysgSwiEELh994hzTGh0tzc=": "384615000000", - "3m4hAsD2W02O0f32y4q-g4nx41cEuFdIl1HwZVRAMV4=": "384615000000", - "3mYnt5c_fFwf5awfuOgoRi9efIpYtWKhqq-Z3Oeytbo=": "3851914000000", - "3n33P65axc1Kxh0Lp-9ZFDwEBbchFyOuhdsSn3Mu1IU=": "1507392000000", - "3nNOmPNcuw0V2jxV4gUYZ7d93zcltc1TQVLpL0Zx4T0=": "1999999000000", - "3nVmCHXDK6lSAiSJLplPspJW3ahYWvTDl6WAR6AFb98=": "382899000000", - "3nxovtcfd3qlDZ79leNR8ywlHbel4MTj8FZcn75mLwY=": "381805000000", - "3oLrHtVVq4ULDUwBClm8TsxKKAM-b0xURYAk5o3pRHE=": "2073271000000", - "3oQ6QvwrM6smnlHkg3py94LxoKYqT6G7DWHxK5KmaNs=": "765153000000", - "3oe_Vg7yoUC8X8X6O5sX7YJQPEmsIxxLOzWBDaDkFIY=": "378404000000", - "3pYmDnmXSgx8VNpyq0eX7B5khHo2woKfHzwMbhZIjrw=": "1378448000000", - "3pjxHyy4T2OpIaTLUXXVuGky-xCxDI2qgIoMLtY2P1M=": "769230000000", - "3poVHaz8_rA0HjO57oT1GfFWs0FZY8m-_dAl6XSoTVY=": "769230000000", - "3proATcv-bVa5dnLuqaOrVCQCTInUcadZNEv4k5hjjE=": "1146117000000", - "3q8BiwNrRK3ihT5yP32pCNOLJ1i4QNZUAayhIsk-ZXs=": "501408000000", - "3qPDV75aS8SsS5_Z8UQHSXnwkBVOVjzTAMxFXTW4F58=": "382394000000", - "3qa3wc6pwiCJjZ693HE7S0OU0RvuDhMLqJWzwrripIM=": "8720702000000", - "3qdkXz4qUL3NT5IbcIESduc3_S3Lsk4T8A9mzYCeofY=": "459271000000", - "3qft18lyMiNL-TrSVxzBU3NcTz2QLbbkbBrrldM6rYk=": "866201000000", - "3rbKyryg6P8iBQocUGkNNK3vkNx6FtC74iJ5t_BV9yA=": "383965000000", - "3s2pulmXF3VxSTY6cYNHlPxBHbdl7f0IW1fg5pb2GZI=": "384615000000", - "3s7kJmrbD9gKU4N9aFLjiU0O-WUSrBPKZdEbdf3KiiA=": "1590909000000", - "3t6Krg-YkiYMuCJvEzdrIpN3eFWAlz2_a3xlITkCnlA=": "1600025000000", - "3tIQtSzS6HLOVdr7e56n8yNUEVMw-tIxNh6lKMNJMQ8=": "384615000000", - "3tMEwbkCQ1NMftUYggcnNTw786zFzH1GDbSIQSjOJVM=": "411085000000", - "3u-jFHirzu4JEWS1QiMW-K5w6t7G_rynJ2QQ_TJcHMU=": "846741000000", - "3u4cGgckiyDj3WSKx0cnE21NTjLOkybTCvCDD9JF7j4=": "455600000000", - "3uDGPZRRX5a-G7U-mnlAb3euC-KRCviPOkVm7FaB5dQ=": "640707000000", - "3uUC7bC18slOHyDyCD2i7X7VeJAxEjAmiYBP78fFMpE=": "826147000000", - "3uduUwnrW_LCs_lVrJ2LxDGFE_Fq32AoTh-1-_hFlbk=": "9102783000000", - "3ui5oH4LbzVH-3sZ-wohgz7ivV25TbTkUg14hfTmYtM=": "1365055000000", - "3ukQ1I2OlzIcLEFcaRb-fpr42CWvE4-HLN8DI5iEsPY=": "460784000000", - "3ul5-6TbAkoKfPpmDtizshaZswv7TMg2zsCienGdgdU=": "423370000000", - "3vSsobS9cANM09zufd86bHyw_PIQk1pqrL760RDzax8=": "1265548000000", - "3vYs0WSyhLQ6ZhWr2rXu260vxZT_l-tc5pIMEL-GHfo=": "385044000000", - "3vg3WaqRCi5OKFeVLH9pnHpPQCOnj-LVwrtfYrxwpaw=": "455059000000", - "3vub50Mu5hmBmX9TfCfWsXM9EW9SakgIv7Xt3dMRkkQ=": "384169000000", - "3vzDKXQKwM4z9Ps2pcjQ85h9bdN5r2-3NOocx8O7Fw4=": "384615000000", - "3wT0BOtisTwyqqd-vS07Mt4lx-f4fnbfbuhEniS5GbE=": "464704000000", - "3wTPt2Ypn_T6_GO5tUOXZr0lktQE-sjWzNLiC1SPfZU=": "462146000000", - "3yNldiM0YaghWHomfJ-PRfaV6mn3QE689q9-4zjA_Kg=": "930288000000", - "3yS8SPWk-rIYHxnHC4jDAfnriNn7n28lZD_wS3QEPus=": "912779000000", - "3yYUyRp2v3DsTHFsTvDGxTLJYBx21EkaeUw5rZJK1wk=": "385505000000", - "3yoc0UwkQZt7u53npFzTLi8cTNjrwOOyE7XXGbWMpEw=": "1155332000000", - "3z1y3drV9jKlPm6GOVwcn9EuJhfuiOYk3gHv58yYfts=": "384615000000", - "3zME1E51obBS_HmFLuCIn2q6F1urYkbxhLnk_-rvKqA=": "901165000000", - "3z_VE3hkBAmdfz3b2R7-tg1CodTL9ly0g_OAEUNsbRM=": "1003913000000", - "3zkZitmqeqUmhchM0sLvdZJ5M8YMxV-O4vxT78TFyLU=": "2556552000000", - "3zwvdgW3rDZH3GtuM--GW9Cwzm63hts1CdhdK3GoVeo=": "2499999000000", - "4-8H0MyWg7fVhhzIEoJvnRUWRVfRxi2rwS3SHtg3r3k=": "463042000000", - "4-chrXR7o2bUlUEBZfzwqav0R88TV6Cw739ywEpZf9I=": "10137101000000", - "4-teKLs7f8fcqNb-biiJy1F-Bj6sV1otCknoYtp3qpo=": "2293721000000", - "40X5ypcPpco9cz04q6Lf_aj4S0-GYGpUAqV6MevEFlg=": "6653846000000", - "40kmC8ldoPXicH6NYKi85bOCwSMni3KrCydwY7slGa8=": "381635000000", - "40ngmBJPsVCeh1UnTOIg2gpn2ikaEqurjnAnV49f0fU=": "393573000000", - "41GidyxKo3L1I0jdrpvoBcVNfgC9VlndaU4SkMt5ofw=": "459016000000", - "41N1ZV4gP2nK2mqVNU_acQvfnplQSdNpuPZWKfPOlXA=": "451339000000", - "41b8h6IkmflFo3f8BW-7Hrr42arpyDoBHGQQfDuNQJA=": "2283997000000", - "41mLBLeE3oZHhJZbrVW3BLa6a9VvNeVmfur_oH8S3xI=": "1153846000000", - "41vMuZaFFohvw272pDzFL1QkhvTTJbUuTKWIo_EQpPQ=": "462823000000", - "426GjgcvJagQJmFQ7a6se_xO5Fk-zAjAfMZw5QvwuI8=": "541666000000", - "42cNIw9LgyW2g4NTh5Tv61yA1dLafusmgTWC5LKvvjo=": "1947153000000", - "42fSVWZIEhAUeKFDUeFYuxC_XpiOO9mrdI2NGnPf2NY=": "1272135000000", - "43EEHlXvw5-fP9Ghk89xAtcG8xitrU9oKyudEvARlg8=": "380150000000", - "43Kxj6Ww0e5gJKT-O1E7DNi5yOfw6x2wNzf8hHflTm4=": "2053662000000", - "43ZZwuYJNVYyk0ZzLU9LBUzz9mr6puVPyoaStYGWSZo=": "452328000000", - "43hg2q40LxjSHhyz3MOy-jF9bi7FA-Gh1_EfxcZIKbw=": "1409754000000", - "43udv3Dau3F5hwDVUdlxh757_tmR1YTxUUupF2IcB54=": "453403000000", - "44Y5f8rSe-BosYZnnwVZqYjz9rxjw_FxOAcP80aYfTc=": "419856000000", - "44iTxEkk1Mx467MniMos9PN8UD3R4JyLe-LQ041cFWY=": "468609000000", - "44s6nva-N1dtomXQdJlOXRuaxBOttrlL7mlsTZcRe64=": "1666666000000", - "457LIsJbM9UUf7WS7zRfhg0FSK6Lj9Jm1HMv77b_5z4=": "1134931000000", - "45RjzAE03fMnFc9TWw4FHGi_ea7HivgWGGcUvSwCNM0=": "2344092000000", - "45V0YHyr-Swk24GgZdSLf6BrIzxNVuPqf2d9Aui0_XU=": "1361092000000", - "45tMidcAW_dl8GnPbKOoBHIHHxyMzPPWrkYO6u_q6Tg=": "385510000000", - "46JDjprAqyBFRF9dff1zNuPaw4GwaTrZkpcL4-MR-0s=": "7692307000000", - "46g6pcQOIHBkk0hbkUUM15jHM5JI0DrLUdsGQuX6TGs=": "1351520000000", - "46nuzWhFm-rdd4OouomMsgRdsnbZ4MWbDgPhtYf-zvQ=": "1153846000000", - "47ERxkkfQ4ML-MrVP5P1OWw-TQU3yqCDp6386eZGsXY=": "2310726000000", - "47zBO6GXgSld-rFczPkQzm4lYb-gWh1yIA5epoPLoyI=": "423370000000", - "48FK6HDZzRpWQfZfn1FQw-cgfQve-sjPqXT961OudqU=": "468903000000", - "48VnIead6saV41ESwfHS5nNrmFFvjoUiq9Crsw3eGu0=": "769230000000", - "48iZvnfvtxibZkfYTle2Tvtl2kJanFDvL5GyqIkGNvw=": "411085000000", - "498C3whB62vtCSG0jeZOgoxRMeDlw1_IP18DnR9kEEc=": "455600000000", - "49hK2XhN5KOvOh9-8gX9EJrn6Y3DaUc0onG-rRxQagE=": "660840000000", - "4AKRLbeFx2-iPdAGCwbmWD8gQiixaRkJDBkauar6hb0=": "385506000000", - "4AKTBT-8NtxgNJN5lrrm7T8PdxLDXkrLBQxyr4VhiRI=": "845123000000", - "4ATVBcmmKOCUk_L2AGvXKZr7MP0lgteKpC4yo_6To5Y=": "492802000000", - "4Ar-7s1LlIhxOjhSmo4a-uW_2g1dCSX6ptWM4iqn_YE=": "836307000000", - "4Ay5iJThjubdiXEInWqEy6_SqxwDTv9veZER2Vhth18=": "833321000000", - "4B1C-Zp4nj_G_hcVMrcmTRwPWYxd6NZTjGcJou1MH_s=": "3657595000000", - "4BAPjxdjzCs9yamXSMFRVDOcHcRxEV-tuqEXh8sYJig=": "384615000000", - "4BIRthuEfetaFW_7Hrm74I2HshUeZwWOK3-y7n9sGZQ=": "1999999000000", - "4BIVA9WxUH7_X89VXu7SamH4HgLuxTsWzNIvnTyThVQ=": "769230000000", - "4C0LmLaDb0ROo3o8XGx9zy2M9YSb81VCAASSqcCtTxg=": "415672000000", - "4C3u7pbIzBGr5eZmH3Llo-bIdWrOhRBIQYjTLGnD5PE=": "926273000000", - "4DeCHlI5jZiSukXGXXxH5zhY3YEai1kMEc9Y0MUTirg=": "2088168000000", - "4E04iLnxogaGV0Ec_TmCoD7WvXvNNJwuYSREscg2TBo=": "576923000000", - "4EG-Q6Wd24rKOGoINiTylfx63qUYTljPEssDed6JKp4=": "3855927000000", - "4F9n50cZt7JaBbMDNSsYnmaRyOf-z3nUOryevulTpDQ=": "826077000000", - "4FQyuUBGL-SN-iKog88vdLXwbAS-o8CS6VFWCxyP9ZA=": "4082823000000", - "4FZ_rs7J2qJ8fCrf-zkrmxKufmP2ZH1v-VMA2oO_vY0=": "407469000000", - "4GOJlRJWY4vxGIKXZkywqoUWZQvGO81w8xkaJx07Dmg=": "458618000000", - "4GRKowDRK-IKOOnpZvfWDddLkSUw1wg9U3DDDLhjR9s=": "909040000000", - "4GUgCZBmwvpJP-cGblVX07AX7EkfYIAmgiEWYeyCnk0=": "384615000000", - "4Ga_8GGSQzUfUJJ9a7CsIERorH3U6YJFGPXoisrD4Ug=": "3846153000000", - "4HDNSrvSuVZqhirioeK9MBMj7O2GJGZ5qjaYU5p-lsM=": "390482000000", - "4HRM6xriI9i5JQrWG6QLfbXiE0Inya6hYvC-l4myzm8=": "3855075000000", - "4HWqDpB3XLeiXtO0cZaCRKxz8zh8TC1bmTDg3DO16Vg=": "3500551000000", - "4Hd0uHAso1KTsXLzmzM_f1tNouxLgN3vB_RgfmcdMsw=": "2499999000000", - "4HdMU60rgXNqwY3rcIXFWQ4wybyapjTatVMiGprHja8=": "454468000000", - "4HqlFcDemiusLhWj7IGfykq4B1xz_ED9YoRyZyH03iY=": "385506000000", - "4HruFDPrVlQJSbFGLa8yyLPF2GwYd7r5fW1ZAugFOPY=": "416797000000", - "4IIe9ARv7Ozhpl11xF_GUh99ErofTpdAQJDcs1mKcyg=": "412701000000", - "4IMRn0vothqYDxxBJG8zol7E2SmB-N746K7NTHRouDk=": "384615000000", - "4IPYTiA5hAGZbkJGrOjZkVvbO3OaPfba2JlsqbUW8FU=": "1999970000000", - "4IYRwWLEMzCFViZPlJ4EtN7ey1VU5pCg081txlKhnH0=": "384759000000", - "4IhQFWGAKSWLhixxJoTH-mRjRNVr_aAn6lPFY5G_HFg=": "382195000000", - "4JGLPJGoOZL6kNCwSAn_prVJhphIfRKnczo6CPvhXpE=": "464838000000", - "4JopTioHhl8m2Kj3604pi-8oao7EuApcb8Qq6FCb5ik=": "452326000000", - "4K5JOg9oUO71utOqLFkbtQ4Qaa8SbqrjI0IxaGHKvws=": "461020000000", - "4KAhbCBPCDZqIFmTBEBBSiIkwM-yf-Usxqx5YOm6DOk=": "384615000000", - "4KB01ke7TFV876LSdfkBm74QYPtjYTybhWvfQePdVcc=": "1068628000000", - "4KNuAdcHveN8oA0limhX2mgDvhNlm3Jv5czM0HIdgPM=": "2083333000000", - "4KcxG29Yk-VYXpGKfeMM3En3_qOvioGivw14-LCVoMc=": "1156520000000", - "4L0Cc-pk6mDkx_6zqHHmOpqhLM1tyZX3egVvBDzNKVg=": "416672000000", - "4LTBjyTymsMbh7CNQuo2m5WoLhqdcpZyZ76_Ah5DqzQ=": "417637000000", - "4LcQJXbJEIEk7Y3sYCPt1IwTl3Z2YLtCqKu5OKeXz-E=": "416670000000", - "4MKeXnYwMKrsMGAPi-NJv27tk7sHRNhYv5rPCi_1NGg=": "1593881000000", - "4MfOkGbCIUgGl13xL0Am4TJaTjjJcAF4iwK-t9eSWD0=": "879999000000", - "4NEZEhAFocDARYZ1a4Ba2gQebzGG7hZymMowFH0ZZR4=": "833908000000", - "4NYfbRGLURNNW4cLRlBIgrOCWhDdf4FaiRntz-08vSg=": "378999000000", - "4NglYpFar5kPW_RC-XQqOuu63OSJMV-b3UfIuyYcw5U=": "1537788000000", - "4O4Tu9gAerrFWlZe4wMGN8hNmtU_I4wBmMYG5gkxAxA=": "941460000000", - "4OQPXOIt0ddcV2CaqbIf3nkY_XZnTGXUwngXkSVbOB0=": "5417900000000", - "4OgrS91vzj7ewwA3iOULpDR3WGN1pNErkyVdCnowj3Y=": "464104000000", - "4P-J9NCyfymQ6qMmn4VvO69fUw_MXJAaeb5whoE0QbM=": "416666000000", - "4P_zDMOsAS7F0NfbPyxo2SX1_T7vDKEx-PZBe2Nezv8=": "8375268000000", - "4QT-tdgJeZ4D6aRzGyrZjmKIubyxeNvDaEKiiB9_Wys=": "381454000000", - "4QwTg5z8s6ONn8e1ucNGkI63Fi6kjDN4_u6KQPg5L2Q=": "379344000000", - "4R_zgf6SG_gCHv6UTBry9zoWUGxwlbocn95Kd-bT_mY=": "384615000000", - "4SBPZtTRguovaDgBl2XP8cvUcEIDiYOVHaHXqah3oDQ=": "386596000000", - "4SCa2I3kN3KszyEdzFOk-kCm6oPMHvuIcEygPTXScsY=": "501271000000", - "4SvdEDxVCqz7YJTgH-6DANJRYXQ-9OXtMgBn2g__wGY=": "386088000000", - "4TQ6WXBo24RROOMwYKaxzdIYahfkD5eTcjsFsa_4wkU=": "468146000000", - "4ThVmvnnnvCWmw9UsBejtNg0JCdjBpXEtm4zL8pjACk=": "453157000000", - "4U26Gf26hoBP-3aVi84uRz5BoIR3q5YIsmR4i42AEP8=": "388261000000", - "4UKe5WkR8hMxbuTMsNmjbvZYF1b0UWhq6URn-Ktb8FM=": "1015511000000", - "4UMltCrpgGD9tMcH9WhqEJQ1jP1tJaTAeVmc2TqG0bY=": "4166666000000", - "4UeZ3BdWQVku71V62uw4RVH5eoY4VdMXrZ3N2u8AdpE=": "381436000000", - "4Uivfv4T_ObZkdmkkWhBMl9UIKPKXObSP_OctNuO9WI=": "454545000000", - "4VAF8MtTkTRkZhP-B8kf-eoSTXjGI9H3Zx7hFTCWm-I=": "804119000000", - "4VD5NqPM1Kj3HtgM7QRM_cVOhHq_q3DQTUqQKwgisBw=": "3636363000000", - "4VyvK9sN-llmorFf0hKKScJeYEX3zrNuhyA6igIWCSk=": "541592000000", - "4W3-MFRju1YUeIB1-N2KCND-5wsu6hj-ATssEc00Svw=": "450612000000", - "4W4KfSXKT8FXPR0wC7KRBO_lgRWkLUTx5mf_m-uLfQ0=": "2061090000000", - "4WS9t65CQkRjD8BWGP1_Z45BoeTpzta9bhrYn1PHD4c=": "407808000000", - "4Waj8yx2qQkioJHxwm5UjjahtYX4CZVxKMn0Fj6yXZA=": "463273000000", - "4WlgDsgtxLzJJJZ8TPfxXdUgNKUg9mNJz-dK7DB3EN4=": "381836000000", - "4WxGtFHvuzY0zEOzXmC4RJTROltSBMF52d23u4YztkI=": "769230000000", - "4X4Zs9YR0y_kQWvB7j_kLBu4vvOKklc6HdwkE1X2cXE=": "2063006000000", - "4XCpQWEHYpxacUa4lcSSDQn-PWavJlaVewZaePCDw2w=": "2499999000000", - "4XWLoQwBa_yBb-9SNEOFk_N92Q5qBbzPTXI1xhdP0-E=": "384615000000", - "4YSrikL4YJWN6hiMWJBIqaGcDc6LYup_DU8OKQ2wZZk=": "415341000000", - "4YmP6_MeqdWvBlA6vhVlmLZvOZj7bskpc89WD_eQbfM=": "909090000000", - "4ZCuwcOyLG6mWVGmJ0Lm-BfLH9OGnazG0a2R7aasHMQ=": "12727272000000", - "4ZXMfi2_iuGfQtomvPkEubaoieV-1zMao-geKXhqsC4=": "473874000000", - "4ZvrKONFTxytAWRAq_8GqV1EiT_QsX1Xr5LpZ1ly2GI=": "469945000000", - "4_9E_Do4aDC0mcru0h2yKEgHuk-sgLeEDXtVzNHkFyc=": "417450000000", - "4_c2bGDtHHNFk75aRnixcCu4tD-7DebxZkGz1LjIuvY=": "769230000000", - "4_epv4BqO2YWW8V7vImBRN5Ktrz1b_v8zkmqY4CfBXk=": "496344000000", - "4_t2TrsmzNj_1u0M-Uh8w4ZEIx-0fQqwfhF9CF45sAc=": "355007000000", - "4_u_pQXkehj4bJ9BdtEUD3WYL6ZFAHuQKOKAEXx_UdQ=": "1250021000000", - "4a3TctM6_0eiM448bZVU0BxC0aTvgHqu1nH43utdyfo=": "1003412000000", - "4a6G38PBIQ5ULyUNFBSM6RBtxpKLhj5ujGCiHHfnRQY=": "379344000000", - "4a7enQuj1Orfa_oqc-uu05VxRtdoH4ZiY-9RfcHJs_s=": "3946285000000", - "4aHS61rd_X_fcw9CJc2Zfw4VWj7Hu5HFFA6RhBSKM3M=": "5039945000000", - "4aJuUYiVJetM4XZQlw6lZ0ITT6aGEp-Sl04qIV0QzcY=": "458120000000", - "4aaZ9IB8cWWUBcXNF_yDJG8-PqgpWe59zIKMSUUd03Q=": "642211000000", - "4aqGsSre_Cl2CSFI7TTuYDuVlJjKMfe_oU80n9GG68A=": "3024046000000", - "4ayj6jgy3Ujo06cqB-CSVt17_EmOZpljRf1rvZrwyPM=": "385798000000", - "4b2At5HbHyM8xQUyA_yfwSg0-XEYAsG1rfQr7qT9dG4=": "384585000000", - "4bJBt-uWk4pTK0ey8HNKJBuGDZuh54KpGTMKVTNeM_o=": "464314000000", - "4bLQ5HL05yeNGp90iI5PuD7_R6IOr3JJffIyX1q3OIQ=": "471710000000", - "4bLSLoM9cQ1vxW2lwisDEn4DeWC87Xx7By99qsD8wH8=": "1916962000000", - "4bdzLxoLZvmKN8o5dLwpWUFZQzrw_1aS20Z3b5UBCvw=": "6115849000000", - "4bksW1Dr7Cz5MNbMXEYmgDB-OC-w1QhR7IpXOOyVXeA=": "781616000000", - "4c4Wsmky_VXGcQtuAsGlvKurTeVlz3QXPuPvi5O7aN0=": "383688000000", - "4cTyPbYRh5E9F-LJ2vMYZ8g-29RaDixeBSe95ykxXhs=": "1249999000000", - "4cXCiVC8boCAjDjsTGCz7GuSoRVGAacMr4PhEQx-Tns=": "450582000000", - "4d0PuMltJoqbAInl-vzIeFP3RV3euvskZYkycvWc_Hg=": "655097000000", - "4d8NJoDcIBMSm-qko51qiFoJ9KyR23w4oDZZ0w_-_oI=": "392247000000", - "4dv88aQgTSWAuOFuys4eaa_OECvYpZY2sxWyTSHACr8=": "405267000000", - "4e5CeprWlfJaN12JZSYlx6a14nb_yDyG1T0Va_8ERvI=": "11363636000000", - "4eel0dj1Lwbz1_98PCiVLomTH7mBL0nOscgFwucCSac=": "3108807000000", - "4ehKdBLgerB06f3r548qBYcuEPI1i3ZQY86S6t2ddnA=": "5040417000000", - "4ekROonGgkU31UsLvTWzdA24pAzkMfTi2JV3OSVEKXc=": "394620000000", - "4fw4cV1uHwaO9j2olbW69X9rUIqdtalF0wEpvJClBpE=": "413004000000", - "4gNvfDsGWz5RjWLhUa6HI0vpC_kYTzoAN5bxvb1Ci2c=": "385510000000", - "4gOUN9PsFVC6K31ZflswfHFkhu18wlc4NZPs-WxF7tg=": "384615000000", - "4gbAeyMVRKPl5b2vsi3_lB68RsPmOobmOs8RilEMUhI=": "769230000000", - "4ghetlMa0XtUQOwnDbxV_vTtDAfG_QkST2hMkQKjNwQ=": "411085000000", - "4hDyDszj1j9042iKobftKd6uk2u4T5S42-mDc3MvThA=": "899480000000", - "4hkcoivQAc0uGZM5IoOV4Jggp2SKOu7FlLT2TQcIAAA=": "3846730000000", - "4hm9DM-oalOZ9fCa-ovK6V3X-4Fvcq2FLQIdJIn6FDM=": "384615000000", - "4iTiMNqF1hg3iQbh67oMUsNG7jK1AU_CYIA2awiNcV0=": "8039675000000", - "4iglUbndPzmm0PJKPbcRVl79uxXZFpqhdVslXMjjcLI=": "841282000000", - "4j1Trb943Q7Y5jGHgzSye6RaO4_EBD9JORdDh_w7kbE=": "460013000000", - "4jDSPEDMryhMOp5gvbjMtLLAAf3TS8BMYgF3ZICXoNQ=": "366940000000", - "4jDbgGSPwMKEgAH23iaJl-y4pkNiSFm5Sj-udBgd0s4=": "1943752000000", - "4jInTToc1pLkHl2DTKaX7qyE4Y4QHICKjb9rMX2sdAo=": "416673000000", - "4jNQKMiuLVDrRuyBsAetoXPJlycUl07HOhrT3CQfqrc=": "648010000000", - "4jaczUQ3yiYZJCoOlPwQGIEP1tRegtsde0sy-0ucRn8=": "384567000000", - "4js9otVc2YGGbQYFdHOFiF0vLziztNjAoh3zfFL3rjM=": "380509000000", - "4khz9eqp1vV8lUEkPOjIUhPp851Y6RQ0Vf8uW6OSoBE=": "416650000000", - "4knxVo3ERs8e9iAACiHwi70itACiSjAIfUGx6z6LmWg=": "462839000000", - "4kwI3d8iYuBNmkkgmTt3GrEsmgFh-ffDY_Yqu-pFL3o=": "384615000000", - "4kzSiY552Y7yRr_5-XfjJZLKsR_0mav_OruZOtXoZbI=": "3762263000000", - "4lKNNGKg_jZVPc_KtRWH3uSk2IbvX9pggmLrgGsNUYU=": "5044821000000", - "4lL_vTPs9LhWzY1s1x2ewQKnwKAJk1tiQjYM1pAasHs=": "387084000000", - "4lNawmbKEdaCDtwnk3h0SOk3m8IIOfPgzncAqqM2Q-E=": "463277000000", - "4lOAFJ-ixMBWZbtTxeQcyXtr1s3wubNrrqjHv1l3-5Y=": "386715000000", - "4lf3lbOMsIaXGx6Qc20yOiNS7a8OGSXRtUhFzK1ZLpk=": "1920889000000", - "4lv8rZ0naGaoRlntJheLhQPpm6YZnS8trA-YMFaEnq4=": "4998900000000", - "4mETZdjx3Zsn_K646uDLT6rttXFL8HnJKqQPj2Asilw=": "3333333000000", - "4meO9MHoSIxgrgbkv68aEfpefr13tzAdYe_DTJFXRVw=": "454545000000", - "4n0mzPq_TGmN32WKo6553KFrZrrY8xY5a7y9-4Sn7KE=": "2647889000000", - "4n1WhSUH9uINViwgDIYB1W-1Ah7YMnnFC_6-vo83MyQ=": "1353661000000", - "4n4J8Zedo43u9dC-Hiozxz5UkhYXg6qQm8VPzoyY924=": "512979000000", - "4n9OUuSDH5V_PsVJMvK6spjMoH4vtiV4srO4svuh3kQ=": "1499486000000", - "4nH6BBliB-YAoAlAD11djgzrEUA2koRnzUauVeAFAa0=": "408142000000", - "4nMYvqj_P7v1Vms5Vl2m67bY-m6NaPHQ645d9_K2_Ow=": "444579000000", - "4nYMQo6IZ99xssX0HVmrLPCgedf4CFsv6QxU3RTrDCA=": "499999000000", - "4nyGW5WdQtYv0_uZT0KTPAwG75rvTdFKo5aewntysUc=": "385505000000", - "4oKa3BWJXtFIM_1C3E9SH62xv76MNmg7QwWmVls49bM=": "380912000000", - "4oNusLzTYPAa6p_P9GCxu2X2LIz8D4q-Hpg6i1t07Qg=": "566268000000", - "4oy5OUu3j9fRRdIQX-BthU45wEL9-OXcctY7W1qIEp0=": "3846153000000", - "4pHAE-ceReS7Ni0h_rT8vnugOxTFG0VM75WCNvuaoZs=": "654014000000", - "4pLBbd48kN37dUcGMIbkwLozuCCCJkbsID_CXnZlLc4=": "4240295000000", - "4pQGogyWPArGmM6AUXk0C1RG4LIjv0arzmsrj7Yar24=": "4156299000000", - "4pX7aRKWnFhZK3-OER_2amGzm2lPGTypDsYShTdxpr4=": "2055429000000", - "4pXKL6KhjfLK3IVjnzKO9rB_7VYm36Hz0pOVMkn-_Y8=": "462839000000", - "4piUHkh78BmBwHvP2bhg-39WDURR0SUQJbETFb2bd9Q=": "465068000000", - "4q2v1Wo1gt6b6HpDAF84UU9tcpbAqUhS3oq4M9uiwE0=": "384615000000", - "4qKmaQAIPGtPDOo-vS1ocVeDpZuI8kbMzywEc4qu9RU=": "422586000000", - "4qLWtD1apAnT6rh5M6De12b5OmiKWaGyhyBXFHHJ314=": "385506000000", - "4rB1pBxExusxtBLrnBPmINfnW6R4FSTigSFDeEpgwWk=": "3652531000000", - "4rQHdJUWm64w_2fYQBaffyDArjgfe6aiGtS7VkV5yhc=": "578358000000", - "4rfxg21yhoTvjN-Zq0aUjnoXS_dziIKwM5jrHNhzGpM=": "384615000000", - "4sGKCA2-7-MXkky0JNnlBdZBYnwtSDTfGG88D8hfstI=": "462193000000", - "4sO0Vmbo-crfe4XrIOkhjkhww7BObAf9Ox1R4_sgXVU=": "442970000000", - "4sgVoy_KAeTJea11vhKcML9A26Yh7d-PHPy4klLgavc=": "448906000000", - "4sjKVvV8eu9SivXQiCE3BqId9pXmp73T_ZHuquEJlyw=": "378557000000", - "4sn7VUki6dtslP6Z3YaZNXM-vuDDozK0TUzP4w54CkM=": "385023000000", - "4soXIfIU-3cidRAol_zXuIF0PB-uuOwnZaUxEAyXjn0=": "842308000000", - "4tKfU18mpgPqH9FjtAom_E-NS3K1WtKxPOKPs4Vq1KA=": "756034000000", - "4tRgehYX9v5zsy_xn5ddCPAoLYLUXFRmZgcoKx25LXE=": "1269230000000", - "4tXmgfDu5kzkGlk_mlhcm7X3eqsbe28W7bni2nogpHM=": "447062000000", - "4takVv_PBR5xTQBfEHazt9ed67CpJ2wcxQ4xmSQy8F0=": "3279075000000", - "4tvdMuw1FXpaLyZeIz0gDzO0Y9KZpnvGTfXC-6Y0Tw0=": "453003000000", - "4tw6-vDx_CN-zyjTX0UIrOw04V2-6OfPTniG2Kb-e5c=": "2185607000000", - "4tzfVDfzQ4AdLJC4SFn2IWWWRab0AViUWGpRmgbw03Y=": "462687000000", - "4uF6Rmiiv-I0Ls7OUuDe2IyisBhIcjKA5EyhHl-_jec=": "384615000000", - "4ubGdC9PeY79ZJXmTQlg4SX7ccc428f5USLKzgEM_x0=": "460532000000", - "4uwVfySmyeyTJ8Xclkd5O_UUxPXu2Xp70G3kRPqEQoc=": "953546000000", - "4v9QHkHs62OW0DEWKhEkrLCIKbc7V8GtvxWUyv8XaGI=": "386370000000", - "4w2o50P1rx-fBeSMCDDLe9yFToi5QA3VjDIeNG7ZwXo=": "1863636000000", - "4wFsVOYuCanccPR-rl5iXRRyKLQGRDz0TCxqgWo1grc=": "2113961000000", - "4wXOyaZcihdQwbEaBmL294fMThHbxXzrF_Nt9XzxUmk=": "963931000000", - "4wqmBOOX3TKgzwEcH1XffURahcIvmeFiTa4ts2RIOpM=": "3213303000000", - "4wv8x3HgWn-9lgW-UAOH6cCaJ6ucdQEkq3S3wfASw4w=": "4166666000000", - "4x4eyA0yBTHGLUz6niTCrY6hrHOoCsiipKqeZy-XQ3A=": "384615000000", - "4x9u-RBFqrVfqCP07KCbA2EdjLaCg6Jr3kv35lgvrAc=": "499999000000", - "4xA29YoO934zxCD12lUOrpSxMhT-dxF6JpW8VyNf0Ys=": "759857000000", - "4xZoNqxGtKlSGeu0uYyWkpAoWvAFKT5MPVuvsQIbkJw=": "576923000000", - "4xgeycg1QaP7pS-DRsWEaQP6cUtUNRV3vJwv3Ij7i5I=": "413603000000", - "4xn8FV3q9n3W24FZdjy7T8OOWfaYuyQaN4sAQHKo8jE=": "5860686000000", - "4y-mBjZ0KyHF2eR1vB4qj5ycBKMrWGTslLlqNo6A7pA=": "406044000000", - "4y1WOw-k4Q3p3rT_vSMv2R6AqqwQKyRMdzLOTJUlYsI=": "490856000000", - "4y3uDEIq_8oVg7nbwjq87ZH5dTIFZONQS2NZFIkkPmI=": "3231890000000", - "4y9yblEy9XuouRdjlGIS_AlAnMyrpXcw7wiaXEb52tw=": "4701673000000", - "4yJJjRMUwIbO8ZXx2GGCMC6tQ187L9TMhMAhC55oQ2I=": "618000000000", - "4yVcr7h5idRUKIixTcT14rYvPwygceZV1iM2ltsMH4Q=": "831666000000", - "4z7rFOh64K3dwupuWFV8zC5M8GcKIehYrSHR7Z6dngo=": "639573000000", - "4zwCZxJc9WsbjsSerb6GN5STC6QZvjcoDIarGmWe9MM=": "420521000000", - "4zyVMVPYhDoC5mxLshdh-V3EIaHgaKV27JEl7DBm78g=": "1396385000000", - "5-2BeUK7X3uE3wUGL1O8d13r24gbrNRepraK58FkZ-Q=": "1483906000000", - "5-Q5zdX7-3PQ4B2qw8p-0zdCtEo1dkKOOGuK-4Ec3R0=": "416666000000", - "5-WJ_AzhmXhLlESbbYxhn2MGo8Md8x9HFytY2gwasro=": "527235000000", - "50N-8Ozs6eWdgs8Z89bVP-YB4rJVQCPdHH0nb7N5Xno=": "499672000000", - "50bvflUqQdjiyWrdYNnftKpp74A2yWAnl4nQsf_vuo4=": "379344000000", - "50fPUJOPUyT4utx8diphhI7bnwkQyvmOsUboGyIgXVY=": "468567000000", - "51jumusOTt68J0EVuHDuFUuPbm4_bif9itwUNNMwpQI=": "385506000000", - "51kKQM2T6oBbHqal2Ow3kAI9yOcuiyLFRq_1A5KiY80=": "15257498000000", - "51ntS2EDv_ePXLSTNqfajA4WfchlucU-iCekNl88woU=": "380509000000", - "51xx3mwSu70dOABXedB47L5WScN22kHPc94k3Ru9in0=": "11367159000000", - "52FGzOJ5Rm8kVvZHL9E8p7LshW6ykSuIJbqyHS7_w7U=": "470730000000", - "52Fa3NkSQ0S8Gubp3VZ8Dv7m0mwlipt8Ybcj1f4YOtA=": "933085000000", - "52KVsSU1I_zRhJ2fPWu0a_rGLOD-te31nPlL0utmVq8=": "2088147000000", - "52l2EED0ftRr87ZPFGfnHCpxeqrRGIys5bFbaU4uM6k=": "4221969000000", - "538h5uP9VM7ulHezpIdkPIJw-DFaGmKDE32HUvbTJxc=": "417634000000", - "53I7v0iaikgYpHKLhZMv9cDqRUZ-MxMbLQnTfJ6CQco=": "1657692000000", - "53PMp7Rid9vAKGL6WwzeTIOCGj8y1cSshUVPR1nyZGI=": "8333333000000", - "53VOWtzCe9MiGgg7_mfu82SK6qHxxrUDzhCD1jAYhAk=": "2237657000000", - "53p5ALGelRMc4EPUejvo4MMH3qtqX5xcUcitc4F61D4=": "1171212000000", - "53pI2zXmfiY4X-JfAny-XZB5Yb8ONM159hluPVfA10Q=": "1615384000000", - "53q7AzhVGGHin47XXJw4j1j0OFhPF7u0RXVcY90gB6E=": "468409000000", - "54B_2Cqwk5tq49hozb-jy5NYjhWuO3ZMps07fExjxSM=": "1153820000000", - "54IxtEI2gchrYb8y7-U1DWdNDtp3vkkUxz_dfB7ONaE=": "450738000000", - "54h3B2koBfE0_kGwUYa6QTbO8xd79qNRaflvVe9kHt0=": "846741000000", - "54m8zI-7eyiVWPQDr2DrpIjmSt3hE-kezMDIhiQju7M=": "833347000000", - "54n2MKjI36cFamWd-LQmepZjEvVeR_9Cqr5foajIV0E=": "470703000000", - "54oSa2AppxqDnA_uMOyC8_q4zQOXBZz2T57pmsAaTTs=": "456483000000", - "54y3xWiusNr6KBk4dE8gZAN9VoYtWpa50jCuREUzkk8=": "1648056000000", - "551j-jShz6cGtepiRd9ulXZr1_9KCCxvVBpgY_2F0a0=": "1880124000000", - "551ksyOxaF1GmGDEJq3xmkEEdxoPdYBKztZhZEe6TWY=": "1234575000000", - "55CLCzwgQ49erRWuib6QOxeL2dI7t5CQvIhA_8oOnjM=": "2083333000000", - "55MVPMBdzWF-8aL7ZOD-7jjOO2EQTRYxGxQhbQrN9d8=": "928743000000", - "55_PxIWzSYhXFUecILRfryH9zfFg3z5-PfA1kuDgE4I=": "1136390000000", - "55eMRwgG4Qhq0wtmmZ4OkmOlVpDnVVezhZjt_z2YpJk=": "836879000000", - "55fGgl5sFEuPXMHcdGSUO3krGXo5EnH5vL1qZQZSGLQ=": "459107000000", - "56G0MP-s1VKay-HRjD0VMzwEsCZiTLDRSmf0Y3JkPr0=": "416673000000", - "57QvaTjyQ2BjyWmwGe6ITOekh2cFJ76Ye0dtkyAXXUs=": "764788000000", - "58aEDTqVyh5kcMj318gFK1JATtzbpLMAZfNrnd2ntRE=": "4052144000000", - "58nWu1H6ouTrqgGdl7Pk3R8QTWCwbx2-ijolgSE2rpk=": "509391000000", - "592WQRlmH_9gDgBn7c5f6TQXk8a5S30GJhYU4HfNB48=": "454545000000", - "594Lb0y6UdGxWZP-ForVz6Hpetkd3XS0bRGhqSLmOPo=": "413620000000", - "59MPcX4EELb-RFkcRp8fWiPBkaoJ6D7WRVxLx2r9oo8=": "492927000000", - "59VAYHl4nSgqvEeXrQpR2jvt94zNM24fPycQEgS97Ug=": "908582000000", - "59wqzoQWG0Ve8q1x-6RgGrSBa-x3n3s2znY2kqkEtZs=": "385509000000", - "5ACMIWg255D5PvmEYu3D-T89rYX8Whkw01HTzS4Ndn8=": "388634000000", - "5AaLNUHcoilYHIQUhC5Yvcan5WNRzZT7NW8Dx1FzBm0=": "2513483000000", - "5Ae_O6RUSBcG5Fy0YqkqJkDSFrI3JJduvdZGmjBTx7k=": "416666000000", - "5AqKGnPLifbnz8h8IlycOQencZJw0oKKEnN5Bzy2Y-A=": "1808430000000", - "5BB1NSJVbh57M0SGc2Rilr4OcrZHSj6w1631FBlOr_k=": "744414000000", - "5BmLGj253-deMJt-HOg9EBNB1P8oCr_8Qin9AoO0gpQ=": "495436000000", - "5BvWWuUiLC8Fvava62X3DbGPGLQLgP-oxAdh5KMHnhM=": "380585000000", - "5CBzjUiiEs-JNFqvaajcxTjPsQrCy1begElCGJ1CMNg=": "3494482000000", - "5CiTgi9pcgO5o2GjI-gDtT147lX0rovBlMqxC0ZSOLc=": "602309000000", - "5CtQj2YBsYbw5ezo3Ljh2Pv9NXoP95anKP2jFKUsBqI=": "518304000000", - "5D-p-yvvIfbWBw_MlQ10VXr-5k0riJqRlK21S7i-y04=": "663946000000", - "5DJja49SmowFWM-Dt7k5KviUjjNkc2wNZGc8veX2Sf0=": "390193000000", - "5DTJzCUH190tUXSEvA0gl8FW68WqMDVDavO3SBaH7m4=": "1326970000000", - "5Df-pDmWnpAH7VKrZR_GBkxfPyCwtCUV261O-eu8qaE=": "1136363000000", - "5DogGB3EVd_UyV53qmcJuPiDN0OCWzlh9KpCFJ_QC8s=": "466844000000", - "5ER_szKotpvSYEDmEr0dTVHNPDeiAPSPCRTAVgI9O-0=": "376837000000", - "5F4DoZF2d9QrvaYkZUR_gKH9AxnJpSrcNMwxjJCBmgE=": "517171000000", - "5Fe-wTiE9RVok7rV8OTpupzyXOEeVcGLLtWgw41LOn8=": "5767700000000", - "5FjMn5WwAxVr3zqqYKktDc3151Tbaou-6-kRsuuJOLc=": "2055429000000", - "5FsYsnwwTuUWevZfjE0bTHFaJ-eTknkb3tYsZoc2X1s=": "418474000000", - "5Geez9XMSq4vEdPmTRXYtYHrFUIDsBu_qLCeuM4gDz0=": "384615000000", - "5HOpqVT2KafuNM6ZcebTyZZjCMZhha0ZKhTiUjj_Fe8=": "455270000000", - "5HnS2w2ko0riRG3dnXFEM51uBzO7BYGQoH-qe2gj6T8=": "407469000000", - "5IGYdM2gzyyKgnYl58FCC9iosF1phnfjgcXikDJw8To=": "11863447000000", - "5IWTFdMxqz6v2TNmLv_JApJ45EKsDvMPofohoBVn3bo=": "418859000000", - "5IdtoSuhLQHgZYVSp3ghxhQBVz_RlNMvAjOe5Xl8jmA=": "979224000000", - "5ImDU5jAHCnn5xvJSb0MtCElwil3VuzSIBBZbqevdQg=": "833333000000", - "5Ine-ciZtlNssovfFT2JEQhcV7fqLnOBfDDVCLYXZm4=": "1548301000000", - "5Irs9LkbnIGEX-RakkJxCwIvjETE_oG1Mpo1yVpWOMQ=": "1156520000000", - "5JB0d6Klm4sfgKJduxPUzuSyVVOl_GVTiCP7The0ATs=": "748549000000", - "5JMAWBlf_r2Zo9_3yVaX4P9zP0_st1ysRn7YP3K7ab0=": "386742000000", - "5JUVsoeSkQnDiGVNKM8eK8Vk8FK83Hzpm7edkd4QZwE=": "834684000000", - "5K2Yh_hYEHouIZdpDvuhBqotImqHguXhkn-ocW45rx0=": "6923076000000", - "5KAUvrwys0VkuknnH1sLdh7NI8uYpU-KxmIdkxMniUo=": "457497000000", - "5KRMlLUsse7hO1iyHYNLprSkiMIksrMMlhb1_9mwCGg=": "416666000000", - "5KVFfsGjk74SjreGpAgXXOBZTi796C95ztk52ytt1v8=": "1780965000000", - "5KjRPyGp2OxFyz00_oD5nNLGpm2Ik9jmj9aJHug47so=": "1157097000000", - "5Kmq8tXfK7QAWSJuov9w2Gh24nsztCPVXwI7T_jyPuY=": "503666000000", - "5MPerddZ6cknT-VG0uHKiGCi0Orh0Y7mWn-m88ajyus=": "4090348000000", - "5MhqHw_2zpn77o04YJe1OlsdPvn8mwH3n2llLC4wFeg=": "1661790000000", - "5MqFTtxp7ISRlxthIBYQWga4YJrXEpRNp8xQdr5tMmE=": "1945789000000", - "5N6tv5_qnwP7ZaGtp_jbDWycx7UUYFUkSYnjtlDc8kI=": "405229000000", - "5NLrdWTjdHqpTSpVlZIrP_njdH0w-D1VT3Z_0SPku0c=": "411085000000", - "5NlJXjj2UYOaU7_7OSsikRviR7TA_NaLAXOG3UsirG8=": "7670228000000", - "5OX-0T7SpOvp1Nzv9RAvcElf7WSsol2g2EFruPNZVms=": "458215000000", - "5OhXQpodXqN5D3FyeQWcocWdkExVvpHR5fyo0SCkJRU=": "486909000000", - "5Opr67zJWJMpbCDzsmiUJxo9VRn2cxWNhMNcBskfr-Y=": "892908000000", - "5OtmJy5Jwblqw1xK3eqPir6tzpe8vpU7zOJngUMPVKs=": "459695000000", - "5PaKA_4O2jqLl4BfkyJnj1b3lWQUUvwtjz81SAFGlCU=": "451707000000", - "5Pj8wX-_GdhatcaaNj0PP19PuMhxAIZ7ZGlhuUxSE_Q=": "398878000000", - "5QGHWmj_sKTOLEkYQ_Lz7pURsDfrxrNA7bL0mkdvHNA=": "1886724000000", - "5QGUFsK4VGCEGPJbPe--DlVqjkIIVhLDIUkVBjCEtpU=": "384615000000", - "5QXrkmBmjvdXgdYGTBo8pzWxICMr34jkNtqIWddBmUk=": "404418000000", - "5Q_Tc3buGLKhFjJAl_55yCVoGP0LkHgLv-92evEQXYk=": "769230000000", - "5Qe_zEKPpEeZuVAwwNU1z2ADWRs5aYoyUsoW0z1Dam4=": "415930000000", - "5QryhO83LroRGMjknqCrhEP8hQ0uqd-L36I_Qh2D2ls=": "405229000000", - "5Qt-g2VcN88LlOEZ4esLbNUfri1ly_bUw4RZ8S5GK4o=": "501826000000", - "5R8AGpGfQqv21JZ0ntIpZsEJFHT0EHfWtfjMCcWP_Ag=": "422561000000", - "5RcN2y4X7BRrLy9sXvD5vHbnKh41wgVw4HBPJFSu1oo=": "3664830000000", - "5RhMK_lOrqkXyvAfZbw2skqDzkI3Hkb6u7EoPFaV8jU=": "12540222000000", - "5S-JsES4kRcCo00V-2BLXUEceFbNinjbcCQXUdA16No=": "384615000000", - "5S0wLbaMY2DzwcVmk6e4p7MV0r-sJlcp35yedvcCflQ=": "475200000000", - "5SAvkh3k1aGVI9QBYj7aChzvNdZX_kl-U76Q5dHFRR8=": "415901000000", - "5SKDp-waEeIlNO2FArGk2luirSKKy4RXn1aS5XYLXUs=": "4999999000000", - "5SRZp2Ut466FYKAJ1OmGK-QebCoR_OilPY_ZPRvggZA=": "4166666000000", - "5SlC5Q2BBd1En9SBY9yACwhYcrqzBubpSs7JiAx6UQc=": "403537000000", - "5T7wYN4M4uV5BpTEJUBV6Mp4ubWF2Mp0hnBYgO8v2HQ=": "376990000000", - "5T8LPbMG5eglLVTj5gGh8wGTdpNDwUlKImOjb9AdNwM=": "1223425000000", - "5TDeCMPjaoAFm-nZseg17X6YM4hDD3IZhKYQcKfBe34=": "2648196000000", - "5TtvkWlAbuZ4y5ZAQfLAz6QjaHetrqlWBTqjb0V4220=": "1920375000000", - "5UGiyEop2-TshvuaUGONSBugZpBtFW34C0afLqbzKNg=": "1149445000000", - "5UIy3WrRstH09xHU5tCUh7eDf3FtWUdA0E3aPCQAHQY=": "573248000000", - "5UR-gBIAGB__RitssnI_DY0Z6dqQz-k5B7hnHNOFhhw=": "1999999000000", - "5UUIrtBe7N3wyaWvJ-gB3ZlA18A0z_XaaBiGtNp_tFM=": "1153846000000", - "5V48uh3uVWB5_mUeLzcLUR48_UoCjhW72f4zEVj7li8=": "547325000000", - "5VNhRdMbBUVRB5soursO5sth6geq7G92MQvzoZojHu8=": "1951675000000", - "5Vv7kRgaI_Yr5IQ35zbFaIYu552bO4ru_y3pHGl2L5Y=": "9072781000000", - "5VzxpyJKodyakbTgaXFpb_CQv0x3L9b6YLIuBAge5ts=": "447988000000", - "5W4Z6eHHSMx-6J50yHT67ez3Ag5meb-eLnpdt-1kSOA=": "421385000000", - "5Wcl_mj-R9Knu-Pkw6MuzSLUj4kS3jXNpxPTJnZNUx0=": "381822000000", - "5WdbCRm5SiOe7uupz4N2TwkYSud3zG87blZntE53pDQ=": "2076031000000", - "5X-PgyJzSnPpLrEGMMW1eLEM_Vvw1Jp_tHNzRGGhSps=": "1309889000000", - "5X0XKw53E1NAFs87QYYsKIM--rPu30MJy7bRnhAv0Fc=": "763607000000", - "5XfFNnWcvL7gkFwDIKTffCRBpGl-ZJgcGq2obhPnTl4=": "381225000000", - "5XotKg1piHnJ0Y0MCkL0HTOpWCcg3YxJ83RpiLzGdCQ=": "387555000000", - "5Y_hOQquVgujebGZ-y9ALDltpP8nf-gs1pZvL-8Rryw=": "423344000000", - "5YheUr0WLdG4P4vdc-Us7hYeUvcyQQo5nSXWXFPRTrY=": "393313000000", - "5YtjaWMZKX77_KIkkhsOiIt74xdBGZHLPxx7pLzLusY=": "1159192000000", - "5Z5IEJfAeItzlaMtOJruFm-Hr7yG8fSq_EfOMDLO1uI=": "385505000000", - "5Z86RFlaZtfGVrHBqD7imuj6zcIT3ecPFyGViPIKv9s=": "2375886000000", - "5ZI8dniHQgyz1N_M6wQa4UDe5imEg_83a1IFmlkP6PI=": "500815000000", - "5ZK_hThNqMjifs7eBh1Y6HpZiaMWEfewvrhQthfiTKk=": "833301000000", - "5ZM7I8FRjnmrSYVqgg9gQb4KZ6yVxbXIJ7hyN5v-s38=": "385348000000", - "5_916eTA5uScrFcISwBGTahZHngf1tfamZR4G_jH1TY=": "384615000000", - "5_Qq1QgymmUEEhxrCNwGsFhP2DYuUN93199elSGhSy8=": "4062731000000", - "5_Wg2t1q_ewmPqP-Cd0xS_3jUx-CVM4JwS_-aFNh9TM=": "4459818000000", - "5a3EKEPsudi7WANt8etOfz4rSI4kLjPVf0-N52DggvU=": "384615000000", - "5azFKC_0J57RnyZhgeRmPVnu1Zr1JqiNRo1EcdunILI=": "384689000000", - "5bGLv5C4xitqswZPlPYEHC0iYJF02M7R1itN8jj3Ui4=": "520696000000", - "5bIavng9y-nDULU8D5BMyuxTMva2CpTTgcLoyyjqUxo=": "482124000000", - "5biHIYIZUUiBHjfeKFEVXZ33C5gtE8HkXMofryRENs8=": "3191094000000", - "5c7C_p8rusXjNvBSgrs2VJPJAPNS6QOKrPw44J7_oKI=": "1136166000000", - "5cLI_L3DY2vBY1kw1QbnOTKxQj0YVdSioWTK2GCUiz0=": "384619000000", - "5cn-osPTuN1B-8SUoY1PRclkqbm5FPqWgKKJLuQW0cc=": "380708000000", - "5cn7fHrxGuCzXD_pKbeSUVwBcH6mcVyt-M9Dwnm37DE=": "3461538000000", - "5cyYiqxmIAjyomSH6WJxS0_6pYUR50tyyObD_GNPh2I=": "417630000000", - "5dHE1P_XmKQHmq0U-fgwkU4e5LjBXhDhu6FVv6BzZcE=": "424835000000", - "5dUYPjjN7GG5cNltKZTko-vpwA8zyaKlRhtjRm71ZA4=": "2085406000000", - "5dcXSGOY0O1DbKR6wrXY-nQdTgtuVghr8YX9N-abZh8=": "384615000000", - "5eCtYpal2uBWMy5qImTe614xx6m7AAAvjRKyNMc3HMg=": "384920000000", - "5fLWD98d5F_yN44J_cVhJNNScxNYaWZ-k3yJD2oZIxo=": "477261000000", - "5fV9Hywb00IVkY4eR8Th8TkUxDjDTLEHGVesD44bhLk=": "10428213000000", - "5fvbGXTNOJzRo_Jl3IY2KI8pq7ykB6VHBUSmO8PdOK8=": "416666000000", - "5g6Msc9E2fwxcV0zGM7e8O1n68gu6_oirhW1eRFaoJg=": "416599000000", - "5h9roiWz4kC9dNQtlSIqh49Cz-EttdSiMxPtpjgeJCM=": "393573000000", - "5hZ7yzIWiOCWF4ChnfgtdRRhTkwDA2tOYfgSVJa6pxI=": "6489427000000", - "5hf4wU9sxo_8fi5f1l7Y7rcIgMOU90AzvZqlkSO-K-w=": "3846153000000", - "5hhM8Hp1tIdkT94ssEJy5j_P-IqxFghl7HTSNZvFZyk=": "3250619000000", - "5hj6Q6sUYcIq3IXjVxn10SZv6L89xeoVi-Hm9XU0F64=": "3685627000000", - "5iE0NYBLiNidIHyFQ4ujxRUgtM3prq_CdvRYfjMU5j8=": "1252902000000", - "5ip1UhQlUnM4VDRi0YOUmsYKfPcbgDhVbG0sU4mx0Dg=": "833333000000", - "5jC_NnJ_Bgsgy7gJmzFIW2R68z8VE5pGqL091cDY-YM=": "1979119000000", - "5jW6YWB03DC7t0hewZH9AK42ldDZfXhrnhcm-HDv7CQ=": "386297000000", - "5k3gtC7oUhqfPgeCc3fpGiaTK8W5wTKlnXBo-vEenXY=": "458982000000", - "5kAYnqEQ_RfBIGodod1LbKVUfOt6GUCY7lX2OBAx2G4=": "382749000000", - "5kqY-Cw1M0eFf__YjOXlZHB8oI1v2_uaKPSovSLazq0=": "3390170000000", - "5l1ghqbwjl0YftuvDsk5sO8qNR4kxOajl56xPWpWQI0=": "383997000000", - "5lUjuAvmu7jvQfKKZViNOCSE2pGcfUUauZ_arD18vRA=": "379928000000", - "5lj3HhrRNyqyF0kHWEcwY9zbpmByV5AP6j0hcY9OLkI=": "381805000000", - "5lk2aZHBw4kEYcN96mP_xxpqTkdizVqn-ao4GG1h8jY=": "384615000000", - "5m8IMmswR2HrEsh91TymreCQk5Km0GSkr31JPUp7c5M=": "755638000000", - "5mJOU_vRb543jgTXz_Ri-4NKyIlynMTk-EAWN6Vp_kA=": "385718000000", - "5mXpxUfs_bBHB_sjT4oAtkf_hux08DsMjOJE37AIyUY=": "8365622000000", - "5mb41yFKGuV3U9nYTM-U8ErwvEQA93mPHOXjTiBzKqs=": "454801000000", - "5msJTC4nvWSToF1okm7JhUjm4LZSpLyGhTwxNWKPHw8=": "123701030000000", - "5n2RjBiqcf1HCoN7B-gPdgS97KZAA73qP31jmIksrF0=": "462839000000", - "5nlIgMdias_Q6qfAl-1IIx79670LLV9W-d9yPvobBTk=": "627223000000", - "5o-ZCYIpAfj8r2gCTmoO6cNFOTBb3k9PRFGRaRl4gO8=": "3754082000000", - "5o5VensvZCJFl_-Qe_mKbrAhf4ZTobcmpS3jYOlUKKU=": "455519000000", - "5oeoT2W-7Hx8ZZ-yQvhojM8uxk4Wo-Wsl7U68mXjrsI=": "472233000000", - "5owTQHFPP-vChQgOF1KMinKfnx-Jcb73bfYv-YfNpaA=": "385506000000", - "5p0QXVAaSvoqVEYZFkTxGjT_uZppWef0EDPZUslAYSE=": "416666000000", - "5p5egbK0UXssOB0_JB6Br-cC9G18-2TtcwnY4D1I9nI=": "1153830000000", - "5pi2UkMWbnGce9ZnOMDIqikZaitbdtYH7wLewGgIjj4=": "1249999000000", - "5pyOR1zg3b74Pph1os9i85CUGv9XL-3e-a-QxwnDY1A=": "5390170000000", - "5qlmSEQA9SuPEd97zE2Q2TAi03cawTy0pO-Bd2zbnL0=": "9112001000000", - "5qqODm8IMzH58olaPF-LQiUOT5-h7AMhdrVCyNxmvOU=": "3321850000000", - "5sNcwe-DPLS0cxjxGGrkige2RQOmmnDNAaRWruPiE4A=": "1921580000000", - "5sa_y8IIdAr3GAawJthYHeGSnXA7jh_Wyxa9QZ7XfaQ=": "2035234000000", - "5sgvZioCX8M9gspjhWw3byU-d_7fG5mp4O0wD_p2O3s=": "456608000000", - "5sos_7WpDotkzkP_aiK3J3HDnEXs7qkO3n7kQHnT78g=": "444948000000", - "5tadmOoIYPI3qgjumSqZCjPj_WDYq0zbd0z2rQox0nA=": "378879000000", - "5tps-4Lb4DQUm3ZcBIJxoNK3-0EcSdC3tNJqwtmtghU=": "7708780000000", - "5u6CgxMzSk_yY-5jWv_QRVUbeBkoYslKaUtmIru706g=": "384090000000", - "5ucEgg1D121P314TNPICtZb8nPEECpX2wx7Z-hMvsp4=": "1923076000000", - "5v2YJ3DlirY1ci-R60R4pxF-1djljEYvQZwnTGy-lls=": "464620000000", - "5vEiwd8ShnDqwJd4i5UJFL9caHw6EfKBVlJHP89eQe0=": "4715112000000", - "5vG7R1veVVehPcfYaY1vs_IxapWZz3JdvO2BlShSSMI=": "452942000000", - "5vHE-BYgFIVvgnmX07DhkEHmcBuiCx0D5ko_JLpLNxw=": "417636000000", - "5vOpD1xnA75t6yZYrLvfwltACMDMYlVCj3ca64QOqB0=": "1890453000000", - "5vOuWHmLYzdop6VbHfAZp7o9ivkaka9oko6U31KIFFU=": "1153846000000", - "5vUMiWJmun3b3PWh9pqb2QkzhWca3CvPxThwoBTdzvw=": "411085000000", - "5vUPa_nj3N4TQKQRnvDVo2NtmS7IQKJPjG95GudVfqc=": "1905703000000", - "5vaWw7Gjy80amEj-FIcaRxaKItP4PW-bc3Q7dxK0ZeA=": "458309000000", - "5vdLan_9JcrZhC_guMQIUMiIpKkD-s5lsYpRxRkLVuQ=": "450496000000", - "5vh_C1yvahdfe40R5oqBpEXiDSGi5LmK5xJ921rwlbc=": "926058000000", - "5vv-KdHHMMvsYO4WeHA3GOd00hhbA703vcHf5qOY0N4=": "405846000000", - "5wDAyoUzn9byMEzcabilJ-SMshA8cu0WpNbm6zADw5w=": "416666000000", - "5wFiiZQcvv75WugSN_BMScdmWRjKffg6dd8FTZn6cvA=": "385510000000", - "5wK7m41lEtCh3rSC_CQRRlh4yJ_dW5u8MrKgy8cvdeY=": "416666000000", - "5wLWVb10_5Vd4tqf_KiOGShGJldql1gKSVkl2nNASKs=": "738915000000", - "5wzBIo9x9maRRqaUj2rOUt9HcXi5RF8FFII8kNyNbBI=": "415935000000", - "5xW6JEi7749mTWE4gsvvWX_dAUQibLuHemY2Sdf4qH0=": "828477000000", - "5xp1MHKbECybSD0DEPFXa3cinUeDOKmLw1WQRm_Jaq4=": "498372000000", - "5xqLyWIOfz6WuXIsxVtIWAEmg2KTQjfSj0JyU9WXU14=": "20063234000000", - "5xs-OezwOHb7u1XiDNpL7qDpFHAvhzZ0oIgswEYox-I=": "462097000000", - "5xwDsaIiNv8XgGlXDzzVeCRhE4CN29UyGn2ku9w36Eg=": "391797000000", - "5y9_F3I9d4QVIEbl714W5JvDlNsZkSP0v5zdNqE0N4k=": "411085000000", - "5z24LT3JlhvA7UAJ5CSZkynp52vWdQOJN8guN33eKho=": "4879942000000", - "5zLnMNdRY2I6_sDHeqWsLSEfi7sp7aoTMhfBNcDh8RM=": "380878000000", - "5zZ-JhswAaSH7uXXNfR6rMGWpJN6CfSwNBkAxBUR_U8=": "421793000000", - "6-JMHzDikHCKONTinVk4UWbmDJu07mPzl4pq-9J9cUM=": "12692175000000", - "6-_yVBASRKhq7VhYXsCoeXQiR2Q5brYGaZxrCYStpSM=": "419856000000", - "6-cSwBJ-Zk9elhaJn8LlQCHp6Yc027IGnp9Hfrr0H2E=": "2366352000000", - "6-qEq5fFhpBAdK-rbqjBJ-K7uYrdpIZgrGllE3lP_ZY=": "384615000000", - "605m3PwBD87GSgxeQAdBhGY8KWzxSWvnar60uJbeAlQ=": "481965000000", - "60JLKJFlxKs5SMFQ-KUCZNjokicriBvrcC2b42VjVK8=": "764836000000", - "60REJQOkFi4iTK21nldiZqJDMQcOIbftlaAGt9tDe18=": "486218000000", - "60YehnGT_BpX89K-2iB9peXv56dwpDh98kvctf_WwfI=": "384165000000", - "60gKdGPw3XJZjMF5MMhM_3P0usWExVpHwbu2Q2rfFTo=": "455391000000", - "60wG88pQW0bYf03jX9TqZ2YHeeghMZ4H5x_hNH4gp1g=": "817604000000", - "60yjp8S4kd4B_s_ouQ0XLZSxT1K8jwicu4o6-syhzes=": "383179000000", - "611lqFF8GYYRn0JuocJrfhfaAJziyZXr5aJJZbenfNc=": "469837000000", - "61Lj1qAjYPRv6Z7tlaCieYb8t8YVSZ2VBDNPe-zhqFE=": "1623378000000", - "61Nty9Ib2Yz22y_qpO5gQKma1OXSEU6hi1KD6BvGkrs=": "584712000000", - "61OPXyGfbKOSnzjuVRyod69KHh8WT5PI1PkgDLyx0tc=": "381436000000", - "61mP5ylf6707ipjBLhM95L6AbiF3hRu22SstOES1Tn4=": "2122230000000", - "61tjYrcCQDL-3xhnJYh7-yGN487C_vM1LIKngZXbSTU=": "826227000000", - "621adCWo6bmoEFgyyKbLyngw9xifGOmmZAqZvbDRV0w=": "375836000000", - "627Agi2yp2t7MIX8RfiC2MPabHmQrcNTJ0EQA9o97IU=": "984162000000", - "62_6Nuz_pC1SzJs1TynlzH6fJhshlL5LPQMg92aUZbQ=": "460892000000", - "63gpQfCaKhlg8Cd1mSWTWdlxmat1keXxPw2tc2YR1zM=": "1156520000000", - "64Fxs6YzRaTWr34Z6QynBjqUqfYlNyuVy84Gdq0EMxU=": "393732000000", - "64iXEjxpfyS0nJzS0-Ev2j130DgwFKjiuZU-ocbDw4A=": "490157000000", - "650BQ9CVx4bSkOHQdu63W9QVsKt49K-iejfPymGqJVc=": "5659777000000", - "65QwwkZsGenAx4R6bQpzwluWFx6cyIkGiepsg7BwB20=": "416646000000", - "65XDppVBcrkXti1EKR34kRRocyVMWdYHa5iden08rmQ=": "804067000000", - "65Xpfa8-rDAsvsLCmsDRQLym9LjQsLGLqpbnq8SlImQ=": "1974213000000", - "65ZE_Q8DFOfyXeETfpCbkl4BnPGXeP54PCOhZmIEraI=": "2253448000000", - "660iWq3djkAx6R_ga5w6Ulo_1i-fQB8TCOE5w5KbE2Y=": "377902000000", - "66Dici9SFDIfKjhej5uLu6bLdGouQlTNPYhzl-w6NkI=": "502779000000", - "68-llL48dD0bvlKCsIJ3l_8lTJzXkqF4ft-9Lb0IK5Y=": "462687000000", - "68e0lw_XlMeOKcmmij_OBANEyqQMntRbkz9wreMmLV4=": "1946496000000", - "68irk781uRmzi9PpmINXr06U8sx9Q4zIVaxPOulX7z4=": "2176024000000", - "68uU33Gs-RZWzmgOa17LYV7aHHkVuPHIFc0U6PQJONk=": "4173438000000", - "692A5K5EMr1Vy0DodLE57t6aoBCywMVf99lrCfVqMXA=": "677908000000", - "69ZqErNUFL6f9da7bWd235PqzfcYD8eqq3ZF0VauYV4=": "394154000000", - "69bLWX7DQ0x4rzKURzwbQ93YqM1NRIevp48QzVmau6s=": "997494000000", - "69gLMaYxBVehV2dq4Oaw5KVG7n5aVDhYv3nK1x3achU=": "2262442000000", - "69mjqQy3gj12zO6TYsdyx0o3T5RkdV4ODHy_0ymK4z4=": "378086000000", - "6A566IhGVMF4uBovmjo0rZ-7PaZLNhr926cB8JLyz2M=": "4197861000000", - "6B7MPMHM7FeKv9GWXiCObceHmGUXxnGrnYracVARmk4=": "381836000000", - "6Bfn91dsXfmu-n4wHSPZS3ShUEVhYPBQmHr-d5Elwio=": "1011286000000", - "6BiBSpAnd2vJBy56fs_2YlPKnXsew0_ca_h7WCWKuro=": "385505000000", - "6BzAJbV4R2zDAkqPJpJFeu4004kF5FVCWi2gXI3HJlI=": "2499446000000", - "6CRjMsgtPH2U-2R1lpr2uUS-43naDir8PH6X4j2V9oM=": "4110858000000", - "6Cgg8hyIS7rorqr0-3USQ19RKDU7_APiZ1C401I5D7U=": "3846153000000", - "6CpLn1cecygNgOhTeeRC1cCBi-4aMp-Vgxg2z_2Znqk=": "1153846000000", - "6CzitkkzqqSjjOy3MUarWu6bwSlxOF1XXIW0WbGZQb4=": "1083757000000", - "6D6Wow5IDaF39hivUmXkgqoIHinriIB_NhFNFJ_H11k=": "830439000000", - "6D7XKwtdbHuXic1105Kg-jU_pO7J_ZCtEWOizdyXBao=": "500385000000", - "6DITrNBEFC0rwzOuf38JNeL5Rpqcr-bj_SR6XoGYQCs=": "627506000000", - "6E4fcuvWjsLdjEpaufusZHUmdHxHfDhyDTL2gLfRImQ=": "459646000000", - "6E66R1C6FRVFhEIcgQjWXLSPX4IRdOMDgYILr1c8h7c=": "546532000000", - "6E83eZsljxcqO3vpYxVJxevjaYYzKL25oFDp5VWTp4A=": "391132000000", - "6EiJdKSb5IlifH5QC_lNh9fZGL-Ny9OH1qapqcL-Ieo=": "1968983000000", - "6EmbU8nGxKQy_Ws6_MePPGIMmesev12w9SeP2Q5w0p0=": "451406000000", - "6EoNKqbvoF13ZfoucMKlCNchtgIbw2SQLjfyYNakVZ0=": "384615000000", - "6EomJj70VHSSoamieb_93Xrk0nk452GsWzLnIh9BJZs=": "4072694000000", - "6FECLE59D6Nfcg2uyfpZCmL2JA_YL64U--2Kz_7bsec=": "2442525000000", - "6FEvB56kWhNV__7pTqfE7pwlJXxRXYM8ijI0HzyklkM=": "20348678000000", - "6F_0E_wLXft4NynaATh_sxipwp0y9plv2kf4HgHh9hE=": "2133408000000", - "6FaizCGffewY1c6FI4IdoWqjlM3sPQ4-a6gIxM4E_Uw=": "769230000000", - "6G0K1HVjpv3U0SEsY2riucnrzQDZsvo7uf0ehBQPEa4=": "1153529000000", - "6GDXJLecozzeXd3VK4JaJUEGu9eAe-LDIL74RDKee6g=": "457031000000", - "6GO75sYyLKkV5Gpz7VNFzEFrSBa6hHy22csmlazJT_g=": "642211000000", - "6GZtKPNDzSDe-xlT54susUZXJ3UkMEP8uMy4WPmzYVg=": "6041637000000", - "6Gg3QJL1D0Rj2_H9VIhDaiM9d6pt5Lf3phsv--PQvuw=": "406167000000", - "6GkoDiXJEDiz9W1K_J1bzkV_wrIRspJbmOb-K4a3SJA=": "1157284000000", - "6GmDa_2udnM-ou9n5MOSlHJpMibazpnOEM71n-5kIEQ=": "1050424000000", - "6H-6V24sN1oP0yacAlzpS_XKqSg-LGBPIhHj-WtVBss=": "417633000000", - "6HZ2eksN085QG13jAE4gAMBPO8-2iMfjnoqpF_DPb9o=": "1151917000000", - "6HZR_HoOa7v2Pds0hLe1WnVTwSBRZWlSWNbZKqcJv9Q=": "383069000000", - "6IAqU4gDaNFXKp66FXw96vU6PP478pSghJ1J4kW79Xk=": "4167006000000", - "6IUvBOASTgKTRUxx6x4JrIqAku_RjXOyhUPTcuOn9NA=": "412618000000", - "6IZFYEGHtJ-rK2oZEKSSAsKunQZKiHlnd0eddVAXQCI=": "625272000000", - "6IgdZCBo5V0UduyIncgqvgmlkXLxWf9gbnMWVCCkwgE=": "1132077000000", - "6JTS7-DQQ2ybppOUDcKEaMBpeg5Dti3DeWGc-4q69iM=": "1153846000000", - "6K24Eea8LRl3oRDFzMGMwNZswYcwAo_qcuyMaqorgCo=": "2320523000000", - "6KEbqVlPplTfXUoyJCXP3Ul-70MV9ksI965PDXT8KUQ=": "416673000000", - "6KoXqMsXDyVpesHwCgfVEIe9LTCVikx1iBzOh6NZqGo=": "902926000000", - "6MXqmUeab4Z8Q7WUf8KMUzEowz_N4-0KK3lZxWOiN3g=": "384688000000", - "6Mqo8RS80mx2kkQq2F1ac5MdKtkCe9rSV6ET7vWdhh8=": "756212000000", - "6Mt99wqpxvDUxqT2WCQleznjzYuQmRV-qPSRTibdu7Y=": "903715000000", - "6N44hUmjvRQJCD9XKPKlCOFe9TZTPGVd135Xj04Luv0=": "8249146000000", - "6NWIfksyzr1tJMPTX6ErxvCr7AkWnXWex80Tu7NNkgE=": "1818181000000", - "6O0OvssVyULS1REzHTpZ_hzguOOq8HhZqifD8HJb8rM=": "470699000000", - "6OkT-b3IUeyayngEi2vcON3Ns4fuSF_br1nsMeQW5tY=": "11337577000000", - "6OxOS5tAAmEVAZIv0At8W2uOwPQ0A0TdkQ48MMigSLc=": "32290884000000", - "6Oyokb5BqaDHbvfP9V1E2ZnOnMzCjarzBckWhmVZ5GU=": "761623000000", - "6PSRk_nA36u5BhqtKjO6ONlUoUeGMFL0JttSOyWKCkc=": "2469861000000", - "6PZ618joEPDhxPt5mOJu6QL3d4vsUFitD8a2wZQgCQk=": "2261852000000", - "6QDOhCQkWQQ6LrjVTWArWqXZRFgOb_eV0FlQ0CNCS3A=": "449980000000", - "6R-xZZS_nWYPByURdwdnx3ELXc_GEoYCtkdKyABN-ys=": "470446000000", - "6RB1p362cMP01OUbliBEW-GL8LqbcdGhDHnzcPVH6kg=": "411085000000", - "6RFUgTGonXRJ2pxUWJmXStvUBMnBr7g0yPkH2rVWizc=": "11678653000000", - "6RFlPqPf_MK8cbVJaQVYjVSMRiXAyyHBMU12AKcr9V0=": "394620000000", - "6RKc0bdQ1_SndR3dqFbI1O-_PZHm_lkustS1wpbRgbA=": "455383000000", - "6RprqeKdz-jEr02jNdxvkP1ZTPtpum3oe10TsJ6CboA=": "5014959000000", - "6SIKPnQc3U5ftrWTIpLx7qyQ98W8Y04U_OrihFBh1nw=": "454545000000", - "6SM6_3E3e8FNg3He8at-glBha1rEFSgSd4tt9-DXCmY=": "411085000000", - "6SOCFyYPAiGkzciGkWH3oZjfrXlc07JrfrnqhByiTuk=": "769230000000", - "6SbJf74DyP_biWP96b8DpdGsGuwKxBsEOgFmIql0hv4=": "417361000000", - "6TDIocNpw9L5CPcwiOsEGHMiC_RiszPgaBvqq9K1fnI=": "382737000000", - "6TEJbJpjBSmiMw1qXw0Lea604FKsUn8BGY3iI_Joy2Q=": "1374653000000", - "6TVWPc55m5joLTwgqMfRfcSP9BlJHGtPQ_IpDMbkEfk=": "417636000000", - "6TfqiYd8rriG2in96b8JLh5DwuotMqNni8uV5W6W9yo=": "4196757000000", - "6Tmx4P1ix3TtYgS_7kd4nQcyU4t0gkCKFr9PWsnjHJc=": "382544000000", - "6USxz5Zmlz0zGTidnocRod56cwNVxvoCgLFuWBrCOMg=": "775861000000", - "6UdDMKFugBXko9IjY86DkOB6LboQbnoL2lCe2NhJPxU=": "450738000000", - "6Utx86R5Zwq7CwMNSyvW4zsshHZogo05Vki7zNq078A=": "450953000000", - "6Uvo2BpjFsX439VsFNE1hDJKW-bOvUMg97t0NH4gDv0=": "458632000000", - "6Uy6hUHPlULDE7Jr1hzb03NVEvuy2KzbpY2LYpgRsgU=": "416181000000", - "6V6Zvz2rgq-emA7zxNu-Gxbx6vyzvbSIV8uOLPRQZ-E=": "480183000000", - "6VEECgLFseiZhuMw0LwPYGXlfWTH9JZwPOYtFpjAN54=": "1927533000000", - "6VHWCDBjRW12QYivRnY38qTInKW59XexxGLRCbrcYKQ=": "576923000000", - "6VJoOP1wsMIBRCG5w-YJH9zGsMriwGdgzgpaeurSdLM=": "918273000000", - "6VSox4FEdddKL3CVOLoTmrvlIIbV9050MCKgU-XwFck=": "769230000000", - "6VgKGtyKLRfzqPI3mtOhm3eJOkvuIM4kVAvcYy50l0E=": "458016000000", - "6W7Hoel3Da3u3K5HCY5YyKg2e5rWu-64zits_y9-m18=": "752625000000", - "6WITdmo8H1eypZ8lnrALUd80D5FDC9haKKtZaUCxdx4=": "384617000000", - "6WUug2fgRx5fXkePD7-w1_1RkrSEeLrMflEr65V_Bcg=": "769230000000", - "6Wis-pbfXrlw9u3EO1fryVy6CNceceWlwX9JfCrA_lo=": "350959000000", - "6YJDjKOZsLgvvbuUJU0VUNH8szYNS9Z3cl1puJR6bpY=": "500786000000", - "6YZ30C1NRCW1TbVW3cP2n65MpgoF82Dd5u9CS5VQubw=": "377810000000", - "6Zc5T_137gzAr-Ok9YtLbzTu9hz3p-5FJrjbfpYPLAQ=": "2086531000000", - "6ZxhS9VhhAiAMrO-A6_xdPQ6UGw3pKpyN1be5JLhhT0=": "383170000000", - "6_1O3NqJH6bG1TZJM3orMVP5JRH1w9YILGckk6y6Fbc=": "9164805000000", - "6_PpsBoM2vrbhe9mM4qFkfU3mA-vin_6WHkiPfBxXto=": "384517000000", - "6_jVgvn02A2r9jDDhrNL77by5oTyVQNLCONmlZiWxOM=": "2318726000000", - "6_xdjbOaL-gaWrx73wDrF_iSpysp76hqKkURXcdx4lo=": "770052000000", - "6bYpOz3L5brkLr_z2j408rJLXTHW4TC6kgFrBH3k4Ic=": "411085000000", - "6bkCszFdFlm_o_QFXJ_olQU68xVvMD9jQ519xlTghDw=": "384615000000", - "6btSaCphcO5VpStYUEQV4eIaJ-Da2JAoacnHfn7efyk=": "1173884000000", - "6cBhME67X82hcBsQhXYHdw3FIzkSgU5i5jpAp5AGKkE=": "1927554000000", - "6cCEHk7CKt0OUDOyqlsDkyfULQojVB17qKDC0y3H-JU=": "386133000000", - "6ceZg0zEe39B_-GITw0lYR12euxK5X-PF2jECjlrm2k=": "2115384000000", - "6cjYrB1Yq2-24Vurtvl182qdCNuzmafbDwWDPt4BxTE=": "412229000000", - "6clUe3aEQoMqRFvhmXjsGRC8SyufQ9-6uIGc4Yterl4=": "423368000000", - "6cpged-wB-DpYXB0jzqZj0-5vmLgGn8J1olYd8uLWf4=": "789328000000", - "6dtAhr62kDO6d1in04PrqEgVebs7V_zTDmpNqgglD4o=": "384615000000", - "6dx1jWre9BZVF7rDwkWlCoj4kv3M8YlxDPPsmEO6AyE=": "416666000000", - "6e7hGt6HTSGred8vJAkODyxB2c5TBF1RVQbBGA3HXBs=": "795454000000", - "6e9rWB2tHYfq2T4fOsOaDeg-ogQ75qsGEcTzAw616Ko=": "384615000000", - "6eAir4PD23spijwvZBKg9PtRcuaHdlkTcM-R5tu3q1Q=": "1249543000000", - "6eKVDXbjsgJ1bFEzUVA4aELm_9RwZAgrdkIZUwneXuo=": "417364000000", - "6ephxxYkQn0ar2MloGsHsRxQH7P11WFOYOWF1pTKsvU=": "384615000000", - "6f9eA13xFPd-6rnr09EsMJWeGLJX9-itG_q11FCjxmQ=": "492944000000", - "6fHgWItxe-llnrU_w7SzMPuxTy63v5G3h_34ckfVkXM=": "384615000000", - "6fQue2RvtvUS15Nyn1J44WArwKX82k-5GUL2Y7HPZDI=": "1927537000000", - "6foRjFps1zzUQj_Lj-cJZNwu9oPXXaVIib0njqS0Qwc=": "411568000000", - "6fqefQvafaicZMkZAT2ieXkQrHd55oZRkgCUS6GqB9Y=": "383497000000", - "6frlHxbjSyB8SDWkezKDRnGyH4ZAcJ5tfRxxAeni5os=": "651266000000", - "6ft1e7MJPI3XmQOFfZq9o-Q8Us_j9euv-F-YeH3kWxA=": "463394000000", - "6g-6iJ472Xph2B-o1I_OW_b362Dmq06mNrotuKSlJus=": "692307000000", - "6gOQQA2h1dGvUf_or1MubK8dmNt0GWuB_EvAyaydL0M=": "410211000000", - "6gu0goWD8shK_KQB6rapMLatmA2jTNSeo_yuYqRHpyk=": "466384000000", - "6hUPGyO1LINPH3CRNWqmqso9zgNq3BLDG-X5nzTFhZ4=": "384615000000", - "6hX4l4Mdvj49fwZvHj6RgD6iJkn10NBjx5zV1hBuVQk=": "382870000000", - "6hzsG4muQwhQBjf5gsnGiliRlo8RgJKTu82HEtjxpgA=": "464104000000", - "6i64t9iMuM6JYdO5eKTI5bDDq7GrH-UpxhVKcbB_LFM=": "5267998000000", - "6iXm6baXqtOGr1vvgdIz5dyYTksq01AlPDHErvH9VWg=": "576923000000", - "6jDl_Lal8QZ7g9IlyXNF4S4cP42Q_AvXBAd1KNj50lg=": "911480000000", - "6jbKQyTOjhGrFaSCwnMAvhF6ArV2uRsHvhZHD4Ru-sQ=": "4031982000000", - "6jg4niJhJPivawNC6d5L8un0fqBxbvmjEuZJ1oV9l70=": "5028864000000", - "6jlh9Il7cnrzKXvtX7oAjlXy6ztHoIBCFJud5TPqzZc=": "453401000000", - "6jrnTWDjJcuR3CvryDFIYBRX5nEG1Lh_FamUcC48u9w=": "928209000000", - "6k3KuU48x6RjA8ymtVLkjzam7Tfrl1AR1KNTvPkktPw=": "769230000000", - "6k6dBjI0LJTreJGrKP75ntPdIX0afL_5ZxtiH-hI8I8=": "469949000000", - "6kH0qFIRjk6H2zK_7HRhzsTwj9FL33MaWO9_GATbh40=": "1001940000000", - "6kQrnaHD8412pknG5AmSra61grujYTLyf3iUQGOVSXE=": "769230000000", - "6kZJFgmQsxKduGq0qwuWyT7_n8ZEnTISMbWdb5uhAQY=": "3846153000000", - "6l8jEFh4yMv9rqGEp_VXqmSzXnr9PchK-SaFLeGofhA=": "883836000000", - "6lHLmOLsSeNEWZa5C2CcdfZSiG4lm6dMY0rYC_MFsZc=": "455125000000", - "6lJpc6JeWQpS5beXwOuDXsgkc1BCCRsePFzqgVWb5-o=": "1923076000000", - "6lwCpo5l__tsdrt7jaH5rLQdpdmVUsTS_00DpeVk2mw=": "454433000000", - "6murL0u5FLDH_grSp4okFMptI4jbrQxCcuxHFk2Qzo4=": "382059000000", - "6mzJx-_acci7qMPeuSfNq5bKFFOGlsSxn_pslfcy4MA=": "384684000000", - "6nJP_gigghHO4lFFtF4VoRLMInT5NRc0VR5mdULIEfE=": "5769230000000", - "6nrTi_upPzH39sDoRI8EnbUgCKzBu47-JFtgLRrJQmA=": "385510000000", - "6o93ul-xZLP5qXL_Wwe-v985-bNQWK1Esq2oR0r0KPE=": "1653216000000", - "6oF7TVRcQjBqaULusJABQKIfnJgEiWFCdaX9mOl57PY=": "746411000000", - "6oPTzkaLessyL2UojRWGuBolkCRTXh0HaxFjoEtA_M0=": "458402000000", - "6oY-10TVAKdk86LB103qWoSfkzu-rjTKglpdm3F5P9Y=": "2017332000000", - "6pq2sqEwBTiLsgSXJC1IwOTbNJw-lFSV_LDNHtdoAmE=": "1951054000000", - "6qZIxIZk-NfpvO0JJI1L7oVpeSV07G6u2kuVg21NlqY=": "385506000000", - "6rRCWGamm3vi0WQ6RIt2tArR81nrWY1Sj_uwozqRChE=": "3845053000000", - "6rhP12f0xGsl-6xdEgTSm4truYRGJY1EJptU-sAvvXk=": "384615000000", - "6rnb9ji1NduhNh6XQRUjwE8jjOUJOkXv_9JMDE9LmDw=": "458120000000", - "6rsoMj-vIzSK5GJ6GLOutNrremVzH8z-dobeuMo_T2w=": "1257695000000", - "6sThHmzPx7UeRMVS3q_7jDdvdPM6Ua8_sRD0Tx8Y4uw=": "2487538000000", - "6sZat-45e-0kT4dLdkAptkRnZgRFy6w0EJUWG4RcfGE=": "3081988000000", - "6sorQg4bXz6vr6Hyjus74bI_1UEG1-vTJJ74cP9sVAM=": "3999999000000", - "6srKgUszxDgepuWyvCDMY0WoKLmcVR-bXncD7F3ttRM=": "5104948000000", - "6tB7ajKhR9u58uer349_bXV81z-ZNchc29EwwJqJE1I=": "462146000000", - "6tX7etIRqhVk_qqX72MuDiKKxTuG8xN2hzLfaXsVGAY=": "385506000000", - "6tx8Ys2HuR3Yn_F64Lc4p-PLCeJeVb3VSYcS9PKl-mQ=": "5005400000000", - "6uLQMJ0QZLHgdgL6ulTpr27UjTw6sq6xwy9vp8F6_6M=": "4637772000000", - "6uLXX52042Fgazc34m8R9ikKPE75PFDFcntdQSeArbA=": "712965000000", - "6u_AzXaQUOI0mDVBr2w1AGxzvAifR238A0DvdqZo1rw=": "382479000000", - "6vVfEKLarGSbXKWC7i5XmSNNXvgwapiR0b0It0p2aOk=": "391132000000", - "6vbhQewTEwiY46ytfMHGSthxW0o7dqas5T4sH4V2US0=": "464230000000", - "6vjFFgBLTHjmLAHeC8TuDVM3vkOXJFvTu9-zGe_o92s=": "763562000000", - "6vmE8fojS25ThmnubKn8_AS2NMpSP_KLMPARVkDr4ew=": "792906000000", - "6vqMcyxmV8RDwOxNnaZD70gB68H8sCHF0KMugY8kQtk=": "929128000000", - "6vw5OTUBEUdz0NUGvY3D3pGMBEwLYP8WGHfV74yW_s8=": "7059074000000", - "6w69CWKaJmSuDtdKPeYvG-Fj0jp22tGl6okkNZiQrCA=": "934564000000", - "6wFqXwJ4Y5BlmdgjGoO5etCzVepnJOYQ-nGudJHHh5k=": "2301482000000", - "6xiW8paEth5jAc3CBTbEAKLFgssZim47Pf4XCUVzbrs=": "1924734000000", - "6xvi1eO2U-1m9KaP2rWHixmla8n9s3Q4XUPFGOZlBbU=": "407808000000", - "6yEnPUeGAetBHZjywOnhh31fXtnqI7NeqQ3CrBKVALA=": "428293000000", - "6yFKRNK-HgiCAPyGBbqEWB7KTzxOOIJToDNPw-OcWOA=": "845123000000", - "6yKjnFMhJ26M-Kv9kdNBc0ay9To2mYDb1UNQ6u-Qm6U=": "769261000000", - "6z1yFQCdCsDde9HSiMBcwItwNVjbf_s4oGiF3wW7nfM=": "385505000000", - "6zMekL9IwIsRQlBPUF5eHrWplw5mhUABtSEgItt67mY=": "384036000000", - "6zWVBRT_1GRMSUivlYnGTIsVoxt0iwFDe5VPgTnEaSg=": "472248000000", - "6zbj6c8Js_WKjfVqsbW46leXpUxGY7tAFnL1tgZoqUg=": "930618000000", - "6zgjhbkuzlkEea_rvDHve-UtR-4eObOckM8ny8oARv4=": "522041000000", - "6ztSwQxxMZgrVyNCkrWwMafLDPOFwBg6Suxkoyz6mN8=": "1345596000000", - "7-MD4qWGciu0E349CXngaw5LqNqBQJLJf4dBQDQhnAI=": "405229000000", - "7-gMkihjfJqMjlIXqwrKUOQ7MD95GwS8kvpFqlpY-48=": "385508000000", - "70RUwtUF4WenubLQKw4FtHFe_6wkXLo5-zqswPg3blo=": "407560000000", - "70gruJmHJNhOXgiVNz3AhgyCvUvtxqCdjHwU14yD6rg=": "1522622000000", - "70y8egMZmMWChMOKN0_ZlihpNro-wRLiGeWLKnfe2Rg=": "473265000000", - "7146B1BOLfk0bG5fd6liuJMHPOPb4-8qmgxz-R7zctQ=": "769230000000", - "71UEV-XHNbmWbHAuU0gu9i0mrtSruB1oK_uhz-vLVtI=": "411085000000", - "727aSRt-0qBJElv6JwEdB-ns-4eEffkcEhQAOB_oPNA=": "384615000000", - "728zuduabdIVibvXP_LA1DfY-7l-2LDZdtZwLfC2rbM=": "448797000000", - "72drDjFrTcTzgr9NvxpPvrMHuK690xFO_bHtkKvLx9w=": "807833000000", - "72f8-FHRgLG4gXsRkcuZKDwHoB-W-6DYne8zQ8u4EYs=": "385510000000", - "73AmzW52_CcBJ6eC3B7Ij3Fam1Xqw_miZboNtrblO_g=": "384661000000", - "73TMHy-6nt0ZQq7qNcWZapKL-Jbg-JtZcSUnEtgcpRY=": "385505000000", - "73emYR1lToRvS2R3yGWijfldMxhkYjYPdhMmIT1poZk=": "1878876000000", - "74G22EEyH5UPOCS3gQ9U1nZudPnss-derKr_C1ytB44=": "1238186000000", - "753OveEX0nsmYYxL4DO9SpbJsNYKueJXMy8SlaQorrc=": "563336000000", - "75Bg4nQl8f-WK6XKMfbrHQffSFa_URKmjd6o-39icMA=": "454545000000", - "75Ftpxwwgt0rCRSUK7UdZ11837dV3QnoQgL9B4VeS1I=": "769250000000", - "75SFGLE0c_wZFiZ6VoRnKgoYar4J_aruamOyrZgN9Ss=": "376645000000", - "75WyA60Pf0gs0y3w4N8VHVph_dBC42HrpjjBYlIkO9I=": "378821000000", - "75y51aXiVhW0shL6VVaSDINGNSptI9P-SYq25x3-Yjo=": "655097000000", - "76GwiPYxL0tUvAGJdifkepN9M0CAUvNTFnPvuBtAYzo=": "384615000000", - "76jbnYcM9c--jcxJ08fdF2IORBvoUiY93jdOu_sGXx4=": "449742000000", - "76tMJ_RIaWcrybre9cJMgzvcMT23s8qa2HF9KocAxI8=": "1002799000000", - "76wkQKHj66Cblz7ddXllSC1gEHSRcxxkvxz1LjCD1hA=": "845357000000", - "77cYlpZCeD89Qwcn4e8b-qswUDMYWCdwD3tPT1UilfA=": "385510000000", - "77f54qCn1EFt0C09hJjbHoi1dKod75iFglB_2UtTLUI=": "457480000000", - "77rf2IlnkcDgWAuOXasp2P8UgNeThUCkclmvcJI4BAs=": "454545000000", - "77tJGN9F0bMh2erZdy2vaNEL235UJY1RpGoBH5FZcYo=": "912584000000", - "77t_kFCSNlP7-PLfyGgeDFaDX4Z_AE5fAXjXPCHiYJY=": "1637992000000", - "77zfOhRm491B07lxGGKZXKagzoDGtPdJJQ09NAXBye0=": "4156385000000", - "78jezzxvy1j6uPoyKRMt9xol4yOo4HJMQm1GjsKEbfc=": "9608394000000", - "78qF4u8_vFMbPpclKsbTYJFpSZmFde0L6ihPZsvmC0M=": "415906000000", - "78tYlBwGo5Q2v4Km6eddQjBA4gTsJyteX_WIBfXkY5M=": "377583000000", - "79r4y-VnDuC8FQkYIaid3WbmpfX3BOwaE2funM_PJ68=": "454547000000", - "7Aja1N216E1kplJbn3U-VpdDKFOeFFJkqoXySCdNwNE=": "823211000000", - "7B3Z9b88vLPeDleSVwdn12LEHjhaoH5d2WvED6E4-Ss=": "1156817000000", - "7BCtT2_kD-AMtonMD7NtG_z9a17PE5XC15wtBd4A478=": "3846153000000", - "7BtqJk7-V-gpdA55-d8g8jBH_S2sKmya26gPn-PvMxE=": "1926802000000", - "7CDNJoGKhuyaT4ONlkWx98L-DwZ0ZXnI2R3OgIiW6rk=": "416666000000", - "7CDtbENLdeiAEdAhAvD3gduozOlq5Gv3xJr3pTkdzWY=": "1150599000000", - "7CSCi8HRorJUEwzoT5h_yKlZel1mHIThQfdxqmEmbBo=": "385528000000", - "7CuPyTuOhZ1cVgysiTWJkzq4iKBYWKc7EuOwezWFWZ0=": "2265787000000", - "7DDdVhUFxs-lL4EhzDyJ7nrpfuSExIGsIFndl7rMPlQ=": "557477000000", - "7DE7lt6JyQ_RkK5w2Tsva-KLbwnF3WX100Dm802a9Ak=": "382476000000", - "7Dk9ihsCN4jR6ng6Ac0-MN0LHogkA3VrT7N1pbgEsyo=": "961525000000", - "7Dt2_sIlje8ZZ3Ib3OKpVDRRfSOL7xjiI5R-efTvMQM=": "390975000000", - "7E9B-AqJDcYF9gMlfqInlpuPqP3SA__rOAxsAMBde9Y=": "499880000000", - "7EA7t2mb6q4FJUVErK6TZj7yn1JcGm0PkTd04ehpMPw=": "383887000000", - "7EE8aB7a-lr2pN4zXmcPP1wwkxYUVk4YibDaxSQ5frM=": "384849000000", - "7EqTXodnkqLeabwDl5ISPhTJQX5O93TmJSKogOB3cKg=": "384615000000", - "7F6CuuremUArcOnhllxJE8PWXaKJc8cRgmS-Br2jNtg=": "1147439000000", - "7FAg3YtgrlR5zBMcdP1wUw8CrLCOJ2HkO7_ot_bftvw=": "924911000000", - "7FTFDLeTDEhutvwiNyCBfYc0sgtoHSvPqM3Y4V8pgQU=": "2082341000000", - "7FcbwNXqAOxG5aG-XkbluTcfgBSUHl89dms0Cngy7oI=": "382394000000", - "7FfW6LfD2IhyEoKGVQglPJ_FoYPAlKnpu3G5vVlPmjY=": "10961522000000", - "7G5CxJKsOupxYvIG9lDF8xG2E1e6x9L5yElHQux4LWw=": "378821000000", - "7GarNxLCPZzXRFMj0rX1OXq9V3Lc1IhkwcgyLO34G48=": "441049000000", - "7Gq4MRcZnqx9btB5qc8DxhPk6thGaAfUtKM_iLFqjuk=": "1153846000000", - "7HQPQgLa1R-mB1IoQFlQGihs51Zf4fO1O1nv7SPdasc=": "769103000000", - "7Hcjr9PP6E8bTnXm9Cxqm0xF12cIVrP-5rWRCg2TAM0=": "1542961000000", - "7IHqdX8y8EcqrgnqlDgIxKLYYzmdfwu23Mll5jRapI8=": "926808000000", - "7Ih5G6KzQWLrPDatnuflTdnGBtBv5zJTo94Oc-gvFek=": "416744000000", - "7IwutpZRCY5ibojRPr1EbStvpmrgYJqXIIdaQT_VK1A=": "383902000000", - "7JUv5veg5hx_4zIlByEdQOvemq7REF050LdL7tlvTy8=": "5163446000000", - "7KAIsgj90u8Q206WfAzZ4ISfMM1WcxGJNHPXT0XLUis=": "389386000000", - "7KQwEPWCa9k3TJGyP6g6GlTkKjMS-d1jwTB1WvBKgRU=": "10963305000000", - "7KUAuv3OOMFKurwBx2jqpAZ6-a59fmv5iqXVMjT86g0=": "823211000000", - "7KYI37IE21jnYoZX-6WxiVt1_tPFbECoBMuM4BGW9kU=": "1539573000000", - "7LUY9Th-UiIEAeoWciDpyyg80mLMJQjgvO9FW76T8PY=": "2310726000000", - "7LlIEZpAz3gmTio1Qn0Eo0mpHsP3wOBZi3e22bIz3io=": "385505000000", - "7LzF02ktlHdTVm3_NnfV0f9dzVZCR6O6i_4HWkYrSuo=": "8195048000000", - "7LzbxVPj9S0Zw7nvjuJykAhpSQty8Ku1PSj9eJv6Rmc=": "555632000000", - "7M1ZhM2_oPZV4kSOGFl8_unbcyOSKVs3KYn8pXN-Ofs=": "454545000000", - "7MUl2pvpAVq29PTIllYuNL2sQnZVYjAD3pD7RVzbjcA=": "3758700000000", - "7MhZAjKAquvEO0xzkIYkWBYB9odm6mpT6y0QKk_GiFg=": "458870000000", - "7N2xrv6o-ZR3O1hleEQajZzXU5iM9Aqh3rLLFM_t1Q0=": "4230769000000", - "7NbA4RR1vom1YPAWhboWtKOhIC4nC1ue8Gte__EOtYc=": "445981000000", - "7NmnaKyucyLO_ywUgnjL1B9BgAo5wr6RuB9XKBY6-e0=": "465927000000", - "7NyJumkPAJz8RW8shR9NaU-ka9pIiNtC_6pdVV8zEzI=": "412863000000", - "7ORaCE4JyMavEcwo4wt6RX5Ybbsx7B1sRJpQCRdHADw=": "768663000000", - "7OfPHxxXTmNvRVLudpIqazttXzJPCQFDDbl4L8HOt30=": "4966614000000", - "7OfsvZIWogZDlAe65bAEeXj_QS6bdCQKZA6NA1Fzl74=": "1156517000000", - "7OiNVu8PQw53NVxUPqBSsBvzL6oI9giuFzshoHz_158=": "506074000000", - "7OinsoSZj-ifnaIQs-EPCos7ozoP_CIyJZdE3oR4drA=": "1927533000000", - "7OnvqExesJOBY_yjAfgkPzJEBHgFKDLbROLuBkst2XI=": "448254000000", - "7OunLbkd_BnLBQtcuDOdelAQkXn02hM7gu2YGBNfq4Y=": "833332000000", - "7OywLp-mAm-aHrPrM6xpYo0crlPzMfKy0hFWO6DhQpQ=": "449960000000", - "7P085GRG99WxoX-I08cPW8D5uyIf7ZvBBs2p0tY-niI=": "384615000000", - "7P68_xpqfGgrlcceZm1j1L0qFRgYyXqY4Utkxc0vOEc=": "385508000000", - "7P8oR6JG8fGSDIDabOwVd9AgbzSiQ4SLasrIYY5Ua5Y=": "7936637000000", - "7PT-036oFBYIMpj3kn-5HaBElGSF9-EPSM4l4i8_B8c=": "3307692000000", - "7QG0pWgNjTKRE6AOXfzqZK2jgjXdTpc3A78CLypuwGY=": "384615000000", - "7QOk2jT-R9TQScRVDrvXfLDIHaHRqZMf76kvzb88xOc=": "4621453000000", - "7RNb7LusJ0Dk51gX89J3x3V278X4P1XeN4mOO0CAX1Y=": "983706000000", - "7RYRDszwooGHt3mJOA7NYlC8cVfxLT6MFyAB1VYHY0U=": "502779000000", - "7Rpi1Lb5NJL07YBdLPKSyjZmAfelmKsjIlXzjQFBQCw=": "384723000000", - "7RzXZcDjaZgeWVBI6IiNSU2EbHl5olSgFcobWgR67G0=": "1855209000000", - "7SkOXhxZY3D0MqV7efJrZw6KW3q6WQ3ifPGRnuwpitc=": "634433000000", - "7SzaBU5ta_P4g1loijfRz1w0a52Gtjq_hFs74OJHnb0=": "4166666000000", - "7T8lEmYXWFYxeAWEdcrbgqRlYzuBOOYe4nR7RUhPDLI=": "381677000000", - "7TFZ7U52td-doBAPlZp55BvYShwHY9ZwbT0VpDuQYdM=": "409481000000", - "7TTAezUTBIfBvobk-YlnSlIwHMTFwGWRLB3kQjkZnCM=": "385283000000", - "7Te-233rfJf8ytLZDmyuni1VM_k_dlJFS-xvkBUMTrI=": "8355256000000", - "7Te52MHiL2Jl5jJ7yJwtFn-3zcrKSGqfmosNpiofEys=": "832900000000", - "7Ttf6dS64Q3UXR4Fe3vtv6I1XhvyT-ARX1oM2jnEQk8=": "563879000000", - "7TvUggrJ093yEF83SVXWmS65qVZ-8TAevJn5IA_Vjyk=": "385505000000", - "7U4VIu_XFPWiag0abNkrlu23tO1OFAhKajpLzL0l5GQ=": "385506000000", - "7UGJaNHYmp1DTd1h4Ha-wXFoBa7GhYX8BAykaQ0W3Y4=": "459858000000", - "7UKzQyfMkozfmT7FaXKKROKplAENXhOcUuShCL1XH7A=": "762587000000", - "7Ull0rHHQAAjT_FaV8_-c0jM95gbVqubOIFATuKxSOo=": "385561000000", - "7Up7MbEE2Hnf_0IekDK4hpQJDfgefIisvgjk2dtV9Sc=": "18892272000000", - "7UyHPMdlmQ7ulpqghWUDPRr1bPZkwCuVXoxAdVjYjwQ=": "385507000000", - "7VENKwFaqs3FSZ0wMS5NOL4wwhbGm4qZPWK6oybDqvs=": "382414000000", - "7VEZ4Ooyig27WI0XFOWFURxulpyclDE4qCbfjjf3B3M=": "839951000000", - "7VUGFtJW3KkQNWo61WuJkRodyYP0Ub7YC8s8Fn2mHto=": "825650000000", - "7VUzizA5-t4oUtpwafUKVaiF64hgYimuvLFWd4ra9g8=": "2069885000000", - "7Vk1X7qvm8sLsbrgyGh7uyYuBtQPoq9OtfHb8Lv55FA=": "1374530000000", - "7VscnfnTlVtUZvRIYI9IGnrunkidhmxdd5f3BQlCiko=": "388604000000", - "7WKwjmgi_ik_Wce5QvxAb7jCVxtLQVjfSa2XX0-b2ok=": "3846153000000", - "7W_bBJEVm7h6QWvmTbH0MClGLRghVBYqQuVR2afSNq8=": "815308000000", - "7XUmn6eQdnPa6ASAkqqUOlIxvhD0cIOI1P-Kdm2503U=": "1911972000000", - "7XXyLGWVlHsFeRQIthD8ClwfQXAvjMpvCM2MPqYKiWk=": "579410000000", - "7XeSFYIhGpX0vXXl5iZgN8zb7E6OV2VywKP0PTk4xWE=": "3706663000000", - "7Y9KfQM0RrEjuxTTpZQN49wB-kPkrUty1Y3ReZEMpTI=": "427689000000", - "7YCJ6HY3Y23fb7nNSijiHWuPFZYtYDACYa0DaZrGdr4=": "39637569000000", - "7YHLsxOdQFMsr4Qqh2l4FETbFd-QD8nFf3Zvmpw5GO4=": "416666000000", - "7YoiJY_WqruyZPI9OEQWkpILOy6Xk5IlN-aY4RpFmBY=": "451418000000", - "7YuXPu_xsWKsizijDQCRKr_1Ed5rmRYzQPlKqSXn5rA=": "7710117000000", - "7ZQr0WW6Fl1km1hj5qA6WUuAKFMo1fwDfgDiKaPj1ME=": "1252906000000", - "7_IhStc_48TYpV-hGhr5dh7uXYdhEGQDSPuWh2uwR7s=": "424962000000", - "7__JHOopW5yGbEP0sABVI1kPl7qYdXFtCCFMGvudMpo=": "567004000000", - "7_vBA6e1Ic3QMxT6EEov9eDS19LVN6-qZfuhI_9BRUk=": "465100000000", - "7a-JaeWFSyY9SP2liR6b5jTJ9hX_YomepztSNG_i74s=": "464881000000", - "7a7KmcIF2EKy1yDKXSb6L47zh6ucIv5nvMDuveIh8GM=": "753439000000", - "7aMm7xaHQu3iyyz8ER-V5FgkZpeK2AJ3ehdE330aEjk=": "384615000000", - "7aUNBUzS28Jv3E_gmBOJTW2cX7-FjqRTxxSZbu4gRu4=": "636148000000", - "7awc59E_E1PpL0DyGhew3mUUGx3EKbP7H_8OwwNCfYE=": "750896000000", - "7bNJ-8vg9ua7dqsCpHtrqbjmN8U2jSGs1A1JJesfP-w=": "3076923000000", - "7bXfiXbGSTQO3m4rZRA6udDWTiLrFqxlmdNX3N-qAXU=": "476850000000", - "7bal8XQdw_WkyJYE1ffeVUZf5jCTbixfBGqgWx5_vAg=": "384203000000", - "7bl3_moJU3OvE97LJIT3F8T4cCNd0Jts9mlLfAG2yHg=": "15083913000000", - "7c1sppNLQYk8bJ3421xuib_dxQGG4S1E1cYJjPe-94I=": "538236000000", - "7cEaXj2j7KWv3kXg966Lo7dq5lxlEugULUYp-B2XRRY=": "769230000000", - "7cWOipFtdf1Dvi4IZXScP2G3RiUhazZwCXaLFc9rbT4=": "929753000000", - "7cXp-0OddnUHaZqmmn8bPjA8P2n8dDIrE1SOPv2exEY=": "385506000000", - "7cepx5TGTGbGjV1T2ZTDffdPzEg2lHuSMLtzcRqUF68=": "411085000000", - "7ci7urCWeRfAN1VigNz_cIwJv7LoqOmdlH2_1_zwYVc=": "451503000000", - "7dBik3ambCjbpGZvbnKAmcdpD0wLJQQOb290ZLMesKk=": "384615000000", - "7dPKjarxmcFnJIoayz7Qxbv3AmRdXOozsBALon4vgsU=": "351391000000", - "7eHQ9Z4GgvIexzEYXCeh453ZaOa3a4AnJ25CFI87UGE=": "407109000000", - "7eUQ7xLoA4WMftayW4jN0-n3RNwNMck6EpVZUD_RKQc=": "7700887000000", - "7eVgDy6DOCALOZgSQerGHdH4Bh32ARvC1lA1dAQxwEQ=": "2072984000000", - "7ey6zaN9abOKBFTRa3IA--sZmzs39CKmhCsnYG109M4=": "566600000000", - "7f9R7w-a3Lslj1U2-sJ8iRra0RGe-zn1q1YKP7vqpAg=": "1923076000000", - "7fMgLdcUty1RJykNVlThVbc8v8jeb5xL7vf1Oz0h4d4=": "462363000000", - "7fXov90lOXyasbK5kx1C14tnOlOpI4wyhQXPgKD_W6Y=": "554186000000", - "7frUSDgtkw0C0D2NLG4KLyf4AhHDe0yWzKkvX4g95o4=": "1247142000000", - "7g3miEpOEZbznPSdFG0Wu5Ap_n2UmmL3wvRZ5s8AhT0=": "8363441000000", - "7hjh6orZbzHgBujrnzBnou3NvTUL4cFu4aEChylf6qQ=": "1411432000000", - "7hmGWW7ZetNLvIKVWKfTTtFXWmHAi67SAPiyyGlGCGc=": "3698977000000", - "7iFM1zz2-W5a0Ju2BdVkAeqSX7Lxj4NIgzqOgIkthoQ=": "763008000000", - "7iOAWQdORjbG6cu4LvwFanK0SeSVvXmamjxHDVvYHks=": "384615000000", - "7iyhh-AFgQvlzoStIQgVa_XnMqOLgMqxqSKg1LyUiSo=": "3613957000000", - "7j5873lYP4_-e4fhdmgB7yMfw75Kw2qo6sVgxGE2lQg=": "413603000000", - "7jDp0SQkmKsqZskwb-uBH93t0nwNxr5-8U7ITlqvPLQ=": "449698000000", - "7jNg4ECnN162dLaWUaj9tcKkItP6vXTIavxM85mwMm4=": "769230000000", - "7jR7VrjJdOwSggZoMpx_cAGNW93bn6Ty7172nYFtQmg=": "1175093000000", - "7kE-jpOJBUZHMpx_p2VzphxYuZqkoGfhjD8qe2j-PpI=": "1858257000000", - "7kIHlcJrfa1DbN4T-95-lVUXp3pNveXpICZ4X8xdAWI=": "384615000000", - "7kJZEuDrp3LQc68h7v2EOfnX6E9cYc2rELHz8Y-obWg=": "422561000000", - "7kKj8nlb_kbryoWPYI-sHNQonu_iqasIkRXiS8RTWAg=": "1223425000000", - "7kNznzbqHZHsnY8f_4VjpSKekervPC2pikU3s03ONpU=": "399936000000", - "7kOKARa3BXUz6t9BwulZfVnHbIX1GWbTf9EmWEOrFKs=": "794429000000", - "7kV2X4qrHDijJVYxE-SMS_EmY1fhoYN7A80MRDgDMDY=": "1173675000000", - "7keOEnIBg01IWxSyW5s2TkZqySwA56Z6eNv7tlCitp0=": "387365000000", - "7knhYasdr7yxMEI-_hSkddc8o4JpYumsA5QRPiBgXxQ=": "386543000000", - "7l0DwWsMv3H1k_RW2Lr7Q7w-0P8e2_SK2gnguyfIPPo=": "384615000000", - "7lbyN3MuZc7z6ArMFdmQTMofccN_nHPSM1O1MtbZvWI=": "411886000000", - "7mfwdm_uD9AZVIMqvn1Yv9mPKNuO2gGfbnvJegLJZEw=": "713270000000", - "7mrTcFX28NyJlSITrrX-53dnx98c9HVJO3R1zCL3Pf8=": "409034000000", - "7n1uFuL1DIf9rwZ1MZSmBFeOUNLsMr6K5GpSowSd6T8=": "385347000000", - "7n9Qy4t4B6ju77nXcWguacdL7taEkOiWnUhXg12mqqc=": "466963000000", - "7nIxPj0WsEZJkpQE7OZo2A16WuLRDC69kSaq2x_nvQQ=": "417632000000", - "7nOMRaEOTHBJ1Or4FjkO_o-SsO2j5sY5T7NjsmEDN4M=": "414551000000", - "7ndOMdroWHndNINy-62_HkQI-8VrDQ7mTqMqQJV3kHg=": "3057692000000", - "7o3qnyvywcvC41t_thwnUTQ0LXD_0E5GqhWk15efCwk=": "52548324000000", - "7o7D5wEtRmWTSz8HXwXUz8sZMz9eHG63Lj1LQK3u1og=": "1346153000000", - "7oLc8d6nIUsX2_dVwsApsbmgonpKNo95RmjyJuJO_24=": "449085000000", - "7oW1bnUrIw1fkWshGGFDMOeeEmrwxThQKVPT2LNUx78=": "424269000000", - "7okB9Yv5ZkJdjrVCg2_PP3Ls9RgqCOLHGoPas3iPlzs=": "4106294000000", - "7orgGp5_7nAqfuoQYnb_ejFZvaKowKMKVFUS-OBshTk=": "418280000000", - "7p3NZ8dWnaX79IKNMHXnGsKf23UW9ZwMEWheoaM_JkM=": "384489000000", - "7p7dEmrOjaP8yfM8VKq550d7mSMy_2p-LiqldxrRVjU=": "378272000000", - "7pdRyCRrMiZ3V8jhfFtqhxSpyhqBghiAp9h42h3WSW8=": "454545000000", - "7qDcn0kncwMxvPtBD7zrVzhXsk5eN9J-7ve9q-hmKow=": "407808000000", - "7qti15B_OoeKkgjDOTR1bGnla8AfgM0xnOrt77SMwuQ=": "6715384000000", - "7rEVD_ZBSlU_2RLEQ6Pher3xYqy0nh8635CG8AA-aEY=": "15751710000000", - "7rEsCWhlnVEu4J0JlP76mqZ2p8SB9JtnBsLbj8r2_nE=": "1758461000000", - "7rR0kaM9mQ2a6ik7410AISKZKHRDx4vRphe6d58G1J8=": "383296000000", - "7rgTsubF6Y-LhBt_SLz2_mbckyAwUUO1zoi7z3SWJIc=": "429119000000", - "7rhXZi1FC6oWDDAur0ltIpfzO1a26lEWzht_w9i8X6Q=": "1391600000000", - "7rrBkhCp_LIu7oz5Ax1SgJ9QxCuQjR23GI8myLKJZ8o=": "764788000000", - "7s0Cxp9xqYo6zZ0NjGTUMbUohhaZ5iYBgvBBziS-S_M=": "1484383000000", - "7s3cKdXHYzbqTbBXxOCa1LaPZox_n8FeNSPPiiXuyxk=": "1629150000000", - "7sNtlqG51l-QQ1Iw0HR0j9nSYosHw2nsYX98kPAPZzg=": "375287000000", - "7sfwf9FhI6kaN6Qhr-cM2uIjd2OnZkbngNn1TRNSt2I=": "4911925000000", - "7t46zREcq4xXFTGjLv5ldr_Sy4k3N2of_YFJcJ8u3Ks=": "1363636000000", - "7tQe4Ykg0x8nnHmEZqhfLuxCaiotLj-GJVBeHL95BY4=": "1923076000000", - "7tf7NPA5LzKZdUWZ6QKyq8OWIYKTnJExa6Udyg6bjBo=": "404066000000", - "7uMJCiYxhbaL9qoCZQ8szRryCAIKX-KGh8de1nMXWa0=": "385510000000", - "7uheoJWwB9nErjw7vVTd9lJ0G-ueSmtw_jmuaDINycg=": "4582577000000", - "7ul4Gs2jwh3vXRfWF3lwRAqKdFiyait8SY0xtRdV5lg=": "1355119000000", - "7vbfaOWm_E5K7VX5B40ZxhM0VunkgT2DFxa_2fTrGLM=": "673529000000", - "7vs23t_uYmgY6X1lCnEIO_8UJDlEu4XoUxQ_YSUMsOs=": "412618000000", - "7wH0ph-m8nmZ7f0UG0imWYK3JyD-dLVxDJwNNFwIpbc=": "459886000000", - "7wJXYlvH-Sc5ulZYd5vN_kn2j0FkxZgqLPTNzkaxvO4=": "4689799000000", - "7wkV3dQ7_VZCcYpBDsMR5khprF6DaMOUY_4qA5RA3xE=": "417636000000", - "7wu3rQDPqArSVsML_46VuKyCYMppsfloS8DiJCZBP9c=": "455320000000", - "7xLxgUM9JVVaVWwtKfJYVuZmADOtzU6V3fAEHK5srTQ=": "384610000000", - "7xgRrZD4d1zDQgTbDNujzSMxOuKa-EmV4brSPVzL4-A=": "602785000000", - "7xq2o8_TwbrAdA9RI31Db8jbGPMsh95jqPYjUDBLBYo=": "1885233000000", - "7y7OE-Yz5IGHwEARiX9XyVU8T3svHdD7iAKFg47XLro=": "384338000000", - "7yAvBo1nWhLsBGGKO7ZpgthidOHyL23xafEBsbZjlEc=": "1410174000000", - "7yDAFXsdJn4DHQaoUiOqY7Vk8uwAuI2Jvs9EZkHjJ1Y=": "783595000000", - "7zWVQBJFyE7krUvCJFXjY3yNMohL3LaAc6KAUOnGavY=": "657881000000", - "7zm_KDsYYN7Wm3gW0egjAUwPCTHPr1xk7C10_HStnsM=": "1183411000000", - "7zn3BNWBVA9rW0u9xqJgoHuDwo1-l2fW_Gb1Yfwq0t4=": "385510000000", - "7zsFIpDOeAZxEP4H5bpLNV2OjOXRt5Cu_5wMOz_t_9E=": "12649356000000", - "7zv8GiYM4j9oCVf_0GhCs51wlA1Qu6GB6JBYtCoyOlI=": "769230000000", - "7zwBKdVrTKHV6x998QQuPk3D1iKACYji7ywB9LHpaBI=": "1263115000000", - "7zyr8ro3RuwnQvwMdv2pyqHkXMM4VVBfCr9SFnX6oCA=": "384610000000", - "8-DJ9PAyAgVbHukZhCjfOXqzV-2chr9ca15siL5N6H4=": "2031176000000", - "8-KREcHxzZPlh09CkNNcfI3Xk55mNLDfuszUMuKaVfM=": "469905000000", - "8-aUlpvucanHA4Z0VDCShjCIaPybKTSxdzCS5l62Mcg=": "576923000000", - "8-eo6t6mL9YbAGl2zUc0AzpuogK0mIwQg6G_hHk1C4o=": "4000000000000", - "8-ptmDXQDW7aBIWCEeF0b_k72iIiI6xatuwBEGdB64M=": "411085000000", - "80e3teWjBmbGOXuOj4yl6IFfa51fXJr1sPm2IQrXXWc=": "490605000000", - "80yx6QrDXD0agNihzAfwmLeRKUVXWJRES2Tl2_9Px6Q=": "578548000000", - "81-Q1-ElMgJmWm2R-F-pDiJt-1pgFftAUIHTwSfD44w=": "769230000000", - "81AxeO-Z8eCs4QV0xRfV6_dtYMoV0Wkap-atqM50Zak=": "1264425000000", - "81WX_pQW7T8cQQHt0tBBPlCmtSeHAJcs1g6n7h56oC8=": "1136549000000", - "81iZ1FuhH0qonXdfqwsDLxGLwfF3DPkjJZYKnmCau1s=": "1629615000000", - "829Sbu00b6breSlf0QCGt_suDL9mBKa0Ir5pG8ezmTY=": "385506000000", - "82QPRW_4XHStSjrBvWh3_wVkN-MZdEYnkOu6RR2g41I=": "378633000000", - "82XAtjFyVQc2t64BjB5vFsa1JjGrh3xnMg3Dgn9SBGA=": "383990000000", - "82XecpT96fYCqbuGaC_8B52kmxas4Pq8Pbyn1iBXkYw=": "482124000000", - "82_g5DqwboLFWDaN0KVizgFp9gMbmutwxSAb6hhVIc4=": "4544264000000", - "82ib4L49IjHCsSfxfcfpKEKrpuKSjFjD2n1qk2aZjjg=": "917964000000", - "82urgaZKr7R-hhqOVSmc8z5uMJeornJgYWw0StQDabs=": "502530000000", - "82zPFrzSf9p-d8eaAZUFeFA5zs_40WSPj-NWrkQ4Gq4=": "1538461000000", - "83C3eT5tLupp3h_J6HjHm4b2G7RSjmHtt_EGJbqbip0=": "377685000000", - "848aKlVXhEKnSeqXQxjBLwL9RKNeOxIKS4fa1L6S7D0=": "463106000000", - "84I2gDgxzDHTWPcTWbWeI2fpoQn2jb3DdwFQwNdisHM=": "451333000000", - "84sIX3QbMqjKnxpCS2iNAhyt_vZhU1xmvdt2jsKMuCw=": "1686538000000", - "85MMHEwzWG9j8KuE8la1z8gHBM_4XQEBDXawdghZqvc=": "1617207000000", - "85qkAAX9ijUZMgM6kqA0SlgZs4n9SCP5CC1fOu0D4Go=": "417632000000", - "85wwhUsWC6FX6PJrETygxNbbUHaiQ13OgFYscjnL7AM=": "1831153000000", - "863WWf3t2nJKaiRpBYe4f1nv-lsIUbGhEYoNCkYPbWk=": "384615000000", - "86B6mMurOOK7FOdj_31unxfMSkzE4lGiukBY6bIv06M=": "1153846000000", - "86KhiG-p-fE8YBBGKRYKQJVVXna_IYPOTv_IULSP9Sw=": "383887000000", - "86MGsQ5S2UVnRphLTE6EIZgsOlUg3abCigkP4phYRe8=": "833333000000", - "86sBBC_eeWirvxw-PjYJhWfEh_8WI8aPfGNLu7Rdhxg=": "1382775000000", - "872SVsX5Km7tbqeaxwQmD5C1oKM957BszDjbNWAZ8jE=": "18806282000000", - "87aMhvCxaR_GWzvI8l60F5g3uBRjZ8NkX9rMVB6ODVk=": "1153846000000", - "88FOQffCPA9n-RJn8LQik3x9-Pcdm_NIJZCABUDM-mo=": "1366800000000", - "88I-DHGmUhA7eAtssQbeiCK_V3d818pvGtFn8SWEptQ=": "1235656000000", - "88eXtQzbPOb_zquCv66rvZMs9JyMpG4YcWRZF3WNTl8=": "1512689000000", - "88fzTS4FEqDiG3KR8GSY1nR5AH4e3vJGK_7goMsmIOI=": "1153846000000", - "8934Jdv4YY5Go2nttd535XxkJE5_gQUf5FZN7ravK3s=": "463989000000", - "89L68KIeT6zCB88s_xSTTnbD3B2EPoB-PtU7bmLQBrU=": "388098000000", - "89RRDr803ISHIJcsgieXY6ARy3Ka8VuK9Jb5gApaSNA=": "384615000000", - "8A6ZONH4mTZvIodJmSBqb4DqzRqJyXaxiUSjkSKebUI=": "1504440000000", - "8AN9uApZwk2lM9JQLD0DjwJU7bUxd9ywjnRflvsBhik=": "1798622000000", - "8AQ6kBeD7EzpLGRk1DVvipwK7V32uNlOOhLtHgoFPgE=": "751903000000", - "8Acmu3tkBJ_cHTzRoPRQzlr_R1nmfWYBzpJOsGLbkr4=": "454545000000", - "8AlbcQenBZFmmXNrpEkxsqz8VVvTp_FPE92-Ydmtnh4=": "3849177000000", - "8B645z4UwgvOSjVAf_4SqiclHWOFzqnaFmDDMog85n8=": "374878000000", - "8BRe925vIjM7hRN45XwY9K7xPA-wduqVpdg_1xzCTtA=": "442970000000", - "8BawCKQNo8CqJwSk-uFgzt2K8IHwAKjgSpOdeR4ZD6E=": "1545426000000", - "8BmRf50B3d8AATJXWtAXIerSuaPa5ex7jaFTglUNV9g=": "466670000000", - "8Bt894Lxgg24J8Am7MKOsneLmctZZC1R-sLH6KMAxJc=": "408021000000", - "8CJlF4Y1taf86P8tKcCbqt3Ei67uIykrOB-Pm-0b-Es=": "908970000000", - "8CLQsQZQdggQCIoN8Ogy8KudPdM4mxuO1EcIFib2W3c=": "1146913000000", - "8Ca4XP1dRKPsBsG78w8UJeN66jjtjmd_qiL4C4dYdpw=": "1152653000000", - "8DEw0wkO5CsZvTMGPBOlEA1WaujIdG3XutCkGdBODYk=": "384615000000", - "8Dfmsy_o7NBkc5g-AEuvOiRbCgI7rjGjMB0WCiO4clI=": "833931000000", - "8E_oyJVKEAT_gEMha_FdmQuLFMn61gzDlC1DFAW0mBE=": "4230049000000", - "8EqVJiSEZsw38cpZIazA-ZoB3o9rdxmfWzRs1rSw5hM=": "769230000000", - "8EuZ8yVwmOYCcfL6hurvY4ieqlKKTuqfefQFQyGtc2w=": "383646000000", - "8F7lLkk-KyaV8eEUEdxyIjrWI_5dD_HDpgirFgoXtLo=": "1218180000000", - "8FMR2TGSJ9koX-4AM66s4_TnypC8dy0rADdRgPiadBo=": "455104000000", - "8FiEg8lqEyDzjGJsK7rPD60_uQRmZzXQIKkhHDbdVAc=": "415629000000", - "8FmNeiVqjMBIPrFlD71GZzmT78IvZRyWU_v8ZUJbHfk=": "3749999000000", - "8G-e6Kl2aoqOwWyG0N16ZIyPUtPBFjkjI-95P_15yuQ=": "809605000000", - "8G3W8_j5ko_HGV9spBFXXlm36kK9u8rwEscRFi4ZK4A=": "392386000000", - "8GDL0KRp42pAHvNcBDwY4JyU7FpMa0TfVvCEWyb0Dio=": "384904000000", - "8GVyBi-1MgKFkco8IY4DS-3spo57Vxs7fD1_u_-Gji8=": "841202000000", - "8GpIMkHUC7ndZfyp078BWKMBck6MRvRf459PC5wSEhY=": "461263000000", - "8GpNeLsEquvaKSPt83L6ForUYxV4YMK-FHEDxYQsqrw=": "456733000000", - "8HB4PTeTsdWuMHgEQbr7jIGYcpxLeYmPJqt7K1VCj4s=": "1538461000000", - "8H_jtBLqYVNPY4on2CVyAEDE77xDn2UNJC6pJWf2tXw=": "1664838000000", - "8HqarpNozzMdbqkN50_7Y3IYXop9k_TfsbuT51FSbRM=": "832943000000", - "8IEbALsu5KgwrQAZpgeo9uenzWNMi_OAMBU1fezjBLI=": "577509000000", - "8IXiewlYcBSYvXYt5qQvY-DcYE-89MdYqd_2Ns5VBLo=": "1010897000000", - "8Ih-tGy03qkKQ0grvHsCgoSA7rKm8FHoPjq1AwlltBA=": "927599000000", - "8JCKrSMg2y15CpVFz8VeQCZWA0Ih0zWINHFiZp8sVs0=": "385507000000", - "8Jts60iH3YfxgNVrXDkfNMqr5cFdC9ITIyPltfJgf-I=": "2093639000000", - "8JxHbU8rxEwx-SDu47DrqJk4XjYcXEGykAeT1B6oztE=": "454545000000", - "8K-JNoCdE_z15kFUIwuCywG7EsI40P1zGztv5kgh244=": "1249999000000", - "8K02kNlJUQbs2hSZaPuvxMIoul3ypIyQB-97Fm11gNU=": "385507000000", - "8KqtDqcIyPDax_OElWvoF_qnPmVHk4ho3bzdy4rpiTs=": "1038461000000", - "8Ks9XxCRbOeupHSdCiQImRTshEqsNslB35WSQ1gn7hk=": "380259000000", - "8L2WXPolfZIwogmencihu7QYHkvSPC7uhk4whSEB9hM=": "379344000000", - "8LDeVf0Jkx5q3T5deeTERlfoznxX51jCAfVlKESWHtI=": "387993000000", - "8LOvtZiVFKNrM4LmIQXrfeVlpMSbclISHHehJu178_g=": "383462000000", - "8LU_n4Uy4B649RsEifDmdxVZv0bTF3fmKGtf2ZBRMAc=": "413819000000", - "8Li_mryUxL-5jHYfAS2CIPRKqzboif-O437dBMOFBGc=": "448838000000", - "8NRaBKFIOKvBtYym7Z4s7UXqhA_joZOA3AVPieHJcQE=": "449705000000", - "8NprQHlqifiZXBjvfuoOs01mxUrTtq33prb3zOUf7Ic=": "2499999000000", - "8O-b8_LHwiTmwq8PQMpfYj0S8fz1vcSSpFDX4TnC0FI=": "416901000000", - "8OTgMdtMmhRf9pLc0JQRCcjXAR4u3kw5UmJkRjw1LQk=": "407609000000", - "8Oh8NVhfF2_ucI45HDJPdOlaf4S89uwxrpmImGrYc2w=": "382168000000", - "8OrIYG0dXY0qYEuG5VB1ODY0X1Kbo3B8MAQ-6IaQBs8=": "456716000000", - "8OwVEgwawFZemaLMuMVP1ImJi5-BHYd8U1qqyz9QPUU=": "409110000000", - "8PN1PMKPQaFNvYeF7_gnz8XHErb-xoT34gckFYr_sak=": "466317000000", - "8Pex8Yqb9fetKS0bflKvh-Od_EHQvKHpTGAICVFGac4=": "422196000000", - "8Q271lf6mjoV1QPmdwe7ejWK2K6FHdEvDhLExXOL1wY=": "464104000000", - "8Q2JMm2-0rnul-PMsmeOC2J9KG9FhNtdKIUlHfTLIPw=": "454545000000", - "8Q6ta7614qbBYJ9pAMIahgbLOPIYN1ayVJtdpgvKMQc=": "738114000000", - "8QYdYU3BwDPOaTP2YjBHvTCRfFrT7Z1jiOdDn8ATvRo=": "384962000000", - "8RNUbMFUofyzAdluov_hV_m7sKRZxgFk0cxNY_GgTxs=": "7693892000000", - "8RQQbaa9N8d_uBaiMdJdRzuobZ9fLKjhOfi2JbPYhyE=": "459730000000", - "8RVnLTMHLPloYWhQIpgLNbua7KnCXNm4muRYZqe0s2I=": "413641000000", - "8RYuUTUFsaUDNpoQGdOxfQu0Z2J8KeysXl5DLMEXDQ0=": "384615000000", - "8SAAQ8H0Go1SRoCA9YkI2xEa5jKSGsIwUvogX2MIwKw=": "3708331000000", - "8SOy6I-FKnJ15W6QHZm4a00hPc15GK333Z_oJgGj51Y=": "519230000000", - "8SQUplFXkdsMvK7AoxK7BMtJml2boM92BpTYECK8eOQ=": "416666000000", - "8SjJg9S5mr9TRGjYuAawwc0R2VLXuQRiSGnaLY2N6-k=": "455901000000", - "8Sw_MUJNhW13-EsFE68ii1sQd6uydndx0ESx3QY4OEk=": "384615000000", - "8T0O0io95QO2epDxlRdfEFau3CjbtAnTj_FADX9OEUg=": "1619405000000", - "8TZEfR8n35NKO1u2jvtEin2rnaUbCcvQ-VTAm1HjRIg=": "385506000000", - "8TZMHGwuiXZApfsM29-rR_Df27RuF0-5YqIZmQLd6Bc=": "1059313000000", - "8TaZVz9L9TWJlqk5Fw_naWNob--MT83_NJqgtqacabg=": "1538461000000", - "8UJs0S_JR3BJZwnCA2uT8RHwgUvtDHGkmpORzn40Jv8=": "408021000000", - "8VJtmoQpwm0eW3uNGgdaX12mx8Q340c6oevcLf7RoSg=": "4173180000000", - "8VJuuzCvchX7rEVsB1yGvv0F4-xnvp4F_UacMDOe8-Y=": "458561000000", - "8VNuvN8Y7TmzHllY34wgr4RbPabvHOwb5N9VbbYAHB8=": "1179939000000", - "8VQZrvSGrcITWdwCTwSZkFcgRPEPO3H_grESb6M18kI=": "489072000000", - "8VZp6xTZ5u8N4nv9Cn386Z2Ow_Et1uTYtlOOj6d5uHQ=": "417973000000", - "8WI8KG2KU1zoQ1wzcN2hQvKrACTeJpl7FsZxUTzrldQ=": "464954000000", - "8WOO5h2emV2i7TV1nSAuuZbbqhS_v7TUMEE5XKi3bts=": "534521000000", - "8WUmprcBP8cdhyG8MHH5A6xt2EGnVXOeVI7OQf9hcf0=": "455147000000", - "8WWfei29Igl1OTv8sgrfQPlzGl34tJHKefSt_Qbg-IU=": "454256000000", - "8WptqcK5D0y2sJaGFRqVrKsqJ24BTpZT2VaZSN0BRzA=": "473175000000", - "8WrE63bAsAfacaiMS93bk5CvT60uXt1nMDZC2xqUWY8=": "1386679000000", - "8XH-WqLofvktDqggGYjP51s3d9C8VHkI_8lOwl0PQao=": "762090000000", - "8XNyqLfTVsZM-mD6VzFpQ6lRMgmv7pF8bUDuwv_wwT0=": "478213000000", - "8XUIHmo050FFKol91MXMQ_Pz89KBRZL7FqOe_Jlun-w=": "850718000000", - "8Xj57odvQtH1Ouh8ysUxxHrlelCn-7v8B71SHVjR6CQ=": "615384000000", - "8YnKqLz9ug9CGJH676XLEa9BSvnUfGmT81m05aHEM88=": "3998913000000", - "8Yy4ykCe8TBdxEKLp3cKe32aaSAlIX1VFOhy5VNZjV4=": "19106566000000", - "8Z5eM14IDu_nvL8BclZToSEUt3lO5Q6Zk2B9Xauwwis=": "18181818000000", - "8Z_WAHgokeePLIfEV_ppALlwmmIU9XyfjaxD8REeIXc=": "423370000000", - "8ZbdTjKy485Y71YifxdZXogV_582kid9RGZGjPnCuGI=": "2309906000000", - "8ZkJRSF3KMJgumvQt7ULmOlIEvAwxWORVgzzxj3bg2E=": "391797000000", - "8ZuH4doQTL9jNO-I0DekiBl6CVv_418InuvjTFUBn1k=": "917959000000", - "8_GF9X0NnmYLJ1Wg_EetbUVRlIVTcAV0Ko0-TXDBzzA=": "384615000000", - "8_eqqSxsl2Mcj793o-sc0wg7dNxVrIf7WIW6dcZbRJM=": "1909473000000", - "8_ia8ZHyQDDBxRMC_0AItDg6Z6uaZA_6g0avdMrud9c=": "462687000000", - "8apT47P87mCxtNYfmXHmXqc5BkQuEo_sAJN7Tel48DM=": "21153846000000", - "8bHahp27MxDkQjYM4G-uJpPGjthspXFS_VYfHqvu-5I=": "2050934000000", - "8b_kZOFKmkMzIVi3fDzVYTZjdrX101yWREfBUPsMSbc=": "384207000000", - "8cB0t-kXpDiOjjMbyPD8YCLRpMlOMkWN5jnzd5bQRfE=": "833133000000", - "8cB9q4H10eyQFCvSGyfbtpGMlcXBza0oDMrnbJHHCCo=": "1233257000000", - "8d211zHducycIrwMsqxMX4iEg_ofy0nRMwJmTc5kPro=": "772255000000", - "8dc48d73Q5BBQ0ac8K9fTSEGebb9O7LZNcnhX9ThqYw=": "1233257000000", - "8e9DLpgtpm14l-zUBidm_cbhr0XY7AfBRfcMNz7Iibc=": "1610749000000", - "8eeUtsOfDEl5BEc-zQgjSDY2w4u7i42SHEUynId79jc=": "385507000000", - "8fr8A8GWWQx7-woLfrwq4DVGKO64JjxQa-5cXfkFD_A=": "999999000000", - "8fxNh_Tv0-p4SM6Wkfg_VdXWfCA64mALvYaPSafg9Ko=": "442970000000", - "8gda4XqX_-tIcfJHtgg40xJ407JR3wBvbRDAeOSKKfc=": "457258000000", - "8gldakuvm2lpjBmQkBjdtjwPr0b3KVBqCzDMP6lbJpE=": "377902000000", - "8go6RFxN3iVCnEMM90qZJoorVYFlY_3S5nkuTM7RuK8=": "384803000000", - "8hCmrCTH9dyaVIdfgO6Q2MWXTRVjjy9fZDrLWLZpReU=": "385447000000", - "8hgHozk2Vl2kBnjeKu7_4seewkwlHyyvhIfIcqvcqmw=": "1999999000000", - "8hh0lCz8C8rLK7pbVNoA9m2BK9AB5B3WQ7_WCQNS2uc=": "1075092000000", - "8hneeHZzLuhDZynzrJPbKevuiYN7RksLLJEYvZyyJwc=": "385994000000", - "8iSux4b5KmBk0Hj96q02JnRcQFMqeOaZ0dhHNbZ2oMM=": "446674000000", - "8imL2fyJPDyh0acN74ShAx45sRTWzRsk02XUb8A-5Qw=": "917081000000", - "8imsp7reipLAJyQAQVHraLzCnOz_bswT9sDarbri8Ak=": "910936000000", - "8j6i5UZHcb3EcnlnTHtaoMmDdMt3FyEyLjS1KqNy66M=": "385510000000", - "8j7Jx3OcPBAKI8ESukRVfaQtmAWNBQv--viujazMjHA=": "378883000000", - "8jHOU_U9gLy0ZVpeu8Tpg-R7HFRJZVyb7CFnkPaIw60=": "3888630000000", - "8jTAyjNXSJr1WAKRBkZfY9wk5RI9K5zxqmVIQh-TY1U=": "384615000000", - "8jUy0CiTJcyfsL8yzjjydjlq2nOxQ7ryNjn9dLdfyQc=": "388601000000", - "8kCRP20M1h3YY7pg1r86lSpKom9r1NIksJCQ3CDuTFA=": "389363000000", - "8kMUP1F7yn8TFvlYpBhEKyGCPrXfwWlj5fAly8IC5XI=": "392009000000", - "8kRezFvL5im1yURJkji-TggrlZqpc__G81IkajT5AXw=": "1497015000000", - "8kSyYRrtCGkR8cqM76pyd_uib27EZspauBSMfTZ8pS4=": "3703832000000", - "8kTV5Odm-ZZYp2PMqao_zoMysIyvAyeg_TWus098cGc=": "463340000000", - "8l8AzdqtMih6riMBKN0D9UYxp3J4WetPq_3BuEh2bEc=": "416872000000", - "8lTdpTDasrgDV6t8p8iw8yGPQNRN4YRNsFCfqKHSGZY=": "469809000000", - "8mEhsYd69XCf4AAz0OG6YxRdYmqbOPNwpyvq0HTcxeE=": "2470847000000", - "8mIVNrGJH32uy5nYILlhV2Y2YfOeF7JnYAm8jN500po=": "2258325000000", - "8mbb0Yd3OgCjoofE6EF0C3XregWZ6fDUlZMMpWIrnhw=": "385015000000", - "8n8SrZ8BUpe4ggQt9wcJC_63JkdU-0RlfgeocUh3wjY=": "453324000000", - "8nB5GvhLItaSbfObd4Hu11-ikEecEe0NW5ULy73M-jc=": "3782064000000", - "8nFo2F1YFGyM1Aepoyb7-fKzUSZwQlCnObdkIDyUspI=": "384615000000", - "8nPOZabVsgydcrfrpgfOatVmQxMq1CbDqs79V6Ncgmc=": "768472000000", - "8nY-TBH8hUgX6iobhqGA0linP8E44TUWwFVdyIq2BtE=": "540154000000", - "8ny-MUs0ral5avaBhLvdbccvBRkTvDiRy93cZBPmHno=": "7083333000000", - "8o79QgfOvoWwb4pELkMZp2HbrDejyYKkOaDeRPXYsDc=": "4083028000000", - "8oPtKQOKBE7x1ZVxNp3A9jqVxJ1tk6uzSRpCwWZMjk4=": "390464000000", - "8oVvksToKRds6IQh7hviXdROvsw_8ymhR1MAvSs24t0=": "416092000000", - "8oYopQvkq8M8gPbBGXa1LeBxVF7k3m-LsLdAjcl7JoM=": "379573000000", - "8o_d9Y6C4eS8H3ycoyCcs2eejXBZXirkGGiBif04Rog=": "376837000000", - "8p7C28wOT-jzYeGFlZmLqGU2SF0GSr5WFiW7ulgpDr8=": "1149576000000", - "8pAuJWvszlkcl4ATqxblUKY8q9wEDFnA43cualC5aAM=": "3692307000000", - "8pgVgW-0WEpYugbdalVFqa-a7hyJ_DUwBPvhTsAiZWE=": "836269000000", - "8prGaEOmrsdvLLodoGC-6Aichy9mJ5NhS4aiby30Ei4=": "368358000000", - "8ptqMYQn9Yt9Fd-WBWtQkCoodfyh0djfJX5wewWKHP0=": "415097000000", - "8pwi-xY5gFJagQBPPvbWDt_lMXmnSfXYZyEJ32TraHk=": "653846000000", - "8r0l_puLnlu9K0icbIxSmJ5oftMS1nTnNFhs3KVmkns=": "493568000000", - "8rhJdP3s852I8EStQutKHDlLm5yky3AQC2ME_37qe68=": "763402000000", - "8sN5c7onv54oYpeps8ZIXPVmKBSkgnNpzRnjYTgd13Q=": "384615000000", - "8szUSfF4WPWLZ-G2_1ik1ueZqj7R-X3hETfEwF0t4Q0=": "2500655000000", - "8t1m8KfICEL5bAh8Kz51MLoUQrerctr9MutxC4pKUIo=": "416680000000", - "8t38kIeC6UPx-FDnB0M0QcAiBozXKsJpRAf2kobu3fE=": "7710133000000", - "8ubMGNIuJ98bEoIERrlYBqH0Hhdj3MB89ocAmyrA9ZE=": "10310871000000", - "8usX0oPDehYsHMH-Zt0LAnpRhPLCJgPD7KUeFzU6vtE=": "3748797000000", - "8vDMg6ja50CVSW9aSIOFJaiy2yROaRWKXDrSLKiDReE=": "416666000000", - "8vOTR9Undd0cxs1CxKtork6Km_2K1Zjo-OTYiW2ozLI=": "1411432000000", - "8vaTPJkjZsp8gkHL5Qz0LrOT6-xJ-vEJbOH7QHXj1Yo=": "385510000000", - "8viBuq4xMHlhmsM8oM25NBQXbqZWNB6s9MfvH7e39BU=": "1885751000000", - "8vpfxAYOIu3ODzwEpES6XF2UYzz7BVTCJ6P5XnMQXYU=": "384615000000", - "8w95bOwiFEqO2cJleLARZ8fNo2-0OTAxeWp-u1EjQ3E=": "4178095000000", - "8wCmocyiJIOJwe3D8gH59jEBhGxgDZYUrt5wwyeeIXI=": "455600000000", - "8wS5z7zwFPQ-PsimHUymVBV9sFXWLgICWrve7goVcyc=": "411085000000", - "8wgCKVgCpAe4B5Mx7Ej6qL-ydbpp39DfTxDnqM0zzk4=": "4999999000000", - "8wibeG5TJBrqnMbcjEAD-MGBVlmdpmH_Uoi124Ujd-M=": "769230000000", - "8x2jYE0Gss9KHaozv7VvR00xLyQLKiyu0sVpyOT54Jg=": "843026000000", - "8xN50I04_iXFTy2em42ulDCZBfD3DkOR2dn4ixLgSPE=": "426044000000", - "8y7QbPHuUq-PeiLypdg-ZnFXWmgNGFE2V_o7ewJNz_4=": "1142034000000", - "8ydMs7eOf7W1D2T6z3U0xjCOt9LJNlXuk4xEPEgmmMc=": "569023000000", - "8z6CCLnWZznPp5eOB8ADa__04c6DBTGB55CQmK_mscg=": "459734000000", - "8zvgXR2WhE_NJFDWC6PWuKJBKVyPv89MTCm5VFMIER8=": "443320000000", - "9-0meLiWCKObNuhpR-QUl-aMvJ_EGlUHxIAsEeVIMrI=": "2084212000000", - "9-GkNA6NXelqevtwfWRN3trj0WjV8udiMD61Z1DIR4Q=": "4842257000000", - "9-lZnsYE1EM6lWZCsir3-r2Ho_deT7ymfUgCMyYc0zw=": "1470112000000", - "904r1sfmlxAL8lM-_aX1WecHlF4-o7-RPQ22ER-6YDM=": "378561000000", - "90DOrAPfhrTPuGnPuWHJDYI6mgQyltHH8hTVtVV_Jjo=": "919641000000", - "90Ghfo53Qu9Wm3a9WgYRfR18Cnky2ukkmDa5NlfkuP4=": "1702537000000", - "90oxIU-DajqVlsB9CUsJU3xHSegw9vP8p0vLgFkcX5g=": "385507000000", - "90siLMgK-43_ukz2jMMJEGG_1haf8Tlg190ddm_fg4o=": "453846000000", - "912fcXZG-kuLgW-Qhsp6Ztl0aI7M9U-cqP305N1a_oU=": "19075369000000", - "91Blz2M1zBX3nyyoYcrlZ1z9AsECMWhUcqfE2uulUuI=": "379745000000", - "91RDU0kJkPiqfXluDdhuE1Z-qblfDhCp98JetSf_C7g=": "15384403000000", - "929WIZLnBcj845oJ9pFIEr0COAoYhlpoDr38OBVegZw=": "769230000000", - "92LvZ3AvfoE6vrmDBpm7Jm5gZ9EWfXlMYliA501ljIU=": "757224000000", - "92LzhKjPl0AtIoCVNRrST1n9_1r7JCrhZDWxbAA3tpA=": "771398000000", - "92PdWRXXE4Z2LlULzgCOZts9DTV_InxxL2bfY63f8B4=": "884615000000", - "92QkYtWDTkg8hQa99HJpA_Ae16nfRUOKyXkG6y0aW28=": "2498821000000", - "92dBUfjgnx_EIAkT9uxbXFYRRHNPT-Bv0tDA3o1gQoc=": "527602000000", - "92fQevOgGOjMMzGAxF4SNp4pRwExBxJDpcGu9xNK1IE=": "2949097000000", - "92h_vy24_s5thoPBMPZcy9_tpxmqgOv5T4mUjgrVBlM=": "454400000000", - "92v0SIJEUa2KzOqcmPdKoVOPBQi6qjfLyWjwF3Thtzs=": "446725000000", - "93LxRf9GBUizIZSM5iptn5L95Pc8QOathRj8w9cYgO8=": "2641169000000", - "943oNs1RJxYIwzxW44v5QxU1w1ZH3OzsUEJhnsu6Zc8=": "771256000000", - "94HpjTAFVz79efyzP0hM6VB-TxOgWgRSOvlS-kJJYrM=": "542611000000", - "94NREtIXAa9ap9bfTMWgwWjl5uW6mE0NrMspb2VPN5s=": "1976252000000", - "94SwfcdyBHeQBNC4HJ30WFJQzJLCYyp0l6ICLklGMCM=": "3878668000000", - "94fJpgSlXf2KL7n6CghM3mKeSiccTfLTfEdqzh0KKaI=": "982646000000", - "94lUATdjBkHV4oy7N2wgfpkQn7hp_asj2I32sF4iFmE=": "4004256000000", - "94pexQgd7PRiUMOGiv3M0-SZsdxNUE0nH7t-7KYDf-c=": "1046014000000", - "94vm1_jk8d_9SMq_mKp80RwwB5HngJ77dPDNacDep8E=": "1679638000000", - "96QABHyUJWBenaLMfS3q1VZ2cDsi3VEHYAaw4608AWk=": "472737000000", - "96sZCnpxQW55i6fEBzWr6zXSDsvbFGlMFiRhU_Nwlw0=": "846028000000", - "972lSvQm1mMel5FSkAwofQ93P13RLnzXxz_ZIMAQXHk=": "407808000000", - "97CwX9WNMBxJ_kPH1W_CeLmj_r5wZXRVB7MPvLR_VHw=": "792970000000", - "97o5HgNcNMs2DEcnLZncTbtbNJq7vLDO0P8TwQIX7ys=": "384615000000", - "97wNsvxoTMF_hc2SPlK680QfUOFIZvmaUwam30_CdI8=": "384615000000", - "97wRKNVE6AO8DEzd1Ox5sZmzRNiUoVkdjKfqi6ZAlsY=": "386318000000", - "98Ii6jKY3jzs5NjXrPWk7YFIMWo18C7-wTmSWWxBFUY=": "385510000000", - "98RJxlgHhStxkT5P0iiRusdJgoMer8KbBbErEX7aXBs=": "555406000000", - "98_kCAm-1aRdT0zSndyVfxNebv4CQWJkl6Fl_01XUgc=": "809005000000", - "98s5Of9QFOEM9jw0TS8MQTGxDee9VV6GzBdvdyoZl0U=": "457900000000", - "99Jn-QynKSKQ7DjDrC-L1FUrP3gGJZtkHVk143VPjGA=": "384615000000", - "99Ym9sTX6aDmpcn1FqilYVN4w9LgEAkl3zEhjY59VOU=": "1315376000000", - "99ZZOs86ZhhjZBwAwU9Z-0ni5mYQ86JTDvK-TqQnn3k=": "390880000000", - "9AJMW6ecvUa-sNPljngVytTxj55KadvASjXDqA7II-U=": "3846153000000", - "9ArJ2z2SaxyTw0pcEh1OSlFrFZUpYQCVTez5fKhle5c=": "800743000000", - "9Aw5Vs-VrQRmmocGr8M7q6M8u5Eakj5wMHV3QKsImHw=": "4479603000000", - "9BeayqFX4XayeIi7q1v-rsSokb_SxaX6k0j50nPDmUQ=": "413135000000", - "9BepV3nTF4n-aG9ffeb1dyITLZobWKZSu0awtUtk_7g=": "537298000000", - "9BiX5JomI8wcR_Ol88bTvJ44hPeyIHY7RvZJM0Dwobw=": "1636307000000", - "9BnQhgzKxBQrnD3igGYw5NP9h0FmfEdhe7_PoB-tpAc=": "384664000000", - "9BseeHsfPlEgSKcivX3wqG0ClZbnmWdZ9nDcb8XsAcc=": "1769518000000", - "9C5zydcIPsx3wJw_lv_C-_OScT_ACOfyK__HqlMING8=": "363462000000", - "9CGs55aNryA4nBPnd8oN-a6BAMuSJkOU6pXm9J2-q3M=": "445981000000", - "9C_z_JaZJiXLZDi_1hufgUsuEnaTfIxZBbyWQkbr6xs=": "4036125000000", - "9CdIYEvj76rrH3tB8zndyWLTJyNi9nc7j9wgdLBrG70=": "1041239000000", - "9CetBoJAJnia9nEVY5lZtbgHL4k22L1_MFNM_uyuFas=": "1386434000000", - "9D3nH6zzMeCDiTBpZny5DFI2352RY31H5R1ME9Cp8UM=": "384615000000", - "9DH_pve6eQG_0vFPtb-5ws447lqI4n8VwNwNgGQFEzE=": "458682000000", - "9Dco-APF8W2LCc-vrdKQyB8y_dpeHd9CcCKkWwkmBRk=": "4072337000000", - "9De0KakI_kicnflXUQyQE6WLBfZmpVN6X9E_1qsdVOc=": "382083000000", - "9E4hVsYvHQ2XrnStQReUiVlRKyQ0FOhG_Kxf2zqbIVU=": "909090000000", - "9EHfcwXH0ULIiojBIxlcQFqkPNO8hKadvqTiTC_8qT4=": "691196000000", - "9ELji81elneDa0uYK2SqagbcLaa51c9mrVwwbcNZAO4=": "416779000000", - "9EifCooTrx-qxBU1gQMWz_h4Psb8N2yQZkX1z90-ONg=": "6447884000000", - "9ErDWktgg4ufskRsiG4xYWvD_W-muGhiwG2MZq1SL3Q=": "390816000000", - "9FKp14xmmk_Z612e2KByodgYN-Guvk4VeM-OD5dAgwk=": "3893163000000", - "9FUw6CcDh-vTo7xCKzHJao5a9SjiSGoQ6KayZSXcLls=": "1156520000000", - "9FbHtL7CImm9-cLkaahSLjIWmzl2WonHKVDxA4RbCjo=": "384615000000", - "9Fey-HxaROzazJXQlGcs3ZeFzWPsrv5iezS5QcNgEuI=": "556960000000", - "9FvNZQl24DrKZNxsWjaegjCcfg7qM8OwJd3abPR6TYU=": "749999000000", - "9G9KVHlUih5rAd-3ZavFbjVUK95-ayIqM6cDgCIChPg=": "769230000000", - "9GdYlwdwCGILmHicU_5_Q2tXveh3OZW1wL4Iq8ZMABE=": "385509000000", - "9H4SZkx1oNZf57AAKq97A_rsBGBk1PwkhTq80vRk4fU=": "412784000000", - "9H6tNQGW4Ytce2JO-Cxar4uRjB_zAkHpXt2GA_p0jCA=": "383269000000", - "9HGaCuwUULXYX4B7pEHlzfABnWtGnGdLJm5gTCFNu8A=": "1828384000000", - "9HNEmoBW2s6C9uW6YNIvsCuC1JvgSTcLL8FKNq6roNY=": "526188000000", - "9HOXH9KXeH6eWWx6yzkdU1KfImz8q40fp0wydzCMpF0=": "490505000000", - "9I5FrxdHfPpmL8SxTOGd2-KXjf_4nVxgypfgqA3UwZs=": "388549000000", - "9I7pcOv03U61LnAP7A6muVDdNwe65SZkudaMmKJRyAY=": "411045000000", - "9I8uXj5Y-XRY--4EqLuq5a3ytXcVZel7DGla4XFL8A4=": "462155000000", - "9J7XQhUCUrI-nZodCy1Q-a4q2_dkKvbblZuKTs0lIJM=": "1483568000000", - "9J86ifcDNVA7Zz6TtkSw3j4YYNIkmexg1ZjYzIP62SU=": "390935000000", - "9JhyAPQs9FHYm4eCLs3Qd-9p_WmJQLZSz5P2BTrC890=": "788388000000", - "9JmRY18Rm8EW30TWnye5zfkPfWoG2BmBYxHfIjFn8ZI=": "1424064000000", - "9JoAu4S73CGUO88_DT-C3O01uqpgjqlsrm6LSWsWamo=": "462839000000", - "9JsOz7fhPfEuMeXwUtrFia2wnWdoac8jOrzfWPK09ig=": "6538461000000", - "9KAYglb5aDym9Wac39H8c0eIQr-2Gm0ZKEqmf-14E-s=": "465700000000", - "9KG1pUeZoE8IXU2xEH4Zae3gvYnRPv5QxIyOkM2QQWk=": "464533000000", - "9KwJc8nzIrlh3KcQj1ZSfmA0mJhgwawaI2LXZBI67fc=": "833347000000", - "9LCfCH8SCDYFtZpIwW3zt4xL1o1fhTUTV41GIJ04M5Q=": "419891000000", - "9LMfGQADEKoVVAWubxMicqs01ZiVirxt3Jg5mIvYMQg=": "1319281000000", - "9Ln-DQBinirbgYw1KxOGqZmL2R58ShRTrBDqwgmOiso=": "409116000000", - "9MAAxI0OcHsUZCodQ1lhAFsrAhtVPolDq-Sc6B9RZHk=": "1153846000000", - "9MFqLdzh0MqrsBrZChXEtURAqPpcS2CN-wiEf8JYCaA=": "808371000000", - "9ML7oqt435-o0KPuzEI7nPJx0UntybRQEoabmciksXs=": "8292539000000", - "9MRvLRsCaFHp8kFnLyyc9W7ST1ksDxE_ZZSi6Ybep8g=": "1722765000000", - "9MlxzcoGa-s7Hdw1q0FPvFdcbSpbxS6jIrWbQFiGxXA=": "2735903000000", - "9MwKMby7GSMkicTCS8ZXPhK56pkzx5N1xomNC4hruxg=": "902748000000", - "9NbzSyAl8z7-LHqKRtC75XtbxiYhLIUWvyojd2CV9jA=": "976053000000", - "9O9ftcVyomXiP65UGllKEYnB2USuvVmitC8LDVTcy2M=": "769230000000", - "9P828qFI9styarhLZeWIw_KjHI9Az2JOvHr1MQDRuT8=": "522041000000", - "9PEqttbj7ZwR32RmMq06AlLmS9rDRCpH4qu5Nm4p8M4=": "1153846000000", - "9PObfPFfnJ714m4uO_Hre9FlBQ90DEDqxhR4uBKCTCQ=": "384615000000", - "9Peb2wstXja0namg7eW41XeFe6tbYqJMtDPfVwc1Vyk=": "455777000000", - "9PieNrYv53OCvV35jGTS0sFiQTzKwLPEzCfOTuwt0Cg=": "395499000000", - "9PxCpfaTr5HIaOAJzpHRXJX2q0Nadod_skfTIj0ezjs=": "422554000000", - "9Q-V1-8HdhCPbff2YXYiGqwLr8jsS_au4r_JjpYZyxk=": "1155075000000", - "9QIXGQZnfTAgwzNhX6RZi5rbI2Y4ImOppQkjnIrc05I=": "916024000000", - "9Qk9ddn8vfiOY-6UPAoPHGSonT9AD_-qCApyaXlCDTc=": "458962000000", - "9RUpaD8V2xZGYPyp-lEJHd6Pkrzw1ZnliV2fxy5HlmE=": "376816000000", - "9R_0A7hcKwpCv6E37eKCvbDwrHuflOipX63K_kk0jZQ=": "1250021000000", - "9SLNQSOWlaODvQeQa8UUP-UnpKv3ulw8Lzzqvfe9cRg=": "413226000000", - "9SpJAEQ4Vfh-kNNVITRUQWmWrfPnmqVhyiqQfTSrKB4=": "520293000000", - "9SqH4oXKcczjt2ae_V18XLDu8S9mi5fKBNOa1oAjpWs=": "499999000000", - "9TFKVd0NrSlucW53qPi-oxvFqaxT6BvkmsNOftBBaFs=": "1041084000000", - "9TGqOrbhwaWwAgbKT46xXQ0PSeB6DaMOAsErdNH7nZI=": "416673000000", - "9TaespNoUf0iD2Z421luIbBd2tVG5kZw_n3Ni6HvsQw=": "6249999000000", - "9Tr7BfPlCug9JaLqTQJ64OOxNL3xnzy-FSt70vxU1ug=": "374298000000", - "9UDNFpBmEhvc3e_REdpVWhQD-9eQdr172tTGGB9V1H4=": "616224000000", - "9VODr3f3kx5nA22Mx4FPnUmwmASVHG7Cytpm46go0Bw=": "470553000000", - "9VPmUPHQDttkgGI_2LOG6jf73TBYg9ZSeqA4Dqwnx9Q=": "19230769000000", - "9Wh6rVSJ9i1tbuvOr_P2xjfUlvFGoKdAV1VG5FT_gDc=": "384615000000", - "9Wi6A4JaxB87qeNzdVVvbZOGEWfwPIpdOsx6LVasVSo=": "4658103000000", - "9WigTaPrSJ854InryYTCOTLDeUvpT2nna6XLkXF8fZY=": "1391315000000", - "9WmuxCD3d8fubjNrqq8QxkuxPGkpOdWZKvT4IZXVHOY=": "381360000000", - "9Wv1j3oH6iocJzBcvvmh9npqkKl1CgRm3uIxsE-yYVo=": "554116000000", - "9X975cPUUf586JjOl_vl7duQd0WT5o9Iq4WjS_YVIgo=": "775269000000", - "9XcrEq0KILqAVMp-mVagEb5uH2CBanxzbbr4OKN-yQ0=": "1159720000000", - "9Yt8JvT_hkkM9BhokQEHLnaaEMmNsCknv51YHFqlAeU=": "447070000000", - "9Z00_RQ8VmyQsuFYpO9wvqcWvE4jmRrKrA43nY4NBCo=": "379344000000", - "9Z22MRi60KLdznRw1r_o8YYlKEGgB6b_2oXpEtbo6ag=": "385021000000", - "9Z5mZH2M9BhdGNiTAiomQhfS4GnNib0hvhvdJSAWNcI=": "384615000000", - "9ZLS9b2ct0vuM4u_HKQvv2EY8ABsh_HfT9ssJ-Jbbwo=": "412344000000", - "9ZnCECt53o0hCMMabOwmp1IT4QmGAxIE1G5lnFaDFmE=": "423004000000", - "9_SG_vC-fi4Ny6zXOzORv6Lxj28wMmZnW7pjb9JDtA8=": "488247000000", - "9_VPrAwiCmIGEHlM5dUid5ety2lFZ7kAX4_0bBS2yVY=": "1814806000000", - "9_wA2httZxKr8XZPqbVWaLhSFahRem9Yy2Z60BXZlt4=": "832608000000", - "9_z5BAw4QxRVMadJ9Nmr0t129DhLeF8ta7oOPfNqDV0=": "769230000000", - "9a0XcXxqD9U6KMdxj3cc_Z5xJkPMobKH7aZJvMB5nJk=": "384615000000", - "9a5Xu_nbOEtq_jWKFmdJR3M3F4HNHwEtrjGpaDmxMjY=": "565128000000", - "9abv-pkaTH3nPX-Jn6euoibr4_Fa2EZnFCPnMU-E4JQ=": "448838000000", - "9alMnMNfGIkoYJ4KsQ-WDuC2CHw9ZBs-IenS2BRiPVc=": "23090727000000", - "9auZ3Y1DRZ8tocsOBhkSK4-N6bSdPcZF9k-blO1ir1Y=": "385209000000", - "9b2VM94rPfzfxwBd15kWbILM2PQgQn4fEImuv3sYPZY=": "379528000000", - "9bHHlzuSSV0xEBM_8eB2lsAYA_0UREKSYECSgPm02V0=": "6616834000000", - "9c6Pi-q7kEXvJ8FFDc9o42IXjmCffe0BS5hBfKfnOCA=": "415288000000", - "9cFpgU1EcNi8oaC4nEVjGZbQ0abfbouALH2zwf0g59g=": "391797000000", - "9cQG99FcZ7z2-ePI_ts8UMOD-Z37eFhQXCLWmQKlJtc=": "3855075000000", - "9cQkCQeyNf-g6WD8bLamTi_6JxfFSII3uqWi5y1hfVE=": "461906000000", - "9cxwpo_SgEY6mYxNeBelG2mSBqFn6S2_V-SSax8qfhA=": "464300000000", - "9dBY_og10aSV_X8i2jFl0OdgRMMXt7-sm9Ltog7414w=": "654571000000", - "9dCrX7C9Fq2G6hyYpZFEKFmYrTG2fq4zB_UKiB3Ev_M=": "825081000000", - "9dT7_xMWzPfW7yFkZH1RlKJxlgLtjvoOgJgzPtabqH0=": "1236310000000", - "9diHqKm5AvwhX9BMUi7v_26eXr8A6Rv46aWQYnPtwbg=": "1076870000000", - "9e3kA4A1RRvKj4GWDWVVU-ohtQERgKLlRgnUM6c5wZQ=": "3307499000000", - "9eFiUTRBvRiwxBhyq0w6RzY_ArKWJyIAgSRaGVZwkWg=": "416666000000", - "9eZNitLjIEWUNQ8TOswwxs-N_XmhxFxfiBkH-vFowIc=": "463601000000", - "9edCtPkIRZjFZsnj5CMeWkm9yVZj7KRNT0B6EzEJ49Q=": "1560352000000", - "9ej5yFyi3SqwX0NwqP3XRn6tPfO4Zl3q9XE4_ZPYPt0=": "410736000000", - "9gDZ7VB9vbgcn_gmogViMnkTbE69s4_JJ9YAWyy3sRA=": "1153846000000", - "9gQXOlCVdDz3jl48z4T3JLgoaEFU9Sc1mU6RdllgNmM=": "415558000000", - "9gTyoEMpaO5-uXTcC26hEea8INaeawOvHr7sVDUq21c=": "381024000000", - "9gVq_jGBI8J6YNhVLS7v5yMlD4VCjfYC3dmOBba_QjI=": "7709733000000", - "9gpYetiQURY96zlkI4Q-IAjccE6RzgQiY-Q0HKFRvMA=": "1641905000000", - "9hWdB97WPt3bn-3JRA6Cxhi0cmyD67i6Afmx6MaasWE=": "382514000000", - "9i3HsH_i04krZysuu_dxeR-SN3LQnZ_Du9JLj6Ucn8c=": "887108000000", - "9i7LKIQwaZ4pls_wrrVF2y1RLZMwIaTkxqtmK1d42to=": "384280000000", - "9iM5yA3GcQ5Ffxptsa_9DLPvN3MePydHw7cd7NJTVrQ=": "473692000000", - "9iq8aEzxOPUG6w-D9oKHwrG-oor3_VMgy6U4F5k9jiM=": "460628000000", - "9isrLqPuoGG0pIUFaeQZrNrw2IptVVLJ69jOmbAHYu4=": "464131000000", - "9iw09Q6W2mTvbXgFk2PIY3BfO29zKvGBJpzR9W-i5zc=": "460570000000", - "9j909yHfJwYDyAqMNB6IavvZeZYHwuevsrgl_5gEI-g=": "1924896000000", - "9kP1Lx3Q-zBWBpAuHoLcocm9pxUgcPC1qkXvOT-gRnc=": "9613800000000", - "9kPfWNKKSSGtAJA41tELB3HT_O-fY8hyDAhBdWpNBqs=": "2038402000000", - "9l-VntE-ARJRi_quLk4pX1zVPaF6beBv93Ya66uuiWk=": "838484000000", - "9lI_-jhyIisvUxFstLpYP39IdwXYW-YeVEqh5wYGVfU=": "381943000000", - "9lP92339yHZKXDgFa3sFuTy0t28iyOQMLpyw1IPsJKk=": "4166666000000", - "9lq6ZyQ4S3VlKY90PkiTejoRW3GL6TCqCRXrlsl6sRs=": "1156518000000", - "9mKOjYtmftBqwrF3k5t-RwLck76OBjGIseftqTT4IB4=": "636148000000", - "9mLfh_rbnIMgs8GuSb9OtLZ77Ov-bAVJuKZK_D6MJnM=": "501009000000", - "9mbsEbdQa-HITvkY0pAQYwgQ2EVm2jDtQGwZuwR6dXQ=": "9384823000000", - "9monSapZLe7UXQ9_qHDNX-saX4nPd4fiMhH6XSkEJjk=": "384615000000", - "9n0jK5xBYW3acvu5xthMsEG1NlTpv0hCrmhc-CamGZQ=": "2060071000000", - "9nHO8rWEb9LcMeSWK62Wk5K9W8PRKriB_qm95d407M0=": "3270534000000", - "9nqORhZ2xuuMpzMIV9GbTcTOI9NM9iL7P8wtFkdIdYc=": "393573000000", - "9o9gLcUvULAtMgc_7ebHCWQ8JQIDA5temWJ63nG8nIw=": "1628076000000", - "9oNHvehDr-09rSLEn2bXmz61q7THyoDGRBlfjYcUfnQ=": "386403000000", - "9oPDI-ctbOHVET-xKRfjXfQtSxhDrmfeVcFILVyFyIM=": "642281000000", - "9pRBiPursA8-Tz_OPlXN1jYkf6zqwIkm2c2CQAb6tjY=": "416673000000", - "9pRqrXOdfy9otA4SvOF7Ld9T-VWbcUv6yHzNCjbBFF8=": "9242907000000", - "9pa0DKbvhKccW2n8U75YgPfaI_geKXvKk9Ld3kf1rGk=": "459796000000", - "9pcHcy8RpUiNLVjis3rgzZNL7zZsJFBF6heLUoMyDPQ=": "2322958000000", - "9pew5pNojK3Y7KZq-4k5Pbu8D6k2rh1xyq_Lkc0siGs=": "3007688000000", - "9ppRZKzwFApDp6BoaDdnB6ZuXTWBJfSzQ4k5fx2ogvk=": "909346000000", - "9pxpEz3TNrwPoG9bm0p7QdE_ePfIivJ4CswPOGa7hFQ=": "385505000000", - "9qDktB2AEnA0tRarLOa38H0kVhUVbzj-01sJ9jemw_Y=": "463498000000", - "9qNPFcA6MVtzEvSfAEHVLj_RlubqHL9dILNIfEPDous=": "419744000000", - "9qPM0lhW92wDMsJm7s_lDWY16rJzxJ1_4QaPM6LDyOc=": "893077000000", - "9qfuULLySI5AqdU01r3eHdM4qtC99hhESWxQMpLf7nQ=": "4225953000000", - "9sqrscokIL3DW9Sj-HXszVJHUySnS5HS-ilh3fM6Lw0=": "4706592000000", - "9sz95hcXM9AhWm468k3d8BgVo27AaQkYoyvaNtrBnJ8=": "829274000000", - "9thzRcW4ccNA0UCzsOEc3yOkaWT7ADKQ0d7QccAzQEo=": "391889000000", - "9u25q4Gug1KQqGRUHXf07PF5i4UxMK8-OW1le4Qt3rQ=": "384615000000", - "9ubp3RsuO_Jt6ct09reuUdVpihVyij9R70Bu1HtjuSo=": "665793000000", - "9vFBZsxvbOOU_nBk5eSFOYj1oDQgTl_nCq22hhFhGbY=": "454545000000", - "9vZ7Ml9W5CvCtQefVGS0GL7U1o9CWjCgH6MWDzO6jco=": "3200845000000", - "9vefvUEyJfSynRhmm7uFtZI9wAVuPzEgRK9qEHD2paE=": "385395000000", - "9vlU3vtcm-3aTdWXZZatzTmDGHUYF7XvZKc9gdaDSWw=": "1223425000000", - "9wEIEI7Kpk6i-GcoIqi1Yjpw6Zd_n2UI8SfRpbwnzS8=": "1225974000000", - "9wTnZ_3RmoGVXTRDMyC3Z-R9G5zswt9zif9Tm4pkg0Y=": "384615000000", - "9waT0YUsI59a-POUUIVwHF88fHadoOJ4zFnArQ5UeFI=": "961538000000", - "9wchZqrjAE-wBO7nDmR86dHHGnMbk7YTy8WOaJ16J-Y=": "374878000000", - "9wwObo0lynHomKltnDR-gTgScBV4M2mhlw-dvvD7neE=": "769230000000", - "9xZCc7UxN_5oA7SjXb3uCKoi41RoR713FCBc70PJaro=": "928736000000", - "9xjnoss-vX3mnfW9wzYnMfqPA0FAhwlNgQHgy9sQiAQ=": "453157000000", - "9y9fRcLjQS0dZ-raf9nsKA73SF7wLUcVwPMZ-dLMhWY=": "5547883000000", - "9yHrhR7eAJExnWsZxxYYI39tRsf3hV1fBGdZlnwTZ3s=": "384615000000", - "9yKZVhefKmz8w631161c1FZSIqzomJ_jf6QfgGCA7fI=": "1900892000000", - "9ySz4tV2w_BxqgM4k29QINHdB9ptjglQyOluq9Sb29A=": "759747000000", - "9yTF8J5BslelL7C9_lWqIl7jQ7lL1-xqT7EgG_7ok8I=": "384615000000", - "9zSsq1R9SWjIsaW9qJAysHQ57ZNs5D3agn-AGtDE4-U=": "916278000000", - "9zuYMSHSaQVKQIjNkZW97h8ClVO1WbS2Gr_jOQonC94=": "8275718000000", - "A-IaED43itsNNucVAIRBbi9yxAklziq3QnLX1n3sx1I=": "382210000000", - "A0GbekloVof-oZXbSpM9Uf4RnwtLpVVil4KpDwbYaw0=": "1219316000000", - "A0XkSOzinA3y5JOp1-qso8VjhXJPS9AAeRviypCw0nc=": "390465000000", - "A0oOjgSxOBQK9oS4ElgFvdLJQslSEMr_Bhc_C88Ax5Q=": "384615000000", - "A0qwRUxmJ1dDNujnw5gA8-3Uig627yN9-NvZaFj5__4=": "2886817000000", - "A0sO2Jtwp4eW4x1Xzw2VUmeDXrQjAYXH2HrCRFdZoOY=": "381802000000", - "A0vM6O0TBil9_uR1gyKaed-XPJBKZe-9kdnLsunEtFA=": "384615000000", - "A12L-isZ6t1__keVx1-RzXNW8obWpGxKdeseV291tHQ=": "604892000000", - "A1LS2e3os4tzjkQMVBJZorLuehXCtQhZpZL8iCdqCE8=": "2773636000000", - "A1mkQpQkSBMQHrStgB2l7jAYSKXkEDpuyBfTs3prJPY=": "384615000000", - "A2Eo6KNHMI2hdikRazSTveIIwUcFF0vCrWiLcctSTFo=": "378257000000", - "A2N-vEMKYPfi6IsCxPAahL_zjDjgls8ZIr_407-JieA=": "463190000000", - "A2Y31MNXKvi13Hd14ZQLolV_REkYcdPMqBqT8rN4meE=": "417632000000", - "A3E3rI9br5sm1R2CoZs3FtnVJ4LWGl2Z-07Jn8gcE3U=": "6134615000000", - "A3tMUjPBJEy1s2_z0ImGRmSk_Oh8DCm5H8zYZgvl0O4=": "1923076000000", - "A43T-z-NPXa38YjWbrIE6nLdzXhA4jtoMXntnkWUXVQ=": "764788000000", - "A4cdi8nPbSyw4CpTsgMV7ph_Z8E-OriEIixZ8i30ic8=": "3296032000000", - "A4yJej6KjPNYS86mKcZH8z6svG688Iy-4Al__VFFBAQ=": "1358221000000", - "A5iSZ3s4cKIemGw_WonVJgWkvMLVF53GeqaPTnqcccw=": "33204281000000", - "A6Sw1jXuP2Y8O3EXk5F1T1pbfS9DlbI02HbcR1GjoOo=": "450223000000", - "A6Yo45JJbnSorSczU7voPJ-SLyjwrkHzyIcmpoHneKE=": "1900892000000", - "A6Z662cq_yo5p5sXxi2fopVYVKJ3xSFIgOaMtX3iaC0=": "385509000000", - "A6a8r36yso4yhMb8cYTPqhq0kW5HBAiBNrYrc-NH5ww=": "769230000000", - "A7AnPNPR7pqB7iRwJp-NxCFaUK0fiOkwciDtNBGo1Xw=": "2499956000000", - "A7BdnMmbxmTENoaLFGcUkja1CIJYZrX1UFbyH8rM0w8=": "385040000000", - "A7DWv-6fiQSqb2ZgKNfYc9JHZIbZoWYEW3pU4QUfnRQ=": "776759000000", - "A8NgO32ciHCUJkqTc76DbsbrjRAxJxsg43V--5tYul4=": "3999999000000", - "A8UKfBcmPwqr97UoRkfcOy2oiw5lXuUvrWbmpN4vhDw=": "9811199000000", - "A8uY9Gt5lrgveS0iH5qfcVKNsIGMBNsbn1S_WbXWW30=": "492798000000", - "A94wNxLeRY90Lh0NtS2lBqB17xwRKRVB2PWmq1oG7dY=": "4201021000000", - "A981Y8WFFlzQJQDw_dfIijVSvoElDAxjqLrQ0MW1aFE=": "403846000000", - "A9QV-IVbvLmamb2SRW_4gZRqU-eBbzxOwkfdf6iLkmI=": "441063000000", - "A9qPG3MsgbxaZHWRg7U_At49p8RN5d3yiKpS2IWH00M=": "2476818000000", - "AA5RbhQD0hddULU3lUvaUYuVVuvYKkH783a059KdfqM=": "390975000000", - "AAG3vJwTzCcL0zp2-1yfI-mn_7haYvSYJln2xR_aBS8=": "538861000000", - "AAlsMagn6lX6FTg45J6Xa8wZs9g7p3bByg_hcL41OEE=": "1153846000000", - "AAyYagWu1mMRO2W5GQ3zoN0VwdQMv02UqBj87nIwwFE=": "455585000000", - "ABDDLH6JeScraMAd4vdMmbCeHQoJ9JAE00_jVgda0UA=": "384573000000", - "ACaVXpn3a_TcPHUo86VBogZm91TH25aPTG81B1cZHGk=": "378507000000", - "ACyWHbNFqfCPtubImyFr-LGBMeUH9v1DvcndWNtk4XI=": "499999000000", - "ADqjR00LYVta6pPm7cgZsuBU5jqgSpbYN4fzr6fBJ1c=": "411085000000", - "AE9YIAfvVIHQRUKwqgWwDw5RqrnX_ahPofK-LobXJm8=": "456350000000", - "AEIG8n-91DjRBy58sYTcY6bjr2ly8lZmHaA8AnorAtA=": "2500833000000", - "AEL2oKOqxS-sm8aq26qOD1enUS5fpVIUVGK0hY8Rx5M=": "384567000000", - "AEgjySjAeRO_0T8ZnfdPuCFuNdxF7dczJ2kyIZORlPE=": "2609588000000", - "AFHG9Fsie24WTYTIIMZtNzAWgvb5PnMc-WZq2Nk70dA=": "452425000000", - "AFQO4nTye6MqK8bS2oUeZZcId90z77pRfu5UqP6S7MU=": "351713000000", - "AFjLO0Bpqi7Qziq_jgh6s0uazZNx5lc-Dglk5ny3lBw=": "7472644000000", - "AGBqucHtIGWTSRPAFRegadJLbcpIp8vJt32PtSkM0WE=": "901105000000", - "AGIiv8X4qHke0bg8wDHViLiz9S_tQbEmyJ2hflNDCTk=": "382736000000", - "AGrd4WxVGUNFo5rMuqNCfYZMSDCYt4DUzpYPGwn_Amw=": "500919000000", - "AGz5-xtBphY8yoE7ix2j_0EXK__CumgfsHPRvEjmWww=": "462355000000", - "AHOvofjSu_g5OJni4MZ8vF7NmwLKbFArRTiE8phRGYc=": "391257000000", - "AHftrWcx9oIf6a0SKBeRUCgT0wYApAEcxcZFfsUM9z4=": "7692307000000", - "AIMdMsLVq-Kb4TnSUNmmXsc0QabEHCMecHD3nGJ04nQ=": "469217000000", - "AIxOxDDkz2ijdxkSLH0uBRcbRXBsXiEs8LabIUAmqZI=": "383233000000", - "AJ1_BGQXLk3y20MRsFSmA3l91lyU92HH3xUeUJuvV-E=": "384735000000", - "AK0T-d0l2zjpnNDxCpp420Pk72N83ASXN4pJy_f4usA=": "380005000000", - "AKLG4-ZnLGAAEMIJJa8PSaeIvf5ThZ0P8zxmvCEFCRU=": "416901000000", - "AKxSLMk498KINY5bZSI0XUHqYXZGYmYtv3oyy8x_Muk=": "385506000000", - "AKyN62A5G4xHEHhZ-d35X-X5woDGXUb637NiOtmvU5Q=": "500305000000", - "AL1oYQG5lwt7Xdnc87w4yEswfFvGgRURF5SiFjGX5pg=": "379329000000", - "AL42M9OmtNADMLdkhwEPM4H2wSrScsAvYFMyaRr-jCw=": "470773000000", - "ALTDC-Y4Pypi8gy3hfWBPPVQtuLVGh7msqpK5fOKgT8=": "377802000000", - "AM6tz_qWRKraIsfmAtxGXaj_ggxLyuJp1ihF93WQiXE=": "386888000000", - "AMLd0ZljogyMKzHg8VP2W1Tx1HbWrdsqP-7hZCTrdAs=": "2323289000000", - "AMbpONnAECq2fD7ZRBFCcmm6Hr8Z43OdYlPCR5pVu0k=": "1136692000000", - "AMcIGPxNzpCcNQhUrcRCwVx0SfTiumNV1wT8TqPVgEE=": "922611000000", - "AN4zW6udRPONEsWATRhEImIjDj7VksTaQJHKXzGugjs=": "384057000000", - "AN5OV3nUF-d6XWBfoJc5HnJ_oX3JAhmDBzGzcMVZMtw=": "455600000000", - "AN7mreLGb546zpHUnYmFeKVT5PJlCQbqD4ihVy0gC0s=": "467580000000", - "AN8nyyYZalhTe3zEUjRlzyqOIooS3EN2U-ZJIYYtTFM=": "464193000000", - "ANExpOgCcIN70aS4oGtmY0On2q0__pojkuv_mxs4ZeI=": "1926223000000", - "ANUDtNxGfoX9Fzjo_5lpaEzulejk4Va4dfUAuQBolok=": "764788000000", - "ANZCBTIZg0JIeXyg8RXnF31T9u3Ec_pH2IUFGnUvkmc=": "8312599000000", - "AO8wi11xxUbqCucNj7YpBsLYPQMiDdUmASyiORuzbUs=": "697408000000", - "AOOk4MOSJFtrznbXfgP7vb0slGMVMsZiHYkywBS4VD4=": "1538461000000", - "AOoUj3Er9K9vX2Ppr6WTjYeOb2unPUof3KdCFdu2M2g=": "3200845000000", - "AOxjfKL2D4pqQ2VK2BOg64R_c7GUWIMQxTTTZGwxeVM=": "597896000000", - "AP288SESug2ZSRDYGYiy_9Ck6kmgK93zdun_xKj1Z1U=": "412542000000", - "APE3-9rdAX4zkOp5a29Yh-1hSTC5_7xb0QgqSQAjnpw=": "907420000000", - "APoxni0T0xBD1JhAzdkJZcOxhrCokQDhweOt7Yy8f2k=": "387025000000", - "AQRmXCOzkG5LLK9QyvEYv4HiTrRH3dBAm1sv49AfUl0=": "715399000000", - "ARIjY6GHXVOcmRDSJBehmH7oI8Liq5BbSLWFIPBM2Mk=": "1219342000000", - "ARSiRdGNGFFkIoDxEPYH3SRDVy0Zg00xoTlEIGL7QVU=": "764676000000", - "ARxPCbv1n7fvoFksXSnXi29zKHh2RtQKStGMiahnBn4=": "6538461000000", - "AS5BU7t2yIEo04mkCQQlGdbT79X1VjGwIn7RqbKR0os=": "380723000000", - "ASRsrCyF0aYqoq46VGaJrP0DzXi8JGgZJq68aL3PZE4=": "906637000000", - "AT9KM5UATBqPJP_4mPGJmLYauJJqaset8PfjnpTkGxs=": "1249500000000", - "ATLsoSdshy6aNMEa3sVTPJIRMQRLUR3ao_bwZzlCPmo=": "833323000000", - "ATYajDz9uXx_cdMTcxPSPo8evF--GtA2zfOW1qpDqv0=": "909090000000", - "ATbWHKol0Z8vaZu81OMBNJxcCWkuGpiEUKhJWTt_MgE=": "471199000000", - "AUIL9yljW_rJzPnJzwmUv0zNAqVhW_jTsjTrGN6V2tg=": "459379000000", - "AUh0J0p-d9mfX2iSZXPVcnQCsIADJDHkC3MyPxbfYMU=": "459656000000", - "AUvFMhqaNCaRwkibWDcO-3MY1TvuiUCE5KPm0enszys=": "383700000000", - "AV-Gz6XkdWfgO2X7bhHGdr9dJJw6BTcI6gve_wezTf0=": "1526537000000", - "AVhOwqjrbcjvtWbjvnjjKIQ5Z_E3xSQh_ltTi8hT_bA=": "1126941000000", - "AVqnsAVWKPTKu3JqRqQpEPI22R-TH57i0HdNFbXS8_w=": "2285706000000", - "AW5RBWejhUtM4u0jJDah4Jx5nQnGr8jH83sQFatts8o=": "381437000000", - "AW92QewvVgFnjF3Abyar4sAAZRlA4KjuyfHyNa8jmgs=": "1243022000000", - "AWRnJmUmwHkwVnzIX5AP4JXhC0_4rCzEcoaaNzAIbJQ=": "1548420000000", - "AWYlvAEaWiRvXjAt0-7Ximgunpe1HHjp7HBULrNF5CU=": "385510000000", - "AWb_7n6lWKKLxF3emdPOPr2iAVfaGMGzuc5nzfqSPFc=": "756683000000", - "AWhBuxowjrQoUrPIbpIpqldw3p4saHvKO91RhcSFVUk=": "1125610000000", - "AWlVHrW0vI1rbXh7wMfgr26hLlBJV53D5oUN1JQ5TL8=": "7692307000000", - "AWlrde6K0KE6et1u1_xnAgszgQAsVKaNt2ldi7JMc-M=": "384615000000", - "AX_Zz4GHnwIug6qsodDtnAeemk9xFzwMjA1qJ92iOtM=": "3969178000000", - "AYUDhV-hCgkPf5XUZor6GnmwHcC36Ccdro3Mc4SkASg=": "5901881000000", - "AYdrXa6jo_IlfbTU2LEJ4YY3HM7wnjGQqYgDLtyMjBk=": "2088153000000", - "AZ-AoUnnbbW1FaLmzlCAUnzJzOB9_tod354aoJ83_AQ=": "394620000000", - "AZqq7IKGvB0UuVJVg-wbX8NQQStSFYwPyrl3F6ltVsA=": "454817000000", - "A_WFTnWio7NZoV37EN0a7PrhrM1-eOkJCFMnyRZWi_0=": "769600000000", - "A_eLO5FCMAOkkfVBjPqjvp95GcXjbsnWUsNmDtPwdzw=": "413274000000", - "A_pBEtkjlASV3wonbrpq1VFMdWCzShHHHAekoyYjtsI=": "848360000000", - "Aa4RRLi9VghySdLeNXN7OcPmA1RwQTuQa4H933JZwhE=": "11544307000000", - "Aa6v9PX_aCM3e3JEMseqV4hZ6MzB3MRjWF1t60pVimk=": "670041000000", - "AaBMimky8VlEezNjP4Mz9zAgZYwcyh6f4J_jKdhdMNk=": "5384526000000", - "AaMLrw65BQXSUQxCHyY8RHWpqxhCJzBWKCiilOMyPMY=": "415279000000", - "AaXawgDiHoib4-8zE_Xw-64NYGdR6-PpHt8Hbw8wObM=": "1261259000000", - "AaboZfy5oslrcBkDs3OqyHSUcUacuR8mSf-DOqgthDI=": "1155751000000", - "AbWimy--lhNHaUYt-tWquRXVz-dbW8Fb0YSjDc-PqnE=": "999999000000", - "AbtJpgO9uO643nsG-MCNEgHs2NLeXSJBq0FWUjOUNaM=": "452120000000", - "AcQlVhgYy4xMiTIIUu1A99UzaN2sKCE0ZNqa6LWuJWs=": "454545000000", - "AckzZJ3owKwsGbq49ix3lCuM44E_QixDDt3P8Gm9-Yg=": "769251000000", - "AcpxmB8qjN9zAnSi_jHwt0Ko5Ei5bea8L9M-NRTsTj8=": "393034000000", - "Acr5O8PujI-ctLqJmwECKGzOQ3SO7Vw--w7kKs5yqD4=": "478948000000", - "Ad-OSpV0H7bkLDhALSFy5_bAslLSdQoBuoL11vX-kT4=": "1385834000000", - "AdA6qy9-CnR3R_1SEjeuobJ2Z9E8_VBdb1l5jLpifO0=": "385506000000", - "AdoTC-YEf3PZAqqylQe3IXmb2b50fh82NOrCrYstzk8=": "377629000000", - "Advg2yl7Mq0GpIT2xNX1XBSMpioRPD2Nhg8-O3WL8FY=": "1504630000000", - "AdxZUZwpOq1xZB6D7mxZHM-Eih69CkundOpiaFlan1c=": "385507000000", - "Ae38hD80YS6bCMs5O1xM9s9w_q5iMbagwHTD4_CRPlg=": "2118552000000", - "Ae7VrwIYRzeysI0slO73FH_Jj5YInJ5afzZyC-Pm1EM=": "469809000000", - "AePF8Ax0A5cdodUXh1jh9QOQDKkwYvXWE5hzB1gdvbY=": "1999999000000", - "AetQj7VykadZeCz-HAIEHM56VkYnPzOygW_G_7VezI4=": "3863186000000", - "AeyolU_P8ThU8R8yCnws_iaz6iX6bimRdaHLhfyhVs4=": "461538000000", - "AfIi4kf64a6Qp6Z--2OGvEpEd2ioxQAs7xBjbjRKaQs=": "1000549000000", - "AfJ20rOPSM15ATRDoNr8moePLNX1bCqXhwgaeOJq2lc=": "385211000000", - "AfVPJDs0cqz8ONhrAuBiOsSCbg27N0uFmdzeduaHcV4=": "417633000000", - "Afhs5tPFPqDr2EnvPWWDUVTQBnEYaM2rFpl4tEdq3R0=": "1923076000000", - "Afn_IsjkSpaahJAdvg5znN82mtU3Q2hHPk08yusNv-Q=": "2279638000000", - "AgecowsJH19pZWAVH5JdljHsKy6gwQhhRLn-CO5p5Cw=": "381282000000", - "Agn-CNr7bxf65CF34wNSlYjW1Qsp8MKrlX9yBTN86sM=": "2055429000000", - "Ah2ctraRlQ0aG1aDx8vwKxBsZkhcFoAmylT1xAhn6dQ=": "422561000000", - "AhIwFCNhEzD6lR9FVWBXjAj-O_iKHXHruxTJlsJ7J0Y=": "1838066000000", - "AhYMdK7OiL4CgTChT6gvOB0vmeE-xMIS7po_dJ6ZGnY=": "381805000000", - "Aha-JJoLqpeuoXDs8C4-x7S4O6_fNaEF9w5FCTQ7ouU=": "1514448000000", - "Ahie81faMPVS-qbIDrQqdPdN7IRgL1-kv18knX_Y6jY=": "383178000000", - "Ai36erV3A0W7FGcUZjRjTdcW5sqv-nYcgrboUoSAf2g=": "617122000000", - "Ai6zTQz4fmoVKYUC8FTHMUlm3RP8JS7mfdUTBFTSIRs=": "383558000000", - "Ai7aYgbkYqb4Ny-Zj9t31RQWFkwRDc61bB4dzAOSXvc=": "772795000000", - "AiBnPKuZ2KRURXc53dvaHNSmU4KZVfjb-9NMJjomvic=": "465118000000", - "AiCxyqCOXl_J_DY_n5uMBUADNRpImNR-e48KntPe8sk=": "384615000000", - "Aif9tEOnr7xl8jkl_FHQK_Dl1QYgP5NqACxTwsjKwaM=": "382471000000", - "AinjrfQUmwG6Ga2_03EMm0FvR1VjAfy4g8RHJeGJzaM=": "1362114000000", - "AjGB27_UDBzsn1dUP0n2S6wQXWzFo47Xg7fftPNDLwc=": "385507000000", - "AjgaRSYeo0xjR1lieBnnVFCs4qdhpEFw5SkbUflFf-E=": "480295000000", - "AkC5vpa-RdCzpUYAuK3oYptPKKwGMmkuD-wsUoqtkVw=": "3999999000000", - "AkdMr5jsjCj-LNnga3DegMpFK6WSb1jp6gGiFdx7ER0=": "4032556000000", - "Akn2mUyHasJ8s4P1PheZzr9m0whdsZ_y5pie__eaqrw=": "873076000000", - "AlMIYAiW13q9EZFDg9bJbcF64gH2VxA4m8dl_uwv8xQ=": "391493000000", - "AlzagOg3TtaWuHccl__s5jXmabqOMMyYssPbry2AKcg=": "384306000000", - "Am1GGq365UXVvr1yLhM3YzSbI0_cvlAdsFPDalIekdQ=": "384615000000", - "Am3qC4LE8PcGIqoHXFpFyctwyth8DJoCh4GFuAM3MvA=": "391841000000", - "AmDCQ1oxH-HlyeS7CIrnRcEpcwr-6K3lm5KWCVUGrbk=": "385528000000", - "AmEAPevY0yEDZeb-0VHspEeb5m3w9ckEiT4_jR7JmhA=": "466580000000", - "AmMz8F7XZClRViKw62SwFacl4wIZApeh9WVhnfnPKEU=": "1578823000000", - "AmVHujYkbOjJYeUzrf4bPLjj3hkfsx9ZIlzI6JDDQsI=": "387499000000", - "AmvLl801EwOKFY8STcR73h5RJ2Bk5s3fi4sKi6wiKww=": "427712000000", - "An-E1qiKqxSsTngjq8zON1AcTlEnarFckJPWgvvwss4=": "459689000000", - "An5adov4FM93U0UTGG7Q43Rn4TaJiNBlojxKp9UD1jI=": "460990000000", - "AnsLKlrKwBC-W1hHhopDSH-FggMIWmNaPa6LXkgvjx8=": "6478774000000", - "AoMM321wwnHr5nJfBAApbquKtUbW4dUVmbtEVS5YFCQ=": "684830000000", - "AoQk9dsISNrjQ390HwJAy1evLoBBfUJhatG4YB2bcVg=": "2046556000000", - "AogK78_I74VdyQunRZLdgdqh9Z4nMGHDND1FIEjJ96A=": "464470000000", - "AoyZFQ83AN1d3bd__CG1Ohlfpf5495C05cnj8R8bhSM=": "926215000000", - "ApNbKpkJBqu1H6t-da536dydpjWzceQwgMACTYAfS0Y=": "849795000000", - "Aq0uSR62UcwpPT-CpAlH9kJogcXRyIZ99CEnGvnmO9E=": "2055429000000", - "AqI2cuA5Rjafuo1pmmItEPNwcjWrHfcgbkG_AYG9okE=": "384615000000", - "Aqs4vL2PJ6KYxNyAo9xVqDky1-HhtoItEKX8blnfPKI=": "504545000000", - "Aqva0IsLbRGANDyoekLDCxHjiVAbFXH4tHc3ryvQGJc=": "464104000000", - "AqwNajgqEpBc20ZUKSbl6BEk6Jyt0gV9bHlxsrqS-kA=": "457053000000", - "AqyHr9LrOMPD53o0ynr8_ebIc1siZ_7RRIKP_WkGr5A=": "576923000000", - "Ar9_MrH4lvo1DqtTo6H615JSj5K2V9i2VVc9iDzeLd8=": "849732000000", - "AsPj15TTsgkYbU0_T1TZkynZSj5HFEOE1GRYTW0e91k=": "5042296000000", - "Ash3leApd1p1sBpo6Jmsp_x2J7NY1rOhH59jNZrYzAg=": "2011756000000", - "Askh_mWKxfYJUfdh0_mKctK3NfJX_uh5tlh_j2-u24c=": "777878000000", - "At6Fvcia7dsGkS6iBFUCn584IRHag24-2UQtItUziQQ=": "384615000000", - "AtEAMxhbtnoLL_7BgY8zr_rilmqalJQB3d-v_YjYUKo=": "384580000000", - "AtVeQAE0iN62JhetONLSHyKSEhp-2WSUQyNHKfqXCWs=": "1923076000000", - "AtkYYcbs1lq9_AUlhXf8O4Aj2yWB8fvibbvxehTdAJQ=": "1927545000000", - "Au5WQM2c4w1LPvAAmHetlDqdnniOov2V9j_sXYEk8Ec=": "3846153000000", - "AuGQtZw0UoSR2Tf1CyUP2gIswnkUfwxSjGX9-07m7SY=": "384615000000", - "Av5eAp70sIHOH9br9EXLXPZru3XH2-7a83gicd8gDCA=": "412505000000", - "AvyfJXumfLY57bI6Ar6yiFX_Z3y2v56GjkJLTSVxOEM=": "385505000000", - "AwKZ0o8SvS8slN-TJQWxXUxNPot_vpW2s6qS6D-VFmQ=": "1249999000000", - "AxGnupbEMskmVknrUTfJaEuDJzDB2LbA5qlv0WaXbpM=": "769230000000", - "AxgfqHD2hDJmA_uPmNiGHYyLRtdu_F5l6URR9PQgS4s=": "384615000000", - "Axhqt0P_D9L_RrvhBAueQlZHoYp6mAS6inUbg-n37D4=": "384615000000", - "AxkloToxS1TJIHdh4QGLBPosNd2wzT-rP9iEmCoHeqI=": "510841000000", - "AxnLhweA5x3LFkUBUZLMktt5Qu9vWxcklTlyQlW5BwU=": "411969000000", - "AySod4_PYPUEflexb8uOBI7JCFFmcei8vtsV2G0v_0A=": "413846000000", - "AyY88K0RzBnk9vCxM-7Prp9UEJdQioUjX_1W4CPA_J0=": "5926824000000", - "AysMuwbbFEbvz7hoctwYgWQUr4vh1W4QtiR3p692DZo=": "416666000000", - "AyvH8mJ5Mwo45qC6f2udeWmSb3XsF33_bIXoRrYo_iQ=": "384615000000", - "AyxG5IHNEbcdq0s4L2_TX0ntIUUfFnhV9fSELG_G4pQ=": "2034292000000", - "Az6Oaclv1q0SDTGV_gZ4XAw8Q0nyMGhMyi1dgKWcwCw=": "411085000000", - "AzGookv2lY7fC_G5PG5zEo4SwjO2MMX7qneBEXHtEHE=": "4225618000000", - "B-BbJtJSvl-RM4rNia7fHH8MIEKoJYscpr9KLXVrXG8=": "384048000000", - "B-vVRYr80vnR4LGScgsTSc7GRbLur7ApAXuhjm1Yrlo=": "496282000000", - "B-yNA2dMy1QKgrxujKByfYcoISoTasAG72gabUFlPdg=": "410047000000", - "B00Xu2ChwZ1g5tLAa_prN-rrhogosHqV5i_I4mDGKQo=": "11538461000000", - "B05GhAzBk2sirXdPRx8F8XRbrgs73B6VYLenYkIDp68=": "1178432000000", - "B0XGPPlvFfIQ3iXiSjtI8qbeaXRKG4nOGG3yGrpBTXA=": "3734902000000", - "B0ZDY9e9vyHQRXhM6aM1wjEtBB3hXS4GllonbylV7tw=": "384615000000", - "B0iYBoM7KgwWb1kmCZIt1--zZz53yUEqg7DOjUSGYeI=": "3831778000000", - "B1f87PpFI3CSXS8nyQWdKhQukRAAWE6BqJFW3tX2iwk=": "761824000000", - "B1o1F2sZ3l4j3PC1hTkdDUs4PJ_gKGgff3EoSDQim4w=": "416652000000", - "B1wBx9h3hd9NjWXZEsft-JallG881kWvSWYr_9WkOJo=": "954086000000", - "B279Si55b94CdSmxzaI5hUn6J4mcB-s_l3xKY1rUWa0=": "809021000000", - "B27teBBlrC-ynWRfhgpuPFS7G-t3VcPOUE3LwNo6R9E=": "385509000000", - "B33ytm_bcX40VyK-6168wltqG7n_kiR6Hhm1Re0xWEo=": "3855074000000", - "B44IzDurH8SCLojNfRjI77jkBEBcDJwoOIQPXmNwaQY=": "413030000000", - "B45L1-IN-wAS-R_wl2BTGdzMHZiD34lPuHJCH3vDQkc=": "382130000000", - "B48myFKxLwLisuIgeAaMpYfbrjm56cRav_98Zw-xmy4=": "385506000000", - "B4Bg-AWzceORR9yAP_1KPMHRLdKSQDmQBI5Q87T71cA=": "455600000000", - "B4WIg9D6OIkmTpVSKRa6L89NKA9uSJC0LlIV0qLLlMo=": "387073000000", - "B4j7xyz_F4dOXdrl8vyXG_q6NOFn_bwZoSOocImjgyY=": "384418000000", - "B4lQP4jwVW7JgC2xn7eN614X30l1ltWBZgGwJuHU2iY=": "5384599000000", - "B5BRUdWjb4gAkyqe3aa6LXGbUjLzzHHcu3DcofuRILE=": "416666000000", - "B5WBwTaRBzS47bWi1dANrAXhqWQDNPok2PFQg6kAyzw=": "4999999000000", - "B5_59t0jtlohx8bsYLEaGH92mEFTWdC5GmKSBhR89LE=": "2734973000000", - "B6NxpMWdGJ7KQ1bHXx4JQSSE5mfm-7MlR3gQF9zH758=": "3256987000000", - "B6v53zwna4O7wTziFa2D5RO53yWN7M51ZDwHJshYMqE=": "4545454000000", - "B7CuqGFAeQbuOOSX5vCce8A0XDnSgqVQWCjs2W_gnF4=": "468609000000", - "B7OFiKwYllIvvpAbaUNHL3RfjnO_piWmtsbDReAhfbk=": "996490000000", - "B7kZKAPWhBSwwkcAkLycdhfEAgMF_q63Av_IMIs_2kE=": "385506000000", - "B85nWdMm92qo7oYI0qhctrdXIC5xYbcgik61ELuY2Tk=": "1705504000000", - "B8ULXieKJlhXI5Y1kx6_tiyz_zcnvUh2L-xg3OgvHBM=": "908871000000", - "B8aI5fAAlUOy5nD141--7OsU-BeBcnENw8ik2W37xr0=": "452367000000", - "B8aoxyO0xLhuy1a1LiAn2AriP8vcGkPTOb2bA1hh3Oc=": "478213000000", - "B8czyv-f39yLt2eRFTA4Fo1VduX-Xc1PULCzia5TAMs=": "768362000000", - "B8qGhOIuZuSXzUHvPkZ8OQH-EGnEM65UWHqBFTtccvI=": "416666000000", - "B9HQuVzcK7tvB7EfPDKdPSGaMEDsTCCV96CZgUGK0ss=": "1156517000000", - "B9zjzYbxOmq8sWBS6ydSdHVAvn9LdiluTHfX9aHJbGs=": "769148000000", - "BA6sqVacdjzaUHQ3i4CEAnOVYAx5M4aQdM3FTs37zfs=": "731894000000", - "BAkg5oUGtXhKtcJJKmpzXRljSbMBg7xFzZ2dMs0xFA4=": "394154000000", - "BB11rkpMHNZQlEhP2hdC-plk7D_rxE6o1-Kj1ii50YE=": "374246000000", - "BB_1LMB0NsYvASFZRbAKdLv4nfwccZdGi_DEOx6YMk0=": "385236000000", - "BBdHWC54Q1rLolysvpqbxbR8UB5TJR1aqNH669QJ8TY=": "4598872000000", - "BC6dFkVCrlQO0pPqMMtSLOvyYcPvT_5_SUxfmfFAgR4=": "574786000000", - "BCPzrvD0bbaxUckUYMDJNBdZvjAwHsF9mP5nkGaIw0k=": "634347000000", - "BCtjkhFqCEI9_kXNlQ0aECB1KOJDmG9MTNIac_iWCq0=": "1153053000000", - "BCvFrkW38_c6BmP1jngpQ44bVuC0sLcwn_pPMfr-cGU=": "407560000000", - "BDIL89cWkLx_xnR_WJsbFuLO3mwy7NMSari6FbDt2V8=": "2083333000000", - "BDKzchVcqDECcvMREuMXqwjjx8n_D-EbXVKpMjQn1RM=": "2646555000000", - "BDMblh2CfXc7fy34UNZ2zYUTnOimf9FsjoOJwckRAag=": "499999000000", - "BDaurAxSa02tGFvK1xO7ClJK2zwGtgdVO4_NxcYDU-s=": "458095000000", - "BDmjsdUsOfjWhjF8B51h8oXH0edeMuNgezgxmCOFVOA=": "384615000000", - "BE26hIsBPiRLbfsxaTRTR1C4aQFrbMWd3QVM2FhWgac=": "455600000000", - "BEKeZ2ZMnCoScNC5oxxUgjz4Z8IBkekpC4kGPSD-bb4=": "1341169000000", - "BEeQkvlI0e5JnrpRc67ddPw3Pk8wkr9E8OuYIEI2FCc=": "826222000000", - "BEgVLkJtXmeSHtT5qrJIwn2zbm_byigufiGHUivCCnQ=": "1893060000000", - "BF1650_AIVzg8KQ-2cm_DBjzlbKOglrS1wWUjdIRhu4=": "4044787000000", - "BFJYL5nxyZ0wzlj-fenYHhFBfGD_RyIYhqDdJeh6t9Q=": "445981000000", - "BFMMrf-bD77UOyG4g0IBNC5gBi7XKvRELpGENYdpsY0=": "384589000000", - "BFTCXECK9Zo0C4eu8KxpNZQHfJlhaxOGZoJdylS0mUE=": "769230000000", - "BFiikw36gghnXWhnKU_bbndLV5TCE2ZUziZeqD7T2hQ=": "4467894000000", - "BG2UuI8lV0LFzJk-fCI4MdVk1w-IFbMNbB55gFABvtE=": "499999000000", - "BG5DeJW37_DYQ-wKsD9qLw8J75PJhmiJYKqt-2sFS5w=": "451653000000", - "BGHlHJeOuDg9SyuKSQCUpicsjhdydjrS6v1Agg9l6To=": "600081000000", - "BGmuPjvGlyC1vTOl3JoZfqnnETdVZIs0MX1cWI-0sMM=": "769723000000", - "BHhAwZKOqg8i6JjEgAtGKPZYPoHaH2xDGworNYKwAtg=": "459734000000", - "BHnXJEAISkBwZ5HZ_OmkmMlN_A_z6205Re9L22nTs4Y=": "384615000000", - "BHnvrHxiHtRnH9q8Kirc9-3DbFYDhNCer6MDlQ_m5N4=": "901081000000", - "BHr6AgnA4BlUimWGQELis3xHaRuGm1IuQMTAoBUM3FI=": "2958333000000", - "BI4AYsWxhh7UvyHk95ROKLgWrEVjnj6PgcWKKtcCAlk=": "446815000000", - "BI8ZlFs6I8vy7fAGX252frErf6jtEHUs-hZYpiFIeR8=": "1538461000000", - "BIekyQaWtxLE1x5WL-a2BAF4Xtnzx3y3dPPSv-6yAdg=": "420680000000", - "BJ3UE5FnXLr3_UgAG_LpAk2nMNzFzT6tgi0UZMf8-mo=": "569966000000", - "BJ5i0QB_Tzwii3SFkEd3bqjeh6au6GGZ3lnDHj6lfgI=": "1642956000000", - "BJKatsl1VREaO5z-ZELYVBWzoBRNlSinKypUBD1p3BE=": "954279000000", - "BJOzKdouSslGEcrViws38vn42MLXT7frmg4mknyL7Fw=": "384611000000", - "BJe9PhQYNQPVTOko3ABUhpVgt94Bv7pgLELmQVqf8Ew=": "384968000000", - "BJgsqS8SZZ9YJ0zIMDl-5tzVWYuKpBwFv94jwCSjRUk=": "419044000000", - "BKFeEAjjt3H-d7-WQKQl9LK8ebo15ZeIpChhZicjR8Y=": "384615000000", - "BLNC2cgYJoILust5UdLAHp2kIHz-emWZMxdUghhvk6o=": "780792000000", - "BM1vJaHmrFMOphKXx5QI1l3TkyybexHdgAxfmhfFosw=": "495905000000", - "BMFu4sIgU0od0RGXyGyj3jIMQN6e4lUEDNRoCjaHJn8=": "453601000000", - "BMK90DOx12A9ud4XCG0QUpCOjcN6zeIjtvI9h2x_OCk=": "477575000000", - "BMOHS60IWu-jCYNJ4RUeXINXitgUjdVp-blg4wX7rqg=": "385006000000", - "BMhnuqy5E9WeM6nagjKxAEn-kajZ8wDkw4O6hT8M21Y=": "2307692000000", - "BMtmr4B0ycU8rFtZ6gDT3_x2e7TPvNZVGPcKW9meCPo=": "418315000000", - "BN0XRZZ_uGQJZcpGcMIOeQWMc2_nbL2Mn3yM7qeOiAk=": "468609000000", - "BNDbrSowtYYqiUnlUej8cgZp4iTiqPQ1dkVzfYTKFas=": "1564646000000", - "BNO8NtWPMz3_dbRaQJr2hmBZvbMVZgr3HBpFqoe7G1M=": "451707000000", - "BNfhYHeZxMlsWqqmsjZLsoZHb-pU1RGtkumCPCbzW10=": "387983000000", - "BO6GlIMmSu3pNaI-egLYwIm5uml-xDWRblO_GUW9r8s=": "24836441000000", - "BOghlMXv-nkg0rohbks8ZwEafYIHeeooJ5sSP7qEv88=": "384615000000", - "BP6z60TleSnnU6O8HW3gncELqwqzlfobEDMsdIjwYJc=": "418720000000", - "BPXf2l91VKX4TjkyMbCkqvo2Ts38KTcLy9R1l9O_Dl4=": "1362391000000", - "BQ16flQoHvGkcJxCFmde4WIT63XCl-P3vHjs-ommkbs=": "1153846000000", - "BQRnQ6-MIWkV0trGo7v17uyDC7KtS1ef_XKi6WqwXeA=": "685838000000", - "BROyWs6vjJdLHkBdYA_mK5N3b3wni1Cq7DzMcNoBJSY=": "452559000000", - "BRcPybbEC-ZpvoA5wVoOXxOMXgmvvf2PCxKxEljVbXE=": "462050000000", - "BSEOV-1Iet4E-51ADOxjxAwCTy4pjvPk7HPY9AmM5bk=": "4153721000000", - "BSIbH-7_au1hLEPQJsjkGcbViT_Pb1BatDplQMyCnvs=": "387931000000", - "BTGurva-Gj1ylHtgGta4S9ySY0RLJ2Z2DHzSNQB56JQ=": "378341000000", - "BTXunUwQu71TLiL0vQtUKAx9aiQeP8uhv3eM3ESIUXc=": "385506000000", - "BTXwmSUFN5_-UG7-uiJMZU-EWBJO2MBXo-9IGWnAmh0=": "909090000000", - "BTiFERYptPds5LJehcgYesvcIK7ixWajJITzKJno6GU=": "499999000000", - "BTmXMbF2OYr37II_4YyCvM03UG_Ckax8NNTT46YVB3E=": "402470000000", - "BU8Gp01mqhud3d33mwMs4PdjcerJRRG0s9BbWux3U2A=": "431835000000", - "BUJ_ZOV4Nj5jaEDBl9liFlAhvHXeXT3nqheVE9eLSHI=": "384300000000", - "BV-sNFYR3dJPAjpPNtmDFqyVlQ4ZFlclhneCSi1O7Ls=": "384280000000", - "BVh70qVb3uZTqtoMyTmZIEoVfJA3yzNAGHkeoQS8PIc=": "465068000000", - "BVsa8dMKC-edM32pxLRso93WUKfzcr9EJ8RBsfOeeXQ=": "2001906000000", - "BVstmki57VJztohf2RxF6u4ZSyx7XRvANWW_-5ypLJw=": "766000000000", - "BVum0RdgL7oVgmXWEfJ8ozCOyu0yqnZJFmJMcvznvVI=": "1193504000000", - "BWAOFtZiliwx3Q28nIc1EoJHuyQZ8vMd1ebDRMdOG5w=": "1386178000000", - "BWnKf6aBRnlWYhNYKl-uduxuEQFe6YIwFalxNff9YfY=": "5827699000000", - "BXNRR5HbG5SYCaD12lmTamTxDev1w5Vp2I0omZoo9Qs=": "416666000000", - "BY8leAzzRx3SuMRRluQARFT5K8bd8SkElPE0Gw6M5NI=": "754689000000", - "BYD99DZFeJo-M355zdjXBHxpk5ScP4DnRFDJuB9tdrU=": "3771567000000", - "BZnKB09tKKv3lXIPdHEmCud83vTOIKs-Pc9XzJMQV2M=": "455600000000", - "BZuekv6g2fOivrtzp_heLiEh3V8cAUiebIBmGVGlLU0=": "502605000000", - "BZxDQLqGsEgFwCAiDfD5ylOAZRnRx_W3nitzwaDFNr8=": "446550000000", - "B_9EI7YmTMF-MwI5p_UjdOZLCxp6xGP253yJh6_fvKk=": "380005000000", - "B_iXg5po4MthG08EqOrcD9Ok6QK5qVdc-f8AGTN1Tkc=": "653846000000", - "B_lqK96DNUxAjtHVWFft9QBzJG6r0BoWVWLXtfK7gT4=": "458479000000", - "B_vRgSIsuhCEtshw1Z54r_HZu2bz8aaEBsfm3gqj2OE=": "413620000000", - "Ba2Z4nAOQ3dKCvn2OGUH2NO3Kdai1KKko7tIh3NtyPs=": "483147000000", - "BaOVZAKk6ohiRYUvTRJzwW5xv9iHAyG3IRWJxtkj2g8=": "384615000000", - "BaWSAsl6GzSLeTgI1RWNCGVympXo345gR4ubVmKE3b4=": "384615000000", - "BajcJOH-T4fL9hr-oRMlw9gcrPIeC3l1UddCawxRktE=": "411085000000", - "BbMpr_3TFtmOGVov5bDsN_k-E5xytaQI-ph_IqgM7P8=": "380551000000", - "Bbemom8tgMCVcZnrsiFXUiq8zikCu02uAE7JWC6xMW4=": "544660000000", - "Bc6mtZ-l7Da1lemPP-G2kfl5PSOaMZFgaOlST8t7O1s=": "385697000000", - "BcDfybI_qjQfBByLXPjs7q0go0k0nau0B7OVgrTw2Ec=": "417630000000", - "BcEs8n6eS5oI90yTnOX1epqWCOapsDsB2Os3QFPhnZg=": "454519000000", - "BcN15yKgDLCMpSW9v41fgWfzEBHHTay8FJo2tNRfWqo=": "1635808000000", - "Bce6amtA5qM4EyN6-KK9cE0EafBds6Cyo1GaTUewHXg=": "763781000000", - "BdPLdGGWRUiYDt9Tu5LyLjZq32-ciF32DxC6b9V8_iI=": "447924000000", - "BdWDl8pEdwhp2sALBKPuGO9ntAp6cknSrk2k4iOIM7Y=": "488964000000", - "Be9sGfV3fRoowDdsogulNRWh_pUMyCGNNYy44308klU=": "935034000000", - "BeDmHxkz4MmAw20ofLqF2mumMb3Da6NJ8i2Vtvr0wTg=": "13807924000000", - "BeZA5TzzlQTFPMtGYgXsyg1kvMFwJHsCxIpRFIrTxuA=": "404548000000", - "Beg1H_lFr1U3pP3Wat5ByR_D5SXx2J16q4Hkrlb2b_o=": "524709000000", - "Bf08Du8X6_9vJP_7fw-8SWmO88Jy-vvjkjno2EkQgZY=": "447840000000", - "BfCKmGmvyXZPFJVcw5XZPMsfN6VWcplJKFu1LtI1Ok8=": "416609000000", - "BfcmrGMXYsOHroflZm11j5ggSbRjbCbGdnjeTOLaDUM=": "379344000000", - "BggNCclEpc_OCyIrARO0qrqmhxuNF_TaqajJCUjalfc=": "8824989000000", - "BgnQHuyk8xU3QDB8FyX2nz3ZYXyso2RrWx4qcYuGdLg=": "650090000000", - "Bgvj7rCuZVsLCzoWwu8wJr_PpOyNvdvVGYNgFQUlX7U=": "5013093000000", - "BjQWnxAiLBmvfa8ewAO4aTDbBYeQF_fDsL_75C_Rkxg=": "4166666000000", - "BjuUlYyRLkCw_RmLfMuGpLhnF4owxkCuq8VeTdlr_C4=": "3844114000000", - "Bk-981u1yMOemA7GzJvgzHG_5hQd41aEYywNjqOScXg=": "3773793000000", - "BkHN7O8OiIJLbytJKnUou2rs12LJYPCgqzSPlrQUZPg=": "468862000000", - "BkQrJeQUXLyYzNEyUk3H29jNs6xj4ljlEH_ov09BjSA=": "3415866000000", - "BkslPxW4pW6SCe4KAn0z3YKU8oIvSs1pz9WfjnKnia0=": "455600000000", - "BlJsN-W55cHHg-ilQGr2-nCiO1xt1CwnGr8HQN-NqtU=": "635315000000", - "BlXkOpcK4M7xMaq8pTVoMWAcFJvmXTIYs_4bKzyObjY=": "384169000000", - "BmJeVfPDb5VAmjD0nhNiCOQk_P-qpUTWgRJABZkN7H4=": "467018000000", - "BmX-4pWdfH4XkJB5NLv2pd-knePecji4MVxhlmzsRI0=": "389081000000", - "Bmc7QCBef7AQSLyw4ZcXdPuXVZPcaxz1PTkWnOMEwOY=": "384615000000", - "BmrU-q_Zb6VeUI0KBbK1BhAF1llRDAvY10r08Eq5SSg=": "454791000000", - "BmslHRiJSzM3MJc1uz1Yd5UorpXsvYWqXkK3jJhG518=": "769323000000", - "Bn2i4ialYfPX2Plqs0uYqM3MoZHnGKj9YHstw1TpHNQ=": "1376357000000", - "Bn8EKcF7c7bzZ7htpUHnVuKt_NjDRvAYB71aZgAIdd4=": "378341000000", - "BnLFaXf0ryswg46KW46TGjJ1is5OQUh1V8iXqBFV61o=": "2281729000000", - "BnhZJgyQDP_z5irTXF3zKgvjmXHJb9UyYUuE8HfBwgQ=": "1923076000000", - "BniW6rN1E6rx_dcPQIQLAqGUV65F-l3quM11bIbpAf0=": "943995000000", - "Bo68-QvgvCrBbrZnNsefFVSqAoBciGSo3Sa_1HhK67g=": "455600000000", - "BoRux2k-6kRf1t5kJai2EwLZXIRHV6oRHvsfgYcASws=": "678830000000", - "BoaO7GUJYZKsBjBga7lfWSnZHI63C42yiN5LByiRZJM=": "407808000000", - "BooltBmNR-y5GN7Sc5F8oNmCG1-U_u_bnj0of9BB-Wk=": "450623000000", - "BotcA72X2b6NkKvBA3Da9x5XwKYwFQV-wyLQAMYNDsg=": "386056000000", - "BqVbqb93_5xszfmMZgl6Hyuq1A2-0Uyv8OOu12eyXyc=": "385156000000", - "BqacTxaW4hXizPpVB6R3w4LX4cjlAuxApGAaL5QpuSI=": "657794000000", - "BqbnWcD2bZ376V_E9WlsopvnjPwn68csU8ZZWUOiHyI=": "1471209000000", - "Bqh2e3rtHrL9y7NZK4h9preftTx6wXKLd78Tdf17LR0=": "385733000000", - "BqzFBScG6grO09XQf3TSoMSe1ZHevdSlU8ReVHQqgx8=": "2005371000000", - "BrHyxvY9A3Brl6ik_p-JKXI1i_-HgiNS63u7jVssesw=": "385506000000", - "BrleRnmN_4FawspXuQq9GbijskEnYd3E8bcmnDDBmSw=": "62363921000000", - "Bs0t16AXcAuCDEsTak-ffaNNJQ69beQR4h_j5lhQuc0=": "454539000000", - "BsLJ4FjEKYBv4bAKyPCM9-kSd9Ok18UqobbJVjSxZvg=": "7689721000000", - "BscCaySqUIZlbQocQPInfsj1QXRpu17AFX-ZoJc6neU=": "2778826000000", - "BsdQo5TUz2KUpMUk4kwmBNbiNjwehbarzk1wr8td9jw=": "830677000000", - "BsopJZT1YDNXwK7zalgAIgw6pPWSMWMxUUxuBUsiVlU=": "1132129000000", - "BuDKs10o_B3MspaToeXa1KGa0Mnpa0nXLtUWtycEOKI=": "408021000000", - "BuQnJ4lQNc7r-3Bah2tD873ZhBz-d-CEKeTXb4ziKYU=": "908788000000", - "BuRxa6230iWjQ7EqgLhXY1W6yl4ZvruETxruKZdes_M=": "530454000000", - "BuXmbOIS3lHzLoL7kVlaxWJ2bg67J5OBILQBAT2POko=": "924180000000", - "Bud72aNmAk14CGPLr_ueEJ4Il0ApgSQLO3iN_47xHH4=": "2031249000000", - "Bukt8Qc7AkziDjVvpa0jCl_jjgy6KmliLZhAKvExK38=": "919719000000", - "BumItmQil760LO-ISo5IU225ze7nV2Ww4To0v0ZPpVc=": "466267000000", - "BvLKXgUhxz16Q7yLAVdVKbHly_vobFFb2HMr0Cdboe8=": "384615000000", - "BvNs0KhyVceDCD9i-al2xOe9ytyUB8gDcBVD-I0SrSY=": "910115000000", - "BvShD45mgjTyVcT88gAxJeHU-aYTZFEjhwuMLVFtdCA=": "4595189000000", - "BvefTcLyq1dlyDsQkRzONV86AJaTEBINyVEMICveNJQ=": "1927530000000", - "BwoESCHGPs7UUypWVtKQu0jhblqDfNEcumQ5p9psIwc=": "460830000000", - "Bx0Fb6YIhi8s6_sIasXsB_1jKEH2sJe2gl8SStvJDkY=": "866680000000", - "Bx8qLb-63NPVz6xXd7iV4WqKwzUmuxwkEtQEW3x6a7A=": "385509000000", - "BxRT62tnZ1DZN2DwlKRFk-UKFFGxlfUNxtiOZZM_7iM=": "635659000000", - "Bz1CqglgdzWio5swh9aGbfg9t0F-GFKtA5rmNArojTY=": "499999000000", - "Bz9LWS5YjH6520Q3LkZpUIixATlpgY_zowE39shsXIA=": "384744000000", - "BzNH7I-vxlWIl98zpZO6dnswf1n88W41nQJr6-SPMHk=": "382104000000", - "C-PCPaFeKyTaYa9ile3ze6_YzsHx4rQr7g9kK31ooz8=": "846153000000", - "C-Y4gAG8QIjfLmafVedDat7RN_2ykcdHOrcT7NEaDqw=": "4155005000000", - "C018Nf4gXAbSa3KqebOIuzzH7-K7J8DjddnvOroD8fk=": "384636000000", - "C061p3gykdLDeKXdYqEtDtcjnicQHQQYlZT3xpbWT78=": "1923076000000", - "C0_qIFmsavxj1s0unKPhAb4zdUp0pdm74EUFA-j3QQs=": "1156543000000", - "C0ofQTz-Q4oM2CvJgD1TAeXJf3SMmkMz8H3pLMqTig0=": "768895000000", - "C1JqdkfkwY7EthpEBPsUZ2HvYcLgO78Sy0L9WW9rN-Y=": "377935000000", - "C1LtUK4k5yGlMlo7LVi5s0__x_V0tq8yy8c8Jmh1pKA=": "5061836000000", - "C1Lv1f01lxml0-kHtGdHggCFsNZvubWP3t5Wl_HKZfA=": "1153846000000", - "C1RuVVt7lXRuDgXU18tEypY7XB0sldeRymhNTZrpSk4=": "2283357000000", - "C1txP4KdZYpem2RQ8Ml0Hwu2T9uAq__eobUYBHA10g0=": "384615000000", - "C2-aFGjQpcoYaSXZGXQlJxzpVxGJZaJwai9Xwc6zDDM=": "455125000000", - "C2H6QFK7QUBvM6ner3-dKhLVOILCFKvAm4rDQ9cF2lM=": "1923076000000", - "C2WA-Gpp8YD2d7J-SrnZTkmAQQH-285fGdQJiJuojL0=": "411085000000", - "C3JKPfT_e52VD6JPPCcxblDX9uvjnYIXEJFPhOD5Hzo=": "384615000000", - "C3NhoBOs3ATd9rPQq62TtfyVguU9shues9kqcJrP820=": "403480000000", - "C3f0YZOYIWBB5VnWUjZbFDPsYDRxyAG0XfQgnIyyaXY=": "404478000000", - "C3njtIuk3VviDrKzcUYC1x6LRwmbeJvQ_iXRBdSccaY=": "4170148000000", - "C4Aa8drVLDQUlrmNYLB9igiKy30-VpX5ldKmQQ_2Lqc=": "384615000000", - "C4WUt-MFLjLssgtP_sJO-RXBxab58Yw1Lv1yeqjC4oM=": "404829000000", - "C4nlnovGBg1_LwLzfRyfGRdyuV-KyGaOLtTCADDoOi4=": "454545000000", - "C5-_9T3faZT9kD4tmGWCVBeogJr2fAlSfZugWojBfiQ=": "383305000000", - "C5FiNcjn0Hb48h7Zu3oTY598By7vB-WUyqIET-UbHmI=": "471931000000", - "C5Lnokpc-xeCEFtgkmDLPdBijwaKSA3eu-fV4zolDXc=": "411085000000", - "C5d-UOjjsavnlzYoiQDYObK9tUJPg-_vtTbMSKUeJes=": "385505000000", - "C60tGW05atStdX5OJjz19-ve8EsD8XnRMrks3YW920s=": "3846153000000", - "C67e6z2E5lMLszEr8THyZsi0OaXyXEhwf0QcTOazzqI=": "382394000000", - "C6BRimi9-4lORBxik2oy6xge4yxePsyTUlU0vw2ro4A=": "770892000000", - "C6Og4fOt94LGbMZUHr116tEXeyng4moynNzElNdmSQU=": "2265787000000", - "C6pjn9WS_0dJfmJ2nsbivk9laTUo4hdI8AnnnhzDFf4=": "3490384000000", - "C720e1xTo17rsqmJFYKf9a7kfd_lKNSfBx3FNw74IuQ=": "1132743000000", - "C721WuLBkZwUZ1KNLRzBm_jIGbYTmz3HYA9Pzxge-2k=": "1153451000000", - "C75AjFT5A2MCXwOtLahgMBqLRDQ1Wf8YZAOKa-MQRdY=": "377597000000", - "C7ArVMJt3VDj-cSN4M0HLzBuKDeabs5jeIp3Xn1J1qY=": "583426000000", - "C7Gha_utOVkgxLVbDWTuIrqhc5XvrYoYaHUYTLmNNr0=": "382479000000", - "C7HIIrUsnS_yhXgdYgwWYIba9nVVeM2aoN94-zHIibw=": "382394000000", - "C7ozAFM7mFIL56RtfMDx4P0iXXadkl1QhSrYJ6B4498=": "1249971000000", - "C7rnQ3IXMwChgAFYZaeB0pkiXkNayThrqz3QRrxWhhE=": "446222000000", - "C87rFpCQiCcsLfQDlrmctw3B7Q2kR7QL0Ur6sjosoNA=": "384929000000", - "C8D3saeiob-Qh_gWMJyuGSw1zSNqzgpcWDMTgvLEdxc=": "2526900000000", - "C8nT9nxbIHpKG-pU0fCAkH0aaKrCkqNMKuOKE870CH8=": "536334000000", - "C8xpZmXQ0KQSoWUuY6oSgH6fmPY-7dYmp961R_KW-Mc=": "463566000000", - "C9gxiFbjjISJ5efo10li1Y72apY7oWTb0lP_Dp2mowA=": "445784000000", - "CA1Er3diog4Nm1yAqM4k1XGGHTkCu2PQtKFELFk1wJk=": "385155000000", - "CAUZppdbjLSwrtVlV4aQdz7RJdj0OqFFaQF1O4fovi4=": "494918000000", - "CAbv-hGNT34G8z3UCIF2sXdgAGztBGqipMGyT3-ApDE=": "2157676000000", - "CAvzjrSsOFghebwMbVF57Y1OwtBiazPG62wiqdQD_ec=": "15961538000000", - "CB3xoaWcyRYQg6ED3n5sEXCk4lomltrro3Bbyo-Ik5I=": "1585940000000", - "CBXTWPAwkTp298p7cZnWwODUJYe7JDAaiEKhVb9P3MA=": "1628967000000", - "CBhRMQ2RJMFH3cQqKt_89X5Ykhf2rbY37TVXRisrlSY=": "1393724000000", - "CBjDkl-wHGUWFbGK4tRrVDsJerHAQSCgQUFd05vQgnE=": "1538692000000", - "CC-H0y178xJZeqP9XrsbfMb6NzrGJdiueV8zqoCK-q4=": "2120701000000", - "CCLyJ7TEVuVsOoFcQ7zpKsg-EVQQv_GJ5BMo56itmhg=": "412863000000", - "CCauTC3hgENI_BuCIcpNJxdH5PMKPPfivgocIxEjdI8=": "384620000000", - "CCkbOSmKuwZucAL_Mu1kFZ1ofnhThRJ3c4xd6bY2z0M=": "679285000000", - "CDEWQZ9DDKmAz4bEJELANRh2H6iTz78I7Dmlt2aCxKU=": "784991000000", - "CDaYM_UrfZZDvinRsu_pPXZDFOkN7USde9eMIxJ0Su8=": "1362399000000", - "CDoKZgukoN7eYcovWKjWLSTwx-ZmVMwHpKTMlT7VYc8=": "927202000000", - "CE9Nws2s8gO2lm5eDmgdfD146aCW038qNrL0B3cHFtY=": "462501000000", - "CEQ3s_33ybNlFgIWumf58u-G46esLqjc1TwASHolyoc=": "10011451000000", - "CEXOPsmnhWYq1MwH5zfH1LVgxfxEtVOLcFbmBCawsCA=": "3087634000000", - "CFZLaMKIgcYXTNuMgRQT6twbpufo0ebWx6WTpNLjOqY=": "454814000000", - "CFqYaAzKyiqYI8cqXsHEIu-ggtVvjzmztjYU40cPniQ=": "1344756000000", - "CFxGeSi3CR91Fmp9q2NcjWWjuWZWQV_i6iJoAzwoL8A=": "415455000000", - "CG0jp6rRtmCdXJZXkRP5acWVl3V_58KLjKQsLaaxlGw=": "987431000000", - "CGt0EtHkmCAr_EQN8sS2uZYAzltdIzsPrriF3-de6bM=": "769230000000", - "CHGI09gRMQIFiYVZDnbikSrkhqp6hEJYkOrtXgTnnvk=": "7724149000000", - "CHRzIpvUUwLrGwFJTUHXHU5PDk4c5ZmZ2Si6lb3Tf38=": "464725000000", - "CHTufqaWQqioj7mCnHMz1e1jFcre0k9xLSkehOhMhrs=": "470310000000", - "CHcoyFbJevlPmWzzcpUw9yLpyj855m-upw6KoVkWf90=": "750791000000", - "CHwBTPEmoQc7oMULnD2DrZecngo6use-cfjLf6JURJA=": "469318000000", - "CIFuvsSKW9VFQiOtr4R-Mwy9JplOsniNyjcLeXIm_pc=": "469310000000", - "CIlxI9QPp0r1hyaH6p9I9Rurpvqk2GhKxsXVDXr2qwc=": "384615000000", - "CJ2yDyY94mAwljEFiaWLQrQuILL2qY67bO5GxVrJI_4=": "838851000000", - "CJZrXBjJv4-J_nfgrMJPKikcLoEuCs-_78K76_2mdUg=": "416666000000", - "CK6FncWLnqmCJt5I7-jFKejwnL3rRmvXQMRp1aKcLwg=": "833333000000", - "CKcOZjPjNQeqeCO2TE36WRcIJz0G-0aJl4axu5U89Bk=": "417635000000", - "CKcc9WktZQ8nVWP53qr1rQCoDeROWTUsOopYslLR0c0=": "384615000000", - "CLGN72YSesWw6eZ1KozLdImtsm5d4z16s2UlIizt__o=": "1518159000000", - "CLxhm-nGYOh-vBiaCbSfQx3jWoZ8uQaoAJ_KpDbvcs8=": "25058823000000", - "CM1gVWGd2FNMm2L9fUHSqQG4jw0CLX3AvPXZi4M1shE=": "769230000000", - "CMD_N89BvHa98RfACa6fOCCRnfBvNuzZxRPBdNU_1NA=": "385510000000", - "CMIhMxJwpU_JYZ7i51h3ZtUDbF0rGDKr-stW1DU7eQQ=": "413111000000", - "CML31azQDGhg1-zG-pUCQzuzw7urhXTqMn8oyT4gV44=": "415629000000", - "CMN3P9VstnFlmoCPoN2wViPTeOBmSIJl2a9vYVQliEo=": "1243972000000", - "CMgdEkXx0j9v0__Rg1cSAriUlapcCfeFsMQ9cI_Pots=": "455600000000", - "CMh9F-W577fGkpTSk8ZYUt8qpjYtW_pk33Mdv8FVIfg=": "1900423000000", - "CN7ohaALdrwpGdETnWtdTKAvIP-XpbmoQcSMt6ltXmw=": "384528000000", - "CNXq353ttdsf3nRO0_aVVmB3oNy4M718lEd_qf0SOi4=": "5106472000000", - "CNY2jPBuD4uT-F4NQ09l8XPVmA2yY_MAGNYcn-GjlRc=": "417637000000", - "CNayZ3prFZjYi9jsN74LBsAy1duTIDZSslh9LMf7RTQ=": "7150878000000", - "CNbRo1w-5vkzKTpChcqPkxT4UotJe6aAAVlrss1KkBE=": "394931000000", - "CNgPtMc_J9ldaopzT7PdBBH8atdlL9xldv6qKXlvgRM=": "595529000000", - "CO2DZV_hdz_jI-ZjGD5Qh_zc6coF5YM2Sunx563XeeI=": "415629000000", - "COPloVMWGHzv4WHSUpi-jVrNeS2HF6Mh36Oz2mSF2Jc=": "417630000000", - "COTyBHuEm0xC8oUrYPTUOo3mBjtMvdmw3Pzv8CI59MA=": "3126892000000", - "CO_kX__T7e5poD5NcehX-yExq_VYHY8a83p0x3DIqnU=": "377664000000", - "COcGOtED1k67VcugNVrwlsyoKaRFOEh7ky1Og1hQGLE=": "2045400000000", - "COqiEXJhlc76f_ixCHsdjrFEOz13gUysiXMSi7Sxhc8=": "723862000000", - "COta9-1xQ_fdtpqMK1yWMHaM-CzvI0z41klTAGLZ4Pk=": "379733000000", - "CPM5G7P6n-7llVl_BrW9UAfELwZP7CKscKkyI5bS6VU=": "385509000000", - "CPRlAFMfMpzv-gqK7zJd4uPDkgv9Z4hd0di5NDV_MWo=": "3843801000000", - "CPXPzECE0FgoBnYtLoEQ4LUfeL4UzFnNmfijqHLRbzE=": "377921000000", - "CQBo4stXyv6y-hAIsLlMJWAgUI-zhiTQsbFLAHPepMw=": "1508246000000", - "CQddAZmIy6ZHBsoWGZl1VDdjrLxpr3Sq80iE_bUYrPo=": "6403114000000", - "CRKBMhcHfPr2_7g0TfsU_MWeFG41KXm0NqFJAJIOLfY=": "11576436000000", - "CRkRUhOFfxVKSwqC8FDWkth7_0lyMjMqmzrkZ9W6VRQ=": "466696000000", - "CRyww_7YJb3J0N75S9yv1Yb20CNs0XnJpGiubf76NMs=": "1153846000000", - "CS8mThnRpeLfif6OKnOc3Lk4VX5dpmvtR7efJgnaOTM=": "528498000000", - "CSDM5MeAKWZ7NA8ZeoqGIalrUgJ6KKgs1EQSqc4Ylrc=": "416642000000", - "CSaTZnDM16Fe9XjcHNhGA4-RlVHioKxA_emKtAayx5w=": "416666000000", - "CTV-YKFurL8_NOAxWRFWL1y0I9_EvTVSDI1t-B5qjko=": "1534959000000", - "CTyxMKz3adzhskOxmXSG2kDLgD1b1Am73Ua1I2aZzpo=": "12886774000000", - "CUmQ-7qRcmYi1Dj3Piq6sOLw9DA16A5tA6BzFuIy_iA=": "642211000000", - "CUyVMEYopspFFJrvN9KFx2x_lGbUDSqo-zNV16u8Yvo=": "384429000000", - "CVMI0XXbGnaUBRhdFnXlavQ5_wtWBus1f5BQXuyIK_E=": "411085000000", - "CVMlw5ECmciSObie2eThxaqa3B5_LsLvow-KA3n1ajc=": "1153448000000", - "CVOOhocE_xZXF43jIHzrO7rkedoBRvqUZolSWpWtqmo=": "385510000000", - "CVWudS2H_ASTWymw2i5OhxBDZB9cTQyHRg_LTM8q6Z8=": "1252908000000", - "CVi1Fu7lSMHqS8D7yFRIl1RnLxZh6xa01ojX4zbOnls=": "1933021000000", - "CVsGCPnhhgVLcW_ldP3JZkBLN_5sqRxvm-ePxT_Y2Is=": "385506000000", - "CVxXLTDFz6OtqWSK6dmfy8kC_whwcJ5qcr73A5MSyGg=": "4047143000000", - "CWG2UOI0Bv8YYAwFxpq7KYXu8epVxlVWdzR5s70mm1E=": "379564000000", - "CWfY4kwIwNsDsD2SIRbIJ2SeFl5QC4IWMsRuf_LSnj8=": "482124000000", - "CWnN0b7BSuFUg5Vs1UAGGwZAIn9W9QRu553tssE2kAk=": "462169000000", - "CX1Sa6PxGjaAL9orBLs4yPWsY-msUzTYeTUPCLku5XY=": "3290656000000", - "CXhhkJwZ9olzu6U-ARAyc3yIwOLg3F8FurR_ZcDTBdM=": "385507000000", - "CYiypnmPfs1IqUOMdr-67uHxyZ4RLxbbNJ9o9p4uEFw=": "416901000000", - "CZ-MkT1bgw_qIVjU-x_wB_VklzCAO6lkCn3Hv6NceTo=": "456369000000", - "CZ4tW7SnRNMT7JgB3fThug6nnvR542yE0R9wDTO0N20=": "2537000000000", - "CZhyYoCvrV6zl40lBgyvpA0FFkf1IIPfL9BK-ORzteU=": "416886000000", - "CZwY_rqc_UBZfIUaY2mBURA1sx4UBhg5RPGcQMnW2y0=": "416539000000", - "C_1o4VJa2-xMtD95SbLuL7otdpCxJKNbk_meRJ0FzmE=": "411851000000", - "C_T380Uy3p_3j_aqdtq3vqo1LiOxpOc0mu-eKgTe26I=": "385498000000", - "C_fh4CkwKQA4aWButKNGjYTodL8nEMYWZGBe4C1loio=": "384597000000", - "CaA7qqy-brY1EgJFiwpqVjGTJwoddrciy_g8-NK6xDQ=": "1709797000000", - "CaGPQTGKwZtbpqWC6qdyHkMJ9bb3euyBjWhNFA8vS3g=": "453599000000", - "CaICHKHRw--wrUpBbU7800V6896sGA27KNLa9Yr6foI=": "1360527000000", - "CaRdqtPeWzbj544N6S0uoSuAYNNMObfhJZCshpVC2Os=": "468191000000", - "CabU4bfIbghnn5KSR3FBG7miFKyMPxWfY9A5zFOAvAY=": "384523000000", - "CbRqJ8e5GY8ztrlxIfNKDYjfTlW785THsZw3duXAioA=": "385233000000", - "CcAGwYWjnTwkriKpKomDEyaUjwoeyRvVHOJ-Q8J3CiA=": "464564000000", - "CcGQuOWbUiOfo2gLtEagkW82qmgXti-_gBQ0nVwbfto=": "4621865000000", - "CcLb7j6P4N1uDh21eaIXmYsLl5fiEyWUV_c5VMbgDoc=": "379260000000", - "CcgyWdvM3v1hI39n9EEFLJBPPsQ18gFKq41QvwbjUZ8=": "2022393000000", - "CciHjzpl5br2NBPGk0Dif3D7SsZA_02EWG35WBeOFok=": "938409000000", - "CcyO7t6q5zRcKGWd3hQZgOFm-ZvpzXaQS6M1MD7pxhE=": "767795000000", - "Ce3CPucqFQIlU1DJ48s8vtCJIHJ5a2wlMEa1jagM_6M=": "472515000000", - "CeJ3AvYTClefM2mxL_hj9gzQkls1ruGgsVfMuw08yv0=": "384615000000", - "CeL5DwiW3rZY8KeCz51OB2qsthjWVsXun8Ie3wtIY6U=": "1922285000000", - "CeoUNIOYMHFXcARkkcJN8IN7YvAOnS7s8x6AcmwjF8A=": "463315000000", - "CevmfINaf6Hqf4BDYjPqkmgR0LdLFqgrZvd7xo80l1c=": "458892000000", - "CfQB_ANcpk9vkb8C-QXvQ1iMbhAm7y8HBAUXiBxaPWk=": "466401000000", - "CfSjy05Iq3hCS3ZUjND5XMF6QuRMMMylbCR83J6SHWA=": "446162000000", - "CfX3f02MMzRea1JDZEoSvmocPZqoj5HBqSCYt0L9X2g=": "9615384000000", - "Cg33SPYSNo3vF8a8Xm4QBoBKGytM4Rzwyf5tpyeW51k=": "417636000000", - "CgWuXq3xpijDVxEIj_6moy0Qbke34wYysN2C6G2SHZ0=": "1923076000000", - "ChASfqIG5NyQMQFee-PC-IbXRoaKPFCzocF_uq83Rho=": "4621453000000", - "ChTiSA51Y3EB7DoI0qqjco5GrtmVeoZFsABUTpT3c_0=": "1216071000000", - "Ch_UgdnJd_nQ4nDNUeLrqPYI3s96w6gSQ5JqGpkthig=": "417632000000", - "CibDBoxokc3Sp5jgUrgK2g5GY9WTDNemmdBFAtKOSIE=": "447704000000", - "CkERQGI3T5n_9nn6bmO7G7P7j19NeGVrxqzvpVL2lFs=": "385802000000", - "CkMy8-AkDHLTrpsyFDOUw6ohN4hifT6XiEOqXT7Ruoc=": "1134645000000", - "CkNOPOqHrek1OD3WdmB86TrJU04y7NByWeEqxSD930Y=": "770237000000", - "Cl-qBf6tcMzzZ-KP9ds-sIz2iypSLTNbbHx5VLWufps=": "3846153000000", - "ClKbL4ZiPvDVYqQNHT2KcF_I8Wq8qWzcG0MhigjT6lY=": "1154944000000", - "ClSDSlagJSlO30EJ8tl5gC0weQ8Tm6jWzvEGFa2VgZ8=": "770994000000", - "ClTY_Xq5xSAseWRjtRlUtCfNQ1kWi4jYZiKzxn1_EII=": "384615000000", - "Cm98WdlCcKypfLtE01BYEUpnudVqsDz3mTTDy66DQOE=": "3951000000000", - "Cm99tcVF09CzQ5MDxZykMBtTNyuJEKVb7SlyTpBvijE=": "1716633000000", - "CmfLkv5e-gv1E-SD2yO51dQXkM905muzRzzjMsLa3zk=": "417634000000", - "Cmj3L9TQp-OFt5gW61KpwP03A-BcnvvirRetLSaf2XU=": "1999999000000", - "Cmqh9Z0J2zaZGmdAM9WjwEeFPLGM3_NPioRODCrReKE=": "1244326000000", - "CmsaEA9H1_EZGSmdmDsEB01bAFqGBs8dNKDt77Te5zA=": "385213000000", - "Cn2jJAmzvbV60z8g1YTuAzjpK3S6IB9vzkcX3Egt1bM=": "473773000000", - "CnUFQcEBlQkCaPDFJIHBzE27P5NhT_zYnbNdA73cgUQ=": "390975000000", - "CngD0UHcOLMOQKByfFJtVCz7XvZvDJrjomPSvBLSPV0=": "385282000000", - "CnvXK-cjwKVaum36Fnct1XEZRzU_pAPDpWy1k7oWGG4=": "384615000000", - "CoUnkM8F3qTh6yMdBmgGlCVEzEWGwNu4FxbrnPzRSO8=": "455860000000", - "Cp08FlgR3DHZbLqau1P-OowrZO7ijDp9CHTHrtWWEi4=": "501215000000", - "CpdMg8_kEzFc4aDwO1PeQ7ZLyY_ZuX8WaYoMim2fHFQ=": "14918175000000", - "Cq6FL2zYPMgtRCxXbMbVv3ESIwByD8bj0NHo0DiFYHE=": "544598000000", - "CqnTlgSnlq9CdQoUWNB5WQlP4EDaV3NPOjYbStY3yV8=": "3915019000000", - "Cqok0AodH-VX1Um9ZbjH2yS9zLDeDrtj2Ru95tKcpv0=": "4134783000000", - "CqsffbJHelXkJkse6JTeSDp5rPrJ749mPg0779tGxgM=": "467842000000", - "Cquf9AXQFF5FfZDhhX6ybuxxSpDmoG8KN2S6veOIUYo=": "461801000000", - "Cr6XleQGXKNFZvnBmLQXrQEk07NBrVXyRG466t0e1Yo=": "739639000000", - "Cr8B5ikAQZ6so2qf60J-B6Iv6j73MDKDwDEGtAaQlV8=": "3806533000000", - "CrJ3vN0BRVjpqt_VlIvrqOpS2OspytWbKUVpVdLvw-o=": "386372000000", - "CrX_1Gt9o5C2jOzBnZYqU6uAG5y-LyH5CZiSS6dz1EI=": "384615000000", - "CrjWuljrhF8MOvZdsQGW4zV2GudfurCr8ihZeiDxZ-A=": "385505000000", - "CroL3MeQ2Zt0fvZN25I4LrnqYsbIoHOO3Ca2hBnfIx4=": "1153877000000", - "CrphTWb_tyQOKTZ9aB9oH8lyT3TuHulB4YJ85EJ54NY=": "2244367000000", - "Crr_Cbae6gvh6y1AaobSD9kK4Btgui72PMQv8KWd7hs=": "481102000000", - "CrtvZn026ozZHQbWdaXASX0BThhnomzFYPj4M0IXICc=": "384615000000", - "CryunwxkvVJ8qR9zaUYlFjgId251I0Xi_Md2qsLLDCg=": "384615000000", - "Cs_mUotyuMQ0GnLaA_iQ4O1dl8yeVMXj3P6beLtmGyk=": "414244000000", - "Cso86rX_E4Niq2CywgqL8vF9m8NX3fPwJdaLY9f72rk=": "384615000000", - "Ct9J2MniSD2DYYR-lb9G1UcEEttOro_uOCQyo3WaU2s=": "914107000000", - "CtJoyWIpzGtvSJ78XT3EC-yPUtKVRXWtvSqcmF1xfbI=": "762188000000", - "CtK_2sR-XKdC7dkct3IsKh8E3DnZJz-MhOBtXyOv6Rg=": "412344000000", - "CtXbA2C7wGXGYlrHzZhDr4GGOfbP7AJa3Dh08Cb8LME=": "3838212000000", - "CtZfIJp0ARvlJ-aYFNG4vHtzx8Mfw6sjIPmW8WVdT2Y=": "468054000000", - "CtlFiCwW74pJllM18P1UM4RwhAMgx8VvlnaaClEndyQ=": "378786000000", - "CtmcV7dd-9iW-g2W-jL5iTEHA24OvumCXQU68hKnQ1Y=": "384615000000", - "CtraNQkspKYWEUSZDJn_uSLEBeIHEvxXwdw8xIVat34=": "22274129000000", - "Cu-cy-Hg6ArtJD9Xk5ccpWLRcEJeMWyM6RkEmWbeh8g=": "975076000000", - "Cu2eWXa0oalk_1Q4dFcURLWWZ3k1yLVZtmogXI4iFNM=": "833604000000", - "Cu3TOYs7mlt0sQsksJP3ksy90YfYUj4zrsQZunxi-Uw=": "459419000000", - "Cu6WvmSnabRTlWxFbbm_8uAVi8UloFcppeyJIvq9f04=": "382479000000", - "CuGnQFbK_K3XyqB-EyV2i5YrckRIjB1Aba55sgrNNug=": "415629000000", - "CuN7wMsoNDSFbstzd0LSXcU1el3NU6AVk0ckfXsRr_E=": "384615000000", - "CusvQPQiuuelecRmDOAUTfmk8O3MPCxEQMZhByc-tvY=": "7692307000000", - "Cusx-fsVDU0gq24emk2h-LQRyMkAV9HEwh1k-tc0NRk=": "384592000000", - "CutQnkF5KuXv-ynI94NU-XIMyYEnmsnZ6wjDle9BG_w=": "9999999000000", - "Cuu4vXNT8Pv6vhsHjHePiEsgDCCreZHSMM_5SC-EvK0=": "786039000000", - "CuwfwnCFBHi38QaYi1hs01ru7N0RAPLiJgX-d9KGE94=": "470734000000", - "Cv0FNXbuO6YSiKyZgIZCK2rl8Dy_LFtB1VVUT2Mdzfw=": "460896000000", - "Cv3itz9dau-66UgfPbApIAlKP13hy7oTNEFHDMZH5qw=": "384615000000", - "CvxKLgFWgtdQvWD4iVOWTj-wShqKTfO0APYsgJDPfm4=": "1666666000000", - "Cw4egO4jyWH2T6yQ7O5L5ko27ZRJRlNgEp1JcFRHm0o=": "337729000000", - "CwoAe2q8pZY-IxYji1-1z1b5xkuLrLXuZZd1LGUWhmQ=": "384615000000", - "Cx9og0uvG1cWCa4Fz7d0Y8ixSP4fQQ6yAMTBCc93Rpk=": "12500218000000", - "CxAnRVXXMsbZxRZAWfgGqU9Ub1v-arGb9umVC3p1NA4=": "6229065000000", - "CxGMoH_aDAnKba03SoJm0e8xTM9AeAgWr1Fyt_6fu8E=": "840198000000", - "CxOA7y-hMyk-plvSvfIaDiBy8qM2WfJo6gfrR8gzcdo=": "486218000000", - "CyBuOHQD_VEvFLFov-5VyopOZY3RF8ky9MRdGmali20=": "769301000000", - "CyCrp668Dg67WdJybOawfi8OEXxgqQZr9MP5zNMnaqg=": "407808000000", - "CyU883orkayN8G-1kdqsLzhOx-4V3UcwcLbjoVkLjKE=": "5224707000000", - "CyXMQZr6rTX6PS7kls8cqgGIvuAToMLgqKnpDXxRL9M=": "499999000000", - "Cyfb7BWA4glOrQdFE9fiIP2mjf9fejqWfGiGgbTdS8c=": "454445000000", - "CzcVYWz4kgfPyYTAui6iR_t9EVez1wvd34ZOX2a-53M=": "6601337000000", - "D-BQjUl0UYmGYx_yw4yXzCUXab_D64ijokJ70Jt4bXE=": "384615000000", - "D-KAmxqZWemMDV_aANfI40AjytCrgl-hOxUy1yX7OTQ=": "470310000000", - "D-ScXFY8N9nunqpc12TfmSawgu3T6IU47jfWKBSGELM=": "422985000000", - "D-U89KYrZ5voZxXyBQEgQFPWZ5WGOe4Ene84NYmnkN4=": "6342433000000", - "D-hi9QEFroS61vjav_bVUSMT28B89klF08aTp-fQm3g=": "411085000000", - "D08Ng0Ud1LmHMzgrfFBL-CIvAbDFfvEBpJlaumk68rs=": "456871000000", - "D09VD4F_WJ4Fk0xo2pb6nSW39HUQ1e9qPqqDJ21OswA=": "833333000000", - "D0GbfoEYIBRH65yk2Eyd4Tyb1jRsjb1bzVQdNjguslA=": "1875032000000", - "D0QLehrjr-CU76ktWEPAxyTknFw-mlWelnADvqklfzc=": "1668377000000", - "D0YetdWPoYNKpdQzH75LNWqvIwBaSdMVweis3O22N84=": "416666000000", - "D0hOJPxJxC4w8KgeSpd-K9gp3RNOU_LdFbsL_jQtNCc=": "19204662000000", - "D1Zbtlm_H_mlRiH0DETrOBLUZBrq6vi7PG3pN3lH1IA=": "383334000000", - "D1g5JGIfxgQAXLR7Pyye2GpF26DYFu8KdeN26bcN_u8=": "3871431000000", - "D2_raZPjd4Q5-hDkHnOzDA6jqe0_zj-nR0YbKchFP7E=": "1538461000000", - "D2bBcAHwfEtoIzImqIUO-2_AW9STn81V8iGsOewfpio=": "389592000000", - "D2eSsizX_uNxyVtKhhaw29yrTnmxwHFiawoA8-meN3A=": "1911972000000", - "D2j9D75GS2FgBpCv1bIKXsyzQyUSCWA1B6ZlLeckGq8=": "452207000000", - "D2lmCvRayUAT5NFVJmMN223rYLdUJ6CJYjgIY4e4kfk=": "416586000000", - "D2t6lWEV47g3PADfb3sVLbR5YAGCV_l695aLzW8e4CM=": "1366800000000", - "D3D9VPkkmljVU4VCb2riEvXX-dLLpuoZRtE9pQ33syw=": "378257000000", - "D3FKOWnJWeCERoK16tzpJ7PWeFwn5yz4d7e4V3-bxTI=": "1377927000000", - "D3_kISHkmFQu47hKSaUzEl3HhIu6FvUxXiidd-FAIIQ=": "653305000000", - "D4LWN01tZ_rUiaIHpYc2Yxd1h3G2t9--0NldzdLx8vk=": "456230000000", - "D4MJc6F9XbZ-PMoVfH05l40DCWqE_r_9aEZdYXAhjIM=": "384976000000", - "D4XLZdBgi89ba8nZcXiB1JGZY1EVLKxS7KtmX0V-_Qc=": "382921000000", - "D4d1hIcehwFNytoz-O8e0CgTlcBjv81ODZHsPa6BTlA=": "604517000000", - "D5AVzHcrQ9JDJDyi_D3NmnlgSkX_UXj1FfZTKWFHzBU=": "2938270000000", - "D5DADrB0d66ggXPZiPZJbfwM-h5n45LGp2SeL5VJXyw=": "10905923000000", - "D5FRAWIRnSuH41jysNBGwgI1cPjcZDemuqdMpFlppNg=": "1271008000000", - "D5FcZL4DGphChmkf3iTDEIjqXOp5tTqYbA31CLbfJeE=": "464809000000", - "D6-Ee2xDZXhftlOUtKUEEZozMiN2nJt1CbJ0U3yQB-M=": "455270000000", - "D63SwdTp4eJvrqIP-aueJdlUkQHH-LW9FrVTKiXHRCM=": "464615000000", - "D7-yl0K-qCQqWHLtkVMLZ_FfMI2HyG8HnZ8za7F-i9s=": "385346000000", - "D7K-svV7S006Kh5Vdwt6v3MqJvgcJe0VJ2vfKIze3tY=": "448349000000", - "D7SOgD5guYF-s5QB96vprMbr-YvP9WFRtcvK36lP100=": "890658000000", - "D8STWHFzvWX9J0SDvQwANe2SaRf_nSv1B3TTsHvAhdw=": "571094000000", - "D9_BqUsLHoxCVv8-x_t0JCSp5bld1QJT8ULtDywukCY=": "839786000000", - "D9pP1gXke86rrKwkOgQAJvHlTmnn1PlK845SfhnxQsA=": "384615000000", - "DA3G_eEgJmj49_zoqZXdSZ4nnHoSc2H3-Z_GzwSIUew=": "1923076000000", - "DASzUAAXImIocIfUf4PVzEc9YMlozLwXndgGSiSM-oY=": "8395929000000", - "DAoprt808JJ5yR7Uc41U5uUJE4hss8jtvGYzUhHu8v0=": "417630000000", - "DApDkDsA3-vxtMaVSZ10vWDSBx0OmEI3qgYlJ8YbSjk=": "3725796000000", - "DAzLZ_RGUEXM-cfksHieXrF4ynlC2FuWT1vYirU0eng=": "384615000000", - "DB6LehcwTNeuPTKQwi1ZPz6UYCCkyTNEBBZQBnJGkUA=": "385896000000", - "DBMBbdTVZW7Xc3NVOUfNV2gASFHbgPKsOoFJe-pSaZ0=": "7919291000000", - "DBdimkWZWGqEHOMAcohJmr7Ac76et2tYfh04Cfk33e8=": "455125000000", - "DDZqchjODzw6bLTz_5tVKZTduYAwXJKDgCIwYk6juuI=": "460510000000", - "DDdYaxO_-49nhX-8EdOD11lv22izPQIt0_feUynyz6E=": "384615000000", - "DDhLhbcIHhGnhasSD8nnGehCj7RdiDkqjUXk_bDP_gw=": "411085000000", - "DDhcpQeMClSYN11ZV5cCGASNuXhCI6qCiVLLhe38CBo=": "14141960000000", - "DEMP5_pFKYbLcCADluIeeWyXwk81eqs12eOLD4HIp7s=": "1590814000000", - "DE__DW0z6o7pEa8poJmH58bcAVydMCrUK3oyKNwpRYo=": "385624000000", - "DEb3NLKP0hqjIaZjAxFZ432X7FxPxDd5QPNdr7nAZdo=": "4156911000000", - "DEpcnvzuk4_9YwxNvlD0gkzgxQjPGt0y18lGZeIO4Kg=": "384615000000", - "DEsmEAvZYZx1C6gSG-55O7W_JTb0EF03vfOLu9IHHp0=": "786889000000", - "DEwCzaW9jqEBuVqalEO5jrdqE9ugtVvrGqBs2KIFUoE=": "416666000000", - "DEzU0X4-0MoLUZ_6HLfjMoVB_tCiy9xSm_kwgsyssPI=": "458201000000", - "DFKsCIju6icRHVnYBI6vISTmh-DHVT3KqTB-fPrLuBM=": "456480000000", - "DFLHajikSB9lTlZfMDfgWvTuqesxrUX1a-qQfaMSU5g=": "834098000000", - "DFb8zE76zhKkBTAhtzNhu2G-fbo9bK1nt5St0Hozkj4=": "390649000000", - "DFlaM3H5Mg89IjNsF35NQrW7FF7fHltCAQFarL8Tl7c=": "824269000000", - "DGFuomwkeXGUSqj5hzG4Af5M4A8M_Z_zNO7kQuK8ksw=": "416666000000", - "DGM1cam_Vb8TJgf5nZERd-pJRblv4QM4Ri16c4TrHn4=": "544142000000", - "DGh_9rfw1Bkvd0t6ec6JtE3f3QqEvQVDmrwGNIt1-K0=": "405357000000", - "DGugB5XdhWvouHzRs8zPbzZtHH53CHjxFpL_ToQHXYU=": "769640000000", - "DH9pntwoPw2oBZNIIZ6bRY9YU9lAfZO34hUlGoUw3lQ=": "23824672000000", - "DHDl9jv8qG7xIsq4DsJM9-kChLUfH0FO0P8gPAWbnjk=": "463799000000", - "DHtTH0XO6jY4I_RVNOwtN13Lgwp0ZePbF3NUPYtznZE=": "459548000000", - "DIIBX_x2-Fn2yV3bU4wJ8BL2haN8nMp9czdtQoc7NxQ=": "2719958000000", - "DIJYJstF98zuZ8xqXksE80ZoIE8kpISzcgG_5rojHSU=": "387318000000", - "DIPkBUzVP3hKZfRH6aZ2qrmi6kyq8z4LGQ6qoYsdKGk=": "6951318000000", - "DIukDZENQ_4P9KIfVapekabdDmWh5o34dnAdhh-JciE=": "3893699000000", - "DIyxvCNYtgxnnixYan9fiVaTTppiNTTkJ671FAYOAcA=": "455189000000", - "DJU9LiiqWd1uHIA1DsAQAaD7x8S5Vv3isohERTx5ZaI=": "7492698000000", - "DJbCGCkk73IbbeenoNdg-jeABxBPdu8pXMQQweOmotI=": "378090000000", - "DJesYT3UMtHnv0P8VP2vQBd0YhH521uXJzS26ImtU3A=": "473265000000", - "DJjYDSK6Kcn7g_d_Z3qZYrwTxrxji6xdpSUaypAJ8nU=": "393764000000", - "DJk4G_znF0DrSUO-8GHMWgitbChep2Ivs0aWttUcjaM=": "407469000000", - "DJmXbuCkrNzN9A2LSpfUkQFtZaN_WAQROBu1Cshyo5w=": "384615000000", - "DKHWo9yrWcLGKF3Yka9_aIKwTq7HXMJA3Xxpl858p54=": "3461538000000", - "DK_mv89d_kMEoTLVlXIpDw7vVvH5Q9tjiRo57VO_kco=": "470513000000", - "DKncHTS5Xlm1q22cVRNjqy33GDTLv5Ud0YgXTmdYPx0=": "386318000000", - "DKsNZvWNRoVbR4wIVAM2XE3IQ8vyPeE1Q8oRtraauiM=": "805092000000", - "DLF-V90Zs-aMnIIkng9k_zg5fUSgTYSX9ZSekH8sMWw=": "846005000000", - "DMddSCajoQxfQMWuTRWlmc1TsPDrQ-nDHPnpraZzx78=": "577376000000", - "DMgD-6sKhA4pDJKxDlGSQTnSx660uDVx2FqR-BNjKxY=": "382942000000", - "DMmsIJ6Oq8E6BkpLvuOVn0LOzME3xa6YLDomjdoRaJQ=": "3315748000000", - "DN1T4rLrHAImmKhdUytmKnT_74WA7FcaxUTmdtjrV7k=": "357399000000", - "DNRzbBW5cgudHNOumaPTRR3WmY-mSDo0JgF2TfXTET8=": "2310726000000", - "DNifjgLQpPE34FnuBRCVBtp8-dZL1AgBFI0K9dsybhs=": "382705000000", - "DNjnyZCflpjVSDQ3oI-jfINdvu7qwtWVrWaQQFGjEiI=": "411085000000", - "DNk1x0aDmeyOM8Uwt0biK1Wftg7ktSqEf8YrsY-3GPI=": "417633000000", - "DNngvH7eUKa6-3_F-DNBmOcNq6HgB5wQURm6IXQUNOQ=": "385510000000", - "DNz07zJjuD51WhNaSC3sOACZiLMBBi-HCoKdyJB2RXE=": "3846153000000", - "DO4_ut8AHpgaPTI2OX44kdMEZTGoebQ3TYLXm7thOUw=": "377603000000", - "DOZ6Gon7GIoT4lv6twXtlSFos2ZZ8PYxlWVccvNwFHQ=": "1204545000000", - "DOnD2qrUFGoaCo31VX5VxAyOm1-ZTN79aoqPZjEBtjs=": "385510000000", - "DOyGrS4FD_vgBeNHSHYNVuniqhnsj3RWEF1KCzG3Uww=": "382370000000", - "DOyuT0TS8_6SFRgr9N86CIQF6z5d_lWtZ_qyDmcSWok=": "460374000000", - "DPCKl1k3H7XnJQ0v6MX-KYtfkR1LDYiTgpuZY33OrpE=": "3780374000000", - "DPZFwTSFLMFCljuPpNQYK02h--ctGsXir6ib6uTDUZ4=": "465772000000", - "DPhGPvDUmydIm-rbX_ARRe8YcE2N7iLBBin9cs3OR2U=": "3214090000000", - "DPpIgVPek4RsHkdrinfp-O48Ow2NVjTfWZFJEhvlDMw=": "445422000000", - "DQgWBYPLjaIhB5ublX3uoc8c69uK6G8jWNzqYTSXHng=": "454397000000", - "DRF7mqxeoIll-NaLCwJjqA2UoABs7G1JscGyOSFRWwU=": "566237000000", - "DRQHdq2Yq0qsZGNB9DinM03DAkW4GLon0AkPcXgIFnI=": "25027196000000", - "DS1GhokiQfATudnQe5wjUGA5pUbm8FW3GMZSaUNpJ-E=": "384615000000", - "DSiHoe_1coU0PAVwbqMc-ZHS4dO_3aRImGHRsPNTKsE=": "908272000000", - "DSw2OciR0brd6QGnRSTKKX3le8nAw1-VYGecMuwSRsQ=": "585466000000", - "DTFvDr4TeQdRKeRnwJ09YjYiwxcelLddUb2esyZtET4=": "2653707000000", - "DTV5n_1zRYzTxTwNhggDcTvwCx1f18cVsmNP9E-R-LQ=": "1144904000000", - "DTdUJxXPdoTJxObOAtaDx9MM927Bn4T7HL_EZPYsfIs=": "11353591000000", - "DTdzHiSBhLaNaAVOeKANlHtDa4HtPN9W1VZcubtPCA4=": "6116428000000", - "DUOLBZL8h2JPpDoGJG-WyZEfQhCFpzVajbuHOk6kgSE=": "513814000000", - "DUaqzBKEGqN4gMNaoNmN0p2zn_TfahX2rfI5_uGepk0=": "2079182000000", - "DUfwx08O7hcDXVpQR-zQACLZhRAsugKiHjtItgBiYdk=": "465946000000", - "DUrztOc803XrhChSdpNaNst_GicTpHIAaks49bH6Obk=": "634303000000", - "DVByeq5cJ8yJ-hyuSJk7VVsuTfpKEL0HiLSqoM_klSQ=": "3855075000000", - "DVIH2rHMSijYgp87apgO0oOTarARkfgP5QFF9KedgTA=": "417630000000", - "DVf5EBRytuB4qWwDrtFTxgn-z0t0XUEMOzYvGuBMDsw=": "1939462000000", - "DVgVQ3se4kQssq59g70Q2TLPodvQ0XkxEx8fr7w_eOM=": "377309000000", - "DVxhPkCzxXOxCxh_tQJsCggs_tppvmqKX2O_0_CY81k=": "385429000000", - "DWFL7Yge1MNhFlmupK2ZzO6T76hjWKWuNStpYnqIgCQ=": "416464000000", - "DWi1hc7oJOKMZFABpn_cch2hnUn2oQ4GpWEqa8gts14=": "384615000000", - "DWqVdqdLbQsyEGEJnteKQ87QiUBvwTauRZhA6iK17eg=": "464279000000", - "DX4FEckA0KOVdsjd3JH0fm-yiqKXAYWxFewurlnxjxY=": "844393000000", - "DXAYextuJkAnlLPbGWmqLQkubIIgXVmr0Y5wXQpGSj8=": "581632000000", - "DYLBcZ0E_FoJMek1FEc28Ram59Zx7FG2KS9YocUwYjQ=": "386596000000", - "DYOKlCEl4OT2-lGXUCJWl-bE6xjHSqMG2-7d68PkvnQ=": "384615000000", - "DYPH4hMJZXURwFfhxdnQEh7T-cyCPnzn6iKZCxOKMko=": "385040000000", - "DYarJFyyLoKphI49YxR76AOwY5ovCnEjOzkWd9Op-Is=": "529201000000", - "DYmajSayECap7yZ47r0VHSNVsDLL7-WxboFyDZ9ROxA=": "385506000000", - "DZdknuBz05nfI3Id6Y1rDVtPcEWGoLcGBQuEbdnIpXI=": "383313000000", - "DZdnSJ876RZ_bHmzVVPHlZTIcRUd8uUGci15kpYlZQk=": "384546000000", - "D_T1UNij_pRqHnTvr18lwiETydXfiHkJehFMXDT63Q8=": "384778000000", - "D_eFcLZvaX0m3Pgg2NXNvPy3SkqYGYy11Q16VmhCpGg=": "417004000000", - "D_wMyw4an1SWm8ZQMXBW9-zo0MWmlr1S21sAm_9Ui3Q=": "378206000000", - "Da0uYlKE42319y-1UCIPpYYGP0bHB2quQbKWggKv0BY=": "6153846000000", - "DaWr8NXZc9njUu9DjJFerOL3eO9q-fV5hTZNJ7Sste0=": "1083333000000", - "Dat67BiYXI2xp321y8FohvnFwaTIAIpPxGj3M_jWjy4=": "4240295000000", - "Day-w1LoSgx7bmEIKfEtGwq-0XGn5vs2YHJYp4jWu3c=": "1388066000000", - "DayjQjqpk-ZpjogWXobak5G4Je3ok26eS_f3rZEsZeA=": "1902211000000", - "Dazso9CQeLeUXKVS3NVdI9P5FXhB25kfWPPWlUrd4pE=": "398808000000", - "DbHr6nfRKxzraKdlF8sFTul_3oHoYNrZJYiZHVBxErI=": "1008023000000", - "DbqomI2R3wXqr7El93941b3Wu43_5kvQ12JVPmykg64=": "1145412000000", - "Dc6x9Dv9w81VNpGU8QTrsKncLq4G54ffHnANLf9VDVg=": "381601000000", - "DcAcQoAGNdsaKFtMDM_O3tqE7U09zpydkkcLzmOvdWQ=": "3325057000000", - "DcAtQkYFupWyigOBf8vbHnkWgW7uFgRfgvU-oebKF_8=": "2022675000000", - "DcBuJ5CGVpriV41rUJO0kpFnVP6lsxB781Xm0QrZ8E8=": "464825000000", - "DcNpqIGTodA8cpnT_n11aKTf9ALT5Ir7aWKvAUXtUt0=": "384615000000", - "DcV-sKj-NoCXSSUt2srOdtdDoA8pRaTaj09KUGwvu0I=": "602076000000", - "DcXRFmQCTOoFrzDEZZXLHCddIK-ehljh_x8sXMv0hMc=": "384615000000", - "DcZwn7bVT9uhUvnf7hkEu43iJw1782sB0TPKrqyaP0g=": "457488000000", - "Dcr8JMWPG9GYRmV4mIgm_hIQrIML03w8KOaxXyFqWfk=": "2063036000000", - "DdtNK8dYQlwC8zUJv5HCieEpR9RCZx53FlHPAgtzJ9g=": "568618000000", - "Dekhj2yg5FiJyaePIzsC7xfuYGirnhwliN-p0wlG4do=": "458333000000", - "Df57Z7Mh3Sgunc8h523ezjLjdbbaFCf1CG3JFhEnJo0=": "115384615000000", - "Df8MG1uULjV-DNsDT0X8BcgBmjKr1aG0gTH3JJP5LL0=": "2535371000000", - "DfiI28E0eCuHnMDkwDGCsze1AAKjfvSqis5JZ71_GEY=": "945454000000", - "Dg6iJrHyXCNAivFHcL95lXXWep4WWbu__-c645c6A28=": "504175000000", - "DgZ69jfL8fHRNfXDCw1gyHIHabf6l_Wy_tph-N8kOZk=": "3844849000000", - "Dhgjvph8OVeHSB9NjGWLtBfMNEwN5OZ8Gv8K0NrUt2w=": "384615000000", - "DiPz9qMQgaRlJZnIIIpeB3zC8ckANz1pAEPjGbOI1kI=": "444502000000", - "DixEX6Wm5GMyqBspwjEOsIG6POLb4CB21Eyv1A9fTOE=": "3842046000000", - "Dj2LnrncwNT5yHUUJsmnWFZ0VUbKrV6Yzjw2TCb08qs=": "816612000000", - "DjVCB-6wwA75mqcsfiAlzW0VdnDEJUr_fZ-P1qxTk20=": "576134000000", - "Djbgpk6WjMltLpS4xtV93FoZ76vsd9bJiZwT2JvlhJ4=": "460520000000", - "DjdzGsa4YG47-rQgH_zGRzZcH-N8waCU0hpaT1-V6_8=": "390975000000", - "DkBHI6G1SMwx1KkJml7DklgPM50ORgePLPNhMOBdGTg=": "385505000000", - "DkFI0v89qF4LoPr7yFIDQKG-fRwRt5PY_LOwYDQPJLA=": "3846153000000", - "DkIMeZDQPXH6oiR5KbGUSaF-kfsgHOTO5FNaOdIzfwg=": "451300000000", - "DkQQdQTbZxi5GMsOMozT9hPL8iKUpaY5j5rfJXi8igI=": "781153000000", - "Dkc5OnlPNNaYsCBm5vyNxjl6RMbfpdFMXE8O0CpyUL4=": "453495000000", - "DlUKhE3lqygBcy7j4Cdynv_blTHgrzU0YtbuYJt6eZA=": "385507000000", - "DlXN-NgGNCO_3Ca-vBBXnu4knvMIb6VdalbiP6SKob8=": "1156517000000", - "DlqqpaHB219YudzNqBMtPU3tyBAUq9b4HnDaQ4RD6yM=": "390451000000", - "DltbcXEF4lINO094-RLVxGA1xQg28WbJajzKwq4kIGU=": "454545000000", - "Dlx0Nm5KqbC5cNv4b7fGor4-gdDMETixfChgtyVhAd0=": "378723000000", - "Dm-TC8F9Axt4c-f149gBsGVTMpuk8zaQkZiBWczYDDg=": "1584858000000", - "Dm9gEvEHW6rC6PFGEM49gVMZOZw6yKtGbFBiGtXT5yY=": "481090000000", - "DmY3zNxj5aOMaPdQmRh9rO-XGK0JsItoL_CgGLs_Apo=": "842892000000", - "DmvyE1dtNT7pqcv8IZhJofVnCct4HoEmiMvipOkOiPc=": "1930893000000", - "DnFAJC6qjNwnBEdqhAmAO9COu6FLBBnYcxuhFzVlGUo=": "893821000000", - "DoHK9-Bu8MxT6_Vkmy2Pug-3_AS5qhgTIdNZUzOX99E=": "1923076000000", - "DoamC8nI3z8LezIIxWwHKCtZYOe9Lywgiki5OmjY8-c=": "462839000000", - "DodRsDMHUTB3fyQKT2IbrGHhPXDdgzX1T2QrBUJtcY8=": "698747000000", - "DorWeMH8MIBBUn80gYLnbx42VrtY0N6voj6GjWOhsrE=": "963617000000", - "Dp0e3SxRGK0yMu_sa5YK7LdX29VnTp_oHSfYogenpBo=": "407469000000", - "DpK5Ns1lwK0YwzgY4iWKU52gs1Wq2fLdXhft_E033PM=": "454044000000", - "DqM9pCN7FVuU4c1oKvOJvxCEkzppUFi0X07oM8MK3Fs=": "383038000000", - "DqMwu23SYkw3T4BwT5xDAoYq1gJVu_5bRBQK29qjETA=": "384615000000", - "DqVMNMbVGkLh9dp24T5q9hI9u_tCO3K1PyqowN_1wR8=": "407808000000", - "DqViZA3asI95qfj-h-KywVc-itZNKe4wOtcRrD0iRGw=": "387363000000", - "DqfUFKbj1j5qI3A13cnVr1sN01ezPopeB0SJ9LoYRvs=": "384615000000", - "DqfdL-wWX9CU-7VJqXEqYJmXhiiVtfAKCT1_2jAFzo0=": "634303000000", - "Dqg5kPRPMdg5O-juLkIcsmAQ5joeTgGXW6woLLb4RaA=": "382195000000", - "Drh6C6fcRb0cAwY5CaRW5O3b4pL5xUu19DFSSvoESVM=": "833310000000", - "DrhTwyPvdbH1WTh704twvq7DmVOWp2IAGmCyEePLunI=": "474970000000", - "DriJxZNIbQsE30AOHlB1Cv0RdCOqLcGKbmVXZjpLdFI=": "3816094000000", - "DsUowPCbs9Yn1A0ioi47CnyU7aO8JdGBj6GfBcuyozM=": "1616280000000", - "DtBD6Ky7rCXOo4KIPzh87r_lAkCfuC0rQomL03wdCd0=": "1923076000000", - "DtEROjENj8DbX35IgTk7rYCAgpJsc48u_hDeY2tqWSc=": "377410000000", - "DuFEbZ4EWI0umqH8G97CJNQu7fNQbbQoWu2NVk5KyP4=": "769230000000", - "DuaSmG8yxO1gzD2MCJ7Li-G20IZWMcfpXBy4VsDuaBA=": "991749000000", - "Dufm04wYY6Pl7fxxfmINMb7J96y473GgZqvPeLmuRxk=": "1669591000000", - "DukQEgQOvAES0Ht3g5x9oicWI99hOondmSZFqh0VCiY=": "1538461000000", - "Dv5YDdOyW4aE3Ju9pNeCCi88XHvYx3MW-sgKUdJJg70=": "379528000000", - "DvBLvHJBaGwXW-CHiq0RMfek0fgC7YCFmpSHXH3ETYk=": "416667000000", - "Dw853moL2pvqI10uQ3KH8cNE1unt2gTvQLH315lN0L8=": "449338000000", - "DwQ16bWGmC1jduYzF8hCWM8ZL0cxQHefmGZHaz4TkN8=": "615384000000", - "DwgSTv87eAWb1zVoftKafFIH1obUg0W8dSnpD6XgKXY=": "435686000000", - "DxQT2vjJzbxRyoV1NsjY8H4eQ74sbgz9OzISt3tdYVI=": "438645000000", - "DxQlVammVbW_N_u8r65lUodk5FviOl1_ogL_rZ5gW24=": "463051000000", - "DyEdrkQb3qGEpt8ltMJbQZm9m5srkpMqMULeQNyfaGs=": "1154790000000", - "Dyn6kHIN2zOxjAMl9JMbpMF01t6my_HGnyvO3bTjfB8=": "1135836000000", - "Dz29gocmorhB42IQPY68SOr2PeW2EkKDOhbTkap7TlE=": "7710149000000", - "DzqgWYMTEMmKHI1QWvhYJLoFQ8TFlh4NWkZ0D3cRuCQ=": "3588947000000", - "DzrO-O3lVdJYMpgkoPRPIRJqdWqtzmMTcxKsDALeYBk=": "4089833000000", - "E-7n4PiqUlSenWo5V8F47dyTTUXeO91a-8qgTmEOdZw=": "906393000000", - "E-g_B9o4afdOmRQjB781MlfEsqZ38nDKEz1Bq5lhUKQ=": "908507000000", - "E-v3d6QibVlPYcFf4bIhy200avWyU3yc0-xqT6BgVxU=": "1245451000000", - "E00P-umgwoHytFSbqZ8uAQCQ9d_3f3BRtAnCC4mbtjo=": "1153846000000", - "E1CfCoaSRhI7hsXkRYPuiTNn0G-5kK682Ocror9PEcE=": "385509000000", - "E1Dw-5Lnsno1off5I9I8Xuh_AnSphQw2DajEz2yjNBE=": "404752000000", - "E1HRE7M-YSDDHNaeqs9CRXVornMCbqJyCNckvtj_ytw=": "1914924000000", - "E1JZbvdOGZ2SFCAVJ35faUCUi_vS0f42V1P50C_k0eQ=": "4999999000000", - "E1kkC3Vs17EyGgbJoxmocNKSTwMAb51Pf4Tt3s8YFeA=": "767832000000", - "E1nseud3O6QVcXL6YtC-RHP_2hBTS5UfR8Rg7HcWIFk=": "462568000000", - "E226oM6-U-lbeCEOugRdtr4bsxaHVwv2O1EMp7Et8yk=": "448705000000", - "E2nyYnK2Lvkn1_uVH5XjgW-FMko5FwzJf5w3qrBIqeU=": "6447081000000", - "E3_Pv6BqEOPWkwbJW9ngyTFmoK9ku1RwKd6Y7ZUgibc=": "384615000000", - "E3eoZdNtPMf6kv-_0ThAueo4CUsvVtWVzbwyZRRN6Ak=": "385510000000", - "E3y--1Mt8_R19PEOUC2NYoXtDmRH_JVYvoWXV3mMXro=": "8954449000000", - "E4H1X5rE_KL67fpHtEgag7UdpJ-YfZ9nmxGbq4TL25k=": "384828000000", - "E4jTLHtCJsY-_dBZBUzDQ8MMTzDwgvob83MrvqTNERs=": "384615000000", - "E4vD4LFZKuNg0HxYBO-IibOJXQZp31g2XTRqsfFHOAI=": "383809000000", - "E5N5cEHEq5JXMJKOvEVyJNfjqPlVcrO76FSbKwkkv1Q=": "4838522000000", - "E5TwJrG6Z0AowZtTW0n4w8V66Bx_rGQTEYyXtfBpRh0=": "422561000000", - "E5WXgrN0b14ERkkvO_QFonK6SWBv0z4HB6pj29-WsTA=": "458561000000", - "E5ikdQ7zJ-r3dKLsMES4DU6WMXavTRekT5AepVPiKFI=": "464007000000", - "E5kejaYvIn0OUlVnz_gOTvI4NDjH3tf2DGSd5W_cKzA=": "385767000000", - "E5x3zMNohc9y8XvypYYh-_83jz-asa-xAZ2gieUxt-U=": "3279075000000", - "E6-fD2HlkClYRpqx8U9_qbFgr0bSMnFkGo45ZtAOuIc=": "779596000000", - "E7gaSOnx1ULWoD-6xfWw79dqWBhW-OESTyPnl1fKLd4=": "487972000000", - "E7kZ00cjzw4VOyxH_UlE67t3_qAk9BPhjIkShF4Rh0U=": "380827000000", - "E7vvQuZ8kR7hUmS1BiUK2JZMjrDO3qX26P45Q-n840E=": "463777000000", - "E7xRrkz4btwZ9WVi_hdRWNonOAZxplSygnTFYOFIgfQ=": "582693000000", - "E87wozN67m-fOYCwOjcS1e82YtvYZ68lUrAUNfFBNo8=": "384615000000", - "E8FLNGnnQmAxotGNIgWdelXYdJ2RQjO8WqxVlbjFi84=": "456250000000", - "E8NdopVh7TkdELVOVB-PIIAxAcQUZaqX3drUgIFVx-I=": "502242000000", - "E8q4YXXkadW9JAvg6Ybsoh_WHtK-17XqHBxI_0SNhlQ=": "2083366000000", - "E8r9WTHScIBYMSLhJw3x-owG8DlMzU8FJZyK0N5LB44=": "1823935000000", - "E9FApO6uRskKzE50j54KLgMBI1A1NhdxcyQOhHAlxps=": "385849000000", - "E9G5I_J3l9oG4JHBhWfe0HrZhJTAODTlp6tAY8SSzhw=": "413461000000", - "E9hPv_BU9w-JXzfpXsBUIbmsUGrdHgbHR9ipSXcq5fY=": "1889934000000", - "E9mmkG54QG48yP5GUesBNmQ--O8LslBmgAH22yfZ8BE=": "982646000000", - "E9tduEkbe4XrsFbebkqqKKgrGQ-5fqE2eneznK3VRQM=": "437206000000", - "EBHJ447ZEMec0KkSrNi12TpQL-uaH57gbJpxmEZlAs8=": "3972150000000", - "EBb0bV3IPwWLEbdwTkwT2PRxCtMrXerpc-uJCq0ZGAM=": "5167907000000", - "EBiQFKLLYJRT7m8uwyS0I_A4riUtOeynKqhy6nADQK4=": "1215072000000", - "EBms5AUZPQfzfshJ7PQ9bT3jnk9wdMPfJ-xYUTAkpUw=": "1156521000000", - "ECkhJ6ulxPiIA0QG9EEr6ZFDNOLByI0dmJ8MeaX8xMA=": "382394000000", - "ECnWUA9-NEmvNE8gDqrgth8rzcsTxyTD-vx8Eb8BxfA=": "465638000000", - "ED8EhmpQYPZARCl4WkPVaKhI2jt-wWFTQWhBntibXXY=": "378137000000", - "EDeB5WyNz-FSVabATNxbRFJotvLkz5jp0ZBXbVjXbUI=": "1324305000000", - "EE8uoG0HzxQ_fKh_GNli3xsqp02n3fIEflVKDjLYTP8=": "2087646000000", - "EECmrjc-DlJ_8LEHtvWitxw2rhgSKqpANpnmNCzHphg=": "454929000000", - "EESGnONr41yKFxa8OaTf-Fu8thOl6rKrxKS5_Cby0as=": "407808000000", - "EESZiuDSmF5iXyEHdbx1a8OABH1mgFvbb5yoebAqiPg=": "433628000000", - "EEVVidYauW3uKFoy5AsDY6hLoj1SninHf77A-adlqlo=": "384773000000", - "EEXst8X3Src9rsegH7BPDnBbyRWaBwlh7CWb-GX-6xM=": "384619000000", - "EEe5EoBT28trde3K7AS1bhrPphEZLxsK6w2R9a3oEhs=": "1153846000000", - "EEj4IFK0bjk19nxZtqwGRp5Uq0mLHjMIxkZv84MrZcI=": "82024819000000", - "EFAiu9NnMuLHxdNTCNytq92DpdIkuHfylYr0Zg69nI4=": "455600000000", - "EFcP8reSsmyWjQtafUzxxBUldAnK-VjMHONJBcSWj_w=": "9545081000000", - "EFerIh4OYD4PDM0F2RtKuetTWnxL9VxQIdmr_-67guI=": "1156532000000", - "EFfKv9JWZLAocW-9Tm2KmOT0V1olYTg6rxMr78Ct8yc=": "1153846000000", - "EFnSaLUL4HOgQzcQOEF10EwORc_GmmEUm97Uz0gd1uA=": "833333000000", - "EFxbjitpjdNcIl0zLb7wwjNzOPaoP8GGSofpNYGuN8s=": "384244000000", - "EG3M2IP7GVd-_UfgeP7uVJNA2wO3PbHY9n1KIZk3f74=": "634303000000", - "EG4a6W4d8ZDauxpyUIXLMAEQLxU2_Kv_Tm5E9lsM4VY=": "415629000000", - "EGGeKPoPnXNdbfgv7qzlWmblRYiQiAlp02K4YjjESmg=": "781986000000", - "EGHTORlBbEuaxapaBFHotbJ3QjTxM_Bw9cYNF1HPg8A=": "629178000000", - "EGI3YtvevjkFhIu34COLmoegqN_NrZz_pjAkJ8jI7Ic=": "1493608000000", - "EGJ_tubzFLNRuZuvzkGUpn5tfLKe4UsB-j6zp8iY6co=": "2272735000000", - "EGQTn1d3ysLSuhfrOhHYQcHvGfLOC0Mt_LJt8-1fiRI=": "362295000000", - "EGbVJ4rtq8zoJletOGqVoJKEEO282EAG_6kH-y7_oys=": "1124310000000", - "EGi6bK9WWgP-1wP51EsQWPaGh_fMRfPJUV1eOtIbWOM=": "1250000000000", - "EH-NYsqA1i5EKY8Up_JjfgqX0x_ByTkKWVOrDUGA04s=": "769230000000", - "EH7A0yvTNki5vYyzb0zE_if3_ExGU39aaeAY8bAz8mU=": "2832900000000", - "EHFq14tcSNxr0DV1-UeojgtNZDBMUx3v52PNrehmLbA=": "377403000000", - "EHUfoVJIQqOo_r4WHGtXCvsQmRFlx0tBYlrx7cURzBw=": "385814000000", - "EHqpFfIciwTnbH4fNEbEgAPfzWr-9Dl09JhyeqXpUFs=": "383228000000", - "EIMembtc_H_dPP6RLS5EnrHoKgN-RoAoClmHJ6QOsk8=": "462841000000", - "EIPFSpF_gYrPjTT3iDDPyqITIom71SXCBDijVH2_41s=": "377132000000", - "EIe5PO4t6xUn7qNiFift7sedhKaJOFYqbicVPhgA5x4=": "476923000000", - "EIrX8h4535GXzJG6I67gMbpL5WvJFSN29oqUCJc3WJE=": "4078086000000", - "EJ-jVs4EKio8LAHVnrJFHam77bDmKm2sW55zzEAEpWo=": "945909000000", - "EJAKoZQrEmBDAvyC4JBdnzSty1RropA6Ko5FPZqr_PE=": "416666000000", - "EJHUxhO55hywn-ZkKIA4U3iKR9XNRxQtvvrG4nRyTyQ=": "499999000000", - "EJIl90jVKrp8avYxf7nw3wDcttSghQLb9x_FC-QaO2M=": "451219000000", - "EJsLV2hp7PZw5lT2KIUpD61g6coBjDZZtFSPg4C2Uig=": "412207000000", - "EJz-SuskLa99hiSW-qEo9e3aAK_8T6zK8zrFMZktS3Y=": "766272000000", - "EK7x3848bD2n2EiF_IKUn0EI-SVRRjALH8QL2J6L61A=": "384668000000", - "EKcQ3wisTj1Q-_UVnnRLeLt05Aju4eXuf4VzxIfK7g8=": "377041000000", - "EKyoBPsxsMg5VeBfJu7bu86WaMXNz2HrtVE6kodKt1k=": "2692307000000", - "EL8iarNhLYF1E1hwA55KvAjOAS1B3ne971bRiSVXyOM=": "109831430000000", - "ELg5lC-Mb1swdhmVPndUJ-FOxVshXG-c2p5gS-c5X4Y=": "384615000000", - "EM1RvXfzz_ZUVCSNsflk9Kvu-IZLzOh09TVNvNmXmGI=": "4862057000000", - "EM2UHJm1c2aVHDL73724xzUpsziJVPvZuRkZ4S93jrI=": "1929316000000", - "EMuf3Zn29YlWQ0FpZjxBuGKsPvhsbwILKG2Xgy2ftUQ=": "1153846000000", - "EN70DUIJw6QBp8otVEYy6YUlCY6zY1c0k-HVzZB55Eg=": "389461000000", - "EN9Yp4iiB3daLzHChWX4Y64peLSUW5Nm3TOy8V8_l-w=": "769230000000", - "ENIVAekkC72HdhJpFxd78MgjT9gW04EQOYw9A8lvEzU=": "8266621000000", - "ENQUfJ_PrgNRhNzi1oOn2FDvhouh_i5xuL2LOjHen70=": "401769000000", - "ENSIrRsooLPpFQgl6k0nozAipyQ8b6ZVjp4hiV_ZU2U=": "769177000000", - "EOSTZ7DEC77Et0ArPUA2N89Q9mkvfUez9kWDyq0HtYs=": "2107038000000", - "EOg_subamXJvubNEAQvHFu9fZ4Lr_lKc8Lt16MpBROM=": "448471000000", - "EOkQj0nRryDom09q3d3GRf3UZR_5mQ6F_aNsIFq7Scs=": "411085000000", - "EOksMmHfTF7mrxHRSs_epV4yLwN_REpJmTheBWggs30=": "382394000000", - "EOljRHr9_15BFobTa7b1epNM5uyN0YVEO1t5F0m5wDo=": "3310792000000", - "EOsvls3RSJrl2BCQFOBhEYVrpYTxFph-nkKR1Wg9Bxo=": "904760000000", - "EPUwWG4w7TpB1C212uGI4q5bGNvIKUWA1AN43F6F2Fs=": "384805000000", - "EPbjGr-WsI4FMS8jIGZui70kcdLHXHmTKsHxidi6h9w=": "384888000000", - "EPj9enXvqWDnIZVoHYaCdsHXj3_UJL91B9K3mxkRL2w=": "1539193000000", - "EPmFCB98PTFhI7433ujKEZI28_fJlUNliODjA57EsmA=": "423370000000", - "EPv0Z3T2IwVFY3Yc2CgQL72WUac480MznSvZqzpqPs8=": "2473572000000", - "EQdCrK4oFn2WnKYIHyD4b4GcogmIYF7QgRkZp-o-r6I=": "757718000000", - "EQjQWH2fLuN-jDUBjNAMGnJ2Y_DhsVp-DMCSKIO6nxY=": "466325000000", - "ER2NAMpzjtxv0b6WUSfxAloIWtJcnn7DUHPbXiOIHVk=": "1230993000000", - "ERCrjWMEW_jfQxXDx0EVmlImVrLqKBB4hFpmOAkUItE=": "1811506000000", - "ERDrX6PYYYnc4BRRggq0oPiAHP0x-rDBiPYYJrA3y3M=": "417567000000", - "ERNIMWL5Yk_jhftAcFvjL1F02P7URTMgdauhazBnN8Y=": "4225981000000", - "ERXgZqcKjlqnmKhnht7v6pwxn1I_nrL4mfqvRbP08_w=": "1115373000000", - "ERsge9PW0IYS6jO8iKXNMeBmNpuEjXXRIw5IWn0cUqg=": "2769215000000", - "ES080W-tSmzRSOinpIgDV5B2r8nNA2nQRjJMytrRLic=": "1851597000000", - "ESMkPQfRHX9eVFrnN1_Hc8TY5tC_kWjSbKjjOxQaXB4=": "3461538000000", - "ETC5ShCm-FdazoAKa3fLl9OVMA_s8olmlkIqUYyRIs4=": "999999000000", - "ETgXAULMmIB3TciIcPTvA4fBtV-C12clUlY2dInwJ-Y=": "1197549000000", - "EU8TIvHCe8oWP0K6B8zncvqKNenEApDqMMUUeZOW64Q=": "1161322000000", - "EUDXGbz-Tkl2l-wKDNRHtce6B6FWqJpNtt79PTpdqms=": "1813846000000", - "EUNCGm5c23sJKjUlU9RozmigeoUrRBmoVeTnQ7hbRZ8=": "2095353000000", - "EUngcq-vZHjE86ZcFRK3T30HjidN9mb0JpPVkf14qJQ=": "827797000000", - "EV0QJ8IIJcHhBk2RZ1qSrPTBfjGtfx4z-fMTGijgxNQ=": "384326000000", - "EV378f2sBRKHXEnYIf6S7pwRgL2DwOKlIQtqkECzETg=": "540664000000", - "EWQ8LtugqDufnB5UhXLGCykn5aKCFUu6McwaPhWWhKU=": "503900000000", - "EWaPxG9_tM6FIsbxsGXGZQgX145y1VPS_Q_LfbKwBXE=": "511993000000", - "EWvaJzHMvdh0cpIJ6_uxwBvfzUFLydSpgMoGL_WLe64=": "384615000000", - "EXPoGU0_N4kZ63-R-jiupoQ_FgRGCboOHEV-t7_EXc8=": "809967000000", - "EXWk5rBE2bpYOblZ1Lc-EDU2xL2bPeUMtse8Z77zt6U=": "460577000000", - "EXo3NgD-19XYsUwbNf3rZR5QMbrk5YhIGt3Ke76FkwI=": "1446111000000", - "EXpaEXj1-LhHbt7N-ep5EcH9doHaRrudHT28yCDwf90=": "1233257000000", - "EXzH0YlEg-3iB1sMZ2a6qoFYKYSSRUMkvfnzKtyuwoM=": "385507000000", - "EYDUWIwwOpln4uLT22oGF0rssdH8kX684DVV3Ol06XA=": "681322000000", - "EYDvGrxLWrRdGRucYcRsf4RG3HLpwC-urIfJa04DH-c=": "499999000000", - "EYLn-1nmvRNYto9hgEW7YlsKqB4LBSfLIrBiSwPKDgs=": "384615000000", - "EYR2mjS9VyejTIy_wZ8EyTfvUDttopHD6OIg1vrrraY=": "414989000000", - "EYgxjNMOTfriOUmF1rT6Qpew9K6DvhZWMYk8U_gIjpM=": "556588000000", - "EZ6BEL4MUoRttVsmqVqSW4-CCL767Mn0fwoDjvF-voM=": "943502000000", - "EZJue7ZnwMllxbKl9Mz4ZrTHB1YyknQn4NRSJ4xUJug=": "816447000000", - "EZi9vYJR9OF_3kbKM8qxg2E6tpj7JM8om1oDoBvdlLo=": "1366519000000", - "EZmqFN_CP-asz-rP83zH8DpLSIL_-fm6J9_zAVs0Tfc=": "382394000000", - "E_a8zWREbJbKynvvxzXnEsjKULcNj5PMEsHv1CWPksw=": "537835000000", - "E_yyh6LFe06RdSBD_WYwhc1DOIRsNJWD7IpA7zMMkZY=": "2026785000000", - "EaCv_j3cTFTjeG1znvW2US2BB_4_qj-Y9TX_iYg_Z30=": "780149000000", - "EaKoebsEfkxQJT4ZKHIJPSlmus-xY6_91VA9js3sUOM=": "463986000000", - "EaTNxGqudKYrYm4N_3mVnP97G6JpwvPrw2wbIPq4Bt4=": "384615000000", - "EaUtaHfkOb3HAy4eDAuRkq1agwcj6QNERdoPjl6AAcM=": "382286000000", - "Eaf_lMPoLiTUqAKBGA6XWJ6wd8c3JoL2RnD1r3QYd_0=": "1011073000000", - "EbDbidTwto0QiAvXqqW4nmK660gHa9ukCfKCq1eG9Tc=": "385528000000", - "EbNBx2Dmcmgrw-wPiAct2Wl5-XetVk_b4guRGOaajlI=": "1363636000000", - "EbVdVx1DcgNA-98-yQLXNhoFTsa4BpXP0-8b50FH7TI=": "769230000000", - "EcZA8P2W0oQbQsA0MOGNqsYvM11l7EQJt7hQcg8S0eo=": "687337000000", - "Ecd4N5QGLTXmYQ4145oITsD2AKQYF-yWRcccIimzvdc=": "451495000000", - "Ed0fOQpmMt_C_JSao-YjeDVmfB-KeP7xYYknnYz5Kbo=": "416596000000", - "EdXQNQtqYwi9PZw98zwFOLLeax4TYD40vCS-yF_apLA=": "382479000000", - "Edplx1I2o94NI8BX3Y4TWul_SrpcK-aA_dFMWPH0wSY=": "384615000000", - "Ee7Z5c-uozjSOhTvqWxJEJFxHyFO6q0ycQu_WZxqJBE=": "846736000000", - "EeBZao80zMlVlX5hgpyPtWwgZEV4X9qHuvqeg0_hJ74=": "469310000000", - "EeXGJZIM0AMWKEJYn_Xp4nQAgHIf1nCOHY4ovkThTS0=": "385449000000", - "Ef3-Ihx1mcaD6dkrEuoPjLttda4DWchqHkYqD378HnI=": "1088100000000", - "EfesCNVz3zEDAtQqO62seAYHSnHOspsoDpxU9WnTftg=": "3515654000000", - "Eg3R-liPsuMoz-X6vgNaI5uTrJg-SP8C1qwvg8xnynY=": "33340780000000", - "Eg5nif0vSJFGjQfFxU5EiqlejrVrkHpe9zYz_aTCJOQ=": "1782823000000", - "EggmjPi6GlVmX9nV39HsZlPXYebGRWUE31HrPMnQILU=": "810714000000", - "Egl6w4Sd7toVtEa1TBpSZI3cIYAbNeqNv_IwZ72Q0YM=": "477484000000", - "Eh276pyQcdLV7aYnLqB8nDWtAEGAtM0Og33dNIOYIRo=": "490530000000", - "EhF5Z3e2ezc4WDvoQU5wMmQgifhFwKUGdbAgx0QAugU=": "458519000000", - "EhXXA38kgDiH3Aa2eVNNAkaQgBRjCVPCTRiSxcKO1a8=": "2115128000000", - "Ehq5w9pV_q0LfhQapc3EwPyFYs-svEBRPIMhKoZRfaQ=": "383981000000", - "Ei4i_LnB2FKg2Ggrx9iZNaGmgTTWu46BlFnNuIB-UwA=": "384615000000", - "EiDi4AVcUDn6I00gSmQosdu2v442nq8uwKGASfICri4=": "582408000000", - "EiSWi6KktZHNTN6RLsMWXeFfCdd_Scb6FB8sgCMpIg0=": "422017000000", - "EicCcotEDdlT0RKZkMvHH7VblgpMsMgAVYeDRoagBnk=": "462146000000", - "Eil0A6rya7ZMnIZSiRVk_tPRoaJFixteXZtuJc6kN4k=": "462146000000", - "EioWDwFn7YHicGC3PJeQP_I6kgV_2UqtWJzTMb4PmZw=": "2247279000000", - "EixC533FQmIie9j69no0XTaEDLp4RDBhpcBWEXUfXUw=": "2100881000000", - "Ej-nZRq-zkcOKvvTfjuqI_56cEO7_uPYl4obMdfiCno=": "769250000000", - "EjEu25CkeGYnXCWJ-2oTqPLa37R6amTsY2HVsG881WI=": "1329548000000", - "EjLSGqx9-FVuJRB2Bih8L6Bu65xSQvqU7MrxkIZ4SQ0=": "1890453000000", - "EjP31mcZhuxvw6STL76KsRmFMQ95N3ZrVl573xhf3z4=": "421019000000", - "EjTViJ0xT7CLhIu3njEQRcBd1r2GtOaP53kMrY4pMjw=": "580473000000", - "EjsN2D42_uqnMlaugxi4FOJATYx2gtKfg8EohmXvhkk=": "673581000000", - "Ek9TDUisWnyr7DzuWJUYx7SepXjBaIaGRcTBAqRW0B8=": "3845575000000", - "EkShPtsbM8tVXPi4uEwpMvNVrSvXly9lAnlVaX9iSDo=": "2258488000000", - "EkTR9PctTxebtTUJQ9ryQPUvXLmDbofq0EE2WxrGHNQ=": "3115384000000", - "Ek_queVYuOLqD75M0Vap1UTt45Wo0TfX23NZ7e38dRs=": "1567190000000", - "EkaPsB86ZYms-Aak1MQbn6KIYUJA2ElhFUQkrnl7AkU=": "520273000000", - "El-GBlAifUUc0s-HCCHx9Ft64XHTTk1iw5DMKJDYaDw=": "554133000000", - "El0l_2MnSf-iAiqxT2l0cZn9rP5DYW95eONAtHs5lDI=": "1159208000000", - "El9KIp5yaI9x7vdmqy0PLkXZrbRFjXZ0HhgjlXHGR44=": "752984000000", - "EmY_QBdiuup3FcdTvnD-ZjeLJRSvHIJzIDP0pPIvG40=": "1538447000000", - "EmeuyTupJM6L59ko1bWvffonRDwXDZGCgy0EL5qSYuk=": "3846153000000", - "EmpF1qf04jOIoACyoRWZ05TkT38a7eYAb3-b5mJ9RSE=": "5011093000000", - "EmqNuoQiYJ__bCYLwlHKwZwjU436-5ruXYl0FRgqbcQ=": "1061538000000", - "EmvIFZhyT5Jfly31y1mXnDstG4mB-57OlvZzY49ETbw=": "2250164000000", - "En2p4DGa7wEZjIFxLGnh3LoalfKWmIRSHTOIXird55I=": "473295000000", - "En7u7SkYKylUKVKgbyKxv7KBaqrvUYK31vFAVKY6no4=": "3855050000000", - "EnResQMT6ZUQ4q42LyQyM6sREAM79s5tALPNzsTx2CU=": "3715598000000", - "EnujeCVDr7Fg1Am0qaCcojFew4cHHVr6J1PZYIMTFkA=": "418720000000", - "EoAx2ccOmvwK-mt-AXPOK8C7Jyq0Kc5XGUIHe9ljg3I=": "1940588000000", - "EoKSAtAd-BLZaq7Clo27Lk4r7HMT8zbBnPONF00RmI4=": "446505000000", - "EoVqMn0jwkpelGi4gP5hxlofaG8DRf5_u7pUsFBggw4=": "3344230000000", - "Ep1OAVYXmGBcnkGfHb8xQnzFmK0LClEEekiqoBKokNk=": "416466000000", - "Ep_zPdWa_OYSTuTL1PJyY4KJSZlv2tM7xcYHhpKa0BE=": "5034151000000", - "EpyGb3ls5eOWQHSUJYbmAObvXfz1rAj3Z6hv7xfiWJE=": "2114114000000", - "Epyh0XJFiC-If291Ym59MF8tj8_lm7D98b-SAKSH5TM=": "1753839000000", - "Eq1j_ZULWQjKswLEJ6B-DE_1Y_QIGA9oYdcBL66lhYE=": "769230000000", - "EqITMWbJD5IRArbaNDaQAft5Uo47Kb_wsvfX44PXbqk=": "417615000000", - "EqRhb39XMATrQ-jnc_SCEM1Tbe8vjdDc4wDc87lgddE=": "377783000000", - "EqV70FLsOQTvCccXBurVlDZRr7i0m-oCGsdT9JcqnIc=": "377514000000", - "EqW_3EkjrNW1ysjjZYDJqmGJrGfPgM4gWVguxCvTbV0=": "416650000000", - "Eqg9KA9m57Kyb4lDqyNky287zSCapF7kFLcMhVwTkf8=": "384615000000", - "Eqvr52FMzSDNgsSY-Na76t2f6JBEUGkTUT8CdjqFDc8=": "396153000000", - "Eqwnb4O7udIHjQFgQLnyg1fOnnblfWkN5FtvbiwXqTk=": "2045454000000", - "Eqzt5PzyjystIC0ayu9dYo2D4d2TuLdvaX1MgEaLO1o=": "9553283000000", - "ErKAwyeiiE99oYW7GiTBv2_1xVc408_7NFL8C5Kz3C0=": "1153846000000", - "Erh9QYXs0Y_YUOYyd8WyuNqqyCS6Qon62GGQ5WTZgdY=": "840121000000", - "ErimeGrpUqB0j1svAlBbeiZ_9JIoVakOkIt-UXjtIs0=": "416595000000", - "ErjPpLqyXGMeZaXK2qDEvnowC-MI7WxC3y2Aoa4A4wE=": "384708000000", - "EsWYiXkKmx4u7CDKlvQAtilJ3IOqtWIFqXlmz_unW8U=": "596153000000", - "Et0MzooUGCEFrh9tX1uoSODSSXTWVGCn8kEHgdWgZVQ=": "769230000000", - "EtIbbVv4Jzh1osqss4Rbc-3Le02KNkhxQ5CEtk0F4Nw=": "460851000000", - "EtQa5Jy3BbC4F08rsvqxMw2vfW4ryaY8evKMPk5yELM=": "590909000000", - "Ethbwv5asr1NCgaf92WWPU94-QSHKSJ4kEjxhHlsUgc=": "418089000000", - "Eti5jinAC_mcuzHwGsjhzXHE2RsQcFiXs4_whLeMr5w=": "569245000000", - "EtqdlbQGYwGeMyCHHgzMgh10jinKfxwReaKgsWqIwRU=": "416707000000", - "EtuNFMDJyp-eQ5DXb1CNH7ToubqSOXmx8MVr-EApnbg=": "384615000000", - "EtvMEgv_BQeLTg3g1T24Vp9tYji3Ur3dPoDq3SHbOiE=": "1233257000000", - "Etz3cfJf_x_e4opYaMO_3AQ7Q4JNwkKRCy9w-dMhaBM=": "385509000000", - "Euc9fHR9OZDdNovfqJNcY30_UJMqp6kFql2V2bpwqRM=": "927069000000", - "EupbdtpMc5nrzJqv1fDzcQFRxg9KG3nCvQW6WvgMn58=": "384615000000", - "EvGGWISrQ8Yr3m8hFEMBc5lBBZItC83z0vxkxpYgIDk=": "513844000000", - "Ev_em2uC4oyMa2TheNiweHMoB03LcDcvBbvZs5UhC4M=": "382479000000", - "EvqfFyvsvn2MfPP-PZiFFY5xkQBvJxDdBQd2njiiUXE=": "3281719000000", - "EwHUzrN1vYTRwfdK7n9-yzfTB5IrZ2ZrCd3BlL6dxOM=": "418855000000", - "EwSwVaY81vxMLr30xgfONxZGbJwCWBYo6-A--X5J7zQ=": "809670000000", - "EwWT_8TTJ7ViYYn101ChL7IZkpoDhVKSD46k9zOILHQ=": "384615000000", - "EwfkZM27cU95QHP3LSDB5JjujzdV6af18Y5MwHiSOdU=": "5579815000000", - "EwnNX7uk3gjEivbFlgfHzRAkk7c0AEXnTKn0WLZptlE=": "455871000000", - "Ewt4LeO0BmP1OPL414Z2XRsk2K8cNcSGRbXES6Y862o=": "413113000000", - "ExAjrsc-qMRRORb7uD9y80OHzBbd_lC5J37aqLkkPIQ=": "384615000000", - "ExHm5uhCPV4UF-mH1Cqhs5bPH3aku1sJYPOvUbc5ZGA=": "801500000000", - "ExQrwQpndAG6kiEsmJY-ohEnF14dC3BloAuWLs_oORQ=": "416666000000", - "ExYG1IKIZd_s7QhD-d6oIefNzJB1DdbSgxY8oFcp4Tg=": "454545000000", - "ExpgMaXwTb-TASf-ISTkofx8B2cv_vlgXdUO3LoyME0=": "450939000000", - "Ey0ZS7idTvECGsLlHgGSjWfdjl78fgcsyk6j7_QBM-8=": "628658000000", - "EyDX3_uziBDUplS4tM8UPNxeGhSf8r-1YRcLqbXcAtQ=": "382394000000", - "EyUP3DTobrO9RfozLMaQsVJUyxw8eT96h6jP4qvS9IA=": "1923076000000", - "EyV9MTlJglai3EOXJfJx5zUnV5oQHtOU0wOcyy0xuVU=": "769230000000", - "EyfzWF7i5sVVyAyXzs0wMMdRJXBWhBKEFG8qgh_esMg=": "384615000000", - "EyijIKjOeOrrxCPeb_XSOzzzdPPtAIB8hFnFiQkvU9o=": "5447665000000", - "EyyA1Y2wFY95nSwyBp5C4CgRuhEhJIFAwhwTH-mX3xc=": "384615000000", - "EzGZWuOq58iJLZnsYQcPLDpmnHoT4WpqNdbzfdp47k4=": "928476000000", - "EzHBa6SkBp4Xzurn-HoRpFyy41Oi7prJF1bzGXjutX0=": "385298000000", - "EzbYQwwGVCNai7YAJcm3vVnM_xlRIs5_DtHAZ3UJLMg=": "447840000000", - "Ezj8kaDdHqMHbmJsWTHIYhmOkadl-rGFuZDFK8_O-8I=": "455600000000", - "F-3K0tv3__01Z8akoXN8N5_1KUyjk7R61gn1dMRH8CE=": "417629000000", - "F-OdNxzr4I7LKKGJVmjRK78F7Tt17bsg_wAuzxz_XqQ=": "462472000000", - "F-j9RTGsvnwukFJfXgCOpGn8dQc5hDLQyuBqMU5Z-tI=": "381820000000", - "F-nd6Rw0A9HHLw41ICN6YPItR5nNEvVcR4yNvGVT6_Q=": "384615000000", - "F0JJ1T8up9SUUF1VHNqbSTG75oG4GuxlggveWWk4gG0=": "454587000000", - "F0NokflqgkHTkAIXG9iqVAPzGoZdBHnlf3ZJWoLbE2k=": "419408000000", - "F0Tkf_XVS1iB-0MtFZWZFvmRoA9UZ_Vg-tiUXFpewbk=": "1497755000000", - "F0vWaxEKsiAV3P5unToCy-2pPmPKDi5cKH-w_P8tcLk=": "603420000000", - "F1FD14kAyVjJc_TPhgwSl5fcQCWapkPj5U3n0jjzNPc=": "1892005000000", - "F1RvGiFFVewtN1qi2X0EMJWxxi4QNP20G2pFX7HB1Kw=": "386353000000", - "F1aivDKPTXghAIfpyAwhPcMBF8JnBRP7s6pfHFYsdqE=": "9166666000000", - "F1iI-6QjiCQvZC7D8F7ijM7ICMoqBhZgK-Y28HZ0OYY=": "385510000000", - "F322zgbsA1IVg45c6ysrRyBG2KMT5wuep1oombkshoo=": "942227000000", - "F3ch_qQa7SeSHSCP4Kt9H0xBEUaHkYfaAyV_3lDY_qM=": "3856992000000", - "F41iQduNp1nmGLwsht9-6W6p0tS-WoTsKRh0eVFyDM4=": "389371000000", - "F4JQ2UW7ha1dE3Ygi5EiNFPcoh8GoR-NEgCYSnHbbOM=": "936818000000", - "F4zbwG2kvPZmF9kJ3HLrB9N_kpOnvCzgYGVzBKMtp64=": "383841000000", - "F58gQnGYJY4FaH80JfXrKCUgIe4MAGwKOC4bGjKbkJc=": "384835000000", - "F5B7toB2PzflsvOyVAUVwDjLii765BaYyXiSZtDn7hM=": "893063000000", - "F5Q5L3to1UZJAUnqRv6UGQHTHwmufOT5doZwH5Se_O0=": "7525672000000", - "F5ler2bHsbbzasEwaKophQjy_Xp3hdGocROtHrl3Pkk=": "500247000000", - "F5q_gfXVdu7serm4aki1mPR9Jo69MRZYpxXzFoXqwpQ=": "3823480000000", - "F6TI3t44UIgLizSYDFZP_mtrePc3OOdkoGsEuSbB4VI=": "384615000000", - "F6Wxm4vnTj3q4t5NJ1PqDHxYr34YWa0sW3ZGV1fIkn0=": "4327157000000", - "F6Z6MLCN-wboAjl87bJw59mWfgNbyJUVoYYxZvhDF8Y=": "482708000000", - "F6dilim2xu0kMQCPOaORkVv9bVMFMyl-E5RQrZZ3XkM=": "2497874000000", - "F6yws16HjNHbZDvEOB5VJbVbn8PGGo8UsqNIxaQ12k8=": "2334900000000", - "F7MediaM22Y_eAqMw05cCWUAVT1PUcqkhL-H3bZ_DO8=": "3653846000000", - "F7v41OHoAe4vMaIUHNiurKoGLmA_clBaats7rD8dLRs=": "767884000000", - "F817pW2PpKLNGGwbbJV_jZq7Z8WNddr8NyjQsR7nlrU=": "384678000000", - "F8CCjsa3Xldp_2aCmeIK_XRbOuGVaSh2ARU336bCfRI=": "378104000000", - "F96GL2K818jg8LEPPpxj7KquVqhzoaSybfvzYvHhMvo=": "462160000000", - "F9jFmV3QRxRuemdNODrBwAVFZglaz8TeR1dZGU5XtoM=": "453192000000", - "F9orRUUL5OulA8-mYeVYsTp1PeS-H2qcgDI8Gv3nfQ8=": "487972000000", - "F9s4JQu2OkKlbqXGASeDsXrXrjqcQrtfRHX-pwSxc6k=": "3754722000000", - "FB6Mbpe9jOl8TBEyPtIiiNtxI7zJig4nOmqC5aKQmBs=": "833858000000", - "FBaLRU3bA1ZTbgMsO5kJuoCmvqLv7EHpsYxq1I4Jm9U=": "384615000000", - "FBcv7ZUiAv8nGY5N22bSJhlzkIpC7Ou-eDwmPdnqvHg=": "465095000000", - "FC78Rmvv-FEpYjWaQJ0fj5Dffw2ezlqV0eQutGjx9J8=": "748109000000", - "FCJGh-DUnLC4PTEDruxmX-0U2mXVCBf3yh4J_t3JB_w=": "407808000000", - "FD5ylj3ewxsqLWFr3tAFeiYpwnw7jZknU8JZwVrrinY=": "4006658000000", - "FDF3L5I2bA2HZF-8_IxsDT5EK9cC-lo4pAiRXTIz6vI=": "377548000000", - "FE4LmUTCrQwtyQKKBPLNO5Y3WGRGaL-CvJ7yB1whHQ0=": "384615000000", - "FEhoCz0Puy7qJrU2VJPlSytxGPJ-V4D2tJzTLUTzoAw=": "391600000000", - "FF-vx5HqowbPpEaUseM-XkDbxC_0aUbcDepgFlS5b28=": "433820000000", - "FFQ-iQ1RFZaSS5eso6HIWrrHD8y67auT8XM4O5y2qrc=": "4095970000000", - "FFmeGr5aj9fBWsDt0J18CN7Zf2UKQCZCbXPYbPSBjEU=": "1637581000000", - "FFup4VehFRaQvpaNmJIR9YU2TY1LfjbGc3EBN5MotLk=": "2237337000000", - "FG31uBP8bqZiC3beL96rfLtVXo9NVlpB8M_2M09kZ2M=": "411085000000", - "FGF-wGQHVOxdGtN7QIMlVal7IupMSjByuT1ztIZZ_wI=": "773103000000", - "FGMywFSUhhOqhI2SzPmkvfU9Eu7Hj3Un0nAB59DRI38=": "384446000000", - "FGUVR5IGurlRolQf_nbs0LlP7vs22squopWncVGH9lk=": "464091000000", - "FGfZv86XEmenIu5KWnFgfxa8c2obwFrbhlntaEePvxc=": "384615000000", - "FGy_DCRf4iIKP7BwvH1FnMgt-GGHgKF8r2paI2pQM_0=": "416666000000", - "FH-BuOfnym-8qY1PQJ4-wTRGRTnaUZaAD3WXNkXW8YA=": "1927533000000", - "FHNL714aF7_9-SDC3Tr8c_XRe5mpcO55DrDkUaol9vM=": "911518000000", - "FHP5yNCn1xtamCUnc6kGjuaBlsw63c3gfo1vtgSZHDs=": "769230000000", - "FIORNRyQvxQa3mMqbndW12LfsgYpv2dMvSYvanxAEHE=": "833757000000", - "FIVZcSgJB8dWGnu9pDJKkrjAK5PjBX8dfrU-Ixokq7I=": "1346153000000", - "FIXIGNE2XwdplFPO4G0tHXVLRKCS7pRQp0rODi5jECw=": "804008000000", - "FIdVYJ-y2vy9k9DMIYYtoJrIbnPfyxCLtS6DJMJMWo0=": "753630000000", - "FIeEFTMGI_XM55o3Hnhac-T4QSnaa0Y43uPdGWSeMHA=": "411041000000", - "FIu7AI52CryigRCI0-e9-TRZ2BIN5nBW7bvmU5643g8=": "384615000000", - "FJ-E46NA-ygnMYXUT0nNxxl0tJrU6m7f_7fW_z7OOgM=": "6570771000000", - "FJ0KZTyzO1y2SjEs-7eMB7XbBdncnQzXvjcYkn8Wocs=": "504754000000", - "FJ9K4rsfhGHyGsvXqEYPoz3pi55CCpe5oHeSqqPAl84=": "39590251000000", - "FJH1uBpcTv0C6Ecfz1glg3BZpKlSXU4tGTkKmQNnEwI=": "385510000000", - "FJmRJl5QHXLY68sMwC64wvXFsnCPlOQcpd1Y_F-uWKw=": "378488000000", - "FKObZK_VtIc1Qv7Hp5i4iieX2N0__ASbXHADYRkn0vw=": "769130000000", - "FKarwd77fjHtDO73SKFjU_MELl0LY04F56HP7WjGgtA=": "384999000000", - "FKbK2zTPKvfdYVVThiUTnpM5eb-6Fhk28ownHUoGchU=": "384615000000", - "FKrODsVMkY8BR9iQY0NJJOAevoL5GK6Qd_FN9HXBlW4=": "411613000000", - "FKzl4YHTmj3CNZTnfOeZBaiSYSFDScNdn679fWWzql8=": "648010000000", - "FLNTCXXZEmZkv66vXTAEnmNEFbHZtaeardaeVg27t1w=": "5005317000000", - "FLWGFYXCpED0uDIg1d9B1Q8DV3WyqwNTGAthzjcYB10=": "1156517000000", - "FLc55gIRordJ6BaYpKLUUKChDfWitDV8jlGuTLvOK1o=": "378090000000", - "FM7yUqL9S3c_H95B41qiOfxTp_BG7i5SFxfVxFIllUQ=": "498645000000", - "FMKnCeEjK2rW0oZ-xrA5LyZcX3kyoShliUXRSUDvy94=": "389500000000", - "FMby_LV2qg01l20to32qxC6cXYTchFZvY7oGOx7oDzo=": "1233257000000", - "FN-N-4gMb2w7UBG0O8tqkTyqMGMpFZ-x3e60W69Y7VI=": "1478846000000", - "FNRkDPzAr87NVaiW0iWAm0gu4MVXrFwl0b5Mde9_cPo=": "750727000000", - "FO-iBwUP6fAlN1_Ylo_5NWy5k5xWolqgNv7EtSDCe-w=": "2610663000000", - "FO5dN12ArN7H9HiisbHRZv8uQQHWnN0vYfvRpStTD4w=": "458136000000", - "FOeP2iZKyiJ_udAo4xb3r0lWyi-rpu1eqoEOSZ4jYcY=": "417630000000", - "FP7sSjsBGrd9O4FkDB5PHshRZgBEbd1Ip5qrdVX6bAo=": "3751727000000", - "FPFs_CedSgMq4-UUXwPr2Aak0EMnX2F0I0rGYEOCii4=": "840121000000", - "FPcFS2zpPmTWragKE-GErCJcEUS7aDieTPEtlEiM3nY=": "797258000000", - "FPhnhUbFMdU0aaoe31HiY9YAM3iQ9kJ5R_8KKOnNtQQ=": "449742000000", - "FPmFhpJJYMIh9l0dTqNVpAcupsxiidDZQvKAoJzJN_M=": "455167000000", - "FPsYgGQR_GjETuNLZj1EOX_lCHolYT8Z6sRCgSKr5d4=": "448492000000", - "FQ-VsbuD2y2y8Vo9w0S4KK5SCKhaZAqoh3EdU4H2CoM=": "1967263000000", - "FQBpOv5wQ3eJTiin1nhjMPPVMKiqE1XnMq0LkAZytts=": "455014000000", - "FQHBQ7dIPxfJsxziXekdDPMdueXF01QB_Q8tPLNyiHc=": "384850000000", - "FQSYap8ETQ4rR3M5onyMgKjGlAJndn7mmsk7VXM6iw4=": "411085000000", - "FRIFLigxYrU1rSUIqiHeYuy8PaAedBzM92rxhB-jc-I=": "1813104000000", - "FRk-CIsoJe9HTPCjlTvI2PWa0egtI7Dvxxd1G0bBKfE=": "909090000000", - "FSHCNRjTL3bJnM5hWKYnYQ3aipux_HsXAHx9ahJQ1rU=": "1923863000000", - "FSevIXNlpRDCvC1oQ7cnIKm03qari2QUFGXmdXHjPlg=": "547451000000", - "FSkAvV0GkdSA1utEqhTsgsF83FILKk2CzKSKIaihBx0=": "1249999000000", - "FTFy_VEjdPCZcl4uVVR4dDkdC3PsSnJZttVtcxSbWKQ=": "1039479000000", - "FTelF3MceG8ZLhHYHTAyhUnS8O2v7UpWo2VkkdphPQQ=": "1930305000000", - "FU9T1X92sAod9aRjmXlo3gYs2SO3WG7YKx9oHxOaAog=": "4964912000000", - "FV2e9gHXxxQ3EibM81LUNiy4ps2Mb_bRrBL98a9YS9Q=": "382011000000", - "FVC0qqB0vfxxJRFJPrlg8unbALLAmfyk8cMAeBwhIPI=": "459969000000", - "FVGvMntQaeRaTchNHlkSDbw0MQffVbNpUsZEDE_xGaw=": "1864409000000", - "FWGJzGOCOnvZy7G4h8IV_IFs_09JY9yrW4oiHZQYrJE=": "381839000000", - "FWQgSmYi9FAO-56c-HUGXqGdB6QEE9Yh3xNVzcS5Pvo=": "426375000000", - "FWX7JMXNt1rdw8DaT2DhqCrSzkBB_AIS9FpeJ0KfYn8=": "417846000000", - "FWmJ0_1W-bj4VkEWXmt5rZ9Rcx0oKH5-5ZOZrxFtPdQ=": "473228000000", - "FXAMJPFwSR6vqjs6bsUuTbxeUtU-myshbobRDrkFuKA=": "423370000000", - "FXQUBFLWHjVv-ul-11MwJ0Qz6_aplCLBbOhf9HAgJSw=": "1666666000000", - "FXqDILmL2T8SrNNziqSunHA4u2ubyzyXSHNtvPuU68o=": "385506000000", - "FZjLQLf9DYjucH-t6VrG6IpwdsvyW9U6sxBtC3C6dZk=": "391659000000", - "F_2brH8Gcpp1vq3cVoJ5Qzk0MlHWWwvzngdVwyBzKqw=": "454545000000", - "F_GnB6FAjhVs_flPlCseV-rU155Vjs6g6IicK-mh6wM=": "456812000000", - "F_OwPzTIVIdBFKr_CdrGU5o3PLPuozf10m-1GRO6B7E=": "5769230000000", - "F_utVSWb05sNineVa8SKOK2RjAriutBIjeOH0R7Bvoo=": "384615000000", - "Fa5PMjDETcSLQE0D2fr1kE8aMHnglbONmCgcbqEOWTo=": "384615000000", - "Fa6o6hyLJh6ASA7eYhcHlyO4k7KcPXuNArr8dx5zQfg=": "909090000000", - "FaE5ED151lNMLW1zGFHD2BxNPVakWwGHaEF7wHrBsEA=": "413740000000", - "FalgQKBsxDRVEmkKDt6s7r-WpBcxhGFfs6_I7ADmeTU=": "406308000000", - "FbSijDe6WvbG9oQl2DfAnM0JH-QuDY1MBmcJ7AYmnmI=": "381360000000", - "FbbQ6kGbH_aL6F8Ze7oD26Dhb3G1Eq6gnkaX7xgG1qI=": "423262000000", - "FbjXXzvlbjAPQbmMe2Vpe-JMGA5vFP1H0ZbDOeVtFEk=": "542442000000", - "FbyYUGRRJcqHXkjyVABaiHnROrZb78umVjcJCa0-_l8=": "473331000000", - "Fc69_asNW0KItbWS9Q8mI3l9RnoTBsPMwEHHMnWcgv4=": "1144048000000", - "FceMRU25aZ5YwCgZF3UGef_Si4rh8LK5mjQ3mXYR4hM=": "417423000000", - "Fd-dko18YsdMEMulej8IKA3xsZAw-wa-LtihTcAWc8c=": "447411000000", - "Fd5H0eGoTjo0yqL5w5Jz8-bYM4gdVqNUGPVJ0Y4s2Jk=": "8461538000000", - "FdVoO4ruTPaE_mDpOkrQ_KvOxkzfOz3B9TZwSVqOqUQ=": "769230000000", - "Fe-4GSAMB31QC3rTfiqCRbS3QMP9jOHb3JYG3mI3gnw=": "2071066000000", - "Fe6L00xPPDZNFrNbAzv25LpO9T2C9cjtMsURP74Z3XU=": "465144000000", - "FeCeKwVznodPYQxx67M4ngo3JZLmmzR0S5crPNECDUQ=": "416351000000", - "Fea0RQ7yI0q-8GpCs4yNFvF16RrBCxf0SUEbUyElH6Y=": "385528000000", - "FegJ5_pjSW1Uz9qlt28uN6aDm_4ScTRY7fqMQmvPLSw=": "480295000000", - "Fex8G3_-C0UdkJnipzW7FxPOIFz37pVJA5_hyDa7VVs=": "912956000000", - "FfO_Mro_IAmrGkHgbIw_X4YnrJoq4w_PC-Ohem7w-Ak=": "846736000000", - "FfcgnCc9OM6Vz3eSfnygiEWDI0Xc1Y-RCnwbLrAVDfE=": "453414000000", - "FgDB-IuZk9yDm3G-Hayt2z7UNRnFj2B110dzilZI-yk=": "769230000000", - "FgsAOP3RBwmddG-aMu3oPt-AZppFhX9Fqc-Bzut4z_A=": "2436983000000", - "FhLhkxchxAcHmfFYnUAbUFb51g6pZ-8caCz-Wd5nMII=": "382943000000", - "FhQUOnWVmF-WalARPTWVoCLS7fDczKQU5SDUIqKwf6c=": "644862000000", - "FhRhXNTrvqg-FuDJNQXZwb-msZEm4abciwdffTbm54E=": "384314000000", - "FjQdxlyg7_dU52LdTh5aoa3GOMZm7ChXtt6Jmwriufc=": "763607000000", - "FjeMcwctO4rtfHGCXTbnbs9ALEv-9oAvd5m9LLokZlw=": "654571000000", - "FjeQj8YSDp5HaY5yHI0PFo8PedEK-JranmPsuXnWHo8=": "423710000000", - "Fk0nVDkGiyhyZFISG6E7-NwklRO3mwp--WCLCl6Kn6o=": "895163000000", - "Fkb8bgpj50vkuQXSyy18xD_uP2P1sohRWlZ5EGneoqs=": "562499000000", - "Fknyf5Q9lgU9_ChXBwqppHLES1b7ztAEDRlvvve1LHM=": "1265782000000", - "FktSEiYdLElPVqDXrXVI3nto7nuQLvkfYsgbXLoiyB0=": "1655352000000", - "Fkvn_-XkAI-kGoSYlswwSQXtFrr1hTgW-tzj3HSyDvY=": "1386434000000", - "Fl1AIib2-QW_5B0Et2pPTYLmdoaiJ5sKdOJPFE15Cm8=": "2322934000000", - "Fl1CZSvP3pm3Q7Yb_VWMJtsUHxVaf0pRBCklKu63RK4=": "407233000000", - "FmDtwRnkKkFsHhfSVoImTTvCkcag10LQkOhwzWhLbiM=": "456476000000", - "FmWYTSrBowZrA51U1WQwjdjiu41rZON8jWDe1IyJls8=": "387559000000", - "FmYbbW_0nI7c72UPSdKaqDWak_kwkYPwDoLHxNFSHIA=": "391673000000", - "FmdABC1oU1GrQmMi-G9WXuBLGaBw_Vcd6PntWbT9Cmw=": "379344000000", - "FnTyN0ykaiuwPkYQrCOSQ0VhR1zsSI0gJipzXrPj1dY=": "389217000000", - "Fnoqp1HL5YBCdMmDcw1HmmT-P9ndbnNwYfxo5bt3p_w=": "986817000000", - "FoVI5ZOfGa-xBwL7reZLp2joGVSG6UEPJM7Ck83EoDM=": "450657000000", - "Foatc0b4DLycyjWEHrZVxynTniQDNyRxy-QWlzJ90A4=": "6730769000000", - "FpM1o5qNDPELRj7TsJDgg1_NC9OX9p8r9pAdyO6RG4o=": "16449426000000", - "FplW6NFtu0ZGFiVhi3Kctxywy7iDXLMH9P_1lJImqVo=": "450392000000", - "Fq4u8-v1sj2lf5W5IlLOHuSpx3CJXXiRH7gJgRpApyI=": "3896800000000", - "FqjddAv0ZqupGourv4GM7wMmY8aLRHAA6dLEDenbObM=": "421855000000", - "Fqq9xRRKhCUpk4PYTXfrvF4sNTQ6QPGf73usc4BOy7A=": "382479000000", - "FqzbAIZ6jYFEPlqv0Irl_kUj9yqCOPNT1KMdszPKIvw=": "357996000000", - "Fr0wlF8o6G1DlQT0x-SetvFWw7cEimeD245P6grQKxU=": "384545000000", - "FrAmWPkurqMEy2auFZHUwrJ1CuOUNT_ytQGnixMcfN4=": "406805000000", - "Fs-6nSUen7gb8REgmyEywaaO3e7_uNOU-bTaYthG9d0=": "13653449000000", - "FsG2zmXECpxDFGYiDLRp6V8S3I_8DpTppcZQZE3aRkw=": "3599634000000", - "FsS2Dgegy3-n_hYEvbSNf6RT4NbDUTDCCgHJgnzdJLw=": "16778374000000", - "FtEGkiKjiFT5JlplXUydNYMnAeVTrvgfmEuSX18y2Ok=": "457970000000", - "FtGN0ucJFo7VdBblsF2E34buaTbSbSI8ic3MdsUQHZc=": "454545000000", - "Fu7u-3s_mHpT9J1rfya5VnKlqL4DXfW6cXT73c9VlsM=": "769339000000", - "Fu7xc6ihY8L4nmKPhr3GRRizUH76P_mdpsbdJ-zQCOs=": "932527000000", - "FuCUuqeTZ3MkG0Higrcq4PWHdlR0Xx-3FG-irBZOGQE=": "470390000000", - "FuIQ1oQpFGYtLngitrJ07dDdvB2etm5vqRk2M3LrbcQ=": "385507000000", - "FuPm0kXMYVbvfhvRclRCXslAvKgVjbEQ-9pQfMTBxbY=": "7924235000000", - "Fun3ECwiE89W1oDb_zTKak65EAiy308tVmxg6pSviQ8=": "1223425000000", - "FvMz0S3eUiEHFRVXUbSeZx7VLFgnweXzTmBvucrvzjU=": "384106000000", - "FvSTZwYewYroeQvqkuH0ng6NerD4AghoxyijUxx0uEk=": "12599323000000", - "FvV47aa3b-zICWTYsIh69zogrFqD3hzPrMjYA02roiQ=": "406640000000", - "FvZvD9jQEx3AXFQS89oh2OlCEpBj27isQemunktSec0=": "455728000000", - "Fvdoi_mbyndKtF7WcqYLyD8mMVhEfaWv0YezgNKt6N8=": "18749999000000", - "FvfOkBSCCKYP1Z-B9bpxaUSDyJE_FC_kFuMH8eJ43PE=": "6653846000000", - "Fw3Ox_Xl3X1EU0rx2eERJp3M-yJ1p3DlFAAeh5eGnFU=": "1128540000000", - "Fw75L62XpOUdRh4vJiPhg9Z2e1bYXz8LIJYC4VhaGtg=": "393240000000", - "Fw8N_FRTQtB6Wm4O0EG55dO0jL287lToDsMVq_V2wDs=": "385507000000", - "FwdIw80dqOddURoh2b4nVuShN2KGEfPuNTQOVstRL1g=": "827094000000", - "FxgeAjbzxZiVLctZ8y6fRMwkwKXy3sYlUTg2Km0sdco=": "386978000000", - "Fxqv0LwSRIT5r_mAhRSuE7qA7CVa_5rciBPxYCDp7SE=": "4070461000000", - "Fxs0gRKyMhFnzGyWBYT7721lIR8Ek3d8Vu1j2akmXQc=": "3214264000000", - "Fxwucbw2rHmNKVYuBuvO5o_9om4McjX2FdclV8vISK0=": "377272000000", - "FyKdhxXy7Ixlxguufvd0KHIDM2eHwYp2Hz99G9q-kSc=": "5000299000000", - "Fz-d1M0NbZEkZN5AXXp2VBHZvBxCac3MJk1kKJsD1Hk=": "634433000000", - "FzAPUIT-puYhhmvQUWbpT_w_NA5ZnsaqSgu4UHmAAmc=": "3235350000000", - "FzC-A7pjJQmK8yAGgXcuLLCqHGNTKrcEDDJxj936u7w=": "451692000000", - "FzI9fnb0UIrMs-Hn0hGMz9_xWSR61HmdwhmxWnQCT-8=": "1859734000000", - "FzRAfKeM-b6df7nCgDQzm1I-OS_7QzC0MCswtMRenE4=": "446166000000", - "G-LkpqfrKmRwNyFN_GiQKauQhgUbX0bNYaRWMi_dn4k=": "405848000000", - "G-aXoF8Q2DooxceJPt_750jEQkb4fUxJYFfUAuI6zl4=": "385614000000", - "G0I9EPVRdDaHKa5j5PDc7vqcp71IZNLBJwzUvmhTrX0=": "1156518000000", - "G0Tw5mKZd6vEWujkx0_6RHpd0cxfcNdMV91DeP6cfTw=": "4593684000000", - "G0lEdEOknnFddp3_shum7A3J_eJcB40x_4EWcaEdVcI=": "3664096000000", - "G0qh95E2EXYQQhCctCFSgzGgCiwUJD5Oy8tkm4IrktY=": "909872000000", - "G11DayhiUdP0nX-vzz5rPyQMLEBPYN5s4y1NSOnEvvA=": "462476000000", - "G2-KD2CmTH2Gt_vgI8E4ZnwBr-WliDqWsB09hGLwOSM=": "2316299000000", - "G25Xgyt9qzTtALJijWBAw9IYxG9YlZVUm2tpHhNLZWA=": "780282000000", - "G2LsRAb-HcIhZC59gYI-slO_nrLdyfBmV3t2bpYS0RE=": "384615000000", - "G2anV00Ho9mA5epJAY_gsCzV-T1jMk-QcZvOV_PAkTQ=": "388842000000", - "G344eccOtYB3E9nKW88biQRXlgIIfvqYmIkHdHrd-qQ=": "691338000000", - "G3LsI2FTTRIs9GTmEsiAvWQC373P-VT2bJUaQlJhqqU=": "931276000000", - "G3QnSS1j7zRTfGe7O5MW7QVTOX3DNZShDSXVQV7dVKE=": "2919265000000", - "G3Rrn4VG41huwXyrx5fRiGOJvNGLyHKmLHpeBe4Cevk=": "825384000000", - "G3l7E2DX21neW8lAXukT9y6p6I7K9YzjjyXyb2ZO_Ng=": "518627000000", - "G4CCS4Twt2gAiMmuBpIa7Fvl08PA60R94Pa1DamjJ9E=": "3976506000000", - "G4VAuUownQ-fwFVXRFc00aRL-Y9Uj3ECXZfVYa7jjMk=": "894531000000", - "G4f0GqQhWgVhCC3wH9ruVXewKuTAPQ-AjJ8sJDrqqI0=": "833333000000", - "G4ux7WK-FAo-9BG38440h-myWobg_svUd6_N7NChwig=": "416662000000", - "G52YqjXarLVJmGBxoSS6XNhOjnzQNnLPNhIZWYl3OyA=": "384615000000", - "G58McO9PNH5Rdi42pBABcGLm6elqoSqYptnuCTSvoIM=": "384615000000", - "G5KT7Nfax76PPE-kxfph0V-mXshd_s67XgDdCIvQBvM=": "4023868000000", - "G6PSGn33ovaRUQWYX8nBKec9g4zEiIS7i-K8kYPPKiE=": "386372000000", - "G72NVML-SENxb_dJzKX2NSenP7iM1gLkwQE9UcA7m-Y=": "385528000000", - "G7OIA_WFuIiTab2tB2kbViRk9xeglKqBQBe72Rnc0VE=": "454031000000", - "G7R8vgaEr_U_78hnNMBE0DwYQYjrhip6cqCSC9-LR2U=": "769230000000", - "G7_JIjrwRfmF17sVZbxf6ApMw5XC1G6YbFQEIsbA8uc=": "767159000000", - "G7hurtkvH_5Tkskj-p655WV3YQ6opJ0PralVVycsVww=": "450040000000", - "G7zYgp2knXefi1rBrr7Aa90t7dLKvGpYifOm0YbfNgQ=": "381805000000", - "G8JhGaQOjoqkOCmuvkNsasakiiU32hnJ7TvdB9XXq0g=": "582471000000", - "G8LNhrS23gt7vBdgjyXuc8J1EirCSaQ7u19zfAD-Kxs=": "3646531000000", - "G8Uan9esg4GRBoJU2553CCbl5efAQkhc8m85SgcFODA=": "377667000000", - "G8XPQgiGY1c-QXyuSFmVxR7Ggawpr_ewLxaHZYfPMX4=": "400435000000", - "G8boOoZvy-_9KUCc9d5q2Ffk0QdkpzXqzO0_pTeMZnM=": "413738000000", - "G8gbz1G5DBC2kaLdsrXoY-YTHZARbAzSk2Wr2DDn4OI=": "416753000000", - "G8se4T41apOLtnyP7bQzNS9jen7U-jRLPwYLBpUKMow=": "3846251000000", - "G9-vYfpF8fTMtVDK-kYLQCB4p0egAGJb3d7h9k-qHNk=": "387561000000", - "G91CfQ_wdt_WtKRFmxjkkdeWoD6hTwnWFH850g23Rcg=": "393443000000", - "G91ao5O0mpBw2I_EBAZmoJXfBF2A2WifH9M4QMPpUEo=": "481965000000", - "G98grCrFhZJaWROUp_Nos2n7fnrWAn3h48OZhfuPEBo=": "382226000000", - "G9A5c8n5FXsrSfofKoxwI8PyTbqEF5ZRkuILwr9KumM=": "415350000000", - "G9lvoCJhtW_CMOvkOzh8-z4MAkL22zuwysTl0b4Bsqo=": "1252901000000", - "GA6GK9zHWPWMkQFGjkV3L2zZVF-oL_uNA7yEzGa2Te4=": "384615000000", - "GA9E9oBB01PI04ptqZexv4HZ7Tsrz55nx3sIP3fd9sI=": "2255279000000", - "GAOoTgKxRbBxjrCDiu1S6RxDFC0Lop40fk9smYhlcgQ=": "769230000000", - "GATExbZ-b0wErsu7yrK5t7__FsCVfpQgSQ1z4YLO7r4=": "469885000000", - "GAZhcJ0hD8oYGcXlYdqpPBTKGZ7QzqRvQXkEPj1CII8=": "416071000000", - "GAbqPZG_XyRFQDyg0D8txUU4ykcCwjPeNXa9Zk-7xfs=": "690652000000", - "GAjAF-WXiTlLfwIMmIee3KNVI4O5uutLonribqZIP7o=": "453003000000", - "GB0Je8fWMiLLKAULHvI85F7yhcykHYSopm90LhdKmT8=": "379329000000", - "GBH5bKVCKXkYrPO7QBQa59p0jWvzyeOeiWGgGXhoBaI=": "1159416000000", - "GBKRBj0-tzpCjY1b0ApoXqgtPyh2GzjmnI_qHydOSkU=": "6289089000000", - "GBXT9sI4ozlo3PGdg-WrDz2k1qRFzyiHF9yp1Jscv74=": "3760252000000", - "GChNHcSRUsE_dinYV0iRBlj_xui8dZ5KAQvCijNnvuc=": "4999999000000", - "GD0xe4Utf6-T8BBuOQGyvezon3Ly8gkHM4WbhvbKp-E=": "416666000000", - "GDRJBWd_BIpk4tua84NPGT-tzca510GdsTVh3NXG_TY=": "1872772000000", - "GEWRS1gCQV6zVqec6YXijrklMnQdINpW8pxhwuts9Sg=": "834537000000", - "GEyH72hmM5VfW49vC2QUDiwJpPZREIOpgC-V6a2fia4=": "384615000000", - "GF87SGtXgMilRzu1pBIJMiu6APaEo3imQk_XAHozMhE=": "2018416000000", - "GG1BydE_RUYtmUGZ_WwKfNm9dhZAACTEgWy75rbm5hY=": "769230000000", - "GGInUc7lO_wNLAwhAm9ZJRKOm25HVb0rHUd7s6zoHSk=": "1846153000000", - "GGbU0JpOQVGbqCLqlWEU-LKz0x7D5yFlCiO5KGvKetU=": "407808000000", - "GGnac2LXn-Zoacu0OHlnJczJIZTE3eOdpLtOMNHX8j4=": "521709000000", - "GIPnGJHVvv-9oFgcSHBLOZgFgmGPzCMNYdgN4S_CI88=": "473001000000", - "GIPyTfWveLFik-a5km1F7HaQHVZk8Y_ykIY5zEIfk_I=": "383550000000", - "GIy6sNiWTOdgtfamWgfhdcnu9kjfsWG0vRmLqJfsSNY=": "364116000000", - "GJ6GerJLJdW04l9KBSJLQeY5Wunv8ToS4xhNETcL3Aw=": "381802000000", - "GJ9hgf8zgTcw2D29jvy0B7wWu4zNfpgirWaRAnS1u90=": "377845000000", - "GJAYkOqar75PYlEL1lrqDKpkRmihjtGc831xtT21WYk=": "416666000000", - "GJX8-437NvsbPd_5BGOBsuoTTjffE-ssl6M6522Dpas=": "381497000000", - "GJZhrhprtaLRl1RTn7WmoKCXzDpKn3OJdnKfB6HH5Mk=": "384452000000", - "GJjLr1hqqGO8Q9rEZKoPB0bwi0Xrw1aWO11TuBSUof4=": "384079000000", - "GL6wnwq5bilr6LXR3j8OVwHeDoR0wJE9uyHmoNF7vXY=": "411085000000", - "GLKBAxlE3zQ4VRowqFPdWaPNTnKOAVAI_kjEzYeMyj4=": "458399000000", - "GLUek0eZDkA_XMXLkdr5Jx31hfZUewXbEd72WX3uTUQ=": "818181000000", - "GLtdTV89RpaKah5qrJ_VpKF6eML3n4-S47U0zcJjZ4g=": "832946000000", - "GMFfIVJdU0_1tOWq6pY4Nn_h9MuS7S6fY3MJDvworBY=": "2590872000000", - "GMh9EN1aatmaH9fKfY9TfQ8NAzQGfDaLIzTWS6UU_9U=": "386870000000", - "GN68CChjq2jh-tKjqbSfHqVe0mlpys4bYH6DlCj8YM0=": "833333000000", - "GNEfZX-xIoA1cTZeb_4lP6Ab4JU52MF0aM-UzoAydZ8=": "384242000000", - "GNdSrZkJPcpOWph7Z0GIqLX4T_bLqIVSo7UYfu3_JRo=": "384976000000", - "GO80aAv26FECHw6ToDAEbMv87b_6Gq9lfLoGWJc_ggU=": "2157676000000", - "GOcNI-KQfK3LstODHCzyr0EPjmsvzRG2s-pdfxtEX7w=": "421134000000", - "GP6oDZX9LsLSxoQwCgipm9ivycv4PoT_9Ysv26c0noU=": "2272727000000", - "GP7vIrFLQmTK-0ya_7V2tWwF876XwMLP2O4yHycb2c4=": "1191644000000", - "GPrEfpWqmzIMitTREjsnaxo9YrntnIQN23VX5h0SuNU=": "480520000000", - "GQ0fXd205BV5A7JNB64GTQ5pp891CSxibDiMcvpn2G0=": "384372000000", - "GQ96YFIG-CXAbY4OELUUkVKGZ6in2HLf6UxHefuJ0Co=": "4149998000000", - "GQNqMQEU5-kLg60k6naZhQ-HzbkCZ8ESULiB0Cabnok=": "382720000000", - "GR6XcYp4fdmsUTyv5IodxxbpJoAz2CpdQ5umPwSNZxc=": "7692307000000", - "GRKcpUNSz1I2Y0RQv9OXPRsOeFpzMotKD63Okn2e5KI=": "1538461000000", - "GRV-ucwcV5qAUDEppr15965sKTnVaZ7jpUF7Zicbv4c=": "4553672000000", - "GRYWu-1hryeBNUXhDCG3srpZh6wuAYIR4qPM1ZE82RU=": "379928000000", - "GRmgKcIFWPy1pKSOV-qmQ7PJOjSUwwac7npsYyZvWNI=": "1156520000000", - "GSEMo4gaack-Kef6AhEDdIH-HQGbqwza3A7xW_DnD0I=": "504461000000", - "GSelTIY6SBoVHiqG3yK6_AMo0WYBq6s5PmWjxyie5Lo=": "1862771000000", - "GSh4GBVSgUJZrKIIIZRbvFKG_ZjgNM0X_nslDgHIIiQ=": "408021000000", - "GSzFBH2y7XUhwvf-28jgxa7j_oq1eXJzoE-jRm4hSOk=": "883752000000", - "GTUnA_Grln1QbedAYVPmKJHUafHqiQ-nKzSW57aw-uU=": "473366000000", - "GTfJH23WtlS0ABIcjHX9q39JTfNsFK_Kj8yz74q3Z3k=": "464704000000", - "GTnZlSWEXtE3bWdnz5BGzk__JuFRipFOLdtU-XeoOE8=": "762293000000", - "GTuoDHyFuVh-Bkn-WMzmb_wI6lgO8jhiEAQLsk4CdJM=": "12243737000000", - "GUiOfmuAcFvjRofr-dfAzsjeUUfEhDnhyp5o9d-aFCg=": "381805000000", - "GV-aR7cSL9Zk6iEEwpDRzg-KEzKHLF5NBCPn3ud6p_c=": "501897000000", - "GVKoiEluG5i5Heag0c6h39ot9NYEFkvo7B41C2uYdLU=": "4024342000000", - "GVQZbdgt-4MpuTuld8TjqDQIwsFZe-gxWbzzXp8K_is=": "417630000000", - "GVcrsIoajV7MgwP30_BpWsU69ANrqjKnrcNtd6a8F_k=": "504471000000", - "GW103odc5FGSDSNJjUS_q1F5gqatJVfCYJtT5M8jOYk=": "386608000000", - "GW1HJSF-SmSLRAmdP-wWjDLDNlsX_p4QkFk2Z_ZHNLs=": "470073000000", - "GWHcLwX67S0Beacs8kvqIwV09GLO_IghzinSG9DIiQs=": "482633000000", - "GX8kxuf6nFNx-SS7v88bLvNv4tZBZQ_sm06ib9hKHRk=": "2253376000000", - "GXEqpSj8ACsr8DMhdPV2iZ_ipK2nsUbqLsKVf7OGE_E=": "384615000000", - "GXZK0FRmSrDT2Mt34Bi5L-1OgUaHaoBKiATny5PCjm8=": "384615000000", - "GYSJmvEI1SkJnrEXYdgwHDKn5i4jWDDeAWtdXVYUgSw=": "465309000000", - "GYSjHgg97qJo2qFVK4VdAdgf6pMFR3695dBV8FzQzuY=": "4516088000000", - "GYT8j1DRwu4667ZBQSwjVc0swLykOlRr0yE5PI0yaAw=": "1153846000000", - "GYX7Nb6-dxfcLcaidNqQ5YkTlJQJyyWUyxZnbI-I04A=": "405846000000", - "GY_Uubh1kurHJf81A77N6ur8JtjLq4rNoJalXAsJDlQ=": "454545000000", - "GYj7253qmuahEzg3suqRxKQ0DFgupZPaU3YS49khNvM=": "1249999000000", - "GYmxDqv96B224EHzGwOQmV3NPxaLjMErmgm6YAsXvBo=": "544142000000", - "GYv12w5NyPje0dfVDxNONivx_CyshWrdcbSZN2Te7Lc=": "4627463000000", - "GZ2Xjl1p6iSwOef5mMmgcSBTIRoYcAP9vkKxOGbQGTM=": "1625868000000", - "GZ9reXVBvO5hBM37eqESfitnM9zcgkad54S5-WoGCKE=": "457277000000", - "GZJ0SjU91_dQsofWsS7Tyr9ZidHMYukd6WSsydbGzjQ=": "2045374000000", - "GZe-q1PdoMedazEowVCQ4o445pvx3G__aIRK2tWUSJI=": "385507000000", - "GZevXO7a5fu0JspsLHthczNwyXgKjRY5NST62tj5MT4=": "769230000000", - "GZmKlrlhU4TKvLYVQr0K9wyUbrRryNRvdopy-zs2xtE=": "4866611000000", - "GZzBFgH4yhBaBIX4BhpdMGSyXTgQKwwgJb2TD3om040=": "858310000000", - "G_HLG5rzvx_ALU3valsYT7mSU3cQYAteEoMHlEOCFYw=": "1538461000000", - "G_RHCPCGBAo5CUrQLfBp8iuWAqd8bNF-MuXP9gA16lo=": "469846000000", - "G_SvirTkML8oOMUhq2nlxLNVrJmMrtAbUFFYEwHxI4o=": "381836000000", - "G_Va11qAI9LougucogH8FIXZnI8brJzpspvX9QpALFA=": "424715000000", - "GacbYJij3l_FWQBWOJbO4n6Y758dSgp5SE2VGezOpuA=": "461801000000", - "GbTKKFQZMOhYzJoUYn2vyDkGBwWTvJEfRqJXS4NsiN8=": "406308000000", - "Gbb4k_q9doHFOzn37aYk-bsjMOznv1tMrOKr2cKCHaU=": "421993000000", - "Gbg7gAtxCX3UAml9p34cBIVV3K57_6vS1RHlffKWzRE=": "380716000000", - "GcWaktxM4_RIJ9ya8FgDS-_R6X7um9wMB59ae83JrA0=": "1233257000000", - "GcfwRDmhNyTvHTbBGL7D4Emr2wtgK3MOjGhSADAn8wc=": "19894257000000", - "GcmlRJM7UW3ki3IwkYyW_WTcGc-aIpoxODdbzwYpqxo=": "455600000000", - "Gcps1T3uYpcxPyo_MoNOW7JbTyOqPP0rGDgOjpqGYZw=": "416501000000", - "GdaC7-Taf_yx807CHEn6p97nsjeBYEdKub4B9Cj_Z14=": "3763933000000", - "Gdo_3Av2C70_PtzpMQJIRPlT-AnU5uavUiPVqySIoGg=": "28578454000000", - "GdyMIz3D7SC9YUa6qJ8m-4GBfgJ1Ltz_Z1S6kwy8gkY=": "1924102000000", - "GdzO1HwItqXBC4QdrgI-hUjXTEtPDe0sbWDHjiQtOr4=": "454231000000", - "GeAS3cuRYenf8sVqu8o56Q-nOKnVUTAKc7o30EdDCKc=": "469310000000", - "GeNTBiJWfThSQv9rIdCUSVhK2JwpOp_t5krzCkDbTYs=": "384615000000", - "GeSj82pYY25MH3vJYeBSr2IALiODAkXbJR1Pd3r4eGQ=": "543209000000", - "GeV-J6ygUKuCKt4AbGaIl2jdUMOFhnsS7qC6fkC67gg=": "376944000000", - "Gf6RxKllO_VDXHxoc73a2hPNpCkBLH6I3xCKpYJbWU0=": "727272000000", - "GfGw7MDu2EWSZS2C0M8awyiMPhz7dw9o6mdoxABsz08=": "1223425000000", - "GfZJ3dP8GI4KxPn5F95g1JDIhZcB-b6Iq0KimztiuVc=": "456230000000", - "Gfzs7JYTHtbHFvqs4kCQ4zZHbpkbtNtEVupgccScBhc=": "932184000000", - "GgJLmTMT-ukd0UcoMEXPn6wdltI2JznAx1JNQ2_yrxU=": "4166666000000", - "GgSF-_sMUFV3HfygmcPx9ffNriDCl0XN0CeYyTgP3Xc=": "2304270000000", - "GgeqhEkgSslcIrYra0-V6B3Ew9LdzaRX9SIX-CYOvnU=": "464104000000", - "Gh1Kicf4ypvNnmBFl656_Jm7zgJimNYClYRtLJIx0HA=": "7710216000000", - "GhAZ6GLWi6hWYJORVx10TF5eDPfqjUD_LaibPFggYs8=": "2074744000000", - "Ghy_ydlyEWPve7-zCcZoFAmxFo-5vK6Us-1QkmvCpSc=": "38461538000000", - "GjCzU3W4Z9IYfrLWPki8e757FbB0R8XzmnrJnyJo7sQ=": "1382564000000", - "GjJCAR9XvUSdworS1UMOOmyNJhmVVFEyKJAfiYgEIdQ=": "382394000000", - "GjRPcvYJzziXXTT3sS6aLHcokwiq--iio7kxZRZi44s=": "1893120000000", - "GjZYRgXcMlur36Jwzy45pZxuz3qBC09XzSSwlUgdh64=": "407692000000", - "GkAkPTavuKPtq3IwTMagf0Xp6lzhLM0uTbKUeHfc-sE=": "382394000000", - "GkGh3vCQYZVmXZGIuwYJ0fcCTP_pLIN0sk5dAdbohaE=": "3846153000000", - "GkUQuW9blvyhuN81GJFOZwkzirnctEjGcueH53gJ8DA=": "911024000000", - "GlXkci1IFB1vtIJEdZkUf4VKpP6hie6msnrrUYJNLsw=": "1880792000000", - "Gl_jccj7t7lIRgDU2fKQVppai5N2op6KJyM8CA3blj0=": "500286000000", - "Gln7iaMWJluVxe7C-dMJTfsDuV30NzFGelEff7gSsUY=": "908755000000", - "Glu59I45xWNEG-KmNcD14oiqyKA_hdG6rMxZVN0tso4=": "423710000000", - "GlwsvjUEIOeubG4jC9VrtYu61nvoBLiKbXqY0hnBQzo=": "4110858000000", - "Glwt4yQ_aenARYOuDuXVbT6D-P8RVfWcuXW_JX8RQOk=": "525627000000", - "GmXsgbBgVnd9r0Spe5rum0rVJd7O3ZNPWybJylNwbhM=": "383818000000", - "GmwIfouCB532uwIewZasDzRMH3xixDt0E8JsTxawITg=": "4633507000000", - "Gn4zPw6CFsaKa9shDJad7f4MRiSkC-aSWBH5vnBLeR0=": "499999000000", - "GnAaNYbrD9dPtDw-7S6e7xb2aIU4rtIiCi82hk9qU2Y=": "824028000000", - "GnuwpvBFzGJPSFJZCyLUvUF8317VdxEo6kidrJyZlS8=": "3982292000000", - "GnyC_av05GR6W9DkNu-1wGdEZD_PQ1OHj9OZWjs2FUc=": "367173000000", - "Go-C4sm8EDwCoo16GX0HvOUKx6X0L8B5v4j4QBk89es=": "3378050000000", - "Go9nMRmMchOFJ75PHyDRfAuTmp1xhIiiKexWHy35EWI=": "852806000000", - "GoaYAQpCJiOjt9ZgWpCDwpZz2Wlj-39xGawvWvI94jo=": "1927533000000", - "GokJdWXYxo9vapug2C3fcvE19NgRB6Mhb-5WZKsi4WU=": "383980000000", - "Goqw4D8yurMO9KdbPCCHPB9tKjtGAtwebJRDvhxzZ7c=": "1139749000000", - "GpU-N7lTWvaMYV6niPL7rtIFgDz6dxn1S0e7EzHYCYY=": "461152000000", - "GqDHuApiti6Gyz3nZNFG1wKC9GfI3Y_X84GAr09lP2M=": "741784000000", - "GqPi5rhegDhQYDmhlGL6d2y1iPzIhkeuch4HPwHL25M=": "451355000000", - "GqZwcFZpczmitsEB3viz3ytCTlKlMLrfVFO6B552hKU=": "839717000000", - "GqjphsluSOXeq8y0pIcVee-kybKnYFt1AlyCEDbxrAQ=": "462146000000", - "Gqxk1KO3xARSr0hhPJ0gNXmzZ-c3o2VrJ9xbryJHKo8=": "466542000000", - "GrDcG2kLI-JkP6gkHQQZlkclGZnDYybIz3BZyKfUF8I=": "1919473000000", - "GrSBEVqXHhag4Qz1u8nMpoBIA3EnBh0PdBWP9yu0fDA=": "385011000000", - "GrqatzZT-fQSlxES5LoN3OTYDIeERrTNtfSF9awUicg=": "909090000000", - "GsTuAviHRQD8oUiMEsVzDBXM7mJhZ57jbhW7U5_8zI4=": "833321000000", - "Gs_Lym2ZgTYAEWp5beNWdl-aM_nVct0h_zv6yDh5lBc=": "384583000000", - "GsatSlwUKGocQGUZeQILj8jbSVPDYYCQi9GpOryUNvg=": "706351000000", - "Gsj5PalDKBEtra32c-M51yV0YI8sM7fiWFima1W1Lyg=": "1684921000000", - "GthvJarzDcYqjlMFLmJKbl3QZLpSm-i-KcfnF80MA5E=": "958399000000", - "GuKLrJWCmG9nhqxnclyKdaKE2vhf2XpeTTzceqn42bQ=": "388357000000", - "Gv54fnPFpi69uE6zXi11kaMwu53KohwzSZYXVLTae-Q=": "906947000000", - "Gwu0N7D-TB57xB8r_ftW6RY4hGqHd2PDAVkhpxZAlss=": "378034000000", - "Gx9TE5PbsvP5iNVac2lB7XD5B-_ghPeWSqAj-uqEjxw=": "1715429000000", - "GxC9IIDrfu7wZUhjkjzdMpF7r3xFf8iLccVB9tm4HJM=": "451739000000", - "GxHhDcgOv5CmTI1aJIN3Sicx0Sn4gH9f0jShklGAvsU=": "1621596000000", - "Gy23stwiGXaZNhDwQCjevjRqE0F_S4VGKvhZFv1p1fM=": "1941362000000", - "GyBgU4LnAhk29RUgneBGuyk51oModFhIXD9xt-2wTQ4=": "1578238000000", - "GyILg7bvplFLv8Q5CZr88aLKW9piXG14u7Xgc0I142g=": "3137080000000", - "Gyvu88zV47bJV-3TbTdM6KbIb-gkdYTIS4PM_RTdgpE=": "413977000000", - "GzK1ltYxs-gG0gHCes0CvVl_aZm2Ut_ZGBMOWr3jOfw=": "380485000000", - "H--EBNOh0GKhP7UifjfPkOVNp9uZSSHAHFq66wthNRU=": "2272735000000", - "H-ysyhIEGxuyv-qiA6xnjJkc0ILE-_HQwTS1YEPYqFY=": "387033000000", - "H0IOMld3nupjA7xYyH29iOdenkmk-IcDfHgF_M_n7_4=": "579779000000", - "H0K1UbatI0QxqhTkcyzIlhJlvl1IG3C1eMLIKB38hEA=": "1153846000000", - "H0aufDSDD5_1KbgB8jwEkt7TvAdty3LuG20V_IFPXYA=": "2365055000000", - "H0qkGmy22ZMeLCeXCSlyeZ44H0HKE4aahpeIgS6ivEY=": "598486000000", - "H1tPurwNnQmJrPO8JWQXZ175K7CSJkKfIGlx2az_sxM=": "385507000000", - "H2VaNm0HKCAbfk0nvIcvoLfXCrvLsQeLYN-QktHqkUM=": "414775000000", - "H2Y1RU9PpsJ_Y9OxZxJKJD35PQR5h5oC_2yL6C13ylI=": "453915000000", - "H2hSBxVd2w-xCwD1g0AgJL1Bogo6aYvoXv0WrpaTrvc=": "417635000000", - "H2ogJunSoajxaNMIGQDqeT-7wTNYfq5IMg-XpZTt0Pk=": "2260550000000", - "H2tLE92A8DrdvUThpH8VbZVgiBC249fwDa2PjUATZRs=": "416666000000", - "H3at72BJYkO0KlEyxFap_h66UvLu-9sVd7LmcGnon_M=": "1146000000000", - "H3eTVQej-7qavO5EgxbDTdkMGzW5kOC4R09uXMH2qvs=": "413140000000", - "H3g02gXuYM7YRwRO24TrUQ1e0nqvgUuk2tHTabcPyto=": "419521000000", - "H46rQqijsd_hjBb1XWOAnYhiRMxGi2allSBnrcTSyYc=": "409116000000", - "H4SOMgq_wSgMbCI165aNcm-NpUQ3Ib-NpTEUdUL-iA4=": "384242000000", - "H4XASU7ooEGIJ8zrPtvNPdS-G5vdF0JwvB-1mRYoAdw=": "1843554000000", - "H4dDMsqF9fsBXPs2eRtN5-YTXXEFr1GQZiGbYIxZy3M=": "417632000000", - "H5DHgrdRacRv_Rq3j9wToDe-qi7u97BidAffDtqjVX8=": "384615000000", - "H5LJip0aFyD-aR8J8iDkAKuRLmo4avKuYHt-nrGf9TA=": "522085000000", - "H5iPSKKDA3qxNt1ZmeBnLJs7mDlyR3PNb3Yp9wTxYKY=": "1374999000000", - "H6F6qYtOQiIB0vBwRxMVC12MIq6N0s8jL6_-mlSeiMY=": "1667446000000", - "H6HBASs_j9GWnpopORkoCzvtIRgiC5e3LAL6lLEtggo=": "855068000000", - "H6Z6pFUa_jhYP3qdH8FIGJvp721qvyhKrUo68r6-Obc=": "453974000000", - "H6tto94oiBx7AA2avgsMY74OY9wkWR3F2X4rjYgQ5V0=": "1672715000000", - "H77eRa1UzpvgSXpxiZOFfgnWNnDcJNWOzcZpKz3Ltd0=": "1538461000000", - "H783yR1VIxaGeHuZio3f8FVd5F_nLwCBARe-Zm2PJ7k=": "769230000000", - "H7HlpP1A5CafXj9vZKO7_AIBcf6AhklPPWudc1bnD5g=": "388083000000", - "H7K6umURIEUCXSn6gS97d3Ze66VY6OmQty-k7WmPnMM=": "386930000000", - "H7PL3CsrnFaKvY4LKgcEUDaNltpIS3BIrQuDHtCrwsE=": "4999999000000", - "H7f-Zf1zngK4jYY26-tzWFTABeshdykrEUFhmrd-l5c=": "655281000000", - "H7ousnUXdrjIOD51_gbWDjWd94mS06DMrfLY16aplP8=": "498982000000", - "H86X7JKH19xm7JwhGIN35rV3PIP8pvd_HixuPDKVxew=": "379717000000", - "H8Udv1UIXEQLV8Scs23q1kZqoAPmDTKdQTILVaJ_liY=": "1159720000000", - "H8b4PBH9fAz0GOgAywmbwebbfANm8R1J05fkfWoRLPA=": "384392000000", - "H8vANviEsYGm6b0k0EZ149BcGje4oXAJ4fEALiGV934=": "1249172000000", - "H99kAPyrh6va591JT15n2uNFmZ6n65QaWN7Q7VV1IRY=": "1156515000000", - "H9H13Ycfd7HXLlcY5x0AzL96k9xkqO1A0tSP03Fgv_A=": "379344000000", - "H9lKabRuLn8F-UUB0dTRxHk_PdmBVmJE0vDjWwW1Uns=": "909090000000", - "H9qh7A_OjmkDrdsNq6eRLuZC-0eaIztvHFKPrY2S3Vw=": "3708500000000", - "HA8lkE1yLk_-i9pSbfO5lp2lRXRWPUGbmRR3Cu8BZe8=": "45246040000000", - "HAmo-urF7jgGSfZgsjZAsHtwilwWGi12Cu828NYm4vs=": "404104000000", - "HApjw9E2sVgldFHMWV7amvclFTlGlpzsCPY4g5EApWU=": "920074000000", - "HBfCQD6wjgYfNp1axVKZC9ED-cdCs0fEK5fM-u3cdz0=": "384615000000", - "HBiNgL_VRpmtCKKsijdPxrESgqb3Ga35uTGXs65Yqd4=": "466091000000", - "HBrTL58JZKiPQ9kgX4V1SubB7IQjoz9e5zulhDvvW-Y=": "1213634000000", - "HCOSRyKANHwHP-cZfUYcCY1xsnEtYzm2SiCJ2xVCJeo=": "3395389000000", - "HCjwIn3OJyhHAl4QNvB_-g_LrvbMc3tnk_hf-1_NuQo=": "384047000000", - "HCmZCDlsn3DbVi7bQwwM9iCmQ6jMVPw2PdGV1H_p-Hc=": "3878592000000", - "HD6HN9fGUMwdKK86ynd5SbhZmVoHhcxI-Lvvmc5EL2M=": "411085000000", - "HDEc1KdUQQX6rICC32t_E6T3viLskvpsH4myn_ys8YE=": "463640000000", - "HDLQjvnkhXlCkbtb-9X32KcM-pm8ku3Diicnf6Pk6Jk=": "1340123000000", - "HFJud-dNakBboJXg_BT1cEoCZ8DWWQ0156bhI47Uapc=": "412397000000", - "HFNW2ZirFj8UG8hZsRH5K16WKQoEuJV2qVjV-VJ4g0s=": "416848000000", - "HFSXtbP_MGozYSnWg6-L4y24OP9Y8qEgYs7kIGZaCdY=": "1233257000000", - "HFwxnaY9Q9SEZasj-ycOFOuxRbWuDfIygu-U9grI1lQ=": "411085000000", - "HG-oRy5aXkp4jhuT6KyAj-kat4W4qupuOsNE6eCH2dc=": "500889000000", - "HH1f6-j7U7pForTDJn4m5SGagLyGjSsb_pT56DxZXjA=": "5028076000000", - "HH44FsUh4E_he2CjpB4iIzg1D7AqWLFq33OOCIYkGEM=": "1147839000000", - "HH9deiUZIuSHq22qUAoImJiX-VAXq8h8OFXO-3JzoRk=": "473265000000", - "HHoBeJTektP1iDnYXBmbtYhk0W9yVwZ2w7xRCRgN3_M=": "1143132000000", - "HIRam9gekEaosGS_Me_ZbStruJoa0mbEe8ilO73gj-U=": "381582000000", - "HIvguyGq9bZeiNVImnOi_1ZU6xfGZQdBRsZccu_9760=": "383670000000", - "HJQCucD3wP09e823nbp9-Xx-F_4_M0o4jeamMHLCd9Y=": "406865000000", - "HJpfXcnKzCinm0IyKuQpTFFwNJlVHYA8EznqbWRLOyw=": "8493455000000", - "HJzeEMI1-9DwzmKuOVwQ5lr5zTjNXF0MbChl9FfLp5E=": "1982473000000", - "HKBJdOhxodSLbN1xN7WUcABZcZoToo24HRBtUZGe3p4=": "4613929000000", - "HKdOT37FHg9Dy-APyaf0IkQSuHUsTvoQbWDBpV3vlC4=": "422561000000", - "HKk8FvnGCOR_z6h42zX1guRm9zj-OPF8vMgbHCYl4jQ=": "886640000000", - "HL6E_jF7N21eBa-UQrWZKVSX-UuP64FdBSQN-A8xp3M=": "1153846000000", - "HL6K4g1nW7xtKfamhRvDyr5kWWo-PxOOJ1Hct01hQV8=": "393037000000", - "HLDbu-6oUivyle5DZaULN--05d-ftQIwKnMAHQ7OpI8=": "812897000000", - "HLbK_xXgZ6CYxrD6FBmjJjL1l8a3fFZrKCH-v-U2Hqo=": "384615000000", - "HM0cK9AuLV79QJXG2QYcNzyMw3p_7JS0a8WxmEJ8B_M=": "4980606000000", - "HMMTpeb-9JDn94A7UsS4g2VIxFGXWGvGLGbrIJq0qPM=": "384508000000", - "HMqd8Bm7PCaoVjWX5S0I8NCdEiB15y4ZvNeRO3Vk8_g=": "1826049000000", - "HMrZhBnSGkIAwTxqODg8PWiV_jyDUfvaFjSs_rdaenI=": "377567000000", - "HNCywbagVOWHDPOmeE6CwC14_1zujD6dBfxZVahJzxk=": "7711649000000", - "HNQM87O0E0bJ80UuonThNWqScCxMzCeAZTm1mZCywFA=": "411085000000", - "HNb67SxByleQKs1Q1VfcerE8Hp_5eq1hQ8lQgwDqzRg=": "385506000000", - "HNiKfXSUTKrBP4IZW_YEa5grW86lB0sGEpgFz3TTdh8=": "756642000000", - "HNycnbx174CjU2l4udyo0oUzMShUvRlR-Ta2kVRzlBw=": "9136328000000", - "HO9gtWP3rJw5PDK0cZ4IdZDgphD30_ODP_ftIUNftH0=": "470553000000", - "HOP2blbk2m6rwmAl08Cv36Q-RcM8QbQd2A3kGKfcv5o=": "783595000000", - "HQ2GmZRXqVCrw5-NclOI6qtawfEEPPdbjJPblxnqJ7Q=": "500352000000", - "HQ5OnhOsDObjzu4yCgkf7m39bcYFf20i6EiMrTUSp7E=": "1135024000000", - "HQAGdVApMdCEIPNUEM_c0FBsWTIuZ4BXHFPAE179RmM=": "384787000000", - "HQW50czGz1bBhPCz1cCs60nYZ3WiPsOh_6DB3p4v0ok=": "778136000000", - "HQpXFTxj7LRQVenaaROnrPe-QQBV4VN24k9HQSbWww4=": "1217572000000", - "HRWYYBVI4ymTVPOlf1labbBetRtw3TZ66c9ZaCbUeog=": "407808000000", - "HRhQfk1da1mvefGoAiQKVgsw61LxmNZ83v-FLTvlJcQ=": "1814349000000", - "HRplOUIMuB-kLXgYcLsM5g8PPXSSZ3n9OV3qPNaVpsc=": "12499999000000", - "HSQL78rocRCSOYCfsn5V9mUMou_0uZtM7hFSnn-m0eM=": "455597000000", - "HSbIGJFuCqip42vAV4oUv6igxseurQfPJKo_rCGu1uc=": "388246000000", - "HSj1wuM3WMU4KlZtQh4V7Em227fjEzNdgUf-3vtSFSw=": "1153846000000", - "HT9Sk6juVnBtJEEUXNdNO32Pwzr4IKzP1KnIKBRP9pE=": "385117000000", - "HTsuyFhXldo85_HtUpxdi1SHwzm0iw_JrnafpY3mUiI=": "3158373000000", - "HU3jLgeMv5G_eWMNRmJdQAl2Rq7k4MnhRinhcg1HgAU=": "4170805000000", - "HUUkAROimpbkCkYGOvB1Px2cj1fi5XvOVpHzfjsZJXk=": "385715000000", - "HUf2g5NpekWLhEtjgPTeQhHWh2YunoGtxPU5DaUy2_s=": "411085000000", - "HUgvOvpLijjYG22lNBiit30qRlFwPtxAOWhdcfhqYNg=": "462839000000", - "HUoUgV_fFXjaX50bPCll1JL0XhxR7tdu1NgBQtG1x_k=": "385507000000", - "HUzWc21wgQn-Z3xgrB-TA9pKexe7WFNL9O9TOaHgzJc=": "1153936000000", - "HV0aV66-5i5ORUQflYxpYpPWWS0WIkTcw0cAWV5Ouus=": "654166000000", - "HV4HXLge5Ha_t9abWzwgLj_knrf4n4Esnga81Ekf-qI=": "399446000000", - "HVgYlgXjyE3dRXRT7zZ6w254SVDt18RikSLTopRs1qU=": "1002567000000", - "HW7YLoA8F0v69xZgEdJRhkXpubkhPIKHn1_8T_-z43A=": "4349692000000", - "HW9Afw5Sr8Ow8XJSnGLFLTc1cpZhvPM1IeLsD9TRAYc=": "2495859000000", - "HWF_0yboeqR3GuifYdwrZc9pfKzAiqjbmvql0hpZ5W0=": "5954284000000", - "HWGh0-q2vSBCGG6eOFTsblWqRg6PpD7GyG60vejmIjg=": "492802000000", - "HWbVg0rswzFZQRsAUgKIqNMxPgzIt4O4Xzrdxp9iRzo=": "416632000000", - "HWrkGMxGyTcZFVkzXFn5-FeRHjrvSL7BHyjmRQKPPXs=": "455600000000", - "HWyXpaFHsJVvSXiToAZtLY0TaqjQ_3EhyOnzN0k9-B8=": "2441712000000", - "HWzN8W_myU3UyKJ0ateSc-zgsJSos5s-uu7BcQzCacc=": "450857000000", - "HXIYGSrdBpa2BgLQh9dKBKZH62gAIjuxZTuK62RchDQ=": "384615000000", - "HXp7yyucubzG6cXc_5dubJhVoUcKssD1gKaZ99GNypQ=": "629375000000", - "HYFNfMlOLdlHlEqzs1u_Qo42nL-_t9D-2eAxcahEUtQ=": "1373149000000", - "HYRCaDBfj9Oj5AbAjqIC-ID97MgY-RVDm8pMu0cDtCs=": "419362000000", - "HY_xMhr2CJ0d9fh45gVlKKpW36QB96kvT9suOCI-CZw=": "452957000000", - "HYq5dje9BJ-5vTvNk_GJK1k84xDOJu8TC5Tu1eB470w=": "4999999000000", - "HZCKFgN6bXytZcDC5ADhLRhvVMnV3ii5Rn_K58dBezM=": "833346000000", - "HZKoQJmIlj47Y-JGW5kYvzFpxZeAXf5Mdt-IXgvGPZ8=": "475303000000", - "HZQC6U-6YjxGZJ3GPZWBXt-jO5iwyUyyjJIIR3Dblkk=": "384615000000", - "H_-vO-N5JJqU544aZ0cRYDI57l5fdgTFlRIDUwWtcV8=": "382805000000", - "H_ccpGmMnPfixCpa9aI7UQ2qj6z89wnSF198OcNt-eQ=": "456369000000", - "H_gsTWnpfhjIaFTadfrIYzfIVQ0xvPP_iZKC-yGGTGQ=": "1249999000000", - "H_ou03IwDQ-aSosUANH-_XGQuqH-Yk1U5KjZIxPS0NI=": "909090000000", - "Ha7KwGeTCAXrhw51RGjsVZxaX3878lowW3tiW_bWag4=": "388676000000", - "HaBdw63Te_bj_9ofVl74UzBck0hRQsBQXyc3CdY8et8=": "385506000000", - "HaUtusy-K7D5hpwun72AQlGjNHBQ2kIzxPjt3QZRV6w=": "456818000000", - "HaWj7FrPY226am8x3NE18FqDyFN84aKGUOXnPSL1jTs=": "454340000000", - "Hbeyc4PShsLvrWmSUvepFFHHNHs7QS83TzrUzi0YXA0=": "1990037000000", - "HcFwh3ZBo4TMhlbtkoJZz6qTCm5vpjksQp_U-2M06qI=": "404829000000", - "HcecG7uOO9PhJp1gMHBAvxmjyGkDbhuvCgWxWojfW44=": "751149000000", - "Hd1WcfSDXd9-n5opdiXvFpEGVhkjbaXIlzGV_ThwLjM=": "670374000000", - "HdF3-8057jQ6G7qc4NKg1Ey2ntTCkUaLX8pNT5VIvQs=": "989124000000", - "Hd_fJDgvu-47LC9Bb9S6CzxO4aIvTWsXwz-nEET0Ks4=": "2005096000000", - "HdfL93tV1trH5k1uBuFLcbULi1MYv3XDLrG9X2Pxgik=": "463053000000", - "HdwvCVi3XD4U46aRA9r7xWLy2BJfO8Q_BwEQdHSt8xs=": "398329000000", - "HdxwqcUamLcB4sJfzaeo8ZLPceJExYbf-1Vgcr5qlHk=": "384773000000", - "He-z4fxvs-ZmN9HuzUTnewYY1rkndEMVTiqb_Vat2Zc=": "1386434000000", - "He1fBbLw6kMsHRLJ2cvm2qp-5B9TJuM7wMe9SagXS_A=": "3849069000000", - "HeDWxYqUUhkqpt-W6hhVJTyOeXywPFYIP2eaSqNVN6U=": "3849006000000", - "HeTh9WJlFP7Jd_VxHNPufT1mzD7S2sVcV2lsuzb6HHw=": "4027719000000", - "Hf9LA3l6zHkEI8QB7MyaxjWAFB9TiSZK9YHyAnl0Hmk=": "431414000000", - "HfH3A-V5TxszP6Nv4F1jry7JXeam2NoJ8Re0Thf2P2k=": "408128000000", - "HfKu-3xeAVhS0RjmjxJxFRBNFJE27dMxUPSADyC0xAo=": "417631000000", - "HfZ_sIE9MQ0sHq-c0jIo_eYY8Wx7tFIhHyWJyTaqOUo=": "425636000000", - "HfbfwuU6l2dvf0i1HSXeK2jysbvWMk12L2bAqMIbOjs=": "429275000000", - "HgFzAIuz5uAyoXPclpho_7MEyp7cDt_J3uCE25_iw84=": "615384000000", - "HgJ8M2zDscB6bRXC4lMzMSJ2eMvDBUpw1AHeYdJd7cY=": "387467000000", - "HgL7EGHvmWNp8n2QUrLFv-ILRuswqACbkTwM2HRDQOU=": "384686000000", - "Hga111aeWCCrE2XmweZy2VROvvqUZPB1ufN1o_kI8w4=": "411085000000", - "HhJATWtX4FdAqweiXamUW_vpxR5Jy-uaG10VMuIP7xY=": "381319000000", - "Hhb05B2hRDk3pA-8p0E1nLkuxH5ZSkTnlmxXKFCDusE=": "763607000000", - "Hhz_k8W8Us2H8LUjNRDHDDyYtKqvDbYEf6s5-DeEcAY=": "416666000000", - "HiFo56STeyw-HyBlwkPs4Zyw85YawGKHIKfic_MYyms=": "382750000000", - "HiIWKe80dXJz5kGvi7-q4r004KyYkmKWhmj9POfKIHg=": "387727000000", - "HiOfYPQbnDKhtkrA1UP7JkobWgcc1FMk1IyhAo7R0ew=": "921463000000", - "Hil4e0Qf6ONp8bZoqp5oFslpJVN9EUuPmicy1hHK1OI=": "405218000000", - "HiqAgBJgITbLlswt28_CBpyxX3po9CoVZZPK_tdPBiQ=": "6435900000000", - "Hiu1VRDrg4vqiuW5o_XeunFyJN7HGPgF_PfsU1mNC0I=": "2487759000000", - "HiyffU5EkqOJqP9GcI29NmfSrgRWGV61NjG7VDC6cfs=": "454545000000", - "Hj5MvXV1GLJP537Lnh6Dz9EccDm6Y0moXZ84E0CQZOk=": "403213000000", - "HjMZ7knMEKtfZNU9j5UIhvZlrSpWnT6nV-lS9F9YRhU=": "4615323000000", - "HjfWKutcE7NuO590dkvrUGKPOTxw7Bg_7SwN8A2d1lo=": "384615000000", - "Hjl1OacHrhr9-_BqRbnVZyE83txJTk8leRZp0j7OlCY=": "635659000000", - "Hk7Vv8ZHQaKaMhbIXeZ5dCPUiu4zs0acJyoomUe4V9k=": "384615000000", - "Hke3NvnrnT586blZCMnQLWU0TkSNHAwc2oARUDx6XBc=": "1322112000000", - "Hkj-MbVnuQ6nsW7GsvraSc2aOB4HbJ69RWHYYp7RcXk=": "465854000000", - "HknX9eTW483W2Q1c0Eikl-8tSi-o_KtWSRQoLUNE-mE=": "423370000000", - "HlHPGP-HNw-2gwcgt5Hkdl1eFG41AJVFF3H90gotAIE=": "1564625000000", - "HlldK-B3LUl0C0AlwQxpAbcuCN8PqLgO5VxvOPaQEgY=": "760591000000", - "HmjwJJW-1QEih-6cpxljDopQRy4YbjMwBbC3Vgfk1tA=": "501411000000", - "Hms4Eo5lQBVULVZEADKLadXEy__r3VRPcCLrnY_Ep6o=": "378006000000", - "HmyjdV2zoMwkfoWgcn9RMz2gqk6dqisWBSVwe548hNY=": "692307000000", - "Hno-N8-4H35C34m2IPS1T31E4TW_VQzn-2SJqm_fNr8=": "12600500000000", - "HoOb89Jyny_H0kfLAt9RsdWVQfldet1VGZdHKK_YQMQ=": "1153557000000", - "HoTYStJIE89Uo9Jl-XM79OkU4HtGPpNZcPnaHW43GUA=": "416802000000", - "HodgaXxaYVAf47d2PC8M0ZDxT5pUa0pGl74ks_qnJhI=": "463594000000", - "HozpxVOtsIWm8jasxsDtUkqteC9v3U5zJHEtSwrm0-8=": "666114000000", - "HpIYjgHbvHXM06GldaZAYzi3hXlue-LwUF1oq1QDh_0=": "405197000000", - "HpNTSCa2vW2vfjBx6ZdS-al64uQt2MduTrA3iH4u9FM=": "351471000000", - "HpQTfklAl381AivNQfKC8o3-w0J89yRjMTc8nuFKiw4=": "715494000000", - "HqCkL6UELVKCQSV73ULbJJrDTZaIZs8tMDR1zGFczpM=": "466542000000", - "HqERO1sXyqqlKZhPuyy4jEziVGio246fyXzg-CxRYLQ=": "2272727000000", - "HqFdzZLLJmBUA8-Dcn5d_A-qlD5R2uNPvaWYX-aWD-I=": "450965000000", - "HqR9lAfFookvQ4-xP3hlUKHUnn8creIi90GCt3fgXkM=": "1839281000000", - "HqYga8kXPlZg8UUaxxrtM0oAsaTW_HEvP5nq9uYJ_6s=": "578522000000", - "Hqgd4pJdxyZT9GawxP8g48Y0P0Zs8aeFUy6KbIGaUR8=": "1567272000000", - "HqpxsPdvp20a_kVFjzZj2FEieVoIshiWi6OZBXbwBNc=": "384615000000", - "HqstOTqTziFWn1NX8PzbfMctPfJoYaDNBePtoGbAA1Y=": "424045000000", - "Hr9JUW9GQAWBmBm5BSQUd-7HzYB91xZcalYg-c9si68=": "384615000000", - "Hr_QWbc_60kQLmQJprCvtH7w3J2hWgDeu4HDj4XzqSc=": "560165000000", - "HrvDsMjt1Jhff54id7yat8HUrve12CQ59qObz3Vbvk8=": "769104000000", - "HsN00PIFGvuZ5NOkC8Wy5npZUzsj4WQmVoi47EzuDok=": "407233000000", - "HtQNrFyXQgNGjJ75RIYh0XfSbn11r9ZCHggHm4-KlMU=": "378319000000", - "HtiwVvWRE0AGXVqGcU_HgwLH2KiJ7loLt1qjFJ3x3Gw=": "681199000000", - "HtuJHyH6cXyMV2PTOdXDktgW8dM4Rd5pja6vvAW3hx8=": "11578327000000", - "Hun3D9gSCWpnZBeg0gKi5rbIz6Dd4nrDIJvUrPidUKM=": "377868000000", - "Huy5X194CZqa9xjvSJvsMwcIogGCu9wFk3CY7EmEDDY=": "1908173000000", - "HvWW9DbHumEkQvnqemR27kN3dts0UFGWZ6OYewBsn9E=": "379344000000", - "HvYq4YzitW7VocHKfCZHbcV70CSfQjObimqVqD6Xi3U=": "366327000000", - "Hvo_UgMGwNbOpKJTnwhMb1HwZ8drOAO48JRTCt8vEdw=": "895161000000", - "HvqpEFMqJHLpzWYY--KlPU-ZS6fS45G1Mr1BiwazZ2Q=": "3846153000000", - "Hw4kfYTJHPwwIU-pcqvWTXraGMBlAeK5AC91RFTaZE4=": "1536806000000", - "HwIqkmAwk2Ooc77FXjbdcjvZY67MIJCbSAgSfHgz08Q=": "769128000000", - "HwTE5dMilSmhKGfo38QnHF9DINMMZf1Fq_obFnFGlsQ=": "1156532000000", - "HwUA-R9yhuHjbTBOO-__XQ9RW79kQLTyD2XcJ5Pti4Q=": "415861000000", - "Hw_0gIo3k0G3XuxkXzQHrq2MnbDmRZzsaiY9yv2xTR0=": "433628000000", - "HwvLBXZFFCUPqoslZAOxDe432bRDiUxu4AAaVoW_KBk=": "1126724000000", - "HwvVU7778HKSn4I7bu1v-97MiPAXl2Gt49q27-44xIA=": "387414000000", - "HxCKk2_QMqvNh0s7zExl5ymdp6AZ1OGahZFCwpNS-WM=": "1134771000000", - "Hxa2bs3Ygl7P49jdFs4NVej7Eiun8cjH2vEUIOWD4SQ=": "390084000000", - "HxlyxeSLrk-xe19GQNI-1JoguOC22t1os78Xb8ILjmc=": "2102612000000", - "HxseceJSUwUJquUxBxky0g825SwwbOdAWyM-HITDBbc=": "392981000000", - "Hy6D76MK15JGzIKpRCgC-JSxO-V3j3aY5kX5PGhnVyE=": "459512000000", - "HyNzSM28OdsywGBPBvqkawlhBQ7bkDn8EeKG4tqyu0c=": "441977000000", - "HyfHfLS8qMLhdbTjX1KudyXTegSnY__F6z4GPaOFUl8=": "454545000000", - "HzLaBga3ECpBEqnqrMBgq_H8tLth_rQIfVWlhSLdUdo=": "662348000000", - "Hzgisylk8Lgyuahx9dzn1KMu_4nFrcRaPBAnCBVLGF4=": "2422627000000", - "I-6IudnQPJOeMjlD3O9-Q3EU5D_UWkCo8o5pcNGlBHA=": "908730000000", - "I-FI9CKF36oHIOL8pFv4bfi9f1HEMHSJViA1Qli7H4Q=": "1590909000000", - "I-_qvfCEwF2dKNnlc4VS_pxMYJu8tp8niZTEAPs3nBc=": "459136000000", - "I0SFhixMM5hf5JIYqU4A2fQoeusL8ykidX_2DMblGZE=": "1540895000000", - "I0uXfJzfWjD8DBcih45ZqEgPAd2NUNfSboF-G0ssOmc=": "1153846000000", - "I1kVHq_8dqgpYq5CkRGLxzTOySbsSLCdIXhs7wMXAzU=": "624999000000", - "I1krJqsN77kCkCWnz2RryHFrnXYxPArw0tPjLNG-_no=": "376906000000", - "I1xWN_4YQ_forBUfKuKbWAbhGsq6c-JT5HghSn3bx7E=": "1673658000000", - "I2LAFFy94pOI7ODzlX2iVkhMu7H7W4_t9N0CP-l7SJg=": "351050000000", - "I2SjH6GDVthBZK3MlU7wtWU55VG6d7GC3Uaa6Pxy378=": "1751443000000", - "I2XdeLuOcO9Tzb8aIpikWpERYevPbNQPf5cuCXdNjYI=": "1927537000000", - "I3TkKXCRFSw25qxSlo3J3n5gjFZoSHd2LOXvfloKbaE=": "833333000000", - "I3VsvQjM-Qc8tWvVgzkqg4BlislW3MGbuMj6365IT0s=": "393359000000", - "I3qvnk35ALeF0LLR4OdZFU1GFtFMGm38azPFgfUa5cg=": "423370000000", - "I44ST6MRGNhtUwiDsT0ROPY8IgkEr_WqjnYSTkOfK-I=": "454545000000", - "I4BHblyRlCPoyFei18LObg0UIFAkGo0qbzz1T_2GGdQ=": "615577000000", - "I4H1wine60fiO8JmRFB_RSRJSL9sJajlFbhbNSYF03E=": "5728648000000", - "I4dzQYTD5vO4SGPfN13YJWHt6PfdF1QLb_NOr6x3Fcw=": "2084122000000", - "I4idcVzsARhYhU2A0AEPrj7DVay4ksh88uRNXiSqpeo=": "492388000000", - "I4wQbgEuJt5R6WAGntUuff3OFbkeXmKhvMrRe6Br7lU=": "382410000000", - "I54Glvclkg2TQLCLHSeOp2QlnuVdGYuv8O0m4DHUQbI=": "454162000000", - "I5VLqGKtnaJ-SJMUu2FsQ3ZBVvHSgX3LGJnp3rGepKw=": "416673000000", - "I5bjwEuso25oE_IcciXvMvoSi-PLYtULVMKLFCxlN84=": "9611674000000", - "I5e-dIkHIrN4YPkYWdqrjENjWzl43aOTO_6U3JMsmX4=": "456839000000", - "I61OG02ad7UDogerkmLfZhgn4iJ67NIS7lGtYRomCk4=": "5008092000000", - "I64ZC0KSzC1GpIycAldu_pYUitVB4q38wzsx6QqabiQ=": "961538000000", - "I6DL0gVX2ONVJ7cVbl9Ibo16rox94sZEK50DAGU9Y0w=": "900960000000", - "I6KrsS_Sob8QuruJs81-uwZ4sgVW7e5z80O-xc6L2_s=": "409453000000", - "I6Pa4yMeEInoxBDiiJI_SbAi_NxLmfYjHT1mgJTOnUc=": "615895000000", - "I6SGXjnbCJ5rQISvaglRQTUzXNAiRByBPPyyqEs1YHk=": "906955000000", - "I6YJXv4AbAbvB8DSaqD8Jcar7aKDSQjBdfqUpzksmgc=": "385510000000", - "I6_LCFy3NwwZiEk6r3fN5dsV9MbUyArLnFLGqC-wVIo=": "20083904000000", - "I6mlqpqr-c2BWMolwPK-5cAMP1fAH0gaQ54hxC-DFYs=": "384615000000", - "I6mo9uTmdfTM0mk0UhFnGZYpys3cq3Sg5vMK65w2giI=": "783595000000", - "I73HvhjO7Id8XzllDGUXghFaCpQ2hQniYzknXUrrmaE=": "750896000000", - "I740M5_Bw9CdQX2ABvdy4NH2hl-omNIRUyukNBC6TYw=": "454545000000", - "I7Wh1yiq0s0alFc_-m9kc4VKJ9RVn46tB2-gtvqnh1E=": "5664988000000", - "I7YiKvFrxeCO9vpeo4tB-i5BBuYm5gMosDxbm9XBTe8=": "818220000000", - "I7tENbkHnos3p_wPILic0K0W74VZj2LdEcjKo2MkpS8=": "491921000000", - "I89PIDWvA9Yo8VvyH9fXlBXxOxQuDVT2qXnEDVMvrgI=": "1363636000000", - "I8NgMB15lyIrb52hNH6pKTmLZ20V_prDlqAG4IBw9wg=": "1730091000000", - "I98fRcVQNttlW34Famai95d6UYp5MQMm3U7pFVileWs=": "411085000000", - "I9GVLBHntgBTi2T7dllktn2hiKrUnf-ZwChjqZh8mNg=": "1879627000000", - "IA_XM06SITHzXy4c8q0KU0l5zrfxJelSNlxyxoziVik=": "384649000000", - "IAnkglXALzKL3fgcLC1HoAhDe1VGxKX4nQoLZaY2PqQ=": "2246710000000", - "IAxh5oKNQSJ6YgD9gcx2NJudbcU0_uJyhXBRHQNn-c4=": "758694000000", - "IBGHhLSJ-FJdTNCOFomvJI-90nfiz2PEOJBHdrClCn4=": "2636176000000", - "IBMCVam22QJPc0Go0FSYFLkaYtLsNPdgpOpL-kbiZag=": "1139862000000", - "IBtHgsAAW2Pk8IK1GeSHErSjjVmKZ2GVtwDmG_T_OKo=": "384615000000", - "IC-h9zVdvMl_gEe3x5rDs_Qk2G2QeeNSxkkvnUhioSo=": "583604000000", - "IC8fZFVGmWYxtBQRKzUbBSEsHgyyHzo1ONFQeYUUVRA=": "502779000000", - "ICAyQdXMi2AmapDmHm7FiLutLaFxfJyNPm-znmCDlAg=": "385136000000", - "ICIAWzWrGlzrxzyCBs45NKauSWssotVCFQtbCo-mduE=": "763439000000", - "ICcRpdBqhYworl_E3X4BuwiF-_hHONDJ3TVwM4ETWaE=": "418059000000", - "ICgCl4lKwAkY5Y93MgwX9TxZ-7Lg5zx1Z9VTLlSfm8U=": "388637000000", - "ICtU954XvDCPGKiIGJxDlUP8577zBQ-2CwFn0Z5ZxyE=": "833347000000", - "IE5BmZLMLf_81d6uYdAF8_aOSPAeDfvPE5ogSjqljhs=": "684778000000", - "IE9iFH4Dh3nyhIkbrb_r8RzKGVG5TxTJY6K4kqa-VWA=": "419695000000", - "IEAxX6w_jTlqnKTXSXR7J69EvVoJwjm-JJRLh8Q2RNs=": "390817000000", - "IEeBq07mzfA1jVBqmSNZ9eXbFvDT-WJLuXVfN-ks41A=": "416666000000", - "IEiU7aCSfvrY2cZ1X9Z9TzyLMmyE6nZ5UYZ3hjpla2k=": "2545614000000", - "IEx7hmJ0x0Nl3PsP3rEl3ckMnuJGi-lSCrRyRh9J1Hw=": "463745000000", - "IFHGSh5z7kPFKBeWCcsf1XpnQbfo3CtQrfKxOjQs-8s=": "453319000000", - "IFv9mfeoszwLGZB0D6B3ssypvjobdKFiDnt7WlscvtY=": "2037685000000", - "IG6ltPe3eT5avOm7PTJlvJLT8KggyWu6G7Y8V5Fy44g=": "383592000000", - "IGCcNsd5mhkww4gBaxjJl80K3DWLZ60MwUyUQpO8SDo=": "771834000000", - "IGOSgCFzVcjpJdPGoTvOS1EWC7fBvdTC1qlz53606vQ=": "416699000000", - "IGc04CwIB6097MOifDo9CeQBhOPlMxofnxGVEucOKVA=": "388594000000", - "IGxjbR8_HLjJpwGjZQaZflcCesuqMHKmX0FYLeuDEro=": "384615000000", - "IGyKtX_tdHJ4l69lAcgIudpF7d_cZZWcYnUpZGFQv1E=": "696661000000", - "IHZp9G-MWhrcCuKiLo1kHKq3TztmLVOrn0lU6mEFkA8=": "385834000000", - "IHfP44vuhc8PmXiiPF2l0K21K9kyjNppYBblaQ-5uUk=": "2085246000000", - "II34TcDLD1pPl3Ul3fmhNKIw1703FRuVavVA8LtL-zU=": "407121000000", - "IImnPzmoWHK8zOJ_FATHl8JeUuUlXNTyHZ8DcID2rrk=": "1923076000000", - "IJKWWrDurjrvw7JXDQ96EnvSX2NRTgnG3iqzqfZILbA=": "1355296000000", - "IJXRjP7Fiu1zDihZzET2bMpfQbmWZ-HgKc48t5wcOxw=": "381635000000", - "IJjhB5VWlsM8mLvST-515l-ycyVlmQaFiwJd2ec_tfY=": "1516406000000", - "IKGJ7xQzwMgcOisSftrYs6MGiIZBKhI8uwEmDyQgFL0=": "394336000000", - "IKKMYwuho0Re6U7fwvhCAQhhkhbZXvyT3RCv3rcG8dY=": "425004000000", - "IKdUqp--LtLXw7tXrUKHIfQGaJ-Q08GECvBxzJ04c2U=": "544142000000", - "IKwTvQ9KRDFuURWid4OQOzhY5diWm3p8HwBhVmnKwjQ=": "384615000000", - "ILSXASFimJ0mnHkg0vlze0hJr3LMracEmVUhUr2L-wU=": "2739611000000", - "IMPWsHcmOYXcRBjAOsjgUq8xTDtb_UnelxLAuOobsEc=": "769230000000", - "IMW52F_AWZVriSjqTEzvd4pW6Si3nELQO-KpyZ1i-7E=": "384615000000", - "IMZf9DZJygtV_xzz8snpENteEhY8e0rBW7Ebv7lXY_c=": "4507754000000", - "IMfqJ9gw9YAf0KSLImqiMzNE_OP84XImlU4W8yOxdqM=": "384615000000", - "IN-PENfqWh-EsZpr5yZyupktL1Zaiz8gAov3pNoFxqs=": "385505000000", - "IN8a9NpZIDvMyGvhX4eHzP84DMMQM-ajQuj2Cu3Hqnw=": "470370000000", - "INGs9Sg5V_ndgzlO8v0IRqGosiX1vynnmuHzBE-eOwU=": "1249983000000", - "IN_nOlcHNMXQELnFy0fv6DLW96BwxR9hdb0b4NYA2zc=": "1249999000000", - "INsFWTps3eeKFsJgZX-ODO6fIaDIrOIv0P2k8kBhcG0=": "1269928000000", - "INzGjf1WR9nguuZkHC53syJJR04UumDKq0ipsQ94Tlg=": "385507000000", - "IOnzA_cVx7EpTabQKUyxHjl6AAVjQgtXAHrml9kTAY0=": "648033000000", - "IQ_3tf-vg3XjpFoNiFEceU8nCDqN48vaJ09TQUEy_-o=": "3783416000000", - "IQ_KTcKEEBwYu_aJmD1nySt95wNazC-hXUYabXB4ZhE=": "2069592000000", - "IQgifeMzACoQK6j3mSoUJsLbnM7LhvJqrI-wM4aYB1c=": "411085000000", - "IQqhZyhbEub86Fwzb7HSDB14f1wmNt56iLI41zI4Y30=": "464666000000", - "IQwRHN2NjyWIZLrIQIxVzti2Swir4x1VyriftFKqGhI=": "421446000000", - "IRAMwx6r3H1GWx3DH8sNKe0zsiZkG7zF5HaeR-Or5QQ=": "2038461000000", - "IRMl9Bqm2XqR6Go-78eDI94uZKkJS6k8TlYGAwmPyGk=": "416666000000", - "IRumBL3A8d4I2l8enoG3RIayBMJMZR7HigR2Zoj_1vM=": "384564000000", - "IRwqkFopaAyDayT7U29iRrRcu5SJOnBoa8IaMpsVjbo=": "1628513000000", - "ISFE3IE6wJg2Fz_SZBRMs5CqzArFzhKPU0kPAJQkf7Q=": "384604000000", - "ISirBdyLGPIxAOOg427e3f-MrV1CGP0ozvyqI5rdQEU=": "634433000000", - "ISu-H2v2_fZZLMKJIdJQyNSK7_E7xdNefml3MU72CNc=": "397332000000", - "ITYUXM-Fu1jLE1I6X-cSH7pHAjXLBW_2XZslvSmPtE0=": "381476000000", - "ITadb377bMnZyWWfXgX1FDp4Tl5gT2xo_n9tgNB9MU0=": "387632000000", - "ITvbS6YA2QwrARIru6r8UPhgSr1b_qzV-8LoqdW8bM8=": "384615000000", - "IUScUbZzHtRSHukaGZflfRDvf1lK6tBdg_mTeYldKn4=": "452076000000", - "IUlIdp8tjmt_3qv6ZoD8-3aNnTSvFhhCNMNP7fdefPM=": "1141815000000", - "IUws2i9Y5LegazZPrQ--lb7Z6aZSoBEejSGRAWKYkBU=": "830494000000", - "IV-JZxgeEDIXkjnr70es2dzSYRyGiq9dM-_ghTtQQJw=": "378137000000", - "IVDPR4VttxPXbudCY_E-RoNoQs0kYNqfyiBWOgQIRtc=": "380846000000", - "IVFNtlyGNjzyTkUxdjmfHQqlSFWbNHMtP_TXajWJxxQ=": "452425000000", - "IVYWIOsxcT_mzMpeTUICkcUN5-1_ehhWFDzcq0P9GcU=": "1691557000000", - "IVnO62CTIeE06SofOaepm7oLM63xiIiqLGUoOQu2_eg=": "381466000000", - "IWX-rrfeWY884QPvu7CQ1LsaQPX5xMtbkjbTnOW337U=": "416666000000", - "IWf5jABTs1PudxEy9fJCGzvHaM7LThJEkb_5r8lFEs8=": "7692307000000", - "IWm57UN9G4Ztpz2dlo4Q4_EjwVLy-QspurfctvDnYIQ=": "906393000000", - "IX9AV1UXvhKrqgVSWFvZ0wDEBAZwZyr3WjZ_Uspk-zI=": "395125000000", - "IXLwl9QCTW_8NmpFEsNH6Vw1g3C_LnaFFoN2PtPU5OY=": "1877873000000", - "IXSML5P96fBYukh0CYtbYt_T5nX9c_Pbcs0CNgEYuP4=": "378426000000", - "IXU-jH1EjmsJij1cKsgi-6XASrtIAZkMQj7vvGeEQm0=": "411085000000", - "IXWD8f5-yO4jeScdFmkc1Mzy5Af1k4YQS0Prv_GmnnI=": "763607000000", - "IXsceKE3o0zTEtNGp_GL3mIrljQxvTULhRvknPl6rkQ=": "10158750000000", - "IY2blZQhQloTs6SacOWo57BPweDwV34RGrAvudyg5a8=": "378614000000", - "IY6WYYprU9haSC_KKssixZXtOI35DvqijfwT7oyUB_g=": "445610000000", - "IY8R42UnVdvrRoGbvK2aE9zZK2ljFMat_-tk5Yxcx28=": "3862170000000", - "IYQK2kflfCqj1Ul6ep0hg0NV5-ZckHjYyAjjd9Ldesc=": "403850000000", - "IYu3R6J3rUItbS9CSTMMWyo_CfdZfOqWetYJctQSFBs=": "644301000000", - "IZVp-ZdJXPhOtp0_4bp92sSnHVzcdZhnd_fAl8Wegqg=": "2020476000000", - "IZg9ICrG65BfuS8gsQqmdxmGqjBBjYcf1mMzpdQRkxg=": "384620000000", - "IZpet8PEsL_luOi5lim8fAIGFaFL5u7j6GIv1-nyLkY=": "1538461000000", - "I_5wNWVrXfHJbNwRcOm4_ddtAJG1MbG2NIyCk2mfBxw=": "805584000000", - "I_8V_hntQUXcOmGzbxhustCTRG1X2dzRU2TMNLVPZW8=": "2276558000000", - "I_yKg3xYvQ0-RkO2AWoqektfum6_GdUEmMWXCgtukFg=": "3846153000000", - "IaADipSRdOQO4g6M6lw4j-ZgSd2eum8hoeTMt5i06tw=": "910712000000", - "Iazl_lctLi13R8tDDBuAdVRu5VFn5WUt9wsqA5h_2XA=": "462839000000", - "IbD3HQGetR5QdqDLKVvyLO1ZVaK-F5Hwl5ztGQRd-PE=": "385508000000", - "IbK6XD3cjUrZF07vrzx_8f0fPFsx5GFBHc7MQiahWGU=": "2067697000000", - "IbLShGcO1IIv_D3tz9Dolvosb-VZpXXqXITkGt99VtM=": "1233257000000", - "IbZFduVpOGPvEAJrRZrVSIC37gApes2UJaEC9Oy11NY=": "416673000000", - "IcamujT4tGZlrk4jKw9I7SN4srOY3dQubn1scJc9mA4=": "383865000000", - "Icbmsph4KeCleUaDXObYX9GdrSqkJz8D_dRj221ld9U=": "6328727000000", - "IdVrVlYtMlBXjdO7OKW-vrmFcqUgVndLDNo_MjV9LEY=": "498408000000", - "IdilLefLmMec35XMOsjqDSibUfftvaTKSOgCbTpm_oQ=": "415988000000", - "IdwFPTxgIwYmRL4U0vxkYkWNLb3wFdrRxRulM4jPoMY=": "1410471000000", - "IeGWKVgcVxdBbi2vA5l6BeEcQRcgv0_YV8DoEo0hUZQ=": "4710307000000", - "IeKJgCXhQdPbvrBh8EBE_Jj7TEWwv__hdUkeaOMgQSE=": "3085593000000", - "IeVQo_KL5L8sIjlBCoHD7pdUlQTQXUTGtRfsGi_VEvg=": "4156209000000", - "IekuvWQb9b2eL5M2kkPzAOzINOoO52qwPcSAQQmQyqY=": "413562000000", - "IfEaYj_AOQMdfDq97utw4sR0do8p5jZQh-4PYtogDmE=": "458333000000", - "IfHXefoQy8SvwACe8-kZdZdY3ByzbHT7Tbrk1-jPcvw=": "384615000000", - "IfV4HtCT7vrhwwKbbwb2z6Ex3o_HO4VxT8PKgeIqcZA=": "381839000000", - "IfXPj5YvkP_w2hkFlRkvyY2dbSu0GBuz086EUCkiFPM=": "499999000000", - "IfrbiEGrTuhMBkEHZcXj1L1vc8HTwudHCFUOcMPVrC4=": "378010000000", - "IfviWrrkMGZsi4MoijPZ520A4syZjfGlK9GXCNGA4JY=": "794692000000", - "IgIKrWJGBzTtc3j19pYczfmpsy-kl5reFpFO6rTTPGM=": "383985000000", - "IgJ_U2S7QyhFVcR_-UBunk4U_WFv0vN35SjCfS5rdUM=": "5206939000000", - "IgNigPFhXNudZFzPlX8t_atvxWQI_ARCuqHILb1XMKM=": "1250944000000", - "IgfJNIq0NWj0C-XsRoPPwsyMeL3npsr5jFOS8mA1yrw=": "469349000000", - "IgoL_dzEyG1ElJtjyVYlf_KsIRLLaOW0dsxng3NcIQg=": "2501202000000", - "IgsrwyeyonmOL3gyyF4PzYfKTtEMSMQAcY-_kz729t0=": "469468000000", - "Ih9u-l-IJKPrsDQVAh66Fs9DSeVt6yh4GFIVEcJzoRg=": "416666000000", - "IhAkaQY56fFV866foeTHdrxr04u30kWTlqSn-4bPGuo=": "4417691000000", - "Ii8ptdJojhllbbO-qCHbDDX9JKBS_ZsIVm4YKKkqAqA=": "423081000000", - "IiCtt01JU9gx1cgF5sEpgBF6YVZxJ6ToU60BQzYau24=": "1588664000000", - "IiHZ0oPMi8t_AJ18PXdHuj_A8evphDumKsEJrKVVzKg=": "502393000000", - "Ij-84F7kbel6H3skvpyjKsyvQVgh16TtmsWWefO7L_k=": "1941362000000", - "IjLBuR7KJivJ6XznpsrXUNS-ybwLV4mCX7WB3XorVJw=": "736348000000", - "IjoKhtfGJgP362-FOZKZl1F904SusBpaJbfgbHhCnoQ=": "467438000000", - "IksZDGI4wPXGL5GrL0YsBIdN9P5AIkOoj1AIUBYBYJQ=": "463789000000", - "IkzR9_7bwYIp8IWO4tkEZe4cmNUj6u8htdHQIktVjBA=": "298474000000", - "IlDEsrdjtRHsJnMaEhm9YHfKs0tchbN0gzuaBGyRivU=": "419845000000", - "IlGjuW14g8hmOr65ZN2uWcIPVtQCqoQjZy206LdjZgU=": "377783000000", - "IlUbJo27kP-2ujshBKoD_cGeFd5CI1Cx5P6n1B5gTF0=": "757315000000", - "IldvflRDaup8E-BNmRZBId8-Vo6kGgWa-1PR7mukDp4=": "387257000000", - "IlqcetpWSkx87pOmWgeq4Hx9nvCNC4shJN_K9TRnC5U=": "4621453000000", - "Im-DfCvkINGOms_LLYo7Z8ei_O59XQDSWpn1-TsCWaI=": "411085000000", - "ImI1PRqT1-yIUc9Rnk_SYeqec2K1w4ZIpLco0e-hej8=": "4571314000000", - "ImL0NVRS1VNpOK3Z_QbegK6QGGFa5kqr1LoyfVHgvDE=": "566977000000", - "ImPa71u1yV18bFnws1j9ufq-dcyuVPNnLkyjnk7uulo=": "385505000000", - "ImUneXxockPOtvNyJSeT7V80GXuu-BGImtcQa_WdUXY=": "421476000000", - "Imfia-pJKwLuSlFTDVsXkED1Cg-ySE65_xq8IIJ7SXw=": "377408000000", - "Imnc9TYWkYNDNcxmyuIi1EQT05omh7Kys3ZcdZBcZ4I=": "1136363000000", - "InL_P3tvi0RlK-2kHWByinegxhXwUPfHuIsVYfPQjTU=": "423004000000", - "Io02iWCk0uG83EtvpIQHtkL9pFTyqgzLNBT9qAStC4c=": "828710000000", - "IoBYpmGW9RdJVz5xPXjsBD3H07UlbFBBCuQmVGAzXlI=": "415629000000", - "IoSj0I_S-Oy6PLXeyfVLtmtAWBGByce511MmMWE29hs=": "507053000000", - "Io_NcIDDhsgmRJya10hF1rzh3bTV4UdA6wPg3BOrKaQ=": "3846153000000", - "IoxLA5-tnmpckfe8q5mkh4Y29rR-phm0qDvaq_ql1HM=": "2672504000000", - "IozOGFSj7qUmQEUvrp-7LjQPNjLXDW5GTQkRjlPm2vc=": "2307692000000", - "IpL0a0BMFqBWLpOtMbmDSsmSvnmVcpJ1_gA8kji2MYg=": "417629000000", - "IpoHDbFCOei21nY08LFk3pMHuLM-BMmzFROef_av9iA=": "8401934000000", - "Iq5YvnvXmxhr9DAWqGsIiSySwMxb00q-hvuLEA2UBRE=": "473265000000", - "IqNxwTWFVQuCev49mO8PUphbIoATR8QFExaSSTjXPJs=": "384615000000", - "Iqq59uQvKjnwimG1cSk-VKSvsGYO_jOb1GfZONPoKNM=": "411085000000", - "IquH4FgCX1eQwInwoK1WLYOQ9IAyS0_p1GzUjWxhJpQ=": "432644000000", - "Ir5yO1Bi5sOo3FQUjRAVDTx9t52AW_fF7_xUtd9fEFw=": "3846153000000", - "IrF9Gq0rlDS_3yiqAleebn3hWiWaEd8RVlriepe8WRg=": "2270245000000", - "IrPcuUp17RQ6BQg5bB_f_7B-ufBnJzSEMyRpDLhUeBM=": "817169000000", - "IrZO5BI6hBK7i8r0UxVJYy5nY213ne56yRymu-yZ3iI=": "464704000000", - "IrwzQgOLsk7VmpUtOTHZzqzfD9_1ZnaWYk_yPiqHci0=": "385505000000", - "Is6Br4ovJ7vggYTPnVrbKjAjdUgm_i_3ZbC3wfRuvx4=": "386541000000", - "IsBNkWFvLURrdIEy7xFNOcF6Nzd82cUvqQ5lS-1VLJM=": "458460000000", - "IsZL2pC_SrUg3hPqdZ2HPcne95QYwQwP6TRHQxIAz3Y=": "3466848000000", - "ItS7IXJFDm5jAaTN6diHHMTqMg_qmS0x_CAKnwpJIxg=": "382396000000", - "It_GQAsF7vsOH35-viWA4w81G1tpYv0LIs0vf76A5w4=": "602997000000", - "Itr9LT5m0VwmDmO5JAE8LChrCmVSK94yNsP-ld4Qcfo=": "1619500000000", - "IuOsQE-97GHj_lRUA9gBakrxM_0kOdpuYfQ4I4Dubn8=": "407808000000", - "IuVaMbl5JSItF061RYfr6cRQMWxhPXQY36CM3dMKNx0=": "4012794000000", - "IvDOcM3AEhp6CokGTZ6xSNkqqcFNMwz9jWnUIq0Jvfk=": "416666000000", - "IvFDS4YuBKBVtaIrIr54Jdqyd0jgfBPaZbEFwpr8pj0=": "1190856000000", - "IvVSWuflSdWt0EGeS0NdyXTUzI1MXJwUSfCUVM1LDQs=": "4175068000000", - "Ivh37o-ffSOJ4EmhfXP6RYKmSJWUrMq_v-zj5Xr9FGY=": "1222508000000", - "Ivzi1uVuPNzTa0ucIc2yPuXR465Td1i-7rCqdrApb8k=": "384615000000", - "Iw-9Qlm46XxFK3FGhX05R4b0qj_5DpLcrrKtX1RxL_g=": "491199000000", - "IwCGAAYNRaX6q8NgHqBnYOjqh9e0q7WC0Zy5SgaMvzk=": "3252778000000", - "Iw_TPgkqH25asiXc6H1lVBcHwZ0VKI7xlObIsRVNlPQ=": "384615000000", - "IwiFUuLRvXH0Cnf8wvFOki5ubqUDYcAcpakbvZdR5GY=": "384615000000", - "Ix3GZpPhhfb9VgSeahexHFiPw7AkACzHbJKDxws4MKo=": "385507000000", - "IxAbipgwjDb6S57ma3tuPHK9w5JKcUWsEBHsWzw4yvY=": "1153846000000", - "IxQUN2BiIDmmig3ZVyToWvFS2yQVyDBB4JWLt7VTW78=": "1250021000000", - "IxW9Y0ElbVCd9NiKhPdzlKOAajlHMsHc-5d9Csl5VkY=": "416666000000", - "Ixj3aih0vuTBt0lV1WRrwIWZUns8MXfzMjSa5bo5uUI=": "679157000000", - "IxseYG2_o4W-ljv3pqfaKOrRN9mIHLrnMnB2SM53Qjs=": "831263000000", - "Ixv5H3pyG2JstP_uSsO8r-hMC3STJuuEBvS27gAD-hc=": "461259000000", - "Iy219Wluw2MThbgO53s6_yzddL7DAHHHiOxhbwjRmBw=": "381836000000", - "IyAfO8YiUh7OtJA_lpTLjPoTU7RGHAeD-cPhIUjNn-k=": "388025000000", - "Iyewu1PczxlpCOMv5qDKFjgv9bswewQY_rA1Q-mPO0Y=": "466898000000", - "IyuJ6E33n8iUvd0hRPjFI-rKfnmwyfV_Nh5glOWb_RM=": "422196000000", - "Iz-QBfrb3KOOOd31c0jhO59haPT42YUA6G5ODhBZyAE=": "912791000000", - "IzCK1FzgHNQztllLF_JbuuoCaw8RtPsZK7Rwl9BogwY=": "381767000000", - "IzRguX98AUaKvuzPpqyKcHupFODbMmRiCuvYVpmsK04=": "473331000000", - "Izgm2WGeCnoUsh3vjni6dGzObU106oxGNALaoSqjfYY=": "465509000000", - "J-4kOT-Y4ybjyxlIdIjRwXY1N9ygyv6uOyC9YRjAKN0=": "499278000000", - "J-dJ13hcbJRWpM8YFX5_n4AIolDrCKcPjois2385Cvo=": "8221717000000", - "J-xCnLYZmYJUpM1LG5Al-_Ogd1dLxFRj-6PWbIGlhkM=": "385029000000", - "J02z7b1IQtHDpYy9O4UTqqXnC8zgQwLnGpBzGGh2AmA=": "8431026000000", - "J05PlmFNKH-rgOoIM-N1P1oKewqq0iWBgZ-jXl31d4Y=": "379928000000", - "J0ByhgHkWxPelnZbOxlA19Tsia1yyTwVYiF1i3TjaXY=": "5878654000000", - "J0eAplX8T5-QcmiXe2GIJTqIs3ADe4m4VqWsZevRLuw=": "499999000000", - "J1rLn1HlLWx_z7PWhvjtP6s3wZStg7RUqxQ5fQW5CrI=": "461153000000", - "J1taqJEZedbCpJoRrfa7FsgTjc1gtIEqP49AnDL0GGE=": "377509000000", - "J2ImgA-J0fVBDcCT5QfwBuwrgdwCTbq2O--O3gJQXUk=": "1881780000000", - "J2JkAF6l9VVavNIaQwt9Gfi8jF47efaa6DRSwMv8Wsc=": "462146000000", - "J2M9dChW85uIk65z2x5Zp6CdlbUuiYgX9wmEM1AJFg0=": "832394000000", - "J2RBm1sXmKeXW0MpNXW30By8S7YS1oUuESV_N3mnOVM=": "453928000000", - "J2bFSCyHPiswM6NRFt1p5R2qn4lN3TIx8HR8RZfCPLo=": "1154066000000", - "J2ssEMctYPfG1yzdApC5j5IYKbBGySo07bjRmc9k4Fo=": "2107971000000", - "J372_412xFSEYqVC9o0oLm0PZLDhsECiuBiA7ekbhKk=": "417589000000", - "J3EX3xqmH86149vPUFLsjUmCbflPjSk4ykMEZtdpVp0=": "384615000000", - "J3dggt0a5VOk1ljZ6lYREa_3E6xCGth8iVVLLxbDwxQ=": "460655000000", - "J41mPVhPkwoODy9laXQt-1kLZU-peFN4l2fK89tek3k=": "415672000000", - "J49qlQF3_5R2kz68ZBjSzvIDznkhYFBVaM1sPYoK2tQ=": "499094000000", - "J4gDhuknTT_E3QfgCkUTBDqIR2FVwYFMLeiMK33db1s=": "8355605000000", - "J5CvsPb-4TA3SdtKa9RhGQZQHzDQVtqHR77zyvB7Abw=": "379928000000", - "J63Q0rIotgdfdWGjhBs1Gqd3fjiCPlwVDd0wC2mLKSY=": "705863000000", - "J6KaEoKBS9ZfQ-nyTMteASKU16DAhJnrUY0hodRz41s=": "379476000000", - "J6qMLDpUr-Rsx0YnNMp801287585fX9ksoEqWgfZFjA=": "468609000000", - "J6roJ2Jd_p-jcJYaN9eAhUTv63CzTOm9aw_ozUe6V2g=": "477575000000", - "J6wwncHgTSMGNw4UR4tTyAClBN4thgr7rI13zBK66DE=": "398415000000", - "J74K_j-tWlM8pgbOXjLiTP4txxr93HyBFuHNGq3XBlo=": "391381000000", - "J7IUSw3f9vwPInbAKABpRBUTT-jLhL-s-RCjkg1r8gU=": "4122971000000", - "J7iSSpfNQ6YpcuBYFLqa6_t0rRv1NXR0Vl8eNmZ_0qg=": "383357000000", - "J8CLDGv77fYxdRmjFfrIKl6n79EVdLWe7lCvrcKD_hU=": "783595000000", - "J8Mi1OXta6CI6OICbk40axL_dul62XEgPuUDVtqVlLs=": "384615000000", - "J8an4oPEp_t6s54EKGbgtpGaIB5WukjawBVP2mk5CJ0=": "379873000000", - "J8qUbBrv5usChHIJYGf7IibNHh8F3eNb2558u9bTedg=": "453414000000", - "J8qWDfVC7bBVpWz3AdkY2ZTS8GFGkR9rJc58byXqquU=": "409119000000", - "J8tfxSDzdNRlDq6cJxgEK0FOx9OEs2hku2ALwixCFyI=": "384615000000", - "J9NQUt7_w3I9hRNGR5sPAQL_v0M6PEWIEvd1pi5KPx0=": "1270111000000", - "J9a5QsD_yNN4Pr8-MHTv6LV3biA7AV5RjBjtVfvK_GA=": "6101161000000", - "J9dUhxvr1-0w0Wz7OazIf0XQ8t7YWad9iz87N7sO7_U=": "769230000000", - "JA6cXeAITV1ubztt41l6XPjfka1tkiFZgdbwUKWihHQ=": "472453000000", - "JA8gMjrMQBrWgMWCDyLahZxZ3l4OMIioPmWfn3wZ_Nw=": "378633000000", - "JAJlR3Dj9_wLIySimqG2NTl4QnjlJpI-jllyAN88CC8=": "379260000000", - "JAnCZLLP1zwiQzIcgznui5A02d49KPRGYLGH-oba1No=": "386742000000", - "JBa3JQJXH93pJKZca2VmrQP-6JALVPrwSkVlCosZtE0=": "384615000000", - "JBlvoHHhYxVhjhsrgdHGrCWxsiNhCEVY_Q7WX2EfnoM=": "424550000000", - "JCGzKmhun82rjtqTJ0V3rlM0rL43cxCSQVYMyjHykvY=": "384615000000", - "JCb6NPFM5m8H823q_WcB88BkoVkVVTMwP1gsHV3vpR0=": "384837000000", - "JCfupfcgpY54-BygCBLO0k73vghSohQH8TDLkPcQprE=": "413111000000", - "JCgrHkAH8lZ-RhNUfkiwR8-JnHPStQVqBrX0SGwr0ho=": "463308000000", - "JD6BIg9YGkxg3yGw-dcXeLjQWSFuTIN6Bnmqg_LvBrA=": "1134645000000", - "JD6gef5P3qKqd1GVAtbgV0iuA9OEzjpuJ02O4kRSxxU=": "756683000000", - "JDSxssRfMtSixHMHkJu6DJhBW_jJ5iMPCv5rPjhxyJs=": "417630000000", - "JD_tx6QbPOOtcHKXiRsZyViX6zaYb5h1ewrfYcGHTCk=": "597871000000", - "JDjmKM7TnV75H2mCKYXsG0vZU-aIBhRNToSZqDp6jhI=": "1511381000000", - "JDmSiCIVbVxnIC0utL3tU5exNgfHgm8R42bMtO8huIM=": "462146000000", - "JEA9KwHWv7GRiNTvsXZEOIAsCJlkct4tz9y38bIsIb0=": "411085000000", - "JEBLL2n1MBO90n0L0aKxFjKvmgICY4aD4KY1Ask-_-c=": "19284960000000", - "JEGg_8Y1Z0ooZ4zW_b8o2KKyzIv9YO4FM1RKvu-e1Kc=": "1492839000000", - "JESCnsGdbRKuo4shN_5LStKQ5zk9TD6na9NouFKt-I4=": "2696702000000", - "JEUOJ1OiCG8ay2elNekqXiKc9YZLEA0FLhUrYVVbSU0=": "790441000000", - "JEwpdvN9DedI4TT6qdA95KmK0oCRJzJtrzRgfDOa5Uo=": "8076923000000", - "JFNzBvsUL7fDjwxoZOtiEJoPF-UhVyPwIHGpmBLki1k=": "836357000000", - "JFzQfucmETe1D0aT1WRgmBLSKowk8SWSXiSycPD6f3c=": "1421186000000", - "JG5121CBzIgdvfDyPrJvcxEq8Wzqbw6Xit5vuY1VLOg=": "384615000000", - "JGHo7vuWH2oaTZgT2uij-E4-pxfwuuu3vXf14n3BkAU=": "3798442000000", - "JGLgiISYFpeJb36sfNTNKZfmWblcaVYbXJGtUzMOEK4=": "770890000000", - "JGPAM7lJDsiwZ98jobzay2YayZdpKVc62TBKx8BYUYA=": "417634000000", - "JGW18YwtziK-JQjYT-qT2CNZD25NkcoDveP4Jo8YJb4=": "394154000000", - "JGWmX3ZPJMIABZRW8VPkYmZTNUj0IOLd-bLtYCzqPTw=": "1346153000000", - "JGcNVA2auvJ9RO9AGEpD8NZtsyB075bIKRE2cwSicV8=": "3846150000000", - "JGvSh79MKkDPr5K1VxB72B5io-CwWV5K36K9nFRJ67w=": "456843000000", - "JHDmv4pmk_tGFUfs64DHr3pAo6uw7KsRXugJquRWdRM=": "416408000000", - "JHYOaerbdBoqHTuPDH42EwG0ds_pQF8-1ctpcSW5epA=": "384615000000", - "JHa_tH8-Bmvys_p7pDIFV8w-vaoCwJE3dOXIoTe4UX0=": "499791000000", - "JHbS_mJSZoeyDEbvwqyuh9QQ2GrOAI464J2TaQ4ztC0=": "3412149000000", - "JHzNaLgQV4GZJUahPCsdlNjrSD-178cmUG-S1SXRtvw=": "455600000000", - "JI2ku4e00hQNHIPtZKQwppNMGj5JaO1FQCfZSzBBglI=": "2097400000000", - "JIEc5L97yJvuOTODJtQR9xDUiwvQjC_XfNxoiIzMGxI=": "482124000000", - "JIS5-8rlEUJHA2HAPamVvUnk53aAawicimeZOVNuHyU=": "377792000000", - "JIWm4XoSL8Zmb_46SRhHPBgbFbeFlA41RV2ksyDNvJw=": "1153846000000", - "JIjC_TWGGDZUFIjOmjOai0w89yFfeWj8DJRXogp8aCs=": "385509000000", - "JIvIrG5BYdVjOBfNg9TnJqoszmj12atsOUni03dVV6U=": "842892000000", - "JIwz_CYywUpTQgv0OsTnbkCA2MdrsjUbEqZatqudCjE=": "2083333000000", - "JJF_RH1AR8GQKuIRY7NQvaaQNrDjpd_nrxgXHevshP8=": "784295000000", - "JJ_de4ALAf8Y38eslCTu8SroOMkMHObbGNDYE_3Vo_E=": "1623129000000", - "JJc-cVrPzMwJWBIPTpc_fp8g9BW1V8CrSXPBqciokpE=": "1839994000000", - "JJy-JGxjv3F1pdWxdd-cBqo1PctUj37WUNYG_vEm4kg=": "3223643000000", - "JKBZ6HZF5gpCMY0UuMmxVPgImTgoJa2sUrdsY_YpJzc=": "384615000000", - "JKq2oFzVq-bRkdSSOgjzjwHs-uojhFWw4PGpmwdAoTE=": "921977000000", - "JLmM_RuL1rYXVxk1WA5T4XZq3cvjiLFoKhfDo_4V6lA=": "482708000000", - "JLubX1T0e7-ZNmw6Oh7xVN9CYvCbMwiZt1RdYPCexCg=": "385509000000", - "JMUqbjRlTU-dRWqMNbiiRpe_ryLJAjxOqFNc3xVMPP4=": "724718000000", - "JMisz-iZmLc7-cnRX39DskZiWqT_PVuhRerci_6E5Lk=": "458584000000", - "JMlJ6zuG3rbYpaYmLI9WQtIkA4IbM8rlkprA0DZuFdw=": "384604000000", - "JMrf1ix7MyFw8dpxX8YUtnj439CsIYR_CinROo5xMIw=": "2081777000000", - "JNDn06ugLYj-7GqwxI-VRe1k1zBO4sTXSigfF3HVI78=": "384075000000", - "JNkKU2K0VTV3vrMnLbONxt2NXjHlm8aigN8VZQOFGYE=": "2730885000000", - "JOVuop0-8cYHV29Xf3dKDj61qIvnMwngVaxMxFwy93c=": "7500174000000", - "JOrXdR2AYMKlNJuyTZrkFgpkO9NyaLeVKOneFP5P9B0=": "473848000000", - "JPFtuyr-1_EuASw4zXQqvaQzFpD7r4ZdXjX7nuJvzh0=": "388083000000", - "JQEdS3CyKppVTrX68bRka-BWXqIFSqVJhfnnTr-EQG8=": "411085000000", - "JQdv1Z54qmZd22pSFqPZXonCPvTzosA9uP3xIx2HL8I=": "390712000000", - "JQtWAwkRawlsv6TiBYGRZh_uTkWBPKfy6A3Shp4QmhU=": "2337612000000", - "JQyl79AECqnk-QkISoIwE0WKdQP01XGJ8xSZNBt-38Q=": "1779314000000", - "JRDqxRovkzL67FHP8pAbGKryi_KaFKR5OG3jnYuXtXg=": "404548000000", - "JREPQkrK1dPZM-EGQq4fVVVR2K2ir0HAXytv4ImFjpw=": "769230000000", - "JRZxRkQdZmNZ2pOmGZ7LozKMhlFBLdwSPXhst2NZpkk=": "501244000000", - "JS9QGtxdKzwQO0nevX09X6D8k9g7hoW3zCT3GA3gObI=": "18514524000000", - "JSA0zC0P2Zo2w1a_35na9CWGHgEJNd-Ixk5p1x1lkQY=": "1145412000000", - "JSYYTD0jmrm9SuV-_YU17h3sp1fSqAngt-tDJJ8VGEw=": "470057000000", - "JSlBRRjH8e9-cJXGD2kLDNF9qzQEENV81WYFRGdRQfE=": "2272727000000", - "JTAWImvbca-h3nXf5qzPqCI7GS0PFGZ-U657gbazjNU=": "385387000000", - "JTW-yitxn6WHfTqWhtRDsGvcs8Dsz0KzWXE_CTBoPPk=": "2088168000000", - "JTahk5Mrc5mJ_nJVkKRDx9cTAHTGOzpKhLY96Fnm290=": "4512680000000", - "JTb3pLAbbKckjXPlgdn0mpYNgWVn4Twswexthj-GJtM=": "378341000000", - "JTtiKKKi7UqqqsAwXy3w7HtiQ3GnwxiW1odHHlUYjiI=": "459069000000", - "JUP9sPMDJ5YhAhFg2azfTXJsdkPNnfd2-Sf8Czq_aCA=": "378743000000", - "JUkvyWAf0LwdgqIjUibjKPQArlVIMU9aM5RhAhPKrRY=": "1683671000000", - "JUp4bYZBfDOd0v5dkirq5yeoVfCXHinJaHJDn2JEL6w=": "417630000000", - "JV17pGUJ4TmmlYTl4z1tzKxtVAIf6PgsGW0G8VpjrqE=": "815121000000", - "JV1RNsQna4i7qtfpUy7gY_y-4vwcP4n71LuepWncEqc=": "499624000000", - "JV1exvMsYlcIy7Y1mDkSuwCxo-vwpXfy-GNE6T6OxMU=": "385507000000", - "JVL5D0Lkr39RAIOr6TSJR9L8CoLxrsk8zd6YnnHpwLc=": "387115000000", - "JVbA2Jlu-EGg2VthSv99duUw5z1iM3er7vWqW7eo2IA=": "482124000000", - "JWWwm1TB4Mzr7wlmGL0dQgiSVdxLq2no0TrwsdFBClU=": "463042000000", - "JWbhotw8jBP71kWWToHcvqj2WhAXA1HGepGUWSZVJQE=": "1922080000000", - "JWmkYvRnmLSR58T7Ls3zl1pUkVPkmd054SeJLKuGJMY=": "384615000000", - "JWzEdHRUx0EsqShrrKtZp1AC_6sZCkhMI6SpU-pKnUM=": "1537170000000", - "JX34s-aT6_1yjEr-jwkkN3Yhnzf1ukrsKPuuvfpXpX4=": "378404000000", - "JXmOOcjiKviwqElCGq0XIhqbe5x0ZVED_DQ-NDi2NCk=": "772667000000", - "JXnsfJH6dNamHKxUdmOr88Y7vFnlsOTyzY_m-8wYV0U=": "1535870000000", - "JXpyhIpT79hgO4CIw8kgkvagAO0NvOhja27rHm2jDsA=": "461822000000", - "JY11JnxyRILF5tPzLuORMMLSa9MlxgjRJV1qFaVz39A=": "713191000000", - "JY8_GwmdGLTLzzYHgF8uaZRMtMbYgBqpqNC-8XgzEUs=": "412344000000", - "JYVe7Zd-Js6HbYFVew_e0Q-pJ579fBoqhOQErppnlvU=": "11538461000000", - "JZ-ZBxl__fnRFLjCEXzWlMDWv0cy4Rw49cj_FUxUhjM=": "3267297000000", - "JZqxpy8SI1QJxkaNSE67uRpOyBEfXWHG6M9k4ZOOBVc=": "1258303000000", - "JZzw6aW2IikwdQ-QRyevObf2IWX3cXo_JfL0e27dNKY=": "1510595000000", - "J_afQ0duO26Ya_AIQMR4hJGXTNOndosmZ-rb019xwR8=": "4487590000000", - "JaCZa46xZlRK7k3JEp3diuuvDoY0e8yglwFG5TYx3Mo=": "721753000000", - "JaEi8ymsp34bodOFV9aY1yszvOqlBbBSc2fDIgjDk9U=": "2129615000000", - "JaJ1Pknlcm6jkjN6voMb0cu52Txxkr0Ngl3XgVSS2Ws=": "458012000000", - "JaQXcVu7p8AKINNuFES7U1nIrS7EbqR20nkWdJs4xwQ=": "2025945000000", - "Jaj-7rvMfFHGEMrkDU-FsT-l36SIJtZGiPYHMw1QAZA=": "732498000000", - "JaoDbxwhRl7B9S1_s41dFgogEszb3zLoIiCCZehmw30=": "405357000000", - "Jap-z1seVj1vfX0kuAotOZJVu7C222NQ08D4Y4-gxt0=": "838388000000", - "JbKozeh4T_cLSXY5Y5Dufx42rvDPHcgVkgTxjw5mjcI=": "690971000000", - "Jbe08Ea4osT1vlmRJUhX2aKixukbp9K8UjwqltmncKY=": "385190000000", - "Jc4fmBaPAGd4896dlzTbUdSjUjrOtlGUZvx7NoUl2DE=": "384885000000", - "JchMw63M8aXqJgwP4xGPLFqwwCbFHwE1T-lmR-r4Sho=": "1089197000000", - "Je6365ozrXE51XLlc_F_CWSNVnth9z8P_8yj6RLI9_c=": "460586000000", - "JeFZFG62Sb-55z4qTTRvtU-G6oU_VhL9vvU4Evzg6yE=": "3855050000000", - "JeRFzcYyQ0fNQ24C4GAZ1CL9pZnqI5onRRRa9YVHP0E=": "5507947000000", - "JeSKUq3zzjiiGdJeYjxQrGBxJzc5PWJzSzsMa_AA1fY=": "834903000000", - "Jfhnm40YODptGc5yw54-9mEA83jyllhAmUeo8YuxXj8=": "457150000000", - "JfxZ9KxFaKhhM3-WDyXRibMa4J_6y8g4syRt1Aovw8Y=": "541666000000", - "JgG1iPY6P2BU4gve0mdmRWE1yu9aib5haSp5Z1Dve3o=": "385505000000", - "JgOtP9-uvcZcAT_IRknKIY70cSSyr4tCdZSMcNvQ7r8=": "469173000000", - "Jg_j4kfUxQP-u4a0MVdWoe34j1wGdnKneVB7gey7Qvg=": "405357000000", - "JggjQW9LIgeEPqScBwOFn1n2AtCX06t-ViFMkT_umC0=": "389973000000", - "JgiMwxVMVPbsmzSIDHNVbN_AXHwScPGR_fhJDLYlQPc=": "459228000000", - "Jh21N4jpiLSDZHaHf3OiSvnSalEb62hdmIKTN_-GaMY=": "730755000000", - "Jh4MMb2yPjOhMynlpHQoLaWmsYJ1bxTfFzUEQW7Pt_o=": "383662000000", - "Ji61jUxRRxFlkh5ybPpWgyaQmiR3OpuOL6Y-SYAQMlI=": "385697000000", - "JiiXp9xyq2eUHRRvhIVQIfQQmj-LVRp1SC4XUEmTjjw=": "3999999000000", - "JixaCOxaxf1eRFHDUZuCeZtd6TT0QxarQ6TpESgkz5M=": "384615000000", - "Jj1jsXmmRNXc9WVGkawGb-RRhddyfcYjUmcSNM0bdx0=": "447938000000", - "Jj1yzayNxAk4rfLoInKBvIxPyeknhRvjYKet5dnIdkI=": "501776000000", - "JjkgHS9-ZkLo5VLHY9l9Y-bFcR6TvLWfWms4pZw-RC8=": "1348026000000", - "JlOubNdynh1X7ZTN6BdtiXrka9lo6f92y3eXycQb3cw=": "1696834000000", - "JluZ6BbESTHhItTmJcwOCaIez3CiC2uzPqUn1LZnmok=": "454545000000", - "JmfM2ZGvFdHC-S-pXPMaMYWujVWwkUcBBrPydTiA3RI=": "942307000000", - "JmkZYEZJSAoiN2fe2nEaPqkfYbmTPD0WCEn-qwDozfI=": "2021749000000", - "Jmy-wYbznH461Qqi9QBcouJl7V2fjjSfg2jEUAOHiqI=": "391797000000", - "Jn1mFctqHr4SMdnryuxi0PrlFL5T7G2wDTYFavE_JuA=": "385559000000", - "JnBIiNlOU48vgKKWZ3pXSl8UKDH7NW6NTTyVn0caX_8=": "390238000000", - "JnJUBrsyWgthJ79OVY20hxI17WjH0JvfPCvqiepSEWk=": "7692307000000", - "JoGz9szMSMyOY5F9Pf5cdFmFCQZzREKCzu8IozNTYXA=": "385505000000", - "JoJR4aJJTUfcxnH04_1eFUa8m9g_XsZ--htvwEGtcLI=": "571845000000", - "Jp0Ji-zCM-6Q73kRlMiYsEPg3zKHx_N4RYXVcl2xu5A=": "5833306000000", - "Jp3lHGnyzKoeL-6NvJbPgYMBZW2nns1lx3ak-gJF78k=": "2081275000000", - "JpBIuUQ20C6KeiPKynj7H27lv2BnsljvNI1j8XKQ4h8=": "2088182000000", - "JpNX0MDCTF83R8sGJp5T6TyGe_dN4cnhivJXYt3XSnc=": "462889000000", - "JpSudFUdqIbDZyHXrJGMyHQildjhAG-wlNwjhdiqD5U=": "3773452000000", - "JqTYMEkuLXPSMnbscJy3iQJQBPmIbRsIIfneNFgqNS4=": "424920000000", - "JqfgiVeVjhaqmuYqiWwoxx_S1SaRwoqQRz8-dfVstX8=": "384878000000", - "Jr6bNjSpa31Vhw68QmILNzzvYJKkkJwOtFig_P4yikE=": "578548000000", - "JrX8aZcMZWnQIO922ck_VK1P9_Y8QJcWBp-Pa_8UPds=": "5006075000000", - "JsKbUIgOsM6pLTicGxDVs5jUPPNfXRFzjxS5c80LIcs=": "1041660000000", - "JsXNCVsdnlowhZpThyIK5db2MGzWA9x-oksnpObj9Gk=": "455743000000", - "JsbMMiSnwU_ThVkg4GSBeqTlhQkIsGOeTw7vkuJhxyc=": "1923148000000", - "JsmDARh7S-qezdnhdrEbdLtfejo3xpJcpN9k9VIH_eA=": "414997000000", - "JtfU1aYLI96W6ZH4_--CFJu40qI_Pw-KBlEYRDnw3d4=": "1692307000000", - "JtoG24dKcnN58KJGLZL-udstVimNhupueDdNpRdyRYM=": "386077000000", - "Jtr731I0AlD_SLms2pvQledrWG7yHugSY696vTTQjeo=": "385507000000", - "Ju5TjXr6DoeYVWPC6_Ja7QV7-94IB7Tg1TCSnQvyUnU=": "384615000000", - "Ju9XH74j3k9Jli9rNZ2f-e5imX-jUJZU372W3wdAXi8=": "459590000000", - "JuAmtMbHOYZGeI-GhazluuZpHKQzMAQEuwfa0WIHR84=": "376805000000", - "JuCcrbtw3U0sklVJ1MGoNYLIguaikqRYVjPEY8yTHQM=": "911799000000", - "JuLfxyItWKWe3-y18nv8PXc-VEf18KzN56uJ-JxpC0M=": "405229000000", - "JuSN-0P56J57kI-rE-JpnI2wS31GJXJa1o3AGOxyCD0=": "382717000000", - "JuTOmYIci-a0_eVyVahYQyxw3at7aVtXPqqJw6mgaGE=": "384878000000", - "Juj08xdyc72IQxM9-SZygjge-JgZUO7oF2UysqHoMgk=": "22871716000000", - "Jul33G6NwHQ46GZd9nq-qtA6Hd9HjiOwFDZtfEAl7fc=": "1927547000000", - "JuxKmittEpTEmAWoaLAfROWQ_vbHwCKZ8WTrUNrSwag=": "454545000000", - "JvMacH673a3njqNodP2toot6wY2ieHKP9qTLcq6RMbg=": "465122000000", - "JvUlXuIT3zkX_qITQvEM99IVBlvruvUBSWVlDkZwKV4=": "384769000000", - "JvcsW23BxhyBCR7Me0Yp5ZkrZTy_oTNnfAtEKmbDxgg=": "385506000000", - "JvhPzOTYgB0BT60dx_bKR54vZizWFiuQTDoLejs3y4w=": "455249000000", - "JwUDIpaGHXhRtjVOlpp4ahQ-OIEadPO-AwNBNyLaeUA=": "4559898000000", - "Jwj-1f_mdvad0xCEZdWvFjwl_EvU9k8Kj3701bJE7co=": "459646000000", - "Jwy2w-dnH8pc_cBbjBEB4WJ2baVXyX1jx5PHeE-qdic=": "4166666000000", - "Jx5YKaLadI_SmQU82smZzG0AyTqyOkZg4U1llQjo8sI=": "386305000000", - "Jx6P17Bsy_RwGbMhFJBCHx8hZsor5P-a3-EE3aGfddI=": "961538000000", - "JxWjJucvlm6bhHHu9cIhtL7za8F1ZJ-0Jf0X_XwF2WU=": "384615000000", - "JxpErdJvhwQvQgHSrf4g7wNbw_oehiok4oeE5jEM0sA=": "499999000000", - "JxsvQb5WJNIFgqrqVuqdd9OaNoi7P-9VQWeuV2Z9ZEM=": "5370060000000", - "Jxz_plEsq5PcWx8-mNqSUTa3Wra9JnqSZA8Zf5BbG3k=": "1198869000000", - "Jy3l3DjwIyMsd9acEdLcH18og6yGj5Tv0LVuIqiKORI=": "760571000000", - "JyBMCpeK_BJyhCtSOdgjfAH4ykW4_zweWBwY_VdUNtE=": "18500000000000", - "JyXJrfuPpemUy-Vfl65KAmFrV3GZIdFihP5mhAwh9pg=": "567449000000", - "JyqO4wo9Xz5eb-mq_1cdaOLivgAF8zXLXt6U1oFIwWE=": "450689000000", - "JyxZ1BMVDP_cR75qW84vu-0sj_--GzkmXGZ5J3OdIyw=": "444887000000", - "JzWZbydPJp4H6BZheSiPI8Mv-TyUhxhIWVqbPaZEbyw=": "976492000000", - "Jzs055k_qwHS5bw6QDxXI0hwJbq5E-dDTxDqqOx3jko=": "909877000000", - "JzvdKvp9cbezGb1sbr7KlSv2863QUo_7bQqI7tTRoN8=": "376125000000", - "K-IdVosSTgi4TuN564wIiqJoL-l-d_iSFf40Gy56QPY=": "416666000000", - "K-JB_3UAPgNt4zL0deKf4jCQPoIFRn4jIB-UejVJqGA=": "1249999000000", - "K-QSaYAYs2MnWDNR0AwoJqB91aOe6ILNN-cMwa8vQ2k=": "1659200000000", - "K-Yvxs2_07mV_Nv4wcYED_jbo8Bar5DI8Yp_2lybi5Q=": "385510000000", - "K16AaUs6p2CD_dBJdUgI4pdnGGlM9TXoo4VLfyRIWwE=": "381805000000", - "K1E8H8r7i1VUSZl1LLMb_jzjK17uAxA1tnFdSoeOj9I=": "1221746000000", - "K2Ck1ml_EvHJQ5rtvNY1U57XBUEz_zXDym31JfmWjSA=": "1534635000000", - "K2KEmHFxhx9bnfBKJ3Zc3xMN2FbwM-P-9B-Hcxnb7f4=": "1244967000000", - "K2aTcUQ54Q1ijhHmwRLurlOS6mjwxqRW2BumZ15dems=": "4461107000000", - "K2lHf7V6GzwJ2Cnbb2GsAx9vlpWBUFOTSvrptcJBuDs=": "1154647000000", - "K2sNxlKPVrf0jUE2HfAV_lqU3Vb4mWLJwr4HZ936QO8=": "385506000000", - "K2ytMQuzCD1hIf18fLhdzZZWp5di2Qh5qqhbn-xHXZc=": "385506000000", - "K3gFnjqS2xf45XCiMGwDQ4tOLNE5mZnwLsZJCisZLZU=": "416666000000", - "K4-Sob3R3WIBg34PjcCazBlzqUQOu0AodZHD44s2rcw=": "3831356000000", - "K46cO-xDYDCq7wNsDOxPnL9HsmZnrAwA3SP0-zHG6kE=": "7692098000000", - "K46yOQnRY6sLyyfE8pxNEChPShtDDlnDSEWsPMk7vVU=": "391701000000", - "K5GU7vILVi6xwRJ_8bhjHo8_0We-p-NXGK5_gAaOqH4=": "456369000000", - "K5McJ2viovUWs595WBj0tDxcDbgp87dspaQIbOlaZos=": "453760000000", - "K5fppx1K_4nIMGAjUZZdRUl8xBoPAi3V_el8bDuNB0A=": "3539830000000", - "K69wYbIotTPQ2aewdGqkptoPPJLfXKXnCyJTKTZFWCc=": "2225295000000", - "K6SrAPBo4t5pcNI2VkNQ3Qq_SjHT5KJVZZTAw8fpr0U=": "1923076000000", - "K6urZENgWWlLyN-ksCYNdlV_WIMggHCDWmMoXGdfd2o=": "423076000000", - "K7i8GXcuuigg7pOFFiin4TbKWnlq_mGXcNRhGBijAFA=": "417637000000", - "K7j9-D31xpE9BfiHsOgLbmiH3F4ccd6r_JMUwyz6L14=": "458333000000", - "K8Ft1ytQQv5gdWzAGWUzqtB0kmunF3hqnOxUXUq3t1c=": "657041000000", - "K8XFEaEDAw76K5L0dpbbRe9gm6m8wUkREe3xSIyAQxc=": "489847000000", - "K8m0iqvQfWNzdValrjlppWV2dFX3BUQbkY1PhmWbe8k=": "482269000000", - "K9rEVOD6ttFv5WoGj01Depr-oGyAtRzUAp0h1049UDc=": "2305117000000", - "KA6s_0z4YjGEPLRLNKkfgfwSr8N_MInuqZ_TcR6gGeM=": "502779000000", - "KA88KDh-wRKRwN6Ko_NDSvi8Uit77oQGcgSQjEF2TRk=": "467149000000", - "KAH6qSotdNKcbWeK4mf6OEuHDO0eZASGtAD5c-tg97g=": "457200000000", - "KAip4JbGB1JGhBJSFP5679lDWugFNRnpi_FQu0OxQuU=": "382394000000", - "KAixrst_AlC_0zUOFfvVH8bfobkTRh3Hs6PzhdiyrCI=": "577623000000", - "KB4pdVAdqeztgx5R9gnO4YJKOHqZ-0c7-Hx1yIEZ-EQ=": "491734000000", - "KBDJdcNJVHwmXrrBgmokpA0pVe7f-33CRqDzfO4BYtU=": "500099000000", - "KBHUPaMW_LKaRF0PAvylFmbZhW9651FjWTGBjcVv4i4=": "1033670000000", - "KBW0ZGnwcyZJNMa_yNgAhpBHxnuPLoNVkMpUCwflEPY=": "2567811000000", - "KBaMQzlJm7ECrIfA0bz_Q8K3icQek_cHbiYMLjhcmng=": "415999000000", - "KCPloTAYJL4rFnhF5JamX9uPAgRQEvFmZzGe3pIe5E0=": "384615000000", - "KCS2852VjwBqaQ0f-Mf1dJacg503oGDiWQzEOxuQj7Q=": "3496875000000", - "KCbTtWL3o8zgt_NzAhmvroJa_q8v6xVUdQMbyMGnRwA=": "466799000000", - "KCcN_TQXoR_M2tA_5EShQu4VsJXIv65uoIDIxg3lCP8=": "390901000000", - "KCcuhgUeWMhGro715l3hdezs-wtKg1GuhLOAT8TJ7cQ=": "390743000000", - "KCspfhgyYTTqZYwz9QQbUg1VROI66L1eTuzV4l3VDrM=": "385507000000", - "KDAEkZA0Thl0YT7Z0coq9Da-9AGniL-LuuZl814xhc0=": "961538000000", - "KDEs5q414Fy7t6suQtD5nRLpNmuL2tINqdZBDRJY2pU=": "103431730000000", - "KDJhJAy0dTZWZ53dmfT87IoCbgm7fmha8ch3pYYsjOM=": "530056000000", - "KDSG5PLqUJi7X5ieUwcE1fgCv08jcI9ACFidpxxSGW8=": "414831000000", - "KDoIQbAU6XcPZbc2eMYpReCtkW5JiTG0dmidDQr84ks=": "1249999000000", - "KDwAgXSaDD99NPVmE6pedqt9vzzXBQIoVIi_zpFv2jc=": "961538000000", - "KE7NGbq8742N4xm4CcEXwaHlNaoPBd2StxLIzk-Fthw=": "426919000000", - "KESZvAZsyV3xqVYdlMTGh1rUMNQvw6X5Kr09qbzxjmc=": "680724000000", - "KEid--EUXZwnA9RRIEdhuSo1JKA7EeMCS6hFldkBOJo=": "384615000000", - "KF2xVFBz5-Z0Fd_eEAKZC9wy8Drox-BKhuXmXzUVBFg=": "385350000000", - "KF6EedcX1LIFCjSnKB4rgCIJ0srHV9PAOG4C9K8I3Cs=": "447177000000", - "KFP3p7OR9vuRoqhPcHDNoHgApjbFxQTryXTnrQUFJck=": "385510000000", - "KGeyr_c6cCnFk5lmUdHp9VFYkUlwIOq-lGsjuywEl60=": "387815000000", - "KH3BL8yGVs_oAtvbmnnSNd148YjK5G5wowJM_Qt3kiI=": "3846153000000", - "KH77z4_QZ7T0G1NnaoTSyPh9fJnBhYjIOLQkqWJ_7Hs=": "454708000000", - "KHgTQHJpR9beZbgb5Rnu9DQ1Tr43X_GHQ2jWC8X_XVg=": "385507000000", - "KHyboQzGtfVp6PBdH7elrSihFAVcvDvgfzPhfNhyrFQ=": "411085000000", - "KIYdhoBx93u9D-DVZlwsrbXtYAU0tmNbp9JAi5z5FQ0=": "4233705000000", - "KJ1WIZcPRmlxFBHrss0OsApJj_92v_v2jV1e1WKe9_g=": "381436000000", - "KJ23KbhRiKH2hezbfyXKzEI_Y1WaiFnVLjzgAJ1Nb9Q=": "384615000000", - "KJJ1YtvtVZ6gOZK6KKxXXDSAvfPea5jGov5x90j_rLE=": "1515670000000", - "KJP6ulpNfjKvIqGXJV7s-UQyXe4r3eU-YdQg36dsEcc=": "1282693000000", - "KJQ2xdhQ77Bb7TQq9FUIq76lLBppRcNoU7myLelVfWA=": "3278835000000", - "KJS_M42ow1QdG5WFgC2gg0hfLezujfikr-IHk7zNDIc=": "3812860000000", - "KJvaVYYO2Yyj6cdoKZroD9VGa8CBg4W3Gey-Hq61MWg=": "4173313000000", - "KJxJTdetZU172ukdkJfDKIdYBE9hTyGJGiD4Z6-tr6g=": "833333000000", - "KKYF3UHi8mdWu0uhefKTl6JZ3NSCvVXHYZdNpdOUJN0=": "404478000000", - "KKyQcqHumAeHBZG6wLmpQV1RxqevvB-HZi4PHhWdF5Q=": "2337074000000", - "KL8pTzKuWB33jvAgzQ80EIoIM7ZVfLDI_daw2JHju4A=": "384615000000", - "KLMkyeSckwj51BzrUIamG32sRV_eBlPCJA58i6y1lVc=": "464111000000", - "KLwvfr3REbst2wy6h1VkNMj7JzMye5VazWXNum2s8XQ=": "385800000000", - "KM0OXk8lkkjZEpFvuxXTXx93BnMZMM_5j8qit7SgXm4=": "19028823000000", - "KMCCWfeT8DI93PD2SNyOzI_3LnACOojtPwzS6aItMrs=": "384615000000", - "KMWKb7ph7V_-tJTjOnq6PcU0s0nqauvh1in4uuoUuok=": "405846000000", - "KMxNe7J3ShcGQUEx_NsykJ03uXdcTEzU8xxlM6uuxW4=": "1905685000000", - "KNP8etG8XI1njpKl_EB_8xr0AwF9SF5gAsiwRZmIfg0=": "578548000000", - "KNd39ZcT0Fecrdpvqfi8aMv0T7jMkUaRTWKYQT_WGPc=": "1187125000000", - "KNjz7hsmcFiTjIaOiMYkG-ulXa7vpMYYoRG-DUneR4s=": "768419000000", - "KNpHDIQPL9DSwDiR5eEF5KR1_lwNSUtyLMIy_V_cnVA=": "771151000000", - "KO48-MjR-GDnQRvsSRjWac8yFoyeKtM7PLh6X89HkO8=": "833333000000", - "KOLnULirrMIH8dIBNbGedcx6-T_AIHvngwe464dJ81k=": "28636363000000", - "KP-yuiepMrU8dHDwQn_5D_9TsWijR69Y65e5fdldvH0=": "1219925000000", - "KPHI0s8j8X1A41ZEyKkjLlhC3RfAHA1acB61r6a28Oo=": "682587000000", - "KQ77d3E0pM6prQ33Z3LnKcM_ZkAOdRea9m04gwMY8hk=": "378561000000", - "KQSjbu4i3poxSwbmovFyHwhL0dc5gKspsMfcQy7D8vY=": "393598000000", - "KQdWY3WnXR8K-jVzzJ54hpBU-spGODGLBSJgBkmBVZE=": "454004000000", - "KQgYHNiKGqIA60Hoa8EEk0LY2GwdYhN0f5lIhIoAWIE=": "1181217000000", - "KQrPOa22EKRsgWAfJFfehgqkZAkm1gt-ypBFdbuIZCw=": "840617000000", - "KQyk6nQodDvmh5Xe3g785xMd34WXrwPfwl7x73eHhrc=": "1730110000000", - "KRawR0aIGgAMn-JHnwHOLZS6wK4QMyT0kqEBvBYDmm0=": "769230000000", - "KRgv_Yf0pzGKJRXPkP6eoD505AzWSlUdW1fq8MRf-6U=": "1249780000000", - "KRncOv04k1HOuN3kJUsf6Y6NM8enjWOPfg3_RJfqB4w=": "1927537000000", - "KRpxhzj0xOPnP-caN3ob8KffxudKRaPS3LvpaRb8r2c=": "3846153000000", - "KSIoTO3ttzM3PEzaZZnfnXdNPdg4KA94-pnDMvnh-bk=": "767524000000", - "KScgGopW8p7B8GTwD22hc2IdsMjtUsDSSMJ_OHHjYh4=": "384615000000", - "KSlTxd2rRVusy3DoJho2AMLpq9UFtledh9GuE1Offrg=": "499999000000", - "KSp1nLY4G-_F_pAx27098hbkW_Hyg2ARbHkeod062KQ=": "462839000000", - "KTCMFw6_lHC83NUNMgKlmoxRSyRB5ox0uO2PlH7oEPQ=": "416666000000", - "KTEkUlTC_u7JCfIYB4Hjt-tQkb0YpowA7tfEZtlCs48=": "384615000000", - "KTxILYqEX9ajo36cMJOl0I9rUAz4XAZptfGaCzD06Bo=": "4730769000000", - "KUB02ayzt9uJodkIqjTpn_UhNsA77GGgVS5RkoJwaHY=": "381938000000", - "KUeF0Qk2M9uQXsD18JLz5CLsam2znFKIUELHuKbZ5tY=": "381566000000", - "KUt3aMV9bJzvAVwraf6NvfCyYIjw3pbn8pKNamTyQQU=": "416666000000", - "KUzqeU2GvWIgJNKbWXPAQt2pFRsZ5zwFqigFiJlVe4E=": "692860000000", - "KV1Rcwqw0HEpwn4CV8YGQQGBrIosZIuXppHtFHWyD7k=": "2817861000000", - "KVN9YLnszmT2Isyw9WNgidvrw3hwN9RXiBJym09ojjM=": "866755000000", - "KVhgDm-VtpGnhc6eI-8eAm-cQ4DudqQznNWc6b87aKw=": "4230769000000", - "KW0fwaIdzwChjDZvXS2cmIv58iV8NHPnsxO53FDFc54=": "1684891000000", - "KWYrUyPjxUQXtocXfkQSPPpGQSAEpIWXjxIzldYwpg4=": "454743000000", - "KWymtyquins5JNyHzk_NYuGdLYX_xSIysbRVO-HKfLQ=": "386296000000", - "KX4oo7RJJqejyV_IpXFWzqumFYEdbfpoZoDvTH6s7I8=": "694666000000", - "KX8Vc00sZdjzT2ik3UM2Jffg-gUhatw0iNLME9MokD4=": "457766000000", - "KXDbi0ONu0obOpa7iVbCm7CNUvsqOYYx8Qh99RRad-c=": "412463000000", - "KYNi8tR4abUksGHWbjwj9N4Lg2A00M6Mk0gzt8G3sUM=": "944522000000", - "KYPQyjADUkxDTKTHrPjyaFefsQyL7YlIJOqK4b34Icg=": "1671920000000", - "KYXmoSbeE4EvbjRWpsWk43mB9nzuabE7glhboJGZErU=": "482124000000", - "KYgdcHrC03FqGHuqgLIQDOO8b5QHuOY9xT-7BMyUMfo=": "384615000000", - "KZVoF0J4Tub-Kz5o-GpeYqK-0e7h1qjqaBAx70Werc0=": "385137000000", - "K_UV2b62OHTAtGLxsVQ51CLqOifJco4--THWvzaoWmc=": "396931000000", - "K_lB62kLmXYFPqfjj1WCpsofYhQMEsT5anCljn-tTs8=": "1818181000000", - "Ka0wisAqUrFYHrYI73G0QJPIc3l6iUeC9BE1BCzR0go=": "1655674000000", - "KakKIcVJUWEKopNz-6epDFZxF_q4MWk20L_Idqm1GOc=": "839770000000", - "Kb1p3fFEOCLy91yOkF7ZmejJmgiX66p9ZbBdtaOKEWg=": "382394000000", - "KbGjzt_Hoia6dESRDFgv1kYGTPEGcZNGXqGewLOrU4I=": "938839000000", - "KbIcZKfbU44RRf7hwVfK6t_OFkmzr7Lts7WmMv6ybDQ=": "539898000000", - "KbpuVYX-O50uk9ygRwACQYyd1mR9Am4xpL5scgXGGDU=": "749999000000", - "Kc-PfKlLyyugU8DJC7xX7AX_FhagoTh1y6W_-GNLp4g=": "453674000000", - "Kc-cmGtvF4W_lSX6mvGBo7g1CNuSVxngfzcCExGBmWo=": "763607000000", - "Kc0qvm-518eSkn2SKVu89vhJ1uEerYTOy9h0Lck5bPs=": "411609000000", - "Kc2sMWK-JzP14Jwe8iPkMl6iJB-0wYzOqFe8bSX_TJE=": "774052000000", - "Kc3oZglCUp55p5QPfRJE3UtPA-xR41GsMtMtT1rDve8=": "387186000000", - "KcN8GP-cjlz54J7YtdG9qe6uMXn_ji3dG89daKeLb1o=": "385506000000", - "KcQVEjRK92LwnpH4ecMo-hcHNRyiN_63RPcbrdJoerc=": "838273000000", - "KctMuB3PC-aNmNA0_f5OYNcMXpJt3aR26f2su44n1T8=": "384615000000", - "KdWPoxP7UhaXiK3jRuCayvMn1HMjAzuKQP_vUuHx4oo=": "352326000000", - "KeEFsnbKk0FoNKSzNR7D47UirJAOgi7XUICtGS-0Tos=": "390207000000", - "Kf9AhbVoW3UNZ03yg0NvoXR_c5HItZQiHIjDbthLJcw=": "409110000000", - "KfFA1SJ3HD9yU48kPl-niAZI_SzBzMk2XKKT1R-_SqQ=": "909090000000", - "Kfngm-A2_sletTReKVGejhG5eQENnMWRY7vrG4X6Jo0=": "1005354000000", - "Kfo-tpl5ewaodfDo6wlEaDmCR_7ncrwfjG7xvk-muqs=": "7500131000000", - "KgQE3uuFr8AHbk01NUpJbg0UfXMXmPE_yjv3C_TIigE=": "381802000000", - "KgWmfPM-LbUOzRiTpKV4WhdKWP9LLzgQ6R6bQqoAlUM=": "1521370000000", - "KgixXUFrAoBheNghc0BX7dais_htchQ020_OjgSNSSA=": "384615000000", - "KgkepPQzwx-MCqXsKW-4Mhj3zkxqoSRx_fLdfdYdD_Q=": "5958333000000", - "Kh2MkIC9aZ4au9mcQVaPzY2LZOm0sxdtTChoeviRE8w=": "425503000000", - "KhF1mokp_zPLXEklsq_oMfdc4WAA_d9agkrqO73P4J0=": "470730000000", - "KhFCaCLeVkjs1bk5nsLCvzbAbf3FMSSqQLpIKvuvrks=": "928601000000", - "KhX_1OE1xFxxrXro364PTgeXj5LNAnt5hhacrvrpXfk=": "451134000000", - "KhckLsw3mFGDw8XBIxcBnehxJ1uEVDrJtwvINHarvS4=": "454545000000", - "KhfXM4n3gwX2XE7Das7M6QlNFM-5NjdrtKmhst32g2k=": "385507000000", - "KhgaufrUlHQ74bCEC4ecr22lC9FBR9tSJty1LxSKk-w=": "833146000000", - "KhzVTSMlkRlwC6p3GEf4c-b9jSDMjR0LhsH3P8uxXwk=": "1927537000000", - "KiFbHwp9yJt6YWPC8TELrdu4XAu_1WIMP_KOH3wffKA=": "4152980000000", - "KiM0Ct9huUVbc83GRywqbCANWeak77q-6bZ3SkvqQoM=": "447934000000", - "KiROG__Uxr6Qc1mJfkXOXgLP9Q2ZuLji52ZSnwpf9gQ=": "358755000000", - "KiejVbwxTBIB8pTLveanoO97L1YAtQ7iugeYzSoi3QI=": "1366800000000", - "KifjxOjikcvto5Uae6qjbH-hCPUQYRESw0t0ZOc7EZ8=": "378341000000", - "Kj9LVBdYRNNLrRKVk0QNgi7-0eM9V-iL0FV7RNsddYA=": "384615000000", - "KjPAjYu2EFQY7QPpqFPMCJjO09IX0hYAIRT-jEbmnYc=": "743064000000", - "KjbYzXd9B_fsEuRYuCmB8qjzA9NiAdVtlcqD753wniA=": "771012000000", - "KkFL2f7TME2Uw6BtWW7zWy9g4rHWiAWOPpFWDxCqovQ=": "1004789000000", - "Kkbxv15M8QvE8ld-5twlW3cTvLoybWKR2QIDQW0ptXc=": "769230000000", - "KklzW0GyseRNv3CP3U-89KHB0L0xpq4CjVFcZWnkWuE=": "569773000000", - "KkotPVUDQc1I7D-zfUQCfFkst9R3p6vqc_tczMXcPRQ=": "1999999000000", - "KkuOvfM4PGV66ayD658OoEM9nAxXjjuDSmRQX98CC50=": "384615000000", - "KlE9WO4OnOz6hWPJh8PwtlsCNeyS_QEbRJgnHJvHics=": "383959000000", - "KlWpii3ILSmkbM4uESDrt5KW9b5fa8vg1PET-bjlxsA=": "457341000000", - "KlaGL_q0SNllr9pLOJjejrFo_bgIDOPsVFt_pFBQ14E=": "456909000000", - "Klv2FxEtUk00n0-EL9DowK69LvBS-Adqwxnaj7B6PKw=": "4669772000000", - "Km24zwkf8XA1QL7nrgy0GQ-66te8gWApos4gMKu8Tno=": "747699000000", - "Km2vfBBkhG9uXwawAwLBPNpQ6L5NkoqXXZuxqnB1388=": "379260000000", - "KmAJcjCD184NhiUGaiZPEFdb0uRTLxEKOUSKRL4qDMI=": "417634000000", - "KnoouJuV4n5h0R9e2ku7bW1uTFGbhybtGZkWfECRLP0=": "417633000000", - "KnsyBCP8jjYpGSzTILJD3XII5VJY1is61dL9iyehdm4=": "653742000000", - "KntnDOgpjZI_yOgJPXzKIYLsQoRZN1UwpDZeoQWqJIc=": "3417516000000", - "KnyfopmMnzZ6Cwh6UeSvJ0S2WndVxWP7WZOs1WGird0=": "3249005000000", - "Knyyy1TOfEMvUqieWGSOIZf6TvVFkhEDHDDE2gQ3U5E=": "451018000000", - "Ko-FnP8gcvfR88f-n46YDuvnbuwbpf9bPcYKz3xUIR0=": "14970560000000", - "Ko8wzUMqGLuSgT4chcgGcpwnoLyEZQNjompTJ91_PQM=": "461718000000", - "Koelv1AHuS8SmLOBXEvVCxwmoXpZsLGHdBxkLyU4RC4=": "3832056000000", - "KpEH4aZuPev4i3ptPia6PmbSPBknHmNvSIEVzEoAFxA=": "384496000000", - "KpJNEfqjTlNXU93lKK9G1Bdlsbg0xFu0cC2lWYEUXhM=": "1180485000000", - "Kpv9Lehg_AvKP5BhxUNFS9z9NPQqOm7biZvQROgg49o=": "1252892000000", - "Kq4pD14dk8288o4dETVpUVgbjinlKRADy7W18zrJtYs=": "627016000000", - "Kr3Aso5zgZlMfJj7hqWSma2C20tfEyV3_MEakS07UzE=": "3898137000000", - "Kr99LtaCv4Y2lpHDrJQNgwVL3Ee9hDxVyWAAZ6P2tSs=": "132113541000000", - "KrDnDAqP09mAwsdZ9nwlTg1tHqWD-34kMxIwfjvUONo=": "384615000000", - "Krg-dqjzv2eoTxEmXdlRY6QnWPZDz0i-IeaiLMfmJqQ=": "385510000000", - "Kriika6Rp632CsTI5_vEyJSeUISqEQjsN-SWOVHLGss=": "1076923000000", - "KrzNmCFW9EhNM1w61AZFsNGsjA_W2TtzMbjGWXV9Zj0=": "449007000000", - "Ks10khIXqoC3SzT2gSvtmmCS7xDZrR2Jp4sCMuyyWOw=": "390649000000", - "KsaCaGR9BrATKrgvIdOwioqTvZM34B9D4j_ZvmF6iGA=": "989334000000", - "KsdadUZsh0twy5rSnxAk1hUsefN11k5KWry12T95JS8=": "416723000000", - "KsmJXbErau89kNHaSjEgwVg_cua0FuStUwBBCznCRSY=": "7710150000000", - "Ksz1nZJs6Y7z019Sd6arbPdaWGJJkkuCNjgO-sAfYa8=": "794665000000", - "Ktm6XP6YPZutpWWcCueAOXXTdgWRt2Pz1CMdy8nx5Ts=": "424120000000", - "Ktol1K0bTsP3ifNep3qWE4mcp0uVbOXA5HSdIOXNsYQ=": "932180000000", - "Ku3VEBNDDj1kOLAAI0X86sBYMwrqK8BxpChXjCWmoqw=": "833333000000", - "KuYS0kRa-NvqmI1urQOVPkYhrj8Q64M5wWWxfyCu9sA=": "925374000000", - "KuhQdEpBjD9sjv1k348nD7a4gDJ9oaCwnRMIF_Z8yk4=": "764768000000", - "KuntYiuOemRHr1EUBtbv8774LrgnIBwsKeyLUoCJvhs=": "769230000000", - "Kv8aIceizwTs216VAkVJjIsrPv2kjNqVHfXONB4oO7A=": "4175192000000", - "Kvgrc6qROCkTP8i-c8AM3GlGp_JhRSKZkwLYlJh3xwY=": "384615000000", - "Kwkdpu_mpA7spNx70cYgsPmZ9tGdi2hS_Nrcs7Axv7Q=": "4592645000000", - "Kwt-u0AZNAcBSskQO0DOpgG8r2i9xSSNFsyvAaj53aA=": "1529468000000", - "Kx6FvSLWBAG-kAoqyKCr1q4eI8otPWwChXJ0Q9_t5IE=": "59336443000000", - "Kx72warQWYAtylxVHLkeWYYNswWyzI4rm2Nmqfk9MO4=": "512979000000", - "KxLqcW5jrF-CuorVEMk-QHr839bBNwZKN4coiq8jqvo=": "422328000000", - "KxSKLpY2YPkav_hwAAe4uV7EAGIsoZ3SNZdFr2LLTOg=": "453059000000", - "Ky42pmua_XuxA6z-m7L1Jms5fSpwygZVL0YMOYnPI9I=": "4155440000000", - "KyC-nXug36Uj-L1rGgeQ_1qYF4La7V5xKNjYPubrF3U=": "922292000000", - "KypirK5luqTiFQHF1_F-uQl1rPLfBfk-1bHeHXrdUg0=": "1794036000000", - "KyqtvVWy_55tDzwmg1SvQWY0QUikHOPzsgBwkfcD0uk=": "3852488000000", - "KywoDepRRPTHC9mCEsAoGhQoBsn4iFFibdQS0kuh7F4=": "1897049000000", - "Kz5zp9dF6HADUbudwrRywOu_NT4OsKUrnw2z9FpPvL0=": "1949879000000", - "Kz79E520k1qm2CCxP4PkdJXIU7mt0nWltJy3gwRjRzU=": "385507000000", - "KzN2MNNtwhgocim2K7wqOWeZIY2i4ZcBuaYvGiK680U=": "958891000000", - "KzfCExBou2xLySqBPkqAAVk8GSdstVRXJiOU-CgXugo=": "483333000000", - "KzyLHbifwrqvOwoh-38PNlGZ1KUQ3qWU5-NE5S4rx1A=": "2055429000000", - "L-4YOUpkjfG1wm2J6WWZqcCnAVoyL7_WiDKnKgOCT0M=": "958256000000", - "L-FIO8Jw_JAkQ5Nm-1oU_kp6-YgSpbAUtlKPXWn8IA8=": "457804000000", - "L-RZw0eawAuv1UXwH1raEi_7Smw50sgpE3yFU8Ye8rE=": "363493000000", - "L-f2Y-AyF8QfEk8x0axEzSpyUllgIGB-4FuY07-fBgA=": "33176173000000", - "L-ieW6TKeO6HrGYlNRbveaA4QFuHvG8EVxDCePm63O0=": "407808000000", - "L-kZ-QTDHr4fAXTDoSCQyPd4sUtdZxRjgHAPcoj4IwI=": "451268000000", - "L0NACyqfUXpsHVr1bVhZbTq8faX5pcmJT62zCaqVXFU=": "2712925000000", - "L0TaXDdmHg1ANwdBq24m83UjMP2arS_6huOYCzr610E=": "628794000000", - "L11OkA-dJicDTifGLdImvkdZO0s0AupQONtMzxf4hi4=": "650869000000", - "L16kfgxgsMtfkMLEBWiAa_ZCmWB7r0bFAyGx7WFgfmw=": "3813588000000", - "L1CYHi0qJ8Jr_cFWRIBQ6HV_f631NOVRSP9SyUbftig=": "2272638000000", - "L1IztYhYiGfN83j7pFijRH5RaxW7suJuR-iUrLjrpok=": "443773000000", - "L1SAMnXuI6fTFewV8n-FtWNLadxBd0Fx62u67HIva3Y=": "459419000000", - "L1XWWEsx0kbzq6Bb3k0dTYpdE15t26L9jhvz7mf1Kk0=": "451756000000", - "L1gjK3K1cQNtcaB3-Cl0L2Wt2vAQIZtLYjnLE4kSKO4=": "385505000000", - "L1wfgsz1qZSEqkUKTd2M2oiMZSPeQ8H17d-Q4nlj2YY=": "7529253000000", - "L1xLr9_AqYQ0XCIPffVuLOx9gnCNqm9h5vmXvi0K6dE=": "385510000000", - "L26hhuABWb-p3xTVeoiCuuVMOqW3YsdTNBJ9LSBTu3M=": "1156519000000", - "L2X3VbEc7eikbyRAiUYQHqBVEEfB3MmfiZLVW3qymU8=": "1135024000000", - "L2evAkWadiU-8CzeRA784RfXKrdbwBVnGy0MZIHcTFc=": "579369000000", - "L3GCn4fpNorOwKaDp7jdyf4fphetDJbur0evGmdi20g=": "509711000000", - "L3qXqIIrFF3_wU85Ke425XjeQ8oHf2bGnRxLs_L1wWA=": "76651905000000", - "L3u4yJCjSOswZxV8-7aN3MaJbd81D0MNwdSoVP5iecU=": "1134899000000", - "L3zxXMMRN2Mi6qoqQ1tvyOHeqZgnNsNnjGaMfJqiUmk=": "2273889000000", - "L40fJb676-kIzbgrT-NVXaePR5UtHE9ZnujXXpkLHws=": "3841471000000", - "L4CGf4hhs9v0AdEk6VLvOGpCsRuSJ2NqGCbytaAbZwM=": "1257609000000", - "L4XU2CNcnAz1efjNhR_-xqO2mZlY6zGwA263vRD0CXA=": "374288000000", - "L4dZHx9Sj6JG2aEoB1ckJitaIthP9v0D-Am-2Yq_q5c=": "411085000000", - "L5IUFXPVY5sfA0Q_CT_PG26c3M71kNchKxl1ZMBE-6Y=": "10014866000000", - "L5LD-Kxa3eJE_isVbkbNtuQEnfNzfu9STh_iyv9LTaw=": "5014953000000", - "L5NqRwifIjwjroMqx-d7DhAqfGeVCUMoIldQX3GPdmw=": "4999999000000", - "L5Ud9ZPmAfU9GOd9NSK6AVA4gRVXc4skpoo-ukEzfYM=": "3840705000000", - "L68HFHygmwXhF0Y16KRLD7Pca6vicwWTp4JD0y9tKr4=": "384615000000", - "L6Aas0ROpsoDG7QhKcS5FolTnUZ-Ycba2gM-XAeC8ew=": "961856000000", - "L6FxUKCDis64KDFWDeCFzRFV5bh1Eg7jp3gx47S_9O8=": "1305000000000", - "L6dBxCA0K_WkwgbcjTp1DeYe5vxGeKvg4c7QqJ1gxmo=": "2006003000000", - "L7AuAYp71a2seOx0zhGVWepodYU7Vvfb21CJYB_5328=": "382394000000", - "L7U3QkVTjSo8vqsaE43i8fh81vAj5Q3MU3sBxJaOYys=": "1807692000000", - "L7Zxuw3Yuggq3xarpr0yq8YNTag61rYv09BjkCzxCes=": "3852392000000", - "L7gtxqGTh14Ei_UbzMMENK9XiLuGiZH1ri1HrWHhMPo=": "519230000000", - "L7pZFqTE_1q5OCYyZH3EeiW4UPmFl9VQKXc1w1lRHBs=": "384567000000", - "L8WJzuixAihnW6_iX7fEd8WLDG0Yb-B6lC3syrH32Us=": "1728109000000", - "L8dHcGXawJ2O5AeiX5DOvbn-6joj9cGvc-FF4SJ0VBs=": "948553000000", - "L95d5t0N_FgYzSvcVlleWOJfPmzA-pQvGaFb2hMy3-4=": "450573000000", - "L9DMZQyUdU4NpP8Zuyaz-qpTDJ1j6cKpMe39mqU1lYY=": "481282000000", - "L9S6xA3hrwK3TiS_6z4E0iftVavcNSlwqTe2kwlfkcA=": "6624205000000", - "L9Yajey5dihK4xc-3cFhw6UXxfCTK4sKmrX1oRW-vm8=": "455506000000", - "L9a2nb33yB2HKZJClfNAyOV_GI0TTl_bMwTEjOHQZdY=": "2356327000000", - "L9euMSCJjq4vzHKZ-nL8kYr0r_m9pZdIoGWvoK_G8CA=": "823136000000", - "L9p-UyBeT6Z2_SNdDb5CfyZfHIZxUKHqMMZ2n1aOuyI=": "384615000000", - "LA-t_UffpX6J5l6bppyPIwYZCK3gkZ7r59hlSR6U9TY=": "4166666000000", - "LACjvTpkIT4XZq-FKIq2gFvm9qbRn-Dx-J2UT6N4efQ=": "1156519000000", - "LAX1pruZfUvnVG6Z9dnU7kXucA3KgL5XjtYXm27X42o=": "2084505000000", - "LB8F-JnDV8JQTuHzy6_dIV0FDCtPLvLsnIZUrcEnTnY=": "427562000000", - "LB8gh19HSfP4HF_3eXwry5pLC7nDPeMHWnpuS9-4M5E=": "496283000000", - "LBPSj2XWmAUnapkMn5X2C2fVtWHX45Bm-Nhc6vpXLhE=": "1240189000000", - "LBm3sfcprhk9fYAYM1qntr4n4Il9OeCkZVcc2iRvnmI=": "378633000000", - "LC4oQhOYj22PtDy5MUVqBkCibSY-0aQIaAAYKcuUXNA=": "472079000000", - "LCA8bLH-8kD1psvc5xqnPPK4f7wCtWvAwgbVXXeh3Bc=": "383201000000", - "LCwrot39gZS4szGWQWrGc0xF2NvAFVStAlYlbmqA-3A=": "920881000000", - "LD-e8eMck1ICIQlpxXhJZWXUZC4m5G67RsRJMBdI8eM=": "388085000000", - "LDMTYY7ynFx3KrHgH6iR74GhkDfDb5qzj4vBVDBfgdc=": "383005000000", - "LEMU64HcjpSVVcC3T8VksHswoKuN5VC3FC8jhDNZ_vY=": "1153846000000", - "LEVWZdpmjFiUKw8K7owbnnyItw3Jmo38fz1UObVL3NY=": "415384000000", - "LF1WFpL7TrNOHLMsxU90V6DozhoIA9dig5wHxBcEYhY=": "912797000000", - "LFgLeiWH3aN9OmsRl1_PtnRGxczY29N3c-4PDcv_eHU=": "384571000000", - "LGKYPeNfbwll3yUMb_vYOT4o4-DnuC6N-XPi7IKDeWs=": "1156518000000", - "LGot8huAvLwlIM4pg0ZnJME-YozOxScNMBEFQkPVVAg=": "451255000000", - "LGxq9rn-OpyvzNj4XBhMJ47mVITNXhzTM2KJ5JWWoFA=": "2084322000000", - "LHFbq_c5B3nESfYFUWg6mlD0ldgf_iLW9xMF-cg0mYw=": "816101000000", - "LHMoiNd-TRqpZ-Eyos2jsZtT8dZW0GJ1ehpTHEaVb3g=": "952183000000", - "LHUhY-bv1oiUeARmHdXSTPFo7gsgxXMViOzFePdFdUE=": "383204000000", - "LHWT3Luheki0qxUdYiGhJuK0srwNCSYXHKQ4VM1thpQ=": "384615000000", - "LHr5fQ0UVujn5CJU28Yr5cj-bOGIsjZ5kIb3LkUT8JY=": "874765000000", - "LIGGC14jMBVJHekm3rrSOw5ZU1eeq5n7aA_8stMMOf4=": "462687000000", - "LIOzjdXbz7C0-Y5sYD5mQltVwBIkS8v3GEFruoYVegc=": "3741282000000", - "LIXaifBiSYpy52n6nSGJ3mFTXGEV8d0QbjevZD6GKoU=": "385500000000", - "LIZj-CDL_0vnA0xDnm-d6WiFwJYBI4XqOid62hDjvSs=": "385506000000", - "LIaVzvgql2ld9fNDu6VhdFYMb_90vBxypHDDixSHwK4=": "764026000000", - "LIxtq0xYIZJRx1DKGQWoNT3fQ31AiZWyknqmqWxb8qI=": "4705862000000", - "LJE-EGWZd83xd7pev5INYLU8YGZ4He1xif8R96hBwTM=": "999209000000", - "LJGPxPfQBG5w46vJa-AQ3mm18gD6B3LxrPNPAsBLkhY=": "3978718000000", - "LJbY3YWf60yZjYeBL8prE-YZWccDs6_7lGCcolNeIFQ=": "627808000000", - "LJux9W9OPQxKmVR2fdFORvMYQ28heoA9d9mHQbbUuSI=": "403850000000", - "LKCZugSkvdGPYlNQvtpjwbmOoB6selMwIpJxpIKILiM=": "769220000000", - "LKZf1y86hHrfjGl07AkDMe-Ef4LDbcEcLWCXvbCU1AY=": "385543000000", - "LL-7ZuCfUF1bJx4sWj5XmJrOt2GaypHxv8jZMevVvVI=": "5001474000000", - "LLAMUN1zj4SDQ1tf-xYdYx_w-PYctIeH8ChJh0J6AOI=": "384615000000", - "LLJFWKyIljccEseEp-ZCb1doYq5rF-svJbh4jPrlS4Q=": "384127000000", - "LMCaNxxfLkU3QZH7g6EzUFLvXuszqa-FC-9EyYb16Z4=": "1999999000000", - "LMrEOqJIMv5uV90WQ3LsrKR_TRE-UhQAK44nzl6a0U8=": "1923076000000", - "LNElmYBz0JnLEVFnqGUlzS0SePQYOjkGuuZtplrXuqU=": "454545000000", - "LNLsROUjI-jwh45NKZdfPJYhoQinQ6YOl1mDJPmqhsA=": "385614000000", - "LNOiUvxcxIFZuWP0ZoPk-Oc-nH5xDI_8q3OJhEtWae0=": "390437000000", - "LNs6662TMtlG3-knzPn1i0dReG6CW474__nYIlnoQ_4=": "384615000000", - "LO1Ln0lkMy6heQnhqoMjhHOP9_K2_V2txg8sOAV3kWs=": "694056000000", - "LOZUpKFNHvdI4CHxNxWV4KTTSTGFi-Yxkv1QDo1X4jQ=": "1155259000000", - "LPOPtG0vU8qp46ZLPQ0YNJYfoW1BpgMrkvEYNx1SgqY=": "3783416000000", - "LQET1lC8cTfffCMYNQ3C36awgRT7mSWCyJx0_rWKYNQ=": "460408000000", - "LQM63cOkg5ICWhO1bzO42iQJo8t5--ayssykJUo8tP8=": "1138034000000", - "LQP0xDUAP-ttnAbBXGNhU0ubM49NMskzCKLpvQ6ffKc=": "991445000000", - "LRMa3qmyqbj8xH2H0d8OqaNAiWb9dOiE4dNHhmNbRqI=": "2307692000000", - "LRnn3LeTqfeiDDFi17VtcfYn4D06TmoZr1V2a5pFDAQ=": "385507000000", - "LS0tXqta-Iia64nE9ThFbC1vToQtxp8cDhaeFPpbxyw=": "908798000000", - "LSIUWG7v5uwlExPjtTah97ULSzCcf7urKYxxMsim2_w=": "601993000000", - "LSxL3LjwnuSp6o-VmjccwjMeIa1UVgrrcgyPx5TdXug=": "4125716000000", - "LU0hax9O94DVsdXzNW3B1dL9G7R7QqpJuNElpj1YdBg=": "384615000000", - "LUbyuxIVaPqtck1R4dksdmKptUlyj6VxhCsGBbrA9UI=": "418855000000", - "LVQAXKJe4fu-ZhwWzeczVZAqsZEv2-_yFMK-uJEksmo=": "1729341000000", - "LVXR2uefj5X8AQ7NiWrX9_42noRiXWS-fUy4XoADE6o=": "457090000000", - "LVeMKZNM9owbXr_8_X_sSqu6hM5qJ2PMXn86ocHWjP4=": "12831666000000", - "LVg_RpB5CWpCYd9KzBpZI7fh6Gf5QDme4Hk0j5FM3KQ=": "1366800000000", - "LVpvo2T3RqSGQgGDKYwi9-N2suMeofKlQ-2uPTYSGbo=": "384615000000", - "LVyOBU2c69tkbTD6ZszrcHlWGSGzeAcUK2t0hjACscY=": "374830000000", - "LWCI-i7tqYf_HslaGgm_-8SDz7uzQOmAXcsb1H4Sm60=": "384615000000", - "LWNyJCA2fmVe4ZCPUlJF4aADes1thqnyuENuRTeO0W0=": "379260000000", - "LWYl_wFwgT7_MdIOF-yet40Fa2oDGWyDJgasmPnaIT8=": "377468000000", - "LWZEjzvBGQiZQLmD8Nvk7UhH42c6_GhHCPDmaWpOV7k=": "1156520000000", - "LWzeT4DMrzkSHdUs5YypZMlIoLK3ftGmS42xmTXxKtY=": "2066100000000", - "LX3kmTytSVcmzgUKw0u5SD1DF_OjlHa58of8l9omJmU=": "384615000000", - "LXKeLZE7iA4chnDQfnA3H5h5nFGPgUmNfzAy-ZOGSys=": "1954545000000", - "LYQlreSDStwsKWH2DtchKr9iEmnoBRMFxAuWE1vYdjM=": "2105796000000", - "LYUppaMa3tR6L2lNKmItUp2-e-cZdRJvXPzd4nkAzf4=": "1156517000000", - "LYnkbhEeKrtrXjromN-X4RagKTmieEj7eozrVH0cJ8s=": "8333478000000", - "LZD_U2OO6K_sCnv72TtfXOSqeZ0xUwqquTrN7QuDXkY=": "2081900000000", - "LZwBxRcH70tpmjmEp-0Hmo7m0lc5qY7D0cvQZzI0rJI=": "1917704000000", - "L_4Vlzu3aBXIIg4Km4IW5zHXRwYZyyBULc7E6Uk9DQ0=": "754069000000", - "L_BgwU1TC0Zr9uyfTC7TyFimccahi1RG_7vCCvh5YJo=": "464300000000", - "L_GAikZhrc3YyGX6w_W1PFYSYuYoDivU7gkAnC3AGiw=": "469944000000", - "L_GuOtT9wJx1xE4d7pGIqcjxAMREf0kXRU0eNnOANcU=": "9544996000000", - "L_VhxNNjO1bBPkPTRXal8a2GJ2WcV4M59iiZC1wF0fc=": "395545000000", - "L_gkAY5bp5L8s4y79dMlWth8RibzTaPyzNBTQS_egIc=": "416666000000", - "L_q4nTEpcx0OMGiDlIsZCNxT9HfHqldCUsKb2HuqtQA=": "576725000000", - "La9pbjgi0mZ842qJO-d4JygbRu3QzsElchF5cr1OiiM=": "411085000000", - "LaEvJPmyxXxoIVibrRUv-oFctkjrhXAvi4WzJyYZP0o=": "457641000000", - "LaIHCpjI1F27qp_oqAmOeyJxVVmFG-LXCHZcqO9XtLg=": "2478561000000", - "Lb8ETaKSVZr-ipY51bwAg40qT3koxeuBv3UH5RQxZLc=": "473848000000", - "LbFpYZ1CEdh7wRZ7kko8cgiXLc5MWv241ftb9xsiFNE=": "499256000000", - "Lba4PQFHbeNZ-rfpLL8nXZoxXik4exnR67OAgTNLNOk=": "491847000000", - "Lbom-f5n9mu-fT8HrVaZEC9Ve7xgP_4HTNc9aeyaEQc=": "417643000000", - "Lbxuv8JLUifXKrajjmEiCyvEJ7v-cFwfKJ-n-ITrw4Y=": "892610000000", - "Lc2jbw98Cfj0qCXpxSU024Kcd7QX7gor2uKl-KOGcPI=": "379122000000", - "LcEiFQvJkSSoR8hvbxFDGaW0IvtKeBQIc3SYjh47CME=": "1964761000000", - "LcGuE_gtwc1xbMlzYShkXl-WlyYuu10KPDlXqUPuSwY=": "461154000000", - "Lcg1rO55XpJDdD1JknZ09NovgdWbVmCt1gwwPSSOqfI=": "1864361000000", - "LcoE-FnAFHTuUFrTezU8g_twqRQ4LkPpTwhPYdOnyTA=": "5517798000000", - "LcqCLwQjc6LDDDCqEYOxyAPEwcjwIrN37aaKB_EdbFY=": "2496630000000", - "LdCGqA9M-e_qvgeNrkKImRQM9YIpJnQNoLfBl0bXRhM=": "1368914000000", - "LdMzQsDlpIneN9KBVovL4m8deSYgaAAszYhMSqrDoh8=": "1250020000000", - "LdoagcD7RdNT2zajAPmqNPdW-hIEGchnwNQX_1Oan0o=": "732661000000", - "LdqwqOzvJLqYfhWiQQtT16InqpU6nJHvlGRCNP0pXmw=": "1999999000000", - "Lduc9mlmE9_LdGF74G3RXsLJy331HbHgG9Nl_2VAIg8=": "1153873000000", - "Le8xUNGg98tkTGJZrZ9OTcTIcLeiIDjPECbJpjn2JDI=": "763607000000", - "LeY5YMm__NxV4pcgvOX-PcZj3-qJBueGirHvw1PVAxQ=": "390037000000", - "LeaFg1ZP1rJqNdGVA7LklMTal4x-MW1eQhNYm8yhDOc=": "1217065000000", - "LfT6843HmBPicnExlMLcbQx1uyMzmSNwlMsKxeBTFdg=": "415817000000", - "LfhLYeY_gKGL4jFTwUBVuIHGE5TrMc04rfupSzJ0zCE=": "1923076000000", - "LfndX3clXTayDbUjrxncRUoPrW2S7DqPJOjvCgb7SkI=": "23588100000000", - "LgMWm-rMv2F5cHiZSVxsbVzoud6XcHNFy2JxO9kZtfY=": "471532000000", - "Lg_ZKuu2hKKFZ27KyBFzpmVM2JoZcJYYrl8daMjG9C0=": "30421226000000", - "LhS8p-1p5OZF0aKcGYFAWBQeQMQ1u-LGKk1VAkAp_XQ=": "1145066000000", - "Lh_BhmkeLmSq_W_g9TdE40VUNkw60mkZj5-JBwthTNA=": "3846153000000", - "LhoYumJm-42It3yLSNj7p17Px3iWkgHDfSOkDrkAvUE=": "462146000000", - "Li4jlFgnIYP7ZHhPx74hmxIUog09q7aSQ5DYuPQpEuw=": "419408000000", - "LibmBCAyqg7UvCtl6Mei_ip7-Fyb_tJgoT3VyaT3Z5E=": "544175000000", - "LimbPqy0ruC0ARh_kLJf3SmgbFYUuPyUZO_EZsgbIqg=": "407808000000", - "Lj1-M7UnetCiSdbm_0gtCkqqmrHPnW-2wJb3rf9Nn9g=": "383485000000", - "Lj_CXYYI-PsHE_zNTQv887qpjEGw5VndOsVdcHu1m0g=": "377384000000", - "LjfcIlLBZuH4oN9JSF3EtDY8231cleaxook2APJ1M9I=": "1249999000000", - "LjkQRtmz0TXgrWmDVKDGtEvk62CcLgWhCrko_C7l0xg=": "1346153000000", - "LkDi3w9ks-OyM5watlh5XY_WbGluyayrJvnOCzWewlU=": "416901000000", - "Lk_4UJwjxEWbhVPyymG4sDkd6tHNDjnC1PhBzJBq8yE=": "396485000000", - "LktDXNPcbHAXSteyCtF4i6qtwq1-pjBuJ1IwWVvdmrg=": "384615000000", - "LkwtMk_VGuTbgB72RCoXjk02fBCzso_ZqfUurSmwNcw=": "419858000000", - "Ll-ZXIJDbeZKlZ_gDSQE0YNCKV0eafjh00T1axgjUk4=": "926626000000", - "Ll0b10r0s04nLp5gZXcZQXkxKfIBf1KY9Ul6N6LssEc=": "416666000000", - "Ll1kTdvjb6ZdFlmAXdr_xITY1rmGOygvNVY0bK-QFc4=": "1481723000000", - "LlXPcFfjgOsshDJ5m3ZIXeGhkv2dc8grE02_NKT2G3c=": "772250000000", - "LlbOiY9Y1JKtgzkJnnMntbVcAPZmWhojUSUFF6yrHLQ=": "1151841000000", - "LlcRjYnHSE2aTAhXs6RcuOptsbvSJcJeJhySI6KMqBY=": "453003000000", - "Lm4L7LtjHwP39motM6youzGYzsySoSv9IvCU8cW-Jcc=": "762357000000", - "Lm54Mzs3R1w-lqgYkiykSN1_nQf929C867o1kbFfHPU=": "416666000000", - "Lm5kj1Cy1Fwg_NZvWj1ki-C9BkkOuWE9WbnE1q9A0Ew=": "384615000000", - "Lm8XH7EB2Jyadmw8ypzAAZyGuVuJjt7lu94fYvdiTgE=": "1133078000000", - "LmGee7uLzsaHMc1qqYhwG09SnBpKcfAVYwiMg-sTMoc=": "394920000000", - "LmIHrRIx5fRl7NO2ZZl_IJ_VLhcBXPr1_4U0CXuVngY=": "445221000000", - "LmY_qx2CCdcXkkAvGAAeQG2JHVb6Z2H0w3xzeH09hs8=": "378510000000", - "Lm_epTMAFNIwtUYVupW7_y2GzWQiqyrnQcdzl_WInH0=": "3778454000000", - "LmpS7kMfY-Zr3dz46xSuzN7EGT0B4zZeORL1GdqsyjA=": "3214019000000", - "Lmr9KySpZ_NMK6oLCIZLyUuH0u3LMk4Qsd3fplxEe6M=": "597849000000", - "LmrQA7aTfTL44AhU4bf5kbmAxvYjCZOHeQElo1cEcPI=": "31830185000000", - "Ln-y7SocUO7bi0aOKusUlJOb2ndN3IrgxA7QFlIpE6Y=": "771545000000", - "Ln0yNPqw9BCfvpcl2e-oQyCbjcnBsQb_l3kT_x-bN-g=": "12540324000000", - "Ln70J4optuc5Eu0m5_YAKbNpMMKcq3K6Saj4lxmhMEI=": "846689000000", - "LnCDGz8JXrLkGFU0h7pTOieSi531GtdIkIFpM6_pUks=": "408128000000", - "LnVl7YwaTlprQ0wtjSvD4lVT0dujXxtzpdxxOLnZ35I=": "414900000000", - "LnehWSU7azjKkCnHPu0oKuq_Kr1WaFDqAqe7j41sLhQ=": "383327000000", - "Lnzs25hayRYsq3SdP8WDDPDUgtOCcaim8v-tsym45c8=": "5980679000000", - "LoLnmM2ThNiG4zlMDyhmxgwNWsrJWHqnlkmC4_iC_wU=": "1480210000000", - "LoZjFbKmslMadLaZm4qUOhi944PIpkrTlQ0Zv9wltng=": "2916654000000", - "LolNKXK9dmmz3urM6bWrUO7-U-q6y0fswrBC6FMbE5w=": "1971966000000", - "Lon4aDrj9LF18INJrJVZDahyIxEE3-E0n7YT1DxWsEM=": "1538461000000", - "LqEagH7nfN80hmVCDo6_ZgEjWQ5Jv3KM1lpjTztwRIc=": "4005161000000", - "LqI4G34OzM-OzmPI5ddr7uohd3dqYP1KJADqO-IzkgI=": "617574000000", - "Lr49X0gfCygVtfFVYl6ydndS4m8g2ci0bfTmoAmlW1s=": "411768000000", - "LrBllDwiuwVwVhXrThWQXEtixSMvj7dXmn1u8TFERYE=": "915299000000", - "LrRitSvJpLW0EgAIjcCbV2KV0sLr4NCWwr4xjLPJHK4=": "417532000000", - "Ls-jutoRcDu_85aYn92xocbvrvazuMtLLB9bzbARHoA=": "1818181000000", - "Lsx0zDXeb6PopuHaR4v26aj0zqDyUbs0sRBDk6LMJ_w=": "1076134000000", - "Lsyy-zptF3d2AC0TKvsWWSij4Jv5SbOal5TuAFZqF_Y=": "1162096000000", - "Lt6vk9nMFrbrAmncPhFu0qEs5NpCS7HCL0kypCy793s=": "15609474000000", - "LtNokDAIGoPBznOzo5lEo-AXDKe7Zlf_e9-ZsmkCExc=": "381802000000", - "LtbOw4bpQ9Pfo4ou3TFYpjDmb_E3Ui8_A_wIQhofyrg=": "2055996000000", - "LtcPD-VcFFOWMLOj_0GB2fFny2MdduXHDs3WocA2VyQ=": "421246000000", - "LtpFwvW7O458o2K9XpK37ZTnVyw4eFte3-n8MBeT5EE=": "454280000000", - "Lu5DBl-0rqAvK49iOb87TlfQW0xMmQCvb9_igouSuvI=": "847358000000", - "LuA0gnXnnInH1Js8DWdyazK0ApBKzBg3-6A86B-0O5U=": "411085000000", - "Luw-cWmlHmQHOf0WXMNU9JcQ0oHmRpDG8JsTQ1sPcck=": "4594475000000", - "Lv0iOW-_BbAZhRtyAmk5I_YcTVeqpjglcuMz_v5P2Vo=": "909090000000", - "Lv2a0lFORHV6lfdkWqIluquWMnuH-30zh51EMMgz_Go=": "468409000000", - "Lv6FbZsNUs9oJl4WlY8hyZVX-suwisKSwXyvS-qgViY=": "4166666000000", - "LvjS2OeD7e9THjbY1AewixSrlvCepD73HrkAhtP9HKM=": "384995000000", - "LvpXosiJUjhC31ZDUOav_naWM65eQtZTiOQMSgoACCI=": "1145321000000", - "LvvwZDyGz6lQ2I0IbWWqqtQ-QrnXxlnE99G9PjxRVA0=": "371139000000", - "LwD2Vo6Yfa0sHotZqYjlPoH50xVx5z4-rxpULHGJmf0=": "3949471000000", - "LwYNSbh8FLdPwpPOjrauYcLGj5tzzg-_FVB5BZQkMVg=": "7598572000000", - "LwhAe2SEXVstTor_a40EyPkhq3DHHyIBax4nqYtqF2U=": "768095000000", - "LwswUUqieT4ap4fu02gGmRHWXrXnpqEcn-TEaz5dpPA=": "361111000000", - "Lx4QRXKrRSRXF1vO5TwDBZ_Y1pwpXZPB9n7ZVFO_2EY=": "418267000000", - "LxkT2Fwb8I75vheVn1qjwONFRLL-hEdYVUJ9DM4yQyw=": "3461538000000", - "LyScQ2vuYku2rpTF38VjABrERHYl3L3JfHSXWJFXezY=": "422442000000", - "Lz30-d4jMOAuiYVyw28MIKKl9cVoaMtt8GloVAKhFTc=": "1388621000000", - "Lz3fkQSwFSQZLp7jclN_5t5z5-lBI_n-wQAA8wKX3DA=": "385507000000", - "Lz4dTCDxMDxklNdt5UT-me3b925rHfvTcZ7t_nxXaeo=": "923076000000", - "LzPIn8nUOzffRP75hCtAd9M5EiQvii-PsKi0MOt_ATQ=": "416702000000", - "Lzhp4F7mmPkqcsKckQbj4rCro6DIiPl1T77T77mxmEg=": "384217000000", - "LziqPCInaj4vWTx9rtUrivrmQWjv7V5TlY4WwBiuQuw=": "446308000000", - "M-qeytbwPACk_iV0OPI3XUA3l13LjGnsV1tAS3XSuUs=": "3269230000000", - "M0GEcDpyexg22a5DfBB7vnUklrHflrJ6XKoNknjy8CA=": "41380876000000", - "M0PQ6MBpR5mTckprhiPOlDAzdU_O3F1h90C12zoLBTY=": "384615000000", - "M0RarDeHm6XJP_6zwUPJmLtojNJ0d58eZZWx6u0ZfAc=": "3969319000000", - "M0XNKQvGvaWM3Y-dDmOYxcLSp6MtIyoOt_kHlwVsucQ=": "1998608000000", - "M0xSxQeJOcyHfmYQVDBydV-fALFPgiEXTx_YK3akGKs=": "925700000000", - "M14VClJ1SW4LjtkIV6MsUL2Ibi_Jeh9JayyzV8jrjN4=": "384897000000", - "M1F03hQRemKkhmWH8f321yZ64KIiWMupaDzdO_0ewQ0=": "2346153000000", - "M1fI-etrftZYgcgHRhtSdbrIpwBmNW3r9Hq9C5mAx8g=": "384659000000", - "M1fZptaXFOEPM-hnCKmsEZlVmihJGlkFgo08t7ocsZc=": "1520514000000", - "M1h2sD3BArceGwWJp9NLhLude0tSdAplYmgcBE9Fwe0=": "497000000000", - "M1k0o20lBWCPjRE7SzjxlqaRbH9_1K3TmYUVFfr1CTM=": "387856000000", - "M2Fndeuhb0labrgm2MKVXVYGGOGt4WWO_u2wdGOWj7E=": "4044787000000", - "M2JnL_GRgSVhieHuclm3lG54NF9Z762YL1mKWweGzIU=": "832329000000", - "M2Lzp5e4AFt5rrl1C_d6_ayyYMoJ6VWrzCbqKN2uPVc=": "1258824000000", - "M2wrSxz_b7i3RdtpOHxwEjcRTF9llMfC9g4Ek4xFDjc=": "388046000000", - "M3cfd7ZUsQA8y_yW2Xfhd-d_QRd5-knzenYAq8GHdAI=": "457736000000", - "M3uHqDYp6eJ1091s5GXZWPx7VU5B57a1i-bSSKTefzo=": "4116070000000", - "M4VctQoD_EqotzlIxybnQ7j8gHLQurkVIVf80HCwYh8=": "585762000000", - "M5A5n1tFKusCLc89D403Q6uTi6Fmi6jlh-AXhX3TP_8=": "463022000000", - "M5Ca8rBy4M85Vv99y_QaC9B2OHeDzADtslPrfszHjbs=": "1154683000000", - "M5J8slap1h-pX7tsFPpL91Ri7zyNaD47K_ObQ9gpfOA=": "417537000000", - "M5pDXE76cH7vTWk1R6eX5ai7x167WNWFn9hnnlJn0OA=": "771504000000", - "M64xCBwVqC7XPvHnJ37nNMDpcSAlJjguCO8LAViz8g0=": "424673000000", - "M6ZQzuHfTQ10K3DiSUPQ-_1tbvoT7JJ-ZdqZXaWilv8=": "376125000000", - "M6iaJCWOpEX2bPIgiAbZmusnqUsVSDRA27fv8mjhgxo=": "3897184000000", - "M6wpV_UjtG1QBW8mAPL4dbkhnuI2334XOSJ9ki61wIg=": "422561000000", - "M73xcRP_hDdMacphLVqqG-hog9W_6It-5Jn2B7e3cfs=": "385509000000", - "M7E64UAX4Cvlx1nTPR_nsMSCOulFsnmk1-NfdiJOE_0=": "384176000000", - "M7P7Pp4WMvIxl40tXk9RexNmHclfrJF7LzbduCEMN8o=": "575314000000", - "M7cTSHc1iK4_n0_eXWDzZy-QgST_4kPY68OrgkqBms0=": "2055429000000", - "M7mEs4Vmcv2k6FAZ2CJ5TPXX7_7SNbE_MCW02kBk508=": "385506000000", - "M7wIcVvXf_FX6A8qOp9FgD74ggcyPqUkEJl0mAaY56I=": "4166666000000", - "M8I9MwtIRexLvsgjYoMDYQRKJ05LsQf3SrH591UYB9A=": "2032018000000", - "M8Ik6BUeoDoeAcyTIPNJjLtpH_T0YQACM9AGnPR3sXo=": "470447000000", - "M8OjPs8OluNBHeTprzqbrFnIp0MQy1ds0LvTmBeXRZM=": "462839000000", - "M8myfTNBXmTHzQKrz3JirT1H6crJH5Ita2WbZZvojVc=": "708353000000", - "M8o9jGdgY4sMUaoDLe0zyRS-tN9C1maemU99vB6up1Q=": "926541000000", - "M9EKQzxN_vi4Q_i67UKx81NII4fMVlwrmj0ocAbUaAE=": "379329000000", - "M9Tfg6dH4WluPHBNVJt6scgp_rywkW6PJevvkskoiWM=": "656536000000", - "M9qpAkt0Tuql-jzRNrARHX3nStd-skYtfYBQLXnuNOw=": "1936759000000", - "MA11lebCvCOeOni7sF2AXw02GA2HeGMytaToyVLWihM=": "385510000000", - "MAekJw07XmyxnZqD7CgVtmyx43y48k-mrMriQlGbWAA=": "452618000000", - "MAl9dsLnO1rpbbNWy7DSBJaoFITBwMVnhNRVd7NMRvM=": "1216806000000", - "MAzqtK-FiwSlOLjsMNPu-0xZPBVd0l5sCG1ou_ZpcnI=": "2271161000000", - "MB4Dovwi5P3MYDnIlvQlPavUgmyhPeujkhyeeIxbXi4=": "422569000000", - "MBMaygou2-i3uD-oguo3yFGco3d35J0pyGqhpm71oHY=": "383974000000", - "MCCYmtsU1q735AqYuXhctmMsBBnsKDSBUK8ThohQBsI=": "2690159000000", - "MCOKPQQ-_5BN7f-LAa77hD8HhOacSM76o1kHc_JwVoQ=": "447570000000", - "MCWuTrN7DZm5Ygu-S55uJG64o0a2j4fFWgUqNf6W2_w=": "426875000000", - "MCebgep1WmVhm8-LQZH97JhR-q0hggTS-dDG3mgp63Q=": "385458000000", - "MCoFh3rRLOylDMV86InHYNYhxgwOvpgYM8pWB4uvK2A=": "1999999000000", - "MCrIWngR-myK8S9MkfHu7-7feTc-aaEVInR1FVJNols=": "1631179000000", - "MCsrds0CERIsF_gFnO6-ysNQarMvoPaEVmSASbM9GvM=": "767319000000", - "MCzbBx35mKzaartSYSeDKbAQkloIYEh3bYO19ElUK6o=": "456915000000", - "MD75s3CbhwiOw4M2L-zjjhV2HofJblIgh7KmfFDY8YU=": "417635000000", - "MDeTs5s1oMFXNvfHr712r_FOkeUoaI3okpnlYRveyZg=": "387233000000", - "MDh7xYI7dqtSqeBm6dlgCv9rBy7cLG5zDJFOQVkrzvg=": "467397000000", - "MDpn9urpwfcUkOD_RG-iDCqPi3bEtDcmNyj9yub7Zyc=": "2017632000000", - "MDu-1iYwMEDU4kTM9PPuLSH4a9DWU9Mgp-m7sGvlklU=": "469152000000", - "ME3FEiG3byZTz1qByoJEZ3c8Bbb2j7VyV7aLA4LL38k=": "2307692000000", - "MG4Pk7hcTGsh0DoSIifN6w5e1Z1Oh9F89GIwJKq0f5Y=": "914491000000", - "MGLZ7pd8_Ov1cIvG1QQo7S3k8D-ItJ93_spaon4dERM=": "1047135000000", - "MGVrgYAlgt9hoc6MPsR8Mtt5O9fU9v3yy7sGibzTSVw=": "455901000000", - "MHVwzkllgROtMzDLppb5EgrXoVuf-KpuJeUBZ2Wbx-E=": "500070000000", - "MHX4cEDVhkKKQiAO-v0nbe1tb-9qb71qh-ZQX7nsYGI=": "385510000000", - "MHuNko8RnS7QdaDLalzLIwFaYb0a2I-5cmR2uCJPqoQ=": "381802000000", - "MIcX49-azjCJ5whA-WU2EZCtw2SoP7hDlt0UASvMYzE=": "769230000000", - "MIxg0WhaSvPpl3Xn3Z2qqHUy8ah_MuYOlMcEazX9deM=": "1153846000000", - "MJCqT_AP6xWYMY4z_YVTD30VFhqpf17uGwuKF3GaHMU=": "810236000000", - "MJKTdN8BLD9Fj_l-DiY-mmbWnawInA56-c3DFmE_Jec=": "385510000000", - "MK7-acsWWTWeHF1sf9gmce5r-RnmY6whpme4LKuetOo=": "2528271000000", - "MKGd4VUhHCK5CuZ46noE7BSMViHI2XwBp8TCjEYkEx0=": "426338000000", - "MKRZ-ZZ2PiRIsbje_jWIxaVSTCuoes_UOj5KKmjT26k=": "463103000000", - "MKhkW-JT_UUc2aJ2qpESxqj_1IgYtyfHaNHUmWWjg3Y=": "384604000000", - "MKl8cKNm_yj_XW6kUYzg0Rtpb__U5_dDs-Rd_asDL7E=": "589857000000", - "MLfLhH6RetgMOPFwIsZHSdL8S0JLsrbj567HJ1yn__U=": "1923076000000", - "MMLabYuiURwHgCI-c2X21AjJ7xWKtQ4YvStFRRCFABM=": "1538461000000", - "MMV-70hhQ5U5xA4eIclu_dEH1XQFQGG_zZ044O84qGI=": "1997972000000", - "MMjtryCjCoOkWFi28zWqRSmHTSZ4F2mTwzUPtdR1Gt4=": "2083333000000", - "MMn2tRvAchItACPow0F89nJ0wuBAjbxkXnygnLIWm7M=": "500274000000", - "MMnRa2uHsrzuU23HrILm7peuoZYCFo7LcVFGnyRFSmo=": "453042000000", - "MNKb73g25V_p5QQZK6KyUAwSz5jrdCML8AJkNncndRA=": "462146000000", - "MNdZLnWLLnlAbS_30XOZjrJlZHrQ2l5WfMhTQd5tWvg=": "767487000000", - "MNpMuvl7KGJQ4qIkSNDja3PTuu2tntCdthSItGNYF9o=": "1542290000000", - "MOCOzmaRxxNmsdVXMl70ISBS3F8nbl4dQ0maxlfa7LA=": "3334016000000", - "MOh1kMrW5uDXrrMbqUGPq4DADiGBmi7ktbJNoVXKjNg=": "2305133000000", - "MOlTIR67kihbwoAsvZJ061UBi2kC0t_IAStWt-PPfHk=": "383158000000", - "MPBABNGbtLrvMFdF2arWy3Y0dReBCTkbVYq3xjkRmzA=": "384615000000", - "MPZr1XesAef5jgn21LQDp6wZaalCiYGT732UFEcClds=": "769230000000", - "MQ3GkU6s_TraOAEwWjY06m52u8B7Pu83anfRI8Cilq0=": "467517000000", - "MQ8udTqIukhcJyudmR9yo19dF0ypNtwAL8aS83Oy1g4=": "4166638000000", - "MQhR3lT-fmNdGsRC8Idz0G_VnOktrSpJk764Bp55J1Y=": "2743534000000", - "MQnQ-QI4zpuPohD-IGv1LjtswdU3IGXMYz8Oe7_hALY=": "576923000000", - "MQzG1OvUmrtrXcAEE5JSp9Ov_fIMNBrjyJ7v3M_Rhng=": "3846153000000", - "MR5FV-Spod4I6H1SJCU-aYVeuAmGXz81-qtiX6FcINI=": "998371000000", - "MRJji47obsLGFkq-CZxxC-sKiMZzPN-0npgxylrrPWg=": "378880000000", - "MRpbGS88HLTn6AQOvIS47Btycj7vb2Sr1-1E8e1zKT0=": "405030000000", - "MS8_hYODPYrzTmppk2f8j7XC0PagjwdeMRFQVoeumtc=": "1927554000000", - "MSjqcFHts4e_U-bmqpmqpm0B7DHsjR-BiDnR_ptShC8=": "411768000000", - "MTKrsse7XY4dzz4GetGWVXPhpL8ju1BM2kYTuKdR47g=": "4246727000000", - "MU01LXsvsCzFPiYO8ewSb368PVezi_2lE7zoQM2Uur4=": "1538461000000", - "MU1jn9k_7p2L-WauD9HS8khoz8F_Gi0_CA-PaSHzqCA=": "6219730000000", - "MV-WeNvOpH8qvlBvdZUhZW7QZBP8fCHwFb85JUS-f0M=": "1249999000000", - "MV8hlpMjKrvXYMwWi2f7Km8t6aXTnqt3gbN5dM_hVu8=": "1666666000000", - "MVMgaQEjy1VWe1lh1z6K-QW2CXyfE0ofOgi4JHmbcDI=": "1241159000000", - "MVQ14artiT9Zs3lBzyVrvuAsHGmVZSJ_UWEeOxZrymE=": "384615000000", - "MVue4HeoJPOYAQbZd2XujoFDxruSgY2KCVhd99J6f44=": "2213262000000", - "MWBBezMCcy5S_Dmfrou4Ze3P3RdDDGNZ5xuI87Rbmn0=": "829261000000", - "MWEqbERC4WViAcLzaC1KXcciggg9fBzOaj4lHeUv6vg=": "1970805000000", - "MWW7DUAKG4Ls7wpq384YXjpHvHR6UqN2uCpA8j69EyE=": "421193000000", - "MWY8RORPyRx4wXzeTYiFq1OuI_NOA729uZOTDRkGTdw=": "565461000000", - "MWeCkmblmz9IyIrr8PVIZdBW4BQegrxcN8puHFaHnSE=": "384996000000", - "MWiBChjSCjnC_oZo4-SczUNw1eQvG-gxlisNDInXulE=": "460759000000", - "MXQ961gXm9PZRULUgTCiQnSZE7Nf7TUlUZltxBAktAY=": "2371003000000", - "MXoFokuV3pyTv2AZgFVBl-IqhLkCYV3jMqLGkCMDZ3k=": "5553258000000", - "MYQuwKKGlyTpzOiGJDDCYr_232aBldD2_xLW3RiJRyQ=": "384615000000", - "MYnlUAlbXSpKK64I-c3SxGsLQgSIAsMd_UZeebfdV1Y=": "1153846000000", - "MZ14if__ch-qd7OjrGAxwXdVRTVaTNCCULzuY9xMiIk=": "10704106000000", - "MZHzPFGFwIDkSaQtIazhJRpYaJpumll008rVPjfaah0=": "6153846000000", - "MZz2PTYYCYj2BfjbIfaLY1b0vLxPA2JvAu28WHyhzZM=": "377887000000", - "M_5XpLTfv-OIKeSi_UVDuOMQ0yebVDsTGCFxwBH-4OI=": "385506000000", - "M_Luz98UzU402QvkCpmSPyp-LH1prhzUF4W5VQKpsXk=": "558321000000", - "M_lEFsjCOA3wwZ2Q5v0rNRAwbtnBx0Xb7-HTC-02tqc=": "544598000000", - "M_m31vK32vHCtODRcw530SNwo1LrIZ3Ca8OX9SSYyS4=": "462146000000", - "Ma8nS3XG6NARGTO6da-grfQUNIaNIgQngrmIAL9flY0=": "1153846000000", - "MaQGc0Qpu6rtw8cxsBdbYAZaVHZPfYoSJHYa4tVPSBI=": "1921659000000", - "MaSu_JKENBX6KFDcWhCLohKnVAcfy0YXTSTNygy6m9A=": "2300127000000", - "MaY62EH_eZ5HDIBUL5AlucFaUTqH306ClQ55XtrWuko=": "384618000000", - "MahciuEJEuKvEE9pqdO6yKE_0cVwDZhdEf7MY9lYobk=": "2499999000000", - "MapPuQ5-G-W8m_wiNON6eLn4PLYPrPHP9gkmN-oWp0I=": "404440000000", - "Mb14Qs-CIEjWLWfCjnG6nXxqvV5mYXJlWrHDhYLGkYI=": "3253909000000", - "MbGvPD-z5kzChWNHjnXWf7VzL9pLQCtiCbJ1eBsLmGs=": "4520695000000", - "MbNoWAfJz1kxPfxQKenxUc2UrvEU64SiS_iQPwkpblc=": "4166673000000", - "MbU5JQkpT9TUa1_vpO__itScgY-07p4UDB6tWmmpP5s=": "406820000000", - "Mbu4_zdK_WZ1NdtVqWTPpLiJaJRJUDbqYfFrfT5ddTs=": "400250000000", - "McBlS7WJAGx7e6X89XQz-8Y_NGN1y3Qvq9gEXozQfuE=": "454545000000", - "McsFNhsb2LdEpuvwBz2nUOtdlIkRQOjTibEgcya6Rbg=": "376747000000", - "MdFigxeL3TiZ_xHdKWI1dYGv5UlC40JxjvyIaQGKGF4=": "1005656000000", - "MdOf9MQc7B6stSNSynxObU_YK5SxkCZHztmguLb6Rds=": "453801000000", - "Mdc0lOq95YIWvpjLows80fcZ8OvRxMKs4RjhFj0eKOg=": "3846153000000", - "MdeV7ZS80JIBz7gUmCPP5ICrOcnU0stbYzA6rEOEXk4=": "832966000000", - "Mdn1_gfpeLG7QXHqwL_1tP8QGiZR2hRSv2-u8scvE88=": "383601000000", - "MeD5hj8Vdh9sLbzZCX6wSysKjGjd6Og6Q-fYWPoMFk4=": "462638000000", - "MeGV0Ssae4dCbT9mXDdsO3ZrptKK4rI-Gu81LbwBTOs=": "384615000000", - "MehuE7PKbJgcmMyaRb5jSTKU4PORiq4KXMcVm75DpX4=": "1723270000000", - "Mf2tEIAFyfNZ3w6HQWHB8_V6zR5dQr-GfCzxj_wgHyA=": "385510000000", - "MfF_k8lUrsQMMp7SpwBDvCcblXf9LyALcClTzfeaE5s=": "3962018000000", - "MfPbZdhycEOuPbKkMoa3eJq6Qhx0KPnlpNBZlRTfQqo=": "942578000000", - "MfxLKTDXjZWBe5nv2FIWYq6IS3Ur1liIHdfVhU-96sg=": "454116000000", - "Mgg0b37QNJ8Azu4yriTrc9RZ2pbgBM3Lettgjncqk1g=": "418865000000", - "Mh-yPc0yVYVUbx3hzC4h5o09Juc5bR5y074cw99zAxE=": "450738000000", - "MhNw4XI39zYEvlS7N-5cRq7TUwU6ZLnte7mmNaKZnm0=": "3641740000000", - "MhP4RMVT3d528PRUy3YxpWQZSRJa8IGtMXL5OUYvVp8=": "1250703000000", - "MiLNQqLaZy7_aNsuZ6ABVIU0CpJphYObPDUis9aagjg=": "455980000000", - "MiNQOiN7979exSfymO0nWf0Dqc4qu6uvF5LsNJahAAw=": "999999000000", - "MiYw_8LQqURR88LMPDaBirqwl1dz2oGFJqEVyOFgaGY=": "769230000000", - "MiZ8BPUmYVirgbzcgv7iV6Fan_g1BMrWDFHs-FPFqMg=": "400988000000", - "MikhX9j6gaMp6aB365LolFovXJIs01GzYlGAnATg-QM=": "473001000000", - "Mj2xrk3zkKwivEQvRZuFyluOGoLHwXjscLpZvLewsbQ=": "501144000000", - "Mk1FJ7nhnUwZ7ppa8AkoPd_zOf6Ol_1Vj9Vyco5rzio=": "384248000000", - "Mk67PcOzt3R4E5YSPW9wC99vuocI3TKNMmlPsT0OyR0=": "763672000000", - "MkeB6EF7AZ2C0szGE5JCYHFZDfyRKhBQMppbvdVkZtw=": "455261000000", - "Ml9mqnuK9u9VS21YD07E0mtzJNqKnYa6qllplQzjux8=": "447044000000", - "MlL45YjrQQ-snTz8n2feMVRXawwINe2vm3X_yCWyL1s=": "2307755000000", - "Mld9pT0BKE76EX7DRBqE7ipkeHyM959km-SoR6d8Rts=": "6041640000000", - "MlkMCg0uWh3d4MImxx1NbyWNVZ4wqCrunwTw-1gnhQU=": "2323501000000", - "MmK6EWlJOqmoc3MDe9fsL2xxfQnD_qF-u5RnEqbagjE=": "2565560000000", - "MmbklapY0shZYAXqB9O42-5He3ThYAQJ0DsAL6b8OxI=": "5384615000000", - "MmiIYXjsqGdDp6jdgqWeXIkklEVeNsNONT5CRh29cuI=": "4179751000000", - "MoBVUzj-_hFafr-b2jY4d-Faj1DvkPhhlVkWegxZavI=": "1478428000000", - "MpAaLWWqJGXo_WfFOUN7nCHA0Qu7XIgiYW6XINBZXN8=": "4230769000000", - "MpINi-n0PPhQXloFU6IWHZ8Xlc4zgJ8fU_o6rhBKvZs=": "385508000000", - "MpngsHkUfA511BGkLolYP55XnsjeDQS7tQVZF5KAiVI=": "448027000000", - "MqHRHnVHDqtNV__B9iRxYD_y142ofsoXcHAXW9ma0EI=": "456529000000", - "MqssR_RMC1iiBNH5riyahXhFSXtkJepBg61WuBbsFeQ=": "1378190000000", - "MrCUj1j9w6_Z3xflkM5LtRc5WA_-gBPonKPwDNZq33A=": "972231000000", - "MrQhtxbS9cFMhX_fl6NNH_TI3xN4ObauKwQLDubSHNU=": "906221000000", - "Mrp_kwMO9n5XoihMBr6_M_Qkn0I9Q7utOX17btbr1E0=": "2026136000000", - "Mt5OAVqAawP-OTAQjqnMVQWrqKTz-t0Td3XcmNT00OQ=": "411085000000", - "Mt6dZ_rszOC3JM6icUVLfUovHi7AEfu-XfFPRgh5OGQ=": "378717000000", - "MtBe_JOGkgPt_AB_ezYeJM3LF_ZQVf3vhP4xES3cJEg=": "1620910000000", - "MtEDKobUs8YBUh_pIlR1rBnEbwhH3sf6MOk1Q9tBjNQ=": "454138000000", - "MtcA_rBa8MXyLalEBbox5Uo8d3u1UZLIAHyTcvg8E3Q=": "456193000000", - "Mu0BbzEX4MmKkLcSfsHRXa55O94MoJA7ho45o3knRCA=": "2916362000000", - "MuCV5Ec3qf0C666dJ20vv6vRk-NpwDXt3VOAmqC2XGY=": "379260000000", - "MuPlj5rn0tSeEbZrN2iI8ENiyBCQTrMSJ2de5maVhI8=": "43339829000000", - "Mutep7fz4IHpNS1eHXnQRPJOmciz9ql1QJF9IAt4XBY=": "781381495000000", - "MuzA_ByXGhtn4DSF_IJpPz1wQN9rkTExalvIWTYFPuI=": "769230000000", - "MvVwtDrtEZl90a7xHgmGhwTaHMshbwcXGXlqO1J9hB0=": "410252000000", - "MvsJHQWe334GjBQ1PGY768lWrY7jV0sVCM6thqz5e9c=": "384615000000", - "Mw11qiB7Ze4eg7PyArwJkdJc66X95dKe4BjVQkoMtjc=": "455600000000", - "Mw9WytWVToZhP6bG3s_yX4Sbs01whVCGRLp2nvBiHi8=": "692307000000", - "MwNh3AxNCxNkDt1kdoo1y9fFxWscMfUsiP7du-dLzrc=": "1207455000000", - "MwVAtoFhqihEPIs-7THaEdA5nj25X5Jja9daFFPm7lM=": "1249999000000", - "MxB8neoK9Hd0FjrSRbiCRRK5luRlxjTjC0q7jBLz-pQ=": "460483000000", - "MxMqZd-_AS6P549pCTZQHe9u9DqAlyxGpcbvfnkN_3I=": "2695757000000", - "MxQoGmu0Ln5ZCPfz4Qasup1pEemJJyqy9a0bH28_eYY=": "2065000000000", - "MxbH0uVEkmpsBBzZeyofvy79a5kfmO0bmozmbkXer-s=": "1995381000000", - "MxgiIO4RAH9T1qdvRGA9YG6WYkjNo2qS6fb29H9on-E=": "460816000000", - "MxlTORr-graLY2tHPnLwHI73laO_pOhmCRLUmo3SOOc=": "457027000000", - "Mxw6KPxI1McJkWHRI0QZqV5311rrvMwVWo0ZX1DzYcA=": "3846153000000", - "Myo7bgXkGZcgDcNFbSOFYnI5SlqCeaKB813NdmekRNI=": "1153846000000", - "Myp31sAPrcXT9hrNfr6P565EKa6myaCaHF-Mki17a7c=": "604086000000", - "MyznASw8yWD5cGJ7PFCDDRD4e5A4HdcbUEi_94UEtXI=": "2088182000000", - "MzDd_OUL6wISAoc2Tj2tUj55L71-pehfum6s3FrL2-A=": "499999000000", - "MzcCutGaeQv55pDqoMlqKeJxuoWqpZSque8cONFS_wM=": "488462000000", - "N-DndZzOfadk-_TP7FbOP8hOs8-hO85j5E0QUfILmVA=": "1236262000000", - "N-Fhwc--8sdYQemK4YhdK-Q2d38DMTvoxqaeRhONwKE=": "416666000000", - "N-JJ98cz6D2GoBdll1LqPxBvAeItQv2YIAR9hcbu9zc=": "384615000000", - "N-UKbrmU0Rz8A80uLWUdtB4i0OAjHwEEKbNi9O2q34o=": "495740000000", - "N-_yq03hxiRjLPn7l1I8eoIoxy-NWrwe7fQShnTDH9k=": "379344000000", - "N-q9DA28CsrQ49-l67ot7g88kwg31S6DGA17j7AR1mA=": "455367000000", - "N0N8QNNYOweDLbCnb7b0-E_h9uEsIAOTbaFQWDmUX8o=": "16660133000000", - "N0QrwwmxupzXOXrYrZFO1Bm7dspTjRZXUEB-2gno9FQ=": "384615000000", - "N1E6zVpjsafuS2A4XN_53NN2w7Xg0MNIZGyH7QaMt_4=": "909090000000", - "N1GJppKEB1tpO_3IcJsiPV97yFSBu312dO4FS8QtVPc=": "415231000000", - "N1GYUv3lOTNhtGM8VbSorT5cLCBq0nFOuGaifV52Lk0=": "387280000000", - "N1us1tT_7_4x0fuW1WZvoPFUki2PGYsj3Nr_Ig_2X4o=": "391885000000", - "N22pmIqspTmSX6U7afLxr9Dl90B6N8MX9d9dJdACGow=": "5391834000000", - "N28xJXlJ4Jq7Ex83DNhbUFO5lQJPyULx2prvXh6ZhOg=": "3861978000000", - "N2J_X-cAi5OUfbudr4JkyC7UI1dpIY9hlxR9Cn5k5iM=": "1517650000000", - "N2gaCeZGCA5PuG4hx8Sf33DIsQl-TxK1HuddcH-UMV4=": "2088168000000", - "N2nMXaC4SbFEF08OgJvjsaZkUdTYv9yetmwyCCTG14Q=": "577089000000", - "N3OqymzG8OvLC_qLr0MFmuSmAC82K4U6uUNS5V4IGFA=": "16889531000000", - "N3vFUF1QrHhL2TfqOndTQ2twdorc9-a8wGbQllkF9yo=": "392385000000", - "N474EbswAR9WCMpDtoQAWhYFFWq9aPCz13WTAQ_PiaY=": "2482581000000", - "N4DWdRCaTVyupQRna2xFOdx2JOwtTy08mEipELMfuVs=": "5766272000000", - "N4GE3-a4olGZsZwDYg-MexIodOkXhgXLoPUuynpD6g0=": "4624898000000", - "N4WVSvfKUitlSjUT_FUxyxf0ER4UmOdAFBaZ57W7LU0=": "642211000000", - "N4YAOMA1FP0HaGJaM2iB92PpP-YN-fKg6EjCKodUJrM=": "462839000000", - "N4gEc06k_75wCGiJXHbGiKS7zCVFKLkwBTgSr1SdAq8=": "615384000000", - "N5CSOYZUPsgl3CCiw3llOGCYp_aQZxGY4gV5SStKTcA=": "407808000000", - "N5UpAk0UqNETqqvVGB6CDHwIdiLLgMhaw9U_388-bN0=": "1131929000000", - "N5ZpYX46MhY0unJOUGWqvPNpATGNSoPfXTjE-oAQUtQ=": "1550277000000", - "N5aEMCv-2IBhg5Ww01dWv-AnfE0Bp-A49c6rILOopwc=": "470605000000", - "N5pHeJ-bBPyF3PkL0-rCO9O-ATtbRouPz3L2vT4ojk4=": "4132262000000", - "N6Rm30GqRiloqDuq6iQMpXAslo0gd0SCwRzWLwF8Q5s=": "404016000000", - "N6cQKexHgJNw1UfH_QOkry_sOS_-nSP7rKUY8t4MXWI=": "833333000000", - "N6ih5p9-mkVUgTPnPA4nsFR0OfIlK5kDttUpklcAoN4=": "33799323000000", - "N6lKPUMkZKrmMKC1ZIzGGBPPZHC8LSqtOeiM23hluGM=": "515113000000", - "N6yQKQJB_q4nQ_cN332gmCwb16oS0z6RSRBnlD-zzYE=": "3787469000000", - "N74MQovXnWn35Xs259bKsH2EXQ84ZT4b2quRu2FH2hU=": "3633155000000", - "N7M5u9C1M8_b3DZ5YRUrQDXgs7VxTzd6dhj639ClB3k=": "686722000000", - "N7QdIZExbcsJlIBxFA7PLlpvBfKW3wtqeA7zLSaONE4=": "493827000000", - "N7hU_zhLj0d4W7QaDFlT5u3ivzlLw6iR7LuVkTnlIfA=": "4903266000000", - "N7pyHMRo3T2D0JwQenKR70qvXhjTfjnCcCc_W7xO_bs=": "384946000000", - "N7zDldRXp6JAISyvH41jjZ9r5vtrBKK_SMxPwnv4Ihs=": "1763423000000", - "N8Zs4XZbkmaDy-IqNo6Gy7BMNykj2_qIuwcgZVsHDPM=": "1153846000000", - "N8eF54ar5dI-GlP-CyGjMRfkcgGMht9ZCupJKZQJhtY=": "4953917000000", - "N8nXdnnTzocEHEYdnn6dBFfr2pBpFPwHYU73gPzaKA0=": "1119367000000", - "N99dI46WQwNWA8MSypoGm7JWDFXgdGfJxL6v10cnrMg=": "492798000000", - "N9LefuLKivW_At6C_iuMidWRBFvMSkgF7zSlJcJu9mM=": "416901000000", - "N9SJGNMP7cnvT-O4cal2GMnVm9ShKNGPrtHZdT2Zj8Y=": "1642415000000", - "N9X7yAf-9Rp4bjal2NtgXdnCrfSMuGPnY_uN7vKxbhM=": "377191000000", - "N9ZtleTV-QYsdZa1jxyMR3M9q3LbP0NBHnyAXxVgFVE=": "530056000000", - "N9k3lBcGirj8cI3-ShOQXLHRJ7O2fV3LjMuqspB0c6I=": "15999872000000", - "NAG97quC_yXTonijIb5A8lmpuyWLY2j4_rQ0x_CEONc=": "1132129000000", - "NB9zWtN5oKfT8K6OlYn9GlrOB3agzGc1zSud_liHCSY=": "768894000000", - "NBQ6ortS-uCgVtfFjtxz0xEbEznNTagcmYUSZ4o9kAg=": "384615000000", - "NBST6p-wgx75T6gVUkSQiWNHzZfIQmev-lcamPp7Pe4=": "3776928000000", - "NBUALN1Ryevmd16lU61eL_h7rd0UMdnyFOMPIZAeN9E=": "366402000000", - "NCpZJojx-mhZQ2UgovMoaIpMI8uFCU8SvwavnX5vLpQ=": "537684000000", - "NCquiUzKtR0YQoxxJ9re-RCIlxaLsHbk0v8vxajoHsE=": "454485000000", - "NDTEnpzckI_V6A9CqaIk57VzbRdOPIuUe950EAch0kw=": "2337370000000", - "NDjQ8t-fV-i5Y3QAoSas-a5-4DhgHwWFaMjwDu0C1Ts=": "1955916000000", - "NE5G78dgVzA-aYC0ZpgQynKNns1EcTOrQDa5Z2wsl-E=": "422196000000", - "NE694zaDMyo1IKiJuQ9cxpV6Sctne2eFWggWxOVEV48=": "1923076000000", - "NFFGUYxQ6h0h4nkHyq6qCVLG8hnn1_g8TzjLxXhKIm4=": "458399000000", - "NG1s0q6SBBbgopfhVUpifSrHzsKeg_q0VodVXJyaes4=": "769230000000", - "NGVwGVY124YLizcovX4Z74CaUV7ZSGI94ip_YA-VhhE=": "385506000000", - "NGZcP4P6r8Q6uYcPPx4MbNfjTwzuSerxmVl3iE2--vc=": "378614000000", - "NHWU8vvo2to5GDAbzRZ6Z5janOp4XPFYyL1OV5NfpUg=": "1249999000000", - "NHfFoV9OY5m7_hdtsWfkA22GAOxy31e4oLFtJ6gVfts=": "385506000000", - "NIac6Sz4Y87cCEO7E3R4gQdot5nmYp0_ljLtc7Hdgbs=": "382765000000", - "NIfH8vzi3Xijh-534baF44T2m5g0gcA_AuvIZ6kQkCc=": "1904794000000", - "NJIF7YQGwFNy-82Enlb2DClbXzZAwpzmu4EdW14fYZI=": "5769589000000", - "NJaV1zMNmF4L38nOHiK9TT4mdgfmaVuwwThPQ0QfTOw=": "4151312000000", - "NJuitMYjEtUUP79ovXdYZ3wtDu_rTwGwxO-95d0a6lI=": "470202000000", - "NK6jKyymvGkOrYPUBF7yLXUyO_eL9Os0jAWoY6qGN8E=": "2332946000000", - "NKKa3Dg9qSoEzrh0xxA5MLfGRRfswqkadmaBE-NdT3w=": "389230000000", - "NL6eLimC1dUPE_sDASln8zqscrZ1Kz7kwZRD1d1BESo=": "1698694000000", - "NLSBof0FCzjjn8NJ2lWM1gg58YqHjWFFCZ2BsWDpBoQ=": "460196000000", - "NLZUpRmweRlyzQURj-vylg1Y86WtAMUx1UpcyD0bcjs=": "385690000000", - "NM848D2V0JqccV_5zkOCwyK3lEkJK0_k48PObu5w-T8=": "1154003000000", - "NNUKqCTu9wJCFHfGd-nkfwgunzKbn_5LKMPGprE3PWw=": "684445000000", - "NOOictPYyKM3XQ2rkXHKf7LE11pbPx6FRMIlIVgB6l4=": "385035000000", - "NOQ7_D5q3dSSQYMRip794nIsjNYeN2KW0013uDw-E9Q=": "4854617000000", - "NOVogrx1ZLmJJiJnzqRdPGS1Kf_S2GFqXNnJETA0DhU=": "377901000000", - "NOZVdeVFnHFWdDA5D87I6gaIrVTu7jiP18xaaji_3Bo=": "384615000000", - "NObw_V5Hdp14NROiW0PKLQ6JRpiHhL_f4X1yIKFRkJk=": "376971000000", - "NOn7EEQQ3TPVZy-89wQTOg2cs3HCnKAocjcOvcwp7Ao=": "25000168000000", - "NPEeYgd4s07sJpdtRbKwWPiDTbnhuFay5eayU0DPYM0=": "353298000000", - "NPNGlcgrN7yx3jK3iMo8BmPkkdCZ1cFyxOwtlMMnV6I=": "384615000000", - "NPxTke7OLBFwWBB1l6dRpg-nISmZ6hnO5MaUrVDXh2s=": "10683461000000", - "NQ7F5ztE0G_5f56YVP3Ce7LY8Qyt0WOGz9ftpZnBXxM=": "973754000000", - "NQBsEOLkLnKBdzf3TQKHQ9UFz2Id3xqCZuNCgJiViwM=": "930249000000", - "NQDINJWEHs2dhh-PCrRPSkHT6ZPhvBBZMEM0Pf8lRCg=": "1223425000000", - "NQMgOSwABct2NF0zVzC-ESOpDsZq42QabgFFMXJMbiA=": "480325000000", - "NQXVuuYqc56tYOQpnbYBegPblK69le9xm9rYRcRatQE=": "388604000000", - "NSDjEYIATapaOTZtrEZ0cyu5YaW63HhwN89hD9iJ0uE=": "417635000000", - "NSOB2Px59gMb6EtwHPfrnF0Bm6O0YlZDe0EeBwQfb20=": "520220000000", - "NSrvyteU4v7UVif1q6KHJhEHKR-JsAd3HxtxpG_nKBQ=": "769171000000", - "NT9KmOnBuB5hRcRslSQ9dlWfBj4bTvhUPQFpka-p-n4=": "2316163000000", - "NTBBpGaeYblpJo_aIWtTHBGgp_d9i3NW_j6bTJRt16k=": "388114000000", - "NTGq_pdGMQGKAiMvqy4ws1eJh4sF6akywCXLU9UEM0A=": "545429000000", - "NTmJ1ohyD7-TgQBjtlirJ9F1YyHXb-2TU6hgX9qdTzQ=": "385509000000", - "NUFfGbFheEexd79OvtM0tC22ayOgXWkKPLWvGiyobRw=": "2611637000000", - "NUYGY0ErUV6nKF-RP_A5w0jEgYrDPtykCUXRxTMF180=": "656903000000", - "NUheG4NTNB1JR-QQu1AR0WDwAbuRfrzXvvq2EoT_iaY=": "493696000000", - "NV1n7bJMaadDwe0fi1__xWHHtFHlohBuiqpoFuphPNI=": "509737000000", - "NVS3CsTy2DOtod_ma6jDb0EqAe2qwvUdiQvAHSkWAk4=": "1807692000000", - "NVnYI_q0gZPKqSC4ePKLAkDcX5ez7EjXHUMJ2WzmU4Q=": "3233699000000", - "NVw_Bu-PhvnlTr__7J5-wVnWqqeRycIBxepp4tW3Ahk=": "384070000000", - "NW4Z8b0znXcSJ2ZDNOLtxDNBbKmCwQu2_yYnY1fvI4Q=": "411085000000", - "NW4i9JEbNBgHJlc-3FNuQnI086zW-jwZdxo_fGoQubM=": "2088177000000", - "NWhviTSMT9JUKaZCGtrsmzYR0_vrUEIoSr_P32FptP4=": "446388000000", - "NWkKHkZ1kNNnnN8IHqzndGmeCYZrAKRzuh8hU019HP8=": "3264165000000", - "NXEJH9L6-ctf9vy2rSkPsMVpW3I7pc5k43R5IvFAcAk=": "624393000000", - "NXoHqMVs3rv8PfSeyv4QOOUilm3f2YHIYLb7gtHcTkQ=": "2059257000000", - "NXtSgpTQVyXMPaLOnkugc6MBMc-mJHbbwn0lDDqAz-w=": "416224000000", - "NYVK8eLEx4oNch3aDTB89yY3kBfnyh_91x9zlDccVdI=": "383258000000", - "NYc0A0TrDrrcz8X81srQ_If3_xtowYtiY0n-gsVGDZI=": "1924888000000", - "NYdmQmjP5KF8az1p3RvA1wY6-L8RlyvQq404_j10hn4=": "1041666000000", - "NYr6SGSPizTHAEMHqMtcuDxvh6zPEaJFM0pkiLzV3F4=": "384551000000", - "NZVfR8gH49vvOKk4LL64czQib-7ZY2bz7K_InnA0jDA=": "4694684000000", - "NZtYY24bO82zILTfQCK5SrWmBgbHl899UPFj7wSnR6w=": "1859815000000", - "N_KpK2YwcS0YjPve8tJzy3U2gbcjogcaCbN3pG1aX7o=": "389790000000", - "N_XQ7KBc63FNj9axvU1hYKIeq40SY86tsq6dQhZuZog=": "902412000000", - "Na-s8ZCW9Dy8LcQ6FDb47tMWF2AgthbtlbZ-ImU5CdI=": "453469000000", - "NaLGPdZH_pY38luhJEidCAVCZylJW6GsGWW4DhMa0cc=": "423076000000", - "Naay1v9CEpQi7NmSaK1J4xyYfz2Ng4WK_9YleI0UpRs=": "449443000000", - "NbP5bXm-GwWfdfna0MoxIPyGWvTXFJXo8pacSCvTyN4=": "378259000000", - "NbWIUDiyH_SVRVCBiYSmPYn-1whXxNmRugOc52i7uME=": "2083333000000", - "NbX-epnN9XU8Cv4UhzwLS657-8T2IvcIc7uQmnNQoHE=": "2820045000000", - "NbaetFKT0VG4vbBokgn-7E_9hdWQoskzhpWuwMMWxW4=": "527177000000", - "Nbu7sp7CrcoQ1SLLnwpc7EwX5yWnit8yo6hgHrNYhM8=": "1267309000000", - "Nc4EQIVtBxlHceRU4B0gLK9MoZyAp6ld9V2XixjRAHw=": "453318000000", - "NcJ0C8DmelI9wWQ_3q8g7EMvKziE65LNtJlBpAegSjE=": "461538000000", - "NcovRNYjaYsVoZET2nUTnbu3jyxd2U7F1CIjQ6w1nFQ=": "4557211000000", - "Ncxhwp1YqQibCy1r_SwhcVmvzDy9z2K_zTaiACzTwrg=": "507660000000", - "Nd9_vte3fifZszUv5Yn9xnGpVKt8M4rOeo0GFTL7v0I=": "992423000000", - "NdH13wLiLrJrsYkcMQlFoiXn5OPZRgY5jXE1tRD78Aw=": "1785049000000", - "NdKkueCrgg2LYER6_NeFf1aZx0FPmrxL-NnmLyR2q9w=": "587190000000", - "NdTW-w6jYqUEpoqobEk79uV9d-2ZpoJ5-HbAF-UW_8k=": "769358000000", - "NdW2CiNOi30TYT-5Diei7QXrb36Yva86mqYDy80KzkI=": "415399000000", - "NdbjboQ4bOHr3-csQWuU7AjUxps2uNMoKLtXcmOpQ0w=": "403063000000", - "NddKr45JS2wqC9fC2tRHvm3sAFncW4poJjz41FSqbPI=": "1141815000000", - "NeP_nrVKqJ_9vUzxJiUCH4_-WAj9zJS3MTRR97UFB3I=": "455781000000", - "NeedjSVvIYkMvurNpNRHnbzSY_9xmsV_e7B6Fi1HzAY=": "1134771000000", - "NemIu95fq9XYqrDyMvtJDwog5A5ZLBKz4KJjXxBVPho=": "3471292000000", - "NerAic0iMBqhHgbnuICUgVVenOjRd7yAEj_2uzIvJfo=": "769230000000", - "Nf6EeG7mAp-nTlj-spCG5H5afMX9HgmG6JBsupuGFr0=": "4079015000000", - "NfC5RFtRxUeFuoMDt35HJaFnFLJaBwu4UKyLnJuzlTg=": "384966000000", - "NfJgld6fXejchrbVUZ7hYgwDLD4Xaag9_xvifZwM6d0=": "456259000000", - "NfRt48IriI82UJdiaGctC0UQSpOJWRVg-wpvvZ-xFcU=": "450924000000", - "NgHvDG4tftZ3_DMttHfWgj2yaUA1uihBBA8PBrOY8UM=": "999190000000", - "NgS5ptEUlR4603XQRDTsoUss8kYTZXjmpNEzGYmq0GY=": "1963689000000", - "Ngn8lqkoIBar0ykuhK93GaVj8hGoHu9EvbW1Dp4xCIk=": "4037983000000", - "NgwGQYBMThZlx5T9Ejo2On2kVPOByRYmibmVML14m3o=": "467059000000", - "Nh10_kjkomAYXEBC7TzKwQkkGxde21Lksu2J4kyPhQI=": "500675000000", - "NiLZx2D5lQHshFVXda5wzL07dbjxhfta6bgN8d5wnsw=": "6249999000000", - "NiOY1hlEP2DQNJOshgxVn32YKsrXcs3zHEiLNoULOtI=": "448509000000", - "NiUjN5G-5eYaBDiVRbbJKV092SzIhpRuf430srU7uYw=": "416175000000", - "NiVaK9EC3hEVdgtUU5Pwepps4xQfeekzc2dT3bQLHr0=": "417948000000", - "Nj0FoDyHAckhOGHW9w_eSED5uegclt5NvwpKuY27kqw=": "377448000000", - "NjKx8NHFdPrQ96fDTsInA3DwVpI1PW06gTloOr_nsmI=": "385423000000", - "NjTfDG-1OLxz-Ao9hISHNsXIMPUf9m710VzRF5jFA5c=": "1233257000000", - "NjtpanEwLBuIyYgbZx9J6_7lET1W8htLV1_sUW_ng28=": "384615000000", - "Nkfg0JlYkXqkd7efZAJfCi7UdIetSjfz7Jp_lAZOk5A=": "380858000000", - "NkgteyAcBDY-Z4itDieY5F89Y4YDrRNs97J71sCCsTg=": "768005000000", - "Nkq-JRPuZCR4qXW2eUTIDCIb5DRMjBK-NJl8AIzOBYk=": "385152000000", - "NlOvxpaxs4jV-_jCHZG0CfDquDlrczpOao7QEaCWzRo=": "384615000000", - "NlTFg1zj9ekvIJMdRHxwCpWEReyn1FSk3QCvYRFEX6k=": "462146000000", - "NlqxUXWA_oDO00C766s7lSt9dQag7-BfL5RglIfQ-Dw=": "1918144000000", - "Nlt43UR_v8wC9WWu9jFI6B64KGM5Z0T61mFnzqPUdmg=": "384615000000", - "NlyRsshc2j64w_YRWTl7gLNU-tsDwpS5OUpbzUx9BZg=": "385506000000", - "Nm6oTE0-SgREKFGb2gPQmUk3GkhMaEUL6u5uej1jgAc=": "2266350000000", - "NmD9KuPkO6CjwQnQnIgaLuJerEsKRpu9ZQHr0UcHXwI=": "818220000000", - "NmJTHsLyE5OYSz-MewP14brFBY5Dogv17IovssvVCl0=": "1388070000000", - "NmkB5KccZ5sKOIxQFSZfb3UpTm7lXhw9XavpmhqE_yw=": "453243000000", - "Nmtjv_fQi7KlOIYYUQmqfWaOIgrnl3UqOoHD3llwxtU=": "469885000000", - "NnD-1gCOw2fbqX6q1NK8zzMaJzQpvdnJrPmjfHRFvNE=": "385507000000", - "NnEPFOxvcdzKtn9K15KFxFst8ubE4pNEqcUV3sTBntk=": "445583000000", - "NnUXZAmJXB6Pj0IJst5vXq0YfAoi6r4N9KalSRBQ7c8=": "384615000000", - "Nnr3-XvGachdN5U0_NHlHPFk4o8_7Mi_zyRxemfDIMc=": "381338000000", - "No4201ygxochPCQUOq6m7q4pFNEAHOyn2WsneIiCUr4=": "767610000000", - "NoUBsOH4lPyLVjIosnCZZcLPyWXNgE8HN9wFLarIAvo=": "2292284000000", - "NoWpGf8xyEg4PH0KOaykip70w-hnurTrJqZbAm0Fjko=": "763672000000", - "NoeTaxodxnsuL-3RwJvi3rBta20L4Af8bAHBmnrwyYA=": "1237753000000", - "NpUJZmEf5jvGGOQ_zRZP-ZGSJLFvmHAig_tEA7xpSI4=": "1223425000000", - "NpbORBCiWFI5Htm2D5eMC9i5uI0qQw4xcRKCMbcJo80=": "379928000000", - "NqSvkJSAeyCSKtasWe7_Y2ujHjGnibRutu22e6fWiqk=": "2083333000000", - "NqV9Fjb0MJ8aYNrGDvq9XAXzNC2NuMlYngcW4cJbYW4=": "453196000000", - "NqVmJV31I8jjhNu1pRi5D4-PXRSuft3FIeEkTcTjAEE=": "1499999000000", - "NqXfFOS8mIA7OtGuRaqi15wEPqwTpfa5RMH0rryXE6s=": "384069000000", - "NqZWt56WbraiOyW5cWxfTXxlOhaAAClQTRH5MUfATq0=": "1375110000000", - "NqdAHcubPeo361HI4IGVHOgjj1t6ISB5ejMqW_QpRIo=": "1702174000000", - "NqdujHnOxExH1CqgruwJ0sl_3xPYI4eM_W6u3L2U8ac=": "6517451000000", - "Nr6fdwC7Ks0VuMHSdnaUnPfOsrAiagAeG3oBKBrVeQg=": "944207000000", - "Nr89y6ldZ50blgSDTWmrcNhwGiHohwI7z4rDul_HqvQ=": "461214000000", - "NrP7ehuV3jbidNaDbp2zpg-JDtLBH-gh_ZEcc5DBy48=": "1852170000000", - "NrfhKRH-CJn99vVsjMOSwF0pPRm9lvyE0WWerDdsKU0=": "1927483000000", - "Nrqh_NyjCj34hV0ddB5VQnlqlvWrTgeHjQxSRxEqWvE=": "384615000000", - "NsgTZZIhXClflHCxBRBYykqK23plQTXSH5h8Z_rE56A=": "948095000000", - "NsttzGCxIErbSQb7k0iAKC45gmLR77-mUwJAcIHxeBU=": "8086220000000", - "Nt5vdwMv-0EtL0ynEFASXo8CCwjdstRLCVwOd80HmKc=": "417532000000", - "NtOCHy3DnqGxcGH__QdVf6dGOm2DJdYi-iPbmadc0cI=": "7710150000000", - "NthWjzRClx7Bvnckc7f3GsAIrxsbP45h17vNk67Qx7A=": "1233257000000", - "NtzUyBrzdtUfV5xFqbc9BM975cOqzP1lSMPkGYrAWPk=": "389704000000", - "NuhN3OVtwjEBZb-BUyfFidjX4NK58vLkhYkgIvRw-6E=": "379344000000", - "Num45XX4u6b_uOfWPXI-BuJcEI715BYSHfPDlhjSN70=": "377767000000", - "NusUOdwxWYhDXfas19P80LDv4dREV1zp2Gn5rTPOqtM=": "567916000000", - "NvK0Hq1Iq_qquFDR9qI0o1qo7Nxh-3baOnDQJ9jY_Bs=": "470437000000", - "Nvh5Ssd99pynKpF4hdBivBkzqzKk_xV3lddVJmL0ELY=": "607840000000", - "NvxUVuY_V9JgFAztOTc15BNmi4mZEc12F3XX5-OpdGw=": "407808000000", - "Nw-llzLwtQhw_tr0sG-jFz7k-ekA1s6hFtx_zmfwyxY=": "459285000000", - "Nw3RvG1TJQfXr0_-RTiuCNHTUA4NMoTO4zxjaBbHJ5I=": "4623043000000", - "NwGxY2KYHMUY4XoenYYX788FovcqOMIpEpn53HEEir4=": "388620000000", - "NwaXCCB9RJUksiDfYcr9APHWnC0NYiYYslUQiOdIy6o=": "396485000000", - "Nwi8-3WaqBp5PvA0lt48ntIA2JR2WLN6WVRwV3_V9ns=": "1461538000000", - "NxWORhXfG53hsGodo4eJfNrTSqV7AFueQOll1TQ3ENY=": "457943000000", - "Nxbs_FjFxB3A_IcoL76UNbwbBwquwLpOhmk-SoEfXuw=": "412817000000", - "NxczPLEQ6ETwgxMdonYexPPqvIszAIuI6VdN7jotfhE=": "1150959000000", - "NxgbEIpVt4AHtPzSCzRi9EWDFw6z42lOJJQ7pf4zgnM=": "1700304000000", - "NxnFFwEa2a8KUt1mkhCqCzBtj2xM0L91nAA8qGzMHpA=": "899999000000", - "NxySjy-D7Qt0HOx7Y2AMj4Lm4fadzM2kR1j4JjNndO0=": "768140000000", - "Ny0veKxsbjRwOCraMCuGwbSny-lluhimh_ujYVhoCLU=": "1818181000000", - "Ny1i58ICthu3VTCdlr6WRLNPgNrM3HlsksLBmYxiQJ8=": "769554000000", - "NyYBRJQOoHFDtdvJeuQxgAo9f8X9KJ0VzWW3DzhI9bk=": "464447000000", - "NyaSgkpdN3X4vvKaUMsLZ6Tz4N48jqW2-E3CfoTWOOI=": "385506000000", - "NyqvE7Tvkfu3GAknj_O7Mfd1AOZkyoQU5ZMTHlf9huU=": "488247000000", - "Nyrha4kdgtrUzmm4VcY1TjuGfv9UrH1MqFU3LbQIzL0=": "413869000000", - "NyvIpDFXQ5h_A1VV6HYipnz1UfBWGvP1RqW78p-yu9w=": "4110858000000", - "Nz5PydiIiR5fL-MVD_mdicsnbA3bWh4IflpTLxRz2qQ=": "951762000000", - "O-RJX8mdEYh0zj19613bNml9uI1KuGewncGDZv4Q34g=": "388439000000", - "O07-rvOvPrdUrcWm9Y9n4jj7v_4C0JBZ_X9OenBnkB4=": "1358328000000", - "O0nVZPB8bu7dzsP2L_HaTrBQTqh6Ew-EcNLgdE2T7MQ=": "384448000000", - "O0tZ0Z7HFuDy4lTDOvE6or3YP7Y5DNbNq50O7H8Vbgw=": "453908000000", - "O1RdQL7WHi891xfPcNy-yGGzjUxFdhvHhs9VOo1CrtY=": "420522000000", - "O1a7-HtQGpmM9nIjOa5_SFbgj6ecDOCQtwf_tJ0q7rg=": "385509000000", - "O1idKf4SRk8IYOHe0cXHy0qCaOpMHT2Hz_xNsrhu-PA=": "389459000000", - "O2XibmbtCU0sYt2CPX8g4QXzwN70aMJx8sqp8cZvVws=": "393443000000", - "O2ZyKaHMHSCUWnvwOu7_9lu5or5fUJsHtdnjQ2IGsEg=": "385343000000", - "O2f0YBD2G191LwXGtaGkyh7GAoYMSAIKZQHwYCX7Vsc=": "395565000000", - "O30vab5EysTCZ0jCkByj_5Cc0b-SQ2uKmo_uJ96exVQ=": "384615000000", - "O33NhyXzFl0vgnNUvFPX9kxzcm6nZwKn3bPJUNMwdOA=": "768909000000", - "O3fVmcHKkGlGEe-g7pSeUbAixcswRM-5ARxlzi4-gRU=": "1321326000000", - "O3ibdSNKvUg8vPVGylCBsWa4fDHSLWy3PMrFxe1AvC8=": "416666000000", - "O41uTAHDaDixmSYIwOPyja7lpBswZqxKNkdKNtfEqA0=": "456063000000", - "O4UE4wsL6IqUpkzBgA6ECS3r3ipwR8-LHn_wlYcET34=": "915968000000", - "O4tsNEoEUEjtiZ9X8d5Cd-N-mgWCyiJNCC6vtf7UN9I=": "468609000000", - "O5CdyFV-AjKsgp1jn6NsBs8_x77yQ2kALF7smR6ZEWg=": "422561000000", - "O5GTHmLkIusp8jOehT2Xi03me1cLOFdgcYCx8Mnr_0k=": "759857000000", - "O5KQZS0w2tqA9nV9IfmMQQLAIMFSkN3aJJ1dSHW1PYY=": "1325740000000", - "O5RWAPRpLSi8_crOSOPXaqar-BWSEnaVZwIxE005pC0=": "771600000000", - "O5TN30m78Dar9t8EojhubpU4C7LzImQ4DNiW1HB-zhI=": "4556000000000", - "O5Vl0hlzWQDLbuCAkb5r5M4K8rI5BMkchVBOu3cwwLo=": "1114431000000", - "O5_3BC7q02vQLxqHVYIz6foE8-Z6m8GEZMRt8CzGYgg=": "460333000000", - "O5tkpEA1tklZ90bV-t2ljHz8bKiyTRJrewYaI2P68K8=": "568614000000", - "O5uTjni1TKtiEsn05L04TA6sPDjbHN7myA4GyIZ8sZ8=": "455367000000", - "O6uQzB8e_98Tv78mn9eNvvIU9HdOni1QM0rgJ2TOHDE=": "402050000000", - "O6vNYbz6hRIShzKWecHlp10jb8ua98camXxzGIBaIxU=": "382911000000", - "O77Td-nDPx1qHoI38zBsir47-8rpeLaQ2D9VNZpJAEs=": "473001000000", - "O7FDcqjBLMVnKQMc4ag36eIsBn4WALZJNGzAW5KXJ_k=": "404710000000", - "O7bT_4FugKN2iubb8iFF9o7GRmAtaIUQVE2YYuc_tZY=": "378561000000", - "O7qmhJH7195XlnJfYufExWRO60asT0gdCoJ70fpHNeU=": "760671000000", - "O83_Tr-8rVeC2cJXdSHdZwbdLX5Isrjiuk3PlL9o_LQ=": "416735000000", - "O8FcMD44WjwI2HVde_41H7N53lwl13D4OA42pT_deE8=": "845123000000", - "O8YrhFqciH1J7E8nU4K5BhezKxyLu1XTPAPmfXAwr9E=": "390201000000", - "O8lynEGnnxGUCpma6EHbHXre4YuWYjKVKHh92pPYVJs=": "378310000000", - "O93S0as5J2gHkxNMdCBKFYN0M15EsoWvm-HKiJhJ9qw=": "467679000000", - "O9IA6YLEWvGR8XMbdKNDxDOBLkfjMHpnZ9P5wLtQPgk=": "358360000000", - "O9PqYg2Sw17bMkt5RNWQbqHbcge5bjWqfKhfXKEhHBo=": "2278000000000", - "O9b61jQ9vPW8_CqrFShdMOk2tJqKLs8liFEg5MesU9U=": "2083333000000", - "OAMNbXWz6cFx-h_yGDdWiiGQZGP31e4frqPmzCTvQPc=": "2095949000000", - "OB7-kbQRl6eRV4mRWpLUaMowcngGXggshgxW-fLSSCU=": "916992000000", - "OBHdKOpJN1Mh4ecHExEbY42gSfbnnmzridpHB_35cTg=": "414045000000", - "OBNnGuzBMHGBLXSq4zS1gJN0klX99M0vnc9SlUEeb6o=": "642362000000", - "OBV9V2ABJDtatEyKNQwHMV8gPqL1b1rQ0ShuGEw_EDA=": "1000639000000", - "OBWaZjHVhS_VpdhCAJV9CAmP5SHL-X9EEbTfM3NO2Xc=": "42670994000000", - "OBZlUAFwpoU-MSSMwuck3oemqhz1QY98BS_x6saCI5E=": "5003432000000", - "OBo3P6ZQ_dSFvn1M23mdSwS2QvzvjdDyt7jX_eETLvs=": "614506000000", - "OBrm-Mks5-PFAKgIk8ub8HvDe_mQgthE6OzOJMUBYSY=": "405197000000", - "OD-4lQDm4J2UIpITTXbHaLU0xumhefOAAPp6vCIsdnE=": "3076923000000", - "ODIcB0q0dkEEZR-mdzVGif2_dqEYvZB_KwkX23BeeCM=": "1222844000000", - "OEA-_5mKvIOU9YbcbI3kPGOGIwFer-wHogKtgAJ7u1w=": "384948000000", - "OEIGrX4gdIQCn8Bh23I67_Mcc9liCvxpH-SfrRiB93w=": "469318000000", - "OEdYPewCIY9jsIYALexWCZ-UmIb4ZCunu8CqLyHFEJY=": "491921000000", - "OEeZUX3GU1Brl4SiGBvFRCTOjFTm_sOCOmIbKTfWaw8=": "1298495000000", - "OEoYio0Lj6QdTT8m5_rCARryNfMH5k4koLr3MlJzZV8=": "1924509000000", - "OEv27JNseXf8NO8UQ99T7VWxBORgMqRmPCD9drSqYF8=": "451187000000", - "OF-sveQkyMntCiUoWuHnuaP1Q60uJEmxhBk2xvKobXU=": "384615000000", - "OF0vaqBuC3I5dFWtjk-fdKT-gwKdsni_FbI5B57f0WU=": "10811627000000", - "OFLVrsaPEIumAv3YaQg5ujILNSINGwqBa0eud45uurM=": "382251000000", - "OFQTl9CS-aOzI4m4V132GUBLz6Avj9SYsdVM7bW7jPE=": "384615000000", - "OFeSHOttFw8uZFE_ZApVWy8YVzzTS-wv_lXU_Et5Mgo=": "11215384000000", - "OG2cUrLQaUNGInG-PC81viipq-PmZpJnlPHSB51xaRE=": "4174903000000", - "OGH7qPPwjRhEhZnTSXkw34YU_42zF4EuH0kv1QsMako=": "36756230000000", - "OH-XzgxvYyAZKVQrazix9gLrYlbAED3jCxfmcEgLnd8=": "1154100000000", - "OHqAt2dMb_HJozvbbd2Dx8vnvn2PBp2cHN3fdQuXjeg=": "2301352000000", - "OHyKRNXWKa4Ggq5W2BAMVAmbtN1VuVV5Xu8TuOyeCyk=": "846153000000", - "OIRticQDKySVwqTN7NwqDDgtGTDkbhCtnemVdbSSldg=": "893487000000", - "OIyTW6qugIRdSsaxPYm-gdd04J7nBpzVEplmpNzyvpE=": "416690000000", - "OIzEkk6IF7hAjoPUuJk3TCoyGnZqkQX-DqjmrcOZ8ug=": "1071804000000", - "OJ8axwGIeE9uPZjKY72B6kUc_IDtWrul3wdoYQvnals=": "378576000000", - "OJAB88scFDuoda62gwXbwa183vq4LCsxJSsz2z3nD58=": "909090000000", - "OK3hNHfOxkwYrjVxdHvMmmS9qYnI9fHgnq5UMQu44IQ=": "28675033000000", - "OK_7SQZJWd0lMnikSttiR27-01D0WfnjA8TKGuORUKk=": "384777000000", - "OM2xVGPSgURMAzinOWf0TIjoOHNQooCSgTWQW_cIqdc=": "463749000000", - "OMbmxxaxxchZwHmeT2l0SXJMVvlrxJYPzcQWOYcfiX0=": "4173798000000", - "ON1j3GKUWcLQryQ0qAAHKlsSIpEjlcOHazdZGFt1bMw=": "1156074000000", - "ON4UfMJxinGBlURABbOJqDkiq6s45fl5StVM4jgembU=": "449217000000", - "ON4asaW5hYpwLWdcd2pMnb3ydZdtE2vls5Letj5rurg=": "450738000000", - "ONoJkR3IUAIhBVKY7KkngGq3E0ETxjqG7CLfR232aJ0=": "382394000000", - "ONs6RWruVmBgZE--wxRrQDU8v_0MjqA_6VQV2OZaOu8=": "379742000000", - "OOQ760z-aO0Seu50n9Q2P5B4Zqq3zrW-7o1G8-hAn0k=": "384615000000", - "OOVtta4pV3GEGY8S8ktdx4mmviVr0fLOe1Z2jLepi-A=": "391797000000", - "OOXxL87v8N8iXER6oT6Uyjxo0jPg4ze8DX9z7VECgW4=": "416421000000", - "OOfkEbPseuWISRC71KisVrMNR3aNCPFQM-VyzPnR7ew=": "4624111000000", - "OP9j7Xf9sZiPCjSDZWgiis6oN1YaaUqu6k521LESRHI=": "1352556000000", - "OPQpcM2rybPC_r2C3-H-NLc1ZVau7HPeTLuLr86lug4=": "3769230000000", - "OPTE6b_pU1Hl6I5U7FkHoYwxalGL2--LdBX7Ze1WEG4=": "570411000000", - "OQ9O-4mIyTuw55CFKWIHdILM5zObOua9iPAQyoO-bow=": "462839000000", - "OQUcEcEYtUVnnnKLgpvNQNVjkaqnJcSr4zNzklyqM6o=": "452733000000", - "OQWqbJl2JH2mDaJTnjaeaKY4Rr3HV1boH5d2-dThNuI=": "1154586000000", - "OQc6qsN-ljVgZ8IMIz0ut8xKi3YH3braHAUxiRt_H5M=": "377698000000", - "OQsDVoWxFQiOZTmAdGQhxypqBnXapv9FoLdZvd84xT4=": "414989000000", - "OQwFmuEfUPCFBctb1nEVJDk7hq6OSNZ28wsSTPHoYK4=": "769230000000", - "OQzLEy6v1GPj7dMqJoNW7nnCwJ-CquluGAaQXYbkVJw=": "1889091000000", - "ORXcbCwULUN5YfRD1PU1PwEEBIE_j4Gr-pw0Zq_ZY_8=": "1666666000000", - "ORnS6rjWXX8YpGpIhydzGAX3ZtwUXjvSKQUwf_2pzjQ=": "808957000000", - "ORp55lLcefeC86FO7dDQwX1LzPQiiU5Jv5pJPNnn-Gc=": "8443938000000", - "ORvidGG7Dqe3LvSFnuxU9rlJCJ88qnwP7ZGTSHBfhMQ=": "1632692000000", - "OSIu0NY1-zJ5NzyK1uG-ML-Btec5k3xfa8BymNoiZbs=": "576923000000", - "OSVtDWEGfU-GTIhDKcVe-tT7RU4f8s7bk67uOywoPjw=": "1000867000000", - "OSemKrwecvBcrnjs7LN8bhi3IolQXDOB6qm-cU-Y-qo=": "419168000000", - "OT6To5Ayqh7yArvimcPr9i4GEsgIviUiPNCCWnQB0dU=": "1540815000000", - "OTRjKw9lu8dxZXuPqRl9SKMpCEz6mYh3q6Bit8n4yoQ=": "460521000000", - "OTRy9kOK3u_w9Ub5afE0RTJncB4rojy_RJmqoOxj_2s=": "390237000000", - "OTS7NeMyUoWMTcBJyPdqh-RzfP4Eihe0JPi0WwdVygw=": "352834000000", - "OTTk94X5jj0RNUfKsuGiJVLxQDxKwZYG8gUx-p2ZbK0=": "499707000000", - "OU47BjVpTZXzfkjySA8usz2GxlLe3oBGtE66B48S_Yo=": "385506000000", - "OUM69uBnDEuPSGh7y31WtZvJyngfVn1B-IrylUQ7k8M=": "499993000000", - "OV0OlBsRqPdHRL0glyYU6PY0z2MBcRNoSyTewQBBaV0=": "460799000000", - "OVKqz3QnMUoPFaeSM_C986hr397LLfDwD11soAqGrXU=": "416673000000", - "OVLCqOTvkN2sNQxxMP-eqPBb4Hi-FzUSjLrV1-u8Hdg=": "774652000000", - "OVqXWMgoVFqRrt0-FuY0jzrvvd4ve2Cgb_uU0MHu_6I=": "4075159000000", - "OVs-T9ciD8S30_VRf4ZKFmUPKg8k9JJsus95Fcfl_-A=": "417702000000", - "OVyFmAp186bM4pSmgBPEOMF4zNccrOkjyI2RRYFWmq8=": "384615000000", - "OXm9wUgDix0wl5bA3ft2PqsnetN2qnRf9igXakwHMz0=": "983735000000", - "OXpyoWfxqSasGB1Do01yNXiZYc5BCi_pnmoKxBZR_CU=": "3124994000000", - "OY34jFVmmr8Ut8t7KK4QpC8jTwpHpP78WCWZcXVR6Ug=": "1156515000000", - "OY88hVMNtlRvs6ZnqKyVhGaPSehHXVx3dpV_qT2WKDQ=": "823294000000", - "OYi3-uQw_sTlDRNTu5foHh1sp4ZVe-N7XDsylanI_Hs=": "929128000000", - "OZ3BVbT5EY9156A6iEiNRF1amUftWQ2LDzwLyzBYeV8=": "3738539000000", - "OZYvBWjAmpRkyPRgT0-IEAtM-BzrpzJrmGYxfbBCS9g=": "813685000000", - "OZg8_2i6ZLgVk3Pcch3dM4frWjrTr_qIZiXKkgpu6AI=": "384938000000", - "OZquXLi4ph_2Yl29IJsV-INFpAF5cqh4HKA211T8BSQ=": "474857000000", - "OZwWyqaYCxlYcB3rBaTuO5zUCerZyZmq3Ovs1-xhhYM=": "666450000000", - "O_68bUTh0NfDUzns3xF69JXmOUsUySTf8TTrHGkVz3E=": "751186000000", - "O_LeaGK3lnE5s_19Zqz3v0iYK2ei7vCE4fAOsiG_BgE=": "387357000000", - "O_Q5ZmUQyjoGcEwkkyOapTFa3c_yc54O1xSSIlrMIM4=": "576923000000", - "O_v0-q_lRzxIDmJzFtka67SFKIcHrgUxom9FIoD5c6s=": "1145281000000", - "OaXNNx_015t9dN4IcIV3VkQrz_ulaPgbXFhMBAB7yjM=": "2247792000000", - "ObIiPFGAjANv5nCazZU5sq9LQUrVgL_9fLehkjexYWs=": "540456000000", - "Obp6HoproD1J4jOc4uzBpRe_pBQi9DciYOErUdhsM5Q=": "396989000000", - "ObrW3V8Zg4Axzltl5VCFLOUZ1ZyBoB-as8LSxjyBE9w=": "3413596000000", - "ObzE_IwS0qLonrHGYg7KL92QJKFhQvz-H7z1F_3jzQQ=": "416595000000", - "OcJ5o8ZZyB7YFdovnhrKPnp04Av5edggdIaCRlKP6HY=": "1363636000000", - "OcQ_EEAiJDoJHmB7R4crbF-_WnjQs1cToOI-RoNoPX0=": "452205000000", - "OcbKwgjOJpspmCg0hC0SWLQ4P8WF4aZP5SXG1Ddn8cE=": "386715000000", - "OcbnXbhxjwMFIOiYAGQPrTa9F72AB2HR3GBXcFYSQfM=": "1538461000000", - "OceI5lAOBnuJamh7jhNp0KluffhA90wikVwjp2PkBck=": "384615000000", - "OcggPCNqKItaQxfST-5jKw0oIewgSIYoDjtgN4dNRdc=": "15909090000000", - "Od2oTwGvvuUvdm36OEj8Ank7phCRLqEUj1hBgrnzcuM=": "909090000000", - "OdHwM3_np5UL9q5qPryGRefM20JrL80StSW-72eXJxc=": "5339950000000", - "OdtoK7pkvoxO6FKPBl9zW6K1JvnZhmV2vzXkrQIrM_M=": "392000000000", - "OdxXD-K6DRM5UuGujFJMdWoZSVaFWiu2M8ln6PixaEI=": "416901000000", - "OdxdMRdV2cOFiF-TVtQBjGZ95zNRI59MI6-F8k6RXZE=": "929128000000", - "OeOnzI6Xpx7pO57JZ51NsPVkFgrMWIC74Y_ApMGi7tU=": "471193000000", - "OeXr2uQY8Fl3hbGQx4jPLtqWkWQmpcWv1EN1l2eZXzU=": "384958000000", - "Oel6227DEMMprC0TJ2sA4umB2jo9MrRmnPkP1JSIUyM=": "377078000000", - "Of0Y3wmf0JU9jI9skCv3ghZ4m1cT2hxUeNRKWpar-w8=": "40624200000000", - "Of60pUvNEc3GLErVlKBUCtVLmkA2epkauO_gi2t8Mfk=": "1874999000000", - "OfAbgAFFaiRw0QlbJp8lkZV6atzOolpPpuoLZ-KppPg=": "2055429000000", - "OfYCxpDP_6cLlSGyIcXINaBs3OojsJtWVP9YU3V7Lmw=": "382544000000", - "OfmlouF4Ea4xYMreQUwzGcTtzeVzgZ4bEgWkzsrwr-Q=": "1267743000000", - "OfmvFBOQnjDlT-TxzQB7-pWO6oiVGBu1Ui9jgATNGWU=": "1537224000000", - "OgJSxo4-vPhIKHT-i084uRnnn7rLktnLhx9jmuRInzo=": "3533627000000", - "OgMWvujyrFW0t2eMx4ys4kDqsbjsNQNcv0BYF2o1n2c=": "455600000000", - "OgXdBspR2qBSKa-qLZ5wF33Jig7775i4uiBkD5iZp_k=": "767781000000", - "OgZT3gz5xSSgt_GBUY12QZ-uxg4lnm7ycg3Iya3YQsM=": "459420000000", - "OhKYnlgRENM2MxwYrgFENG5fpKnRQvI3LiCg18tjlnQ=": "385506000000", - "Ohbir7uTh3gHTZPAWP5_8nmrhhp0ScCaiqOjwXjEPc0=": "378037000000", - "OhoFladLgmcYsDr0CCPx-QmqWnqcEKMmgQOZTIk2wFg=": "1923076000000", - "OhqLfPfnXcrUAcWF6K3gUYHIO7Zy7a5nMcanNjx1NWY=": "3130983000000", - "Ohx7V32tPoADmQpeEfKA4ZagB-YT5d96S2beuIJEqUA=": "413516000000", - "OijWHdUpHIxCbSOy0EVqBFT676YD_yYVisqSJeVZNyE=": "417637000000", - "OiqO9l5Npd4v8DImALAEEzOyfzrUqK4lOjXHQDik4co=": "390103000000", - "Oj2T6-gPS611Br2tUNtlACnB4GXoFb7NND5hXAjFauM=": "698766000000", - "OjTxauCTmi8n23ZvlFu_xBO4C762v2-4HzdCh1lniT8=": "1153846000000", - "OjbBq2IYv5Kem0uwjuPdwBw-3uAytCAJtwxtE7xbvoY=": "842624000000", - "OjhbjD-jMPwdIqrmDOZfIhh5OoZZ4AQjiGPepH6h1bE=": "1927537000000", - "OjspnDldjQdOVQH_dRjubsDV1y-1pHvqsngkyzoeN7c=": "448299000000", - "OkHzj019qks6L-_jM9RAv1obBdsk16HG3DMq51jU4-0=": "384162000000", - "OkJh0RCeuVowuJH3oCknDDmlq-Zrn9PmXOhvE9YYTic=": "3926510000000", - "OkKOx3JWLCqE09MATie5ReHDxUapfdyTfQ90af1baoM=": "412214000000", - "OkhfvNWutPmheEBVQo9wDoEj61ZZF_hfTuXFpzTL3jI=": "908685000000", - "OlANqYsB7KV9Iyrzd23vyCquQjwg701TFg4w_V1gKZU=": "1157231000000", - "Om-a8YOOrWh_Mzh9iHO7f_NiHNR1tIFxE86weNcbw_w=": "455927000000", - "OmW0kLe1-K9FakWsUq3HpmCqFyHPgqgs8InH3guQ_FA=": "411085000000", - "On6MMgqHzgi-yd1tlWhVBAn_tiewHvCHm33RscZjztU=": "385505000000", - "OnBtylRjYPwrL_BBOYL36PDh-WGrGAi8tOklhuJ7XhA=": "454545000000", - "OnlxIjIDLpunmuC477d4jzrH7CKM49DhtzPeTaGD3o8=": "16538461000000", - "OoNMGKioFGwZALogXVlg5kl8zMjCXRW5DCZzN04ZqnI=": "2074563000000", - "OoZ-83c0-d_Jg6wD7i0JNX1Tc3pLjtKK9nzrTEDcWfQ=": "1743183000000", - "Op9lOXRcEJ-8uFvlgawooiTE31Id1-t46BLVIPH838Y=": "384615000000", - "OphlH5ObX-JZUFHoP7UHlm-m0S_397VDAc7HIBLVQvg=": "383557000000", - "Opmx3POtosZq_r5IOcI4Nl0we25RYLKVe5jmq6328gk=": "391885000000", - "Opnf1_-vxL4hhFCB40MYsBx1VIZ08ytW-sATVJTNzbY=": "4984087000000", - "OprOCODEigXSTZ53R5kqpUbqFvLGZDTQ9YMQOTaauT0=": "412720000000", - "OpwBRr89spPdg-zAYMG9_LF0Bs3bEWbvGUFE9GAkbE4=": "501235000000", - "Oq-cOjSsKykQWLTZ1wAIGDfDkveNDywuSF7w7qnGTo4=": "771145000000", - "OrPD8m0VvUAdXLFHs2okjRub1vIR5A8ISRrnuDRtZq4=": "384615000000", - "OsRF8plVPTsxg-coGBlduF21JVdGNvTKG2GydQSZVXc=": "384615000000", - "OsdZCzWll1rFvGECjLYc68r6fiIul7xb8NBjQ-j85VI=": "3838930000000", - "OtDLrK8o99BgNr05OIA5gYj7g-GElqKRtUDW1dS6D54=": "391797000000", - "OtsSE8B4PxX3OTTW-SMP0lcdMBTDUVwc5vGOTqy01Oc=": "470856000000", - "Ou-7xw-JRQQ8YumrZp5UZXkZ2a1PX6mhksmbshqsoAo=": "519272000000", - "OuE-mn1jFkzQCcGh60GpRxbMpZNj94iAHLX8xuRQGiw=": "961538000000", - "OuL7FWeLRxipI1UWn5WdDDeWYuuS-F7MHE2bypAWOuQ=": "1650176000000", - "OuSGPUEiRkSVUNUe6UENr4juvyB7FAOoiyl7c-l4vKE=": "1905227000000", - "OuYX7soqSMyE0mN4cKO8UJVJ5L2Z0s4pY5oDMOwIXH4=": "2093237000000", - "OubqGBVRX0VGxJ3rg1orwl2ZjV0OWh4aBliJM_rjt7w=": "1057692000000", - "Ov4WkS2Yv41Q6jkahZ9dbub7udMJTY_-SDlDwY9zuBI=": "384057000000", - "OvLdBsNrMS1mCIhJBtnyX2QZArTcYjKGhUrbQpWDteA=": "2500027000000", - "Ovokvhls1-X1tluEK5EymbaTefrLucgPnJ8N3bCqRE0=": "3795956000000", - "OvvepSCE2Optm6xWslqp_lsGlgG54BtcYiSPXsxbMk0=": "2463927000000", - "OwRebX6U4W2yHRu0ZXFNWJBo9I3an1Ntr1u3PnkoxiQ=": "423370000000", - "Ox2Y-zrnS7QTPMMDWQlppRGLjLWpfhKgNxZVKA2giiY=": "385506000000", - "OxRwkfK4SXSy0OAU2aplYe-1oS3_0ijvXlde79E9UyI=": "376209000000", - "OxgxmCfNKjb9IaHUO5mnmqWpjYN38VtZkHByHW4ogIg=": "379260000000", - "Oxyl6o787OTq9Wa4tMg37oe7YxRYG9BkkTa7Hd1Q_b0=": "426403000000", - "Oy4ZdqMw-5xcjDLcdDv104JQvlc2U8nDWuxgOubFP3o=": "385528000000", - "Oy5qY41enNBG389sPMfaXVDLbU5dPBInkK7pnlPDXdY=": "400057000000", - "Oy96eUaCYHi9KqGBHJaj3Pr-EAxAp8WH_3CjV10Uz1o=": "5769230000000", - "OyBnkGP4bi7BHHeZkyk7XqO8Tv668N81PuqlOa6Yvzw=": "640455000000", - "OyNMQvycfRk3VTa8pyodtFYpQILLcMre_kEHgBk18AU=": "1818181000000", - "OyQLYRBleqn5LDkivcaTbzQUyeRYwkjn8L-opO556-E=": "1156519000000", - "Oyq5_a8jzlegv0gKuc_k1UG2eUyljw_fPgG2OEpsTfY=": "451943000000", - "Oz4oDe5mVrfSw_SV6BFtCy0UWBIho3mJU92M4xso5p0=": "399476000000", - "OztuQreGcSKuspO4ybht_i5Lz6TasiB_GCF0k2uQOaQ=": "3856307000000", - "OzxzRB8pT8ETpJbzEGixEy5xNzYJOtjf-Pl0q7XKBq0=": "885940000000", - "P-qrAqLqHQ_m0xNdiaQcieXjb0nESjHe2k6qlyS0gyw=": "382930000000", - "P04FgWYeEvhA6zlD6yfWI7rHszj3zGzUrnOWHLp8nTY=": "3824448000000", - "P0ES8zQ7eCpFIeefQrVFwG1cMpzgvZ5OgGhAj1694w8=": "1923076000000", - "P0HwEveYn28wDaBQ_wlgJ05GLLJZhDj46r24k5Gkx48=": "384573000000", - "P0KeeQD_W2teno-b1wTZkScHhtwKRRSirQXfFfO_LVo=": "14620000000000", - "P0N3M8bnqGy-w1V4fyjRVV5lPkEUgDFh8l7ck1lx350=": "386600000000", - "P0O1o1AeNQ2QfuMLpfqY5wIRlKGOQKZ0E7LbdhH1DuE=": "463498000000", - "P0sVkOvxfYigM9RWxGgvuYH-T3c_WznkrJSQ2W2bMdg=": "380527000000", - "P1O8pBTZI6O8puHEUi-4Jw0yyqMlg5z1ICbBNVcGI6E=": "2001345000000", - "P1b6M5EmVsnvoja9icIloWx1n87AxO5Zw4ROIebewPw=": "384153000000", - "P1jTweqI5cyH-dhmvMqyVwio-eC_1mo7LLd5bJXMFiM=": "769230000000", - "P2MlPgzDiFDmT_M4qnwiToRLE3ecDaNJp9rHvCBALUs=": "1153846000000", - "P2v1wIFQ3IscjWoUmUy7FqSGGOIcWN_e8G40g5Z3L-Y=": "7692307000000", - "P3kRagAIB-G7r7M8pdwNza4-GFMn-1mV8qBi_UokrPg=": "832691000000", - "P4ATi8XpiRi4y0HXawp4OEyteye35s7PrEqwKZpoAJs=": "460776000000", - "P4Nn1xMso3yX-iwn7VswMqdMZxGulFvlugQOL36KF-c=": "386546000000", - "P5ZvhIYVdbUNW9jCHaec3-2OwQsbaKfeSrjxNa276Uk=": "499999000000", - "P5rvgMIX3lAazPkFEN5O21lCOlAS5qgHW-EWrfmDFP0=": "575059000000", - "P5uU6h1s4Bv7wuk-_E9xstndvtEJZ7pKCi-Q272M4_s=": "999999000000", - "P6-xKF3Thq77xkZ8gTlor32aOb6KpTPcow1yQJif59A=": "833347000000", - "P68on3cg-AkHjcBDqtMuDFwRwoA_JaXVPnTbCS_dD5E=": "465144000000", - "P6mxQORbvQJZCiOl0s3qs9tWIq2cg-EQCHcvuG8p8JQ=": "461179000000", - "P6n6aqXK_9_BHI5ynctqXJbAikZlk-k1k1H2AMEM4fI=": "1366800000000", - "P6wB2hb4nELeKE5PND1xuvBjwhkOwo-gGb7ynoyfH7E=": "416901000000", - "P6zWwPir1DNF7iIObXS8JR8rmXjLSXZOQ6aYLqhPKjQ=": "407469000000", - "P76nC9QhChPCKP2FARMS_eWO-2Xk39WK-e7rHf-kw2Y=": "407692000000", - "P7KUGMaa6DtWJRzD8YQlEnfbborel-nveVxeo_2fbhI=": "8352615000000", - "P7P04DMg_HdIFFeBCqvEph2LEPZXPgLtv-NK0EOEX94=": "785636000000", - "P7QqAqD_q3xuM3fcsOq6Timdqh_r8gfhbaUabj4wY3I=": "1156522000000", - "P8dWGTQRzdTx7bmp3aYd0-2J-QsGwYI65Drldx5pOaA=": "384615000000", - "P8noZtvPjnKDzBR047vAeKr_regQhpDCZCM4Eoycjho=": "382691000000", - "P8w5N71S1a0UTA4Tiv965A6tGk8nTtju-pU3nMcC2Zk=": "2224621000000", - "P9F5HTq56Mk5NIAeeqywy-nlFnaDR0hsAxDFXn5nFHA=": "1145509000000", - "P9JIH3mLumZDTbF4TH9uEbAj4qGFuNrQvs6W6yNnfX4=": "597896000000", - "P9ioFspolkvURcVBmDBKmF4zjSBs9LSy7iTnAU8ZSgc=": "454642000000", - "P9vFSad-M4EZlZzFoLXdXhQoFxu2yiKCYrMCFNHEL6c=": "464704000000", - "PA5SJpWSeq5NoJgqboUbC2mLpgzjGtLCBB9cW8Nd-cQ=": "784228000000", - "PANVgEVkeeDNY5BeUvYGwxn724mgPpoD938QWy1D7FA=": "847697000000", - "PAuK-DbcsJGf04yItaaIaCejbwjJKyDrqbN-qHgFMIY=": "391029000000", - "PAzYA0hznPb0mgrruQCnPrT0plp2vPztWUjTeALU480=": "2083333000000", - "PB10VpKLMBR0_BLTOOu-HbC3JK-bIyijFlN2I-ax1Xw=": "1499999000000", - "PB1eduSDhB9WxnOybBje3VdLIHfc4zs0dZdvk1MSQw4=": "384615000000", - "PBCDZZ3MOGN5tHOL7fEojwbbyKzPF7ubKiufIA6c5-o=": "769230000000", - "PBSVwypyUcq7WZI8sP2i7KfcKZ-NaHFO6kCBudZQ_UM=": "422561000000", - "PB__X2Xu2eMGWAx6hy1cOuMmFWDbJ2OmxucP7-b0gGk=": "669573000000", - "PC6FMrkk2xwq5b6mkfzi9oHYLc7fj1WzdiUQ419QWdQ=": "3702172000000", - "PCAkWXd9HiCTWFVAod5XMlEQ_OMMBMBTzEKsCytIu84=": "455600000000", - "PCIL26GRgGP9N4DcYp8psIdi1JZmVfn09TYQjIXfZjI=": "4580108000000", - "PCRofGYI_9Ym9QJ2ZGwotjRkXw7HuXMgeuiC0JX7zuM=": "387216000000", - "PCTO6SnXi9mYNlRl9beoxWT5CJjT5D8Z8UpkyOGE8tg=": "4556000000000", - "PCZTXoXpBQZYDSQWKhycgmZSKSVGi6_WZuJpmMtb0zE=": "1851774000000", - "PCkQjJDBvKtXZAhP669Me2myn94wb3hv1-j6t-cjEO0=": "385671000000", - "PDNTl_ny-lw_ugVhh2gmdyJ1bbIHiSkbFIZscjh-ZCM=": "603846000000", - "PDmJGv16Kf-AW6NPa8F1DvA8b_3fXXhK39dq9yVj_nM=": "999999000000", - "PE76We48i-qUANptvhflnceE4OZvRSF-iiJlP61a-QA=": "1153846000000", - "PE9zBHuUmoP-gAdo-VBvaXnMHBq47WmjLqmo9sCG0ec=": "460168000000", - "PECoOX_noSJ87ryS_iLsp-bM8r9y7OVVN6n3z93Ehc4=": "423074000000", - "PEpZ8ANEuCcZCINAjIzp6af4tZ1-0ET_VO7dpEdAQag=": "3845571000000", - "PFkUgwPihZJ37f0dcptnHspc3erYcNi4IfFOqMpo5mE=": "399604000000", - "PFrmiQe722FM2JfPz_k3bsWJPwEL0l69TKEkvh_CWrA=": "1519714000000", - "PGNIK7hnVRvl-3i_WND3tmu_e2AtWLtChPqsMkz360k=": "1153846000000", - "PGoQuxuUKL7oUHFZAbL4VTAaPVPVk1n_Vx0Yn3Ds3tY=": "771600000000", - "PGqjmw7BvaGcqaWa_n5axQNua0bmTqyQEmWGGqEBdN0=": "2003307000000", - "PHO26FbFrg7MojWLRpTSQub_O_NrR6-7rjFDx_kLDZk=": "2641305000000", - "PHQK-LbvFhzkwuUxGSFieyP5JjRA1qA5QIeq94wtO6o=": "386960000000", - "PIDhjGRzodUPX8Qz4EKldieMMgwkuhoM69iGs4MAvUc=": "461649000000", - "PIUtO9d11kZ5s37FkbZe74IQEc_YvFC38NwyYATSRqk=": "1671760000000", - "PI_IkEPC_XKmRRu7LnREwTW9TRQ3V-OkMdwVeeN5LVo=": "1959916000000", - "PK9a8hK9W8N4DtQnzdeNQ9r5lAM0KxJbNQyZ8Ab8p0E=": "488082000000", - "PLS1gd389tC1siokxyCDWEeKu_oW4JQvSTyMUwVfQGM=": "385506000000", - "PLUSlM4ezYy2vNBSmDoORTlPcgaiiL2CT-FADyab068=": "465144000000", - "PLcVxrMDQ0qzUbj6bPfz0csZ41Cp5fKWpWQMWauzEzA=": "648033000000", - "PLdXNFg5zJyGlV-zotmYOQ8Qg4QFDXD-66l0R1Az3ew=": "3741282000000", - "PLj_B1nAkP4Hpo4m_v1SFVELD0A5ynqaoMxPrGEKVn8=": "493696000000", - "PNP5kVsiivpwEeMybyfunLJFlkl-wFdn9C65OkgVv3k=": "379344000000", - "PNUDIwDHiUiRfeWy8QNypMN6s_Ik5wvOsrboDH6ylDU=": "499865000000", - "PNhB4otDzAS2hXVza1OCkf2K0xQtYvbMulVcQf0ChjY=": "464872000000", - "PO4pZVWZ7y9YKzRPQZidon_6ng4XBVl0szsoqS-VFUw=": "5651783000000", - "POA-pueWYFiBlUBu2LAYihuKqgeBmVDIcPWn_24a6wY=": "923712000000", - "POQdaL547lUyW2mh_MsJ-NDBv2D_gbUUfeaLycxmAvc=": "357939000000", - "POVdSSSTs0JqZ9ATfHQ0iljkgPoNE7Zlw_HS9I5JJJ4=": "422696000000", - "POZou8zoFvEKCtLefWJewQKchK5F8Ki2v0O6SEpHfcY=": "389613000000", - "POc7R2ZTS1gxH8_RaUdx7SmoSUin5BJXLDsi2lIy_A4=": "580014000000", - "POla7poy94Z00B4en-2WYTg1Mggf_lI0OcowlUpg1QA=": "453050000000", - "PP-HKWstDSwolO_2HqZIhcPH0hjekzJ9Z0o9uFdE6fs=": "736923000000", - "PP2gqIvbTg1dlGQOzVe-a0KZTX1WWcxEaEyEpmIBwI4=": "685447000000", - "PPD2yCbyiT2tutr_O2tgg5ZDx74yN_X0zcX8mMUCemc=": "1923076000000", - "PPQqEXkdLXUw10WMoamfOTrjDwrHW4Gx94MkdAfGKiU=": "384615000000", - "PPT21sWo8wsGrrkgP72DuHwflRP3-103JgRw5HCJYTQ=": "3708922000000", - "PPlTLPP9Bh8yA09vHq3EA98QKzig9cOxU4SmiyaruJ8=": "780474000000", - "PPtZreXh3SpdjlEAt0wmk5Krg7BAQzP7dGM0jbmnNXQ=": "7408501000000", - "PR2N-9ePNuLFF6CkiR2FXPsBDkp4-uH70n3EsWfvpNY=": "384615000000", - "PR7aPtQGuBpJp__xfN3h_Tr7xnNsTcFxH48n9nFshHk=": "686236000000", - "PRlfkWsiGDdQcdTbKyvJDeJJR3GI5b-Vrtq2QxNT0C0=": "419459000000", - "PRss9QX9KYCX54mrkjkbvUFr7Im2FTr3CFvYTI64PqM=": "20921509000000", - "PSHifqpQhuLV4B3JsbG63jMH6n39zqCGC_CHkhrdVgU=": "5007593000000", - "PT1Nss6vxHMICfcnz1b149iQLxjyyXqYQ04VvJo-zPY=": "1250022000000", - "PTr4_pRc-K_1NVSQmsxYV4vD7_GtGWmUZoGmBBsB1-8=": "481965000000", - "PU4zyzih97w4RPMa9rapLyvIg6sMQvq4ze0h6wYl_24=": "407469000000", - "PU5yY9_SuwL5OwfdVQJly56LnCR-twklXY8AnvVkUW0=": "530021000000", - "PVC_meLi3XCsQB2g_obrhAHAsmrmQKakVyFzDhTLbH0=": "384624000000", - "PWfLuPjurg551fYMUxRoHQJNjnq2oG7rpsf9uzTaA-Q=": "1963173000000", - "PX5L8V09nYBPP_ikLkf9RJopfcwJdxug_tQfRvBs8og=": "385509000000", - "PXOmffrXkVIQmyYxVz6WzxmDiUnj3f-QObor2b4DlL8=": "831835000000", - "PXWqzkKwX3yRaDZaceEubkRhRIpW52elRu4Gg7LIJHo=": "384615000000", - "PXcS8rjo2fXFjI3fuym_-1ztmsS6blYFTn-oXAWC_lw=": "769230000000", - "PXosCLFmcSWB9KO_m5hi78SZF2ab4uPweSsAt6190h4=": "390340000000", - "PXql-raY8pryCHHxEJTtsxPepNn5n3d0cez2soxPTd0=": "905070000000", - "PXvB_QlqwVcBK2svMCW6N-gQ0N1dThExol4LO3fDkIE=": "385670000000", - "PXxR4sUiPtY0MQL40WeQoMiLek1TSte_66K0yikCjCY=": "384680000000", - "PY2kReDQhUKa88Hn3yBIHgROeZDEq2KgTdMkGN5zIlE=": "1557767000000", - "PY3xrngfsE1kzkd3svgrn5XtKHyr3T9nzb9D_UoiGN0=": "499999000000", - "PY6hKQtlxqjk43bhX1f_PHdEc8eL2Zq7JSTORhdQLkw=": "384615000000", - "PY6nzWO5XQv11ULQnDxNpj-bHcMV9KibEMUa6kR9jXE=": "519014000000", - "PYHUZo-5s0iEP4GjydIh97eE3iiJJ2e5sCuqVkWdmIw=": "385507000000", - "PYNzCwvW_llEE_OnO0mhlQv5enBsvakb3bDp96fYW_g=": "377378000000", - "PYUOZDDmQ3J2Vr4A7nQz8IgzPRmAmFYDe2ppu0QZa6w=": "464533000000", - "PYdnX85_2DIQnajIeLP9WbyjnTihyI_wOM-DO9R1hoY=": "671450000000", - "PYgqd7wkJqT3zfwwePM4BuVdsrinXZYqYToxc9PNKLA=": "458281000000", - "PZLXbpmASDPPLmevuiAVyZfO739xa-2xiUhywz7EDRA=": "1249999000000", - "PZ_REi5YqO29eremRxHRF5crRl-cvfU103mCussB_ls=": "423370000000", - "PZa3HIOEyXPFJSEQghJSxNW_d_Z0ypkCzfQr3mP1FUs=": "471164000000", - "P_RhBn38gHfsnxF7DaPncohHpIVPf1WNSm0FD0FEySQ=": "2307692000000", - "P_cz8HxOZL5AoQ3-GrhfudUuDv7wNs4a_QwG0lIc3vY=": "384605000000", - "P_mWgYCiusMHz74oSlA1PD2Lp5ws2SptRAdxg8n1uJI=": "1931762000000", - "P_oRf9tmFKhLTbIf-vbCq-0fXEXQgbq4QeQ4CMssFJg=": "1249999000000", - "Pa4gmfmvepyQ_QngC1SgSR71ZuiBGtc215cCRbo9B8Q=": "415629000000", - "PaXOHU_jpBzRT-F3nDAlMeUWHkbZsIR0KRdcDazRrlE=": "379307000000", - "PaYRWk4IKeRSx-Etz-dnmVzY6YMY_Wtdn3qPfVSO-6U=": "3705556000000", - "PaoskbcBx4bU1XDDiGo7Q8yNJPoMA0R7lqkiuYi1nGY=": "897817000000", - "PaqB2QWKW_Pv2q3r2HAcdP2ysXXerY9D9o0OXertRwo=": "916545000000", - "PayWrxt-6HuwOENIS5jwhZiOTCOjU8RWuPh-OyWWAp8=": "384615000000", - "Pb4jcY5qjXd0lo8WyrTwQkymQAQMcLXuIMLkSQH7QyA=": "6910574000000", - "PbB7ludVoOUO2Zjl3crKGFfzZAnOUoPq61HIdCFgfSY=": "461538000000", - "PbkAc6V001nYNLzvUgIhxZZ9rWAULqpVYb6B5_NX3yA=": "1666666000000", - "Pbrso7GAVQ3oGt8FrQpI8V7e_wtGzxwy7CDKbXbYKv8=": "521954000000", - "Pbsbh2Y1dFxeeTAKnYmOi5XqHJbyNwq3gRmr3jfwMX8=": "766875000000", - "PbtkFsfIb2v6px-Wq8liVm382pA0cp8qGtF2FiJXB44=": "384615000000", - "PbxNvjsQ6zo3OqplK9HDXZfPMzSPqeoei5kc3YpNPVs=": "407808000000", - "PcPqJSQDn0FQzagnU5KZpqNkpjR_JzNchlCwraSjtqo=": "831431000000", - "PcTblxFYIaGrFVVHZkkzKxW9YROpy0pd7rZTs0q3KJY=": "464111000000", - "PchzOCW9HAQ6dS8HwlgijcUIDAscOFF6KHgNSFXXJ7o=": "384615000000", - "Pd2oc1Ba9Oh-xl0jBCNnM-MoAGhdE-8IGRn1JER1-zs=": "1153360000000", - "PfZxH6UPd8FV4sG7-TSP-WFLAHJgHusi2wRLXksy9l8=": "16724874000000", - "Pg0zZqQ6A7-4n-GZ0DP008wQ7e_Nb8_0VooF28EqKf8=": "384615000000", - "PgYUrQ6uqxaP8lctumEgVPmQE2JgRwTWrlbmWPgRZfA=": "490217000000", - "Ph4xr6d1hs2-WcceYNIv5r2Z0AK2qyVwPQ39l-zU3q8=": "1666666000000", - "PhJrHhPcFMY8HO7sA1nG1GsDrWrR4S4DRu2fad8f8Oc=": "810313000000", - "PhKpkKr8qchebpcQxzqKOgeg1F8wSpEgMKAVQsMEH6A=": "925649000000", - "Phu0Iq6jr-RP2ZIiy6G3RF6sMdYkoYoyEF0NyG0bU54=": "4049792000000", - "Pi6QxmCZ7pOmCiGb4xzoA1iWC1-w98T9PDphvaclptA=": "576923000000", - "PiAxp7NoV6JzxYRTVI5_do1p8YJueKj0GMKGIs0h-cA=": "1923076000000", - "PiRdc2ugvzz-gJOePs62LM1Z5700MhPmRJYw8Pslkag=": "384615000000", - "PiTFVdlJDU7g1ll8Z8ebM7RFDRmBTZE1ptOuHHaV-uo=": "543723000000", - "PjDN-Yp_35DIhdqO-faLmMR8WG0YKLX_Vt3a8OLXAl0=": "2499999000000", - "PjKgd4gtTiOxWKkFHG6rzbDKjBz84thinIjfdW1fGU4=": "1563772000000", - "PjYoLfB91yWKXAm5-fQPrp7NI3vahw1vKi-7-PnVJQg=": "384615000000", - "Pjq2BjBsNtbDXYktUx0Yb1D7fTEo4Xj8AgOIradCvBk=": "980769000000", - "PjxNTT2MNu_Bd77I2HX3_ET5Fxkaj0tFEejikdGBFXE=": "1682449000000", - "Pk5YAUSA3Z_-lxB6t2iOgjdri2QZ7xlIPXdzxAZCMOM=": "906315000000", - "PkTcvTJSSDind96R9njZ6Jcgnbi589t3VpDv0I9lN-8=": "927494000000", - "PkYPvajYPBuK5k9jWui95WKyCm-4v0W8rLL5wCG0eYY=": "457937000000", - "Pko98dlyFZ-MYIidcy1c4f93n44AvqrcUOqJ_TlFumY=": "384615000000", - "PlggJSCkQN0cB2CVgdIecse6PbRdUUrjQ5OrupmYaYc=": "624999000000", - "PlsQmPFe96ScdpUTbHXUkWSlYjYBXqn2j8fyzjKUjC0=": "932182000000", - "PmHa-JIEq-242etdom_fpFF1bEl9gLusAHIWG_DjyUw=": "375039000000", - "PmLwfX5xb3GBjNv6In85f4AKXFRua-_CwbLGjSEImSQ=": "381805000000", - "PmS5DH4ar4fYshQEUjlcE-JRBQmkwDEA96ExRRr8ZGI=": "2308449000000", - "Pmb9KD5wEkl4p1vEdUuODxyEfFcZxfyTPsQA8MwoXgo=": "3212791000000", - "Pmye5z_LaLiq6ELYmCn5vN3KLCxPGGDZFz1yBu3YJk4=": "384615000000", - "PnAAEQb9X3JOzn60cNhRN2L0Pb36HMkoU8H2ueOsUCQ=": "1240120000000", - "PnBQismEgwa3YrN_iDIym2vvcX1JFewl-pG24f6kxNc=": "378671000000", - "PnRyaPYpp5oiFuaaiRACRTqoq6f8oX1y6QVIC40jkKM=": "385505000000", - "PnbDMkGU9iQghGnmNBz22cDYjRTtvVGRYUQDXCqWpXA=": "386822000000", - "Po4h8kmaeq2QYiRAfMxH2j-x4464X56ykovHy0BjJfM=": "3635578000000", - "PoYK4DD1J0iQpi0zE2DXs5vxNDwGgbGPoJVvxp06GPU=": "1923076000000", - "Poq9BLzbgmeVNA1C7MHtEHCDo01Vu7K9QvMIC9gzVV0=": "458605000000", - "Pp7a17B2rmuLR1j7Wu55dpzAgNAJf7pAOS0osxTHoy8=": "27046818000000", - "PpbGxNWCs9hcTMVWGRjEtMm6hEMVbgVOPtZt-xacLcY=": "1174139000000", - "PqHtj16LrkkWBs2TbJHkiHRRk_TSow4E6y0zCJXvVLY=": "75692998000000", - "PqIGFv2vjI7Yi_EK2iEM3oD4r2jMdcZmelE7h6bQpME=": "438298000000", - "PqVQTIzxjKg8_TyoZGK5YRNF1rWsqZQeohmDEoq0TX8=": "1215692000000", - "PqcxnpjYWNoXCtFHJj8FqoFboT7ybMhIuOxznRJW6gc=": "3269413000000", - "PqhlbUL5esyxUtV8C5VDgjLZQAqjT2PHonA08AEhV30=": "408021000000", - "Pqoth_5wOkU2c3KOx_AItpp0K1-oEXwGcqHyi3480nA=": "379874000000", - "PqrTIwL5QJAXBf1-YqFHo1OiMjT6Pdm82dQiP9-MXZQ=": "384615000000", - "Pr28L-y0w7U0jlxUq2oNDdbMN6LGZAXrmwX9mvfRBGY=": "4946121000000", - "Prk-H5KXAdNkHlKhY08WZsVhofB5e93rFuqdOakUMP8=": "408021000000", - "PslmF0VT6DcoJsYvDSQjwaJ7m8JDIcOofQAqOZlpSrU=": "727307000000", - "Psn7_2_7sIhHDYmUYJyO_rWZPzjfTdP-YAawPgNebo0=": "393566000000", - "PtKsxLl-iV_ViuojXLcCaG_IBYhgP2uGaHPPHUjSLjM=": "384652000000", - "Ptb5iJOkrZhw8Qee7vnFz1b59I197xPAoGF1zoyFnpQ=": "379344000000", - "Pv1Wym28Tq1QdkB3tX3hY33W1HjOuVjW9skFP-Et10w=": "1170317000000", - "PvoUHQTtmMP-GA02oALf-qd9rTQXjWlJQQWWVO97T8Y=": "769230000000", - "PvxtOk2kd3jKre3C0Km6b8FB5CvGGDo3ayE8voxPw-c=": "384615000000", - "PwXsfrtGwWM17OJMArUg57q98wJ2Gka9AZex0_SiKu8=": "769230000000", - "Pwuq0YLJX5mWhmObfAUvAMP8_-M-95w71lZdjJP_zw8=": "769230000000", - "PxD7iClbtPnZZ0Ol3qLi89d2MM_hHqHJVrOFHVNXyUE=": "449629000000", - "Pxn4kYtNBxQzLhuCo3WU0fSa_aB3gyaH6XhfUXKfdWY=": "416673000000", - "Py4BHbEP2U62RqcaxxfMJ_toQ9y5UufhKaf8LJOsXRM=": "382908000000", - "Py8hLDqujqlzp4dL5Ocra64RRgXQ52she854lutL15g=": "772727000000", - "PySF4V0neH0bhCFVls15xutFziTE-cK4Rh8z2m2DC-Y=": "1135328000000", - "PyzoMjb2GnevgwKckzpYz81v0I8H9qcPquc0wTGRnTU=": "2314527000000", - "Pz87T9hgdMGgGeIHJ3rBnbNBauhv9BbWDdm2w_qE0B8=": "448211000000", - "PzB8gehN5mKQxghUMeNFVEbGW-qdurrNZ-oMjPxzzMY=": "789863000000", - "PzD7H5Lmeq_UIkWTfhO-G9rJahIhXaFXSH07rpDUmnU=": "963653000000", - "PzLSgVGy-JUDCUw4Ab5vOXrh7D8mDMZ1eUxBGcOOOiU=": "381805000000", - "PzN2XNU5Q3jx3L89blCAjBTtmZzKXSX3XUBJLcPNM1E=": "4591751000000", - "PzYwW3nZnustHDNcEbXACt-SW-XX8G1c6MnurPMsm8k=": "416666000000", - "Pz_4jL2l8UvBU1tlcSvDFAGLePrEruXAHdoj89iFgec=": "462146000000", - "PzecvS7jFPtIpfl3EppV-aegq2ZR_k5BdyRg61lLdPk=": "1223040000000", - "Q-EsiB8zTSTR8HawMe_xA0sKggZVJ5P-SjtHOFIZj-w=": "384615000000", - "Q-YavYsAY4cMeBnSgIkcqd4AuoVS0qS4rl4yjxCfI2A=": "19525416000000", - "Q01C0pEofBJQAIPTFQN22I8RcT9MDRyGqfLD1cB_Rkw=": "8272291000000", - "Q0CPSIvxVVJ7K9SPRBOohzL9C1H9UVaq4XUE4QSUVDs=": "599999000000", - "Q0nu8hnsRL8s0vkpMd1V9EZURq_MnJG7MiP61mcjnhQ=": "446994000000", - "Q0x-c3zp1KiVKwbnvK_Oq4pHxk9Mm2MhU9JR6V-7kZI=": "385507000000", - "Q1CIYr9AYCa6MEHkYRue9X0g1pLyxZBT3AUvbQU702s=": "451715000000", - "Q2KxiCkyYAwY2vbP_9zZeDP5k8Pq32wtBpdsc_NUykE=": "384817000000", - "Q2p156xmcOM3wBTw74olpRZRloDvBABFee8aoESDbgw=": "378733000000", - "Q2z1IgsETWYV4j4p7npiTnIIzaE36mskx9Z36aDANMk=": "954279000000", - "Q3DM1BlKhDDevXu1RIqsDVZZKZjxuF4SnN__ULXS5OA=": "2431133000000", - "Q4FRb72VJ6TQLQcjHslBo2aZNE0a0exFKFVahdTrJQo=": "384615000000", - "Q4KSuqmlYCtZ7NP5zxI_RsrZ9lTVy7p2NNWovdszlyQ=": "424796000000", - "Q4Lmf9naV2hlqb7FNkHiye2_fTlhz323_8n8VPp_0i8=": "825800000000", - "Q4WW7LkhVYPEC4V2Rj4TcgGEmO4g2owz4SJnR2B36Bk=": "1634235000000", - "Q4dff9sb5xmPbLL64pNeUn5Dtu3CBVopR0yI3YtceOw=": "755298000000", - "Q4tHH3jAYsBJfrOTT3lPSjt0lUVI30vZ5qUznUXu4Tk=": "808861000000", - "Q5-rFfxzeafmIvtZvt2L2Aoph7LZbg4c0rYQL5lJMjw=": "385213000000", - "Q5DRBbh2XR38bHQGEKszNDfFihq1gKbw23XTqbQuaeg=": "1563902000000", - "Q5ITl71mYr52NgIcnXlc1b9yJKWJedreEL5czU_yYms=": "417635000000", - "Q5N0Zu8U-r-ol2pZao3jErVvTsqRLhXCH_dBqOjVT6U=": "423370000000", - "Q5W_st5kWjMNoyfj1F6GZVWZepAYAMAHKFdpNhhPRfw=": "465433000000", - "Q5k_Nw-1BlH3ue-7FOmrGxS01bc8ZCkb3_XJQYAHme0=": "384615000000", - "Q5minQaY3aj5pZNo9KXoO7kBdhWB8SvAQtoW4au4kCk=": "1154347000000", - "Q5twgDofNEe9ZHu8NEIZuoXvuu7xDicJjAzT_FIP__c=": "384615000000", - "Q5uGS3RQ-iFWGpPiuGuW_RrUTQTfG9uMG4sWQphzdRk=": "520498000000", - "Q5xJo7d49_KAY-U3y4toO2sS00pr6uJ6mTMm6vEXBb0=": "2691889000000", - "Q63HozVtPoS-96_QrkGMatWs8mSt9DiV7O5fa92rPY0=": "769230000000", - "Q6PuxRN0JkickIgngAJwQczIN4wD1ITkUUSBaaKlVBQ=": "1153861000000", - "Q6RPaxa0fuwkWtoEJN-sanEljIAPxiHSDR9OvWhaDCE=": "404793000000", - "Q6ge0F8EbgkOfbitdDgQgawcvE0J6sc1anvY4DrIqBw=": "1158675000000", - "Q6ruqlmlVUd5ZLvPBWsO2A5HOkHf8bCqCb_sk-l_by8=": "385616000000", - "Q75I-zUi97IBEXtUCOsKqFsoyBV48tbKFI-cKbUWNS4=": "1783986000000", - "Q7PFhVXjGHBmh-y7woftCpMO9mskVCnI0K82jJJILew=": "382479000000", - "Q7UxWfJMdXxVD9Rv2LfTZNRFMIuPZTAXv95OXkaQB2k=": "538461000000", - "Q7d2AJjfguR4-U5Z7Sqvz6Z0uW779lb7COZdrmMo63M=": "615384000000", - "Q83P6mTIBkwTpdHpGSJ9kTMHT6vVmmoIeAYlHo7Dm3A=": "736918000000", - "Q8fJhb-CkwLCmYO0c_i9IjjjOF_qfj5IhPo-RyA-eb8=": "2763868000000", - "Q8oRQRGyhUqgs8hFOe8mPDpOXRnOQEZGGB85tJUjsR4=": "470195000000", - "Q9NVg9nF28AFq6Gx3Nn6W6ymitykApUmyZe2aeBE5xU=": "416313000000", - "Q9WW4oBrFCzVW5-uA_tF19LswRlV5QPMNwSonQlYXb0=": "4999999000000", - "Q9ZL4iSRfV6zG5GTS1fDyqMDFo7MPQqmarFruOy3PT8=": "577374000000", - "Q9h3IdzBbzNx75PPhBb283NxtsSTpAdeSUXMYD7fVo8=": "2238665000000", - "Q9voV92uIyMAeJO0uL4UcwyQioUFpUdsV6GHBShg7Uo=": "2745809000000", - "Q9ziatUq7qx8yH6r5cl04CX264GR8YsQ1yu0JClxkmo=": "452482000000", - "QA925D48wnZjo7MCJoIJ5IBTJBJJF7jkWnyjbs1vVa0=": "424303000000", - "QAe_-KNff8iedSamQbTQ0qn0cdlt1VjzusABtyh7O4c=": "386201000000", - "QAfKYqiiyakE8BtBl45uLKuXZtCl1uiEgBM70BD4rwA=": "1249999000000", - "QAksYHI_AAwa0B_uUry9TNB9SiBnK9jJcbDm8A_FlZs=": "1939039000000", - "QBy4vcFha_riw55h8nNY8ZhnXd2MpEldq2G2tG4A2-w=": "6509909000000", - "QCHmMtGxAcqpqgRUCZr0ZtGEE5cbnBHI15V_zOyV-Ts=": "1091328000000", - "QCwZ4wmH06YcJRzChAmi8RIeQjjCdmocWRmwVF6Qwbs=": "463315000000", - "QCzIrApA7zGRjVhZiqcBFRko38Za_CrMT7lXSgbnKIg=": "1365066000000", - "QD0bjpxHmzyQaHQEp7S_sBxCnCeLtKoinIGMie475jw=": "1425355000000", - "QDAknd0347ErtbzXtDnTF8yIDg7MifZgLBUSrtmAgJ4=": "769230000000", - "QDcPvR545bo8U5GmEH0OgRkxF6P7WKeHmdG0zxBO2lk=": "381695000000", - "QDyApdDYVUxVoOuantajiueOOsEv77HXYUp7bOABCTY=": "2053518000000", - "QEkFUAoqKPrlNog_G6lGF7OchmWy7sRVC0-whNT-u-0=": "3846153000000", - "QEnmhO-Au9Xe_bglmqQTnrGedkcjCfJQY7kGZ0PHAXk=": "1153902000000", - "QEq9sfI5eOgNmG0cMeYIgaaKtpkCA6CviUAuzL2Xv3g=": "1156517000000", - "QEyHradRj3QDr2s1C8sHE0F8HG0pB9aOZwjnUMFtG0U=": "384615000000", - "QFm5ZT0RJUwxELQoY8SH-zjlEO6ptRbuBk9rv-k3JBY=": "1157097000000", - "QGB9F-DzX0kyj28vm9mU_fLb6OQDY4MbHjolYKbH5g4=": "8658632000000", - "QGjSme7EfsHwiJwwe1si8cItmhpqOw5tKeHPqSncwb4=": "472009000000", - "QGk2P2cFImHFJdUxL6aKiN9IkQdmyFyvILWzAAKSWjk=": "378037000000", - "QGoLLULwJ3LQr1a5h9sGrhel-4tdlQTvlLT_uHC_KvU=": "2110842000000", - "QGtPs8pjIoWutUOwtvtpx0CnRKDBXNWfVYj5gh_cbYI=": "385508000000", - "QH3nXwzcr-W1bhocWsf3NBvOa8FS6nICAb70MmuG4Rw=": "463498000000", - "QHdJIe21D6Dxn4RYjwt_yDWh0U9hXz4s43YCGg10lMU=": "542473000000", - "QHoizjXFLA-8w9sAWUt-AEi7i_yWmwnQ-3TRC3dQQlk=": "1157186000000", - "QI1ZwCLV250s32zSO2u54vG9h5gLdQFKp6sP6xtXhK4=": "404383000000", - "QI2Utg3TPRNe-O98259-w7yYxyIM2o-nsH6Rt-Vk0nM=": "1933203000000", - "QIAWiuJxFm-5j4t6-KVFYpFBYl1DK2b7nuX7jxlXdQ8=": "768779000000", - "QIN4tiWerNnm-HFCdEFWRAqsgktSnS198EWKUrSxivs=": "5052659000000", - "QIpXl7m9pE3WaCnaVJwX56J0ajPcb4X41r6QFAHAb0o=": "470159000000", - "QJ6vY3qYXme9tYbRf0t0J93H9OzrYntcOGrswJ85Vnk=": "378257000000", - "QJMcH5_g-CERliQjS-WRqKI77MQ6No-g3ELWjVGtjzM=": "454545000000", - "QK9eGlmcqG8_GeK6Qyf3Kf_XJOLQ_TBBP7zDw-T8KS0=": "469988000000", - "QKn9oF6enKoMlHhZ2qQflzkX1TF9gU-xNXWD0fFZAFg=": "347931000000", - "QKvEnWkQtH4fX3RZ4OuEyi27M66u710_Jp_oKhrmSdc=": "384615000000", - "QLN5CeFXkkMtwz6ypFwgDwAJZhyXP_Ysx8O5Sv_EEPA=": "1355269000000", - "QLlS8Fn-ErjdtWIahOYm011xpxbr5pPH4RBACWpJvds=": "565887000000", - "QMkpqcgpMdoGkmhm4Pih-xi1X4eVsM1o-8J5yJi6PrQ=": "1156691000000", - "QMl94oiQoT4aXJnKTitZlvvziOaaHAUGnndnF-0_PYI=": "470398000000", - "QN62KJ0riLRwOaSCIqcp76H9cufvo_YD-VqK7_dok9E=": "4173180000000", - "QNy07XybmQwLiJugjM3ffbNpIpsmJaGl1Mj9ypmDFXg=": "2448515000000", - "QO82NsjuoSEixKOmOELkiqeDWHLejPHP5Qwt1XRkNyQ=": "3846153000000", - "QOHjvJjtCN3n1egPMQqen3qdctw1CqU60Y2FTOTfYfQ=": "769230000000", - "QOeZQtpR7oKAYKPZlpamFv_9tdcB2ay7KcIPw-lX5xk=": "1877100000000", - "QPeOoCGZODZZdkpGKhOxTs5qVBXjn6L-kkM_r9FxxKw=": "1923525000000", - "QPhEjX_KoGnL_9YjqMqCsi5oZ9l5026FokC2tmM46IM=": "498796000000", - "QQ9_CwxFAJWLpcKg6FbTQJphXyU_qLaGvQ0VD2MucGs=": "3830304000000", - "QQMmsxvnGHUMeVDgRq69USDCdQI_dMOuzhZJPa6vfxI=": "384615000000", - "QQQB6l5RBK27wF5nX9oOtWLySeWAZNX1s97MHAo-PQ4=": "1026763000000", - "QQrQly1e7UtwIMRS6hwgv1p1roGQBon6O-sFLcag2QE=": "461494000000", - "QQrfdsvswyBWMM3MgI7GqEDjslTFKbLYoc76SCjaANc=": "630445000000", - "QQtjbIyecsP7hHZk47uRgJuGq8yb8lsghkWX0LIHGfM=": "1818304000000", - "QQuGTQNO6nPNN6SnOvDzbPQihf-x-3jyJ7kAGvvv6WQ=": "411085000000", - "QS2tOX7FXyPrQhYz0Nkz4yP8nbhzxDDEyQ3KmKCecyk=": "4564202000000", - "QS6XkwqHH11ZIXg2Tio93b7Osb8ddmNN03yS5ngW0hs=": "386848000000", - "QS7VsAWTD5-aDQF8bXZzWsx2u0YiuFY8q285KOf-jeY=": "385505000000", - "QSWT_aAbPD8Hvl9zYyhkybYyKMcRwd2N42KkWD1-K9s=": "840252000000", - "QS_0e0o4Dxkr6l_5fJp36mS5DvNwnKH1XpbD_PFJMAw=": "847570000000", - "QTAlupNx_m2OUfxXMjF2_ghbL1ZC7A5o2CQReTkIUYU=": "446149000000", - "QTEn2ms3n_oRc6yDktQRUHzZlx0Anw4aQHutNfqOMLE=": "385035000000", - "QTI8mae1wZOaxhsLIC3at_j32rJz2k_MNp8TXl0rBjM=": "1156521000000", - "QTVcvUcNGcaSTspf6USu-f4x3v2szb3koC5dvf6o07Y=": "5084148000000", - "QTW3b_nZqwxAiDX2UPnaqgbupHsUnL6zmeJTAVyf0HY=": "399661000000", - "QUIhEWpb5S0YkYO8FTC6eao1fJc-v5wOtQrHsUDhnSI=": "1153846000000", - "QUi7iqIPEtBF0VyNneAQue_urxJb4_WLuZ7MQcQW7w4=": "384615000000", - "QUkurRE6AY5s9vHqifKhdPKvziA8W9pNorKpEaVX-yw=": "3315000000000", - "QVWoGC065SYbY_A_qMUJPrV5rkX4CNgTYboecqUjAy0=": "4011797000000", - "QWUtQHqtLBEFcXgUiQv6DkfB-z-flixWDbiLc5iX7qE=": "385528000000", - "QWXzSgljcCWPSFOEWC-T4OPvbKVEzKpLMkP5sj6BcQ8=": "390680000000", - "QWlhkg6IOMB6Hqv2RwF5oZdGqcq1-qZHnhjSUYUfLFc=": "817526000000", - "QXFMFPbWHtB4x4BH1eHPBXG19f0bkAjoBIaiTkD-6W4=": "673076000000", - "QXM6b7XmHdl3E4N1yb46381JMqCl6sYQIdWxFtI00nU=": "769251000000", - "QXVV8bfUMswiXpQ_GbR6HyhzBjozkgjWvzfiISvAHbc=": "2079887000000", - "QY3iVkpy_b_vPRsuTG4sxMN-0nwLCwiDO305gOA6hoc=": "411085000000", - "QYDo8HSzmHY6yYDz2fZkkCIlFVUFdEIMYZ6You863q4=": "460237000000", - "QYHjqA0HnqI98naT9W1F13Nor6KQUdC_vYhVPS7RNEQ=": "416666000000", - "QYpnUc8v1PgKzZ2kN-ZsFojFNymRt9dbDl81W7Vl9Cw=": "1538455000000", - "QZC48rsOfuk49QPQ8j0JCwXCLX1UsLgeipiAgExa5Z8=": "384210000000", - "QZMjs5hRz8OsFloTArj7W83nS44azgVtwGSZWN3yOjc=": "10152826000000", - "QZROBp8915awQ05wA6NRLT3XGhYKtYN-B9v4ZLantHE=": "381739000000", - "QZhB4SyBqFmPaaEa9IeDup33Vcm-02RIWFmdclDEAxg=": "385506000000", - "QZw9hs4q_qXhw9xn2_Y4k6wKnxnD6Vd2wCu2C87JCJs=": "412510000000", - "Q_3Gs-x9Pi7YaeRGOW5ejWjMSfwHZP20j8AgLv0JSu8=": "818181000000", - "Q_unI2aV9KEYRf_o1GVuCXCm1vIl2tPeEzTzLy5vGaQ=": "455209000000", - "QaZRrR8Wr0b02oLzRiU528UigBbphaKX91DCoaC515c=": "2314802000000", - "QayT9rnupSo8m5KUZs993Opp9O2wZxCWP874MCRdKBo=": "919448000000", - "Qb1V7Au6Z0g0BiNwJ3y3DjvTUUmWP6GAzxULyZP-NcM=": "391797000000", - "Qb3zb549_ri0ce_JvbTvcCP3poJgCihCk7AFtdrV9h0=": "1527214000000", - "QbJyjC54gzRVYKvXht-tj7Wh2rwzcOXemF_7IhRmFRE=": "411085000000", - "QbYO1303dzl7zQWhgdcvIDPR1pTquGPXWPCfOcncPU4=": "5085255000000", - "Qb_L8yDQWNs7TzyeTV3udraxm-WmxZlLSOIjejMwtoU=": "448700000000", - "Qc_ijAqc3v8f_gfYSY4onT1GDCVHsTLvSkVrDabaooE=": "384615000000", - "QdGKmS_yEd_QNnaQ0jgedW86ssznPyNjqx0QBNoaSEs=": "417821000000", - "QdJa35asC15xNdSQkkIsMMETfXbSevsNqyg_23O48_U=": "385506000000", - "QdMpxgZcb42lnmV_mPIu4rDGtnqvJqV3lO6EUBIgXQQ=": "525796000000", - "QdN8-zfrzMZMU7poYEOJjBFL9JFHfPh-ssaj-yePeF8=": "500384000000", - "QdO8vPbpyXa-WwH-_P6iaFy932Q33OVKQh1qFL4hKRA=": "846548000000", - "Qe8TPRohhmZ4BYSZIcCgAhmeUY22AeK5pWbSukx_T5w=": "462307000000", - "Qf2wQpUe_mkob0C3fHjis1D6BeDG2HjsNMC1zay4HGk=": "715769000000", - "QfvqCDTk21DmmsFPPWoyK9MxqfsLY03GBswmKTTqlcU=": "384615000000", - "QgBtv3zuj53MdKRBZWftXkqReQNNOSGCO60lCQq90_o=": "656573000000", - "Qghjm-2Ri2ejynSfiDFVURXr7MVhCw-dpVsdFGfBiMQ=": "791091000000", - "Qgzw0wg9GNIchrPDOI43ndI9-hUcuKoR1f_XsDNh5eY=": "1458630000000", - "Qh9FyqbbStLu_IEqXhtz3RxoM2YpkUXGKYopqDzPkGQ=": "4427090000000", - "QhanBVR9OYD40NCG4PPr1W4G2zgXBew69YZT0VopUIY=": "921463000000", - "QhnxGTJwXbrAFgHvgT3IgnnsAxq3-yHsAB6fbjpXmuY=": "619957000000", - "Qi0xQmRw4FLUIsYA5KEh3EObEJIIm80UZcYPizgOYrE=": "1963813000000", - "QiRCFLg-g0-jpYlhJgL6wnu6MYXsZo7ZG5hcEEJ-kQw=": "384615000000", - "QiWSDVTgErhXPSE5f_Kq84YIa12fwxsxWHwHajdpLzE=": "2068413000000", - "QiYX1_gZTpo_cuxnm6OapKD1cVT9BVDwAgGCZwBiFGs=": "12135311000000", - "Qid-LCxzjBFiVENT4ArigGxJBstuk6ioWlq57ATnKs0=": "448100000000", - "QiiMYc6lihw-gaUJzatMKY9dpNmV9Qb3ql0GqeKHCNw=": "385326000000", - "QjIIrlzJpVgf9U0AxQx8pke96u9Bdrno65xoI2Mr6KA=": "447427000000", - "QjNFIL790sFZbifwenXrLrRSX7cuLDBjdCHrZ6wG1dQ=": "424550000000", - "Qjm0JvluS6arCV8JGYkzDlBv98rRg3pBUoYpQFk6m7I=": "1155627000000", - "QjoUY-jdVqUUpoJIBjmWW6TZXUKTcwqW-uZ6FRhdS4I=": "1821728000000", - "QjySddH0sadRdtfVEnvdbLPMC53xyHuY-Yv76kOojfs=": "3999999000000", - "Qk8WHA0ZPxingm6riF3xyOi0A8hABWtu0W2qhBNbBBc=": "384615000000", - "QkGv4aSTufij93EhtB6CHmGshEmRlNHEj0txDVqeZ_0=": "388807000000", - "QkJL2t1BmCj9eOpX-1qGGzlimycTRZNgVj9CYTPdXAc=": "481965000000", - "QkVu_h8lxMjkSHzcDz98RcGXqSdFvRK6QdF7eiUS8rY=": "455585000000", - "QlLgkPX1AFf9gwIVm1hPrnBe_RGOg1YeNUbTmR7NkVM=": "3846153000000", - "Qmk4LKU9O57GQI0QI70KDYOOG--qFphnq0VP0nCwehE=": "1905132000000", - "QmqHlRIxYLQZvrudyvxztO5XiNgqcMfIOcjB05Gn3zg=": "469764000000", - "Qms_43ZB6MG-SahnWVj9FRX8fsL8H2en6uYdbzAp7a8=": "9415350000000", - "Qno2CXhPFfKF2eK9WIAPJlm2Fc7bnJ3O-sP75NpNFUc=": "411085000000", - "QoUKp1U1KCek6w8wkkggWIkXsGqDu4X4vJe_ncaVjbs=": "384615000000", - "QpG9IOP34nMJfuUF7wiN24z1EDms2Wo1cyeYsL5gIcs=": "464404000000", - "QpHTPkKTfWDbFTqq8ebV28zBVOG8iYF-emvqnUykfrs=": "1155184000000", - "QpNKMgkRlZEzEJ43IT8EhMchDfYL2wprhsTu9BtOZvM=": "874999000000", - "QqBeTfuvyWZTRiJ9Sk0fucRrS8U49mzn9NaLpIvMSoY=": "413740000000", - "Qr15T7LtIOrhieovVzJH-Z_hig4NqYTXUU7NBQqff30=": "1145412000000", - "QrCOmXUiwcqYH1aPYvQRd60OJcCvrDfrI7_nfsNA09A=": "2500044000000", - "QrFszzx4nXAeOyTPyVV3wQNF5pHR6I7uAgiMt_80AfI=": "384615000000", - "Qr_at2R6ncjAJvYLoizMOCV3VFBf4X4766DS66favnY=": "896027000000", - "Qrs_w9QMWKtAWE7By08FmuhMztgzGY2t8JugqkJWxTk=": "769230000000", - "Qs6WfRfBhUFoTEmER3bGPQDshslCUsmbHK6hUMr2afM=": "534979000000", - "QsG6SmMOWsjOumyWop2XWW2jatCaPrPO7g_F2PP2ZKI=": "464587000000", - "QsqswXBRSnoaGMUjWd-HFN1tqQrTL06FI4WQCO5zmKE=": "2110984000000", - "Qsydinb2qqZTBrwUXxQ0baPx3LnAyDnzrBP01Anaqco=": "3683678000000", - "Qt2U8BL1xlCKpq93o0OnB_TY1jPLQBcFixG6ZDrFiNs=": "833347000000", - "QtDcWC_pWnf7AgmaqMsBD5EVhsOP_1CRk_urkdftNWE=": "403504000000", - "QtH4CkG8DZQotbLFZ8qmGgpZ3x5UAi-haMsOHZ98WVY=": "454984000000", - "Qu2zFm2nG3fUJbSJ3mwduSAUdJf_6ynycQ0DR3LrOkM=": "378028000000", - "Qu8YtXNnvwQ6XLHhL6kChH3Aw7vIpct4zczwxpjJyaA=": "1096110000000", - "Qugo1lJxbX639OQ80gcw-oTJwuqLoO5vuCaYCAhX49k=": "413111000000", - "QusPdkIlywGF2_yjuvRnJxVaz5UL1-p3alrRh76zMDs=": "951750000000", - "QvPdykn0R9p8t-6iSWN1SU8BMmJDrx1yerhk1wyFFuE=": "19999999000000", - "Qv_Yvv86IU_T6cJZB61mcs6sraFcfZ7YmbXxnvhCEks=": "393804000000", - "Qvomd49ad3S3nq6F2t1KKywe-QwGRM2AhIop_BmmZFk=": "895083000000", - "QvsinjIIo84jjBD_MlWWu3HL3Zdz8-laY876_bJhtBI=": "385994000000", - "Qw82hLzk0Rgzh5clvFzW3_v5qrFXVdURfWudtf9QTBo=": "3855056000000", - "QwAtUF8V56ZzcerDef1gAwKN60YiEJptN_rpK4FS3Us=": "4135387000000", - "QwMUcByMEFLAahQp1uR6MaWcPNMTuVJDAr_7G2WiUH4=": "594774000000", - "Qwr4IOaqGjW82FnOe2mZZvU0PNfT8knydXgRKT4SZJo=": "376360000000", - "QwyVrS2vR5s8c6yarN9VcHlBbRAGqDTePRclrdUqD2A=": "395497000000", - "QwzwynpKzCRkr69GcACWGnIVYhfAZAgrTIVhDnJGSi8=": "1083267000000", - "QxT3F-24HT-KxZ-J77ghh8F_ar-RtuHgVoiToPzMhYQ=": "463541000000", - "Qxg-8DVWVKtI4TLKbGlYLMubEUbYV9I-brMZfQ-VvVA=": "2518691000000", - "Qxmyt4ymG_cNJiPbr7_8T57q-FhH3tgKKC8U5H74zm8=": "2503701000000", - "Qxzs4qerwxydD5ZQ9sEmQ4AHUqRd_f36Vj6uK453EFs=": "18181818000000", - "QyGb6LL3_wd4PiWBZUUWjAw4A3QCS1FwNlnUGrRK_hc=": "1223425000000", - "QyT_wkQEXuUh5XdYyhlQeQrcrEp1yeBiAV_K5yrgCmE=": "387002000000", - "Qy__N9ybATogFPS7b0FQxWX5sxWsz82lR_sKCR1k6Rw=": "384220000000", - "Qyl8FO33k_CX72T-Jt6GC0-78jYY-XKY9PmJBJRh7DY=": "11631977000000", - "QyoQL4xQ9CzGIbuL-0xd_q-H823hUxm7HkybPgfR2D4=": "384615000000", - "QzLEEgWFPccFH5m3Me4H5Rxmqvt4jWK30b5rqRqVp6M=": "987362000000", - "QzLnZzpCTHMooe-bN9LU1ET62L4cMNB56pez3_C3U9E=": "425251000000", - "QzTacGKSL3KhendoF-bKz6bTOOq20kAQE3MsigejpAA=": "377511000000", - "QzawOkxm3c-BG8xPI-R_3d8x34HWF1cc6vrsNoOFZes=": "455125000000", - "R-CRU69Evsguij3zPhv_19O_t0QmV4WGWFmuqm4AjiY=": "382444000000", - "R-Pmn2Zgx2WCfeZxD5fVq_fobTWuLiIM-pYxJRXB_WI=": "502779000000", - "R-hHq172oUZDLmxI0oIbYQIj4gqQbf9GW2kRM_qnuOA=": "7856488000000", - "R-pPqjx81in-zQXQDPDR9r5agVMpJoQ3GxfkR9a56Ck=": "833333000000", - "R1mu8ThSdZMLE5uCW4H7HT8VIRBYNPjKusxaUNAlxgE=": "5526816000000", - "R1y41TbyLe5abNyGAP4ofbxugN7vmzcR0X10cSZ0prQ=": "1156522000000", - "R23cNA7V-skDVQ0zT1V95tcLjU3sXGKm70M3f1Pg6i0=": "2257489000000", - "R2F_B7TWrAXeUrUr9ykJ-en9GnRvE6h-_kZw_Qxmgok=": "384896000000", - "R3P6FtVXHdkGbqypvKpPAuMhqJuGmLqTaQQ1eNxH_04=": "385510000000", - "R3WMbJ9X_ZeC0ypgqQDuPDjruC6jKxD-HSUndB632Sc=": "579114000000", - "R3sREFBsb1T1os8ii4LbwKmc0Wo50djZ7qqThNxbfJo=": "442798000000", - "R3tHa7BvmF2hHb4zsuK0-h0esinxMSPEEJ83NnHgjRQ=": "383481000000", - "R3tTUpd6IMxQ5mZTlczbJpwkrIb47OLLirQYRi2oTvE=": "7558248000000", - "R3yaYdPUY0xhvkoQw-LovTAf8xhs9LbgQgwFfa6fad0=": "407218000000", - "R43jSnxV4merUsLvhqva1zgoRqLnNiyezG5XMYnsifQ=": "461263000000", - "R4AGO9KxsDX7ocrrjkfpGUeFRn1Sys2U03aOyIjPt9M=": "1366800000000", - "R4IrffjF02XMbJdJ440Ywgi0AEp7Vn7BaQmHcnOGj-w=": "544338000000", - "R4M-VhUK-e6j9hc4I_aWHFj30EuDDd7GQCN0GEIBx9s=": "832842000000", - "R4xXzuJGojrCPcPtAfIsmPl7HPIJTrugEePjEnq9WY0=": "383748000000", - "R59_OyOqNlvqOcbYYo8Obl_YK9QZ4ZvPcWfozFihYlA=": "1739003000000", - "R5XENhNHsrXsyJVPHY0HnczgdjF3sdlx96k9V2CLMHM=": "2005898000000", - "R5f6izQwHl-JsqZppR8-RRDDAOmFo4WYEzOt8OlCau0=": "384711000000", - "R60RdeB7YNUov4x1ZpsgFEd-RbZ-U1KIk1a1UrDqtWk=": "5845283000000", - "R6FUhgemVCTdafaysFoUcQXz4TT-9e2YP2-W_yzWX3w=": "462444000000", - "R6MhG7iQPDNeT6qmL-3nUnDEzaZ_hh5J3xFoyNfNdqM=": "395499000000", - "R6zs4bwJDHIwaC-m2fLVQmBb6w00Qros04TAgt4xrkY=": "501124000000", - "R72EjM50yiQqfGKEVDsCvwWaF0-lWonkYhCLdr0vY5g=": "3076923000000", - "R7GU_YuGLQENAdFPG0X8ERDf38Fk1mqmTwKQuWNFMFI=": "416666000000", - "R7Iyq9Eh5MVRkZ0TJILxuENdq0-N2xRnegcCBpYlroU=": "384761000000", - "R7gT2tCzE2znuD3dvqfgpdaIob8vScM7ZPXsV9KX9-M=": "484353000000", - "R7kDJ_AdTswFkFhrw8NJKsDTqfqJJIUmWkWHtQBSlL4=": "2083325000000", - "R7yf-Q-180Iln-y-PwV34sbiddkc0gWpxWNwwKHpLas=": "7662968000000", - "R7zSJzB_IO0A6ty-BcCvv-uH34F2pue_4zbnInj5AGY=": "465485000000", - "R81bFhWfxe_hUJAAasOO7mJR2pFX5Uk39yKK8mXhM0U=": "3089470000000", - "R8K1OrckCGTO_Hx4d3TIjN6NpMTc6yGnhRjmIplNKy4=": "416666000000", - "R8NNTXQWW9tZdYb2KMSt7DgVJds_NqR4aFneH0TJuhM=": "2279092000000", - "R9EMxzMyXjjFCsOV0TQL2W7bUDrK7QOY3327WenBWpM=": "384615000000", - "R9Gsk8ZizUo9DaorRc_5orRznCkddTpEWoHhlhu9kBA=": "1150660000000", - "R9QGyU35BlUHIrZJdoFkbGtugiLh3bDtZuamFqWIBpQ=": "384615000000", - "RANcjC4-K3UtKdWvj3BYJyTyaZ4IvbhXd6wObOfYlTg=": "469310000000", - "RAd-3T3Gn064XSGLlAywehJODUGPBsIQnaE2mywduiA=": "471973000000", - "RAw3W8tMXSUF05esarFtPSQ_E2UrApkTRXAOYXyVE9Q=": "769230000000", - "RBZxaRPZARkw9mklFjC28UcsTKqJHxiNgxeWwmDKeBs=": "926781000000", - "RBokAuTr7wa0UwBsA1Hreyadw-hL9_TFP01kuDQXLOw=": "1182915000000", - "RByrkidwCds99qhGq_JMpUQTn9sH-C5r94pRhKW1rkQ=": "386395000000", - "RC4crfAXWLeJmQpyxderMamcyjlfd1WV4tPmZ8idJCI=": "571924000000", - "RC6Yc5bwlM7ytCl4lK4Hi5vp4TgQ4Ort1i2MeHezf6E=": "1244477000000", - "RCFxygtO82qYK5l7n8EgG31lCkjh5p9K1Km61pyg0fQ=": "653846000000", - "RCSM5415-ummBnLy_aKp7NkzhC8cWMzaj4xH36y1Y3Q=": "504195000000", - "RCl2K7nqJWqEnAulFe_aok7jFdXcgq6QA3S-swcz_wI=": "416654000000", - "RCv-DwAUk9dxsbCo8rBb0j413Q9YK9KAc9dKFiTLVmg=": "384615000000", - "RDbP1QxEwx8DiblxxMaX81_gV3hH2TOny1hIGjmxXRw=": "454190000000", - "RDlHBBci5L6Yc-Le1mHFocdl8mTdt7qdfwkgUPswmnE=": "2055429000000", - "RDuyu5eIx-yq-Lyu8JmTZ0LcKpsvXeJhvPrKqX0iumc=": "423368000000", - "REcaLIdBnzi4IXVRKK9TnyxIv83jOcgOWVebrLfhBBE=": "381805000000", - "RFFMzYd2Bt41SEMq200IL_ij5rzY7syLBBOizPKcP4c=": "3076923000000", - "RGuUZL3S1I_pC7BmbF1765OKhCxF8p4jBpJbAMS7Lj4=": "422516000000", - "RGyhaJO0AbLRMzUAQn7Lvd_ZBQ9JxanKk2Jo3vIhA4o=": "1923076000000", - "RGzitilzsIAnbfDm1Rv9-gURJJCzqlnfmQCvCsFgU1I=": "384083000000", - "RHXj_RbfzUhSNRYvdoNWq-Q4pw1iMkBYGUxqMgkf6Ho=": "1927431000000", - "RHbh_62P-oRN4kdP253aHv-1tGYu5DLgJCK0inVUXkQ=": "384926000000", - "RHetzSOKs58F8PUP4UWXMdc6g8Ev4HCqgiJdltF_ldY=": "1252904000000", - "RHptWRYU2EMggy-AE-PGVIhNo7zwCfnQFQOF-mW5Z5Y=": "1918603000000", - "RI07SHPU3JGOWZm440z-dmg8xETXBlUQTROB6hMCDXA=": "8781915000000", - "RI4Eo828mhN7vJIBDN2iA61vsQwPvH_0aIUxJuZuwqU=": "963915000000", - "RI8bBMm89K6WKjvm3sACbEi8D_XZFgK2M34TdosCKI8=": "455600000000", - "RIL9KzPamrXUA7NxyzbTAbFZPd1HCh4zJvBSdRiAqFU=": "1152836000000", - "RILTh41x4NONT8zaAJCaLiTDV02iXfwcM5kKY0vMLEQ=": "769230000000", - "RIlkflcMFfBATIZpH0XKVNJxvWdVg3eBCFGNCtWA3AM=": "757421000000", - "RIrBE0AHxRQjlp3FyJdKOtEL6fDG6HQNSceCsPctY1Q=": "381767000000", - "RJ539QXUKbMwu1hXxq1CJJ-7rdiEeXIlliksYOe-N9I=": "454545000000", - "RJPb3nhEa_H614N3jkoRj9uRgzMIRIg7tsJVZXqmeB8=": "462476000000", - "RJTWYnAMJJl85FO5ebZO8n1nXyb9UnUR0oDsipFi_IE=": "2000008000000", - "RJasZRosZ-Tyvhk4wOQRy7CXXIeAYE1E8ztCnyZE7ho=": "384615000000", - "RK5gxa3n-7TFB2v9xvl8QD0bgJ0xMsWH1Jdk50IiKKo=": "1249999000000", - "RKS119TXxDY6nqdi98dP-ztzij2jcafsotvuVFxYcY8=": "3838963000000", - "RKSP2rWvEoo3MuDfPP6nSDzXVjniyIaSju3fuE_ZEu4=": "411085000000", - "RKSXA5-LNQTeOrdB9XMpCQfQ_BhL9zU95BccBzgy0eQ=": "378310000000", - "RKXZ11bhUG8CMTy1Ibd36TYb0nwEc5OASAarIPERrGw=": "423029000000", - "RKnlJBgD9weZ2qE_vvr39doLYky6WSAbc4Ir4jgtY-k=": "1791666000000", - "RL9RcJW0o5eG68K90F8a1VfAucE9kX3aAp6AlJ7GNNY=": "379637000000", - "RMBVYvlAHDPrTPqyDRmjrDhY6-7wSfCONsUURltY3qc=": "384721000000", - "RMmtMWUzmXoRWAXpc73_9yG7Mp_VqTcD_WktlJiQtU8=": "4166737000000", - "RMpclTrGALZxQMjPHaflXZ1G23GS5FUoVmlcGqeoZZo=": "783770000000", - "RMyEBdnPiUS8upevSSTpy02Qmwkehw8pNOUudNuOvmM=": "3863636000000", - "RN80UJse4NjC1GLdsOnMPOJBOEYh8GLlMHEG3gcZKGo=": "1153846000000", - "RNAR2_-ETiZc-p2y6J8ssNvXGPwWh1LP2P7bLV4FSjw=": "2085392000000", - "RNAmFrGQjQgaopmnor49EZxOCr2jlEoS_CpyRVW4_aI=": "378037000000", - "RNHnXgM2cvGvQhyf5-ZOXMz_35xJI83hKq16gY1EM0M=": "999986000000", - "RNXDtiAzapXF0xZYO0E6r54BY4KYif9Eq7w1GptKgiA=": "384233000000", - "RNjlOA5A-Xvjv4AoX7Vljyh2t9yL605zF3v9B8aeQFc=": "3855058000000", - "ROJwh9jZhWczdzUi8buNTEE8-rYLIBeypLFjQm5NrIU=": "407808000000", - "ROV4fP-CXYC0gBI_Og12CTgxHvnOBjgaDY4iV6NFydM=": "666671000000", - "ROg4cETbowbd68i5Hse4-_n6m-cLDmNXfP8XmuAQJHk=": "379260000000", - "RPJ_gKIf2LMjMrC0Stb3SeUPnuUvJOsjxnJ8xdfX5us=": "416408000000", - "RPLtXDKPvmzwEyKL0mpKTB6hmRLFAOlst0osBThwmvg=": "469310000000", - "RPNLpoZUeKhYBYcCoYxleBHDH4l4JeqiqZfjtfNyqdE=": "462846000000", - "RPq3M9LGx3vkvoa-6eUbDtuwdLKf26NtMT87F_GuLXM=": "3845637000000", - "RPqtvfiLpx6IxrqeCCIyEQdsDtCjL_-t95ilS141Tyw=": "454545000000", - "RPv82bG8CxK1TDhchAD8Pnb7lJAx-ExW4f34vqzwKyo=": "1643009000000", - "RPyw-JLyl1UZRJ8PcEDDn_MFE-rXHM5BK8ssogpV0Gc=": "384615000000", - "RQ8KAnTk0pP7U0oulYCaBAXQpvekVZeGQq6DFmlqB3k=": "431630000000", - "RQQOePjT8XS3O0WhO1PLAj6EM4Ueh4f7wl_Yklp79w8=": "385496000000", - "RQcQitHZkvESWDAvSmE1k5AwdtpnD-p7MNwuH5ekqy8=": "495053000000", - "RQgTidj_lXb5sXPKhWjiqLi7uKxVGvGEuLydDA5XmdY=": "3459698000000", - "RQrSaL2fdAGFWQtSg7Y7qNpOwBR_0_904fZtzEEWPS8=": "1363636000000", - "RRBfR8SL4RwGaeBrSa4o-Au8mhys6MjkHhCwCoXVQwk=": "959200000000", - "RRHVD_IWz53HAqP3mTfmA-mm2TrOa3ULXWO7pVjm-9w=": "388825000000", - "RRIvA4iidKkkcDUbeYNRwxcOqVjKqoQktOgkxm3LdlQ=": "1237916000000", - "RRsR9jtJxney0D0c1_uTqic68rUjS1Yqzloqg6JNjRk=": "378325000000", - "RSPWHNtMAG60CIx_91HnZCReldhAtTICgIFq7kjTXjE=": "3144030000000", - "RSR0OD5fUUdNVx-_m1vol6xhEfiMIJU8ZRRdNU3AnUo=": "999999000000", - "RSjfa3YxGCnfUo9Xso-bZW7EgDi9xHcs9kXmxMxLqCg=": "11352035000000", - "RSoyn_030NjutXTQmMUB5aIi_TIZnHwbVjRI_hZug9Y=": "578495000000", - "RTKKqyU1wKIkX05cv14Lbm5IKf2txqGcDa3fWv7ZlT8=": "385506000000", - "RTdl7qoHYIM16o7W8uNvSBVWUmoL05pNXs5CGALDonw=": "1543339000000", - "RTh1IF3ESpyk70RNP_5pCXF6rU58GJV-ZlS5X-XS4Go=": "401923000000", - "RTsaScCdFctd1GeLYkSt8AQsy6N0oCtqUZBdmVIlvEY=": "1310055000000", - "RTvbwfDV6CVilLbqiy3jDKHIvA0ZO_vwus7o4a4B-h0=": "670490000000", - "RUtwEMI4GWM0HQGux-mLA0o4jT6a_A7TmWYZ-L1Uop0=": "386154000000", - "RVDZhMAg9Df96o6ogqwhWNkJaxaqnJPpVwWmL1E17fI=": "381852000000", - "RVFOvMuL9dFesnppvtV-lZ6JXuyukx1YSGmJBd-aMSs=": "1153846000000", - "RVeyWWeN9j_5X-EeekmRS57QgY_rVyPhNioK_FkTEmY=": "19230769000000", - "RVp2y7NL4V6yQYhiJ9BKBcMYIuF7Js-3hpxcxmZHR4g=": "469361000000", - "RW6aDuwvDJ2QNZe01WJCOsgUkhgw8OXoUM-wyIrMT2A=": "2414012000000", - "RXPnST_DoqbKiDXi76noyvzWXavcN2Wpkf3Cxlvn8nA=": "13624735000000", - "RXQq-3GEX0YULoMeHaH5uKWsUXGZHCt6SQAZsZI6eSE=": "408021000000", - "RXZ8wmaw-814GEXOnlhEdJPqOa808hyrdJrXNgTD6lA=": "458262000000", - "RY20OuSE0MVgb_2O3HhkKr0yFJ6lY511xMzEk9-7qkw=": "754137000000", - "RYWisl8nTmCbR-vbwiCyxtUdwHGaIlgR9DGcFVnoKJg=": "829683000000", - "RYoFTFE9H1XPOVxVQXav7a5jaxjq7B0iWcun7wL1H-c=": "379260000000", - "RZ4ioaiyG5nnmFWz6EGomd31THksw_3aURvS5rz9UA0=": "417633000000", - "RZjY9869H3bOCkhwdGh1fAUoEt8eOcZu4PoVOEfpoTU=": "473351000000", - "R_-Hc3xGUmHjd5Zu-SGjQRhPyxOyDzf4Lygi_uMarUI=": "384615000000", - "R_4xV_cY2Pn8kmE1sVlVIwfYhs7EPItPpZPvloWLLkM=": "392307000000", - "R_SqlCRQms_N6fGoHbr8Ey3_Px9cjdnMjgnbrzrYSQM=": "379443000000", - "R_q-pw-cFkhC26EfOFdhaSwO8Gpw_JBcMDW8zy-ulYo=": "2041119000000", - "Ra0WhG4Hq0QHDSHA1RDfC4B6iFrji1ipRXKPIS4X3RI=": "384615000000", - "Ra7Q_m9cMKM7A43iXWhgrMX3wnWJFpanJC1P6Ow21M0=": "2257883000000", - "RaG6Yo_TOkdSki33BOIY6cZsGs25eC9z9nu6uauY6kQ=": "5647260000000", - "RaTka_y8t8E7oH8ED2gz0ZhPCesSrKeykiusDrPhw74=": "832306000000", - "Rad0D8IZDmf4bG4uX0eaj8DGdkx41UapYccm8kfvhFw=": "377899000000", - "RapdSfHgUYf_Eam__LE5_xtybyalh5QmYymNJJfR4tg=": "3076923000000", - "Rb06xDNOGBIquL6g1LHSkoFhuCKIQp_uHpIJvP0wN-0=": "500530000000", - "Rb2mYE_siMM2rfO6YPdPkO-PR6Fjdk0ssx__bwgXSAI=": "1185774000000", - "Rb6ys1Y5lfcYQx7w3In5E8Qnw6DJqPbuXJiSar_yX6I=": "1584441000000", - "Rb7DXtAbKHWgmim0tD-YFoF6FKMQo1N04KWd8_nFeZ8=": "384615000000", - "RbByC4ffGqqUTD5MAh3baSN_Km3EY-rcA-1tKP5QYKw=": "410102000000", - "RbHrP055vtRdLg9v7PF8Oequ8zndYZ82lgUyyrqfvdE=": "452996000000", - "RbLIGtHyJIruk_xA5YMC6nmsFXrzIqfFAe6sBleqcUE=": "4634669000000", - "RbUe6sywrXc3IaQR0I3-ZCRRBiUCxip3ZdoyltW8WkQ=": "8257274000000", - "RbsdxzapnRbPgAehK-fXFc_JnZ9iUQg-Mue_pVSlUKQ=": "463633000000", - "RcQtl_KGRKHL24rQTL_Dg3R-jCCEVWvRKwWGKbO2gis=": "451376000000", - "RcWNGfXW-53buhND1zVOfRVfBYNpUCc_h5mfFhRROb8=": "462594000000", - "Rd1sGPOQRSKwgnT33R7CdesItiPNp_Z1yEpwBZgtNkU=": "384615000000", - "Rd2ex2xCKk1RfxOWEXguL1blkmf6T-yIu6VicwTWhFI=": "1511678000000", - "Rd76ZLURONs7NO7W3fn_fP_N3MkfJ2oEQeoMtTDG_3M=": "445057000000", - "RdHjt4hPq5jNJ6L8usopyvfGYSsxJ8bmN6qBqdFfRDE=": "385506000000", - "RdMTwK6wtxHhFoXbBNa1Nu8BZb7Fj99EiGOk0lUaiTc=": "1163889000000", - "RdNPUxatjU6CEUUJ3Ab00QGJmA4NLtcdagODGKbT9kE=": "539034000000", - "RdtrQqISRtF17EzdYn4TuQk4YXRnqQpdfuY7sh_CyUo=": "389644000000", - "ReD_H-SC3Mx9H2mLxScp57u3DUnMQiGap9QkosF20zw=": "2605189000000", - "ReHsoMsKXJ8alNyKXwUbnmDqOVEFRZsoJAxVZpaxfLE=": "1156527000000", - "ReL8XepsqkIUDmLbH-LWJLE2pRmjgDxwJvlzScfNdn0=": "1249999000000", - "Re_aBcF_zKRDnFPc5peU3RVs7qyYJhk_HrKSj2Q-ZbI=": "752847000000", - "ReetscE98gUhkI2Bqi-DZ0BN2SH9--s2V8RC7p6DMdY=": "2350717000000", - "RekF8Vy6NuXCBKY4PgDkjcz2oMYL7rUUiuxkGTK5kIM=": "458787000000", - "Rf5bFvvk-rRmAZ8CTwJ4eOVUF7M_B7-ADPTSyvTPT-Y=": "577489000000", - "RfFBBZ3WoRCFDRbFtFDPtHpWYw-kP06oc2ODN_5u89s=": "405544000000", - "RfzKoLEss7NsoSp7blMj-IxSKmfEw5OAmUPEgtX1HGM=": "448013000000", - "RgctIXF6pbMYHedHE7Jb9L5tb3daOdfFaYo-S_SSb-4=": "376209000000", - "RgvHJSKSdJt5NIysfnH6mYIL3X-xAYtflL6PnL60z9A=": "1666692000000", - "RhLJfig-9d5jREzeSROLtjbThmZ308Xc80zO0edvCQ0=": "457092000000", - "RhOWPqNFIXc3ZvMr1EzFIeFRqEH3rNpT1hKrjBrk34E=": "1212374000000", - "RhflQZWPyXAr8PoNZWhVzA9rvcySdlfCX4VrgO_FfNw=": "7065697000000", - "RhzHxwZ4LTwmhmBv1Ltmymv5Zb3ww3oT8VZ3LmgkFUw=": "482159000000", - "Ri2H7o7mWBNlbMvGSBujk_GiVnN9B_EcU6vpzoIqHQ8=": "606718000000", - "RiJV_Ri3hjgvxIZab_D8id6k4Th5B1sozBw86kCMpZw=": "379702000000", - "RiP0pGY2mqYHPuTECu6m_dKWbbgkaEEZx3eQeh8Ehzo=": "379928000000", - "RioaiSsAsD2aGSXsSQfSiQg4QJoOTzuxUuuY0n_3hYU=": "416657000000", - "Rj1O9VOHtly7fRl0PlYCkihIB7Y_mDTex4Nf-SdLKc8=": "3543821000000", - "Rj2bSF-jhPQhW_eV6MLVoWsk7nMdiatBo_bxj5831vo=": "7625356000000", - "Rj2kmbZF4cDxQmxMMM2C4W8c6JHgPW64PTSYcd5v37I=": "4166666000000", - "RjL4n2gzFPOShVj8WPo0nLgeq8J4bNHjRN0lnzQKlO4=": "423370000000", - "RjaWt1K8bm9-1ttjHgpG8WL7fzI4wDz-_X-wwtC38lE=": "2082051000000", - "RjgjGHFw82TX1Cm_as1XACdAWunzo3yNmBPtI0Ix0E4=": "944707000000", - "Rk9V-KHNTgzF9t9ey78YygRWSaOw2dXn2fM8Pg5BYqI=": "762594000000", - "RlEVK_D5Z5AWMzMQgmnoaOfkYoA7IEAhjur_Gkgeouo=": "1156527000000", - "RlOJ_umS_23zyf_YduPSBgrgMUk8VhJqVj5-aX3B-gY=": "383839000000", - "RmF_pRNqbXindukl3i8ktWgFFC8gOkq9FgANFLCTcbM=": "382643000000", - "RmOEi4ARK2X_ofIWMLPFfYG7hJoFGcsCy-RisCR6wkc=": "1666666000000", - "Rmx5zW5gKHuFYmLxVi_v2yMMv57aH64hWxnR0Dl-yW4=": "421678000000", - "RnMLu0MhMmaY0KS4iy1Alq0o14tTNJGRikMvnsXiXbY=": "384615000000", - "Rnee0-3CE6HAKDqJ8Ur6bmiKugziVXQKFclNgDgByVQ=": "1539800000000", - "RnivcSQhSLtBSNvhWxFv-0pLspVTZ2-bajzCfwFCmts=": "424045000000", - "RnoWvXAEPyiBERlGefrci0yWg6yYlgncLriQ0q5S0l8=": "747774000000", - "RnvxL-Kqh-02qCBJySOGBhB1EwcpIAHylVp8kjcp10Y=": "385510000000", - "RoGY2Vtim5FmalS3GD2omk-fiysQ0DCceSVNDEiy4uk=": "993700000000", - "RoeN3VL5hQbWOTS7AsXdTvlaimDo3vhqeIQSBlET1d8=": "1153846000000", - "RouKHhuhMAAYqHVWnjinG2fdXWprRYGAshwHN-12PgE=": "468799000000", - "RovkpzQs0RHLvPeFO-z-oqBqSAxOQs27-3oXMMx9Qqo=": "833333000000", - "RoyoAii5q6eCTbaHFlXqAefeKFugzcRE93HzMT5kZaQ=": "461263000000", - "RpVIrsjoYqEdC5fftF4Bl1e9vkKXQl7kYx02oAmeeVo=": "1639193000000", - "RpYPCivbDBbLrRh_2gdUUprArZwXf494SnyL-xUMquM=": "938936000000", - "Rq-_oWBkh0v6hF5NsWZTcWWg4IiuUrIVbFZMs46iO-Q=": "380694000000", - "RqPvQj1iRG_-i3n8inxmMclgOTpWkxX2L_GxdMmfFV4=": "7536094000000", - "Rqs2pYrFAF-ONthWPfZP-UqiKnCRmQWs16Is8enAQ2k=": "462769000000", - "RqvHRqwBUTXjBGh53W6t-n612A1Abb23oKI5hAaoQN4=": "469721000000", - "Rr5UXe9oUxlBPJy0NNWOXONgpFSlaPp6QUOR7hzT94M=": "499644000000", - "RrGoycfE5_P7u62cH1gpDlzI79P20vcoOy5fOgvT6mw=": "13196957000000", - "RrdcIkNTgtYmWPb1MyfbC_2RLi1aMyzKbZsUsEmeAmg=": "1527107000000", - "Rs1J-epOza3DhOr5oB0HJpOi5Xplydx8mDnmIHV4kDA=": "6822094000000", - "RsAkswTLv3T54SGQhNB7vcwlZLYBilrCYW1TrQClnts=": "576923000000", - "RsQDUCY2aerROmcGfWxxzBBlMKGBowlN7AjL3WzQZ_g=": "3333794000000", - "RsTiykkSizS-qD1WPscFXEYps95J8dJxH69FIiMGe1w=": "1711414000000", - "RsdSRYy8KV2PHAdznF1J9MTmbDbL_yWkjzN5L0_SDfE=": "388741000000", - "RsmTymC-PcpeB2izyzairYt128ZTwW_880jSbicqzS8=": "2960992000000", - "Rss3yu3cZRVdSrIHhZ7xgIZ8B3KJ0Xg29i__8zBGdKg=": "416666000000", - "RssPoLVzCY_gr_k_JaIXqCfIuKA_VOhsQVTQGgUsd2Y=": "5499999000000", - "RsxJcaQ8vowTR3zNP4z1JixWQ5qAWrWZODN6cXE2cLw=": "413918000000", - "RszrD-YPuyJnZT_DvVvtpbcIMRTBjz7sabNSyYH8D7s=": "625607000000", - "RtGJEvaOct-buKYzsEZuRluu1-X0wBH_GZ05ek_5L6c=": "2116852000000", - "RtrB9B5onQUIqf8ajPY8p3mHnD19eFXfwsxy5oycA7g=": "451665000000", - "RuGOFuW74HyH1BtqIfUIjEbBX5dU3TzIvt_aPY0fQJ0=": "1959542000000", - "RuSb0mdnO4o9LnHEwxRqe-8Cv9JXHW8DJ9NaSvLZKEA=": "9583333000000", - "RuXMmac5l2VmM7tgtgcSkTeKjHJ3_1_BGKdOzG5T8_Q=": "1249996000000", - "RuZIg_sxUzRNPMkbxJjxeULZXQJHVgI361sGi70FJYQ=": "1153846000000", - "RufdE3AJ6ewWBZK1m6ZZYVmGgx86xuOigo01J-Ckut8=": "1503082000000", - "RukMNPnnjJzfuQEFOlqdYPAbiRQUq1NVq0N3Gv-qj64=": "2884615000000", - "Rv-LWuTGui7RE0xM43kxGxGeTIZgzrc2CYIBfUmrAwo=": "769875000000", - "Rv2Jf-Xo1WSMjJHNkgBqdP4Y6ZmMKItkMoTjTVY-NXc=": "691282000000", - "RvBHUmuoFa4Po3LJ9Zr-_IN-35qIiWusJCf8meCO5AE=": "1181818000000", - "RvN9yBrewC6Y7Bzo6ja9UMNSzXVxEQJgDcCUk-P69q8=": "3846303000000", - "RvRU4sNYlwJygSeK-RQk1qSg6CSNRoZyLtbE4Lt87K0=": "2119079000000", - "Rw5rwjd1fMCzRSVgFbujcpjWgny7lMliKNsHjU0xYfk=": "416666000000", - "RwI_kryXneCZNjXxSoL2IUe8jPbtIRV_AQQT96Zy54E=": "419896000000", - "RwLfj__6ql_RIWZFi43jXDYxxOAJEbZvO-DLvJEVaXU=": "384102000000", - "RwbLFeYEYlkPT5BZvzhswT7XHtTIDdJHuaqBabkZvsc=": "384857000000", - "RwswrX5XxHszWr0MTjoRFoiCtktKSGFTr1BnWw1ODqo=": "903215000000", - "RxZd18W1w9Gam_JYe0zuRMBGQ1e-ijrefePL7wVVtGo=": "1717960000000", - "RxnZiMwU24q-4GroJYEg-asN3Gzp7akLjDRiQ64csIY=": "3170756000000", - "Ry2PXqTXExSlh2aiAsRjgBOPt_tzF0bGhu2T7UuGzJo=": "536051000000", - "Ry6NILQbeV1Ziwx_YZgGstU_jMyTADnMWmiQXQlRo3c=": "576923000000", - "Ryjm9ll4vQ6r1IOixFlHEqxM5sKK7CpnwS6zhKElJKc=": "925700000000", - "RzhoXMjaW-y6vobjiuBRWnHOoBzqyROimQI7fvUky0g=": "18718945000000", - "S-8L1PXUbIpJMDnaCCcWeTb0b0nAtENWhJoJpdBJnCA=": "416457000000", - "S-OBsqPqwYJr-SeOmc3FLwtNKvFVfGTP0utILPfLenE=": "384968000000", - "S-b0ln2XSoDYqNrjEjMEncxc9fxnBRJmomimWAClmQc=": "1498023000000", - "S-ctmChWWZH7s1aFvfwPs3dI3s0EF34XgwOMOecWvJ0=": "1909351000000", - "S-nCVegj54OvunNHLqEiqVhCN3jg5VEiCDR_fYFmYWU=": "1323257000000", - "S0NYnasj9Km8ZWo-lQobQKDoBl1_kCzqqkzznXnVCj4=": "451587000000", - "S1mapzX78qDWpWbwLm-QwrW4vNwsZMfLIZB2ivPQiKk=": "455947000000", - "S2e31-TG8nmVr5ZoaVj3SYNJf820_65zuNimIjnvsF4=": "1158159000000", - "S393a0OGNnJw3fIPWvAoXXOmd_oz9Xgqgq8JyqVmL4s=": "446307000000", - "S3PGGF9wjEtpxmGznM0prK7-JchLP0B0a86k7XSv6pk=": "379928000000", - "S3uhluGDYt-iaNUR4B1s9ERCqO0SEkCMHTut5s3b6wA=": "454545000000", - "S4QjXJzUsK20c9a2Ew_hYZSKuGCpHUNaxYQor18CdkY=": "1284422000000", - "S4uyB2TyV9KgF05k6-RrA-YaNhv1M5IlKt375hc2nYM=": "461582000000", - "S5-MD8Gk7uWe0pT54D-bSXvFkyhryuPydJfXpSlo_rE=": "1693339000000", - "S5DQf4wevKGviZEnif31QkO-xitBmIqV_6ygw_NP65c=": "11418556000000", - "S5IMApUqxFFWe2vAtozrtxzPZ-twRZ0zp7oqn8mAA4w=": "379554000000", - "S5Vb9b3vKom2xknBrN3nao-7dzLufJa5R6-XrorY6UQ=": "384615000000", - "S5rV8X5X9aD55JMFd_ldYf99AIsI3x-GqT_D2vUGDfs=": "416666000000", - "S5wcU5oeYlaubR5hsNRJA3McledQFpcYxJqgE3dG1Es=": "4164620000000", - "S6Vg9-JBfWgwXR6SdA3zt7bg_m4QxPuEcbyxAXeNdgo=": "1158173000000", - "S6_g4Yv6J-Lg-8VAfP-1V8Arznj7A2OCm-jvuD0ENtc=": "422920000000", - "S6kGClNFdu67yEBj2ZMOkDBihDTeVzmXNTk768bVieY=": "469479000000", - "S6v8tfvgxKJZWZUDcOkS_af5f6p6U8NRjMNzTM5Z3zw=": "385592000000", - "S7UnLPeGqFUbck5Hk1nQOH_00u6gSs13l5uXFyE9-c4=": "416666000000", - "S7a57lXdLuTq4rhbK4Nh93DYzclVPazTECWdXftMLhE=": "491921000000", - "S7kroOl2lSo2LAK-RstGHDkOCmYtALwTfur9Nsu-NAs=": "381955000000", - "S8kcZZ09nZkIf8DSZ-lRpH1I5hOwMJzXGk0-1CFO8xo=": "3855061000000", - "S8lISPtZUenif-6E5xChIiyAAh7VIL7TXtk6-0wdlFQ=": "1249999000000", - "S8znTlj_h02nhtDPfZxDNlP_4_UxzoDBxJC8BttLvug=": "425047000000", - "S9LypbwfTzDGE4rnkxb8xj45NA1D-S1_UzeoBItXPN0=": "503635000000", - "S9SY2fDCGLqZFhUOSJn8Jyqk7LfvpMyAbnPS6OAkCno=": "1923076000000", - "SAXjDcOkhLJrkKuSTSHUHaF5387H6_ej_AC3hc8kQpc=": "969731000000", - "SAgAMaQ_cq3-PPDNGeWxF0uAh6-53tsajH-3mEyNVFM=": "478235000000", - "SBM-RLMf5PN0fRpzwvPhh-mOEsCjU_C2Rosp73M2f60=": "382444000000", - "SBUxk8f7HaG020NLVwcQJzfyVG81_YqtLf-mdEFfwwM=": "2278000000000", - "SBjiV20yNJqleUrFkIlNpSmx4_EqixgvIrnRKHK9xQo=": "1153846000000", - "SBqR-8sWAffqxlyVn2ND45ypdyvk9ysjpcOB0tYUpC8=": "384615000000", - "SBxfzo-iktlmLhF3qr2uTA2_bw6Q0lL0zJBCBrVSC-Y=": "417630000000", - "SBzlA4EJMogJvaayTxysWUMjmO4hg3SfEBejG8CUrGQ=": "385506000000", - "SC1oxoONFJSzCQYkKV5D666MDmZYs4qLFED2NGCBycs=": "412863000000", - "SC9Lrqxp0dXf4OlYqDsd5orz16SXUC109cTMV0f4ZjI=": "1154301000000", - "SCdK2teYxBZXcliZd5SQv0bPqQwVZplpbTAr5qrjTOY=": "454545000000", - "SCjdOpt78eYMTiieDb9OVV_wO-fRxYaFRtOYHGWexNQ=": "590909000000", - "SD0owfmmxevzusPGDawnxx_tbxLSbgUUqW1YZS3hsQE=": "2316575000000", - "SD3y8p7ZTdZ59Pt1o_4JmwlVT4rvJnuQx2a-8Kji4tM=": "365288000000", - "SEHATOIcLlWQ-W-Kba496bh-ue-zsShVbC52LxK11MU=": "499999000000", - "SEOa_dJRei7xoWzEXLHvyKw49ah3rr9E__ZaFhbmvlg=": "381635000000", - "SETH13KQPyJp4h35dERESTbNoYufij7dbJVg-DQywDY=": "419771000000", - "SEUw2pZquBv0KTSAF43t65FDrCZUHwFu8_P2x_2vNXU=": "1153557000000", - "SEd2zKqyjB5nRohWThJFVtQRgZA4cePL-7FswdR7swY=": "462622000000", - "SEiUwPNDayWIT7SDYlSlENKe7yuzkVpXtiL_fTQTNYc=": "384615000000", - "SEnPusaX8C0jMMnkziYiY1VyYCR1_T3HakNjyGpvZ1E=": "1231084000000", - "SEzouXQPvB2c-V3s462B7zAgZy6RhVgTl_4LxzLKg-s=": "771545000000", - "SF6ApVoTClkO33Lo4BCgDuMqQX_YpNqeWLBTHr2xfAY=": "1224063000000", - "SF7SFjV0nwi5S1UvlTUmGLaj5tuNsrEc9RR-0OlgbQg=": "385161000000", - "SFhzQEHE7gJB7hEGWtPiJmF0EFCRsCkmzL58MaCI8eA=": "384615000000", - "SFobBn4yJaSao9oXuoSFlS9fkf5gNGkGq9IVzmH7Nv0=": "814467000000", - "SGOs54WsWRwJtvWFwklQq-bzMfmORAVtzrvYN1dxNfI=": "416901000000", - "SGPpL5FG2hauNp82w0xSOojlG6brxXXiPK4ZIhcyW_E=": "7574320000000", - "SHXT7cfSXtZCZEhz7fO1aeZZyDY63RXsbvjamsw-LMQ=": "377647000000", - "SHdDfl35Au4dEbNs6o0sGAKKtjh45lHkm-cwBRkfbL4=": "1854250000000", - "SId9smuIQ7AyKVaTMz7K3ybfEQtqJpToyxxXSq1uvZA=": "384615000000", - "SIhoDS28UhzZKw4_S7KVJzSehWxw1n5Gfpov8xtatCE=": "488631000000", - "SIu6xYAFzc16O_uwbcmZycNmfASh8p7dOZQFzUGt08Y=": "416666000000", - "SIxO749JZa-aBP4Jo8It99mOdVo-vCfuF97teSfsSUs=": "388630000000", - "SJ-2LwFq2l6CAn9cM9icmC4S7hxgDKyYHQ4iZh1COcg=": "825727000000", - "SJB7jDsJx38JSZ8YwziMzvfyI9wIaOPHQOFUfqPf8V8=": "2378394000000", - "SJC2dPFeEi6nQc75AUUvSN6_Ta5ISSmEP2EXWKjzw_k=": "1538461000000", - "SJqAzlttrAsVafVCfPIePD5oRAH7Fw8CrdCSweTrEMM=": "551784000000", - "SKGxvqEjIqb7BdOAKvAXYzzKaeShZNdVmbeFO4yYjoA=": "3855075000000", - "SKMww6YDcCiHCPa2RG6_GuFHaRQpOjZOocTM5jt_URY=": "453003000000", - "SKRcrEI7Jrm6fzRNgdXNtYaEgpcslAsKNzwaE5sHVvs=": "416375000000", - "SK_UTdJKo0pFm2A_2mpDoLT87DpZoRyua4XDZ28HTtc=": "454770000000", - "SKy0F1SOKivWOYVZD8WdiuBDg6lWT_qb1G28WaR6jl8=": "384615000000", - "SL3Dkg_QYbNOOmK1d33quOU8ZsAvKONMTgg96BOnKIw=": "527355000000", - "SL5q3i8TLQ9OT1tefkExSyoMsu9q4cRVJVhdwQDVF3s=": "2033473000000", - "SLY6corUjrPSoFzuFyvXhieKcVvOlpqM_Q0RaFve9Yc=": "19999999000000", - "SLpCdY8c0USC1y6SZhCSKb8Njy4uqMXzMCJxAIBX6EI=": "811241000000", - "SMTYHonmJFd2C7sG9uHwWKMRJWM47_nfhBPPH6tcftA=": "384615000000", - "SN48CL0ipLJqj9t90gQybMrgR7vWe6_lLUONcRgnzI8=": "393135000000", - "SNYxdl27Jd9DCLjmOeMDs2ChYeUIkTKcbX56Zj62jPg=": "413102000000", - "SNvPyFixXJJtl9UVOFrP-ifA6JoW78-40omR4fdjoyk=": "8333333000000", - "SO1I3m1TiUHXe-_Yvd64ufBhNUq9IBd_ZFnz2lAdUGg=": "2308247000000", - "SOHQrdasUfV_CLtFFuBhGFdKuvqa3SMkI-mGrZUpqlk=": "5346066000000", - "SOHpfNNM6QsH9JzX2VZcIIMCf-7O5ezUEvuGu7Y3ux4=": "833333000000", - "SON44kwXMFMiLvSPKGAWo8u6EeKoE7MPQc_t7fqMOMI=": "464615000000", - "SOYPO1TPUVgwuqom6eL8vQlev9bFIoaRz2kR3YPYK_I=": "974999000000", - "SOf2eJHZUL1FBM9QUifY2fpGijHkApxdFsTl6OQPMl8=": "914995000000", - "SP2kFP4-e72opfe8Ti3Ie2NFBPItFyvPKZrffdDHM6U=": "576923000000", - "SP_HXqzVpLe9KCwKzNEm2ORpttLqiNp081qj_o3NyT8=": "2083506000000", - "SQ2WyXc3nt7cmNf_H_Yro-JCMffedmQzT8PZMmuEnEg=": "2055429000000", - "SQPu_2ragxI0cBb7OufRVhVr6RDWzi_lwN_anZadYww=": "769228000000", - "SQrbNnwV8KGCH6w1-nYJ1nrWZ2Z4LI6ai5Sivli702M=": "1795352000000", - "SR0Erq_-YcXCUuFSnMdutB8oIXiwbTnkee7DNtvmycc=": "470660000000", - "SR5i5Pgxq9WBi5t_B5WuJa7EyF9Jz5nlQHDwAEZsrlM=": "381968000000", - "SR8iFaucpV_t8E4ARPlMgc5CSQCXRBbqPEmLTNa5SHA=": "1601188000000", - "SRBkRxAhzUMEYBQor6L_p3rABJRhmLoHmx-vSTGtngc=": "2468422000000", - "SRC9_K8LXqftMPub2HTh8QDgeCD8Hvup2bBXf7vxL3U=": "1666666000000", - "SREOCLByEbRy1cjYFw_4ziu186YKXO41mFiDElbQ_os=": "378341000000", - "SRdgxucTP6JAr-Bn5Xq1LB-OjQvngLhjk4U8TNi-nd4=": "481965000000", - "SRirPGAzVM0pXreoA-kQpcWkKuyocCohmARBn4QF5js=": "390715000000", - "SS10fhh5bCIJbZOlmP5d5H-9fSF-7KRxYgot_yXRewk=": "2786400000000", - "SS5gMDXm82dGbPvthoZuWjiyKb9uBEmOkYbtMOs4wF8=": "442614000000", - "SSE-5jIia0sCkh4V_69CalNJ42VLslB_5J1LiOVhNK4=": "468609000000", - "STHkhYrq9FHhtzxj8sPnQcs9a_8_Wiw2TZ1bVBI-LEI=": "407808000000", - "STzoWvvrxuo1YagYNJyl08hC7vpzpIy3S6YUAnXKh88=": "381162000000", - "SULtXteObtvWcoKFhFnuWW4HkYtfMLML3d8QJpBMR04=": "455600000000", - "SV1IAsDeRDjAHLweK8aPkUbkgGLCeeEq_maCwas1INw=": "1005398000000", - "SVDTSsAarkvqtoE4upotH-awC2mSvUvzK4nVEnMRFBo=": "1156522000000", - "SVcOS4WfLRX-G0fYScTovPhtZ78exuuB6gocA4oTIqc=": "462947000000", - "SW26NqH0kxmAL7zkkz1uesoPCNqmQfcaHkVO7AigO8Q=": "380017000000", - "SWLSQA3jjs-r2EJIPJm-6F1P4BzawyeBgouK_LCiiU8=": "11538461000000", - "SWd7STwuDbOjYL615DCrWLeBa-qDbvAZCbGwCeWPlSA=": "383845000000", - "SWp98e4XlBuoMGdB7DJxJFCrRa5QgTtMT0TtEjYcK0Y=": "1157114000000", - "SWrwEh9DoH1dx13JwU-PfOukIfceV8sSo6qn-38-ngE=": "769230000000", - "SWtfXDEGBJIzDA_32DQ8C3J1ruAHsufWN_T7nOBHTRs=": "541666000000", - "SWwBciGhBrr-XGNeAl-8VUeEg31tNpys_f_NG2eXJ_Y=": "708786000000", - "SXDSIu-cOXldDYcYkC_pTUKCjV9GJQG2M57lOno1X0Q=": "411085000000", - "SXF68KE9J6wz6pEnYC_QNO0RDpu431pfPL92RaZPP_E=": "454545000000", - "SXXyMvm1WYC20SA_WE_6IH2Iq6RewLljh0PSAFJ037I=": "465500000000", - "SXaSbUDB7y2RKrpAOIrjnDoE7pXvbYwfe5Sax9tFoVs=": "376126000000", - "SXgyNvX6A2O0Lkl6fQ_MAReNemKJ2oMgVkOa-4syNgg=": "2682599000000", - "SXkHZzKDXEVKqwZgHqWBCdEcvSofje3sCj586r_cIRg=": "381436000000", - "SXqKaW8pG5_31LTs_b6CuVoxntEZJf7TB4lLOqgrhc0=": "916791000000", - "SXscA6SWWN16z1ajEftH_onMjXecSLVcH_CPez4IHng=": "457143000000", - "SYHmw0Vus5LmajHBjst_iNQIlO5rLX8tWjY676N3Zpc=": "394450000000", - "SYHomSsFJYORA3Doe8kL7oArDaMm6S3S4Xoda7WL-mI=": "4999999000000", - "SYLUbxj0XyzE84Ry8QkUwFw7gJtr4DP9DU6X_6VdzvU=": "4166666000000", - "SZycf1ci5wco64o3nB2isB9lmp4L5-8KCiLosN_mFv8=": "3818029000000", - "S_-f6kkMSd5Tsy3u39S7c_VkHqhVcwP3Qn8wqcPAG64=": "383038000000", - "S_F35fMJv8zJF7TUMf8GnO-1gJZFpuSW5S92_QqA1-k=": "462146000000", - "S__-79RLU7aloCum87ZSiBsiq9o1SaXRnN7LNGHRApw=": "9090909000000", - "S_cba5gwft68yQu98gcpYy3Cg8FU8lajR063mVwFqME=": "763604000000", - "S_s7hDCHRG5EhWJMs87RKfUSBofBIzKva0Bkn1CkLTI=": "763454000000", - "Sa92SIGl9mOxs-SZl9mfhs8rMDoMd4E_qVbUpaGxyvw=": "412863000000", - "SaOJHqgoZb3pll5C7-ruO9ftLRuJl5_i5AQ-EkORPJ0=": "1923901000000", - "SaeiUO9q_hjeyzvqfj3gfIxyMNl7t2CMWvItV5OPOrg=": "4851270000000", - "Sb2zVSy-0_wBIUNm54SYeNnwKq9M9aurNeqsbuSfv5Y=": "393613000000", - "Sb83wwAp5A6-Qr-6PhBVmroaJkc0CGMy9ThvgYekrm0=": "919641000000", - "SbTe4S3AatRavUOVdwG3SoJuA-PaDe9Kc7xlVeI7G2M=": "384615000000", - "SbekJnuNShOJfnOnS-ejFBqupUm0ykP0L-NstcPNk5s=": "390817000000", - "Sbg4XPXO-4YS5KOmSoB8WQMbgcebEZP1QZ3ZmJ5bTBc=": "384615000000", - "Sc3LamjzwO1kWIpVf4CsoTnqfqLMB947wOHfySk3Www=": "30394289000000", - "ScStA8bWjUMePmgUxO-sMm0IvCxtikFJikoJt798VIk=": "7787692000000", - "ScqyvCJrJPae9fxxM4Xm1C_VqR2nOTdg5-5Lq9Ijxb8=": "488979000000", - "SdHFcEoCVXWfOw_N4hw4hKoeLwuX9pjcqdQDPVbGKI0=": "384615000000", - "Sdhw3we1EJxMSCwrsjOmU5ztca-fYB948Gvvvpjh1mc=": "563425000000", - "SdrMM3ZPE57n0GVxLwz6UzL6BHMlJNekzjVFqP3e2Qk=": "461318000000", - "Se2DDiWNR5fccPu1Vc21rgct6EKpnPT8LEk8cvgZBTU=": "508044000000", - "Se2V4LLEeMfBe6eoJTKCW7mh7Tjd8NN2gZZx5byd0bs=": "763672000000", - "SeEsx_A96SibtdbFRuHsJkHh3-d1_0D7mzJTtpl6wNM=": "413291000000", - "Seke0F479gO1Qqlpv22BA_iYDbZsJTnBvd3SBCKmKVU=": "464240000000", - "SepAee8641SionvN0XI08zchn01ZnvUsbxsepHz3Olc=": "385211000000", - "SezutLfrz8UpYlK6TZFvh169w_H-HKTSEB1OZylc2LU=": "3672319000000", - "SfCawiPd7qQ4FeathOoGkc1LzGNk6p9PkUphwRb3Hn4=": "1156522000000", - "SfQ5IsI_Xf_U-IwOIbWcRXIZIupqpdF4YbrmXluhbsU=": "459754000000", - "SfWrraXfCzZ03fiULK6Yso3xW-sTSbObRbaFH6TKLs4=": "2333242000000", - "Sfbp9zRqC7UAnnPV_XXYmcjJwo_5A0xW4Rsd1uTPLyo=": "374871000000", - "SfyDGxT8Z8Wo8ppt1YNf9PWawabzyukN3wpnlT7YIS0=": "8081479000000", - "Sg53UUTuq19VxtmcG2uFJPE4fKFPTXt1w6mdrKxYa0s=": "424835000000", - "Sg6Xn-96TqDHmlK_9YGJrdYElrZo5itfQv3K8vIh-9c=": "1884682000000", - "SgBQTwwO7aS5isf8I3SOnaNu20QyZeUGR32N7Em2Dec=": "993351000000", - "SgbuNV8naRT-Ja-B8Hrudnl80xxGDnt7qhgrza0MP0c=": "924915000000", - "ShG4B424QcVFj2CHh-nVrxUhsPczPxEwf4F5HfHddJM=": "1153908000000", - "ShOSZgKko_L8jvMjqzpAg5dPnY16IyhgsaXm5_bZiTY=": "769273000000", - "ShrydpxpKv3f_rwf5AgG0Ju9DkCJUt6MPgiUqWXw2PY=": "411085000000", - "Si2527JIqNY5eTX7duExg_SR_PH_aIWzSJCyf_U3hYI=": "422143000000", - "SiFTk2ajpV_bsFq4euExsSeeOcIWscJENFBVSorFen4=": "384610000000", - "SiJ7j2N8DKg2_lu_1KjsnHE40eK2OteWBCrdBhcX_aw=": "1375988000000", - "SieioJVAE4o_vtUeVnH9tjbjT5t3JhRziTKLeN5ALSs=": "1997119000000", - "Siq0b_ueIzkBlD1MsXL_n-4kJeP4vCjtpfmPk6_KoM0=": "1869521000000", - "SiqWeLmhbxJ6MpEW0rxtGF31E_Ld5QoOX8kpcEWRA8E=": "384615000000", - "Sj-7Vj4ALX82fHot2mXy3hXbYy8Yk1xJAZcZlBtv6UE=": "462944000000", - "SjcoeXgFQtll96fk3sNIJELZ3KI5OIXGMWdS0O-cUlc=": "566195000000", - "SkHmbI235hA-ICOpTDlC9ru1Z2PB3jQNXwEkACOJ-7w=": "411851000000", - "SkN-Bd3Y1M3YrpOj57YRdX0Mqyrznbp-PSPmxO8t7f8=": "379290000000", - "SkWrNTHRcsZ67JYvK7S4dKoZ8Z7tXNJ7QBlaZhjrxqs=": "471779000000", - "Skjmx8LCVfbDVtNLf-YKxhbepeZwHmGb464OJkE20oI=": "3223241000000", - "SkycvWDyhCVhkzN58gJI6LavUxGigf57Ilani1UlewA=": "766939000000", - "SkzsuupgYLnQRBVVBBZTQLB0kh5ra8tI3qinFKyfMQA=": "1389046000000", - "Sl2KaiqxnwXIKw1069iDBq0NwOb2oGEyzOW_Lk4xhIc=": "384618000000", - "SlLRKTsXpgewimE9Xvbyli8F4Rxz1mPy-u512kSQkMU=": "384615000000", - "SlLbV2j8bT5bBa1oZDb9MiVinF8abVpOXqNNRvg3Os0=": "385507000000", - "Sm2fFY0HS6H2SXxbbnJ7fVgR2b6ooD7esg2hwE-jPDE=": "392518000000", - "Smehw-zt0u8MYX21SyFhiO5iYyb679ZwKA6sl7wkfos=": "425047000000", - "Smn6skFXLIDt46iAPtNR2kl_UsjUTUsut_soeJhmhaI=": "834385000000", - "SnSgYUpzYrO9dwSOL2-sj8x52fT-ImHEYwrJXuGbFiU=": "654571000000", - "SnoeSLatwZJBLSwpBEesKgwMfeblVXb330EKL3XRK2Y=": "385510000000", - "SnxmDLuDGgsgWujR_SjiAg9smMshJniER495YiBYB7E=": "406044000000", - "SoFBh6PZKBmmJiZciGNiVL6wTY9yiDj3YwVAlU8V7-4=": "1730769000000", - "Sp0PnnbLZfx0ZRKEsJVkHOPoGQhLy7OnYNJjMS_VAZU=": "4035050000000", - "SpW_3VHHQk_Xw2JJdjpTdYtqG8faLLpMpzbSKYxUADo=": "451831000000", - "SpjFLgObPsf6rCVAm6S5hTCg8RGceJAuSQO5dgiBgL4=": "3867538000000", - "SpsuY6TqqBLNQM5x9EfqDHfI4r9GcKF-jcc45_IQloQ=": "2272727000000", - "Spv5nIIn-mNYMg5Rw2GR6n9BzDYjd3DXBhjy-gEs9Hg=": "1627125000000", - "SpxPtjF3n2G6_Z5Sup1aGJwqGVfVtOhXvUsJuCc_gYc=": "407530000000", - "Sq6xbDK1t9W5yqac3gBig95P3eidhQyMhRDHxjcYbsM=": "384615000000", - "Sq8Czmgadg9TBfTHn8Yru3853Z1DQOgdvP8X9KaqBVw=": "400371000000", - "Sqk-Or1dD4h7LwKoqnTOwyxcj9Blkss3IvSC-ImC7jI=": "1810402000000", - "Sr-P56tYWzjhQz5EEmBTPSAxaJl6_llUWLUftnftDuc=": "420060000000", - "Sr0y4S9hQwQAsOLv4OrJkHexM71WDYusHJIf_b7EwMs=": "412607000000", - "Sr3XoShMXuwEfD_Nrm955quW-h6oJl8wzSnsEIjxRyw=": "385506000000", - "SrUCxZU9nLBPgoVVzyuPaLyunRyXVdPRRLJas6WJ7wQ=": "419891000000", - "SsTCC-xPJaZKkgN6DOijdJ3y0fdtv4PIIh57qwrCmcw=": "1818668000000", - "SscR14U68T8frSf5cGBTyWp7cF-PzFzt_Y5sQqXjCV4=": "2022393000000", - "SslGIXxY_9YIZXLK-KmqFcII8WuZ0bYB7bVe0LA0olI=": "385509000000", - "SsmbXRaDrIora4SgAuwwYs71FmXL-j1v9wzZ_iz9j0s=": "383803000000", - "St9Vp20fdYQf9uzwg-AaUFNayxSvRMadYo9A5dgSt1o=": "2349530000000", - "StZc6SjtEb0p_SjAM_62BBzsTDPaDsyjq83ZWoS0-5E=": "382394000000", - "StjNAmV6SccOqX_OGTqckFXY460fXGIfd8d8qMDMMMo=": "538461000000", - "SuAUuPih7_3v6YTs-3an2WtmplZ8oD87rBRR7YeHeKU=": "788465000000", - "SuL30-reb-Dma5b_CBqeuCpRecp1nKUHw_j0I9DdBiA=": "454545000000", - "SuMBkqF86MAbJHC7X48gEw7Uh8QyF5RnANZKCxa1ZIY=": "384615000000", - "SuUjFg21Ew-nDaJYEV_8ab0UzhwkOalAT1OZXzaSuOE=": "748973000000", - "SuqQIuXRFURBlVC80_-qgwxz86QjAAF1TJK2Cv8Sqoo=": "3068830000000", - "SuzzCotbNN7Bp8_qaruKWA2iBtBn91GrH_zbazvacjI=": "437313000000", - "Sv5xcRKGb42zFdWeEET2tnKydrstnV7WdJn0zqylU9E=": "2070658000000", - "SvCzuh95gKFmG3rYfzbop5qA3LA44T2LK2_Eg9vM84o=": "469837000000", - "SvDQuSfXjderGAlemeTLXVkYqsdRs4IIWJaasjdom_Y=": "891648000000", - "SvniVKHvZ9tEv3QcbqeEj1gWu2nxyWx0RToQBh6Jpjk=": "384615000000", - "Swhbu3vYHsLS2OaCAz4OTQTFtTe9I49JWiMsV6WzrSU=": "1954356000000", - "Sx97Qfv3FGJc8TqCTymtPhAraiTAqW9OfAVP029JYDU=": "463511000000", - "SxZ-J-zDwdxOipY5Vwaq7NmNU_bzEhoz980cyk5H9kw=": "384768000000", - "SxmIBE95wG1goT4t9VuEecGkaOL64R5H8vSWcfjnnd8=": "384615000000", - "SxstyLEeun2n1YZtUjpqzjV0RZ1BL2MDTo9upiTh_38=": "5206939000000", - "Syi594y-C61133g-JPdczOmV5KE8k4pCqvLin4-9nLY=": "377692000000", - "SzDsyBATgcGBQ5vxhmkOZ4zNoM6hHEqAaBXeJq9Uedk=": "456456000000", - "SzPdb9zhWj7EP0DMnxrlZigfLdeGb9aVHzYnWVQTFZQ=": "454545000000", - "SzjIjBmKbpAmoE_vthrTL01-Dv0nQIlKEkvwVMhnfl4=": "1262181000000", - "T-7FHyBuWHSxw0YIouvGlHYWoT4jjqTuNt4l4vgRpdo=": "1132037000000", - "T-tpeDxcaOR_QeVE3kQ0twz3-Z2EZyD6McfrIZD2Nno=": "416408000000", - "T-xoObUayimBzNjqTPoequcCEnxreorNF2qtNvvcJCM=": "756514000000", - "T0OtqLc3zTy5ML-_JNlL37Gk-C-Moi5u8syzUYM6u8g=": "1344548000000", - "T0S6TodznUScowsmpJshRJffkk3IOJteC7PSjp9vHZk=": "469809000000", - "T0njmdpQTaW8Adtjpet7m5c5CJbcd3kkQVEVtc1IsaE=": "389386000000", - "T1N8huyrkkzSRveUDhuLJToAlTeIAI1xFG1_hg51KjI=": "425020000000", - "T22PtI5dTIaNj2JwaDzVUjefwwer6HEPoEMyfN6CNO8=": "1802002000000", - "T2E1wKTHWipHYJgQcnhKnjzDfn9E_nJ9psThbwxyqGc=": "964248000000", - "T2UL3fSb86S-VQvmw7ypuVs5D10jKOQxlbZeHTKEYXE=": "379603000000", - "T2fY7GkK2OkBi99tzZ9xf2gDsx5xENF0rgcWorgyQcs=": "469310000000", - "T2jzWwZF4yUAiP5zHUwlxZcR7otazbTtAT78cFdpQbM=": "673851000000", - "T2lfKndwHJTM9YEZWeCqaGaZnhM3eaD-ax4FFsnajE4=": "3846153000000", - "T30Bltb5MJh1YjWIN0cibLv73SylZptXuTMCAA3Ohqc=": "385168000000", - "T3afCTFRGM83pdsATRl_w-ZNLlExVZAFW4i1D1fFbIw=": "419075000000", - "T3d4i_7opknr_tvzzIR3raoHYq6DGFZLYJDQWRjH0-A=": "389613000000", - "T4k76HmpAf3TI4ysRBgAISJHffMsWjdqnB5s0Xcuvy4=": "458783000000", - "T4lHcC4fpOvGxmlI_YZyyrSjGGAhEtEpBRa9iCbVqLE=": "443380000000", - "T5byI90XFRWcHuMv3bjHY-91D_adEDFnmgfPLujE0cg=": "833802000000", - "T5p0OewwVDxDNgtlMiXcu8oLTkCF287NP7UjjoX2s_U=": "411085000000", - "T65clehjcmIz3jARlRsilCSmVep7JbpbXvTF1XrBXew=": "2839748000000", - "T66zwB2XM2a4PdHlrhZp0Q4FzJGz-AYDgSegiSZWSAg=": "418363000000", - "T6CuFMnQIiokXOvvSZfh74wcr8kqKumdU2uF_W2xNKI=": "492195000000", - "T6NGythQxTkm3glSrymftn1T5Mt6P1FnglyilVDuOdk=": "790995000000", - "T6X6KOVumlbOvt6P3wQzfPQH4i8_u9E0aInT1O1KdKo=": "2084206000000", - "T6_NIh-0SBBHhyCRiePPnDvE2wONneL0F5oN0mzd-Jw=": "559333000000", - "T6qmSLu4aelssncDsijhgdQgMLEVpDxsDkth-tZ1AUU=": "4054666000000", - "T6renS-C-bg5kqHfes8pyPRMplbBm00u4wcvclbL3NQ=": "1905640000000", - "T764T77DcfaAQ2piwU9ycCxXPF3pFYotNCO2xbJdJ-o=": "385508000000", - "T7BpesNfYvpduGPoCG94y1Es8nVHCV_wC1XPWcBSTg4=": "1513028000000", - "T80mbIDuB28I3kbkLjeSWwH5YuDgvJHLuIO9ro7U57A=": "1153846000000", - "T8OAfF9wDFD0zP9gy_DDuZbgFjE6ECNwvnvKZ1H8dWc=": "3880835000000", - "T8VsZHeS13XDf0q9Evop3-Lm-HEJQ4YYm9RvLwcJXCY=": "920027000000", - "T8_KAJpk2BRrfTWZeRcko-h3T3buNpoU0MSBuL5ign0=": "459318000000", - "T9CJOFLI_3fPIPqNn_bqMOAk8oBKp0KSwN-y5tvh4Jc=": "984391000000", - "T9PRHLHeXIu1FzjPL_9ofs-i7Avn6YDHS2e9V0QuzsA=": "1156532000000", - "T9TMTIJYoaKPrIv2b8OhIbbbRDtVWwfufO35L8eEHlk=": "1769230000000", - "T9iYpvU1dFRcPPGni8TIYWz-IUUvM3HQF_kMfAO6m3I=": "5825252000000", - "T9tIg_QPi5N-uKfDGq9X5ZkLOS1PptCUk0QGrrLpf68=": "1179159000000", - "TAAdCyOZMZ8wbZHaJRD-fgcYEOub1YYWLBhVGDjXpH8=": "1213320000000", - "TABpAcemRZeX3kAEfy6swsiT479YArwopjYiKal4pQk=": "486218000000", - "TAFe7JvMscTmjIrlNyvJ4Rn0dKn1IfToVZIcjbVH_NY=": "430743000000", - "TAPAuWMw2_1NVOFG8Lq3D0Uts1wkUJyBqgEb74Vqaos=": "1512876000000", - "TAg_6xHgYMIdjXi22XIEqxpRaN4wVqAfTWvd0wylWdE=": "405229000000", - "TB0SoUOlcGl2QpmaJh27rB4mzPxTouHbb5zOFl3TMJM=": "446613000000", - "TBHN5sGSA8vlYimejlEcgqIuGQ8h0M3uYnIkhAZo-1M=": "407808000000", - "TBLOKjaCZcspaiooOxOF2ufC0jxrsHbNheUvZTyHMf0=": "2501233000000", - "TBRpluY-Px7T2oFyHbXICVUEM21I1wVGdi62vEghG60=": "914067000000", - "TBVV5neWlX-oioJhvnSYqEqiRZc445_QuMXb2iALHtk=": "808497000000", - "TCGdGpa21vGwkNMD6PqPVb_DCju8ZngXcg_ckR1UEsA=": "538468000000", - "TCH-5PRDg3ZZSEpmn8yXMAJxoUi-qXIe_xYyOM88WUg=": "411085000000", - "TCNWv1UY7SZRk0r9OuT04fuf65hmimvaBcZZSxc1l0U=": "499391000000", - "TCQ4oVEJrDyFJUnMlLmXp3sVRzCTtJDPDV2zB7gWt2c=": "2073542000000", - "TCUHETQtgQOTjFVRH8bGbJgmZIHQGsQM9-sf8edWCQY=": "1734809000000", - "TCYhdCPnPJmGFCJYY-kq236oqDxcFM1HW7y0J30tQKo=": "706137000000", - "TCfxhwIVKJnDuG21nU6hFVCZ_itRm6qUfM7_QwDrfUU=": "2018426000000", - "TDKS3-VypXcEQzolkzO7IOgdzrkz86t1QDla6mzDXjQ=": "760231000000", - "TDM4Fvn7dGy7FEOXAJqfm--QBJxppgdahlJvQlP5eAU=": "385935000000", - "TECtaxiOU08pafigBGcvzj_swMuAVn3Nd1Yjk-LUrc0=": "386715000000", - "TERbjd7zY06DplCsk9egnQiYKfUQXT6s9eYaJnOYeCw=": "449746000000", - "TElZX_DlesuI3FuXC8asLyMEWQV5oNkDHFrCquSUU70=": "454038000000", - "TErBbf3sAbp2TPq7KZ2fe1KmH2Egu5tH8vPVU2R4FqQ=": "863973000000", - "TG1-OucRXFcgExTvx09RMK_qahotAEw1-C-_6n1HRsM=": "453652000000", - "TGK2WuotpDIUeFsyzkSjmj84A-Z4s35P1zKpGBn0LPw=": "403061000000", - "TGNRIbs23iGtwuLO4i4s19BryENXN908HaIw9bF-6Jg=": "428186000000", - "TGRsfM7elqh_k3iHV5GRZWYJN38oPAMiQINtCwzhywc=": "917293000000", - "TGpLzcS40OdUoMr0wKypL0YDdI6mcYr20mSdogLpZR0=": "440082000000", - "TGz4zOCmVM60YBnyALFWC0ss2oeaKf93DHJP_q3ARb8=": "456999000000", - "TH8jrbRRBDM2VZsnZSPwSAaJ1sfJW0zyd-ztxKJ03fY=": "460237000000", - "THBBi_4s-D5R2P45o_LsvJOULgeJNplfY0I05WnRl4E=": "11518601000000", - "THgoJhH7jpCPT_i_vaehohUjJXiB4cXn3ibDxPnhS6I=": "6102241000000", - "TIGywxkuA3q-gGhc8-t_Vl0hDuDZK20Jcdg7igNXloU=": "1159335000000", - "TIIMUqcXmZttm_k_Nlx0GkaLMzkzniLpybH9XdiLWSw=": "455600000000", - "TIbWJghinnJC7eQ0T2CYB3uz2J6rx-7ChDdEo_BCsPk=": "456386000000", - "TJaeS5vBwNH3p65qKCn11-0faH0-jN6WPi4IA-VY9Ho=": "411085000000", - "TJddBmAc5_KfeHQSRUMd2wRYI-zxCc3Z2Q-wp_wCEV0=": "384615000000", - "TJlUYglMrWn4GzpGz62OAiKAoeKTO7gInGXoZZ-t9vk=": "1153846000000", - "TK37LIzo_18Vav-B6Iriv9-88eXcJKRGzw3xtWhnQO8=": "416666000000", - "TK3_qEuI1j5SLvgdO-J0eyvopyPrNDNdUgReItfO-7g=": "1804233000000", - "TK5eo4OPXZZAv4W0lOP2KMR2pgGUlcpp6cKHlMJhGv0=": "385528000000", - "TKCu2zNR1s45jCq84YBtzlZfAEQb9yXfb3skmf_yW6U=": "407808000000", - "TKMpqi-rnNOgLbO4KRJ_BRIRExh911wZBl3PSgnW-kg=": "2499999000000", - "TKmfNptUOju83EtZl7PZbd2X4hTz-wi8RCRlwqLopeY=": "2099037000000", - "TL3--gU-l_QAr9r76txahFQR_eTMKalM_q_Lun7Lorw=": "455600000000", - "TLAA2MCzFTCN0ztmb0tx6Qt_jWWeojCOoBnu1nLxiUE=": "385830000000", - "TLS9DVv2aeZumLtsvxBqcrgbfcU5cnRvxN4-QnW4BYg=": "4071284000000", - "TLV5FutKSANrgq97LDiqQwZEmmzRTl7ZHEugsZvpSoQ=": "4562692000000", - "TLVAl4Quy56qUGHoOnEhYlxLh4ergrffbNTlNiGa9Xg=": "385505000000", - "TLnETExs0lEyGXPogZZUQ8-Us1E_SJ0310IE-ze4pgQ=": "384615000000", - "TLzWCkmM_fLTF8acdMM1cOQ1XolK_vT5IyR8ZLRv2xU=": "496799000000", - "TM3kjCKbA3awYjqV69ft-rpq2v5lWejHUEimP0MNUI4=": "1999999000000", - "TM5J4gTOcIBvGAIA1aiGrXDS3btTK-J6vPW6ahkJVoQ=": "383455000000", - "TMIq1ZSdC9dPgNBbRD8wewIUpo_tk0T3RlKknLXtazg=": "461553000000", - "TMXKg7vDH7TDBaitGRT6cZD4_iJRdp_DxnsvGFtz3G4=": "411085000000", - "TMXvkzRiQ4dh_XBa2iQIexHziCGZRJ88Zeye9q5UkT0=": "769178000000", - "TMeEHjWcE5IhVG8NrLL7xv6Dy7i4qeOkkBjNmbYH4Ss=": "384609000000", - "TMgZKzIJn26vvSLboh3L2YMIqK0_xbpqhvv1fKKkGZI=": "390917000000", - "TMkHwQ6tCduoiD60qeK_L7iZfVdIAdV228pJrkaeBeA=": "31859306000000", - "TMsQODyiz9YaMKAAqvjP9oxJDyTP6xxhTkKq5l46KIk=": "454397000000", - "TN4bUGuZwyecUXypke_OdFIlwM7a0jwEv97mAcoISsY=": "1153846000000", - "TNMCCSP0hqtH2V2hQXsHuWjwdmlK1DBWyy58cxcEh_w=": "2095522000000", - "TNxrpEy5MyfyZkjzlJguAmolJvAAzk43Sj3MxnhM11Q=": "8926955000000", - "TOR-0aZ03nd6q1pntimhhR8qjlojFgElZX26vCBcKLI=": "454527000000", - "TOlegdxhkrZsbBMtfL5HBg29_MuhbNwdoBa8-L7V4PQ=": "390975000000", - "TPA7-VD-ULaRoMmT44uJtRvCNefKhC-a_lX3md55Gpo=": "940062000000", - "TPSrjxo6_DDfpbSPivjzIO7JmUw0_QnRSJBXnGT_x5o=": "4678221000000", - "TPaPDoDJWBzSwgj26rLcEgAdwtfZiIJTnwlKZ9s7ekk=": "382394000000", - "TPdLdEkRsxs0aW7h5GCac6j5x-D-fuFynND6KJlAKBQ=": "385506000000", - "TQFhMfOzYBiRzVCxwG-S9nvkea5rMWkc2iCNWhijd3A=": "1694716000000", - "TR2zSFCV5rieZAHdZZBRDlIzZLdU-Mz3qM9SQwSCmp8=": "769230000000", - "TRKZn2kraJ6T7uFqH5cn-u5egjR2Dai_Awwll8XHK_E=": "4110858000000", - "TRazpLJba89NscDYCVcpc90GVPhL7ACcwumOAch8Ecs=": "385507000000", - "TRfhibhiQPGFrFqdUqvdKzY7ZnVUYXurN_Yxqa4fQB0=": "4926913000000", - "TRggNI27HawKHYahmKvSBu6dB9KfBDhp9kCSUVvGSl4=": "769230000000", - "TS9-HkUu_ckUYQWDwgECdPUSNYVSBAyhT8lRDjwf_40=": "463270000000", - "TSGqwsxceBwLeR--QtiAPX7JQeEVob_EwevaqDJLqGw=": "1927537000000", - "TSbNqxF-Pus1N9Y6JCJ2NwmkfYIskGGNtVpviijL_kQ=": "1078431000000", - "TSw5S27VCGc1hAB0Q6f1YU8m9B22vSoV-IAzciTRtXM=": "455600000000", - "TT2lLlm1bIlfqBY_ukjr_T28fferrj1TgoVXcTDRco0=": "3846153000000", - "TTFOTAi3HiO7ns-j7aRBeqs5i_ysaqobSzQb81CJ7a8=": "393015000000", - "TTIIXyTalJN5aC7o4n7QV0RgdVL1kFmQS-EC3O5N6Qo=": "404981000000", - "TTRysw-M3YBzft4IjSK-PzQJXrHvx_1uGvLZNYxTE5s=": "2307692000000", - "TTaz0s1a-7FlcYoEXfAY9zQ86PLz_IkIrP8kKzmPHoE=": "1890031000000", - "TTp4oUQSur1USwkRfS7oOkumUjqBnRwDMERzsHUt44I=": "382296000000", - "TTqgIKgyd6jccZ6JSVp5Eg_L5RuzWpVd-IZktY9peSg=": "1249999000000", - "TUOsQYnNyu84Ieq8wAv9isT7k4WYeSBykv1kpva1Xhw=": "385507000000", - "TUe9bETsMnKCXXmAqGa0_tRCEdba36VI-8eztan4rzQ=": "455249000000", - "TUnCHzmoynclcFE1SONUUsnSKFqQciUvag9MdWCfIZg=": "1153846000000", - "TVmMoaviUhsywKP9NNTBYlqkcwnaQN-I518APE5zPGQ=": "1368707000000", - "TVr-HcsGDQHdUC1Obirryfkx_1zlz00HKZZcSx9U30g=": "384631000000", - "TW6-1ICdwUPYpp_DiDfMTcLMM-zA-h8s9nJOgsJOaOQ=": "500320000000", - "TW9CO5ppLbwpVNih1DCVcm42ZT_o2XLRWvkUYlHedBw=": "3846153000000", - "TWfO52DjZQh1MfsaYhe0RJ7ij9XAfG7PUf-btKINmXw=": "454545000000", - "TWgDMqd3RmzuC1-MlKQ84sJlKZZphvaiOF74bHWCcHg=": "2280979000000", - "TWjrFzQ54CN8Rub-Z3UFU5wc2CZMAKKoeb1oweL9bRA=": "385507000000", - "TWqf_OA1kTwzOSuAEVL0z8M3ihOZ85m3QnE8Qt9LZVA=": "473265000000", - "TXC-rEpYEmWqm07xT91823rjKK3pnkvRRdWhb62_XJw=": "1666678000000", - "TXDkgGHNB8NDDGuLngAIpkkfze8noDVH9bYQpNExrKs=": "498593000000", - "TXZEy2ijIIvt-ajyMef0u-idEqULSxCsAs2SjM8jSCs=": "41614042000000", - "TXgFpsIhDeDdFl4tkl8JOcA_mUy5t8jEFrhtk3Nl95w=": "416666000000", - "TXo_uT-RUtvbYa1evHBxxLu88CaerlllQxBJfsmfeOQ=": "1384615000000", - "TXxKUWAP4OQLZ7ix07gyhySk6g5Yzqgy9bHmGT0qXqU=": "403542000000", - "TYoQZqGeogsN_wpnt3im96q-XJfyTLGp1qVsLNETYSg=": "934115000000", - "TZ4h06LVN7ZKCp_Vr5ES_LZ1l-hWIUnKaW4SkPnqpK0=": "386611000000", - "TZqihr6MrkfU7NPAD8UkV1hcCW_wS2iGq5V70FRplu4=": "769240000000", - "T_aw65OLTwI71NzjiWu70ElgFlYQ9aGaoILHo0FAUlQ=": "372058000000", - "T_jCquv7xNAVlMNk7U0Bj4KvGM7j-Vms4fJbm0fowgs=": "396483000000", - "T_oMfotTlayTfjx3wwr-5VetYckc6I81PyVDs7KhnOU=": "381635000000", - "T_w1cqc2BKSKm-mesketmzqP6R6R2Clnk5NB1a58wjY=": "769230000000", - "T_z0BzUwIgntcVNd3qxIH240RDwbron3QoXlbVX7UlM=": "3624999000000", - "TaXNwZgAipw1ucIqaBPOS_scemtyCfnDSL5lLAHEF8U=": "2275404000000", - "TabuOZ_QzmYaFJQH3kUqM354UMLdrZERVqw3B9GXMQo=": "12517503000000", - "TapJIqDfoJ_wQVRcKayGzb6GDrAhd6vmKHuv2D_8eSw=": "12741935000000", - "Tazv4VeCzbyDpnJHoqgOv7HNbtRn_9ZZbeoeaClKEF4=": "4540416000000", - "Tb4VcNV32tcVTfjV3YHYfocxipxYJP4EijYT2eaXNdo=": "669358000000", - "TbDi5FuV1ZImz-HVY_raPsGvl6uWet130W4oVmt_x7o=": "692307000000", - "TbPkwRuOeNpW7j7qsevK_KtJjpMYgiq7dSV7m8pGAWY=": "378341000000", - "TblZaN-wNTpMNnNFgxCrKZ3_miawPY-rJMFRZ7Pbm3M=": "584259000000", - "Tc4V9So2DnG7I9faUsZKi3xqWP8sc5OzSwU2DcmFhEI=": "5384615000000", - "TdAPvZ-TOWuJTJLn-QcoD639bxmQwaE6xrKVjf-CnPs=": "880291000000", - "TdbYO9Kq9MdHRCuKPg6TV0yX4ZXsrWhNs2tKBxeSLvI=": "384774000000", - "Tdy2vwOq1dr2JSBjaatgM_HXAjFy-hjEoPTYVCs_wMQ=": "384615000000", - "TfF4fLtpKQmZi6TTaW4I3e4DE8kcphTdU-ONkPFTy-M=": "1345378000000", - "TfHE1imi6jlCoIVeAEmeW3vqAn5vl31dR7OCRKyiTqY=": "834557000000", - "TfIAKjurwuoUXu42RB15mpvkO58kBOYsJvRk3ip1x04=": "1942665000000", - "TfTktDgH-CYrDdDIGUsJfgz2IgOqeFn9ZaAfbrXaloY=": "3690073000000", - "TfcOiG5gPH1wgEWjTsBXq9u8Ebq3Q6q_bj-OSnRghog=": "902536000000", - "TfemwpPbJnR1ReH8-jv02HzBLJjFjJVbxfATw6bbeNQ=": "467604000000", - "Tflu5ymmGQ1o2YFlaTShuj7IgIKsLHPI4FLPvqTiwzU=": "390962000000", - "TfmumusYXlp0Kjmg_v2JdZfCd54sWMkv0bfXD6hGj7c=": "385506000000", - "TgAFIwYGh0zoSS1kXobf7GyapsLIY3C8di8kMMt97WU=": "5192307000000", - "TgENOTxjPLyyFKGRkhAPvt7csvO8m4Kyr9AJnhvQZ2w=": "347570000000", - "TgUdRokk5FS225QFuAKWWF45aBEY24rs78Ou0IP2250=": "1812786000000", - "TgZPpsPpN81yhqyOVzHe6X-eXy4SBtXBe302xO3E5h4=": "2304657000000", - "TgxQjc-m-jO2mkIW9IoblXR4lu_gA6EC-5g1N-wr7Cw=": "1958327000000", - "ThGiNF3XW6T9MMp6-PiKWsioVNG2F_pBVhr_hONXq-A=": "487145000000", - "ThJHUyehjUTEhNmNXvXq2h1EUmzNHMUnPOFJ6Y1FiC0=": "1156518000000", - "ThJK63hC3PzGrjTCGMh81hRT6pGwG6EIeZf1awg7xss=": "2083333000000", - "ThWGOlrbzyDfVSdK-xkBrFoTMCJ2CJWEN-5LlDudA40=": "457208000000", - "Ths7rST014wnSAHwWzdnKKVOO7TaGizyc4ThEveEKSA=": "423634000000", - "TiXYTKPwfP_wrCOx5YRMaGK5LFTgD0uf0NXTZUtUncg=": "814938000000", - "TiY-JMyarKL1pnf3slEmBGQ_jZ6kpoI62QWpA6du8Ak=": "799838000000", - "Tie5eeUqZ8itfQ3hvTjb2w2oH8ktAhtlUVvNc0jjI0I=": "416659000000", - "TirNJLKIbGMtLwTGDoM0BDcZoZ0HGHUhWs9rjjTCPTk=": "2499999000000", - "Tis0xPKLTGxeCYn4FyhuHhZ2mWxsQVMz9fa70lK1mpE=": "384615000000", - "Tj36rUXIV4UwS8HbpLuDbvPhQi-LR2s0wCpqW2CK6YM=": "1146117000000", - "TjFSaK_3XIypDVaedg8aTQweNOn-05ZR_TTJrwm0HRY=": "1538461000000", - "TjeFQTXO9aXvGmkgqDWQYqnXTi3Fcqhmo2ZpWBo0wz8=": "499999000000", - "Tk527G7837xfz06MUhsUF7aI9gI2l0qB9kLIiGv0lfw=": "1019742000000", - "TkCte70SVji_uRCqpiiO3w2fAIOvGQHbUmbWaIb5XuY=": "2080471000000", - "TkJZ2MlfCe7dLOv3KoUCHwZZGH9mZ-FOk3CH9vsW5UU=": "455059000000", - "Tkz9wDqnYGsPId3VAsxgfi6S-MhozqrFZDS7_yMcrv8=": "378866000000", - "Tl48tUyN4Ilv3bl33PJoxHXhvb9B5-3FCLx8kzikTxY=": "453243000000", - "Tm3qBB25Jq64rqlCRsZnXhHbpOolTL6y4EbSmfnnzkM=": "388432000000", - "TmXPZgMpG-J5ZfYokmKRf4nEKYC598zukJeX8XkN_1I=": "411809000000", - "TmjMzGVL58Bb8qdgbHBn431-M4nWaoW5xZ8E-ta7VFU=": "411085000000", - "TmpfuhZeroRreQGdJda8tksLHL-8vqO0JMkhZh3O9WQ=": "424242000000", - "Tn059KJmqshzlCu252fyoSPC263U1B1jcM45WxQdoLU=": "381721000000", - "TnM8so2H0Ye5EBxR3HErCRMmrdL6JlLLSrLP_DyrrlE=": "3846153000000", - "TnN08zqxSJ--wf919NA-8i21xMtdg3NMXwAr6shLk5Y=": "3843882000000", - "To6Q3J5iUOL_KCmFFHDCFVKIcGEP0881p2mejZN_ndY=": "7507276000000", - "ToCO8Z_t4xNqfw8d47YUUH_dYbHujnzz116DDSo-n7c=": "384615000000", - "TpOMiNp2-bZTZVfgCezfTamieB2n0sk9hmWO2l-KvPI=": "10694999000000", - "TpXeiLOMShVcGXTUOJRCuP92EMqZjXyF7mYY3EB3k1w=": "452040000000", - "TpYi5tGrYo8M9vh2k2o10sU52I4Z8bv5O5tBbon46xc=": "511505000000", - "TpzcVzVtiBR0Y3IXthyc1tvdVR4N3b57Yg6L7Y8xZyk=": "411085000000", - "TqQd0PYrucACHeAAsiQNJjg1VCTIzgx_omji7ICU-ZA=": "358831000000", - "TqYkqfYDjymw6xYZjGfUZdxMT4E_pKk4-TZNjPFlOyg=": "2606663000000", - "Tr2r4ivZCwbPvPzi_8WKRp7PHTAG3MgJFXyjdjv8hoA=": "407808000000", - "TrYdxvJCfN9UIh5zORmv25D5ivU4_SPPHvrBEX0JAFE=": "384615000000", - "TrwmhaqJAEuw1GF3Y2vkYi7u5F9JXu4oNxmzrl_O9ko=": "4176371000000", - "TsMAQPZ1TWxodeVKjsZnu8n7MZanaD4gW3FnWPJ8Pcw=": "769340000000", - "TsMwVWyHVtHZKVSm1_BpHjGqZUn9kfsALu-BOEnqTJ4=": "385508000000", - "TsNT6fsflfNcwK3ZB4ezjmKqHpYEhQAPlpJUk5OKVr8=": "9596153000000", - "Tt7NhQ3g0ja5z2H5bENDNbKbXY-jA2Jjy2-SfiVGN2w=": "425284000000", - "TtGEuEyO49kCcMWQrna_ecvhLBSMqBFMiRf7qyNm7LA=": "2318461000000", - "TtIYdgTmxM1WlxICEeNafaaRDo0gw6Lplfyb1fiXpIE=": "384615000000", - "TtKFj8ZleQUvm48hAEI6MVMx-EiEzmeI5iXEbnMUad4=": "3611667000000", - "TtNQSJWvVE1ffzS1Kw9iSrkmqSFjafULN8p9Qy-dlS8=": "384615000000", - "TuZg5qwILprTrtRjSGR2dKzQ11rIIr0GK-DTTV4oZNQ=": "383553000000", - "TuwLcZ9jdalgTCsBi2Lqj_QoN0T9XZQb9tvcA274aJM=": "3501716000000", - "Tv8yfH30faV5FWQo9cUBI8JXtfzyQwEKoA-vcET6o2A=": "5245509000000", - "TvBJrJ57eL2wql43o__0EoURS_l8MWHcOCnTUrYubWU=": "27820754000000", - "TvIbdM-UTXnHvVBKtISRBM1dg-1aRXU9pBXWUUt0DZ0=": "8352730000000", - "Tvdn9qC545LHGrOcjbicYpo-VsHUQ19YANEnSZcegpM=": "1246889000000", - "TwKy9rhgDYrmApEYYIno0_-f5Axbtg_n4EzwWU5jTyc=": "421951000000", - "TwLSJCOGr_UhQGLJj8wW_VC_RJqGjiF42UK7eyfGSIk=": "19651356000000", - "TxP0IWtj_qIFcEMp2n3zZR5M70LbeG5DGzrZ30fxbTc=": "946002000000", - "Tx_123dwWpxnSz7alHsfMItnM22dwrm6bXd5EaewTig=": "416901000000", - "TxrSSY32j3E9kpoIQQLutxAM92BmVg_QCJMVDHs37Jk=": "1389724000000", - "TxubSzw31e_Quw-K47mh7T8jjhRuyDwyF73iRstdIx0=": "14013443000000", - "TxzB4X2FF3doaISiN8gmNB1lq3_Te3bK53fno-QKt3k=": "3749999000000", - "TyFaA88F5gxUzMOTyEvAvuBI7no5ZSz5zt4E3VdHpBU=": "1692307000000", - "TyVYP3JJivSRcZz5h1cEyjCCVCRvq_IlHmViKBgdkaw=": "624999000000", - "TyaI7Ng8u29ZlUD6uXEvh_dfRloyMsuJ3lUahb1D6YQ=": "460489000000", - "TzD74Ktw8ZZ2Cn6hHD5OF25RNJWRm5UV7p6vkdBdiBM=": "3796506000000", - "TzMnK_-pS2G70ee48PS8AknZCVmSRolYyOLOqw0PPc4=": "416782000000", - "TzSKG5rOvHNbiDk2QwtKdOhKglADzUlopQun9DhsXp4=": "1858257000000", - "TzV5qr3ItJh0sEduXfDMWgp6mUdccfWRZOF8XIukvhI=": "384615000000", - "U-ApjSkJAdX-o8C4b202LDZX1L8IDu1CG1jYG6_jhmM=": "2090990000000", - "U-C7mTdjLbnD4fZXNYQdlnINpMp8mobnfvdWNdX_1LQ=": "906947000000", - "U-V8AyFMmfdgF5hJKSv0mjUBkxsaEseDJ3wPiFgM12Q=": "455196000000", - "U-ZK_bQFkUOy7d3-4hPXuAwoOel1_AY0YCU33MCHd6k=": "419727000000", - "U-kBbgpn0xQ1gIuLjSLq2tzyYyD6VF-VddUhY0q3DuU=": "422027000000", - "U-kqUeIB6UlbCEQ8KqGa7dzcdNZg622qha6NDtBug5Q=": "377916000000", - "U-mU9Oc6nzsLqDnF-Wk1FM5YFNINhyqfHutwiAKRYpY=": "9112001000000", - "U-tf7JDx_9iJEQkQPGXwTQdsdN89iRVuhhTH6IB6QiE=": "384615000000", - "U-udo7yDUs4JVhv0RI5iA7975ralHx0uOdNf_kyl6e8=": "3843061000000", - "U1BolbcOnnP4qOco1HZbcNzHIF0LuQLqHlRXkJT9eIE=": "3127183000000", - "U1Q5fiZuGtYRVqldMke_NSIEgi42ioMeP5jjE23iFSo=": "423370000000", - "U1bQpxzcraxj3mSG4N1Na5gf20PNDoPrURrKXZ0ghdQ=": "384605000000", - "U1m6fh8_9BiNlv9_S82utLX0euV8t5fsBdWJBphLl2s=": "359692000000", - "U1oyR6oXzBLIxPkWwo3CyxiHSdiO50iH60KNDq87H5o=": "422592000000", - "U23-yrdWCMjj0sHJMYQPsFZiZCD95V3h4zQiEd5ZzV8=": "769230000000", - "U32kC_-UAKT2HxvvEQ-YNIHdKpf5wV0UkMa4lAxn4nA=": "498912000000", - "U3EPcB_dIRlChCMpfgPS09yCNgM9X8TzNV86l7BaKVE=": "384615000000", - "U3TTYGvzo19gdM4b14kHMkvg3_ftO9XqzaX4Mk_8mfw=": "1154183000000", - "U3y9DfojeXsjvticKIty3CPYYmTmThn7HRHliWESu3c=": "382536000000", - "U47--PZg2UNiL5ghkz4UInGs8xGALTiqzaiq0RKwCuE=": "416559000000", - "U4EekdnUAG3ZwHfLSXzGB5pnRfgV-_FZ3vFmTcmXVoA=": "1362069000000", - "U4tEG1D05OVAO22uTVEYjEFWkUfz3mTHli8vujPGUf8=": "385507000000", - "U5EClb9NthAmHXZ9bTN3URkFmTdZeuqKNl9vkfij0j0=": "448357000000", - "U5i4_5PbaTrtYg3fcPmVnWQHoQ5XKDwfJkHwEvYOzCM=": "4166666000000", - "U60OU-E3UzM2T86Hl2M6BaKG65DIZ8tnzJpNGNVsnWc=": "2499999000000", - "U66Q4DYTf7um5E4p9BBps8IAQaTmgMmxU9uMEQT0x_0=": "463146000000", - "U6Evr-GCSW6S37Aqe3983IKylPAkZi18UXx2-70H6HA=": "422350000000", - "U6gsAeqJ4EVeydeAgKTHmoZBuTI5EeO6UgYYC2w_XsQ=": "405229000000", - "U6kZx2h1xa9xIcgzkEsxr8-OkgT-9JDu2Rw3ZCAwimo=": "4635586000000", - "U6o_5jQbpU3nCymCjiuCFPll7NHvErkSKa9hz1WchIc=": "426923000000", - "U6tyH3EXzAKLxi1k4Hxt_1Tw_ciYip_5Ctu1tiynl5w=": "676408000000", - "U7Qx7OtqL0XWYDEJLHBg4dvbJHUKOoMDWpreY_Id4Z8=": "418059000000", - "U7bPLCINdK34nPTZjLeBYqbYlHvWn9b7sJSuO9iIf4I=": "380620000000", - "U7kiTbLrHJldcsWhv1pmqZSEvh8zrWuCA2Z22yVmiUw=": "385465000000", - "U81PJlM7gN3rcM2_wtr-EQk2oJzmKRVv_rTP3liadok=": "448101000000", - "U8F_Vq-p3Wc3I6hl-Fnd5UHxY9aS9b4Pd6V7femC0Bw=": "2136365000000", - "U8kZtcez5UIJvGUv3_38lwJE3koECmCsedHx9356JGk=": "833333000000", - "U8zi8IdMF0IFdt6tDCOSaim_gYKztf9mmrNNlxRbG7E=": "378257000000", - "U9Ar94IjW0V9Hr0LG_-56vvqROfK1OZRgE3hEleG2Cs=": "384615000000", - "U9FDY9sDaO31kJMZjkLlV_Lnm4gaLtDVWQO4pXmqNGs=": "769230000000", - "U9FrGqie_gAoV338QbtzXlE7M2HiosvBqNdcYMEP8uE=": "386099000000", - "U9Wv1AYXiGYhijS2bHN8SSSf7y_qqwd-GXSZdA6JaOk=": "889356000000", - "U9tYPgsgslUc9yEdf7xO6eOfzDYc18TH6b4pRBCthbw=": "19459198000000", - "UAfZnLJmkyhTHXoVojEiCaKVHIHMuCNDYl845ANDEOE=": "383695000000", - "UAnPCDBXq4pdxvFBztPb-wWFQ0QZaQR9ZD2MKIQ8gEk=": "1525894000000", - "UBJ0rudgvvF_FjZUuA02VgbcmJrCX8vp-mNU1dXQxLg=": "3465711000000", - "UBUuQLPmgVlYOZXPCKft35k3XppQCBe0U_7xf2rBROI=": "1639504000000", - "UBr6cf1OyVApXs6rFpYGumvDetD9tA0ZX6rOogXXde4=": "385895000000", - "UBx3kGsbw_MsOgfRzfxUeCZXgQPNbvFm13B8Kcgs0l4=": "648410000000", - "UBxk1DxGsJQM7gFMeiz3E3dLcPMpuIDyEka9P6asNEI=": "8461538000000", - "UBznrkHjH12BDxeeVDLAgaxaf-SQd01hRL4UX8kgmgk=": "769230000000", - "UC7oEYIhQOY5w38IKJQ9PVZ503ffgPAXaxPaU0TX9yA=": "2525808000000", - "UC99c0JOorWmt_sYDJkIwl9UPTl0G7dTBt_S-Y45NGE=": "1388517000000", - "UCXyiE1VCh8ixc6It83RidO1AgOhHM9RXiYkldhqkH4=": "771858000000", - "UCtIIEP73loE7_mstCVhABWVr_NTnbnVTuRu9rXzUuc=": "388874000000", - "UD131Wik6o4uSKxlhSCx22JGNe4Um54SIe9xq0E65xg=": "384615000000", - "UDBfAXPnbbmUxhrwHubNjJP_lN8N3fR7SFhkFCz5KlQ=": "440291000000", - "UEObN3UtABFC9M3Kzxeji70_CS3CO2aZvET4fu0ocC4=": "384410000000", - "UEQasmuatkRdj-D07FaTdYdCJYXaMNOHqGKLpggeVn4=": "1879855000000", - "UF1XzRHoQszjPlbw_D6oou87gdJz3caoeYKBAtGNMl0=": "383553000000", - "UFCTgP4kA6BAyOuEDf3ys79dJUi58Z9_uK7CrOwaANM=": "384615000000", - "UFf4jme_qzaFG6nZmyvkcAAbFapYkFqbdI9Ah4sDQ8c=": "4169223000000", - "UFtcny72NXE-yFnAZ8yxnnKl7xfSLv5191-2T_7XHN4=": "2087534000000", - "UGFuCzOKpEINMyTMy-O3N1cebFFWdZHGmTmPZQVI5j0=": "1923076000000", - "UGOB-NpCIY1oh597EnnoKX5SoCYZp6F_tIcqCBlCDfc=": "1366800000000", - "UGRxY3izmR8tbWvaEHP2VO6-e-1ytXTQgH1fYctThHo=": "526076000000", - "UGWsXU87r-ak_Ji8dyeftgO_6oLx2hMLvWBvYvq5nBQ=": "414989000000", - "UGqooaqLEl_8ejZI99aq-AgaXBu8MF_je6-0bAylgrY=": "416666000000", - "UHGPafr_gmCTMMnx_qLrLYKlfNeXdeWLU-4RTEQYCmI=": "1377894000000", - "UHPtzukC0xli3-0KGBqhpKsa2WbIWIMptqHicFjHcn0=": "576915000000", - "UHQfcJ23rRwDbtGLK-EvKr_c_7gsaPHiYJ0f2PiZcA8=": "2267876000000", - "UHmgAYDEExgWrOX_Y8Kj6jiXalsuB2kwhV48XVYVCuI=": "413620000000", - "UI8o2d0WSrT9u_e0M6f6Mr5ikeKjxqHuN7YP3wLVtNc=": "4173355000000", - "UIl_eeJg06OcfYvsSSaossxvgIZK1FIVlITZM4XSkmQ=": "499999000000", - "UIrQXyxe_pSJVb190dye4jE_ozAYfyvNfq4Yk_obFxw=": "4178790000000", - "UJGXUNFlyrByr9DWfZdUZ_8HWG2kCNMg6oXGaLaw2CI=": "459419000000", - "UJG_vL-9KGKK1uFabTNXyV7bWAOkS7pwcIdvkGBfIHg=": "384261000000", - "UKGAfCmJ0epL0dZsFrdtCeljm_oc5T1AQa2Ih6sO8Dk=": "416666000000", - "UKfRR4z-mG8Awqe7ip1lN7MbcVXwoq95FqbAHlNA0Fs=": "1250011000000", - "ULAsEqaQYfgENPsu38C7-IKxz2x4pwhJ7SNEtc1-kpE=": "385509000000", - "ULIxaNOHDEGdpHCCqTrnW4dZOLMIdYg2r7X0UnHBGHw=": "457355000000", - "ULRImLaeJcmV122wzvHaiHyJUJBWMX-LeXbbtfdrV_w=": "417094000000", - "ULTU8mIkTDs7b4vnp7MXqzI3XaF09NlTi3Ivghq1LMM=": "411085000000", - "ULlJUnRfQpmTJffDF6rY7oXyxBU6Gs6RH4XvZuK7eCE=": "769230000000", - "UM3BTA_b4ylBDlEZSqJe2EmnNlwYLaXGerNmKrqpUS0=": "767106000000", - "UMIT7svYzWpQ6A71K_mye_MwJELKm0sO43DeSqB5lCs=": "4138988000000", - "UMpk2P45eBJn92I1dsD3Mldsj3Qz-T59_vqj8nwC--0=": "5461524000000", - "UMwoNfKzwvnny-gvr4wInOSbz--mRL_jfRxZyiw1uFo=": "1366800000000", - "UN3QJg99rJ-X4ZqRELOnaKGdqlnxP2MLKMofm-0ZNgs=": "18512971000000", - "UNa4tmgtiqn1EJv63kJxHNQMcGp6x17LoW6KSoCgOow=": "1882921000000", - "UNxdnw8JhKyVfE7VpluzSeYKsydG1K6KJndcf4oY2Sw=": "385507000000", - "UOB0S3_CjujM5pItyIO8F4VLpsUCoOejKmOjkDYF2sY=": "488631000000", - "UOKQWiWZ-eQW9ZvC43dxw8a6xv-TdiOHKkmtAcdHd1U=": "397332000000", - "UOU701FT6as5TlRHtFcBOjKjyIPMChK4fvYv5MdzZtc=": "381635000000", - "UPFjLXP2BY5c6BRQq8uhx643TEo70rAaZCu-3P-kjUY=": "831117000000", - "UPezFePS8RcCtCLkQk34TvSogOcpnoQE4-eHYlKy-kQ=": "458778000000", - "UPliZE9pXrr5g3Eo9nf7ny52xMy8ti8uF17QTzM9PiM=": "454545000000", - "UPr9eyY_YGY8wPSlnYD_qahi65_aQa8rcgZs46VTRZs=": "469811000000", - "UQ5r452MxiINSZOMnCCUt3vpfJ4I9m8ocHs-yqwbVOc=": "504260000000", - "UQR4pQ9BnOt5n_VU5QLFZY_JfVQuu7I6nfDH-01okFE=": "7123151000000", - "UQjBpyP69K_VPQW1DyNSuWuOKtzOojiuHOFl3rV3vD8=": "1922723000000", - "UQkO0vTOWEZczIn41dpvkCsaQIUhH6b8wji07d0oeRg=": "1350779000000", - "UQpIvEAy5H_WnaqgHYN7Yxr0xpCe04hCkX2KFEikeUw=": "385528000000", - "URoFmSd7XxTl3hOBgQD_fBbJn8qwC7r9Pxn9W0LeLkk=": "4572549000000", - "URyI9_0aJ9qnTRqBPwiM7FtzBy6nGpR-FHoEJt0w-yI=": "3621396000000", - "USZor7AVPy-L1hzfnn5lvLvQsUhcvI52nstgFg_MDtg=": "2291929000000", - "USe0WqRtvJmW2MFXMMlKCUV197OVnoEtYmMSwlY6PIc=": "454543000000", - "USnpHBzAL8hwYQVa-Up8q_kTQe4cpUzuC9ZPHbSI6Sg=": "451760000000", - "USp_k8JFXk2n1FLEga_pRaWp-Rrs8tJ4um7D1WRvs5o=": "385510000000", - "USy2FxkD_VFa8inVXM6srHIMMVa1ikSy0ajTxz2qkBU=": "471937000000", - "UT_5vQpKi2QmkwjhrHZmbfhlMJD_JZiQ0GXILYGw55Q=": "1256564000000", - "UUS2I2ZquT8oPjRzf5VZo0qOleqYC2dr3haNAzJcgYY=": "416666000000", - "UV4GuyJarqKezZ9nR5UNvnQOLwVTss7W05_ck5WbwKU=": "384072000000", - "UV7MNYcZYAuyPSfyQ-XKWwCjRfU959wyFuW5_47Jlpw=": "12499999000000", - "UVexFudrSs2huhmsc7w-DKGAxaFgJ9WTB7pxscQlWCg=": "393019000000", - "UVhxOReZEBd2UfFzNSBnA7iqCoXDpqi2uakEI-i7gDc=": "2537908000000", - "UVpdmkh2aZxyX-gUpyBqrboHNaxuv01F4HjQCjkJ8Rg=": "385505000000", - "UVwKGtwUQnXXkhhieqUfqRfg5_znPsfoewOgWJB2d_4=": "383488000000", - "UW6dNMA51YL-5bCqcZKGR7kjekW1rCSSjWbxHWdtiyE=": "603447000000", - "UWMidlyTryZu6K8jewJ52OKOxhP4E6v69VZjBdqGCPw=": "424007000000", - "UWV5ivveaZsI6fxWZJ6cxSWjsFRHZ_Hl8dj4DlfJ1K8=": "425636000000", - "UWokLLCiuk1IDLTguz_EmBCSAaC1twBWWOoZBtRrT9E=": "1374999000000", - "UWt1BpiRL3_dq2Rf0PE2VvgGH7A_QDsDjxfnnFe4hAo=": "384615000000", - "UXYcJwh_P2tEI29d4U8Jk1O2vp-ljhM9T3d2whUUJ1o=": "466466000000", - "UXi3JAz8AtFNKxFYk7kBQ7bmifdove_EZreLP-VoXsc=": "1877283000000", - "UXrX0RT6kxMEqRywKI8tTrgpoCWOETASbHPv_LKj8UQ=": "402407000000", - "UXs15pTWYivwGEMdX1-gm_fBVRdB-wFTQOMAgYh4Y18=": "1233257000000", - "UXyui-KdOIOaACRWw54EPFFcRdbMOb0CBN1z2nZ11zk=": "456774000000", - "UYG9AwyE2FUxIE9kfFZcfvK-YJaf3sfyPosEYM0tZZM=": "619999000000", - "UYa5o1EH3DiJm2csZ_UEMajqojKaXtkpbVRFxkE5zAI=": "538266000000", - "UYbTazWQqjAgXH6RfzHbtYEdfZIWjxDtC0w-OOAOVyg=": "908051000000", - "UZr1aJUeDSci_uUC1bcvt-Q3eI4IUKt2Rzqu-y_dpRI=": "1270111000000", - "U_XPwnaRV-yz2exy6g2QfU_hKz4xsDo4iz4Eb60y16w=": "381767000000", - "U_dS7NDtBhAsVCBCwvejwUdLm0ROieBPpvchfwKP5ZY=": "3758700000000", - "Ua7MEer5P2isZ7bcJKYuYB1NdnVaZ2OAZJ5JANI2js4=": "950594000000", - "UaIDTTQX-2N2_IdWoecn2fUUOQlpQfk653SsUJhjyUc=": "692307000000", - "UaO2fFbXIBJvbpi_w6vQ6pSQ5un5KGj9aDlnGMa27fM=": "769180000000", - "UaPcoot8cKL0jD9aZ7-rNq4skBQb1F9qbLpwcNLJbs8=": "384615000000", - "UaRf8xjX12klxL_FEk5b4MBE_5oHcn2DRNBEXhKHQg4=": "585471000000", - "UalOboKAIvlykSCpaj8sW_w3U0QvF9r2-qt041PALZQ=": "771572000000", - "UbxLFovID639IPmwnjpXfMTvhQn7qU04GmIvLZsNzTg=": "768328000000", - "UcI57xyZjqlsf0EzfdUGc_kip6tcKuQCk_ToXDLwuWc=": "384615000000", - "UcQ4KZ7GmZkPeuk7idzAPG2X8bUUVD4x7whl6Lot-9I=": "384615000000", - "UckCINfSt89JKQYO4FwEIEH7WyrvQigtfOVEMhkOIjs=": "482124000000", - "Ucu1xUGg1egZh0hyXefdrV2fFSdwwjgPZQOVdxiGFEo=": "376736000000", - "UdR8dO-j5-boTtP579DSjBmLRp0Pk6rnTbuxEHPAOFs=": "1688787000000", - "UeM81E7DaaMQZwa7UPH_U-hZ4fY7Ea_QzmmgnD43FSE=": "2037666000000", - "UeZjQnt6ofx9QGtKgfe1_ndKYFT-lxBn2DfvWNpAHPY=": "463193000000", - "UenTYf2tZNoNsMEEqaXLknE6DAxbvaDWGj7CpJRJeg0=": "5551585000000", - "Uf60d9vWEUswjwdulTk3HNM8OmqbUwR6BQ7sQfYKpPI=": "384254000000", - "UfDEQXj7MFAjXzp8w-oTJmfi_k8kyAiY5vo7wgTUhVk=": "1013718000000", - "UfWYS8z8aGLG3gPE-S4Mz0s7lorPpbVAfpaVAUbLjUc=": "769230000000", - "UfwGdXU7H57pPm3yW-giVTh6oYvpioFIECGCnWoHvaI=": "641599000000", - "Ug4E4RnnN-_-STvrgvpl5eOXRcZzSDPWyYDJ8JYABvw=": "4144089000000", - "UgOLMcjiCBTTD_CiRTOz0gumSizqq_DNiljGMBhDJgc=": "648774000000", - "UhOyvN6Z-CLbhSTv7S7EDwteyNu8OJOZGvWoFJwdhTs=": "524432000000", - "UhQHcLHF1heoSIOvh2-OAkaP6flfz1BjJY7pfasRYRk=": "1476346000000", - "Uhe0IrL-z-Oaj93uErWh3SPT_sO3Ksi1QTiEKhqPeAo=": "385224000000", - "UhobtaCiy_OeaoT7XwYOOZU8iMwHmtRoT7z2w--5fJA=": "411085000000", - "UhrZDeJ_zqC3hXdGdkPhkndN2XDboI0axpwb1cfFSCQ=": "1994427000000", - "UiZg38W52wbB5qvE2jszF5fAL9rXbGFj9HxXApa8y_w=": "696009000000", - "UimSuJ61qadOcP8I74X1ieap18YbbbwPtqoBTbZ35ug=": "390975000000", - "Uinq1-5bwSYn1nMGDTfNdOCrbTJ3vy4QhKxm4VZ_uyE=": "567449000000", - "UiqsBvYggGax5EjEYIm0PaogChtYKixs4wHhyHIUMh8=": "384594000000", - "UjN5wFnOnmgcoj2yrwi2cZKioVe5nEzJ_yLOQ82AK30=": "392734000000", - "UjvkmC0QodF5VGKXXPqfpluiAWEawgOAHDWCW6DBWoI=": "1366800000000", - "Uk5Ag_J9R7e0ycD69AcB-LRihv7FF4X3Lbt0LGCDiKA=": "423370000000", - "UkELCV7nB7ME-QKA2SOT9LXhlI6s7AhKhHWuIa8ZTCs=": "498758000000", - "UkhSGIeOPl4OIMel1VJITDhFlRPfOhNMgohhfUj1mz0=": "654299000000", - "UkxEhLoyKWd3BraUK0aR1dtTlAS1NdXbydeAVwK9rXI=": "7565566000000", - "Ul8KxFM5r4yHJLVmP6M7NWhoB8bDawDUkXvX5do_CVU=": "576875000000", - "Ul9WD0EeYfRL0Qi5_BueEFMZ5n3AY-o3xcoz9FvSCFc=": "897549000000", - "UlECYtyQQiaEqg8aDNi8LpDtPWHxrjfJzBkCRQiJ2UI=": "460445000000", - "UlKR8geVktv9uOVmNgVDW6XawaqfhYZQZCxxGHAlCWM=": "379946000000", - "UlLXlH4-vn3R5Ntt0yQ23oomBJwyQqBizVtDkovHlWU=": "384615000000", - "UlsDKwT13fy8F5TQbjC5YoWX_DKzIWyZf4LU7tVrVew=": "384904000000", - "UmLCj7fni2acIEGfx3GoXOc__KbQn47tE7d8MiDab4s=": "1625155000000", - "UmZz49dcQNO2A37p5u8QCiT9Tvb-6EWaSK85sgZDQ90=": "452774000000", - "UmerpKDkIIbMPmSI7oaCEWTrt4UlT_0CVg9pYGnHeRw=": "383934000000", - "UmpMxfTakxVW-M7KPUSYgTNR_p-kI6u9L1_Rq6VeE94=": "380818000000", - "Un2Sg1b8ER2tp7xqO0-6yLMozkGv41Yxcz5v6NgWJw8=": "384615000000", - "UnEcouWj1WbwID15gwNjFWtoGCt2qojw3MqNfnegOL0=": "1156518000000", - "UnS36TzBc8i-WcXbbgqUJT3mA6WdU1yK1vMAK5eSp0A=": "2202734000000", - "UnlEegD823CuiDppuF2ZYDQHKBUyI3gBVzgBaGb10Ek=": "384615000000", - "UnpYWojCNwlL-xFqeuswmQm61As9a_-UnxXQqrzLInU=": "792307000000", - "Uofa7B__dfE_xYrsCo6KdcCkOwRVqdzhGZdMbxiM_wY=": "384615000000", - "UosWcvOgJGkSkMA93o49393X1GUFDitGC5CTYOIpHRU=": "393267000000", - "UpRSDH1l9eNgnqC87AYjj4t1q6_cYYsFQvHLEa05HAY=": "895446000000", - "UpYNCwBrEN6KdzvmVspLgl8vJkY0_7jzWHLX2idAN4g=": "766331000000", - "UpnfoJ9j_5s0SfenyVbsTe4QoQAGcH7uHS3OW3NoKtQ=": "1162716000000", - "Uq0gOD26i_QhKTy5CHTGM_SVeyffTV6Ir2dMFgyMLIo=": "1168375000000", - "Uq5he1MvlXBQtZ_RBWm7HwQBT81KJDqE9U9lYvv6rFo=": "3922333000000", - "UqV2sKYRtt3kU1pT-C-TBpNm2_-5Eg4xzy7KsYYK4wE=": "382133000000", - "UqpC_eVYbfKHOGvhjf54NzYXS9Z06aGgYRwAVCmkRpE=": "384615000000", - "UrLElx-uANsHREL7FYN3ROnL6586f53z4q7ENaUeFv8=": "384615000000", - "UrdSyfcQ-1RMCUTGFaUjFwe454M0QX16PqqFehIqoFo=": "3376960000000", - "Urrcwjcdkg4q7KoxFLZfooGeFCJm40u3eS8YoY_PK1Y=": "424482000000", - "UsCsFOn2hYBKo6PJ3KnEQC-1syuxhtirn6ox4KAqZYU=": "1897701000000", - "UssiuSdvQ3c7HJDXPd0OY_QYuZ0d2MgK60oe-HCx70E=": "16184524000000", - "Ut0bWaYMskNOMBboFmRDD_gRt0IvPJgzUGjpluYIQS8=": "684400000000", - "Uu2fvVv4eK76iquHC5pB8In-rgQmdYTEs6FjJah0Eck=": "4015222000000", - "Uu8PN-jbWKGw_XL7vVCx8THf-EcvD3dKJ3Cdd-F5imA=": "388604000000", - "UuEsj0TasmnaTVv0FWVIIfbjocDgXEQCc95Azvz8ELU=": "469318000000", - "UungguQNcXdPIR4CZOdTVmjlgSxP5gP3FF-b8-MQS6c=": "1624340000000", - "Uv-KXzmy09Y78ZPfToRulwWdQiJ9q0PVGhDXycJH2gE=": "384615000000", - "Uv6QEYRzoSVrgG364DvqPrbRtHl3Gccw-egUJDGUejg=": "2637613000000", - "UvSamsvJBb16b0P5R5tQQ-h8asMocI5J_wFGBKfcQ-g=": "4125973000000", - "UvqLdydhvEOf7wvtsuqY3P1ghgDP94S1K4Xn5gvmY5c=": "447058000000", - "Uvrcirha-kqIjm817FmNEIjWxAG5b1uLkrj6rWc_8W8=": "1168884000000", - "UwmQL41I9PbQ1ijB_tX256QadbCtrYmXbTRm4GXdwMg=": "472840000000", - "Ux5ZzJLEXHFcy25I37v145dQuP0pnmzUDPvoA0xn4VU=": "384615000000", - "Uxeo4eThs22ZnEeErK4glsYKOy1nBFS8C_5856qhE6k=": "766127000000", - "UyXDGNanq_Vtf6JJRDcWuNAK7j2sMjL--OuzUbLDp9s=": "460524000000", - "Uye4TIpIN6WS2QxKk0liz7tiAH2VwG7i86iSXpkBBA8=": "387690000000", - "UzF_WmtwJxG_V0iXfoWZXF91Qsy-_xAmcb3szQBy6-g=": "384615000000", - "V-0clivnAZjG2mONS2bsvMYkD9xy0JGU0QyPAHUsM28=": "417633000000", - "V-34dJ660H2PJ68BHwoH0bss8gaCoFg2TgfmQ-KD-t4=": "380298000000", - "V-T4luwSEroZoFz7uHcoDe_zG_xOotxB3elmY2AdVnE=": "4166666000000", - "V0GnWJ4nqOGKGYaVUyBmsCwGXtHThV_zQUpoyhECRlI=": "3852918000000", - "V0JN8VOf_uh0Eq2MeASM5q32-g3tNmbuBFsAiGO-XtY=": "863636000000", - "V0QBiqQ2jPfOnA0HENLe6_d8NsJgDxL9QK-gMOoe6fA=": "456369000000", - "V0_ePGxPFRvkOcc661zUr0x80QOVnG2ssXl2ycHCFn0=": "462320000000", - "V0j8taZ1lOVnQe19KUV5NcFwv8DKe8KtChOvMzYDCB0=": "18823942000000", - "V1HkJKyISwoAwBXcSBuwaFH0u3ec26qPX44AjCrVOAo=": "1144901000000", - "V1MZfUEaefyg5NRj1fZHj_PCoxRR_OQcComs7tSPErU=": "2499999000000", - "V1OttW6si4X0lx2dTF4ARg92fMoOwseEqZ4mulBAfxo=": "379260000000", - "V1PPps-4rPhg-tmV_i05rAS49nspeUrM-VrpciLver4=": "1131929000000", - "V1Y_NMPqF-SzKoIZ7c126JU1gzX2iiaMHUp_JxwQuy8=": "385507000000", - "V2CRf-XeQjoqHU7s7eMb0FcNuOmgi13BqpAcAPSNhRs=": "823859000000", - "V2HzKow0u9iygL8Xs7e_5vR1YuCm98t7c46U5uHX5kg=": "388356000000", - "V2nAeIhH3TVMAG6E-SSKkRoWW7_B7QewyBQOchJse08=": "395497000000", - "V2pLCt0dg5m_G5Ax6JWzBVZop7LSgmdq17oHb4OIwzI=": "770235000000", - "V4fupqoRPcL0JJBq8VlwMo7kyIowdKKyVw-vcJ57gVE=": "2733493000000", - "V4qvyItx90VkTbFfCdXWE6G373v81D6tmo2TodLQIts=": "844355000000", - "V4v2RITsoVmkGabE1HIHZFTLUtOeW3AbBJYoGAKh8b0=": "385507000000", - "V5QNzcTJt92zxV-0Y43Z4MuIN200Ff7TBcFtUtBJ7M8=": "532504000000", - "V5lq7S64SwYbrRovZ1sgJpI3TOoA8g2RMreN56efmPc=": "4001949000000", - "V60tT8okfc1NqUSAUVjEMT7bk9PF6LUXtHC3EG0GgF0=": "379260000000", - "V65b2tKex7ytUXulbmtliqlUkiSxbZbYlMcKri9hSO0=": "414989000000", - "V662FKausvBA10BVS23yh1ZPS9xAKqgztocO_QRp4Vc=": "3776928000000", - "V6I3NrQCTl9ftHJqkScD3kMtQf2EyFIRSP8mpNc532s=": "462146000000", - "V6NTlvTg_iYfPskJQU9VTkGXfG_wSDsEz3-ZP_Iec-o=": "828916000000", - "V7illMrqEblDCE8GkRcucZ6K19r0ijhAseVBZc7IpbY=": "625021000000", - "V7ivIZ7ZFVKQNRsTm-CAfDRVIsbJVbrlFWaf3ize0-4=": "500521000000", - "V7qx7GQc8--wluCB9QK09jNXbQNRykl_7FYsEyEiRMQ=": "384384000000", - "V87FwywvzcGAagF9eYlhEvEqW-FPfp_e1rfF_sn5qbE=": "416666000000", - "V8ICBz1alfmR13PpibVb_JLWi7S8YXG5WlR-Nubby3M=": "1212042000000", - "V8K8GBYhsEQz26IyoD1GZpE2o2imXroUkcIN6WDu1Dw=": "470553000000", - "V8cPHdnZGvzu8ihkJP1Te6tsvcS1_HMV3tioiCq0YO8=": "423284000000", - "V8kJgPPaiy8tsv0jDfnQaXq0W4qjjfLn04gg06faH4U=": "3254676000000", - "V8oHwA5ce3XTWSV4u3agxK2ZdFqaXNjhllusv1GpK0A=": "755057000000", - "V8orGFFBg1V6S7h5UVqSK60D4XRMv_EenWHSynTkq08=": "703293000000", - "V9HzFhdhDYP5vtPSIwwsBQWMM8fsSxXqn_2vgLw0Mgs=": "411085000000", - "VA29kemGQ2BlaQsjkdQjeoVA_kWqAq1VVuXMCnQKB1g=": "4166666000000", - "VA3TOblhncl3U9fFt6o0XhahF2TIkVJuJ_tV2z0ds18=": "404714000000", - "VAQF3wq2NSmtjy2pD2Ot94LT09mrLN1eNt1gE_2yhEM=": "416673000000", - "VAUouEmPlR7nkmtXd8rmPY_3BAmtYzCQ-3bRtXUxCG4=": "1892615000000", - "VAeFxP4OexxJlXqpux2t069_M31Wq4UIpOWp6zfLWY8=": "384631000000", - "VAjxE44_TxdRmXuKYzFYhd5GTx_KfPLnP1VP0CizJDw=": "385505000000", - "VB5VS7Cpgu4MVt56_8kF2Mh7Fz6caGtp9CoYKxGZjCo=": "1759925000000", - "VBPaQE23jt8pylNVb4CA0ch_GX4Jigd7ZF3s-4iCoIk=": "382479000000", - "VButF9IwYLzNl8kMbnjweeL3i9c0hZOEqnOWmPL1p3c=": "4090348000000", - "VC67fmh3QWHz-vX63QZg1E2E29eZUP8LZZOPsQ6rK54=": "1629719000000", - "VCGzAYNE5g2ngMRBWHWP5a5Ujfc4TGgr3l7ShvqLL4M=": "387617000000", - "VCRU9k9NoUgkHPaEbCt2xyWZ_WF0zLCvW9jfYHXbv_4=": "2692307000000", - "VCWfYnMzFsFkjGrKf3E2akx_qYPtHrRjHqveVvEk8B8=": "416666000000", - "VC_gzn4nPg5X8waVIgHCwHyu9wuG1Xvhrjv1Bm2GzyI=": "416666000000", - "VCfMx9Efojx0rQdHZ-Xx0PExace2ldbVRs5SFqcvf5E=": "416673000000", - "VCunRNkqjAHYj7gAYmrM9iSSipfQTBoEfyVZpVNY6OM=": "384615000000", - "VD76_Li8Dxt5p6ebQBz6vqc6YsozImAmIDfg55_Bstg=": "405229000000", - "VDCzgO97TtKOSg2OY7tqBI3IVIhftuierkXt2Zse9g8=": "906558000000", - "VDDHOGsFF2mcCzhiIGY8plLkKwky2056Ogb5mH6Culo=": "454545000000", - "VDKUZsmDX2NdycVudx7MA2xW5AnFhVVhiv76ADLEbQ0=": "769230000000", - "VDjPkj1G2WOzSTZYPYwHtecgoUaEDLASt9cR7rK-dtE=": "626923000000", - "VEXIrgHU30tsAZ3XLxR5crWClxqSWkIu72BztM3Y-k0=": "423177000000", - "VEXUk9om-gdAiInhVyn4-22Si7fSUX7CpYXqSlxzLQc=": "38550901000000", - "VEYLoODg8Aq_KUCE7XRRbCamIFQnW_dY3SmBKFFINZ0=": "769230000000", - "VE_8btwna7tnYW0LStu7Q1d042uiRy-cggz_LuS9n58=": "415631000000", - "VEoOUJxBoNguKpMNlbX80cldF7PMMzGV7ZxW_wssUPs=": "382165000000", - "VErRMAhhcBby25mm4Za_3XlGIMviv1iVgv_l7kz1pN4=": "383733000000", - "VFcr9N79rU7UxDNTXL9Bwoa-PUAZTMRpfQd10sxGz_c=": "2556525000000", - "VFeeCgp_8Y_UR4vfq10rrYtT5dO8UJNXk7a8u5evsX0=": "713625000000", - "VFqz34HIoPTWFeZh6Js6Jjx4k1AKM3h4h6JJoWPdEPs=": "454545000000", - "VIOFAc6YBzU8q6zjmzI-bl3FJNh7ukZv8tUi52DrcbY=": "846741000000", - "VIlh40RlCyiMjfBatu5p7-5Wd-n2P-zQXiT5nR50GFM=": "416666000000", - "VIm7xLMxUq9fnOv3-bnC-vT8R7TGN__sugvtwW0CI68=": "1249754000000", - "VIrLxIzZSIORDMpTB0R5hcjA9Fbe8-YLTg70FbtNdMI=": "416666000000", - "VJ8iv3KEknFpNDpTRUysZy9QrT8eYv9fL6de3jJVACY=": "382483000000", - "VJE62GLzb6KYq9Ihi9GRIr9hdWkEbviQ94iBJ0Tw9FM=": "1927528000000", - "VJXpdiF5oNpXciAAyJW0yWf6lwPeBBWJ7r4GdvR0YWM=": "499999000000", - "VKBL1KuxeRH5tEtOXaP6rT2AU9ZMGTCInFPOJM0hmaw=": "983799000000", - "VKNXIjNZ7U_wkNYRqTXc7BbpWOJacONNN0JTPRHNNgM=": "769882000000", - "VKPOvvpdaiIWor1Bsw0NhTCP8fr9Zid_iXXYC414oLs=": "1153846000000", - "VKrpxm_1d2a1OWXWIoZCeu732QbEduU_XDf7GvO8WbE=": "454545000000", - "VLTt4f3zcFZkIgaPuau_bWIzFi9l3FaLWGE44w64hHQ=": "385507000000", - "VLZcWMmMe0b0vcKU_Uej4gZaXP2zNVdJywXoYKfWC2c=": "4026000000000", - "VLjnNw0QW2-glgprpmOOHmB06Nz_y8s3I60bI-RKYU0=": "1196011000000", - "VLoKsrRTv-x7Sj_ODDBZuKlgpzT-pQIbq7rUnSQ10UY=": "385507000000", - "VMVx5mmDHQfIDUa8KUNHaOZW9gi2mUA8ykHzKdOo1v4=": "1038990000000", - "VMWp4lGy7hRq8VRhuF8kL5pQpFSrqMrcIg6o9uqN3pY=": "1923076000000", - "VMfwud07--Y0akmNiC1PMEc6cDFiUr9evbcOAipIRNc=": "894454000000", - "VMhwfn9tQzsDob77J2fEJYpC9o5_6B2P0WCNuc2xkvM=": "810455000000", - "VNHMEYkwTLj6fQqGMf8YcWJ9LukG_5Pub1AQQ_veC5A=": "588869000000", - "VNcwQDRKvTh18P8-pnhEeuD2lMWaRnGui-4J7o9mEQI=": "462146000000", - "VNrNzUTmEyGjiNyJnU5WAIrdQ11d9Q3Ce9j4oEEpj7I=": "1156520000000", - "VNvgmRSnbwiC3rpVgY55n32osZSMCI19Iw6bB92Mlv0=": "541376000000", - "VOYbxqutKqmhScXnoi-6yQzNqgVWQJ5cGeiHtq3cgp0=": "385153000000", - "VOd_r2jZO51AY6N2aFn_05udoucnTdIh0imXBZ-ezoA=": "385507000000", - "VP0iXlwL0CMW9cp8Ikfpa3OSM8FdNK-I-1S1qiL4_O8=": "383197000000", - "VPNRTSEzn_9woKyiv9NNyGNUalJUcW2ds3lx9l6v-jY=": "407469000000", - "VPRQnHZoLYia5pEDdCBnnQ2pYMNXrUprVqzyGfvBsso=": "32338450000000", - "VQ_2xE-KbTPRurVBnBeKXKkbxRl98r_Rup-U-0clykg=": "692307000000", - "VQk47Uh4IQ2FRMsIBf7B0StB8ezfvs35jKwwuGIwAj0=": "536047000000", - "VQmQUeI4YU8E1hLPDfeMHIBczCAX5K310avt456Q0sw=": "1153846000000", - "VQuO8-ClHyllv4ErCUxRt1X2UgvHkFOI-4cJyUx2y_0=": "384615000000", - "VR5V3M5isTXEzzjWlOzT19rqBOcEr2A_Y5OJ4QM5C3o=": "1134504000000", - "VRS_UyY917URHvqFEScbj3TTeYMcNMb4I3uEfuMhCEA=": "384615000000", - "VRgWysN5Y0syI6eM4UI6tb3jKgs9sFxWRadpnMHJ2ow=": "381632000000", - "VSszP2oX_65-d38RaZMGYTmxYewUZU6wuGuFZDjO9oc=": "423679000000", - "VTAh2byHmhkgXSgKi4vsavXnZSLShlzqq0U7WBW99BU=": "468923000000", - "VTfA7d1N3Kai8t9sSUYfDcwYYB5L3Qxmh-YLRrASvec=": "415629000000", - "VTiuICQtcQk0BACaMO9RPaQiX107e9Ed45Vej3GgQuU=": "458982000000", - "VTj26JAn5rwZljfdT_ObNqsQdehtCoZTaPPBmS-D0J8=": "387216000000", - "VTjsVgDorijHesX5KGdjlKrPNULpargBp6FqWayOOLI=": "499907000000", - "VUStFS2yZ9HQ4oMaVyPQAP9CULH36OzJsWi0_L3bqJ4=": "731217000000", - "VUbR7rYmgHmHQPwNZt3ziSlgZCz3BLrRLO0OOETOp0s=": "385510000000", - "VVOqXCM3rDgDHULSm3C10kGOWiPEqcC6L2S1nQr9iN0=": "453981000000", - "VVc9Xsjz03JhobwrcbfZwleB8Se93NhijB2vghizfew=": "378090000000", - "VW43NkFhlkaX-Lg1JBbGioylEG5jEpDUKAAyUi1Qkwo=": "3790313000000", - "VW9vsmGVwjmRe_HPtSqwz8DW0LPpAYUmB6_rW-6-DK0=": "498093000000", - "VWCcuYnbgLn_1ldMuXqmKRbnMmFs6yuk3akCmpqUAs8=": "765925000000", - "VWjOAWSJxxoG8Cmo-qo_JI83Hc4x-EUziCb4Syw4XV8=": "382394000000", - "VXfEgNlbVPn60ZqAtnqfq-C5DQTV4fqJ-awicX_WuT4=": "459105000000", - "VXjDsXD2KGSPYTgWBqLhcYBMZ7evuep6W6Sy2zuvLWo=": "4165782000000", - "VY6F-N8mhCMNQHOrsqnWRU_fwpFAd8AQozJtnQPPI0M=": "468609000000", - "VYCaBTI9fc6VKAsXvey5UvWMJQosudmMhXkS_8QS7jk=": "647762000000", - "VYefOPMl6fCjl9Oj9VFCA5ptUdVC0xuXxE5s6c9oZEU=": "458262000000", - "VYs6R2fifcneLKez_jF2RNvGdmF57kygKnImhNpj-1I=": "1935352000000", - "VZGtO6SDD1pLG3kcxhcuBcihcBOo4dnLQk6D9LozgA0=": "393616000000", - "VZNcblkgKpXvJpUcB8DzYKG25fB5pudN6eOsezRsSFs=": "4524370000000", - "VZwtDfqc0AwyhVz5MnmOlPBdlT5usy1Ws8g-wZEy_Po=": "576923000000", - "V_6MgG5LTWuXw-pPmnJOuLizZM4RSpC3QpX7x3VxJtk=": "545058000000", - "V_9K4y_OW3PpT2EgCPqJaSzN_SP2R8AdaVcbah5hhYQ=": "556085000000", - "V_wfW8SybcNCNRWRxVNbcz327bJYKoGzpk5DBYZ4ZyA=": "769230000000", - "V_yhXKRPFWrId-oZe4DuoVFeUrzAnCG4d34uQTlT96M=": "384615000000", - "Va8h43_7VKvQ8lCCJTqy3rcLvirhr0EgdiUp-MxkfvM=": "384615000000", - "VaADK-9KyRcwdLHZOFLEfh6LFyXs40-hwinIuNzyxO8=": "384615000000", - "VaJF58mIIj49zaYGzq8bnt5svpJ6knE9FbtnZD2gBJw=": "384615000000", - "VacXUG8owWVPIg16z6pYDlEl55OKNK8DbAFfC9G5JmA=": "1153846000000", - "Vb9EK9J-8kOnjiXrdu56niFgdysOV87UhtWjEeimp0s=": "1153856000000", - "VbRm-9QYqgm_kLzMh7v7KNONxEsqWhUu9mBaSoeivEk=": "7472057000000", - "Vbv_ovtDQu-mLNMxeFpCvpl9pH8VV2EDrZAN7pscwlA=": "367830000000", - "VczgcH9djg5CuhJz1bwmoujDpbMwtwjrKWh9M8dAHmU=": "385209000000", - "VdMI0qkgAOwvyLV-M7siItl-yJxCMlJ5aQ3EvtZxt8I=": "5012427000000", - "VdTCWvwv9WBj66zsPanKM9aUI87fLaGCjJOiqomUD8Q=": "384615000000", - "Ve4hcumLK6dC7EzHaMlf_b2AfXvq_-HWnbmzUXuDKUY=": "462622000000", - "VeEhWEfSRKO0ixxhOkzF8oKkSUyNuWeo5X5ZN8nGGMg=": "383472000000", - "VeFiIGssicbWkILdTR9p0oaJ9V9_NjoBzvtyZvx51KE=": "488135000000", - "VeKafH2qUZVHjMR1Mz9sTrJaUTagE7qvN4mD6NquFwA=": "583638000000", - "VeSjbM5blJtqiJhtIqw8FvCSvQazmBctLoBgrjSeN6k=": "524553000000", - "VeTNCbPzZzloM8raKM8rEpjwvzZIDGy3qbzlAAR18n0=": "416666000000", - "VeUzwQAeEnlB7B6Pt58opoI8F3yN6tRpPGToQm3EbP4=": "2391335000000", - "VevaOv6OmqTsxCjJVeC7decML-kgdFjPydTuJrnpuyI=": "384478000000", - "VfTtvKMS2pVYCJvPKo47jf9weXNGbrvu9lWj_a5Iu5U=": "423339000000", - "Vg6qonh4roFT9fDBMpKuR8sGwyVrbjHE214kVS0eipM=": "384615000000", - "VgTP0jLLgu0IVnxjvYXVZBJS1ojCt0x8TT0DGWo1mSo=": "4233446000000", - "VgljlxV4AOiCmIZt2smyGKrA6BX1wECnOQi3vwJEEyQ=": "378010000000", - "VhBp6oabPmsgu1xH_gNgdM92-TK6eeSaZ60wVwDmZfE=": "767923000000", - "VhEpsbpRESo-cBs3VeP-rXSEttwcgqFNhBF_3A-FbG0=": "495359000000", - "VhprsdGm9T26eSIh9UV53Wscp8usoYqFL8edjnrdWjU=": "451014000000", - "Vi7uRsxhBEoWSuNCgbKFR189l9vv1w59QPsZfkzvenc=": "374878000000", - "VipgzVFfe3R90HBD0jGnM28Ay9KLS6CJIoBLWXUoTtw=": "390530000000", - "ViyhxlrApci-YLg4wqWgZwZ0o8aOxxcLPzsTLdcPwU8=": "416424000000", - "VjKVQuy9IkqeRsm6ZbKkDcYl4SCEvyuOxqE_vDfQ4W4=": "414405000000", - "VjQE5btFaBZTYO4VR2H6tTOkuyLvdhlNtjPs4p3ZAkI=": "380589000000", - "VjR3SRiaCMw7YsTXfRe0xP2NuqcWL0JqDsXyagYtJ5o=": "2114239000000", - "VkCiLZhFvVOPbNnx8ljRo5MKSjaz99o0HKgK-rwzPig=": "916545000000", - "VkYAkBWkXSrtKOD05EWoeIWf4N_I___XnHX9fNt0fAA=": "4000000000000", - "Vkxthl0snzwfrYkK6SUBP0IR66uEAtuXh4w0MBY2IYY=": "3846153000000", - "Vl6hWSdUIrVXFS7xQ3eFY4XKu6PsGRkjOlVl4Czu8zs=": "381635000000", - "VlMcQqMbYM9xJT8sV928e4RRQVqNJtxrKqM0pKZAw0U=": "636539000000", - "Vm45eSvBAUvbasbI2n3QRTiuNJBo3Vl2Zv1az5sTkMQ=": "3780062000000", - "Vm8pILX5aiRhaIRc4siggVOJeDK3BxjAA8bZl_IiITc=": "1272563000000", - "VmOhDNYKjkHyk0n3SV84zBthZ3_eZNKioFn9MlGU40E=": "1387699000000", - "VmbalpuL74YnamLzt7YLKev2Kv0cdi10-LCXyLhlz7U=": "504754000000", - "VmxND21U5_GKDkNT0BVgfctVyV-bbYgcJsdxX7VTfwo=": "3749635000000", - "VnBN9v-0xK8bwNBp4a_KhkjoSoEW7LRSFWZcn8ameXg=": "460124000000", - "VnbllZzl-7cYJYXb7PrRbnXH-DWGETNI7dN5HXMfeDE=": "3257127000000", - "VoK-u_Hr2DAsMEyh3zlUfUWsuw29JuVn7T2fhdr6UhY=": "451223000000", - "Vocq1Tc9DDmLO6dulClmsG0KV1-GCAxk9sghDX0LNTU=": "1153846000000", - "Voe0Ngsh4xTMzp9Hgu3mOAvPsJPnZnDzmSao65FOBfM=": "768403000000", - "VofAcw4heZOBCU1qsy5ZWQL2LjCsdKHF7N6I2oAxhuQ=": "5105896000000", - "VognYDX3FXTymjyXHlF9fyo18TytM5dm2QlZTZq8ulI=": "1353804000000", - "Vojt9k8VsWWJdbdcBzeT6akBwCFULGHrYSnmdb0VfgA=": "535855000000", - "VoqiF3-MztTMlSojormw-o-cbUbaB_Hn0Y4oqIU35qg=": "4999999000000", - "VotCLnEXYktCTuFAHucL71NBq4tWKXmP9xXESKz0_UU=": "355204000000", - "Vp8ILp7pZkmIE7EmtRBnxm6jjoE943bx0j5qUk5fyJg=": "1105945000000", - "VpQDPbu3uMMp21fpltjNOTFePOoLhPnM-YUL-Lm2rJo=": "12223836000000", - "VpaxSCe75RWuuma8nqT_aBo2zb-F7iS2XoKl5UsKuI0=": "453196000000", - "VpdA1nz9iPYN0tWXA5YTM2i1Ye3M-8iNdeEbuEuemf8=": "384095000000", - "VpkVwTFZcxDd9Um7fW_HkwCBuwy_Ne2wtsv5M7bIRHg=": "1252906000000", - "VpybMOheqSHVkJsUnIwpU0Dk4LFr7O6szNxhOA9amRA=": "384615000000", - "VqY5OtjbKKUMfdi_y_WoIpEc5dhND9bG0vWRoNcE-CA=": "2259668000000", - "Vr-5WozkVuy-9LRt2wWlV5w5__8-slnw-tRyRROOfQc=": "2296901000000", - "VrNDKXl_iTXfGjk3eqp2KOKc9Pw_6GrqmbFI1Z5OKTg=": "1317145000000", - "VsJV0fJyXfF2fFpMpJh0yR_FWiAW18fkPMB4eI9TJaE=": "10416666000000", - "VsOLLNp8q56grZO4wjzIL_rpOLH4DW8e_fKLRA9jdNo=": "460896000000", - "VsOxPC0vwAah8mhaMUyrgDWMsnoPzh_GqOaTLugPJ1M=": "1580672000000", - "VsSTaOOd6Jr24JUvN3n3ENDYaLkshRS5deaBB39K0N8=": "1349423000000", - "Vsbcl-kuioZGulu7K9EgV4RbXOiAOarMtYTwFCzubp8=": "9350347000000", - "VsdLLVdikrZQ-kF-GF7HfL2m4BZMED4MszAokFy4k-A=": "385509000000", - "VtIqgyVVUH7bOBmiRpXTiN85H54XQOaCuZ-NGgO67u4=": "681818000000", - "VuTBhZHg_BlyGStawM_7osq1JUAuBjXl36LQ4HCveUQ=": "384615000000", - "Vv0BsZnN_Wqtw6Ocx8keARuu2H6A9Slt2T9olza4R0M=": "507660000000", - "VvCGxL6C4OMQBo7Z7lCGFZjM7624kkctqxWf9z71A_A=": "830923000000", - "Vv_Pwng5kzRD_O6-cZQUrsb_yG4xzLhI0c0DkIaaNNM=": "1542685000000", - "Vw4x4reMyzqu7RFbshAnbOC2I3NTYpnmMb7baC5YhfE=": "404758000000", - "Vw5DGwJgxSlLvJzO4HmlzKvMwJ_Fp4ZlV7AZt_cgG1Q=": "384615000000", - "Vw6hdc_hYpUFaA6mV5mMtTwNrvALV2lefMG4uH2mob8=": "446985000000", - "VwHmhh0xrJSAKmH25dJg2_zWy_G0G_2yaBgj7qI2oyg=": "576463000000", - "VwLeaJWttREkqBrGHt2OFwItq1LQmw5xdGr8rzSBlaU=": "810167000000", - "VwTytg60lrBDzSIr3367NY3kWvKNEkBsJYOIdSpiDTE=": "749999000000", - "VwVSGJD6yYGK_R1K33JJZQzCcrVxUrYwhdxoi6uPUgw=": "417636000000", - "VwisY3JyXnorSx8GK3N3VMLqG5VYJ5zfg5aWjGlitNE=": "414775000000", - "Vxbff8sxE8fG3qkIYyBHARcnfmlaFI_5jP3K0QtIYv0=": "462701000000", - "Vxk5nbiGtSItoObAcHGhi79I_0OmqYGtTqPyZmpdMQI=": "1513705000000", - "VyJSS696Iy6osOXT4SO5IXx9RDbjeMxSoEtDw_V7Arc=": "628328000000", - "VyXggLzXGNebpTb8-eGqOgPVq_oJN_lSLPLYQDUxQEI=": "653846000000", - "VzRQxPpWrn4F-6Pr8lkXx9DFI_4LFbhYKLm9gbhjwQY=": "769230000000", - "W-194H8a3TarKLAqzXtSfZX0a5O3ehmzbmvRRtAMNN8=": "1923076000000", - "W-2N2lGQ0aORw0-zYTa5a6CgjSqvmrQF2Ad_ms8FWeI=": "378611000000", - "W-4HLFYHh3iHoOrQZov3z7OCJztfaQkoBReiY2rvlDM=": "2096364000000", - "W-MkF99n3s8fquqTC7Y2Ld9AlhhdxVpGqSAjs5Qh8zw=": "18858682000000", - "W-fwfBnpfAeU7q1IVv-JeMszytmZ_qflHt-nXSH6rpE=": "8860783000000", - "W-pPiB1JzaGfbPcqwJ8i1lPDxYJ_NPSjRDKJze60JWU=": "5177637000000", - "W0baKn9Dsqrl-7adI0EC4b2CUYUnX2XkrmRPEjKTMt0=": "4246350000000", - "W11GDLlpd0297a7VwudpWaL6bsVVV0Q82X0MG-PMMjI=": "3681201000000", - "W1FSyQq_A_h6gk6W7-bjgrpOhYmagOYsM8m-xzRYm1c=": "788081000000", - "W1NL3cXix6-UzOgCyjnlDMIPknj2MaMXYJSedCrVO44=": "3410403000000", - "W1W0ZoQmGyerpp-qnEgsU0K8_y_w_BhtP6ApkD4K218=": "3640467000000", - "W1tM5589c53iKf5xEsW3zMkga0bY5OAHfcs9q6oCJPs=": "379203000000", - "W212sDMsjIPkG9lfKvtBS6sAuLrDZ3me_F9X1dpMFS8=": "384615000000", - "W21S5eiG-VGSQk_WLiAkaea_HxlY92hYJ9ekC2cDWVY=": "816925000000", - "W2GR7RllRvB2FT9sgZmTmcjfPt9sRSw3RtnKUqnxQYQ=": "384277000000", - "W2Orv4Ix1TN14DHULEq2KRLxiJH_gHA_u1Vh7qQE4uI=": "11348994000000", - "W2nOPMvBSXoKKo-9Nmsm9hUcmOJAHMMb_6Rw_eTRaXc=": "384695000000", - "W39gqN9Ll0VPEIScBkF_zQBXqcK9SbsAfuOLHt5meqY=": "378206000000", - "W3H5OInGhj3qp988eptD-AJ6l1YIplaaf68pcVAThbo=": "395499000000", - "W3LwUgaxcK8ismbFvEkAP62QSP7iWRFcS7F7dxZ3-bQ=": "4233705000000", - "W3kHQVClOhXxrrDERSQxozzS0QPXCBa5EQ7zZH-HFlg=": "3846041000000", - "W42eLMpAvyNbWx9k4zLjxcXdBCHe7TyKS5HME55mKfQ=": "6350849000000", - "W4EJ7ZCghB2tPxdrilF7s1zEb8qBas6UgWsZCR9pl-Y=": "384615000000", - "W4n7MC46gWMCcCVoawsvshHbRWhMIpp_C7QeMMWIbYA=": "413226000000", - "W4rNMQSlbejKIyYPZ6XlY3ahiG9yEroxghK8luwxjYw=": "385509000000", - "W4xkZlamglgpDgXSeVXaWK9JZl33opHtq-7UdybfKoA=": "6869158000000", - "W5OFa3poTHGe24kOD18ImLtV-nH9MO3BFiKN-MYV9Ng=": "384615000000", - "W5ccPpppiMQVzbKSIiveqO5PvOmei1ZXl7plqSY4DBw=": "6533662000000", - "W5isIuR5eoe3MXX3wVe5VcWiyQPh4-mwuOBJpgnHeQc=": "3846153000000", - "W5mMoEm76ncaPHCoSP6Z__FAeacevy11JhP2r5T3Fbc=": "7097544000000", - "W6B85uoflOgBlbRQNnCOurr6ebqQaK0rRq1zEzi1X3E=": "384315000000", - "W6D4JaOAVpx2uqxvgq2KnFV-l5keSh1PKndYtOPBozs=": "2278000000000", - "W6DC5D8O6HiKKYUJmRfrho8ie0KeBbh8rcTuZYJKDzE=": "384782000000", - "W6dPtPIOygv0PDYvlh756R-u0qnUPfjC89nqROKwgik=": "2026079000000", - "W6kU61hFyA7jbOvAVmAWtfFNFN_f5Znw0YR3Q57pkcE=": "381767000000", - "W6nnkNp8mNeyQ7DYyaH5MkFji0cbwO-XB-_XgBZkQRE=": "1499999000000", - "W6wkLGkpQXvBpZInrFsxaVAEj9q82bGmjw-44zzFFjw=": "421393000000", - "W7OipwQOkMWzwpUE7R5J_BIGnLAz0133vwy8RdvHZhA=": "405357000000", - "W7PMxZ9w5s0u7CfqqeUTolS1NtVUaBbGg168FuuUgLU=": "903178000000", - "W7ft1dBYdixkwW11bnLYwO69c-hbi0qb7OUAR-8jusw=": "6278889000000", - "W7ikjo5iQFJxX-iI8W8gSIukzbPdL287E2MBXCW7lsg=": "457885000000", - "W7sWYbwpWkxHLVe3qbn4y3JooNkP0cHafFvpOJHOT4c=": "1693482000000", - "W7vmbmI0zOuBYVD7EIWHwIduO6IQe_OOn-Yq1SUwap4=": "1038461000000", - "W893D6qaXwFElU1Wht6Yll2PbOkYtluaIFx6MDPKPw0=": "7529372000000", - "W8u5Hl6v3ZHwjoRwf_X2_l_NC-0vJHN1aCUP4EvldTc=": "1522339000000", - "W8yIGTOwSi_5d6hLuBzq12aq1k_K32TNs7HYs3MmICI=": "462984000000", - "W9OGyPNLaQOvviEVXG76ZadLzS27NUi2-kgJ8BjCQ7w=": "1925698000000", - "W9WFl3xk9hCCN3bO6MsBYvLJaaaUk7TXq3bNLkqhznc=": "454275000000", - "W9fHucoM5TOinfAzMm5pdHF1t7yAAfaT2eM1zCRNDZo=": "379260000000", - "W9fgQJP2lwanUCT_0G-rwdV-m0IX0pODyb9X-wQdlFk=": "616791000000", - "W9m2v-TQXC8uI_H1L34UB21LNyoX8bdEtZLX8K3BHoE=": "473848000000", - "W9tsPAVL0kguHaQz8Dbh1o9O_qotaCgGtuHpUqGK5d4=": "407808000000", - "WAESGn9NVU73JvXYe7LqgnNpla1kE_GfEFSVV1VR8_E=": "459921000000", - "WBS5OiVRsSVpxvWEnXoAc2U8gBPzh0MLB5c-el4e7Ho=": "3806212000000", - "WBaGgGszv19xd20pvCh6eRvd3PqH3XKDJMxlWy6gXYg=": "381635000000", - "WBpoWm7npEtvjR_NSzx27GIJ_y4tA9TppPCTdn20BKQ=": "384615000000", - "WBt1i79dKssTvCMZoHr_YXKkwIu9NY5WSX0Lblsh0ew=": "379203000000", - "WCBnt3od_cEecAGnTlLimYhH_78HkaGc7vQ7G3nmJjw=": "470116000000", - "WCOyUvnfHbcmCwgffKPLRt9HaO0t-I8mTW4wmXhQLdc=": "463439000000", - "WCewwfVakHAJCCcRFZT5kCxuQY0M5C7qYI4jYvBFiNQ=": "384615000000", - "WDCOkQxq5higjKJ021kl8fyBjMWXNfwmlwKVOo6SfmE=": "416666000000", - "WDMa4kgLXuTOGWyFnqJW79tjGlpceasXt0WQUixfER4=": "576923000000", - "WDbJJV_iMEh3t172D8UT7Z3MGQ-mt1-Ruk8TpaU4Xjk=": "1942114000000", - "WDhP2Ub_QukcLpRxuH-Bt7lVtu5uY5gX97SEnR7nOBQ=": "376454000000", - "WDnRNr24zQmkHNJp6W1_34BoprCYo9hy8bVkG05GprQ=": "576930000000", - "WEka3b3N3SYXLy9i67Uc7Ea8_NnPKZPXewgGTxdZ7Pg=": "1538461000000", - "WF41GlKLegYstBFVvCkJzhi-Yyr-mGfbCaSOo1Ad0AQ=": "4166666000000", - "WFKX5GwyoOn1Xp1crOztuCZW6mVe3mBCtTfmJ_uPLkw=": "17003535000000", - "WFiIonu8rIH8s2tKb93P4caQUcWutSqvCwUwXhuOpt4=": "751952000000", - "WG8rQo9SpE_h2vwyVFPL-5qcD2hmZ_QjRbP80ZkKzC0=": "383695000000", - "WGZ73u0AsL_yYxYJb41rpynvcefq5NIvUZYsVBmEIZw=": "500251000000", - "WGkc-RjZqFWNXM3A2E_EYYCD7cXeVd5wnq-kvDUc8IY=": "765373000000", - "WGsmuCEmNbtXzyixWM7JVHJry-jG758KPTsVKybPMqA=": "384063000000", - "WGzT21p0UjGdOFnKprpEWjrzSRqgXtpJpYA6_dYHZn8=": "453282000000", - "WH0GD6EzokjSt7uDsSai81qXIgYtrdn5z7uMOEgT7Mw=": "833979000000", - "WHdGqiZonCJzG8gsSEqcSG4ocsS0TfbrJPgJyObxul8=": "386418000000", - "WHtW1wX0m14TRx9L39KkKlo9IKcycnc415tU1CvZUuU=": "769230000000", - "WIAwrc4M0nZ8xkeitxy4O_JQEQ7Uh_6rS5uUjFY2MEw=": "377539000000", - "WIIpdqYe88MO80mh1PaCcSuxSOOCU6IAjuNVgRco138=": "381805000000", - "WIh1Ra8qkwOosEY_V6fow-TJZn_V43Ud3xiAdq2oRHg=": "384615000000", - "WJ6yg11l8y7sQS904Ql31UgMX3nsMrc7aPEJf0cU1f0=": "1156532000000", - "WJRBtNkp8KTic3P6_tSrCMlzGM1bIV1s3qaVOU9A0CM=": "10909090000000", - "WJXhtHFo1yhlXAU5QGHv_XxMHyzBVe-OdSri4T6SFQ0=": "462320000000", - "WJbKalGocxK5QsyUvJ4STepEZp9RMaldQBTyDUfDLGk=": "7740041000000", - "WJizNHjHIpqG26qy3mmWUJvJ4MIqHz97gfVEjkDfe1Y=": "460532000000", - "WKU9Dgpyd3HjExtTccQMuMAeO-hEe_DNjo1fcNvegzs=": "832869000000", - "WKVwEW1N4V221SzIxJJX3I_eTD0OjDwJ22pOOWsU_GI=": "423339000000", - "WKcaOLTKsulUzoQa4JidWWnSVk_gNKQTApBzLgyMSbM=": "497906000000", - "WKnpZMF1FDLYQLMdYHNF2_G7tc8JBYZnbA9O-eXauqs=": "18460519000000", - "WL-0pRn1PIQsKiD8G5usiuhvmFBoyaK_7hV7G2vMH7U=": "768527000000", - "WLDGVKmwgPvNZxTtN_lVxoHB6CS6WEOM1HdTkCXxO40=": "779722000000", - "WLaMiHgfwlw3WYhhRN_4pVrusp8bQ_0a_NhOWmoylxA=": "931449000000", - "WLdB8EIgDyhlBpSlIlBN5CnLMteIWCjOIzVB7-tDOuk=": "387062000000", - "WLiALQ59D0mb0s2_FvmUzl3x68VpXoql40vK5L3F3-4=": "570653000000", - "WM20DecQ1YayFsMV3ithPNDWzyPOAdIyzBydW1fZNiY=": "24356165000000", - "WM6hGwUA8s6JrvY9a9aroCABEQpDNi4sabQ16Wl5Jw8=": "385507000000", - "WMdkWL9sWYqozJHnqPjmTtmVF6yKPVTxfbKwW0VQ9E0=": "834965000000", - "WNC_oH2AkZyqxisZ8CPI5VPsFm2ul0k1o0pZbFQwFfs=": "4356972000000", - "WNGbYsyVuJdmk67YcPntPdJPz6kZh8etVncjKDlS3fg=": "1958333000000", - "WNJ2LOIYpRHIPiit18aW1oMMBZQLHKVGo5iLmNLELik=": "3999999000000", - "WNQzbnsum8b5D1WAHchA_F4Un30OmhWuGXz1Fu1mcYQ=": "469693000000", - "WNWkWS8GvXiqokIJrxG9SgBzh8Ne2oJ1F11lWGyTEI0=": "9401467000000", - "WNa-5fGEIhgLwxihP0DqJQfRMRN4B2o71W-QfX0h8Lo=": "418405000000", - "WNb3_S7H6EtwnfISv2R71MxdyhTPh-QPYRJWSL4BUl8=": "458897000000", - "WNdBlF8c5uJIkt8mhLeMEigwHiCobrH18XmUGyla2A0=": "1919945000000", - "WNirKNJh6v6mZMapH7iLvsvNQTkdDf-MzBGQuggfnMs=": "2081444000000", - "WOAyFtwABE2iUYDXkq2BGNudT9PJR7HPCdwle82Jr9I=": "769230000000", - "WODdwBIVYpGzDxa7QjU5LuBmcSPu455B3rmPg3cMvFw=": "473331000000", - "WO_PzzD1mfu-GPkMuDlrTmrB5ODDU0fV_8VUAYtGIwg=": "453998000000", - "WPpy_lFybh1-msOMmddCj8EkdAO0VW7LhxfzdahHxnI=": "385446000000", - "WPvNGiG-yYCaPbZkf4Rf0otA8RDspH1lpr69YZ9E0pA=": "1155974000000", - "WPyQfFOo-3F3UowK9f_ITZTOU1aI1NC2fixXTixtxTs=": "460910000000", - "WQ4G60CI0mCrR9nmPwATwvhChvyMwpupLYm-um1IBEk=": "1962122000000", - "WQNdc6NwbGA37kQYUMdFyCqk_OfCD6MbbnGRSrskXOk=": "15254845000000", - "WQTM4bQzYvVT4hxms9VF4ZLalQ7N0SYCdA8O4iY44HI=": "2007966000000", - "WQWwxp5xp-Nz4yYKgV9ml2sd0m0RhYcOe5DFVxbq5uM=": "645826000000", - "WQdXA_tXReeH4gj6qeS7Ve224oWefbO1K_p1VbO6bzo=": "3790675000000", - "WR39qA49oFOSnSQVANzSt7dmG6H0EOWgi_7OROVUm44=": "649822000000", - "WRRog3gd6tb3otq47F6irP4DLyVnDDEavlWDsCMcSVU=": "3282012000000", - "WSF6YrAx41wscRWJ0kZxSq3qfBVM234txoYWoKvaRuc=": "764788000000", - "WSid9kVZlZW8aITBIKrHTlT_WIL48HqS9v-w-oGsdrI=": "1173056000000", - "WStEhhKnA8BARPf8j7L3erCC_zePBevCdSunmpgHxlg=": "919047000000", - "WStfPgKcGhdzzpsQFmnAZzlJZFELWPQM1IHxXgL1OiA=": "385739000000", - "WU3oXVX9hbw_1t5H_wqSvXXLQBTvESXiW2hs5DXuZKI=": "499678000000", - "WUPFb1XsaB89SrRBg1BmwYLGYFvOolOIbh3J5zol-aM=": "7888266000000", - "WUVmGDUE7466I6kjstj1NK3CozLxWs9ozxDs0C78Vj4=": "800786000000", - "WUm5RWnd4i5s1Eq1Jvg6aanVlZC6x8ubTPVCjPWEjXo=": "463799000000", - "WVTln6w-sYQ11Hu84TQRo-asJjjrfC_OGS8G4jOsWhE=": "422561000000", - "WVlKZ3Awm1GZmiPNO-6Tt9KOdbzw55GH2vTgijCcsOk=": "422123000000", - "WVwwtyfsarlQVopdyicDfPgcMVIKCmThIbAtHhslrvY=": "411085000000", - "WW8fz3OXNiOGGk-J4DTRwp6NSqW8dDVm38_yYrDCQGA=": "422775000000", - "WWB54oAswl1vvYNZp7hLVo__4iaYvdv8J6BUhonisK4=": "769230000000", - "WWWSVuaKPFzW4YrBVjTeGmgiRasx2uM1NiJnbpZjmIw=": "670537000000", - "WXMhUCdsz1oUsbkmSS42x6sYa4Zbxh2VC8HWMEq9Mgk=": "388753000000", - "WXmzFOvBvFOi2t2VHaUVLdh4CIwrp7RF5WXWTvPlRDE=": "1233257000000", - "WXw5FluWr1qQXjm77jYuWXKROPwpJOze-RboH2eioMA=": "5197759000000", - "WYJx_Z_cxysF_7Xp-saaG7n84rSyZ7d4WeGv6ETUXqs=": "384615000000", - "WYa4KcLcSC1Y3rIN9mN6CRzFlgveefAEGZapoEAswcw=": "386166000000", - "WYgsWb24HC6HsXBVla2f4ahrpnWgHBClpXX9veZk3Zs=": "2080042000000", - "WZ-wqeyTmov38Q66_FPsgYUqwoXzz9C_18V3eEXZ-4U=": "1223899000000", - "WZHHg7pEqnP97FGg5homdLdV7UqFbovEnqTvll0S-5E=": "384615000000", - "WZLJQFP0gK21G-PTVM8ZG0CY8LoU3WqXM-N0BJIA3lQ=": "457566000000", - "WZUS4LTYIQtdAF8XXDxWwp0D4kU2WBYLwOyks-iUPUk=": "1923076000000", - "W_0ptmndgwIIQUdrQ26x1Nb2x5L3G70tNtK6IpWD5DY=": "381805000000", - "W_RpnO94M4pf2Q9yw5ZY1a_hE-LDapLxfcQdjJJWeWc=": "770269000000", - "W_Tteg8jn1k7vTeNNfJcR7HbAPEK5tWghHhbOM7glI4=": "3784043000000", - "W_ZMi8L4ZKtQauN0LHeo8cQDyL6ZVVWjzXAH8Pi58CQ=": "1224063000000", - "W_rxpiElzvcUQvjaGeUlTcUveKHWz8_h6h4BGWKoAHI=": "466657000000", - "Wa33tWLyFcC3kS12SEfMQD6O2YQnT61Smjftw6LWC0M=": "763607000000", - "WaWg-Ml9OmCJkDKxRcPei2_UUJAMy7QlQOSRtMg56WE=": "416901000000", - "WaX3RQv9TZTiw92gJ1kZC5_vqIHLVPsjb9eWCMffvo4=": "457716000000", - "Waww0mdTVLqd8seF6kuanElHlhcj6cUMTwPA8M4lnzk=": "379260000000", - "WbGxxQ9C2PlUR3Ti-_ZlFIpjeObcMyc2QBuaIaCpoqM=": "1249999000000", - "WbKiu_y_V7L6Xxxl7RLRHltka7GVj9IUg2hdulk_V7g=": "840121000000", - "WbQETrhsuTzmxA0exGPjN_XciYs1c7-d7rhf78cDqZo=": "450738000000", - "WbuLVevIlsNfTa3RRDkcqk7IyrJjVyr-P8s76MBEiCc=": "377664000000", - "WcOH_bG_bF9ZWAGf2pwnMhC9MXPPx69Mt_KLtQOOx_g=": "443320000000", - "WcdewEtzA4HrFuX-NVvVbKKuTeIFSANDsysuBz0haUc=": "678037000000", - "WcmSRqGWSy7XWzlMVXar4pWftZ-ILo54shpg8M__vaM=": "384615000000", - "WdHUIqdu5Fl_YfoQrEl3kEVx7JFe-OlzUMPvRvUPpUA=": "2083333000000", - "We9tPPUVk_XG4475b89KDwAtK_a3tKeELOmZK22Uty0=": "716860000000", - "WeDghlSkK5Jw-2W48-fYng8ctueKR79rjmt6vJu34jc=": "2096295000000", - "WebPFAxKXLUEJy7pOqVt0Q43jjZyaGqbCc8ux_Q-vVw=": "458395000000", - "Wfm7zRnL9tkxhKjC-NYdF4KLuhvS5g7bWX5uQu_CE8Q=": "909090000000", - "Wfp-ZKvldlkN6Y8g4ERsijQbSChNjggC46ZEYHuR7kQ=": "538461000000", - "WgA7ltHD1V9qDWgHBfGLZzw_5LEe9CNmsEFBqqBaKU4=": "2643898000000", - "WgLmZQg-fimhBsRlMLK8mLYL4ZNrOJwjFXzZnUkn5I4=": "385029000000", - "WgeVi56qFx3jSaZ02vUvR_puQ004mxabOg2I-W2Fspo=": "411085000000", - "Wh1AICRSdL8rjvVrGJ-QW617OaXgR54R2TPuYhheFQ0=": "519272000000", - "WhDQLWA61NTfyTA0GiPo7d0U525OxPQHW3u5JAiBWXM=": "1076886000000", - "WhdWMqvvFfgT2jqDyJLXCe0qeiT7Hw1nHmLPDNdvw54=": "9997917000000", - "Wi2GI4oq1eTqxK5RLa0zFL_-nfagFo2PgUkPmQW6iNQ=": "426656000000", - "WiPSI_w8W3LmsstHHNcA1zIRsDmc3Ov9GuMM_6nTly8=": "9982090000000", - "WiS1kCRkDFrAyUoFF98K2Wql0XzLomqx2zAAj51We-0=": "2039043000000", - "WighIHw_Jc2f1LWdR6HdrGVd7LK546Yh-oR8pajx8sk=": "388390000000", - "Wj6NRh18oy0TVNRN7Ij7logTugTYg5wohnt5zldDym8=": "8332394000000", - "Wj6spWww959wif5DdMIOf_NZtcWuCUb_a_2DZVUYa6E=": "703792000000", - "WjWdsdq6-4o0Duula23AckRypK9R8bl9cMtGWn8NWs8=": "820114000000", - "WjjtRT4HSmSPdlq4_IIwYTSwR99pfzR7I4vBJYtu8ps=": "728205000000", - "WjqIYRPkN0NbJnbIjrp8OogtfcWuUQBboRKmzfjqrio=": "463424000000", - "Wjr0f4kk-hKmv539OVIPJSez83RMlMHk74p7hN5LheE=": "489572000000", - "WkAhtiFFsY1iv10W1r7Xu6g3HtLeFzMjg6yb4L6VYKM=": "20833690000000", - "WkEEUBGRM_TGvGbbs3gPAEZwP08dmSM2XMJrGiNGF6E=": "393772000000", - "WkZCIF4B8XgH3zPH2obgELXE1Iu5vPBcu95S5WorAcE=": "906584000000", - "WlH1hRqJh_YZOz9RWrMmbkG5N4B6ZBn3Epq6sJnKf7c=": "750896000000", - "Wl_FOA2C0GBwEmwkdHIOhj6luptrJlG8lQqmQGfQxhU=": "933815000000", - "Wl_bKHVBkIT_iP57le5_SxuN_NKaleooaEYNZOY0r48=": "1792816000000", - "WllmUWldiV9PMnEDqOMfdNSrH7pvr6PStwuY7mKcDZM=": "2507224000000", - "Wm7GKn_nATTInc_xotmyJGL0hs7kE1jjqctqUTvrCz8=": "381331000000", - "WnI3c1q3sECfBwLw9KWbeb2nUTbXQZouIUo4IqIs654=": "1133483000000", - "WnMsWg07W_8vkG-Fy6VmeiWKmcZPuOsFAgy7aeRUp7I=": "625026000000", - "WnbqpPz0Pluzvj2nWx4nVNN45dj-W_JZVsFktENVQkE=": "385022000000", - "WndPemv7hFqjezI45hzKUVfonpFUhLTs9Fm_F1XaCRA=": "6387139000000", - "WneTry5MrkCawa-_DGPcBWqDJMZthOsTe7NtKZqCftM=": "3846153000000", - "WnkwKa1KP16iMuEhPlk5XEK8cPMgvWxLfEKIdap6Z6Y=": "384615000000", - "Wo08suoBQU-Or2g7oLOhyJD3rsO4WargiqWWckxF6Dg=": "462839000000", - "WoOvoW9f5fO_sYFkt9ElVjMULCWCMi_nK9DI514z8-I=": "385211000000", - "WofUFAhod4xCs_S1Wa7YD_E_0S0exYHJcl-iIDW5x7g=": "1270111000000", - "WogayZXNDCgkw8nkiPHYvHpqJH_4uRGM0qoXMVQusnw=": "378445000000", - "WpIHFMQuQ0MPNoh8TpgXvLEPGRP8aw-OQgex8sOvpj4=": "416666000000", - "WpM9ge3RvGblUzqvY83wxa_O_aoEaPjluDbk1_CyWvo=": "576129000000", - "WpQ1_KkYNR-BQGIyB1US_JK9Vbr_JKdS5XoSSG9AkWE=": "416666000000", - "WpgH39A2RXEwjmElmlluWGBXH1urIuKyLYTMyfP5oug=": "759898000000", - "Wpqz_mrYTXiD3zmA7eOG_rQvGVV5IPkpHmcbspi-xaA=": "502207000000", - "WpxyaMIOKFlL-y4pqdFu_kVsJ_sAIhWpyudN24pdpJ4=": "772470000000", - "WpzS3tctBfPBQ1pTfKDZg4VFv5GnkI4z05ITfQEv91c=": "455600000000", - "WqYKtDGrhfhaB1e9uHrjY6Q30HNb9KK6grLJrFopNnY=": "11538461000000", - "WqeKXELvgdWCbA7PnsWzsq02jd-6cq62qWe7UfF8pXU=": "2256916000000", - "WqgFAopd6zeVUG_x-jd1h5RNhntXyCb_YgbDiZklQew=": "384615000000", - "Wqrp0deFCuef3HrI6Ur5bT1HL5jLibORgQaShzjLJgE=": "417606000000", - "Wqx6j1K-QBy2cxENgXo7EGrheKMMu4wD8W2IusvOGkc=": "900604000000", - "Wr8X03TtxbeD2xZzh2lzdDd-TP-7emf36LPd1idbTHk=": "384615000000", - "WrHwe5g8vHotHrV3XCzFPriQjA07ESS_32Wv5TWAczA=": "8333475000000", - "WrRVfq_DhaR-rhxmGst1daziUiX7Kap27ZbSquVttBo=": "3730718000000", - "WrWhjfk4r803JOJeOEZcu8Ob9lySmaZHW8-WCwx210Y=": "3266355000000", - "Wraa2Sf0S8_kr3TaWCt68aZ4ls5O6eRUsBbCA5Z86Tw=": "455600000000", - "Ws1IweOZpqiQXz_ogOaHVmGykRhEmYRlOUK52Nn7Dyk=": "386517000000", - "Ws4oNxYTVLqKv5cNfEHrMySYYbccdrtnq7VEfooAFrk=": "406308000000", - "WsHN_QFClzO2eZsTLXUZJfDSMxiiG2mIpNCgS0Pm1Lg=": "384615000000", - "WsMzDSu28fkV3JwS693MnFwQO8IEG-9FqUXF6eAvZAA=": "1894212000000", - "WsS-ud1GAmn5oWzoXxqOcgXojNxbdgWtp8uJb76Wkzg=": "3846153000000", - "WtBOFAmL9CXWARQe_b1t-d8Pq-zXUNVJ7FzxNP6MvA0=": "4698375000000", - "Wtjdt5l_n3_ObEfb7KcT-eoz4ts2Rccs3h6oIPKY_KE=": "384954000000", - "WtxY7aUHW9_zWdO-OhD_zw7hfYC9mzA5nIMz26Nbqi4=": "938807000000", - "Wu731yDjmHXrQNVwV2YKyykPFDjwecxS7JXbF2zN8eI=": "3269230000000", - "Wusnf827Eyue5KUrXmcGtC-0Ez1Yck9hkTA1MW-5nf8=": "453900000000", - "WvOvJdFE1GPyzqdOnwnVDwokF06iZEKlT-y2Q--xrf0=": "1924973000000", - "WvZaEfMr9-gyCU1mTFHT8XgjKDBp5LwCCKytZf0WDfc=": "385614000000", - "Wvm3gzP3EFBGDdcAtzztBi9SEgMtta3a0mNO0mjjmEY=": "758689000000", - "WvtAOfLvFq42QFGOyhrs0OxAN4Hg7K-buIjtcd34D5M=": "384615000000", - "WvuI0AMa2IlNkar46rD5mYfyfYPW9sqitGW2XOWUMv8=": "2692307000000", - "WvvvqtfE6egJq5IBozMiiu5zY1eZuXrUdEF_sfyGol0=": "419975000000", - "WwHCb2TuMkeNoi2jA1vtxbHPrgzFmw1YyL3nGzq2mOw=": "769230000000", - "WwmkL88TSc6XfatpSjDQaGHRulUYzXcCg0JJIPSyXdc=": "381436000000", - "Wx-Wy7Hbp02HVLBey8oa22UlxGDVYmhuWV54sWIqS0M=": "454933000000", - "Wx63L5vIeWvTZAXO1OZnasgSbdN0WXPjoDVQjmzLjGw=": "378341000000", - "WxQ74dhQjyiRO69hTeUd3hTmqzPorlSA2RA1p-QyOTE=": "815527000000", - "Wxo7CBnm8gV835KlK6aCwCJF42W7HB4LF79_PrIWLhc=": "411085000000", - "WxszYfNG_2BVVKzpyKqy_5c6dLASVgrf4plXMKHCcdo=": "390975000000", - "WyDlCGtXFxSZ9w6V2TB6HewNFMfkrEGrrgsF7tBfNsU=": "384470000000", - "WyO-H9K5_gHI9OQ33bK2g9mLbMeq0bY_5b7q32IN7B0=": "385506000000", - "Wyqpc_ZEoyT73pCWDF414yXLSHIDX5gu7QsrY0VBkcY=": "893011000000", - "WyxGbT3Jg5XfQ6hFBwQeCGCoLODEFSIzJSB8RXxE8q0=": "469837000000", - "WzCt5-gvC8FUjYXO0KmNNfqtJ58ixe0GP6r8XHWK97I=": "388317000000", - "WzQXjldKs8rh1SDWhk8gtnB7eoFoBOehDtrFByivNcw=": "437624000000", - "WzyJQYQp3UYUFdK4NrzvDWBlSpkuwxV5H46Bv-JuR3Q=": "454742000000", - "X-fhH-yKPtYmxGyUqzZkFhQkk8nLThlqFUF-eroJ_cg=": "768842000000", - "X05XvTlV1Ivj7avWvsTajaqpeQGFurWDeyJmnvQWT4U=": "384615000000", - "X0LBlDjIZ1qQP7lM-BrQih4kTNemBwpfyaaofGOzhdE=": "464322000000", - "X1BzLtRxX8KWPaMPQotkSNF6hfvZgfbcK8EHYtKHt80=": "1233257000000", - "X1D0y5Fq_Lnc5xY41e0K5b91LBvbacU6tQCnzW1Z2ag=": "1156532000000", - "X1jgdZcJzAy01mXS1jLHnGoXN0CUirwTaqezuwDpJzI=": "4999999000000", - "X2iHvay2eFPg2bu0qOQFwxU2P76muqdNdU-hFOMkXsQ=": "381360000000", - "X325izdclTaCmSYlnVQrs_wMkOfVvcq8f4rIhdDsUkw=": "384615000000", - "X3GFos6dMe8r9sEgYBxqrEO_brDJSMxGDreh6kr0dNw=": "384615000000", - "X4235DRkMKkv1MXWbkuhD0dyQLxP0-nUMnwN3RlaxkQ=": "811058000000", - "X44LYXAscldZoFDtqp8zZ0DbL-Hvr3EWO21Nrj5ioF8=": "461142000000", - "X4ZqUlwKKP8I1KQsaoEtmVd5diaVDeTtXLLfhz_6ZDw=": "769230000000", - "X4ztG3MReqOp0IZom33YnT3e11r1fa-dgFJdm2kDyy4=": "424045000000", - "X5-g-W0xmxPzxsQGRQc41t1DBOQ-8jA-e2vZdDh2cFM=": "3307692000000", - "X5eH_Tq9JSjZ2q-vSJbksdkhumqgiU24H3WpCwZu8v0=": "1924295000000", - "X5ijfwSHfcRSCQFyme_sYD5qAWkCqetYzIyYJqhllI4=": "770570000000", - "X5rXdtp6nblelaOjgxag1NvLr17AQ8IkyQIg8SylVJE=": "624994000000", - "X6NOy8n_lgwEvWWsitgcWpdnGbdBqgkj0Bjr5lE1-Hk=": "463541000000", - "X6WZGDBkodkV2xqhZnaek4L-zWZuFWNGNqt413jV4yA=": "413151000000", - "X6YwT9RPK08j3LxRuw4XhxqwUqbQ4QKVW6K_uwTcvq4=": "546711000000", - "X6k8FIPdmt0Q8y-Ei3VG4c3NOT6wwE1ZWuASDnbdZfY=": "470776000000", - "X6nVk3SPb489fCptSK4lVLAwgtWsDzzNSrg4atFBKcs=": "386511000000", - "X789vxPO1gSnX7KFme7Cl1XGhGe57dDhiI2KYZx41eA=": "384615000000", - "X7IS_2xms9vLHtpEN0eYZ0U8Kr6YVpYvPx9IHuL1Xok=": "10390341000000", - "X8CzINkFCF1GkV4N9BG_4D9wh4J8asjTg3sh9RHETic=": "409116000000", - "X8FzmDTrPOmWS7dDsPr_9IVZ4alNMcgH9pPlwDvFKRo=": "1253906000000", - "X8Q5x8tNqVbMUTh3j8MqZ67ci3c691BvIyHWjC75kD8=": "463105000000", - "X8Rxsm4nf-NqsqkkkQ94kyg2dcHK5l6QZBlUoXQuIfc=": "8633081000000", - "X8qcKQfI_DuwbKynKd4yHx57O0Vnm1iocND3ZjlEZeo=": "9456573000000", - "X8w-n-xeZtxbueEhIO0JX1HbOoCiie_JLWk-jpzpzPk=": "422561000000", - "X99Nh5Tk7JKY92rDW5g3mw_-oZuxrlyNGOsOHIxV0r0=": "385035000000", - "X9oapjrq0ebR-Qp1XKRheor_ujkkWyWX58DNhZycYbg=": "454545000000", - "XAcgE-vRjgCOMy17V43ObpUx0ELANucz91RscctWymc=": "486218000000", - "XAoHkyJboKVehiFiqjXtdXw6_Cc4mJNGvtBZF3PGnVA=": "463219000000", - "XAxUJJ_bes9H8uy5J982Jbhf4PrYdfPuy5JRM_lKxhk=": "451775000000", - "XB8_6xPeWE-kgl6LkGNbvSwviJmoIrCXAg7t1lQZ9J4=": "1730769000000", - "XBnGW-jFaPj4rt4xr1Ns042LM64h8LFa2-ju23NXOhM=": "382846000000", - "XBodoADkDJ-34DCWOPhibhs9xrU-tN2ooCp_92AAdY8=": "384615000000", - "XBu4duje9gEC_N6Ikhivoa3Mj-1OvLivE0ivCoVhQOo=": "379260000000", - "XCB47VvvKOSrsyEFX-8oEcyOVvL5TojrnXq6iGyZ0xY=": "3907299000000", - "XCCBUwbfsYqHcsUU6a0uOE5FJQ9ayJd4m_U48Xw68SE=": "384615000000", - "XCMGBzPmWyrSM1dAuylAGoVXjwQMBa21JSpCezVi0AE=": "491110000000", - "XDRE88uW7QihwPqfCfPW0hgCzBKK8DpU0KTT10UtNLI=": "610287000000", - "XDbdYTlqF78DJ0UgWqfVS8HJm4bWs03dBcVN2ivGxBw=": "13265105000000", - "XDctqw8n28plMc_rgkZu7yATTbNiYLOeXpUKFnKlGvs=": "463541000000", - "XDqFHX1e4oCZxH_d3W9V_4ixvAuilsDFk5repBt8X0c=": "910488000000", - "XDsGKPQqVB3Lfb6hIjIJ-xW2-oevIXne-BtL1JKjoDY=": "22495688000000", - "XE3idGoHDRnj87wYe8raIyyYywHOvU00fUtAgIc63ZU=": "4999999000000", - "XF-wcZC5DTLIlXCIaaYDQ_4KxzHfD3XHVeHRXf_NhaI=": "385505000000", - "XFR8muMoBfHL1M_sHtoh2W8pnKhtgE-OucYueJliaks=": "8304015000000", - "XFd3d_FlU5IGx0iZtbsct37WYNAEfc2M-kMkqJUBf-g=": "384615000000", - "XFeRGMKMuddwZebJnawPihFqaE21o0uN2n4jkY1ar5U=": "406308000000", - "XFphAOngJ51S76h07k9DQhontuCsPEd-729UGqkwQ8A=": "769230000000", - "XFs_1_sx3Re4cuDsbNqzGdpttV2_wjMJ264CjGyE3eY=": "381454000000", - "XG8_XDsy8TtXuH8q4mcrOqo4DKY-M2oaU4ivLfO04Mw=": "380585000000", - "XGKBq43fKOr7Ma_750QOJoqfc97_HN2-5rrQuLgAm0M=": "762391000000", - "XGX45J8IoGYcXoGjCvYk8T0fRPlwNRPj_H8pY6AyCVQ=": "384615000000", - "XGbOhiz4aTrq_3ZJW5Jo6ZIeHBkuwp-jxk8Zue3OZ0w=": "764865000000", - "XH2PlnTVrXntt7ESoQOYSDBstGEPnpB3XpkKNNebnEA=": "380708000000", - "XHF4ZmtyJ_0OdEaouDbpoz6I7q92HbAstpcODtE9n_c=": "470531000000", - "XHIiLDG2URHa_FbW-qS5M7lNifeVQJbMzkZRNLFBE58=": "384615000000", - "XI3ppFwALJos9efei13DR_tm2a11k2zDLit-PmTKRis=": "384615000000", - "XIKpzxJbz_iCrwNjGZlZkGcJhDW9OIMMJv7VpSj3Ecg=": "825277000000", - "XIkQORhusOteZrCtGuoRjiySjOVNv9CXgsGadMBNxFQ=": "384615000000", - "XJ8K6EkcLwMBpRMnWVnRbjF-8jvhVP0LFT2S3HNNZVM=": "385973000000", - "XJTcFm5GVRjHKS85kT4hJxm3Fm71KwoD71-XrjRRLfw=": "391797000000", - "XKHYkOGTDILWxiPtES1w9jal2bCTOG7q9kmbj0jQKMY=": "2744663000000", - "XLGzz5vazvioudxTXIS23PQT6LN96rT2GGjDJLG6Kps=": "1250143000000", - "XLX1wlj3ZjROg583JrZaLR-7RET1BMWnFg9RskvRF3E=": "408021000000", - "XLci1zPaBT2VOBarLEXbWQxsTFJ2-xC9rrlCs4qiA2I=": "504471000000", - "XLlrSGMRE2wJa33sD0jLjrQT4jRTsx0WWfWOo06AUTY=": "748071000000", - "XM-lxJAcxPlUN8EdU7Oj7OCYgIPdPNqaLgvtxoKCQ4s=": "385506000000", - "XM4C337Ir8FR8EWTxtya5QlVaHBv_dsMOz_8JkXHzic=": "384615000000", - "XM6hEtAso2RGJkYVsZXSW9gxLW2nve7Xb_9zyyndiS4=": "1140748000000", - "XMTU1fPUSfDvKnZofOnjIbz7B3pcShmj3OZcJX_u-rQ=": "404875000000", - "XMZLqI9GatOtNNgFgjN_Jjv3i_ryHkfWlUBYbb_TdGQ=": "488082000000", - "XN0hnz4tspi0w58TX354Mgl0rlYRmur8fJmKrvdft4M=": "769230000000", - "XNQLnfWw_w6gsPozL68rP24Dr1lNlw6Z_8KDoo96pic=": "3505846000000", - "XNSYxyxJD--XYnBm2upANVDcMB6uBbcAf7ZmotCsKKM=": "1923076000000", - "XNWk-9LX0F-3rP9gcxHI3rftUlxhBhWMr2KE2m8XEMo=": "542774000000", - "XOfDcCwBz-anvpWxka2VQLp_hnH8ehn9lSDbQPJWfW8=": "674647000000", - "XPVH9mk5haNmLI1pl434FxtjfvwM7KPduGFqbABpvU0=": "1692731000000", - "XPcp4wysi2ZKrWcE9DOwWcF8cO74TqnL8_BoCBbiUWw=": "384615000000", - "XPiBwUQKOD4O_OYuTg630XMpNKZR9_qXUtH_SUoDCHw=": "416812000000", - "XPiXlEK9ptA1bi-MNYdBRiLu73jjcAEkEBHtEFD_abA=": "830923000000", - "XPjxmqrW0yTXnP4UA5nAZnDcaqXtfXWe7stSOVnHnqo=": "385506000000", - "XPzM-4K6Kj7sXNpAe535e3swQoUSE3EjtcQUV_gwXNI=": "961538000000", - "XQYSp25ltuFHfN_oftdN4TrlRlTwdVlEqaBbHjHzcGk=": "488135000000", - "XR3GbjHSHDwXMJYLp6sUteZWNpJzg7C52Yfpq1YbKTc=": "544715000000", - "XR7-_R3vGtH6NLg1fSZc7EMHcOkrN_WDjTtQLFawIEM=": "385528000000", - "XRr9Q_DWkvEuGkrZ4_Ofina9OxPs-uDJeT16EqwZsfc=": "810534000000", - "XRsU9vKCZwh0_7gpeHyTGxnlh7VdlD5x-YRfAJ88f9s=": "1256322000000", - "XS8qgs4y9U7kFwjXMeJPvvEAXYu2UzuiF4gD5qksR2I=": "392009000000", - "XSID9zCPztTykT1uJt2myg-8Y03bWRA_Rcc3cVNVJic=": "913466000000", - "XT-h1FE9u8x1pwF7Pgu-2Z3IUjqIbMey7U-V1xthTIg=": "1509204000000", - "XTfCCqdHsYRJck1nL1FvUFbOPOheEXnDgHcXr0pL_VA=": "4216365000000", - "XTnTDtxLRuJ4vKWq3WkwfziFc7LHQVvWry0ioTmgFfU=": "755958000000", - "XUAvK1EOdoeUk_onBKS3nIQ6MzajLrjOfYE1zcj9f44=": "463498000000", - "XUQSrGdUttHBe9IcozVtNdcGjYxH2c4Gc7M1TC3XcBw=": "10761363000000", - "XUZXS5Wsipp9oGw_EGzXf0lun7cx7sOzJsqk9Jfzntg=": "453057000000", - "XUeHrykZIwPnsFqPh6N2D2VuDem0EyuC4mf_epfZr88=": "2010962000000", - "XUf4TNvKjvZIaH7MygRFmZTyBYJfvAKSVryg77Qg8T0=": "416666000000", - "XUmTPJv2Z_Cv4CK7lxjuE8pf0d11269WjQQ_VZUvPYY=": "5093279000000", - "XUmh1gWsbj3FpFsAcTA1ZMfy6P71VthMYNuLdr-0dP8=": "385507000000", - "XVSerRJAAJZHOKmQJDnowm3pBZd_FmBNb5C3hqAxgbU=": "1927863000000", - "XW32ydK49a767MqxOrdEdMeXk0Uh2xLg3ZShDhz5Bic=": "385562000000", - "XWfdDvZHupMRXaSUkkuKY1ABV5PVEuSHjiEMWHiwmGM=": "1902568000000", - "XWvEyFvKgxsoJlUGd4-1UPgupQqebrpxx1hd9nNdxuA=": "414412000000", - "XXKefCAFIpsPi8SbeiMU7e9gsEeGJw53FgrG_U0MBA8=": "384604000000", - "XXPMOV2MtTdHMKaw7bt5sFBJ9vD2-CPsRUsr0eDi-_g=": "416666000000", - "XX_hubX3OWmKX5fonMzOKnr8bh59tOO734OkC8efDHk=": "30694729000000", - "XXfX_EiK2tSLP6vgP6xqAX6paT7uosen2NB1I95eW40=": "422216000000", - "XXmoB41_3OV5OGRoJzjwYEfujb6M3ida_GS1xI0y-IA=": "461319000000", - "XXstwwnZMLta_S-R8TcI-luLfEa5hu1mDYF--Bs0Sj8=": "415629000000", - "XY7PGIC8sIyIEOoIvmnKYU5pZD-KCF2BiJd-a_VBbY4=": "384678000000", - "XYJ8AxcXrJgXGik3dH2HC51bZJuy_EWNlGX4i5Rorlk=": "471839000000", - "XYTlTyd_M_vVPcxmVNLZlHc1ND12bVOzrOQOdTwsmDQ=": "758689000000", - "XYXITAHNwAk3IdodCDwr4or0C9onjXKE8wwFtJ0jRQk=": "461858000000", - "XYn5mSH79QMXVVQvSvTmPkSerw-ER22Op1s1Vsyivqg=": "1153846000000", - "XYqIvR2FxiDzSmWBAjD7Cu8SrdGq7WiR3_6MKZPNz_M=": "384615000000", - "XYsV_3r0PfwFVVDXc3pWql4kqFAmMB4KTEc8Ktb5DyY=": "1538461000000", - "XYskcn8ZPWW8ER6aR_R3It3UtZqSY4IcufJu_hk80Cc=": "416392000000", - "XZuh-mqDjd26uO3mwBPdFjU4vnowDC1grKXFvtmgmxw=": "1249999000000", - "XZvNMOFPi2p_Gkx3dQ8HzRtlKKjK_YxdfCzyRXrFKcg=": "464104000000", - "X_GMbVCreCmZ1t1mXIO9_K3PZ64P4jFTf70xD6akjO0=": "454586000000", - "X_NxWrUF_o3O6xslGX-XW_2IxEWYHky_Wrbf3PsI8C4=": "454318000000", - "X_RiGekxy7tV2Qo0-T5ej1eeRkONPJZNZWvbj6OkC6M=": "422561000000", - "X_al8y4vJ1LQPOu9Jha_JHY1KGO7DRw14PqRX5eGWh8=": "5833333000000", - "X_oYDjfD4zRrHrQDQfeyH3lGhl95_GsK-Q4qWbD5CwA=": "1363636000000", - "X_wtVYoJWNwaZGkA1n3KzaLq0FuMUT6HKWtbCpHjQMg=": "388549000000", - "XaFxIfjJi2Od5yy-SQ9khmYbdsQPJJ1k5kWHrMRayns=": "1250021000000", - "XapHDT2oOuEDYEbJSf0hwRATeZyODcd3W4q8eBRZOzc=": "424881000000", - "XawGQGM2VFiI5dX_Isgvdi3NK4eH5gSw53JpavOOt74=": "465433000000", - "XbLkanw6yRcrRTDihGm4oTnqb5B-j1DWDWPD0JILufM=": "1135800000000", - "Xbg6NNL2yq1c29POHu9qs7rh2xe_ruAOmLoSvtWT808=": "2918028000000", - "XbjMjRXB36tluNCDwXPhBguaExUnCuuxNPG8Y6GrC3Q=": "378385000000", - "Xc0Gy6VwOd40WfIeb2LNrdm-RmI3Paq6D2ZLh1FM8FE=": "384615000000", - "XcONWYuWr4uRpdCNhsBSw97q6TqJomEFGPVgDskazxU=": "384321000000", - "XcjeKDNf9CLpw6vE4hdwwTYddjURdcFv7edAolnoZqY=": "961538000000", - "Xck_1M2CzSupoiczGGo0A2QtNBIHJ8RDdeztgVPFn9A=": "451456000000", - "XdHqmOCQpNpt6fAuhZW3FVc5CacV1VXPT8lDr0ptceA=": "1153846000000", - "Xd_OZ_cDJwk-gX5wO0bmqHmfmD652jnQocbU82HDGQk=": "516817000000", - "Xdjb3dgzqFkTEW9af6Op8X7XY3w5s2l51Zsl0kWCY1E=": "384615000000", - "XeDlsfaXbeYdztIVPZ8A_Q0OlYZdGoG_RkZ6bSWiSOE=": "783778000000", - "Xf3EOMT431LQCqbKQ63dUi-5A3fbb3E7_RCIkaAmT_U=": "384615000000", - "XfLswIP9rwMrbo9FEnsrRC-WXS0s7OLcAEx_GtolNUs=": "2666580000000", - "XfNGiDAHBnw_ht6QtAqtc2QYcCsr4wlyCK7N0tBiY2E=": "769230000000", - "XfkNRDN49vk-g7YLWWtwjQOXhfqjZ8wFdb800McjF10=": "2299194000000", - "XfwzvHxFirn-0Xuf3dS6Jpiiq2CKTALCmgKBLm9dt84=": "6748433000000", - "Xg12XhcB4B5rrIxTjR1Zh7I-WcvnF1cFOmfhrzsmF7Y=": "461365000000", - "XgDDylNAa-wmA03B0FKcVtalZuMJVhkYdjZlWnBgMso=": "964248000000", - "XgXXAIuHpQjnwyE34IX2y-4h-zRqHEFKhbu6f2Cqlj0=": "385198000000", - "XgeTQdm5e4uT9bQBGfxJWRiOo_PYaOLGQ3Zk5VDsF4E=": "1373975000000", - "Xhg4CHzND453k__AiiuY_BDU6uy6mKdJQHbrg_VYUXc=": "1249999000000", - "Xi-vAwgHiukcTyjDu2S3AScMBpWvRrc6X3nxkRXmD2I=": "492837000000", - "XiJATGly7wkwzL32nl49Ya1du_Pk5ds4IAa7YfukAcU=": "651381000000", - "XitpJZvmvMO7q8bsKJhwKyL2FMvw9PFHAkucSWJXdgA=": "659188000000", - "Xj6f4sWOQQdpx-cjP7Ey8VqTEGnNaFdW5CO7-kqfoP4=": "578548000000", - "XjEHU0CNcOZuowVorrUSTnUm4jDLFKZPC6SUn9eUTtw=": "384902000000", - "XjZrpfQbv5rSYuOnAt50moAc-UVG-nsZjgMXjQEoJSA=": "13636363000000", - "XjeK7WVOyUAUsNKbKWAy1QSuGfSQE3orVsZ5GeACJKs=": "615384000000", - "XjolIrVeTMqZH9mWfeWHm4J2h54JGvZnBpWD5oaHgsc=": "473331000000", - "Xk8MkUx1MK6ZEk7vpk5xmKFg8IpAC5V488OLY4DvhLA=": "384615000000", - "XlWp-z6Dyiubmp_jyA0BXDqdC_3B4VqakfcjYgoxYPw=": "385505000000", - "XlgxKye1cxCk6twuXMsUZb9Jg5Jex5K3dzxNDbGEgSQ=": "441769000000", - "Xlsm5JoE0f64nPjwh5wT4RXyPe_UhE2ZlfJZ8wlNrbo=": "385047000000", - "Xm-2jd9JYeNf80ADxhOnsn9zZpYSii55IImOBR378oQ=": "381976000000", - "Xm-GBglQ-_EnA64A_7y4R46eOhifTDLd0JkEMrZCqDA=": "422561000000", - "Xm-VTrbREkplcbKn50tg11vk9sLmp7MosCRN6m_PJqw=": "1043281000000", - "XmFclIg-OnHFcF7-BUgelLMxFm7iC-KHzbL4hypGCFA=": "384615000000", - "XmLvWYCed0uuT3A-QbVEDfIQ5WaT7dcH30ttO63z7Z4=": "624999000000", - "Xm_MngK57sL7U3O3qul7iuPBcUwMqLeSdavVX6fxjEA=": "376837000000", - "XmpNWItsG4rrMCALgIihK5gj2H3wtSX4yW_Ev9oQN7o=": "450259000000", - "XmwwKQyG_IhNI1Z5koz07ub2B-MJP759IlsNYLI7F4E=": "1228050000000", - "XmzpK-P0IAvofPMp_Ve4w6sUFVTJQGBp8h3xhFE9N18=": "1153846000000", - "Xn9gjb3UbDwNMCAfLN16Yt7_ZLwBV_FGAO12Fn7z24A=": "763538000000", - "XnG6tyWWwUfGz6spW1qrCvapOxuIF1xr2QWS07h8-uU=": "893914000000", - "Xnbh6KRoK0QgkfmZougJKviaqMmEhosfG_SMdaOFQuE=": "1633257000000", - "Xo6UU_Yea9ywLwNkqsqDmijkmvn_AN6EIze08a0psg0=": "455402000000", - "XokmTMdPOU1z5pTWtU0YuKUZdA4UeJwLINdSFGTk-jU=": "384217000000", - "Xol5inh3nCy_U0-k79qhwXLBE28dw9Gy4T85TyyeOOc=": "377328000000", - "XotzrMqSthA58qnYhTxLTzzU-xUu-Ux60XYT7wt7bQA=": "384615000000", - "XpHKgirAapzg5zzMGyFACzGSfNGanqTmKDyKaQ1Cud8=": "419408000000", - "XppnQxEkNeRWQIRM-1c6CbACAwaMyY3qCnAfYcya7PI=": "449601000000", - "Xprn6ORHGEAHAugi8ghlL5Wv3M5X7pzznk9AW2vF-CE=": "385505000000", - "XqNBFYWxbW5ynRFer69b5fp75f4rh-VnZhG6Xv_gqDA=": "650761000000", - "XqO5-PYoBJQQM2xJN94eaUBxyqnb1CIJZq96Ia_4zc4=": "1030769000000", - "XqrQ4gEwFxQU6n4iIH7QGA1mX3ysc3nvnOZ5jS_skcE=": "3076923000000", - "Xrfkdb3x-9JKc1OwCQfrq_RvkT07iijY5JVsW6NoxdU=": "416666000000", - "Xs0u5Fednuw8y-IuV2I42DwV46psLJkFNLqksp_3zeE=": "384615000000", - "XsCMIKdNjQmsy8n-2WK2MtOeBPetv7baIdC4GGcV_2k=": "385229000000", - "XsMB1-bEIRVW6OkiGiKNrZDMQIsnpf4wfJvUyD1oL80=": "424923000000", - "XsUCtszAuPPRe3tk5DGzmnHU1vJybJc-R6i6bqNkv3I=": "909724000000", - "XsWOJcgNiAceUqiyG9WyxBZJ0d6JyxKBT-zxYoKSouU=": "384211000000", - "XsZGDtJctTc1R30LZedyFLEs5WA2Udpue9X9qJ1vQic=": "902469000000", - "XsjqZTAH60H6z2fq6KyK9Mj1T6FYdvH_sLNzttbTIuY=": "447983000000", - "XspJl2sd7heS-dkaYweSmAy8JS8mkEHu35wEGY5k07c=": "1648076000000", - "XssplbTgD5JTZAt509FgJPGDIbeXa9b9iIsxQU4oEwM=": "385505000000", - "Xst-FwT28Ua-wH1mSHsppRalRgVaWzwnZ8LLxHG1wtM=": "469825000000", - "XtZenXQ7BtGRJZKgqEEIV0IRvGAy7JwC3nMRhoNFCZM=": "416666000000", - "XtvyCpAcFnAOziEcHCXSC-D_-RjCA5-O4bnZOe8yYM4=": "385725000000", - "XvT7nmrGQps_8VLOVACydn1t2kdvyUUGlK1mQ9Gs6cI=": "1394356000000", - "Xvj3IsB-X4ml244pwKt-oW-1QZ3WP0ud7wpFJ75ARvs=": "390037000000", - "XvlKKEv3wdxxrIVSroTYdoirJ8q-suyWYaaWzYZ-FRY=": "4110858000000", - "XwQmbkw5Ga5k3mMMRaYLdppazA_V0p9oanqjmzVLP1w=": "2499999000000", - "XwVRUSVQUickCHPx0QYqf56BrGNX1v1wOyL5p7u3TV0=": "413365000000", - "XwZktDSL_wTT6vWWYY-bXcRA2_gVw8hCCIBnQbqoeaE=": "830439000000", - "XweJ3XyfXn4TZLXUseoYRKiVvgcuQ3XY5cVT1UnHtrw=": "1182197000000", - "XwkMnu9-OuNr2YYIVt66CDJhknSqMxV_rUFhcs_ICvI=": "1076916000000", - "Xx5TDyyjVVo1UB2ryS70WYTEyDubk2lo8VeoUp8dy8I=": "453082000000", - "XxBdo2t4JOpc8v1VzwBLvHtfzSvLAsdZYhsP9NMU2xc=": "387390000000", - "XxI3EUE1UIAadQjZw429TatjhJ5bcbjgJu11O2IGGus=": "389386000000", - "XxYqFhqCL__K9Qf_yMxrAmVv3WXHhr-gJn5QNK0NCDo=": "385506000000", - "XyLQTq7ZW-TU426fX16v1t_jcDHJw7inljCgw-2Sl6A=": "469988000000", - "XyYRLFhypzuSAGWtLl24jHZrvb9pBUGsONBzdVUP8I0=": "1667623000000", - "XyeQ-_D8KxFkf6uHTLPB-osxQF8Av4ZuCYG5cxp3EtQ=": "416666000000", - "XykE8XsXNLj4ucSrORf0pANTHf7rOriDSefpojWgWO8=": "415962000000", - "Xz--fEZaT0379Uz-sx04tc_BVBHGhFFt_bg2nE9BjfY=": "8690445000000", - "XzOeUpDOtYyz-P8k6NJYjSr_ieNFvl30YmmGAc0oFTk=": "384857000000", - "XzaT0ZoXM3EbNm7ya5zOinZop3GBQ7yN-qXF7VPfZVo=": "807630000000", - "Y-UWUu1UJti5nNgfhVwXwALNBaQ8_SbwvsUMJcURzr4=": "7443555000000", - "Y-bZvNahb6UVoIao_Pc43HT5D_AsWeJ2Xzrl3ARr8Lk=": "769230000000", - "Y-jIOMVAJ6BxzwObOXKv-YxP49i-Z4Y1LnlpLVT7siQ=": "536514000000", - "Y0-xNKac_2tF9wQIbmFshkSGTbCY_VBgbKKgyM7KNkc=": "2429028000000", - "Y0N_Hg6YIO0NXzzkJh8hBHFxEZDeuUMreXUHnCj7vGg=": "356788000000", - "Y0rDeK_LBPplV8nq5wjP_chOMR4PpGv0KjuEnIKBNrg=": "384615000000", - "Y15NoFJDnFiCKUo-i_BxMun2ULfwVBK00370YzY48gY=": "2691671000000", - "Y16kH_Ha73Q20f5AP-5oSDVNyZUAhrbf23oArX4wDgU=": "538444000000", - "Y2D-x15mQdgmAmlJqqlFRFmT1K7pP43pZpKs0vVgVtk=": "2533181000000", - "Y2KqRLf746rXGzMCG167vOzkerXhHQiMylNFb8IxV8c=": "390632000000", - "Y2MmmB7zVx731Vv3dyZhZPDsGnGb4LLaoc_jzrnBEps=": "496210000000", - "Y2VR6oJJlIIvDfBZbKvjA9IHllaIYFfJTeJEoUFFvrA=": "1153933000000", - "Y2jk2rsER26XieOft1vQTHuJ9AkbQzT-E1R2ZyDHznc=": "452341000000", - "Y2m41FadnfZiFRyC4xf10HiaK9nzs9iKg1Jg4MaV8oI=": "769307000000", - "Y2wKKp0bjFhktr9nymNKURtTIi_7cIkEsSbtqhOqLCQ=": "905988000000", - "Y3IDHnNAPTiuIzbUp9aayxibS5fyD5tyItOzVI8fEMA=": "769230000000", - "Y3It8ScSqW7JC5RR3gV73oiwKTpr5_JDsWndjpUkWt4=": "452104000000", - "Y3Ow5cxPrb5iJ4O9S6_YL6mVku9SZz54BGea6E4MbKs=": "10266024000000", - "Y3cVL8O3eZbj3poT1qOfUrq0bi9ecDOS39OQyP4r3pY=": "448838000000", - "Y3i_MzyQS3adBT9_GxwnC3o3Iu4JcjKt-rLCxXuEL70=": "1927525000000", - "Y3omyJD67YDSk8ywFSOC3aJpMFMnwUiAMiIrNp8zFq4=": "4098572000000", - "Y4bTRLqXR6OAL70gljF2JMIsh0yo2bOEhjv_TsbnJRU=": "384150000000", - "Y5AZfS0SVsBujqyinAZFtu-vQBjclCOFhHzqw4h5er8=": "407808000000", - "Y5fvkAPzkQMOhC8SZvB7YhZ9wVMEeEBQKMbcyVXSu7A=": "1636685000000", - "Y6DrnrBBeyLnO7olbilkp1fZJO5wPASdcNZExgSiYDQ=": "467231000000", - "Y6qM6VDH8jYTPwDxFX-hRrCOXK9VFkiM_AdT7FsV9DY=": "456319000000", - "Y75OQbZ4E9cC7tWn5pYmck_ECfAZnyh_gpL5OBWj1iw=": "455781000000", - "Y7JssOpppvAQN-J8LQEPBsXLKi_oDanPt6IU99mBI1w=": "454545000000", - "Y7Odt5T1iW3w6OCzhi3tvBo3yGICBkBEbFZuGSzf_Yk=": "2384394000000", - "Y7SSIv12_-W7Q6-heCaM7xjizLAs8JNaC1cIF30FsuY=": "470310000000", - "Y7_wFNjAcJDfuzMh8lDj97a1Cq9Jg6Ud5RnhKQ0vdP8=": "2257489000000", - "Y8-tLNc-tcHM8GQU4b53x5_w234xvgzJT3APGvTz6VA=": "1391513000000", - "Y82d5_ObOlyfQilEyKlhxy2S6G6J3k2_K3NXJpiDKDo=": "921144000000", - "Y89-r-ShAtnsUr6ZXqi85yr7pYu9XUXzTU4wJiT483Y=": "416666000000", - "Y8DXRQ24U9K5pxV2Qf24Rv4ymDhUtB_MefcDOF3pG8k=": "482124000000", - "Y8esuuIDRFsF-pfKerv_d-VTC5oJqOMATTuS92LbE1E=": "3807115000000", - "Y8fnrogG-YmshrWDuFZy9MEInMiBekYzv0LVqWrwORI=": "384112000000", - "Y8isxoyxC6xOPqk7KZcXMcjDJrdcmlcKoTF575idSbg=": "924820000000", - "Y8mJVctjzHmAKSXvW9k1ye2mqRlHXdKMo7Ef38sOVE4=": "462146000000", - "Y8tIJNL0_Cno8-KpAqwp_URGpEwZey20b3TrwnhMP88=": "384730000000", - "Y8vpCyjfi6GP0mSj7mYjVyS9ahSfUHC_HcEySJi6nc4=": "1666666000000", - "Y9-5ffRdlGFhLwquxQkhPAnI1w4meXE0ViI2HBHgP_A=": "385506000000", - "Y965E0FJ1NrIh4aFiKN7eK8Y01J5_C_DkMPmErBpCyw=": "755840000000", - "Y9FO3sX5eQqkjx9xKX9Xez6D0PWSAj7Y7LEsvEWTung=": "389421000000", - "Y9N90XIiy4fwtEH5H_72wgxcw6eOdPBhyIGYMI_rcPo=": "903496000000", - "Y9jS7qCsDAZTPJzZrHsBxmuG09zy958DDIfrmnX-n48=": "1818181000000", - "Y9rHBn3ScoTHL2ZquD4V0EE_PfLYgP2mbvABMfrXzMs=": "7256371000000", - "YALJTnYZx0Z74wFFKSDncOxq-hH5zjb9ri6oaL-5nIE=": "453736000000", - "YAqIR302j6Cm2ybKixzfPnqIq2sY1rfeac4C0m38Bok=": "385660000000", - "YBJpXtkNmnpjCwJ7xfqCNWpr1JQEOOUdK75Fair9-us=": "384111000000", - "YBROB_Bi1L38zT8y3Zn4xLGjZjCU7sm7I3hhgy3g0BA=": "1157593000000", - "YBb8LIROExvwk4wIrWpEsnEJ_9lHGRUdJFS8MOEkMrM=": "385506000000", - "YBnYWmgyKKLmG0FWteltYpCLw7aFra6-KQhx_xS2qFI=": "385189000000", - "YBx-wivf1f00JAYxsy34DswLXStgTk-bPOaHuXi-Afk=": "465433000000", - "YC-u0SuSdcDoAL-hBMTtr_UmCKfp8yjmLMMQBTFvsO4=": "353298000000", - "YCF2EnAhuHJv_LqURPXokrchtmWkSPUDBntbvFx0VwM=": "387115000000", - "YCInagu9D0ukKTWi0WRRY1YZqQDsWuWtH5k5Szpk09Q=": "1538987000000", - "YD8kW33G2uXY7aNL6esw2zB6wzyG_VXitsb3VAM4mf4=": "378561000000", - "YDAEtAPf31kBoN7PFemjBKOOhW4x8u9sjdsw_Q0-Zo4=": "1248097000000", - "YDMFiYe8Tl6Nepkot7eFlKXx4MnmHX4XwxWLudMAReM=": "2264332000000", - "YDSX5nkgPPJklaBuP_vFF6Wi-_oG8MJSECN6z3dLjgU=": "1908094000000", - "YE6bhzblzkfM-Kn5vv9Sr6aOkhj20CFefcgFzBYzw-I=": "2140514000000", - "YEWimCzUfu7Wl4IRh9meGI4b4o1bSfqKTqiPPhor2H8=": "764788000000", - "YEpsVTQrHw3RUbkp98d2Ljkn2jfH-W8UUafrK3a-USI=": "4174124000000", - "YErFxPMPYtQ_L7WYSxay-Bf2dTe2tB4SMDlb11IYzYw=": "488135000000", - "YFAPf7EXMil0IgXyAqSZa64tyN93xdydfsY1mBLXGzM=": "1159720000000", - "YFN-kYiK6xoGVoJNqpr9j8Rt7JH8zsnFZIdcRskNisw=": "1338544000000", - "YFbgc_4aVHnsl82FrTP8aXYpKYPiOUivb2mi4GMKeEw=": "457648000000", - "YFc6PeCdkkF-Cp93IqIiQdqwjSbr0HiaW0fzEbgiYuc=": "1750556000000", - "YFlI4krFRxGc-3DkgGoBr0ttW8C4pfESCXr8UDjlzFg=": "444665000000", - "YFrB79t1teMAws5wcLRwnHcBqOG1S5xR5dLUhq66B-g=": "1179588000000", - "YGHplh3TBAP-vjTQnObh0vNSfVHrfhidKjwQIQaxgLU=": "1131764000000", - "YGXGckBEr7mr0PAUqY_-UsX36fZDXvZPeqe6dwq3DJQ=": "381294000000", - "YGZ1sYFDOR9q9On_aQpOxylWN6ZKwWDrMe8rdnTzDTE=": "922309000000", - "YGhB38xHTqtG9t5bQLjyLf_NwJRKMJQTpa6vHw1LhJ8=": "2730761000000", - "YH-0Wu-4o84U-Q0mjt7UH8VU5RKB5-xxkNULFaI_Fv0=": "1161063000000", - "YHWW4i7kA2s8Gm5X3W43A1IP_3RdWLTbzhVPVEqLSI4=": "920582000000", - "YHZSg9kJ24B3ipQlcJ9kf-dKzvaazwTA1pzYO_Hwkxk=": "19236309000000", - "YHz582Ui9Rx8eCXCiTfMSIcmmBxtK4BZWk_LzLa2LO4=": "384160000000", - "YI-uSNOtyERr7f891mvD-rh5tB67uFkOV3ztgKL37Rk=": "384869000000", - "YIPvDxg7U-OADX9M-zs02zVFmwtRumU5iQcX9xHRQoc=": "416666000000", - "YIcLPUPh_g5X4CDaMU_2XyIlwIDbuq4rKDJjLq9375Y=": "584874000000", - "YIlJ3i0poWpWDbxwIfgQei4Zs861lfewLDniq4of-ng=": "411085000000", - "YJ0JZLn0A4z-e00HYPjR62hN7BX5EUByNwC0gFXxyOU=": "755868000000", - "YK0ILVE2xZx3xnLjvhVDaz6nHtkmmk_1XdC1SxQRtNk=": "504754000000", - "YKEB2jt8ho2qHgqk_-Al7kz7aQhTEOu9baBZUh1J4go=": "381632000000", - "YKOmTtmy5DHLmcCGZAv4o-fyWXnL2geBDp5zeFARhYM=": "1144304000000", - "YKsI_3zUgQXEdTlu3Z_Oe_fDiHNtSkj5iRcK5UVTdc0=": "1156517000000", - "YLFYoWTMl994KpGFvHYzY_HHsWA6sLv-xzwRhbhZEp4=": "384615000000", - "YLGNYS9sgA5cFks6IJpBTTy5GyUcYgTQtKQXsZXNX2w=": "398095000000", - "YLIm2KMM0z698GoukQwlF3BFojqk5TdizLPoPqpjCnM=": "393570000000", - "YLYIMLRGpTw4-hsfO_xCIeJ7ZZNXHY3YxEu3Zjgl3i4=": "2290886000000", - "YLut5lsqb_3qUrV2wvshYAc1p6kBCLe64JR2vjZFJLc=": "1956801000000", - "YM-VBD7bsxkwuv_nBCtteX6mYkRnq1LvBnlYVCIOx80=": "4007241000000", - "YM0dwRLSTA7JhaWYLWtHu-k3dhMqd5iKncP0YaRYy7Y=": "1142450000000", - "YMP-uGDKCBaR-EGR4ojWIhsMgpSq-X-nDMkZsN6fGXk=": "462146000000", - "YMtjwkru0z_AWibvoNnFUjAP_bMUGjZO9LcUgBgznxI=": "386288000000", - "YMtoDkNK9a81QltKpcmDGxfLoghEvwbyQRdEZZyjOPs=": "374327000000", - "YMzlv0r-HAK2XW75H5GpS8HG1y1Jpplz12srpVO3pz4=": "384741000000", - "YN1Ev6OqpJg-tgnV7h7ssy7PZt8h4S14ZajCnDK4K84=": "383644000000", - "YN6uBaGLMT0mrCR2X-kiauZF1O7ZipTqSSMqCFqxWvg=": "1175518000000", - "YNltTC3n7qMnMNfBPxCM5cN25Qaus97JCB1XOCceYoQ=": "1927528000000", - "YNm8_z-KODPymuBZaFDz6H2tOXdDRTVyQWJ1VOEN1xE=": "1573782000000", - "YO2X-eodNEl0Glx2sXd9d_BPAHoxJBxXJoN23EQBEK4=": "2274081000000", - "YOw6FQIYoBKPjQVzSD-6MAAFzR8S92Xu5KYcsfxq_9I=": "1250021000000", - "YP7iaoblMPrD17Vt0GCz0rWJ4VsND1c7FJS8nmZPydY=": "416673000000", - "YPSufEqfCysSVoy2FzwT8nzENs-FTkcKHp4dLvJL768=": "760231000000", - "YQ0ga_SS4E5-VkLKak7q-mvqP_vt8xm_9MKQvVRCC2I=": "384615000000", - "YQ6LUaPxZwl5FJwrtCRj1FYAm7LQ0xCEf_d5UOer5Do=": "426403000000", - "YQJnE_wN9Lv2hfKOB_8yHJSoHO9sjPagWSsEEqcLDFk=": "1164850000000", - "YQk9BORKWKwaekHBYiKsZMlLNjLbLG_wrEGcD9kJAJk=": "453783000000", - "YR6qR25qYfJ-PbKidYJw8A6_hc1kfalNEXZZPKigitY=": "390053000000", - "YRGVsPjkK-ba2OkzgkhYo8TqMxgaJA2TrYzyJEOEWOM=": "906627000000", - "YROUFsrSkz6dy7NzZUb3EvoKpJWYbYCcXjtLWs7-4r8=": "1363636000000", - "YSAeNOtwflVsXFTsZMLCLY8-wKB4EAYI_bdMDntZD-M=": "383903000000", - "YSDJZr2x1TV4kEDGZLH3x6-IJhesPxCmPnAk9TK2WWg=": "1374041000000", - "YSR2n4V5jTfmLHQky5U49v-iX1pPSvg_Sad0s5DCQaw=": "16197770000000", - "YSYaqKGgWLtEyD9hEOK7QZMBoo-JxFQ_S8migx1CFmc=": "777529000000", - "YTEjVrSxN4IJJNAISinruA8d1kqDkBr6VrVsdsKQqM0=": "379542000000", - "YTk_IqXaIFyi8LpD723uu1Jx5GWBdzt8OCSghdalarI=": "404015000000", - "YTmm-vscsR_BoUICWMPTHgVjMxgO0vr2GfLHaM4qENk=": "473331000000", - "YTp6WxeNUzUmiMlXAOJFB_cuqvqNjJ3QYyx7Ei6qQYQ=": "4581801000000", - "YUMy68WpfnMEjn5FCNdSm35qvbDTokNUsXyxmYfyhyU=": "385510000000", - "YUrf0mNyzZ_RiOveNNPjrfeGw-e99iYikfTcDdcWm1I=": "1822359000000", - "YV7_oEPqqWluBL1upqAW6sw-ULaGxpab0moArbFi6II=": "1542796000000", - "YVIxEscFQw6S1r0cyTOdRbucvl_FOP_ZKUiX1lPaZcc=": "1309889000000", - "YVPts7Cni5Jc3MuUazvPljFAjYBUnPx9nGOr83AT6BE=": "832223000000", - "YVzC3OYrVHjC-dpfGPXHi5aDh8aXkmt5iu06YP5dIQU=": "767594000000", - "YWe-WUodmInM26D_8zGFx4MmSKVlpecY5W7agQdCbnk=": "461555000000", - "YWmZmxCN-LGgLMY_2bXK-Ih3i_Vf5puPvKDyg-q9ilU=": "781016000000", - "YX3sY8AJNiR057GQvIG87zbPtlO65jSdgOPcNDkgLzM=": "385614000000", - "YXJS593RO5TG4YRktfnEgkm6JCmGhGop6Dd0eUspi7E=": "379260000000", - "YXKusZ31RUgLHRoUPjGG6OdPia7TdZTacFwHt78SXIE=": "759269000000", - "YXSsyKqSgsm0fbW1c2oUCLG5bpEbhHvpzt1XOSqcMSA=": "381839000000", - "YXoyzfLLeQQ_kbIav-QoOTGChipQ9iQ7H3qC0c2rqW0=": "3933873000000", - "YXuHB582zP8UwKWIckomjzF8F_kHkB8rwyULOGtU3qw=": "1153846000000", - "YYLAkf-vmn5cLlBEXNP_D3TehKvlchO8e_q8HA7tf70=": "1923886000000", - "YYkkQTLW0R9zK-OtN6EwJHPWiBqf6DGTdMi8Sia4SGk=": "2055429000000", - "YYryv6-5SYfbL1DNcHHrILdmdjfctTDQ5Iqxt5a_yuc=": "385505000000", - "YYslhjq4N37vJBB7ZOuIZXIg20IHOhQ7kVkVSBj2Frw=": "3461538000000", - "YYyVvXPhliYi8mOgdptJof0H55QEQ9cuBmf_ZRa1Rcw=": "1788788000000", - "YZ2TX5y2VwUWZTkcVJ4CJQbk7fqH9gQAAVLG9GXCv68=": "465048000000", - "YZG4MF500Fg-jn_9P3jmF9iHfOTw28iMLVYEZqcpHjM=": "850425000000", - "Y_3eh7KJW12tlykjJ-k2PxCIWBEVZC37Dwvt_ezn7PA=": "502779000000", - "Y_bI_ARmoW4VGMYO51R-5JeJT44HCeEnbDpC0G7q50o=": "410399000000", - "Y_u03_jxP9k4kQ9SYACGgdV-3OLJaCz6YlTcyN3eE0Q=": "902833000000", - "Y_xzKTxyNGD_LkPvhKpKej1TksmS4URs0M9ia4rJW6U=": "411085000000", - "Y_yzz2X7Y2nZXf9oHTHQUuFQ108T6u9Pphavyu4W7N8=": "503175000000", - "Ya3JJBDsaUHztBPsWlZc6mRlXsGwij05s40Yan58NHM=": "488979000000", - "YaSiLHSgbx0D6yJ8ea2ny8tHga55LOO2p5kP8aCIsAw=": "384652000000", - "YaWV6iM7tVxm7FWUlJQ8msL5PTXdMMlp1prBamTCQSg=": "379260000000", - "YaXGwW6Eqm-D6t2Gnb86SqNmuX-CfqBhFyDZdF1Nhfk=": "3846153000000", - "YadRJ64fHDBHhDLub4DWt1-4qr1vQq_tSMIACeriChU=": "617118000000", - "YailsVASrtCWqig-LJSciBBi-LyKw_H8Yi5kltQLeQ0=": "384941000000", - "Yb2ebHtK2sOIF4H9naghzpEce6zV4dpYmh42-7zkqUI=": "384615000000", - "Yb8dmUoCDIbvmJwsYT8rHGQDrv2pvskp0puV1LZDLAM=": "384892000000", - "YbFkqmtkNOmyboUe8JuMp-cfwSu87wT70cnZkPnPU3c=": "386931000000", - "Ybej4u_Pw-TkjqwfKJ-ezuHn7K-P0FP7VHYOakqM0Wo=": "727405000000", - "YbwQCruXuvmSzGFJlf5CegeaBXn4qaYC4eXECmJx0co=": "467234000000", - "YcFxmF0nd4ZPgwNSfg0nK-huTMQb8Xytjy_uET0Ky30=": "425255000000", - "Yca-zpI52p5Q7LKJXLBHgdEjVM7y8vdh7LMsaFCJeAs=": "383289000000", - "YdCtYQBfifEZKpv5Wwl6IStF0Sg6ckUDF33RcoTLtVA=": "420514000000", - "Yd_PUk6dSLv4ZIulRTl0vtR1zT5yD-Fo2R-pK_3poig=": "4565201000000", - "YdtbhgZKlkmbJtdlJPT8mHBNXXmSaIM_RY6bgJm6qyQ=": "380589000000", - "Ye5ZZw8_nDgsP7AhScO9N38SCt28NOkPad4mE6bsx6k=": "1817940000000", - "Yec2kZguWYuWBS8NWZZAxuSFe5dWJzCdwGhGnV-OWfU=": "946002000000", - "Yf3EIi6cfSyAKoI0F7rORuUDmGYSuC-0MPHXNoh8ajQ=": "1153846000000", - "Yf3infdgnXSDKZ1Nui7bDZgXr0wDnKYDlJBbAgTg_tM=": "472009000000", - "YfEGBR_jzR3NbwQdf7E5RSyd2a-Bf4tftVCXFnNEC_Q=": "463498000000", - "YfKRNL0Ww2zH6jP1rNvZMpbH7_3Ii8sUxKuUm6mQXiw=": "457740000000", - "YfRIrSbecOraQ0QsCgNFbdg7M7hxUM4WHn8EiMlNgFM=": "459850000000", - "Yg9vla_3xigIc5Z4Fd5bMD7aTxVMnioP41riEl-T898=": "925648000000", - "YgYatIM1awJc8Z11ybOHgpH-dx38GSoPkdKCrX3dR_U=": "763244000000", - "YgcVb6AbhSuL319MqbVIeS-FSeBld_vGKuADNYxG0N4=": "388478000000", - "YgyQrBG7UvfvPglfB79u1iG23UBo_GfSuKZ6IpMP-KA=": "1153846000000", - "Yh7OOw-6nQaDItM6BNTMoL6RpwzNzHFSEYHYSf07JSM=": "18181818000000", - "YhRDaZSgJM3JqNhNh2UP5BChNQz_53PGydZdDEQ0Ivg=": "1923076000000", - "Yi1YWg5Fh7A8tE5cnY2NzMMyIqLVm0BpXUVp4eyJvr4=": "2060882000000", - "Yi5OhlOpSonpxtLF2qxFfJhsyYYAGMKO24bQnp4JymE=": "411594000000", - "Yi5e-91zvwq7CY4KADvqZRXZ_q0GHTACJkli4U6xEr8=": "377309000000", - "Yi9277KC6ScJvxfOzdERcL_ztt8JDdJ2-Ds-K3WW10E=": "701782000000", - "Yihg-PmPcaWKLa3Fi9yVOucIlrbEjlUr1uTggr5IjEg=": "384615000000", - "YizRbNgPZuOKu6Ajk83slFEYoAFpGyMaG50bJgKvFCE=": "454370000000", - "YjKHewZsMdqj46Yw5qDHnDioOtanDrQnd8_Fy-p5hZc=": "1155274000000", - "YjKLRvr-vDtD4dBr-T-8yiUaQAR5wQZ5prh0MYZBUb4=": "424548000000", - "YjPWVqUTnlheRtq2orO5jakpTSRmLkbmibxpafCU4jI=": "450738000000", - "YjqnHeE0S5RPIvecfpQK-gJnosU8vOhci6xLXjtx5vA=": "416408000000", - "YjundBNjd5K9C7OqNlDOVFhYv7tpLUrJEdfFHnSPops=": "555325000000", - "YjzDBbzdypjyKcALtAEkPEHk5n2yc0nxrDG-OC5j0tI=": "384615000000", - "Yk8Nh_JuYxwipQdyy4y2mQDKRJjLYcg-wKBC_HUWBR0=": "3181164000000", - "Yke2APhhAym_StYtKGxcRpNsSPH7AlefKxPyfX6MX_c=": "770374000000", - "YkfvuvwJ96Ukr8Yv_NZ-N5dtiaNBsrMXKfqEL-imFfA=": "411085000000", - "YkrVirsmP9iKHoS8NKoTcySsjRdYbllfIhI0CQG6K7s=": "833333000000", - "Yl1ttqrEQulC0OvB2n9GJE8LdMcU9G8-c46pGUQ0gcQ=": "460952000000", - "YlFdBCXh0Xc8o6kG0tAEWM7hG1fHg1w0AqSZzDQvqeQ=": "498366000000", - "YlHNLPGDCSOZfW1g764t5NaN4SdAQK9izN_BYJ1hk00=": "838319000000", - "Ylifj8NaJNCYpPrYmvykcNUq5Zcz_QdRJihNEBU1CrY=": "1274301000000", - "Ylu064XqRcretcPzzkaHidtef2bHPelJLYSFMR5wK88=": "407469000000", - "YlzKRahI2oo4LE8pT4ERO6KMOnNnZP9pHWTp1kGKfPI=": "464104000000", - "Ym6nrZdRuDMy7f0t3JV3v6z1KefBtGEt9uAouvoSnGY=": "462839000000", - "YmWtEQVfq7kqvjnf3xSsGUhNNAvHYR_Wzxzudcy4mMs=": "3287659000000", - "Ymj9nnUxGkgvdBq_Lh1RYzD_ylm_ojcA_pk45-2Qg5c=": "3923076000000", - "Yna-22gAsU__qLsrbgwIlcedYzIUiG-OteHxP_yzqPY=": "5994080000000", - "Ynazj7OkinKlqLxCXYG1QlDFPSD12HTxwpwZEL-iSw8=": "8021760000000", - "YncJFdanzdXrFeexViNe7BWIDxKRgh_v0bAulnwdjdc=": "912339000000", - "YncRMQNXvADmljlA7e4vRFjGXIr2QTGSFrZDXuL-spA=": "454545000000", - "YnhGfelWeN_T-zCHhI1FoWnow8e8uM9SiWjDym8Vsis=": "422561000000", - "YnwAvFBRCxZCry5hTQndGzKlGKry5kMN2kbZyPOOp08=": "390816000000", - "YoaQeCfTRnjnE12Fjf7a49QAMmD0eoq06cC1VegWjMA=": "653846000000", - "YobJ3KDcRueyphVSgNG56PJ_tChMxwZLOdsSOehGmO8=": "384615000000", - "Yof1waUTPZINDnGJm8muHBs11VNjC2OAeewtLS9MqVc=": "1528743000000", - "YofuJgZojTlTyM1d90CTpaDtpIo0mtmg2Hg47vwx5yQ=": "820209000000", - "YoiPYds_uYTBopi3p_Kuni7-vb__BvKs_1mt2uSeWTE=": "1916873000000", - "YomUvu3vqzEXQaYL7yDvtXbYQAxS23Gx-6Hr4w-SRwg=": "1673648000000", - "Yp2WipxdLZ2MO9DN_mPMRnpB7XdsNIisFAusCF9ig58=": "384615000000", - "YpTSROiEZztEp43LLiNnNMLIm-cFLfSaDS1UgTs3IaQ=": "574775000000", - "Yq1YT6cY55E2iqNtxqkH9CPZjqYXKzcpaRd9tovUIx0=": "383334000000", - "YqNdFzryCrmM_E_uvSrr-P5SCNO_Q6nVVC3IGUuA1jg=": "424045000000", - "Yqf17e8DQxVNuze7_MgWghIFUoa_VT1YZ1l4BrZaGqQ=": "833333000000", - "Yr6tLxqP9_dNSA16bt50ewkpcrMDl3vbK5GjSeh1Cvs=": "4147477000000", - "YrLhaguZTy6-Kev96RO5lQSJ1456D5ODh3PDHb2zdt0=": "501408000000", - "YrPaZFSMwF63fahb-bGcGDXIpQ_rMkEWHPYU-zXRFTc=": "1931896000000", - "Yrk4m5jqGKdmazS4V7hysKpSp9YBgXYMhzFg1ZomhsI=": "769230000000", - "Ys92nqDppM0cpqFtfnKMZRObgKLZuKyYvcTzg9eh4zc=": "438461000000", - "YsYCdMK7JuZ1juIYfu0T8QN8fboq-nlKvUljeUmO090=": "386039000000", - "YseSgdGxUSprsU2MqIs927WPjd__5QcX4taw-DUY9Jo=": "776238000000", - "YsxFpb4wuAAP6q0qhDL3GWmSnvLAqeuWyaz3n9xoaQc=": "500070000000", - "Yt3AX9009PJx80OPN9gZLlJAFcsEbh9hg6Rvz8ZWycs=": "1136363000000", - "YtH2nhbvL8EFKgjrWxQUdlSHJACmiuTFE-wB26op8E4=": "485133000000", - "Yt_ZimiD0HbXRdvfoP5F3Vb1FLW2TAbHOu8GKOagOII=": "2031023000000", - "Yta7SHkhW7LE-Ci-CMLoLdouMCkn52Wh18q_Ljrbhoo=": "1004528000000", - "Ytj32jXyjyh0mkb52IdgiBb2r5bIQBErkZf4IlHkqkw=": "13772727000000", - "YuJDLRoUQPO2R-Dz90A-8-O90LmMPP0wfIC2mxH-tzI=": "416673000000", - "YuTwJz6ziH6xTVWyTIxObv25gTGJp0O4gdFlLSbUVd0=": "460148000000", - "YvN0WnAv2ceAwC5mOrK6T4W0eOh8RFaALZ92NFsIzk8=": "384615000000", - "YvQ00jw7SvdSKCS22Kob-hoyuP2eQ_U_yHlV-C0eUII=": "385505000000", - "YvW-00qCVZZ30C6x4TexYxPj7DPhTLsBc6acEIEULgM=": "446347000000", - "Yvd9yePNbBSC44JsuRcIxun__QyIa-riZmWQIJ43YvQ=": "385507000000", - "YvgnyeVpEYiRKVkrCcn2zus7Poblr_DZzH-IOCibsO4=": "385507000000", - "YwCz1AfDS-GE5DdzAqf8lSsiW6H24FeSzd3DH21oLks=": "1153846000000", - "YwdSzcuVVP1tDkXpdckQVjN3ekXqW8fAGOkV9TGJP_w=": "395728000000", - "YwfJ_KvTf4nl_-I49RYeYZyJlcOxL5CoPeltowZE1b4=": "454353000000", - "YwulYIlos1EW1DgA83E7-VuugEgqyz3IqkgWsVXmgbs=": "390993000000", - "YxDLgRObU3VfTR2a3iZLd-Z03IXY1OQUBwo-sBTYOOY=": "769230000000", - "YxElsSEyXk4JIbekebeJHuI1qEQfyvaPuovsLbuQiE8=": "385507000000", - "YxsUZ7FisLB_G1-xhPTBF--Td1KGXJwF83LVJ9K60nY=": "1728662000000", - "YyEHf8AJvxJrHR_PhVHqmtWauo5RMXsDCkXBZVrFpWk=": "400371000000", - "YyIjTkvRUYWNNW7yYNMPGzyDImTx6RLoZSjczwWmPHQ=": "468609000000", - "YylMccquKep66ZSMvt0PoVkJD-bPMPHWjkdGID9b-44=": "384615000000", - "Yza9nVOduML85DVhlUlYozkYZiOzM0yU-bCzRSXSdqA=": "460586000000", - "Z-So0_hDTy_2CeyrTJZfNqXdpDvqJoXQ8AxfZ6L2JQ0=": "454545000000", - "Z-o-e2W-QjP6JWozlOLjHVdoCJibA-UpLtmsW5Zl42Y=": "769230000000", - "Z0ULeSuEB9ojst8hmvnqPUrV0kUHpwTJOuU_3XwUK5U=": "1366800000000", - "Z0VydTjnNmBSQWrVvjXPcHcQd9EJrYNqTYrj4GHnsjg=": "397332000000", - "Z0oRVmqvt8ZTnK1qQ1RHfF-8u7JYnMbMkPUgpfJALY8=": "1927545000000", - "Z1DrHtdiAMdKrHeXwTBfFn-rZ_oYdQw89-QSwqLGLrU=": "769777000000", - "Z1rwUemOEKz5b9aAnNzRx_9kApFNAjB_rg10itdSn0U=": "3842983000000", - "Z22AkOEBFxMfRN7UJxQuqPJaCXIs97sXMA35OS8gcjw=": "384029000000", - "Z2C2eerE6n8ZCM1Ec7zoMJxTTd-T4_TLabeGHZE3N38=": "1415034000000", - "Z2DA0wFKUMw_IsyjZvq6jCRIucju5lxHdYBZhCI-u8k=": "383370000000", - "Z2LoWjhQOKXxHNCPjZ0-e_Z8YMQDMhDnX9Xrf_gcLiI=": "756302000000", - "Z2OPzLm2TQqbLGBpcQ7jA6iSqXJog3PTcSleyz3-7hI=": "391132000000", - "Z36c_tzeZCLXTQOF9-rCOOohfFZbh5hmrQU0qF_N9i4=": "2318813000000", - "Z37022BPoVhKEpmNsl02QBLf6cGVxhROTPpM0wN6UtA=": "415455000000", - "Z3BOfdLrIMPmEikXbRHPkA0Dq7Vl_yNLzCo5gfBLzNM=": "1924454000000", - "Z3DPUHO5A1LCWIb9xPy-tRaDYOH9a8QPGNPkv4QeKhw=": "909090000000", - "Z3ZvfbtIwGyXGIH4feQFyKIi9qqlLwvQipLsIo5uMlg=": "458877000000", - "Z3cGZyEbHFSxQ_LCJ7MP_tkemfykpPz-Q-CGTYpyMik=": "833333000000", - "Z3o0a5liOvhWXSLgtIIQBcjJDQN8OaRd5U_kV0x2cz8=": "447942000000", - "Z4xy6u_gmaHhhqI3cwT8HB9il47OXBHyn2T5zydUenw=": "362194000000", - "Z6kv4ZTqKveD_H6u_UWsBaiAALj5tCk5atdkTIqMbCU=": "2020141000000", - "Z6v5tOHHv06vaxfhUCf3TUvkxReOG9AevPNaczty71A=": "3848827000000", - "Z7aPtNu702r5vTQWkohvA3VhR7zgF443aVUwNkatDMk=": "648033000000", - "Z7jJ52IP1FJ-Z2PUJ6uhPN_iMPfb4dnmoNUtT1d_Azs=": "7433031000000", - "Z8-BEfZRBxtS_VtqXcyDfQL3-mi5Oc93shZRqqz2MRs=": "1083291000000", - "Z80pwhDSSDrTW3hRzYFpbcD5_iIMwBOxb5Qenta6_90=": "1110651000000", - "Z89KV_pfnU0mHzvT8lrsCfN-0gq_-mctlv4wlD7i_cA=": "501104000000", - "Z8PE7cgv7W0Y0J5xhLgoepyYknH6Nafd3a1wHYCZPl8=": "1239855000000", - "Z8U_bPgvWkT0PZWoB8S_k35HAQsSRvmee5M0yndyJNY=": "381714000000", - "Z8Zjdo3A_-NOFZox0Yik3abIG9h8XKtnkNjkgjyHY1c=": "381805000000", - "Z9-jhWY28qLjrXiauvhfHf2QLfrxX0XmAUX9DF3wwRg=": "1603820000000", - "Z9ldzynVH-HcGDz9U92lSX9DYr8s7G_QSwhxGEDMwDk=": "384615000000", - "Z9viiUTPaz6wPCqN2wXVvFKCto0Stc7DpRxXR2DoIIQ=": "796003000000", - "ZA0YqLs9Hlkhs1UfbyHzrw8JHreSLdgjEskZXzdwH1s=": "384615000000", - "ZA4NcNTyBkmb0M5TkGFKnMuOSwOn_12W1-FGs-_eevg=": "461538000000", - "ZA95N3gT5B69ggBPVIDJz5TQMTkRkxJO9GeUO2oqdSA=": "411851000000", - "ZAKhscOpH-H6rQbZNQXH9k0332GD21EKygT-6t58u1Y=": "692307000000", - "ZAP3PpybjfQ1lnF1GliNYAnOGmdrw02el1cvdE2PzF4=": "382737000000", - "ZAWmTU69h9SjZ82JrQGhPixOGJKzq3rRhH_d-M4IP9Y=": "1823608000000", - "ZApQIejdBKFFAR9fihTAYKsLH2l0HbyJd38jA0C826U=": "390680000000", - "ZApd0rispXs47dhPVHW_509ig3N5eO0S_xXnk1rlXro=": "3050505000000", - "ZAzb0eCYJMgoUnqsbNRZvbPdTeukv8Kwo4eDmWCK26U=": "452035000000", - "ZB3UUoWxovSIiA6ceshxZMsc8vUzXtZsm_ZP2Gs4mzU=": "417190000000", - "ZBQceMaf7MYxbrclvRfCckQZ8YZBbMxgUo-6aVSOzrQ=": "1168447000000", - "ZBbQ1KS9vsXbxj3rMDadzr9Mm0r2NbUOVnPOk0LiLz8=": "2083333000000", - "ZBhKGvaGFCCPi0Ob95o0_I-vPpiHgnDUTE5A3CRQK5o=": "464300000000", - "ZC19mtkS4XcFhTS00g3GbeWnBj7C6StIL8FEUtcgaGE=": "400371000000", - "ZCLl8FhR_KfGMyqGGoG21ViXb5OIsfPRpZooxgm0ekc=": "2499999000000", - "ZCRHlykhr94rfYDc9ecEA86U-2umNDTZAWD3eanIz_c=": "420518000000", - "ZDBGMPOC23TA2VV9kHilVjq4mKC9_TmO5p_TnYNowMw=": "408960000000", - "ZDK9NZcvUTJKIusfJYvKsdNv_Lt8LrEmbZhMOK71LOU=": "454545000000", - "ZDlUFmZJR--uOW4sm5FIiM7jv16PIaWsji6m94prPAk=": "384615000000", - "ZE0J6k8tHU04kWRFht5fySvPH7c1d83iN62YNkNlnDg=": "3242898000000", - "ZEIBmGF_fyMK7r-yAu6T8ouqgCrY9Cu1UZmgqwfhL8Q=": "491516000000", - "ZF5nvlh4K2WPtaYo6yiUgqxk5je3-DdJ-0SWM_EkM1Y=": "3856992000000", - "ZFQ7HXYEusvzffAZHYDDo0eTBpX8f74y2nw6NT84NEY=": "35426417000000", - "ZFVLsUEl1ZKeEot3Qyz7xwozY03d1ubycxrSXJbLA64=": "407469000000", - "ZFatSHUOZPFUQFYr4XdYgBz4QhIZU6eXgTvMUwfrYQA=": "642211000000", - "ZGT505s--gjVyGfLYvOqhRLJFVeXauhfIouSmdi9uD0=": "379354000000", - "ZGwak7FilKJGXQekIIlAqjQCmY_LS2vDQPAywtZrlXE=": "2084176000000", - "ZH4hDQa6Y58xxFe0Xm_n9IF5hoTXy5f6_R4Pz5kQL1c=": "381439000000", - "ZH8Ug4dyoOGxdpznUK67ERtNGoUpgkeIZEo4B5Fr-sQ=": "893416000000", - "ZHJF199Pk2eW3z5nLY-q9ecVwxOG7gzZ18bqVeSDbec=": "12499999000000", - "ZHOblNBwp4qB33KFa1p-8alW8aV-om9UdlAkvWhobJc=": "656013000000", - "ZHgbpnMiPxQXwwyKbfrUrzuDauMFc0Zviv2HlaEjmhs=": "411085000000", - "ZI-SKIZDjKEeEFY0Th_jM-Wxc188m63aFa9MSH2xchw=": "384615000000", - "ZI65q6I4c0Rx15N1ZaKIA89vh_SzvA_mO4WwUVaizfM=": "424426000000", - "ZIEDhumDdeNsd2xCL5sNqbtKa5fx3bzepuyQ57Wz500=": "454556000000", - "ZIExOYMoPdD4VheeW3l-YyUG7MG8pBO6Cp1LpW0ccXM=": "21200014000000", - "ZIXKaA_GxFLH9cC087Z5EgyFXzXSQ-y-xyQg6lnyX-4=": "1131938000000", - "ZIgj57JhHkaT5bH7YVT1mSyLlaT_XtYmv_vZ_IDz-sc=": "411085000000", - "ZIiVakPvi0oNbAETB_5jTYjIrzHBdFvdKMwUkHylfkw=": "385935000000", - "ZIkGQNOr0MIrxbVFojj1kSy6NR45yweBbQ29LZqWREg=": "769523000000", - "ZJEfx6_zi-j6a4WxwzN2LB5LnVxfebKqyPCZzp8fBYM=": "422561000000", - "ZJVkkEAbXgAxBaHANEfK27uVstbBW8VF0fB4ZZnTOGg=": "378611000000", - "ZJcsizcsbnkABGPsOjdiJC0ZeeA2VPCNsqczyul-AGk=": "399403000000", - "ZJk97XaaCS3MjlPjFlZlscLWboq35gybw3nvB_2FV64=": "1536921000000", - "ZKnAjuqh8gNmqu3sBpAG1FftHpHWs7XUIEH22U-hKII=": "384615000000", - "ZL0AA8pE8VZdTW-urugKY6o4JZnDFLezQdu0yHgl_XQ=": "1912992000000", - "ZL7s5Dy4wGUMeGzvi3d4IhoaIitElEZ7DzzbadN0uZg=": "420518000000", - "ZLHrR4A007xZE8j-kgL0PyXcii2jBK4US4qZXbQd4a0=": "384283000000", - "ZLM4OPn5ydR1aoWkmxzYQ9XY-nwM7c9ljwbYWIcG6HE=": "465040000000", - "ZLUio5YYclIG2TkvXBgg9LoQrSQ1ZDInGsFYMKVoHWw=": "388711000000", - "ZLam7GpptCBuTJoxjRo7RjtJ_NxWhF5Df_vPtAN2nXk=": "1238455000000", - "ZLvm6A5Do9ESQz2oBEJnZCihXSy2zrd7Wn1vT8nKaIA=": "454419000000", - "ZM8Ocf-Y71UFKm3QFg_U36Wi41MN5IyvIr6XubhMhzk=": "767441000000", - "ZMENYGv3asNPIFhBHf7rhwKuFSyJ6oSe6CaEwe-wFS4=": "576923000000", - "ZMEnLN4rCptMDyKb0GxjfUiEzOai1hqps_7z3-28wlc=": "3231245000000", - "ZMgMbxE_Xm6F2aanj04nGNlN_5eVW5FLJBU-KMogBlI=": "393806000000", - "ZMtJqeTouKSwmDY9sBSkSpQKlYjvkrC-7Xeh0kg_DT4=": "384346000000", - "ZN-dZbuKK8loBDzTkXw60d20FHG0P-h-oELji89DO10=": "844467000000", - "ZNHLye0JyeALe6Zsk-inauwa03siZrOfbXXOaoM_xUk=": "455600000000", - "ZNf8MWE0AAUflV7WAGC_EobuMeWSGBhNz0apK5y30Lo=": "598669000000", - "ZNwGJoDGk0CCEUsMThU7sVkGdPg4WynU-whZ71JeXwk=": "411085000000", - "ZO4HsYOwnp701r5DFs2dg3uvwhH32-GtZlIlbkxQBng=": "1948064000000", - "ZOB66UvxxJ0CvykFKJFoPai6TUVx6ARoa0FmxDJsF5Q=": "2011452000000", - "ZOFj463h6ZGrcNV2Q_Ox3lEI_SxAu-nBZnrZlIfTDyM=": "2172727000000", - "ZOStdQnHI_DqlZw0GPZFiUSYG9uKEr-P0tX8ayBG1OI=": "2298980000000", - "ZOx2r1lpt0T9ltwT8INoCrdHVD162ejZGQFfXRp7oho=": "1153846000000", - "ZPBsbXo5tPRldQ4iqKuw0cPwNGqjc-yN5tfEQ5gXU9E=": "5504976000000", - "ZPc_cyTjeHfLanxWhNxfEoRW-neu6Lk36JZyU4wAnJc=": "457658000000", - "ZPprmSndoK_ucNlztjfPhSN2CCfvb33OL94JPefGCHc=": "1877873000000", - "ZPq4FcbkAmxPu-gw0ukd-qpYmk1qJJiLRN49mFJoyOA=": "1159980000000", - "ZPwYE-MrXOo-MAxewd2xtNU_QXMN8pBRCRI5SSY1hCs=": "2843187000000", - "ZPyG0Z3ydnLu05jaPMDQi3Xce2Ec58KGPN8otMapwP8=": "486218000000", - "ZQcOsqynpFqLFip_XnIFuSuk37b-XBR01K1g7a5a8Tw=": "1258176000000", - "ZRWhrWjWYU8yHrO94pC0EhOETfZ0rb-mDgYO1W-4Qj8=": "384585000000", - "ZS-EOkGvEs-mwPm7DddoD59RqHzspA3Vnxr19GcIqdI=": "2358835000000", - "ZS2kQlvjLksR6nuKc3YTMfBwAJ68nlRx_NykkbTXdEc=": "416735000000", - "ZSkSm511WQplP1UFr-Qq_e1HPISeYq2X6Qzk67QPgPs=": "1662519000000", - "ZSpjZJam9eUPkcNswOwRX3yf2JhMnN8b4l2WSvf9GvY=": "566845000000", - "ZT3tuPlctWz2MijRLT7Ce5pG_ZRobjmCGXdpcfS2Od0=": "793337000000", - "ZTCkUcwQn9c3DYzRKMGCs9dW_wvvftM4Zi6wbsJ5Iy0=": "893658000000", - "ZTaeVLkEaDBfJiGH2ZeW73C3t88-8hBBsPp94wPqThw=": "5384592000000", - "ZTbALmkFNs_ixoQ5YDAoMIbBY1-Ca7KJ82gK5sPuvC0=": "7497594000000", - "ZTeIzNas8_HfuEj8ST4SxORcxJy5H2HsUzYYbxS3MvE=": "920286000000", - "ZTqcqz0LNsyFz4WWRZd8LIqC_P6Z5SZWSQjRv_2qLc4=": "2499999000000", - "ZU-E6_4XuXekwJc6itCgzZXhzL6Cm5hM6DpwACZZAXQ=": "387034000000", - "ZU4b6gxFD45FzfAMWfFY4mj0R6h19Y58et_uHvy8fnk=": "385507000000", - "ZUCrPtXz6AMpItpEkodX5Buz_S3_dA8lzsnPiEjPq90=": "1885207000000", - "ZUKRitarKyqV-t69EcBSuh-1VPjPW0qHpafdd0L_hkw=": "1223425000000", - "ZUiW9g6s26BXTFzyFDR5Xtco-e1oE_1c2OOdl1Sx5Yo=": "383217000000", - "ZV2P0yBQpBCUp9I-rE77yE_YjtvYcxDnTBAGz7U5WmI=": "5769230000000", - "ZV2cDqRgyeQYXezWB09s7q9D8Ot7K898Es-Q3_gn0dQ=": "1107326000000", - "ZVVwXIBwJ3UQfgqahrMdSHafFN8rVry3PARflqr6mNU=": "3937565000000", - "ZVsNvRhTdcAWEKuHNsYoGi06GJ5xAtNGMXaf1Jh4Utw=": "385507000000", - "ZVzJkvTFvM8bDD8m4dZJS0OFPH5XmyDYgKUGB8KjM1s=": "832413000000", - "ZW-ll-Mw69mPMIq0AIhMF9Du-h6-56uVMGvMEmUO7Sc=": "384615000000", - "ZWhsctR2fcVC616eNxBllEghOr_EEKzYXMW3lObBy7I=": "1924105000000", - "ZX8ONHFhGGcUX8MV0aJp76z0Nf9xFeEeJ577L3KNzKA=": "455341000000", - "ZXLTyOpbCa63OoGJ2KTOpOU2r14mbSMpPOzrFNTNItA=": "758537000000", - "ZXN1elzLbi4uj8SqJ5OUIXQCYJuppAW98_vPiC0yacQ=": "448320000000", - "ZXhQade2KDht4amr2r4rX432XsGSaG8SGTh8GpNVfOI=": "411085000000", - "ZXm-EVHfSZadvKpEC1k8YoxC2Jjs7iW7Ndwvwt4sOXg=": "413362000000", - "ZY0Q_WF9eSltuVlc_B-ACh_SfqZDPKh5Ovm28bIUkcQ=": "1115658000000", - "ZYIT2LBmXXMl8MuR4g1eFibxyerGsrqys2RSzIdzojg=": "384615000000", - "ZYJ0m-PhKuyK3xGzjhk3PpEhjp4LjO395KfXpuposHA=": "421446000000", - "ZYwwdluKC66Zw45LWgx7dEtBL2RKz3HxdOLF4Ivzz-U=": "545215000000", - "ZZmQgWB2FGUYzt5d7abWj48cOkLmpo0FhQoz6xO3LSE=": "1135024000000", - "ZZsKAg1J4vlmms0Q2ekF4op5Vj0Poa_oSEwQirLJQP8=": "491921000000", - "Z_z0AxIirfFOIuCZ7kro4pi5fSsEs8yxmsJMeuARn18=": "386204000000", - "Za9xl9iOSv-P7TLOgW8hVSAWOm7cE6ayoL8L6M0kts4=": "473265000000", - "ZaLE7ai9aU5vITKskX2YJCwrta45WuC_cfrhFurUp04=": "390743000000", - "ZaPZOV20dSABCt2KB18Rgpou_VtmaZ8pgMs6xDNUw9k=": "415629000000", - "ZayyeDDscfOUXPwTHGAwco9cKDzwBuiE5tKpeDJ_Tz4=": "385654000000", - "ZbR4hSD41jtM-iHCMp7rgUyFYmxwxfd2scjjdbmljyI=": "411526000000", - "Zbms98ERFFPfijfOD7IhWcRPKHYuyeHkrZ83tkiwQx0=": "9090909000000", - "ZcD0ue7Mo2RNMcQSg5s_DQ-p9yaRIAzJdyCU-8b7o7Y=": "767719000000", - "ZcSAsG9EKhJiN7dl3OGgxFrA1przA8Sus_xkroNJSo0=": "4199496000000", - "ZcrB7Uaj9G5etleL6s3i8dXLJxzDSDUSPSB6N2Nww-M=": "385665000000", - "ZdJoN4Y6rLi5ApexSunoO4fMGeitvkXpNPNquQrWadk=": "452511000000", - "ZdbfrO8D3Qo_n2e5ZkrzTB8liyduVHN_104gziEcbi8=": "395497000000", - "ZdcS18aQ8KekvK8xoLRFi4DpJRhJnttO2Ybtd_o9Gnc=": "1666666000000", - "ZdxSYu8o2sg3SGN5CWVoPu3GbXHVE0pWXdWuqqNKejo=": "426259000000", - "Ze9lmReI5tV8RSvPSnUE80qD-Wf3coa_vCq3j6hG6kU=": "382394000000", - "ZeUXhCw1E_mPCWaERTl3ahTPS37nrBkwOBd6Hbse5TA=": "769230000000", - "Zek5eC3p8CxMJq3MLwHJ3qh3DDKbXWuvptyfckj4E-Q=": "783778000000", - "ZfUaE6A2QF3-BJ9wWjpqXHAOzdaTiSwJ3WZTuhE8yJI=": "457702000000", - "ZfmWQ3vNoXsCQHmrQfYhz6UWtA_1T3PXmGzNN97oG-0=": "8333333000000", - "ZfmxHWa6-DQ0ARL3Pam8wnG4cix-wN2RQ_kXPYZ4xuQ=": "1522049000000", - "Zfx630P1UcVrTLI0FnoAqnoHku9AdeQUo2crmJ2iQrM=": "383714000000", - "ZgMHTocwK8sZPtpkcMgha4lVuBlBR55IkYaPJVhv0CI=": "468121000000", - "ZgWgg3ZMn9ufa7GOf8aoLE-ZkFgdRxxmTvlsxDbD5SY=": "446532000000", - "Zgxf3DNSuxGF1OJyFMJ9P2ES1URIu5dsTlTXwwwzaaM=": "384615000000", - "ZhPZ8FfcSqpnBMI772nxmrYGbfneMiaZK407egfWmuI=": "11538461000000", - "Zhi0An7Am4zLtNX-VwFOHS5f2WJx582q2GQd2f4WbDA=": "1241228000000", - "ZhiBImtqTrKcnR1mP2tsvgtKaxganc70Em2JnoV5ab8=": "449142000000", - "ZhmT6RUgFiel5I_HJfuqLqb6EdKowJ0TW-u1fYLgQTo=": "384615000000", - "ZiKJVTqd3bZW0rwh0B264lxcVxPvaVpy68hmFkZ3h64=": "453003000000", - "ZiPA0EUyfTyMn52b5otwCZJ7fx331EM1kqzcJwMQ6sY=": "473001000000", - "ZiVpBobo3g962hemtKb14ZOgYVjsW9iUxhOIGeSjbIk=": "384615000000", - "Zig9ESM3QIipJW5R30dJH9Qf9Co9OPRLtukCoWtSZSI=": "381632000000", - "Zim4VfPpu6Ki4ImGxm5AqhwO_IJJspRZ6SF7iQ0xZ7g=": "849693000000", - "ZisFK6CMMpcdvDGfJf7L_zEbEwv2AQGuDAvihXRKMN8=": "519045000000", - "ZiyEOS0mF_TPQBfLroqEZvt_z36sXuAfXeh7ivtvXrU=": "384615000000", - "ZizNhdc83Ii4E3lu5fJ4STIzOYeVJCm5RXemkcQPdrw=": "529201000000", - "ZjVMtE0gcdFJ3qSV2R-1x8c95jQkTg_mI-5dwhw1ya0=": "375432000000", - "ZjpE50ClKwIJRqHMhjtGKoDikHCmcNUEsQ3nGXak41w=": "3855089000000", - "ZjtSBSVv5gOlD11xUHRFLhTGlJ80MsxrAgngHQLQjkw=": "500251000000", - "Zk1FTU8_vsomZlh-GZxiRhUWLXb0DOEhy3ezCdagxsQ=": "1924269000000", - "ZkAimJNDnRHwMEEqx1fZ4_yphgR63rsqw5RI-WMwdPw=": "385510000000", - "ZkPuHGyueCQLF-bPOIngyGvzU7pklkps39lnlOguw1g=": "1428104000000", - "ZkTelfA60UzJJ_jdtTzU9REujL_PRVmFHeJxmZtJGBo=": "457433000000", - "ZkWaO6tRjlTOM83dKTs1KBx-h8uBgdve2enPPPK3x_c=": "1128954000000", - "ZkaRDbof9okcQ6vn3C3e0yD_2FyO6bsRjWxhgLcYT_A=": "454545000000", - "ZksfamwUdgyULohluIAK1IFTkeEyS8wv7mINHmgO2rY=": "767182000000", - "Zl3GEaiTZRpatJXX0Erudgfr63CqRlOBN-gPc8IUc8A=": "33808627000000", - "Zlguqgygb0PaK75EJqZ4CXlg7BeiZKuxgPGWUb0KrKc=": "412542000000", - "Zm0FvrBYYnPQXMFYhApy9I5BGtfkqifqVzjB9CfQD_k=": "452367000000", - "Zm5LN6Hsxzn0jMzDzt0GQKPyQOo7XYcsJ5UDNMLBg_M=": "1150899000000", - "ZndLOJ_CNXFauaZ35kbREXG-1U-Sut3YcVuNE0MH7QY=": "416375000000", - "ZntksQLAtK4zK7KH2WvxCfdbrjvdZ8oNu9rJj1bEpZg=": "2074375000000", - "ZojDb4tPn51kCd9Nl9OsBOivrmCUdcDRvmSWemz-SS8=": "1514867000000", - "ZqJr-2RggJKtupOjYR0I00-3O2wu_x5zeKrpEBXe6Xg=": "423370000000", - "ZqL0PL4iGkyJscTKEnuHBQ9qWsGrsJmmtB78X9mWQZY=": "468609000000", - "ZqesYHJP4pijBC4yhs81v1YOJyaJLHXeKNPemO5IwfQ=": "1156515000000", - "ZqrvJXvzC026jVup3rrzggjM-8bLdrxY9cKCTtS9HEs=": "415461000000", - "ZrM9K2aiBzfrDFzVRaKQE19jkwaKP2yuGmt-s6Xmycw=": "761132000000", - "Zs3YUJZHpoeg8Eho9DjCSM8zEu5RHHCLPqRm5rGmYvw=": "385447000000", - "Zs9re3GXjR5Tw35OoKkB9e8RbztWU7x-Dr6_MaYW69E=": "452425000000", - "ZsDOSIAmqc-S9_xzKywzKuwTZYDK1AtZENHeeIxVnTY=": "416666000000", - "ZsFFKxdfBaUX71i4b4iaubhYZ-VNfj5GD8xmmiJvl9k=": "812815000000", - "ZsRGqiWonaqW6f7aaZgS2V_3QoyNs8WpwDsFoAeejT0=": "417193000000", - "ZsbgpP7p097uUpTtwT25FQR1UXGixckicqbeL19zWpE=": "351050000000", - "Zscw8VJb8Q6PyOPtqK5FrmxG0LupV1tHaAribcpyuZ4=": "416666000000", - "ZsqVnIZ3cJso_enWwgoVAWGncXVA57dgODVcrAXHABI=": "885599000000", - "ZstxHXxX5S085Wra7iU65Gp1ufBoC_Fke3ojAzUgctg=": "769230000000", - "ZtgUsKFX8qkb560COoHC4RF6ZcNKrQOlL3cJmyjmBKw=": "1344890000000", - "ZuFSIgy0ySswJ4ijOt1Ae15jVT_xnWT2J8T3YqfH7Eo=": "2138004000000", - "Zug194TULQ5p-RuaeY7D7xpd6KeUwf2WHPSnkGNmZ6U=": "385988000000", - "ZvDu0NUOM5sJlx83uWtcrRcPsASuoD2BLFGDrTn6cEk=": "385505000000", - "ZwYyZmXsXokmaV5g0lzYgwPSklHHoEe9sNXCx0Q1d3Q=": "6810765000000", - "ZwwXOQCekzsi7B24bzw1UiaKPy0BrzgYmUgi0gMCiQI=": "384615000000", - "Zx8WMvWzulI6sxTW45LTSEoi5liNFFqTRLxLIi5fkgU=": "932527000000", - "ZxGUret8qb0RGFvwylL0V8_pZ_FfPo6sIs18IlgX8sU=": "1373076000000", - "ZxtUYyL79tDrxLuUS-qVEFCmuRt-KZECpfsIxgvOk2g=": "684383000000", - "Zy4-C0-LkEZ8-OtF-UG5z1tIhHA3PCxozHr9mW0L8Uo=": "803304000000", - "ZyDvTqEehDHa1pd0smn8hDRUovmZS_ZS6NHxLbsRL10=": "1386434000000", - "ZyJOp_ycUPRNlE-5f9oVdcGDxkFv4nLXmkocqcJDi-A=": "2313319000000", - "ZyntTAAGS9IhPtqv9ZZSUJyJcllAztZo6W5Hr2zgTSA=": "2307692000000", - "Zz1aeRV7H7fw2c1MjRQvteh2D9a2USAUz1VzDxfX2FU=": "385560000000", - "ZzXm4aLAdvk5bY8WK6f_g-g789-phpVjQr_d3wRMwvk=": "3619297000000", - "ZzrpiRZicrdp5i7BDmvAu9ete_Xper1-yUWz7HntEH8=": "655989000000", - "_-WfDPjqRfz7keo62TINfPDHVaWbjSUBBw_uNhoMpVw=": "384615000000", - "_-j4hakzTB137yQjhnfcMsVI--kkzzAt9i6TxSDwJTM=": "409116000000", - "_-zD4z9ldJelc6Hq3BKD0pW5ImIMUFTL_apkrdR36Vo=": "832476000000", - "_0bziZJZOLf1UAVyereUk_tcW-YX-PLhLOn3ro9hCbI=": "576923000000", - "_0ozMzYd1_ToDCFSaW8GihEG-ORLFUUVp4IPt-6wI74=": "500245000000", - "_0ro1Po3gdGLCyE_sTMXPbGY_KHy6d_HhevZUHvwXSg=": "385528000000", - "_14tMf2p2ZWhHI-ECrNJCM5QXOHrdQsX28kL2b2tzzQ=": "4000320000000", - "_1Nf14OqO-AywUySg6W-yRiPB9usBEsJTpKsjjo3YiM=": "3346153000000", - "_1akFj3OKfylN83anKweZPWySOUN7S1VCONAZiSRQy8=": "509585000000", - "_1bZpUd7zzdlPRy8o4mntYnFQMDKMchnHPhUYsAHN44=": "768499000000", - "_1jcPsXS2v_ZL-fD4YGG39fn0WAiinaH1OPBhXkQtT0=": "3765029000000", - "_1rMCsZtdxYJYmrnDLFQBLFz-7oM_Gh9e6OTLkD6qEI=": "384615000000", - "_1uf_FKG-bHPn0eqaH__BukyL1K9G4I7rqh56A8WlTM=": "453442000000", - "_29QCx0TMOxTknJnGA0ASGA_SoCCcOnXMitLOmsTujs=": "1346514000000", - "_2DLfBsi7CjtpNlXiPdBxyeRjaRrMw68071MuWFNCJE=": "1502755000000", - "_30Jo_KSi1lB3crjS2KTBV2NkCb74PhFMUVYvXFe5QE=": "4166666000000", - "_3H6Fh2QXyw6iRMYWebX7gbxnFduek_3JiAq-LoS9QU=": "3537639000000", - "_3V8znMHU_fOEf5XhYj3g7H51Wljoj8f_-FRA3XIW0I=": "1470728000000", - "_46_Py4W3HgGZWmg7a12kDr-7f8InYp6OjQnGvcwB5A=": "1153846000000", - "_4C9c-40LGYLYaR_E_stpCYLAxWRskJJ3f_RdXjU2Jw=": "753677000000", - "_4HMIXcpW7sZNEkZ69oHYMErGYWlsFHjXXhS3CkFjwQ=": "1538461000000", - "_4IAjfTdEHoRsCEUZQHDugLlFZmqoRPpHV2Tw16lexE=": "4557554000000", - "_4SSRg3bKI_yo4IeaPnW2m0G4kZyccZ5zk9m5Nh0Kss=": "418563000000", - "_4WEvESV4beX8_3d4OPD4q_dqXlqTdj04E5PUH6ruOQ=": "7637772000000", - "_4kRGfQHxYYq_ittf2BB5nEKHSKyR-aF93a3CYl_RO4=": "384615000000", - "_4yYvQn2CCthb9rvxydIb-uRePVM6DT9d1vDPS7EWYc=": "405176000000", - "_5SUKlmAdEn4xREtf8yMBm94hte6uQnPru8H2rNceT0=": "3855066000000", - "_5hUqT0FHDjTrRjBeirTa0orgbOChp129b9Hz4JXZCI=": "378072000000", - "_6B5fVoHDO7nxnqjHiNhdWl6z8mWontiWbDqpPfmlE0=": "416666000000", - "_6FwBELgShGoj4mRbtHQnUMfY3e9h3faCFfvg9l1wu0=": "409514000000", - "_774QtgKF97u41dHdh4j0Y-bP9a3lYbsGxP-dgkyrUA=": "1156522000000", - "_7IkNH94ka3hZrZGtb-QwoJ1nPh6H27SbftyG7kinaU=": "384853000000", - "_7UGLlX-wB6DSCO-pAwDna-qKlv0i9t3D4dkIYFl3A0=": "974536000000", - "_7fftVJZX-RllflsK9T7u5CkoCZ2Barqwo4eJi3Q0Hs=": "711953000000", - "_7lfxCsnleihao9uGP2LsU4mSdtGo85O-nwLALgcYdI=": "424045000000", - "_89qboVJPXIgR4C6ujTuJfJ_4_khzH5swhj1rs-UMqY=": "3551044000000", - "_8lWnZoEHYKDrJGtkxRBw0wqITZZkE-NsE7EQpCyIIA=": "780370000000", - "_8odS-Hega0uaJrSOr6IeRNccC68Khad31aBFg3bWxM=": "1249999000000", - "_9RQicprlWnIHbH2HzZXE9N6BeZmjpskSQwRoUZDMZ4=": "4176337000000", - "_9eZaUBn00to7Vyh2L0nppU7Jk_fZYMabfcOgtl3Y88=": "384615000000", - "_9r8scnUACHbddaBahmdyBeaGENGammZGP4X9bVkj_4=": "2272727000000", - "_ADnofHfdho0z75rSVtuxNZjMjCaFOnaSPR7NZd1wiI=": "572959000000", - "_AYiW1gA15U_CY5ZIsSa4J_pgPFAFcyrbV6CXV-JR58=": "454545000000", - "_BIS9VY_4LyzrVviWU7ATjGkagC1sY4vzeFje8Ccsyw=": "3841471000000", - "_BXX7vkRRpMILVF0PG0TvmG4m9c9crs_pxIve50ZOec=": "460910000000", - "_BnBYWKoj0Ay67hthMuEE4mbMyL2lIOzdIi0GtyFYUY=": "631981000000", - "_BwypGIhGKkOjbVWd5FkM2jeKjWW9QAZaiYoh7ALui4=": "381226000000", - "_C2Y1cZ3tbjNtnSYIxoU1wi5RiwqBAuJxXJgJvod3JU=": "385509000000", - "_C3kr51POnFNxpNBFJbpIQ72Nvs8n73EiTFsEBPnbNM=": "455091000000", - "_CMoJG54qAHc-hS7I7GCfw9VUvkgl9VDDmjcwN1mpFA=": "412014000000", - "_CcUn8G7gkjMrlr1Hc3RY-tOrCQlsSaHvHx2tVA-NZ4=": "3889408000000", - "_CeBMQat2F1D1PzfRESJVKmDTiJ_NAE2tQXOXr3S7HM=": "627726000000", - "_CiaSFXfcEeHUw1EwGUeby3Z7b5qn_y7j-8DBOhje1M=": "1365475000000", - "_D9l59nOq6d5byY69MjpbQVuzRY-QwyUeYJ5rwoJk2w=": "384037000000", - "_DDdobve0nM327Pq87Ue6W_dLSUlrPCKySUU7Yn0ugE=": "389081000000", - "_DH1B402x921JB5hFmQWu5QgEyw-C7Jo0usJbjYb2mU=": "379072000000", - "_DIphE7a5ZA62ngAg61Q7L1Lq3pc8eIQErppGZ_3HJ4=": "447389000000", - "_DW5vI9t7zN6gyFisVfiHROM1wqT6EYYGoNw0IRZ6-M=": "962891000000", - "_Ds0BLHmI2EBSSKjY-kjRGIz-TQQkvzMspQe-P8WvLk=": "416710000000", - "_Dwme_cvSzJI33NuFoaOtskj07nAtEInzaTC6Feu34c=": "675760000000", - "_Ebu9xObZC-Lpxxo13eW44axBlfdE1XDEzoMLvOGP9g=": "2303657000000", - "_FQgynxnLBxNKfyv2fzS49jNlSPKK5aSqES_AK6TT8E=": "909512000000", - "_FpzfFsUfo_P3FyVGF3ekLs5u2Bng6kGfILCHFTGxA8=": "378065000000", - "_FuJwd5wGucN3HDvnPzaShLamf2kiw1uuFmTfTeKCd0=": "492307000000", - "_GK53ACQp95Ly0dOscAyYYnn4DhtUJUtm_KAZ9eD3DM=": "385510000000", - "_GapdJMXHA1tlRGRhJ1n07KhAr4uSPAA1fqULWVT18E=": "1249228000000", - "_H20BHHTv6bbRAlcDNJBAI0kntpMAyz3u48JDT-_Pjc=": "1153846000000", - "_H3Xn3_4OkqqGmEHKp23a2ru5bl5vnJCIIIs3cgDw0E=": "390689000000", - "_H9bt8aplMzHgJbtIMB9eppT4fNlKP1_XjwICXMc_oI=": "449029000000", - "_HbhGiFT6kyQjJ_CXGjkwsmTvTvRVR1cCV2GCV9i6Ow=": "385877000000", - "_Hw1fp7aUjuQwD3w6xFnepPQzWeRFSmbKmGIhbV-w9s=": "385509000000", - "_I5kGdFGyFGSVaD4_2hotkk5MM02HmxNpM0tF-jHCHI=": "810436000000", - "_IH6f60r8udn0eIHzJ5qAPc8jX10CAXXAs39UliqZVQ=": "393313000000", - "_JFD1qdDP2tqn1VX_QkytK9-td-VvQWourOQrVjjblo=": "1927537000000", - "_J_A8dndW_ZTR8cYdagRUq1BwiLMRKVTuqZogyw4src=": "386715000000", - "_JtRHmDTJYvVAKCUYcFSQbd2Ma71n7kzCaOlgpeaIqI=": "1538433000000", - "_K2Hb-5t0s0k63RgbHtjINA02A8NK4e3HdRBE4Coau0=": "414392000000", - "_KRYu7x-q8_-WT7BmKGzgPH9Q6j0jqLQ12EthpBDu5g=": "1446372000000", - "_M9SPCGQL8_6oPFARwZ6e_silK2el_YoHIR4nV7GEJA=": "906721000000", - "_Mf07gvabAhHKFA11Oct_q2SISAEWzEg8z4Zm_hTYrQ=": "769230000000", - "_Nf2_s5dQHRwXAgoKEZPhp8FnFnOnxDl9YA9FOYYcDo=": "1153814000000", - "_OSnvXxisMgElCS_jMvNf5a8xgmkG3mNR-IPeId5W6o=": "1238591000000", - "_Opb48bGCUvZhkebOQ1uC7ywRyF-C3EYoe7As5O7Oc8=": "413877000000", - "_PCO9FG2bEXN2fTgINljeyhMREadjK1fJLSF_CRP93s=": "379260000000", - "_PFcZp2P7h90fX_ZypCNxHVwJU20Z3eqMjK6bWE-oWg=": "4122992000000", - "_PKBzqcblsJTw_q7Vt208h_-uSatkpu3M32T2aPI91Q=": "377579000000", - "_PNhs8JQl35cCmiKilXUpk2-y1U-1RvbjqPuyRLtfsM=": "1412228000000", - "_PRwYatfMhutM-yrbzOfZJLcjSfcmodP5HlOzPMkZz0=": "411085000000", - "_PloH7v9PbGF5XRK4PnuJ3B4P-Gg0oL7oDkUNC-Fxwo=": "455367000000", - "_Pm3Uoa5R92fXvjdx9siY1ckxqjdKgY_hjfSK8D1eqQ=": "384615000000", - "_QTj6d4R_5Gn-6tIkg0sY0jtYCOt7pbKYvd-KOD6H64=": "470553000000", - "_QpO9pbqfDCFuAHTjgtD9Fg_-dWCoI8OJ8SiUdU6AVg=": "488979000000", - "_QtBe7KOIV5k9E1adkUWjelwLtfVaaGLUGQKKtAp1fs=": "416666000000", - "_RGTpIICrLRzBm39ujFZhmbdPh_Za_FJssR0pS6vgag=": "411085000000", - "_RGomn3FXvFXIE5hb-w8HMlvuK0QJKnO-1xTw55mSog=": "384615000000", - "_RIhKUig8ek4XsFInkse8_pAYzqP0O2yhj-554lZQoA=": "2637613000000", - "_RNwk6pfUVXxxMMBT88UoCY_mo94J-S9GYyqsFkHqCM=": "413111000000", - "_RRI4fF9d1Qrmyipc4_-AXGz-GrTZ3HkkjWIDgC_7Bg=": "625028000000", - "_Rh5cBtPz0qlLcIiwx_yDKTBWyQfQWiTfvqz-zj0QVA=": "368100000000", - "_SLEZoVDdwA18neheJbarxWNL4LKOyJqahX-vXqI9UQ=": "460259000000", - "_SMJJLzqupw-WVHt_nwspjS7cmGsOjL9aoL4RQARTc8=": "9727081000000", - "_SMmVyrkzVK_bKw-TppgUC9PpRTvNvC7NhiNrGvhTBE=": "384615000000", - "_SUEmt_OeWDHv3JW5-JBxFK1JE3Ku5kT_9rmQTSgbDc=": "445391000000", - "_SWuaFuOmQFCI1EQDYGz9qxw1AUcXqt3iaNFhr13HWU=": "382394000000", - "_T912hEJxmsy-d3QWygE72VMsJMOOoRtNn6QC8KdBGs=": "1186326000000", - "_TCfnWRuKM46ENcsj7kwL2VJu3NeEAquw8diV-xC5q8=": "464025000000", - "_Tb8m-YJGR70PlF1qAjsKw_IZpVfkOWbH3P5S63nlEc=": "1923076000000", - "_TrfOTBdB5wLX8JVBfnU_DVWUTiHKnyUvtlIkStmMzM=": "407469000000", - "_Tv3iUevLKBX0M8IF3p030NA7Qn5KcxbJjayP5HKud0=": "1221386000000", - "_TwEDW4TRE734bkLQ10mUhZ1ovMS-ItLKxtDQFKzOAs=": "384615000000", - "_UHoHyfC8qEYX7cNN6j2jduNXhlAcFbdGQKuI98VbrY=": "583333000000", - "_UQiZ5LZ4TbpvEA5b5ksT4Gz0PywRnn8c-e3Lx0usxE=": "3846153000000", - "_UStkXqcIReg-Em5WNmmFLx4AngI69lGcNJHYYE9gN8=": "405552000000", - "_UeogrpwL5mTAVjhghq2MSL868TGrDfXvOnmeEkODoU=": "4044705000000", - "_UnRUf5JSBAqsBheGqttHWn3J6ovvh0QjdzKxq7gVQo=": "417125000000", - "_VMFSFPXntMYCy46wv-mnJKKjSMvGtURed-mP5UAEFM=": "586733000000", - "_VTP6-CyUIXVFNU0nCQACxZNoqIKkiP-hF-gvuIK-3c=": "769230000000", - "_VinpyynvR0w3z7TMV3_qgikpuJvvRxL1R1FQrf2koU=": "2107971000000", - "_WcODzm3akjOpB7is__64Dv_v9q2n8r4xHDUMc3HNNM=": "386582000000", - "_Ww8BHgi0wHSlX6g3dKCF7g5g0MLkckLuXxIaM0agxc=": "7692307000000", - "_X_S1a4Skm7L2VdJLQdDbetD50u65dQp77W0ofDAi6c=": "875430000000", - "_XdKZPg6m4czqGL-VHKrqGsF1GEMWrrAZz7eZLX6Vo0=": "768082000000", - "_XpVlSWWsw1glp1wCvV7xtmMSporTblRoB4Hmp8B18o=": "379260000000", - "_Y6EQjulNF5oUy-J9zArC5LtKW2vvYgAmaiQaEF74FU=": "4244886000000", - "_Y6yIm4awBROMsVFVLwUihGSb5-ZpsOZUB2NwIwfJXU=": "385189000000", - "_YKLFmK_s8hkoXUX2U_yajFBzujm07dC-NZfGHxqY_A=": "416627000000", - "_Yl-dTuTe7NUTbTnEBHuY4NrGzy2Fq4Epob05S7qsAc=": "6525968000000", - "_ZOceiUQtesGuMktHwd7_G9xSfzSr7ZctfjD_AsC9lg=": "1186493000000", - "_ZWNaQBhjkV06Z3-8ZmaivQnZcj6MhpSX8kJiZbunx0=": "417636000000", - "_ZWxwRUb5wERAm9dDzIje7UybzzrVlVMFbATEhooPYY=": "463216000000", - "__-RaaV53ar_uD1pD9flug7CL7Q5wBDWj4eyfS0QPKU=": "385509000000", - "__Kuedlwv4KqKGS5dAsmPCjBbjwyb4GG1E_BUabrV2Y=": "1923076000000", - "_a5uriaw9fNiChZlpA48QGmdPNscdTpON5up-Ty6_Io=": "405301000000", - "_aJByCJbtsRHWygxEiev9ocoh9hEEwObV4BnznPQ6d0=": "384742000000", - "_aS4tSGomgYp1CGNFYfF-Kmbqwz6uPRTtvoy1c9x0iM=": "423370000000", - "_asoHzSrE04ovwup2zJY43Dtfd6jugtOrszYX2n7bRI=": "2027186000000", - "_b1ZqxCGxutD7lGp820fQo9OWIDAXzecNg0-sCiJ0n4=": "1923076000000", - "_b9Bg85dOho2PJyMiBvgpMITIqkEmJkFACOUR62Zl3I=": "615663000000", - "_bNvwH_ELsvqAKOK1h1LsswBIGlPGLWA5ZrzAH5c7no=": "376529000000", - "_bWXYpAit31eZIcSOIW4mOcE-fwVNncRRD1cHpH6OVM=": "473176000000", - "_bj5dYXJEWI_wWD7mpB5I2fuEYxLKt-ZlKkB8sd1U4Q=": "384615000000", - "_brgpZrtqjDwlZKp4BXjHubF5nehC2sdwVgi7UbhOPQ=": "384615000000", - "_cHMryw39wQAzVqfo2PsAilrooOLqzMB4L6TZLP0-q0=": "4555960000000", - "_cZEnbvB26qzIb9Qz58ad7vtTuylFJ-8KB0Ka65wB8A=": "577878000000", - "_chYkbV3UC5WT4n5A5IQhdR2tvArxWdMBfvIiVWUprM=": "1135742000000", - "_choaAf55QbDbFYu3ZC_1jHIzYA17qPBvZBbVRYiGQA=": "500748000000", - "_ci8oxsRV2F4pRP5sNIbOeajzdEdcb5JqZR4iRCFq5c=": "1708326000000", - "_cxeEvEuQXU3oQSYhUwjM4qK4N6iRCdPfwy8xDeDczk=": "2373505000000", - "_d0xGUPticpYI6OG9sBVQlQdDIzGOGj4D5vF6lNjDVo=": "386318000000", - "_dbWnqaxzGjZV173sEwqnvYpMofvwnncCBJGLZnAd-Q=": "384615000000", - "_dkLAPzFbkhQwfhTl5G4W0brOddpc274RzmNNue31NE=": "576923000000", - "_dpZc_t80LaX29J53Lhet8D2k1fRCpeYcyItlXqZ5cQ=": "665212000000", - "_dv3sb_cxbWAtVMWl-o4L6gIZJWWhwM99K6UaFrtloE=": "488135000000", - "_eJIkmMvUhsoAbM4GCgAJWeLKLHhwTBJDiu7n-gm6dM=": "1927537000000", - "_eNG2HOLiSqt6_Ksw-Z_puHFZZPYK4UFONo8A_Wx7bE=": "1689607000000", - "_eSWwW16VPI6PlggHpAQHThXepWubHWM4R52wq5xnTE=": "458982000000", - "_eWVcVnEiEudKvKtdQaaD3Yjfneb6x0RJlg9OsMBmNM=": "457943000000", - "_fQ8F9bbDvkCWoVcGBKls6YZfZyT5AOh88-01M13Y9U=": "1156045000000", - "_fmE4hOkJvcdJbwZWDmx9qpTMJvobVxmE4HQq74QbfA=": "3846153000000", - "_fyd0pDFO5SwZhSUpiYL2AINcKAnw73JZmKdYStKW0s=": "378456000000", - "_g3WoC0_-pKCF37GK_zcTAC-Egrtdj3u7bPtU4nN8TU=": "495027000000", - "_gbgpL5F6DLFOgF3_CirXr5CFEjQV7ELzqA_nSQIhNs=": "1162240000000", - "_gc0SpvtURLx6xbupbu86NkxbX9CQi9sMKZvcycAtqQ=": "4992433000000", - "_gjoVXO8DHJXOPS-yA2AxQTLuTKN9o1uf5RSGKnrQow=": "454906000000", - "_hCJGGHYiZBXP8cfujU_DIxE8a_6BIAuQ0WOocCgZ-g=": "450384000000", - "_hHzYTL-CfDQwkVLDD43t0jjClNaQJc1KQQt-EXFQR0=": "384615000000", - "_hJF6Q68MaYJYYtwNlwBo8hmdGidhcJ1SVUqOT2Nq6I=": "453414000000", - "_iqmxz4FZ7o3D3Jcruxq3WrcMgk0WCiIsIjPU0m1cwY=": "384499000000", - "_j3FKZaGB2XZxamj6Fw4qkMOLGDebMbHJ772ZVaaEtM=": "469468000000", - "_jGlOtmX4mlgSIvqTFS8oFS4QPrKfaJCjpoP-IS1SB4=": "4036313000000", - "_jLf9IqTglGamy_uJhP3H46nB437vAq54GbuWSVA4Kg=": "4847358000000", - "_jb2IhQAtZlbAyAX4w13PZ2dSV3RZgwe1d2YOG4CFxc=": "371766000000", - "_kKOMRck7JeXz3cvcTSJDrRQOn0BzRzphVtaSArr4uY=": "462146000000", - "_kjpsHqjkWxYmp6_VTKQXfOTXNdBqxWkiOM2wzN_kl4=": "361016000000", - "_l1WsDvB-p8ASjeT0LV1LXsl34jVxgKReP9zFy7I7-o=": "577137000000", - "_m2vn2PD_s3kDCo92_moF6q5jCKBOJNynFEYFV_arBg=": "457167000000", - "_mDkdsF3sJtynqmR4i4XZpHlbBjhoBDXrHjpAyf4A40=": "396009000000", - "_maSUWNP33H7BeJV10x-JSOk6nIvn5D50x0xE2SP234=": "454545000000", - "_n1HAgLhyFV2quqXbETOrT5MwaVTEJY45wP_Z6vm7Yc=": "453764000000", - "_n_zvRofrswZubchiXRYbOqWk6KOAEFiNc9Srrj2v1c=": "7499999000000", - "_nw6UjzIUQxlviyaVq2-RjC5PMUFjSith84kZi7f-DY=": "403851000000", - "_oa0ruoZ4Q9ULDwhl977KIAy0-22Z-dYpCtYDPu3lwk=": "768677000000", - "_oggJlX3sS_WJNouAeDopwcnRMUhhV6bj7ZQNaiBCtY=": "2490036000000", - "_p3Y26RKW1tlz9ygdX7o8rOwVWxDhcpKxxz0tSA_Avc=": "846282000000", - "_pLhhgxUXMuUmfWU8NCudNtXKfFa6THrjpS0d8JBH1o=": "2498919000000", - "_pY38l9CabUUBkRW2zUXqkfrFAfIh2zmS2hrN82xnoE=": "384107000000", - "_pf5O41xhT2mplQWILVQkC585Jq-45vUZmO9oGHmTIs=": "1002486000000", - "_pl6t3AmtD_1cb31VkzNl40P_FEERTeEGqmdly-yuEk=": "388750000000", - "_pm6Xvemt3WTiTsoIGHquXYqA1pAb3MN6ylhAid3Sfg=": "417636000000", - "_q013uKG8aHh3IhvaR-GXwuz8mDfKxF632mld4PBDjk=": "385939000000", - "_q16aVUOCri3dWHIlPYFK5tRx2YPEv5Ap0O2YqXgGzs=": "385509000000", - "_q1YWfnjQmXu1XKcKL1gpi2i3_6dZbBt_iH8M_Is9yA=": "7710100000000", - "_q7RcVqLTznNFyPLl4t1n211OtJ_99_JcLpmZ6DsdPM=": "3358461000000", - "_q8kwQWK73tyiNjHDNHtVtFhpqxyrULPplXbbhYfkPo=": "432503000000", - "_qGC3EeE-QL-PnIAvp1V5Q3SEEOca4wR4fc9A-QKEk4=": "913841000000", - "_qN05raCFW5CRIbWEYyUXbM9DdQf_ML3VLrFoG2C4Pg=": "7710189000000", - "_qU_fSrEz0q8q38gkLSW35hx-UgKsrS5H9H4zvDyVF0=": "417633000000", - "_qUvCi7aVqL040lEhHT_ZIl9SAk_eLvtqin4mLbChiA=": "1153846000000", - "_r0WRk9klIvECtJ4YuGfsjHec5jMhcfXpkV1UuuuXRE=": "379554000000", - "_r3oZyy89ckoswk_71K7JdHcNEDaTTP8SqaAt2TNaDE=": "769128000000", - "_rxAr2P6N5LJ1mmOx1tTK_YuXIK0hnq7MAOFgUM6XjE=": "3102907000000", - "_s4ygMuUw8Bq3_SdcJNJAy8kWqLbi5lRsbB_LGUrtUQ=": "1999999000000", - "_sOa_iJQi0HDx9mTco1SxPaB9p17qdmsmxfijikm1MI=": "1666666000000", - "_sv19wjLq2ioDewqIQYNd6JREElHAP9iME9imkPVdEc=": "483530000000", - "_tCjRazoTtkDUWdg9M0IvTOoSDt71ZjRBumcds3OE8k=": "385507000000", - "_tNYetF_0Nr8ylpcyFuJs1v9hwhRq--GrKL1Er2uhGw=": "385509000000", - "_uOV6JvaJMu2q3CS5Fa51BqtJXJnVSobAFUgHYNCsfA=": "992250000000", - "_un02SpUFMaBUtYNjrDz380lblWJqdq1SwkLGmBwNc8=": "473001000000", - "_uthydUpbBjj6174MgbQr3UHmZW2UyZbaZaQq64zuW0=": "384615000000", - "_vPWl3pTjN-pSL5fYERgyFdOrynlFWgahS1eYoC-9KU=": "452525000000", - "_voHBvq-QAa2z1cqkrOHfzpRpxHqiXWfHMBRsbJs8fg=": "758689000000", - "_vsa_jiZjYgEHDhVIkSuOwMU5x_0fmbg_jkhgWA9Fms=": "412211000000", - "_vvfAFCnnEX-dPQW-XnuczBsIxJd4oeKLKGWSBWKas4=": "3175347000000", - "_wREz9NcuXMp6VewRyRcbZLgdbzsCXEFdnxnu9S3Xrs=": "387856000000", - "_wpEA2QZ0Y8cmbarRQa1577xj7jIoi0iz9R5ZOVPFu4=": "705402000000", - "_wzpR9E0Gl30ZJBryJGdCvBEQLmrnSxRLxRvE-rrKoI=": "1144901000000", - "_xIC3ZjQcJAQU_MmvozvSxMJJ8kyWutNK3VTggETdw0=": "1894410000000", - "_xLMwo29Cm6Jxhqf0GM3583m5v5SYHMANNZaWkuLD0w=": "7702727000000", - "_xcjXcEsJpCBbUabwcRZK3nB7Rxp7UAldddbplOErkQ=": "385507000000", - "_xliW-IucAk3YQRta-B58E58ID7tNQVUywYE-uUOBEs=": "1666312000000", - "_xqxWJo53KKNOg9kTrpj5Jp088-8KzFntyHuxE5qufY=": "464701000000", - "_xu05xWhlO4mUQ1nu0338VFWA-GVexPxk2mJPzlJbgA=": "5919994000000", - "_xuBuOXpnEhk5bD6SkgQKiETuXTq28cPhhJ1zr1-FT8=": "4213690000000", - "_xvw7YtmveVOy6vORArEntN-DL-vX1GzDLElQYbmVJ0=": "567919000000", - "_yMsZ7GcqR4HOR6PLQ7SPuhtRdPRMx3F9s9g-FeND0U=": "1927541000000", - "_yeEeV_1j2BGrDivi3IBMSbVzPF7GsaXhBY6s1sNdAk=": "769230000000", - "_ynjVfJ3Qbw4PZnMz8jeIuvyRedAHaCbYAkVZQt6g2k=": "2865012000000", - "_ypxyu7L_yJ_njTiLvuStVIN86St09cSa6z-u4Ahiq8=": "384615000000", - "_ywJocL2SmXywW3SihidkrhLEl46U0CNhTTGspqHa_Q=": "833333000000", - "_zTISlp_IxO0mhXEXXOdK79pr9stFSAADSe99z8w3Ks=": "2030639000000", - "_zVUQCEcK4r3z-bBL7Qn3Dv0Fwwm-8NZdNzMsGjjzzw=": "470734000000", - "_zXIJuXQUfkd3D2w1k5fx-rkPCIVeIpCc51T_WOjlYM=": "2459941000000", - "_zpx-OTJ9NivsWHgY3Gphu-9-nj2YabU4TTnrTD4YWA=": "3855061000000", - "a-ZhNMX3GEHw-_AaxCAzP-G8rSzq6lSwfc6TcoDP2JY=": "1224962000000", - "a-fZxyp8K4mE7Ul3wankwzgB7Gcc4vOqKp0QY-3KepA=": "384468000000", - "a00Zmm5QS-89VE-vQ2GENdCgbm_QJ4gtW5XdLVEJd4g=": "394923000000", - "a1tPA53U41YyuxILNSrEOQA0-1_fRliGhS3eNTj5Jqk=": "417630000000", - "a2-OPP9fUIGuVmwWcWFFKAnPNeb7Ry7dvJvUNAtiK1c=": "385510000000", - "a2OPnYNjB1iance6lmuZgZJrGYHIHVuSqV_U4bV3M-k=": "1145412000000", - "a2bOjYr8zTXIOhnMnHC8QDU2an_JT7fYj6X6NhzmE4w=": "384615000000", - "a2rOVYgR9791Ml94a1PYxjcokbK9sR4WWoNnoHyEbl4=": "926789000000", - "a33uyJ2Ugpqb8Tl-ZqPuQM74ulqr8MnAO-HdmqBoFEQ=": "1058856000000", - "a3T8BOztHwiIHtk0hF6k7YvZKjsL8feo37RbkH34Res=": "461437000000", - "a3X-S7gV-MmTl327klOSDGTD2nG0KgaSL0eBxLRX6PI=": "455600000000", - "a3bz-wTzplzriYy8L3qLa595XHTvmIbzheGeNwiDlDw=": "763735000000", - "a4OZqwNY1IzfWYHVYnxqT1FAGhxoBAX7KAVww0MEjBA=": "385507000000", - "a4OlCEMExpxzw8J4kW9Up3tT2DF2BnFYDpxWZJliRbM=": "416700000000", - "a4dIXSZ18v9GUVKbNTKCjxhJiOU6h49qZbcElgn_m3A=": "756620000000", - "a4onaamBE_QTDUIz6YRuFJo2JGVWEEZL_uB0Pmjb_MQ=": "416662000000", - "a4xCkbqsFuYJjnuh20qfXu_6uVK5OUjn2EFvWjMCqXs=": "461318000000", - "a5V4pf8O3n_TJaIINdTTIzsDA7CHm9VReGWkmC1prQU=": "4972182000000", - "a5e33MK0yelph2Ri8bTXXQog3tsLUQw_wufLQzRY2KM=": "452437000000", - "a5fNyhMb9LrDscViDFNonejwlR_i_ZSb0S-k1WaqjBs=": "423464000000", - "a5oj1KJTJ5UCAFpwsujeXI4u4sU5TxZkmg2XS2YOlVI=": "385510000000", - "a5uhM4ji461AhtCkZmnvPO8thDQx3S0X3-weDVq3RCM=": "911490000000", - "a6HX5npNFr8GlL0dfmH9ayIHTmsoEWGdwDcbXzt7I0I=": "416666000000", - "a6TcpKAjk9m0aF_Ka2Dm2vv5jG6Gp7zFuaRsprgbkSI=": "374928000000", - "a6fG3SBAXZaVVc96KcdesnqNjXQYPZIR2i0hvk7yrhE=": "911212000000", - "a6hrm06tHNUWSUFr5slantl0jdMNQmYRTqDIljkk0Ec=": "412455000000", - "a6i80loqMtZamErnpVaJd1hq_oIpyrxxvkyfsiEpNwU=": "384615000000", - "a7JUnmTkCO6oPcGXDUUEVzLezGQnl75X3uywfUNA31E=": "11861633000000", - "a7k7j3dJv29bzUTrk9PNAPbplrKbq2yjEMT9bmQ1Ks4=": "708333000000", - "a7y3QUv9RZo4JXTHaLLbfxPY5TJe49QZbN1IgBhUyj4=": "2692307000000", - "a834aPDzr_rFjXoLVGqqArD_NDxUmp-1E8dD2xnHQPM=": "832250000000", - "a8YHtt7BREnQbbZUBGTR-iIhNeFLIzRlrrL8ujdwu_U=": "447339000000", - "a8gwpp8akLxoN0oDNj4tOy1bt_0wnc9HfJYNnrwOqMM=": "1538461000000", - "a8nDNCQJzItV1XuEQwBIU5CAlbMatk6zeiAArDZI9DU=": "6153846000000", - "a8pr7FarmP-LNAsksxtRjmCPJDEuN0GJD6ylT3e4FFg=": "466696000000", - "a8sPaNFoh0fIIHJhxMe-HrAiySz5LJ5lUyBHCYgDC6c=": "1612263000000", - "a8wgZWC7ISxC6iWyPAzTvlaI65Nkwy74DEIR2XRvT_s=": "457745000000", - "a8xuf5b0JVL1iJfGh5Txk4ETDcNE7fXqoZSsbuqDxrs=": "385109000000", - "a8zurQfbO5Xsm7UhPCmx_xoH1BxBTQtNPj_nObcQgKA=": "1233257000000", - "a93nBUiYakQpqEwM9-piHyW0txWwQSeqUwCvFi7bvmg=": "446629000000", - "a95JR0ZUsYkhioYZUXxwg9hNhAqzN_NVkuutX9ElpQQ=": "384615000000", - "a9ZC6oxCoS4UoHpMo21TPMjo9WPRc8A4mUuhW159Hb0=": "850858000000", - "a9bSkBLR3YyLvE7H0uY9K94Hh9PZ2WnRw0fJWkRjTsw=": "833333000000", - "a9eOcgNIBhmuw5axiDn07Kf5GWiP3RRI2kM6KAnbhlE=": "1267685000000", - "aAFOypdj8hscRkpuZEnjKDe9Q4SE2SZ0Lp5ivhwfBHA=": "399800000000", - "aAuw-Eo-YT3jUzqUSb4KQYA94l2GIzBdDuljPxxkris=": "458538000000", - "aCjLxNvC901Gf9-e4qcM_QfAFa7DOAOm3LP4gODVe34=": "384615000000", - "aClpWtu9BAvtHgZ89ZSIe-qR3TVuDic00Hqec8cnpv0=": "8140575000000", - "aDLO9eZtMrR2fFZVa75rQT1tdMzSzC7Km_Dp8suMAMM=": "5725818000000", - "aDfjW3lfADKzLtsPeiS85ZTB4t0uTS5iORxUp02BHUU=": "384615000000", - "aDvnmTGouXzFakXbYW46Zr3rHNM9BgMI5qkZsqJUrns=": "1923076000000", - "aFY363NiexBTVeA8ObLBDgsZ5M89bkipHDm_N9ayAFA=": "392983000000", - "aGDHtKV4EF70BVv3imOg5uyKGxUk3Iu4-c3X-oX8fCU=": "384144000000", - "aGECCGeUjVBMNUUYV_u4k70xiMhLmZh2osmSYUUUBwA=": "384610000000", - "aGUb4Lu2r3PgRq_X_9d4xsRUdQrno46sCoWcwnZkeDI=": "1923076000000", - "aIDOqFb4gaRFnFgqe-SA48BMtN09xwIDQTgxippKXi4=": "1893165000000", - "aIH8bHFJZ4JgxmVDejyEvNlF5TjM0xkE6RSn8ZfHCsc=": "2471079000000", - "aII-iJKugOoXwvCUNmHJXrixU1R_wj3sMz35h4yVgUk=": "8405484000000", - "aJ3fCySBuJsR6nu6u0IEc7UNFXYSnlJ00xi6iSrl_L4=": "683851000000", - "aJZF4Jh27MoGoCw7sD3rSHd515MmuaRfZOouPQ7H9Iw=": "4961614000000", - "aK2bgwINVoMtW0rY_sdGvPF4jVWTExstKu-s7T18T44=": "1182478000000", - "aKYJ6S6d7Dju5Z8ezo4EwDh7dzbRdjgiCgJ76_LJj7w=": "20734424000000", - "aLq5Jn1SCGpuhoWzUj81nUqi7RiH_GJq7sO-SgIDjJU=": "431414000000", - "aMLw4vS_Dj2rz7ucFsoN8kBg4CnNI_0NbL6RiYa9Lc0=": "468818000000", - "aMzxIdDgWOdQHF42CIhB0BQzfnF7hTNWgoHu5UaXM-k=": "1153846000000", - "aN4QWTT2ORUITwMdF2WewVQSiOFv_gsck0jkWggmV8I=": "482645000000", - "aNDbH0ayeSTt8LfIjBjOwr8dsDvnRS0oFEQLwVqb__U=": "3041663000000", - "aNQjDZJzE33KZNEt-jOV_ruizQy4MS5QpPlHSxEGvd8=": "482269000000", - "aNilfiQmSvprBKeoqlCOMDdw15fLPlonuaNH4mmV4Hk=": "384615000000", - "aNjHZ8mY__jAvdvbW29DDjjqj_Jdkx5IwawtvzPgaBc=": "462687000000", - "aNoEUcAa5cwYs2vDq764ExkrrlDUbhQOe05ILyAjojc=": "1406400000000", - "aOPjqv6aSZlt6qQKUT29JRBFlTznKYHJgLKwApjUczA=": "1927530000000", - "aP-CL2XrJ0LnqvD9P7E8ZQ5Ib8dZVCIRfJwpGG-7ZR8=": "406843000000", - "aPDu9wHmLdKVZEisOvhoCMeOohs1kjuFhIMlYOfkZS0=": "5769230000000", - "aPryZwLrnMSXTtBHWIVW7HQ-3v81IH4wvZ-YRIaGUzU=": "452425000000", - "aQFH0B9fKrKalBu64Fs7ykIKyPuVnBXVG8U3b0nM6lU=": "4599140000000", - "aQm-dS_j3PNQS8SvZBYZyvsdBPDApdpe8yxh2sifF08=": "451562000000", - "aQq6lD3ywSdKi7qLo0MwGR6qs1u6f0md0K9bUobXaBA=": "375634000000", - "aQtC_Uy6meuCiN0JSUEsyZ1njEjQPv7K9vAAzGTCRCo=": "454984000000", - "aRt9bbOpMmRKGoKaqT1XBdrBis11y2vkDisdR9-09Co=": "397291000000", - "aTEP6dL__lfgUeLNZW173e-6Subi-n3Tiat0b7-r6oM=": "1840418000000", - "aTMRwpiWNkd0vTklHixL-9uTVc7uufsBpt9K6F9_Bwo=": "691604000000", - "aTTnYUy-cVyQkx2FyT0Q_F1PmcIsBeWgi45rtfaS3Vk=": "576923000000", - "aTzHzKayMKP_2J-nWeJe3XFZwwz4UJUr18Y943mEAxE=": "383684000000", - "aU7D2P_GHtj2r_hxEOKDzFL-m6UC3gjEHrBce-AcAwg=": "391429000000", - "aUEp86u4mPIhtiFJB5bhdBFbT_kn8gv19Gf8LyeT4S4=": "384735000000", - "aUToS8k7Sc8Q-sj-Ve1FUZGlPoy-UvZ1weyX_wWExtc=": "2094619000000", - "aUduS_8iQHoWFjZONRi7kFHI16Ur41LjL91yy3ASDD4=": "384615000000", - "aVFeN66fy6xVsPzI-8pldnv9TA6TmL8rhqpD842C5gM=": "449794000000", - "aVXZyxiwCTLHWqI5qwuslKogzpu8E-Kc_bjLUpizlpA=": "455332000000", - "aVd36xWjDRF427qTHi4xHMZnISyAQGC_ZV6-4g65o-c=": "388750000000", - "aVqZ4n6fsulO7Ss4bmJrRs4jQ3EQkm7Aaaqs8Weacw0=": "42499875000000", - "aWOhKYLrsN1V09FhxLpGJxeS4LJ1iyu8Ak5YaYDHHVA=": "470586000000", - "aWnZ-coeek2UmmN-1cWDZPR1Ed5JCwaJRDSfCiW-7jI=": "917721000000", - "aWsvMn_hw7ZQn0zynE-ro_Bz1KgJ2wBTUFkJuE5KvFk=": "455823000000", - "aX8NdPz3c0iwi6knkKuZEEulDL4-hMFF82C8LGLBtk8=": "464889000000", - "aX9NGrJEMZsohnn3vOXAI0xvc0ugn_njydU3CTktqNw=": "5590909000000", - "aXDvgcZqGrkFMhR4pXMoFVyR7okwTh16UkuSzc9cnJ8=": "4544046000000", - "aXkSInGIWH9MBcGI_vcET8awfCCyE9gjzUZO8z5f5yo=": "1538180000000", - "aXuDcfZ5mqLx1MzwyU_5_BoHCezljO6Ui0zwvc1U_F4=": "1843840000000", - "aYA0lZVYkI4liu8ZVcJ0NMo-MBHUgaVWMKaBv8JVpKM=": "384615000000", - "aYhRHahCpGoRiqIVAC2d-JgMEbi-iLmx50vVv9AGE1A=": "460884000000", - "aZ0UgYWO0F72R2L0eCnHltVuGs89KCtvaX_yD-as5cc=": "417633000000", - "aZzvbSWz99DxgtVD255EDLkhz1rcau04RnQFKuCb3cw=": "903577000000", - "a_4jn-2Oqh-baxALuHRRAUKir-Bv1wmBTvQF_VrnsYQ=": "384615000000", - "a_EtgOTJ5VjZi2xMkdY_aFfXdNb6ZG9bYVQVONMPYLc=": "384615000000", - "a_jtAMxfMfuquKn_7iuuVSXauR-01TutefIYAvJpDIE=": "2690478000000", - "aaDiTEQXhZRRkmn7UE_9BEvCFNI5aaiWuynOZImR-ow=": "1713789000000", - "aa_m8eSUU-aa47QgoNE79HlNI3sPFmYAna4ymCDX5d4=": "20833333000000", - "ab8J3POqDRRY5bgMcy9XLUwZlcs846tmbViRht2peuk=": "768612000000", - "abKoyoV3ryCvY8NMO4X9LyaWBL2oSo4_45bmKRa02BM=": "642698000000", - "abnyIpdjQdp8thkDQHrbFHtVS7fhEF2kmyz6UDGXYYU=": "416673000000", - "acCd4cBlUaWbYo4jV-drLC6k6YNYucHfhb5vW57f_k0=": "447145000000", - "acTBH3ZAoF4merlZeoEIvVJJewrbAC21W4flbNJsZgw=": "363041000000", - "acdDAVYS55_Dr6-I_WnJIGeYgtQU4b9pImvc62NorJQ=": "768696000000", - "acf611Gtde5MqKQU-65vYE9hCX9_II5NS5kgWAbtOS8=": "769230000000", - "acsmjcJHh4-p4sfex_jU_Wr8ZLcFRJhhQ7LLBaM8CxE=": "1620921000000", - "acuDKeqFFNbsEp6Vx1NYBvmSSKTbdMue4o3abnGHDSk=": "2994020000000", - "adTGFzOL6V4w-pCcwDnfma575LppHxQekxurp2ifRE0=": "501408000000", - "adXqi4RWkWiQnBNaLHEte3WcZ_-HDyiAEGNZtlD13sw=": "582168000000", - "addnAsl2RvVRVvR3Hjs3Hm4aHexCT4jKiZVrD9d8_PA=": "3990137000000", - "ade7wmf5-SV0dn7jagq-UuEWvn5tfCdOFy53HQ1UmR0=": "455644000000", - "adrYiLOSSVY-BRQUazw5QibLxccw43nmQCVI9znOMjY=": "3855287000000", - "aeDPnDFW1zXf_ZmJq_fKbtltvXGEMdovhV5-sJMfhSc=": "384106000000", - "aeoMqI1Tt9a1C_jnTfJA1rbHbGj0Cxd89S9BanGt2S4=": "1947297000000", - "afEwg6agPwellAeL8YMs5bLvZccWOxNEqApjwOJ73is=": "385606000000", - "afJohWdQ3tksIkY-AEm5PD-Hp8WEotN-I7ygqvqVVhM=": "833333000000", - "afVyMcAZ4x2mLQvXtC2Tv5abDT3NBg-D14Q75pX4FFI=": "919217000000", - "afnMJ1cskqiooa8c0pq3_Pu6c8hYp2w4wTNjB_mVf0Q=": "904565000000", - "ag0vFtneW5W-G2wmiFVvBFag_8I-zGvU5faIPRAtxH0=": "1539786000000", - "ag2dHQEuQBlyyuzEGZajMyAe_-7ShNJz5eb-FUFXPII=": "384615000000", - "agEhrvF4f8p-xbBHJmwmwURmBFwyf-x5exf8-bkIt9o=": "1586521000000", - "agRpkdA2ECJBlPqwcKnKancs6351shoZnhySY7oWQNc=": "552637000000", - "agWekXQFv9k44JsH_BU9UJ971C4T5q-FXwGE9r42OBY=": "379344000000", - "agg5Ygr6gszcsAqgO8nLY-ZZNm_AeqClMeaQ9rSR7FU=": "377429000000", - "ahhv3gEXr3UfnOTLCy3yYXlaJ3TfSr9GnCrJNV0x4Us=": "411085000000", - "ahm67ah2GW3kwuB6dvufHR5ut1OLXyjQTd7c8LdSEJA=": "878255000000", - "ai-L4p-w5UN3QlDqaYink5iAmA3x77rf-30D80QkHL4=": "379260000000", - "ai09Sz_XjsvyMtBSxJc73IPE7wOq83wFlFmwaxjO-e4=": "490314000000", - "aiLLCIttsunp3ruDVEfe91iU5ZuoMl7f_a8zR3NIyLg=": "463031000000", - "aip4jgGilQK_4VNa0liovvvI5V0luQMltsz9D69ZNPM=": "445420000000", - "aiqvISSfne5jMTV_-BLLV-1ARC9Z38GJl16tMfwY1bM=": "499999000000", - "ajDHElyYmHUf_tloCAQOGFqROkzj9EEtdeKqI6iLDDo=": "983716000000", - "ajMYSV8W1JO48ZXkV900qhPqyyRJzYtxtziHHuySUYc=": "762463000000", - "ajQ39y87m_tzIV9LkZXZMhizuV2jtwRr0DvhGCY7nEE=": "396485000000", - "ajY3WfUtlswbQrhjUQc9PYxWCHs0R2ODHki3N0zcOs0=": "1864908000000", - "ajqIs9vyI9aYorqGma0xTS0ktbhexgA39VKP6AiX6Bw=": "462687000000", - "ak1DJDWydCmgkhiY01iJNBTgBIB0TaZGTqU7ebA-hrs=": "455600000000", - "akf898hSl43P0W7mptoF24k-Oy_1lQWwPpzWzSrSq-8=": "1134962000000", - "akv0UXv6SZ_ZkRcUTapeqGxQ9Ea9lfwO8JoLlMT5weg=": "1538461000000", - "alQUZ4vzcynJLqU-QRiTcbxto3T--fAIuYu_cJDSQPA=": "445868000000", - "alh_hOph7xF4Ff5Ta9avqREMswsxneWg_bboMMg1RxQ=": "377583000000", - "aloVJUHsNKrgeem9-ijZEWbXNZP2mo5fj9-5BWk25wo=": "385505000000", - "amLY5udveMQggLYh_jSjjd2p66qhHIHDxNDJLDUBg6M=": "384470000000", - "amsBbISFcuN0g2_slHmIWRymjZoJi_XwX7P5wb1ZFgA=": "384615000000", - "an6-sfRjmOVMQNVihhJuGVVPZylgoMFG58ltCLE5D3U=": "462146000000", - "anGMNLvv4WST7o5dU6_sTFWPTiJmHuf9KqPviqDyJ5c=": "2003050000000", - "anePWsfawBpO4YQGWeNx9T_l-LwnxrqXr5ukOEpZ564=": "632056000000", - "anubiZjI3BGlXn1rQV9ebqaZcGcQPUJv_LsjCqVkf3E=": "2351989000000", - "ao0zLbazQBPnFRVL-ZtKgBaA53ZjQ5YDJKJypwv3Zc4=": "1582565000000", - "aoBR5j27SGBCcu-q8sW-qDYVbVL2Fs-hRIyRIK7y_Co=": "1582183000000", - "aoL1b06cLpzVl4Cnb058YKevWididSWMovdQboabidk=": "750005000000", - "aoULo3RD_CHOr08NK0BY_z9jvHc5gEnUus33sbXouA0=": "451625000000", - "aofY5FhXBCKZKKd7VyDdoXUD_cghCaWa0hUU7fbs-kw=": "4156299000000", - "apEKIqQBH7b2aR2CfeYnVb4-9LSu1ODTry1bwZmN5I8=": "905885000000", - "aq78BMMOVhxc1cpfpf5v2uCmcaTgnmBuw_A3pnj7GUU=": "501612000000", - "aqTYRaayrsAHJfcCmCoknHmPIl65M3_L8U5wgm3RVWA=": "404018000000", - "aqaBjlgQYQeFg0AxW37A5dZrg0nRDldx456asPUaFoc=": "1965519000000", - "aqwDx_40wPPzz_Y7SL1gDDwZk0KBj_jDNWsMkNWJtfA=": "469821000000", - "aqwz1Ge4JTflUIiHje80NdI1qQ7QEI3Ld-R-gakNYxU=": "448467000000", - "ar-coH51DuQt650wJ1wGLdqc5Ghh_v7oCWVcYYCQv94=": "2309098000000", - "ar8NkqzV4YwR5ke5Qj8E5kiWuhjmHcSIPPts3065Tb0=": "461181000000", - "arSpKYQwwx5_RSafYHxWg3F2JJTQn2gbFf1XZc_y09Q=": "384615000000", - "areFMEcsvbuPJPtaLc-mVHkcI3YClr-8H2e8p0ESdn8=": "386015000000", - "as2qjrgY5XldaEccz2Y1GsG61Z9sl4FwE5T45yoQ-A0=": "865384000000", - "as8iZX3nYq9zWUl5OTiAUc2ZLCriW6TYKmOydHevxB8=": "924573000000", - "asHPzjlzod6JifwywBv4OeTDBwaRLp9ynk6UXtVOeXI=": "381436000000", - "asMKiqBEhoHHYRfou-d68mEaPa_bJg5oBkpA7oCfFjc=": "466579000000", - "ashlftqk9ssmCBApZ7FKo43iPVc1KVWKhY61ti3EGL8=": "1135633000000", - "ast1TVup7r-jZcM101LU7fnxAE1cczasEIUmcUX0u-Q=": "499999000000", - "at5npiVPO8kgrmPqbl8GJzK6BJ2RyWPtjA4v5NcnkK0=": "2000659000000", - "atIdEEei6UnjRgJS-wx4KEIyGbsnFO1FeJGauKwqbUE=": "454727000000", - "au-wVOzdWNqLeIU-kd3sP2JBq-JMhm6lpmN5N-bprGE=": "3818371000000", - "av1BCXATNONCK-gmZhQKmQRa9z6lgwCgxfrmETQ3_BA=": "364846000000", - "avAol-WT7OZ5X0IvbxnTULjp8vqTJpmQjraYhRzlgVA=": "1156518000000", - "avqCDek5qgZqCLWwm9fJGiZV9pcJzAiA2iIrSezD5q8=": "4230769000000", - "awlzaeJNEbcMcveqecJafMQyrX0ZkRPYrQDzdSXC1gw=": "3118321000000", - "ax0DqfCgUHG3IMU3YscSg2vU2dWcsn5aaDiAG8ioy9s=": "909986000000", - "axLygEV3ktZ-bz_Qrl_5mKcHcFZMcjpj57FlSD1fCjY=": "833333000000", - "axRwNNLjSBcY8zwYdWSKID3qNe_ZK4ctck4d0yoEPvg=": "385512000000", - "ay-2bi4XEKiayY8qfWiYeidTh4-7B-wXe6ZUI3iv5Cw=": "3141572000000", - "aygjMWmMc8c4cO5dAN9a9-RSO3x7bpsuv7E-NGDOYXA=": "379260000000", - "ayljCfpOU9KZxI5RVFfziTl3r70TFl2hbngcjmYsRoI=": "21923051000000", - "azLog1EXv7o_K0q_zB5wVtuGJgKXHi8XFoYeJQ7DHbI=": "769230000000", - "azV_n3RWVRiCZY5-yt1UU35p9A7pt1DdZklyc7yhQWc=": "416666000000", - "azdgk4ztvO-qgcWeURXn-bpozAiQzF6UYfA9j4Pc1sA=": "390537000000", - "azhnIQZQTFzQaTPCIrYrvLAS-SoUhADr80L9Jk4CZls=": "384615000000", - "azvNgS5FfgpSkH9qTIEjmggEu1jKI7lsrdJ9pjTWiA8=": "1156518000000", - "b--sLVKwh51dIs6QMHL5SD7TISuflsUzvNqxeazHoQk=": "383704000000", - "b-3-bjVQgTJeLiCe9k7SCbh7YtxlKn0tjzkg7d_R8w4=": "959931000000", - "b-TlfKWJpu_CUsHh5D8tXJiojnvfvZkS_l3R_IPTaxI=": "467359000000", - "b-jC_eEVt0tdArsuHAJhYplu8887_rJxzqqS9uu_lFc=": "824436000000", - "b-oCdtwq_h1l-UVLC2REg_c5-7vaqxJQiDMVyOHuAJc=": "514411000000", - "b-tUEwSIWYMcZ6DkGD9k6sE6U0LsWFa_9R24xXJTVfI=": "698459000000", - "b05YNBKS4zbf6n64Z14_5FuYMXFkSll7YqcAex4EZWk=": "477243000000", - "b0HUxIh_oe_usOtwTtITqlEtOnAGlCAMyKsnjzptzNE=": "383088000000", - "b0fTdQDLSDiFol3b7ttih2eT_B1bOmNxhCAlDqZWKjk=": "383304000000", - "b1MOlaiae-BnQCjK3i0O6WhKkEEE5hTYzpZyfMvuvUc=": "833333000000", - "b1bNkEKEa6Boy-MPSbQKZwaEGQbfUvtBkJSfppZMLxo=": "377777000000", - "b1w0k4TfPa-RkCbPRTy4o-JjmLFjh7w1Ko9zpjDC8Gw=": "384312000000", - "b20FS3_FzE4j4iIlhmFu6FAi7SFCtlKmQVvAHhTJE1M=": "1230769000000", - "b29jl2pdf302EwL8bgimXDS1ckcPPaFX-Pv15xAb2Xo=": "3461538000000", - "b2TH8-ZmFkICBi2ve7KHd9WhPj6ZleMleSZb9bqzeFs=": "384615000000", - "b3EH99N5KZFC7uYS70XCB-XuUwsg2NrYusZyE_Le_2U=": "416652000000", - "b3Ly0m7SjubPpd8ZSL6kqGU-ezOS_cw9TtStpAmBACI=": "383334000000", - "b3xhMnqHiSWbu9Ze6JgzRIE2E6X2YA9w1pL-3G5IDhM=": "387491000000", - "b40muYyDpJW4EbxvUHuJkRdJ05d0Fk2QxwXgKLH8mYk=": "2837260000000", - "b4MyTL_WLc7smDzBZTFjGzQza1Jyc8WhDuBNbEccHfs=": "4706588000000", - "b4Y8X89vCy9er3MUka8iUt2pjxSaPqIOpz7zvCgM2ds=": "933844000000", - "b4o1TBXnxVqlfIA3m66wSGKC-ZwIm_BN8dqnZzV-6jU=": "4658845000000", - "b5eJLGhbgqlNuflo8ka_je8FdLvzC1jiFrSqD_3-41E=": "1245367000000", - "b5jY5Dv3oUYqp3dBwMIyjCPt702ZxXS5oRPBaaqdWNw=": "970681000000", - "b5tCFFVnrIUYP_cq1TC7jjnt1G4yCmz3Q4SUbjgfBB8=": "926872000000", - "b63h63DOpUdYmMka51gl72F93ivSkEOLJS644CDKnKQ=": "391797000000", - "b7WWAZoqaQ6SJmf3yIj6HvJRF_sFl0bcSvlZg-eEuHA=": "376125000000", - "b7fLNpe0Cnr33_GX4l0O-0VMHUK9PkFcYzwWXzCj3C4=": "9999999000000", - "b7vEJ3RTIrM7Rd2XbNMyXSkbKaaiDzrNHRoJxw1OnQA=": "1538461000000", - "b7vLywp_BWvGWWrsjJQaNIe81PNduX-i-tL1T23JK0E=": "377413000000", - "b83XeBgq-039jPfZPCp8yE30A8xkYlXNvZ2b4U5zRK8=": "12841132000000", - "b9CXQRrzZiwwF8bEdxJAY944ax8TUJd39prJLjx4OwM=": "458127000000", - "b9HJwVLwvevzViqTOeYaGN2XVKkbLCZZ5OiNA-vjOfg=": "567512000000", - "b9TMH7f8eBvBbdo3wuPxVCkNoLGw3KoOjB-PNKB72y0=": "461555000000", - "b9k4Jt_S26ztta3Ulmp9rKhAubYaEMI2_lZkZbdz9NM=": "451962000000", - "b9xRlA8pcZiMh-OUiU3DkAjXw7j5BvQ561mYIEGFXlU=": "3853851000000", - "bAUbLCMcknTKRkaTadyZMHGOLBW5rCzo2k836SSx8M4=": "1233257000000", - "bB-pyVyPHBuBQQM0bQMjBw_S7kihB87NJe2Z2k-kuPU=": "689346000000", - "bB1J9iEHJUDIUSQMNHmKa4TOXqHrrV08w0p9WoMQ_6U=": "758520000000", - "bBICoTfqBBHR9I9nBQzmACxQE_tAtieDsAAmsnO-eUE=": "1928496000000", - "bBc2zy9lpOOkbv0SBHJOdfDmULOnAzC7zzNr2viZR-o=": "407819000000", - "bBjg4LNwxkxFMh27CCaTmvGofdmg09zMQ4FrVO_aJII=": "1933361000000", - "bBrVtzvaqB2KyV3__DvKFhtae7OBjgDigW8Uzadr6So=": "1819642000000", - "bCBFJrRoIw5lo5KyGk--cwOfkhjBYXhwJnPwNDPqVv4=": "1129228000000", - "bCKJyfmEqhIs61JDYi1i8vJ1kqaFh2H54Vmfr8L9fNg=": "384615000000", - "bCVzL4SPslpcRw4Jnj6KEeQr2GHZitPJd_IyG0XcoHk=": "460109000000", - "bD9ezIDcloA7HSnvlL8gTsuTO2jnOtEzgafUxRjmJEQ=": "833333000000", - "bDrVFaNkCYGWi7ChhT6OVtztZBXjl2rWT0MORr2T1CM=": "863636000000", - "bE7jw1drUX1lS0VX_NetGhPzkCr8P76wLhNjCj_vUQE=": "382598000000", - "bEh8g9q0UCaIA1vGLMZ8pJSp0IWID0z2dwIzF0M2F-A=": "389386000000", - "bEr4ESDHCOIOteY9z0I73hPEYUU_FqFCvUB1ir54WHM=": "920141000000", - "bFrD31cD8r4MnenYCBgeFOxFxhpadyT2UzQOY-MRMbI=": "416901000000", - "bGC8NP6TUx-8sU0pTgvE9Qyd7cvHPR3g6RzFUFCD65M=": "1591079000000", - "bGD8rN_tDuGYuzr0-4wu65GXLyrs8Xw14lHz5L5143o=": "1923076000000", - "bGRVQX_BrCn01gcEcsa7Ue-uLmZ0uWFAOTVZU9CBY4o=": "384615000000", - "bGzUBETpWzDWQBuFjir-DbfAX7dnpKAci01N7ppSDE0=": "4544361000000", - "bH1c0dedMTHLkB1AvN_EFH1oMz0JVH1GTI9of4nBbcQ=": "1295840000000", - "bH43T9vbXkSqRGsus4PNGd8xOBsliZUpIPzwXIRKRdY=": "462146000000", - "bHX9b64_zwggqa6H174qfljSVbBqdJix8_2GOOcl2GI=": "471140000000", - "bHXD6z5N83eoBJGAUbG6hOSARVZ_wC77-CuavhZgihw=": "4038653000000", - "bHa4QCvq05-TOOQQkRF4CS0bYlI4U6NC6dhRfIqNh1M=": "385510000000", - "bIrLDck5gSht-Jyx-86sNksSeUxhE1-1dYRf-0bPhps=": "4524251000000", - "bJEHV5JWcClpnqR4p8BhUhEZSz35Vb_yQToywpX4d-M=": "2307692000000", - "bJTtbgwdMOb4yG7c18jOHtFgM_DFXx49kpOLppy18xw=": "377445000000", - "bK0jelHc_ixGbvyDQd7o5gM72Cw7mwKGIub8Pkgc_AI=": "771465000000", - "bLmZ8FtvO1AQV3p-_gQtjpVWKnPQ7181OLQ1EriusLQ=": "461801000000", - "bMBbMX6ZpSXJHaG2ttuW_adI1wplAKyLIxppYUmKKkk=": "470730000000", - "bMbMRCv-Cqmg8xwNLUIK17LjS7KhgwYRMueAreMfDLo=": "1249999000000", - "bMpB3gdvll4IezhNxLYO6WT0rqa2_4uUYUnWshyKTAk=": "455600000000", - "bN0cWIcuvEwSQD547Uj77G97kMj1RiafjClJMUQjKOM=": "991814000000", - "bN60CkN-HXlP1g7Bj4EHGfF9J5bG7UNAOOEth3Ns6Ig=": "3846153000000", - "bNE70MKRUY8tunBz5ZpexqAR0LIh72xiPPe1fgoTajI=": "1363636000000", - "bNJnJcn_pCrhLReY-TKxHMtJO550v18i4e8dSb54jzs=": "929867000000", - "bNN1kTVOfcxaQ0SYxF__q7uarK-9kB7mguyVrOZwtWA=": "382080000000", - "bNVEiuKLfbXc6ppSxRzkRc1sLZ4OmVlav_jVuKDcZuE=": "4166422000000", - "bNtOdmniFl4ttQm2VdjDZ_AG7sb559S5TaMRk4u5U0c=": "1002872000000", - "bOhQgJvRE8PqeTNybzWzL4YeRazZEpqOo2nV_yz_8EY=": "1860834000000", - "bPS43bYkriPwjvhDRv5jCULHvR0XSsyJ6xIalHtgN2k=": "1370057000000", - "bPslLXQA22THyoCktTb47TUWZW_NTa9Ufn61Br2dYqA=": "384615000000", - "bQGC41RGZEU-QYf4d6Jbvc-Rlsg43uVWJmKo6kB4a54=": "493511000000", - "bQTCCKQ2XxNbMm0b_Mj4lDQJWfw69a94wS1iT8MvOf8=": "449069000000", - "bR1-VtUpo9DScxoDd7331SXIATe13bUsf4URQC_zIVQ=": "1048150000000", - "bRCMkWNclg6L1Jb3MWN6jmlNmf7Hk6ZfB43WLb8AKSg=": "2500084000000", - "bRUROcoJP7FfLqGey8n9YpS_kvYQsA3kUp1LqGmRNLc=": "2020986000000", - "bRh7d9ARkr-h71R-E6r-jFro9Bbgpwl2MKIGSeiqZwE=": "455600000000", - "bSQBLBD2aPebYwzaGmxEcAw4dYC92tqIrRdGYb15rvs=": "1154982000000", - "bShqKNfOkOx3bYcHgcFJyiFjbbt_Q9fKqRYW6p6Yxf8=": "427942000000", - "bTBNeUxNqj2Am-Q0XZTSbsZCKMfmJQJFZ1PdwlyrqrA=": "385697000000", - "bTMpnxrkXTqRxsPez67boK1W_3D6x_WVKmFS9_rYgHE=": "898541000000", - "bUmcB_zCGhSKNF-JqrFXJ64iSVdnLESi8LBvQb22gUI=": "657307000000", - "bV5kTpYqmACcwcZvsAh--jnJGFCA-MZrCOCUG-b007k=": "2323542000000", - "bVO5F30rkBgzDXwUtz65Z6OrJXMyW53zwwjLKt-BDJk=": "384615000000", - "bVtrBOwSkghYzMXfEionPvFGDUVCEfrPmXubuYSR-74=": "761210000000", - "bVv6BIu2v3C2WOLsh8ZbeDKZSf06nAsCyCJYg_PiWdM=": "462839000000", - "bVxB2XMdOO4eTivU2QUkwRFudjre3xw3bYzMC-tEIyA=": "1134645000000", - "bWNDYDQaPA7wqZakV9d7MUKN6U36y_SL2zkAu2gVs5g=": "386331000000", - "bWX7cT0KD_Rz_iT7Y5YvqV1CjK0vZfpaGk7lfuqZOOU=": "635052000000", - "bWatF0n67Aj50YsskxtrcUN3DwCEHJpTkm3lmriouuc=": "396485000000", - "bWjlsjabMSi6DZDg3hjJKYoAw47KRqDsXTStvIeLWDU=": "419398000000", - "bWmwi1-MdK6jsCgXm9UALrv1Qc4T78UWnGabuwv8dnE=": "392602000000", - "bWy1szmjnBWSm7k7rUWF2EtYR-GOrmVeXGBLr6xAplQ=": "385509000000", - "bX8Fgf5gFYYpZylCe9TJ8tX7zt9f6vnmJxQRoohapKs=": "381635000000", - "bXEkGoOky16e5NYPI0oe0AuKbko8ZH4JRQrgHfd_vSU=": "1327728000000", - "bXYCmikMMXWGOuHok_ACegBy82vObkWdASrqS1kRyYs=": "462146000000", - "bXnf9VMcOINBeOsUs1mQiaDvYOmLERalMO-YZwm8mgM=": "416679000000", - "bYRPrZTrldUqzGyhBt8ryI14uBgJM51JQ4jb2i3szHM=": "1258081000000", - "bYvDhCFnAPqSEsHzigI4viWCcy0AQKGh_llPlaq2FFg=": "12692307000000", - "bZ-yrPCdNyaHApi8ipmb9D9mZera7NI5IKF9KatAsAQ=": "585762000000", - "bZI5Nz9QYex6_ZcOT2GcyVOznfyfaGoqIdbVH9BfppQ=": "385510000000", - "bZMebfO0Ca4MKvUG2Rjv_Fm4QH8Hd5IXi-K6goMhSW0=": "4110858000000", - "bZdG5K6M23I5wQoCDhYw0MrLKWZ3sJJTCUi4g6upJaw=": "454545000000", - "bZjI032s6sGnbQ2m_KmnwyQ19x3s5tLciEdanHr0MyE=": "384594000000", - "bZyMc_XVw6s8Rdm6OTQ4UXksVOCYHjtmn2CBEfi87iA=": "768894000000", - "b_3YZA9KxgXXTcitf5MHr9AslJIfOV6NoBecKsELgPg=": "416406000000", - "b_PxUdX7rsXy6HOovjTm4RjHYIKuYMtwY7wx0dTEZGo=": "522729000000", - "b_XZlw0LuC7FbwwsAC2CLF8XyEHFSU2kWTJG9Ya9PKM=": "453994000000", - "b_myy5JtDvXAuJoLOxg6MrWwDO7p0vnGPZS_T4ig21Y=": "464433000000", - "b_q5YCq6tnqYsAuXl_xYvWwn9QiswABWewCxyCYbahw=": "384615000000", - "baruKqNsVvlt3Ekyb0NIE97htFd7JylmWLeeCIoMamg=": "2236945000000", - "bau_xxBFtFBs5g6V_03QcWlc6MbsyEDMYq1qAqWHi6o=": "466267000000", - "bb2HUmBot5QGWbAOueWipYnas2zY8MWuHOPAgXAoosM=": "1893165000000", - "bbQQgG7dLDeuFUpJ5cC_plpXjTVGJ4sIVvACCnzsyf4=": "7302392000000", - "bbXyajJLwglKRaR9xqWoZL5-LcrC8bhEnzFxuuz2fVU=": "624999000000", - "bc2NzSVRAcd57K-OdK6Fh7_EaSlw4M0pHoM2SBTUm8Q=": "610717000000", - "bcPr_Esd2isRC8pwHUsxReWGu5uYs0oC9ey6aq8U7Kc=": "414122000000", - "bcWPls0-QvBenQ-jrWwnS0iJnb7X3DHhsn6l2LZX-J4=": "416388000000", - "bciJeS8MaEQ_8VbCkoMWvv07AUBQloCdWNCI7iz6feg=": "2214450000000", - "bdSx3M1gfohcSODC7WFPjMe1ATc03mUW9JsveBh975k=": "771018000000", - "bdTbFLPj9yvu8H1cjj6zN8EqRvN6Izwq-YMygolugKY=": "393359000000", - "bdmzLys5IyeL_0hlY9JP2vjkNKcZHnrjm6VvPOVZZ6c=": "22727272000000", - "bdtZI4vp-jfn0FATae7RkA9zV9SPu--Hv0egxA7A5Kc=": "4914836000000", - "bdt_glIANt7SdhdFoepS5E5_vDJQGjnknksO3_02i7o=": "813983000000", - "be59pLDr6Ens7KKcIJ4Eqb9PJH55Ffd5P4CiUzfmUB4=": "7409796000000", - "beS0-PmHJLnwMWPNREAGLRnIXKkBDH2xvmzf1rOSVx8=": "420060000000", - "bea_NnDI11LBqLjLZNTo7jyIpyA_neKWxAUxFEaYLew=": "4999999000000", - "bfBIoudbraZ4HVzIIIqQaa0RAp6Bx5cpHp1eRJyk_Uc=": "576688000000", - "bfUob5EBcCyMgWN71dyU5uEfFp1_tkYr4tnVGMBw4Ls=": "384615000000", - "bfYBvIVx0J0qJf_yR9rWZtCzBJ4UQKAvhf0n3eER1y0=": "3239873000000", - "bgBgms4bjkTNqNReGh-ArVa75We2bl7O9-zEuZdLojI=": "454545000000", - "bgEvyZuDHVWpwjow03a4B26156HyAKNU2rqwQOXOzWM=": "2307692000000", - "bgISkuEFo8AfUF5tvn1JWzPK5aTX6IFdXfYYTptbUJ4=": "417828000000", - "bgJAq-sA9Becq08eGCFw9rv2gUpN5m2s1f-RRGVdcb4=": "416378000000", - "bgzyPT5biORtmEr5sZHsifJNP9ARw19ckcBRRbbhdn0=": "8418627000000", - "bhjht8bhnw4ozvmjERBrCn6UlDHB_lkHb5PhzGQOxNE=": "468567000000", - "bhw1Tui1wXLsW_N5RCvp2p-2SNMgi2jZKuvXuaHZiew=": "389519000000", - "bi-y14egF-2rbAU0S3YxardrTtF8uRlT4cWc5vFleV8=": "384546000000", - "bidvJmupDEFRCT8RTYePf4G6QJrjB5dAIMnCbBRyfGU=": "381635000000", - "bjA0Mc6y-IYIaDUwEK6WMgpudP--sS6QRmAYaeHydYg=": "1432027000000", - "bjKUCLfCCZIl_6xy-PEKs9yBzDhmL2CmKYWCFQ4SUZA=": "445710000000", - "bjO_eJvLHRAu9NpuOb5vCIjC4U07kQjmtYaRGwLDkRI=": "454545000000", - "bjdYET8wSpDO7S30bMISevgCHcgqI7jOt2Uz4NtRpdw=": "1927533000000", - "bjeWss31mE-sArZ2W2eECtp83Q8fiX2TwJZ98U5SLQw=": "1252911000000", - "bkKXfkhbjkM4MwZRpcwXw0OmRukwMr_eJ3dGhGEATW4=": "3786121000000", - "bkPERF11RUsbbiGmTujf8RMvJra-NCBZ_kVuzK6zgVs=": "498966000000", - "bkTHBNhUHz3JywOouuk_zaZO_6L-HOf8dQBXWll4c1c=": "4166666000000", - "bka8g9SrWDdNuWWs6rWLo7mpyJHZ0Qm9fX8xYlQA1hw=": "619295000000", - "bkaqV-FQ3kN__VIAXMvnghnPNjPCl_o0uCmpaAGrHI0=": "1110651000000", - "blE3EBDJObcvhC1iG0nmFQpEWeetou_apk0vamqZcDk=": "384164000000", - "blvcCtJjFwwFQE_HU6dzo-sE2UzJzP9rWMO7QnNcTvM=": "458915000000", - "bm-NF_jqY7vCNUa_MbxsEmCaZWXgpPVUV5AUEqmjMBs=": "384615000000", - "bm4jQCvfzYP7eQqBITTiPiclApgW28zkJrVb-132aiQ=": "1270594000000", - "bmGAp8LuXxmMHvwg6rgdWBvOLHmldn2AnzVKQbkC20Y=": "455261000000", - "bmYqSbTlqodJxtr3L0-Fa2YeWyzp1AVG06OqDTGwJNQ=": "10564046000000", - "bn-FsdKtwhlhc3XSRJKNHH0rSDFSXugc5XzJguv3o98=": "1527211000000", - "bo3Z6ODK6ZTboN_GpObee_5Errk589w17tjRMUqogqM=": "836115000000", - "boCdDAirZ3wMe5IjVH0V7gFkhtl09qJatrx0jo-oSVQ=": "381767000000", - "boHqNUchYxNlhd-UhyRdkytLtCCtGjh9EI_8r7sKnAk=": "2619215000000", - "boJntfuftwemS8fiDrnHk8ph7TFLTFjpjIsvYRn3Ss8=": "940481000000", - "boQJQeEVmLto8xfvshHQ0Rum-OvmLu5s-VCh3xYWwIw=": "446505000000", - "boQiPVoG7Wnjo0yJfi6URjoaj4mNfRE2WYBrZxoJwac=": "1610251000000", - "bpo33aGSYdFX9D5OizBehVUf46e7ywODR9qicVlXLGA=": "1927537000000", - "bq0n3N1QHtDQws7ltG4Citf9t2Qoj_pz9Jvey5BR9Cg=": "417630000000", - "bqN_ZFehoxaVziPnkGoA3ZRxfanG4KJfEbboNZR3Ybw=": "389456000000", - "bqZeNCk1hzizZw1oUzU4YVgcg5HlN5h8NfsH0DY7fho=": "463851000000", - "bqpAI-51KSP6Bx5GO4umgqubv4rrC7TekiMYHfzRUuU=": "378119000000", - "bqszxE3Z5eXHZEAz8L91vYiWdSdvy7yS4RZvt4OR3K4=": "454545000000", - "brYHyiX5zcUVKwAQ7os9jF4Yc-7nxUB8tlRQna3_ovk=": "456871000000", - "bsRWI1cbsyIT6RgHx-lbTccYDks51TRWFZpFoHYdmR4=": "3892295000000", - "bsVoXOqp5Jl0GKYKaD2vNujpr4c64C2H-rL1keL6NJo=": "384697000000", - "bsuxMKnu_pf2_fgleZXcWfiMPjvZk8mFII3WyrAsmuw=": "385506000000", - "bt3MSYSZDjpXvvkIJAKgqt_XQABYnyMyr6rUu9t7Uag=": "379026000000", - "btsyYN3a6T-gVP0v26oS3vrxFH1ynFBzFRt2GB5WWX4=": "384615000000", - "btv764wD02GnPEgvp0it5a-kYEwSOdQeNQSsroBAJnE=": "1153846000000", - "bv6BKQT2t8WgV4MHwr1tLLOcsi_f5Et0RObq_JMXU90=": "385507000000", - "bvKawGzyMU4gNK3nur9yKlZX_jvbasXdqgbGABJZjI0=": "770515000000", - "bvSLOrP31y9iaME80YKbky5cIgpPBu-Sr0Ipq6I1JJI=": "850858000000", - "bw5lXUbT0zbLGSE-X2uSLoc7jNw4FTIkH0eTanODbPc=": "1577584000000", - "bwLyWVexF54xdicIiLmmPlY516ZS4P0uJA0wDhny1-A=": "384917000000", - "bwsBofxCStPTdmFnCWnqswFTnaDyHQVtnvQlSri_s7g=": "417632000000", - "bwtKfHdt_goSp9NU2Nh8081I1BG8dL6aPQIA5beeL6E=": "383276000000", - "bwyKxb-HQ46dl6p1RrJYjpjkcfkKUfyZdZwjjxNExFg=": "775784000000", - "bxSeWp5Bx3QkqCK1UkCZVt0wAOAwY6jhnxzRJ8mttT8=": "6530295000000", - "bx_Xw9DnLrTulEi87OYMvk4dj3GM4fmmFbTyzYxvX9w=": "909090000000", - "bxsG9njMziIjdh3ofUsqptvvgOjLcWw1l76ctDXV2NY=": "482124000000", - "by3pMzyF3VElCQ5FgFgGdxzsjjOiTkU0HhgLvQXNzeM=": "404440000000", - "byPDdN8G8-f6HivqvhtH9mvC9t1g6mnrGVNZfKw8tjg=": "3499999000000", - "byk6GzqqEw9VrQmwjGjflnB1G1k4hPxl0kKXoqglq9w=": "574117000000", - "bynXsRL7InUFNteYk8EyyJkkkZ7LNj13hV_VZ4CL3wo=": "454545000000", - "byw4d73-ZzKQT9-fkcz5FLXx_s0dFUkKUFZ4MyPzlZw=": "416666000000", - "bz1EZxrl9YuFOOJyuqcp6ZoahoVE-ZtGLM7cae7VjaY=": "449742000000", - "bz4x4OOHX-5u7K_nZl_Yq6LM_USD4MjENNuGiKyt9V4=": "1029922000000", - "bzWrA16dasFjqzKK2MfwuRahY0o3oIzQAo2hGuTrZl4=": "666996000000", - "bzXZfnaatG61fvsFfqcoZLZbgxwDgtNUzd0mhjx-u_w=": "389386000000", - "bz_9w830VYYzWdKhNu8yCcBLCyNf1SzF8oFSWupNkaY=": "6950000000000", - "bzjKI3MrGBdgqucohUUJR5H4QVDR8v4WABnbyD0mzNM=": "694148000000", - "bzpqQx18Di0fVnziZ_VjaNHFAlkvxHmhkQFw3K7E2mQ=": "620628000000", - "c-P35FVaPw-ow5LxCW6iRGVlFw3e06tGinkdWVtp2bg=": "832469000000", - "c-eAhJLs0YNnUzbVaothfTOHQTHHuvK2Vt9RiS6sMC8=": "384404000000", - "c0iOndNctMbGfuqoXglGfSoF0VhhRFjX0x65na0wWW4=": "427562000000", - "c0vJuVVwOAEiq6F3oRHiUmjhlUvFZ41ah_uLZpmsMZw=": "3389755000000", - "c1jE3XV_n-wwVIsze75Toa45UVOLty9w_UupTk29Tkk=": "1402592000000", - "c1mwOnYgmC7RLXBHVo8TGBGE2p424CLaW7YA9tawRbo=": "1648384000000", - "c2I83Na5Mo07BE9YCblU00YMAy0Y9Y7m21RN6r8IcyY=": "540689000000", - "c2SYp9qxsPn87JaBBg0rwrMrSqw8h8dalvEKsXVaTgE=": "378259000000", - "c2rq_6ooitCvVoJFNH3Qb7fNP0_t9qO3lKmdlariBpU=": "386905000000", - "c31jJFCSt_CFEV-qclDN7Y8t90dqeVQZI10uav3Y580=": "407808000000", - "c3Ny4qF-SV-vm753gL0eKj9ufVYucaXNUHTIYF2ezyw=": "576923000000", - "c3iQ72ktr2kfkNstQ8s9Ucw2-wYy8Ug9Ql5aKbMpND0=": "456871000000", - "c3jZpR92Jm8IiK_jnVnrem76082zCp1AJ0AvtueFDhk=": "1040445000000", - "c3uzxxv9gdmZIf1-gf-wyRO7DRCejNWctDKPKjqKXLk=": "447731000000", - "c4-3Ytwg-xydjq8yjEQm8hcx8z0EAJzxMXPwqLOj1LA=": "392555000000", - "c58_WD9F-OrhPDuLFklSmmovzbdPUwAXapoPlmzIiWo=": "447389000000", - "c5CqQpXnhQnPZGi_8whHz3G-gP4NiP5_eGJntgHsujE=": "455334000000", - "c5ndrBKGMrzB1iDTcKuGva98W_bl-hm_H9lj-uP7JwA=": "832706000000", - "c64CZ8MbnCaiV3Ikwb5TPdHPl8OVLVoekCoAVV6FIWI=": "389683000000", - "c6FbLkjSNAx7hHn8p2VCZ9TJRBfqDBZv8n8F0FxLmYo=": "992611000000", - "c6ZsOi4sDLX1xW0kYTibFYlnkBQk2MsViu7RtoidhCQ=": "384615000000", - "c7-eydg4QWI0SYhc5a0TWCaqFNRAu4pFgZ1BQmf-6H0=": "454545000000", - "c74NbfnkFqOMQixiQTiDouisZ5iBfvITXx2XduO99Is=": "4455661000000", - "c7CWajEu_MUXrnDmo7GfeLZqGNKfCdtheEawhw057Jc=": "4046457000000", - "c7DDzO8GgIRJpPR7XzGe6hzcSDDSvQc53NabRKnTqn0=": "4531139000000", - "c7DMgaejjEjHgl6vRZax-SmyZe0PdY2x8E7zXkAYADI=": "384615000000", - "c7G6LSVBv7t-dh3tJyzJulOJqTptLUQcjWkpjwYcH1U=": "448509000000", - "c88wMPI4dqYTRlnhxwpvoXFSTs5yeLJpIx13wUuY35E=": "452992000000", - "c8T0J5woLjiqARi1Lf5Wf-q6YAXVa2xlbpGON-r7cNw=": "447924000000", - "c8cBYJLEfvsi9yR5XQJwZ8eA34sCAte818pDVOPZ2ao=": "767729000000", - "c9724C_k7JmPabJXz8C1pNaJZ5T7rLq1dpfera7XOro=": "578548000000", - "c9TBJOlJ-H7XO4MaEBaqJPhhW8ub_H5_TogX1XFR7Jo=": "559859000000", - "c9W29KQpy83SUfGf4tHB2FGMXVhcs4b3NIBJ0BA_y8o=": "4615384000000", - "c9m1Ue12CVzukSgMraEmr3VepA_v51KNAbwD5wpuq48=": "769230000000", - "cA4dO_g4CBfZK7CwABTrir8gl2VdGM_3G8upHonvGoQ=": "383954000000", - "cACU6V2UuBRPtq3Jzw6AQfK_XfmCcN-IFBMFKCS4p4Q=": "1252909000000", - "cAhxRNys7trUPd3Xh_HcS1WULGhD8bVPoR0lhTj-1es=": "773626000000", - "cAiTRfkfwlDltVUSccQfhbI1ZJgczqtw4a6KU0C4zyI=": "5148166000000", - "cB7IiWbvburnzUO3i5WIHrNdRjmvo64y0pE0UtM-QTk=": "1040230000000", - "cB_k3TumJnDJ-wdNO2nSc2GpZfXYkqjG-kpMNSLz1oI=": "385506000000", - "cBzWFbeZFWD4jgdxB2tW-8f7i0nQK3m85avGAoNe5Vs=": "1519244000000", - "cC8Hxb9HZSEfj1fMdx23lxKuEgGVs5jIGHIztZUIWto=": "4233102000000", - "cCI_rAyey-qIdDqQM5Qmcu8bpCLSK_LjIiwt6zj35xY=": "384448000000", - "cCIrKsk6K03m3-vyS5pBxGdskJg0aBGDr-Smg3EPNIo=": "1164230000000", - "cCT1w4QhIR3IbnjGVzuNMol6nY1qOu5xXb--N4QCEdY=": "391908000000", - "cCWsNLaAuTDBboTXcR9CMJZGKOjuwWKpC6CUZkS8V6c=": "419947000000", - "cCbp5NB3uQ0VOmDAZ8REiw5x0ZoXgiAlyqXT1StP3dw=": "4230769000000", - "cDTHaP0fYbMMpsH0_UWDindJqX1MaFaV-kZlccyHOyc=": "358616000000", - "cDcQzyoYRMkeBcdtKB1m-h-ViJAijNfYmmyAgCRLPik=": "385505000000", - "cDfesYSGVSOOygX9NJMmiX-92SnLh6qlKc0VUAfqBBc=": "454545000000", - "cE-P5YLPuVTksfnkaJLMu6BitfIj2QltEim5u8Z-RYM=": "1818181000000", - "cEdXEGM-bcpjD06n-4QpMr1Td15EUUAcgVaevla34zY=": "951091000000", - "cEmF9cWzFgY9sQz2sFlwnDPEMzoAPWUhMCP2nXsRbZU=": "384615000000", - "cEoVffcCV3aJbjwSBla8yPIO7w3jERlZWzvFUx4K3EI=": "384615000000", - "cFA4qOSA1Z2EE2tpbIL1ETnuhR2uTSFmo-zZo24I_OE=": "411085000000", - "cFSRzL5euDXiLof-fLcps0jv-dGxn5CUbNaVy_6SGoQ=": "412344000000", - "cFSciCFnRBcwCMLZLx7kb_YMyEttvVvgs-gAp1b6ARA=": "1348316000000", - "cG1CymSKz0hTB_Aq3YcHQttE3vhNumVAOMls4E9llkk=": "385510000000", - "cGHGy41AwlOga1Duak4JlubF4etqnI4DUsSP9VmlVGs=": "416375000000", - "cGJRPp9o-gO831UChpOrZbStsi_IyU_7uZXP3cS5qR8=": "435218000000", - "cGb1QA-tEXVwi94EEeB5eqKEpzg4WeJfqA6BtqhjWUk=": "385510000000", - "cHZRfYjMy6vnQ_vb-3qPEg-pdasCA7Me6kZSLfxp_EE=": "426338000000", - "cHrR1xsFuKarAgkLWpbFwUGxX3jjctcQBwXh-QT0DVs=": "1134899000000", - "cI766mN-pgJtoPio7EbvKKIzjCtnmPY0egig8Y_qylg=": "452205000000", - "cId14E0GkzTW0DVW6J4P8fT2Xf-YN39T_b-BDs79oCo=": "1618405000000", - "cIjKi-sA-cNbRgNJjgz1FtXFG7dIPEBMc0Ob2Cc4Uhw=": "812088000000", - "cIleNN9_4VTGvXO8rE-o-ShnbEjznUF1QQoHLoRkALM=": "654867000000", - "cIqZO59Hx-cLSo6wXrCiUoLXIe1uSmrXAf2a75cgLGI=": "473001000000", - "cIxy-LRaOwRK9p9vxKvrn8xN1jyWZNbXEWx3pgDGMwY=": "9807692000000", - "cJ1ARyA_IP5gpzpJNAUM4ctbWflLzWpUAjK3mI2O9eA=": "773142000000", - "cJ3QeeTjTGO9YCemF0TsRutjrxIrrs6ps4XZMVPtuGQ=": "385510000000", - "cJ6nia2RMT3ss7J8cYG4QcFSZQhpprAECDrnyadt5ww=": "422561000000", - "cJEK5_jhcI92FJcXYUyXjfyqxEuXW5wKI5jrwkr7PtE=": "4987289000000", - "cJmpgAo7G_xOKgPzW0vr-1AxTbrhmGKIzp5HW1PdyPA=": "1153846000000", - "cJurlWpvNvksdMACpdhOceehDTyPZChc2BYQeiQV-B4=": "578577000000", - "cJzSPwWQ7p2Z7JCtg1QHICIDjCOdSfATAiVOpxea8I8=": "447431000000", - "cKDiZvrGBAiknS82UVuCoxxpVmtuNsdCqDpS-VEgRUw=": "755604000000", - "cK_EnTTaccgt1vuwItkyFOBES-u9rIbSdwkj2pQyuHE=": "11418283000000", - "cK_xXNfwWy2jKOyH1BliFmf9wjxV804cKU7EkajS3KU=": "390037000000", - "cKz_4p3JT77fHWfP7cwI0hzBHlh8KenTagQAy-FMc5U=": "391838000000", - "cLShi-0DU4jcb6Jk_YeyHyJoizHCq5Zohn8gyRyOKrQ=": "1927537000000", - "cLZ2zH0EJDQTrMYcxaURwA4Xem6WeNlroDGX1OMkCyA=": "4211121000000", - "cLZQH9HoC-GxbF2doema1RSNAiCT1HWdSaIUSxOEUtc=": "915299000000", - "cM2sPZ-gFnEoj8h1gnOLBJWs8av2JtL4r1q0dbj81yw=": "10955826000000", - "cM6bXR5476JUtZ82AY01jW1r-vXFsAh7kiDFdOh5wUc=": "977958000000", - "cMBwE07ZJhRpheKa7tO_aI52fhxiVeRwMWCbsp6N7Z4=": "384615000000", - "cMLhNlXdvrSepVEmF45MAXl1L84s_Cxbivot2qHZD40=": "1156527000000", - "cMbHcdV4IONqjzh0xehXfXe8DC3RMhSEldhzGEt0uiI=": "461801000000", - "cMfdzkAY4Yc3Uu63neocewc7xc00gPSR4gEjzipeGSs=": "1340053000000", - "cMlnUyt5tc1ZOC7gK_Cfldrc534DXy_NIBEXzYL6SlQ=": "769230000000", - "cNPw0Abkqx51iaiztGpsTQEzYhQTFkFCbJD8jZmCfaQ=": "454545000000", - "cNRICc1gcsgIfyz7CgFAt9xQ3Vxicg0JoPaKo4qn5Ao=": "394368000000", - "cO9-9-nBXZP8PVK8qUwzm51KiuQl_H9vym6Y0Qtj1PQ=": "388235000000", - "cOA7yJ802dWLtGEJ50zVIO205Nbe163RPyVpZypdJHo=": "416666000000", - "cOF98Ev1ivHh_GeS8_2sWvSX-ypixfoTq5Za0re9aws=": "454674000000", - "cOd3ugxPEb657cd5ELel7PG10Oy6hMexRL2cAnGnbTE=": "391885000000", - "cOhjfe1xs1VP0B1_hhZj4QKeBQQzmsQWM3QkFlcp_AI=": "384615000000", - "cOtCdvROdTpo7WRsQ8tn16eH02MAUEz19VeNFxa9qek=": "453243000000", - "cOxwpOZrFEL8DaPcwzBRpIJPIVmz9ymvC4ky2x8Xk3Q=": "387305000000", - "cPDvzf-COcA6ryHOqtJev1lWGYfHdoxyxGVbTuz7Gvw=": "762090000000", - "cPKUHxD4YwzQg7QCdyIFsA4jhnPOi593mfTcmNzxu5o=": "453414000000", - "cPQgRXX-GqILRD5BDFGL4epZ7LevFqfctFyTaShYBJs=": "413490000000", - "cQ_V-VABuz4Hb2ml4p9NxXm4XKSx7gkz_vHv91k-VWE=": "384615000000", - "cQfDWvTfHLHBSkqrPuG8XHg5Vq54_CtL0LWLTOo7Ymw=": "578780000000", - "cRTIORqs8JQ175ixgJUA830PZpx2L9oWL7IM5m3LOD4=": "470734000000", - "cRxklk3hhzVJysd6-fDyWZIPAJ4Qk7RZKe4UCTR6_uo=": "382394000000", - "cSJS9AXGBHBlDO_XIeJ9hKXPxvZmRj0g0hpDm6R-Bfg=": "456641000000", - "cSJg-dkO0PXs7RpxcWKJ8k-842gi-4LtVuPlL3OdQmo=": "384418000000", - "cST1diIh4Gnq1h7Pz3OB7VOsDdF_TKYLsPvV05uHyWM=": "801909000000", - "cSXri5IUbBgtGtlTk9sM4BVrZBbzmv9eUM_sb6hkO_I=": "384747000000", - "cSa7qNp9TtNfX6MAilAEnvuBKTnwAevsjNTOYOPxDcU=": "499999000000", - "cSil6QC4TB4zxbDcdzW1W0ZsWxe8V-eH8FMFgCIqu0k=": "384197000000", - "cSmPjNIpCqbBAPZJvPitanzBqWZWqYRAdFZmOw8b-lQ=": "385536000000", - "cStmrpicw88nZcccHDPa5dAG-TMytKxa_rvC56zajF4=": "384615000000", - "cTAabMCBmMoiWGdfEKsF45FwrzJOoM0z8TdBJSFgfV4=": "1895893000000", - "cTJ90PRSO4vbg0hFfOt_5gPrtjf-UhGANdTxTjUkJuU=": "423747000000", - "cTPGPnIksc6eRTUI444q2jEHogbfhfunQ6toX1PXdv0=": "384394000000", - "cTRskmOOEbiPvRQDNNfW3L97G7XAqUu6mWWV8_HO3IM=": "379260000000", - "cTVDxeS0LfCup2VN4Eo6HHboQ40pNYKyymNS8VRNWxs=": "405229000000", - "cUXEGlhiWuh-pHMe1xH-dXWLkaserAlGSV0r5BuBWa4=": "404872000000", - "cVKYk15eiY6og4PWHyxCoTs4b4xFGAX3Px3-WDf8Hgk=": "7246363000000", - "cVqdOGEnrOFAtcL5ns9GC6OtGE1Exvh_U4SSfWq6fRw=": "376837000000", - "cXhcBgEeBDq9IYMPkZa2QwVpcVF0zqukj6_IFxxXs4g=": "3338246000000", - "cXjXEwDfusBkOG373R8rhtFhoBuSuatbqnIUzbhatKY=": "3261924000000", - "cYBdNBmvJdNJlE6JqNVuoU8chUfkN7qUaYBZrIUq4tI=": "810714000000", - "cYTcrtztWEtWrBdribVThNfGmIkJydM-2Al3rtzTegc=": "4041708000000", - "cYUysGzOjN9VBzcR8w9JmPOcMSSC9Q_YeUpNxTANUxc=": "412863000000", - "cYkQE5I1UsZXlRm0PcW871mQyT0Sb46IC2YhXO4P1OI=": "461538000000", - "cYtODpfm0oloz3HMNESnUv9z63RncMm2SIVMD9mfDZw=": "1219560000000", - "cZ1ZBV7pQ9QBM0MEdkB8mPPPrk7wR_kuDnYEUxPjoYw=": "1886896000000", - "cZ_-97e27-dptZvhgtEZg83PjdRh-AOYbCqV_MrjQ1c=": "1538460000000", - "cZaKdSNkkX7LnSIOiYecmI2xSuREzsh9lHapq-Rppf8=": "384615000000", - "cZbUbuuiftTPmRCvnQVHtvNfA08uJdf3qmvCJBx2Omc=": "416666000000", - "c_J_Wy0i5HCNptrB2QkepTghPIQtWG_trBmnUxXs_3Y=": "1986705000000", - "c_vLbu16LEFZ7xU2aUkXmlc90chGlD5HLeUaILuLsWA=": "458399000000", - "c_voi_fg2jds2wAGJbXktcvC674l5N1wFsPPZJVlNMc=": "416337000000", - "ca1R-zSBgLCkrUtsgfsCzHOvEwV1VcD7gaG9TpZFSSQ=": "488135000000", - "ca5Ve15zVtMVZk33fvQ9DF8SByjvR2jV_prgXotZT7A=": "1926036000000", - "cawIPW11Cmong-9tz_9JuD2vlH5hCuFqMPBbYJFe8kU=": "385505000000", - "cb25dyHY4go_00qVpL-PfOPSZPp6rkVn2Zyv-Wi-NTs=": "2083369000000", - "cbHxFOuiDgSKWZVSwQ_gbTpB2WSZ46UZXjJZAKUYzrE=": "1384615000000", - "cbIDuqgDZAkBk9GSXMiaqHXo2Vv-CsMEeGs6Xv8tyqQ=": "416666000000", - "cbiccUhdXj_UXR3fDt_XMb4Un8TRIN1fcclCgvdekk0=": "446305000000", - "cckG13j-uGme4h6UYLhGsCaurWaSe-SmrOydM1_A0PY=": "3704261000000", - "ccmDYdUg34RZoBHMJt3G5h9QGX_RWAuVInd_E_ChA5c=": "384914000000", - "cdHSIvAC4nt3bGY93wj7J1A2kiOtcIql0y_bQH_g3Og=": "411085000000", - "cdKmuxZyauI1rklZdf2iGi3FapPOqcaGzCvFFFHQFyY=": "1510771000000", - "cdQkMd0JFCds7Hq0QOdiuPVuS1Jdh1VFZRg_rQet0pQ=": "384650000000", - "cdXYt_f8sFdxCpRAN4v2FMO_JBjbexFdyVBCGPTYylQ=": "777326000000", - "cdrVDbnzS9CTIu47QYOvn4IL92gCtWbMF5n6-rEDQcQ=": "2082843000000", - "ceRKzDWYXNCLGbFOhumgrCXB0R0lykSKBftYsBLKNvY=": "416666000000", - "ceU8UjpuuT6JzhM_botGWC1KOH6e8V0Drb-W0inJKk8=": "455526000000", - "cf6ZzfW58xqpw2FpJWwodBMGEIh6HbqTl1kpWNw2GCU=": "411085000000", - "cf9q6EgsuM2B2ebjp7sxUqljyppWHqUzhYQ33h1uxpg=": "455600000000", - "cfnL9Iys31_DG6aHFmBbUkegDXOxQMxjaLzLyeNXF8w=": "384615000000", - "cg5d8-KaqX08SGNxNN4BBYjJcBIX2bpevAgZQ0Uw-2U=": "1386434000000", - "cg7i2nUxwDLj6FAygaV2CgCAMWDwUMnBulLtkwzIL84=": "1354961000000", - "cghRvD1b6-8nYz8Pdmb_8OoKiNbXpVkBmdnGR4pLk8I=": "1390719000000", - "cgic1uCzFFDAYN7yzLmxRUca-UD_RDFiH7J-pCkEAY8=": "1047238000000", - "chd1LBc8BeOTiJrjriwrL8_tYNXJD98Lll0myd1xKio=": "464142000000", - "chjM-UoVD-Sg23XHOXXwf0B5z1Bt_9ksv09zRwyVjxY=": "7692295000000", - "chqDiQqHhZI9tuAa5t5whdtsb8sqV4oD7Yo3rLsR3sk=": "1603846000000", - "ci1L1m44l4B94AtvRkYDe1FhGPjqjx_Gt3T_0jsyz_o=": "1816809000000", - "ciLipkTScYQowhoH9dsI5VSEdXc0CvhC8Fl6_JefIXU=": "4008888000000", - "ciQZuoO6G5QzjWRbx9Wpnk_WjGiPchMZ2MxIcB6JHkw=": "417995000000", - "cj608nlRx2veSEnjxHJQRcNuXrndOC7PugPB9cde1lc=": "1361329000000", - "cj8HGK5tJwfeA45aGEs1sRYitXHeL3bE2q3F3pKW3mU=": "416666000000", - "cjCB6hCIncZpwJirJDoSMGk-qgU4cQnG44zPjTAc0Q0=": "2350290000000", - "cjGr8Ph3DU87g9VWm2jt52cOe2aVJ7kLhltDKclhw4M=": "411085000000", - "cjt2WrenxQtyzjCaWgAD08QdwmQbcyTKmVQBb5IPy4o=": "2534944000000", - "ck8-3V7eKiX8az0y4PCIizLSr7lMWaS2ogsMjFvx5V4=": "385506000000", - "ckMZk4eUIwHX9v21GD_jO_CIcK-mpjKK41VY1CU_Vtg=": "1153697000000", - "ckSblMPSDfsN7bJyZJUET4Kut9Xmfh0u0SOCDxNQq2g=": "385217000000", - "ckdcrg-dZ7kAa8bLB-ihXUs3QkcuhEkFQ4r607RofcQ=": "416666000000", - "cl2PNFf-4WjHtXhv1RtnaFk19vpq1O8V7pyUIdxtDQ0=": "406524000000", - "cl96UzejvX8kZB_MSCgTCChsXEvznJdd8HGYvHEDqNg=": "462320000000", - "clJ4_5ZoAA5R1a0Gg_JF1zfqPsqMJbxcWtXGyTvyRnk=": "1187125000000", - "clLpNsuKkNBWcpd4TAf-cZpcAczMMvRG_GhR0jQufSE=": "464970000000", - "clnyPFSSlc0HKH5jGdYkpOE89pjc6lB85SUV2Ry8vYQ=": "378341000000", - "cm0x-V5k9GuSU7-cdXUDgsWbzUcduv-85LhUekj7EFQ=": "2597869000000", - "cmCrSE8t_JlBPpwb76f0shHRFw4u_ZiTc0EbhHXJc7M=": "405357000000", - "cn7iviZqDIBlrdSN4OtibqEg86jzuzz2CcTRMRr5rfo=": "4843535000000", - "cnFjjpX45M_Gf2srRse0xcx8ODcq-OUP1Zz7frMbdi4=": "3300463000000", - "cnWyD35f3qXoBroO6cJMsZH7e3drf6PAzurQF4k6-Fw=": "455600000000", - "coBK1o7ybmIDC9Q1ZTcHexT2PmvKkO8n0reVLYLyCBg=": "1153846000000", - "coPL4BvdyqXmZNaSmfYgyJdhHl21PPzIclVrCR6IjAU=": "906799000000", - "coXam77n8s05MG9s1HfaIBNrVuDx-AlqeI94ThsTbJY=": "384902000000", - "cp0ZH3tANk_Vdr2-_fuUAyO7rCuKRVgi0A3weCEe_4s=": "1000909000000", - "cp91OAYvHQbMEGh44XKLwmugtYDK6xY1FyCgF4kr1Js=": "1150951000000", - "cpqG8icikf2CiA6vgxBLtn-eCRNX0z_eoIrkTL_sEPc=": "454545000000", - "cpzdxU8rFCRrzB1V8AcAK-9PbdLgkNWDGyzyoDyAX7Q=": "833333000000", - "cqB7bfvArG5iyUZa1Edae3iQJeI7k6-7EjKCrUOVfsU=": "456456000000", - "cqJn723Qxfwh_b02_avubJCOK2-oVH5mWe8iIgBknC0=": "3866403000000", - "cqUPK2dwuWL9v7mvz-bb54UcCYFpFVhYGpAfkuuRnjI=": "407808000000", - "cr5CPimWXDS4Kac541gDPLpttNLSPOyFBXZ0XjUqh80=": "38461538000000", - "crOFgas3Du0g_B93SpmxTLvLGzoqTwNxp1ka_2QqSKQ=": "576923000000", - "crzj2iSSJEW0lwNL8IJnV4S6EeEWuU3Q3IEgTlU9y84=": "657193000000", - "csK69ZYyQRQKKXmMmHgQMh2nWMKVZUhqbyA6vhtKFBY=": "386007000000", - "cse8E15Sj1UwHbTfgPVojCGOC8INvKp-EnN-N6Tv44U=": "844512000000", - "csszxZdSKyrcapWJJFoQSkN5cfREFHzzCUpsc1cG3Gs=": "707118000000", - "ctVK3U-VJN8KLsLZWXRl8zuaF6SJrugpkqcg7jxIa-s=": "463498000000", - "ctfn8BsZA8EZhuWmHTdyjvXQt0kkw6G1ev4wMz7lEOA=": "833362000000", - "ctkWOJE5Wr4fnLO3ipzyHHSS-syxgDQZxt2pN8hDuCE=": "771596000000", - "ctptnXZiIzhu_xVU4vs77_W2i6gNw-sHlQgHJARM8NE=": "417636000000", - "ctv366oZC6IW_4EyfLvaBZIpgHauOIdcIxgARjuEWhg=": "417635000000", - "cu0Dqm6Nhbj1aSwv66Xx78MgilkHKsVCqGVjV6TIb1Q=": "3793222000000", - "cu16B_1g43CVOZnT5mw2Nzs3gGcNRkTp5d-990cbZ2g=": "458396000000", - "cuDaicQW8Vmy_mBEzlpAUmwokVjBEkyxo6xVLzNV80U=": "384615000000", - "cuHu10qeCozZIr-VEucYLv35IUERbI_iePI1EhpTw-w=": "456276000000", - "cuz03qVirEEFKMeGEgYElpJWJDY_m3S7acGML9szudg=": "769230000000", - "cv2Xq78RMMShQib73oyDMh7RIn8RBO1D5Cy8eCiRYn8=": "1153846000000", - "cvI_aIQgzJd1iU-v39kV31B1yzuDdNApV8TyU56gV7M=": "384615000000", - "cx_dzODhcqNs5chyhy5E21SIQgh6Zorb_lKkg1IJJr4=": "2402477000000", - "cxc1UEMcK9K-00AbpEkxabIWxUdk55aktNEqaqPikCE=": "4545454000000", - "cxtGqRzAEPeTCaltoVNJWq7ymTy5LFNuB3ccgw20eh0=": "2460763000000", - "cxwwtN8A7JnADf8turcl8OJ6I8xXgIFVdpvbus85NZQ=": "1539317000000", - "cy8Rj7iXszsREbx05qYk01n8OJBPc323-AvvywSz8hk=": "453775000000", - "cyI0X5wr-LhH5Jx7gUB09rbBRJYnVPhaDAYXCxi7a7Y=": "391652000000", - "cydgvttcYcfvAHrdbxx6unB8aRmC92P83a8SrorC9fc=": "535554000000", - "cyp_-vICP525vRLMothjE9gxcumyGkuwukDWPrSzpyI=": "925646000000", - "czWS8krYhl7g56YcJjUCh7cnTWnzwXRggbilTLu4kyE=": "9999999000000", - "czY1YEHMe5fYKh3y7MFrjwHZj3Iq5VEaIWHtu0EjRZM=": "458722000000", - "czlL5QfwQ2SIDgPPlaytdtikkdeIswCsTqpXnJtT0qE=": "582847000000", - "d-1ikxJyO1nkrGDzLlBk-LHe8Cgzlr0dhrMY_fTNLxM=": "551691000000", - "d-4EaXV58Pc0dtSiU546etnRg92Qw0yUkAU2OjX_mas=": "1153873000000", - "d-hHRTKRaO9Ngu4g2mabrzYkNV9Ik0SoI7g9bCH4qlg=": "454700000000", - "d-qQQhpbRxi7gP2rsGntOaVLol0zBVTiFv2KsS3d140=": "1923127000000", - "d0CHKKy86WXox-8q9RbptiZnKTxv04Eo-LTYPxMYKCA=": "624999000000", - "d0Xx-NaBCsn2ZoCFdrCZy5l7Q64lC6-b20aPeh0WvaQ=": "385213000000", - "d0eaQm1zMP-8YpF9KEOuovpGAGwdmhLB6X4Unq_Ioo0=": "385505000000", - "d0v8cPLZRxwmCe15uSuTvoL47sStUIc2FdG60y3zEzI=": "392256000000", - "d1i_wM6j2QyCRtGYkgAUJhGYy9QVTjC2pzkC-mWYN3I=": "3848827000000", - "d1y8roaeY9Tvk41XZiG0gPaugJP7hzLsu_zzhsLbuZY=": "460079000000", - "d2Ie08ll075hQB4gPfpkJ7xvGoUOyJoev3GimjrRm0s=": "7710150000000", - "d2bNKkWP-7F-goM0D3qqbqcKI6Mwq4MinWU3ZBGLLFY=": "1536741000000", - "d2brz7y8eV1zGRspvWV0SWHdgqAdFliN_ruzncC9kOw=": "889412000000", - "d2dyRNETyKK0yjnynB04yWcBR0HsQKvFCahrgdhkebU=": "763604000000", - "d2sUqJiiJCfttQsNrZ8v9m4GW17_PPWHFfOTd7REsoU=": "378711000000", - "d3rqufQZGUECAf_PfulczhdCKfcFE9zUhd-8L0kG83Q=": "13479303000000", - "d4rpwXcAT6C3GETcquOIFz6wHuuuHj4AD93g8evSxZA=": "416666000000", - "d5EPZeWi4_sJIZgVVDdnx-kAFQD9F0UliKDuKTBYMgQ=": "587214000000", - "d5oinrwY864rPLf-mstBc35R9XsZTHDkzpKQGNvRWnE=": "4999999000000", - "d5vajVdA7qQhbkLVZ_X2tLT2TYy4LsJkvdjDAWl5cF8=": "407046000000", - "d6q4OZMHxdLVJuMI95PGojKATsT0SkDlgMLpy0jUeb8=": "381805000000", - "d77uQBeUCKZYXCbccJ_hszSaZkWjhnZ4yjPiBb7ZY5M=": "1674750000000", - "d7C6SHredoPLX75T3HIeMdT29CwjEPnZbGXd41dDha4=": "391941000000", - "d7x5ZVq-AJBf6FJDL8lq5fZIbwvuD09k3BfPg_U7890=": "5039049000000", - "d80qZsBhJjKDfzYCIw8u9P30tJscFx6HuC-fvZABdJU=": "384625000000", - "d8C6qqPfxRNukXcsGxfe_s_bDcLq8hFiF94M1x8Kcuk=": "1513084000000", - "d8GXBsfQTIGm_ZKBYktDuwNrZZNbrgSYzlGpq3kia1g=": "3601212000000", - "d8JXr8HHtquuXlyMVLPVXf0Xdi4nzsr4HKHTJKImy2E=": "1999999000000", - "d9Je-gElfCbqA1dSzCuy6VvaV24BXWqvu3iI6uTr3qE=": "384615000000", - "d9lFmoq5D6434sWUi7OjA020Vi-vwCSN8839Od4JpA4=": "1485645000000", - "d9ofPJcjsgKQ9qKTtEAY-nEysdATHFCwpKPu09R-6l4=": "384615000000", - "dA06DUcGPIhmo90tD4e1IGdPIzym5dCUhGFEu6tjgw4=": "460945000000", - "dA6rL-3t_otWAADVmaG7xcP9XGjphoPUzzOAYlixcJM=": "385448000000", - "dAEMGAbp5p98Id5eS6OSpjyZquH7FF2FCY0FQic3vic=": "417632000000", - "dAZ9BVxKXXImivfc8-15AbKXfIPOw5i45MSTWUIEXMY=": "385461000000", - "dAjEAvEpPUSnVizKu6Z_gy63sW6kLDwpyZ8kYU4VGyg=": "417634000000", - "dB2j9vLzKLf10ugMLAITHsTSKbojg8oHvUnJi-xEmZU=": "3823944000000", - "dBGLONY0-ylYO03yZpD8MEbkDN2l6UEyMgR6KOqa4qE=": "766709000000", - "dCDll99E-mWJ7d7dXsSNUYuEI2NAD1Pk9CY3PMz2la0=": "9999999000000", - "dCFf3fkPwe-IYwaKVjiaF0TwrlY7Lk7sStwNKcNx4Aw=": "815756000000", - "dCd57eky8LakgKaT19OdZAJcslWXUjqUeYR-lVWAtQo=": "773261000000", - "dDRjkkk1vgZxjIJmAgaQugqRd3mIf0m157Dvt66rn34=": "384644000000", - "dDVD-zjJpHJ8byWqmdlPHKs2XIzpkjlg5ncK-Gf0fPc=": "818786000000", - "dDWWI0yl4U5YVpd5dYl63zwNMz4Fr2KOayNZc-82HFk=": "386293000000", - "dDWhvLyQObK44yBwMT109_uRGS7BfYIebj6FUjzzAHA=": "694827000000", - "dDfWvwYcnfAT_0OQoahCxOjDnWCnMHmSqt_xnlBeBvY=": "4178535000000", - "dDxOhJUgV3ojfm58-g8jivsEkVVLgXz8xgXznvNe0zQ=": "1810877000000", - "dEEd2_3Hnb2dy7EFuCL8fT2Puodcw_W82XSv7CAYt8U=": "384486000000", - "dEw_TBo5ifWa_PSM5YCVl1ndCvPqCI8AANF6XK04ih8=": "457058000000", - "dEzAvJOROtCm6bEVEBAknqwtCB_iY7CdciwiUzgEd4o=": "385315000000", - "dF8UeXtqaxEH8zsirUToHFXgWAroJ9z-eusHXLyYko8=": "417236000000", - "dFrST_0ifIsJtsNzkZwr62m7XKTyoZtNaI2kZhUl7Zo=": "466216000000", - "dFtRA2etI-FmNX0SgTXVpPp-uDHTR103oMS5kEkWd0c=": "523748000000", - "dG-XG-RLOke2sU1spN4T32Zmn4tpqbPEZvV1Pmg5V2A=": "959422000000", - "dGGgS47brVvdckYkewX5GflfkFLlYB3VAhCmTRNaC3c=": "5080974000000", - "dGZH9SuLnRZTrQ-DP85DPvHGedgkOsXWZggQ6WnuZTY=": "411085000000", - "dGpPPFzq0_5eMcp7HOMsjLvhD0Dd0nITcGqQJV6AiDU=": "416666000000", - "dH6VBHvJb3pe69-9wtvsLv6DPuqcu-EGXzFm-eYuybw=": "2275234000000", - "dHb-FI72QqzcYdjOniZrLAC8VJcZjkINTX2LEgF-rGM=": "417612000000", - "dHdwswCVVNCSvjvV19ZeGOMWsD4H7uiw6P8mY3iFbgE=": "445020000000", - "dHnAEHO0wfIhgmV32oe_NPRNmQlIXGN75C36DKX3k1o=": "3854759000000", - "dHyUXNKjGJxq-Q0WDZknGy1i9Gr5gn98AuNYDhsd3yU=": "385011000000", - "dJ4Si95BIdfcogWx_KeBk6yOj7onq65yDixd6oK0yMU=": "3846153000000", - "dJ67Dedu-b_uE6jmITnUlCf6XS0xy8o5gh0jFvEpUa0=": "4230432000000", - "dJP38NQhtyFVGMwgqDJnMBx1OXJyO9tYuqw3QvN5L-E=": "385507000000", - "dJTJzeQYa2iGWzaSRkHlmgbTxgetB0UpG8JjwW1LeUY=": "1538461000000", - "dJUiWtr075F3JqOVENZpgHXGgk4kP0pyg62H7nnJbD8=": "391344000000", - "dK2VspiK9itOXOHmIkVcZr83Zu2Krjl5w0my2YFBT_I=": "576923000000", - "dKBUWetLv7b1GJd0MV8AtEPn-QR8gZ5v7e4sNRw2a0A=": "385507000000", - "dKB_jtF0mZ7nVOgmGvgNGN_HAvUuP6FTZ2dRZv_zz-E=": "384615000000", - "dKQB5vVxZY12dhf_E4PWvu_q7OF6RqLWqrpLY6bl3es=": "462839000000", - "dKwa85D7CHyAOtp-tod0RQqe5a1zKTFVQ0sYCPF1Rik=": "1891305000000", - "dLGGwCRLMjxRlFnvcemlSUT0aTAhukEsXxZhtxv5_58=": "5992795000000", - "dLMpkKC_Moj6SPViRE880LC8uUekk44KXRDJYuiAs_c=": "384615000000", - "dLerEc_8Zs_1S_c-lvcZf8BqTMW6O-FT-kEOAO3Vsns=": "384615000000", - "dMAl1ZvQ9x7lpU7E3R_PFfb9FHKg3yNq80iz82M2IBk=": "473771000000", - "dMWUhdmP8bkkj7bgzo6201fsNSYa7qCx-5EM7ye_TpE=": "4557606000000", - "dM_Ujo3BdrbJ2aV8BWyz7E3CD6nZEOURuF_hzVeLPsY=": "770472000000", - "dNaVBXj3Kl4y_fCYXYAF_q9VyTZQ0wjnG_r2dEMFi4Q=": "405229000000", - "dNxjsgphghtHgTESKqfoLD8TSQaKPPMwL1WEBI7xYYU=": "1927537000000", - "dO3QPB_I5h1Rd9DyABeXkpWfwX0KH88U_KQ-m7LVdNw=": "416666000000", - "dO5qtTxK2J8yCy04bkRGdLZN9vhuMEJY1tvHERxqlBY=": "5018032000000", - "dP-FD0-lDyKW-CB0x6dg8BZX7HcBVxrhxsTqLtnUBMc=": "577910000000", - "dPNTP-XHE5E34pF8Ou63PIENY90YPH9ilHeglg7aucs=": "363764000000", - "dPYbgbz8Uwh_zKWbAIjq0RZ_JUp2GGHzMOYWXcfZjiY=": "384615000000", - "dPmmT4FvzEyJjOoPEavgtTWlAHllCG41demnUQ_eegc=": "7462662000000", - "dQLA7d2jp-ojApYeL41TSqRotezoP7xXS-B8qWuTe8c=": "390985000000", - "dQvyjyk_E4F2SRyRWNgrJcAT6E1Tbp3Eyxje4bUFow0=": "454547000000", - "dR9g5VTLGdqEFSQ4kaifGAX-TsEpJho2puSzP9YSAD4=": "416710000000", - "dRAp-lOTacaFpWFsb-twCR6CekhAxgWVAYoqioSkT78=": "1152108000000", - "dRCzBkcc0cWERhmnV4ZuYzdFkvyTUPI0cDB8rMZOZlo=": "404995000000", - "dRkR4u721uk-O9iOwWJwBSkJlytjZez3v7K5S4fRxBw=": "417148000000", - "dSG5Uu1I2B0tpOOft-3TCxMXDGCHxWlQWo1WE-cmlyk=": "384615000000", - "dSIVxOporvEzy7-_Um9ki5gAu--_bEtShxyZacHUy9M=": "811696000000", - "dSMDi98DGctkgZdtK3gcPbKP6zE1PdpH8F2dQf3j5Ug=": "391885000000", - "dSRPOG3D69_Hq7MdAiRLDE55yxYBOp-q-ON7148QAHU=": "873483000000", - "dSmN-6RuGnopT_DgNA8hTIkfiYHhGmNVky1Sm87UHXg=": "929409000000", - "dSuemjDCeUDy8KR83e1uknTCB2d3zGNNUuhKZj0IZWk=": "462146000000", - "dTKlbBFaWauY6-4T-GJtwdpd-gxX9iMvJNjWqh55WOI=": "9112001000000", - "dTrhLiid1jM5-JxJX3f0_0saPFJGxB4UkRvExCWsv-k=": "3398840000000", - "dTsvBkUKohcSHEU-YnR-LJbIpM7G0ImIetV0b_2yy1o=": "640829000000", - "dUUvk19Ol_CpGlg-ohwrPpUU1hazexOpK8MMkEPSryE=": "384590000000", - "dUyDheIMMsNX9AyyJd7OZtT29oDObdzJ2Va0Y2wlshQ=": "416901000000", - "dVaiKPJpYtVXLsuFwCF3l_IpH-qbBY9JtdquPjEk8hM=": "622689000000", - "dWC7F25QP8a0mglmac8rRjPkrDZp-nZSyEwM12WUBtc=": "1869436000000", - "dWVdcwiZWWIhx6Ey7ZzTlWBAadQEmjXx0MYLzeV6Zuk=": "470671000000", - "dX2ikFJNiP2JOOD5yAVGjpoShk-FkFLqYIYniSoTj5w=": "393321000000", - "dXPjTjifgilpIP_8O1N4nV4ioOvYmy3tmkkuNqjjd4o=": "1818138000000", - "dXvxrBPkH2_GsWIFEkdsfG28h0Z818CeXDw27_V3AAk=": "454911000000", - "dYDL1XCMzuz1BT_uy4HG8fqNdfyMURqfU5e2ndpoQk0=": "4845850000000", - "dYK0mUASs-BYv_gAXvi74Rl5AYwZnwNIzjCocniLULs=": "450084000000", - "dYxtvCW6UOsJ0b2uYwXjRvpQwdNu402fmRXPOwU9CvM=": "1836164000000", - "dZO9UZ022prBL6rWm6nInEkm2kHm6rjrqy8RfFYxtjM=": "384157000000", - "dZoMTBGeKInkwcrF8covxtbCqgFAmWA55huZTodEfZM=": "1350623000000", - "d_RGvKa4DeEjwL38SbgxydTusCgTz6OUx2rkZiUBrf8=": "388656000000", - "d_bvaFO07DoJuQFWluO5gjQVEbDXlqdcA7hT7CBLDuc=": "418228000000", - "d_jBk19BB2EvHwrgfZxGdUgmwBo3o6GBtgfH4-NS18g=": "3873318000000", - "d_pzt2wnsGFSWTD1J_LYzy65XMUIexEOi5I-qMFuqvg=": "471997000000", - "da2Tp1hsdNn9z6rc66_602igSa4Tv00dWL9Y32TSHgg=": "417630000000", - "daTQhwl3Yd9aqxOA3Nk4Yyp8Q4riDIe-Qij1xe5rSZI=": "409514000000", - "dbLEgX8fApB2S5OiXipWZOeAzUFFNCWQd5ZvY5dDz-Q=": "754435000000", - "dbWXCCIgdCH5BdBAH1dNoR37BJwd5NR2Cncd8IqSYwg=": "411085000000", - "dcnFA1OIaubODtl8oXf_gnPjmTLG8ZfeBKvoSGSgFAk=": "12641071000000", - "ddE_gOljpJiNH_Hz32zCRhNeOuA5Sc1VAwFM-BZOrOk=": "384615000000", - "ddXixeIZ6RUmdnlg9yl_OWnXJ7uZPj4AHoavD8kZeXg=": "3852230000000", - "ddrlHbnW8ocNAjfDX5-lydqAbHYgvMaPqe3lz9QUTPQ=": "1538461000000", - "ddxOBuiosvHCWWAnut6Tc5ohpqN7BDI1x5VvQ0hznwc=": "454045000000", - "de2nzBBgivyN3yIZtArDc7VusHfcvjZGc9exXdDm8Z0=": "395071000000", - "de82028IYt7Cphj2WAeXaWCQC-VDS3ODAhB21_W64O0=": "391797000000", - "deHrv0efmcsnfUB2e6erHf_uQXkzOjXyNlgwpG2EeuU=": "385506000000", - "deqQnyuHDiJDkPorDSHeE8c7gO7NyMBznBbmmkjpwY8=": "7176552000000", - "dfLsuiqyHyhKPgnC6snP1-VZzPOZXOdl0UChBsH3eYY=": "745903000000", - "dgXTKnyaNDBj1l1qyJvydsUPkDUAOrQH6-u_mAzgtb8=": "893077000000", - "dgwxL2M-I2RzafAE9il-ZGlGwIgQRhHdF0D0UOgAT-w=": "393240000000", - "dhKF_F5fBqo7xNEwa16QJ9ZzN7IWwL9ldIFVl7V1et0=": "416716000000", - "dhunfMfPXW6JAkdKZrt0TEPywf17aOovfYwP86e2y40=": "3987100000000", - "di5gszLHQldtCEK7ldwX7gm2mQi23y8UKanOdsgc4WA=": "6853812000000", - "diI2BcoSI5lqMONQfQdIQsUIqHn8uKPYINJk7szLCGM=": "385311000000", - "diLgyWN3Xo_jJ3p2uQJTXhewBN83tptiKmI4wtvND_I=": "384615000000", - "diOeSegwKFyf2DRk7SCXWam5jBqWjcmflZ-AntenMnk=": "384620000000", - "dilNlEsiUiE2bXFGyhqEIrcx9WhJkLzc_Rqf7amcBsU=": "755466000000", - "djBVKxvIo145JxNpQqT--0uxFmTkhoaKuK1dNZD3Dg8=": "386671000000", - "djSg1yC8GAtcZ30-IaHXJQm3dR-pWWvmCMRymfx242c=": "3636363000000", - "djYBRw0_dIS88Kd8xp1yIN83q1DgAspHTXrD9zoSCcQ=": "830037000000", - "djv95_F51mw7U_XdEoJotZfWn956-fjQsVo61QckM1E=": "452875000000", - "djzWPVvdMzesxKnkEgbMmcz_AGi3GqLA5gWM3-x4pkU=": "1249361000000", - "dk9PRw4nbD35fxy46SfQ72JP3JBWNhmCJw5HAdqTVKA=": "557485000000", - "dlSHe_HTeaWYfDdWAOLqlpOw8yzt_8GNzq4BQ6oykEU=": "423710000000", - "dlXOP-fEAseSl14oROZuP7MQN9xo8N9xCGSN5LEgS2Y=": "416901000000", - "dltaEbS3wV9DPcxWMGh_kl-7L4y2aeh5Avxv7y9N6h4=": "926997000000", - "dm41C_BAv-LkALSh_xD4G7zno90lyPLlzEZYXI_JIS4=": "385506000000", - "dmAZETcDUadna3cppxYc-z5GUG6EyDSFHaXQcFBdzV8=": "384615000000", - "dmaEqHDTREIGpVMhULQOH4FlFATd8Z4W5BfwDEwlISk=": "4990354000000", - "dmeIGJvqBeAgwD76ZlSasL9LP0qmBd6YVnxLJUfNNtY=": "467059000000", - "dmj51vuPaMDJ8xZCZMTY28YXHfeBtg76pJBBZKEedSA=": "384458000000", - "dmuNDSXLfnj1uMIyZJ1UT5oEQxV4c49FPL2Pp3fTSSI=": "903313000000", - "dnSNco6PHTTNzB0k4sKpGyEjMa1yFBbCmKRELDiTQHU=": "384615000000", - "dnyXLsmPoBKsZvR_rM8SilMn8HjUiDUkQA1ILDKhsOI=": "384615000000", - "do1psB1ShUKbxG1o-NpHiBiFZMxcGEbKBH6UaH5NuSE=": "492195000000", - "doHvaajs_4a2RXo70U44Wa1V5XtkIHqLU00X-YLaJLc=": "984913000000", - "doJU-09WUoCXkf7GqutPtvzzBBY60-cJ-Rt7sXGNt_0=": "422031000000", - "doebYimAErezoZcf5edG86A5SsLxL_493fKsq6OQsgY=": "465433000000", - "dogJ25WY2d1gfCLyx6WQP6Smg3Y_3zg4ZX3SsTvvsXI=": "1363636000000", - "doj0cQOYEylpazpkGgZuQ_eR5rLJlGYo0hq6DkP5Gr8=": "384615000000", - "dolWf5vXwQwTyrNeywodvOM2TrbxkNIVplynG-IrtHI=": "1153846000000", - "dooUlerQwGbKOdjW-2vYaIu9HxrZn8cC50_bnyMjLpc=": "499712000000", - "doqjHNgJsOUyxaxJpqbaT3yWekmy3FriPG0qi3ma7LY=": "1134645000000", - "dos6V3ljb3nJWR4cm45tbtG5CJa6GdrXAJGwbxJ4lFs=": "1929357000000", - "dpHmv2xSFCLz3_UZcJwecXnXRmZmb_WdV4ZstWqzTBc=": "2039043000000", - "dpIg7_VTKus0FQeicNrbOIOzQrHcfABYDgWWlOw_SWk=": "499999000000", - "dpTC9k4oSM_ewfuhsauzVm3_GY6tVHZo8DvCE2kbdJ0=": "755400000000", - "dpUIr9RkGzTeCJcV4flW_9Mo6b7UXL5R8VMI-9YcETc=": "1153846000000", - "dpvLvrL_52chh-DQsbCHgcFrosO8WnjRF05XUW_CagE=": "388283000000", - "dq6IhiMUFxC1I3-Ew_ek6f4ppem52KQo3CNl1L5Yc1c=": "454445000000", - "dqMzSVMV0BHfYMHJdgKPKW9GDznpy9Cc3gqyZuPhkLA=": "903846000000", - "dqNUT0BR1_6JNo_QU2lAJiZoOvjRx8l_fQVSMNMA5RU=": "457150000000", - "dq_NU6QtCS3CX2fZnW8xtUefjZZUII7F5wfnkArl1Vg=": "1958331000000", - "dqe6D2z0l4fNMygelW_lEKPYZKathbBQgaqA30Ldudc=": "417630000000", - "dr5TW31_nBiCG0STjF-f-p5tbk2yrUHs0X_NSCA6v4A=": "916666000000", - "drW2wcbyWD1JAfru4w_kWr-RNQckg89qqdkqNitPqlc=": "1647916000000", - "ds3Hta_-KHTuQ--DtlnvpgqUMLN0KfZw3_0AFozPBLU=": "1250187000000", - "dsCZ3SD5Md5pjqFjeU4W8coqJgXjhL7R53TTrwz9IRA=": "384615000000", - "dsdciqm77SQl2Zx--u-NEo2zrXX2usT5kY2X-a2t0u4=": "850844000000", - "dtLDvHY7KnbgLFkpq_jyBWsKnRtILqwcwI1L-NbI4wg=": "455055000000", - "dtPMGrsBl2q0LrJQEeVLNtU4G93T1jwRbpjNMfEQDLk=": "1156532000000", - "dtQ6X_Q96_EKx3lAMB9Z8_idY9zOK-epcuthR2YRxQg=": "409514000000", - "du5cYYxoHL1s2Cmjx6oLMeDWI-bTe-7HH1bI7ZJy5JU=": "385261000000", - "duM12vpdWDQ9zR5Hv9ZRWispoUVpMN-eAKiTpma5i-A=": "1482586000000", - "duObPmzvithMyw5azzefiM_r04SmMgJbhQiaL32eKOM=": "384704000000", - "dujf9GKAo4CVojPE5x2tnCCufM1SQL1PXeYkVqJOvNA=": "928827000000", - "dunFChPB6e-qS2oXgHkIGKEeYiZfa7Z6e9GLk51LXdg=": "422196000000", - "duvmFROkatICSB4jRFDNDFGdoXbBklrR9xXoO10oERo=": "384615000000", - "dvJYPkoAyTyfVV5Wtw9qKbWnW9HZbKi5M7QR1JELu-0=": "760241000000", - "dvpEoXQNHInqzqP3S9ShI_fN09PRq1qY9ueKgMpir9k=": "4197514000000", - "dw2ySo8Ixri38U8T8YDtF-X2FRI9QViejf0dkIvq43o=": "1140340000000", - "dwD95tK9l-yvQRUe-xqqLKaGTt002iO4wSd3NLnHH9s=": "3860719000000", - "dwFJkDrKlANIWnc2hvW2RU0e1S5oJge3F3BVR0oWIFs=": "470605000000", - "dwNflKlngNav4UZKO-y2gtxSG6R_nX37AyNIrZdvqII=": "551600000000", - "dwSRJ8miYifCl8CSqiRvyTPfYF0nhr204DiA3sI4lz8=": "458402000000", - "dwVDJVajSbt1RPGTWEVfhKYK2OEQnDtAOCE-ByR-8Bk=": "1538440000000", - "dwfaatzxe41AlNjLmVnMx6fLw8gNC64dlKES4Aih7Vo=": "4166739000000", - "dwsTRCqrOee9p3ja1E6z0Whr-YVbxA_zcqGbTd-kXhM=": "376814000000", - "dxLw1M0J5Z2U7n0G_zMyDDJP6zaxWToud-AQ7inkoCk=": "448399000000", - "dyVUBzL0VvfM6iO5BRJeNxAvqyHKoDedGlaTG-Q6g_Y=": "384615000000", - "dz8vXhOH5i7fYl9g89xxby8aEkTGYfgXACjuDfep-rQ=": "354711000000", - "dzGmwLNHC3I-xqrd1ofiuq3ILiFliyQ65Sod67WSyRI=": "383553000000", - "dzcOPKSHwnvBxrxk6rm-MkMe3BgWS4WNW2VoeKNZiRU=": "384369000000", - "dzdY9BeVHZ8qYx-VPLaB0Qr9b9xv19KXZ0dhoOJ7m1I=": "383560000000", - "dzmPnbz1Td6OUP6z0E91Ja2WBHZjbNpSEiNo3xNJHhg=": "384615000000", - "dzy199_Tjf2MghQoGsaNzwABv2VIP65IChX8B6dJ2YU=": "4163967000000", - "e-0R6NMTseBjDSShNs_DWxY_Pd9SdAitey4cLyToy7I=": "33581585000000", - "e-YbWfzQHjYKAK4JvAsh35gcZ2FZbPTrycBM_KbCTkk=": "926545000000", - "e-bvgBPaZAVkHgGB-enU0Kma_i2s7LOYgAEYS7YPFZk=": "414408000000", - "e-cAwcPokdu_yg6Cxyhz9VRc6aldOB8jfokpfHpd4Fo=": "384630000000", - "e-o4_99PvjfBZ3QQKPFVL2Abu8aynH4CmgDhHJ1t8vQ=": "384210000000", - "e-qWcdjaxXi1KvsxDPYeCEq2qFnh7h5E_E7hA9KkwZk=": "457143000000", - "e04rOKcfvium03XtdxFHtKle6eyUYJP46Zz7ZoNEb44=": "686479000000", - "e0cBzlSMIDm3rJyL-5W-ahDsxefLQA9RqxEAshAIazE=": "769230000000", - "e0eRLKoJh6a-FG4G5OnIS3clwVOcBgggBCyI16o_L7w=": "430694000000", - "e1-1efZPh1oRBEcpqyD3xgCbTmWIrc9agD6yi7P25z4=": "2323524000000", - "e19395zjH90_uibNAOo8Y3p9hGIyww39zIvceqHGVvA=": "1156518000000", - "e1AM6Bo6jK71ec-wce-zUl4sQZ1hEs922Jk3zRIpJEQ=": "939115000000", - "e1MF-dbJ7xKP7t3Oun98TI9Btc5hbPwHfzKf47ZDnKo=": "1391917000000", - "e1b8nNgiOx-B0TxM3Z9R4tLK8FYd3_QMclGJzvUn_Bs=": "406366000000", - "e1eQST_w4MBWvPfbQRhibemrRgEbBflvGCmfGuPf3xA=": "376731000000", - "e2OB45Ps3ZK0odzxzbaQ2dOXZjMyFwWuaOGQq61tX6s=": "384615000000", - "e2Z7egq2xq376HGz97yZAH1peCGs0vYzvC5DJwTBAJU=": "386455000000", - "e2lNbWEK_98J0RMC79y4-KHX_kXar_1JBQ-KhLIM2kM=": "1716291000000", - "e2ucPidO9nhwq_3DQF3SYntK165EtNKrp1fnQZSDhJA=": "4936566000000", - "e2yW78ILtQRRY-N8dhQrVnGH1KGFZxVrTSRQMkQ0HRg=": "366604000000", - "e31w2sRnXzw2YQI54w2q239dayve3PxJpxx9tzJORU4=": "453414000000", - "e32BXIMRFFV70hIYrvTFcLW4ydDrD3gD1qGo0jWj0cU=": "462058000000", - "e3BqwnpF4m0x60qTO33a0HTS2HsDB09-2ngcS12lt5Y=": "409116000000", - "e3CfV8SMOCjNKAYPNYJJVT3nBip23YMR-0-7_cIBSwI=": "410163000000", - "e3ZpAWmUH8GWmLEDpiGd1ka_ctdebkqtzhMBQi4cvII=": "384615000000", - "e3mRY4swGTBSD9odGEumiv__1D9Sr9KSOcEOf4cNIDU=": "384615000000", - "e4A6pEv2oIPlzwacxCNm_Pmg3uzfKoepVDsapFnrBwQ=": "7365643000000", - "e4BcPYQCJjglz70cEShDW8YbbtzOI6zF0eEuIOX8dOM=": "384608000000", - "e4Ed2RL9PnP8pav6lMAEMqDjqlh5H3tmNV4BkifQ86E=": "1382699000000", - "e53d5R17_w-3fqyNCV4GUelsBvq4nZ2xBmW4N1riZeM=": "8999908000000", - "e67KKNYbHaLxcDxHOiTz3jaJRHiez0XA3oQ0tlmyt00=": "377652000000", - "e6n6DTZT0_eWiijcGo8wDDKuZ_9LX3-A3VvAG4BCDfY=": "1389506000000", - "e6qc2jXsWBmZV6xQo1AV-zmO09QjKTW9759SiXXzyoo=": "930449000000", - "e6tGIZBWiGeMNu03duJU5bfONtW4WwdLSDXSe1ZZwJQ=": "527256000000", - "e73jrT5QQqM_nqOucI8Wf9KLbrBtM2N_rs3qhQ7wXfA=": "633636000000", - "e7Czbgx9ctu5gRViroLJhg8XOAAICahXh8aOj6ZS894=": "447259000000", - "e7Ydq14emR56UTCqkKRBH1kt_LC-W9v4czvx00H-Y_8=": "482105000000", - "e8Bw5JxeJ6y0kZv9iSMVutMf0H4woAagxt1nZ8ZaqlM=": "384615000000", - "e9CJ_by-njp_vb1FZ6BVXri78bBFO8yvqNnbF-Dfpss=": "500233000000", - "e9D8p43qthu6oDPZnwUi_a8zDKIzLy5-HibPEot7gQE=": "1141169000000", - "e9T6YCvCxYC4drLEgHlFhETDMPySWt7ZTrqQ1bmUADc=": "2499999000000", - "e9YgdKfD3Ynh6BCZuVETERC50aGy0kliFD8jD2TjOdc=": "387421000000", - "e9_xIOExVLBmQxxOPAG3hZHh2DhBtxWiRW_bphVl-tU=": "384615000000", - "eABgbKH4jP03LCv5U_kLqJXljVah4Ndk6MhnJtwfVa8=": "453414000000", - "eAcy6yc5YSZCIyyZzbZOYK2K_Fsj0-ro4nrhTmDNv34=": "3419609000000", - "eAnV6EG1zsgf6KevtGkkBVFiMuI6mov3NxeVjbti_rs=": "384615000000", - "eAv8PTA85rQt3W2Qp6c9xmFeMI27rpucBSby19DrvXM=": "780021000000", - "eAwRTwFt-bklOgq8ZBsRtxiCKTYL9M4FPKRcR4YIYO8=": "464619000000", - "eBKi2FfL0YZGfLObH2P5RGN2PBKiEPHYb2uirbEws98=": "499999000000", - "eBLttMJ1FfXJw_SMhqkYoCBFDzKbySmO04fRE-M0TfE=": "5776548000000", - "eBeEnM6k-gwloswzhTWaRaASMKVlN3z_UMQ0XVAS4JY=": "534637000000", - "eBllineFZw54g5AUqXiSpu4l_lAn7dmUSvgO0NJLd94=": "468903000000", - "eBxwB3mwL8Mq6p-INYWRKFk8zQzdYkTHhZUHQBsEgGA=": "463799000000", - "eC0zJjjo8X4F2Kn8ObFeZPYxNfNBcJQwjvnKZNqGVQs=": "385506000000", - "eCZ_RLmg3Auqq-mofwPMIN_zF0dtkBlXQkurd-vdaEo=": "1923356000000", - "eCke1G6eKs3vYnd7tKVUZ1bD_vNdKgqqpwbqqAcstZg=": "2101673000000", - "eCya3dpbQPjyvGLGNPzqYDwO5Sd-ZJzBvjCEa_3AFGY=": "3092375000000", - "eEAFZBQ8dzUrG2WiLYV3mvRbFX4N8kcLcpY5u5nsiMw=": "378341000000", - "eEN4-aFRVQWpM5vobzqvcAzwQiXVRYNxPL18y8JG87Q=": "416941000000", - "eEUGFqtFz3FzVncORIXf6TM2UmVGLa5EtNqbz8DF5gw=": "4422815000000", - "eEYczppAjj5qkyyF9Jipnh1HsUq0bTlbjgypJWYdyps=": "366801000000", - "eFFjEHwzdtpYLfL416nMpL4bLPFpNqxO7HaDFJpvyXU=": "1159980000000", - "eFPCfQhExMBXSWStRDm0atj2vDjzKM07A1sVIQQ4NxY=": "1252904000000", - "eFfdEOzStx4cQav870CtTi0fBlQpICizmg8vftzBrGI=": "413834000000", - "eG3zAEjTphgduzxGFDweVz0VuYdvhOorY6iIl_cfXJ4=": "391618000000", - "eGJ-E_5pkSouXmQIMLcgaGkDpK21unggw_SpcACsG88=": "382394000000", - "eGkx1VrcZxoR0Dh_930eWWQICg7R24rO7kn8u_Wj8Tg=": "1246712000000", - "eGlJ8D8VFtrjl7LAARCEBR5c-ki40Fjebzw9ki7RGX0=": "736322000000", - "eH9JQUJ_wY-LIuyyXIPw84DQSsUpHjKgWc3bZ4TEcOE=": "1978680000000", - "eHNfRQ-0YJ7B-4YP34TIKbKTQYp6nmWhWfuphLGNpmY=": "1956077000000", - "eHln1j8SmjO-OtfShQ-wW72DVxZlFDs2FJNFet59f6w=": "3482281000000", - "eHwrdL-wAWK9zfpMbhdRpOVh2DJDcZu0vD9wQnd93tE=": "399142000000", - "eHytJ8Ok6bB8YfIuU1i0e6Zy--Fk4sIadBkeE2_BpNU=": "451719000000", - "eIHrAexAA7EnMttmpTphJNPIE_KCxW9b0EJAbarDV3s=": "384615000000", - "eIi7uHYvQQWCu8Qc4NJE7em5UynlA7G3nyFx76jYU5M=": "6398726000000", - "eJBiwOzkKToCRNSycyC0irvxJaCC2wkwW0N_b5rPCiU=": "6167335000000", - "eJIZ4EG4nJyR7D4kHs9X7l0njeoHSVvyMAmj0Ze7nzs=": "918840000000", - "eJKp6bs_SmsyFxlfaAQ6V8BJ_ty9GXVls6RGZmxvWlY=": "384615000000", - "eJOMFczKmPWwpYrgXYRfBF0f9iMRlpaOIhMLjKKbeaY=": "480295000000", - "eJPIL8uMlg1uhU66kpMQ3nNv3Q28ROh-0FMI4J9T4mQ=": "1153469000000", - "eJU3vzuY4C2WPMn8fjXgV9A5wAtQtIBqUFvGbqLLWOQ=": "385507000000", - "eJZa441mT2LD5RGWxfPnaGp5D2qE6fRG5XJR4zzuRwc=": "2083313000000", - "eK8v6F_eEzbixl-NixFXf6i4oPTP7QAOKJsz9IJn0e4=": "454356000000", - "eKHfIxje5P926ilE4j2uWIRGocO256Mr1rTAYeiwt0I=": "385725000000", - "eKOgiQlmLC5vOdqTosDegFk1JlWhinCpVOlOyc9ntt8=": "386318000000", - "eKcOAA5B2S6wsiGJqKXW7FlfmYcbrnOirxJg87U3qNw=": "377379000000", - "eLWHShdbzKRwbrpqzm0ebIzbKoEELqXIZXkhO_EoGw4=": "384673000000", - "eLqP9k4v_SwYYd1Bu6YqqaSz0Lsw7a2NqFVQ9zYBLOA=": "1666666000000", - "eLt076A2jgEa4Bb0EFYIw958mFrR-gBcVolhzHFajX4=": "1640805000000", - "eM-RIl6VXofIGcl78d1so0fofu_1qJMGdNvko5MZM-g=": "406351000000", - "eML_ng9ehNWe8oj2BMI76gq52lb9EYKeLWaR-O1n5u4=": "1153846000000", - "eMmmKHq-NybTqh4t6HfiVp-Hgs6UscaGnduBmjA5Cdk=": "418099000000", - "eMrKquJYw4AEezSzS62OjKf7nAQOABtuZ5Z4LZvXV9k=": "1264783000000", - "eMz3sWz0p22BuUjt-3Ak4eEM5kB2Za7MKOpdYk1AGms=": "1513905000000", - "eNdpzESjD3b9rf6zYpsQxHsejUTT9SWmI1Ie2w0g6yE=": "1166569000000", - "eNlaloZWo2Lt7GKef1CuvbZc5EjrX5rZtozZl5kpLL4=": "416673000000", - "eO0Ino1h-6ePD-NBIwH2cH4Jge00zD_GiMbhVXbwBP0=": "576923000000", - "eOMALZJeyJXeAj4Yc_bJzboq5uwsAB_il-P_jLjIBjs=": "384615000000", - "eOQfSmoPslr5R6n8XMpVXAd-N5siCWFA5NVkvMT3FuA=": "384615000000", - "eOvqN1mjv1js7B3du7u9jT8uKydf6pNdcDEAUxh05tw=": "384615000000", - "ePFBOeXUmCS3GptbOyo6q5yjogShEGYFP-GP_PAPXuM=": "416666000000", - "ePzR2L_8F3wYsS2I4q850VxgutXSKOlknKM6hW_NDPI=": "3357692000000", - "eQBGHSC0iGZUZYTSkPoJDptl3pxEav9HaEefBilOsxI=": "461153000000", - "eQHxbMKiz2eadPGSlaiAMVZItSAQrhVIqg6xjDK-LKM=": "457494000000", - "eQVkLs9ijnXL3K-bGziPQuWCX7UrWMy5BNW_W74o3nw=": "384615000000", - "eQkOrjlPV5grWGhscZ9GqGTDQbfiXokrv0KEB2_v9ZA=": "1153861000000", - "eR_CqZrzeStV6-wX8TJ-WsWpP64gnrzSuTPeB7VG30o=": "576923000000", - "eRbdfkZ4VslRH4RKlD7na89muFHXfx6GBoDjTLMWxBg=": "1178180000000", - "eSnJOCGvkdXoHD-Z4CvQryWZ1xPKuGN2OM-8rJ3yJhU=": "1666650000000", - "eT7kKFEhiImymrvJ03JW_rpTXNelEpUxRt3DME3p0c4=": "384615000000", - "eTWaXxwmgt7EFPFRSdcnO_fDAo64w9UcAmw-G6_57Ng=": "2254165000000", - "eTZOm_5rE1PIKadyuIAOSJfPrqJJWoD4BfSXKyh-tFc=": "4470559000000", - "eU3YQI4GOHRANQykdgxvbypmfpTNNYniy4CPC8tMJeA=": "1923076000000", - "eUmBtExQequO-XhvYBjR1Y6NM7mXKeCO_rv_f7AVpw8=": "499795000000", - "eV0s5_lhZc1NhuZd_SVA3koWiXH261DM49PVAe_KpuA=": "384615000000", - "eVF6bK7IywyhA7ztEYzYVpMqOPtptUzzcu2OC8z-O1s=": "446583000000", - "eVUWRvgomVqoJpIa6NBreZEjOXoE0ADfn-9mSfihI38=": "452413000000", - "eVtm4pu7AEQvITQmoMTsEqZgte1YouKWDaHH298LnbM=": "15769230000000", - "eX4cNw-TrbVQpau8mAYNkh_OHGJxOG9JcZLII_vl8iM=": "1368801000000", - "eYJFvHiDCNa7lg_D6f80Bn8JWdbO9weqUDUv-niGFQc=": "384615000000", - "eYnJhdgbZSFudt8hacC43PB791qGvIn36O5xHDHIFHo=": "385509000000", - "eZ6SJq3zwZU6V_taxs1rBMwSev3FypGvqs4JJ-Ieuno=": "386432000000", - "eZAhW_EgE7IIhnqmU6tj-LInDHEvG1o9Zqosjd_Q560=": "462839000000", - "eZO9GC99Z6mA_9GlM8-g96uz7MNoTot0mtFLYq-aHg0=": "381727000000", - "eZUgVk3ykhknT0Cfa3sOT0MTbenVKg0TgoF0_YwsVv4=": "457619000000", - "eZUjw3NbUysMh--t13KdJBTGKdFqiqGwbfSmljQexrQ=": "385108000000", - "eZZuGS3EAY-xkB4P-pXPE9VhN7FqpXJnVGgeJPutHIE=": "391410000000", - "e_C2AHGLaNMdHx1DyPPhMsv5mE67srrHpCv60tgq51c=": "453585000000", - "e_GZiP3wIeQK690pTXJgqIPu1kztRyJISet16mo8zGA=": "3041508000000", - "e_Un4YpvgbnVpJm_RNkWiiSqUBbE_R4MyNSq0Fx28ag=": "769557000000", - "eb6SzzSEscW19INQRreOftAOR03_CMTcSl2ccTEASkc=": "382983000000", - "ebB5mOS4yBKjrA1hT5rt-oeWk2kzhXpKnFKW7C8SmuE=": "954172000000", - "ebN-LU8boR8lrRxbFvrqasmUuqdAbofZiC745CV3VJI=": "416666000000", - "eblz2DY0RM89WuYsashjiRl2eh-dH8kqfqNd78wPIK4=": "530497000000", - "ebzd-jUpLtRVeva7fG1sJA9DHOfzduI3hTdovLOs8KA=": "384615000000", - "ec0xKJdhcDZl_pCmtWmiFOcLFwfiK3_9HK-CZDrXJFM=": "382302000000", - "ecDt97K-qJd7j-3Gmd4UESqC5UJuePbMs-ifHU8NXNE=": "4890586000000", - "ecNgIkZktO5y8amZzac8IdCAB2T0wkKzcqs9RQNTQwI=": "382479000000", - "ecVuYLnRUgxpASvGqTY62LHTiquPg3Z_ajoBbmkeTe0=": "384615000000", - "ecbsPk5TKq4bLy5ANiNa5syeM_B4QQWYPF8NceAJgj8=": "1159720000000", - "echgLa02aoNp1Pygv5lb4tbz0bjJ3uoRT3OV_Jcl2xk=": "538028000000", - "ecrOcv_ZizqZqUZc7SG3FRoJkiqMHoCpNT5NKzr_hyM=": "2088168000000", - "ecujt-LmRjLJLHsMkP6NbXjNNfRSIwtrYa7OWNd73zs=": "460854000000", - "eczomRGKFJb0NVkM1BrDty0YVpZsmwhAosoJWKT33yw=": "385506000000", - "edJkjXi2AJcbWoT-Z52EMMkWgb_8RAnJ3wuMJk10Ii8=": "400250000000", - "edQTIUkbCiMGlnK0T-dq3F8Xg8VUkCc5j5HsOvVNxtA=": "384615000000", - "ee84HaKdf-C0rPRuSWc_0FXgjdDqmzmd7M4pc4X6W_4=": "462771000000", - "eeE49LUZu_Xy0M1oPAyFR8vFulzCsPzbgl_FZKeBnFM=": "385507000000", - "eeWDKIdLzFkcl8vMVwSgLTNEG6Uw5t9xQKTxezrdc7w=": "455600000000", - "eecBd1l07Vb2iCUPOaQz1uWhOWanqlFajPBnfHfhl7g=": "388394000000", - "efVl8blFiNKDKopu64diPyPd4_pZWyIPtDafl2fA4Ow=": "377652000000", - "eft63b_KoxKviLRtwU5xeDUkJEQf0hRUeyWGdjgs-K4=": "769171000000", - "eh41IvTY3palGTJWmJlijin7ZK-H-c8oyEUxAQRQXoY=": "1923076000000", - "ehKMD6POZPV_1fQ-6r06Uo7nDHT9_eWn4ulcUYRVNZQ=": "458818000000", - "ehOKDqaG-LeBh9NEGEV6WPL_jvzMOPgeYh1Yd3T8hkE=": "395497000000", - "ehamT93hhVLUUnuH9OSeS0LNk3Umdp3-jdk8eaBX1O4=": "461047000000", - "ehzH7cWdxKg5i0GMsEdR3hDeqvxdNjBzopLlFpVCtfg=": "833348000000", - "ei2ORwgDRviA6Xob4tQyjQKQVRi0j_-qaz-MI7eMtVw=": "461303000000", - "eiGYidly2G31UX3xuQWs4ZsfTelZN1FTKAthyebTuUo=": "456684000000", - "eioCHwHy2xDMzckhgkGxSYcCtqsr_lLVObFkWh9i_SU=": "833348000000", - "eisD3bMF0I8DpHNyfKMvVVLBfosz356kkybMZOnDaIg=": "387020000000", - "ejW0yBDqK6UMZWbZqUdPlyToktBTZxQa7u8ZOFel31c=": "501244000000", - "ej_n1m8VEdaGjWBYxNaT4KSmmzbEXMMfdfRsHksHG38=": "3846153000000", - "ejoYIDG4E086wyGEuMCvpq-Wo0b1B8znPiZqX8Wm6OI=": "416666000000", - "ejoppR-z6GxoXsv3Je9ZVmTO3o1iwU55WjtuDFigsGI=": "845123000000", - "ekScC6KEub3x7_NiVRqUSRzBWZFWi4uPdtGocALbFMM=": "668914000000", - "el1OTg2Dacf5wd7g2F1NN0oqbQj7aOglGGQsBo21fDE=": "769764000000", - "el1b4KNHRaE_CeavZPz1oQxuvjGB3rViBqRIfBXtIsA=": "384615000000", - "el3y1oE2bQ9AuimMUOUu8A4cQyI60V9MLRoQyYEGPyc=": "999999000000", - "el8mYNjp6zjWkssxyBoTuDAgSxgrj-t-CQ4xKXDkedQ=": "2056000000000", - "elFMpDTnzh6LJ9aDMmAL85AclmonTUo62j_AGoSB-KU=": "11016896000000", - "elJprKE_q7iTcme5KJCNUh5gYefaZLqrZ3jdh1K8oAE=": "3264034000000", - "elZAb5P415_BIvsH-xdJAcc-FdRzUBJnKmjH1nlf4nA=": "844474000000", - "elZzwQ8EoI4tLTCxOm0WeowWoGLhFhcjv8VmLZJu8NY=": "383965000000", - "em9UijfWxfwUzpXvvcFATQvUWGbdJ03fnwSxvKLnp-E=": "1175392000000", - "emDY69GLDrGGkUb4s4sdk7BfbJGRVV12P0HMIi3GbIQ=": "1918713000000", - "emV1k01FQp9elsd76jarj4c0QFmW-q6OPUT5CYoQ-os=": "4850249000000", - "en4FKDyFMwy2gUxgUVmGLFBBVawK8AQSTChDcvrNExk=": "377344000000", - "en4gdjkdhpDKGaii5E8ShvL_7_DJm7I9Lvnm8wY_eYM=": "3588442000000", - "en57wElW_hlUwPzdvXWpOA_daxWBclNvpM5J00-WP4k=": "3904888000000", - "enLZD_JsmFFjGhsw2NNo7Yh6XIMGvWq6-1tgCbjsCR8=": "464300000000", - "en_kcZkCDIAvIPCuM151-uiRIgdzUordVq9PbqR6zJI=": "5002813000000", - "enixS1BrsoACpwrV7z062b2oCx6UuZGc3VNap7zMYmA=": "2349048000000", - "enu6Y189kYh5GUiSJEdczqI-r68S9UlPBA87k5lZnQ4=": "384615000000", - "eo1P2_ldK4XDzRdjDRj5ogA0IBgJTkkQ0L5cV9Tjddw=": "384866000000", - "eo1luEYTnaCFMQiufiLsw2A7QGu_8ZKiDxLPamys9yM=": "1999174000000", - "eoCa_6E49uow1DyZL6DPaxueJRlaRmXLJzHDDsaMadM=": "562406000000", - "eoR74-fzvfCQPXv_1GCLgwIB_yASxyq9cP2tM9h9T18=": "2080561000000", - "eoXxhbd7v3GtUrmRyd-w5IPOyYTAMqHDiLRFs3o0zag=": "469479000000", - "eoY4sna48p30Pkp-U5FULoDsvJkNq9jEjg8BHRFwNuI=": "387261000000", - "eon6eL_DPO_pJznE20cl6MtwSybI_zMeJ_gWcz2Ziy0=": "1923076000000", - "eoq_uXKKS1wz3j9lpLG6jTRyLfbGdMpmT6YJ6Jy_5M0=": "595574000000", - "eoqr3J27mjDIhaVZGZ1wK7jcjF_z--GuraAoHipey1E=": "378404000000", - "eozMyRqL36WdpkYqINrt3NJYftd21ScRsJf3Ad5JaGs=": "496297000000", - "epNKDu-nAyGZxJgOC2qSIVYbAmHdE6ImitmWl24PfeM=": "451653000000", - "ept-ZqrB26kcp93jMj9zGw4iDJo6NDdjndxBeEYoIWg=": "383550000000", - "epwRFYth9xl8XCC8GCdhFPJDNmyRSa7w-6xWc5U4byU=": "384211000000", - "eqrnIOJNbJjGkM9mUAPbuXcr8S1_KzqR9gTiULhLEqg=": "4630426000000", - "er9tZZ6X6pm_UO7waANKmnOkqvlCU-d2L3YmvGtyVjo=": "1702120000000", - "erHSiuGfpsrgFdMYz3bL7IgT9ESGOtEUsZCBnlYF8HY=": "682427000000", - "erIrzbvYpappIPqO1YN9XMycWupDQoKUf18ji8ij0yk=": "3540305000000", - "er_v5SLvzhgRIcWB1eapNmoyy3QmVCqYisYBu-4_T9A=": "533495000000", - "esQvKtuJy8FWXMS0pfXNCcd9M40t-IGVCVGntw3fPXI=": "769230000000", - "esaLiTrr5z3BXPnJb16toWkpLRBgh8R_FnsLbzSCvwM=": "385252000000", - "escr-D-kg83YmiSBibfR6Q-7sQXW5pXJ8s-VQLNQmBc=": "101363636000000", - "esmpbMTvXwv2rhZ0FLVP-q7arYUOySQXE4aaEJWsTiQ=": "383338000000", - "esq-sTF9oostKX_3Kt6rEfFk5wRyO6foxqm1aiG7MRU=": "1148124000000", - "etBmxa-PHFlwSBA3znze6XmP0lWNy9xrTVrxG_uSuXw=": "385510000000", - "etLRTngUtbuj2pbPRwW5E4coduPD_k-K3PNWARHU8dY=": "2417654000000", - "etnMuWlcT-Vfy1dmmH8zNV4TAnnshSoW6GXTOSJQknE=": "1330594000000", - "eu6uTe8PZD6W_snaMCHn6z_lRkLZZqnMvhmFFBl1kfg=": "945669000000", - "eu9c-aTlcoUbrb62ub1Yi_zL9wYEI5XYvaXKoimFQkc=": "2350155000000", - "eulzYFYNSxALipO13YJ62A5zent0p3DmwtHq7mmN-Cw=": "455600000000", - "eumzllYIlsaptvZpdkU7JzF22v-Zh1R8fb9Wr1B1lzw=": "610405000000", - "evtxKeNNZ4EGDQVl3QthhzQhJkYyHKydhPVm1WfNXZM=": "4166666000000", - "ewkeynvCEXgzFOwSAVdLHywY2ghmQkiYnIckm241EhE=": "786413000000", - "ewr4XG-0YkR7UWp3Pp4R3n6fXAKQiwES2ZBgwDfuuhc=": "469739000000", - "exMN5ZhBRyM8wVqhg0fNWN0foBW7_baUzx5saYcZyFs=": "385510000000", - "exT_te2nAwvBzZIhnyiC4ktkHA7EszVi_wiVXQfvEX0=": "384615000000", - "exxbPUOTjjjd0Dm_xP-a1ceFg4IDBnnuHcIJqyhFZKg=": "1181818000000", - "ey3fyaF9MCeEdf6ukePVlomTtHVgdeONevvL_h9WK-Y=": "2314250000000", - "eyLsPuPUNCsjVeWiji5OQSwcJjnN7P2jWAhD869IgoA=": "454545000000", - "eyYFRqoitlcOY6UO8ODJ0IzVF8m0tXnBRKykskmJKYg=": "384615000000", - "eycRdNldZlb6UXeIH78Jrvp3IoyQEdegeSlCkJQY-gY=": "1119486000000", - "eydr_orztwFI6lHF1cKQXzpBgwjv15REM8tVdYRgmVE=": "389414000000", - "eyxNcv8G7eD3oxRppIQe9E3Uj7Fc38scad9AJowU260=": "3855083000000", - "ezCyqZFpc9I7id7yVMycQx5kAkrg1DyRmfDKtHBO8kM=": "384615000000", - "f-9Y8qXQOWD4v-xABbX1BhZuOuVkgDwmZHIe8VyDSA0=": "466542000000", - "f0Cq8U0q193deKG4nV6MDc9PTXWFRKUdPBS0d1EyuUw=": "385506000000", - "f0xPoZyjtinuX2ktBZ-LUHbct8skHxrgzXQjp3f7JEA=": "568601000000", - "f1B40SlgzGga1sOmZcHPuLFQ0l18M8Jume2OBmpiNBY=": "388478000000", - "f1VM4VFobNnJrmtPrypbqd6pXY0LAUPWsHBd41K7_OY=": "473265000000", - "f2ZMKDV1oZmqkJ59tI9ux9Ac_WQr8WnYjz0kef6mpDk=": "1000017000000", - "f2gXuB8tUFaOMq9CgpLG0AZLgFowE7i-5-wxVzN2q-M=": "453393000000", - "f2yHTzN8D5-F2rBWYYxEgyBIARv6vD7vnpXCoUZOp_0=": "452790000000", - "f3fzAiNphTiXuQVHi1Jyxo42_jRDWy8yIv5ymNWPyR0=": "576923000000", - "f4VYkOJ2qmkXIqOeqSUvCrtIhEpHwgSQQb60gDWP7Vw=": "462146000000", - "f4fIbPHVemsr8xN2urmkghf2g-Aews-rXVLeM7Z5k-0=": "454088000000", - "f4lBAePKrZfSGo3wKIVfLBF4izbqZF-d-1xGLTljqh0=": "446181000000", - "f5EglovKv4aHeI2Io-d7gYWgWjhh4UF3QrP2Uzw53rU=": "2016540000000", - "f5LVL06iIVbtT3FLa_RqsGVumlDhm-u30yM5SCgVt-Y=": "384615000000", - "f5YReoPH9n-hx5HhVhIA_rKR8koGUQ4YArnpNZHOSUA=": "378404000000", - "f6cKIk1RKvp8dsK0n3oFVPHaGALQMnQkINoLQa5BVwU=": "412211000000", - "f6pzuzgWkCUJRlsAkNH9YJJTSGbkAaWCp3kC1qAHTNU=": "1923050000000", - "f6tcWeFWuGGkVRHnxfrAZL09e6rq-wpu5N7mxMizyiQ=": "417633000000", - "f798VUoU7EqXcA8WhrWYDfXes1SPTiLZ00M6B6QJ2Yg=": "833333000000", - "f7A9yjOUubo6Py9L5GziyebEeU-9XStAIWEvQdAU_9M=": "2295482000000", - "f7XkxCO5xjKYyNkd_VsXfEkBcJb0LxnWFguIgGZgDp0=": "1581798000000", - "f7mbnyWH7qjCxGTpZReDDO_lCYLUi4M9tnNhAykIKNg=": "471919000000", - "f84qTWaSjc6K2qi1NBDumYH5I34ZGF7hT2abxI9Lthk=": "391305000000", - "f8UlfgfunLWK-JNjHUYpoOQeus-elDDNni6NjrrNa0U=": "4776060000000", - "f8Xp-R5EqPgIGo47Yv6RuCLutZB0Ui6_kfs8kstNaCE=": "598422000000", - "f8YD-NfUQ2hJlwyOmf_2OxgCUvqL1PlRZ8E3utZwznY=": "2250164000000", - "f8gv1a0v9JsFM9CCOLTVbsqvyLUTxYZXFegwg_hVauM=": "838332000000", - "f8qPg3nvIGcjePCDvMVlZkI2Nm1e6-AtBBl8-Q6lT5k=": "416666000000", - "f95YsHQVeCTMq_D5FXGr1Dsq92zVRXXs6ZNr2eV5ebc=": "1090764000000", - "f9I7XqsdSQ40cO87704VkOwaEJ0IZoY9KOR26FS56tc=": "418280000000", - "fAUF8AAyW639Wx6mi4GPMgVq84g_3F0uOaGBM0kNews=": "3076923000000", - "fAd-pDG8BQvEbBwCvoAg3wB6hM544OtL2O7UaaLqnGU=": "381591000000", - "fAj1YzT6xh3sFsiyD4DqNFEv8VR1C0xlRo6ONZ8KsWQ=": "1156522000000", - "fAjdpBylvkZvmW32S4QzOPLiKh6vtyVdTF7S8_kpggo=": "408021000000", - "fApWemOnPumnBddWESWNSEX_xoIVnZCAo4q4IIFKrrI=": "1923076000000", - "fAza0vft-LnM3kbHatiM-Q4pSXJbE4CQV_4_oZwyEcI=": "833901000000", - "fBMegoDW7k8hoIA0HB2vlrWg6wSLS1RoSo3hO0oDydk=": "454545000000", - "fBNBGQx0fJWuVdOClDmoillrGGb1xGiEuLaHY5INXdU=": "763607000000", - "fBtLA4snAG7xh2YActnBD4HL63bcr_vqH4NGTrdDXi8=": "458399000000", - "fCGMcFTYfqrS6I7nt2hpwdkxvUIuzc-GPI5dhrgeGv0=": "394336000000", - "fD0OgYM3Win9RwOgBwHrjiY20_3gmATmNSTtd2uqji8=": "3855075000000", - "fDGrHMeD5WsPskBcjqKgcth_IRNKhgtB5_kwullW20M=": "464365000000", - "fDJP_Lz0vnjcPalsyeLJYzIeNfxw2xKYoJqzGh-FGoQ=": "1927537000000", - "fDWz-hLghO9YxcglrC6NMk02n18s3HiXKW7MdGwAvaI=": "2645073000000", - "fDXQYSQniUkXoQKKfOO9IPLlPX8_Mww2L9UP_z6fm0I=": "911964000000", - "fDfikulEsXITpZjFvI-XFJZOFsVMlTj-6UIBo0VxmYk=": "1233257000000", - "fE1ejbPGxwdEjIlS78Bn9UHsEocC4xCe-rmhs1IomrE=": "2082775000000", - "fEJ3JyzcRKQSUqazbmA98GxPgfPVvonf7xydFc0_EY4=": "416666000000", - "fEK70XKGUj4y8a7zjbKFwuWxxeD8YU2NjslH6APDeZs=": "385509000000", - "fFW3qNZZp9Xv9ad3x7Aj2Dv129V8TNQdkrXMEgarGyA=": "387850000000", - "fFbXHPz31UV1NIrPitQg_UTG8mmYOzIF38oimB1rC4g=": "392600000000", - "fFflRp57BvsPuARmTax65VCkit3zpSX87v_p6F5dW9E=": "669690000000", - "fG91xbeR76xMaw_FYWSRk05_J8KhGCE6lRN71CWb6Ds=": "4627198000000", - "fGCFx5XuwEp0VYXzKiJRWwU435IrZi7M_hGloDhKREE=": "770867000000", - "fGXSww6BnqoICfGQnvjQP8cwK940PLIF_-9KyIINfwY=": "924302000000", - "fH3oVWedggwO9ytFOMTeujSXrPCDYKwNSMOEbyzLXNI=": "405225000000", - "fHWW13jX9bI8PBTgFltFpQo_A6djj12XNYWoJl4zEVU=": "457134000000", - "fHrNR49w-AHQmnKXQfcq2K9KHRNYHwIM30k_WpOryAA=": "385507000000", - "fI7GVjMgZJm9KK7AjJ-ypqEuqynZojGY7hCjm_BKszw=": "483750000000", - "fIi_7MwOswrXbDK1iRKbRurNqu-nCm9sk0sW949hjjk=": "3184807000000", - "fIlztTSTivcVAmIOBE6VrDHkt3N-p1c5esWxcFch-Lg=": "470605000000", - "fIqWo2rw0KmMOSGtadiddc5PkUecuOELcvlNjH3bXd8=": "1923076000000", - "fIvX8qpUA_U9wZfOZ_InZ9TJ8nKtHDDCdagIADAaarI=": "419190000000", - "fIx4FSEoy15TlLf8Bk0a-hsQQIVw-MpkrEHGee6cDhc=": "9999999000000", - "fIyBvMq2MtAiKSy3c7gArGmlNt4RvkztbYAVCK67_M4=": "912806000000", - "fJBHZ_n4FDMl9-WuJ8kO_AugJqhOHhmPmQntZAGKEPI=": "382297000000", - "fJWJvs4uAcK-Bvw8UZSzvWqcX9IA63bSSNcYf94FD04=": "4727509000000", - "fJd-y5wS4JpBqhhmL7LvhnL3b3BxtemhAAZt0Bn1MNE=": "1156518000000", - "fJpPLuVu8lFHLMwVnBCeLg6Q1Wy85mhWtgQidBLmdao=": "392121000000", - "fKANIY1EIjn14GCXu3iv_okoCzJbQtcVgEQxDHa1Wvg=": "384164000000", - "fKWczLbhtlAE7FbeD27zAxlymPWMSRqg84Fd8W4vim4=": "3846153000000", - "fKyYAK662pbzlrKmQjW1AH4eS68jCjjHka7t6bERgSM=": "454640000000", - "fLCs5kjR9pSsLeXHy50Luwx32l3cwXonCX5_33DP0hg=": "1923076000000", - "fLb50xVQCMybTKW-_cBBksX3hLdWb0u2mbzF_-UBv68=": "769230000000", - "fMZIrWx7j0sn6Dd7TLdRUO3_d10xHuBknS5BScV-mX0=": "464704000000", - "fMaroAwg_UphB2vb9ABbP4hCFGpOX4BBEkKe93uD-u0=": "384615000000", - "fMhEU-0J8YkN-rVj3r5_vLJ-cfsE4orW4sVdSKiXIOU=": "386022000000", - "fMncLAPYpfKpKCLCWkAml4CY6cExj5Tkd-Zr4OxjY_o=": "1153846000000", - "fMxw1ikrMOxEqiYFyTN0uhdcMRZ6SelHhBtOHhkGlww=": "423181000000", - "fND9S-O83kJUSsti13l-YBWyHmOQSr0OPODNf0dh-t4=": "379068000000", - "fNLFkcI1pOIbR-ZsjSazS9Daa0SMRykucbt0pY9yBaA=": "632834000000", - "fNR7WrVt-LSM8z632jXvp8SC7mTfYuHXjUvYcqjaVds=": "555410000000", - "fNdKEmoFf8ebZ6IxYv9FkQzo0L2JOZa6xqCneGKm-Nc=": "454354000000", - "fNqpMCAXS7A70J94qpaRQfE0ykzwRWWBUvpckDohfqM=": "5384615000000", - "fNxqLPBSDcYNf6-7L4fJjNLMApLpC7f47KpVzIwi5C8=": "821056000000", - "fP1AnAgY5tsA9RFDVEdAveD1spSUsKyJspJx_FPAcHs=": "411085000000", - "fPfX95Ug7kGcwHo0vkVA3FZGf5nTlQgBipJ0cKbhge0=": "2029545000000", - "fQF8dvHPzEpU_ks7CchZ1rmFHZu-OXJ9nGLzEQj0s48=": "4623902000000", - "fQxk7q479bTK_KpWkXKJmRVJtNtdv9nytkTl6PIsfzU=": "8329509000000", - "fRB8e5JlR_qsQIOBZximW2CWek2G77GCcABlpWgzk9g=": "769230000000", - "fRFXC66BaqxxhC1-YhOpapVAxUNpfzRyLDgVoQwy0VA=": "411085000000", - "fR_LAurbqfMqcHjKJNKHa366jU01C6X6Zoh-vr2ULPY=": "2157071000000", - "fR_WyyUC71_GmhMYXZ5jO3ZSX2XLvp9a-V4-kd4qEr4=": "366808000000", - "fRay2iegJZ2pYQakbSYLWkpDCRPg_VPpBp7T7p62p1M=": "454565000000", - "fRi259Qy82yFS1FVZgdzAcxto0fdt7KiR9sSjr8nJuc=": "440433000000", - "fS-ia_zI_8_enG0N3EbZJSZaTWSRBOCrLm52iIX_uAw=": "1153846000000", - "fSGv1wcL39NqpQZQp5fUwSZDjWTv3qcuqzare_a6QLc=": "692307000000", - "fSOQXDS6eWwJYzgXIxY9dl8kCII886jeT6EsYOzFUK8=": "494934000000", - "fShtAk-vlNZyydW06XtJT6z39vS1Fi5WzSmaU-0-_Dc=": "390440000000", - "fTVskVPNwAzmhQFMhzduTwkR7ULP-JhT21EgxXC666M=": "380221000000", - "fTiNLT9bjFz5k_ATCxF4HynvJQf-2bARpHbBllZk_pM=": "384620000000", - "fU66Zgp2NHt_TthkCRAjUCmIsIZuzAHm8LvbQAXatx0=": "383937000000", - "fU7kJcLoj29gJkrpbuOa2jmG-Qu2RbNAPQZpHBI-NYk=": "424379000000", - "fUHV0AIMXMBZqnSyBty7FWVgAudm2ZL57OQWe8n4bbI=": "454666000000", - "fUNS-0rbER-vKvBhb1M3R5hBkCqQhjgDdtXB69ql1KA=": "383194000000", - "fUUKBcC31gpVPJEpfjQ3RZV19HZ22p_0NtmKK4rMLlg=": "464933000000", - "fU_W977Pf2AhmGhJee3KSC9LqZ4A_-xzGrEsHtwJm3Y=": "754692000000", - "fUafCXs41tyJrSCBILJ7AF11LrrpKHYyD4l2f7s_6RM=": "1646440000000", - "fUblnTII3DiRKxLwayMHHf3OpaR_66EU0e36pQ8NbqI=": "929409000000", - "fUfO7i91GfkQzz0mGRtTvg7rPZlFKZiLMCbKBQSIVyQ=": "909090000000", - "fUiy4ENDamsWKR7U_hNej8LSJ4KO9tp8D6xNX_61U10=": "563651000000", - "fUp7vfsi6sFpidt0fvZVw48XNV2o3B7vsvIMK9IjH-0=": "3845830000000", - "fUrX3JxsD_UaQ7a4WfKZ7uI4-Y3sG318O9ufOhv5uxc=": "464007000000", - "fV1WT-Nk-PtdhCT24OgaYtHb1XqOhpNPMRuUZlVAZYk=": "633131000000", - "fVEqtVZ0wR8vk-cY9omYo4n9_LxfKPTOtyWxZmTNpK4=": "2780505000000", - "fVvkcX8oGZq59pm2VH4JNQH1rw3GNA5VxsvihuzixCA=": "3254576000000", - "fXTull3-XWpJY-4m9Por3Yc-DzEoMpCmnf_zlzs32w0=": "416666000000", - "fY7bSZN3Wh3JsjdmKc7S_L3iJizytC3Sn4V65_1RhqU=": "381436000000", - "fYcoc94AHiAcmrgO4e3Iut-nTFgOiyjrMMChODiEpj8=": "427219000000", - "fYgNZh7wOZ-5fZvxbvEYspkNKxzRYzdM5CfBGy3zc4o=": "1010700000000", - "fYp8v0YASBr4hEd4ddfXVkMMr4zPforAQSLKpGcpnVI=": "1544676000000", - "fZCyebWSgOEDcowt1aRSQ4kX2Px2QTur7xhedi4pW6E=": "385507000000", - "fZFSG2DgZEOs6jyHdgCiGELmAApxJi9Lfx6maAw4w3E=": "2083333000000", - "f_8Da19LlhCBkwipf8C_HmiIRSsxf-WY_vpnQM0_LW4=": "416347000000", - "f_Abo_rzUeB2Wbnol5JtRWE1HgLtxxV_eTEVadKJRfo=": "411085000000", - "f_RWvhJvsUjZxq8U8TiDatBYfiULJqeapW1S8iLTZQ0=": "391797000000", - "f_h_Kc0VTAv4EFgYyvsxVxk3dqg0YpbjjDdYjWmmLE8=": "814741000000", - "f_s6TDNJHHtWxnhjHnt9Gq8yCQkY4V4w-JCqf1chdoE=": "378551000000", - "fa06BBdEm2BlJNKnMFC4EGB1GbZOpcgtVa0gAhuwG5k=": "392336000000", - "faKAvQ4CCNHlypY-8zOQEbkKj91MXtD4BeQWMIiB5xs=": "383648000000", - "faQEvQjtcXPvjXy-Tmij5U1aOoHN3kHpSJILkNpB2AQ=": "1130445000000", - "faQfZLALkIziUIvplBDbG8lcozma5GA3KWtWUpBJBps=": "385510000000", - "faxfyGIFZpq1HeVIR-UHOZP7AqOhOjpvVnBLxa2jC34=": "359186000000", - "fbElgrhvH__eb7LNzUptuY752zAUnpOD1oZbWoxWJ-g=": "2556346000000", - "fba_HeBhaHR__qkLMVRVje5pbfA4kyvUPcxDVqZo_yQ=": "416923000000", - "fbbU8ed6ulHzBZvh1-VYYXsRMe6XSO0xFrxADs24fsU=": "384682000000", - "fc2VJj-WpMLbZKgidgUYkcHBa6OC3LYFKA_r4qqcc6k=": "2310726000000", - "fcGY8ZRZyp3jmVBH5wgOJ1q3wuw51SZxN35bqAuHV3o=": "460089000000", - "fcLMDiPQrmXU_pY8tLvFCUmj6kXIIIx8gEJudyOqee8=": "769230000000", - "fcYedxGDpD5NSKt1fZLVFd_EOxID2OGNGDS_-A1ILfk=": "563609000000", - "fcywjJNztWppcYrUQ2hqvkvfGvWkueu85G7rLdzhdYc=": "384615000000", - "fd9PnqQfck_7sIbhn_2DCqbL__IV5nqh1O6KRZs39xY=": "416666000000", - "fdHW3OggWlBTj5cvKurLwUr5-U_ksnK-xGbjENeAPq0=": "378341000000", - "fdPpQAvhDvRmNRAuhCV54ty9NQAKykOGckjmIFU_RtI=": "715542000000", - "fdwCs0oo79ET9-UVbiXEtzfyIFisL62FkMCGB-RFLWo=": "3684914000000", - "fe5jVYoXKKMPkqzOudiMU7mGKD3adQdIpnnSQ2CsnJs=": "385507000000", - "feSTr8xWansj-8y73qSV_R1oFOHvTinGzPZW9w_Fbpk=": "381632000000", - "ff-MuMRjD9B2wp6Qb080jG-wq_9WWuTCrFC9ksCnH9E=": "384615000000", - "ffPMLdJXks8Vsk7kxc93vZBiVTLfOa6BJ7Pr8kuixs0=": "826009000000", - "ffgB5p3mTbIQK_gUC-F7U49MyUSdY91FrNJaGY-UgHQ=": "395533000000", - "ffr48ATW6PTMNdbBx4m99-ey5KOXidHYb0WGfDumwzA=": "393828000000", - "fg-VkEhz1UEDjDRgwthkeLKrZF9HTGZ4J5mRx3XjS_g=": "552381000000", - "fg9MhDln_KNgowzFwT3iiN80NE0gAW3N2qcbqNC-9NM=": "384657000000", - "fgJdX6FnZviXCNKemwqOkgTV38OnMP2NmF4DLskeq2E=": "4994400000000", - "fh4ap9p4BOdvFeJAm9cHq2xW3ZysJaRQqgk5-9-hCTQ=": "499999000000", - "fh6Ge2yy5QEyArIOq2KKe6244LlTFKDK_yNsc1HnNcI=": "385858000000", - "fhO91i2w3n_abayyjLUakgG__C3GHH5JCdLqXDllAB8=": "635907000000", - "fiSSuxlHtx_1oUsUwttq2aR6PGazfJs9ksdMzM_Ldqs=": "409110000000", - "figTuH_rotXLph9QquOw_IqbYQEmZPhcJfT-ppvVduM=": "1248608000000", - "fioGipc1NYv9_TTAPlDEmcOlHFW5zsxL--VALDSSOEg=": "1681512000000", - "fjWNMSN0_OI1YCzBOKx1Xldc7kYUhPqqmDMqVbyqNnA=": "386081000000", - "fk8LZSQGOHkwWnE7oNQ9Lf1HbAQpK2CcWLsVwf1UPfE=": "2305724000000", - "fk9GVvdQSodskK4iWpDaqV6K1kincaLRIhvdiMQNb6I=": "938409000000", - "fl2dx3lEb5-5QehgjXmRNp3gVTqM3sIMoXhw9wx51Hs=": "390005000000", - "fl90zT5ZDF-AJZjqxuwHWmlOFwhHyhURI5iNEgrwvUU=": "384615000000", - "flV15y49bvO0bzzdOlL0l0bq86sP9OSfhF8Rwb58Stc=": "465485000000", - "flrcKp5mVN3d92cKwLQ6Ufxg3KUWnYsnnRuzJmZSKxw=": "385507000000", - "flyehCTVaOK36BqjLwIn1yXJNUfLvvQeku0TGS7d6cE=": "8230509000000", - "flzIDh3N-j4EOO_92ho0p7nmCF5HTgC3CyDR_LflpzY=": "454545000000", - "fm3TfR9cXP_YchK5FozzKytfcD356nOAfMmcxi7UzMs=": "961538000000", - "fnaosx4Qp-2GLz35hR7QhVpqNwpLUmF-k3MMXt189yI=": "4826419000000", - "foR6X0cZQdS7ghfPj88RnABK2VJ_6ZMpKDdIkQQhrRs=": "424269000000", - "foU8guNxaidZNdkybuvY28sVYthKEj5XSab4uuo9tME=": "773053000000", - "fojzDYbmTxiJM4h-M1xumeaYAi5rFltq4cBJbQWu_8g=": "2543962000000", - "fpPBrAwmaDU-7qmmku7yBW46KS1gDKuot3F-cXzxDNg=": "3750129000000", - "fpakXa3ca6F0lIOtpbUTC6gsz2q-BrOvZKw6E7jgeX4=": "450244000000", - "fppJIkOp7Fhde5AWuYTacFO49Z6cqlMK6eOAVdIJGQ4=": "451255000000", - "fpqzWyzwv6O1PVSicv-d6B4a4tiFKcETObCxS3x-Dmc=": "20833333000000", - "fptBWhCh4ddpQ7YHAK4soD5B9viWQw_2CTLL6882-Ss=": "1154247000000", - "fq9a6M0ki1jCxxgtwA4QHH-Qm985IGa24AyX70mstaw=": "909132000000", - "fqSi2YjIrW-vnRR7c1lNfiZOmKm1_lLoAvBkTM4Oglo=": "755466000000", - "fqiVtaNSn2J6But4m7zOdEOwL1YuNtBE2MgKaurHAYA=": "384734000000", - "fqmgWL7UeBFkGjRy6taf12xaA_lXP40Z44DMog9pVVg=": "388753000000", - "fqtZkf70f9bSTRvMBmK5df21g8d230V7gtAgqN-TRJI=": "425284000000", - "fr0K6LVx8901WWegtYf4Jlv4B3RTSdvcXgFsEzx14xM=": "384489000000", - "frOuBBQ-RhSwE-Vw7CuHldJHncR86yZUD5yxQXEqxLU=": "2471600000000", - "frUIXiHGMoZynK5pAw47ftyEGH2LkMlD0e_96UUr__s=": "1927533000000", - "frZbkFaA8AItHkPHqu7heAtQznfDojYN2k-MoCaNJhk=": "382394000000", - "frkd_7aOCG1-sLEacZDzx2AwyMrybyuh22FKkPe36Gs=": "769230000000", - "frmKEYeGW6nT9vA-gTwwjmaAmnhthb18lIqLjDrIrcU=": "1727686000000", - "frxxRvbILF8E4t74OSSSch8SqCNHoj1JoUSbNfkMDt0=": "384615000000", - "fsQxbOqOGufUsB-9rF_vBO95llFBBz_LVVlNkwG-UZ8=": "899480000000", - "ft7v1yQIvg3_1R3O4W85jmE4EveYdZkdQyROLJW--R8=": "499226000000", - "ftHjF0Mr5osEXspoAwJdPwzhYi07aG_YHGUqQzQI5ug=": "1940207000000", - "fu2S36x5yix-It92PBEiRzt6f9WvJf-kze-dMxKtzQE=": "456404000000", - "fuVfWkZbTAkhM3ZO0dgRzqZowVx3d-cGYyp5syD8gfA=": "1999999000000", - "fugmdzaqNCkKuPOrPV4cvpD265K8GMYjf2Uge79c3mI=": "425039000000", - "fuoTr4G_G9QThTwD-iWKn5nTvb3K68IaSpjxrqvpmD0=": "3108168000000", - "fuqOek4DD7-AaKVcA4NSRxCec9xtAQ78pCzbuQpLVjI=": "2083333000000", - "fvG_WIV8rdd0h96bH2LLil0G__p2VQl6qV7DfRqrVYY=": "358811000000", - "fvNF85HoWUY1OJeak9UpIQVXRBTJyJYW7gwyk697Meo=": "391257000000", - "fvtb1vTAW4hS4OOYRZAoNvvMVii0Ur-GARbzy0zhINg=": "453867000000", - "fw1aHDyXXHbdeeS9vgiGdvVoCIXGiiN-cn_ERjxFBFc=": "437499000000", - "fwGWiVIPgO5z2qyus7wyAc72qRiB-0gB6GzQ_2fQ6no=": "2310726000000", - "fwIVMZz04axGlQC7ecLhIhyVWzUmA44vmhQxx6MJk8A=": "422561000000", - "fx-MAtfSSQUAMK92nHXTZLx9kKQGcZMaTn-3O0Zk564=": "378319000000", - "fxEiLBrP3j3ytX4Y6DrydWQSvNxYDRNijajkJq6NWl0=": "1526806000000", - "fxHW4mF2JbR0tSU6qYJ6JxVu0LFNFt_GT0KgqLu9v-0=": "546103000000", - "fyD2RWDnIeZ2l6RZFqNsplf0_IeQBAWfFMIec1wQIeY=": "934718000000", - "fyHpaakteySn-9PMspHaVxmTpCHkC0AX2IL_STbKAMc=": "378090000000", - "fyPhtAB0mdxosGUF3v_RteD5J6vhVNlKNcopSSAPE_Y=": "454545000000", - "fyQxJtJo1NwrusnDIP-yTQBUSX350wPfrMJaK_tE-ok=": "417635000000", - "fzHN3ZQNOQ2EKnsHhabQIePu1a3qiiqe1mpombd9pSI=": "638477000000", - "g-IKojY8NVTbOvLdUgVlXOygQf8cay5rYs7WYowC7LU=": "377706000000", - "g-Mu4TU4r89mfAdWlVrLJgWnLPgSgTo6oLisnmxlMDA=": "1727932000000", - "g-jl9J-hprN_EUO6gW7BF4yBdkVT9ltXI7nDaezTAiY=": "492890000000", - "g-nMVOMafoDkgRmX11hzFuAbcxOBsnbGgvTR3eaksXY=": "452482000000", - "g0zRPrCtV0Fnk_z1HRz93aI-0ohgcYnqDYkOqhPkocI=": "465802000000", - "g0zl2az4docciIoiwzACu1V7gyL5CwzeksKngh5aLqk=": "1153846000000", - "g1EDybulTKJzNaJJD1Q-Kh6c4FCt3BC05ucEK_IbuXw=": "1843376000000", - "g1VxPqhibUd3ufaIDIKBwZqNGqBTdpZfeTWH252Xrqs=": "394336000000", - "g1q40yY_xRSaVB9TvKNCW04If45i9lZjHVK-xMSmhik=": "384615000000", - "g1rKHg6-6_ePe7qBn6KA5M2moLSXXeCYwhUKIYNSn5Y=": "3840937000000", - "g1rlgXHMRx2AsP9Ztnoza-PSx0CUPPjxd6BkisTePzk=": "396483000000", - "g227Ohgf2qjZBlU7-l1IpSRuAZ-jR-ArcQgIATy7h8I=": "1402573000000", - "g2akTiGxhhciyu9rQtefn5q9oElx7gzqwWlJCkTVbdU=": "3999999000000", - "g2eArKWYc5dsbTpXUMKc9TYJoxnldBZxP-UJc-tJP9E=": "1156527000000", - "g2sY9LaP_ciI1iY8NYblpSZJB5bOL2Yz5HUkZ1UsK7s=": "380301000000", - "g3DB6_pfCB-JhczslOMx2bWjZWRIhzNybUCQCRwGZgs=": "384615000000", - "g3L8SKW17wNbv6saTU22sgLqWeDITziFePl2H-Wn0ng=": "1408464000000", - "g3mbvEpgYBYMz4-62dKCtgkb6cGH65cFXCm6-cWB9RY=": "498450000000", - "g3txya2gja18XkUfWwPoJA2BS98j0yJYT7do78RT9-k=": "385506000000", - "g43qWBa7FlG83RUZ-Csd4ERArFw99RJDkjPMoyVhWb0=": "1982897000000", - "g4N3_9ERSmYSF8uE5r0SLrx5v3Pxh1WV9fDa_D_cmv4=": "385134000000", - "g4T11j0B5eRVljoSLitrngxT5xhunIK3sv6hEsJvpL4=": "2083333000000", - "g4i5i4cuMbm2JCaDf2h-txaOWBMKNi_pRgBFjDGGI20=": "3191136000000", - "g5HLmSTiiCkEz8tj-tqaiecrVZpfRlhzd5xIgO4moJY=": "763607000000", - "g5Hcm6BSTfRA87_6V7ehb1ne1n9qEyR_ssH74-5M8No=": "449697000000", - "g5LNofzi-6RTN_6rMBmX0MK9UmH4OD4CM3OXV7DcC_g=": "469739000000", - "g5UYweychQyI3b679JE1pcAEJBOP6r5wQ-zhxUelJGE=": "459695000000", - "g5_HTk39lsBQQvDuViXIT8NQHf1L7omS5mcaZzKzn7U=": "389258000000", - "g63YaMIkAuDmml0Mp8ooW-KvxwoRpUyzbBGnLU-ASbY=": "773477000000", - "g6HlF6kZSTTHZKf-E2YNO-oIFM1_6elkMrWCxxW1s2M=": "12035017000000", - "g6jvMprltF4W9BrLVMt94r_N05WtMF9wFajCPNtkSYI=": "404829000000", - "g8PuJptf6nKrix8KsUXdDeTjsaK7aGikxnV09yZWfQk=": "384615000000", - "g9NOsWB8PLgBjb7nBnLl9VKd4TWNOk3EvrC0bCiISNo=": "455600000000", - "g9w88U4YFh6vCUCyumSu5GofT6rHIZ567BD391GxvTY=": "7411094000000", - "gAMWxkaALEqMQw0SMcm13LXLdzsNf_UCK9XIBOejLq0=": "1946962000000", - "gB24yrfm_44O7nj2D0xiRsIgGglLPbStSnVEmwnOMEs=": "460976000000", - "gBOWz8K3W2P872HZzjD7HdWRocjbrzN0u3sLYmJuI_U=": "997197000000", - "gBPyrWTquOQJl3QIHq2WRVfL2ztLWIW5LK2XTVX1tpk=": "3962571000000", - "gBWAjnUc34rDQ_CdJaUvlmT2DPk3lqcnHV7fYwXx0HA=": "381802000000", - "gBmH4y-q3BYs8Sz0PWx4-XGNRB2xQlsS9yfxvbaLzZo=": "415384000000", - "gCcDLoKdpJHd78rOEuAmGVwIvY1ZTwgHxtw-GCU4lCw=": "994230000000", - "gCsfCKb3ddyW4lgQIUQaeUTKbuPtBDumWn42iIL3Zxk=": "1669362000000", - "gDdl8BwpAphMAb8YIpW-WPMjwOrXSwyTVP6k9rlqKZ8=": "2319943000000", - "gDjXue8vTKiNumUHqOrHttsS8oBarmUx8wA0-fZLUDU=": "384615000000", - "gDziMTJOmLMSLpS2ch4iUrZhb7-Fu59DWhEKae_Qt7s=": "4228231000000", - "gF06YmaHjoVHzdnttmiaANC_C4p25crDfuXE0TgApws=": "3084192000000", - "gF2OnQDFjd8JqiGMWwQDAFA1QW_IxnZsx-qiQgrWs7g=": "384717000000", - "gFUimjSlMV4fyeINgR5HQwHz3ts_QpiRDug3VSRLfQU=": "457943000000", - "gFbKPWrEgWsIP32G6qPli5H_nL47ydXEsco8eZ99l3M=": "396483000000", - "gFhqq8uA2UvaRaQrhvPX12UZidTlP6FYpFyIh29XfR8=": "1152811000000", - "gFkQZujbsTZRbQneCQ4JtB9Kml-zfeI-vvVT-s3bsXA=": "384625000000", - "gGQavdgK_0N4Wd2WY7HpQtpL3Wq087MnlQAiQikAzG0=": "4995144000000", - "gGhoIvJknlYTM3kkfePoIH3eiWwb1oufol4-PNJCJiU=": "1263920000000", - "gGlazXsCdub4o3DThSQXIVSuPsI5bAlB9Flt8JFMuME=": "1138584000000", - "gGuHEoaoCaA4JZgEDNUeVA8Nn1xWQbyvbTIGm371pA0=": "452112000000", - "gHE8GEIwoH4_dWqUfM6Ve6-DB9m1bvDteDXl1Tv-Bl8=": "384615000000", - "gI1Ui96vVBtAHmDhNh9z1rVKypYbphL2C_GwNkXfCjo=": "526112000000", - "gI5g6u1gn5H41-QkQh6dD1VYeGT0kBojEM5xk3mxQRE=": "384615000000", - "gI5yNwnF3NswexgffgYIfBY5iy7o55ngeesTGxBykBE=": "1156515000000", - "gIIXSgCPK_jfvwcAbH93XFI60p34ejRjes6_K5iAL2M=": "601290000000", - "gILJ3kDEbzzrHeXZQpnWFuEpmXVtwXC4Sb9l1VSBesg=": "1249999000000", - "gITqV7JV9jrBsrb_9cS3HSCPFgx5N8CXhcO9YXW4nzU=": "456351000000", - "gIZLWWC8kUbyZMdaW9MtCzp0AhJztS87suq27ixmdHc=": "985015000000", - "gIb6Fd_7qD8Wz_c7_znts30QsTlfBtok09xKXTtfOJM=": "383598000000", - "gIz5E99M31_PwaamdnzaLFYRn7C8PkKXsYpEHxSI0ho=": "1249999000000", - "gIz_Sma4MdcBzKLKb2NsmzqNMyYhyBZrejAut4TPn9Q=": "18995908000000", - "gJ-2W-uR5rZB8zcfb1HgFeSyOw9YR6yFrHXZOYyevxA=": "1235184000000", - "gJ1hgjwuVPAECjllPAptZHbKY86uRUnGhOLbDRCp_L4=": "384852000000", - "gJE8eN1xR1NTj_3-yVEnXmT14RYFi-LKKasTa4TQxTg=": "21140751000000", - "gJzmUXk6GfvsoMFpgScnhY4BauBE7Et5ps3P3xiqg8I=": "2774998000000", - "gK-g1Bt5Qp6TTndzKXYgdOpvFUVlUyVKgQy2VkPXYnY=": "457604000000", - "gK7w_QoUfCX4sgnT-YKppWxuR-DhPfGG2caccEjDcnc=": "388807000000", - "gKkTRyACiTj3_KWffAAbRqgr-qLBg_4h2rtBJNj820g=": "1887367000000", - "gKx6LMbOuQAkM_8wVxmx6uM0wZlNBt7q2BCGZfJzrWw=": "385209000000", - "gKxoSe-GyugRs6wU8UkBKd8ZOvKoyTTVzKCK4kkLJYc=": "385528000000", - "gL5MCNarlh2RszZu5yYz_5lHM0EAk03m5fxGDh5Dl4E=": "396485000000", - "gL8ADvdTbfk1l3nAUk6HhFWoN4X7PMqT7ZbqmIzU_Ns=": "384615000000", - "gLsVMIawmKKm2X5rsHBu2Je-iu59N0_rLmOXShCTEYo=": "2083333000000", - "gMQBuxjtF12HyphbRu4eb3gI5FhTtmFahy9HrbbZdzU=": "10416666000000", - "gMh17WO8FZ69h95Ex4A3w_SGHLS99MbKEN9HEs9w8pg=": "1923076000000", - "gN15EsuQFG4tf_9K-M_h93Q6Izfr2B8TY3udgtsS3io=": "769230000000", - "gN5536v95HG2YtKR54c86EtEZjER9W6O1gh4mQM8ZdY=": "515470000000", - "gN6oY_KUEiqibrsHzk7iCxOf4b-X9tJG1iaAma5GQI8=": "668861000000", - "gNNH7lsE4yHZptrmnMudCtQBdWvRutlwBodUH87JrLA=": "7685073000000", - "gN_yJ2eS6g7FogjbRYQiynb22tY_soXqhRfSzmsKuWM=": "392748000000", - "gNcYjNqq2GKJmCH9xXc96BIGwZoefQHINu_J3VtbrHc=": "413869000000", - "gO76rfNL48V3UEDzYt1-gFK3Gt8QDCJPPuSZIMK1JI8=": "512851000000", - "gOQscPdT4S3fHQV4animRUShT2X702MPZkWaekhHexQ=": "1937083000000", - "gO_n7no5JRVVQsAePeZGvXlEnLQEMCe2YYYxw9IOI8k=": "1681818000000", - "gPIql7yjAoy36JUDBFa6avUQWQZBl1K77jgwtR6QCDI=": "413274000000", - "gPJZ5jQ_7lzuJ3wiXvHFj909AGl1WjBY3lcqj-Dz-yM=": "753919000000", - "gPSiwaCc74YZWnpfAtL2MLlsC1bCjeEbhriW6NQ5UvQ=": "576907000000", - "gP_HpMEY8Vjh-xigJSYgeA9Rn2D-uLBnEW6HZeauxlg=": "523764000000", - "gPdIsZ0D8DxdS2qM7tCycF94uGYDaSFL5sKaSMGY9wY=": "1233257000000", - "gPqH7Urw0bktkzb8wYgMJo7NUXnPAGG9dy7NJB5YnFY=": "424045000000", - "gPu88Hd-XoP613X1At2wuX5iRDYtxTbByu-iyEYP6R4=": "1252898000000", - "gPwsA2ZFT3nzCG3rQK4mKBw0FDG_Fq2DztRU_yrQRPA=": "1921073000000", - "gQ0mdOVvTme2dfQCzzUeFhbkmb5Pl0ysLGxryZz6wFo=": "469310000000", - "gQ2ujfWcXrJOWJ5Rh5cr6dBBZP2WhojA8ISN1tbX9YI=": "793877000000", - "gQ8IGO1iqmjNiLioz7lGRyu5orhgv6A_7rZS23UoV0w=": "452120000000", - "gQ_NlxYSJKSR-4F7VfepfeMs4ZMJiN1oMCQBEK4l7Gk=": "2088163000000", - "gQcuFr2YgPr50xe76DWRBOqI_mJcBFSogBhzo1siL60=": "499999000000", - "gRuej4RbZJ1MJl3UUAUGjbgcAnNxV1VbuPah8RDHUzw=": "417280000000", - "gRv78joiOEvc6uFubsL_eDTda-zwsnbAPPDjYxEwthc=": "2499999000000", - "gS9X1GtszSWLawioeT1sCfTTRxosulvWnEXFO401l-E=": "1154052000000", - "gSAE6JV0muifNptQ-eBLV8QzY4dA-wLNHKpV6RZf8xg=": "1385142000000", - "gSGxlZxKlKsJEFu1zuxYZoIvUbgJhamNf5gE8UvsTjc=": "355133000000", - "gSYf2V8ZoBWz3INB86u6LYXNR2X78P-yfvMgQGEWnzM=": "1888241000000", - "gSqVlJSfvp7Kptds_OJigqWTPVsGIV7sp86cHGb-92w=": "2278000000000", - "gSzJ9fpgHStsMsGH4MH1JyIvVFiqJPbCWkk2YmKPMy8=": "390880000000", - "gTqcBEyX7wNzYTsLGT3eNnYlLvKQajvJZ9E9JXA-qQ4=": "753674000000", - "gUK7NVUvZvoCMqq2dXHGtE-nBmyiaskTty52wCY0A-U=": "448728000000", - "gUU_K1g6yyxbb7ipSAJ4Ep6pxpQnZuxwV9583Bc9qOM=": "384615000000", - "gUgpYcvx6VWuxGAP4U0bbg_lPPwQnBBu0-hTsVSNBAw=": "385155000000", - "gUhf4iRvLpD3oPovQXBuVJ0OGbFAa9BVx3vm2DHsCtU=": "391797000000", - "gUj2A6LcosDiYoPbnd8k7f1LapRBgdCwoU36W9ZatKQ=": "1514898000000", - "gVd_GLIc3zn52QLEIijZGjyUC6RbggdX40Jl9FriBCw=": "468609000000", - "gWmVLRwRmEkTX8I6rTk3qMO_FXfOwJVxxw3vkZfqWs4=": "1128745000000", - "gXpFm-ijnkEfE3e4r72vQcpfJ9fPx5pXo6NI6mFwnLs=": "55777482000000", - "gXyA5Y4e3WAYh1E4Bmct_CCILAoYioE7g2swizCfWnk=": "462146000000", - "gZIfcRECJk0dPuypUA_Fnez_A4ju1fn5rFIdxFpxk8g=": "405357000000", - "gZrMOo5LP8d5ID-oYKhUHUqL3dvHzQzphxEydIsURUc=": "385506000000", - "gZtvgi2DPDz_ygujYFJIxM11ORFwrBJ6-AEU3AJmJ60=": "4507424000000", - "g_KvJR3n3kgXjVnJGr-_tRf13kFISa_w8es0U_MZ4UQ=": "385506000000", - "g_arpp3mp-vQ5zx1itJRzRiWlQubTJv_xtnpfcHCclc=": "384615000000", - "g_bjfAZABWIKnDEkfK64bQ6OfpexJpzNSHZTLui9-3U=": "488247000000", - "g_cNTZRRWQBcR6wsamMgtBK9iTz_6pzGlT9hx_oHcWM=": "385507000000", - "g_kBP_FHAzZdluWYuPDOKW1ZMHh-YenULNuT7--nyxc=": "1666666000000", - "g_uZbAziLPmo2MnacpW0mSo2_-bpuiAJDPz6Ji-6eyw=": "453695000000", - "gaJGJDXurPKxzkKXFZmDWoA2uxza4kssFRO0B5tJZdM=": "384615000000", - "gai-Q5LLl7LXjDrQJ12QQcaa3O7jMqdMdPeIn_TdP-4=": "448891000000", - "gb1mBVOgA4gfnNPr6BrC3eCrwrNoCCYulU9Pqx6aH-I=": "845123000000", - "gb9gBWw4C3LVo3KkyXSbaQ3wp_u9ZMXWI9La3peq6h8=": "5097317000000", - "gbDE_qQNkfaDKIw1pcFBF0omCAOc3NxxRqrAL2VBUj8=": "3855061000000", - "gbcAQNptoRPE8afiA5B4R1-H8PEa_hk58ZMFd-IiA_k=": "452098000000", - "gbdRNpoqGfL1R093P42PSxfC3sGwpPIS2vMirggTV0Y=": "384615000000", - "gcL2zzwpKg9tpBDHO3V2QgdkhjD40igJEbirK34SG9M=": "767243000000", - "gcgOw1tgxpRuUS_vVifhOPb-D4utqe-j3b_GajpGfIs=": "18676081000000", - "gd9lpt86Y_oCdaLOD162TcGAfzr6qEqPzLn66qMSisI=": "411085000000", - "gdKH8xKxZ9QsTgzi0BNznHC7N6pNIXPvKoZ2utxWqBM=": "1923723000000", - "gdL4khbRV2za12DIGIru9tINoc26qey0njZP_0A2vl8=": "385510000000", - "gdtvxxFZts-sh3MJXGWICsrUxttwiSxTA0LmDZgRAO4=": "390975000000", - "geF_C7UPYy4wSgpR5uh3lcSJhEh2fL-vZXi4g8Z8sTY=": "636308000000", - "gegr_fa5V_TYHc0LlSWcTG-OFht9kbYfd1eYgyHIa4I=": "391618000000", - "gf06RD7V3nAQZoHaYQoit9euzaPCzYunk-Ec9x2YqcI=": "11445415000000", - "gfTfrDD4m5obXFoEV0CxmtF_Z1Bj1JkALw_BKhJPavU=": "1625454000000", - "gfbHYo8H38EzB8_IFyQ36tQXz5FR5vo3FJY8v3puWJY=": "458299000000", - "gfjnoBGodymFRO3vqWV_T0T-XplABOUkYwdqSaaKKfE=": "413869000000", - "gg7klEytq3cD3fZLcQSm_kfBqkJmD05wAfB-jgJfhDs=": "3900434000000", - "gg8nDoCToNr80cT9bWo94oltJs-l7_G0GEQo8NSLqac=": "3846153000000", - "ggBJIiJ-kHQS_iqhqdB0nKNoSa2oC-MNB-RvbB0bqaw=": "1248895000000", - "ggezZiG9NXEkrm09Qgum7TwCmwURQSgZ-YngZH6cfgE=": "781361000000", - "ghqcQJD7MhCy04wQrzKG3fQW0wUr8LfT2fSMaS92k3E=": "3275559000000", - "giN1TRfWPrndDgn6P62F1XlKeJK9GyqkMFLF5veS2PI=": "452324000000", - "giVzUqqsh8xogJNG266T83BA9IqGUkjVTE3TaTCY9cU=": "459906000000", - "giYc14yzEFDIywVBlHWM_3qH0adchyVrAMbr3SPGv9U=": "909665000000", - "gj2IO9UwZEtNIl4EEjErov5rB5f9GLg0usihanYOeao=": "380858000000", - "gjQBStOUc4KAgC3vNuBuTkPNyyKJNIcfrlxHxD92SY0=": "1398457000000", - "gjeHGpJ8skduupXdpSfzqZr3icDRb29of7s11QNfn9Y=": "1156527000000", - "gjrfuT_qcCWSuhrZ35nLrRt_p6mQiebfi12t9_Y70E4=": "876495000000", - "gkAFkuhtGnkd-sV-Li6ti1FthAWYmpwcfk03e9fbihE=": "1536823000000", - "gkCKQGj0bfDzVGz6z4YRRkrzbuf2ktbycBzeIoGInvU=": "455600000000", - "gkFYZlQKrcggyt7ENmUQVZGCTluvx-JoB-LZvDOdvFM=": "394530000000", - "gkNcIdNUzcZ_2EpzvVNT7hm6ZVMRc-I6rJvqRZTzpGs=": "455209000000", - "gkP7s-l9_jl1Sz6Ozb-075JvEYK0lGuFMb7LFTV483s=": "411085000000", - "gkh7wnB1PS-CVxIKDQqWWCceDbp_k5khDHL8h70xdmA=": "420448000000", - "gl23JN9wIwQnVRhJ8q8taztCYO2hZQhReA8EjzFViHE=": "386791000000", - "glInNff1qUQnR1C-mCdpddbQvzzPSZf1kNO41r4yQ7s=": "2311393000000", - "glT7snSYHd144bqC4TZNX98ZqrGqpeQveKrFo0ewAtk=": "7677019000000", - "glV2oQzyixqAixHSr29-KCd6f9FOAPhDDYBlRBqOW1U=": "4001626000000", - "glX27zSLkKgGMp0au7rfZKkozxxfov-0XuYFWcy9a6I=": "1156518000000", - "gli4D7OgHyF_i6rkcbXXm50541tj4LAkUmuQ1Ik9rdA=": "390005000000", - "gljY9ZKIaI130-tylD3hOP_DddO4mXd3iMFEv0ou_uI=": "1666666000000", - "gm2xBkipPkm1ZLi9DaceeBjHzPLRUKNRlMymesyouAo=": "771796000000", - "gmBjlQy8L_oUyc8G5IP7R_vhyRCqYQdroTopR99U3YA=": "3846153000000", - "gmQYP4h2ZeUJRb-b4Hu4omTjlRo-Jey-MJye3ISDRXU=": "655115000000", - "gmzxV4O9gW07Kf8QNE1ba-yALfuhlxcDERXR-TuUdfQ=": "405357000000", - "gn85IYIManIBFh4B3evTEuwnt1seu6jQ95xsz6tcGDM=": "421689000000", - "gn8kk5igGSHHjGNp36UUpBnafK6010ridZ_JRfG1M8E=": "4092499000000", - "gnGvxAA5jjoFv0xSBFIwifJym5reGHlKYKMMfboFaMo=": "457429000000", - "gnT9rSEr1B6AyUrR71YpbKgDK2k9gezU_KQX9qfSBPE=": "378257000000", - "gnVMhBsK9fBqhGsEvnyxFAHhxh3pE8ddw1FebLZuuCM=": "379344000000", - "gnoZk2b0XtwfByLfysEhwvt_N80LmWAikiGHw_wVS8Y=": "385506000000", - "gns3g57CI__9QVR0YSZ9aJ9MTq1pA1Y0B86qQzkfIe4=": "1166169000000", - "gny0geF8DvaF59sSEALWmHn5dHpjuGyMuqDbMYTCd7Q=": "768353000000", - "go1B32DkYUSB4DGQRhjHJOz7zJSUByhxjY4P74WJZvo=": "382394000000", - "go3fo8AzZWGZrtOm616XSJ_uzVcQTpxj02L3U69YC8Y=": "2291892000000", - "go4pVdfETpIxS3WNdmN8ZURUY2F-aagKl4oiHJR6aK0=": "2902912000000", - "goR2iDwQ_Rq19zA4zLGjQKqbDb4Vne6i8dc7WCYZXQ4=": "462146000000", - "gowx21WBrjwq6JRVjvbQBhuOk3sk8C6LrvAf86zTGmE=": "652140000000", - "gpAaXaXzvrQs_FlXqH6Xh9EcSocPzQNpQfv6HvUl_RU=": "2500079000000", - "gpcDU2lT0x8kaVlX4XHekUCppaXhCL6RNDfJj7iyPfg=": "4649536000000", - "gpeP40Yk7tO1gZVPMoo7CJ3lQsG6fujxLG5BkON3eu4=": "2662571000000", - "gpnohvdTl8PS344Z3SKuPI02oAWdEEZEX0Ehu3JU_pc=": "501273000000", - "gptm8I2xL2V15E4UAeZmq_eivjQIHwz32Hw0oSU2bDU=": "401949000000", - "gqI6SzPJZWN9oEwtnQ5LjAYvJqG6YAde34_GfSehg8Y=": "459858000000", - "gqaga9JB4Xdfxoc0h3vyyl1Yg_n_FB9q6pznDbgT7Ww=": "1249999000000", - "grYV7v2HDP_wxYpEf3r6_8IFCA_7AULet5TpLefM60M=": "1388590000000", - "gsE4lOyuGmR62n_4MWxaFRryuyqVcBYpF13uzp42w7Q=": "384615000000", - "gsuBzRj8JVjeDBsLYGP8agp8j-g2JKiN4s_JwRGqVxI=": "899364000000", - "gszZ6Tg5E1QRucuXkBKYkTTuGLlmPAG1RDFNZFGiUZI=": "385103000000", - "gszvjfboSBy0cBtuyrjIivWeLW0Y-ftT64l80fl1eLc=": "763848000000", - "guLCHQu0ztH2djeG2XIJp0MpQjYoZMa5X-45aYBncfM=": "385510000000", - "gul73ECrPneqJLbRBnaU6I8rsgxCFEjpSzppAk3B-WM=": "379260000000", - "guqVGyJ1paOl_JHtt82WR8WLJjfbl692vJGoCWOMfgA=": "455695000000", - "gv-mtRQQuFl5NsxFlNbGmNJvrr3oad-xksH3KwRKjNs=": "384615000000", - "gv2meQM_VESeNtR3Hm7UCU8P8GuoAFT0LFKO1TXWdxg=": "1928235000000", - "gv4BFVrHXUxR2z9wlodWOj-Q753ZJ5L5XxhQAH5P4ik=": "898058000000", - "gv5BSnBTLJkWgmggiKIIrk6Z5BcHp4hjX6kYMaWN0Dc=": "1927530000000", - "gv6iCJ0MqjKOgYej3dpSJGK7Q12HneGqNkkZutbj4yg=": "497477000000", - "gvCwyQAQyWzmzLMxoLH9ESPuZfPxrKLk5o_Oc65Z2Zc=": "10353080000000", - "gvEaRqioR7l6ZibmetII3VBRmiLMYDBe0mi4awgbctc=": "1153813000000", - "gvrtDcRU-kdJ4H1BdrnZ2okgoT3EOw7Hxnh0BL4oeHw=": "4327157000000", - "gxLYYI0llgAgZxdGZcn9WlW5bT5aIf-GJ2n0gnTBGkU=": "4176337000000", - "gxLzvmydBhsqLwKOAI51TAZoenv3DdEDDnj9a3b_19k=": "447495000000", - "gxWBNO2qcFazNQsUtPL-iWFVvZtPj8S3OBbUmaNyi0M=": "449326000000", - "gxghDTwomyKY6MXQuXG9_ztnB8eI3pnEeo6SOyPWg8M=": "382394000000", - "gy4B4qZavN01qruqElckg99qq2YP2F_O1Ayos5Z9gkg=": "1874999000000", - "gyJEjoyqOBkuMbtQGo69Rx0FTUC2fsnT-S2o5r94TU8=": "3090467000000", - "gyuwvw5IfU9EBbxb0szf7H3L1ryI5HmNVS-0Hs7TzGU=": "385507000000", - "gzITQqfeyyX7f0BvwtKH5GJRDYyacU585tO9YpL0twU=": "961443000000", - "gzdEMz1HhgcxK2j1tSo-XI1k8WOuPu17GlFK29eLCDU=": "450416000000", - "gzrrssrUMJvsfFwtTBKH_FmKKmWpk_OkaFu1vyOznpo=": "1823621000000", - "gzu5tB4rvG-FuxRmefz_JULzhiFNjHzoNbQT2pNv9G0=": "387829000000", - "h-7--ZnQhnGP4h_Hdzrt25xGtn6Ye-0K61pocbONRkM=": "783595000000", - "h-AhXX_HtngnVckr1nwXpV-zB3J1rdMUfz8j24oW_Fs=": "381802000000", - "h-buGcUoZwg4g8D-1SfEqd82O3IS_x2tlTXono-D6Vs=": "455337000000", - "h-xwl0yg4Aq8zrSumKi_sZ4JhXlpW8gKTwtj-h7vgq4=": "1233257000000", - "h0-pXxaKNCbq0tjiri7bFJ1nR9DCVuYD49Bj_rpo5Z8=": "4285609000000", - "h04KcVJLvLkkD6axU3Ym265eWtrM_1Om0be9wfny5Ow=": "384615000000", - "h0NMLKH3vq8VPuRX1QIwe4eah__X8nAZH8xPjy8HZOg=": "411085000000", - "h0sCkj7iptAgm3BE-F3APB1nYaaRe9L5WTJh0q6VMuo=": "2692307000000", - "h1LB-HSvXnXT067nvno9PH6QPn3Hd8qSEr9xhw9h6G8=": "406450000000", - "h1f6Xt0iha7zsigHpPPqC2czOiqSx00TspqRVSussQ8=": "684819000000", - "h1w2ESaVVEHmaVgCatlNtDrtt0vPIHIZMy1L7Kd4YQ4=": "848090000000", - "h2MVm4YAyqqFskfawflcrKlR7eeUodJ27TL1shuidPk=": "416666000000", - "h2cw3PYlNCsDlkbrfSmJyERQQ74OTahg3F-ZhxON_mc=": "446543000000", - "h2mtd6Yuaq3uzvc5sFvZ2LCNB8m6Vvhr7Ek_3HKDdHo=": "4782670000000", - "h3Iakb-JDSHU2khGP1ntYtAoa3NeE5BCp7nuaxts7us=": "1215684000000", - "h4JJUm299De0esMwDVZjg-7VVpKU9dJgM2YEmmn9CJE=": "909090000000", - "h4btlBuxFMj1XOF3YsI_CPSE8sX_stunGd7yBPORikA=": "2134438000000", - "h4iLxkaPnb7qhAQMZikgjAqj4oOMfxR5Imi7NHJgLoQ=": "460037000000", - "h4vM8q-pN_cTarkGOP8QLXXOf8oGI4KcA6hPIdK0Nio=": "416741000000", - "h5XTnID5k6z8NaKi9yifHKdaOCo5MOUJPxD1qG75oo4=": "453986000000", - "h5dNDuoSlIJBEwVSEPEa_ZY7A-rCA5HQszro_T1w_sU=": "384615000000", - "h5pLm9Bg10f0bNSCTbkNjoFFKi0Ytc7oEdbtQu7QxFs=": "451219000000", - "h5xOAzKqNEBqIO0o4XrlSkplP33bcij6w4P0Q2h1YgI=": "1411928000000", - "h62tGWh0YWwR-uAMCQdfGtt0JIrx6rwYUIc--oiXrq8=": "385507000000", - "h66EDP5pX0O4KKrqggjaeiS_2WrKRisDQADS_qMVt0w=": "416666000000", - "h6gF4lWCqnZzbLHuU0oI3CuD33wAlgChTz0ZvFzbwaM=": "431068000000", - "h6nu8cLVvNvPrENI19HYKMoNiRSMW6yezMBc9pUO5xQ=": "1153846000000", - "h75qhUaDN7-DJGa6xJBiv3PjMphyfFrUUvZrd7WqvJk=": "3226008000000", - "h7Xou4oWLQcNSWnohFE8ASXBOLTCYn6HxqcD9Tt4Qic=": "382251000000", - "h7XvlEE-fB67JMXVoCxeiynmtE8szol0hBN2d9WeNns=": "4933599000000", - "h7Ys1csTYuPSQuuYj-meWmq1oi1ZOnOobHpRor8wj2U=": "500674000000", - "h7eIp5pXszqSoRu6mEV4UJ22irHrtRRA-nXKg_bTcD8=": "408223000000", - "h7eVr8jcg-QmV7KHNxo46vSEQQ2ckfDsDlTRhuBtjho=": "384615000000", - "h7offVpF9lS_f3B8A3mUEc2VDH4r5aEgmKcuo6dobOQ=": "1926725000000", - "h8PzZ22-HcT0PlWV__LGydAqJUE9QSMz6vEUzLG8LxQ=": "384006000000", - "h8Sffwm1gpSuxfBTU4ZN2Lyw48dIzRFu8f3ZB5hheOI=": "1388517000000", - "h8di47ZzTuZpAnZ5jSncsU6x5jkH9eB7_UFNWE8gyAM=": "456716000000", - "h8fq99yVgYMge0t74btIGcykekNYnpmnA2J413BNjeI=": "833333000000", - "h8m5uJ4bAONqTmYYIKFjDJvSdiY5pzy2BqvJjRDa94M=": "379736000000", - "h8mlNPGtQOA0Gx2lQaiBEUkmh9k9tDXVX6dpJr2m4Xg=": "4711993000000", - "h8vQUtOrOfUqsCmzy6XLB0BOfzkXv8vVcoYRWpFL1Lw=": "1649378000000", - "h9b-JAIlMojMJ_zj42EPijAQ7dqjtX2zXPO7GbzWnrc=": "377006000000", - "h9cLcuJR9Zdfkm42IEqZtTsW1OPmtwbEpLXRpCGHhO4=": "4017553000000", - "h9sNmVI0hc6mE8ipf9P7roCv9Q_h_XYTIU3XQTyG4uw=": "384749000000", - "hA0Cq2HPKsU_n7ILkuEudIxbukNCuln8lMQKyy1mR6Y=": "946530000000", - "hA5XQpR5WMVsqjpH4RbxbdJ_BA1FfEKIp5FflGp46eY=": "386998000000", - "hAOTUqL52TwgI6J0q5u53P_TJZB7ya5K5-P6VILhhRw=": "549999000000", - "hAed0ZfVa6LklQhqQT5FC2uTC3Rc41taTIORDz7s-y0=": "941460000000", - "hAofcwDb-0M1N0bM0TW3A1C4S1QaRj0rz5GmxCrvRXQ=": "8231377000000", - "hBc89IiHue-loO1-h-8GuOQUmC3ubVkDVh-3Z2z9NeI=": "2065661000000", - "hBg4H8DwGC5m79BspudCiuxzlvBowfpjI_4Vdo9V0Qo=": "451989000000", - "hC-5MRaeCvHVLE3WAp0SRKc3RrlhGj64ZHIqOVVV1X4=": "769230000000", - "hC0vlhmDzr3pSCgvhvH9lFpt-4byVHZ_IiHejfWYw18=": "2058033000000", - "hCXQUZZ6LG20OiKJ2W2Aui4MDq1J1h5mS-684uvFA-4=": "501500000000", - "hD5rh6XrJv4RgG3ZspHuahMa7Ub_oA0leFubh1ShKkE=": "453420000000", - "hE1DdVrfOIzRp8Ofpi1LQyevzN7jNoMKW0kpe3jr4aI=": "1340993000000", - "hE1m3Iayyiodl_Lgk1hUfmbx_HomWajU9lvi8n0aMsU=": "417352000000", - "hE3-4udlPK1r4Rw4P6CrZqk0_cK5jFSrHSW93sFeLmg=": "384615000000", - "hERhSWEWOZdBOjaWrkaRFaiWGpgvpnyPlEMiWKBhRyc=": "488247000000", - "hEqC7e6ExFmjROqrx8srHulcMRECJ6Ha9qAnFPwIojA=": "382412000000", - "hEtD5Ln4fDOI3bActI_SC3EhAQzTF8l85GMi3tBu6bI=": "1156518000000", - "hExzT6w2QmVrO4_xOGYYP-FT3s198pFneHUgRzayJ70=": "817479000000", - "hG1eXYX68zC6wKRNq5--S65TCc0UR1Xi9r3_ay4ntgk=": "5792272000000", - "hGFQl5NapkpyxnjV0YxR752EJFdRfQ3tChtG1yuZ0Bo=": "454586000000", - "hGP9z8yCvk_ukyuZGY-A1wS0hImaqFzs44xg5imUsQ0=": "385507000000", - "hGkdIGFKiCLDUxD5BJ1v0jaSAQTuCH2mjPvsXqPU-uM=": "737739000000", - "hGmggVZ9CA39kOK_z5lHjYOy5RaE-K-G2MpXczPsFVw=": "384615000000", - "hGndAM8NNlieWEIYs44PPWNf61zNnjGHndFFz9aAhaI=": "1053227000000", - "hGpeCYEMlQF2JQcqMsVxrdilD-Kg7jQ77ZTfYn4dj8k=": "384857000000", - "hHdJG0mRnTlCrf6VAo568gbJAbD1KuN-p9N5LC36_I8=": "461858000000", - "hHdOiQmOqGM59Pgp6UWramejni0JgobkU96aT9riRyk=": "384615000000", - "hHz3d6AEmPD9m9d1uSNRtzcgFzApI_iMHPYh7j1mq5k=": "385528000000", - "hIbLokrZk0US53k_-pXdgt4Tuj684I1veY5gGQlQc2I=": "384615000000", - "hJ-oVNj0KQgf7vVDnM08dDqQ6s8Ukd0D-CVbV0qqQpM=": "623076000000", - "hJ0N3_MQBZp4XfUf3OwFO1Bd8LFRdw4FUP2VQDLpCBA=": "381802000000", - "hJWaKduIErDBBc_H1RG6_HUW2cAzGTDnE4kYBEapq_c=": "1558011000000", - "hJrsuyhT-Kly6qyyInhmC7Jj-3OcYG42_fWujDiGqsc=": "826222000000", - "hK15JntOlByT7xGgcWrfiOIJoUpbz8yvrld0p5tePPM=": "1386434000000", - "hKFrT4Uu4AwWfVGPFxOFjnfK0UD6xPBJuWkkecUXS2Y=": "766914000000", - "hKJr8A9VJhdGEriV3B52a-sSp-awZ1JB5vVLp5MDDYU=": "385473000000", - "hKUXkoxIQC1nnwhfwu5ZZXbAZFh4EIwKEvppISPMbao=": "460374000000", - "hKhwKdUXbq_LRl1tXmWzoepOyRS8G3rEoOBbFaZHsLY=": "1364611000000", - "hL1nG-FOgb1-QatUQ4QATaEJDY5iTAVDfg38Q4D01Bg=": "1627705000000", - "hLPwfRMtyO_u_vgnk4iVthxOTQRwE2kvCgULifPIvLE=": "10552980000000", - "hLS9SK7-rZwvRIvc3HcoGA-xOVxfcEkZDkiHVwX6Fd4=": "1940588000000", - "hLdwn1pHGgkjyEorTC9XwVpzf1ai7dBbneGGPCE8D_o=": "4167939000000", - "hLnO8YyDgLkyzeR35o20FJ2RGEmixutS6ms4RjUODNY=": "1377392000000", - "hM-IQRufQNaoMublQR3CkHkLDRX6IivYNxR_BONmZy4=": "41666666000000", - "hMGV13NU93LwWGUQ8kVuTTaF5HKhv64kEmShqAQBUpk=": "407808000000", - "hMQZzBMXAoBmkzv0PeWRpJLK_Q83-hwBaU2DEUm5FuU=": "4221020000000", - "hN3Uh7AAlw4wbXxpDS95ybJpJss-Z5k_4g9tXPfA2nk=": "381767000000", - "hN85Qi1_KRZFB2Q3Fm4451-6_fQvN5F9o6VjjK8rd-I=": "1901426000000", - "hNo3T-3f6uTYob9y_nbqOB97fqc0jM4L1t-wpux8Wg8=": "719127000000", - "hO8jvsP6Q7iKq_SGthmUOtsq4J3P_CtVLXXdXlvINSs=": "408021000000", - "hOatb6zrdNFyKNQ4rjlGAs9c_iWit_IZIrthRQVX9s4=": "578358000000", - "hOszjXwHJnnqry7tdmBInMqPNq-sHTAsiaSI7dtZ7ls=": "390141000000", - "hOtCUT0Fsk5CTyQpz1gR0QnfTnapjwHVfv8m1Dso1sA=": "455879000000", - "hP-iiUTph2KcsLYPqTCMN_cjfSaN1Hdyce0skZsg4hU=": "385155000000", - "hP6nYgOFoR9vnvFFIrH5GYN3RE5M-Av_fbOf53abUD4=": "501234000000", - "hPPmGxzxUb8kJYAUSptbLysvlQYyYa1gT9dwEA240X0=": "385606000000", - "hQChtd6-LzRDJnMVyuD7VsQjEv3e_1H-cz1EIPKOG14=": "2068256000000", - "hQVAXb-HvwtNeMun-ckWTp2cMfQw08I40uppix2IKJI=": "453003000000", - "hR13wXw0f22oullU3ecrgEsgmApqITBFsywlcQAtmwU=": "404011000000", - "hR7BYkSVxHTzsa4ctwJDmS4DXKfTPoYml-NxrVd21H8=": "416666000000", - "hRB0uJYExfs2pIResLCqcrANwWk5SUam2-XRbWoaS2s=": "389411000000", - "hRj1GDnehqB0iOZdchIH3Nf-Ce6rgLmqsBW4HjG4FBM=": "384615000000", - "hRshxhuc_cwFPgLjZ-tgIB4feqO0e2HBkUfbLzhug88=": "384615000000", - "hRya-7p7rh4UUtc0HiG2PWx9iEiJ87SR5UDXMw3hSlw=": "385146000000", - "hSAmjKuHAqBLrrpNveNqiRFXE7K2TiaGxu7MYEhOmT4=": "384808000000", - "hSGP2c-SAIAOdm3Puvp0tVFU8A2SRhoj6MGcov6esig=": "1543356000000", - "hSIPg1_QPU7Tv_cz8yLCOpRj0nWkxw3j1AIOBhD7lJs=": "428023000000", - "hT9lvUCABzhLFqEH1wtR5duA5WDy3xCgzE2NGNnWhnk=": "446658000000", - "hTLeuJLk0ZwF0L5ruz88WVe-tRMVBe3ueHMRAR7WCew=": "454545000000", - "hTapbSm3q6DfGpPC22Lg3n9myVeEMiUVahTi7ToNBxA=": "1363636000000", - "hU1B28IpPae8kLsHc8VJV9LZWTGbkvi5SOo3AQqyzxw=": "1365374000000", - "hU82Ho8uOCiu7XtgG3qKJucogei90Bri4DJviR4yZuA=": "383422000000", - "hVJSFW1mfQMcntsHsWHjvM1ANn2AKO-MNLTROpfxqLw=": "384615000000", - "hVkw0820tv50-OzLccFN06hHORh9BY_2NwfJzLr8UaM=": "1269294000000", - "hW9V7gb5F6r0aVnKBjiAvDaEwdKbBJsElm2fG4koI1s=": "384563000000", - "hX9la72rkuZdXrGmQKBpZTetmg5KNnmz8EwjE4j7hIo=": "1339521000000", - "hXQiZJ6YM_v-ArXPaJMzNZTPtqtNMHVYqBlxgvN9n-k=": "384284000000", - "hY4LwS-JFcyc0wI8nI0Icv2YFpfl8nZik1AEhsYrK58=": "384489000000", - "hYBD8rySHA8sybkPQhSp3brs_saQHpfg9SFmjDJjU1g=": "397332000000", - "hZLwSO5ymIn1Tuym5gsu4mCLZjOSd-SjCUs-uK48JzM=": "2884615000000", - "h_J8Ca0xBUQy5Nzvho1g9ydCGPnklPhDENitqwGRz1A=": "417744000000", - "ha0Wt3rzoGIh1gZ4_vAyHVIPii7HGY3VCA4X8KNR8Mw=": "550159000000", - "haRzE6-UdLuxjm3ABdmQgCvNOQZG8pddcG6v2e0pUL0=": "836365000000", - "hadwCiPF7BFz7Je4Po-ItAsySICOv48TtJXdYslXCzU=": "376159000000", - "haooU8er3NCmHmo34cdM_v2f2GLHpMu_RWmdujI44CI=": "450042000000", - "haotuIA0GT-ILm6SzBi0sILV4wNWK8UzICtso3cwVY8=": "1075671000000", - "hapORzs29FyfzeTvt0wHSFYvRxlS3Hz16M8DEfraRgo=": "2088229000000", - "hbNwM2KHnjiv1z1sme7oGSM--WafRcOSi7pTkmqr1FA=": "18470349000000", - "hbkec9eKy_2vbBsN-16R5feNhlpEB7ROupEeDkzWEL0=": "499999000000", - "hcFJwG7IRyX75FzEfiALP2AR4RN2hsGPrwLqNAfGjKg=": "758333000000", - "hcTe93PRx9dKhsRlboVyFanfU345gadWPj-mNWWWD5g=": "458901000000", - "hdY0Vjm_Ehfp-EfBAazwPpP1E4c1YiBf6nRZWtcrkTg=": "500702000000", - "hd_rTChq167jdlShjpQ601PoRTfR5-sbcEgM707sXvo=": "625195000000", - "hdtlmJ0qkGi177aKDJcfUbZcJFuGZoL8tMPD6hf6BG4=": "769323000000", - "he0GWGTsHyXCvRTCA2w2l0FRPsEEhp835GKkinW_a88=": "454334000000", - "hePJvtCKSBju4vwJfWa9HYkc2OEKkq4y2SlxywWNM9E=": "3844080000000", - "heugvmUUPTpXhpMYMxCMljtr8LHzuxFR-p_TzP6vRZ4=": "6621492000000", - "hf0a7RrHnlcCaez4l4uAYLMfoUyQYun2jo1dR1jJLUE=": "939847000000", - "hf7gELbJ64GfVKXxSc5lDhWek5aVK_Vz33TduSb9Ntg=": "502779000000", - "hfLgv5SxbceVQhwqVx6UKav9Qz5tGKQZtR195bFQiPY=": "3855074000000", - "hfMbPyoXFxy1vmiJP9XBjLEIHfa_fLlMLidad09u4Ko=": "433628000000", - "hfNWx-IMTgeJRR43c4VAk3EwHP_k5utlv4geZmSejk8=": "423470000000", - "hfXqzp4dgq7ZExnWyfbsB1txYn6hYIqMPLUDGZlXEdc=": "1552795000000", - "hfnFt4wHQRcp8MlRG77ZDC20pHJATv8Dqh9fT4w9dfM=": "381642000000", - "hg5nLu725IxSmbB4WDQbAJscrm_maX0mIcyvs0Goa5Q=": "833333000000", - "hgBMJaRClF6vKSx_fASxCXpsZ98empLmo_6HdTDiFAY=": "454983000000", - "hgFd9b-VzWw8iQBNFPJSt4KQzN3bJJJki3ZLsy9Hkeg=": "417634000000", - "hgPxvkEVA0Y6cYdPTVWBvWBb3ILtiF77PpL0rTT4DZc=": "416673000000", - "hhAtDJJdxYiAaZdUny7H6c7XfWqYVBdQy6FHjeG6U5g=": "625195000000", - "hh_ZyXo2-CEMilylDbIhq6DIMkwKxfVfROGyqo7-VOY=": "11441444000000", - "hi0QVkYU8znWiUpAYAFGoFlatXkgi4cvk-NgPwf65DE=": "1542446000000", - "hi2LbWQIiNVep1tApcLRyWjujXZ14vB4kXj9fWGK12g=": "7775625000000", - "hiADtMHxbWAZfvlruWOsWgRTfQNPNyHEYXwvFeRKOu8=": "504260000000", - "hiO_cGDAQa654dl2ydqWVS1WWQWR8t7TdIpGEXJN6Hk=": "814467000000", - "hiWl8a1x9GsRf3mk-Fx5A2FSzjrLqnvCMs9ctDrZ4vk=": "10255703000000", - "hiXwHIDZ3n0dgl_xnbLBfewWLifyhV7bAFaTScGcc0M=": "435610000000", - "hiYfbolsSwAGkuTQIbQ5gEs_NAWAQB2yfZEtSn8yIM0=": "391797000000", - "hicJTdyCpoQ1Vo4mPFz0lfOiVeUdOQABLAnTFjNdttE=": "422775000000", - "hiqpvxJTH541WikoRL6nawcQQjyLMvu5UGUd53CpEWk=": "460976000000", - "hj1khGrt0LJrzyMyrcdlzHrdOLdxY-01GkESQhQcRho=": "9099144000000", - "hjRLogkd8mai9AQbnWJnsQdidDeW9W14g2Yd6xN1MGQ=": "489140000000", - "hjUYlfxcKp4nGloHgUiucFUBZy0PIa5DLDQnV-262Ek=": "384615000000", - "hjePGewNuo2Xf3b2RF3Q6mnl2QGn1oljNwYD9_Sppa8=": "384615000000", - "hjgda5U1VCncq5kR2vy2lzVakdErI1MfSSoEiOTCrB4=": "3635533000000", - "hjklmALeEVbQSJJlhLQyfx7mFcqLZLrMwL0jpBGZGrI=": "1265746000000", - "hjziL_JLM7VVSQ-_T2HW4iGkaDuiUDjmLfU6SAU7h2c=": "384615000000", - "hk5zT238k_gGkTedxJg2UqCrlfgFXd26O4CBDeEg0Hw=": "758689000000", - "hk_TdnZjrvLp6gT3X45_eWfvNJe2ODOnweFPAruGNlQ=": "514411000000", - "hl1wjlTby8a_8Oq7oy65jOzmj3yDOsNeB4sWYCIUwG0=": "769230000000", - "hl2q5vWxs0qt61CJAAawcB1vUHoo1Form4omSFn0sLs=": "24871719000000", - "hlxfAH0d_4iq_d5vuMgrftKjjqW1LiM2Fg6lGrirz3s=": "840967000000", - "hm4iqzqGcqzmBIxK_FOamLhGYDFU3Dks4lwck29WyjI=": "1682949000000", - "hmAM3435-y4yyohzogZzLP6gY6A5e7jzv-wdDtIb-l8=": "1250664000000", - "hmNVtuM8cu2ZVvMAVB2ylmgaH9Avm68_Qu90ch8CClc=": "454545000000", - "hmQSZHIotiXZFxAp753yTS-eAdnZSxP0BawJcSfjBf0=": "455003000000", - "hmpeuMjNq_pOWvi889-nbStaKnnywP9J_lHeOQOFPGs=": "390818000000", - "hn8kk2q_MuBV_vmT9Nocx8as_J5BXELFATvmAacZZRA=": "470139000000", - "hnHWYI8YyBg942dxFSoMfV8-uwLOFhWQK0kVmQAvgEU=": "833660000000", - "hnKmAChW0b_k-AlHZBp2yuRG6PRUvCrvdTbymQa68Mg=": "2250753000000", - "hnhUjLnLmzzdNTK2eAwLfWRo3jdY4TfgyFnpH4gaaXs=": "5706009000000", - "hoFZ0GjGac9Tb4gU4MYfwOybFJ_dZxxvQScnVXzWWNM=": "1223425000000", - "hoTu4_ptq_ngpcvmDOk5lixMBz04OhOpk5uqt1XK0Uw=": "385428000000", - "hoUNxX7iETPq3VD-itcH8hSbmH5BTi9ac5za4oFyNrA=": "5384613000000", - "hogQkKHXZ6vYTFO1_r5H1Uzcq0dvK9smtld54zSVSjA=": "407808000000", - "hp7EIHnyzwP3ak5m7LHW_tWDrsJzH9YDM3ZyaKM_CfY=": "413226000000", - "hpXKgypjVrOR2oiO3LxYLEub702RFTrsBHV09XjwDcI=": "1258135000000", - "hpmhQH7l2eIOlp6SjBXSYjIoGluQwgnYP9xVvX-gucU=": "1274767000000", - "hqF1Q6yjY1VxPcEZfRX3yxDVqtUorqwS00vQ7TniRao=": "380708000000", - "hqQSS575v1YFJlky76AdYbcxlVlQATcYNIlqRszn4kE=": "461992000000", - "hqQbPAOY7BEiKEh7AfE1jNh2U0Y-WKUrn3NwiF7a9Zk=": "469528000000", - "hqTInFAPt53mzU-aQedNg9aRos0Y-MUyMxRyVyYi37k=": "384625000000", - "hqUVxevvaik8ku8XOgXq7XHZtAgrYgVnwupWgr9RLX8=": "411367000000", - "hqluxGzvawzBOg1_CKRDtn4ZR4GBBUaVmQ-Jp_hqqG4=": "378257000000", - "hr4s_mZbkosPaOrttL4nSWsx-PRe-bIU0ImYLfMCzTE=": "473331000000", - "hsJ5o-QdgiCJPdQkW7MUN6Cj1tchxquoGu-Onn58pVU=": "466900000000", - "hsRwPqMaV4GPDtzNjnkYxCDN4FEUUPyezffrLiCQzmE=": "4193243000000", - "ht33wNW5h8jUzSSzgz5QPv1dKYG4m1WZ1RGyk9dmNK4=": "378966000000", - "ht5VFKhZqZgOxe79905CYihYmntEnYmqI4l46zpnHvo=": "999999000000", - "htc0EOtLdUHBbxgulL_gkhvOCLxXCEgW8yJukTxcJZE=": "377410000000", - "hu-FWSm0nH_22nEApGEENgJ__B-nz7QYcIc_c9iP-7c=": "417634000000", - "hu7oTTDfr046L1fo-ON7NzQ2TEPC5kjBPLpE1HLbl3w=": "814467000000", - "huGfZdG2pHKANoDc9hQ5PdvF8y5Ls5K6J6YS1BUamns=": "383483000000", - "huS5a9q94OzDqg2QxKcS_0QZqpcKetDdXGYOHnFWZrI=": "910118000000", - "huUSjYMW8wXmOrGarU6QqYznyhqTZHy3I6Whmo9Vjx0=": "384615000000", - "huqZc_cLKbn6EATcYeRPZi-0U7_HbLHC-9Z5sEMTeLY=": "521654000000", - "hutoPC2qeOBgr0mH_yfKAV9rOMYI0g9kxO5XJi0lnX0=": "961538000000", - "hvOKcJUJWeHoSbB5enk1v2n-tpB3ShDOb6YtofAVjfo=": "417637000000", - "hvR0Idz9fmKCL5XZ9fjgW-ieAryk9-NnoOOTCOzKsLw=": "411085000000", - "hwFjNsazTN6byDwGbeDKKuhBhk3Jm8L4BnyAt8onfG8=": "416666000000", - "hwLc2vz6g4f5AthIG4GzW7YQOGRiCEc2ry-zAdjXcEY=": "909090000000", - "hwUS5NugciabR-_QSY92FwiEiRgS-Zx1ZWmCTLp2VEc=": "384615000000", - "hwZW23i7ocDTLxPSYB9aWlc62XK9BQ81xa_XiZEiO3I=": "417520000000", - "hwhvYXWNmRsJjLAY3VM2VHB3NOAEWFBduPZepVsZE0c=": "384549000000", - "hwxxM-sEyWwJQJG3ZJJvUguT3ZRjPEOQ8spisctjmU8=": "4076446000000", - "hx1CfgxelmPBnTWB_D5c-XOuNaNQWUCvXybxFxfxaio=": "564372000000", - "hx4uuJrqpIn1onrueA3b45EZH82wH8jBAkREbMmqbUc=": "452201000000", - "hxLbr2XeekJNat-X8RNVvWFTburRlHZd27EAvoDrqzA=": "755163000000", - "hxUeOKTQmAFPqPrFoqR1RcKEH2K2hanvyYRlWyevbqw=": "753800000000", - "hxh1X_jgayj1EqlHN0rpKE5GSaNIM3-hG9SPILFkNT4=": "417630000000", - "hyoi7FBx4I6PfYRXeG5NU-Cn1lNeOxIY0_tYZYOLHLw=": "830545000000", - "hzRn1nIaGdrMMTY-B93jOzGXxFaftGDjCvy9k3z9iw8=": "769568000000", - "hz_Iha5c0LEob-AXQwAg-_LJd5JVxhfw6wK13wFOD0U=": "415396000000", - "hzb43TKR9se3GzxEV7ZR7ZecL-zUUbpgZ6_VX_ItFQU=": "427219000000", - "hzhVdK1mY8CbYeRGxtnad26RlCrSYfCm33e6iSCqOLI=": "1923076000000", - "i-Mk3ic4FRS4WoFm2BUKSyt_zqDo40Z-JojUh5RqZZA=": "384468000000", - "i-OPmizQe2Mo7WVmIleHKiRqMzDcShIM6FmXTCG_ZEg=": "406407000000", - "i-WolX6-J5Mca0SYFic28YC1JThBR6_U9591XIJ8djU=": "535669000000", - "i0-aSVhQ0oXYm9XlZd_eW53kPnZ5pQTakt98XuB_JYY=": "4127055000000", - "i05XaECllXpHTpydJ2B3Hphb2kxBkV90yjJ2EwYm4HM=": "459763000000", - "i0a6dDbjW6k8RM8cyeMhgBHaZuni5eTzP4PNUFO_cUw=": "417633000000", - "i0rE7tqHFfkMnSxxNkUZA2mZhviBriEIKYsCMTJHdtc=": "411085000000", - "i0tS72M_C2llEm4Os_xZpnZlEEakcMqdYlad4ML_ngk=": "383664000000", - "i0xZH-_xjZgBVt0VqTvN8pKL-a39k1wMio6N0b0n4ao=": "407808000000", - "i0ydsnrgPCPhLygWt6vL14Dv6pzF0Wkb4r_j7PUNl8Y=": "385765000000", - "i1JMbJaradPT2snt-wT0m34WmeutOFdTvnx67OtwY0k=": "460975000000", - "i1PUmxoWGPITPr5tukVwWgZv-_oFvYM0PYL5N0bPyRI=": "417633000000", - "i1bzGPVGrFo-4hzCCU0jW0qbIJqFxc-U-Yid33wvIyw=": "378257000000", - "i1mDDffU7Hzk-gSR12DOP28QFj17IymuH-76dO9Yn_U=": "20454545000000", - "i2MZkIb271AQfsaquaOBouT3B2v2MkhS1ag0yHw8sQk=": "1156520000000", - "i2dZ5S3MeLOXFmJlsRyaIrF2xCxavodLlcYOs3PJuj0=": "380592000000", - "i2mSqzNgRw-qCoRpMhqPFsmFe0d4dP34a1KEqUsle9I=": "4540814000000", - "i3CI2Dk5_RSkdZM0pDl7akq2FIv6agekjCfBxfznJWk=": "384615000000", - "i3JvagpNT-53x0pf0RuIjwe1OJJfs5UMkSYsvfYmEA8=": "416650000000", - "i3WLXc7qju-KZ6q1JjcPcL2Bm9dFvTt77xhFj7QYIS8=": "1852184000000", - "i3tQ_2IKqjtuUTDn7hkZuWXR8PO7dGxXJfFOJhiNcvU=": "1264105000000", - "i4LoUfcm58Tr8hPTh6_ZiGkOle-coYEK5Pv7ZRuEK4I=": "626993000000", - "i4h0h38QrFdUTgaoBk2suBc4KQyDUSRELU8YsVn5xAw=": "385510000000", - "i50P-90iyO1wIIUZlwjjpww55CKltAuWuPuYc2i3PGA=": "771294000000", - "i5U_uAfCd3ZXpSxtMbwboSbz7N9ZM0A_O_yxXWlmkNY=": "911828000000", - "i5i34hAsZmAU44PXF48zSuWKF32UKjGx52U6p9N-f8A=": "525148000000", - "i69ynw0rJE0gHTLBhxXpuhlQnP4VJHSafgqIacvXsG4=": "426445000000", - "i6Ap0DDQVca4t8i7Lqyj-vTtdwhThaim_k1I3l5Y-5M=": "1366168000000", - "i6GgipeUJEuXIRJzvC9GhD-DI_N00TvzEbbteGxajok=": "4156629000000", - "i6bsKaikbFH3oMptoCl1wnwpcvxRkY4eAOrO7y0rpnc=": "384615000000", - "i6wPcQdMNlqHJUUck_uo3aZ2tC96Nhhi31CbKrF24lg=": "1796276000000", - "i7DZUysnjl-w_-3aAObV46BuGM4oAZyBGbTxvWN96u4=": "459691000000", - "i7FDHDTjCBBsytCtE87wJHsmVbv1ZA1uJW-qzjlRaRs=": "445833000000", - "i7Gr1V3gzkxV3YVWWE82JJIaM6es3v-EnLxXDHeko_E=": "615384000000", - "i7Jlb3gWzFV8YCBNOA-zNCHdAd-cZpf60yfqucnDp3Y=": "676405000000", - "i7Te5CGc5BawPt44shkcdarwyepFk97nrVUL3oC-6Jw=": "385506000000", - "i7f55L0Q25WOGW8RqDJm7M6l1zXRpQ4Fddyio10D20U=": "416666000000", - "i7zQLVX1x4BUMjDRbi8LGQjMDqqKTNmAO5D4qlKl7IM=": "450740000000", - "i8fwhqrajXaB_y9HKilY6xvb-RYX-Twr4CxV17JbM9E=": "384662000000", - "i8jxr2rJ8hxEIg4te9-8kP5TuFJ_M9j-ARK94rx2rZE=": "509391000000", - "i94H3klR-q92_YrgrkmPnzGJ4tc1rfeMB3ePrV0eV2s=": "488082000000", - "i9cpWRqulXUWbb8nesM3in-lrSLSsaha8giRowP3mNo=": "2264968000000", - "i9jgs1BzGZ9P7_Du5tathsjKsPTstNrkVfOFg9OnnX4=": "924096000000", - "i9uw69Q4qOQClJMhGpjiMiV4GmYXuu2AkaLeyMt2tb4=": "1666666000000", - "iA2H4bo36gAB60h6yClQ2933wp9BJPjitBuASHlx2dA=": "1846153000000", - "iAM0pI7F12bM1xEgFSCsYGYu0PgyQpqqNklQNvkWdFA=": "3461538000000", - "iAOL_Ta02bQwpq4tcMitwKvIf_fyQoucGP_GisR-Suc=": "385507000000", - "iAhHU1i8ZI4bLqPaqiKBV5vRUkSzdbF_1Aw9OqPh4F0=": "1530596000000", - "iBgWp8_7vMqi9LCAkQLMg_N7-909sAX-3RWbl0XiGHQ=": "766243000000", - "iBkMUGWGkHWV0WY3mnSWghkzawVAxSyZC6BfyQ8O3ZU=": "455125000000", - "iBzw40gCI2C2d0h1r_k3Wo3nlkNBHWURrmPETpWhdRk=": "385506000000", - "iC0TU4gWPfrvO9DLAzH5fiVVjXeBFxaJwurYukieDTg=": "1345520000000", - "iC0ndPPB4XOn0r6lM3qQs6SUnnEyqwk4IK58jAay5DU=": "3636363000000", - "iC7XClKot1DX5pOFnbnsMmF6zOJW02dD0JygpPeLbYY=": "1699813000000", - "iD6BEXAE2QDJ47hNPvFHiJlc8s6RLSgXosuhduBsUsY=": "2247106000000", - "iD7BrDmbt1CNmDFAEB7LL7QBdzfgSlq3qbiCkoJDnLc=": "431036000000", - "iDDbw-k7K-1mTIrDPkqzC_QDtk3SpdhL658S4-WBD5g=": "2091578000000", - "iDeMrmt8rQ6trOSUj3hIo0wpxNjOddHjUXZ0nfam4Tw=": "384615000000", - "iDtDBA__kIe-y25b59eTf_obOJDOF0ucnZo7HE8J4Yw=": "384615000000", - "iEeT8v9d3C50el5af_RFZd0XQTHHkN4mGQFeuE64lYw=": "380680000000", - "iEmKzAXjEJC783scR0Dej_qK_fOEKlAmyoarosWssx4=": "527355000000", - "iF9rMc80Htbva44qcvse-3XILyUrMFYPnlxU75AZF3k=": "9615384000000", - "iFTNvOtyLYEQAp-UsYsRjs7LXf2TovSg2JF_C1Hu2aI=": "721678000000", - "iGMb6ZU_JkpnDuSyGmKgP9LF-mQL02L5vyBUuPqdE7M=": "384902000000", - "iGX7SC5FaBuyXAM7bQgDkuiMgF1ZeK9zNoQbf9fbjE8=": "379742000000", - "iGXnHuQH-sSk6BVUb2KdvlmD9PJJ1Kpq6UpaZCYQwIg=": "3760918000000", - "iGkQcvN0AT5nUbnFfW_2s5umaTsI6ILP33bvzv7DsmQ=": "1785662000000", - "iHDN3xWlQbfOFRkBGScBqOo10r0Kh_IVcHwSBCYlIaw=": "538461000000", - "iHMxOIqslN-zY8fbUwD9ltl7Wm9Nu3bWbLTs-RPMzec=": "1153846000000", - "iHowFHTBJhvoFiuQ6oLTWWCEDdh5a0KI-o1AvanHf4o=": "827359000000", - "iIOdofLoCwAVPXtz1hjrYJkvdv_IJlc3PGJcRP55q70=": "2083333000000", - "iIV2FC-gPv0fqEvHxoCgdP7WC1MTfWnGagmEUrMcu0M=": "384594000000", - "iIhswykF06wzNi_zQBPcVRl8Ed7wRKV5Byc9c6FvSig=": "708345000000", - "iIiJSRggwpPphGYCIInKr3-tPVzd0h3RhyqqdGzDpL4=": "910663000000", - "iIrytJ7pStMyn354TMLm7KnEQXFwq0wPzUnstUhNE1k=": "378341000000", - "iJ9Xn-U2BHKyR4J495Ktmhp_13JIiTZJ81K0M0Jvf7Q=": "1160206000000", - "iJIyDUde1EMYveaAnaY8tIC6P1zFUcEfBhNy7vtyRQM=": "384615000000", - "iJWdRg9f0t6nDkwL0qcCbKMTa1wFsXrvx_HwBlaIDoQ=": "499999000000", - "iJeszr-u418ycH9WbQS4hOcQzGGvQacTJMNNrSq-ltU=": "411085000000", - "iJltEouz_q2C_4TAfp1hFDJCbYdvObm7tiDsOUhpVKI=": "841353000000", - "iJzpMEA-9PrfM-0jDVMHfDb6MVVeiHIBH5Xa3h-zFqQ=": "385509000000", - "iK3trhOgmvjlwvucqqoRQAFRqMx98mVcdojgjXFErkw=": "407560000000", - "iK8aHzl9mgtWEXEi393FOyqd8VsB_3Srj4pYhdzCfhQ=": "417321000000", - "iKFhwWrNIRs7VomKhOd1k4OUUUKtOFewjfqsz-Znk9c=": "4103649000000", - "iKFpnGxNcThkzPGJlU0kUlT8Eg5Hh1KGSITY--Y2S2Q=": "3750064000000", - "iKWx_B72X25xQ2rt42WEJ9VXqn83zHuBu5otwYkMxf8=": "634433000000", - "iKlAPa0UfVk7Qk18YpWsk9PaEsi00odHagaH5u1EEaU=": "698546000000", - "iKse4CbamRWhAq-K4CCgGj5q3tI2-Dsy-qZixxwQ37E=": "2607326000000", - "iL47V2TvI517VExEySS3iERz-uXURcl_VaEqRBpniNY=": "1216178000000", - "iL5TGa7AfTtU0VRaV1A_SuQJ9KQZAqvz4X3lPyqaIUE=": "927845000000", - "iLeH73ZyfJOQ40vaiu50j5Q3y_Sj52TrsUf7oPTe0kQ=": "448013000000", - "iM4y9x2M1feUJ0Tn1lpnrckjn2_z0oRPIZ6M_hVFlbo=": "767923000000", - "iMH-dm2cx3sH64V5JljTERuqtTz1JBr4ohYAc107WVg=": "1153846000000", - "iMYXFaAYb8udPzAQehHjmzK9ppUvsMOQ5AlkVsfhuMk=": "655666000000", - "iNq1DBanDxA8lp7X16rnegfqhM08qGql-8hQ7LTLD08=": "1923076000000", - "iNwOCHeC_zG_VjhRpXBWpelkzVioqOq7cfw6cJb0tsc=": "1366800000000", - "iO06AwsX8skZA7_rc52PDgKhX25qK_fISKHMt2gCFJg=": "625865000000", - "iOW3zYznmzipMG-5k_PYzbwn4kGI---M2wE1fdvsvts=": "1744517000000", - "iOmso9NWk-MXkECGYWJabO33jHyybiXorMfPNSAzkgc=": "416666000000", - "iOnVa6hLfZBli8tTF-lh8OcC0Sepy3SFFaMbFHPjZJ8=": "384615000000", - "iPEuCkxIFUhcD_ygoghK_L9krK5-5covg1xKrLkhJLU=": "1363636000000", - "iPIh-S5kGgQUXAbDIzCH3qaK9TbP-gZo9CquRhrG9tQ=": "457943000000", - "iPN7-43ayucyRz3pLc4T8jKN4417oaBCLsAkwqejLQo=": "452326000000", - "iP_M7K952tSDkBA_JnxpvSOUY9j6CyUkWfBsKXdENmE=": "4641046000000", - "iPe0MZjS6vQqTpJ-ZhZ62heo_aGRwYnBQFfq8MCOo_c=": "390652000000", - "iPj69J1M7tMquwTIwRNHtIGtYg33HXBTci6f2pI7qwI=": "577336000000", - "iPq31m2peW_maRSjgaa1lwKfJK75Vq-EZ2EHrv9SC7E=": "381511000000", - "iQNGoZkQKcpBctGe0mRCN9YHFmpPNuRKjNOS3K5vv-o=": "770322000000", - "iQN_7t6z5aRko9AeZ03Qdh53rWC3zjf5SlPGy62Wl9o=": "4036499000000", - "iQRh4zISoTKvYjE0Nr_XwEgYfQewC2e5sKJyW6PkoMQ=": "2331291000000", - "iQzXwSDuCHX8mf27e9EzeNKk5Oy5w7AewpEKJvbpAh0=": "1810373000000", - "iRCyGz5JVVGNtuCJv4uPsgwcct2FOs47WqwiLWs0QCU=": "384615000000", - "iRvxlYZ5b32fmHy3OvA6vgDn2esv2Tnt0H2VlzDsY3c=": "386072000000", - "iRw4I4FS9B8xxXqudiSX-X11L7wTJsv0rHRrlVh2cHA=": "405357000000", - "iS-ujUGkGdvXw9PtVmY0TVlEC6ekLOr4bJYtmLyiFWc=": "684554000000", - "iSAwqdN-OJWxbtLL74fJTnMeZovy3PQPi9XHSovlQak=": "817248000000", - "iSKplB2qFrJd34ewjIgGozyPJbwyrLgiIK-xmCOt_5o=": "499999000000", - "iSYQePPRePNjrqRCzOmGYdJYI8iH_ctFFswwqp17b7Y=": "473265000000", - "iSxG747fE1E6F6SaVgwQ3Bn7bxLjOHozbbqvwTMnjMo=": "404052000000", - "iT9fRzR8PCoppILyH-26GCxlR-aZrL5mXessktGqohQ=": "954279000000", - "iTKOtaGNO6x74vl96RpjYoEQCNPzdbJ-l7T91JF_BxA=": "441016000000", - "iU0bMwkOlMW1UGRhQnGvQx3NBieCyNHwhk8qdEm0J8s=": "418116000000", - "iU3IKRqYrKNumWMAeW19EASUxFR8aeR0ISaCS2Dwz8g=": "806082000000", - "iUwdeJylPPWBwuKNrDocj-BgopQoc_IcL4TYAORR5DU=": "403846000000", - "iUx3ir7g4KqpMIoY2rDqJURXfey9nBjBw865Q7khb0A=": "1923076000000", - "iV2CgMWgxrBohixm_U4AMeZnhJNwGkhjT0EU4k5GBn8=": "454870000000", - "iWTb2kCwFWlK8HJS7Pr7nr5-MOHKJ5wxb8fXMBhsEQ8=": "703790000000", - "iW_YBdPXa0FI8RVEjICh7J59nxP5cVqWIiDinO2TFM4=": "1538461000000", - "iWiCPWDj4ITKi6ywVm1CcsOEe9T8Sfs6nYR257md6SM=": "654409000000", - "iXZE6Z1mpgk3knnnLFqvP-MMymB0vDVgLPC0D_S8LM0=": "408946000000", - "iXdQW7p8HTz9_FThCnDEncbogC_rHqiHF6lfWqcAO8c=": "461637000000", - "iYAlxEu75Erehv0k5rPeAawmigWPlPBSwx6yjm2hqcA=": "427562000000", - "iYPLZOqpMWBBQ1MvLzep0BUKZVY5V03FZmD3dRZ53SY=": "387297000000", - "iYdo5Q9t1cbyf8RkVk1wciosBsZGwtjA9rhmjimsIqg=": "1270111000000", - "iYhO-qUMQeS6SWaGO9xsoqI57hjM5xasbxEBv4FupUY=": "1348751000000", - "iZMX4fXcBfT_xgtQjf4MNC0MdsNfQYOLKSfxgdmbgJg=": "411085000000", - "iZNtWQPUuo2Dx4HwezOscLntiZmmKIUjMr8HHjynOSg=": "2088168000000", - "i_bB0-3GQP5FFQoonjlz4j4Y9JDh-YPa2DPudhY1ud0=": "835687000000", - "i_tXkdwMpINLO-bE2SjYPGDLXC16BM84f94ldr4deR0=": "381436000000", - "i_zMzkdWvrIl17xqLsx--O9iiSOh3wbRDJa6MqvpfQ8=": "4924450000000", - "ia4DJtJmHJaCo3FrtyHfkT6snWNpsawckS8rq5RxbCc=": "382394000000", - "iaHjIGSNca9YPaIhfTbgOM9exP5-pxjikDFbwbpBHn4=": "899999000000", - "iaLpgQEWknH-9lDUj5ToYOYhCQ_Sa21qBU0Fu_J-ojg=": "1119864000000", - "iaRZGFmWa8LLLZWcl8kn8Suu8VUbfe1-1ZikeuM4KLI=": "416360000000", - "iaVpe4XLBq31urdsZeYwoHf0IkJleaUAf7bR7NUgDls=": "390797000000", - "ibUqyo9gqQlEJGr1gGvs-oNOodHk-4qUVfQxrQYYq04=": "3974651000000", - "ibdgaAVjmZTIfSm-jEYGOx5-O0Wb0RweBi26j5SVkKk=": "699519000000", - "ibmUNKpv9NAm2Ms1syb_VHKJdMEjMgR-QdgGWHpBR0o=": "464300000000", - "ibwYufirBpPgKLh3rR_DTI5zin7Dy1ZUxro31NWvJng=": "417183000000", - "ibypyVJsxoGSPL2ATJ4UZewaYzOv0PhT713r-hH-aJ4=": "404710000000", - "icCBkd85lYXYPxvAczaGM2c98oGLY1P61cPzTnjRg0Y=": "6059271000000", - "icy4DFhztjkT27SJSYEfUp7BYfBJLEuMoLufKa_wTrs=": "385505000000", - "idPaB87qVMegJjLQfoN3MaAbstXBOrVoqSgAUjtzgSc=": "385624000000", - "idgjKjK2FlBoexP5iZNNGLlg3_rnS1MPS7MRXv4P6iE=": "583342000000", - "ido39-smx8mjycmGyDtJqEBU3TLGnaZZeFCGEAQ_dF4=": "416666000000", - "iduz70NXOtWHSK1Suxq8MrftdptxvdibYVRRzlvUhnA=": "445242000000", - "ieWCVuf70sitViK4G2EwMOa4FF4sBL9ySJPSPhJE0-Q=": "1923919000000", - "ie_QYfMoPqb--D8c8FDO92XStQOs-LrGolMltx3nYT0=": "6206072000000", - "ieqUsuDrzFxNSyByKQchi1nwBsPQ3rLr2DvoW8bUjic=": "1217819000000", - "ieqkEIzdXwIA_kkbyAGP0MuVOS1MkidEm7n2dLrzBtA=": "384966000000", - "ieyvbzz88-ZyG2enG7Lou-kDozKltCT-ckTLTI2dOUA=": "384002000000", - "ifa_UqqwY2bKAZp1G8Xaff0M0IHwbB1bpvp7UTVlyyM=": "769230000000", - "ifni6kaRlcWb2q9-6P3PRxUJmh5FKmE0FtZl5Q2gFTY=": "384615000000", - "ig4bEuWto1NZi_sRJcTY6rS2icAGnUe3q6Jyl2E6L6k=": "417630000000", - "ig8ZR0YPdkJozhT9q9bNsLdm7ZmtNx7jd9hPaf-rOlQ=": "927024000000", - "igEB9LpcUCBpm_SZ1XsvnZxjXtZRf-Kz6ZWXkE5gZkw=": "893416000000", - "igwqnxB7dnZZnuE2R5yphtMcyhJmk-2T0jy_g5J8_uw=": "1538065000000", - "ihV9d2sD9dWNu_qRk2Lgbts9umTNKuogK-bz7nHpLfo=": "1999999000000", - "ihlEj7eEgRLloAAqqnx3rEhvD9oIjyqvDKF3Quw7z-Q=": "834551000000", - "ihwB58gAGGdUNVH1lzWoH8fn-8hUnB_NOeqS2vYPBAg=": "386307000000", - "iiOf-kVZBm-dFVQWolD7jFp_8vltPiM2wVTnakCA4pk=": "466696000000", - "ije4fJoB0wUoOqHN2u-D_B4rXTq2HiLOGpMlJrzJ2kY=": "2272727000000", - "ikayGEtJQ-LXtFL7GrjzXOybhnJhExxUGt4euH-P5-k=": "384615000000", - "il6ypB-pVzmdQZ9rqN7VuAxXgjKv4gR4zXwzEP9gx8U=": "384615000000", - "il9gy2qw6o_Q3aYjmW5yLUHSDBMjxibTy2tEbAt3IIc=": "2080891000000", - "ilc_NuIPRDRtS5hw37wvgTazc94ctWwthBaZxIwkh0k=": "7401508000000", - "im-WFemvgHOLa1dHzn1Gx2_hAmXdck5F5ALlXcpPBIA=": "380723000000", - "imFFI2ByGsJlTAB0w6EYIKfacZ9DpSMMX1d8Lq6u4SA=": "833333000000", - "imZ4wUD6IGFHxkOg-Tn91_6Y1UkmE3GIOHLyGUPk_4k=": "1906882000000", - "imrrFqBFu6_1kIJUIXQuaHpP-ueRiTNarfN2cZvXZ3c=": "383038000000", - "imyHNwiA2rClXRih88lyUBjBpyZ3EimzNFwvCrG3yMA=": "769230000000", - "in-wOuwRT7vp-ZD7PB7O76q_eFGZchjQq-N61wdMA8w=": "31304422000000", - "incnq6kySmBycSYO7p6p7DGoHItOt2oCAAa7uiQbC8c=": "384615000000", - "infJs_uKmRIXtF7tQ-O5cuOsoz6MPW5rcwaCT77MHw0=": "491644000000", - "ing-yQ83RWTH4FBZv_hmPQzzrTBDVACla-Qvmviwa6U=": "423181000000", - "ingq3s5inDikllan85eDbUJK-kjgo7tgDezrWeEC-Ds=": "775861000000", - "ioAw__z916cY-q0RYoLDlig38VfEelZbBoF3NL4ePfE=": "449494000000", - "iohATOzPteelADwfn-xYAwjRj5pJ6zzdew2caoAxuEU=": "1970100000000", - "ip2vCHaNiRgrvJ5FFfylUIDjm9hm86pddbyTnn-R5UY=": "5058771000000", - "ipCng6z8CzqYlWACuyPqiJx0dF803m4pH39t6NmPmFQ=": "452205000000", - "ipKoo01ulTDlG3BPSKtMj2znd3Rb0SjjPKSncoJF658=": "3855074000000", - "ipgcvNvzW_2AfpyKUyOf9HQ_BaK8XZpEPAabYcd0dko=": "568525000000", - "ipiPq_jsbXQlEUR1Pu_taAAoIEd1I4Hx4QKQAKlU6WM=": "443461000000", - "ipiTnagCutaLKHIVW2kHUowZXiKVFPcxVKjH8o9hvRQ=": "980769000000", - "ipyHSd1B8LmrZatOZG95XXA_H-2yWb978T2g4u35tUs=": "384615000000", - "iqKWkDrApx7yd9gTl1vq2hIJ_lF94fyolC6LA_Rz7OE=": "752690000000", - "iqdova3Ra01jCBsdk_QOfajfA688rX0-cxsujGIQK4M=": "384615000000", - "iqfE8EBP8wg6Vp9DN_4OeKHi5l2hMQqCRs7hhp5hcXU=": "417633000000", - "iql3g5Gz6h67eYLHpdRbVPtEQfAHjnG2-e2RY0nV_cs=": "769230000000", - "iqmZKUMaMhXz9J68PEgUyAdd5bXj7clB8RenhC4bCOI=": "455541000000", - "iqqxXjc_9csna1cdJM8AUGxMgEAIXP8T0Xr4kGUs59Y=": "1369803000000", - "ir89N8A_1LPn14bjIdKmd3yh02c4pStoqCGzIrHKMg8=": "502410000000", - "ir9DKyDs5eSL7p2IOozNGGP9nRrqUhzzxAuOwmmapl0=": "576923000000", - "ir_Iti8wa7vuephi5RNdhFcM--Kv49WsPa2dQBI4vvw=": "833333000000", - "irg77pLcRzaaRSBN0dO6PYRmEQLCtCq8M5D5-0MV2PM=": "769230000000", - "is2mmidYiT4KWV8m0yZlrRQXiUI75mbAehNVgQ4_mxI=": "1794036000000", - "isJDl5n7tASDJCfbCUjAB2ShHdRj58bA7oz8cxy0F2Y=": "397163000000", - "ishk5VoL0vxmoj8SScfcmtUQ1JXTaYHM7uMrU94vGYA=": "804203000000", - "it2yyGN8gZDryjlVCqd4ISxkq2jLAM09QxROCh-wLNA=": "2557048000000", - "ith72gKknufoW4zx37nn5VIWV-EQLxG9m0WuknkfcI4=": "447619000000", - "iuHubZWNFKwRmI_ezHeP2OR7HbRAX2H-Q1OsSLUyTs8=": "500469000000", - "iuML8MRSKQ_zbiSPC9gojHqv9awq6hPkL0lWCh9FT7A=": "2313404000000", - "iuedPCDeeoxN0RUGV-tOw3ah0hxa53EjmGsb4q84pQE=": "422557000000", - "iuls9Gk-4Oj9ug2z2_Ux-Isvkxkso-_Ar3MT5ZczUZ4=": "379344000000", - "ivG96YYFvx8BtjH8cVzVRnWZhdDj_pxLprzL8jGqqpg=": "393310000000", - "ivH3VDw7wqrBj5cIYyuTPMt7WljsKFijGcsV_eNL7ZM=": "384615000000", - "ivKVpp1XZkjBQMebNa_qMcWb7sMG0A4mMxli9JNoHUs=": "417634000000", - "iv_FSl2jk96V4jgF2UXBwcQOd71r0-OWIxahe4hXtgI=": "8333358000000", - "ivgypb4Bd7jQrGvFEC3qJJJER2Z46c6jNTIcbwGn_cA=": "385614000000", - "iviKLTkdnBgmiZTX_NZo3SNWyoEGpG4JkawsGs6ZP9I=": "1233257000000", - "ivi_umyR_xpoh8pJS9cqYbNpJapG9wMlOpL6LzK-0vE=": "416666000000", - "iw7g3Oh6Zk8cm_LdkH8u370hvbAkvZCKiWpfyAF6lJU=": "673076000000", - "ixR3yC3HJ5I2OXmUWJ219se9lFJ94YEuGFFiT6SwJ1M=": "3144581000000", - "ixWyjwES2hSwqQ6nkSZdryM4B3Gm2tBDrBft78wsxvY=": "454545000000", - "ixlptnU7MSmCMyDDApTy1Z0YIxR2lMm-0rQl9-MEnIQ=": "390103000000", - "iy0NWzpniPk4VEZ5Xp_H0iJ_tLUdGFGdoqqE0EP472o=": "1952190000000", - "iy3tLxYUOrme2Vm1d8oQVK7O4Hh-256mnJQTIjkFHLc=": "1150707000000", - "iy5errqlJgU4je78IRw2isw9qRKzR54FiM-4Oc7k0Rg=": "1923076000000", - "iyUYnrC-qKMpOamX7-TbLYYJWRsQ5f2BMJe2HaovNCI=": "1140491000000", - "iyfeyn4wlhgVea-4Cj07QB53F9TplpUEoFb9XswI_4Y=": "2083368000000", - "iyr5qSUZH3zyc_W_7FnJb77TIKNPx5wfnKpMzfu0B94=": "378814000000", - "iywWWc--1OZgNvX5eEiXEQAvm9-Tzt0--9EJG3clHI8=": "1538461000000", - "iz0Dm1fqB8dYMJbIYbxrjiRPTJn9Lw_EnKf1nKr-ouI=": "377072000000", - "izD3NS99_tJE1qHoi73CUuPkTIrQdODYMnqBG4X0N2A=": "390237000000", - "j-IdMOTlnXw_reBM2C2fEo_uEtiMkwrtqXJUuRv2oMA=": "435589000000", - "j-aRgPTOIYx8YCG3hHYVGrMOySjvXE8sXfFinnq3S-Q=": "835901000000", - "j-xU5S9WjaNojCB0R09WZRSu6685C9s8HmJRAbqIj78=": "813336000000", - "j01wWB1xcOWSqt4YgmWdkA4NdVqXoRmYG36COB5BCuI=": "759112000000", - "j079Y4EZ1N_I4cAvOdzgh6R67cZZMcUT_fHdK-DFcK4=": "4162757000000", - "j0L5oSd7nG_zpw5wKe8j7Fpw4IJVc5hOpo7Ldy3ENck=": "1233257000000", - "j0Xcgl7MC_S0W6Rb753ZJ0HU_3WSjCSU2CGKLLDlg0Y=": "460558000000", - "j0bQLJxCmV-HN6qIjjDg7nkV2pps4fGUaIPoVvJ0wfU=": "414523000000", - "j0dz_JNXCmFiO4Tds40hgS3O4_F_3wkWw27Ie2SbSuI=": "424816000000", - "j0y0QXPzkZpzy3A0-2cNe_fH5Vp5zuKuqmZYc_lYjso=": "382864000000", - "j1YxNrG9sPK3VuldnJG6FGnNxw9Kwx4wnETOjD0tcv0=": "1575006000000", - "j1pRFH46w9bPoQnnYD-aZB-drgnwAJZTUV9Dfz1gDJI=": "688777000000", - "j1u7UsawqPGOSWWxQUaowhombSm639kci-huz91fpOg=": "385506000000", - "j1xDFA7raxZxFMHYPZ0bNCMHMMc7qi2tUiobTwswFiQ=": "6086363000000", - "j22bcYOQDcKiVafjvE6-Vwz_sf3j8Br-X-kSCUxPlDQ=": "501661000000", - "j2NxwLU1z-KF7W2IqqQ9iFsHqF7TjlUxPDsYnva8LLE=": "384615000000", - "j2R_gr9_5FRjBp82ztQHrrrh_w-AtH2k9C2JAWzKMLg=": "776635000000", - "j2fKMc8ARA82O7_WaH5p2fPRHYqKDQWTXMX8Dw2ynkI=": "3846153000000", - "j2tmFDFfloKd66XqBsZU_fGjmP85ludrlpBiWdF1gfQ=": "389217000000", - "j3Kjmff1GKc88iy8gvNxQN-6SrvcCS_26BYg8HlzTtQ=": "689017000000", - "j3Tn_5rq7Ykfy0WC5XbfW59VdPqT89EHmRyBROmEFLk=": "414523000000", - "j3XxNXVhbhaCseuuQG7S1vqhutFVSgf1e7bIr2HDzW8=": "743893000000", - "j3YQKWbNHYfx-p3e7ZAlfkPqVGweMSHXrsLRLOdUWow=": "4999999000000", - "j3vVy8TGGNvXgcQN8OTBtgbkQoTki17F06ymXJ_uPk0=": "416666000000", - "j45G9NhuCWzm2W0NTi1KD6FpHp8ME8vJGuJsKdyHkhw=": "2265091000000", - "j4Jo15-L6Jd4w7co8sfQb6Wu9Jl9JILD3w8yw4qxvQ0=": "455402000000", - "j5-cEsvRGSOgy59_q4KPYsHpwvrRZ4UBU9Aoeozjcl4=": "384356000000", - "j5htNx41aRTfp185boErQPUImla6fBo2yMObjgf9zO4=": "517171000000", - "j6G7JNIXnsuM17bArdMk_xWzLWwhnUGyZDajIPzS3J0=": "1923076000000", - "j6XvYDF9-ZygqEj3KJ9jQ-IgOvuGp4ocN2KeG38AJgs=": "384615000000", - "j6Y_pOqSK1lLURo8-_-VVyt1zSJlaTYwbC6lyg6S1Ok=": "411085000000", - "j6_mKsAOe6Lu1UoFcYcqzsy0qXOUy4I0ItlwZAQ20fw=": "2500042000000", - "j6zp0yEX7q8OjAC4e6EkZggIG6y6qs5r1AEasmU-wOg=": "1153846000000", - "j712PcsvW-ZbjHJR60ZnyBbySZkqZjfIIqElvHltrdU=": "384813000000", - "j7CKoMrwTauSUOdel1_g7sQoeBCo-4bd-3ckgvO39qc=": "499096000000", - "j7XfpGhd6c8wszSMBEHJJqatxyyu12QV-iClQBHiBzE=": "641556000000", - "j7wLDIUfWa-wcITo1e7oXrLEcE4Zpj3c71lbzYpywEM=": "1817180000000", - "j8lxrZO7iIFgJ4m7K6Rxfz5PxJ5d03lQ43ChYzzQ5iE=": "578190000000", - "j8pw3V9c5QXLHBvADofxKnD_AkhzqsIRVnM9iUeuGjc=": "1777883000000", - "j9CogT495qSwI3trTSx5OHMGQbaiYmIOGTF1YTobnCc=": "909090000000", - "j9PReNCcPjlvoDyRBf17uZY8ftPCYkwWo3QooF3RhrA=": "1233690000000", - "jBRokocSFoeu6XjZevKC7ThwK4VDR66rUMGCmEY7n48=": "378257000000", - "jCMnz76PuCK4kzhi5brw8Aa0qVdcVMwKuI2eX00wEjU=": "1510256000000", - "jCnYODVpw3XSTdFIcyp4mkdvf5QmktPgAd7bqCkEw0c=": "968105000000", - "jDBpBwbPpYtd6xXmupPW7WGBs3aFXe8QrqPf5zmi-nE=": "451418000000", - "jDJnuUHIQadMDfS66IdM4hvy_PIiUM4UZOhX_Z47sco=": "12993543000000", - "jDVxOnSZquuKU22yc7CT-i0B44fCiErelj2FkkqdWTQ=": "4166739000000", - "jDfvE3ze88dgV6uQVEEmcx6K60nap2b-s8DS0mIkCbA=": "408021000000", - "jE35AKIJBoun-PAOS82uXwK90ggbF_wjGhDHd5rc1G0=": "9795194000000", - "jE9J3ZCtkqcsOFi2HyZGzrn74vTdbynrj7uHRYOyiBk=": "384759000000", - "jEIqrATkowz7mT5f2p3yrxxwycEqiSNLHAIlvklQAsw=": "8333241000000", - "jESCrGzMDP7QwMydNnkpQXQuBjdgBhFCoDrmhiCq8z8=": "3831545000000", - "jEa4CqQTR5-XMw_xcBXSj893aP9Wqq2UevlBHzywDm8=": "407808000000", - "jEmh5XT4AYNmDZBSG5HKkyZRnPSMHc2QGIRPKI8P0AI=": "451935000000", - "jFSvaTCKXMU2O-2aU7K6Zj8e2ZZ1W0p0Wa62H7L6oHY=": "379667000000", - "jFfuI4_v6w_zkBlqWqvDv48vOR06XSwaxXbOs96IIu8=": "1411758000000", - "jFsHxnveizJrDTXOsKcSQepX9a8Z3iyi5_wMu_52sG8=": "576923000000", - "jG0KTljL3uKOH_rdnuNOg41XCmJe0BUV4nQ-dltBUGg=": "455234000000", - "jGau6-u2IL9feJbARzwBnepmD-AgE5RKSYebj5hkDb0=": "385507000000", - "jH-2kjoJo1PVGy32J5NOZVuatisq_4FGv5gOjxLAeTA=": "770637000000", - "jH04_EG4nLWmV4ZspGffC9sie4COmqBcMtMRY5bmibE=": "400250000000", - "jH9v5DIdUkycSqMqKIwWmNss3LVtmUmRM6D5owmctPc=": "446818000000", - "jHTAUUQOaZegjFMaI_flYyj3UR6d7Ac7WUi9a3JRNZE=": "501408000000", - "jHcJEbd5ZGl-gfhXBvhLo2WY0LUhGfev_dpyN4XU7Hg=": "2940501000000", - "jHeA5ruA6cBnEMlWj3PO-a0lfgZfkauAr6gwsqf0hwY=": "4166666000000", - "jIPqjlTofyW_hbfHWu9U9n33bL-P9_JveBb0KIf5Go4=": "844090000000", - "jIZJDYjIt4tm5aYYsygUw0bCYN-mbWUHsKLEvXtXPig=": "454340000000", - "jIsDtWe7ZFCSTSkxOinpgUkGlXk8eRtdP3Nbrr1yYVg=": "387334000000", - "jJlzBuZpTy_Y-YojvzS6Ll0E43HCAmW1w1qTH2jtBD8=": "411003000000", - "jJqEl-dwmfgLyhJOsomYaDF2Es5Wg0qbJEnLeaOKgcM=": "405225000000", - "jJuD_UCKRhXS4q37PDriZY0BV1gpT-KsMq8OvOyno0Q=": "413368000000", - "jKE-R1nJBG9Lyh-l6iJhXwBS9xVyOmzDiBvVnejQzbc=": "460037000000", - "jKRq63i37aB8PnkkM1WNaskufqijzXsnMz95wQhm39c=": "2500007000000", - "jKTlMeVeSMY2Csiax3Ynsy5PQzqV2rRnM7uuqAGE_XU=": "4138490000000", - "jKnTe1f17gs_QYkCLJNn582cuqqfq8Zefeh26ketuX8=": "1923076000000", - "jLliB9h-H-ZoU6e295QZnY1muFj9FBSCcbY5iqpt6h4=": "385211000000", - "jLvvTZcrAu6nONOGlTj-LUBbB3hWuKRQY0eh2lKyMxs=": "18407115000000", - "jLzeUkpOnw441nT-zAY9cgpTV6aZ8VD-7ubiBmA_Eys=": "2692307000000", - "jM1DejbxeOFSR2AyX5Yn_racN6zOLkOJp1Cxv2wdqXA=": "7694886000000", - "jM1RxRJJppBzNDxwJxLxDoglyxMMzeRIWTYu6DUEOJQ=": "921133000000", - "jMmb_aDP8RzKvVHSm5zHRripipKMbCEP6ECTf-jABOU=": "390437000000", - "jMs68vCCPIkh-o2SybihPv65A_QT67vz32hKK06lWaY=": "451748000000", - "jMsmonVTt6UBtzL-lQISM6qiiRcFxGjxbDvBnHdi_mY=": "780916000000", - "jN2LzJ99qXs71Jn5CSTFjbLhf6Gc5aIpt9wZSy18_-g=": "739583000000", - "jN6FwUAei4F8ICFCocTWWNm2k7pY7DtRwmuiKZ6r7VA=": "1588458000000", - "jNPnSquRI9yExNf7HTciXE4UIH82G2EjsA_gAcwzC1k=": "382686000000", - "jNXwE2JcamR2PIJqPCZAC5LEDSFqQgOHJi3uCBPr6NU=": "3855074000000", - "jNhmHquf-yiJbp-eGGakWIelHsWWSssXLUiCDvWi_zs=": "807019000000", - "jNiHV4PflY62xnwywXIHbvlQiHg_22Cs5P4QxMVcHz0=": "454501000000", - "jNkD_0JpeuSgf8VG2NxhRfch5TKX4dMDdcIFn0jsTTg=": "384615000000", - "jO-aUhMsjSN2cHo9rrJe7_i3guMii0BOmPzORN_khZs=": "4123464000000", - "jO32sWRqtGsAMATJY5jvzRG7pUhtX6RairoQP2LWp9s=": "387988000000", - "jO8ZdcSX7UfSsiguAMuXfcZhIGkM7GcRUHRoqPy-tnQ=": "940620000000", - "jOdlyUR48B0f2cf2JYQJPG6HkfEEFS61h2DtwD7wKlw=": "829237000000", - "jP-hZnGM6LPgR2Bi-8_LpItEzK_yrYpUTHCUa2VgYec=": "1607875000000", - "jP5ajAIDmxapzKWG1mvvvMdwxxRG_owKUxA4hjuvy94=": "500422000000", - "jPB1RqG8uWPxaVBrBI-SA82TChoodT2LysSnQdR6_LM=": "458244000000", - "jPCpHBXhZA3AalgaQvCCtlR8Ub0vlLseaT1SyRSVjCA=": "455600000000", - "jPP77MpKWMk5hXf_XYcMfqqxzGFLZiXYKDPhpGWrDCQ=": "1927545000000", - "jPbVxkE5owVFiGI0TPNXdJ2jVydtSeZUF-bVWg4UkeQ=": "385510000000", - "jQ05cs1W2mOvbSS7MvctkhKCWkaBPYXYI9xjHlE4QCk=": "867257000000", - "jQ32LedxfU_MeetoDNUBsmXXqgWkmua8gWlLcVoEwX0=": "383203000000", - "jQl_xraiZp2feEq-WT9mYZAkI0N8F08Yx1qea6GB174=": "419094000000", - "jRZ_2Tey6ta7onw1qS31TFSFRUxKznEPCsASR5diDIg=": "3682333000000", - "jRjTwNHa5y2iYLl0UkaCY9QsRREt3Pk1w6zC0G_cfS4=": "384903000000", - "jRjlTytG8jZvYzgN60nSA8JuabCnCKJkQBIyjBRqrk8=": "463042000000", - "jSc0K5bWkh7gkiEt0818kFDQ0G8csOnv4L9OQXETDXM=": "1871509000000", - "jTApKSgxuGqfRidlNoRF6IxPBAo6ohr6OCcMyrGkSsg=": "454916000000", - "jTF-QtKEHdCTO5clGrDfvnmmi49guqHOAFVbYaI9wF0=": "488247000000", - "jTPoAYmP64aiKDSMmYM2XZIH4rqrikpiHaIGIE1X8XU=": "8201193000000", - "jTp1cO0fjTmUDavuh6sX5ron-3mfqhLzERefu7jwq2s=": "500041000000", - "jUT6EVoutsClw6P93jg9vxamdwdxX_eoZy69L66t5sw=": "464525000000", - "jUbAbXemguU95D4o2UQTG0HZ9AQSTP-c75YPZKpfwiY=": "378257000000", - "jVJU5sC1pMNjujOiFm2HpCWN_0vC_K6rn2SEaTFjuNQ=": "459482000000", - "jVLI3_5XHDMcoox3fx9ysqB6J4SLIM_tHIY9ncO9f8E=": "1363636000000", - "jVP8k02Bt6yg4bWBPKL6hSa0cKVkMQMfVGAk2FgVr-Y=": "5202028000000", - "jV_n12JEmG2aAuZnYoQwAx2In-TR-a8XAczru81tJ5I=": "1927554000000", - "jVxw2ROPPvxnzEgOdRoV9pq_yPMHD_0M-ql9-gvnhcU=": "1154647000000", - "jWbD0Z1piLcOjm9j3hETurUA6TLAkM9iDEscgxXmGms=": "2308421000000", - "jWrVryKJFpjlrFcp_6RY-51Ez2jumXic2QWULLHOSu8=": "444665000000", - "jWwcYc225UuopeguWazLKt1C4bKH19mbwdKu0cwxRwc=": "961538000000", - "jXX86r1_0qiocuMxABQEcK0fIs50J84O8R_Xssccm9c=": "416666000000", - "jYG4O5r2fmNnMs-G6DU0qMMza7hi1Q4c7orM6CcndHY=": "467124000000", - "jYXIv5H00ztPOXv3B3Ck4RoasKGDCU03csFVqmd-7x0=": "454689000000", - "jYdQiorYfrUUgljE5Mc5ryDx1Cobp-RlwPBlYhIFu-w=": "891569000000", - "jYimaFTxrbx-oHhFsxPUUn6C9fxenOIdacjHG77XnaU=": "13755642000000", - "jZKO8GuWaml9EVgrfh-3SsUlA7yFCuwPgBLZ3aYFQBc=": "1536544000000", - "jZvRg7zSOcXW1HJUc8RcPYgYd9HVEpvDWOKjJrhpzjw=": "407564000000", - "j_kSkf00zOEccIvqz-cJMKcUgPpJ2MHEg8gu60CZiHw=": "821937000000", - "jaMbujVbXAHMiucfqYSr6iU2NHGz1sAPUuufgtp17IM=": "3848873000000", - "jajmMl5nbPPOJHRWZR8zaShjjvemCdI5DfShlN1kn9E=": "907494000000", - "javvoRF0F4R_4Eoet0VeaxhT33M0KMxjgb_Y9OayStU=": "4583316000000", - "jaybImNWln_quwN3xb9wUHFZOlfd2sErHrpoIYXSW10=": "1156522000000", - "jbcAWWWj2Bozm2IeaNUmtHzdvO51jhaZNGVA5TwxM54=": "1865265000000", - "jbn1f9mMQpJJFLbwQ-UZ4TgIAOyj3ymiA07fr4Lbw-E=": "2040105000000", - "jbnM8IYjLbhf_yMQoMbRkPi8k6geaL0w2kiuS9WxqRc=": "379873000000", - "jbwaLQ_Sx4PkdwH5pUZxzbfl4v264prxIVS-JXWCBQg=": "451823000000", - "jc0IS540sY7KHy5LWgi726Ab2HHsIoAKB4xhcoqtvWE=": "758618000000", - "jcT8szFEhFBtrw1zsYeSU1SVKl_GnoHfB1mgjfyutUI=": "2004151000000", - "jcTFWvzOmF8EYEtCUvrusopEfrnuvj9nnoLRd1sR1Ig=": "454545000000", - "jcg5d7e3y8GfGgjShczeg-9UoVT82jg5rOKi2gFkbD4=": "11945664000000", - "jd1U0bhzBz3lV93fNoBRvVxGtseJemq-S9wqRAb9xbI=": "411085000000", - "jdVQkgD3yqb06VP3gMWOlvR_6jju5xpLN3UZUoJISGA=": "851273000000", - "jdWTbDfKIBiLrtOP-aFKyRQKbQQh1JFCfyDhJtReAjk=": "6701451000000", - "jdcM74pJ8HWrhjoxNf9FaKkQ4f54gFWZcLgmvHzt4rk=": "1927554000000", - "jdd5ldd51VYrcZS57QBZEBWmw1O1NZGIewPsMpeOsDI=": "16923076000000", - "jdwQmwBI3HDCGRPG935EV7hmtv7fot2xw_mdLJEgKIk=": "416666000000", - "jeaiSEHcJwXf-QWL9yA-7E89iAUjcqtFdEXZmQCT5ZI=": "1955916000000", - "jecnr9vh98Ej7XQlcCwp5L-4Pz-ZSyYAAi127N_kCds=": "457978000000", - "jej501QgzFjRJTIgo81Zy5gLfQXWMHLv9M_cn5NeTVU=": "411085000000", - "jerjElrTPIDYintM7iTXiesgwi-_g50ZgE70Xoq1dKQ=": "383054000000", - "jf4o4sabEuLJcS_q2GlhbIifYqyx-xG60OE54rG_V-g=": "446388000000", - "jfHs3OC6JpJ4pdtHdePkpV1XvkkO3DoJ2ANd_IchQXc=": "582141000000", - "jfSe4ECd12EsVShFutb5tzx7jpG4L4ty7LaoAnSyKVM=": "380958000000", - "jgFaMnnMDVKVUepn6X8BNIJgOuFOOAXxjxS00m7YeTc=": "770406000000", - "jglUT1GgOeIIt8QtqzcgmKnal94MqPid4WPr80KpUP4=": "3228393000000", - "jhI_00-PN0fyt_Tx5tXXo4sLWz35EJCr0q6LeAL10Og=": "385510000000", - "jhiixUidiBi_pCVe9_QE2kfBbjHlLXNyGwSQkqUOmIo=": "622675000000", - "jhn1XiVzU72cOf-dRqDGd9bQ9zr5ZTxZLNHj_bmQqEg=": "3750233000000", - "jiAMJSROjwHw2gCpS5IEWsH2RadxaijuBDDZsdPI1Go=": "465692000000", - "jj3PG98TNi4x3ubIrgNxUhjcxCYn5d9CKbfzxlXL2_A=": "464564000000", - "jk8iO-aalnmVlo9cc5lYKokk7nf8gbPGSKsXbBuGsos=": "462146000000", - "jkNACTUgutMYIuByF5_BCEJURILDf1Jh_SSalWzeVFY=": "449246000000", - "jkTli1kb_vekxItQxRfvWBj0dxxvD54uNKi5h-2M6xI=": "383990000000", - "jkc_cldnWZp_rITleTBTLfJN1YfleMcTNLT9MXxdxqM=": "590909000000", - "jkuSMOAIxUZw7-YGl0M43i3poniWXLrRiWRMbj99Fq0=": "385506000000", - "jkwky4h2xA726Ynw1E3COMC3Iijm6X06mZDGPTuk7oQ=": "384360000000", - "jlNb-gXhRPzklxFW0RBjJonGEohB8OAYROYnC1LKIKc=": "507587000000", - "jlVJpMYc9x6FkSBAZXh-HMrfeRmx75J1u8QhOfbFFPU=": "833333000000", - "jlsGgO2dn1g_FFG7twNYsJBkLRzu8FBAKUwLzyVrZPY=": "386615000000", - "jlwumGOYZxF2RzDPUnbqsBuhQoBO1IbUDYFaY0gtZag=": "342652000000", - "jm1-vDeZ1uFsM6o7Y0bhP14n7vnQdV9_z3F3dqLo88Y=": "383848000000", - "jmbsg0dK_4_J_-GKelAHi55N0YYxIdW6h-xLu9tgPnI=": "384370000000", - "jmfiFQZvmojpFzl3-1wA8MFUZvMvqE3nkzOxSbdoRlM=": "407609000000", - "jnA0CKsX7nBJ74fY3JuRhsuf3Fc_Q0OuvyG3iXBKOFM=": "414092000000", - "jnOxKL-YQFVqZWYEoMaF1g0YKxFob0Inkh3V8CS0w_I=": "982065000000", - "jnTGA8QGy8G9aO1LcoR4dCOWgaZC_CD8UvBgXlF6Mac=": "3498394000000", - "jnq5s6n8F22IBllsKB17XdDj4TAaHV5WbBkmVmQ-fJk=": "384615000000", - "jo-74AYtEGIjHI099tG95RSAhXC52TGcKBvmpc-gRRI=": "378717000000", - "jo0cjwKk1JtmBwjiTsRg3wm6puk0YJOWINNDXAQCYCg=": "3923424000000", - "joMVrjxzk1JQYWoqd7vojG75QBBzpdtNkRioO2XYwIc=": "565199000000", - "joRrI4A0I0wA26xgRTNJSjbOBMsO22DVQfXvZtDsFFM=": "635529000000", - "joUgPVNAvNd9DYwg6O3BZNTnNKKOWU2g4TX3vpoOYKM=": "5464090000000", - "jobZUT70CBJrSBAkFVWHJZl5Ko4ngwp9gduoNQtdJhE=": "446947000000", - "jopjP9nwC8Pme25q1xOXyZxsGUhRqxedHk2UOshoJhc=": "769230000000", - "jpGB0K-bvNik6LZpuSmd5zjl-Hd1FgAe6dB_V9e5src=": "762905000000", - "jpNcxv4ugG_l55sSvTF1B7azZjcl0eaV3PzwZGGNEoU=": "4731808000000", - "jphXKbT3QT-uvkNJ9Fbclvue2fP1ykfF1J8STveXZqQ=": "3283811000000", - "jpyZd5h1UeLYlDhVoigJd9PsswyJ8VpZ2sR4WVkZZzg=": "22729454000000", - "jqc-YpxS-ddLELyqu1LINDrnbIVVXjS5umBtYd8xtLM=": "499999000000", - "jrFUxlY-mu4SLRt2abOmGAIKrPCFdpJSlnbeNAxONQY=": "2889028000000", - "jrJv08b_KGMKdOA4YQVFEY_Om5pN9XVfoN7AowXiQgs=": "480769000000", - "jrjLmtrzYuWtC-FKFWhBfeEpl-6kvIENY15Dt8UeK5o=": "485340000000", - "js0sZZDDjNBGpGn2rxO6qebBnDIEpQLWaF0i9WOo1mA=": "3855074000000", - "js1s9HtvDLU7o4b0ORk-vNpOgfUGLqlicfMTdwMVEHM=": "1504838000000", - "jsFskUABbzbt1TRvXk5UPSjPLEhxugM0NpM-fIjvoMY=": "767992000000", - "jsGHQ0ugFzCKzX_8ro8n0U4yUkeKjY68WtaF1CgUR4M=": "769144000000", - "jsGjs-7xMFUH6htSyvKnCE-B1QYyZxmX7v1e6wI2mD4=": "384615000000", - "jsISsxt11j-Abbz5USkPATVqsXoifVESNtdbj8Vk8IM=": "20937335000000", - "jsMMK8cVUeqjMyuTVJ5-xUNfH8CJTgoX-dlO7vEfKhQ=": "769230000000", - "jsPcigJOOIBUsCOKvdPOQvx90ZC2X_F3G5LTPugkLKE=": "460976000000", - "jsQBQoE1oW1UJDT_LjTiWGc05oNtl1K1jnzlq2Nmxss=": "411085000000", - "jsSQtQHuV7_--teJoj4xfvbcFGgXro_Al1v3L7aw7CA=": "467654000000", - "jsVG_9EVAly6gKkjNatZDpKSDr8nLX6RY9uFywLQCn8=": "382899000000", - "js_D3eH-ZQz2UObJ6W1xwV5h2GTgfsKopmK835vciNc=": "6699951000000", - "jt4yIyR1QfsCkeEF_Vga1EecFBPxOZgPvYuxo0lydsk=": "459420000000", - "jtLR5LRFCZVwKw49-VVed-CycfdI3e0Ay4_LfD072b0=": "1923076000000", - "jtlwEEO8HO4fR8nKcg0ktlgDchsSSYmvDq69nWmlszU=": "514382000000", - "ju_Vw9epMKVmLye9FxOnMguwRKjyHq-F9VnHxBPpxi4=": "470143000000", - "jumIhQJcPOHd69KFQTBvozu8xRs3d7Bh8wI6HfsstzQ=": "479574000000", - "juw1AVkr9o7zU2Fl3TVEH0taTA6dlk_RtnpCi8UGwo4=": "1149292000000", - "juy15jX0P3IRJ9e1KPuE8nGx7RNGzOCNZDYZk4f-LeM=": "384615000000", - "jvVSr8EslzkPPSV5LTa_SOmf9INjD0Qj2b_QZuEyM5I=": "385505000000", - "jvl44OF-zdN2ogRlLR7eVM2rg61MR4srxz1l9cFutI0=": "391797000000", - "jw-PrJwwVo9csOq1QxSS9Ap-pCSsVBsfP88oiwvW8LY=": "425636000000", - "jwCudwqMiFcefXyM4UQkv26qMR_Z-teGIlEt_iMyPRw=": "385505000000", - "jxIov4mnGAwPeovemhpSgzMwJzmh-Lc0jwshA9mbfyk=": "1366800000000", - "jxadAmaS21d966gUd6GIzMc3S5HbZ1HKsA5kRTkaopU=": "908511000000", - "jyl-hxu5ZXj4Z_wZYewNnhLJGODHy2_caLWFlBczkVY=": "459850000000", - "jyuZk50wRB8tNf7rPnlm36Lwx9VwtIU9KL3tS1vR2JU=": "3284615000000", - "jzARdNzjmm20E-8b4Xcugc4duLibqOKopZUd0BRLT7E=": "385211000000", - "jzSyxXKXZz-s4n9dAZVmpF80omz3fFZry-afeywDCqs=": "2478666000000", - "jzsW2a5fWvsYVU0Eq4F2Bxw6-Yc7r8_2GV1HE96FecA=": "1927529000000", - "k-5RWKBY8AupFBZoe4orHVLP1e9ssCBuiJtEuDNoc0g=": "1923076000000", - "k-E7-sybN5nyp4NPiXbdVOZvRN1MJYryZMHi8c_opdw=": "416673000000", - "k-ISNF7OL5aKebXEV2SoULfPvoCAigcNxJhnl2EmHeg=": "766000000000", - "k-SWwmW9Iwzjj8XzE99RQfgvxH45BdxUlI-PQdWefBE=": "385136000000", - "k-j9l-SgohW0I5fHh5N79vE0frN_DD6IA0OvjVEut5o=": "578409000000", - "k-nVqoIevCq0Ax3ZrickEyS5quFEU1xLK7MsZpT2boc=": "384635000000", - "k0INK7dDiLSG3T9HNvR0IB4_lZIm_WzWD9eD5ds2Ecc=": "383810000000", - "k0MrLscAjtVUGPqCuHWWCrBywx-TWy3VQ8SmZqnQr7Q=": "4891849000000", - "k0R6DK_kw6jEsqJhNQmBHKSXV3ckRJ0FDLUn162WQp4=": "1923076000000", - "k0wUnigl3UiH4FjU0PmRjO55TQMFU26uSYdmGGipD0s=": "423370000000", - "k1XOnaeUffhIeZ52fjvYSevJen3pgeOhiUiuIH9Sd7U=": "457174000000", - "k1cTR0tbLgikjXxf78slqvlKzBn_GxwHqqyYc1OF_r4=": "384128000000", - "k21xPuGgPOYW1tSrLpp6V4lIRdp5_uTknx3E4QKx3Y8=": "451381000000", - "k2GNiG9jK3RTjcAFq_3tbj1vcqaMIHR0ndSnmedpgz8=": "3405325000000", - "k2Gd2zFrk6bpGrWYxkM2zWSDvbjrkok1q6gtBp0JMvg=": "385492000000", - "k2Kzda1u3NDPTO3-pqiKQdCFaqm-dW32TTmaZ60WXMg=": "3643426000000", - "k2uAG27slUPJNDCabeHLbZbh2Fy7H_u3RX2NJBvSUc0=": "385505000000", - "k2yTA5uilLuaJLlz13aEpsyJItMQPip68WN67g0ewHs=": "384615000000", - "k3JzRNpPlXfNGd4vANZkEPP_VKWNoleI5bjoNhxwtlc=": "6224837000000", - "k3SXviDslEJub4IDak-P0GeeVL-ZSKXVnQZlEPJLtPc=": "3360792000000", - "k3jCjsMII8m-nO0qx2JtwZuBNdJvQBlj5CFyXHS_v9s=": "423368000000", - "k4FMO1F4dOzrYTuWWDc77F2_yp0uj2KlfEfIhRs7kcE=": "416666000000", - "k4uxCZ-ePuJcICsXKy2A_QqxrBfbteD_riE9blzOpdY=": "472496000000", - "k54QPaNmcLfOFI-9Ml1aCH30uvCtT43MsZm-PS7ZCL4=": "393573000000", - "k5SXEtWGgwK9mUtC4ZsNmI4APxaftBUhkj2RuW1d8L0=": "1560955000000", - "k5UKmM2CxpAWsxUwhudLfcmAAskoH-pAXj0BA2vsJlY=": "1128143000000", - "k5YbWCXv6N1W_yRdvFtkRxB8TIg8Uhf0C4DuMJwOAfU=": "389799000000", - "k5kCSYtFbERDEObFJFUqTEy2ImTnnPbEV9m5svmTm3o=": "4022018000000", - "k5xGRl2KHtONIymqSHLmCuPoIz4H2LShjO7sbmgf8y8=": "1153864000000", - "k61u-dfksXBRlQx5a1Esvjo58XTEShd8VYyOHrdcYdo=": "451869000000", - "k63TKXs_RRtLiqgN3rNrTHCx8DPTaQUoWZuwaGJI6zg=": "2083333000000", - "k6Gv_PgdppxfzNBT1lkMV-jnIIyzJok0d6_sXXJeBbY=": "2470761000000", - "k6XthLw4EtvGz3ulYOtkHZUudZjc1T1isL5hBw8xBlY=": "510548000000", - "k7AL-FOu6OrTywEh_sjsLpGOQgl4AIC7Rq8BuqGVmgU=": "2064435000000", - "k7EFxAZRty8nVD7rscpP2z5hQUalA2XHp9LeogYnQQE=": "458901000000", - "k7E_tcqdpnDRL2PxnysskhmUntFgzLHWxBxKGhdKg8Q=": "463786000000", - "k7FXGC96L19qR2-ZoFDIpOUcrDUFtS7pgSHrHr7dvic=": "385644000000", - "k7NjlMQj8Su4rLN-RDF2Bvn08vYwL4_ziMvYPtFRw1c=": "462628000000", - "k7P0Ikn7-7AZzglonvMa0E9dvpgQ8x_EIq405l64hjo=": "902075000000", - "k7djA1UykUBO4uTZWzCfcUi9wsa9mOsQddnpLY8ZiK0=": "5769204000000", - "k7hbFe80ibJ2jntee28ay0vw8K6EXsv2PSmad8xA5ak=": "384615000000", - "k7lV3GFmQAogPYWCrGWtpN1LwCfeO9D-DX8Xe9DFCEk=": "411085000000", - "k8X368ujKBDdkAyLOqciQlcTlH7FDP6wz3Ep4hqHJ_U=": "411085000000", - "k8iV9OFVxJR_qpMOwjWY7E4ilX_vUTBDD9crcRxiK3w=": "21984855000000", - "k8pxUHyIVkjZKbKGMn0S-i1AX5barIR_VHSA7imyQ3U=": "465692000000", - "k9VnW3mhyvLdPl2PvZR6HMTM7F2nzTU4FG9W473v_2o=": "769230000000", - "k9djO2gn9kFWORK9AfbkiPhD7KtgrQHZyme3xHCl804=": "771450000000", - "k9k1PjCRGC82JVWYLVMs5JLJvj_dNELPgpt58VNVv3g=": "8247981000000", - "k9k214QywpJBx7uNHp0duE6N_ld5oNvbLFJj13fo1Gc=": "3839630000000", - "k9k5QGdb2a8pR-j3QEHtNf-eCCj8Vo-7O8F4Px9F3eg=": "1553090000000", - "kA-oQorePZUAVhaLXHs7cFkOxcQbJ4Uwi131AXavyS4=": "384615000000", - "kAGMMsMf6TxSoWkarn-BIfAN4rcRt4q5iCuP0vSfA2A=": "383454000000", - "kAiZS8ZSEtYrpnUvvr8t0-PafhAZMg-tdNwt1yhMUBo=": "384930000000", - "kB0eNh5ZxGqBYpMEA-bwSCsjznYqBNo9FrZpJ5hIGhE=": "377818000000", - "kCSKUbp5MN1-3XCE1qQgZZYar0yuHLaLIyZ92xTQhKc=": "446263000000", - "kDAf6UIKJoNx0o4tT-SKVlApDCwTlunZKnctEwKNkpw=": "384615000000", - "kDGz_CVTAQNkfx6KX0AuMpIunALB9tYuABBoyts3Zl0=": "407469000000", - "kDRCHCKvX79BAG82K271SMLTgI2vlEJgt_qvwiEWDH4=": "4654118000000", - "kElfoRt6396VqyD-o8o2lbfwWdiJG2u02J848YS159Q=": "1634615000000", - "kF2BxrqbGqdHLOhidN3zwfXa6vFb2aU-3dQ8h1Xm0xs=": "454545000000", - "kFI8Q7s1Z7hWeaLie8zGAY5nOjmT9Wz4nxhHm46tdFI=": "1233257000000", - "kFVVWEDyH77j8Wt5dWY6yOPeQJlP-VqEilpA9ex3dPg=": "2630297000000", - "kFhdWp8oi_UAIOeTBHBOxNmOiL-Y1xAX9g9pUR1xKGE=": "2496524000000", - "kG3g2bHPGbIhVELgtz8pPyKI_ECPUnrI4A-YiqOdjVA=": "917138000000", - "kG68IAq2PhFG39ZKS9txFtDNumQREnLTvb97zea3Ruo=": "4567182000000", - "kGDmsAhLFI_x1RAnZKr7M7tA5gZa_zBtgCnQuXjRo6s=": "1346135000000", - "kGKYO0QpPqouZCpEose0JbX_XaqQPa2naJs7qllv_3c=": "4145511000000", - "kHMPoS2tiJZtu5XoKY4h2p8HYiRY-MrnU78l8KHkg6w=": "377692000000", - "kICrJ7IuHIxdP8kZ96rUZOrqZaZd3t9avRE2tiOmCa8=": "1349235000000", - "kIYRHrykX-mVSOOdDn8tl4u0OX9xl1-sz5lfZH_bvsU=": "1157097000000", - "kIchqTKTL2APmQ_WFrvpZAjopHjC_jjWWEL6zb2BaXs=": "1923076000000", - "kJQS7gVUpJj1wNXu2IO2_ZG99XyZQcLq5_L8-N9Mm-s=": "929316000000", - "kK6q7QC_1LsKWZz8m3Go9JMC6dyLt4HtT2frO97BZpc=": "576725000000", - "kKGlZT1mmRnoOYZMAmgZPUGSN86HRREt9pgWPcylnj4=": "769230000000", - "kKc0oYEvAqexUlm3zEkAhAFPVYEaOcWOqbZO1rqwK9s=": "2645417000000", - "kKxAJTnf3Nbpt1R7fTdo1V209_WEyNp1aGIKXmUSBzU=": "2055429000000", - "kL536XzPQeek8DH7sDeb8k47bAeVeF67rALmEbWPtgA=": "385505000000", - "kL5NQQxPVYZtfLb6wU1ayyDrMF09VBZLPBOZpTbdCSg=": "499982000000", - "kLKQSC9odvgf_z6rM45dCTVBrOVSwxKU2bx6QB5juxw=": "2268104000000", - "kLjtsdVB-oYR0g5OhKn15hud2eAqYkT1zxXY3eW-guM=": "1315545000000", - "kLntdWHwpBoMVUIxETTzPXyNHOmQIkA2uuz9A45H94I=": "3764833000000", - "kLuOmS53h24ELibfQLZGYB3xEu12iwbilODjx6Cepb4=": "568618000000", - "kMDNdVkkGWl8OrWvSorFTR9HMDvdnO7HZzE9B0xD9fE=": "446725000000", - "kMDOCGFmE8r_aAv3BTbEYTbARZuBJpzBSww5REfCVrg=": "1874111000000", - "kMIgyPhCy_u6WtgW1uf_5SI3VGfAeOi--zm_4bGYXcM=": "384201000000", - "kMNkPur_AkZu5QJpbwWcYAPeFVll4OMEoqJnq3zvOnU=": "384615000000", - "kMm16vrr5jnS-s7I9Y_cUrN_FqJXWfolwgZZRppVFjY=": "392602000000", - "kMo4xJltoYXAM_iohlP-Jyy0k8-0gTyaSEZ9esKbfVE=": "451692000000", - "kN6enEMcQdno4dFGpyi0_xzMWWzMgF5sm7GNNK8ZLk4=": "603076000000", - "kNCnzhkz2aUCiUA7itF9rNTQWihYpUdXqdHr6fkx5jc=": "387561000000", - "kNHpzkqxmyNLfJ7_Kqw6j3n-7KQVv3YLf22cm4Fp-oc=": "393464000000", - "kNdRA4WGJnaBwMDUpECrba-NWffkobfg3LcEVuEp7so=": "1565026000000", - "kP5NANK7gecFZAmIKkxpO9LWKUFlzd11Vm_SO9IbifM=": "399090000000", - "kPFV7dQ0G3r5RaFKzeuhfMsfzXnTeU1DKggXrW9oPA4=": "59999882000000", - "kPIP-JTYJqey2e3wl8cFw2H_VJOTnWlQOKGW9K2jHI8=": "411085000000", - "kPMGZS9niOQoWWD9m0mwqSLA0ePd3_BTE3ambYz48Eo=": "25814549000000", - "kPSf5Xq9AsvEgFFK1hqPbfZmLz0oAYUw72ftwNzyEes=": "400219000000", - "kQ0wBFmzZskU7C0z07Hoj6ph32XtgTlGABe7v3_jqYQ=": "384615000000", - "kQnCCiWMCxyzomABUmMyGIK1FXyGW2SPUl9EvXsUdzk=": "481155000000", - "kR-kNoB5Wws6qlVL7aonvyYhqfmMg9uPaPITTPpCZlw=": "589958000000", - "kRCMRne5c_obPmkU7nR3XAnygqxATaQl1KSj64G0EUM=": "384615000000", - "kRp9YMAyLSa1-tvqWTlxB9sdJUgghd1mSEDswA6Il7o=": "383024000000", - "kS8D-Jk2yGLKWW-sTmihSfeZ6pzw89HyruRJJiUI9so=": "2688818000000", - "kS9k7NP3SPVZlU1AVa5hmJBDQwMElk042rgDYeSo8rY=": "1126941000000", - "kSbIqKhOggzstvkHEmCKsWQFbQ123AqHVvSxGun6zVk=": "464300000000", - "kSvZvqvh8Tdi5Gx_aWzjkokqo3dsISrUjID-hdWxzuo=": "459483000000", - "kTI4zzg6NgDTNL7NRhn1Tn2lZQTwo7WBz707LvdcF4I=": "458448000000", - "kTJvteAJw0jkAPEkzeIZ5JPRK6mAyXJ2xO4CbaY_xHY=": "454445000000", - "kTPg3MnDMlwkJn_QRuMZYRLaJhZ_2Us1QKvB_FmSWUU=": "459633000000", - "kTQotLDFzFC3Lu2Ls2foSfOWHb-TeXkQ4RgK6j3hQMw=": "1538461000000", - "kTZtN52BPGbTwGJn41c-gR9AMn1rW9Zbq5fZiK7idwU=": "912391000000", - "kTx_kDsfnESgUcYByDBcCoteEIdAaVWANahXoutSPxo=": "1057318000000", - "kU5sGPI4y6f5kZuc5Dy9OuGWQ81wywG2RS1fK9_ae78=": "378727000000", - "kUK65rPX-zNHwsvuBEuyR0AmXdCZXMVtxzv01dtF2ec=": "382394000000", - "kUd9uWha4XC-eBK6G22WFNNFI8uzvENHMp-0xbLJVlE=": "384463000000", - "kUdiFBVCASBmolk1ehp-cxSW0Ww3N2iLa-b_77wMZFY=": "445866000000", - "kV8OBtZsQKtxlYmZQUG6pniSwMSCVqgNQZfkWpbLtZA=": "2117587000000", - "kV99Bun9q3dn-f4Mi7ikiThQiX-OKtHXSjP3TwFIzLc=": "417144000000", - "kVCfdeYnbyv2j9PS59sx4cslS0zZP5LhXKUvFnXdC-E=": "833333000000", - "kVGWfXwm2P2ZWs4ZZL-ja2qDt0raSYnk2_Wu8rCBN-E=": "1309889000000", - "kVIHQ2h0p0JnrLn4QcXAiIFZrvXszKdltU9Vf9CAWQU=": "384007000000", - "kVMfek9zChdkJiP5jJGvh5S1wEQPab7ijQQVlkm2rBA=": "463604000000", - "kVXa-fwvLSN6D38W__wJGz7emAWeSiMHOQpDVZ6exfQ=": "826822000000", - "kW6pfPmyRSDvWk-fo0tV3h0EhxefXl8ug8X932vc1F0=": "1510326000000", - "kWPmRYBGRZcrvXu3DWu6ofhmSoq8o1NKqaCiopEUomg=": "576923000000", - "kWv3FSd-d_gb3YEUr6aYEg6SHZd8BdCdTr17ktfZdTo=": "448457000000", - "kX642aMaJD4P55wwKrQNZYbX1MF9W7noJvLCbKuSKB0=": "1076547000000", - "kXCoxDcoKLoPQJ4wZiu3SmhY2LcE2QJH_kYSjvr3k1M=": "385023000000", - "kXTKuTtrzr_w9GI-nv-KHMDjg_khw0MTTXfx-H5Iz14=": "452141000000", - "kXsStJ-Fgkx8xKvisvlfBTo04TA3KeKmLR8QXzXYv_Y=": "1156522000000", - "kXuHzc_D0hrWB8L1zdAw24YoBEa06l0GreqhnBumoM4=": "390053000000", - "kYA0ZrJTo9a9Vm6F92M2GU2Kp9_Rq7zu4syXjCliirU=": "452702000000", - "kYKsQYUek_oWgMjq2fczHWl1l8u_keM4lVRapuhIp8Y=": "11456160000000", - "kYZVcug-fWAmta-2Y-UTKQaDS1ytsxwzQno8S1hZWXw=": "2492381000000", - "kYcHjUhjC-IfYkQFCi9E4oL6bAm3HZyYLtmLHM61Go8=": "415304000000", - "kYvbrRpiyAqUDvllfb7WKSbXekdsZWckdEdRSVx3Jvc=": "384467000000", - "kZFCWCkLSIeZljkNTTwklLmHvyIQvijvJ5A52QP6UiI=": "11177388000000", - "kZguKcGCsau2Av-au30aNj-MmAh77AzAal5-5sVbP_Q=": "456296000000", - "kZiEBik6NnwPte74-utwcCpFmT5SOMu0PVkqatr4ZL0=": "469410000000", - "kZwizWuecsfjjmgjJFFET2c-MXuwC8SXOIDBXl3zAOU=": "4545454000000", - "k_7WWRkHQ9ljZ8aC5SmsyvmmXKGcs0OpnVLrYLOhXv8=": "1338461000000", - "kaZYyKE3kwlwIkVmDGKjScrEsSpYLMvdWOviVHo-9bE=": "564312000000", - "kaaTDOh6z8VCqTVdJZjMw8rEz6qAcbeANroxDpixHGI=": "941657000000", - "kaeyivdFUNe36Ks4v-uMFml7qU6OyDu8cW_Nv3IAcNw=": "12504173000000", - "kb0DlIo6lOxeoi-xhe-o9V6KB8pNALSpOd9FI2yCAUM=": "454545000000", - "kb0V4yScq-4llmFPvwwHTrUyFZ0EGRXeUsnDB3TmYtg=": "769406000000", - "kb8j-VsmvRagXVUztzeLhXdsSq5nvhkjzmyQtLE1oZs=": "454081000000", - "kbrHRa9jOzc7gZeum4gjFGGd7QcPhILC_fBqT-gTiAM=": "895307000000", - "kc6KP649yGRt2c41kEgi7jkUgStH4iRHCZOifkmRPU0=": "3846153000000", - "kc8s_a1z2pHm_smXBhBhaLgFjLYu8pmHXvhSFrwg4yQ=": "1563737000000", - "kcC_7IceNHQN_zuHlzrjdtU9ojsC1KqMqROpvsAdfUM=": "6622434000000", - "kcqHEhEKBQVGex3Vk6XcP0i-cdywwSOt0NAeWRv5cxk=": "2499999000000", - "kcrOGpZLx92W1y1VPPdj_iFTYkNuBTbaXBlm6hxBgY0=": "376909000000", - "kd83pjiS8zDl1Teh7SdODm40JBv4nifliYEZsjPcsVE=": "1498560000000", - "kdEoXeTFsQ8Igqt7haev50PfFuFmd0O8iC2DqX9SPR8=": "636359000000", - "kdJm5BVsYZJVBujaPjTj9-Yf2tZk508vjPuRw1SxnnM=": "384615000000", - "kd_-YQkfqkuf8CZpSRi-fOPCzzw_figV9GCrs4YQHTo=": "384615000000", - "kdjCCcghx7uKGUDA2auOwdoJDGDmP1M3btJWkV1CTcI=": "384930000000", - "kdjj8frivBHGnLCpY_tCTiqGzzEQnnPRenXXqjkYffk=": "827107000000", - "keMk-4lYFj07VHBdKupkY7_jy_7SDyGBd8bQI4s3wWQ=": "413329000000", - "keVICKCgzGdg6teIXwlHrUDC3QrwmH5dVd9OwYhsJAw=": "3854604000000", - "kef87pl4M_9TeGlLXfPsrGWkY9y9zYQT-VvGppmVOcw=": "416666000000", - "kesmdlkDO-bVPEzva-fI4yXNkonDz3y6SapWPfQGPrs=": "3786118000000", - "kf7HdnYQtOJA6u_7haiatnYslvNGik7VLdtGfG62KBQ=": "456031000000", - "kfGE2zxWfPENXJm9-ApQ2WeEfqS4qw1IoQBqW9MvWNc=": "834651000000", - "kfWnf3V8r3AvXdvVrYp9AQb4NgYlLCio6R_j40XTFRY=": "768095000000", - "kfXxelKEB-OLy20AxNJrBTBMFoXaTsxfWeMxRPNCgfo=": "462146000000", - "kgEfFGS9e_9REzcZ6JDtlqaaNYqcssE6ahlT6yZBukQ=": "769230000000", - "kgWhDAcPkG_9oMuosp5llgudS0S7VP-jTOhTelo3shc=": "769230000000", - "kh-XQhe6n9LKmQ7nmKZDzGZ11dGfbrB0u7iqai5JQGU=": "1156517000000", - "khBI8HzTexTL6GLdUa23xNcUp-3mI1gNcV3ygwjWCDg=": "1250021000000", - "khosdJxYLzcQOQw2W8Px3C6_W7yPIolFu0nI-Lh2dNA=": "384644000000", - "kiHfJbpTiE1BUehqmyOxQ1qtm1N-h33ft4e4VrhcG7Y=": "574999000000", - "kiTBkqaW_H_PEZDNWKAqAEkbKd-3ca4vxCvBJDCV-HA=": "416965000000", - "kijgaU1PNVaHsiOHSIZ33zokBCITN5brzxeo-ux_Vgw=": "451703000000", - "kixZnNEkM5GcCkR_6QVQvvz4fCMiZdfJ_BAuCrMFOe8=": "464539000000", - "kk4AvFyj_mgMgPcFRf95TJk-pP0TtxEHYBeeYzgYLSs=": "573591000000", - "kk8SKbESXi8PGmlbcevMrAKDYmP3FH4D7WWdJWRZAD0=": "452039000000", - "kkOGAQREhVBsGvV1Ucu_MZ1PQ7X9mqZtDRoMmUCOw50=": "1153846000000", - "kkjbtrsm8X780Wu5l2DIfCVfdsro1rM69kRXydNBJ2Y=": "416541000000", - "klYGkszPhEnF0_v-WgQIp-e84kqRUTPlcYv_Sm6I-iQ=": "1504502000000", - "klb0QP7ooi5F040PBaBncoagvxnz8wxg7dFP37y1YC8=": "453122000000", - "kluOAlsbiS6rQya4pbB_XTa3VGQppBAyLmXWAXsBQhw=": "12491437000000", - "kmBkvzgP_LW5qlgNB8zvmrwVvxsjFlv-HHvJtOyHlOU=": "1585715000000", - "kmQpaV1eJbRGyw-AbZnOxEodZV5nFRA797_2QeHsHdk=": "1662156000000", - "kmyeBNeBvxbtjM0QN9bA18WCfvpcXTsmupu0UJgsvRQ=": "4147755000000", - "kofylcPm0KHn_xxGduUUoa4ogUnCTQxFxbAE8eIXo9E=": "455600000000", - "kolvmb_w2MFBfCpnYKyNPVS5ugdLcxuuVwSEOwQHOeE=": "384615000000", - "kpINp7-iBF5Y5yN31vAQkZCtEwXvu2MEmVR35WvgiIw=": "753599000000", - "kpdMKEcGlUbv3LbrLTwo3W4IKD-yIoS84admo6Nmg0Q=": "2253834000000", - "kpdoIbOvD1N8sRcHSLygrnh_JvU5trkGhoMUJs7Eg2Q=": "2074563000000", - "kplTNgbF94asm6u-FPxR8bmT83BdsLsDowUOBQ-nTyM=": "460608000000", - "kpoNc1q-AWJpVjisn5jEqOaNuQnaYjgWRfqlmC3jvL8=": "738915000000", - "kppwkHZLklCGArHrX8v61ZZyQ2Lhz1kfad8IdLMeHI8=": "379260000000", - "kpsmuDx4oaRwAjL3JXZ0fU0iWF5uOFmI7Hw7VFewkx4=": "1632420000000", - "kqAuvS4fz8JX_3T4fRPnNP9PO7zpPhPbmNwLLMinik4=": "460816000000", - "kqB8s0B_mLfwz7dL-jFjFuT2dmWBFdrkt-xwPL8h2DQ=": "417682000000", - "kqHGRR71wCGOS0ZuiY_n9pUp-D0hQejAnSHIicLVDJk=": "2064715000000", - "kqK810nlZ0OsizXHxeP70nGX8MtVg5LeouWxeUGPRmA=": "412006000000", - "kqOqzd0JtQ7YFTlNHHboTVRv8huSUxZ17ZFrbi1uTzA=": "377449000000", - "kqRhsHDtTTHTGwV4xXFBCLvxube6mHF3XBY8BrYMo1o=": "131406876000000", - "kr2oxspUNEWXWl4ni0BzAXHmsxY3pPhbTQMf22JixHY=": "783595000000", - "krLxGzD8S1WQQYXgTaaPI9MXTozWQwyzvx5DfVSKziQ=": "383195000000", - "krSPT-AwYq5n2de6hgNFN0NFRboWFj3iZWhyy6oTJEs=": "385278000000", - "kscEEAsT-dQbq6ttSkfqOx9lMsToIasd5UkFuKf8FKQ=": "458460000000", - "ktWk1Nj014HAadIJpVRKyVgoopWnISgl_Cp4QnvZpm4=": "502036000000", - "kt_dZF4gRRRXLNohzeiRmfKWf2XKwhuYr_k-IMldbvs=": "3299346000000", - "ktmWPIvtp5uuVBB2s_onlgfWOE7ho99xc_jp7SD3aoA=": "378460000000", - "ktpvab-QlLMyzZMAWJTRfQHuYPZLSxpkiiDx3QVvx48=": "416666000000", - "ktxjo_nXgBCww-HxXSa0iV3ajFMvEx6YZ0FcpjamAIQ=": "462146000000", - "ku2Ft4z_oalTjio5LTdc9Y_IELNxTGt9iMmVbj9ZN38=": "758520000000", - "kuPAOKC_tjmFdUt3GZ-RFqMXGElyZ6QIR4R__Qx_BLs=": "455600000000", - "kv_qQJ6kxnhfwAdODuv-WM0HB7nxT0WLnoNW_-q6g0w=": "453414000000", - "kvjOuIQpZnaPUy1B2kuEkY9bRbyq3VM2JEWIcPHU2Sk=": "384615000000", - "kvnlZPGGbXrS7QVTZv739O3025LeEudEoOGCuj8jYjw=": "411969000000", - "kvxHM2b_AQnSShGRbrFUg2WaOYxRG3qF39LuXt1etDc=": "962145000000", - "kw2yhhmVRi5tNW3PSIhP1tWVbEGqzoQ_Y24MicPUG2Q=": "394212000000", - "kwC80ZMcVBf7BiaC2uS3s26L18yI1_pr3r7l-W2ieF0=": "454676000000", - "kwDOaY-Pr407I5KtcY4o8aH6n0ZopVgGfrE19yUSdNI=": "1256161000000", - "kwPxl14TY0JOFL9g9FC96fF5wICuN8z9IdCQ594H3n8=": "454918000000", - "kyD5k4M1bFeCoty2IvBoBqqhvpTc5MS7g-yE08LggYE=": "1727387000000", - "ky_DED-MVFM5Q87L6P0Gk-aTyRz7xIm_Ml89R-ZwSOA=": "809727000000", - "kymEdAL93K_tO7bIBWTPXNDyLBgYHDob8iFq6_IDH3o=": "3511224000000", - "kzBh7OTiv8VK1eB-NNF6QaEJf-BzLmOYiqi5MJkuGC8=": "384615000000", - "kz_UD2BktdRrEPK8-vno7DXY2IOrGauzFy15zFFWv6U=": "906631000000", - "kzvcqX_PMbwHh2ak5xP7C6HrX2uk73tSW_WtAJ_rftk=": "454822000000", - "l-6hy2Vqgt-lp-W6hZJykWBlvB9yNse4UBY4DCpQzuM=": "1097648000000", - "l-nm-xqZHFF0lVAZAPXigX0y09jDWLmqOh2BkZWWORY=": "380240000000", - "l-p8jqYBdyBQeVyGRvxchHYU5AnljTgt9XhiDZMM9Rw=": "376914000000", - "l-zz4eDcvhdT-Q6K25ur37N-2eQIRh3aXe3W3GsQAus=": "380963000000", - "l0CegYkBXxd7rO0AZ-_TEoDgl-wxUQ-ZJw4TWRtf69I=": "807692000000", - "l0L6nyqLoqNv4ah0rW2zpJnegcYVKZEkB9VhjcLy7V4=": "756009000000", - "l1EWwhY69q-WeH1kDpxQVGG0EcsiviCX6AG55poO95A=": "33363135000000", - "l1Uyt7x62bX5RaEi9TwMv7Tuk3PBWuOHQwjVbAEn7FY=": "382536000000", - "l1ibb7LGwQxbSVFt0B3WoSkjUV6Vqh4w9LgUJunjAoM=": "1950355000000", - "l1mfieQJ3cSN1Ez2VLRn9LbjKuKj9_sY3xAuaJ1g8AU=": "4649411000000", - "l23wSB7lKHG-xSZMdPJvi1hasz8jZ8vOcJ2qzYMHEpE=": "384619000000", - "l2QgB5lsV8P2nZbTr0DB--rDyMPNh4NLl4qdBvPLksI=": "382706000000", - "l2s5Zy0MZs8bjo-qBsvviQGK6_x3-Wgy0DpOrLyKdIs=": "763544000000", - "l31yGbiPV-9DsgIVZH8Yf5nk1-BZuQX1j9szkitACbs=": "730769000000", - "l3W07TsY9v77I2yFsUEugBfIXFQ2AbE0TqJH9UK-PS8=": "992495000000", - "l3avGAPfal9l_xK4ZKW8jBo9JzywfdIQS9BpXDVqPLA=": "577623000000", - "l40FT0u4Xtftl8iY7fvmZmZpv8rDs_6ebVV2CqO3drA=": "1923076000000", - "l418qP0XBM8kv5pRzXbpPZSEEeo3Nigxj6gHe08FSiA=": "1932076000000", - "l4fVO0MTRZtplv-owBYjP8XKMKZkke3QlVshhGbNyZk=": "384615000000", - "l5CFb-2yo9idR_VliZo5FhQCYLh65g4XvG9_9UjGwo8=": "1022102000000", - "l5Ly-xi2-AGPnXQwQ3BK2QL0SG3gjgblHcGOsZ1y6r0=": "1893589000000", - "l5kqnTDTDx5zks1vbpXzztdaaoyy4JuRQfxX3ATLRhA=": "538461000000", - "l5oXH48MZb3VRteemPwnHrp7-mC1cwPkCidLyANNAR4=": "423009000000", - "l5vCdY75m03c_0jWDEvPLuCbQOYy4W23dtzKm8cK5mw=": "1604419000000", - "l6-NqdbYyLqHIxBa-WwiOpwJWlirz_E-3ZkrlV_CJWY=": "384615000000", - "l6arHKMuU1AKoLguA6ewQviqNCkXubWSwDEDsDNhATE=": "386570000000", - "l6lcMsgY1PHMorg7Y27q_HVM6IUA6zdW5rRbv8IgpOE=": "1957181000000", - "l7Gl1OsPbB0JgNZ3D_4o0TQ5trQZ_lHR1omZC-jRck0=": "917325000000", - "l8H2aT39c5TqkBHnnRLrXtOFhUksCtGBAOUJsedYzgI=": "384615000000", - "l8YoCXVMxIECKGVgSoqLw35AjqccDx1NPngkOYcMOCo=": "2304273000000", - "l9AfCitT8Om-L-K_Fapz3YDFVwb4rZrU-MGIFXObJ7k=": "769230000000", - "l9EOGMvmBpNwz9U2e1gi1czqQS9VY7vTbu1Xido4mwo=": "417946000000", - "l9QypYycWf88_ShCspmkHgDwGDchTYorsZUEZILCgJc=": "363321000000", - "l9kR6fTF6h8f9WJhmVEkzYIii2DOX4_3ZFrU_YU4dEk=": "756272000000", - "l9oEhbYetohfZGQaDFleL7nqEyOgH8Ylz8U52wHzVIg=": "690560000000", - "lAWjl_-u28-LeaetxqVNUqPr6h6cBOJcNBvWAO8EpmM=": "1153846000000", - "lB5K0Yp4J8qqK4PDhN5bmfIZIuXjidc033p8veCLPMg=": "452078000000", - "lBDv-C4rmmXKz-6vwexOPaiBhEn7ywlzDufYIDxHebo=": "1666779000000", - "lBLYvQpqqC2733k7bS-rDj0q7OeEz9pMW7cg7TdLgSg=": "874658000000", - "lBRM_bbkYPMV8EVhU_cBnBmkLqVAn25-LeXjN1Xxj8Q=": "422196000000", - "lBa8SQ5ZjWpTmmTE7u-sRB87AQHxKz5vRQAJnXPQCQk=": "1923076000000", - "lBjeZNDXYQVq1SAVVqqUR4tQAB7D9xhtBEflWjlQ_cg=": "424754000000", - "lC7vml0Qa8lZsALyMWCduN20lypUK9bgzquOAf1qPro=": "411085000000", - "lCRWtNQQW9fO4aiMym9NtIQZDfGgUJo21EnS3uRSuek=": "446263000000", - "lCS9xgVRIyoCRfC0CSXpcNolFdWyM8cOXD-R_5FLwcM=": "425251000000", - "lCd520cMb5mDbVNaqULWnCdF-p8Y_i8FH4_O2XyJuIM=": "761210000000", - "lCkzQOL4f_cwYTR4ZJXd-NdSzoWkasFNeUXw20cxvt4=": "384615000000", - "lD3qG9KhhMNo_ylDDfYa0wdNu-D13L61KLIpLdS_8uc=": "1920465000000", - "lDm4_fdFLfAUS-vpQgLbxBckZ8y7Xub7yJsakHZv83w=": "1248575000000", - "lDr4O_b50gUldzxcUl9JAMFo2VzyVZwYMaTcoyiYR_I=": "526112000000", - "lDuyqyOngdLXS1dd8s_fTk5MeKqnBnSSgolxeiOOh08=": "1923077000000", - "lE2i91WE34EVCrW87X-Lt8XXfXV3bHQvEEwbrCK6ruk=": "737416000000", - "lE5ZAqbckTsMDHLpptyvve4oAsC6-wQXFBZcb3SF4Eo=": "19943220000000", - "lEPxyIvxAkUKH9hN6FQdaMmz8dDqEyV3-NBchpIVDZc=": "576797000000", - "lEm-hLw5AxoT3sOovap_338CwNNpmvMS8NMoi4ADa5g=": "2100510000000", - "lEpzeryqM1LxRFBC73OCZcqsob1YtvsnOpAf841d7XY=": "458659000000", - "lF3eNfFxnAVDI9hDlzLPCsqPnYAw9zGuptrrSyxi_no=": "753674000000", - "lF5uVHSPplraCVJ3L20fR3e9oy6LdWsSxw71uSoB9Es=": "12499980000000", - "lFbTIv-dqsokHYPJh_KBI56eaFCKmedRp76kYlRjU_U=": "11152559000000", - "lFl3H2blNm0jHrpgZQ9D03bZLkofvCxy03M5uj8kcvI=": "1249999000000", - "lFuDzo2vh6UEMmrr-MmCvIbIqD8H3kTkT82oGkYjC3c=": "418144000000", - "lHLyypqb6umMTk2ubVitdwyFOq_g0gIeh9-osBj0r64=": "974536000000", - "lHbsZ4EWlJYkZOx5v4WdgzLLo6BObwTeBLn6yjCvDXE=": "385505000000", - "lIAq18xP5LYzboM-PKtRiQcm-0pOgzjv_qAOo6PBqFI=": "454859000000", - "lIOSSGN2vX-xBHkMifNEmZoRKDLXP-7W7Ki9sjrQ-nY=": "989645000000", - "lIShfPUywSW3r7lsxTmaCdeQh-B9Butf5517BwEhBSA=": "381802000000", - "lIivRuDqw-rv4y5BmR0uX0Na-SYwAGqIbra0fn1TcMQ=": "1590909000000", - "lJ47Fo1OEPWjr-MpazAtrfLt5pTeUlxwL-g7ZWGYZfw=": "1400084000000", - "lJGK3S4WIXOPflXEgjqZmI_z5ZWdCPSB4co_YjfESqs=": "468409000000", - "lJJmGpwNpAnbpH9HcMeQxbpKrXc9-GM8dyR6jW89zIs=": "1923076000000", - "lJNDwzJPbEXaRoJSAGfI8mkVsvIdk4fV6fNKpSlppU8=": "8217726000000", - "lJhpLvp13Q2EVYwaieep0NJksR41qkj1z1nMqoAewNI=": "1927547000000", - "lJlu-p3CsNnPE7y80HLFNATUGmmVqhDA9WiqifkuYMY=": "1818181000000", - "lK1O6Yz7O_E07K9VerQtxK_ac0QcX2gzFizcgnUd6kc=": "574033000000", - "lKFGVh5ol4_GmsLS508nhArN3YdNtsMjHt2xyT50u4I=": "386742000000", - "lKI1IlIKX8ij0Pd0UVTxYAyJ32TsDaryMcIFz2MMbHI=": "13612251000000", - "lKbO5dOS355pzspaeR3tPdmqtb4HbLZvxsjhdmNRMgc=": "417632000000", - "lKlUuD7j0X5HL9zKYrOotsf9Ugj1zxQRQV-SztswB-M=": "789200000000", - "lKsjdxj-Excd0K_J2nByD0mMVqGVx9ckfODngbXC_8o=": "389674000000", - "lL-VKA2FbNX2QKZ51yzRkYyKxRQ8DfbhB9IhaBEaXX8=": "938409000000", - "lL0cwK5TxCf-LzADL0XtLpX47wNXJa2aLeli-0xGr6U=": "380827000000", - "lL6jC2OyNR1hisF9Auk4LgtrCQ1rFndIrURtcvCO20M=": "782982000000", - "lLSGgo8CQ2VqhTT_U7vHk4u2AFcMyBUfiKg96k59rDg=": "411085000000", - "lLlxMCE06h80_Dhi0_FL8-QPTMNWgeIMagnveLKXL-8=": "928209000000", - "lMZK9hUYuGyfZwCHfx-HX2JVFxBg2WLzmVkHp6phTDE=": "1919579000000", - "lMb_CGjWL3HPR4DyE6mRwqgjhe6leTYQ_eU1JyYcSLw=": "1041666000000", - "lMjurq0i0FWlX2tfGpIPrcTr3jyHpUyQiZCx1Mu-VD4=": "458824000000", - "lMnMOWJK92rZsvkyBbphEeiQiA1AqCBbSBzdiK0zvhA=": "5808250000000", - "lN8x9PkGW7BC7uKuutPEjv0lfMbP7IDxHzMqtMhEeX0=": "369692000000", - "lNgyZfBqls_9zg82ZBCx2wLuIgwnhNUghGl9X1dbwIw=": "916606000000", - "lO5q04fPJqhT-lLfd1cqJ8BKE-Od5GiYjJKQmJ64VrA=": "4012039000000", - "lObmHirGeIksSpMXbD5TF-Uusb3Cvw0VBcyJA60QgKY=": "908900000000", - "lOgUyLYV1DUMalhHR9-_xa5CGu-0auzCUW2k5nXJw64=": "405574000000", - "lOy6wmM3VjEiKuJ1Efdx-i1mbVuzNBI2I1jmjWEoljs=": "384615000000", - "lP1bVmnxf0iX0hnN0jaUTX24DxdvHBiRtjaB31usQyU=": "387962000000", - "lP8fAFK-GOrjI91_M1m5LfGL_Ld-5Em8aQbHUoEfwOs=": "12534407000000", - "lQKDaIFeA5nMdtzVH8ri3Sd3kbg6TBw74nwpFwJI9-s=": "384615000000", - "lQiWWqpvBCrGN5VgWUfy7eh8b1QFhjwUwMzsdtzMO-Q=": "381358000000", - "lR5F2udAQ_tXQVmqPWRE9nBeyDoeZJR7DgXdTwqZSyI=": "385507000000", - "lRTIk7oIHN3451u7mJUNyh_zCbsyjBitrku_AwE7jP0=": "2914576000000", - "lRemjSEjNviTuMGJ_GXuVJL7YY317AAVptCMzsp3XT0=": "655115000000", - "lRfZKssadtVQBzjf0tlpMbnteW7LtbZKI8UcbuUGY9Y=": "386574000000", - "lSg23sGvzui1iqgxrX8WU88l82VbZs30uX9M3TJkL9w=": "418392000000", - "lSndEBKcA8HtGWJd0yE-VPtJ8OrmXF69BQqmHKbhbis=": "455600000000", - "lSs1AJAZdgtHZ8fyOZtVW1fIPDUMmvbh_Z7RtRwF9Nc=": "3072335000000", - "lSuPdNOC4wo3HFy86kaIv_fUV13XuSvofsm_SRDBbDo=": "3751654000000", - "lTbymFrDofrDurAMXQfCA9l-U2ikFGoPei7D-RpLmrk=": "380694000000", - "lU38M8Ud8ICR7r6ZlI0WH3C68RoFmbmmyNMGloWfHO0=": "464104000000", - "lULmLoHpp_XGuJ_p6kzjYkhpB1bnKN9ubfIGL8uN3RY=": "423100000000", - "lUWKz3ia9i6VMPgeYH1R2FGNjKe12IzHSHSuqP-g8kQ=": "381713000000", - "lUuUK26ZXN90ftSHzXy66pbFijYnjOG6pUKqLFl9PEg=": "2045419000000", - "lV3pWvZtAasPH3axGtoGREdlig3vHT7UI76Pw_UkeAM=": "848090000000", - "lVCBBBhb0ruEY7kNtr3U0p5RSEEyPQHl8sbxkEzyv8U=": "377733000000", - "lVa4GhtVapmbC9e20IVASlxRWdFpNvZ-1ttPiE-KyKM=": "380459000000", - "lVnfG23UylltJqVofuZ2Ny-l20RfrsJXUxP5XDS30Zo=": "457943000000", - "lW1g9I08Veoy1wsRGHAUE_J7U886drV_rgWOa3J3-Q0=": "418744000000", - "lWGK6QtSuSqI8OZUIbGDy9kRTlRq52opG_r4VWKpIVc=": "6807692000000", - "lWK4xL32OJFtC6LJIQp40iP1CnMlNSTHce594XjZFuw=": "913369000000", - "lWM1XhZcJ9Pr4QtgTHqIXHqBjjTfvt1wG3OnkoobhWQ=": "458333000000", - "lWQiy7xzGtOMFIbuNja8s9DbTnDVCOMO-2uK7lmAGrg=": "384615000000", - "lWShnMC3PJLgSUsg9-5vtcIjDXOxEOt35mwAC_fdOak=": "922769000000", - "lWclMOcAxFVA5GtsH0HNsdgCgIy4czh2tezLp-iX0pE=": "1169544000000", - "lWgQ3TJDPEmlF7EDkRBKLXE6zaSfwgWNy6CxUZHaR1M=": "11670991000000", - "lX8DmWI3lD8cWGuwgbCyqbAm-Y4PVr6vRY8VH4xHHXc=": "1350917000000", - "lXJ9R4EBFSTqs9QQBQaxLZ4TmZYsPC8XJ7zmtyi9hXc=": "4563165000000", - "lXWnu3oXgReTIMxeyGS9ssJYFvJYdsIY-ws6FVYcQu8=": "662654000000", - "lXeYI3vI0HO_cLo__MzsrMyiI8XGoQ7thNMmn2ToEnw=": "831345000000", - "lXlHRzyCAgUubWMSMYm87TyVJhnYSyiWT_fOSHtxZco=": "3845984000000", - "lYb81Un7MLS25IZ2wy7Ao0p7M1zyL9tJwurlpkD2qgg=": "381733000000", - "lYc7Qb3sDQJ1z6t0i6P2DElC94jlWynU0Zs7O0CMqYE=": "1068461000000", - "lZckaTXN_aWOf5JPE8BVEJRZLn3HGl-EKvBabNMipdQ=": "2260197000000", - "l_0WwkeGzUMRQ_woTDEbshAm7aWxGK6KTmYhtCxhjjs=": "3598284000000", - "l_FcriAgKvUr81EkJDsJgOTkTH0ENRd2zq1GfGE4XhY=": "769230000000", - "l_MeK5_Q5K5I_ia9fufOGUb6rkG1zRt7hWEI0UhxHKE=": "452053000000", - "l_O6v-ZpWXQ15yAfGYBy-vAliGGdkn6cWxkUWSaRgEk=": "502887000000", - "l_cFXcCNgrScOuzJDymCuBilzmjKA9yb4BAsAWiypuE=": "813489000000", - "l_zCzL-P-tYNxEMBYzhUOarGxOQn05DfI9qAk3ExqhU=": "460843000000", - "la17B0xW3AxeXAapAGs1zZCEnZ_99j1793atpi3SZ0w=": "417399000000", - "laA9dnXTfbNK7Jghl5oEHLWex1vthUax-1Yy-ukiWo8=": "405229000000", - "laJC8OKiMwfOI3bbNEEvjOXHzfRmoDdPAUkzsZuzp4o=": "1667418000000", - "laNGueXa4w0NKmKWow3SA7ZCEmcgqCKxTZhvE02fElo=": "385506000000", - "lakHLKe7Ocubbus-GkN-F0OgHbFqdnKFQ2dqjeJe9OQ=": "353346000000", - "lb0yxpACAU4Y4Y8W7tpMgOXJaPxLSxVEcTJP02I763s=": "1919526000000", - "lb1Ts88YBrPrqhSBKMyGTePpswmTAr-5zHt375mIH0E=": "467411000000", - "lb5DlfLUcf8sPq-Vyk72GU-h3Ao8me0EREqHMhfTzRE=": "454545000000", - "lcxfs4-jhm_2kMhXRRMHHJHU0YF_hyvrNtMJmczQoqk=": "461906000000", - "ldNEGI25UrkQnMABvAfFgv9t04CWOdYdc57y8SJ3c_Q=": "1135997000000", - "le-XesWn_dDWPqU_UOQt9m1tSx01BpfByHv0J75ToZs=": "466427000000", - "le0nKdP6PRzauxZ-6MBvhDkhaFrNUcAAnyUEyBNJrXE=": "1573078000000", - "leGuhvWCcuhEj1T9HM8n0tsgarSClFB-ntEPpapi6Fk=": "390915000000", - "leJg8GF5HSFj3RFTGvr9VS2I8zwIPgRo6HvzWmS6LtU=": "411658000000", - "lePSNm1iqGZo_lnSmhWpkgGoetD7AyGNY_JQ9EZ8VHg=": "837433000000", - "leYJ0H2lnZBrIPmlBG25w9BjM0VyggJmi4kOniErzgg=": "391132000000", - "le_uFUoxfv7kIvYbSFnXiIA75fLPhUojTngeGlvP2_g=": "458561000000", - "lfifVFhSSbJQJZJtv7MSMhGvQj2SVw4oUAM-2F3O3y0=": "384573000000", - "lfoFx0SzzcaGlOmBNSgShC-EngaPhweByDi9ycGXs7E=": "1925660000000", - "lg6kAukcRP8U1FwFtbKXkd7GAcXNYaluNPSSEIPbOfE=": "839774000000", - "lgBF5rNSQGNiG0YrhLPp1wQGYICORbWKUdHETHaAp40=": "19615384000000", - "lgKWSK5jiDrwJFTwTfwE0QQ6Qh-RFllrT7jzvLTrYFM=": "499999000000", - "lgS9L5kPUCjxLdeM33YsU8vbPRkF0L7qnyzYBXRhVsw=": "1023073000000", - "lgSyNOpMej9Qr31JQ8T0QfZazMhtxcW39A8TVMQW4r4=": "12426286000000", - "lgTGS2wgCmaAYjYqN8H3baB9UX_7MTtqrLAAGSCjcZA=": "390743000000", - "lgZSP2l2d18d_K7Q7TmRSg0_ahPjbIAPsakNH-VfoS8=": "46175710000000", - "lgeoybJx5oZeQW0AXIt2mhJOHErhzSAKcmxp6T0B5R0=": "1524230000000", - "lgnZYhm3VyjNDHOrrYhrtJ1dkk_YlyBURs5pPknQ-uc=": "386127000000", - "lhJ7QLT_Y0SJJwyP2ckDLrzAOa8FZ9RAKfZ9bclcOrk=": "455600000000", - "lhRgJWW02OvEo8Q0qOUAjuNpcArTVjDJUBB2O4PdYsw=": "3846593000000", - "lhSpUbRRhuxvI1sCnZ0YZh9AFIqJmfFDBx3JvUpCaxU=": "2281847000000", - "lhnemCSKTfPnu5NhFES9aOYHipQ6ODB2fu_ElI7xJlA=": "379187000000", - "liF6v3oWKsEV_G4Y9rtD6pN18xF0BaoYV1QnJNLYvEk=": "654771000000", - "liSus5PJ0cpcMMxxmnkS-9XGg8m_KawWpX4C5ZM5RTQ=": "396565000000", - "li_fWK3aZc7d8XcrUQLMVSN50pMyBxhXYwj7bSB_IAU=": "388584000000", - "lj-GUupjlC9fcCG_NeM-dmQaHC3O8nmgDLw3GS8U7K8=": "423368000000", - "ljUa7cwanKzkmtnovN7TrSqaUcwvwQL81vRdio1ws2U=": "2055429000000", - "ljh6Q9MMXJb6pfJQv8L4nAlMl64DQBpZBa1ccRtB5_0=": "764813000000", - "ljvIrhPVos0Z0Tjo4K_9zerSkPupIm5rV2344HkjZ8A=": "376160000000", - "ljweoY2tBb1FVlR4mGrAOnbv_mbJ1WUVk_lrfldsmis=": "386516000000", - "lkRPHX2eyf4rr1z9JuigSrZlNTOpRBdtJ4Hbk8N4RR8=": "385509000000", - "lkRn0yNCi-xoskAnCmK2uj9k9LUzmgREV45JX5xpLV4=": "833333000000", - "lkcaja6aiM78WIBCzflSUX1mpLMhcftb16NfchqCxYo=": "458272000000", - "lkhLZnegNVv4lTJWwj2Jsq2-kEczOGUkSidx-d7cjkQ=": "395499000000", - "lkhiZQkJrqHvDGW-qpFjdKezf4yhdxNByP8tMa7bcvg=": "2505718000000", - "lkl-f6HqlCnwoCfxy2QZtYPzlgGECRLqVLlfEPkCk6A=": "2871626000000", - "lkqH6fissefHP1Lok0R1tZybC_VKZZLRsdBUMQbph00=": "416673000000", - "lkyt9ukDWzt8AueOWU8yJO2tOldAp367iqH9kgqRDLg=": "381802000000", - "llbGA0lJC2cZHk17NOCCgnem4oTi3CZVet-vYl6epX0=": "421947000000", - "llgknX2H8hglIdzQ7GJv5busJb2p2vzhYLEmoQeZwZw=": "379260000000", - "llqU1WQWI9PQEAfgtaV5QbuugnY6beNDMCRc9ezZZ2A=": "421142000000", - "llwEHNpIcGgTVi_X0wYamXBuq0iUEIuVJ8zxKCyHNXg=": "2290833000000", - "lm5nDsjIKufrMKjlDyL4hFNaUtMYnTWqwfNrGEeOMZw=": "4595160000000", - "lmSnROyfI2dNMR5Q4-4RcLa92FvVFrjgrcSMMzvBvNU=": "2047011000000", - "lma1GUz3uONBWWPT0JYCIzXcRGEfEFJLidUugTO3QWo=": "405883000000", - "lmnzIVM7seeyxlO6BLq_TXID-bHTTsE4v3sV-LjkgXE=": "411085000000", - "lmt5_Jq6jNiZhkJCOwRqcbakmAScfiHgb3OCwRmC95k=": "384615000000", - "ln-F-S7cYpSzhvDWbjIflRHEcPfnEuQx5gJc6crDaQA=": "462839000000", - "ln5WlbEfCkaDJDL8iq4s6mYe0kFHq3pZoOXEtZavaoY=": "455014000000", - "lnIRh-_SIEvFV2PzCSclRjHzowSJPXRb92IIoD1IgUA=": "821478000000", - "lnM5Z-NRluj4DcYGrs3o72zsnu1sgOXSvXMHVj2J3dA=": "412097000000", - "lndtJBBxF6Tn8LbMXcYXk2mKzy_ERg8sKMyzI7PsCjc=": "1922298000000", - "lng9I6F63Y5ac8EeHwTOAlWs6T3_HxXe1QYCJejOnn4=": "636148000000", - "lniP4uBjyhKH-0l_fVzhdna2vkRKalERMxdaW5mS53s=": "384615000000", - "loMepoLpdmZGKCYvHgwjm7_R-OHFT5DKTu7KkuDZLK8=": "420229000000", - "loVKM0-z664rLYcloBO-FkWnbE1p2oaWkZhtK4tqd_w=": "908423000000", - "loc1Z53ZE4QFOV6XogzEALgjFvyu7oSnGDer-j4W_-I=": "3790675000000", - "loeWHVpW627tsEA6O400vHf9V2Wyr_6ohdo3OwzQ3eU=": "769948000000", - "lopKpgLa2KAlHnHWNthXLspH0relWQEAN3kzLksPLww=": "412863000000", - "losQml5sK-ocfzjXJtvJ9wM8JtiiN3YBmnFD1zvhjWk=": "1823779000000", - "lozILO--tKcmWPHm9qr7lLP7rg5zXBUPrfVoOdAzVcg=": "416666000000", - "lp6qyKsMcd6Y9I2M3CxzcdqfgA93SRmLmpos0DElKkA=": "1496282000000", - "lpNRsAIX_o1Jq2gPOYynDqNCQubZCco60p0aJLIB6fE=": "769230000000", - "lpiN91XoBSekQO_vmEfwtLohv5iJ4rnxbOAPYEleHj4=": "416541000000", - "lq1E4vwqFLdY0rGha7Krix0itmhWbGDB6Sg5EZKoP64=": "470069000000", - "lqFPfnV02rQuyohiYbYEwdgfaorJOqCdmwufHQXVs8c=": "833802000000", - "lqNv51aybfa3YyAuWamL1ie8B2HJiubX07Ma37xGfg0=": "462771000000", - "lqWTgZdWeTwyZlUX_9LgE8aoITNFg2xkjg-SZlDz9H0=": "504212000000", - "lqzlTiAUkKIqqEcr_vJpDXxfXbpk_MCUaLRE3PrWQ_g=": "2083333000000", - "lr-sET1l2kwk17NtgHlinU4kBHKMNwwGHEhfS843Jyc=": "769230000000", - "lrK7qRmRCqF8q-kjPsZ6CANR4s_IWkKGU8RZYxuNNOY=": "383334000000", - "lrNUmJN-XFl4aNGg075ECwOaNQ5iIukFUYjyHlrbNQk=": "1400084000000", - "lrPW3kIU4OEIEvFJ_1eOf4IhvdCfqji-8Crf9mfNQjM=": "416666000000", - "lsC1VZc7BclOlwfNh6IeNEQ0CIReJkBJ1txFOAMyhug=": "397332000000", - "lsCYC2OPq5j5WoRHLxEqxbhdXjG9cpuFEDoI447nDMI=": "384615000000", - "lsZzQwdRWz_jSA6rgy6rqIQ8p-omYWlJtZzPedehv7M=": "616234000000", - "lscydBE-wvV2PRotSgDokpY7qtuIteEnQ5Sq2Oy01fc=": "623247000000", - "lsp9kz_zgAb0uxE8e_GeM7pUiqlUzhUu-kOljwWEdC8=": "1153846000000", - "lsqWgX3QC6Cb9XfZbJOxwjKJZrpjopqmr50szdzCmaE=": "763096000000", - "lst1Y2mJsjnQdMCTqPlB5N576k3wCVWj-6ttBuMogjI=": "464564000000", - "lstVl8M9Fi9XOGsC9QJ1q1pZLynmtAWCSLtT4OGllqc=": "369226000000", - "lsu3cgJmB2HPszdLW7n1ey9dDCy1eDCgSvLUmdCHF5E=": "390975000000", - "ltgk7yTm9cVyTNC69AfQrn6Az9qIDKTcOfZ6wsTdPbE=": "458576000000", - "lu_WozHQvU9OYLCfb9Atcf0SE-OhFEmn1EaBs6s3Wew=": "4146001000000", - "lug42L-OXC2pzFPtHDVQyKApyFocmYGU_UvXPeD64xY=": "915384000000", - "luoeQvZkneljeZMZdjMtRtA3_JnxUWU2UpvitLHat4M=": "3855050000000", - "luuMp6VfJ_wwHSfK7zJHJxAT8mZ36O4EuiyU4I0vQMI=": "381802000000", - "lvMXmGsZwLSxJtDv9SRYKYq3jiECUtN85dhLJiy8fpo=": "461997000000", - "lvQzZ723xL2sbfspytOvvBma63K5BEZFiCFa_KxRe7w=": "764908000000", - "lwBxZTIerePRQCcWr480oCXpS3_lrzgl5qJnAqAnR38=": "4103819000000", - "lwi6xVTl7VyONh14GQsTeh5LfwgOhsbHMVCzc0XUa18=": "412158000000", - "lwulF_D0shnS4ZRMWKezlg0-pi8Dfpc6wf4KyP4yQUQ=": "472752000000", - "lxVCdliD0sEvpnzK02MfyOKcwQJptuDnrdA4uAyZjm4=": "501408000000", - "lxbpj8x7QxT6hjYL64jhWKbYQi2bm3D-jEnMlmxB3mo=": "457217000000", - "ly-XULXjv8HRFezWhewLH6_7tH7WgeXPUSqXuXobyoU=": "3846153000000", - "lyshBiEDISgekI0Iz2Y_rv80yUJAYI1zw40MSUIgkYA=": "384605000000", - "m-18WZ2Xgwx6GvZ96cp_yYINYmufIKyjLDoneUD8KYY=": "3818547000000", - "m-47c2F0zAR9wIz-PkSx_wSvxp_QB9MlFwaK9KaOLgU=": "1210755000000", - "m-JT-747_M9cM0Dvu0JONkP9Hhl9tLrcEuy-A6CQT1Y=": "512979000000", - "m-gBO6xSS0oQiZqLSs3jdhNKwg1YsaHFD2gN2t5J9cw=": "458900000000", - "m0FGN4YVdKAMUsU8dWQ_6ws8j0NK0OCmvhZptU_ndjU=": "769377000000", - "m1IineF4NHtVLO6EBoXwWtctrxkTa6H7qaju8Wbpz2c=": "384615000000", - "m1WVE4ImAmvFDicIP6paLtrIWDQMHfEgNvRbru_RAjs=": "783770000000", - "m1_NA6V-2WnL2HLU-W0vVvndf7NYrzVz4OPNcJXpqa8=": "406044000000", - "m22HbYZV2dGKFqOdHGrL1GsH4mjWBGmdS9wS8CZu-D8=": "2689707000000", - "m26Dp_H1pkslvo0A0ybqREa-yF9mNChht91VOnQQcJY=": "473692000000", - "m2MIpUqWMTQJwK9F4LnaNstGh4BjMy2L2GDHpsuCAPA=": "3846153000000", - "m2Qoa0hyrstX6gafnbTq6CAtT96sYo76-jx6HuEYbrM=": "771530000000", - "m2YPlDHuEOGU-4w9gKwsRLIps5535hf59qaapIoLtL4=": "2236541000000", - "m2cX_Nd6z4rqOGKI73oH1I4fcn6akAh7XwCAD2Ih2yU=": "787901000000", - "m2kntoXSwocPAwVD0S9fMaKeoNjVdUmBFFEKrLaOe_M=": "384940000000", - "m32DEub1pYACeTxatoB6Jq_ByACV3BATcgXy3se1rBM=": "415629000000", - "m35w-w31sXQINSsifX_SechxsfRjaVIpbKyOFji6EEw=": "3672993000000", - "m3F4grjeNm9sRm3GiB1W_28EJ_RG4xCF1iDoLoQll0o=": "823917000000", - "m3MA-J5MfCbVqUNjriX56JWWa9v5zN-Mvu8vasuHWFM=": "385510000000", - "m3Xs9-e92-c_-9Z1-uhh3OSq4z-C4Ry-em57MNKijvc=": "1511881000000", - "m3_QfTyr5OQJK-lZKyWxIAkrQ1g2eE6ewhsF6Ps2mJI=": "416666000000", - "m3ilYbM8RegDBxBF5_fCwzMbcVYkKEVyo7RajFPUDDA=": "383900000000", - "m46SskEqC2J6WTgtkL2yjcaiPnDP8I8lgDOFOLztqm4=": "833321000000", - "m47dIBXMuzFhhGiPWhgSj6LPUOkcK5WfFs7Evz69GiI=": "522085000000", - "m4CPqNTv0jNJah-05c3Q2pg3bL5Cu_LY9YUoezJN_hA=": "423370000000", - "m4N1XE_7QUdcxJb2-alW-yFXs0FL4nHKvTpclKER90s=": "1011286000000", - "m50K3IFgi9FgWA4U1LIoMZg5IFL1JHtV0niR6GxzTe8=": "2339165000000", - "m51cGbNXko5k2RxxgpOZ5ZIvOWzY09yjjIadlk6eOSc=": "341647000000", - "m56-14V8Q6KAsh4ER4fePvMfVumVRxSzOM88LtOXaso=": "378520000000", - "m5FZXqoM1BhV6E4PsbghaypA2ExVz_MKzL_FJ8JbEmE=": "2050546000000", - "m5LyYDGxWNVOJuSSx_B9beRk2mhHHqX00J18ZRD3pmk=": "384615000000", - "m5NjBaEQFfLvXVNd-r1U6YqZwPgMhnyxFSqI1IIFME0=": "460094000000", - "m5QtJ9RCJcxSCRZ6q1ZXIwr8CPvBmykxiQatAZ6sIGs=": "26089543000000", - "m5qn1t1-I1bXuPJ3uFujAvCcjrkB37Cc7cuct18aZLE=": "386004000000", - "m5qpXGXfEsU4MEU14Zbx_FcjfrXPyRSu_eXU-p04Htk=": "3275834000000", - "m5rZGd9Z-osb5bonc2ojSXBdhGgIrEorkhqCwjyWjik=": "1079388000000", - "m5yKz10HSjTfGC7ARvxfpopEYxiL03RaPRLHb6zdB5M=": "583285000000", - "m8TWzsrokqnJSJbxb4Cr2kSNETVJ3co6IpI8m3F3ZwE=": "416666000000", - "m8gSwimnejWbmQpUAEWyK_Te3LpCaB9WV_T4E4_8x5s=": "379203000000", - "m91KqK__EJUezCaTzysGO-flC1jJ9kW_uW4ACZFJJ9k=": "384073000000", - "m9Qh0TJzNMr8tV-xZpRGxPAzN_OzBQiPP0zNIzXECYs=": "416901000000", - "m9WW7WA7INuWjJlNQokxaPL_1hL2bnSfkSxYwQGENcI=": "378310000000", - "mAGF1CqpFmt-OysBPNoPMEm01EUL8HInsqroTD3efS8=": "451268000000", - "mAHi85xAJY0sjGeKZ0oPGdbAtRWt7giCGwSj8ElLymQ=": "1588075000000", - "mAZDVYX1Fj-L-RJCmIsnqOlWHgNyUBmF7j4DtFJw104=": "411085000000", - "mAfkIzj5c2mm8XXufMK9TcP5FKzOFcFmM-L72m0hgM4=": "1871600000000", - "mB11uO0N8FSlLfTtWcXPMyGclCHjFNyiZ_JRPntNfdU=": "937959000000", - "mB5tfDeGQt7RNwZccjM-Am73eaVwPnDIUpmPAwqcm9I=": "385509000000", - "mB9YtY9wBL02ul1nxJiL160emiy75X3v16clZquli00=": "843390000000", - "mBjvvKC11ghQMp-x2P2rx1ty-F0TgLbjPYtihfYRjss=": "473265000000", - "mBnISzw6JLP-JfCVt-BrEXnPbIVx866BBimeLK7QhH4=": "1814912000000", - "mCBucKU6C9EseH2t2Sh7xStjXwFYmnjji8G35QEgCY0=": "453516000000", - "mCCsQobTa-aFHPdSRpeuawYQPGUT4juTQRJyASfgGjQ=": "384615000000", - "mCf8LGCcLHxZWfuGw-pErCF_nht0S75uzNLl_JRLXcg=": "420557000000", - "mChmQMUUHymrhI2d6abD4W6QZVNfjRKj1tJg7aKdGF8=": "376106000000", - "mCxxEG2lxV893fQz9dp5lyw21EKRjsP_CxVfrffyz74=": "777293000000", - "mCzdG7fdy3XOL8PkJ75RQS3eLwqoNJHIq-IiditvuDk=": "488979000000", - "mD2E6LeS_J3SgMcvK25lP6ZBXmJJGfikpvpQ6GGTCpw=": "4199461000000", - "mDFML0qTYnhwu0DL8Xbftd3KZdwpkLLPe6s_W2I2BSs=": "454957000000", - "mDS7EIXO9bf_Svr60UmqfnKOD5t9o1prft2W_JhFTMg=": "1154089000000", - "mDcL59nrYfrUcyFqnnSsccarY3QppXtofSLUR8RRiTg=": "1801716000000", - "mEW7SrsoL4xNad3s4CdxLwEy6fqMhSC3TE-vdnK4ISo=": "2426784000000", - "mEnPiJH4EJrWc6jZAk8BtZcMCwzEq5ASo1sRLjieA-c=": "2686614000000", - "mEofn6670tdeI9VXjhz3KxtrhZc2rdnu2YjEu0MJvLc=": "384615000000", - "mFIs0gM-GXf8M9UKROAnPF-gyJWmi9r5KG6rYsIjdhI=": "7853878000000", - "mFNm4S9tf9sUQgZhOrfzb6M9h-Vjok-bavaBed-TovQ=": "4222380000000", - "mFbssXXocZ12E-G5TWyGRyK7L6qWl-PJe481CGdGdEE=": "403063000000", - "mG46pzHXa_mw8JAm6-IOO9B6tfDv7TtUHeLjDOyPEKQ=": "16284615000000", - "mGKbrqL3KzxEsqeJdOfN0i7zotxDb7vx8qXcfr-zVyE=": "549503000000", - "mGk-R1S2aOKnR2fcYiFhG6nHekvbzAdK1wz-SYDkNRE=": "2248931000000", - "mH2xrLYveZ-DjSvyE0f5qmr1M3PQhxoxbmEC8Ld4dDU=": "385507000000", - "mHXJ1KMjI0vAMk63yIMWS_LMIiWkRjU9fYhmYtT6e-Y=": "1599999000000", - "mHoJDhrGqrqqXx8nGwb9ZE1_34BI-fHJCLzgzVHkugk=": "385590000000", - "mHp-l5b1czZt30pfMfchdcn_qIuJo0UIxXgGHDn3Tqs=": "749999000000", - "mHsF-YpiARBiaZuXw40HMaoAoS07EC2YqfRfdYZ7ptw=": "385505000000", - "mI19GeAZhCPFKNY8Eq1WTs0_3Ow2N1U0lOAa8F2Em3M=": "460429000000", - "mIRCQ2syZ2yvIBYFmRQ-hdYqt8BM8pBUFdGaS5DAQ8I=": "769230000000", - "mIYsJrdnH0WScbsM2ROlQeVh_AzIB3VQ2s08vtfVKCI=": "7497594000000", - "mIfCUn9jCudYd71OzOrfXH00zb5EVDTc8G7326yJHP8=": "1432835000000", - "mIkTxkXqiMkzF12NR-uqRgKJ-nGbwpSUxcZ_aEO4rv4=": "767698000000", - "mJ9AgndSHo5G6pQWKs0gMjPUjJGj_cfx6bjmNZJkRrQ=": "416666000000", - "mJDMA79zpuSZQN0H_Ia5WLR31g5QN2RJrlLiPc3fFJU=": "356097000000", - "mJQdYSk1yPQH7g35jA52l0tWLNTEi7gwFansBjnb1LI=": "768094000000", - "mJhq8HxdKd91E45XHqYmf1CxXLaB2e8nQd27AohH92g=": "916402000000", - "mJq7keloXOfAqTd3LHXd84HLDwYa_4LOXBOTXpFoNmI=": "391797000000", - "mKH5wemJ94o5qg0T-TYpVmDxnSD3pxZA0zegrLaGyhY=": "405357000000", - "mL-LgJc2zvAqS4sX8I_jekHcz9Jm0oJ7vSQrRuBF52c=": "385509000000", - "mL1_hi_bZ4CZkUB6Y7jBRqf8RAdXMGmbFLf29xO0aZ4=": "576923000000", - "mLryScNSg0wIqH4pJ7GmtOjzevlrIgs3_Rz6bC4iUok=": "384615000000", - "mLs3wN9LD4ymo6h87V8qd3mV6q_kLGvivq95hqu8mfI=": "2083333000000", - "mMKN2YcGylVo_ZjdP6gFroIvNW5QuaRMRIad8FnP6i4=": "769230000000", - "mMZJ1hqO4ovUqCtEiZzT6WDEz6GKnzsXaRJLcEkA4gA=": "381839000000", - "mN3tseZbV_EMl39FlFNTfkx8DboOIo7TJDu5kM7QSqw=": "3747274000000", - "mNKa0gsMoObwP8oG6RiSF9HTYOwL4D8f82U8JwauoDY=": "1908842000000", - "mNqklwBEtNAZtnvqYLwKUBsdBFh5ZT-DgEb2yxugNrI=": "1923787000000", - "mOJ-P5oSN2kJxxDmdKDAU9bXl8eVhawm4BnEqphq4j0=": "403691000000", - "mOWpLlupRGBkq2uyKE_7q1fCNXgutdjlttMyb3f2osI=": "452533000000", - "mOe2b_st49f3aq4tp2I1NpsXDWREZn4zl4cRohkVE4U=": "764788000000", - "mOr6FPZmxIqhXvBydGHGu_dI3ZkDV-9ewbmrjcKlLbg=": "636269000000", - "mPDg3EK5pXUmLjnUhdoYqmlzYEZ9NE6-eb0mN1k6O5k=": "689563000000", - "mPLl2beT9Gt8RdeFbWjyGJpowHa_Ztw7f4XhpAoC86A=": "455600000000", - "mPN1xj3GbEjHmDAJ9o-0fEYyL99i6A0dy0lQCSmVINc=": "461144000000", - "mQMb54bD9UokI19LhSaZrHhov3rtUhvEP1y8-2JjQjY=": "385505000000", - "mQTL2Qjxrz2e79xeL0NuSbJGsIT3xSS_jQ52-9FzQww=": "687952000000", - "mQl7xDRCc4_6TVBSRZq_8zORqHmo0mugWy8YGzkJUjw=": "416652000000", - "mQmBHh0tz9vTtobpKa68mxbyEKVoJXyNeuOULS3yEkE=": "405846000000", - "mR6_l2fnqtG3pICx8YVDCaYdfc2pMOxK2a92OiXmlFk=": "3846153000000", - "mSJHv-PBhe2_Vy42IkJVvQKN9JpBRKx8DRx8Fc5IvOk=": "454445000000", - "mSo3jCIzrvc5WevACW_ty4dIOq_VcYKiQ8aYp_SHuMA=": "383148000000", - "mTNlA8JBHATxfkKC98l9YJfUk_9x3OJ76WO_fwvtQhM=": "529179000000", - "mTawaguepq5nU9slRhp6xSO-ra2NqDzeJeVaPFlN1aA=": "1144095000000", - "mTp0w5n011DQTlCS-QwSYx5OE-3UtvwQAzD_MLHiTlk=": "448226000000", - "mTryuzArR5mxxaFMUXiEFoa56wv4nIIGQbORHPPDoVY=": "452201000000", - "mU2oio2bpfoMWGMq97eFKmhE8rVNdTVdz1wnXIDhFPo=": "409546000000", - "mU2pPc-FFM1HqMUaAfh6n_OwXdQY4wJUrdUYgs9Akv8=": "391327000000", - "mU89a_G8CKtuZ6YigkwbUVgBTuaqNxnVMq0zJPeEE3o=": "385514000000", - "mU8fjAkGGZLwdn0xTO-lo1bN6exxpw7FUWB-kIddjYw=": "769230000000", - "mUD-mP3LKgbt8WdmYg0TxY11UNxLIOG92XZYdyQDggY=": "451898000000", - "mUY_p6EPE5RWF8ZhMJTznw5I0Cw8Bb5RhaDLbvaCRm4=": "4166812000000", - "mUcPkjy9pDMdXsmHpffxQV1n4QpXc0pMGfRfTf-HZJg=": "469404000000", - "mV1HSPJzlUxhGzTScsWO_Ma7ImCzkJjQ0CYTq-9gaXw=": "588911000000", - "mVIDfWmx1ZT2dC3Q_wAIZLuPgLh2IhvrRblwJGwtl_0=": "805082000000", - "mVvtj2RKdXIPYe3vC4g_OIrAc-K-sF0JMPG824fRY0Q=": "2756294000000", - "mW0SALbc3LtTeC-6zdvYe1pFumWwU5Sz93jvp0RwKTM=": "1889005000000", - "mW7jsg_RT8nPCT0suJD4iqHhQvBOemBLucVqQXVP8kw=": "4727509000000", - "mW9sKyWi3b6rcnKJCjEK0LgvzcMg0xPOT4rHToDvZ1A=": "2059114000000", - "mWbD7UgzunSCLCrcRzf8kJ87UJDOE1KRyBhzHVdb-K0=": "455600000000", - "mWbRBMlWe76Kc4QvVqaJxk1Exa2brEjHb0dR2SWjhKI=": "1331790000000", - "mX4WyArrWsAMv2ZiB9uoX_aWBWFnRvLSxrH7IkjkTuI=": "385123000000", - "mX4muZ-5S5RN-kM00YALudGrNTmEZAUaFdJphlfGPfg=": "564314000000", - "mY4iDqST0XEENStuHAmARb172WXaCNfBjjEXsFrNiIk=": "451692000000", - "mYQtWxyhfXEUA6OFE0RG_0HTm0KixlZI22O2-wcJi3Y=": "378006000000", - "mYddrhVfwmUmRINMla37OqRaG3nCRNRB8YV7ntDYMx0=": "656619000000", - "mYkd6Ft0lFiuvfJvq2U1m9CqZxNpbDjQKbNe3Q0wOkQ=": "1043831000000", - "mYpPnKHVYOejpNed6h9ezZKWcp_9DA2nFeb6gueGVVk=": "6637952000000", - "mYv1TnQLr5f_tKk3hm7NT85eEGxqerUuhYXq9CU-pco=": "1951354000000", - "mZ8dZVeB6hvMDVCvP0MXOIKZzgiHlL3cTNt3WZuIPT0=": "1156517000000", - "mZAN3mywAydrwGapMG_7dTqlbOBke6bvre9gEwT2y20=": "2925713000000", - "mZFfcglV5GWSzr3Czh6ONJDP3sc5mWhzckgLZrJen14=": "910115000000", - "mZZ0EMvQz31cYLbVPUr6KCqqeQtYb51k1yHzbJ3d_Ck=": "378310000000", - "m_CemrTZdfFgRJPfbD3w77gQIAPnUI1dN6iLOxpI8Po=": "769105000000", - "m_I4MjN8iEAt2Pdub25LkXYpS3mhCyVMla1bJv2SWsc=": "1157258000000", - "m_aycUWot5aaVWjUJqsdvfuXeGzFpes6iYcvbQTXej4=": "3322285000000", - "m_dAjr4fF1j0W9QEAhqRzefQDWuQmbIEfyJffBs7J1Y=": "820377000000", - "ma35NI3Xxw5-M4FRmgCKsPF464AZnPa5UqokdAzyyKE=": "471203000000", - "maMElOMSsIvPCMRdpnDJcuXiu0AIlWpbQfPoXqWET48=": "2021862000000", - "manV64y5J2-PVegaWw-lhW-nMtoai8eUnrAO4ioCojw=": "762930000000", - "mayXYaFLihS-vwU--6kF-a8YJ868EgjWYssltbcVscI=": "767693000000", - "mb5_5Jfw2feVGG6WfxVS3KEAKLh28p7IVyv-VNkD-JQ=": "384531000000", - "mbOKmMAslqbQb4m5UBGHHRvEsek8Y78RavEZ84VXUB0=": "454342000000", - "mbnoGif2yb6uPN_Fw1xcREU5sqm7yHmG4qsEy3BK4aY=": "455600000000", - "mbubnbLEaUFnqotZ7sLg7m4A1vcW5zw-T2TBjhB5cBw=": "4694039000000", - "mcn0rhMfLfyVneosRFwF-w81T7xnjlajNsLlkuJGvM0=": "1153846000000", - "mcrwiC50qEyKPfwYJl33Wde78ZYA5c3hktHCULDvqbI=": "4571675000000", - "mdOIXAMNAAZxCbePsbqTGV5IjE9Yktr7py1XGidRMy0=": "391005000000", - "md_2cPlyST-tiuORQjD-VWX8oXGwlktmmy1vvYC5Lbc=": "2062284000000", - "mdeiVPnc1LXpUFP3ZAsmKyNcLYK6Rx2uNP0WTmO14LQ=": "383241000000", - "mdnfBFudgYvkMrGTqOhHUMfjcVVnT75r8-U5OpqOOlk=": "1923076000000", - "mdtnpMQjGdlRMBAbXmpsLdE5xMHFmgRm9jFuYs-FOuk=": "768373000000", - "meGSD-O_IBkXjjaMhoA_ed8cd3L_aMvcTCal17sC_No=": "449698000000", - "meinkGOI726zLW0e42Cr_oYAEi4bfGX1VJh3dU0HYHc=": "616749000000", - "mf-JRoXVGiDHST0wLKnBwvUAkvOSc4MSLmCTeVt1qkc=": "1590488000000", - "mf5HKG9Bsp1q5bnBym7dWM6VzkOBXpbbKVpMrQSRfOs=": "420691000000", - "mff7KGqq37nkBbV5R3W3QSNxDFUsXxWVAGE3yXzf4Qc=": "907772000000", - "mfyOygTJ_JhUgn7sc5IEGwB6eZV-xZDtzdKT_EkzydU=": "3852131000000", - "mg6yH14HOM8QeoFU27vZG3NkzQExW7em50IFFru-M5E=": "414813000000", - "mgB_7AZ3f0El0D3iEnKbxzTARVTDNvN-TrrOIBgbLMs=": "393877000000", - "mgHa1GHY0CGPTjSbYyJSxL9CAvu6nQap4RhjxvqBEAA=": "389613000000", - "mgJ_V00WWpAovQdyzJ0n5qW0GRzZlyk8PYCYdbv4O8A=": "2483049000000", - "mgKFerxsm2v-dDbknK5GNZxAvx5L6EXVKTUJuwum1r8=": "548770000000", - "mh-GakteTXXKtnXkf64dzzYbQxtcVFEjxpAi0rgVDxw=": "416775000000", - "mh2Pc1kxjqlFIqUZFnpI-pxpqu-E-WxQSj3Qmmg3Y5c=": "384615000000", - "mhF84pchbreXcduIjLB8SFeLFCXkC22ft3dRWk-DKsI=": "462146000000", - "mhF8BvjRiFQsoF90a5lYP5C2JbmFY3XR42ODdJWOwHk=": "1978982000000", - "mho2rc_UDVCukABfbkR0_Q3hrjnE3dBSthg6oTqvffk=": "416644000000", - "mi47c09qIRju2uiycNOGOgAPONYX4P13I5NBP50U1d0=": "463795000000", - "mih0JKWMKFjcGn00UXd9grVcwdZZsNpZprUTcaQIXfg=": "452356000000", - "mjBJyNZFT1L_2nAha1La1fxdss29uSsByIhurDQBudE=": "3104469000000", - "mjLwVw3spA6VkShQRkfj4mtAlgc5kCtlBj0QN7c4d0I=": "1154123000000", - "mjg9HMYAdzLxSXf7_ViNry6XKK-95d-OZr0nXB7uBGk=": "2088168000000", - "mjk_9YxybiFE27z-uGGnX-O_iqk_HFP79xdJlyOTPSI=": "423531000000", - "mjqGbV9ee2AEMv0X_LRHWno2r_U_X4Xe438K2BjwEiQ=": "412781000000", - "mjs6v-uoi3YszqHFIyaynoJ8L6pDDLP-XLJ-7WGZIl0=": "462839000000", - "mk92M9tnhM6m5AkAkVD5J3gsj7w1sftSka3Q5UGDthU=": "1130571000000", - "mkBmSMysxymVCD82qLx9Ijbj9JcmimWCn_eIRtnEfio=": "4621453000000", - "mkECt2JyzXNsM81N1jfjob9yxQqhAJxCCVfrp9WfQBg=": "4545454000000", - "mkRfuwWwLsh55HIlms2OQWerajFCJd39wmFxhfmCxE4=": "1133655000000", - "mka5Rk6tjLmwx973vg-_eAt3a3DiaxwTG5tO8QZkb9w=": "1890021000000", - "mkjVBbjTj19Hgl9kOic7WOtxBkNCaT7jmVcPQw_nmnQ=": "454648000000", - "mlJGC_id23C30WLNdjuiIT2Y6jDyUB5c5qrLNFgi8wk=": "383629000000", - "mlK2zRwnHh_oDXU3TA8cxGCofQqGxrmkO9marF5Z7iE=": "530710000000", - "mlXy_1minPsUgPuj2_kzZCLep0a8Lrq8l33g1cUeEhE=": "804129000000", - "mm_LVotFzFrja6zx13NHD9qmmGsHgO05vf_1dJQJjY8=": "416666000000", - "mmpPJAz8I1OFFl_IBrqhws1xFYUa2RX4tZxRf0FF0KI=": "411085000000", - "mmq6hu4hFOPhnyc3ESladICRBnSbPklsv6qmmLVl5B4=": "769230000000", - "mn40GZfihdNrFOgfRmaRga3uO61sY4oqsGkIztAmB9s=": "454850000000", - "mnlwNLgSqmAgYrCULZVRZL-5559wJ1VxNb3hTqtKWF4=": "917122000000", - "moPaFD-iQuXXsthkD48aU-9o3feoBUpvqCxCZsKdfXk=": "2083333000000", - "moZIbMdvE-U-_eTQUGbSte0Z4vRseh8TZOlIPnvvfu0=": "385506000000", - "motcSPBj5Obdl7nhAw-X7y0fswZvCDWsJUbMSyDHntE=": "836874000000", - "mpFbmf7OTH8KwhpX_7mb9K0GN2wPhnD4wRfPIV7thmc=": "385510000000", - "mpNCs1pb22tskrUAs4w9e2Y0PNwqTmYe9siChTzI1YI=": "2271830000000", - "mpY6B7Se3gzRJUxHmUAOxRgKv8eClKzyOTi0A3pdhXg=": "463541000000", - "mpbhBhpW-dubvKqYalGlZo36DplG42rf3TK_1-kaDpI=": "576725000000", - "mpdTbdSXEnk7RNhUeq4nHQRzMgx9rZVmn_SC4fn0iIw=": "384615000000", - "mpwKpm8QUIXgn76DoSIIj0Lj7KsbpU0O9FBzp1zNeYc=": "4373636000000", - "mqJJIuhENTDAKj5zMWaqJ5s_DckKoaJ4GBgcUvQCblI=": "461611000000", - "mqrx6OFioFPj3eP99wgejPqNwEQ9aOZNL4QUDvm3WYQ=": "416696000000", - "mqz10ph7q3zfPT-YaWPHsAFQkAxj6_16pg93YdUIEs8=": "468837000000", - "mrl1Gh02H4Mr6y3rFI9rVEKYAWIkLwPaOb0YzPvolU0=": "463431000000", - "ms8cXARz--7NmOYPclmHKZohsbFq98mLaf-Tz_1rUis=": "454545000000", - "ms91bZ9AjzmXGG3cDgfMYQfadAC7B_OrSFWgmrZiFAs=": "3384196000000", - "msLKqjQsPc3jyZMDwAFEhTbxzjQt3pQXhTdwaSc6hfU=": "397128000000", - "msffStEwaWlYGR8QleFa-L2XjqaRQo7tQMObBTg6-oM=": "833333000000", - "mssn4zCWq0CzZV2aoMOEVOAkRdH5xJtxkJtogloTPxk=": "387826000000", - "mt5hSOiaivAoWeSy-_7pNBMmLykVkyGO9v92Xu-kKzQ=": "1153846000000", - "mtJQTG4Bvil_WQPTzJnsHfMWxE1rHeUR3Zxso0XtMWY=": "1156517000000", - "mtVOVWXPCzQ4bVYFpYtYhU8vRq3Fpjm9ir3QDCO0ZIQ=": "1156522000000", - "mtvKCkDQhVhHJ0palVlhvpszLeffT-3abSRuNpfmLi8=": "384615000000", - "mu1Qcgq4Ky28iLJW6T5rVKcqGpnMpSMSDOlLRatXMSI=": "597896000000", - "mud8Dq1HkjnG5D6MWNmpDGhVcDBFXK1kA3_3s2yYsn0=": "1319281000000", - "mupGrpsL0IjmDufIo3QPiD8iTxhzrJLtZMf_GstHtcs=": "760671000000", - "mutYCtARCxVTFhpcQ_U38MFuix2QD5fWgwNUZzKqtkE=": "2960113000000", - "mv8uNF-q7I_9wPH22eIfcSJ8kFUY6lctQ714J1BvkiM=": "411085000000", - "mwHnOXJmFHlfESMqvj1Nx2_EFK_1HOmXdxq6G1wEAWE=": "385507000000", - "mwbQqOALhOaP4FtUL9-0oPoIGZcgQL7nhcGLHEWaj6I=": "1562722000000", - "mwf3tTydxdaYqRQNn1gOVcyV_SnM8OdQq4d8d6vHpnw=": "470073000000", - "mwwJ789jTf5BPGOogUK0VZ6sSCfJBvhzQTsSS5UuibQ=": "455600000000", - "mwzptpqgB-FWBssXoS4CCOfRwiCPw-9KlfwwnFd7zkA=": "4078086000000", - "mxkPAvh-7VYAMQypvkHbYpFRTIGE-Slz_0rFu1qMbn0=": "1959914000000", - "mxvK-qWqmnzS8XacHRh86hCTyvkPWVv4e7ZTF3JYwr4=": "5093279000000", - "myDIWTXxTQEyLzZ1v9lnsLJBoWTSLXOCnasd4Ueeev0=": "408203000000", - "myL46QthZroD8CNkx_EMD_OMFVKX9ovBy8-Wm2nSos0=": "842892000000", - "mySVSuEqhV8RacpQ2qiccD-mQb02s__C58eGRqzJ-hI=": "3412615000000", - "mylObiuruthbLh5bBiJ_HGrOkgLulThJPRRou9ZvUVc=": "383204000000", - "myoxUsEtHlxZxcKdc5DdKPcTmg0gCpJm5BRG4N_c_U8=": "423076000000", - "myxAeNxkJJh8HXAugOcRccBNKdBLjFo1ylOzCy3os0c=": "469349000000", - "mzG3Gw2fWHucXYQ94O_3qXk7KI5P2UXXdwifMS8ubYM=": "1158619000000", - "mzHp38U7zEobRoqKAInpwDJ5K2a5748LghFx_HEJdbI=": "3530288000000", - "mzILaU3_aANOCkAn9mYVg2VVsDB4XjoeGcfJ7r2gDiI=": "427093000000", - "mzkqowINuebLx2hnlxi4bxqzSSb-czDCRGzQzsMH8HE=": "470856000000", - "n-Pi1NntvPDxbY4q6_IYaQr0IQBXb8IeT8OEmw9BJp8=": "3695416000000", - "n-Yla2kLk7t1PGyT494ItvOileO6_fyOmMZtdk1Gb7w=": "4087632000000", - "n-pR8A0dz8FrHSYFm0SpVqEOABXYX86rZgAs_FUed3U=": "385509000000", - "n-zlTxJEVD-YfJfckohNwc9JhuFIAggoda9D_8c7Cbw=": "1370999000000", - "n0REofvOH2f3huSRzUuUlucQLnh-Q3S-8YKQKbpHr1o=": "1153815000000", - "n1M8qja-qyZbhHvvDCJhB091OTmXtfa4beK04x7g3qo=": "3190592000000", - "n1OTyyjLf3IQS5JYcep76d4yeBg1lfFfEa4aZBbPMk8=": "387996000000", - "n1Uc7gAyiBFHspT7JbK3MJLt6Chhm4k5wPm2F1W3QkQ=": "466620000000", - "n1XumIFTsOFILVvGa3zItfNXVZ0nKwjSBraPHdedFHg=": "2061902000000", - "n24xRzGOJHh26zGmpYsOm3x-NWbkmeCfM_aHqUt5yVA=": "384615000000", - "n2AECb63-PJTCWlK7soUswbRb4rdgWkuCV2DbubpRZ4=": "1179356000000", - "n2Id0oTNYLL8P1hC7jO0-iGGNXGcupNcqPs3ksRiHMo=": "416901000000", - "n2ZyK2jKKuq71oWai5AxgdSk7251yaM7mxJy6OH4nLc=": "381805000000", - "n3JoTgCVx4JGq15LeVnZ6zpLseNhh7UgfvvhaRtaQUc=": "1354095000000", - "n3bJFIJD6g5SDuDpAiseaJDpyL2CZiLK-3orzOWKQv4=": "416666000000", - "n4Axi3QEOka7fTLKMsQaZK79HVPkNZB0Npfu14f6cQE=": "448425000000", - "n4VzGSkd-OrbJGvZHRnykA2w8y3y2P-z7wzio2qNjII=": "464950000000", - "n5-d-UyT0_pak1deCKSvyaQUlZL6ubZ6wE2cTDkukwc=": "3033046000000", - "n51Xo11tW-ibbL-AOwadL67IEomsLPzXEdRQeVMOPoI=": "833300000000", - "n57EutK4VB1Zx2BOWmle3sRTan3QPvADkGofUpFHApc=": "462784000000", - "n58HBg4e1QWdWPcihgac6YweUgcJUgLgwWglEO0U7yU=": "378995000000", - "n5KgWA2GqhGEjwS6ZK3JqV-pOdFnUzhRhdHXruh9zpo=": "1556113000000", - "n5hRj1emq4DF-8wW-kZo0RNmsMTiMynCTP94D60rPpQ=": "454545000000", - "n5on8xtjzf3Zv9_s3HpsQE3go_GvLnw0xzR4VgPnets=": "1642956000000", - "n5wG6WIvTCS34mj1MHdRPy0ZG9Yf4kOwsKSzWkV8nhY=": "385258000000", - "n6rjUSixgLu2mYqJqZiG_ZNdWGzmuZ_1msdXBA3Y2bo=": "569876000000", - "n6wWqbL2NHkZIIb3dtqJJoG7yavbCVvDYDC1Z9hTDaw=": "456239000000", - "n7Gz667w4Wk_2VrTMEOWDOCj6OqFzmSQUmlEtoomN10=": "404814000000", - "n7YczjTGc2wp-C9Z328h4s5d8Wn_CUliQqkb2kGjkqc=": "380428000000", - "n7t89-orOrNnKPI38BOEkAZREUJUajDxM1NSz8nEIVI=": "826828000000", - "n7vsqQffx1Eo3jVTWxQTr9afFiBcKsofD9n9oOD2Uvs=": "384615000000", - "n8E0heLGtBD4TYYYlvchcU1GoXYRwnTAgVcpRY0GqlU=": "4011344000000", - "n8NVfGqOpEkSYuP-r2qQlK_01LcfEPiXEDeO7xoHkUA=": "1156528000000", - "n8XPd-u3c7pIR7-RFetafQDIIK7sHNeBuFk8OqXSy54=": "814902000000", - "n8_fUhmdZxJwyv6B_xBRjnST8p3iFByVI7QXAP0W0G8=": "1063461000000", - "n8dATQOGJks-xwwOnUpnBSSaENGxinWe1vWAWi-iEKo=": "450062000000", - "n9GQ2qXx6jTQufAA2-B-AXPFdM3AeM0J1kmP4UFqhXU=": "2306691000000", - "n9VEEaC3yqK8VGF12qpGlNvNTQDsmL4AcUGSNQoVFJs=": "2055429000000", - "n9ivAUZcsGWmrJBR_ZNAgRH5ZveaQl92ZtzLfqBKGQk=": "3656282000000", - "n9pvX3bc2XPLXEzQW_qsIgAip9kcI0ydMLF97vNaMbk=": "469468000000", - "n9rFbhLy1BIyWvJ9xX_vupGZFO7fJ9hR6q6fKmEH_SU=": "385213000000", - "nAYq5_iMLNzrsjvXp1mMYOSWtCz1ex9nreef4C-uzTM=": "2406412000000", - "nAZdrJiJFwFoWwg0x_CYXLUasNJqFOGB2QUZ-4hVoSw=": "420128000000", - "nAqXEejkdEZ7irxMsS4o2BpzQN-5Vq1Q4smiImBNg_g=": "378341000000", - "nBGYOEjpevTJSAvLQTLMSD4EISCK6Mt6V0pNdIINWOE=": "3372600000000", - "nCHpS8Ou7ozQ3XVBB3zq7kwrqOoY8k3z6SS-L5mWkFQ=": "418546000000", - "nCUFAzEXdXOZZnPch79IQzYZCsgCVzAxzxdGOmrTMNA=": "500797000000", - "nCWQRuFaTvDUQfV-l2L56bKAV-HAzCa5gdI6XFKZYNQ=": "384615000000", - "nDFGkVYtO73yZb4QgXUaSdcvAAL7inSjUm-SvKD7ZFg=": "384615000000", - "nDFXLHp1r8NmPzbYa0uqvalHtYP3uxFUsZVBMk5uLwc=": "657692000000", - "nDrlBWVOxcX-r0e3SS1yhfOfzwgEjjBZJmbXyZzgh_k=": "385731000000", - "nE7Sblq0muflgULiZFZec9R9A0iw0gH3mhsFOuaPzEQ=": "8228306000000", - "nEBDbibz0QIID2s7qp7sA239MXKufIDSqdzunVcYjlI=": "984770000000", - "nEJjEGMaPF5Ico8jM8C40Zphs6PPloiEEkVmyEx9JIM=": "1378448000000", - "nEJpxIQzHaSyMAnLPw-2bwekk7TLDfarxUfktEYSJxk=": "446388000000", - "nEZiLu--LCjAMt_V35fhL0AYWz2kN2SFZiwe-MQ4cIY=": "988740000000", - "nEuJsi-Z19fxdFHxl25u9xaxrYVK3L52t-wQP9UhjcI=": "385510000000", - "nEw32OCvmc3zDKXZ6SpAC6wewUwZ9qMB4HaiTLrvDqI=": "3915443000000", - "nFIjzP4179_y4pijoV_VTLd6f6VGRZ9ZuJdkn6NnmWY=": "422471000000", - "nFTTqGxQ6Gu-SkdDPzxST-1Tc9yMWRjXyRE1m6XraBc=": "463761000000", - "nGkMTxecl74V_tDKrrPZmRRe5ksWopLF9_yt_UGs2lM=": "734514000000", - "nHCX9KyRccbfpTzbfUrPA1T4-Aesty20fg93_3rthe0=": "391797000000", - "nHLO41LvnNvLOIgaN0f80hXehF7pJN4_zLiATBpm1mE=": "4621453000000", - "nHNrr-RKdcbGeWzpdUmv2ZDmTK-ND3t--S81F88x-Pg=": "384615000000", - "nHugt0olAEr69Ued6uupcjZse2WkCmwSnZS619iDwc8=": "454756000000", - "nI42LJkscl6RKYQA_iTfMXg9O7XWodZ-l42eRR-BSq4=": "833331000000", - "nI674zIXYBo5OUGvZsis961Ntxy4brbMYTU6n4RlArk=": "831312000000", - "nIqCuAKDxC_NF0pG4gwc9K5Cy_Z7FZhpoQTJKAIugnU=": "385506000000", - "nJ57DlmQ9iOfsO2Wu7OCtw8R4iVg6prP0B1-zZ1XChY=": "20646899000000", - "nJAHwgaarEZBY35WbB-bjZjJT7nwmUHwUmk7rynX5H8=": "7394562000000", - "nJuro8km3GINK75zSwmMdYkBgyaojUjPNlf1DKnQOi4=": "1154123000000", - "nJusAbgocBtcf6KVG2UD-XgZMMa9j6rHM3NBdiS5Vio=": "7972680000000", - "nK4IyAnl5stL_t7SN2qOG-2r-IYv3cy0HCu5pyHdGhY=": "377987000000", - "nK8lF0nMHMulQzoPnoLgYibUOtuSTN8nV3dP848IZYU=": "380208000000", - "nKPMIXzjCLP2XneV8SW0_bf-VCYugae_EBbFBRPhxlk=": "769230000000", - "nKXRJRMFRa_BP0taUffbHnT0SUlhouuBVuSeSuBt5D8=": "2692307000000", - "nKkOs_lplqZUCiOelqzLKH9SFd_tJyAKt0BfpqB74x0=": "5188649000000", - "nL3jDVpKy7XeLwZ88ExNb58oVGCb23VMicQXrrUSH44=": "385507000000", - "nLjJMU_jKqljg-kMjzpt9_Mbxx2i0PTLftGMZEcHrGw=": "378611000000", - "nMQO1DQzVOH_EMMZEhNDHhRGrmxpjMN30wZQcUzUUeM=": "1134971000000", - "nMS_SFlyxgxmAXS6FHsg1q0HZoZDLL6EVF7AaRFnsRw=": "2022201000000", - "nMSrLPCg8SHXa3FFH7k3cPkFWqFbLTlmymbOQcM806M=": "769428000000", - "nMcuuci8Bv9J0e6FQ25H2bmvA55Eu6see7bdVAHbsGA=": "480295000000", - "nMhyCONYfHkFFnyWFeKefmz_ErwwLKN1w_5ISlEjOtc=": "1349526000000", - "nMl8NGErV73fObeuCdbavFlnxvLRMdxWtPEyuEv0UVY=": "385506000000", - "nP4Pq7OXt2KDJFhJqM4Wh3D73kaB7_STGFhz8wa51n0=": "384615000000", - "nPBb2aMn6tXtMuaRIxCHEsXAYsekQJ8H567Vr-ooisQ=": "4091726000000", - "nPEPt-mNULMwF259hbpcUilpc6Z-opiJ9CNJDnCLHj4=": "1666666000000", - "nPa1w4752ZDGJJQ8_m9b8hZiRlA_KRGfiqNdaTTH-yU=": "384615000000", - "nPq4I6p-IvK_Vfh1xlJm6FsiOlLSaXGsUI_dDjLGgGg=": "469402000000", - "nPs7CfLtaYBvhY8MEqpq2zxao8oTSnrOAevlE1QUeMA=": "914050000000", - "nQTLiixqimskzXRI4ZrmZ3kOpMIwl7KuebKSrkHu9ZY=": "1893589000000", - "nRRffEOcNsW5upD5ienlyl0aCbjrVtnhiPO9OETR71E=": "412158000000", - "nS1Cwvbdvezk_-gCw37tshm2SIMrK70q2kbwDP8YFvA=": "411851000000", - "nS6fOQRIPD1xiZfolHKGAGGkX-4qhTCR1ppTx14LvtA=": "384615000000", - "nSH-5lTRKH9owzYrgCTLLLe7gg_0CvDXlYV_Z2LwwJ0=": "1242008000000", - "nT1LZSr8loWTbeAfxcQ3tdv7gjNj7rkZDjhI9PyPNP4=": "768464000000", - "nT3fZF7IMR4vRxHwwQmHAftPjKh730DWiFWe06Z7InE=": "1923076000000", - "nT3vmIMU7IuskNvqWJlhDkhbzXuUYuiFPzns4vFtgbM=": "1344514000000", - "nTETbPHTEhaqESyQq16lmEj1sxm5CQzHBm0Afpe9yRk=": "384615000000", - "nTIXq7j74YR-LpmNiUvyl2twBm-j-TeY8lfKdRM6nzA=": "1923076000000", - "nTQF-oVysVxE6HC0lC3LWbXFiqZdYVYCf0MOtKGvamI=": "384615000000", - "nTu9zh8YJ0M_OicASjkUYSoVLWKJt3Aa3xPgXHvGy8Q=": "1152202000000", - "nUYbvpgO_O4XqX4HAlmc-97s1GWT5OA2Nvf-5bLVxKM=": "384388000000", - "nUdQdr5FEN1Y96I7GFV1QJh1gN2FtCCkWV9lgji7qhU=": "556279000000", - "nV7I0wY_yuH_6FGyTe3gNLwEMy-DFBD4gzk4J2kTmyE=": "1228523000000", - "nVD2PVNktz1yf0nRp4fTfOXCbjBU_X2jPcyvw8FtYyE=": "910164000000", - "nVKmWLM4hPQiInBO2NlyJu2dWgOsF0UPvCeAhz2wvsU=": "500251000000", - "nVn9ZdeA52KlOQac9UhHBuimPJd5qEElwSi-BW7rA-Q=": "970681000000", - "nW-T8lm04J7qahM4FSDLbxsM4wj2BRo0FCUnEWBpEBY=": "391885000000", - "nW8bo6vQDY6K2OBWgs56wgFj7gTarYlAbzO1G2UGtls=": "1404078000000", - "nWFM0guMOx3EPcY97Mpe88VtEAHFrAro_lOXIWLeDP8=": "598794000000", - "nWU18ahYNpH5Gbz5kcl1IzK9kLXig0fPu596jEXsjfM=": "384758000000", - "nWa3ovlw4fw2HYa2bkFbmbLGgXIGJgzFBvPaDpVDPkc=": "415288000000", - "nWe0YGYUyt34_SmSHzHJh402FZ4h00oaL_RkJQGH6UE=": "473265000000", - "nWvPls-RFsJwwWyN8WvyEnnBADHOBXNpwBZ18-eagT0=": "375634000000", - "nXFXUEyxh1EZnEYFZP6CUlGWt5KZr8fFe9z4AoebMKg=": "389097000000", - "nYsi_SY_fVINxjVOF5DlYjtXZRk2JPEPah0FWxqHVCQ=": "358004000000", - "nZQ6-XPUYVqIo5En7b9klheghnvL-JwrbsowN8tBSd8=": "384615000000", - "nZX1aAYQchlrNXTug_LYtmKlsE-nZH4UwZ4mMGWayt8=": "420022000000", - "nZfasyWHptzc3i9DYwZIdxBCq9H70x07mDzn-rHkM-w=": "471941000000", - "nZrgfMf1b9ZO4GrDHkOasHsymvLKksDn7VcGqCeZXCw=": "772105000000", - "n_qgmKiLh7QNtaFJEl12rGfzAwDLCWcEkYyTpQOm69Y=": "511839000000", - "na5xB7dbKUYStuz3RSo_Kq50ONgdKZRQeWBG0JZ1Y9Y=": "466152000000", - "naZFzVXYPVZ_EWfCC9T15tMNyz00npKvKgDk24ceWMA=": "454643000000", - "naczSSaNfO4aY_EF5bpfzMfaYDbnM6tr8XR4AiO_Tlo=": "575059000000", - "naeq0jFejWS4WpuKeUqtvbYS6SaX1h8p9s0W9wLWhzU=": "612877000000", - "nau2kGzMQoxThjuHa5GubHApkoVGvjHv74JlCad-CXs=": "3722997000000", - "nb5bKaN_f6sxUNJpkjlfxuuXNhv9AYExkeLeXYdqb9A=": "2083366000000", - "nbIbbVN5ye5Jph3pOjORxNPQj3cTQVOY-jJ0oFwFAkk=": "384615000000", - "nbmkLIFYTQPaCXPdaZMsuvxSBfnBF4SrBwu4-0k_94g=": "384958000000", - "nbppL8VTf2TiMTpt0RvE__D8OoTrobzi59xSIvNEc70=": "1180412000000", - "nc-t5R_soP0y0SgNU0iS26xAZ0VAV4MEXsOk-fcxjcc=": "384615000000", - "ncVx-dqAglvSjSl1g8l0pI4xeVUF6fLqR2mW7SJapGM=": "1866440000000", - "ncmpIdepRY72NSNZzZl7wrUm4lKyJr-S2PcSJkz_0w8=": "384268000000", - "ncr99HR0MIt8JTgAnKRtEaDUDAwhWW0X_qAT6Cbe9Go=": "457013000000", - "ncw5G4KNYfeNFMgJGGd6y0rkJtJ5RW5JeZVpo7SaauM=": "597458000000", - "nd-HuJBfhzRcaUXQ4AJspWJKleNS1_LRRQJ3p8F0NrU=": "384599000000", - "ndPef-CicbcNCVuVWJGfIDGN2QldJI85tTwnjqQOi6g=": "460776000000", - "ndejaC2FuKrfVxMvnWdHdMIzRtKOegxkCYxAKWGYrAQ=": "1923076000000", - "ndfEYOi9rlwGHnuaXsDCbqqqt42mtc5bK1IAy4XdGco=": "804803000000", - "ndv-UP6gmAGgYOVJlPozulZHTNjbsPdn1X2RcjwL5Fs=": "3986462000000", - "ne2amiESMWCvFy8--2crfCdMqbnqygCX10ptkBnQnfY=": "452515000000", - "neT3DWPiFE3D3gmfonee0Lpw7PsJHOvz21OTmv99V_s=": "355692000000", - "neVISdAB3q-zhnaNBvfGqjL_X8ldQmJ6k2UGiOdx-94=": "459292000000", - "nenwBpNlqmnTY1q6qZBK82hL_CPo-LjcZW-vISQ7h7U=": "384615000000", - "neu2Pnl9P97JAZf0p4ZrWty1oJcT0TbSUROEbt0MGUA=": "385510000000", - "nf2QB96kOBZISdKDGB2G2PvwfS9lYZhZpQNZQqz7Ykg=": "450381000000", - "nfwYiUDIoZIQaBZItt0kn3bOgpfm1XIftzuNsGNvQJ0=": "407226000000", - "ng6tKZBZqAtbS5sPEk7syKfdIMb9G1XPwPt-HSnlOK0=": "384615000000", - "ngD7Coz4i0P6OROCBdU1wISVWpUtzWHDy0ZPf9Qu7cA=": "818220000000", - "ngOvS4ZQ4BU8LAYUzliHHlmE0VTOkN7SREXbug7HsZw=": "484181000000", - "nh-wdbIzYaTFSs2_y98cGwFrynZ2NTNc-JMM9nP6H60=": "450975000000", - "nh3QbOmRU7hrikg4Sw4s8ao8mhZC7FM8GrUdYXdxGSY=": "1009888000000", - "nhGC1HYB_gTaV2l5505k29uaaDsCwpXleisoIZpUmx4=": "452223000000", - "nhXQcsP8ZmXAyvywPCOGWs6QNcOzY6QyKbrD8mbTeRk=": "909090000000", - "nhbMrAZojkKY05mhOK15goBPtF61nvJAT4RB04bl8LI=": "379354000000", - "nhhAEHX3bjUlvpnvLBLON4Lx6VEo-nj1pAPrpRb4I44=": "416335000000", - "niBZUcu65cjd7YWnYYfppc5EWKOEVMwK0gRJdSLb-Sc=": "1363636000000", - "niE_8htF9_ugaaxeL9L2gXW7W5NmTdu6fs3XDNMaBGc=": "384732000000", - "niJdOo-i4XkHL5VbclqugHV_IcWMlBp92QIDhy4CJaA=": "421370000000", - "niVKlaVcr8ROjUw323mjk8RRHv3F2bP8r6RbtvkGdTg=": "563636000000", - "nicwV4wiVxvYYhG9T6pfy1GtL9FtgOHIzspRCZpZpsg=": "541749000000", - "nig_mOWJ26piZSZIPNGqQ4TjIcJ2LHlPwIdnwnK890A=": "380610000000", - "nislBGlpXccMPAXMRNoiR4KzDDonIAQVI2VpWH-3VUs=": "1170708000000", - "njNN6FaeppyRGmKF_k0e9-WDYhK5VzFpqc5b4cqWrAw=": "384615000000", - "nkRcr2KkmOGKgJyBbpO6ahQuYJX3pVzC2XycYd6Be40=": "377783000000", - "nl-6yp6FDpCV9M6QMqMvshhKRKZPZW9ZW_ZeJiq3N7A=": "470198000000", - "nlVN4CRlRS4pwvJZiitkShDJeSZfCjxthlQ4_Nx6RJs=": "423762000000", - "nlzPF0jVKoU14sCHRJCF38cXcXdeLwJIiRPmjHVqZek=": "637540000000", - "nmP0BH7q4h6E-e8m7nSP8_bp9MWgGQmPOv7rCaY059M=": "3294336000000", - "nmPseYbc8FXMYdAzJBPiW1oqfAy-uIk92Ht95IZTUvY=": "416644000000", - "nn5YJ1UqeGNG-9BncvtAqNMIa8fhf6-ZmvUxx8IFbug=": "3846153000000", - "nnRnDA4sxkaeLNs1Xpv5vSFgunggj0nJFvHKWrnGcFQ=": "384807000000", - "no--KahJpAgpCaLaMjqS9j-TK9ObjPq4Zv_qamqiFjM=": "3846153000000", - "noPt0IKKYVbOA5mdiZhIbETFB65294RTHny3IInBFWo=": "416650000000", - "noqIYpv8uTnKNJeFlPy9txVdniJ65K3w5Rsfh9zzsm0=": "470865000000", - "noywNZ176YKClP7t-D50ycnCKWAb42tvUkLPJmilUcE=": "450246000000", - "npHJzFPKD6VqivcrEInU2hSi2qpbpA3pd2zf3oMZ6qs=": "1978468000000", - "npO-O4Umq70cL_5OC17D7FbodDayVPhn39zDYd5iV8s=": "930524000000", - "npSveHuFhKIA_FH0qUj4exctSrQS3XjP3htdcybKICs=": "3755173000000", - "npnnvsHuqsrVWQtW8YioF3qDfd6iPI4V8AhuMsFxjog=": "1270412000000", - "npuCMhpOg6lkl6V8LLi1S4eiIXTAWHCW3bCOABvlRC8=": "1211627000000", - "nq520Xt6rlvhrYQeU_DcM2JNdmX6jiEVFqzrdDzCygs=": "462785000000", - "nqH68t1GCL83C313pSKE0zHnCkuEFjX7CxoUAYcKMow=": "500019000000", - "nqW1HaZUBjgaHyy_-Ol4KjEVN_Y13qJXdgbtsHMupkk=": "769230000000", - "nqx96JzXn3kSxRMwtYKptGEcQ2ApD3RXXCrfYdU8Q3Q=": "1373518000000", - "nrJ957PYfEoMPF5sDohh0k-omcwyHNzKHkFgogRmxT4=": "1223425000000", - "nrOiGzEOMcMfyrX8umzOSIHAf9Iawtl7j8tWXAgCzoE=": "454332000000", - "nrRhn8NFY7BRhLGniBU98NDKpaVBw3jbWfQkmxRlkbs=": "1149765000000", - "nra37ch0h0P6lcdK2QVPz8isLuRzrO8FE4xqrSz66eg=": "1891285000000", - "nrablJoaFYG53IqXcJOTfFyXVM95hrukUMTG7Yw3Cdw=": "8846153000000", - "nrloerwMGBXNpWwg5MCD6B0_RhOXJ4QD9_SmcChqucI=": "1153846000000", - "nro6VFkUw3-d2DXeePAZYtd6l3bRcoOUDZ_40HktW_A=": "384629000000", - "nrunXZpmKWCDPV3mQsVvqcPOLtOXd0UboNLT283TBg4=": "1927530000000", - "nsTWMki78C93-5mheP1nqhcP15viaOIE8vHPe6ajwpQ=": "1249999000000", - "nscJJi35EK5qBNbMfq7171OmFqPtjJJoLQNUj0GNAqw=": "411085000000", - "nsosUD52l5qV760n6vJFx0KXH9TVOO3A2vT1kdb60LM=": "3856657000000", - "nsrZ1vs4-bdoXbl0lJPnJ6nYq2ZGWzpOv_oAxRjkcSk=": "385528000000", - "nt6y11EfmgVBzwnyxnHnjIwnRugiIIQPYwYe9z8bqJ8=": "720996000000", - "ntDvR2jGopm38ti8V1JEHmCPYNApKEFIsX_mEWMmWnA=": "420440000000", - "ntVBKfT_SfDQY5FJb1bkzFjUPbdR0d4j1bJ3Bocb-L8=": "4166666000000", - "ntpl2sn0YBY2T94EiZuT8YjrPZu4i2z9uAZ5LBO49ts=": "1252906000000", - "nuOwI9io0TCbk68yrQkOT2tyoMLXkt2CZFTkB6zvK3E=": "15923229000000", - "nuRdUDlDdoRtrmwCQsY6VjyD_8AWr0O5Kd_mMx0kn1g=": "1538461000000", - "nufJgV1YOtVWmcXR2YkGDLN0RlpSJGl_-d8f4_vjjNs=": "384564000000", - "nupvnuKJqmQ6PqhGQrI5-ZTx6WCfvpBkqIg4taO1fx0=": "449892000000", - "nuvQIMTx8I7lwyKhcuNQ354CXiJVWWNjmM4sonmAoP0=": "384615000000", - "nvk6lDsjIvmKae_AJm-kP9brCvIEiR9-dlm5P0Pvgow=": "8160016000000", - "nw3dp78sObe6_gyuG5sglbqkAaJX2uPQiRxijCSLwrY=": "812088000000", - "nwcfWshuPz7T4UKV78n0hfucQIpHHAANcx7cLcN2zVI=": "1153846000000", - "nx4sTcskQMqaR-6t_HJbg3HwKrGLoCfE0_BkKcwTqrY=": "1153846000000", - "nyAKlXl60kE3vsSifwMA37K11IPmx2ICxerQQjb7fz0=": "384631000000", - "nyAOK_Y6rlgNPOkn7hTLLfYvEELMtjRyK322t92yQoE=": "467359000000", - "nyVcw-4y1ot1M_uZqezxfMzsKu37igZZc-VoaOWF-s8=": "389459000000", - "nyqLAIfrPgerMO1O7ndGRIOd2yDm7b62NuZ3mV9DnrM=": "1827146000000", - "nyvB8LpUddo90QxHRicQfb2dh7sDCQyfi-mhmZgC2bI=": "384615000000", - "nyxIdmw8J2IwdhzEervVTRYxf01ooA8AJZC7yqImFww=": "377786000000", - "nyzJoGtHS5ldudgJX71iRNy0VVADGe9Lj5c452ze93M=": "405357000000", - "nz2T53gwbypGaX18GfCLWFd2B6Yu7KBmH3fKBbNK7PE=": "521440000000", - "nz6OctAS3vTpfkTbfhK8YlcbJ7_zsUQgAo5yLdSYF8w=": "768904000000", - "nzB-3MjsEmnSrjrhnPSbo1KHXpCpXaNlQguIB3j_8UE=": "416520000000", - "nzGdGLCyK7VPpnUgl3918XfzX4EoR-W0sxJ_AG6TXKA=": "1363636000000", - "nzGoS_h_PxABA3kb7U2LUVzp3qVZvpSrrzECXx9xIzM=": "391957000000", - "nzVhY4eTUGY8Lol3nD_yfX3hYsuBBs9IU9bF-tVrc3g=": "2784601000000", - "nzh0fKmasCkYggRx0tKrEOAjt-SaaDNmh8oinwr8NZk=": "1238591000000", - "o-2WOGOInXzVSA-3Kl40BCtk7WBtu-v41VNCzzisWmg=": "384615000000", - "o-B7MYhCKdFdirgW4oyFWrnIqgYlq6uB9OpfmgfeUb0=": "2156572000000", - "o-BEpjCyf2-kByaMjlUY90ilWadYmAZj3dwlKVHNVFw=": "415420000000", - "o-ni7SNUVP1VfvnhQ189teXiXNcESUPitnqNlCcjimE=": "904621000000", - "o-umfD_N2o9lLKncRbUk5OZVbY05ZkJvaQznfLWILLU=": "525893000000", - "o0CSzFdFgVbFsaPiOjqnaVMjcLoQP-v5BzaZpscEJfA=": "923455000000", - "o0E_ZKq8upuZ-Ul924MqBESbRDo5-6NO0TPWoDdMHQY=": "385506000000", - "o0JrPq4o9NHbdt5aU_EPKqFp8sBZgWcOPvgk4tmK30I=": "422187000000", - "o0P2VIUfBNqRf-5gdjclStOkvqI95YYhmQIvodstu6M=": "2043414000000", - "o0QhlvUiWMio97F_10lbYqQCpDYreNBGBX_yMrdOS2Y=": "2083333000000", - "o0SyYqhbU2ku-cHFK53epnmVZX-tM8awWTqdVyKCfU4=": "384679000000", - "o1_LkpEgrfqZndWLeiu9yKaLuH6xAGlbRL5GFYUu89k=": "384615000000", - "o1jiWJI_MmBta7CfeyNl9ZJ28lwwpXJnExEGGK3oNUI=": "576551000000", - "o1lBzOj33u8Pu_4F5vH-tx8fukB1p1uHLxGXiMCTaLU=": "66714570000000", - "o2BQVxPLCPoNSUfpsww7k8-xNQfMtJYFyhlAn6ML4FQ=": "463231000000", - "o2HDjvl0XCgXpsAaIiGcDLM8hQEQD8FEHJZtTkKT1h0=": "677152000000", - "o397Qbo2arXbPyq1KPgnDxRp48Mt4rG8jlNJvJfxSzc=": "1538461000000", - "o3CtLvCcdnbrXj2_Xekhsi95X049dk00c8IA0Om-sZc=": "411085000000", - "o3aCHUJA0bvFSlDqo18QDWKzXhKdSLNh-weKNftk3Hk=": "482434000000", - "o3kFTD2taU2QJXBSI0E1-0JQ0dwiqXPzzMT-1vwc6l8=": "771280000000", - "o3xnVwwoLQm4SavoEhuaXIYnkqf-BCycUEs_8a3jOAo=": "382765000000", - "o48fhWOY6EIJQoNho-4b_ruZKBWnxI1f3M0QAHfZOFg=": "381802000000", - "o4TDLGcjK518GgZ0qdV_O3uoCeiuIZZV8eAx-yX2lLo=": "417633000000", - "o4qbxPt_Y91YluxSMEQrB2xwnUxj4iCz2WBnPlRoizg=": "417636000000", - "o50CSPyvqytKEtQw9Vv1lftUmnVJcUXf7YIoSkohA7I=": "385507000000", - "o57CiaWZVsRmvajakO7asGilD6qmIkMKHJ5FYnXrjuM=": "8346824000000", - "o5yDdpgHEov4mgzC61lO3_mss5CUs2CBf2D9k0hik00=": "1156476000000", - "o67JsRBvtoEflA-CbcBd38iNlOyafzGLq3V0HwcXUgc=": "773687000000", - "o6Lw5KCv7uT7fHOq5fj2dCUQ3SzEQGUVgymFig2LVak=": "453890000000", - "o6ZK8D-x-SLRGkG6qdxjq7jRCprcnlGdtZShqfGLDzg=": "635499000000", - "o6_dOtvdeyQllNPa_SObTLzafN99GMfCwUplLIT5pws=": "406180000000", - "o7gW2phIed_JiBTBG5OxMl8uhvMhZOArB88r6osQMuY=": "847421000000", - "o7yOIuV3coTNKwigISjKnvb3JdED2KLTADyAS_26OWs=": "7692307000000", - "o82HfaUiqb2giO1LgxfRw7fZcNkXTevKbe4QGIN_Ilw=": "378010000000", - "o9TOCNcpuLS6gVV8W9iWNOafaqLr61_gu3VTfK-8OzM=": "464662000000", - "oA5-1P4PI9DSFUtbg5kkQG5x9CYbCYc2mJ1ErlGlqg4=": "1927537000000", - "oAN5AnIdtbI5WOmoDkMoijaJwIsSo7KE7CuyaWPWRJA=": "642211000000", - "oAqfuHAevJuWp4G6AmN68uOQW-ryv3UJKmuc-BBWL74=": "381802000000", - "oB-IGWPe3xIx5jYd1tuEacO5MqVGwQHQ9SC5Aup8mBo=": "5602054000000", - "oB3RhSf0bvf2O6TSkWD4rk6Qsd0pPsiDv1C0fKZrD0o=": "836250000000", - "oB6z165a-ySgCRHh561qvTxsFT3Lr7DSBAr95y_Cod4=": "3364965000000", - "oB9_GR7_mJ--FypLZ3euf6Ctkp6S6Y8Mj5wmM5ItbaE=": "455600000000", - "oBYiLMCP1PRu11ZneKUeqUr9gtIzzkKA5EUAj4m9fP8=": "390237000000", - "oBkIXC0uFF-G8QR3T_sMhSr4SbFZqZKNt2TBerARkZg=": "461906000000", - "oBxMnDW97dWQQ2ZHsXsu7UB3YSol3NGgHV61HcnxWVM=": "994130000000", - "oCA74wQxl7IzFXxk5l0zmXxX_2oY3Ri7nKai4wOX8bc=": "1168476000000", - "oCImTwrHOJraPxAuO3hBBkB9Jg3YqE0PrKk-9ABvuiM=": "454200000000", - "oCROVsptepFndrEIF_wJTi6ZKUAPi7aFnzNaEeOZkd0=": "11580614000000", - "oCcZomkUB6QwNPXCY0HpSIcolRA-lllveb8Xjq9u_3c=": "4448085000000", - "oCqa0Ai_bMLjMLOhR_EvkrhBh7TX4qao_7iLYs0CBIw=": "411609000000", - "oCvpQef_yDLPg-Qx5JYwR5ZtFKT0Z3MymYg3q1D_CI8=": "1382564000000", - "oDCXB7ACjVx0GN_BBGpzOsVLp6qKIO-OCwnDTXnBkMQ=": "384604000000", - "oDD4L6R5E7GhNogxNxunUtqOOuxbNknggX3cajB6sJU=": "385510000000", - "oDFjVlNdkrdSztKJAhTbpnq15Z9xhFXtzqU8kOUODRs=": "1153846000000", - "oDHNT2B-FJ90ruNC7ohUlniNKuaJH1ba0W4mQSK8-8M=": "837715000000", - "oDT-iW5dDQ9ys9SU-SI1UfY7jrTkSxhDtm664Z5XxO8=": "416843000000", - "oDjayLbupl37yRdHBCcVWr8yhr3mNpa4KXReJWhw1Wk=": "731483000000", - "oDjlXE-l3YQVbaUBIokJJmHuydZubog-sVpT2Qz0Xpo=": "3625572000000", - "oDlMA3thWsYda_4ilA_ZGG5wzTZo2H0vevJmsSpjTto=": "2386333000000", - "oDpLWKOMtWiMjTsq3toCkIcBIe0x7_vbsXCC_pR3pA8=": "1518159000000", - "oDtAcz4Pr53m5QOc8ZiA7tEpOCJO-pliLvJz7jFNh5E=": "1459835000000", - "oDvcm6__90uUDdJNgMk8qKaijQ5DV8c25uTD3L5OxS4=": "462146000000", - "oE1Ivt2XlQiC3ODtgO5jUFUO8ywKniZP5SBQUIgxWQs=": "454545000000", - "oEKyJTynNpwmgCZL5eLI-P8F4QGmUQ5zrqtxEt1m_PI=": "384210000000", - "oEhbhO0wZ7MGde_O1NJ9adYOCsPD5kN-G9ILX15trJc=": "455600000000", - "oEzmXgcNqYEjmsDiPj-A06sRDom03zmbmXBmZtSg1hg=": "750335000000", - "oF4KwEK20qLgvyvm65JoWzfMmD_UhgdhuutLl4H4TGk=": "751952000000", - "oFAgdceQtxifShHwVtTfJteeEsxCiOT7Q1z9oFJQTxw=": "449205000000", - "oFTGajkZpbYCMB0M9rYzSBKr7HRBOgHBaJzSAjrHank=": "4241329000000", - "oFa5cWKlJxate3LdVEl4OfLkF10LRh_KFCtEJV1WmA0=": "416666000000", - "oFf7HRr8jIGVn5qu25znsuol5UoZ4PYTioEuDBIxsNQ=": "389217000000", - "oFuMYXnPPwU6go6S-SxQGI-lyKXza_AkibOxAg8NwJo=": "449482000000", - "oG2EAx4emMO3cHmuT2CE_iRnUMzrdsV55prZWsJoLqc=": "385506000000", - "oGDHstIwBUICm1zhu9Y_8lqSyE33ASaO-1-pTTR6ZQQ=": "6249999000000", - "oGvvo0793rmOqMcJ8yolbnCT6lZpvhNuwPwvV5UwFIU=": "460976000000", - "oGwu_6IqzUlgL9o5Er2tela3T9Rxyj-xgjTP_XJDtvU=": "3843897000000", - "oHPBhb832I9Fi87fsBBgQFuTqWUyyhb4SGjJ5SIQfJk=": "411085000000", - "oH_quCEUb1NkkfjmndwCBA0-nVDE1M-H0Sl2zm0rHhI=": "1927530000000", - "oHysuYIdK1JgXj5qiA7b4Dm34CSglj-vjb7TohajEa0=": "384615000000", - "oItXQoUm-6N3KNNFoIK_V50EpnUA8s50J3Q7LAsWuWM=": "961538000000", - "oJAPsQ-Prb68-hP3xe9UBRS-OzmutMovhA14r0nCeuQ=": "467593000000", - "oJGSlNK9xCGKsDyiNUwOl2XX41PAPf8pEkkgbSMZUWI=": "769230000000", - "oJT7KFQ9kmKWzA5_r30Fc8g5ZwvYe9rjmu8Cp75NVbQ=": "446710000000", - "oJc28DbaUHsazHfk8N6knxMEtZOdFpp6T3vCioagt_Y=": "926090000000", - "oJk-x2_DD4o-e8UVEoc4lHQEUu6EuXbgi2sCZ_Nz4RA=": "4196174000000", - "oKQ3QxaoPC18NA9Q4bUXQFEhVF6wEB5WVpz2HSYMlQo=": "384615000000", - "oL3X8MrNjCJGKCW2DWHBxyLkeXUc4V2O1hQigsb4VSw=": "385510000000", - "oLH34BaS0h6iq9qto7-aV7tJxYfu0Unq88getpxIZkg=": "385011000000", - "oLPbnYoDWNca7EvIE8Tk9Q3nZjGR9MwtAErM-tXq0BI=": "377835000000", - "oLu3O8l3gTIGntZntZiaM1OjuhfB8f2sokw2NJ3a9EY=": "416901000000", - "oLze3smcytjSdDIL98bVRww9HmcCV1otXdTHpLxnH4M=": "382394000000", - "oM48ERIm-aXG73zV0yVV7ybUupdmYlmzzm-Ty49NQbs=": "384072000000", - "oMHoMA5jxL-hg1vAVvShzdvIN5UgBYNGoFP3Ka9Jyg0=": "1131929000000", - "oMeTkOB81mrr5yukEgL7B_69S7GULtqZHFrPN4YV71g=": "416666000000", - "oMo6tUj6UXU08ivIEoliTgeG0bpLPlnkjjemb-y1psI=": "2291666000000", - "oMuWvgh5tllLPkKIrxFFTRhWuhbS0WyvvydrWLTfdC8=": "4999999000000", - "oN49Gw18Ukh6dwyY0SUjM0uw_GUbWjNtj6Wz87GHosE=": "925701000000", - "oNP5XWcn87tKg49xX4dirnFRqVrsvMBpCTBEEKJONWc=": "426403000000", - "oNibVP-ZZ503G8fC2B9gVTbA8pICS7WpoZgBvfbsWX0=": "465212000000", - "oNxTWg0lnCNNpULHF3KRucnGwDciTgI0VHPrgSsuoCQ=": "2022352000000", - "oO-3PnPioiNttXoryWYzBJfcTed7Dw87yyiOp8zElpU=": "460237000000", - "oO5F2g5rr9vTu5vA9pTtzaS4mN9jYznLSkO8vrsEd2Y=": "416673000000", - "oOA-H5lErO2oKC7UXJLwvmzwXtqfFSTF_lv8Ah0KpaA=": "2083368000000", - "oOruxuTh3Q8ppbaHGALGPItgbzqiln4XuK7EIT6MBlg=": "578497000000", - "oPIk1ZGjFjHoFceuHO3ZWFlySwtGDAHM5qpKIPF6SOc=": "420684000000", - "oQBfS80B7-EEQYf9-LyQURZVKKKsgqkwnuIZNhR9J94=": "420060000000", - "oQanRqMvwSDbml7omKPCustBIIFx2PJx85Ufd-VWUJ0=": "454545000000", - "oQo7KlI8o4fxyd7uF8s0xZNPa4PDW-ipRN0JNMyJ5eA=": "550726000000", - "oR4tVp7PsrgmUYyC0tvAB2syuOHIcIMFtcH_XjI_gMM=": "384766000000", - "oRZS7HlDmscM-zNvrcygNqHJeAIlg4wN7Zx5Adv0dEE=": "5146256000000", - "oSMLCHwVsERetSlPMx4CZBqQ_-XIecZ7GuXG8ptLQTE=": "442725000000", - "oT6h9DMf5VHFTXVffsW6ve2ZFVEeXhPNdsZEFbU-H8k=": "384615000000", - "oTTW0SsJSTrGVHy82cCPUKV0GOxWGx5Mv2oKf3x62io=": "1175323000000", - "oTknRh_FH5f5Wm97V8WfaRpZjsBmZZgfTogufo5Z2pw=": "454545000000", - "oULDr5IO24hpb4ZxJStspQKPRMylXQHNzsWKlaiVWVs=": "1233257000000", - "oUWmdg1Q9Z6dDkgPFTBYTcgOAkCZ9QV4cqhbleqIlh4=": "384615000000", - "oUc3U0x9z5yhKUmM5rT2XPLm7W4U7xBrCsQSU4Y82g8=": "385510000000", - "oUiKSN3sOe7dUnE9XOQkCNMCytn0mO-LKhbqgsfD8J4=": "386379000000", - "oUilW5iyLQgUfVcHnDlNHGnAIe5bRbaNB3GOzijLBp0=": "455600000000", - "oUqjLFIU-vUsYUuhncPSpXauNi2iE1d4eLnkNZOTOJk=": "458017000000", - "oVuJm354IkPY1bptoHTN6Q3Zs4FtYzrhWD7zhFgRk_U=": "927766000000", - "oX9wRF0fzvel9oqVG-5FWiMXWiX4NAIpmn0HEGPPORE=": "909090000000", - "oXM1pZfZTVvNmeXjObuFyckGYqmQmQL5J3Pzgiy8GbY=": "381162000000", - "oYJXrvsIe01W25T32IW-aWr3vKt_cmZ12qwmBklbPZY=": "3716515000000", - "oYOL37hzF0MU9eEIDC6ggxyoj1bhIL0OQuborp73oTw=": "382790000000", - "oYeI1I8DwX5fp4_rchR02c0Vb8SUAtTUEuba5QLRkZE=": "417634000000", - "oYzZ6H9B5QAzaw023ND69mzG-snSOFz47jV8ygA7cwA=": "437313000000", - "oZcDDEqV7uM6ZRrfOrqCRuftSGoY0XpAG5-z7sRtPJo=": "413437000000", - "o_2W6TLY4Z6CjjNfXG0Am7CahHUp0VMOg3xHixVv_l8=": "424673000000", - "o_fJIFFbnfEJwj6U1QfWwj-QA99PRKOHGOU_na1hHcA=": "1173549000000", - "o_m_zFEF6G66YztGkOsGRMVAP6xAsN9dP8kDiYSD_sg=": "384615000000", - "oatFSNHyGLaottbGKTDWnCeiN7s_5DT7F5jgB7JtTtA=": "452582000000", - "obYXE_FPEgqa9ULpnRiZNOphmCYUgwgvQvQAuOmeFSY=": "1156517000000", - "obZqsPU_lADjeSrk2TX_i7Dn3K6bpJRJfHtlv3dg_l4=": "761824000000", - "obdGGb97oHQmhjqWZpvcfZ6lxaaZIA2n878NBhlHWQY=": "1133655000000", - "obzSLb7_rHPwEHDz3iCk8qF6ZoFnGzS8cDQHMmb2OvY=": "422561000000", - "oc8zf2VcaK2T5BqHIiBal9HJk8Uin4O1fgNOH1GmY0I=": "545454000000", - "ocJbhUy5_RZM5SUNxa5hPlfSPlrK6EUbxrxONFOLiNg=": "456934000000", - "ocVQkQcWZUp2EykJw63wCSIbwZwH92DYKaJ0S3Ywwkw=": "384081000000", - "odLBMZpq4LlY8xSRCJNnvgYdWOFYLS7EGQzZYq5a3K4=": "1366800000000", - "odLeAgGu8XSwrSnULCh48hVq6Gw_ws4_o2rASpIssnY=": "381635000000", - "odw6qZDHxAPHUsAn9hkZJilDYxsOTZKWrHxlySKGj80=": "1501455000000", - "oeHdKyns2CAXci1_z8cA_sQTukKPsSbyYUT3ib7m7Xo=": "455600000000", - "oeUM-xro-i-Rf4wErmeAU8LxNqCeoyA7ZLW76hjNwrw=": "1511572000000", - "oeVWZ-T0-kklBD9H9JAobRH9HRDCJnnC20mlxv4wpmw=": "406076000000", - "oekiQQUBAe4nxlodUgOVOQ8kx_bkfoGWT2whxfSeGQw=": "539145000000", - "oeyEIHKNKHSIEtWFyfJUzh3Vu6ObhHiNC8lbUjhryO8=": "769230000000", - "of98OSzvKzJzPOi5n6yRM_VNYK6XE9vL1iYLixqhjso=": "464662000000", - "ofmRWOMJzwLLJOAJaU6Nf0z2OKNpXAr9UNFHv69ef-k=": "769328000000", - "ogBLr05_d31YA1oaZQyW3y9dYImfTrXcgcpFcgvlfhw=": "649553000000", - "ogU3vfhr7rm6zE07z3onuQitMOP0rpscprpkI0_wBrs=": "491000000000", - "ogWzuKskmFahrznbGpJqIf_4QolU0GoqOKZ0Ir5KYLw=": "445981000000", - "oghklyXfsJvXb8SVepLYwk6gSYg507GMsOwTCFd-PeE=": "385505000000", - "ogwdMkYLcYrzBJUjcFBZ71iHapKSGBDW-1xCXZvGBU4=": "389764000000", - "oh-Dhc-0qVtPXTbmNzcjXx9aKFsQEga1-BH9Zz8Jh58=": "379344000000", - "oh2M72MbciUo2rVc-xJDKoBfFYfdUfkY-Dar7jaORgo=": "385505000000", - "oh4DZRU8vU6M_9OTnCvollL06LuWgRyj9FdR1_He4pc=": "1272135000000", - "oh6IUs2I-DXERsVlqOZeRW-ggMAqVsurLgvdWm68LQo=": "912134000000", - "oh90ayVTj4uhUyUh2kEPb6wyCJsCvXNQ7neH9JYsgwo=": "524269000000", - "ohLxJJxn1FlTPg9eHPASwyxuXpNSuMtZvoOv84-_bTo=": "386127000000", - "ohTlIkx8l3CjNK_xZyNPa3jnKaeVnp1XfQAKZA3XeR4=": "915384000000", - "ohsBvHOKku0TR48CrxOCH4KFKb63fqnfjnruBb5cYik=": "454526000000", - "ohvOnmWOA9KSg4Ee6UTmUT2B1H1v5YYtzXtYHbCMRbk=": "384615000000", - "oi-2FlMjOPpAGCUYBDDcLnTJZGLD5ItZtahkM-IdVjU=": "1365166000000", - "oiJfxgD1_e9QaPVAdQudiCBIXBdBJd2KN0qrUGIgUT0=": "385510000000", - "oi_qXjkQx3jA1pSPEe8CnDt-jox7UOdkCdfFC0f7RPM=": "6760769000000", - "oidLSccLPYDepdIHk3rIP2L-04u4yrSMUN2lUFMHAl4=": "1363820000000", - "ojBQpXKNq83Som2ZwTXD54ujtewGBVnG5jTnrs32TrU=": "2020895000000", - "ojE0dFhDa6yR3jnySLrrTSdR4uE6weJtGd08P-701hg=": "385510000000", - "ojT9zXFTR6znTF3YflS1SGJyaouJ6ozUluccC1bubqc=": "382896000000", - "ojoy0Jzyg9eqe8lstiCFv2ptfyrLluWMOQaavFStrWQ=": "492397000000", - "okGaWzKJKe-1YMYKI9H7x1X1QyW_sOJI3UaQ5-cuxWw=": "379507000000", - "okU9WjRwsRFy3cYV74349ukPMIQZRxV__fig1VzbMjs=": "1946775000000", - "okfZebvaVhnzcXfbdelK1TcCh8XSlcstWEwWa_RbVNM=": "411085000000", - "okimhLUbpIpHk0V3XmaPCK32rW8SHNYmpdTk9NUdSSU=": "381786000000", - "olHoXQR2gDNfVYYTMtQ2OenDx7nLYqiUtiBSfeFTMdQ=": "384615000000", - "oleTG9tZQjuERAfAX4elfteHyzIasQLCLHqOlrzItTQ=": "463436000000", - "omBrMEvc1iDyLPf6dN32OJwFEVXUTI5_MCAuFNN7hHM=": "416666000000", - "omRMTtF1Gfm_0owl2tHfp4ZjhjxWmfUDiRv31DhR3b4=": "883538000000", - "om_BsLRMOLJG6-2CAofnQ2MOhuVj3a8jkcW4lkJoB0s=": "384064000000", - "omzSAvphABknPE_JXMfrJ-FU-uLEgWlcTkKDz34Xjt4=": "3467029000000", - "on7z6JJUMj7tAM9zmFnzZYpgAO7Opxc1cJ3NuCanj9Q=": "1153846000000", - "onBDT30qDtmSWrwvq85qesiGgIP6eWhDeGKBIXEiMvE=": "416666000000", - "onG6F9WhKYbkaDb_JVTWldXjcx9jFQGqKr1_UpzCTL4=": "840040000000", - "onIf0C2c0dSbVycWZwb9UM2FZwrC5cGOqypn4n-ZDNo=": "562130000000", - "oo4NsTdsaK8PRvICvA4mU050-ZQizHhTCkFPHVQk6hE=": "404478000000", - "oo61LMBWXp1MsUKYNt9u-b6aQVFUS8aUWBWBp7x85gQ=": "488979000000", - "ooBgy2fZ6aZMjNx24aBYOcfDEGh_1_gTku1m0mkDt9g=": "1388596000000", - "ooqT4Et11xEZdCAOtmILa3hIh-SIfOTMfbfGPBqcNWU=": "2140520000000", - "ooyoRZ3w2FQGIACl5H9PNy3qwfga9I7j4MArSKNeei0=": "395497000000", - "opAdEqEENbp96_VAOzr4EUAnXimfFz--ZqkSuPaH6XA=": "448672000000", - "opD0kS_O79bdCtFs03Szcoa0m6OCRC7oH-fkB32ZMBc=": "401242000000", - "oq-umyNXp-ZG6o0FH11d1WDiChXgbCOzwHwumWzCHXE=": "1925957000000", - "oq4o95IsR5q8l0Twvibybjj1sIl_U8_rGQQ3bEb3ZdQ=": "877562000000", - "oq6D2TVfOjCXNkwj6U3nwkt5e5XCknGH_onmSHevke0=": "1132435000000", - "oqaCa8so2ypkQHsR32FAd7NGQHvAqNdEBwT5BSsg5FU=": "391727000000", - "oqnQq-0TrsDkgWSfrZBaZUNO39smaJKlHwk-NLHIA8w=": "961538000000", - "or3VfsAcp4ImGG0OJQUit8lFPcUvtMlp-i2WSk6f41s=": "3369487000000", - "oramp5t1Rsn2zpjiLLih7KwD93_xi-YXJsdxoyKRCV8=": "416666000000", - "oroc15V4ggtTRLsOUdZPxPTAkiBmyZTFZAkdT9z5tTs=": "350161000000", - "osKGNAmzlpdAgQHdsxR8D0VAiVvDSi0Z9hypIOeM0h0=": "3115384000000", - "osPibaY5Ak-S_2Jg_7VNX91E6XP6hmS5vuuWtU0TJ5s=": "411085000000", - "oskOYDMPsdA-d1RfF4OImtwMKiLTiknrcmRZrTrzmI8=": "1200353000000", - "osodPt7HnWuq5e5-fO3JSEzn0jx6Sq8T-AJ71kN7wJM=": "9265709000000", - "ot6gbJktWEv93qFOqXF6JbtYhblDlbPYvKfsSwv9mrY=": "453003000000", - "otohupPjupqY_YQgLzLC_IjxiTdnhNVdN3oPrGTR-W0=": "400511000000", - "ou1XtWyI9YT-_22Phgfe2GQoGsgU9Vw3uCUibh6SB14=": "457382000000", - "ou4jDLm1pz_kyNJa8qe_jDQbsJiWytGmeQq5pkrI2FQ=": "390141000000", - "ouWUfeW6pzmfbsF_yjsVfwu6PBw2QtuVzy6_l7MxsNU=": "753418000000", - "ouebqZrhKqK6y_51GJek3uKiWYSQ4pQFSU_S2yLqWeA=": "84885536000000", - "ow_mHT2pO94dnKuyz09XEL5Wf46U2Hu6DkDC3jvEKdY=": "1859377000000", - "owq-ffMcletwlGQdFUVmihUszyje3i13HfVzpTi5_cE=": "492195000000", - "oxAGe5HU41ivml12hORK-6PoBEWu3BKg77odTLf9SxY=": "3210998000000", - "oxF2lLwpWjUWybAxwl2LLUwoj6J_-3jUOqZdzJeJ-Ao=": "10680589000000", - "oxW5Na9vWAvxTwE2MOMFkrneDM_d0nFFAdg5L9NZSWA=": "1233333000000", - "oxk73cUEJTlKEmNDWviCOKodGLSh3QecSABKFxWYbr8=": "5272870000000", - "oxlmBpZmrkkdY760jFHtScpmuIFNKt10a0GY2MHhSmI=": "397332000000", - "oxmhNWTOrWbJfy8rp92iUv5hEKUUIAvHZbRZOuX1lTo=": "8288346000000", - "oxxlu59cMb9g6OwNJgwXPrRweYLNfMgiEfA0ftFelwc=": "404628000000", - "oz1pFyMrw6LUgtlnvmvAC080Kq-EgWGk5aPKy1BvFLA=": "1153846000000", - "oz6LyWKVFLmzcfrohytVjwYWJXzIx-IAVxY63eOaDVE=": "12429705000000", - "ozO3VskDy15HN5mzlCiRR9ZvlBqCTpBO88Ggud13zEI=": "464300000000", - "ozoDTcKXI5ZZELs5l-fs2cNCfdillZpnRbtuXhCAKio=": "381836000000", - "oztJ5NTbJ1IJop1I5g6Ae92nUgVB_Bn41kaL_RjOwng=": "1233257000000", - "ozzjTNEYrQEKKjDxYZnhzD65GHqyzDzM1lkg8dNN4dQ=": "1553041000000", - "p-FxxQ5dAv6HenSftLLEajHpkAriFiZk7GaNclQ03YU=": "7566832000000", - "p-IrPUxPCAskptB2G4H8TyI0JoBIm_mpBb_r_Ecp7B4=": "386353000000", - "p-Lea72S79RmR8auOxvlHft1c8uXkwh4_lhBjZo4doY=": "754619000000", - "p-SoARk8zcAFj82k0NdvAQZhm7NOaTz5XQPBV9r_mZA=": "411085000000", - "p-fftC9j6Mj1WA5kmXdylwdOMNd9zwrW7pJwF0mlo3w=": "461156000000", - "p0HZtlofYv5YUHSHfz520bsEFKss5nhQy3T7pSj23zI=": "3707972000000", - "p0RF-FbLTXkqIzqsHtl7MiNppah0LCQ5J_yX-KWmLvg=": "379203000000", - "p10C7AOdXMRYRVXisCs_5CktBDCbgfOPGGx6tKoQOu8=": "448254000000", - "p16R9zmV7DZ7qpmL5ednU-qAyUI8MbKn-nO5iNXKAxU=": "3888630000000", - "p16dC_9p9TEj6PljmMnV76O1JlFvcSZ9lhtjmBtwcHQ=": "384615000000", - "p1BdL_H_yfBqfvwKn-LrCRuoD2MGuMjgQ4xqVG06Rl8=": "453157000000", - "p1O7oMCb4IcVAYp-PllkT1HXz99Dpp7MtthSerJP1OM=": "1538461000000", - "p1ScJOYvVZcOAE4j55hcx3_sbcAkCpNxQMCTmxDROmU=": "2352765000000", - "p1m1_6bmxHSnyUzg9MLgjQcnz3byaRw1Vw2f_8PMH_8=": "576384000000", - "p2cW1daDNuEN8NuuwUTEwBvn6UDaF1V1ZxTNXGws7Sw=": "716993000000", - "p2fgymTBrLZ9-DoLebXG-f6a3UVVlA9_ac_bkPWr0IQ=": "3968602000000", - "p2jsL3RH8e_kXjzc6JmD_BgOUa0d24xrYBcwfs96zN8=": "384615000000", - "p3EM3akrKixbuxTddHiP-6r2_4Fucl4hOEK725ltAEA=": "1815718000000", - "p3HIizxd6TgcVuthXERxpjPL_a_Fh058pulwgFYZJYg=": "386248000000", - "p3NeWGwEdKd3J-qZktTzZZHrq-GYOjhVWl-Flcx06A0=": "525780000000", - "p3OU8nO9cGgfOXh_Vw9F3Q0N5OIuelYIsFw32jsrn-8=": "4176295000000", - "p3mC-AHiisYS8giiu5VDXTyS8KqIksxjG5IOJxDWCkA=": "1136494000000", - "p3prpnh-PdjyTGu9J4UJCnghjVpYf2BRWs2CommxROk=": "458982000000", - "p43bHg0C21L6B8QkkEGjatQ9gdAFkuiohsMqdx5eSVE=": "1765241000000", - "p46arSIo_QB0X301T6Wga8fYFkOjdvaluyMnzJkETvw=": "967244000000", - "p4r7g1wZm-NFUzey-TCAbU34IHPYEpiWH0IdupcDd8g=": "384615000000", - "p503r89JJ8x_r-HOr2S4JlGVwNx8vQbT4KD98d3Zgf8=": "455125000000", - "p5RJIrVHboveH0NR9EvxxOnpVm6mQI47FArJ7SWQ928=": "1538461000000", - "p5VEg4KeybblWw0vrEo7vLdSi37E7wgdpg9730jr2ng=": "658754000000", - "p5dnz-gL8UR759w0dJ_HaIDl0ADMNSjfDp4u2VPn95c=": "416029000000", - "p5myrRtjcoHz5VSj7mNcoCmvIhB_7F4ghl5aH6p2Sgg=": "387383000000", - "p6JCn20sDd0cby-JLOEghEpz9VXLqg-D0BJaQBQjFko=": "384615000000", - "p6Q0lCi9Q3unQEEY5xjDMiJ93YV_J0h7NVR993sDMLY=": "425032000000", - "p7-yWJ1YkaK00H2nrAccGPaA--jtC1MfDkSDCZJFAEA=": "384615000000", - "p8Lg8zuslKmAYO6QoBVZ6ze306whSMw-ZH-sQj0hOu0=": "1147383000000", - "p8tgKi159XvL3xyOMhEpXCKZlYHphAaJcLCQGv12_YE=": "3706439000000", - "p9hnNbtoHO3ngInLntvTWXIo7yixryAZaSbN2QkFo3o=": "500256000000", - "pAgH1_e8JYSdQjhgr4_qXDk4HdQmL6RW58wpVoZ0zOc=": "2110984000000", - "pAkp2OJ4xIQ9XnrsfdYqIK8MzR0tJf-KIzvWX5fzQ9Y=": "384615000000", - "pAnMfyM8JqmKJf-U5-QkLqJ9oWUVY1C34_SjD7mz0jc=": "2317110000000", - "pBBRma15JEonKKhyD38GcLdzz_LzUugLjGJh67lW-3o=": "769230000000", - "pBPE_LPoMNBgUyKwnpxvae40GGIBdVcjoMgzRaESNL0=": "682426000000", - "pC8Pn9h8nBKMMGwznZCaIEfXcCAi_HYO1Se1KaHqJCI=": "3912515000000", - "pCA4en7VzZIZHukHNZr31EtNXIakayrrJdUtYFOd8eM=": "2198076000000", - "pCpgEPzptzMv-yZSK5yh_g9Bl-e-JAidV7GqCnqi-qI=": "4115343000000", - "pCqrck_qrm6icO0qRp4K-pjMN2x0Q0AofKhJh7ZSCNg=": "384577000000", - "pCw0DcwV6WPyYLpz22d_TU_hE-QzPMGXUiV7_xTeQus=": "1156518000000", - "pDFvEs_xHdrIhPlQTvqfXICGp6ZonzQ4kurQxLGF0Zk=": "769230000000", - "pDIhy7kJnIB1e5Qan0lCtqGf9t-gl9Asos0w3HH9tyk=": "383939000000", - "pDMmiNKOAuP4w9cBbphhN1t-R_X-nDbNvGmSpyxuqeg=": "385261000000", - "pDVZyxJ0Q81aK2Ddk2kw-BK-t-50HbsbVwi6S_XCS5Q=": "392243000000", - "pDw3KVsqOSQ6qXxXWVIvEBZ9cphl2_G8B0WvrsU7zDA=": "1158838000000", - "pEqMeQTsXTi4wrdtMxonYbobphLPXswyixmEdjjlC20=": "450825000000", - "pFVlVGW8qDGFyssB2PW_MB-yYAxdKAcLV-3LyKPRGTg=": "757122000000", - "pFiX6g6PME-hnCrmSvA3cHy6DWohnQRJXUZZKaGXEvY=": "382338000000", - "pGG6-X_Ep68bFSgwLr_jkOTI0i1nP0DRYfxET0OS52I=": "469487000000", - "pGR7sG-Xzq2BfufT9O6OnSaTBEYgJSeYT7ipBOi0C20=": "676021000000", - "pGRWgI1upoy8kidFjv3dcigL6twbYpakkMCGsTIaMmA=": "385506000000", - "pGSGorPx1214E3bFleEa-64PDhnrFvfgMHIx1mmJlmY=": "4245191000000", - "pHhHgZmshGw3i1h1teaQo5-w3tAqZKPnuwfvgVp50SY=": "769230000000", - "pHxoge5V5KKFNDHVTygW_T-eVxEihS7nxf52DQ7hjdY=": "11610510000000", - "pIAx4xVXO-19DRPUOJvckblKkjYLnq_ho1SPEs9_TEs=": "3855067000000", - "pIJSTjkjhU7ak6GogAnHIJy-c1_DGplSITxDldTyxSI=": "416666000000", - "pJ6OdDDUOVCw8CJm1sIPkp5fHNEwaOV46lxpPZ3G460=": "386111000000", - "pJqCZzcnhn2IrbbwptFyjVT6PhZIGBfJA0CBAs8TofM=": "382344000000", - "pJqJBGdDKVA7P3UOzLbeWsALFDaw2c1lNlde1JmlWcU=": "769776000000", - "pKXHSyCUja0FuEjzS3iNi1D9xOmC6cLPS5Y0FRgQmwQ=": "833333000000", - "pKgneUqUbXnP4Jk3btvat7bJGF9vM9Yn70AdlbWk1ok=": "759620000000", - "pKrgRsyPfF85RNkRtZxNbyMNqw0ZFvRkHQuYEzaGLj8=": "390286000000", - "pLQ5oCgPi3upTQqHxgFWdjBA_b24EA95gLHNBy6AS2c=": "2310726000000", - "pLfxG_rrGovF8cOR9yOsaPOrQ-WIzU4Ieki6GXwSMfk=": "487972000000", - "pLy_9nqZL0GJFtxx9ukyLVEU4G2GMnJhnV12q7PfbLY=": "1889920000000", - "pM8Nk_8_uE61eJ9YV6AIY798y4xMtuLDoJDKPVgDXI4=": "460487000000", - "pMF_BWSbn5E9s7hR6sBsa74m_RDHR6lsVkcg2uIXrRU=": "391001000000", - "pMHuZ0blyEPRHUo8BziUPdwewvOwlvgDx55c-rnN26Y=": "411085000000", - "pN09GnYhoMvynvQN51n-uXpp_z3zjKabFNMs1_KRaqA=": "2824797000000", - "pNX5E6ocjGtOKmlldpA40ishOOtN7XqAhUV7zmzcyaU=": "384615000000", - "pNbO3_cJaHouyqktCHmMJQHfs2l152DTLiIHKXiUCZc=": "2289694000000", - "pNfubbipvZ6-wMR8xDGh5TciP6t2YyHkB0Kph5S1ypY=": "1921418000000", - "pO2ZDQV9W98u4sOGpInKoHzAgQ-bhfY_HJDf9t9CzuQ=": "381436000000", - "pO5MUWoSTCKffTAuQujmyHGwvA7XgKDA4QZPeN2zPvo=": "2321821000000", - "pOATWJn0KZJz-waT2EXIATVyN1hfRP1FSLyTEw3lDgs=": "384615000000", - "pORnBjo_fdaXTGN7LYlgeSTOdXzSM84Oixi6pPhac5U=": "4037662000000", - "pOWJnu5kVaATX3WdlJ-3W_eZDkrPovlR8caV4cLtn_4=": "642211000000", - "pOqURm0fBlBaa2GkcjqQYOIrLMN8aLI0YHLMCU3u98M=": "830205000000", - "pOz4F_mBkHgiI2uTuF9vvxSZMH3lZzmy-J68O9T_HSk=": "985784000000", - "pPrKuvxDqTk0gjcFoF7E8nNgA90zhSF_R5WNP1iG28M=": "459911000000", - "pQGW5OroDRypbGZE3cWB4O8VtIGOIhMEUvAXDaScBgY=": "4233446000000", - "pQZBIA69dflDYyRnVZF0BmQpAEyCKsbOOWodazoritk=": "22727272000000", - "pRJaUIKpJxG7UslGTlQEudggkFHjLMPn-uz5hffH6I0=": "4730014000000", - "pRdCgjA63bDzKrZdCjn3ZQ4JC0j4r4eMAHwDLxlKEm8=": "4176307000000", - "pRdz_qRCr1IayWqf12cs6AGz3Rg5b30D7eK9Mxbl1Nc=": "4147755000000", - "pSM9rRADCRU--uQFWopKY0w0whqq2Gvkh9yhkjGGHxc=": "557501000000", - "pSg85rM6Wpl0SJKPwHNMuZi1yD3eNfM9NCnIcZ151kM=": "1363636000000", - "pTa-e4ACnNPr6K-Anil4piOB6kVeZ4q09h8-HN8tcMs=": "657517000000", - "pTojwVdo6IS0VB_SRxSw-1bKG05Bzfo9F9BVPfjL9dU=": "387796000000", - "pU-jgm49g_P7FOGhZbAMmqr5na5dS6Xk-ZIbbdUm4W4=": "415404000000", - "pU9xI2hg1h5QPrhW9wMHkJfUlGOfZY3Z-4pGabBWFvM=": "682960000000", - "pUPRNmtu5NvJX9BlcUyu_lEWYz4dH4kyEm0exn8gumA=": "1153184000000", - "pUu3c2sc4F62E_eiXv5wI0eEpn6k4EXYLgHr6zF74m8=": "416673000000", - "pV76FiG_xPsWx55gPxYy4z84JmTgeHGfvkMt3_hGV8E=": "470601000000", - "pVBqDvjRFSW7jGWqYthV_L182pLEo5-gp2Sa_5QYcIw=": "1923076000000", - "pVV2U-PM9St8RmdiknUk9S5uslT940S6RKEYYn0S09M=": "385507000000", - "pVczM5JicloDMeUWDkDeo5avAu-LXegsZTMGnsm4wrk=": "485068000000", - "pVtvogR5ADRiZ4gqYOpHA94hvCtW04s8A28JCa45xL8=": "2387875000000", - "pW61iGhs6NEMFAY6_wxILa2fFn3Tfo13IdER5rKAI58=": "382899000000", - "pWBd2J4kMH4rCPSGAUG1bdQwIeK8S2ZjGml69P62iEs=": "416666000000", - "pX4NFBgIEuUpb5rL3UcBZnmE1GVbDdn9Bus0j2OiwjA=": "448869000000", - "pXBVdkY2GsTf7MHOsxelRsvaN0Z7I3sC0LpEEK5aqFg=": "3842547000000", - "pXGqsKLRgNUVlkbX7YEny4RP9qIXiN77RFuOcGydp4E=": "1408709000000", - "pXaCKpj0N7zFKKhuymwzQZC05CgvXJ8MgIubJKUJLVo=": "426403000000", - "pXibtdlGExwLEPeRfepQTwcNrwrWKHi5KkhT8GcpwkA=": "1451675000000", - "pY77YzMGboG5KAy7jKI4prlRduX36tZHTV43hQ9GjvA=": "520076000000", - "pYSJEHVyNOnG9iB2EJJ44WRjEPe-7Fi3rxHcrirx0Zw=": "1250130000000", - "pYir8Id0m-xt95StpPN15yejYvE6W2T58gni94Lk3i8=": "449667000000", - "pYqB-6P9cgjnWBhdVky6T4hmE_GKop5SR27IF1C7nIo=": "3670892000000", - "pZ2Qqj7f-RaAd4BmoS6TkWCfIvIpFOlKQSA_bZCVgcg=": "511764000000", - "pZZUy5N0pGF_w6PvPEbZqBSa6UxD5hOhyuPElvns3cQ=": "407808000000", - "pZte3cEQ98qdueGRGDLEjAhJ22kD_1QmKi02EFdsM2c=": "385614000000", - "p_0_GVlz_FfDtml9IiLkDQK0m4zIgrCx8qeYshQX3Og=": "404755000000", - "p_9DSAZu4_IS3OiajGch_HhbzexMXjFWjn16WomCgw4=": "2719179000000", - "p_NGBun8HKI6nm1Eikh8XzdouhnuTkLoKZT5SCAmlqo=": "1687254000000", - "p_bSrm7u0AkFjBIt3JWxQm9Reh_L2Gvktgco6ovyOF8=": "750727000000", - "pa2BYEd9YLfIGXtxL_2RNkD438VO4IkSr-w-77-fzNk=": "766913000000", - "pa997PtipfCuR9XlE9tJqV213oc74tFyAwp5JmUg7wY=": "924724000000", - "paOq1_QpbSmz4RNixTGeJZPAvz3KeHLBb3X6wc9SuMI=": "466150000000", - "paP_y837FdwHvyfYxbNKw1-WdciZD6OILYQrWTuaxrk=": "3288011000000", - "paTEioi7eDXjOdjpe1jaQV3NXvaNZid5eCqAijcpXlo=": "391132000000", - "paXQuSaIcUfQX5XM9fwU_lKl3mHbLiqkQF9DkXFrgb8=": "384357000000", - "pb6tICwlMkp7kQ299zl_1wrLCxzgbnXoUbtV1delmos=": "381802000000", - "pbVdcUlonpXb5JGix8aGzmuRUm2qaKMIjBuhoJt5ICM=": "4686346000000", - "pbqNqQ-gCARMbvsi-OYBd8ed-FRbJ31OowtlwwdKZbQ=": "462146000000", - "pcHnZLYbGF4KFp6HRa0P2GMOVMYT_lWfM7q0ms3oJJ4=": "385671000000", - "pcLkL3ndHx9Vj3vs9pOjHD27-3Z9vxx9tf2nVYdplQw=": "454545000000", - "pd30EQpdhvgO0e765ZwZHTzmNUYQVaNubkpfMsitOII=": "382667000000", - "pdH_hJAB35jBVMkxIsMqobSAMLP1C_J51XoJ6tIXMGo=": "384615000000", - "pdRr3X8qpz7mg-G2999UOS78sqLod3sRQzB1zv7__QY=": "384641000000", - "pd_T0-NSbOyYAJ8W6CnkxoGeIdMGxY_FzNCTzNepnuM=": "921904000000", - "peHSHwLEXq0X9u8xTgmav4CzS6sQ_PB6d4S9RnRraDQ=": "411085000000", - "pf5QUqAoXMl8rCaU_LWg5dCIHU1LchTiOyetCCoVFoI=": "415629000000", - "pfG5Hmu9JPhKFQEZ5ZiG1-_qB_pZZ--D4GEU6WEWS7E=": "1254545000000", - "pfL2YHbWOBRJyhMv8k-XX_UmrgK2sLwCH0MiGGmYcCk=": "507660000000", - "pfh27ZLFmqGfZcX0c8BLDXKVswBRQc_6PR2DSm2Ds_8=": "2307692000000", - "pg3TuHM3M087uQtpQNYu9j2Sd0Tth2puiWS-eAWubMk=": "769137000000", - "pgEEswff7AzBO6uQJFcWUm7FPxPDVRCdWHfoPrKYiPc=": "3700966000000", - "pgJVjxGBFzdbMcDL-wSiIgw5ZLV72pnBoSm1Mv7qGR4=": "452464000000", - "pgMpcxiSe7Upg_PrM-yvE1YdsUjQt-9K63k6LIg8wT4=": "524709000000", - "pgTcsEiUtjKXMNO8g_eBLSODYwdUDXDrr9DN18bDQjw=": "385505000000", - "pg_iWJLzwJTt9P06UFH2HMTbaClH3tiIYRTq-fdB86I=": "1538461000000", - "pgwz32J-fiHD5zSvvjTlG1XiN0pXvJOBs774h8tEodM=": "385507000000", - "pgzuAL-40a4qhSyA41Y_Rfb9hGGKQ_6JVczeyagYRfo=": "2654493000000", - "ph0fdqriJj4Z5SOS8oh_YFsYxEk_f20TKOGVkzgnJkY=": "1693482000000", - "phY9Vn6sa5G2LKhOH0RPHju6ldAH9c25SsQjOVfNVhI=": "1138610000000", - "phloADDd5Ud5nrk67Vbo_Xhohd05ZtzIraRsAaldSeU=": "455600000000", - "phxW_43fB4j7zXC2gwSePnigZo58KRBwzsOrougvTxU=": "1275273000000", - "pi0wg_VgbG3MBdriWkNMh-_2LgMZ92hLb1lDUEf9W5A=": "384615000000", - "piAqGfwsSYjktifzd46_S_YtMyZB3r4WPAdH0q6rX1A=": "469988000000", - "piXzZBsxs3ouScwcPU-yd98kJhjZAewbjQ4MkHW0irM=": "1538461000000", - "piwTm5hnf2WOgnCfg98mNaC6Ci5fqMh8vE-bG_y1WWc=": "1337186000000", - "pj-Yw8JTnFP3nlzZwVB4x9z86JzUXIdHGM2nrKkQWq0=": "378310000000", - "pkMkbMGKNIBx8XovmPzgM0b3iRNCu0kcPrhaZWTrwQo=": "1538461000000", - "pkSLI2Hr3xt9aJ_pslT-SIcqkuY7eXG5Ekl1ADtnNoc=": "767923000000", - "pkZG5oUmcAJ3nmULN7sD1GVetKBSzMJ4K8Oeq2f5fg0=": "4545454000000", - "pkfaeDAHTWJK78VLHhq_609r63fnhlkD3TPQybUb8w0=": "2055429000000", - "pkwBi3_08H6ufboaPWUqiljttsPtpbDc756icpNuwsQ=": "928285000000", - "pl-KfVsSWCGZRtg3dmtRKvue9BAP_Or81rDuHLnBrK0=": "925700000000", - "pl1g6C_wIKQdZERaw9eiDd9b6dVm0GlQP1uX0QBUiaY=": "508538000000", - "pl2haxOyr2NkPQZmgjjDrPtXTQWXx8Dl875gyjlfxw4=": "2469861000000", - "pl9N629VBzRbdteFV2JL3DpyWb1ij2LeHohS6Gz5DOk=": "1041666000000", - "plI6eZ-ui6V_7lkdiKeyFzx1tCjhnxyZ_45cw7EwbnY=": "378172000000", - "plNQ63cjpGodH8wzwcQIA6ENe11MOwB6Dqs2uORlR90=": "906006000000", - "plPUjpJYi5dhFbyP94t3rPTLcdlhQqh9t7m21b1WGrE=": "378849000000", - "plqX_BUSkM9zHM3QqrPDmHNsN_Mgc14z9DMRgRgWbHg=": "384615000000", - "pmBn22eTx9cs4fefr0xMmD_rYULA-C2WaT7YdENc4Hw=": "411085000000", - "ppXjWH2VOaxh5bk_5X7OV59BPb1ZUNKKtrQAUh28LAM=": "2116140000000", - "ppxtdmggelD0rybKDro7pguOb7XX4WpGokf6FkKxKCM=": "500384000000", - "pqGtRbxCnQTR7RwFVSWLJxEWxxMLXPy0rc4-T5Cxje0=": "1349104000000", - "pqH80wS_d_ybzVXkgrtZ8XAvMzpW2vG4x5ic9KnO8GM=": "460854000000", - "pqa_pi6vuemZZSvix1REMOGCSvEDMMJNt2skX_GnQ0w=": "4253981000000", - "pr8julHNU9x2HJBGXqrTUydYz_DXCLUeSSyIOTJlEC0=": "454909000000", - "prCBHhgq6fVGbKy8Mztfk5jWc4Vco3Diao0lRWrY01E=": "384615000000", - "prT3UVfD0-BCyqbWBSyCCOMZobtUbTs47G6m-iWEy2s=": "419895000000", - "prjV3PmUykgCQheuQjCv44nYlQDoFxr_H1DQl2U3NqM=": "1153846000000", - "pryftLEjsAKtQsYVN8grfaQdhQXJ9UxuF5Jz5ObIytw=": "1156532000000", - "ps04WtX3qK1DBBqteNutF--QpZa29n4NA-eKeqgddW4=": "1157881000000", - "psCgAalV5syUJmFC0jaASENtHJZksHNJbainuz_sfdw=": "1923076000000", - "psvyGHF48oHg2cwiEzHNBXXzDGwD_Ns9K5dwpK8rjBc=": "1390187000000", - "ptU8sgHGNsBhBmZRiQeRWGsWMjvw535WDYDf6rL6deM=": "4176365000000", - "ptZbzQZOnBlq2IHlZQEzJUTej5SbrpLtYYCm8id_Y9g=": "413437000000", - "puLcBTbiSFUaHIBWK-L-jaaoy706VeM1NFvBBLXGI7M=": "678830000000", - "puxbCoICJT6_qH1FN_hjhXNBIg8WNxNU4bBfoT9bj6M=": "2059457000000", - "pvAAohrHODKNBLpIn-SRIixSFG2xKjxFNeZ68P9BGy4=": "1156518000000", - "pvKHdCGqcncG5ERNXaDyDHnghU8vBjGpmkRt563XDAo=": "377448000000", - "pvgc0yvPWblm9N4LC44g1020tXgvZUwcYnjHPDmrdwg=": "454545000000", - "pvtSlsQlojLNrOUlxOzAwG7h6dIVN12Z5Lt6HGmMWG4=": "417633000000", - "pwXpr7-_7_EsmPzunDmK2LJPdg5YNYIc4bxcYda_R1E=": "779369000000", - "pwocHkDZZdgco4T_iBnDDV7Dbne6APpm1jvjVjYv8yI=": "1153182000000", - "pwvw4gzRoowPXCcFiTVssSnm8z27mz8-0DW73RnZunU=": "585396000000", - "pxYBA1synrC35McvowSfw7Ccf6vqIFPxZR2XAbDehgc=": "846153000000", - "pxYvYtBJzPt_ADKt7TFUJrFOKidU09Uu1aBBCayjQsg=": "576923000000", - "pxnm_UzZLavv5dnUkM7ceBYrxJfo2MSH7e5UXTplnik=": "519376000000", - "pyR2NWkQi8rOs2ATCJI788qOYD_XNpC59jXTf2Ubv4k=": "384524000000", - "pygL5Uq3zwfafkxLodAJJ5EaIUQgbUEev2cpKPw1wkU=": "1001241000000", - "pynGH9NL5q7NCx1rFj4X1rb9x2lfFH2UrXo6xzsOynQ=": "898300000000", - "pynYdVdfNLgjAc5EqVnnULD3h91L1ouazleES_wfo3g=": "766272000000", - "pz1uRCKJK6c9Ifv6e49uMA5jCP-w367FJp3sDevX4eg=": "769230000000", - "pzFriIID6Wni_EHDRo3COlqRxHm_N8BVPWhnnnQc4t8=": "389217000000", - "pzHRVXdQVPiixWhAXp8Dsf48t1nSpd8DRL4L-SreLuE=": "410625000000", - "pzKCy-KPEMNYh51a308kR4dUTukYMJieGqsO8CRf_SM=": "379230000000", - "pzMnR2o66HWEN8H8s-Jskl3UD-CxhsSni2pFGliqRd4=": "769230000000", - "pzXApkjWn2HTLQNfmVtaWVAk_pkjER2E0rCvfLFfbtg=": "385770000000", - "pzpFgbhUwl-nIZyPb8NDAfeFVMSvYN3v92o1XGoh7u0=": "2344096000000", - "q-Ol6waSXdxPfm4wl-S7iroQFPvhMV_tknFAXkB3Ue4=": "390141000000", - "q-iUNgn33ZppmCIdy0peh6NPU2QowhlpGdwaULL8hx4=": "1537111000000", - "q-uM4C1UT1m-gsin5noNNUuDolgUtzq9lWrbjnHwX90=": "1265685000000", - "q0aZtLKeTgSK4DOowaSpBIfyElhhSbBfdrb2DYCbNwE=": "385507000000", - "q0kAaYKJlp7SiPOph8eZbipKQJiiTQbK6fJhZNoIFvM=": "378404000000", - "q17E_e6ceE3deqBGqrntu04K5G0O0dUocSLzQiU94MI=": "3846153000000", - "q1CHna7DjORwgUe2nadhCbLFX3LrOFVG5qUTaYspfYs=": "455125000000", - "q1NWRD2LE7TyHOS6EqaDG2ZYX1i5BLRcNSWx-_qEmJ4=": "385507000000", - "q1UddLxBpVUZCj9ye9cLOH_7GBmGPLtM5UoJ_OgicMk=": "455600000000", - "q1gHo8MhLlkZaHsMnNukjiiRb8TuIM47HORS3QPOMzc=": "418059000000", - "q1zZdzXou6HkBfRTPpyFDi6KwzDvPoO3jXWaubM8x5k=": "658869000000", - "q2-g8A7fagvDG9v0tm6aANL_1cRYh0mWDfSIs2FZMzU=": "4150966000000", - "q2JTvLvoDlhXM4aka6EEsN7_-8rtUDTT201RVlw2AV4=": "457150000000", - "q2TS74FTUnvECKdrk8mQuVOqA_q6TkbkgWSfFRPQgMg=": "384615000000", - "q3XeZSnKmfJEBnT4VivKde2vrb3Ju-Ez9SCupM3VA0E=": "455600000000", - "q3lK5QXTNvjfbw2AGRrm0Xxh1GCmQffUXS1dHs_mNVw=": "473331000000", - "q4GG-WkYxMqIlBFulSw9NOiKTAkyMz422u0RCY8T7To=": "458561000000", - "q4ou30RchQy4bQwB3PYHlz1bvfqDKJ6wHpFwYC7YNi4=": "763672000000", - "q4rqSQaoNMDT2IY-LQWVXRIvyz7S1x9chKj-IT4Y56Q=": "450033000000", - "q4ybFkPknvL_6UuZBlTPWKSjoq-o4PvuGmVQN0NjIUM=": "1153846000000", - "q50OH3QpzGx1vfgZBvySK0DA8sgv7Ifw640UPjsXVi0=": "1154640000000", - "q6CpE_kI_Tu-XHHl_O_MWGZLD2k_7lhwCNt4x99W6Ys=": "449726000000", - "q6IpdhlvtEEueTAzy3ODz38rgygBsiJx6Ue3YP3jw6w=": "454545000000", - "q6R07QPUTsL_losg8D10szZ3I6kknLiA7KU2IcVImkI=": "991666000000", - "q7H4-ZucBowbD5jvzpJ0k6SHNkvKA1G2tm-4hYTBumE=": "460854000000", - "q7_j1H17ywM6co-tcxMXaQxTujL9PV36itxJ5EpIJSw=": "454700000000", - "q7vNG97HMr37oABmrhIPMEY7iXCL_i-ZHcFFlqCRqFw=": "833349000000", - "q81wfSrZM_FIx94i91QwcR1yEVe69pWXQ93Z7pxZSoY=": "454545000000", - "q8HnkWGYdRk2yG-lneNateMMCmEBCeVL8D2cgWV7vPA=": "397332000000", - "q8a49RrL4Ku_KMP79Z6GUs4vJ8oFHKYmYf4wK0SsVP8=": "463152000000", - "q8p4VyW0ChcyFGF07WpC1bIHpQTcKJbzsQb9N816-sk=": "2041119000000", - "q94ba5Rqaj2fJHZZ7jbb-AjWudK43HPLreyTtDfbmRg=": "1153765000000", - "q99HEfXcMXI5835zHqZyytoTvi7zq3RcIMgaGOloNb4=": "383014000000", - "q9FeUeKyGIDGxI0tjHj-hL5aueSiYNxmbYDBfULf-rA=": "2083333000000", - "q9_RY4Jxm_BnaD5Rrk4IgJh74bvK-QNrNMxgRzURzdo=": "416673000000", - "q9fv--ad-cqR1QHhupZDG4U3-E-_tDTCmvPLekQbH2I=": "816083000000", - "q9qK_4qm4Gfn5ALsffMtF6QQrJT7U5KFvZ0DABMWimk=": "554039000000", - "qAMmdGtgoEmyIztRpsiKZwedmDf4ZTgnC5qxgtNJ1rg=": "7682181000000", - "qB-Io6QgbStkEuqFxOjiqenKrk4KKVX6PYUL3PxAEo4=": "460608000000", - "qBE3x2ZHTFsHFWMbkfUiRTTJs4UAc6v6189LTPpjVAw=": "33315847000000", - "qBK9ZMC3Vi5nwPzBL0_Oja19d5bAAhFmHFCPdSwr_zE=": "469811000000", - "qB_LWDvRrxUaDMWu8JYnosWa14xTWR6eC7KQvLKaXb8=": "584259000000", - "qBcdpRWPYmTaxRpjo7B1jm_nA96YGSV00MKGc7n0sbg=": "424465000000", - "qByJMWS2f7xlqZeIfdQYaP9clZKZKQJqpS9v1iVLTk0=": "4555854000000", - "qCCaIP-P1HSX5L1x598jsl8uFYOtP_3WiDo2QdA8C1A=": "3612316000000", - "qCGF7lkkRZz0kH_GrzjxYCIwU4wUJ9fbOTMH-e5PgD4=": "2089305000000", - "qCIftt36bCUSpqnpeO01lKPHSTufoGuZsVAZ52gPHF8=": "12278012000000", - "qD6agiNkdLf33hVk0bwDY65effuDucOQM8ta9xaEIRk=": "833943000000", - "qD7k3Dc_XdB0iIzWGVPPgtUgSVq0WZnlGE5zW8jWeY8=": "755094000000", - "qDfmHoe4_kfwTNTEz7UsZ4Na8ImcLtwpjsoQERDtmaA=": "453442000000", - "qDueV_hFXBtPTyLB_AJqERKqAV7BeQhVMfM-YiRURXA=": "629001000000", - "qE8DdcznfGd-HOqQ5SA3sMt4R5qB-LWTHLSDSxU6gFE=": "5157569000000", - "qEjTMNAbI9lyPPrSjuj-WqQ_MLq7SqWJrYfzT_arQog=": "462743000000", - "qEptC8xUP9jAZoJpTiIRXzRw0SkRFjmh0cAubienb8U=": "469811000000", - "qFMV-hWB2ks4RC_Ut0h6uYmxGh_zRAyqooJJheQhDSY=": "388750000000", - "qFYm8PTZHXs5tKVnURNz-vqecXdeDekkRKckWU8IJqw=": "909090000000", - "qFaAyJ1Y_2VpnkKBVxpPo5OlY6G-dwqNLSqV6oXr6Ls=": "385505000000", - "qFctS43-YWeaDQ6DLWoEHhbaph03wcFsOzPiYnK3dt4=": "1365086000000", - "qFmemZbdy70MFrLpcjKOdVRoZEmCwzmnI2HJTIEpir0=": "465040000000", - "qFtEwQwQOeflAk961Qsbdy0AyHpJsUOB3WdU9HfuTi0=": "9947939000000", - "qG1NvwdSdhl-GlLyniN2EXRJFwZtbdpDQR8fF_P1VLU=": "385510000000", - "qGlC5eZ7i0AEAaTqrrdWuosrDBM2tmZddixyIllhTq4=": "378592000000", - "qGx8KA_AA9ZiZuoP9y9I41VcE7Rc9F9BsM8mUS5Hoi0=": "390975000000", - "qHFw9BygCia5UPLhuQ9SH9rI1s7_tTYRQg6gywtrMyA=": "769230000000", - "qHb4VnIjuqjZqPPDQg3SslZ6RX038v84vD2-bREbVa8=": "388566000000", - "qI1ur6erU8DfL2YcWDRJfHQ-ECrixaFbgKNdB7sfzTc=": "890119000000", - "qI450C7p75ATTau293ogxhMWAMChiHRvifuD56WQUKA=": "1377378000000", - "qIJCuFrpPBpZpQlOHnn8-F2qf0c11aRX8GVwqNqqj9s=": "407808000000", - "qIvKO9sC2YdtIc0YYBskCEj30TVhQYCC3ynUWqcPOkE=": "2018954000000", - "qJYPIYnF-VOQm6xWoRqHSjI8FAxyhtnEWKN35AoRxwM=": "23392175000000", - "qJ_5qXiUghSDBsiP0C_NNEbMkriPI77kHmDbtQqYmZM=": "461856000000", - "qJc0dOAMcwxWrOuxYvWlcd_o6DQtWe9mS3-ghoiziME=": "455600000000", - "qJiaVCTHmiS-jwh0ae1mDGYtnb9Drv2Q6IRkFOFFhwc=": "810075000000", - "qJofa4fCE0VuHHMmGmgoJIYgH0gHZK0BVHN8SpR4ImM=": "417134000000", - "qJqLzlBtTOWzyehhzJGxXcZ-q9LHIVn-F3v60lUglwk=": "3805127000000", - "qJySBEHgkBQpQqz_vuMZNQ8wdspsGDK8X_4iIAyHN6I=": "1881489000000", - "qK3b7rEnQ5CBVzBAOffvop0NSJ_UeEqblKEN6W30zZo=": "1136363000000", - "qKUfSqNJJ13LUtD9c11cCFY7C2Txi9_3W778EnMJ1dc=": "456104000000", - "qKhFkfz_O6PrFhC7pd96U3AYvmwh-NagF-r6SanWiKQ=": "2499999000000", - "qKugZ_Rh3LdqU3enAjse0sZC-r9ipW9YVxI_PuEnwQk=": "1393853000000", - "qL2zLd3deQAnG9lFlczkk5vn9emZXER1W7tGDYkMemI=": "9624191000000", - "qM1CR5DqVwL1kuK9v7MorX-82-0VTNKIjJkO4A28LK8=": "407609000000", - "qMD3SC89IM3PEF2Uu2iwTTMDomOhAy9vIWrC_JbyNZc=": "927791000000", - "qMlbwQtUfJQbQA5jqV1xpLeK7GoNZY3uKhdrJOjCz1U=": "384832000000", - "qN28fQSDOp7hKVDDJXc_1UnjsjLkoUOX4Nj10NS1MAk=": "1128091000000", - "qNexIrp3gjKo-7yZIXW7v76lkEdR7_JbIrpgjoldS9w=": "454617000000", - "qNtdgS42tCTiJZPQXSLQFJeosYN5XSZZyRkvCYNmzSo=": "935730000000", - "qO0FBTUSnQi85ergkbez-K1wwp6Cm1tSlqkI4g-g0_w=": "385505000000", - "qON0cF9-rPqQeHQr3YYbB60pxM_hH2Sde3uKQ34n9SE=": "1586139000000", - "qOx-o1lo1FWyuiHJimw6lfOLD1boiiyiqSKA-Oui920=": "34592056000000", - "qPMEik8nTucNqqJY94UGsfV_0EOf5PLdp5asdTYF9jo=": "764453000000", - "qPe9YzH9kzNtUmwbjWLgnvYOAsFq6zF6_Yyv1hOVTI0=": "469837000000", - "qPq5eRCh6NyNj28zjUIM-gk59ZVW6k-h6XzEzNd-af0=": "458711000000", - "qPylZ6jRW1S-XXCbp-uGk-eIKFKtel_5Ny-GtE8l4v0=": "451287000000", - "qQAjggJYjcf42YL1Z9xvE_VusuoVVxwvNBZxzPRt7S4=": "379344000000", - "qQT2u6_4H1VV76ZSP39X0pkqtQWOqSS3uw38kvLonKQ=": "1286892000000", - "qQaUzo3jbqSY0gzrOvnBPfsOyzHj4aakGz1qVBszCIg=": "911463000000", - "qQcZ68XyUaVf8qQcXx5gGyHc-57hp6dfdPFFtBAtmSo=": "415629000000", - "qQlv-suAyrAwR0FIHm_dvR-_gLsv3lfL9QkGWJKO7l4=": "422859000000", - "qRlp26QTf0_ElErbhviQoo5Jrgvco0EBf7UkZUuLhv8=": "999999000000", - "qRnAUyV0XjUYGYtSqO3ly5kv4nYQnXOyAh3-G-33DLs=": "3846153000000", - "qSFgtoK8Ub9smDMgRJhG76Wf-17gPKdfYUNqWAy10E8=": "4267500000000", - "qSdtKzo5teNlGL1I9VGZBgeQpgiVTHnVL4kHbOxRTfc=": "389964000000", - "qTY696oaKDAJrL21guUnLCxkYXCDwCKkERWKxHqz7GE=": "996689000000", - "qTb0YLo_Xd5RwTwEDJTE1_0sUVpCeHRhJLs-qn2WU9Y=": "1461538000000", - "qTtLyhlasAl3rokBmbB1wyzOriggD08ROaSF8oi1raE=": "576923000000", - "qU8Uq7j4xR8hEWwkaBaPe7Cix9oA9Y3wzsI0jYV-3y4=": "16666666000000", - "qUB9vdwvGGOFep6_ITUdOt8gNwp3rioZ3nj3rWuiysY=": "2552040000000", - "qUGmSeY6WNOa5fiy0qNzNfMpYrmzOsMwfypUVwDFTds=": "2070049000000", - "qUIO9zxR8v_sba-G8nKBIqVUP14OIbPC4EBg_GkGceA=": "381140000000", - "qUVCkOIFIJ83UZkh7w_W1ySSQJ0JNuvKS4LsPbbi_o4=": "385508000000", - "qV471TnVwWbKBsz-0UPULsfy5ENTZ49hPTlmqFbUH9U=": "755015000000", - "qVQ9OFoDCISWlpDUyZXXY9BANFxVqX3KH5mooB7fRn4=": "9081628000000", - "qVoIzpYMjbGOV5Qc2JEhlTAnAsYPPUUtYbh-k1mLZjA=": "1402137000000", - "qWlZ7Qhuvu_2Whk_8an22rbFfhpFAZeuM0pn9X-PvnI=": "403061000000", - "qWxtE1Ehe7_tVNpHY0TlpO5otOn4flQow3VhWrOE6fM=": "1874999000000", - "qX1cB2WImTW-ly5uOuDhRXqdr_tJnwQGx1Va-_nWYRg=": "454547000000", - "qXWZyoI2ElRfpXlH9oAMB6r7_gO8MKc3g5rmljQ_0u8=": "419072000000", - "qXb5xG1_rG5OmICFbgzipggyrDBwWAwZCg7F4lmqKDo=": "499999000000", - "qY-KFBnQKkejbTm1I8a_hXpZW7Si1Q0QqYkd5OYL1eU=": "2055429000000", - "qY3Gmbn9JRWmYoxXZBLbbk0mRKhnx271Rm1o4NJnWxU=": "808033000000", - "qY7OPxgXEFwjYbUu-pepkwT0qaDve4RJaGTSTfMjm2c=": "384615000000", - "qY7jSG1w5Tc8hQ3EylDz6S0zksZfXJxm4n5F5Ub5o1o=": "382406000000", - "qY8HAzFYX89wimLgqC5v8vODjaxZag7I8B5hrJMuKKI=": "1852931000000", - "qY_o97hs6lQpRJGpIhqapa3zJuRlDEcRTRrNKRKshP8=": "4154615000000", - "qYgW7cE-y338hqYntFKVOHVuGmrwEn1dbXBbmiWAh-g=": "472287000000", - "qYjK-SPkqXSyFPiGjXYH-cziPg6XY1rQcVYZOGCY1GY=": "451307000000", - "qZfxJIAQzA1baNKFOAfAbUZUL9oI6ErOBYETF9Nus2s=": "2936704000000", - "q_1ieVlMDySOWCmEZQPokxlsTTXX0-e3HDtM4EMU1SQ=": "452802000000", - "q_2Q5NDw_zlna-52lhIUo8Qyn9h1OvWi80U1SvVrT0U=": "4846536000000", - "q_MzLlpqe3vrVd8Ph2GTQx76guR6NA71Srw_YByPBrE=": "1925909000000", - "q_THHRf6KpqIrkHGDcYpLkOXsnurro4Lw7IpFK_fHSA=": "4520394000000", - "q_jV6nmHHrQqoatyGwclj7ub9I1mVJ-zzx6vtwJagaM=": "759041000000", - "q_thfny8GqURzlvXOocPj7GFsyjW9Fz7P8moIGgv5WY=": "384565000000", - "q_u9qhLcla_W-tcqrbJvn1n-tdPrRtvWPKxiA87QuXs=": "393135000000", - "qb6_rL8PKD_DVHiBmECZjj_tmaAHQg6bvSwvNIQcBkc=": "423374000000", - "qbUQS8nHTnSenGc3L7VxmEHdxedqVeAjeI8JVDS39Mc=": "488025000000", - "qbmNdk3EROyAtuisQBzl6E42RDw-aH2typ7Kg3Y6b-w=": "784894000000", - "qcqVNohiHbSkjuImmngbLFUwbmOQvdGq3pp8YnL38Us=": "1721419000000", - "qcwzUdoPb-Wa7BndKw6-pTxr3PswYsZVYRgCbc3c0Zw=": "411448000000", - "qd7VjZPYETpcw3UAIYcKCfeNQF517fvj6WHUJU4Oe7s=": "10060660000000", - "qd9rylSBpvYs2qYqwzbOSSbA1LWLPy6h-XxNk3KhTkU=": "1257478000000", - "qdXJ1hj4tPSxsg147nm0exEbMuOjqSnbok9BMQ6hidI=": "6677723000000", - "qdXtuAmhtcGxvV3a4wNo763Umuwk-5ygos69yVgbYKo=": "1383627000000", - "qd_ZGCu5xV2Wu-mxML3f-S5H2ZGgP9KMDVYcSCmt-Lc=": "658219000000", - "qe1NvTKQVIfVMx7lhhTGH9dmQWpu2m4GWynBSBaMa_8=": "384615000000", - "qe3tA6Ebe2xqgjG8x2ARYtqXyZDIkEsiGfCdVQwCksI=": "833333000000", - "qeUsKUAGmCDQhuMLy4FDa_Vtei6Ku9BMBxAb8GfI5VQ=": "411085000000", - "qeVHZDWS_bxr0bqg-NAy3D6-eVvM2tQTNYcttYIocN4=": "381839000000", - "qf1cQ-_TNfiFuXc25tjpKLPWdyu_9UbdhPyOOTXBiX8=": "1457773000000", - "qfHAJbDiw8o6_c3ciBQLSMzE2-xBbAMy3yzZMhgdMPI=": "4157594000000", - "qfJ_FdGSzfkIqBAKVNV6KK_2ZfTp7Nm4vJp7YmMUcO0=": "3846153000000", - "qf_u-1dPudplp8OlGBQBFHzGolQkb2heDmXj6NW7TpA=": "4076923000000", - "qgdvFdEYsQrN8yYsJ1dkGlxct0xDxNOS49asr_IQKCo=": "899685000000", - "qheBkLz9rFltG9rSGNc64fsE67fNZzTXAdMwn5xej28=": "2083333000000", - "qhkqa-fMHiCqC1n3uFBKrQK8j_h8dLJuGkIAb8X5DuU=": "928092000000", - "qi-IzFHoSCFe2_UZ8N_Rl4PWsNHlxK1bTN1P3CYvs4Y=": "462352000000", - "qit1WpxlfSFdrrvY9FUWBQr0WZScHF1zlEQDexmHqEo=": "1412171000000", - "qjF6W-ehKYfFZkOAOGg06RHdArstkyKmGf__lfIbC9U=": "834393000000", - "qjMgFl2fDL_-qmjLEvURfA4v94pD6Ikd6GG89FoFSAo=": "833347000000", - "qjN18Hrx33zDjbejkn4nXPeSuBCHx1_SlHTXCSoUsMc=": "9425788000000", - "qj_W49XNHiGcdoJmco2Z6fOlGDha5itTWFHvUXQ4nAQ=": "381770000000", - "qjwLl1NPoJ1MRQp-Ukl3uJd-2JflsCYg4vTnvzF0TAo=": "423055000000", - "qkX6dp-f-SzWXp6cZ21xCeHdGW4nuBo1cmv9CJNVM8Y=": "399564000000", - "qkiCHmQUSO8ryVpEcUQIQlvjjnuBVajq0DCPZnEIHMs=": "753621000000", - "qkp_xJjOPXjV7cOxlIr2Zt6a2iieL8wf3wkmDpT1exA=": "385510000000", - "ql5XEQoA8MoCDxWcUY5Me3R4Dykgtf2UsYWVvjWp_Nw=": "411201000000", - "qlPaKRuvECVR3r69jFmBVBgLHZScO7k94eo6dJqy_WE=": "383228000000", - "qlVtwn5gptqrOK9aOtk7p-YF6ZRz0NfyQDQtTsbuFeI=": "1361868000000", - "qlYSs-ahCZosY5fdZNiUZTBNvnqk51wAu01TrMLU1ok=": "473265000000", - "qlZ580lZ2OEhXoL7s2ZrmP3SWkquPYAVHSy-jREoODU=": "586129000000", - "qluQEajn96aiu5y7GjwxgJY6rpkYsg_HgBhEwWwtifo=": "453379000000", - "qlwOkSQgpthnxVwgG8pqItBOuq3Z5z4_sRD7UHceM98=": "466315000000", - "qm05ZTPrjM9Lus2ujJLMq54dhpVkkbL7ZyswKgeEC1I=": "384615000000", - "qm0p0yfw9_w5snm4AQ0tNrqESCDh61vwZ5GnsnceNYc=": "379241000000", - "qm940No01vE2CoIrzn4GvElG4eEHzsiJwIYRv5j5gpo=": "416666000000", - "qmKWzRp9r2jU7n7K22Nh4t-jtipynjZkG2J2KGdrjlA=": "763247000000", - "qmejzZx4X-X7QZ9NVoNgR8cBsdjk0ITUWVI5KEO7O6s=": "459502000000", - "qmsg-09ES3MofvUq6Bz7Pf30W_pRJ3uU1fWJCU4VqSc=": "501408000000", - "qn7EkPI2b0gF8wwizDkLiO0Sdd-8EGDDhklL64WL8W8=": "463837000000", - "qnXWMDtNRAeTwg2wRlOfYGDDkmzSXf_NIGqMt999sVI=": "479215000000", - "qnmxppvpgv6aGldZT5l2r67nEp12fGbO05ltqJTBV0A=": "390411000000", - "qnqOAjcUQ2wf90Rq_uqfbqonHXF26sRnVw34hxfKatA=": "786616000000", - "qoKjkRwJC-6ptytBLBr1m4efd4LkrDdQ1guA-mVgWuE=": "501385000000", - "qoNsjb-MnfX6gQ3yywH7nwqobt_N3urPm6YAZ19oFhU=": "11599855000000", - "qodjyKASZayq4nIlakCJDvEFqGNGXhil_vJO1xpTuMs=": "3439984000000", - "qovcM12fXmdVRvw7T4w11x0wSDdvoDls7mPG0KZ7MM8=": "385528000000", - "qp72ucEko3m-sOFPn6j1IqLddMuVbC0_AvlgC-VEaWM=": "416666000000", - "qpRXFGTRPOr6TCkWj_pa2UkwPObdBxtJ7ROn9e1SWOk=": "3701614000000", - "qpSoiA7uQyxHcrvYVr2ZAhkQxZHNcXJtBMZj2Wiwe58=": "4579438000000", - "qqqrlrRqsRI5g5IKlQTsm2ql5MYgWVIH3iYYcrbv4yM=": "1195909000000", - "qqtCj-owigKtlfeOLf6FGAeFMcCKLsazXW1Z-5KgPIw=": "464757000000", - "qrMS11W7y4_Z7bhnqnX3bepJN5gur-qmGNgZ2Hq2ZF4=": "1364008000000", - "qrPidhjtNJ2MF0oRZMO3u2vKXqf6oLhddx6fMmnZBpQ=": "460066000000", - "qrZ3PxR4rOeSGN9-uuncO0q9KAvA3b6zedvC4y4Vf8U=": "449029000000", - "qrcl6eqM5n19PZpI8C9f2x6VIf2hDjEgYPbrChJiQNs=": "907032000000", - "qsBBqYUmJcBbXBhUBJKR3B1j0ot8KsV7BUdCcp0-r5c=": "1858140000000", - "qslni957hlb7MChu_rSUQzjx7ewB8z4O-j67E0cZfzc=": "4149387000000", - "qswWckUMN5V6COzn0L09OmET_JgGa8y1U8ko_HC22kU=": "416666000000", - "qt9677rXV03lIRZNdJwv48mMHgWgYFH_9SbXjjYfexw=": "1251868000000", - "qtBFeA1fFdFbyDifVLcSyWGQnYOV97Zm11gnR72cfeg=": "411085000000", - "qtLgAACGCGeoRvhkp4pL8DRR76d6ZPUtCF8jaWRYeeY=": "379344000000", - "qu2-keFrex0IuXWbwEAGo1dMz9mhXZEUMMD-vGm78JA=": "408533000000", - "qu73t6IX0lC_ZVHJodIznm8WFk_j-1LwjkrUEBKFUKk=": "384032000000", - "quCL5le_OetbhgnD_hjNVUnwhCx3kiEIxXu6kz8ktpE=": "451692000000", - "quFY0hGJ7t-kul_zaRGJvzlsPkoaY3lAlIr47S85N2k=": "572707000000", - "quPb6ni6q4OmvKcjBPWEXgR1hgccR3r7ZSZEt1a-KZo=": "8333333000000", - "qu_VfioEvYryFZd3IWZhebJgEDJvvXKr7TvhYKCN8gc=": "3297987000000", - "qv75YbG0_Z7sc03lZ4xEl1ae0FypOaQCaBoWcXD5Y50=": "4565083000000", - "qvB-Vy96sU_Yoif08UWMqEcHoDNkemjdQz5co6Lyi64=": "1083094000000", - "qvff_I6o5Ar_vwm5tx913NlAc6uAMiKaFDayTPRaB9Y=": "457943000000", - "qvi4kZ_uFDhidslrgtu0-ohuWtOP585Ee7PvhuXNOoc=": "552445000000", - "qw2125ZWe4YldnMRtbX3b4Nnbo3SN8lgslk9ne84TEE=": "1806216000000", - "qwl3MsHnftHtn-rgnNMI4FRetBPbmTWcDqQGnG3M4yA=": "1363636000000", - "qx9sZ9_s3fLVUFpCWA00qmR9Y7VQn5Xr2YHBRPqHQRk=": "384945000000", - "qxLXlC0ZBTX9YaPNSs2b1lPJZfZFdeBTwYP9GGprCmw=": "1952189000000", - "qxWDlQcg6s6cePKZDzd5CROH1qlM6b6vO55nsBaWynE=": "452992000000", - "qxddNj79bE9waOPVhhI7zgJi8Ze3HO3I7UYeDStCGDw=": "785002000000", - "qxlr3A3Whw7QIwoqsypIjr4U4AIJr-SHSgwxO6c8FPk=": "975157000000", - "qy1TMsgP2VkgtHGmqKupVC-B90VsiIjstQ0Y5Q2_WeI=": "404478000000", - "qz160yxarxLRDFZmzWDhcrXx9oDgXmj7fv2cNGLkNI4=": "10454545000000", - "qz6W6EgIlUtBha3bA8yzo_heTR3A6gfZHei3JSwGiyo=": "768695000000", - "qzpeVoqdUce7qr9_OKLXINPgZWrImZD8Li-eKEvglUY=": "579056000000", - "r-xhv7T7Z2FLlk3tNFxJlPROXd4GYIAhkw6kCdmmuCM=": "6550435000000", - "r05EVa9wYSuiYL7vH-UkZkLa5bVe-O3aGsdU2QCmPa0=": "1644524000000", - "r09oR0YjFS92sRaMZ1WkcYCRaJtTIlhJeRO10l5qtBo=": "463099000000", - "r0JZjJ_DTfmZqZkBX1dN2lkJA8N6jJIZqEKMzWAyQ-0=": "382394000000", - "r0Wpzs4AKWc1AU4Zj3jdBQkr4-iUcvH1Z6rqs7rInfg=": "917710000000", - "r0fUnHUXJPIZeSazYZpefWs6XdSPWj3IAjSvb1g-UCU=": "463665000000", - "r1eTAJ9I5T4IYFtOcXvyv-9oBJrssTpl7y4hQljqBXo=": "384343000000", - "r1n8ZZAiBBlQAPrSqyj2svzBwVPWDFKH7Z9YoDsi2Js=": "834556000000", - "r1oen6ko8KusLdeOGT5b58Yy7R97Rv3JFCzcDgJwSq8=": "424758000000", - "r2Gn751DmjZcOL3FKt4Iry7YQkQNJEGrXBLqXERza30=": "2267514000000", - "r2PoxjqxRjFJeDTivPD4ur_HaI_MFUjdXp-ZpeHWllc=": "769230000000", - "r4_VpK-Upk6D_y2_FQ7Q0hXOkdpQCNs9bFihwf2fqOo=": "2909090000000", - "r4_gzQaIfO3affJwKOxNMEXyLW-pBxPaU6YLBgY4pTU=": "1236867000000", - "r5BMg0ovFHGhZGhWGL_2oM_z1ku0KOZuUHcEZGLTUaY=": "1842458000000", - "r5Dryhy8TAPjhB2WzV_HLNN3lDufa6lCcEc9ALD0XUI=": "810428000000", - "r6Zb2fKEhp-HElDFRdPNbDd-4DDiLlZhCSTP1wt4YR4=": "421370000000", - "r6i9g4WLeRQ5A0pLP0W6gPZywn85mB-Bx7aUhfC70cI=": "407469000000", - "r6jKQFDFe8fYzUlJcuCkvN5eLdVDfCRrxthTETORcNY=": "1371815000000", - "r6mogDtJ950dv8MqzxMoVQqBoDR11GBKXDtdPA3i4Rk=": "417632000000", - "r6pJP1glaAvnVvHilz1ZK-115H7sNsqDNQbodYxDgSM=": "457014000000", - "r72ZD4ef-BzxKJHucELrkg9bDJN1ONjZYDOiaGWoGIc=": "7568023000000", - "r764ZjjELAzNv52Dh3by2L9r86wIOfae9P9k6Ebwo1c=": "1947974000000", - "r7goFfGD14l65HwfRPCQ-tgaA9nStAU1YF8j7ceBt2Q=": "87373125000000", - "r7mAE6XNaNZXy0Juahyx-8E7F3I_9F8ZPVD6bAEgXKo=": "1363636000000", - "r8-oGsJiM2wzGqf9JCUc8ag2t1q98Ve06npiYo4z2Rs=": "385505000000", - "r960G1L0P6PApTJqMkSiqW8XMxv8uQyEmSRpf_4N-NM=": "625698000000", - "r9PLrwXDuhoQUlpiY3LqK87kL-XoED9ZOsuYWW62kAM=": "384619000000", - "r9U7iGSbJ7al6r0o-ewMueo81cJ5AEAW39RM-qQ5mnA=": "2310726000000", - "r9_Azymw-hD4AaH8ZNXeCH2kCHFV0a1k2NvnevtB1BI=": "500960000000", - "rA-UfU3qbbKop4yo9V7rE0dmS6Bxm_drv_9LTbccNmM=": "1309650000000", - "rA6YZ5xb1vqugmjpNeAKspoIkEuB9zelEWfKxQuj-ZE=": "769209000000", - "rAATObmUJWZyHE4ngX-UXH2NnbQQsp0bCekFdeXCzUk=": "577459000000", - "rADtc4CfY7FklgEQHfN2Kur8K00zI2KW0qcnHUlf5tc=": "614756000000", - "rAJUA6yjrWNzc2Zv0NVOrpaLsOcdtIQmfwZmXPw0Lws=": "411085000000", - "rAy70R0q9cbRyx_19uDAAtZ_2WUMPRsOKCm0qVRHYTU=": "457529000000", - "rBScmzycdYmoFuOpwvjD7s38Quu_nR1OaybKQaQjd2g=": "591202000000", - "rBc1mY_2rIjhTWsWW9SmRMYHHn5GpmCpR3JKyqXQaT8=": "393313000000", - "rBjlyK1uchRcf6NdmjxdejjAT5It6E_4gD6cg3Dj8Q4=": "380811000000", - "rBphXET7cD_r3oaM2jkQeXtKMZ5dmAojVlFTMMhBSLI=": "2916659000000", - "rCVXyHbE1Ud9hcXActSdZdCA02nPE3UxYu0kmEpdVmk=": "942307000000", - "rCWDPayl2dlZnQZfJ6bNb363caCHyK7rYIs8WH-XZl4=": "989074000000", - "rCb1_U7ezyIfJaRh2rqjGazJjiuCl4GLBVi1Nqh_UDk=": "1739719000000", - "rCf-Vi8_c2nrKRIXkGv2WbHMj8wPKtjQtAG_hqon3Dw=": "530057000000", - "rCgWDGuzWkptmKvPZgHGPuAwDzJy62qF8Pg4fAS4FPI=": "384615000000", - "rCmj9S4qh4tGwHOnM0YUJQiztpVVF9A1auBh5W5jrGU=": "834035000000", - "rDzoYwOez2_rKbXuWb_DDCMwLTfo5PSNsvIBKao9KaM=": "767961000000", - "rE-8VdYASkPq63uYby4bb60VKSV349nUWCKlqCnqr-8=": "725589000000", - "rE47dLx7lWJlD7fKmklvGCcqxQT2TBh3_VVZpmNDpk0=": "1230823000000", - "rE4Fn4MDR2TdlXlrW9JAn0sFAD3q48eu94x6pkN9XRo=": "1001538000000", - "rEQetUtkkaagfkpkblF9vaxvC7co_7bv-82DCaVoKG8=": "749759000000", - "rE_5vqLwRgjeAD5J1CET5cFKy7aZKSjn0AvI9Ttboxs=": "846153000000", - "rEzkxrkWHlxrC9w8Ej9s9rDI35oyFXELHM3VmosDO0g=": "452450000000", - "rF00KwOI7tkizdlSNgz42JcUvXU2pzoJY9l0P1t5yV4=": "382394000000", - "rF49gt1XU3lVBlz7ACxOZ1z3DzHAKMjwQw7G-JlT6S0=": "2379170000000", - "rGMau_omDaAapUbdxAzQtblLuw2PApo2yx2c_2B19Rs=": "468609000000", - "rGsTUetLe5NfimE7XlG1l8iH_joqwC3NWtVty97R_OM=": "416673000000", - "rH-qB2DdesEvCpOh5k3FN6BFK6yvSURs4wWuTrIQQsY=": "1684885000000", - "rH2qDmpzb-9AxmB5orvNnJZYfxbpc9TrFCaCYj9JbO8=": "2083169000000", - "rHXRp36cGvvTJJofrOsifVihpPhyP3mvWqmnPEG1A4E=": "417149000000", - "rHYEvmV-TvH0uPQky9Erxv5zcB2eBWF_vgELR7MkaZY=": "634433000000", - "rHdOY1HHwRFWUL5yC_AP6n9vChOnY5vxrU3ZujfqtaI=": "483147000000", - "rI04LqkwArR9YkqQKsmpC4kJwKofy5ct9G-0rRadXYg=": "385505000000", - "rIGMAvufyO4evswSPiXAv1sHAd0JquH2Y6CsVt1yKIA=": "1392516000000", - "rIIwt6ouwaNpjRFDZwy_wRhEus8IgUOVu--wFU4pQpo=": "395497000000", - "rINeawlhXzJzE9ntkzZHmA1pBUUM5uvpZQVO1RA7HJI=": "3844869000000", - "rJ4XAg17G9HjD3Bvf4lsc3EESVQ2Se2BzpOMVTgAdag=": "21900149000000", - "rJFxjEhDWfqYRNCHrYGNfbaGvIcuQg1ayNJ9qZcZu1w=": "411969000000", - "rJPxNeLLsy6mOaXI4MYuNzyQ0WlgUSnkMCBHs-SKfNs=": "1874439000000", - "rJow4us0ODTEEU-HnqKlTaoVtgvS5ggjUnFgCH4ASwI=": "1269606000000", - "rKCgWPc9qr1w39SmnXuZyFf-nsBXcohZKmx3CguH-yk=": "771961000000", - "rKFQNkwgM0DZxZ-_cL6zwnM-NMIx93KfFA3WDLarpYA=": "1156520000000", - "rK_SkN5WkQOtwFUPBZetkKrnde4Oev1ckXVXX55J_sM=": "383228000000", - "rKtAYpLoYROm4kqbCtlqwy0rhTn2RnTz4W8Y-VwVtsQ=": "790998000000", - "rLC2CuYtsluBjV6IZSunzaVttt99v4GvLtym3KYm5V8=": "1252901000000", - "rLEHot9Gzs80kW0ke_W3boNXcftS8Q_7hn7ukM2Z0bk=": "3846153000000", - "rLYXBJxw1Kg67E3RpfEfzw3AOp4OdQEZ1l23ZooRlCQ=": "385505000000", - "rLZk9YqhygoS96y1qBxiIQ5K4OR73hxevnSy9_2uoVk=": "1418627000000", - "rLlx6vZUl8qKTH4heBEA2Eky6Uw9oq1blG2zSizgYBE=": "554324000000", - "rLzkiIePYlNMiWXfs6r8h0VMCDwSSqP67aa6vQtFDuE=": "383197000000", - "rMNAubrlu3slkkazhklBbopkyowyTwBJmAgQNHwJ05U=": "376837000000", - "rMjarbPZdrauNuT_IFQc6xeF5d5avj61wDHUajLdf7o=": "847421000000", - "rMxlDvRcE05gMFX5Z5P6rQY7Bq9zZI2p6vRu0j6vZAU=": "416666000000", - "rNP0jb06A9L0oN9pJxQq1Mo_pkuFuxLdq6CCdi2ySJw=": "1548420000000", - "rNl7iOWzosmgDl_-sHkuzKmbRimAQ9XObxy3n06sRdU=": "1156519000000", - "rO-pMn4PZB42ov0r43fIZxZH51V0BM3Nn0b04g2omeI=": "4166666000000", - "rO3WFK6WHnx7RsXVsNRQzZBURD6It_mMt74tqbMproA=": "776245000000", - "rP05kTrlZ9XQjDFpo0TfRuBMbWMzzUeFWNpTIfAKvJQ=": "384593000000", - "rPKkvWlZTUJh8UviL3qURuA8kRWjARWC7Ql6Atmme7U=": "446725000000", - "rPM86Wv84W8YESwJ7IDx55jOAVWpsBKRbG-rBUfHiLo=": "1376653000000", - "rPT8sp9vujz1JXZMW4DHawDQW_RN9FzKpJlcvQD98D4=": "770335000000", - "rPWTfDS4Y0_d1QHs6mQQ_EeL-yDI5vAp3vSnMjnF4AM=": "384615000000", - "rPrxJsdLMPuJBm8PCO49qxpSFxG_ateVOiuNZI6BIlM=": "8339611000000", - "rQQvKIyGoO6faNk21_R46RzorLpG0OEcuTFhhu5IVIw=": "2080650000000", - "rQpgjM4UyR4N9QqHKv8DGvT_vhlbDLffZIaZCFRXOFg=": "376125000000", - "rQqyUy-IvSuUb0axTehroPYo3hcXo2b9Y4ccH__S2ps=": "381767000000", - "rRq9h1zqB9V1NyEqyEzngCKWOtZJdvpWtdPRiIELNh4=": "1223425000000", - "rRv7NYKTpiDhY8To1QA7QYV08dcZA7aBlszkaU5nKXA=": "21071538000000", - "rSKzrQ7cb1m4yDsB-Vyi4L68HqbcXLRrDX1oQaHCPGI=": "2916637000000", - "rSMHl7y22Eg7c81dTAZRXpZD37JbTDZI3cTHSpfymsc=": "385435000000", - "rSRlrDILeinFjNAdKBXXdtgiNleC5jszos_bC9s2s4Y=": "384813000000", - "rShNt6R_gFvtcemhHlQkPwxzzhbkHsQG5tFDzTECSwo=": "3793448000000", - "rSsVD1D3fiRjTk0CxG2AupZxw5lYkKgy87vnUj2P2bQ=": "451521000000", - "rTSu4Wq8PHi6ix-LtrCt0q5b7njzRBN2UBSh9PyZAqs=": "416666000000", - "rTY4P6Uf4ZKw6qAykJnasnJp-4DDzfSk4QBh6vhu3uM=": "385505000000", - "rTmSMvlq36fFIj9v-J3ljxxSetwGTv6PzuoJe5-xzDs=": "463398000000", - "rTmVwrrd5U_nz6Ci_Egm1dUd9_7hizBv5EZgQjtuD7Q=": "2316509000000", - "rULSIcwMiwQ0jS5CRoLd0PKoAvPORBiPD2njBJ8lq9M=": "500210000000", - "rUSCmUN7wdAcNfxBqagAV-BNr2l6EY2-4E_VGKidPuA=": "1002567000000", - "rUUH5FCZtiCdquYH1QBVRyiaQc0ln-_QwXp7ctE7ggQ=": "917239000000", - "rUzHeQCTzqVFGMVaw3tQ5h24oljxEdYayZyUxzaxIvM=": "351858000000", - "rV9zkhZF-8wHNGOhzEyYvH6aZX0cIkOFs9RwjX6cbtc=": "1873637000000", - "rVQYO3I6Ng12ATZOI36AolJX3xw1_fOGrNA1gpGg24Q=": "384615000000", - "rVQuc61YLNhgcIbPPhdNBbmYXLpYX445bxUx92nKo90=": "834184000000", - "rVhVv0dbc_xfcj8NdW-AV8l0wbuaX2ypGCO1Vy0ycnI=": "4038461000000", - "rWDQc_Nwgo7lW1f5t6TeQtxfCxqKjZIvryCtlS2FZs0=": "384244000000", - "rWGXh0Vf0euDrAK9IB9dsadX91sMgxKXxQXJjekftW0=": "2499999000000", - "rWbc9EsZV-9d4Ks2sIm40NtA5-DCGVbMs-A-lQZuBWA=": "4582599000000", - "rWmmMC5FdcBYZWdoGfAUR29BoGfRf_ofNj9ftDOtaik=": "1822400000000", - "rXH-jWzCOLx9XnPpVk9CAXB-qsvdCbVzr1dHfY8XEZM=": "385731000000", - "rXJaPaR_Rv2pyPNQIJTe53nvzo7ERJjlmov_UE0BbPk=": "1223425000000", - "rXgzAT0Tni2uVwYFtNvQyQ97wuU9eIvSyHGV5759Kf0=": "861307000000", - "rY0EB7r8ib-M6VEzD_fkqvzWnGnPLG_gW3dKcbT0e2s=": "419607000000", - "rY8x8Zh93tIJANgRwNgNwKyRU738xnIX9kv4glzjo7I=": "2485046000000", - "rYe-xIWBcWhc5j4DtZ6Gejl22IxaGiHtI0bQIelJ4DU=": "1156520000000", - "rZ2UKDRgxcqv95CRn5CEj8b7McS8iUU6oddehDpR-8o=": "971226000000", - "rZ9AIaj9vSjHWC20-n8R7Ii7XfgNMvvDyryZ3xM22CA=": "416901000000", - "rZLvShBWW05jR2R5-WLS7Q-Jji0jBZj2vOWXZBzfjEk=": "378507000000", - "rZSYQpPu1oPp-WrlHlUP8BuZ7L90BoTjjQSgoZK-AW8=": "3539775000000", - "rZlluypr4_4dABK5r81Wk-qkBgSBTJMIaWEZdoMLeYk=": "455103000000", - "r_-kPxfhP23pJyGIVvSF9ERlbVmF1nij75R70kcouwk=": "384615000000", - "r__wEaTeBg9nSbr9rr5-GQ55-Kbpe4BVamgwtWhNvDs=": "2692307000000", - "r_aRD6_6W3kxpQPO5b1gHXGdep6yTwww1AM-NHW-m3c=": "1918404000000", - "ra579ixwg0deHCy91u3BkYDfzP1mdJV7f--nuy9QQBc=": "15961753000000", - "raRGplaXz7Gxv83cflZ7tpAIKv_jMbakjOO-_7iYNHs=": "413111000000", - "rab7nlH5eggUDOiGEk_yI9v662eg888_LFgC3A-hkJc=": "384615000000", - "ratuvPcsXoWr8WOl-6BW0wwq98-1iHPJ7U-gpV5cGt8=": "385188000000", - "rb-Sa_L1dY-1iNSeLDOWOf0Vt0cpkcFurO2flzJP4do=": "454401000000", - "rbQVhdKvDSgqhR9Ej8-ykQ0MtvHxHl7iAanZrXGxL7A=": "4230769000000", - "rbTTW20RwxCPMiS4GtbOV3t4u08JJ_-WT_MS7-O58RA=": "384615000000", - "rbmo8xFV-XY00uTquibd4Dplexho3ckKVCEjL7fS1YQ=": "672689000000", - "rbnLUv_-3e64XNtpVsqwA1AKdxfU4DpwTDLfIa7xDQk=": "6590534000000", - "rc3BqTzQMdCYknx2MVVmTICt-W-SD62MXZV5hldKxZo=": "384250000000", - "rcJb3JelWO6QlgWrT5j5qlZVeEyoCTFS-IoUlLCZ420=": "3855061000000", - "rcSKFpvIqoU2HMKDEfyjshGH6FoP9ii6Prd3gLLU0FU=": "378257000000", - "rcYnwH1PUBgRDoDD_6Uk5RjkrwawfBV7l7t5NsvLEyc=": "461649000000", - "rcskFdBaBPdX4M4gyCCJIrGuk9gMMaVw1MYeoBIYKkM=": "736060000000", - "rcvXcKflqGRcgNkYdGLm_tSehkUrfAUVQ8p4TpOEEQI=": "417501000000", - "rdLq-jzv5Fi8-GB-5AebwpaIHjwxNiGG9R6hFMqSDXU=": "465044000000", - "rdtmdkhoktxscy60BvqGoEex-qtC3kZsDel4dzgcgE8=": "377242000000", - "rdxvmU0TZhdbUKixBQw2SVGPJN6wBgaB-ya_Ok4Fh-k=": "388728000000", - "re5H3eSL7U1NR6M0xQ3BRLqjz8NpmOrB2-O-JjEY1hs=": "909312000000", - "reXoJ9UjPj8utpPeJyHJqewxmqjtvmyfJTBBMHI1TnM=": "430653000000", - "refWOfgbuPp6_FQkW04jRHQszRYg6w_sT67q5Y2w2vg=": "384615000000", - "reg2aoBcX-7T4O26-kd01PuntzOEAuh3TyPXZnkNfLg=": "416666000000", - "rehGgW2pu5Dmk3bigwZy65qVVaW0Zchm5ctdu165-7o=": "378257000000", - "reiJVPAMTREnPfNkD9pzN0pQZ_Zsr6o0mmz_B0sP1Fc=": "383021000000", - "relsNezwXwvV1tOBLgl1kWMq68BJ828c9DS-QeZUdQE=": "30352916000000", - "rewFi8_GvX_tSoSwOpdOF27AZgJ2dwRa646pnSgYY6Q=": "416666000000", - "rf07FEfOop5YuKcousnN1YeoIETsydaJLhXCGkuLP7Q=": "1422218000000", - "rfKJGNhLQgcEy9kKR9oP9zofMzG3gzwWwJBNDgX87so=": "417529000000", - "rfLcvlULtF4f1DQvoEN7caE48kA5gAn_FQinjUgJiCU=": "461649000000", - "rfUPGB9YjqyKpPHY0fk5W78esKi51dkxNLECn-7a7hU=": "7662809000000", - "rg45DG0mXXLkMZSyFHQL4eHFcQ_cT7ZtywpMN0LqJ54=": "3303953000000", - "rgX1B-t-wD4uoQXVUy29UvChqMAZaBHQ69LYXm1DlSM=": "790998000000", - "rgetgbKz_Ex3QVZkYAJQhHx9IXebIIARMnnYDJuZWJs=": "826486000000", - "rhIbAidqc1rx16hxsAd7op1dlHD8Cq3tSEJuPPk330o=": "922143000000", - "rhIeecthHcr6S7pDUk2-oVUpvFkquoVTro4sgBkltrI=": "379344000000", - "rhb7dityRhloHVpRphXl52kjYdOTFYKsNdck4uKuEMg=": "1134175000000", - "ricfwNoyl4G_qX48EV-jGJB6tH4esiLTskfm2ZeIjF8=": "2087040000000", - "rilyuS4enO09XfOLQeqCOlEFdnZaJpjZB3x8BRIFafU=": "385506000000", - "rjWluRI4KwDjIvPyjAl7hmTVQxLSl8Tofe53ldnnxw4=": "455600000000", - "rjYU15IJ2a6Zr8oLqtYUu4pmovc6-pjJ4Bij7b8J_IU=": "460310000000", - "rjhUlRF8-KiWrFNloT36h-oDDzWmUsvdKCmfyu1pZkE=": "384973000000", - "rjiRwsvn41dnBRvUtWx4CPzFV8_GvoqYA1GoXa6qFpU=": "457058000000", - "rjzddDN6f4r9dWQ3bxwe4CzvIlv0HY-iNMNObwtCU5c=": "385506000000", - "rk05z5-sFblpwM1ZoV_nZvjLJd2CoEpkGA_8xN885mk=": "378072000000", - "rkbiZTw37FsdG-d9ljBR6-46YjvIuI79v_uKkaQMYjo=": "632565000000", - "rkf4_p6LRc2fCfG8gQ7Lr0dmJ7WIyzMh5pgC67LH8d0=": "385400000000", - "rl97wz1UuwX7Bbk1Aju1VaXfC-G5RV01HFAgTsc8boE=": "1216563000000", - "rlGiNRZM_r76Z2RCKxTZ-CoPvMHzev-3Zhm_O0Yq0D0=": "496855000000", - "rlRJ8jiw6ywOnrG8TxzlfqxiAqCKylwZponf4gPKUgM=": "1538461000000", - "rlWrMICHmxurfXQzZuqWs80zhiK7y3eQZ5cYnSaeAsE=": "469404000000", - "rlZ_e5cSOBDbSIZ3tv0g01PFIb3mjePjl5g5FACTyb4=": "385505000000", - "rlwZ0AiIjMTnqsNU_KWCDbA8BSQoMcOjcKF3rJQm4j0=": "1378107000000", - "rmp26U4Uw8PHk-iLZZukm-3ZIQnCjk962znPtp5VlIc=": "1204617000000", - "rmyk5FXYL1RdzxSY5GAEjpvlHj1C8eh29uTF3sMw8Vo=": "4997932000000", - "rnI_v23HGXUuOl7sLZ0Qd9zTEaEELhqL3gbg2oInA-M=": "3199956000000", - "rnSjQz0aJV4zEyNreN1tC9IrpeyC1s0OyxfobQu3BhA=": "961538000000", - "rnc11Q8yIOl61LTrGTkSKo2sRGU79g8XVRhV4XUnfoY=": "388347000000", - "ro4KCX6o6aeOofECPPmSEEyEycSCBMdNc2f_K2ZpB1A=": "418120000000", - "roC_M4Wpy4xZyjriChvR08tBWSGOP-dUuCF4RmKzipo=": "386320000000", - "roNePgaZTY6pynK-FhlMQOG9p2hja-cEFsiGMWi-_Ew=": "994805000000", - "ronEX6qjaF5BI1zU5odm88c5ihInatthEbYUuokDz2E=": "385506000000", - "rox_OyW4GXXHQdMdPadRp5-bbtSBXzdXHdjSh9ghOIs=": "452943000000", - "rpS6NjTZFlYGcesbe-eAwgY8ILxFfOHeAIPZ-6d0rgA=": "463799000000", - "rqQs9N6hZXq-ac2-pEwaohwoxpVRSEab_DGl2ErliII=": "7483384000000", - "rqfn_NZb24IiTXGpR7BeTCS3R0zsReHTFpXhwGEAMtc=": "454545000000", - "rqspG0dZaXqXcypKKHhOxwa6d15Dw0R2IGaZ2b_5-ps=": "3921237000000", - "rqveLamNMSCfdZIFeoTQARjpgkUGlyNahM4SDNvUTk0=": "492405000000", - "rrpoMfPKY6cYXTJ5a1JIxhebkeujSMb8NO7iDiIt7_4=": "639417000000", - "rsAUdPYBezXrxY_iUTtPw-5Bgw39QDINxZ4quDHHe-U=": "455526000000", - "rsSdA5uGAZcS2ZwQZUh9t2qQIMNflZy0Pjp8HEdDVN0=": "817307000000", - "rsX0ymnRRNsmkxiPhYIif9QHFDGi41bCt7FVa3uonxU=": "455367000000", - "rsf4C3wXTm4JM40EzMVCNvDbSxmlkcI0gQXopQ2VOmo=": "416666000000", - "rt2LjgquVq5PDTGiLA9pkS4pY8FVHLYFgmSCYYidVx0=": "1615367000000", - "rt8ypDF-GpsKx0fC7529RO1kbzM0GzEf7X2JqDpL-vE=": "380585000000", - "rtvgqgE0L9GC6vU_zjJ3gjTIU33UMDjoDqmUKG5LtGw=": "4834423000000", - "ru-hQ5sISHTzCH8fFJ9LYAOmtst56WV5qctsz9JVA3A=": "415901000000", - "ru4WjOX_Dbb2hLe4IakRabwq9phwX28ksy25n3RTriY=": "576923000000", - "rv3Pe95b7h9qWk0PmuMoLE5xdUYn3g5ivCXFeAAFA3c=": "384600000000", - "rvGqId8PM9ON676P_VzQKSeSd5qEhxrtNoFqs63rhew=": "3414222000000", - "rvNho-rJmTrnklZWuLbTaLEZFwL434vhd1l3g3hDjCM=": "6249999000000", - "rvZsQsnyh-jRJosL6bgUGQrASznvsifq2WhYlZ9NWVw=": "632091000000", - "rvf7OsxQWkV11jZ80wRcZqc1_mO4znQ4Eb-kbY0ODJw=": "787528000000", - "rwOQsgESA3NbWT9jSr_7p2lia385KVm-iodwzVpLH24=": "396305000000", - "rw_ZQ4bcsybHMl5MOuq3EsCazox_vFFklBka87tzCTA=": "1785662000000", - "rx1IWbdvLX-Vu2uANB2Y1WiVzDyENbaXCH2UyO-qfco=": "843817000000", - "rxEsNIeL6wqYbIgwG4Qxy9ORgX_nLq4dfP-xcpnktwM=": "3749999000000", - "rxcOX7FAbYzTT2CsPemHLJxPfxcRZmDKFzPMWHFrSy4=": "572250000000", - "rxofZ9KiogyNQc_R1nJd21oRdNqP6qCLQyYel9ARd4Q=": "406107000000", - "rxsxj4RZ6hQQWPtozwWJ_yBhUfpzk81CndiP2h8gFgA=": "476420000000", - "rxvToRa8DI7wUF0yoI1TmSKASoY8evBFslPop6NQZiY=": "384615000000", - "ry6kAxpMLFsQbaZFa8fFiSBkQ0PinGCjZ317MMEwVDM=": "608069000000", - "ry8Cq8YzQTk5-lAmWuGOrw_XhSeFX3BaDO0qtGPV80c=": "538461000000", - "ryGWpq6VlT7rFby2a5ajx_s-IES1HNqlfhwfdpMxGo4=": "1321302000000", - "ryNzRliSw5GQA3doUJIwrdq60shLmDug3LXvelClPt8=": "384615000000", - "ryTXb9ixTfJ0gifhtIANfvE7IWa-Jo9g-KpHroFCQXg=": "464322000000", - "rydFfVh_VV87VQCiiZ7n5la9YNWNoWOfG4eYKBEJ1mc=": "567136000000", - "ryetfvip4SUnxBFbjQqW74tLhBX0PVz_Oe5RP90fjbA=": "1100384000000", - "rz6oQFvdWUtyF-RdutokG4hKIaF0KJ_8V8LjAYBVluE=": "499999000000", - "rzLXxmnyvjcDS965f8WOCQaFUESYLmFMTxYg20z0IYo=": "473228000000", - "rza52Iy_F1pb-XhQWQPzNYO30jUXenq1WAxdceTGdAw=": "381567000000", - "rznwG6aD_qbzyj8kV_DjuUIRD-NODmTXUyRTFyL1jZA=": "19041970000000", - "rzsgq7sSeZ_VaKGDMM0MUPugJ9AIyhQth_qZgt2lHcU=": "385475000000", - "s-1nukFlVXfAb6gtdU1vBIUASmZxVEM_ly4805qppIE=": "467972000000", - "s-_BEi46207th3yrjWu6xpBLrrFtA3H_p4ykPkdafJ0=": "929233000000", - "s-bTClKvEhZPj23JJPFUjAdoSXqw_ZNrQyZnysNEOoo=": "422815000000", - "s-fvBM-ImS5iT-LiAyNkisdqRh9aRXAxJZn01KbLl-4=": "763868000000", - "s-ljWB9nlY1hTjcId7gI4iR0ETTcDAGx2ak85blTMpc=": "764832000000", - "s1Q6kxHHeju-FOcgw37pkVGTSPFqWTNsNajbVTVsYyI=": "808957000000", - "s1U-738Ktinbb6aAqiaLGuDASomJm4PsjCLNDzGMe4Y=": "416408000000", - "s1amqFg5JacBI-4BhEIQs79SJQyAdI5GSeocj1su9v4=": "448728000000", - "s1o_lVOItwL_8HbR4oT1WA3SJv7pSslYdJgIeBRCDPg=": "447576000000", - "s1zEems_2aGQ36JPtt9PGvpbrmUBTn7z-fGygiXO2g8=": "1249999000000", - "s1znhzDUSUZME3szyjx92I8rPUr0Tujufoi-g15rEfE=": "4969390000000", - "s2BxlYdX_GZ272WPi1Av9fg06QhUogfp4voKPkkOwt4=": "897065000000", - "s2LUTjCodFS68cxVlPD1zJI-JQLK8jd5gyIKhBgzlPs=": "845123000000", - "s2X5tFvs9OO1okGi4AB4t-2OItI2GfE2F_LLO-V0g6M=": "5651183000000", - "s2ZDveGmNXI_mezEWPy6_aw396oAUXkWvic_z7-vGOg=": "385078000000", - "s2zRpRrLvpchVo3rQvD1FLsChYgyI1a6UEQOjLXTWw0=": "2098228000000", - "s3LLA6XR95k3X4I-Kvbsh1MSLz1XPj6HvY-__lPODb8=": "456504000000", - "s3luQYd8HfSMMw9-xW4f5_hUo3yEKEUdz7TtrOmYqJk=": "603092000000", - "s4EMkg4WyXIIr29_oirs8cD6dPBJVzZENw8a6Jed1z0=": "769845000000", - "s4VjrLnXZLpyoG6tCj3VtjrlOgR2S4Y1g0p7lb_wQqo=": "419937000000", - "s4bO0OWJNJa0f6ZMQfssWsDToHK-AxZrRPn2BIBfonA=": "1854461000000", - "s4dY-1ie5zB7YOKhba_uWiRVGtw6rxP3C4Rlt8TgI7M=": "380112000000", - "s4elD0eFTy5MkUCpvKM6Aa8Z7d4Y3rzBAZgHhVS3Sx0=": "5297616000000", - "s5SUjZxruB_DbErbSiRtg7XyJAYHwQb2GTU5r4SBiQU=": "379928000000", - "s5r3C4Z00A5TaZWXsItzDh08fVNApsPEpjMzS_LkyK4=": "416673000000", - "s60Tof21Jqfv9ynLcU6s8_tTTVQNwnRXUPcIyvBqYWg=": "561854000000", - "s6NU4LEkVqJLwaNPX8ax_HOA-qRfV1yuJUzq8968XUo=": "642698000000", - "s6Wh7wv3w5kv7-ocEo2SgSgblIycML3i2WMOMugaSPQ=": "576635000000", - "s6bGY2h6YuV7SLIgrQT7kmVnbKKy55AFs_0TaLEfHGk=": "2059257000000", - "s6pWTu9oBMuQQ7mBFccnyR5I5iOrm9kr35j6DITzfnM=": "6030655000000", - "s7-9z6ae81TYK0cFQ9ldUtzlOpZlAFch2Tgnm3SmZIk=": "547656000000", - "s76O19pWeVSBwvCZ6HGtx6pkzTLelhZumdtCO8g7kwc=": "378106000000", - "s7Hylh721ZxXsl6Q81J29yOTikTIah975PI_VGZDJsk=": "1177351000000", - "s7l2J79y46Z6U_rBncuO33rgcInqjA_79-GWfk-B0W0=": "473848000000", - "s8Ch5v5O1Df9jxcMyjd_EKLDtmZ8x68SaJccJ-4GQaw=": "3003846000000", - "s8JOTyUczE0-mCKUL7Zo3Wvy5dNUplyx4KBQBGZLojo=": "420145000000", - "s90L-2ns7rSmFMR2vgvuYU_6pJRiEJNreHMbd0Z_YfQ=": "410399000000", - "s98FEYfhRW8nXxxtaX1X9g2yImfGW---3EbpUcFqy1k=": "383532000000", - "s9WRaqCEheTRAOb9KcSofTZ-7Mybn0AGD82y1E_9PUM=": "2070226000000", - "sAA6p24brSJG1TFNlJic5KANNeEZx5NPC_exEDlfJO8=": "4542327000000", - "sATZq6IuPbWfh4zYIKbfzYzH8TmHTQdM4hl4YNcW9zA=": "469809000000", - "sAzEh_mn_PR4e3DVcRal8N4PScOx1Z3aOq_68YL_G8s=": "393313000000", - "sB-oSbrW1OgNHw-AfbBbihkKouuGlYce-RC-gtqCRFc=": "452708000000", - "sB8IZpBYUeVId-xIvEmpPcwekGDSEG78uPG9pnPQLyc=": "373603000000", - "sBJx9wzjXmVa1VFEsvUzZwa9eXtDTqZmnkUWGNPn6AU=": "386406000000", - "sBUHP-Sg3Y0EEeHbm8-3yNIkxa3xeMxnf6vUEWgl7Vk=": "384982000000", - "sBaMRV3exR3LDY8gZn8qpU1a2HTm_Lkg5fOaaUnXB0c=": "2291642000000", - "sCwV-eq7QuZk-WJNtR3VoutGD7fWo351URG9tAuu3hk=": "384615000000", - "sD9SOxMH5VNlAgmtU0diQwzXEBrbtPQ-PhGC-sXz6Sc=": "966294000000", - "sD_-Eue8RyqnXmIzu4XuLGjMIsHuPsTYAuxIXxOpYlc=": "506181000000", - "sDu3DYr7eZaa4er4We3xUiS3Be6-8IeaEZio4aXtwRA=": "1365145000000", - "sEeclrmLaaA51Ga5ZPxtmXyIuUg60HeN0ukPiHCsF_g=": "2499999000000", - "sEsnOuRrNx_duJRRzHMEEx9GL6GU4FMRblAiR6rMUU0=": "1249999000000", - "sFFFuUbc36osVdhugKesCHivwgWCti72sDVYiw58-As=": "1916510000000", - "sFKwUo6Q9gnXugUi9ePKWZ95KlxfV4633jd4vH2wOxE=": "385507000000", - "sFc5rqO07gnhgbffolvUyBA9l3XKoPICAl1Snz9Y0PA=": "463156000000", - "sG-ceg0f8lMVYiNV2csKhVmdHUoaPDyR11hViaK76d8=": "845123000000", - "sGWtCmxuO6E9jGQR_9tXMfPab017qu55ynyPJkIpbrg=": "1230219000000", - "sGjjfYvLhNCw0AgmqfIV4YVu7FKiZ-oPOS7zlISTTVw=": "3380298000000", - "sHICjWrF38w_gax0fYdmxyslhHFqcHCulM5CLY58K2U=": "384615000000", - "sHYvFaJfm-hJmzrNC23DssIFXE_zYXybUl2U3sydwqA=": "411085000000", - "sI7tOv1FrMXxLe7IFr7SDDWgvmi2cozxqrV7WntfxkI=": "454566000000", - "sICY1rwf2kzlZsS4jaU90fGhdbXebfvxFrwxoLjJSKY=": "1969135000000", - "sIFY6tcrmEfv9jEmHgpcx-6pZzYdg_VoXnCxY0aWw5U=": "1888319000000", - "sIREmPRjBjzFbWyXEZEA7qthe-OZKi01s_TxiYWH2AI=": "384615000000", - "sIgiCY6uS3uw7ct2wDULShvAgL-KU3CR5BeVP957SeY=": "4644913000000", - "sJZvRJPClHaqVPbHONbWwukzdJ4oKUXrz_zrS24mRLs=": "454545000000", - "sJkaI6HmivYdmwKMG5mQSsFNrEfJuZRYhDH0qrjXOlE=": "8930873000000", - "sJlOSuJQ0ZuZ_q846CBkJUflpP5F5lg2psO9FOISr1E=": "1835405000000", - "sJwotMi2yx0uBpD4F49FhiyParvf6JPXNnThlbo206M=": "2307692000000", - "sK4h-qaPEU5uhh9VGtWNk_0agyeSpKXB4so87whpBb8=": "384615000000", - "sK8cANImf7cE4KA1A4mrFSGiKsbaQ59vO8JAbyd9Y4o=": "20001042000000", - "sKcm6tDvCODpi51CbmAdT_2VnXBklOxkq6rPwULvKzg=": "384615000000", - "sKgHDFMtjneyVdzk0p5Oa9IfbbrmPAfpl9lDq1rrJkQ=": "456266000000", - "sLHTwI-NTeFWVSqanVjVZci_gFwEVR8CYciZBHT2NJQ=": "492802000000", - "sLJjKkB_W6AdRtyO3hFkLhUUA7cccO0Hdgs4gN67omI=": "7000421000000", - "sM5dqo8Qmc1V5FmyrfOcFMWgSxtneg--KVsrbhbEQs8=": "412635000000", - "sMdXcIBi4xdcrvnNj0Wol59qawOUES9CFr44ntpMFow=": "385507000000", - "sMyghyVHIBt_9fQv18CehPrsL83vLqd7mQU04b5bvHg=": "1513770000000", - "sN1q_N9-_ARMD4ifM2khdYB-nHrmi3aWFP_8JGqYnro=": "1666695000000", - "sN_72NnJ8eCuEJrDCXbAbUSWwoa4nVmSh-cODB-LxZU=": "8333333000000", - "sNzQ_LxmRMWEEXJCknRKdUOYgcljThjmI6oXWiHJSEw=": "384615000000", - "sO3olhUNKsugvQkTU_oYBnIiPSwMCeoQFjMVp5Zrj0E=": "1896014000000", - "sOA96cRAoNbapYZ1R-HCdxkGbju3GE5jl0KPOz322Gk=": "481965000000", - "sOFcxGzKuhncvCSu2nQoUsRCkbEjAoGLoIER5UZKgLk=": "8333333000000", - "sOK4nfVriZQIOIq5p8vMA27UimuDPTdr2nVBmsyZLws=": "416666000000", - "sOQGIvCGDRYlM6U1XsCWpindkXEW8a_ZycHK9wq8kMc=": "381632000000", - "sOj1mn6jabEQOb9yV49XBa-eXFETncIE2Hb8IoK8hDQ=": "416666000000", - "sOr2DTQmAMbRNVRtioeObVaQJA7N3P1uzGjHsbKaMEE=": "975129000000", - "sOsQI8Y4-MwihAH8J92f-XWWj4To3EoXz26OMKVQ9AM=": "840116000000", - "sP3RFNDQtrpz0RA3AKKop4ZyAozIsYK_VINiqJwYFDo=": "1261419000000", - "sPWemmRjgsurnfHTNthsy3fCVim0PY10Ihg_Semxv_8=": "769230000000", - "sPZvVyI5wjLuobKkve9BKmcbM3ocB9SY0GBbwSPhahE=": "385602000000", - "sPnhRUIp-LzDAf7ZugXESIJy9rfJSCwSZhRYon4QW3M=": "416833000000", - "sQ2d15BmBU2P97JOFsqhsc8Hi4T7a2V1UI3XVLKfAw0=": "380862000000", - "sQ8Ab5TDBtorohFY6mU8OfZB_FNJHrW3m8TFSGK0-ZU=": "378755000000", - "sQMrmYUzTjgHTASpaDpG38IkJaZI38IZZ1wvNhoKY0U=": "2681980000000", - "sRI1oXejH-xCx3CTf7KshE5w182NaeaPwHfnOoJNN-w=": "1999999000000", - "sRJuYKzWHsn2PHysJQya3nnbdablfrWcrNp4YoWbRuI=": "4642118000000", - "sRPN7oF8BWlN8VYtsVwdvgxEyuztmNb0LcEO8PTuES0=": "4165243000000", - "sRlAqOFbhC2g2xna8kCQHkbYuCTtFL2xrjn31vQfyd4=": "769230000000", - "sRm1AdrkoxvP3vIJGzPTeQvWtESaT8RmL6t0Nyttzoc=": "552876000000", - "sRtMqylT_PJn-OS3H3dAMvny0Fv3liBejV5p3QIw2v0=": "385449000000", - "sS2cnfkaxMaldNT-fZPrUhyUDF9l4WyswZ0q_l3frG8=": "454545000000", - "sS7c9_lkNLp9VcDqeLdiZBrdn7os6YMsONovv6K20bU=": "1927547000000", - "sSGeYHYf_xNJ3RfkQDrvYcAuLxXH88nfBK2ldU9oBEQ=": "384897000000", - "sSiC9GntOOltzg0-QL_nu0NWHotsujPIpL_KQITF-3M=": "1350098000000", - "sSwuQRtpytR_a44hcV3Obp3um15TzcWJS4wNShDH1Ks=": "780319000000", - "sTS7iLcwYFe5-u6-JcBDAgieqFace8gr-uXwKNjEkLM=": "1153846000000", - "sTniNkQlM72NuXc2tYQU5yhApccW2ymfrTMQ6X18Jlg=": "417634000000", - "sTq_fbHatHEwNO555FTOXt3D3rZUAY_dYqGbqCPE8VI=": "14352168000000", - "sUWRIU6auFTBT8yG4Z23JDDO_F9lHBiIxSXuua565uM=": "384615000000", - "sUak-5WYj9NfP_LdqmgKJVVFzze-zgkQCq203fZxYC4=": "1902052000000", - "sUoo80obs8yRowUt5nDkoM-Cx-ANFhn1-N7M7vblOIs=": "763268000000", - "sUuVZNCEPIwP09YCu95ElHGU3Hc_uPxV130kTymVcOg=": "384615000000", - "sVXP2kGu5JRK9AoZsjfNxeF-JKjd0vqWl9KpQNm-3r4=": "386320000000", - "sVvDBz5pWwyI4xXWhfhsAC59s97UWLx6w2he2PLeR9Q=": "7692307000000", - "sWCJ1Wt76nO_5wQThCdv3m3Es5KIOY2KdyTyFiLT9vc=": "501413000000", - "sWCThyIHjWIOLX_4QY99VYeNI29obSmUIxyz93UT4d0=": "462472000000", - "sWMZIqWNx67zlr0ZIM94L2K_OvUUmRmp6LfFFUMRCJE=": "385507000000", - "sXZOp0uHXs3jhHTEamwCIYXoyBOxdiCVn-mW7NtZE4Y=": "378037000000", - "sXq-iHDLPwwq-smBkb1HQYlQa8tzBkZjRQGuo6jUfSs=": "770133000000", - "sYMNrCJPwT0DHE1WThaS8LOgkkY885QFBgWRT8Jm5qA=": "385352000000", - "sYVkE3gwj6R-BvpeyKftpHbxdeSNGcVFDtDLqJGNeqI=": "538466000000", - "sYlpa-dpgEGtPWF8fN1GYtFu1RB4vWPGSGPHY4eWHaQ=": "1999999000000", - "sZ5WdfkUX4rR-OwMZwCQsgaGs2cofU2reAW8eLaodpk=": "473001000000", - "sZYRhL1X_DhN_kaCG-7ekjb6R_8YUg9HuEjAvYpQJqw=": "1409664000000", - "sZkgMid1_1Vw91VJlGdsNdLBmQoASZ8WNdsceFqw42U=": "441769000000", - "s_JV7tdN9CS91uvyIZ6S6WvBKUFtHT02ibJWQklVHwY=": "1945234000000", - "s_eyaqwTpy7U6bjnY1X4thokqXvSyOZR8RIo74c7uZ4=": "769230000000", - "saFqX5JPQgqBxjStIsoXYhICOkyX01CgIyHYlxRZoNE=": "446505000000", - "saYvG6IonKPNbhctHfEjApBZvD-5ci-2z7PoR4GHxT4=": "415177000000", - "saa-MqiRLQDZ44rQPqTjBibWtu7klXmgGV230ppERbc=": "838464000000", - "sbOYcIWm2HpvYD0Gam1R5mM9kvcYgXbWrfYsBvlhIUE=": "2552557000000", - "sb_T-cb3V7D6mli-Z4ZrVyUIraCYiD9bnXa6uSRmcNQ=": "1265782000000", - "sbm68Ob7_hV9ffzh9kGOYcG_IDRJWi2DiPUjIHPRxBE=": "1255127000000", - "sc2EF1PmA-JpBHD9cAzPl19Fyo3bHxTBZlqYF8VZji8=": "5642445000000", - "sckTMjt9yHjL2Mv56hysQ1LdKbfZV3vsULlaV_CUP48=": "1075604000000", - "sd7aa7vD9lPbAKksLmUzVqKIv6IYtHb8xks_wFtzQE4=": "1091616000000", - "sdJEXW-dWXJJXOLhQKlvXx9gOnEp1BlGkcU_INrxwoA=": "364677000000", - "sdN0stq2uoIjRRB0m2zktTzGi48XR_-n8TrjHT2rIpI=": "456871000000", - "sdV79VMW8Sf7p6D7IwB3r2-kSUiJyhIVwJ41V8baQ-g=": "379658000000", - "sdl1TECCdXjp1Uo0uSdzR7ZKRTVzqwnM44Ct59ErWg8=": "385510000000", - "seUPrBMo_6RdNSo9rUHlk65WmbNK3pIwZIjspF8VyYI=": "384917000000", - "seuSJOEhbk1A5Dco2479hBiCh3tk5McFgahzBoIKwls=": "3535329000000", - "sf04SwcGsMUs_FMBjZHrq9EBq1yA2qbRFQQjs7dCRk0=": "933373000000", - "sf46_647e5I9IXMB8-TvlMxCqKgihtojL5Jufz-QmfQ=": "384615000000", - "sfCEf6PrgRle3T1HCeVevt0mgRcxD6qAjvS1uY2_n6o=": "8278633000000", - "sgRaie0wKDIwJhjVUwf9xzOI7fwwDqKuGx0K7S54OdA=": "384615000000", - "sgpwqQLOvEQO96BAwxSlreKTSW4otadTIVKTJ4_5qmg=": "1896623000000", - "shIevgNhqx9fo-ssUhOP6tm8-aAXtILbhX7IsyaPJjk=": "385506000000", - "shRMGSnSADKG-UZINCJ8m8cGm0qhPvhENwtJBj-eDLc=": "1272807000000", - "sh_EPuP4ta4CKI3sLpSWjaqJmL5YJXr2_Pl8SmNhUQw=": "5769230000000", - "shi7t0UIFZoEE7PRQ1hjLRm0VIi_W6gSGXksZ5ENo7E=": "1441965000000", - "shoKUUaPDJtqZhUey4h0qUyvqAmf4o5ccI9ksNEnhvo=": "18759196000000", - "shoe3-GisevS_ie8qCa4eoALVZKxDWue1QB85LP_tiY=": "948076000000", - "siNCYKoq5-T9ZD9O01cnwX-Z7TMH4xzq_nlTQyyNeYo=": "458773000000", - "siQDWUVxNxfgsY8uEM60jxHfbKc5AwqwI2w7yGmkD7c=": "770833000000", - "si_JL5ozoS0o3LYqbHh_YUjBTOAr1TINHn73iUTuSao=": "4974180000000", - "sigZsNMIxqXMcLPbhP8iSDzL7ofh00cGErXOxFSOb-E=": "381902000000", - "sjA2fYlFlUAis8FZAVY9tZ0JF1OQqgTr8P7iDkZ6KWM=": "411085000000", - "sjS77dmceaVx4ANVx_cTr3hPHIXLQ1aO9ZwznGnCo_Y=": "418507000000", - "sjgN8nWXO9PT26a5_y7NFXsNXg5FufyHcSwnYwbAuP0=": "395499000000", - "skXjaLCvymoz6NwioAlSgaBGaPpcQVcgXF_7ltlYDoM=": "412985000000", - "skd9HAVw7xV9FkXBB67GdoaYK56sXbX2MfGb0eNI6CA=": "384603000000", - "skkvw77_vacNfkv_G1FY2NaNxYX2YgnyF3DHn1t2dcI=": "899685000000", - "slJqDtgbcSmE-SdAu2tvHAtAEPiuYPql0E3iVjKhGFU=": "754827000000", - "slZt6pj88TrBM94t5JTx5Lik6HKByRnGv2csq6QEc6A=": "481721000000", - "slg_ky52bQTgRn5En-YZaShG-TQpyCxKs57nnbLjgq0=": "756920000000", - "slstSBCAJQU5TLooV8MCkLbiMm_CVVSc1ocU64R005E=": "14226081000000", - "sm2t-DQAIz8blh3v1NTWSsjOE8hK2ZS5G_nIOtPzhto=": "378561000000", - "sn3x8uwSYwVC2PaaJYkYo_tLFcwSfWSrW1lNai_9AOM=": "384615000000", - "snd4KH9_zlPCNE8P_WGdHGpoOl6c4JfrnutzK_Dh02A=": "1215564000000", - "sneKJOCsAFh0gX_CO6w0OEt6UVOGxeqSYNIon0VTqPI=": "769230000000", - "soGmT4wocpf9XsCiDVNhNjuSF1miT6LnsN811x2BUg4=": "19230769000000", - "soRmWwU-MncrzxWwMhgWEPPRmH7XxcrWl_d2Y_LPOzw=": "458399000000", - "soXhQZKqdAY5aMCyz7xPXKPY9H3H-9TtrB6AuVIAhfc=": "777978000000", - "sp5fc--hCA6F74IDEYO34sAeQ1aTL2_ATF-UBhk7cCM=": "385509000000", - "spY701tzSvgruElAY_ZHXarmHoYZNe5-kk0SmhrUMbw=": "7907134000000", - "spuQANiLqs-n_a4omLUtPayozo3LqWJFiancF6lmcEk=": "411085000000", - "sqCEhkKIwHeqGIKyT2cH8LGuO7cFj-KSKrKDlVuYRKw=": "1563266000000", - "sqOeY3saoFhJt205dImisxX_Pka0qNBeMI6ZSvB6BKw=": "2730743000000", - "sqYzyOnT76RKUOcpcZqPiR5L7ebvpSM86txEilwdUmI=": "1820233000000", - "sr-32NyMg8LJQHu7UQpUtcfUYk6CXMCHHuMQ1b7dzfk=": "1254201000000", - "srL1KSkjc8-5ousiQzKlASx9YXRvl-2AWYYWWmUrQnc=": "384615000000", - "srVPl8i6vWhkTpTADMr6PTkqBzG3q2uB1v7qYWHMzhI=": "4616309000000", - "sreXp0J0c6vH9pu1H5ZqRTq3NKCotMF38HT1A4n2NIQ=": "384615000000", - "srjiSK7qJGywOP7cwiUZHckcSKoQm6w-Y1Z3gwDoCOE=": "384615000000", - "ss-aKryx5pMdASSHvaAmvDScC8hDrgMy-09GD-e7pvo=": "379344000000", - "ssVTmz5fW1mxILcVKDbgO8MyrdnbmzQSD4u9Z6ARinc=": "816665000000", - "ssjGFmezuNZs0zuYH8C2uC-NkBm3bRg38I7vzUv9qB8=": "1927528000000", - "ssqrCdf_XttWDBL6QOFB0TtxJTlfhZ-S45YgiOIAzLs=": "842738000000", - "st9J8hOUQaoyx3KLN8RBz5KGaerc2E1FCFnykcb569E=": "385506000000", - "stDzhcvGKZ7DxPszaTN_a4QXbzFs_nNq2Ir2bT6GJ-8=": "492798000000", - "stHZDZAVthGMphyj3bOv4vVnqbzZdBlHDv5ky5BGOVA=": "498155000000", - "stNp-5XYif_DToy6mCxdFMPZ12NDhukgGFPrqC6lKIY=": "476807000000", - "stRTjpLdJOkUmcpYMzKQ-IpY_7SUXhatKL1qbO_btaI=": "384316000000", - "suDTEY5KhRZy1i7pqSmFR3_HOGlp1eQ8ALPgqlb3ihg=": "2460380000000", - "suMw2EYLeR0Bv1bX7c29t3GJ5-kbmrYXyT58jM1Kzmk=": "387132000000", - "suNrCvTTG_AfHE-PztJbrehrNuTvIfo8V4yPN5mdWW4=": "384615000000", - "sumabiRyY2jP_5C94j7ovAzJds99tRs9hZCByAvMIic=": "1078535000000", - "susSnA_b6ehlCxYJFr2oB_IZ7xkZ49DYpLVI6bUeHEM=": "1538461000000", - "sv1Ud9Hb57SgU4DoKilAmXSAxqarofRoKOTxk6l50N0=": "3570765000000", - "svEYcpNMXLUgom5-jv8z3u5yPE36Q9i2vEKkSw1E2Is=": "1371823000000", - "svJADPc16w3kA_QbpBOKrI4-1Mqx71Bgj1uPmwKC9HE=": "805513000000", - "svMdviTXJOsMPWISEisqasYZfBEjSxWg-RpXtjvIohI=": "754692000000", - "svfgdD4M5HJBoQ52tyuruNpZxXt_T1zcmrpBRXzBAfU=": "416372000000", - "swxRpqUN8muOZttYbToY0FiNjI8p4jhED5X3zUoaVKc=": "407808000000", - "sx7a9Xi1P_1ZWc81go_gD5QtR0nnCW9TUvV8NRDIDjs=": "384615000000", - "sxHWbUnxk_ibGSOEXryN1nJBjcfpJsr-Kr8SAdWmSXc=": "1156517000000", - "sxYiq2e_85tI0tkPp_cYJFk7NsCYIwub51qRx0WjgMo=": "4621453000000", - "sxf-owQnLGJOcoIZD9Gsn8bKpwm_nsyg26rV4nccxXg=": "384615000000", - "sxvpTQlit2TE9kuuwV-62KOJ6S09LYm0UHJKP3VFsYY=": "414989000000", - "sy7spEdbL1prZmBAhYvGwKnkylmGXHGcgBQEDb6vl2E=": "954279000000", - "syO2JoAwsRMK5mJPirt6U1dvcDuR6OPZsZNMS8hmuik=": "1173076000000", - "syWOvDseYNAfb2AUMq-OrKEtdSbEPjrNhe1XyBwdpIc=": "20656748000000", - "sz5AEZPNTXkaPkcjjaFdkXWKoknTHWt9jxgZ-hkiFkY=": "1295513000000", - "t-2Fo-qJq7ruhFu27X2UQ3WQFtuzdqB0mxm5PNpNhRY=": "416821000000", - "t-3F-8Y1M-kMFdt8Nn7EaOwdpC8ufDazxV8imu0vmyY=": "549999000000", - "t-Rh_TECfmPLwukxiMpJtNvHn78cBFVjowGGi-YpLg4=": "384615000000", - "t-V5VLNruig54nzqwnBwJidOThKnFny5DqftChi2ex0=": "448709000000", - "t-bGrV_CLjuiCZuDz7Cc1qXFEC67uI2kBRZXhqyNcLk=": "4166666000000", - "t-kccfbIHM1gWttIwm0_S2W0lh4lodQoL319EC_rl3g=": "2429760000000", - "t-tVLoW5dmUR-oS3AiyHhvy0NtBNK6Y9IpNv2pk4vBo=": "1666666000000", - "t02IZwqFGrKfF6kb5B_GOAiDvs9gaT4T6Bq7tf5OKdM=": "1155808000000", - "t02iGrrePJl3D6gIuHyYd42QiJE6O53CeEC5ZQa23eA=": "384615000000", - "t0AtjUMNkYyqUdDYnr8r1DYEegMtcpT7ZPDNCdnCiqw=": "580031000000", - "t0JSg3iRNxfEJbMptmcmSWB2ytbvpEKRIObjDsi_Lp8=": "385506000000", - "t0JhhX34QoRyJ0PQmsGhmhrRTRfU0boYVAGG7x8qefs=": "4706045000000", - "t1N_HdrGlJ--mUrmeQflIruyQ3TMLN0mF1OkDQkl7kM=": "2065023000000", - "t1peh3lCuXBBmeUKkoU80959JX2TUW1KwdpUyNLsfKM=": "2055429000000", - "t1wZIu7HvpuVO_6A2LnR7oAyeZNZjsgjER_4JZLJLQU=": "476900000000", - "t2Bj9x2ZP-z1NDHM7s6kOCXNubi8YaWXqdV9KX6n9LI=": "1326989000000", - "t2RzoMvBeb88uYnyqhf-oR1L5Abx49paMBQkauUrX7A=": "769220000000", - "t2bLWS1_6nqTrP2EmvNYbrlVDLKF4LQ2FuhDe5pfE80=": "454809000000", - "t2dITZgx4xRC0r6ZDuwQMI_1uvJuaEkcxOubTqfAtsw=": "2019163000000", - "t33YPmTYGZDkR-Pt2H_XHQ1DQulPuuMyflLnpoJ-iCg=": "1170401000000", - "t3UQ8LExF7NiFSVjT6Uek-_8yxg7s9EwwE5fCGp33q4=": "487145000000", - "t3XRQr2I6MRgcbppmo4fJHhXjMNUy3aYm8A1cWSJf_o=": "459927000000", - "t3sUu72PM_GiRVC7m6LGti15lGiTtqHF39nyIo9gXFM=": "412986000000", - "t43ZNT9G1BE9KZWiXGCVMNsgc6evm-xUWVcS7S0TA9M=": "422561000000", - "t49Imw5NET4Lo6TX4_5SOlIwUgpWijsZ5U0lS3qxJc4=": "760905000000", - "t4KEMb7fYiy9zIRGNla-qp5UmSbCnYKZ9sU0EIK99dQ=": "407808000000", - "t4iVptLIidRSAXusq3uXe8aGdJTiMfkqPMbmEIzZO8k=": "380342000000", - "t4y6kF-_bl8br5KfCF8J1Q6KS9lbTe6C8wDInUDbhTU=": "1539919000000", - "t59uS1fzDh3lO13mxUDb4XZdLFrD0ifGst3-ikhG9no=": "449342000000", - "t5dTuiU-bPXnVJYayUKMplspreD45NUlKOiUOtnW-BI=": "385505000000", - "t67H4PboWn2ClTLE_w9fxjGo_HSCKRay8nWJ25SHafM=": "833333000000", - "t6c2u05U3cMDTk_qe1xHpjexjsdDLllszR8CtuPKRts=": "447655000000", - "t6psLZ6quv_e6pOE-mRmGbxJR8P7YYZ4goFPpfzRMgA=": "382410000000", - "t8IlJ5YGRQf_L1SIQhqnXzsmnHhRSbv6PMwCU2y05SM=": "694498000000", - "t8kt7MGgSN8pXalXcrpXtFpwK0BJzeybags3ieIwnCk=": "448054000000", - "t9Be65DXNZsg0K7GSZFLPIyLbdjuR-wAZiwIkxj7ESI=": "389898000000", - "t9C3HK1G8idq7tq24uNzzQWePnQRgZN4c8xrxl4VxSY=": "4279139000000", - "t9DL6x4QVR6fwLWTqTGlWXbpgk5xzqCacXR5O0ahyIo=": "483147000000", - "t9I29EvRDVi0KQxk9aubm7AUtr_jAnqutLzuL5yC0HI=": "753807000000", - "t9QGYKbwY10Il2ujvaquEl3FE4z6pwKF1ny5w2X-fW8=": "405197000000", - "t9SyOnSnd9QHtw-oj3H701hLpVCps5CPCuZ8AsV7nws=": "384620000000", - "t9cqAAc1ovhrVoTUQoHHr8fBbhE1vdBXbQJeEyrqg4I=": "5000004000000", - "t9laqBZ0MczhAmS_q70Pczkn5LdApFwOWUGuT-wjpuw=": "3756941000000", - "tA-YzExiQFmjEZ8y3jufd9Y0igWBKe83CkHHWaq319g=": "1407087000000", - "tAOxMDwXPafl4ziiPIEQkORXB_Ou7ADkr8PrZAwShTo=": "1596707000000", - "tAXcadh1GceAfpH1uQpdQWFouGzhcQtX7J0XI-bgLpA=": "3830209000000", - "tAbJbuuEixH1rdjbu_XcnZtyGFbHFTmDEk4aHAcKyFc=": "769230000000", - "tAz2rQCNYufObZFhtR0IDDBH_6ulyg940TqBz8_Exzk=": "385509000000", - "tB4SdfQeCKEiKqpY_yAVdoAjzR10s6UkG2yd_oQtbp4=": "2080352000000", - "tBMKtclnpNtDvZ9aQFaYRWdvDtEbAVRK7nO10vzYnzY=": "1813007000000", - "tBNUdtI6GVKroRDDieTLSbI96jXQWQjmV5ANGPiSz9c=": "3153846000000", - "tBeadB2nA5nvZdYdHfNHQWRd17t9gsRa5LshOteYExI=": "460674000000", - "tBpd0NhJmLvv1Wm_v_wTuUIJVAeR0twPrQNR_CatDuw=": "3434710000000", - "tCH8EGjDZ-1jvU-0I-ZlFUBw54o_VTLSR75TSy0M3X4=": "838319000000", - "tCz66PousVV4VwNqH0hXIDXvC1T3YfOWQQuNLKZJidk=": "411085000000", - "tDEjWCR4AOvX9vIDVlOH-Ndk_CjphDN4CEBYvSxSggI=": "3755832000000", - "tDtgFGT7ukzgeiNlfhqXWYp1PByanrxLGIuJ55mpmj4=": "2083333000000", - "tE4knI-5Wmrs1YlumgR0czdRk3lZsncDjBKdWkv5HuU=": "2972578000000", - "tEFx2x5i66--pQmXW9SDTqtI1oFf8Xpd4qIUJA71fVE=": "600093000000", - "tETabr5D2o2drl4EbtjV6tk2EjupQhqKlBDzEVqBiy8=": "453157000000", - "tEqpvPCJD-4B9cLaUoeiJ6DTA2xdRaWtT_Dzn4uT6hY=": "769657000000", - "tEsGt9cLk74YHcYvfRXT61rhLNKYrIwKri-6q_RfTm4=": "393443000000", - "tF2nekmpYiz0jBx65sUmnjPNVKB1KOUpe2HmJyeebok=": "384615000000", - "tFDA8q8gPyj14Kk7MR1c6j15_Hc7-8tPHEs8ykziC7s=": "423076000000", - "tFO5TbgWSWLs_fRX0VLcaSfq-20yipVTMg8OYuai4xU=": "1033428000000", - "tFcLRoXabFei9mQDT74971CCRxChsKzRnHqttP7ow7M=": "1588569000000", - "tFrqv1w4BSQ4v41dznUyWZhr-hafEk9EYJyu0v_q7Sg=": "837715000000", - "tFsAD4KloOshR1yUHHH59o16tPqyZ-zCsJbvXMJKn5E=": "765331000000", - "tFsVZCYg5mhjnTlyCMpHbdLAAt12HvdeDOMMwPQIxkE=": "384615000000", - "tGBqCuBElR_aNq1xADnLLDQB2CVIG8KSv6zoEfRBeRM=": "1731970000000", - "tGHBOxfh3OXWD9QwnPy-uK_VdK3UcyIoZ76n4MlbO7o=": "400541000000", - "tH1fWmRn5rEjB0bm-B3VXVvetl6Xd2x4T0Lszk6hxfE=": "494865000000", - "tH8-fxMFNyaJE8Wm0CwQMIZGBoT-u-xK79bkEjiiRoQ=": "3855108000000", - "tHaNFWS07fkczltBwbQqoNJFFNMUVTR7sp5Hu2Chf1M=": "420807000000", - "tHpYSsGWAWWglSQkxbCC60Msn6CaZe-23qAK89B6Y8o=": "4166666000000", - "tI7vYFIO1VZAPKIkZLytzctizas4NMu6gMDu3vD6NG0=": "816256000000", - "tI8w_IOO6i-oQcPNkYXnA-p2ED6vQvSPL-oX3dnGNgU=": "1923474000000", - "tIFLz0ialFlHUOuFxRwIzKf4QwVTxp8_EwGMOo0rkVA=": "625107000000", - "tIYOEO8Z8zRku93fDQvKl0wkyL_P7m4WyKisi-Kqz9k=": "456531000000", - "tIzbpbGifnFlY3K7XgQTSS8c3zHmNd-5yFIgH9yNmSA=": "1156517000000", - "tJQtS06uzfG-j6V55ima18Oi2iPlNtm4OcW6KIshIOY=": "464564000000", - "tJUhIbatDjM6NnAZm7xIR7rUt3VoZusHkn753bs0Chc=": "384615000000", - "tJW27xDNwCHn9W9SFF3gd6E_JqmJcPB_WIYiHWyP-cg=": "384615000000", - "tJ_s69rwh1vk6UMFW8MwftUd3kw9xE2v2M6E-X_NSt8=": "465122000000", - "tJd-XTeSZHwwttJbhmNvPizsiVR1LUOAPyuMbOs8-lo=": "16340487000000", - "tJgxKg3Fw3m7-i4YM3SffA6uHwKO2bwnserKo4_h3wg=": "834320000000", - "tJwo7bKcTD0C3LI_vp56OvmerGQnQMBZkgS6HgiU0Y4=": "458982000000", - "tKZFcBDzV6Qxqy-cEzv_fDHBQ00w_0_k2Q14FnB3FRA=": "504026000000", - "tKhq295QIIjYBd9VSGnpLBs3D7HadpFGBU0FxupUOTk=": "919762000000", - "tKiX4AEIaT-gtWDCWK47euPIxkIplo13rsSCT0Auo4k=": "459121000000", - "tKqPOUuynQJqO5ClivwnJO9UmnIfbvqA-K76NBHsUT4=": "384615000000", - "tLSFxJzR8jxaScWQe_WZnNYmBv8YIfBufGRRAGy8FvU=": "384615000000", - "tLgNjo525GQ2ex_ZKm6pUow77a9aW86adNUBCEpDxx4=": "1923076000000", - "tM8MJi6paTZ6caXCXK8P2ZCRWNCxAaESAjINZSqobXs=": "1280769000000", - "tME0oQ_6UnnQJlW9Pz71i-ZQisSa6jLt8XX1DUbLqIM=": "1670225000000", - "tMQyyQjw4Uw5oY5OemCRIl1nJCKQqBBZC8ucCCHvGTk=": "478846000000", - "tMW-Qv9T8reMV4m_yuOj4DxgDIMSb-ZJVhFbDN4rQz4=": "5015511000000", - "tMyTMiMPd_bH6e1i1XV4AgoedNi9JlFsEWwEgKbJbg0=": "454545000000", - "tO9t-JhYAswtaXgsKe_AnNga2tBxjV8jIj7VMHzeKLc=": "452447000000", - "tOKXqNvTtE25LiWgRiyuXF8R_3x6AOCggzof7d0xpqs=": "769230000000", - "tP2tUkiBCs_gI-Nc_IVOc6O9-vsstWwU0BXRcK-5a5E=": "1154373000000", - "tPQcjeqUhXSmQPxmlCC2ubrWdyAnL3BRbk1Wh-hY5T8=": "1153846000000", - "tPm2nLGI0C_kNblxb-qHBv9OU79kcP59btIHYNlZZK0=": "417633000000", - "tPnc70cI5lKsChcZahjzbtifhHlATpBUhbBywAgTdi4=": "384685000000", - "tPndxc0omEnwdmEqpo20kC4q6FdCXwAEd_FetKzM2tI=": "384615000000", - "tQGV13Cl_I4DvjYCLXB2ChAxgmxOHTu2TSDTcHAUn-U=": "545454000000", - "tQMbyS32YgAhwvQ9wfpionGFD4OJGP2AsaOKoyxaqU8=": "751149000000", - "tQ_f77c1CKjto59lA4YycGO9DhaoJsckwIPRw5Phkys=": "1923720000000", - "tRH83t74zPZUEbXMZw7vxhcJyn2j6OMbc0EKuCgc-TQ=": "455600000000", - "tRINHaqjV1c2eT6yta9y8W8yCNKkIin0LJNNC4Di3hg=": "462834000000", - "tRZlHKPzWgfu5SAtZZioNfykUdfokiKp8FEaYJdCtj8=": "763268000000", - "tRf28vRqtKHPj0E3CCGnM-C7QoFpScS-kWfGRX3bx58=": "389707000000", - "tRjz9BH6G_OWeNJUaOVS9p8GURbXCpZSIlvV4E5UR18=": "384581000000", - "tS00om-RXpKTU3fUDeKlk4lrOUJB1IWMS76jI1ye6vw=": "4176307000000", - "tS3YMkw69_YFBxB8AEnCi553bna_pngOLNXnt9cTduQ=": "1610036000000", - "tSDbW34jqQG-28nQDqKIkGrDplSRhaUMSVr8SbOa3SU=": "461346000000", - "tSRzYNwngaODGQvjjdHwXbGCIuYVBvJvdv_MpdTaqLw=": "1927537000000", - "tSom1-7hCksICUYztzd4CW1FhdpRCxTAQVGIyB0Vdlc=": "393570000000", - "tT4FPOXyLkdWUwXrZ75CXpKIkYy5FEoiv2zOmNilir4=": "3286540000000", - "tTHll4vF6k_eczXGmwkj6WqZRCP2G15PZVPVI4omnks=": "565868000000", - "tTcrSmOo_C89lpuxZeljLRIDylMfRzDWS-9Un0B1lSk=": "2083113000000", - "tTrpv-8iwNbnpCAh6gxOrO05vNmCDCHMnLVSGTWCpdw=": "3855091000000", - "tU2A-74kJZg62_8bSRtQk__dJSkqWo2u_TgQrcLSJ9I=": "384615000000", - "tU3D6oETUCAHBW3EgqL_Vz-4g_2Zbcm-ekaPxPANWZc=": "1928334000000", - "tUj3gVBNk7Ts_5_Fdf2l6DAu97X4Ek4ZyWJyhbTkBkY=": "416666000000", - "tUjnt1mkXktX2L6plbvpDS-tY-LsHkaBNh8a7_GgVjA=": "780415000000", - "tUqVDN9slVI9WWj1bFkPCrgAJxUMuK9cLe_qchBO8xs=": "457772000000", - "tVEpbAqHxeameorP6AfvQVixPIpj7t6lmG9WMBHFXh4=": "1979159000000", - "tVNYvyz7vFdQ_dHxXRiGcTqjNo5nXt06J6A6S1uFLGs=": "474410000000", - "tVR7v42z6RQ5KheD0uKeTw1tj_Ju_BCIIbWLedLjeQA=": "6369354000000", - "tVzS8DC0yRpTKFc4LPxzFVWh3tvBaY39v3v60iXHvQ8=": "650269000000", - "tW1SZ5hQGqVRkT_j-YALBYVGhg0EhTs166dxOlasGnY=": "1999999000000", - "tW3Kkyw6h-SlVoE6_ykDjHpCsyt5CZSYouTIWPMTebU=": "774224000000", - "tXjjYMfct1NrOESrUXs9JfQObjjB8ztcDTXW2xw5Kbo=": "839813000000", - "tYLjem6Mpptgvdw6aVjTSU8qaqcOuww6ziDz2T6USnQ=": "394270000000", - "tYm5XjzUJzP59nC34D9Eok4b157ogjrNsNAvjO29OwI=": "384615000000", - "tYwZt3wxlWbv436ipTvWmgoeaahvwHeTaLt5eJUGKug=": "753018000000", - "tZCsgiMBB6-hG3GT9Raa-eav1GJ7quF74UQ-qiIbjJw=": "384987000000", - "tZGPYARAhEPG3eq414ax3b8uDkg-8XisF8-wZN2GhKk=": "3269230000000", - "tZe4m8byNwoxiJj80SF1pWRhiiBl6kwN1I7RthLzB78=": "421597000000", - "t_2nvCJTLN16m_WkjPLnzcwtH1qlC46hBKS3jHrfhns=": "961538000000", - "t_GU_tmzeN2fMKNikL-lge3i6N0nyZg0W02U9JTN5JI=": "1152721000000", - "t_SD577sSQTkgeLWbmKipzU7THUJfEYAuDsQ68r8ge0=": "411085000000", - "t_oxw78KdH3qxCIYhx0TSsVHR3xJjuEUv2yjp2mV-sY=": "411085000000", - "t_tCUCvUgxTBkgKcByAnOvaQLG_UcJLeHRxCwOi0_XI=": "1934863000000", - "ta9D_Wo6AaRzqFyEp_ybI9KRw60VBVq1-kaCAojPp-o=": "3269230000000", - "tar7xdNC8GbyvqegJ-yAZ5wfNW_DKl-2Dd255Hld-Kk=": "3147817000000", - "tb200HdDFbKCJKUc1AUkoi1T08G2EMBJOzxY81XaGWI=": "458877000000", - "tbJRgXFBrzOWLHjkh8CccUyAQYFMa2D3JEn1cUBmXoU=": "1879350000000", - "tbSigNcvM0wwa7Ha74l-ygfipI5Kx3_wBg2XIxnxSQ0=": "769301000000", - "tbZPLkm57GIHxFAM5KA-QwCXf1US8wLmjcP-JUd0sK0=": "1156522000000", - "tc8wJvM24qkJoZTp2G3O9GvsgiS16lj6lJ1kUHdDVvE=": "462050000000", - "tc8zBSdcFv_66-aFawiEG6bGgGeU4hfkMj1RSm7DbmM=": "384615000000", - "tcCKKimLBKfQrjXY1_XW29FchMRn_a3PJAbmFlIyCZI=": "450697000000", - "tctkmCzZiEbCaYLUHXHwNb_ThEENZhrO0ihN0MYFlkc=": "4586347000000", - "tdaWDeXHqW1DWGeKUE01tqtstOXxwitqkY2NraV6JTw=": "384615000000", - "tdmzFOW4RxRCxfdfgnLrkedVLWSZoNtvqloGDZ4MJfU=": "385506000000", - "te-QsJHog6_lbYaCeZitTQhyxh7Ps4YmxSm7v--HmWk=": "417633000000", - "te7Owco_qtw5va_X7M1biRrRfO1wy-Ck2mziuW4toJo=": "384971000000", - "teak5i_IKklOSkJzOMTMoa_mpajYd6hR_ncGL1EgBi8=": "1053419000000", - "tezAKSKE3-MqYsRhXs-bZY5HTvx8uDz5cJFWRsDOkI8=": "415629000000", - "tf2NJuZs6ga3oBH1LgX6IwNrBOO0md1zQ-fhmIqgJzE=": "384615000000", - "tf2iO4FjTNmAtDp2HFhVXQaRppvNG_2qAGQYhLelBLU=": "384458000000", - "tfu-zg9Hkk4g9xRmnQ5JuR2iH0zuATmqWrHB_UJ1o-o=": "13076909000000", - "tfxge1HbpJXV6ykWzJij61KeibZNMnslIhQtG1ViQyY=": "463071000000", - "tgJ2RVgk7xIabzlqXcdgz4n2ZkE63NCn_lQJaEgP-KU=": "2692307000000", - "tgWi4I0E59zCfofYQzRnhIx2csr3SeGb2PiH4_dCrRc=": "416673000000", - "tgXX7Wl0cEjkeASlknENOMS02NsnmF-GCBNLGIiyHVs=": "391019000000", - "tgbrYlUKWdU-ZsUpoACU_PGCxr5ibc88_C38DqME7-A=": "377783000000", - "tgkzQUH1FZrZb5IfaeXKp-lpxoCgG6-Yw_6vSn1pTI8=": "574106000000", - "tgoKaBRdoZ9cqcJUvph-wOrjEvRBzWoj3oWxUW6ypIY=": "454545000000", - "tgqwR7f5lxayIoQXXZPIPizGQQpOixobtWttUt_h5Vw=": "1388517000000", - "tgxiJIHXzhaqNXNGyQrkE4bUqa8Dx09FGW2F59P3dME=": "453157000000", - "th8z8obl0EjEJi1o5WNnbUHbWIKxldn_jAzPlJIHVwc=": "1363636000000", - "thGEwr3hHzoE5Y6ouIuZY2fjDEu6wBIDs_PKW5x7R_Q=": "453157000000", - "thNm4om9ZpzUb3Q4eYgdAHjLnr8jHxZL9BZ_MLoXQ6w=": "624999000000", - "thUJvJQ-AGj12QyHpBM-T5QAJojDDRoPYd7UelvNU98=": "1923076000000", - "thWSh1wftircClwOjgDN8IkkOfMyLdZDZTY_ranAYBg=": "422561000000", - "thafLXWeBxlCYcN3hITBL-lbWXIrgVmTMEgcXJNfTfI=": "394351000000", - "thnlIxwjLpYZe5t6kyBeu3cmg5NMckbxL5hWBh4VEs0=": "1260181000000", - "tiGewftLaMciI1rI4PhF-uoajuy_6ZDI5YmNXK59QEk=": "911191000000", - "tiX3vA2T62XY7BBojcDVJBTvTVdSbulMkuZbjp6e6mA=": "446615000000", - "tj5zvGwwD2Kp100BMkhF5-Ym3GYJVIveL8otI8tZqgg=": "385505000000", - "tjL8u-f0I5J90yfbPOGZLwk5lvsEVcXmnRvWmp3HnFU=": "384615000000", - "tjRk50ar1Z8D7Cu2Txo5jnEjI9dKrH8JKXIY1mHNAIo=": "939231000000", - "tjiN3DY8MAvXqN2WGB0HHiKrh3HaijIR2__TX4CnXmo=": "473265000000", - "tjuPYYocikq17QJckkq7jv6e7fsdI9PyFF_GF8xz1YY=": "482456000000", - "tkWYK4Ii4BLrOLkPUNFV3pwDx4aLPFfY5yMF5ip9Mr4=": "458634000000", - "tkXXevD6YLkM5DmJEhYjS0lTuUtKWcPDpIk9bdX4JI8=": "694030000000", - "tkYgAxPVNfIBJx0bhAEEIlb9xoAABLj9pHcJi6L8Xxk=": "411085000000", - "tlSSKdQ7dnLAmdTHmKd-slq--GXsjPyw-BAa_yq4-aQ=": "825733000000", - "tmCIy3cjB-Ft_7Z04dKWU7ZtytQ7AtC3zLFr52c4pdQ=": "7497594000000", - "tmM8KarNsRL6GZR9440Ba7CjiZSGsRAUWSX5N-71S18=": "383253000000", - "tmNn09X33nOvKRQkPKYk4NVaKRPMv_1mLrc1UPT98AQ=": "463390000000", - "tmf1fX4rpGOy6ZMBFDUge5zV93dYlgxLRiZZv27EbjU=": "2916658000000", - "tmn0Ml4h-yOz60BzCZg9mhniq_ouFVIdBsKcvU_A0Os=": "1666666000000", - "tmpI5xt1ej1aJuL42p3E8jnJ2HJZJEU9oeWb2tVDyp0=": "2041005000000", - "tnHmdhWND9LAlAGOK3zbKSwo_DOzGbsPAlLeC32DlGw=": "499178000000", - "tnMDFqViDzJ7hOksEnTv98rT2rPS3xNpD5d2dqgA31M=": "393446000000", - "tnZtT9PvWGoU0Jp5eWi7fVIHPrIUEQnwDEqFoHFFl38=": "470350000000", - "tnmcWmaRWBMX-JDh8vn8H4IurmqXEOz8_1P028sbEFg=": "455931000000", - "tnreBL9agVLI78gSWKGbhLb5mxOXpsb1xh-V0nYveH8=": "384615000000", - "toY_9IxOHLpwM8grnY8K8J6EwE597WtMambv0VLqLfQ=": "3926771000000", - "tofBgP-5XgGpv4ZZAHZIKmEnQVosDj7lIit2yGan-kM=": "464004000000", - "tooDz9aPOfOjxsbcDzfT-jbBD9VFZHUGs909Buz_rl4=": "391798000000", - "tpSr8gPlft4rDFsNJc09AAwMA34hQKrivoY5U4WjOnQ=": "384021000000", - "tpVZ9kCNEvpe4gS-rh42C9GWC-oBOQ75ZY48XceOGqE=": "3077798000000", - "tq8qKU4yu-mOP8-WiiWcCxh_AejCfGt_qn0_0Z8MNZE=": "453712000000", - "tqLOMOyeE2P_xamKhyrEM3k11sPJD4y_ihy2DyCABHI=": "736579000000", - "tqVcAuR25-aqa-gkVxOnnSwsFJRZI5m-JMMd4ikFfdo=": "385508000000", - "tqk4ZrpbsVEvjoSxMlp1m35Yn_T6DHH9tvvD5Gjr3n8=": "946663000000", - "tqoT-GQKjcoCY5_KM0OM9OFjvjS7PpDEoO_OtQbdCyE=": "826798000000", - "tqy_x4U0OlJ_ZEbZMygmawHbIdsW6ehAz655pBd95RQ=": "384615000000", - "tr5N7HluYhXAGEM7W9gWRZoazUj71B4mjs0MdcJKNN4=": "2615479000000", - "trWmFnrMz_FXceilra0bi2LqtBtzXY3i0yhZ9AxCIOM=": "1666666000000", - "trcJp7lUbGYHT3E6pjlmydQYaFiCnkOX2I_ogrsTSJw=": "2275476000000", - "trdNwgy3syk2eMp_Fney3qq2om-BtZ1OSfEwBVNnED4=": "454485000000", - "trtoIGh3owIUU2VXiEHPNOMJNnsKMQocZHpnv6KPhq0=": "384615000000", - "tsAOH3GTsz74BT4J-HZD9piyJ2H8rky8UMzZDnDfFMo=": "469837000000", - "tsE2wHpSg0KmA5pF_EwYhgC4B5f1XW4ZIy7XLuEiZ5w=": "1047200000000", - "tsNtblO_875P2nYX5fTyQtVNd1Kk-hrkBDB6MYWVGbA=": "424673000000", - "tsZJ28XbRQTcVWvCEBPgWJmxrL5bDUEEs5H9guV-MMg=": "454137000000", - "tso-3uMm_f6pQ3myCSYEQ2Ikua_3LG8HUnHhg91C0iY=": "384615000000", - "tsqgDoGiu8hETbF8Mo0TfBa3srwamMRk67REJFkgI8g=": "416666000000", - "ttEyMTKV2U34yiGPF5nDNn_HkIv7l12wBbomfeYhGME=": "447986000000", - "ttQupvLn7HxHKFEy0K1vjFhJ98nsgc881IXRK4qhTBg=": "455141000000", - "ttShAZ8z3fYC4iBjgNkmtf029cYrMIalhL1cdNAPQ_M=": "1673017000000", - "ttWpGCVWMeDElp3mutMAShfEu0qf7TDZop_Vf-UOXi0=": "4423077000000", - "ttbli94UGIUHVT4EkU9FWAtV3FFSt6TPpcYoQdTVelg=": "1364610000000", - "tteozbIjEKWkmUx3sQd7CTYJzl9DpjyLwUdutohc4U4=": "384615000000", - "tthENwk-7bwcsm1PqDxCc6GbIQ124ISn8PVKUHuAsR8=": "778301000000", - "ttnv_lt2VsWmMCY-MXaa1EkMhTA1mH9FHStRaa7O9w0=": "1249989000000", - "ttw2hHZDwO3garzNcnNNF0nd8BM87GBuXpY-h42QX90=": "445981000000", - "tuPi-6ngTAAG9DKgrb61wYUkSeJxL5_cPOIpt1p4D4U=": "1381273000000", - "tueBIrSuWTeWmbSH-cSOUQUI6a1DCWj0iuugW3JPWRI=": "908983000000", - "tuiAIIP4RIkigFWmzvd56d0KlGE4cSUcSqxv46Gwclw=": "534999000000", - "tvYKnfRIDZrkt9--thOcF5VnpJ6-8TWdoFZshSWcono=": "1135024000000", - "tvcp_ZTScUMapB2XNZ9ecJZmOxF7GLtx7x3dZBWu1bE=": "1144901000000", - "tvjufxW-yLRfKDJThUd2CmhFQGbgWq9zAbAFlOCfjvM=": "4673517000000", - "tvnTHpMDA35JLsuTk5ds0ah-FOW3EVrRqzoD2H_-v_M=": "1152797000000", - "twDYEOUZcKlB_PrSN7LY5OH68_smgaZDYLWWWjrbdYM=": "1927537000000", - "twfDA1CLhOD7z0Q39ueLvSFKxpEhXnVqW2ai4nYsglg=": "7809166000000", - "tx52pXBD7fFDfa_uCzo5SudbPeCQnzhJ1FQPhenV04E=": "457611000000", - "txEt5q_XIx1G0-w2fYbIeXkJ69qYzaBITPra5wGvhwk=": "457043000000", - "txRQns5qNgPMdoXzBydIMscdkUqqMA8efR4wIq3TYjU=": "831259000000", - "tzSRsoSdnuKv-71kMyCSEpZXHs7A7mEcb0ve_GdOsn4=": "1533218000000", - "tzwWWO_40qHbB-81r8MNQUaZs-JZbPBHdhLFIRXH9N0=": "376747000000", - "tzz7uR4sPUZrpZohLkmXccGlacAh-xTcE6omKKbq9xQ=": "454494000000", - "u-Caf-D9wEKwvN6nKKPMc1XgGxHMEEUvBbMZJ4bJcZc=": "384615000000", - "u0-ukJ_swyBQcdlt_9qDTk7StScLrBB9f4fEQRwEk2w=": "2009477000000", - "u0JUQTH7jm5f13W7_QoYDj_aWlyHLtl2ekmht4XBCno=": "385510000000", - "u0STy-9-LOKcqCShFwLREMz0tRneJ0ZfvBvm5FOK9jo=": "384917000000", - "u0bZ8mue9G19sh9PhnoIwDGrD3jZW1i8Pt958g2Suzc=": "465700000000", - "u0btALD87ql2hiolhxPwUDcP7StWBBVOKphDAbbElyY=": "925501000000", - "u0cEh1n__X-vYOQ4r6DVjgbhlB1JhYfeBmWEG1-MLW4=": "499999000000", - "u1kLn2lUKCixMGzKZz2_gnGK6uHyZUkbiyVdtaFA4JA=": "7692307000000", - "u1uwqRBietyHcE0xMU1JJCGtJCY1g9F0LdYcyf5LvxU=": "1155246000000", - "u2HYQUJxE7cUQVmYEj_rfEcdege1OTOyDT7uLRDAM9o=": "384615000000", - "u2Sqjz_t_qmQLBaApLka_hZx54MLKsbCz63c3e1PhT4=": "1252892000000", - "u2W37_ypwHYUAlXAafmK4L4t9Cqaed7eCy_veRgX240=": "505255000000", - "u2gJ1rf-BS3W1wRcGSWoc3SVBl78HL9NojTbmR23bm0=": "384615000000", - "u2qVizENdgXO6S15YCTYNBAPqPqxhc-dzwDtHsfY7Vc=": "423669000000", - "u3-lGz4AYul1QJYW-D5ErgqEOa0mYOTO-JN-HMilB2s=": "384615000000", - "u360SbY6PWkZyad8hMh5uzmYOfn5Sy9RD6KahgQIAOY=": "1252908000000", - "u3WUg3jhD9IROiEYwrysTTf6f51yEiOFFC7gMxE60DU=": "1153846000000", - "u3jzU5VhQogloO03ho4_DWWxsjwgf5yICwTEv_6AkKA=": "4349302000000", - "u4HhJNYLerThiCM2zSZuRe6Pc-fVqJa0gtn6bdVTeIE=": "394347000000", - "u4mGBrNJKVXJ9XV1X_PlI7CRiWiRmPAXEr3pD0v1f64=": "385134000000", - "u56v4pXibTeCM_TrQdS-EdGpweEzCguDmW1Ly9zpp5A=": "4084824000000", - "u5FbAJmxEVryIvJEkgc-N7AMbsFPkZkfj_Nbq8YGXgo=": "385506000000", - "u5FlIVyXcyYynTeTB-ciaFKLgx3J2TR4JaWtLC8D0Bs=": "769652000000", - "u5OhQqwLwj4oQ7QRXGJbBcS2X-h7bZ-BBuGbfj8Ds1Q=": "3845693000000", - "u5P5gDF2UeF4V4YKlCLbj6y8uou50WdZeAZQ0-xvc4c=": "417630000000", - "u5Pj_0BzNh5g-m4xYRSdaWMBWvmmYzHvzO9SAJx0dxU=": "1352005000000", - "u5U-5MzuCwOOy7k49YwQ2EicJmguQvohaiAN04XPEZs=": "458356000000", - "u5a7_hC5Fgd7bBa-B12KLHtqeSwmWd9O_XEpEBJBADs=": "967404000000", - "u5o8sA1kbGhB9G0bHQ2s7mdVC_zPAuZMHYMIfeJ1_ks=": "2307692000000", - "u5qQFxkj69oeLyjGmKKjHczFx5P4lxmqTMWMVkCGmeo=": "2115384000000", - "u5ySHPWeSeRMoyYrY7XcBNz9aP-0Z78qTd1MxgWkyoo=": "769230000000", - "u6KtD3eZDIY8CuzaWYsRf0RVh238j8bmc9MNgobpD4o=": "8213696000000", - "u6Zvw8hhFpdr_rQGLATTSYK-SmQw0SLsbLPeQmX8w9c=": "398808000000", - "u6u_nGgBDk45MbLY5Uybo6pLlXV0Ra4AvUeRooc0Jqk=": "812736000000", - "u74L_QTu7-1iqHD7x0bPKYrK1ai-OcwYX2pJAXh29jY=": "1153846000000", - "u7WoclanxRaTEUOPoK4ksbnKfo7U-Ze9ZxpvQmaI2v8=": "768695000000", - "u860_C4kmWRf5fI1F0rxNe7wE3c-xGPbMimyvRgsDww=": "473064000000", - "u8ImuUsQol03bDs2q2JXz2Cc47dcTi7IIz1-e1i7-Fo=": "16258427000000", - "u8ca7bcpO8y9mn0ZvazaLkUjaRliNYqCc0Ae-LMMO-g=": "572713000000", - "u91lWrkZ3uNpwpBLhRapYir6OIKSnxjY9vPALqFjMTQ=": "1538461000000", - "u988DjmQTK02MO8cRoAHkGbY-ruQYNy7jDDF0gVjgFo=": "452989000000", - "u9BQn9bLCvNT6aNrOshz52BvoSTJhRsiP1k40a0pyrY=": "413520000000", - "u9szVgNRpbbLIB8Itx0qyVq3ka_NdhjpZEZ8t-FdvDg=": "416666000000", - "uA-WShqRpF2hJ4MaLo4b4771ZhVBWCWfXAjpWZpoYUM=": "3750742000000", - "uAD7QvOhKruZp9nWXINf4XHMLAHc72lFNzJVChG5tXQ=": "470730000000", - "uAOupYTBopp_bVBGwsoDAyCiVcNpgFlQYSCBokJwz0I=": "459394000000", - "uAzNSBTDDmGOEpidLWONf0Xk9GQGemD8p8d1s4I3x-Q=": "464757000000", - "uB-p3PWg1Ptb8GfpCL4JC77mWo5i-fTbNtnh2q4iw10=": "1380996000000", - "uB31dXTnt1nhKQRH4yH1F0WRXTwqDUNSFdV1jlgkmjE=": "416666000000", - "uBK-cgU_DUFLuRGDHVLeD1KTZezzkNkEOU49J1bntb4=": "767923000000", - "uBNWPukr_cbohtwEhOHiMJlh3mBlez3vHa3xaS9QDYI=": "388361000000", - "uB_wFw53Qk05O1NgMrJZQu_PHTMLnW0XzdeQL4GT9Dk=": "408041000000", - "uC-GPK0OjZg7VdrznRUwKkjTaU2OfxFj8GEUgn1CjsA=": "381805000000", - "uCJ6fIpgdILBDdcFa2iVaUbY-IR7YHSvXLaPRacQafk=": "763268000000", - "uCuF_Y1vpJxVd-4_qhaktkyAyZZX-at9LXVW3_Fe9es=": "453599000000", - "uCzz6LIk98OfYmPOqhz10HUegk9GIXzabAqNEDEACDs=": "449266000000", - "uD03PwV6OORosD0csyNF8cFCXNOTMWo-ogUeeqACirI=": "673076000000", - "uDNspK-oSBnLly5QCACWdtD1OnRpguccBwXzvb4z2xg=": "1233257000000", - "uDRmvS1XXp8I4Y8ZW3foDA32ynBHqCsJdKwr9vhOAf8=": "384697000000", - "uDSEVK4R-x1alwu41xuUK1fSRox7G3Hdt_hu8bNjEyQ=": "1249999000000", - "uDkHNQNdE7zhUmaM2jNd1HxL5Zu0elL54fhQ0ym1tYs=": "4259727000000", - "uEDkFpLLaCCwZe7dOoTqcpc1Z1f5EcRBheyaCvGATY4=": "19285060000000", - "uEOZJPOpQRQka3WJfHti8pwRjwi7maVqlZ9G1QtQOF0=": "446606000000", - "uElJMM3huf2O_q1BquAwcbpGXC2ekpK_1SMjow3xhc0=": "384615000000", - "uEsjuocemP2vseiIDsx4tJ466Yh37MJL9Si-qs6O3rw=": "535979000000", - "uFAoYj3MeA5BGGrXnQOhkMnVjVOhNIm36YXGXpQ_cIQ=": "378257000000", - "uFJddm906q2_HkxE4iZGZT0Z1cfbpt5efasCKnu01aE=": "636269000000", - "uFiyrqTagtLMuf8sOhkbfyV0fdBk-jvoMfYUTRsVkR8=": "806633000000", - "uFtPIhwOLFJwR-tSM3ZukIYOwp3n_Ffy8d4HLV3dp_Q=": "1252898000000", - "uG6cL9ue5XRdBYTxpCzR0vtLaN5FBv3E1suymlbzLeU=": "1252909000000", - "uGINGwD3YISbuq53pLHpev7O48iL5Knqm-0j-zHJJwA=": "830439000000", - "uGya-BH6ltOLgeeZMWbuQ2LPvZ10Fgf3WLM3aPvsh40=": "499999000000", - "uHGTHiDBCmsAaRZR8r3WY9oTYfzWVaCoE8PZ1q1IuZY=": "390053000000", - "uHzQUy1YxBbEiRelYyILEOzxfkY2EdkfKThWj4Uhaa4=": "469809000000", - "uI2rRC-12kjAz7sbn5rPDG4YA3lFvCCkfX_u5WEpBNI=": "903970000000", - "uI2zlRgLuwS9tDm32K8Y6Qy33LbOOgaZdT18INhLIEI=": "385505000000", - "uJJMSoCQEJa_R-aoFMaPZrDSd8zfbpRDqnozp8xAle8=": "336883000000", - "uK5BpiHVvGEIp6okbIH4idznrZEJhXU5nWjzoqkKuLk=": "470493000000", - "uKME42N1JWg2MHntr2Z8RmxXGoxpMcC6K6VnOS7EuTk=": "519249000000", - "uKW9v0UuRrJQHKtpGhllfDU2LjtRjqla9qKM3xG09k4=": "396485000000", - "uKZXSJvx139fJXnfCl8ZNm1sK24vcCqJMcDQboIXLek=": "634303000000", - "uKxPmWGkt4WwmwTsU5jvINrb9WhCQo0d46bH1JX6PnE=": "3306869000000", - "uKzPiCb5zCHLDR2nZ815fx0gTYiNMWSbq1X2u-eppA8=": "393191000000", - "uL5HKS5W-L2OyVTBdkFq_WSv_o8GDn2LQWcqKX0fjK4=": "384296000000", - "uLJXd6VLEFDe2MHry-wpd0NHF3mcH6bfhHWEK3kR4e8=": "1346185000000", - "uLS_fhuc93nN-v7NJlNMem2fKOWp39haqe5Wm3eUGfg=": "416666000000", - "uLXHbifovu6XXpF7hrRzPW7sI6LZo6fUxLiv6AQQ9js=": "454486000000", - "uLnxMYsyEeVff41_LavIjfeNPcyLexFPz2Nfw1Vj_ws=": "384615000000", - "uMHJl4Q1Wp0iBKh_i-zCw1D52F_HLCFW4shY-gz5Tmc=": "460987000000", - "uMU9MpbbVEc03n-rWOztA846yWKTHmv-O26TCSPIkbw=": "472905000000", - "uMbv85ziq9ghgSriwW8cdv_6tLtokaCPR66OepFcCgM=": "385509000000", - "uNBJylxA3ALRnVdE8VXdUySdOgeaU3knZ-Z-LfmTbhU=": "384066000000", - "uNLp_NyTEgFlA4qxBDg-2Sy5jUy6MjIY_rRepKS-Apo=": "1241607000000", - "uOFYkpFGIcEfgZLjpe2f31D8fkwKDErSMG3caJ3N5tg=": "411944000000", - "uOgxa2bFVUXHEOBIiQ2pR0JAeKkYxvhT7w7v_xvFOEc=": "450789000000", - "uPhI0wkP10QMmj15XpP68BaH_pmHIpsRcTX3-vI-OSI=": "384615000000", - "uPwYBfOS0jv-PY518j-LNMFwg6WQa37kvzRgtvxJFeY=": "458722000000", - "uQ-IbXSsBQf3j6RjjL2wu1AZWoZaG-QT0C9ZIRKb4t4=": "1156518000000", - "uQ1Rq0ow2c9z7LljLEKuH9aEv3-tFFqieXMOkvyftL8=": "1666692000000", - "uQ3emwq0Ehbgs1MO1TZbO_nKwboVunr18xMghKvx4OE=": "699569000000", - "uQiH1DaZRcUpxgH_YaaU5zTeNSg_pvoLkmELB3tZMiE=": "414951000000", - "uR4GXKRqzV21OmyGWgFSwNNOuzlMAPC-b9QleDtsrXA=": "383760000000", - "uRF2aCkrfLwl8etRLO4Xj2voUjGBvcscXvXuz8xO-jo=": "11356472000000", - "uRTDbxoXUqJ9ZkSOq0GR0TxRuXMwvwNkBWg2RuXPsuI=": "472515000000", - "uR_Ouwj7c7tyIjuvyLcRNW5vvy-af-KgUR81GojHUYE=": "444560000000", - "uRg231DtzhQQqGMhlNhSrnZZZzZ2E3CVCKJ4zu5-TfE=": "420514000000", - "uRkyr0-XqcSMVabc4pL42jrsZhWmzvYiZf-UF1GT2-8=": "385505000000", - "uSHG59YeEqpU29zKQ0u2omugEJSx40dr3MH_AkryFyY=": "381836000000", - "uScYeiBidjDTO5Mwms7OCn5NBmjezXkUjCXFxbEADhU=": "1841763000000", - "uSoWQ-XgwvJlYrWCLhXDgM4JwJeyfrNPfwwrwuo-Bd0=": "576923000000", - "uSs2sWE8yJJqzpUGsiyGgUUSTXYLwnAdsUoi58TcK6U=": "3749999000000", - "uSswHa7IDrehX-zV5LJq5urjkboN8gpabeJbMNyXq8Q=": "455327000000", - "uT60S7nroW0qoUKoQvmyTvjLeBkiRuXTi_83XkUWGZE=": "384070000000", - "uTL7ZdjFawgyV9LHJFE-aPC1U79tvwYcOPR9aLF2yPY=": "392996000000", - "uTnx0XxY4bIeLbWrrFO1ZTI5weGBPDJDotnyGDXsneo=": "391550000000", - "uUn7QIw29ABQ3qtVmTRi0mkQ-DQXH-STufPgzwnIPcQ=": "416679000000", - "uV56adJrDCEjyfcX40RoyNJVIpV43BZNMs3tNxadpiw=": "384615000000", - "uVb45WlYKXDqpVE3jtWR630nHP-qnaNL6_81-g3wLgk=": "6518282000000", - "uVwMsCxstuvRBpTG2RK67bo03kPLiE63DE6RdcwsKAQ=": "386369000000", - "uW5VMAr01En3VT0_CUP2JT7DmSvvy4tyXhBd7Bf7mvU=": "383030000000", - "uWplQ36wnVm6FhpNjqYnE7U14Iutv4R-qvg7SWX66Wk=": "3808272000000", - "uWxuAaPi4QevAzx7e47ue1-5wA0gpwDtsBh6MOu5iZY=": "384615000000", - "uX2bRjCQnfmHb8ILeEfJ_HUNe31GR_wdM24P0034zGg=": "470198000000", - "uXTpCl-PNoi_UX325Hf0L9Uo7jxtRqnpS58NKXjoxPk=": "416666000000", - "uXdannK96wsnBMoY7K3daq8MMasg9-N1qi3EZj_Ke8c=": "457896000000", - "uYHDXwE4vvyau1tW7BVnk2zLbwYy2eCoKxJZtTyg6w0=": "2407430000000", - "uYKgYwl4gI3b3f0FZnLlqwXZ0paBisajR5h7pA-6LeQ=": "6054573000000", - "uYr-ovhQWVOePH6MmLE1ybyDAk9X12_Xc3ZNeUKvgdw=": "376833000000", - "uZ4W18jaFZkbvjH83ZvCeWUG9EnUJmPy-PyBrDVDv5U=": "3076923000000", - "uZBcbyNmNZmlrv1yvWQhwjK7zEfg7TYDBEXV2f38iGQ=": "22629879000000", - "uZEdY7QbrukXZPwhBme32GhdBoq0ncZEDTya1uc-f2A=": "465642000000", - "uZKoqkSlXsrcSkiAV_LUZ2MtzAxQAxF2DnrTS2tuwTg=": "385219000000", - "u__D97IoSuapdqUXUtKZlecekAZIsvfczfYKA7nFN_g=": "515384000000", - "u_xrtduWo2BB-UcYGq4jkEKHeO_x7qAw9-FaGZFamGc=": "4176295000000", - "uaXRfuS4hhekDzVISbebs8HHePLZbUev1BJXdVhwytE=": "1513350000000", - "ub7RVxXX5JgTFf_9UQoMoRHr7tm-elfu3sUubn7VJCM=": "445280000000", - "ub9qWeE6vYkhIgPnRJfHvFq0SsqS2afiP9tPwJPDrp8=": "410048000000", - "ubZEuwibyhb3z2-ceqXWkadhiFF4wbB93Ul4KKOAOe4=": "450369000000", - "ubiyqt6GnXM9aSVK-h0BFzjAUwp0013C_mLv1Ap0sEs=": "3714283000000", - "ublFok_CBJ6Za8X7vf4DDueM-aZWGsBhA3wQ7K3thgA=": "392939000000", - "ucJy2Razdk04H4ql7pk_4vnlrRkJfe0nI74g3bGonKo=": "839770000000", - "ucOY5l7LuolidjvnCyj3zTp738sNHeYLNnCUSPlHQEw=": "384446000000", - "ucOtnrT14WO2pU2Om4Fnvxf19bUvhhS2Sl5rUja3hJc=": "13620024000000", - "ucPDfZKf4DlbQ-SN4WS-40VFA9SpCQ2kR0qT-A4Oqbo=": "354711000000", - "udO33KOdDAWyM8wEAdhU2Vxxgp9zPnvcZA7kMM1ApCA=": "384040000000", - "udTepGrbAGwVwVB4_7rUKqgBnMuHwN0CI6Ple8ujiKw=": "833347000000", - "uexZ-9aic1cRDNcymqcI8WZzgfvcpbdmodhLX3XQY7Y=": "384615000000", - "uf6dAA2frj7p-CkQymp9fpquYEL7Esw85iW-ugVsQLA=": "576923000000", - "ufKQZuO72LbW1uozFR8VewZJJK09Eyafu2Po1oQ5_DM=": "379414000000", - "ufOjx6GdP3t3lRGiCt1CwO7JdPH8TttM4ojPwrj_LOo=": "377410000000", - "ufe_QHIUYTfaJ724fTY1wcajvSdxStDsnky48rtSo3I=": "417634000000", - "ufg7GZYGtdkgFtGBFeGgU_LjFb1aIi4pV3sdcsXhMEQ=": "464564000000", - "ufwHRT0QFyfLZWvjJmoPi_PClgKexTgARZCKMXeUK-A=": "458174000000", - "ug7Jps7TJz6pHR9IOAPkvo5v0zEpj-a_3GZLUcIO7sY=": "449253000000", - "ugPALjf8sGGnFJ5GX8wSKb-QUGRfW2hg_EKZTP7BrWM=": "1156522000000", - "ugrIPJAXnT7aE2-9Sv9wGqgHzMSNledYUdbsP82WVF8=": "769230000000", - "uhCBqX9SIrqjwhwe-zGwRJ2APxt90bhgLfZmlLLGk2c=": "910115000000", - "uhcJQv38aK2MhBQLJTwyQcJ1giv5HEqH1HvjgWHPlzA=": "787448000000", - "uheY7nuY3AeCasR_05qJD3oBNQWno4VNZypZxy7Ee3o=": "1645346000000", - "uhov4CLU-Kd6dDM0LTfnMkS4XA-Nd4iNzL7v8b1DaxQ=": "441666000000", - "uhpz4Dc-Sphcaywql0gxeSA4BiKGb4y9Fkhm8a-xV6E=": "1730769000000", - "ui1lt2c3nwRA-Z3lSqmhKGRYzINocgSe46pLlFZQ6Gg=": "659188000000", - "ui55jlsHyFh9MsEl62UYMoCdl4X_3NmEvORuHpBkqJ4=": "3338945000000", - "uiEULbLaiqtqvYeCZMD9357B8S_zz3GjAF3Be8uO2wQ=": "576923000000", - "uiPPg2u1ztJ-8ZLguDK4meK1KgDQ2kjWHjwdjRcOpjc=": "384570000000", - "uiR6NmqFpPSRQLkT0_CBWC_e736kwHtajhgoAi-2qFc=": "16249119000000", - "uiTPXt4__Tn308pj-9F5t0aiV6lzhhOqQppr2AwwFzo=": "1167539000000", - "uilPs_OJZWMyO18C4HlX4kVMsiWxnjcVVDl8lbnC1K0=": "384615000000", - "ujAXHbBr7RJ3K--5oOjkdFM4hd9Nh_mUMxhCFluvpDA=": "413426000000", - "ujLCHMnnLrKbNfW_qu-3kMg3LDTrD-zUnJRyVfNg26M=": "422196000000", - "ujQaFDnZ2A__rNdhTj2cjPY7krOs5TLlrhseqnMh9Ro=": "500006000000", - "uk4y6STxmmJVpg65-Q7hHgP4JbCT_GtkkjGt_cThkaE=": "1840889000000", - "ukgtFiykaL9o88XnwTIi6dhmAKwtUokvR0tb1hiWHEg=": "3782064000000", - "ul24CtfqE6n5N8Q6lr6uoKGaJaAkLcUx7t-nlhX6eUk=": "491921000000", - "ul3itLKsXBNPxb02erPYLYOPAWNEHlJdUVrluOIOZLM=": "378460000000", - "um17rGHVnoqFbCRDnvdVUEcDQhdaHL1nP7KT2MUw4G0=": "2344906000000", - "umQHLk-zhgdDTlenA2v9EEqsm0lJGXfq8ZW50NEhjsY=": "1927551000000", - "umXnKrahJ5TsuvPQCgqE2S1x0BjffHwAdSiU5jGf8tI=": "453638000000", - "umfSZQ_Ygvfl4fRBVwnorS9PEqPTPm5-23vRu8Aao5o=": "961538000000", - "un1n3cvDrvCBB1fdwgc9vaFyeaxICz1aO52QcImLfBE=": "770215000000", - "ungOsBaSo5o9tw0CcdjVRd0XQcxLgqP25PhjUc6VfBU=": "833347000000", - "uoOWDTeUVQHiSKnh0zrA9O83bKXQP5NCTrf931X7m6M=": "38537276000000", - "uojb6KF-U_3vk-b7x7WuDH42y5aEAaUVMftqN3ewMgw=": "384615000000", - "upD17VYhAcaHZHN3UUmI_dmI5biTfP1Jkf4kVqXYZtc=": "385507000000", - "upYLfTxFCGIAfCKoDsOmkip-8AQ_nZkIz4XqnOHAdnI=": "482872000000", - "up_xGKqkrNgyQuHtY673nZkUz1IJklOuwtK2M_ZQ7ic=": "7930076000000", - "uqC0Zlj9DDp4Oj6bdzPXrjon_oV7hkIzCd1QGaCmcpQ=": "7499999000000", - "uqkcEp8Z0ATtQP82vxWcdB9IEZyGsmeF4eliiY6mypQ=": "451350000000", - "urbI1TPEgYT1syuUFZcdEXbZpkAORncYrKpeq_8cvM4=": "416666000000", - "uru-PN89QpcJR4ps0fCDNXfctFXX09dX2nyXrWMCaLo=": "416901000000", - "uryBxPH6-L6pej5VR6IFEyJFAcG9yT11fB3-4Eq6FiU=": "411969000000", - "uskZF2aFTsoEjrbd45OjNiiq5DRlNbNfQ-oYGvO8Vs4=": "641074000000", - "uswEEnKHOg1qEAr4bKa2Bu4MlYzV04U9O6ZZAyiOdoU=": "4009090000000", - "utmubS1-hlpoY6qxepV-Xk0K4kBDvxGURf3MTQIn8Lc=": "1923076000000", - "utoQpWoFedpw9zt7ayFNzGr0Vlrsjy--VC0tRc4lejg=": "1871299000000", - "uuYF-959WmdtgLLA4iq5iYhLQcQh7Y_J3GbuMBKjkAo=": "416666000000", - "uulfeqeWEM5lCniOAryEMjhA6wSNjbVrPxt9wQa21fg=": "384615000000", - "uuoqq3mXV_A7HEqYM_l13uu_rC2vULE7sEQmrTqU6Pk=": "695350000000", - "uuq4tHx8BI9dFzIyaaPQV5eL3ahVgSLIoo3srAdQiY4=": "384615000000", - "uvoN5ij1SaMM_PVhTvWa_4H0YrRhRnJ3awDygIYB1xw=": "461180000000", - "uvuvfUU4FwCwzaKG3FfViWyGhU_xn2SlNbCpKFxisB4=": "3076923000000", - "uvvXeni9hrtpOnVkSQxQiYGDDNLK66SuJ-xbMj1y8L4=": "1866939000000", - "uwEBoJv2VcM-0VN84W1uW0bGnJ-qGwZtfw3XYK2ExjI=": "419234000000", - "uwTmizZNGIN0ip82dOST0Gj5_KxxF71mjQIozSMKCLg=": "3333333000000", - "uwiUs5PFm-4xXujBzdhGoKCpyjUg5q4RCZLryHPogdU=": "395125000000", - "uwmTRpk6qlQq_YgstgyhJ-rYpehxEFMzk_2N6aUVtnI=": "384615000000", - "uwo_Dl1NEwKalGco-dpCDRJoCy5MszlD7rpmwzDwSBE=": "454092000000", - "uwwSSeSNZfM7FjIn00Bq7aUJGVJJ1aTV1WL9Ly770s4=": "456067000000", - "ux-TvBOgQLtWd3fUUIqpi65rEloj3b9BX6tIbHr_q3U=": "416809000000", - "uxCaVbZg6qMBlCBSl0wO0w8AUghAQUHxOiEb_QV9EAU=": "540071000000", - "uy5DKeekqEQ-clEP0dz7xmiO5P_iT2ihbU4I5ZfpzUg=": "635600000000", - "uywe6KUs7dP3ufohCXAw3WYeGWLgk3aViwCE06acOGc=": "385505000000", - "uz2MpLsjhRsw5t-xBUtDwt21akwZ7Zwzs5cKRZqgAVQ=": "954228000000", - "uz2uNgqJFQg8ZJQV8JokdisRvGga75sspZQtCIktBJA=": "1264105000000", - "uzVMTM6-RL8fr35jBp0pcZL_T5rNNunzd_xKB3FNGbo=": "1793255000000", - "uzibMTWuSo-1S6ZSIWTTllNUBsuocF7w8FXFzC24Cys=": "4999999000000", - "uzqhfjutcyRNbXxAeHLFCvivChaZnU3PdV1osIfMGZs=": "384615000000", - "v-_PLcLJn2QYS2Jbp0N6ls2H2DM9nUU1Uc9LZ2a5nII=": "11207119000000", - "v-sE3Za8VJbIbkZSOtkTwewFl-D25bwEd8Bdmyjxjtc=": "470605000000", - "v-zu_REv6c2cZNqfTdoaT1DRcXFkivH9isn5Xk5bw1g=": "539687000000", - "v06xIHeUXbRvCcp3PVcXWQloaBszaQ8scJI2FMisJXQ=": "3472000000000", - "v0F9IEeZwVxhI0UHn43Yjw41a_Nhb4wmyLQU0wxkfUA=": "1505148000000", - "v1hWWi4SIc7cTNma6JSqGh65T1Tgjet8xc4pmUtJnaA=": "1363636000000", - "v1oJizOICi8lmgXFzOCXZvMiqbfrQVF5DiJ1PARnqZg=": "1128677000000", - "v22n8JIQ3ZM-DNHMCjJdg-R_k49xS-oLghlQN5_1J20=": "769230000000", - "v27EC80gNWi6BkWRKOY0uDrZZDpmD6HSCf7Jydm1K1A=": "454545000000", - "v3EhgTnXJat_52FoPVAJot3FZuWwDRwM8V0Skqf2ISo=": "1361946000000", - "v3EzrXoJrg-SCb1c3BZPDBCVli0TpM8vf8ITGjViRdc=": "411085000000", - "v3HvKJ2vSgT44iW4qechH5zeQf0o3gdjg3yWzDSVm_U=": "409778000000", - "v3ln6Tqet0dmqwM3tpKqb1UPhGGK3V1Unj-kzqRbybM=": "554737000000", - "v4MAD54DzDrIxr-vNfPaDfYLlbNd2Z0jj0kl0w0JGkw=": "385507000000", - "v4ibvaOmgAMeBdd5VGf38FPhtzMLmGL1xMY2W2qjXP8=": "764698000000", - "v52ZDMDaxiwQt3YnLV44d2_xxOZ2rvayAa1yTPr5xuE=": "499999000000", - "v53tRXiQyxbpF7ggxB4qm382oks04GiJY9mqyaCSIRs=": "462286000000", - "v5QzrqaMiw9Ics31VNThO5vARpYZtYBN-ZtRgyuJ0Ek=": "1741351000000", - "v66hRX1iB4YLfkiLnPSn2nOJNbFWldMhZ-s6FQ_00WQ=": "9891607000000", - "v6VLRktJSRyh0nHgsSTDVj3U2AkUUGT9FPt9hYRgOkU=": "416666000000", - "v6py_wTxOunJhW6HWWUmD_Be0MFb2IHEWk-6oj-sWfk=": "492307000000", - "v70rF_-UT94pdsoxAR4A6Vw_q2co-OlexWXFjmqmF9w=": "18181818000000", - "v7C9SKh7MivNfbWn4zmcv-mcKQTDqg_B1VWlp0R8MN0=": "769230000000", - "v7HVPoeNzUmjb0ADjQqn9ZN7qoxhK2mHR1bxAm59XqY=": "4999999000000", - "v7Skq36UX9Ypo3LVjrvwr4dwPj1PrsedlOpRtpJVfHs=": "624999000000", - "v86r37TE8jrPi3Mp1CwpfAZVqPSDWdXPqBMpGvANuyU=": "384313000000", - "v8GTbon7ICTSAGtX3W4cuzH5cTgrr1p1HWZBq8kdJdw=": "461649000000", - "v8KTI3eokxZlSFIoIK_femmOB09Gc80haUsDZKqRxN8=": "407808000000", - "v8PENhMJk33nB250RPBXMCTkbG0Hf3I-_7nQqbddNtU=": "1249999000000", - "v8qNfz7wgvRKwXgeHJPqJpirYSIWyaxjs701Lr5xg0c=": "406308000000", - "v8ukR1VotHNVGGtXpxPHqoLcxbA0lojHIdnh5j6mYuA=": "411085000000", - "v8uoSRn7MLpqQgiUy2R_vd4jR_KzYMu8M4kUIR3ptAw=": "501207000000", - "v993c7lQV2eHb7cKmIAgC8767SuZd0S_gVMDQUYBQcI=": "458340000000", - "v9FAgrdIxMs4VF3qfYXgdTpfcmvADw88d5lE73eIsVI=": "384615000000", - "v9RghEHCX0-_R0fp2JTfb2BZk1kXZxQA-2-FKZT-SZ4=": "459977000000", - "v9TapadujaMxnaV0x6bNgfBCQ9buNMCQ2pX_Mxm7KrQ=": "377647000000", - "v9UyQXaata3MQV2l0P2aBXLduyTmYm7Rbw_onIFB8NI=": "458716000000", - "v9Xhyi0ga3g9Iay9KCVo4yWClhmVwuUGAkchzmyoORo=": "387226000000", - "vA6_cn5BdPqqhgPbBSRiawHGiDkrM6PFMZAJTbpuafo=": "385506000000", - "vAF1CGDzWf83m1SMnX35-iNqFIPCfDXAxgrNiRW7PXg=": "392676000000", - "vAetCNwZNoYEp4K1owbEgvF2yhrdPjQkSm_oX-HC_7g=": "464997000000", - "vAs4ASFCgOFApkDkc7bN7ZF0bvP6w1JFFQPsplVbtKA=": "465876000000", - "vBW4zgqU1-vfhNJkDqyfb8dLZueJWI_hVRkY2CyHvsE=": "7499999000000", - "vBYJzsaQllNLadOmmiTHh31mqIbH6JzsrphMvsFcEe8=": "471887000000", - "vBbJzMTbikeoLxQCadHvEvsGUC0hsMTZSINMyff__uQ=": "1249999000000", - "vC5qoc7qaRzBnDFQ8WrFwtG3EjIyuWKk4bJNPd_hbto=": "387796000000", - "vCFIiV_yL7C-564eaBHFLoq0G4snRJ8DH3XzMLPKX8M=": "454400000000", - "vCO4u3wRZd0UP4fcVRexvBMUe_xKXOO9CGbBExsY3Y4=": "417631000000", - "vCbG4LoaNR0LLE9h-4gnm7r1Vp_rz3GY8iB-yI0uwBQ=": "384615000000", - "vCbXR4t5UNI5c1ajWjI9vLO2di8RCCI4VfZwmFxAq6U=": "460237000000", - "vCz4YSIsGb_N9-3iHalcEUEjWmDAk_Y-5VgMK-rylS0=": "838516000000", - "vECT3dcLV7EpEeUc_ZW9MN6xMHnUyRlpPi3g2ZXYC-g=": "1151408000000", - "vEkFD071vf3qjb1VUM7Ow8JoUyCYikEMaevb6SkJKHU=": "4036903000000", - "vF9fVEzWJMNSS_JxmDoP2mLSs_N2M3HpEUILlIS6GtE=": "385509000000", - "vFWMfm03C_XvDgh1yJh2IQx_BBRtZqGdEC9_9ctI-Dw=": "4626613000000", - "vGXYSsmyMN8kYFkOlwrsX2o-x0NZhiIXIMih_w39tkM=": "827201000000", - "vHSZRRpSKcMPbSnW5N01gYLhGKZmBNaqZSzlVKaWcbU=": "504003000000", - "vHqZsn135Nz9_xevuyjScANBD57yIpUsSKEGLrc_UFM=": "461906000000", - "vI5kFPn6wl2-Om_flr7whSMH6wsJyNlUKWwVdgJBuuw=": "447095000000", - "vIRZMSOPiKVlH3VsGa0AhTLyWtYsj_An5I1kGjURzkQ=": "381802000000", - "vJ8i6uO-p-s2s8-6qgZHs2hstPiQ0A6PqwuK_KTdU_U=": "420623000000", - "vJCLW03uif5mO9z9DZOJp8DTlEiAimlxy1VC6FFACEI=": "406668000000", - "vJJQG2CO03JSGQ1b9jNzZHTYEEPcp7UsOcrtAm0ffG0=": "656788000000", - "vKUQka5jaDPIQLQYu23GR7LhPLnKeZWrfd7KJQI3m3c=": "507660000000", - "vKiB6Ant4y672bUfjxAvasHHnoygN_xn-qWOcuuZgYU=": "385510000000", - "vKjPkzgE0BsExsjOSnhJfS5YWQ_9sczkXNhsTb1Pavk=": "376209000000", - "vKsREJcbPEy5k2e8DVqe8VaZRQcrHHbz-P49aBGipkw=": "354912000000", - "vKx_cLLW0YDOSWhGvBOjd4nS3yizjzLDYHohVup6imA=": "909090000000", - "vL5aWurjOWyf24FCW_4NZtE8d32pT_hGHXATqEKMeNw=": "2057170000000", - "vLMzz0mQMcCCeuRHzo3h7YSNe2F4IIobO1_ARLpy3d0=": "455303000000", - "vLUc0zCQ5PyeyIlNTMg_I7sjfeltMuZfilJye-V5P7I=": "384615000000", - "vLoL_bLQ-vG4blbiXNPYh2KXG6uOZpiIyPAfRp3uMbc=": "902683000000", - "vLpO4s3gkvVjlpdcN1-wAVDjRU8AatMnyWfJTNuzB1g=": "1364904000000", - "vM9x3cYKJtv7mePG2ijLSfidVsW-LQ_Fa9IfxLbQqQg=": "2917262000000", - "vMWsRWmalFACov7nRehqsBYM4wxkuKAg1KPC3J_1Qi8=": "384505000000", - "vMXZ4SoSO1Xj_WdIOPSpQVZnwq5C4edILItwCS7bRr4=": "783595000000", - "vMjYnm46KtgzykPgHCh49VcVm0o7rM9PQhiZ71-yPzI=": "2064318000000", - "vMsRcMVqadmBLJP1aBzEYXasUeS5iOgsbakVVDsZ5SM=": "461998000000", - "vMsYL4zVGWO0WWw71cf85uMM8JQqxPKm2pKG2zcczIM=": "3846153000000", - "vN2MK5XAaYpF2wnTZl4kdoFm95GLo3hHVzHo5TSZfCc=": "456067000000", - "vN9NtUCL6YOIfeofK_qbChTo3wPora3WuiTkrQPAz2U=": "1927533000000", - "vNI8MOaZL8CNvLee_QjkU9_HIMD3y7XzS24HtrKpvao=": "796097000000", - "vNOV_QdMIBoyGzpNwi_7wBcnm8PTfHuXpo_mFfVNoEo=": "613636000000", - "vNRR0Og7Syr7tbgU0Eb2ag_DRYqiogtZRddLfLNC5Yk=": "1732491000000", - "vN_u8QJXrT-kAu6JK7m-On8Vsl5ULlOSNrvadewcXmQ=": "768007000000", - "vO3TgVwgk3nAkH0tjebjX2G-YRUME3A8yDgCo5DkpZM=": "8467411000000", - "vOvkuuEXQczDaHJ9mPTegYHgpjC3jWQ8y9_7Vt1cncM=": "5384613000000", - "vPDLWmGcGIe9QPof8ruNxblgZaGLLGhR2bx0f1Zu0RA=": "769230000000", - "vPT9PW9xBz2-kLaXMWRNMvm_tB86ZIdQKRWq7j_r4Uo=": "1007069000000", - "vPXqesbrKVhy4AbsKKWc-YJMKypqcl3GR5_dav1t6Hw=": "384615000000", - "vPauoM_V0TL0Z1ht4eirRneK5P-oRnIhaxmp4EB9IPg=": "416792000000", - "vQ0hQlyfQv1jxhFaqPeIw-lvwbCIsSn24cdTU8cxE8U=": "833333000000", - "vQODivoZuDNyUZcNl3GGbowPvZ4dHUGDlLHfYqPMM3o=": "2020135000000", - "vQRk7VkFVRojLdNUF4PTJTPKMudSLu-paA-R0YHFhyk=": "415426000000", - "vQRwQRhPhDK38FecM38aNvI8Bau4ryK0a0IhsFhL3wY=": "456104000000", - "vQp3ChfWoyaOMUyZE4rP7PGwGx3quIVPVJnrED9QOJI=": "446197000000", - "vR0fGKf-Bu8xOJo77dwRaTNLhP8b9z2C314TstgFrJA=": "4621453000000", - "vR6sIHLK-LbyVaY0TXwyUfzSKbSG7rFX8qHk-oOd_0A=": "382755000000", - "vRBPaTHvtiQ8-oH8UG88f0O6BjSUoemb7-keiIk3eiA=": "1039074000000", - "vRRZshFmtNoHHyaf5OU9evo9DoTT520pvYTAGYO1Uck=": "420291000000", - "vSjo29gZa9HWmh2MEdxxvOwEpyjIi6Vcphpxw8ZJrjY=": "12500217000000", - "vTAUC4gVrx3jFzbc72bg_uBOLzQazhpGiO9s070Zonw=": "451044000000", - "vTritZVdp5NoLG95MEzKsdmo6Reo8w6Hldm3xUKMF1I=": "934718000000", - "vTs-ceZ32hciYkCgYgJ6zi8RKpRn24inqsxyIKX38ls=": "2304083000000", - "vTuimvJV6Xx7gsVRq6BKMH-UVGLyfxDgpAO6UMVG9xk=": "1882865000000", - "vTvl2gUVztaGUXK39DpKyRi-95xkpDE8ptm_qIUmcUM=": "384447000000", - "vU00dBMogm__yXtkLxYqN6OBoJPjjZHQUH6nSfG5GbY=": "466456000000", - "vUAglSiiX7YnpWVuYubXLFnJL6rC-lU7-5DiJi7C5Do=": "385507000000", - "vUS8SZC3ktbhG4xuOvhe9JHQBlJS0FmXTJoXC6FeNuo=": "593934000000", - "vV8lbXTWVT5ektJALnLmWr18DXggHjN7TFUEUl7hU34=": "384615000000", - "vV9F1kKKsllmN8SprY-t2LvzrSHTiwxTrqTEpyLYGus=": "384649000000", - "vVAm6XNB0CQNlCkHl4DF1Izu7kvU29Y2-YhcZlpfOd0=": "472288000000", - "vVZ4IHEUTjDX3TNzpA0IP2QlNl8kpEHSMYTYJLvDCHI=": "6248133000000", - "vVjaO1ddVoXUzLtgkx9fTkkVBnltAWgj_wUlAGzzGF0=": "767905000000", - "vW7xprFclM23z09HzBxFQy4QEoEYxfOIZD5HfdqkcqU=": "2272727000000", - "vWK525RCFhldBBDeh2LttQ0_qEiDbwnvjuS1dGZe0FI=": "410399000000", - "vWdMyQ2lYPjGtjq05V5mrl5Pb04qohnQx4vvjL497Fg=": "623649000000", - "vWhKqGMyx4gV1MBexZ_jCMHPU350Xs1A-5g15qYlRPg=": "19246500000000", - "vXd7XGcuFA7Nd51Sutj6g0Jh0nHEzOpnSYf9QHfvYJ0=": "385507000000", - "vXwvyqzeoV6yp5o3iMFZmxJLLcrmn43C9iiKdOz4E3k=": "384615000000", - "vYURTeyJHM6TtSLSt9Z9TS9dYIFRb0IAzLDdBv5xU4c=": "3817675000000", - "vYZlUnYsOZGuIKFiDdMOPz0dIEjW2o9yGDG1O8sIhsI=": "458982000000", - "vZJCmNBWWHOcfBPuoYdJUVUN6M38UM-ID8rVkgWjqFQ=": "460896000000", - "v_4k7OPXpapuLqA0q1PvIDmMorfRcj8hqpt2eE0U5Bc=": "1366800000000", - "v_O5kaNgY65taVfLstSi0ctv6Hv9S779nbi7zv-S48Q=": "458399000000", - "vaT5ecsIdGK28EuvKGNq-EaWP2uW9RPqfH_psVHrfhU=": "384714000000", - "vai-AlIJyJG2nqdQaZa_rivWPAW30YVU_7lLKQuRfjo=": "416666000000", - "vaocbfT6_Z3HwYi2p2X2XUTNkXM29UsBuUgTL3o0qOg=": "387464000000", - "vaq5g2JEmg6eTN4cTPsZ-kNgdPNYi1gWvGjH0JdqzIQ=": "385229000000", - "vau19RFk3AhsCDkpotsBgA5E1LCsDBVnLCmdCVNoI9I=": "2505818000000", - "vayjHU7Hnk3I4gx29ZBR7jqc_OlIzBKbvLT_5w3Kl9k=": "769346000000", - "vbTu1G7zOAeOcbLvthuPm-F0UdYXiqXmj7_12JbkrYg=": "1153846000000", - "vbU2oFSj4irdMmXzkS8NpxNZ09-5FuMQU0QUnCby33M=": "2392932000000", - "vbUKCK0YbAz9ti5nUMsgp7YL8IazghU1pHZf9umCkn8=": "1215264000000", - "vboeCDe6jjMtB7omrIH9Iub5rLcAZTn7U0FuI-SFgqk=": "384615000000", - "vbqG75sq2hr9XNjAUo0R8Ixspd9oyMxaUVjSbq8wISc=": "2114959000000", - "vcqb9pb33jQf1-OfPzRzKZK8mvg2agbYYSwClCEztoM=": "1819478000000", - "vcrt_6m-i7YVRzTaC0I_emUn3QEsPS5iIKWIjLtWE-k=": "385507000000", - "vd0DF_4jyGiWrbiy4qRPcs2FIjatVGCZJlxX4ul2dzE=": "408304000000", - "vdZ1MWO_zEeQfa8Jr-kUCTpu-uR8AQJmyEXAl6Vxn0Q=": "464459000000", - "vdeoFDo9iG7dWdlnIYatflvTkULpAcor8C_nExyiGPc=": "384615000000", - "veCtTQygOAryRxtYuwINKxeUaiUqhhikdL9u1t45bmQ=": "1223425000000", - "veNgKQhxXMIbzEISKiNbmL4pHxdFX1ImGpNXeyc7Iv4=": "416666000000", - "veVdxEBsU46Eze98mCmdg7Cig8lZ_aPc-QmNe7gxrFg=": "465433000000", - "veZ77a7Ubo0HAE0bDthNVWcLjKICrFfa1zN3HDUDgxY=": "909090000000", - "vejEEBUY5sZL7gnHJiUIo0FprEhvsMkW0svxExFMwEU=": "4044402000000", - "vejLnZ6coMxQnssU7SqkVwoxzxgRdLMO8_Rh_oKpD6s=": "389414000000", - "vfMzboyhWCD88flnzy1IUu0zVUKQIiECPYccXsF_Nzo=": "20452092000000", - "vfNZ2ZIAaiHAPtGa4RSDIxYHMHRdy5XDralIDywOkvs=": "390606000000", - "vfS3gyin7X-_jRccV0wIElsO5FZMBZIjZbAeW1cGdn4=": "1900132000000", - "vfxsy0iXO6fzzpDSvWXs8afVxYZCSLNi-47Mg3HYTN8=": "384314000000", - "vg2tr_fGkMcgXQkm352Q9T4sDlwGXE9A_MvxYkM-nvU=": "451910000000", - "vgY7g4EWnicTbFoglWw9UocROEX_3TQZGF3d3-4dCEQ=": "770221000000", - "vgn934yJcjfjaksDtIeT-1M_PEHMW-9xA-17q6pywGY=": "407808000000", - "vh4o19m03XKwryYu4HQ8cCqz_aMwZ21YaewKq_L90NA=": "385505000000", - "vhHRfCmRrMmI9bgTN3fkq7U2JTd_Yu9EGI59lX5X8X4=": "384615000000", - "vhcupkR-nSb5VBdeLO5q4EmHoH2ldNE7P4P9nkqy_aQ=": "7486720000000", - "vhnryQZ9fdV-Yxr-yPKJ1P6uTeEe0iWJEVXMsdHY2zo=": "382394000000", - "vhtvGJ9grMr8DnU7WBCM9BF7RhBu_7BLC_mGZUi_Njg=": "417634000000", - "viWXUcG0V272lrOnu4qGqwC_aE6vH3rvOzVdyHs9Fyc=": "455337000000", - "vj6PoNLJ04goXWdo116Gn8P6_yP_ZxM3lGFOhOerERk=": "4233705000000", - "vj7L661h6J2j1L-ynKgmjQfLRsa-NaZqvO0z8REo1lM=": "2017111000000", - "vj9qk7-b9zbpSxxY1ghRP8tuGxmBJ4o2diRtI6KnwQc=": "1789326000000", - "vjhLO02K4ZUGdmscaVAmUxgtP5EKkfD2D_sVVmijOrY=": "413732000000", - "vjxQgkFg2RprRRa06XiwopLC6xJDh-f_48VwyckYV84=": "3635881000000", - "vjyyk_LO_IwxbrcCs8nCIaQidKHUUqJ_XIiEmPPYe3U=": "926068000000", - "vk53SNivCuiWEoj29IdvN20XBBnnyjJ1J4NpyBcgVGM=": "649928000000", - "vkXEK2GAyfJD2Ya5Jr6seUIk4jyNhdFrch86WV50pfU=": "1134771000000", - "vkmHqtVVmdxCcNsEGBCTKP2TobFz2HrBfapa2MGmjZE=": "422558000000", - "vkwgmeZDqn8zkfDX1EO-4_Uek5Snlev-i65PnYP7Pco=": "939231000000", - "vlMKAVjh2x2CmXV4uaELzYrYEr6VdCh6Iq1T4A9zuas=": "3076923000000", - "vm327F5DJaKj6SQ5trEkh8FtUf7hOZVONAn26kiSoQM=": "12499999000000", - "vmZ5338U0dLUuXcshAhytGRPlhp877INChsENxgIt-o=": "384615000000", - "vmZ8WMcflInDn4nR1WrzSMXH8JnnGxeh8zjOhm0iXxM=": "385505000000", - "vnII0QeEeEedrUc7AiZoW8xu38dXdBNBUQP6ZWKhFbM=": "833333000000", - "vo6j0qguY9xKc71PK-B33P2SAxVASUMv7lEbVT21eZE=": "1540046000000", - "voHZ6rr4ls2yTJ-M_JBjDZ5El_g5v9C199-jloQAP6I=": "1039481000000", - "voPzBNbDFugB7Viv4XD63Roxt-IrqbUwD9dW-v96d2o=": "833333000000", - "vodhGXP8DDiq4AxVyL33IPxQ50dg7OZUoEAajTcnwj4=": "1156518000000", - "vohrB-L9A_feYXsz8TKNIDpkRXz3k1JgpX1fPeEOgRE=": "649467000000", - "vorRDdYnjxcDJrTE7dmIyCdD7JXiDl9Ua4aJ8MOfpQE=": "388461000000", - "vp9KuGsu8VTZ6X6hZodFmTAge81dDDk0TOJPHk-9bBQ=": "449522000000", - "vpEhZGsWw8w9RFF1DFKqOSnGoJZ9ONL71hbFIRU46uw=": "2916666000000", - "vpH8IuUUMHTp3WEdeXc66K3UVkYRtmInI1KBthhWvMk=": "377391000000", - "vpKSOkawmIeRmQSAD96rHxAwypuMlGnAmdCHEZ6Q7j0=": "379138000000", - "vpbnHv8zaxtYLClC4D1TlfWDWXm2DySuXmt6ob9uTn4=": "418546000000", - "vqBn6RLFekS-pgLfN4JLrXeXAjP3fwsJsfnMjMgKPcQ=": "756639000000", - "vrKVL7lgNCNlFzhw8b1G_e-N0wSkz7an7ijeEOQxa4c=": "3846153000000", - "vrKmW9UkxPovt5i6spKB7Jom9aUSdO-cuSF6iPHENck=": "483442000000", - "vs1EmMlXaBfXpAv8lA6UEGXyZlB8_F2ty_9J98kdrS8=": "767422000000", - "vs8OSYfGxlMJgUJhPgpSRAX8EgqtxIDDIvcTG2sH8SQ=": "420768000000", - "vsBdJg2fzrO5ka1dOVyOPEdKMNJXRxxVu-O4z_Qc7do=": "786938000000", - "vsC1PcM8iA8I2s2WOznHMPYrEhMT3M2ExZbiQnJ2yB8=": "636235000000", - "vsk2T1CWGuh_sshwThnmjRzNwbflQB4xzvJuJ1L2qPM=": "394620000000", - "vswLZE6ZXb5rY7WY3HPcFY1eJhqK8DB-DV5_uewOgmM=": "421678000000", - "vtLIp5czwHu-GgfnUoxFyGgXkoQJOetRkjJedfDQdWg=": "764799000000", - "vtdR8uvK71QMeEGDayX8aaJcwhXAH12lodFqhK-wdV4=": "462687000000", - "vu8001_OeEFB0vkAnhXTQzMZX-VpZGXP_jH9nmUhBcY=": "458176000000", - "vuAbY3dppqJkve9SzA4vhTleIG2AeXNklzD8zHXMSuk=": "12136055000000", - "vv7sgxdlqhtjK8n44sCKIrUkCxblgoQKsv9-NKEa7jI=": "384615000000", - "vvFNzLexWhZy4n6-MkDTZT9xZg9lb9NT91Vt2te2FNo=": "1354022000000", - "vvOq5dcsqzpYVJo99dMFMU9sMuj8H4j78rXM7SW7pQI=": "450406000000", - "vvR5sv9v6YHec522pn0VnJAnxfMK-VP_GvFfNeGY1Qw=": "4551250000000", - "vvfRVfjINpH2EW4g-1RDHGbGOhXalTBTq5Hnd2uvwDI=": "388549000000", - "vw-VNUVaIRwbXUj7ICqFDYqYIGO2nSDqa-OjwfYl2aw=": "384615000000", - "vwN78QJlnFSSw4eWiRy1cn3gVaQQ2LICUPG9ywTMLT4=": "844724000000", - "vwSZusp1P1dJSN5B-0zz3zLdFbbFUqvKm4lC-LJrVVk=": "408021000000", - "vwWGccPc0kT5w7bFw6tzbIPU9lb8-D1KzDxy23wtybM=": "2088168000000", - "vwZ4TZLsflSw5UENW8v7HYneOFEwX6kMnitR0s4lKPY=": "390778000000", - "vxIWkm-KUnDgry2mB0GYFYM8M1O20l_hUpmQ63FB0yM=": "460013000000", - "vxRX4i6ysT4zaP1cHXEued6SBXN1DcIhhb1tevmVwGM=": "3737207000000", - "vxlMmKtZ5g2UPIR21IPfafSj2yuFutd8W29R1y3hMLM=": "411085000000", - "vxnuX8IsCZ8QmuModOQjSLDRC8iQ9GDHxRuVw7BY1hM=": "1924371000000", - "vyC80bqymvZzoo_0OjUnKKya3GTGsgdqdUpX2E7Yc_k=": "377921000000", - "vyEIwToIiklG8zV58l5EbZyfwnf30M371ysXxHHMkkQ=": "386486000000", - "vzD-SvxrIwO8U1C1nYRnUzcV1OhbKRlNf4PU_e_bIkQ=": "3773099000000", - "vzJHLygg8NcgbVo36sfpdqmAjWVBqavnAHd29y_EnzM=": "767421000000", - "vztQmrnLA5ValxT83DU1t7uhbyxBKiAP_uTr9aG3jGQ=": "2269455000000", - "w-Uschb9yua1rKz0RHQFab9NFyMVGA2sFYz9sKOaDvQ=": "382687000000", - "w-YVgq4qgBDIXcgXlihm2zJmbFI_ZOiM74Vhgsj0PXI=": "384615000000", - "w-iJJDHUwAoOucJp7cwPgWAHeRmheEVQrExdeqVQff8=": "906471000000", - "w-jYZxGD6c6lKcLQ50QEk1H2J97XaCX7OF2JsJynwqM=": "383807000000", - "w-zm3Beg0x8Knv6N2_OjzM11ppHblU1_7X_h52ekwIQ=": "1344010000000", - "w0VcEiI93DoHuWYhKGv6VvRBWlGsPa1KCQvZsB5Cxis=": "1628608000000", - "w0iNvZyv0U-spQEQDxvMD_48bKJr3edwvRfKj-Gl6WQ=": "4061679000000", - "w0rSdSf_WmHg2gWo7LR13j3GCYDMVBR4N6wTM0KVKmI=": "384462000000", - "w1NpICpvPNwzMT9ZOD96rG6kJLZqH-cfZU89H4v4sPM=": "1524239000000", - "w1ffopg3noN-5-A9wha3oMc1xN-HI7aGEaXlia_GpDA=": "382838000000", - "w1nKNJQVEt0IdLQ7i_mpcO8XyCVOZ-tg5LPEohR4n8o=": "9975689000000", - "w28yBQYuP0lfvbgaOGoFrWSpqTAmTfwxhSjVeYX75HI=": "480803000000", - "w2TYQ_cOHFtScO4GZlmvWK6XQgF_rxR1Qi7f1WJ1yaU=": "3689236000000", - "w2roeHtR5pTaiXLQzBrV5IEG9UQ9ir44dqmVOlwsg6A=": "455600000000", - "w3DYeN0f6VQjtAC5BrrJScJpx1_1Kp6YeCXS9BOOhGs=": "542615000000", - "w4tbKFTHKdR6zZzDOoiEZU_YpSBkfpqBV3vUmHAZKlk=": "460976000000", - "w5fV5qrldEYUYsT3-U0rj97Ms7vv--RYUj1Av8enEag=": "566370000000", - "w6GiYUNv1fBVZT9x6ptMK3m0amEpYspIuPNjZ3FT3_A=": "385506000000", - "w6LAJ5TcHfBRcTAEGQyQvn3IMF8ZeUMiEvunpCSDaLI=": "995850000000", - "w6Xf9W5Zg1SHhZPBwreGq1GfAQ6xDDTYrLmQgCI_Auo=": "3612119000000", - "w6Z-KZAsAzTiXbMgMnuffjoCV4fayhvGup-YdkERhIY=": "407808000000", - "w6g66FkJy3e0ZKXtNwPPd9LbhjFJybeeQrikNVk3FKg=": "385510000000", - "w6ykyz80S7jUERHATfryL_5GfuDXrrssrUsj5bHiKcg=": "910115000000", - "w7jJjVHNT3XgC-rCtbmyCZheQmKxnTcJdGDOlRHcP6s=": "417698000000", - "w86DXxd_bb3G-_b-7sSZQG0FCv45KaiqJnzRuOi6apw=": "378833000000", - "w8r8wLloGoihekxMRX64js25LNw-7-g4QRdr4uhH6R0=": "1666666000000", - "w8z-NXZUwGI9ZUFMOl0idkO11MkSDlF074YgXC-8epA=": "2000126000000", - "w90EdqNBFn-DcohHQUg9dRgRv_TlIFRl5hcJsQSV2EA=": "385721000000", - "w9GNcIMYPWwfUdcuGFbAwLbCh-ZicwmmuhyZZfuW74s=": "615115000000", - "w9HB_litkqbxdbq5452ALVVLlUP2riXEvjE6CLImsKY=": "4166666000000", - "wA4XdLL-RK_0yudkomObIXaGfqTeXSkJKMQZv5QiK3s=": "3179993000000", - "wADICQyOkwRngt9fZbbzg6HKuesqkpTJunr5ZSnmmQc=": "757357000000", - "wAlXqzF9ACuHnk5kb9JMsjXPZT7MF0QkfU5boAYbzNk=": "7390122000000", - "wArleRuKvytH5mkrEReIPB--SPUEpd2IXuJtThZBxcE=": "2090909000000", - "wB1NYUYhmGLiTIvq4vhGyTCz3dAr7HTn_qRtblWhFkc=": "385252000000", - "wBRiz-s6KXzmTts5NT-cCLwmA68iJjfVT7NckiPwdJM=": "15384615000000", - "wBTw9XQGapYGjt6N61oWafgs2bF5k4xKeFZcHBuTtBo=": "420102000000", - "wBYHjou35Wrt2Zrz_Lp4_qjgfJMjZ_btFB2wu3GLIRI=": "455600000000", - "wBzkCl6iwuCsHdTzmodXxMBbTi2XvDTqwMH80kkd0RY=": "545274000000", - "wC5JFM4lN3SpmIXzwCbsW0Cj3Y9hmUp4TEBG4WIaDhI=": "457680000000", - "wCe7zvMDJwf7ERhwXOlul5hhvid_FjxP4qkI3eeiNDk=": "417630000000", - "wCe9NMu-C41fo8taTi9DqpRu2shvEK3QgUkkh25CJNY=": "565687000000", - "wE4QoihIs33kX1BJugP63hh_pWgnI4e4cvOblpP-C_0=": "569159000000", - "wEENJ0S6om_WzX-iak5H-GZYhTZ9P7VR2zwXawrCACs=": "929867000000", - "wEheCG6ky-3NxbeIRDGvU3NGb8jSKnfXqIzm4T23EBg=": "385413000000", - "wF-bZjNF5srwrf8_cWx2C6VPYLAMye4ZwwAq2nT3JwE=": "455600000000", - "wFGNqFmZw7jQObMhX8sswGK7TlWwzyMmDo0Nb-XAjNA=": "449601000000", - "wFTyR0dsLrv4tigbgUwizHF5ILPHmA7rPRxceZpm0TA=": "368565000000", - "wF_eyYPzoKt6OH5y-4wfBntTjcmEvwPG96VwfGm90J4=": "1905619000000", - "wGHikFwao54GNa7olG8gBDySA-3F0ah9f6xvGRnBflw=": "465433000000", - "wGJ2uMs7clxhSKgIDaVpOeMSkrJmWQ1hzM2Nd1PPRO4=": "384615000000", - "wGeauzCNjL-qcDtoY_gjBF7GDjizOtPudhzAphALL9o=": "3846153000000", - "wGsNp1C-QUwOp5Ybu05Qh7wX4MWTIXWbxLzOkrixo80=": "385228000000", - "wGyhau_Aa0cXYaBllybTmplHmsFDJAofChX5HLua7N8=": "2004111000000", - "wHbUtDqiuIY8GjvPQDxuCcf8kXJzE1Js1FGFIykWRy0=": "385018000000", - "wI0m1kzK2-t27SVhThNR_HEwpjRQa4mYoJ0eH2_SpgQ=": "376889000000", - "wI8v31xBzlVrs3fAjQP4IyYT_h8z-qw-_PSwwPMHZ94=": "768095000000", - "wIE8RoqKSB7R2Q4iosktPBRHONPnnMCLxNT6e4Oqw2s=": "4137837000000", - "wIs1N7NvwMUC6TUO5qQFtIXVtygnJUnHwgWeOmYx6Gs=": "900447000000", - "wJ0JqNZ93xm1zchxPxz8aoH2Omj-ZymqBo78bxtWcgI=": "20330855000000", - "wJA7IhHZzABVN-h2KbWn_0Li2XoYhpCb9s7p4ndRgcQ=": "499999000000", - "wJB-I4YoIve9KipAwE1h2dT4Bf_16WdHJHu8xcv3SwY=": "453645000000", - "wJE6B_rEk3oDpPxW8Q-wQcZkqUmRkVVfFVkUnhHy_Ps=": "384298000000", - "wJeNrZrIH6neVuQZBTPQxZja32e6OtAhQHlU6V2In9A=": "691925000000", - "wJpG5B0awJfJh-AmVThH0o08hRSAzT0EC1Dl7Ykz-Q4=": "377736000000", - "wK8wWAfcqH2QK9BJOJ8_0jL74WXEY0z651ASHeWyHlc=": "417273000000", - "wKE5w79t_0touAlqUuO1se_x8qXYmCDNEWUzGoTmgBQ=": "1922224000000", - "wKNIslI16Bjq1_ckI9s7VIomphZwR14Aojj5PcghOl0=": "4976836000000", - "wKYmQdEwcV-2B8RGq5UJUO6_FfR3uzntYDjYIYM500A=": "384635000000", - "wKhFLeBY-EXpefxS_tVR471Y_-9FMeVx6F8Ldo5J69U=": "4199066000000", - "wKovxO-MHHxjtmJdFaBjjqlB4nBInyoRkKVMKIGypf0=": "384615000000", - "wL6FAXRKqU3TYlFrdBX0GgSGK87wEb1SqCNeTkapy8c=": "1250909000000", - "wLP5IbFBmSKJcyYP-Z-QrfRUIP8a1Eexa1B4YIpFkO4=": "377309000000", - "wLRJATMaRkdZoc6Psi3vteB57WHC32mM9oPmMsyTnEY=": "416666000000", - "wLb8FQ2TBzj-WOUgKu5IYbBysg5zrCDVvwOqib3hbHg=": "381767000000", - "wM690P4swPsndI9XH7ui_C9O2ZGPUVe1gwEb00Dc4uA=": "377583000000", - "wMDbHcXONWc0H0KSI-_52qZU4pYk6iE3192BrLFo0vk=": "827107000000", - "wMG7c9kaESgegXb6x64MAA-gIlxPNlFkapxjxZSkQUg=": "382429000000", - "wMqj2ZzoyRs2sNwcJlVtTv4DBcI_cQNzkM--83ZaKbo=": "383982000000", - "wMygECfwUCdlIOqf7xYq7-jT6_4tupz20HGDJkmPLX8=": "719263000000", - "wNJLM5C2oY1v14_ErFT3TziYBkpiDP7UP4LiMb4Y-X0=": "459483000000", - "wNurUnEwvCdgj6ayLr3QdT-wymXTd8rdALsvgZ2_UMA=": "378103000000", - "wNzPrf3hFC5yKc_ZlYl8CaYrIRrziV4ibC7e2PAYeFc=": "3823944000000", - "wO5k5YwMnTCT333QTc3xGnfkN8skCrYSYlQSXvvOQPc=": "464494000000", - "wO_meyM0AatpQauzq7Y0fPHVHyPW4gonM0kCUIBhm2Q=": "383695000000", - "wOgdcXzDfpiPSqJGBz_r4jd_xbYDFbJ1_KLdsR_B4-A=": "385509000000", - "wOqmJJXUreKUUuDJrEry3qRhU4fSXvaCA1S0ronzJ0o=": "768472000000", - "wP1fDaVIJOQRJ0Eore-ixuynGVKi8i-nOm3R5qQtU7c=": "383598000000", - "wPBN072YvgrZ4SP06CMim6CjOA5TBkKBTzggZkLJInY=": "843188000000", - "wRN4xd6IquWh4DipuIDsH2fq9Ht1sDSkqpClLcXWcN4=": "381767000000", - "wRT0LmqRO19jBSpPrIUSw7NHuSuq8zsow1BE203tfXg=": "384565000000", - "wRg2xWFcY2n9kPTKf1cRFLtUccIa2XU-Dr--E8mBX0A=": "3027209000000", - "wRu3NMMRID4WMv7FAmkATO0pKD7NeFvtPy3yKPALuSU=": "414531000000", - "wSF7lk_e970R3e4mvpxyOAbBa8nhrM_TgUMfavT0Mb0=": "419377000000", - "wSrHS5aVes-nnm36wpfiLT0dsT9vpyUnk5KR6fNt98A=": "415461000000", - "wTBJJ7JYEhQNpM2iykMQSW7RwEaAlSN-mHbVe4EQgr8=": "769230000000", - "wTcLCZsHwjsRhHJh7XTXDlpOzedT57c_TchKfb77sO8=": "382986000000", - "wTdJU8PR3vv8zWbRq7ynaX9Rr2ddTKe2XLj3splEk8A=": "434104000000", - "wTxuQlb6BxtIaHRzFP2XEOScwEAMkORxNTUzamOnSjI=": "2500138000000", - "wUpYVROz1_E22TgguIBf2Gc6Vr_LNgzC7qJ0uQTVO8Y=": "384615000000", - "wUxiAKR6u-gmtQYRkpbAZB1QF7YNra1jxSZr3_gC2ik=": "6923076000000", - "wVEcX233rRIV8JqhSoRjkbzokXGvBZPTcysMfE-nX6Y=": "16801246000000", - "wVFbaCsj2yP2_GGj9TdiQCbWxqS8yEdNAz5GLc3pfRw=": "3846153000000", - "wVb9uC_w-WbOE1JcaGARvZCb8aS9Udxz-O2ObnyGEq8=": "417633000000", - "wVoPpsp3useZma2fkdUPIwd4mnh2zYacrKKcO9VECMc=": "769268000000", - "wW7Hn-qe1nKryVsTpL5h6iloNqOC6T5BpAF08GJtapo=": "464954000000", - "wW8u3vm7JN74eM4-KqDGQQP8cy8kekvgZht-JoMKnEU=": "1667395000000", - "wWTtB_iaFNlvGvQjAV7HRt4B3l1FcMivoIH3POhmjf0=": "451615000000", - "wX9Tb7q2bp1XansFwp5_gq6roYTf5Hnc--UDNnOK8z0=": "386478000000", - "wX_clppyLAoBcWrUHV1ogRv1sdP2_FgsmlfY2xIEyHs=": "385505000000", - "wX_k8hZwCtD3bkvM1k376ffFLZNl6zKq3bINabCvOyQ=": "496321000000", - "wXfiVJwbc6pvkJKgib2Nnx-k_C6cMk9mPL1uE2BfoLI=": "501408000000", - "wXmMTV9OWPfwVo3-_oeZCpBqk0aE5-4t6-xT7lefdCE=": "1666666000000", - "wXo-_1MOxt-DfoOltje91ltZrRmpTfG9IGY8oxANxyk=": "417630000000", - "wXwRVwzpl57X6McAZsVzs-NlWOBuJTVUyBHt-_QjKIg=": "769230000000", - "wY5fPFcR4O-PafZR4Wb7L7RKiyD_SPcfws-rVPReqRI=": "1346300000000", - "wYXSQXeiTQXO1mV7Z84UBoh0wTQaFTMoZMOVi6CSuMQ=": "611538000000", - "wYsmGSQFbyxKgoeL7yQukIE2eax0-iDaUkEdkUzNzEg=": "385507000000", - "wZ8tGRwfiHOkDag4dcE3cHhGJLdLQQQy7XP0iON6wys=": "383695000000", - "wZcRKhg9Sx-j9zgJUFWu_KXvLnSwmOuckWpUCCaCFAo=": "384800000000", - "wZqs_LtdxvXmU4f5yIAJ4nNLoSwyk4FWCaLU39cqx2U=": "454545000000", - "w_7cTx6VHi-u9VERW2tz0GnoZjOdFp9RBbQewIrFivI=": "1543796000000", - "w_nNxPkx9UQeOsY1gFN-xxqq29QrHrf7ruhGsFM1xIw=": "1099272000000", - "wafjYcRJ2EndSofTxubbzGZNaVdylwmkWpHmSG1U4kI=": "1818181000000", - "waiO6HcETrtLfy4sHE7Fjt1zPlrC9OQZHsEwD3U3UL8=": "1103408000000", - "wammpxMzNN9FbU8m2RnOcRndrOrBVRwCTf2w5F3JRtc=": "758127000000", - "wauGChMKXGZx7O7pgQTeS9HRK8jIFThnBAryMf0yfts=": "525148000000", - "waz2AY3fO0M_7oB0LbUy0ehtw8-gzQXcuo09hK4YNu8=": "920593000000", - "wbkPTdVooP7vrVvX-r9czWZCRQf2tLeyYfGN9HJUqOY=": "11246391000000", - "wbtEV5xY70LFw1OqDTzFO3IKSrxNVB9IBoN7tMNObPs=": "3857004000000", - "wc139uotzWvMY0ZDtD-M6VHchCt_pruaB0AKDseupE8=": "1153846000000", - "wcSykPjLJgy00nLTV5FNK1Flky71f7zsKykwvljsbv0=": "1144989000000", - "wcytCamBO8pYmm414Ag5IH_ra3wie8rnB-aqoP2H2fE=": "384615000000", - "wczPci9Hv5bNBzK8xyULt1RZEyXEI0he19gMxNX5sZ0=": "406201000000", - "wd2sGx7Fb_QS3vuINp9JPTDp1HFbLCM4mNjx7Vn7RV0=": "1992081000000", - "wdAWxLRo7Zgp3lOjL7yOp5K_maq6Rdpg8A6SkbYPC3E=": "381802000000", - "wdvuDMAlCVBpFoSiak_fWfRd7pyFKLZkvEWwxa2jkMA=": "1617675000000", - "we-B1u0l-Zxre5sgAIbz8_L7V0OmBi3K7RqWygG1oTE=": "3088086000000", - "we26zwDocBFqvfeuqW4YCNHW-ttl23BCmknG4Idk5bU=": "459233000000", - "we2W5WX8_fJ8G_yHQsTwsqo2fRsYeHxr6B1BHIX29EE=": "929867000000", - "we9K4a6TAaKKj_UNVkgVSlDZcpeOk-XPmgvCAp8iDOI=": "794665000000", - "weYx4x9UgzjKA3cJyzz8KMAu_3gT2rw-R_5PQIFD7Qw=": "411085000000", - "wfEWhrpnjGqW3dWsU0sgDmPXoqmdvaYgBiUu53ZJufo=": "764208000000", - "wfr2AEvexWXE9oExO12ELvq3DLCod1CDNr5R8E3O5W4=": "419895000000", - "wgPa5SbXpl3ABbtwj9HUlzWfq4QKycnyt2zb33W7TiE=": "481282000000", - "wgcn_WGJnu8aOnGyQwfdSNtEvLTYf0dhvmW8AnuBzQE=": "4624446000000", - "wgjCpmPK-B_Jcrws-V5_6cWQ2HAgMdUllsfy94vJStA=": "385505000000", - "wh6zcu2xUjBYcFfsZCMlEpBjb6sDEBQli7tJNwzX1-8=": "393464000000", - "wi1h71ZIVCebyfITDH7AIbZcgIUv78LApe8niM2E7eo=": "419895000000", - "wi2JXgxe9fAPe3BbeYXvM3iAyVrkPQ7mGVkEBj1f-kM=": "3461438000000", - "wiJ7BsVyyGIL-THtruN3lJZTok7GUSIfbBhtsPvIL8U=": "417634000000", - "wiUOQcVBu0U6-kXL_JDJIAFoH0GkKdiU0WNWmDGrY9M=": "412214000000", - "wil3Oc38iAXjvC9eL-a_JJOxSnI40dEoNCZLA4p2zKo=": "462694000000", - "wip_q0paHRnXVY1nPp-_NjdfYdVOAwbHC58yMDZWUzo=": "836714000000", - "wjCAs_w9LUMjfPTQhye4lFUm9fVLPugzRaUyp5ZTqW4=": "1153846000000", - "wjamkr30KzB-MBKTbUeXxdl3Qy1RKfSmmlAoxj-zv4Q=": "764959000000", - "wjyci98FE4KoDWBZfEEqogRxdOhPIITbJN99Qdo2jYw=": "451044000000", - "wk2TWuINvR-EXUEqMy5kPaN-AQ1kDkKKeOT0JrM36No=": "1031661000000", - "wkFYr0QQQBv55je3Bc49qAHPgFy4NtPEroTEw4vkUqY=": "1111728000000", - "wkt0EXrjlR1DkKnBVC2_0qesT68B9t3UAy7s3nWsHSg=": "1698686000000", - "wlVfYVcWDtU_BXQGYlRpfyvC3f_GwjCLr0afHPeStek=": "5769230000000", - "wlWN43tEnU0YsGks2AhwWVSA02xTEeb1GRz3C7KHNNk=": "5203820000000", - "wm3MlW_DB9i-rnd9bPCulxKFaStHP7WI5t7ZyUwASM4=": "3584225000000", - "wm4cM3bILgxmx7z3OLoNctrDbcfGX16KawEiggPeQ5A=": "384619000000", - "wm5nPynRkzlFrg7tUe-XDIS-T6VYU9piZue3Xa6pb0Q=": "378325000000", - "wmEFcHkkcKzvN8E-8KPnOzaG8Sz-Yokqmks2o9iPKN0=": "411085000000", - "wmUvTFLEZBYNW5WhuTgQPRFOYa9ILrKEcsK-OiJ8P0A=": "351621000000", - "wmZ5XZ47LFvSUPB-K_f4uuE_kki12U-pvBM9zZ-X9sU=": "383031000000", - "wnGT8QUhrMcTpvD5PhBSYpIZcfGMta7582GjTDWyO5s=": "385510000000", - "wnpC28_v0m-RUEw9_Rg18bl-eI_oqJsbiC5ygf40qes=": "384463000000", - "wopFPU5xRH3BXnn4NPXWDrevjjpjTzrvZw1OftgWlVE=": "1810183000000", - "wotXOB7Kz4BNx2fjjbTFh1m2GgoNhHEiz9k6uhlHVFA=": "985999000000", - "woyau5HhdX1vcA47OjxxwYKFRjsN2TfG_3WV7lao1SU=": "36618750000000", - "wp7KNaMqxEtheUN0e6vtzx9EDNBxCgHPWcCvaQXps14=": "411302000000", - "wpb_Zea7nd5f2X99mVmIuQpaSAj_CC1SZJY4BRGzkuE=": "769230000000", - "wpgr6R-lS6wfSY5q9qMrmgiDPeb238a2a2eLzTHX2f0=": "4167600000000", - "wq3smeq5pLU107L2gfCWHSB7IKImzCS6XY84lnZrANQ=": "560831000000", - "wq4yrrSF2q1nr6nVDj3eEXpsyTuydK_eFBt-QKYGKYM=": "470741000000", - "wrN7Lfnni-17Bn1TblqwigWQSsjXm72ukX_s0hwk3eA=": "4176362000000", - "wrNrsuBRUAC0RJAttVU7vS05fh9NMwuvmajTJg-Ztos=": "810455000000", - "wribKolGVIaNfkBYnWoD43TIjdBTu9tn6kdR-XuZLtA=": "427217000000", - "ws3HNXgmNaAh09ra9Fc3vbBS8R3lAxs9I0thpSSV-jk=": "453525000000", - "wsu8V94UtHS2Z12uHSqLGQKB0WBfRa-ESly1uBZK5Xg=": "424839000000", - "wt5tLFR_t_OUVt9tMbY5QJyiw45cBnxYnQtt7Vhbgm0=": "384483000000", - "wtIRsUr_Qe6rWroRXv9XojAI39FOY9ukjIomTHRXT6E=": "1155230000000", - "wuwRaSj3AqA6eujyU5L7g3GDDce-XKfeiPYuVIv8meQ=": "1927530000000", - "wv7HihTBwQsNGaut8gvbMe9RjJH7pzgh9x1gJmegrTU=": "5195368000000", - "wvV4-G2MVQycmZLA0goIyG-TfGwOpV7BeUiZ5rPzl5c=": "3501723000000", - "wvdlacfpUhybBaY_sIRG-II4v7Qbtef5LcXFGQGp7KU=": "2349118000000", - "wwKq8EHgD9jNkflukF0rb-lnnsL_BrVtLpeOPuEV04w=": "2083333000000", - "ww_YM3PKTlm3faa4nK13PUkxG0Q2CLUoulaWPdcoSds=": "925600000000", - "wwcWNj6X9OlLJILvb4hMdsjybyZiS18kThFgMvOr2l0=": "650269000000", - "wxKMzXJzUer0z2ph1aPt1--M5dQswkBCO5EnDRkTbBY=": "849347000000", - "wxk6Fnk2SCrCsS6Rc8eFNI9mg2tRwYnjIkWh3oWmbhU=": "385510000000", - "wxrEOWHrafrWtXlzBGilgvqei-V3vmqTuCbypMckgsA=": "833685000000", - "wy250VafF5fjHzwqD4dLnTnaGttu39NRqIBnd1JNLpA=": "1011764000000", - "wyE4kz0w2mnqzLB4uTGRwSJFf-R8sWi0-vSU3CSomLg=": "419232000000", - "wyQ_na_9Y8aMS9K9hL2PtES6prVxbk9lbqNR-gUdiJ8=": "940059000000", - "wyr871d6fwpg2c8JiuN_2QpDm35i4ZsuwZ8P5ioKPTs=": "382437000000", - "wzYquSAKvIRa-IweypN6D45D1AWzXl4tW555T-Dl4PE=": "3263177000000", - "wzbWuwx9yK8jF9AY3BH1CTAs5NuhErNGzPZJ7ULQP0w=": "453414000000", - "wzgyYjUcGzdFSWEmvjWFGFIUND0Nkr95iP2KcU8nL04=": "409643000000", - "wzhHUYLFtNQWQVWmbzjsmElzBaJjapt-z4Vyio-bEiQ=": "412871000000", - "wznvme6SU2HQ4CLlSdv0T2WbKDKB5780QcFTdCv69k4=": "7715309000000", - "x-9Ie1z_Yh4kPyhNrp0ef0FRDyHBZ_WDssLafQiPee8=": "16161357000000", - "x-SDg5MOcjlgBZg8U48iqgGIiewz0qo6eLATZ44uuXw=": "391727000000", - "x-mx1__4YeBVJY_X3jYANsIYSTPzBHw4bPAxUFzCaFM=": "757222000000", - "x-wzstcxeM0ZLyDxKttwitXNcOTnsj86wcxWheIIfy4=": "3814101000000", - "x0Ryjfxq3PEnaImbyWuAnE5HltChwrzxRqeSftaWSDc=": "1917793000000", - "x0gf7dO0FK2bF6LM8yZyQ3H-5kkkMnCthuU9kc91bT4=": "526095000000", - "x0guzq0bSIGUat-zUP_TYH7zaQFYNFCbI11U1f4O23U=": "384615000000", - "x0uLDyXCgvaKAMahKY83AFIZTXJcN-8ob4Y0xbfEwnE=": "1923076000000", - "x15MiFQXH2xpJHmxnw0hZyxQA_rYFNyOZHPzPqGXKc0=": "391257000000", - "x1dT14B1M9MKlYPCgpUAuOgEsYvSdhIcUp1uPLaegbQ=": "8329259000000", - "x28PAU1SmLvjC-h8gOANoRm784pXWEUmQiHYNAV-Tbk=": "439348000000", - "x2A5o-71RwktcERUiLVf2pPP-3gf2V72jomSM97ndUY=": "415672000000", - "x3GHAoIx97PoHIA2qBP06lDq3x-nsM65TCk39Y7am-Q=": "384615000000", - "x3TYQhUguLJe1PfIFhTgYBYbAx3M2e3VumTy8JTNH9A=": "361573000000", - "x3X7kxVG37WipTdAULTLtAC0RL3HqexmhKdlcXC5nvo=": "384615000000", - "x3g4hLQLwAdEK_yAl-615x-QBD85CqlGkovUqlXcFGo=": "376187000000", - "x47-htnJNJ9hcnohhC4Mf76RarfCD7B1dDkBu0Zqk1E=": "767139000000", - "x48dOJ93Mizoi1lon17wXJlk6-MKgbRGxZsjf9jkPL4=": "1499804000000", - "x4Xz_SFlgXxYymIm9COtaW09CSQSGX4mUsFPbT4Ajgg=": "384615000000", - "x5857Scm920b_cYXSTur0hu2xM_liTn_AI5jd4vRKtI=": "22613713000000", - "x5G1b6BoAGklP0qNXuHIRQQEdbG9emdfoM03k39n6fs=": "416901000000", - "x5SUNx9HQBa3N5yhRiMVBhx0d35d0pCet7SedV33ZzU=": "6042914000000", - "x5YoSdiLExhMkCu94_fs2JD5I5dmfmnNxMV-mnTQCno=": "673872000000", - "x5k1ZcT8yn4mgpPuQhVwqRYaATdyTAu1Gp1OELKhtiw=": "966884000000", - "x5qEYV_Yz9up7NfBvhLU7NvxFtyqrRnV3-_YKHS64UQ=": "382282000000", - "x6cpOCzgx__uBHBX3wuvLHJ5ixq05Sl3E28waI24mm0=": "415742000000", - "x6f3--NYwsoOaRrYHzKn8hujxfGSTf2vRJRWpuKncMU=": "4229869000000", - "x72g7AK-9x8pdFJmDuD89oBmIpXObTOlZQ34sb1R_2I=": "3766933000000", - "x75y_S63nmIF3LknaphHcn4UY0u9js3MrtjpyfBDnP4=": "25781943000000", - "x7H4cvv8L7ZkGGcUYmeAerp3PVasUd9yZsRYpPC_beU=": "3846153000000", - "x7mhPI5dey_qdhyehvt5HW6E5C7_eAtX_40Z5rG8B6U=": "1572568000000", - "x8JwB8dJuU3jfwOckM7IOh3avb3IXpYAIgTVU0ap_-M=": "384615000000", - "x8acd_nc8d6s3wi_EK5FoR1FBjnjSGor8aRyYviXUBs=": "858310000000", - "x8j4ACxTfZD9mrCPNPWnnXMOpAadKCy3q4nLxJGuRZ4=": "384615000000", - "x8l72UskKK8BvQmBdN-I_-qpugEEkLm8DhO0qrDThOo=": "4231684000000", - "x8pYfK_zDE4ybDU7IwzuT94OXdz5AyWS-laxymfKyss=": "4562969000000", - "x9-zUVeu6cEcgGP5PoYJToX1_lkY0uAWc-ekwe6M8u0=": "384615000000", - "x92MnCl8RiNtmn5h3-UDzJ5QcSQsB1rEnB6fuTtC-14=": "354326000000", - "x9DphxioOKWo2m5zW4BSDvLFxEUIfZE1l7APWcmbrPA=": "499352000000", - "x9Xq7A-n5yRQMW_SlOLGrIp2s_eA1nh3FSQNTWGBcVQ=": "406884000000", - "x9cSvwjZsnRy2R6ENO4I2jdVD5QZx2Fatr_GagywGuY=": "12690742000000", - "x9gDZ6WSu6JJESkCigRstaaNWFXxhuyHqIOzRi40Cwg=": "499999000000", - "x9rQTdcKKYI9hN1wDn17z_i2fjYkboP_4wvpOdR60ow=": "767169000000", - "xAIXRQvdLrQuVi0Aq_E0bqQMNDdwmxAQjdZToajjRpg=": "780611000000", - "xAuJkR0Wgf_OyNf7vAZ__vceKoL1n7RO7w5tn8j399M=": "384615000000", - "xB-17CxYLiBNr_iyoqdLYeP5VgmDzvfY_LXrs_vic-I=": "38461538000000", - "xB00KsINJyWBnFfNKlyro5-apvZEtBgGoclG-4QGCGk=": "459490000000", - "xB3HHIw_gs0OTDZYcYXlLcQlP8DXDibmoxqSY9lAzQE=": "463041000000", - "xBQVVAy7Oct4DCJ0qxyBHmZU2Wqtt1opXJWMbcAdu-w=": "833333000000", - "xBfKAQFjBRcAXscudnJ2NDGVa2YqWJEUpqh3xpLj6I0=": "414596000000", - "xBgopoKET9SjWK6opVIi7_wPaXxE9M---8M8NYl-BY4=": "412211000000", - "xDAlDWEcBRWqVygsGabwuZ6bGuZHqjrQMNYYRo-6mGw=": "482872000000", - "xDBIG2wRYCj7hTn1qJwsOJxRDXzJMMy0hqVrNXkvu-4=": "20881827000000", - "xDFPvs848qFvVzziRcHAF2ldjHwY535Z0UUI5W8eq-U=": "385507000000", - "xDOCMVwpWBp7Pv7qnfNxqaB_KyVoEZw34HxCEm6bDxA=": "763848000000", - "xDSH5U35xWGJZ5ZubtKn5q7KlwpvqLHa-qOd4AtXPAM=": "556934000000", - "xDTVcjDANy0xVfrwEjnhcuylrfuDbEgSG-_ZCEFXkMM=": "384615000000", - "xDWp9jo4DmDjaWXJ3K-_fg-zMp2GY5cI9Q6Vktg7Is4=": "469468000000", - "xDY13FjMyhTM-xomsqxX6_dzvaEuDILN3jbfIFD5-oo=": "1136384000000", - "xDYHpBA4trR0tB34vpViHbL13TYBfC_ZLa1hu8KNxz4=": "422561000000", - "xDiS2YE2FdSOKpPAHs9tfW_Bzrz-thvEOKEt4Au57Eg=": "384615000000", - "xDuKcTcu7u18tNTTd1OyFJy8-TUcxHSyW_B_WlGDvu0=": "376979000000", - "xDxXHNexgJdsWuiUjlsGsUsHij4eoowt1clqJUEO0NU=": "384692000000", - "xEMwOruM4tqC9WQ7KJAjgi1jsZ7EL4Q8bcO6ihlgYsk=": "2559199000000", - "xEc1dmiPtT5-DdiSpyMfn6XebA06Q-pxFz-Yb_76V0U=": "430694000000", - "xEdbMBCY6pr4kxi17QakCfemZwo8RMG8XDJy6WfQEzQ=": "396376000000", - "xEki9qEWNIMqV-3Wlt8PPSZhEt9AbtXGX0AA_ioGFQY=": "829551000000", - "xF26wOQerj0LuVdFmFnPiwaKLHVShhbtBwNWU1wY8TM=": "411085000000", - "xF8dEGjIsaQWORtuYPfynob-iCRIHk4DfDLotXCso98=": "384041000000", - "xFBBFP3HTc6g0hcViCoP8Cyyz_2Ql_LHwA_9fNgGLkw=": "454242000000", - "xFBHhC9oqXdTW5nWeFReB41OWXya9Go1WFLdn_jK4Lc=": "1920404000000", - "xFGQv5TD62LS0uvvVKgUhqfngRlCQLDV01YO-uRsiL0=": "769230000000", - "xFn2frNoSAYqsV-cpdQYGqnI2b97RICeaWYSKKNr_IQ=": "902999000000", - "xFt35IO4-Bp4JMBA5VzcWLAYPC64MHkOk9NM3xFDIgo=": "387131000000", - "xH7oMpw52v17NxGwCxRDJ4B7KDFkW4Sr7oEkAT-YhYI=": "1528665000000", - "xHW6J13OntUuVhmFUW-6mAmUASSz5SjGyoNVr1dUglA=": "461654000000", - "xICuJuU-9TKvcEgIdwA3M47pcWAHNOWmvErf8hNfJVU=": "385506000000", - "xIEfDWuRsMW9rm2DEDieiWk9LQr_vomzsldlZPrTCH0=": "417384000000", - "xINUjtTfKBf3HKjqdb3FWK_RBf3AS9IjXIF-ncAXkgY=": "462821000000", - "xJN0X0HA7SIxvcZLvsPd8r4FnfrGEWgtKlKla_OQKRY=": "384774000000", - "xJfLRWsvbNDTkzMh1uY46RGbINENWQLQFwZSYj3N5yY=": "704796000000", - "xKRdgevnF2FW32ojBOcYnTy5VP4fR0fNsO2dlW7sg-0=": "502779000000", - "xL14BvzUrbSD8-ainhJnaPwpe8YdiE2vR-QA5vLEvZE=": "384615000000", - "xLBFFydku5NlK6XQytdlQaUPXCa3l5ksgQ-c5_8F3SE=": "1156522000000", - "xLDnMoQczQ-DKrZ2sn7x6-6ynojUlfoQBoKsyvg2er0=": "643269000000", - "xLUyHyJanD6pA7eERldYcvwQTdUlD-w6C7GDUesUnDU=": "393108000000", - "xLZckKsXYrJXkInnwv3Xjbdsy-yoRdFws1JXgvdSBww=": "384615000000", - "xLfub-cYovfRJNDHvu3WCLGiAROYjGdOBdyJXdtu13c=": "4154883000000", - "xMADYxChYwW828V1-SPVx0ejE1sfLBUUcMyKRFcfhmk=": "3127059000000", - "xMIPKKf9IiCsEQX9uGnAt4_jiCbZo4ym8u1CPllyJiQ=": "470031000000", - "xMXBJGG8a3wIIuFijxZiAuyLfX7gVomLS3sNgUCIHL8=": "384615000000", - "xMmcuqiYch6yrX9GY87cafPL87csjpHrmasfppyXoBE=": "383160000000", - "xNq_L2fuu8RP7a25fGCFPRjGnt41SpoqFSNBsDd0fuo=": "421308000000", - "xOF4AMoldA0kuxLEI99wF0kRoUvtOjcO4X2Mb40geSQ=": "378140000000", - "xOgGw9NC5XkPIwQCgTVrWodlQmOfV15agPy1Lppbd4s=": "2083479000000", - "xOkdn05qsdyy5p6haDJ9x9gK7bw__wF0cwF7c3jbOxI=": "753217000000", - "xP-1dsPTwGEVtMmgwVeoSLtE9w-PMaWSbfsFBdyNfI4=": "470368000000", - "xPZOJYNxiCNvsGcILaYgD2On5bHyGLNBeGhxcnJubxs=": "361173000000", - "xP_KLSQY5scsGrGmox3sEurpcVch7ARAoBO9BOpWMLk=": "3333333000000", - "xP_r3F50Q9E_CNqpkYlFC0gwP3RdkFA-zV-YXOE8vrs=": "1777958000000", - "xP_wYQJA17ozIKFQLJjLEHP7j79UIzkD1W9M8iAgKys=": "1645215000000", - "xPkcwGXX-MtMM7O2yTNl_cuES2CNehneYHFa0Ap5ACw=": "786965000000", - "xPnyX1mPy8KajxKEeHu689Kdbx77KG5N9S8TxIlOu6M=": "1918873000000", - "xQ3NpPBJWl0bTe3WO_mny3OwhqDCw-xtX9hmIeJ-fxM=": "382506000000", - "xQECCCDh8I6REM6VQ-t7fwvQezJ5Kcja1bU6f8JQ69U=": "2916666000000", - "xQcezAH1fSY2VAUmSxl7IhBT4TOPnzafFiBB6YMYyIs=": "416666000000", - "xQjdm9KCMFuHD6H2EZoQMjs761GcyMKgZqIW8ROc-9c=": "771530000000", - "xR0GIwf7_7EgQITDGeizLUHsZQNEPU0Sp487OPXbhw8=": "964539000000", - "xRMhhJpllbipC-Q_STQ2OuLoF_qEIYjgnUOKztmJ8N0=": "3979208000000", - "xRPonO8UcxIZwee0NPUn7ngE8jkdswowPD2UxnlNLfc=": "1153846000000", - "xRSipzguNdm9rYyxUfU07UivGJQFQn89XXjo2XywYIU=": "1131804000000", - "xRSrnMHsHm8MtQ5SilqLc3phWAqccY1jIvCejnjq7Nc=": "356716000000", - "xRVh3wmAXizN1lrjf9sF3eAEjlUNW1yIPhIQNoY0S8o=": "384615000000", - "xRaCY_7FNXYFznBupXNYZmsCMUXuaKbK5s9notHYmFc=": "394212000000", - "xRrR50G_nmnv0_nCfaQzRfEcCstPaQ8uOyiPNJsjTbc=": "1126724000000", - "xSFE6mcL-TMDGMvVIsE7QNkBTdqQbCackg1ua5QZHkE=": "2311154000000", - "xSWLwFEtiv7LizPiHm3EFSW6jGTAquX6f7Ke2a7jC1o=": "449099000000", - "xSps_14p4MrgY_2hbDhwO3gJWOVfXJ-Yv3IR6E7YHlk=": "384451000000", - "xSsFm9wxXra5GXlcaF8KqHGNFXtN-63M9YiWgouQjRc=": "1154815000000", - "xTAW8jFDRBSg8obQNv6Q_evWEphpYrjyAvtN14iVoNY=": "912739000000", - "xTFjlurHk_aw5f-Zq67p0D7ZL5Yw5udtOcBRLs_vcNE=": "481282000000", - "xTQr1kiulplFZyIsOOUTZo6-J0oZmgKP1ooeaCltLdo=": "1136363000000", - "xTwGFsO7o42G_mwrzOGrEPpWS2UQZutmIlU27F2f1HE=": "2306306000000", - "xTzdWTdrjMAx1qsVkwPDW9bzJgbzDVKlk9UB7U0lsYo=": "538461000000", - "xU_tpmIhwmopvKRUMY1cdyPMcUAE4cXRIRNEgr7jQQE=": "1186497000000", - "xUjgnWv9BM4elrc87TdT6f2324xeNLmauSRMYQLF0c4=": "981674000000", - "xVLrAVIuR64qZlxG-oJ3FphJz-n52IGm89fCKFagUb4=": "389443000000", - "xVYjNmCsPJI0ABY0d82HByQ9C6U_pZYuugSqHxkDKGE=": "823211000000", - "xVYnQFimkYLjemtYxFfz0_54hXmgaUPeqpuH03Q9QCk=": "384084000000", - "xWxe1zYLEvmavsAu84escGyv3IBKLud_jKBrQ_GW4cE=": "1153846000000", - "xY0tUUzduioKaLdRkHDCTWF7yCGbmmgaHncmIkattPg=": "2307692000000", - "xYfrY12STKtul-OajOWjr8YQpiLYGjyIwBn-P26or7A=": "2604038000000", - "xYiMZPg1CduO6ILJD8g2Iur2600NGJ68-QyUolgRNV4=": "492028000000", - "xYtu_ENmwg0ZGmxae0UZBvx-e5yatvIwJW9lqh8amPM=": "460366000000", - "xYtza-enOxLQQWsu4Rn1FOw05hBETjOYdePhkx4Wpjc=": "394336000000", - "xYvthzFixyXTOy-Pzuf8rGzyPjFIgvXb-R8gv13aGL0=": "6435418000000", - "xZ27G4bk-nxg7-OvSCwfBBqMT_NBqsi4PV2YRV3f-fo=": "416884000000", - "xZ9HKLCLmsmlYSFPNImhPg7cnNKJIlYfy4GptRATU3U=": "469837000000", - "xZKTizazIRD42z-9ZAIXgWd11FhQ8FNLyNfa0D7Sq4I=": "454558000000", - "xZymcNqYf-gva0619VS_tgl4sF8nkxQE1QYzbVDnNHQ=": "457736000000", - "x_Q-uc_DsJugfidFlsqAa2JiBWad9ppqLJ6z5RTshw0=": "3777401000000", - "x_RuOmYnmm6L6MfLwDTfqqSPQ48umlVZDmRRvKY44TI=": "386615000000", - "xa1Ueb9Jf9Ds-ykrRRDVxShyTuSydH_L-rMGQFsER-s=": "418859000000", - "xaITeL_LlETPkIFPNRZSRzADDsfMX-B9G27O66iYlx0=": "1884612000000", - "xaNwbM5PEvJpLQ7A99uH_STGPntUQ7F0R_aIgz89Qxg=": "52815370000000", - "xaoePq-kaH0MD-YN75dUuLQLHHRsuYP5NC2KdMo5Mck=": "1393048000000", - "xb8ktbgIkaZQtaxydBlA0uH7xGhaFzkErxx_FxjfaQU=": "460559000000", - "xbpKTbuAz23AIUU8f7dH5bRMs8fEGcWXjsye3com9e4=": "473001000000", - "xbsTLeHzUhR7wCgfAw3S5STant3QLGIYvpVeRattPs8=": "392695000000", - "xbuySoProKx1AZyomPw3fejzzjGbJtGBQhHi3AargOE=": "1923495000000", - "xc8wQ4vx1WXpf4e193DZy3qHqBtTJ6YU1fE70eIclUw=": "34321730000000", - "xciuvAT1rtMHVWXj4a0BnIoHjqecLsZm6BXk96lMJ9w=": "473692000000", - "xcwEuzqqI1_aXSENfglMQYIp38n8Q6mUnk77AodOddc=": "31249999000000", - "xd3elMeolhMiLIq_E_xrAiXvqGHONiU7FcqYc6OgsBA=": "383653000000", - "xdFMOFeI6quWcBZff7kYWc2LgWki7PxVrBVASRQ9o5g=": "2272727000000", - "xdckNnvrQD3oWfkydaME_iSKAJVN5avD8CR2tYDmtOU=": "379970000000", - "xe9H0P17kF34hZ6aGWaCMwkQjQuYok77FlShbh-IN2Y=": "470034000000", - "xeEh99EpzNZmt-wjHeWgpbmQYA_SyPv6tW4YMd_Omd4=": "402004000000", - "xeYg04ZNWRyqwwAfAh-jGuIL2sSYLyZxoENs1uuHrQk=": "442128000000", - "xeZvuwPuFdzGxqz6ONTlwKCI4G7xSWgHWze6tt3jP8Y=": "457651000000", - "xfGWa0ghVCZiHlQd4L5IHf9rTIHUuFwr8HrNUmeZPFA=": "462839000000", - "xfIQ4DQOOM7UWBY7tGfddi4urWRp13whnjXAWkyETpk=": "527648000000", - "xfaxS3CqJIxWmlnBlLWFBKq5bLA7sEjdpq2-bEU-Snk=": "419319000000", - "xfiHj3ixzGdHx1OSzWJA7_2QFPWBKAe0bS0zMrXNN58=": "1538461000000", - "xg5fYqyapidTS5P5TQhrkZxrluO6M9apFxNMh4hYobE=": "384274000000", - "xgLUnxniAqaLDNFYSPgYdFudBiqXVg_ipECcV5eJd3k=": "384615000000", - "xga8IBtMzjOg1f47A1kDahJBocZDf1_jhz_iQgwSuIM=": "453082000000", - "xgiKNhC6qgTH16Z2Hmk8aL0vhyTrvlMlPpX4Hen_l_M=": "404478000000", - "xgkQdm5rKePUQFNkhBDpTSSBS_vWl1lAZkXjKRVIePU=": "376163000000", - "xgvPz8l8vaTsieFkir9TP8ApmSTS5oDDMMTIr6z-PzA=": "469837000000", - "xh-xTiCSZdkwBYv73WoQP2MvCp0q4oWSMrIQv6G7JSQ=": "393904000000", - "xhCVK3vSgga2asPO9ITiMqmT0fr-5N3Yoptc05NYGGA=": "750997000000", - "xhClS1X_tMoN6WshoV9LpAW0JMg2-y_rDNL9XQFVNc4=": "418737000000", - "xhPLXhqDHw-68eXWvD8pT7mvtxzSLuMXB8txWlof_Kw=": "1540006000000", - "xhPNgsqNju7pFVqfVBX6T9oQA586mBNfrxRWG8jSxHQ=": "384615000000", - "xhaE1KlSk89caNff_tJu6ukS7VhzRCNj-mDTJDhD_z8=": "385007000000", - "xhf0x7kK5IARTjx-dt8Bd9ectgVarR7eK1VSMYsKuBw=": "4200605000000", - "xhgu7saE2F4bZiXWqH9Kv0LmdCCSmf17wpxde6uWAfw=": "769230000000", - "xiXlqxuYFfX_a_nXRTZZ7184JtpewArprGPpbobaN9w=": "2278048000000", - "xidxl7FRT3MT6gfcSiBQQiEEevE-tmKqc-jr2zUeGt8=": "383558000000", - "xifp57g7AUQdjqMIGhRzh4t7BUgDZ5BUfK6PLf7tSRg=": "1154647000000", - "xj59unCgpHGftTiEC-y3VzuXMZkC7nLW7uwRYQgLv9I=": "424269000000", - "xjNE_qpoNA9REsIuhJ1Q0DmsNMjVrqDB_5jVcas-Fvs=": "417632000000", - "xjXk6m0c3GuuvQSNpUly3GgfoUAAeT0zYpOZb3YsiVU=": "3842827000000", - "xk3o0xoev6l0OMLH7WjOfklcIDD0g1kP-CWR-P-wr-o=": "847212000000", - "xkBCd1_f-KSLhcAIYCJfcPeUeJn-XTzbFPzYIom0aFY=": "19230750000000", - "xkJu1C2NRDft0zE-pTIR2W9vJtJMyUaAHMItssEUjgI=": "386214000000", - "xkKORoUPKlyDzw5Vn5FFYsaVgATYzOVC4XtoRPinyjw=": "384501000000", - "xkRjjIA9WXjHSK6WFtJUpCCiSCsDWO6T9cjYAq67eJk=": "416666000000", - "xl-UR5MewBy7qMmfulunSyzXjr9E9xoLgcf10_QxrZE=": "419271000000", - "xl4GljbVqxU5DoDy4Cd2vLLAuZbhCJXBY_HLCREv-4g=": "384615000000", - "xlEhMXCz-UamxbV6INH-7sfWAwSYThTiqdfeCDKzU-c=": "384483000000", - "xlZbrKwJGlStGNb8ub2M5ARUknEv4P0eSiw_EYowOAM=": "460821000000", - "xliT4n9s4mRqlUHV3yLt_qTdompoZaAOGPM2ru9RCQ4=": "817363000000", - "xlis7zT3Yl0VlhtCFNrnT3FIdXwf-vfxRVXH6tyAEPE=": "455600000000", - "xluHpwvx1_tWChRLQim9pf6dDjkDyuHelgsGgPa_i6k=": "455266000000", - "xmZ3Hm5Usp0TXbv7FYjIfgMxlNM_S1soC9II8yzSMbk=": "384615000000", - "xnJvTnKDfyE2ufJXq10YvYnKvWCvKGq9rCnOK6NLHrc=": "1668981000000", - "xndgljbFaOZlp1jGtSQmr9i7UFCloFpVBEUT79gFPno=": "453132000000", - "xnlOnYJpJB0aaLOiZCbRoQItF2wUKM8dqHyF9RjEixM=": "454545000000", - "xoBnMdXPZP1UlRSqCEsuVTDBjz1dUAk9juEqXpQ7kA4=": "569308000000", - "xoYLPkK0fQVMcjo7YYR_mLVjxuJX7GkafUm_5OjXWs0=": "1002212000000", - "xodIg7eFrLLjg8nzgrB_dCoi5xDzafRiUBVw7XwKHgw=": "382080000000", - "xon59mzAeft2Ib5p-Oi_DmQtBlZLBu0AjOrdG_K_ViY=": "752339000000", - "xoo0NPglqKeuXJ-0cifQbJ04ZhwlyvTNA2IUREnodgU=": "620572000000", - "xp45lqxT5ca9dqWDRYfal9GNlQI5qEiAPpw1qliEFNk=": "1156522000000", - "xpC25l3jmNW5RyQHoF7pB6UBqBSjbjs1l9XpBvD94ns=": "778772000000", - "xpOqytx8C93k609TjZnK9nT73v_vnBMYbk6VhYou6oY=": "4211455000000", - "xpeI1e79GVVNomJM5MAy9wmwUzSPfAim249mDiCzC_c=": "378078000000", - "xqAVuFz-Xo4JqkA6uRZWK4roYEk9XSrTOAHH0Ud8UCY=": "3907499000000", - "xqgJG-C39WXfTq2wMReIje4EvPeVKHQz0oQBPSiCt20=": "417633000000", - "xrGnhlBU_M-y9nDVzJlDJ05ub45fPoHaANQRb5NykUc=": "384615000000", - "xrJozIhuz3qRxPZRQEoqhPJ_vAugAsQbA-DDA5ww1X0=": "2300826000000", - "xrl2DYVByeEvh3X-g5MITIsFpTENhmpcRGNadiFoV0c=": "2689377000000", - "xrrJuYLrt3BZSCX6dgaKzuCNbjewuKZMRfryc-YOO1E=": "499999000000", - "xs6xCDsZK2IFtZT0pdhGIcuB6Cj82Xr1qRNMaJRdqyY=": "1247328000000", - "xsEggtp4qnhI8BFkhUM62-eO7hnxv_1-zAtADowJst4=": "695642000000", - "xsQeTJl4AL50HqtT3OnW2Oe1trlX7SXqvzktZGY2xKw=": "384751000000", - "xsRYzR8t_VWUVDXfyw3tt7uJ7S8bMVcs2-G0twGE5yE=": "477107000000", - "xsiMgc-F5_lwGjTh11Wmde9AlcubZvVdCKgle7pxd2w=": "414775000000", - "xszTtw6avjPqm0IPHFUsu_TAAArlLPpWlhEeTvmUeTo=": "385506000000", - "xtHRYZG_2OPZb_fkp5sO52XxfiPQyc2pkBFd5YRC76Y=": "384615000000", - "xtHXuZq7s52eVZeDJLVxId8Ho_lisLPX-KwtWkA5WuQ=": "1269762000000", - "xtkW_8CyM1f3hjBaaHMp_GiYebONOTWZ4Hai2fzrj4M=": "462839000000", - "xu8HwG87CH71XBx1qUkPU2fi7PfUSTAJKVXncFI1dLI=": "12577847000000", - "xuFXVMFDjzZabZVN2xrl9qjGCnFmEMG09Ir5HRRXMC8=": "425636000000", - "xvTaBqUcmZD2hBq10SlIhL0E08zf8WQWOP7Jp_NAr68=": "407808000000", - "xvjtl2pRXIX7LN4xYcOHGlxLKmTykx_wj3DXDiTcejc=": "1153121000000", - "xwNP8i8qnH9DNAOW-SFo_TMGTEl2OabWUun_G_fQmHg=": "2001661000000", - "xx-jAnRWDNIt48GQXOxhWQrb3dUlI1GJuZj5dKcujR4=": "470605000000", - "xxPCgj230kONZe2oOspL0P9LSr3htSlbDgNsj2wmxSU=": "781016000000", - "xxPCsnoJKTdgbFhKebv-jKT-OZ3pYgTTw9RoTT-JKgE=": "976078000000", - "xxppattN3Jva0ovJ3GwEjHqV8U5QU8BwJvbm2cRM_-o=": "1997136000000", - "xxsi5UhccD6XVcRjatqWLc33cAl0MmJ205ww0HXnMdw=": "384615000000", - "xy3rIZTx_VRYinRdc_piuaL-3WQjOB2Pf8n2Rop7MPQ=": "384615000000", - "xyDP4zi5nIeGGuMK4I_olKT-qJnF1iDLgnwyVffIS-E=": "454234000000", - "xysVWHvFAeLzuOB9yQYxlnbPuw6-ZDUTn1fQouhTCoU=": "942597000000", - "xyx4POE5SggVK_Te1CUYRrryXpug4Pvnnr5_TLQkDrU=": "424816000000", - "xyyL2jeiAUUFVWw00WboKWO-E9aT67yZNFBPSthAO-4=": "381454000000", - "xz6DupV5v5TIlGvGRzTBIk_2KeVrAWpzVJdj5RFbJvA=": "2062284000000", - "y-9XmE1es-MI4bVH1v7H_DJmtyaKSJEqL7klzQa74IU=": "423004000000", - "y-UgS7AVshq3Evg6mjWNKz-XLw7QLCSp8AJDG1MdbhY=": "455600000000", - "y-WPF8eD1h0IIyUdEpPhRy6fuzXV1322Pu-4MXrTNek=": "1155348000000", - "y-XFSnJAhPA9K0PxBbbCUvV-W6_OY2TkUoz1d_-6sQ8=": "500445000000", - "y-l_ASLh9pG6hWgZvpBGb11zsmAKewGwOzFKOuW0K0Y=": "924724000000", - "y04uSb7PcKGBu7XK0Bb2vdReToUU23sq8L7VjqZ2pG4=": "454061000000", - "y09hmq-tsPXBZ50QIE6pXWJ9C3U4-LgRA_CGzk8JbWU=": "406607000000", - "y0JP_GbcMKkSLHvfm-n0Qv5yl_Tc7atuAyBswUDXv34=": "406449000000", - "y1MIQ1ntDpTo21to0dBH9nE92zcc2UFAaLkevQStxDI=": "3855058000000", - "y1N5oXlAWVI3CksUA9wgTrcbeB_7kMan7vDsvTmSEeo=": "626852000000", - "y1PomsekHBW7-BTs00r0bsGIp23gDzCWMjgBBWkuCWQ=": "464371000000", - "y1TzGriIZft-sdNMRc7r0ujcqVaX5-5u2e-bEzyRPSY=": "23417975000000", - "y1dTTM1Xjk4z0sdQnKfxd3ueEt-yGjL0H4n6tmcHXSI=": "411085000000", - "y1pULWmJyYYUEdlJDuh3otdhPbTDUJkf5Dgqzzeq_o4=": "926541000000", - "y2EBtKi-7wIdSxairdSQdom6nh52r9z77GkSE713gyA=": "543101000000", - "y3dCwcsWBjV8soFHzfwTBH_g2sFD4ecJgzsvX4HofXE=": "2077904000000", - "y3fE6aNvZpLPTDqefuwUN0nyWR15xNcNQumCuCM4I2U=": "384120000000", - "y45m6ZZgGT6n-eGWtqG41A3jct2ZYRBbJnkiCqJLp8M=": "647352000000", - "y4XNjEF4I9Ep3Quf22i4DZagpf5KQ1Rhr4OmLWscHQk=": "415842000000", - "y4bdU9QL-KwGlGsEm_bBM3n_D4l6C3Ln4aBFvAzbBmM=": "415389000000", - "y4tejZt09y31x_6XtH47t0QNvNGViiFdIY_ugJq9Di0=": "770269000000", - "y59JS-paJ3u8Hb0iK-uIh1PTmQXDdniZS-jXJJnVCgQ=": "384786000000", - "y5OzJu-_GNiSJHlmGoejd1mhNPraGAe6GOSOVfSjTsk=": "909090000000", - "y5fbvhl7nSjujaFN5uA-e064Vk7fzzv29hORRM8Q-5M=": "384615000000", - "y5whyW0x2TA67Jb2a7A0qrnHqiWGEOy67Puv_Xf_6wY=": "825277000000", - "y6lqGtX88vsbNB39GUqkhyUT5pJtLVRyiPtZThh-UKU=": "492314000000", - "y6p1DjzPdrRv9E7y-wjbLYfwKsmp4Lh2O63JrfqJgw0=": "384615000000", - "y6uiJ1mXcgxxTjEJomWKe83HuBnUT8TwobcVqDCW7kg=": "377783000000", - "y79IOx-uFjAqLImbwfoHB0EmRNOMImN1ay4YDeLyAMA=": "464089000000", - "y7Ers14pnq4Mqt9LKiwblZd9J1syBXd6q-LKKZ3C-8U=": "379558000000", - "y7NcDYyvnI-pLA0YahA9nvqdCVxtDUBC21NQit8znUk=": "385505000000", - "y7Vl04nbvi2k6V_ei1BG2R04EmWhi__n3dNJBZysrbE=": "20831130000000", - "y7cPyPv97_1HlUyKkTuZIDKDjz-AdnimQLaA1WxrWJw=": "1872083000000", - "y7gdsH1EfGAYxAe0WbIvzSdgBqMmC3TX_Fm5stvl6ME=": "461801000000", - "y87ltmpBcl-_Wpp1y_Z6V880ea1qqaSKA4rRon93POg=": "416666000000", - "y8AXu3iv-i8-3Gnk_-cEtbpPA_9EgZWys0uWGDbVlYM=": "452992000000", - "y8MjVwzRmnkkdNGHfpG5cYfL_hKDxIdTMp253xZChVc=": "1751233000000", - "y8ovn__EPAgGkXIRG8JSkjyI1x7nkpyNWdV9ztHcARs=": "3626457000000", - "y8uhBciFtjBKrmbQwyxIXhLeIYV2rh8ykL5QXMfBO0Y=": "384631000000", - "y8x4Uqg5Ba-QHHhq6KyNe6_hpI7Qdjf3sET9tA0tXYI=": "769230000000", - "y8zkbBoUhzz5FKVDcrQwUmTHquC7gUWpqDajxrwbgeU=": "384615000000", - "y9IUZZjT5GkNbyoUN_P_amHzdmMckIf-Im_G5LHxeDs=": "460442000000", - "y9TR29rWh-W5ytYF7KgzYio9QOrCguIVmAzWlE1S2Vw=": "2310823000000", - "y9Vh-vfFviQIeuyhIGaBdX8N5X9d1UqbEUvuTwwp7ik=": "1168476000000", - "y9aajAQsiGK1kNz3vkVM1cyZTC6nuJFomNUbjzh2zfc=": "458460000000", - "yANmP8tcJRIopKmM_xzDeUoKE6w9EMkVkgIV8pnhJ_w=": "545837000000", - "yAabJj81NKXcdwI-ThHQ0eFbUVPIEATndI0MsWRMBA4=": "385509000000", - "yAlmSd6ewlcMBbspuZX0UisRycRNcNbVa0Z7Yz1Go4A=": "465712000000", - "yAtK7IDrAWZXvMOFC6ebL_7tbP_H8vKYSL4glW2ilhc=": "382394000000", - "yAy7YBddzyMzOCaMf0ghDE8t7z03U-0BBYVO_4v0FKs=": "6396061000000", - "yB3smVL8nv2tCTNvqVI_DjHagATNZHP4CcJ50dPcNgg=": "1484507000000", - "yBYJe17WRYwNKgUyOCWbet37a236Wkh8_U7jRCV0EQ0=": "3557016000000", - "yBbUGjEU6L2x3kECLQbHlj7NC8HeKe7IHDvWtd-CEV4=": "384615000000", - "yBbs_Zdi97aZtjhaDnMAMxhUqYXTC_CsANZ8Fk2iIIo=": "458314000000", - "yBzEh8PUFrIF48-jV7j4oNR_G85aJ9ZhcyMnZt7wwIE=": "376889000000", - "yCshPvQnbod8xXr7jHRSnmc6upKXix9g-VGGOHEzcic=": "878096000000", - "yCwBq4EXiVtzUjGg1kvH6EkRgLYBuDiwI4A3Ac76sZQ=": "384425000000", - "yD7YZ83VexPBRgejqDV6BqwGc59uSLjVYnNb8EzmyOs=": "1510256000000", - "yDCqUM-HuUfgzehANhWCIBQGl8PpzLKX7q6lcMd2j4M=": "415819000000", - "yDKArBTg9EuUOGRUhM2eQ_wSRd_vbmuHVs9UQo_WLRQ=": "11990846000000", - "yDOGV8aajNAEMlObK4QxhTnZp7Hmre41uPfavtF0QxY=": "385507000000", - "yDjqNjsdeBQQMI_KqE_bsh3GmzlfGRP8yMlV7Fz2N-Y=": "4603727000000", - "yE3SdNLQoAMhDpzLyvE3FvR0VkJCDGZnXxbZVjcpbO4=": "574968000000", - "yESrBcjvPeqgINx4zJbubY9LLXX0WX-RgiEFJ4zPF_U=": "389441000000", - "yEwQqfbs78rdsQKk6n1bwsrVfUm5sqoFtGtMtohHHNo=": "1030769000000", - "yEzqEUDtbjo3JLMKZWKFQ3sObzg3Lz9pq4dJdoGhh_o=": "379928000000", - "yFOTycJiZOzjX_RcO_uEGch1XG9JFY1dHuPQ-pq_Ghw=": "720740000000", - "yFU5DjAPnwGJKp5GIug7JzxEIZ8ARC9FDVpkM1lCSy4=": "7692240000000", - "yFWMTlX8gF_2DpZ4JJkNkJcnh_yKq2kdwbbe49q1deo=": "386498000000", - "yFuRtSDPC1desSuwB9nP4-viADuIO9Yd4mtY05LYAtM=": "3659444000000", - "yFuyTCmdzsHxdVzZtHdFXr3zoYoJmW8AOgmefkvHKlo=": "448838000000", - "yGPqN1fQ395ncLf1Z5BeksmRyluvlmkvMDG2oJJsAHY=": "769230000000", - "yGn3dVV-uMh5veluUX0r2p-CwmlXhECC_n9cyEFA5KE=": "382394000000", - "yGtJF-kdq3UjSbky4p0JjjYUlWentIXQG4pJhTOIbL0=": "850155000000", - "yGzFjdyb2DUTXzaQM_EElhOEAIbs43_cwUOoXOOCpfs=": "385962000000", - "yH55o7xgC35wN6ElxVb3atd5IMc8Q2A77qBizHuZhKo=": "388354000000", - "yHPwxPwwvtqxS8t-U_i2rF3mbNL3yKc1UAhKTuADmbU=": "791457000000", - "yHQJxrke2gcx_tCsDniAA7HjKa6rscEcowWc_rrqahw=": "377851000000", - "yIXCsC-tBZ3r_V65VsLNXyUE1kzPsxMiztzsT-nxbz8=": "573591000000", - "yIlCtOjQXAed2MUWjhG4GaVK4vK4WiNA3jkFoxKUUEE=": "838750000000", - "yItCS0iuhmRSwTpnaP8I5mqIZHB9Q_XdeXcDjFz6NIk=": "419023000000", - "yIyzynH8oRkkTY-5qhhZzcV8jv9I4rOY_W7mcEKAacY=": "454721000000", - "yJEQ9zQQVWM_YxG31YHUF18pSxsLJQAK3NV4TEMr6FY=": "1814771000000", - "yJUPIGsBKT5i6WGcInCMx7dAixCBKik6CxvfE69o5tw=": "394118000000", - "yJe2vVtNqv2GVTbrrt-At0EGVG67gRJmp-Af2JYTn50=": "624999000000", - "yJeBwV2x5jv8NQDmJ2IYDeIi94n6D4WbBA9vfqUxk0k=": "391885000000", - "yJi1mf5Li_FWlz8xUrQwiNEBHmZ9hL5J4ttkDGnnTAs=": "417087000000", - "yJlgrsBVg42fCsRI-9PfduI9n2Ap2Peud8Q7CG1Yk-w=": "2692307000000", - "yKA1OMPbxjb_TtoUD1HhgVr4uRaF_BQH7bTM7vi45mk=": "385742000000", - "yKADEDgyVEBbsRTRCU-flnLwi49Fmpxiigmj35r01rE=": "532838000000", - "yKk0MZZMfsAZgXxeN7WQ3sWKFXO6-wC6ArM3uYWqPBU=": "1370847000000", - "yKoJfxFOAoK4aDR_8lCgFECIygwhoz_3pylEqNB1wr4=": "2131613000000", - "yKq6OFz2pIwGW-F8JHlIs8qDSnf3503dkT01izJtMDY=": "460412000000", - "yLYmxDspelx51dn4snNC68XPlLfcqCpZpiB03JrTUu8=": "509711000000", - "yLdE5J8NIhmS0UDKv2xLUnQf6Wq7v_O80Mw2z4HRwu8=": "2892744000000", - "yLuS1M2ngqIneS5TbcJNwQkdXL889a4i_sseWvGG1eg=": "1244967000000", - "yMsqHhTiBp0kTUxQlY2E6C-HKRmh0H4sjqqHoR5WHek=": "2494023000000", - "yNAuUyh_E-Uy9HFzOe8awcwKJhwGWHgKvV1uxVx8Www=": "1355115000000", - "yNdNzaXcM2sKt4oSEBGB-Q_mcVcYpU-3CVnbgmHxqGA=": "1538461000000", - "yNi5FOf1rl6Zfyn_7OCzk7Vt2YWn-5N60HyAQc2iAS4=": "387951000000", - "yNkpUlQbNlT98cOvb1-_I-GrKTuv_KmzCkOX4W9KCeI=": "416645000000", - "yO7LZ_wKccI-VrURCHyKURJtxCYE0Z1mASwitS8WY6M=": "396483000000", - "yOmbN12o7tywj19fh7udZ40DicFUQfzUahsvKfLi-ek=": "1256379000000", - "yP8CKgs4CaQW_gOprhRmJKkVqfqFmU6QjmknRK0Ys9k=": "386922000000", - "yPO-NuhPunKS2jW3lUnqZ3-7UTVwJERCP6IB2up76dI=": "380577000000", - "yPkkZku0NQHI-EnrwQwTFAf2L93iYL9-xJ9Pr4hvAXk=": "384615000000", - "yQ7mRW85EjQKhOa_Y4oCsQpQntTqkBlJYCoz3fTGpLo=": "383032000000", - "yQJ7UG65K4klEx-dw7nzrcHWQjMK1QIm9OUF9GtrKGU=": "403990000000", - "yQdcEK6UEH1ORDLkU5ABDFUri3T6L5pkD5dzSzcJtc8=": "539157000000", - "yQhZXrlLIoqjrh2-70veckJx7GAzsPSSlNxotA54k28=": "384615000000", - "yQkfsi5sKUgWNTE7QGUF0BqKHvvP-thMbo2OYxcpXxQ=": "384440000000", - "yQuDDB5LKh13Btxcfyu2SjDtA_Mtvi3toDD-9ZaH014=": "391797000000", - "yRDRZFtlGHWygIhMMHJUDaER7dsJ9BY1MMDOE2-tPoo=": "3665193000000", - "yRLR22tjdWexSa_c1lARtIVb5un_qS2ws_TjMA7D_SI=": "1215696000000", - "yRYNzLq2E_ui7X4tpXXO6_uq4GkGTGTMMws7TBHlP1Y=": "384684000000", - "yS9oBJ7QxznrCPg9zmQg9gsnI_LkbFDoL4APxuIW5zY=": "451463000000", - "ySSpOGkNt3gM1M7tj6Lmqto3eYRM3kJpknA47dw9c-0=": "412344000000", - "ySV8BIZA5Bqh2e-JrRny6DoexzEruWPWRfOgo-KeNSs=": "504754000000", - "ySYpm169mJDjw1Xb2PRTqveDRH9K5s4TEU4EbuWp-xc=": "384615000000", - "yShcDKxrqZ5TfJqECIinVS6Blp3QzXPWb8J2Y0eOHL4=": "453777000000", - "yTKNsrfHVZf3YbEmyBR6Pg6yIs85ksa57YUuui8rcuQ=": "501244000000", - "yTSVZXI4iHd4W5kNrkO2sz9AENon8iuER4EiwW3cYPg=": "420891000000", - "yTodf0FngmI6w0JexGIe_Lc2kfmAWoygMiFkzqGUWRM=": "1923076000000", - "yUAtXs7LHVfUEDexSnDxmVt-th19El9BQJXrClLqlkE=": "411085000000", - "yUFrwFFIaDf0LH1ZIhKOJFxYjx37TEqHcdFZKmX_-ik=": "772360000000", - "yUnWjcG37xT74elD1UJnzfUtcvWxWB3MwinYaDOuJPw=": "447986000000", - "yUpremD0VmUhdSaOeTKdCKwz09dvJhUt0eWGK66Yf20=": "384643000000", - "yV8gfjalTas0_JDpYt-EPd7-qUFDQjPEs6K5NpcldBI=": "1874739000000", - "yVIFZsMXEQyh2y5P3rwtwYiOUPJBsyxBVRP8CqqI14k=": "446108000000", - "yVNv3YUjzBH95ub45oAOBSaUjC1e5amVey9Mp-PRSPs=": "2027818000000", - "yVxRxYuS-h_6FGX8xOtnEsms8EgjdOQtYbv-bcPw61A=": "499850000000", - "yWGFl8fXZjbzKVblA2jNEvV2XAlK9cqfwAfd06LJO_k=": "1363426000000", - "yWOe81eS0kFAdXJNNAtsa0gloODgie5G9dqHAF0XoUc=": "384968000000", - "yWtmDlwYAmNDy9Xc3_S-k4YMiTmw54m_OaXOGz593zc=": "384606000000", - "yWuEqgJv4jWRdTYRuDJVK8OwYkTfUSbyTaCu2NqdbEg=": "391885000000", - "yXrHwVPpXhrjtP90VCFpBFPh1DTmdABZVwgtjEZRQTc=": "384615000000", - "yYX6oT9YHLXpT8u6se6yca-xysH5mE4l1A12TS5MoTc=": "378642000000", - "yYXqI-ixxGEXJAWOqs86sg3PY0yy7v-AFo6i4uGhtD0=": "4166739000000", - "yYx4MujwT85_H3tJ4ArXwJ9MiAIL0FqN6hhRI9IJiDg=": "384615000000", - "yZ9Rqjbz9dtzQd0vL1NqV9SQtjkY6GsKJ3_CGjKx9u8=": "421893000000", - "yZBSPWfQMFft22U-cWry-5p9iDSbkgx_dHVNphd4w6k=": "14834001000000", - "yZExyaxSA8gnx4YT79odzqaGAxGqYrMmRReqmx4ZhaE=": "447623000000", - "yZKYROQRvHHKOCiJkDvSYLV-w38KQ5zVNK6iV4obcIM=": "385509000000", - "yZpSVHxGm54IlzePUOJVd8a1SMbbXBGY3NAbuggj3jQ=": "1853931000000", - "y_671TpYOBMXKBLc3UC3w7lh7GouHjw-A3WrjBXVfgU=": "391132000000", - "y_FFsZLkko5hEEp4xotucQBYq5LHluJy9heSKcOJcpk=": "939592000000", - "y_KnNYNQyUhTc38KNWgvcWNEoSujJKVdDdBF-bAMtPs=": "927599000000", - "y_k6CRlGMl3yL7o86wxOwtovbiCiZBOKiYv8yuc5jN8=": "465692000000", - "yaNF-TUOX_Rbhj3pb_S_JXQaQ5gqyf3-0yzbA6HncVk=": "4525676000000", - "yaf9eyQ_WDZbIhXN5yPWk8pFTmZlR5TPFuMslSlOY38=": "18511345000000", - "ybDmccWvnWok8h5OKDn1bhKUcfqskLPaVnr9c94Xcm4=": "1925338000000", - "ybWLF5QSxzmJqLBp4LenlolfIPByqVrXsKtccTrnQSo=": "382924000000", - "ybZVEW7WzUpvBUOW8yxt_3Y2uwELPgI2n429apb4rPE=": "1249999000000", - "ycABGQycCiClcQCcTGk7KGKB0jB_VJlAqnaMAfJt1ns=": "756683000000", - "ycEmYvblXLHZgl1cA9bJ6LwFq1-MxFC2sRNIeXn8IZU=": "457218000000", - "ycN4n2Z_lsHGVBb9PP4HsM9FGMVTRDblSN_Ck3Aw49k=": "451268000000", - "ycew06XdCM7D9UGZaJH6H780GHP6lpMVul1H_XYkCkk=": "1625289000000", - "ydQ8khmulz_OgFtNrJb-0HyCFw6Ym0NNhYhrC2JVYlA=": "999999000000", - "ydVTBCL4YFHeH_-a3WPqebdOyj3oA6WP4wq6JKuNk6I=": "383311000000", - "ye3Zs88ayn9Ehshsd7Irpf_vO9qemeDVoweOylPGWRw=": "794665000000", - "ye78NgUbdUeTpB2iyO-R3F3DtfHfMdK6fpsMAOCeOqs=": "390975000000", - "yetA7Ye2X20PQhA5cCDZ_e7xbDSme2YDWhleuHVQFck=": "771848000000", - "yf5MtPV7qRTgwjeTvnW9dvlsBqgTdJGoBSusSb7zhkM=": "1146953000000", - "ygj1bj7MBmw5DnWwYJtLYJVK4_AKj4Cp4qdFR3qWbGc=": "387002000000", - "yhMU0pgplsBo9uNZb-MXlZBY0Z9ITcRgr6rd0XsVtMs=": "654208000000", - "yhMW5uaWFDaSnzasaOjNMYYzIgHinWSS0XDRkcVlT4g=": "999999000000", - "yhaKYgmhjKiF8ffU7y9SwSW_z1KVDKvStdggEIiw-TA=": "2810769000000", - "yhsprow7cQWOaVnDWSC7CoWuEsol6PaHmmlosT9NDXM=": "384136000000", - "yiI0v8xJww3k-6pb20ckLDoncmFIhLomjaoen8rb5Ac=": "769230000000", - "yiUTf2D_vTYc6D-Gh716tFK6QcU-557-fixdUHw5imc=": "384615000000", - "yi_EveQGObesJmj2cLn6KkFMUd2zt42b8Lv71P4wWSA=": "19679282000000", - "yiepuPiyy-boxiM1va2hbJmvYYhCQ5axosEtK0X2kj4=": "1236871000000", - "yj8RWNW1tq3Z9NgjhesYbtz02o0gf1P3WjV3skzDAp0=": "1659943000000", - "yjDGzFkid9lYaKY79q3LKkeNDM240Dfs65FoTnybIu4=": "631324000000", - "yjMY9uQ_9LFEQZySyGs4xO1mEFqiKvA9NWcpvyUkgiE=": "927494000000", - "yjXSYDGTilKE5ICDTWPhl29YZpZGEVAvph4fy2v7vbQ=": "381808000000", - "yjYUoCLUgT7m5c_qlsXeTw3LspqR1nDaH5MIA-s9LLg=": "384576000000", - "yjdGapCwEP-zVGu1lHCIXjIHb2IZl4d0UEVnwNPBGZs=": "452437000000", - "yjdegmHmHtwigKu_RHx0HAdrIjJsyndPJ-82OGeCdEw=": "377545000000", - "yjebzp9QoyuoPcuTN3XdrXYIWcUtT-dk709krctTzzA=": "3148396000000", - "yjfhgQoKcrzgyKWkHu0Kgb4ofgWBKA57y35xF6BBzrY=": "963009000000", - "yk18irRXd_cjTHd71pfnDfNv2fUm_2znc9j4GRdu7l4=": "385528000000", - "ykArJdngrF0VLiiyk8LV-bxAkm_cYSGwVnMcnSU0Z2w=": "385507000000", - "ykDVpNvfa5RR37iUQLTm2ET4ZPiqISR28U6MMshjuHM=": "613139000000", - "ykoPODIvO6s_Sn9TsxKSJ3yrrShROcEo9F28oEG4Pyk=": "384910000000", - "ylBJNBt3qL9g5KVpcy45_BuzAuJctCEFLvTgUl8YNak=": "384615000000", - "yla8S_6rMnq3Xw7Hdq6tQvuGtAyt5l0O1KAtfUm0djE=": "384615000000", - "ymB_8d8E8zCMqThttCR0uSe5_sp96NRUUatI3VKhhG4=": "384615000000", - "ymeDGkZBayC2qvGcN9fFXMzQg_VVwalFteCZbibMJZo=": "456239000000", - "ympYWOmqabJJyuzt2lwhuXuniEm-ttazhOLN59cn7h4=": "878930000000", - "ymtbPlOvOr7XTnoiMY_e_UCvqXMYMjPj2dI7YS1NZl4=": "416901000000", - "ynIQBzzivqaC-F8lSWky3hTRDWYLJiVNpVophvJLp9o=": "560817000000", - "ynJHhvqALxIeFi_xAilGD07HEnDMRmBh2h_4L3G0NGs=": "411085000000", - "ynKOCGc0jNtrFFbOxVQidmnlCN74HxNU5Gb9u4cH5KU=": "454754000000", - "ynKb9Cm5a74MVCX33Sjlt-X1pUIY1UKZRkrUrKQ5GuU=": "938699000000", - "ynaxSCJKHa4yyWWNT02AsSrn3szWwBu1KbrTDy2qUsc=": "385875000000", - "yne6ufy8bKusCv9QBhYzEN0ohxteSuF26S68NYQIDbc=": "385505000000", - "ynoKrESwvCHoIAd0XY5NcAlaHHvScVToFxaDODHBm2Y=": "384615000000", - "ynpumGaI993j9QbiEdLpTE3BsZx7ydyjhremcYnbz0s=": "3418461000000", - "yo-y79acaeU-Pl1-d46d08amaE_t32_vhm03r7asymc=": "10539219000000", - "yoK1MaNigLh1JQNhhwtgiFJEqWDWEj6zGfZXmg9LX4A=": "566237000000", - "yoUJKHOdahXqyTBIKh3j1aQMsrCawhSQCPEG416FAWo=": "849347000000", - "yofOWKEoTsW4SP34rHD-cJzcHshR5HoQV8D1uVNAn94=": "407808000000", - "yp3gtXE9JK9fDUJRGJqg5fSDy_SER0a2Qbn2hbrP4kE=": "2291421000000", - "ypAmMxGCoWlatbWybIOuZiStIGq6uZNN8qVbvnmNZ0o=": "2727076000000", - "ypKpzAJOgo8EqGwc1ACXEkOf5JDIZwdyBpga9qdIo7o=": "384615000000", - "ypMK-Mo0cr-9cFcz9K_hcY9A5xV1aPwC6MSD27a_LIA=": "2116961000000", - "ypmPYkrBu5IH6EgG7-4NnrPJnc_cCW9QB4Z0I2lo_J8=": "385507000000", - "ypxtPagGDEBKHO-5Tg-YSe_GttOm3Vau2CeU3Y-W980=": "458858000000", - "ypzK4q5yWFaV3qlEtUkE3bOTRE1vQ3QtOOTT9IgN4tI=": "4167106000000", - "yqxtwTf1uR2tTCLkyJzA1rM24V1vyrE8HpTohKq4lKk=": "384615000000", - "yrqE2MIPOgOuzXH_fL9si3jrURCVr4zKpQcc8-uDfeM=": "501408000000", - "ys5iHPAZOmhAhmsO58xJ4HWlbfMwsCW7gFspyFv5HgQ=": "1001564000000", - "ysXj5jJF_9K_HnMXRXdRoETINt0yG5XX4Cenfz-rmb8=": "395497000000", - "ytBy6WPVpvncyfUI43HgbpXE3VSFPI7sSCdr87uUswc=": "384615000000", - "ytsMGVPBb1AE0jQeNDlQQPSgMqOrhDyMRH9Bfc3RlZg=": "788862000000", - "ytwE8WKSC1AizTOXYcYq3CVMU4GeMxgNXbjuYWLS7uU=": "384615000000", - "ytwXzKtqrkGxlzvb_SlgE9BV-nExUK_Al-i6OjSgAlQ=": "385506000000", - "yu5Y90RGr2gCORRvnpTUAqBXWE01gJEApqpfnQUYFbY=": "1153846000000", - "yuCNY-lk7dINlCjY-CzO3hLGF_ZDVX-DAXvQzcTBE4A=": "624575000000", - "yuUBWgLDAxCTAjVAk_v_l7b9dGGoJiCYaaIt6omcG_0=": "449217000000", - "yuxOHt7z_yRDJwDWXp567xvEDqdZVpKOnImG0nQ397U=": "2056822000000", - "yvB0ZYQgVqq7mYiSXq9TVd9_-vtXJYrwkTIgMJ6yHSA=": "781507000000", - "yvK7DfdU5uT9pv351Zw6HQUWeHZTn8VAZ78IBFS-n5k=": "417377000000", - "yvYjFyVKZgURuJmbmHKw90T4yg97Y_g-qUoD-xP0vYU=": "422117000000", - "yvfuaIdo1ntUs-gNBdNW6HHpCpOAr5l2KWmcmFlntKQ=": "944381000000", - "yvisXhhS8J6oaHBc8phpYuJkTxYf-5nE24j321DLBBM=": "385506000000", - "yvzrQKem1eeyTFEoPZON4Ahx0fuAjTpB3k7o9P8irso=": "390166000000", - "ywEyaxT9N8Oblj3l0NTjcU7iUozrAZbSGf_a-Uylvs8=": "454876000000", - "ywZ-Wo3FUSo2SiXnclP4k4evyHzO159KwfsxfUJvMXo=": "413846000000", - "ywbRWRI446OhZUBTt9X8wfnF9gcMR7zP1UQ1V8eDUNs=": "416666000000", - "ywkDwh2nTXMYTlTPvmrI52l4FshPJccWE2rRInUjB0Q=": "1208590000000", - "yxKeDXuMZX-xdWLXJ9Uqr3mSWZh6XUhRq-H5O5XHR-s=": "379323000000", - "yxQd0yb3H-8nExYPMAuThkV7C3lA211K4OMaXDmjX84=": "413226000000", - "yxmcd8X3VK-UmbxJ0uN2HqgLhCKiVWZ7mrtGa6u9pYc=": "385018000000", - "yxz8gQ4PofbbIO6tHCVh3-TJJdNKKdejvaK1LeUjUyo=": "576923000000", - "yy2MBVoLVps7LOijsv_zWG6ANg-j_Y-DXYip7kIkErs=": "384615000000", - "yzH2aYKTcN-m2oVGmGNfw2XC383qj3WdmO6LpZ1MCJM=": "996153000000", - "yzmcOQGmKXysJwbf1fdJhecQ-U2Ek2s8FrdjMeCAtxs=": "452840000000", - "z--C2pBcwXsKQ2r0ORBTylqNQP0CAH8HM94MEISKlok=": "1361814000000", - "z-31ffaqXuGbDMlutnlRgfsxhKslwGgFY4Paw1XQ8OI=": "403612000000", - "z-A6cm0c56lRvCqsoRZS9jCeZjhZG0fcQD_q19UHYUI=": "380051000000", - "z-ClkikibRlqDEliaSv1na2FlxQxF2ODjOjANghdqik=": "3846153000000", - "z-HLuXv0TsTnbrR1NlI6Esz6BxTRoiSosL3ELpo7BFU=": "445980000000", - "z-M2aS1D0SG_UKq3XRJ6Lj8W-xbBLNChmUJcw8-WnZ0=": "390067000000", - "z-PfeK14EZS9YBA6f6qrn6A2d7ZSMbxB8qQHDA1S6Tw=": "463777000000", - "z-QCBBbEdQjYo-3nAPHVt75k1udd12TAzpV5psXYReU=": "409355000000", - "z09WKMy9O9L3iQ1wluZb3mB_ccR7wUvunwodSD9MwT4=": "384844000000", - "z0Lg0qGZrk4QaD6yTFLtAJoclTkBRIdGg6Z_qXqkdNM=": "407808000000", - "z0WNgk7cbFL50_aWnJlGJlXoCgDak-l_Z4kgWOT0AjA=": "509391000000", - "z0Z0JEJEAxUCNzLGGtcbPnnlDxspA_iYPuoIrTyS-N0=": "3635773000000", - "z0o6IBomDQvLQCdENZFk4e8d-7U2cQfliQq395AVB-E=": "455600000000", - "z1K6tI-KsM8b6725JLlgHoh2IqeshN5_L-yxhF2OVkg=": "383796000000", - "z1RYXv3JlVGqpkbsffXos40olZwshANY7-IEwawzPuc=": "921789000000", - "z1guvwpJ9SLBWyM7XAbcjRVy5MCXhpQrHllb5Epj3KY=": "3957753000000", - "z1zmmfSoA3pkoonVLud0sJWFaQ6v0bVVgpidcAZZvwA=": "967054000000", - "z4kvaTP-4oKfWzSXdtdHjOnd2b_wdYYfyyv4TXqJ1Ac=": "380513000000", - "z5JODKY30QuXrt6U22XIixs2NVrqZZqGLrQZXBMoHp4=": "1363636000000", - "z5gUhoZSTOOHWbA8luc8guBGsR_yJYGUQiqoaPvOMZU=": "384453000000", - "z6PpYZfo8Qr0LLi9Sa6UQIxx9ULtapOqcZ0IL7flYCI=": "384159000000", - "z6QRwlRBIVpWBxX0YmP5nYpNRv-2TJwf72tJ7Yoy4h8=": "3653846000000", - "z7w-LQgZVLWOUiy6wtoSgnaqliw2s-eFlFiOmOt2144=": "463498000000", - "z8HUwyr5tb6o7tzkIZoSBb903CPUsk2fFhOBQF9ymgg=": "3347842000000", - "z9JsQDeXs4fOcUGV1-yUq99RV0BlLSK_wCjQnxYZBg4=": "378341000000", - "z9dA0XVHS-XCBMvHlHCqlj1SwB8zkWmhkCPxUJ2thYY=": "512565000000", - "z9qs_vx9yV8w9_D3ozK9CTETr2AVwfODKeW9pjHn3C8=": "3994400000000", - "zAFPTvyDRrAJV1U53sJ1YjEdro2ZX-dTpyr7YsDo5dY=": "563045000000", - "zAfdMhon31zf-XdYi2I5yebNcDrKu_183YziOtM-NA4=": "411085000000", - "zAv1A3HhijeCLpjg0O4kL192R1gJzD_X3K8VazaIj8c=": "3023506000000", - "zBTkmsvtDDQ-5OD26iFuVdqsvLzRcL9QCbsOa7wxYcc=": "454545000000", - "zC72MXQbGCl_DIdstCNcDZGDfXACLD7q_dD7b-IfOXE=": "462848000000", - "zCMqwAQduCV1hh9q_2KPePJJ228xa41CZ8OEwDDqOeY=": "386475000000", - "zCZyerP-jBY8TO0XmhtcNFHM9_5vf5L-hirM_yHSePo=": "740539000000", - "zCimJ2Ofs8dc8Gyb0Xe53LhgV0wv0xYj7Q9nCztmWsM=": "381123000000", - "zCopeLMokh5aDn5REXLIbqvYW8wPqkQx7TQOUOtj-Ho=": "385506000000", - "zDGZjZ7AqdbBdxb1oPn0G3BBKUAcNslVmIt_VylWoaY=": "379344000000", - "zDP28dkHgZjAF7gQ2ujkuYLbRkn1feMCqGj2JgI-ZDU=": "383595000000", - "zDzvuwXNy_Aa9Dw8tPzu-eg-cHV-sHS7-E-Ptt5rZ10=": "833333000000", - "zE3WcrMCu8eN444HRCaX665utvxJsWfX2CKoNu-af1Q=": "416673000000", - "zE56EfVAvv0XekVyBDGh2Iz1QT6X38YxlcBYO20hqa0=": "1773135000000", - "zEVe1Ppcr5XB0LQiCr-ylS10ou2DEPrprk6E3QhRCik=": "786892000000", - "zEmpBly0iS7MEys2ld7XRkjMMx5DdrnF7rknq5UN1XQ=": "858107000000", - "zF4bVnDoKjiblzkaWqE5Xk05vIGGTu_uy5abkhQ9qPE=": "814467000000", - "zFOvs0a_kKPN3RtesRae4UmgQzW8JrEon-aRl5reNOY=": "454325000000", - "zGCBnbMnfdbPYqXKTx01rSnLtuGnUgoMDlgnjkMt_Dk=": "11185669000000", - "zGVcAqCVLv0MLWrntLw1QUzO1O04Rh_Y8olbCaIDz7w=": "977958000000", - "zGeubC5m-iQCS2E5fXp0y92BX_XefneCJYu6n3mdm2E=": "411085000000", - "zGidMcW9tq2m2N4VPtsL7LPe0eDENMhxRNV-M0XT5ds=": "1161490000000", - "zIgC8htxraDQ0uCgV9nMGecXjCY-jP8vzVwMCkYNHy0=": "896928000000", - "zIhdIw7z5CQT3_realfnrPQ01iisHkm9iNwRn1x3hp4=": "412297000000", - "zItatTDv11zJ08YMeE-AWAX5fNnLCspnq0k9Dd8EOS8=": "403504000000", - "zJO4ggWhlH5SmT7VsyxKjdAoGTXjeHL-4t-0BiNZxTY=": "411085000000", - "zJRJM_DllKuBZEdkgANo3ZjnXHDG8ks6fSRfUmm5ebs=": "384680000000", - "zJcbd8ttZtdADd7SZyvoby4Kqm8zQseB8CSmMEcyCyI=": "2307692000000", - "zJmd8wyg5xHegzU3IumKsAUlTW-KctsOId4Z8Qt_8fs=": "384615000000", - "zK8m968_hK7RvPnhf9j_LY7BBSsESr8r3FuFlz8E3Gc=": "385509000000", - "zKWsyoo5wP8-RNMs8UHqY78TBH64lzKS5GDSu5Nv9wE=": "923602000000", - "zKpNK7ffok7FSFPBc25LQudoriCgg54yY9p4aPGHjD0=": "848090000000", - "zL4XNmB08thkmGNZm2rYlxTw93kHLmufrXkEt_LsuuU=": "3730039000000", - "zLHgwwBCqSh1sb0bZ2TfDd6-4jmOojkZQIvt_YdP2GA=": "1524935000000", - "zLla2jeJAj3VQYnmxYOd39JcxsJ6SlogdaKZds_SIj4=": "769230000000", - "zLqfOtaErOdhmXYMjTcyd9rDfghMfLfBXIKKOh_RQO8=": "16083693000000", - "zMDavWV50Q-mhDlm-ZgbYNJCKdtsHGdZb0tPH23lsDg=": "385510000000", - "zMKbEIk00e2rgjJ47BWvmPEMoE1dg2BW7usifXpn6og=": "1053269000000", - "zMQpR8u2lGbdWGfIRlCBgEMIqvRl0jE4b_EgaMdWK6M=": "425400000000", - "zMVvGR3CMbbVW8zO5243P7yK9BM482YrbXNh-eSm2Zo=": "381454000000", - "zMct16gT1fZQgMW3lqZtZp0hGKHLccueWda3TT0VHnI=": "455600000000", - "zMofaDZ7_vXAOiOJbtzVJc3jlyU6_UtKBTo26sqKhXM=": "505769000000", - "zMyMjpLbXz9EAqNtUtZAbWYpCsiOEwj4P7Dck7AuTqg=": "421927000000", - "zNZFJvSpVdAA9oa24cHt92gmOboBnWV7VMf6E7fZcGc=": "378746000000", - "zNpKczQkK-ZG5vgcnGAIatzwt2TqJDkq-6fSPJJO8CE=": "1858257000000", - "zO-4mZIuBmOrOfxYUtw61f6dzOClGkGxH1Yl7U2fNKA=": "776995000000", - "zO0je0bUStJtLWI7xjkyC8ZysctywvD-1sh1y5ckC6I=": "455614000000", - "zOBcJoQPGOaGLeUv2pejqd0XCoeXNzODG5MenJ-5eNM=": "384615000000", - "zOU_7KE6uFIUxgl1sWWNMIm-KqBXhgaNTJcFeUPIelc=": "769230000000", - "zOh6RclsM3z420VPD9Lz9WC3DDJvc_hMTKQfof5D_Jw=": "395806000000", - "zP6q8NKgSmAWVUVylc3DvcCEldNYK1fMp0aRJjfc6UI=": "384615000000", - "zPc1DZ_qKQGFBfznQeu6Pw0zoKUeQAJmZQqcClfYSHo=": "11783276000000", - "zPcEyWq50pLNj4-flCriauhPtObNU3L16LfqZaXzBKE=": "767539000000", - "zPh-eW4-T0T8RwTPyyaXxCFRAGcu3udlCioJP-qHCm4=": "457547000000", - "zQEek6N0BDlnkBf7AmHmCo5i7LquM8vPPdSJZ_VhBt0=": "12863625000000", - "zQSoFVNn5T6ROHYBqE-2PC8rOWXDOcfqbMNjG0RfjV8=": "385507000000", - "zQsaQ5viY1WwSrXFf4pM8DTKWypoxdrcMV7XXWM46SM=": "1252904000000", - "zR8N8MRaidCF-5i2I2O0B9-KqstFnp-pBHVk-9w3AQQ=": "450550000000", - "zRsoQa7DH_itob91R2O4SB3Lzzwv1QSOKnue_1dgbgI=": "999999000000", - "zRzAWeAnPiRMrSCzOLIzpTfhnv88joFWM1ipGiefZso=": "384724000000", - "zSTFwdsn-uHmpVhb1RYlJyZwJ0ijpIYPDRaONEYWgps=": "466541000000", - "zSZFtoTn8EsI3HlcnzYBJ5W2DK2AfZ5CdeEk_dE7RwU=": "769230000000", - "zSbn9ydCPAP5bMrUvxd78u70iVg4cWCwMMs-j938TtQ=": "461649000000", - "zSpMbHHkwUbNLYtH_GpMUhqu8m5eqyNDvUYRFeKyCjU=": "416666000000", - "zSrZEX1ZhAqMG6mJoIBAauo-rTPGDDinNbxfz74SgIM=": "385528000000", - "zT-QhhyZWEULaM2xzL3VSsWm7R0AfRKmJnrLFPmv0Xw=": "404478000000", - "zTNTR5eMJiENofFEESA3UeWY3ZgJ9KzRTym3jw1UI0M=": "385313000000", - "zTSV1NsdtrhFKbHX3PUrKjYXoucYqjDpFyi9N2z9iD4=": "2502164000000", - "zTWPjxW5rqykolLNcIwHCVdJSp45UR_SUA20e6Md-Gk=": "1031755000000", - "zTZ-COKEjkVw0p5gbBdyt6LeO_J61YHme9twiUM8Q78=": "469479000000", - "zTfw-7o_laruNl9tEX-2UeTW5Z42Xr-2ZBKxzmEStno=": "384615000000", - "zThcBx_BNe2GevnqHIekXZMyoGnD0SVZ2_8ayuavZjA=": "2155341000000", - "zUSakz0ehMqQVCqix3TU1mRNSHkV_MwbuPXSu8gJ1Kc=": "18393959000000", - "zUqxsvFz3PNePa3I5oOaQNIVuTUpfYJBBsJvUc9O2OM=": "5578077000000", - "zUsuNi4otxLx9FnuT_wOVYj-s42OnSSwi5mpB_06eco=": "381436000000", - "zV8XXzrhvWnmvUCX_Y5cJU2v6w2OnHe5Frp3co8ZjXM=": "1594707000000", - "zVKvHX9F3n9r6GgqwdgWhn9dOD3uFp_dxNMeOR1CmyY=": "769230000000", - "zVVvRML_ua-CRxPGWx3i2zcTBEVYamELY0F653xvCGU=": "411085000000", - "zWQ69PbSR_Xounc0yfwlGkbJadiqa4Qbx4o8_MHKgr8=": "946002000000", - "zWc1Rb_kZQYZKbFSNcfXcIh8r2ooV7Mhz9vfTD6rrdk=": "417636000000", - "zWiEDxyLY6-HsnuTKsn3t69cJ7X5tJdX-3CJkL2dDig=": "463270000000", - "zWtHHcGPv6l5zviclEZRuNAdlcd6I8XoCA3LoxzPjRA=": "385507000000", - "zWxhzdIo6tEFTHYXCjhx8IBSJNcnNMmGPaUH0Z9EytQ=": "1223425000000", - "zX8Kv8rNe2D0lUuULSgzt9MHPGPcE96hWHdUdIjcv5Q=": "414392000000", - "zXtOoYZduk2RPyRwty1Vv56GmsoGTX35Zxcp4QR6mSU=": "2132069000000", - "zYQ934WnCaST8X8AqY-79Xd6lsuDA_9aqW77793H498=": "384615000000", - "zYaEouoCZ5JjU3z4giqx4GkCysiPD1VRhj5gTIXafrc=": "6188061000000", - "zYqafhVNFUId3AKTXlWSHIAl5GxamJgjH4WiiEwIsFc=": "416666000000", - "zZDX3MbWHA5FcBPv0rP_xU6AzyTTGbakDUvHK-sqWm4=": "38550673000000", - "zZKDXQ4NVI-ZHvfswZOq4Cd8glKTcNOmJiGhNOhen08=": "462008000000", - "zZdd3PzVnk0J187Q-I-zvDP0gU8II2MmV-Q6YiHhsPY=": "473549000000", - "zZz-Q2G-EGXC6TbV4ako-zTDRNZdBavW41sIlcOyIPA=": "455367000000", - "z_aQ5QM-n2q4erm5_asd-yziCsrqStgEGrqhfwZidBY=": "1500000000000", - "z_c1El61QbCirK1YG9W7A4AMzZU5DYz3sRtVm6bbM_g=": "833348000000", - "z_jcXyK4qopp2xXgoPSDZM1_cTUxi2nRMoD5WrX1Fno=": "391797000000", - "z_vzR80eG_iECydIinfQRHjY3AENepfDD7uvqE2sXmk=": "902349000000", - "zaLNSOKoviFWSm8S7Dnmf405YpcPPUj9HB2si6uANXg=": "385202000000", - "zaRjDggHaMIWkEiyic8shSaYDKnK9yUBdPhW_Ak3rlY=": "3786121000000", - "za_NtMGkoEosbVIhKAmeVJTVDsci02aqe2jMXeJJV6Y=": "1946776000000", - "zaeKFGRrGeehmQCfcrQph7wY9N4a9Ae6EQgSnvqIRUA=": "454821000000", - "zaltOVsgwT3lVzygQx0e18K_AJUsWOw-h-EcQVfIJgo=": "644862000000", - "zamKiES1QM0lFQuTkVC9cSBwQO3woX9HoLMWlM0W4X4=": "769230000000", - "zawLat69tbES56wVZuqoECBx_yjpLe0IUZm_3oCFRNo=": "902995000000", - "zbWb1wch7W8aZYkPqDlCwwmZ-QNmp2QiX8ifQD-EwqU=": "500128000000", - "zbaE-MA5SiYznllr6YhflOvC-AKrqCM5k2OBNUYS5LQ=": "469837000000", - "zbvdyCPwqtccOwuQ5HrRFiu1XOO2B-EHXb6yW4lUlU8=": "2691112000000", - "zdIb51-eZljqpfYArIc8L1gb3zDjf-27tCzhjILwTIs=": "2479005000000", - "zdTxDJLT-pKRTqESoyEQV1EuOAvXbV0oaaCQz9ODLyo=": "377984000000", - "zdlZKq42I5ZP75lm7Col7mHHppkZite3YvTNlwL22e8=": "382597000000", - "zdpPXvVoHWG7z70zKrNLqTeOL2n1Cz-kE1O61AVrMDc=": "1250960000000", - "zduPyrEL1zaciu5Em8_OtcJSiY_gkU6tHBW9hG-Baj0=": "492721000000", - "ze2N-SpxBZEDbNqzuTYsJ8Untp9Y4uHdkhrtI9itMKc=": "909090000000", - "zeo5MK0Z1yAV4zHIj9gCW3SIUolbQDywOsEWqbsXG6E=": "809430000000", - "zf9MGcMPJOu1tssh720BtzFgAyNImPdZkrSXsNhH6MU=": "908792000000", - "zfH7Rn5eGTV6oGLFJm8Tor33SGp1YTa37aMvgx7lKmg=": "384615000000", - "zfm4JqdKVxmTB5tpKsILhcklo19AVoyfz7zJz2_aJ4s=": "421707000000", - "zg2ThTDufJ3NKAIW17M3DuPLsP_1VejNL9TeEf6VQsA=": "7488651000000", - "zgWSY8FF6tFZDPs7ABroXkIg2I3zyIuu4sQ0uWdQbYM=": "448254000000", - "zgX1L6SgM4oFQGb0p-YBx3m1J7oQ-1PH3OA6cyGne8A=": "384615000000", - "zg_t8iIRTVsJ39Cm1gEctOJFo-nHqjpx9DpQ6ljb83M=": "755181000000", - "zget-0kJ4euyVKzKNeG1K9hj7rlxO6UVNjSGIgE8yzw=": "472515000000", - "zgrxPAkBTngK8y76yxEnRI-36liFL_6aE7QzNXI6bWk=": "417334000000", - "zh6vhLSQA93tQe52Dl7mAUCncZJ7vjwT5c3xQfGLyPw=": "390883000000", - "zhGqP0j1h6sENYbg4428wwmIh-TfAl7nI0bvHEYIBOs=": "1695548000000", - "zhJAesO8i3uP_mzbzfJYxQ79OWgKna-A5hwCGpr3xHY=": "384647000000", - "zhP0rXS1bfa0aINM9X5wHNBBHrQmyjSsQDDQ7TIK1Ig=": "499999000000", - "zhPGUbOoLbBFRbx57lKrQF6aUdxTvP4x09ooAzxlfEQ=": "378341000000", - "zhm3KvzxTeHjrljODAxO7o7-S7z7GVFKoAt6saXMjk8=": "499999000000", - "zhqnNVlTnf2WbPvv_-InSxMM3VhJ8zZ-n87CVi6LOC8=": "465243000000", - "zhsYm3yPCFqCyVbrBTR1Eu_1JatQmapSUmHQRQZ5kqM=": "449694000000", - "zhxVuHkNEuOmYDX15CoTKHdz9bZkMvOZ8vW4CHP-wsw=": "381463000000", - "ziV0W9bkeuhX8ziF1lGCbaFubhfeASs0RUsMzCLZPvI=": "920270000000", - "zij8zKgKbfu2fFBt2O7RKXShCHOQ0jx4bURnuFH13zg=": "463216000000", - "zikSXM7RTG1JGUxymU03PZZBMsja0a2qICZ6EseEDgg=": "395545000000", - "ziyxJXH0jA3WESq2wadCAo6Iax6Eh9iGOfENxL1Zhvs=": "9401467000000", - "zjEisKZt9BUZwKJmYCrw9yGD6CmlxSrlSZmZqoBG4oY=": "384343000000", - "zjR5tq7YjHcIJ7zWwYeYHB1q3_9MetCOTGeD0urgC_0=": "384615000000", - "zjaf_0nU-5B6JpkNLQLuzxZ1nlzHRQrGpUqxwywL508=": "1160302000000", - "zjl2jylM0p763uHxETWWzpjsURKHEVCFfwTeIwuBqvE=": "928628000000", - "zjpgTLhWfkLO42gZOWRHN77x4rxhMnbhwUmQLHeJJ8E=": "412218000000", - "zkO2XzvvF6WzVotUzRCvG65zfj-U8yQ4Lxj7Fiu1HMw=": "463392000000", - "zkPQBMSzAIKK592U2ZiEWiqOG8yJCJc4DNnqS7yLi-w=": "1362714000000", - "zkZ3ddU8ZcRukyd81BL6Wc1QTYUUMY7-VudsBTtrStU=": "1129467000000", - "zkZXxSn_x1i-J3Bz0X3UIGM22Qib_iZrTq_pXpoNvgE=": "383849000000", - "zkgMsOOlVlbE6ohld4xeverXhycJbYA0j_M4COe-Zig=": "466680000000", - "zl8ZQpnSNPiRwiw5fCfDVMBCPJ3ZFwj2WGbGt9rMoSY=": "964607000000", - "zlFU6Uo_UK_NTlmYtQAFKPlPAlqp--Rw1fWTCDo1ldI=": "385505000000", - "zlK6ci6E3CNu7A8HYqui8k-svj0ZsMwZokAJA0HLf-g=": "2026785000000", - "zlKDnRhXe4MJbX493uCu--HpVYL3jpR5jiZEtyNqmWI=": "411085000000", - "zlv81k2JPm_0qzNj8VMWwQT9K0CXF5PvLKNJKzY2bBM=": "2269230000000", - "zm23Max18aVCQK-q2G7IovtKjHCGEF93mp6MJP0wI6M=": "379928000000", - "zm4YXEHIQvigi3dSmcgE2IKied6ODCwPw0GvB7PK05w=": "521500000000", - "zm8FOR9QklyxgJykzWMwIisrlTj8BtDBJpOYTfbwxwA=": "490222000000", - "zmtMXs6drSJppvTDwJNfEYettg0DyRmRc4ENfm-HWhU=": "1248759000000", - "znELWWP27AcIn9Edc4SBxglWw-DXV_5M7HOWjRHQ0nE=": "5052235000000", - "znQUMVvM58PqtWVZ_onMpDWd2T7gpL85oOOCq6JLqhE=": "384715000000", - "zoK9Ob6-tEhXrt7yqMq6unX3qJkuqk6PUxLGpCNC_rs=": "903330000000", - "zoa55Jhgx68HZBNv5JxH36sUyyuEwc3OLjG8AMB2l4g=": "2305747000000", - "zodcU8ZqgCPnQTFkXYIK1HVXLZRCysveqBNpk9NtFOE=": "835584000000", - "zoiuLn11RjX5dO8VogjZqnnk4KykRF-Dtz0QC0ObnN4=": "1242307000000", - "zoks631qqgol79Yyg3JmI6a2yDWiR-rcuA8iKVgX8Cw=": "454433000000", - "zp2mnN8y-_xX5sh_1ZxD-KW_aMSw-KbE07OrQ-gB_jQ=": "40021142000000", - "zp8a50tyr3qynF-npJY5eDJZtPO4RnLFN1I9jcRl5zs=": "1030246000000", - "zqMtIAi0d_8R---m37Ts_D_PrvpA970dFbUF9EOJiyU=": "375593000000", - "zqq4Av3qFkUernvteiMNxvVb8XhWyIOLxi6a0usFNss=": "384749000000", - "zr69u0Jb00PdCMywJe1z5o3654tIlytU_PN1YehaUfE=": "459182000000", - "zrBL5i9opUMkImOH8t61yGjFW71dNd_INmasul2Xwoc=": "1351257000000", - "zrBjOSI4TTA3unNykXwGBb8cTvpNMZ5mTu4iK6F3_oE=": "384615000000", - "zreo0vRPd3rD_wX0IvBtqJkPpBpoOHz9_dSnJMrYpoA=": "413111000000", - "zrlJ-3jauFECjBs9hPNKWoe_wMAA90PxQ-zVqZCayZA=": "380413000000", - "zro5tQR5qp1G6UbJYUzFmJpnyjsw4-QqyLdXoHtn4Tw=": "3755395000000", - "zs2gu4O4sRURaOLm-bLxp67iAs27kI2ap0Nk8hJLXok=": "769241000000", - "zsAYeKaqvdR9qCO_bFPEbiYL3viZCsyl1ZZ1ubHtyUA=": "385507000000", - "zsEqTzDud3L5dJ-rL_bGon7D-x0kzgjUg5mLHYd8W40=": "405357000000", - "ztBjWNL9hV2yp1uvxsWR7taUJi6S1TDJxx6d34XgUS0=": "765466000000", - "zu5hQ6XaOHk-UGbb4zGfoPI69pbW7mbFTlwzS5uO_As=": "451018000000", - "zu8BGw2Icdw5Y4437a3Y1GcA_H84pJviUQbmKGQLAj4=": "446353000000", - "zuW54Rhpv2XDgDhlbHEjiRFnl95HU3buvnWcP8FFsoI=": "417632000000", - "zub0I3Je8X6nIB-5hzebDoTC37-KAbz2lt8qn1FESMc=": "1475532000000", - "zuse_l4u5b6g75GVDJiciqUIsVOAUL_400Adhq30sbc=": "6747307000000", - "zvTS-QkaNEMvws-zN18vtQrDogs592nPbTsvDO-6VsE=": "2059661000000", - "zvaKjINz8CFKNkyq-cZGXQtn_iyg4EjY_7abK-LyN5k=": "351985000000", - "zvdlh2hRABrqx8TV5uNA6JggS4b5lWb-u9cvaOEzgyM=": "763472000000", - "zw0YHGV2lMF7_tiFQIl_mDrwXTg1v7xFihBjHnW0JQQ=": "3177607000000", - "zw_iD-vbatNkBN6K_3LEuf0hOa-2d_YAjDzwqjdEfHE=": "8184351000000", - "zwsZLONiMOEH1DkTqTs59bt8emqB0OF907Y5EaJr4so=": "391429000000", - "zxgYuwWddc-6HMOU8xT6BG7C4znTf6IQ2aBz3b9UfuA=": "810432000000", - "zxtBAhluYR0AU-6k4ItOvqygRCc2JO9ww7S0MHRpAbM=": "386020000000", - "zxxoLQ8pZGyqAMywrFgzmCjYPkhSwnPXIYlot6z9xc4=": "1123552000000", - "zy95aaJwOIME8PyBSvTzcN-cSkiDdpzb8bCtBV-senU=": "2055429000000", - "zyhwJzvkyIAFnr6_H6by-p2m_y1befbo6De7RNE9UWw=": "812990000000", - "zzLMmvC_FLPkEKdxF18RKKD1oUiNHijOCY7whztL-60=": "444868000000", - "zzSg0APQsBqgiYqd9RmQXHdMQGB0ELxcNf63Gw150lA=": "451750000000", - "zzYGnA1j5ZrDq3u5MI_ZyjrZ4HohcqIEgaAhVH_-c7g=": "384618000000", - "zzk-mHcdo_-fLCmHq72qwAMmV6D8E9dWsYOc_N3HAGs=": "472670000000", - "EXIqdPNaKsWCjLdhv_SpveI4DAEfzs7fu9I-aJDlxtE=": "1000000", - "pso9BlSESUlBOJsWoyMTQ6KQu_5If1lM-JXxcWQZCcw=": "1000000", - "NmpL-2uBZj9Ud0aKtQ94FxyOynm0EyqFAie9umf02sw=": "1000000", - "fMywKku2XZPn0hHgopz5TPq_IH_K8DQPTgBcyc9lPmQ=": "1000000", - "JYlnKiCl03Xiyu0fsNMKJcFlyqg29RNL5EyrCPxqP3U=": "1000000", - "Bo0Z_sEDsvgN-c4eL-j23HCjP_wbV5BZzIrTe6U6tM4=": "1000000", - "6YgMsJxoljXccOBra7JWVTF5sXF_oJRtPgQUOE8i1rU=": "1000000", - "OA__yy1yzQhFvQsmF_g7OiwqRBxKqNqrc4INnGV5xO4=": "1000000", - "pkPmUH8TZznveB6AP_tiVy_6mcJXv2OAZou6ZDukc78=": "1000000", - "QvmpvWW0RwLIXIIvw0T70RGPWFcfvf0zfLl8A-w6fpE=": "1000000", - "QZfhl9Oym32ivExdgOuv7ib1TUweYArl2VNmc2OSJR8=": "1000000", - "VYxFlcyJaBYBzCPu-D4ExUbRA6EpIHvckK8iXhPqcZ8=": "1000000", - "hP-oIkn7cEB4igep_5QCH9EDSGmRJDuIZrqis6JEw9g=": "1000000", - "VbFEhy8Ek4KJ0XTDv4vIXP9AJZ_HLfReVxHgWStCKM4=": "1000000", - "MgKJC2PPMwRxJV_he5Hdjjgk7Krs-doH6wfmX4Pr7xU=": "1000000", - "LO8KVvlkwROmupn6k1ZAilsLhnCxeCQh-IGDZZKV4pI=": "1000000", - "p6vAS4YpCICHYELeOq8qWNw5dWgkj_a5z7dd-fvRxLc=": "1000000", - "nQPPWXu2nL0_hngiiqavfbBedKa8kgci61Zju2J4xck=": "1000000", - "QK5z1Nso4FSDkksI6WntCuEn_r2iZWkPDdiHEXtmVu8=": "1000000", - "W4N7IecQ6SFusvCyBLkvMKeCD6fwgm3w6F3WLcG_uPE=": "1000000", - "qDymZoQEifqdn1rVNefg_eAQEwLJdCGhf-0tl4tJzCE=": "1000000", - "YROeciz8Tl5A736dQvfeQ6xG7tDFDrlmWXqApzdvyJc=": "1000000", - "0hFpatOL2r61YPcvBEpmixqfHGOIOiOcZxpc-cdiCqg=": "1000000", - "Q2sB1G7-N_dmOARf8rJDJEIuoYx_2suwHfQC4IEbd6A=": "1000000", - "wi2fHknao4J5kXB0I8RHLTNYzUzUn_AhF410JHNQx58=": "1000000", - "F5E4zk90Yar9UXPuox7hbK-o2GDL4GsJ3mSE7YyjGl0=": "1000000", - "7VPY13iXRE9IgVzeJZXuD--aVO4-Bis6y9_ao2SM7vw=": "1000000", - "NxW59jOreWgj2EhMRlCnwBsw37Bl8E7C4nVBjdHpHeA=": "1000000", - "RU4zCzbmU7MCTrehA3umBJB1C5hXNzU6udUsr_vsmFg=": "1000000", - "1dHNY7AZK6aXqrSySMOvf0vpaqF97B-Wz-Qj28tq2bQ=": "1000000", - "IVC_8MGyKQ5T9abq_ts2QMcw2-_2pAGPrpLIZd3qXhY=": "1000000", - "mioy3pImzdfsdydUVvlPaobm4WutTvbjle45rxhQfpQ=": "1000000", - "vnmHmYkv7FTEw0Vowh8wtojnBxUfTjtkHSTfpKKW7-4=": "1000000", - "deo7O26FMunxtf99KPvFMk4xMdnwrwwAnCF2YEnnwhU=": "1000000", - "Xi4H63FKXJ7h6AvYY4GD_woP6fMcpqkOXhvpJjnR9dQ=": "1000000", - "ANxzBDedix7vRsQ-CZB3nPkpXeGsv9NwFbauKx1GPi4=": "1000000", - "X7F8wzhUJpq5G-Mg9zdNYXrraiqP_gSP-TakiK-1XJg=": "1000000", - "O-QDlWiya5w6bWL9LaxZvUIMZr3SB_vQGdronVPqz34=": "1000000", - "UkC0OBumnDpyN7yTonJABJVoHcE0e57gUBiBD5m7mPc=": "1000000", - "I8os_IpCAAqXWUh-J8CVWdgO7sXmbcSq0Vx_gHE1Kys=": "1000000", - "kan8Y7-_nw4VKfcGM3VkDHs5CHRu8OwrdyaULM9p8bI=": "1000000", - "-QdRHkfh5v-fGJs1RzL8o2gYlKjA_DI3jPsZE4drwGg=": "1000000", - "1bNRW-8El-C6tjT2oTaC6XJsndWe-_0Jf_NitqgjmC4=": "1000000", - "4nJkiLu9eGI-o9LQliDuzNFZXZ2BQF1ddXNSet-TRuY=": "1000000", - "QlTiTDViEdXVFVI1v86D1GIQYxf-kM71TfGLgD1_N4o=": "1000000", - "yZBmdBIHwqkTHSa5s-jr261Twn1MeAHqWhRiNhrzbo0=": "1000000", - "QG3eombzAhT27zR1osK6P5V1jS_IuyP6-eNhQRaKFN4=": "1000000", - "VrwLb3ZgcE6rVs2GjtPKGfK7D8JgkMnrZiJ5k0lZTsc=": "1000000", - "1YHjK7gTM9RKXqp2Lq4BSdm2Dfv2u1CXjYSqTh8_bBA=": "1000000", - "3S5lNAgDi77UmxFOdDUszQerXE3phnpgdWWhQQGjZJY=": "1000000", - "84LIweGTSRwPaJXFDkW3NRvw1pN30T0nx2vryABo8wQ=": "1000000", - "V9QrQ2x55Ig20rLaE2XSd0ym5WNUU2256XfmV6DxtEg=": "1000000", - "kTlkGYuWa8kv6bQabhkMFIXhc_mq8hYnBwTGJWj5Ltc=": "1000000", - "XmjoesNh6oRqfSxpOE4ksdt5T1wGXA9Kzt2PM37Z-_4=": "1000000", - "aAOJsRGygvJghSpdt_PBHZhq5Xr0--9j0esEWUC6C6w=": "1000000", - "YhtX5DY9y_4rz6UipJtBqVNPl49fNZCU3CCYj8FZJ_I=": "1000000", - "EdZ3DVwtHL8SWs66EE9Q1Z2G1BsWA3O5H9apSnqSfGo=": "1000000", - "NOdT1zT9G7jkDgo1fYs57kS7ZgJ4LZSUuBHoOVdmy7c=": "1000000", - "yhMtPSw5m2HN90XPEIglt-M3jkIog2juvgmg2cthUvQ=": "1000000", - "5T12MntOlbsYH9AO86QtxP5R0O7zM7jjW3UFKlbAzCw=": "1000000", - "E86nSQfWqnzHKEm1MQirIDT8bHeOtX0SpXAnmICQI-U=": "1000000", - "GBmgESXOoDvkDRDaMLaPOPh5CslfVm02CjpaORkq-Dk=": "1000000", - "y55NmCPK9Y66znWCPAR2S4ULjs0O1b16kY3FJ50e3M8=": "1000000", - "gqcvfQ8zA_W-DIMyz0aeDyoZlCMwL9yy0_sUcx_Vhrc=": "1000000", - "bglzb5blhne2oU5fKacQFb4tk_GlWQkSBw_d-rKi6Ss=": "1000000", - "Tgb-ZbIAKIQjIxbmiOMPXI0FBYGTjOfDxhZWfhHGNyo=": "1000000", - "kETCIDB0PVn7T0Vuu6UeWRH2TPbABaKs7IN0yZTWRew=": "1000000", - "YWh3KTsWM8OCi-URndhaS82wpvhF0b25Ztx_vX2wTRg=": "1000000", - "eKEZetRMwX98ft4haziaVXvNc98TNAAFcKU8OPVfFpE=": "1000000", - "BXj0WV7eFikLEC7PCU_1XcMe0onv6prvDyO83HxkjWo=": "1000000", - "h8B6u9Ygj7VflikkWywJ-ZByWmEb9UuChiVVTTqeItA=": "1000000", - "19p3eJjO_LNe7UKxiQZ8bMR0TawemHk8djhIoeReiAE=": "1000000", - "K0IMfSF9_OoLbkCW-DPrwlcKCmKAK8l915rgcKOrT_s=": "1000000", - "GHmzOwF6Awdfc8r5oa-F40HGmOcha602DfbeiBH8fn4=": "1000000", - "AI-MuWYFSy59YCDh1C5Igj3dBMRMzEDKoO7qEZ0dQg8=": "1000000", - "jnV8RwX_ROa_jkjX_kUHZRhGbHb_5NAvOshdPqRyENc=": "1000000", - "-vZRkzjIbGn9UdcD5oGJiKnGiKHmZ0wso8DWMEyrS7M=": "1000000", - "R7tu8GLKHSsfsfGzI_DaAWsBrrgRYejj8liPYXtnyok=": "1000000", - "sOnErK3Adm5gqJcUAP_Er6vEbJzlltvZh_VbK4P9eao=": "1000000", - "HvrJwjO0EarxcFDccS-SXoO3H9-lmBnQuyvvIwe-R4s=": "1000000", - "dcbpvBiy-vrrPpnMbrpPg4tq1kWllf-aS4OhvzXTuGo=": "1000000", - "Va1CHNfKouuj1wd5KYy3qredBCcKFbF0cXu1qU5He7g=": "1000000", - "2T91AlqwjTou3RLy6KsUjaXfgrdqRmBCpQB1xDynhnQ=": "1000000", - "CiGGvRaHdSRD6fkmz6PnUiGeai8PbH0XiDuKH27te_k=": "1000000", - "qsipweUQqHJO0gMxR7c6a8vgQmztlAz7_PeMa0Mn_Mc=": "1000000", - "wSR4D2pnUvevLB688yFq_i58QeB3-g-Rs_FQKHvNBpE=": "1000000", - "u_KpiOfRLfUVNr-hKKk_R30MlazM7IkCRykd0fSwrPA=": "1000000", - "a0cNhiexJphG6-byQMbXUv6Sc2ia8XEyqR_hfSM0MyA=": "1000000", - "Lb3itXes6IKXaT5hhNxHo85hq9p3jXmHHnvAvUKtde4=": "1000000", - "0WDV35rP20S2Kgiq1ZT8t3u-MMwIhYB-SpFLY-TMYIc=": "1000000", - "S5AETIobCjtm-wGz41qctRYClISKtVm5WQl5Mt_s_sM=": "1000000", - "ufdpN0pr0XSX6zM6TFLIbqbmCKjl5mOFMmRwzVWd2Wk=": "1000000", - "jlrtJFiEaWBwqscKn0trbdF57cJG0gWwWSy77zfksz4=": "1000000", - "jAve37urJqEwgwBRL_sbIg8GjuE_dhKvsHbCLeP7dkE=": "1000000", - "rmRhP2qqwDrIowGDWaLIt1cUXhT26qdUrM6Cfk2_noU=": "1000000", - "GAEWYvFCgYR_REWE0rMzz0bttgZbQAffI5nrg9C1BrE=": "1000000", - "50OTwx-p9ZxFbqUI4debpIPX5dbUquAR_Ze8XTTwpOo=": "1000000", - "TZnMXsbBiRpIMVdWB3GhFEY9kqUw34_WTgP2j1cd6bc=": "1000000", - "iZrqDRzDc0LUtcyedAFBlZnIuWcfOuhFnw0mLm0Pfuc=": "1000000", - "reC2xKbUqVou_9pA0oHhrL8V93VPO43sUF5jCSyU8kM=": "1000000", - "URVk8FxX6Ik9z-Cub09oOxMkp6FwNq27kJUXbjJnfsQ=": "2463071701000000", - "ocEVzr7ctJ3NyCWj_356QsTyINKoJlwCCAgKFGPjvqg=": "2074165643000000", - "5Y1_PK90x1jCNzzQwthIt0RGT7E3PAPwDI-tbHN39l8=": "648176763000000" - }, - "blockVersionData": { - "heavyDelThd": "300000000000", - "maxBlockSize": "2000000", - "maxHeaderSize": "2000000", - "maxProposalSize": "700", - "maxTxSize": "4096", - "mpcThd": "20000000000000", - "scriptVersion": 0, - "slotDuration": "20000", - "softforkRule": { - "initThd": "900000000000000", - "minThd": "600000000000000", - "thdDecrement": "50000000000000" - }, - "txFeePolicy": { - "multiplier": "43946000000", - "summand": "155381000000000" - }, - "unlockStakeEpoch": "18446744073709551615", - "updateImplicit": "10000", - "updateProposalThd": "100000000000000", - "updateVoteThd": "1000000000000" - }, - "ftsSeed": "76617361206f7061736120736b6f766f726f64612047677572646120626f726f64612070726f766f6461", - "protocolConsts": { - "k": 2160, - "protocolMagic": 764824073, - "vssMaxTTL": 6, - "vssMinTTL": 2 - }, - "startTime": 1506203091, - "bootStakeholders": { - "1deb82908402c7ee3efeb16f369d97fba316ee621d09b32b8969e54b": 1, - "65904a89e6d0e5f881513d1736945e051b76f095eca138ee869d543d": 1, - "5411c7bf87c252609831a337a713e4859668cba7bba70a9c3ef7c398": 1, - - "6c9e14978b9d6629b8703f4f25e9df6ed4814b930b8403b0d45350ea": 1, - "43011479a595b300e0726910d0b602ffcdd20466a3b8ceeacd3fbc26": 1, - - "5071d8802ddd05c59f4db907bd1749e82e6242caf6512b20a8368fcf": 1, - "af2800c124e599d6dec188a75f8bfde397ebb778163a18240371f2d1": 1 - }, - "heavyDelegation": { - "1deb82908402c7ee3efeb16f369d97fba316ee621d09b32b8969e54b":{"cert":"c8b39f094dc00608acb2d20ff274cb3e0c022ccb0ce558ea7c1a2d3a32cd54b42cc30d32406bcfbb7f2f86d05d2032848be15b178e3ad776f8b1bc56a671400d","delegatePk":"6MA6A8Cy3b6kGVyvOfQeZp99JR7PIh+7LydcCl1+BdGQ3MJG9WyOM6wANwZuL2ZN2qmF6lKECCZDMI3eT1v+3w==","issuerPk":"UHMxYf2vtsjLb64OJb35VVEFs2eO+wjxd1uekN5PXHe8yM7/+NkBHLJ4so/dyG2bqwmWVtd6eFbHYZEIy/ZXUg==","omega":0}, - "65904a89e6d0e5f881513d1736945e051b76f095eca138ee869d543d":{"cert":"552741f728196e62f218047b944b24ce4d374300d04b9b281426f55aa000d53ded66989ad5ea0908e6ff6492001ff18ece6c7040a934060759e9ae09863bf203","delegatePk":"X93u2t4nFNbbL54RBHQ9LY2Bjs3cMG4XYQjbFMqt1EG0V9WEDGD4hAuZyPeMKQriKdT4Qx5ni6elRcNWB7lN2w==","issuerPk":"C9sfXvPZlAN1k/ImYlXxNKVkZYuy34FLO5zvuW2jT6nIiFkchbdw/TZybV89mRxmiCiv/Hu+CHL9aZE25mTZ2A==","omega":0}, - "5411c7bf87c252609831a337a713e4859668cba7bba70a9c3ef7c398":{"cert":"c946fd596bdb31949aa435390de19a549c9698cad1813e34ff2431bc06190188188f4e84001380713e3f916c7526096e7c4855904bff40385007b81e1e657d0e","delegatePk":"i1Mgdin5ow5LIBUETzN8AXNavmckPBlHDJ2ujHtzJ5gJiHufQg1vcO4enVDBYFKHjlRLZctdRL1pF1ayhM2Cmw==","issuerPk":"mm+jQ8jGw23ho1Vv60Eb/fhwjVr4jehibQ/Gv6Tuu22Zq4PZDWZTGtkSLT+ctLydBbJkSGclMqaNp5b5MoQx/Q==","omega":0}, - - "6c9e14978b9d6629b8703f4f25e9df6ed4814b930b8403b0d45350ea":{"cert":"8ab43e904b06e799c1817c5ced4f3a7bbe15cdbf422dea9d2d5dc2c6105ce2f4d4c71e5d4779f6c44b770a133636109949e1f7786acb5a732bcdea0470fea406","delegatePk":"8U9xLcYA15MFLUhC1QzvpOZYhOps+DcHB564zjAu/IXa6SLV6zg40rkXhPBIJNJnZ7+2W9NqNudP7EbQnZiFjQ==","issuerPk":"JlZuhvxrmxd8hIDidbKxErVz9tBz+d7qU7jZnE7ZdrM1srOELw44AAHwkLySPKqWke2RFeKG2pQh4nRcesyH8Q==","omega":0}, - "43011479a595b300e0726910d0b602ffcdd20466a3b8ceeacd3fbc26":{"cert":"cf6ddc111545f61c2442b68bd7864ea952c428d145438948ef48a4af7e3f49b175564007685be5ae3c9ece0ab27de09721db0cb63aa67dc081a9f82d7e84210d","delegatePk":"kYDYGOac2ZfjRmPEGKZIwHby4ZzUGU5IbhWdhYC8bNqBNERAxq0OUwb9A1vvkoHaXY+9OPWfWI9wgQFu5hET0g==","issuerPk":"0pZchpkBIxeYxdAtOfyip5qkfD6FSSG1hVyC/RRwiRUX4fp3FlXsjK0T7PblcZrcU5L8BX4XA9X1gzEeg3Ri8Q==","omega":0}, - - "5071d8802ddd05c59f4db907bd1749e82e6242caf6512b20a8368fcf":{"cert":"496b29b5c57e8ac7cffc6e8b5e40b3d260e407ad4d09792decb0a22d54da7f8828265688a18aa1a5c76d9e7477a5f4a650501409fdcd3855b300fd2e2bc3c605","delegatePk":"icKfjErye3rMvliXR4IBNOu6ocrzzpSScKPQx9z9VBsd7zJtLvDbeANByeJh8EiQze7x+cmfbZC47cp9PPwJiA==","issuerPk":"mTqPBW0tPlCwrGATnxDfj4Ej1ffEgXtA2sK13YqpSoLoU2gy5jEt38B4fXtTEMgVZVraT9vPaxIpfURY7Mwt+w==","omega":0}, - "af2800c124e599d6dec188a75f8bfde397ebb778163a18240371f2d1":{"cert":"e03e62f083df5576360e60a32e22bbb07b3c8df4fcab8079f1d6f61af3954d242ba8a06516c395939f24096f3df14e103a7d9c2b80a68a9363cf1f27c7a4e307","delegatePk":"YSYalbdhPua/IGfa13twNJcpsMUNV7wc8w3g20oec6iF0AVK98I/xsN5GdukHGAqV+LQ+TKaeVS4ZzONb7LJRQ==","issuerPk":"G8l6L+AsKXiAzo7P2Zf+TB7AnuEP7u6faGdgFmsFKB1ig0aP/ZO+ywyVbM3dZC35sSRMkVkRGF+kk1X28iv6uQ==","omega":0} - }, - "nonAvvmBalances": {}, - "vssCerts": { - "6bef444609d6e336cb1fe1daba278918dbc5768e6754c2945dd8d25c":{"expiryEpoch":5,"signature":"2d96e4d4a4c506cc5762128b814ffb20afb97d30eb976334cd241a3935bd155ea1d68772b0903bde4584470359206769d83fa2ce55f56a1027ec3c52cb5e8703","signingKey":"6MA6A8Cy3b6kGVyvOfQeZp99JR7PIh+7LydcCl1+BdGQ3MJG9WyOM6wANwZuL2ZN2qmF6lKECCZDMI3eT1v+3w==","vssKey":"WCED6k6ArqOnhQtfNRg0FSCxWmAtocZcyV33AdjMotjGwxI="}, - "eb649333a196ecb024a4a5919d3ce86084014136fd3e884e52ecd057":{"expiryEpoch":5,"signature":"0b115a39935ce6008a4bbad0377f35463fd3510e282186ba43492768a02eb000bd4d3bc50799a24c53879ff2f2587179e797ee1c312acaf107cba67f91cb280b","signingKey":"X93u2t4nFNbbL54RBHQ9LY2Bjs3cMG4XYQjbFMqt1EG0V9WEDGD4hAuZyPeMKQriKdT4Qx5ni6elRcNWB7lN2w==","vssKey":"WCECS11PWxybUHKY2hHmBgm/zYaR2YsqsH+f3uPOp2ydz/E="}, - "5ffca3a329599727e39a7472c5270e54cf59a27b74306cc9f7fd0f5e":{"expiryEpoch":5,"signature":"6cc8d84dd55b41efcf46c4b3086da1fb60c938182b4b66657650839d9fac1e2194a8253dc6d5c107ac0e9e714d1364fff9d2114eae07363d9937ee1d92b69c06","signingKey":"i1Mgdin5ow5LIBUETzN8AXNavmckPBlHDJ2ujHtzJ5gJiHufQg1vcO4enVDBYFKHjlRLZctdRL1pF1ayhM2Cmw==","vssKey":"WCEDca27BxibVjQoA1QJaWx4gAE2MUB0lHfb6jJ3iorXD7s="}, - "ce1e50f578d3043dc78d8777f5723cc7b6ca512d8cdbe8a09aafc9c3":{"expiryEpoch":5,"signature":"2b830f1a79d2baca791a90c3784d74ec9f00267efac5ccd3cd7082b854234f411c237b59f34736933ba626fadc87fd6b2114c44486de692892d7401343990e01","signingKey":"8U9xLcYA15MFLUhC1QzvpOZYhOps+DcHB564zjAu/IXa6SLV6zg40rkXhPBIJNJnZ7+2W9NqNudP7EbQnZiFjQ==","vssKey":"WCECs1+lg8Lsm15FxfY8bhGyRuwe8yOaSH0wwSajLRYeW/s="}, - "0efd6f3b2849d5baf25b3e2bf2d46f88427b4e455fc3dc43f57819c5":{"expiryEpoch":5,"signature":"d381d32a18cd12a1c6ff87da0229c9a5b998fd093ac29f5d932bfc918e7dbc6e1dc292a36c46a3e129c5b1ef661124361426b443480534ff51dacc82bf4b630f","signingKey":"kYDYGOac2ZfjRmPEGKZIwHby4ZzUGU5IbhWdhYC8bNqBNERAxq0OUwb9A1vvkoHaXY+9OPWfWI9wgQFu5hET0g==","vssKey":"WCECgow+hJK+BxjNx0gIYrap+onUsRocObQEVzvJsdj68vw="}, - "1040655f58d5bf2be1c06f983abf66c7f01d28c239f27648a0c73e5d":{"expiryEpoch":5,"signature":"b02e89abb183da7c871bca87a563d38356b44f403348b6a5f24ee4459335290d980db69a6482455aae231a9880defe2fd4212272c4b2ea3da8744a8ba750440a","signingKey":"icKfjErye3rMvliXR4IBNOu6ocrzzpSScKPQx9z9VBsd7zJtLvDbeANByeJh8EiQze7x+cmfbZC47cp9PPwJiA==","vssKey":"WCECQoZjWJSu/6R74CC0ueh7cXmR0sasmTuCqf8X0BtAQ4o="}, - "1fa56ba63cff50d124b6af42f33b245a30fcd1b0170d7704b0b201c7":{"expiryEpoch":5,"signature":"7bb244c4fa1499021b0f2d36515a1f288a33cf00f1b88b57626998b439dcfb03ad88a7bc93101e4d83cdc75329799fbb2ccb28a7212a3e49737b06287d09b00c","signingKey":"YSYalbdhPua/IGfa13twNJcpsMUNV7wc8w3g20oec6iF0AVK98I/xsN5GdukHGAqV+LQ+TKaeVS4ZzONb7LJRQ==","vssKey":"WCECNXeQRqiTZSPDDyeRJ3gl/QzYMLLtNH0yN+XOl17pu8Y="} - } -} diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Block.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Block.hs deleted file mode 100644 index fe0570b6b00..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Block.hs +++ /dev/null @@ -1,12 +0,0 @@ -module Cardano.Chain.Block ( - module X, -) -where - -import Cardano.Chain.Block.Block as X -import Cardano.Chain.Block.Body as X -import Cardano.Chain.Block.Boundary as X -import Cardano.Chain.Block.Header as X -import Cardano.Chain.Block.Proof as X -import Cardano.Chain.Block.Validation as X -import Cardano.Chain.Block.ValidationMode as X diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Block/Block.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Block/Block.hs deleted file mode 100644 index 7c31a985856..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Block/Block.hs +++ /dev/null @@ -1,625 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveFunctor #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Cardano.Chain.Block.Block ( - -- * Block - Block, - ABlock (..), - - -- * Block Constructors - mkBlock, - mkBlockExplicit, - - -- * Block Accessors - blockHash, - blockHashAnnotated, - blockAProtocolMagicId, - blockProtocolMagicId, - blockPrevHash, - blockProof, - blockSlot, - blockGenesisKey, - blockIssuer, - blockDifficulty, - blockToSign, - blockSignature, - blockProtocolVersion, - blockSoftwareVersion, - blockTxPayload, - blockSscPayload, - blockDlgPayload, - blockUpdatePayload, - blockLength, - - -- * Block Binary Serialization - encCBORBlock, - decCBORABlock, - - -- * Block Formatting - renderBlock, - - -- * ABlockOrBoundary - ABlockOrBoundary (..), - encCBORABOBBlock, - decCBORABOBBlock, - decCBORABlockOrBoundary, - encCBORABlockOrBoundary, - - -- * ABoundaryBlock - ABoundaryBlock (..), - boundaryHashAnnotated, - decCBORABoundaryBlock, - encCBORABoundaryBlock, - encCBORABOBBoundary, - boundaryBlockSlot, - ABoundaryBody (..), - - -- * ABlockOrBoundaryHdr - ABlockOrBoundaryHdr (..), - aBlockOrBoundaryHdr, - decCBORABlockOrBoundaryHdr, - encCBORABlockOrBoundaryHdr, - encCBORABlockOrBoundaryHdrSize, - abobHdrFromBlock, - abobHdrSlotNo, - abobHdrChainDifficulty, - abobHdrHash, - abobHdrPrevHash, -) -where - --- TODO `contramap` should be in `Cardano.Prelude` - -import Cardano.Chain.Block.Body ( - ABody, - Body, - bodyDlgPayload, - bodySscPayload, - bodyTxPayload, - bodyTxs, - bodyUpdatePayload, - ) -import Cardano.Chain.Block.Boundary ( - dropBoundaryBody, - dropBoundaryExtraBodyData, - ) -import Cardano.Chain.Block.Header ( - ABlockSignature, - ABoundaryHeader (..), - AHeader (..), - Header, - HeaderHash, - ToSign, - boundaryHeaderHashAnnotated, - decCBORABoundaryHeader, - decCBORAHeader, - encCBORABoundaryHeader, - encCBORABoundaryHeaderSize, - encCBORHeader, - encCBORHeaderSize, - genesisHeaderHash, - hashHeader, - headerDifficulty, - headerGenesisKey, - headerHashAnnotated, - headerIssuer, - headerPrevHash, - headerProof, - headerProtocolMagicId, - headerProtocolVersion, - headerSignature, - headerSlot, - headerSoftwareVersion, - headerToSign, - mkHeaderExplicit, - ) -import Cardano.Chain.Block.Proof (Proof (..)) -import Cardano.Chain.Common (ChainDifficulty (..), dropEmptyAttributes) -import qualified Cardano.Chain.Delegation as Delegation -import Cardano.Chain.Genesis.Hash (GenesisHash (..)) -import Cardano.Chain.Slotting ( - EpochSlots (..), - SlotNumber (..), - WithEpochSlots (WithEpochSlots), - ) -import Cardano.Chain.Ssc (SscPayload) -import Cardano.Chain.UTxO.TxPayload (ATxPayload) -import qualified Cardano.Chain.Update.Payload as Update -import Cardano.Chain.Update.ProtocolVersion (ProtocolVersion) -import Cardano.Chain.Update.SoftwareVersion (SoftwareVersion) -import Cardano.Crypto (ProtocolMagicId, SigningKey, VerificationKey) -import Cardano.Ledger.Binary ( - Annotated (..), - ByteSpan (..), - Case (..), - DecCBOR (..), - Decoded (..), - Decoder, - DecoderError (..), - EncCBOR (..), - Encoding, - Size, - annotatedDecoder, - cborError, - encodeBreak, - encodeListLen, - encodeListLenIndef, - encodePreEncoded, - encodeWord, - enforceSize, - szCases, - ) -import Cardano.Prelude hiding (cborError) -import Control.Monad.Fail (fail) -import Control.Tracer (contramap) -import Data.Aeson (ToJSON) -import qualified Data.ByteString as BS -import Data.Text.Lazy.Builder (Builder, fromText) -import Formatting (bprint, build, int, later, shown) -import qualified Formatting.Buildable as B -import NoThunks.Class (NoThunks (..)) - --------------------------------------------------------------------------------- --- Block --------------------------------------------------------------------------------- - -type Block = ABlock () - -data ABlock a = ABlock - { blockHeader :: AHeader a - , blockBody :: ABody a - , blockAnnotation :: a - } - deriving (Eq, Show, Generic, NFData, Functor) - --- Used for debugging purposes only -instance ToJSON a => ToJSON (ABlock a) - --------------------------------------------------------------------------------- --- Block Constructors --------------------------------------------------------------------------------- - --- | Smart constructor for 'Block' -mkBlock :: - ProtocolMagicId -> - ProtocolVersion -> - SoftwareVersion -> - Either GenesisHash Header -> - EpochSlots -> - SlotNumber -> - -- | The 'SigningKey' used for signing the block - SigningKey -> - -- | A certificate of delegation from a genesis key to the 'SigningKey' - Delegation.Certificate -> - Body -> - Block -mkBlock pm bv sv prevHeader epochSlots = - mkBlockExplicit - pm - bv - sv - prevHash - difficulty - epochSlots - where - prevHash = either genesisHeaderHash (hashHeader epochSlots) prevHeader - difficulty = - either (const $ ChainDifficulty 0) (succ . headerDifficulty) prevHeader - --- | Smart constructor for 'Block', without requiring the entire previous --- 'Header'. Instead, you give its hash and the difficulty of this block. --- These are derived from the previous header in 'mkBlock' so if you have --- the previous header, consider using that one. -mkBlockExplicit :: - ProtocolMagicId -> - ProtocolVersion -> - SoftwareVersion -> - HeaderHash -> - ChainDifficulty -> - EpochSlots -> - SlotNumber -> - -- | The 'SigningKey' used for signing the block - SigningKey -> - -- | A certificate of delegation from a genesis key to the 'SigningKey' - Delegation.Certificate -> - Body -> - Block -mkBlockExplicit pm pv sv prevHash difficulty epochSlots slotNumber sk dlgCert body = - ABlock - ( mkHeaderExplicit - pm - prevHash - difficulty - epochSlots - slotNumber - sk - dlgCert - body - pv - sv - ) - body - () - --------------------------------------------------------------------------------- --- Block Accessors --------------------------------------------------------------------------------- - -blockHash :: EpochSlots -> Block -> HeaderHash -blockHash epochSlots = hashHeader epochSlots . blockHeader - -blockHashAnnotated :: ABlock ByteString -> HeaderHash -blockHashAnnotated = headerHashAnnotated . blockHeader - -blockProtocolMagicId :: ABlock a -> ProtocolMagicId -blockProtocolMagicId = headerProtocolMagicId . blockHeader - -blockAProtocolMagicId :: ABlock a -> Annotated ProtocolMagicId a -blockAProtocolMagicId = aHeaderProtocolMagicId . blockHeader - -blockPrevHash :: ABlock a -> HeaderHash -blockPrevHash = headerPrevHash . blockHeader - -blockProof :: ABlock a -> Proof -blockProof = headerProof . blockHeader - -blockSlot :: ABlock a -> SlotNumber -blockSlot = headerSlot . blockHeader - -blockGenesisKey :: ABlock a -> VerificationKey -blockGenesisKey = headerGenesisKey . blockHeader - -blockIssuer :: ABlock a -> VerificationKey -blockIssuer = headerIssuer . blockHeader - -blockDifficulty :: ABlock a -> ChainDifficulty -blockDifficulty = headerDifficulty . blockHeader - -blockToSign :: EpochSlots -> ABlock a -> ToSign -blockToSign epochSlots = headerToSign epochSlots . blockHeader - -blockSignature :: ABlock a -> ABlockSignature a -blockSignature = headerSignature . blockHeader - -blockProtocolVersion :: ABlock a -> ProtocolVersion -blockProtocolVersion = headerProtocolVersion . blockHeader - -blockSoftwareVersion :: ABlock a -> SoftwareVersion -blockSoftwareVersion = headerSoftwareVersion . blockHeader - -blockTxPayload :: ABlock a -> ATxPayload a -blockTxPayload = bodyTxPayload . blockBody - -blockSscPayload :: ABlock a -> SscPayload -blockSscPayload = bodySscPayload . blockBody - -blockUpdatePayload :: ABlock a -> Update.APayload a -blockUpdatePayload = bodyUpdatePayload . blockBody - -blockDlgPayload :: ABlock a -> Delegation.APayload a -blockDlgPayload = bodyDlgPayload . blockBody - -blockLength :: ABlock ByteString -> Natural -blockLength = fromIntegral . BS.length . blockAnnotation - --------------------------------------------------------------------------------- --- Block Binary Serialization --------------------------------------------------------------------------------- - --- | Encode a block, given a number of slots-per-epoch. --- --- Unlike 'encCBORABOBBlock', this function does not take the deprecated epoch --- boundary blocks into account. -encCBORBlock :: EpochSlots -> Block -> Encoding -encCBORBlock epochSlots block = - encodeListLen 3 - <> encCBORHeader epochSlots (blockHeader block) - <> encCBOR (blockBody block) - <> (encodeListLen 1 <> encCBOR (mempty :: Map Word8 LByteString)) - -decCBORABlock :: EpochSlots -> Decoder s (ABlock ByteSpan) -decCBORABlock epochSlots = do - Annotated (header, body) byteSpan <- annotatedDecoder $ do - enforceSize "Block" 3 - (,) - <$> decCBORAHeader epochSlots - <*> decCBOR - -- Drop the deprecated ExtraBodyData - <* (enforceSize "ExtraBodyData" 1 >> dropEmptyAttributes) - pure $ ABlock header body byteSpan - --------------------------------------------------------------------------------- --- Block Formatting --------------------------------------------------------------------------------- - -instance B.Buildable (WithEpochSlots Block) where - build (WithEpochSlots es block) = renderBlock es block - -renderBlock :: EpochSlots -> Block -> Builder -renderBlock es block = - bprint - ( "Block:\n" - . " " - . build - . " transactions (" - . int - . " items): " - . listJson - . "\n" - . " " - . build - . "\n" - . " " - . shown - . "\n" - . " update payload: " - . build - ) - (WithEpochSlots es $ blockHeader block) - (length txs) - txs - (blockDlgPayload block) - (blockSscPayload block) - (blockUpdatePayload block) - where - txs = bodyTxs $ blockBody block - --------------------------------------------------------------------------------- --- ABlockOrBoundary --------------------------------------------------------------------------------- - -data ABlockOrBoundary a - = ABOBBlock (ABlock a) - | ABOBBoundary (ABoundaryBlock a) - deriving (Eq, Generic, Show, Functor) - --- Used for debugging purposes only -instance ToJSON a => ToJSON (ABlockOrBoundary a) - --- | Encode a 'Block' accounting for deprecated epoch boundary blocks -encCBORABOBBlock :: EpochSlots -> ABlock a -> Encoding -encCBORABOBBlock epochSlots block = - encodeListLen 2 - <> encCBOR (1 :: Word) - <> encCBORBlock epochSlots (fmap (const ()) block) - --- | encCBORABoundaryBlock but with the list length and tag discriminator bytes. -encCBORABOBBoundary :: ProtocolMagicId -> ABoundaryBlock a -> Encoding -encCBORABOBBoundary pm bvd = - encodeListLen 2 - <> encCBOR (0 :: Word) - <> encCBORABoundaryBlock pm bvd - --- | Decode a 'Block' accounting for deprecated epoch boundary blocks -decCBORABOBBlock :: EpochSlots -> Decoder s (Maybe Block) -decCBORABOBBlock epochSlots = - decCBORABlockOrBoundary epochSlots >>= \case - ABOBBoundary _ -> pure Nothing - ABOBBlock b -> pure . Just $ void b - --- | Decode a 'Block' accounting for deprecated epoch boundary blocks --- --- Previous versions of Cardano had an explicit boundary block between epochs. --- A 'Block' was then represented as 'Either BoundaryBlock MainBlock'. We have --- now deprecated these explicit boundary blocks, but we still need to decode --- blocks in the old format. In the case that we find a boundary block, we --- drop it using 'dropBoundaryBlock' and return a 'Nothing'. -decCBORABlockOrBoundary :: - EpochSlots -> Decoder s (ABlockOrBoundary ByteSpan) -decCBORABlockOrBoundary epochSlots = do - enforceSize "Block" 2 - decCBOR @Word >>= \case - 0 -> ABOBBoundary <$> decCBORABoundaryBlock - 1 -> ABOBBlock <$> decCBORABlock epochSlots - t -> cborError $ DecoderErrorUnknownTag "Block" (fromIntegral t) - -encCBORABlockOrBoundary :: - ProtocolMagicId -> EpochSlots -> ABlockOrBoundary a -> Encoding -encCBORABlockOrBoundary pm epochSlots abob = case abob of - ABOBBlock blk -> encCBORABOBBlock epochSlots blk - ABOBBoundary ebb -> encCBORABOBBoundary pm ebb - --------------------------------------------------------------------------------- --- ABoundaryBlock --------------------------------------------------------------------------------- - --- | For boundary body data, we only keep an annotation. It's the body and --- extra body data. -data ABoundaryBody a = ABoundaryBody - { boundaryBodyAnnotation :: !a - } - deriving (Eq, Generic, Show, Functor) - -instance Decoded (ABoundaryBody ByteString) where - type BaseType (ABoundaryBody ByteString) = ABoundaryBody () - recoverBytes = boundaryBodyAnnotation - --- Used for debugging purposes only -instance ToJSON a => ToJSON (ABoundaryBody a) - -decCBORABoundaryBody :: Decoder s (ABoundaryBody ByteSpan) -decCBORABoundaryBody = do - Annotated _ bs <- annotatedDecoder $ do - dropBoundaryBody - dropBoundaryExtraBodyData - pure $ ABoundaryBody bs - --- | Every boundary body has the same encoding: empty. -encCBORABoundaryBody :: ABoundaryBody a -> Encoding -encCBORABoundaryBody _ = - (encodeListLenIndef <> encodeBreak) - <> ( encodeListLen 1 - <> encCBOR (mempty :: Map Word8 LByteString) - ) - --- | For a boundary block, we keep the header, body, and an annotation for --- the whole thing (commonly the bytes from which it was decoded). -data ABoundaryBlock a = ABoundaryBlock - { boundaryBlockLength :: !Int64 - -- ^ Needed for validation. - , boundaryHeader :: !(ABoundaryHeader a) - , boundaryBody :: !(ABoundaryBody a) - , boundaryAnnotation :: !a - } - deriving (Eq, Generic, Show, Functor) - -instance Decoded (ABoundaryBlock ByteString) where - type BaseType (ABoundaryBlock ByteString) = ABoundaryBlock () - recoverBytes = boundaryAnnotation - --- Used for debugging purposes only -instance ToJSON a => ToJSON (ABoundaryBlock a) - --- | Extract the hash of a boundary block from its annotation. -boundaryHashAnnotated :: ABoundaryBlock ByteString -> HeaderHash -boundaryHashAnnotated = boundaryHeaderHashAnnotated . boundaryHeader - -decCBORABoundaryBlock :: Decoder s (ABoundaryBlock ByteSpan) -decCBORABoundaryBlock = do - Annotated (hdr, bod) bytespan@(ByteSpan start end) <- annotatedDecoder $ do - enforceSize "BoundaryBlock" 3 - -- 1 item (list of 5) - hdr <- decCBORABoundaryHeader - -- 2 items (body and extra body data) - bod <- decCBORABoundaryBody - pure (hdr, bod) - pure - $ ABoundaryBlock - { boundaryBlockLength = end - start - , boundaryHeader = hdr - , boundaryBody = bod - , boundaryAnnotation = bytespan - } - --- | See note on `encCBORABoundaryHeader`. This as well does not necessarily --- invert the decoder `decCBORABoundaryBlock`. -encCBORABoundaryBlock :: ProtocolMagicId -> ABoundaryBlock a -> Encoding -encCBORABoundaryBlock pm ebb = - encodeListLen 3 - -- 1 item (list of 5) - <> encCBORABoundaryHeader pm (boundaryHeader ebb) - -- 2 items (body and extra body data) - <> encCBORABoundaryBody (boundaryBody ebb) - -instance B.Buildable (ABoundaryBlock a) where - build bvd = - bprint - ( "Boundary:\n" - . " Starting epoch: " - . int - . "\n" - . " " - . later buildBoundaryHash - . "\n" - . " Block number: " - . build - ) - (boundaryEpoch hdr) - (boundaryPrevHash hdr) - (boundaryDifficulty hdr) - where - hdr = boundaryHeader bvd - buildBoundaryHash :: Either GenesisHash HeaderHash -> Builder - buildBoundaryHash (Left (GenesisHash _)) = fromText "Genesis" - buildBoundaryHash (Right h) = B.build h - --- | Compute the slot number assigned to a boundary block -boundaryBlockSlot :: - EpochSlots -> - -- | Epoch number - Word64 -> - SlotNumber -boundaryBlockSlot (EpochSlots es) epoch = - SlotNumber $ es * epoch - -{------------------------------------------------------------------------------- - Header of a regular block or EBB --------------------------------------------------------------------------------} - -data ABlockOrBoundaryHdr a - = ABOBBlockHdr !(AHeader a) - | ABOBBoundaryHdr !(ABoundaryHeader a) - deriving (Eq, Show, Functor, Generic, NoThunks) - -decCBORABlockOrBoundaryHdr :: - EpochSlots -> - Decoder s (ABlockOrBoundaryHdr ByteSpan) -decCBORABlockOrBoundaryHdr epochSlots = do - enforceSize "ABlockOrBoundaryHdr" 2 - decCBOR @Word >>= \case - 0 -> ABOBBoundaryHdr <$> decCBORABoundaryHeader - 1 -> ABOBBlockHdr <$> decCBORAHeader epochSlots - t -> fail $ "Unknown tag in encoded HeaderOrBoundary" <> show t - --- | Encoder for 'ABlockOrBoundaryHdr' which is using the annotation. --- It is right inverse of 'decCBORAblockOrBoundaryHdr'. --- --- TODO: add a round trip test, e.g. --- --- prop> decCBORABlockOrBoundaryHdr . encCBORABlockOrBoundaryHdr = id --- --- which does not type check, but convey the meaning. -encCBORABlockOrBoundaryHdr :: ABlockOrBoundaryHdr ByteString -> Encoding -encCBORABlockOrBoundaryHdr hdr = - encodeListLen 2 - <> case hdr of - ABOBBoundaryHdr h -> - encodeWord 0 - <> encodePreEncoded (boundaryHeaderAnnotation h) - ABOBBlockHdr h -> - encodeWord 1 - <> encodePreEncoded (headerAnnotation h) - --- | The size computation is compatible with 'encCBORABlockOrBoundaryHdr' -encCBORABlockOrBoundaryHdrSize :: Proxy (ABlockOrBoundaryHdr a) -> Size -encCBORABlockOrBoundaryHdrSize hdr = - 2 -- @encodeListLen 2@ followed by @encodeWord 0@ or @encodeWord 1@. - + szCases - [ Case "ABOBBoundaryHdr" $ encCBORABoundaryHeaderSize Proxy (ABOBBoundaryHdr `contramap` hdr) - , Case "ABOBBlockHdr" $ encCBORHeaderSize Proxy (ABOBBlockHdr `contramap` hdr) - ] - --- | The analogue of 'Data.Either.either' -aBlockOrBoundaryHdr :: - (AHeader a -> b) -> - (ABoundaryHeader a -> b) -> - ABlockOrBoundaryHdr a -> - b -aBlockOrBoundaryHdr f _ (ABOBBlockHdr hdr) = f hdr -aBlockOrBoundaryHdr _ g (ABOBBoundaryHdr hdr) = g hdr - -abobHdrFromBlock :: ABlockOrBoundary a -> ABlockOrBoundaryHdr a -abobHdrFromBlock (ABOBBlock blk) = ABOBBlockHdr $ blockHeader blk -abobHdrFromBlock (ABOBBoundary blk) = ABOBBoundaryHdr $ boundaryHeader blk - --- | Slot number of the header --- --- NOTE: Epoch slot number calculation must match the one in 'applyBoundary'. -abobHdrSlotNo :: EpochSlots -> ABlockOrBoundaryHdr a -> SlotNumber -abobHdrSlotNo epochSlots = - aBlockOrBoundaryHdr - headerSlot - (boundaryBlockSlot epochSlots . boundaryEpoch) - -abobHdrChainDifficulty :: ABlockOrBoundaryHdr a -> ChainDifficulty -abobHdrChainDifficulty = - aBlockOrBoundaryHdr - headerDifficulty - boundaryDifficulty - -abobHdrHash :: ABlockOrBoundaryHdr ByteString -> HeaderHash -abobHdrHash (ABOBBoundaryHdr hdr) = boundaryHeaderHashAnnotated hdr -abobHdrHash (ABOBBlockHdr hdr) = headerHashAnnotated hdr - -abobHdrPrevHash :: ABlockOrBoundaryHdr a -> Maybe HeaderHash -abobHdrPrevHash = - aBlockOrBoundaryHdr - (Just . headerPrevHash) - (either (const Nothing) Just . boundaryPrevHash) diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Block/Body.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Block/Body.hs deleted file mode 100644 index 582bc1d5bff..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Block/Body.hs +++ /dev/null @@ -1,95 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveFunctor #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE TypeApplications #-} - -module Cardano.Chain.Block.Body ( - Body, - pattern Body, - ABody (..), - bodyTxs, - bodyWitnesses, -) -where - -import qualified Cardano.Chain.Delegation.Payload as Delegation -import Cardano.Chain.Ssc (SscPayload (..)) -import Cardano.Chain.UTxO.Tx (Tx) -import Cardano.Chain.UTxO.TxPayload (ATxPayload, TxPayload, txpTxs, txpWitnesses) -import Cardano.Chain.UTxO.TxWitness (TxWitness) -import qualified Cardano.Chain.Update.Payload as Update -import Cardano.Ledger.Binary ( - ByteSpan, - DecCBOR (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - encodeListLen, - enforceSize, - fromByronCBOR, - toByronCBOR, - ) -import Cardano.Prelude -import Data.Aeson (ToJSON) - --- | 'Body' consists of payloads of all block components -type Body = ABody () - --- | Constructor for 'Body' -pattern Body :: TxPayload -> SscPayload -> Delegation.Payload -> Update.Payload -> Body -pattern Body tx ssc dlg upd = ABody tx ssc dlg upd - --- | 'Body' consists of payloads of all block components -data ABody a = ABody - { bodyTxPayload :: !(ATxPayload a) - -- ^ UTxO payload - , bodySscPayload :: !SscPayload - -- ^ Ssc payload - , bodyDlgPayload :: !(Delegation.APayload a) - -- ^ Heavyweight delegation payload (no-ttl certificates) - , bodyUpdatePayload :: !(Update.APayload a) - -- ^ Additional update information for the update system - } - deriving (Eq, Show, Generic, Functor, NFData) - --- Used for debugging purposes only -instance ToJSON a => ToJSON (ABody a) - -instance ToCBOR Body where - toCBOR = toByronCBOR - -instance FromCBOR Body where - fromCBOR = fromByronCBOR - -instance FromCBOR (ABody ByteSpan) where - fromCBOR = fromByronCBOR - -instance EncCBOR Body where - encCBOR bc = - encodeListLen 4 - <> encCBOR (bodyTxPayload bc) - <> encCBOR (bodySscPayload bc) - <> encCBOR (bodyDlgPayload bc) - <> encCBOR (bodyUpdatePayload bc) - -instance DecCBOR Body where - decCBOR = void <$> decCBOR @(ABody ByteSpan) - -instance DecCBOR (ABody ByteSpan) where - decCBOR = do - enforceSize "Body" 4 - ABody - <$> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - -bodyTxs :: Body -> [Tx] -bodyTxs = txpTxs . bodyTxPayload - -bodyWitnesses :: Body -> [TxWitness] -bodyWitnesses = txpWitnesses . bodyTxPayload diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Block/Boundary.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Block/Boundary.hs deleted file mode 100644 index 45be7bcfac7..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Block/Boundary.hs +++ /dev/null @@ -1,84 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} - --- | Boundary blocks have been deprecated, but we keep functions to decode them -module Cardano.Chain.Block.Boundary ( - decCBORBoundaryConsensusData, - dropBoundaryExtraHeaderData, - dropBoundaryExtraHeaderDataRetainGenesisTag, - dropBoundaryBody, - dropBoundaryExtraBodyData, -) -where - -import Cardano.Chain.Common ( - ChainDifficulty, - attrData, - decCBORAttributes, - dropAttributes, - ) -import Cardano.Ledger.Binary ( - Decoder, - Dropper, - decCBOR, - decodeWord64, - dropBytes, - dropList, - enforceSize, - ) -import Cardano.Prelude - --------------------------------------------------------------------------------- --- BoundaryConsensusData --------------------------------------------------------------------------------- - -decCBORBoundaryConsensusData :: Decoder s (Word64, ChainDifficulty) -decCBORBoundaryConsensusData = do - enforceSize "BoundaryConsensusData" 2 - w <- decodeWord64 - cd <- decCBOR - return (w, cd) - --------------------------------------------------------------------------------- --- BoundaryExtraHeaderData --------------------------------------------------------------------------------- - -dropBoundaryExtraHeaderData :: Dropper s -dropBoundaryExtraHeaderData = do - enforceSize "BoundaryExtraHeaderData" 1 - dropAttributes - --- | When starting a new chain in ourorobos-consensus, we often start from a --- non-zero epoch. This is done in order to ensure synchronisation between --- nodes - we assume that the chain started at some fixed point in the past --- (e.g. midnight) which all nodes can agree on despite different node start --- times. However, the standard deserialisation assumes that the genesis EBB --- is precisely that in epoch zero. --- --- In order to successfully round-trip a genesis EBB in a non-zero epoch, --- then, we add a "magic" tag which indicates the presense of the genesis --- hash. The choice of 255 and the word "Genesis" is completely arbitrary, and --- only done to correspond with the matching encoder. This encoding will only --- ever be seen when processing blocks from a demo. -dropBoundaryExtraHeaderDataRetainGenesisTag :: Decoder s Bool -dropBoundaryExtraHeaderDataRetainGenesisTag = do - enforceSize "BoundaryExtraHeaderData" 1 - attrData - <$> decCBORAttributes - False - (\w8 bs t -> pure . Just $ t || w8 == 255 && bs == "Genesis") - --------------------------------------------------------------------------------- --- BoundaryBody --------------------------------------------------------------------------------- - -dropBoundaryBody :: Dropper s -dropBoundaryBody = dropList dropBytes - --------------------------------------------------------------------------------- --- BoundaryExtraBodyData --------------------------------------------------------------------------------- - -dropBoundaryExtraBodyData :: Dropper s -dropBoundaryExtraBodyData = do - enforceSize "BoundaryExtraBodyData" 1 - dropAttributes diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Block/Header.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Block/Header.hs deleted file mode 100644 index 61722ea67a9..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Block/Header.hs +++ /dev/null @@ -1,765 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveFunctor #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Cardano.Chain.Block.Header ( - -- * Header - Header, - AHeader (..), - - -- * Header Constructors - mkHeader, - mkHeaderExplicit, - - -- * Header Accessors - headerProtocolMagicId, - headerPrevHash, - headerProof, - headerSlot, - headerIssuer, - headerLength, - headerDifficulty, - headerToSign, - - -- * Header Binary Serialization - encCBORHeader, - encCBORHeaderSize, - encCBORHeaderToHash, - decCBORAHeader, - decCBORHeader, - decCBORHeaderToHash, - wrapHeaderBytes, - encCBORBlockVersions, - encCBORBlockVersionsSize, - - -- * Header Formatting - renderHeader, - - -- * Boundary Header - ABoundaryHeader (..), - mkABoundaryHeader, - encCBORABoundaryHeader, - encCBORABoundaryHeaderSize, - decCBORABoundaryHeader, - boundaryHeaderHashAnnotated, - wrapBoundaryBytes, - - -- * HeaderHash - HeaderHash, - headerHashF, - hashHeader, - headerHashAnnotated, - genesisHeaderHash, - - -- * BlockSignature - BlockSignature, - ABlockSignature (..), - - -- * ToSign - ToSign (..), - recoverSignedBytes, -) -where - -import Cardano.Chain.Block.Body (Body) -import Cardano.Chain.Block.Boundary ( - decCBORBoundaryConsensusData, - dropBoundaryExtraHeaderDataRetainGenesisTag, - ) -import Cardano.Chain.Block.Proof (Proof (..), mkProof) -import Cardano.Chain.Common (ChainDifficulty (..), dropEmptyAttributes) -import qualified Cardano.Chain.Delegation.Certificate as Delegation -import Cardano.Chain.Genesis.Hash (GenesisHash (..)) -import Cardano.Chain.Slotting ( - EpochAndSlotCount (..), - EpochSlots, - SlotNumber (..), - WithEpochSlots (WithEpochSlots), - fromSlotNumber, - toSlotNumber, - ) -import Cardano.Chain.Update.ProtocolVersion (ProtocolVersion) -import Cardano.Chain.Update.SoftwareVersion (SoftwareVersion) -import Cardano.Crypto ( - Hash, - ProtocolMagicId (..), - SignTag (..), - Signature, - SigningKey, - VerificationKey, - hashDecoded, - hashHexF, - hashRaw, - serializeCborHash, - sign, - unsafeAbstractHash, - ) -import Cardano.Crypto.Raw (Raw) -import Cardano.Ledger.Binary ( - Annotated (..), - ByteSpan, - Case (..), - DecCBOR (..), - Decoded (..), - Decoder, - DecoderError (..), - EncCBOR (..), - Encoding, - FromCBOR (..), - Size, - ToCBOR (..), - annotatedDecoder, - byronProtVer, - cborError, - decCBORAnnotated, - dropBytes, - dropInt32, - encodeListLen, - enforceSize, - fromByronCBOR, - serialize, - szCases, - szGreedy, - toByronCBOR, - ) -import Cardano.Prelude hiding (cborError) -import Data.Aeson (ToJSON) -import qualified Data.ByteString as BS -import Data.Coerce (coerce) -import qualified Data.Map.Strict as Map (singleton) -import Data.Text.Lazy.Builder (Builder) -import Formatting (Format, bprint, build, int) -import qualified Formatting.Buildable as B -import NoThunks.Class (NoThunks (..)) - --------------------------------------------------------------------------------- --- Header --------------------------------------------------------------------------------- - -type Header = AHeader () - -data AHeader a = AHeader - { aHeaderProtocolMagicId :: !(Annotated ProtocolMagicId a) - , aHeaderPrevHash :: !(Annotated HeaderHash a) - -- ^ Pointer to the header of the previous block - , aHeaderSlot :: !(Annotated SlotNumber a) - -- ^ The slot number this block was published for - , aHeaderDifficulty :: !(Annotated ChainDifficulty a) - -- ^ The chain difficulty up to this block - , headerProtocolVersion :: !ProtocolVersion - -- ^ The version of the protocol parameters this block is using - , headerSoftwareVersion :: !SoftwareVersion - -- ^ The software version this block was published from - , aHeaderProof :: !(Annotated Proof a) - -- ^ Proof of body - , headerGenesisKey :: !VerificationKey - -- ^ The genesis key that is delegating to publish this block - , headerSignature :: !(ABlockSignature a) - -- ^ The signature of the block, which contains the delegation certificate - , headerAnnotation :: !a - -- ^ An annotation that captures the full header bytes - , headerExtraAnnotation :: !a - -- ^ An annotation that captures the bytes from the deprecated ExtraHeaderData - } - deriving (Eq, Show, Generic, NFData, Functor, NoThunks) - --- Used for debugging purposes only -instance ToJSON a => ToJSON (AHeader a) - --------------------------------------------------------------------------------- --- Header Constructors --------------------------------------------------------------------------------- - --- | Smart constructor for 'Header' -mkHeader :: - ProtocolMagicId -> - Either GenesisHash Header -> - -- | Number of slots per epoch. This is needed to convert the slot number to - -- the legacy format used in 'ToSign', where a slot is identified by the - -- epoch to which it belongs and the offset within that epoch (counted in - -- number of slots). - EpochSlots -> - SlotNumber -> - -- | The 'SigningKey' used for signing the block - SigningKey -> - -- | A certificate of delegation from a genesis key to the 'SigningKey' - Delegation.Certificate -> - Body -> - ProtocolVersion -> - SoftwareVersion -> - Header -mkHeader pm prevHeader epochSlots = - mkHeaderExplicit - pm - prevHash - difficulty - epochSlots - where - prevHash = either genesisHeaderHash (hashHeader epochSlots) prevHeader - difficulty = - either - (const $ ChainDifficulty 0) - (succ . headerDifficulty) - prevHeader - --- | Make a 'Header' for a given slot, with a given body, parent hash, --- and difficulty. This takes care of some signing and consensus data. -mkHeaderExplicit :: - ProtocolMagicId -> - -- | Parent - HeaderHash -> - ChainDifficulty -> - -- | See 'mkHeader'. - EpochSlots -> - SlotNumber -> - -- | The 'SigningKey' used for signing the block - SigningKey -> - -- | A certificate of delegation from a genesis key to the 'SigningKey' - Delegation.Certificate -> - Body -> - ProtocolVersion -> - SoftwareVersion -> - Header -mkHeaderExplicit pm prevHash difficulty epochSlots slotNumber sk dlgCert body pv sv = - AHeader - (Annotated pm ()) - (Annotated prevHash ()) - (Annotated slotNumber ()) - (Annotated difficulty ()) - pv - sv - (Annotated proof ()) - genesisVK - sig - () - () - where - proof = mkProof body - - genesisVK = Delegation.issuerVK dlgCert - - sig = ABlockSignature dlgCert $ sign pm (SignBlock genesisVK) sk toSign - - toSign = ToSign prevHash proof epochAndSlotCount difficulty pv sv - - epochAndSlotCount = fromSlotNumber epochSlots slotNumber - --------------------------------------------------------------------------------- --- Header Accessors --------------------------------------------------------------------------------- - -headerProtocolMagicId :: AHeader a -> ProtocolMagicId -headerProtocolMagicId = unAnnotated . aHeaderProtocolMagicId - -headerPrevHash :: AHeader a -> HeaderHash -headerPrevHash = unAnnotated . aHeaderPrevHash - -headerSlot :: AHeader a -> SlotNumber -headerSlot = unAnnotated . aHeaderSlot - -headerDifficulty :: AHeader a -> ChainDifficulty -headerDifficulty = unAnnotated . aHeaderDifficulty - -headerProof :: AHeader a -> Proof -headerProof = unAnnotated . aHeaderProof - -headerIssuer :: AHeader a -> VerificationKey -headerIssuer h = case headerSignature h of - ABlockSignature cert _ -> Delegation.delegateVK cert - -headerToSign :: EpochSlots -> AHeader a -> ToSign -headerToSign epochSlots h = - ToSign - (headerPrevHash h) - (headerProof h) - (fromSlotNumber epochSlots $ headerSlot h) - (headerDifficulty h) - (headerProtocolVersion h) - (headerSoftwareVersion h) - -headerLength :: AHeader ByteString -> Natural -headerLength = fromIntegral . BS.length . headerAnnotation - --------------------------------------------------------------------------------- --- Header Binary Serialization --------------------------------------------------------------------------------- - --- | Encode a header, without taking in to account deprecated epoch boundary --- blocks. -encCBORHeader :: EpochSlots -> Header -> Encoding -encCBORHeader es h = - encodeListLen 5 - <> encCBOR (headerProtocolMagicId h) - <> encCBOR (headerPrevHash h) - <> encCBOR (headerProof h) - <> ( encodeListLen 4 - <> encCBOR (fromSlotNumber es $ headerSlot h) - <> encCBOR (headerGenesisKey h) - <> encCBOR (headerDifficulty h) - <> encCBOR (headerSignature h) - ) - <> encCBORBlockVersions (headerProtocolVersion h) (headerSoftwareVersion h) - -encCBORHeaderSize :: Proxy EpochSlots -> Proxy (AHeader a) -> Size -encCBORHeaderSize es hdr = - 1 -- encodeListLen 5 - + szGreedy (headerProtocolMagicId <$> hdr) - + szGreedy (headerPrevHash <$> hdr) - + szGreedy (headerProof <$> hdr) - + ( 1 - + szGreedy (fromSlotNumber <$> es <*> (headerSlot <$> hdr)) - + szGreedy (headerGenesisKey <$> hdr) - + szGreedy (headerDifficulty <$> hdr) - -- there is only 'EncCBOR' @ASignature ()@ instance, we - -- must map 'a' to '()' - + szGreedy (headerSignature . fmap (const ()) <$> hdr) - ) - + encCBORBlockVersionsSize - (headerProtocolVersion <$> hdr) - (headerSoftwareVersion <$> hdr) - -encCBORBlockVersions :: ProtocolVersion -> SoftwareVersion -> Encoding -encCBORBlockVersions pv sv = - encodeListLen 4 - <> encCBOR pv - <> encCBOR sv - -- Encoding of empty Attributes - <> encCBOR (mempty :: Map Word8 LByteString) - -- Hash of the encoding of empty ExtraBodyData - <> encCBOR (hashRaw "\129\160") - -encCBORBlockVersionsSize :: Proxy ProtocolVersion -> Proxy SoftwareVersion -> Size -encCBORBlockVersionsSize pv sv = - 1 - + szGreedy pv - + szGreedy sv - -- empty attributes dictionary - + 1 - + szGreedy (Proxy :: Proxy (Hash Raw)) - -decCBORHeader :: EpochSlots -> Decoder s Header -decCBORHeader epochSlots = void <$> decCBORAHeader epochSlots - -decCBORAHeader :: EpochSlots -> Decoder s (AHeader ByteSpan) -decCBORAHeader epochSlots = do - Annotated - ( pm - , prevHash - , proof - , (slot, genesisKey, difficulty, sig) - , Annotated (protocolVersion, softwareVersion) extraByteSpan - ) - byteSpan <- - annotatedDecoder $ do - enforceSize "Header" 5 - (,,,,) - <$> decCBORAnnotated - <*> decCBORAnnotated - <*> decCBORAnnotated - <*> do - enforceSize "ConsensusData" 4 - (,,,) - -- Next, we decode a 'EpochAndSlotCount' into a 'SlotNumber': the `EpochAndSlotCount` - -- used in 'AConsensusData' is encoded as a epoch and slot-count - -- pair. - <$> fmap (first (toSlotNumber epochSlots)) decCBORAnnotated - <*> decCBOR - <*> decCBORAnnotated - <*> decCBOR - <*> annotatedDecoder decCBORBlockVersions - pure - $ AHeader - pm - prevHash - slot - difficulty - protocolVersion - softwareVersion - proof - genesisKey - sig - byteSpan - extraByteSpan - -decCBORBlockVersions :: Decoder s (ProtocolVersion, SoftwareVersion) -decCBORBlockVersions = do - enforceSize "BlockVersions" 4 - (,) <$> decCBOR <*> decCBOR <* dropEmptyAttributes <* dropBytes - -instance Decoded (AHeader ByteString) where - type BaseType (AHeader ByteString) = Header - recoverBytes = headerAnnotation - --- | Encode a 'Header' accounting for deprecated epoch boundary blocks --- --- This encoding is only used when hashing the header for backwards --- compatibility, but should not be used when serializing a header within a --- block -encCBORHeaderToHash :: EpochSlots -> Header -> Encoding -encCBORHeaderToHash epochSlots h = - encodeListLen 2 <> encCBOR (1 :: Word) <> encCBORHeader epochSlots h - -decCBORHeaderToHash :: EpochSlots -> Decoder s (Maybe Header) -decCBORHeaderToHash epochSlots = do - enforceSize "Header" 2 - decCBOR @Word >>= \case - 0 -> do - void decCBORABoundaryHeader - pure Nothing - 1 -> Just <$!> decCBORHeader epochSlots - t -> cborError $ DecoderErrorUnknownTag "Header" (fromIntegral t) - --------------------------------------------------------------------------------- --- Header Formatting --------------------------------------------------------------------------------- - -instance B.Buildable (WithEpochSlots Header) where - build (WithEpochSlots es header) = renderHeader es header - -renderHeader :: EpochSlots -> Header -> Builder -renderHeader es header = - bprint - ( "Header:\n" - . " hash: " - . hashHexF - . "\n" - . " previous block: " - . hashHexF - . "\n" - . " slot: " - . build - . "\n" - . " difficulty: " - . int - . "\n" - . " protocol: v" - . build - . "\n" - . " software: " - . build - . "\n" - . " genesis key: " - . build - . "\n" - . " signature: " - . build - ) - headerHash - (headerPrevHash header) - (headerSlot header) - (unChainDifficulty $ headerDifficulty header) - (headerProtocolVersion header) - (headerSoftwareVersion header) - (headerGenesisKey header) - (headerSignature header) - where - headerHash :: HeaderHash - headerHash = hashHeader es header - --------------------------------------------------------------------------------- --- HeaderHash --------------------------------------------------------------------------------- - --- | 'Hash' of block header -type HeaderHash = Hash Header - --- | Specialized formatter for 'HeaderHash' -headerHashF :: Format r (HeaderHash -> r) -headerHashF = build - --- | Extract the genesis hash and cast it into a header hash. -genesisHeaderHash :: GenesisHash -> HeaderHash -genesisHeaderHash = coerce . unGenesisHash - --- | These bytes must be prepended when hashing raw boundary header data --- --- In the Byron release, hashes were taken over a data type that was never --- directly serialized to the blockchain, so these magic bytes cannot be --- determined from the raw header data. --- --- These bytes are from `encodeListLen 2 <> encCBOR (1 :: Word8)` -wrapHeaderBytes :: ByteString -> ByteString -wrapHeaderBytes = mappend "\130\SOH" - --- | Hash the serialised representation of a `Header` --- --- For backwards compatibility we have to take the hash of the header --- serialised with 'encCBORHeaderToHash' -hashHeader :: EpochSlots -> Header -> HeaderHash -hashHeader es = unsafeAbstractHash . serialize byronProtVer . encCBORHeaderToHash es - -headerHashAnnotated :: AHeader ByteString -> HeaderHash -headerHashAnnotated = hashDecoded . fmap wrapHeaderBytes - --------------------------------------------------------------------------------- --- BoundaryHeader --------------------------------------------------------------------------------- - -data ABoundaryHeader a = UnsafeABoundaryHeader - { boundaryPrevHash :: !(Either GenesisHash HeaderHash) - , boundaryEpoch :: !Word64 - , boundaryDifficulty :: !ChainDifficulty - , boundaryHeaderAnnotation :: !a - } - deriving (Eq, Show, Functor, Generic, NoThunks) - --- Used for debugging purposes only -instance ToJSON a => ToJSON (ABoundaryHeader a) - --- | Smart constructor for 'ABoundaryHeader' --- --- Makes sure that the hash is forced. -mkABoundaryHeader :: - Either GenesisHash HeaderHash -> - Word64 -> - ChainDifficulty -> - a -> - ABoundaryHeader a -mkABoundaryHeader prevHash epoch dty ann = - case prevHash of - Left !genHash -> UnsafeABoundaryHeader (Left genHash) epoch dty ann - Right !hdrHash -> UnsafeABoundaryHeader (Right hdrHash) epoch dty ann - -instance Decoded (ABoundaryHeader ByteString) where - type BaseType (ABoundaryHeader ByteString) = ABoundaryHeader () - recoverBytes = boundaryHeaderAnnotation - --- | Compute the hash of a boundary block header from its annotation. --- It uses `wrapBoundaryBytes`, for the hash must be computed on the header --- bytes tagged with the CBOR list length and tag discriminator, which is --- the encoding chosen by cardano-sl. -boundaryHeaderHashAnnotated :: ABoundaryHeader ByteString -> HeaderHash -boundaryHeaderHashAnnotated = coerce . hashDecoded . fmap wrapBoundaryBytes - --- | Encode from a boundary header with any annotation. This does not --- necessarily invert `decCBORBoundaryHeader`, because that decoder drops --- information that this encoder replaces, such as the body proof (assumes --- the body is empty) and the extra header data (sets it to empty map). -encCBORABoundaryHeader :: ProtocolMagicId -> ABoundaryHeader a -> Encoding -encCBORABoundaryHeader pm hdr = - encodeListLen 5 - <> encCBOR pm - <> ( case boundaryPrevHash hdr of - Left gh -> encCBOR (genesisHeaderHash gh) - Right hh -> encCBOR hh - ) - -- Body proof - -- The body is always an empty slot leader schedule, so we hash that. - <> encCBOR (serializeCborHash ([] :: [()])) - -- Consensus data - <> ( encodeListLen 2 - -- Epoch - <> encCBOR (boundaryEpoch hdr) - -- Chain difficulty - <> encCBOR (boundaryDifficulty hdr) - ) - -- Extra data - <> ( encodeListLen 1 - <> encCBOR genesisTag - ) - where - -- Genesis tag to indicate the presence of a genesis hash in a non-zero - -- epoch. See 'dropBoundaryExtraHeaderDataRetainGenesisTag' for more - -- details on this. - genesisTag = case (boundaryPrevHash hdr, boundaryEpoch hdr) of - (Left _, n) | n > 0 -> Map.singleton 255 "Genesis" - _ -> mempty :: Map Word8 LByteString - -encCBORABoundaryHeaderSize :: Proxy ProtocolMagicId -> Proxy (ABoundaryHeader a) -> Size -encCBORABoundaryHeaderSize pm hdr = - 1 - + szGreedy pm - + szCases - [ Case "GenesisHash" - $ szGreedy - $ pFromLeft - $ boundaryPrevHash - <$> hdr - , Case "HeaderHash" - $ szGreedy - $ pFromRight - $ boundaryPrevHash - <$> hdr - ] - -- Body proof - + szGreedy (Proxy :: Proxy (Hash LByteString)) - -- Consensus data - + ( 1 - + szGreedy (boundaryEpoch <$> hdr) - + szGreedy (boundaryDifficulty <$> hdr) - ) - -- Extra data - + ( 1 - + szCases - [ Case "Genesis" 11 - , Case "" 1 - ] - ) - where - pFromLeft :: Proxy (Either a b) -> Proxy a - pFromLeft _ = Proxy - - pFromRight :: Proxy (Either a b) -> Proxy b - pFromRight _ = Proxy - -decCBORABoundaryHeader :: Decoder s (ABoundaryHeader ByteSpan) -decCBORABoundaryHeader = do - Annotated header bytespan <- annotatedDecoder $ do - enforceSize "BoundaryHeader" 5 - dropInt32 - -- HeaderHash - hh <- decCBOR - -- BoundaryBodyProof - dropBytes - (epoch, difficulty) <- decCBORBoundaryConsensusData - isGen <- dropBoundaryExtraHeaderDataRetainGenesisTag - let hh' = if epoch == 0 || isGen then Left (coerce hh) else Right hh - pure $ mkABoundaryHeader hh' epoch difficulty () - pure (header {boundaryHeaderAnnotation = bytespan}) - --- | These bytes must be prepended when hashing raw boundary header data --- --- In the Byron release, hashes were taken over a data type that was never --- directly serialized to the blockchain, so these magic bytes cannot be --- determined from the raw header data. -wrapBoundaryBytes :: ByteString -> ByteString -wrapBoundaryBytes = mappend "\130\NUL" - --------------------------------------------------------------------------------- --- BlockSignature --------------------------------------------------------------------------------- - -type BlockSignature = ABlockSignature () - --- | Signature of the 'Block' --- --- We use a heavyweight delegation scheme, so the signature has two parts: --- --- 1. A delegation certificate from a genesis key to the block signer --- 2. The actual signature over `ToSign` -data ABlockSignature a = ABlockSignature - { delegationCertificate :: !(Delegation.ACertificate a) - , signature :: !(Signature ToSign) - } - deriving (Show, Eq, Generic, Functor) - deriving anyclass (NFData, NoThunks) - -instance B.Buildable BlockSignature where - build (ABlockSignature cert _) = - bprint - ( "BlockSignature:\n" - . " Delegation certificate: " - . build - ) - cert - --- Used for debugging purposes only -instance ToJSON a => ToJSON (ABlockSignature a) - -instance ToCBOR BlockSignature where - toCBOR = toByronCBOR - -instance FromCBOR BlockSignature where - fromCBOR = fromByronCBOR - -instance FromCBOR (ABlockSignature ByteSpan) where - fromCBOR = fromByronCBOR - -instance EncCBOR BlockSignature where - encCBOR (ABlockSignature cert sig) = - -- Tag 0 was previously used for BlockSignature (no delegation) - -- Tag 1 was previously used for BlockPSignatureLight - encodeListLen 2 - <> encCBOR (2 :: Word8) - <> (encodeListLen 2 <> encCBOR cert <> encCBOR sig) - - encodedSizeExpr size sig = - 3 - + encodedSizeExpr size (delegationCertificate <$> sig) - + encodedSizeExpr size (signature <$> sig) - -instance DecCBOR BlockSignature where - decCBOR = void <$> decCBOR @(ABlockSignature ByteSpan) - -instance DecCBOR (ABlockSignature ByteSpan) where - decCBOR = do - enforceSize "BlockSignature" 2 - decCBOR >>= \case - 2 -> - ABlockSignature - <$ enforceSize "BlockSignature" 2 - <*> decCBOR - <*> decCBOR - t -> cborError $ DecoderErrorUnknownTag "BlockSignature" t - --------------------------------------------------------------------------------- --- ToSign --------------------------------------------------------------------------------- - --- | Produces the ByteString that was signed in the block -recoverSignedBytes :: - EpochSlots -> AHeader ByteString -> Annotated ToSign ByteString -recoverSignedBytes es h = Annotated (headerToSign es h) bytes - where - bytes = - BS.concat - [ "\133" - , -- This is the value of Codec.CBOR.Write.toLazyByteString (encodeListLen 5) - -- It is hard coded here because the signed bytes included it as an - -- implementation artifact - (annotation . aHeaderPrevHash) h - , (annotation . aHeaderProof) h - , (annotation . aHeaderSlot) h - , (annotation . aHeaderDifficulty) h - , headerExtraAnnotation h - ] - --- | Data to be signed in 'Block' -data ToSign = ToSign - { tsHeaderHash :: !HeaderHash - -- ^ Hash of previous header in the chain - , tsBodyProof :: !Proof - , tsSlot :: !EpochAndSlotCount - , tsDifficulty :: !ChainDifficulty - , tsProtocolVersion :: !ProtocolVersion - , tsSoftwareVersion :: !SoftwareVersion - } - deriving (Eq, Show, Generic) - -instance ToCBOR ToSign where - toCBOR = toByronCBOR - -instance FromCBOR ToSign where - fromCBOR = fromByronCBOR - -instance EncCBOR ToSign where - encCBOR ts = - encodeListLen 5 - <> encCBOR (tsHeaderHash ts) - <> encCBOR (tsBodyProof ts) - <> encCBOR (tsSlot ts) - <> encCBOR (tsDifficulty ts) - <> encCBORBlockVersions (tsProtocolVersion ts) (tsSoftwareVersion ts) - - encodedSizeExpr size ts = - 1 - + encodedSizeExpr size (tsHeaderHash <$> ts) - + encodedSizeExpr size (tsBodyProof <$> ts) - + encodedSizeExpr size (tsSlot <$> ts) - + encodedSizeExpr size (tsDifficulty <$> ts) - + encCBORBlockVersionsSize (tsProtocolVersion <$> ts) (tsSoftwareVersion <$> ts) - -instance DecCBOR ToSign where - decCBOR = do - enforceSize "ToSign" 5 - fmap uncurry (ToSign <$> decCBOR <*> decCBOR <*> decCBOR <*> decCBOR) - <*> decCBORBlockVersions diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Block/Proof.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Block/Proof.hs deleted file mode 100644 index 2e6eb19cf40..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Block/Proof.hs +++ /dev/null @@ -1,117 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE OverloadedStrings #-} - -module Cardano.Chain.Block.Proof ( - Proof (..), - ProofValidationError (..), - mkProof, - recoverProof, -) -where - -import Cardano.Chain.Block.Body ( - ABody (..), - Body, - bodyDlgPayload, - bodyTxPayload, - bodyUpdatePayload, - ) -import qualified Cardano.Chain.Delegation.Payload as Delegation -import Cardano.Chain.Ssc (SscProof (..)) -import Cardano.Chain.UTxO.TxProof (TxProof, mkTxProof, recoverTxProof) -import qualified Cardano.Chain.Update.Proof as Update -import Cardano.Crypto (Hash, hashDecoded, serializeCborHash) -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - encodeListLen, - enforceSize, - fromByronCBOR, - toByronCBOR, - ) -import Cardano.Prelude -import Data.Aeson (ToJSON) -import Formatting (bprint, build, shown) -import qualified Formatting.Buildable as B -import NoThunks.Class (NoThunks (..)) - --- | Proof of everything contained in the payload -data Proof = Proof - { proofUTxO :: !TxProof - , proofSsc :: !SscProof - , proofDelegation :: !(Hash Delegation.Payload) - , proofUpdate :: !Update.Proof - } - deriving (Eq, Show, Generic, NFData, NoThunks) - -instance B.Buildable Proof where - build proof = - bprint - ("") - (proofUTxO proof) - (proofSsc proof) - (proofDelegation proof) - (proofUpdate proof) - -instance ToCBOR Proof where - toCBOR = toByronCBOR - -instance FromCBOR Proof where - fromCBOR = fromByronCBOR - --- Used for debugging purposes only -instance ToJSON Proof - -instance EncCBOR Proof where - encCBOR bc = - encodeListLen 4 - <> encCBOR (proofUTxO bc) - <> encCBOR (proofSsc bc) - <> encCBOR (proofDelegation bc) - <> encCBOR (proofUpdate bc) - - encodedSizeExpr size bc = - 1 - + encodedSizeExpr size (proofUTxO <$> bc) - + encodedSizeExpr size (proofSsc <$> bc) - + encodedSizeExpr size (proofDelegation <$> bc) - + encodedSizeExpr size (proofUpdate <$> bc) - -instance DecCBOR Proof where - decCBOR = do - enforceSize "Proof" 4 - Proof <$> decCBOR <*> decCBOR <*> decCBOR <*> decCBOR - -mkProof :: Body -> Proof -mkProof body = - Proof - { proofUTxO = mkTxProof $ bodyTxPayload body - , proofSsc = SscProof - , proofDelegation = serializeCborHash $ bodyDlgPayload body - , proofUpdate = Update.mkProof $ bodyUpdatePayload body - } - --- TODO: Should we be using this somewhere? -recoverProof :: ABody ByteString -> Proof -recoverProof body = - Proof - { proofUTxO = recoverTxProof $ bodyTxPayload body - , proofSsc = SscProof - , proofDelegation = hashDecoded $ bodyDlgPayload body - , proofUpdate = Update.recoverProof $ bodyUpdatePayload body - } - --- | Error which can result from attempting to validate an invalid payload --- proof. -data ProofValidationError - = -- | The delegation payload proof did not match - DelegationProofValidationError - | -- | The UTxO payload proof did not match - UTxOProofValidationError - | -- | The update payload proof did not match - UpdateProofValidationError - deriving (Eq, Show) diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Block/Validation.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Block/Validation.hs deleted file mode 100644 index f70166124b3..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Block/Validation.hs +++ /dev/null @@ -1,630 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE DuplicateRecordFields #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE NumDecimals #-} -{-# LANGUAGE OverloadedStrings #-} - -module Cardano.Chain.Block.Validation ( - UPI.adoptedProtocolParameters, - updateBody, - updateChainBlockOrBoundary, - updateChainBoundary, - epochTransition, - headerIsValid, - validateHeaderMatchesBody, - updateBlock, - BodyState (..), - BodyEnvironment (..), - EpochEnvironment (..), - ChainValidationState (..), - initialChainValidationState, - ChainValidationError (..), - - -- * UTxO - HeapSize (..), - UTxOSize (..), - calcUTxOSize, - foldUTxO, - foldUTxOBlock, -) -where - -import Cardano.Chain.Block.Block ( - ABlock (..), - ABlockOrBoundary (..), - ABoundaryBlock (..), - blockAProtocolMagicId, - blockDlgPayload, - blockHashAnnotated, - blockHeader, - blockIssuer, - blockLength, - blockProtocolMagicId, - blockProtocolVersion, - blockSlot, - blockTxPayload, - blockUpdatePayload, - ) -import Cardano.Chain.Block.Body (ABody (..)) -import Cardano.Chain.Block.Header ( - ABoundaryHeader (..), - AHeader (..), - BlockSignature, - HeaderHash, - headerLength, - headerProof, - wrapBoundaryBytes, - ) -import Cardano.Chain.Block.Proof (Proof (..), ProofValidationError (..)) -import Cardano.Chain.Common ( - BlockCount (..), - KeyHash, - hashKey, - ) -import qualified Cardano.Chain.Delegation as Delegation -import qualified Cardano.Chain.Delegation.Validation.Interface as DI -import qualified Cardano.Chain.Delegation.Validation.Scheduling as Scheduling -import Cardano.Chain.Epoch.File (ParseError, mainnetEpochSlots) -import Cardano.Chain.Genesis as Genesis ( - Config (..), - GenesisHash, - GenesisKeyHashes (..), - configEpochSlots, - configGenesisKeyHashes, - configHeavyDelegation, - configK, - configProtocolMagicId, - ) -import Cardano.Chain.ProtocolConstants (kEpochSlots) -import Cardano.Chain.Slotting ( - EpochAndSlotCount (..), - EpochNumber (..), - SlotNumber (..), - fromSlotNumber, - slotNumberEpoch, - ) -import Cardano.Chain.UTxO (ATxPayload (..), UTxO (..), genesisUtxo, recoverTxProof) -import Cardano.Chain.UTxO.UTxOConfiguration (UTxOConfiguration) -import qualified Cardano.Chain.UTxO.Validation as UTxO -import qualified Cardano.Chain.Update as Update -import Cardano.Chain.Update.Validation.Endorsement (Endorsement (..)) -import qualified Cardano.Chain.Update.Validation.Interface as UPI -import Cardano.Chain.ValidationMode ( - ValidationMode, - orThrowErrorInBlockValidationMode, - whenBlockValidation, - wrapErrorWithValidationMode, - ) -import Cardano.Crypto ( - AProtocolMagic (..), - ProtocolMagicId, - VerificationKey, - hashDecoded, - hashRaw, - ) -import Cardano.HeapWords (HeapWords (..)) -import Cardano.Ledger.Binary ( - Annotated (..), - DecCBOR (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - byronProtVer, - encodeListLen, - enforceSize, - fromByronCBOR, - serialize', - toByronCBOR, - ) -import Cardano.Prelude -import Control.Monad.Trans.Resource (ResIO) -import qualified Data.ByteString.Lazy as BSL -import Data.Coerce (coerce) -import qualified Data.Map.Strict as M -import qualified Data.Set as Set -import Formatting.Buildable (Buildable) -import NoThunks.Class (NoThunks (..)) -import Streaming (Of (..), Stream, hoist) -import qualified Streaming.Prelude as S - --------------------------------------------------------------------------------- --- ChainValidationState --------------------------------------------------------------------------------- - -data ChainValidationState = ChainValidationState - { cvsLastSlot :: !SlotNumber - , cvsPreviousHash :: !(Either GenesisHash HeaderHash) - -- ^ GenesisHash for the previous hash of the zeroth boundary block and - -- HeaderHash for all others. - , cvsUtxo :: !UTxO - , cvsUpdateState :: !UPI.State - , cvsDelegationState :: !DI.State - } - deriving (Eq, Show, Generic, NFData, NoThunks) - -instance ToCBOR ChainValidationState where - toCBOR = toByronCBOR - -instance FromCBOR ChainValidationState where - fromCBOR = fromByronCBOR - -instance DecCBOR ChainValidationState where - decCBOR = do - enforceSize "ChainValidationState" 5 - ChainValidationState - <$> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - -instance EncCBOR ChainValidationState where - encCBOR c = - encodeListLen 5 - <> encCBOR (cvsLastSlot c) - <> encCBOR (cvsPreviousHash c) - <> encCBOR (cvsUtxo c) - <> encCBOR (cvsUpdateState c) - <> encCBOR (cvsDelegationState c) - --- | Create the state needed to validate the zeroth epoch of the chain. The --- zeroth epoch starts with a boundary block where the previous hash is the --- genesis hash. -initialChainValidationState :: - MonadError Scheduling.Error m => - Genesis.Config -> - m ChainValidationState -initialChainValidationState config = do - delegationState <- DI.initialState delegationEnv genesisDelegation - pure - $ ChainValidationState - { cvsLastSlot = 0 - , -- Ensure that we don't allow the internal value of this 'Left' to be - -- lazy as we want to ensure that the 'ChainValidationState' is always - -- in normal form. - cvsPreviousHash = Left $! configGenesisHash config - , cvsUtxo = genesisUtxo config - , cvsUpdateState = UPI.initialState config - , cvsDelegationState = delegationState - } - where - delegationEnv = - DI.Environment - { DI.protocolMagic = Annotated pm (serialize' byronProtVer pm) - , DI.allowedDelegators = unGenesisKeyHashes $ configGenesisKeyHashes config - , DI.k = configK config - , DI.currentEpoch = EpochNumber 0 - , DI.currentSlot = SlotNumber 0 - } - - pm = configProtocolMagicId config - - genesisDelegation = configHeavyDelegation config - --------------------------------------------------------------------------------- --- ChainValidationError --------------------------------------------------------------------------------- - -data ChainValidationError - = -- | The size of an epoch boundary block exceeds the limit - ChainValidationBoundaryTooLarge - | -- | The size of a block's attributes is non-zero - ChainValidationBlockAttributesTooLarge - | -- | The size of a regular block exceeds the limit - ChainValidationBlockTooLarge Natural Natural - | -- | The size of a block header's attributes is non-zero - ChainValidationHeaderAttributesTooLarge - | -- | The size of a block header exceeds the limit - ChainValidationHeaderTooLarge Natural Natural - | -- | There is a problem with the delegation payload signature - ChainValidationDelegationPayloadError Text - | -- | The delegation used in the signature is not valid according to the ledger - ChainValidationInvalidDelegation VerificationKey VerificationKey - | -- | Genesis hash mismatch - ChainValidationGenesisHashMismatch GenesisHash GenesisHash - | -- | Expected GenesisHash but got HeaderHash - ChainValidationExpectedGenesisHash GenesisHash HeaderHash - | -- | Expected HeaderHash but GenesisHash - ChainValidationExpectedHeaderHash HeaderHash GenesisHash - | -- | The hash of the previous block does not match the value in the header - ChainValidationInvalidHash HeaderHash HeaderHash - | -- | The hash of the previous block is missing and should be given hash. - ChainValidationMissingHash HeaderHash - | -- | There should not be a hash of the previous but there is. - ChainValidationUnexpectedGenesisHash HeaderHash - | -- | The signature of the block is invalid - ChainValidationInvalidSignature BlockSignature - | -- | A delegation certificate failed validation in the ledger layer - ChainValidationDelegationSchedulingError Scheduling.Error - | -- | The 'ProtocolMagic' in the block doesn't match the configured one - ChainValidationProtocolMagicMismatch ProtocolMagicId ProtocolMagicId - | -- | A block is using unsupported lightweight delegation - ChainValidationSignatureLight - | -- | The delegator for this block has delegated in too many recent blocks - ChainValidationTooManyDelegations VerificationKey - | -- | Something failed to register in the update interface - ChainValidationUpdateError SlotNumber UPI.Error - | -- | A transaction failed validation in the ledger layer - ChainValidationUTxOValidationError UTxO.UTxOValidationError - | -- | A payload proof did not match. - ChainValidationProofValidationError ProofValidationError - deriving (Eq, Show) - --------------------------------------------------------------------------------- --- Validation Functions --------------------------------------------------------------------------------- - -updateChainBlockOrBoundary :: - (MonadError ChainValidationError m, MonadReader ValidationMode m) => - Genesis.Config -> - ChainValidationState -> - ABlockOrBoundary ByteString -> - m ChainValidationState -updateChainBlockOrBoundary config c b = case b of - ABOBBoundary bvd -> updateChainBoundary c bvd - ABOBBlock block -> updateBlock config c block - -updateChainBoundary :: - MonadError ChainValidationError m => - ChainValidationState -> - ABoundaryBlock ByteString -> - m ChainValidationState -updateChainBoundary cvs bvd = do - case (cvsPreviousHash cvs, boundaryPrevHash (boundaryHeader bvd)) of - (Left expected, Left actual) -> - (expected == actual) - `orThrowError` ChainValidationGenesisHashMismatch expected actual - (Right expected, Right actual) -> - (expected == actual) - `orThrowError` ChainValidationInvalidHash expected actual - (Left gh, Right hh) -> - throwError $ ChainValidationExpectedGenesisHash gh hh - (Right hh, Left gh) -> - throwError $ ChainValidationExpectedHeaderHash hh gh - - -- Validate that the block is within the size bounds - (boundaryBlockLength bvd <= 2e6) - `orThrowError` ChainValidationBoundaryTooLarge - - -- Update the previous hash - pure - $ cvs - { cvsPreviousHash = Right $! previousHash - } - where - previousHash :: HeaderHash - previousHash = - coerce - . hashRaw - . BSL.fromStrict - . wrapBoundaryBytes - $ boundaryHeaderAnnotation (boundaryHeader bvd) - -validateHeaderMatchesBody :: - MonadError ProofValidationError m => - AHeader ByteString -> - ABody ByteString -> - m () -validateHeaderMatchesBody hdr body = do - let hdrProof = headerProof hdr - - -- Validate the delegation payload signature - proofDelegation hdrProof - == hashDecoded (bodyDlgPayload body) - `orThrowError` DelegationProofValidationError - - -- Validate the transaction payload proof - proofUTxO hdrProof - == recoverTxProof (bodyTxPayload body) - `orThrowError` UTxOProofValidationError - - -- Validate the update payload proof - proofUpdate hdrProof - == hashDecoded (bodyUpdatePayload body) - `orThrowError` UpdateProofValidationError - -validateBlockProofs :: - MonadError ProofValidationError m => - ABlock ByteString -> - m () -validateBlockProofs b = - validateHeaderMatchesBody blockHeader blockBody - where - ABlock - { blockHeader - , blockBody - } = b - -data BodyEnvironment = BodyEnvironment - { protocolMagic :: !(AProtocolMagic ByteString) - , utxoConfiguration :: !UTxOConfiguration - , k :: !BlockCount - , allowedDelegators :: !(Set KeyHash) - , protocolParameters :: !Update.ProtocolParameters - , currentEpoch :: !EpochNumber - } - -data BodyState = BodyState - { utxo :: !UTxO - , updateState :: !UPI.State - , delegationState :: !DI.State - } - --- | This is an implementation of the BBODY rule as per the chain specification. --- --- Compared to `updateChain`, this does not validate any header level checks, --- nor does it carry out anything which might be considered part of the --- protocol. -updateBody :: - (MonadError ChainValidationError m, MonadReader ValidationMode m) => - BodyEnvironment -> - BodyState -> - ABlock ByteString -> - m BodyState -updateBody env bs b = do - -- Validate the block size - blockLength b - <= maxBlockSize - `orThrowErrorInBlockValidationMode` ChainValidationBlockTooLarge maxBlockSize (blockLength b) - - -- Validate the delegation, transaction, and update payload proofs. - whenBlockValidation (validateBlockProofs b) - `wrapErrorWithValidationMode` ChainValidationProofValidationError - - -- Update the delegation state - delegationState' <- - DI.updateDelegation delegationEnv delegationState certificates - `wrapError` ChainValidationDelegationSchedulingError - - -- Update the UTxO - utxo' <- - UTxO.updateUTxO utxoEnv utxo txs - `wrapErrorWithValidationMode` ChainValidationUTxOValidationError - - -- Update the update state - updateState' <- - UPI.registerUpdate updateEnv updateState updateSignal - `wrapError` ChainValidationUpdateError currentSlot - - pure - $ BodyState - { utxo = utxo' - , updateState = updateState' - , delegationState = delegationState' - } - where - BodyEnvironment - { protocolMagic - , k - , allowedDelegators - , utxoConfiguration - , currentEpoch - } = env - - BodyState {utxo, updateState, delegationState} = bs - - maxBlockSize = - Update.ppMaxBlockSize $ UPI.adoptedProtocolParameters updateState - - currentSlot = blockSlot b - - certificates = Delegation.getPayload $ blockDlgPayload b - - txs = aUnTxPayload $ blockTxPayload b - - delegationEnv = - DI.Environment - { DI.protocolMagic = getAProtocolMagicId protocolMagic - , DI.allowedDelegators = allowedDelegators - , DI.k = k - , DI.currentEpoch = currentEpoch - , DI.currentSlot = currentSlot - } - - utxoEnv = - UTxO.Environment - { UTxO.protocolMagic = protocolMagic - , UTxO.protocolParameters = UPI.adoptedProtocolParameters updateState - , UTxO.utxoConfiguration = utxoConfiguration - } - - updateEnv = - UPI.Environment - { UPI.protocolMagic = getAProtocolMagicId protocolMagic - , UPI.k = k - , UPI.currentSlot = currentSlot - , UPI.numGenKeys = toNumGenKeys $ Set.size allowedDelegators - , UPI.delegationMap = DI.delegationMap delegationState - } - updateSignal = UPI.Signal updateProposal updateVotes updateEndorsement - - updateProposal = Update.payloadProposal $ blockUpdatePayload b - updateVotes = Update.payloadVotes $ blockUpdatePayload b - updateEndorsement = - Endorsement (blockProtocolVersion b) (hashKey $ blockIssuer b) - -toNumGenKeys :: Integral n => n -> Word8 -toNumGenKeys n - | n > fromIntegral (maxBound :: Word8) = panic "updateBody: Too many genesis keys" - | otherwise = fromIntegral n - --- | This is an implementation of the headerIsValid function from the Byron --- chain specification -headerIsValid :: - (MonadError ChainValidationError m, MonadReader ValidationMode m) => - UPI.State -> - AHeader ByteString -> - m () -headerIsValid updateState h = - -- Validate the header size - headerLength h - <= maxHeaderSize - `orThrowErrorInBlockValidationMode` ChainValidationHeaderTooLarge maxHeaderSize (headerLength h) - where - maxHeaderSize = Update.ppMaxHeaderSize $ UPI.adoptedProtocolParameters updateState - -data EpochEnvironment = EpochEnvironment - { protocolMagic :: !(Annotated ProtocolMagicId ByteString) - , k :: !BlockCount - , allowedDelegators :: !(Set KeyHash) - , delegationMap :: !Delegation.Map - , currentEpoch :: !EpochNumber - } - --- | Perform epoch transition if we have moved across the epoch boundary --- --- We pass through to the update interface UPIEC rule, which adopts any --- confirmed proposals and cleans up the state. This corresponds to the EPOCH --- rules from the Byron chain specification. -epochTransition :: - EpochEnvironment -> - UPI.State -> - SlotNumber -> - UPI.State -epochTransition env st slot = - if nextEpoch > currentEpoch - then UPI.registerEpoch updateEnv st nextEpoch - else st - where - EpochEnvironment {protocolMagic, k, allowedDelegators, delegationMap, currentEpoch} = - env - - nextEpoch = slotNumberEpoch (kEpochSlots k) slot - - updateEnv = - UPI.Environment - { UPI.protocolMagic = protocolMagic - , UPI.k = k - , UPI.currentSlot = slot - , UPI.numGenKeys = toNumGenKeys $ Set.size allowedDelegators - , UPI.delegationMap = delegationMap - } - --- | This represents the CHAIN rule. It is intended more for use in tests than --- in a real implementation, which will want to invoke its constituent rules --- directly. --- --- Note that this also updates the previous block hash, which would usually be --- done as part of the PBFT rule. -updateBlock :: - (MonadError ChainValidationError m, MonadReader ValidationMode m) => - Genesis.Config -> - ChainValidationState -> - ABlock ByteString -> - m ChainValidationState -updateBlock config cvs b = do - -- Compare the block's 'ProtocolMagic' to the configured value - blockProtocolMagicId b - == configProtocolMagicId config - `orThrowErrorInBlockValidationMode` ChainValidationProtocolMagicMismatch - (blockProtocolMagicId b) - (configProtocolMagicId config) - - -- Process a potential epoch transition - let updateState' = epochTransition epochEnv (cvsUpdateState cvs) (blockSlot b) - - -- Process header by checking its validity - headerIsValid updateState' (blockHeader b) - - let bodyEnv = - BodyEnvironment - { protocolMagic = - AProtocolMagic - (blockAProtocolMagicId b) - (configReqNetMagic config) - , k = configK config - , allowedDelegators - , protocolParameters = UPI.adoptedProtocolParameters updateState' - , utxoConfiguration = Genesis.configUTxOConfiguration config - , currentEpoch = slotNumberEpoch (configEpochSlots config) (blockSlot b) - } - - bs = - BodyState - { utxo = cvsUtxo cvs - , updateState = updateState' - , delegationState = cvsDelegationState cvs - } - - BodyState {utxo, updateState, delegationState} <- updateBody bodyEnv bs b - - pure - $ cvs - { cvsLastSlot = blockSlot b - , cvsPreviousHash = Right $! blockHashAnnotated b - , cvsUtxo = utxo - , cvsUpdateState = updateState - , cvsDelegationState = delegationState - } - where - epochEnv = - EpochEnvironment - { protocolMagic = blockAProtocolMagicId b - , k = configK config - , allowedDelegators - , delegationMap - , currentEpoch = slotNumberEpoch (configEpochSlots config) (cvsLastSlot cvs) - } - - allowedDelegators :: Set KeyHash - allowedDelegators = unGenesisKeyHashes $ configGenesisKeyHashes config - - delegationMap = DI.delegationMap $ cvsDelegationState cvs - --------------------------------------------------------------------------------- --- UTxO --------------------------------------------------------------------------------- - -data Error - = ErrorParseError ParseError - | ErrorUTxOValidationError EpochAndSlotCount UTxO.UTxOValidationError - deriving (Eq, Show) - --- | Fold transaction validation over a 'Stream' of 'Block's -foldUTxO :: - UTxO.Environment -> - UTxO -> - Stream (Of (ABlock ByteString)) (ExceptT ParseError ResIO) () -> - ExceptT Error (ReaderT ValidationMode ResIO) UTxO -foldUTxO env utxo blocks = - S.foldM_ - (foldUTxOBlock env) - (pure utxo) - pure - (pure (hoist (withExceptT ErrorParseError) blocks)) - --- | Fold 'updateUTxO' over the transactions in a single 'Block' -foldUTxOBlock :: - UTxO.Environment -> - UTxO -> - ABlock ByteString -> - ExceptT Error (ReaderT ValidationMode ResIO) UTxO -foldUTxOBlock env utxo block = - withExceptT - ( ErrorUTxOValidationError - . fromSlotNumber mainnetEpochSlots - $ blockSlot - block - ) - $ UTxO.updateUTxO env utxo (aUnTxPayload $ blockTxPayload block) - --- | Size of a heap value, in words -newtype HeapSize a = HeapSize {unHeapSize :: Int} - deriving (Show) - deriving newtype (Buildable) - --- | Number of entries in the UTxO -newtype UTxOSize = UTxOSize {unUTxOSize :: Int} - deriving (Show) - deriving newtype (Buildable) - -calcUTxOSize :: UTxO -> (HeapSize UTxO, UTxOSize) -calcUTxOSize utxo = - ( HeapSize . heapWords $ unUTxO utxo - , UTxOSize . M.size $ unUTxO utxo - ) diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Block/ValidationMode.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Block/ValidationMode.hs deleted file mode 100644 index c31c828d819..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Block/ValidationMode.hs +++ /dev/null @@ -1,27 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} - -module Cardano.Chain.Block.ValidationMode ( - BlockValidationMode (..), - toTxValidationMode, -) -where - -import Cardano.Chain.UTxO.ValidationMode (TxValidationMode (..)) -import Cardano.Prelude - --------------------------------------------------------------------------------- --- BlockValidationMode --------------------------------------------------------------------------------- - --- | Indicates what sort of block validation should be performed. -data BlockValidationMode - = -- | Perform all block validations. - BlockValidation - | -- | Perform no block validations. - NoBlockValidation - deriving (Eq, Show) - --- | Translate a 'BlockValidationMode' to an appropriate 'TxValidationMode'. -toTxValidationMode :: BlockValidationMode -> TxValidationMode -toTxValidationMode BlockValidation = TxValidation -toTxValidationMode NoBlockValidation = NoTxValidation diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Byron/API.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Byron/API.hs deleted file mode 100644 index 8856afe5799..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Byron/API.hs +++ /dev/null @@ -1,29 +0,0 @@ --- | Auxiliary definitions to make working with the Byron ledger easier -module Cardano.Chain.Byron.API ( - -- * Extract info from chain state - getDelegationMap, - getMaxBlockSize, - - -- * Applying blocks - module Cardano.Chain.Byron.API.Validation, - - -- * Applying transactions - module Cardano.Chain.Byron.API.Mempool, - - -- * Protocol - module Cardano.Chain.Byron.API.Protocol, - - -- * Annotations - reAnnotateBlock, - reAnnotateBoundary, - reAnnotateUsing, - - -- * Headers - abobMatchesBody, -) -where - -import Cardano.Chain.Byron.API.Common -import Cardano.Chain.Byron.API.Mempool -import Cardano.Chain.Byron.API.Protocol -import Cardano.Chain.Byron.API.Validation diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Byron/API/Common.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Byron/API/Common.hs deleted file mode 100644 index 34c9f484ffc..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Byron/API/Common.hs +++ /dev/null @@ -1,160 +0,0 @@ -{-# LANGUAGE DisambiguateRecordFields #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilies #-} - -module Cardano.Chain.Byron.API.Common ( - -- * Extract info from genesis config - allowedDelegators, - - -- * Extract info from chain state - getDelegationMap, - getProtocolParams, - getMaxBlockSize, - - -- * Annotations - reAnnotateBlock, - reAnnotateBoundary, - reAnnotateMagic, - reAnnotateMagicId, - reAnnotateUsing, - - -- * Headers - abobMatchesBody, -) -where - -import qualified Cardano.Chain.Block as CC -import qualified Cardano.Chain.Common as CC -import qualified Cardano.Chain.Delegation as Delegation -import qualified Cardano.Chain.Delegation.Validation.Interface as D.Iface -import qualified Cardano.Chain.Genesis as Gen -import qualified Cardano.Chain.Slotting as CC -import qualified Cardano.Chain.Update as Update -import qualified Cardano.Chain.Update.Validation.Interface as U.Iface -import Cardano.Crypto.ProtocolMagic -import Cardano.Ledger.Binary -import Cardano.Prelude -import qualified Codec.CBOR.Read as CBOR -import qualified Codec.CBOR.Write as CBOR -import qualified Data.ByteString.Lazy as Lazy -import qualified Data.Text as T - -{------------------------------------------------------------------------------- - Extract info from genesis config --------------------------------------------------------------------------------} - -allowedDelegators :: Gen.Config -> Set CC.KeyHash -allowedDelegators = - Gen.unGenesisKeyHashes - . Gen.configGenesisKeyHashes - -{------------------------------------------------------------------------------- - Extract info from chain state --------------------------------------------------------------------------------} - -getDelegationMap :: CC.ChainValidationState -> Delegation.Map -getDelegationMap = - D.Iface.delegationMap - . CC.cvsDelegationState - -getProtocolParams :: CC.ChainValidationState -> Update.ProtocolParameters -getProtocolParams = - U.Iface.adoptedProtocolParameters - . CC.cvsUpdateState - -getMaxBlockSize :: CC.ChainValidationState -> Word32 -getMaxBlockSize = - fromIntegral - . Update.ppMaxBlockSize - . getProtocolParams - -{------------------------------------------------------------------------------- - Annotations --------------------------------------------------------------------------------} - -reAnnotateMagicId :: ProtocolMagicId -> Annotated ProtocolMagicId ByteString -reAnnotateMagicId pmi = reAnnotate byronProtVer $ Annotated pmi () - -reAnnotateMagic :: ProtocolMagic -> AProtocolMagic ByteString -reAnnotateMagic (AProtocolMagic a b) = AProtocolMagic (reAnnotate byronProtVer a) b - -reAnnotateBlock :: CC.EpochSlots -> CC.ABlock () -> CC.ABlock ByteString -reAnnotateBlock epochSlots = - reAnnotateUsing - (CC.encCBORBlock epochSlots) - (CC.decCBORABlock epochSlots) - -reAnnotateBoundary :: - ProtocolMagicId -> - CC.ABoundaryBlock () -> - CC.ABoundaryBlock ByteString -reAnnotateBoundary pm = - reAnnotateUsing - (CC.encCBORABoundaryBlock pm) - CC.decCBORABoundaryBlock - --- | Generalization of 'reAnnotate' -reAnnotateUsing :: - forall f a. - Functor f => - (f a -> Encoding) -> - (forall s. Decoder s (f ByteSpan)) -> - f a -> - f ByteString -reAnnotateUsing encoder decoder = - (\bs -> splice bs $ CBOR.deserialiseFromBytes (toPlainDecoder byronProtVer decoder) bs) - . CBOR.toLazyByteString - . toPlainEncoding byronProtVer - . encoder - where - splice :: - Show err => - Lazy.ByteString -> - Either err (Lazy.ByteString, f ByteSpan) -> - f ByteString - splice bs (Right (left, fSpan)) - | Lazy.null left = Lazy.toStrict . slice bs <$> fSpan - | otherwise = roundtripFailure "leftover bytes" - splice _ (Left err) = roundtripFailure $ show err - - roundtripFailure :: forall x. T.Text -> x - roundtripFailure err = - panic - $ T.intercalate - ": " - [ "annotateBoundary" - , "serialization roundtrip failure" - , show err - ] - -{------------------------------------------------------------------------------- - Header of a regular block or EBB - - The ledger layer defines 'ABlockOrBoundary', but no equivalent for headers. --------------------------------------------------------------------------------} - --- | Check if a block matches its header --- --- For EBBs, we're currently being more permissive here and not performing any --- header-body validation but only checking whether an EBB header and EBB block --- were provided. This seems to be fine as it won't cause any loss of consensus --- with the old `cardano-sl` nodes. -abobMatchesBody :: - CC.ABlockOrBoundaryHdr ByteString -> - CC.ABlockOrBoundary ByteString -> - Bool -abobMatchesBody hdr blk = - case (hdr, blk) of - (CC.ABOBBlockHdr hdr', CC.ABOBBlock blk') -> matchesBody hdr' blk' - (CC.ABOBBoundaryHdr _, CC.ABOBBoundary _) -> True - (CC.ABOBBlockHdr _, CC.ABOBBoundary _) -> False - (CC.ABOBBoundaryHdr _, CC.ABOBBlock _) -> False - where - matchesBody :: CC.AHeader ByteString -> CC.ABlock ByteString -> Bool - matchesBody hdr' blk' = - isRight - $ CC.validateHeaderMatchesBody hdr' (CC.blockBody blk') diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Byron/API/Mempool.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Byron/API/Mempool.hs deleted file mode 100644 index 86acb699f1d..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Byron/API/Mempool.hs +++ /dev/null @@ -1,261 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} - -module Cardano.Chain.Byron.API.Mempool ( - ApplyMempoolPayloadErr (..), - applyMempoolPayload, - mempoolPayloadRecoverBytes, - mempoolPayloadReencode, -) -where - -import qualified Cardano.Chain.Block as CC -import Cardano.Chain.Byron.API.Common -import qualified Cardano.Chain.Delegation as Delegation -import qualified Cardano.Chain.Delegation.Validation.Interface as D.Iface -import qualified Cardano.Chain.Delegation.Validation.Scheduling as D.Sched -import qualified Cardano.Chain.Genesis as Gen -import qualified Cardano.Chain.MempoolPayload as CC -import qualified Cardano.Chain.Slotting as CC -import qualified Cardano.Chain.UTxO as Utxo -import qualified Cardano.Chain.Update as Update -import qualified Cardano.Chain.Update.Validation.Interface as U.Iface -import qualified Cardano.Chain.ValidationMode as CC -import Cardano.Crypto.ProtocolMagic -import Cardano.Ledger.Binary -import Cardano.Prelude hiding (cborError) -import qualified Codec.CBOR.Write as CBOR -import qualified Data.Set as Set - -{------------------------------------------------------------------------------- - Apply any kind of transactions --------------------------------------------------------------------------------} - --- | Errors that arise from applying an arbitrary mempool payload --- --- Although @cardano-legder@ defines 'MempoolPayload', it does not define a --- corresponding error type. We could 'ChainValidationError', but it's too --- large, which is problematic because we actually sent encoded versions of --- these errors across the wire. -data ApplyMempoolPayloadErr - = MempoolTxErr Utxo.UTxOValidationError - | MempoolDlgErr D.Sched.Error - | MempoolUpdateProposalErr U.Iface.Error - | MempoolUpdateVoteErr U.Iface.Error - deriving (Eq, Show) - -instance ToCBOR ApplyMempoolPayloadErr where - toCBOR = toByronCBOR - -instance FromCBOR ApplyMempoolPayloadErr where - fromCBOR = fromByronCBOR - -instance EncCBOR ApplyMempoolPayloadErr where - encCBOR (MempoolTxErr err) = - encodeListLen 2 <> encCBOR (0 :: Word8) <> encCBOR err - encCBOR (MempoolDlgErr err) = - encodeListLen 2 <> encCBOR (1 :: Word8) <> encCBOR err - encCBOR (MempoolUpdateProposalErr err) = - encodeListLen 2 <> encCBOR (2 :: Word8) <> encCBOR err - encCBOR (MempoolUpdateVoteErr err) = - encodeListLen 2 <> encCBOR (3 :: Word8) <> encCBOR err - -instance DecCBOR ApplyMempoolPayloadErr where - decCBOR = do - enforceSize "ApplyMempoolPayloadErr" 2 - decodeWord8 >>= \case - 0 -> MempoolTxErr <$> decCBOR - 1 -> MempoolDlgErr <$> decCBOR - 2 -> MempoolUpdateProposalErr <$> decCBOR - 3 -> MempoolUpdateVoteErr <$> decCBOR - tag -> cborError $ DecoderErrorUnknownTag "ApplyMempoolPayloadErr" tag - -applyMempoolPayload :: - MonadError ApplyMempoolPayloadErr m => - CC.ValidationMode -> - Gen.Config -> - CC.SlotNumber -> - CC.AMempoolPayload ByteString -> - CC.ChainValidationState -> - m CC.ChainValidationState -applyMempoolPayload validationMode cfg currentSlot payload = - case payload of - CC.MempoolTx tx -> - (`wrapError` MempoolTxErr) - . applyTxAux validationMode cfg [tx] - CC.MempoolDlg cert -> - (`wrapError` MempoolDlgErr) - . applyCertificate cfg currentSlot [cert] - CC.MempoolUpdateProposal proposal -> - (`wrapError` MempoolUpdateProposalErr) - . applyUpdateProposal cfg currentSlot proposal - CC.MempoolUpdateVote vote -> - (`wrapError` MempoolUpdateVoteErr) - . applyUpdateVote cfg currentSlot vote - --- | The encoding of the mempool payload (without a 'AMempoolPayload' envelope) -mempoolPayloadRecoverBytes :: CC.AMempoolPayload ByteString -> ByteString -mempoolPayloadRecoverBytes = go - where - go :: CC.AMempoolPayload ByteString -> ByteString - go (CC.MempoolTx payload) = recoverBytes payload - go (CC.MempoolDlg payload) = recoverBytes payload - go (CC.MempoolUpdateProposal payload) = recoverBytes payload - go (CC.MempoolUpdateVote payload) = recoverBytes payload - --- | Re-encode the mempool payload (without any envelope) -mempoolPayloadReencode :: CC.AMempoolPayload a -> ByteString -mempoolPayloadReencode = go - where - go :: forall a. CC.AMempoolPayload a -> ByteString - go (CC.MempoolTx payload) = reencode payload - go (CC.MempoolDlg payload) = reencode payload - go (CC.MempoolUpdateProposal payload) = reencode payload - go (CC.MempoolUpdateVote payload) = reencode payload - - reencode :: (Functor f, EncCBOR (f ())) => f a -> ByteString - reencode = CBOR.toStrictByteString . toPlainEncoding byronProtVer . encCBOR . void - -{------------------------------------------------------------------------------- - Applying transactions --------------------------------------------------------------------------------} - -mkUtxoEnvironment :: - Gen.Config -> - CC.ChainValidationState -> - Utxo.Environment -mkUtxoEnvironment cfg cvs = - Utxo.Environment - { Utxo.protocolMagic = protocolMagic - , Utxo.protocolParameters = U.Iface.adoptedProtocolParameters updateState - , Utxo.utxoConfiguration = Gen.configUTxOConfiguration cfg - } - where - protocolMagic = reAnnotateMagic (Gen.configProtocolMagic cfg) - updateState = CC.cvsUpdateState cvs - -mkDelegationEnvironment :: - Gen.Config -> - CC.SlotNumber -> - D.Iface.Environment -mkDelegationEnvironment cfg currentSlot = - D.Iface.Environment - { D.Iface.protocolMagic = getAProtocolMagicId protocolMagic - , D.Iface.allowedDelegators = allowedDelegators cfg - , D.Iface.k = k - , -- The @currentSlot@/@currentEpoch@ for checking a delegation certificate - -- must be that of the block in which the delegation certificate is/will - -- be included. - D.Iface.currentEpoch = currentEpoch - , D.Iface.currentSlot = currentSlot - } - where - k = Gen.configK cfg - protocolMagic = reAnnotateMagic (Gen.configProtocolMagic cfg) - currentEpoch = CC.slotNumberEpoch (Gen.configEpochSlots cfg) currentSlot - -mkUpdateEnvironment :: - Gen.Config -> - CC.SlotNumber -> - Delegation.Map -> - U.Iface.Environment -mkUpdateEnvironment cfg currentSlot delegationMap = - U.Iface.Environment - { U.Iface.protocolMagic = getAProtocolMagicId protocolMagic - , U.Iface.k = k - , U.Iface.currentSlot = currentSlot - , U.Iface.numGenKeys = numGenKeys - , U.Iface.delegationMap = delegationMap - } - where - k = Gen.configK cfg - protocolMagic = reAnnotateMagic (Gen.configProtocolMagic cfg) - numGenKeys = toNumGenKeys $ Set.size (allowedDelegators cfg) - - toNumGenKeys :: Int -> Word8 - toNumGenKeys n - | n > fromIntegral (maxBound :: Word8) = - panic "toNumGenKeys: Too many genesis keys" - | otherwise = fromIntegral n - -applyTxAux :: - MonadError Utxo.UTxOValidationError m => - CC.ValidationMode -> - Gen.Config -> - [Utxo.ATxAux ByteString] -> - CC.ChainValidationState -> - m CC.ChainValidationState -applyTxAux validationMode cfg txs cvs = - flip runReaderT validationMode - $ (`setUTxO` cvs) - <$> Utxo.updateUTxO utxoEnv utxo txs - where - utxoEnv = mkUtxoEnvironment cfg cvs - utxo = CC.cvsUtxo cvs - -applyCertificate :: - MonadError D.Sched.Error m => - Gen.Config -> - CC.SlotNumber -> - [Delegation.ACertificate ByteString] -> - CC.ChainValidationState -> - m CC.ChainValidationState -applyCertificate cfg currentSlot certs cvs = - (`setDelegationState` cvs) - <$> D.Iface.updateDelegation dlgEnv dlgState certs - where - dlgEnv = mkDelegationEnvironment cfg currentSlot - dlgState = CC.cvsDelegationState cvs - -applyUpdateProposal :: - MonadError U.Iface.Error m => - Gen.Config -> - CC.SlotNumber -> - Update.AProposal ByteString -> - CC.ChainValidationState -> - m CC.ChainValidationState -applyUpdateProposal cfg currentSlot proposal cvs = - (`setUpdateState` cvs) - <$> U.Iface.registerProposal updateEnv updateState proposal - where - updateEnv = mkUpdateEnvironment cfg currentSlot (getDelegationMap cvs) - updateState = CC.cvsUpdateState cvs - -applyUpdateVote :: - MonadError U.Iface.Error m => - Gen.Config -> - CC.SlotNumber -> - Update.AVote ByteString -> - CC.ChainValidationState -> - m CC.ChainValidationState -applyUpdateVote cfg currentSlot vote cvs = - (`setUpdateState` cvs) - <$> U.Iface.registerVote updateEnv updateState vote - where - updateEnv = mkUpdateEnvironment cfg currentSlot (getDelegationMap cvs) - updateState = CC.cvsUpdateState cvs - -{------------------------------------------------------------------------------- - Update parts of the chain state --------------------------------------------------------------------------------} - -setUTxO :: - Utxo.UTxO -> - CC.ChainValidationState -> - CC.ChainValidationState -setUTxO newUTxO cvs = cvs {CC.cvsUtxo = newUTxO} - -setDelegationState :: - D.Iface.State -> - CC.ChainValidationState -> - CC.ChainValidationState -setDelegationState newDlg cvs = cvs {CC.cvsDelegationState = newDlg} - -setUpdateState :: - U.Iface.State -> - CC.ChainValidationState -> - CC.ChainValidationState -setUpdateState newUpdate cvs = cvs {CC.cvsUpdateState = newUpdate} diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Byron/API/Protocol.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Byron/API/Protocol.hs deleted file mode 100644 index a6e9d87d454..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Byron/API/Protocol.hs +++ /dev/null @@ -1,20 +0,0 @@ -module Cardano.Chain.Byron.API.Protocol ( - previewDelegationMap, -) -where - -import qualified Cardano.Chain.Block as CC -import qualified Cardano.Chain.Delegation as Delegation -import qualified Cardano.Chain.Delegation.Validation.Interface as D.Iface -import qualified Cardano.Chain.Slotting as CC -import Cardano.Prelude - --- | Preview the delegation map at a slot assuming no new delegations are --- | scheduled. -previewDelegationMap :: - CC.SlotNumber -> - CC.ChainValidationState -> - Delegation.Map -previewDelegationMap slot cvs = - let ds = D.Iface.activateDelegations slot $ CC.cvsDelegationState cvs - in D.Iface.delegationMap ds diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Byron/API/Validation.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Byron/API/Validation.hs deleted file mode 100644 index a08a7c9ba0e..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Byron/API/Validation.hs +++ /dev/null @@ -1,201 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveFunctor #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DisambiguateRecordFields #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - --- | Auxiliary definitions to make working with the Byron ledger easier -module Cardano.Chain.Byron.API.Validation ( - applyChainTick, - validateBlock, - validateBoundary, -) -where - -import qualified Cardano.Chain.Block as CC -import Cardano.Chain.Byron.API.Common -import qualified Cardano.Chain.Delegation as Delegation -import qualified Cardano.Chain.Delegation.Validation.Interface as D.Iface -import qualified Cardano.Chain.Genesis as Gen -import qualified Cardano.Chain.Slotting as CC -import qualified Cardano.Chain.Update as Update -import qualified Cardano.Chain.Update.Validation.Interface as U.Iface -import qualified Cardano.Chain.ValidationMode as CC -import Cardano.Prelude - -{------------------------------------------------------------------------------- - Applying blocks --------------------------------------------------------------------------------} - -mkEpochEnvironment :: - Gen.Config -> - CC.ChainValidationState -> - CC.EpochEnvironment -mkEpochEnvironment cfg cvs = - CC.EpochEnvironment - { CC.protocolMagic = - reAnnotateMagicId - $ Gen.configProtocolMagicId cfg - , CC.k = Gen.configK cfg - , CC.allowedDelegators = allowedDelegators cfg - , CC.delegationMap = delegationMap - , -- The 'currentEpoch' required by the epoch environment is the /old/ - -- epoch (i.e., the one in the ledger state), so that we can verify that - -- the new epoch indeed is after the old. - CC.currentEpoch = - CC.slotNumberEpoch - (Gen.configEpochSlots cfg) - (CC.cvsLastSlot cvs) - } - where - delegationMap :: Delegation.Map - delegationMap = D.Iface.delegationMap $ CC.cvsDelegationState cvs - -mkBodyState :: CC.ChainValidationState -> CC.BodyState -mkBodyState cvs = - CC.BodyState - { CC.utxo = CC.cvsUtxo cvs - , CC.updateState = CC.cvsUpdateState cvs - , CC.delegationState = CC.cvsDelegationState cvs - } - -mkBodyEnvironment :: - Gen.Config -> - Update.ProtocolParameters -> - CC.SlotNumber -> - CC.BodyEnvironment -mkBodyEnvironment cfg params slotNo = - CC.BodyEnvironment - { CC.protocolMagic = reAnnotateMagic $ Gen.configProtocolMagic cfg - , CC.utxoConfiguration = Gen.configUTxOConfiguration cfg - , CC.k = Gen.configK cfg - , CC.allowedDelegators = allowedDelegators cfg - , CC.protocolParameters = params - , -- The 'currentEpoch' for validating a block should be the /current/ - -- epoch (that is, the epoch of the block), /not/ the old epoch - -- (from the ledger state). This is to make sure delegation certificates - -- are for the /next/ epoch. - CC.currentEpoch = - CC.slotNumberEpoch - (Gen.configEpochSlots cfg) - slotNo - } - --- | Apply chain tick --- --- This is the part of block processing that depends only on the slot number of --- the block: We update --- --- * The update state --- * The delegation state --- * The last applied slot number --- --- NOTE: The spec currently only updates the update state here; this is not good --- enough. Fortunately, updating the delegation state and slot number here --- (currently done in body processing) is at least /conform/ spec, as these --- updates are conform spec. See --- --- --- -applyChainTick :: - Gen.Config -> - CC.SlotNumber -> - CC.ChainValidationState -> - CC.ChainValidationState -applyChainTick cfg slotNo cvs = - cvs - { CC.cvsUpdateState = - CC.epochTransition - (mkEpochEnvironment cfg cvs) - (CC.cvsUpdateState cvs) - slotNo - , CC.cvsDelegationState = - D.Iface.tickDelegation - currentEpoch - slotNo - (CC.cvsDelegationState cvs) - } - where - currentEpoch = CC.slotNumberEpoch (Gen.configEpochSlots cfg) slotNo - --- | Validate header --- --- NOTE: Header validation does not produce any state changes; the only state --- changes arising from processing headers come from 'applyChainTick'. -validateHeader :: - MonadError CC.ChainValidationError m => - CC.ValidationMode -> - U.Iface.State -> - CC.AHeader ByteString -> - m () -validateHeader validationMode updState hdr = - flip runReaderT validationMode - $ CC.headerIsValid updState hdr - -validateBody :: - MonadError CC.ChainValidationError m => - CC.ValidationMode -> - CC.ABlock ByteString -> - CC.BodyEnvironment -> - CC.BodyState -> - m CC.BodyState -validateBody validationMode block bodyEnv bodyState = - flip runReaderT validationMode - $ CC.updateBody bodyEnv bodyState block - -validateBlock :: - MonadError CC.ChainValidationError m => - Gen.Config -> - CC.ValidationMode -> - CC.ABlock ByteString -> - CC.HeaderHash -> - CC.ChainValidationState -> - m CC.ChainValidationState -validateBlock cfg validationMode block blkHash cvs = do - validateHeader validationMode updState (CC.blockHeader block) - bodyState' <- validateBody validationMode block bodyEnv bodyState - return - cvs - { CC.cvsLastSlot = CC.blockSlot block - , CC.cvsPreviousHash = Right $! blkHash - , CC.cvsUtxo = CC.utxo bodyState' - , CC.cvsUpdateState = CC.updateState bodyState' - , CC.cvsDelegationState = CC.delegationState bodyState' - } - where - updState = CC.cvsUpdateState cvs - bodyEnv = - mkBodyEnvironment - cfg - (getProtocolParams cvs) - (CC.blockSlot block) - bodyState = mkBodyState cvs - --- | Apply a boundary block --- --- NOTE: The `cvsLastSlot` calculation must match the one in 'abobHdrSlotNo'. -validateBoundary :: - MonadError CC.ChainValidationError m => - Gen.Config -> - CC.ABoundaryBlock ByteString -> - CC.ChainValidationState -> - m CC.ChainValidationState -validateBoundary cfg blk cvs = do - -- TODO: Unfortunately, 'updateChainBoundary' doesn't take a hash as an - -- argument but recomputes it. - cvs' <- CC.updateChainBoundary cvs blk - return - cvs' - { CC.cvsLastSlot = CC.boundaryBlockSlot epochSlots (CC.boundaryEpoch hdr) - } - where - hdr = CC.boundaryHeader blk - epochSlots = Gen.configEpochSlots cfg diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Common.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Common.hs deleted file mode 100644 index 2d65f88a662..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Common.hs +++ /dev/null @@ -1,21 +0,0 @@ -module Cardano.Chain.Common ( - module X, -) -where - -import Cardano.Chain.Common.AddrAttributes as X -import Cardano.Chain.Common.AddrSpendingData as X -import Cardano.Chain.Common.Address as X -import Cardano.Chain.Common.AddressHash as X -import Cardano.Chain.Common.Attributes as X -import Cardano.Chain.Common.BlockCount as X -import Cardano.Chain.Common.CBOR as X -import Cardano.Chain.Common.ChainDifficulty as X -import Cardano.Chain.Common.Compact as X -import Cardano.Chain.Common.KeyHash as X -import Cardano.Chain.Common.Lovelace as X -import Cardano.Chain.Common.LovelacePortion as X -import Cardano.Chain.Common.Merkle as X -import Cardano.Chain.Common.NetworkMagic as X -import Cardano.Chain.Common.TxFeePolicy as X -import Cardano.Chain.Common.TxSizeLinear as X diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Common/AddrAttributes.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Common/AddrAttributes.hs deleted file mode 100644 index aa4c791da84..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Common/AddrAttributes.hs +++ /dev/null @@ -1,180 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE OverloadedStrings #-} - -module Cardano.Chain.Common.AddrAttributes ( - AddrAttributes (..), - HDAddressPayload (..), -) -where - -import Cardano.Chain.Common.Attributes ( - Attributes (..), - decCBORAttributes, - encCBORAttributes, - ) -import Cardano.Chain.Common.NetworkMagic (NetworkMagic (..)) -import Cardano.HeapWords (HeapWords (..)) -import Cardano.Ledger.Binary ( - DecCBOR (..), - Decoder, - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - byronProtVer, - decodeBytesCanonical, - decodeFull, - decodeFullDecoder, - decodeWord32Canonical, - fromByronCBOR, - serialize, - toByronCBOR, - toCborError, - ) -import Cardano.Prelude hiding (toCborError) -import Data.Aeson (ToJSON (..), object, (.=)) -import qualified Data.ByteString.Char8 as Char8 -import Data.Text.Lazy.Builder (Builder) -import Formatting (bprint, builder) -import qualified Formatting.Buildable as B -import NoThunks.Class (NoThunks (..)) - --- | Additional information stored along with address. It's intended --- to be put into 'Attributes' data type to make it extensible with --- softfork. -data AddrAttributes = AddrAttributes - { aaVKDerivationPath :: !(Maybe HDAddressPayload) - , aaNetworkMagic :: !NetworkMagic - } - deriving (Eq, Ord, Show, Generic, NFData, NoThunks) - -instance HeapWords AddrAttributes where - heapWords aa = - 3 - + heapWords (aaVKDerivationPath aa) - + heapWords (aaNetworkMagic aa) - -instance B.Buildable AddrAttributes where - build aa = - bprint - ("AddrAttributes { derivation path: " . builder . " }") - derivationPathBuilder - where - derivationPathBuilder :: Builder - derivationPathBuilder = case aaVKDerivationPath aa of - Nothing -> "{}" - Just _ -> "{path is encrypted}" - --- Used for debugging purposes only -instance ToJSON AddrAttributes - -{- NOTE: Address attributes serialization -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -'Attributes' are conceptually a map, where keys are numbers ('Word8'). - -For address there are two attributes: - - 1 - derivation path, defaults to 'Nothing'. - --} - -instance ToCBOR (Attributes AddrAttributes) where - toCBOR = toByronCBOR - -instance FromCBOR (Attributes AddrAttributes) where - fromCBOR = fromByronCBOR - -instance EncCBOR (Attributes AddrAttributes) where - -- FIXME @avieth it was observed that for a 150kb block, this call to - -- encCBORAttributes allocated 3.685mb - -- Try using serialize rather than serialize', to avoid the - -- toStrict call. - -- Also consider using a custom builder strategy; serialized attributes are - -- probably small, right? - encCBOR attrs@Attributes {attrData = AddrAttributes derivationPath networkMagic} = - encCBORAttributes listWithIndices attrs - where - listWithIndices :: [(Word8, AddrAttributes -> LByteString)] - listWithIndices = - derivationPathListWithIndices - <> networkMagicListWithIndices - - derivationPathListWithIndices :: [(Word8, AddrAttributes -> LByteString)] - derivationPathListWithIndices = case derivationPath of - Nothing -> [] - -- 'unsafeFromJust' is safe, because 'case' ensures - -- that derivation path is 'Just'. - Just _ -> [(1, serialize byronProtVer . unsafeFromJust . aaVKDerivationPath)] - unsafeFromJust :: Maybe a -> a - unsafeFromJust = - fromMaybe (panic "Maybe was Nothing in EncCBOR (Attributes AddrAttributes)") - - networkMagicListWithIndices :: [(Word8, AddrAttributes -> LByteString)] - networkMagicListWithIndices = - case networkMagic of - NetworkMainOrStage -> [] - NetworkTestnet x -> - [(2, \_ -> serialize byronProtVer x)] - -instance DecCBOR (Attributes AddrAttributes) where - decCBOR = decCBORAttributes initValue go - where - initValue = - AddrAttributes - { aaVKDerivationPath = Nothing - , aaNetworkMagic = NetworkMainOrStage - } - - go :: - Word8 -> - LByteString -> - AddrAttributes -> - Decoder s (Maybe AddrAttributes) - go n v acc = case n of - 1 -> - (\deriv -> Just $ acc {aaVKDerivationPath = Just deriv}) - <$> toCborError (decodeFull byronProtVer v) - 2 -> - (\deriv -> Just $ acc {aaNetworkMagic = NetworkTestnet deriv}) - <$> toCborError - (decodeFullDecoder byronProtVer "NetworkMagic" decodeWord32Canonical v) - _ -> pure Nothing - --- | Passphrase is a hash of root verification key. -data HDPassphrase = HDPassphrase !ByteString - deriving (Eq, Show) - --- | HDAddressPayload is a specific address attribute that was used by the --- Cardano wallet at mainnet launch, prior to moving to a BIP-44 style scheme. --- --- It consisted of --- --- * serialized and encrypted using HDPassphrase derivation path from the --- root key to given descendant key (using ChaChaPoly1305 algorithm) --- --- * cryptographic tag --- --- It is still distinguished as an attribute, but not used by the ledger, --- because the attributes size limits treat this attribute specially. -newtype HDAddressPayload = HDAddressPayload - { getHDAddressPayload :: ByteString - } - deriving (Eq, Ord, Show, Generic) - deriving newtype (EncCBOR, HeapWords) - deriving anyclass (NFData, NoThunks) - -instance ToCBOR HDAddressPayload where - toCBOR = toByronCBOR - -instance FromCBOR HDAddressPayload where - fromCBOR = fromByronCBOR - --- Used for debugging purposes only -instance ToJSON HDAddressPayload where - toJSON (HDAddressPayload bs) = object ["HDAddressPayload" .= Char8.unpack bs] - -instance DecCBOR HDAddressPayload where - decCBOR = HDAddressPayload <$> decodeBytesCanonical diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Common/AddrSpendingData.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Common/AddrSpendingData.hs deleted file mode 100644 index 54e57d99a6c..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Common/AddrSpendingData.hs +++ /dev/null @@ -1,127 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} - -module Cardano.Chain.Common.AddrSpendingData ( - AddrSpendingData (..), - AddrType (..), - addrSpendingDataToType, -) -where - -import Cardano.Crypto.Signing (RedeemVerificationKey, VerificationKey) -import Cardano.HeapWords -import Cardano.Ledger.Binary ( - Case (..), - DecCBOR (..), - DecoderError (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - cborError, - decodeListLenCanonical, - decodeWord8Canonical, - encodeListLen, - fromByronCBOR, - matchSize, - szCases, - toByronCBOR, - ) -import Cardano.Prelude hiding (cborError) -import Data.Aeson (ToJSON) -import Formatting (bprint, build) -import qualified Formatting.Buildable as B -import NoThunks.Class (NoThunks (..)) - --- | Data which is bound to an address and must be revealed in order to spend --- lovelace belonging to this address. -data AddrSpendingData - = -- | Funds can be spent by revealing a 'VerificationKey' and providing a valid - -- signature - VerKeyASD !VerificationKey - | -- | Funds can be spent by revealing a 'RedeemVerificationKey' and providing a - -- valid signature - RedeemASD !RedeemVerificationKey - deriving (Eq, Generic, Show) - deriving anyclass (NFData) - -instance B.Buildable AddrSpendingData where - build = \case - VerKeyASD vk -> bprint ("VerKeyASD " . build) vk - RedeemASD rvk -> bprint ("RedeemASD " . build) rvk - -instance ToCBOR AddrSpendingData where - toCBOR = toByronCBOR - -instance FromCBOR AddrSpendingData where - fromCBOR = fromByronCBOR - --- Tag 1 was previously used for scripts, but never appeared on the chain -instance EncCBOR AddrSpendingData where - encCBOR = \case - VerKeyASD vk -> encodeListLen 2 <> encCBOR (0 :: Word8) <> encCBOR vk - RedeemASD redeemVK -> - encodeListLen 2 <> encCBOR (2 :: Word8) <> encCBOR redeemVK - - encodedSizeExpr size _ = - szCases - [ Case "VerKeyASD" $ size $ Proxy @(Word8, VerificationKey) - , Case "RedeemASD" $ size $ Proxy @(Word8, RedeemVerificationKey) - ] - -instance DecCBOR AddrSpendingData where - decCBOR = do - len <- decodeListLenCanonical - matchSize "AddrSpendingData" 2 len - decodeWord8Canonical >>= \case - 0 -> VerKeyASD <$> decCBOR - 2 -> RedeemASD <$> decCBOR - tag -> cborError $ DecoderErrorUnknownTag "AddrSpendingData" tag - --- | Type of an address. It corresponds to constructors of 'AddrSpendingData'. --- It's separated, because 'Address' doesn't store 'AddrSpendingData', but we --- want to know its type. -data AddrType - = ATVerKey - | ATRedeem - deriving (Eq, Ord, Generic, Show) - deriving anyclass (NFData, NoThunks) - --- Used for debugging purposes only -instance ToJSON AddrType - -instance ToCBOR AddrType where - toCBOR = toByronCBOR - -instance FromCBOR AddrType where - fromCBOR = fromByronCBOR - --- Tag 1 was previously used for scripts, but never appeared on the chain -instance EncCBOR AddrType where - encCBOR = - encCBOR @Word8 . \case - ATVerKey -> 0 - ATRedeem -> 2 - - encodedSizeExpr size _ = encodedSizeExpr size (Proxy @Word8) - -instance DecCBOR AddrType where - decCBOR = - decodeWord8Canonical >>= \case - 0 -> pure ATVerKey - 2 -> pure ATRedeem - tag -> cborError $ DecoderErrorUnknownTag "AddrType" tag - -instance HeapWords AddrType where - heapWords = \case - ATVerKey -> 0 - ATRedeem -> 0 - --- | Convert 'AddrSpendingData' to the corresponding 'AddrType' -addrSpendingDataToType :: AddrSpendingData -> AddrType -addrSpendingDataToType = \case - VerKeyASD {} -> ATVerKey - RedeemASD {} -> ATRedeem diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Common/Address.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Common/Address.hs deleted file mode 100644 index 6273739b72c..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Common/Address.hs +++ /dev/null @@ -1,365 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE UndecidableInstances #-} - --- | Functionality related to 'Address' data type and related types. -module Cardano.Chain.Common.Address ( - Address (..), - Address' (..), - - -- * Formatting - addressF, - addressDetailedF, - decCBORTextAddress, - - -- * Spending data checks - checkAddrSpendingData, - checkVerKeyAddress, - checkRedeemAddress, - - -- * Encoding/Decoding - addrToBase58, - encCBORAddr, - encCBORAddrCRC32, - decodeAddressBase58, - encodeAddressBase58, - - -- * Utilities - addrAttributesUnwrapped, - addrNetworkMagic, - - -- * Pattern-matching helpers - isRedeemAddress, - - -- * Construction - makeAddress, - makeVerKeyAddress, - makeVerKeyHdwAddress, - makeRedeemAddress, -) -where - -import Cardano.Chain.Common.AddrAttributes ( - AddrAttributes (..), - HDAddressPayload, - ) -import Cardano.Chain.Common.AddrSpendingData ( - AddrSpendingData (..), - AddrType (..), - addrSpendingDataToType, - ) -import Cardano.Chain.Common.AddressHash (AddressHash, addressHash) -import Cardano.Chain.Common.Attributes (Attributes (..), mkAttributes) -import Cardano.Chain.Common.CBOR ( - decodeCrcProtected, - encodeCrcProtected, - encodedCrcProtectedSizeExpr, - ) -import Cardano.Chain.Common.NetworkMagic (NetworkMagic (..)) -import Cardano.Crypto.Hashing (hashHexF) -import Cardano.Crypto.Signing ( - RedeemVerificationKey, - VerificationKey, - ) -import Cardano.HeapWords (HeapWords (..), heapWords3) -import Cardano.Ledger.Binary ( - DecCBOR (..), - DecoderError (..), - EncCBOR (..), - Encoding, - FromCBOR (..), - ToCBOR (..), - byronProtVer, - decodeFull', - decodeListLenCanonical, - fromByronCBOR, - matchSize, - serialize', - toByronCBOR, - ) -import Cardano.Prelude -import qualified Data.Aeson as Aeson -import Data.ByteString.Base58 ( - Alphabet (..), - bitcoinAlphabet, - decodeBase58, - encodeBase58, - ) -import Data.Text.Encoding (decodeLatin1) -import Data.Text.Internal.Builder (Builder) -import Formatting ( - Format, - bprint, - build, - builder, - formatToString, - later, - ) -import qualified Formatting.Buildable as B -import NoThunks.Class (NoThunks (..)) -import Text.JSON.Canonical ( - FromJSON (..), - FromObjectKey (..), - JSValue (..), - ToJSON (..), - ToObjectKey (..), - toJSString, - ) - --- | Hash of this data is stored in 'Address'. This type exists mostly --- for internal usage. -newtype Address' = Address' - { unAddress' :: (AddrType, AddrSpendingData, Attributes AddrAttributes) - } - deriving (Eq, Show, Generic) - deriving newtype (EncCBOR) - -instance ToCBOR Address' where - toCBOR = toByronCBOR - -instance FromCBOR Address' where - fromCBOR = fromByronCBOR - --- We need to use canonical encodings for @Address'@ so that all implementations --- agree on the `AddressHash`. The components of the @Address'@ also have --- canonical encodings enforced. -instance DecCBOR Address' where - decCBOR = do - len <- decodeListLenCanonical - matchSize "Address'" 3 len - fmap Address' $ (,,) <$> decCBOR <*> decCBOR <*> decCBOR - --- | 'Address' is where you can send Lovelace -data Address = Address - { addrRoot :: !(AddressHash Address') - -- ^ Root of imaginary pseudo Merkle tree stored in this address. - , addrAttributes :: !(Attributes AddrAttributes) - -- ^ Attributes associated with this address. - , addrType :: !AddrType - -- ^ The type of this address. Should correspond to - -- 'AddrSpendingData', but it can't be checked statically, because - -- spending data is hashed. - } - deriving (Eq, Ord, Generic, Show) - deriving anyclass (NFData, NoThunks) - --- Used for debugging purposes only -instance Aeson.ToJSON Address - -instance ToCBOR Address where - toCBOR = toByronCBOR - -instance FromCBOR Address where - fromCBOR = fromByronCBOR - -instance EncCBOR Address where - encCBOR addr = - encodeCrcProtected (addrRoot addr, addrAttributes addr, addrType addr) - - encodedSizeExpr size pxy = - encodedCrcProtectedSizeExpr size - $ (,,) - <$> (addrRoot <$> pxy) - <*> (addrAttributes <$> pxy) - <*> (addrType <$> pxy) - -instance DecCBOR Address where - decCBOR = do - (root, attributes, addrType') <- decodeCrcProtected - pure - $ Address - { addrRoot = root - , addrAttributes = attributes - , addrType = addrType' - } - -instance B.Buildable [Address] where - build = bprint listJson - -instance Monad m => ToObjectKey m Address where - toObjectKey = pure . toJSString . formatToString addressF - -instance MonadError SchemaError m => FromObjectKey m Address where - fromObjectKey = fmap Just . parseJSString decCBORTextAddress . JSString - -instance Monad m => ToJSON m Address where - toJSON = fmap JSString . toObjectKey - -instance MonadError SchemaError m => FromJSON m Address where - fromJSON = parseJSString decCBORTextAddress - -instance HeapWords Address where - heapWords (Address root attrs typ) = heapWords3 root attrs typ - --------------------------------------------------------------------------------- --- Formatting, pretty-printing --------------------------------------------------------------------------------- - --- | A formatter showing guts of an 'Address' -addressDetailedF :: Format r (Address -> r) -addressDetailedF = later $ \addr -> - bprint - (builder . " address with root " . hashHexF . ", attributes: " . build) - (formattedType $ addrType addr) - (addrRoot addr) - (addrAttributes addr) - where - formattedType :: AddrType -> Builder - formattedType = \case - ATVerKey -> "VerKey" - ATRedeem -> "Redeem" - --- | Currently we use Bitcoin alphabet for representing addresses in base58 -addrAlphabet :: Alphabet -addrAlphabet = bitcoinAlphabet - -addrToBase58 :: Address -> ByteString -addrToBase58 = encodeBase58 addrAlphabet . serialize' byronProtVer - -instance B.Buildable Address where - build = B.build . decodeLatin1 . addrToBase58 - --- | Specialized formatter for 'Address' -addressF :: Format r (Address -> r) -addressF = build - --- | A function which decodes base58-encoded 'Address' -{-# DEPRECATED decCBORTextAddress "Use decodeAddressBase58 instead" #-} -decCBORTextAddress :: Text -> Either DecoderError Address -decCBORTextAddress = decCBORAddress . encodeUtf8 - where - decCBORAddress :: ByteString -> Either DecoderError Address - decCBORAddress bs = do - let base58Err = - DecoderErrorCustom - "Address" - "Invalid base58 representation of address" - dbs <- maybeToRight base58Err $ decodeBase58 addrAlphabet bs - decodeFull' byronProtVer dbs - --- | Decode an address from Base58 encoded Text. -decodeAddressBase58 :: Text -> Either DecoderError Address -decodeAddressBase58 = decCBORTextAddress - --- | Encode an address to Text. --- `decodeAddressBase58 (encodeAddressBase58 x) === Right x` -encodeAddressBase58 :: Address -> Text -encodeAddressBase58 = decodeLatin1 . addrToBase58 - --------------------------------------------------------------------------------- --- Constructors --------------------------------------------------------------------------------- - --- | Make an 'Address' from spending data and attributes. -makeAddress :: AddrSpendingData -> AddrAttributes -> Address -makeAddress spendingData attributesUnwrapped = - Address - { addrRoot = addressHash address' - , addrAttributes = attributes - , addrType = addrType' - } - where - addrType' = addrSpendingDataToType spendingData - attributes = mkAttributes attributesUnwrapped - address' = Address' (addrType', spendingData, attributes) - --- | A function for making an address from 'VerificationKey' -makeVerKeyAddress :: NetworkMagic -> VerificationKey -> Address -makeVerKeyAddress nm = makeVerKeyAddressImpl nm Nothing - --- | A function for making an HDW address -makeVerKeyHdwAddress :: - NetworkMagic -> - -- | Derivation path - HDAddressPayload -> - VerificationKey -> - Address -makeVerKeyHdwAddress nm path = makeVerKeyAddressImpl nm (Just path) - -makeVerKeyAddressImpl :: NetworkMagic -> Maybe HDAddressPayload -> VerificationKey -> Address -makeVerKeyAddressImpl nm path key = makeAddress spendingData attrs - where - spendingData = VerKeyASD key - attrs = - AddrAttributes - { aaVKDerivationPath = path - , aaNetworkMagic = nm - } - --- | A function for making an address from 'RedeemVerificationKey' -makeRedeemAddress :: NetworkMagic -> RedeemVerificationKey -> Address -makeRedeemAddress nm key = makeAddress spendingData attrs - where - spendingData = RedeemASD key - attrs = - AddrAttributes - { aaVKDerivationPath = Nothing - , aaNetworkMagic = nm - } - --------------------------------------------------------------------------------- --- Checks --------------------------------------------------------------------------------- - --- | Check whether given 'AddrSpendingData' corresponds to given 'Address' -checkAddrSpendingData :: AddrSpendingData -> Address -> Bool -checkAddrSpendingData asd addr = - addrRoot addr - == addressHash address' - && addrType addr - == addrSpendingDataToType asd - where - address' = Address' (addrType addr, asd, addrAttributes addr) - --- | Check if given 'Address' is created from given 'VerificationKey' -checkVerKeyAddress :: VerificationKey -> Address -> Bool -checkVerKeyAddress vk = checkAddrSpendingData (VerKeyASD vk) - --- | Check if given 'Address' is created from given 'RedeemVerificationKey' -checkRedeemAddress :: RedeemVerificationKey -> Address -> Bool -checkRedeemAddress rvk = checkAddrSpendingData (RedeemASD rvk) - --------------------------------------------------------------------------------- --- Utils --------------------------------------------------------------------------------- - --- | Get 'AddrAttributes' from 'Address' -addrAttributesUnwrapped :: Address -> AddrAttributes -addrAttributesUnwrapped = attrData . addrAttributes - --- | Get 'NetworkMagic' from 'Address' -addrNetworkMagic :: Address -> NetworkMagic -addrNetworkMagic = aaNetworkMagic . addrAttributesUnwrapped - --------------------------------------------------------------------------------- --- Pattern-matching helpers --------------------------------------------------------------------------------- - --- | Check whether an 'Address' is redeem address -isRedeemAddress :: Address -> Bool -isRedeemAddress addr = case addrType addr of - ATRedeem -> True - _ -> False - --- Encodes the `Address` __without__ the CRC32. --- It's important to keep this function separated from the `encCBOR` --- definition to avoid that `encCBOR` would call `crc32` and --- the latter invoke `crc32Update`, which would then try to call `encCBOR` --- indirectly once again, in an infinite loop. -encCBORAddr :: Address -> Encoding -encCBORAddr addr = - encCBOR (addrRoot addr) - <> encCBOR (addrAttributes addr) - <> encCBOR - (addrType addr) - -encCBORAddrCRC32 :: Address -> Encoding -encCBORAddrCRC32 addr = - encodeCrcProtected (addrRoot addr, addrAttributes addr, addrType addr) diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Common/AddressHash.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Common/AddressHash.hs deleted file mode 100644 index 3208f365a26..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Common/AddressHash.hs +++ /dev/null @@ -1,26 +0,0 @@ -module Cardano.Chain.Common.AddressHash ( - AddressHash, - addressHash, - unsafeAddressHash, -) -where - -import Cardano.Crypto.Hashing (AbstractHash, abstractHashFromDigest) -import Cardano.Ledger.Binary (EncCBOR, byronProtVer, serialize) -import Cardano.Prelude -import Crypto.Hash (Blake2b_224, Digest, SHA3_256) -import qualified Crypto.Hash as CryptoHash - --- | Hash used to identify address. -type AddressHash = AbstractHash Blake2b_224 - -unsafeAddressHash :: EncCBOR a => a -> AddressHash b -unsafeAddressHash = abstractHashFromDigest . secondHash . firstHash - where - firstHash :: EncCBOR a => a -> Digest SHA3_256 - firstHash = CryptoHash.hashlazy . serialize byronProtVer - secondHash :: Digest SHA3_256 -> Digest Blake2b_224 - secondHash = CryptoHash.hash - -addressHash :: EncCBOR a => a -> AddressHash a -addressHash = unsafeAddressHash diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Common/Attributes.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Common/Attributes.hs deleted file mode 100644 index 7aed2be2695..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Common/Attributes.hs +++ /dev/null @@ -1,245 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# OPTIONS_GHC -fno-warn-missed-specialisations #-} - --- | Helper data type for block, tx attributes --- --- Map with integer 1-byte keys, arbitrary-type polymorph values. Needed --- primarily for partial serialization. Values are either parsed and put to --- some constructor or left as unparsed. -module Cardano.Chain.Common.Attributes ( - UnparsedFields (..), - Attributes (..), - attributesAreKnown, - unknownAttributesLength, - encCBORAttributes, - decCBORAttributes, - mkAttributes, - dropAttributes, - dropEmptyAttributes, -) -where - -import Cardano.HeapWords (HeapWords (..), heapWords2) -import Cardano.Ledger.Binary ( - DecCBOR (..), - Decoder, - DecoderError (..), - Dropper, - EncCBOR (..), - Encoding, - FromCBOR (..), - ToCBOR (..), - cborError, - decodeMapLen, - dropBytes, - dropMap, - dropWord8, - fromByronCBOR, - toByronCBOR, - ) -import Cardano.Prelude hiding (cborError) -import Data.Aeson (ToJSON (..)) -import qualified Data.ByteString.Lazy as LBS -import qualified Data.ByteString.Lazy.Char8 as LChar8 -import qualified Data.Map.Strict as M -import Formatting (bprint, build, int) -import Formatting.Buildable (Buildable) -import qualified Formatting.Buildable as Buildable -import NoThunks.Class (NoThunks (..)) -import qualified Prelude - --- | Representation of unparsed fields in Attributes. Newtype wrapper is used --- for clear backward compatibility between previous representation (which was --- just a single ByteString) during transition from Store to CBOR. -newtype UnparsedFields - = UnparsedFields (Map Word8 LBS.ByteString) - deriving (Eq, Ord, Show, Generic) - deriving newtype (HeapWords) - deriving anyclass (NFData, NoThunks) - --- Used for debugging purposes only -instance ToJSON UnparsedFields where - toJSON (UnparsedFields map') = toJSON $ M.map LChar8.unpack map' - -fromUnparsedFields :: UnparsedFields -> Map Word8 LBS.ByteString -fromUnparsedFields (UnparsedFields m) = m - ----------------------------------------- - -mkAttributes :: h -> Attributes h -mkAttributes dat = Attributes dat (UnparsedFields M.empty) - --- | Convenient wrapper for the datatype to represent it (in binary format) as --- k-v map -data Attributes h = Attributes - { attrData :: !h - -- ^ Data, containing known keys (deserialized) - , attrRemain :: !UnparsedFields - -- ^ Remaining, unparsed fields - } - deriving (Eq, Ord, Generic, NoThunks) - deriving anyclass (NFData) - -instance Show h => Show (Attributes h) where - show attr = - let remain :: Prelude.String - remain - | attributesAreKnown attr = - "" - | otherwise = - ", remain: <" <> show (unknownAttributesLength attr) <> " bytes>" - in mconcat ["Attributes { data_ = ", show (attrData attr), remain, " }"] - -instance {-# OVERLAPPABLE #-} Buildable h => Buildable (Attributes h) where - build attr = - if attributesAreKnown attr - then Buildable.build (attrData attr) - else - bprint - ("Attributes { data: " . build . ", remain: <" . int . " bytes> }") - (attrData attr) - (unknownAttributesLength attr) - -instance Buildable (Attributes ()) where - build attr - | attributesAreKnown attr = "" - | otherwise = - bprint - ("Attributes { data: (), remain: <" . int . " bytes> }") - (unknownAttributesLength attr) - --- Used for debugging purposes only -instance ToJSON a => ToJSON (Attributes a) - -instance ToCBOR (Attributes ()) where - toCBOR = toByronCBOR - -instance FromCBOR (Attributes ()) where - fromCBOR = fromByronCBOR - -instance EncCBOR (Attributes ()) where - encCBOR = encCBORAttributes [] - -instance DecCBOR (Attributes ()) where - decCBOR = decCBORAttributes () $ \_ _ _ -> pure Nothing - -instance HeapWords h => HeapWords (Attributes h) where - heapWords (Attributes dat unparsed) = heapWords2 dat unparsed - --- | Check whether all data from 'Attributes' is known, i. e. was successfully --- parsed into some structured data -attributesAreKnown :: Attributes a -> Bool -attributesAreKnown = M.null . fromUnparsedFields . attrRemain - -unknownAttributesLength :: Attributes a -> Int -unknownAttributesLength = - fromIntegral . sum . map LBS.length . fromUnparsedFields . attrRemain - -{- NOTE: Attributes serialization -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Attributes are a way to add fields to datatypes while maintaining backwards -compatibility. Suppose that you have this datatype: - - data Foo = Foo { - x :: Int, - y :: Int, - attrs :: Attributes FooAttrs } - -@Attributes FooAttrs@ is a key-value map that deserializes into @FooAttrs@. -Each key is a single byte, and each value is an arbitary bytestring. It's -serialized like this: - - - - - - -The attributes are read as long as their keys are “known” (i.e. as long as we -know how to interpret those keys), and the rest is stored separately. For -instance, let's say that in first version of CSL, @FooAttrs@ looks like this: - - data FooAttrs = FooAttrs { - foo :: Text, - bar :: [Int] } - -It would be serialized as follows: - - <0x00> <0x01> - -In the next version of CSL we add a new field @quux@. The new version would -serialize it like this: - - <0x00> <0x01> <0x02> - -And the old version would treat it like this: - - <0x00> <0x01> - -This way the old version can serialize and deserialize data received from the -new version in a lossless way (i.e. when the old version does serialization -it would just put @attrRemain@ back after other attributes and the new -version would be able to parse it). - --} - -encCBORAttributes :: - forall t. [(Word8, t -> LBS.ByteString)] -> Attributes t -> Encoding -encCBORAttributes encs attr = - encCBOR - $ foldr go (fromUnparsedFields $ attrRemain attr) encs - where - go :: - (Word8, t -> LBS.ByteString) -> - Map Word8 LBS.ByteString -> - Map Word8 LBS.ByteString - go (k, f) = M.alter (insertCheck $ f (attrData attr)) k - where - insertCheck :: a -> Maybe LByteString -> Maybe a - insertCheck v Nothing = Just v - insertCheck _ (Just v') = - panic - $ "encCBORAttributes: impossible: field no. " - <> show k - <> " is already encoded as unparsed field: " - <> show v' - -decCBORAttributes :: - forall t s. - t -> - (Word8 -> LBS.ByteString -> t -> Decoder s (Maybe t)) -> - Decoder s (Attributes t) -decCBORAttributes initval updater = do - raw <- decCBOR @(Map Word8 LBS.ByteString) - foldrM go (Attributes initval $ UnparsedFields raw) $ M.toList raw - where - go :: (Word8, LBS.ByteString) -> Attributes t -> Decoder s (Attributes t) - go (k, v) attr = do - updaterData <- updater k v $ attrData attr - pure $ case updaterData of - Nothing -> attr - Just newData -> - Attributes - { attrData = newData - , attrRemain = - UnparsedFields - . M.delete k - . fromUnparsedFields - $ attrRemain attr - } - -dropAttributes :: Dropper s -dropAttributes = dropMap dropWord8 dropBytes - --- | Drop `Attributes ()` making sure that the `UnparsedFields` are empty -dropEmptyAttributes :: Dropper s -dropEmptyAttributes = do - len <- decodeMapLen - unless (len == 0) $ cborError $ DecoderErrorSizeMismatch "Attributes" 0 len diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Common/BlockCount.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Common/BlockCount.hs deleted file mode 100644 index 17e3b3019e3..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Common/BlockCount.hs +++ /dev/null @@ -1,37 +0,0 @@ -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} - -module Cardano.Chain.Common.BlockCount ( - BlockCount (..), -) -where - -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - fromByronCBOR, - toByronCBOR, - ) -import Cardano.Prelude -import Formatting.Buildable (Buildable) -import NoThunks.Class (NoThunks (..)) - -newtype BlockCount = BlockCount - { unBlockCount :: Word64 - } - deriving (Eq, Ord, Enum, Read, Show, Buildable, Generic, NFData, NoThunks) - -instance ToCBOR BlockCount where - toCBOR = toByronCBOR - -instance FromCBOR BlockCount where - fromCBOR = fromByronCBOR - -instance EncCBOR BlockCount where - encCBOR = encCBOR . unBlockCount - encodedSizeExpr size pxy = size (unBlockCount <$> pxy) - -instance DecCBOR BlockCount where - decCBOR = BlockCount <$> decCBOR diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Common/CBOR.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Common/CBOR.hs deleted file mode 100644 index 7d109287ba5..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Common/CBOR.hs +++ /dev/null @@ -1,137 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} - --- | CBOR encoding utilities needed for the Byron transaction format -module Cardano.Chain.Common.CBOR ( - -- * CBOR in CBOR - - -- | These utilities are is used in the Byron-era chain encodings in cases - -- where there are extensible parts of the encoding. In thse cases we have to - -- be able to handle unknown extensions and thus decode values where we do - -- not know the concrete type. - -- - -- To solve this, the serialised representation uses nested CBOR-in-CBOR - -- . The nesting means - -- that the size is known without having to decode the body in those cases - -- where we cannot decode the body. - -- - -- The functions in this module handle the encoding and decoding for the - -- cases of the known and unknown types. - encodeKnownCborDataItem, - encodeUnknownCborDataItem, - knownCborDataItemSizeExpr, - unknownCborDataItemSizeExpr, - decodeKnownCborDataItem, - decodeUnknownCborDataItem, - - -- * Cyclic redundancy check - - -- | The Byron era address format includes a CRC to help resist accidental - -- corruption. These functions deal with encoding and decoding the format - -- that is used. - encodeCrcProtected, - encodedCrcProtectedSizeExpr, - decodeCrcProtected, -) -where - -import Cardano.Ledger.Binary ( - DecCBOR (..), - Decoder, - EncCBOR (..), - Encoding, - Size, - byronProtVer, - cborError, - decodeFull', - decodeNestedCbor, - decodeNestedCborBytes, - encodeListLen, - encodeNestedCbor, - encodeNestedCborBytes, - enforceSize, - nestedCborBytesSizeExpr, - nestedCborSizeExpr, - serialize, - toCborError, - ) -import Cardano.Prelude hiding (cborError, toCborError) -import Data.Digest.CRC32 (CRC32 (..)) -import Formatting (Format, sformat, shown) - --- | This is an alias for 'encodeNestedCbor'. --- --- This function is used to handle the case of a known type, but compatible --- with the encoding used by 'encodeUnknownCborDataItem'. -encodeKnownCborDataItem :: EncCBOR a => a -> Encoding -encodeKnownCborDataItem = encodeNestedCbor - --- | This is an alias for 'encodeNestedCborBytes', so all its details apply. --- --- This function is used to handle the case of an unknown type, so it takes an --- opaque blob that is the representation of the value of the unknown type. -encodeUnknownCborDataItem :: LByteString -> Encoding -encodeUnknownCborDataItem = encodeNestedCborBytes - -knownCborDataItemSizeExpr :: Size -> Size -knownCborDataItemSizeExpr = nestedCborSizeExpr - -unknownCborDataItemSizeExpr :: Size -> Size -unknownCborDataItemSizeExpr = nestedCborBytesSizeExpr - --- | This is an alias for 'decodeNestedCbor'. --- --- This function is used to handle the case of a known type, but compatible --- with the encoding used by 'decodeUnknownCborDataItem'. -decodeKnownCborDataItem :: DecCBOR a => Decoder s a -decodeKnownCborDataItem = decodeNestedCbor - --- | This is an alias for 'decodeNestedCborBytes', so all its details apply. --- --- This function is used to handle the case of an unknown type, so it returns --- an opaque blob that is the representation of the value of the unknown type. -decodeUnknownCborDataItem :: Decoder s ByteString -decodeUnknownCborDataItem = decodeNestedCborBytes - --------------------------------------------------------------------------------- --- Cyclic redundancy check --------------------------------------------------------------------------------- - --- | Encodes a value of type @a@, protecting it from accidental corruption by --- protecting it with a CRC. -encodeCrcProtected :: EncCBOR a => a -> Encoding -encodeCrcProtected x = - encodeListLen 2 <> encodeUnknownCborDataItem body <> encCBOR (crc32 body) - where - body = serialize byronProtVer x - -encodedCrcProtectedSizeExpr :: - forall a. - EncCBOR a => - (forall t. EncCBOR t => Proxy t -> Size) -> - Proxy a -> - Size -encodedCrcProtectedSizeExpr size pxy = - 2 - + unknownCborDataItemSizeExpr (size pxy) - + size (pure $ crc32 (serialize byronProtVer (panic "unused" :: a))) - --- | Decodes a CBOR blob into a value of type @a@, checking the serialised CRC --- corresponds to the computed one -decodeCrcProtected :: forall s a. DecCBOR a => Decoder s a -decodeCrcProtected = do - enforceSize ("decodeCrcProtected: " <> show (typeOf (Proxy :: Proxy a))) 2 - body <- decodeUnknownCborDataItem - expectedCrc <- decCBOR - let actualCrc :: Word32 - actualCrc = crc32 body - let crcErrorFmt :: Format r (Word32 -> Word32 -> r) - crcErrorFmt = - "decodeCrcProtected, expected CRC " - . shown - . " was not the computed one, which was " - . shown - when (actualCrc /= expectedCrc) - $ cborError (sformat crcErrorFmt expectedCrc actualCrc) - toCborError $ decodeFull' byronProtVer body diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Common/ChainDifficulty.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Common/ChainDifficulty.hs deleted file mode 100644 index a67fa337ac4..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Common/ChainDifficulty.hs +++ /dev/null @@ -1,57 +0,0 @@ -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE OverloadedStrings #-} - -module Cardano.Chain.Common.ChainDifficulty ( - ChainDifficulty (..), - dropChainDifficulty, -) -where - -import Cardano.Ledger.Binary ( - DecCBOR (..), - Dropper, - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - dropWord64, - encodeListLen, - enforceSize, - fromByronCBOR, - toByronCBOR, - ) -import Cardano.Prelude -import Data.Aeson (ToJSON) -import Formatting.Buildable (Buildable) -import NoThunks.Class (NoThunks (..)) - --- | Chain difficulty represents necessary effort to generate a --- chain. In the simplest case it can be number of blocks in chain. -newtype ChainDifficulty = ChainDifficulty - { unChainDifficulty :: Word64 - } - deriving (Show, Eq, Ord, Enum, Generic, Buildable, NFData, NoThunks) - --- Used for debugging purposes only -instance ToJSON ChainDifficulty - -instance ToCBOR ChainDifficulty where - toCBOR = toByronCBOR - -instance FromCBOR ChainDifficulty where - fromCBOR = fromByronCBOR - -instance EncCBOR ChainDifficulty where - encCBOR cd = encodeListLen 1 <> encCBOR (unChainDifficulty cd) - - encodedSizeExpr f cd = 1 + encodedSizeExpr f (unChainDifficulty <$> cd) - -instance DecCBOR ChainDifficulty where - decCBOR = do - enforceSize "ChainDifficulty" 1 - ChainDifficulty <$> decCBOR - -dropChainDifficulty :: Dropper s -dropChainDifficulty = do - enforceSize "ChainDifficulty" 1 - dropWord64 diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Common/Compact.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Common/Compact.hs deleted file mode 100644 index ca45992dda9..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Common/Compact.hs +++ /dev/null @@ -1,68 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE OverloadedStrings #-} - -module Cardano.Chain.Common.Compact ( - CompactAddress, - toCompactAddress, - fromCompactAddress, - unsafeGetCompactAddress, -) -where - -import Cardano.Chain.Common.Address (Address (..)) -import Cardano.HeapWords (HeapWords) -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - byronProtVer, - decodeFull', - fromByronCBOR, - serialize', - toByronCBOR, - ) -import Cardano.Prelude -import Data.ByteString.Short (ShortByteString) -import qualified Data.ByteString.Short as BSS (fromShort, toShort) -import NoThunks.Class (NoThunks (..)) - --------------------------------------------------------------------------------- --- Compact Address --------------------------------------------------------------------------------- - --- | A compact in-memory representation for an 'Address'. --- --- Convert using 'toCompactAddress' and 'fromCompactAddress'. -newtype CompactAddress = CompactAddress ShortByteString - deriving (Eq, Ord, Generic, Show) - deriving newtype (HeapWords, NoThunks) - deriving anyclass (NFData) - -instance ToCBOR CompactAddress where - toCBOR = toByronCBOR - -instance FromCBOR CompactAddress where - fromCBOR = fromByronCBOR - -instance DecCBOR CompactAddress where - decCBOR = CompactAddress . BSS.toShort <$> decCBOR - -instance EncCBOR CompactAddress where - encCBOR (CompactAddress sbs) = encCBOR (BSS.fromShort sbs) - -toCompactAddress :: Address -> CompactAddress -toCompactAddress addr = - CompactAddress (BSS.toShort (serialize' byronProtVer addr)) - -fromCompactAddress :: CompactAddress -> Address -fromCompactAddress (CompactAddress addr) = - case decodeFull' byronProtVer (BSS.fromShort addr) of - Left err -> panic ("fromCompactAddress: impossible: " <> show err) - Right decAddr -> decAddr - -unsafeGetCompactAddress :: CompactAddress -> ShortByteString -unsafeGetCompactAddress (CompactAddress sbs) = sbs diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Common/KeyHash.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Common/KeyHash.hs deleted file mode 100644 index 8197049af26..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Common/KeyHash.hs +++ /dev/null @@ -1,55 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE UndecidableInstances #-} - -module Cardano.Chain.Common.KeyHash ( - KeyHash (..), - hashKey, -) -where - -import Cardano.Chain.Common.AddressHash -import Cardano.Crypto (decodeAbstractHash, hashHexF) -import Cardano.Crypto.Signing (VerificationKey) -import Cardano.HeapWords (HeapWords) -import Cardano.Ledger.Binary (DecCBOR, EncCBOR) -import Cardano.Prelude -import Formatting (formatToString) -import Formatting.Buildable (Buildable) -import NoThunks.Class (NoThunks (..)) -import Text.JSON.Canonical ( - FromObjectKey (..), - JSValue (..), - ToObjectKey (..), - toJSString, - ) - --- | A 'KeyHash' refers to a 'VerificationKey' -newtype KeyHash = KeyHash - { unKeyHash :: AddressHash VerificationKey - } - deriving - ( Eq - , Ord - , Show - , NFData - , Buildable - , DecCBOR - , EncCBOR - , HeapWords - , NoThunks - ) - -instance Monad m => ToObjectKey m KeyHash where - toObjectKey = pure . toJSString . formatToString hashHexF . unKeyHash - -instance MonadError SchemaError m => FromObjectKey m KeyHash where - fromObjectKey = - fmap (Just . KeyHash) - . parseJSString decodeAbstractHash - . JSString - -hashKey :: VerificationKey -> KeyHash -hashKey = KeyHash . addressHash diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Common/Lovelace.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Common/Lovelace.hs deleted file mode 100644 index 26b7b32e532..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Common/Lovelace.hs +++ /dev/null @@ -1,267 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveDataTypeable #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NumDecimals #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} --- This is for 'mkKnownLovelace''s @n <= 45000000000000000@ constraint, which is --- considered redundant. TODO: investigate this. -{-# OPTIONS_GHC -Wno-redundant-constraints #-} - -module Cardano.Chain.Common.Lovelace ( - -- * Lovelace - Lovelace, - LovelaceError (..), - maxLovelaceVal, - - -- * Constructors - mkLovelace, - mkKnownLovelace, - - -- * Formatting - lovelaceF, - - -- * Conversions - unsafeGetLovelace, - lovelaceToInteger, - integerToLovelace, - - -- * Arithmetic operations - sumLovelace, - addLovelace, - subLovelace, - scaleLovelace, - scaleLovelaceRational, - scaleLovelaceRationalUp, - divLovelace, - modLovelace, -) -where - -import Cardano.Ledger.Binary ( - DecCBOR (..), - DecoderError (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - cborError, - decodeListLen, - decodeWord8, - encodeListLen, - fromByronCBOR, - matchSize, - toByronCBOR, - toCborError, - ) -import Cardano.Prelude hiding (cborError, toCborError) -import Data.Aeson (ToJSON) -import Data.Data (Data) -import Formatting (Format, bprint, build, int, sformat) -import qualified Formatting.Buildable as B -import GHC.TypeLits (type (<=)) -import NoThunks.Class (NoThunks (..)) -import Quiet -import qualified Text.JSON.Canonical as Canonical ( - FromJSON (..), - ReportSchemaErrors, - ToJSON (..), - ) - --- | Lovelace is the least possible unit of currency -newtype Lovelace = Lovelace - { unLovelace :: Word64 - } - deriving (Ord, Eq, Generic, Data, NFData, NoThunks) - deriving (Show) via (Quiet Lovelace) - -instance B.Buildable Lovelace where - build (Lovelace n) = bprint (int . " lovelace") n - -instance Bounded Lovelace where - minBound = Lovelace 0 - maxBound = Lovelace maxLovelaceVal - --- Used for debugging purposes only -instance ToJSON Lovelace - -instance ToCBOR Lovelace where - toCBOR = toByronCBOR - -instance FromCBOR Lovelace where - fromCBOR = fromByronCBOR - -instance EncCBOR Lovelace where - encCBOR = encCBOR . unsafeGetLovelace - encodedSizeExpr size pxy = size (unsafeGetLovelace <$> pxy) - -instance DecCBOR Lovelace where - decCBOR = do - l <- decCBOR - toCborError - . first (DecoderErrorCustom "Lovelace" . sformat build) - $ mkLovelace l - -instance Monad m => Canonical.ToJSON m Lovelace where - toJSON = Canonical.toJSON . unsafeGetLovelace - -instance Canonical.ReportSchemaErrors m => Canonical.FromJSON m Lovelace where - fromJSON = fmap Lovelace . Canonical.fromJSON - -data LovelaceError - = LovelaceOverflow Word64 - | LovelaceTooLarge Integer - | LovelaceTooSmall Integer - | LovelaceUnderflow Word64 Word64 - deriving (Data, Eq, Show) - -instance B.Buildable LovelaceError where - build = \case - LovelaceOverflow c -> - bprint - ("Lovelace value, " . build . ", overflowed") - c - LovelaceTooLarge c -> - bprint - ("Lovelace value, " . build . ", exceeds maximum, " . build) - c - maxLovelaceVal - LovelaceTooSmall c -> - bprint - ("Lovelace value, " . build . ", is less than minimum, " . build) - c - (minBound :: Lovelace) - LovelaceUnderflow c c' -> - bprint - ("Lovelace underflow when subtracting " . build . " from " . build) - c' - c - -instance ToCBOR LovelaceError where - toCBOR = toByronCBOR - -instance FromCBOR LovelaceError where - fromCBOR = fromByronCBOR - -instance EncCBOR LovelaceError where - encCBOR = \case - LovelaceOverflow c -> - encodeListLen 2 <> encCBOR @Word8 0 <> encCBOR c - LovelaceTooLarge c -> - encodeListLen 2 <> encCBOR @Word8 1 <> encCBOR c - LovelaceTooSmall c -> - encodeListLen 2 <> encCBOR @Word8 2 <> encCBOR c - LovelaceUnderflow c c' -> - encodeListLen 3 <> encCBOR @Word8 3 <> encCBOR c <> encCBOR c' - -instance DecCBOR LovelaceError where - decCBOR = do - len <- decodeListLen - let checkSize size = matchSize "LovelaceError" size len - tag <- decodeWord8 - case tag of - 0 -> checkSize 2 >> LovelaceOverflow <$> decCBOR - 1 -> checkSize 2 >> LovelaceTooLarge <$> decCBOR - 2 -> checkSize 2 >> LovelaceTooSmall <$> decCBOR - 3 -> checkSize 3 >> LovelaceUnderflow <$> decCBOR <*> decCBOR - _ -> cborError $ DecoderErrorUnknownTag "TxValidationError" tag - --- | Maximal possible value of 'Lovelace' -maxLovelaceVal :: Word64 -maxLovelaceVal = 45e15 - --- | Constructor for 'Lovelace' returning 'LovelaceError' when @c@ exceeds --- 'maxLovelaceVal' -mkLovelace :: Word64 -> Either LovelaceError Lovelace -mkLovelace c - | c <= maxLovelaceVal = Right (Lovelace c) - | otherwise = Left (LovelaceTooLarge (toInteger c)) -{-# INLINE mkLovelace #-} - --- | Construct a 'Lovelace' from a 'KnownNat', known to be less than --- 'maxLovelaceVal' -mkKnownLovelace :: forall n. (KnownNat n, n <= 45000000000000000) => Lovelace -mkKnownLovelace = Lovelace . fromIntegral . natVal $ Proxy @n - --- | Lovelace formatter which restricts type. -lovelaceF :: Format r (Lovelace -> r) -lovelaceF = build - --- | Unwraps 'Lovelace'. It's called “unsafe” so that people wouldn't use it --- willy-nilly if they want to sum lovelace or something. It's actually safe. -unsafeGetLovelace :: Lovelace -> Word64 -unsafeGetLovelace = unLovelace -{-# INLINE unsafeGetLovelace #-} - --- | Compute sum of all lovelace in container. Result is 'Integer' as a --- protection against possible overflow. -sumLovelace :: - (Foldable t, Functor t) => t Lovelace -> Either LovelaceError Lovelace -sumLovelace = integerToLovelace . sum . map lovelaceToInteger - -lovelaceToInteger :: Lovelace -> Integer -lovelaceToInteger = toInteger . unsafeGetLovelace -{-# INLINE lovelaceToInteger #-} - --- | Addition of lovelace, returning 'LovelaceError' in case of overflow -addLovelace :: Lovelace -> Lovelace -> Either LovelaceError Lovelace -addLovelace (Lovelace a) (Lovelace b) - | res >= a && res >= b && res <= maxLovelaceVal = Right (Lovelace res) - | otherwise = Left (LovelaceOverflow res) - where - res = a + b -{-# INLINE addLovelace #-} - --- | Subtraction of lovelace, returning 'LovelaceError' on underflow -subLovelace :: Lovelace -> Lovelace -> Either LovelaceError Lovelace -subLovelace (Lovelace a) (Lovelace b) - | a >= b = Right (Lovelace (a - b)) - | otherwise = Left (LovelaceUnderflow a b) - --- | Scale a 'Lovelace' by an 'Integral' factor, returning 'LovelaceError' when --- the result is too large -scaleLovelace :: Integral b => Lovelace -> b -> Either LovelaceError Lovelace -scaleLovelace (Lovelace a) b = integerToLovelace $ toInteger a * toInteger b -{-# INLINE scaleLovelace #-} - --- | Scale a 'Lovelace' by a rational factor, rounding down. -scaleLovelaceRational :: Lovelace -> Rational -> Lovelace -scaleLovelaceRational (Lovelace a) b = - Lovelace $ fromInteger $ toInteger a * n `div` d - where - n, d :: Integer - n = numerator b - d = denominator b - --- | Scale a 'Lovelace' by a rational factor, rounding up. -scaleLovelaceRationalUp :: Lovelace -> Rational -> Lovelace -scaleLovelaceRationalUp (Lovelace a) b = - Lovelace $ fromInteger $ ceiling $ toRational a * b - --- | Integer division of a 'Lovelace' by an 'Integral' factor -divLovelace :: Integral b => Lovelace -> b -> Either LovelaceError Lovelace -divLovelace (Lovelace a) b = integerToLovelace $ toInteger a `div` toInteger b -{-# INLINE divLovelace #-} - --- | Integer modulus of a 'Lovelace' by an 'Integral' factor -modLovelace :: Integral b => Lovelace -> b -> Either LovelaceError Lovelace -modLovelace (Lovelace a) b = integerToLovelace $ toInteger a `mod` toInteger b -{-# INLINE modLovelace #-} - -integerToLovelace :: Integer -> Either LovelaceError Lovelace -integerToLovelace n - | n < 0 = Left (LovelaceTooSmall n) - | n <= lovelaceToInteger (maxBound :: Lovelace) = - Right - $ Lovelace (fromInteger n) - | otherwise = Left (LovelaceTooLarge n) diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Common/LovelacePortion.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Common/LovelacePortion.hs deleted file mode 100644 index ad88ae70d47..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Common/LovelacePortion.hs +++ /dev/null @@ -1,119 +0,0 @@ -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NumDecimals #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE UndecidableInstances #-} - -module Cardano.Chain.Common.LovelacePortion ( - LovelacePortion, - rationalToLovelacePortion, - lovelacePortionToRational, -) -where - -import Cardano.HeapWords (HeapWords) -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - fromByronCBOR, - toByronCBOR, - ) -import Cardano.Prelude -import Control.Monad (fail) -import qualified Data.Aeson as Aeson -import Formatting (bprint, build, float, int, sformat) -import qualified Formatting.Buildable as B -import NoThunks.Class (NoThunks (..)) -import Quiet -import Text.JSON.Canonical (FromJSON (..), ToJSON (..)) - --- | 'LovelacePortion' is a legacy Byron type that we keep only for --- compatibility. It was originally intended to represent a fraction of stake --- in the system. It is used only for the thresholds used in the update system --- rules, most of which are now themselves unused. The remaining case is no --- longer interpreted as a fraction of all stake, but as a fraction of the --- number of genesis keys. --- --- It has enormous precision, due to the fact that it was originally intended --- to represent a fraction of all stake and can cover the precision of all the --- Lovelace in the system. --- --- It is represented as a rational nominator with a fixed implicit denominator --- of 1e15. So the nominator must be in the range @[0..1e15]@. This is also the --- representation used on-chain (in update proposals) and in the JSON --- genesis file. --- --- It is interpreted as a 'Rational' via the provided conversion functions. -newtype LovelacePortion = LovelacePortion - { unLovelacePortion :: Word64 - } - deriving (Ord, Eq, Generic, HeapWords, NFData, NoThunks) - deriving (Show) via (Quiet LovelacePortion) - -instance B.Buildable LovelacePortion where - build cp@(LovelacePortion x) = - bprint - (int . "/" . int . " (approx. " . float . ")") - x - lovelacePortionDenominator - (fromRational (lovelacePortionToRational cp) :: Double) - --- Used for debugging purposes only -instance Aeson.ToJSON LovelacePortion - -instance ToCBOR LovelacePortion where - toCBOR = toByronCBOR - -instance FromCBOR LovelacePortion where - fromCBOR = fromByronCBOR - -instance EncCBOR LovelacePortion where - encCBOR = encCBOR . unLovelacePortion - -instance DecCBOR LovelacePortion where - decCBOR = do - nominator <- decCBOR - when (nominator > lovelacePortionDenominator) - $ fail "LovelacePortion: value out of bounds [0..1e15]" - return (LovelacePortion nominator) - --- The canonical JSON instance for LovelacePortion uses only the nominator in --- the external representation, rather than a real in the range [0,1]. --- This is because 'canonical-json' only supports numbers of type @Int54@. -instance Monad m => ToJSON m LovelacePortion where - toJSON = toJSON . unLovelacePortion - -instance MonadError SchemaError m => FromJSON m LovelacePortion where - fromJSON val = do - nominator <- fromJSON val - when (nominator > lovelacePortionDenominator) - $ throwError - SchemaError - { seExpected = "LovelacePortion integer in bounds [0..1e15]" - , seActual = Just (sformat build nominator) - } - pure (LovelacePortion nominator) - --- | Denominator used by 'LovelacePortion'. -lovelacePortionDenominator :: Word64 -lovelacePortionDenominator = 1e15 - --- | Make a 'LovelacePortion' from a 'Rational' --- which must be in the range @[0..1]@. -rationalToLovelacePortion :: Rational -> LovelacePortion -rationalToLovelacePortion r - | r >= 0 && r <= 1 = - LovelacePortion - (ceiling (r * toRational lovelacePortionDenominator)) - | otherwise = panic "rationalToLovelacePortion: out of range [0..1]" - --- | Turn a 'LovelacePortion' into a 'Rational' in the range @[0..1]@. -lovelacePortionToRational :: LovelacePortion -> Rational -lovelacePortionToRational (LovelacePortion n) = - toInteger n % toInteger lovelacePortionDenominator diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Common/Merkle.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Common/Merkle.hs deleted file mode 100644 index 2090b011492..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Common/Merkle.hs +++ /dev/null @@ -1,239 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE UndecidableInstances #-} - --- | Merkle tree implementation. --- --- See . -module Cardano.Chain.Common.Merkle ( - -- * MerkleRoot - MerkleRoot (..), - - -- * MerkleTree - MerkleTree (..), - mtRoot, - mkMerkleTree, - mkMerkleTreeDecoded, - - -- * MerkleNode - MerkleNode (..), - mkBranch, - mkLeaf, - mkLeafDecoded, -) -where - --- Cardano.Prelude has its own Rube Goldberg variant of 'Foldable' which we do not --- want. It would be great if we could write --- import Cardano.Prelude hiding (toList, foldMap) --- but HLint insists that this is not OK because toList and foldMap are never --- used unqualified. The hiding in fact makes it clearer for the human reader --- what's going on. - -import Cardano.Crypto (Hash, hashDecoded, hashRaw, hashToBytes) -import Cardano.Crypto.Raw (Raw) -import Cardano.Ledger.Binary ( - Annotated (..), - DecCBOR (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - byronProtVer, - fromByronCBOR, - serializeBuilder, - toByronCBOR, - ) -import Cardano.Prelude -import Data.Aeson (ToJSON) -import Data.ByteString.Builder (Builder, byteString, word8) -import qualified Data.ByteString.Builder.Extra as Builder -import qualified Data.ByteString.Lazy as LBS -import Data.Coerce (coerce) -import qualified Data.Foldable as Foldable -import Formatting.Buildable (Buildable (..)) -import NoThunks.Class (NoThunks (..)) -import qualified Prelude - --------------------------------------------------------------------------------- --- MerkleRoot --------------------------------------------------------------------------------- - --- | Data type for root of Merkle tree -newtype MerkleRoot a = MerkleRoot - { getMerkleRoot :: Hash Raw - -- ^ returns root 'Hash' of Merkle Tree - } - deriving (Show, Eq, Ord, Generic) - deriving anyclass (NFData, NoThunks) - -instance Buildable (MerkleRoot a) where - build (MerkleRoot h) = "MerkleRoot|" <> build h - --- Used for debugging purposes only -instance ToJSON a => ToJSON (MerkleRoot a) - -instance EncCBOR a => ToCBOR (MerkleRoot a) where - toCBOR = toByronCBOR - -instance DecCBOR a => FromCBOR (MerkleRoot a) where - fromCBOR = fromByronCBOR - -instance EncCBOR a => EncCBOR (MerkleRoot a) where - encCBOR = encCBOR . getMerkleRoot - encodedSizeExpr size = encodedSizeExpr size . fmap getMerkleRoot - -instance DecCBOR a => DecCBOR (MerkleRoot a) where - decCBOR = MerkleRoot <$> decCBOR - -merkleRootToBuilder :: MerkleRoot a -> Builder -merkleRootToBuilder (MerkleRoot h) = byteString (hashToBytes h) - -mkRoot :: MerkleRoot a -> MerkleRoot a -> MerkleRoot a -mkRoot a b = - MerkleRoot - . hashRaw - . toLazyByteString - $ mconcat - [word8 1, merkleRootToBuilder a, merkleRootToBuilder b] - -emptyHash :: MerkleRoot a -emptyHash = MerkleRoot (hashRaw mempty) - --------------------------------------------------------------------------------- --- MerkleTree --------------------------------------------------------------------------------- - -data MerkleTree a - = MerkleEmpty - | MerkleTree !Word32 !(MerkleNode a) - deriving (Eq, Generic) - deriving anyclass (NFData) - -instance Foldable MerkleTree where - foldMap _ MerkleEmpty = mempty - foldMap f (MerkleTree _ n) = Foldable.foldMap f n - - null MerkleEmpty = True - null _ = False - - length MerkleEmpty = 0 - length (MerkleTree s _) = fromIntegral s - -instance Show a => Show (MerkleTree a) where - show tree = "Merkle tree: " <> show (Foldable.toList tree) - -instance EncCBOR a => ToCBOR (MerkleTree a) where - toCBOR = toByronCBOR - -instance (DecCBOR a, EncCBOR a) => FromCBOR (MerkleTree a) where - fromCBOR = fromByronCBOR - --- This instance is both faster and more space-efficient (as confirmed by a --- benchmark). Hashing turns out to be faster than decoding extra data. -instance EncCBOR a => EncCBOR (MerkleTree a) where - encCBOR = encCBOR . Foldable.toList - -instance (DecCBOR a, EncCBOR a) => DecCBOR (MerkleTree a) where - decCBOR = mkMerkleTree <$> decCBOR - --- | Smart constructor for 'MerkleTree' -mkMerkleTree :: EncCBOR a => [a] -> MerkleTree a -mkMerkleTree = mkMerkleTree' (mkLeaf . getConst) . fmap Const - --- | Reconstruct a 'MerkleTree' from a decoded list of items -mkMerkleTreeDecoded :: [Annotated a ByteString] -> MerkleTree a -mkMerkleTreeDecoded = mkMerkleTree' mkLeafDecoded - -mkMerkleTree' :: - forall f a b. (f a b -> MerkleNode a) -> [f a b] -> MerkleTree a -mkMerkleTree' _ [] = MerkleEmpty -mkMerkleTree' leafBuilder ls = MerkleTree (fromIntegral lsLen) (go lsLen ls) - where - lsLen = length ls - go :: Int -> [f a b] -> MerkleNode a - go _ [x] = leafBuilder x - go len xs = mkBranch (go i l) (go (len - i) r) - where - i = powerOfTwo len - (l, r) = splitAt i xs - --- | Return the largest power of two such that it's smaller than X. --- --- >>> powerOfTwo 64 --- 32 --- >>> powerOfTwo 65 --- 64 -powerOfTwo :: forall a. (Bits a, Num a) => a -> a -powerOfTwo n - | n .&. (n - 1) == 0 = n `shiftR` 1 - | otherwise = go n - where - {- “x .&. (x - 1)” clears the least significant bit: - - ↓ - 01101000 x - 01100111 x - 1 - -------- - 01100000 x .&. (x - 1) - - I could've used something like “until (\x -> x*2 > w) (*2) 1”, - but bit tricks are fun. -} - go :: a -> a - go w = if w .&. (w - 1) == 0 then w else go (w .&. (w - 1)) - --- | Returns root of Merkle tree -mtRoot :: MerkleTree a -> MerkleRoot a -mtRoot MerkleEmpty = emptyHash -mtRoot (MerkleTree _ n) = nodeRoot n - --------------------------------------------------------------------------------- --- MerkleNode --------------------------------------------------------------------------------- - -data MerkleNode a - = -- | MerkleBranch mRoot mLeft mRight - MerkleBranch !(MerkleRoot a) !(MerkleNode a) !(MerkleNode a) - | -- | MerkleLeaf mRoot mVal - MerkleLeaf !(MerkleRoot a) a - deriving (Eq, Show, Generic) - deriving anyclass (NFData) - -instance Foldable MerkleNode where - foldMap f x = case x of - MerkleLeaf _ mVal -> f mVal - MerkleBranch _ mLeft mRight -> - Foldable.foldMap f mLeft `mappend` Foldable.foldMap f mRight - -toLazyByteString :: Builder -> LBS.ByteString -toLazyByteString = - Builder.toLazyByteStringWith (Builder.safeStrategy 1024 4096) mempty - -nodeRoot :: MerkleNode a -> MerkleRoot a -nodeRoot (MerkleLeaf root _) = root -nodeRoot (MerkleBranch root _ _) = root - -mkLeaf :: forall a. EncCBOR a => a -> MerkleNode a -mkLeaf a = MerkleLeaf mRoot a - where - mRoot :: MerkleRoot a - mRoot = - MerkleRoot - $ hashRaw - (toLazyByteString (word8 0 <> serializeBuilder byronProtVer a)) - -mkLeafDecoded :: Annotated a ByteString -> MerkleNode a -mkLeafDecoded a = MerkleLeaf mRoot (unAnnotated a) - where - mRoot :: MerkleRoot a - mRoot = MerkleRoot . coerce . hashDecoded $ prependTag <$> a - - prependTag = (LBS.toStrict (toLazyByteString (word8 0)) <>) - -mkBranch :: MerkleNode a -> MerkleNode a -> MerkleNode a -mkBranch nodeA nodeB = MerkleBranch root nodeA nodeB - where - root = mkRoot (nodeRoot nodeA) (nodeRoot nodeB) diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Common/NetworkMagic.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Common/NetworkMagic.hs deleted file mode 100644 index 4a8ae454200..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Common/NetworkMagic.hs +++ /dev/null @@ -1,84 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} - -module Cardano.Chain.Common.NetworkMagic ( - NetworkMagic (..), - makeNetworkMagic, -) -where - -import Cardano.Crypto.ProtocolMagic ( - AProtocolMagic (..), - RequiresNetworkMagic (..), - getProtocolMagic, - ) -import Cardano.HeapWords (HeapWords (..)) -import Cardano.Ledger.Binary ( - DecCBOR (..), - DecoderError (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - cborError, - decodeListLen, - decodeWord8, - encodeListLen, - fromByronCBOR, - matchSize, - toByronCBOR, - ) -import Cardano.Prelude hiding (cborError, (%)) -import Data.Aeson (ToJSON) -import Formatting (bprint, build, (%)) -import qualified Formatting.Buildable as B -import NoThunks.Class (NoThunks (..)) - --------------------------------------------------------------------------------- --- NetworkMagic --------------------------------------------------------------------------------- - -data NetworkMagic - = NetworkMainOrStage - | NetworkTestnet {-# UNPACK #-} !Word32 - deriving (Show, Eq, Ord, Generic, NFData, NoThunks) - -instance B.Buildable NetworkMagic where - build NetworkMainOrStage = "NetworkMainOrStage" - build (NetworkTestnet n) = bprint ("NetworkTestnet (" % build % ")") n - --- Used for debugging purposes only -instance ToJSON NetworkMagic - -instance HeapWords NetworkMagic where - heapWords NetworkMainOrStage = 0 - heapWords (NetworkTestnet _) = 2 - -instance ToCBOR NetworkMagic where - toCBOR = toByronCBOR - -instance FromCBOR NetworkMagic where - fromCBOR = fromByronCBOR - -instance EncCBOR NetworkMagic where - encCBOR = \case - NetworkMainOrStage -> - encodeListLen 1 <> encCBOR @Word8 0 - NetworkTestnet n -> - encodeListLen 2 <> encCBOR @Word8 1 <> encCBOR n - -instance DecCBOR NetworkMagic where - decCBOR = do - len <- decodeListLen - tag <- decodeWord8 - case tag of - 0 -> matchSize "NetworkMagic" 1 len $> NetworkMainOrStage - 1 -> matchSize "NetworkMagic" 2 len >> NetworkTestnet <$> decCBOR - _ -> cborError $ DecoderErrorUnknownTag "NetworkMagic" tag - -makeNetworkMagic :: AProtocolMagic a -> NetworkMagic -makeNetworkMagic pm = case getRequiresNetworkMagic pm of - RequiresNoMagic -> NetworkMainOrStage - RequiresMagic -> NetworkTestnet (getProtocolMagic pm) diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Common/TxFeePolicy.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Common/TxFeePolicy.hs deleted file mode 100644 index c9d861bde8d..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Common/TxFeePolicy.hs +++ /dev/null @@ -1,129 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NumDecimals #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE UndecidableInstances #-} - -module Cardano.Chain.Common.TxFeePolicy ( - TxFeePolicy (..), -) -where - -import Cardano.Chain.Common.CBOR ( - decodeKnownCborDataItem, - encodeKnownCborDataItem, - ) -import Cardano.Chain.Common.Lovelace ( - Lovelace, - LovelaceError, - lovelaceToInteger, - mkLovelace, - ) -import Cardano.Chain.Common.TxSizeLinear (TxSizeLinear (..)) -import Cardano.Ledger.Binary ( - DecCBOR (..), - DecoderError (DecoderErrorUnknownTag), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - cborError, - encodeListLen, - enforceSize, - fromByronCBOR, - toByronCBOR, - ) -import Cardano.Prelude hiding (cborError) -import qualified Data.Aeson as Aeson -import Formatting (bprint, build, formatToString) -import qualified Formatting.Buildable as B -import NoThunks.Class (NoThunks (..)) -import Text.JSON.Canonical ( - FromJSON (..), - ToJSON (..), - expected, - fromJSField, - mkObject, - ) - --- | Transaction fee policy represents a formula to compute the minimal allowed --- Fee for a transaction. Transactions with lesser fees won't be accepted. The --- Minimal fee may depend on the properties of a transaction (for example, its --- Size in bytes), so the policy can't be represented simply as a number. --- --- Recall that a transaction fee is the difference between the sum of its --- Inputs and the sum of its outputs. The transaction is accepted when --- @minimal_fee(tx) <= fee(tx)@, where @minimal_fee@ is the function defined --- By the policy. --- --- The policy can change during the lifetime of the blockchain (using the --- Update mechanism). At the moment we have just one policy type (a linear --- Equation on the transaction size), but in the future other policies may Be --- added. To make this future-proof, we also have an "unknown" policy used By --- older node versions (the ones that haven't updated yet). -data TxFeePolicy - = TxFeePolicyTxSizeLinear !TxSizeLinear - deriving (Eq, Ord, Show, Generic) - deriving anyclass (NFData, NoThunks) - -instance B.Buildable TxFeePolicy where - build (TxFeePolicyTxSizeLinear tsp) = - bprint ("policy(tx-size-linear): " . build) tsp - --- Used for debugging purposes only -instance Aeson.ToJSON TxFeePolicy - -instance ToCBOR TxFeePolicy where - toCBOR = toByronCBOR - -instance FromCBOR TxFeePolicy where - fromCBOR = fromByronCBOR - -instance EncCBOR TxFeePolicy where - encCBOR policy = case policy of - TxFeePolicyTxSizeLinear txSizeLinear -> - encodeListLen 2 - <> encCBOR (0 :: Word8) - <> encodeKnownCborDataItem txSizeLinear - -instance DecCBOR TxFeePolicy where - decCBOR = do - enforceSize "TxFeePolicy" 2 - tag <- decCBOR @Word8 - case tag of - 0 -> TxFeePolicyTxSizeLinear <$> decodeKnownCborDataItem - _ -> cborError $ DecoderErrorUnknownTag "TxFeePolicy" tag - -instance Monad m => ToJSON m TxFeePolicy where - -- We multiply by 1e9 to keep compatibility with 'Nano' coefficients - toJSON (TxFeePolicyTxSizeLinear (TxSizeLinear summand multiplier)) = - mkObject - [ ("summand", toJSON $ 1e9 * lovelaceToInteger summand) - , ("multiplier", toJSON (floor $ 1e9 * multiplier :: Integer)) - ] - -instance MonadError SchemaError m => FromJSON m TxFeePolicy where - -- We div by 1e9 to keep compatibility with 'Nano' coefficients - fromJSON obj = do - summand <- - wrapLovelaceError - . mkLovelace - . (`div` 1e9) - =<< fromJSField - obj - "summand" - multiplier <- - (% 1e9) - <$> fromJSField - obj - "multiplier" - return $ TxFeePolicyTxSizeLinear (TxSizeLinear summand multiplier) - where - wrapLovelaceError :: Either LovelaceError Lovelace -> m Lovelace - wrapLovelaceError = - either (expected "Lovelace" . Just . formatToString build) pure diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Common/TxSizeLinear.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Common/TxSizeLinear.hs deleted file mode 100644 index 7346084de68..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Common/TxSizeLinear.hs +++ /dev/null @@ -1,90 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} - -module Cardano.Chain.Common.TxSizeLinear ( - TxSizeLinear (..), - txSizeLinearMinValue, - calculateTxSizeLinear, -) -where - -import Cardano.Chain.Common.Lovelace ( - Lovelace, - LovelaceError, - addLovelace, - integerToLovelace, - mkLovelace, - scaleLovelaceRationalUp, - unsafeGetLovelace, - ) -import Cardano.Ledger.Binary ( - DecCBOR (..), - Decoder, - DecoderError (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - encodeListLen, - enforceSize, - fromByronCBOR, - toByronCBOR, - toCborError, - ) -import Cardano.Prelude hiding (toCborError) -import Data.Aeson (ToJSON) -import Data.Fixed (Nano) -import Formatting (bprint, build, sformat) -import qualified Formatting.Buildable as B -import NoThunks.Class (NoThunks (..)) - --- | A linear equation on the transaction size. Represents the @\s -> a + b*s@ --- function where @s@ is the transaction size in bytes, @a@ and @b@ are --- constant coefficients. -data TxSizeLinear - = TxSizeLinear !Lovelace !Rational - deriving (Eq, Ord, Show, Generic) - deriving anyclass (NFData, NoThunks) - -instance B.Buildable TxSizeLinear where - build (TxSizeLinear a b) = bprint (build . " + " . build . "*s") a b - -instance ToCBOR TxSizeLinear where - toCBOR = toByronCBOR - -instance FromCBOR TxSizeLinear where - fromCBOR = fromByronCBOR - --- Used for debugging purposes only -instance ToJSON TxSizeLinear - -instance EncCBOR TxSizeLinear where - -- We encode as 'Nano' for backwards compatibility - encCBOR (TxSizeLinear a b) = - encodeListLen 2 - <> encCBOR (fromIntegral (unsafeGetLovelace a) :: Nano) - <> encCBOR (fromRational b :: Nano) - -instance DecCBOR TxSizeLinear where - decCBOR = do - enforceSize "TxSizeLinear" 2 - !a <- wrapLovelaceError . mkLovelace . round =<< decCBOR @Nano - !b <- toRational <$> decCBOR @Nano - return $ TxSizeLinear a b - where - wrapLovelaceError :: Either LovelaceError Lovelace -> Decoder s Lovelace - wrapLovelaceError = - toCborError . first (DecoderErrorCustom "TxSizeLinear" . sformat build) - -calculateTxSizeLinear :: - TxSizeLinear -> Natural -> Either LovelaceError Lovelace -calculateTxSizeLinear (TxSizeLinear a b) sz = - addLovelace a - =<< flip scaleLovelaceRationalUp b - <$> integerToLovelace (fromIntegral sz) - -txSizeLinearMinValue :: TxSizeLinear -> Lovelace -txSizeLinearMinValue (TxSizeLinear a _) = a diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Constants.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Constants.hs deleted file mode 100644 index 09d09527e8e..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Constants.hs +++ /dev/null @@ -1,16 +0,0 @@ --- | Non-configurable constants --- For configurable constants, see Cardano.Genesis.Configuration. -module Cardano.Chain.Constants ( - sharedSeedLength, -) -where - -import Cardano.Prelude - --------------------------------------------------------------------------------- --- Constants which are not configurable --------------------------------------------------------------------------------- - --- | Length of shared seed. -sharedSeedLength :: Integral a => a -sharedSeedLength = 32 diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Delegation.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Delegation.hs deleted file mode 100644 index ca92e2b43db..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Delegation.hs +++ /dev/null @@ -1,8 +0,0 @@ -module Cardano.Chain.Delegation ( - module X, -) -where - -import Cardano.Chain.Delegation.Certificate as X -import Cardano.Chain.Delegation.Map as X -import Cardano.Chain.Delegation.Payload as X diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Delegation/Certificate.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Delegation/Certificate.hs deleted file mode 100644 index f0ef1d5196d..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Delegation/Certificate.hs +++ /dev/null @@ -1,265 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveFunctor #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Chain.Delegation.Certificate ( - -- * Certificate - Certificate, - ACertificate (..), - CertificateId, - - -- * Certificate Constructors - signCertificate, - unsafeCertificate, - - -- * Certificate Accessor - epoch, - recoverCertificateId, - - -- * Certificate Predicate - isValid, -) -where - -import Cardano.Chain.Slotting (EpochNumber) -import Cardano.Crypto ( - Hash, - ProtocolMagicId, - SafeSigner, - SignTag (SignCertificate), - Signature, - VerificationKey (unVerificationKey), - hashDecoded, - safeSign, - safeToVerification, - verifySignatureDecoded, - ) -import qualified Cardano.Crypto.Wallet as CC -import Cardano.Ledger.Binary ( - Annotated (Annotated, unAnnotated), - ByteSpan, - DecCBOR (..), - Decoded (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - annotatedDecoder, - byronProtVer, - decCBORAnnotated, - encodeListLen, - enforceSize, - fromByronCBOR, - serialize', - toByronCBOR, - ) -import Cardano.Prelude -import qualified Data.Aeson as Aeson -import Data.Coerce (coerce) -import Formatting (bprint, build) -import qualified Formatting.Buildable as B -import NoThunks.Class (NoThunks (..)) -import Text.JSON.Canonical ( - FromJSON (..), - Int54, - JSValue (..), - ToJSON (..), - fromJSField, - mkObject, - ) - --------------------------------------------------------------------------------- --- Certificate --------------------------------------------------------------------------------- - --- | A delegation certificate identifier (the 'Hash' of a 'Certificate'). -type CertificateId = Hash Certificate - -type Certificate = ACertificate () - --- | Delegation certificate allowing the @delegateVK@ to sign blocks on behalf --- of @issuerVK@ --- --- Each delegator can publish at most one 'Certificate' per 'EpochNumber', and --- that 'EpochNumber' must correspond to the current or next 'EpochNumber' at --- the time of publishing -data ACertificate a = UnsafeACertificate - { aEpoch :: !(Annotated EpochNumber a) - -- ^ The epoch from which the delegation is valid - , issuerVK :: !VerificationKey - -- ^ The issuer of the certificate, who delegates their right to sign blocks - , delegateVK :: !VerificationKey - -- ^ The delegate, who gains the right to sign blocks - , signature :: !(Signature EpochNumber) - -- ^ The signature that proves the certificate was issued by @issuerVK@ - , annotation :: !a - } - deriving (Eq, Ord, Show, Generic, Functor) - deriving anyclass (NFData, NoThunks) - --- Used for debugging purposes only -instance Aeson.ToJSON a => Aeson.ToJSON (ACertificate a) - --------------------------------------------------------------------------------- --- Certificate Constructors --------------------------------------------------------------------------------- - --- | Create a 'Certificate', signing it with the provided safe signer. -signCertificate :: - ProtocolMagicId -> - VerificationKey -> - EpochNumber -> - SafeSigner -> - Certificate -signCertificate protocolMagicId delegateVK epochNumber safeSigner = - UnsafeACertificate - { aEpoch = Annotated epochNumber () - , issuerVK = safeToVerification safeSigner - , delegateVK = delegateVK - , signature = coerce sig - , annotation = () - } - where - sig = - safeSign protocolMagicId SignCertificate safeSigner - $ mconcat - [ "00" - , CC.unXPub (unVerificationKey delegateVK) - , serialize' byronProtVer epochNumber - ] - --- | Create a certificate using the provided signature. -unsafeCertificate :: - EpochNumber -> - -- | The issuer of the certificate. See 'UnsafeACertificate'. - VerificationKey -> - -- | The delegate of the certificate. See 'UnsafeACertificate'. - VerificationKey -> - Signature EpochNumber -> - Certificate -unsafeCertificate e ivk dvk sig = UnsafeACertificate (Annotated e ()) ivk dvk sig () - --------------------------------------------------------------------------------- --- Certificate Accessor --------------------------------------------------------------------------------- - -epoch :: ACertificate a -> EpochNumber -epoch = unAnnotated . aEpoch - -recoverCertificateId :: ACertificate ByteString -> CertificateId -recoverCertificateId = hashDecoded - --------------------------------------------------------------------------------- --- Certificate Predicate --------------------------------------------------------------------------------- - --- | A 'Certificate' is valid if the 'Signature' is valid -isValid :: - Annotated ProtocolMagicId ByteString -> - ACertificate ByteString -> - Bool -isValid pm UnsafeACertificate {aEpoch, issuerVK, delegateVK, signature} = - verifySignatureDecoded - pm - SignCertificate - issuerVK - ( serialize' byronProtVer - . mappend ("00" <> CC.unXPub (unVerificationKey delegateVK)) - <$> aEpoch - ) - signature - --------------------------------------------------------------------------------- --- Certificate Binary Serialization --------------------------------------------------------------------------------- - -instance ToCBOR Certificate where - toCBOR = toByronCBOR - -instance FromCBOR Certificate where - fromCBOR = fromByronCBOR - -instance EncCBOR Certificate where - encCBOR cert = - encodeListLen 4 - <> encCBOR (epoch cert) - <> encCBOR (issuerVK cert) - <> encCBOR (delegateVK cert) - <> encCBOR (signature cert) - - encodedSizeExpr size cert = - 1 - + encodedSizeExpr size (epoch <$> cert) - + encodedSizeExpr size (issuerVK <$> cert) - + encodedSizeExpr size (delegateVK <$> cert) - + encodedSizeExpr size (signature <$> cert) - -instance DecCBOR Certificate where - decCBOR = void <$> decCBOR @(ACertificate ByteSpan) - -instance FromCBOR (ACertificate ByteSpan) where - fromCBOR = fromByronCBOR - -instance DecCBOR (ACertificate ByteSpan) where - decCBOR = do - Annotated (e, ivk, dvk, sig) byteSpan <- annotatedDecoder $ do - enforceSize "Delegation.Certificate" 4 - (,,,) - <$> decCBORAnnotated - <*> decCBOR - <*> decCBOR - <*> decCBOR - pure $ UnsafeACertificate e ivk dvk sig byteSpan - -instance Decoded (ACertificate ByteString) where - type BaseType (ACertificate ByteString) = Certificate - recoverBytes = annotation - --------------------------------------------------------------------------------- --- Certificate Formatting --------------------------------------------------------------------------------- - -instance B.Buildable (ACertificate a) where - build (UnsafeACertificate e iVK dVK _ _) = - bprint - ( "Delegation.Certificate { w = " - . build - . ", iVK = " - . build - . ", dVK = " - . build - . " }" - ) - (unAnnotated e) - iVK - dVK - --------------------------------------------------------------------------------- --- Certificate Canonical JSON --------------------------------------------------------------------------------- - -instance Monad m => ToJSON m Certificate where - toJSON cert = - mkObject - -- omega is encoded as a number, because in genesis we always set it to 0 - [ ("omega", pure (JSNum . fromIntegral $ epoch cert)) - , ("issuerPk", toJSON $ issuerVK cert) - , ("delegatePk", toJSON $ delegateVK cert) - , ("cert", toJSON $ signature cert) - ] - -instance MonadError SchemaError m => FromJSON m Certificate where - fromJSON obj = - unsafeCertificate - <$> (fromIntegral @Int54 <$> fromJSField obj "omega") - <*> fromJSField obj "issuerPk" - <*> fromJSField obj "delegatePk" - <*> fromJSField obj "cert" diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Delegation/Map.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Delegation/Map.hs deleted file mode 100644 index 69b5afb7c64..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Delegation/Map.hs +++ /dev/null @@ -1,97 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} - -module Cardano.Chain.Delegation.Map ( - Map (..), - - -- * Query - memberR, - notMemberR, - pairMember, - lookupR, - - -- * Update - insert, - - -- * Conversion/traversal - fromList, - keysSet, -) -where - -import Cardano.Chain.Common.KeyHash (KeyHash) -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - fromByronCBOR, - toByronCBOR, - ) -import Cardano.Prelude hiding (Map) -import Data.Bimap (Bimap) -import qualified Data.Bimap as Bimap -import qualified Data.Set as Set -import NoThunks.Class (NoThunks (..), noThunksInKeysAndValues) - -newtype Map = Map - { unMap :: Bimap KeyHash KeyHash - } - deriving (Eq, Show, Generic) - deriving anyclass (NFData) - -instance ToCBOR Map where - toCBOR = toByronCBOR - -instance FromCBOR Map where - fromCBOR = fromByronCBOR - -instance DecCBOR Map where - decCBOR = Map . Bimap.fromList <$> decCBOR - -instance EncCBOR Map where - encCBOR = encCBOR . Bimap.toList . unMap - --- | A 'Bimap' contains two regular 'Map's, which are spine strict; we therefore --- have to worry about the elements only -instance NoThunks Map where - wNoThunks ctxt = - noThunksInKeysAndValues ctxt - . Bimap.toList - . unMap - --------------------------------------------------------------------------------- --- Query --------------------------------------------------------------------------------- - -memberR :: KeyHash -> Map -> Bool -memberR b = Bimap.memberR b . unMap - --- TODO: maybe we should call these @delegate@ and @notADelegate@ (and add also a @delegator@) function. - -notMemberR :: KeyHash -> Map -> Bool -notMemberR b = Bimap.notMemberR b . unMap - -pairMember :: (KeyHash, KeyHash) -> Map -> Bool -pairMember p = Bimap.pairMember p . unMap - -lookupR :: KeyHash -> Map -> Maybe KeyHash -lookupR b = Bimap.lookupR b . unMap - --------------------------------------------------------------------------------- --- Update --------------------------------------------------------------------------------- - -insert :: KeyHash -> KeyHash -> Map -> Map -insert a b = Map . Bimap.insert a b . unMap - --------------------------------------------------------------------------------- --- Conversion/traversal --------------------------------------------------------------------------------- - -fromList :: [(KeyHash, KeyHash)] -> Map -fromList = Map . Bimap.fromList - -keysSet :: Map -> Set KeyHash -keysSet = Set.fromList . Bimap.keys . unMap diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Delegation/Payload.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Delegation/Payload.hs deleted file mode 100644 index 322fcf771d1..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Delegation/Payload.hs +++ /dev/null @@ -1,81 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveFunctor #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Cardano.Chain.Delegation.Payload ( - APayload (..), - Payload, - unsafePayload, -) -where - -import qualified Cardano.Chain.Delegation.Certificate as Delegation -import Cardano.Ledger.Binary ( - Annotated (..), - ByteSpan, - DecCBOR (..), - Decoded (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - annotatedDecoder, - fromByronCBOR, - toByronCBOR, - ) -import Cardano.Prelude -import Data.Aeson (ToJSON) -import Formatting (bprint, int) -import Formatting.Buildable (Buildable (..)) - --- | The delegation 'Payload' contains a list of delegation 'Certificate's -data APayload a = UnsafeAPayload - { getPayload :: [Delegation.ACertificate a] - , getAnnotation :: a - } - deriving (Show, Eq, Generic, Functor) - deriving anyclass (NFData) - -type Payload = APayload () - -unsafePayload :: [Delegation.Certificate] -> Payload -unsafePayload sks = UnsafeAPayload sks () - -instance Decoded (APayload ByteString) where - type BaseType (APayload ByteString) = Payload - recoverBytes = getAnnotation - -instance Buildable (APayload a) where - build (UnsafeAPayload psks _) = - bprint - ("proxy signing keys (" . int . " items): " . listJson . "\n") - (length psks) - psks - --- Used for debugging purposes only -instance ToJSON a => ToJSON (APayload a) - -instance ToCBOR Payload where - toCBOR = toByronCBOR - -instance FromCBOR Payload where - fromCBOR = fromByronCBOR - -instance EncCBOR Payload where - encCBOR = encCBOR . getPayload - -instance DecCBOR Payload where - decCBOR = void <$> decCBOR @(APayload ByteSpan) - -instance FromCBOR (APayload ByteSpan) where - fromCBOR = fromByronCBOR - -instance DecCBOR (APayload ByteSpan) where - decCBOR = do - (Annotated p a) <- annotatedDecoder decCBOR - pure (UnsafeAPayload p a) diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Delegation/Validation/Activation.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Delegation/Validation/Activation.hs deleted file mode 100644 index 60666ac28f6..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Delegation/Validation/Activation.hs +++ /dev/null @@ -1,80 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} - -module Cardano.Chain.Delegation.Validation.Activation ( - -- * Activation - State (..), - activateDelegation, -) -where - -import Cardano.Chain.Common (KeyHash) -import qualified Cardano.Chain.Delegation as Delegation -import Cardano.Chain.Delegation.Validation.Scheduling (ScheduledDelegation (..)) -import Cardano.Chain.Slotting (SlotNumber (..)) -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - encodeListLen, - enforceSize, - fromByronCBOR, - toByronCBOR, - ) -import Cardano.Prelude hiding (State) -import qualified Data.Map.Strict as M -import NoThunks.Class (NoThunks (..)) - --------------------------------------------------------------------------------- --- Activation --------------------------------------------------------------------------------- - --- | Maps containing, for each delegator, the active delegation and the slot it --- became active in. -data State = State - { delegationMap :: !Delegation.Map - , delegationSlots :: !(Map KeyHash SlotNumber) - } - deriving (Eq, Show, Generic, NFData, NoThunks) - -instance ToCBOR State where - toCBOR = toByronCBOR - -instance FromCBOR State where - fromCBOR = fromByronCBOR - -instance DecCBOR State where - decCBOR = do - enforceSize "State" 2 - State - <$> decCBOR - <*> decCBOR - -instance EncCBOR State where - encCBOR s = - encodeListLen 2 - <> encCBOR (delegationMap s) - <> encCBOR (delegationSlots s) - --- | Activate a 'ScheduledDelegation' if its activation slot is less than the --- previous delegation slot for this delegate, otherwise discard it. This is --- an implementation of the delegation activation rule in the ledger --- specification. -activateDelegation :: State -> ScheduledDelegation -> State -activateDelegation as delegation - | (delegate `Delegation.notMemberR` delegationMap) - && (prevDelegationSlot < slot || unSlotNumber slot == 0) = - State - { delegationMap = Delegation.insert delegator delegate delegationMap - , delegationSlots = M.insert delegator slot delegationSlots - } - | otherwise = as - where - State {delegationMap, delegationSlots} = as - ScheduledDelegation slot delegator delegate = delegation - - prevDelegationSlot = - fromMaybe (SlotNumber 0) $ M.lookup delegator delegationSlots diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Delegation/Validation/Interface.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Delegation/Validation/Interface.hs deleted file mode 100644 index 8b4220f8525..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Delegation/Validation/Interface.hs +++ /dev/null @@ -1,218 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TupleSections #-} - -module Cardano.Chain.Delegation.Validation.Interface ( - -- * Blockchain Interface - Environment (..), - State (..), - activateDelegations, - delegates, - delegationMap, - initialState, - tickDelegation, - updateDelegation, -) -where - -import Cardano.Chain.Common (BlockCount (..), KeyHash, hashKey) -import qualified Cardano.Chain.Delegation as Delegation -import Cardano.Chain.Delegation.Certificate (ACertificate, Certificate) -import qualified Cardano.Chain.Delegation.Validation.Activation as Activation -import qualified Cardano.Chain.Delegation.Validation.Scheduling as Scheduling -import Cardano.Chain.Genesis (GenesisDelegation (..)) -import Cardano.Chain.Slotting ( - EpochNumber, - SlotNumber (..), - ) -import Cardano.Crypto (ProtocolMagicId, VerificationKey) -import Cardano.Ledger.Binary ( - Annotated (..), - DecCBOR (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - byronProtVer, - encodeListLen, - enforceSize, - fromByronCBOR, - serialize', - toByronCBOR, - ) -import Cardano.Prelude hiding (State) -import qualified Data.Map.Strict as M -import qualified Data.Sequence as Seq -import qualified Data.Set as Set -import NoThunks.Class (NoThunks (..)) - --------------------------------------------------------------------------------- --- Blockchain Interface --------------------------------------------------------------------------------- - -data Environment = Environment - { protocolMagic :: !(Annotated ProtocolMagicId ByteString) - , allowedDelegators :: !(Set KeyHash) - , k :: !BlockCount - , currentEpoch :: !EpochNumber - , currentSlot :: !SlotNumber - } - deriving (Eq, Show, Generic, NFData) - --- | State shared between the blockchain and the ledger -data State = State - { schedulingState :: !Scheduling.State - , activationState :: !Activation.State - } - deriving (Eq, Show, Generic, NFData, NoThunks) - -instance ToCBOR State where - toCBOR = toByronCBOR - -instance FromCBOR State where - fromCBOR = fromByronCBOR - -instance DecCBOR State where - decCBOR = do - enforceSize "State" 2 - State - <$> decCBOR - <*> decCBOR - -instance EncCBOR State where - encCBOR s = - encodeListLen 2 - <> encCBOR (schedulingState s) - <> encCBOR (activationState s) - -delegationMap :: State -> Delegation.Map -delegationMap = Activation.delegationMap . activationState - --- | The initial state maps each genesis key to itself and overrides this using --- certificates from the genesis block. -initialState :: - MonadError Scheduling.Error m => - Environment -> - GenesisDelegation -> - m State -initialState env genesisDelegation = updateDelegation env' is certificates - where - Environment {allowedDelegators} = env - -- We modify the environment here to allow the delegation certificates to - -- be applied immediately. Since the environment is not propagated, this - -- should be harmless. - env' = env {k = BlockCount 0} - - is = - State - { schedulingState = - Scheduling.State - { Scheduling.scheduledDelegations = mempty - , Scheduling.keyEpochDelegations = mempty - } - , activationState = - Activation.State - { Activation.delegationMap = - Delegation.fromList - $ zip (toList allowedDelegators) (toList allowedDelegators) - , Activation.delegationSlots = - M.fromList - $ (,SlotNumber 0) - <$> toList allowedDelegators - } - } - - certificates = - fmap annotateCertificate . M.elems $ unGenesisDelegation genesisDelegation - - annotateCertificate :: Certificate -> ACertificate ByteString - annotateCertificate c = - c - { Delegation.aEpoch = - Annotated - (Delegation.epoch c) - (serialize' byronProtVer $ Delegation.epoch c) - , Delegation.annotation = serialize' byronProtVer c - } - --- | Check whether a delegation is valid in the 'State' -delegates :: State -> VerificationKey -> VerificationKey -> Bool -delegates is delegator delegate = - (hashKey delegator, hashKey delegate) - `Delegation.pairMember` delegationMap is - --- | Update the 'State' with a list of new 'Certificate's --- --- This corresponds to the `DELEG` rule from the Byron ledger specification -updateDelegation :: - MonadError Scheduling.Error m => - Environment -> - State -> - [ACertificate ByteString] -> - m State -updateDelegation env is certificates = do - -- Schedule new certificates - ss' <- - foldM - (Scheduling.scheduleCertificate schedulingEnv) - (schedulingState is) - certificates - - pure - $ tickDelegation - currentEpoch - currentSlot - is {schedulingState = ss'} - where - Environment {protocolMagic, allowedDelegators, k, currentEpoch, currentSlot} = - env - - schedulingEnv = - Scheduling.Environment - { Scheduling.protocolMagic = protocolMagic - , Scheduling.allowedDelegators = allowedDelegators - , Scheduling.currentEpoch = currentEpoch - , Scheduling.currentSlot = currentSlot - , Scheduling.k = k - } - --- | Perform delegation update without adding certificates -tickDelegation :: EpochNumber -> SlotNumber -> State -> State -tickDelegation currentEpoch currentSlot = - prune . activateDelegations currentSlot - where - prune s = - let ss' = pruneScheduledDelegations currentEpoch currentSlot (schedulingState s) - in s {schedulingState = ss'} - --- | Activate certificates up to this slot -activateDelegations :: SlotNumber -> State -> State -activateDelegations currentSlot s@(State ss as) = - let Scheduling.State delegations _keyEpochs = ss - as' = - foldl - Activation.activateDelegation - as - (Seq.filter ((<= currentSlot) . Scheduling.sdSlot) delegations) - in s {activationState = as'} - --- | Remove stale values from 'Scheduling.State' -pruneScheduledDelegations :: - EpochNumber -> - SlotNumber -> - Scheduling.State -> - Scheduling.State -pruneScheduledDelegations currentEpoch currentSlot ss = - let Scheduling.State delegations keyEpochs = ss - in Scheduling.State - { Scheduling.scheduledDelegations = - Seq.filter - ((currentSlot + 1 <=) . Scheduling.sdSlot) - delegations - , Scheduling.keyEpochDelegations = - Set.filter - ((>= currentEpoch) . fst) - keyEpochs - } diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Delegation/Validation/Scheduling.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Delegation/Validation/Scheduling.hs deleted file mode 100644 index 41ea08ccd1d..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Delegation/Validation/Scheduling.hs +++ /dev/null @@ -1,234 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} - -module Cardano.Chain.Delegation.Validation.Scheduling ( - -- * Scheduling - Environment (..), - State (..), - Error (..), - ScheduledDelegation (..), - scheduleCertificate, -) -where - -import Cardano.Chain.Common (BlockCount, KeyHash, hashKey) -import Cardano.Chain.Delegation.Certificate (ACertificate) -import qualified Cardano.Chain.Delegation.Certificate as Certificate -import Cardano.Chain.ProtocolConstants (kSlotSecurityParam) -import Cardano.Chain.Slotting ( - EpochNumber, - SlotNumber (..), - addSlotCount, - ) -import Cardano.Crypto (ProtocolMagicId) -import Cardano.Ledger.Binary ( - Annotated (..), - DecCBOR (..), - Decoder, - DecoderError (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - cborError, - decodeListLen, - decodeWord8, - encodeListLen, - enforceSize, - fromByronCBOR, - matchSize, - toByronCBOR, - ) -import Cardano.Prelude hiding (State, cborError) -import Data.Sequence ((|>)) -import qualified Data.Sequence as Seq -import qualified Data.Set as Set -import NoThunks.Class (NoThunks (..)) - --------------------------------------------------------------------------------- --- Scheduling --------------------------------------------------------------------------------- - -data Environment = Environment - { protocolMagic :: !(Annotated ProtocolMagicId ByteString) - , allowedDelegators :: !(Set KeyHash) - , currentEpoch :: !EpochNumber - , currentSlot :: !SlotNumber - , k :: !BlockCount - } - deriving (Eq, Show, Generic, NFData) - -data State = State - { scheduledDelegations :: !(Seq ScheduledDelegation) - , keyEpochDelegations :: !(Set (EpochNumber, KeyHash)) - } - deriving (Eq, Show, Generic, NFData, NoThunks) - -instance ToCBOR State where - toCBOR = toByronCBOR - -instance FromCBOR State where - fromCBOR = fromByronCBOR - -instance DecCBOR State where - decCBOR = do - enforceSize "State" 2 - State - <$> (Seq.fromList <$> decCBOR) - <*> decCBOR - -instance EncCBOR State where - encCBOR s = - encodeListLen 2 - <> encCBOR (toList (scheduledDelegations s)) - <> encCBOR (keyEpochDelegations s) - -data ScheduledDelegation = ScheduledDelegation - { sdSlot :: !SlotNumber - , sdDelegator :: !KeyHash - , sdDelegate :: !KeyHash - } - deriving (Eq, Show, Generic, NFData, NoThunks) - -instance ToCBOR ScheduledDelegation where - toCBOR = toByronCBOR - -instance FromCBOR ScheduledDelegation where - fromCBOR = fromByronCBOR - -instance DecCBOR ScheduledDelegation where - decCBOR = do - enforceSize "ScheduledDelegation" 3 - ScheduledDelegation - <$> decCBOR - <*> decCBOR - <*> decCBOR - -instance EncCBOR ScheduledDelegation where - encCBOR sd = - encodeListLen 3 - <> encCBOR (sdSlot sd) - <> encCBOR (sdDelegator sd) - <> encCBOR (sdDelegate sd) - -data Error - = -- | The delegation certificate has an invalid signature - InvalidCertificate - | -- | This delegator has already delegated for the given epoch - MultipleDelegationsForEpoch EpochNumber KeyHash - | -- | This delegator has already delgated in this slot - MultipleDelegationsForSlot SlotNumber KeyHash - | -- | This delegator is not one of the allowed genesis keys - NonGenesisDelegator KeyHash - | -- | This delegation is for a past or for a too future epoch - WrongEpoch EpochNumber EpochNumber - deriving (Eq, Show) - -instance ToCBOR Error where - toCBOR = toByronCBOR - -instance FromCBOR Error where - fromCBOR = fromByronCBOR - -instance EncCBOR Error where - encCBOR err = case err of - InvalidCertificate -> - encodeListLen 1 - <> encCBOR (0 :: Word8) - MultipleDelegationsForEpoch epochNumber keyHash -> - encodeListLen 3 - <> encCBOR (1 :: Word8) - <> encCBOR epochNumber - <> encCBOR keyHash - MultipleDelegationsForSlot slotNumber keyHash -> - encodeListLen 3 - <> encCBOR (2 :: Word8) - <> encCBOR slotNumber - <> encCBOR keyHash - NonGenesisDelegator keyHash -> - encodeListLen 2 - <> encCBOR (3 :: Word8) - <> encCBOR keyHash - WrongEpoch currentEpoch delegationEpoch -> - encodeListLen 3 - <> encCBOR (4 :: Word8) - <> encCBOR currentEpoch - <> encCBOR delegationEpoch - -instance DecCBOR Error where - decCBOR = do - len <- decodeListLen - let checkSize :: Int -> Decoder s () - checkSize size = matchSize "Scheduling.Error" size len - tag <- decodeWord8 - case tag of - 0 -> checkSize 1 >> pure InvalidCertificate - 1 -> checkSize 3 >> MultipleDelegationsForEpoch <$> decCBOR <*> decCBOR - 2 -> checkSize 3 >> MultipleDelegationsForSlot <$> decCBOR <*> decCBOR - 3 -> checkSize 2 >> NonGenesisDelegator <$> decCBOR - 4 -> checkSize 3 >> WrongEpoch <$> decCBOR <*> decCBOR - _ -> cborError $ DecoderErrorUnknownTag "Scheduling.Error" tag - --- | Update the delegation 'State' with a 'Certificate' if it passes --- all the validation rules. This is an implementation of the delegation --- scheduling inference rule from the ledger specification. -scheduleCertificate :: - MonadError Error m => - Environment -> - State -> - ACertificate ByteString -> - m State -scheduleCertificate env st cert = do - -- Check that the delegator is a genesis key - delegatorHash - `Set.member` allowedDelegators - `orThrowError` NonGenesisDelegator delegatorHash - - -- Check that the delegation epoch refers to the current or to the next epoch - currentEpoch - <= delegationEpoch - && delegationEpoch - <= currentEpoch - + 1 - `orThrowError` WrongEpoch currentEpoch delegationEpoch - - -- Check that the delegator hasn't already delegated in 'delegationEpoch' - (delegationEpoch, delegatorHash) - `Set.notMember` keyEpochDelegations - `orThrowError` MultipleDelegationsForEpoch delegationEpoch delegatorHash - - -- Check that the delegator hasn't issued a certificate in this slot - isNothing (Seq.findIndexL delegatesThisSlot scheduledDelegations) - `orThrowError` MultipleDelegationsForSlot currentSlot delegatorHash - - -- Check that the delegation certificate is valid - Certificate.isValid protocolMagic cert `orThrowError` InvalidCertificate - - -- Schedule the new delegation and register the epoch/delegator pair - pure - $ State - { scheduledDelegations = scheduledDelegations |> delegation - , keyEpochDelegations = - Set.insert - (delegationEpoch, delegatorHash) - keyEpochDelegations - } - where - Environment {protocolMagic, allowedDelegators, currentEpoch, currentSlot, k} = - env - - State {scheduledDelegations, keyEpochDelegations} = st - - delegatorHash = hashKey $ Certificate.issuerVK cert - delegateHash = hashKey $ Certificate.delegateVK cert - - delegationEpoch = Certificate.epoch cert - - activationSlot = addSlotCount (kSlotSecurityParam k) currentSlot - - delegatesThisSlot sd = - sdSlot sd == activationSlot && sdDelegator sd == delegatorHash - - delegation = ScheduledDelegation activationSlot delegatorHash delegateHash diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Epoch/File.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Epoch/File.hs deleted file mode 100644 index b599c2a0301..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Epoch/File.hs +++ /dev/null @@ -1,141 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} - -module Cardano.Chain.Epoch.File ( - mainnetEpochSlots, - parseEpochFileWithBoundary, - parseEpochFilesWithBoundary, - ParseError (..), -) -where - -import Cardano.Chain.Block.Block ( - ABlockOrBoundary (..), - decCBORABlockOrBoundary, - ) -import Cardano.Chain.Slotting (EpochSlots (..)) -import Cardano.Ledger.Binary (DecoderError, byronProtVer, decodeFullDecoder, slice) -import Cardano.Prelude -import Control.Monad.Trans.Resource (ResIO) -import qualified Data.Binary as B -import Data.Binary.Get (getWord32be) -import qualified Data.Binary.Get as B -import qualified Data.ByteString.Lazy as LBS -import Data.String (String) -import Streaming.Binary (decodedWith) -import qualified Streaming.ByteString as SBS -import Streaming.Prelude (Of (..), Stream) -import qualified Streaming.Prelude as S -import System.Directory (doesFileExist) -import System.FilePath ((-<.>)) - --- Epoch file format: --- --- EpochFile := "Epoch data v1\n" *SlotData --- SlotData := "blnd" BlockLength UndoLength Block Undo --- BlockLength := Word32BE --- UndoLength := Word32BE --- Block := CBOR --- Undo := CBOR - -epochHeader :: LBS.ByteString -epochHeader = "Epoch data v1\n" - -data ParseError - = -- | The CBOR is invalid - ParseErrorDecoder !DecoderError - | ParseErrorBinary !FilePath !B.ByteOffset !Text - | ParseErrorMissingHeader !FilePath - deriving (Eq, Show) - -loadFileWithHeader :: - FilePath -> LBS.ByteString -> SBS.ByteStream (ExceptT ParseError ResIO) () -loadFileWithHeader file header = - let bytes :: SBS.ByteStream (ExceptT ParseError ResIO) () - bytes = SBS.readFile file - - len :: Int64 - len = LBS.length header - in do - (h :> rest) <- lift $ SBS.toLazy $ SBS.splitAt len bytes - if h == header - then rest - else lift $ throwError (ParseErrorMissingHeader file) - --- | Slots per epoch used in mainnet --- --- This number has been fixed throughout the Byron era. -mainnetEpochSlots :: EpochSlots -mainnetEpochSlots = EpochSlots 21600 - -parseEpochFileWithBoundary :: - EpochSlots -> - FilePath -> - Stream - (Of (ABlockOrBoundary ByteString)) - (ExceptT ParseError ResIO) - () -parseEpochFileWithBoundary epochSlots file = do - s <- - S.mapM liftDecoderError - $ decodedWith (getSlotData epochSlots) (boundaryBytes <> bytes) - liftBinaryError s - where - boundaryBytes :: SBS.ByteStream (ExceptT ParseError ResIO) () - boundaryBytes = do - let boundaryFile = file -<.> "boundary" - boundaryExists <- liftIO $ doesFileExist boundaryFile - when boundaryExists $ SBS.readFile boundaryFile - - bytes = loadFileWithHeader file epochHeader - - liftDecoderError :: Either DecoderError a -> ExceptT ParseError ResIO a - liftDecoderError = \case - Right a -> pure a - Left err -> throwError (ParseErrorDecoder err) - - liftBinaryError :: - (a, B.ByteOffset, Either String ()) -> - Stream - (Of (ABlockOrBoundary ByteString)) - (ExceptT ParseError ResIO) - () - liftBinaryError = \case - (_, _, Right ()) -> pure () - (_, offset, Left message) -> - throwError (ParseErrorBinary file offset (toS message)) - -parseEpochFilesWithBoundary :: - EpochSlots -> - [FilePath] -> - Stream - (Of (ABlockOrBoundary ByteString)) - (ExceptT ParseError ResIO) - () -parseEpochFilesWithBoundary epochSlots fs = - foldr (<>) mempty (parseEpochFileWithBoundary epochSlots <$> fs) - -slotDataHeader :: LBS.ByteString -slotDataHeader = "blnd" - -getSlotData :: EpochSlots -> B.Get (Either DecoderError (ABlockOrBoundary ByteString)) -getSlotData epochSlots = runExceptT $ do - header <- lift $ B.getLazyByteString (LBS.length slotDataHeader) - lift $ guard (header == slotDataHeader) - blockSize <- lift getWord32be - undoSize <- lift getWord32be - block <- do - blockBytes <- lift $ B.getLazyByteString (fromIntegral blockSize) - bb <- - ExceptT - . pure - $ decodeFullDecoder - byronProtVer - "ABlockOrBoundary" - (decCBORABlockOrBoundary epochSlots) - blockBytes - pure $ map (LBS.toStrict . slice blockBytes) bb - -- Drop the Undo bytes as we no longer use these - void . lift $ B.getLazyByteString (fromIntegral undoSize) - pure block diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Epoch/Validation.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Epoch/Validation.hs deleted file mode 100644 index 2abb8326a7d..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Epoch/Validation.hs +++ /dev/null @@ -1,104 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} - -module Cardano.Chain.Epoch.Validation ( - EpochError (..), - validateEpochFile, - validateEpochFiles, -) -where - -import Cardano.Chain.Block ( - ABlockOrBoundary (..), - ChainValidationError, - ChainValidationState (..), - blockSlot, - updateChainBlockOrBoundary, - ) -import Cardano.Chain.Epoch.File ( - ParseError, - mainnetEpochSlots, - parseEpochFileWithBoundary, - parseEpochFilesWithBoundary, - ) -import qualified Cardano.Chain.Genesis as Genesis -import Cardano.Chain.Slotting ( - EpochAndSlotCount, - fromSlotNumber, - ) -import Cardano.Chain.ValidationMode (ValidationMode) -import Cardano.Prelude hiding (trace) -import Control.Monad.Trans.Resource (ResIO, runResourceT) -import Control.Tracer -import Streaming (Of (..), Stream, hoist) -import qualified Streaming.Prelude as S - -data EpochError - = EpochParseError ParseError - | EpochChainValidationError (Maybe EpochAndSlotCount) ChainValidationError - | Initial - deriving (Eq, Show) - --- | Check that a single epoch's `Block`s are valid by folding over them --- TODO(KS): We should use contra-tracer here! --- tracing is orthogonal to throwing errors; it does not change the program flow. -validateEpochFile :: - forall m. - MonadIO m => - Tracer m EpochError -> - ValidationMode -> - Genesis.Config -> - ChainValidationState -> - FilePath -> - m ChainValidationState -validateEpochFile tr vMode config cvs fp = do - res <- - liftIO - $ runResourceT - $ (`runReaderT` vMode) - $ runExceptT - $ foldChainValidationState config cvs stream - - case res of - Left e -> traceWith tr e >> pure cvs - Right cvs' -> pure cvs' - where - stream = parseEpochFileWithBoundary mainnetEpochSlots fp - --- | Check that a list of epochs 'Block's are valid. -validateEpochFiles :: - ValidationMode -> - Genesis.Config -> - ChainValidationState -> - [FilePath] -> - IO (Either EpochError ChainValidationState) -validateEpochFiles vMode config cvs fps = - runResourceT - $ (`runReaderT` vMode) - $ runExceptT - (foldChainValidationState config cvs stream) - where - stream = parseEpochFilesWithBoundary mainnetEpochSlots fps - --- | Fold chain validation over a 'Stream' of 'Block's -foldChainValidationState :: - Genesis.Config -> - ChainValidationState -> - Stream (Of (ABlockOrBoundary ByteString)) (ExceptT ParseError ResIO) () -> - ExceptT EpochError (ReaderT ValidationMode ResIO) ChainValidationState -foldChainValidationState config chainValState blocks = - S.foldM_ - ( \cvs block -> - withExceptT (EpochChainValidationError (blockOrBoundarySlot block)) - $ updateChainBlockOrBoundary config cvs block - ) - (pure chainValState) - pure - (pure (hoist (withExceptT EpochParseError) blocks)) - where - blockOrBoundarySlot :: ABlockOrBoundary a -> Maybe EpochAndSlotCount - blockOrBoundarySlot = \case - ABOBBoundary _ -> Nothing - ABOBBlock block -> Just . fromSlotNumber mainnetEpochSlots $ blockSlot block diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Genesis.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Genesis.hs deleted file mode 100644 index 5b3fbc61704..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Genesis.hs +++ /dev/null @@ -1,15 +0,0 @@ -module Cardano.Chain.Genesis ( - module X, -) -where - -import Cardano.Chain.Genesis.AvvmBalances as X -import Cardano.Chain.Genesis.Config as X -import Cardano.Chain.Genesis.Data as X -import Cardano.Chain.Genesis.Delegation as X -import Cardano.Chain.Genesis.Generate as X -import Cardano.Chain.Genesis.Hash as X -import Cardano.Chain.Genesis.Initializer as X -import Cardano.Chain.Genesis.KeyHashes as X -import Cardano.Chain.Genesis.NonAvvmBalances as X -import Cardano.Chain.Genesis.Spec as X diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Genesis/AvvmBalances.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Genesis/AvvmBalances.hs deleted file mode 100644 index 7a29587d29a..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Genesis/AvvmBalances.hs +++ /dev/null @@ -1,59 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -fno-warn-missed-specialisations #-} - -module Cardano.Chain.Genesis.AvvmBalances ( - GenesisAvvmBalances (..), -) -where - -import Cardano.Chain.Common (Lovelace) -import Cardano.Crypto.Signing.Redeem (CompactRedeemVerificationKey) -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - encodeListLen, - enforceSize, - fromByronCBOR, - toByronCBOR, - ) -import Cardano.Prelude -import NoThunks.Class (NoThunks (..)) -import Text.JSON.Canonical (FromJSON (..), ToJSON (..)) - --- | Predefined balances of AVVM (Ada Voucher Vending Machine) entries. --- People who purchased Ada at a pre-sale were issued a certificate during --- the pre-sale period. These certificates allow customers to redeem ADA. -newtype GenesisAvvmBalances = GenesisAvvmBalances - { unGenesisAvvmBalances :: Map CompactRedeemVerificationKey Lovelace - } - deriving (Show, Eq, Semigroup, NoThunks) - -instance Monad m => ToJSON m GenesisAvvmBalances where - toJSON = toJSON . unGenesisAvvmBalances - -instance MonadError SchemaError m => FromJSON m GenesisAvvmBalances where - fromJSON = fmap (GenesisAvvmBalances . forceElemsToWHNF) . fromJSON - -instance ToCBOR GenesisAvvmBalances where - toCBOR = toByronCBOR - -instance FromCBOR GenesisAvvmBalances where - fromCBOR = fromByronCBOR - -instance EncCBOR GenesisAvvmBalances where - encCBOR (GenesisAvvmBalances gab) = - encodeListLen 1 - <> encCBOR @(Map CompactRedeemVerificationKey Lovelace) gab - -instance DecCBOR GenesisAvvmBalances where - decCBOR = do - enforceSize "GenesisAvvmBalances" 1 - GenesisAvvmBalances <$> decCBOR @(Map CompactRedeemVerificationKey Lovelace) diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Genesis/Config.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Genesis/Config.hs deleted file mode 100644 index b196afa3a07..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Genesis/Config.hs +++ /dev/null @@ -1,200 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} - -module Cardano.Chain.Genesis.Config ( - Config (..), - ConfigurationError (..), - configGenesisHeaderHash, - configK, - configSlotSecurityParam, - configChainQualityThreshold, - configEpochSlots, - configProtocolMagic, - configProtocolMagicId, - configGenesisKeyHashes, - configHeavyDelegation, - configStartTime, - configNonAvvmBalances, - configProtocolParameters, - configAvvmDistr, - mkConfigFromFile, -) -where - -import Cardano.Chain.Block.Header (HeaderHash, genesisHeaderHash) -import Cardano.Chain.Common (BlockCount) -import Cardano.Chain.Genesis.AvvmBalances (GenesisAvvmBalances (..)) -import Cardano.Chain.Genesis.Data ( - GenesisData (..), - GenesisDataError, - readGenesisData, - ) -import Cardano.Chain.Genesis.Delegation (GenesisDelegation) -import Cardano.Chain.Genesis.Hash (GenesisHash (..)) -import Cardano.Chain.Genesis.KeyHashes (GenesisKeyHashes) -import Cardano.Chain.Genesis.NonAvvmBalances (GenesisNonAvvmBalances) -import Cardano.Chain.ProtocolConstants ( - kChainQualityThreshold, - kEpochSlots, - kSlotSecurityParam, - ) -import Cardano.Chain.Slotting (EpochSlots, SlotCount) -import Cardano.Chain.UTxO.UTxOConfiguration ( - UTxOConfiguration, - defaultUTxOConfiguration, - ) -import Cardano.Chain.Update (ProtocolParameters) -import Cardano.Crypto ( - AProtocolMagic (..), - Hash, - ProtocolMagic, - ProtocolMagicId (..), - RequiresNetworkMagic, - ) -import Cardano.Crypto.Raw (Raw) -import Cardano.Ledger.Binary ( - Annotated (..), - DecCBOR (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - encodeListLen, - enforceSize, - fromByronCBOR, - toByronCBOR, - ) -import Cardano.Prelude -import Data.Time (UTCTime) -import NoThunks.Class (NoThunks (..)) - --------------------------------------------------------------------------------- --- Config --------------------------------------------------------------------------------- - -data Config = Config - { configGenesisData :: !GenesisData - -- ^ The data needed at genesis - , configGenesisHash :: !GenesisHash - -- ^ The hash of the canonical JSON representation of the 'GenesisData' - , configReqNetMagic :: !RequiresNetworkMagic - -- ^ Differentiates between Testnet and Mainet/Staging - , configUTxOConfiguration :: !UTxOConfiguration - -- ^ Extra local data used in UTxO validation rules - } - deriving (Generic, Eq, Show, NoThunks) - -configGenesisHeaderHash :: Config -> HeaderHash -configGenesisHeaderHash = genesisHeaderHash . configGenesisHash - -configK :: Config -> BlockCount -configK = gdK . configGenesisData - -configSlotSecurityParam :: Config -> SlotCount -configSlotSecurityParam = kSlotSecurityParam . configK - -configChainQualityThreshold :: Fractional f => Config -> f -configChainQualityThreshold = kChainQualityThreshold . configK - -configEpochSlots :: Config -> EpochSlots -configEpochSlots = kEpochSlots . configK - --- | There isn't a full @ProtocolMagic@ in @Config@, but the requisite --- @ProtocolMagicId@ and @RequiresNetworkMagic@ are stored separately. --- We use them to construct and return a @ProtocolMagic@. -configProtocolMagic :: Config -> ProtocolMagic -configProtocolMagic config = AProtocolMagic (Annotated pmi ()) rnm - where - pmi = configProtocolMagicId config - rnm = configReqNetMagic config - -configProtocolMagicId :: Config -> ProtocolMagicId -configProtocolMagicId = gdProtocolMagicId . configGenesisData - -configGenesisKeyHashes :: Config -> GenesisKeyHashes -configGenesisKeyHashes = gdGenesisKeyHashes . configGenesisData - -configHeavyDelegation :: Config -> GenesisDelegation -configHeavyDelegation = gdHeavyDelegation . configGenesisData - -configStartTime :: Config -> UTCTime -configStartTime = gdStartTime . configGenesisData - -configNonAvvmBalances :: Config -> GenesisNonAvvmBalances -configNonAvvmBalances = gdNonAvvmBalances . configGenesisData - -configProtocolParameters :: Config -> ProtocolParameters -configProtocolParameters = gdProtocolParameters . configGenesisData - -configAvvmDistr :: Config -> GenesisAvvmBalances -configAvvmDistr = gdAvvmDistr . configGenesisData - --- | Construct a 'Config' from an external genesis file. --- --- The 'FilePath' refers to a canonical JSON file. It will be hashed and --- checked against the expected hash, which should be known from config. -mkConfigFromFile :: - (MonadError ConfigurationError m, MonadIO m) => - RequiresNetworkMagic -> - FilePath -> - -- | The expected hash of the file - Hash Raw -> - m Config -mkConfigFromFile rnm fp expectedHash = do - (genesisData, genesisHash) <- - (`wrapError` ConfigurationGenesisDataError) - =<< runExceptT - (readGenesisData fp) - - (unGenesisHash genesisHash == expectedHash) - `orThrowError` GenesisHashMismatch genesisHash expectedHash - - pure - $ Config - { configGenesisData = genesisData - , configGenesisHash = genesisHash - , configReqNetMagic = rnm - , configUTxOConfiguration = defaultUTxOConfiguration -- TODO: add further config plumbing - } - -data ConfigurationError - = -- | An error in constructing 'GenesisData' - ConfigurationGenesisDataError GenesisDataError - | -- | The GenesisData canonical JSON hash is different than expected - GenesisHashMismatch GenesisHash (Hash Raw) - | -- | An error occured while decoding the genesis hash. - GenesisHashDecodeError Text - deriving (Show) - -instance ToCBOR Config where - toCBOR = toByronCBOR - -instance FromCBOR Config where - fromCBOR = fromByronCBOR - -instance EncCBOR Config where - encCBOR - ( Config - configGenesisData_ - configGenesisHash_ - configReqNetMagic_ - configUTxOConfiguration_ - ) = - mconcat - [ encodeListLen 4 - , encCBOR @GenesisData configGenesisData_ - , encCBOR @GenesisHash configGenesisHash_ - , encCBOR @RequiresNetworkMagic configReqNetMagic_ - , encCBOR @UTxOConfiguration configUTxOConfiguration_ - ] - -instance DecCBOR Config where - decCBOR = do - enforceSize "Config" 4 - Config - <$> decCBOR @GenesisData - <*> decCBOR @GenesisHash - <*> decCBOR @RequiresNetworkMagic - <*> decCBOR @UTxOConfiguration diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Genesis/Data.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Genesis/Data.hs deleted file mode 100644 index 9e9e880bab8..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Genesis/Data.hs +++ /dev/null @@ -1,185 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE UndecidableInstances #-} - -module Cardano.Chain.Genesis.Data ( - GenesisData (..), - GenesisDataError (..), - mainnetProtocolMagicId, - readGenesisData, -) -where - -import Cardano.Chain.Common (BlockCount (..)) -import Cardano.Chain.Genesis.AvvmBalances (GenesisAvvmBalances) -import Cardano.Chain.Genesis.Delegation (GenesisDelegation) -import Cardano.Chain.Genesis.Hash (GenesisHash (..)) -import Cardano.Chain.Genesis.KeyHashes (GenesisKeyHashes) -import Cardano.Chain.Genesis.NonAvvmBalances (GenesisNonAvvmBalances) -import Cardano.Chain.Update.ProtocolParameters (ProtocolParameters) -import Cardano.Crypto ( - ProtocolMagicId (..), - hashRaw, - ) -import Cardano.Ledger.Binary -import Cardano.Prelude -import qualified Data.ByteString as BS -import qualified Data.ByteString.Lazy as BSL -import Data.List (lookup) -import Data.Time (UTCTime) -import Formatting (bprint, build, stext) -import qualified Formatting.Buildable as B -import NoThunks.Class (NoThunks (..)) -import Text.JSON.Canonical ( - FromJSON (..), - Int54, - JSValue (..), - ToJSON (..), - expected, - fromJSField, - fromJSObject, - mkObject, - parseCanonicalJSON, - renderCanonicalJSON, - ) - --- | Genesis data contains all data which determines consensus rules. It must be --- same for all nodes. It's used to initialize global state, slotting, etc. -data GenesisData = GenesisData - { gdGenesisKeyHashes :: !GenesisKeyHashes - , gdHeavyDelegation :: !GenesisDelegation - , gdStartTime :: !UTCTime - , gdNonAvvmBalances :: !GenesisNonAvvmBalances - , gdProtocolParameters :: !ProtocolParameters - , gdK :: !BlockCount - , gdProtocolMagicId :: !ProtocolMagicId - , gdAvvmDistr :: !GenesisAvvmBalances - } - deriving (Show, Eq, Generic, NoThunks) - -instance Monad m => ToJSON m GenesisData where - toJSON gd = - mkObject - [ ("bootStakeholders", toJSON $ gdGenesisKeyHashes gd) - , ("heavyDelegation", toJSON $ gdHeavyDelegation gd) - , ("startTime", toJSON $ gdStartTime gd) - , ("nonAvvmBalances", toJSON $ gdNonAvvmBalances gd) - , ("blockVersionData", toJSON $ gdProtocolParameters gd) - , -- The above is called blockVersionData for backwards compatibility with - -- mainnet genesis block - - ( "protocolConsts" - , mkObject - [ ("k", pure . JSNum . fromIntegral . unBlockCount $ gdK gd) - , ("protocolMagic", toJSON $ gdProtocolMagicId gd) - ] - ) - , ("avvmDistr", toJSON $ gdAvvmDistr gd) - ] - -instance MonadError SchemaError m => FromJSON m GenesisData where - fromJSON obj = do - objAssoc <- fromJSObject obj - protocolConsts <- case lookup "protocolConsts" objAssoc of - Just fld -> pure fld - Nothing -> expected "field protocolConsts" Nothing - - GenesisData - <$> fromJSField obj "bootStakeholders" - <*> fromJSField obj "heavyDelegation" - <*> fromJSField obj "startTime" - <*> fromJSField obj "nonAvvmBalances" - <*> fromJSField obj "blockVersionData" - -- The above is called blockVersionData for backwards compatibility with - -- mainnet genesis block - <*> (BlockCount . fromIntegral @Int54 <$> fromJSField protocolConsts "k") - <*> (ProtocolMagicId <$> fromJSField protocolConsts "protocolMagic") - <*> fromJSField obj "avvmDistr" - -data GenesisDataError - = GenesisDataParseError Text - | GenesisDataSchemaError SchemaError - | GenesisDataIOError IOException - deriving (Show) - -instance B.Buildable GenesisDataError where - build = \case - GenesisDataParseError err -> - bprint ("Failed to parse GenesisData.\n Error: " . stext) err - GenesisDataSchemaError err -> - bprint ("Incorrect schema for GenesisData.\n Error: " . build) err - GenesisDataIOError err -> - bprint - ("Failed with " . stext . " when tried to read GenesisData file") - (show err) - -instance ToCBOR GenesisData where - toCBOR = toByronCBOR - -instance FromCBOR GenesisData where - fromCBOR = fromByronCBOR - -instance EncCBOR GenesisData where - encCBOR - ( GenesisData - gdGenesisKeyHashes_ - gdHeavyDelegation_ - gdStartTime_ - gdNonAvvmBalances_ - gdProtocolParameters_ - gdK_ - gdProtocolMagicId_ - gdAvvmDistr_ - ) = - mconcat - [ encodeListLen 8 - , encCBOR @GenesisKeyHashes gdGenesisKeyHashes_ - , encCBOR @GenesisDelegation gdHeavyDelegation_ - , encCBOR {- @UTCTime -} gdStartTime_ - , encCBOR @GenesisNonAvvmBalances gdNonAvvmBalances_ - , encCBOR @ProtocolParameters gdProtocolParameters_ - , encCBOR @BlockCount gdK_ - , encCBOR @ProtocolMagicId gdProtocolMagicId_ - , encCBOR @GenesisAvvmBalances gdAvvmDistr_ - ] - -instance DecCBOR GenesisData where - decCBOR = do - enforceSize "GenesisData" 8 - GenesisData - <$> decCBOR @GenesisKeyHashes - <*> decCBOR @GenesisDelegation - <*> decCBOR -- @UTCTime - <*> decCBOR @GenesisNonAvvmBalances - <*> decCBOR @ProtocolParameters - <*> decCBOR @BlockCount - <*> decCBOR @ProtocolMagicId - <*> decCBOR @GenesisAvvmBalances - --- | Parse @GenesisData@ from a JSON file and annotate with Canonical JSON hash -readGenesisData :: - (MonadError GenesisDataError m, MonadIO m) => - FilePath -> - m (GenesisData, GenesisHash) -readGenesisData fp = do - bytes <- - liftIO (try $ BSL.fromStrict <$> BS.readFile fp) - >>= (`wrapError` GenesisDataIOError) - - genesisDataJSON <- - parseCanonicalJSON bytes `wrapError` GenesisDataParseError . toS - - genesisData <- fromJSON genesisDataJSON `wrapError` GenesisDataSchemaError - - let genesisHash = GenesisHash $ hashRaw (renderCanonicalJSON genesisDataJSON) - - pure (genesisData, genesisHash) - -mainnetProtocolMagicId :: ProtocolMagicId -mainnetProtocolMagicId = ProtocolMagicId 764824073 diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Genesis/Delegation.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Genesis/Delegation.hs deleted file mode 100644 index 7d179ace483..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Genesis/Delegation.hs +++ /dev/null @@ -1,128 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -fno-warn-missed-specialisations #-} - -module Cardano.Chain.Genesis.Delegation ( - GenesisDelegation (..), - GenesisDelegationError, - mkGenesisDelegation, -) -where - -import Cardano.Chain.Common (KeyHash, hashKey) -import Cardano.Chain.Delegation.Certificate ( - ACertificate (delegateVK, issuerVK), - Certificate, - ) -import Cardano.Ledger.Binary -import Cardano.Prelude -import Data.List (nub) -import qualified Data.Map.Strict as M -import Formatting (bprint, build, formatToString) -import qualified Formatting.Buildable as B -import NoThunks.Class (NoThunks (..)) -import Text.JSON.Canonical (FromJSON (..), ReportSchemaErrors (..), ToJSON (..)) - --- | This type contains genesis state of heavyweight delegation. It wraps a map --- where keys are issuers and values are delegation certificates. There are --- some invariants: --- --- 1. In each pair delegate must differ from issuer, i. e. no revocations. --- 2. PSKs must be consistent with keys in the map, i. e. issuer's ID must be --- equal to the key in the map. --- 3. Delegates can't be issuers, i. e. transitive delegation is not --- supported. It's not needed in genesis, it can always be reduced. -newtype GenesisDelegation = UnsafeGenesisDelegation - { unGenesisDelegation :: Map KeyHash Certificate - } - deriving (Show, Eq, NoThunks) - -instance Monad m => ToJSON m GenesisDelegation where - toJSON = toJSON . unGenesisDelegation - -instance MonadError SchemaError m => FromJSON m GenesisDelegation where - fromJSON val = do - certs <- fromJSON val - case recreateGenesisDelegation certs of - Left err -> - expected - "GenesisDelegation" - (Just $ "Error: " <> formatToString build err) - Right delegation -> pure delegation - -instance ToCBOR GenesisDelegation where - toCBOR = toByronCBOR - -instance FromCBOR GenesisDelegation where - fromCBOR = fromByronCBOR - -instance EncCBOR GenesisDelegation where - encCBOR (UnsafeGenesisDelegation gd) = - encodeListLen 1 - <> encCBOR @(Map KeyHash Certificate) gd - -instance DecCBOR GenesisDelegation where - decCBOR = do - enforceSize "GenesisDelegation" 1 - UnsafeGenesisDelegation <$> decCBOR @(Map KeyHash Certificate) - -data GenesisDelegationError - = GenesisDelegationDuplicateIssuer - | GenesisDelegationInvalidKey KeyHash KeyHash - | GenesisDelegationMultiLayerDelegation KeyHash - deriving (Eq, Show) - -instance B.Buildable GenesisDelegationError where - build = \case - GenesisDelegationDuplicateIssuer -> - bprint - "Encountered duplicate issuer VerificationKey while constructing GenesisDelegation." - GenesisDelegationInvalidKey k k' -> - bprint - ( "Invalid key in GenesisDelegation map.\nExpected: " - . build - . "\nGot: " - . build - ) - k - k' - GenesisDelegationMultiLayerDelegation k -> - bprint - ( "Encountered multi-layer delegation.\n" - . build - . " is a delegate and an issuer." - ) - k - --- | Safe constructor of 'GenesisDelegation' from a list of 'Certificate's -mkGenesisDelegation :: - MonadError GenesisDelegationError m => [Certificate] -> m GenesisDelegation -mkGenesisDelegation certs = do - ((length . nub $ issuerVK <$> certs) == length certs) - `orThrowError` GenesisDelegationDuplicateIssuer - let res = M.fromList [(hashKey $ issuerVK cert, cert) | cert <- certs] - recreateGenesisDelegation res - --- | Safe constructor of 'GenesisDelegation' from existing map -recreateGenesisDelegation :: - MonadError GenesisDelegationError m => - Map KeyHash Certificate -> - m GenesisDelegation -recreateGenesisDelegation certMap = do - forM_ (M.toList certMap) $ \(k, cert) -> do - let k' = hashKey $ issuerVK cert - (k == k') `orThrowError` GenesisDelegationInvalidKey k k' - - let delegateId = hashKey $ delegateVK cert - (delegateId `M.notMember` certMap) - `orThrowError` GenesisDelegationMultiLayerDelegation delegateId - - pure $ UnsafeGenesisDelegation certMap diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Genesis/Generate.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Genesis/Generate.hs deleted file mode 100644 index 14142b26b64..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Genesis/Generate.hs +++ /dev/null @@ -1,454 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TupleSections #-} -{-# LANGUAGE TypeApplications #-} - --- | Generation of genesis data for testing or development. --- --- This includes the genesis block and all required private keys (root keys, --- keys for the initial UTxO etc). --- --- This can never be used for a production system since all stake holder keys --- must be generated by each stake holder privately, whereas for testing it --- is fine to generate all the keys in one place. -module Cardano.Chain.Genesis.Generate ( - GeneratedSecrets (..), - gsSigningKeys, - gsSigningKeysPoor, - PoorSecret (..), - generateGenesisData, - generateGenesisDataWithEntropy, - generateGenesisConfig, - generateGenesisConfigWithEntropy, - GenesisDataGenerationError (..), -) -where - -import Cardano.Chain.Common ( - Address, - Lovelace, - LovelaceError, - addLovelace, - divLovelace, - hashKey, - makeVerKeyAddress, - mkKnownLovelace, - modLovelace, - scaleLovelace, - scaleLovelaceRational, - subLovelace, - sumLovelace, - ) -import Cardano.Chain.Common.NetworkMagic (makeNetworkMagic) -import qualified Cardano.Chain.Delegation.Certificate as Delegation -import Cardano.Chain.Genesis.AvvmBalances (GenesisAvvmBalances (..)) -import Cardano.Chain.Genesis.Config (Config (..)) -import Cardano.Chain.Genesis.Data (GenesisData (..)) -import Cardano.Chain.Genesis.Delegation ( - GenesisDelegation (..), - GenesisDelegationError, - mkGenesisDelegation, - ) -import Cardano.Chain.Genesis.Hash (GenesisHash (..)) -import Cardano.Chain.Genesis.Initializer ( - FakeAvvmOptions (..), - GenesisInitializer (..), - TestnetBalanceOptions (..), - ) -import Cardano.Chain.Genesis.KeyHashes (GenesisKeyHashes (..)) -import Cardano.Chain.Genesis.NonAvvmBalances (GenesisNonAvvmBalances (..)) -import Cardano.Chain.Genesis.Spec (GenesisSpec (..)) -import Cardano.Chain.UTxO.UTxOConfiguration (defaultUTxOConfiguration) -import Cardano.Crypto as Crypto ( - RedeemSigningKey, - SigningKey, - getProtocolMagicId, - getRequiresNetworkMagic, - keyGen, - noPassSafeSigner, - redeemKeyGen, - redeemToVerification, - runSecureRandom, - serializeCborHash, - toCompactRedeemVerificationKey, - toVerification, - ) -import Cardano.Prelude -import qualified Crypto.Random as Crypto (MonadRandom) -import Data.Coerce (coerce) -import qualified Data.Map.Strict as M -import qualified Data.Set as Set -import Data.Time (UTCTime) -import Formatting (bprint, build, int, stext) -import qualified Formatting.Buildable as B -import NoThunks.Class (NoThunks (..)) - --- | Poor node secret -newtype PoorSecret = PoorSecret {poorSecretToKey :: SigningKey} - deriving (Generic, NoThunks) - --- | Valuable secrets which can unlock genesis data. -data GeneratedSecrets = GeneratedSecrets - { gsDlgIssuersSecrets :: ![SigningKey] - -- ^ Secret keys which issued heavyweight delegation certificates - -- in genesis data. If genesis heavyweight delegation isn't used, - -- this list is empty. - , gsRichSecrets :: ![SigningKey] - -- ^ All secrets of rich nodes. - , gsPoorSecrets :: ![PoorSecret] - -- ^ Keys for HD addresses of poor nodes. - , gsFakeAvvmSecrets :: ![RedeemSigningKey] - -- ^ Fake avvm secrets. - } - deriving (Generic, NoThunks) - -gsSigningKeys :: GeneratedSecrets -> [SigningKey] -gsSigningKeys gs = gsRichSecrets gs <> gsSigningKeysPoor gs - -gsSigningKeysPoor :: GeneratedSecrets -> [SigningKey] -gsSigningKeysPoor = map poorSecretToKey . gsPoorSecrets - -data GenesisDataGenerationError - = GenesisDataAddressBalanceMismatch Text Int Int - | GenesisDataGenerationDelegationError GenesisDelegationError - | GenesisDataGenerationDistributionMismatch Lovelace Lovelace - | GenesisDataGenerationLovelaceError LovelaceError - | GenesisDataGenerationPassPhraseMismatch - | GenesisDataGenerationRedeemKeyGen - deriving (Eq, Show) - -instance B.Buildable GenesisDataGenerationError where - build = \case - GenesisDataAddressBalanceMismatch distr addresses balances -> - bprint - ( "GenesisData address balance mismatch, Distribution: " - . stext - . " Addresses list length: " - . int - . " Balances list length: " - . int - ) - distr - addresses - balances - GenesisDataGenerationDelegationError genesisDelegError -> - bprint - ( "GenesisDataGenerationDelegationError: " - . build - ) - genesisDelegError - GenesisDataGenerationDistributionMismatch testBalance totalBalance -> - bprint - ( "GenesisDataGenerationDistributionMismatch: Test balance: " - . build - . " Total balance: " - . build - ) - testBalance - totalBalance - GenesisDataGenerationLovelaceError lovelaceErr -> - bprint - ( "GenesisDataGenerationLovelaceError: " - . build - ) - lovelaceErr - GenesisDataGenerationPassPhraseMismatch -> - bprint "GenesisDataGenerationPassPhraseMismatch" - GenesisDataGenerationRedeemKeyGen -> - bprint "GenesisDataGenerationRedeemKeyGen" - --- | Generate a genesis 'GenesisData' and 'GeneratedSecrets' from a --- 'GenesisSpec'. This is used only for tests blockhains. For a real blockcain --- you must use the external key generation tool so that each stakeholder can --- generate their keys privately. -generateGenesisData :: - UTCTime -> - GenesisSpec -> - ExceptT GenesisDataGenerationError IO (GenesisData, GeneratedSecrets) -generateGenesisData startTime genesisSpec = - -- Use a sensible choice of random entropy for key generation, which then - -- requires that the whole thing is actually in IO. - mapExceptT Crypto.runSecureRandom - $ generateGenesisDataWithEntropy startTime genesisSpec - --- | A version of 'generateGenesisData' parametrised over 'Crypto.MonadRandom'. --- For testing purposes this allows using a completely pure deterministic --- entropy source, rather than a cryptographically secure entropy source. -generateGenesisDataWithEntropy :: - Crypto.MonadRandom m => - UTCTime -> - GenesisSpec -> - ExceptT GenesisDataGenerationError m (GenesisData, GeneratedSecrets) -generateGenesisDataWithEntropy startTime genesisSpec = do - let pm = gsProtocolMagic genesisSpec - nm = makeNetworkMagic pm - gi = gsInitializer genesisSpec - fao = giFakeAvvmBalance gi - tbo = giTestBalance gi - - -- Generate all the private keys - generatedSecrets <- lift $ generateSecrets gi - let dlgIssuersSecrets = gsDlgIssuersSecrets generatedSecrets - richSecrets = gsRichSecrets generatedSecrets - poorSecrets = gsPoorSecrets generatedSecrets - - -- Genesis Keys - let genesisSecrets = - if giUseHeavyDlg gi then dlgIssuersSecrets else richSecrets - - genesisKeyHashes :: GenesisKeyHashes - genesisKeyHashes = - GenesisKeyHashes - . Set.fromList - $ hashKey - . toVerification - <$> genesisSecrets - - -- Heavyweight delegation. - -- genesisDlgList is empty if giUseHeavyDlg = False - let genesisDlgList :: [Delegation.Certificate] - genesisDlgList = - ( \(issuerSK, delegateSK) -> - Delegation.signCertificate - (getProtocolMagicId pm) - (toVerification delegateSK) - 0 - (noPassSafeSigner issuerSK) - ) - <$> zip dlgIssuersSecrets richSecrets - - genesisDlg <- - mkGenesisDelegation - ( M.elems (unGenesisDelegation $ gsHeavyDelegation genesisSpec) - <> genesisDlgList - ) - `wrapError` GenesisDataGenerationDelegationError - - -- Real AVVM Balances - let applyAvvmBalanceFactor :: Map k Lovelace -> Map k Lovelace - applyAvvmBalanceFactor = - map (flip scaleLovelaceRational (giAvvmBalanceFactor gi)) - - realAvvmMultiplied :: GenesisAvvmBalances - realAvvmMultiplied = - GenesisAvvmBalances - . applyAvvmBalanceFactor - . unGenesisAvvmBalances - . gsAvvmDistr - $ genesisSpec - - -- Fake AVVM Balances - let fakeAvvmVerificationKeys = - map - (toCompactRedeemVerificationKey . redeemToVerification) - (gsFakeAvvmSecrets generatedSecrets) - fakeAvvmDistr = - GenesisAvvmBalances - . M.fromList - $ map - (,faoOneBalance fao) - fakeAvvmVerificationKeys - - -- Non AVVM balances - ---- Addresses - let createAddressPoor :: - MonadError GenesisDataGenerationError m => PoorSecret -> m Address - createAddressPoor (PoorSecret secret) = - pure $ makeVerKeyAddress nm (toVerification secret) - let richAddresses = map (makeVerKeyAddress nm . toVerification) richSecrets - - poorAddresses <- mapM createAddressPoor poorSecrets - - ---- Balances - totalFakeAvvmBalance <- - scaleLovelace (faoOneBalance fao) (faoCount fao) - `wrapError` GenesisDataGenerationLovelaceError - - -- Compute total balance to generate - avvmSum <- - sumLovelace (unGenesisAvvmBalances realAvvmMultiplied) - `wrapError` GenesisDataGenerationLovelaceError - maxTnBalance <- - subLovelace maxBound avvmSum `wrapError` GenesisDataGenerationLovelaceError - let tnBalance = min maxTnBalance (tboTotalBalance tbo) - - let safeZip :: - MonadError GenesisDataGenerationError m => - Text -> - [a] -> - [b] -> - m [(a, b)] - safeZip s a b = - if length a /= length b - then - throwError - $ GenesisDataAddressBalanceMismatch s (length a) (length b) - else pure $ zip a b - - nonAvvmBalance <- - subLovelace tnBalance totalFakeAvvmBalance - `wrapError` GenesisDataGenerationLovelaceError - - (richBals, poorBals) <- genTestnetDistribution tbo nonAvvmBalance - - richDistr <- safeZip "richDistr" richAddresses richBals - poorDistr <- safeZip "poorDistr" poorAddresses poorBals - - let nonAvvmDistr = GenesisNonAvvmBalances . M.fromList $ richDistr ++ poorDistr - - let genesisData = - GenesisData - { gdGenesisKeyHashes = genesisKeyHashes - , gdHeavyDelegation = genesisDlg - , gdStartTime = startTime - , gdNonAvvmBalances = nonAvvmDistr - , gdProtocolParameters = gsProtocolParameters genesisSpec - , gdK = gsK genesisSpec - , gdProtocolMagicId = getProtocolMagicId pm - , gdAvvmDistr = fakeAvvmDistr <> realAvvmMultiplied - } - - pure (genesisData, generatedSecrets) - -generateSecrets :: - Crypto.MonadRandom m => - GenesisInitializer -> - m GeneratedSecrets -generateSecrets gi = do - -- Generate fake AVVM secrets - fakeAvvmSecrets <- - replicateM - (fromIntegral $ faoCount fao) - (snd <$> redeemKeyGen) - - -- Generate secret keys - dlgIssuersSecrets <- - if giUseHeavyDlg gi - then replicateRich (snd <$> keyGen) - else pure [] - - richSecrets <- replicateRich (snd <$> keyGen) - - poorSecrets <- replicateM (fromIntegral $ tboPoors tbo) genPoorSecret - - pure - $ GeneratedSecrets - { gsDlgIssuersSecrets = dlgIssuersSecrets - , gsRichSecrets = richSecrets - , gsPoorSecrets = poorSecrets - , gsFakeAvvmSecrets = fakeAvvmSecrets - } - where - fao = giFakeAvvmBalance gi - tbo = giTestBalance gi - - replicateRich :: Applicative m => m a -> m [a] - replicateRich = replicateM (fromIntegral $ tboRichmen tbo) - - genPoorSecret :: Crypto.MonadRandom m => m PoorSecret - genPoorSecret = PoorSecret . snd <$> keyGen - ----------------------------------------------------------------------------- --- Generating a Genesis Config ----------------------------------------------------------------------------- - --- | Generate a genesis 'Config' from a 'GenesisSpec'. This is used only for --- tests. For the real node we always generate an external JSON genesis file. -generateGenesisConfig :: - UTCTime -> - GenesisSpec -> - ExceptT GenesisDataGenerationError IO (Config, GeneratedSecrets) -generateGenesisConfig startTime genesisSpec = - -- Use a sensible choice of random entropy for key generation, which then - -- requires that the whole thing is actually in IO. - mapExceptT Crypto.runSecureRandom - $ generateGenesisConfigWithEntropy startTime genesisSpec - --- | A version of 'generateGenesisConfig' parametrised over 'Crypto.MonadRandom'. --- For testing purposes this allows using a completely pure deterministic --- entropy source, rather than a cryptographically secure entropy source. -generateGenesisConfigWithEntropy :: - Crypto.MonadRandom m => - UTCTime -> - GenesisSpec -> - ExceptT GenesisDataGenerationError m (Config, GeneratedSecrets) -generateGenesisConfigWithEntropy startTime genesisSpec = do - (genesisData, generatedSecrets) <- - generateGenesisDataWithEntropy startTime genesisSpec - - let config = - Config - { configGenesisData = genesisData - , configGenesisHash = genesisHash - , configReqNetMagic = - getRequiresNetworkMagic - (gsProtocolMagic genesisSpec) - , configUTxOConfiguration = defaultUTxOConfiguration - } - return (config, generatedSecrets) - where - -- Anything will do for the genesis hash. A hash of "patak" was used before, - -- and so it remains. Here lies the last of the Serokell code. RIP. - genesisHash = GenesisHash $ coerce $ serializeCborHash ("patak" :: Text) - ----------------------------------------------------------------------------- --- Internal helpers ----------------------------------------------------------------------------- - --- | Generates balance distribution for testnet -genTestnetDistribution :: - MonadError GenesisDataGenerationError m => - TestnetBalanceOptions -> - Lovelace -> - m ([Lovelace], [Lovelace]) -genTestnetDistribution tbo testBalance = do - (richBalances, poorBalances, totalBalance) <- - (`wrapError` GenesisDataGenerationLovelaceError) $ do - richmanBalance <- divLovelace desiredRichBalance tboRichmen - - richmanBalanceExtra <- modLovelace desiredRichBalance tboRichmen - - richmanBalance' <- - if tboRichmen == 0 - then pure $ mkKnownLovelace @0 - else - addLovelace - richmanBalance - ( if richmanBalanceExtra > mkKnownLovelace @0 - then mkKnownLovelace @1 - else mkKnownLovelace @0 - ) - - totalRichBalance <- scaleLovelace richmanBalance' tboRichmen - - desiredPoorsBalance <- subLovelace testBalance totalRichBalance - - poorBalance <- - if tboPoors == 0 - then pure $ mkKnownLovelace @0 - else divLovelace desiredPoorsBalance tboPoors - - totalPoorBalance <- scaleLovelace poorBalance tboPoors - - totalBalance <- addLovelace totalRichBalance totalPoorBalance - - pure - ( replicate (fromIntegral tboRichmen) richmanBalance' - , replicate (fromIntegral tboPoors) poorBalance - , totalBalance - ) - - if totalBalance <= testBalance - then pure (richBalances, poorBalances) - else - throwError - $ GenesisDataGenerationDistributionMismatch testBalance totalBalance - where - TestnetBalanceOptions {tboPoors, tboRichmen} = tbo - - desiredRichBalance = scaleLovelaceRational testBalance (tboRichmenShare tbo) diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Genesis/Hash.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Genesis/Hash.hs deleted file mode 100644 index 4d8d281f818..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Genesis/Hash.hs +++ /dev/null @@ -1,26 +0,0 @@ -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE StandaloneDeriving #-} - -module Cardano.Chain.Genesis.Hash ( - GenesisHash (..), -) -where - -import Cardano.Crypto.Hashing (Hash) -import Cardano.Crypto.Raw (Raw) -import Cardano.Ledger.Binary (DecCBOR, EncCBOR) -import Cardano.Prelude -import Data.Aeson (ToJSON) -import NoThunks.Class (NoThunks (..)) - -newtype GenesisHash = GenesisHash - { unGenesisHash :: Hash Raw - } - deriving (Eq, Generic, NFData, DecCBOR, EncCBOR, NoThunks) - -deriving instance Show GenesisHash - --- Used for debugging purposes only -instance ToJSON GenesisHash diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Genesis/Initializer.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Genesis/Initializer.hs deleted file mode 100644 index a9a449d2305..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Genesis/Initializer.hs +++ /dev/null @@ -1,44 +0,0 @@ -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE TemplateHaskell #-} - -module Cardano.Chain.Genesis.Initializer ( - GenesisInitializer (..), - TestnetBalanceOptions (..), - FakeAvvmOptions (..), -) -where - -import Cardano.Chain.Common (Lovelace) -import Cardano.Prelude - --- | Options determining generated genesis stakes, balances, and delegation -data GenesisInitializer = GenesisInitializer - { giTestBalance :: !TestnetBalanceOptions - , giFakeAvvmBalance :: !FakeAvvmOptions - , giAvvmBalanceFactor :: !Rational - -- ^ Avvm balances will be multiplied by this factor - , giUseHeavyDlg :: !Bool - -- ^ Whether to use heavyweight delegation for genesis keys - } - deriving (Eq, Show) - --- | These options determine balances of nodes specific for testnet -data TestnetBalanceOptions = TestnetBalanceOptions - { tboPoors :: !Word - -- ^ Number of poor nodes (with small balance). - , tboRichmen :: !Word - -- ^ Number of rich nodes (with huge balance). - , tboTotalBalance :: !Lovelace - -- ^ Total balance owned by these nodes. - , tboRichmenShare :: !Rational - -- ^ Portion of stake owned by all richmen together. - } - deriving (Eq, Show) - --- | These options determines balances of fake AVVM nodes which didn't really go --- through vending, but pretend they did -data FakeAvvmOptions = FakeAvvmOptions - { faoCount :: !Word - , faoOneBalance :: !Lovelace - } - deriving (Eq, Show, Generic) diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Genesis/KeyHashes.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Genesis/KeyHashes.hs deleted file mode 100644 index 7569cc0269d..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Genesis/KeyHashes.hs +++ /dev/null @@ -1,57 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -fno-warn-missed-specialisations #-} - -module Cardano.Chain.Genesis.KeyHashes ( - GenesisKeyHashes (..), -) -where - -import Cardano.Chain.Common (KeyHash) -import Cardano.Ledger.Binary -import Cardano.Prelude -import qualified Data.Map.Strict as M -import qualified Data.Set as Set -import Formatting (bprint) -import Formatting.Buildable (Buildable (..)) -import NoThunks.Class (NoThunks (..)) -import Text.JSON.Canonical (FromJSON (..), ToJSON (..)) - --- | The set of genesis keys, who are able to produce blocks and submit votes --- and proposals in the Byron era -newtype GenesisKeyHashes = GenesisKeyHashes - { unGenesisKeyHashes :: Set KeyHash - } - deriving (Show, Eq, Semigroup, Monoid, NoThunks) - -instance Buildable GenesisKeyHashes where - build (GenesisKeyHashes m) = - bprint ("GenesisKeyHashes: " . listJson) (Set.toList m) - -instance Monad m => ToJSON m GenesisKeyHashes where - toJSON (GenesisKeyHashes stks) = - toJSON . M.fromList $ zip (Set.toList stks) (repeat (1 :: Word16)) - -instance MonadError SchemaError m => FromJSON m GenesisKeyHashes where - fromJSON = - fmap (GenesisKeyHashes . M.keysSet) . fromJSON @m @(Map KeyHash Word16) - -instance ToCBOR GenesisKeyHashes where - toCBOR = toByronCBOR - -instance FromCBOR GenesisKeyHashes where - fromCBOR = fromByronCBOR - -instance EncCBOR GenesisKeyHashes where - encCBOR (GenesisKeyHashes gkh) = encodeListLen 1 <> encCBOR @(Set KeyHash) gkh - -instance DecCBOR GenesisKeyHashes where - decCBOR = do - enforceSize "GenesisKeyHashes" 1 - GenesisKeyHashes <$> decCBOR @(Set KeyHash) diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Genesis/NonAvvmBalances.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Genesis/NonAvvmBalances.hs deleted file mode 100644 index 0a1432a5718..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Genesis/NonAvvmBalances.hs +++ /dev/null @@ -1,124 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -fno-warn-missed-specialisations #-} - -module Cardano.Chain.Genesis.NonAvvmBalances ( - GenesisNonAvvmBalances (..), - convertNonAvvmDataToBalances, -) -where - -import Cardano.Chain.Common ( - Address, - Lovelace, - LovelaceError, - addLovelace, - decodeAddressBase58, - integerToLovelace, - ) -import Cardano.Ledger.Binary ( - DecCBOR (..), - DecoderError, - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - encodeListLen, - enforceSize, - fromByronCBOR, - toByronCBOR, - ) -import Cardano.Prelude -import qualified Data.Map.Strict as M -import Formatting (bprint, build) -import qualified Formatting.Buildable as B -import NoThunks.Class (NoThunks (..)) -import Text.JSON.Canonical (FromJSON (..), ToJSON (..)) - --- | Predefined balances of non avvm entries. -newtype GenesisNonAvvmBalances = GenesisNonAvvmBalances - { unGenesisNonAvvmBalances :: Map Address Lovelace - } - deriving (Show, Eq, NoThunks) - -instance B.Buildable GenesisNonAvvmBalances where - build (GenesisNonAvvmBalances m) = - bprint ("GenesisNonAvvmBalances: " . mapJson) m - -deriving instance Semigroup GenesisNonAvvmBalances - -deriving instance Monoid GenesisNonAvvmBalances - -instance Monad m => ToJSON m GenesisNonAvvmBalances where - toJSON = toJSON . unGenesisNonAvvmBalances - -instance MonadError SchemaError m => FromJSON m GenesisNonAvvmBalances where - fromJSON = fmap GenesisNonAvvmBalances . fromJSON - -instance ToCBOR GenesisNonAvvmBalances where - toCBOR = toByronCBOR - -instance FromCBOR GenesisNonAvvmBalances where - fromCBOR = fromByronCBOR - -instance EncCBOR GenesisNonAvvmBalances where - encCBOR (GenesisNonAvvmBalances gnab) = - encodeListLen 1 - <> encCBOR @(Map Address Lovelace) gnab - -instance DecCBOR GenesisNonAvvmBalances where - decCBOR = do - enforceSize "GenesisNonAvvmBalances" 1 - GenesisNonAvvmBalances <$> decCBOR @(Map Address Lovelace) - -data NonAvvmBalancesError - = NonAvvmBalancesLovelaceError LovelaceError - | NonAvvmBalancesDecoderError DecoderError - -instance B.Buildable NonAvvmBalancesError where - build = \case - NonAvvmBalancesLovelaceError err -> - bprint - ("Failed to construct a lovelace in NonAvvmBalances.\n Error: " . build) - err - NonAvvmBalancesDecoderError err -> - bprint - ("Failed to decode NonAvvmBalances.\n Error: " . build) - err - --- | Generate genesis address distribution out of avvm parameters. Txdistr of --- the utxo is all empty. Redelegate it in calling function. -convertNonAvvmDataToBalances :: - forall m. - MonadError NonAvvmBalancesError m => - Map Text Integer -> - m GenesisNonAvvmBalances -convertNonAvvmDataToBalances balances = fmap GenesisNonAvvmBalances $ do - converted <- traverse convert (M.toList balances) - mkBalances converted - where - mkBalances :: [(Address, Lovelace)] -> m (Map Address Lovelace) - mkBalances = - -- Pull 'LovelaceError's out of the 'Map' and lift them to - -- 'NonAvvmBalancesError's - (`wrapError` NonAvvmBalancesLovelaceError) - . sequence - -- Make map joining duplicate keys with 'addLovelace' lifted from 'Lovelace -> - -- Lovelace -> Either LovelaceError Lovelace' to 'Either LovelaceError Lovelace -> Either - -- LovelaceError Lovelace -> Either LovelaceError Lovelace' - . M.fromListWith (\c -> join . liftM2 addLovelace c) - -- Lift the 'Lovelace's to 'Either LovelaceError Lovelace's - . fmap (second Right) - - convert :: (Text, Integer) -> m (Address, Lovelace) - convert (txt, i) = do - addr <- decodeAddressBase58 txt `wrapError` NonAvvmBalancesDecoderError - lovelace <- integerToLovelace i `wrapError` NonAvvmBalancesLovelaceError - return (addr, lovelace) diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Genesis/Spec.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Genesis/Spec.hs deleted file mode 100644 index 26d89102b30..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Genesis/Spec.hs +++ /dev/null @@ -1,54 +0,0 @@ -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TemplateHaskell #-} - -module Cardano.Chain.Genesis.Spec ( - GenesisSpec (..), - mkGenesisSpec, -) -where - -import Cardano.Chain.Common (BlockCount) -import Cardano.Chain.Genesis.AvvmBalances (GenesisAvvmBalances (..)) -import Cardano.Chain.Genesis.Delegation (GenesisDelegation (..)) -import Cardano.Chain.Genesis.Initializer (GenesisInitializer (..)) -import Cardano.Chain.Update.ProtocolParameters (ProtocolParameters) -import Cardano.Crypto (ProtocolMagic) -import Cardano.Prelude -import Data.List (nub) -import qualified Data.Map.Strict as M - --- | Specification how to generate full 'GenesisData' -data GenesisSpec = UnsafeGenesisSpec - { gsAvvmDistr :: !GenesisAvvmBalances - -- ^ Genesis data describes avvm utxo - , gsHeavyDelegation :: !GenesisDelegation - -- ^ Genesis state of heavyweight delegation. Will be concatenated with - -- delegation genesis keyHashes if 'tiUseHeavyDlg' is 'True' - , gsProtocolParameters :: !ProtocolParameters - -- ^ Genesis 'ProtocolParameters' - , gsK :: !BlockCount - -- ^ The security parameter of the Ouroboros protocol - , gsProtocolMagic :: !ProtocolMagic - -- ^ The magic number unique to any instance of Cardano - , gsInitializer :: !GenesisInitializer - -- ^ Other data which depend on genesis type - } - deriving (Eq, Show, Generic) - --- | Safe constructor for 'GenesisSpec'. Throws error if something --- goes wrong. -mkGenesisSpec :: - GenesisAvvmBalances -> - GenesisDelegation -> - ProtocolParameters -> - BlockCount -> - ProtocolMagic -> - GenesisInitializer -> - Either Text GenesisSpec -mkGenesisSpec avvmDistr delega bvd k pm specType = do - let avvmKeys = M.keys $ unGenesisAvvmBalances avvmDistr - (length (nub avvmKeys) == length avvmKeys) - `orThrowError` "mkGenesisSpec: there are duplicates in avvm balances" - -- All checks passed - pure $ UnsafeGenesisSpec avvmDistr delega bvd k pm specType diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/MempoolPayload.hs b/eras/byron/ledger/impl/src/Cardano/Chain/MempoolPayload.hs deleted file mode 100644 index 59c3f3083f6..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/MempoolPayload.hs +++ /dev/null @@ -1,94 +0,0 @@ -{-# LANGUAGE DeriveFunctor #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} - -module Cardano.Chain.MempoolPayload ( - MempoolPayload, - AMempoolPayload (..), -) -where - -import qualified Cardano.Chain.Delegation as Delegation -import Cardano.Chain.UTxO (ATxAux) -import qualified Cardano.Chain.Update as Update -import Cardano.Ledger.Binary ( - ByteSpan, - DecCBOR (..), - DecoderError (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - cborError, - decodeWord8, - encodeListLen, - encodePreEncoded, - enforceSize, - fromByronCBOR, - recoverBytes, - toByronCBOR, - ) -import Cardano.Prelude hiding (cborError) - --- | A payload which can be submitted into or between mempools via the --- transaction submission protocol. -type MempoolPayload = AMempoolPayload () - --- | A payload which can be submitted into or between mempools via the --- transaction submission protocol. -data AMempoolPayload a - = -- | A transaction payload (transaction and witness). - MempoolTx !(ATxAux a) - | -- | A delegation certificate payload. - MempoolDlg !(Delegation.ACertificate a) - | -- | An update proposal payload. - MempoolUpdateProposal !(Update.AProposal a) - | -- | An update vote payload. - MempoolUpdateVote !(Update.AVote a) - deriving (Eq, Show, Functor) - -instance ToCBOR MempoolPayload where - toCBOR = toByronCBOR - -instance FromCBOR MempoolPayload where - fromCBOR = fromByronCBOR - -instance ToCBOR (AMempoolPayload ByteString) where - toCBOR = toByronCBOR - -instance FromCBOR (AMempoolPayload ByteSpan) where - fromCBOR = fromByronCBOR - -instance EncCBOR MempoolPayload where - encCBOR (MempoolTx tp) = - encodeListLen 2 <> encCBOR (0 :: Word8) <> encCBOR tp - encCBOR (MempoolDlg dp) = - encodeListLen 2 <> encCBOR (1 :: Word8) <> encCBOR dp - encCBOR (MempoolUpdateProposal upp) = - encodeListLen 2 <> encCBOR (2 :: Word8) <> encCBOR upp - encCBOR (MempoolUpdateVote upv) = - encodeListLen 2 <> encCBOR (3 :: Word8) <> encCBOR upv - -instance EncCBOR (AMempoolPayload ByteString) where - encCBOR (MempoolTx tp) = - encodeListLen 2 <> encCBOR (0 :: Word8) <> encodePreEncoded (recoverBytes tp) - encCBOR (MempoolDlg dp) = - encodeListLen 2 <> encCBOR (1 :: Word8) <> encodePreEncoded (recoverBytes dp) - encCBOR (MempoolUpdateProposal upp) = - encodeListLen 2 <> encCBOR (2 :: Word8) <> encodePreEncoded (recoverBytes upp) - encCBOR (MempoolUpdateVote upv) = - encodeListLen 2 <> encCBOR (3 :: Word8) <> encodePreEncoded (recoverBytes upv) - -instance DecCBOR MempoolPayload where - decCBOR = void <$> decCBOR @(AMempoolPayload ByteSpan) - -instance DecCBOR (AMempoolPayload ByteSpan) where - decCBOR = do - enforceSize "MempoolPayload" 2 - decodeWord8 >>= \case - 0 -> MempoolTx <$> decCBOR - 1 -> MempoolDlg <$> decCBOR - 2 -> MempoolUpdateProposal <$> decCBOR - 3 -> MempoolUpdateVote <$> decCBOR - tag -> cborError $ DecoderErrorUnknownTag "MempoolPayload" tag diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/ProtocolConstants.hs b/eras/byron/ledger/impl/src/Cardano/Chain/ProtocolConstants.hs deleted file mode 100644 index fb3b699f45a..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/ProtocolConstants.hs +++ /dev/null @@ -1,46 +0,0 @@ --- | Constants derived from security parameter --- --- TODO: Find a better home for these -module Cardano.Chain.ProtocolConstants ( - kSlotSecurityParam, - kUpdateStabilityParam, - kChainQualityThreshold, - kEpochSlots, -) -where - -import Cardano.Chain.Common.BlockCount (BlockCount (..)) -import Cardano.Chain.Slotting.EpochSlots (EpochSlots (..)) -import Cardano.Chain.Slotting.SlotCount (SlotCount (..)) -import Cardano.Prelude - --- | Security parameter expressed in number of slots. It uses chain quality --- property. It's basically @blkSecurityParam / chainQualityThreshold@. -kSlotSecurityParam :: BlockCount -> SlotCount -kSlotSecurityParam = SlotCount . (*) 2 . unBlockCount - --- | Update stability parameter expressed in number of slots. This is the time --- between an protocol version update receiving its final endorsement and --- being accepted, and is set to double the security param. --- --- This extra safety margin is required because an update in the protocol --- version may trigger a hard fork, which can change "era"-level parameters --- such as slot length and the number of slots per epoch. As such, the --- consensus layer wishes to always have a margin between such an update being --- _certain to happen_ and it actually happening. --- --- For full details, you can see --- https://github.com/intersectmbo/cardano-ledger/issues/1288 -kUpdateStabilityParam :: BlockCount -> SlotCount -kUpdateStabilityParam = SlotCount . (*) 4 . unBlockCount - --- | Minimal chain quality (number of blocks divided by number of --- slots) necessary for security of the system. -kChainQualityThreshold :: Fractional f => BlockCount -> f -kChainQualityThreshold k = - realToFrac (unBlockCount k) - / fromIntegral (unSlotCount $ kSlotSecurityParam k) - --- | Number of slots inside one epoch -kEpochSlots :: BlockCount -> EpochSlots -kEpochSlots = EpochSlots . (*) 10 . unBlockCount diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Slotting.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Slotting.hs deleted file mode 100644 index c792371f4a4..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Slotting.hs +++ /dev/null @@ -1,10 +0,0 @@ -module Cardano.Chain.Slotting ( - module X, -) -where - -import Cardano.Chain.Slotting.EpochAndSlotCount as X -import Cardano.Chain.Slotting.EpochNumber as X -import Cardano.Chain.Slotting.EpochSlots as X -import Cardano.Chain.Slotting.SlotCount as X -import Cardano.Chain.Slotting.SlotNumber as X diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Slotting/EpochAndSlotCount.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Slotting/EpochAndSlotCount.hs deleted file mode 100644 index cc1a2c18a3b..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Slotting/EpochAndSlotCount.hs +++ /dev/null @@ -1,100 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE UndecidableInstances #-} - -module Cardano.Chain.Slotting.EpochAndSlotCount ( - EpochAndSlotCount (..), - toSlotNumber, - fromSlotNumber, - slotNumberEpoch, -) -where - -import Cardano.Chain.Slotting.EpochNumber (EpochNumber (..)) -import Cardano.Chain.Slotting.EpochSlots (EpochSlots (..)) -import Cardano.Chain.Slotting.SlotCount (SlotCount (..)) -import Cardano.Chain.Slotting.SlotNumber (SlotNumber (..)) -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - encodeListLen, - enforceSize, - fromByronCBOR, - toByronCBOR, - ) -import Cardano.Prelude -import Formatting (bprint, ords) -import qualified Formatting.Buildable as B - --- | 'EpochAndSlotCount' identifies a slot by its 'EpochNumber' and the number of --- slots into the epoch that it sits -data EpochAndSlotCount = EpochAndSlotCount - { epochNo :: !EpochNumber - , slotCount :: !SlotCount - } - deriving (Show, Eq, Ord, Generic) - deriving anyclass (NFData) - -instance B.Buildable EpochAndSlotCount where - build eas = - bprint - (ords . " slot of " . ords . " epoch") - (unSlotCount $ slotCount eas) - (getEpochNumber $ epochNo eas) - -instance ToCBOR EpochAndSlotCount where - toCBOR = toByronCBOR - -instance FromCBOR EpochAndSlotCount where - fromCBOR = fromByronCBOR - -instance EncCBOR EpochAndSlotCount where - encCBOR eas = encodeListLen 2 <> encCBOR (epochNo eas) <> encCBOR (slotCount eas) - encodedSizeExpr f eas = - 1 - + encodedSizeExpr f (epochNo <$> eas) - + encodedSizeExpr f (slotCount <$> eas) - -instance DecCBOR EpochAndSlotCount where - decCBOR = do - enforceSize "EpochAndSlotCount" 2 - EpochAndSlotCount <$> decCBOR <*> decCBOR - --- | Flatten 'EpochAndSlotCount' into a single absolute 'SlotNumber' -toSlotNumber :: EpochSlots -> EpochAndSlotCount -> SlotNumber -toSlotNumber es eas = SlotNumber $ pastSlots + slots - where - slots :: Word64 - slots = unSlotCount $ slotCount eas - pastSlots :: Word64 - pastSlots = unSlotNumber (flattenEpochNumber es $ epochNo eas) - --- | Flattens 'EpochNumber' into a single number -flattenEpochNumber :: EpochSlots -> EpochNumber -> SlotNumber -flattenEpochNumber es (EpochNumber i) = SlotNumber $ i * unEpochSlots es - --- | Construct a 'EpochAndSlotCount' from a 'SlotNumber', using a given 'EpochSlots' -fromSlotNumber :: EpochSlots -> SlotNumber -> EpochAndSlotCount -fromSlotNumber (EpochSlots n) (SlotNumber fsId) - | n == 0 = - panic - $ "'unflattenEpochAndSlotCount': The number of slots-per-epoch " - <> "passed to this function must be positive" - | otherwise = - EpochAndSlotCount - { epochNo = EpochNumber epoch - , slotCount = SlotCount slot - } - where - (epoch, slot) = fsId `divMod` n - -slotNumberEpoch :: EpochSlots -> SlotNumber -> EpochNumber -slotNumberEpoch epochSlots slot = epochNo $ fromSlotNumber epochSlots slot diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Slotting/EpochNumber.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Slotting/EpochNumber.hs deleted file mode 100644 index d7cc4a0f501..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Slotting/EpochNumber.hs +++ /dev/null @@ -1,97 +0,0 @@ -{-# LANGUAGE DeriveDataTypeable #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE UndecidableInstances #-} - -module Cardano.Chain.Slotting.EpochNumber ( - EpochNumber (..), - isBootstrapEra, -) -where - -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - fromByronCBOR, - toByronCBOR, - ) -import Cardano.Prelude -import qualified Data.Aeson as Aeson -import Data.Data (Data) -import Data.Ix (Ix) -import Formatting (bprint, int) -import Formatting.Buildable (Buildable (..)) -import NoThunks.Class (NoThunks (..)) -import Text.JSON.Canonical (FromJSON (..), ToJSON (..)) - --- | Index of epoch. -newtype EpochNumber = EpochNumber - { getEpochNumber :: Word64 - } - deriving - ( Show - , Data - , Eq - , Ord - , Num - , Enum - , Ix - , Integral - , Real - , Generic - , Bounded - , NFData - , NoThunks - ) - -instance Buildable EpochNumber where - build = bprint ("#" . int) - --- Used for debugging purposes only -instance Aeson.ToJSON EpochNumber - -instance ToCBOR EpochNumber where - toCBOR = toByronCBOR - -instance FromCBOR EpochNumber where - fromCBOR = fromByronCBOR - -instance EncCBOR EpochNumber where - encCBOR (EpochNumber epoch) = encCBOR epoch - encodedSizeExpr size = encodedSizeExpr size . fmap getEpochNumber - -instance DecCBOR EpochNumber where - decCBOR = EpochNumber <$> decCBOR - --- Note that it will be encoded as string, because 'EpochNumber' doesn't --- necessary fit into JS number. -instance Monad m => ToJSON m EpochNumber where - toJSON = toJSON . getEpochNumber - -instance MonadError SchemaError m => FromJSON m EpochNumber where - fromJSON = fmap EpochNumber . fromJSON - --- | Bootstrap era is ongoing until stakes are unlocked. The reward era starts --- from the epoch specified as the epoch that unlocks stakes: --- --- @ --- [unlock stake epoch] --- / --- Epoch: ... E-3 E-2 E-1 E+0 E+1 E+2 E+3 ... --- ------------------ | ----------------------- --- Bootstrap era Reward era --- @ -isBootstrapEra :: - -- | Unlock stake epoch - EpochNumber -> - -- | Epoch in question (for which we determine whether it belongs to the - -- bootstrap era) - EpochNumber -> - Bool -isBootstrapEra unlockStakeEpoch epoch = epoch < unlockStakeEpoch diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Slotting/EpochSlots.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Slotting/EpochSlots.hs deleted file mode 100644 index ccde49cf369..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Slotting/EpochSlots.hs +++ /dev/null @@ -1,58 +0,0 @@ -{-# LANGUAGE DeriveDataTypeable #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} - -module Cardano.Chain.Slotting.EpochSlots ( - EpochSlots (..), - WithEpochSlots (..), - epochFirstSlot, -) -where - -import Cardano.Chain.Slotting.EpochNumber -import Cardano.Chain.Slotting.SlotNumber -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - fromByronCBOR, - toByronCBOR, - ) -import Cardano.Prelude -import Data.Data (Data) -import Formatting.Buildable (Buildable) -import NoThunks.Class (NoThunks (..)) - --- | The number of slots per epoch. -newtype EpochSlots = EpochSlots - { unEpochSlots :: Word64 - } - deriving (Data, Eq, Ord, Read, Show, Buildable, Generic, NoThunks) - -instance ToCBOR EpochSlots where - toCBOR = toByronCBOR - -instance FromCBOR EpochSlots where - fromCBOR = fromByronCBOR - -instance EncCBOR EpochSlots where - encCBOR = encCBOR . unEpochSlots - -instance DecCBOR EpochSlots where - decCBOR = EpochSlots <$> decCBOR - --- | Data with an accompanying slots per epoch context. -data WithEpochSlots a = WithEpochSlots - { epochSlots :: EpochSlots - , unWithEpochSlots :: a - } - deriving (Show, Eq) - --- | Calculate the first slot in an epoch. --- --- Note that this function will give an undetermined result if Byron is not the --- first and only era - a more robust method should use 'EpochInfo' from --- cardano-slotting. -epochFirstSlot :: EpochSlots -> EpochNumber -> SlotNumber -epochFirstSlot (EpochSlots n) (EpochNumber k) = SlotNumber $ n * k diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Slotting/SlotCount.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Slotting/SlotCount.hs deleted file mode 100644 index bc80408a21f..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Slotting/SlotCount.hs +++ /dev/null @@ -1,21 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} - -module Cardano.Chain.Slotting.SlotCount ( - SlotCount (..), -) -where - -import Cardano.Ledger.Binary (DecCBOR, EncCBOR, FromCBOR, ToCBOR) -import Cardano.Prelude -import Formatting.Buildable (Buildable) - --- | A number of slots -newtype SlotCount = SlotCount - { unSlotCount :: Word64 - } - deriving stock (Read, Show, Generic) - deriving newtype (Eq, Ord, Buildable, EncCBOR, DecCBOR, ToCBOR, FromCBOR) - deriving anyclass (NFData) diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Slotting/SlotNumber.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Slotting/SlotNumber.hs deleted file mode 100644 index 346504c2348..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Slotting/SlotNumber.hs +++ /dev/null @@ -1,82 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE UndecidableInstances #-} - -module Cardano.Chain.Slotting.SlotNumber ( - SlotNumber (..), - addSlotCount, - -- deprecated - subSlotCount, -) -where - -import Cardano.Chain.Slotting.SlotCount (SlotCount (..)) -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - fromByronCBOR, - toByronCBOR, - ) -import Cardano.Prelude -import qualified Data.Aeson as Aeson -import Formatting (bprint, int) -import qualified Formatting.Buildable as B -import NoThunks.Class (NoThunks (..)) -import Text.JSON.Canonical (FromJSON (..), ToJSON (..)) - --- | 'SlotNumber' is an absolute slot number from the beginning of time --- --- 'SlotNumber' is held in a 'Word64'. Assuming a slot every 20 seconds, 'Word64' --- is sufficient for slot indices for 10^13 years. -newtype SlotNumber = SlotNumber - { unSlotNumber :: Word64 - } - deriving (Eq, Generic, Ord, Show) - deriving newtype (Num) - deriving anyclass (NFData, NoThunks) - --- Used for debugging purposes only -instance Aeson.ToJSON SlotNumber - -instance ToCBOR SlotNumber where - toCBOR = toByronCBOR - -instance FromCBOR SlotNumber where - fromCBOR = fromByronCBOR - -instance EncCBOR SlotNumber where - encCBOR = encCBOR . unSlotNumber - encodedSizeExpr size = encodedSizeExpr size . fmap unSlotNumber - -instance DecCBOR SlotNumber where - decCBOR = SlotNumber <$> decCBOR - -instance Monad m => ToJSON m SlotNumber where - toJSON = toJSON . unSlotNumber - -instance MonadError SchemaError m => FromJSON m SlotNumber where - fromJSON val = do - number <- fromJSON val - pure $ SlotNumber number - -instance B.Buildable SlotNumber where - build s = bprint int (unSlotNumber s) - --- | Increase a 'SlotNumber' by 'SlotCount' -addSlotCount :: SlotCount -> SlotNumber -> SlotNumber -addSlotCount (SlotCount a) (SlotNumber b) - | a <= maxBound - b = SlotNumber $ a + b - | otherwise = SlotNumber maxBound - --- | Decrease a 'SlotNumber' by 'SlotCount', going no lower than 0 -{-# DEPRECATED subSlotCount "this function is dangerous and can usually be replaced by addSlotCount" #-} -subSlotCount :: SlotCount -> SlotNumber -> SlotNumber -subSlotCount (SlotCount a) (SlotNumber b) = - if a > b then SlotNumber 0 else SlotNumber (b - a) diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Ssc.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Ssc.hs deleted file mode 100644 index 0cd8e19783a..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Ssc.hs +++ /dev/null @@ -1,254 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} - -module Cardano.Chain.Ssc ( - SscPayload (..), - dropSscPayload, - SscProof (..), - dropSscProof, - dropCommitmentsMap, - dropSignedCommitment, - dropCommitment, - dropOpeningsMap, - dropSharesMap, - dropInnerSharesMap, - dropVssCertificatesMap, - dropVssCertificate, -) -where - -import Cardano.Ledger.Binary ( - DecCBOR (..), - DecoderError (..), - Dropper, - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - cborError, - decodeListLen, - dropBytes, - dropList, - dropMap, - dropSet, - dropTriple, - dropWord64, - encodeListLen, - enforceSize, - fromByronCBOR, - matchSize, - toByronCBOR, - ) -import Cardano.Prelude hiding (cborError) -import Data.Aeson (ToJSON) -import qualified Data.ByteString as ByteString (pack) -import NoThunks.Class (NoThunks (..)) - --------------------------------------------------------------------------------- --- SscPayload --------------------------------------------------------------------------------- - -data SscPayload - = SscPayload - deriving (Eq, Show, Generic, NFData) - -instance ToCBOR SscPayload where - toCBOR = toByronCBOR - -instance FromCBOR SscPayload where - fromCBOR = fromByronCBOR - --- Used for debugging purposes only -instance ToJSON SscPayload - -instance EncCBOR SscPayload where - encCBOR _ = - encodeListLen 2 - <> encCBOR (3 :: Word8) - <> encCBOR (mempty :: Set ()) - -instance DecCBOR SscPayload where - decCBOR = do - dropSscPayload - pure SscPayload - -dropSscPayload :: Dropper s -dropSscPayload = do - actualLen <- decodeListLen - decCBOR >>= \case - 0 -> do - matchSize "CommitmentsPayload" 3 actualLen - dropCommitmentsMap - dropVssCertificatesMap - 1 -> do - matchSize "OpeningsPayload" 3 actualLen - dropOpeningsMap - dropVssCertificatesMap - 2 -> do - matchSize "SharesPayload" 3 actualLen - dropSharesMap - dropVssCertificatesMap - 3 -> do - matchSize "CertificatesPayload" 2 actualLen - dropVssCertificatesMap - t -> cborError $ DecoderErrorUnknownTag "SscPayload" t - --------------------------------------------------------------------------------- --- SscProof --------------------------------------------------------------------------------- - -data SscProof - = SscProof - deriving (Eq, Show, Generic, NFData, NoThunks) - -instance ToCBOR SscProof where - toCBOR = toByronCBOR - -instance FromCBOR SscProof where - fromCBOR = fromByronCBOR - --- Used for debugging purposes only -instance ToJSON SscProof - -instance EncCBOR SscProof where - encCBOR _ = - encodeListLen 2 <> encCBOR (3 :: Word8) <> encCBOR hashBytes - where - -- The VssCertificatesMap is encoded as a HashSet, so you'd think we want - -- the hash of the encoding of an empty HashSet. BUT NO! For the calculation - -- of the hashes in the header, it uses the encoding of the underlying - -- HashMap. The hash of the encoded empty HashMap is - -- d36a2619a672494604e11bb447cbcf5231e9f2ba25c2169177edc941bd50ad6c - hashBytes :: ByteString - hashBytes = - ByteString.pack - [ 0xd3 - , 0x6a - , 0x26 - , 0x19 - , 0xa6 - , 0x72 - , 0x49 - , 0x46 - , 0x04 - , 0xe1 - , 0x1b - , 0xb4 - , 0x47 - , 0xcb - , 0xcf - , 0x52 - , 0x31 - , 0xe9 - , 0xf2 - , 0xba - , 0x25 - , 0xc2 - , 0x16 - , 0x91 - , 0x77 - , 0xed - , 0xc9 - , 0x41 - , 0xbd - , 0x50 - , 0xad - , 0x6c - ] - - encodedSizeExpr size _ = - 1 - + encodedSizeExpr size (Proxy :: Proxy Word8) - + 34 - -instance DecCBOR SscProof where - decCBOR = do - dropSscProof - pure SscProof - -dropSscProof :: Dropper s -dropSscProof = do - actualLen <- decodeListLen - decCBOR >>= \case - 0 -> do - matchSize "CommitmentsProof" 3 actualLen - dropBytes - dropBytes - 1 -> do - matchSize "OpeningsProof" 3 actualLen - dropBytes - dropBytes - 2 -> do - matchSize "SharesProof" 3 actualLen - dropBytes - dropBytes - 3 -> do - matchSize "CertificatesProof" 2 actualLen - dropBytes - t -> cborError $ DecoderErrorUnknownTag "SscProof" t - --------------------------------------------------------------------------------- --- CommitmentsMap --------------------------------------------------------------------------------- - -dropCommitmentsMap :: Dropper s -dropCommitmentsMap = dropSet dropSignedCommitment - -dropSignedCommitment :: Dropper s -dropSignedCommitment = dropTriple dropBytes dropCommitment dropBytes - -dropCommitment :: Dropper s -dropCommitment = do - enforceSize "Commitment" 2 - -- Map (AsBinary VssVerificationKey) (NonEmpty (AsBinary EncShare)) - dropMap dropBytes (dropList dropBytes) - dropSecretProof - -dropSecretProof :: Dropper s -dropSecretProof = do - enforceSize "SecretProof" 4 - -- Scrape.ExtraGen - dropBytes - -- Scrape.Proof - dropBytes - -- Scrape.ParallelProofs - dropBytes - -- [Scrape.Commitment] - dropList dropBytes - --------------------------------------------------------------------------------- --- OpeningsMap --------------------------------------------------------------------------------- - -dropOpeningsMap :: Dropper s -dropOpeningsMap = dropMap dropBytes dropBytes - --------------------------------------------------------------------------------- --- SharesMap --------------------------------------------------------------------------------- - -dropSharesMap :: Dropper s -dropSharesMap = dropMap dropBytes dropInnerSharesMap - -dropInnerSharesMap :: Dropper s -dropInnerSharesMap = dropMap dropBytes (dropList dropBytes) - --------------------------------------------------------------------------------- --- VssCertificatesMap --------------------------------------------------------------------------------- - -dropVssCertificatesMap :: Dropper s -dropVssCertificatesMap = dropSet dropVssCertificate - -dropVssCertificate :: Dropper s -dropVssCertificate = do - enforceSize "VssCertificate" 4 - -- AsBinary VssVerificationKey - dropBytes - -- EpochNumber - dropWord64 - -- Signature (AsBinary VssVerificationKey, EpochNumber) - dropBytes - -- VerificationKey - dropBytes diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/UTxO.hs b/eras/byron/ledger/impl/src/Cardano/Chain/UTxO.hs deleted file mode 100644 index 5ef8d7ceba4..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/UTxO.hs +++ /dev/null @@ -1,16 +0,0 @@ -module Cardano.Chain.UTxO ( - module X, -) -where - -import Cardano.Chain.UTxO.Compact as X -import Cardano.Chain.UTxO.GenesisUTxO as X -import Cardano.Chain.UTxO.Tx as X -import Cardano.Chain.UTxO.TxAux as X -import Cardano.Chain.UTxO.TxPayload as X -import Cardano.Chain.UTxO.TxProof as X -import Cardano.Chain.UTxO.TxWitness as X -import Cardano.Chain.UTxO.UTxO as X -import Cardano.Chain.UTxO.UTxOConfiguration as X -import Cardano.Chain.UTxO.Validation as X -import Cardano.Chain.UTxO.ValidationMode as X diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/UTxO/Compact.hs b/eras/byron/ledger/impl/src/Cardano/Chain/UTxO/Compact.hs deleted file mode 100644 index 0919b9fc1c0..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/UTxO/Compact.hs +++ /dev/null @@ -1,271 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE OverloadedStrings #-} - --- | The UTxO is large and is kept in-memory. It is important to use as --- small a representation as possible to keep overall memory use reasonable. --- --- This module provides a special compact representation for data types --- contained within the UTxO. --- --- The idea here is that the compact representation is optimised only for --- storage size and does not have to be the same as the representation used --- when operating on the data. Conversion functions are to be used when --- inserting and retrieving values from the UTxO. -module Cardano.Chain.UTxO.Compact ( - CompactTxIn (..), - toCompactTxIn, - fromCompactTxIn, - CompactTxId, - toCompactTxId, - fromCompactTxId, - CompactTxOut (..), - toCompactTxOut, - fromCompactTxOut, -) -where - -import Cardano.Chain.Common.Compact ( - CompactAddress, - fromCompactAddress, - toCompactAddress, - ) -import Cardano.Chain.Common.Lovelace (Lovelace) -import Cardano.Chain.UTxO.Tx (TxId, TxIn (..), TxOut (..)) -import Cardano.Crypto.Hashing (hashToBytes, unsafeHashFromBytes) -import Cardano.HeapWords (HeapWords (..), heapWordsUnpacked) -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - encodeListLen, - enforceSize, - fromByronCBOR, - toByronCBOR, - ) -import Cardano.Prelude -import Data.Binary.Get (Get, getWord64le, runGet) -import Data.Binary.Put (Put, putWord64le, runPut) -import qualified Data.ByteString.Lazy as BSL (fromStrict, toStrict) -import NoThunks.Class (NoThunks (..)) - --------------------------------------------------------------------------------- --- Compact TxIn --------------------------------------------------------------------------------- - --- | A compact in-memory representation for a 'TxIn'. --- --- Convert using 'toCompactTxIn' and 'fromCompactTxIn'. -data CompactTxIn - = CompactTxInUtxo - {-# UNPACK #-} !CompactTxId - {-# UNPACK #-} !Word16 - deriving (Eq, Ord, Generic, Show) - deriving anyclass (NFData, NoThunks) - -instance HeapWords CompactTxIn where - heapWords _ = - -- We have - -- - -- > data CompactTxIn = CompactTxInUtxo {-# UNPACK #-} !CompactTxId - -- > {-# UNPACK #-} !Word16 - -- - -- so 'CompactTxInUtxo' requires: - -- - -- - 1 word for the 'CompactTxInUtxo' object header - -- - 4 words (on a 64-bit arch) for the unpacked 'CompactTxId' - -- - 1 word for the unpacked 'Word16' - -- - -- +---------------------------------------------+ - -- │CompactTxInUtxo│Word#|Word#│Word#│Word#│Word#│ - -- +---------------------------------------------+ - -- - 6 - -instance ToCBOR CompactTxIn where - toCBOR = toByronCBOR - -instance FromCBOR CompactTxIn where - fromCBOR = fromByronCBOR - -instance DecCBOR CompactTxIn where - decCBOR = do - enforceSize "CompactTxIn" 2 - CompactTxInUtxo - <$> decCBOR - <*> decCBOR - -instance EncCBOR CompactTxIn where - encCBOR (CompactTxInUtxo txId txIndex) = - encodeListLen 2 - <> encCBOR txId - <> encCBOR txIndex - -toCompactTxIn :: TxIn -> CompactTxIn -toCompactTxIn (TxInUtxo txId txIndex) = - CompactTxInUtxo (toCompactTxId txId) txIndex - -fromCompactTxIn :: CompactTxIn -> TxIn -fromCompactTxIn (CompactTxInUtxo compactTxId txIndex) = - TxInUtxo (fromCompactTxId compactTxId) txIndex - --------------------------------------------------------------------------------- --- Compact TxId --------------------------------------------------------------------------------- - --- | A compact in-memory representation for a 'TxId'. --- --- Convert using 'toCompactTxId' and 'fromCompactTxId'. --- --- Compared to a normal 'TxId', this takes 5 heap words rather than 12. -data CompactTxId - = CompactTxId - {-# UNPACK #-} !Word64 - {-# UNPACK #-} !Word64 - {-# UNPACK #-} !Word64 - {-# UNPACK #-} !Word64 - deriving (Eq, Generic, Ord, Show) - deriving anyclass (NFData, NoThunks) - -instance HeapWords CompactTxId where - heapWords _ = - -- We have - -- - -- > data CompactTxId = CompactTxId {-# UNPACK #-} !Word64 - -- > {-# UNPACK #-} !Word64 - -- > {-# UNPACK #-} !Word64 - -- > {-# UNPACK #-} !Word64 - -- - -- so 'CompactTxId' requires: - -- - -- - 1 word for the 'CompactTxId' object header - -- - 1 word (on a 64-bit arch) for the unpacked 'Word64' - -- - 1 word (on a 64-bit arch) for the unpacked 'Word64' - -- - 1 word (on a 64-bit arch) for the unpacked 'Word64' - -- - 1 word (on a 64-bit arch) for the unpacked 'Word64' - -- - -- +-----------------------------------+ - -- │CompactTxId│Word#│Word#│Word#│Word#│ - -- +-----------------------------------+ - -- - 5 - -instance ToCBOR CompactTxId where - toCBOR = toByronCBOR - -instance FromCBOR CompactTxId where - fromCBOR = fromByronCBOR - -instance DecCBOR CompactTxId where - decCBOR = do - enforceSize "CompactTxId" 4 - CompactTxId - <$> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - -instance EncCBOR CompactTxId where - encCBOR (CompactTxId a b c d) = - encodeListLen 4 - <> encCBOR a - <> encCBOR b - <> encCBOR c - <> encCBOR d - -getCompactTxId :: Get CompactTxId -getCompactTxId = - CompactTxId - <$> getWord64le - <*> getWord64le - <*> getWord64le - <*> getWord64le - -putCompactTxId :: CompactTxId -> Put -putCompactTxId (CompactTxId a b c d) = - putWord64le a - >> putWord64le b - >> putWord64le c - >> putWord64le d - -toCompactTxId :: TxId -> CompactTxId -toCompactTxId = - runGet getCompactTxId . BSL.fromStrict . hashToBytes - -fromCompactTxId :: CompactTxId -> TxId -fromCompactTxId = - unsafeHashFromBytes . BSL.toStrict . runPut . putCompactTxId - --------------------------------------------------------------------------------- --- Compact TxOut --------------------------------------------------------------------------------- - --- | A compact in-memory representation for a 'TxOut'. --- --- Convert using 'toCompactTxOut' and 'fromCompactTxOut'. -data CompactTxOut - = CompactTxOut - {-# UNPACK #-} !CompactAddress - {-# UNPACK #-} !Lovelace - deriving (Eq, Ord, Generic, Show) - deriving anyclass (NFData, NoThunks) - -instance HeapWords CompactTxOut where - heapWords (CompactTxOut compactAddr _) = - -- We have - -- - -- > data CompactTxOut = CompactTxOut {-# UNPACK #-} !CompactAddress - -- > {-# UNPACK #-} !Lovelace - -- > newtype CompactAddress = CompactAddress ShortByteString - -- > newtype Lovelace = Lovelace { getLovelace :: Word64 } - -- - -- so @CompactTxOut {-# UNPACK #-} !CompactAddress {-# UNPACK #-} !Lovelace@ - -- requires: - -- - -- - 1 word for the 'CompactTxOut' object header - -- - 1 word for the pointer to the byte array object - -- - 1 word (on a 64-bit arch) for the unpacked 'Word64' ('Lovelace') - -- - the heap words required by the byte array object - -- - -- Note that for the sake of uniformity, we use 'heapWordsUnpacked' to - -- account for the level of indirection removed by the @UNPACK@ pragma. - -- - -- +----------------------+ - -- │CompactTxOut│ * │Word#│ - -- +--------------+-------+ - -- | - -- v - -- +--------------+ - -- │BA#│sz│payload│ - -- +--------------+ - -- - 3 + heapWordsUnpacked compactAddr - -instance ToCBOR CompactTxOut where - toCBOR = toByronCBOR - -instance FromCBOR CompactTxOut where - fromCBOR = fromByronCBOR - -instance DecCBOR CompactTxOut where - decCBOR = do - enforceSize "CompactTxOut" 2 - CompactTxOut - <$> decCBOR - <*> decCBOR - -instance EncCBOR CompactTxOut where - encCBOR (CompactTxOut compactAddr lovelace) = - encodeListLen 2 - <> encCBOR compactAddr - <> encCBOR lovelace - -toCompactTxOut :: TxOut -> CompactTxOut -toCompactTxOut (TxOut addr lovelace) = - CompactTxOut (toCompactAddress addr) lovelace - -fromCompactTxOut :: CompactTxOut -> TxOut -fromCompactTxOut (CompactTxOut compactAddr lovelace) = - TxOut (fromCompactAddress compactAddr) lovelace diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/UTxO/GenesisUTxO.hs b/eras/byron/ledger/impl/src/Cardano/Chain/UTxO/GenesisUTxO.hs deleted file mode 100644 index 32985bb7eae..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/UTxO/GenesisUTxO.hs +++ /dev/null @@ -1,33 +0,0 @@ -module Cardano.Chain.UTxO.GenesisUTxO ( - genesisUtxo, -) -where - -import Cardano.Chain.Common (Address, Lovelace, makeRedeemAddress) -import Cardano.Chain.Common.NetworkMagic (NetworkMagic, makeNetworkMagic) -import Cardano.Chain.Genesis (unGenesisAvvmBalances, unGenesisNonAvvmBalances) -import qualified Cardano.Chain.Genesis as Genesis -import Cardano.Chain.UTxO.UTxO (UTxO) -import qualified Cardano.Chain.UTxO.UTxO as UTxO -import Cardano.Crypto (fromCompactRedeemVerificationKey) -import Cardano.Prelude -import qualified Data.Map.Strict as M - --- | Create initial 'UTxO' from balances defined in the genesis config -genesisUtxo :: Genesis.Config -> UTxO -genesisUtxo config = UTxO.fromBalances balances - where - balances :: [(Address, Lovelace)] - balances = avvmBalances <> nonAvvmBalances - - avvmBalances :: [(Address, Lovelace)] - avvmBalances = - first (makeRedeemAddress networkMagic . fromCompactRedeemVerificationKey) - <$> M.toList (unGenesisAvvmBalances $ Genesis.configAvvmDistr config) - - networkMagic :: NetworkMagic - networkMagic = makeNetworkMagic (Genesis.configProtocolMagic config) - - nonAvvmBalances :: [(Address, Lovelace)] - nonAvvmBalances = - M.toList $ unGenesisNonAvvmBalances $ Genesis.configNonAvvmBalances config diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/UTxO/Tx.hs b/eras/byron/ledger/impl/src/Cardano/Chain/UTxO/Tx.hs deleted file mode 100644 index e1f0fe16dc6..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/UTxO/Tx.hs +++ /dev/null @@ -1,226 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} - -module Cardano.Chain.UTxO.Tx ( - Tx (..), - txF, - TxId, - TxAttributes, - TxIn (..), - TxOut (..), -) -where - -import Cardano.Chain.Common ( - Address (..), - Lovelace, - lovelaceF, - ) -import Cardano.Chain.Common.Attributes (Attributes, attributesAreKnown) -import Cardano.Chain.Common.CBOR ( - decodeKnownCborDataItem, - encodeKnownCborDataItem, - knownCborDataItemSizeExpr, - ) -import Cardano.Crypto (Hash, serializeCborHash, shortHashF) -import Cardano.HeapWords (HeapWords (..)) -import Cardano.Ledger.Binary ( - Case (..), - DecCBOR (..), - DecoderError (DecoderErrorUnknownTag), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - cborError, - encodeListLen, - enforceSize, - fromByronCBOR, - szCases, - toByronCBOR, - ) -import Cardano.Prelude hiding (cborError) -import Data.Aeson (ToJSON) -import Formatting (Format, bprint, build, builder, int) -import qualified Formatting.Buildable as B - --------------------------------------------------------------------------------- --- Tx --------------------------------------------------------------------------------- - --- | Transaction --- --- NB: transaction witnesses are stored separately -data Tx = UnsafeTx - { txInputs :: !(NonEmpty TxIn) - -- ^ Inputs of transaction. - , txOutputs :: !(NonEmpty TxOut) - -- ^ Outputs of transaction. - , txAttributes :: !TxAttributes - -- ^ Attributes of transaction - } - deriving (Eq, Ord, Generic, Show) - deriving anyclass (NFData) - -instance B.Buildable Tx where - build tx = - bprint - ( "Tx " - . build - . " with inputs " - . listJson - . ", outputs: " - . listJson - . builder - ) - (serializeCborHash tx) - (txInputs tx) - (txOutputs tx) - attrsBuilder - where - attrs = txAttributes tx - attrsBuilder - | attributesAreKnown attrs = mempty - | otherwise = bprint (", attributes: " . build) attrs - -instance ToCBOR Tx where - toCBOR = toByronCBOR - -instance FromCBOR Tx where - fromCBOR = fromByronCBOR - --- Used for debugging purposes only -instance ToJSON Tx - -instance EncCBOR Tx where - encCBOR tx = - encodeListLen 3 - <> encCBOR (txInputs tx) - <> encCBOR (txOutputs tx) - <> encCBOR - (txAttributes tx) - - encodedSizeExpr size pxy = - 1 - + size (txInputs <$> pxy) - + size (txOutputs <$> pxy) - + size - (txAttributes <$> pxy) - -instance DecCBOR Tx where - decCBOR = do - enforceSize "Tx" 3 - UnsafeTx <$> decCBOR <*> decCBOR <*> decCBOR - --- | Specialized formatter for 'Tx' -txF :: Format r (Tx -> r) -txF = build - --------------------------------------------------------------------------------- --- TxId --------------------------------------------------------------------------------- - --- | Represents transaction identifier as 'Hash' of 'Tx' -type TxId = Hash Tx - --------------------------------------------------------------------------------- --- TxAttributes --------------------------------------------------------------------------------- - --- | Represents transaction attributes: map from 1-byte integer to --- arbitrary-type value. To be used for extending transaction with new fields --- via softfork. -type TxAttributes = Attributes () - --------------------------------------------------------------------------------- --- TxIn --------------------------------------------------------------------------------- - --- | Transaction arbitrary input -data TxIn - = -- | TxId = Which transaction's output is used - -- | Word16 = Index of the output in transaction's outputs - TxInUtxo TxId Word16 - deriving (Eq, Ord, Generic, Show) - deriving anyclass (NFData) - -instance B.Buildable TxIn where - build (TxInUtxo txInHash txInIndex) = - bprint ("TxInUtxo " . shortHashF . " #" . int) txInHash txInIndex - --- Used for debugging purposes only -instance ToJSON TxIn - -instance ToCBOR TxIn where - toCBOR = toByronCBOR - -instance FromCBOR TxIn where - fromCBOR = fromByronCBOR - -instance EncCBOR TxIn where - encCBOR (TxInUtxo txInHash txInIndex) = - encodeListLen 2 - <> encCBOR (0 :: Word8) - <> encodeKnownCborDataItem - (txInHash, txInIndex) - - encodedSizeExpr size _ = - 2 - + knownCborDataItemSizeExpr - (szCases [Case "TxInUtxo" $ size $ Proxy @(TxId, Word16)]) - -instance DecCBOR TxIn where - decCBOR = do - enforceSize "TxIn" 2 - tag <- decCBOR @Word8 - case tag of - 0 -> uncurry TxInUtxo <$> decodeKnownCborDataItem - _ -> cborError $ DecoderErrorUnknownTag "TxIn" tag - -instance HeapWords TxIn where - heapWords (TxInUtxo txid _w16) = 3 + heapWords txid + 2 - --------------------------------------------------------------------------------- --- TxOut --------------------------------------------------------------------------------- - --- | Transaction output -data TxOut = TxOut - { txOutAddress :: !Address - , txOutValue :: !Lovelace - } - deriving (Eq, Ord, Generic, Show) - deriving anyclass (NFData) - -instance B.Buildable TxOut where - build txOut = - bprint - ("TxOut " . lovelaceF . " -> " . build) - (txOutValue txOut) - (txOutAddress txOut) - --- Used for debugging purposes only -instance ToJSON TxOut - -instance EncCBOR TxOut where - encCBOR txOut = - encodeListLen 2 <> encCBOR (txOutAddress txOut) <> encCBOR (txOutValue txOut) - - encodedSizeExpr size pxy = - 1 + size (txOutAddress <$> pxy) + size (txOutValue <$> pxy) - -instance ToCBOR TxOut where - toCBOR = toByronCBOR - -instance FromCBOR TxOut where - fromCBOR = fromByronCBOR - -instance DecCBOR TxOut where - decCBOR = do - enforceSize "TxOut" 2 - TxOut <$> decCBOR <*> decCBOR - -instance HeapWords TxOut where - heapWords (TxOut address _) = 3 + heapWords address diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/UTxO/TxAux.hs b/eras/byron/ledger/impl/src/Cardano/Chain/UTxO/TxAux.hs deleted file mode 100644 index 53d4266a45f..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/UTxO/TxAux.hs +++ /dev/null @@ -1,117 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveFunctor #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Cardano.Chain.UTxO.TxAux ( - TxAux, - ATxAux (..), - mkTxAux, - annotateTxAux, - taTx, - taWitness, - txaF, -) -where - -import Cardano.Chain.UTxO.Tx (Tx) -import Cardano.Chain.UTxO.TxWitness (TxWitness) -import Cardano.Ledger.Binary ( - Annotated (..), - ByteSpan, - DecCBOR (..), - Decoded (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - annotatedDecoder, - byronProtVer, - decCBORAnnotated, - encodeListLen, - enforceSize, - fromByronCBOR, - serialize, - slice, - toByronCBOR, - unsafeDeserialize, - ) -import Cardano.Prelude -import Data.Aeson (ToJSON) -import qualified Data.ByteString.Lazy as Lazy -import Formatting (Format, bprint, build, later) -import qualified Formatting.Buildable as B - --- | Transaction + auxiliary data -type TxAux = ATxAux () - -mkTxAux :: Tx -> TxWitness -> TxAux -mkTxAux tx tw = ATxAux (Annotated tx ()) (Annotated tw ()) () - -annotateTxAux :: TxAux -> ATxAux ByteString -annotateTxAux ta = Lazy.toStrict . slice bs <$> ta' - where - bs = serialize byronProtVer ta - ta' = unsafeDeserialize byronProtVer bs - -data ATxAux a = ATxAux - { aTaTx :: !(Annotated Tx a) - , aTaWitness :: !(Annotated TxWitness a) - , aTaAnnotation :: !a - } - deriving (Generic, Show, Eq, Functor) - deriving anyclass (NFData) - -instance Decoded (ATxAux ByteString) where - type BaseType (ATxAux ByteString) = ATxAux () - recoverBytes = aTaAnnotation - --- Used for debugging purposes only -instance ToJSON a => ToJSON (ATxAux a) - -taTx :: ATxAux a -> Tx -taTx = unAnnotated . aTaTx - -taWitness :: ATxAux a -> TxWitness -taWitness = unAnnotated . aTaWitness - --- | Specialized formatter for 'TxAux' -txaF :: Format r (TxAux -> r) -txaF = later $ \ta -> - bprint - (build . "\n" . "witnesses: " . listJsonIndent 4) - (taTx ta) - (taWitness ta) - -instance B.Buildable TxAux where - build = bprint txaF - -instance ToCBOR TxAux where - toCBOR = toByronCBOR - -instance FromCBOR TxAux where - fromCBOR = fromByronCBOR - -instance EncCBOR TxAux where - encCBOR ta = encodeListLen 2 <> encCBOR (taTx ta) <> encCBOR (taWitness ta) - - encodedSizeExpr size pxy = 1 + size (taTx <$> pxy) + size (taWitness <$> pxy) - -instance DecCBOR TxAux where - decCBOR = void <$> decCBOR @(ATxAux ByteSpan) - -instance FromCBOR (ATxAux ByteSpan) where - fromCBOR = fromByronCBOR - -instance DecCBOR (ATxAux ByteSpan) where - decCBOR = do - Annotated (tx, witness) byteSpan <- annotatedDecoder $ do - enforceSize "TxAux" 2 - tx <- decCBORAnnotated - witness <- decCBORAnnotated - pure (tx, witness) - pure $ ATxAux tx witness byteSpan diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/UTxO/TxPayload.hs b/eras/byron/ledger/impl/src/Cardano/Chain/UTxO/TxPayload.hs deleted file mode 100644 index 7dd9dc3741f..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/UTxO/TxPayload.hs +++ /dev/null @@ -1,93 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveFunctor #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} - -module Cardano.Chain.UTxO.TxPayload ( - TxPayload, - ATxPayload (..), - mkTxPayload, - recoverHashedBytes, - txpAnnotatedTxs, - txpTxs, - txpWitnesses, - unTxPayload, -) -where - -import Cardano.Chain.UTxO.Tx (Tx) -import Cardano.Chain.UTxO.TxAux (ATxAux (..), TxAux, taTx, taWitness) -import Cardano.Chain.UTxO.TxWitness (TxWitness) -import Cardano.Ledger.Binary ( - Annotated (..), - ByteSpan, - DecCBOR (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - fromByronCBOR, - toByronCBOR, - ) -import Cardano.Prelude -import Data.Aeson (ToJSON) - --- | Payload of UTxO component which is part of the block body -type TxPayload = ATxPayload () - -mkTxPayload :: [TxAux] -> TxPayload -mkTxPayload = ATxPayload - -newtype ATxPayload a = ATxPayload - { aUnTxPayload :: [ATxAux a] - } - deriving (Show, Eq, Generic, Functor) - deriving anyclass (NFData) - -unTxPayload :: ATxPayload a -> [TxAux] -unTxPayload = fmap void . aUnTxPayload - --- Used for debugging purposes only -instance ToJSON a => ToJSON (ATxPayload a) - -instance ToCBOR TxPayload where - toCBOR = toByronCBOR - -instance FromCBOR TxPayload where - fromCBOR = fromByronCBOR - -instance FromCBOR (ATxPayload ByteSpan) where - fromCBOR = fromByronCBOR - -instance EncCBOR TxPayload where - encCBOR = encCBOR . unTxPayload - -instance DecCBOR TxPayload where - decCBOR = void <$> decCBOR @(ATxPayload ByteSpan) - -instance DecCBOR (ATxPayload ByteSpan) where - decCBOR = ATxPayload <$> decCBOR - -txpAnnotatedTxs :: ATxPayload a -> [Annotated Tx a] -txpAnnotatedTxs = fmap aTaTx . aUnTxPayload - -txpTxs :: ATxPayload a -> [Tx] -txpTxs = fmap taTx . unTxPayload - -txpWitnesses :: TxPayload -> [TxWitness] -txpWitnesses = fmap taWitness . unTxPayload - -recoverHashedBytes :: ATxPayload ByteString -> Annotated [TxWitness] ByteString -recoverHashedBytes (ATxPayload auxs) = - let aWitnesses = aTaWitness <$> auxs - prefix = "\159" :: ByteString - -- This is the value of Codec.CBOR.Write.toLazyByteString encodeListLenIndef - suffix = "\255" :: ByteString - -- This is the value of Codec.CBOR.Write.toLazyByteString encodeBreak - -- They are hard coded here because the hashed bytes included them as an - -- implementation artifact - hashedByted = prefix <> mconcat (annotation <$> aWitnesses) <> suffix - in Annotated (unAnnotated <$> aWitnesses) hashedByted diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/UTxO/TxProof.hs b/eras/byron/ledger/impl/src/Cardano/Chain/UTxO/TxProof.hs deleted file mode 100644 index 780e80a2679..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/UTxO/TxProof.hs +++ /dev/null @@ -1,106 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE OverloadedStrings #-} - -module Cardano.Chain.UTxO.TxProof ( - TxProof (..), - mkTxProof, - recoverTxProof, -) -where - -import Cardano.Chain.Common.Merkle ( - MerkleRoot, - mkMerkleTree, - mkMerkleTreeDecoded, - mtRoot, - ) -import Cardano.Chain.UTxO.Tx (Tx) -import Cardano.Chain.UTxO.TxPayload ( - ATxPayload, - TxPayload, - recoverHashedBytes, - txpAnnotatedTxs, - txpTxs, - txpWitnesses, - ) -import Cardano.Chain.UTxO.TxWitness (TxWitness) -import Cardano.Crypto (Hash, hashDecoded, serializeCborHash) -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - encodeListLen, - enforceSize, - fromByronCBOR, - toByronCBOR, - ) -import Cardano.Prelude -import Data.Aeson (ToJSON) -import Formatting (bprint, build) -import qualified Formatting.Buildable as B -import NoThunks.Class (NoThunks (..)) - -data TxProof = TxProof - { txpNumber :: !Word32 - , txpRoot :: !(MerkleRoot Tx) - , txpWitnessesHash :: !(Hash [TxWitness]) - } - deriving (Show, Eq, Generic, NoThunks) - deriving anyclass (NFData) - --- Used for debugging purposes only -instance ToJSON TxProof - -instance B.Buildable TxProof where - build proof = - bprint - ("") - (txpNumber proof) - (txpRoot proof) - (txpWitnessesHash proof) - -instance ToCBOR TxProof where - toCBOR = toByronCBOR - -instance FromCBOR TxProof where - fromCBOR = fromByronCBOR - -instance EncCBOR TxProof where - encCBOR proof = - encodeListLen 3 - <> encCBOR (txpNumber proof) - <> encCBOR (txpRoot proof) - <> encCBOR (txpWitnessesHash proof) - encodedSizeExpr size proof = - 1 - + encodedSizeExpr size (txpNumber <$> proof) - + encodedSizeExpr size (txpRoot <$> proof) - + encodedSizeExpr size (txpWitnessesHash <$> proof) - -instance DecCBOR TxProof where - decCBOR = do - enforceSize "TxProof" 3 - TxProof <$> decCBOR <*> decCBOR <*> decCBOR - --- | Construct 'TxProof' which proves given 'TxPayload' --- --- This will construct a Merkle tree, which can be very expensive. Use with --- care. -mkTxProof :: TxPayload -> TxProof -mkTxProof payload = - TxProof - { txpNumber = fromIntegral (length $ txpTxs payload) - , txpRoot = mtRoot (mkMerkleTree $ txpTxs payload) - , txpWitnessesHash = serializeCborHash $ txpWitnesses payload - } - -recoverTxProof :: ATxPayload ByteString -> TxProof -recoverTxProof payload = - TxProof - { txpNumber = fromIntegral (length $ txpTxs payload) - , txpRoot = mtRoot (mkMerkleTreeDecoded $ txpAnnotatedTxs payload) - , txpWitnessesHash = hashDecoded $ recoverHashedBytes payload - } diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/UTxO/TxWitness.hs b/eras/byron/ledger/impl/src/Cardano/Chain/UTxO/TxWitness.hs deleted file mode 100644 index d03c4345c5a..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/UTxO/TxWitness.hs +++ /dev/null @@ -1,161 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Cardano.Chain.UTxO.TxWitness ( - TxWitness, - TxInWitness (..), - TxSigData (..), - TxSig, - recoverSigData, -) -where - -import Cardano.Chain.Common (addressHash) -import Cardano.Chain.Common.CBOR ( - decodeKnownCborDataItem, - encodeKnownCborDataItem, - knownCborDataItemSizeExpr, - ) -import Cardano.Chain.UTxO.Tx (Tx) -import Cardano.Crypto ( - Hash, - RedeemSignature, - RedeemVerificationKey, - Signature, - VerificationKey, - hashDecoded, - shortHashF, - ) -import Cardano.Ledger.Binary ( - Annotated (..), - Case (..), - DecCBOR (..), - DecoderError (DecoderErrorUnknownTag), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - byronProtVer, - cborError, - decodeListLen, - encodeListLen, - fromByronCBOR, - matchSize, - serialize', - szCases, - toByronCBOR, - ) -import Cardano.Prelude hiding (cborError) -import Data.Aeson (ToJSON) -import Data.Vector (Vector) -import Formatting (bprint, build) -import qualified Formatting.Buildable as B - --- | A witness is a proof that a transaction is allowed to spend the funds it --- spends (by providing signatures, redeeming scripts, etc). A separate proof --- is provided for each input. -type TxWitness = Vector TxInWitness - --- | A witness for a single input -data TxInWitness - = -- | VKWitness twKey twSig - VKWitness !VerificationKey !TxSig - | -- | RedeemWitness twRedeemKey twRedeemSig - RedeemWitness !RedeemVerificationKey !(RedeemSignature TxSigData) - deriving (Eq, Show, Generic) - deriving anyclass (NFData) - -instance B.Buildable TxInWitness where - build (VKWitness key sig) = - bprint - ( "VKWitness: key = " - . build - . ", key hash = " - . shortHashF - . ", sig = " - . build - ) - key - (addressHash key) - sig - build (RedeemWitness key sig) = - bprint ("VKWitness: key = " . build . ", sig = " . build) key sig - -instance ToCBOR TxInWitness where - toCBOR = toByronCBOR - -instance FromCBOR TxInWitness where - fromCBOR = fromByronCBOR - --- Used for debugging purposes only -instance ToJSON TxInWitness - -instance EncCBOR TxInWitness where - encCBOR input = case input of - VKWitness key sig -> - encodeListLen 2 - <> encCBOR (0 :: Word8) - <> encodeKnownCborDataItem (key, sig) - RedeemWitness key sig -> - encodeListLen 2 - <> encCBOR (2 :: Word8) - <> encodeKnownCborDataItem (key, sig) - - encodedSizeExpr size _ = - 2 - + szCases - ( map - (fmap knownCborDataItemSizeExpr) - [ Case "VKWitness" $ size $ Proxy @(VerificationKey, TxSig) - , Case "RedeemWitness" - $ size - $ Proxy @(RedeemVerificationKey, RedeemSignature TxSigData) - ] - ) - -instance DecCBOR TxInWitness where - decCBOR = do - len <- decodeListLen - decCBOR @Word8 >>= \case - 0 -> do - matchSize "TxInWitness.VKWitness" len 2 - uncurry VKWitness <$> decodeKnownCborDataItem - 2 -> do - matchSize "TxInWitness.RedeemWitness" len 2 - uncurry RedeemWitness <$> decodeKnownCborDataItem - tag -> cborError $ DecoderErrorUnknownTag "TxInWitness" tag - --- | Data that is being signed when creating a TxSig -newtype TxSigData = TxSigData - { txSigTxHash :: Hash Tx - } - deriving (Eq, Show, Generic) - -recoverSigData :: Annotated Tx ByteString -> Annotated TxSigData ByteString -recoverSigData atx = - let txHash = hashDecoded atx - signedBytes = serialize' byronProtVer txHash -- TODO: make the prefix bytes explicit - in Annotated (TxSigData txHash) signedBytes - --- Used for debugging purposes only -instance ToJSON TxSigData - -instance ToCBOR TxSigData where - toCBOR = toByronCBOR - -instance FromCBOR TxSigData where - fromCBOR = fromByronCBOR - -instance EncCBOR TxSigData where - encCBOR txSigData = encCBOR (txSigTxHash txSigData) - encodedSizeExpr size pxy = size (txSigTxHash <$> pxy) - -instance DecCBOR TxSigData where - decCBOR = TxSigData <$> decCBOR - --- | 'Signature' of addrId -type TxSig = Signature TxSigData diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/UTxO/UTxO.hs b/eras/byron/ledger/impl/src/Cardano/Chain/UTxO/UTxO.hs deleted file mode 100644 index 7fa219c1d43..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/UTxO/UTxO.hs +++ /dev/null @@ -1,195 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} -{-# OPTIONS_GHC -fno-warn-missed-specialisations #-} - -module Cardano.Chain.UTxO.UTxO ( - UTxO (..), - UTxOError (..), - empty, - fromList, - fromBalances, - fromTxOut, - toList, - member, - lookup, - lookupCompact, - lookupAddress, - union, - concat, - balance, - (<|), - ( - encodeListLen 2 <> encCBOR @Word8 0 <> encCBOR txIn - UTxOOverlappingUnion -> - encodeListLen 1 <> encCBOR @Word8 1 - -instance DecCBOR UTxOError where - decCBOR = do - len <- decodeListLen - tag <- decodeWord8 - case tag of - 0 -> matchSize "UTxOError" 2 len >> UTxOMissingInput <$> decCBOR - 1 -> matchSize "UTxOError" 1 len $> UTxOOverlappingUnion - _ -> cborError $ DecoderErrorUnknownTag "UTxOError" tag - -empty :: UTxO -empty = UTxO mempty - -fromList :: [(TxIn, TxOut)] -> UTxO -fromList = UTxO . M.fromList . toCompactTxInTxOutList - where - toCompactTxInTxOutList :: [(TxIn, TxOut)] -> [(CompactTxIn, CompactTxOut)] - toCompactTxInTxOutList = map (bimap toCompactTxIn toCompactTxOut) - --- | Create a 'UTxO' from a list of initial balances -fromBalances :: [(Address, Lovelace)] -> UTxO -fromBalances = - fromRight (panic "fromBalances: duplicate Address in initial balances") - . concat - . fmap (fromTxOut . uncurry TxOut) - --- | Construct a UTxO from a TxOut. This UTxO is a singleton with a TxIn that --- references an address constructed by hashing the TxOut address. This means --- it is not guaranteed (or likely) to be a real address. -fromTxOut :: TxOut -> UTxO -fromTxOut out = fromList [(TxInUtxo (coerce . serializeCborHash $ txOutAddress out) 0, out)] - -toList :: UTxO -> [(TxIn, TxOut)] -toList = fmap (bimap fromCompactTxIn fromCompactTxOut) . M.toList . unUTxO - -member :: TxIn -> UTxO -> Bool -member txIn = M.member (toCompactTxIn txIn) . unUTxO - -lookup :: TxIn -> UTxO -> Maybe TxOut -lookup txIn = fmap fromCompactTxOut . M.lookup (toCompactTxIn txIn) . unUTxO - -lookupCompact :: CompactTxIn -> UTxO -> Maybe CompactTxOut -lookupCompact txIn = M.lookup txIn . unUTxO - -lookupAddress :: TxIn -> UTxO -> Either UTxOError Address -lookupAddress txIn = - maybe (Left $ UTxOMissingInput txIn) (Right . txOutAddress . fromCompactTxOut) - . M.lookup (toCompactTxIn txIn) - . unUTxO - -union :: MonadError UTxOError m => UTxO -> UTxO -> m UTxO -union (UTxO m) (UTxO m') = do - let m'' = M.union m m' - (M.size m'' == M.size m + M.size m') `orThrowError` UTxOOverlappingUnion - pure $ UTxO m'' - -concat :: MonadError UTxOError m => [UTxO] -> m UTxO -concat = foldM union empty - -balance :: UTxO -> Either LovelaceError Lovelace -balance = sumLovelace . fmap compactTxOutValue . M.elems . unUTxO - where - compactTxOutValue :: CompactTxOut -> Lovelace - compactTxOutValue = txOutValue . fromCompactTxOut - -(<|) :: Set TxIn -> UTxO -> UTxO -(<|) inputs = UTxO . flip M.restrictKeys compactInputs . unUTxO - where - compactInputs = S.map toCompactTxIn inputs - -( UTxO -> UTxO -( UTxO -txOutputUTxO tx = - UTxO - $ M.fromList - [ (toCompactTxIn (TxInUtxo (txId tx) ix), (toCompactTxOut txOut)) - | (ix, txOut) <- indexedOutputs - ] - where - indexedOutputs :: [(Word16, TxOut)] - indexedOutputs = zip [0 ..] (NE.toList $ txOutputs tx) - - txId :: Tx -> TxId - txId = serializeCborHash - -isRedeemUTxO :: UTxO -> Bool -isRedeemUTxO = - all (isRedeemAddress . txOutAddress . fromCompactTxOut) - . M.elems - . unUTxO diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/UTxO/UTxOConfiguration.hs b/eras/byron/ledger/impl/src/Cardano/Chain/UTxO/UTxOConfiguration.hs deleted file mode 100644 index fbee0b18bf4..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/UTxO/UTxOConfiguration.hs +++ /dev/null @@ -1,63 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} - -module Cardano.Chain.UTxO.UTxOConfiguration ( - UTxOConfiguration (..), - defaultUTxOConfiguration, - mkUTxOConfiguration, -) -where - -import Cardano.Chain.Common.Address (Address) -import Cardano.Chain.Common.Compact (CompactAddress, toCompactAddress) -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - encodeListLen, - enforceSize, - fromByronCBOR, - toByronCBOR, - ) -import Cardano.Prelude -import qualified Data.Set as Set -import NoThunks.Class (NoThunks (..)) - --- | Additional configuration for ledger validation. -data UTxOConfiguration = UTxOConfiguration - { tcAssetLockedSrcAddrs :: !(Set CompactAddress) - -- ^ Set of source address which are asset-locked. Transactions which - -- use these addresses as transaction inputs will be deemed invalid. - } - deriving (Eq, Show, Generic, NoThunks) - -instance ToCBOR UTxOConfiguration where - toCBOR = toByronCBOR - -instance FromCBOR UTxOConfiguration where - fromCBOR = fromByronCBOR - -instance EncCBOR UTxOConfiguration where - encCBOR (UTxOConfiguration tcAssetLockedSrcAddrs_) = - encodeListLen 1 - <> encCBOR @(Set CompactAddress) tcAssetLockedSrcAddrs_ - -instance DecCBOR UTxOConfiguration where - decCBOR = do - enforceSize "UTxOConfiguration" 1 - UTxOConfiguration <$> decCBOR @(Set CompactAddress) - -defaultUTxOConfiguration :: UTxOConfiguration -defaultUTxOConfiguration = - UTxOConfiguration - { tcAssetLockedSrcAddrs = Set.empty - } - -mkUTxOConfiguration :: [Address] -> UTxOConfiguration -mkUTxOConfiguration lockedSrcAddrs = - UTxOConfiguration - { tcAssetLockedSrcAddrs = Set.fromList (map toCompactAddress lockedSrcAddrs) - } diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/UTxO/Validation.hs b/eras/byron/ledger/impl/src/Cardano/Chain/UTxO/Validation.hs deleted file mode 100644 index 91c8b769cd4..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/UTxO/Validation.hs +++ /dev/null @@ -1,414 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE TypeApplications #-} - -module Cardano.Chain.UTxO.Validation ( - validateTx, - validateTxAux, - updateUTxO, - updateUTxOTxWitness, - updateUTxOTx, - TxValidationError (..), - Environment (..), - UTxOValidationError (..), -) -where - -import Cardano.Chain.Common ( - Address (..), - Lovelace, - LovelaceError, - NetworkMagic, - TxFeePolicy (..), - addrNetworkMagic, - calculateTxSizeLinear, - checkRedeemAddress, - checkVerKeyAddress, - makeNetworkMagic, - mkKnownLovelace, - subLovelace, - unknownAttributesLength, - ) -import Cardano.Chain.UTxO.Compact (CompactTxOut (..), toCompactTxIn) -import Cardano.Chain.UTxO.Tx (Tx (..), TxIn, TxOut (..)) -import Cardano.Chain.UTxO.TxAux (ATxAux (..), aTaTx, taWitness) -import Cardano.Chain.UTxO.TxWitness ( - TxInWitness (..), - TxSigData (..), - recoverSigData, - ) -import Cardano.Chain.UTxO.UTxO ( - UTxO, - UTxOError, - balance, - isRedeemUTxO, - txOutputUTxO, - ( - TxValidationNetworkMagicMismatch NetworkMagic NetworkMagic - | TxValidationTxTooLarge Natural Natural - | TxValidationUnknownAddressAttributes - | TxValidationUnknownAttributes - deriving (Eq, Show) - -instance ToCBOR TxValidationError where - toCBOR = toByronCBOR - -instance FromCBOR TxValidationError where - fromCBOR = fromByronCBOR - -instance EncCBOR TxValidationError where - encCBOR = \case - TxValidationLovelaceError text loveLaceError -> - encodeListLen 3 - <> encCBOR @Word8 0 - <> encCBOR text - <> encCBOR loveLaceError - TxValidationFeeTooSmall tx lovelace1 lovelace2 -> - encodeListLen 4 - <> encCBOR @Word8 1 - <> encCBOR tx - <> encCBOR lovelace1 - <> encCBOR lovelace2 - TxValidationWitnessWrongSignature txInWitness pmi sigData -> - encodeListLen 4 - <> encCBOR @Word8 2 - <> encCBOR txInWitness - <> encCBOR pmi - <> encCBOR sigData - TxValidationWitnessWrongKey txInWitness addr -> - encodeListLen 3 - <> encCBOR @Word8 3 - <> encCBOR txInWitness - <> encCBOR addr - TxValidationMissingInput txIn -> - encodeListLen 2 - <> encCBOR @Word8 4 - <> encCBOR txIn - TxValidationNetworkMagicMismatch networkMagic1 networkMagic2 -> - encodeListLen 3 - <> encCBOR @Word8 5 - <> encCBOR networkMagic1 - <> encCBOR networkMagic2 - TxValidationTxTooLarge nat1 nat2 -> - encodeListLen 3 - <> encCBOR @Word8 6 - <> encCBOR nat1 - <> encCBOR nat2 - TxValidationUnknownAddressAttributes -> - encodeListLen 1 - <> encCBOR @Word8 7 - TxValidationUnknownAttributes -> - encodeListLen 1 - <> encCBOR @Word8 8 - -instance DecCBOR TxValidationError where - decCBOR = do - len <- decodeListLen - let checkSize :: forall s. Int -> Decoder s () - checkSize size = matchSize "TxValidationError" size len - tag <- decodeWord8 - case tag of - 0 -> checkSize 3 >> TxValidationLovelaceError <$> decCBOR <*> decCBOR - 1 -> checkSize 4 >> TxValidationFeeTooSmall <$> decCBOR <*> decCBOR <*> decCBOR - 2 -> checkSize 4 >> TxValidationWitnessWrongSignature <$> decCBOR <*> decCBOR <*> decCBOR - 3 -> checkSize 3 >> TxValidationWitnessWrongKey <$> decCBOR <*> decCBOR - 4 -> checkSize 2 >> TxValidationMissingInput <$> decCBOR - 5 -> checkSize 3 >> TxValidationNetworkMagicMismatch <$> decCBOR <*> decCBOR - 6 -> checkSize 3 >> TxValidationTxTooLarge <$> decCBOR <*> decCBOR - 7 -> checkSize 1 $> TxValidationUnknownAddressAttributes - 8 -> checkSize 1 $> TxValidationUnknownAttributes - _ -> cborError $ DecoderErrorUnknownTag "TxValidationError" tag - --- | Validate that: --- --- 1. The fee for a transaction is not less than the minimum fee. --- 2. The size of the transaction is below the maximum size. --- 3. Output balance + fee = input balance --- --- The transaction size must be calculated _including the witnesses_. As such --- this cannot be part of 'validateTx'. We actually assume 3 by calculating --- the fee as output balance - input balance. -validateTxAux :: - MonadError TxValidationError m => - Environment -> - UTxO -> - ATxAux ByteString -> - m () -validateTxAux env utxo (ATxAux (Annotated tx _) _ txBytes) = do - -- Check that the size of the transaction is less than the maximum - txSize - <= maxTxSize - `orThrowError` TxValidationTxTooLarge txSize maxTxSize - - -- Calculate the minimum fee from the 'TxFeePolicy' - minFee <- - if isRedeemUTxO inputUTxO - then pure $ mkKnownLovelace @0 - else calculateMinimumFee feePolicy - - -- Calculate the balance of the output 'UTxO' - balanceOut <- - balance (txOutputUTxO tx) - `wrapError` TxValidationLovelaceError "Output Balance" - - -- Calculate the balance of the restricted input 'UTxO' - balanceIn <- - balance inputUTxO - `wrapError` TxValidationLovelaceError "Input Balance" - - -- Calculate the 'fee' as the difference of the balances - fee <- - subLovelace balanceIn balanceOut - `wrapError` TxValidationLovelaceError "Fee" - - -- Check that the fee is greater than the minimum - (minFee <= fee) `orThrowError` TxValidationFeeTooSmall tx minFee fee - where - Environment {protocolParameters} = env - - maxTxSize = ppMaxTxSize protocolParameters - feePolicy = ppTxFeePolicy protocolParameters - - txSize :: Natural - txSize = fromIntegral $ BS.length txBytes - - inputUTxO = S.fromList (NE.toList (txInputs tx)) <| utxo - - calculateMinimumFee :: - MonadError TxValidationError m => TxFeePolicy -> m Lovelace - calculateMinimumFee = \case - TxFeePolicyTxSizeLinear txSizeLinear -> - calculateTxSizeLinear txSizeLinear txSize - `wrapError` TxValidationLovelaceError "Minimum Fee" - --- | Validate that: --- --- 1. All @TxIn@s are in domain of @Utxo@ --- --- These are the conditions of the UTxO inference rule in the spec. -validateTx :: - MonadError TxValidationError m => - Environment -> - UTxO -> - Annotated Tx ByteString -> - m () -validateTx env utxo (Annotated tx _) = do - -- Check that the transaction attributes are less than the max size - unknownAttributesLength (txAttributes tx) - < 128 - `orThrowError` TxValidationUnknownAttributes - - -- Check that outputs have valid NetworkMagic - let nm = makeNetworkMagic protocolMagic - txOutputs tx `forM_` validateTxOutNM nm - - -- Check that every input is in the domain of 'utxo' - txInputs tx `forM_` validateTxIn utxoConfiguration utxo - where - Environment {protocolMagic, utxoConfiguration} = env - --- | Validate that 'TxIn' is in the domain of 'UTxO' -validateTxIn :: - MonadError TxValidationError m => - UTxOConfiguration -> - UTxO -> - TxIn -> - m () -validateTxIn UTxOConfiguration {tcAssetLockedSrcAddrs} utxo txIn - | S.null tcAssetLockedSrcAddrs - , txIn `UTxO.member` utxo = - pure () - | Just txOut <- UTxO.lookupCompact (toCompactTxIn txIn) utxo - , let (CompactTxOut txOutAddr _) = txOut - , txOutAddr `S.notMember` tcAssetLockedSrcAddrs = - pure () - | otherwise = - throwError $ TxValidationMissingInput txIn - --- | Validate the NetworkMagic of a TxOut -validateTxOutNM :: - MonadError TxValidationError m => - NetworkMagic -> - TxOut -> - m () -validateTxOutNM nm txOut = do - -- Make sure that the unknown attributes are less than the max size - unknownAttributesLength (addrAttributes (txOutAddress txOut)) - < 128 - `orThrowError` TxValidationUnknownAddressAttributes - - -- Check that the network magic in the address matches the expected one - (nm == addrNm) `orThrowError` TxValidationNetworkMagicMismatch nm addrNm - where - addrNm = addrNetworkMagic . txOutAddress $ txOut - --- | Verify that a 'TxInWitness' is a valid witness for the supplied 'TxSigData' -validateWitness :: - MonadError TxValidationError m => - Annotated ProtocolMagicId ByteString -> - Annotated TxSigData ByteString -> - Address -> - TxInWitness -> - m () -validateWitness pmi sigData addr witness = case witness of - VKWitness vk sig -> do - verifySignatureDecoded pmi SignTx vk sigData sig - `orThrowError` TxValidationWitnessWrongSignature - witness - (unAnnotated pmi) - (unAnnotated sigData) - checkVerKeyAddress vk addr - `orThrowError` TxValidationWitnessWrongKey - witness - addr - RedeemWitness vk sig -> do - verifyRedeemSigDecoded pmi SignRedeemTx vk sigData sig - `orThrowError` TxValidationWitnessWrongSignature - witness - (unAnnotated pmi) - (unAnnotated sigData) - checkRedeemAddress vk addr - `orThrowError` TxValidationWitnessWrongKey witness addr - -data Environment = Environment - { protocolMagic :: !(AProtocolMagic ByteString) - , protocolParameters :: !ProtocolParameters - , utxoConfiguration :: !UTxOConfiguration - } - deriving (Eq, Show) - -data UTxOValidationError - = UTxOValidationTxValidationError TxValidationError - | UTxOValidationUTxOError UTxOError - deriving (Eq, Show) - -instance ToCBOR UTxOValidationError where - toCBOR = toByronCBOR - -instance FromCBOR UTxOValidationError where - fromCBOR = fromByronCBOR - -instance EncCBOR UTxOValidationError where - encCBOR = \case - UTxOValidationTxValidationError txValidationError -> - encodeListLen 2 <> encCBOR @Word8 0 <> encCBOR txValidationError - UTxOValidationUTxOError uTxOError -> - encodeListLen 2 <> encCBOR @Word8 1 <> encCBOR uTxOError - -instance DecCBOR UTxOValidationError where - decCBOR = do - enforceSize "UTxOValidationError" 2 - decodeWord8 >>= \case - 0 -> UTxOValidationTxValidationError <$> decCBOR - 1 -> UTxOValidationUTxOError <$> decCBOR - tag -> cborError $ DecoderErrorUnknownTag "UTxOValidationError" tag - --- | Validate a transaction and use it to update the 'UTxO' -updateUTxOTx :: - (MonadError UTxOValidationError m, MonadReader ValidationMode m) => - Environment -> - UTxO -> - Annotated Tx ByteString -> - m UTxO -updateUTxOTx env utxo aTx@(Annotated tx _) = do - unlessNoTxValidation (validateTx env utxo aTx) - `wrapErrorWithValidationMode` UTxOValidationTxValidationError - - UTxO.union (S.fromList (NE.toList (txInputs tx)) - Environment -> - UTxO -> - ATxAux ByteString -> - m UTxO -updateUTxOTxWitness env utxo ta = do - whenTxValidation $ do - -- Get the signing addresses for each transaction input from the 'UTxO' - addresses <- - mapM (`UTxO.lookupAddress` utxo) (NE.toList $ txInputs tx) - `wrapError` UTxOValidationUTxOError - - -- Validate witnesses and their signing addresses - mapM_ - (uncurry $ validateWitness pmi sigData) - (zip addresses (V.toList witness)) - `wrapError` UTxOValidationTxValidationError - - -- Validate the tx including witnesses - validateTxAux env utxo ta - `wrapError` UTxOValidationTxValidationError - - -- Update 'UTxO' ignoring witnesses - updateUTxOTx env utxo aTx - where - Environment {protocolMagic} = env - pmi = getAProtocolMagicId protocolMagic - - aTx@(Annotated tx _) = aTaTx ta - witness = taWitness ta - sigData = recoverSigData aTx - --- | Update UTxO with a list of transactions -updateUTxO :: - (MonadError UTxOValidationError m, MonadReader ValidationMode m) => - Environment -> - UTxO -> - [ATxAux ByteString] -> - m UTxO -updateUTxO env as = foldM (updateUTxOTxWitness env) as diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/UTxO/ValidationMode.hs b/eras/byron/ledger/impl/src/Cardano/Chain/UTxO/ValidationMode.hs deleted file mode 100644 index 96949d7239f..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/UTxO/ValidationMode.hs +++ /dev/null @@ -1,24 +0,0 @@ -module Cardano.Chain.UTxO.ValidationMode ( - TxValidationMode (..), -) -where - -import Cardano.Prelude - --------------------------------------------------------------------------------- --- TxValidationMode --------------------------------------------------------------------------------- - --- | Indicates what sort of transaction validation should be performed. -data TxValidationMode - = -- | Perform all transaction validations. - TxValidation - | -- | Because we've already validated this transaction against some ledger - -- state, we know that cryptographic validation has passed. However, we - -- should still perform all of the other non-cryptographic checks since - -- we're validating against a potentially dfferent ledger state. - TxValidationNoCrypto - | -- | No validations should be performed as we have already validated this - -- transaction against this very same ledger state. - NoTxValidation - deriving (Eq, Show) diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Update.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Update.hs deleted file mode 100644 index 101db4a1301..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Update.hs +++ /dev/null @@ -1,17 +0,0 @@ -module Cardano.Chain.Update ( - module X, -) -where - -import Cardano.Chain.Update.ApplicationName as X -import Cardano.Chain.Update.InstallerHash as X -import Cardano.Chain.Update.Payload as X -import Cardano.Chain.Update.Proof as X -import Cardano.Chain.Update.Proposal as X -import Cardano.Chain.Update.ProtocolParameters as X -import Cardano.Chain.Update.ProtocolParametersUpdate as X -import Cardano.Chain.Update.ProtocolVersion as X -import Cardano.Chain.Update.SoftforkRule as X -import Cardano.Chain.Update.SoftwareVersion as X -import Cardano.Chain.Update.SystemTag as X -import Cardano.Chain.Update.Vote as X diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Update/ApplicationName.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Update/ApplicationName.hs deleted file mode 100644 index 7547ad921e5..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Update/ApplicationName.hs +++ /dev/null @@ -1,123 +0,0 @@ -{-# LANGUAGE DeriveDataTypeable #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} - -module Cardano.Chain.Update.ApplicationName ( - ApplicationName (..), - applicationNameMaxLength, - ApplicationNameError (..), - checkApplicationName, -) -where - -import Cardano.Ledger.Binary ( - Case (..), - DecCBOR (..), - Decoder, - DecoderError (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - cborError, - decodeListLen, - decodeWord8, - encodeListLen, - fromByronCBOR, - matchSize, - szCases, - toByronCBOR, - ) -import Cardano.Prelude hiding (cborError) -import Data.Aeson (ToJSON) -import Data.Data (Data) -import qualified Data.Text as T -import Formatting (bprint, int, stext) -import qualified Formatting.Buildable as B -import NoThunks.Class (NoThunks (..)) - -newtype ApplicationName = ApplicationName - { unApplicationName :: Text - } - deriving (Eq, Ord, Show, Generic, B.Buildable, NFData, NoThunks) - -instance ToCBOR ApplicationName where - toCBOR = toByronCBOR - -instance FromCBOR ApplicationName where - fromCBOR = fromByronCBOR - -instance EncCBOR ApplicationName where - encCBOR appName = encCBOR (unApplicationName appName) - encodedSizeExpr _ _ = - 1 - + szCases - [ Case "minBound" 0 - , Case "maxBound" (fromInteger applicationNameMaxLength) - ] - -instance DecCBOR ApplicationName where - decCBOR = ApplicationName <$> decCBOR - -data ApplicationNameError - = ApplicationNameTooLong Text - | ApplicationNameNotAscii Text - deriving (Data, Eq, Show) - --- Used for debugging purposes only -instance ToJSON ApplicationName - -instance ToCBOR ApplicationNameError where - toCBOR = toByronCBOR - -instance FromCBOR ApplicationNameError where - fromCBOR = fromByronCBOR - -instance EncCBOR ApplicationNameError where - encCBOR err = case err of - ApplicationNameTooLong appName -> - encodeListLen 2 - <> encCBOR (0 :: Word8) - <> encCBOR appName - ApplicationNameNotAscii appName -> - encodeListLen 2 - <> encCBOR (1 :: Word8) - <> encCBOR appName - -instance DecCBOR ApplicationNameError where - decCBOR = do - len <- decodeListLen - let checkSize :: Int -> Decoder s () - checkSize size = matchSize "ApplicationNameError" size len - tag <- decodeWord8 - case tag of - 0 -> checkSize 2 >> ApplicationNameTooLong <$> decCBOR - 1 -> checkSize 2 >> ApplicationNameNotAscii <$> decCBOR - _ -> cborError $ DecoderErrorUnknownTag "ApplicationNameError" tag - -instance B.Buildable ApplicationNameError where - build = \case - ApplicationNameTooLong name -> - bprint - ("ApplicationName, " . stext . ", exceeds limit of " . int) - name - (applicationNameMaxLength :: Int) - ApplicationNameNotAscii name -> - bprint - ("ApplicationName, " . stext . ", contains non-ascii characters") - name - --- | Smart constructor of 'ApplicationName' -checkApplicationName :: - MonadError ApplicationNameError m => ApplicationName -> m () -checkApplicationName (ApplicationName appName) - | T.length appName > applicationNameMaxLength = - throwError - $ ApplicationNameTooLong appName - | T.any (not . isAscii) appName = throwError $ ApplicationNameNotAscii appName - | otherwise = pure () - -applicationNameMaxLength :: Integral i => i -applicationNameMaxLength = 12 diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Update/InstallerHash.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Update/InstallerHash.hs deleted file mode 100644 index cd1e5e1ff41..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Update/InstallerHash.hs +++ /dev/null @@ -1,66 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE OverloadedStrings #-} - -module Cardano.Chain.Update.InstallerHash ( - InstallerHash (..), -) -where - -import Cardano.Crypto (Hash, hashRaw) -import Cardano.Crypto.Raw (Raw) -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - dropBytes, - encodeListLen, - enforceSize, - fromByronCBOR, - toByronCBOR, - ) -import Cardano.Prelude -import Data.Aeson (ToJSON) -import Formatting (bprint, build) -import qualified Formatting.Buildable as B -import NoThunks.Class (NoThunks (..)) - --- | The hash of the installer of the new application -newtype InstallerHash = InstallerHash - { unInstallerHash :: Hash Raw - } - deriving (Eq, Show, Generic) - deriving anyclass (NFData, NoThunks) - -instance B.Buildable InstallerHash where - build (InstallerHash h) = bprint ("{ installer hash: " . build . " }") h - -instance ToCBOR InstallerHash where - toCBOR = toByronCBOR - -instance FromCBOR InstallerHash where - fromCBOR = fromByronCBOR - --- Used for debugging purposes only -instance ToJSON InstallerHash - -instance EncCBOR InstallerHash where - encCBOR (InstallerHash h) = - encodeListLen 4 - <> encCBOR emptyHash - <> encCBOR h - <> encCBOR emptyHash - <> encCBOR emptyHash - where - emptyHash = hashRaw "\NUL" - -instance DecCBOR InstallerHash where - decCBOR = do - enforceSize "InstallerHash" 4 - dropBytes - h <- decCBOR - dropBytes - dropBytes - pure $ InstallerHash h diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Update/Payload.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Update/Payload.hs deleted file mode 100644 index 7da2637f644..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Update/Payload.hs +++ /dev/null @@ -1,99 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveFunctor #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Cardano.Chain.Update.Payload ( - APayload (..), - Payload, - payload, -) -where - -import Cardano.Chain.Update.Proposal ( - AProposal, - Proposal, - formatMaybeProposal, - ) -import Cardano.Chain.Update.Vote ( - AVote, - Vote, - formatVoteShort, - ) -import Cardano.Ledger.Binary ( - Annotated (..), - ByteSpan, - DecCBOR (..), - Decoded (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - annotatedDecoder, - encodeListLen, - enforceSize, - fromByronCBOR, - toByronCBOR, - ) -import Cardano.Prelude -import Data.Aeson (ToJSON) -import Formatting (bprint) -import qualified Formatting.Buildable as B - --- | Update System payload -data APayload a = APayload - { payloadProposal :: !(Maybe (AProposal a)) - , payloadVotes :: ![AVote a] - , payloadAnnotation :: a - } - deriving (Eq, Show, Generic, Functor) - deriving anyclass (NFData) - -type Payload = APayload () - -payload :: Maybe Proposal -> [Vote] -> Payload -payload p v = APayload p v () - -instance Decoded (APayload ByteString) where - type BaseType (APayload ByteString) = Payload - recoverBytes = payloadAnnotation - -instance B.Buildable Payload where - build p - | null (payloadVotes p) = - formatMaybeProposal (payloadProposal p) <> ", no votes" - | otherwise = - formatMaybeProposal (payloadProposal p) - <> bprint - ("\n votes: " . listJson) - (map formatVoteShort (payloadVotes p)) - --- Used for debugging purposes only -instance ToJSON a => ToJSON (APayload a) - -instance ToCBOR Payload where - toCBOR = toByronCBOR - -instance FromCBOR Payload where - fromCBOR = fromByronCBOR - -instance FromCBOR (APayload ByteSpan) where - fromCBOR = fromByronCBOR - -instance EncCBOR Payload where - encCBOR p = - encodeListLen 2 <> encCBOR (payloadProposal p) <> encCBOR (payloadVotes p) - -instance DecCBOR Payload where - decCBOR = void <$> decCBOR @(APayload ByteSpan) - -instance DecCBOR (APayload ByteSpan) where - decCBOR = do - Annotated (proposal, votes) byteSpan <- annotatedDecoder $ do - enforceSize "Update.Payload" 2 - (,) <$> decCBOR <*> decCBOR - pure $ APayload proposal votes byteSpan diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Update/Proof.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Update/Proof.hs deleted file mode 100644 index 6205b64d709..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Update/Proof.hs +++ /dev/null @@ -1,19 +0,0 @@ -module Cardano.Chain.Update.Proof ( - Proof, - mkProof, - recoverProof, -) -where - -import Cardano.Chain.Update.Payload (APayload (..), Payload) -import Cardano.Crypto (Hash, hashDecoded, serializeCborHash) -import Cardano.Prelude - --- | Proof that body of update message contains 'Update.Payload' -type Proof = Hash Payload - -mkProof :: Payload -> Proof -mkProof = serializeCborHash - -recoverProof :: APayload ByteString -> Proof -recoverProof = hashDecoded diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Update/Proposal.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Update/Proposal.hs deleted file mode 100644 index f1093d57271..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Update/Proposal.hs +++ /dev/null @@ -1,265 +0,0 @@ -{-# LANGUAGE CPP #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveFunctor #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE DuplicateRecordFields #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -#if __GLASGOW_HASKELL__ >= 900 --- this is needed for 9.2: recoveryBytes = annotation -{-# OPTIONS_GHC -Wno-ambiguous-fields #-} -#endif - -module Cardano.Chain.Update.Proposal ( - -- * Proposal - AProposal (..), - Proposal, - UpId, - - -- * Proposal Constructors - unsafeProposal, - signProposal, - signatureForProposal, - - -- * Proposal Accessors - body, - recoverUpId, - - -- * Proposal Formatting - formatMaybeProposal, - - -- * ProposalBody - ProposalBody (..), - - -- * ProposalBody Binary Serialization - recoverProposalSignedBytes, -) -where - -import Cardano.Chain.Common.Attributes (dropEmptyAttributes) -import Cardano.Chain.Update.InstallerHash (InstallerHash) -import Cardano.Chain.Update.ProtocolParametersUpdate (ProtocolParametersUpdate) -import Cardano.Chain.Update.ProtocolVersion (ProtocolVersion) -import Cardano.Chain.Update.SoftwareVersion (SoftwareVersion) -import Cardano.Chain.Update.SystemTag (SystemTag) -import Cardano.Crypto ( - Hash, - ProtocolMagicId, - SafeSigner, - SignTag (SignUSProposal), - Signature, - VerificationKey, - hashDecoded, - safeSign, - safeToVerification, - serializeCborHash, - ) -import Cardano.Ledger.Binary ( - ByteSpan, - DecCBOR (..), - Decoded (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - ) -import qualified Cardano.Ledger.Binary as Binary -import Cardano.Prelude -import Data.Aeson (ToJSON) -import qualified Data.Map.Strict as M -import Data.Text.Lazy.Builder (Builder) -import Formatting (bprint, build) -import qualified Formatting.Buildable as B - --------------------------------------------------------------------------------- --- Proposal --------------------------------------------------------------------------------- - --- | ID of software update proposal -type UpId = Hash Proposal - --- | Proposal for software update -data AProposal a = AProposal - { aBody :: !(Binary.Annotated ProposalBody a) - , issuer :: !VerificationKey - -- ^ Who proposed this UP. - , signature :: !(Signature ProposalBody) - , annotation :: !a - } - deriving (Eq, Show, Generic, Functor) - deriving anyclass (NFData) - -type Proposal = AProposal () - --- Used for debugging purposes only -instance ToJSON a => ToJSON (AProposal a) - --------------------------------------------------------------------------------- --- Proposal Constructors --------------------------------------------------------------------------------- - --- | Create an update 'Proposal', signing it with the provided safe signer. -signProposal :: ProtocolMagicId -> ProposalBody -> SafeSigner -> Proposal -signProposal protocolMagicId proposalBody safeSigner = - unsafeProposal - proposalBody - (safeToVerification safeSigner) - (signatureForProposal protocolMagicId proposalBody safeSigner) - -signatureForProposal :: - ProtocolMagicId -> - ProposalBody -> - SafeSigner -> - Signature ProposalBody -signatureForProposal protocolMagicId proposalBody safeSigner = - safeSign protocolMagicId SignUSProposal safeSigner proposalBody - --- | Create an update 'Proposal' using the provided signature. -unsafeProposal :: ProposalBody -> VerificationKey -> Signature ProposalBody -> Proposal -unsafeProposal b k s = AProposal (Binary.Annotated b ()) k s () - --------------------------------------------------------------------------------- --- Proposal Accessors --------------------------------------------------------------------------------- - -body :: AProposal a -> ProposalBody -body = Binary.unAnnotated . aBody - -recoverUpId :: AProposal ByteString -> UpId -recoverUpId = hashDecoded - --------------------------------------------------------------------------------- --- Proposal Binary Serialization --------------------------------------------------------------------------------- - -instance ToCBOR Proposal where - toCBOR = Binary.toByronCBOR - -instance FromCBOR Proposal where - fromCBOR = Binary.fromByronCBOR - -instance EncCBOR Proposal where - encCBOR proposal = - Binary.encodeListLen 7 - <> encCBOR (protocolVersion body') - <> encCBOR (protocolParametersUpdate body') - <> encCBOR (softwareVersion body') - <> encCBOR (metadata body') - <> encCBOR (mempty :: Map Word8 LByteString) - <> encCBOR (issuer proposal) - <> encCBOR (signature proposal) - where - body' = body proposal - -instance DecCBOR Proposal where - decCBOR = void <$> decCBOR @(AProposal ByteSpan) - -instance FromCBOR (AProposal ByteSpan) where - fromCBOR = Binary.fromByronCBOR - -instance DecCBOR (AProposal ByteSpan) where - decCBOR = do - Binary.Annotated (pb, vk, sig) byteSpan <- Binary.annotatedDecoder $ do - Binary.enforceSize "Proposal" 7 - pb <- - Binary.annotatedDecoder - ( ProposalBody - <$> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <* dropEmptyAttributes - ) - vk <- decCBOR - sig <- decCBOR - pure (pb, vk, sig) - pure $ AProposal pb vk sig byteSpan - -instance Decoded (AProposal ByteString) where - type BaseType (AProposal ByteString) = Proposal - recoverBytes = annotation - --------------------------------------------------------------------------------- --- Proposal Formatting --------------------------------------------------------------------------------- - -instance B.Buildable (AProposal ()) where - build proposal = - bprint - ( build - . " { block v" - . build - . ", UpId: " - . build - . ", " - . build - . ", tags: " - . listJson - . " }" - ) - (softwareVersion body') - (protocolVersion body') - (serializeCborHash proposal) - (protocolParametersUpdate body') - (M.keys $ metadata body') - where - body' = body proposal - -formatMaybeProposal :: Maybe Proposal -> Builder -formatMaybeProposal = maybe "no proposal" B.build - --------------------------------------------------------------------------------- --- ProposalBody --------------------------------------------------------------------------------- - -data ProposalBody = ProposalBody - { protocolVersion :: !ProtocolVersion - , protocolParametersUpdate :: !ProtocolParametersUpdate - , softwareVersion :: !SoftwareVersion - , metadata :: !(Map SystemTag InstallerHash) - -- ^ InstallerHash for each system which this update affects - } - deriving (Eq, Show, Generic) - deriving anyclass (NFData) - --- Used for debugging purposes only -instance ToJSON ProposalBody - --------------------------------------------------------------------------------- --- ProposalBody Binary Serialization --------------------------------------------------------------------------------- - -instance ToCBOR ProposalBody where - toCBOR = Binary.toByronCBOR - -instance FromCBOR ProposalBody where - fromCBOR = Binary.fromByronCBOR - -instance EncCBOR ProposalBody where - encCBOR pb = - Binary.encodeListLen 5 - <> encCBOR (protocolVersion pb) - <> encCBOR (protocolParametersUpdate pb) - <> encCBOR (softwareVersion pb) - <> encCBOR (metadata pb) - -- Encode empty Attributes - <> encCBOR (mempty :: Map Word8 LByteString) - -instance DecCBOR ProposalBody where - decCBOR = do - Binary.enforceSize "ProposalBody" 5 - ProposalBody - <$> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <* dropEmptyAttributes - --- | Prepend byte corresponding to `encodeListLen 5`, which was used during --- signing -recoverProposalSignedBytes :: - Binary.Annotated ProposalBody ByteString -> Binary.Annotated ProposalBody ByteString -recoverProposalSignedBytes = fmap ("\133" <>) diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Update/ProtocolParameters.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Update/ProtocolParameters.hs deleted file mode 100644 index 1acb0b62e4f..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Update/ProtocolParameters.hs +++ /dev/null @@ -1,222 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE UndecidableInstances #-} - -module Cardano.Chain.Update.ProtocolParameters ( - ProtocolParameters (..), - upAdptThd, - isBootstrapEraPP, -) -where - -import Cardano.Chain.Common ( - LovelacePortion, - TxFeePolicy, - lovelacePortionToRational, - ) -import Cardano.Chain.Slotting (EpochNumber, SlotNumber (..), isBootstrapEra) -import Cardano.Chain.Update.SoftforkRule -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - encodeListLen, - enforceSize, - fromByronCBOR, - toByronCBOR, - ) -import Cardano.Prelude -import Formatting (Format, bprint, build, bytes, shortest) -import qualified Formatting.Buildable as B -import NoThunks.Class (NoThunks (..)) -import Text.JSON.Canonical (FromJSON (..), ToJSON (..), fromJSField, mkObject) - --- | Data which is associated with 'BlockVersion' -data ProtocolParameters = ProtocolParameters - { ppScriptVersion :: !Word16 - , ppSlotDuration :: !Natural - -- ^ Milliseconds. - , ppMaxBlockSize :: !Natural - , ppMaxHeaderSize :: !Natural - , ppMaxTxSize :: !Natural - , ppMaxProposalSize :: !Natural - , ppMpcThd :: !LovelacePortion - , ppHeavyDelThd :: !LovelacePortion - , ppUpdateVoteThd :: !LovelacePortion - , ppUpdateProposalThd :: !LovelacePortion - , ppUpdateProposalTTL :: !SlotNumber - -- ^ Time to live for a protocol update proposal. This used to be the number - -- of slots after which the system made a decision regarding an update - -- proposal confirmation, when a majority of votes was not reached in the - -- given number of slots. If there were more positive than negative votes the - -- proposal became confirmed, otherwise it was rejected. Since in the - -- Byron-Shelley bridge we do not have negative votes, and we aim at - -- simplifying the update mechanism, 'ppUpdateProposalTTL' is re-interpreted as - -- the number of slots a proposal has to gather a majority of votes. If a - -- majority of votes has not been reached before this period, then the - -- proposal is rejected. - -- - -- -- TODO: it seems this should be a slot count. - , ppSoftforkRule :: !SoftforkRule - , ppTxFeePolicy :: !TxFeePolicy - , ppUnlockStakeEpoch :: !EpochNumber - } - deriving (Show, Eq, Ord, Generic) - deriving anyclass (NFData, NoThunks) - -instance B.Buildable ProtocolParameters where - build pp = - bprint - ( "{ script version: " - . build - . ", slot duration: " - . bytes' - . ", block size limit: " - . bytes' - . ", header size limit: " - . bytes' - . ", tx size limit: " - . bytes' - . ", proposal size limit: " - . bytes' - . ", mpc threshold: " - . build - . ", heavyweight delegation threshold: " - . build - . ", update vote threshold: " - . build - . ", update proposal threshold: " - . build - . ", update implicit period: " - . build - . " slots" - . ", softfork rule: " - . build - . ", tx fee policy: " - . build - . ", unlock stake epoch: " - . build - . " }" - ) - (ppScriptVersion pp) - (ppSlotDuration pp) - (ppMaxBlockSize pp) - (ppMaxHeaderSize pp) - (ppMaxTxSize pp) - (ppMaxProposalSize pp) - (ppMpcThd pp) - (ppHeavyDelThd pp) - (ppUpdateVoteThd pp) - (ppUpdateProposalThd pp) - (ppUpdateProposalTTL pp) - (ppSoftforkRule pp) - (ppTxFeePolicy pp) - (ppUnlockStakeEpoch pp) - where - bytes' :: Format r (Natural -> r) - bytes' = bytes (shortest @Double) - -instance Monad m => ToJSON m ProtocolParameters where - toJSON pp = - mkObject - [ ("scriptVersion", toJSON $ ppScriptVersion pp) - , ("slotDuration", toJSON $ ppSlotDuration pp) - , ("maxBlockSize", toJSON $ ppMaxBlockSize pp) - , ("maxHeaderSize", toJSON $ ppMaxHeaderSize pp) - , ("maxTxSize", toJSON $ ppMaxTxSize pp) - , ("maxProposalSize", toJSON $ ppMaxProposalSize pp) - , ("mpcThd", toJSON $ ppMpcThd pp) - , ("heavyDelThd", toJSON $ ppHeavyDelThd pp) - , ("updateVoteThd", toJSON $ ppUpdateVoteThd pp) - , ("updateProposalThd", toJSON $ ppUpdateProposalThd pp) - , ("updateImplicit", toJSON $ ppUpdateProposalTTL pp) - , ("softforkRule", toJSON $ ppSoftforkRule pp) - , ("txFeePolicy", toJSON $ ppTxFeePolicy pp) - , ("unlockStakeEpoch", toJSON $ ppUnlockStakeEpoch pp) - ] - -instance MonadError SchemaError m => FromJSON m ProtocolParameters where - fromJSON obj = - ProtocolParameters - <$> fromJSField obj "scriptVersion" - <*> fromJSField obj "slotDuration" - <*> fromJSField obj "maxBlockSize" - <*> fromJSField obj "maxHeaderSize" - <*> fromJSField obj "maxTxSize" - <*> fromJSField obj "maxProposalSize" - <*> fromJSField obj "mpcThd" - <*> fromJSField obj "heavyDelThd" - <*> fromJSField obj "updateVoteThd" - <*> fromJSField obj "updateProposalThd" - <*> fromJSField obj "updateImplicit" - <*> fromJSField obj "softforkRule" - <*> fromJSField obj "txFeePolicy" - <*> fromJSField obj "unlockStakeEpoch" - -instance ToCBOR ProtocolParameters where - toCBOR = toByronCBOR - -instance FromCBOR ProtocolParameters where - fromCBOR = fromByronCBOR - -instance EncCBOR ProtocolParameters where - encCBOR pp = - encodeListLen 14 - <> encCBOR (ppScriptVersion pp) - <> encCBOR (ppSlotDuration pp) - <> encCBOR (ppMaxBlockSize pp) - <> encCBOR (ppMaxHeaderSize pp) - <> encCBOR (ppMaxTxSize pp) - <> encCBOR (ppMaxProposalSize pp) - <> encCBOR (ppMpcThd pp) - <> encCBOR (ppHeavyDelThd pp) - <> encCBOR (ppUpdateVoteThd pp) - <> encCBOR (ppUpdateProposalThd pp) - <> encCBOR (ppUpdateProposalTTL pp) - <> encCBOR (ppSoftforkRule pp) - <> encCBOR (ppTxFeePolicy pp) - <> encCBOR (ppUnlockStakeEpoch pp) - -instance DecCBOR ProtocolParameters where - decCBOR = do - enforceSize "ProtocolParameters" 14 - ProtocolParameters - <$> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - --- | Version of 'isBootstrapEra' which takes 'ProtocolParameters' instead of --- unlock stake epoch -isBootstrapEraPP :: ProtocolParameters -> EpochNumber -> Bool -isBootstrapEraPP adoptedPP = isBootstrapEra (ppUnlockStakeEpoch adoptedPP) - --- | In Byron we do not have a @upAdptThd@ protocol parameter, so we have to --- use the existing ones. --- --- @lovelacePortionToRational . srMinThd . ppSoftforkRule@ will give us the --- ratio (in the interval @[0, 1]@) of the total stake that has to endorse a --- protocol version to become adopted. In genesis configuration, this ratio --- will evaluate to @0.6@, so if we have 7 genesis keys, @upAdptThd = 4@. -upAdptThd :: Word8 -> ProtocolParameters -> Int -upAdptThd numGenKeys pps = - floor $ stakeRatio * toRational numGenKeys - where - stakeRatio = lovelacePortionToRational . srMinThd . ppSoftforkRule $ pps diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Update/ProtocolParametersUpdate.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Update/ProtocolParametersUpdate.hs deleted file mode 100644 index bf7c0fd023b..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Update/ProtocolParametersUpdate.hs +++ /dev/null @@ -1,204 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} - -module Cardano.Chain.Update.ProtocolParametersUpdate ( - ProtocolParametersUpdate (..), - isEmpty, - apply, -) -where - -import Cardano.Chain.Common (LovelacePortion, TxFeePolicy) -import Cardano.Chain.Slotting (EpochNumber, SlotNumber (..)) -import Cardano.Chain.Update.ProtocolParameters (ProtocolParameters (..)) -import Cardano.Chain.Update.SoftforkRule (SoftforkRule) -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - encodeListLen, - enforceSize, - fromByronCBOR, - toByronCBOR, - ) -import Cardano.Prelude hiding (empty) -import Data.Aeson (ToJSON) -import Data.Text.Lazy.Builder (Builder) -import Formatting (Format, bprint, build, bytes, later, shortest) -import qualified Formatting.Buildable as B - --- | Data which represents modifications of block (aka protocol) version -data ProtocolParametersUpdate = ProtocolParametersUpdate - { ppuScriptVersion :: !(Maybe Word16) - , ppuSlotDuration :: !(Maybe Natural) - , ppuMaxBlockSize :: !(Maybe Natural) - , ppuMaxHeaderSize :: !(Maybe Natural) - , ppuMaxTxSize :: !(Maybe Natural) - , ppuMaxProposalSize :: !(Maybe Natural) - , ppuMpcThd :: !(Maybe LovelacePortion) - , ppuHeavyDelThd :: !(Maybe LovelacePortion) - , ppuUpdateVoteThd :: !(Maybe LovelacePortion) - , ppuUpdateProposalThd :: !(Maybe LovelacePortion) - , ppuUpdateProposalTTL :: !(Maybe SlotNumber) - , ppuSoftforkRule :: !(Maybe SoftforkRule) - , ppuTxFeePolicy :: !(Maybe TxFeePolicy) - , ppuUnlockStakeEpoch :: !(Maybe EpochNumber) - } - deriving (Show, Eq, Ord, Generic) - deriving anyclass (NFData) - -instance B.Buildable ProtocolParametersUpdate where - build ppu = - bprint - ( "{ script version: " - . bmodifier build - . ", slot duration: " - . bmodifier bytes' - . ", block size limit: " - . bmodifier bytes' - . ", header size limit: " - . bmodifier bytes' - . ", tx size limit: " - . bmodifier bytes' - . ", proposal size limit: " - . bmodifier bytes' - . ", mpc threshold: " - . bmodifier build - . ", heavyweight delegation threshold: " - . bmodifier build - . ", update vote threshold: " - . bmodifier build - . ", update proposal threshold: " - . bmodifier build - . ", update implicit period (slots): " - . bmodifier build - . ", softfork rule: " - . bmodifier build - . ", tx fee policy: " - . bmodifier build - . ", unlock stake epoch: " - . bmodifier build - . " }" - ) - (ppuScriptVersion ppu) - (ppuSlotDuration ppu) - (ppuMaxBlockSize ppu) - (ppuMaxHeaderSize ppu) - (ppuMaxTxSize ppu) - (ppuMaxProposalSize ppu) - (ppuMpcThd ppu) - (ppuHeavyDelThd ppu) - (ppuUpdateVoteThd ppu) - (ppuUpdateProposalThd ppu) - (ppuUpdateProposalTTL ppu) - (ppuSoftforkRule ppu) - (ppuTxFeePolicy ppu) - (ppuUnlockStakeEpoch ppu) - where - bmodifier :: Format Builder (a -> Builder) -> Format r (Maybe a -> r) - bmodifier b = later $ maybe "no change" (bprint b) - - bytes' :: Format r (Natural -> r) - bytes' = bytes (shortest @Double) - --- Used for debugging purposes only -instance ToJSON ProtocolParametersUpdate - -instance ToCBOR ProtocolParametersUpdate where - toCBOR = toByronCBOR - -instance FromCBOR ProtocolParametersUpdate where - fromCBOR = fromByronCBOR - -instance EncCBOR ProtocolParametersUpdate where - encCBOR ppu = - encodeListLen 14 - <> encCBOR (ppuScriptVersion ppu) - <> encCBOR (ppuSlotDuration ppu) - <> encCBOR (ppuMaxBlockSize ppu) - <> encCBOR (ppuMaxHeaderSize ppu) - <> encCBOR (ppuMaxTxSize ppu) - <> encCBOR (ppuMaxProposalSize ppu) - <> encCBOR (ppuMpcThd ppu) - <> encCBOR (ppuHeavyDelThd ppu) - <> encCBOR (ppuUpdateVoteThd ppu) - <> encCBOR (ppuUpdateProposalThd ppu) - <> encCBOR (ppuUpdateProposalTTL ppu) - <> encCBOR (ppuSoftforkRule ppu) - <> encCBOR (ppuTxFeePolicy ppu) - <> encCBOR (ppuUnlockStakeEpoch ppu) - -instance DecCBOR ProtocolParametersUpdate where - decCBOR = do - enforceSize "ProtocolParametersUpdate" 14 - ProtocolParametersUpdate - <$> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - -empty :: ProtocolParametersUpdate -empty = - ProtocolParametersUpdate - { ppuScriptVersion = Nothing - , ppuSlotDuration = Nothing - , ppuMaxBlockSize = Nothing - , ppuMaxHeaderSize = Nothing - , ppuMaxTxSize = Nothing - , ppuMaxProposalSize = Nothing - , ppuMpcThd = Nothing - , ppuHeavyDelThd = Nothing - , ppuUpdateVoteThd = Nothing - , ppuUpdateProposalThd = Nothing - , ppuUpdateProposalTTL = Nothing - , ppuSoftforkRule = Nothing - , ppuTxFeePolicy = Nothing - , ppuUnlockStakeEpoch = Nothing - } - -isEmpty :: ProtocolParametersUpdate -> Bool -isEmpty = (== empty) - --- | Apply 'ProtocolParametersUpdate' to 'ProtocolParameters' -apply :: ProtocolParametersUpdate -> ProtocolParameters -> ProtocolParameters -apply ppu pp = - ProtocolParameters - { ppScriptVersion = fromMaybe (ppScriptVersion pp) (ppuScriptVersion ppu) - , ppSlotDuration = fromMaybe (ppSlotDuration pp) (ppuSlotDuration ppu) - , ppMaxBlockSize = fromMaybe (ppMaxBlockSize pp) (ppuMaxBlockSize ppu) - , ppMaxHeaderSize = fromMaybe (ppMaxHeaderSize pp) (ppuMaxHeaderSize ppu) - , ppMaxTxSize = fromMaybe (ppMaxTxSize pp) (ppuMaxTxSize ppu) - , ppMaxProposalSize = - fromMaybe - (ppMaxProposalSize pp) - (ppuMaxProposalSize ppu) - , ppMpcThd = fromMaybe (ppMpcThd pp) (ppuMpcThd ppu) - , ppHeavyDelThd = fromMaybe (ppHeavyDelThd pp) (ppuHeavyDelThd ppu) - , ppUpdateVoteThd = fromMaybe (ppUpdateVoteThd pp) (ppuUpdateVoteThd ppu) - , ppUpdateProposalThd = - fromMaybe - (ppUpdateProposalThd pp) - (ppuUpdateProposalThd ppu) - , ppUpdateProposalTTL = fromMaybe (ppUpdateProposalTTL pp) (ppuUpdateProposalTTL ppu) - , ppSoftforkRule = fromMaybe (ppSoftforkRule pp) (ppuSoftforkRule ppu) - , ppTxFeePolicy = fromMaybe (ppTxFeePolicy pp) (ppuTxFeePolicy ppu) - , ppUnlockStakeEpoch = - fromMaybe - (ppUnlockStakeEpoch pp) - (ppuUnlockStakeEpoch ppu) - } diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Update/ProtocolVersion.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Update/ProtocolVersion.hs deleted file mode 100644 index 4401c7c09a3..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Update/ProtocolVersion.hs +++ /dev/null @@ -1,69 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE OverloadedStrings #-} - -module Cardano.Chain.Update.ProtocolVersion ( - ProtocolVersion (..), -) -where - -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - encodeListLen, - enforceSize, - fromByronCBOR, - toByronCBOR, - ) -import Cardano.Prelude -import Data.Aeson (ToJSON) -import Formatting (bprint, shown) -import Formatting.Buildable (Buildable (..)) -import NoThunks.Class (NoThunks (..)) -import qualified Prelude - --- | Communication protocol version -data ProtocolVersion = ProtocolVersion - { pvMajor :: !Word16 - , pvMinor :: !Word16 - , pvAlt :: !Word8 - } - deriving (Eq, Generic, Ord) - deriving anyclass (NFData, NoThunks) - -instance Show ProtocolVersion where - show pv = - intercalate "." [show (pvMajor pv), show (pvMinor pv), show (pvAlt pv)] - -instance Buildable ProtocolVersion where - build = bprint shown - --- Used for debugging purposes only -instance ToJSON ProtocolVersion - -instance ToCBOR ProtocolVersion where - toCBOR = toByronCBOR - -instance FromCBOR ProtocolVersion where - fromCBOR = fromByronCBOR - -instance EncCBOR ProtocolVersion where - encCBOR pv = - encodeListLen 3 - <> encCBOR (pvMajor pv) - <> encCBOR (pvMinor pv) - <> encCBOR (pvAlt pv) - - encodedSizeExpr f pv = - 1 - + encodedSizeExpr f (pvMajor <$> pv) - + encodedSizeExpr f (pvMinor <$> pv) - + encodedSizeExpr f (pvAlt <$> pv) - -instance DecCBOR ProtocolVersion where - decCBOR = do - enforceSize "ProtocolVersion" 3 - ProtocolVersion <$> decCBOR <*> decCBOR <*> decCBOR diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Update/SoftforkRule.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Update/SoftforkRule.hs deleted file mode 100644 index d4348972d6e..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Update/SoftforkRule.hs +++ /dev/null @@ -1,96 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE UndecidableInstances #-} - -module Cardano.Chain.Update.SoftforkRule ( - SoftforkRule (..), -) -where - -import Cardano.Chain.Common (LovelacePortion) -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - encodeListLen, - enforceSize, - fromByronCBOR, - toByronCBOR, - ) -import Cardano.Prelude -import qualified Data.Aeson as Aeson -import Formatting (bprint, build) -import qualified Formatting.Buildable as B -import NoThunks.Class (NoThunks (..)) -import Text.JSON.Canonical (FromJSON (..), ToJSON (..), fromJSField, mkObject) - --- | Values defining softfork resolution rule --- --- If a proposal is confirmed at the 's'-th epoch, softfork resolution --- threshold at the 't'-th epoch will be 'max spMinThd (spInitThd - (t - s) * --- spThdDecrement)'. --- --- Softfork resolution threshold is the portion of total stake such that if --- total stake of issuers of blocks with some block version is greater than --- this portion, this block version becomes adopted. -data SoftforkRule = SoftforkRule - { srInitThd :: !LovelacePortion - -- ^ Initial threshold (right after proposal is confirmed). - , srMinThd :: !LovelacePortion - -- ^ Minimal threshold (i. e. threshold can't become less than this one). - , srThdDecrement :: !LovelacePortion - -- ^ Theshold will be decreased by this value after each epoch. - } - deriving (Show, Eq, Ord, Generic) - deriving anyclass (NFData, NoThunks) - -instance B.Buildable SoftforkRule where - build sr = - bprint - ("(init = " . build . ", min = " . build . ", decrement = " . build . ")") - (srInitThd sr) - (srMinThd sr) - (srThdDecrement sr) - --- Used for debugging purposes only -instance Aeson.ToJSON SoftforkRule - -instance ToCBOR SoftforkRule where - toCBOR = toByronCBOR - -instance FromCBOR SoftforkRule where - fromCBOR = fromByronCBOR - -instance EncCBOR SoftforkRule where - encCBOR sr = - encodeListLen 3 - <> encCBOR (srInitThd sr) - <> encCBOR (srMinThd sr) - <> encCBOR - (srThdDecrement sr) - -instance DecCBOR SoftforkRule where - decCBOR = do - enforceSize "SoftforkRule" 3 - SoftforkRule <$> decCBOR <*> decCBOR <*> decCBOR - -instance Monad m => ToJSON m SoftforkRule where - toJSON sr = - mkObject - [ ("initThd", toJSON $ srInitThd sr) - , ("minThd", toJSON $ srMinThd sr) - , ("thdDecrement", toJSON $ srThdDecrement sr) - ] - -instance MonadError SchemaError m => FromJSON m SoftforkRule where - fromJSON obj = - SoftforkRule - <$> fromJSField obj "initThd" - <*> fromJSField obj "minThd" - <*> fromJSField obj "thdDecrement" diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Update/SoftwareVersion.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Update/SoftwareVersion.hs deleted file mode 100644 index 09eb2adb396..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Update/SoftwareVersion.hs +++ /dev/null @@ -1,117 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveDataTypeable #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} - -module Cardano.Chain.Update.SoftwareVersion ( - SoftwareVersion (..), - SoftwareVersionError (..), - NumSoftwareVersion, - checkSoftwareVersion, -) -where - -import Cardano.Chain.Update.ApplicationName -import Cardano.Ledger.Binary ( - DecCBOR (..), - DecoderError (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - cborError, - decodeWord8, - encodeListLen, - enforceSize, - fromByronCBOR, - toByronCBOR, - ) -import Cardano.Prelude hiding (cborError) -import Data.Aeson (ToJSON) -import Data.Data (Data) -import Formatting (bprint, build, formatToString, int, stext) -import qualified Formatting.Buildable as B (Buildable (..)) -import NoThunks.Class (NoThunks (..)) -import qualified Prelude - --- | Numeric software version associated with 'ApplicationName' -type NumSoftwareVersion = Word32 - --- | Software version -data SoftwareVersion = SoftwareVersion - { svAppName :: !ApplicationName - , svNumber :: !NumSoftwareVersion - } - deriving (Eq, Generic, Ord) - deriving anyclass (NFData, NoThunks) - -instance B.Buildable SoftwareVersion where - build sv = - bprint (stext . ":" . int) (unApplicationName $ svAppName sv) (svNumber sv) - -instance Show SoftwareVersion where - show = formatToString build - --- Used for debugging purposes only -instance ToJSON SoftwareVersion - -instance ToCBOR SoftwareVersion where - toCBOR = toByronCBOR - -instance FromCBOR SoftwareVersion where - fromCBOR = fromByronCBOR - -instance EncCBOR SoftwareVersion where - encCBOR sv = encodeListLen 2 <> encCBOR (svAppName sv) <> encCBOR (svNumber sv) - - encodedSizeExpr f sv = - 1 - + encodedSizeExpr f (svAppName <$> sv) - + encodedSizeExpr f (svNumber <$> sv) - -instance DecCBOR SoftwareVersion where - decCBOR = do - enforceSize "SoftwareVersion" 2 - SoftwareVersion <$> decCBOR <*> decCBOR - -data SoftwareVersionError - = SoftwareVersionApplicationNameError ApplicationNameError - deriving (Data, Eq, Show) - -instance ToCBOR SoftwareVersionError where - toCBOR = toByronCBOR - -instance FromCBOR SoftwareVersionError where - fromCBOR = fromByronCBOR - -instance EncCBOR SoftwareVersionError where - encCBOR (SoftwareVersionApplicationNameError applicationNameError) = - encodeListLen 2 - <> encCBOR (0 :: Word8) - <> encCBOR applicationNameError - -instance DecCBOR SoftwareVersionError where - decCBOR = do - enforceSize "SoftwareVersionError" 2 - tag <- decodeWord8 - case tag of - 0 -> SoftwareVersionApplicationNameError <$> decCBOR - _ -> cborError $ DecoderErrorUnknownTag "SoftwareVersionError" tag - -instance B.Buildable SoftwareVersionError where - build = \case - SoftwareVersionApplicationNameError err -> - bprint - ( "ApplicationName was invalid when checking SoftwareVersion\n Error:" - . build - ) - err - --- | A software version is valid iff its application name is valid -checkSoftwareVersion :: - MonadError SoftwareVersionError m => SoftwareVersion -> m () -checkSoftwareVersion sv = - checkApplicationName (svAppName sv) - `wrapError` SoftwareVersionApplicationNameError diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Update/SystemTag.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Update/SystemTag.hs deleted file mode 100644 index 7ad3215f62f..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Update/SystemTag.hs +++ /dev/null @@ -1,138 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveDataTypeable #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} - -module Cardano.Chain.Update.SystemTag ( - SystemTag (..), - SystemTagError (..), - checkSystemTag, - systemTagMaxLength, - osHelper, - archHelper, -) -where - -import Cardano.Ledger.Binary ( - DecCBOR (..), - Decoder, - DecoderError (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - cborError, - decodeListLen, - decodeWord8, - encodeListLen, - fromByronCBOR, - matchSize, - toByronCBOR, - ) -import Cardano.Prelude hiding (cborError) -import Data.Aeson (ToJSON, ToJSONKey) -import Data.Data (Data) -import qualified Data.Text as T -import Distribution.System (Arch (..), OS (..)) -import Distribution.Text (display) -import Formatting (bprint, int, stext) -import qualified Formatting.Buildable as B -import NoThunks.Class (NoThunks (..)) - --- | Tag of system for which update data is purposed, e.g. win64, mac32 -newtype SystemTag = SystemTag - { getSystemTag :: Text - } - deriving (Eq, Ord, Show, Generic) - deriving newtype (B.Buildable) - deriving anyclass (NFData, NoThunks) - --- Used for debugging purposes only -instance ToJSON SystemTag - --- Used for debugging purposes only -instance ToJSONKey SystemTag - -instance ToCBOR SystemTag where - toCBOR = toByronCBOR - -instance FromCBOR SystemTag where - fromCBOR = fromByronCBOR - -instance EncCBOR SystemTag where - encCBOR = encCBOR . getSystemTag - -instance DecCBOR SystemTag where - decCBOR = SystemTag <$> decCBOR - -systemTagMaxLength :: Integral i => i -systemTagMaxLength = 10 - -data SystemTagError - = SystemTagNotAscii Text - | SystemTagTooLong Text - deriving (Eq, Show, Data) - -instance ToCBOR SystemTagError where - toCBOR = toByronCBOR - -instance FromCBOR SystemTagError where - fromCBOR = fromByronCBOR - -instance EncCBOR SystemTagError where - encCBOR err = case err of - SystemTagNotAscii tag -> - encodeListLen 2 - <> encCBOR (0 :: Word8) - <> encCBOR tag - SystemTagTooLong tag -> - encodeListLen 2 - <> encCBOR (1 :: Word8) - <> encCBOR tag - -instance DecCBOR SystemTagError where - decCBOR = do - len <- decodeListLen - let checkSize :: Int -> Decoder s () - checkSize size = matchSize "SystemTagError" size len - tag <- decodeWord8 - case tag of - 0 -> checkSize 2 >> SystemTagNotAscii <$> decCBOR - 1 -> checkSize 2 >> SystemTagTooLong <$> decCBOR - _ -> cborError $ DecoderErrorUnknownTag "SystemTagError" tag - -instance B.Buildable SystemTagError where - build = \case - SystemTagNotAscii tag -> - bprint ("SystemTag, " . stext . ", contains non-ascii characters") tag - SystemTagTooLong tag -> - bprint - ("SystemTag, " . stext . ", exceeds limit of " . int) - tag - (systemTagMaxLength :: Int) - -checkSystemTag :: MonadError SystemTagError m => SystemTag -> m () -checkSystemTag (SystemTag tag) - | T.length tag > systemTagMaxLength = throwError $ SystemTagTooLong tag - | T.any (not . isAscii) tag = throwError $ SystemTagNotAscii tag - | otherwise = pure () - --- | Helper to turn an @OS@ into a @Text@ compatible with the @systemTag@ --- previously used in 'configuration.yaml' -osHelper :: OS -> Text -osHelper sys = case sys of - Windows -> "win" - OSX -> "macos" - Linux -> "linux" - _ -> toS $ display sys - --- | Helper to turn an @Arch@ into a @Text@ compatible with the @systemTag@ --- previously used in 'configuration.yaml' -archHelper :: Arch -> Text -archHelper archt = case archt of - I386 -> "32" - X86_64 -> "64" - _ -> toS $ display archt diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Update/Validation/Endorsement.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Update/Validation/Endorsement.hs deleted file mode 100644 index bb633ec83cc..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Update/Validation/Endorsement.hs +++ /dev/null @@ -1,237 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} - -module Cardano.Chain.Update.Validation.Endorsement ( - Environment (..), - State (..), - Endorsement (..), - CandidateProtocolUpdate (..), - register, - Error (..), -) -where - -import Cardano.Chain.Common (BlockCount, KeyHash) -import qualified Cardano.Chain.Delegation as Delegation -import Cardano.Chain.ProtocolConstants (kSlotSecurityParam) -import Cardano.Chain.Slotting (SlotNumber, addSlotCount) -import Cardano.Chain.Update.Proposal (UpId) -import Cardano.Chain.Update.ProtocolParameters (ProtocolParameters) -import Cardano.Chain.Update.ProtocolVersion (ProtocolVersion) -import qualified Cardano.Chain.Update.Validation.Registration as Registration -import Cardano.Ledger.Binary ( - DecCBOR (..), - DecoderError (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - cborError, - decodeWord8, - encodeListLen, - enforceSize, - fromByronCBOR, - toByronCBOR, - ) -import Cardano.Prelude hiding (State, cborError) -import qualified Data.Map.Strict as M -import qualified Data.Set as Set -import NoThunks.Class (NoThunks (..)) - -data Environment = Environment - { k :: !BlockCount - -- ^ Chain stability parameter. - , currentSlot :: !SlotNumber - , adoptionThreshold :: !Int - , delegationMap :: !Delegation.Map - , confirmedProposals :: !(Map UpId SlotNumber) - , registeredProtocolUpdateProposals :: !Registration.ProtocolUpdateProposals - } - -data State = State - { candidateProtocolVersions :: ![CandidateProtocolUpdate] - , registeredEndorsements :: !(Set Endorsement) - } - -data CandidateProtocolUpdate = CandidateProtocolUpdate - { cpuSlot :: !SlotNumber - -- ^ Slot at which this protocol version and parameters gathered enough - -- endorsements and became a candidate. This is used to check which - -- versions became candidates 2k slots before the end of an epoch (and only - -- those can be adopted at that epoch). Versions that became candidates - -- later than 2k slots before the end of an epoch can be adopted in - -- following epochs. - , cpuProtocolVersion :: !ProtocolVersion - , cpuProtocolParameters :: !ProtocolParameters - } - deriving (Eq, Show, Generic) - deriving anyclass (NFData, NoThunks) - -instance ToCBOR CandidateProtocolUpdate where - toCBOR = toByronCBOR - -instance FromCBOR CandidateProtocolUpdate where - fromCBOR = fromByronCBOR - -instance DecCBOR CandidateProtocolUpdate where - decCBOR = do - enforceSize "CandidateProtocolUpdate" 3 - CandidateProtocolUpdate - <$> decCBOR - <*> decCBOR - <*> decCBOR - -instance EncCBOR CandidateProtocolUpdate where - encCBOR cpu = - encodeListLen 3 - <> encCBOR (cpuSlot cpu) - <> encCBOR (cpuProtocolVersion cpu) - <> encCBOR (cpuProtocolParameters cpu) - -data Endorsement = Endorsement - { endorsementProtocolVersion :: !ProtocolVersion - , endorsementKeyHash :: !KeyHash - } - deriving (Eq, Show, Ord, Generic) - deriving anyclass (NFData, NoThunks) - -instance ToCBOR Endorsement where - toCBOR = toByronCBOR - -instance FromCBOR Endorsement where - fromCBOR = fromByronCBOR - -instance DecCBOR Endorsement where - decCBOR = do - enforceSize "Endorsement" 2 - Endorsement - <$> decCBOR - <*> decCBOR - -instance EncCBOR Endorsement where - encCBOR sh = - encodeListLen 2 - <> encCBOR (endorsementProtocolVersion sh) - <> encCBOR (endorsementKeyHash sh) - -data Error - = -- | Multiple proposals were found, which propose an update to the same - -- protocol version. - MultipleProposalsForProtocolVersion ProtocolVersion - deriving (Eq, Show) - -instance ToCBOR Error where - toCBOR = toByronCBOR - -instance FromCBOR Error where - fromCBOR = fromByronCBOR - -instance EncCBOR Error where - encCBOR (MultipleProposalsForProtocolVersion protocolVersion) = - encodeListLen 2 - <> encCBOR (0 :: Word8) - <> encCBOR protocolVersion - -instance DecCBOR Error where - decCBOR = do - enforceSize "Endorsement.Error" 2 - tag <- decodeWord8 - case tag of - 0 -> MultipleProposalsForProtocolVersion <$> decCBOR - _ -> cborError $ DecoderErrorUnknownTag "Endorsement.Error" tag - --- | Register an endorsement. --- --- This corresponds to the @UPEND@ rule. -register :: - MonadError Error m => Environment -> State -> Endorsement -> m State -register env st endorsement = - case M.toList - ( M.filter - ((== pv) . Registration.pupProtocolVersion) - registeredProtocolUpdateProposals - ) of - -- We ignore endorsement of proposals that aren't registered - [] -> pure st - -- Try to register the endorsement and check if we can adopt the proposal - [(upId, Registration.ProtocolUpdateProposal _ pps')] -> - if isConfirmedAndStable upId - then - if numberOfEndorsements >= adoptionThreshold - then -- Register the endorsement and adopt the proposal in the next epoch - do - let cpu = - CandidateProtocolUpdate - { cpuSlot = currentSlot - , cpuProtocolVersion = pv - , cpuProtocolParameters = pps' - } - cpus' = - updateCandidateProtocolUpdates candidateProtocolVersions cpu - pure - $ State - { candidateProtocolVersions = cpus' - , registeredEndorsements = registeredEndorsements' - } - else -- Just register the endorsement if we cannot adopt - pure $ st {registeredEndorsements = registeredEndorsements'} - else -- Ignore the endorsement if the registration isn't stable - pure st - -- Throw an error if there are multiple proposals for this protocol version - _ -> throwError $ MultipleProposalsForProtocolVersion pv - where - Environment - { k - , currentSlot - , adoptionThreshold - , delegationMap - , confirmedProposals - , registeredProtocolUpdateProposals - } = env - - isConfirmedAndStable upId = upId `M.member` scps - where - -- Stable and confirmed proposals. - scps = M.filter (\x -> addSlotCount (kSlotSecurityParam k) x <= currentSlot) confirmedProposals - - numberOfEndorsements :: Int - numberOfEndorsements = - length - $ Set.filter - ((== pv) . endorsementProtocolVersion) - registeredEndorsements' - - pv = endorsementProtocolVersion endorsement - - State {candidateProtocolVersions, registeredEndorsements} = st - - registeredEndorsements' = case Delegation.lookupR vk delegationMap of - Just vkS -> Set.insert (Endorsement epv vkS) registeredEndorsements - Nothing -> registeredEndorsements - where - -- Note that we do not throw an error if there is no corresponding - -- delegate for the given endorsement keyHash. This is consistent - -- with the @UPEND@ rules. The check that there is a delegator should be - -- done in the rule that checks that the block issuer is a delegate of a - -- genesis key. - - vk = endorsementKeyHash endorsement - epv = endorsementProtocolVersion endorsement - --- | Add a newly endorsed protocol version to the 'CandidateProtocolUpdate's --- --- We only add it to the list if the 'ProtocolVersion' is strictly greater --- than all other `CandidateProtocolUpdate`s --- --- This corresponds to the @FADS@ rule. -updateCandidateProtocolUpdates :: - [CandidateProtocolUpdate] -> - CandidateProtocolUpdate -> - [CandidateProtocolUpdate] -updateCandidateProtocolUpdates [] cpu = [cpu] -updateCandidateProtocolUpdates cpus@(cpu : _) cpu' - | cpuProtocolVersion cpu < cpuProtocolVersion cpu' = cpu' : cpus - | otherwise = cpus diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Update/Validation/Interface.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Update/Validation/Interface.hs deleted file mode 100644 index 80091b23883..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Update/Validation/Interface.hs +++ /dev/null @@ -1,539 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} - --- | Blockchain interface validation rules. -module Cardano.Chain.Update.Validation.Interface ( - -- * Environment - Environment (..), - - -- * State - State (..), - initialState, - - -- * Signal - Signal (..), - - -- * Error - Error (..), - - -- * Interface functions - registerUpdate, - registerProposal, - registerVote, - registerEndorsement, - registerEpoch, -) -where - -import Cardano.Chain.Common.BlockCount (BlockCount) -import Cardano.Chain.Common.KeyHash (KeyHash) -import qualified Cardano.Chain.Delegation as Delegation -import qualified Cardano.Chain.Genesis as Genesis -import Cardano.Chain.ProtocolConstants (kEpochSlots) -import Cardano.Chain.Slotting ( - EpochNumber, - SlotCount (SlotCount), - SlotNumber, - addSlotCount, - epochFirstSlot, - unSlotNumber, - ) -import Cardano.Chain.Update.Proposal (AProposal, UpId, recoverUpId) -import Cardano.Chain.Update.ProtocolParameters ( - ProtocolParameters, - ppUpdateProposalTTL, - upAdptThd, - ) -import Cardano.Chain.Update.ProtocolVersion (ProtocolVersion (..)) -import Cardano.Chain.Update.SoftwareVersion ( - svAppName, - svNumber, - ) -import Cardano.Chain.Update.Validation.Endorsement ( - CandidateProtocolUpdate, - Endorsement, - endorsementProtocolVersion, - ) -import qualified Cardano.Chain.Update.Validation.Endorsement as Endorsement -import Cardano.Chain.Update.Validation.Interface.ProtocolVersionBump ( - tryBumpVersion, - ) -import qualified Cardano.Chain.Update.Validation.Interface.ProtocolVersionBump as PVBump -import qualified Cardano.Chain.Update.Validation.Registration as Registration -import qualified Cardano.Chain.Update.Validation.Voting as Voting -import Cardano.Chain.Update.Vote (AVote) -import Cardano.Crypto (ProtocolMagicId) -import Cardano.Ledger.Binary ( - Annotated, - DecCBOR (..), - Decoder, - DecoderError (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - cborError, - decodeListLen, - decodeWord8, - encodeListLen, - enforceSize, - fromByronCBOR, - matchSize, - toByronCBOR, - ) -import Cardano.Prelude hiding (State, cborError) -import qualified Data.Map.Strict as M -import Data.Set (union) -import qualified Data.Set as S -import NoThunks.Class (NoThunks (..)) - -data Environment = Environment - { protocolMagic :: !(Annotated ProtocolMagicId ByteString) - , k :: !BlockCount - -- ^ TODO: this is the chain security parameter, a.k.a. @stableAfter@, it is not part - -- of our protocol parameters, so it seems that we need to pass it in the - -- environment. However we need to double-check this with others. - , currentSlot :: !SlotNumber - , numGenKeys :: !Word8 - -- ^ Number of genesis keys. This is used to calculate the proportion of - -- genesis keys that need to endorse a new protocol version for it to be - -- considered for adoption. See - -- @Cardano.Chain.Update.Validation.Endorsement.Environment@. - , delegationMap :: !Delegation.Map - } - --- | Update interface state. -data State = State - { currentEpoch :: !EpochNumber - -- ^ Current epoch - , adoptedProtocolVersion :: !ProtocolVersion - , adoptedProtocolParameters :: !ProtocolParameters - -- ^ Adopted protocol parameters - , candidateProtocolUpdates :: ![CandidateProtocolUpdate] - -- ^ Candidate protocol versions - , appVersions :: !Registration.ApplicationVersions - -- ^ Current application versions - , registeredProtocolUpdateProposals :: !Registration.ProtocolUpdateProposals - -- ^ Registered protocol update proposals - , registeredSoftwareUpdateProposals :: !Registration.SoftwareUpdateProposals - -- ^ Registered software update proposals - , confirmedProposals :: !(Map UpId SlotNumber) - -- ^ Confirmed update proposals - , proposalVotes :: !(Map UpId (Set KeyHash)) - -- ^ Update proposals votes - , registeredEndorsements :: !(Set Endorsement) - -- ^ Update proposals endorsements - , proposalRegistrationSlot :: !(Map UpId SlotNumber) - -- ^ Slot at which an update proposal was registered - } - deriving (Eq, Show, Generic) - deriving anyclass (NFData, NoThunks) - -instance ToCBOR State where - toCBOR = toByronCBOR - -instance FromCBOR State where - fromCBOR = fromByronCBOR - -instance DecCBOR State where - decCBOR = do - enforceSize "State" 11 - State - <$> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - -instance EncCBOR State where - encCBOR s = - encodeListLen 11 - <> encCBOR (currentEpoch s) - <> encCBOR (adoptedProtocolVersion s) - <> encCBOR (adoptedProtocolParameters s) - <> encCBOR (candidateProtocolUpdates s) - <> encCBOR (appVersions s) - <> encCBOR (registeredProtocolUpdateProposals s) - <> encCBOR (registeredSoftwareUpdateProposals s) - <> encCBOR (confirmedProposals s) - <> encCBOR (proposalVotes s) - <> encCBOR (registeredEndorsements s) - <> encCBOR (proposalRegistrationSlot s) - -data Error - = Registration Registration.Error - | Voting Voting.Error - | Endorsement Endorsement.Error - | NumberOfGenesisKeysTooLarge (Registration.TooLarge Int) - deriving (Eq, Show) - -instance ToCBOR Error where - toCBOR = toByronCBOR - -instance FromCBOR Error where - fromCBOR = fromByronCBOR - -instance EncCBOR Error where - encCBOR err = case err of - Registration registrationErr -> - encodeListLen 2 - <> encCBOR (0 :: Word8) - <> encCBOR registrationErr - Voting votingErr -> - encodeListLen 2 - <> encCBOR (1 :: Word8) - <> encCBOR votingErr - Endorsement endorsementErr -> - encodeListLen 2 - <> encCBOR (2 :: Word8) - <> encCBOR endorsementErr - NumberOfGenesisKeysTooLarge tooLarge -> - encodeListLen 2 - <> encCBOR (3 :: Word8) - <> encCBOR tooLarge - -instance DecCBOR Error where - decCBOR = do - len <- decodeListLen - let checkSize :: Int -> Decoder s () - checkSize size = matchSize "Interface.Error" size len - tag <- decodeWord8 - case tag of - 0 -> checkSize 2 >> Registration <$> decCBOR - 1 -> checkSize 2 >> Voting <$> decCBOR - 2 -> checkSize 2 >> Endorsement <$> decCBOR - 3 -> checkSize 2 >> NumberOfGenesisKeysTooLarge <$> decCBOR - _ -> cborError $ DecoderErrorUnknownTag "Interface.Error" tag - --- | Signal combining signals from various rules -data Signal = Signal - { proposal :: !(Maybe (AProposal ByteString)) - , votes :: ![AVote ByteString] - , endorsement :: !Endorsement - } - --- | Initial update interface state -initialState :: Genesis.Config -> State -initialState config = - State - { currentEpoch = 0 - , adoptedProtocolVersion = ProtocolVersion 0 0 0 - , adoptedProtocolParameters = Genesis.configProtocolParameters config - , candidateProtocolUpdates = [] - , appVersions = mempty - , registeredProtocolUpdateProposals = mempty - , registeredSoftwareUpdateProposals = mempty - , confirmedProposals = mempty - , proposalVotes = mempty - , registeredEndorsements = mempty - , proposalRegistrationSlot = mempty - } - --- | Group together the other registration rules in a single rule --- --- This corresponds to the @BUPI@ rule in the Byron chain specification. -registerUpdate :: - MonadError Error m => Environment -> State -> Signal -> m State -registerUpdate env st Signal {proposal, votes, endorsement} = do - -- Register proposal if it exists - st' <- case proposal of - Nothing -> pure st - Just p -> registerProposal env st p - - -- Register the votes - st'' <- registerVotes env st' votes - - -- Register endorsement - registerEndorsement env st'' endorsement - --- | Register an update proposal. --- --- This corresponds to the @UPIREG@ rule in the Byron ledger specification. -registerProposal :: - MonadError Error m => - Environment -> - State -> - AProposal ByteString -> - m State -registerProposal env st proposal = do - Registration.State registeredProtocolUpdateProposals' registeredSoftwareUpdateProposals' <- - Registration.registerProposal subEnv subSt proposal - `wrapError` Registration - pure - $! st - { registeredProtocolUpdateProposals = registeredProtocolUpdateProposals' - , registeredSoftwareUpdateProposals = registeredSoftwareUpdateProposals' - , proposalRegistrationSlot = - M.insert (recoverUpId proposal) currentSlot proposalRegistrationSlot - } - where - Environment - { protocolMagic - , currentSlot - , delegationMap - } = env - - State - { adoptedProtocolVersion - , adoptedProtocolParameters - , appVersions - , registeredProtocolUpdateProposals - , registeredSoftwareUpdateProposals - , proposalRegistrationSlot - } = st - - subEnv = - Registration.Environment - protocolMagic - currentSlot - adoptedProtocolVersion - adoptedProtocolParameters - appVersions - delegationMap - - subSt = - Registration.State - registeredProtocolUpdateProposals - registeredSoftwareUpdateProposals - --- | Register a sequence of votes. --- --- After applying the votes, we check for confirmed proposals, and update the --- application versions according to the proposals that, in the new state, are --- confirmed and stable. --- --- This corresponds to the @UPIVOTES@ rule in the Byron ledger --- specification. -registerVotes :: - MonadError Error m => - Environment -> - State -> - [AVote ByteString] -> - m State -registerVotes env st votes = do - st' <- foldM (registerVote env) st votes - let Environment - { currentSlot - } = env - - State - { confirmedProposals - , appVersions - , registeredSoftwareUpdateProposals - } = st' - - confirmedApplicationUpdates = - M.restrictKeys - registeredSoftwareUpdateProposals - (M.keysSet confirmedProposals) - appVersions' = - M.fromList - $ [ (svAppName sv, av) - | (pid, sup) <- M.toList registeredSoftwareUpdateProposals - , pid `elem` M.keys confirmedApplicationUpdates - , let Registration.SoftwareUpdateProposal sv metadata = sup - av = Registration.ApplicationVersion (svNumber sv) currentSlot metadata - ] - pure - $ st' -- Note that it's important that the new application versions are passed - -- as the first argument of @M.union@, since the values in this first - -- argument overwrite the values in the second. - { appVersions = M.union appVersions' appVersions - , -- TODO: consider using the `Relation` instances from `cardano-ledger` (see `Ledger.Core`) - registeredSoftwareUpdateProposals = - M.withoutKeys - registeredSoftwareUpdateProposals - (M.keysSet confirmedProposals) - } - --- | Register a vote for the given proposal. --- --- This corresponds to the @UPIVOTE@ rule in the Byron ledger -registerVote :: - MonadError Error m => - Environment -> - State -> - AVote ByteString -> - m State -registerVote env st vote = do - Voting.State proposalVotes' confirmedProposals' <- - Voting.registerVoteWithConfirmation protocolMagic subEnv subSt vote - `wrapError` Voting - pure - $! st - { confirmedProposals = confirmedProposals' - , proposalVotes = proposalVotes' - } - where - Environment - { protocolMagic - , currentSlot - , numGenKeys - , delegationMap - } = env - - State - { adoptedProtocolParameters - , proposalRegistrationSlot - , proposalVotes - , confirmedProposals - } = st - - rups = M.keysSet proposalRegistrationSlot - - subEnv = - Voting.Environment - currentSlot - (upAdptThd numGenKeys adoptedProtocolParameters) - (Voting.RegistrationEnvironment rups delegationMap) - - subSt = Voting.State proposalVotes confirmedProposals - --- | Register an endorsement. --- --- An endorsement represents the fact that a genesis key is ready to start using --- the protocol version being endorsed. In the decentralized era only genesis --- key holders can endorse protocol versions. --- --- This corresponds to the @UPIEND@ rule in the Byron ledger --- specification. -registerEndorsement :: - MonadError Error m => - Environment -> - State -> - Endorsement -> - m State -registerEndorsement env st endorsement = do - Endorsement.State candidateProtocolUpdates' registeredEndorsements' <- - Endorsement.register subEnv subSt endorsement - `wrapError` Endorsement - let pidsKeep = nonExpiredPids `union` confirmedPids - - nonExpiredPids = - M.keysSet $ M.filter (\s -> currentSlot <= addSlotCount u s) proposalRegistrationSlot - - confirmedPids = M.keysSet confirmedProposals - - registeredProtocolUpdateProposals' = - M.restrictKeys registeredProtocolUpdateProposals pidsKeep - - vsKeep = - S.fromList - $ Registration.pupProtocolVersion - <$> M.elems registeredProtocolUpdateProposals' - - pure - $! st - { candidateProtocolUpdates = forceElemsToWHNF candidateProtocolUpdates' - , registeredProtocolUpdateProposals = registeredProtocolUpdateProposals' - , registeredSoftwareUpdateProposals = - M.restrictKeys registeredSoftwareUpdateProposals pidsKeep - , proposalVotes = - M.restrictKeys proposalVotes pidsKeep - , registeredEndorsements = - S.filter ((`S.member` vsKeep) . endorsementProtocolVersion) registeredEndorsements' - , proposalRegistrationSlot = - M.restrictKeys proposalRegistrationSlot pidsKeep - } - where - subEnv = - Endorsement.Environment - k - currentSlot - (upAdptThd numGenKeys adoptedProtocolParameters) - delegationMap - confirmedProposals - registeredProtocolUpdateProposals - - Environment - { k - , currentSlot - , numGenKeys - , delegationMap - } = env - - State - { adoptedProtocolParameters - , confirmedProposals - , registeredProtocolUpdateProposals - , registeredSoftwareUpdateProposals - , candidateProtocolUpdates - , proposalVotes - , registeredEndorsements - , proposalRegistrationSlot - } = st - - subSt = - Endorsement.State - candidateProtocolUpdates - registeredEndorsements - - u = SlotCount . unSlotNumber . ppUpdateProposalTTL $ adoptedProtocolParameters - --- | Register an epoch. Whenever an epoch number is seen on a block this epoch --- number should be passed to this function so that on epoch change the --- protocol parameters can be updated, provided that there is an update --- candidate that was accepted and endorsed by a majority of the genesis keys. --- --- This corresponds to the @UPIEC@ rules in the Byron ledger specification. -registerEpoch :: - Environment -> - State -> - -- | Epoch seen on the block. - EpochNumber -> - State -registerEpoch env st lastSeenEpoch = do - let PVBump.State - adoptedProtocolVersion' - nextProtocolParameters' = - tryBumpVersion subEnv subSt - if adoptedProtocolVersion' == adoptedProtocolVersion - then -- Nothing changes in the state, since we are not changing protocol - -- versions. This happens when either the epoch does not change (and - -- therefore the protocol parameters cannot change) or there are no - -- update proposals that can be adopted (either because there are no - -- candidates or they do not fulfill the requirements for adoption). - st - else -- We have a new protocol version, so we update the current protocol - -- version and parameters, and we perform a cleanup of the state - -- variables. - - st - { adoptedProtocolVersion = adoptedProtocolVersion' - , adoptedProtocolParameters = nextProtocolParameters' - , candidateProtocolUpdates = [] - , registeredProtocolUpdateProposals = M.empty - , registeredSoftwareUpdateProposals = M.empty - , confirmedProposals = M.empty - , proposalVotes = M.empty - , registeredEndorsements = S.empty - , proposalRegistrationSlot = M.empty - } - where - subEnv = PVBump.Environment k firstSlotOfLastSeenEpoch candidateProtocolUpdates - - subSt = - PVBump.State - adoptedProtocolVersion - adoptedProtocolParameters - - firstSlotOfLastSeenEpoch = epochFirstSlot (kEpochSlots k) lastSeenEpoch - - Environment - { k - } = env - - State - { adoptedProtocolVersion - , adoptedProtocolParameters - , candidateProtocolUpdates - } = st diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Update/Validation/Interface/ProtocolVersionBump.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Update/Validation/Interface/ProtocolVersionBump.hs deleted file mode 100644 index 92d444bbcf4..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Update/Validation/Interface/ProtocolVersionBump.hs +++ /dev/null @@ -1,64 +0,0 @@ -{-# LANGUAGE NamedFieldPuns #-} - -module Cardano.Chain.Update.Validation.Interface.ProtocolVersionBump ( - Environment (..), - State (..), - tryBumpVersion, -) -where - -import Cardano.Chain.Common.BlockCount (BlockCount) -import Cardano.Chain.ProtocolConstants (kUpdateStabilityParam) -import Cardano.Chain.Slotting (SlotNumber, addSlotCount) -import Cardano.Chain.Update.ProtocolParameters (ProtocolParameters) -import Cardano.Chain.Update.ProtocolVersion (ProtocolVersion) -import Cardano.Chain.Update.Validation.Endorsement ( - CandidateProtocolUpdate (CandidateProtocolUpdate), - cpuProtocolParameters, - cpuProtocolVersion, - cpuSlot, - ) -import Cardano.Prelude hiding (State) - -data Environment = Environment - { k :: !BlockCount - , epochFirstSlot :: !SlotNumber - , candidateProtocolVersions :: ![CandidateProtocolUpdate] - } - -data State = State - { nextProtocolVersion :: !ProtocolVersion - , nextProtocolParameters :: !ProtocolParameters - } - --- | Change the protocol version when an epoch change is detected, and there is --- a candidate protocol update that was confirmed at least @4 * k@ slots before --- the start of the new epoch, where @k@ is the chain security parameter. --- --- For a full history of why this is required, see --- https://github.com/intersectmbo/cardano-ledger/issues/1288 --- --- This corresponds to the @PVBUMP@ rules in the Byron ledger specification. -tryBumpVersion :: - Environment -> - State -> - State -tryBumpVersion env st = - case stableCandidates of - (newestStable : _) -> - let CandidateProtocolUpdate - { cpuProtocolVersion - , cpuProtocolParameters - } = newestStable - in st - { nextProtocolVersion = cpuProtocolVersion - , nextProtocolParameters = cpuProtocolParameters - } - _ -> st - where - Environment {k, epochFirstSlot, candidateProtocolVersions} = env - - stableCandidates = - filter - ((\x -> addSlotCount (kUpdateStabilityParam k) x <= epochFirstSlot) . cpuSlot) - candidateProtocolVersions diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Update/Validation/Registration.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Update/Validation/Registration.hs deleted file mode 100644 index d2784c9006b..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Update/Validation/Registration.hs +++ /dev/null @@ -1,597 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} - --- | Validation rules for registering updates --- --- This is an implementation of the rules defined in the Byron ledger --- specification -module Cardano.Chain.Update.Validation.Registration ( - Error (..), - Environment (..), - State (..), - ApplicationVersion (..), - ApplicationVersions, - Metadata, - ProtocolUpdateProposal (..), - ProtocolUpdateProposals, - SoftwareUpdateProposal (..), - SoftwareUpdateProposals, - registerProposal, - TooLarge (..), - Adopted (..), -) -where - -import Cardano.Chain.Common (KeyHash, hashKey) -import qualified Cardano.Chain.Delegation as Delegation -import Cardano.Chain.Slotting (SlotNumber (SlotNumber)) -import Cardano.Chain.Update.ApplicationName (ApplicationName) -import Cardano.Chain.Update.InstallerHash (InstallerHash) -import Cardano.Chain.Update.Proposal ( - AProposal (..), - ProposalBody (..), - UpId, - protocolParametersUpdate, - protocolVersion, - recoverProposalSignedBytes, - recoverUpId, - softwareVersion, - ) -import qualified Cardano.Chain.Update.Proposal as Proposal -import Cardano.Chain.Update.ProtocolParameters ( - ProtocolParameters, - ppMaxBlockSize, - ppMaxProposalSize, - ppMaxTxSize, - ppScriptVersion, - ) -import qualified Cardano.Chain.Update.ProtocolParametersUpdate as PPU -import Cardano.Chain.Update.ProtocolVersion (ProtocolVersion (ProtocolVersion)) -import Cardano.Chain.Update.SoftwareVersion ( - NumSoftwareVersion, - SoftwareVersion (SoftwareVersion), - SoftwareVersionError, - checkSoftwareVersion, - svAppName, - ) -import Cardano.Chain.Update.SystemTag (SystemTag, SystemTagError, checkSystemTag) -import Cardano.Crypto ( - ProtocolMagicId (..), - SignTag (SignUSProposal), - verifySignatureDecoded, - ) -import Cardano.Ledger.Binary ( - Annotated (unAnnotated), - DecCBOR (..), - Decoder, - DecoderError (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - cborError, - decodeListLen, - decodeWord8, - encodeListLen, - enforceSize, - fromByronCBOR, - matchSize, - toByronCBOR, - ) -import Cardano.Prelude hiding (State, cborError) -import qualified Data.ByteString as BS -import qualified Data.Map.Strict as M -import NoThunks.Class (NoThunks (..)) - -data Environment = Environment - { protocolMagic :: !(Annotated ProtocolMagicId ByteString) - , currentSlot :: !SlotNumber - , adoptedProtocolVersion :: !ProtocolVersion - , adoptedProtocolParameters :: !ProtocolParameters - , appVersions :: !ApplicationVersions - , delegationMap :: !Delegation.Map - } - -data ApplicationVersion = ApplicationVersion - { avNumSoftwareVersion :: !NumSoftwareVersion - , avSlotNumber :: !SlotNumber - , avMetadata :: !Metadata - } - deriving (Eq, Show, Generic) - deriving anyclass (NFData, NoThunks) - -instance ToCBOR ApplicationVersion where - toCBOR = toByronCBOR - -instance FromCBOR ApplicationVersion where - fromCBOR = fromByronCBOR - -instance DecCBOR ApplicationVersion where - decCBOR = do - enforceSize "ApplicationVersion" 3 - ApplicationVersion <$> decCBOR <*> decCBOR <*> decCBOR - -instance EncCBOR ApplicationVersion where - encCBOR av = - encodeListLen 3 - <> encCBOR (avNumSoftwareVersion av) - <> encCBOR (avSlotNumber av) - <> encCBOR (avMetadata av) - -type ApplicationVersions = Map ApplicationName ApplicationVersion - -type Metadata = Map SystemTag InstallerHash - --- | State keeps track of registered protocol and software update --- proposals -data State = State - { rsProtocolUpdateProposals :: !ProtocolUpdateProposals - , rsSoftwareUpdateProposals :: !SoftwareUpdateProposals - } - -data ProtocolUpdateProposal = ProtocolUpdateProposal - { pupProtocolVersion :: !ProtocolVersion - , pupProtocolParameters :: !ProtocolParameters - } - deriving (Eq, Show, Generic) - deriving anyclass (NFData, NoThunks) - -instance ToCBOR ProtocolUpdateProposal where - toCBOR = toByronCBOR - -instance FromCBOR ProtocolUpdateProposal where - fromCBOR = fromByronCBOR - -instance DecCBOR ProtocolUpdateProposal where - decCBOR = do - enforceSize "ProtocolUpdateProposal" 2 - ProtocolUpdateProposal <$> decCBOR <*> decCBOR - -instance EncCBOR ProtocolUpdateProposal where - encCBOR pup = - encodeListLen 2 - <> encCBOR (pupProtocolVersion pup) - <> encCBOR (pupProtocolParameters pup) - -type ProtocolUpdateProposals = Map UpId ProtocolUpdateProposal - -data SoftwareUpdateProposal = SoftwareUpdateProposal - { supSoftwareVersion :: !SoftwareVersion - , supSoftwareMetadata :: !Metadata - } - deriving (Eq, Show, Generic) - deriving anyclass (NFData, NoThunks) - -instance ToCBOR SoftwareUpdateProposal where - toCBOR = toByronCBOR - -instance FromCBOR SoftwareUpdateProposal where - fromCBOR = fromByronCBOR - -instance DecCBOR SoftwareUpdateProposal where - decCBOR = do - enforceSize "SoftwareUpdateProposal" 2 - SoftwareUpdateProposal <$> decCBOR <*> decCBOR - -instance EncCBOR SoftwareUpdateProposal where - encCBOR sup = - encodeListLen 2 - <> encCBOR (supSoftwareVersion sup) - <> encCBOR (supSoftwareMetadata sup) - -type SoftwareUpdateProposals = Map UpId SoftwareUpdateProposal - --- | Error captures the ways in which registration could fail -data Error - = DuplicateProtocolVersion ProtocolVersion - | DuplicateSoftwareVersion SoftwareVersion - | InvalidProposer KeyHash - | InvalidProtocolVersion ProtocolVersion Adopted - | InvalidScriptVersion Word16 Word16 - | InvalidSignature - | InvalidSoftwareVersion ApplicationVersions SoftwareVersion - | MaxBlockSizeTooLarge (TooLarge Natural) - | MaxTxSizeTooLarge (TooLarge Natural) - | ProposalAttributesUnknown - | ProposalTooLarge (TooLarge Natural) - | SoftwareVersionError SoftwareVersionError - | SystemTagError SystemTagError - | -- | The update proposal proposes neither a bump in the protocol or - -- application versions. - NullUpdateProposal - deriving (Eq, Show) - -instance ToCBOR Error where - toCBOR = toByronCBOR - -instance FromCBOR Error where - fromCBOR = fromByronCBOR - -instance EncCBOR Error where - encCBOR err = case err of - DuplicateProtocolVersion protocolVersion -> - encodeListLen 2 - <> encCBOR (0 :: Word8) - <> encCBOR protocolVersion - DuplicateSoftwareVersion softwareVersion -> - encodeListLen 2 - <> encCBOR (1 :: Word8) - <> encCBOR softwareVersion - InvalidProposer keyHash -> - encodeListLen 2 - <> encCBOR (2 :: Word8) - <> encCBOR keyHash - InvalidProtocolVersion protocolVersion adopted -> - encodeListLen 3 - <> encCBOR (3 :: Word8) - <> encCBOR protocolVersion - <> encCBOR adopted - InvalidScriptVersion adoptedScriptVersion newScriptVersion -> - encodeListLen 3 - <> encCBOR (4 :: Word8) - <> encCBOR adoptedScriptVersion - <> encCBOR newScriptVersion - InvalidSignature -> - encodeListLen 1 - <> encCBOR (5 :: Word8) - InvalidSoftwareVersion applicationVersions softwareVersion -> - encodeListLen 3 - <> encCBOR (6 :: Word8) - <> encCBOR applicationVersions - <> encCBOR softwareVersion - MaxBlockSizeTooLarge tooLarge -> - encodeListLen 2 - <> encCBOR (7 :: Word8) - <> encCBOR tooLarge - MaxTxSizeTooLarge tooLarge -> - encodeListLen 2 - <> encCBOR (8 :: Word8) - <> encCBOR tooLarge - ProposalAttributesUnknown -> - encodeListLen 1 - <> encCBOR (9 :: Word8) - ProposalTooLarge tooLarge -> - encodeListLen 2 - <> encCBOR (10 :: Word8) - <> encCBOR tooLarge - SoftwareVersionError softwareVersionError -> - encodeListLen 2 - <> encCBOR (11 :: Word8) - <> encCBOR softwareVersionError - SystemTagError systemTagError -> - encodeListLen 2 - <> encCBOR (12 :: Word8) - <> encCBOR systemTagError - NullUpdateProposal -> - encodeListLen 1 - <> encCBOR (13 :: Word8) - -instance DecCBOR Error where - decCBOR = do - len <- decodeListLen - let checkSize :: Int -> Decoder s () - checkSize size = matchSize "Registration.Error" size len - tag <- decodeWord8 - case tag of - 0 -> checkSize 2 >> DuplicateProtocolVersion <$> decCBOR - 1 -> checkSize 2 >> DuplicateSoftwareVersion <$> decCBOR - 2 -> checkSize 2 >> InvalidProposer <$> decCBOR - 3 -> checkSize 3 >> InvalidProtocolVersion <$> decCBOR <*> decCBOR - 4 -> checkSize 3 >> InvalidScriptVersion <$> decCBOR <*> decCBOR - 5 -> checkSize 1 >> pure InvalidSignature - 6 -> checkSize 3 >> InvalidSoftwareVersion <$> decCBOR <*> decCBOR - 7 -> checkSize 2 >> MaxBlockSizeTooLarge <$> decCBOR - 8 -> checkSize 2 >> MaxTxSizeTooLarge <$> decCBOR - 9 -> checkSize 1 >> pure ProposalAttributesUnknown - 10 -> checkSize 2 >> ProposalTooLarge <$> decCBOR - 11 -> checkSize 2 >> SoftwareVersionError <$> decCBOR - 12 -> checkSize 2 >> SystemTagError <$> decCBOR - 13 -> checkSize 1 >> pure NullUpdateProposal - _ -> cborError $ DecoderErrorUnknownTag "Registration.Error" tag - -data TooLarge n = TooLarge - { tlActual :: n - , tlMaxBound :: n - } - deriving (Eq, Show) - -instance EncCBOR n => ToCBOR (TooLarge n) where - toCBOR = toByronCBOR - -instance DecCBOR n => FromCBOR (TooLarge n) where - fromCBOR = fromByronCBOR - -instance EncCBOR n => EncCBOR (TooLarge n) where - encCBOR TooLarge {tlActual, tlMaxBound} = - encodeListLen 2 - <> encCBOR tlActual - <> encCBOR tlMaxBound - -instance DecCBOR n => DecCBOR (TooLarge n) where - decCBOR = do - enforceSize "TooLarge" 2 - TooLarge <$> decCBOR <*> decCBOR - -newtype Adopted = Adopted ProtocolVersion - deriving (Eq, Show) - deriving newtype (EncCBOR, DecCBOR) - -instance ToCBOR Adopted where - toCBOR = toByronCBOR - -instance FromCBOR Adopted where - fromCBOR = fromByronCBOR - --- | Register an update proposal after verifying its signature and validating --- its contents. This corresponds to the @UPREG@ rules in the spec. -registerProposal :: - MonadError Error m => - Environment -> - State -> - AProposal ByteString -> - m State -registerProposal env rs proposal = do - -- Check that the proposer is delegated to by a genesis key - Delegation.memberR proposerId delegationMap - `orThrowError` InvalidProposer proposerId - - -- Verify the proposal signature - verifySignatureDecoded - protocolMagic - SignUSProposal - issuer - (recoverProposalSignedBytes aBody) - signature - `orThrowError` InvalidSignature - - -- Check that the proposal is valid - registerProposalComponents - env - rs - proposal - where - AProposal {aBody, issuer, signature} = proposal - - proposerId = hashKey issuer - - Environment - { protocolMagic - , delegationMap - } = env - --- | Register the individual components of an update proposal --- --- The proposal may contain a protocol update, a software update, or both. --- This corresponds to the `UPV` rules in the spec. -registerProposalComponents :: - MonadError Error m => - Environment -> - State -> - AProposal ByteString -> - m State -registerProposalComponents env rs proposal = do - (protocolVersionChanged || softwareVersionChanged || nullUpdateExemptions) - `orThrowError` NullUpdateProposal - - -- Register protocol update if we have one - registeredPUPs' <- - if protocolVersionChanged - then registerProtocolUpdate adoptedPV adoptedPP registeredPUPs proposal - else pure registeredPUPs - - -- Register software update if we have one - registeredSUPs' <- - if softwareVersionChanged - then registerSoftwareUpdate appVersions registeredSUPs proposal - else pure registeredSUPs - - pure $ State registeredPUPs' registeredSUPs' - where - ProposalBody - { protocolVersion - , protocolParametersUpdate = ppu - , softwareVersion - } = Proposal.body proposal - - SoftwareVersion appName appVersion = softwareVersion - - softwareVersionChanged = - maybe True ((/= appVersion) . avNumSoftwareVersion) - $ M.lookup appName appVersions - - protocolVersionChanged = - not $ protocolVersion == adoptedPV && PPU.apply ppu adoptedPP == adoptedPP - - Environment - { protocolMagic - , currentSlot - , adoptedProtocolVersion = adoptedPV - , adoptedProtocolParameters = adoptedPP - , appVersions - } = env - - State registeredPUPs registeredSUPs = rs - - -- A "null" update proposal is one that neither increase the protocol - -- version nor the software version. Such update proposals are invalid - -- according to the Byron specification. However in the cardano-sl code - -- they are accepted onto the chain but without any state change. - -- - -- We cannot follow the legacy cardano-sl interpretation of accepting null - -- update onto the chain with no effect because it opens the door to DoS - -- attacks by replaying null update proposals. - -- - -- For further details see: - -- - -- https://github.com/intersectmbo/cardano-ledger/issues/759 - -- https://github.com/intersectmbo/cardano-ledger/pull/766 - -- - -- The existing staging network (protocol magic 633343913) does have existing - -- null update proposals however: one in epoch 44 (slot number 969188) and - -- one in epoch 88 (slot number 1915231). We could delete the staging network - -- blockchain and start from scratch, however it is extremely useful for - -- testing to have a realistic chain that is as long as the mainnet chain, - -- and indeed that has a large prefix that was created by the legacy - -- cardano-sl codebase. Therefore we allow for these specific excemptions on - -- this non-public testing network. - -- - nullUpdateExemptions = - unAnnotated protocolMagic - == ProtocolMagicId 633343913 -- staging - && ( currentSlot - == SlotNumber 969188 -- in epoch 44 - || currentSlot - == SlotNumber 1915231 -- in epoch 88 - ) - --- | Validate a protocol update --- --- We check that: --- --- 1) The protocol update hasn't already been registered --- 2) The protocol version is a valid next version --- 3) The new 'ProtocolParameters' represent a valid update --- --- This corresponds to the `UPPVV` rule in the spec. -registerProtocolUpdate :: - MonadError Error m => - ProtocolVersion -> - ProtocolParameters -> - ProtocolUpdateProposals -> - AProposal ByteString -> - m ProtocolUpdateProposals -registerProtocolUpdate adoptedPV adoptedPP registeredPUPs proposal = do - -- Check that this protocol version isn't already registered - null (M.filter ((== newPV) . pupProtocolVersion) registeredPUPs) - `orThrowError` DuplicateProtocolVersion newPV - - -- Check that this protocol version is a valid next version - pvCanFollow newPV adoptedPV - `orThrowError` InvalidProtocolVersion newPV (Adopted adoptedPV) - - canUpdate adoptedPP newPP proposal - - pure - $ M.insert - (recoverUpId proposal) - (ProtocolUpdateProposal newPV newPP) - registeredPUPs - where - ProposalBody {protocolVersion = newPV, protocolParametersUpdate} = - Proposal.body proposal - newPP = PPU.apply protocolParametersUpdate adoptedPP - --- | Check that the new 'ProtocolVersion' is a valid next version -pvCanFollow :: ProtocolVersion -> ProtocolVersion -> Bool -pvCanFollow newPV adoptedPV = adoptedPV < newPV && isNextVersion - where - ProtocolVersion newMajor newMinor _ = newPV - ProtocolVersion adoptedMajor adoptedMinor _ = adoptedPV - isNextVersion = case newMajor - adoptedMajor of - 0 -> newMinor == adoptedMinor + 1 - 1 -> newMinor == 0 - _ -> False - --- | Check that the new 'ProtocolParameters' represent a valid update --- --- This is where we enforce constraints on how the 'ProtocolParameters' --- change. -canUpdate :: - MonadError Error m => - ProtocolParameters -> - ProtocolParameters -> - AProposal ByteString -> - m () -canUpdate adoptedPP proposedPP proposal = do - -- Check that the proposal size is less than the maximum - (proposalSize <= maxProposalSize) - `orThrowError` ProposalTooLarge - (TooLarge maxProposalSize proposalSize) - - -- Check that the new maximum block size is no more than twice the current one - (newMaxBlockSize <= 2 * adoptedMaxBlockSize) - `orThrowError` MaxBlockSizeTooLarge - (TooLarge adoptedMaxBlockSize newMaxBlockSize) - - -- Check that the new max transaction size is less than the new max block size - (newMaxTxSize < newMaxBlockSize) - `orThrowError` MaxTxSizeTooLarge - (TooLarge newMaxBlockSize newMaxTxSize) - - -- Check that the new script version is either the same or incremented - (0 <= scriptVersionDiff && scriptVersionDiff <= 1) - `orThrowError` InvalidScriptVersion - adoptedScriptVersion - newScriptVersion - where - proposalSize :: Natural - proposalSize = fromIntegral . BS.length $ Proposal.annotation proposal - maxProposalSize = ppMaxProposalSize adoptedPP - - adoptedMaxBlockSize = ppMaxBlockSize adoptedPP - newMaxBlockSize = ppMaxBlockSize proposedPP - - newMaxTxSize = ppMaxTxSize proposedPP - - adoptedScriptVersion = ppScriptVersion adoptedPP - newScriptVersion = ppScriptVersion proposedPP - scriptVersionDiff = newScriptVersion - adoptedScriptVersion - --- | Check that a new 'SoftwareVersion' is valid --- --- We check that: --- --- 1) The 'SoftwareVersion' hasn't already been registered --- 2) The 'SoftwareVersion' is valid according to static checks --- 3) The new 'SoftwareVersion' is a valid next version --- --- This corresponds to the `UPSVV` rule in the spec. -registerSoftwareUpdate :: - MonadError Error m => - ApplicationVersions -> - SoftwareUpdateProposals -> - AProposal ByteString -> - m SoftwareUpdateProposals -registerSoftwareUpdate appVersions registeredSUPs proposal = do - -- Check that the 'SystemTag's in the metadata are valid - mapM_ checkSystemTag (M.keys metadata) `wrapError` SystemTagError - - -- Check that this software version isn't already registered - null - ( M.filter - ((== svAppName softwareVersion) . svAppName . supSoftwareVersion) - registeredSUPs - ) - `orThrowError` DuplicateSoftwareVersion softwareVersion - - -- Check that the software version is valid - checkSoftwareVersion softwareVersion `wrapError` SoftwareVersionError - - -- Check that this software version is a valid next version - svCanFollow appVersions softwareVersion - `orThrowError` InvalidSoftwareVersion appVersions softwareVersion - - -- Add to the list of registered software update proposals - pure - $ M.insert - (recoverUpId proposal) - (SoftwareUpdateProposal softwareVersion metadata) - registeredSUPs - where - ProposalBody {softwareVersion, metadata} = Proposal.body proposal - --- | Check that a new 'SoftwareVersion' is a valid next version --- --- The new version is valid for a given application if it is exactly one --- more than the current version -svCanFollow :: ApplicationVersions -> SoftwareVersion -> Bool -svCanFollow avs (SoftwareVersion appName appVersion) = - case M.lookup appName avs of - -- For new apps, the version must start at 0 or 1. - Nothing -> appVersion == 0 || appVersion == 1 - -- For existing apps, it must be exactly one more than the current version - Just (ApplicationVersion currentAppVersion _ _) -> appVersion == currentAppVersion + 1 diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Update/Validation/Voting.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Update/Validation/Voting.hs deleted file mode 100644 index f4a85107cd5..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Update/Validation/Voting.hs +++ /dev/null @@ -1,209 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} - --- | Validation rules for registering votes and confirming proposals --- --- This is an implementation of the rules defined in the Byron ledger --- specification -module Cardano.Chain.Update.Validation.Voting ( - Environment (..), - RegistrationEnvironment (..), - State (..), - Error (..), - registerVoteWithConfirmation, -) -where - -import Cardano.Chain.Common (KeyHash, hashKey) -import qualified Cardano.Chain.Delegation as Delegation -import Cardano.Chain.Slotting (SlotNumber) -import Cardano.Chain.Update.Proposal (UpId) -import Cardano.Chain.Update.Vote ( - AVote (..), - proposalId, - recoverSignedBytes, - ) -import Cardano.Crypto ( - ProtocolMagicId, - SignTag (SignUSVote), - verifySignatureDecoded, - ) -import Cardano.Ledger.Binary ( - Annotated, - DecCBOR (..), - Decoder, - DecoderError (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - cborError, - decodeListLen, - decodeWord8, - encodeListLen, - fromByronCBOR, - matchSize, - toByronCBOR, - ) -import Cardano.Prelude hiding (State, cborError) -import qualified Data.Map.Strict as M -import qualified Data.Set as Set - --- | Environment used to register votes and confirm proposals -data Environment = Environment - { veCurrentSlot :: SlotNumber - , veConfirmationThreshold :: Int - , veVotingRegistrationEnvironment :: RegistrationEnvironment - } - deriving (Eq, Show, Generic) - deriving anyclass (NFData) - --- | Environment required to validate and register a vote -data RegistrationEnvironment = RegistrationEnvironment - { vreRegisteredUpdateProposal :: !(Set UpId) - , vreDelegationMap :: !Delegation.Map - } - deriving (Eq, Show, Generic) - deriving anyclass (NFData) - --- | State keeps track of registered votes and confirmed proposals -data State = State - { vsVotes :: !RegisteredVotes - , vsConfirmedProposals :: !(Map UpId SlotNumber) - } - -type RegisteredVotes = Map UpId (Set KeyHash) - --- | Error captures the ways in which vote registration could fail -data Error - = VotingInvalidSignature - | VotingProposalNotRegistered UpId - | VotingVoterNotDelegate KeyHash - | VotingVoteAlreadyCast KeyHash - deriving (Eq, Show) - -instance ToCBOR Error where - toCBOR = toByronCBOR - -instance FromCBOR Error where - fromCBOR = fromByronCBOR - -instance EncCBOR Error where - encCBOR err = case err of - VotingInvalidSignature -> - encodeListLen 1 - <> encCBOR (0 :: Word8) - VotingProposalNotRegistered upId -> - encodeListLen 2 - <> encCBOR (1 :: Word8) - <> encCBOR upId - VotingVoterNotDelegate keyHash -> - encodeListLen 2 - <> encCBOR (2 :: Word8) - <> encCBOR keyHash - VotingVoteAlreadyCast keyHash -> - encodeListLen 2 - <> encCBOR (3 :: Word8) - <> encCBOR keyHash - -instance DecCBOR Error where - decCBOR = do - len <- decodeListLen - let checkSize :: Int -> Decoder s () - checkSize size = matchSize "Voting.Error" size len - tag <- decodeWord8 - case tag of - 0 -> checkSize 1 >> pure VotingInvalidSignature - 1 -> checkSize 2 >> VotingProposalNotRegistered <$> decCBOR - 2 -> checkSize 2 >> VotingVoterNotDelegate <$> decCBOR - 3 -> checkSize 2 >> VotingVoteAlreadyCast <$> decCBOR - _ -> cborError $ DecoderErrorUnknownTag "Voting.Error" tag - --- | Register a vote and confirm the corresponding proposal if it passes the --- voting threshold. This corresponds to the @UPVOTE@ rules in the spec. -registerVoteWithConfirmation :: - MonadError Error m => - Annotated ProtocolMagicId ByteString -> - Environment -> - State -> - AVote ByteString -> - m State -registerVoteWithConfirmation pm votingEnv vs vote = do - -- Register the vote ignoring proposal confirmation - votes' <- registerVote pm voteRegEnv votes vote - - -- Confirm the proposal if it passes the threshold and isn't confirmed - let confirmedProposals' = - if pastThreshold votes' && not (isConfirmed upId) - then M.insert upId slot confirmedProposals - else confirmedProposals - - -- Return the new state with additional vote and maybe confirmation - pure - $ State - { vsVotes = votes' - , vsConfirmedProposals = confirmedProposals' - } - where - Environment slot threshold voteRegEnv = votingEnv - State votes confirmedProposals = vs - - pastThreshold :: RegisteredVotes -> Bool - pastThreshold votes' = - length (M.findWithDefault Set.empty upId votes') >= threshold - - isConfirmed = flip M.member confirmedProposals - - upId = proposalId vote - --- | Validate and register a vote --- --- We check that --- --- 1) The vote is for a registered proposal --- 2) There is at least one genesis key delegating to the voter --- 3) The signature is valid --- 4) The vote has not already been cast --- --- This corresponds to the `ADDVOTE` rule in the spec. -registerVote :: - MonadError Error m => - Annotated ProtocolMagicId ByteString -> - RegistrationEnvironment -> - RegisteredVotes -> - AVote ByteString -> - m RegisteredVotes -registerVote pm vre votes vote = do - -- Check that the proposal being voted on is registered - (upId `Set.member` registeredProposals) - `orThrowError` VotingProposalNotRegistered upId - - -- Check that the set of genesis keys is not empty - delegator <- case Delegation.lookupR voter delegationMap of - Nothing -> throwError (VotingVoterNotDelegate voter) - Just d -> pure d - - -- Check that the vote has not already been cast - case M.lookup upId votes of - Just khs | delegator `Set.member` khs -> throwError (VotingVoteAlreadyCast delegator) - _ -> pure () - - -- Check that the signature is valid - verifySignatureDecoded pm SignUSVote voterVK signedBytes signature - `orThrowError` VotingInvalidSignature - - -- Add the delegators to the set of votes for this proposal - pure $ M.insertWith Set.union upId (Set.singleton delegator) votes - where - RegistrationEnvironment registeredProposals delegationMap = vre - - UnsafeVote {voterVK, signature} = vote - - voter = hashKey voterVK - - upId = proposalId vote - - signedBytes = recoverSignedBytes vote diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/Update/Vote.hs b/eras/byron/ledger/impl/src/Cardano/Chain/Update/Vote.hs deleted file mode 100644 index 59515d90f2e..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/Update/Vote.hs +++ /dev/null @@ -1,260 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveFunctor #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Cardano.Chain.Update.Vote ( - -- * Vote - AVote (..), - Vote, - VoteId, - - -- * Vote Constructors - mkVote, - signVote, - signatureForVote, - unsafeVote, - - -- * Vote Accessors - proposalId, - recoverVoteId, - - -- * Vote Binary Serialization - recoverSignedBytes, - - -- * Vote Formatting - formatVoteShort, - shortVoteF, -) -where - -import Cardano.Chain.Common (addressHash) -import Cardano.Chain.Update.Proposal (Proposal, UpId) -import Cardano.Crypto ( - Hash, - ProtocolMagicId, - SafeSigner, - SignTag (SignUSVote), - Signature, - SigningKey, - VerificationKey, - hashDecoded, - safeSign, - safeToVerification, - shortHashF, - sign, - toVerification, - ) -import Cardano.Ledger.Binary ( - Annotated (Annotated, unAnnotated), - ByteSpan, - DecCBOR (..), - Decoded (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - annotatedDecoder, - decCBORAnnotated, - encodeListLen, - enforceSize, - fromByronCBOR, - toByronCBOR, - ) -import qualified Cardano.Ledger.Binary as Binary (annotation) -import Cardano.Prelude -import Data.Aeson (ToJSON) -import Data.Text.Lazy.Builder (Builder) -import Formatting (Format, bprint, build, later) -import qualified Formatting.Buildable as B - --------------------------------------------------------------------------------- --- Vote --------------------------------------------------------------------------------- - --- | An update proposal vote identifier (the 'Hash' of a 'Vote'). -type VoteId = Hash Vote - -type Vote = AVote () - --- | Vote for update proposal --- --- Invariant: The signature is valid. -data AVote a = UnsafeVote - { voterVK :: !VerificationKey - -- ^ Verification key casting the vote - , aProposalId :: !(Annotated UpId a) - -- ^ Proposal to which this vote applies - , signature :: !(Signature (UpId, Bool)) - -- ^ Signature of (Update proposal, Approval/rejection bit) - , annotation :: !a - } - deriving (Eq, Show, Generic, Functor) - deriving anyclass (NFData) - --- Used for debugging purposes only -instance ToJSON a => ToJSON (AVote a) - --------------------------------------------------------------------------------- --- Vote Constructors --------------------------------------------------------------------------------- - --- | A safe constructor for 'UnsafeVote' -mkVote :: - ProtocolMagicId -> - -- | The voter - SigningKey -> - -- | Proposal which is voted for - UpId -> - -- | Approval/rejection bit - Bool -> - Vote -mkVote pm sk upId decision = - UnsafeVote - (toVerification sk) - (Annotated upId ()) - (sign pm SignUSVote sk (upId, decision)) - () - --- | Create a vote for the given update proposal id, signing it with the --- provided safe signer. -signVote :: - ProtocolMagicId -> - -- | Proposal which is voted for - UpId -> - -- | Approval/rejection bit - Bool -> - -- | The voter - SafeSigner -> - Vote -signVote protocolMagicId upId decision safeSigner = - unsafeVote - (safeToVerification safeSigner) - upId - (signatureForVote protocolMagicId upId decision safeSigner) - -signatureForVote :: - ProtocolMagicId -> - UpId -> - Bool -> - SafeSigner -> - Signature (UpId, Bool) -signatureForVote protocolMagicId upId decision safeSigner = - safeSign protocolMagicId SignUSVote safeSigner (upId, decision) - --- | Create a vote for the given update proposal id using the provided --- signature. --- --- For the meaning of the parameters see 'signVote'. -unsafeVote :: - VerificationKey -> - UpId -> - Signature (UpId, Bool) -> - Vote -unsafeVote vk upId voteSignature = - UnsafeVote vk (Annotated upId ()) voteSignature () - --------------------------------------------------------------------------------- --- Vote Accessors --------------------------------------------------------------------------------- - -proposalId :: AVote a -> UpId -proposalId = unAnnotated . aProposalId - -recoverVoteId :: AVote ByteString -> VoteId -recoverVoteId = hashDecoded - --------------------------------------------------------------------------------- --- Vote Binary Serialization --------------------------------------------------------------------------------- - -instance ToCBOR Vote where - toCBOR = toByronCBOR - -instance FromCBOR Vote where - fromCBOR = fromByronCBOR - -instance EncCBOR Vote where - encCBOR uv = - encodeListLen 4 - <> encCBOR (voterVK uv) - <> encCBOR (proposalId uv) - -- We encode @True@ here because we removed the decision bit. This is safe - -- because we know that all @Vote@s on mainnet use this encoding and any - -- changes to the encoding in our implementation will be picked up by - -- golden tests. - <> encCBOR True - <> encCBOR (signature uv) - -instance DecCBOR Vote where - decCBOR = void <$> decCBOR @(AVote ByteSpan) - -instance FromCBOR (AVote ByteSpan) where - fromCBOR = fromByronCBOR - -instance DecCBOR (AVote ByteSpan) where - decCBOR = do - Annotated (voterVK, aProposalId, signature) byteSpan <- annotatedDecoder $ do - enforceSize "Vote" 4 - voterVK <- decCBOR - aProposalId <- decCBORAnnotated - -- Drop the decision bit that previously allowed negative voting - void $ decCBOR @Bool - signature <- decCBOR - pure (voterVK, aProposalId, signature) - pure $ UnsafeVote voterVK aProposalId signature byteSpan - -instance Decoded (AVote ByteString) where - type BaseType (AVote ByteString) = Vote - recoverBytes = annotation - -recoverSignedBytes :: AVote ByteString -> Annotated (UpId, Bool) ByteString -recoverSignedBytes v = - let bytes = - mconcat - [ "\130" - , -- The byte above is part of the signed payload, but is not part of the - -- transmitted payload - Binary.annotation $ aProposalId v - , "\245" - -- The byte above is the canonical encoding of @True@, which we hardcode, - -- because we removed the possibility of negative voting - ] - in Annotated (proposalId v, True) bytes - --------------------------------------------------------------------------------- --- Vote Formatting --------------------------------------------------------------------------------- - -instance B.Buildable (AVote a) where - build uv = - bprint - ( "Update Vote { voter: " - . build - . ", proposal id: " - . build - . " }" - ) - (addressHash $ voterVK uv) - (proposalId uv) - -instance B.Buildable (Proposal, [Vote]) where - build (up, votes) = - bprint (build . " with votes: " . listJson) up (map formatVoteShort votes) - --- | Format 'Vote' compactly -formatVoteShort :: Vote -> Builder -formatVoteShort uv = - bprint - ("(" . shortHashF . " " . shortHashF . ")") - (addressHash $ voterVK uv) - (proposalId uv) - --- | Formatter for 'Vote' which displays it compactly -shortVoteF :: Format r (Vote -> r) -shortVoteF = later formatVoteShort diff --git a/eras/byron/ledger/impl/src/Cardano/Chain/ValidationMode.hs b/eras/byron/ledger/impl/src/Cardano/Chain/ValidationMode.hs deleted file mode 100644 index 1948c3d6d55..00000000000 --- a/eras/byron/ledger/impl/src/Cardano/Chain/ValidationMode.hs +++ /dev/null @@ -1,108 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} - -module Cardano.Chain.ValidationMode ( - ValidationMode (..), - fromBlockValidationMode, - orThrowErrorInBlockValidationMode, - askBlockValidationMode, - askTxValidationMode, - whenBlockValidation, - whenTxValidation, - unlessNoTxValidation, - wrapErrorWithValidationMode, -) -where - -import Cardano.Chain.Block.ValidationMode ( - BlockValidationMode (..), - toTxValidationMode, - ) -import Cardano.Chain.UTxO.ValidationMode (TxValidationMode (..)) -import Cardano.Prelude - --------------------------------------------------------------------------------- --- ValidationMode --------------------------------------------------------------------------------- - -data ValidationMode = ValidationMode - { blockValidationMode :: !BlockValidationMode - , txValidationMode :: !TxValidationMode - } - deriving (Show) - --- | Helper function which accepts a 'BlockValidationMode', constructs a --- sensible 'TxValidationMode' based on that, and constructs a --- 'ValidationMode' -fromBlockValidationMode :: BlockValidationMode -> ValidationMode -fromBlockValidationMode bvm = - ValidationMode - { blockValidationMode = bvm - , txValidationMode = toTxValidationMode bvm - } - -orThrowErrorInBlockValidationMode :: - (MonadError e m, MonadReader ValidationMode m) => - Bool -> - e -> - m () -orThrowErrorInBlockValidationMode condition err = do - bvm <- askBlockValidationMode - unless (bvm == NoBlockValidation || condition) (throwError err) - -infix 1 `orThrowErrorInBlockValidationMode` - --------------------------------------------------------------------------------- --- ValidationMode Helpers --------------------------------------------------------------------------------- - -askBlockValidationMode :: - MonadReader ValidationMode m => - m BlockValidationMode -askBlockValidationMode = blockValidationMode <$> ask - -askTxValidationMode :: - MonadReader ValidationMode m => - m TxValidationMode -askTxValidationMode = txValidationMode <$> ask - --- | Perform an action only when in the 'BlockValidation' mode. Otherwise, do --- nothing. -whenBlockValidation :: - (MonadError err m, MonadReader ValidationMode m) => - m () -> - m () -whenBlockValidation action = do - bvmode <- askBlockValidationMode - when (bvmode == BlockValidation) action - --- | Perform an action only when in the 'TxValidation' mode. Otherwise, do --- nothing. -whenTxValidation :: - (MonadError err m, MonadReader ValidationMode m) => - m () -> - m () -whenTxValidation action = do - tvmode <- askTxValidationMode - when (tvmode == TxValidation) action - --- | Perform an action unless in the 'NoTxValidation' mode. -unlessNoTxValidation :: - (MonadError err m, MonadReader ValidationMode m) => - m () -> - m () -unlessNoTxValidation action = do - tvmode <- askTxValidationMode - unless (tvmode == NoTxValidation) action - -wrapErrorWithValidationMode :: - (MonadError e' m, MonadReader ValidationMode m) => - ReaderT ValidationMode (Either e) a -> - (e -> e') -> - m a -wrapErrorWithValidationMode rt wrapper = do - vMode <- ask - case runReaderT rt vMode of - Left err -> throwError $ wrapper err - Right x -> pure x - -infix 1 `wrapErrorWithValidationMode` diff --git a/eras/byron/ledger/impl/test/.ghcid b/eras/byron/ledger/impl/test/.ghcid deleted file mode 100644 index b41f780f6ce..00000000000 --- a/eras/byron/ledger/impl/test/.ghcid +++ /dev/null @@ -1 +0,0 @@ ---command="cabal repl --repl-options='-isrc -fwarn-unused-binds -fwarn-unused-imports -fno-code -fobject-code -g2 -fno-break-on-exception -fno-break-on-error -ferror-spans -j -Wno-unused-packages'" --clear --no-height-limit --reverse-errors --reload=../../../../../ --outputfile=/tmp/cardano-ledger-byron-test-ghcid.txt \ No newline at end of file diff --git a/eras/byron/ledger/impl/test/CHANGELOG.md b/eras/byron/ledger/impl/test/CHANGELOG.md deleted file mode 100644 index 93cbae7c3bc..00000000000 --- a/eras/byron/ledger/impl/test/CHANGELOG.md +++ /dev/null @@ -1,29 +0,0 @@ -# Version history for `cardano-ledger-byron-test` - -## 1.5.1.1 - -* - -## 1.5.1.0 - -* - -## 1.5.0.1 - -* - -## 1.5.0.0 - -* - -## 1.4.2 - -* - -## 1.4.1 - -* - -## 1.3.0 - -* diff --git a/eras/byron/ledger/impl/test/GetDataFileName.hs b/eras/byron/ledger/impl/test/GetDataFileName.hs deleted file mode 100644 index debdcf9a2d1..00000000000 --- a/eras/byron/ledger/impl/test/GetDataFileName.hs +++ /dev/null @@ -1,30 +0,0 @@ -{-# LANGUAGE CPP #-} - -module GetDataFileName ( - withTestFileProperty, - (<:<), -) -where - -import Control.Monad.IO.Class -import Hedgehog.Internal.Property -import Prelude - -#ifdef CARDANO_LEDGER_BYRON_TEST -import Paths_cardano_ledger_byron_test (getDataFileName) -#else -import Paths_cardano_ledger_byron (getDataFileName) -#endif - --- | This contraption is necessary because test modules in the folder are used --- in two different packages, but the file paths for test files are relative to --- the package itself, which has to accounted for. -withTestFileProperty :: FilePath -> (FilePath -> Property) -> Property -withTestFileProperty fp mkProperty = Property config $ do - actualFilePath <- liftIO $ getDataFileName fp - propertyTest $ mkProperty actualFilePath - where - config = propertyConfig $ mkProperty "" - -(<:<) :: (FilePath -> Property) -> FilePath -> Property -(<:<) = flip withTestFileProperty diff --git a/eras/byron/ledger/impl/test/NormalFormTest.hs b/eras/byron/ledger/impl/test/NormalFormTest.hs deleted file mode 100644 index f5c2bf37c8a..00000000000 --- a/eras/byron/ledger/impl/test/NormalFormTest.hs +++ /dev/null @@ -1,28 +0,0 @@ --- | --- This module basically just runs the mainnet epoch validation tests from --- "Test.Cardano.Chain.Block.Validation" but provided a 'ShouldAssertNF' value of --- 'AssertNF'. --- --- We've created a separate test executable for this as, in our typical CI jobs, --- we utilize @hpc@ (i.e. building with @ghc -fhpc@ or @stack --coverage@) for --- providing code coverage. @hpc@ appears to introduce thunks around our Haskell --- expressions for its program coverage measurement purposes which prevents us --- from accurately determining whether a given expression is in normal form. As a --- result, we have another CI job which will build and run this test executable --- without @hpc@. -module Main ( - main, -) -where - -import Cardano.Prelude -import System.IO.Silently (hSilence) -import qualified Test.Cardano.Chain.Block.Validation -import Test.Options (ShouldAssertNF (..), mainWithTestScenario, tsGroupToTree) - -main :: IO () -main = - hSilence [stderr] - . mainWithTestScenario - . tsGroupToTree - $ Test.Cardano.Chain.Block.Validation.tests AssertNF diff --git a/eras/byron/ledger/impl/test/Setup.hs b/eras/byron/ledger/impl/test/Setup.hs deleted file mode 100644 index e8ef27dbba9..00000000000 --- a/eras/byron/ledger/impl/test/Setup.hs +++ /dev/null @@ -1,3 +0,0 @@ -import Distribution.Simple - -main = defaultMain diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Block/CBOR.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Block/CBOR.hs deleted file mode 100644 index efa9a5a3e68..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Block/CBOR.hs +++ /dev/null @@ -1,338 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TemplateHaskell #-} -{-# OPTIONS_GHC -Wno-incomplete-uni-patterns #-} - -module Test.Cardano.Chain.Block.CBOR ( - tests, - exampleBlockSignature, - exampleBody, - exampleHeader, - exampleProof, - exampleToSign, -) -where - -import Cardano.Chain.Block ( - ABlockSignature (..), - ABoundaryBlock (boundaryBlockLength), - Block, - BlockSignature, - Body, - Header, - HeaderHash, - Proof (..), - ToSign (..), - decCBORABOBBlock, - decCBORABoundaryBlock, - decCBORABoundaryHeader, - decCBORBoundaryConsensusData, - decCBORHeader, - decCBORHeaderToHash, - dropBoundaryBody, - encCBORABOBBlock, - encCBORABoundaryBlock, - encCBORHeader, - encCBORHeaderToHash, - mkHeaderExplicit, - pattern Body, - ) -import qualified Cardano.Chain.Delegation as Delegation -import Cardano.Chain.Slotting ( - EpochNumber (..), - EpochSlots (EpochSlots), - WithEpochSlots (WithEpochSlots), - unWithEpochSlots, - ) -import Cardano.Chain.Ssc (SscPayload (..), SscProof (..)) -import Cardano.Crypto ( - ProtocolMagicId (..), - SignTag (..), - abstractHash, - noPassSafeSigner, - serializeCborHash, - sign, - toVerification, - ) -import Cardano.Ledger.Binary (byronProtVer, decodeFullDecoder, dropBytes, serialize) -import Cardano.Prelude -import Data.Coerce (coerce) -import Data.Maybe (fromJust) -import GetDataFileName ((<:<)) -import Hedgehog (Property) -import qualified Hedgehog as H -import Test.Cardano.Chain.Block.Gen -import Test.Cardano.Chain.Common.Example (exampleChainDifficulty) -import Test.Cardano.Chain.Delegation.Example (exampleCertificates) -import Test.Cardano.Chain.Slotting.Example (exampleEpochAndSlotCount, exampleSlotNumber) -import Test.Cardano.Chain.Slotting.Gen (feedPMEpochSlots, genWithEpochSlots) -import Test.Cardano.Chain.UTxO.Example (exampleTxPayload, exampleTxProof) -import qualified Test.Cardano.Chain.Update.Example as Update -import Test.Cardano.Crypto.Example (exampleSigningKeys) -import Test.Cardano.Crypto.Gen (feedPM) -import Test.Cardano.Ledger.Binary.Vintage.Helpers.GoldenRoundTrip ( - deprecatedGoldenDecode, - goldenTestCBOR, - goldenTestCBORExplicit, - roundTripsCBORBuildable, - roundTripsCBORShow, - ) -import Test.Cardano.Prelude -import Test.Options (TSGroup, TSProperty, concatTSGroups, eachOfTS) - --------------------------------------------------------------------------------- --- Header --------------------------------------------------------------------------------- - --- | Number of slots-per-epoch to be used throughout the examples in this --- module. -exampleEs :: EpochSlots -exampleEs = EpochSlots 50 - -goldenHeader :: Property -goldenHeader = - goldenTestCBORExplicit - "Header" - (encCBORHeader exampleEs) - (decCBORHeader exampleEs) - exampleHeader - <:< "golden/cbor/block/Header" - --- | Round-trip test the backwards compatible header encoding/decoding functions -ts_roundTripHeaderCompat :: TSProperty -ts_roundTripHeaderCompat = - eachOfTS - 300 - (feedPMEpochSlots $ genWithEpochSlots genHeader) - roundTripsHeaderCompat - where - roundTripsHeaderCompat :: WithEpochSlots Header -> H.PropertyT IO () - roundTripsHeaderCompat esh@(WithEpochSlots es _) = - trippingBuildable - esh - (serialize byronProtVer . encCBORHeaderToHash es . unWithEpochSlots) - ( fmap (WithEpochSlots es . fromJust) - . decodeFullDecoder byronProtVer "Header" (decCBORHeaderToHash es) - ) - --------------------------------------------------------------------------------- --- Block --------------------------------------------------------------------------------- - --- | Round-trip test the backwards compatible block encoding/decoding functions -ts_roundTripBlockCompat :: TSProperty -ts_roundTripBlockCompat = - eachOfTS - 300 - (feedPM genBlockWithEpochSlots) - roundTripsBlockCompat - where - roundTripsBlockCompat :: WithEpochSlots Block -> H.PropertyT IO () - roundTripsBlockCompat esb@(WithEpochSlots es _) = - trippingBuildable - esb - (serialize byronProtVer . encCBORABOBBlock es . unWithEpochSlots) - ( fmap (WithEpochSlots es . fromJust) - . decodeFullDecoder byronProtVer "Block" (decCBORABOBBlock es) - ) - --------------------------------------------------------------------------------- --- BlockSignature --------------------------------------------------------------------------------- - -goldenBlockSignature :: Property -goldenBlockSignature = - goldenTestCBOR exampleBlockSignature <:< "golden/cbor/block/BlockSignature" - -ts_roundTripBlockSignatureCBOR :: TSProperty -ts_roundTripBlockSignatureCBOR = - eachOfTS 300 (feedPMEpochSlots genBlockSignature) roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- BoundaryBlockHeader --------------------------------------------------------------------------------- - -goldenDeprecatedBoundaryBlockHeader :: Property -goldenDeprecatedBoundaryBlockHeader = - deprecatedGoldenDecode - "BoundaryBlockHeader" - (void decCBORABoundaryHeader) - <:< "golden/cbor/block/BoundaryBlockHeader" - -ts_roundTripBoundaryBlock :: TSProperty -ts_roundTripBoundaryBlock = - eachOfTS - 300 - (feedPM genBVDWithPM) - roundTripsBVD - where - -- We ignore the size of the BVD here, since calculating it is annoying. - roundTripsBVD :: (ProtocolMagicId, ABoundaryBlock ()) -> H.PropertyT IO () - roundTripsBVD (pm, bvd) = - trippingBuildable - bvd - (serialize byronProtVer . encCBORABoundaryBlock pm) - ( fmap (dropSize . fmap (const ())) - <$> decodeFullDecoder byronProtVer "BoundaryBlock" decCBORABoundaryBlock - ) - - genBVDWithPM :: ProtocolMagicId -> H.Gen (ProtocolMagicId, ABoundaryBlock ()) - genBVDWithPM pm = (,) <$> pure pm <*> genBoundaryBlock - - dropSize :: ABoundaryBlock a -> ABoundaryBlock a - dropSize bvd = bvd {boundaryBlockLength = 0} - --------------------------------------------------------------------------------- --- BoundaryBody --------------------------------------------------------------------------------- - -goldenDeprecatedBoundaryBody :: Property -goldenDeprecatedBoundaryBody = - deprecatedGoldenDecode - "BoundaryBody" - dropBoundaryBody - <:< "golden/cbor/block/BoundaryBody" - --------------------------------------------------------------------------------- --- BoundaryConsensusData --------------------------------------------------------------------------------- - -goldenDeprecatedBoundaryConsensusData :: Property -goldenDeprecatedBoundaryConsensusData = - deprecatedGoldenDecode - "BoundaryConsensusData" - (void decCBORBoundaryConsensusData) - <:< "golden/cbor/block/BoundaryConsensusData" - --------------------------------------------------------------------------------- --- HeaderHash --------------------------------------------------------------------------------- - -goldenHeaderHash :: Property -goldenHeaderHash = - goldenTestCBOR exampleHeaderHash <:< "golden/cbor/block/HeaderHash" - -ts_roundTripHeaderHashCBOR :: TSProperty -ts_roundTripHeaderHashCBOR = - eachOfTS 1000 genHeaderHash roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- BoundaryProof --------------------------------------------------------------------------------- - -goldenDeprecatedBoundaryProof :: Property -goldenDeprecatedBoundaryProof = - deprecatedGoldenDecode - "BoundaryProof" - dropBytes - <:< "golden/cbor/block/BoundaryProof" - --------------------------------------------------------------------------------- --- Body --------------------------------------------------------------------------------- - -goldenBody :: Property -goldenBody = goldenTestCBOR exampleBody <:< "golden/cbor/block/Body" - -ts_roundTripBodyCBOR :: TSProperty -ts_roundTripBodyCBOR = eachOfTS 20 (feedPM genBody) roundTripsCBORShow - --------------------------------------------------------------------------------- --- Proof --------------------------------------------------------------------------------- - -goldenProof :: Property -goldenProof = goldenTestCBOR exampleProof <:< "golden/cbor/block/Proof" - -ts_roundTripProofCBOR :: TSProperty -ts_roundTripProofCBOR = eachOfTS 20 (feedPM genProof) roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- ToSign --------------------------------------------------------------------------------- - -goldenToSign :: Property -goldenToSign = goldenTestCBOR exampleToSign <:< "golden/cbor/block/ToSign" - -ts_roundTripToSignCBOR :: TSProperty -ts_roundTripToSignCBOR = - eachOfTS 20 (feedPMEpochSlots genToSign) roundTripsCBORShow - --------------------------------------------------------------------------------- --- Example golden datatypes --------------------------------------------------------------------------------- - -exampleHeader :: Header -exampleHeader = - mkHeaderExplicit - (ProtocolMagicId 7) - exampleHeaderHash - exampleChainDifficulty - exampleEs - (exampleSlotNumber exampleEs) - delegateSk - certificate - exampleBody - Update.exampleProtocolVersion - Update.exampleSoftwareVersion - where - pm = ProtocolMagicId 7 - [delegateSk, issuerSk] = exampleSigningKeys 5 2 - certificate = - Delegation.signCertificate - pm - (toVerification delegateSk) - (EpochNumber 5) - (noPassSafeSigner issuerSk) - -exampleBlockSignature :: BlockSignature -exampleBlockSignature = ABlockSignature cert sig - where - cert = - Delegation.signCertificate - pm - (toVerification delegateSK) - (EpochNumber 5) - (noPassSafeSigner issuerSK) - - sig = sign pm (SignBlock (toVerification issuerSK)) delegateSK exampleToSign - - [delegateSK, issuerSK] = exampleSigningKeys 5 2 - pm = ProtocolMagicId 7 - -exampleProof :: Proof -exampleProof = - Proof - exampleTxProof - SscProof - (abstractHash dp) - Update.exampleProof - where - dp = Delegation.unsafePayload (take 4 exampleCertificates) - -exampleHeaderHash :: HeaderHash -exampleHeaderHash = coerce $ serializeCborHash ("HeaderHash" :: Text) - -exampleBody :: Body -exampleBody = Body exampleTxPayload SscPayload dp Update.examplePayload - where - dp = Delegation.unsafePayload (take 4 exampleCertificates) - -exampleToSign :: ToSign -exampleToSign = - ToSign - exampleHeaderHash - exampleProof - exampleEpochAndSlotCount - exampleChainDifficulty - Update.exampleProtocolVersion - Update.exampleSoftwareVersion - ------------------------------------------------------------------------ --- Main test export ------------------------------------------------------------------------ - -tests :: TSGroup -tests = concatTSGroups [const $$discoverGolden, $$discoverRoundTripArg] diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Block/Gen.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Block/Gen.hs deleted file mode 100644 index d3c8e981896..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Block/Gen.hs +++ /dev/null @@ -1,251 +0,0 @@ -{-# LANGUAGE PatternSynonyms #-} - -module Test.Cardano.Chain.Block.Gen ( - genBlockSignature, - genHeaderHash, - genHeader, - genBody, - genProof, - genToSign, - genBlock, - genBlockWithEpochSlots, - genBoundaryBlock, - genBoundaryHeader, - genABlockOrBoundaryHdr, -) -where - -import Cardano.Chain.Block ( - ABlockOrBoundaryHdr (..), - ABlockSignature (..), - ABoundaryBlock (..), - ABoundaryBody (..), - ABoundaryHeader (..), - AHeader, - Block, - BlockSignature, - Body, - Header, - HeaderHash, - Proof (..), - ToSign (..), - decCBORABoundaryHeader, - decCBORAHeader, - encCBORABoundaryHeader, - encCBORHeader, - hashHeader, - mkABoundaryHeader, - mkBlockExplicit, - mkHeaderExplicit, - pattern Body, - ) -import Cardano.Chain.Byron.API (reAnnotateUsing) -import Cardano.Chain.Delegation (signCertificate) -import Cardano.Chain.Genesis (GenesisHash (..)) -import Cardano.Chain.Slotting ( - EpochNumber (..), - EpochSlots, - WithEpochSlots (WithEpochSlots), - ) -import Cardano.Chain.Ssc (SscPayload (..), SscProof (..)) -import Cardano.Crypto ( - ProtocolMagicId, - SignTag (SignBlock), - noPassSafeSigner, - safeToVerification, - sign, - toVerification, - ) -import Cardano.Prelude -import Data.Coerce (coerce) -import Hedgehog (Gen) -import qualified Hedgehog.Gen as Gen -import qualified Hedgehog.Range as Range -import Test.Cardano.Chain.Common.Gen ( - genChainDifficulty, - ) -import qualified Test.Cardano.Chain.Delegation.Gen as Delegation -import Test.Cardano.Chain.Slotting.Gen ( - genEpochAndSlotCount, - genEpochNumber, - genEpochSlots, - genSlotNumber, - ) -import Test.Cardano.Chain.UTxO.Gen (genTxPayload, genTxProof) -import qualified Test.Cardano.Chain.Update.Gen as Update -import Test.Cardano.Crypto.Gen ( - genAbstractHash, - genSafeSigner, - genSigningKey, - genTextHash, - ) - -genBlockSignature :: ProtocolMagicId -> EpochSlots -> Gen BlockSignature -genBlockSignature pm epochSlots = - mkBlockSignature - <$> genSafeSigner - <*> genSigningKey - <*> genEpochNumber - <*> genToSign pm epochSlots - where - mkBlockSignature issuerSafeSigner delegateSK epoch toSign = - let cert = - signCertificate pm (toVerification delegateSK) epoch issuerSafeSigner - issuerVK = safeToVerification issuerSafeSigner - sig = sign pm (SignBlock issuerVK) delegateSK toSign - in ABlockSignature cert sig - -genHeaderHash :: Gen HeaderHash -genHeaderHash = coerce <$> genTextHash - -genBody :: ProtocolMagicId -> Gen Body -genBody pm = - Body - <$> genTxPayload pm - <*> pure SscPayload - <*> Delegation.genPayload pm - <*> Update.genPayload pm - -genHeader :: ProtocolMagicId -> EpochSlots -> Gen Header -genHeader protocolMagicId epochSlots = - mkHeaderExplicit' - <$> genHeaderHash - <*> genChainDifficulty - <*> genSlotNumber - <*> genBody protocolMagicId - <*> Update.genProtocolVersion - <*> Update.genSoftwareVersion - <*> genSigningKey - where - mkHeaderExplicit' - headerHash - chainDifficulty - slotNumber - body - protocolVersion - softwareVersion - signingKey = - mkHeaderExplicit - protocolMagicId - headerHash - chainDifficulty - epochSlots - slotNumber - signingKey - ( signCertificate - protocolMagicId - (toVerification signingKey) - (EpochNumber 0) - (noPassSafeSigner signingKey) - ) - body - protocolVersion - softwareVersion - -genProof :: ProtocolMagicId -> Gen Proof -genProof pm = - Proof - <$> genTxProof pm - <*> pure SscProof - <*> genAbstractHash (Delegation.genPayload pm) - <*> Update.genProof pm - -genToSign :: ProtocolMagicId -> EpochSlots -> Gen ToSign -genToSign pm epochSlots = - ToSign - <$> (mkAbstractHash <$> genHeader pm epochSlots) - <*> genProof pm - <*> genEpochAndSlotCount epochSlots - <*> genChainDifficulty - <*> Update.genProtocolVersion - <*> Update.genSoftwareVersion - where - mkAbstractHash :: Header -> HeaderHash - mkAbstractHash = hashHeader epochSlots - -genBlockWithEpochSlots :: ProtocolMagicId -> Gen (WithEpochSlots Block) -genBlockWithEpochSlots pm = do - epochSlots <- genEpochSlots - WithEpochSlots epochSlots <$> genBlock pm epochSlots - -genBlock :: ProtocolMagicId -> EpochSlots -> Gen Block -genBlock protocolMagicId epochSlots = - mkBlockExplicit' - <$> Update.genProtocolVersion - <*> Update.genSoftwareVersion - <*> genHeaderHash - <*> genChainDifficulty - <*> genSlotNumber - <*> genBody protocolMagicId - <*> genSigningKey - where - mkBlockExplicit' - protocolVersion - softwareVersion - headerHash - chainDifficulty - slotNumber - body - signingKey = - mkBlockExplicit - protocolMagicId - protocolVersion - softwareVersion - headerHash - chainDifficulty - epochSlots - slotNumber - signingKey - ( signCertificate - protocolMagicId - (toVerification signingKey) - (EpochNumber 0) - (noPassSafeSigner signingKey) - ) - body - -genBoundaryBlock :: Gen (ABoundaryBlock ()) -genBoundaryBlock = - ABoundaryBlock - <$> pure 0 - <*> genBoundaryHeader - <*> pure (ABoundaryBody ()) - <*> pure () - -genBoundaryHeader :: Gen (ABoundaryHeader ()) -genBoundaryHeader = do - epoch <- Gen.word64 (Range.exponential 0 maxBound) - mkABoundaryHeader - <$> ( if epoch == 0 - then Left . GenesisHash . coerce <$> genTextHash - else - Gen.choice - [ Right <$> genHeaderHash - , Left . GenesisHash . coerce <$> genTextHash - ] - ) - <*> pure epoch - <*> genChainDifficulty - <*> pure () - -genABlockOrBoundaryHdr :: - ProtocolMagicId -> - EpochSlots -> - Gen (ABlockOrBoundaryHdr ByteString) -genABlockOrBoundaryHdr pm es = - Gen.choice - [ ABOBBlockHdr . reAnnotateHdr <$> genHeader pm es - , ABOBBoundaryHdr . reAnnotateBoundaryHdr <$> genBoundaryHeader - ] - where - reAnnotateHdr :: AHeader () -> AHeader ByteString - reAnnotateHdr = - reAnnotateUsing - (encCBORHeader es) - (decCBORAHeader es) - - reAnnotateBoundaryHdr :: ABoundaryHeader () -> ABoundaryHeader ByteString - reAnnotateBoundaryHdr = - reAnnotateUsing - (encCBORABoundaryHeader pm) - decCBORABoundaryHeader diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Block/Model.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Block/Model.hs deleted file mode 100644 index bf766bc0178..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Block/Model.hs +++ /dev/null @@ -1,563 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedLists #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TemplateHaskell #-} -{-# LANGUAGE TupleSections #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - --- | Test module where we check that the block validation implementation --- matches the formal specification. To this end, the strategy is: --- --- 0. generate traces of abstract blocks, which conform to the formal semantics --- of the blockchain layer --- --- 1. elaborate these abstract blocks into concrete blocks --- --- 2. feed the generated sequence of concrete blocks to the block validation --- function, and check that it passes the validation. -module Test.Cardano.Chain.Block.Model ( - tests, - elaborateAndUpdate, - passConcreteValidation, - elaborateBlock, -) -where - -import Byron.Spec.Chain.STS.Block (BlockStats (..)) -import qualified Byron.Spec.Chain.STS.Block as Abstract -import Byron.Spec.Chain.STS.Rule.BBody -import Byron.Spec.Chain.STS.Rule.Chain ( - CHAIN, - isHeaderSizeTooBigFailure, - ) -import qualified Byron.Spec.Ledger.Core as AbstractCore -import Byron.Spec.Ledger.Delegation ( - _dIStateDelegationMap, - ) -import Byron.Spec.Ledger.Update ( - PParams, - UPIEnv, - UPIState, - _maxBkSz, - _maxHdrSz, - ) -import Cardano.Chain.Block ( - ABlock, - BlockValidationMode (..), - ChainValidationError ( - ChainValidationBlockTooLarge, - ChainValidationHeaderTooLarge - ), - ChainValidationState (cvsUtxo), - blockHeader, - blockLength, - cvsUpdateState, - headerLength, - initialChainValidationState, - updateBlock, - ) -import Cardano.Chain.Common (unBlockCount) -import qualified Cardano.Chain.Genesis as Genesis -import Cardano.Chain.Update ( - ProtocolParameters, - ppMaxBlockSize, - ppMaxHeaderSize, - ) -import Cardano.Chain.Update.Validation.Interface (adoptedProtocolParameters) -import Cardano.Chain.ValidationMode ( - ValidationMode, - fromBlockValidationMode, - ) -import Cardano.Prelude hiding (State, state, trace) -import Control.State.Transition ( - Environment, - PredicateFailure, - Signal, - State, - TRC (TRC), - applySTS, - ) -import qualified Data.Set as Set -import Data.String (fromString) -import Hedgehog ( - Gen, - MonadTest, - PropertyT, - TestLimit, - assert, - collect, - cover, - evalEither, - failure, - footnote, - forAll, - label, - property, - success, - ) -import qualified Hedgehog.Gen as Gen -import qualified Hedgehog.Range as Range -import Lens.Micro ((^.)) -import Test.Cardano.Chain.Elaboration.Block ( - AbstractToConcreteIdMaps, - abEnvToCfg, - elaborateBS, - rcDCert, - transactionIds, - ) -import Test.Cardano.Chain.Elaboration.Keys (elaborateVKeyGenesisHash) -import Test.Cardano.Chain.UTxO.Model (elaborateInitialUTxO) -import Test.Cardano.Prelude -import Test.Control.State.Transition.Generator ( - SignalGenerator, - classifyTraceLength, - invalidTrace, - ofLengthAtLeast, - trace, - ) -import qualified Test.Control.State.Transition.Invalid.Trace as Invalid.Trace -import Test.Control.State.Transition.Trace ( - Trace, - TraceOrder (NewestFirst, OldestFirst), - extractValues, - lastSignal, - lastState, - preStatesAndSignals, - traceEnv, - traceInit, - traceSignals, - _traceEnv, - ) -import Test.Options (TSGroup, TSProperty, withTestsTS) -import Prelude (String) - -tests :: TSGroup -tests = $$discoverPropArg - --- | Every abstract chain that was generated according to the inference rules, --- after being elaborated must be validated by the concrete block validator. -ts_prop_generatedChainsAreValidated :: TSProperty -ts_prop_generatedChainsAreValidated = - withTestsTS 300 - $ property - $ do - let (traceLength, step) = (200 :: Word64, 10 :: Word64) - tr <- forAll $ trace @CHAIN () traceLength - classifyTraceLength tr traceLength step - classifyBlockStats - $ Abstract.chainBlockStats - $ map Abstract.blockStats (traceSignals OldestFirst tr) - printAdditionalInfoOnFailure tr - passConcreteValidation tr - where - printAdditionalInfoOnFailure :: MonadTest m => Trace CHAIN -> m () - printAdditionalInfoOnFailure tr = - footnote $ "Allowed delegators hashes: " ++ show allowedDelegatorHashes - where - allowedDelegatorHashes = elaborateVKeyGenesisHash <$> Set.toList allowedDelegators - (_, _, allowedDelegators, _, _) = _traceEnv tr - -classifyBlockStats :: - Maybe (BlockStats, BlockStats, BlockStats) -> - PropertyT IO () -classifyBlockStats Nothing = return () -classifyBlockStats (Just (sMin, sMax, sAvg)) = do - classify' "min # tx" sMin Abstract.blockStatsUtxo - classify' "max # tx" sMax Abstract.blockStatsUtxo - classify' "avg # tx" sAvg Abstract.blockStatsUtxo - - classify' "min # dcert" sMin Abstract.blockStatsDCerts - classify' "max # dcert" sMax Abstract.blockStatsDCerts - classify' "avg # dcert" sAvg Abstract.blockStatsDCerts - - classify' "min # votes" sMin Abstract.blockStatsUpdVotes - classify' "max # votes" sMax Abstract.blockStatsUpdVotes - classify' "avg # votes" sAvg Abstract.blockStatsUpdVotes - - classify' "min # prop" sMin Abstract.blockStatsUpdProp - classify' "max # prop" sMax Abstract.blockStatsUpdProp - classify' "avg # prop" sAvg Abstract.blockStatsUpdProp - where - classify' :: String -> BlockStats -> (BlockStats -> Word) -> PropertyT IO () - classify' l stats f - | f stats == 0 = label (fromString (l ++ " == 0")) - | f stats == 1 = label (fromString (l ++ " == 1")) - | otherwise = label (fromString (l ++ " > 1")) - -passConcreteValidation :: MonadTest m => Trace CHAIN -> m () -passConcreteValidation tr = void $ evalEither result - where - ValidationOutput {result} = applyTrace tr - --- | Elaborate an abstract signal into a concrete one, and apply the validators --- to the elaborated signal and given concrete state. If the signal was --- validated, return the next state. Otherwise return an error. -elaborateAndUpdate :: - Genesis.Config -> - (ChainValidationState, AbstractToConcreteIdMaps) -> - (State CHAIN, Abstract.Block) -> - Either - ChainValidationError - (ChainValidationState, AbstractToConcreteIdMaps) -elaborateAndUpdate config (cvs, abstractToConcreteIdMaps) (ast, ab) = - (,abstractToConcreteIdMaps') <$> runReaderT (updateBlock config cvs concreteBlock) vMode - where - (concreteBlock, abstractToConcreteIdMaps') = elaborateBS abstractToConcreteIdMaps config dCert cvs ab - - dCert = rcDCert (ab ^. Abstract.bHeader . Abstract.bhIssuer) stableAfter ast - - stableAfter = AbstractCore.BlockCount $ unBlockCount $ Genesis.configK config - - vMode :: ValidationMode - vMode = fromBlockValidationMode BlockValidation - -elaborateBlock :: - Genesis.Config -> - ChainValidationState -> - AbstractToConcreteIdMaps -> - State CHAIN -> - Abstract.Block -> - ABlock ByteString -elaborateBlock - config - chainValidationState - abstractToConcreteIdMaps - abstractState - abstractBlock = concreteBlock - where - (concreteBlock, _) = - elaborateBS - abstractToConcreteIdMaps - config - dCert - chainValidationState - abstractBlock - where - dCert = - rcDCert - (abstractBlock ^. Abstract.bHeader . Abstract.bhIssuer) - stableAfter - abstractState - where - stableAfter = - AbstractCore.BlockCount - $ unBlockCount - $ Genesis.configK config - -classifyTransactions :: Trace CHAIN -> PropertyT IO () -classifyTransactions = - collect - . sum - . fmap (length . Abstract._bUtxo . Abstract._bBody) - . traceSignals NewestFirst - --- TODO: add coverage testing for delegation. --- --- TODO: we could establish a mapping between concrete and abstract errors. --- --- TODO: we want to check that the concrete errors are included in --- the abstract ones. Currently the concrete implementation --- short-circuits on the first failure, that's why we can only --- check inclusion at the moment. To make sure we cover the errors --- that can arise in the concrete implementation we need to make --- sure that the invalid generators cover a good deal of abstract --- errors permutations. So for instance, given abstract errors @X@, --- @Y@, and @Z@, we would want to generate all combinations of them. - --- | Test that the invalid chains that are generated according to the given --- failure profile are rejected. On failure agreement the given function is --- called using the abstract and concrete predicate failures as arguments. -invalidChainTracesAreRejected :: - TestLimit -> - [(Int, SignalGenerator CHAIN)] -> - (NonEmpty (PredicateFailure CHAIN) -> ChainValidationError -> PropertyT IO ()) -> - TSProperty -invalidChainTracesAreRejected numberOfTests failureProfile onFailureAgreement = - withTestsTS numberOfTests - $ property - $ do - let traceLength = 100 :: Word64 - tr <- forAll $ invalidTrace @CHAIN () traceLength failureProfile - let ValidationOutput {elaboratedConfig, result} = - applyTrace (Invalid.Trace.validPrefix tr) - case result of - Left error -> do - footnote $ "Expecting a valid prefix but got: " ++ show error - failure - Right concreteState -> - let abstractState = lastState (Invalid.Trace.validPrefix tr) - block = Invalid.Trace.signal tr - result' = - elaborateAndUpdate - elaboratedConfig - concreteState - (abstractState, block) - in case (Invalid.Trace.errorOrLastState tr, result') of - (Right _, Right _) -> - -- Success: it is possible that the invalid signals generator - -- produces a valid signal, since the generator is probabilistic. - success - (Left abstractPfs, Left concretePfs) -> do - -- Success: both the model and the concrete implementation failed - -- to validate the signal. - -- - onFailureAgreement abstractPfs concretePfs - (abstractResult, concreteResult) -> do - footnote "Validation results mismatch." - footnote $ "Signal: " ++ show block - footnote $ "Abstract result: " ++ show abstractResult - footnote $ "Concrete result: " ++ show concreteResult - failure - --- | Extract the update interface environment from a given block and chain --- environment and state. --- --- TODO: this should be in `cardano-ledger`. -mkUpiEnv :: - Abstract.Block -> - Environment CHAIN -> - State CHAIN -> - UPIEnv -mkUpiEnv block env st = (blockSlot, _dIStateDelegationMap delegSt, k, ngk) - where - blockSlot = Abstract._bhSlot (Abstract._bHeader block) - (_, _, allowedDelegators, _, k) = env - (_slot, _sgs, _h, _utxoSt, delegSt, _upiSt) = st - numberOfDelegators = Set.size allowedDelegators - ngk - | fromIntegral (maxBound :: Word8) < numberOfDelegators = - panic - $ "ts_prop_invalidDelegationSignalsAreRejected: " - <> "too many genesis keys: " - <> show numberOfDelegators - | otherwise = fromIntegral numberOfDelegators - --- | Extract the update state from the given chain state. --- --- TODO: put this in `cardano-ledger`. -mkUpiSt :: - State CHAIN -> - UPIState -mkUpiSt (_slot, _sgs, _h, _utxoSt, _delegSt, upiSt) = upiSt - --- | Output resulting from elaborating and validating an abstract trace with --- the concrete validators. -data ValidationOutput = ValidationOutput - { elaboratedConfig :: !Genesis.Config - -- ^ Elaborated configuration. This configuration results from elaborating - -- the trace initial environment. - , result :: - !( Either - ChainValidationError - (ChainValidationState, AbstractToConcreteIdMaps) - ) - } - --- | Apply the concrete validators to the given abstract trace. -applyTrace :: - Trace CHAIN -> - ValidationOutput -applyTrace tr = - ValidationOutput - { elaboratedConfig = config - , result = - foldM (elaborateAndUpdate config) (initialState, initialAbstractToConcreteIdMaps) - $ preStatesAndSignals OldestFirst tr - } - where - initialState = initialStateNoUTxO {cvsUtxo = initialUTxO} - - initialAbstractToConcreteIdMaps = mempty {transactionIds = txIdMap} - - initialStateNoUTxO = - either (panic . show) identity $ initialChainValidationState config - - config = abEnvToCfg abstractEnv - - abstractEnv@( _currentSlot - , abstractInitialUTxO - , _allowedDelegators - , _protocolParams - , _stableAfter - ) = tr ^. traceEnv - - (initialUTxO, txIdMap) = elaborateInitialUTxO abstractInitialUTxO - -ts_prop_invalidHeaderSizesAreRejected :: TSProperty -ts_prop_invalidHeaderSizesAreRejected = - invalidSizesAreRejected - (\pps newMax -> pps {_maxHdrSz = newMax}) - (Abstract.bHeaderSize . Abstract._bHeader) - (\protocolParameters newMax -> protocolParameters {ppMaxHeaderSize = newMax}) - (headerLength . blockHeader) - checkMaxSizeFailure - where - checkMaxSizeFailure :: - NonEmpty (PredicateFailure CHAIN) -> - ChainValidationError -> - PropertyT IO () - checkMaxSizeFailure abstractPfs ChainValidationHeaderTooLarge {} = do - assert - $ any isHeaderSizeTooBigFailure abstractPfs - footnote - $ "HeaderSizeTooBig not found in the abstract predicate failures: " - ++ show abstractPfs - checkMaxSizeFailure _ concretePF = do - footnote $ "Expected 'ChainValidationHeaderTooLarge' error, got " ++ show concretePF - failure - --- | Check that blocks with components (e.g. headers, bodies) that have an --- invalid size (according to the protocol parameters) are rejected. -invalidSizesAreRejected :: - -- | Setter for the abstract protocol parameters. The 'Natural' parameter is - -- used to pass a new (generated) maximum size. - (PParams -> Natural -> PParams) -> - -- | Function used to compute the size of the abstract-block's component. - (Abstract.Block -> Natural) -> - -- | Setter for the concrete protocol parameters. - (ProtocolParameters -> Natural -> ProtocolParameters) -> - -- | Function used to compute the size of the concrete-block's component. - (ABlock ByteString -> Natural) -> - -- | Function to check agreement of concrete and abstract failures. - (NonEmpty (PredicateFailure CHAIN) -> ChainValidationError -> PropertyT IO ()) -> - TSProperty -invalidSizesAreRejected - setAbstractParamTo - abstractBlockComponentSize - setConcreteParamTo - concreteBlockComponentSize - checkFailures = - withTestsTS 300 - $ property - $ do - tr <- forAll $ trace @CHAIN () 100 `ofLengthAtLeast` 1 - let ValidationOutput {elaboratedConfig, result} = - applyTrace initTr - initTr :: Trace CHAIN - initTr = traceInit tr - case result of - Left error -> do - footnote $ "Expecting a valid trace but got: " ++ show error - failure - Right (concreteState, concreteIdMaps) -> do - let abstractState :: State CHAIN - abstractState = lastState $ initTr - - lastBlock :: Signal CHAIN - lastBlock = lastSignal tr - - abstractEnv :: Environment CHAIN - abstractEnv = _traceEnv tr - - concreteLastBlock = - -- NOTE: since we're altering the maximum header/body size defined in - -- the parameters we it shouldn't matter whether we're using the - -- altered states. - elaborateBlock - elaboratedConfig - concreteState - concreteIdMaps - abstractState - lastBlock - - lastBlockHeaderSize = abstractBlockComponentSize lastBlock - - concreteLastBlockSize = concreteBlockComponentSize concreteLastBlock - - alteredAbstractState :: State CHAIN <- - forAll $ genAbstractAlteredState abstractState (lastBlockHeaderSize - 1) - - alteredConcreteState <- - forAll $ genConcreteAlteredState concreteState (concreteLastBlockSize - 1) - -- - -- NOTE: Here we could simply choose not to use the concrete block size - -- and use the abstract block size instead. The former will be larger - -- than the latter. However the problem will be that we won't be - -- testing the boundary condition block size - 1 == maximum block size - - let abstractResult = - applySTS @CHAIN (TRC (abstractEnv, alteredAbstractState, lastBlock)) - - concreteResult = - elaborateAndUpdate - elaboratedConfig - (alteredConcreteState, concreteIdMaps) - (alteredAbstractState, lastBlock) - - case (abstractResult, concreteResult) of - (Left abstractPfs, Left concretePf) -> do - checkFailures abstractPfs concretePf - cover 85 "Size validation hit" True - success - (Right _, Right _) -> - -- It might be that we are at an epoch boundary, so the altered - -- update state will be overwritten by an epoch transition. In that - -- case it is OK if both executable spec and implementation return - -- 'Right'. - success - _ -> do - footnote "Validation results mismatch." - footnote $ "Altered abstract state: " ++ show alteredAbstractState - footnote $ "Signal: " ++ show lastBlock - footnote $ "Abstract result: " ++ show abstractResult - footnote $ "Concrete result: " ++ show concreteResult - failure - where - genAbstractAlteredState :: State CHAIN -> Natural -> Gen (State CHAIN) - genAbstractAlteredState (slot, sgs, h, utxo, ds, us) maxSize = - (slot,sgs,h,utxo,ds,) <$> genAlteredUpdateState us - where - genAlteredUpdateState ((pv, pps), fads, avs, rpus, raus, cps, vts, bvs, pws) = do - newMaxSize <- Gen.integral (Range.constant 0 maxSize) - pure - $! ( (pv, pps `setAbstractParamTo` newMaxSize) - , fads - , avs - , rpus - , raus - , cps - , vts - , bvs - , pws - ) - - genConcreteAlteredState :: - ChainValidationState -> Natural -> Gen ChainValidationState - genConcreteAlteredState state maxSize = - setMaxHeaderSize <$> Gen.integral (Range.constant 0 maxSize) - where - setMaxHeaderSize newSize = state {cvsUpdateState = newUpdateState} - where - newUpdateState = - (cvsUpdateState state) {adoptedProtocolParameters = newParameters} - where - newParameters = - (adoptedProtocolParameters (cvsUpdateState state)) - `setConcreteParamTo` newSize - -ts_prop_invalidBlockSizesAreRejected :: TSProperty -ts_prop_invalidBlockSizesAreRejected = - invalidSizesAreRejected - (\pps newMax -> pps {_maxBkSz = newMax}) - Abstract.bSize - (\protocolParameters newMax -> protocolParameters {ppMaxBlockSize = newMax}) - blockLength - checkMaxSizeFailure - where - checkMaxSizeFailure :: - NonEmpty (PredicateFailure CHAIN) -> - ChainValidationError -> - PropertyT IO () - checkMaxSizeFailure abstractPfs ChainValidationBlockTooLarge {} = do - assert - $ any (== InvalidBlockSize) - $ extractValues abstractPfs - footnote - $ "InvalidBlockSize not found in the abstract predicate failures: " - ++ show abstractPfs - checkMaxSizeFailure _ concretePF = do - footnote $ "Expected 'ChainValidationBlockTooLarge' error, got " ++ show concretePF - failure diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Block/Model/Examples.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Block/Model/Examples.hs deleted file mode 100644 index 382236de7f6..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Block/Model/Examples.hs +++ /dev/null @@ -1,41 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -{-# OPTIONS_GHC -Wno-missing-export-lists #-} -{-# OPTIONS_GHC -Wno-unused-imports #-} - --- | Module containing the imports needed to test that a given abstract trace --- passes the concrete validation. This is useful when debugging --- counterexamples. --- --- Usage from the ghci repl: --- --- > import Hedgehog --- > Hedgehog.check $ property $ passConcreteValidation trace0 --- --- Replace @trace0@ by the trace under analysis. -module Test.Cardano.Chain.Block.Model.Examples where - -import Byron.Spec.Chain.STS.Block -import Byron.Spec.Chain.STS.Rule.Chain -import Byron.Spec.Ledger.Core -import Byron.Spec.Ledger.Delegation -import Byron.Spec.Ledger.STS.UTXO -import Byron.Spec.Ledger.UTxO -import Byron.Spec.Ledger.Update -import Cardano.Prelude hiding (State, trace) -import Control.State.Transition -import GHC.Exts -import Test.Control.State.Transition.Trace - --- | A trace example. When debugging conformance tests you can add such a --- trace, and use it in the repl. __NOTE__: Do not commit such trace. -trace0 :: Trace CHAIN -trace0 = mkTrace traceEnv0 traceInitState0 traceTrans0 - where - traceEnv0 :: Environment CHAIN - traceEnv0 = panic "Add the trace environment here." - - traceInitState0 :: State CHAIN - traceInitState0 = panic "Add the trace initial state here." - - traceTrans0 :: [(State CHAIN, Signal CHAIN)] - traceTrans0 = panic "Add the trace transitions here." diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Block/Size.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Block/Size.hs deleted file mode 100644 index 873224275a2..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Block/Size.hs +++ /dev/null @@ -1,207 +0,0 @@ -{-# LANGUAGE MultiWayIf #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TemplateHaskell #-} - -module Test.Cardano.Chain.Block.Size ( - tests, -) -where - -import Cardano.Chain.Block -import Cardano.Ledger.Binary hiding (label) -import Cardano.Prelude -import qualified Data.ByteString as BS -import Data.String (IsString (..)) -import Hedgehog (Gen, LabelName, failure, footnote, label, success) -import Test.Cardano.Chain.Block.Gen -import Test.Cardano.Chain.Common.Gen -import qualified Test.Cardano.Chain.Genesis.Gen as Genesis -import qualified Test.Cardano.Chain.Slotting.Gen as Slotting -import qualified Test.Cardano.Chain.Update.Gen as Update -import qualified Test.Cardano.Crypto.Gen as Crypto -import Test.Cardano.Prelude -import Test.Options (TSGroup, TSProperty, eachOfTS) - -encodedSizeTest :: - forall a. - Show a => - (a -> Encoding) -> - (Proxy a -> Size) -> - Gen a -> - TSProperty -encodedSizeTest encode encodedSize gen = eachOfTS - 300 - gen - $ \a -> case szSimplify (encodedSize (Proxy :: Proxy a)) of - Right rng@Range {lo, hi} -> - let size :: Natural - size = fromIntegral $ BS.length (serialize' byronProtVer (encode a)) - in if - | size < lo -> do - footnote $ "actual size not greater or equal the minimal size: " ++ show size ++ " ≱ " ++ show lo - failure - | size > hi -> do - footnote $ "actual size not smaller or equal the maximal size: " ++ show size ++ " ≰ " ++ show hi - failure - | otherwise -> do - label (classifySize rng size) - success - Left _ -> do - footnote "a thunk in size expression" - failure - where - -- we can assume that lo ≤ size ≤ hi - classifySize :: Range Natural -> Natural -> LabelName - classifySize Range {lo, hi} size = - fromString $ - "lo: " - ++ show lo - ++ " hi: " - ++ show hi - ++ " size: " - ++ show s - ++ " - " - ++ show (s + bucket) - where - bucket = - if hi - lo >= 5 - then (hi - lo) `div` 5 - else 1 - s = lo + bucket * ((size - lo) `div` bucket) - -encodedSizeTestEncCBOR :: - forall a. - (EncCBOR a, Show a) => - Gen a -> - TSProperty -encodedSizeTestEncCBOR = - encodedSizeTest encCBOR szGreedy - -ts_prop_sizeProtocolMagicId :: TSProperty -ts_prop_sizeProtocolMagicId = - encodedSizeTestEncCBOR Crypto.genProtocolMagicId - -ts_prop_sizeEpochAndSlotCount :: TSProperty -ts_prop_sizeEpochAndSlotCount = - encodedSizeTestEncCBOR (Slotting.genEpochSlots >>= Slotting.genEpochAndSlotCount) - -ts_prop_sizeChainDifficulty :: TSProperty -ts_prop_sizeChainDifficulty = encodedSizeTestEncCBOR genChainDifficulty - -ts_prop_sizeHeaderHash :: TSProperty -ts_prop_sizeHeaderHash = encodedSizeTestEncCBOR genHeaderHash - -ts_prop_sizeSlotNumber :: TSProperty -ts_prop_sizeSlotNumber = encodedSizeTestEncCBOR Slotting.genSlotNumber - -ts_prop_sizeProtocolVersion :: TSProperty -ts_prop_sizeProtocolVersion = encodedSizeTestEncCBOR Update.genProtocolVersion - -ts_prop_sizeApplicationName :: TSProperty -ts_prop_sizeApplicationName = encodedSizeTestEncCBOR Update.genApplicationName - -ts_prop_sizeSoftwareVersion :: TSProperty -ts_prop_sizeSoftwareVersion = encodedSizeTestEncCBOR Update.genSoftwareVersion - -ts_prop_sizeProof :: TSProperty -ts_prop_sizeProof = encodedSizeTestEncCBOR (Crypto.genProtocolMagicId >>= genProof) - -ts_prop_sizeVerificationKey :: TSProperty -ts_prop_sizeVerificationKey = encodedSizeTestEncCBOR Crypto.genVerificationKey - -ts_prop_sizeToSign :: TSProperty -ts_prop_sizeToSign = - encodedSizeTestEncCBOR $ - ((,) <$> Crypto.genProtocolMagicId <*> Slotting.genEpochSlots) - >>= uncurry genToSign - -ts_prop_sizeBlockVersions :: TSProperty -ts_prop_sizeBlockVersions = - encodedSizeTest - (uncurry encCBORBlockVersions) - (uncurryP encCBORBlockVersionsSize) - ((,) <$> Update.genProtocolVersion <*> Update.genSoftwareVersion) - -ts_prop_sizeEpochNumber :: TSProperty -ts_prop_sizeEpochNumber = - encodedSizeTestEncCBOR Slotting.genEpochNumber - --- | test @Signature EpochNumber@ which is a part of 'ACertificate' -ts_prop_sizeEpochNumberSignature :: TSProperty -ts_prop_sizeEpochNumberSignature = - encodedSizeTestEncCBOR $ - Crypto.genProtocolMagicId >>= flip Crypto.genSignature Slotting.genEpochSlots - -ts_prop_sizeToSignSignature :: TSProperty -ts_prop_sizeToSignSignature = - encodedSizeTestEncCBOR $ - do - pm <- Crypto.genProtocolMagicId - es <- Slotting.genEpochSlots - Crypto.genSignature pm (genToSign pm es) - -ts_prop_sizeBlockSignature :: TSProperty -ts_prop_sizeBlockSignature = - encodedSizeTestEncCBOR $ - ((,) <$> Crypto.genProtocolMagicId <*> Slotting.genEpochSlots) - >>= uncurry genBlockSignature - --- --- Header --- - -ts_prop_sizeHeader :: TSProperty -ts_prop_sizeHeader = - encodedSizeTest - (uncurry encCBORHeader) - (uncurryP encCBORHeaderSize) - $ do - protocolMagicId <- Crypto.genProtocolMagicId - epochSlots <- Slotting.genEpochSlots - header <- genHeader protocolMagicId epochSlots - return (epochSlots, header) - --- --- ABoundaryHeader --- - -ts_prop_sizeGenesisHash :: TSProperty -ts_prop_sizeGenesisHash = encodedSizeTestEncCBOR Genesis.genGenesisHash - -ts_prop_sizeABoundaryHeader :: TSProperty -ts_prop_sizeABoundaryHeader = - encodedSizeTest - (uncurry encCBORABoundaryHeader) - (uncurryP encCBORABoundaryHeaderSize) - ( (,) - <$> Crypto.genProtocolMagicId - <*> genBoundaryHeader - ) - --- --- ABlockOrBoundaryHdr --- - -ts_prop_sizeABlockOrBoundaryHdr :: TSProperty -ts_prop_sizeABlockOrBoundaryHdr = - encodedSizeTest - encCBORABlockOrBoundaryHdr - encCBORABlockOrBoundaryHdrSize - $ ((,) <$> Crypto.genProtocolMagicId <*> Slotting.genEpochSlots) - >>= uncurry genABlockOrBoundaryHdr - --- --- Utils --- - -uncurryP :: (Proxy a -> Proxy b -> c) -> Proxy (a, b) -> c -uncurryP f p = f (fst <$> p) (snd <$> p) - --- --- Tests --- - -tests :: TSGroup -tests = $$discoverPropArg diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Block/Validation.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Block/Validation.hs deleted file mode 100644 index fd96138a5c4..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Block/Validation.hs +++ /dev/null @@ -1,143 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TemplateHaskell #-} -{-# LANGUAGE TupleSections #-} - -module Test.Cardano.Chain.Block.Validation ( - tests, -) -where - -import Cardano.Chain.Block ( - ABlockOrBoundary (..), - BlockValidationMode (BlockValidation), - ChainValidationError, - ChainValidationState (..), - blockSlot, - initialChainValidationState, - updateBlock, - updateChainBoundary, - ) -import Cardano.Chain.Epoch.File (ParseError, parseEpochFilesWithBoundary) -import Cardano.Chain.Genesis as Genesis (Config (..), configEpochSlots) -import Cardano.Chain.Slotting (SlotNumber) -import Cardano.Chain.ValidationMode (fromBlockValidationMode) -import Cardano.Prelude -import Control.Monad.Trans.Resource (ResIO, runResourceT) -import Hedgehog ( - Group (..), - annotate, - assert, - discover, - evalEither, - property, - withTests, - ) -import Streaming (Of (..), Stream, hoist) -import qualified Streaming.Prelude as S -import System.Environment (lookupEnv) -import Test.Cardano.Chain.Config (readMainetCfg) -import Test.Cardano.Mirror (mainnetEpochFiles) -import Test.Options ( - ShouldAssertNF (..), - TSGroup, - TSProperty, - TestScenario (..), - concatTSGroups, - ) - --- | These tests perform chain validation over mainnet epoch files -tests :: ShouldAssertNF -> TSGroup -tests shouldAssertNF = - concatTSGroups - [ const $$discover - , \scenario -> - Group - "Test.Cardano.Chain.Block.Validation" - [ - ( "ts_prop_mainnetEpochsValid" - , ts_prop_mainnetEpochsValid shouldAssertNF scenario - ) - ] - ] - -ts_prop_mainnetEpochsValid :: ShouldAssertNF -> TSProperty -ts_prop_mainnetEpochsValid shouldAssertNF scenario = withTests 1 . property $ do - menv <- liftIO $ lookupEnv "CARDANO_MAINNET_MIRROR" - assert $ isJust menv - - -- Get the 'Genesis.Config' from the mainnet genesis JSON - config <- readMainetCfg - - -- Construct the initial 'ChainValidationState' - let cvs = either (panic . show) identity $ initialChainValidationState config - - let takeFiles :: [FilePath] -> [FilePath] - takeFiles = case scenario of - ContinuousIntegration -> identity - Development -> take 15 - QualityAssurance -> identity - - -- Get a list of epoch files to perform validation on - files <- takeFiles <$> liftIO mainnetEpochFiles - - let stream = parseEpochFilesWithBoundary (configEpochSlots config) files - - annotate - ( "Did you build with `ghc -fhpc` or `stack --coverage`?\n" - <> "If so, please be aware that hpc will introduce thunks around " - <> "expressions for its program coverage measurement purposes and " - <> "this assertion can fail as a result.\n" - <> "Otherwise, for some reason, the `ChainValidationState` is not in " - <> "normal form." - ) - - result <- - (liftIO . runResourceT . runExceptT) - (foldChainValidationState shouldAssertNF config cvs stream) - - void $ evalEither result - -data Error - = ErrorParseError ParseError - | ErrorChainValidationError (Maybe SlotNumber) ChainValidationError - deriving (Eq, Show) - --- | Fold chain validation over a 'Stream' of 'Block's -foldChainValidationState :: - ShouldAssertNF -> - Genesis.Config -> - ChainValidationState -> - Stream (Of (ABlockOrBoundary ByteString)) (ExceptT ParseError ResIO) () -> - ExceptT Error ResIO ChainValidationState -foldChainValidationState shouldAssertNF config cvs blocks = - S.foldM_ validate (pure cvs) pure (hoist (withExceptT ErrorParseError) blocks) - where - validate :: - MonadIO m => - ChainValidationState -> - ABlockOrBoundary ByteString -> - ExceptT Error m ChainValidationState - validate c b = - withExceptT (ErrorChainValidationError (blockOrBoundarySlot b)) - . (`runReaderT` fromBlockValidationMode BlockValidation) - $ case b of - ABOBBoundary bvd -> do - case shouldAssertNF of - AssertNF -> do - isNF <- liftIO $ isNormalForm $! c - unless - isNF - ( panic - $ "ChainValidationState not in normal form at slot: " - <> show (cvsLastSlot c) - ) - NoAssertNF -> pure () - updateChainBoundary c bvd - ABOBBlock block -> updateBlock config c block - - blockOrBoundarySlot :: ABlockOrBoundary a -> Maybe SlotNumber - blockOrBoundarySlot = \case - ABOBBoundary _ -> Nothing - ABOBBlock block -> Just $ blockSlot block diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Block/ValidationMode.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Block/ValidationMode.hs deleted file mode 100644 index 3bc8909e94a..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Block/ValidationMode.hs +++ /dev/null @@ -1,302 +0,0 @@ -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TemplateHaskell #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Chain.Block.ValidationMode ( - tests, -) -where - -import qualified Byron.Spec.Chain.STS.Block as Abstract -import Byron.Spec.Chain.STS.Rule.Chain (CHAIN) -import qualified Byron.Spec.Chain.STS.Rule.Chain as Abstract -import qualified Byron.Spec.Ledger.Core as Abstract -import Byron.Spec.Ledger.Delegation ( - ADELEGS, - DELEG, - DIState (..), - DState (..), - ) -import Byron.Spec.Ledger.GlobalParams (lovelaceCap) -import Byron.Spec.Ledger.STS.UTXO (UTxOEnv (..), UTxOState (..)) -import Byron.Spec.Ledger.STS.UTXOWS (UTXOWS) -import qualified Byron.Spec.Ledger.UTxO as Abstract -import Cardano.Chain.Block ( - ABlock (..), - AHeader (..), - BlockValidationMode (..), - Proof (..), - blockProof, - initialChainValidationState, - updateBlock, - ) -import Cardano.Chain.Delegation as Delegation -import Cardano.Chain.UTxO (TxProof) -import Cardano.Chain.ValidationMode ( - ValidationMode (..), - fromBlockValidationMode, - ) -import Cardano.Crypto (Hash) -import Cardano.Ledger.Binary (Annotated (..)) -import Cardano.Prelude hiding (State, trace) -import Control.State.Transition -import qualified Data.Bimap as BM -import qualified Data.Map.Strict as M -import qualified Data.Set as S -import Hedgehog -import qualified Hedgehog.Gen as Gen -import qualified Hedgehog.Range as Range -import Lens.Micro ((^.)) -import qualified Test.Cardano.Chain.Delegation.Gen as Delegation -import Test.Cardano.Chain.Elaboration.Block ( - abEnvToCfg, - elaborateBS, - rcDCert, - transactionIds, - ) -import Test.Cardano.Chain.UTxO.Gen (genTxProof) -import Test.Cardano.Chain.UTxO.Model (elaborateInitialUTxO) -import qualified Test.Cardano.Chain.Update.Gen as Update -import Test.Cardano.Crypto.Gen (feedPM, genAbstractHash) -import Test.Cardano.Prelude -import Test.Control.State.Transition.Generator (trace) -import qualified Test.Control.State.Transition.Trace as Trace -import Test.Options (TSGroup, TSProperty, withTestsTS) - --------------------------------------------------------------------------------- --- BlockValidationMode Properties --------------------------------------------------------------------------------- - --- | Property: When calling 'updateBlock' given a valid 'Block', validation --- should pass in all 'BlockValidationMode's. -ts_prop_updateBlock_Valid :: TSProperty -ts_prop_updateBlock_Valid = - withTestsTS 100 - . property - $ do - let traceLength = 10 :: Word64 -- TODO: check that the @k@ value is not important - -- in this test, in that case we can get away with - -- generating small traces. - sampleTrace <- forAll $ trace @CHAIN () traceLength - let lastState = Trace.lastState sampleTrace - chainEnv@( _currentSlot - , abstractInitialUTxO - , _allowedDelegators - , _protocolParamaters - , stableAfter - ) = Trace._traceEnv sampleTrace - abstractBlock <- - forAll - $ Abstract.sigGenChain - Abstract.NoGenDelegation - Abstract.NoGenUTxO - Abstract.NoGenUpdate - chainEnv - lastState - let config = abEnvToCfg chainEnv - cvs = either (panic . show) (\a -> a) (initialChainValidationState config) - (_, txIdMap) = elaborateInitialUTxO abstractInitialUTxO - dCert = - rcDCert - (abstractBlock ^. Abstract.bHeader . Abstract.bhIssuer) - stableAfter - lastState - vMode <- forAll $ fromBlockValidationMode <$> genBlockValidationMode - let (concreteBlock, _txIdMap') = - elaborateBS - mempty {transactionIds = txIdMap} - config - dCert - cvs - abstractBlock - annotateShow concreteBlock - updateRes <- - (`runReaderT` vMode) - . runExceptT - $ updateBlock config cvs concreteBlock - case updateRes of - Left _ -> failure - Right _ -> success - --- | Property: When calling 'updateBlock' given a 'Block' with an invalid --- 'Proof', 'Block' validation should only pass in the 'NoBlockValidation' mode. --- This is because this mode does not perform any validation on the 'Block'. -ts_prop_updateBlock_InvalidProof :: TSProperty -ts_prop_updateBlock_InvalidProof = - withTestsTS 100 - . property - $ do - let traceLength = 10 :: Word64 - sampleTrace <- forAll $ trace @CHAIN () traceLength - let chainEnv@(_, abstractInitialUTxO, _, _, stableAfter) = Trace._traceEnv sampleTrace - lastState = Trace.lastState sampleTrace - abstractBlock <- - forAll - $ Abstract.sigGenChain - Abstract.NoGenDelegation - Abstract.NoGenUTxO - Abstract.NoGenUpdate - chainEnv - lastState - let config = abEnvToCfg chainEnv - cvs = either (panic . show) (\a -> a) (initialChainValidationState config) - (_, txIdMap) = elaborateInitialUTxO abstractInitialUTxO - dCert = rcDCert (abstractBlock ^. Abstract.bHeader . Abstract.bhIssuer) stableAfter lastState - vMode <- forAll $ fromBlockValidationMode <$> genBlockValidationMode - let (concreteBlock, _abstractToConcreteIdMaps') = - elaborateBS - initialAbstractToConcreteIdMaps - config - dCert - cvs - abstractBlock - initialAbstractToConcreteIdMaps = mempty {transactionIds = txIdMap} - annotateShow concreteBlock - invalidBlock <- forAll $ invalidateABlockProof concreteBlock - updateRes <- - (`runReaderT` vMode) - . runExceptT - $ updateBlock config cvs invalidBlock - case updateRes of - Left _ -> - if (blockValidationMode vMode) == BlockValidation - then success - else failure - Right _ -> - if (blockValidationMode vMode) == NoBlockValidation - then success - else failure - --------------------------------------------------------------------------------- --- Generators --------------------------------------------------------------------------------- - -genHash :: Gen Abstract.Hash -genHash = Abstract.Hash . Just <$> Gen.int Range.constantBounded - -genBlockValidationMode :: Gen BlockValidationMode -genBlockValidationMode = Gen.element [BlockValidation, NoBlockValidation] - --------------------------------------------------------------------------------- --- Helpers --------------------------------------------------------------------------------- - -createInitialUTxOState :: - Environment UTXOWS -> - State UTXOWS -createInitialUTxOState utxoEnv = - UTxOState {utxo = utxo0, reserves = lovelaceCap - Abstract.balance utxo0} - where - UTxOEnv - { utxo0 - } = utxoEnv - -createInitialDState :: - Environment ADELEGS -> - State ADELEGS -createInitialDState env = - DState - { _dStateDelegationMap = - BM.fromList - $ map - (\vkg@(Abstract.VKeyGenesis key) -> (vkg, key)) - (S.toList env) - , _dStateLastDelegation = M.fromSet (const (Abstract.Slot 0)) env - } - -createInitialDIState :: - State ADELEGS -> - State DELEG -createInitialDIState dState = - DIState - { _dIStateDelegationMap = _dStateDelegationMap dState - , _dIStateLastDelegation = _dStateLastDelegation dState - , _dIStateScheduledDelegations = [] - , _dIStateKeyEpochDelegations = S.empty - } - -modifyAHeader :: - (AHeader ByteString -> AHeader ByteString) -> - ABlock ByteString -> - ABlock ByteString -modifyAHeader ahModifier ab = - ab {blockHeader = ahModifier (blockHeader ab)} - -modifyAProof :: - (Annotated Proof ByteString -> Annotated Proof ByteString) -> - ABlock ByteString -> - ABlock ByteString -modifyAProof apModifier ab = - modifyAHeader ahModifier ab - where - ahModifier :: AHeader ByteString -> AHeader ByteString - ahModifier ah = ah {aHeaderProof = apModifier (aHeaderProof ah)} - -modifyDelegationProof :: - (Hash Delegation.Payload -> Hash Delegation.Payload) -> - ABlock ByteString -> - ABlock ByteString -modifyDelegationProof dpModifier ab = - modifyAProof apModifier ab - where - apModifier :: Annotated Proof ByteString -> Annotated Proof ByteString - apModifier (Annotated p bs) = - Annotated - p {proofDelegation = dpModifier (proofDelegation p)} - bs - -modifyTxProof :: - (TxProof -> TxProof) -> - ABlock ByteString -> - ABlock ByteString -modifyTxProof tpModifier ab = - modifyAProof apModifier ab - where - apModifier :: Annotated Proof ByteString -> Annotated Proof ByteString - apModifier (Annotated p bs) = - Annotated - p {proofUTxO = tpModifier (proofUTxO p)} - bs - -invalidateABlockProof :: - ABlock ByteString -> - Gen (ABlock ByteString) -invalidateABlockProof ab = - -- 'Gen.filter' to ensure we don't generate a valid proof - Gen.filter (\x -> blockProof x /= blockProof ab) $ do - txProof <- - Gen.choice - [ pure $ (proofUTxO . blockProof) ab - , feedPM genTxProof - ] - dlgProof <- - Gen.choice - [ pure $ (proofDelegation . blockProof) ab - , genAbstractHash (feedPM Delegation.genPayload) - ] - updProof <- - Gen.choice - [ pure $ proofUpdate (blockProof ab) - , feedPM Update.genProof - ] - pure - $ modifyAProof - ( \(Annotated p bs) -> - Annotated - ( p - { proofUTxO = txProof - , proofDelegation = dlgProof - , proofUpdate = updProof - } - ) - bs - ) - ab - --------------------------------------------------------------------------------- --- Main Test Export --------------------------------------------------------------------------------- - -tests :: TSGroup -tests = $$discoverPropArg diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Buildable.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Buildable.hs deleted file mode 100644 index 762e96c6a4d..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Buildable.hs +++ /dev/null @@ -1,230 +0,0 @@ -{-# LANGUAGE TemplateHaskell #-} - -module Test.Cardano.Chain.Buildable ( - tests, -) -where - -import Cardano.Chain.Common ( - Attributes (Attributes), - UnparsedFields (UnparsedFields), - ) -import Cardano.Prelude -import Formatting (Buildable, build, sformat) -import Hedgehog (PropertyT, eval, property) -import Test.Cardano.Chain.Block.Gen ( - genBlockSignature, - genBlockWithEpochSlots, - genHeader, - ) -import qualified Test.Cardano.Chain.Block.Gen as Block -import qualified Test.Cardano.Chain.Common.Gen as Common -import qualified Test.Cardano.Chain.Delegation.Gen as Delegation -import qualified Test.Cardano.Chain.Genesis.Gen as Genesis -import Test.Cardano.Chain.Slotting.Gen (feedPMEpochSlots) -import qualified Test.Cardano.Chain.Slotting.Gen as Slotting -import qualified Test.Cardano.Chain.UTxO.Gen as UTxO -import qualified Test.Cardano.Chain.Update.Gen as Update -import Test.Cardano.Crypto.Gen (feedPM) -import Test.Cardano.Prelude -import Test.Options (TSGroup, TSProperty, eachOfTS) - --------------------------------------------------------------------------------- --- Test helpers --------------------------------------------------------------------------------- - -tests :: TSGroup -tests = $$discoverPropArg - --- | Check that the 'Buildable' instance for @a@ doesn't throw exceptions -isBuildable :: Buildable a => a -> PropertyT IO () -isBuildable = void . eval . sformat build - --------------------------------------------------------------------------------- --- Block --------------------------------------------------------------------------------- - -ts_prop_blockIsBuildable :: TSProperty -ts_prop_blockIsBuildable = - eachOfTS 100 (feedPM genBlockWithEpochSlots) isBuildable - -ts_prop_blockProofIsBuildable :: TSProperty -ts_prop_blockProofIsBuildable = eachOfTS 100 (feedPM Block.genProof) isBuildable - -ts_prop_headerIsBuildable :: TSProperty -ts_prop_headerIsBuildable = - eachOfTS - 100 - (feedPMEpochSlots (Slotting.genWithEpochSlots genHeader)) - isBuildable - -ts_prop_blockSignatureIsBuildable :: TSProperty -ts_prop_blockSignatureIsBuildable = - eachOfTS 100 (feedPMEpochSlots genBlockSignature) isBuildable - --------------------------------------------------------------------------------- --- Common --------------------------------------------------------------------------------- - -ts_prop_addrAttributesIsBuildable :: TSProperty -ts_prop_addrAttributesIsBuildable = - eachOfTS 100 Common.genAddrAttributes isBuildable - -ts_prop_addrSpendingData :: TSProperty -ts_prop_addrSpendingData = eachOfTS 100 Common.genAddrSpendingData isBuildable - -ts_prop_addressIsBuildable :: TSProperty -ts_prop_addressIsBuildable = eachOfTS 100 Common.genAddress isBuildable - -ts_prop_attributesUnitIsBuildable :: TSProperty -ts_prop_attributesUnitIsBuildable = - const . property $ isBuildable (Attributes () (UnparsedFields mempty)) - -ts_prop_blockCountIsBuildable :: TSProperty -ts_prop_blockCountIsBuildable = eachOfTS 100 Common.genBlockCount isBuildable - -ts_prop_chainDifficultyIsBuildable :: TSProperty -ts_prop_chainDifficultyIsBuildable = - eachOfTS 100 Common.genChainDifficulty isBuildable - -ts_prop_keyHashIsBuildable :: TSProperty -ts_prop_keyHashIsBuildable = eachOfTS 100 Common.genKeyHash isBuildable - -ts_prop_lovelaceIsBuildable :: TSProperty -ts_prop_lovelaceIsBuildable = eachOfTS 100 Common.genLovelace isBuildable - -ts_prop_lovelacePortionIsBuildable :: TSProperty -ts_prop_lovelacePortionIsBuildable = - eachOfTS 100 Common.genLovelacePortion isBuildable - -ts_prop_merkleRootIsBuildable :: TSProperty -ts_prop_merkleRootIsBuildable = - eachOfTS 100 (Common.genMerkleRoot (pure ())) isBuildable - -ts_prop_networkMagicIsBuildable :: TSProperty -ts_prop_networkMagicIsBuildable = - eachOfTS 100 Common.genNetworkMagic isBuildable - -ts_prop_txFeePolicyIsBuildable :: TSProperty -ts_prop_txFeePolicyIsBuildable = eachOfTS 100 Common.genTxFeePolicy isBuildable - -ts_prop_txSizeLinearIsBuildable :: TSProperty -ts_prop_txSizeLinearIsBuildable = - eachOfTS 100 Common.genTxSizeLinear isBuildable - --------------------------------------------------------------------------------- --- Delegation --------------------------------------------------------------------------------- - -ts_prop_delegationCertificateIsBuildable :: TSProperty -ts_prop_delegationCertificateIsBuildable = - eachOfTS 100 (feedPM Delegation.genCertificate) isBuildable - -ts_prop_delegationPayloadIsBuildable :: TSProperty -ts_prop_delegationPayloadIsBuildable = - eachOfTS 100 (feedPM Delegation.genPayload) isBuildable - --------------------------------------------------------------------------------- --- Genesis --------------------------------------------------------------------------------- - -ts_prop_genesisKeyHashesIsBuildable :: TSProperty -ts_prop_genesisKeyHashesIsBuildable = - eachOfTS 100 Genesis.genGenesisKeyHashes isBuildable - -ts_prop_genesisNonAvvmBalancesIsBuildable :: TSProperty -ts_prop_genesisNonAvvmBalancesIsBuildable = - eachOfTS 100 Genesis.genGenesisNonAvvmBalances isBuildable - --------------------------------------------------------------------------------- --- Slotting --------------------------------------------------------------------------------- - -ts_prop_epochAndSlotCountIsBuildable :: TSProperty -ts_prop_epochAndSlotCountIsBuildable = - eachOfTS - 100 - (Slotting.genEpochSlots >>= Slotting.genEpochAndSlotCount) - isBuildable - -ts_prop_epochNumberIsBuildable :: TSProperty -ts_prop_epochNumberIsBuildable = - eachOfTS 100 Slotting.genEpochNumber isBuildable - -ts_prop_epochSlotsIsBuildable :: TSProperty -ts_prop_epochSlotsIsBuildable = eachOfTS 100 Slotting.genEpochSlots isBuildable - -ts_prop_slotCountIsBuildable :: TSProperty -ts_prop_slotCountIsBuildable = eachOfTS 100 Slotting.genSlotCount isBuildable - -ts_prop_slotNumberIsBuilable :: TSProperty -ts_prop_slotNumberIsBuilable = eachOfTS 100 Slotting.genSlotNumber isBuildable - --------------------------------------------------------------------------------- --- Update --------------------------------------------------------------------------------- - -ts_prop_applicationNameIsBuildable :: TSProperty -ts_prop_applicationNameIsBuildable = - eachOfTS 100 Update.genApplicationName isBuildable - -ts_prop_installerHashIsBuildable :: TSProperty -ts_prop_installerHashIsBuildable = - eachOfTS 100 Update.genInstallerHash isBuildable - -ts_prop_updatePayloadIsBuildable :: TSProperty -ts_prop_updatePayloadIsBuildable = - eachOfTS 100 (feedPM Update.genPayload) isBuildable - -ts_prop_proposalIsBuiladble :: TSProperty -ts_prop_proposalIsBuiladble = - eachOfTS 100 (feedPM Update.genProposal) isBuildable - -ts_prop_protocolParametersIsBuildable :: TSProperty -ts_prop_protocolParametersIsBuildable = - eachOfTS 100 Update.genProtocolParameters isBuildable - -ts_prop_protocolParametersUpdateIsBuildable :: TSProperty -ts_prop_protocolParametersUpdateIsBuildable = - eachOfTS 100 Update.genProtocolParametersUpdate isBuildable - -ts_prop_protocolVersionIsBuildable :: TSProperty -ts_prop_protocolVersionIsBuildable = - eachOfTS 100 Update.genProtocolVersion isBuildable - -ts_prop_softforkRuleIsBuildable :: TSProperty -ts_prop_softforkRuleIsBuildable = - eachOfTS 100 Update.genSoftforkRule isBuildable - -ts_prop_softwareVersionIsBuildable :: TSProperty -ts_prop_softwareVersionIsBuildable = - eachOfTS 100 Update.genSoftforkRule isBuildable - -ts_prop_systemTagIsBuildable :: TSProperty -ts_prop_systemTagIsBuildable = eachOfTS 100 Update.genSystemTag isBuildable - -ts_prop_voteIsBuildable :: TSProperty -ts_prop_voteIsBuildable = eachOfTS 100 (feedPM Update.genVote) isBuildable - --------------------------------------------------------------------------------- --- Update --------------------------------------------------------------------------------- - -ts_prop_txIsBuildable :: TSProperty -ts_prop_txIsBuildable = eachOfTS 100 UTxO.genTx isBuildable - -ts_prop_txInIsBuildable :: TSProperty -ts_prop_txInIsBuildable = eachOfTS 100 UTxO.genTxIn isBuildable - -ts_prop_txOutIsBuildable :: TSProperty -ts_prop_txOutIsBuildable = eachOfTS 100 UTxO.genTxOut isBuildable - -ts_prop_txAuxIsBuildable :: TSProperty -ts_prop_txAuxIsBuildable = eachOfTS 100 (feedPM UTxO.genTxAux) isBuildable - -ts_prop_txProofIsBuildable :: TSProperty -ts_prop_txProofIsBuildable = eachOfTS 100 (feedPM UTxO.genTxProof) isBuildable - -ts_prop_txInWitnessIsBuildable :: TSProperty -ts_prop_txInWitnessIsBuildable = - eachOfTS 100 (feedPM UTxO.genTxInWitness) isBuildable diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Byron/API.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Byron/API.hs deleted file mode 100644 index 29b06b2b809..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Byron/API.hs +++ /dev/null @@ -1,246 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Chain.Byron.API ( - genApplyMempoolPayloadErr, - ts_mempoolValidation, - ts_roundTripApplyMempoolPayloadErrCompat, - ts_scheduledDelegations, - tests, -) -where - -import qualified Byron.Spec.Chain.STS.Block as STS -import Byron.Spec.Chain.STS.Rule.Chain (CHAIN) -import qualified Byron.Spec.Chain.STS.Rule.Epoch as STS -import qualified Byron.Spec.Chain.STS.Rule.SigCnt as STS -import qualified Byron.Spec.Ledger.Core as Spec -import qualified Byron.Spec.Ledger.Delegation as Spec -import qualified Byron.Spec.Ledger.STS.UTXO as STS -import qualified Byron.Spec.Ledger.STS.UTXOW as STS -import qualified Byron.Spec.Ledger.Update as Spec -import Cardano.Chain.Block ( - BlockValidationMode (..), - ChainValidationError (..), - ChainValidationState (..), - HeaderHash, - initialChainValidationState, - ) -import Cardano.Chain.Byron.API ( - ApplyMempoolPayloadErr (..), - applyChainTick, - applyMempoolPayload, - getDelegationMap, - previewDelegationMap, - reAnnotateUsing, - validateBlock, - ) -import Cardano.Chain.Genesis (configSlotSecurityParam) -import qualified Cardano.Chain.Genesis as Genesis -import Cardano.Chain.MempoolPayload (AMempoolPayload (..), MempoolPayload) -import Cardano.Chain.Slotting (SlotCount (..), SlotNumber (..)) -import Cardano.Chain.UTxO (TxValidationMode (..)) -import Cardano.Chain.ValidationMode (ValidationMode (..)) -import Cardano.Crypto (ProtocolMagicId) -import qualified Cardano.Crypto.Hashing as H -import Cardano.Ledger.Binary (decCBOR, encCBOR) -import Cardano.Prelude -import qualified Control.State.Transition as STS -import Data.Coerce (coerce) -import qualified Data.Map as Map -import qualified Data.Set as Set -import Hedgehog (Gen, Group (..), annotateShow, forAll, property, (===)) -import qualified Hedgehog.Gen as Gen -import qualified Hedgehog.Range as Range -import Test.Cardano.Chain.Block.Model (elaborateAndUpdate, elaborateBlock) -import qualified Test.Cardano.Chain.Delegation.Gen as Dlg -import Test.Cardano.Chain.Elaboration.Block ( - AbstractToConcreteIdMaps (..), - abEnvToCfg, - ) -import Test.Cardano.Chain.Elaboration.Delegation (elaborateDCert) -import Test.Cardano.Chain.Elaboration.Update (elaborateUpdateProposal, elaborateVote) -import Test.Cardano.Chain.UTxO.Gen (genUTxOValidationError) -import Test.Cardano.Chain.UTxO.Model ( - elaborateInitialUTxO, - elaborateTxWitsBSWithMap, - ) -import qualified Test.Cardano.Chain.Update.Gen as UpdateIface -import Test.Cardano.Crypto.Gen (feedPM) -import Test.Cardano.Ledger.Binary.Vintage.Helpers.GoldenRoundTrip (roundTripsCBORShow) -import qualified Test.Control.State.Transition.Generator as STS -import qualified Test.Control.State.Transition.Trace as STS -import Test.Options (TSGroup, TSProperty, eachOfTS, withTestsTS) - -tests :: TSGroup -tests scenario = - Group - "Test.Cardano.Chain.Byron.API" - [ ("ts_chainTick", ts_chainTick scenario) - , ("ts_roundTripApplyMempoolPayloadErrCompat", ts_roundTripApplyMempoolPayloadErrCompat scenario) - , ("ts_scheduledDelegations", ts_scheduledDelegations scenario) - , ("ts_mempoolValidation", ts_mempoolValidation scenario) - ] - -ts_roundTripApplyMempoolPayloadErrCompat :: TSProperty -ts_roundTripApplyMempoolPayloadErrCompat = - eachOfTS - 20 - (feedPM genApplyMempoolPayloadErr) - roundTripsCBORShow - -genApplyMempoolPayloadErr :: ProtocolMagicId -> Gen ApplyMempoolPayloadErr -genApplyMempoolPayloadErr pm = - Gen.choice - [ MempoolTxErr <$> genUTxOValidationError - , MempoolDlgErr <$> Dlg.genError - , MempoolUpdateProposalErr <$> UpdateIface.genError pm - , MempoolUpdateVoteErr <$> UpdateIface.genError pm - ] - -setupChainValidationState :: - STS.Trace CHAIN -> - (ChainValidationState, Genesis.Config, AbstractToConcreteIdMaps) -setupChainValidationState sampleTrace = - let chainEnv@(_, abstractInitialUTxO, _, _, _) = STS._traceEnv sampleTrace - config = abEnvToCfg chainEnv - (initialUTxO, txIdMap) = elaborateInitialUTxO abstractInitialUTxO - initialAbstractToConcreteIdMaps = mempty {transactionIds = txIdMap} - initialStateNoUTxO = either (panic . show) identity $ initialChainValidationState config - initialState = initialStateNoUTxO {cvsUtxo = initialUTxO} - (cvs, abstractToConcreteIdMaps) = - either (panic . show) identity - $ foldM - (elaborateAndUpdate config) - (initialState, initialAbstractToConcreteIdMaps) - (STS.preStatesAndSignals STS.OldestFirst sampleTrace) - in (cvs, config, abstractToConcreteIdMaps) - --- | getDelegationMap . applyChainTick slot == previewDelegationMap slot -ts_scheduledDelegations :: TSProperty -ts_scheduledDelegations = withTestsTS 100 . property $ do - let traceLength = 10 :: Word64 - sampleTrace <- forAll $ STS.trace @CHAIN () traceLength - let (cvs, config, _) = setupChainValidationState sampleTrace - n = unSlotNumber . cvsLastSlot $ cvs - k = unSlotCount . configSlotSecurityParam $ config - slotNumber <- forAll $ SlotNumber <$> Gen.word64 (Range.linear n (n + 2 * k - 1)) - let tickedDelegationMap = getDelegationMap $ applyChainTick config slotNumber cvs - anachronisticDelegationMap = previewDelegationMap slotNumber cvs - tickedDelegationMap === anachronisticDelegationMap - --- | Given three slots, a < b < c, ticking from a to b and then b to c --- | should be the same as ticking from a to c. -ts_chainTick :: TSProperty -ts_chainTick = withTestsTS 100 . property $ do - let traceLength = 10 :: Word64 - sampleTrace <- forAll $ STS.trace @CHAIN () traceLength - let (cvs, config, _) = setupChainValidationState sampleTrace - n0 = unSlotNumber . cvsLastSlot $ cvs - k = unSlotCount . configSlotSecurityParam $ config - n2 <- forAll $ Gen.word64 (Range.linear n0 (n0 + 2 * k)) - n1 <- forAll $ Gen.word64 (Range.linear n0 n2) - let tick n = applyChainTick config (SlotNumber n) - (tick n2 . tick n1) cvs === tick n2 cvs - --- | A transaction should validate in the mempool at a given slot when --- it validates in a block issued for that same slot. -ts_mempoolValidation :: TSProperty -ts_mempoolValidation = withTestsTS 100 . property $ do - let traceLength = 10 :: Word64 - sampleTrace <- forAll $ STS.trace @CHAIN () traceLength - let (Spec.Slot slot, utxo0, _, _, blockCount) = STS._traceEnv sampleTrace - abstractChainState@(_stateSlot, allowedDelegators, h, utxoState, diState, upiState) = - STS.lastState sampleTrace - (cvs, config, abstractToConcreteIdMaps) = setupChainValidationState sampleTrace - pm = Genesis.configProtocolMagicId config - txIdMap = transactionIds abstractToConcreteIdMaps - upIdMap = proposalIds abstractToConcreteIdMaps - genSlot <- forAll $ (slot +) <$> Gen.integral (Range.linear 1 20) - let nextSlot = Spec.Slot genSlot - pparams = Spec.protocolParameters upiState - utxoEnv = STS.UTxOEnv utxo0 pparams - transaction <- forAll $ STS.sigGen @STS.UTXOW utxoEnv utxoState - let txAux = fst $ elaborateTxWitsBSWithMap txIdMap transaction - mempoolTx = MempoolTx txAux - - let dsEnv = - Spec.DSEnv - { Spec._dSEnvAllowedDelegators = Set.fromList . toList $ allowedDelegators - , Spec._dSEnvEpoch = STS.sEpoch nextSlot blockCount - , Spec._dSEnvSlot = nextSlot - , Spec._dSEnvK = blockCount - } - dcert <- forAll $ head <$> Spec.dcertsGen dsEnv diState - let mempoolDCert = addAnnotation . MempoolDlg . elaborateDCert pm <$> dcert - - let upiEnv :: Spec.UPIEnv - upiEnv = - ( nextSlot - , Spec._dIStateDelegationMap diState - , blockCount - , fromIntegral $ length allowedDelegators - ) - (uProp, vote) <- forAll $ fmap (take 1) <$> Spec.updateProposalAndVotesGen upiEnv upiState - - let mempoolUpdatePropAndVote = case uProp of - Nothing -> [] - Just up -> - let up' = elaborateUpdateProposal pm up - upIdMap' = Map.insert (Spec._upId up) (H.serializeCborHash up') upIdMap - vote' = elaborateVote pm upIdMap' <$> vote - in addAnnotation - <$> [MempoolUpdateProposal up'] - <> (MempoolUpdateVote <$> vote') - - let mempoolPayloads = - [mempoolTx] - <> mempoolUpdatePropAndVote - <> maybeToList mempoolDCert - - issuerKey <- - let env :: STS.Environment STS.SIGCNT - env = - ( pparams - , Spec._dIStateDelegationMap diState - , blockCount - ) - in forAll $ STS.issuer env allowedDelegators - aBlockVersion <- forAll $ Spec.protocolVersionEndorsementGen upiEnv upiState - let abstractBlock = - STS.mkBlock - h - nextSlot - issuerKey - aBlockVersion - (maybeToList dcert) - uProp - vote - [transaction] - concreteBlock = - elaborateBlock - config - cvs - abstractToConcreteIdMaps - abstractChainState - abstractBlock - - let validationMode = ValidationMode BlockValidation TxValidation - apply1 :: - ChainValidationState -> - AMempoolPayload ByteString -> - Either ApplyMempoolPayloadErr ChainValidationState - apply1 c mp = applyMempoolPayload validationMode config (SlotNumber genSlot) mp c - headerHash = coerce (H.serializeCborHash (0 :: Int)) :: HeaderHash - applyMempoolPayloadResult = foldM apply1 cvs mempoolPayloads - validateBlockResult = - validateBlock config validationMode concreteBlock headerHash cvs :: - Either ChainValidationError ChainValidationState - - annotateShow applyMempoolPayloadResult - annotateShow validateBlockResult - isRight validateBlockResult === isRight applyMempoolPayloadResult - where - addAnnotation :: MempoolPayload -> AMempoolPayload ByteString - addAnnotation = reAnnotateUsing encCBOR decCBOR diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Common/Address.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Common/Address.hs deleted file mode 100644 index 1fc3085bba2..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Common/Address.hs +++ /dev/null @@ -1,34 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE NumDecimals #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TemplateHaskell #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Chain.Common.Address ( - tests, -) -where - -import Cardano.Chain.Common (addrNetworkMagic, isRedeemAddress) -import Cardano.Prelude -import Hedgehog (cover, forAll, property, (===)) -import Test.Cardano.Chain.Common.Gen (genAddress, genAddressWithNM, genNetworkMagic) -import Test.Cardano.Prelude -import Test.Options (TSGroup, TSProperty, withTestsTS) - -ts_prop_addressNetworkMagicIdentity :: TSProperty -ts_prop_addressNetworkMagicIdentity = - withTestsTS 1000 . property $ do - nm <- forAll genNetworkMagic - addr <- forAll (genAddressWithNM nm) - nm === addrNetworkMagic addr - -ts_prop_isRedeemAddress :: TSProperty -ts_prop_isRedeemAddress = - withTestsTS 1000 . property $ do - addr <- forAll genAddress - cover 30 "Redeem Address" $ isRedeemAddress addr - cover 30 "Pubkey Address" $ not (isRedeemAddress addr) - -tests :: TSGroup -tests = $$discoverPropArg diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Common/Attributes.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Common/Attributes.hs deleted file mode 100644 index 02917912664..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Common/Attributes.hs +++ /dev/null @@ -1,24 +0,0 @@ -{-# LANGUAGE TemplateHaskell #-} - -module Test.Cardano.Chain.Common.Attributes ( - tests, -) -where - -import Cardano.Prelude -import Hedgehog (assert, forAll, property) -import Hedgehog.Internal.Show (mkValue) -import Test.Cardano.Chain.Common.Gen (genAddrAttributes, genAttributes) -import Test.Cardano.Prelude -import Test.Options (TSGroup, TSProperty, withTestsTS) - --- | Test wether instance Show (Attributes AddrAttributes) makes a string that --- is useful for gebugging. More specifically, Hedgehog is able to parse it. -ts_prop_show_AddressAttributes_is_haskell :: TSProperty -ts_prop_show_AddressAttributes_is_haskell = - withTestsTS 1000 . property $ do - attr <- forAll $ genAttributes genAddrAttributes - assert $ isJust $ mkValue attr - -tests :: TSGroup -tests = $$discoverPropArg diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Common/CBOR.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Common/CBOR.hs deleted file mode 100644 index 2a9f0c7f6ba..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Common/CBOR.hs +++ /dev/null @@ -1,374 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TemplateHaskell #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Chain.Common.CBOR ( - tests, -) -where - -import Cardano.Chain.Common ( - AddrAttributes (..), - AddrSpendingData (..), - AddrType (..), - Attributes (..), - BlockCount (..), - ChainDifficulty (..), - TxFeePolicy (..), - TxSizeLinear (..), - decodeAddressBase58, - decodeCrcProtected, - encodeAddressBase58, - encodeCrcProtected, - isRedeemAddress, - mkAttributes, - mkKnownLovelace, - mkMerkleTree, - mtRoot, - rationalToLovelacePortion, - ) -import Cardano.Crypto ( - Hash, - abstractHash, - redeemDeterministicKeyGen, - ) -import Cardano.Crypto.Raw (Raw (..)) -import Cardano.Ledger.Binary ( - Case (..), - EncCBOR, - SizeOverride (..), - byronProtVer, - decodeFullDecoder, - serialize, - szCases, - ) -import Cardano.Prelude hiding (check) -import qualified Data.Map as M -import GetDataFileName ((<:<)) -import Hedgehog (Gen, Property, cover, forAll, property, (===)) -import qualified Hedgehog as H -import Test.Cardano.Chain.Common.Example ( - exampleAddrSpendingData_VerKey, - exampleAddress, - exampleAddress1, - exampleAddress2, - exampleAddress3, - exampleAddress4, - exampleKeyHash, - ) -import Test.Cardano.Chain.Common.Gen ( - genAddrAttributes, - genAddrSpendingData, - genAddrType, - genAddress, - genAttributes, - genBlockCount, - genChainDifficulty, - genKeyHash, - genLovelace, - genLovelaceError, - genLovelacePortion, - genMerkleRoot, - genMerkleTree, - genTxFeePolicy, - genTxSizeLinear, - ) -import Test.Cardano.Crypto.CBOR (getBytes) -import Test.Cardano.Crypto.Gen (genHashRaw) -import Test.Cardano.Ledger.Binary.Vintage.Helpers (SizeTestConfig (..), scfg, sizeTest) -import Test.Cardano.Ledger.Binary.Vintage.Helpers.GoldenRoundTrip ( - goldenTestCBOR, - roundTripsCBORBuildable, - roundTripsCBORShow, - ) -import Test.Cardano.Prelude -import Test.Options (TSGroup, TSProperty, concatTSGroups, eachOfTS) - --------------------------------------------------------------------------------- --- CRC encoding --------------------------------------------------------------------------------- - -prop_roundTripCrcProtected :: Property -prop_roundTripCrcProtected = property $ do - x <- forAll genAddress - let crcEncodedBS = serialize byronProtVer . encodeCrcProtected $ x - decodeFullDecoder byronProtVer "" decodeCrcProtected crcEncodedBS === Right x - --------------------------------------------------------------------------------- --- Address --------------------------------------------------------------------------------- -golden_Address0 :: Property -golden_Address0 = - goldenTestCBOR exampleAddress <:< "golden/cbor/common/Address0" - -golden_Address1 :: Property -golden_Address1 = - goldenTestCBOR exampleAddress1 <:< "golden/cbor/common/Address1" - -golden_Address2 :: Property -golden_Address2 = - goldenTestCBOR exampleAddress2 <:< "golden/cbor/common/Address2" - -golden_Address3 :: Property -golden_Address3 = - goldenTestCBOR exampleAddress3 <:< "golden/cbor/common/Address3" - -golden_Address4 :: Property -golden_Address4 = - goldenTestCBOR exampleAddress4 <:< "golden/cbor/common/Address4" - -golden_isRedeemAddrees :: Property -golden_isRedeemAddrees = - H.withTests 1 . property $ do - H.assert $ not (isRedeemAddress exampleAddress1) - H.assert $ isRedeemAddress exampleAddress2 - -ts_roundTripAddressCBOR :: TSProperty -ts_roundTripAddressCBOR = eachOfTS 1000 genAddress roundTripsCBORBuildable - -ts_roundTripAddress :: TSProperty -ts_roundTripAddress = - eachOfTS 1000 genAddress $ \addr -> do - cover 30 "Redeem Address" $ isRedeemAddress addr - cover 30 "Pubkey Address" $ not (isRedeemAddress addr) - decodeAddressBase58 (encodeAddressBase58 addr) === Right addr - --------------------------------------------------------------------------------- --- AddrSpendingData --------------------------------------------------------------------------------- -golden_AddrSpendingData_VerKey :: Property -golden_AddrSpendingData_VerKey = - goldenTestCBOR - exampleAddrSpendingData_VerKey - <:< "golden/cbor/common/AddrSpendingData_VerKey" - -golden_AddrSpendingData_Redeem :: Property -golden_AddrSpendingData_Redeem = - goldenTestCBOR asd <:< "golden/cbor/common/AddrSpendingData_Redeem" - where - asd = RedeemASD redeemVerificationKey - redeemVerificationKey = - case fst <$> redeemDeterministicKeyGen (getBytes 0 32) of - Nothing -> panic "golden_AddrSpendingData_Redeem: impossible" - Just rk -> rk - -ts_roundTripAddrSpendingDataCBOR :: TSProperty -ts_roundTripAddrSpendingDataCBOR = - eachOfTS 1000 genAddrSpendingData roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- AddrType --------------------------------------------------------------------------------- -golden_AddrType_VK :: Property -golden_AddrType_VK = goldenTestCBOR ATVerKey <:< "golden/cbor/common/AddrType_VK" - -golden_AddrType_R :: Property -golden_AddrType_R = goldenTestCBOR ATRedeem <:< "golden/cbor/common/AddrType_R" - -ts_roundTripAddrTypeCBOR :: TSProperty -ts_roundTripAddrTypeCBOR = eachOfTS 1000 genAddrType roundTripsCBORShow - --------------------------------------------------------------------------------- --- BlockCount --------------------------------------------------------------------------------- -golden_BlockCount :: Property -golden_BlockCount = goldenTestCBOR bc <:< "golden/cbor/common/BlockCount" - where - bc = BlockCount 999 - -ts_roundTripBlockCountCBOR :: TSProperty -ts_roundTripBlockCountCBOR = eachOfTS 1000 genBlockCount roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- ChainDifficulty --------------------------------------------------------------------------------- -golden_ChainDifficulty :: Property -golden_ChainDifficulty = - goldenTestCBOR cd <:< "golden/cbor/common/ChainDifficulty" - where - cd = ChainDifficulty 9999 - -ts_roundTripChainDifficultyCBOR :: TSProperty -ts_roundTripChainDifficultyCBOR = - eachOfTS 1000 genChainDifficulty roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- Lovelace --------------------------------------------------------------------------------- -golden_Lovelace :: Property -golden_Lovelace = goldenTestCBOR c <:< "golden/cbor/common/Lovelace" - where - c = mkKnownLovelace @9732 - -ts_roundTripLovelaceCBOR :: TSProperty -ts_roundTripLovelaceCBOR = eachOfTS 1000 genLovelace roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- LovelaceError --------------------------------------------------------------------------------- -ts_roundTripLovelaceErrorCBOR :: TSProperty -ts_roundTripLovelaceErrorCBOR = - eachOfTS 1000 genLovelaceError roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- LovelacePortion --------------------------------------------------------------------------------- -golden_LovelacePortion :: Property -golden_LovelacePortion = - goldenTestCBOR c <:< "golden/cbor/common/LovelacePortion" - where - c = rationalToLovelacePortion 9702e-15 - -ts_roundTripLovelacePortionCBOR :: TSProperty -ts_roundTripLovelacePortionCBOR = - eachOfTS 1000 genLovelacePortion roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- KeyHash --------------------------------------------------------------------------------- -golden_KeyHash :: Property -golden_KeyHash = - goldenTestCBOR exampleKeyHash <:< "golden/cbor/common/KeyHash" - -ts_roundTripKeyHashCBOR :: TSProperty -ts_roundTripKeyHashCBOR = - eachOfTS 1000 genKeyHash roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- TxFeePolicy --------------------------------------------------------------------------------- -golden_TxFeePolicy_Linear :: Property -golden_TxFeePolicy_Linear = - goldenTestCBOR tfp <:< "golden/cbor/common/TxFeePolicy_Linear" - where - tfp = TxFeePolicyTxSizeLinear (TxSizeLinear c1 c2) - c1 = mkKnownLovelace @99 - c2 = 777 :: Rational - -ts_roundTripTxFeePolicyCBOR :: TSProperty -ts_roundTripTxFeePolicyCBOR = - eachOfTS 1000 genTxFeePolicy roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- TxSizeLinear --------------------------------------------------------------------------------- -golden_TxSizeLinear :: Property -golden_TxSizeLinear = - goldenTestCBOR tsl <:< "golden/cbor/common/TxSizeLinear" - where - tsl = TxSizeLinear c1 c2 - c1 = mkKnownLovelace @99 - c2 = 777 :: Rational - -ts_roundTripTxSizeLinearCBOR :: TSProperty -ts_roundTripTxSizeLinearCBOR = - eachOfTS 1000 genTxSizeLinear roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- Attributes --------------------------------------------------------------------------------- -golden_Attributes :: Property -golden_Attributes = goldenTestCBOR attrib <:< "golden/cbor/common/Attributes" - where - attrib = mkAttributes () - -ts_roundTripAttributes :: TSProperty -ts_roundTripAttributes = - eachOfTS 50 (genAttributes (pure ())) roundTripsCBORShow - --------------------------------------------------------------------------------- --- MerkleTree --------------------------------------------------------------------------------- -golden_MerkleTree :: Property -golden_MerkleTree = goldenTestCBOR mTree <:< "golden/cbor/common/MerkleTree" - where - mTree = mkMerkleTree [(abstractHash $ Raw ("9") :: Hash Raw)] - -ts_roundTripMerkleTree :: TSProperty -ts_roundTripMerkleTree = - eachOfTS 10 (genMerkleTree genHashRaw) roundTripsCBORShow - --------------------------------------------------------------------------------- --- MerkleRoot --------------------------------------------------------------------------------- -golden_MerkleRoot :: Property -golden_MerkleRoot = goldenTestCBOR mTree <:< "golden/cbor/common/MerkleRoot" - where - mTree = mtRoot $ mkMerkleTree [(abstractHash $ Raw ("9") :: Hash Raw)] - -ts_roundTripMerkleRoot :: TSProperty -ts_roundTripMerkleRoot = - eachOfTS 10 (genMerkleRoot genHashRaw) roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- Size estimates --------------------------------------------------------------------------------- -sizeEstimates :: H.Group -sizeEstimates = - let check :: forall a. (Show a, EncCBOR a) => Gen a -> Property - check g = sizeTest $ scfg {gen = g} - - -- Explicit bounds for types, based on the generators from Gen. - attrUnitSize = - ( typeRep (Proxy @(Attributes ())) - , SizeConstant 1 - ) - attrAddrSize = - ( typeRep (Proxy @(Attributes AddrAttributes)) - , SizeConstant (szCases [Case "min" 1, Case "max" 1024]) - ) - in H.Group - "Encoded size bounds for core types." - [ ("Lovelace", check genLovelace) - , ("BlockCount", check genBlockCount) - , - ( "Attributes ()" - , sizeTest - $ scfg - { gen = genAttributes (pure ()) - , addlCtx = M.fromList [attrUnitSize] - } - ) - , - ( "Attributes AddrAttributes" - , sizeTest - $ scfg - { gen = genAttributes genAddrAttributes - , addlCtx = M.fromList [attrAddrSize] - } - ) - , - ( "Address" - , sizeTest - $ scfg - { gen = genAddress - , addlCtx = M.fromList [attrAddrSize] - } - ) - , - ( "AddrSpendingData" - , sizeTest - $ scfg - { gen = genAddrSpendingData - , addlCtx = - M.fromList - [ - ( typeRep (Proxy @AddrSpendingData) - , SelectCases ["VerKeyASD", "RedeemASD"] - ) - ] - } - ) - , ("AddrType", check genAddrType) - ] - --------------------------------------------------------------------------------- --- Main test export --------------------------------------------------------------------------------- - -tests :: TSGroup -tests = - concatTSGroups - [const $$discoverGolden, $$discoverRoundTripArg, const sizeEstimates] diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Common/Compact.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Common/Compact.hs deleted file mode 100644 index 6168c1f0b78..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Common/Compact.hs +++ /dev/null @@ -1,52 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TemplateHaskell #-} -{-# LANGUAGE NoImplicitPrelude #-} - -module Test.Cardano.Chain.Common.Compact ( - tests, -) -where - -import Cardano.Chain.Common (fromCompactAddress, toCompactAddress) -import Cardano.HeapWords (HeapWords (..)) -import Cardano.Prelude -import Hedgehog (MonadTest, assert, forAll, property, tripping) -import Test.Cardano.Chain.Common.Gen (genAddress) -import Test.Cardano.Prelude (discoverPropArg, discoverRoundTripArg) -import Test.Options (TSGroup, TSProperty, concatTSGroups, eachOfTS, withTestsTS) - --------------------------------------------------------------------------------- --- Compact Address --------------------------------------------------------------------------------- - -ts_roundTripCompactAddress :: TSProperty -ts_roundTripCompactAddress = - eachOfTS 1000 genAddress (trippingCompact toCompactAddress fromCompactAddress) - -ts_prop_heapWordsSavingsCompactAddress :: TSProperty -ts_prop_heapWordsSavingsCompactAddress = withTestsTS 1000 - $ property - $ do - addr <- forAll genAddress - let compactAddr = toCompactAddress addr - assert $ heapWords compactAddr < heapWords addr - --------------------------------------------------------------------------------- --- Tripping util --------------------------------------------------------------------------------- - -trippingCompact :: - (HasCallStack, MonadTest m, Show a, Show b, Eq a) => - (a -> b) -> - (b -> a) -> - a -> - m () -trippingCompact toCompact fromCompact x = - tripping x toCompact (Identity . fromCompact) - --------------------------------------------------------------------------------- --- Main test export --------------------------------------------------------------------------------- - -tests :: TSGroup -tests = concatTSGroups [$$discoverPropArg, $$discoverRoundTripArg] diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Common/Example.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Common/Example.hs deleted file mode 100644 index 810ffdd1444..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Common/Example.hs +++ /dev/null @@ -1,88 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -{-# OPTIONS_GHC -Wno-incomplete-uni-patterns #-} - -module Test.Cardano.Chain.Common.Example ( - exampleAddress, - exampleAddress1, - exampleAddress2, - exampleAddress3, - exampleAddress4, - exampleAttributes, - exampleAddrSpendingData_VerKey, - exampleChainDifficulty, - exampleKeyHash, -) -where - -import Cardano.Chain.Common ( - AddrAttributes (..), - AddrSpendingData (..), - Address, - Attributes, - ChainDifficulty (..), - HDAddressPayload (..), - KeyHash, - NetworkMagic (..), - hashKey, - makeAddress, - mkAttributes, - ) -import Cardano.Prelude -import Test.Cardano.Crypto.CBOR (getBytes) -import Test.Cardano.Crypto.Example ( - exampleRedeemVerificationKey, - exampleVerificationKey, - exampleVerificationKeys, - ) - -exampleAttributes :: Attributes () -exampleAttributes = mkAttributes () - -exampleAddrSpendingData_VerKey :: AddrSpendingData -exampleAddrSpendingData_VerKey = VerKeyASD exampleVerificationKey - -exampleAddress :: Address -exampleAddress = makeAddress exampleAddrSpendingData_VerKey attrs - where - attrs = AddrAttributes hap nm - hap = Just (HDAddressPayload (getBytes 32 32)) - nm = NetworkMainOrStage - -exampleAddress1 :: Address -exampleAddress1 = makeAddress easd attrs - where - easd = VerKeyASD vk - [vk] = exampleVerificationKeys 24 1 - attrs = AddrAttributes hap nm - hap = Nothing :: Maybe HDAddressPayload - nm = NetworkMainOrStage - -exampleAddress2 :: Address -exampleAddress2 = makeAddress easd attrs - where - easd = RedeemASD exampleRedeemVerificationKey - attrs = AddrAttributes hap nm - hap = Just (HDAddressPayload (getBytes 15 32)) - nm = NetworkMainOrStage - -exampleAddress3 :: Address -exampleAddress3 = makeAddress easd attrs - where - easd = VerKeyASD vk - [vk] = exampleVerificationKeys 20 1 - attrs = AddrAttributes hap nm - hap = Just (HDAddressPayload (getBytes 17 32)) - nm = NetworkTestnet 9973261 - -exampleAddress4 :: Address -exampleAddress4 = makeAddress easd attrs - where - easd = exampleAddrSpendingData_VerKey - attrs = AddrAttributes Nothing nm - nm = NetworkTestnet 11111911 - -exampleChainDifficulty :: ChainDifficulty -exampleChainDifficulty = ChainDifficulty 9999 - -exampleKeyHash :: KeyHash -exampleKeyHash = hashKey exampleVerificationKey diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Common/Gen.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Common/Gen.hs deleted file mode 100644 index 1a1c4476dc3..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Common/Gen.hs +++ /dev/null @@ -1,203 +0,0 @@ -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE NumDecimals #-} -{-# LANGUAGE OverloadedStrings #-} - -module Test.Cardano.Chain.Common.Gen ( - genAddrAttributes, - genAddrAttributesWithNM, - genAddress, - genAddressWithNM, - genAddrType, - genAddrSpendingData, - genAttributes, - genBlockCount, - genCanonicalTxFeePolicy, - genChainDifficulty, - genCompactAddress, - genCustomLovelace, - genLovelace, - genLovelaceError, - genLovelaceWithRange, - genLovelacePortion, - genMerkleRoot, - genMerkleTree, - genNetworkMagic, - genScriptVersion, - genKeyHash, - genTxFeePolicy, - genTxSizeLinear, -) -where - -import Cardano.Chain.Common ( - AddrAttributes (..), - AddrSpendingData (..), - AddrType (..), - Address (..), - Attributes, - BlockCount (..), - ChainDifficulty (..), - CompactAddress, - HDAddressPayload (..), - KeyHash, - Lovelace, - LovelaceError (..), - LovelacePortion, - MerkleRoot (..), - MerkleTree, - NetworkMagic (..), - TxFeePolicy (..), - TxSizeLinear (..), - hashKey, - makeAddress, - maxLovelaceVal, - mkAttributes, - mkLovelace, - mkMerkleTree, - mtRoot, - rationalToLovelacePortion, - toCompactAddress, - ) -import Cardano.Ledger.Binary (EncCBOR) -import Cardano.Prelude -import Formatting (build, sformat) -import Hedgehog -import qualified Hedgehog.Gen as Gen -import qualified Hedgehog.Range as Range -import Test.Cardano.Crypto.Gen (genRedeemVerificationKey, genVerificationKey) -import Test.Cardano.Prelude (gen32Bytes) - -genAddrAttributes :: Gen AddrAttributes -genAddrAttributes = genAddrAttributesWithNM =<< genNetworkMagic - -genAddrAttributesWithNM :: NetworkMagic -> Gen AddrAttributes -genAddrAttributesWithNM nm = AddrAttributes <$> hap <*> pure nm - where - hap = Gen.maybe genHDAddressPayload - -genHDAddressPayload :: Gen HDAddressPayload -genHDAddressPayload = HDAddressPayload <$> gen32Bytes - -genAddress :: Gen Address -genAddress = makeAddress <$> genAddrSpendingData <*> genAddrAttributes - -genAddressWithNM :: NetworkMagic -> Gen Address -genAddressWithNM nm = - makeAddress - <$> genAddrSpendingData - <*> genAddrAttributesWithNM nm - -genAddrType :: Gen AddrType -genAddrType = Gen.choice [pure ATVerKey, pure ATRedeem] - -genAddrSpendingData :: Gen AddrSpendingData -genAddrSpendingData = - Gen.choice [VerKeyASD <$> genVerificationKey, RedeemASD <$> genRedeemVerificationKey] - -genAttributes :: Gen a -> Gen (Attributes a) -genAttributes genA = mkAttributes <$> genA - -genBlockCount :: Gen BlockCount -genBlockCount = BlockCount <$> Gen.word64 Range.constantBounded - -genCanonicalTxFeePolicy :: Gen TxFeePolicy -genCanonicalTxFeePolicy = TxFeePolicyTxSizeLinear <$> genCanonicalTxSizeLinear - -genCanonicalTxSizeLinear :: Gen TxSizeLinear -genCanonicalTxSizeLinear = TxSizeLinear <$> genLovelace' <*> genMultiplier - where - genLovelace' :: Gen Lovelace - genLovelace' = - mkLovelace - <$> Gen.word64 (Range.constant 0 maxCanonicalLovelaceVal) - >>= \case - Right lovelace -> pure lovelace - Left err -> - panic - $ sformat - ("The impossible happened in genLovelace: " . build) - err - - maxCanonicalLovelaceVal :: Word64 - maxCanonicalLovelaceVal = 9e6 - -genChainDifficulty :: Gen ChainDifficulty -genChainDifficulty = ChainDifficulty <$> Gen.word64 Range.constantBounded - -genCompactAddress :: Gen CompactAddress -genCompactAddress = toCompactAddress <$> genAddress - -genCustomLovelace :: Word64 -> Gen Lovelace -genCustomLovelace size = genLovelaceWithRange (Range.linear 0 size) - -genLovelace :: Gen Lovelace -genLovelace = genLovelaceWithRange (Range.constant 0 maxLovelaceVal) - -genLovelaceError :: Gen LovelaceError -genLovelaceError = - Gen.choice - [ LovelaceOverflow <$> Gen.word64 overflowRange - , LovelaceTooLarge <$> Gen.integral tooLargeRange - , LovelaceTooSmall <$> Gen.integral tooSmallRange - , uncurry LovelaceUnderflow <$> genUnderflowErrorValues - ] - where - overflowRange :: Range Word64 - overflowRange = Range.constant (maxLovelaceVal + 1) (maxBound :: Word64) - - tooLargeRange :: Range Integer - tooLargeRange = - Range.constant - (fromIntegral (maxLovelaceVal + 1)) - (fromIntegral (maxBound :: Word64)) - - tooSmallRange :: Range Integer - tooSmallRange = Range.constant (fromIntegral (minBound :: Int)) (-1) - - genUnderflowErrorValues :: Gen (Word64, Word64) - genUnderflowErrorValues = do - a <- Gen.word64 (Range.constant 0 (maxBound - 1)) - b <- Gen.word64 (Range.constant a maxBound) - pure (a, b) - -genLovelaceWithRange :: Range Word64 -> Gen Lovelace -genLovelaceWithRange r = - mkLovelace <$> Gen.word64 r >>= \case - Right lovelace -> pure lovelace - Left err -> - panic $ sformat ("The impossible happened in genLovelace: " . build) err - -genLovelacePortion :: Gen LovelacePortion -genLovelacePortion = - rationalToLovelacePortion . realToFrac <$> Gen.double (Range.constant 0 1) - --- slow -genMerkleTree :: EncCBOR a => Gen a -> Gen (MerkleTree a) -genMerkleTree genA = mkMerkleTree <$> Gen.list (Range.linear 0 10) genA - --- slow -genMerkleRoot :: EncCBOR a => Gen a -> Gen (MerkleRoot a) -genMerkleRoot genA = mtRoot <$> genMerkleTree genA - -genNetworkMagic :: Gen NetworkMagic -genNetworkMagic = - Gen.choice - [ pure NetworkMainOrStage - , NetworkTestnet <$> Gen.word32 Range.constantBounded - ] - -genScriptVersion :: Gen Word16 -genScriptVersion = Gen.word16 Range.constantBounded - -genKeyHash :: Gen KeyHash -genKeyHash = hashKey <$> genVerificationKey - -genTxFeePolicy :: Gen TxFeePolicy -genTxFeePolicy = TxFeePolicyTxSizeLinear <$> genTxSizeLinear - -genTxSizeLinear :: Gen TxSizeLinear -genTxSizeLinear = TxSizeLinear <$> genLovelace <*> genMultiplier - --- | Generate multipliers for the TxSizeLinear. -genMultiplier :: Gen Rational -genMultiplier = fromIntegral <$> Gen.word16 (Range.constant 0 1000) diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Common/Lovelace.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Common/Lovelace.hs deleted file mode 100644 index ae0a7a4c25d..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Common/Lovelace.hs +++ /dev/null @@ -1,127 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE NumDecimals #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TemplateHaskell #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Chain.Common.Lovelace ( - tests, -) -where - -import Cardano.Chain.Common ( - LovelaceError (..), - addLovelace, - integerToLovelace, - maxLovelaceVal, - mkKnownLovelace, - mkLovelace, - scaleLovelace, - subLovelace, - unsafeGetLovelace, - ) -import Cardano.Prelude -import Data.Data (Constr, toConstr) -import Formatting (build, sformat) -import Hedgehog (Property, discover, forAll, property, (===)) -import qualified Hedgehog.Gen as Gen -import qualified Hedgehog.Range as Range -import Test.Cardano.Chain.Common.Gen (genCustomLovelace, genLovelace) -import Test.Cardano.Prelude -import Test.Options (TSGroup, TSProperty, concatTSGroups, withTestsTS) - -ts_prop_addLovelace :: TSProperty -ts_prop_addLovelace = withTestsTS 1000 . property $ do - a <- forAll genLovelace - let newRange = maxLovelaceVal - unsafeGetLovelace a - b <- forAll $ genCustomLovelace newRange - assertIsRight $ addLovelace a b - -prop_addLovelaceOverflow :: Property -prop_addLovelaceOverflow = - property - $ assertIsLeftConstr - dummyLovelaceOverflow - (addLovelace (mkKnownLovelace @1) maxBound) - -ts_prop_integerToLovelace :: TSProperty -ts_prop_integerToLovelace = withTestsTS 1000 . property $ do - testInt <- - forAll - (Gen.integral $ Range.linear 0 (fromIntegral maxLovelaceVal :: Integer)) - assertIsRight $ integerToLovelace testInt - -prop_integerToLovelaceTooLarge :: Property -prop_integerToLovelaceTooLarge = - property - $ assertIsLeftConstr - dummyLovelaceTooLarge - (integerToLovelace (fromIntegral (maxLovelaceVal + 1) :: Integer)) - -prop_integerToLovelaceTooSmall :: Property -prop_integerToLovelaceTooSmall = - property - $ assertIsLeftConstr dummyLovelaceTooSmall (integerToLovelace (negate 1)) - -prop_maxLovelaceUnchanged :: Property -prop_maxLovelaceUnchanged = - property $ (fromIntegral maxLovelaceVal :: Integer) === 45e15 - -ts_prop_mkLovelace :: TSProperty -ts_prop_mkLovelace = withTestsTS 1000 . property $ do - testWrd <- forAll (Gen.word64 $ Range.linear 0 maxLovelaceVal) - assertIsRight $ mkLovelace testWrd - -prop_mkLovelaceTooLarge :: Property -prop_mkLovelaceTooLarge = - property - $ assertIsLeftConstr dummyLovelaceTooLarge (mkLovelace (maxLovelaceVal + 1)) - -prop_scaleLovelaceTooLarge :: Property -prop_scaleLovelaceTooLarge = - property - $ assertIsLeftConstr - dummyLovelaceTooLarge - (scaleLovelace maxBound (2 :: Integer)) - -ts_prop_subLovelace :: TSProperty -ts_prop_subLovelace = withTestsTS 1000 . property $ do - a <- forAll genLovelace - b <- forAll $ genCustomLovelace (unsafeGetLovelace a) - assertIsRight $ subLovelace a b - -ts_prop_subLovelaceUnderflow :: TSProperty -ts_prop_subLovelaceUnderflow = - withTestsTS 1000 - . property - $ do - -- (maxLovelaveVal - 1) to avoid an overflow error in `addLovelace` - -- in case expression - a <- forAll $ genCustomLovelace (maxLovelaceVal - 1) - case addLovelace a (mkKnownLovelace @1) of - Right added -> - assertIsLeftConstr dummyLovelaceUnderflow (subLovelace a added) - Left err -> - panic - $ sformat - ("The impossible happened in subLovelaceUnderflow: " . build) - err - -tests :: TSGroup -tests = concatTSGroups [const $$discover, $$discoverPropArg] - --------------------------------------------------------------------------------- --- Dummy values for constructor comparison in assertIsLeftConstr tests --------------------------------------------------------------------------------- - -dummyLovelaceOverflow :: Constr -dummyLovelaceOverflow = toConstr $ LovelaceOverflow 1 - -dummyLovelaceTooLarge :: Constr -dummyLovelaceTooLarge = toConstr $ LovelaceTooLarge 1 - -dummyLovelaceTooSmall :: Constr -dummyLovelaceTooSmall = toConstr $ LovelaceTooSmall 1 - -dummyLovelaceUnderflow :: Constr -dummyLovelaceUnderflow = toConstr $ LovelaceUnderflow 1 1 diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Config.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Config.hs deleted file mode 100644 index 1dda3ac3da7..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Config.hs +++ /dev/null @@ -1,33 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} - -module Test.Cardano.Chain.Config ( - readMainetCfg, -) -where - -import qualified Cardano.Chain.Genesis as Genesis -import Cardano.Crypto.Hashing (Hash, decodeHash) -import Cardano.Crypto.ProtocolMagic (RequiresNetworkMagic (..)) -import Cardano.Crypto.Raw (Raw) -import Cardano.Prelude - --- | Read the test mainnet configuration file from the @test@ directory. --- --- An error is thrown if it is not possible to elaborate a genesis --- configuration from the genesis file. --- --- We use `RequiresNoMagic`, as it indicates mainnet -readMainetCfg :: MonadIO m => m Genesis.Config -readMainetCfg = do - let genHash = - either - (panic . show . Genesis.GenesisHashDecodeError) - identity - ( decodeHash - "5f20df933584822601f9e3f8c024eb5eb252fe8cefb24d1317dc3d432e940ebb" - ) :: - Hash Raw - - either (panic . show) identity - <$> runExceptT - (Genesis.mkConfigFromFile RequiresNoMagic "mainnet-genesis.json" genHash) diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Delegation/CBOR.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Delegation/CBOR.hs deleted file mode 100644 index e072dd21aa2..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Delegation/CBOR.hs +++ /dev/null @@ -1,66 +0,0 @@ -{-# LANGUAGE TemplateHaskell #-} - -module Test.Cardano.Chain.Delegation.CBOR ( - tests, -) -where - -import Cardano.Chain.Delegation (unsafePayload) -import Cardano.Prelude -import Data.List ((!!)) -import GetDataFileName ((<:<)) -import Hedgehog (Property) -import Test.Cardano.Chain.Delegation.Example (exampleCertificates) -import Test.Cardano.Chain.Delegation.Gen ( - genCertificate, - genError, - genPayload, - ) -import Test.Cardano.Crypto.Gen (feedPM) -import Test.Cardano.Ledger.Binary.Vintage.Helpers.GoldenRoundTrip ( - goldenTestCBOR, - roundTripsCBORBuildable, - roundTripsCBORShow, - ) -import Test.Cardano.Prelude -import Test.Options (TSGroup, TSProperty, concatTSGroups, eachOfTS) - --------------------------------------------------------------------------------- --- Certificate --------------------------------------------------------------------------------- - -goldenCertificate :: Property -goldenCertificate = - goldenTestCBOR - cert - <:< "golden/cbor/delegation/Certificate" - where - cert = exampleCertificates !! 0 - -ts_roundTripCertificateCBOR :: TSProperty -ts_roundTripCertificateCBOR = - eachOfTS 200 (feedPM genCertificate) roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- DlgPayload --------------------------------------------------------------------------------- - -goldenDlgPayload :: Property -goldenDlgPayload = goldenTestCBOR dp <:< "golden/cbor/delegation/DlgPayload" - where - dp = unsafePayload (take 4 exampleCertificates) - -ts_roundTripDlgPayloadCBOR :: TSProperty -ts_roundTripDlgPayloadCBOR = - eachOfTS 100 (feedPM genPayload) roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- Error --------------------------------------------------------------------------------- - -ts_roundTripErrorCBOR :: TSProperty -ts_roundTripErrorCBOR = - eachOfTS 100 genError roundTripsCBORShow - -tests :: TSGroup -tests = concatTSGroups [const $$discoverGolden, $$discoverRoundTripArg] diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Delegation/Certificate.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Delegation/Certificate.hs deleted file mode 100644 index d616d5fec68..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Delegation/Certificate.hs +++ /dev/null @@ -1,72 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TemplateHaskell #-} - -module Test.Cardano.Chain.Delegation.Certificate ( - tests, -) -where - -import Cardano.Chain.Delegation ( - ACertificate (delegateVK), - Certificate, - isValid, - signCertificate, - ) -import Cardano.Ledger.Binary (byronProtVer, decodeFull, serialize, slice) -import Cardano.Prelude -import qualified Data.ByteString.Lazy as BSL -import Hedgehog (Group, Property, assert, discover, forAll, property) -import qualified Hedgehog.Gen as Gen -import Test.Cardano.Chain.Slotting.Gen (genEpochNumber) -import qualified Test.Cardano.Crypto.Dummy as Dummy -import Test.Cardano.Crypto.Gen (genSafeSigner, genVerificationKey) - --------------------------------------------------------------------------------- --- Test Group --------------------------------------------------------------------------------- - -tests :: Group -tests = $$discover - --------------------------------------------------------------------------------- --- Certificate Properties --------------------------------------------------------------------------------- - --- | Can validate 'Certificate's produced by 'signCertificate' -prop_certificateCorrect :: Property -prop_certificateCorrect = property $ do - cert <- - forAll - $ signCertificate Dummy.protocolMagicId - <$> genVerificationKey - <*> genEpochNumber - <*> genSafeSigner - - let aCert = annotateCert cert - - assert $ isValid Dummy.annotatedProtocolMagicId aCert - --- | Cannot validate 'Certificate's with incorrect verification keys -prop_certificateIncorrect :: Property -prop_certificateIncorrect = property $ do - cert <- - forAll - $ signCertificate Dummy.protocolMagicId - <$> genVerificationKey - <*> genEpochNumber - <*> genSafeSigner - badDelegateVK <- forAll $ Gen.filter (/= delegateVK cert) genVerificationKey - - let badCert = cert {delegateVK = badDelegateVK} - aBadCert = annotateCert badCert - - assert . not $ isValid Dummy.annotatedProtocolMagicId aBadCert - -annotateCert :: Certificate -> ACertificate ByteString -annotateCert cert = - fmap (BSL.toStrict . slice bytes) - . fromRight - (panic "prop_certificateCorrect: Round trip broken for Certificate") - $ decodeFull byronProtVer bytes - where - bytes = serialize byronProtVer cert diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Delegation/Example.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Delegation/Example.hs deleted file mode 100644 index fb4cfb0369c..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Delegation/Example.hs +++ /dev/null @@ -1,25 +0,0 @@ -module Test.Cardano.Chain.Delegation.Example ( - exampleCertificates, -) -where - -import Cardano.Chain.Delegation (Certificate, signCertificate) -import Cardano.Chain.Slotting (EpochNumber (..)) -import Cardano.Crypto (ProtocolMagicId (..)) -import Cardano.Prelude -import Data.List (zipWith4) -import Test.Cardano.Crypto.Example (exampleVerificationKeys, staticSafeSigners) - -staticProtocolMagics :: [ProtocolMagicId] -staticProtocolMagics = ProtocolMagicId <$> [0 .. 5] - -exampleCertificates :: [Certificate] -exampleCertificates = - zipWith4 - signCertificate - staticProtocolMagics - (exampleVerificationKeys 1 6) - exampleEpochIndices - staticSafeSigners - where - exampleEpochIndices = EpochNumber <$> [5, 1, 3, 27, 99, 247] diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Delegation/Gen.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Delegation/Gen.hs deleted file mode 100644 index 0ac5395e989..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Delegation/Gen.hs +++ /dev/null @@ -1,77 +0,0 @@ -module Test.Cardano.Chain.Delegation.Gen ( - genCanonicalCertificate, - genCertificate, - genCanonicalCertificateDistinctList, - genCertificateDistinctList, - genError, - genPayload, -) -where - -import Cardano.Chain.Delegation ( - ACertificate (delegateVK, issuerVK), - Certificate, - Payload, - signCertificate, - unsafePayload, - ) -import Cardano.Chain.Delegation.Validation.Scheduling (Error (..)) -import Cardano.Chain.Slotting (EpochNumber (..)) -import Cardano.Crypto (ProtocolMagicId) -import Cardano.Prelude -import Data.List (nub) -import Hedgehog (Gen) -import qualified Hedgehog.Gen as Gen -import qualified Hedgehog.Range as Range -import Test.Cardano.Chain.Common.Gen (genKeyHash) -import Test.Cardano.Chain.Slotting.Gen (genEpochNumber, genSlotNumber) -import Test.Cardano.Crypto.Gen (genSafeSigner, genVerificationKey) - -genCanonicalCertificate :: ProtocolMagicId -> Gen Certificate -genCanonicalCertificate pm = - signCertificate pm - <$> genVerificationKey - <*> (EpochNumber <$> Gen.word64 (Range.constant 0 1000000000000000)) - <*> genSafeSigner - -genCertificate :: ProtocolMagicId -> Gen Certificate -genCertificate pm = - signCertificate pm <$> genVerificationKey <*> genEpochNumber <*> genSafeSigner - -genCanonicalCertificateDistinctList :: ProtocolMagicId -> Gen [Certificate] -genCanonicalCertificateDistinctList pm = - noSelfSigningCerts <$> Gen.filter allDistinct pSKList - where - pSKList = Gen.list (Range.linear 0 5) (genCanonicalCertificate pm) - - allDistinct :: Eq a => [a] -> Bool - allDistinct ls = length (nub ls) == length ls - - noSelfSigningCerts :: [Certificate] -> [Certificate] - noSelfSigningCerts = filter (\x -> issuerVK x /= delegateVK x) - -genCertificateDistinctList :: ProtocolMagicId -> Gen [Certificate] -genCertificateDistinctList pm = - noSelfSigningCerts <$> Gen.filter allDistinct pSKList - where - pSKList = Gen.list (Range.linear 0 5) (genCertificate pm) - - allDistinct :: Eq a => [a] -> Bool - allDistinct ls = length (nub ls) == length ls - - noSelfSigningCerts :: [Certificate] -> [Certificate] - noSelfSigningCerts = filter (\x -> issuerVK x /= delegateVK x) - -genError :: Gen Error -genError = - Gen.choice - [ pure InvalidCertificate - , MultipleDelegationsForEpoch <$> genEpochNumber <*> genKeyHash - , MultipleDelegationsForSlot <$> genSlotNumber <*> genKeyHash - , NonGenesisDelegator <$> genKeyHash - , WrongEpoch <$> genEpochNumber <*> genEpochNumber - ] - -genPayload :: ProtocolMagicId -> Gen Payload -genPayload pm = - unsafePayload <$> Gen.list (Range.linear 0 5) (genCertificate pm) diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Delegation/Model.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Delegation/Model.hs deleted file mode 100644 index 32142d9c60d..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Delegation/Model.hs +++ /dev/null @@ -1,147 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE KindSignatures #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TemplateHaskell #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Chain.Delegation.Model ( - tests, -) -where - -import Byron.Spec.Ledger.Delegation (DELEG, SDELEG) -import qualified Byron.Spec.Ledger.Delegation as Abstract -import qualified Cardano.Chain.Delegation.Validation.Scheduling as Scheduling -import Cardano.Prelude -import Control.Arrow (left) -import qualified Control.State.Transition as STS -import Data.Coerce -import Data.IORef -import Hedgehog -import qualified Hedgehog.Gen as Gen -import qualified Hedgehog.Range as Range -import qualified Test.Cardano.Chain.Elaboration.Delegation as E -import qualified Test.Cardano.Crypto.Dummy as Dummy -import qualified Test.Control.State.Transition.Generator as STS -import Prelude (id) - --------------------------------------------------------------------------------- --- SDELEG Property --------------------------------------------------------------------------------- - -prop_commandSDELEG :: Property -prop_commandSDELEG = withTests 25 . property $ do - concreteRef <- liftIO $ newIORef initialConcreteState - - let traceLength = 20 :: Word64 - - abstractEnv <- forAll $ STS.envGen @DELEG traceLength - - actions <- - forAll - $ Gen.sequential - (Range.linear 1 (fromIntegral traceLength)) - initialState - [commandSDELEG concreteRef abstractEnv] - - cleanup concreteRef >> executeSequential initialState actions - where - initialConcreteState = Scheduling.State mempty mempty - - cleanup :: IORef Scheduling.State -> PropertyT IO () - cleanup = liftIO . flip writeIORef initialConcreteState - --------------------------------------------------------------------------------- --- SDELEG State --------------------------------------------------------------------------------- - -data StateSDELEG (v :: Type -> Type) = StateSDELEG - { abstractState :: Abstract.DSState - , lastAbstractResult :: Either (NonEmpty (STS.PredicateFailure SDELEG)) (STS.State SDELEG) - } - -initialState :: StateSDELEG v -initialState = StateSDELEG initialAbstractState (Right initialAbstractState) - where - initialAbstractState = Abstract.DSState [] mempty - --------------------------------------------------------------------------------- --- SDELEG Signal --------------------------------------------------------------------------------- - -newtype SignalSDELEG (v :: Type -> Type) - = SignalSDELEG (STS.Signal SDELEG) - deriving (Show) - -instance FunctorB SignalSDELEG where - bmap _ = coerce - -instance TraversableB SignalSDELEG where - btraverse _ s = pure (coerce s) - --------------------------------------------------------------------------------- --- SDELEG Command --------------------------------------------------------------------------------- - --- TODO: Change dcertGen to use 'MonadGen' -commandSDELEG :: - forall m. - MonadIO m => - IORef Scheduling.State -> - STS.Environment SDELEG -> - Command Gen m StateSDELEG -commandSDELEG concreteRef abstractEnv = Command gen execute callbacks - where - gen :: StateSDELEG v -> Maybe (Gen (SignalSDELEG v)) - gen st = - Just - $ SignalSDELEG - <$> do - mDCert <- Abstract.dcertGen abstractEnv keyEpochDelegations - case mDCert of - Nothing -> mzero - Just dCert -> pure $! dCert - where - keyEpochDelegations = Abstract._dSStateKeyEpochDelegations $ abstractState $ st - - execute :: - SignalSDELEG v -> - m (Either Scheduling.Error Scheduling.State) - execute (SignalSDELEG cert) = do - concreteState <- liftIO $ readIORef concreteRef - - let result :: Either Scheduling.Error Scheduling.State - result = - Scheduling.scheduleCertificate - (E.elaborateDSEnv abstractEnv) - concreteState - (E.elaborateDCertAnnotated Dummy.protocolMagicId cert) - - liftIO . writeIORef concreteRef $ fromRight concreteState result - - pure result - - callbacks :: - [ Callback - SignalSDELEG - (Either Scheduling.Error Scheduling.State) - StateSDELEG - ] - callbacks = - [ Update $ \StateSDELEG {abstractState} (SignalSDELEG cert) _ -> - let result = - STS.applySTS @SDELEG (STS.TRC (abstractEnv, abstractState, cert)) - in StateSDELEG (fromRight abstractState result) (left Prelude.id result) - , Ensure $ \_ StateSDELEG {lastAbstractResult} _ result -> do - annotateShow lastAbstractResult - annotateShow result - isRight lastAbstractResult === isRight result - ] - --------------------------------------------------------------------------------- --- Main Test Export --------------------------------------------------------------------------------- - -tests :: Group -tests = $$discover diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Elaboration/Block.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Elaboration/Block.hs deleted file mode 100644 index d2ba68f62b9..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Elaboration/Block.hs +++ /dev/null @@ -1,336 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE OverloadedLists #-} -{-# LANGUAGE OverloadedStrings #-} - --- | This module provides functionality for translating abstract blocks into --- concrete blocks. The abstract blocks are generated according the small-step --- rules for the blockchain (also called the blockchain specification). -module Test.Cardano.Chain.Elaboration.Block ( - abEnvToCfg, - elaborate, - elaborateBS, - rcDCert, - AbstractToConcreteIdMaps ( - AbstractToConcreteIdMaps, - proposalIds, - transactionIds - ), -) -where - -import qualified Byron.Spec.Chain.STS.Block as Abstract -import Byron.Spec.Chain.STS.Rule.Chain (CHAIN, disL) -import qualified Byron.Spec.Chain.STS.Rule.Epoch as Abstract -import qualified Byron.Spec.Ledger.Core as Abstract -import Byron.Spec.Ledger.Delegation ( - DCert, - delegationMap, - delegatorOf, - mkDCert, - ) -import qualified Byron.Spec.Ledger.UTxO as Abstract -import qualified Byron.Spec.Ledger.Update as Abstract.Update -import qualified Cardano.Chain.Block as Concrete -import Cardano.Chain.Common ( - BlockCount (BlockCount), - ChainDifficulty (ChainDifficulty), - hashKey, - ) -import qualified Cardano.Chain.Common as Common -import qualified Cardano.Chain.Delegation as Delegation -import qualified Cardano.Chain.Genesis as Genesis -import qualified Cardano.Chain.Slotting as Slotting -import qualified Cardano.Chain.Ssc as Ssc -import qualified Cardano.Chain.UTxO as UTxO -import qualified Cardano.Chain.Update as Update -import qualified Cardano.Crypto.Hashing as H -import Cardano.Crypto.ProtocolMagic (AProtocolMagic (..)) -import qualified Cardano.Ledger.Binary as Binary -import Cardano.Prelude hiding (to) -import Control.Arrow ((&&&)) -import qualified Control.State.Transition as Transition -import Data.Bimap (Bimap) -import qualified Data.ByteString.Lazy as LBS -import Data.Coerce (coerce) -import qualified Data.Map as Map -import qualified Data.Set as Set -import Data.Time (Day (ModifiedJulianDay), UTCTime (UTCTime)) -import Lens.Micro (to, (^.), (^..)) -import Test.Cardano.Chain.Elaboration.Delegation (elaborateDCert) -import Test.Cardano.Chain.Elaboration.Keys ( - elaborateVKeyGenesis, - vKeyPair, - vKeyToSKey, - ) -import Test.Cardano.Chain.Elaboration.Update ( - elaboratePParams, - elaborateProtocolVersion, - elaborateSoftwareVersion, - elaborateUpdateProposal, - elaborateVote, - ) -import Test.Cardano.Chain.UTxO.Model (elaborateTxWitnesses) -import qualified Test.Cardano.Crypto.Dummy as Dummy - -data AbstractToConcreteIdMaps = AbstractToConcreteIdMaps - { transactionIds :: !(Map Abstract.TxId UTxO.TxId) - , proposalIds :: !(Map Abstract.Update.UpId Update.UpId) - } - deriving (Eq, Generic, Show) - -instance Monoid AbstractToConcreteIdMaps where - mempty = AbstractToConcreteIdMaps mempty mempty - mconcat xs = - AbstractToConcreteIdMaps - (mconcat $ map transactionIds xs) - (mconcat $ map proposalIds xs) - -instance Semigroup AbstractToConcreteIdMaps where - a <> b = - AbstractToConcreteIdMaps - (transactionIds a <> transactionIds b) - (proposalIds a <> proposalIds b) - --- | Elaborate an abstract block into a concrete block (without annotations). -elaborate :: - AbstractToConcreteIdMaps -> - Genesis.Config -> - DCert -> - Concrete.ChainValidationState -> - Abstract.Block -> - (Concrete.Block, AbstractToConcreteIdMaps) -elaborate abstractToConcreteIdMaps config dCert st abstractBlock = - ( Concrete.ABlock - { Concrete.blockHeader = recomputeHashes bh0 - , Concrete.blockBody = bb0 - , Concrete.blockAnnotation = () - } - , AbstractToConcreteIdMaps - { transactionIds = txIdMap' - , proposalIds = proposalsIdMap' - } - ) - where - AbstractToConcreteIdMaps txIdMap proposalsIdMap = abstractToConcreteIdMaps - - pm = Genesis.configProtocolMagicId config - - bh0 = - Concrete.mkHeaderExplicit - pm - prevHash - (ChainDifficulty 0) - (Genesis.configEpochSlots config) - sid - ssk - cDCert - bb0 - (elaborateProtocolVersion $ Abstract._bProtVer $ Abstract._bBody abstractBlock) - -- TODO: the Byron spec needs to incorporate a software version in the blocks - ( elaborateSoftwareVersion - $ Abstract.Update.SwVer (Abstract.Update.ApName "") (Abstract.Update.ApVer 0) - ) - - prevHash :: Concrete.HeaderHash - prevHash = - either Concrete.genesisHeaderHash identity $ Concrete.cvsPreviousHash st - - sid = - Slotting.SlotNumber - (abstractBlock ^. Abstract.bHeader . Abstract.bhSlot . to Abstract.unSlot) - - issuer = abstractBlock ^. Abstract.bHeader . Abstract.bhIssuer - - ssk = vKeyToSKey issuer - - cDCert :: Delegation.Certificate - cDCert = elaborateDCert pm dCert - - bb0 = - Concrete.ABody - { Concrete.bodyTxPayload = UTxO.ATxPayload txPayload - , Concrete.bodySscPayload = Ssc.SscPayload - , Concrete.bodyDlgPayload = Delegation.UnsafeAPayload dcerts () - , Concrete.bodyUpdatePayload = updatePayload - } - - dcerts = - abstractBlock - ^.. ( Abstract.bBody - . Abstract.bDCerts - . traverse - . to - (elaborateDCert pm) - ) - - (txPayload, txIdMap') = - first (fmap void) - $ elaborateTxWitnesses - txIdMap - (abstractBlock ^. Abstract.bBody . Abstract.bUtxo) - - updatePayload :: Update.APayload () - updatePayload = - Update.APayload - (fmap snd maybeProposals) - ( fmap (elaborateVote pm proposalsIdMap') - $ Abstract._bUpdVotes - $ Abstract._bBody abstractBlock - ) - () -- Update payload annotation - maybeProposals :: Maybe (Abstract.Update.UProp, Update.Proposal) - maybeProposals = - fmap (identity &&& elaborateUpdateProposal pm) - $ Abstract._bUpdProp - $ Abstract._bBody abstractBlock - - proposalsIdMap' :: Map Abstract.Update.UpId Update.UpId - proposalsIdMap' = maybe proposalsIdMap addUpdateProposalId maybeProposals - where - addUpdateProposalId (abstractProposal, concreteProposal) = - Map.insert - (Abstract.Update._upId abstractProposal) - (H.serializeCborHash concreteProposal) - proposalsIdMap - - recomputeHashes :: Concrete.AHeader () -> Concrete.AHeader () - recomputeHashes concreteHeader = - concreteHeader {Concrete.aHeaderProof = Binary.Annotated alteredHdrProof ()} - where - alteredHdrProof :: Concrete.Proof - alteredHdrProof = - originalHeaderProof - { Concrete.proofDelegation = possiblyAlteredDelegationProof - , Concrete.proofUpdate = possiblyAlteredUpdateProof - , Concrete.proofUTxO = possiblyAlteredUTxOProof - } - where - originalHeaderProof :: Concrete.Proof - originalHeaderProof = - Binary.unAnnotated (Concrete.aHeaderProof concreteHeader) - - possiblyAlteredUTxOProof :: UTxO.TxProof - possiblyAlteredUTxOProof = - if (Abstract.isValid $ Abstract._bhUtxoHash $ Abstract._bHeader abstractBlock) - then originalUTxOProof - else originalUTxOProof {UTxO.txpWitnessesHash = coerce dummyHash} - where - originalUTxOProof :: UTxO.TxProof - originalUTxOProof = Concrete.proofUTxO originalHeaderProof - - possiblyAlteredDelegationProof :: H.Hash Delegation.Payload - possiblyAlteredDelegationProof = - if (Abstract.isValid $ Abstract._bhDlgHash $ Abstract._bHeader abstractBlock) - then Concrete.proofDelegation originalHeaderProof - else coerce dummyHash - - possiblyAlteredUpdateProof :: Update.Proof - possiblyAlteredUpdateProof = - if (Abstract.isValid $ Abstract._bhUpdHash $ Abstract._bHeader abstractBlock) - then Concrete.proofUpdate originalHeaderProof - else coerce dummyHash - - dummyHash :: H.Hash Int - dummyHash = H.serializeCborHash 0 - -elaborateBS :: - AbstractToConcreteIdMaps -> - Genesis.Config -> -- TODO: Do we want this to come from the abstract - -- environment? (in such case we wouldn't need this - -- parameter) - DCert -> - Concrete.ChainValidationState -> - Abstract.Block -> - (Concrete.ABlock ByteString, AbstractToConcreteIdMaps) -elaborateBS txIdMap config dCert st ab = - first (annotateBlock (Genesis.configEpochSlots config)) - $ elaborate txIdMap config dCert st ab - -annotateBlock :: Slotting.EpochSlots -> Concrete.Block -> Concrete.ABlock ByteString -annotateBlock epochSlots block = - let decodedABlockOrBoundary = - case Binary.decodeFullDecoder - Binary.byronProtVer - "Block" - (Concrete.decCBORABlockOrBoundary epochSlots) - bytes of - Left err -> - panic - $ "This function should be able to decode the block it encoded" - <> ". Instead I got: " - <> show err - Right abobb -> map (LBS.toStrict . Binary.slice bytes) abobb - in case decodedABlockOrBoundary of - Concrete.ABOBBlock bk -> bk - Concrete.ABOBBoundary _ -> - panic "This function should have decoded a block." - where - bytes = Binary.serialize Binary.byronProtVer (Concrete.encCBORABOBBlock epochSlots block) - --- | Re-construct an abstract delegation certificate from the abstract state. --- --- We need to do this because the delegation certificate is included in the --- block. -rcDCert :: - HasCallStack => - -- | Key for which the delegation certificate is being constructed. - Abstract.VKey -> - -- | Chain stability parameter - Abstract.BlockCount -> - Transition.State CHAIN -> - DCert -rcDCert vk k ast@(slot, _, _, _, _, _) = - mkDCert vkg sigVkgEpoch vk epoch - where - dm :: Bimap Abstract.VKeyGenesis Abstract.VKey - dm = ast ^. disL . delegationMap - - vkg = fromMaybe err $ delegatorOf dm vk - - err :: Abstract.VKeyGenesis - err = panic $ "No delegator found for key " <> show vk - - vkp = vKeyPair $ coerce vkg - - sigVkgEpoch = Abstract.sign (Abstract.sKey vkp) (vk, epoch) - - epoch = Abstract.sEpoch slot k - --- | Make a genesis configuration from an initial abstract environment of the --- trace. -abEnvToCfg :: Transition.Environment CHAIN -> Genesis.Config -abEnvToCfg (_currentSlot, _genesisUtxo, allowedDelegators, protocolParams, stableAfter) = - Genesis.Config - { Genesis.configGenesisData = genesisData - , Genesis.configGenesisHash = genesisHash - , Genesis.configReqNetMagic = rnm - , Genesis.configUTxOConfiguration = UTxO.defaultUTxOConfiguration - } - where - rnm = getRequiresNetworkMagic Dummy.aProtocolMagic - - genesisData = - Genesis.GenesisData - { Genesis.gdGenesisKeyHashes = Genesis.GenesisKeyHashes genesisKeyHashes - , Genesis.gdHeavyDelegation = Genesis.UnsafeGenesisDelegation [] -- We don't need initial heavyweight delegation. - , Genesis.gdStartTime = UTCTime (ModifiedJulianDay 0) 0 - , Genesis.gdNonAvvmBalances = Genesis.GenesisNonAvvmBalances [] - , Genesis.gdProtocolParameters = gPps - , Genesis.gdK = BlockCount $ Abstract.unBlockCount stableAfter - , Genesis.gdProtocolMagicId = Dummy.protocolMagicId - , Genesis.gdAvvmDistr = Genesis.GenesisAvvmBalances [] - } - - -- We shouldn't need to use 'coerce' after - -- https://github.com/intersectmbo/cardano-ledger/issues/332 gets - -- implemented. - genesisHash = Genesis.GenesisHash $ coerce $ H.serializeCborHash ("" :: ByteString) - - gPps = elaboratePParams protocolParams - - genesisKeyHashes :: Set Common.KeyHash - genesisKeyHashes = - Set.map (hashKey . elaborateVKeyGenesis) allowedDelegators diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Elaboration/Delegation.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Elaboration/Delegation.hs deleted file mode 100644 index 9cb2e26eb25..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Elaboration/Delegation.hs +++ /dev/null @@ -1,130 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TemplateHaskell #-} - -module Test.Cardano.Chain.Elaboration.Delegation ( - elaborateDCert, - elaborateDCertAnnotated, - elaborateDSEnv, - tests, -) -where - -import Byron.Spec.Ledger.Core ( - BlockCount (..), - Epoch (..), - Owner (..), - Slot (..), - VKey (..), - VKeyGenesis (..), - ) -import Byron.Spec.Ledger.Delegation (DCert (..), DSEnv (..), dcertGen, delegate, delegator) -import Cardano.Chain.Common (hashKey) -import qualified Cardano.Chain.Common as Concrete -import qualified Cardano.Chain.Delegation as Concrete -import qualified Cardano.Chain.Delegation as Concrete.Certificate -import qualified Cardano.Chain.Delegation.Validation.Scheduling as Scheduling -import qualified Cardano.Chain.Genesis as Genesis -import qualified Cardano.Chain.Slotting as Concrete -import Cardano.Crypto (ProtocolMagicId) -import Cardano.Crypto.Signing (noPassSafeSigner) -import Cardano.Ledger.Binary (Annotated (..), byronProtVer, serialize') -import Cardano.Prelude -import qualified Data.Set as Set -import Hedgehog (assert, cover, forAll, property, success) -import Test.Cardano.Chain.Config (readMainetCfg) -import Test.Cardano.Chain.Elaboration.Keys ( - elaborateKeyPair, - elaborateVKeyGenesis, - vKeyPair, - ) -import qualified Test.Cardano.Crypto.Dummy as Dummy -import Test.Cardano.Prelude -import Test.Options (TSGroup, TSProperty, withTestsTS) - -tests :: TSGroup -tests = $$discoverPropArg - -ts_prop_elaboratedCertsValid :: TSProperty -ts_prop_elaboratedCertsValid = - withTestsTS 50 - . property - $ do - config <- readMainetCfg - - let pm = Genesis.configProtocolMagicId config - - -- Generate and elaborate a certificate - mCert <- forAll $ dcertGen env Set.empty - - cover - 95 - "A certificate was generated" - (isJust mCert) - - -- Validate the certificate - case mCert of - Nothing -> - success -- We ignore 'Nothing' values when we the signal generator - -- fails. Coverage testing ensures we will not generate a - -- large portion of 'Nothing'. - Just cert -> - let concreteCert = elaborateDCertAnnotated pm cert - in assert - $ Concrete.Certificate.isValid (Annotated pm (serialize' byronProtVer pm)) concreteCert - where - env = - DSEnv - { _dSEnvAllowedDelegators = - Set.fromList - . fmap (VKeyGenesis . VKey . Owner) - $ [0 .. 6] - , _dSEnvEpoch = Epoch 0 - , _dSEnvSlot = Slot 0 - , _dSEnvK = BlockCount 2160 - } - -elaborateDCert :: ProtocolMagicId -> DCert -> Concrete.Certificate -elaborateDCert pm cert = - Concrete.signCertificate - pm - delegateVK - epochNo - (noPassSafeSigner delegatorSK) - where - VKeyGenesis delegatorVKey = delegator cert - (_, delegatorSK) = elaborateKeyPair $ vKeyPair delegatorVKey - (delegateVK, _) = elaborateKeyPair . vKeyPair $ delegate cert - - Epoch e = depoch cert - - epochNo :: Concrete.EpochNumber - epochNo = fromIntegral e - -elaborateDCertAnnotated :: - ProtocolMagicId -> DCert -> Concrete.ACertificate ByteString -elaborateDCertAnnotated pm = annotateDCert . elaborateDCert pm - where - annotateDCert :: Concrete.Certificate -> Concrete.ACertificate ByteString - annotateDCert cert = - cert - { Concrete.Certificate.aEpoch = Annotated omega (serialize' byronProtVer omega) - , Concrete.Certificate.annotation = serialize' byronProtVer cert - } - where - omega = Concrete.Certificate.epoch cert - -elaborateDSEnv :: DSEnv -> Scheduling.Environment -elaborateDSEnv abstractEnv = - Scheduling.Environment - { Scheduling.protocolMagic = Dummy.annotatedProtocolMagicId - , Scheduling.allowedDelegators = - Set.fromList - $ hashKey - . elaborateVKeyGenesis - <$> Set.toList genesisKeys - , Scheduling.currentEpoch = fromIntegral e - , Scheduling.currentSlot = Concrete.SlotNumber s - , Scheduling.k = Concrete.BlockCount k - } - where - DSEnv genesisKeys (Epoch e) (Slot s) (BlockCount k) = abstractEnv diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Elaboration/Keys.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Elaboration/Keys.hs deleted file mode 100644 index 1f89fdcaefe..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Elaboration/Keys.hs +++ /dev/null @@ -1,60 +0,0 @@ -module Test.Cardano.Chain.Elaboration.Keys ( - elaborateKeyPair, - elaborateVKey, - elaborateVKeyGenesis, - elaborateVKeyGenesisHash, - - -- * Abstract verification-key elaboration functions - vKeyPair, - vKeyToSKey, - vKeyToSafeSigner, -) -where - -import Byron.Spec.Ledger.Core ( - KeyPair, - Owner (Owner), - VKey (VKey), - VKeyGenesis (VKeyGenesis), - keyPair, - owner, - sKey, - ) -import Cardano.Chain.Common (KeyHash, hashKey) -import Cardano.Crypto.Signing ( - SafeSigner, - SigningKey, - VerificationKey, - deterministicKeyGen, - noPassSafeSigner, - ) -import Cardano.Prelude -import qualified Data.ByteString as BS -import Data.ByteString.Builder (integerDec, toLazyByteString) -import qualified Data.ByteString.Lazy as BSL - -elaborateKeyPair :: KeyPair -> (VerificationKey, SigningKey) -elaborateKeyPair kp = deterministicKeyGen $ padSeed seed - where - Owner o = owner $ sKey kp - padSeed s = - let padLength = max 0 (32 - BS.length s) in BS.replicate padLength 0 <> s - seed = BSL.toStrict . toLazyByteString . integerDec $ fromIntegral o - -vKeyPair :: VKey -> KeyPair -vKeyPair (VKey o) = keyPair o - -elaborateVKey :: VKey -> VerificationKey -elaborateVKey = fst . elaborateKeyPair . vKeyPair - -vKeyToSKey :: VKey -> SigningKey -vKeyToSKey = snd . elaborateKeyPair . vKeyPair - -vKeyToSafeSigner :: VKey -> SafeSigner -vKeyToSafeSigner = noPassSafeSigner . vKeyToSKey - -elaborateVKeyGenesis :: VKeyGenesis -> VerificationKey -elaborateVKeyGenesis (VKeyGenesis vk) = elaborateVKey vk - -elaborateVKeyGenesisHash :: VKeyGenesis -> KeyHash -elaborateVKeyGenesisHash = hashKey . elaborateVKeyGenesis diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Elaboration/UTxO.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Elaboration/UTxO.hs deleted file mode 100644 index c83d031b684..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Elaboration/UTxO.hs +++ /dev/null @@ -1,153 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeSynonymInstances #-} - -module Test.Cardano.Chain.Elaboration.UTxO ( - elaborateUTxOEnv, - elaborateUTxO, - elaborateTxBody, - elaborateTxBS, - elaborateTxOut, -) -where - -import qualified Byron.Spec.Ledger.Core as Abstract -import qualified Byron.Spec.Ledger.STS.UTXO as Abstract -import qualified Byron.Spec.Ledger.UTxO as Abstract -import qualified Cardano.Chain.Common as Concrete -import qualified Cardano.Chain.UTxO as Concrete -import qualified Cardano.Chain.UTxO.UTxO as Concrete.UTxO -import qualified Cardano.Chain.UTxO.Validation as Concrete.UTxO -import qualified Cardano.Chain.Update as Concrete -import Cardano.Crypto -import qualified Cardano.Ledger.Binary as CBOR -import Cardano.Prelude -import qualified Data.ByteString.Lazy as LBS -import qualified Data.List.NonEmpty as NE -import qualified Data.Map.Strict as M -import qualified Data.Vector as V -import Formatting hiding (bytes) -import Test.Cardano.Chain.Elaboration.Keys -import Test.Cardano.Chain.Genesis.Dummy -import qualified Test.Cardano.Crypto.Dummy as Dummy - -elaborateUTxOEnv :: Abstract.UTxOEnv -> Concrete.UTxO.Environment -elaborateUTxOEnv _abstractEnv = - Concrete.UTxO.Environment - { Concrete.UTxO.protocolMagic = Dummy.aProtocolMagic - , Concrete.UTxO.protocolParameters = - dummyProtocolParameters - { Concrete.ppTxFeePolicy = - Concrete.TxFeePolicyTxSizeLinear - $ Concrete.TxSizeLinear - (Concrete.mkKnownLovelace @0) - 0 - } - , Concrete.UTxO.utxoConfiguration = Concrete.defaultUTxOConfiguration - } - -elaborateUTxO :: - (Abstract.TxId -> Concrete.TxId) -> - Abstract.UTxO -> - Concrete.UTxO -elaborateUTxO elaborateTxId = - Concrete.UTxO.fromList - . fmap (elaborateUTxOEntry elaborateTxId) - . M.toList - . Abstract.unUTxO - -elaborateUTxOEntry :: - (Abstract.TxId -> Concrete.TxId) -> - (Abstract.TxIn, Abstract.TxOut) -> - (Concrete.TxIn, Concrete.TxOut) -elaborateUTxOEntry elaborateTxId (abstractTxIn, abstractTxOut) = - (concreteTxIn, concreteTxOut) - where - concreteTxOut = elaborateTxOut abstractTxOut - concreteTxIn = elaborateTxIn elaborateTxId abstractTxIn - -elaborateTxBS :: - (Abstract.TxId -> Concrete.TxId) -> - Abstract.Tx -> - Concrete.ATxAux ByteString -elaborateTxBS elaborateTxId = - annotateTxAux . elaborateTx elaborateTxId - where - annotateTxAux :: Concrete.TxAux -> Concrete.ATxAux ByteString - annotateTxAux txAux = - map (LBS.toStrict . CBOR.slice bytes) - . fromRight (panic "elaborateTxBS: Error decoding TxAux") - $ CBOR.decodeFull CBOR.byronProtVer bytes - where - bytes = CBOR.serialize CBOR.byronProtVer txAux - -elaborateTx :: - (Abstract.TxId -> Concrete.TxId) -> Abstract.Tx -> Concrete.TxAux -elaborateTx elaborateTxId (Abstract.Tx tx witnesses) = - Concrete.mkTxAux concreteTx (elaborateWitnesses concreteTx witnesses) - where - concreteTx = elaborateTxBody elaborateTxId tx - -elaborateTxBody :: (Abstract.TxId -> Concrete.TxId) -> Abstract.TxBody -> Concrete.Tx -elaborateTxBody elaborateTxId (Abstract.TxBody inputs outputs) = - Concrete.UnsafeTx - { Concrete.txInputs = elaborateTxIns elaborateTxId inputs - , Concrete.txOutputs = elaborateTxOuts outputs - , Concrete.txAttributes = Concrete.mkAttributes () - } - -elaborateWitnesses :: Concrete.Tx -> [Abstract.Wit] -> Concrete.TxWitness -elaborateWitnesses concreteTx = V.fromList . fmap (elaborateWitness concreteTx) - -elaborateWitness :: Concrete.Tx -> Abstract.Wit -> Concrete.TxInWitness -elaborateWitness concreteTx (Abstract.Wit key _) = - Concrete.VKWitness - concreteVK - signature - where - (concreteVK, concreteSK) = elaborateKeyPair $ vKeyPair key - signature = sign Dummy.protocolMagicId SignTx concreteSK sigData - sigData = Concrete.TxSigData $ serializeCborHash concreteTx - -elaborateTxIns :: - (Abstract.TxId -> Concrete.TxId) -> - [Abstract.TxIn] -> - NonEmpty Concrete.TxIn -elaborateTxIns elaborateTxId = - fromMaybe (panic "elaborateTxIns: Empty list of TxIns") - . NE.nonEmpty - . fmap - (elaborateTxIn elaborateTxId) - -elaborateTxIn :: - (Abstract.TxId -> Concrete.TxId) -> Abstract.TxIn -> Concrete.TxIn -elaborateTxIn elaborateTxId (Abstract.TxIn txId index) = - Concrete.TxInUtxo (elaborateTxId txId) (fromIntegral index) - -elaborateTxOuts :: [Abstract.TxOut] -> NonEmpty Concrete.TxOut -elaborateTxOuts = - fromMaybe - ( panic - "elaborateTxOuts: Tried to elaborate an empty list of Abstract.TxOuts" - ) - . NE.nonEmpty - . fmap elaborateTxOut - -elaborateTxOut :: Abstract.TxOut -> Concrete.TxOut -elaborateTxOut abstractTxOut = - Concrete.TxOut - { Concrete.txOutAddress = - Concrete.makeVerKeyAddress - (Concrete.makeNetworkMagic Dummy.protocolMagic) - (elaborateVKey abstractVK) - , Concrete.txOutValue = lovelaceValue - } - where - Abstract.TxOut (Abstract.Addr abstractVK) (Abstract.Lovelace value) = - abstractTxOut - - lovelaceValue = case Concrete.mkLovelace (fromIntegral value) of - Left err -> panic $ sformat build err - Right l -> l diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Elaboration/Update.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Elaboration/Update.hs deleted file mode 100644 index 7de0c54e1bc..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Elaboration/Update.hs +++ /dev/null @@ -1,244 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Chain.Elaboration.Update ( - elaboratePParams, - elaborateProtocolVersion, - elaborateSoftwareVersion, - elaborateUpdateProposal, - elaborateVote, -) -where - -import Byron.Spec.Ledger.Core (unSlotCount) -import Byron.Spec.Ledger.Core.Omniscient (signatureData, signatureVKey) -import qualified Byron.Spec.Ledger.GlobalParams as GP -import qualified Byron.Spec.Ledger.Update as Abstract -import qualified Cardano.Chain.Common as Concrete -import qualified Cardano.Chain.Slotting as Concrete -import qualified Cardano.Chain.Update as Concrete -import qualified Cardano.Chain.Update.Proposal as Proposal -import Cardano.Crypto (ProtocolMagicId) -import qualified Cardano.Crypto.Hashing as H -import Cardano.Prelude -import Data.Coerce (coerce) -import qualified Data.Map as Map -import qualified Data.Set as Set -import qualified Data.Text as Text -import Test.Cardano.Chain.Elaboration.Keys (elaborateVKey, vKeyToSafeSigner) -import Test.Cardano.Chain.Genesis.Dummy (dummyProtocolParameters) - -elaboratePParams :: Abstract.PParams -> Concrete.ProtocolParameters -elaboratePParams pps = - Concrete.ProtocolParameters - { Concrete.ppScriptVersion = fromIntegral $ Abstract._scriptVersion pps - , Concrete.ppSlotDuration = Concrete.ppSlotDuration dummyProtocolParameters - , Concrete.ppMaxBlockSize = 4096 * Abstract._maxBkSz pps - , Concrete.ppMaxHeaderSize = 95 * Abstract._maxHdrSz pps - , Concrete.ppMaxTxSize = 4096 * Abstract._maxTxSz pps - , Concrete.ppMaxProposalSize = 4096 * Abstract._maxPropSz pps - , Concrete.ppMpcThd = Concrete.rationalToLovelacePortion 0 - , Concrete.ppHeavyDelThd = Concrete.rationalToLovelacePortion 0 - , Concrete.ppUpdateVoteThd = Concrete.rationalToLovelacePortion 0 - , Concrete.ppUpdateProposalThd = Concrete.rationalToLovelacePortion 0 - , Concrete.ppUpdateProposalTTL = - Concrete.SlotNumber - $ unSlotCount - $ Abstract._upTtl pps - , Concrete.ppSoftforkRule = - Concrete.SoftforkRule - { Concrete.srInitThd = Concrete.rationalToLovelacePortion 0 - , -- See 'upAdptThd' in 'module Cardano.Chain.Update.ProtocolParameters' - Concrete.srMinThd = - Concrete.rationalToLovelacePortion - $ realToFrac - $ Abstract._upAdptThd pps - , Concrete.srThdDecrement = Concrete.rationalToLovelacePortion 0 - } - , Concrete.ppTxFeePolicy = - elaborateFeePolicy - (Abstract._factorA pps) - (Abstract._factorB pps) - , Concrete.ppUnlockStakeEpoch = Concrete.EpochNumber maxBound - } - -elaborateFeePolicy :: - Abstract.FactorA -> - Abstract.FactorB -> - Concrete.TxFeePolicy -elaborateFeePolicy (Abstract.FactorA a) (Abstract.FactorB b) = - Concrete.TxFeePolicyTxSizeLinear $ Concrete.TxSizeLinear aC bC - where - aC = intToLovelace a - bC = fromIntegral b % fromIntegral GP.c :: Rational - - intToLovelace :: Int -> Concrete.Lovelace - intToLovelace x = - case Concrete.mkLovelace (fromIntegral x) of - Left err -> panic $ "intToLovelace: " <> show err - Right l -> l - -elaborateProtocolVersion :: - Abstract.ProtVer -> - Concrete.ProtocolVersion -elaborateProtocolVersion (Abstract.ProtVer major minor alternative) = - -- TODO: the abstract version numbers should have the same type as the - -- concrete ones! - Concrete.ProtocolVersion - (fromIntegral major) - (fromIntegral minor) - (fromIntegral alternative) - -elaborateSoftwareVersion :: - Abstract.SwVer -> - Concrete.SoftwareVersion -elaborateSoftwareVersion abstractVersion = - Concrete.SoftwareVersion applicationName' applicationVersion' - where - Abstract.SwVer - (Abstract.ApName applicationName) - (Abstract.ApVer applicationVersion) = abstractVersion - applicationName' = Concrete.ApplicationName $ Text.pack applicationName - applicationVersion' = fromIntegral applicationVersion :: Concrete.NumSoftwareVersion - -elaborateUpdateProposal :: - ProtocolMagicId -> - Abstract.UProp -> - Concrete.AProposal () -elaborateUpdateProposal protocolMagicId abstractProposal = - Concrete.unsafeProposal - body - issuer - proposalSignature - where - body = elaborateProposalBody abstractProposal - issuer = elaborateVKey $ Abstract._upIssuer abstractProposal - signer = signatureVKey $ Abstract._upSig abstractProposal - signedProposalBody = - elaborateUpSD - $ signatureData - $ Abstract._upSig abstractProposal - -- To elaborate the signature, we extract the signer and the (abstract) - -- data that was signed from the signature of the abstract proposal. We - -- cannot simply sign the concrete proposal data, since the abstract signed - -- data might differ from the data in the certificate (for instance due to - -- invalid data generation). - -- - proposalSignature = - Concrete.signatureForProposal - protocolMagicId - signedProposalBody - safeSigner - safeSigner = vKeyToSafeSigner signer - -elaborateProposalBody :: - Abstract.UProp -> - Concrete.ProposalBody -elaborateProposalBody = elaborateUpSD . Abstract.getUpSigData - -elaborateUpSD :: Abstract.UpSD -> Concrete.ProposalBody -elaborateUpSD - ( protocolVersion - , protocolParameters - , softwareVersion - , systemTags - , _metadata - ) = - Proposal.ProposalBody - { Proposal.protocolVersion = - elaborateProtocolVersion protocolVersion - , Proposal.protocolParametersUpdate = - justifyProtocolParameters $ elaboratePParams protocolParameters - , Proposal.softwareVersion = - elaborateSoftwareVersion softwareVersion - , Proposal.metadata = - Map.fromList $ zip concreteSystemTags concreteSystemHashes - } - where - concreteSystemTags = - fmap elaborateSystemTag $ Set.toList systemTags - -- TODO: we might need different hashes here, which means that either the - -- elaborators should be able to generate random data, or the abstract - -- update payload should include (an abstract version of) these hashes. - concreteSystemHashes = - repeat $ Concrete.InstallerHash $ coerce $ H.serializeCborHash ("" :: ByteString) - --- | Convert a 'ProtocolParameters' value to a 'ProtocolParametersUpdate' -justifyProtocolParameters :: - Concrete.ProtocolParameters -> - Concrete.ProtocolParametersUpdate -justifyProtocolParameters parameters = - Concrete.ProtocolParametersUpdate - { Concrete.ppuScriptVersion = Just $ Concrete.ppScriptVersion parameters - , Concrete.ppuSlotDuration = Just $ Concrete.ppSlotDuration parameters - , Concrete.ppuMaxBlockSize = Just $ Concrete.ppMaxBlockSize parameters - , Concrete.ppuMaxHeaderSize = Just $ Concrete.ppMaxHeaderSize parameters - , Concrete.ppuMaxTxSize = Just $ Concrete.ppMaxTxSize parameters - , Concrete.ppuMaxProposalSize = Just $ Concrete.ppMaxProposalSize parameters - , Concrete.ppuMpcThd = Just $ Concrete.ppMpcThd parameters - , Concrete.ppuHeavyDelThd = Just $ Concrete.ppHeavyDelThd parameters - , Concrete.ppuUpdateVoteThd = Just $ Concrete.ppUpdateVoteThd parameters - , Concrete.ppuUpdateProposalThd = Just $ Concrete.ppUpdateProposalThd parameters - , Concrete.ppuUpdateProposalTTL = Just $ Concrete.ppUpdateProposalTTL parameters - , Concrete.ppuSoftforkRule = Just $ Concrete.ppSoftforkRule parameters - , Concrete.ppuTxFeePolicy = Just $ Concrete.ppTxFeePolicy parameters - , Concrete.ppuUnlockStakeEpoch = Just $ Concrete.ppUnlockStakeEpoch parameters - } - -elaborateSystemTag :: Abstract.STag -> Concrete.SystemTag -elaborateSystemTag = Concrete.SystemTag . Text.pack - -elaborateVote :: - ProtocolMagicId -> - Map Abstract.UpId Concrete.UpId -> - Abstract.Vote -> - Concrete.AVote () -elaborateVote protocolMagicId proposalsIdMap abstractVote = - Concrete.unsafeVote - issuer - (elaborateProposalId proposalsIdMap abstractProposalId) - voteSignature - where - abstractProposalId = Abstract._vPropId abstractVote - issuer = elaborateVKey $ Abstract._vCaster abstractVote - voteSignature = - Concrete.signatureForVote - protocolMagicId - signedUpId - True -- We assume the decision to be always constant - safeSigner - signedUpId = - elaborateProposalId proposalsIdMap - $ signatureData - $ Abstract._vSig abstractVote - safeSigner = - vKeyToSafeSigner $ signatureVKey $ Abstract._vSig abstractVote - --- | Lookup the proposal id in the map. If the proposal id is not in the map --- then return the hash of the abstract proposal id. --- --- The reason why we return the hash of the abstract proposal id if the --- proposal id is not in the given map is that when producing invalid abstract --- votes, we need to elaborate a non-existing abstract proposal id into a --- concrete one. Since we don't return a 'Gen' monad, the only source of --- variability we have is the abstract proposal id. -elaborateProposalId :: - Map Abstract.UpId Concrete.UpId -> - Abstract.UpId -> - Concrete.UpId -elaborateProposalId proposalsIdMap abstractProposalId = - fromMaybe - abstractIdHash - (Map.lookup abstractProposalId proposalsIdMap) - where - -- If we cannot find a concrete proposal id that corresponds with the - -- given abstract proposal id, then we return the (coerced) hash of the - -- abstract proposal id. - -- - -- NOTE: if the elaborators returned a `Gen a` value, then we could - -- return random hashes here. - abstractIdHash :: Concrete.UpId -- Keeps GHC happy ... - abstractIdHash = coerce $ H.serializeCborHash id - where - Abstract.UpId id = abstractProposalId diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Epoch/File.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Epoch/File.hs deleted file mode 100644 index 4c90204cba1..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Epoch/File.hs +++ /dev/null @@ -1,39 +0,0 @@ -{-# LANGUAGE TemplateHaskell #-} - -module Test.Cardano.Chain.Epoch.File ( - tests, -) -where - -import Cardano.Chain.Epoch.File (ParseError, mainnetEpochSlots, parseEpochFilesWithBoundary) -import Cardano.Prelude -import Control.Monad.Trans.Resource (ResIO, runResourceT) -import Hedgehog (Group, Property, discover, (===)) -import qualified Hedgehog as H -import Streaming (Of ((:>))) -import qualified Streaming as S -import System.Environment (lookupEnv) -import Test.Cardano.Mirror (mainnetEpochFiles) - -tests :: Group -tests = $$discover - -prop_deserializeEpochs :: Property -prop_deserializeEpochs = H.withTests 1 - $ H.property - $ do - menv <- liftIO $ lookupEnv "CARDANO_MAINNET_MIRROR" - H.assert $ isJust menv - - files <- take 10 <$> liftIO mainnetEpochFiles - H.assert $ not (null files) - -- TODO: the property cannot take any parameters (if we want discoverPrefix - -- to work). Now the question is whether it is OK to use an hardcoded value - -- for the number of slots per epoch, and if so in which module should we - -- store this constant? - let stream = parseEpochFilesWithBoundary mainnetEpochSlots files - result <- (liftIO . runResourceT . runExceptT . S.run) (S.maps discard stream) - result === Right () - where - discard :: Of a m -> ExceptT ParseError ResIO m - discard (_ :> rest) = pure rest diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Genesis/CBOR.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Genesis/CBOR.hs deleted file mode 100644 index 9f8122a5326..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Genesis/CBOR.hs +++ /dev/null @@ -1,56 +0,0 @@ -{-# LANGUAGE TemplateHaskell #-} - -module Test.Cardano.Chain.Genesis.CBOR ( - tests, -) -where - -import Cardano.Prelude -import Test.Cardano.Chain.Genesis.Gen -import Test.Cardano.Crypto.Gen (genProtocolMagicId) -import Test.Cardano.Ledger.Binary.Vintage.Helpers.GoldenRoundTrip ( - roundTripsCBORBuildable, - roundTripsCBORShow, - ) -import Test.Cardano.Prelude (discoverRoundTripArg) -import Test.Options (TSGroup, TSProperty, concatTSGroups, eachOfTS) - --------------------------------------------------------------------------------- --- GenesisKeyHash --------------------------------------------------------------------------------- -ts_roundTripGenesisKeyHashesCBOR :: TSProperty -ts_roundTripGenesisKeyHashesCBOR = - eachOfTS 1000 genGenesisKeyHashes roundTripsCBORBuildable - -tests :: TSGroup -tests = - concatTSGroups - [$$discoverRoundTripArg] - --------------------------------------------------------------------------------- --- GenesisAvvmBalances --------------------------------------------------------------------------------- -ts_roundTripGenesisAvvmBalances :: TSProperty -ts_roundTripGenesisAvvmBalances = - eachOfTS 1000 genGenesisAvvmBalances roundTripsCBORShow - --------------------------------------------------------------------------------- --- GenesisNonAvvmBalances --------------------------------------------------------------------------------- -ts_roundTripGenesisNonAvvmBalances :: TSProperty -ts_roundTripGenesisNonAvvmBalances = - eachOfTS 1000 genGenesisNonAvvmBalances roundTripsCBORShow - --------------------------------------------------------------------------------- --- GenesisDelegation --------------------------------------------------------------------------------- -ts_roundTripGenesisDelegation :: TSProperty -ts_roundTripGenesisDelegation = - eachOfTS 1000 (genGenesisDelegation =<< genProtocolMagicId) roundTripsCBORShow - --------------------------------------------------------------------------------- --- GenesisData --------------------------------------------------------------------------------- -ts_roundTripGenesisData :: TSProperty -ts_roundTripGenesisData = - eachOfTS 1000 (genConfig =<< genProtocolMagicId) roundTripsCBORShow diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Genesis/Dummy.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Genesis/Dummy.hs deleted file mode 100644 index 1f39638a517..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Genesis/Dummy.hs +++ /dev/null @@ -1,155 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Chain.Genesis.Dummy ( - dummyConfig, - dummyK, - dummyEpochSlots, - dummySlotSecurityParam, - dummyGenesisInitializer, - dummyGenesisAvvmBalances, - dummyGeneratedSecrets, - dummyGenesisSigningKeys, - dummyGenesisSigningKeysRich, - dummyGenesisSigningKeysPoor, - dummyGenesisSecretsRich, - dummyGenesisSecretsPoor, - dummyGenesisSpec, - dummyProtocolParameters, - dummyGenesisData, - dummyGenesisHash, -) -where - -import Cardano.Chain.Common ( - BlockCount (..), - TxFeePolicy (..), - TxSizeLinear (..), - mkKnownLovelace, - rationalToLovelacePortion, - ) -import Cardano.Chain.Genesis ( - Config (..), - FakeAvvmOptions (..), - GeneratedSecrets (..), - GenesisAvvmBalances (..), - GenesisData (..), - GenesisDelegation (..), - GenesisHash (..), - GenesisInitializer (..), - GenesisSpec (..), - PoorSecret, - TestnetBalanceOptions (..), - generateGenesisConfigWithEntropy, - gsSigningKeys, - gsSigningKeysPoor, - ) -import Cardano.Chain.ProtocolConstants (kEpochSlots, kSlotSecurityParam) -import Cardano.Chain.Slotting (EpochNumber (..), EpochSlots, SlotCount) -import Cardano.Chain.Update (ProtocolParameters (..), SoftforkRule (..)) -import Cardano.Crypto as Crypto (SigningKey, deterministic) -import Cardano.Prelude -import Data.Time (Day (..), UTCTime (..)) -import qualified Test.Cardano.Crypto.Dummy as Dummy - -dummyConfig :: Config -dummyGeneratedSecrets :: GeneratedSecrets -(dummyConfig, dummyGeneratedSecrets) = - either (panic . show) identity - $ Crypto.deterministic seed - $ runExceptT -- supply fake entropy to make this pure - $ generateGenesisConfigWithEntropy startTime dummyGenesisSpec - where - seed :: ByteString - seed = "\0" - startTime = UTCTime (ModifiedJulianDay 0) 0 - -dummyK :: BlockCount -dummyK = BlockCount 10 - -dummyEpochSlots :: EpochSlots -dummyEpochSlots = kEpochSlots dummyK - -dummySlotSecurityParam :: SlotCount -dummySlotSecurityParam = kSlotSecurityParam dummyK - -dummyGenesisSecretsRich :: [SigningKey] -dummyGenesisSecretsRich = gsRichSecrets dummyGeneratedSecrets - -dummyGenesisSecretsPoor :: [PoorSecret] -dummyGenesisSecretsPoor = gsPoorSecrets dummyGeneratedSecrets - -dummyGenesisSigningKeys :: [SigningKey] -dummyGenesisSigningKeys = gsSigningKeys dummyGeneratedSecrets - -dummyGenesisSigningKeysRich :: [SigningKey] -dummyGenesisSigningKeysRich = gsRichSecrets dummyGeneratedSecrets - -dummyGenesisSigningKeysPoor :: [SigningKey] -dummyGenesisSigningKeysPoor = gsSigningKeysPoor dummyGeneratedSecrets - -dummyGenesisSpec :: GenesisSpec -dummyGenesisSpec = - UnsafeGenesisSpec - { gsAvvmDistr = dummyGenesisAvvmBalances - , gsHeavyDelegation = UnsafeGenesisDelegation mempty - , gsProtocolParameters = dummyProtocolParameters - , gsK = dummyK - , gsProtocolMagic = Dummy.protocolMagic - , gsInitializer = dummyGenesisInitializer - } - -dummyGenesisAvvmBalances :: GenesisAvvmBalances -dummyGenesisAvvmBalances = GenesisAvvmBalances mempty - -dummyProtocolParameters :: ProtocolParameters -dummyProtocolParameters = - ProtocolParameters - { ppScriptVersion = 0 - , ppSlotDuration = 7000 - , ppMaxBlockSize = 2000000 - , ppMaxHeaderSize = 2000000 - , ppMaxTxSize = 8192 - , ppMaxProposalSize = 700 - , ppMpcThd = rationalToLovelacePortion 0.01 - , ppHeavyDelThd = rationalToLovelacePortion 0.005 - , ppUpdateVoteThd = rationalToLovelacePortion 0.001 - , ppUpdateProposalThd = rationalToLovelacePortion 0.1 - , ppUpdateProposalTTL = 10 - , ppSoftforkRule = - SoftforkRule - { srInitThd = rationalToLovelacePortion 0.9 - , srMinThd = rationalToLovelacePortion 0.6 - , srThdDecrement = rationalToLovelacePortion 0.05 - } - , ppTxFeePolicy = - TxFeePolicyTxSizeLinear - (TxSizeLinear (mkKnownLovelace @155381) 43.946) - , ppUnlockStakeEpoch = EpochNumber maxBound - } - -dummyGenesisInitializer :: GenesisInitializer -dummyGenesisInitializer = - GenesisInitializer - { giTestBalance = - TestnetBalanceOptions - { tboPoors = 12 - , tboRichmen = 4 - , tboTotalBalance = mkKnownLovelace @6000000000000000 - , tboRichmenShare = 0.99 :: Rational - } - , giFakeAvvmBalance = - FakeAvvmOptions - { faoCount = 10 - , faoOneBalance = mkKnownLovelace @100000 - } - , giAvvmBalanceFactor = 1.0 :: Rational - , giUseHeavyDlg = True - } - -dummyGenesisData :: GenesisData -dummyGenesisData = configGenesisData dummyConfig - -dummyGenesisHash :: GenesisHash -dummyGenesisHash = configGenesisHash dummyConfig diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Genesis/Example.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Genesis/Example.hs deleted file mode 100644 index 1771a29de1d..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Genesis/Example.hs +++ /dev/null @@ -1,195 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE ExistentialQuantification #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Chain.Genesis.Example ( - exampleGenesisAvvmBalances, - exampleGenesisData0, - exampleGenesisDelegation, - exampleGenesisInitializer, - exampleGenesisSpec, -) -where - -import Cardano.Chain.Common ( - BlockCount (..), - hashKey, - mkKnownLovelace, - ) -import Cardano.Chain.Delegation (unsafeCertificate) -import Cardano.Chain.Genesis ( - FakeAvvmOptions (..), - GenesisAvvmBalances (..), - GenesisData (..), - GenesisDelegation (..), - GenesisInitializer (..), - GenesisKeyHashes (..), - GenesisNonAvvmBalances (..), - GenesisSpec (..), - TestnetBalanceOptions (..), - ) -import Cardano.Chain.Slotting (EpochNumber (..)) -import Cardano.Crypto ( - AProtocolMagic (..), - CompactRedeemVerificationKey, - ProtocolMagicId (..), - RequiresNetworkMagic (..), - Signature (..), - redeemDeterministicKeyGen, - toCompactRedeemVerificationKey, - ) -import Cardano.Crypto.Signing (VerificationKey (..)) -import qualified Cardano.Crypto.Wallet as CC -import Cardano.Ledger.Binary (Annotated (..)) -import Cardano.Prelude -import qualified Data.ByteString.Base16 as B16 -import qualified Data.Map.Strict as M -import Data.Maybe (fromJust) -import qualified Data.Set as Set -import Data.Time (Day (..), UTCTime (..), secondsToDiffTime) -import Test.Cardano.Chain.Common.Example ( - exampleAddress, - exampleAddress1, - exampleKeyHash, - ) -import Test.Cardano.Chain.Update.Example (exampleProtocolParameters) -import Test.Cardano.Crypto.CBOR (getBytes) -import Test.Cardano.Crypto.Example (exampleProtocolMagicId0) - -exampleBlockCount :: BlockCount -exampleBlockCount = BlockCount 12344 - -exampleGenesisSpec :: GenesisSpec -exampleGenesisSpec = - UnsafeGenesisSpec - exampleGenesisAvvmBalances - exampleGenesisDelegation - exampleProtocolParameters - (BlockCount 37) - (AProtocolMagic (Annotated (ProtocolMagicId 1783847074) ()) RequiresMagic) - exampleGenesisInitializer - -exampleGenesisAvvmBalances :: GenesisAvvmBalances -exampleGenesisAvvmBalances = - GenesisAvvmBalances - $ M.fromList - [ (exampleCompactRVK' (0, 32), mkKnownLovelace @36524597913081152) - , (exampleCompactRVK' (32, 32), mkKnownLovelace @37343863242999412) - ] - where - exampleCompactRVK' :: (Int, Int) -> CompactRedeemVerificationKey - exampleCompactRVK' (m, n) = - toCompactRedeemVerificationKey - $ fromJust (fst <$> redeemDeterministicKeyGen (getBytes m n)) - -exampleGenesisData0 :: GenesisData -exampleGenesisData0 = - GenesisData - { gdGenesisKeyHashes = exampleGenesisKeyHashes - , gdHeavyDelegation = exampleGenesisDelegation - , gdStartTime = exampleUTCTime0 - , gdNonAvvmBalances = exampleGenesisNonAvvmBalances0 - , gdProtocolParameters = exampleProtocolParameters - , gdK = exampleBlockCount - , gdProtocolMagicId = exampleProtocolMagicId0 - , gdAvvmDistr = exampleGenesisAvvmBalances - } - -exampleGenesisDelegation :: GenesisDelegation -exampleGenesisDelegation = - UnsafeGenesisDelegation - ( M.fromList - [ - ( hashKey issueVerKey - , unsafeCertificate - (EpochNumber 68300481033) - issueVerKey - ( VerificationKey - ( CC.XPub - { CC.xpubPublicKey = pskDelVerKey - , CC.xpubChaincode = pskDelChainCode - } - ) - ) - sig - ) - ] - ) - where - issueVerKey = - VerificationKey - (CC.XPub {CC.xpubPublicKey = pskVerKey, CC.xpubChaincode = pskChainCode}) - sig :: Signature EpochNumber - sig = - Signature - $ fromRight (panic "Something went wrong") - $ CC.xsignature - ( hexToBS - "bae5422af5405e3803154a4ad986da5d14cf624d670\ - \1c5c78a79ec73777f74e13973af83752114d9f18166\ - \085997fc81e432cab7fee99a275d8bf138ad04e103" - ) - pskVerKey = - hexToBS - "e2a1773a2a82d10c30890cbf84eccbdc1aaaee920496424d36e8\ - \68039d9cb519" - pskChainCode = - CC.ChainCode - ( hexToBS - "21b25efe033d9b00d4f02ccd9cdabcec332\ - \abbc6fdf883ca5bf3a8aff4aac27e" - ) - pskDelVerKey = - hexToBS - "ddca69bfeac14c013304da88ac032ee63281ab036c1b1b918\ - \8e4b174b303f43e" - pskDelChainCode = - CC.ChainCode - ( hexToBS - "55163b178e999b9fd50637b2edab8c85\ - \8a879ac3c4bd3e610095419a19696573" - ) - -exampleGenesisInitializer :: GenesisInitializer -exampleGenesisInitializer = - GenesisInitializer - { giTestBalance = - TestnetBalanceOptions - { tboPoors = 2448641325904532856 - , tboRichmen = 14071205313513960321 - , tboTotalBalance = mkKnownLovelace @10953275486128625 - , tboRichmenShare = 0.366832547637728 :: Rational - } - , giFakeAvvmBalance = - FakeAvvmOptions - { faoCount = 17853231730478779264 - , faoOneBalance = mkKnownLovelace @15087947214890024 - } - , giAvvmBalanceFactor = 0.366832547637728 :: Rational - , giUseHeavyDlg = False - } - -exampleGenesisNonAvvmBalances0 :: GenesisNonAvvmBalances -exampleGenesisNonAvvmBalances0 = - GenesisNonAvvmBalances - $ M.fromList [(exampleAddress, coin), (exampleAddress1, coin1)] - where - coin = mkKnownLovelace @36524597913081152 - coin1 = mkKnownLovelace @37343863242999412 - -exampleGenesisKeyHashes :: GenesisKeyHashes -exampleGenesisKeyHashes = GenesisKeyHashes (Set.singleton exampleKeyHash) - -exampleUTCTime0 :: UTCTime -exampleUTCTime0 = UTCTime (ModifiedJulianDay 10000) (secondsToDiffTime 82401) - -hexToBS :: ByteString -> ByteString -hexToBS ts = case B16.decode ts of - Right fullyDecoded -> fullyDecoded - Left msg -> - panic - $ "fail to decode: " - <> show ts - <> " with error: " - <> show msg diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Genesis/Gen.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Genesis/Gen.hs deleted file mode 100644 index 1b0b2b6880a..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Genesis/Gen.hs +++ /dev/null @@ -1,190 +0,0 @@ -module Test.Cardano.Chain.Genesis.Gen ( - genCanonicalGenesisData, - genCanonicalGenesisDelegation, - genGenesisData, - genGenesisHash, - genConfig, - genFakeAvvmOptions, - genGenesisAvvmBalances, - genGenesisDelegation, - genGenesisInitializer, - genGenesisNonAvvmBalances, - genGenesisSpec, - genGenesisKeyHashes, - genSignatureEpochNumber, - genTestnetBalanceOptions, -) -where - -import Cardano.Chain.Common (BlockCount (..)) -import Cardano.Chain.Genesis ( - Config (..), - FakeAvvmOptions (..), - GenesisAvvmBalances (..), - GenesisData (..), - GenesisDelegation (..), - GenesisHash (..), - GenesisInitializer (..), - GenesisKeyHashes (..), - GenesisNonAvvmBalances (..), - GenesisSpec (..), - TestnetBalanceOptions (..), - mkGenesisDelegation, - mkGenesisSpec, - ) -import Cardano.Chain.Slotting (EpochNumber) -import Cardano.Crypto (ProtocolMagicId, Signature (..)) -import qualified Cardano.Crypto.Wallet as CC -import Cardano.Prelude -import Data.Coerce (coerce) -import qualified Data.Map.Strict as M -import qualified Data.Text as T -import Data.Time (Day (..), UTCTime (..), secondsToDiffTime) -import Formatting (build, sformat) -import Hedgehog -import qualified Hedgehog.Gen as Gen -import qualified Hedgehog.Range as Range -import Test.Cardano.Chain.Common.Gen ( - genAddress, - genBlockCount, - genKeyHash, - genLovelace, - ) -import Test.Cardano.Chain.Delegation.Gen ( - genCanonicalCertificateDistinctList, - genCertificateDistinctList, - ) -import Test.Cardano.Chain.UTxO.Gen (genUTxOConfiguration) -import Test.Cardano.Chain.Update.Gen ( - genCanonicalProtocolParameters, - genProtocolParameters, - ) -import Test.Cardano.Crypto.Gen ( - genCompactRedeemVerificationKey, - genProtocolMagic, - genProtocolMagicId, - genRequiresNetworkMagic, - genTextHash, - ) - -genConfig :: ProtocolMagicId -> Gen Config -genConfig pm = - Config - <$> genGenesisData pm - <*> genGenesisHash - <*> genRequiresNetworkMagic - <*> genUTxOConfiguration - -genCanonicalGenesisData :: ProtocolMagicId -> Gen GenesisData -genCanonicalGenesisData pm = - GenesisData - <$> genGenesisKeyHashes - <*> genCanonicalGenesisDelegation pm - <*> genUTCTime - <*> genGenesisNonAvvmBalances - <*> genCanonicalProtocolParameters - <*> genBlockCount' - <*> genProtocolMagicId - <*> genGenesisAvvmBalances - where - genBlockCount' :: Gen BlockCount - genBlockCount' = BlockCount <$> Gen.word64 (Range.linear 0 1000000000) - -genCanonicalGenesisDelegation :: ProtocolMagicId -> Gen GenesisDelegation -genCanonicalGenesisDelegation pm = - mkGenesisDelegation' <$> genCanonicalCertificateDistinctList pm - where - mkGenesisDelegation' = - either (panic . sformat build) identity . mkGenesisDelegation - -genGenesisData :: ProtocolMagicId -> Gen GenesisData -genGenesisData pm = - GenesisData - <$> genGenesisKeyHashes - <*> genGenesisDelegation pm - <*> genUTCTime - <*> genGenesisNonAvvmBalances - <*> genProtocolParameters - <*> genBlockCount - <*> genProtocolMagicId - <*> genGenesisAvvmBalances - -genGenesisHash :: Gen GenesisHash -genGenesisHash = GenesisHash . coerce <$> genTextHash - -genFakeAvvmOptions :: Gen FakeAvvmOptions -genFakeAvvmOptions = - FakeAvvmOptions <$> Gen.word Range.constantBounded <*> genLovelace - -genGenesisDelegation :: ProtocolMagicId -> Gen GenesisDelegation -genGenesisDelegation pm = mkGenesisDelegation' <$> genCertificateDistinctList pm - where - mkGenesisDelegation' = - either (panic . sformat build) identity . mkGenesisDelegation - -genGenesisInitializer :: Gen GenesisInitializer -genGenesisInitializer = - GenesisInitializer - <$> genTestnetBalanceOptions - <*> genFakeAvvmOptions - <*> (realToFrac <$> Gen.double (Range.constant 0 1)) - <*> Gen.bool - -genGenesisNonAvvmBalances :: Gen GenesisNonAvvmBalances -genGenesisNonAvvmBalances = - GenesisNonAvvmBalances - . M.fromList - <$> Gen.list - (Range.linear 1 10) - ((,) <$> genAddress <*> genLovelace) - -genGenesisSpec :: ProtocolMagicId -> Gen GenesisSpec -genGenesisSpec pm = either (panic . toS) identity <$> mkGenSpec - where - mkGenSpec = - mkGenesisSpec - <$> genGenesisAvvmBalances - <*> genGenesisDelegation pm - <*> genProtocolParameters - <*> genBlockCount - <*> genProtocolMagic - <*> genGenesisInitializer - -genTestnetBalanceOptions :: Gen TestnetBalanceOptions -genTestnetBalanceOptions = - TestnetBalanceOptions - <$> Gen.word Range.constantBounded - <*> Gen.word Range.constantBounded - <*> genLovelace - <*> (realToFrac <$> Gen.double (Range.constant 0 1)) - -genGenesisAvvmBalances :: Gen GenesisAvvmBalances -genGenesisAvvmBalances = - GenesisAvvmBalances - <$> customMapGen genCompactRedeemVerificationKey genLovelace - -genGenesisKeyHashes :: Gen GenesisKeyHashes -genGenesisKeyHashes = - GenesisKeyHashes <$> Gen.set (Range.constant 10 25) genKeyHash - -genSignatureEpochNumber :: Gen (Signature EpochNumber) -genSignatureEpochNumber = - either (panic . T.pack) Signature - . CC.xsignature - <$> Gen.utf8 (Range.constant 64 64) Gen.hexit - -genUTCTime :: Gen UTCTime -genUTCTime = - ( \jday seconds -> - UTCTime (ModifiedJulianDay jday) (secondsToDiffTime seconds) - ) - <$> Gen.integral (Range.linear 0 1000000) - <*> Gen.integral (Range.linear 0 86401) - --------------------------------------------------------------------------------- --- Helper Generators --------------------------------------------------------------------------------- - -customMapGen :: Ord k => Gen k -> Gen v -> Gen (Map k v) -customMapGen keyGen valGen = - M.fromList <$> Gen.list (Range.linear 1 10) ((,) <$> keyGen <*> valGen) diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Genesis/Json.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Genesis/Json.hs deleted file mode 100644 index 7fc5b059ad6..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Genesis/Json.hs +++ /dev/null @@ -1,80 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TemplateHaskell #-} - -module Test.Cardano.Chain.Genesis.Json ( - tests, -) -where - -import Cardano.Prelude -import GetDataFileName ((<:<)) -import Hedgehog (Property) -import Test.Cardano.Chain.Delegation.Gen (genCanonicalCertificate) -import Test.Cardano.Chain.Genesis.Example (exampleGenesisData0) -import Test.Cardano.Chain.Genesis.Gen ( - genCanonicalGenesisData, - genCanonicalGenesisDelegation, - genGenesisAvvmBalances, - genGenesisKeyHashes, - genGenesisNonAvvmBalances, - ) -import Test.Cardano.Chain.Update.Gen ( - genCanonicalProtocolParameters, - ) -import Test.Cardano.Crypto.Gen (feedPM) -import Test.Cardano.Prelude -import Test.Options (TSGroup, TSProperty, concatTSGroups, eachOfTS) - --------------------------------------------------------------------------------- --- JSON Canonical Tests --------------------------------------------------------------------------------- - -ts_roundTripCanonicalCertificate :: TSProperty -ts_roundTripCanonicalCertificate = - eachOfTS 100 (feedPM genCanonicalCertificate) roundTripsCanonicalJsonPretty - -ts_roundTripCanonicalGenesisAvvmBalances :: TSProperty -ts_roundTripCanonicalGenesisAvvmBalances = - eachOfTS 100 genGenesisAvvmBalances roundTripsCanonicalJsonPretty - -ts_roundTripCanonicalGenesisData :: TSProperty -ts_roundTripCanonicalGenesisData = - eachOfTS 100 (feedPM genCanonicalGenesisData) roundTripsCanonicalJsonPretty - -ts_roundTripCanonicalGenesisDelegation :: TSProperty -ts_roundTripCanonicalGenesisDelegation = - eachOfTS 100 (feedPM genCanonicalGenesisDelegation) roundTripsCanonicalJsonPretty - -ts_roundTripCanonicalGenesisNonAvvmBalances :: TSProperty -ts_roundTripCanonicalGenesisNonAvvmBalances = - eachOfTS 100 genGenesisNonAvvmBalances roundTripsCanonicalJsonPretty - -ts_roundTripCanonicalGenesisKeyHashes :: TSProperty -ts_roundTripCanonicalGenesisKeyHashes = - eachOfTS 100 genGenesisKeyHashes roundTripsCanonicalJsonPretty - -ts_roundTripCanonicalProtocolParameters :: TSProperty -ts_roundTripCanonicalProtocolParameters = - eachOfTS 100 genCanonicalProtocolParameters roundTripsCanonicalJsonPretty - --------------------------------------------------------------------------------- --- GenesisData (Canonical JSON) --------------------------------------------------------------------------------- - --- Decode-only golden tests for ensuring that, when decoding the legacy --- `GenesisData` canonical JSON format, the `RequiresNetworkMagic` field --- defaults to `RequiresMagic`. - -golden_GenesisData0Dec :: Property -golden_GenesisData0Dec = - goldenTestCanonicalJSONDec - exampleGenesisData0 - <:< "golden/json/genesis/GenesisData0_Legacy_HasNetworkMagic" - -------------------------------------------------------------------------------- --- Main test export -------------------------------------------------------------------------------- - -tests :: TSGroup -tests = concatTSGroups [const $$discoverGolden, $$discoverPropArg] diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/MempoolPayload/CBOR.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/MempoolPayload/CBOR.hs deleted file mode 100644 index 5cc98587df2..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/MempoolPayload/CBOR.hs +++ /dev/null @@ -1,150 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TemplateHaskell #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Chain.MempoolPayload.CBOR ( - tests, -) -where - -import Cardano.Ledger.Binary ( - ByteSpan, - DecCBOR (..), - Decoder, - EncCBOR, - byronProtVer, - decCBOR, - decodeFull, - decodeFullDecoder, - encCBOR, - serialize, - slice, - ) -import Cardano.Prelude -import qualified Data.ByteString.Lazy as LBS -import GetDataFileName ((<:<)) -import Hedgehog (Property, tripping) -import Test.Cardano.Chain.MempoolPayload.Example ( - exampleMempoolPayload, - exampleMempoolPayload1, - exampleMempoolPayload2, - exampleMempoolPayload3, - ) -import Test.Cardano.Chain.MempoolPayload.Gen (genMempoolPayload) -import Test.Cardano.Crypto.Gen (feedPM) -import Test.Cardano.Ledger.Binary.Vintage.Helpers.GoldenRoundTrip ( - goldenTestCBOR, - goldenTestCBORExplicit, - roundTripsCBORShow, - ) -import Test.Cardano.Prelude -import Test.Options (TSGroup, TSProperty, concatTSGroups, eachOfTS) - --------------------------------------------------------------------------------- --- Helpers --------------------------------------------------------------------------------- - --- | Serialises @f ()@ and uses that 'ByteString' as the annotation to splice --- in. -fillInByteString :: - forall f. - (DecCBOR (f ByteSpan), EncCBOR (f ()), Functor f) => - f () -> - f ByteString -fillInByteString a = - either (panic . show) identity $ decodeFullDecoder byronProtVer mempty dec bytes - where - bytes :: LByteString - bytes = serialize byronProtVer a - - dec :: Decoder s (f ByteString) - dec = fmap (LBS.toStrict . slice bytes) <$> decCBOR - --- | Variant of 'goldenTestCBOR' that does not use the @'EncCBOR' (f ())@ --- instance, but the @'EncCBOR' (f ByteString)@ instance. The latter instance --- allows reusing the annotation when serialising instead of reserialising --- from scratch. -filledInGoldenTestCBOR :: - forall f. - ( DecCBOR (f ()) - , EncCBOR (f ()) - , DecCBOR (f ByteSpan) - , EncCBOR (f ByteString) - , Functor f - , Eq (f ()) - , Show (f ()) - , HasCallStack - ) => - f () -> - FilePath -> - Property -filledInGoldenTestCBOR = - goldenTestCBORExplicit - (label $ Proxy @(f ())) - (encCBOR . fillInByteString) - decCBOR - --------------------------------------------------------------------------------- --- MempoolPayload --------------------------------------------------------------------------------- - -goldenMempoolPayload :: Property -goldenMempoolPayload = - goldenTestCBOR - exampleMempoolPayload - <:< "golden/cbor/mempoolpayload/MempoolPayload" - -goldenMempoolPayloadFilledIn :: Property -goldenMempoolPayloadFilledIn = - filledInGoldenTestCBOR - exampleMempoolPayload - <:< "golden/cbor/mempoolpayload/MempoolPayload" - -goldenMempoolPayload1 :: Property -goldenMempoolPayload1 = - goldenTestCBOR - exampleMempoolPayload1 - <:< "golden/cbor/mempoolpayload/MempoolPayload1" - -goldenMempoolPayload1FilledIn :: Property -goldenMempoolPayload1FilledIn = - filledInGoldenTestCBOR - exampleMempoolPayload1 - <:< "golden/cbor/mempoolpayload/MempoolPayload1" - -goldenMempoolPayload2 :: Property -goldenMempoolPayload2 = - goldenTestCBOR - exampleMempoolPayload2 - <:< "golden/cbor/mempoolpayload/MempoolPayload2" - -goldenMempoolPayload2FilledIn :: Property -goldenMempoolPayload2FilledIn = - filledInGoldenTestCBOR - exampleMempoolPayload2 - <:< "golden/cbor/mempoolpayload/MempoolPayload2" - -goldenMempoolPayload3 :: Property -goldenMempoolPayload3 = - goldenTestCBOR - exampleMempoolPayload3 - <:< "golden/cbor/mempoolpayload/MempoolPayload3" - -goldenMempoolPayload3FilledIn :: Property -goldenMempoolPayload3FilledIn = - filledInGoldenTestCBOR - exampleMempoolPayload3 - <:< "golden/cbor/mempoolpayload/MempoolPayload3" - -ts_roundTripMempoolPayload :: TSProperty -ts_roundTripMempoolPayload = - eachOfTS 200 (feedPM genMempoolPayload) roundTripsCBORShow - -ts_roundTripMempoolPayloadFilledIn :: TSProperty -ts_roundTripMempoolPayloadFilledIn = - eachOfTS 200 (feedPM genMempoolPayload) $ \x -> - tripping x (serialize byronProtVer . fillInByteString) (decodeFull byronProtVer) - -tests :: TSGroup -tests = concatTSGroups [const $$discoverGolden, $$discoverRoundTripArg] diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/MempoolPayload/Example.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/MempoolPayload/Example.hs deleted file mode 100644 index cece58d4b32..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/MempoolPayload/Example.hs +++ /dev/null @@ -1,32 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} - -module Test.Cardano.Chain.MempoolPayload.Example ( - exampleMempoolPayload, - exampleMempoolPayload1, - exampleMempoolPayload2, - exampleMempoolPayload3, -) -where - -import Cardano.Chain.MempoolPayload (AMempoolPayload (..), MempoolPayload) -import Data.List ((!!)) -import Test.Cardano.Chain.Delegation.Example as Delegation ( - exampleCertificates, - ) -import Test.Cardano.Chain.UTxO.Example (exampleTxAux) -import Test.Cardano.Chain.Update.Example as Update ( - exampleProposal, - exampleVote, - ) - -exampleMempoolPayload :: MempoolPayload -exampleMempoolPayload = MempoolTx exampleTxAux - -exampleMempoolPayload1 :: MempoolPayload -exampleMempoolPayload1 = MempoolDlg (Delegation.exampleCertificates !! 0) - -exampleMempoolPayload2 :: MempoolPayload -exampleMempoolPayload2 = MempoolUpdateProposal Update.exampleProposal - -exampleMempoolPayload3 :: MempoolPayload -exampleMempoolPayload3 = MempoolUpdateVote Update.exampleVote diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/MempoolPayload/Gen.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/MempoolPayload/Gen.hs deleted file mode 100644 index 88db016448e..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/MempoolPayload/Gen.hs +++ /dev/null @@ -1,22 +0,0 @@ -module Test.Cardano.Chain.MempoolPayload.Gen ( - genMempoolPayload, -) -where - -import Cardano.Chain.MempoolPayload (AMempoolPayload (..), MempoolPayload) -import Cardano.Crypto (ProtocolMagicId) -import Cardano.Prelude -import Hedgehog -import qualified Hedgehog.Gen as Gen -import Test.Cardano.Chain.Delegation.Gen as Delegation (genCertificate) -import Test.Cardano.Chain.UTxO.Gen (genTxAux) -import Test.Cardano.Chain.Update.Gen as Update (genProposal, genVote) - -genMempoolPayload :: ProtocolMagicId -> Gen MempoolPayload -genMempoolPayload pmi = - Gen.choice - [ MempoolTx <$> genTxAux pmi - , MempoolDlg <$> Delegation.genCertificate pmi - , MempoolUpdateProposal <$> Update.genProposal pmi - , MempoolUpdateVote <$> Update.genVote pmi - ] diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Slotting/CBOR.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Slotting/CBOR.hs deleted file mode 100644 index 4d53b846a2d..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Slotting/CBOR.hs +++ /dev/null @@ -1,81 +0,0 @@ -{-# LANGUAGE TemplateHaskell #-} - -module Test.Cardano.Chain.Slotting.CBOR ( - tests, -) -where - -import Cardano.Chain.Slotting (EpochSlots (..), SlotNumber) -import Cardano.Prelude -import GetDataFileName ((<:<)) -import Hedgehog (Property) -import Test.Cardano.Chain.Slotting.Example ( - exampleEpochAndSlotCount, - exampleEpochNumber, - ) -import Test.Cardano.Chain.Slotting.Gen ( - feedPMEpochSlots, - genEpochAndSlotCount, - genEpochNumber, - genEpochSlots, - genSlotNumber, - ) -import Test.Cardano.Ledger.Binary.Vintage.Helpers.GoldenRoundTrip ( - goldenTestCBOR, - roundTripsCBORBuildable, - ) -import Test.Cardano.Prelude -import Test.Options (TSGroup, TSProperty, concatTSGroups, eachOfTS) - --------------------------------------------------------------------------------- --- EpochNumber --------------------------------------------------------------------------------- -golden_EpochNumber :: Property -golden_EpochNumber = - goldenTestCBOR exampleEpochNumber <:< "golden/cbor/slotting/EpochNumber" - -ts_roundTripEpochNumberCBOR :: TSProperty -ts_roundTripEpochNumberCBOR = eachOfTS 1000 genEpochNumber roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- SlotNumber --------------------------------------------------------------------------------- -golden_SlotNumber :: Property -golden_SlotNumber = goldenTestCBOR fsi <:< "golden/cbor/slotting/SlotNumber" - where - fsi = 5001 :: SlotNumber - -ts_roundTripSlotNumberCBOR :: TSProperty -ts_roundTripSlotNumberCBOR = eachOfTS 1000 genSlotNumber roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- EpochSlots --------------------------------------------------------------------------------- -golden_EpochSlots :: Property -golden_EpochSlots = goldenTestCBOR sc <:< "golden/cbor/slotting/EpochSlots" - where - sc = EpochSlots 474747 - -ts_roundTripEpochSlotsCBOR :: TSProperty -ts_roundTripEpochSlotsCBOR = eachOfTS 1000 genEpochSlots roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- EpochAndSlotCount --------------------------------------------------------------------------------- -golden_EpochAndSlotCount :: Property -golden_EpochAndSlotCount = - goldenTestCBOR - exampleEpochAndSlotCount - <:< "golden/cbor/slotting/EpochAndSlotCount" - -ts_roundTripEpochAndSlotCountCBOR :: TSProperty -ts_roundTripEpochAndSlotCountCBOR = eachOfTS 1000 gen roundTripsCBORBuildable - where - gen = feedPMEpochSlots (\_pm es -> genEpochAndSlotCount es) - --------------------------------------------------------------------------------- --- Main test export --------------------------------------------------------------------------------- - -tests :: TSGroup -tests = concatTSGroups [const $$discoverGolden, $$discoverRoundTripArg] diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Slotting/Example.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Slotting/Example.hs deleted file mode 100644 index 8bdbd9dea5b..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Slotting/Example.hs +++ /dev/null @@ -1,24 +0,0 @@ -module Test.Cardano.Chain.Slotting.Example ( - exampleEpochNumber, - exampleEpochAndSlotCount, - exampleSlotNumber, -) -where - -import Cardano.Chain.Slotting ( - EpochAndSlotCount (..), - EpochNumber (..), - EpochSlots (..), - SlotCount (..), - SlotNumber, - toSlotNumber, - ) - -exampleEpochNumber :: EpochNumber -exampleEpochNumber = EpochNumber 14 - -exampleSlotNumber :: EpochSlots -> SlotNumber -exampleSlotNumber es = toSlotNumber es exampleEpochAndSlotCount - -exampleEpochAndSlotCount :: EpochAndSlotCount -exampleEpochAndSlotCount = EpochAndSlotCount (EpochNumber 11) (SlotCount 47) diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Slotting/Gen.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Slotting/Gen.hs deleted file mode 100644 index 71821285c6a..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Slotting/Gen.hs +++ /dev/null @@ -1,88 +0,0 @@ -{-# LANGUAGE TupleSections #-} - -module Test.Cardano.Chain.Slotting.Gen ( - genEpochNumber, - genSlotNumber, - genEpochSlots, - genWithEpochSlots, - genSlotCount, - genEpochAndSlotCount, - genConsistentEpochAndSlotCountEpochSlots, - feedPMEpochSlots, -) -where - -import Cardano.Chain.Slotting ( - EpochAndSlotCount (..), - EpochNumber (..), - EpochSlots (..), - SlotCount (..), - SlotNumber (..), - WithEpochSlots (WithEpochSlots), - ) -import Cardano.Crypto (ProtocolMagicId) -import Cardano.Prelude -import Hedgehog -import qualified Hedgehog.Gen as Gen -import qualified Hedgehog.Range as Range -import Test.Cardano.Crypto.Gen (genProtocolMagicId) - -genEpochNumber :: Gen EpochNumber -genEpochNumber = EpochNumber <$> Gen.word64 Range.constantBounded - -genSlotNumber :: Gen SlotNumber -genSlotNumber = SlotNumber <$> Gen.word64 Range.constantBounded - --- | Generator for slots-per-epoch. This will generate a positive number of --- slots per-epoch, and it will have an upper bound of @maxBound :: Word16 = --- 2^16@. The reason for this upper bound is that when converting a slot number --- (which is an absolute value) to a pair of epoch and slot-count, this --- slot-count, which represents a local index of a slot within the epoch and is --- represented using a 'Word16', is calculated taking the reminder of dividing --- the slot number by the number of slots-per-epoch ('EpochSlots'). So if the --- generated epoch would be greater than @2^16@ we couldn't guarantee that the --- local-index would fit inside its representation. -genEpochSlots :: Gen EpochSlots -genEpochSlots = - EpochSlots . fromIntegral <$> Gen.word16 (Range.constant 1 maxBound) - --- | Generate a value wrapped on a 'WithEpochSlots' context, using the given --- generator functions, and its arguments -genWithEpochSlots :: - (ProtocolMagicId -> EpochSlots -> Gen a) -> - ProtocolMagicId -> - EpochSlots -> - Gen (WithEpochSlots a) -genWithEpochSlots gen pm es = WithEpochSlots es <$> gen pm es - -genSlotCount :: Gen SlotCount -genSlotCount = SlotCount <$> Gen.word64 Range.constantBounded - -genEpochAndSlotCount :: EpochSlots -> Gen EpochAndSlotCount -genEpochAndSlotCount epochSlots = - EpochAndSlotCount <$> genEpochNumber <*> genEpochSlotCount epochSlots - --- | Generate a 'SlotCount' constrained by the number of 'EpochSlots' -genEpochSlotCount :: EpochSlots -> Gen SlotCount -genEpochSlotCount epochSlots = - SlotCount <$> Gen.word64 (Range.linear 0 (unEpochSlots epochSlots - 1)) - --- Generates a `EpochAndSlotCount` and a `EpochSlots` that does not exceed --- the `Word64` maximum boundary of `flattenEpochAndSlotCount` when flattened. -genConsistentEpochAndSlotCountEpochSlots :: Gen (EpochAndSlotCount, EpochSlots) -genConsistentEpochAndSlotCountEpochSlots = do - epochSlots <- genEpochSlots - fmap (,epochSlots) - $ EpochAndSlotCount - <$> genRestrictedEpochNumber (maxBound `div` unEpochSlots epochSlots) - <*> genEpochSlotCount epochSlots - where - genRestrictedEpochNumber :: Word64 -> Gen EpochNumber - genRestrictedEpochNumber bound = - EpochNumber <$> Gen.word64 (Range.linear 0 bound) - -feedPMEpochSlots :: (ProtocolMagicId -> EpochSlots -> Gen a) -> Gen a -feedPMEpochSlots genA = do - pm <- genProtocolMagicId - epochSlots <- genEpochSlots - genA pm epochSlots diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Slotting/Properties.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Slotting/Properties.hs deleted file mode 100644 index 7c5a5ec743d..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Slotting/Properties.hs +++ /dev/null @@ -1,74 +0,0 @@ -{-# LANGUAGE TemplateHaskell #-} - -module Test.Cardano.Chain.Slotting.Properties ( - tests, -) -where - -import Cardano.Chain.Slotting ( - SlotCount (..), - SlotNumber (..), - addSlotCount, - fromSlotNumber, - toSlotNumber, - ) -import Cardano.Prelude -import Hedgehog (forAll, property, success, (===)) -import Test.Cardano.Chain.Slotting.Gen ( - genConsistentEpochAndSlotCountEpochSlots, - genEpochAndSlotCount, - genEpochSlots, - genSlotCount, - genSlotNumber, - ) -import Test.Cardano.Prelude -import Test.Options (TSGroup, TSProperty, withTestsTS) - --------------------------------------------------------------------------------- --- EpochAndSlotCount --------------------------------------------------------------------------------- - --- Check that `fromSlotNumber` does not panic for --- allowed values of `EpochSlots` and `SlotNumber`. -ts_prop_fromSlotNumber :: TSProperty -ts_prop_fromSlotNumber = withTestsTS 100 . property $ do - sc <- forAll genEpochSlots - fsId <- forAll $ genSlotNumber - _ <- pure $ fromSlotNumber sc fsId - success - --- Check that `fromSlotNumber . toSlotNumber == id`. -ts_prop_unflattenFlattenEpochAndSlotCount :: TSProperty -ts_prop_unflattenFlattenEpochAndSlotCount = withTestsTS 100 . property $ do - (sId, sc) <- forAll genConsistentEpochAndSlotCountEpochSlots - sId === fromSlotNumber sc (toSlotNumber sc sId) - --- Check that `genEpochAndSlotCount` does not panic for --- allowed values of `EpochSlots`. -ts_prop_genEpochAndSlotCount :: TSProperty -ts_prop_genEpochAndSlotCount = withTestsTS 100 . property $ do - sc <- forAll genEpochSlots - _ <- forAll $ genEpochAndSlotCount sc - success - --- Check that `toSlotNumber . fromSlotNumber == id`. -ts_prop_fromToSlotNumber :: TSProperty -ts_prop_fromToSlotNumber = withTestsTS 100 . property $ do - es <- forAll genEpochSlots - slot <- forAll genSlotNumber - let fromTo = toSlotNumber es $ fromSlotNumber es slot - slot === fromTo - --- Check that `addSlotCount` actually adds. -ts_prop_addSlotCount :: TSProperty -ts_prop_addSlotCount = withTestsTS 100 . property $ do - sc <- forAll genSlotCount - fs <- forAll genSlotNumber - let added = fs + (SlotNumber $ unSlotCount sc) - addSlotCount sc fs - === if unSlotNumber fs <= maxBound - (unSlotCount sc) - then added - else SlotNumber maxBound - -tests :: TSGroup -tests = $$discoverPropArg diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Ssc/CBOR.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Ssc/CBOR.hs deleted file mode 100644 index e3369233c46..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Ssc/CBOR.hs +++ /dev/null @@ -1,216 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TemplateHaskell #-} - -module Test.Cardano.Chain.Ssc.CBOR ( - tests, -) -where - -import Cardano.Chain.Ssc ( - SscPayload (..), - SscProof (..), - dropCommitment, - dropCommitmentsMap, - dropInnerSharesMap, - dropOpeningsMap, - dropSharesMap, - dropSignedCommitment, - dropSscPayload, - dropSscProof, - dropVssCertificate, - dropVssCertificatesMap, - ) -import Cardano.Ledger.Binary (dropBytes) -import Cardano.Prelude -import GetDataFileName ((<:<)) -import Hedgehog (Group (..), Property) -import Test.Cardano.Ledger.Binary.Vintage.Helpers.GoldenRoundTrip ( - deprecatedGoldenDecode, - roundTripsCBORShow, - ) -import Test.Cardano.Prelude -import Test.Options (concatGroups) - --------------------------------------------------------------------------------- --- Commitment --------------------------------------------------------------------------------- - -goldenDeprecatedCommitment :: Property -goldenDeprecatedCommitment = - deprecatedGoldenDecode - "Commitment" - dropCommitment - <:< "golden/cbor/ssc/Commitment" - --------------------------------------------------------------------------------- --- CommitmentsMap --------------------------------------------------------------------------------- - -goldenDeprecatedCommitmentsMap :: Property -goldenDeprecatedCommitmentsMap = - deprecatedGoldenDecode - "CommitmentsMap" - dropCommitmentsMap - <:< "golden/cbor/ssc/CommitmentsMap" - --------------------------------------------------------------------------------- --- InnerSharesMap --------------------------------------------------------------------------------- - -goldenDeprecatedInnerSharesMap :: Property -goldenDeprecatedInnerSharesMap = - deprecatedGoldenDecode - "InnerSharesMap" - dropInnerSharesMap - <:< "golden/cbor/ssc/InnerSharesMap" - --------------------------------------------------------------------------------- --- Opening --------------------------------------------------------------------------------- - -goldenDeprecatedOpening :: Property -goldenDeprecatedOpening = - deprecatedGoldenDecode "Opening" dropBytes <:< "golden/cbor/ssc/Opening" - --------------------------------------------------------------------------------- --- OpeningsMap --------------------------------------------------------------------------------- - -goldenDeprecatedOpeningsMap :: Property -goldenDeprecatedOpeningsMap = - deprecatedGoldenDecode - "OpeningsMap" - dropOpeningsMap - <:< "golden/cbor/ssc/OpeningsMap" - --------------------------------------------------------------------------------- --- SignedCommitment --------------------------------------------------------------------------------- - -goldenDeprecatedSignedCommitment :: Property -goldenDeprecatedSignedCommitment = - deprecatedGoldenDecode - "SignedCommitment" - dropSignedCommitment - <:< "golden/cbor/ssc/SignedCommitment" - --------------------------------------------------------------------------------- --- SharesMap --------------------------------------------------------------------------------- - -goldenDeprecatedSharesMap :: Property -goldenDeprecatedSharesMap = - deprecatedGoldenDecode - "SharesMap" - dropSharesMap - <:< "golden/cbor/ssc/SharesMap" - --------------------------------------------------------------------------------- --- SscPayload --------------------------------------------------------------------------------- - -goldenDeprecatedSscPayload_CommitmentsPayload :: Property -goldenDeprecatedSscPayload_CommitmentsPayload = - deprecatedGoldenDecode - "SscPayload_CommitmentsPayload" - dropSscPayload - <:< "golden/cbor/ssc/SscPayload_CommitmentsPayload" - -goldenDeprecatedSscPayload_OpeningsPayload :: Property -goldenDeprecatedSscPayload_OpeningsPayload = - deprecatedGoldenDecode - "SscPayload_OpeningsPayload" - dropSscPayload - <:< "golden/cbor/ssc/SscPayload_OpeningsPayload" - -goldenDeprecatedSscPayload_SharesPayload :: Property -goldenDeprecatedSscPayload_SharesPayload = - deprecatedGoldenDecode - "SscPayload_SharesPayload" - dropSscPayload - <:< "golden/cbor/ssc/SscPayload_SharesPayload" - -goldenDeprecatedSscPayload_CertificatesPayload :: Property -goldenDeprecatedSscPayload_CertificatesPayload = - deprecatedGoldenDecode - "SscPayload_CertificatesPayload" - dropSscPayload - <:< "golden/cbor/ssc/SscPayload_CertificatesPayload" - -roundTripSscPayload :: Property -roundTripSscPayload = eachOf 1 (pure SscPayload) roundTripsCBORShow - --------------------------------------------------------------------------------- --- SscProof --------------------------------------------------------------------------------- - -goldenDeprecatedSscProof_CommitmentsProof :: Property -goldenDeprecatedSscProof_CommitmentsProof = - deprecatedGoldenDecode - "SscProof_CommitmentsProof" - dropSscProof - <:< "golden/cbor/ssc/SscProof_CommitmentsProof" - -goldenDeprecatedSscProof_OpeningsProof :: Property -goldenDeprecatedSscProof_OpeningsProof = - deprecatedGoldenDecode - "SscProof_OpeningsProof" - dropSscProof - <:< "golden/cbor/ssc/SscProof_OpeningsProof" - -goldenDeprecatedSscProof_SharesProof :: Property -goldenDeprecatedSscProof_SharesProof = - deprecatedGoldenDecode - "SscProof_SharesProof" - dropSscProof - <:< "golden/cbor/ssc/SscProof_SharesProof" - -goldenDeprecatedSscProof_CertificatesProof :: Property -goldenDeprecatedSscProof_CertificatesProof = - deprecatedGoldenDecode - "SscProof_CertificatesProof" - dropSscProof - <:< "golden/cbor/ssc/SscProof_CertificatesProof" - -roundTripSscProof :: Property -roundTripSscProof = eachOf 1 (pure SscProof) roundTripsCBORShow - --------------------------------------------------------------------------------- --- VssCertificate --------------------------------------------------------------------------------- - -goldenDeprecatedVssCertificate :: Property -goldenDeprecatedVssCertificate = - deprecatedGoldenDecode - "VssCertificate" - dropVssCertificate - <:< "golden/cbor/ssc/VssCertificate" - --------------------------------------------------------------------------------- --- VssCertificatesHash --------------------------------------------------------------------------------- - -goldenDeprecatedVssCertificatesHash :: Property -goldenDeprecatedVssCertificatesHash = - deprecatedGoldenDecode - "VssCertiificatesHash" - dropBytes - <:< "golden/cbor/ssc/VssCertificatesHash" - --------------------------------------------------------------------------------- --- VssCertificatesMap --------------------------------------------------------------------------------- - -goldenDeprecatedVssCertificatesMap :: Property -goldenDeprecatedVssCertificatesMap = - deprecatedGoldenDecode - "VssCertificatesMap" - dropVssCertificatesMap - <:< "golden/cbor/ssc/VssCertificatesMap" - --------------------------------------------------------------------------------- --- Main test export --------------------------------------------------------------------------------- - -tests :: Group -tests = concatGroups [$$discoverGolden, $$discoverRoundTrip] diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/UTxO/CBOR.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/UTxO/CBOR.hs deleted file mode 100644 index 607f6f8dcc5..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/UTxO/CBOR.hs +++ /dev/null @@ -1,379 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TemplateHaskell #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Chain.UTxO.CBOR ( - tests, -) -where - -import Cardano.Chain.Common (AddrAttributes (..), Attributes (..), mkAttributes) -import Cardano.Chain.UTxO ( - Tx (..), - TxIn (..), - TxInWitness (..), - TxOut (..), - TxSigData (..), - taTx, - taWitness, - ) -import Cardano.Crypto (ProtocolMagicId (..), SignTag (..), Signature, sign) -import Cardano.Ledger.Binary (Case (..), EncCBOR, LengthOf, SizeOverride (..), szCases) -import Cardano.Prelude -import qualified Data.Map.Strict as M -import Data.Vector (Vector) -import GetDataFileName ((<:<)) -import Hedgehog (Gen, Property) -import qualified Hedgehog as H -import Test.Cardano.Chain.UTxO.Example ( - exampleHashTx, - exampleRedeemSignature, - exampleTxId, - exampleTxInList, - exampleTxInUtxo, - exampleTxOut, - exampleTxOut1, - exampleTxOutList, - exampleTxPayload1, - exampleTxProof, - exampleTxSig, - exampleTxSigData, - exampleTxWitness, - ) -import Test.Cardano.Chain.UTxO.Gen ( - genTx, - genTxAttributes, - genTxAux, - genTxHash, - genTxId, - genTxIn, - genTxInList, - genTxInWitness, - genTxOut, - genTxOutList, - genTxPayload, - genTxProof, - genTxSig, - genTxSigData, - genTxValidationError, - genTxWitness, - genUTxOConfiguration, - genUTxOError, - genUTxOValidationError, - ) -import Test.Cardano.Crypto.Example ( - exampleRedeemVerificationKey, - exampleSigningKey, - exampleVerificationKey, - ) -import Test.Cardano.Crypto.Gen (feedPM) -import Test.Cardano.Ledger.Binary.Vintage.Helpers (SizeTestConfig (..), scfg, sizeTest) -import Test.Cardano.Ledger.Binary.Vintage.Helpers.GoldenRoundTrip ( - goldenTestCBOR, - roundTripsCBORBuildable, - roundTripsCBORShow, - ) -import Test.Cardano.Prelude -import Test.Options (TSGroup, TSProperty, concatTSGroups, eachOfTS) - --------------------------------------------------------------------------------- --- Tx --------------------------------------------------------------------------------- - -goldenTx :: Property -goldenTx = goldenTestCBOR tx <:< "golden/cbor/utxo/Tx" - where - tx = UnsafeTx exampleTxInList exampleTxOutList (mkAttributes ()) - -ts_roundTripTx :: TSProperty -ts_roundTripTx = eachOfTS 50 genTx roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- TxAttributes --------------------------------------------------------------------------------- - -goldenTxAttributes :: Property -goldenTxAttributes = goldenTestCBOR txA <:< "golden/cbor/utxo/TxAttributes" - where - txA = mkAttributes () - -ts_roundTripTxAttributes :: TSProperty -ts_roundTripTxAttributes = eachOfTS 10 genTxAttributes roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- TxAux --------------------------------------------------------------------------------- - -ts_roundTripTxAux :: TSProperty -ts_roundTripTxAux = eachOfTS 100 (feedPM genTxAux) roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- Tx Hash --------------------------------------------------------------------------------- - -goldenHashTx :: Property -goldenHashTx = goldenTestCBOR exampleHashTx <:< "golden/cbor/utxo/HashTx" - -ts_roundTripHashTx :: TSProperty -ts_roundTripHashTx = eachOfTS 50 genTxHash roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- TxIn --------------------------------------------------------------------------------- - -goldenTxInUtxo :: Property -goldenTxInUtxo = - goldenTestCBOR exampleTxInUtxo <:< "golden/cbor/utxo/TxIn_Utxo" - -ts_roundTripTxIn :: TSProperty -ts_roundTripTxIn = eachOfTS 100 genTxIn roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- TxId --------------------------------------------------------------------------------- - -goldenTxId :: Property -goldenTxId = goldenTestCBOR exampleTxId <:< "golden/cbor/utxo/TxId" - -ts_roundTripTxId :: TSProperty -ts_roundTripTxId = eachOfTS 50 genTxId roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- TxInList --------------------------------------------------------------------------------- - -goldenTxInList :: Property -goldenTxInList = goldenTestCBOR exampleTxInList <:< "golden/cbor/utxo/TxInList" - -ts_roundTripTxInList :: TSProperty -ts_roundTripTxInList = eachOfTS 50 genTxInList roundTripsCBORShow - --------------------------------------------------------------------------------- --- TxInWitness --------------------------------------------------------------------------------- - -goldenVKWitness :: Property -goldenVKWitness = - goldenTestCBOR - vkWitness - <:< "golden/cbor/utxo/TxInWitness_VKWitness" - where - vkWitness = VKWitness exampleVerificationKey exampleTxSig - -goldenRedeemWitness :: Property -goldenRedeemWitness = - goldenTestCBOR - redeemWitness - <:< "golden/cbor/utxo/TxInWitness_RedeemWitness" - where - redeemWitness = RedeemWitness exampleRedeemVerificationKey exampleRedeemSignature - -ts_roundTripTxInWitness :: TSProperty -ts_roundTripTxInWitness = - eachOfTS 50 (feedPM genTxInWitness) roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- TxOutList --------------------------------------------------------------------------------- - -goldenTxOutList :: Property -goldenTxOutList = - goldenTestCBOR exampleTxOutList <:< "golden/cbor/utxo/TxOutList" - -ts_roundTripTxOutList :: TSProperty -ts_roundTripTxOutList = eachOfTS 50 genTxOutList roundTripsCBORShow - --------------------------------------------------------------------------------- --- TxOut --------------------------------------------------------------------------------- - -goldenTxOut :: Property -goldenTxOut = goldenTestCBOR exampleTxOut <:< "golden/cbor/utxo/TxOut" - -goldenTxOut1 :: Property -goldenTxOut1 = goldenTestCBOR exampleTxOut1 <:< "golden/cbor/utxo/TxOut1" - -ts_roundTripTxOut :: TSProperty -ts_roundTripTxOut = eachOfTS 50 genTxOut roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- TxPayload --------------------------------------------------------------------------------- - -goldenTxPayload1 :: Property -goldenTxPayload1 = - goldenTestCBOR exampleTxPayload1 <:< "golden/cbor/utxo/TxPayload1" - -ts_roundTripTxPayload :: TSProperty -ts_roundTripTxPayload = eachOfTS 50 (feedPM genTxPayload) roundTripsCBORShow - --------------------------------------------------------------------------------- --- TxProof --------------------------------------------------------------------------------- - -goldenTxProof :: Property -goldenTxProof = goldenTestCBOR exampleTxProof <:< "golden/cbor/utxo/TxProof" - -ts_roundTripTxProof :: TSProperty -ts_roundTripTxProof = eachOfTS 50 (feedPM genTxProof) roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- TxSig --------------------------------------------------------------------------------- - -goldenTxSig :: Property -goldenTxSig = goldenTestCBOR txSigGold <:< "golden/cbor/utxo/TxSig" - where - txSigGold = - sign - (ProtocolMagicId 0) - SignForTestingOnly - exampleSigningKey - exampleTxSigData - -ts_roundTripTxSig :: TSProperty -ts_roundTripTxSig = eachOfTS 50 (feedPM genTxSig) roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- TxSigData --------------------------------------------------------------------------------- - -goldenTxSigData :: Property -goldenTxSigData = - goldenTestCBOR exampleTxSigData <:< "golden/cbor/utxo/TxSigData" - -ts_roundTripTxSigData :: TSProperty -ts_roundTripTxSigData = eachOfTS 50 genTxSigData roundTripsCBORShow - --------------------------------------------------------------------------------- --- TxValidationError --------------------------------------------------------------------------------- - -ts_roundTripTxValidationError :: TSProperty -ts_roundTripTxValidationError = - eachOfTS 50 genTxValidationError roundTripsCBORShow - --------------------------------------------------------------------------------- --- TxWitness --------------------------------------------------------------------------------- - -goldenTxWitness :: Property -goldenTxWitness = - goldenTestCBOR exampleTxWitness <:< "golden/cbor/utxo/TxWitness" - -ts_roundTripTxWitness :: TSProperty -ts_roundTripTxWitness = eachOfTS 20 (feedPM genTxWitness) roundTripsCBORShow - --------------------------------------------------------------------------------- --- UtxOError --------------------------------------------------------------------------------- - -ts_roundTripUTxOError :: TSProperty -ts_roundTripUTxOError = - eachOfTS 50 genUTxOError roundTripsCBORShow - --------------------------------------------------------------------------------- --- UTxOValidationError --------------------------------------------------------------------------------- - -ts_roundTripUTxOValidationError :: TSProperty -ts_roundTripUTxOValidationError = - eachOfTS 50 genUTxOValidationError roundTripsCBORShow - --------------------------------------------------------------------------------- --- UTxOConfiguration --------------------------------------------------------------------------------- - -ts_roundTripUTxOConfiguration :: TSProperty -ts_roundTripUTxOConfiguration = - eachOfTS 500 genUTxOConfiguration roundTripsCBORShow - --------------------------------------------------------------------------------- --- Size Estimates --------------------------------------------------------------------------------- - -sizeEstimates :: H.Group -sizeEstimates = - let sizeTestGen :: (Show a, EncCBOR a) => Gen a -> Property - sizeTestGen g = sizeTest $ scfg {gen = g} - pm = ProtocolMagicId 0 - - -- Explicit bounds for types, based on the generators from Gen. - attrUnitSize = (typeRep (Proxy @(Attributes ())), SizeConstant 1) - attrAddrSize = - ( typeRep (Proxy @(Attributes AddrAttributes)) - , SizeConstant (szCases [Case "min" 1, Case "max" 1024]) - ) - txSigSize = (typeRep (Proxy @(Signature TxSigData)), SizeConstant 66) - in H.Group - "Encoded size bounds for core types." - [ ("TxId", sizeTestGen genTxId) - , - ( "Tx" - , sizeTest - $ scfg - { gen = genTx - , addlCtx = M.fromList [attrUnitSize, attrAddrSize] - , computedCtx = \tx -> - M.fromList - [ - ( typeRep (Proxy @(LengthOf [TxIn])) - , SizeConstant (fromIntegral $ length $ txInputs tx) - ) - , - ( typeRep (Proxy @(LengthOf [TxOut])) - , SizeConstant (fromIntegral $ length $ txOutputs tx) - ) - ] - } - ) - , ("TxIn", sizeTestGen genTxIn) - , - ( "TxOut" - , sizeTest - $ scfg {gen = genTxOut, addlCtx = M.fromList [attrAddrSize]} - ) - , - ( "TxAux" - , sizeTest - $ scfg - { gen = genTxAux pm - , addlCtx = M.fromList [attrUnitSize, attrAddrSize, txSigSize] - , computedCtx = \ta -> - M.fromList - [ - ( typeRep (Proxy @(LengthOf [TxIn])) - , SizeConstant (fromIntegral $ length $ txInputs $ taTx ta) - ) - , - ( typeRep (Proxy @(LengthOf (Vector TxInWitness))) - , SizeConstant (fromIntegral $ length $ taWitness ta) - ) - , - ( typeRep (Proxy @(LengthOf [TxOut])) - , SizeConstant (fromIntegral $ length $ txOutputs $ taTx ta) - ) - ] - } - ) - , - ( "TxInWitness" - , sizeTest - $ scfg {gen = genTxInWitness pm, addlCtx = M.fromList [txSigSize]} - ) - , ("TxSigData", sizeTestGen genTxSigData) - , - ( "Signature TxSigData" - , sizeTest - $ scfg {gen = genTxSig pm, addlCtx = M.fromList [txSigSize]} - ) - ] - --------------------------------------------------------------------------------- --- Main test export --------------------------------------------------------------------------------- - -tests :: TSGroup -tests = - concatTSGroups - [const $$discoverGolden, $$discoverRoundTripArg, const sizeEstimates] diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/UTxO/Compact.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/UTxO/Compact.hs deleted file mode 100644 index b123dc1dedf..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/UTxO/Compact.hs +++ /dev/null @@ -1,90 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TemplateHaskell #-} - -module Test.Cardano.Chain.UTxO.Compact ( - tests, -) -where - -import Cardano.Chain.UTxO ( - fromCompactTxId, - fromCompactTxIn, - fromCompactTxOut, - toCompactTxId, - toCompactTxIn, - toCompactTxOut, - ) -import Cardano.HeapWords (HeapWords (..)) -import Cardano.Prelude -import Hedgehog (MonadTest, assert, forAll, property, tripping) -import Test.Cardano.Chain.UTxO.Gen (genTxId, genTxIn, genTxOut) -import Test.Cardano.Prelude -import Test.Options (TSGroup, TSProperty, concatTSGroups, eachOfTS, withTestsTS) - --------------------------------------------------------------------------------- --- Compact TxIn --------------------------------------------------------------------------------- - -ts_roundTripCompactTxIn :: TSProperty -ts_roundTripCompactTxIn = - eachOfTS 1000 genTxIn (trippingCompact toCompactTxIn fromCompactTxIn) - -ts_prop_heapWordsSavingsCompactTxIn :: TSProperty -ts_prop_heapWordsSavingsCompactTxIn = withTestsTS 1000 - $ property - $ do - txIn <- forAll genTxIn - let compactTxIn = toCompactTxIn txIn - assert $ heapWords compactTxIn < heapWords txIn - --------------------------------------------------------------------------------- --- Compact TxId --------------------------------------------------------------------------------- - -ts_roundTripCompactTxId :: TSProperty -ts_roundTripCompactTxId = - eachOfTS 1000 genTxId (trippingCompact toCompactTxId fromCompactTxId) - -ts_prop_heapWordsSavingsCompactTxId :: TSProperty -ts_prop_heapWordsSavingsCompactTxId = withTestsTS 1000 - $ property - $ do - txId <- forAll genTxId - let compactTxId = toCompactTxId txId - assert $ heapWords compactTxId < heapWords txId - --------------------------------------------------------------------------------- --- Compact TxOut --------------------------------------------------------------------------------- - -ts_roundTripCompactTxOut :: TSProperty -ts_roundTripCompactTxOut = - eachOfTS 1000 genTxOut (trippingCompact toCompactTxOut fromCompactTxOut) - -ts_prop_heapWordsSavingsCompactTxOut :: TSProperty -ts_prop_heapWordsSavingsCompactTxOut = withTestsTS 1000 - $ property - $ do - txOut <- forAll genTxOut - let compactTxOut = toCompactTxOut txOut - assert $ heapWords compactTxOut < heapWords txOut - -------------------------------------------------------------------------------- --- Tripping util -------------------------------------------------------------------------------- - -trippingCompact :: - (HasCallStack, MonadTest m, Show a, Show b, Eq a) => - (a -> b) -> - (b -> a) -> - a -> - m () -trippingCompact toCompact fromCompact x = - tripping x toCompact (Identity . fromCompact) - -------------------------------------------------------------------------------- --- Main test export -------------------------------------------------------------------------------- - -tests :: TSGroup -tests = concatTSGroups [$$discoverPropArg, $$discoverRoundTripArg] diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/UTxO/Example.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/UTxO/Example.hs deleted file mode 100644 index 1da7f8cab14..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/UTxO/Example.hs +++ /dev/null @@ -1,149 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} -{-# OPTIONS_GHC -Wno-incomplete-uni-patterns #-} - -module Test.Cardano.Chain.UTxO.Example ( - exampleTxAux, - exampleTxAux1, - exampleTxId, - exampleTxInList, - exampleTxInUtxo, - exampleTxPayload, - exampleTxPayload1, - exampleTxProof, - exampleTxOut, - exampleTxOut1, - exampleTxOutList, - exampleTxSig, - exampleTxSigData, - exampleTxWitness, - exampleRedeemSignature, - exampleHashTx, -) -where - -import Cardano.Chain.Common ( - NetworkMagic (..), - makeVerKeyAddress, - mkAttributes, - mkKnownLovelace, - mkMerkleTree, - mtRoot, - ) -import Cardano.Chain.UTxO ( - Tx (..), - TxAux, - TxId, - TxIn (..), - TxInWitness (..), - TxOut (..), - TxPayload, - TxProof (..), - TxSig, - TxSigData (..), - TxWitness, - mkTxAux, - mkTxPayload, - ) -import Cardano.Crypto ( - Hash, - ProtocolMagicId (..), - RedeemSignature, - SignTag (..), - VerificationKey (..), - redeemDeterministicKeyGen, - redeemSign, - serializeCborHash, - sign, - ) -import qualified Cardano.Crypto.Wallet as CC -import Cardano.Prelude -import Data.Coerce (coerce) -import Data.List.NonEmpty (fromList) -import Data.Maybe (fromJust) -import qualified Data.Vector as V -import Test.Cardano.Crypto.CBOR (getBytes) -import Test.Cardano.Crypto.Example (exampleSigningKey, exampleVerificationKey) - -exampleTxAux :: TxAux -exampleTxAux = mkTxAux tx exampleTxWitness - where - tx = UnsafeTx exampleTxInList exampleTxOutList (mkAttributes ()) - -exampleTxAux1 :: TxAux -exampleTxAux1 = mkTxAux tx exampleTxWitness - where - tx = UnsafeTx exampleTxInList1 exampleTxOutList1 (mkAttributes ()) - -exampleTxId :: TxId -exampleTxId = exampleHashTx - -exampleTxInList :: (NonEmpty TxIn) -exampleTxInList = fromList [exampleTxInUtxo] - -exampleTxInList1 :: (NonEmpty TxIn) -exampleTxInList1 = fromList [exampleTxInUtxo, exampleTxInUtxo1] - -exampleTxInUtxo :: TxIn -exampleTxInUtxo = TxInUtxo exampleHashTx 47 -- TODO: loop here - -exampleTxInUtxo1 :: TxIn -exampleTxInUtxo1 = TxInUtxo exampleHashTx 74 - -exampleTxOut :: TxOut -exampleTxOut = - TxOut - (makeVerKeyAddress NetworkMainOrStage vkey) - (mkKnownLovelace @47) - where - Right vkey = VerificationKey <$> CC.xpub (getBytes 0 64) - -exampleTxOut1 :: TxOut -exampleTxOut1 = TxOut (makeVerKeyAddress (NetworkTestnet 74) vkey) (mkKnownLovelace @47) - where - Right vkey = VerificationKey <$> CC.xpub (getBytes 0 64) - -exampleTxOutList :: (NonEmpty TxOut) -exampleTxOutList = fromList [exampleTxOut] - -exampleTxOutList1 :: (NonEmpty TxOut) -exampleTxOutList1 = fromList [exampleTxOut, exampleTxOut1] - -exampleTxPayload :: TxPayload -exampleTxPayload = mkTxPayload [exampleTxAux] - -exampleTxPayload1 :: TxPayload -exampleTxPayload1 = mkTxPayload [exampleTxAux, exampleTxAux1] - -exampleTxProof :: TxProof -exampleTxProof = TxProof 32 mroot hashWit - where - mroot = - mtRoot - $ mkMerkleTree - [(UnsafeTx exampleTxInList exampleTxOutList (mkAttributes ()))] - hashWit = serializeCborHash $ [(V.fromList [(VKWitness exampleVerificationKey exampleTxSig)])] - -exampleTxSig :: TxSig -exampleTxSig = - sign (ProtocolMagicId 0) SignForTestingOnly exampleSigningKey exampleTxSigData - -exampleTxSigData :: TxSigData -exampleTxSigData = TxSigData exampleHashTx - -exampleTxWitness :: TxWitness -exampleTxWitness = V.fromList [(VKWitness exampleVerificationKey exampleTxSig)] - -exampleRedeemSignature :: RedeemSignature TxSigData -exampleRedeemSignature = - redeemSign - (ProtocolMagicId 0) - SignForTestingOnly - rsk - exampleTxSigData - where - rsk = fromJust (snd <$> redeemDeterministicKeyGen (getBytes 0 32)) - -exampleHashTx :: Hash Tx -exampleHashTx = coerce (serializeCborHash "golden" :: Hash Text) diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/UTxO/Gen.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/UTxO/Gen.hs deleted file mode 100644 index cd0450656c0..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/UTxO/Gen.hs +++ /dev/null @@ -1,212 +0,0 @@ -module Test.Cardano.Chain.UTxO.Gen ( - genCompactTxId, - genCompactTxIn, - genCompactTxOut, - genVKWitness, - genRedeemWitness, - genTx, - genTxAttributes, - genTxAux, - genTxHash, - genTxId, - genTxIn, - genTxInList, - genTxInWitness, - genTxOut, - genTxOutList, - genTxPayload, - genUTxOConfiguration, - genTxProof, - genTxSig, - genTxSigData, - genTxValidationError, - genTxWitness, - genUTxO, - genUTxOError, - genUTxOValidationError, -) -where - -import Cardano.Chain.Common (makeNetworkMagic, mkAttributes) -import Cardano.Chain.UTxO ( - CompactTxId, - CompactTxIn, - CompactTxOut, - Tx (..), - TxAttributes, - TxAux, - TxId, - TxIn (..), - TxInWitness (..), - TxOut (..), - TxPayload, - TxProof (..), - TxSig, - TxSigData (..), - TxValidationError (..), - TxWitness, - UTxO, - UTxOConfiguration (..), - UTxOError (..), - UTxOValidationError (..), - fromList, - mkTxAux, - mkTxPayload, - mkUTxOConfiguration, - toCompactTxId, - toCompactTxIn, - toCompactTxOut, - ) -import Cardano.Crypto ( - Hash, - ProtocolMagicId, - decodeHash, - getProtocolMagicId, - sign, - ) -import Cardano.Prelude -import Data.ByteString.Base16 as B16 -import Data.Coerce (coerce) -import qualified Data.Vector as V -import Hedgehog -import qualified Hedgehog.Gen as Gen -import qualified Hedgehog.Range as Range -import Test.Cardano.Chain.Common.Gen ( - genAddress, - genLovelace, - genLovelaceError, - genMerkleRoot, - genNetworkMagic, - ) -import Test.Cardano.Crypto.Gen ( - genAbstractHash, - genProtocolMagic, - genRedeemSignature, - genRedeemVerificationKey, - genSignTag, - genSigningKey, - genTextHash, - genVerificationKey, - ) -import Test.Cardano.Prelude - -genCompactTxId :: Gen CompactTxId -genCompactTxId = toCompactTxId <$> genTxId - -genCompactTxIn :: Gen CompactTxIn -genCompactTxIn = toCompactTxIn <$> genTxIn - -genCompactTxOut :: Gen CompactTxOut -genCompactTxOut = toCompactTxOut <$> genTxOut - -genVKWitness :: ProtocolMagicId -> Gen TxInWitness -genVKWitness pm = VKWitness <$> genVerificationKey <*> genTxSig pm - -genRedeemWitness :: ProtocolMagicId -> Gen TxInWitness -genRedeemWitness pm = - RedeemWitness <$> genRedeemVerificationKey <*> genRedeemSignature pm genTxSigData - -genTx :: Gen Tx -genTx = UnsafeTx <$> genTxInList <*> genTxOutList <*> genTxAttributes - -genTxAttributes :: Gen TxAttributes -genTxAttributes = pure $ mkAttributes () - -genTxAux :: ProtocolMagicId -> Gen TxAux -genTxAux pm = mkTxAux <$> genTx <*> (genTxWitness pm) - -genTxHash :: Gen (Hash Tx) -genTxHash = coerce <$> genTextHash - -genTxId :: Gen TxId -genTxId = genBase16Text >>= pure . decodeHash >>= either panic pure - where - genBase16Text = decodeUtf8 <$> genBase16Bs - -genBase16Bs :: Gen ByteString -genBase16Bs = B16.encode <$> genBytes 32 - -genTxIn :: Gen TxIn -genTxIn = TxInUtxo <$> genTxId <*> genWord16 - -genTxInList :: Gen (NonEmpty TxIn) -genTxInList = Gen.nonEmpty (Range.linear 1 20) genTxIn - -genTxOut :: Gen TxOut -genTxOut = TxOut <$> genAddress <*> genLovelace - -genTxOutList :: Gen (NonEmpty TxOut) -genTxOutList = Gen.nonEmpty (Range.linear 1 100) genTxOut - -genUTxOConfiguration :: Gen UTxOConfiguration -genUTxOConfiguration = - mkUTxOConfiguration - <$> Gen.list (Range.linear 0 50) genAddress - -genTxPayload :: ProtocolMagicId -> Gen TxPayload -genTxPayload pm = mkTxPayload <$> Gen.list (Range.linear 0 10) (genTxAux pm) - -genTxProof :: ProtocolMagicId -> Gen TxProof -genTxProof pm = - TxProof - <$> genWord32 - <*> genMerkleRoot genTx - <*> genAbstractHash - (Gen.list (Range.linear 1 5) (genTxWitness pm)) - -genTxSig :: ProtocolMagicId -> Gen TxSig -genTxSig pm = sign pm <$> genSignTag <*> genSigningKey <*> genTxSigData - -genTxSigData :: Gen TxSigData -genTxSigData = TxSigData <$> genTxHash - -genTxValidationError :: Gen TxValidationError -genTxValidationError = do - pm <- genProtocolMagic - let pmi = getProtocolMagicId pm - nm = makeNetworkMagic pm - Gen.choice - [ TxValidationLovelaceError - <$> Gen.text (Range.constant 0 1000) Gen.alphaNum - <*> genLovelaceError - , TxValidationFeeTooSmall <$> genTx <*> genLovelace <*> genLovelace - , TxValidationWitnessWrongSignature - <$> genTxInWitness pmi - <*> pure pmi - <*> genTxSigData - , TxValidationWitnessWrongKey <$> genTxInWitness pmi <*> genAddress - , TxValidationMissingInput <$> genTxIn - , TxValidationNetworkMagicMismatch <$> genNetworkMagic <*> pure nm - , TxValidationTxTooLarge - <$> Gen.integral (Range.constant 0 1000) - <*> Gen.integral (Range.constant 0 1000) - , pure TxValidationUnknownAddressAttributes - , pure TxValidationUnknownAttributes - ] - -genTxInWitness :: ProtocolMagicId -> Gen TxInWitness -genTxInWitness pm = Gen.choice [genVKWitness pm, genRedeemWitness pm] - -genTxWitness :: ProtocolMagicId -> Gen TxWitness -genTxWitness pm = - V.fromList <$> Gen.list (Range.linear 1 10) (genTxInWitness pm) - -genUTxO :: Gen UTxO -genUTxO = fromList <$> Gen.list (Range.constant 0 1000) genTxInTxOut - where - genTxInTxOut :: Gen (TxIn, TxOut) - genTxInTxOut = (,) <$> genTxIn <*> genTxOut - -genUTxOError :: Gen UTxOError -genUTxOError = - Gen.choice - [ UTxOMissingInput <$> genTxIn - , pure UTxOOverlappingUnion - ] - -genUTxOValidationError :: Gen UTxOValidationError -genUTxOValidationError = - Gen.choice - [ UTxOValidationTxValidationError <$> genTxValidationError - , UTxOValidationUTxOError <$> genUTxOError - ] diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/UTxO/Model.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/UTxO/Model.hs deleted file mode 100644 index 347a8f154e0..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/UTxO/Model.hs +++ /dev/null @@ -1,160 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TemplateHaskell #-} -{-# LANGUAGE TupleSections #-} -{-# LANGUAGE TypeApplications #-} -{-# OPTIONS_GHC -Wno-incomplete-uni-patterns #-} - -module Test.Cardano.Chain.UTxO.Model ( - tests, - elaborateAndUpdate, - elaborateInitialUTxO, - elaborateTxWitnesses, - elaborateTxWitsBSWithMap, -) -where - -import qualified Byron.Spec.Ledger.STS.UTXO as Abstract -import Byron.Spec.Ledger.STS.UTXOW (UTXOW) -import qualified Byron.Spec.Ledger.UTxO as Abstract -import Cardano.Chain.Block (BlockValidationMode (BlockValidation)) -import Cardano.Chain.UTxO ( - TxValidationMode (TxValidation), - updateUTxOTxWitness, - ) -import qualified Cardano.Chain.UTxO as Concrete -import qualified Cardano.Chain.UTxO.UTxO as Concrete.UTxO -import Cardano.Chain.ValidationMode (ValidationMode (..)) -import Cardano.Crypto (hashDecoded, serializeCborHash) -import Cardano.Prelude hiding (trace, traceM, traceShow) -import Data.Coerce (coerce) -import qualified Data.Map.Strict as M -import Hedgehog (MonadTest, evalEither, forAll, property) -import Lens.Micro ((^.)) -import qualified Test.Cardano.Chain.Elaboration.UTxO as E -import Test.Cardano.Prelude -import Test.Control.State.Transition.Generator (classifyTraceLength, trace) -import Test.Control.State.Transition.Trace ( - Trace, - TraceOrder (OldestFirst), - traceEnv, - traceSignals, - ) -import Test.Options (TSGroup, TSProperty, withTestsTS) - -tests :: TSGroup -tests = $$discoverPropArg - --- | Every abstract trace of transaction that was generated according to the --- inference rules, after being elaborated must be validated by the concrete --- UTxO validator. -ts_prop_generatedUTxOChainsAreValidated :: TSProperty -ts_prop_generatedUTxOChainsAreValidated = - withTestsTS 300 - $ property - $ do - tr <- forAll $ trace @UTXOW () 500 - classifyTraceLength tr 200 50 - passConcreteValidation tr - -passConcreteValidation :: MonadTest m => Trace UTXOW -> m () -passConcreteValidation !tr = void $ evalEither res - where - res = - foldM (elaborateAndUpdate abstractEnv) initSt - $ traceSignals OldestFirst tr - - abstractEnv = tr ^. traceEnv - - initSt = elaborateInitialUTxO (Abstract.utxo0 abstractEnv) - --- | Create the initial concrete UTxO by elaborating the outputs and updating --- the map from abstract TxIds to concrete TxIds -elaborateInitialUTxO :: - Abstract.UTxO -> - (Concrete.UTxO, Map Abstract.TxId Concrete.TxId) -elaborateInitialUTxO abstractUtxo = - foldr - txOutToUTxO - (Concrete.UTxO.empty, mempty) - (M.toList $ Abstract.unUTxO abstractUtxo) - where - txOutToUTxO :: - (Abstract.TxIn, Abstract.TxOut) -> - (Concrete.UTxO, Map Abstract.TxId Concrete.TxId) -> - (Concrete.UTxO, Map Abstract.TxId Concrete.TxId) - txOutToUTxO (Abstract.TxIn abstractTxId _, abstractTxOut) (utxo, txIdMap) = - let singletonUtxo = - Concrete.UTxO.fromTxOut (E.elaborateTxOut abstractTxOut) - [(Concrete.TxInUtxo concreteTxId _, _)] = - Concrete.UTxO.toList singletonUtxo - Right utxo' = utxo `Concrete.UTxO.union` singletonUtxo - in (utxo', M.insert abstractTxId concreteTxId txIdMap) - --- | Elaborate a single transaction, apply it to the UTxO, and update the TxId --- map with the new concrete TxId -elaborateAndUpdate :: - Abstract.UTxOEnv -> - (Concrete.UTxO, Map Abstract.TxId Concrete.TxId) -> - Abstract.Tx -> - Either - Concrete.UTxOValidationError - (Concrete.UTxO, Map Abstract.TxId Concrete.TxId) -elaborateAndUpdate abstractEnv (utxo, txIdMap) abstractTxWits = - (,txIdMap') - <$> runReaderT - ( updateUTxOTxWitness - (E.elaborateUTxOEnv abstractEnv) - utxo - concreteTxWitness - ) - vMode - where - (concreteTxWitness, txIdMap') = - elaborateTxWitsBSWithMap txIdMap abstractTxWits - - vMode = - ValidationMode - { blockValidationMode = BlockValidation - , txValidationMode = TxValidation - } - -elaborateTxWitnesses :: - Map Abstract.TxId Concrete.TxId -> - [Abstract.Tx] -> - ([Concrete.ATxAux ByteString], Map Abstract.TxId Concrete.TxId) -elaborateTxWitnesses txIdMap = first reverse . foldl' step ([], txIdMap) - where - step (acc, m) = first (: acc) . elaborateTxWitsBSWithMap m - -elaborateTxWitsBSWithMap :: - Map Abstract.TxId Concrete.TxId -> - Abstract.Tx -> - (Concrete.ATxAux ByteString, Map Abstract.TxId Concrete.TxId) -elaborateTxWitsBSWithMap txIdMap abstractTxWits = (concreteTxWitness, txIdMap') - where - concreteTxWitness = - E.elaborateTxBS - (elaborateTxId txIdMap) - abstractTxWits - - concreteTxId = hashDecoded $ Concrete.aTaTx concreteTxWitness - - txIdMap' = - M.insert - (Abstract.txid $ Abstract.body abstractTxWits) - concreteTxId - txIdMap - --- | This function uses the supplied txIdMap to look up the concrete --- counterpart to an abstract TxId. If the key is not present in the map, --- though, it hashes the `show` Text of the TxId, which essentially creates --- a new TxId outside of the UTxO (but which is unlikely to collide with --- another TxId. -elaborateTxId :: - Map Abstract.TxId Concrete.TxId -> - (Abstract.TxId -> Concrete.TxId) -elaborateTxId txIdMap txId = - case M.lookup txId txIdMap of - Just concreteTxId -> concreteTxId - Nothing -> coerce $ serializeCborHash (show txId :: Text) diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/UTxO/ValidationMode.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/UTxO/ValidationMode.hs deleted file mode 100644 index 72d587bd2b8..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/UTxO/ValidationMode.hs +++ /dev/null @@ -1,247 +0,0 @@ -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TemplateHaskell #-} - -module Test.Cardano.Chain.UTxO.ValidationMode ( - tests, -) -where - -import qualified Byron.Spec.Ledger.Core as Abstract -import qualified Byron.Spec.Ledger.Core.Generators as Abstract -import qualified Byron.Spec.Ledger.UTxO as Abstract -import qualified Byron.Spec.Ledger.UTxO.Generators as Abstract -import qualified Byron.Spec.Ledger.Update as Abstract -import qualified Byron.Spec.Ledger.Update.Generators as Abstract -import Cardano.Chain.Block (BlockValidationMode (..)) -import Cardano.Chain.Common ( - TxFeePolicy (..), - calculateTxSizeLinear, - lovelaceToInteger, - ) -import Cardano.Chain.UTxO ( - ATxAux (..), - Environment (..), - TxId, - TxValidationError (..), - TxValidationMode (..), - UTxOValidationError (..), - ) -import qualified Cardano.Chain.UTxO as UTxO -import Cardano.Chain.Update (ProtocolParameters (..)) -import Cardano.Chain.ValidationMode (ValidationMode (..)) -import Cardano.Crypto (getProtocolMagicId) -import Cardano.Ledger.Binary (Annotated (..)) -import Cardano.Prelude -import qualified Data.ByteString as BS -import qualified Data.Map.Strict as M -import qualified Data.Vector as V -import Hedgehog -import qualified Hedgehog.Gen as Gen -import qualified Hedgehog.Range as Range -import Test.Cardano.Chain.Elaboration.UTxO (elaborateTxBS) -import Test.Cardano.Chain.Elaboration.Update (elaboratePParams) -import Test.Cardano.Chain.UTxO.Gen (genVKWitness) -import Test.Cardano.Chain.UTxO.Model (elaborateInitialUTxO) -import qualified Test.Cardano.Crypto.Dummy as Dummy -import Test.Cardano.Prelude -import Test.Options (TSGroup, TSProperty, withTestsTS) - --------------------------------------------------------------------------------- --- TxValidationMode Properties --------------------------------------------------------------------------------- - --- | Property: When calling 'updateUTxO' given a valid transaction, 'UTxO' --- validation should pass in all 'TxValidationMode's. -ts_prop_updateUTxO_Valid :: TSProperty -ts_prop_updateUTxO_Valid = - withTestsTS 300 - . property - $ do - -- Generate abstract `PParamsAddrsAndUTxO` - ppau@(PParamsAddrsAndUTxO abstractPparams _ abstractUtxo) <- - forAll $ genPParamsAddrsAndUTxO (Range.constant 1 5) - - -- Elaborate abstract values to concrete. - let pparams = elaboratePParams abstractPparams - (utxo, txIdMap) = elaborateInitialUTxO abstractUtxo - - -- Generate abstract transaction and elaborate. - abstractTxWits <- forAll $ genValidTxWits ppau txIdMap - let tx = - elaborateTxBS - (elaborateTxId txIdMap) - abstractTxWits - - -- Validate the generated concrete transaction - let pm = Dummy.aProtocolMagic - env = Environment pm pparams UTxO.defaultUTxOConfiguration - vMode <- forAll $ ValidationMode BlockValidation <$> genValidationMode - updateRes <- - (`runReaderT` vMode) - . runExceptT - $ UTxO.updateUTxO env utxo [tx] - void $ evalEither updateRes - --- | Property: When calling 'updateUTxO' given a valid transaction with an --- invalid witness, 'UTxO' validation should pass in both the --- 'TxValidationNoCrypto' and 'NoTxValidation' modes. This is because neither --- of these modes verify the cryptographic integrity of a transaction. -ts_prop_updateUTxO_InvalidWit :: TSProperty -ts_prop_updateUTxO_InvalidWit = - withTestsTS 300 - . property - $ do - -- Generate abstract `PParamsAddrsAndUTxO` - ppau@(PParamsAddrsAndUTxO abstractPparams _ abstractUtxo) <- - forAll $ genPParamsAddrsAndUTxO (Range.constant 1 5) - - -- Elaborate abstract values to concrete. - let pparams = elaboratePParams abstractPparams - (utxo, txIdMap) = elaborateInitialUTxO abstractUtxo - - -- Generate abstract transaction and elaborate. - abstractTxWits <- forAll $ genValidTxWits ppau txIdMap - let tx = - elaborateTxBS - (elaborateTxId txIdMap) - abstractTxWits - - -- Generate an invalid 'TxWitness' and utilize it in the valid - -- transaction generated above. - let pm = Dummy.aProtocolMagic - invalidWitness <- - forAll - $ Annotated - <$> ( V.fromList - <$> Gen.list - (Range.linear 1 10) - (genVKWitness (getProtocolMagicId pm)) - ) - <*> genBytes 32 - let txInvalidWit = tx {aTaWitness = invalidWitness} - - -- Validate the generated concrete transaction - let env = Environment pm pparams UTxO.defaultUTxOConfiguration - vMode <- forAll $ ValidationMode BlockValidation <$> genValidationMode - updateRes <- - (`runReaderT` vMode) - . runExceptT - $ UTxO.updateUTxO env utxo [txInvalidWit] - case updateRes of - Left err -> - if isInvalidWitnessError err - && (txValidationMode vMode) - == TxValidation - then success - else failure - Right _ -> - if (txValidationMode vMode) == TxValidation - then failure - else success - where - isInvalidWitnessError :: UTxOValidationError -> Bool - isInvalidWitnessError (UTxOValidationTxValidationError err) = case err of - TxValidationWitnessWrongSignature {} -> True - TxValidationWitnessWrongKey {} -> True - _ -> False - isInvalidWitnessError _ = False - --------------------------------------------------------------------------------- --- Generators --------------------------------------------------------------------------------- - -genAbstractAddrs :: Range Int -> Gen [Abstract.Addr] -genAbstractAddrs r = Gen.list r Abstract.addrGen - -genInitialAbstractUTxO :: [Abstract.Addr] -> Gen Abstract.UTxO -genInitialAbstractUTxO addrs = - Abstract.fromTxOuts <$> Abstract.genInitialTxOuts addrs - -genPParamsAddrsAndUTxO :: - -- | Range for generation of 'Abstract.Addr's. - Range Int -> - Gen PParamsAddrsAndUTxO -genPParamsAddrsAndUTxO addrRange = do - abstractPparams <- Abstract.pparamsGen - abstractAddrs <- genAbstractAddrs addrRange - abstractUtxo <- genInitialAbstractUTxO abstractAddrs - pure $ PParamsAddrsAndUTxO abstractPparams abstractAddrs abstractUtxo - -genValidTxWits :: - PParamsAddrsAndUTxO -> - Map Abstract.TxId TxId -> - Gen Abstract.Tx -genValidTxWits ppau txIdMap = do - Abstract.genTxFromUTxO - ppauAddrs - (abstractTxFee txIdMap (ppTxFeePolicy pparams)) - ppauUTxO - where - PParamsAddrsAndUTxO - { ppauPParams - , ppauAddrs - , ppauUTxO - } = ppau - - pparams = elaboratePParams ppauPParams - -genValidationMode :: Gen TxValidationMode -genValidationMode = - Gen.element - [ TxValidation - , TxValidationNoCrypto - , NoTxValidation - ] - --------------------------------------------------------------------------------- --- Helpers --------------------------------------------------------------------------------- - -data PParamsAddrsAndUTxO = PParamsAddrsAndUTxO - { ppauPParams :: !Abstract.PParams - , ppauAddrs :: ![Abstract.Addr] - , ppauUTxO :: !Abstract.UTxO - } - deriving (Show) - --- | Elaborate an 'Abstract.Tx', calculate the 'Concrete.Lovelace' fee, then --- convert back to an 'Abstract.Lovelace'. --- n.b. Calculating the fee with 'Abstract.pcMinFee', for example, proved to --- be ineffective as it utilizes the 'Abstract.Size' of the 'Abstract.Tx' in --- its calculation when we really need to take into account the actual --- concrete size in bytes. -abstractTxFee :: - Map Abstract.TxId UTxO.TxId -> - TxFeePolicy -> - Abstract.Tx -> - Abstract.Lovelace -abstractTxFee txIdMap tfp aTx = do - let ATxAux (Annotated _ txBytes) _ _ = - elaborateTxBS - (elaborateTxId txIdMap) - aTx - cLovelace = case tfp of - TxFeePolicyTxSizeLinear txSizeLinear -> - either - (panic . show) - (\x -> x) - ( calculateTxSizeLinear - txSizeLinear - (fromIntegral $ BS.length txBytes) - ) - -- Add an extra lovelace to the fee to compensate for rounding errors - Abstract.Lovelace (1 + lovelaceToInteger cLovelace) - -elaborateTxId :: Map Abstract.TxId UTxO.TxId -> Abstract.TxId -> TxId -elaborateTxId txIdMap abstractTxId = - case M.lookup abstractTxId txIdMap of - Nothing -> panic "elaborateTxId: Missing abstract TxId during elaboration" - Just x -> x - --------------------------------------------------------------------------------- --- Main Test Export --------------------------------------------------------------------------------- - -tests :: TSGroup -tests = $$discoverPropArg diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Update/CBOR.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Update/CBOR.hs deleted file mode 100644 index 7f483c3553c..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Update/CBOR.hs +++ /dev/null @@ -1,259 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TemplateHaskell #-} - -module Test.Cardano.Chain.Update.CBOR ( - tests, -) -where - -import Cardano.Chain.Common (rationalToLovelacePortion) -import Cardano.Chain.Update (ApplicationName (..), SoftforkRule (..)) -import Cardano.Crypto (Hash, abstractHash) -import Cardano.Crypto.Raw (Raw (..)) -import Cardano.Prelude -import GetDataFileName ((<:<)) -import Hedgehog (Property) -import Test.Cardano.Chain.Update.Example ( - exampleInstallerHash, - examplePayload, - exampleProof, - exampleProposal, - exampleProposalBody, - exampleProtocolParameters, - exampleProtocolParametersUpdate, - exampleProtocolVersion, - exampleSoftwareVersion, - exampleSystemTag, - exampleUpId, - exampleVote, - ) -import Test.Cardano.Chain.Update.Gen ( - genApplicationName, - genInstallerHash, - genPayload, - genProof, - genProposal, - genProposalBody, - genProtocolParameters, - genProtocolParametersUpdate, - genProtocolVersion, - genSoftforkRule, - genSoftwareVersion, - genSystemTag, - genUpId, - genUpsData, - genVote, - ) -import Test.Cardano.Crypto.Gen (feedPM, genHashRaw) -import Test.Cardano.Ledger.Binary.Vintage.Helpers.GoldenRoundTrip ( - goldenTestCBOR, - roundTripsCBORBuildable, - roundTripsCBORShow, - ) -import Test.Cardano.Prelude -import Test.Options (TSGroup, TSProperty, concatTSGroups, eachOfTS) - --------------------------------------------------------------------------------- --- ApplicationName --------------------------------------------------------------------------------- - -goldenApplicationName :: Property -goldenApplicationName = - goldenTestCBOR - aN - <:< "golden/cbor/update/ApplicationName" - where - aN = ApplicationName "Golden" - -ts_roundTripApplicationName :: TSProperty -ts_roundTripApplicationName = - eachOfTS 50 genApplicationName roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- ProtocolVersion --------------------------------------------------------------------------------- - -goldenProtocolVersion :: Property -goldenProtocolVersion = - goldenTestCBOR - exampleProtocolVersion - <:< "golden/cbor/update/ProtocolVersion" - -ts_roundTripProtocolVersion :: TSProperty -ts_roundTripProtocolVersion = - eachOfTS 50 genProtocolVersion roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- ProtocolParameters --------------------------------------------------------------------------------- - -goldenProtocolParameters :: Property -goldenProtocolParameters = - goldenTestCBOR - bVerDat - <:< "golden/cbor/update/ProtocolParameters" - where - bVerDat = exampleProtocolParameters - -ts_roundTripProtocolParameters :: TSProperty -ts_roundTripProtocolParameters = - eachOfTS 50 genProtocolParameters roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- ProtocolParametersUpdate --------------------------------------------------------------------------------- - -goldenProtocolParametersUpdate :: Property -goldenProtocolParametersUpdate = - goldenTestCBOR - ppu - <:< "golden/cbor/update/ProtocolParametersUpdate" - where - ppu = exampleProtocolParametersUpdate - -ts_roundTripProtocolParametersUpdate :: TSProperty -ts_roundTripProtocolParametersUpdate = - eachOfTS 50 genProtocolParametersUpdate roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- HashRaw --------------------------------------------------------------------------------- - -goldenBlockHashRaw :: Property -goldenBlockHashRaw = goldenTestCBOR hRaw <:< "golden/cbor/update/HashRaw" - where - hRaw = (abstractHash $ Raw ("9") :: Hash Raw) - -ts_roundTripHashRaw :: TSProperty -ts_roundTripHashRaw = eachOfTS 50 genHashRaw roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- SoftforkRule --------------------------------------------------------------------------------- - -goldenSoftforkRule :: Property -goldenSoftforkRule = goldenTestCBOR sfR <:< "golden/cbor/update/SoftforkRule" - where - sfR = - SoftforkRule - (rationalToLovelacePortion 99e-15) - (rationalToLovelacePortion 99e-15) - (rationalToLovelacePortion 99e-15) - -ts_roundTripSoftforkRule :: TSProperty -ts_roundTripSoftforkRule = eachOfTS 10 genSoftforkRule roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- SoftwareVersion --------------------------------------------------------------------------------- - -goldenSoftwareVersion :: Property -goldenSoftwareVersion = - goldenTestCBOR - exampleSoftwareVersion - <:< "golden/cbor/update/SoftwareVersion" - -ts_roundTripSoftwareVersion :: TSProperty -ts_roundTripSoftwareVersion = - eachOfTS 10 genSoftwareVersion roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- SystemTag --------------------------------------------------------------------------------- - -goldenSystemTag :: Property -goldenSystemTag = - goldenTestCBOR exampleSystemTag <:< "golden/cbor/update/SystemTag" - -ts_roundTripSystemTag :: TSProperty -ts_roundTripSystemTag = eachOfTS 10 genSystemTag roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- InstallerHash --------------------------------------------------------------------------------- - -goldenInstallerHash :: Property -goldenInstallerHash = - goldenTestCBOR exampleInstallerHash <:< "golden/cbor/update/InstallerHash" - -ts_roundTripInstallerHash :: TSProperty -ts_roundTripInstallerHash = eachOfTS 20 genInstallerHash roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- UpdatePayload --------------------------------------------------------------------------------- - -goldenUpdatePayload :: Property -goldenUpdatePayload = - goldenTestCBOR examplePayload <:< "golden/cbor/update/Payload" - -ts_roundTripUpdatePayload :: TSProperty -ts_roundTripUpdatePayload = - eachOfTS 20 (feedPM genPayload) roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- UpdateProof --------------------------------------------------------------------------------- - -goldenUpdateProof :: Property -goldenUpdateProof = goldenTestCBOR exampleProof <:< "golden/cbor/update/Proof" - -ts_roundTripUpdateProof :: TSProperty -ts_roundTripUpdateProof = eachOfTS 20 (feedPM genProof) roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- UpdateProposal --------------------------------------------------------------------------------- - -goldenUpdateProposal :: Property -goldenUpdateProposal = - goldenTestCBOR exampleProposal <:< "golden/cbor/update/Proposal" - -ts_roundTripUpdateProposal :: TSProperty -ts_roundTripUpdateProposal = - eachOfTS 20 (feedPM genProposal) roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- ProposalBody --------------------------------------------------------------------------------- - -goldenProposalBody :: Property -goldenProposalBody = - goldenTestCBOR exampleProposalBody <:< "golden/cbor/update/ProposalBody" - -ts_roundTripProposalBody :: TSProperty -ts_roundTripProposalBody = eachOfTS 20 genProposalBody roundTripsCBORShow - --------------------------------------------------------------------------------- --- UpdateVote --------------------------------------------------------------------------------- - -goldenUpdateVote :: Property -goldenUpdateVote = goldenTestCBOR exampleVote <:< "golden/cbor/update/Vote" - -ts_roundTripUpdateVote :: TSProperty -ts_roundTripUpdateVote = eachOfTS 20 (feedPM genVote) roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- UpId --------------------------------------------------------------------------------- - -goldenUpId :: Property -goldenUpId = goldenTestCBOR exampleUpId <:< "golden/cbor/update/UpId" - -ts_roundTripUpId :: TSProperty -ts_roundTripUpId = eachOfTS 20 (feedPM genUpId) roundTripsCBORBuildable - --------------------------------------------------------------------------------- --- UpsData NB: UpsData is not a type it is a record accessor of `ProposalBody` --------------------------------------------------------------------------------- - -ts_roundTripUpsData :: TSProperty -ts_roundTripUpsData = eachOfTS 20 genUpsData roundTripsCBORShow - --------------------------------------------------------------------------------- --- Main test export --------------------------------------------------------------------------------- - -tests :: TSGroup -tests = concatTSGroups [const $$discoverGolden, $$discoverRoundTripArg] diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Update/Example.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Update/Example.hs deleted file mode 100644 index 08a4febfae7..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Update/Example.hs +++ /dev/null @@ -1,176 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Chain.Update.Example ( - exampleApplicationName, - exampleProtocolVersion, - exampleProtocolParameters, - exampleProtocolParametersUpdate, - exampleSoftwareVersion, - exampleSystemTag, - exampleInstallerHash, - examplePayload, - exampleProof, - exampleProposal, - exampleProposalBody, - exampleUpId, - exampleVote, -) -where - -import Cardano.Chain.Common ( - TxFeePolicy (..), - TxSizeLinear (..), - mkKnownLovelace, - rationalToLovelacePortion, - ) -import Cardano.Chain.Slotting (EpochNumber (..), SlotNumber (..)) -import Cardano.Chain.Update ( - ApplicationName (..), - InstallerHash (..), - Payload, - Proof, - Proposal, - ProposalBody (..), - ProtocolParameters (..), - ProtocolParametersUpdate (..), - ProtocolVersion (..), - SoftforkRule (..), - SoftwareVersion (..), - SystemTag (..), - UpId, - Vote, - mkProof, - payload, - signProposal, - signVote, - ) -import Cardano.Crypto (ProtocolMagicId (..), serializeCborHash) -import Cardano.Crypto.Raw (Raw (..)) -import Cardano.Prelude -import Data.List ((!!)) -import qualified Data.Map.Strict as Map -import Test.Cardano.Crypto.CBOR (getBytes) -import Test.Cardano.Crypto.Example (exampleSafeSigner) -import Test.Cardano.Prelude - -exampleApplicationName :: ApplicationName -exampleApplicationName = ApplicationName "Golden" - -exampleProtocolVersion :: ProtocolVersion -exampleProtocolVersion = ProtocolVersion 1 1 1 - -exampleProtocolParameters :: ProtocolParameters -exampleProtocolParameters = - ProtocolParameters - (999 :: Word16) - (999 :: Natural) - (999 :: Natural) - (999 :: Natural) - (999 :: Natural) - (999 :: Natural) - (rationalToLovelacePortion 99e-15) - (rationalToLovelacePortion 99e-15) - (rationalToLovelacePortion 99e-15) - (rationalToLovelacePortion 99e-15) - (SlotNumber 99) - sfrule - (TxFeePolicyTxSizeLinear tslin) - (EpochNumber 99) - where - tslin = TxSizeLinear c1' c2' - c1' = mkKnownLovelace @999 - c2' = 77 :: Rational - sfrule = - SoftforkRule - (rationalToLovelacePortion 99e-15) - (rationalToLovelacePortion 99e-15) - (rationalToLovelacePortion 99e-15) - -exampleProtocolParametersUpdate :: ProtocolParametersUpdate -exampleProtocolParametersUpdate = - ProtocolParametersUpdate - (Just (999 :: Word16)) - (Just (999 :: Natural)) - (Just (999 :: Natural)) - (Just (999 :: Natural)) - (Just (999 :: Natural)) - (Just (999 :: Natural)) - (Just $ rationalToLovelacePortion 99e-15) - (Just $ rationalToLovelacePortion 99e-15) - (Just $ rationalToLovelacePortion 99e-15) - (Just $ rationalToLovelacePortion 99e-15) - (Just $ SlotNumber 99) - (Just sfrule') - (Just $ TxFeePolicyTxSizeLinear tslin') - (Just $ EpochNumber 99) - where - tslin' = TxSizeLinear co1 co2 - co1 = mkKnownLovelace @999 - co2 = 77 :: Rational - sfrule' = - SoftforkRule - (rationalToLovelacePortion 99e-15) - (rationalToLovelacePortion 99e-15) - (rationalToLovelacePortion 99e-15) - -exampleSystemTag :: SystemTag -exampleSystemTag = exampleSystemTags 0 1 !! 0 - -exampleSystemTags :: Int -> Int -> [SystemTag] -exampleSystemTags offset count = - map - (toSystemTag . (* offset)) - [0 .. count - 1] - where - toSystemTag start = SystemTag (getText start 16) - -exampleInstallerHash :: InstallerHash -exampleInstallerHash = exampleInstallerHashes 10 2 !! 1 - -exampleInstallerHashes :: Int -> Int -> [InstallerHash] -exampleInstallerHashes offset count = - map - (toInstallerHash . (* offset)) - [0 .. count - 1] - where - toInstallerHash start = InstallerHash . serializeCborHash . Raw $ getBytes start 128 - -exampleUpId :: UpId -exampleUpId = serializeCborHash exampleProposal - -examplePayload :: Payload -examplePayload = payload up uv - where - up = Just exampleProposal - uv = [exampleVote] - -exampleProof :: Proof -exampleProof = mkProof examplePayload - -exampleProposal :: Proposal -exampleProposal = signProposal pm exampleProposalBody ss - where - pm = ProtocolMagicId 0 - ss = exampleSafeSigner 0 - -exampleProposalBody :: ProposalBody -exampleProposalBody = ProposalBody bv bvm sv hm - where - bv = exampleProtocolVersion - bvm = exampleProtocolParametersUpdate - sv = exampleSoftwareVersion - hm = - Map.fromList $ zip (exampleSystemTags 10 5) (exampleInstallerHashes 10 5) - -exampleVote :: Vote -exampleVote = signVote pm ui ar ss - where - pm = ProtocolMagicId 0 - ss = exampleSafeSigner 0 - ui = exampleUpId - ar = True - -exampleSoftwareVersion :: SoftwareVersion -exampleSoftwareVersion = SoftwareVersion (ApplicationName "Golden") 99 diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Update/Gen.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Update/Gen.hs deleted file mode 100644 index 5409bd87c3f..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Update/Gen.hs +++ /dev/null @@ -1,262 +0,0 @@ -module Test.Cardano.Chain.Update.Gen ( - genCanonicalProtocolParameters, - genApplicationName, - genError, - genProtocolVersion, - genProtocolParameters, - genProtocolParametersUpdate, - genSoftforkRule, - genSoftwareVersion, - genSystemTag, - genInstallerHash, - genPayload, - genProof, - genProposal, - genProposalBody, - genUpId, - genUpsData, - genVote, -) -where - -import Cardano.Chain.Slotting (SlotNumber (..)) -import Cardano.Chain.Update ( - ApplicationName (..), - ApplicationNameError (..), - InstallerHash (..), - Payload, - Proof, - Proposal, - ProposalBody (..), - ProtocolParameters (..), - ProtocolParametersUpdate (..), - ProtocolVersion (..), - SoftforkRule (..), - SoftwareVersion (..), - SoftwareVersionError (..), - SystemTag (..), - SystemTagError (..), - UpId, - Vote, - applicationNameMaxLength, - mkVote, - payload, - systemTagMaxLength, - unsafeProposal, - ) -import qualified Cardano.Chain.Update.Validation.Endorsement as Endorsement -import Cardano.Chain.Update.Validation.Interface (Error (..)) -import qualified Cardano.Chain.Update.Validation.Registration as Registration -import qualified Cardano.Chain.Update.Validation.Voting as Voting -import Cardano.Crypto (ProtocolMagicId) -import Cardano.Prelude -import Hedgehog -import qualified Hedgehog.Gen as Gen -import qualified Hedgehog.Range as Range -import Test.Cardano.Chain.Common.Gen ( - genCanonicalTxFeePolicy, - genKeyHash, - genLovelacePortion, - genScriptVersion, - genTxFeePolicy, - ) -import Test.Cardano.Chain.Slotting.Gen ( - genEpochNumber, - genSlotNumber, - ) -import Test.Cardano.Crypto.Gen ( - genAbstractHash, - genHashRaw, - genSignature, - genSigningKey, - genVerificationKey, - ) -import Test.Cardano.Prelude - -genApplicationName :: Gen ApplicationName -genApplicationName = - ApplicationName - <$> Gen.text (Range.constant 0 applicationNameMaxLength) Gen.alphaNum - -genCanonicalProtocolParameters :: Gen ProtocolParameters -genCanonicalProtocolParameters = - ProtocolParameters - <$> genScriptVersion - <*> genNatural - <*> genNatural - <*> genNatural - <*> genNatural - <*> genNatural - <*> genLovelacePortion - <*> genLovelacePortion - <*> genLovelacePortion - <*> genLovelacePortion - <*> genSlotNumber - <*> genSoftforkRule - <*> genCanonicalTxFeePolicy - <*> genEpochNumber - -genProtocolVersion :: Gen ProtocolVersion -genProtocolVersion = - ProtocolVersion - <$> Gen.word16 Range.constantBounded - <*> Gen.word16 Range.constantBounded - <*> Gen.word8 Range.constantBounded - -genProtocolParameters :: Gen ProtocolParameters -genProtocolParameters = - ProtocolParameters - <$> genScriptVersion - <*> genNatural - <*> genNatural - <*> genNatural - <*> genNatural - <*> genNatural - <*> genLovelacePortion - <*> genLovelacePortion - <*> genLovelacePortion - <*> genLovelacePortion - <*> genSlotNumber - <*> genSoftforkRule - <*> genTxFeePolicy - <*> genEpochNumber - -genProtocolParametersUpdate :: Gen ProtocolParametersUpdate -genProtocolParametersUpdate = - ProtocolParametersUpdate - <$> Gen.maybe genScriptVersion - <*> Gen.maybe genNatural - <*> Gen.maybe genNatural - <*> Gen.maybe genNatural - <*> Gen.maybe genNatural - <*> Gen.maybe genNatural - <*> Gen.maybe genLovelacePortion - <*> Gen.maybe genLovelacePortion - <*> Gen.maybe genLovelacePortion - <*> Gen.maybe genLovelacePortion - <*> Gen.maybe genSlotNumber - <*> Gen.maybe genSoftforkRule - <*> Gen.maybe genTxFeePolicy - <*> Gen.maybe genEpochNumber - -genSoftforkRule :: Gen SoftforkRule -genSoftforkRule = - SoftforkRule - <$> genLovelacePortion - <*> genLovelacePortion - <*> genLovelacePortion - -genSoftwareVersion :: Gen SoftwareVersion -genSoftwareVersion = - SoftwareVersion <$> genApplicationName <*> Gen.word32 Range.constantBounded - -genSystemTag :: Gen SystemTag -genSystemTag = - SystemTag <$> Gen.text (Range.constant 0 systemTagMaxLength) Gen.alphaNum - -genInstallerHash :: Gen InstallerHash -genInstallerHash = InstallerHash <$> genHashRaw - -genPayload :: ProtocolMagicId -> Gen Payload -genPayload pm = - payload - <$> Gen.maybe (genProposal pm) - <*> Gen.list - (Range.linear 0 10) - (genVote pm) - -genProof :: ProtocolMagicId -> Gen Proof -genProof pm = genAbstractHash (genPayload pm) - -genProposal :: ProtocolMagicId -> Gen Proposal -genProposal pm = - unsafeProposal - <$> genProposalBody - <*> genVerificationKey - <*> genSignature pm genProposalBody - -genProposalBody :: Gen ProposalBody -genProposalBody = - ProposalBody - <$> genProtocolVersion - <*> genProtocolParametersUpdate - <*> genSoftwareVersion - <*> genUpsData - -genUpId :: ProtocolMagicId -> Gen UpId -genUpId pm = genAbstractHash (genProposal pm) - -genUpsData :: Gen (Map SystemTag InstallerHash) -genUpsData = - Gen.map (Range.linear 0 20) ((,) <$> genSystemTag <*> genInstallerHash) - -genVote :: ProtocolMagicId -> Gen Vote -genVote pm = mkVote pm <$> genSigningKey <*> genUpId pm <*> Gen.bool - -genError :: ProtocolMagicId -> Gen Error -genError pm = - Gen.choice - [ Registration <$> genRegistrationError - , Voting <$> genVotingError pm - , Endorsement <$> genEndorsementError - , NumberOfGenesisKeysTooLarge <$> genRegistrationTooLarge - ] - -genRegistrationError :: Gen Registration.Error -genRegistrationError = - Gen.choice - [ Registration.DuplicateProtocolVersion <$> genProtocolVersion - , Registration.DuplicateSoftwareVersion <$> genSoftwareVersion - , Registration.InvalidProposer <$> genKeyHash - , Registration.InvalidProtocolVersion - <$> genProtocolVersion - <*> (Registration.Adopted <$> genProtocolVersion) - , Registration.InvalidScriptVersion <$> genWord16 <*> genWord16 - , pure Registration.InvalidSignature - , Registration.InvalidSoftwareVersion - <$> ( Gen.map (Range.linear 1 20) $ do - name <- genApplicationName - version <- genWord32 - slotNo <- SlotNumber <$> Gen.word64 Range.constantBounded - meta <- - Gen.map (Range.linear 1 10) - $ (,) - <$> genSystemTag - <*> genInstallerHash - pure (name, (Registration.ApplicationVersion version slotNo meta)) - ) - <*> genSoftwareVersion - , Registration.MaxBlockSizeTooLarge <$> (Registration.TooLarge <$> genNatural <*> genNatural) - , Registration.MaxTxSizeTooLarge <$> (Registration.TooLarge <$> genNatural <*> genNatural) - , pure Registration.ProposalAttributesUnknown - , Registration.ProposalTooLarge <$> (Registration.TooLarge <$> genNatural <*> genNatural) - , (Registration.SoftwareVersionError . SoftwareVersionApplicationNameError) - <$> Gen.choice - [ ApplicationNameTooLong <$> Gen.text (Range.linear 0 20) Gen.alphaNum - , ApplicationNameNotAscii <$> Gen.text (Range.linear 0 20) Gen.alphaNum - ] - , Registration.SystemTagError - <$> Gen.choice - [ SystemTagNotAscii <$> Gen.text (Range.linear 0 20) Gen.alphaNum - , SystemTagTooLong <$> Gen.text (Range.linear 0 20) Gen.alphaNum - ] - ] - -genVotingError :: ProtocolMagicId -> Gen Voting.Error -genVotingError pm = - Gen.choice - [ pure Voting.VotingInvalidSignature - , Voting.VotingProposalNotRegistered <$> genUpId pm - , Voting.VotingVoterNotDelegate <$> genKeyHash - ] - -genEndorsementError :: Gen Endorsement.Error -genEndorsementError = - Endorsement.MultipleProposalsForProtocolVersion - <$> genProtocolVersion - -genRegistrationTooLarge :: Gen (Registration.TooLarge Int) -genRegistrationTooLarge = - Registration.TooLarge - <$> Gen.int Range.constantBounded - <*> Gen.int Range.constantBounded diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Update/Properties.hs b/eras/byron/ledger/impl/test/Test/Cardano/Chain/Update/Properties.hs deleted file mode 100644 index 8e3494fe45b..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Chain/Update/Properties.hs +++ /dev/null @@ -1,160 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TemplateHaskell #-} - -module Test.Cardano.Chain.Update.Properties ( - tests, -) -where - -import Cardano.Chain.Update ( - ApplicationName (..), - ApplicationNameError (..), - SoftwareVersion (..), - SoftwareVersionError (..), - SystemTag (..), - SystemTagError (..), - applicationNameMaxLength, - checkApplicationName, - checkSoftwareVersion, - checkSystemTag, - systemTagMaxLength, - ) -import Cardano.Prelude -import Data.Data (Constr, toConstr) -import qualified Data.Text as T -import Hedgehog (forAll, property) -import qualified Hedgehog.Gen as Gen -import qualified Hedgehog.Range as Range -import Test.Cardano.Chain.Update.Gen ( - genApplicationName, - genSoftwareVersion, - genSystemTag, - ) -import Test.Cardano.Prelude -import Test.Options (TSGroup, TSProperty, withTestsTS) - --- Make sure `checkApplicationName` works for allowed values. -ts_prop_checkApplicationName :: TSProperty -ts_prop_checkApplicationName = withTestsTS 100 . property $ do - aName <- forAll genApplicationName - assertIsRight $ checkApplicationName aName - --- Make sure `checkApplicationName` fails on names that are too long. -ts_prop_checkApplicationNameTooLong :: TSProperty -ts_prop_checkApplicationNameTooLong = withTestsTS 100 . property $ do - (ApplicationName aName) <- - forAll - $ Gen.filter - (\name -> T.length (unApplicationName name) >= applicationNameMaxLength) - genApplicationName - moreText <- forAll $ Gen.text (Range.linear 1 20) Gen.ascii - assertIsLeftConstr - dummyAppNameTooLong - (checkApplicationName . ApplicationName $ aName `T.append` moreText) - --- Make sure `checkApplicationName` fails on names that are non-ascii. -ts_prop_checkApplicationNameNotAscii :: TSProperty -ts_prop_checkApplicationNameNotAscii = withTestsTS 100 . property $ do - nonAscii <- - forAll - $ Gen.filter - (all (== True) . map (not . isAscii)) - (Gen.string (Range.linear 1 applicationNameMaxLength) Gen.unicodeAll) - assertIsLeftConstr - dummyAppNameNotAscii - (checkApplicationName $ ApplicationName $ T.pack nonAscii) - --- Make sure `checkSoftwareVersion` works for allowed values. -ts_prop_checkSoftwareVersion :: TSProperty -ts_prop_checkSoftwareVersion = withTestsTS 100 . property $ do - sVer <- forAll genSoftwareVersion - assertIsRight $ checkSoftwareVersion sVer - --- Make sure `checkSoftwareVersion` fails on names that are too long. -ts_prop_checkSoftwareVersionTooLong :: TSProperty -ts_prop_checkSoftwareVersionTooLong = withTestsTS 100 . property $ do - (ApplicationName aName) <- - forAll - $ Gen.filter - (\name -> T.length (unApplicationName name) >= applicationNameMaxLength) - genApplicationName - moreText <- forAll $ Gen.text (Range.linear 1 20) Gen.ascii - let appNameTooLong = ApplicationName $ aName `T.append` moreText - sVersion <- forAll genSoftwareVersion - let sVersion' = sVersion {svAppName = appNameTooLong} - assertIsLeftConstr dummySoftVerTooLong (checkSoftwareVersion sVersion') - --- Make sure `checkSoftwareVersion` fails on names that are non-ascii. -ts_prop_checkSoftwareVersionNotAscii :: TSProperty -ts_prop_checkSoftwareVersionNotAscii = withTestsTS 100 . property $ do - nonAscii <- - forAll - $ Gen.filter - (all (== True) . map (not . isAscii)) - (Gen.string (Range.linear 1 applicationNameMaxLength) Gen.unicodeAll) - let appNameNonascii = ApplicationName $ T.pack nonAscii - sVersion <- forAll genSoftwareVersion - let sVersion' = sVersion {svAppName = appNameNonascii} - assertIsLeftConstr dummySoftVerNotAscii (checkSoftwareVersion sVersion') - --- Make sure `checkSystemTag` works for allowed values. -ts_prop_checkSystemTag :: TSProperty -ts_prop_checkSystemTag = withTestsTS 100 . property $ do - sTag <- forAll genSystemTag - assertIsRight $ checkSystemTag sTag - --- Make sure `checkSystemTag` fails on tags that are too long. -ts_prop_checkSystemTagTooLong :: TSProperty -ts_prop_checkSystemTagTooLong = withTestsTS 100 . property $ do - (SystemTag tag) <- - forAll - $ Gen.filter - (\sysTag -> T.length (getSystemTag sysTag) >= systemTagMaxLength) - genSystemTag - moreText <- forAll $ Gen.text (Range.linear 1 20) Gen.ascii - let sysTagTooLong = SystemTag (tag `T.append` moreText) - assertIsLeftConstr dummySysTagTooLong (checkSystemTag sysTagTooLong) - --- Make sure `checkSystemTag` fails on names that are non-ascii. -ts_prop_checkSystemTagNotAscii :: TSProperty -ts_prop_checkSystemTagNotAscii = withTestsTS 100 . property $ do - nonAscii <- - forAll - $ Gen.filter - (all (== True) . map (not . isAscii)) - (Gen.string (Range.linear 1 systemTagMaxLength) Gen.unicodeAll) - let sysTagNonascii = SystemTag $ T.pack nonAscii - assertIsLeftConstr dummySysTagNotAscii (checkSystemTag sysTagNonascii) - -tests :: TSGroup -tests = $$discoverPropArg - --------------------------------------------------------------------------------- --- Dummy values for constructor comparison in assertIsLeftConstr tests --------------------------------------------------------------------------------- - -dummyAppNameNotAscii :: Constr -dummyAppNameNotAscii = toConstr $ ApplicationNameNotAscii "dummyValue" - -dummyAppNameTooLong :: Constr -dummyAppNameTooLong = toConstr $ ApplicationNameTooLong "dummyValue" - -dummySoftVerNotAscii :: Constr -dummySoftVerNotAscii = - toConstr - . SoftwareVersionApplicationNameError - $ ApplicationNameNotAscii - "dummyValue" - -dummySoftVerTooLong :: Constr -dummySoftVerTooLong = - toConstr - . SoftwareVersionApplicationNameError - $ ApplicationNameTooLong - "dummyValue" - -dummySysTagNotAscii :: Constr -dummySysTagNotAscii = toConstr $ SystemTagNotAscii "dummyValue" - -dummySysTagTooLong :: Constr -dummySysTagTooLong = toConstr $ SystemTagTooLong "dummyValue" diff --git a/eras/byron/ledger/impl/test/Test/Cardano/Mirror.hs b/eras/byron/ledger/impl/test/Test/Cardano/Mirror.hs deleted file mode 100644 index bff140be0d2..00000000000 --- a/eras/byron/ledger/impl/test/Test/Cardano/Mirror.hs +++ /dev/null @@ -1,34 +0,0 @@ -{-# LANGUAGE LambdaCase #-} - -module Test.Cardano.Mirror ( - mainnetEpochFiles, -) -where - -import Cardano.Prelude -import System.Directory (doesDirectoryExist, getDirectoryContents) -import System.Environment (lookupEnv) -import System.FilePath (isExtensionOf, ()) - --- Failing here (with 'exitFailure') is fine because this function is only ever --- used to test maiinnet validaton. It is never used in production code. -mainnetEpochFiles :: IO [FilePath] -mainnetEpochFiles = - lookupEnv "CARDANO_MAINNET_MIRROR" >>= \case - Nothing -> do - putStrLn "mainnetEpochFiles: CARDANO_MAINNET_MIRROR variable is not set" - exitFailure - Just fpath -> do - exists <- doesDirectoryExist fpath - if exists - then - sort - . fmap (fpath ) - . filter ("epoch" `isExtensionOf`) - <$> getDirectoryContents fpath - else do - putStrLn - $ "mainnetEpochFiles: directory '" - ++ fpath - ++ "' does not exist." - exitFailure diff --git a/eras/byron/ledger/impl/test/Test/Options.hs b/eras/byron/ledger/impl/test/Test/Options.hs deleted file mode 100644 index 2a767369d36..00000000000 --- a/eras/byron/ledger/impl/test/Test/Options.hs +++ /dev/null @@ -1,172 +0,0 @@ -{-# LANGUAGE CPP #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Options ( - TestScenario (..), - mainWithTestScenario, - scenarioScaled, - scenarioScaleDefault, - eachOfTS, - withTestsTS, - TSProperty, - TSGroup, - concatGroups, - concatTSGroups, - tsGroupToTree, - ShouldAssertNF (..), -) -where - -import Cardano.Prelude -#if __GLASGOW_HASKELL__ < 900 --- Do not understand why this is visible in ghc-9.2 but not on ghc-8.10. - hiding (Option) -#endif -import Hedgehog (Gen, Group (..), Property, PropertyT, TestLimit, withTests) -import Hedgehog.Internal.Property (GroupName (..), PropertyName (..)) -import Test.Cardano.Prelude -import Test.Tasty ( - TestName, - TestTree, - askOption, - defaultMainWithIngredients, - includingOptions, - testGroup, - ) -import Test.Tasty.Hedgehog hiding (testProperty) -import Test.Tasty.Ingredients (Ingredient (..), composeReporters) -import Test.Tasty.Ingredients.Basic (consoleTestReporter, listingTests) -import Test.Tasty.Options ( - IsOption (..), - OptionDescription (..), - lookupOption, - safeRead, - ) - --- | testProperty has been deprecated. We make our own version here. -testProperty :: TestName -> Property -> TestTree -testProperty s p = testPropertyNamed s (Hedgehog.Internal.Property.PropertyName s) p - --------------------------------------------------------------------------------- --- TestScenario --------------------------------------------------------------------------------- - -data TestScenario - = ContinuousIntegration - | Development - | QualityAssurance - deriving (Read, Show) - -instance IsOption TestScenario where - defaultValue = Development - parseValue = safeRead - optionName = pure "scenario" - optionHelp = pure helpText - -logScenario :: Ingredient -logScenario = TestReporter [] $ \options _ -> Just $ \_ -> do - let scenario = lookupOption @TestScenario options - putTextLn $ "\nRunning in scenario: " <> show scenario - pure (const (pure True)) - -mainWithTestScenario :: TestTree -> IO () -mainWithTestScenario = - defaultMainWithIngredients - [ includingOptions [Option (Proxy @TestScenario)] - , listingTests - , composeReporters logScenario consoleTestReporter - ] - -helpText :: [Char] -helpText = - "Run under one of Development (default), ContinuousIntegration, or " - <> "QualityAssurance, to affect how tests are run" - --------------------------------------------------------------------------------- --- TestLimit scaling functions & helpers --------------------------------------------------------------------------------- - --- | Convenient alias for TestScenario-dependent @Group@s -type TSGroup = TestScenario -> Group - -concatGroups :: [Group] -> Group -concatGroups [] = panic "concatGroups: No tests in test Group" -concatGroups gs@(g : _) = Group (groupName g) (concat $ groupProperties <$> gs) - -concatTSGroups :: [TSGroup] -> TSGroup -concatTSGroups gs ts = concatGroups $ ($ ts) <$> gs - -tsGroupToTree :: TSGroup -> TestTree -tsGroupToTree tsGroup = askOption $ \scenario -> case tsGroup scenario of - Group {groupName, groupProperties} -> - testGroup - (unGroupName groupName) - (uncurry testProperty . first unPropertyName <$> groupProperties) - --- | Convenient alias for TestScenario-dependent @Property@s -type TSProperty = TestScenario -> Property - --- | Default ratio of tests in development -devTestDefault :: Ratio TestLimit -devTestDefault = 1 % 2 - --- | Default ratio of tests in CI -ciTestDefault :: Ratio TestLimit -ciTestDefault = 1 % 1 - --- | Default ratio of tests in QA -qaTestDefault :: Ratio TestLimit -qaTestDefault = 2 % 1 - --- | Return an Int number of tests, using the above-defined defaults -scenarioScaleDefault :: TestScenario -> Ratio TestLimit -scenarioScaleDefault ts = case ts of - Development -> devTestDefault - ContinuousIntegration -> ciTestDefault - QualityAssurance -> qaTestDefault - --- | Multiply the default scenario values by a scalar -scenarioScaled :: TestLimit -> TestScenario -> TestLimit -scenarioScaled count ts = - if scaledCount > 0 - then scaledCount - else - panic - $ "scenarioScaled: produced a non-positive TestLimit: " - <> show scaledCount - where - scaledCount :: TestLimit - scaledCount = round . ((count % 1) *) $ scenarioScaleDefault ts - --- | A modified `eachOf` which uses the default TestScenario values, --- multiplied by a scalar -eachOfTS :: - (Show a, HasCallStack) => - TestLimit -> - Gen a -> - (a -> PropertyT IO ()) -> - TestScenario -> - Property -eachOfTS count gen predicate scenario = - withFrozenCallStack $ eachOf (scenarioScaled count scenario) gen predicate - --- | A modified `withTests` which uses the default TestScenario values, --- multiplied by a scalar -withTestsTS :: - TestLimit -> - Property -> - TestScenario -> - Property -withTestsTS count prop scenario = - withTests (scenarioScaled count scenario) prop - --------------------------------------------------------------------------------- --- ShouldAssertNF --------------------------------------------------------------------------------- - -data ShouldAssertNF - = AssertNF - | NoAssertNF - deriving (Eq, Show) diff --git a/eras/byron/ledger/impl/test/cardano-ledger-byron-test.cabal b/eras/byron/ledger/impl/test/cardano-ledger-byron-test.cabal deleted file mode 100644 index 02bd6382da6..00000000000 --- a/eras/byron/ledger/impl/test/cardano-ledger-byron-test.cabal +++ /dev/null @@ -1,209 +0,0 @@ -cabal-version: 3.0 -name: cardano-ledger-byron-test -version: 1.5.1.0 -license: Apache-2.0 -maintainer: operations@iohk.io -author: IOHK -synopsis: Test helpers from cardano-ledger exposed to other packages -description: Test helpers from cardano-ledger exposed to other packages -category: Currency -build-type: Simple -data-files: - golden/cbor/block/BlockSignature - golden/cbor/block/Body - golden/cbor/block/BoundaryBlockHeader - golden/cbor/block/BoundaryBody - golden/cbor/block/BoundaryConsensusData - golden/cbor/block/BoundaryProof - golden/cbor/block/ExtraBodyData - golden/cbor/block/Header - golden/cbor/block/HeaderHash - golden/cbor/block/Proof - golden/cbor/block/StaticConfig_GCSpec - golden/cbor/block/ToSign - golden/cbor/common/Address - golden/cbor/common/Address0 - golden/cbor/common/Address1 - golden/cbor/common/Address2 - golden/cbor/common/Address3 - golden/cbor/common/Address4 - golden/cbor/common/AddrSpendingData_Redeem - golden/cbor/common/AddrSpendingData_VerKey - golden/cbor/common/AddrType_R - golden/cbor/common/AddrType_VK - golden/cbor/common/Attributes - golden/cbor/common/BlockCount - golden/cbor/common/ChainDifficulty - golden/cbor/common/KeyHash - golden/cbor/common/Lovelace - golden/cbor/common/LovelacePortion - golden/cbor/common/MerkleRoot - golden/cbor/common/MerkleTree - golden/cbor/common/TxFeePolicy_Linear - golden/cbor/common/TxSizeLinear - golden/cbor/delegation/Certificate - golden/cbor/delegation/DlgPayload - golden/cbor/mempoolpayload/MempoolPayload - golden/cbor/mempoolpayload/MempoolPayload1 - golden/cbor/mempoolpayload/MempoolPayload2 - golden/cbor/mempoolpayload/MempoolPayload3 - golden/cbor/slotting/EpochAndSlotCount - golden/cbor/slotting/EpochNumber - golden/cbor/slotting/EpochSlots - golden/cbor/slotting/SlotNumber - golden/cbor/ssc/Commitment - golden/cbor/ssc/CommitmentsMap - golden/cbor/ssc/InnerSharesMap - golden/cbor/ssc/Opening - golden/cbor/ssc/OpeningsMap - golden/cbor/ssc/SharesMap - golden/cbor/ssc/SignedCommitment - golden/cbor/ssc/SscPayload_CertificatesPayload - golden/cbor/ssc/SscPayload_CommitmentsPayload - golden/cbor/ssc/SscPayload_OpeningsPayload - golden/cbor/ssc/SscPayload_SharesPayload - golden/cbor/ssc/SscProof_CertificatesProof - golden/cbor/ssc/SscProof_CommitmentsProof - golden/cbor/ssc/SscProof_OpeningsProof - golden/cbor/ssc/SscProof_SharesProof - golden/cbor/ssc/VssCertificate - golden/cbor/ssc/VssCertificatesHash - golden/cbor/ssc/VssCertificatesMap - golden/cbor/update/ApplicationName - golden/cbor/update/AttackTarget_NetworkAddressTarget - golden/cbor/update/AttackTarget_PubKeyAddressTarget - golden/cbor/update/BlockHeader_Boundary - golden/cbor/update/CommitmentSignature - golden/cbor/update/HashRaw - golden/cbor/update/HashTx - golden/cbor/update/InstallerHash - golden/cbor/update/Payload - golden/cbor/update/Proof - golden/cbor/update/Proposal - golden/cbor/update/ProposalBody - golden/cbor/update/ProtocolParameters - golden/cbor/update/ProtocolParametersUpdate - golden/cbor/update/ProtocolVersion - golden/cbor/update/SharesDistribution - golden/cbor/update/SoftforkRule - golden/cbor/update/SoftwareVersion - golden/cbor/update/StaticConfig_GCSpec - golden/cbor/update/StaticConfig_GCSrc - golden/cbor/update/SystemTag - golden/cbor/update/UpId - golden/cbor/update/Vote - golden/cbor/utxo/HashTx - golden/cbor/utxo/Tx - golden/cbor/utxo/TxAttributes - golden/cbor/utxo/TxId - golden/cbor/utxo/TxInList - golden/cbor/utxo/TxIn_Utxo - golden/cbor/utxo/TxInWitness_RedeemWitness - golden/cbor/utxo/TxInWitness_VKWitness - golden/cbor/utxo/TxOut - golden/cbor/utxo/TxOut1 - golden/cbor/utxo/TxOutList - golden/cbor/utxo/TxOutList1 - golden/cbor/utxo/TxPayload1 - golden/cbor/utxo/TxProof - golden/cbor/utxo/TxSig - golden/cbor/utxo/TxSigData - golden/cbor/utxo/TxWitness - golden/json/genesis/GenesisData0_Legacy_HasNetworkMagic - -library - exposed-modules: - Test.Cardano.Chain.Block.CBOR - Test.Cardano.Chain.Block.Gen - Test.Cardano.Chain.Block.Model - Test.Cardano.Chain.Block.Model.Examples - Test.Cardano.Chain.Block.Validation - Test.Cardano.Chain.Block.ValidationMode - Test.Cardano.Chain.Byron.API - Test.Cardano.Chain.Buildable - Test.Cardano.Chain.Common.Address - Test.Cardano.Chain.Common.CBOR - Test.Cardano.Chain.Common.Compact - Test.Cardano.Chain.Common.Example - Test.Cardano.Chain.Common.Gen - Test.Cardano.Chain.Common.Lovelace - Test.Cardano.Chain.Config - Test.Cardano.Chain.Delegation.CBOR - Test.Cardano.Chain.Delegation.Certificate - Test.Cardano.Chain.Delegation.Example - Test.Cardano.Chain.Delegation.Gen - Test.Cardano.Chain.Delegation.Model - Test.Cardano.Chain.Elaboration.Block - Test.Cardano.Chain.Elaboration.Delegation - Test.Cardano.Chain.Elaboration.Keys - Test.Cardano.Chain.Elaboration.Update - Test.Cardano.Chain.Elaboration.UTxO - Test.Cardano.Chain.Epoch.File - Test.Cardano.Chain.Genesis.CBOR - Test.Cardano.Chain.Genesis.Dummy - Test.Cardano.Chain.Genesis.Example - Test.Cardano.Chain.Genesis.Gen - Test.Cardano.Chain.Genesis.Json - Test.Cardano.Chain.MempoolPayload.CBOR - Test.Cardano.Chain.MempoolPayload.Example - Test.Cardano.Chain.MempoolPayload.Gen - Test.Cardano.Chain.Ssc.CBOR - Test.Cardano.Chain.Slotting.CBOR - Test.Cardano.Chain.Slotting.Example - Test.Cardano.Chain.Slotting.Gen - Test.Cardano.Chain.Slotting.Properties - Test.Cardano.Chain.UTxO.CBOR - Test.Cardano.Chain.UTxO.Compact - Test.Cardano.Chain.UTxO.Example - Test.Cardano.Chain.UTxO.Gen - Test.Cardano.Chain.UTxO.Model - Test.Cardano.Chain.UTxO.ValidationMode - Test.Cardano.Chain.Update.CBOR - Test.Cardano.Chain.Update.Example - Test.Cardano.Chain.Update.Gen - Test.Cardano.Chain.Update.Properties - Test.Cardano.Mirror - Test.Options - - cpp-options: -DCARDANO_LEDGER_BYRON_TEST - other-modules: - Paths_cardano_ledger_byron_test - GetDataFileName - - default-language: Haskell2010 - default-extensions: NoImplicitPrelude - ghc-options: - -Wall -Wno-all-missed-specialisations - -Wno-missing-deriving-strategies -Wno-missing-import-lists - -Wno-missing-safe-haskell-mode -Wno-prepositive-qualified-module - -Wno-safe -Wno-unsafe -Wunused-packages - - build-depends: - base >=4.14 && <5, - base16-bytestring >=1, - bimap, - bytestring, - cardano-ledger-binary:{cardano-ledger-binary, testlib} >=1.0, - cardano-ledger-byron ^>=1.0, - cardano-crypto, - cardano-crypto-test, - cardano-crypto-wrapper, - cardano-prelude >=0.1.0.1, - cardano-prelude-test, - containers, - byron-spec-chain, - byron-spec-ledger, - directory, - filepath, - formatting, - heapwords, - hedgehog >=1.0.4, - microlens, - resourcet, - small-steps:{small-steps, testlib} >=1.1, - streaming, - tasty, - tasty-hedgehog, - text, - time, - vector diff --git a/eras/byron/ledger/impl/test/golden/cbor/block/BlockSignature b/eras/byron/ledger/impl/test/golden/cbor/block/BlockSignature deleted file mode 100644 index 6a260c2b10f..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/block/BlockSignature +++ /dev/null @@ -1,17 +0,0 @@ -000: 820282840558406269376936644c586b -010: 756573565a394a6648676a726374734c -020: 4674324e766f76586e6368734f765830 -030: 3559364c6f686c544e74356d6b504668 -040: 556f587531455a58404a30754b446269 -050: 376936644c586b756573565a394a6648 -060: 676a726374734c4674324e766f76586e -070: 6368734f7658303559364c6f686c544e -080: 74356d6b504668556f58406e0bd66eb8 -090: 1c0dab1c9ef346719663f56cbba23b46 -0a0: ee08d00daae844426c993b4f259d9d03 -0b0: abc95f131dfb9e96e4f65cc2487386a6 -0c0: e44f1c876eb3664c26080858404582df -0d0: 4a86f9264aa23dc5b1a7c858144780a4 -0e0: ea4cdf70aed811c74d0c88c729aa1465 -0f0: e675ce7cd015db95f876f4dfa67681c1 -100: be7c9dc6b8fd52d32d039a0e05 diff --git a/eras/byron/ledger/impl/test/golden/cbor/block/Body b/eras/byron/ledger/impl/test/golden/cbor/block/Body deleted file mode 100644 index 7d14518f218..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/block/Body +++ /dev/null @@ -1,139 +0,0 @@ -000: 849f82839f8200d81858258258204ba8 -010: 39c420b3d2bd439530f891cae9a5d4c4 -020: d812044630dac72e8e0962feeecc182f -030: ff9f8282d818582183581caa5372095a -040: aa680d19d4ca496983a145709c3be18b -050: 0d4c83cb7bdc5ea0001a32dc988e182f -060: ffa0818200d81858858258404b6d7977 -070: 346c4453453553346653483665744e6f -080: 756958657a4379456a4b63337447346a -090: 61306b466a4f38717a616932365a4d50 -0a0: 55454a66457931356f78356b5840688a -0b0: ad857bc7ff30fc6862da1be281f420c6 -0c0: 5271b76ab19782ff40e2955af88819c3 -0d0: 8e5c79138f28073abae152c882258b44 -0e0: 20a0c1c9fdd26c98812697fc3e00ff82 -0f0: 03d90102809f840558404a30754b4462 -100: 69376936644c586b756573565a394a66 -110: 48676a726374734c4674324e766f7658 -120: 6e6368734f7658303559364c6f686c54 -130: 4e74356d6b504668556f58404b6d7977 -140: 346c4453453553346653483665744e6f -150: 756958657a4379456a4b63337447346a -160: 61306b466a4f38717a616932365a4d50 -170: 55454a66457931356f78356b5840fecc -180: c189c702707f3a71d772559cebaee1a6 -190: 0c0eb99a9c28f3ad22b6a69db65cdc91 -1a0: 3016f20133f4f52f8074b75f7f678cf1 -1b0: 65f411a536092404c536762f470a8401 -1c0: 584030754b446269376936644c586b75 -1d0: 6573565a394a6648676a726374734c46 -1e0: 74324e766f76586e6368734f76583035 -1f0: 59364c6f686c544e74356d6b50466855 -200: 6f5858406d7977346c44534535533466 -210: 53483665744e6f756958657a4379456a -220: 4b63337447346a61306b466a4f38717a -230: 616932365a4d5055454a66457931356f -240: 78356b4a5840806df93d403ae6f4f590 -250: 17a2f54df52415841f560347627e5775 -260: 2a01b7018b57b48f2371e41f06dbd0d2 -270: 4e0d6ab0bab19a7042618e32cb06a1e8 -280: fe49571e1d0a84035840754b44626937 -290: 6936644c586b756573565a394a664867 -2a0: 6a726374734c4674324e766f76586e63 -2b0: 68734f7658303559364c6f686c544e74 -2c0: 356d6b504668556f587558407977346c -2d0: 4453453553346653483665744e6f7569 -2e0: 58657a4379456a4b63337447346a6130 -2f0: 6b466a4f38717a616932365a4d505545 -300: 4a66457931356f78356b4a3058402a30 -310: d99cd244800a5787392fb28983b4cc87 -320: 037eea6daf56131521f7d36a69590182 -330: e1781830b1b87a2925d76f21e29ceb66 -340: cf5d337363cb065a0acecc79480a8418 -350: 1b58404b446269376936644c586b7565 -360: 73565a394a6648676a726374734c4674 -370: 324e766f76586e6368734f7658303559 -380: 364c6f686c544e74356d6b504668556f -390: 587531584077346c4453453553346653 -3a0: 483665744e6f756958657a4379456a4b -3b0: 63337447346a61306b466a4f38717a61 -3c0: 6932365a4d5055454a66457931356f78 -3d0: 356b4a3075584053d9597483ff6546b6 -3e0: 7971190786aa053d406c158146e9b6f3 -3f0: eee65670917899394c257bb5f80a413b -400: 6e7df19cb70ddf871a8bb521ec8f4bbb -410: 5190bd40df5006ff828187830101018e -420: 811903e7811903e7811903e7811903e7 -430: 811903e7811903e78118638118638118 -440: 63811863811863818318631863186381 -450: 8200d81853821b000000e8990a46001b -460: 00000011ed8ec2008118638266476f6c -470: 64656e1863a5704b6d7977346c445345 -480: 3553346653483684582003170a2e7597 -490: b7b7e3d84c05391d139a62b157e78786 -4a0: d8c082f29dcf4c1113145820acf524d1 -4b0: 7db14b997165a12f448fd7dddce6b48b -4c0: b135ef317d5cfabd98f3318d58200317 -4d0: 0a2e7597b7b7e3d84c05391d139a62b1 -4e0: 57e78786d8c082f29dcf4c1113145820 -4f0: 03170a2e7597b7b7e3d84c05391d139a -500: 62b157e78786d8c082f29dcf4c111314 -510: 7053346653483665744e6f756958657a -520: 4384582003170a2e7597b7b7e3d84c05 -530: 391d139a62b157e78786d8c082f29dcf -540: 4c1113145820cec02b41a5c236069cb3 -550: fd3fa658a013e230873c2013f783c050 -560: 4037dc859587582003170a2e7597b7b7 -570: e3d84c05391d139a62b157e78786d8c0 -580: 82f29dcf4c111314582003170a2e7597 -590: b7b7e3d84c05391d139a62b157e78786 -5a0: d8c082f29dcf4c111314706333744734 -5b0: 6a61306b466a4f38717a618458200317 -5c0: 0a2e7597b7b7e3d84c05391d139a62b1 -5d0: 57e78786d8c082f29dcf4c1113145820 -5e0: e8f357c2f4b5521ae3d23f142abbc681 -5f0: de7dab0f974c1c694743e3023d01e29e -600: 582003170a2e7597b7b7e3d84c05391d -610: 139a62b157e78786d8c082f29dcf4c11 -620: 1314582003170a2e7597b7b7e3d84c05 -630: 391d139a62b157e78786d8c082f29dcf -640: 4c111314706a4f38717a616932365a4d -650: 5055454a6684582003170a2e7597b7b7 -660: e3d84c05391d139a62b157e78786d8c0 -670: 82f29dcf4c111314582060c59bb5bd49 -680: 26bd84a9bbb9e68d90837eef0a70561c -690: d9d1a44b6dcc9507994d582003170a2e -6a0: 7597b7b7e3d84c05391d139a62b157e7 -6b0: 8786d8c082f29dcf4c11131458200317 -6c0: 0a2e7597b7b7e3d84c05391d139a62b1 -6d0: 57e78786d8c082f29dcf4c1113147075 -6e0: 6958657a4379456a4b63337447346a84 -6f0: 582003170a2e7597b7b7e3d84c05391d -700: 139a62b157e78786d8c082f29dcf4c11 -710: 13145820b8d7c33ec93a110b459cf5a8 -720: 8edd42165bea75a191080e5ef6d75d11 -730: 4df4d81a582003170a2e7597b7b7e3d8 -740: 4c05391d139a62b157e78786d8c082f2 -750: 9dcf4c111314582003170a2e7597b7b7 -760: e3d84c05391d139a62b157e78786d8c0 -770: 82f29dcf4c111314a058404a30754b44 -780: 6269376936644c586b756573565a394a -790: 6648676a726374734c4674324e766f76 -7a0: 586e6368734f7658303559364c6f686c -7b0: 544e74356d6b504668556f5840d2af44 -7c0: 5e7f0f788c9fbd97c18bcd57ecda6661 -7d0: c6c25f8ab75cb85933f11adb0cedd8a1 -7e0: 96c8cee2fece789610ab20a455ea3cba -7f0: 55e0b383e43d260fe008f3d5079f8458 -800: 404a30754b446269376936644c586b75 -810: 6573565a394a6648676a726374734c46 -820: 74324e766f76586e6368734f76583035 -830: 59364c6f686c544e74356d6b50466855 -840: 6f582072231b8d18d55f6637591c2d71 -850: fc47a4279cb466fa5059d2ebbc7c8a12 -860: 20faecf55840a2dc6072461907e681d6 -870: 9bd9e44a885d8d0c76815bfba35de178 -880: 169daaa3927a22d8bf8faeb89094ca9c -890: 0f7fda72d816d0072f3a46eef82aa19f -8a0: d9aa83f5fe09ff diff --git a/eras/byron/ledger/impl/test/golden/cbor/block/BoundaryBlockHeader b/eras/byron/ledger/impl/test/golden/cbor/block/BoundaryBlockHeader deleted file mode 100644 index 18756ff6570..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/block/BoundaryBlockHeader +++ /dev/null @@ -1,5 +0,0 @@ -00: 85005820f7077d40c94a36e7df95b6f9 -10: 9a86f08bcf06ea3b24e68dd3039333fa -20: 5314177558204965a00c5a47c3877339 -30: 85445c24dc988b36e4fcd8db638ec28a -40: 23ae4773ca60820b810081a0 diff --git a/eras/byron/ledger/impl/test/golden/cbor/block/BoundaryBody b/eras/byron/ledger/impl/test/golden/cbor/block/BoundaryBody deleted file mode 100644 index 9ea10473f91..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/block/BoundaryBody +++ /dev/null @@ -1,6 +0,0 @@ -00: 9f581cb4c0e0810a8cd4f5b9249c4190 -10: 0704b35ed186205c708a40b5abac9058 -20: 1c3ecac862f1e7a998327e20d2d23da9 -30: a1993948bee60dbd83d5df5ac5581c67 -40: f342be03ba63cecff19b3da527582f24 -50: 385184478e183c1d2fb38fff diff --git a/eras/byron/ledger/impl/test/golden/cbor/block/BoundaryConsensusData b/eras/byron/ledger/impl/test/golden/cbor/block/BoundaryConsensusData deleted file mode 100644 index 474fa14e549..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/block/BoundaryConsensusData +++ /dev/null @@ -1 +0,0 @@ -820e8119270f \ No newline at end of file diff --git a/eras/byron/ledger/impl/test/golden/cbor/block/BoundaryProof b/eras/byron/ledger/impl/test/golden/cbor/block/BoundaryProof deleted file mode 100644 index 320a6c95b4d..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/block/BoundaryProof +++ /dev/null @@ -1,3 +0,0 @@ -00: 58204965a00c5a47c387733985445c24 -10: dc988b36e4fcd8db638ec28a23ae4773 -20: ca60 diff --git a/eras/byron/ledger/impl/test/golden/cbor/block/ExtraBodyData b/eras/byron/ledger/impl/test/golden/cbor/block/ExtraBodyData deleted file mode 100644 index aef09022b71..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/block/ExtraBodyData +++ /dev/null @@ -1 +0,0 @@ -81a0 \ No newline at end of file diff --git a/eras/byron/ledger/impl/test/golden/cbor/block/Header b/eras/byron/ledger/impl/test/golden/cbor/block/Header deleted file mode 100644 index f90e0c5e36c..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/block/Header +++ /dev/null @@ -1,38 +0,0 @@ -000: 85075820125bbf1daefc2897d8db4899 -010: 9d09b4eae439f0dfed83bc43246ca039 -020: fa4b121384830158205e46ceb20538af -030: eeb45cb8f7030512af34b4ff363a8c7e -040: 94d441a257500ffab75820e32c9549bc -050: 3acbe0e848b2d7ad26331b7d84975803 -060: 64cb2bc6c8bda9aa0975b882035820d3 -070: 6a2619a672494604e11bb447cbcf5231 -080: e9f2ba25c2169177edc941bd50ad6c58 -090: 20b5f2d3cb5a94d3e7dc9d812ebf5600 -0a0: 3e4f9fb02296034f5d5bcd073811ebe6 -0b0: b35820adfd9b4aa5620d4b0a0587186e -0c0: 6828efa789b2582eef698523a308d6f3 -0d0: edd94084820b182f5840626937693664 -0e0: 4c586b756573565a394a6648676a7263 -0f0: 74734c4674324e766f76586e6368734f -100: 7658303559364c6f686c544e74356d6b -110: 504668556f587531455a8119270f8202 -120: 82840558406269376936644c586b7565 -130: 73565a394a6648676a726374734c4674 -140: 324e766f76586e6368734f7658303559 -150: 364c6f686c544e74356d6b504668556f -160: 587531455a58404a30754b4462693769 -170: 36644c586b756573565a394a6648676a -180: 726374734c4674324e766f76586e6368 -190: 734f7658303559364c6f686c544e7435 -1a0: 6d6b504668556f58406e0bd66eb81c0d -1b0: ab1c9ef346719663f56cbba23b46ee08 -1c0: d00daae844426c993b4f259d9d03abc9 -1d0: 5f131dfb9e96e4f65cc2487386a6e44f -1e0: 1c876eb3664c260808584093cd386a61 -1f0: 4bf6523c3844aa3c4c714ab4e272ff0b -200: 3b9bfa8c254156b49bcb846544649bdd -210: e77fd336cf9e48214601de8ae92abe11 -220: 3ab844e3322b183f7a890e8483010101 -230: 8266476f6c64656e1863a058204ba92a -240: a320c60acc9ad7b9a64f2eda55c4d2ec -250: 28e604faf186708b4f0c4e8edf diff --git a/eras/byron/ledger/impl/test/golden/cbor/block/HeaderHash b/eras/byron/ledger/impl/test/golden/cbor/block/HeaderHash deleted file mode 100644 index afb300bc8c9..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/block/HeaderHash +++ /dev/null @@ -1,3 +0,0 @@ -00: 5820125bbf1daefc2897d8db48999d09 -10: b4eae439f0dfed83bc43246ca039fa4b -20: 1213 diff --git a/eras/byron/ledger/impl/test/golden/cbor/block/Proof b/eras/byron/ledger/impl/test/golden/cbor/block/Proof deleted file mode 100644 index 2d5c0c637c7..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/block/Proof +++ /dev/null @@ -1,11 +0,0 @@ -00: 8483182058205e46ceb20538afeeb45c -10: b8f7030512af34b4ff363a8c7e94d441 -20: a257500ffab75820e32c9549bc3acbe0 -30: e848b2d7ad26331b7d8497580364cb2b -40: c6c8bda9aa0975b882035820d36a2619 -50: a672494604e11bb447cbcf5231e9f2ba -60: 25c2169177edc941bd50ad6c5820b5f2 -70: d3cb5a94d3e7dc9d812ebf56003e4f9f -80: b02296034f5d5bcd073811ebe6b35820 -90: adfd9b4aa5620d4b0a0587186e6828ef -a0: a789b2582eef698523a308d6f3edd940 diff --git a/eras/byron/ledger/impl/test/golden/cbor/block/StaticConfig_GCSpec b/eras/byron/ledger/impl/test/golden/cbor/block/StaticConfig_GCSpec deleted file mode 100644 index 76cbd670a09..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/block/StaticConfig_GCSpec +++ /dev/null @@ -1,61 +0,0 @@ -{ - "spec": { - "blockVersionData": { - "txFeePolicy": { - "txSizeLinear": { - "a": 999, - "b": 77 - } - }, - "maxTxSize": 999, - "updateProposalThd": 9.9e-14, - "scriptVersion": 999, - "maxBlockSize": 999, - "heavyDelThd": 9.9e-14, - "updateImplicit": 99, - "maxHeaderSize": 999, - "updateVoteThd": 9.9e-14, - "slotDuration": 9.99e-4, - "maxProposalSize": 999, - "softforkRule": { - "minThd": 9.9e-14, - "thdDecrement": 9.9e-14, - "initThd": 9.9e-14 - }, - "mpcThd": 9.9e-14, - "unlockStakeEpoch": 99 - }, - "k": { - "getBlockCount": 37 - }, - "avvmDistr": { - "U4lgqRZyawnwXJ1NSpIrhbThGs_MFDRnPZUBm3qaUtI=": 36524597913081152, - "dtXbK7ASFLEa611AHt7SDk_48fVbNja-Tj7PgbE7tPE=": 37343863242999412 - }, - "protocolMagic": 1783847074, - "initializer": { - "useHeavyDlg": false, - "avvmBalanceFactor": 0.366832547637728, - "seed": 0, - "testBalance": { - "totalBalance": 10953275486128625, - "richmenShare": 0.366832547637728, - "useHDAddresses": true, - "richmen": 1.4071205313513960321e19, - "poors": 2448641325904532856 - }, - "fakeAvvmBalance": { - "oneBalance": 15087947214890024, - "count": 1.7853231730478779264e19 - } - }, - "heavyDelegation": { - "ed41bf35f4cd2109bdee27b0439942f6de3f55f0ac8d170de7136d3d": { - "pskDelegateVK": "3cppv+rBTAEzBNqIrAMu5jKBqwNsGxuRiOSxdLMD9D5VFjsXjpmbn9UGN7Ltq4yFioeaw8S9PmEAlUGaGWllcw==", - "pskOmega": 68300481033, - "pskCert": "bae5422af5405e3803154a4ad986da5d14cf624d6701c5c78a79ec73777f74e13973af83752114d9f18166085997fc81e432cab7fee99a275d8bf138ad04e103", - "pskIssuerVK": "4qF3OiqC0QwwiQy/hOzL3Bqq7pIElkJNNuhoA52ctRkhsl7+Az2bANTwLM2c2rzsMyq7xv34g8pb86iv9KrCfg==" - } - } - } -} diff --git a/eras/byron/ledger/impl/test/golden/cbor/block/ToSign b/eras/byron/ledger/impl/test/golden/cbor/block/ToSign deleted file mode 100644 index 58471aad592..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/block/ToSign +++ /dev/null @@ -1,17 +0,0 @@ -000: 855820125bbf1daefc2897d8db48999d -010: 09b4eae439f0dfed83bc43246ca039fa -020: 4b12138483182058205e46ceb20538af -030: eeb45cb8f7030512af34b4ff363a8c7e -040: 94d441a257500ffab75820e32c9549bc -050: 3acbe0e848b2d7ad26331b7d84975803 -060: 64cb2bc6c8bda9aa0975b882035820d3 -070: 6a2619a672494604e11bb447cbcf5231 -080: e9f2ba25c2169177edc941bd50ad6c58 -090: 20b5f2d3cb5a94d3e7dc9d812ebf5600 -0a0: 3e4f9fb02296034f5d5bcd073811ebe6 -0b0: b35820adfd9b4aa5620d4b0a0587186e -0c0: 6828efa789b2582eef698523a308d6f3 -0d0: edd940820b182f8119270f8483010101 -0e0: 8266476f6c64656e1863a058204ba92a -0f0: a320c60acc9ad7b9a64f2eda55c4d2ec -100: 28e604faf186708b4f0c4e8edf diff --git a/eras/byron/ledger/impl/test/golden/cbor/common/AddrSpendingData_Redeem b/eras/byron/ledger/impl/test/golden/cbor/common/AddrSpendingData_Redeem deleted file mode 100644 index f2d71ee8ee4..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/common/AddrSpendingData_Redeem +++ /dev/null @@ -1,3 +0,0 @@ -00: 82025820538960a916726b09f05c9d4d -10: 4a922b85b4e11acfcc1434673d95019b -20: 7a9a52d2 diff --git a/eras/byron/ledger/impl/test/golden/cbor/common/AddrSpendingData_VerKey b/eras/byron/ledger/impl/test/golden/cbor/common/AddrSpendingData_VerKey deleted file mode 100644 index 50e9df52be7..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/common/AddrSpendingData_VerKey +++ /dev/null @@ -1,5 +0,0 @@ -00: 820058404b6d7977346c445345355334 -10: 6653483665744e6f756958657a437945 -20: 6a4b63337447346a61306b466a4f3871 -30: 7a616932365a4d5055454a6645793135 -40: 6f78356b diff --git a/eras/byron/ledger/impl/test/golden/cbor/common/AddrType_R b/eras/byron/ledger/impl/test/golden/cbor/common/AddrType_R deleted file mode 100644 index b08e32771fe..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/common/AddrType_R +++ /dev/null @@ -1 +0,0 @@ -02 \ No newline at end of file diff --git a/eras/byron/ledger/impl/test/golden/cbor/common/AddrType_VK b/eras/byron/ledger/impl/test/golden/cbor/common/AddrType_VK deleted file mode 100644 index 857f065e415..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/common/AddrType_VK +++ /dev/null @@ -1 +0,0 @@ -00 \ No newline at end of file diff --git a/eras/byron/ledger/impl/test/golden/cbor/common/Address b/eras/byron/ledger/impl/test/golden/cbor/common/Address deleted file mode 100644 index 36ab6b6b464..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/common/Address +++ /dev/null @@ -1,5 +0,0 @@ -00: 82d818584683581cabeaaa8f95c4529b -10: b494e648c2e8e3522713f466a9dec1f1 -20: decea1b7a101582258207447346a6130 -30: 6b466a4f38717a616932365a4d505545 -40: 4a66457931356f78356b001a03f38741 diff --git a/eras/byron/ledger/impl/test/golden/cbor/common/Address0 b/eras/byron/ledger/impl/test/golden/cbor/common/Address0 deleted file mode 100644 index 36ab6b6b464..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/common/Address0 +++ /dev/null @@ -1,5 +0,0 @@ -00: 82d818584683581cabeaaa8f95c4529b -10: b494e648c2e8e3522713f466a9dec1f1 -20: decea1b7a101582258207447346a6130 -30: 6b466a4f38717a616932365a4d505545 -40: 4a66457931356f78356b001a03f38741 diff --git a/eras/byron/ledger/impl/test/golden/cbor/common/Address1 b/eras/byron/ledger/impl/test/golden/cbor/common/Address1 deleted file mode 100644 index 7cdae42db40..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/common/Address1 +++ /dev/null @@ -1,3 +0,0 @@ -00: 82d818582183581caa5372095aaa680d -10: 19d4ca496983a145709c3be18b0d4c83 -20: cb7bdc5ea0001a32dc988e diff --git a/eras/byron/ledger/impl/test/golden/cbor/common/Address2 b/eras/byron/ledger/impl/test/golden/cbor/common/Address2 deleted file mode 100644 index b3feb18c732..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/common/Address2 +++ /dev/null @@ -1,5 +0,0 @@ -00: 82d818584683581cc6cbc43f74945040 -10: c7a5ed1b0584f7a081dbecfbbcf7a360 -20: 3cfea23ca101582258203665744e6f75 -30: 6958657a4379456a4b63337447346a61 -40: 306b466a4f38717a6169021a2b5c6320 diff --git a/eras/byron/ledger/impl/test/golden/cbor/common/Address3 b/eras/byron/ledger/impl/test/golden/cbor/common/Address3 deleted file mode 100644 index 5d8d444a7e9..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/common/Address3 +++ /dev/null @@ -1,6 +0,0 @@ -00: 82d818584d83581cbc89030e8b697017 -10: d0725b2c68c3623d77b6a061f46a3d41 -20: 92604e80a20158225820744e6f756958 -30: 657a4379456a4b63337447346a61306b -40: 466a4f38717a6169323602451a00982e -50: 0d001a159aca79 diff --git a/eras/byron/ledger/impl/test/golden/cbor/common/Address4 b/eras/byron/ledger/impl/test/golden/cbor/common/Address4 deleted file mode 100644 index 7826a1b7022..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/common/Address4 +++ /dev/null @@ -1,4 +0,0 @@ -00: 82d818582883581c823c60afca103d49 -10: 81978d40b400bdaeb937ae91e2e36f45 -20: 89d6938ba102451a00a98de7001acd66 -30: a453 diff --git a/eras/byron/ledger/impl/test/golden/cbor/common/Attributes b/eras/byron/ledger/impl/test/golden/cbor/common/Attributes deleted file mode 100644 index c545f2f9813..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/common/Attributes +++ /dev/null @@ -1 +0,0 @@ -a0 \ No newline at end of file diff --git a/eras/byron/ledger/impl/test/golden/cbor/common/BlockCount b/eras/byron/ledger/impl/test/golden/cbor/common/BlockCount deleted file mode 100644 index 550f1013a83..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/common/BlockCount +++ /dev/null @@ -1 +0,0 @@ -1903e7 \ No newline at end of file diff --git a/eras/byron/ledger/impl/test/golden/cbor/common/ChainDifficulty b/eras/byron/ledger/impl/test/golden/cbor/common/ChainDifficulty deleted file mode 100644 index 356611d34c4..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/common/ChainDifficulty +++ /dev/null @@ -1 +0,0 @@ -8119270f \ No newline at end of file diff --git a/eras/byron/ledger/impl/test/golden/cbor/common/KeyHash b/eras/byron/ledger/impl/test/golden/cbor/common/KeyHash deleted file mode 100644 index c41856e865c..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/common/KeyHash +++ /dev/null @@ -1,2 +0,0 @@ -00: 581cb4c0e0810a8cd4f5b9249c419007 -10: 04b35ed186205c708a40b5abac90 diff --git a/eras/byron/ledger/impl/test/golden/cbor/common/Lovelace b/eras/byron/ledger/impl/test/golden/cbor/common/Lovelace deleted file mode 100644 index 834b718c8cc..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/common/Lovelace +++ /dev/null @@ -1 +0,0 @@ -192604 \ No newline at end of file diff --git a/eras/byron/ledger/impl/test/golden/cbor/common/LovelacePortion b/eras/byron/ledger/impl/test/golden/cbor/common/LovelacePortion deleted file mode 100644 index 23c5d5ed75f..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/common/LovelacePortion +++ /dev/null @@ -1 +0,0 @@ -1925e6 \ No newline at end of file diff --git a/eras/byron/ledger/impl/test/golden/cbor/common/MerkleRoot b/eras/byron/ledger/impl/test/golden/cbor/common/MerkleRoot deleted file mode 100644 index f6f33fceab0..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/common/MerkleRoot +++ /dev/null @@ -1,3 +0,0 @@ -00: 5820c4df3798353de80db323417c513b -10: 0d647fdac1944f959211b4db35d4bd86 -20: ca28 diff --git a/eras/byron/ledger/impl/test/golden/cbor/common/MerkleTree b/eras/byron/ledger/impl/test/golden/cbor/common/MerkleTree deleted file mode 100644 index f5fe28445aa..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/common/MerkleTree +++ /dev/null @@ -1,3 +0,0 @@ -00: 9f582096b23a356c80ba706dbf08c0c2 -10: b205576a6affd6f43b43ba8b7dc53d03 -20: 555938ff diff --git a/eras/byron/ledger/impl/test/golden/cbor/common/TxFeePolicy_Linear b/eras/byron/ledger/impl/test/golden/cbor/common/TxFeePolicy_Linear deleted file mode 100644 index ae75b6e6d5e..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/common/TxFeePolicy_Linear +++ /dev/null @@ -1,2 +0,0 @@ -00: 8200d81853821b000000170cdc1e001b -10: 000000b4e8cf1a00 diff --git a/eras/byron/ledger/impl/test/golden/cbor/common/TxSizeLinear b/eras/byron/ledger/impl/test/golden/cbor/common/TxSizeLinear deleted file mode 100644 index af279ac32fc..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/common/TxSizeLinear +++ /dev/null @@ -1,2 +0,0 @@ -00: 821b000000170cdc1e001b000000b4e8 -10: cf1a00 diff --git a/eras/byron/ledger/impl/test/golden/cbor/delegation/Certificate b/eras/byron/ledger/impl/test/golden/cbor/delegation/Certificate deleted file mode 100644 index d687d90ae2f..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/delegation/Certificate +++ /dev/null @@ -1,13 +0,0 @@ -00: 840558404a30754b446269376936644c -10: 586b756573565a394a6648676a726374 -20: 734c4674324e766f76586e6368734f76 -30: 58303559364c6f686c544e74356d6b50 -40: 4668556f58404b6d7977346c44534535 -50: 53346653483665744e6f756958657a43 -60: 79456a4b63337447346a61306b466a4f -70: 38717a616932365a4d5055454a664579 -80: 31356f78356b5840feccc189c702707f -90: 3a71d772559cebaee1a60c0eb99a9c28 -a0: f3ad22b6a69db65cdc913016f20133f4 -b0: f52f8074b75f7f678cf165f411a53609 -c0: 2404c536762f470a diff --git a/eras/byron/ledger/impl/test/golden/cbor/delegation/DlgPayload b/eras/byron/ledger/impl/test/golden/cbor/delegation/DlgPayload deleted file mode 100644 index daf2d17276f..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/delegation/DlgPayload +++ /dev/null @@ -1,51 +0,0 @@ -000: 9f840558404a30754b44626937693664 -010: 4c586b756573565a394a6648676a7263 -020: 74734c4674324e766f76586e6368734f -030: 7658303559364c6f686c544e74356d6b -040: 504668556f58404b6d7977346c445345 -050: 3553346653483665744e6f756958657a -060: 4379456a4b63337447346a61306b466a -070: 4f38717a616932365a4d5055454a6645 -080: 7931356f78356b5840feccc189c70270 -090: 7f3a71d772559cebaee1a60c0eb99a9c -0a0: 28f3ad22b6a69db65cdc913016f20133 -0b0: f4f52f8074b75f7f678cf165f411a536 -0c0: 092404c536762f470a8401584030754b -0d0: 446269376936644c586b756573565a39 -0e0: 4a6648676a726374734c4674324e766f -0f0: 76586e6368734f7658303559364c6f68 -100: 6c544e74356d6b504668556f5858406d -110: 7977346c445345355334665348366574 -120: 4e6f756958657a4379456a4b63337447 -130: 346a61306b466a4f38717a616932365a -140: 4d5055454a66457931356f78356b4a58 -150: 40806df93d403ae6f4f59017a2f54df5 -160: 2415841f560347627e57752a01b7018b -170: 57b48f2371e41f06dbd0d24e0d6ab0ba -180: b19a7042618e32cb06a1e8fe49571e1d -190: 0a84035840754b446269376936644c58 -1a0: 6b756573565a394a6648676a72637473 -1b0: 4c4674324e766f76586e6368734f7658 -1c0: 303559364c6f686c544e74356d6b5046 -1d0: 68556f587558407977346c4453453553 -1e0: 346653483665744e6f756958657a4379 -1f0: 456a4b63337447346a61306b466a4f38 -200: 717a616932365a4d5055454a66457931 -210: 356f78356b4a3058402a30d99cd24480 -220: 0a5787392fb28983b4cc87037eea6daf -230: 56131521f7d36a69590182e1781830b1 -240: b87a2925d76f21e29ceb66cf5d337363 -250: cb065a0acecc79480a84181b58404b44 -260: 6269376936644c586b756573565a394a -270: 6648676a726374734c4674324e766f76 -280: 586e6368734f7658303559364c6f686c -290: 544e74356d6b504668556f5875315840 -2a0: 77346c4453453553346653483665744e -2b0: 6f756958657a4379456a4b6333744734 -2c0: 6a61306b466a4f38717a616932365a4d -2d0: 5055454a66457931356f78356b4a3075 -2e0: 584053d9597483ff6546b67971190786 -2f0: aa053d406c158146e9b6f3eee6567091 -300: 7899394c257bb5f80a413b6e7df19cb7 -310: 0ddf871a8bb521ec8f4bbb5190bd40df -320: 5006ff diff --git a/eras/byron/ledger/impl/test/golden/cbor/mempoolpayload/MempoolPayload b/eras/byron/ledger/impl/test/golden/cbor/mempoolpayload/MempoolPayload deleted file mode 100644 index b1c400ffc1d..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/mempoolpayload/MempoolPayload +++ /dev/null @@ -1,15 +0,0 @@ -00: 820082839f8200d81858258258204ba8 -10: 39c420b3d2bd439530f891cae9a5d4c4 -20: d812044630dac72e8e0962feeecc182f -30: ff9f8282d818582183581caa5372095a -40: aa680d19d4ca496983a145709c3be18b -50: 0d4c83cb7bdc5ea0001a32dc988e182f -60: ffa0818200d81858858258404b6d7977 -70: 346c4453453553346653483665744e6f -80: 756958657a4379456a4b63337447346a -90: 61306b466a4f38717a616932365a4d50 -a0: 55454a66457931356f78356b5840688a -b0: ad857bc7ff30fc6862da1be281f420c6 -c0: 5271b76ab19782ff40e2955af88819c3 -d0: 8e5c79138f28073abae152c882258b44 -e0: 20a0c1c9fdd26c98812697fc3e00 diff --git a/eras/byron/ledger/impl/test/golden/cbor/mempoolpayload/MempoolPayload1 b/eras/byron/ledger/impl/test/golden/cbor/mempoolpayload/MempoolPayload1 deleted file mode 100644 index 0278f227843..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/mempoolpayload/MempoolPayload1 +++ /dev/null @@ -1,13 +0,0 @@ -00: 8201840558404a30754b446269376936 -10: 644c586b756573565a394a6648676a72 -20: 6374734c4674324e766f76586e636873 -30: 4f7658303559364c6f686c544e74356d -40: 6b504668556f58404b6d7977346c4453 -50: 453553346653483665744e6f75695865 -60: 7a4379456a4b63337447346a61306b46 -70: 6a4f38717a616932365a4d5055454a66 -80: 457931356f78356b5840feccc189c702 -90: 707f3a71d772559cebaee1a60c0eb99a -a0: 9c28f3ad22b6a69db65cdc913016f201 -b0: 33f4f52f8074b75f7f678cf165f411a5 -c0: 36092404c536762f470a diff --git a/eras/byron/ledger/impl/test/golden/cbor/mempoolpayload/MempoolPayload2 b/eras/byron/ledger/impl/test/golden/cbor/mempoolpayload/MempoolPayload2 deleted file mode 100644 index c757fa51839..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/mempoolpayload/MempoolPayload2 +++ /dev/null @@ -1,63 +0,0 @@ -000: 820287830101018e811903e7811903e7 -010: 811903e7811903e7811903e7811903e7 -020: 81186381186381186381186381186381 -030: 83186318631863818200d81853821b00 -040: 0000e8990a46001b00000011ed8ec200 -050: 8118638266476f6c64656e1863a5704b -060: 6d7977346c4453453553346653483684 -070: 582003170a2e7597b7b7e3d84c05391d -080: 139a62b157e78786d8c082f29dcf4c11 -090: 13145820acf524d17db14b997165a12f -0a0: 448fd7dddce6b48bb135ef317d5cfabd -0b0: 98f3318d582003170a2e7597b7b7e3d8 -0c0: 4c05391d139a62b157e78786d8c082f2 -0d0: 9dcf4c111314582003170a2e7597b7b7 -0e0: e3d84c05391d139a62b157e78786d8c0 -0f0: 82f29dcf4c1113147053346653483665 -100: 744e6f756958657a4384582003170a2e -110: 7597b7b7e3d84c05391d139a62b157e7 -120: 8786d8c082f29dcf4c1113145820cec0 -130: 2b41a5c236069cb3fd3fa658a013e230 -140: 873c2013f783c0504037dc8595875820 -150: 03170a2e7597b7b7e3d84c05391d139a -160: 62b157e78786d8c082f29dcf4c111314 -170: 582003170a2e7597b7b7e3d84c05391d -180: 139a62b157e78786d8c082f29dcf4c11 -190: 13147063337447346a61306b466a4f38 -1a0: 717a6184582003170a2e7597b7b7e3d8 -1b0: 4c05391d139a62b157e78786d8c082f2 -1c0: 9dcf4c1113145820e8f357c2f4b5521a -1d0: e3d23f142abbc681de7dab0f974c1c69 -1e0: 4743e3023d01e29e582003170a2e7597 -1f0: b7b7e3d84c05391d139a62b157e78786 -200: d8c082f29dcf4c111314582003170a2e -210: 7597b7b7e3d84c05391d139a62b157e7 -220: 8786d8c082f29dcf4c111314706a4f38 -230: 717a616932365a4d5055454a66845820 -240: 03170a2e7597b7b7e3d84c05391d139a -250: 62b157e78786d8c082f29dcf4c111314 -260: 582060c59bb5bd4926bd84a9bbb9e68d -270: 90837eef0a70561cd9d1a44b6dcc9507 -280: 994d582003170a2e7597b7b7e3d84c05 -290: 391d139a62b157e78786d8c082f29dcf -2a0: 4c111314582003170a2e7597b7b7e3d8 -2b0: 4c05391d139a62b157e78786d8c082f2 -2c0: 9dcf4c11131470756958657a4379456a -2d0: 4b63337447346a84582003170a2e7597 -2e0: b7b7e3d84c05391d139a62b157e78786 -2f0: d8c082f29dcf4c1113145820b8d7c33e -300: c93a110b459cf5a88edd42165bea75a1 -310: 91080e5ef6d75d114df4d81a58200317 -320: 0a2e7597b7b7e3d84c05391d139a62b1 -330: 57e78786d8c082f29dcf4c1113145820 -340: 03170a2e7597b7b7e3d84c05391d139a -350: 62b157e78786d8c082f29dcf4c111314 -360: a058404a30754b446269376936644c58 -370: 6b756573565a394a6648676a72637473 -380: 4c4674324e766f76586e6368734f7658 -390: 303559364c6f686c544e74356d6b5046 -3a0: 68556f5840d2af445e7f0f788c9fbd97 -3b0: c18bcd57ecda6661c6c25f8ab75cb859 -3c0: 33f11adb0cedd8a196c8cee2fece7896 -3d0: 10ab20a455ea3cba55e0b383e43d260f -3e0: e008f3d507 diff --git a/eras/byron/ledger/impl/test/golden/cbor/mempoolpayload/MempoolPayload3 b/eras/byron/ledger/impl/test/golden/cbor/mempoolpayload/MempoolPayload3 deleted file mode 100644 index a52b03a4e7f..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/mempoolpayload/MempoolPayload3 +++ /dev/null @@ -1,11 +0,0 @@ -00: 82038458404a30754b44626937693664 -10: 4c586b756573565a394a6648676a7263 -20: 74734c4674324e766f76586e6368734f -30: 7658303559364c6f686c544e74356d6b -40: 504668556f582072231b8d18d55f6637 -50: 591c2d71fc47a4279cb466fa5059d2eb -60: bc7c8a1220faecf55840a2dc60724619 -70: 07e681d69bd9e44a885d8d0c76815bfb -80: a35de178169daaa3927a22d8bf8faeb8 -90: 9094ca9c0f7fda72d816d0072f3a46ee -a0: f82aa19fd9aa83f5fe09 diff --git a/eras/byron/ledger/impl/test/golden/cbor/slotting/EpochAndSlotCount b/eras/byron/ledger/impl/test/golden/cbor/slotting/EpochAndSlotCount deleted file mode 100644 index aba887e333e..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/slotting/EpochAndSlotCount +++ /dev/null @@ -1 +0,0 @@ -820b182f \ No newline at end of file diff --git a/eras/byron/ledger/impl/test/golden/cbor/slotting/EpochNumber b/eras/byron/ledger/impl/test/golden/cbor/slotting/EpochNumber deleted file mode 100644 index 67535a8b026..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/slotting/EpochNumber +++ /dev/null @@ -1 +0,0 @@ -0e \ No newline at end of file diff --git a/eras/byron/ledger/impl/test/golden/cbor/slotting/EpochSlots b/eras/byron/ledger/impl/test/golden/cbor/slotting/EpochSlots deleted file mode 100644 index a3099636b1a..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/slotting/EpochSlots +++ /dev/null @@ -1 +0,0 @@ -1a00073e7b \ No newline at end of file diff --git a/eras/byron/ledger/impl/test/golden/cbor/slotting/SlotNumber b/eras/byron/ledger/impl/test/golden/cbor/slotting/SlotNumber deleted file mode 100644 index 685cf230de1..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/slotting/SlotNumber +++ /dev/null @@ -1 +0,0 @@ -191389 \ No newline at end of file diff --git a/eras/byron/ledger/impl/test/golden/cbor/ssc/Commitment b/eras/byron/ledger/impl/test/golden/cbor/ssc/Commitment deleted file mode 100644 index 6a1c974d8d2..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/ssc/Commitment +++ /dev/null @@ -1,844 +0,0 @@ -0000: 82a15823582102294842accb1d76aaa6 -0010: 4bc1af231378e1a01a67c0fc8010824c -0020: aa0210970275c49f58235821029bda1a -0030: 8a05240eab89934d68f93eb836af82e7 -0040: acededbadbd4bb9627c8561ddd582358 -0050: 21035ede259e9705449b2e50731e7641 -0060: 7b854b45d2f67d2748e136ff95e6fbaa -0070: efac58235821039c248ef9acfa42b56c -0080: ab4adcfa8730ae39c9226be5fd84be62 -0090: 0483090df4ccc9582358210297a9465b -00a0: 5bd034fac6ef77868f9a076cf5b9d6a6 -00b0: cb357857a2ead49c01b9e38858235821 -00c0: 0312b4b09996ca08b88505272525168b -00d0: fb4c4ca06934c1c2d545b31ccf0b238a -00e0: b75823582102cdad51ea02295676cc0c -00f0: 0fa49d5e7d317ab477b7e8a0289bfa15 -0100: 631d6aa52dc25823582103bd385b5529 -0110: 2cdc74674d87fddcdfc93182b9019d11 -0120: 5354ab2709ee515eb7d8f35823582102 -0130: dd5c15a30b24e96723191e330c43ad4b -0140: 47db2593c6b1c27a113ad15b9fe18dc3 -0150: 58235821030aa0f61e0449d7dca69339 -0160: 36f47853d7cbefa42657077d3c92da41 -0170: 18cface1dd582358210241906c49e270 -0180: c1936cc671a4cc7ec4e8a7f8551a8850 -0190: e29245057ad4b042f5a35823582103a9 -01a0: 3e57a31bc616cf50172372c10b1fe2a5 -01b0: f18ebbd037d0ba716b54cde1c1b2df58 -01c0: 235821025de1b792550bc5147f7f14cc -01d0: 227509d6a25ae2004765214a8647222d -01e0: ab33897a5823582102933531e19aae89 -01f0: f085c975393731f8dcc7fe340847f4d6 -0200: c7a1a0c4dcc467eef35823582103cea0 -0210: a1183de2f5a2205637daccec9a0ea317 -0220: 113b7782bd8d78be75ced1dbf3805823 -0230: 582102664b4ebfb08c14a7c76bcca47e -0240: 1f37dcc35ae1443f8d2a90781ce65dcc -0250: d95f51582358210348bb9bfe233fa7da -0260: 0ececff9a33388791c911e91a0c7c595 -0270: 6650b71a5f3659ac5823582102da49d6 -0280: c104fba07b1b378967784b2fdb111d8a -0290: b1938a4efe567a781153f3b22a582358 -02a0: 210242a9de48ad25ca196b50a9cb46e7 -02b0: 43fa7aa16502a2f56d0d188c22795577 -02c0: 3d505823582102e58b98c63b0760bd0c -02d0: 1f99544be9ce7f3f5190b07f7a89515c -02e0: 0cd0325cf2d6c55823582103314be53f -02f0: b69543884c6ae500ccb1f5f0536114fd -0300: b29ee2102c0c3485514fbed558235821 -0310: 03a52649a80ea3433208b32405a9eda8 -0320: 4edc675236bc141754154ceee6f2b40c -0330: 025823582103225dbfc0579d5f04d553 -0340: 8d9aff9bf5f0d7d6e090d47f083451b1 -0350: 4c4d7480b161582358210203b8836c8f -0360: 06927c339806e1600a36e42eb810f813 -0370: 5389fe4d00c16920b7578f5823582102 -0380: 5a0bf00da25c5d16c8cd712d35bd5f64 -0390: e88de7dd7325c0f342706e4b5699fd2b -03a0: 582358210202e40fbe8a6d76547b759c -03b0: 4af1f2f77d57acf70c94a78bf7846b32 -03c0: 7f6cc52a7b5823582102ad107e6aa56b -03d0: a738adfcfe52216dc07518a97f03c23d -03e0: daa0f370f69ffb736284582358210339 -03f0: 2e2225bc6fa588b0e0435b9e9467090c -0400: 9cd69c2cec13955eb99a7a1a7cbc7458 -0410: 23582103069f0e42d8faff164f3ea7c9 -0420: 3fbf35ebb4851c86b79d0b8e23bcff6b -0430: c6bb49e658235821021cbefa934aa9ed -0440: 02ead02fd492f98623b903761782f1b2 -0450: 3de10e26d81e82e56158235821030c14 -0460: f1393d9787e603440031b86ca9b724cf -0470: 12955222bf52f8f272046ea991dc5823 -0480: 5821035f1faf47675dc23f1854598d42 -0490: e1e1a9df161a48cce4c305aabadc90f2 -04a0: db9a135823582103b0ebffdafdcb12cf -04b0: a4e39eb030cb5f4dca4a92f8b888d7e4 -04c0: 50d269426c34c27c5823582103681a2b -04d0: 075b44b296fe8852a307a93c77cb4e2a -04e0: 927bb56d6f370a061d6a63dc1e582358 -04f0: 210272531932815e443f1bf81daec10a -0500: c575177cdca9ac1f7574159f5f4bc680 -0510: 7f0a5823582102ed69e79cdd488880ed -0520: ef68fd2b5b5e6add11374aef21b407eb -0530: 15b865af95397f5823582102e611634b -0540: 87df1c402d7580a6c42eb701a335cae9 -0550: 22f40c6d7c99532e110b744458235821 -0560: 03fd56a98ea60cbc679f15e7e0fea32f -0570: 992c66f9c7cd9cb53f77dc537c3a3eb1 -0580: d15823582102721c2d0420fffda3c066 -0590: bdeababc9e72c89bedce37faa48751a4 -05a0: d114b4a7e185582358210379121a1c21 -05b0: 416df70a0d3cc7ad61e80b77fbf8ae9f -05c0: 47287e7baa5541a0aed4765823582103 -05d0: cfda6b11727437c955dd6105df50e7c2 -05e0: f725b1d969533c0ef2652226d105d3f2 -05f0: 5823582102f05d06750c33ffcf12229c -0600: 0b589e94faa9dbbe232c1e34ccac9da6 -0610: 0945f0449d582358210353030c6515d2 -0620: 287b040a7e9bd6ba62362a472c58aac5 -0630: 01a0f725b0ddd902a5cf5823582103bb -0640: c6fd88c2e6426e07c9134bf8ac4f51fa -0650: 4b2dc9ed4893e95ce853ab7121af0858 -0660: 23582102b5c89a77ac5181629aae43ec -0670: 47abab09e0901921af2a60c7c4f757e8 -0680: eba63d1b58235821037cb53bec0f9966 -0690: d49845a9a21742d747f83ce4be419a4f -06a0: 6e618d33221ea5f13b5823582103ed92 -06b0: 77f3d95ab3be29a4fb618523a50b12ae -06c0: a175b4e77a616972887cc6173e9a5823 -06d0: 582102a0fbc434540a32aec22a3aa66f -06e0: 405dd2505773d8be2686893e575173d1 -06f0: 26f0ab582358210399e21fc9573fb5b3 -0700: 0e54ed2a114de5ca7c6354156428ff4a -0710: 4dbc39f678496b6c582358210231e013 -0720: fb9001204a89131cf28f8951a462605a -0730: 26a6a8d2d35ab757fa0fc1ff55582358 -0740: 2103d7c2b648b0bbfaa90a1cc9d89255 -0750: 9fdcb37a0064a9c055a1a2e34b4d1fab -0760: 27af5823582102aa5d3eb9699f5babc3 -0770: fdc643464c6e58a5c3c5624c86e32fef -0780: 3cbd5f68775251582358210380060a98 -0790: e1a2294858d35fb1f0a52128353d2d77 -07a0: ec97f151a9fec503cce778de58235821 -07b0: 020d422e87ed24f8f4db042eb2c1e829 -07c0: e1e2484bde74cbc470427a6279290161 -07d0: 7c58235821025a10effaeb3cd4ce46b9 -07e0: aa4073b9ffce8b701cdf4ae49eccbe5b -07f0: 3293e32038845823582102ad14cec864 -0800: 6df8d75a5ad8d9001d280309301bd58c -0810: 85f30a9a79908f70f41a0a5823582102 -0820: c96da83d747d2231b8e08807949c2d14 -0830: 8a32deb4bf36c6e9353df94fcce70de5 -0840: 5823582102b17c816429519ec8972643 -0850: aca5fb75e3981718822377a82d4e62c9 -0860: e6f294bca858235821039a8813575b95 -0870: 5da94f31315580ea9da192703c28210c -0880: df7a16e4bef9f6a00a2658235821020a -0890: 36a508e62aa38fe3f1531e00a2591a8c -08a0: 690826d52b6a97b97e96a9d1bee02758 -08b0: 23582102394035cabe7def188134bc48 -08c0: 8f8603c52f6f80383528aa3373aaee4d -08d0: e7f27cae582358210221d12296f4c8c0 -08e0: ca015dbcfd92a851ba4df2a4a4936c65 -08f0: bed2ef493b402e374e5823582102dbc9 -0900: 434aeacd5a17e302abe5ed4924fbca72 -0910: d52eb1abbcf19e8530bc9b6d19855823 -0920: 582102478daf056686a38e929db041bc -0930: 3107cf5baa82a05a63f795fdaaea29eb -0940: bbf1ce58235821021ab04732b0eb854b -0950: ea8122eec0bed21b3334bafac2cabb35 -0960: b4f07fee9b7c0a7358235821025f68ef -0970: 8c389765124ca9ee29be7f47858d6d90 -0980: 57a2255400923bfe0d7b2c125b582358 -0990: 210326820323c581e759c5e6604d0b45 -09a0: 7576ece4469f508f707bc6272dc38c0d -09b0: f53e582358210399b5746088d1e4a443 -09c0: 3579e8667412c28ca2e5837f392956ed -09d0: 19121d810fa3f25823582102585d568a -09e0: fd893e50039c627b00747dbaf8ac2cdb -09f0: 773a356a13074396d6905c8a58235821 -0a00: 020f899edd7da12fce02def2154d313c -0a10: 04cb477365a9ec26f2fd65ec5b64504b -0a20: 46582358210359fbbe6a834552907d52 -0a30: 1ce2b34d66811344f345a113cea25f0e -0a40: aaf3613f892858235821021ff9c399c6 -0a50: 6e4544c1ea5ece97e4eb7301aeb82cd3 -0a60: 5445739712e0acf9aec69d5823582103 -0a70: 2a5238b1782b657c3c85a6c4ebe2cc73 -0a80: f5e410fc683fb34816f34d7365d6be56 -0a90: 58235821021181aadab475dd407fc7e0 -0aa0: ae4f95fe96539b33df762c4247888d66 -0ab0: 0876ddd08e5823582103cafd90dc39ae -0ac0: 649cc45fd42456a4daee0525b7202358 -0ad0: 30f0bebaf6ee6886d714582358210296 -0ae0: 39a9d47b75c00b25769d49651ee459d9 -0af0: ce053e841ff08f186b011ef41edaf358 -0b00: 23582103c2edee8ebe749e5075d3fbb5 -0b10: 8a977e55bbd02d6a59ee590487a691ea -0b20: 6e91c83158235821028c67c01e209974 -0b30: 3d6f591794996030f429777709edf184 -0b40: 7866987e9d3cd4217158235821023db9 -0b50: a9befd52097357e8beaabd266ce41c93 -0b60: cc618dc0abcf60708c7e7e49b3ba5823 -0b70: 5821032986bbc8c170686d2a2117cd1f -0b80: 0374ccb8137570f219f08ecc9fd195d6 -0b90: edf203582358210207b48dab2be7a90e -0ba0: b78d07578421de64556e35429011ad3f -0bb0: 3d3e5ef58568b17d58235821035bc3be -0bc0: a6bf38100a2dedc0cf5f64fdd2a44b1e -0bd0: 904a994d4eb6d13dd18ed4b11f582358 -0be0: 2102417c60e68aa14ae6b9497a91d2a7 -0bf0: bb3566eb3e8563686e34e3069fc98f5a -0c00: 8a50582358210279cc98764a98693754 -0c10: 84da2ddeeb5f6e30fdad8ba968843ecd -0c20: 4080f5877aa1e458235821026fb9617b -0c30: 52e1c97d642dc556dea1aaf45c488963 -0c40: bf74a7fbedcfbfb12f0f70ac58235821 -0c50: 036e3ef9600db5fa54a2ed39b50124c5 -0c60: cce767acee72e135f5b4b38ae34b9443 -0c70: 615823582102a8243ead08b78c4ab193 -0c80: bdf5714bad7789fefa748e6e2916361f -0c90: 859e5a369e135823582102fa95d06cf9 -0ca0: 9e1e370c414413ef53e263e14499a53e -0cb0: 9583bff1b28473722522ca5823582103 -0cc0: 5e93c1bc2d8d8b782098d21eea41ea9d -0cd0: a96c131eaa75d0b0f9e4803ed03d50b4 -0ce0: 5823582103be29eecbd531fb36a9e935 -0cf0: 4573e4822f7be96e3e677c04b87a6c8e -0d00: 44d60e09d8582358210216cdbb428af2 -0d10: a4db16fc1472471429606679d07e32d0 -0d20: 8fe3330be1d1330cb7b45823582103ea -0d30: 2204c486a1b6a08bc926494867ca515a -0d40: af74e6ab628b26bdcbee67a774b55758 -0d50: 23582102e95a1a1af0909ff0cad4f795 -0d60: 659aa867e576a159534f1eb1b954c362 -0d70: a90502db5823582103b931462266dcb6 -0d80: 81864c6bb6705a3b468d48f122658f85 -0d90: f32f584728b47ce50c5823582103faa1 -0da0: 4fee33584a195b337e1e987319200d7a -0db0: f58f61796220cd9f878e6279c3305823 -0dc0: 5821023cca4e60614844e29989964b24 -0dd0: e27dd95917d3131ab497ea4365ca6301 -0de0: fbbd085823582103c2a24e0ceb6084b9 -0df0: 9d9d7677c2cba4ee89e324cf2f98561b -0e00: 821820816c7e033c5823582103ddb922 -0e10: d834f548f7225311fab5a3029745315a -0e20: 23faa836418046afa70dfb5832582358 -0e30: 21021151a4aeb22a9d3c229703fa512b -0e40: dcf1f8ab2e841c1f46f2782781a12d83 -0e50: 752a582358210247c9c174dd394b279b -0e60: 618d3f29f173cdd3d319c31ab5d934d4 -0e70: b87c1c9d0c294558235821037b1e9c44 -0e80: 89e15ffb2768699a4da2b0e0794eb769 -0e90: 73dc09bcbb7074b27f53286158235821 -0ea0: 0357aa30ea541f976ad2541f706a8e7b -0eb0: 502ba27a3f620a6038b0bc0fb7d6c8b1 -0ec0: c15823582103883e22e6b434ded59d86 -0ed0: b704be8a238dcfd83cd30369ce5af241 -0ee0: 31cfb66346a75823582102b309ede42d -0ef0: 0f23a4a2d26ecf4fae96b8d6c983a76c -0f00: 4f9d99e4fca0bbd61d32eb5823582102 -0f10: 2fc25316fa325e39bcf65f62f61aab27 -0f20: 2880070f6f19d92c463f46cde87d462d -0f30: 582358210365b8a99105b42c8d4941a6 -0f40: df156f4f91e71e9b7f47a54163c80dcb -0f50: aa6700ee6358235821031b0f7ff03267 -0f60: fdf86479af1d66c199e2ce9737b555f4 -0f70: 904bab9573adaa744dc758235821021e -0f80: 4dbd1af31501a42e17ad8693a23e5c22 -0f90: b4df3adaeebe164751c2f25bc138f758 -0fa0: 2358210368db19a232010e5a0dae6a09 -0fb0: 64134811db95ab3e815ec060d3608fd8 -0fc0: acae99855823582102fca6025604a425 -0fd0: 52adb7ff53dacf4bfe8bf00a1cc75786 -0fe0: e5288b99ba196b9bc658235821025ba0 -0ff0: 93fabdb69404d09c47540e43188deab8 -1000: 2a533fa1190b0f1a4ebff522fabf5823 -1010: 5821022799c140ffb82ec905bdeb9b3c -1020: 21f063797f1799fd4859e15317b6db0d -1030: ff7ed95823582102020c81ee566c7ec0 -1040: f461e5c70503a7769069fd0b44023a32 -1050: d0e520a8da1b53c75823582102b8e247 -1060: e500b39c661635b0d15eb677ff5e4148 -1070: 5054c0dd58863e1de6cc824e1c582358 -1080: 21027a0b0c681a97c13a8b6508eb34e7 -1090: 08f8ca0d700a2250fc73e2386d52e758 -10a0: 77b958235821033a9d7756a4e717e6e7 -10b0: 7c6988e6036d63b4cb3e857b9f7c2fdd -10c0: 3e8e510a291aed58235821023bd4e95e -10d0: 9298f406a6ff23e877818ccb16ba5962 -10e0: 58d73f7a475f7748f9a9873958235821 -10f0: 02ffd0491ea76403aef978a4ee424f05 -1100: 1ce0bb2c4b52a2e5527741724887470d -1110: 9d58235821022d74f1f254eee1585068 -1120: 2d3ecd151f5909c9640f9be90d3672f1 -1130: 866fe59487fe582358210356044880b5 -1140: cd8f1d2aabc5863ab54ee969783196ad -1150: d1a68dfc05de5dbb907ac65823582103 -1160: 498bafaa458ef661c23dce75a8aa854c -1170: c5ca6b607d2f2d936368fb49f1d6c3f1 -1180: 5823582102e2e19c4efe73abb676f75b -1190: 5604b80f0bc41a9f42075b244086275a -11a0: fed274bbd558235821020867b308577d -11b0: 17c97e5017a9521b94722bad7bfc63fb -11c0: 7d0f0c8c2ea01676f0a65823582103d1 -11d0: 8d83e2e7f147dc496854bb506e4cfb0b -11e0: 1e601d5c604cbea0bacf3e31e7056858 -11f0: 23582103d985aab246d1f12626fce599 -1200: 04db1ca4094e40073e47a7f6142d7dc3 -1210: 11cd03f45823582103857808b71199e7 -1220: c8e727cb316571c621368295bc9fd71d -1230: 7aacb8c90b4dece1ad582358210245c7 -1240: 5a4056290f04330665664b0f72421227 -1250: dda013c444c01a69bb51b3caa6d95823 -1260: 582102272fc446da2f3bcb1c76836f19 -1270: 9f492b420581f42c5978de09b38d5ffd -1280: 24b4aa5823582103fe104ffb91c2640d -1290: ed16388cdd29ae06ed8503da5e208307 -12a0: c46bbac2c515557bff8458210231bf6c -12b0: 2d1b1494a030e1b62caeb54f86d4d320 -12c0: 488e47b2e93a82eb83a595841558402b -12d0: ffbc415f413e488ecd66f28d0c6181dc -12e0: 8ea25b814f98b0dd1b92526013e5ccc4 -12f0: 7696934669056e0442c802370c0769cb -1300: 12a43c7461df1d7d1ec6199799a0fd59 -1310: 1028a48563ff5cd6b187777cffa83c07 -1320: daecb666bc8a610fcf6335c47e8f1056 -1330: e963000000000000008030c44e45a3dd -1340: e43de4653c305c3807f607ff9bd17946 -1350: 42a39d709a29030a47033bf867ed3687 -1360: 3376c438fa5b7aba7ff94dbb33c8a142 -1370: 8bb6a031bb1b1f0276637b0aed8b6637 -1380: 4b9d4f5bc28df2936e97366dd8eb2982 -1390: d8fe051486243ca7f5813a35faf87edf -13a0: 75426d7a97761a6297e307634837b846 -13b0: fce051c54e76eeda2ba71ac78627b799 -13c0: 2c556bd9e83276667b6f13efa14f4731 -13d0: 554ff946b059a568707f59ee1551faac -13e0: b2f9077613c8ac30ec8b6d9ee83d4c17 -13f0: 9f3aab0f1547ca032a455e8d390a2950 -1400: 2c95a2c759b25e1cf365ddd15274448a -1410: 2200c4be12f84d3a684715f83fe80990 -1420: 7b10ebfb56dfb5d15473a4522fe37877 -1430: a0a7ecae7ed95528a5ad1a8f58f276e2 -1440: 488ada5f4016793e2d3e8189befc14e9 -1450: d16c4aa53ea67c66fc8a67125e2d0f47 -1460: 502306d43ef20de7e559aaf09f8fec8c -1470: 8751457a7634acb8d81068430a65e77b -1480: c0b9d39fb87000a715d8cc877dc846c5 -1490: 3039afc5d431272d03686befa558791f -14a0: 3bb41bee4a1679739afe54b02a55b37d -14b0: 9b3ed6c0d94f6eb5f7553867805a5bbd -14c0: 88fc5224b388fe082425bb3e2f30f90b -14d0: ffe97c5687b352bbbc4030b137e60053 -14e0: 1f7a1030db35c45b1117bc678c1d2905 -14f0: 84708b6ee6ee6eedb4928ad61be1a7aa -1500: 7539b3676bf94bf9c7a6e6d0d8dc2a1e -1510: 7812c652f0ab0899a595373d7b16757d -1520: 8a0f83c1b5bde97b9c9619f8e14cbf9c -1530: 5f3ed3946ee5254816b3362a1b6d034e -1540: bcf0818a4b6538638939777e93b48daa -1550: dc3dd4348aec611db39db2e4561e9051 -1560: 960bcac8bb97d793a99d1d8b71de99a2 -1570: eb3c6c09268957609b38ce87d79173db -1580: 080e79e92ffcc364dbbbc426304b2bdc -1590: 834d15cef6688753a0114eafdc68f292 -15a0: ffe0249835e70a28080577e24245d6b6 -15b0: f16ffbbddadd85a948dfcc67e83e8b0c -15c0: 1ad8913039ddc6282570c3f8a445fa64 -15d0: e25746675324a172502bdb242aa68e53 -15e0: e0233572f42250b037d805e8bcff1e86 -15f0: a83fafc322b1cbeac4cacbcf6fc9e06f -1600: 2a78d14685094b7b480522d9cc0ca8ab -1610: 732928654fdccf32387e5933747fffad -1620: 91fa1d09076822e89644d07aa5fc7a44 -1630: 1bd1aa530e1ca040d50e92381e80dc7e -1640: 9d456b7dcbc3ed142172a8c4bbde7b14 -1650: aa5d350f368e4e373ac5de34510dc996 -1660: d06fdd90729b5f0e4df4a25427bbadd7 -1670: f306a8bffde03e3abedc185bcf61af2f -1680: 66b6c664c406c2eff88ed5d411eecdde -1690: b4031f0b701bd5d5d820a8c475d374c2 -16a0: be4f6865c51e512cb835ef52f791acf5 -16b0: 52f82fe9b4107acdbb375e13933e8649 -16c0: b884e0e0a5d699375919dfdf72250d71 -16d0: f1666caf456218ab18009b5defa4c930 -16e0: 03cac1e3d325835f9369901fd44e5cd6 -16f0: 90613bbad8de14cf7598f469ab97772f -1700: 6e25f8d3bcb78461d2a8141a067e95ce -1710: 86bd679ea8ab289ff048dafeb353c320 -1720: a8e7f104151f695f04dde1c34fdbfc57 -1730: b6949e4eedbf2b1cbda7f365d20265d0 -1740: dba4c98df4a77820658325c33d018f83 -1750: d88c4d8f8b8c8ab86c21307ebb593587 -1760: 173149a48095d6825c0563379f917ea8 -1770: 8b62eaa575a925e0e06f1b3e005e4108 -1780: df74b7f7d8f6d1950f8b6f5a7869698f -1790: 000da9646e96cff99aea676cf6158ed7 -17a0: 2ab3ddb4c93047c0a6d94020e1d34a11 -17b0: cba66e22b244f6f95d67741ead913f0e -17c0: 1cf311485f8ba5d2344bb0a62737c5f1 -17d0: bd1bcf919b076eb42457f608d235ea24 -17e0: 2c4ab19644cb1e811ad40971194ecfa5 -17f0: 5165b302a49966f3da12948d69ffa13f -1800: 0c2c2431bee23808476cbcae72a6fad3 -1810: 03dc2dacc05413ddbc9a3e65dd3fc13b -1820: c2147d4e203dd6fa2f9c17c9ed3926fc -1830: 99a092a34d5aaf933b8ecc8d20e69616 -1840: 695c0f535e5012f4619bf78981319e58 -1850: 015a98adbcd6df4093dded06e591ae9b -1860: ababd6b6471ec4c4189eb7a9e9610d55 -1870: 09dc47b5120701557a82e11a95ec8b7c -1880: 1ad8bb668c4ada9976143fcc505cde24 -1890: ed101da20ce5af9bb7bda369f5673776 -18a0: d7689fc3f479de46224e26e065e7beab -18b0: 58af40bd1ff0febd9cb105186b931179 -18c0: 4bf237b6605a41774d26e0e4a13519ad -18d0: da3feccb91ce9199fb29f3c4eb90d841 -18e0: 63b6c087f70542ed263768605ed5463c -18f0: 837c8476fdc6e4a8f01eef3e40c0e6a8 -1900: 0151e39fb4376ee6259222590e9c8c1c -1910: c489b9de6583a1506d7a63d804eaf17c -1920: 58d1c53f9f4ab93754879ea14af74983 -1930: 32c79456975673cf49f37b959b4fa0cd -1940: b0bf2499824ecc01067960c64a9ef04b -1950: 93ff0025db03c388b9287df074f31f6b -1960: cd3eb24b9e4e1441a203dd19e55c6e81 -1970: 423501943637a2b07b5a2f9ecba8e12a -1980: 8a49cfe95374aeb9036f7512fcfe05df -1990: 63751e3ec3bda882b8ee4b4f75c0ed17 -19a0: 0cdada83804ad995650e37619d161901 -19b0: 6774457059cd3e971b8f6a67fac681ec -19c0: 136f8d80462445311c8c6e9aa3a181dd -19d0: 8bd096e651703ffb4dd3d0b3b54a6e5d -19e0: 2d3c0d31995ff96a16ad602c458d7fd1 -19f0: a3db1326a601e91f4760bd2d79625a0f -1a00: 2254832ae9e045be1212598de8dcb0ff -1a10: 4afb91ed7927771bb57c5c98ed8a65d8 -1a20: d2283d6f9694d57bd384e2897c4dd62c -1a30: b40a3640ae334052e7a51744672e3fcf -1a40: 7df3df77c32b34193197bbedf1e3513e -1a50: 35a787b81fffb7293e5caa758efaaf3d -1a60: e517b5dd47e007d5847316087238cc9b -1a70: bc1139445c63c8e6fc7fe7a5c58cfdaf -1a80: 018072ad93aaafdfd7e1839a394e4a82 -1a90: 061f2f6576c01d719775407e23a3fed1 -1aa0: 72bf4914418c3ed7a9a2e8ef5774bff8 -1ab0: 80f8613b74befae8789fc53f14389079 -1ac0: 8333d0807ef25dfd6ac532a0e9f52c30 -1ad0: 8ff4d407766aa155fd0b268a1723959d -1ae0: ccb9bb2e3b544a7ebd1ab6c03dbf501c -1af0: 44f709084f902f417ee93375f565ed3e -1b00: 0fcbb16b3682de396bfc9023e4a48e51 -1b10: 9cd5f1b07a43a3557dd9168045b41b58 -1b20: 94406f7069fa2e0b57e1f70a4546fc2b -1b30: 51c9e6ff49830dc688bbb174cab3638e -1b40: 9ac8ad861a54105320e82c1f795b281d -1b50: 35d3bc6c3e68b44757b81d574e519d1d -1b60: e6e32c486c6bf8dc53577e19089e4aab -1b70: 614cda245e8c2f6da22999e85bdf4a2c -1b80: e402f18e00f7061c579cb2a95cd23885 -1b90: ef2f641be6c965c335283fa61b79ce86 -1ba0: fc981d174e6be5e26cc0462c543160b6 -1bb0: f3a1fe003cdc0bce1591886b686e607c -1bc0: 49e8d5f7cb063d3f0391863166dce196 -1bd0: 9960b04becb9d1be00e9c77660c633d8 -1be0: bd0ef2417139acf621363c3fb9cf34f5 -1bf0: ab0b74fd0cec36a26a9e19c5a291f32e -1c00: faff7f6eab050a5e9b496ed895cb474a -1c10: 1e12cedd9c2f1a38034e51e43ae6ca32 -1c20: 9ef8bf83863200d1df11f6ce312b13f1 -1c30: b40a3dfa19d5eed273bcb3c2a4d39ae3 -1c40: c5e7027bf3340133f364df6c5ccf0bb3 -1c50: f0f07bbeeb542d8d17e2a3a09925cd81 -1c60: 0927f593c2dbf0618729a239848de0c4 -1c70: 0a10e4fb947206b78a2e0c3c4f9fd4fc -1c80: 9d5656bc94bce4b1715c44768dd9882c -1c90: 8ed03258839865653bdd32a96a84b210 -1ca0: e46a3e53fa49731d8e6c31744c90e890 -1cb0: 61318ec465bf5d2f3bce36700dbc850e -1cc0: e8ad1cce8adef841ba9d03921a6afd13 -1cd0: 42a201b7e4279acf91dbb75eef924a07 -1ce0: c19e15797e508e40eee5d4824f5d3e21 -1cf0: d684f5525ce54b0e6a684a75608ebd31 -1d00: dfd06de79239cb4ebe866361bc01ba05 -1d10: 41b5747696d1f0da88f29f63f3c4894b -1d20: 9b9844458c385c20a8523a14ff1baf39 -1d30: 7ba985fada57c67db3bf7de9dbbaeb42 -1d40: 34396641bf70c31fdba90de6016f601e -1d50: ec3ec9bbe711c3bdba004f18c51a4503 -1d60: 0ec76f35221d67cc963552dc4718f846 -1d70: a978ec870c766934c629d508718e929e -1d80: 4630925e2cdc24686a93f9d988c5ec99 -1d90: 11ed60025a436cddaa26ced3c7d2d6cd -1da0: 44c49ba809f4388e47a098aafa996664 -1db0: 18bda02cea492d3ee2697bdfba6ffdf3 -1dc0: 4cf3deb8f16da0b2df30cc5e47bebf01 -1dd0: f1195ad16a3d3fc055ad03ce9a1fda5c -1de0: 9157ecf19f4b1795e4cc7eafd75cf0a6 -1df0: ac8a6aedee7abb22facba2f7800b6588 -1e00: aedc073adc898732d57f9bc7998c4c97 -1e10: 6b28aa000d47f72a01be93928c6545d6 -1e20: 414ef9292886f1458bc7ee48c6b4a779 -1e30: 6b3099ba04e3503623e8788668c87953 -1e40: df1be0c37eca0b6002ca6a4781b9667e -1e50: 1ffff4b38d782ff5c7eacb20c1b0d31b -1e60: 07ea3bc191d082802ec74671785fc21f -1e70: 759fce2c118aa16b8b205d58da7e1775 -1e80: 4eb1ed46f21fcb54936d5b036a509502 -1e90: 6e0c0dcc6f12d4f789c08a37283d7d49 -1ea0: b93271e75a772283939e357f18aa7da9 -1eb0: 28f4b302b2f603d053458806bb5faf00 -1ec0: 51c59ef2a717c8dd5d8507452ff05d13 -1ed0: 2f96364f17f465a87e4484bddfc7ff22 -1ee0: 49420f189cb21b7d0abd1ac44f9385bc -1ef0: 58a47137497308cd2e49f287eec99632 -1f00: 0f7a0ed68a85109d5395d5ce9aec18fd -1f10: 9a13d7a813d6239b01dcd939ae51f672 -1f20: 747e604d5f9d27dc081b8c76ad7c2002 -1f30: 4cd4b77c739c4037c60c19ce8a7d369f -1f40: acf9066bc5514ed3bd494baca768cb8e -1f50: 51b57722c99acf6bf139c765a33bb6f5 -1f60: 6638388fda81177b937dbd84a72ff9dd -1f70: 7a289f96273146686ff82de83e13d4ae -1f80: 328717d2ad3c601d07900129cd7f3bca -1f90: 5bf46236ffc5f89ec209316397064d37 -1fa0: a91b36c9b5729353a4376bbdce777355 -1fb0: 5765693c462d5d3373287511a84a9ec2 -1fc0: 44c2a818fc30da656ba74321377db506 -1fd0: 21dfff4770f4d5fa0b28db4897ef30a7 -1fe0: d476e5902652943da46c8531d3ff4059 -1ff0: 00b7e6239e71f9bd02e349d82cf36c3e -2000: 79fb13c945f0508156c54a0d990e8814 -2010: e3d7106d7c085ed79ba3ce80eed8702f -2020: 33017348aba9c95e0039f0e24a13ca98 -2030: bc985fa2cd25acc44d42f1db633066a4 -2040: de53d36b8748f507c3d2958c4dc87356 -2050: dd99662046f071558c9d7ec488469362 -2060: 87f6f35c01007e01987fa8d8d53c447a -2070: e42c3a41d0dcc7b61677e1718b37a539 -2080: 9b34b163ae4ccab14ef4e9a8af11b0ee -2090: 359598cd86a880c58f39ff0e0a911c19 -20a0: 9385cf7fab4a0c14032b102bdd0d9c32 -20b0: 94747e2305e41a52ce69eae3d2df4806 -20c0: 4cf046e3f62df92373edec74fecfd9d9 -20d0: 4c5c7aa597665c83a2f74ef0783b32b3 -20e0: 99901aab8ef9581e8131077b4846f0ec -20f0: 8953a22dab140717a5a4f9f337f3488b -2100: f16bc39de86709872d2cebcf8cf90d37 -2110: 45a77f11b9708fd1f883d228f50d7055 -2120: 4667833e6dd377e824404a042e713829 -2130: 977197255d08526f0c8fcdd7108a2a9b -2140: 9e1d2866aefed1a5005da519f3a4cbfa -2150: 00b035cf384fe2a8578eb667502cd383 -2160: 79bd93ac1aee827eaa7f8701844a7b7c -2170: b36bcf5cfe7b7289dc23c8db91f57432 -2180: 80d70ad5f7a19131a0eeeb348445e4d2 -2190: cb30b3cd8fd71efbc7700f8bd5d91b22 -21a0: 6553ecf4fa18a85ad76f5c2a79b1d6bd -21b0: d4efd39a30d61f2c6f0505e73f0f80de -21c0: 0d0b4d46b2a238e736e73ea6c8768de0 -21d0: a744a39a928fe2c079b67875f1f58e72 -21e0: f6fd9f80006939a1366ed7ae2d24dff9 -21f0: af0d73bea55a41cfed877134756aaa18 -2200: 331abf786ded99664b2910f018c87ebb -2210: 1ae842f4ec7a196993cdf518853bd611 -2220: 403c5afadb5085bc0c75bc4c453f09a9 -2230: 27936ef5b35d0fc1764dc81de354c685 -2240: 4d838a01e47713ad4dd34cf37c6d01de -2250: 9964032c922aa827a877ac845a3039ac -2260: b659dd057d45ef479bf3a648c92dcaa0 -2270: 7bae01e2dfb0a518ec2259b7d9cc99a5 -2280: 5d72af4fe8def3be4845fb4f3a760bd4 -2290: 8052ba43d153a74fc0ac7db58e7d0822 -22a0: 3a7fa94aaac99fca914c4da02e42e867 -22b0: c012318681cb2d30eb0c593c0b45cfc4 -22c0: 7038d9c711cd4c81ed0435b3623c78c8 -22d0: 13c5937d85858c5fb0505cf24bbb76b2 -22e0: f062f9102537fb5e8660f2fb61530463 -22f0: 65d89a6ec4a3da956be1047b0c016358 -2300: d133553f04d9d9d25bc57f92535da193 -2310: f21edf71aa300b1ff81b8afd6f8fa8dc -2320: 2126f89fd73ae42a6a6fab63e924735d -2330: 1dec76de3b483d81fd7a9f582103435a -2340: cf1950a74983a5db7aab7556338ff913 -2350: f97fdda7aeed21800f33635a49a05821 -2360: 0339b53526124c33997dfe0c27cdece6 -2370: e0d58b3ed995648f04230be7ce7b0bda -2380: e9582102bf96de9594585b1d78c7bfa0 -2390: 34dc767a0209480587ab86996b6d4417 -23a0: af2ffc7a5821031fd5eaa1bc7451be8d -23b0: 975f8ce6b12e804fe8e174ffaccd7070 -23c0: 86dd409f92e01c5821036497ee64cec5 -23d0: 0a7ff1096907a0bc4d8f4901d6e7e536 -23e0: 13bd317cf27d76bea435582102e168aa -23f0: e507c600e3f5916831990d3584a08c8b -2400: fe4cf4e1a9f9f4d2ccbb4314cf582103 -2410: 4c6e7555d4e4dc8cc144e5c36ed18643 -2420: 9fe0ba7d9b4c4b0af5b2624b082b8d85 -2430: 5821035a8b9aebdd95d863e025dd1ada -2440: fd4fdb314d59d8b4f8c0fc64f541d9bc -2450: 0dfeeb5821031eacebcfd2061b115dd4 -2460: 3df32ff6ffbf7fa4ae35d2c90d9613bd -2470: 4173bd4f81a0582103653cc6a3e34cd6 -2480: 87906c3124b0100ba8bf4ee2e6255813 -2490: 624472e5f8c1cc687d582102b5a2f731 -24a0: a389bac8fa40b852cbb03d047937c27e -24b0: 5d51a854ab65a882efc3cb2a58210355 -24c0: 4a153cffff7fc1578e29d9c07de18040 -24d0: bb9d6bc0cda626faf6bdf7619cbb4e58 -24e0: 21029c6be6b826a92ce18f1b159922ca -24f0: ff2aa5b4c3cd4fa5bf3400ffb4c1e1c6 -2500: 691d582102e0d8b5776a0835f741ac29 -2510: 630d3c4867ff236157047502d3af7f0d -2520: 4da4de7bcf5821025fd71718b838cb1c -2530: 742162b9a1a0002efe92be0358606239 -2540: cc429b7309efd4685821035fad088bb9 -2550: 1c1212a6ddcf6a1622b5c61d922af262 -2560: ba7a5a619b3bade05a9c71582103e0d7 -2570: a9e86b0145aef6a08d617f3b9c1be87b -2580: 93412ecde747d2413ba0810a8fd15821 -2590: 031dd55f2f7b21a1a7df4c7baa7f3669 -25a0: ba06edfe23b4170e688e93db24bb3137 -25b0: b6582103c2ecc7d41035fc65d6ace5bd -25c0: 9b408caa5ddc2c30e4f919e98b784210 -25d0: 4a1e88215821029c913c9000d8bb2138 -25e0: 8a1786e60131772b8b04b82bc60c30b5 -25f0: e4f74e966dc2d05821039f9bdaf76719 -2600: aab8571ae0a2564866243b5fab45cb09 -2610: be704c930bda1dafd5ae582102c519b0 -2620: c9e01bb957e3f47635299a1de584880f -2630: 8df2099a687252e618cacc6317582102 -2640: 60b8cac6cd6771a93b54eaacf9c3673e -2650: 4f05df14847d6ad21859b66c583d1b09 -2660: 5821037761096bd5101e13f6aba8d0f9 -2670: 59957d3d653c8d0bcfa797163ebeb666 -2680: 94b634582103c2721ac0af1fe8fcac06 -2690: 31c5488a9d40164c013da56c0e7f1109 -26a0: c8fe50743b8f582103199be546cdf528 -26b0: 3e2fb9567a2a49dfadba376d2e3d81ac -26c0: 4ab941351a75e4b616582102f2ff1995 -26d0: f86ac9457d536d070ce9574571b1ff66 -26e0: 14cbf96409701fb13f6e9f19582102e1 -26f0: 43ce5162833181e97bc7183fc8802690 -2700: ad8a84772c3169c3c71e283f3fc4b658 -2710: 2102c4ce53991f0ea7d05a5aef444b51 -2720: 80caca86759690164bef89ddc35dbf31 -2730: 357c582103c1e06f788aab0b07bcceb3 -2740: fca47f8fdcc16767753ec050ee005d69 -2750: b82eafdd47582102a10ad5e568d9e95f -2760: eead80b68b089d05b3bf2b482baf3656 -2770: f203c0e45cba87125821039a9684776a -2780: 3e643e62e304e4415fa1da342a340e0f -2790: 5b55dd8e791a017b4f4815582103b115 -27a0: f1192c6b241864a449e73eba9e80f1be -27b0: c35a6f73b375ba28120e1438a9c95821 -27c0: 02271a71dbd6552ea784127be03cd7f5 -27d0: 86d9d2711e9eb8ade910575a953e19d9 -27e0: 1a58210271e136f3331dd4312677cda7 -27f0: 22e034d754df0f3d8e5c59d17d32a1d6 -2800: 1e14c543582102dcd99497eb6943c35f -2810: 891a1962c7ecca1e4d0e602c09574e5f -2820: 3eaf370a6a45585821021ecd79c46438 -2830: c0f541391cd254ff92ca5f91e6b40037 -2840: 942033a814330f8f82f758210281b512 -2850: 67eb03f4648f7aff3503194287acdc33 -2860: 05937f73708e5bc03e51a8212a582103 -2870: 1fea2bdecce55e50be1500a6c5c41676 -2880: faecf3a9a4047f6468b3a5bd6b369ad7 -2890: 582102aea942c7f8c8c62ec210e1f5f1 -28a0: 4a67d4aa4ec25931d5c5949f524487d4 -28b0: f40d3e582103e379078c79e6da5d8055 -28c0: 4caecc67fbe822d4042f571456f82b38 -28d0: 47ba9ff5c78f582102faac20fbbca846 -28e0: c848d6f03bf4725d90570f234225eae2 -28f0: 55e42bfdc038156041582103fed0a0b2 -2900: dbb9651ccaaafc069aeb90e92f5e3205 -2910: 5a333d24dfb8aa57bb017d0d582103f5 -2920: 3867a60be1f87a67de1eea7758816782 -2930: afcadf544d56db89ef3163226311f958 -2940: 210332e55914d85f4e0705ca08df93c6 -2950: 23292ceaba4eebc50cfc60e73ba1560f -2960: 01185821029216f2b476da400f1bc919 -2970: 84d6b77a9d65df371c1d8e086d3b3173 -2980: 0370a9cf8258210226982ca5b608aba9 -2990: 6cb0fa9ffa4a6bd3e6b305a2748aafb9 -29a0: c4e5acf42ff67b0f5821030021f75dba -29b0: 2f6fdcc89d8294652f57af2c572c3c3a -29c0: cf35c9c8cbcbcf34397fd0582102fb7a -29d0: 6f0ce1b31c014c2350285cafa4e980bf -29e0: c9581af58de25942ec278681ecbc5821 -29f0: 02e20d1d5e5526009ea8d9e0ad9b794d -2a00: 170f7b08d32afb868b1ebca5a392ee5b -2a10: 5558210325418a42bff53c36a4db3c5e -2a20: 814f2f6f47d0cbce5dccda0a52adf365 -2a30: a02bf7d258210339cad0673b44d2d3f4 -2a40: b9dd9fb29444179b2928358fca04bdb8 -2a50: 6bde12700f3e1258210287fbfb3507ca -2a60: 25595090e2386bbf6c6c259c4d5d73d1 -2a70: 2bec29506927871e8fee582103d3b67f -2a80: 99285f29688e8afb72a3ae7b58e393f5 -2a90: 76653a1e799ac8df45be2604d8582102 -2aa0: 18093de8f8c6c6d861827b37f76395c5 -2ab0: 72865f0773f4c630ba5b960a61da8c4c -2ac0: 582102780e3afbf34fa64865ae1b3c5e -2ad0: f000d0655e258d6377b72e1974ffb149 -2ae0: b72e7758210274a39eda462e88ef223c -2af0: d117facf8054ced8ccd38b7cd3ecc4d0 -2b00: 690475fdf1305821028727297ef65650 -2b10: 1ffa45e1980686fe43ccfc1ac83f1a18 -2b20: bb022a3b369a9afda258210247a82188 -2b30: c396bf163fe909b31d84df62b3957c4e -2b40: eaec873bec46de97c255e816582102c5 -2b50: 2e101acdf1a1a2ab14ff860190c822cb -2b60: 540fb8be6182396714246aa383362958 -2b70: 21037e89f2a22e0a72ecabd613457eb1 -2b80: 3926c0a472c9d682072d4ba8a4c9bba8 -2b90: 46c35821032e9e0165776319f4ac266e -2ba0: a031d3cbe54c80be7cbdf3fd41ec0727 -2bb0: f8ff2d225e582102c9a12fc76075b34c -2bc0: dfbcb8ef43cd9c50fb83d821fcb74ba3 -2bd0: d268e4d2554e4a1b582103fae79aff9a -2be0: e5c46496ba21b284c6d72c741f4361a9 -2bf0: ab4279aed334cf930c9a1c5821033919 -2c00: 15837b50e7dfe05e0f4f652344f97db2 -2c10: f1877e69388860f6fb91c355e6685821 -2c20: 02f508b90df7e220e58b9accd1d95a60 -2c30: f52f273ac3200dc107223b976dce3dd0 -2c40: 035821031d6cb0cfb5af74f1a0710765 -2c50: 782a3002f5624f5fa4f46e5db6d15a7f -2c60: ef23f233582102ea1a52058e8890266c -2c70: c91b66854e10ba29bb262e3aaf51751f -2c80: 10723b425d1c2c58210376bd9f009492 -2c90: bf352b42cad1819f9ef980ae691ee45f -2ca0: 2bde8cbf0d6be794c82d582103af7635 -2cb0: c01233b16eb750b4dd78b67294d2033a -2cc0: 5b29194a052700754bc82f385a582102 -2cd0: 7c146c55710d1761b2dd3ca3986d47fb -2ce0: a1e9beecb503dee3e029842676ab96a7 -2cf0: 582103261e1fa9ccf2e2813cdebe1e5a -2d00: dae115269f7117e2278724d2342c7649 -2d10: 400d03582103270522f1acf2e5ef0c31 -2d20: 5ce8ea054dcb66f8e4d733104994f3ae -2d30: b23ee2ee8dbd5821039cca00e3e19a2e -2d40: 28aa960a88a9acf0dff97342f2fee6f1 -2d50: ac88d0c38dd2cf155658210217949f19 -2d60: 08970829c2e9ba9b4331b8515231ee34 -2d70: 176b15c462b1039cae60ede35821021d -2d80: 71c5c7a50b941fca415641d78df3c7f7 -2d90: c8bc55deb0cda7c202c4a7cad8c71858 -2da0: 21026dcd29aa01060a3ff1deacdb2884 -2db0: e3df763797e4a6354f6196c576896611 -2dc0: 7c095821032db406a7a414e35a7789a7 -2dd0: fc6d52d0722a6f8f389bde9149641547 -2de0: 971f8af720582102088bbf647f4e275f -2df0: c979a1e98758fa088527392ae20e906d -2e00: 59fc320b0c38f98c5821034b21f7e724 -2e10: 0bfd97be1d34671ef9517a4501935f29 -2e20: 6652765c2112d7a258c944582103aefc -2e30: ec4a3a3d144aefd1525d50999d2364b5 -2e40: 24484851bbcfa51a00fb857eec985821 -2e50: 02284c5defbc9bfa67f8e4cc6ca7e3a3 -2e60: 1f3bdb727b4558909385b1f7e66e7dcf -2e70: f158210353b3de9275d2472c385ffbaf -2e80: d4dd770160213064cc785099d876ff08 -2e90: 0ef6e86e582103f4f4d8fecba01260c1 -2ea0: 4f7e9e81c417332faab0fca593b2a630 -2eb0: d702ff9a74220f58210367b0f4556813 -2ec0: b937ed1f264f0794c6d0cda4e30814d0 -2ed0: 931c84892e0893d6a0dc582102c9f41c -2ee0: 87b084ebdb24ac6a5014fd263c2b9248 -2ef0: 12183509d08dc4b2fa1fd46ae6582102 -2f00: 4924133f1ccd6517e91d5c1a19f42a91 -2f10: b4f05835fc77d0224556da4032a7bebf -2f20: 5821025883b5df946d062006d851fd91 -2f30: db33ba65d3ab36674ab620ca3c2db810 -2f40: ce64d158210237e49467ced83e47bd8f -2f50: 047ea04044ec3e3b348e58764dd16a21 -2f60: 967a3d8a35fe582103329242d08a6a38 -2f70: 1c0f14b3c9331d77771f0a368ce8ddfc -2f80: 3162d0c853474cc89e582102f99c7963 -2f90: ae7de4946d017ed3e687402c79b613e2 -2fa0: 4134b74b1c0c77199373080b582103b1 -2fb0: c4e71c5b07eff98a90c1990b59d35939 -2fc0: 3b0c99eeefec47ad2a0498db5c100a58 -2fd0: 2102b23be494ba848feeda986518b4f9 -2fe0: 36981f8c50826b0bd780ddfa41263f9b -2ff0: 4ef2582103d36ff84a72d0c6cad82966 -3000: b704002adee57c30f1fe5c073007e0f0 -3010: 1b3e6fb87f5821021d387974b3acee7e -3020: d620a68a977a4cce40c277a1c79806f3 -3030: 2d59ddbdb9e5c0b9582103e7ca1272dc -3040: d09dc599adcf13d2cb07859faf9416f5 -3050: 7d44b145236617c356f9115821022ee0 -3060: a61e3855e5c5ec575d1cabd936cca187 -3070: 38f03687d112730171ece388f57a5821 -3080: 0383b051fc5c6484d024867af1a99cb1 -3090: ce764b21cb7ac6f493dd797f07e184cd -30a0: 0d5821035220abb19bbb372df3ef0964 -30b0: 931fc0199197cff16f6d60cb1053117a -30c0: 41bffda0582102e72f78b30caae60b40 -30d0: 7a023f51cdf07b3663ecdff16fca6782 -30e0: 0bfc76ee12123c5821031e1ee7044aa4 -30f0: 4dea84a39f2ed4dd4326e7b1ab2b7ba9 -3100: d986b4ef43588c0b3d755821039b142f -3110: d0982950c351496b655c53f55a995982 -3120: 29da60544d6a890e5be83174cb582102 -3130: 2d31ff83e3b2377a54adfc5d9b4c4396 -3140: d3985aaa9903ae32da7a333a773775ef -3150: 58210371e52589407b5538e758916dcf -3160: 38856403274047a264a24dba786ebb4c -3170: 96b2a158210212a18e37b48700a11bc9 -3180: 1e18aeb6337571edf45e342809d475b2 -3190: f907678f74ac58210230b64b6bc48415 -31a0: 80fdb4690714e76ff1f7e1eac80a78bb -31b0: b701895e95e69a5770582103c76f39e3 -31c0: 9ae03f4fbc8f2f8ac41f35480c59c9ee -31d0: 85c868566760399220e826d4582102a1 -31e0: 045ed9ef4b18802054108bcf85a70f93 -31f0: da63d1fe2a58ce0a4e5fccf48daefa58 -3200: 2103e9231b2593f2acb8783ce4ee8895 -3210: 91943d4f6e3acc7c0b409db5bb4f4171 -3220: b278582102c039b3950566dcab1f0041 -3230: 0721c0ae8b4493fdb09c920c10059166 -3240: a3510431ab582102f8dda8d7d7cff6cd -3250: 4967130cf62faec6446f8397a3418b9d -3260: fd65c115c6fd6c6d5821036ec27feb98 -3270: b7e5e658c89c8d2db31b1223ba6f5214 -3280: d39c9f13202b4f28f25ae858210348d8 -3290: a2bc0beb4442e7cbb1b6045ffec86609 -32a0: 49f4b7410d901687519d8fb62a5c5821 -32b0: 037af7195291ddae0885af924af02dbc -32c0: 883b2a8abb121f1e73d1a347f0868452 -32d0: 4e5821024ab359ec9f570a0730676cf1 -32e0: 8a813dcecf0458678c784a624dfe48e8 -32f0: 7be4531e5821021823d6c4d1053c2665 -3300: 3490bfc5f2bb82e8cda5fadd8a92ab5a -3310: 23cdffbad4855f582102b0bb0c6c7a9d -3320: a17291be339cf7891ff99cf8be534f17 -3330: 3c1bb01d2767ba6393515821028b710a -3340: affdcb2500b74377f8addcbb9822efe0 -3350: d644c3b2fdd9a922d4499e64c5582103 -3360: 3c24de3e0a1da000cea36b7101962aec -3370: 9115b6fbeddefd64340270b6632032bd -3380: 58210246a5697011f335afd54164720c -3390: d6163f08ee5826d6ff2641a663438e40 -33a0: 1aa6a15821033e36071b1959f785ad5a -33b0: dc251ad97c1a6953edb883ebcdec0ecf -33c0: 29599d0cbc8958210259bef980c0856b -33d0: 1817567759994791d9dd43a860ed4c74 -33e0: 8e39580b176ed450cf582102a9010b01 -33f0: 92cc0379f996a8e4c280a78e6dc45a4c -3400: c6480c463e514b9845afb3cf582102a1 -3410: 12af16bea7c14b088c0ee092fb913ec5 -3420: 5ee7d8e973a2e50944c2f906f7338f58 -3430: 2103f3bc01004b39eecfa3441ed94991 -3440: 022ee8c9263e58e3c27b3a25bcd6c5fe -3450: 53805821034b6c79c98b4158cf9bcc2e -3460: 8371db208bd757fc0b949196a9315050 -3470: d7f2b34b585821022f785e91f212d468 -3480: a4395f60f2ba2ddd58cb8c1f32c6ffa9 -3490: 65578992458ab6f4582102c3d0f7a6ee -34a0: 23db0166b8e5de7cb2144eff2a6aacd9 -34b0: b51076e55d07122386fad0ff diff --git a/eras/byron/ledger/impl/test/golden/cbor/ssc/CommitmentsMap b/eras/byron/ledger/impl/test/golden/cbor/ssc/CommitmentsMap deleted file mode 100644 index 2d44d864e40..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/ssc/CommitmentsMap +++ /dev/null @@ -1,853 +0,0 @@ -0000: d90102818358404b6d7977346c445345 -0010: 3553346653483665744e6f756958657a -0020: 4379456a4b63337447346a61306b466a -0030: 4f38717a616932365a4d5055454a6645 -0040: 7931356f78356b82a158235821022948 -0050: 42accb1d76aaa64bc1af231378e1a01a -0060: 67c0fc8010824caa0210970275c49f58 -0070: 235821029bda1a8a05240eab89934d68 -0080: f93eb836af82e7acededbadbd4bb9627 -0090: c8561ddd58235821035ede259e970544 -00a0: 9b2e50731e76417b854b45d2f67d2748 -00b0: e136ff95e6fbaaefac58235821039c24 -00c0: 8ef9acfa42b56cab4adcfa8730ae39c9 -00d0: 226be5fd84be620483090df4ccc95823 -00e0: 58210297a9465b5bd034fac6ef77868f -00f0: 9a076cf5b9d6a6cb357857a2ead49c01 -0100: b9e388582358210312b4b09996ca08b8 -0110: 8505272525168bfb4c4ca06934c1c2d5 -0120: 45b31ccf0b238ab75823582102cdad51 -0130: ea02295676cc0c0fa49d5e7d317ab477 -0140: b7e8a0289bfa15631d6aa52dc2582358 -0150: 2103bd385b55292cdc74674d87fddcdf -0160: c93182b9019d115354ab2709ee515eb7 -0170: d8f35823582102dd5c15a30b24e96723 -0180: 191e330c43ad4b47db2593c6b1c27a11 -0190: 3ad15b9fe18dc358235821030aa0f61e -01a0: 0449d7dca6933936f47853d7cbefa426 -01b0: 57077d3c92da4118cface1dd58235821 -01c0: 0241906c49e270c1936cc671a4cc7ec4 -01d0: e8a7f8551a8850e29245057ad4b042f5 -01e0: a35823582103a93e57a31bc616cf5017 -01f0: 2372c10b1fe2a5f18ebbd037d0ba716b -0200: 54cde1c1b2df58235821025de1b79255 -0210: 0bc5147f7f14cc227509d6a25ae20047 -0220: 65214a8647222dab33897a5823582102 -0230: 933531e19aae89f085c975393731f8dc -0240: c7fe340847f4d6c7a1a0c4dcc467eef3 -0250: 5823582103cea0a1183de2f5a2205637 -0260: daccec9a0ea317113b7782bd8d78be75 -0270: ced1dbf3805823582102664b4ebfb08c -0280: 14a7c76bcca47e1f37dcc35ae1443f8d -0290: 2a90781ce65dccd95f51582358210348 -02a0: bb9bfe233fa7da0ececff9a33388791c -02b0: 911e91a0c7c5956650b71a5f3659ac58 -02c0: 23582102da49d6c104fba07b1b378967 -02d0: 784b2fdb111d8ab1938a4efe567a7811 -02e0: 53f3b22a582358210242a9de48ad25ca -02f0: 196b50a9cb46e743fa7aa16502a2f56d -0300: 0d188c227955773d505823582102e58b -0310: 98c63b0760bd0c1f99544be9ce7f3f51 -0320: 90b07f7a89515c0cd0325cf2d6c55823 -0330: 582103314be53fb69543884c6ae500cc -0340: b1f5f0536114fdb29ee2102c0c348551 -0350: 4fbed55823582103a52649a80ea34332 -0360: 08b32405a9eda84edc675236bc141754 -0370: 154ceee6f2b40c025823582103225dbf -0380: c0579d5f04d5538d9aff9bf5f0d7d6e0 -0390: 90d47f083451b14c4d7480b161582358 -03a0: 210203b8836c8f06927c339806e1600a -03b0: 36e42eb810f8135389fe4d00c16920b7 -03c0: 578f58235821025a0bf00da25c5d16c8 -03d0: cd712d35bd5f64e88de7dd7325c0f342 -03e0: 706e4b5699fd2b582358210202e40fbe -03f0: 8a6d76547b759c4af1f2f77d57acf70c -0400: 94a78bf7846b327f6cc52a7b58235821 -0410: 02ad107e6aa56ba738adfcfe52216dc0 -0420: 7518a97f03c23ddaa0f370f69ffb7362 -0430: 845823582103392e2225bc6fa588b0e0 -0440: 435b9e9467090c9cd69c2cec13955eb9 -0450: 9a7a1a7cbc745823582103069f0e42d8 -0460: faff164f3ea7c93fbf35ebb4851c86b7 -0470: 9d0b8e23bcff6bc6bb49e65823582102 -0480: 1cbefa934aa9ed02ead02fd492f98623 -0490: b903761782f1b23de10e26d81e82e561 -04a0: 58235821030c14f1393d9787e6034400 -04b0: 31b86ca9b724cf12955222bf52f8f272 -04c0: 046ea991dc58235821035f1faf47675d -04d0: c23f1854598d42e1e1a9df161a48cce4 -04e0: c305aabadc90f2db9a135823582103b0 -04f0: ebffdafdcb12cfa4e39eb030cb5f4dca -0500: 4a92f8b888d7e450d269426c34c27c58 -0510: 23582103681a2b075b44b296fe8852a3 -0520: 07a93c77cb4e2a927bb56d6f370a061d -0530: 6a63dc1e582358210272531932815e44 -0540: 3f1bf81daec10ac575177cdca9ac1f75 -0550: 74159f5f4bc6807f0a5823582102ed69 -0560: e79cdd488880edef68fd2b5b5e6add11 -0570: 374aef21b407eb15b865af95397f5823 -0580: 582102e611634b87df1c402d7580a6c4 -0590: 2eb701a335cae922f40c6d7c99532e11 -05a0: 0b74445823582103fd56a98ea60cbc67 -05b0: 9f15e7e0fea32f992c66f9c7cd9cb53f -05c0: 77dc537c3a3eb1d15823582102721c2d -05d0: 0420fffda3c066bdeababc9e72c89bed -05e0: ce37faa48751a4d114b4a7e185582358 -05f0: 210379121a1c21416df70a0d3cc7ad61 -0600: e80b77fbf8ae9f47287e7baa5541a0ae -0610: d4765823582103cfda6b11727437c955 -0620: dd6105df50e7c2f725b1d969533c0ef2 -0630: 652226d105d3f25823582102f05d0675 -0640: 0c33ffcf12229c0b589e94faa9dbbe23 -0650: 2c1e34ccac9da60945f0449d58235821 -0660: 0353030c6515d2287b040a7e9bd6ba62 -0670: 362a472c58aac501a0f725b0ddd902a5 -0680: cf5823582103bbc6fd88c2e6426e07c9 -0690: 134bf8ac4f51fa4b2dc9ed4893e95ce8 -06a0: 53ab7121af085823582102b5c89a77ac -06b0: 5181629aae43ec47abab09e0901921af -06c0: 2a60c7c4f757e8eba63d1b5823582103 -06d0: 7cb53bec0f9966d49845a9a21742d747 -06e0: f83ce4be419a4f6e618d33221ea5f13b -06f0: 5823582103ed9277f3d95ab3be29a4fb -0700: 618523a50b12aea175b4e77a61697288 -0710: 7cc6173e9a5823582102a0fbc434540a -0720: 32aec22a3aa66f405dd2505773d8be26 -0730: 86893e575173d126f0ab582358210399 -0740: e21fc9573fb5b30e54ed2a114de5ca7c -0750: 6354156428ff4a4dbc39f678496b6c58 -0760: 2358210231e013fb9001204a89131cf2 -0770: 8f8951a462605a26a6a8d2d35ab757fa -0780: 0fc1ff555823582103d7c2b648b0bbfa -0790: a90a1cc9d892559fdcb37a0064a9c055 -07a0: a1a2e34b4d1fab27af5823582102aa5d -07b0: 3eb9699f5babc3fdc643464c6e58a5c3 -07c0: c5624c86e32fef3cbd5f687752515823 -07d0: 58210380060a98e1a2294858d35fb1f0 -07e0: a52128353d2d77ec97f151a9fec503cc -07f0: e778de58235821020d422e87ed24f8f4 -0800: db042eb2c1e829e1e2484bde74cbc470 -0810: 427a62792901617c58235821025a10ef -0820: faeb3cd4ce46b9aa4073b9ffce8b701c -0830: df4ae49eccbe5b3293e3203884582358 -0840: 2102ad14cec8646df8d75a5ad8d9001d -0850: 280309301bd58c85f30a9a79908f70f4 -0860: 1a0a5823582102c96da83d747d2231b8 -0870: e08807949c2d148a32deb4bf36c6e935 -0880: 3df94fcce70de55823582102b17c8164 -0890: 29519ec8972643aca5fb75e398171882 -08a0: 2377a82d4e62c9e6f294bca858235821 -08b0: 039a8813575b955da94f31315580ea9d -08c0: a192703c28210cdf7a16e4bef9f6a00a -08d0: 2658235821020a36a508e62aa38fe3f1 -08e0: 531e00a2591a8c690826d52b6a97b97e -08f0: 96a9d1bee0275823582102394035cabe -0900: 7def188134bc488f8603c52f6f803835 -0910: 28aa3373aaee4de7f27cae5823582102 -0920: 21d12296f4c8c0ca015dbcfd92a851ba -0930: 4df2a4a4936c65bed2ef493b402e374e -0940: 5823582102dbc9434aeacd5a17e302ab -0950: e5ed4924fbca72d52eb1abbcf19e8530 -0960: bc9b6d19855823582102478daf056686 -0970: a38e929db041bc3107cf5baa82a05a63 -0980: f795fdaaea29ebbbf1ce58235821021a -0990: b04732b0eb854bea8122eec0bed21b33 -09a0: 34bafac2cabb35b4f07fee9b7c0a7358 -09b0: 235821025f68ef8c389765124ca9ee29 -09c0: be7f47858d6d9057a2255400923bfe0d -09d0: 7b2c125b582358210326820323c581e7 -09e0: 59c5e6604d0b457576ece4469f508f70 -09f0: 7bc6272dc38c0df53e582358210399b5 -0a00: 746088d1e4a4433579e8667412c28ca2 -0a10: e5837f392956ed19121d810fa3f25823 -0a20: 582102585d568afd893e50039c627b00 -0a30: 747dbaf8ac2cdb773a356a13074396d6 -0a40: 905c8a58235821020f899edd7da12fce -0a50: 02def2154d313c04cb477365a9ec26f2 -0a60: fd65ec5b64504b46582358210359fbbe -0a70: 6a834552907d521ce2b34d66811344f3 -0a80: 45a113cea25f0eaaf3613f8928582358 -0a90: 21021ff9c399c66e4544c1ea5ece97e4 -0aa0: eb7301aeb82cd35445739712e0acf9ae -0ab0: c69d58235821032a5238b1782b657c3c -0ac0: 85a6c4ebe2cc73f5e410fc683fb34816 -0ad0: f34d7365d6be5658235821021181aada -0ae0: b475dd407fc7e0ae4f95fe96539b33df -0af0: 762c4247888d660876ddd08e58235821 -0b00: 03cafd90dc39ae649cc45fd42456a4da -0b10: ee0525b720235830f0bebaf6ee6886d7 -0b20: 1458235821029639a9d47b75c00b2576 -0b30: 9d49651ee459d9ce053e841ff08f186b -0b40: 011ef41edaf35823582103c2edee8ebe -0b50: 749e5075d3fbb58a977e55bbd02d6a59 -0b60: ee590487a691ea6e91c8315823582102 -0b70: 8c67c01e2099743d6f591794996030f4 -0b80: 29777709edf1847866987e9d3cd42171 -0b90: 58235821023db9a9befd52097357e8be -0ba0: aabd266ce41c93cc618dc0abcf60708c -0bb0: 7e7e49b3ba58235821032986bbc8c170 -0bc0: 686d2a2117cd1f0374ccb8137570f219 -0bd0: f08ecc9fd195d6edf203582358210207 -0be0: b48dab2be7a90eb78d07578421de6455 -0bf0: 6e35429011ad3f3d3e5ef58568b17d58 -0c00: 235821035bc3bea6bf38100a2dedc0cf -0c10: 5f64fdd2a44b1e904a994d4eb6d13dd1 -0c20: 8ed4b11f5823582102417c60e68aa14a -0c30: e6b9497a91d2a7bb3566eb3e8563686e -0c40: 34e3069fc98f5a8a50582358210279cc -0c50: 98764a9869375484da2ddeeb5f6e30fd -0c60: ad8ba968843ecd4080f5877aa1e45823 -0c70: 5821026fb9617b52e1c97d642dc556de -0c80: a1aaf45c488963bf74a7fbedcfbfb12f -0c90: 0f70ac58235821036e3ef9600db5fa54 -0ca0: a2ed39b50124c5cce767acee72e135f5 -0cb0: b4b38ae34b9443615823582102a8243e -0cc0: ad08b78c4ab193bdf5714bad7789fefa -0cd0: 748e6e2916361f859e5a369e13582358 -0ce0: 2102fa95d06cf99e1e370c414413ef53 -0cf0: e263e14499a53e9583bff1b284737225 -0d00: 22ca58235821035e93c1bc2d8d8b7820 -0d10: 98d21eea41ea9da96c131eaa75d0b0f9 -0d20: e4803ed03d50b45823582103be29eecb -0d30: d531fb36a9e9354573e4822f7be96e3e -0d40: 677c04b87a6c8e44d60e09d858235821 -0d50: 0216cdbb428af2a4db16fc1472471429 -0d60: 606679d07e32d08fe3330be1d1330cb7 -0d70: b45823582103ea2204c486a1b6a08bc9 -0d80: 26494867ca515aaf74e6ab628b26bdcb -0d90: ee67a774b5575823582102e95a1a1af0 -0da0: 909ff0cad4f795659aa867e576a15953 -0db0: 4f1eb1b954c362a90502db5823582103 -0dc0: b931462266dcb681864c6bb6705a3b46 -0dd0: 8d48f122658f85f32f584728b47ce50c -0de0: 5823582103faa14fee33584a195b337e -0df0: 1e987319200d7af58f61796220cd9f87 -0e00: 8e6279c33058235821023cca4e606148 -0e10: 44e29989964b24e27dd95917d3131ab4 -0e20: 97ea4365ca6301fbbd085823582103c2 -0e30: a24e0ceb6084b99d9d7677c2cba4ee89 -0e40: e324cf2f98561b821820816c7e033c58 -0e50: 23582103ddb922d834f548f7225311fa -0e60: b5a3029745315a23faa836418046afa7 -0e70: 0dfb583258235821021151a4aeb22a9d -0e80: 3c229703fa512bdcf1f8ab2e841c1f46 -0e90: f2782781a12d83752a582358210247c9 -0ea0: c174dd394b279b618d3f29f173cdd3d3 -0eb0: 19c31ab5d934d4b87c1c9d0c29455823 -0ec0: 5821037b1e9c4489e15ffb2768699a4d -0ed0: a2b0e0794eb76973dc09bcbb7074b27f -0ee0: 532861582358210357aa30ea541f976a -0ef0: d2541f706a8e7b502ba27a3f620a6038 -0f00: b0bc0fb7d6c8b1c15823582103883e22 -0f10: e6b434ded59d86b704be8a238dcfd83c -0f20: d30369ce5af24131cfb66346a7582358 -0f30: 2102b309ede42d0f23a4a2d26ecf4fae -0f40: 96b8d6c983a76c4f9d99e4fca0bbd61d -0f50: 32eb58235821022fc25316fa325e39bc -0f60: f65f62f61aab272880070f6f19d92c46 -0f70: 3f46cde87d462d582358210365b8a991 -0f80: 05b42c8d4941a6df156f4f91e71e9b7f -0f90: 47a54163c80dcbaa6700ee6358235821 -0fa0: 031b0f7ff03267fdf86479af1d66c199 -0fb0: e2ce9737b555f4904bab9573adaa744d -0fc0: c758235821021e4dbd1af31501a42e17 -0fd0: ad8693a23e5c22b4df3adaeebe164751 -0fe0: c2f25bc138f7582358210368db19a232 -0ff0: 010e5a0dae6a0964134811db95ab3e81 -1000: 5ec060d3608fd8acae99855823582102 -1010: fca6025604a42552adb7ff53dacf4bfe -1020: 8bf00a1cc75786e5288b99ba196b9bc6 -1030: 58235821025ba093fabdb69404d09c47 -1040: 540e43188deab82a533fa1190b0f1a4e -1050: bff522fabf58235821022799c140ffb8 -1060: 2ec905bdeb9b3c21f063797f1799fd48 -1070: 59e15317b6db0dff7ed9582358210202 -1080: 0c81ee566c7ec0f461e5c70503a77690 -1090: 69fd0b44023a32d0e520a8da1b53c758 -10a0: 23582102b8e247e500b39c661635b0d1 -10b0: 5eb677ff5e41485054c0dd58863e1de6 -10c0: cc824e1c58235821027a0b0c681a97c1 -10d0: 3a8b6508eb34e708f8ca0d700a2250fc -10e0: 73e2386d52e75877b958235821033a9d -10f0: 7756a4e717e6e77c6988e6036d63b4cb -1100: 3e857b9f7c2fdd3e8e510a291aed5823 -1110: 5821023bd4e95e9298f406a6ff23e877 -1120: 818ccb16ba596258d73f7a475f7748f9 -1130: a987395823582102ffd0491ea76403ae -1140: f978a4ee424f051ce0bb2c4b52a2e552 -1150: 7741724887470d9d58235821022d74f1 -1160: f254eee15850682d3ecd151f5909c964 -1170: 0f9be90d3672f1866fe59487fe582358 -1180: 210356044880b5cd8f1d2aabc5863ab5 -1190: 4ee969783196add1a68dfc05de5dbb90 -11a0: 7ac65823582103498bafaa458ef661c2 -11b0: 3dce75a8aa854cc5ca6b607d2f2d9363 -11c0: 68fb49f1d6c3f15823582102e2e19c4e -11d0: fe73abb676f75b5604b80f0bc41a9f42 -11e0: 075b244086275afed274bbd558235821 -11f0: 020867b308577d17c97e5017a9521b94 -1200: 722bad7bfc63fb7d0f0c8c2ea01676f0 -1210: a65823582103d18d83e2e7f147dc4968 -1220: 54bb506e4cfb0b1e601d5c604cbea0ba -1230: cf3e31e705685823582103d985aab246 -1240: d1f12626fce59904db1ca4094e40073e -1250: 47a7f6142d7dc311cd03f45823582103 -1260: 857808b71199e7c8e727cb316571c621 -1270: 368295bc9fd71d7aacb8c90b4dece1ad -1280: 582358210245c75a4056290f04330665 -1290: 664b0f72421227dda013c444c01a69bb -12a0: 51b3caa6d95823582102272fc446da2f -12b0: 3bcb1c76836f199f492b420581f42c59 -12c0: 78de09b38d5ffd24b4aa5823582103fe -12d0: 104ffb91c2640ded16388cdd29ae06ed -12e0: 8503da5e208307c46bbac2c515557bff -12f0: 8458210231bf6c2d1b1494a030e1b62c -1300: aeb54f86d4d320488e47b2e93a82eb83 -1310: a595841558402bffbc415f413e488ecd -1320: 66f28d0c6181dc8ea25b814f98b0dd1b -1330: 92526013e5ccc47696934669056e0442 -1340: c802370c0769cb12a43c7461df1d7d1e -1350: c6199799a0fd591028a48563ff5cd6b1 -1360: 87777cffa83c07daecb666bc8a610fcf -1370: 6335c47e8f1056e96300000000000000 -1380: 8030c44e45a3dde43de4653c305c3807 -1390: f607ff9bd1794642a39d709a29030a47 -13a0: 033bf867ed36873376c438fa5b7aba7f -13b0: f94dbb33c8a1428bb6a031bb1b1f0276 -13c0: 637b0aed8b66374b9d4f5bc28df2936e -13d0: 97366dd8eb2982d8fe051486243ca7f5 -13e0: 813a35faf87edf75426d7a97761a6297 -13f0: e307634837b846fce051c54e76eeda2b -1400: a71ac78627b7992c556bd9e83276667b -1410: 6f13efa14f4731554ff946b059a56870 -1420: 7f59ee1551faacb2f9077613c8ac30ec -1430: 8b6d9ee83d4c179f3aab0f1547ca032a -1440: 455e8d390a29502c95a2c759b25e1cf3 -1450: 65ddd15274448a2200c4be12f84d3a68 -1460: 4715f83fe809907b10ebfb56dfb5d154 -1470: 73a4522fe37877a0a7ecae7ed95528a5 -1480: ad1a8f58f276e2488ada5f4016793e2d -1490: 3e8189befc14e9d16c4aa53ea67c66fc -14a0: 8a67125e2d0f47502306d43ef20de7e5 -14b0: 59aaf09f8fec8c8751457a7634acb8d8 -14c0: 1068430a65e77bc0b9d39fb87000a715 -14d0: d8cc877dc846c53039afc5d431272d03 -14e0: 686befa558791f3bb41bee4a1679739a -14f0: fe54b02a55b37d9b3ed6c0d94f6eb5f7 -1500: 553867805a5bbd88fc5224b388fe0824 -1510: 25bb3e2f30f90bffe97c5687b352bbbc -1520: 4030b137e600531f7a1030db35c45b11 -1530: 17bc678c1d290584708b6ee6ee6eedb4 -1540: 928ad61be1a7aa7539b3676bf94bf9c7 -1550: a6e6d0d8dc2a1e7812c652f0ab0899a5 -1560: 95373d7b16757d8a0f83c1b5bde97b9c -1570: 9619f8e14cbf9c5f3ed3946ee5254816 -1580: b3362a1b6d034ebcf0818a4b65386389 -1590: 39777e93b48daadc3dd4348aec611db3 -15a0: 9db2e4561e9051960bcac8bb97d793a9 -15b0: 9d1d8b71de99a2eb3c6c09268957609b -15c0: 38ce87d79173db080e79e92ffcc364db -15d0: bbc426304b2bdc834d15cef6688753a0 -15e0: 114eafdc68f292ffe0249835e70a2808 -15f0: 0577e24245d6b6f16ffbbddadd85a948 -1600: dfcc67e83e8b0c1ad8913039ddc62825 -1610: 70c3f8a445fa64e25746675324a17250 -1620: 2bdb242aa68e53e0233572f42250b037 -1630: d805e8bcff1e86a83fafc322b1cbeac4 -1640: cacbcf6fc9e06f2a78d14685094b7b48 -1650: 0522d9cc0ca8ab732928654fdccf3238 -1660: 7e5933747fffad91fa1d09076822e896 -1670: 44d07aa5fc7a441bd1aa530e1ca040d5 -1680: 0e92381e80dc7e9d456b7dcbc3ed1421 -1690: 72a8c4bbde7b14aa5d350f368e4e373a -16a0: c5de34510dc996d06fdd90729b5f0e4d -16b0: f4a25427bbadd7f306a8bffde03e3abe -16c0: dc185bcf61af2f66b6c664c406c2eff8 -16d0: 8ed5d411eecddeb4031f0b701bd5d5d8 -16e0: 20a8c475d374c2be4f6865c51e512cb8 -16f0: 35ef52f791acf552f82fe9b4107acdbb -1700: 375e13933e8649b884e0e0a5d6993759 -1710: 19dfdf72250d71f1666caf456218ab18 -1720: 009b5defa4c93003cac1e3d325835f93 -1730: 69901fd44e5cd690613bbad8de14cf75 -1740: 98f469ab97772f6e25f8d3bcb78461d2 -1750: a8141a067e95ce86bd679ea8ab289ff0 -1760: 48dafeb353c320a8e7f104151f695f04 -1770: dde1c34fdbfc57b6949e4eedbf2b1cbd -1780: a7f365d20265d0dba4c98df4a7782065 -1790: 8325c33d018f83d88c4d8f8b8c8ab86c -17a0: 21307ebb593587173149a48095d6825c -17b0: 0563379f917ea88b62eaa575a925e0e0 -17c0: 6f1b3e005e4108df74b7f7d8f6d1950f -17d0: 8b6f5a7869698f000da9646e96cff99a -17e0: ea676cf6158ed72ab3ddb4c93047c0a6 -17f0: d94020e1d34a11cba66e22b244f6f95d -1800: 67741ead913f0e1cf311485f8ba5d234 -1810: 4bb0a62737c5f1bd1bcf919b076eb424 -1820: 57f608d235ea242c4ab19644cb1e811a -1830: d40971194ecfa55165b302a49966f3da -1840: 12948d69ffa13f0c2c2431bee2380847 -1850: 6cbcae72a6fad303dc2dacc05413ddbc -1860: 9a3e65dd3fc13bc2147d4e203dd6fa2f -1870: 9c17c9ed3926fc99a092a34d5aaf933b -1880: 8ecc8d20e69616695c0f535e5012f461 -1890: 9bf78981319e58015a98adbcd6df4093 -18a0: dded06e591ae9bababd6b6471ec4c418 -18b0: 9eb7a9e9610d5509dc47b5120701557a -18c0: 82e11a95ec8b7c1ad8bb668c4ada9976 -18d0: 143fcc505cde24ed101da20ce5af9bb7 -18e0: bda369f5673776d7689fc3f479de4622 -18f0: 4e26e065e7beab58af40bd1ff0febd9c -1900: b105186b9311794bf237b6605a41774d -1910: 26e0e4a13519adda3feccb91ce9199fb -1920: 29f3c4eb90d84163b6c087f70542ed26 -1930: 3768605ed5463c837c8476fdc6e4a8f0 -1940: 1eef3e40c0e6a80151e39fb4376ee625 -1950: 9222590e9c8c1cc489b9de6583a1506d -1960: 7a63d804eaf17c58d1c53f9f4ab93754 -1970: 879ea14af7498332c79456975673cf49 -1980: f37b959b4fa0cdb0bf2499824ecc0106 -1990: 7960c64a9ef04b93ff0025db03c388b9 -19a0: 287df074f31f6bcd3eb24b9e4e1441a2 -19b0: 03dd19e55c6e81423501943637a2b07b -19c0: 5a2f9ecba8e12a8a49cfe95374aeb903 -19d0: 6f7512fcfe05df63751e3ec3bda882b8 -19e0: ee4b4f75c0ed170cdada83804ad99565 -19f0: 0e37619d1619016774457059cd3e971b -1a00: 8f6a67fac681ec136f8d80462445311c -1a10: 8c6e9aa3a181dd8bd096e651703ffb4d -1a20: d3d0b3b54a6e5d2d3c0d31995ff96a16 -1a30: ad602c458d7fd1a3db1326a601e91f47 -1a40: 60bd2d79625a0f2254832ae9e045be12 -1a50: 12598de8dcb0ff4afb91ed7927771bb5 -1a60: 7c5c98ed8a65d8d2283d6f9694d57bd3 -1a70: 84e2897c4dd62cb40a3640ae334052e7 -1a80: a51744672e3fcf7df3df77c32b341931 -1a90: 97bbedf1e3513e35a787b81fffb7293e -1aa0: 5caa758efaaf3de517b5dd47e007d584 -1ab0: 7316087238cc9bbc1139445c63c8e6fc -1ac0: 7fe7a5c58cfdaf018072ad93aaafdfd7 -1ad0: e1839a394e4a82061f2f6576c01d7197 -1ae0: 75407e23a3fed172bf4914418c3ed7a9 -1af0: a2e8ef5774bff880f8613b74befae878 -1b00: 9fc53f143890798333d0807ef25dfd6a -1b10: c532a0e9f52c308ff4d407766aa155fd -1b20: 0b268a1723959dccb9bb2e3b544a7ebd -1b30: 1ab6c03dbf501c44f709084f902f417e -1b40: e93375f565ed3e0fcbb16b3682de396b -1b50: fc9023e4a48e519cd5f1b07a43a3557d -1b60: d9168045b41b5894406f7069fa2e0b57 -1b70: e1f70a4546fc2b51c9e6ff49830dc688 -1b80: bbb174cab3638e9ac8ad861a54105320 -1b90: e82c1f795b281d35d3bc6c3e68b44757 -1ba0: b81d574e519d1de6e32c486c6bf8dc53 -1bb0: 577e19089e4aab614cda245e8c2f6da2 -1bc0: 2999e85bdf4a2ce402f18e00f7061c57 -1bd0: 9cb2a95cd23885ef2f641be6c965c335 -1be0: 283fa61b79ce86fc981d174e6be5e26c -1bf0: c0462c543160b6f3a1fe003cdc0bce15 -1c00: 91886b686e607c49e8d5f7cb063d3f03 -1c10: 91863166dce1969960b04becb9d1be00 -1c20: e9c77660c633d8bd0ef2417139acf621 -1c30: 363c3fb9cf34f5ab0b74fd0cec36a26a -1c40: 9e19c5a291f32efaff7f6eab050a5e9b -1c50: 496ed895cb474a1e12cedd9c2f1a3803 -1c60: 4e51e43ae6ca329ef8bf83863200d1df -1c70: 11f6ce312b13f1b40a3dfa19d5eed273 -1c80: bcb3c2a4d39ae3c5e7027bf3340133f3 -1c90: 64df6c5ccf0bb3f0f07bbeeb542d8d17 -1ca0: e2a3a09925cd810927f593c2dbf06187 -1cb0: 29a239848de0c40a10e4fb947206b78a -1cc0: 2e0c3c4f9fd4fc9d5656bc94bce4b171 -1cd0: 5c44768dd9882c8ed03258839865653b -1ce0: dd32a96a84b210e46a3e53fa49731d8e -1cf0: 6c31744c90e89061318ec465bf5d2f3b -1d00: ce36700dbc850ee8ad1cce8adef841ba -1d10: 9d03921a6afd1342a201b7e4279acf91 -1d20: dbb75eef924a07c19e15797e508e40ee -1d30: e5d4824f5d3e21d684f5525ce54b0e6a -1d40: 684a75608ebd31dfd06de79239cb4ebe -1d50: 866361bc01ba0541b5747696d1f0da88 -1d60: f29f63f3c4894b9b9844458c385c20a8 -1d70: 523a14ff1baf397ba985fada57c67db3 -1d80: bf7de9dbbaeb4234396641bf70c31fdb -1d90: a90de6016f601eec3ec9bbe711c3bdba -1da0: 004f18c51a45030ec76f35221d67cc96 -1db0: 3552dc4718f846a978ec870c766934c6 -1dc0: 29d508718e929e4630925e2cdc24686a -1dd0: 93f9d988c5ec9911ed60025a436cddaa -1de0: 26ced3c7d2d6cd44c49ba809f4388e47 -1df0: a098aafa99666418bda02cea492d3ee2 -1e00: 697bdfba6ffdf34cf3deb8f16da0b2df -1e10: 30cc5e47bebf01f1195ad16a3d3fc055 -1e20: ad03ce9a1fda5c9157ecf19f4b1795e4 -1e30: cc7eafd75cf0a6ac8a6aedee7abb22fa -1e40: cba2f7800b6588aedc073adc898732d5 -1e50: 7f9bc7998c4c976b28aa000d47f72a01 -1e60: be93928c6545d6414ef9292886f1458b -1e70: c7ee48c6b4a7796b3099ba04e3503623 -1e80: e8788668c87953df1be0c37eca0b6002 -1e90: ca6a4781b9667e1ffff4b38d782ff5c7 -1ea0: eacb20c1b0d31b07ea3bc191d082802e -1eb0: c74671785fc21f759fce2c118aa16b8b -1ec0: 205d58da7e17754eb1ed46f21fcb5493 -1ed0: 6d5b036a5095026e0c0dcc6f12d4f789 -1ee0: c08a37283d7d49b93271e75a77228393 -1ef0: 9e357f18aa7da928f4b302b2f603d053 -1f00: 458806bb5faf0051c59ef2a717c8dd5d -1f10: 8507452ff05d132f96364f17f465a87e -1f20: 4484bddfc7ff2249420f189cb21b7d0a -1f30: bd1ac44f9385bc58a47137497308cd2e -1f40: 49f287eec996320f7a0ed68a85109d53 -1f50: 95d5ce9aec18fd9a13d7a813d6239b01 -1f60: dcd939ae51f672747e604d5f9d27dc08 -1f70: 1b8c76ad7c20024cd4b77c739c4037c6 -1f80: 0c19ce8a7d369facf9066bc5514ed3bd -1f90: 494baca768cb8e51b57722c99acf6bf1 -1fa0: 39c765a33bb6f56638388fda81177b93 -1fb0: 7dbd84a72ff9dd7a289f96273146686f -1fc0: f82de83e13d4ae328717d2ad3c601d07 -1fd0: 900129cd7f3bca5bf46236ffc5f89ec2 -1fe0: 09316397064d37a91b36c9b5729353a4 -1ff0: 376bbdce7773555765693c462d5d3373 -2000: 287511a84a9ec244c2a818fc30da656b -2010: a74321377db50621dfff4770f4d5fa0b -2020: 28db4897ef30a7d476e5902652943da4 -2030: 6c8531d3ff405900b7e6239e71f9bd02 -2040: e349d82cf36c3e79fb13c945f0508156 -2050: c54a0d990e8814e3d7106d7c085ed79b -2060: a3ce80eed8702f33017348aba9c95e00 -2070: 39f0e24a13ca98bc985fa2cd25acc44d -2080: 42f1db633066a4de53d36b8748f507c3 -2090: d2958c4dc87356dd99662046f071558c -20a0: 9d7ec48846936287f6f35c01007e0198 -20b0: 7fa8d8d53c447ae42c3a41d0dcc7b616 -20c0: 77e1718b37a5399b34b163ae4ccab14e -20d0: f4e9a8af11b0ee359598cd86a880c58f -20e0: 39ff0e0a911c199385cf7fab4a0c1403 -20f0: 2b102bdd0d9c3294747e2305e41a52ce -2100: 69eae3d2df48064cf046e3f62df92373 -2110: edec74fecfd9d94c5c7aa597665c83a2 -2120: f74ef0783b32b399901aab8ef9581e81 -2130: 31077b4846f0ec8953a22dab140717a5 -2140: a4f9f337f3488bf16bc39de86709872d -2150: 2cebcf8cf90d3745a77f11b9708fd1f8 -2160: 83d228f50d70554667833e6dd377e824 -2170: 404a042e713829977197255d08526f0c -2180: 8fcdd7108a2a9b9e1d2866aefed1a500 -2190: 5da519f3a4cbfa00b035cf384fe2a857 -21a0: 8eb667502cd38379bd93ac1aee827eaa -21b0: 7f8701844a7b7cb36bcf5cfe7b7289dc -21c0: 23c8db91f5743280d70ad5f7a19131a0 -21d0: eeeb348445e4d2cb30b3cd8fd71efbc7 -21e0: 700f8bd5d91b226553ecf4fa18a85ad7 -21f0: 6f5c2a79b1d6bdd4efd39a30d61f2c6f -2200: 0505e73f0f80de0d0b4d46b2a238e736 -2210: e73ea6c8768de0a744a39a928fe2c079 -2220: b67875f1f58e72f6fd9f80006939a136 -2230: 6ed7ae2d24dff9af0d73bea55a41cfed -2240: 877134756aaa18331abf786ded99664b -2250: 2910f018c87ebb1ae842f4ec7a196993 -2260: cdf518853bd611403c5afadb5085bc0c -2270: 75bc4c453f09a927936ef5b35d0fc176 -2280: 4dc81de354c6854d838a01e47713ad4d -2290: d34cf37c6d01de9964032c922aa827a8 -22a0: 77ac845a3039acb659dd057d45ef479b -22b0: f3a648c92dcaa07bae01e2dfb0a518ec -22c0: 2259b7d9cc99a55d72af4fe8def3be48 -22d0: 45fb4f3a760bd48052ba43d153a74fc0 -22e0: ac7db58e7d08223a7fa94aaac99fca91 -22f0: 4c4da02e42e867c012318681cb2d30eb -2300: 0c593c0b45cfc47038d9c711cd4c81ed -2310: 0435b3623c78c813c5937d85858c5fb0 -2320: 505cf24bbb76b2f062f9102537fb5e86 -2330: 60f2fb6153046365d89a6ec4a3da956b -2340: e1047b0c016358d133553f04d9d9d25b -2350: c57f92535da193f21edf71aa300b1ff8 -2360: 1b8afd6f8fa8dc2126f89fd73ae42a6a -2370: 6fab63e924735d1dec76de3b483d81fd -2380: 7a9f582103435acf1950a74983a5db7a -2390: ab7556338ff913f97fdda7aeed21800f -23a0: 33635a49a058210339b53526124c3399 -23b0: 7dfe0c27cdece6e0d58b3ed995648f04 -23c0: 230be7ce7b0bdae9582102bf96de9594 -23d0: 585b1d78c7bfa034dc767a0209480587 -23e0: ab86996b6d4417af2ffc7a5821031fd5 -23f0: eaa1bc7451be8d975f8ce6b12e804fe8 -2400: e174ffaccd707086dd409f92e01c5821 -2410: 036497ee64cec50a7ff1096907a0bc4d -2420: 8f4901d6e7e53613bd317cf27d76bea4 -2430: 35582102e168aae507c600e3f5916831 -2440: 990d3584a08c8bfe4cf4e1a9f9f4d2cc -2450: bb4314cf5821034c6e7555d4e4dc8cc1 -2460: 44e5c36ed186439fe0ba7d9b4c4b0af5 -2470: b2624b082b8d855821035a8b9aebdd95 -2480: d863e025dd1adafd4fdb314d59d8b4f8 -2490: c0fc64f541d9bc0dfeeb5821031eaceb -24a0: cfd2061b115dd43df32ff6ffbf7fa4ae -24b0: 35d2c90d9613bd4173bd4f81a0582103 -24c0: 653cc6a3e34cd687906c3124b0100ba8 -24d0: bf4ee2e6255813624472e5f8c1cc687d -24e0: 582102b5a2f731a389bac8fa40b852cb -24f0: b03d047937c27e5d51a854ab65a882ef -2500: c3cb2a582103554a153cffff7fc1578e -2510: 29d9c07de18040bb9d6bc0cda626faf6 -2520: bdf7619cbb4e5821029c6be6b826a92c -2530: e18f1b159922caff2aa5b4c3cd4fa5bf -2540: 3400ffb4c1e1c6691d582102e0d8b577 -2550: 6a0835f741ac29630d3c4867ff236157 -2560: 047502d3af7f0d4da4de7bcf5821025f -2570: d71718b838cb1c742162b9a1a0002efe -2580: 92be0358606239cc429b7309efd46858 -2590: 21035fad088bb91c1212a6ddcf6a1622 -25a0: b5c61d922af262ba7a5a619b3bade05a -25b0: 9c71582103e0d7a9e86b0145aef6a08d -25c0: 617f3b9c1be87b93412ecde747d2413b -25d0: a0810a8fd15821031dd55f2f7b21a1a7 -25e0: df4c7baa7f3669ba06edfe23b4170e68 -25f0: 8e93db24bb3137b6582103c2ecc7d410 -2600: 35fc65d6ace5bd9b408caa5ddc2c30e4 -2610: f919e98b7842104a1e88215821029c91 -2620: 3c9000d8bb21388a1786e60131772b8b -2630: 04b82bc60c30b5e4f74e966dc2d05821 -2640: 039f9bdaf76719aab8571ae0a2564866 -2650: 243b5fab45cb09be704c930bda1dafd5 -2660: ae582102c519b0c9e01bb957e3f47635 -2670: 299a1de584880f8df2099a687252e618 -2680: cacc631758210260b8cac6cd6771a93b -2690: 54eaacf9c3673e4f05df14847d6ad218 -26a0: 59b66c583d1b095821037761096bd510 -26b0: 1e13f6aba8d0f959957d3d653c8d0bcf -26c0: a797163ebeb66694b634582103c2721a -26d0: c0af1fe8fcac0631c5488a9d40164c01 -26e0: 3da56c0e7f1109c8fe50743b8f582103 -26f0: 199be546cdf5283e2fb9567a2a49dfad -2700: ba376d2e3d81ac4ab941351a75e4b616 -2710: 582102f2ff1995f86ac9457d536d070c -2720: e9574571b1ff6614cbf96409701fb13f -2730: 6e9f19582102e143ce5162833181e97b -2740: c7183fc8802690ad8a84772c3169c3c7 -2750: 1e283f3fc4b6582102c4ce53991f0ea7 -2760: d05a5aef444b5180caca86759690164b -2770: ef89ddc35dbf31357c582103c1e06f78 -2780: 8aab0b07bcceb3fca47f8fdcc1676775 -2790: 3ec050ee005d69b82eafdd47582102a1 -27a0: 0ad5e568d9e95feead80b68b089d05b3 -27b0: bf2b482baf3656f203c0e45cba871258 -27c0: 21039a9684776a3e643e62e304e4415f -27d0: a1da342a340e0f5b55dd8e791a017b4f -27e0: 4815582103b115f1192c6b241864a449 -27f0: e73eba9e80f1bec35a6f73b375ba2812 -2800: 0e1438a9c9582102271a71dbd6552ea7 -2810: 84127be03cd7f586d9d2711e9eb8ade9 -2820: 10575a953e19d91a58210271e136f333 -2830: 1dd4312677cda722e034d754df0f3d8e -2840: 5c59d17d32a1d61e14c543582102dcd9 -2850: 9497eb6943c35f891a1962c7ecca1e4d -2860: 0e602c09574e5f3eaf370a6a45585821 -2870: 021ecd79c46438c0f541391cd254ff92 -2880: ca5f91e6b40037942033a814330f8f82 -2890: f758210281b51267eb03f4648f7aff35 -28a0: 03194287acdc3305937f73708e5bc03e -28b0: 51a8212a5821031fea2bdecce55e50be -28c0: 1500a6c5c41676faecf3a9a4047f6468 -28d0: b3a5bd6b369ad7582102aea942c7f8c8 -28e0: c62ec210e1f5f14a67d4aa4ec25931d5 -28f0: c5949f524487d4f40d3e582103e37907 -2900: 8c79e6da5d80554caecc67fbe822d404 -2910: 2f571456f82b3847ba9ff5c78f582102 -2920: faac20fbbca846c848d6f03bf4725d90 -2930: 570f234225eae255e42bfdc038156041 -2940: 582103fed0a0b2dbb9651ccaaafc069a -2950: eb90e92f5e32055a333d24dfb8aa57bb -2960: 017d0d582103f53867a60be1f87a67de -2970: 1eea7758816782afcadf544d56db89ef -2980: 3163226311f958210332e55914d85f4e -2990: 0705ca08df93c623292ceaba4eebc50c -29a0: fc60e73ba1560f01185821029216f2b4 -29b0: 76da400f1bc91984d6b77a9d65df371c -29c0: 1d8e086d3b31730370a9cf8258210226 -29d0: 982ca5b608aba96cb0fa9ffa4a6bd3e6 -29e0: b305a2748aafb9c4e5acf42ff67b0f58 -29f0: 21030021f75dba2f6fdcc89d8294652f -2a00: 57af2c572c3c3acf35c9c8cbcbcf3439 -2a10: 7fd0582102fb7a6f0ce1b31c014c2350 -2a20: 285cafa4e980bfc9581af58de25942ec -2a30: 278681ecbc582102e20d1d5e5526009e -2a40: a8d9e0ad9b794d170f7b08d32afb868b -2a50: 1ebca5a392ee5b5558210325418a42bf -2a60: f53c36a4db3c5e814f2f6f47d0cbce5d -2a70: ccda0a52adf365a02bf7d258210339ca -2a80: d0673b44d2d3f4b9dd9fb29444179b29 -2a90: 28358fca04bdb86bde12700f3e125821 -2aa0: 0287fbfb3507ca25595090e2386bbf6c -2ab0: 6c259c4d5d73d12bec29506927871e8f -2ac0: ee582103d3b67f99285f29688e8afb72 -2ad0: a3ae7b58e393f576653a1e799ac8df45 -2ae0: be2604d858210218093de8f8c6c6d861 -2af0: 827b37f76395c572865f0773f4c630ba -2b00: 5b960a61da8c4c582102780e3afbf34f -2b10: a64865ae1b3c5ef000d0655e258d6377 -2b20: b72e1974ffb149b72e7758210274a39e -2b30: da462e88ef223cd117facf8054ced8cc -2b40: d38b7cd3ecc4d0690475fdf130582102 -2b50: 8727297ef656501ffa45e1980686fe43 -2b60: ccfc1ac83f1a18bb022a3b369a9afda2 -2b70: 58210247a82188c396bf163fe909b31d -2b80: 84df62b3957c4eeaec873bec46de97c2 -2b90: 55e816582102c52e101acdf1a1a2ab14 -2ba0: ff860190c822cb540fb8be6182396714 -2bb0: 246aa38336295821037e89f2a22e0a72 -2bc0: ecabd613457eb13926c0a472c9d68207 -2bd0: 2d4ba8a4c9bba846c35821032e9e0165 -2be0: 776319f4ac266ea031d3cbe54c80be7c -2bf0: bdf3fd41ec0727f8ff2d225e582102c9 -2c00: a12fc76075b34cdfbcb8ef43cd9c50fb -2c10: 83d821fcb74ba3d268e4d2554e4a1b58 -2c20: 2103fae79aff9ae5c46496ba21b284c6 -2c30: d72c741f4361a9ab4279aed334cf930c -2c40: 9a1c582103391915837b50e7dfe05e0f -2c50: 4f652344f97db2f1877e69388860f6fb -2c60: 91c355e668582102f508b90df7e220e5 -2c70: 8b9accd1d95a60f52f273ac3200dc107 -2c80: 223b976dce3dd0035821031d6cb0cfb5 -2c90: af74f1a0710765782a3002f5624f5fa4 -2ca0: f46e5db6d15a7fef23f233582102ea1a -2cb0: 52058e8890266cc91b66854e10ba29bb -2cc0: 262e3aaf51751f10723b425d1c2c5821 -2cd0: 0376bd9f009492bf352b42cad1819f9e -2ce0: f980ae691ee45f2bde8cbf0d6be794c8 -2cf0: 2d582103af7635c01233b16eb750b4dd -2d00: 78b67294d2033a5b29194a052700754b -2d10: c82f385a5821027c146c55710d1761b2 -2d20: dd3ca3986d47fba1e9beecb503dee3e0 -2d30: 29842676ab96a7582103261e1fa9ccf2 -2d40: e2813cdebe1e5adae115269f7117e227 -2d50: 8724d2342c7649400d03582103270522 -2d60: f1acf2e5ef0c315ce8ea054dcb66f8e4 -2d70: d733104994f3aeb23ee2ee8dbd582103 -2d80: 9cca00e3e19a2e28aa960a88a9acf0df -2d90: f97342f2fee6f1ac88d0c38dd2cf1556 -2da0: 58210217949f1908970829c2e9ba9b43 -2db0: 31b8515231ee34176b15c462b1039cae -2dc0: 60ede35821021d71c5c7a50b941fca41 -2dd0: 5641d78df3c7f7c8bc55deb0cda7c202 -2de0: c4a7cad8c7185821026dcd29aa01060a -2df0: 3ff1deacdb2884e3df763797e4a6354f -2e00: 6196c5768966117c095821032db406a7 -2e10: a414e35a7789a7fc6d52d0722a6f8f38 -2e20: 9bde9149641547971f8af72058210208 -2e30: 8bbf647f4e275fc979a1e98758fa0885 -2e40: 27392ae20e906d59fc320b0c38f98c58 -2e50: 21034b21f7e7240bfd97be1d34671ef9 -2e60: 517a4501935f296652765c2112d7a258 -2e70: c944582103aefcec4a3a3d144aefd152 -2e80: 5d50999d2364b524484851bbcfa51a00 -2e90: fb857eec98582102284c5defbc9bfa67 -2ea0: f8e4cc6ca7e3a31f3bdb727b45589093 -2eb0: 85b1f7e66e7dcff158210353b3de9275 -2ec0: d2472c385ffbafd4dd770160213064cc -2ed0: 785099d876ff080ef6e86e582103f4f4 -2ee0: d8fecba01260c14f7e9e81c417332faa -2ef0: b0fca593b2a630d702ff9a74220f5821 -2f00: 0367b0f4556813b937ed1f264f0794c6 -2f10: d0cda4e30814d0931c84892e0893d6a0 -2f20: dc582102c9f41c87b084ebdb24ac6a50 -2f30: 14fd263c2b924812183509d08dc4b2fa -2f40: 1fd46ae65821024924133f1ccd6517e9 -2f50: 1d5c1a19f42a91b4f05835fc77d02245 -2f60: 56da4032a7bebf5821025883b5df946d -2f70: 062006d851fd91db33ba65d3ab36674a -2f80: b620ca3c2db810ce64d158210237e494 -2f90: 67ced83e47bd8f047ea04044ec3e3b34 -2fa0: 8e58764dd16a21967a3d8a35fe582103 -2fb0: 329242d08a6a381c0f14b3c9331d7777 -2fc0: 1f0a368ce8ddfc3162d0c853474cc89e -2fd0: 582102f99c7963ae7de4946d017ed3e6 -2fe0: 87402c79b613e24134b74b1c0c771993 -2ff0: 73080b582103b1c4e71c5b07eff98a90 -3000: c1990b59d359393b0c99eeefec47ad2a -3010: 0498db5c100a582102b23be494ba848f -3020: eeda986518b4f936981f8c50826b0bd7 -3030: 80ddfa41263f9b4ef2582103d36ff84a -3040: 72d0c6cad82966b704002adee57c30f1 -3050: fe5c073007e0f01b3e6fb87f5821021d -3060: 387974b3acee7ed620a68a977a4cce40 -3070: c277a1c79806f32d59ddbdb9e5c0b958 -3080: 2103e7ca1272dcd09dc599adcf13d2cb -3090: 07859faf9416f57d44b145236617c356 -30a0: f9115821022ee0a61e3855e5c5ec575d -30b0: 1cabd936cca18738f03687d112730171 -30c0: ece388f57a58210383b051fc5c6484d0 -30d0: 24867af1a99cb1ce764b21cb7ac6f493 -30e0: dd797f07e184cd0d5821035220abb19b -30f0: bb372df3ef0964931fc0199197cff16f -3100: 6d60cb1053117a41bffda0582102e72f -3110: 78b30caae60b407a023f51cdf07b3663 -3120: ecdff16fca67820bfc76ee12123c5821 -3130: 031e1ee7044aa44dea84a39f2ed4dd43 -3140: 26e7b1ab2b7ba9d986b4ef43588c0b3d -3150: 755821039b142fd0982950c351496b65 -3160: 5c53f55a99598229da60544d6a890e5b -3170: e83174cb5821022d31ff83e3b2377a54 -3180: adfc5d9b4c4396d3985aaa9903ae32da -3190: 7a333a773775ef58210371e52589407b -31a0: 5538e758916dcf38856403274047a264 -31b0: a24dba786ebb4c96b2a158210212a18e -31c0: 37b48700a11bc91e18aeb6337571edf4 -31d0: 5e342809d475b2f907678f74ac582102 -31e0: 30b64b6bc4841580fdb4690714e76ff1 -31f0: f7e1eac80a78bbb701895e95e69a5770 -3200: 582103c76f39e39ae03f4fbc8f2f8ac4 -3210: 1f35480c59c9ee85c868566760399220 -3220: e826d4582102a1045ed9ef4b18802054 -3230: 108bcf85a70f93da63d1fe2a58ce0a4e -3240: 5fccf48daefa582103e9231b2593f2ac -3250: b8783ce4ee889591943d4f6e3acc7c0b -3260: 409db5bb4f4171b278582102c039b395 -3270: 0566dcab1f00410721c0ae8b4493fdb0 -3280: 9c920c10059166a3510431ab582102f8 -3290: dda8d7d7cff6cd4967130cf62faec644 -32a0: 6f8397a3418b9dfd65c115c6fd6c6d58 -32b0: 21036ec27feb98b7e5e658c89c8d2db3 -32c0: 1b1223ba6f5214d39c9f13202b4f28f2 -32d0: 5ae858210348d8a2bc0beb4442e7cbb1 -32e0: b6045ffec8660949f4b7410d90168751 -32f0: 9d8fb62a5c5821037af7195291ddae08 -3300: 85af924af02dbc883b2a8abb121f1e73 -3310: d1a347f08684524e5821024ab359ec9f -3320: 570a0730676cf18a813dcecf0458678c -3330: 784a624dfe48e87be4531e5821021823 -3340: d6c4d1053c26653490bfc5f2bb82e8cd -3350: a5fadd8a92ab5a23cdffbad4855f5821 -3360: 02b0bb0c6c7a9da17291be339cf7891f -3370: f99cf8be534f173c1bb01d2767ba6393 -3380: 515821028b710aaffdcb2500b74377f8 -3390: addcbb9822efe0d644c3b2fdd9a922d4 -33a0: 499e64c55821033c24de3e0a1da000ce -33b0: a36b7101962aec9115b6fbeddefd6434 -33c0: 0270b6632032bd58210246a5697011f3 -33d0: 35afd54164720cd6163f08ee5826d6ff -33e0: 2641a663438e401aa6a15821033e3607 -33f0: 1b1959f785ad5adc251ad97c1a6953ed -3400: b883ebcdec0ecf29599d0cbc89582102 -3410: 59bef980c0856b1817567759994791d9 -3420: dd43a860ed4c748e39580b176ed450cf -3430: 582102a9010b0192cc0379f996a8e4c2 -3440: 80a78e6dc45a4cc6480c463e514b9845 -3450: afb3cf582102a112af16bea7c14b088c -3460: 0ee092fb913ec55ee7d8e973a2e50944 -3470: c2f906f7338f582103f3bc01004b39ee -3480: cfa3441ed94991022ee8c9263e58e3c2 -3490: 7b3a25bcd6c5fe53805821034b6c79c9 -34a0: 8b4158cf9bcc2e8371db208bd757fc0b -34b0: 949196a9315050d7f2b34b585821022f -34c0: 785e91f212d468a4395f60f2ba2ddd58 -34d0: cb8c1f32c6ffa965578992458ab6f458 -34e0: 2102c3d0f7a6ee23db0166b8e5de7cb2 -34f0: 144eff2a6aacd9b51076e55d07122386 -3500: fad0ff58407803232dd492dacd3c0f7c -3510: 5401a577a4bfa2891cf5c9da07134ac2 -3520: 414522c51b397e183602768910747ca3 -3530: f2e065f14a625b278cc2d8b3bca5bae8 -3540: 4bbab6bb03 diff --git a/eras/byron/ledger/impl/test/golden/cbor/ssc/InnerSharesMap b/eras/byron/ledger/impl/test/golden/cbor/ssc/InnerSharesMap deleted file mode 100644 index 056d249e6dc..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/ssc/InnerSharesMap +++ /dev/null @@ -1,34 +0,0 @@ -000: a4581c1ab7daa1282e1a13d384c5ad64 -010: dee9882bcbf9130e468ed10f27e4d39f -020: 5863586102ab1997e96af26054b0695f -030: 94c4429dc87b8aac37c4032da36cae2e -040: 984a70d29460c1ddeb5de41c9094d0e1 -050: 0e651e22c0c36bcd1b3fdc1240c3f09f -060: 1b9640a43f415c616fb57bd70b3be61e -070: 56253f155c7f1a82c98fdabaaeb9ba84 -080: d9f08a6bd6ff581c9190e3e62897bb93 -090: 82465a9f23d9c67cdeb5fdf2b884872a -0a0: 8f6566df9f58635861034737a48d3ab6 -0b0: 143941a80957ff86e3bb0a892d6d7871 -0c0: 9b57528ac219117c831a73276312fc75 -0d0: e81ce4380455d24a99a415a640adeac4 -0e0: 793046e1e82e5021ece3853cd80c9a3e -0f0: 0e6443a41bc1eb2decf5ff4d18f85a74 -100: 88d95f7a7f00e8a20a26ff581cae7a5c -110: c39b05327f0639b381365a647ae15f34 -120: 7bc3e7a8176164ba409f58635861038c -130: c39619077b95b4e9241455713b8fc18c -140: b2c7204adaa22cec1a3d7bb633ff686b -150: b3a7085468c1f37a7f5e6f4fc9e79aa2 -160: d748ffcfe57a5b534cb592ecb978fb07 -170: 21de4f91c6c4690ab23998efca4b75ef -180: d410820f3b47dced4cb459e6f36f45ff -190: 581cb4c0e0810a8cd4f5b9249c419007 -1a0: 04b35ed186205c708a40b5abac909f58 -1b0: 63586103d2dd7f247ff1e155b6f39834 -1c0: 3caec1daf7c074889aca7f1240833a94 -1d0: 2f01c15e7c0347c25b299168829d4053 -1e0: a905f995e8f58f0f35d458d205e14e9e -1f0: 1b9e44554688b71d8c1cee3d31c5071a -200: fa53e95c307056d188cc890cbf107715 -210: 32b15d35ff diff --git a/eras/byron/ledger/impl/test/golden/cbor/ssc/Opening b/eras/byron/ledger/impl/test/golden/cbor/ssc/Opening deleted file mode 100644 index 9a721444838..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/ssc/Opening +++ /dev/null @@ -1,3 +0,0 @@ -00: 58235821026a8923b61ed176f49b726f -10: d5c1c06d0ce7433e3be82030a5c85e54 -20: 8d0b0a3082 diff --git a/eras/byron/ledger/impl/test/golden/cbor/ssc/OpeningsMap b/eras/byron/ledger/impl/test/golden/cbor/ssc/OpeningsMap deleted file mode 100644 index 5cd2ae2704b..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/ssc/OpeningsMap +++ /dev/null @@ -1,5 +0,0 @@ -00: a1581cb4c0e0810a8cd4f5b9249c4190 -10: 0704b35ed186205c708a40b5abac9058 -20: 235821026a8923b61ed176f49b726fd5 -30: c1c06d0ce7433e3be82030a5c85e548d -40: 0b0a3082 diff --git a/eras/byron/ledger/impl/test/golden/cbor/ssc/SharesMap b/eras/byron/ledger/impl/test/golden/cbor/ssc/SharesMap deleted file mode 100644 index e0c9f74ae5f..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/ssc/SharesMap +++ /dev/null @@ -1,36 +0,0 @@ -000: a1581cb4c0e0810a8cd4f5b9249c4190 -010: 0704b35ed186205c708a40b5abac90a4 -020: 581c1ab7daa1282e1a13d384c5ad64de -030: e9882bcbf9130e468ed10f27e4d39f58 -040: 63586102ab1997e96af26054b0695f94 -050: c4429dc87b8aac37c4032da36cae2e98 -060: 4a70d29460c1ddeb5de41c9094d0e10e -070: 651e22c0c36bcd1b3fdc1240c3f09f1b -080: 9640a43f415c616fb57bd70b3be61e56 -090: 253f155c7f1a82c98fdabaaeb9ba84d9 -0a0: f08a6bd6ff581c9190e3e62897bb9382 -0b0: 465a9f23d9c67cdeb5fdf2b884872a8f -0c0: 6566df9f58635861034737a48d3ab614 -0d0: 3941a80957ff86e3bb0a892d6d78719b -0e0: 57528ac219117c831a73276312fc75e8 -0f0: 1ce4380455d24a99a415a640adeac479 -100: 3046e1e82e5021ece3853cd80c9a3e0e -110: 6443a41bc1eb2decf5ff4d18f85a7488 -120: d95f7a7f00e8a20a26ff581cae7a5cc3 -130: 9b05327f0639b381365a647ae15f347b -140: c3e7a8176164ba409f58635861038cc3 -150: 9619077b95b4e9241455713b8fc18cb2 -160: c7204adaa22cec1a3d7bb633ff686bb3 -170: a7085468c1f37a7f5e6f4fc9e79aa2d7 -180: 48ffcfe57a5b534cb592ecb978fb0721 -190: de4f91c6c4690ab23998efca4b75efd4 -1a0: 10820f3b47dced4cb459e6f36f45ff58 -1b0: 1cb4c0e0810a8cd4f5b9249c41900704 -1c0: b35ed186205c708a40b5abac909f5863 -1d0: 586103d2dd7f247ff1e155b6f398343c -1e0: aec1daf7c074889aca7f1240833a942f -1f0: 01c15e7c0347c25b299168829d4053a9 -200: 05f995e8f58f0f35d458d205e14e9e1b -210: 9e44554688b71d8c1cee3d31c5071afa -220: 53e95c307056d188cc890cbf10771532 -230: b15d35ff diff --git a/eras/byron/ledger/impl/test/golden/cbor/ssc/SignedCommitment b/eras/byron/ledger/impl/test/golden/cbor/ssc/SignedCommitment deleted file mode 100644 index f3e7f63829f..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/ssc/SignedCommitment +++ /dev/null @@ -1,853 +0,0 @@ -0000: 8358404b6d7977346c44534535533466 -0010: 53483665744e6f756958657a4379456a -0020: 4b63337447346a61306b466a4f38717a -0030: 616932365a4d5055454a66457931356f -0040: 78356b82a15823582102294842accb1d -0050: 76aaa64bc1af231378e1a01a67c0fc80 -0060: 10824caa0210970275c49f5823582102 -0070: 9bda1a8a05240eab89934d68f93eb836 -0080: af82e7acededbadbd4bb9627c8561ddd -0090: 58235821035ede259e9705449b2e5073 -00a0: 1e76417b854b45d2f67d2748e136ff95 -00b0: e6fbaaefac58235821039c248ef9acfa -00c0: 42b56cab4adcfa8730ae39c9226be5fd -00d0: 84be620483090df4ccc9582358210297 -00e0: a9465b5bd034fac6ef77868f9a076cf5 -00f0: b9d6a6cb357857a2ead49c01b9e38858 -0100: 2358210312b4b09996ca08b885052725 -0110: 25168bfb4c4ca06934c1c2d545b31ccf -0120: 0b238ab75823582102cdad51ea022956 -0130: 76cc0c0fa49d5e7d317ab477b7e8a028 -0140: 9bfa15631d6aa52dc25823582103bd38 -0150: 5b55292cdc74674d87fddcdfc93182b9 -0160: 019d115354ab2709ee515eb7d8f35823 -0170: 582102dd5c15a30b24e96723191e330c -0180: 43ad4b47db2593c6b1c27a113ad15b9f -0190: e18dc358235821030aa0f61e0449d7dc -01a0: a6933936f47853d7cbefa42657077d3c -01b0: 92da4118cface1dd582358210241906c -01c0: 49e270c1936cc671a4cc7ec4e8a7f855 -01d0: 1a8850e29245057ad4b042f5a3582358 -01e0: 2103a93e57a31bc616cf50172372c10b -01f0: 1fe2a5f18ebbd037d0ba716b54cde1c1 -0200: b2df58235821025de1b792550bc5147f -0210: 7f14cc227509d6a25ae2004765214a86 -0220: 47222dab33897a5823582102933531e1 -0230: 9aae89f085c975393731f8dcc7fe3408 -0240: 47f4d6c7a1a0c4dcc467eef358235821 -0250: 03cea0a1183de2f5a2205637daccec9a -0260: 0ea317113b7782bd8d78be75ced1dbf3 -0270: 805823582102664b4ebfb08c14a7c76b -0280: cca47e1f37dcc35ae1443f8d2a90781c -0290: e65dccd95f51582358210348bb9bfe23 -02a0: 3fa7da0ececff9a33388791c911e91a0 -02b0: c7c5956650b71a5f3659ac5823582102 -02c0: da49d6c104fba07b1b378967784b2fdb -02d0: 111d8ab1938a4efe567a781153f3b22a -02e0: 582358210242a9de48ad25ca196b50a9 -02f0: cb46e743fa7aa16502a2f56d0d188c22 -0300: 7955773d505823582102e58b98c63b07 -0310: 60bd0c1f99544be9ce7f3f5190b07f7a -0320: 89515c0cd0325cf2d6c5582358210331 -0330: 4be53fb69543884c6ae500ccb1f5f053 -0340: 6114fdb29ee2102c0c3485514fbed558 -0350: 23582103a52649a80ea3433208b32405 -0360: a9eda84edc675236bc141754154ceee6 -0370: f2b40c025823582103225dbfc0579d5f -0380: 04d5538d9aff9bf5f0d7d6e090d47f08 -0390: 3451b14c4d7480b161582358210203b8 -03a0: 836c8f06927c339806e1600a36e42eb8 -03b0: 10f8135389fe4d00c16920b7578f5823 -03c0: 5821025a0bf00da25c5d16c8cd712d35 -03d0: bd5f64e88de7dd7325c0f342706e4b56 -03e0: 99fd2b582358210202e40fbe8a6d7654 -03f0: 7b759c4af1f2f77d57acf70c94a78bf7 -0400: 846b327f6cc52a7b5823582102ad107e -0410: 6aa56ba738adfcfe52216dc07518a97f -0420: 03c23ddaa0f370f69ffb736284582358 -0430: 2103392e2225bc6fa588b0e0435b9e94 -0440: 67090c9cd69c2cec13955eb99a7a1a7c -0450: bc745823582103069f0e42d8faff164f -0460: 3ea7c93fbf35ebb4851c86b79d0b8e23 -0470: bcff6bc6bb49e658235821021cbefa93 -0480: 4aa9ed02ead02fd492f98623b9037617 -0490: 82f1b23de10e26d81e82e56158235821 -04a0: 030c14f1393d9787e603440031b86ca9 -04b0: b724cf12955222bf52f8f272046ea991 -04c0: dc58235821035f1faf47675dc23f1854 -04d0: 598d42e1e1a9df161a48cce4c305aaba -04e0: dc90f2db9a135823582103b0ebffdafd -04f0: cb12cfa4e39eb030cb5f4dca4a92f8b8 -0500: 88d7e450d269426c34c27c5823582103 -0510: 681a2b075b44b296fe8852a307a93c77 -0520: cb4e2a927bb56d6f370a061d6a63dc1e -0530: 582358210272531932815e443f1bf81d -0540: aec10ac575177cdca9ac1f7574159f5f -0550: 4bc6807f0a5823582102ed69e79cdd48 -0560: 8880edef68fd2b5b5e6add11374aef21 -0570: b407eb15b865af95397f5823582102e6 -0580: 11634b87df1c402d7580a6c42eb701a3 -0590: 35cae922f40c6d7c99532e110b744458 -05a0: 23582103fd56a98ea60cbc679f15e7e0 -05b0: fea32f992c66f9c7cd9cb53f77dc537c -05c0: 3a3eb1d15823582102721c2d0420fffd -05d0: a3c066bdeababc9e72c89bedce37faa4 -05e0: 8751a4d114b4a7e18558235821037912 -05f0: 1a1c21416df70a0d3cc7ad61e80b77fb -0600: f8ae9f47287e7baa5541a0aed4765823 -0610: 582103cfda6b11727437c955dd6105df -0620: 50e7c2f725b1d969533c0ef2652226d1 -0630: 05d3f25823582102f05d06750c33ffcf -0640: 12229c0b589e94faa9dbbe232c1e34cc -0650: ac9da60945f0449d582358210353030c -0660: 6515d2287b040a7e9bd6ba62362a472c -0670: 58aac501a0f725b0ddd902a5cf582358 -0680: 2103bbc6fd88c2e6426e07c9134bf8ac -0690: 4f51fa4b2dc9ed4893e95ce853ab7121 -06a0: af085823582102b5c89a77ac5181629a -06b0: ae43ec47abab09e0901921af2a60c7c4 -06c0: f757e8eba63d1b58235821037cb53bec -06d0: 0f9966d49845a9a21742d747f83ce4be -06e0: 419a4f6e618d33221ea5f13b58235821 -06f0: 03ed9277f3d95ab3be29a4fb618523a5 -0700: 0b12aea175b4e77a616972887cc6173e -0710: 9a5823582102a0fbc434540a32aec22a -0720: 3aa66f405dd2505773d8be2686893e57 -0730: 5173d126f0ab582358210399e21fc957 -0740: 3fb5b30e54ed2a114de5ca7c63541564 -0750: 28ff4a4dbc39f678496b6c5823582102 -0760: 31e013fb9001204a89131cf28f8951a4 -0770: 62605a26a6a8d2d35ab757fa0fc1ff55 -0780: 5823582103d7c2b648b0bbfaa90a1cc9 -0790: d892559fdcb37a0064a9c055a1a2e34b -07a0: 4d1fab27af5823582102aa5d3eb9699f -07b0: 5babc3fdc643464c6e58a5c3c5624c86 -07c0: e32fef3cbd5f68775251582358210380 -07d0: 060a98e1a2294858d35fb1f0a5212835 -07e0: 3d2d77ec97f151a9fec503cce778de58 -07f0: 235821020d422e87ed24f8f4db042eb2 -0800: c1e829e1e2484bde74cbc470427a6279 -0810: 2901617c58235821025a10effaeb3cd4 -0820: ce46b9aa4073b9ffce8b701cdf4ae49e -0830: ccbe5b3293e32038845823582102ad14 -0840: cec8646df8d75a5ad8d9001d28030930 -0850: 1bd58c85f30a9a79908f70f41a0a5823 -0860: 582102c96da83d747d2231b8e0880794 -0870: 9c2d148a32deb4bf36c6e9353df94fcc -0880: e70de55823582102b17c816429519ec8 -0890: 972643aca5fb75e3981718822377a82d -08a0: 4e62c9e6f294bca858235821039a8813 -08b0: 575b955da94f31315580ea9da192703c -08c0: 28210cdf7a16e4bef9f6a00a26582358 -08d0: 21020a36a508e62aa38fe3f1531e00a2 -08e0: 591a8c690826d52b6a97b97e96a9d1be -08f0: e0275823582102394035cabe7def1881 -0900: 34bc488f8603c52f6f80383528aa3373 -0910: aaee4de7f27cae582358210221d12296 -0920: f4c8c0ca015dbcfd92a851ba4df2a4a4 -0930: 936c65bed2ef493b402e374e58235821 -0940: 02dbc9434aeacd5a17e302abe5ed4924 -0950: fbca72d52eb1abbcf19e8530bc9b6d19 -0960: 855823582102478daf056686a38e929d -0970: b041bc3107cf5baa82a05a63f795fdaa -0980: ea29ebbbf1ce58235821021ab04732b0 -0990: eb854bea8122eec0bed21b3334bafac2 -09a0: cabb35b4f07fee9b7c0a735823582102 -09b0: 5f68ef8c389765124ca9ee29be7f4785 -09c0: 8d6d9057a2255400923bfe0d7b2c125b -09d0: 582358210326820323c581e759c5e660 -09e0: 4d0b457576ece4469f508f707bc6272d -09f0: c38c0df53e582358210399b5746088d1 -0a00: e4a4433579e8667412c28ca2e5837f39 -0a10: 2956ed19121d810fa3f2582358210258 -0a20: 5d568afd893e50039c627b00747dbaf8 -0a30: ac2cdb773a356a13074396d6905c8a58 -0a40: 235821020f899edd7da12fce02def215 -0a50: 4d313c04cb477365a9ec26f2fd65ec5b -0a60: 64504b46582358210359fbbe6a834552 -0a70: 907d521ce2b34d66811344f345a113ce -0a80: a25f0eaaf3613f892858235821021ff9 -0a90: c399c66e4544c1ea5ece97e4eb7301ae -0aa0: b82cd35445739712e0acf9aec69d5823 -0ab0: 5821032a5238b1782b657c3c85a6c4eb -0ac0: e2cc73f5e410fc683fb34816f34d7365 -0ad0: d6be5658235821021181aadab475dd40 -0ae0: 7fc7e0ae4f95fe96539b33df762c4247 -0af0: 888d660876ddd08e5823582103cafd90 -0b00: dc39ae649cc45fd42456a4daee0525b7 -0b10: 20235830f0bebaf6ee6886d714582358 -0b20: 21029639a9d47b75c00b25769d49651e -0b30: e459d9ce053e841ff08f186b011ef41e -0b40: daf35823582103c2edee8ebe749e5075 -0b50: d3fbb58a977e55bbd02d6a59ee590487 -0b60: a691ea6e91c83158235821028c67c01e -0b70: 2099743d6f591794996030f429777709 -0b80: edf1847866987e9d3cd4217158235821 -0b90: 023db9a9befd52097357e8beaabd266c -0ba0: e41c93cc618dc0abcf60708c7e7e49b3 -0bb0: ba58235821032986bbc8c170686d2a21 -0bc0: 17cd1f0374ccb8137570f219f08ecc9f -0bd0: d195d6edf203582358210207b48dab2b -0be0: e7a90eb78d07578421de64556e354290 -0bf0: 11ad3f3d3e5ef58568b17d5823582103 -0c00: 5bc3bea6bf38100a2dedc0cf5f64fdd2 -0c10: a44b1e904a994d4eb6d13dd18ed4b11f -0c20: 5823582102417c60e68aa14ae6b9497a -0c30: 91d2a7bb3566eb3e8563686e34e3069f -0c40: c98f5a8a50582358210279cc98764a98 -0c50: 69375484da2ddeeb5f6e30fdad8ba968 -0c60: 843ecd4080f5877aa1e458235821026f -0c70: b9617b52e1c97d642dc556dea1aaf45c -0c80: 488963bf74a7fbedcfbfb12f0f70ac58 -0c90: 235821036e3ef9600db5fa54a2ed39b5 -0ca0: 0124c5cce767acee72e135f5b4b38ae3 -0cb0: 4b9443615823582102a8243ead08b78c -0cc0: 4ab193bdf5714bad7789fefa748e6e29 -0cd0: 16361f859e5a369e135823582102fa95 -0ce0: d06cf99e1e370c414413ef53e263e144 -0cf0: 99a53e9583bff1b28473722522ca5823 -0d00: 5821035e93c1bc2d8d8b782098d21eea -0d10: 41ea9da96c131eaa75d0b0f9e4803ed0 -0d20: 3d50b45823582103be29eecbd531fb36 -0d30: a9e9354573e4822f7be96e3e677c04b8 -0d40: 7a6c8e44d60e09d8582358210216cdbb -0d50: 428af2a4db16fc1472471429606679d0 -0d60: 7e32d08fe3330be1d1330cb7b4582358 -0d70: 2103ea2204c486a1b6a08bc926494867 -0d80: ca515aaf74e6ab628b26bdcbee67a774 -0d90: b5575823582102e95a1a1af0909ff0ca -0da0: d4f795659aa867e576a159534f1eb1b9 -0db0: 54c362a90502db5823582103b9314622 -0dc0: 66dcb681864c6bb6705a3b468d48f122 -0dd0: 658f85f32f584728b47ce50c58235821 -0de0: 03faa14fee33584a195b337e1e987319 -0df0: 200d7af58f61796220cd9f878e6279c3 -0e00: 3058235821023cca4e60614844e29989 -0e10: 964b24e27dd95917d3131ab497ea4365 -0e20: ca6301fbbd085823582103c2a24e0ceb -0e30: 6084b99d9d7677c2cba4ee89e324cf2f -0e40: 98561b821820816c7e033c5823582103 -0e50: ddb922d834f548f7225311fab5a30297 -0e60: 45315a23faa836418046afa70dfb5832 -0e70: 58235821021151a4aeb22a9d3c229703 -0e80: fa512bdcf1f8ab2e841c1f46f2782781 -0e90: a12d83752a582358210247c9c174dd39 -0ea0: 4b279b618d3f29f173cdd3d319c31ab5 -0eb0: d934d4b87c1c9d0c294558235821037b -0ec0: 1e9c4489e15ffb2768699a4da2b0e079 -0ed0: 4eb76973dc09bcbb7074b27f53286158 -0ee0: 2358210357aa30ea541f976ad2541f70 -0ef0: 6a8e7b502ba27a3f620a6038b0bc0fb7 -0f00: d6c8b1c15823582103883e22e6b434de -0f10: d59d86b704be8a238dcfd83cd30369ce -0f20: 5af24131cfb66346a75823582102b309 -0f30: ede42d0f23a4a2d26ecf4fae96b8d6c9 -0f40: 83a76c4f9d99e4fca0bbd61d32eb5823 -0f50: 5821022fc25316fa325e39bcf65f62f6 -0f60: 1aab272880070f6f19d92c463f46cde8 -0f70: 7d462d582358210365b8a99105b42c8d -0f80: 4941a6df156f4f91e71e9b7f47a54163 -0f90: c80dcbaa6700ee6358235821031b0f7f -0fa0: f03267fdf86479af1d66c199e2ce9737 -0fb0: b555f4904bab9573adaa744dc7582358 -0fc0: 21021e4dbd1af31501a42e17ad8693a2 -0fd0: 3e5c22b4df3adaeebe164751c2f25bc1 -0fe0: 38f7582358210368db19a232010e5a0d -0ff0: ae6a0964134811db95ab3e815ec060d3 -1000: 608fd8acae99855823582102fca60256 -1010: 04a42552adb7ff53dacf4bfe8bf00a1c -1020: c75786e5288b99ba196b9bc658235821 -1030: 025ba093fabdb69404d09c47540e4318 -1040: 8deab82a533fa1190b0f1a4ebff522fa -1050: bf58235821022799c140ffb82ec905bd -1060: eb9b3c21f063797f1799fd4859e15317 -1070: b6db0dff7ed95823582102020c81ee56 -1080: 6c7ec0f461e5c70503a7769069fd0b44 -1090: 023a32d0e520a8da1b53c75823582102 -10a0: b8e247e500b39c661635b0d15eb677ff -10b0: 5e41485054c0dd58863e1de6cc824e1c -10c0: 58235821027a0b0c681a97c13a8b6508 -10d0: eb34e708f8ca0d700a2250fc73e2386d -10e0: 52e75877b958235821033a9d7756a4e7 -10f0: 17e6e77c6988e6036d63b4cb3e857b9f -1100: 7c2fdd3e8e510a291aed58235821023b -1110: d4e95e9298f406a6ff23e877818ccb16 -1120: ba596258d73f7a475f7748f9a9873958 -1130: 23582102ffd0491ea76403aef978a4ee -1140: 424f051ce0bb2c4b52a2e55277417248 -1150: 87470d9d58235821022d74f1f254eee1 -1160: 5850682d3ecd151f5909c9640f9be90d -1170: 3672f1866fe59487fe58235821035604 -1180: 4880b5cd8f1d2aabc5863ab54ee96978 -1190: 3196add1a68dfc05de5dbb907ac65823 -11a0: 582103498bafaa458ef661c23dce75a8 -11b0: aa854cc5ca6b607d2f2d936368fb49f1 -11c0: d6c3f15823582102e2e19c4efe73abb6 -11d0: 76f75b5604b80f0bc41a9f42075b2440 -11e0: 86275afed274bbd558235821020867b3 -11f0: 08577d17c97e5017a9521b94722bad7b -1200: fc63fb7d0f0c8c2ea01676f0a6582358 -1210: 2103d18d83e2e7f147dc496854bb506e -1220: 4cfb0b1e601d5c604cbea0bacf3e31e7 -1230: 05685823582103d985aab246d1f12626 -1240: fce59904db1ca4094e40073e47a7f614 -1250: 2d7dc311cd03f45823582103857808b7 -1260: 1199e7c8e727cb316571c621368295bc -1270: 9fd71d7aacb8c90b4dece1ad58235821 -1280: 0245c75a4056290f04330665664b0f72 -1290: 421227dda013c444c01a69bb51b3caa6 -12a0: d95823582102272fc446da2f3bcb1c76 -12b0: 836f199f492b420581f42c5978de09b3 -12c0: 8d5ffd24b4aa5823582103fe104ffb91 -12d0: c2640ded16388cdd29ae06ed8503da5e -12e0: 208307c46bbac2c515557bff84582102 -12f0: 31bf6c2d1b1494a030e1b62caeb54f86 -1300: d4d320488e47b2e93a82eb83a5958415 -1310: 58402bffbc415f413e488ecd66f28d0c -1320: 6181dc8ea25b814f98b0dd1b92526013 -1330: e5ccc47696934669056e0442c802370c -1340: 0769cb12a43c7461df1d7d1ec6199799 -1350: a0fd591028a48563ff5cd6b187777cff -1360: a83c07daecb666bc8a610fcf6335c47e -1370: 8f1056e963000000000000008030c44e -1380: 45a3dde43de4653c305c3807f607ff9b -1390: d1794642a39d709a29030a47033bf867 -13a0: ed36873376c438fa5b7aba7ff94dbb33 -13b0: c8a1428bb6a031bb1b1f0276637b0aed -13c0: 8b66374b9d4f5bc28df2936e97366dd8 -13d0: eb2982d8fe051486243ca7f5813a35fa -13e0: f87edf75426d7a97761a6297e3076348 -13f0: 37b846fce051c54e76eeda2ba71ac786 -1400: 27b7992c556bd9e83276667b6f13efa1 -1410: 4f4731554ff946b059a568707f59ee15 -1420: 51faacb2f9077613c8ac30ec8b6d9ee8 -1430: 3d4c179f3aab0f1547ca032a455e8d39 -1440: 0a29502c95a2c759b25e1cf365ddd152 -1450: 74448a2200c4be12f84d3a684715f83f -1460: e809907b10ebfb56dfb5d15473a4522f -1470: e37877a0a7ecae7ed95528a5ad1a8f58 -1480: f276e2488ada5f4016793e2d3e8189be -1490: fc14e9d16c4aa53ea67c66fc8a67125e -14a0: 2d0f47502306d43ef20de7e559aaf09f -14b0: 8fec8c8751457a7634acb8d81068430a -14c0: 65e77bc0b9d39fb87000a715d8cc877d -14d0: c846c53039afc5d431272d03686befa5 -14e0: 58791f3bb41bee4a1679739afe54b02a -14f0: 55b37d9b3ed6c0d94f6eb5f755386780 -1500: 5a5bbd88fc5224b388fe082425bb3e2f -1510: 30f90bffe97c5687b352bbbc4030b137 -1520: e600531f7a1030db35c45b1117bc678c -1530: 1d290584708b6ee6ee6eedb4928ad61b -1540: e1a7aa7539b3676bf94bf9c7a6e6d0d8 -1550: dc2a1e7812c652f0ab0899a595373d7b -1560: 16757d8a0f83c1b5bde97b9c9619f8e1 -1570: 4cbf9c5f3ed3946ee5254816b3362a1b -1580: 6d034ebcf0818a4b6538638939777e93 -1590: b48daadc3dd4348aec611db39db2e456 -15a0: 1e9051960bcac8bb97d793a99d1d8b71 -15b0: de99a2eb3c6c09268957609b38ce87d7 -15c0: 9173db080e79e92ffcc364dbbbc42630 -15d0: 4b2bdc834d15cef6688753a0114eafdc -15e0: 68f292ffe0249835e70a28080577e242 -15f0: 45d6b6f16ffbbddadd85a948dfcc67e8 -1600: 3e8b0c1ad8913039ddc6282570c3f8a4 -1610: 45fa64e25746675324a172502bdb242a -1620: a68e53e0233572f42250b037d805e8bc -1630: ff1e86a83fafc322b1cbeac4cacbcf6f -1640: c9e06f2a78d14685094b7b480522d9cc -1650: 0ca8ab732928654fdccf32387e593374 -1660: 7fffad91fa1d09076822e89644d07aa5 -1670: fc7a441bd1aa530e1ca040d50e92381e -1680: 80dc7e9d456b7dcbc3ed142172a8c4bb -1690: de7b14aa5d350f368e4e373ac5de3451 -16a0: 0dc996d06fdd90729b5f0e4df4a25427 -16b0: bbadd7f306a8bffde03e3abedc185bcf -16c0: 61af2f66b6c664c406c2eff88ed5d411 -16d0: eecddeb4031f0b701bd5d5d820a8c475 -16e0: d374c2be4f6865c51e512cb835ef52f7 -16f0: 91acf552f82fe9b4107acdbb375e1393 -1700: 3e8649b884e0e0a5d699375919dfdf72 -1710: 250d71f1666caf456218ab18009b5def -1720: a4c93003cac1e3d325835f9369901fd4 -1730: 4e5cd690613bbad8de14cf7598f469ab -1740: 97772f6e25f8d3bcb78461d2a8141a06 -1750: 7e95ce86bd679ea8ab289ff048dafeb3 -1760: 53c320a8e7f104151f695f04dde1c34f -1770: dbfc57b6949e4eedbf2b1cbda7f365d2 -1780: 0265d0dba4c98df4a77820658325c33d -1790: 018f83d88c4d8f8b8c8ab86c21307ebb -17a0: 593587173149a48095d6825c0563379f -17b0: 917ea88b62eaa575a925e0e06f1b3e00 -17c0: 5e4108df74b7f7d8f6d1950f8b6f5a78 -17d0: 69698f000da9646e96cff99aea676cf6 -17e0: 158ed72ab3ddb4c93047c0a6d94020e1 -17f0: d34a11cba66e22b244f6f95d67741ead -1800: 913f0e1cf311485f8ba5d2344bb0a627 -1810: 37c5f1bd1bcf919b076eb42457f608d2 -1820: 35ea242c4ab19644cb1e811ad4097119 -1830: 4ecfa55165b302a49966f3da12948d69 -1840: ffa13f0c2c2431bee23808476cbcae72 -1850: a6fad303dc2dacc05413ddbc9a3e65dd -1860: 3fc13bc2147d4e203dd6fa2f9c17c9ed -1870: 3926fc99a092a34d5aaf933b8ecc8d20 -1880: e69616695c0f535e5012f4619bf78981 -1890: 319e58015a98adbcd6df4093dded06e5 -18a0: 91ae9bababd6b6471ec4c4189eb7a9e9 -18b0: 610d5509dc47b5120701557a82e11a95 -18c0: ec8b7c1ad8bb668c4ada9976143fcc50 -18d0: 5cde24ed101da20ce5af9bb7bda369f5 -18e0: 673776d7689fc3f479de46224e26e065 -18f0: e7beab58af40bd1ff0febd9cb105186b -1900: 9311794bf237b6605a41774d26e0e4a1 -1910: 3519adda3feccb91ce9199fb29f3c4eb -1920: 90d84163b6c087f70542ed263768605e -1930: d5463c837c8476fdc6e4a8f01eef3e40 -1940: c0e6a80151e39fb4376ee6259222590e -1950: 9c8c1cc489b9de6583a1506d7a63d804 -1960: eaf17c58d1c53f9f4ab93754879ea14a -1970: f7498332c79456975673cf49f37b959b -1980: 4fa0cdb0bf2499824ecc01067960c64a -1990: 9ef04b93ff0025db03c388b9287df074 -19a0: f31f6bcd3eb24b9e4e1441a203dd19e5 -19b0: 5c6e81423501943637a2b07b5a2f9ecb -19c0: a8e12a8a49cfe95374aeb9036f7512fc -19d0: fe05df63751e3ec3bda882b8ee4b4f75 -19e0: c0ed170cdada83804ad995650e37619d -19f0: 1619016774457059cd3e971b8f6a67fa -1a00: c681ec136f8d80462445311c8c6e9aa3 -1a10: a181dd8bd096e651703ffb4dd3d0b3b5 -1a20: 4a6e5d2d3c0d31995ff96a16ad602c45 -1a30: 8d7fd1a3db1326a601e91f4760bd2d79 -1a40: 625a0f2254832ae9e045be1212598de8 -1a50: dcb0ff4afb91ed7927771bb57c5c98ed -1a60: 8a65d8d2283d6f9694d57bd384e2897c -1a70: 4dd62cb40a3640ae334052e7a5174467 -1a80: 2e3fcf7df3df77c32b34193197bbedf1 -1a90: e3513e35a787b81fffb7293e5caa758e -1aa0: faaf3de517b5dd47e007d58473160872 -1ab0: 38cc9bbc1139445c63c8e6fc7fe7a5c5 -1ac0: 8cfdaf018072ad93aaafdfd7e1839a39 -1ad0: 4e4a82061f2f6576c01d719775407e23 -1ae0: a3fed172bf4914418c3ed7a9a2e8ef57 -1af0: 74bff880f8613b74befae8789fc53f14 -1b00: 3890798333d0807ef25dfd6ac532a0e9 -1b10: f52c308ff4d407766aa155fd0b268a17 -1b20: 23959dccb9bb2e3b544a7ebd1ab6c03d -1b30: bf501c44f709084f902f417ee93375f5 -1b40: 65ed3e0fcbb16b3682de396bfc9023e4 -1b50: a48e519cd5f1b07a43a3557dd9168045 -1b60: b41b5894406f7069fa2e0b57e1f70a45 -1b70: 46fc2b51c9e6ff49830dc688bbb174ca -1b80: b3638e9ac8ad861a54105320e82c1f79 -1b90: 5b281d35d3bc6c3e68b44757b81d574e -1ba0: 519d1de6e32c486c6bf8dc53577e1908 -1bb0: 9e4aab614cda245e8c2f6da22999e85b -1bc0: df4a2ce402f18e00f7061c579cb2a95c -1bd0: d23885ef2f641be6c965c335283fa61b -1be0: 79ce86fc981d174e6be5e26cc0462c54 -1bf0: 3160b6f3a1fe003cdc0bce1591886b68 -1c00: 6e607c49e8d5f7cb063d3f0391863166 -1c10: dce1969960b04becb9d1be00e9c77660 -1c20: c633d8bd0ef2417139acf621363c3fb9 -1c30: cf34f5ab0b74fd0cec36a26a9e19c5a2 -1c40: 91f32efaff7f6eab050a5e9b496ed895 -1c50: cb474a1e12cedd9c2f1a38034e51e43a -1c60: e6ca329ef8bf83863200d1df11f6ce31 -1c70: 2b13f1b40a3dfa19d5eed273bcb3c2a4 -1c80: d39ae3c5e7027bf3340133f364df6c5c -1c90: cf0bb3f0f07bbeeb542d8d17e2a3a099 -1ca0: 25cd810927f593c2dbf0618729a23984 -1cb0: 8de0c40a10e4fb947206b78a2e0c3c4f -1cc0: 9fd4fc9d5656bc94bce4b1715c44768d -1cd0: d9882c8ed03258839865653bdd32a96a -1ce0: 84b210e46a3e53fa49731d8e6c31744c -1cf0: 90e89061318ec465bf5d2f3bce36700d -1d00: bc850ee8ad1cce8adef841ba9d03921a -1d10: 6afd1342a201b7e4279acf91dbb75eef -1d20: 924a07c19e15797e508e40eee5d4824f -1d30: 5d3e21d684f5525ce54b0e6a684a7560 -1d40: 8ebd31dfd06de79239cb4ebe866361bc -1d50: 01ba0541b5747696d1f0da88f29f63f3 -1d60: c4894b9b9844458c385c20a8523a14ff -1d70: 1baf397ba985fada57c67db3bf7de9db -1d80: baeb4234396641bf70c31fdba90de601 -1d90: 6f601eec3ec9bbe711c3bdba004f18c5 -1da0: 1a45030ec76f35221d67cc963552dc47 -1db0: 18f846a978ec870c766934c629d50871 -1dc0: 8e929e4630925e2cdc24686a93f9d988 -1dd0: c5ec9911ed60025a436cddaa26ced3c7 -1de0: d2d6cd44c49ba809f4388e47a098aafa -1df0: 99666418bda02cea492d3ee2697bdfba -1e00: 6ffdf34cf3deb8f16da0b2df30cc5e47 -1e10: bebf01f1195ad16a3d3fc055ad03ce9a -1e20: 1fda5c9157ecf19f4b1795e4cc7eafd7 -1e30: 5cf0a6ac8a6aedee7abb22facba2f780 -1e40: 0b6588aedc073adc898732d57f9bc799 -1e50: 8c4c976b28aa000d47f72a01be93928c -1e60: 6545d6414ef9292886f1458bc7ee48c6 -1e70: b4a7796b3099ba04e3503623e8788668 -1e80: c87953df1be0c37eca0b6002ca6a4781 -1e90: b9667e1ffff4b38d782ff5c7eacb20c1 -1ea0: b0d31b07ea3bc191d082802ec7467178 -1eb0: 5fc21f759fce2c118aa16b8b205d58da -1ec0: 7e17754eb1ed46f21fcb54936d5b036a -1ed0: 5095026e0c0dcc6f12d4f789c08a3728 -1ee0: 3d7d49b93271e75a772283939e357f18 -1ef0: aa7da928f4b302b2f603d053458806bb -1f00: 5faf0051c59ef2a717c8dd5d8507452f -1f10: f05d132f96364f17f465a87e4484bddf -1f20: c7ff2249420f189cb21b7d0abd1ac44f -1f30: 9385bc58a47137497308cd2e49f287ee -1f40: c996320f7a0ed68a85109d5395d5ce9a -1f50: ec18fd9a13d7a813d6239b01dcd939ae -1f60: 51f672747e604d5f9d27dc081b8c76ad -1f70: 7c20024cd4b77c739c4037c60c19ce8a -1f80: 7d369facf9066bc5514ed3bd494baca7 -1f90: 68cb8e51b57722c99acf6bf139c765a3 -1fa0: 3bb6f56638388fda81177b937dbd84a7 -1fb0: 2ff9dd7a289f96273146686ff82de83e -1fc0: 13d4ae328717d2ad3c601d07900129cd -1fd0: 7f3bca5bf46236ffc5f89ec209316397 -1fe0: 064d37a91b36c9b5729353a4376bbdce -1ff0: 7773555765693c462d5d3373287511a8 -2000: 4a9ec244c2a818fc30da656ba7432137 -2010: 7db50621dfff4770f4d5fa0b28db4897 -2020: ef30a7d476e5902652943da46c8531d3 -2030: ff405900b7e6239e71f9bd02e349d82c -2040: f36c3e79fb13c945f0508156c54a0d99 -2050: 0e8814e3d7106d7c085ed79ba3ce80ee -2060: d8702f33017348aba9c95e0039f0e24a -2070: 13ca98bc985fa2cd25acc44d42f1db63 -2080: 3066a4de53d36b8748f507c3d2958c4d -2090: c87356dd99662046f071558c9d7ec488 -20a0: 46936287f6f35c01007e01987fa8d8d5 -20b0: 3c447ae42c3a41d0dcc7b61677e1718b -20c0: 37a5399b34b163ae4ccab14ef4e9a8af -20d0: 11b0ee359598cd86a880c58f39ff0e0a -20e0: 911c199385cf7fab4a0c14032b102bdd -20f0: 0d9c3294747e2305e41a52ce69eae3d2 -2100: df48064cf046e3f62df92373edec74fe -2110: cfd9d94c5c7aa597665c83a2f74ef078 -2120: 3b32b399901aab8ef9581e8131077b48 -2130: 46f0ec8953a22dab140717a5a4f9f337 -2140: f3488bf16bc39de86709872d2cebcf8c -2150: f90d3745a77f11b9708fd1f883d228f5 -2160: 0d70554667833e6dd377e824404a042e -2170: 713829977197255d08526f0c8fcdd710 -2180: 8a2a9b9e1d2866aefed1a5005da519f3 -2190: a4cbfa00b035cf384fe2a8578eb66750 -21a0: 2cd38379bd93ac1aee827eaa7f870184 -21b0: 4a7b7cb36bcf5cfe7b7289dc23c8db91 -21c0: f5743280d70ad5f7a19131a0eeeb3484 -21d0: 45e4d2cb30b3cd8fd71efbc7700f8bd5 -21e0: d91b226553ecf4fa18a85ad76f5c2a79 -21f0: b1d6bdd4efd39a30d61f2c6f0505e73f -2200: 0f80de0d0b4d46b2a238e736e73ea6c8 -2210: 768de0a744a39a928fe2c079b67875f1 -2220: f58e72f6fd9f80006939a1366ed7ae2d -2230: 24dff9af0d73bea55a41cfed87713475 -2240: 6aaa18331abf786ded99664b2910f018 -2250: c87ebb1ae842f4ec7a196993cdf51885 -2260: 3bd611403c5afadb5085bc0c75bc4c45 -2270: 3f09a927936ef5b35d0fc1764dc81de3 -2280: 54c6854d838a01e47713ad4dd34cf37c -2290: 6d01de9964032c922aa827a877ac845a -22a0: 3039acb659dd057d45ef479bf3a648c9 -22b0: 2dcaa07bae01e2dfb0a518ec2259b7d9 -22c0: cc99a55d72af4fe8def3be4845fb4f3a -22d0: 760bd48052ba43d153a74fc0ac7db58e -22e0: 7d08223a7fa94aaac99fca914c4da02e -22f0: 42e867c012318681cb2d30eb0c593c0b -2300: 45cfc47038d9c711cd4c81ed0435b362 -2310: 3c78c813c5937d85858c5fb0505cf24b -2320: bb76b2f062f9102537fb5e8660f2fb61 -2330: 53046365d89a6ec4a3da956be1047b0c -2340: 016358d133553f04d9d9d25bc57f9253 -2350: 5da193f21edf71aa300b1ff81b8afd6f -2360: 8fa8dc2126f89fd73ae42a6a6fab63e9 -2370: 24735d1dec76de3b483d81fd7a9f5821 -2380: 03435acf1950a74983a5db7aab755633 -2390: 8ff913f97fdda7aeed21800f33635a49 -23a0: a058210339b53526124c33997dfe0c27 -23b0: cdece6e0d58b3ed995648f04230be7ce -23c0: 7b0bdae9582102bf96de9594585b1d78 -23d0: c7bfa034dc767a0209480587ab86996b -23e0: 6d4417af2ffc7a5821031fd5eaa1bc74 -23f0: 51be8d975f8ce6b12e804fe8e174ffac -2400: cd707086dd409f92e01c5821036497ee -2410: 64cec50a7ff1096907a0bc4d8f4901d6 -2420: e7e53613bd317cf27d76bea435582102 -2430: e168aae507c600e3f5916831990d3584 -2440: a08c8bfe4cf4e1a9f9f4d2ccbb4314cf -2450: 5821034c6e7555d4e4dc8cc144e5c36e -2460: d186439fe0ba7d9b4c4b0af5b2624b08 -2470: 2b8d855821035a8b9aebdd95d863e025 -2480: dd1adafd4fdb314d59d8b4f8c0fc64f5 -2490: 41d9bc0dfeeb5821031eacebcfd2061b -24a0: 115dd43df32ff6ffbf7fa4ae35d2c90d -24b0: 9613bd4173bd4f81a0582103653cc6a3 -24c0: e34cd687906c3124b0100ba8bf4ee2e6 -24d0: 255813624472e5f8c1cc687d582102b5 -24e0: a2f731a389bac8fa40b852cbb03d0479 -24f0: 37c27e5d51a854ab65a882efc3cb2a58 -2500: 2103554a153cffff7fc1578e29d9c07d -2510: e18040bb9d6bc0cda626faf6bdf7619c -2520: bb4e5821029c6be6b826a92ce18f1b15 -2530: 9922caff2aa5b4c3cd4fa5bf3400ffb4 -2540: c1e1c6691d582102e0d8b5776a0835f7 -2550: 41ac29630d3c4867ff236157047502d3 -2560: af7f0d4da4de7bcf5821025fd71718b8 -2570: 38cb1c742162b9a1a0002efe92be0358 -2580: 606239cc429b7309efd4685821035fad -2590: 088bb91c1212a6ddcf6a1622b5c61d92 -25a0: 2af262ba7a5a619b3bade05a9c715821 -25b0: 03e0d7a9e86b0145aef6a08d617f3b9c -25c0: 1be87b93412ecde747d2413ba0810a8f -25d0: d15821031dd55f2f7b21a1a7df4c7baa -25e0: 7f3669ba06edfe23b4170e688e93db24 -25f0: bb3137b6582103c2ecc7d41035fc65d6 -2600: ace5bd9b408caa5ddc2c30e4f919e98b -2610: 7842104a1e88215821029c913c9000d8 -2620: bb21388a1786e60131772b8b04b82bc6 -2630: 0c30b5e4f74e966dc2d05821039f9bda -2640: f76719aab8571ae0a2564866243b5fab -2650: 45cb09be704c930bda1dafd5ae582102 -2660: c519b0c9e01bb957e3f47635299a1de5 -2670: 84880f8df2099a687252e618cacc6317 -2680: 58210260b8cac6cd6771a93b54eaacf9 -2690: c3673e4f05df14847d6ad21859b66c58 -26a0: 3d1b095821037761096bd5101e13f6ab -26b0: a8d0f959957d3d653c8d0bcfa797163e -26c0: beb66694b634582103c2721ac0af1fe8 -26d0: fcac0631c5488a9d40164c013da56c0e -26e0: 7f1109c8fe50743b8f582103199be546 -26f0: cdf5283e2fb9567a2a49dfadba376d2e -2700: 3d81ac4ab941351a75e4b616582102f2 -2710: ff1995f86ac9457d536d070ce9574571 -2720: b1ff6614cbf96409701fb13f6e9f1958 -2730: 2102e143ce5162833181e97bc7183fc8 -2740: 802690ad8a84772c3169c3c71e283f3f -2750: c4b6582102c4ce53991f0ea7d05a5aef -2760: 444b5180caca86759690164bef89ddc3 -2770: 5dbf31357c582103c1e06f788aab0b07 -2780: bcceb3fca47f8fdcc16767753ec050ee -2790: 005d69b82eafdd47582102a10ad5e568 -27a0: d9e95feead80b68b089d05b3bf2b482b -27b0: af3656f203c0e45cba87125821039a96 -27c0: 84776a3e643e62e304e4415fa1da342a -27d0: 340e0f5b55dd8e791a017b4f48155821 -27e0: 03b115f1192c6b241864a449e73eba9e -27f0: 80f1bec35a6f73b375ba28120e1438a9 -2800: c9582102271a71dbd6552ea784127be0 -2810: 3cd7f586d9d2711e9eb8ade910575a95 -2820: 3e19d91a58210271e136f3331dd43126 -2830: 77cda722e034d754df0f3d8e5c59d17d -2840: 32a1d61e14c543582102dcd99497eb69 -2850: 43c35f891a1962c7ecca1e4d0e602c09 -2860: 574e5f3eaf370a6a45585821021ecd79 -2870: c46438c0f541391cd254ff92ca5f91e6 -2880: b40037942033a814330f8f82f7582102 -2890: 81b51267eb03f4648f7aff3503194287 -28a0: acdc3305937f73708e5bc03e51a8212a -28b0: 5821031fea2bdecce55e50be1500a6c5 -28c0: c41676faecf3a9a4047f6468b3a5bd6b -28d0: 369ad7582102aea942c7f8c8c62ec210 -28e0: e1f5f14a67d4aa4ec25931d5c5949f52 -28f0: 4487d4f40d3e582103e379078c79e6da -2900: 5d80554caecc67fbe822d4042f571456 -2910: f82b3847ba9ff5c78f582102faac20fb -2920: bca846c848d6f03bf4725d90570f2342 -2930: 25eae255e42bfdc038156041582103fe -2940: d0a0b2dbb9651ccaaafc069aeb90e92f -2950: 5e32055a333d24dfb8aa57bb017d0d58 -2960: 2103f53867a60be1f87a67de1eea7758 -2970: 816782afcadf544d56db89ef31632263 -2980: 11f958210332e55914d85f4e0705ca08 -2990: df93c623292ceaba4eebc50cfc60e73b -29a0: a1560f01185821029216f2b476da400f -29b0: 1bc91984d6b77a9d65df371c1d8e086d -29c0: 3b31730370a9cf8258210226982ca5b6 -29d0: 08aba96cb0fa9ffa4a6bd3e6b305a274 -29e0: 8aafb9c4e5acf42ff67b0f5821030021 -29f0: f75dba2f6fdcc89d8294652f57af2c57 -2a00: 2c3c3acf35c9c8cbcbcf34397fd05821 -2a10: 02fb7a6f0ce1b31c014c2350285cafa4 -2a20: e980bfc9581af58de25942ec278681ec -2a30: bc582102e20d1d5e5526009ea8d9e0ad -2a40: 9b794d170f7b08d32afb868b1ebca5a3 -2a50: 92ee5b5558210325418a42bff53c36a4 -2a60: db3c5e814f2f6f47d0cbce5dccda0a52 -2a70: adf365a02bf7d258210339cad0673b44 -2a80: d2d3f4b9dd9fb29444179b2928358fca -2a90: 04bdb86bde12700f3e1258210287fbfb -2aa0: 3507ca25595090e2386bbf6c6c259c4d -2ab0: 5d73d12bec29506927871e8fee582103 -2ac0: d3b67f99285f29688e8afb72a3ae7b58 -2ad0: e393f576653a1e799ac8df45be2604d8 -2ae0: 58210218093de8f8c6c6d861827b37f7 -2af0: 6395c572865f0773f4c630ba5b960a61 -2b00: da8c4c582102780e3afbf34fa64865ae -2b10: 1b3c5ef000d0655e258d6377b72e1974 -2b20: ffb149b72e7758210274a39eda462e88 -2b30: ef223cd117facf8054ced8ccd38b7cd3 -2b40: ecc4d0690475fdf1305821028727297e -2b50: f656501ffa45e1980686fe43ccfc1ac8 -2b60: 3f1a18bb022a3b369a9afda258210247 -2b70: a82188c396bf163fe909b31d84df62b3 -2b80: 957c4eeaec873bec46de97c255e81658 -2b90: 2102c52e101acdf1a1a2ab14ff860190 -2ba0: c822cb540fb8be6182396714246aa383 -2bb0: 36295821037e89f2a22e0a72ecabd613 -2bc0: 457eb13926c0a472c9d682072d4ba8a4 -2bd0: c9bba846c35821032e9e0165776319f4 -2be0: ac266ea031d3cbe54c80be7cbdf3fd41 -2bf0: ec0727f8ff2d225e582102c9a12fc760 -2c00: 75b34cdfbcb8ef43cd9c50fb83d821fc -2c10: b74ba3d268e4d2554e4a1b582103fae7 -2c20: 9aff9ae5c46496ba21b284c6d72c741f -2c30: 4361a9ab4279aed334cf930c9a1c5821 -2c40: 03391915837b50e7dfe05e0f4f652344 -2c50: f97db2f1877e69388860f6fb91c355e6 -2c60: 68582102f508b90df7e220e58b9accd1 -2c70: d95a60f52f273ac3200dc107223b976d -2c80: ce3dd0035821031d6cb0cfb5af74f1a0 -2c90: 710765782a3002f5624f5fa4f46e5db6 -2ca0: d15a7fef23f233582102ea1a52058e88 -2cb0: 90266cc91b66854e10ba29bb262e3aaf -2cc0: 51751f10723b425d1c2c58210376bd9f -2cd0: 009492bf352b42cad1819f9ef980ae69 -2ce0: 1ee45f2bde8cbf0d6be794c82d582103 -2cf0: af7635c01233b16eb750b4dd78b67294 -2d00: d2033a5b29194a052700754bc82f385a -2d10: 5821027c146c55710d1761b2dd3ca398 -2d20: 6d47fba1e9beecb503dee3e029842676 -2d30: ab96a7582103261e1fa9ccf2e2813cde -2d40: be1e5adae115269f7117e2278724d234 -2d50: 2c7649400d03582103270522f1acf2e5 -2d60: ef0c315ce8ea054dcb66f8e4d7331049 -2d70: 94f3aeb23ee2ee8dbd5821039cca00e3 -2d80: e19a2e28aa960a88a9acf0dff97342f2 -2d90: fee6f1ac88d0c38dd2cf155658210217 -2da0: 949f1908970829c2e9ba9b4331b85152 -2db0: 31ee34176b15c462b1039cae60ede358 -2dc0: 21021d71c5c7a50b941fca415641d78d -2dd0: f3c7f7c8bc55deb0cda7c202c4a7cad8 -2de0: c7185821026dcd29aa01060a3ff1deac -2df0: db2884e3df763797e4a6354f6196c576 -2e00: 8966117c095821032db406a7a414e35a -2e10: 7789a7fc6d52d0722a6f8f389bde9149 -2e20: 641547971f8af720582102088bbf647f -2e30: 4e275fc979a1e98758fa088527392ae2 -2e40: 0e906d59fc320b0c38f98c5821034b21 -2e50: f7e7240bfd97be1d34671ef9517a4501 -2e60: 935f296652765c2112d7a258c9445821 -2e70: 03aefcec4a3a3d144aefd1525d50999d -2e80: 2364b524484851bbcfa51a00fb857eec -2e90: 98582102284c5defbc9bfa67f8e4cc6c -2ea0: a7e3a31f3bdb727b4558909385b1f7e6 -2eb0: 6e7dcff158210353b3de9275d2472c38 -2ec0: 5ffbafd4dd770160213064cc785099d8 -2ed0: 76ff080ef6e86e582103f4f4d8fecba0 -2ee0: 1260c14f7e9e81c417332faab0fca593 -2ef0: b2a630d702ff9a74220f58210367b0f4 -2f00: 556813b937ed1f264f0794c6d0cda4e3 -2f10: 0814d0931c84892e0893d6a0dc582102 -2f20: c9f41c87b084ebdb24ac6a5014fd263c -2f30: 2b924812183509d08dc4b2fa1fd46ae6 -2f40: 5821024924133f1ccd6517e91d5c1a19 -2f50: f42a91b4f05835fc77d0224556da4032 -2f60: a7bebf5821025883b5df946d062006d8 -2f70: 51fd91db33ba65d3ab36674ab620ca3c -2f80: 2db810ce64d158210237e49467ced83e -2f90: 47bd8f047ea04044ec3e3b348e58764d -2fa0: d16a21967a3d8a35fe582103329242d0 -2fb0: 8a6a381c0f14b3c9331d77771f0a368c -2fc0: e8ddfc3162d0c853474cc89e582102f9 -2fd0: 9c7963ae7de4946d017ed3e687402c79 -2fe0: b613e24134b74b1c0c77199373080b58 -2ff0: 2103b1c4e71c5b07eff98a90c1990b59 -3000: d359393b0c99eeefec47ad2a0498db5c -3010: 100a582102b23be494ba848feeda9865 -3020: 18b4f936981f8c50826b0bd780ddfa41 -3030: 263f9b4ef2582103d36ff84a72d0c6ca -3040: d82966b704002adee57c30f1fe5c0730 -3050: 07e0f01b3e6fb87f5821021d387974b3 -3060: acee7ed620a68a977a4cce40c277a1c7 -3070: 9806f32d59ddbdb9e5c0b9582103e7ca -3080: 1272dcd09dc599adcf13d2cb07859faf -3090: 9416f57d44b145236617c356f9115821 -30a0: 022ee0a61e3855e5c5ec575d1cabd936 -30b0: cca18738f03687d112730171ece388f5 -30c0: 7a58210383b051fc5c6484d024867af1 -30d0: a99cb1ce764b21cb7ac6f493dd797f07 -30e0: e184cd0d5821035220abb19bbb372df3 -30f0: ef0964931fc0199197cff16f6d60cb10 -3100: 53117a41bffda0582102e72f78b30caa -3110: e60b407a023f51cdf07b3663ecdff16f -3120: ca67820bfc76ee12123c5821031e1ee7 -3130: 044aa44dea84a39f2ed4dd4326e7b1ab -3140: 2b7ba9d986b4ef43588c0b3d75582103 -3150: 9b142fd0982950c351496b655c53f55a -3160: 99598229da60544d6a890e5be83174cb -3170: 5821022d31ff83e3b2377a54adfc5d9b -3180: 4c4396d3985aaa9903ae32da7a333a77 -3190: 3775ef58210371e52589407b5538e758 -31a0: 916dcf38856403274047a264a24dba78 -31b0: 6ebb4c96b2a158210212a18e37b48700 -31c0: a11bc91e18aeb6337571edf45e342809 -31d0: d475b2f907678f74ac58210230b64b6b -31e0: c4841580fdb4690714e76ff1f7e1eac8 -31f0: 0a78bbb701895e95e69a5770582103c7 -3200: 6f39e39ae03f4fbc8f2f8ac41f35480c -3210: 59c9ee85c868566760399220e826d458 -3220: 2102a1045ed9ef4b18802054108bcf85 -3230: a70f93da63d1fe2a58ce0a4e5fccf48d -3240: aefa582103e9231b2593f2acb8783ce4 -3250: ee889591943d4f6e3acc7c0b409db5bb -3260: 4f4171b278582102c039b3950566dcab -3270: 1f00410721c0ae8b4493fdb09c920c10 -3280: 059166a3510431ab582102f8dda8d7d7 -3290: cff6cd4967130cf62faec6446f8397a3 -32a0: 418b9dfd65c115c6fd6c6d5821036ec2 -32b0: 7feb98b7e5e658c89c8d2db31b1223ba -32c0: 6f5214d39c9f13202b4f28f25ae85821 -32d0: 0348d8a2bc0beb4442e7cbb1b6045ffe -32e0: c8660949f4b7410d901687519d8fb62a -32f0: 5c5821037af7195291ddae0885af924a -3300: f02dbc883b2a8abb121f1e73d1a347f0 -3310: 8684524e5821024ab359ec9f570a0730 -3320: 676cf18a813dcecf0458678c784a624d -3330: fe48e87be4531e5821021823d6c4d105 -3340: 3c26653490bfc5f2bb82e8cda5fadd8a -3350: 92ab5a23cdffbad4855f582102b0bb0c -3360: 6c7a9da17291be339cf7891ff99cf8be -3370: 534f173c1bb01d2767ba639351582102 -3380: 8b710aaffdcb2500b74377f8addcbb98 -3390: 22efe0d644c3b2fdd9a922d4499e64c5 -33a0: 5821033c24de3e0a1da000cea36b7101 -33b0: 962aec9115b6fbeddefd64340270b663 -33c0: 2032bd58210246a5697011f335afd541 -33d0: 64720cd6163f08ee5826d6ff2641a663 -33e0: 438e401aa6a15821033e36071b1959f7 -33f0: 85ad5adc251ad97c1a6953edb883ebcd -3400: ec0ecf29599d0cbc8958210259bef980 -3410: c0856b1817567759994791d9dd43a860 -3420: ed4c748e39580b176ed450cf582102a9 -3430: 010b0192cc0379f996a8e4c280a78e6d -3440: c45a4cc6480c463e514b9845afb3cf58 -3450: 2102a112af16bea7c14b088c0ee092fb -3460: 913ec55ee7d8e973a2e50944c2f906f7 -3470: 338f582103f3bc01004b39eecfa3441e -3480: d94991022ee8c9263e58e3c27b3a25bc -3490: d6c5fe53805821034b6c79c98b4158cf -34a0: 9bcc2e8371db208bd757fc0b949196a9 -34b0: 315050d7f2b34b585821022f785e91f2 -34c0: 12d468a4395f60f2ba2ddd58cb8c1f32 -34d0: c6ffa965578992458ab6f4582102c3d0 -34e0: f7a6ee23db0166b8e5de7cb2144eff2a -34f0: 6aacd9b51076e55d07122386fad0ff58 -3500: 407803232dd492dacd3c0f7c5401a577 -3510: a4bfa2891cf5c9da07134ac2414522c5 -3520: 1b397e183602768910747ca3f2e065f1 -3530: 4a625b278cc2d8b3bca5bae84bbab6bb -3540: 03 diff --git a/eras/byron/ledger/impl/test/golden/cbor/ssc/SscPayload_CertificatesPayload b/eras/byron/ledger/impl/test/golden/cbor/ssc/SscPayload_CertificatesPayload deleted file mode 100644 index 0372dfe32e6..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/ssc/SscPayload_CertificatesPayload +++ /dev/null @@ -1,44 +0,0 @@ -000: 8203d90102848458235821024cec5c69 -010: f73122f2dcd6b6f6921655960d3a622e -020: 002e8a318f6ea4a5cced31c0187a5840 -030: 5c0835d30c015dc9ee745fdf09120aa0 -040: c335766112d1cd1c88fd72e18b7306d0 -050: 27651047a268254d71ec8a8608368b6d -060: e25d56cad17d65a415489c85df94d602 -070: 5840644c586b756573565a394a664867 -080: 6a726374734c4674324e766f76586e63 -090: 68734f7658303559364c6f686c544e74 -0a0: 356d6b504668556f587531455a534a54 -0b0: 49798458235821034b619e132ab6433b -0c0: 9a0aa57b1593a7bdea20a58c7d442876 -0d0: 40ce1740dc4f79b9187a584072034302 -0e0: 04e0d8adbdf0fc778a461864757fbdc3 -0f0: 8a34121181edbb69e9d9a15ac06f4079 -100: 72a1c9a19ea0bfe451317018c89d4a7f -110: d38352083092e63270d1c90e58404674 -120: 324e766f76586e6368734f7658303559 -130: 364c6f686c544e74356d6b504668556f -140: 587531455a534a544979336654553533 -150: 62343132723441457573443774638458 -160: 235821035df64b0745b7a8c0d92b7f45 -170: 68c7870f9a3eb380da5831d71d86de04 -180: 4cfa4d4d187a5840a886c42070ac836a -190: 292800ed75f5acabf9a9d768ed91ae80 -1a0: c2fcf065e5f66377f5dca619e4d100fa -1b0: cf4d8778c4472da22232617ab4740ff7 -1c0: 1acdc5eb0c4fed0b58404a30754b4462 -1d0: 69376936644c586b756573565a394a66 -1e0: 48676a726374734c4674324e766f7658 -1f0: 6e6368734f7658303559364c6f686c54 -200: 4e74356d6b504668556f845823582103 -210: 7250bc3932b5b5f6c42774eef3c06ea7 -220: b7f13686e83d6ff9ec316459a6373682 -230: 187a584024319a81ec9754e293e99e20 -240: 03706f86b1bc98c318abac8c1e3488cc -250: 7b24ef80e6c3569f948e8f51fe66848c -260: 609d38294e814809976997396e968039 -270: 4d8e920058404a6648676a726374734c -280: 4674324e766f76586e6368734f765830 -290: 3559364c6f686c544e74356d6b504668 -2a0: 556f587531455a534a54497933665455 -2b0: 353362343132 diff --git a/eras/byron/ledger/impl/test/golden/cbor/ssc/SscPayload_CommitmentsPayload b/eras/byron/ledger/impl/test/golden/cbor/ssc/SscPayload_CommitmentsPayload deleted file mode 100644 index e2153fc7dd7..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/ssc/SscPayload_CommitmentsPayload +++ /dev/null @@ -1,896 +0,0 @@ -0000: 8300d90102818358404b6d7977346c44 -0010: 53453553346653483665744e6f756958 -0020: 657a4379456a4b63337447346a61306b -0030: 466a4f38717a616932365a4d5055454a -0040: 66457931356f78356b82a15823582102 -0050: 294842accb1d76aaa64bc1af231378e1 -0060: a01a67c0fc8010824caa0210970275c4 -0070: 9f58235821029bda1a8a05240eab8993 -0080: 4d68f93eb836af82e7acededbadbd4bb -0090: 9627c8561ddd58235821035ede259e97 -00a0: 05449b2e50731e76417b854b45d2f67d -00b0: 2748e136ff95e6fbaaefac5823582103 -00c0: 9c248ef9acfa42b56cab4adcfa8730ae -00d0: 39c9226be5fd84be620483090df4ccc9 -00e0: 582358210297a9465b5bd034fac6ef77 -00f0: 868f9a076cf5b9d6a6cb357857a2ead4 -0100: 9c01b9e388582358210312b4b09996ca -0110: 08b88505272525168bfb4c4ca06934c1 -0120: c2d545b31ccf0b238ab75823582102cd -0130: ad51ea02295676cc0c0fa49d5e7d317a -0140: b477b7e8a0289bfa15631d6aa52dc258 -0150: 23582103bd385b55292cdc74674d87fd -0160: dcdfc93182b9019d115354ab2709ee51 -0170: 5eb7d8f35823582102dd5c15a30b24e9 -0180: 6723191e330c43ad4b47db2593c6b1c2 -0190: 7a113ad15b9fe18dc358235821030aa0 -01a0: f61e0449d7dca6933936f47853d7cbef -01b0: a42657077d3c92da4118cface1dd5823 -01c0: 58210241906c49e270c1936cc671a4cc -01d0: 7ec4e8a7f8551a8850e29245057ad4b0 -01e0: 42f5a35823582103a93e57a31bc616cf -01f0: 50172372c10b1fe2a5f18ebbd037d0ba -0200: 716b54cde1c1b2df58235821025de1b7 -0210: 92550bc5147f7f14cc227509d6a25ae2 -0220: 004765214a8647222dab33897a582358 -0230: 2102933531e19aae89f085c975393731 -0240: f8dcc7fe340847f4d6c7a1a0c4dcc467 -0250: eef35823582103cea0a1183de2f5a220 -0260: 5637daccec9a0ea317113b7782bd8d78 -0270: be75ced1dbf3805823582102664b4ebf -0280: b08c14a7c76bcca47e1f37dcc35ae144 -0290: 3f8d2a90781ce65dccd95f5158235821 -02a0: 0348bb9bfe233fa7da0ececff9a33388 -02b0: 791c911e91a0c7c5956650b71a5f3659 -02c0: ac5823582102da49d6c104fba07b1b37 -02d0: 8967784b2fdb111d8ab1938a4efe567a -02e0: 781153f3b22a582358210242a9de48ad -02f0: 25ca196b50a9cb46e743fa7aa16502a2 -0300: f56d0d188c227955773d505823582102 -0310: e58b98c63b0760bd0c1f99544be9ce7f -0320: 3f5190b07f7a89515c0cd0325cf2d6c5 -0330: 5823582103314be53fb69543884c6ae5 -0340: 00ccb1f5f0536114fdb29ee2102c0c34 -0350: 85514fbed55823582103a52649a80ea3 -0360: 433208b32405a9eda84edc675236bc14 -0370: 1754154ceee6f2b40c02582358210322 -0380: 5dbfc0579d5f04d5538d9aff9bf5f0d7 -0390: d6e090d47f083451b14c4d7480b16158 -03a0: 2358210203b8836c8f06927c339806e1 -03b0: 600a36e42eb810f8135389fe4d00c169 -03c0: 20b7578f58235821025a0bf00da25c5d -03d0: 16c8cd712d35bd5f64e88de7dd7325c0 -03e0: f342706e4b5699fd2b582358210202e4 -03f0: 0fbe8a6d76547b759c4af1f2f77d57ac -0400: f70c94a78bf7846b327f6cc52a7b5823 -0410: 582102ad107e6aa56ba738adfcfe5221 -0420: 6dc07518a97f03c23ddaa0f370f69ffb -0430: 7362845823582103392e2225bc6fa588 -0440: b0e0435b9e9467090c9cd69c2cec1395 -0450: 5eb99a7a1a7cbc745823582103069f0e -0460: 42d8faff164f3ea7c93fbf35ebb4851c -0470: 86b79d0b8e23bcff6bc6bb49e6582358 -0480: 21021cbefa934aa9ed02ead02fd492f9 -0490: 8623b903761782f1b23de10e26d81e82 -04a0: e56158235821030c14f1393d9787e603 -04b0: 440031b86ca9b724cf12955222bf52f8 -04c0: f272046ea991dc58235821035f1faf47 -04d0: 675dc23f1854598d42e1e1a9df161a48 -04e0: cce4c305aabadc90f2db9a1358235821 -04f0: 03b0ebffdafdcb12cfa4e39eb030cb5f -0500: 4dca4a92f8b888d7e450d269426c34c2 -0510: 7c5823582103681a2b075b44b296fe88 -0520: 52a307a93c77cb4e2a927bb56d6f370a -0530: 061d6a63dc1e58235821027253193281 -0540: 5e443f1bf81daec10ac575177cdca9ac -0550: 1f7574159f5f4bc6807f0a5823582102 -0560: ed69e79cdd488880edef68fd2b5b5e6a -0570: dd11374aef21b407eb15b865af95397f -0580: 5823582102e611634b87df1c402d7580 -0590: a6c42eb701a335cae922f40c6d7c9953 -05a0: 2e110b74445823582103fd56a98ea60c -05b0: bc679f15e7e0fea32f992c66f9c7cd9c -05c0: b53f77dc537c3a3eb1d1582358210272 -05d0: 1c2d0420fffda3c066bdeababc9e72c8 -05e0: 9bedce37faa48751a4d114b4a7e18558 -05f0: 2358210379121a1c21416df70a0d3cc7 -0600: ad61e80b77fbf8ae9f47287e7baa5541 -0610: a0aed4765823582103cfda6b11727437 -0620: c955dd6105df50e7c2f725b1d969533c -0630: 0ef2652226d105d3f25823582102f05d -0640: 06750c33ffcf12229c0b589e94faa9db -0650: be232c1e34ccac9da60945f0449d5823 -0660: 58210353030c6515d2287b040a7e9bd6 -0670: ba62362a472c58aac501a0f725b0ddd9 -0680: 02a5cf5823582103bbc6fd88c2e6426e -0690: 07c9134bf8ac4f51fa4b2dc9ed4893e9 -06a0: 5ce853ab7121af085823582102b5c89a -06b0: 77ac5181629aae43ec47abab09e09019 -06c0: 21af2a60c7c4f757e8eba63d1b582358 -06d0: 21037cb53bec0f9966d49845a9a21742 -06e0: d747f83ce4be419a4f6e618d33221ea5 -06f0: f13b5823582103ed9277f3d95ab3be29 -0700: a4fb618523a50b12aea175b4e77a6169 -0710: 72887cc6173e9a5823582102a0fbc434 -0720: 540a32aec22a3aa66f405dd2505773d8 -0730: be2686893e575173d126f0ab58235821 -0740: 0399e21fc9573fb5b30e54ed2a114de5 -0750: ca7c6354156428ff4a4dbc39f678496b -0760: 6c582358210231e013fb9001204a8913 -0770: 1cf28f8951a462605a26a6a8d2d35ab7 -0780: 57fa0fc1ff555823582103d7c2b648b0 -0790: bbfaa90a1cc9d892559fdcb37a0064a9 -07a0: c055a1a2e34b4d1fab27af5823582102 -07b0: aa5d3eb9699f5babc3fdc643464c6e58 -07c0: a5c3c5624c86e32fef3cbd5f68775251 -07d0: 582358210380060a98e1a2294858d35f -07e0: b1f0a52128353d2d77ec97f151a9fec5 -07f0: 03cce778de58235821020d422e87ed24 -0800: f8f4db042eb2c1e829e1e2484bde74cb -0810: c470427a62792901617c58235821025a -0820: 10effaeb3cd4ce46b9aa4073b9ffce8b -0830: 701cdf4ae49eccbe5b3293e320388458 -0840: 23582102ad14cec8646df8d75a5ad8d9 -0850: 001d280309301bd58c85f30a9a79908f -0860: 70f41a0a5823582102c96da83d747d22 -0870: 31b8e08807949c2d148a32deb4bf36c6 -0880: e9353df94fcce70de55823582102b17c -0890: 816429519ec8972643aca5fb75e39817 -08a0: 18822377a82d4e62c9e6f294bca85823 -08b0: 5821039a8813575b955da94f31315580 -08c0: ea9da192703c28210cdf7a16e4bef9f6 -08d0: a00a2658235821020a36a508e62aa38f -08e0: e3f1531e00a2591a8c690826d52b6a97 -08f0: b97e96a9d1bee0275823582102394035 -0900: cabe7def188134bc488f8603c52f6f80 -0910: 383528aa3373aaee4de7f27cae582358 -0920: 210221d12296f4c8c0ca015dbcfd92a8 -0930: 51ba4df2a4a4936c65bed2ef493b402e -0940: 374e5823582102dbc9434aeacd5a17e3 -0950: 02abe5ed4924fbca72d52eb1abbcf19e -0960: 8530bc9b6d19855823582102478daf05 -0970: 6686a38e929db041bc3107cf5baa82a0 -0980: 5a63f795fdaaea29ebbbf1ce58235821 -0990: 021ab04732b0eb854bea8122eec0bed2 -09a0: 1b3334bafac2cabb35b4f07fee9b7c0a -09b0: 7358235821025f68ef8c389765124ca9 -09c0: ee29be7f47858d6d9057a2255400923b -09d0: fe0d7b2c125b582358210326820323c5 -09e0: 81e759c5e6604d0b457576ece4469f50 -09f0: 8f707bc6272dc38c0df53e5823582103 -0a00: 99b5746088d1e4a4433579e8667412c2 -0a10: 8ca2e5837f392956ed19121d810fa3f2 -0a20: 5823582102585d568afd893e50039c62 -0a30: 7b00747dbaf8ac2cdb773a356a130743 -0a40: 96d6905c8a58235821020f899edd7da1 -0a50: 2fce02def2154d313c04cb477365a9ec -0a60: 26f2fd65ec5b64504b46582358210359 -0a70: fbbe6a834552907d521ce2b34d668113 -0a80: 44f345a113cea25f0eaaf3613f892858 -0a90: 235821021ff9c399c66e4544c1ea5ece -0aa0: 97e4eb7301aeb82cd35445739712e0ac -0ab0: f9aec69d58235821032a5238b1782b65 -0ac0: 7c3c85a6c4ebe2cc73f5e410fc683fb3 -0ad0: 4816f34d7365d6be5658235821021181 -0ae0: aadab475dd407fc7e0ae4f95fe96539b -0af0: 33df762c4247888d660876ddd08e5823 -0b00: 582103cafd90dc39ae649cc45fd42456 -0b10: a4daee0525b720235830f0bebaf6ee68 -0b20: 86d71458235821029639a9d47b75c00b -0b30: 25769d49651ee459d9ce053e841ff08f -0b40: 186b011ef41edaf35823582103c2edee -0b50: 8ebe749e5075d3fbb58a977e55bbd02d -0b60: 6a59ee590487a691ea6e91c831582358 -0b70: 21028c67c01e2099743d6f5917949960 -0b80: 30f429777709edf1847866987e9d3cd4 -0b90: 217158235821023db9a9befd52097357 -0ba0: e8beaabd266ce41c93cc618dc0abcf60 -0bb0: 708c7e7e49b3ba58235821032986bbc8 -0bc0: c170686d2a2117cd1f0374ccb8137570 -0bd0: f219f08ecc9fd195d6edf20358235821 -0be0: 0207b48dab2be7a90eb78d07578421de -0bf0: 64556e35429011ad3f3d3e5ef58568b1 -0c00: 7d58235821035bc3bea6bf38100a2ded -0c10: c0cf5f64fdd2a44b1e904a994d4eb6d1 -0c20: 3dd18ed4b11f5823582102417c60e68a -0c30: a14ae6b9497a91d2a7bb3566eb3e8563 -0c40: 686e34e3069fc98f5a8a505823582102 -0c50: 79cc98764a9869375484da2ddeeb5f6e -0c60: 30fdad8ba968843ecd4080f5877aa1e4 -0c70: 58235821026fb9617b52e1c97d642dc5 -0c80: 56dea1aaf45c488963bf74a7fbedcfbf -0c90: b12f0f70ac58235821036e3ef9600db5 -0ca0: fa54a2ed39b50124c5cce767acee72e1 -0cb0: 35f5b4b38ae34b9443615823582102a8 -0cc0: 243ead08b78c4ab193bdf5714bad7789 -0cd0: fefa748e6e2916361f859e5a369e1358 -0ce0: 23582102fa95d06cf99e1e370c414413 -0cf0: ef53e263e14499a53e9583bff1b28473 -0d00: 722522ca58235821035e93c1bc2d8d8b -0d10: 782098d21eea41ea9da96c131eaa75d0 -0d20: b0f9e4803ed03d50b45823582103be29 -0d30: eecbd531fb36a9e9354573e4822f7be9 -0d40: 6e3e677c04b87a6c8e44d60e09d85823 -0d50: 58210216cdbb428af2a4db16fc147247 -0d60: 1429606679d07e32d08fe3330be1d133 -0d70: 0cb7b45823582103ea2204c486a1b6a0 -0d80: 8bc926494867ca515aaf74e6ab628b26 -0d90: bdcbee67a774b5575823582102e95a1a -0da0: 1af0909ff0cad4f795659aa867e576a1 -0db0: 59534f1eb1b954c362a90502db582358 -0dc0: 2103b931462266dcb681864c6bb6705a -0dd0: 3b468d48f122658f85f32f584728b47c -0de0: e50c5823582103faa14fee33584a195b -0df0: 337e1e987319200d7af58f61796220cd -0e00: 9f878e6279c33058235821023cca4e60 -0e10: 614844e29989964b24e27dd95917d313 -0e20: 1ab497ea4365ca6301fbbd0858235821 -0e30: 03c2a24e0ceb6084b99d9d7677c2cba4 -0e40: ee89e324cf2f98561b821820816c7e03 -0e50: 3c5823582103ddb922d834f548f72253 -0e60: 11fab5a3029745315a23faa836418046 -0e70: afa70dfb583258235821021151a4aeb2 -0e80: 2a9d3c229703fa512bdcf1f8ab2e841c -0e90: 1f46f2782781a12d83752a5823582102 -0ea0: 47c9c174dd394b279b618d3f29f173cd -0eb0: d3d319c31ab5d934d4b87c1c9d0c2945 -0ec0: 58235821037b1e9c4489e15ffb276869 -0ed0: 9a4da2b0e0794eb76973dc09bcbb7074 -0ee0: b27f532861582358210357aa30ea541f -0ef0: 976ad2541f706a8e7b502ba27a3f620a -0f00: 6038b0bc0fb7d6c8b1c1582358210388 -0f10: 3e22e6b434ded59d86b704be8a238dcf -0f20: d83cd30369ce5af24131cfb66346a758 -0f30: 23582102b309ede42d0f23a4a2d26ecf -0f40: 4fae96b8d6c983a76c4f9d99e4fca0bb -0f50: d61d32eb58235821022fc25316fa325e -0f60: 39bcf65f62f61aab272880070f6f19d9 -0f70: 2c463f46cde87d462d582358210365b8 -0f80: a99105b42c8d4941a6df156f4f91e71e -0f90: 9b7f47a54163c80dcbaa6700ee635823 -0fa0: 5821031b0f7ff03267fdf86479af1d66 -0fb0: c199e2ce9737b555f4904bab9573adaa -0fc0: 744dc758235821021e4dbd1af31501a4 -0fd0: 2e17ad8693a23e5c22b4df3adaeebe16 -0fe0: 4751c2f25bc138f7582358210368db19 -0ff0: a232010e5a0dae6a0964134811db95ab -1000: 3e815ec060d3608fd8acae9985582358 -1010: 2102fca6025604a42552adb7ff53dacf -1020: 4bfe8bf00a1cc75786e5288b99ba196b -1030: 9bc658235821025ba093fabdb69404d0 -1040: 9c47540e43188deab82a533fa1190b0f -1050: 1a4ebff522fabf58235821022799c140 -1060: ffb82ec905bdeb9b3c21f063797f1799 -1070: fd4859e15317b6db0dff7ed958235821 -1080: 02020c81ee566c7ec0f461e5c70503a7 -1090: 769069fd0b44023a32d0e520a8da1b53 -10a0: c75823582102b8e247e500b39c661635 -10b0: b0d15eb677ff5e41485054c0dd58863e -10c0: 1de6cc824e1c58235821027a0b0c681a -10d0: 97c13a8b6508eb34e708f8ca0d700a22 -10e0: 50fc73e2386d52e75877b95823582103 -10f0: 3a9d7756a4e717e6e77c6988e6036d63 -1100: b4cb3e857b9f7c2fdd3e8e510a291aed -1110: 58235821023bd4e95e9298f406a6ff23 -1120: e877818ccb16ba596258d73f7a475f77 -1130: 48f9a987395823582102ffd0491ea764 -1140: 03aef978a4ee424f051ce0bb2c4b52a2 -1150: e5527741724887470d9d58235821022d -1160: 74f1f254eee15850682d3ecd151f5909 -1170: c9640f9be90d3672f1866fe59487fe58 -1180: 2358210356044880b5cd8f1d2aabc586 -1190: 3ab54ee969783196add1a68dfc05de5d -11a0: bb907ac65823582103498bafaa458ef6 -11b0: 61c23dce75a8aa854cc5ca6b607d2f2d -11c0: 936368fb49f1d6c3f15823582102e2e1 -11d0: 9c4efe73abb676f75b5604b80f0bc41a -11e0: 9f42075b244086275afed274bbd55823 -11f0: 5821020867b308577d17c97e5017a952 -1200: 1b94722bad7bfc63fb7d0f0c8c2ea016 -1210: 76f0a65823582103d18d83e2e7f147dc -1220: 496854bb506e4cfb0b1e601d5c604cbe -1230: a0bacf3e31e705685823582103d985aa -1240: b246d1f12626fce59904db1ca4094e40 -1250: 073e47a7f6142d7dc311cd03f4582358 -1260: 2103857808b71199e7c8e727cb316571 -1270: c621368295bc9fd71d7aacb8c90b4dec -1280: e1ad582358210245c75a4056290f0433 -1290: 0665664b0f72421227dda013c444c01a -12a0: 69bb51b3caa6d95823582102272fc446 -12b0: da2f3bcb1c76836f199f492b420581f4 -12c0: 2c5978de09b38d5ffd24b4aa58235821 -12d0: 03fe104ffb91c2640ded16388cdd29ae -12e0: 06ed8503da5e208307c46bbac2c51555 -12f0: 7bff8458210231bf6c2d1b1494a030e1 -1300: b62caeb54f86d4d320488e47b2e93a82 -1310: eb83a595841558402bffbc415f413e48 -1320: 8ecd66f28d0c6181dc8ea25b814f98b0 -1330: dd1b92526013e5ccc47696934669056e -1340: 0442c802370c0769cb12a43c7461df1d -1350: 7d1ec6199799a0fd591028a48563ff5c -1360: d6b187777cffa83c07daecb666bc8a61 -1370: 0fcf6335c47e8f1056e9630000000000 -1380: 00008030c44e45a3dde43de4653c305c -1390: 3807f607ff9bd1794642a39d709a2903 -13a0: 0a47033bf867ed36873376c438fa5b7a -13b0: ba7ff94dbb33c8a1428bb6a031bb1b1f -13c0: 0276637b0aed8b66374b9d4f5bc28df2 -13d0: 936e97366dd8eb2982d8fe051486243c -13e0: a7f5813a35faf87edf75426d7a97761a -13f0: 6297e307634837b846fce051c54e76ee -1400: da2ba71ac78627b7992c556bd9e83276 -1410: 667b6f13efa14f4731554ff946b059a5 -1420: 68707f59ee1551faacb2f9077613c8ac -1430: 30ec8b6d9ee83d4c179f3aab0f1547ca -1440: 032a455e8d390a29502c95a2c759b25e -1450: 1cf365ddd15274448a2200c4be12f84d -1460: 3a684715f83fe809907b10ebfb56dfb5 -1470: d15473a4522fe37877a0a7ecae7ed955 -1480: 28a5ad1a8f58f276e2488ada5f401679 -1490: 3e2d3e8189befc14e9d16c4aa53ea67c -14a0: 66fc8a67125e2d0f47502306d43ef20d -14b0: e7e559aaf09f8fec8c8751457a7634ac -14c0: b8d81068430a65e77bc0b9d39fb87000 -14d0: a715d8cc877dc846c53039afc5d43127 -14e0: 2d03686befa558791f3bb41bee4a1679 -14f0: 739afe54b02a55b37d9b3ed6c0d94f6e -1500: b5f7553867805a5bbd88fc5224b388fe -1510: 082425bb3e2f30f90bffe97c5687b352 -1520: bbbc4030b137e600531f7a1030db35c4 -1530: 5b1117bc678c1d290584708b6ee6ee6e -1540: edb4928ad61be1a7aa7539b3676bf94b -1550: f9c7a6e6d0d8dc2a1e7812c652f0ab08 -1560: 99a595373d7b16757d8a0f83c1b5bde9 -1570: 7b9c9619f8e14cbf9c5f3ed3946ee525 -1580: 4816b3362a1b6d034ebcf0818a4b6538 -1590: 638939777e93b48daadc3dd4348aec61 -15a0: 1db39db2e4561e9051960bcac8bb97d7 -15b0: 93a99d1d8b71de99a2eb3c6c09268957 -15c0: 609b38ce87d79173db080e79e92ffcc3 -15d0: 64dbbbc426304b2bdc834d15cef66887 -15e0: 53a0114eafdc68f292ffe0249835e70a -15f0: 28080577e24245d6b6f16ffbbddadd85 -1600: a948dfcc67e83e8b0c1ad8913039ddc6 -1610: 282570c3f8a445fa64e25746675324a1 -1620: 72502bdb242aa68e53e0233572f42250 -1630: b037d805e8bcff1e86a83fafc322b1cb -1640: eac4cacbcf6fc9e06f2a78d14685094b -1650: 7b480522d9cc0ca8ab732928654fdccf -1660: 32387e5933747fffad91fa1d09076822 -1670: e89644d07aa5fc7a441bd1aa530e1ca0 -1680: 40d50e92381e80dc7e9d456b7dcbc3ed -1690: 142172a8c4bbde7b14aa5d350f368e4e -16a0: 373ac5de34510dc996d06fdd90729b5f -16b0: 0e4df4a25427bbadd7f306a8bffde03e -16c0: 3abedc185bcf61af2f66b6c664c406c2 -16d0: eff88ed5d411eecddeb4031f0b701bd5 -16e0: d5d820a8c475d374c2be4f6865c51e51 -16f0: 2cb835ef52f791acf552f82fe9b4107a -1700: cdbb375e13933e8649b884e0e0a5d699 -1710: 375919dfdf72250d71f1666caf456218 -1720: ab18009b5defa4c93003cac1e3d32583 -1730: 5f9369901fd44e5cd690613bbad8de14 -1740: cf7598f469ab97772f6e25f8d3bcb784 -1750: 61d2a8141a067e95ce86bd679ea8ab28 -1760: 9ff048dafeb353c320a8e7f104151f69 -1770: 5f04dde1c34fdbfc57b6949e4eedbf2b -1780: 1cbda7f365d20265d0dba4c98df4a778 -1790: 20658325c33d018f83d88c4d8f8b8c8a -17a0: b86c21307ebb593587173149a48095d6 -17b0: 825c0563379f917ea88b62eaa575a925 -17c0: e0e06f1b3e005e4108df74b7f7d8f6d1 -17d0: 950f8b6f5a7869698f000da9646e96cf -17e0: f99aea676cf6158ed72ab3ddb4c93047 -17f0: c0a6d94020e1d34a11cba66e22b244f6 -1800: f95d67741ead913f0e1cf311485f8ba5 -1810: d2344bb0a62737c5f1bd1bcf919b076e -1820: b42457f608d235ea242c4ab19644cb1e -1830: 811ad40971194ecfa55165b302a49966 -1840: f3da12948d69ffa13f0c2c2431bee238 -1850: 08476cbcae72a6fad303dc2dacc05413 -1860: ddbc9a3e65dd3fc13bc2147d4e203dd6 -1870: fa2f9c17c9ed3926fc99a092a34d5aaf -1880: 933b8ecc8d20e69616695c0f535e5012 -1890: f4619bf78981319e58015a98adbcd6df -18a0: 4093dded06e591ae9bababd6b6471ec4 -18b0: c4189eb7a9e9610d5509dc47b5120701 -18c0: 557a82e11a95ec8b7c1ad8bb668c4ada -18d0: 9976143fcc505cde24ed101da20ce5af -18e0: 9bb7bda369f5673776d7689fc3f479de -18f0: 46224e26e065e7beab58af40bd1ff0fe -1900: bd9cb105186b9311794bf237b6605a41 -1910: 774d26e0e4a13519adda3feccb91ce91 -1920: 99fb29f3c4eb90d84163b6c087f70542 -1930: ed263768605ed5463c837c8476fdc6e4 -1940: a8f01eef3e40c0e6a80151e39fb4376e -1950: e6259222590e9c8c1cc489b9de6583a1 -1960: 506d7a63d804eaf17c58d1c53f9f4ab9 -1970: 3754879ea14af7498332c79456975673 -1980: cf49f37b959b4fa0cdb0bf2499824ecc -1990: 01067960c64a9ef04b93ff0025db03c3 -19a0: 88b9287df074f31f6bcd3eb24b9e4e14 -19b0: 41a203dd19e55c6e81423501943637a2 -19c0: b07b5a2f9ecba8e12a8a49cfe95374ae -19d0: b9036f7512fcfe05df63751e3ec3bda8 -19e0: 82b8ee4b4f75c0ed170cdada83804ad9 -19f0: 95650e37619d1619016774457059cd3e -1a00: 971b8f6a67fac681ec136f8d80462445 -1a10: 311c8c6e9aa3a181dd8bd096e651703f -1a20: fb4dd3d0b3b54a6e5d2d3c0d31995ff9 -1a30: 6a16ad602c458d7fd1a3db1326a601e9 -1a40: 1f4760bd2d79625a0f2254832ae9e045 -1a50: be1212598de8dcb0ff4afb91ed792777 -1a60: 1bb57c5c98ed8a65d8d2283d6f9694d5 -1a70: 7bd384e2897c4dd62cb40a3640ae3340 -1a80: 52e7a51744672e3fcf7df3df77c32b34 -1a90: 193197bbedf1e3513e35a787b81fffb7 -1aa0: 293e5caa758efaaf3de517b5dd47e007 -1ab0: d5847316087238cc9bbc1139445c63c8 -1ac0: e6fc7fe7a5c58cfdaf018072ad93aaaf -1ad0: dfd7e1839a394e4a82061f2f6576c01d -1ae0: 719775407e23a3fed172bf4914418c3e -1af0: d7a9a2e8ef5774bff880f8613b74befa -1b00: e8789fc53f143890798333d0807ef25d -1b10: fd6ac532a0e9f52c308ff4d407766aa1 -1b20: 55fd0b268a1723959dccb9bb2e3b544a -1b30: 7ebd1ab6c03dbf501c44f709084f902f -1b40: 417ee93375f565ed3e0fcbb16b3682de -1b50: 396bfc9023e4a48e519cd5f1b07a43a3 -1b60: 557dd9168045b41b5894406f7069fa2e -1b70: 0b57e1f70a4546fc2b51c9e6ff49830d -1b80: c688bbb174cab3638e9ac8ad861a5410 -1b90: 5320e82c1f795b281d35d3bc6c3e68b4 -1ba0: 4757b81d574e519d1de6e32c486c6bf8 -1bb0: dc53577e19089e4aab614cda245e8c2f -1bc0: 6da22999e85bdf4a2ce402f18e00f706 -1bd0: 1c579cb2a95cd23885ef2f641be6c965 -1be0: c335283fa61b79ce86fc981d174e6be5 -1bf0: e26cc0462c543160b6f3a1fe003cdc0b -1c00: ce1591886b686e607c49e8d5f7cb063d -1c10: 3f0391863166dce1969960b04becb9d1 -1c20: be00e9c77660c633d8bd0ef2417139ac -1c30: f621363c3fb9cf34f5ab0b74fd0cec36 -1c40: a26a9e19c5a291f32efaff7f6eab050a -1c50: 5e9b496ed895cb474a1e12cedd9c2f1a -1c60: 38034e51e43ae6ca329ef8bf83863200 -1c70: d1df11f6ce312b13f1b40a3dfa19d5ee -1c80: d273bcb3c2a4d39ae3c5e7027bf33401 -1c90: 33f364df6c5ccf0bb3f0f07bbeeb542d -1ca0: 8d17e2a3a09925cd810927f593c2dbf0 -1cb0: 618729a239848de0c40a10e4fb947206 -1cc0: b78a2e0c3c4f9fd4fc9d5656bc94bce4 -1cd0: b1715c44768dd9882c8ed03258839865 -1ce0: 653bdd32a96a84b210e46a3e53fa4973 -1cf0: 1d8e6c31744c90e89061318ec465bf5d -1d00: 2f3bce36700dbc850ee8ad1cce8adef8 -1d10: 41ba9d03921a6afd1342a201b7e4279a -1d20: cf91dbb75eef924a07c19e15797e508e -1d30: 40eee5d4824f5d3e21d684f5525ce54b -1d40: 0e6a684a75608ebd31dfd06de79239cb -1d50: 4ebe866361bc01ba0541b5747696d1f0 -1d60: da88f29f63f3c4894b9b9844458c385c -1d70: 20a8523a14ff1baf397ba985fada57c6 -1d80: 7db3bf7de9dbbaeb4234396641bf70c3 -1d90: 1fdba90de6016f601eec3ec9bbe711c3 -1da0: bdba004f18c51a45030ec76f35221d67 -1db0: cc963552dc4718f846a978ec870c7669 -1dc0: 34c629d508718e929e4630925e2cdc24 -1dd0: 686a93f9d988c5ec9911ed60025a436c -1de0: ddaa26ced3c7d2d6cd44c49ba809f438 -1df0: 8e47a098aafa99666418bda02cea492d -1e00: 3ee2697bdfba6ffdf34cf3deb8f16da0 -1e10: b2df30cc5e47bebf01f1195ad16a3d3f -1e20: c055ad03ce9a1fda5c9157ecf19f4b17 -1e30: 95e4cc7eafd75cf0a6ac8a6aedee7abb -1e40: 22facba2f7800b6588aedc073adc8987 -1e50: 32d57f9bc7998c4c976b28aa000d47f7 -1e60: 2a01be93928c6545d6414ef9292886f1 -1e70: 458bc7ee48c6b4a7796b3099ba04e350 -1e80: 3623e8788668c87953df1be0c37eca0b -1e90: 6002ca6a4781b9667e1ffff4b38d782f -1ea0: f5c7eacb20c1b0d31b07ea3bc191d082 -1eb0: 802ec74671785fc21f759fce2c118aa1 -1ec0: 6b8b205d58da7e17754eb1ed46f21fcb -1ed0: 54936d5b036a5095026e0c0dcc6f12d4 -1ee0: f789c08a37283d7d49b93271e75a7722 -1ef0: 83939e357f18aa7da928f4b302b2f603 -1f00: d053458806bb5faf0051c59ef2a717c8 -1f10: dd5d8507452ff05d132f96364f17f465 -1f20: a87e4484bddfc7ff2249420f189cb21b -1f30: 7d0abd1ac44f9385bc58a47137497308 -1f40: cd2e49f287eec996320f7a0ed68a8510 -1f50: 9d5395d5ce9aec18fd9a13d7a813d623 -1f60: 9b01dcd939ae51f672747e604d5f9d27 -1f70: dc081b8c76ad7c20024cd4b77c739c40 -1f80: 37c60c19ce8a7d369facf9066bc5514e -1f90: d3bd494baca768cb8e51b57722c99acf -1fa0: 6bf139c765a33bb6f56638388fda8117 -1fb0: 7b937dbd84a72ff9dd7a289f96273146 -1fc0: 686ff82de83e13d4ae328717d2ad3c60 -1fd0: 1d07900129cd7f3bca5bf46236ffc5f8 -1fe0: 9ec209316397064d37a91b36c9b57293 -1ff0: 53a4376bbdce7773555765693c462d5d -2000: 3373287511a84a9ec244c2a818fc30da -2010: 656ba74321377db50621dfff4770f4d5 -2020: fa0b28db4897ef30a7d476e590265294 -2030: 3da46c8531d3ff405900b7e6239e71f9 -2040: bd02e349d82cf36c3e79fb13c945f050 -2050: 8156c54a0d990e8814e3d7106d7c085e -2060: d79ba3ce80eed8702f33017348aba9c9 -2070: 5e0039f0e24a13ca98bc985fa2cd25ac -2080: c44d42f1db633066a4de53d36b8748f5 -2090: 07c3d2958c4dc87356dd99662046f071 -20a0: 558c9d7ec48846936287f6f35c01007e -20b0: 01987fa8d8d53c447ae42c3a41d0dcc7 -20c0: b61677e1718b37a5399b34b163ae4cca -20d0: b14ef4e9a8af11b0ee359598cd86a880 -20e0: c58f39ff0e0a911c199385cf7fab4a0c -20f0: 14032b102bdd0d9c3294747e2305e41a -2100: 52ce69eae3d2df48064cf046e3f62df9 -2110: 2373edec74fecfd9d94c5c7aa597665c -2120: 83a2f74ef0783b32b399901aab8ef958 -2130: 1e8131077b4846f0ec8953a22dab1407 -2140: 17a5a4f9f337f3488bf16bc39de86709 -2150: 872d2cebcf8cf90d3745a77f11b9708f -2160: d1f883d228f50d70554667833e6dd377 -2170: e824404a042e713829977197255d0852 -2180: 6f0c8fcdd7108a2a9b9e1d2866aefed1 -2190: a5005da519f3a4cbfa00b035cf384fe2 -21a0: a8578eb667502cd38379bd93ac1aee82 -21b0: 7eaa7f8701844a7b7cb36bcf5cfe7b72 -21c0: 89dc23c8db91f5743280d70ad5f7a191 -21d0: 31a0eeeb348445e4d2cb30b3cd8fd71e -21e0: fbc7700f8bd5d91b226553ecf4fa18a8 -21f0: 5ad76f5c2a79b1d6bdd4efd39a30d61f -2200: 2c6f0505e73f0f80de0d0b4d46b2a238 -2210: e736e73ea6c8768de0a744a39a928fe2 -2220: c079b67875f1f58e72f6fd9f80006939 -2230: a1366ed7ae2d24dff9af0d73bea55a41 -2240: cfed877134756aaa18331abf786ded99 -2250: 664b2910f018c87ebb1ae842f4ec7a19 -2260: 6993cdf518853bd611403c5afadb5085 -2270: bc0c75bc4c453f09a927936ef5b35d0f -2280: c1764dc81de354c6854d838a01e47713 -2290: ad4dd34cf37c6d01de9964032c922aa8 -22a0: 27a877ac845a3039acb659dd057d45ef -22b0: 479bf3a648c92dcaa07bae01e2dfb0a5 -22c0: 18ec2259b7d9cc99a55d72af4fe8def3 -22d0: be4845fb4f3a760bd48052ba43d153a7 -22e0: 4fc0ac7db58e7d08223a7fa94aaac99f -22f0: ca914c4da02e42e867c012318681cb2d -2300: 30eb0c593c0b45cfc47038d9c711cd4c -2310: 81ed0435b3623c78c813c5937d85858c -2320: 5fb0505cf24bbb76b2f062f9102537fb -2330: 5e8660f2fb6153046365d89a6ec4a3da -2340: 956be1047b0c016358d133553f04d9d9 -2350: d25bc57f92535da193f21edf71aa300b -2360: 1ff81b8afd6f8fa8dc2126f89fd73ae4 -2370: 2a6a6fab63e924735d1dec76de3b483d -2380: 81fd7a9f582103435acf1950a74983a5 -2390: db7aab7556338ff913f97fdda7aeed21 -23a0: 800f33635a49a058210339b53526124c -23b0: 33997dfe0c27cdece6e0d58b3ed99564 -23c0: 8f04230be7ce7b0bdae9582102bf96de -23d0: 9594585b1d78c7bfa034dc767a020948 -23e0: 0587ab86996b6d4417af2ffc7a582103 -23f0: 1fd5eaa1bc7451be8d975f8ce6b12e80 -2400: 4fe8e174ffaccd707086dd409f92e01c -2410: 5821036497ee64cec50a7ff1096907a0 -2420: bc4d8f4901d6e7e53613bd317cf27d76 -2430: bea435582102e168aae507c600e3f591 -2440: 6831990d3584a08c8bfe4cf4e1a9f9f4 -2450: d2ccbb4314cf5821034c6e7555d4e4dc -2460: 8cc144e5c36ed186439fe0ba7d9b4c4b -2470: 0af5b2624b082b8d855821035a8b9aeb -2480: dd95d863e025dd1adafd4fdb314d59d8 -2490: b4f8c0fc64f541d9bc0dfeeb5821031e -24a0: acebcfd2061b115dd43df32ff6ffbf7f -24b0: a4ae35d2c90d9613bd4173bd4f81a058 -24c0: 2103653cc6a3e34cd687906c3124b010 -24d0: 0ba8bf4ee2e6255813624472e5f8c1cc -24e0: 687d582102b5a2f731a389bac8fa40b8 -24f0: 52cbb03d047937c27e5d51a854ab65a8 -2500: 82efc3cb2a582103554a153cffff7fc1 -2510: 578e29d9c07de18040bb9d6bc0cda626 -2520: faf6bdf7619cbb4e5821029c6be6b826 -2530: a92ce18f1b159922caff2aa5b4c3cd4f -2540: a5bf3400ffb4c1e1c6691d582102e0d8 -2550: b5776a0835f741ac29630d3c4867ff23 -2560: 6157047502d3af7f0d4da4de7bcf5821 -2570: 025fd71718b838cb1c742162b9a1a000 -2580: 2efe92be0358606239cc429b7309efd4 -2590: 685821035fad088bb91c1212a6ddcf6a -25a0: 1622b5c61d922af262ba7a5a619b3bad -25b0: e05a9c71582103e0d7a9e86b0145aef6 -25c0: a08d617f3b9c1be87b93412ecde747d2 -25d0: 413ba0810a8fd15821031dd55f2f7b21 -25e0: a1a7df4c7baa7f3669ba06edfe23b417 -25f0: 0e688e93db24bb3137b6582103c2ecc7 -2600: d41035fc65d6ace5bd9b408caa5ddc2c -2610: 30e4f919e98b7842104a1e8821582102 -2620: 9c913c9000d8bb21388a1786e6013177 -2630: 2b8b04b82bc60c30b5e4f74e966dc2d0 -2640: 5821039f9bdaf76719aab8571ae0a256 -2650: 4866243b5fab45cb09be704c930bda1d -2660: afd5ae582102c519b0c9e01bb957e3f4 -2670: 7635299a1de584880f8df2099a687252 -2680: e618cacc631758210260b8cac6cd6771 -2690: a93b54eaacf9c3673e4f05df14847d6a -26a0: d21859b66c583d1b095821037761096b -26b0: d5101e13f6aba8d0f959957d3d653c8d -26c0: 0bcfa797163ebeb66694b634582103c2 -26d0: 721ac0af1fe8fcac0631c5488a9d4016 -26e0: 4c013da56c0e7f1109c8fe50743b8f58 -26f0: 2103199be546cdf5283e2fb9567a2a49 -2700: dfadba376d2e3d81ac4ab941351a75e4 -2710: b616582102f2ff1995f86ac9457d536d -2720: 070ce9574571b1ff6614cbf96409701f -2730: b13f6e9f19582102e143ce5162833181 -2740: e97bc7183fc8802690ad8a84772c3169 -2750: c3c71e283f3fc4b6582102c4ce53991f -2760: 0ea7d05a5aef444b5180caca86759690 -2770: 164bef89ddc35dbf31357c582103c1e0 -2780: 6f788aab0b07bcceb3fca47f8fdcc167 -2790: 67753ec050ee005d69b82eafdd475821 -27a0: 02a10ad5e568d9e95feead80b68b089d -27b0: 05b3bf2b482baf3656f203c0e45cba87 -27c0: 125821039a9684776a3e643e62e304e4 -27d0: 415fa1da342a340e0f5b55dd8e791a01 -27e0: 7b4f4815582103b115f1192c6b241864 -27f0: a449e73eba9e80f1bec35a6f73b375ba -2800: 28120e1438a9c9582102271a71dbd655 -2810: 2ea784127be03cd7f586d9d2711e9eb8 -2820: ade910575a953e19d91a58210271e136 -2830: f3331dd4312677cda722e034d754df0f -2840: 3d8e5c59d17d32a1d61e14c543582102 -2850: dcd99497eb6943c35f891a1962c7ecca -2860: 1e4d0e602c09574e5f3eaf370a6a4558 -2870: 5821021ecd79c46438c0f541391cd254 -2880: ff92ca5f91e6b40037942033a814330f -2890: 8f82f758210281b51267eb03f4648f7a -28a0: ff3503194287acdc3305937f73708e5b -28b0: c03e51a8212a5821031fea2bdecce55e -28c0: 50be1500a6c5c41676faecf3a9a4047f -28d0: 6468b3a5bd6b369ad7582102aea942c7 -28e0: f8c8c62ec210e1f5f14a67d4aa4ec259 -28f0: 31d5c5949f524487d4f40d3e582103e3 -2900: 79078c79e6da5d80554caecc67fbe822 -2910: d4042f571456f82b3847ba9ff5c78f58 -2920: 2102faac20fbbca846c848d6f03bf472 -2930: 5d90570f234225eae255e42bfdc03815 -2940: 6041582103fed0a0b2dbb9651ccaaafc -2950: 069aeb90e92f5e32055a333d24dfb8aa -2960: 57bb017d0d582103f53867a60be1f87a -2970: 67de1eea7758816782afcadf544d56db -2980: 89ef3163226311f958210332e55914d8 -2990: 5f4e0705ca08df93c623292ceaba4eeb -29a0: c50cfc60e73ba1560f01185821029216 -29b0: f2b476da400f1bc91984d6b77a9d65df -29c0: 371c1d8e086d3b31730370a9cf825821 -29d0: 0226982ca5b608aba96cb0fa9ffa4a6b -29e0: d3e6b305a2748aafb9c4e5acf42ff67b -29f0: 0f5821030021f75dba2f6fdcc89d8294 -2a00: 652f57af2c572c3c3acf35c9c8cbcbcf -2a10: 34397fd0582102fb7a6f0ce1b31c014c -2a20: 2350285cafa4e980bfc9581af58de259 -2a30: 42ec278681ecbc582102e20d1d5e5526 -2a40: 009ea8d9e0ad9b794d170f7b08d32afb -2a50: 868b1ebca5a392ee5b5558210325418a -2a60: 42bff53c36a4db3c5e814f2f6f47d0cb -2a70: ce5dccda0a52adf365a02bf7d2582103 -2a80: 39cad0673b44d2d3f4b9dd9fb2944417 -2a90: 9b2928358fca04bdb86bde12700f3e12 -2aa0: 58210287fbfb3507ca25595090e2386b -2ab0: bf6c6c259c4d5d73d12bec2950692787 -2ac0: 1e8fee582103d3b67f99285f29688e8a -2ad0: fb72a3ae7b58e393f576653a1e799ac8 -2ae0: df45be2604d858210218093de8f8c6c6 -2af0: d861827b37f76395c572865f0773f4c6 -2b00: 30ba5b960a61da8c4c582102780e3afb -2b10: f34fa64865ae1b3c5ef000d0655e258d -2b20: 6377b72e1974ffb149b72e7758210274 -2b30: a39eda462e88ef223cd117facf8054ce -2b40: d8ccd38b7cd3ecc4d0690475fdf13058 -2b50: 21028727297ef656501ffa45e1980686 -2b60: fe43ccfc1ac83f1a18bb022a3b369a9a -2b70: fda258210247a82188c396bf163fe909 -2b80: b31d84df62b3957c4eeaec873bec46de -2b90: 97c255e816582102c52e101acdf1a1a2 -2ba0: ab14ff860190c822cb540fb8be618239 -2bb0: 6714246aa38336295821037e89f2a22e -2bc0: 0a72ecabd613457eb13926c0a472c9d6 -2bd0: 82072d4ba8a4c9bba846c35821032e9e -2be0: 0165776319f4ac266ea031d3cbe54c80 -2bf0: be7cbdf3fd41ec0727f8ff2d225e5821 -2c00: 02c9a12fc76075b34cdfbcb8ef43cd9c -2c10: 50fb83d821fcb74ba3d268e4d2554e4a -2c20: 1b582103fae79aff9ae5c46496ba21b2 -2c30: 84c6d72c741f4361a9ab4279aed334cf -2c40: 930c9a1c582103391915837b50e7dfe0 -2c50: 5e0f4f652344f97db2f1877e69388860 -2c60: f6fb91c355e668582102f508b90df7e2 -2c70: 20e58b9accd1d95a60f52f273ac3200d -2c80: c107223b976dce3dd0035821031d6cb0 -2c90: cfb5af74f1a0710765782a3002f5624f -2ca0: 5fa4f46e5db6d15a7fef23f233582102 -2cb0: ea1a52058e8890266cc91b66854e10ba -2cc0: 29bb262e3aaf51751f10723b425d1c2c -2cd0: 58210376bd9f009492bf352b42cad181 -2ce0: 9f9ef980ae691ee45f2bde8cbf0d6be7 -2cf0: 94c82d582103af7635c01233b16eb750 -2d00: b4dd78b67294d2033a5b29194a052700 -2d10: 754bc82f385a5821027c146c55710d17 -2d20: 61b2dd3ca3986d47fba1e9beecb503de -2d30: e3e029842676ab96a7582103261e1fa9 -2d40: ccf2e2813cdebe1e5adae115269f7117 -2d50: e2278724d2342c7649400d0358210327 -2d60: 0522f1acf2e5ef0c315ce8ea054dcb66 -2d70: f8e4d733104994f3aeb23ee2ee8dbd58 -2d80: 21039cca00e3e19a2e28aa960a88a9ac -2d90: f0dff97342f2fee6f1ac88d0c38dd2cf -2da0: 155658210217949f1908970829c2e9ba -2db0: 9b4331b8515231ee34176b15c462b103 -2dc0: 9cae60ede35821021d71c5c7a50b941f -2dd0: ca415641d78df3c7f7c8bc55deb0cda7 -2de0: c202c4a7cad8c7185821026dcd29aa01 -2df0: 060a3ff1deacdb2884e3df763797e4a6 -2e00: 354f6196c5768966117c095821032db4 -2e10: 06a7a414e35a7789a7fc6d52d0722a6f -2e20: 8f389bde9149641547971f8af7205821 -2e30: 02088bbf647f4e275fc979a1e98758fa -2e40: 088527392ae20e906d59fc320b0c38f9 -2e50: 8c5821034b21f7e7240bfd97be1d3467 -2e60: 1ef9517a4501935f296652765c2112d7 -2e70: a258c944582103aefcec4a3a3d144aef -2e80: d1525d50999d2364b524484851bbcfa5 -2e90: 1a00fb857eec98582102284c5defbc9b -2ea0: fa67f8e4cc6ca7e3a31f3bdb727b4558 -2eb0: 909385b1f7e66e7dcff158210353b3de -2ec0: 9275d2472c385ffbafd4dd7701602130 -2ed0: 64cc785099d876ff080ef6e86e582103 -2ee0: f4f4d8fecba01260c14f7e9e81c41733 -2ef0: 2faab0fca593b2a630d702ff9a74220f -2f00: 58210367b0f4556813b937ed1f264f07 -2f10: 94c6d0cda4e30814d0931c84892e0893 -2f20: d6a0dc582102c9f41c87b084ebdb24ac -2f30: 6a5014fd263c2b924812183509d08dc4 -2f40: b2fa1fd46ae65821024924133f1ccd65 -2f50: 17e91d5c1a19f42a91b4f05835fc77d0 -2f60: 224556da4032a7bebf5821025883b5df -2f70: 946d062006d851fd91db33ba65d3ab36 -2f80: 674ab620ca3c2db810ce64d158210237 -2f90: e49467ced83e47bd8f047ea04044ec3e -2fa0: 3b348e58764dd16a21967a3d8a35fe58 -2fb0: 2103329242d08a6a381c0f14b3c9331d -2fc0: 77771f0a368ce8ddfc3162d0c853474c -2fd0: c89e582102f99c7963ae7de4946d017e -2fe0: d3e687402c79b613e24134b74b1c0c77 -2ff0: 199373080b582103b1c4e71c5b07eff9 -3000: 8a90c1990b59d359393b0c99eeefec47 -3010: ad2a0498db5c100a582102b23be494ba -3020: 848feeda986518b4f936981f8c50826b -3030: 0bd780ddfa41263f9b4ef2582103d36f -3040: f84a72d0c6cad82966b704002adee57c -3050: 30f1fe5c073007e0f01b3e6fb87f5821 -3060: 021d387974b3acee7ed620a68a977a4c -3070: ce40c277a1c79806f32d59ddbdb9e5c0 -3080: b9582103e7ca1272dcd09dc599adcf13 -3090: d2cb07859faf9416f57d44b145236617 -30a0: c356f9115821022ee0a61e3855e5c5ec -30b0: 575d1cabd936cca18738f03687d11273 -30c0: 0171ece388f57a58210383b051fc5c64 -30d0: 84d024867af1a99cb1ce764b21cb7ac6 -30e0: f493dd797f07e184cd0d5821035220ab -30f0: b19bbb372df3ef0964931fc0199197cf -3100: f16f6d60cb1053117a41bffda0582102 -3110: e72f78b30caae60b407a023f51cdf07b -3120: 3663ecdff16fca67820bfc76ee12123c -3130: 5821031e1ee7044aa44dea84a39f2ed4 -3140: dd4326e7b1ab2b7ba9d986b4ef43588c -3150: 0b3d755821039b142fd0982950c35149 -3160: 6b655c53f55a99598229da60544d6a89 -3170: 0e5be83174cb5821022d31ff83e3b237 -3180: 7a54adfc5d9b4c4396d3985aaa9903ae -3190: 32da7a333a773775ef58210371e52589 -31a0: 407b5538e758916dcf38856403274047 -31b0: a264a24dba786ebb4c96b2a158210212 -31c0: a18e37b48700a11bc91e18aeb6337571 -31d0: edf45e342809d475b2f907678f74ac58 -31e0: 210230b64b6bc4841580fdb4690714e7 -31f0: 6ff1f7e1eac80a78bbb701895e95e69a -3200: 5770582103c76f39e39ae03f4fbc8f2f -3210: 8ac41f35480c59c9ee85c86856676039 -3220: 9220e826d4582102a1045ed9ef4b1880 -3230: 2054108bcf85a70f93da63d1fe2a58ce -3240: 0a4e5fccf48daefa582103e9231b2593 -3250: f2acb8783ce4ee889591943d4f6e3acc -3260: 7c0b409db5bb4f4171b278582102c039 -3270: b3950566dcab1f00410721c0ae8b4493 -3280: fdb09c920c10059166a3510431ab5821 -3290: 02f8dda8d7d7cff6cd4967130cf62fae -32a0: c6446f8397a3418b9dfd65c115c6fd6c -32b0: 6d5821036ec27feb98b7e5e658c89c8d -32c0: 2db31b1223ba6f5214d39c9f13202b4f -32d0: 28f25ae858210348d8a2bc0beb4442e7 -32e0: cbb1b6045ffec8660949f4b7410d9016 -32f0: 87519d8fb62a5c5821037af7195291dd -3300: ae0885af924af02dbc883b2a8abb121f -3310: 1e73d1a347f08684524e5821024ab359 -3320: ec9f570a0730676cf18a813dcecf0458 -3330: 678c784a624dfe48e87be4531e582102 -3340: 1823d6c4d1053c26653490bfc5f2bb82 -3350: e8cda5fadd8a92ab5a23cdffbad4855f -3360: 582102b0bb0c6c7a9da17291be339cf7 -3370: 891ff99cf8be534f173c1bb01d2767ba -3380: 6393515821028b710aaffdcb2500b743 -3390: 77f8addcbb9822efe0d644c3b2fdd9a9 -33a0: 22d4499e64c55821033c24de3e0a1da0 -33b0: 00cea36b7101962aec9115b6fbeddefd -33c0: 64340270b6632032bd58210246a56970 -33d0: 11f335afd54164720cd6163f08ee5826 -33e0: d6ff2641a663438e401aa6a15821033e -33f0: 36071b1959f785ad5adc251ad97c1a69 -3400: 53edb883ebcdec0ecf29599d0cbc8958 -3410: 210259bef980c0856b18175677599947 -3420: 91d9dd43a860ed4c748e39580b176ed4 -3430: 50cf582102a9010b0192cc0379f996a8 -3440: e4c280a78e6dc45a4cc6480c463e514b -3450: 9845afb3cf582102a112af16bea7c14b -3460: 088c0ee092fb913ec55ee7d8e973a2e5 -3470: 0944c2f906f7338f582103f3bc01004b -3480: 39eecfa3441ed94991022ee8c9263e58 -3490: e3c27b3a25bcd6c5fe53805821034b6c -34a0: 79c98b4158cf9bcc2e8371db208bd757 -34b0: fc0b949196a9315050d7f2b34b585821 -34c0: 022f785e91f212d468a4395f60f2ba2d -34d0: dd58cb8c1f32c6ffa965578992458ab6 -34e0: f4582102c3d0f7a6ee23db0166b8e5de -34f0: 7cb2144eff2a6aacd9b51076e55d0712 -3500: 2386fad0ff58407803232dd492dacd3c -3510: 0f7c5401a577a4bfa2891cf5c9da0713 -3520: 4ac2414522c51b397e18360276891074 -3530: 7ca3f2e065f14a625b278cc2d8b3bca5 -3540: bae84bbab6bb03d90102848458235821 -3550: 024cec5c69f73122f2dcd6b6f6921655 -3560: 960d3a622e002e8a318f6ea4a5cced31 -3570: c0187a58405c0835d30c015dc9ee745f -3580: df09120aa0c335766112d1cd1c88fd72 -3590: e18b7306d027651047a268254d71ec8a -35a0: 8608368b6de25d56cad17d65a415489c -35b0: 85df94d6025840644c586b756573565a -35c0: 394a6648676a726374734c4674324e76 -35d0: 6f76586e6368734f7658303559364c6f -35e0: 686c544e74356d6b504668556f587531 -35f0: 455a534a5449798458235821034b619e -3600: 132ab6433b9a0aa57b1593a7bdea20a5 -3610: 8c7d44287640ce1740dc4f79b9187a58 -3620: 407203430204e0d8adbdf0fc778a4618 -3630: 64757fbdc38a34121181edbb69e9d9a1 -3640: 5ac06f407972a1c9a19ea0bfe4513170 -3650: 18c89d4a7fd38352083092e63270d1c9 -3660: 0e58404674324e766f76586e6368734f -3670: 7658303559364c6f686c544e74356d6b -3680: 504668556f587531455a534a54497933 -3690: 66545535336234313272344145757344 -36a0: 3774638458235821035df64b0745b7a8 -36b0: c0d92b7f4568c7870f9a3eb380da5831 -36c0: d71d86de044cfa4d4d187a5840a886c4 -36d0: 2070ac836a292800ed75f5acabf9a9d7 -36e0: 68ed91ae80c2fcf065e5f66377f5dca6 -36f0: 19e4d100facf4d8778c4472da2223261 -3700: 7ab4740ff71acdc5eb0c4fed0b58404a -3710: 30754b446269376936644c586b756573 -3720: 565a394a6648676a726374734c467432 -3730: 4e766f76586e6368734f765830355936 -3740: 4c6f686c544e74356d6b504668556f84 -3750: 58235821037250bc3932b5b5f6c42774 -3760: eef3c06ea7b7f13686e83d6ff9ec3164 -3770: 59a6373682187a584024319a81ec9754 -3780: e293e99e2003706f86b1bc98c318abac -3790: 8c1e3488cc7b24ef80e6c3569f948e8f -37a0: 51fe66848c609d38294e814809976997 -37b0: 396e9680394d8e920058404a6648676a -37c0: 726374734c4674324e766f76586e6368 -37d0: 734f7658303559364c6f686c544e7435 -37e0: 6d6b504668556f587531455a534a5449 -37f0: 7933665455353362343132 diff --git a/eras/byron/ledger/impl/test/golden/cbor/ssc/SscPayload_OpeningsPayload b/eras/byron/ledger/impl/test/golden/cbor/ssc/SscPayload_OpeningsPayload deleted file mode 100644 index a35fb3306e9..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/ssc/SscPayload_OpeningsPayload +++ /dev/null @@ -1,48 +0,0 @@ -000: 8301a1581cb4c0e0810a8cd4f5b9249c -010: 41900704b35ed186205c708a40b5abac -020: 9058235821026a8923b61ed176f49b72 -030: 6fd5c1c06d0ce7433e3be82030a5c85e -040: 548d0b0a3082d9010284845823582102 -050: 4cec5c69f73122f2dcd6b6f692165596 -060: 0d3a622e002e8a318f6ea4a5cced31c0 -070: 187a58405c0835d30c015dc9ee745fdf -080: 09120aa0c335766112d1cd1c88fd72e1 -090: 8b7306d027651047a268254d71ec8a86 -0a0: 08368b6de25d56cad17d65a415489c85 -0b0: df94d6025840644c586b756573565a39 -0c0: 4a6648676a726374734c4674324e766f -0d0: 76586e6368734f7658303559364c6f68 -0e0: 6c544e74356d6b504668556f58753145 -0f0: 5a534a5449798458235821034b619e13 -100: 2ab6433b9a0aa57b1593a7bdea20a58c -110: 7d44287640ce1740dc4f79b9187a5840 -120: 7203430204e0d8adbdf0fc778a461864 -130: 757fbdc38a34121181edbb69e9d9a15a -140: c06f407972a1c9a19ea0bfe451317018 -150: c89d4a7fd38352083092e63270d1c90e -160: 58404674324e766f76586e6368734f76 -170: 58303559364c6f686c544e74356d6b50 -180: 4668556f587531455a534a5449793366 -190: 54553533623431327234414575734437 -1a0: 74638458235821035df64b0745b7a8c0 -1b0: d92b7f4568c7870f9a3eb380da5831d7 -1c0: 1d86de044cfa4d4d187a5840a886c420 -1d0: 70ac836a292800ed75f5acabf9a9d768 -1e0: ed91ae80c2fcf065e5f66377f5dca619 -1f0: e4d100facf4d8778c4472da22232617a -200: b4740ff71acdc5eb0c4fed0b58404a30 -210: 754b446269376936644c586b75657356 -220: 5a394a6648676a726374734c4674324e -230: 766f76586e6368734f7658303559364c -240: 6f686c544e74356d6b504668556f8458 -250: 235821037250bc3932b5b5f6c42774ee -260: f3c06ea7b7f13686e83d6ff9ec316459 -270: a6373682187a584024319a81ec9754e2 -280: 93e99e2003706f86b1bc98c318abac8c -290: 1e3488cc7b24ef80e6c3569f948e8f51 -2a0: fe66848c609d38294e81480997699739 -2b0: 6e9680394d8e920058404a6648676a72 -2c0: 6374734c4674324e766f76586e636873 -2d0: 4f7658303559364c6f686c544e74356d -2e0: 6b504668556f587531455a534a544979 -2f0: 33665455353362343132 diff --git a/eras/byron/ledger/impl/test/golden/cbor/ssc/SscPayload_SharesPayload b/eras/byron/ledger/impl/test/golden/cbor/ssc/SscPayload_SharesPayload deleted file mode 100644 index c282bc33074..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/ssc/SscPayload_SharesPayload +++ /dev/null @@ -1,79 +0,0 @@ -000: 8302a1581cb4c0e0810a8cd4f5b9249c -010: 41900704b35ed186205c708a40b5abac -020: 90a4581c1ab7daa1282e1a13d384c5ad -030: 64dee9882bcbf9130e468ed10f27e4d3 -040: 9f5863586102ab1997e96af26054b069 -050: 5f94c4429dc87b8aac37c4032da36cae -060: 2e984a70d29460c1ddeb5de41c9094d0 -070: e10e651e22c0c36bcd1b3fdc1240c3f0 -080: 9f1b9640a43f415c616fb57bd70b3be6 -090: 1e56253f155c7f1a82c98fdabaaeb9ba -0a0: 84d9f08a6bd6ff581c9190e3e62897bb -0b0: 9382465a9f23d9c67cdeb5fdf2b88487 -0c0: 2a8f6566df9f58635861034737a48d3a -0d0: b6143941a80957ff86e3bb0a892d6d78 -0e0: 719b57528ac219117c831a73276312fc -0f0: 75e81ce4380455d24a99a415a640adea -100: c4793046e1e82e5021ece3853cd80c9a -110: 3e0e6443a41bc1eb2decf5ff4d18f85a -120: 7488d95f7a7f00e8a20a26ff581cae7a -130: 5cc39b05327f0639b381365a647ae15f -140: 347bc3e7a8176164ba409f5863586103 -150: 8cc39619077b95b4e9241455713b8fc1 -160: 8cb2c7204adaa22cec1a3d7bb633ff68 -170: 6bb3a7085468c1f37a7f5e6f4fc9e79a -180: a2d748ffcfe57a5b534cb592ecb978fb -190: 0721de4f91c6c4690ab23998efca4b75 -1a0: efd410820f3b47dced4cb459e6f36f45 -1b0: ff581cb4c0e0810a8cd4f5b9249c4190 -1c0: 0704b35ed186205c708a40b5abac909f -1d0: 5863586103d2dd7f247ff1e155b6f398 -1e0: 343caec1daf7c074889aca7f1240833a -1f0: 942f01c15e7c0347c25b299168829d40 -200: 53a905f995e8f58f0f35d458d205e14e -210: 9e1b9e44554688b71d8c1cee3d31c507 -220: 1afa53e95c307056d188cc890cbf1077 -230: 1532b15d35ffd9010284845823582102 -240: 4cec5c69f73122f2dcd6b6f692165596 -250: 0d3a622e002e8a318f6ea4a5cced31c0 -260: 187a58405c0835d30c015dc9ee745fdf -270: 09120aa0c335766112d1cd1c88fd72e1 -280: 8b7306d027651047a268254d71ec8a86 -290: 08368b6de25d56cad17d65a415489c85 -2a0: df94d6025840644c586b756573565a39 -2b0: 4a6648676a726374734c4674324e766f -2c0: 76586e6368734f7658303559364c6f68 -2d0: 6c544e74356d6b504668556f58753145 -2e0: 5a534a5449798458235821034b619e13 -2f0: 2ab6433b9a0aa57b1593a7bdea20a58c -300: 7d44287640ce1740dc4f79b9187a5840 -310: 7203430204e0d8adbdf0fc778a461864 -320: 757fbdc38a34121181edbb69e9d9a15a -330: c06f407972a1c9a19ea0bfe451317018 -340: c89d4a7fd38352083092e63270d1c90e -350: 58404674324e766f76586e6368734f76 -360: 58303559364c6f686c544e74356d6b50 -370: 4668556f587531455a534a5449793366 -380: 54553533623431327234414575734437 -390: 74638458235821035df64b0745b7a8c0 -3a0: d92b7f4568c7870f9a3eb380da5831d7 -3b0: 1d86de044cfa4d4d187a5840a886c420 -3c0: 70ac836a292800ed75f5acabf9a9d768 -3d0: ed91ae80c2fcf065e5f66377f5dca619 -3e0: e4d100facf4d8778c4472da22232617a -3f0: b4740ff71acdc5eb0c4fed0b58404a30 -400: 754b446269376936644c586b75657356 -410: 5a394a6648676a726374734c4674324e -420: 766f76586e6368734f7658303559364c -430: 6f686c544e74356d6b504668556f8458 -440: 235821037250bc3932b5b5f6c42774ee -450: f3c06ea7b7f13686e83d6ff9ec316459 -460: a6373682187a584024319a81ec9754e2 -470: 93e99e2003706f86b1bc98c318abac8c -480: 1e3488cc7b24ef80e6c3569f948e8f51 -490: fe66848c609d38294e81480997699739 -4a0: 6e9680394d8e920058404a6648676a72 -4b0: 6374734c4674324e766f76586e636873 -4c0: 4f7658303559364c6f686c544e74356d -4d0: 6b504668556f587531455a534a544979 -4e0: 33665455353362343132 diff --git a/eras/byron/ledger/impl/test/golden/cbor/ssc/SscProof_CertificatesProof b/eras/byron/ledger/impl/test/golden/cbor/ssc/SscProof_CertificatesProof deleted file mode 100644 index 86921d484cb..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/ssc/SscProof_CertificatesProof +++ /dev/null @@ -1,3 +0,0 @@ -00: 820358209fbbb2f0eff7472fe19e462f -10: d88c495ac90f9ad58c4dd6cb20451571 -20: 0b0fe132 diff --git a/eras/byron/ledger/impl/test/golden/cbor/ssc/SscProof_CommitmentsProof b/eras/byron/ledger/impl/test/golden/cbor/ssc/SscProof_CommitmentsProof deleted file mode 100644 index 8cee984641d..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/ssc/SscProof_CommitmentsProof +++ /dev/null @@ -1,5 +0,0 @@ -00: 83005820006a4a2b269afe61e8947016 -10: 40d1ca59639d92af3095814f9836143b -20: d5d40b9658209fbbb2f0eff7472fe19e -30: 462fd88c495ac90f9ad58c4dd6cb2045 -40: 15710b0fe132 diff --git a/eras/byron/ledger/impl/test/golden/cbor/ssc/SscProof_OpeningsProof b/eras/byron/ledger/impl/test/golden/cbor/ssc/SscProof_OpeningsProof deleted file mode 100644 index 5a0c45bb458..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/ssc/SscProof_OpeningsProof +++ /dev/null @@ -1,5 +0,0 @@ -00: 83015820e75dc94529c2f52566e90bdf -10: 77ed9498399f8055601459f19334dbba -20: 13bc9f3a58209fbbb2f0eff7472fe19e -30: 462fd88c495ac90f9ad58c4dd6cb2045 -40: 15710b0fe132 diff --git a/eras/byron/ledger/impl/test/golden/cbor/ssc/SscProof_SharesProof b/eras/byron/ledger/impl/test/golden/cbor/ssc/SscProof_SharesProof deleted file mode 100644 index 52a15f4e9f6..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/ssc/SscProof_SharesProof +++ /dev/null @@ -1,5 +0,0 @@ -00: 83025820a527895dddc33efd501bb971 -10: 7682036653eeb6c6c1c403225e13db44 -20: 6c24404d58209fbbb2f0eff7472fe19e -30: 462fd88c495ac90f9ad58c4dd6cb2045 -40: 15710b0fe132 diff --git a/eras/byron/ledger/impl/test/golden/cbor/ssc/VssCertificate b/eras/byron/ledger/impl/test/golden/cbor/ssc/VssCertificate deleted file mode 100644 index b6546b4c10c..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/ssc/VssCertificate +++ /dev/null @@ -1,11 +0,0 @@ -00: 845823582103e5bb5c7fcea0440ba972 -10: f98efffc38927db6c79d5b92d9ea41ec -20: f8ca10c32a310b58408a71f0f263c8c3 -30: d8cc25a013b47d1a9535e8521fcdee95 -40: 4ef552c894f482f7f9ad0ea977259ca4 -50: 9a4dde3cd74421ccf2902fb4d02b3507 -60: b040447f0bd724300e5840644c586b75 -70: 6573565a394a6648676a726374734c46 -80: 74324e766f76586e6368734f76583035 -90: 59364c6f686c544e74356d6b50466855 -a0: 6f587531455a534a544979 diff --git a/eras/byron/ledger/impl/test/golden/cbor/ssc/VssCertificatesHash b/eras/byron/ledger/impl/test/golden/cbor/ssc/VssCertificatesHash deleted file mode 100644 index 4ac9e79a6f7..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/ssc/VssCertificatesHash +++ /dev/null @@ -1,3 +0,0 @@ -00: 58209fbbb2f0eff7472fe19e462fd88c -10: 495ac90f9ad58c4dd6cb204515710b0f -20: e132 diff --git a/eras/byron/ledger/impl/test/golden/cbor/ssc/VssCertificatesMap b/eras/byron/ledger/impl/test/golden/cbor/ssc/VssCertificatesMap deleted file mode 100644 index 186a9cba655..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/ssc/VssCertificatesMap +++ /dev/null @@ -1,44 +0,0 @@ -000: d90102848458235821024cec5c69f731 -010: 22f2dcd6b6f6921655960d3a622e002e -020: 8a318f6ea4a5cced31c0187a58405c08 -030: 35d30c015dc9ee745fdf09120aa0c335 -040: 766112d1cd1c88fd72e18b7306d02765 -050: 1047a268254d71ec8a8608368b6de25d -060: 56cad17d65a415489c85df94d6025840 -070: 644c586b756573565a394a6648676a72 -080: 6374734c4674324e766f76586e636873 -090: 4f7658303559364c6f686c544e74356d -0a0: 6b504668556f587531455a534a544979 -0b0: 8458235821034b619e132ab6433b9a0a -0c0: a57b1593a7bdea20a58c7d44287640ce -0d0: 1740dc4f79b9187a58407203430204e0 -0e0: d8adbdf0fc778a461864757fbdc38a34 -0f0: 121181edbb69e9d9a15ac06f407972a1 -100: c9a19ea0bfe451317018c89d4a7fd383 -110: 52083092e63270d1c90e58404674324e -120: 766f76586e6368734f7658303559364c -130: 6f686c544e74356d6b504668556f5875 -140: 31455a534a5449793366545535336234 -150: 31327234414575734437746384582358 -160: 21035df64b0745b7a8c0d92b7f4568c7 -170: 870f9a3eb380da5831d71d86de044cfa -180: 4d4d187a5840a886c42070ac836a2928 -190: 00ed75f5acabf9a9d768ed91ae80c2fc -1a0: f065e5f66377f5dca619e4d100facf4d -1b0: 8778c4472da22232617ab4740ff71acd -1c0: c5eb0c4fed0b58404a30754b44626937 -1d0: 6936644c586b756573565a394a664867 -1e0: 6a726374734c4674324e766f76586e63 -1f0: 68734f7658303559364c6f686c544e74 -200: 356d6b504668556f8458235821037250 -210: bc3932b5b5f6c42774eef3c06ea7b7f1 -220: 3686e83d6ff9ec316459a6373682187a -230: 584024319a81ec9754e293e99e200370 -240: 6f86b1bc98c318abac8c1e3488cc7b24 -250: ef80e6c3569f948e8f51fe66848c609d -260: 38294e814809976997396e9680394d8e -270: 920058404a6648676a726374734c4674 -280: 324e766f76586e6368734f7658303559 -290: 364c6f686c544e74356d6b504668556f -2a0: 587531455a534a544979336654553533 -2b0: 62343132 diff --git a/eras/byron/ledger/impl/test/golden/cbor/update/ApplicationName b/eras/byron/ledger/impl/test/golden/cbor/update/ApplicationName deleted file mode 100644 index 142cf9ecc3c..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/update/ApplicationName +++ /dev/null @@ -1 +0,0 @@ -66476f6c64656e \ No newline at end of file diff --git a/eras/byron/ledger/impl/test/golden/cbor/update/AttackTarget_NetworkAddressTarget b/eras/byron/ledger/impl/test/golden/cbor/update/AttackTarget_NetworkAddressTarget deleted file mode 100644 index 9c7937009b5..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/update/AttackTarget_NetworkAddressTarget +++ /dev/null @@ -1 +0,0 @@ -{"Network":"ggv:32313"} \ No newline at end of file diff --git a/eras/byron/ledger/impl/test/golden/cbor/update/AttackTarget_PubKeyAddressTarget b/eras/byron/ledger/impl/test/golden/cbor/update/AttackTarget_PubKeyAddressTarget deleted file mode 100644 index b39087b7b8f..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/update/AttackTarget_PubKeyAddressTarget +++ /dev/null @@ -1 +0,0 @@ -{"PubKey":"cae922c720ea93e5ead49b4652fb24caf4948e31eee378a4c4513f11"} \ No newline at end of file diff --git a/eras/byron/ledger/impl/test/golden/cbor/update/BlockHeader_Boundary b/eras/byron/ledger/impl/test/golden/cbor/update/BlockHeader_Boundary deleted file mode 100644 index e48bdd650d6..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/update/BlockHeader_Boundary +++ /dev/null @@ -1,5 +0,0 @@ -00: 820085005820f7077d40c94a36e7df95 -10: b6f99a86f08bcf06ea3b24e68dd30393 -20: 33fa5314177558204965a00c5a47c387 -30: 733985445c24dc988b36e4fcd8db638e -40: c28a23ae4773ca60820b810081a0 diff --git a/eras/byron/ledger/impl/test/golden/cbor/update/CommitmentSignature b/eras/byron/ledger/impl/test/golden/cbor/update/CommitmentSignature deleted file mode 100644 index 3315370808c..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/update/CommitmentSignature +++ /dev/null @@ -1,5 +0,0 @@ -00: 58407803232dd492dacd3c0f7c5401a5 -10: 77a4bfa2891cf5c9da07134ac2414522 -20: c51b397e183602768910747ca3f2e065 -30: f14a625b278cc2d8b3bca5bae84bbab6 -40: bb03 diff --git a/eras/byron/ledger/impl/test/golden/cbor/update/HashRaw b/eras/byron/ledger/impl/test/golden/cbor/update/HashRaw deleted file mode 100644 index 716f52a6e7b..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/update/HashRaw +++ /dev/null @@ -1,3 +0,0 @@ -00: 582096b23a356c80ba706dbf08c0c2b2 -10: 05576a6affd6f43b43ba8b7dc53d0355 -20: 5938 diff --git a/eras/byron/ledger/impl/test/golden/cbor/update/HashTx b/eras/byron/ledger/impl/test/golden/cbor/update/HashTx deleted file mode 100644 index 8f8ac100809..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/update/HashTx +++ /dev/null @@ -1,3 +0,0 @@ -00: 58204ba839c420b3d2bd439530f891ca -10: e9a5d4c4d812044630dac72e8e0962fe -20: eecc diff --git a/eras/byron/ledger/impl/test/golden/cbor/update/InstallerHash b/eras/byron/ledger/impl/test/golden/cbor/update/InstallerHash deleted file mode 100644 index b6e56def3f6..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/update/InstallerHash +++ /dev/null @@ -1,9 +0,0 @@ -00: 84582003170a2e7597b7b7e3d84c0539 -10: 1d139a62b157e78786d8c082f29dcf4c -20: 1113145820cec02b41a5c236069cb3fd -30: 3fa658a013e230873c2013f783c05040 -40: 37dc859587582003170a2e7597b7b7e3 -50: d84c05391d139a62b157e78786d8c082 -60: f29dcf4c111314582003170a2e7597b7 -70: b7e3d84c05391d139a62b157e78786d8 -80: c082f29dcf4c111314 diff --git a/eras/byron/ledger/impl/test/golden/cbor/update/Payload b/eras/byron/ledger/impl/test/golden/cbor/update/Payload deleted file mode 100644 index f049e165967..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/update/Payload +++ /dev/null @@ -1,73 +0,0 @@ -000: 828187830101018e811903e7811903e7 -010: 811903e7811903e7811903e7811903e7 -020: 81186381186381186381186381186381 -030: 83186318631863818200d81853821b00 -040: 0000e8990a46001b00000011ed8ec200 -050: 8118638266476f6c64656e1863a5704b -060: 6d7977346c4453453553346653483684 -070: 582003170a2e7597b7b7e3d84c05391d -080: 139a62b157e78786d8c082f29dcf4c11 -090: 13145820acf524d17db14b997165a12f -0a0: 448fd7dddce6b48bb135ef317d5cfabd -0b0: 98f3318d582003170a2e7597b7b7e3d8 -0c0: 4c05391d139a62b157e78786d8c082f2 -0d0: 9dcf4c111314582003170a2e7597b7b7 -0e0: e3d84c05391d139a62b157e78786d8c0 -0f0: 82f29dcf4c1113147053346653483665 -100: 744e6f756958657a4384582003170a2e -110: 7597b7b7e3d84c05391d139a62b157e7 -120: 8786d8c082f29dcf4c1113145820cec0 -130: 2b41a5c236069cb3fd3fa658a013e230 -140: 873c2013f783c0504037dc8595875820 -150: 03170a2e7597b7b7e3d84c05391d139a -160: 62b157e78786d8c082f29dcf4c111314 -170: 582003170a2e7597b7b7e3d84c05391d -180: 139a62b157e78786d8c082f29dcf4c11 -190: 13147063337447346a61306b466a4f38 -1a0: 717a6184582003170a2e7597b7b7e3d8 -1b0: 4c05391d139a62b157e78786d8c082f2 -1c0: 9dcf4c1113145820e8f357c2f4b5521a -1d0: e3d23f142abbc681de7dab0f974c1c69 -1e0: 4743e3023d01e29e582003170a2e7597 -1f0: b7b7e3d84c05391d139a62b157e78786 -200: d8c082f29dcf4c111314582003170a2e -210: 7597b7b7e3d84c05391d139a62b157e7 -220: 8786d8c082f29dcf4c111314706a4f38 -230: 717a616932365a4d5055454a66845820 -240: 03170a2e7597b7b7e3d84c05391d139a -250: 62b157e78786d8c082f29dcf4c111314 -260: 582060c59bb5bd4926bd84a9bbb9e68d -270: 90837eef0a70561cd9d1a44b6dcc9507 -280: 994d582003170a2e7597b7b7e3d84c05 -290: 391d139a62b157e78786d8c082f29dcf -2a0: 4c111314582003170a2e7597b7b7e3d8 -2b0: 4c05391d139a62b157e78786d8c082f2 -2c0: 9dcf4c11131470756958657a4379456a -2d0: 4b63337447346a84582003170a2e7597 -2e0: b7b7e3d84c05391d139a62b157e78786 -2f0: d8c082f29dcf4c1113145820b8d7c33e -300: c93a110b459cf5a88edd42165bea75a1 -310: 91080e5ef6d75d114df4d81a58200317 -320: 0a2e7597b7b7e3d84c05391d139a62b1 -330: 57e78786d8c082f29dcf4c1113145820 -340: 03170a2e7597b7b7e3d84c05391d139a -350: 62b157e78786d8c082f29dcf4c111314 -360: a058404a30754b446269376936644c58 -370: 6b756573565a394a6648676a72637473 -380: 4c4674324e766f76586e6368734f7658 -390: 303559364c6f686c544e74356d6b5046 -3a0: 68556f5840d2af445e7f0f788c9fbd97 -3b0: c18bcd57ecda6661c6c25f8ab75cb859 -3c0: 33f11adb0cedd8a196c8cee2fece7896 -3d0: 10ab20a455ea3cba55e0b383e43d260f -3e0: e008f3d5079f8458404a30754b446269 -3f0: 376936644c586b756573565a394a6648 -400: 676a726374734c4674324e766f76586e -410: 6368734f7658303559364c6f686c544e -420: 74356d6b504668556f582072231b8d18 -430: d55f6637591c2d71fc47a4279cb466fa -440: 5059d2ebbc7c8a1220faecf55840a2dc -450: 6072461907e681d69bd9e44a885d8d0c -460: 76815bfba35de178169daaa3927a22d8 -470: bf8faeb89094ca9c0f7fda72d816d007 -480: 2f3a46eef82aa19fd9aa83f5fe09ff diff --git a/eras/byron/ledger/impl/test/golden/cbor/update/Proof b/eras/byron/ledger/impl/test/golden/cbor/update/Proof deleted file mode 100644 index c525da6bef2..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/update/Proof +++ /dev/null @@ -1,3 +0,0 @@ -00: 5820adfd9b4aa5620d4b0a0587186e68 -10: 28efa789b2582eef698523a308d6f3ed -20: d940 diff --git a/eras/byron/ledger/impl/test/golden/cbor/update/Proposal b/eras/byron/ledger/impl/test/golden/cbor/update/Proposal deleted file mode 100644 index 7b42ce50c17..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/update/Proposal +++ /dev/null @@ -1,63 +0,0 @@ -000: 87830101018e811903e7811903e78119 -010: 03e7811903e7811903e7811903e78118 -020: 63811863811863811863811863818318 -030: 6318631863818200d81853821b000000 -040: e8990a46001b00000011ed8ec2008118 -050: 638266476f6c64656e1863a5704b6d79 -060: 77346c44534535533466534836845820 -070: 03170a2e7597b7b7e3d84c05391d139a -080: 62b157e78786d8c082f29dcf4c111314 -090: 5820acf524d17db14b997165a12f448f -0a0: d7dddce6b48bb135ef317d5cfabd98f3 -0b0: 318d582003170a2e7597b7b7e3d84c05 -0c0: 391d139a62b157e78786d8c082f29dcf -0d0: 4c111314582003170a2e7597b7b7e3d8 -0e0: 4c05391d139a62b157e78786d8c082f2 -0f0: 9dcf4c1113147053346653483665744e -100: 6f756958657a4384582003170a2e7597 -110: b7b7e3d84c05391d139a62b157e78786 -120: d8c082f29dcf4c1113145820cec02b41 -130: a5c236069cb3fd3fa658a013e230873c -140: 2013f783c0504037dc85958758200317 -150: 0a2e7597b7b7e3d84c05391d139a62b1 -160: 57e78786d8c082f29dcf4c1113145820 -170: 03170a2e7597b7b7e3d84c05391d139a -180: 62b157e78786d8c082f29dcf4c111314 -190: 7063337447346a61306b466a4f38717a -1a0: 6184582003170a2e7597b7b7e3d84c05 -1b0: 391d139a62b157e78786d8c082f29dcf -1c0: 4c1113145820e8f357c2f4b5521ae3d2 -1d0: 3f142abbc681de7dab0f974c1c694743 -1e0: e3023d01e29e582003170a2e7597b7b7 -1f0: e3d84c05391d139a62b157e78786d8c0 -200: 82f29dcf4c111314582003170a2e7597 -210: b7b7e3d84c05391d139a62b157e78786 -220: d8c082f29dcf4c111314706a4f38717a -230: 616932365a4d5055454a668458200317 -240: 0a2e7597b7b7e3d84c05391d139a62b1 -250: 57e78786d8c082f29dcf4c1113145820 -260: 60c59bb5bd4926bd84a9bbb9e68d9083 -270: 7eef0a70561cd9d1a44b6dcc9507994d -280: 582003170a2e7597b7b7e3d84c05391d -290: 139a62b157e78786d8c082f29dcf4c11 -2a0: 1314582003170a2e7597b7b7e3d84c05 -2b0: 391d139a62b157e78786d8c082f29dcf -2c0: 4c11131470756958657a4379456a4b63 -2d0: 337447346a84582003170a2e7597b7b7 -2e0: e3d84c05391d139a62b157e78786d8c0 -2f0: 82f29dcf4c1113145820b8d7c33ec93a -300: 110b459cf5a88edd42165bea75a19108 -310: 0e5ef6d75d114df4d81a582003170a2e -320: 7597b7b7e3d84c05391d139a62b157e7 -330: 8786d8c082f29dcf4c11131458200317 -340: 0a2e7597b7b7e3d84c05391d139a62b1 -350: 57e78786d8c082f29dcf4c111314a058 -360: 404a30754b446269376936644c586b75 -370: 6573565a394a6648676a726374734c46 -380: 74324e766f76586e6368734f76583035 -390: 59364c6f686c544e74356d6b50466855 -3a0: 6f5840d2af445e7f0f788c9fbd97c18b -3b0: cd57ecda6661c6c25f8ab75cb85933f1 -3c0: 1adb0cedd8a196c8cee2fece789610ab -3d0: 20a455ea3cba55e0b383e43d260fe008 -3e0: f3d507 diff --git a/eras/byron/ledger/impl/test/golden/cbor/update/ProposalBody b/eras/byron/ledger/impl/test/golden/cbor/update/ProposalBody deleted file mode 100644 index bad52c26692..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/update/ProposalBody +++ /dev/null @@ -1,54 +0,0 @@ -000: 85830101018e811903e7811903e78119 -010: 03e7811903e7811903e7811903e78118 -020: 63811863811863811863811863818318 -030: 6318631863818200d81853821b000000 -040: e8990a46001b00000011ed8ec2008118 -050: 638266476f6c64656e1863a5704b6d79 -060: 77346c44534535533466534836845820 -070: 03170a2e7597b7b7e3d84c05391d139a -080: 62b157e78786d8c082f29dcf4c111314 -090: 5820acf524d17db14b997165a12f448f -0a0: d7dddce6b48bb135ef317d5cfabd98f3 -0b0: 318d582003170a2e7597b7b7e3d84c05 -0c0: 391d139a62b157e78786d8c082f29dcf -0d0: 4c111314582003170a2e7597b7b7e3d8 -0e0: 4c05391d139a62b157e78786d8c082f2 -0f0: 9dcf4c1113147053346653483665744e -100: 6f756958657a4384582003170a2e7597 -110: b7b7e3d84c05391d139a62b157e78786 -120: d8c082f29dcf4c1113145820cec02b41 -130: a5c236069cb3fd3fa658a013e230873c -140: 2013f783c0504037dc85958758200317 -150: 0a2e7597b7b7e3d84c05391d139a62b1 -160: 57e78786d8c082f29dcf4c1113145820 -170: 03170a2e7597b7b7e3d84c05391d139a -180: 62b157e78786d8c082f29dcf4c111314 -190: 7063337447346a61306b466a4f38717a -1a0: 6184582003170a2e7597b7b7e3d84c05 -1b0: 391d139a62b157e78786d8c082f29dcf -1c0: 4c1113145820e8f357c2f4b5521ae3d2 -1d0: 3f142abbc681de7dab0f974c1c694743 -1e0: e3023d01e29e582003170a2e7597b7b7 -1f0: e3d84c05391d139a62b157e78786d8c0 -200: 82f29dcf4c111314582003170a2e7597 -210: b7b7e3d84c05391d139a62b157e78786 -220: d8c082f29dcf4c111314706a4f38717a -230: 616932365a4d5055454a668458200317 -240: 0a2e7597b7b7e3d84c05391d139a62b1 -250: 57e78786d8c082f29dcf4c1113145820 -260: 60c59bb5bd4926bd84a9bbb9e68d9083 -270: 7eef0a70561cd9d1a44b6dcc9507994d -280: 582003170a2e7597b7b7e3d84c05391d -290: 139a62b157e78786d8c082f29dcf4c11 -2a0: 1314582003170a2e7597b7b7e3d84c05 -2b0: 391d139a62b157e78786d8c082f29dcf -2c0: 4c11131470756958657a4379456a4b63 -2d0: 337447346a84582003170a2e7597b7b7 -2e0: e3d84c05391d139a62b157e78786d8c0 -2f0: 82f29dcf4c1113145820b8d7c33ec93a -300: 110b459cf5a88edd42165bea75a19108 -310: 0e5ef6d75d114df4d81a582003170a2e -320: 7597b7b7e3d84c05391d139a62b157e7 -330: 8786d8c082f29dcf4c11131458200317 -340: 0a2e7597b7b7e3d84c05391d139a62b1 -350: 57e78786d8c082f29dcf4c111314a0 diff --git a/eras/byron/ledger/impl/test/golden/cbor/update/ProtocolParameters b/eras/byron/ledger/impl/test/golden/cbor/update/ProtocolParameters deleted file mode 100644 index 5566cbe3479..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/update/ProtocolParameters +++ /dev/null @@ -1,4 +0,0 @@ -00: 8e1903e71903e71903e71903e71903e7 -10: 1903e718631863186318631863831863 -20: 186318638200d81853821b000000e899 -30: 0a46001b00000011ed8ec2001863 diff --git a/eras/byron/ledger/impl/test/golden/cbor/update/ProtocolParametersUpdate b/eras/byron/ledger/impl/test/golden/cbor/update/ProtocolParametersUpdate deleted file mode 100644 index c8f53b1caf7..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/update/ProtocolParametersUpdate +++ /dev/null @@ -1,5 +0,0 @@ -00: 8e811903e7811903e7811903e7811903 -10: e7811903e7811903e781186381186381 -20: 18638118638118638183186318631863 -30: 818200d81853821b000000e8990a4600 -40: 1b00000011ed8ec200811863 diff --git a/eras/byron/ledger/impl/test/golden/cbor/update/ProtocolVersion b/eras/byron/ledger/impl/test/golden/cbor/update/ProtocolVersion deleted file mode 100644 index 413adee8505..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/update/ProtocolVersion +++ /dev/null @@ -1 +0,0 @@ -83010101 \ No newline at end of file diff --git a/eras/byron/ledger/impl/test/golden/cbor/update/SharesDistribution b/eras/byron/ledger/impl/test/golden/cbor/update/SharesDistribution deleted file mode 100644 index 884d2f95d08..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/update/SharesDistribution +++ /dev/null @@ -1,3 +0,0 @@ -00: a1581c5125b558daa14b5338e904cc2a -10: 75a8b7b3a4738de9cb28a6819576db19 -20: 0539 diff --git a/eras/byron/ledger/impl/test/golden/cbor/update/SoftforkRule b/eras/byron/ledger/impl/test/golden/cbor/update/SoftforkRule deleted file mode 100644 index b7257513c30..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/update/SoftforkRule +++ /dev/null @@ -1 +0,0 @@ -83186318631863 \ No newline at end of file diff --git a/eras/byron/ledger/impl/test/golden/cbor/update/SoftwareVersion b/eras/byron/ledger/impl/test/golden/cbor/update/SoftwareVersion deleted file mode 100644 index d7aebcd1f61..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/update/SoftwareVersion +++ /dev/null @@ -1 +0,0 @@ -8266476f6c64656e1863 \ No newline at end of file diff --git a/eras/byron/ledger/impl/test/golden/cbor/update/StaticConfig_GCSpec b/eras/byron/ledger/impl/test/golden/cbor/update/StaticConfig_GCSpec deleted file mode 100644 index 7cbe4b9fed8..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/update/StaticConfig_GCSpec +++ /dev/null @@ -1 +0,0 @@ -{"spec":{"avvmDistr":{"dtXbK7ASFLEa611AHt7SDk_48fVbNja-Tj7PgbE7tPE=":37343863242999412,"U4lgqRZyawnwXJ1NSpIrhbThGs_MFDRnPZUBm3qaUtI=":36524597913081152},"ftsSeed":"RTVTNGZTSDZldE5vdWlYZXpDeUVqS2MzdEc0amEwa0Y=","heavyDelegation":{"ed41bf35f4cd2109bdee27b0439942f6de3f55f0ac8d170de7136d3d":{"pskDelegatePk":"3cppv+rBTAEzBNqIrAMu5jKBqwNsGxuRiOSxdLMD9D5VFjsXjpmbn9UGN7Ltq4yFioeaw8S9PmEAlUGaGWllcw==","pskOmega":68300481033,"pskCert":"bae5422af5405e3803154a4ad986da5d14cf624d6701c5c78a79ec73777f74e13973af83752114d9f18166085997fc81e432cab7fee99a275d8bf138ad04e103","pskIssuerPk":"4qF3OiqC0QwwiQy/hOzL3Bqq7pIElkJNNuhoA52ctRkhsl7+Az2bANTwLM2c2rzsMyq7xv34g8pb86iv9KrCfg=="}},"blockVersionData":{"scriptVersion":999,"slotDuration":999,"maxBlockSize":999,"maxHeaderSize":999,"maxTxSize":999,"maxProposalSize":999,"mpcThd":9.9e-14,"heavyDelThd":9.9e-14,"updateVoteThd":9.9e-14,"updateProposalThd":9.9e-14,"updateImplicit":99,"softforkRule":{"initThd":9.9e-14,"minThd":9.9e-14,"thdDecrement":9.9e-14},"txFeePolicy":{"txSizeLinear":{"a":9.99e-7,"b":7.7e-8}},"unlockStakeEpoch":99},"protocolConstants":{"k":37,"protocolMagic":1783847074,"vssMaxTTL":1477558317,"vssMinTTL":744040476},"initializer":{"testBalance":{"poors":2448641325904532856,"richmen":14071205313513960321,"totalBalance":10953275486128625216,"richmenShare":4.2098713311249885,"useHDAddresses":true},"fakeAvvmBalance":{"count":17853231730478779264,"oneBalance":15087947214890024355},"avvmBalanceFactor":0.366832547637728,"useHeavyDlg":false,"seed":0}}} \ No newline at end of file diff --git a/eras/byron/ledger/impl/test/golden/cbor/update/StaticConfig_GCSrc b/eras/byron/ledger/impl/test/golden/cbor/update/StaticConfig_GCSrc deleted file mode 100644 index d03c6a91304..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/update/StaticConfig_GCSrc +++ /dev/null @@ -1 +0,0 @@ -{"src":{"file":"dRaMwdYsH3QA3dChe","hash":"bc9a1c2d86ddf023a39d8ae0abaf209fe4a95a3741cb99ecc0f011b48a5b69b9"}} \ No newline at end of file diff --git a/eras/byron/ledger/impl/test/golden/cbor/update/SystemTag b/eras/byron/ledger/impl/test/golden/cbor/update/SystemTag deleted file mode 100644 index 779d0545e26..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/update/SystemTag +++ /dev/null @@ -1,2 +0,0 @@ -00: 704b6d7977346c445345355334665348 -10: 36 diff --git a/eras/byron/ledger/impl/test/golden/cbor/update/UpId b/eras/byron/ledger/impl/test/golden/cbor/update/UpId deleted file mode 100644 index 2a90e5b3d27..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/update/UpId +++ /dev/null @@ -1,3 +0,0 @@ -00: 582072231b8d18d55f6637591c2d71fc -10: 47a4279cb466fa5059d2ebbc7c8a1220 -20: faec diff --git a/eras/byron/ledger/impl/test/golden/cbor/update/Vote b/eras/byron/ledger/impl/test/golden/cbor/update/Vote deleted file mode 100644 index ba2c2f439d9..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/update/Vote +++ /dev/null @@ -1,11 +0,0 @@ -00: 8458404a30754b446269376936644c58 -10: 6b756573565a394a6648676a72637473 -20: 4c4674324e766f76586e6368734f7658 -30: 303559364c6f686c544e74356d6b5046 -40: 68556f582072231b8d18d55f6637591c -50: 2d71fc47a4279cb466fa5059d2ebbc7c -60: 8a1220faecf55840a2dc6072461907e6 -70: 81d69bd9e44a885d8d0c76815bfba35d -80: e178169daaa3927a22d8bf8faeb89094 -90: ca9c0f7fda72d816d0072f3a46eef82a -a0: a19fd9aa83f5fe09 diff --git a/eras/byron/ledger/impl/test/golden/cbor/utxo/HashTx b/eras/byron/ledger/impl/test/golden/cbor/utxo/HashTx deleted file mode 100644 index 8f8ac100809..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/utxo/HashTx +++ /dev/null @@ -1,3 +0,0 @@ -00: 58204ba839c420b3d2bd439530f891ca -10: e9a5d4c4d812044630dac72e8e0962fe -20: eecc diff --git a/eras/byron/ledger/impl/test/golden/cbor/utxo/Tx b/eras/byron/ledger/impl/test/golden/cbor/utxo/Tx deleted file mode 100644 index 3453ce490a5..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/utxo/Tx +++ /dev/null @@ -1,6 +0,0 @@ -00: 839f8200d81858258258204ba839c420 -10: b3d2bd439530f891cae9a5d4c4d81204 -20: 4630dac72e8e0962feeecc182fff9f82 -30: 82d818582183581caa5372095aaa680d -40: 19d4ca496983a145709c3be18b0d4c83 -50: cb7bdc5ea0001a32dc988e182fffa0 diff --git a/eras/byron/ledger/impl/test/golden/cbor/utxo/TxAttributes b/eras/byron/ledger/impl/test/golden/cbor/utxo/TxAttributes deleted file mode 100644 index c545f2f9813..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/utxo/TxAttributes +++ /dev/null @@ -1 +0,0 @@ -a0 \ No newline at end of file diff --git a/eras/byron/ledger/impl/test/golden/cbor/utxo/TxId b/eras/byron/ledger/impl/test/golden/cbor/utxo/TxId deleted file mode 100644 index 8f8ac100809..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/utxo/TxId +++ /dev/null @@ -1,3 +0,0 @@ -00: 58204ba839c420b3d2bd439530f891ca -10: e9a5d4c4d812044630dac72e8e0962fe -20: eecc diff --git a/eras/byron/ledger/impl/test/golden/cbor/utxo/TxInList b/eras/byron/ledger/impl/test/golden/cbor/utxo/TxInList deleted file mode 100644 index 5a345812419..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/utxo/TxInList +++ /dev/null @@ -1,3 +0,0 @@ -00: 9f8200d81858258258204ba839c420b3 -10: d2bd439530f891cae9a5d4c4d8120446 -20: 30dac72e8e0962feeecc182fff diff --git a/eras/byron/ledger/impl/test/golden/cbor/utxo/TxInWitness_RedeemWitness b/eras/byron/ledger/impl/test/golden/cbor/utxo/TxInWitness_RedeemWitness deleted file mode 100644 index 4be4ad6e9d6..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/utxo/TxInWitness_RedeemWitness +++ /dev/null @@ -1,7 +0,0 @@ -00: 8202d8185865825820538960a916726b -10: 09f05c9d4d4a922b85b4e11acfcc1434 -20: 673d95019b7a9a52d258407d1479e7fd -30: d86a35eed51654fe5b3a76d12184eb5d -40: 9be8a455981479369537393b99b1cdaf -50: 2ec70c8fa60bd25dfd71fa206ef686a2 -60: 8b195fe78583648e8fb10b diff --git a/eras/byron/ledger/impl/test/golden/cbor/utxo/TxInWitness_VKWitness b/eras/byron/ledger/impl/test/golden/cbor/utxo/TxInWitness_VKWitness deleted file mode 100644 index 98e41bfd782..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/utxo/TxInWitness_VKWitness +++ /dev/null @@ -1,9 +0,0 @@ -00: 8200d81858858258404b6d7977346c44 -10: 53453553346653483665744e6f756958 -20: 657a4379456a4b63337447346a61306b -30: 466a4f38717a616932365a4d5055454a -40: 66457931356f78356b5840688aad857b -50: c7ff30fc6862da1be281f420c65271b7 -60: 6ab19782ff40e2955af88819c38e5c79 -70: 138f28073abae152c882258b4420a0c1 -80: c9fdd26c98812697fc3e00 diff --git a/eras/byron/ledger/impl/test/golden/cbor/utxo/TxIn_Utxo b/eras/byron/ledger/impl/test/golden/cbor/utxo/TxIn_Utxo deleted file mode 100644 index 17e0f77ea7c..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/utxo/TxIn_Utxo +++ /dev/null @@ -1,3 +0,0 @@ -00: 8200d81858258258204ba839c420b3d2 -10: bd439530f891cae9a5d4c4d812044630 -20: dac72e8e0962feeecc182f diff --git a/eras/byron/ledger/impl/test/golden/cbor/utxo/TxOut b/eras/byron/ledger/impl/test/golden/cbor/utxo/TxOut deleted file mode 100644 index 597d2429533..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/utxo/TxOut +++ /dev/null @@ -1,3 +0,0 @@ -00: 8282d818582183581caa5372095aaa68 -10: 0d19d4ca496983a145709c3be18b0d4c -20: 83cb7bdc5ea0001a32dc988e182f diff --git a/eras/byron/ledger/impl/test/golden/cbor/utxo/TxOut1 b/eras/byron/ledger/impl/test/golden/cbor/utxo/TxOut1 deleted file mode 100644 index a7abfcd862a..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/utxo/TxOut1 +++ /dev/null @@ -1,4 +0,0 @@ -00: 8282d818582583581cec106f4355a6f2 -10: b276aa9cf9f21a06cfac2400035bef6e -20: 1dc19eab42a10242184a001a7017fe5d -30: 182f diff --git a/eras/byron/ledger/impl/test/golden/cbor/utxo/TxOutList b/eras/byron/ledger/impl/test/golden/cbor/utxo/TxOutList deleted file mode 100644 index 11c440aef34..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/utxo/TxOutList +++ /dev/null @@ -1,3 +0,0 @@ -00: 9f8282d818582183581caa5372095aaa -10: 680d19d4ca496983a145709c3be18b0d -20: 4c83cb7bdc5ea0001a32dc988e182fff diff --git a/eras/byron/ledger/impl/test/golden/cbor/utxo/TxOutList1 b/eras/byron/ledger/impl/test/golden/cbor/utxo/TxOutList1 deleted file mode 100644 index 11c440aef34..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/utxo/TxOutList1 +++ /dev/null @@ -1,3 +0,0 @@ -00: 9f8282d818582183581caa5372095aaa -10: 680d19d4ca496983a145709c3be18b0d -20: 4c83cb7bdc5ea0001a32dc988e182fff diff --git a/eras/byron/ledger/impl/test/golden/cbor/utxo/TxPayload1 b/eras/byron/ledger/impl/test/golden/cbor/utxo/TxPayload1 deleted file mode 100644 index 9e9e2263b20..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/utxo/TxPayload1 +++ /dev/null @@ -1,36 +0,0 @@ -000: 9f82839f8200d81858258258204ba839 -010: c420b3d2bd439530f891cae9a5d4c4d8 -020: 12044630dac72e8e0962feeecc182fff -030: 9f8282d818582183581caa5372095aaa -040: 680d19d4ca496983a145709c3be18b0d -050: 4c83cb7bdc5ea0001a32dc988e182fff -060: a0818200d81858858258404b6d797734 -070: 6c4453453553346653483665744e6f75 -080: 6958657a4379456a4b63337447346a61 -090: 306b466a4f38717a616932365a4d5055 -0a0: 454a66457931356f78356b5840688aad -0b0: 857bc7ff30fc6862da1be281f420c652 -0c0: 71b76ab19782ff40e2955af88819c38e -0d0: 5c79138f28073abae152c882258b4420 -0e0: a0c1c9fdd26c98812697fc3e0082839f -0f0: 8200d81858258258204ba839c420b3d2 -100: bd439530f891cae9a5d4c4d812044630 -110: dac72e8e0962feeecc182f8200d81858 -120: 258258204ba839c420b3d2bd439530f8 -130: 91cae9a5d4c4d812044630dac72e8e09 -140: 62feeecc184aff9f8282d81858218358 -150: 1caa5372095aaa680d19d4ca496983a1 -160: 45709c3be18b0d4c83cb7bdc5ea0001a -170: 32dc988e182f8282d818582583581cec -180: 106f4355a6f2b276aa9cf9f21a06cfac -190: 2400035bef6e1dc19eab42a10242184a -1a0: 001a7017fe5d182fffa0818200d81858 -1b0: 858258404b6d7977346c445345355334 -1c0: 6653483665744e6f756958657a437945 -1d0: 6a4b63337447346a61306b466a4f3871 -1e0: 7a616932365a4d5055454a6645793135 -1f0: 6f78356b5840688aad857bc7ff30fc68 -200: 62da1be281f420c65271b76ab19782ff -210: 40e2955af88819c38e5c79138f28073a -220: bae152c882258b4420a0c1c9fdd26c98 -230: 812697fc3e00ff diff --git a/eras/byron/ledger/impl/test/golden/cbor/utxo/TxProof b/eras/byron/ledger/impl/test/golden/cbor/utxo/TxProof deleted file mode 100644 index e9076f71d27..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/utxo/TxProof +++ /dev/null @@ -1,5 +0,0 @@ -00: 83182058205e46ceb20538afeeb45cb8 -10: f7030512af34b4ff363a8c7e94d441a2 -20: 57500ffab75820e32c9549bc3acbe0e8 -30: 48b2d7ad26331b7d8497580364cb2bc6 -40: c8bda9aa0975b8 diff --git a/eras/byron/ledger/impl/test/golden/cbor/utxo/TxSig b/eras/byron/ledger/impl/test/golden/cbor/utxo/TxSig deleted file mode 100644 index ae63735e8ee..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/utxo/TxSig +++ /dev/null @@ -1,5 +0,0 @@ -00: 5840688aad857bc7ff30fc6862da1be2 -10: 81f420c65271b76ab19782ff40e2955a -20: f88819c38e5c79138f28073abae152c8 -30: 82258b4420a0c1c9fdd26c98812697fc -40: 3e00 diff --git a/eras/byron/ledger/impl/test/golden/cbor/utxo/TxSigData b/eras/byron/ledger/impl/test/golden/cbor/utxo/TxSigData deleted file mode 100644 index 8f8ac100809..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/utxo/TxSigData +++ /dev/null @@ -1,3 +0,0 @@ -00: 58204ba839c420b3d2bd439530f891ca -10: e9a5d4c4d812044630dac72e8e0962fe -20: eecc diff --git a/eras/byron/ledger/impl/test/golden/cbor/utxo/TxWitness b/eras/byron/ledger/impl/test/golden/cbor/utxo/TxWitness deleted file mode 100644 index 83fd86e026d..00000000000 --- a/eras/byron/ledger/impl/test/golden/cbor/utxo/TxWitness +++ /dev/null @@ -1,9 +0,0 @@ -00: 818200d81858858258404b6d7977346c -10: 4453453553346653483665744e6f7569 -20: 58657a4379456a4b63337447346a6130 -30: 6b466a4f38717a616932365a4d505545 -40: 4a66457931356f78356b5840688aad85 -50: 7bc7ff30fc6862da1be281f420c65271 -60: b76ab19782ff40e2955af88819c38e5c -70: 79138f28073abae152c882258b4420a0 -80: c1c9fdd26c98812697fc3e00 diff --git a/eras/byron/ledger/impl/test/golden/json/genesis/GenesisData0_Legacy_HasNetworkMagic b/eras/byron/ledger/impl/test/golden/json/genesis/GenesisData0_Legacy_HasNetworkMagic deleted file mode 100644 index c9ba4a16553..00000000000 --- a/eras/byron/ledger/impl/test/golden/json/genesis/GenesisData0_Legacy_HasNetworkMagic +++ /dev/null @@ -1,86 +0,0 @@ -{ "avvmDistr": - { "U4lgqRZyawnwXJ1NSpIrhbThGs_MFDRnPZUBm3qaUtI=": - "36524597913081152" - , "dtXbK7ASFLEa611AHt7SDk_48fVbNja-Tj7PgbE7tPE=": - "37343863242999412" - } -, "blockVersionData": - { "heavyDelThd": "99" - , "maxBlockSize": "999" - , "maxHeaderSize": "999" - , "maxProposalSize": "999" - , "maxTxSize": "999" - , "mpcThd": "99" - , "scriptVersion": 999 - , "slotDuration": "999" - , "softforkRule": - { "initThd": "99" , "minThd": "99" , "thdDecrement": "99" } - , "txFeePolicy": { "multiplier": "77000000000" , "summand": "999000000000" } - , "unlockStakeEpoch": "99" - , "updateImplicit": "99" - , "updateProposalThd": "99" - , "updateVoteThd": "99" - } -, "bootStakeholders": - { "b4c0e0810a8cd4f5b9249c41900704b35ed186205c708a40b5abac90": - 1337 } -, "ftsSeed": - "453553346653483665744e6f756958657a4379456a4b63337447346a61306b46" -, "heavyDelegation": - { "ed41bf35f4cd2109bdee27b0439942f6de3f55f0ac8d170de7136d3d": - { "cert": - "bae5422af5405e3803154a4ad986da5d14cf624d6701c5c78a79ec73777f74e13973af83752114d9f18166085997fc81e432cab7fee99a275d8bf138ad04e103" - , "delegatePk": - "3cppv+rBTAEzBNqIrAMu5jKBqwNsGxuRiOSxdLMD9D5VFjsXjpmbn9UGN7Ltq4yFioeaw8S9PmEAlUGaGWllcw==" - , "issuerPk": - "4qF3OiqC0QwwiQy/hOzL3Bqq7pIElkJNNuhoA52ctRkhsl7+Az2bANTwLM2c2rzsMyq7xv34g8pb86iv9KrCfg==" - , "omega": 68300481033 - } } -, "nonAvvmBalances": - { "2RhQhCGqYPDpFgTsnBTbnvPvCwpqAkjwLqQkWpkqXbLRmNxd4xNd262nGsr8JiynyKRUeMLSJ9Ntho9i76uvBTrVXdJJG5yiNLb8frmUe5qX7E": - "36524597913081152" - , "Ae2tdPwUPEZDoUnyXuAgqzhkjNXNJeiZ5nqwprg9sArZmRNjySfJ5uz4FjB": - "37343863242999412" - } -, "protocolConsts": - { "k": 12344 - , "protocolMagic": 31337 - , "vssMaxTTL": 1477558317 - , "vssMinTTL": 744040476 - } -, "startTime": -2642634399 -, "vssCerts": - { "937592c16145ff3efd31f7794fca190175de52e8ff110a76a229455b": - { "expiryEpoch": 122 - , "signature": - "5c0835d30c015dc9ee745fdf09120aa0c335766112d1cd1c88fd72e18b7306d027651047a268254d71ec8a8608368b6de25d56cad17d65a415489c85df94d602" - , "signingKey": - "ZExYa3Vlc1ZaOUpmSGdqcmN0c0xGdDJOdm92WG5jaHNPdlgwNVk2TG9obFROdDVta1BGaFVvWHUxRVpTSlRJeQ==" - , "vssKey": "WCECTOxcafcxIvLc1rb2khZVlg06Yi4ALooxj26kpcztMcA=" - } - , "9e533c582bd9fed1ef6afbf3db7208260db47a505ce92f22c699d9a6": - { "expiryEpoch": 122 - , "signature": - "7203430204e0d8adbdf0fc778a461864757fbdc38a34121181edbb69e9d9a15ac06f407972a1c9a19ea0bfe451317018c89d4a7fd38352083092e63270d1c90e" - , "signingKey": - "RnQyTnZvdlhuY2hzT3ZYMDVZNkxvaGxUTnQ1bWtQRmhVb1h1MUVaU0pUSXkzZlRVNTNiNDEycjRBRXVzRDd0Yw==" - , "vssKey": "WCEDS2GeEyq2QzuaCqV7FZOnveogpYx9RCh2QM4XQNxPebk=" - } - , "ec3b88e2600a27505f27a06d097e8bbc04936a7940eadbdbe8794c81": - { "expiryEpoch": 122 - , "signature": - "24319a81ec9754e293e99e2003706f86b1bc98c318abac8c1e3488cc7b24ef80e6c3569f948e8f51fe66848c609d38294e814809976997396e9680394d8e9200" - , "signingKey": - "SmZIZ2pyY3RzTEZ0Mk52b3ZYbmNoc092WDA1WTZMb2hsVE50NW1rUEZoVW9YdTFFWlNKVEl5M2ZUVTUzYjQxMg==" - , "vssKey": "WCEDclC8OTK1tfbEJ3Tu88Bup7fxNoboPW/57DFkWaY3NoI=" - } - , "f1364141473f4f736295b2b824c73e9f1a7f9be7ee3e9fbe52e97351": - { "expiryEpoch": 122 - , "signature": - "a886c42070ac836a292800ed75f5acabf9a9d768ed91ae80c2fcf065e5f66377f5dca619e4d100facf4d8778c4472da22232617ab4740ff71acdc5eb0c4fed0b" - , "signingKey": - "SjB1S0RiaTdpNmRMWGt1ZXNWWjlKZkhnanJjdHNMRnQyTnZvdlhuY2hzT3ZYMDVZNkxvaGxUTnQ1bWtQRmhVbw==" - , "vssKey": "WCEDXfZLB0W3qMDZK39FaMeHD5o+s4DaWDHXHYbeBEz6TU0=" - } - } -} diff --git a/eras/byron/ledger/impl/test/test.hs b/eras/byron/ledger/impl/test/test.hs deleted file mode 100644 index 2707c98e7d7..00000000000 --- a/eras/byron/ledger/impl/test/test.hs +++ /dev/null @@ -1,73 +0,0 @@ -module Main ( - main, -) -where - -import Cardano.Prelude -import qualified Test.Cardano.Chain.Block.CBOR -import qualified Test.Cardano.Chain.Block.Model -import qualified Test.Cardano.Chain.Block.Size -import qualified Test.Cardano.Chain.Block.Validation -import qualified Test.Cardano.Chain.Block.ValidationMode -import qualified Test.Cardano.Chain.Buildable -import qualified Test.Cardano.Chain.Byron.API -import qualified Test.Cardano.Chain.Common.Address -import qualified Test.Cardano.Chain.Common.Attributes -import qualified Test.Cardano.Chain.Common.CBOR -import qualified Test.Cardano.Chain.Common.Compact -import qualified Test.Cardano.Chain.Common.Lovelace -import qualified Test.Cardano.Chain.Delegation.CBOR -import qualified Test.Cardano.Chain.Delegation.Certificate -import qualified Test.Cardano.Chain.Delegation.Model -import qualified Test.Cardano.Chain.Elaboration.Delegation -import qualified Test.Cardano.Chain.Epoch.File -import qualified Test.Cardano.Chain.Genesis.CBOR -import qualified Test.Cardano.Chain.Genesis.Json -import qualified Test.Cardano.Chain.MempoolPayload.CBOR -import qualified Test.Cardano.Chain.Slotting.CBOR -import qualified Test.Cardano.Chain.Slotting.Properties -import qualified Test.Cardano.Chain.Ssc.CBOR -import qualified Test.Cardano.Chain.UTxO.CBOR -import qualified Test.Cardano.Chain.UTxO.Compact -import qualified Test.Cardano.Chain.UTxO.Model -import qualified Test.Cardano.Chain.UTxO.ValidationMode -import qualified Test.Cardano.Chain.Update.CBOR -import qualified Test.Cardano.Chain.Update.Properties -import Test.Options (ShouldAssertNF (..), mainWithTestScenario, tsGroupToTree) -import Test.Tasty (testGroup) - -main :: IO () -main = - mainWithTestScenario $ - testGroup "Cardano Ledger Tests" $ - tsGroupToTree - <$> [ Test.Cardano.Chain.Block.CBOR.tests - , Test.Cardano.Chain.Block.Model.tests - , Test.Cardano.Chain.Block.Size.tests - , Test.Cardano.Chain.Block.Validation.tests NoAssertNF - , Test.Cardano.Chain.Block.ValidationMode.tests - , Test.Cardano.Chain.Buildable.tests - , Test.Cardano.Chain.Common.Address.tests - , Test.Cardano.Chain.Common.Attributes.tests - , Test.Cardano.Chain.Common.CBOR.tests - , Test.Cardano.Chain.Common.Compact.tests - , Test.Cardano.Chain.Common.Lovelace.tests - , Test.Cardano.Chain.Delegation.CBOR.tests - , const Test.Cardano.Chain.Delegation.Certificate.tests - , const Test.Cardano.Chain.Delegation.Model.tests - , const Test.Cardano.Chain.Epoch.File.tests - , Test.Cardano.Chain.Elaboration.Delegation.tests - , Test.Cardano.Chain.Genesis.CBOR.tests - , Test.Cardano.Chain.Genesis.Json.tests - , Test.Cardano.Chain.MempoolPayload.CBOR.tests - , Test.Cardano.Chain.Slotting.CBOR.tests - , Test.Cardano.Chain.Slotting.Properties.tests - , const Test.Cardano.Chain.Ssc.CBOR.tests - , Test.Cardano.Chain.UTxO.CBOR.tests - , Test.Cardano.Chain.UTxO.Compact.tests - , Test.Cardano.Chain.UTxO.Model.tests - , Test.Cardano.Chain.UTxO.ValidationMode.tests - , Test.Cardano.Chain.Update.CBOR.tests - , Test.Cardano.Chain.Update.Properties.tests - , Test.Cardano.Chain.Byron.API.tests - ] diff --git a/eras/conway/impl/.ghcid b/eras/conway/impl/.ghcid deleted file mode 100644 index bc0b46eeb6b..00000000000 --- a/eras/conway/impl/.ghcid +++ /dev/null @@ -1 +0,0 @@ ---command="cabal repl --repl-options='-isrc -fwarn-unused-binds -fwarn-unused-imports -fno-code -fobject-code -g2 -fno-break-on-exception -fno-break-on-error -ferror-spans -j -Wno-unused-packages'" --clear --no-height-limit --reverse-errors --reload=../../../ --outputfile=/tmp/cardano-ledger-conway-ghcid.txt \ No newline at end of file diff --git a/eras/conway/impl/CHANGELOG.md b/eras/conway/impl/CHANGELOG.md deleted file mode 100644 index f53c0bb89a8..00000000000 --- a/eras/conway/impl/CHANGELOG.md +++ /dev/null @@ -1,697 +0,0 @@ -# Version history for `cardano-ledger-conway` - -## 1.13.1.0 - -* Add `foldrVotingProcedures` -* Fix typo in `ToJSON` instance of `ConwayGovState` - -### `testlib` - -* Add `ToExpr` instance for `GovProcedures` - -## 1.13.0.0 - -* Add `geCommitteeState` -* Remove `ConwayDelegEvent`, `ConwayGovCertEvent` -* Add `GovInfoEvent` -* Add `ConwayUtxosEvent` -* Add `Generic`, `Eq` and `NFData` instances for `ConwayEpochEvent` -* Add `Eq` and `NFData` instances for: - * `ConwayGovEvent` - * `ConwayCertEvent` - * `ConwayCertsEvent` - * `ConwayLedgerEvent` - * `ConwayNewEpochEvent` -* Add type `EraRuleEvent` instances for the event type of: - * `UPEC` - * `NEWPP` - * `PPUP` - * `MIR` - * `DELEGS` - * `TICK` - * `ENACT` - * `LEDGER` - * `UTXOS` -* Add `ConwayDRepIncorrectRefund` -* Stop exporting `utxosGovStateL` from `Cardano.Ledger.Conway.Governance` -* Remove deprecated `curPParamsConwayGovStateL` and `prevPParamsConwayGovStateL` -* Add `EraRuleFailure "POOL"` type instance for `ConwayEra` -* Add `ConwayUtxosPredFailure` -* Support for intra-era hard fork with `ProtVerHigh` set to `10` -* Guard Conway-specific features in transactions that use Plutus v1 or v2. #4112 - * Add `PlutusContextError` variants: - * `CurrentTreasuryValueFieldNotSupported` - * `VotingProceduresFieldNotSupported` - * `ProposalProceduresFieldNotSupported` - * `TreasuryDonationFieldNotSupported` - * Allow `RegDepositTxCert` and `UnRegDepositTxCert` to pass by ignoring the deposit or refund values, respectively. -* Switch `EPOCH` rule environment back to `()`. Start using the latest stake pool - distribution: #4115 -* Add: - * `transTxInInfoV1` - * `transTxOutV1` -* Add instances for `InjectRuleFailure` and switch to using `injectFailure` -* Remove `ConwayPOOL` rule, in favor of `ShelleyPOOL` -* Add `NFData` instance for `BabbageUtxoPredFailure` -* Rename `MinFeeRefScriptCoinsPerByte` to `MinFeeRefScriptCostPerByte` and change its type from `CoinsPerByte` to `NonNegativeInterval` #4055 -* Rename `committeeQuorum` to `committeeThreshold` #4053 -* Changed `GovActionState` to have 1 field (`gasProposalProcedure`) rather than 3 (`gasDeposit`, `gasAction`, `gasReturnAddr`) - * the old field names (`gasDeposit`, `gasAction`, `gasReturnAddr`) become functions, and the lenses - * (`gasDepositL`, `gasActionL`, `gasReturnAddrL`) have the same type, but behave differently. - * Added the lenses: `pProcDepositL`, `pProcGovActionL`, `pProcReturnAddrL`, `pProcAnchorL`, `gasProposalProcedureL`. -* Add `getDRepDistr`, `getConstitution` and `getCommitteeMembers` from `ConwayEraGov` #4033 - * Move `Constitution` to `Conway.Governance.Procedures` -* Add implementation for `getMinFeeTxUtxo` -* Add `cppMinFeeRefScriptCoinsPerByte` to `ConwayPParams` and `ppMinFeeRefScriptCoinsPerByteL` -* Add `ucppMinFeeRefScriptCoinsPerByte` to `UpgradeConwayPParams` and `ppuMinFeeRefScriptCoinsPerByteL` -* Fix `ConwayTxBody` pattern synonym, by changing its certificates arguments to `OSet` - from a `StrictSeq`. -* Add `VotingPurpose` and `ProposingPurpose` pattern synonyms -* Add `ConwayEraScript` with `toVotingPurpose`, `toProposingPurpose`, `fromVotingPurpose`, - `fromProposingPurpose`. -* Add upgrade failure: `CTBUEContainsDuplicateCerts` -* Rename `proposalsRemoveDescendentIds` to `proposalsRemoveWithDescendants` (fixed spelling too) -* Rename: - * `pfPParamUpdateL` to `grPParamUpdateL` - * `pfHardForkL` to `grHardForkL` - * `pfCommitteeL` to `grCommitteeL` - * `pfConstitutionL` to `grConstitutionL` -* Rename: - * `cgProposalsL` to `cgsProposalsL` - * `cgEnactStateL` to `cgsEnactStateL` - * `cgDRepPulsingStateL` to `cgsDRepPulsingStateL` -* Add: - * `cgsPrevPParamsL` - * `cgsCommitteeL` - * `cgsConstitutionL` - * `govStatePrevGovActionIds` - * `mkEnactState` -* Deprecated `curPParamsConwayGovStateL` and `curPParamsConwayGovStateL` -* Rename `PForest` to `GovRelation` -* Add `hoistGovRelation` and `withGovActionParent` -* Add `TreeMaybe`, `toGovRelationTree` and `toGovRelationTreeEither` -* Remove `proposalsAreConsistent` -* Remove `registerDelegs` and `registerInitialDReps` -* Modify `PParams` JSON instances to match `cardano-api` - -### `testlib` - -* Add `ToExpr` instances for: - * `ConwayNewEpochEvent` - * `ConwayEpochEvent` - * `ConwayLedgerEvent` - * `ConwayCertsEvent` - * `ConwayCertEvent` - * `ConwayGovEvent` -* Change the types of some functions in `Test.Cardano.Ledger.Conway.ImpTest` - to use `NonEmpty (PredicateFailure _)` instead of `[PredicateFailure _]` - - `submitFailingVote` - - `trySubmitVote` - - `trySubmitProposal` - - `trySubmitProposals` - - `submitFailingProposal` - - `trySubmitGovAction` - - `trySubmitGovActions` -* Add `Test.Cardano.Ledger.Conway.Imp.GovCertSpec` -* Add `RuleListEra` instance for Conway -* Rename `canGovActionBeDRepAccepted` to `isDRepAccepted` and refactor #4097 - * Add `isSPOAccepted` - * Change `setupSingleDRep` to return relevant keyhashes - * Change `setupPoolWithStake` to return relevant keyhashes - * Add `getLastEnactedCommittee` - * Add `getRatifyEnvAndState` -* Add `Test.Cardano.Ledger.Conway.Imp.UtxosSpec` -* Add `getGovPolicy` -* Add `submitGovActions` and `trySubmitGovActions` -* Add `submitProposals` and `trySubmitProposal` - -## 1.12.0.0 - -* Changed the types in `GovernanceActionsDoNotExist`, `DisallowedVoters` - and `VotingOnExpiredGovAction` to `NonEmpty` -* Add `cgDelegsL` -* Add `FromJSON`, `EncCBOR` and `DecCBOR` instances for `Delegatee` -* Add `pvtPPSecurityGroup` -* Add lenses: - * `pvtCommitteeNormalL` - * `pvtCommitteeNoConfidenceL` - * `pvtPPSecurityGroupL` - * `dvtCommitteeNoConfidenceL` -* Add `PPGroups` and `StakePoolGroup` -* Add `ToStakePoolGroup` typeclass -* Add `DRepGroup` and `ToDRepGroup` typeclass -* Modify `THKD` replacing `PPGroup` with `PPGroups` -* Add `ConwayPlutusPurpose` -* Add `unGovActionIx` -* Add `foldlVotingProcedures` -* Add a policy field to `ParameterChange` and `TreasuryWithdrawals` constructors - of `GovAction` -* Add `InvalidPolicyHash` to `ConwayGovPredFailure` -* Add `ToJSON` instance for `ConwayContextError`, `ConwayTxCert`, `ConwayDelegCert`, - `Delegatee` and `ConwayGovCert` -* Add `forceDRepPulsingState` -* Add `registerInitialDReps` and `registerDelegs` -* Add `cgDelegs`, `cgInitialDReps` to `ConwayGenesis` -* Changed the type of lenses ppCommitteeMaxTermLengthL, ppuCommitteeMaxTermLengthL -* Change 'getScriptWitnessConwayTxCert' so that DRepRegistration certificate requires a witness -* Implement `ToJSON` and `FromJSON` instances for `PoolVotingThresholds` and - `DRepVotingThreshold`, instead of deriving that doesn't handle field names - correctly. -* Hide `Cardano.Ledger.Conway.TxOut` module -* Export `ConwayEraPParams` and `ConwayEraTxBody` from `Cardano.Ledger.Conway.Core` -* Stop exporting `BabbagePParams` from `Cardano.Ledger.Conway.PParams` -* Add `transTxBodyWithdrawals`, `transTxCert`, `transDRepCred`, `transColdCommitteeCred`, - `transHotCommitteeCred`, `transDelegatee`, `transDRep`, `transScriptPurpose` -* Remove `conwayTxInfo` and `babbageScriptPrefixTag` -* Remove deprcated `translateScript` -* Add `getVoteDelegatee` -* Track and prune unreachable proposals #3855 #3919 #3978 #3981 - * Consolidate the entire proposals-tree under the `Proposals` module and expose all its operations in a convenient manner - * Move `PrevGovActionIds` from `Governance` to `Governance.Proposals` - * Add `rsEnacted` field to `RatifyState` to track enacted proposals separately from removed ones and rename `rsRemoved` to `rsExpired` in order to better represent its role - * Add `ProposalsSerializable` as an accompanying type used to correctly serialize `Proposals` in a space-efficient way - * Add the following operations to `Governance.Proposals` - * `mkProposals` as the only way to reconstruct the `Proposals` tree from, for instance, a deserialized one - * `proposalsAddAction` as the only way to add new proposals to the system - * `proposalsApplyEnactment` as the only way to replay from `ENACT` operations upon `Proposals` in the ledger state, outside of the pulser. - * Rename `PrevGovActionId purpose (EraCrypto era)` to `GovPurposeId purpose era` - * Add the following accessors and lenses, among others: - * `PForest` - * `PRoot` - * `PEdges` - * `PHierarchy` - * `pRootsL` - * `prRootL` - * `prChildrenL` - * `pnChildrenL` - * `pHierarchyL` - * `pHierarchyNodesL` - * `pfPParamUpdateL` - * `pfHardForkL` - * `pfCommitteeL` - * `pfConstitutionL` - * Add the pruning functionality and the deposit refunds in the `EPOCH` rule - * In the `Gov` rule - * Modify the rule transition implementation to accept new proposals into the `Proposals` forests based on proposal purpose - * In the `Ratify` rule - * Account for the tracking of enacted and expired proposals -* Moved `ToExpr` instances out of the main library and into the testlib. -* Changed the type of ConwayPParam's fields cppEMax, cppGovActionLifetime, cppDRepActivity -* Changed types of lenses: `ppGovActionLifetimeL`, `ppDRepActivityL`, `ppCommitteeMaxTermLengthL` and `ppuGovActionLifetimeL`, `ppuDRepActivityL`, `ppuCommitteeMaxTermLengthL` -* Implement `getNextEpochCommitteeMembers` in Conway `EraGov` -* Change argument of `validCommitteeTerm` function from `StrictMaybe Committee` to `GovAction` - -### `testlib` - -* Add the previous governance action ID to the outputs of `electBasicCommittee` -* Add `setupPoolWithStake` -* Add: - * `registerPool` - * `sendCoinTo` and `sendValueTo` -* Add `submitProposal_` -* Add `submitTreasuryWithdrawals` -* Track and prune unreachable proposals #3855 #3919 #3978 #3981 - * Add invariant-respecting `Arbitrary` generators for `Proposals` - * Add property tests for all `Proposals` operations - * Add procedural unit tests for all `Proposals` operations -* Remove `Test.Cardano.Ledger.Conway.PParamsSpec` and replace the unit test it contained - with a new property test in `Test.Cardano.Ledger.Alonzo.Binary.CostModelsSpec` - -## 1.11.0.0 - -* Switch `ppCommitteeMaxTermLength` to `EpochNo`, rather than `Natural` -* Add `conwayTotalDepositsTxBody` and `conwayProposalsDeposits` -* Add `conwayDRepDepositsTxCerts`, `conwayDRepRefundsTxCerts`, - `conwayTotalDepositsTxCerts` and `conwayTotalRefundsTxCerts` -* Rename data-type `ProposalsSnapshot` to `Proposals`. #3859 - * Rename module `Governance.Snapshots` to `Governance.Proposals`. - * Rename all the functions related to the data-type. -* Switch to using `OMap` for `ProposalsSnapshot` #3791 -* Add `VotingOnExpiredGovAction` predicate failure in `GOV` #3825 -* Rename `modifiedGroups` -> `modifiedPPGroups` and move into `ConwayEraPParams` -* Expose `pparamsUpdateThreshold` -* Fix [#3835](https://github.com/intersectmbo/cardano-ledger/issues/3835) -* Rename `PParamGroup` to `PPGroup` and `GovernanceGroup` to `GovGroup` -* Introduce `THKD` and use it for `ConwayPParams` -* Add `data ConwayGovEvent era` with constructor `GovNewProposals !(TxId (EraCrypto era)) !(ProposalsSnapshot era)`. #3856 -* Add `EpochBoundaryRatifyState (RatifyState era)` inhabitant to the `ConwayEpochEvent era` data type. - -### `testlib` - -* Provide CDDL spec files with `readConwayCddlFileNames` and `readConwayCddlFiles` from - `Test.Cardano.Ledger.Conway.Binary.Cddl` - -## 1.10.0.0 - -* Add `ToJSON` instance for `ProposalProcedure` -* Fix `NewEpochState` translation: #3801 -* Change order of arguments for `committeeAccepted` adn `spoAccepted` for consistency #3801 -* Add `spoAcceptedRatio` #3801 -* Export `snapshotGovActionStates` #3801 -* Change type for `snapshotRemoveIds` to also return the removed actions. #3801 -* Add `reDRepDistrL` #3759 -* Remove `GovSnapshots` #3759 -* Move `DRepPulser` from `cardano-ledger-core`. #3759 -* Add `DRepPulsingState` #3759: `pulseDRepPulsingState`, `completeDRepPulsingState`, - `extractDRepPulsingState`, `finishDRepPulser`, `computeDrepDistr`, `getRatifyState`, - `getPulsingStateDRepDistr`, `dormantEpoch`, `setFreshDRepPulsingState`, - `setCompleteDRepPulsingState` -* Add `PulsingSnapshot` and `psProposalsL`, `psDRepDistrL`, `psDRepStateL` #3759 -* Add `RunConwayRatify` class #3759 -* Enforce no duplicates from `certsTxBodyL` and `proposalProceduresTxBodyL` #3779 -* Remove `WrongCertificateTypeDELEG` predicate failure. -* Add `getDelegateeTxCert` and `getStakePoolDelegatee` -* Add `enactStateGovStateL` to `ConwayEraGov` -* Add `psDRepDistrG`. -* Rename `ensPParams` to `ensCurPParams`. -* Add `ToJSON` instance for `RatifyState` -* Change `ToJSON` instance for `ConwayGovState`: - * Add `"nextRatifyState"` field - * Rename `"ratify"` to `"enactState"` - * Rename `"gov"` to `"proposals"` -* Fix `ToJSON` instance for `EnactState`: - * Current PParams were wrongfully used for `"prevPParams"`. - * Remove `"treasury"` and `"withdrawals"` as those are temporary bindings needed only - for `ENACT` rule -* Add an anchor argument to `ResignCommitteeColdTxCert` -* Prevent invalid previous gov-action ids in proposals #3768 - * Also, add lenses - * `govProceduresProposalsL` - * `pProcGovActionL` - * `gasActionL` -* Add `ToExpr` instance for: - * `Voter` - * `ConwayCertPredFailure` - * `ConwayCertsPredFailure` - * `ConwayDelegPredFailure` - * `ConwayGovPredFailure` - * `ConwayGovCertPredFailure` - * `ConwayLedgerPredFailure` - * `ConwayTxBody` -* Add `Generic` and `NFData` instance for: - * `ConwayNewEpochPredFailure` -* Add `totalObligation` -* Add `utxosDepositedL` -* Add `conwayWitsVKeyNeeded` -* Add `ConwayEraPParams era` constraint to `isCommitteeVotingAllowed` and `votingCommitteeThreshold` -* Switch to using `AlonzoEraUTxO` in rules -* Change `cppProtocolVersion` to a `HKDNoUpdate` field - -### `testlib` - -* Addition of `ImpTest` interface - -## 1.9.0.0 - -* Add `ConwayEraPParams era` constraint to `isCommitteeVotingAllowed` and `votingCommitteeThreshold` -* Add `ToExpr` instance for: - * `Voter` - * `VotingProcedures` - * `VotingProcedure` - * `ProposalProcedure` - * `ConwayTxBody` -* Add `ConwayTxBodyUpgradeError`, `ConwayTxCertUpgradeError` -* Add to `Ratify`: - * `committeeAccepted` - * `committeeAcceptedRatio` -* Add `reCommitteeState` to `RatifyEnv` -* Add PredicateFailure for current treasury value mismatch in tx body in LEDGER #3749 -* Change `To/FromJSON` format for `ConwayGenesis` -* Add `EraTransition` instance and `toConwayTransitionConfigPairs`. -* Expose `toConwayGenesisPairs` and `toUpgradeConwayPParamsUpdatePairs` -* Rename `ConwayPParams` to be consistent with the Agda specification. #3739 - * `govActionExpiration` to `govActionLifetime` - * `committeeTermLimit` to `committeeMaxTermLength` - * `minCommitteeSize` to `committeeMinSize` -* Prevent `DRep` expiry when there are no active governance proposals to vote on (in - ConwayCERTS). #3729 - * Add `updateNumDormantEpochs` function in `ConwayEPOCH` to update the dormant-epochs counter - * Refactor access to `ConwayGovState` by making its lens part of `ConwayEraGov`. - * Export `gasExpiresAfterL` for use in tests -* Add `ExpirationEpochTooSmall` data constructor to `ConwayGovPredFailure` -* Add `ConflictingCommitteeUpdate` data constructor to `ConwayGovPredFailure` -* Rename `NewCommitte` to `UpdateCommittee` -* Remove `NewCommitteeSizeTooSmall` data constructor from `ConwayGovPredFailure` -* Fix invalid order in `fromGovActionStateSeq`, thus also `DecCBOR` for `ProposalsSnapshot` -* Remove `DecCBOR`/`EncCBOR` and `FromCBOR`/`ToCBOR` for `RatifyState`, since that state - is ephemeral and is never serialized. -* Add `PredicateFailure` for `Voter` - `GovAction` mismatches, with `checkVotesAreValid`. #3718 - * Add `DisallowedVoters (Map (GovActionId (EraCrypto era)) (Voter (EraCrypto era)))` - inhabitant to the `ConwayGovPredFailure` data type. - * Fix naming for `toPrevGovActionIdsParis` to `toPrevGovActionIdsPairs` -* Rename: - * `thresholdSPO` -> `votingStakePoolThreshold` - * `thresholdDRep` -> `votingDRepThreshold` - * `thresholdCC` -> `votingCommitteeThreshold` -* Add: - * `isStakePoolVotingAllowed` - * `isDRepVotingAllowed` - * `isCommitteeVotingAllowed` -* Fix `ConwayTxBodyRaw` decoder to disallow empty `Field`s #3712 - * `certsTxBodyL` - * `withdrawalsTxBodyL` - * `mintTxBodyL` - * `collateralInputsTxBodyL` - * `reqSignerHashesTxBodyL` - * `referenceInputsTxBodyL` - * `votingProceduresTxBodyL` - * `proposalProceduresTxBodyL` -* Add `reorderActions`, `actionPriority` -* Remove `ensProtVer` field from `EnactState`: #3705 -* Move `ConwayEraTxBody` to `Cardano.Ledger.Conway.TxBody` -* Move `ConwayEraPParams` to `Cardano.Ledger.Conway.PParams` -* Rename: - * `GovActionsState` to `GovSnapshots` - * `cgGovActionsStateL` to `cgGovSnapshotsL` - * `curGovActionsStateL` to `curGovSnapshotsL` - * `prevGovActionsStateL` to `prevGovSnapshotsL` -* Add: - * `ProposalsSnapshot` - * `snapshotIds` - * `snapshotAddVote` - * `snapshotInsertGovAction` - * `snapshotActions` - * `snapshotRemoveIds` - * `fromGovActionStateSeq` -* Add lenses: - * `gasCommitteeVotesL` - * `gasDRepVotesL` - * `gasStakePoolVotesL` -* Add `FromJSON` instance for `Committee` -* Add `constitution` and `committee` fields to `ConwayGenesis` - -### testlib - -* Add `Test.Cardano.Ledger.Conway.ImpTest` -* Rename `genNewCommittee` to `genUpdateCommitteee` -* Add `genNewCommittee` -* Add `genNoConfidence` -* Add `genTreasuryWithdrawals` -* Add `genHardForkInitiation` -* Add `genParameterChange` -* Add `genNewConstitution` -* Add `genGovActionStateFromAction` -* Add `govActionGenerators` - -## 1.8.1.0 - -* Apply enacted `TreasuryWithdrawals` in `ConwayEPOCH` #3748 - * Add lenses `ensWithdrawalsL` and `ensTreasuryL` - -## 1.8.0.0 - -* Add all Conway `TxCert` to consumed/produced calculations in the `UTXO` rule. #3700 -* Change `ToJSONKey` implementation of `Voter` to flat text -* Add DRep refund calculation #3688 - * Add `conwayConsumedValue` as `getConsumedValue` for Conway -* Change `PredicateFailure (ConwayENACT era)` to `Void` -* Remove `EnactPredFailure` -* Change `PredicateFailure (ConwayEPOCH era)` to `Void` -* Remove `ConwayEpochPredFailure` -* Remove `EpochFailure` and `RatifyFailure` from `ConwayNewEpochPredFailure` -* Change `PredicateFailure (ConwayRATIFY era)` to `Void` -* Add: - * `rsDelayed` - * `PParamGroup` - * `ParamGrouper` - * `pGroup` - * `pUngrouped` - * `modifiedGroups` - * `dvtPPNetworkGroupL` - * `dvtPPGovGroupL` - * `dvtPPTechnicalGroupL` - * `dvtPPEconomicGroupL` - * `threshold` - * `ensCommitteeL` -* Add `pparamsGroups` to `ConwayEraPParams` -* Add `PrevGovActionIds` -* Change `EnactState` to add `ensPrevGovActionIds` -* Add `ensPrevGovActionIdsL`, `ensPrevPParamUpdateL`, `ensPrevHardForkL` `ensPrevCommitteeL`, `ensPrevConstitutionL` -* Add `EnactSignal` and the signal of `Enact` to it -* Remove `rsFuture` from `RatifyState` -* Add to `GovActionsState`: - * `curGovActionsState` - * `prevGovActionsState` - * `prevDRepState` - * `prevCommitteeState` -* Add `ToExpr` instances to: - * `PoolVotingThresholds` - * `DRepVotingThresholds` - * `GovActionState` - * `GovActionsState` - * `EnactState` - * `RatifyState` - * `ConwayGovState` - * `GovActionIx` - * `GovActionId` - * `Vote` - * `Committee` - * `PrevGovActionId` - * `GovAction` - * `ConwayPParams` with `Identity` and `StrictMaybe` -* Add lenses: - * `cgEnactStateL` - * `curGovActionsStateL` - * `prevGovActionsStateL` - * `prevDRepStateL` - * `prevCommitteeStateL` -* Replace `cgRatifyState` with `cgEnactState` -* Deprecate `cgRatifyStateL` -* Add `ProposalDepositIncorrect` predicate failure, that is produced when `ProposalProcedure` deposit does not match `"govActionDeposit"` from `PParams` #3669 -* Add "minCommitteeSize" `PParam` validation for `NewCommittee` `GovAction` #3668 - * Add `committeeMembersL` and `committeeQuorumL` lenses for `Committee` - * Add `NewCommitteeSizeTooSmall` `PredicateFailure` in `GOV` -* Add `EqRaw` instance for `ConwayTxBody` -* Add `ToExpr` instance for `Delegatee`, `ConwayDelegCert`, `ConwayGovCert` and - `ConwayTxCert` -* Implement expiry for governance proposals #3664 - * Update `ppGovActionExpiration` to be an `EpochNo` - * Add `gasExpiresAfter :: !EpochNo` to `GovActionState` - * Add `gePParams` to `GovEnv` - * Rename `teTxId` to `geTxId` and `teEpoch` to `geEpoch` -* Add `reDRepState` to `RatifyEnv` -* Add field `gasId` to `GovActionState` -* Add `insertGovActionsState` -* Change type of `rsRemoved` in `RatifyState` to use `GovActionState` instead of a tuple -* Change `RatifySignal` to use `GovActionsState` instead of a tuple - -## 1.7.1.0 - -* Fix DRep distribution computation. - -## 1.7.0.0 - -* Add `Network` validation for `ProposalProcedure` and `TreasuryWithdrawals` in GOV #3659 -* Make `DELEG`, `POOL` and `GOVCERT` conform to spec-v0.8 #3628 - * Add `CertEnv` and `CertsEnv` to pass `EpochNo` down from `LEDGER` to sub-rules - * Add `drepDeposit` to `DRepState` to track deposits paid by `DRep`s - * Update `DRep` expiry in `LEDGER` for all `DRep`s who are voting in current `Tx` -* Add `ConwayGovCertEnv` -* Change the environment of `GOVCERT` to `ConwayGovCertEnv` -* Add `ConwayEraGov` with `constitutionGovStateL` -* Add `PrevGovActionId` and `GovActionPurpose` -* Add optional `PrevGovActionId` to `ParameterChange`, `HardForkInitiation`, - `NoConfidence`, `NewCommittee` and `NewConstitution` governance actions. -* Rename `*governance*` to `*gov*` #3607 - * `GovernanceAction` to `GovAction` - * `GovernanceActionId` to `GovActionId` - * `GovernanceActionIx` to `GovActionIx` - * `GovernanceActionState` to `GovActionState` - * `ConwayGovState` to `GovActionsState` - * `ConwayGovernance` to `ConwayGovState` -* Add `MalformedProposal` to `ConwayGovPredFailure` -* Add `ppuWellFormed` to `ConwayEraPParams` -* Filter out zero valued `TxOut`'s on Byron/Shelley boundary instead of on Babbage/Conway. -* Deprecate `translateTxOut` in favor of `upgradeTxOut` -* Deprecate `translateScript` in favor of `upgradeScript` -* Switch GovernanceActionIx to `Word32` fro `Word64` and remove `Num` and `Enum` - instances, which are dangerous due to potential overflows. -* Add `currentTreasuryValue :: !(StrictMaybe Coin)` as a new field to Conway TxBody #3586 -* Add an optional Anchor to the Conway DRep registration certificate #3576 -* Change `ConwayCommitteeCert` to allow: - * committee cold keys to be script-hashes #3581 - * committee hot keys to be script-hashes #3552 -* Change EnactState.ensConstitution #3556 - * from `SafeHash (EraCrypto era) ByteString` - * to `Constitution era` - * Use this datatype for GovernanceAction.NewConstitution -* Add `ConwayPParams` #3498 - * Add `UpgradeConwayPParams` - * Add `ConwayEraPParams` - * Add `PoolVotingThresholds` - * Add `DRepVotingThresholds` -* Rename: - * `cgTally` -> `cgGovActionsState` - * `cgTallyL` -> `cgGovActionsStateL` - * `VDelFailure` -> `GovCertFailure` - * `VDelEvent` -> `GovCertEvent` - * `certVState` -> `certGState` - * `ConwayVDelPredFailure` -> `ConwayGovCertPredFailure` - * `ConwayTallyPredFailure` -> `ConwayGovPredFailure` - * `TallyEnv` -> `GovEnv` - * `ConwayTallyState` -> `ConwayGovState` - * `TALLY` -> `GOV` - * `VDEL` -> `GOVCERT` -* Make `Anchor` required in `ProposalProcedure`. -* Add `ConwayUTXO` -* Add `indexedGovProps` -* Add `rsRemoved` to `RatifyState` -* Add `conwayProducedValue` -* Changed the superclasses of `STS (ConwayUTXOS era)` -* Add `VotingProcedures` type -* Remove `vProcGovActionId` and `vProcVoter` from `VotingProcedure` -* Change the type of `votingProceduresL` to return `VotingProcedures`, which is a nested Map - instead of a sequence, as before. -* Change `GovernanceActionDoesNotExist` to `GovernanceActionsDoNotExist`, which now - reports all actions as a set, rather than one action per each individual failure. -* Type of `gpVotingProcedures` in `GovernanceProcedures` was aslo changed to `GovernanceProcedures` -* Rename: - * `ConwayCommitteeCert` -> `ConwayGovCert` - * `ConwayTxCertCommittee` -> `ConwayTxCertGov` -* Remove `DelegStakeTxCert` from the `COMPLETE` pragma for `TxCert` -* Add `Committee` and adjust `NewCommittee` governance action -* Add `treasuryDonationTxBodyL` to `ConwayEraTxBody` -* Add `ConwayUpdateDRep` constructor to `ConwayGovCert` type and corresponding pattern `UnRegDRepTxCert` -* Update `ProposalProcedure` return address to be a `RewardAcnt` -* Add `ensPrevPParams` field to `EnactState` -* Add lenses: - * `ensPrevPParamsL` - * `ensCurPParamsL` - -## 1.6.3.0 - -* Implement stake distribution handling in the `TICKF` rule. - -## 1.6.2.0 - -* Add implementation for `spendableInputsTxBodyL` - -## 1.6.1.0 - -* Removal of TxOuts with zero `Coin` from UTxO on translation - -## 1.6.0.0 - -* Removal of `GovernanceProcedure` in favor of `GovernanceProcedures` - -## 1.5.0.0 - -* Add `ensConstitutionL` and `rsEnactStateL` to `Governance` #3506 - * Override `getConsitutionHash` for Conway to return just the hash of the constitution -* Added `ConwayWdrlNotDelegatedToDRep` to `ConwayLedgerPredFailure` -* Changed the type of voting delegatee from `Credential` to `DRep` -* Removal of `VoterRole` in favor of `Voter` -* Removal of `vProcRole` and `vProcRoleKeyHash` in favor of `vProcVoter` in `VotingProcedure` -* Removal of `cgVoterRolesL` and `cgVoterRoles` for `ConwayGovernance` as no longer needed. -* Removal of `gasVotes` in favor of `gasCommitteeVotes`, `gasDRepVotes` and - `gasStakePoolVotes` in `GovernanceActionState` -* Removal of `reRoles` from `RatifyEnv` as no longer needed -* Addition of `reStakePoolDistr` to `RatifyEnv` -* Remove `VoterDoesNotHaveRole` as no longer needed from `ConwayTallyPredFailure` -* Added `ConwayEpochPredFailure` -* Added instance for `Embed (ConwayRATIFY era) (ConwayEPOCH era)` -* Removed instance for `Embed (ConwayRATIFY era) (ConwayNEWEPOCH era)` -* Changed superclasses of `STS (ConwayEPOCH era)` and `STS (ConwayNEWEPOCH era)` - -## 1.4.0.0 - -* Added `ConwayUTXOW` rule - -### `testlib` - -* Add `Arbitrary` instances for `ConwayCertPredFailure`, `ConwayVDelPredFailure`, and `ConwayDelegPredFailure` - -## 1.3.0.0 - -* Add `VDEL` rules to Conway #3467 -* Add `EncCBOR`/`DecCBOR` for `ConwayCertPredFailure` -* Add `EncCBOR`/`DecCBOR` for `ConwayVDelPredFailure` -* Add `POOL` rules to Conway #3464 - * Make `ShelleyPOOL` rules reusable in Conway -* Add `CERT` and `DELEG` rules to Conway #3412 - * Add `domDeleteAll` to `UMap`. -* Introduction of `TxCert` and `EraTxCert` -* Add `ConwayEraTxCert` -* Add `EraTxCert`, `ShelleyEraTxCert` and `ConwayEraTxCert` instances for `ConwayEra` -* Add `EraPlutusContext 'PlutusV1` instance to `ConwayEra` -* Add `EraPlutusContext 'PlutusV2` instance to `ConwayEra` -* Add `EraPlutusContext 'PlutusV3` instance to `ConwayEra` -* Added `toShelleyDelegCert` and `fromShelleyDelegCert` -* Changed `ConwayDelegCert` structure #3408 -* Addition of `getScriptWitnessConwayTxCert` and `getVKeyWitnessConwayTxCert` -* Add `ConwayCommitteeCert` - -## 1.2.0.0 - -* Added `ConwayDelegCert` and `Delegatee` #3372 -* Removed `toShelleyDCert` and `fromShelleyDCertMaybe` #3372 -* Replace `DPState c` with `CertState era` -* Add `TranslateEra` instances for: - * `DState` - * `PState` - * `VState` -* Add `ConwayDelegsPredFailure` -* Renamed `DELPL` to `CERT` -* Added `ConwayDELEGS` rule -* Added `ConwayCERT` rule -* Added `ConwayDelegsPredFailure` rule -* Added `ConwayDelegsEvent` rule -* Change the Conway txInfo to allow Plutus V3 - NOTE - unlike V1 and V2, the ledger will no longer place the "zero ada" value - in the script context for the transaction minting field. -* Added instances for ConwayDelegsPredFailure: - `NoThunks`, `EncCBOR`, `DecCBOR`, and `Arbitrary` -* Added `GovernanceActionMetadata` -* Added `RatifyEnv` and `RatifySignal` - -## 1.1.0.0 - -* Added `RATIFY` rule -* Added `ConwayGovernance` -* Added lenses: - * `cgTallyL` - * `cgRatifyL` - * `cgVoterRolesL` -* Removed `GovernanceActionInfo` -* Replaced `ctbrVotes` and `ctbrGovActions` with `ctbrGovProcedure` -* Renamed `ENACTMENT` to `ENACT` -* Add `ToJSON` instance for: #3323 - * `ConwayGovernance` - * `ConwayTallyState` - * `GovernanceAction` - * `GovernanceActionState` - * `GovernanceActionIx` - * `GovernanceActionId` -* Add `ToJSONKey` instance for `GovernanceActionId` #3323 -* Fix `EncCBOR`/`DecCBOR` and `ToCBOR`/`FromCBOR` for `ConwayTallyState` #3323 -* Add `Anchor` and `AnchorDataHash` types. #3323 -* Rename `transDCert` to `toShelleyDCert` -* Add `fromShelleyDCertMaybe` -* Renamed `Vote` type to `VotingProcedure` -* Add `ProposalProcedure` -* Use `VotingProcedure` and `ProposalProcedure` in `GovernanceProcedure` -* Rename `VoteDecision` to `Vote`. Rename `No`/`Yes` -> `VoteNo`/`VoteYes`. -* Export `govActionIdToText` -* Export constructors for `ConwayTallyPredFailure` -* Add `ensTreasury` and `ensWithdrawals` to `EnactState` #3339 -* Add `EnactPredFailure` as the failure for `ENACT` and `RATIFY` #3339 -* Add `RatifyFailure` to `ConwayNewEpochPredFailure` #3339 -* Add `EncCBOR`/`DecCBOR` and `ToCBOR`/`FromCBOR` for `ConwayTallyPredFailure` -* Add `ToCBOR`/`FromCBOR` for `ConwayGovernance` -* Remove `cgAlonzoGenesis` from `ConwayGenesis`. -* Set `ConwayGenesis` as `TranslationContext` - -### `testlib` - -* Fix `Arbitrary` for `ConwayTallyState`. #3323 -* Consolidate all `Arbitrary` instances from the test package to under a new `testlib`. #3285 -* Add `Arbitrary` instances for: - * `ConwayTallyPredFailure` - * `EnactState` - * `RatifyState` - * `ConwayGovernance` -* Fix `Arbitrary` for `ConwayTxBody`. - -## 1.0.0.0 - -* First properly versioned release. diff --git a/eras/conway/impl/Setup.hs b/eras/conway/impl/Setup.hs deleted file mode 100644 index e8ef27dbba9..00000000000 --- a/eras/conway/impl/Setup.hs +++ /dev/null @@ -1,3 +0,0 @@ -import Distribution.Simple - -main = defaultMain diff --git a/eras/conway/impl/cardano-ledger-conway.cabal b/eras/conway/impl/cardano-ledger-conway.cabal deleted file mode 100644 index eb23806cd56..00000000000 --- a/eras/conway/impl/cardano-ledger-conway.cabal +++ /dev/null @@ -1,201 +0,0 @@ -cabal-version: 3.0 -name: cardano-ledger-conway -version: 1.13.1.0 -license: Apache-2.0 -maintainer: operations@iohk.io -author: IOHK -bug-reports: https://github.com/intersectmbo/cardano-ledger/issues -synopsis: Cardano ledger with an updated on-chain governance system. -description: - This package builds upon the Babbage ledger with an updated on-chain governance system. - -category: Network -build-type: Simple -data-files: - test/data/*.json - cddl-files/conway.cddl - cddl-files/crypto.cddl - cddl-files/extra.cddl - -extra-source-files: CHANGELOG.md - -source-repository head - type: git - location: https://github.com/intersectmbo/cardano-ledger - subdir: eras/conway/impl - -flag asserts - description: Enable assertions - default: False - -library - exposed-modules: - Cardano.Ledger.Conway.Genesis - Cardano.Ledger.Conway.Governance - Cardano.Ledger.Conway.Governance.DRepPulser - Cardano.Ledger.Conway.PParams - Cardano.Ledger.Conway.Tx - Cardano.Ledger.Conway.TxBody - Cardano.Ledger.Conway.TxInfo - Cardano.Ledger.Conway.TxWits - Cardano.Ledger.Conway.Transition - Cardano.Ledger.Conway.Translation - Cardano.Ledger.Conway.Scripts - Cardano.Ledger.Conway - Cardano.Ledger.Conway.Rules - Cardano.Ledger.Conway.Core - Cardano.Ledger.Conway.TxCert - Cardano.Ledger.Conway.UTxO - Cardano.Ledger.Conway.Plutus.Context - - hs-source-dirs: src - other-modules: - Cardano.Ledger.Conway.Era - Cardano.Ledger.Conway.Governance.Internal - Cardano.Ledger.Conway.Governance.Procedures - Cardano.Ledger.Conway.Governance.Proposals - Cardano.Ledger.Conway.Rules.Bbody - Cardano.Ledger.Conway.Rules.Cert - Cardano.Ledger.Conway.Rules.Deleg - Cardano.Ledger.Conway.Rules.GovCert - Cardano.Ledger.Conway.Rules.Certs - Cardano.Ledger.Conway.Rules.Enact - Cardano.Ledger.Conway.Rules.Epoch - Cardano.Ledger.Conway.Rules.Ledger - Cardano.Ledger.Conway.Rules.Ledgers - Cardano.Ledger.Conway.Rules.NewEpoch - Cardano.Ledger.Conway.Rules.Gov - Cardano.Ledger.Conway.Rules.Pool - Cardano.Ledger.Conway.Rules.Ratify - Cardano.Ledger.Conway.Rules.Tickf - Cardano.Ledger.Conway.Rules.Utxo - Cardano.Ledger.Conway.Rules.Utxos - Cardano.Ledger.Conway.Rules.Utxow - Cardano.Ledger.Conway.TxAuxData - Cardano.Ledger.Conway.TxOut - - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints - -Wunused-packages - - build-depends: - base >=4.14 && <5, - aeson >=2.2, - data-default-class, - cardano-crypto-class, - cardano-data >=1.2.1, - cardano-ledger-binary >=1.3.2, - cardano-ledger-allegra ^>=1.4, - cardano-ledger-alonzo ^>=1.8, - cardano-ledger-babbage ^>=1.8, - cardano-ledger-core ^>=1.11, - cardano-ledger-mary ^>=1.5, - cardano-ledger-shelley ^>=1.10, - cardano-slotting, - cardano-strict-containers, - containers, - deepseq, - microlens, - nothunks, - plutus-ledger-api ^>=1.25.0, - set-algebra, - small-steps >=1.1, - text, - transformers, - validation-selective - - if flag(asserts) - ghc-options: -fno-ignore-asserts - -library testlib - exposed-modules: - Test.Cardano.Ledger.Conway.Arbitrary - Test.Cardano.Ledger.Conway.Binary.Cddl - Test.Cardano.Ledger.Conway.Binary.RoundTrip - Test.Cardano.Ledger.Conway.Binary.Regression - Test.Cardano.Ledger.Conway.ImpTest - Test.Cardano.Ledger.Conway.Imp - Test.Cardano.Ledger.Conway.Imp.EpochSpec - Test.Cardano.Ledger.Conway.Imp.EnactSpec - Test.Cardano.Ledger.Conway.Imp.GovSpec - Test.Cardano.Ledger.Conway.Imp.GovCertSpec - Test.Cardano.Ledger.Conway.Imp.UtxoSpec - Test.Cardano.Ledger.Conway.Imp.UtxosSpec - Test.Cardano.Ledger.Conway.Imp.RatifySpec - Test.Cardano.Ledger.Conway.Proposals - Test.Cardano.Ledger.Conway.TreeDiff - - visibility: public - hs-source-dirs: testlib - other-modules: Paths_cardano_ledger_conway - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints - -Wunused-packages - - build-depends: - base, - bytestring, - cardano-data:{cardano-data, testlib}, - containers, - plutus-ledger-api, - deepseq, - microlens, - cardano-crypto-class, - cardano-ledger-allegra:{cardano-ledger-allegra, testlib}, - cardano-ledger-alonzo:{cardano-ledger-alonzo, testlib}, - cardano-ledger-binary, - cardano-ledger-babbage:{cardano-ledger-babbage, testlib}, - cardano-ledger-conway, - cardano-ledger-core:{cardano-ledger-core, testlib}, - cardano-ledger-mary, - cardano-ledger-shelley, - cardano-strict-containers, - data-default-class, - generic-random, - mtl, - text, - small-steps >=1.1 - -test-suite tests - type: exitcode-stdio-1.0 - main-is: Main.hs - hs-source-dirs: test - other-modules: - Test.Cardano.Ledger.Conway.BinarySpec - Test.Cardano.Ledger.Conway.Binary.CddlSpec - Test.Cardano.Ledger.Conway.DRepRatifySpec - Test.Cardano.Ledger.Conway.CommitteeRatifySpec - Test.Cardano.Ledger.Conway.GenesisSpec - Test.Cardano.Ledger.Conway.GovActionReorderSpec - Test.Cardano.Ledger.Conway.Plutus.PlutusSpec - Paths_cardano_ledger_conway - - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wpartial-fields - -Wunused-packages -threaded -rtsopts -with-rtsopts=-N - - build-depends: - aeson, - base, - cardano-data, - cardano-ledger-core:testlib, - cardano-ledger-allegra, - cardano-ledger-alonzo:testlib, - cardano-ledger-alonzo, - cardano-ledger-babbage, - cardano-ledger-conway, - cardano-ledger-shelley:testlib, - cardano-ledger-core, - cardano-ledger-binary:testlib, - cardano-slotting:testlib, - cardano-strict-containers, - containers, - data-default-class, - microlens, - testlib diff --git a/eras/conway/impl/cddl-files/conway.cddl b/eras/conway/impl/cddl-files/conway.cddl deleted file mode 100644 index 73a831726e3..00000000000 --- a/eras/conway/impl/cddl-files/conway.cddl +++ /dev/null @@ -1,608 +0,0 @@ -block = - [ header - , transaction_bodies : [* transaction_body] - , transaction_witness_sets : [* transaction_witness_set] - , auxiliary_data_set : {* transaction_index => auxiliary_data } - , invalid_transactions : [* transaction_index ] - ]; Valid blocks must also satisfy the following two constraints: - ; 1) the length of transaction_bodies and transaction_witness_sets - ; must be the same - ; 2) every transaction_index must be strictly smaller than the - ; length of transaction_bodies - -transaction = - [ transaction_body - , transaction_witness_set - , bool - , auxiliary_data / null - ] - -transaction_index = uint .size 2 - -header = - [ header_body - , body_signature : $kes_signature - ] - -header_body = - [ block_number : uint - , slot : uint - , prev_hash : $hash32 / null - , issuer_vkey : $vkey - , vrf_vkey : $vrf_vkey - , vrf_result : $vrf_cert ; replaces nonce_vrf and leader_vrf - , block_body_size : uint - , block_body_hash : $hash32 ; merkle triple root - , operational_cert - , protocol_version - ] - -operational_cert = - [ hot_vkey : $kes_vkey - , sequence_number : uint - , kes_period : uint - , sigma : $signature - ] - -next_major_protocol_version = 10 - -major_protocol_version = 1..next_major_protocol_version - -protocol_version = [(major_protocol_version, uint)] - -transaction_body = - { 0 : set ; inputs - , 1 : [* transaction_output] - , 2 : coin ; fee - , ? 3 : uint ; time to live - , ? 4 : certificates - , ? 5 : withdrawals - , ? 7 : auxiliary_data_hash - , ? 8 : uint ; validity interval start - , ? 9 : mint - , ? 11 : script_data_hash - , ? 13 : nonempty_set ; collateral inputs - , ? 14 : required_signers - , ? 15 : network_id - , ? 16 : transaction_output ; collateral return - , ? 17 : coin ; total collateral - , ? 18 : nonempty_set ; reference inputs - , ? 19 : voting_procedures ; New; Voting procedures - , ? 20 : proposal_procedures ; New; Proposal procedures - , ? 21 : coin ; New; current treasury value - , ? 22 : positive_coin ; New; donation - } - -voting_procedures = { + voter => { + gov_action_id => voting_procedure } } - -voting_procedure = - [ vote - , anchor / null - ] - -proposal_procedure = - [ deposit : coin - , reward_account - , gov_action - , anchor - ] - -proposal_procedures = nonempty_oset - -certificates = nonempty_oset - -gov_action = - [ parameter_change_action - // hard_fork_initiation_action - // treasury_withdrawals_action - // no_confidence - // update_committee - // new_constitution - // info_action - ] - -policy_hash = scripthash - -parameter_change_action = (0, gov_action_id / null, protocol_param_update, policy_hash / null) - -hard_fork_initiation_action = (1, gov_action_id / null, protocol_version) - -treasury_withdrawals_action = (2, { reward_account => coin }, policy_hash / null) - -no_confidence = (3, gov_action_id / null) - -update_committee = (4, gov_action_id / null, set, { committee_cold_credential => epoch }, unit_interval) - -new_constitution = (5, gov_action_id / null, constitution) - -constitution = - [ anchor - , scripthash / null - ] - -info_action = 6 - -; Constitutional Committee Hot KeyHash: 0 -; Constitutional Committee Hot ScriptHash: 1 -; DRep KeyHash: 2 -; DRep ScriptHash: 3 -; StakingPool KeyHash: 4 -voter = - [ 0, addr_keyhash - // 1, scripthash - // 2, addr_keyhash - // 3, scripthash - // 4, addr_keyhash - ] - -anchor = - [ anchor_url : url - , anchor_data_hash : $hash32 - ] - -; no - 0 -; yes - 1 -; abstain - 2 -vote = 0 .. 2 - -gov_action_id = - [ transaction_id : $hash32 - , gov_action_index : uint - ] - -required_signers = nonempty_set - -transaction_input = [ transaction_id : $hash32 - , index : uint - ] - -; Both of the Alonzo and Babbage style TxOut formats are equally valid -; and can be used interchangeably -transaction_output = pre_babbage_transaction_output / post_alonzo_transaction_output - -pre_babbage_transaction_output = - [ address - , amount : value - , ? datum_hash : $hash32 - ] - -post_alonzo_transaction_output = - { 0 : address - , 1 : value - , ? 2 : datum_option ; datum option - , ? 3 : script_ref ; script reference - } - -script_data_hash = $hash32 -; This is a hash of data which may affect evaluation of a script. -; This data consists of: -; - The redeemers from the transaction_witness_set (the value of field 5). -; - The datums from the transaction_witness_set (the value of field 4). -; - The value in the costmdls map corresponding to the script's language -; (in field 18 of protocol_param_update.) -; (In the future it may contain additional protocol parameters.) -; -; Since this data does not exist in contiguous form inside a transaction, it needs -; to be independently constructed by each recipient. -; -; The bytestring which is hashed is the concatenation of three things: -; redeemers || datums || language views -; The redeemers are exactly the data present in the transaction witness set. -; Similarly for the datums, if present. If no datums are provided, the middle -; field is omitted (i.e. it is the empty/null bytestring). -; -; language views CDDL: -; { * language => script_integrity_data } -; -; This must be encoded canonically, using the same scheme as in -; RFC7049 section 3.9: -; - Maps, strings, and bytestrings must use a definite-length encoding -; - Integers must be as small as possible. -; - The expressions for map length, string length, and bytestring length -; must be as short as possible. -; - The keys in the map must be sorted as follows: -; - If two keys have different lengths, the shorter one sorts earlier. -; - If two keys have the same length, the one with the lower value -; in (byte-wise) lexical order sorts earlier. -; -; For PlutusV1 (language id 0), the language view is the following: -; - the value of costmdls map at key 0 (in other words, the script_integrity_data) -; is encoded as an indefinite length list and the result is encoded as a bytestring. -; (our apologies) -; For example, the script_integrity_data corresponding to the all zero costmodel for V1 -; would be encoded as (in hex): -; 58a89f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ff -; - the language ID tag is also encoded twice. first as a uint then as -; a bytestring. (our apologies) -; Concretely, this means that the language version for V1 is encoded as -; 4100 in hex. -; For PlutusV2 (language id 1), the language view is the following: -; - the value of costmdls map at key 1 is encoded as an definite length list. -; For example, the script_integrity_data corresponding to the all zero costmodel for V2 -; would be encoded as (in hex): -; 98af0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -; - the language ID tag is encoded as expected. -; Concretely, this means that the language version for V2 is encoded as -; 01 in hex. -; For PlutusV3 (language id 2), the language view is the following: -; - the value of costmdls map at key 2 is encoded as a definite length list. -; -; Note that each Plutus language represented inside a transaction must have -; a cost model in the costmdls protocol parameter in order to execute, -; regardless of what the script integrity data is. -; -; Finally, note that in the case that a transaction includes datums but does not -; include the redeemers field, the script data format becomes (in hex): -; [ 80 | datums | A0 ] -; corresponding to a CBOR empty list and an empty map. -; Note that a transaction might include the redeemers field and it to the -; empty map, in which case the user supplied encoding of the empty map is used. - -; address = bytes -; reward_account = bytes - -; address format: -; [ 8 bit header | payload ]; -; -; shelley payment addresses: -; bit 7: 0 -; bit 6: base/other -; bit 5: pointer/enterprise [for base: stake cred is keyhash/scripthash] -; bit 4: payment cred is keyhash/scripthash -; bits 3-0: network id -; -; reward addresses: -; bits 7-5: 111 -; bit 4: credential is keyhash/scripthash -; bits 3-0: network id -; -; byron addresses: -; bits 7-4: 1000 - -; 0000: base address: keyhash28,keyhash28 -; 0001: base address: scripthash28,keyhash28 -; 0010: base address: keyhash28,scripthash28 -; 0011: base address: scripthash28,scripthash28 -; 0100: pointer address: keyhash28, 3 variable length uint -; 0101: pointer address: scripthash28, 3 variable length uint -; 0110: enterprise address: keyhash28 -; 0111: enterprise address: scripthash28 -; 1000: byron address -; 1110: reward account: keyhash28 -; 1111: reward account: scripthash28 -; 1001 - 1101: future formats - -certificate = - [ stake_registration - // stake_deregistration - // stake_delegation - // pool_registration - // pool_retirement - // reg_cert - // unreg_cert - // vote_deleg_cert - // stake_vote_deleg_cert - // stake_reg_deleg_cert - // vote_reg_deleg_cert - // stake_vote_reg_deleg_cert - // auth_committee_hot_cert - // resign_committee_cold_cert - // reg_drep_cert - // unreg_drep_cert - // update_drep_cert - ] - -stake_registration = (0, stake_credential) ; to be deprecated in era after Conway -stake_deregistration = (1, stake_credential) ; to be deprecated in era after Conway -stake_delegation = (2, stake_credential, pool_keyhash) - -; POOL -pool_registration = (3, pool_params) -pool_retirement = (4, pool_keyhash, epoch) - -; numbers 5 and 6 used to be the Genesis and MIR certificates respectively, -; which were deprecated in Conway - -; DELEG -reg_cert = (7, stake_credential, coin) -unreg_cert = (8, stake_credential, coin) -vote_deleg_cert = (9, stake_credential, drep) -stake_vote_deleg_cert = (10, stake_credential, pool_keyhash, drep) -stake_reg_deleg_cert = (11, stake_credential, pool_keyhash, coin) -vote_reg_deleg_cert = (12, stake_credential, drep, coin) -stake_vote_reg_deleg_cert = (13, stake_credential, pool_keyhash, drep, coin) - -; GOVCERT -auth_committee_hot_cert = (14, committee_cold_credential, committee_hot_credential) -resign_committee_cold_cert = (15, committee_cold_credential, anchor / null) -reg_drep_cert = (16, drep_credential, coin, anchor / null) -unreg_drep_cert = (17, drep_credential, coin) -update_drep_cert = (18, drep_credential, anchor / null) - - -delta_coin = int - -credential = - [ 0, addr_keyhash - // 1, scripthash - ] - -drep = - [ 0, addr_keyhash - // 1, scripthash - // 2 ; always abstain - // 3 ; always no confidence - ] - -stake_credential = credential -drep_credential = credential -committee_cold_credential = credential -committee_hot_credential = credential - -pool_params = ( operator: pool_keyhash - , vrf_keyhash: vrf_keyhash - , pledge: coin - , cost: coin - , margin: unit_interval - , reward_account: reward_account - , pool_owners: set - , relays: [* relay] - , pool_metadata: pool_metadata / null - ) - -port = uint .le 65535 -ipv4 = bytes .size 4 -ipv6 = bytes .size 16 -dns_name = tstr .size (0..128) - -single_host_addr = ( 0 - , port / null - , ipv4 / null - , ipv6 / null - ) -single_host_name = ( 1 - , port / null - , dns_name ; An A or AAAA DNS record - ) -multi_host_name = ( 2 - , dns_name ; A SRV DNS record - ) -relay = - [ single_host_addr - // single_host_name - // multi_host_name - ] - -pool_metadata = [url, pool_metadata_hash] -url = tstr .size (0..128) - -withdrawals = { + reward_account => coin } - -protocol_param_update = - { ? 0: coin ; minfee A - , ? 1: coin ; minfee B - , ? 2: uint ; max block body size - , ? 3: uint ; max transaction size - , ? 4: uint ; max block header size - , ? 5: coin ; key deposit - , ? 6: coin ; pool deposit - , ? 7: epoch ; maximum epoch - , ? 8: uint ; n_opt: desired number of stake pools - , ? 9: nonnegative_interval ; pool pledge influence - , ? 10: unit_interval ; expansion rate - , ? 11: unit_interval ; treasury growth rate - , ? 16: coin ; min pool cost - , ? 17: coin ; ada per utxo byte - , ? 18: costmdls ; cost models for script languages - , ? 19: ex_unit_prices ; execution costs - , ? 20: ex_units ; max tx ex units - , ? 21: ex_units ; max block ex units - , ? 22: uint ; max value size - , ? 23: uint ; collateral percentage - , ? 24: uint ; max collateral inputs - , ? 25: pool_voting_thresholds ; pool voting thresholds - , ? 26: drep_voting_thresholds ; DRep voting thresholds - , ? 27: uint ; min committee size - , ? 28: epoch ; committee term limit - , ? 29: epoch ; governance action validity period - , ? 30: coin ; governance action deposit - , ? 31: coin ; DRep deposit - , ? 32: epoch ; DRep inactivity period - , ? 33: nonnegative_interval ; MinFee RefScriptCostPerByte - } - -pool_voting_thresholds = - [ unit_interval ; motion no confidence - , unit_interval ; committee normal - , unit_interval ; committee no confidence - , unit_interval ; hard fork initiation - , unit_interval ; security relevant parameter voting threshold - ] - -drep_voting_thresholds = - [ unit_interval ; motion no confidence - , unit_interval ; committee normal - , unit_interval ; committee no confidence - , unit_interval ; update constitution - , unit_interval ; hard fork initiation - , unit_interval ; PP network group - , unit_interval ; PP economic group - , unit_interval ; PP technical group - , unit_interval ; PP governance group - , unit_interval ; treasury withdrawal - ] - -transaction_witness_set = - { ? 0: nonempty_set - , ? 1: nonempty_set - , ? 2: nonempty_set - , ? 3: nonempty_set - , ? 4: nonempty_set - , ? 5: redeemers - , ? 6: nonempty_set - , ? 7: nonempty_set - } - -; The real type of plutus_v1_script, plutus_v2_script and plutus_v3_script is bytes. -; However, because we enforce uniqueness when many scripts are supplied, -; we need to hack around for tests in order to avoid generating duplicates, -; since the cddl tool we use for roundtrip testing doesn't generate distinct collections. -plutus_v1_script = distinct -plutus_v2_script = distinct -plutus_v3_script = distinct - -plutus_data = - constr - / { * plutus_data => plutus_data } - / [ * plutus_data ] - / big_int - / bounded_bytes - -big_int = int / big_uint / big_nint -big_uint = #6.2(bounded_bytes) -big_nint = #6.3(bounded_bytes) - -constr = - #6.121([* a]) - / #6.122([* a]) - / #6.123([* a]) - / #6.124([* a]) - / #6.125([* a]) - / #6.126([* a]) - / #6.127([* a]) - ; similarly for tag range: 6.1280 .. 6.1400 inclusive - / #6.102([uint, [* a]]) - -; Flat Array support is included for backwards compatibility and will be removed in the next era. -; It is recommended for tools to adopt using a Map instead of Array going forward. -redeemers = - [ + [ tag: redeemer_tag, index: uint, data: plutus_data, ex_units: ex_units ] ] - / { + [ tag: redeemer_tag, index: uint ] => [ data: plutus_data, ex_units: ex_units ] } - -redeemer_tag = - 0 ; Spending - / 1 ; Minting - / 2 ; Certifying - / 3 ; Rewarding - / 4 ; Voting - / 5 ; Proposing - -ex_units = [mem: uint, steps: uint] - -ex_unit_prices = - [ mem_price: nonnegative_interval, step_price: nonnegative_interval ] - -language = 0 ; Plutus v1 - / 1 ; Plutus v2 - / 2 ; Plutus v3 - -potential_languages = 0 .. 255 - -; The format for costmdls is flexible enough to allow adding Plutus built-ins and language -; versions in the future. -; -costmdls = - { ? 0 : [ 166* int ] ; Plutus v1, only 166 integers are used, but more are accepted (and ignored) - , ? 1 : [ 175* int ] ; Plutus v2, only 175 integers are used, but more are accepted (and ignored) - , ? 2 : [ 233* int ] ; Plutus v3, only 233 integers are used, but more are accepted (and ignored) - , ? 3 : [ int ] ; Any 8-bit unsigned number can be used as a key. - } - -transaction_metadatum = - { * transaction_metadatum => transaction_metadatum } - / [ * transaction_metadatum ] - / int - / bytes .size (0..64) - / text .size (0..64) - -transaction_metadatum_label = uint -metadata = { * transaction_metadatum_label => transaction_metadatum } - -auxiliary_data = - metadata ; Shelley - / [ transaction_metadata: metadata ; Shelley-ma - , auxiliary_scripts: [ * native_script ] - ] - / #6.259({ ? 0 => metadata ; Alonzo and beyond - , ? 1 => [ * native_script ] - , ? 2 => [ * plutus_v1_script ] - , ? 3 => [ * plutus_v2_script ] - , ? 4 => [ * plutus_v3_script ] - }) - -vkeywitness = [ $vkey, $signature ] - -bootstrap_witness = - [ public_key : $vkey - , signature : $signature - , chain_code : bytes .size 32 - , attributes : bytes - ] - -native_script = - [ script_pubkey - // script_all - // script_any - // script_n_of_k - // invalid_before - ; Timelock validity intervals are half-open intervals [a, b). - ; This field specifies the left (included) endpoint a. - // invalid_hereafter - ; Timelock validity intervals are half-open intervals [a, b). - ; This field specifies the right (excluded) endpoint b. - ] - -script_pubkey = (0, addr_keyhash) -script_all = (1, [ * native_script ]) -script_any = (2, [ * native_script ]) -script_n_of_k = (3, n: uint, [ * native_script ]) -invalid_before = (4, uint) -invalid_hereafter = (5, uint) - -coin = uint - -multiasset = { + policy_id => { + asset_name => a } } -policy_id = scripthash -asset_name = bytes .size (0..32) - -negInt64 = -9223372036854775808 .. -1 -posInt64 = 1 .. 9223372036854775807 -nonZeroInt64 = negInt64 / posInt64 ; this is the same as the current int64 definition but without zero - -positive_coin = 1 .. 18446744073709551615 - -value = coin / [coin, multiasset] - -mint = multiasset - -int64 = -9223372036854775808 .. 9223372036854775807 - -network_id = 0 / 1 - -epoch = uint - -addr_keyhash = $hash28 -pool_keyhash = $hash28 - -vrf_keyhash = $hash32 -auxiliary_data_hash = $hash32 -pool_metadata_hash = $hash32 - -; To compute a script hash, note that you must prepend -; a tag to the bytes of the script before hashing. -; The tag is determined by the language. -; The tags in the Conway era are: -; "\x00" for multisig scripts -; "\x01" for Plutus V1 scripts -; "\x02" for Plutus V2 scripts -; "\x03" for Plutus V3 scripts -scripthash = $hash28 - -datum_hash = $hash32 -data = #6.24(bytes .cbor plutus_data) - -datum_option = [ 0, $hash32 // 1, data ] - -script_ref = #6.24(bytes .cbor script) - -script = [ 0, native_script // 1, plutus_v1_script // 2, plutus_v2_script // 3, plutus_v3_script ] diff --git a/eras/conway/impl/cddl-files/crypto.cddl b/eras/conway/impl/cddl-files/crypto.cddl deleted file mode 100644 index 339444964d2..00000000000 --- a/eras/conway/impl/cddl-files/crypto.cddl +++ /dev/null @@ -1,13 +0,0 @@ -$hash28 /= bytes .size 28 -$hash32 /= bytes .size 32 - -$vkey /= bytes .size 32 - -$vrf_vkey /= bytes .size 32 -$vrf_cert /= [bytes, bytes .size 80] - -$kes_vkey /= bytes .size 32 -$kes_signature /= bytes .size 448 -signkeyKES = bytes .size 64 - -$signature /= bytes .size 64 diff --git a/eras/conway/impl/cddl-files/extra.cddl b/eras/conway/impl/cddl-files/extra.cddl deleted file mode 100644 index f4fa6e31ad7..00000000000 --- a/eras/conway/impl/cddl-files/extra.cddl +++ /dev/null @@ -1,59 +0,0 @@ -; Conway era introduces an optional 258 tag for sets, which will become mandatory in the -; second era after Conway. We recommend all the tooling to account for this future breaking -; change sooner rather than later, in order to provide a smooth transition for their users. - -set = #6.258([* a]) / [* a] - -nonempty_set = #6.258([+ a]) / [+ a] - -nonempty_oset = #6.258([+ a]) / [+ a] - -positive_int = 1 .. 18446744073709551615 - -unit_interval = #6.30([1, 2]) - ; unit_interval = #6.30([uint, uint]) - ; - ; Comment above depicts the actual definition for `unit_interval`. - ; - ; Unit interval is a number in the range between 0 and 1, which - ; means there are two extra constraints: - ; * numerator <= denominator - ; * denominator > 0 - ; - ; Relation between numerator and denominator cannot be expressed in CDDL, which - ; poses a problem for testing. We need to be able to generate random valid data - ; for testing implementation of our encoders/decoders. Which means we cannot use - ; the actual definition here and we hard code the value to 1/2 - - -nonnegative_interval = #6.30([uint, positive_int]) - - -address = - h'001000000000000000000000000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000' / - h'102000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000' / - h'203000000000000000000000000000000000000000000000000000000033000000000000000000000000000000000000000000000000000000' / - h'304000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000' / - h'405000000000000000000000000000000000000000000000000000000087680203' / - h'506000000000000000000000000000000000000000000000000000000087680203' / - h'6070000000000000000000000000000000000000000000000000000000' / - h'7080000000000000000000000000000000000000000000000000000000' - -reward_account = - h'E090000000000000000000000000000000000000000000000000000000' / - h'F0A0000000000000000000000000000000000000000000000000000000' - -bounded_bytes = bytes .size (0..64) - ; the real bounded_bytes does not have this limit. it instead has a different - ; limit which cannot be expressed in CDDL. - ; The limit is as follows: - ; - bytes with a definite-length encoding are limited to size 0..64 - ; - for bytes with an indefinite-length CBOR encoding, each chunk is - ; limited to size 0..64 - ; ( reminder: in CBOR, the indefinite-length encoding of bytestrings - ; consists of a token #2.31 followed by a sequence of definite-length - ; encoded bytestrings and a stop code ) - -; a type for distinct values. -; The type parameter must support .size, for example: bytes or uint -distinct = a .size 8 / a .size 16 / a .size 20 / a .size 24 / a .size 30 / a .size 32 diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway.hs b/eras/conway/impl/src/Cardano/Ledger/Conway.hs deleted file mode 100644 index 620a0c74dea..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway.hs +++ /dev/null @@ -1,59 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} --- CanStartFromGenesis -{-# OPTIONS_GHC -Wno-deprecations #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Conway ( - Conway, - ConwayEra, -) -where - -import Cardano.Ledger.Alonzo (reapplyAlonzoTx) -import Cardano.Ledger.Babbage.TxBody () -import Cardano.Ledger.Conway.Core -import Cardano.Ledger.Conway.Era (ConwayEra) -import Cardano.Ledger.Conway.Genesis (ConwayGenesis (..)) -import Cardano.Ledger.Conway.Governance (RunConwayRatify (..)) -import Cardano.Ledger.Conway.Rules () -import Cardano.Ledger.Conway.Transition () -import Cardano.Ledger.Conway.Translation () -import Cardano.Ledger.Conway.Tx () -import Cardano.Ledger.Conway.TxInfo () -import Cardano.Ledger.Conway.TxOut () -import Cardano.Ledger.Conway.UTxO () -import Cardano.Ledger.Crypto (Crypto, StandardCrypto) -import Cardano.Ledger.Keys (DSignable, Hash) -import qualified Cardano.Ledger.Shelley.API as API - -type Conway = ConwayEra StandardCrypto - --- ===================================================== - -instance - ( Crypto c - , DSignable c (Hash c EraIndependentTxBody) - ) => - API.ApplyTx (ConwayEra c) - where - reapplyTx = reapplyAlonzoTx - -instance - ( Crypto c - , DSignable c (Hash c EraIndependentTxBody) - ) => - API.ApplyBlock (ConwayEra c) - -instance Crypto c => API.CanStartFromGenesis (ConwayEra c) where - type AdditionalGenesisConfig (ConwayEra c) = ConwayGenesis c - fromShelleyPParams = - error "Unimplemented: Current interface is too limited and needs replacement for Conway to work" - -instance Crypto c => RunConwayRatify (ConwayEra c) diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/Core.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/Core.hs deleted file mode 100644 index b11af59f28a..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/Core.hs +++ /dev/null @@ -1,69 +0,0 @@ -{-# LANGUAGE PatternSynonyms #-} - -module Cardano.Ledger.Conway.Core ( - ConwayEraTxBody (..), - ConwayEraPParams, - ppPoolVotingThresholdsL, - ppDRepVotingThresholdsL, - ppCommitteeMinSizeL, - ppCommitteeMaxTermLengthL, - ppGovActionLifetimeL, - ppGovActionDepositL, - ppDRepDepositL, - ppDRepActivityL, - ppuPoolVotingThresholdsL, - ppuDRepVotingThresholdsL, - ppuCommitteeMinSizeL, - ppuCommitteeMaxTermLengthL, - ppuGovActionLifetimeL, - ppuGovActionDepositL, - ppuDRepDepositL, - ppuDRepActivityL, - PoolVotingThresholds (..), - DRepVotingThresholds (..), - dvtPPNetworkGroupL, - dvtPPGovGroupL, - dvtPPTechnicalGroupL, - dvtPPEconomicGroupL, - dvtUpdateToConstitutionL, - ConwayEraScript (..), - pattern VotingPurpose, - pattern ProposingPurpose, - module Cardano.Ledger.Babbage.Core, -) -where - -import Cardano.Ledger.Babbage.Core -import Cardano.Ledger.Conway.PParams ( - ConwayEraPParams, - DRepVotingThresholds (..), - PoolVotingThresholds (..), - dvtPPEconomicGroupL, - dvtPPGovGroupL, - dvtPPNetworkGroupL, - dvtPPTechnicalGroupL, - dvtUpdateToConstitutionL, - ppCommitteeMaxTermLengthL, - ppCommitteeMinSizeL, - ppDRepActivityL, - ppDRepDepositL, - ppDRepVotingThresholdsL, - ppGovActionDepositL, - ppGovActionLifetimeL, - ppPoolVotingThresholdsL, - ppuCommitteeMaxTermLengthL, - ppuCommitteeMinSizeL, - ppuDRepActivityL, - ppuDRepDepositL, - ppuDRepVotingThresholdsL, - ppuGovActionDepositL, - ppuGovActionLifetimeL, - ppuPoolVotingThresholdsL, - ) -import Cardano.Ledger.Conway.Scripts ( - ConwayEraScript (..), - pattern ProposingPurpose, - pattern VotingPurpose, - ) -import Cardano.Ledger.Conway.Tx () -import Cardano.Ledger.Conway.TxBody (ConwayEraTxBody (..)) diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/Era.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/Era.hs deleted file mode 100644 index 10549c4b6b4..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/Era.hs +++ /dev/null @@ -1,152 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE TypeFamilies #-} - -module Cardano.Ledger.Conway.Era ( - ConwayEra, - ConwayCERT, - ConwayDELEG, - ConwayGOVCERT, - ConwayCERTS, - ConwayGOV, - ConwayNEWEPOCH, - ConwayEPOCH, - ConwayENACT, - ConwayUTXOS, - ConwayUTXOW, - ConwayTICKF, - ConwayLEDGER, - ConwayRATIFY, -) where - -import Cardano.Ledger.Alonzo.Rules (AlonzoBBODY) -import Cardano.Ledger.Babbage (BabbageEra) -import Cardano.Ledger.Babbage.Rules (BabbageUTXO) -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Mary.Value (MaryValue) -import qualified Cardano.Ledger.Shelley.API as API -import Cardano.Ledger.Shelley.Rules ( - ShelleyPOOL, - ShelleyRUPD, - ShelleySNAP, - ShelleyTICK, - ) - --- ===================================================== - --- | The Conway era -data ConwayEra c - -instance Crypto c => Era (ConwayEra c) where - type PreviousEra (ConwayEra c) = BabbageEra c - type EraCrypto (ConwayEra c) = c - type ProtVerLow (ConwayEra c) = 9 - type ProtVerHigh (ConwayEra c) = 10 - - eraName = "Conway" - -type instance Value (ConwayEra c) = MaryValue c - -------------------------------------------------------------------------------- --- Deprecated rules -------------------------------------------------------------------------------- - -type instance EraRule "UPEC" (ConwayEra c) = VoidEraRule "UPEC" (ConwayEra c) -type instance EraRuleFailure "UPEC" (ConwayEra c) = VoidEraRule "UPEC" (ConwayEra c) -type instance EraRuleEvent "UPEC" (ConwayEra c) = VoidEraRule "UPEC" (ConwayEra c) - -type instance EraRule "NEWPP" (ConwayEra c) = VoidEraRule "NEWPP" (ConwayEra c) -type instance EraRuleFailure "NEWPP" (ConwayEra c) = VoidEraRule "NEWPP" (ConwayEra c) -type instance EraRuleEvent "NEWPP" (ConwayEra c) = VoidEraRule "NEWPP" (ConwayEra c) - -type instance EraRule "PPUP" (ConwayEra c) = VoidEraRule "PPUP" (ConwayEra c) -type instance EraRuleFailure "PPUP" (ConwayEra c) = VoidEraRule "PPUP" (ConwayEra c) -type instance EraRuleEvent "PPUP" (ConwayEra c) = VoidEraRule "PPUP" (ConwayEra c) - -type instance EraRule "MIR" (ConwayEra c) = VoidEraRule "MIR" (ConwayEra c) -type instance EraRuleFailure "MIR" (ConwayEra c) = VoidEraRule "MIR" (ConwayEra c) -type instance EraRuleEvent "MIR" (ConwayEra c) = VoidEraRule "MIR" (ConwayEra c) - -type instance EraRule "DELEGS" (ConwayEra c) = VoidEraRule "DELEGS" (ConwayEra c) -type instance EraRuleFailure "DELEGS" (ConwayEra c) = VoidEraRule "DELEGS" (ConwayEra c) -type instance EraRuleEvent "DELEGS" (ConwayEra c) = VoidEraRule "DELEGS" (ConwayEra c) - -------------------------------------------------------------------------------- --- Era Mapping -------------------------------------------------------------------------------- - -data ConwayGOV era - -type instance EraRule "GOV" (ConwayEra c) = ConwayGOV (ConwayEra c) - -data ConwayNEWEPOCH era - -type instance EraRule "NEWEPOCH" (ConwayEra c) = ConwayNEWEPOCH (ConwayEra c) - -data ConwayEPOCH era - -type instance EraRule "EPOCH" (ConwayEra c) = ConwayEPOCH (ConwayEra c) - -data ConwayENACT era - -type instance EraRule "ENACT" (ConwayEra c) = ConwayENACT (ConwayEra c) - -data ConwayUTXOS era - -type instance EraRule "UTXOS" (ConwayEra c) = ConwayUTXOS (ConwayEra c) - -data ConwayLEDGER era - -type instance EraRule "LEDGER" (ConwayEra c) = ConwayLEDGER (ConwayEra c) - -data ConwayTICKF era - -type instance EraRule "TICKF" (ConwayEra c) = ConwayTICKF (ConwayEra c) - -data ConwayRATIFY era - -type instance EraRule "RATIFY" (ConwayEra c) = ConwayRATIFY (ConwayEra c) - -data ConwayCERTS era - -type instance EraRule "CERTS" (ConwayEra c) = ConwayCERTS (ConwayEra c) - -data ConwayCERT era - -type instance EraRule "CERT" (ConwayEra c) = ConwayCERT (ConwayEra c) - -data ConwayDELEG era - -type instance EraRule "DELEG" (ConwayEra c) = ConwayDELEG (ConwayEra c) - -data ConwayGOVCERT era - -type instance EraRule "GOVCERT" (ConwayEra c) = ConwayGOVCERT (ConwayEra c) - -data ConwayUTXOW era - -type instance EraRule "UTXOW" (ConwayEra c) = ConwayUTXOW (ConwayEra c) - --- Rules inherited from Babbage - -type instance EraRule "UTXO" (ConwayEra c) = BabbageUTXO (ConwayEra c) - --- Rules inherited from Alonzo - -type instance EraRule "BBODY" (ConwayEra c) = AlonzoBBODY (ConwayEra c) - --- Rules inherited from Shelley - -type instance EraRule "LEDGERS" (ConwayEra c) = API.ShelleyLEDGERS (ConwayEra c) - -type instance EraRule "POOLREAP" (ConwayEra c) = API.ShelleyPOOLREAP (ConwayEra c) - -type instance EraRule "RUPD" (ConwayEra c) = ShelleyRUPD (ConwayEra c) - -type instance EraRule "SNAP" (ConwayEra c) = ShelleySNAP (ConwayEra c) - -type instance EraRule "TICK" (ConwayEra c) = ShelleyTICK (ConwayEra c) - -type instance EraRule "POOL" (ConwayEra c) = ShelleyPOOL (ConwayEra c) - --- ================================================= diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/Genesis.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/Genesis.hs deleted file mode 100644 index 748c2799527..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/Genesis.hs +++ /dev/null @@ -1,103 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE UndecidableInstances #-} - -module Cardano.Ledger.Conway.Genesis ( - ConwayGenesis (..), - toConwayGenesisPairs, - cgDelegsL, -) -where - -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - ) -import Cardano.Ledger.Binary.Coders -import Cardano.Ledger.Conway.Era (ConwayEra) -import Cardano.Ledger.Conway.Governance -import Cardano.Ledger.Conway.PParams (UpgradeConwayPParams, toUpgradeConwayPParamsUpdatePairs) -import Cardano.Ledger.Conway.TxCert (Delegatee) -import Cardano.Ledger.Credential (Credential) -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.DRep (DRepState) -import Cardano.Ledger.Keys (KeyRole (..)) -import Data.Aeson ( - FromJSON (..), - KeyValue (..), - ToJSON (..), - Value (..), - object, - pairs, - withObject, - (.!=), - (.:), - (.:?), - ) -import Data.Default.Class (Default (def)) -import Data.Functor.Identity (Identity) -import Data.ListMap (ListMap) -import GHC.Generics (Generic) -import Lens.Micro (Lens', lens) -import NoThunks.Class (NoThunks) - -data ConwayGenesis c = ConwayGenesis - { cgUpgradePParams :: !(UpgradeConwayPParams Identity) - , cgConstitution :: !(Constitution (ConwayEra c)) - , cgCommittee :: !(Committee (ConwayEra c)) - , cgDelegs :: ListMap (Credential 'Staking c) (Delegatee c) - , cgInitialDReps :: ListMap (Credential 'DRepRole c) (DRepState c) - } - deriving (Eq, Generic, Show) - -cgDelegsL :: Lens' (ConwayGenesis c) (ListMap (Credential 'Staking c) (Delegatee c)) -cgDelegsL = lens cgDelegs (\x y -> x {cgDelegs = y}) - -instance Crypto c => NoThunks (ConwayGenesis c) - --- | Genesis are always encoded with the version of era they are defined in. -instance Crypto c => DecCBOR (ConwayGenesis c) where - decCBOR = decode $ RecD ConwayGenesis EncCBOR (ConwayGenesis c) where - encCBOR (ConwayGenesis pparams constitution committee delegs initialDReps) = - encode $ - Rec (ConwayGenesis @c) - !> To pparams - !> To constitution - !> To committee - !> To delegs - !> To initialDReps - -instance Crypto c => ToJSON (ConwayGenesis c) where - toJSON = object . toConwayGenesisPairs - toEncoding = pairs . mconcat . toConwayGenesisPairs - -instance Crypto c => FromJSON (ConwayGenesis c) where - parseJSON = - withObject "ConwayGenesis" $ \obj -> do - upgradeProtocolPParams <- parseJSON (Object obj) - ConwayGenesis - <$> pure upgradeProtocolPParams - <*> obj .: "constitution" - <*> obj .: "committee" - <*> obj .:? "delegs" .!= mempty - <*> obj .:? "initialDReps" .!= mempty - -toConwayGenesisPairs :: (Crypto c, KeyValue e a) => ConwayGenesis c -> [a] -toConwayGenesisPairs cg@(ConwayGenesis _ _ _ _ _) = - let ConwayGenesis {..} = cg - in [ "constitution" .= cgConstitution - , "committee" .= cgCommittee - ] - ++ ["delegs" .= cgDelegs | not (null cgDelegs)] - ++ ["initialDReps" .= cgInitialDReps | not (null cgInitialDReps)] - ++ toUpgradeConwayPParamsUpdatePairs cgUpgradePParams - -instance Crypto c => Default (ConwayGenesis c) where - def = ConwayGenesis def def def mempty mempty diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/Governance.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/Governance.hs deleted file mode 100644 index d8da2039d45..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/Governance.hs +++ /dev/null @@ -1,459 +0,0 @@ -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Conway.Governance ( - EraGov (..), - EnactState (..), - RatifyState (..), - RatifyEnv (..), - RatifySignal (..), - ConwayGovState (..), - Committee (..), - committeeMembersL, - committeeThresholdL, - GovAction (..), - GovActionState (..), - GovActionIx (..), - GovActionId (..), - GovActionPurpose (..), - DRepPulsingState (..), - DRepPulser (..), - govActionIdToText, - Voter (..), - Vote (..), - VotingProcedure (..), - VotingProcedures (..), - foldlVotingProcedures, - foldrVotingProcedures, - ProposalProcedure (..), - GovProcedures (..), - Anchor (..), - AnchorData (..), - indexedGovProps, - Constitution (..), - ConwayEraGov (..), - votingStakePoolThreshold, - votingDRepThreshold, - votingCommitteeThreshold, - isStakePoolVotingAllowed, - isDRepVotingAllowed, - isCommitteeVotingAllowed, - reorderActions, - actionPriority, - Proposals, - mkProposals, - unsafeMkProposals, - GovPurposeId (..), - PRoot (..), - PEdges (..), - PGraph (..), - pRootsL, - pPropsL, - prRootL, - prChildrenL, - peChildrenL, - pGraphL, - pGraphNodesL, - GovRelation (..), - hoistGovRelation, - withGovActionParent, - toPrevGovActionIds, - fromPrevGovActionIds, - grPParamUpdateL, - grHardForkL, - grCommitteeL, - grConstitutionL, - proposalsActions, - proposalsAddAction, - proposalsRemoveWithDescendants, - proposalsAddVote, - proposalsIds, - proposalsApplyEnactment, - proposalsSize, - proposalsLookupId, - proposalsActionsMap, - cgsProposalsL, - cgsDRepPulsingStateL, - cgsCurPParamsL, - cgsPrevPParamsL, - cgsCommitteeL, - cgsConstitutionL, - ensCommitteeL, - ensConstitutionL, - ensCurPParamsL, - ensPrevPParamsL, - ensWithdrawalsL, - ensTreasuryL, - ensPrevGovActionIdsL, - ensPrevPParamUpdateL, - ensPrevHardForkL, - ensPrevCommitteeL, - ensPrevConstitutionL, - ensProtVerL, - rsEnactStateL, - rsExpiredL, - rsEnactedL, - rsDelayedL, - constitutionScriptL, - constitutionAnchorL, - gasIdL, - gasDepositL, - gasCommitteeVotesL, - gasDRepVotesL, - gasStakePoolVotesL, - gasExpiresAfterL, - gasActionL, - gasReturnAddrL, - gasProposedInL, - gasProposalProcedureL, - gasDeposit, - gasAction, - gasReturnAddr, - pProcDepositL, - pProcGovActionL, - pProcReturnAddrL, - pProcAnchorL, - newEpochStateDRepPulsingStateL, - epochStateDRepPulsingStateL, - epochStateStakeDistrL, - epochStateIncrStakeDistrL, - epochStateRegDrepL, - epochStateUMapL, - reDRepDistrL, - pulseDRepPulsingState, - completeDRepPulsingState, - extractDRepPulsingState, - forceDRepPulsingState, - finishDRepPulser, - computeDrepDistr, - getRatifyState, - conwayGovStateDRepDistrG, - psDRepDistrG, - dormantEpoch, - PulsingSnapshot (..), - setCompleteDRepPulsingState, - setFreshDRepPulsingState, - psProposalsL, - psDRepDistrL, - psDRepStateL, - RunConwayRatify (..), - govStatePrevGovActionIds, - mkEnactState, - - -- * Exported for testing - pparamsUpdateThreshold, - TreeMaybe (..), - toGovRelationTree, - toGovRelationTreeEither, -) where - -import Cardano.Ledger.BaseTypes ( - EpochNo (..), - Globals (..), - StrictMaybe (..), - ) -import Cardano.Ledger.Binary ( - DecCBOR (..), - DecShareCBOR (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - ) -import Cardano.Ledger.Binary.Coders ( - Decode (..), - Encode (..), - decode, - encode, - (!>), - ( Eq (ConwayGovState era) - -cgsProposalsL :: Lens' (ConwayGovState era) (Proposals era) -cgsProposalsL = lens cgsProposals (\x y -> x {cgsProposals = y}) - -cgsDRepPulsingStateL :: Lens' (ConwayGovState era) (DRepPulsingState era) -cgsDRepPulsingStateL = lens cgsDRepPulsingState (\x y -> x {cgsDRepPulsingState = y}) - -cgsCommitteeL :: Lens' (ConwayGovState era) (StrictMaybe (Committee era)) -cgsCommitteeL = lens cgsCommittee (\x y -> x {cgsCommittee = y}) - -cgsConstitutionL :: Lens' (ConwayGovState era) (Constitution era) -cgsConstitutionL = lens cgsConstitution (\x y -> x {cgsConstitution = y}) - -cgsCurPParamsL :: Lens' (ConwayGovState era) (PParams era) -cgsCurPParamsL = lens cgsCurPParams (\x y -> x {cgsCurPParams = y}) - -cgsPrevPParamsL :: Lens' (ConwayGovState era) (PParams era) -cgsPrevPParamsL = lens cgsPrevPParams (\x y -> x {cgsPrevPParams = y}) - -govStatePrevGovActionIds :: ConwayEraGov era => GovState era -> GovRelation StrictMaybe era -govStatePrevGovActionIds = view $ proposalsGovStateL . pRootsL . to toPrevGovActionIds - -conwayGovStateDRepDistrG :: - SimpleGetter (ConwayGovState era) (Map (DRep (EraCrypto era)) (CompactForm Coin)) -conwayGovStateDRepDistrG = to (\govst -> (psDRepDistr . fst) $ finishDRepPulser (cgsDRepPulsingState govst)) - -getRatifyState :: ConwayGovState era -> RatifyState era -getRatifyState (ConwayGovState {cgsDRepPulsingState}) = snd $ finishDRepPulser cgsDRepPulsingState - -mkEnactState :: ConwayEraGov era => GovState era -> EnactState era -mkEnactState gs = - EnactState - { ensCommittee = gs ^. committeeGovStateL - , ensConstitution = gs ^. constitutionGovStateL - , ensCurPParams = gs ^. curPParamsGovStateL - , ensPrevPParams = gs ^. prevPParamsGovStateL - , ensTreasury = zero - , ensWithdrawals = mempty - , ensPrevGovActionIds = govStatePrevGovActionIds gs - } - --- TODO: Implement Sharing: https://github.com/intersectmbo/cardano-ledger/issues/3486 -instance EraPParams era => DecShareCBOR (ConwayGovState era) where - decShareCBOR _ = - decode $ - RecD ConwayGovState - DecCBOR (ConwayGovState era) where - decCBOR = - decode $ - RecD ConwayGovState - EncCBOR (ConwayGovState era) where - encCBOR ConwayGovState {..} = - encode $ - Rec ConwayGovState - !> To cgsProposals - !> To cgsCommittee - !> To cgsConstitution - !> To cgsCurPParams - !> To cgsPrevPParams - !> To cgsDRepPulsingState - -instance EraPParams era => ToCBOR (ConwayGovState era) where - toCBOR = toEraCBOR @era - -instance EraPParams era => FromCBOR (ConwayGovState era) where - fromCBOR = fromEraCBOR @era - -instance EraPParams era => Default (ConwayGovState era) where - def = ConwayGovState def def def def def (DRComplete def def) - -instance EraPParams era => NFData (ConwayGovState era) - -instance EraPParams era => NoThunks (ConwayGovState era) - -instance EraPParams era => ToJSON (ConwayGovState era) where - toJSON = object . toConwayGovPairs - toEncoding = pairs . mconcat . toConwayGovPairs - -toConwayGovPairs :: (KeyValue e a, EraPParams era) => ConwayGovState era -> [a] -toConwayGovPairs cg@(ConwayGovState _ _ _ _ _ _) = - let ConwayGovState {..} = cg - in [ "proposals" .= cgsProposals - , "nextRatifyState" .= extractDRepPulsingState cgsDRepPulsingState - , "committee" .= cgsCommittee - , "constitution" .= cgsConstitution - , "currentPParams" .= cgsCurPParams - , "previousPParams" .= cgsPrevPParams - ] - -instance EraPParams (ConwayEra c) => EraGov (ConwayEra c) where - type GovState (ConwayEra c) = ConwayGovState (ConwayEra c) - - curPParamsGovStateL = cgsCurPParamsL - - prevPParamsGovStateL = cgsPrevPParamsL - - obligationGovState st = - Obligations - { oblProposal = foldMap' gasDeposit $ proposalsActions (st ^. cgsProposalsL) - , oblDRep = Coin 0 - , oblStake = Coin 0 - , oblPool = Coin 0 - } - -class EraGov era => ConwayEraGov era where - constitutionGovStateL :: Lens' (GovState era) (Constitution era) - proposalsGovStateL :: Lens' (GovState era) (Proposals era) - drepPulsingStateGovStateL :: Lens' (GovState era) (DRepPulsingState era) - committeeGovStateL :: Lens' (GovState era) (StrictMaybe (Committee era)) - -instance Crypto c => ConwayEraGov (ConwayEra c) where - constitutionGovStateL = cgsConstitutionL - proposalsGovStateL = cgsProposalsL - drepPulsingStateGovStateL = cgsDRepPulsingStateL - committeeGovStateL = cgsCommitteeL - --- =================================================================== --- Lenses for access to (DRepPulsingState era) - -newEpochStateDRepPulsingStateL :: - ConwayEraGov era => Lens' (NewEpochState era) (DRepPulsingState era) -newEpochStateDRepPulsingStateL = - nesEsL . esLStateL . lsUTxOStateL . utxosGovStateL . drepPulsingStateGovStateL - -epochStateDRepPulsingStateL :: ConwayEraGov era => Lens' (EpochState era) (DRepPulsingState era) -epochStateDRepPulsingStateL = esLStateL . lsUTxOStateL . utxosGovStateL . drepPulsingStateGovStateL - -setCompleteDRepPulsingState :: - GovState era ~ ConwayGovState era => - PulsingSnapshot era -> - RatifyState era -> - EpochState era -> - EpochState era -setCompleteDRepPulsingState snapshot ratifyState epochState = - epochState - & epochStateGovStateL . cgsDRepPulsingStateL - .~ DRComplete snapshot ratifyState - --- | Refresh the pulser in the EpochState using all the new data that is needed to compute --- the RatifyState when pulsing completes. -setFreshDRepPulsingState :: - ( GovState era ~ ConwayGovState era - , Monad m - , RunConwayRatify era - , ConwayEraGov era - ) => - EpochNo -> - PoolDistr (EraCrypto era) -> - EpochState era -> - ReaderT Globals m (EpochState era) -setFreshDRepPulsingState epochNo stakePoolDistr epochState = do - -- When we are finished with the pulser that was started at the last epoch boundary, we - -- need to initialize a fresh DRep pulser. We do so by computing the pulse size and - -- gathering the data, which we will snapshot inside the pulser. We expect approximately - -- 10*k-many blocks to be produced each epoch, where `k` value is the stability - -- window. We must ensure for secure operation of the Hard Fork Combinator that we have - -- the new EnactState available 2 stability windows before the end of the epoch, while - -- spreading out stake distribution computation throughout the first 8 stability - -- windows. Therefore, we divide the number of stake credentials by 8*k - globals <- ask - let ledgerState = epochState ^. esLStateL - utxoState = lsUTxOState ledgerState - stakeDistr = credMap $ utxosStakeDistr utxoState - certState = lsCertState ledgerState - dState = certDState certState - vState = certVState certState - govState = epochState ^. epochStateGovStateL - stakeSize = Map.size stakeDistr - -- Maximum number of blocks we are allowed to roll back - k = securityParameter globals - pulseSize = max 1 (ceiling (toInteger stakeSize % (8 * toInteger k))) - epochState' = - epochState - & epochStateGovStateL . cgsDRepPulsingStateL - .~ DRPulsing - ( DRepPulser - { dpPulseSize = pulseSize - , dpUMap = dsUnified dState - , dpBalance = stakeDistr -- used as the balance of things left to iterate over - , dpStakeDistr = stakeDistr -- used as part of the snapshot - , dpStakePoolDistr = stakePoolDistr - , dpDRepDistr = Map.empty -- The partial result starts as the empty map - , dpDRepState = vsDReps vState - , dpCurrentEpoch = epochNo - , dpCommitteeState = vsCommitteeState vState - , dpEnactState = - mkEnactState govState - & ensTreasuryL .~ epochState ^. epochStateTreasuryL - , dpProposals = proposalsActions (govState ^. cgsProposalsL) - , dpGlobals = globals - } - ) - pure epochState' - --- | Force computation of DRep stake distribution and figure out the next enact --- state. This operation is useful in cases when access to new EnactState or DRep stake --- distribution is needed more than once. It is safe to call this function at any --- point. Whenever pulser is already in computed state this will be a noop. -forceDRepPulsingState :: ConwayEraGov era => NewEpochState era -> NewEpochState era -forceDRepPulsingState nes = nes & newEpochStateDRepPulsingStateL %~ completeDRepPulsingState diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/Governance/DRepPulser.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/Governance/DRepPulser.hs deleted file mode 100644 index 54254ff8408..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/Governance/DRepPulser.hs +++ /dev/null @@ -1,420 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Conway.Governance.DRepPulser ( - DRepPulsingState (..), - DRepPulser (..), - pulseDRepPulsingState, - completeDRepPulsingState, - extractDRepPulsingState, - finishDRepPulser, - computeDrepDistr, - psDRepDistrG, - dormantEpoch, - PulsingSnapshot (..), - psProposalsL, - psDRepDistrL, - psDRepStateL, - RunConwayRatify (..), -) where - -import Cardano.Ledger.BaseTypes (EpochNo (..), Globals (..)) -import Cardano.Ledger.Binary ( - DecCBOR (..), - DecShareCBOR (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - ) -import Cardano.Ledger.Binary.Coders ( - Decode (..), - Encode (..), - decode, - encode, - (!>), - ( x {psProposals = y}) - -psDRepDistrL :: Lens' (PulsingSnapshot era) (Map (DRep (EraCrypto era)) (CompactForm Coin)) -psDRepDistrL = lens psDRepDistr (\x y -> x {psDRepDistr = y}) - -psDRepStateL :: - Lens' (PulsingSnapshot era) (Map (Credential 'DRepRole (EraCrypto era)) (DRepState (EraCrypto era))) -psDRepStateL = lens psDRepState (\x y -> x {psDRepState = y}) - -deriving instance EraPParams era => Eq (PulsingSnapshot era) - -deriving instance EraPParams era => Show (PulsingSnapshot era) - -instance EraPParams era => NFData (PulsingSnapshot era) - -instance EraPParams era => NoThunks (PulsingSnapshot era) - -toPulsingSnapshotsPairs :: (KeyValue e a, EraPParams era) => PulsingSnapshot era -> [a] -toPulsingSnapshotsPairs gas@(PulsingSnapshot _ _ _) = - let (PulsingSnapshot {..}) = gas - in [ "psProposals" .= psProposals - , "psDRepDistr" .= psDRepDistr - , "psDRepState" .= psDRepState - ] - -instance EraPParams era => ToJSON (PulsingSnapshot era) where - toJSON = object . toPulsingSnapshotsPairs - toEncoding = pairs . mconcat . toPulsingSnapshotsPairs - -instance Default (PulsingSnapshot era) where - def = PulsingSnapshot mempty def def - -instance EraPParams era => EncCBOR (PulsingSnapshot era) where - encCBOR PulsingSnapshot {..} = - encode $ - Rec PulsingSnapshot - !> To psProposals - !> To psDRepDistr - !> To psDRepState - --- TODO: Implement Sharing: https://github.com/intersectmbo/cardano-ledger/issues/3486 -instance EraPParams era => DecShareCBOR (PulsingSnapshot era) where - decShareCBOR _ = - decode $ - RecD PulsingSnapshot - DecCBOR (PulsingSnapshot era) where - decCBOR = - decode $ - RecD PulsingSnapshot - ToCBOR (PulsingSnapshot era) where - toCBOR = toEraCBOR @era - -instance EraPParams era => FromCBOR (PulsingSnapshot era) where - fromCBOR = fromEraCBOR @era - --- =============================================================================== --- Algorithm for computing the DRep stake distrubution, with and without pulsing. --- =============================================================================== - --- | Given three inputs --- --- 1) Map (Credential 'Staking c) (DRep c). The delegation map. Inside the DRepUView of --- the UMap 'um' from the DState. --- --- 2) regDreps :: Map (Credential 'DRepRole c) (DRepState c). The map of registered --- DReps to their state. The first part of the VState. --- --- 3) stakeDistr :: VMap VB VP (Credential 'Staking c) (CompactForm Coin). The --- aggregated stake distr extracted from the first component of the IncrementalStake --- i.e. (IStake credmap _) where credmap is converted to a VMap --- --- Compute the Drep distribution of stake(Coin) --- cost is expected to be O(size of 'stakeDistr' * log (size of 'um') * log (size of 'regDreps')) --- This is going to be expensive, so we will want to pulse it. Without pulsing, --- we estimate 3-5 seconds -computeDrepDistr :: - UMap c -> - Map (Credential 'DRepRole c) (DRepState c) -> - Map (Credential 'Staking c) (CompactForm Coin) -> - Map (DRep c) (CompactForm Coin) -computeDrepDistr um regDreps stakeDistr = - Map.foldlWithKey' (accumDRepDistr um regDreps) Map.empty stakeDistr - --- | For each 'stakecred' and coin 'c', check if that credential is delegated to some DRep. --- If so then add that coin to the aggregated map 'ans', mapping DReps to compact Coin --- If the DRep is a DRepCredential (rather than AwaysAbstain or AlwaysNoConfidence) then check --- that the credential is a member of the registered DRep map ('regDreps') before adding it to 'ans' -accumDRepDistr :: - UMap c -> - Map (Credential 'DRepRole c) (DRepState c) -> - Map (DRep c) (CompactForm Coin) -> - Credential 'Staking c -> - CompactForm Coin -> - Map (DRep c) (CompactForm Coin) -accumDRepDistr um regDreps ans stakeCred stake@(CompactCoin compactStake) = fromMaybe ans $ do - umElem <- Map.lookup stakeCred (umElems um) - drep <- umElemDRep umElem - let stakeWithRewards = - case umElemRDPair umElem of - Nothing -> stake - Just rdPair - | CompactCoin compactReward <- rdReward rdPair -> - CompactCoin (compactReward + compactStake) - pure $ case drep of - DRepAlwaysAbstain -> Map.insertWith UMap.addCompact drep stakeWithRewards ans - DRepAlwaysNoConfidence -> Map.insertWith UMap.addCompact drep stakeWithRewards ans - DRepCredential drepCred - | Map.member drepCred regDreps -> Map.insertWith UMap.addCompact drep stakeWithRewards ans - | otherwise -> ans - --- | The type of a Pulser which uses 'accumDRepDistr' as its underlying function. --- 'accumDRepDistr' will be partially applied to the components of type (UMap c) --- and (Map (Credential 'DRepRole c) (DRepState c)) when pulsing. Note that we use two type --- equality (~) constraints to fix both the monad 'm' and the 'ans' type, to --- the context where we will use the type as a Pulser. The type DRepPulser must --- have 'm' and 'ans' as its last two parameters so we can make a Pulsable instance. --- We will always use this instantiation (DRepPulser era Identity (RatifyState era)) -data DRepPulser era (m :: Type -> Type) ans where - DRepPulser :: - forall era ans m. - (ans ~ RatifyState era, m ~ Identity, RunConwayRatify era) => - { dpPulseSize :: !Int - -- ^ How many elements of 'dpBalance' to consume each pulse. - , dpUMap :: !(UMap (EraCrypto era)) - -- ^ Snapshot containing the mapping of stake credentials to Pools. - , dpBalance :: !(Map (Credential 'Staking (EraCrypto era)) (CompactForm Coin)) - -- ^ The object we are iterating over. Shrinks with each pulse - , dpStakeDistr :: !(Map (Credential 'Staking (EraCrypto era)) (CompactForm Coin)) - -- ^ Snapshot of the stake distr (comes from the IncrementalStake) - , dpStakePoolDistr :: PoolDistr (EraCrypto era) - -- ^ Snapshot of the pool distr. Lazy on purpose: See `ssStakeMarkPoolDistr` and ADR-7 - -- for explanation. - , dpDRepDistr :: !(Map (DRep (EraCrypto era)) (CompactForm Coin)) - -- ^ The partial result that grows with each pulse. The purpose of the pulsing. - , dpDRepState :: !(Map (Credential 'DRepRole (EraCrypto era)) (DRepState (EraCrypto era))) - -- ^ Snapshot of registered DRep credentials - , dpCurrentEpoch :: !EpochNo - -- ^ Snapshot of the Epoch this pulser will complete in. - , dpCommitteeState :: !(CommitteeState era) - -- ^ Snapshot of the CommitteeState - , dpEnactState :: !(EnactState era) - -- ^ Snapshot of the EnactState, Used to build the Env of the RATIFY rule - , dpProposals :: !(StrictSeq (GovActionState era)) - -- ^ Snapshot of the proposals. This is the Signal for the RATIFY rule - , dpGlobals :: !Globals - } -> - DRepPulser era m ans - -instance EraPParams era => Eq (DRepPulser era Identity (RatifyState era)) where - x == y = finishDRepPulser (DRPulsing x) == finishDRepPulser (DRPulsing y) - -instance Pulsable (DRepPulser era) where - done DRepPulser {dpBalance} = Map.null dpBalance - - current x@(DRepPulser {}) = snd $ finishDRepPulser (DRPulsing x) - - pulseM pulser@(DRepPulser {..}) - | Map.null dpBalance = pure pulser - | otherwise = - let !(!steps, !balance') = Map.splitAt dpPulseSize dpBalance - drep' = Map.foldlWithKey' (accumDRepDistr dpUMap dpDRepState) dpDRepDistr steps - in pure (pulser {dpBalance = balance', dpDRepDistr = drep'}) - - completeM x@(DRepPulser {}) = pure (snd $ finishDRepPulser @era (DRPulsing x)) - -deriving instance (EraPParams era, Show ans) => Show (DRepPulser era m ans) - -instance EraPParams era => NoThunks (DRepPulser era Identity (RatifyState era)) where - showTypeOf _ = "DRepPulser" - wNoThunks ctxt drp@(DRepPulser _ _ _ _ _ _ _ _ _ _ _ _) = - allNoThunks - [ noThunks ctxt (dpPulseSize drp) - , noThunks ctxt (dpUMap drp) - , noThunks ctxt (dpBalance drp) - , noThunks ctxt (dpStakeDistr drp) - , -- dpStakePoolDistr is allowed to have thunks - noThunks ctxt (dpDRepDistr drp) - , noThunks ctxt (dpDRepState drp) - , noThunks ctxt (dpCurrentEpoch drp) - , noThunks ctxt (dpCommitteeState drp) - , noThunks ctxt (dpEnactState drp) - , noThunks ctxt (dpProposals drp) - , noThunks ctxt (dpGlobals drp) - ] - -instance EraPParams era => NFData (DRepPulser era Identity (RatifyState era)) where - rnf (DRepPulser n um bal stake pool drep dstate ep cs es as gs) = - n `deepseq` - um `deepseq` - bal `deepseq` - stake `deepseq` - pool `deepseq` - drep `deepseq` - dstate `deepseq` - ep `deepseq` - cs `deepseq` - es `deepseq` - as `deepseq` - rnf gs - -class - ( STS (ConwayRATIFY era) - , Signal (ConwayRATIFY era) ~ RatifySignal era - , BaseM (ConwayRATIFY era) ~ Reader Globals - , Environment (ConwayRATIFY era) ~ RatifyEnv era - , State (ConwayRATIFY era) ~ RatifyState era - ) => - RunConwayRatify era - where - runConwayRatify :: - Globals -> RatifyEnv era -> RatifyState era -> RatifySignal era -> RatifyState era - runConwayRatify globals ratifyEnv ratifyState (RatifySignal ratifySig) = - let ratifyResult = - runReader - ( applySTS @(ConwayRATIFY era) (TRC (ratifyEnv, ratifyState, RatifySignal $ reorderActions ratifySig)) - ) - globals - in case ratifyResult of - Left ps -> - error (unlines ("Impossible: RATIFY rule never fails, but it did:" : map show (toList ps))) - Right ratifyState' -> ratifyState' - -finishDRepPulser :: DRepPulsingState era -> (PulsingSnapshot era, RatifyState era) -finishDRepPulser (DRComplete snap ratifyState) = (snap, ratifyState) -finishDRepPulser (DRPulsing (DRepPulser {..})) = - (PulsingSnapshot dpProposals finalDRepDistr dpDRepState, ratifyState') - where - !finalDRepDistr = Map.foldlWithKey' (accumDRepDistr dpUMap dpDRepState) dpDRepDistr dpBalance - !ratifyEnv = - RatifyEnv - { reStakeDistr = dpStakeDistr - , reStakePoolDistr = dpStakePoolDistr - , reDRepDistr = finalDRepDistr - , reDRepState = dpDRepState - , reCurrentEpoch = dpCurrentEpoch - , reCommitteeState = dpCommitteeState - } - !ratifySig = RatifySignal dpProposals - !ratifyState = - RatifyState - { rsEnactState = dpEnactState - , rsEnacted = mempty - , rsExpired = mempty - , rsDelayed = False - } - !ratifyState' = runConwayRatify dpGlobals ratifyEnv ratifyState ratifySig - --- =========================================================== --- The State which is stored in ConwayGovState --- =========================================================== - -data DRepPulsingState era - = DRPulsing !(DRepPulser era Identity (RatifyState era)) - | DRComplete - !(PulsingSnapshot era) - !(RatifyState era) - deriving (Generic, NoThunks, NFData) - -dormantEpoch :: DRepPulsingState era -> Bool -dormantEpoch (DRPulsing x) = SS.null (dpProposals x) -dormantEpoch (DRComplete b _) = SS.null (psProposals b) - --- | This is potentially an expensive getter. Make sure not to use it in the first 80% of --- the epoch. -psDRepDistrG :: - SimpleGetter (DRepPulsingState era) (Map (DRep (EraCrypto era)) (CompactForm Coin)) -psDRepDistrG = to get - where - get (DRComplete x _) = psDRepDistr x - get x = psDRepDistr . fst $ finishDRepPulser x - -instance EraPParams era => Eq (DRepPulsingState era) where - x == y = finishDRepPulser x == finishDRepPulser y - -instance EraPParams era => Show (DRepPulsingState era) where - show (DRComplete x m) = "(DRComplete " ++ show x ++ " " ++ show m ++ ")" - show x = show (uncurry DRComplete (finishDRepPulser x)) - -instance EraPParams era => EncCBOR (DRepPulsingState era) where - encCBOR (DRComplete x y) = encode (Rec DRComplete !> To x !> To y) - encCBOR x@(DRPulsing (DRepPulser {})) = encode (Rec DRComplete !> To snap !> To ratstate) - where - (snap, ratstate) = finishDRepPulser x - --- TODO: Implement Sharing: https://github.com/intersectmbo/cardano-ledger/issues/3486 -instance EraPParams era => DecShareCBOR (DRepPulsingState era) where - decShareCBOR _ = - decode $ - RecD DRComplete - DecCBOR (DRepPulsingState era) where - decCBOR = decode (RecD DRComplete DRepPulsingState era -pulseDRepPulsingState x@(DRComplete _ _) = x -pulseDRepPulsingState (DRPulsing x@(DRepPulser {})) = - let x2 = pulse x - in if done x2 - then uncurry DRComplete (finishDRepPulser (DRPulsing x2)) - else DRPulsing x2 - -completeDRepPulsingState :: DRepPulsingState era -> DRepPulsingState era -completeDRepPulsingState x@(DRPulsing _) = uncurry DRComplete (finishDRepPulser x) -completeDRepPulsingState x@(DRComplete {}) = x - -extractDRepPulsingState :: DRepPulsingState era -> RatifyState era -extractDRepPulsingState x@(DRPulsing _) = snd (finishDRepPulser x) -extractDRepPulsingState (DRComplete _ x) = x diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/Governance/Internal.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/Governance/Internal.hs deleted file mode 100644 index b93304a1f3d..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/Governance/Internal.hs +++ /dev/null @@ -1,578 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MonoLocalBinds #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Conway.Governance.Internal ( - EnactState (..), - RatifyState (..), - RatifyEnv (..), - RatifySignal (..), - votingStakePoolThreshold, - votingDRepThreshold, - votingCommitteeThreshold, - isStakePoolVotingAllowed, - isDRepVotingAllowed, - isCommitteeVotingAllowed, - reorderActions, - actionPriority, - hoistGovRelation, - withGovActionParent, - ensCommitteeL, - ensConstitutionL, - ensCurPParamsL, - ensPrevPParamsL, - ensWithdrawalsL, - ensTreasuryL, - ensPrevGovActionIdsL, - ensPrevPParamUpdateL, - ensPrevHardForkL, - ensPrevCommitteeL, - ensPrevConstitutionL, - ensProtVerL, - rsEnactStateL, - rsExpiredL, - rsEnactedL, - rsDelayedL, - epochStateStakeDistrL, - epochStateIncrStakeDistrL, - epochStateRegDrepL, - epochStateUMapL, - reDRepDistrL, - - -- * Exported for testing - pparamsUpdateThreshold, -) where - -import Cardano.Ledger.BaseTypes ( - EpochNo (..), - ProtVer (..), - StrictMaybe (..), - UnitInterval, - isSJust, - ) -import Cardano.Ledger.Binary ( - DecCBOR (..), - DecShareCBOR (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - decNoShareCBOR, - ) -import Cardano.Ledger.Binary.Coders ( - Decode (..), - Encode (..), - decode, - encode, - (!>), - ( x {ensCommittee = y}) - -ensConstitutionL :: Lens' (EnactState era) (Constitution era) -ensConstitutionL = lens ensConstitution (\x y -> x {ensConstitution = y}) - -ensProtVerL :: EraPParams era => Lens' (EnactState era) ProtVer -ensProtVerL = ensCurPParamsL . ppProtocolVersionL - -ensCurPParamsL :: Lens' (EnactState era) (PParams era) -ensCurPParamsL = lens ensCurPParams (\es x -> es {ensCurPParams = x}) - -ensPrevPParamsL :: Lens' (EnactState era) (PParams era) -ensPrevPParamsL = lens ensPrevPParams (\es x -> es {ensPrevPParams = x}) - -ensTreasuryL :: Lens' (EnactState era) Coin -ensTreasuryL = lens ensTreasury $ \es x -> es {ensTreasury = x} - -ensWithdrawalsL :: Lens' (EnactState era) (Map (Credential 'Staking (EraCrypto era)) Coin) -ensWithdrawalsL = lens ensWithdrawals $ \es x -> es {ensWithdrawals = x} - -ensPrevGovActionIdsL :: Lens' (EnactState era) (GovRelation StrictMaybe era) -ensPrevGovActionIdsL = lens ensPrevGovActionIds (\es x -> es {ensPrevGovActionIds = x}) - -ensPrevPParamUpdateL :: - Lens' (EnactState era) (StrictMaybe (GovPurposeId 'PParamUpdatePurpose era)) -ensPrevPParamUpdateL = ensPrevGovActionIdsL . grPParamUpdateL - -ensPrevHardForkL :: - Lens' (EnactState era) (StrictMaybe (GovPurposeId 'HardForkPurpose era)) -ensPrevHardForkL = ensPrevGovActionIdsL . grHardForkL - -ensPrevCommitteeL :: - Lens' (EnactState era) (StrictMaybe (GovPurposeId 'CommitteePurpose era)) -ensPrevCommitteeL = ensPrevGovActionIdsL . grCommitteeL - -ensPrevConstitutionL :: - Lens' (EnactState era) (StrictMaybe (GovPurposeId 'ConstitutionPurpose era)) -ensPrevConstitutionL = ensPrevGovActionIdsL . grConstitutionL - -instance EraPParams era => ToJSON (EnactState era) where - toJSON = object . toEnactStatePairs - toEncoding = pairs . mconcat . toEnactStatePairs - -toEnactStatePairs :: (KeyValue e a, EraPParams era) => EnactState era -> [a] -toEnactStatePairs cg@(EnactState _ _ _ _ _ _ _) = - let EnactState {..} = cg - in [ "committee" .= ensCommittee - , "constitution" .= ensConstitution - , "curPParams" .= ensCurPParams - , "prevPParams" .= ensPrevPParams - , "prevGovActionIds" .= ensPrevGovActionIds - ] - -deriving instance (Era era, Eq (PParams era)) => Eq (EnactState era) - -deriving instance (Era era, Show (PParams era)) => Show (EnactState era) - -instance EraPParams era => Default (EnactState era) where - def = - EnactState - def - def - def - def - (Coin 0) - def - def - -instance EraPParams era => DecCBOR (EnactState era) where - decCBOR = decNoShareCBOR - --- TODO: Implement Sharing: https://github.com/intersectmbo/cardano-ledger/issues/3486 -instance EraPParams era => DecShareCBOR (EnactState era) where - decShareCBOR _ = - decode $ - RecD EnactState - EncCBOR (EnactState era) where - encCBOR EnactState {..} = - encode $ - Rec EnactState - !> To ensCommittee - !> To ensConstitution - !> To ensCurPParams - !> To ensPrevPParams - !> To ensTreasury - !> To ensWithdrawals - !> To ensPrevGovActionIds - -instance EraPParams era => ToCBOR (EnactState era) where - toCBOR = toEraCBOR @era - -instance EraPParams era => FromCBOR (EnactState era) where - fromCBOR = fromEraCBOR @era - -instance EraPParams era => NFData (EnactState era) - -instance EraPParams era => NoThunks (EnactState era) - --- ======================================== - -data RatifyState era = RatifyState - { rsEnactState :: !(EnactState era) - , rsEnacted :: !(Seq (GovActionState era)) - , rsExpired :: !(Set (GovActionId (EraCrypto era))) - , rsDelayed :: !Bool - } - deriving (Generic) - -deriving instance EraPParams era => Eq (RatifyState era) - -deriving instance EraPParams era => Show (RatifyState era) - -rsEnactStateL :: Lens' (RatifyState era) (EnactState era) -rsEnactStateL = lens rsEnactState (\x y -> x {rsEnactState = y}) - -rsEnactedL :: Lens' (RatifyState era) (Seq (GovActionState era)) -rsEnactedL = lens rsEnacted (\x y -> x {rsEnacted = y}) - -rsExpiredL :: Lens' (RatifyState era) (Set (GovActionId (EraCrypto era))) -rsExpiredL = lens rsExpired (\x y -> x {rsExpired = y}) - -rsDelayedL :: Lens' (RatifyState era) Bool -rsDelayedL = lens rsDelayed (\x y -> x {rsDelayed = y}) - -instance EraPParams era => Default (RatifyState era) - -instance EraPParams era => NFData (RatifyState era) - -instance EraPParams era => NoThunks (RatifyState era) - -instance EraPParams era => ToJSON (RatifyState era) where - toJSON = object . toRatifyStatePairs - toEncoding = pairs . mconcat . toRatifyStatePairs - -toRatifyStatePairs :: (KeyValue e a, EraPParams era) => RatifyState era -> [a] -toRatifyStatePairs cg@(RatifyState _ _ _ _) = - let RatifyState {..} = cg - in [ "nextEnactState" .= rsEnactState - , "enactedGovActions" .= rsEnacted - , "expiredGovActions" .= rsExpired - , "ratificationDelayed" .= rsDelayed - ] - -pparamsUpdateThreshold :: - forall era. - ConwayEraPParams era => - PParams era -> - PParamsUpdate era -> - UnitInterval -pparamsUpdateThreshold pp ppu = - let thresholdLens = \case - NetworkGroup -> dvtPPNetworkGroupL - GovGroup -> dvtPPGovGroupL - TechnicalGroup -> dvtPPTechnicalGroupL - EconomicGroup -> dvtPPEconomicGroupL - lookupGroupThreshold (PPGroups grp _) = - pp ^. ppDRepVotingThresholdsL . thresholdLens grp - in Set.foldr' max minBound $ - Set.map lookupGroupThreshold $ - modifiedPPGroups @era ppu - -data VotingThreshold - = -- | This is the actual threshold. It is lazy, because upon proposal we only care if - -- the voting is allowed or not, instead of getting the actual threshold value. - VotingThreshold UnitInterval -- <- lazy on purpose - | -- | Does not have a threshold, therefore an action can not be ratified - NoVotingThreshold - | -- | Some GovActions are not allowed to be voted by some entities - NoVotingAllowed - -toRatifyVotingThreshold :: VotingThreshold -> StrictMaybe UnitInterval -toRatifyVotingThreshold = \case - VotingThreshold t -> SJust t -- concrete threshold - NoVotingThreshold -> SNothing -- no voting threshold prevents ratification - NoVotingAllowed -> SJust minBound -- votes should not count, set threshold to zero - -isVotingAllowed :: VotingThreshold -> Bool -isVotingAllowed = \case - VotingThreshold {} -> True - NoVotingThreshold -> True - NoVotingAllowed -> False - -isStakePoolVotingAllowed :: - ConwayEraPParams era => - GovAction era -> - Bool -isStakePoolVotingAllowed = - isVotingAllowed . votingStakePoolThresholdInternal pp isElectedCommittee - where - -- Information about presence of committe or values in PParams are irrelevant for - -- knowing if voting is allowed or not: - pp = emptyPParams - isElectedCommittee = False - -votingStakePoolThreshold :: - ConwayEraPParams era => - RatifyState era -> - GovAction era -> - StrictMaybe UnitInterval -votingStakePoolThreshold ratifyState = - toRatifyVotingThreshold . votingStakePoolThresholdInternal pp isElectedCommittee - where - pp = ratifyState ^. rsEnactStateL . ensCurPParamsL - isElectedCommittee = isSJust $ ratifyState ^. rsEnactStateL . ensCommitteeL - -votingStakePoolThresholdInternal :: - ConwayEraPParams era => - PParams era -> - Bool -> - GovAction era -> - VotingThreshold -votingStakePoolThresholdInternal pp isElectedCommittee action = - let PoolVotingThresholds - { pvtCommitteeNoConfidence - , pvtCommitteeNormal - , pvtHardForkInitiation - , pvtPPSecurityGroup - } = pp ^. ppPoolVotingThresholdsL - isSecurityRelevant (PPGroups _ s) = - case s of - SecurityGroup -> True - NoStakePoolGroup -> False - paramChangeThreshold ppu - | any isSecurityRelevant (modifiedPPGroups ppu) = - VotingThreshold pvtPPSecurityGroup - | otherwise = NoVotingAllowed - in case action of - NoConfidence {} -> VotingThreshold pvtCommitteeNoConfidence - UpdateCommittee {} -> - VotingThreshold $ - if isElectedCommittee - then pvtCommitteeNormal - else pvtCommitteeNoConfidence - NewConstitution {} -> NoVotingAllowed - HardForkInitiation {} -> VotingThreshold pvtHardForkInitiation - ParameterChange _ ppu _ -> paramChangeThreshold ppu - TreasuryWithdrawals {} -> NoVotingAllowed - InfoAction {} -> NoVotingThreshold - -isCommitteeVotingAllowed :: ConwayEraPParams era => CommitteeState era -> GovAction era -> Bool -isCommitteeVotingAllowed committeeState = - isVotingAllowed . votingCommitteeThresholdInternal def committee committeeState - where - -- Information about presence of committee is irrelevant for knowing if voting is - -- allowed or not - committee = SNothing - -votingCommitteeThreshold :: - ConwayEraPParams era => - RatifyState era -> - CommitteeState era -> - GovAction era -> - StrictMaybe UnitInterval -votingCommitteeThreshold ratifyState committeeState = - toRatifyVotingThreshold . votingCommitteeThresholdInternal pp committee committeeState - where - committee = ratifyState ^. rsEnactStateL . ensCommitteeL - pp = ratifyState ^. rsEnactStateL . ensCurPParamsL - -votingCommitteeThresholdInternal :: - ConwayEraPParams era => - PParams era -> - StrictMaybe (Committee era) -> - CommitteeState era -> - GovAction era -> - VotingThreshold -votingCommitteeThresholdInternal pp committee (CommitteeState hotKeys) = \case - NoConfidence {} -> NoVotingAllowed - UpdateCommittee {} -> NoVotingAllowed - NewConstitution {} -> threshold - HardForkInitiation {} -> threshold - ParameterChange {} -> threshold - TreasuryWithdrawals {} -> threshold - InfoAction {} -> NoVotingThreshold - where - threshold = - case committeeThreshold <$> committee of - -- if the committee size is smaller than the minimum given in PParams, - -- we treat it as if we had no committee - SJust t | activeCommitteeSize >= minSize -> VotingThreshold t - _ -> NoVotingThreshold - minSize = pp ^. ppCommitteeMinSizeL - isActive coldKey _validUntil = - case Map.lookup coldKey hotKeys of - Just (CommitteeMemberResigned _) -> False - Just _ -> True -- TODO do we need to check if member's term is expired here? - Nothing -> False - activeCommitteeSize = - fromIntegral . Map.size . Map.filterWithKey isActive $ - foldMap' committeeMembers committee - -isDRepVotingAllowed :: - ConwayEraPParams era => - GovAction era -> - Bool -isDRepVotingAllowed = - isVotingAllowed . votingDRepThresholdInternal pp isElectedCommittee - where - -- Information about presence of committee or values in PParams are irrelevant for - -- knowing if voting is allowed or not: - pp = emptyPParams - isElectedCommittee = False - -votingDRepThreshold :: - ConwayEraPParams era => - RatifyState era -> - GovAction era -> - StrictMaybe UnitInterval -votingDRepThreshold ratifyState = - toRatifyVotingThreshold . votingDRepThresholdInternal pp isElectedCommittee - where - pp = ratifyState ^. rsEnactStateL . ensCurPParamsL - isElectedCommittee = isSJust $ ratifyState ^. rsEnactStateL . ensCommitteeL - -votingDRepThresholdInternal :: - ConwayEraPParams era => - PParams era -> - Bool -> - GovAction era -> - VotingThreshold -votingDRepThresholdInternal pp isElectedCommittee action = - let DRepVotingThresholds - { dvtCommitteeNoConfidence - , dvtCommitteeNormal - , dvtUpdateToConstitution - , dvtHardForkInitiation - , dvtTreasuryWithdrawal - } = pp ^. ppDRepVotingThresholdsL - in case action of - NoConfidence {} -> VotingThreshold dvtCommitteeNoConfidence - UpdateCommittee {} -> - VotingThreshold $ - if isElectedCommittee - then dvtCommitteeNormal - else dvtCommitteeNoConfidence - NewConstitution {} -> VotingThreshold dvtUpdateToConstitution - HardForkInitiation {} -> VotingThreshold dvtHardForkInitiation - ParameterChange _ ppu _ -> VotingThreshold $ pparamsUpdateThreshold pp ppu - TreasuryWithdrawals {} -> VotingThreshold dvtTreasuryWithdrawal - InfoAction {} -> NoVotingThreshold - -actionPriority :: GovAction era -> Int -actionPriority NoConfidence {} = 0 -actionPriority UpdateCommittee {} = 1 -actionPriority NewConstitution {} = 2 -actionPriority HardForkInitiation {} = 3 -actionPriority ParameterChange {} = 4 -actionPriority TreasuryWithdrawals {} = 5 -actionPriority InfoAction {} = 6 - -reorderActions :: SS.StrictSeq (GovActionState era) -> SS.StrictSeq (GovActionState era) -reorderActions = SS.fromList . sortOn (actionPriority . gasAction) . toList - -newtype RatifySignal era = RatifySignal (StrictSeq (GovActionState era)) - deriving (Eq, Show, Generic) - -data RatifyEnv era = RatifyEnv - { reStakeDistr :: !(Map (Credential 'Staking (EraCrypto era)) (CompactForm Coin)) - , reStakePoolDistr :: !(PoolDistr (EraCrypto era)) - , reDRepDistr :: !(Map (DRep (EraCrypto era)) (CompactForm Coin)) - , reDRepState :: !(Map (Credential 'DRepRole (EraCrypto era)) (DRepState (EraCrypto era))) - , reCurrentEpoch :: !EpochNo - , reCommitteeState :: !(CommitteeState era) - } - deriving (Generic) - -deriving instance Show (RatifyEnv era) -deriving instance Eq (RatifyEnv era) - -instance Default (RatifyEnv era) where - def = RatifyEnv Map.empty (PoolDistr Map.empty) Map.empty Map.empty (EpochNo 0) def - -instance Typeable era => NoThunks (RatifyEnv era) where - showTypeOf _ = "RatifyEnv" - wNoThunks ctxt (RatifyEnv stake pool drep dstate ep cs) = - allNoThunks - [ noThunks ctxt stake - , noThunks ctxt pool - , noThunks ctxt drep - , noThunks ctxt dstate - , noThunks ctxt ep - , noThunks ctxt cs - ] - -instance Era era => NFData (RatifyEnv era) where - rnf (RatifyEnv stake pool drep dstate ep cs) = - stake `deepseq` - pool `deepseq` - drep `deepseq` - dstate `deepseq` - ep `deepseq` - rnf cs - -instance EraPParams era => EncCBOR (RatifyState era) where - encCBOR (RatifyState es enacted expired delayed) = - encode - ( Rec (RatifyState @era) - !> To es - !> To enacted - !> To expired - !> To delayed - ) - -instance EraPParams era => DecCBOR (RatifyState era) where - decCBOR = decode (RecD RatifyState DecShareCBOR (RatifyState era) where - decShareCBOR _ = - decode $ - RecD RatifyState - x {reDRepDistr = y}) diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/Governance/Procedures.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/Governance/Procedures.hs deleted file mode 100644 index 6871711f60b..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/Governance/Procedures.hs +++ /dev/null @@ -1,923 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE KindSignatures #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE QuantifiedConstraints #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE RoleAnnotations #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TupleSections #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} - -module Cardano.Ledger.Conway.Governance.Procedures ( - GovProcedures (..), - VotingProcedures (..), - VotingProcedure (..), - foldlVotingProcedures, - foldrVotingProcedures, - ProposalProcedure (..), - Anchor (..), - AnchorData (..), - Vote (..), - Voter (..), - Committee (..), - GovAction (..), - GovActionId (..), - GovActionIx (..), - GovPurposeId (..), - GovActionPurpose (..), - GovRelation (..), - grPParamUpdateL, - grHardForkL, - grCommitteeL, - grConstitutionL, - hoistGovRelation, - withGovActionParent, - GovActionState (..), - govActionIdToText, - indexedGovProps, - Constitution (..), - constitutionAnchorL, - constitutionScriptL, - -- Lenses - pProcDepositL, - pProcGovActionL, - pProcReturnAddrL, - pProcAnchorL, - committeeMembersL, - committeeThresholdL, - gasDRepVotesL, - gasStakePoolVotesL, - gasCommitteeVotesL, - gasExpiresAfterL, - gasProposalProcedureL, - govProceduresProposalsL, - gasActionL, - gasReturnAddrL, - gasProposedInL, - gasIdL, - gasDepositL, - gasDeposit, - gasAction, - gasReturnAddr, -) where - -import Cardano.Crypto.Hash (hashToTextAsHex) -import Cardano.Ledger.Address (RewardAccount) -import Cardano.Ledger.Alonzo.TxBody (Indexable (..)) -import Cardano.Ledger.Babbage.Core -import Cardano.Ledger.BaseTypes ( - Anchor (..), - AnchorData (..), - ProtVer, - UnitInterval, - maybeToStrictMaybe, - ) -import Cardano.Ledger.Binary ( - DecCBOR (..), - DecShareCBOR (..), - EncCBOR (..), - FromCBOR (fromCBOR), - ToCBOR (toCBOR), - decNoShareCBOR, - decodeEnumBounded, - decodeMapByKey, - decodeNullStrictMaybe, - decodeRecordNamed, - encodeEnum, - encodeListLen, - encodeNullStrictMaybe, - encodeWord8, - invalidKey, - ) -import Cardano.Ledger.Binary.Coders ( - Decode (..), - Encode (..), - decode, - decodeRecordSum, - encode, - (!>), - ( DecCBOR (GovActionId c) where - decCBOR = - decode $ - RecD GovActionId - EncCBOR (GovActionId c) where - encCBOR GovActionId {..} = - encode $ - Rec GovActionId - !> To gaidTxId - !> To gaidGovActionIx - -instance NoThunks (GovActionId c) - -instance Crypto c => NFData (GovActionId c) - -instance Crypto c => ToJSON (GovActionId c) where - toJSON = object . toGovActionIdPairs - toEncoding = pairs . mconcat . toGovActionIdPairs - -toGovActionIdPairs :: (KeyValue e a, Crypto c) => GovActionId c -> [a] -toGovActionIdPairs gaid@(GovActionId _ _) = - let GovActionId {..} = gaid - in [ "txId" .= gaidTxId - , "govActionIx" .= gaidGovActionIx - ] - -instance Crypto c => ToJSONKey (GovActionId c) where - toJSONKey = toJSONKeyText govActionIdToText - -govActionIdToText :: GovActionId c -> Text.Text -govActionIdToText (GovActionId (TxId txidHash) (GovActionIx ix)) = - hashToTextAsHex (extractHash txidHash) - <> Text.pack "#" - <> Text.pack (show ix) - -data GovActionState era = GovActionState - { gasId :: !(GovActionId (EraCrypto era)) - , gasCommitteeVotes :: !(Map (Credential 'HotCommitteeRole (EraCrypto era)) Vote) - , gasDRepVotes :: !(Map (Credential 'DRepRole (EraCrypto era)) Vote) - , gasStakePoolVotes :: !(Map (KeyHash 'StakePool (EraCrypto era)) Vote) - , gasProposalProcedure :: !(ProposalProcedure era) - , gasProposedIn :: !EpochNo - , gasExpiresAfter :: !EpochNo - } - deriving (Ord, Generic) - -gasIdL :: Lens' (GovActionState era) (GovActionId (EraCrypto era)) -gasIdL = lens gasId $ \x y -> x {gasId = y} - -gasCommitteeVotesL :: - Lens' (GovActionState era) (Map (Credential 'HotCommitteeRole (EraCrypto era)) Vote) -gasCommitteeVotesL = lens gasCommitteeVotes (\x y -> x {gasCommitteeVotes = y}) - -gasDRepVotesL :: Lens' (GovActionState era) (Map (Credential 'DRepRole (EraCrypto era)) Vote) -gasDRepVotesL = lens gasDRepVotes (\x y -> x {gasDRepVotes = y}) - -gasStakePoolVotesL :: Lens' (GovActionState era) (Map (KeyHash 'StakePool (EraCrypto era)) Vote) -gasStakePoolVotesL = lens gasStakePoolVotes (\x y -> x {gasStakePoolVotes = y}) - -gasProposalProcedureL :: Lens' (GovActionState era) (ProposalProcedure era) -gasProposalProcedureL = lens gasProposalProcedure (\x y -> x {gasProposalProcedure = y}) - -gasDepositL :: Lens' (GovActionState era) Coin -gasDepositL = gasProposalProcedureL . pProcDepositL - -gasDeposit :: GovActionState era -> Coin -gasDeposit = pProcDeposit . gasProposalProcedure - -gasReturnAddrL :: Lens' (GovActionState era) (RewardAccount (EraCrypto era)) -gasReturnAddrL = gasProposalProcedureL . pProcReturnAddrL - -gasReturnAddr :: GovActionState era -> RewardAccount (EraCrypto era) -gasReturnAddr = pProcReturnAddr . gasProposalProcedure - -gasActionL :: Lens' (GovActionState era) (GovAction era) -gasActionL = gasProposalProcedureL . pProcGovActionL - -gasAction :: GovActionState era -> GovAction era -gasAction = pProcGovAction . gasProposalProcedure - -gasProposedInL :: Lens' (GovActionState era) EpochNo -gasProposedInL = lens gasProposedIn $ \x y -> x {gasProposedIn = y} - -gasExpiresAfterL :: Lens' (GovActionState era) EpochNo -gasExpiresAfterL = lens gasExpiresAfter $ \x y -> x {gasExpiresAfter = y} - -instance EraPParams era => ToJSON (GovActionState era) where - toJSON = object . toGovActionStatePairs - toEncoding = pairs . mconcat . toGovActionStatePairs - -toGovActionStatePairs :: (KeyValue e a, EraPParams era) => GovActionState era -> [a] -toGovActionStatePairs gas@(GovActionState _ _ _ _ _ _ _) = - let GovActionState {..} = gas - in [ "actionId" .= gasId - , "committeeVotes" .= gasCommitteeVotes - , "dRepVotes" .= gasDRepVotes - , "stakePoolVotes" .= gasStakePoolVotes - , "proposalProcedure" .= gasProposalProcedure - , "proposedIn" .= gasProposedIn - , "expiresAfter" .= gasExpiresAfter - ] - -deriving instance EraPParams era => Eq (GovActionState era) - -deriving instance EraPParams era => Show (GovActionState era) - -instance EraPParams era => NoThunks (GovActionState era) - -instance EraPParams era => NFData (GovActionState era) - --- TODO: Implement Sharing: https://github.com/intersectmbo/cardano-ledger/issues/3486 -instance EraPParams era => DecShareCBOR (GovActionState era) where - decShareCBOR _ = - decode $ - RecD GovActionState - DecCBOR (GovActionState era) where - decCBOR = decNoShareCBOR - -instance EraPParams era => EncCBOR (GovActionState era) where - encCBOR GovActionState {..} = - encode $ - Rec GovActionState - !> To gasId - !> To gasCommitteeVotes - !> To gasDRepVotes - !> To gasStakePoolVotes - !> To gasProposalProcedure - !> To gasProposedIn - !> To gasExpiresAfter - --- Ref: https://gitlab.haskell.org/ghc/ghc/-/issues/14046 -instance - c ~ EraCrypto era => - OMap.HasOKey (GovActionId c) (GovActionState era) - where - okeyL = lens gasId $ \gas gi -> gas {gasId = gi} - -data Voter c - = CommitteeVoter !(Credential 'HotCommitteeRole c) - | DRepVoter !(Credential 'DRepRole c) - | StakePoolVoter !(KeyHash 'StakePool c) - deriving (Generic, Eq, Ord, Show) - -instance Crypto c => ToJSON (Voter c) - -instance Crypto c => ToJSONKey (Voter c) where - toJSONKey = toJSONKeyText $ \case - CommitteeVoter cred -> - "committee-" <> credToText cred - DRepVoter cred -> - "drep-" <> credToText cred - StakePoolVoter kh -> - "stakepool-" <> credToText (KeyHashObj kh) - -instance Crypto c => DecCBOR (Voter c) where - decCBOR = decodeRecordSum "Voter" $ \case - 0 -> (2,) . CommitteeVoter . KeyHashObj <$> decCBOR - 1 -> (2,) . CommitteeVoter . ScriptHashObj <$> decCBOR - 2 -> (2,) . DRepVoter . KeyHashObj <$> decCBOR - 3 -> (2,) . DRepVoter . ScriptHashObj <$> decCBOR - 4 -> (2,) . StakePoolVoter <$> decCBOR - 5 -> fail "Script objects are not allowed for StakePool votes" - t -> invalidKey t - -instance Crypto c => EncCBOR (Voter c) where - encCBOR = \case - CommitteeVoter (KeyHashObj keyHash) -> - encodeListLen 2 <> encodeWord8 0 <> encCBOR keyHash - CommitteeVoter (ScriptHashObj scriptHash) -> - encodeListLen 2 <> encodeWord8 1 <> encCBOR scriptHash - DRepVoter (KeyHashObj keyHash) -> - encodeListLen 2 <> encodeWord8 2 <> encCBOR keyHash - DRepVoter (ScriptHashObj scriptHash) -> - encodeListLen 2 <> encodeWord8 3 <> encCBOR scriptHash - StakePoolVoter keyHash -> - encodeListLen 2 <> encodeWord8 4 <> encCBOR keyHash - -instance NoThunks (Voter c) - -instance NFData (Voter c) - -data Vote - = VoteNo - | VoteYes - | Abstain - deriving (Ord, Generic, Eq, Show, Enum, Bounded) - -instance ToJSON Vote - -instance NoThunks Vote - -instance NFData Vote - -instance DecCBOR Vote where - decCBOR = decodeEnumBounded - -instance EncCBOR Vote where - encCBOR = encodeEnum - -newtype VotingProcedures era = VotingProcedures - { unVotingProcedures :: - Map (Voter (EraCrypto era)) (Map (GovActionId (EraCrypto era)) (VotingProcedure era)) - } - deriving stock (Generic, Eq, Show) - deriving newtype (NoThunks, EncCBOR, ToJSON) - -deriving newtype instance Era era => NFData (VotingProcedures era) - -instance Era era => DecCBOR (VotingProcedures era) where - decCBOR = - fmap VotingProcedures $ decodeMapByKey decCBOR $ \voter -> do - subMap <- decCBOR - when (null subMap) $ - fail $ - "VotingProcedures require votes, but Voter: " <> show voter <> " didn't have any" - pure subMap - {-# INLINE decCBOR #-} - -foldlVotingProcedures :: - -- | Accumulating function - (c -> Voter (EraCrypto era) -> GovActionId (EraCrypto era) -> VotingProcedure era -> c) -> - -- | Initial accumulator - c -> - -- | Procedures to fold over - VotingProcedures era -> - c -foldlVotingProcedures f initAcc = - let fVotes initVotesAcc voter = - Map.foldlWithKey' (\acc -> f acc voter) initVotesAcc - in Map.foldlWithKey' fVotes initAcc . unVotingProcedures - -foldrVotingProcedures :: - -- | Accumulating function - (Voter (EraCrypto era) -> GovActionId (EraCrypto era) -> VotingProcedure era -> c -> c) -> - -- | Initial accumulator - c -> - -- | Procedures to fold over - VotingProcedures era -> - c -foldrVotingProcedures f initAcc = - let fVotes voter votes acc = - Map.foldrWithKey' (f voter) acc votes - in Map.foldrWithKey' fVotes initAcc . unVotingProcedures - -deriving instance c ~ EraCrypto era => Indexable (Voter c) (VotingProcedures era) - -data VotingProcedure era = VotingProcedure - { vProcVote :: !Vote - , vProcAnchor :: !(StrictMaybe (Anchor (EraCrypto era))) - } - deriving (Generic, Eq, Show) - -instance NoThunks (VotingProcedure era) - -instance Crypto (EraCrypto era) => NFData (VotingProcedure era) - -instance Era era => DecCBOR (VotingProcedure era) where - decCBOR = - decode $ - RecD VotingProcedure - EncCBOR (VotingProcedure era) where - encCBOR VotingProcedure {..} = - encode $ - Rec (VotingProcedure @era) - !> To vProcVote - !> E (encodeNullStrictMaybe encCBOR) vProcAnchor - -instance EraPParams era => ToJSON (VotingProcedure era) where - toJSON = object . toVotingProcedurePairs - toEncoding = pairs . mconcat . toVotingProcedurePairs - -toVotingProcedurePairs :: (KeyValue e a, EraPParams era) => VotingProcedure era -> [a] -toVotingProcedurePairs vProc@(VotingProcedure _ _) = - let VotingProcedure {..} = vProc - in [ "anchor" .= vProcAnchor - , "decision" .= vProcVote - ] - -data GovProcedures era = GovProcedures - { gpVotingProcedures :: !(VotingProcedures era) - , gpProposalProcedures :: !(OSet.OSet (ProposalProcedure era)) - } - deriving (Eq, Generic) - -govProceduresProposalsL :: Lens' (GovProcedures era) (OSet.OSet (ProposalProcedure era)) -govProceduresProposalsL = lens gpProposalProcedures $ \x y -> x {gpProposalProcedures = y} - --- | Attaches indices to a sequence of proposal procedures. The indices grow --- from left to right. -indexedGovProps :: - Seq.Seq (ProposalProcedure era) -> - Seq.Seq (GovActionIx, ProposalProcedure era) -indexedGovProps = enumerateProps 0 - where - enumerateProps _ Seq.Empty = Seq.Empty - enumerateProps !n (x Seq.:<| xs) = (GovActionIx n, x) Seq.:<| enumerateProps (succ n) xs - -instance EraPParams era => NoThunks (GovProcedures era) - -instance EraPParams era => NFData (GovProcedures era) - -deriving instance EraPParams era => Show (GovProcedures era) - -data ProposalProcedure era = ProposalProcedure - { pProcDeposit :: !Coin - , pProcReturnAddr :: !(RewardAccount (EraCrypto era)) - , pProcGovAction :: !(GovAction era) - , pProcAnchor :: !(Anchor (EraCrypto era)) - } - deriving (Generic, Eq, Show, Ord) - -pProcDepositL :: Lens' (ProposalProcedure era) Coin -pProcDepositL = lens pProcDeposit (\p x -> p {pProcDeposit = x}) - -pProcReturnAddrL :: Lens' (ProposalProcedure era) (RewardAccount (EraCrypto era)) -pProcReturnAddrL = lens pProcReturnAddr (\p x -> p {pProcReturnAddr = x}) - -pProcGovActionL :: Lens' (ProposalProcedure era) (GovAction era) -pProcGovActionL = lens pProcGovAction $ \x y -> x {pProcGovAction = y} - -pProcAnchorL :: Lens' (ProposalProcedure era) (Anchor (EraCrypto era)) -pProcAnchorL = lens pProcAnchor $ \x y -> x {pProcAnchor = y} - -instance EraPParams era => NoThunks (ProposalProcedure era) - -instance EraPParams era => NFData (ProposalProcedure era) - -instance EraPParams era => DecCBOR (ProposalProcedure era) where - decCBOR = - decode $ - RecD ProposalProcedure - EncCBOR (ProposalProcedure era) where - encCBOR ProposalProcedure {..} = - encode $ - Rec (ProposalProcedure @era) - !> To pProcDeposit - !> To pProcReturnAddr - !> To pProcGovAction - !> To pProcAnchor - -instance EraPParams era => ToJSON (ProposalProcedure era) where - toJSON = object . toProposalProcedurePairs - toEncoding = pairs . mconcat . toProposalProcedurePairs - -toProposalProcedurePairs :: (KeyValue e a, EraPParams era) => ProposalProcedure era -> [a] -toProposalProcedurePairs proposalProcedure@(ProposalProcedure _ _ _ _) = - let ProposalProcedure {..} = proposalProcedure - in [ "deposit" .= pProcDeposit - , "returnAddr" .= pProcReturnAddr - , "govAction" .= pProcGovAction - , "anchor" .= pProcAnchor - ] - -data Committee era = Committee - { committeeMembers :: !(Map (Credential 'ColdCommitteeRole (EraCrypto era)) EpochNo) - -- ^ Committee members with epoch number when each of them expires - , committeeThreshold :: !UnitInterval - -- ^ Threshold of the committee that is necessary for a successful vote - } - deriving (Eq, Show, Generic) - -instance Era era => NoThunks (Committee era) - -instance Era era => NFData (Committee era) - -instance Default (Committee era) where - def = Committee mempty minBound - -committeeMembersL :: - Lens' (Committee era) (Map (Credential 'ColdCommitteeRole (EraCrypto era)) EpochNo) -committeeMembersL = lens committeeMembers (\c m -> c {committeeMembers = m}) - -committeeThresholdL :: Lens' (Committee era) UnitInterval -committeeThresholdL = lens committeeThreshold (\c q -> c {committeeThreshold = q}) - -instance Era era => DecCBOR (Committee era) where - decCBOR = - decode $ - RecD Committee - EncCBOR (Committee era) where - encCBOR Committee {committeeMembers, committeeThreshold} = - encode $ - Rec (Committee @era) - !> To committeeMembers - !> To committeeThreshold - -instance EraPParams era => ToJSON (Committee era) where - toJSON = object . toCommitteePairs - toEncoding = pairs . mconcat . toCommitteePairs - -instance Era era => FromJSON (Committee era) where - parseJSON = withObject "Committee" parseCommittee - where - parseCommittee o = - Committee - <$> (forceElemsToWHNF <$> o .: "members") - <*> o .: "threshold" - -toCommitteePairs :: (KeyValue e a, EraPParams era) => Committee era -> [a] -toCommitteePairs committee@(Committee _ _) = - let Committee {..} = committee - in [ "members" .= committeeMembers - , "threshold" .= committeeThreshold - ] - -data GovActionPurpose - = PParamUpdatePurpose - | HardForkPurpose - | CommitteePurpose - | ConstitutionPurpose - deriving (Eq, Show, Generic) - -newtype GovPurposeId (p :: GovActionPurpose) era = GovPurposeId - { unGovPurposeId :: GovActionId (EraCrypto era) - } - deriving (Eq, Ord, Generic) - -type role GovPurposeId nominal nominal - -deriving newtype instance - (Era era, Typeable p) => EncCBOR (GovPurposeId (p :: GovActionPurpose) era) -deriving newtype instance - (Era era, Typeable p) => DecCBOR (GovPurposeId (p :: GovActionPurpose) era) -deriving newtype instance Era era => NoThunks (GovPurposeId (p :: GovActionPurpose) era) -deriving newtype instance Era era => NFData (GovPurposeId (p :: GovActionPurpose) era) -deriving newtype instance Era era => ToJSONKey (GovPurposeId (p :: GovActionPurpose) era) -deriving newtype instance Era era => ToJSON (GovPurposeId (p :: GovActionPurpose) era) -deriving newtype instance Era era => Show (GovPurposeId (p :: GovActionPurpose) era) - --- | Abstract data type for representing relationship of governance action with the same purpose -data GovRelation (f :: Type -> Type) era = GovRelation - { grPParamUpdate :: !(f (GovPurposeId 'PParamUpdatePurpose era)) - , grHardFork :: !(f (GovPurposeId 'HardForkPurpose era)) - , grCommittee :: !(f (GovPurposeId 'CommitteePurpose era)) - , grConstitution :: !(f (GovPurposeId 'ConstitutionPurpose era)) - } - deriving (Generic) - -deriving instance - (forall p. Eq (f (GovPurposeId (p :: GovActionPurpose) era))) => - Eq (GovRelation f era) - -deriving instance - (forall p. Show (f (GovPurposeId (p :: GovActionPurpose) era))) => - Show (GovRelation f era) - -instance - (forall p. NoThunks (f (GovPurposeId (p :: GovActionPurpose) era))) => - NoThunks (GovRelation f era) - -instance - (forall p. Default (f (GovPurposeId (p :: GovActionPurpose) era))) => - Default (GovRelation f era) - -instance - (forall p. NFData (f (GovPurposeId (p :: GovActionPurpose) era))) => - NFData (GovRelation f era) - where - rnf (GovRelation a b c d) = a `deepseq` b `deepseq` c `deepseq` rnf d - -instance - (forall p. Semigroup (f (GovPurposeId (p :: GovActionPurpose) era))) => - Semigroup (GovRelation f era) - where - (<>) p1 p2 = - GovRelation - { grPParamUpdate = grPParamUpdate p1 <> grPParamUpdate p2 - , grHardFork = grHardFork p1 <> grHardFork p2 - , grCommittee = grCommittee p1 <> grCommittee p2 - , grConstitution = grConstitution p1 <> grConstitution p2 - } - -instance - (forall p. Monoid (f (GovPurposeId (p :: GovActionPurpose) era))) => - Monoid (GovRelation f era) - where - mempty = - GovRelation - { grPParamUpdate = mempty - , grHardFork = mempty - , grCommittee = mempty - , grConstitution = mempty - } - -instance - ( Era era - , Typeable f - , (forall p. Typeable p => DecCBOR (f (GovPurposeId (p :: GovActionPurpose) era))) - ) => - DecCBOR (GovRelation f era) - where - decCBOR = - decodeRecordNamed - "GovRelation" - (const 4) - (GovRelation <$> decCBOR <*> decCBOR <*> decCBOR <*> decCBOR) - -instance - ( Era era - , Typeable f - , (forall p. Typeable p => EncCBOR (f (GovPurposeId (p :: GovActionPurpose) era))) - ) => - EncCBOR (GovRelation f era) - where - encCBOR govPurpose@(GovRelation _ _ _ _) = - let GovRelation {..} = govPurpose - in encodeListLen 4 - <> encCBOR grPParamUpdate - <> encCBOR grHardFork - <> encCBOR grCommittee - <> encCBOR grConstitution - -toPrevGovActionIdsPairs :: - ( KeyValue e a - , (forall p. ToJSON (f (GovPurposeId (p :: GovActionPurpose) era))) - ) => - GovRelation f era -> - [a] -toPrevGovActionIdsPairs govPurpose@(GovRelation _ _ _ _) = - let GovRelation {..} = govPurpose - in [ "PParamUpdate" .= grPParamUpdate - , "HardFork" .= grHardFork - , "Committee" .= grCommittee - , "Constitution" .= grConstitution - ] - -instance - (Era era, (forall p. ToJSON (f (GovPurposeId (p :: GovActionPurpose) era)))) => - ToJSON (GovRelation f era) - where - toJSON = object . toPrevGovActionIdsPairs - toEncoding = pairs . mconcat . toPrevGovActionIdsPairs - -grPParamUpdateL :: Lens' (GovRelation f era) (f (GovPurposeId 'PParamUpdatePurpose era)) -grPParamUpdateL = lens grPParamUpdate $ \x y -> x {grPParamUpdate = y} - -grHardForkL :: Lens' (GovRelation f era) (f (GovPurposeId 'HardForkPurpose era)) -grHardForkL = lens grHardFork $ \x y -> x {grHardFork = y} - -grCommitteeL :: Lens' (GovRelation f era) (f (GovPurposeId 'CommitteePurpose era)) -grCommitteeL = lens grCommittee $ \x y -> x {grCommittee = y} - -grConstitutionL :: Lens' (GovRelation f era) (f (GovPurposeId 'ConstitutionPurpose era)) -grConstitutionL = lens grConstitution $ \x y -> x {grConstitution = y} - -hoistGovRelation :: (forall a. f a -> g a) -> GovRelation f era -> GovRelation g era -hoistGovRelation f gr = - GovRelation - { grPParamUpdate = f (grPParamUpdate gr) - , grHardFork = f (grHardFork gr) - , grCommittee = f (grCommittee gr) - , grConstitution = f (grConstitution gr) - } - --- | Apply a function to a GovAction that can have a parent. -withGovActionParent :: - GovActionState era -> - -- | The result to be used for governance actions that can't have a parent - a -> - -- | Function that will be applied to a lens and a parent - ( forall p. - (forall f. Lens' (GovRelation f era) (f (GovPurposeId p era))) -> - StrictMaybe (GovPurposeId p era) -> -- GovAction Parent - GovPurposeId p era -> - a - ) -> - a -withGovActionParent gas noParent f = - case gas ^. gasActionL of - ParameterChange parent _ _ -> f grPParamUpdateL parent (GovPurposeId (gas ^. gasIdL)) - HardForkInitiation parent _ -> f grHardForkL parent (GovPurposeId (gas ^. gasIdL)) - TreasuryWithdrawals _ _ -> noParent - NoConfidence parent -> f grCommitteeL parent (GovPurposeId (gas ^. gasIdL)) - UpdateCommittee parent _ _ _ -> f grCommitteeL parent (GovPurposeId (gas ^. gasIdL)) - NewConstitution parent _ -> f grConstitutionL parent (GovPurposeId (gas ^. gasIdL)) - InfoAction -> noParent - --- | Note that the previous governance action id is only optional for the very first --- governance action of the same purpose. -data GovAction era - = ParameterChange - -- | Previous governance action id of `ParameterChange` type, which corresponds to - -- `PParamUpdatePurpose`. - !(StrictMaybe (GovPurposeId 'PParamUpdatePurpose era)) - -- | Proposed changes to PParams - !(PParamsUpdate era) - -- | Policy hash protection - !(StrictMaybe (ScriptHash (EraCrypto era))) - | HardForkInitiation - -- | Previous governance action id of `HardForkInitiation` type, which corresponds - -- to `HardForkPurpose` - !(StrictMaybe (GovPurposeId 'HardForkPurpose era)) - -- | Proposed new protocol version - !ProtVer - | TreasuryWithdrawals - -- | Proposed treasury withdrawals - !(Map (RewardAccount (EraCrypto era)) Coin) - -- | Policy hash protection - !(StrictMaybe (ScriptHash (EraCrypto era))) - | NoConfidence - -- | Previous governance action id of `NoConfidence` or `UpdateCommittee` type, which - -- corresponds to `CommitteePurpose` - !(StrictMaybe (GovPurposeId 'CommitteePurpose era)) - | UpdateCommittee - -- | Previous governance action id of `UpdateCommittee` or `NoConfidence` type, which - -- corresponds to `CommitteePurpose` - !(StrictMaybe (GovPurposeId 'CommitteePurpose era)) - -- | Constitutional Committe members to be removed - !(Set (Credential 'ColdCommitteeRole (EraCrypto era))) - -- | Constitutional committee members to be added - !(Map (Credential 'ColdCommitteeRole (EraCrypto era)) EpochNo) - -- | New Threshold - !UnitInterval - | NewConstitution - -- | Previous governance action id of `NewConstitution` type, which corresponds to - -- `ConstitutionPurpose` - !(StrictMaybe (GovPurposeId 'ConstitutionPurpose era)) - !(Constitution era) - | InfoAction - deriving (Generic, Ord) - -deriving instance EraPParams era => Show (GovAction era) - -deriving instance EraPParams era => Eq (GovAction era) - -instance EraPParams era => NoThunks (GovAction era) - -instance EraPParams era => NFData (GovAction era) - -instance EraPParams era => ToJSON (GovAction era) - -instance EraPParams era => DecCBOR (GovAction era) where - decCBOR = - decode $ Summands "GovAction" $ \case - 0 -> - SumD ParameterChange - SumD HardForkInitiation SumD TreasuryWithdrawals SumD NoConfidence SumD UpdateCommittee SumD NewConstitution SumD InfoAction - k -> Invalid k - {-# INLINE decCBOR #-} - -instance EraPParams era => EncCBOR (GovAction era) where - encCBOR = - encode . \case - ParameterChange gid ppup pol -> - Sum ParameterChange 0 - !> E (encodeNullStrictMaybe encCBOR) gid - !> To ppup - !> E (encodeNullStrictMaybe encCBOR) pol - HardForkInitiation gid pv -> - Sum HardForkInitiation 1 !> E (encodeNullStrictMaybe encCBOR) gid !> To pv - TreasuryWithdrawals ws pol -> - Sum TreasuryWithdrawals 2 !> To ws !> E (encodeNullStrictMaybe encCBOR) pol - NoConfidence gid -> - Sum NoConfidence 3 !> E (encodeNullStrictMaybe encCBOR) gid - UpdateCommittee gid old new q -> - Sum UpdateCommittee 4 !> E (encodeNullStrictMaybe encCBOR) gid !> To old !> To new !> To q - NewConstitution gid c -> - Sum NewConstitution 5 !> E (encodeNullStrictMaybe encCBOR) gid !> To c - InfoAction -> - Sum InfoAction 6 - -data Constitution era = Constitution - { constitutionAnchor :: !(Anchor (EraCrypto era)) - , constitutionScript :: !(StrictMaybe (ScriptHash (EraCrypto era))) - } - deriving (Generic, Ord) - -constitutionAnchorL :: Lens' (Constitution era) (Anchor (EraCrypto era)) -constitutionAnchorL = lens constitutionAnchor (\x y -> x {constitutionAnchor = y}) - -constitutionScriptL :: Lens' (Constitution era) (StrictMaybe (ScriptHash (EraCrypto era))) -constitutionScriptL = lens constitutionScript (\x y -> x {constitutionScript = y}) - -instance Era era => ToJSON (Constitution era) where - toJSON = object . toConstitutionPairs - toEncoding = pairs . mconcat . toConstitutionPairs - -instance Era era => FromJSON (Constitution era) where - parseJSON = withObject "Constitution" $ \o -> - Constitution - <$> o .: "anchor" - <*> (maybeToStrictMaybe <$> (o .:? "script")) - -toConstitutionPairs :: (KeyValue e a, Era era) => Constitution era -> [a] -toConstitutionPairs c@(Constitution _ _) = - let Constitution {..} = c - in ["anchor" .= constitutionAnchor] - <> ["script" .= cScript | SJust cScript <- [constitutionScript]] - -deriving instance Eq (Constitution era) - -deriving instance Show (Constitution era) - -instance Era era => Default (Constitution era) where - def = Constitution def def - -instance Era era => DecCBOR (Constitution era) where - decCBOR = - decode $ - RecD Constitution - EncCBOR (Constitution era) where - encCBOR Constitution {..} = - encode $ - Rec (Constitution @era) - !> To constitutionAnchor - !> E (encodeNullStrictMaybe encCBOR) constitutionScript - -instance Era era => ToCBOR (Constitution era) where - toCBOR = toEraCBOR @era - -instance Era era => FromCBOR (Constitution era) where - fromCBOR = fromEraCBOR @era - -instance Era era => NFData (Constitution era) - -instance Era era => NoThunks (Constitution era) diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/Governance/Proposals.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/Governance/Proposals.hs deleted file mode 100644 index db4fc9886c3..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/Governance/Proposals.hs +++ /dev/null @@ -1,680 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE ImpredicativeTypes #-} -{-# LANGUAGE KindSignatures #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE QuantifiedConstraints #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE UndecidableInstances #-} - --- | This module isolates all the types and functionality around --- Governance Proposals. --- --- It is important to note that there are two sets of state that we --- maintain around proposals and their enactment. One is processed --- with transactions (@`Proposals`@) and another at the epoch boundary --- (@`PrevGovActionIds`@, @`DRepPulser`@). These two sets work together: --- the incoming proposals and votes are collected continuously in the --- state that lives with transaction processing, and at each epoch --- boundary a snapshot of this state is taken to perform pulsing --- computations on - after it has been adjusted (the proposals are --- enacted or expired) based on the result of the previous pulsing --- computaiion. --- --- Below is a typical timeline of the processing of these states. --- --- 1. Epoch n: Proposals and votes are continuously collected from --- incoming transactions into @`Proposals`@ --- --- 2. Epoch n boundary: The @`DRepPulser`@ contains all proposals and --- votes from epoch (n - 1). Its calculation is completed, ratified --- and enacted or expired. Ratification and enactment do not affect --- @`Proposals`@ directly. They only update the @`PrevGovActionIds`@ --- directly and return the sequence of enacted action-ids and the set --- of expired action-ids that inform us of the changes pending on --- @`Proposals`@. --- --- 2.1. We take this sequence of enacted action-ids and set of expired --- action-ids and apply them to the @`Proposals`@ in the ledger --- state that now includes all the newly collected proposals and --- votes from epoch n and epoch (n - 1), as this is a superset of --- the pulsed set of proposals and votes. We do not expect this --- operation to fail, since all invariants are expected to hold and --- only an implementation bug could cause this operation to fail. --- After applying this operation we expect the @`Proposals`@ to be in --- a state, where (i) all expired actions and their descendants have --- been pruned, and (ii) the sequence of enacted action-ids have been --- promoted to be the root of the respective tree and their competing --- or sibling action-ids and their descendants have been pruned from --- the @`Proposals`@ tree. --- --- 2.2. The resultant @`Proposals`@ forest has all the latest --- proposals and votes collected and with enactments and expirations --- applied to existing ones, so we take a new snapshot to perform --- pulsing computations on and start the new pulser (@`DRepPulser`@), --- before entering the new epoch to collect more proposals and votes --- in @`Proposals`@. Here we trust that the pulser accounts correctly --- for newly collected votes on proposals from previous epochs that --- haven't been ratified yet. --- --- 3. Epoch (n + 1): New proposals and votes are collected from incoming --- transactions into @`Proposals`@. --- --- 4. Epoch (n + 1) boundary: The @`DRepPulser`@ now contains all --- unratified proposals and votes from epoch n. Its calculation --- is completed, ratified and enacted or expired. This updates --- @`PrevGovActionIds`@ and gives us a new sequence of enacted --- action-ids and set of expired actions-ids to apply to the --- @`Proposals`@, which have been collecting even newer proposals and --- votes to be a superset of our set of pulsed proposals and votes. And --- so on... -module Cardano.Ledger.Conway.Governance.Proposals ( - -- * Intended interface to be used for all implementation - Proposals, - proposalsIds, - proposalsActions, - proposalsSize, - proposalsAddAction, - proposalsApplyEnactment, - proposalsAddVote, - proposalsLookupId, - proposalsActionsMap, - toPrevGovActionIds, - fromPrevGovActionIds, - - -- * To be used only for testing - proposalsRemoveWithDescendants, - TreeMaybe (..), - toGovRelationTree, - toGovRelationTreeEither, - pPropsL, - pRootsL, - pGraphL, - mkProposals, - unsafeMkProposals, - PRoot (..), - prRootL, - prChildrenL, - PEdges (..), - peChildrenL, - PGraph (..), - pGraphNodesL, -) where - -import Cardano.Ledger.BaseTypes ( - StrictMaybe (..), - isSJust, - isSNothing, - strictMaybe, - ) -import Cardano.Ledger.Binary ( - DecCBOR (..), - DecShareCBOR (..), - EncCBOR (..), - ) -import Cardano.Ledger.Conway.Governance.Procedures -import Cardano.Ledger.Core -import Control.DeepSeq (NFData) -import Control.Exception (assert) -import Control.Monad (unless) -import Data.Aeson (ToJSON (..)) -import Data.Default.Class (Default (..)) -import Data.Either (partitionEithers) -import Data.Foldable (foldl', foldrM, toList) -import qualified Data.Map as Map -import Data.Map.Strict (Map) -import qualified Data.OMap.Strict as OMap -import qualified Data.OSet.Strict as OSet -import Data.Pulse (foldlM') -import Data.Sequence (Seq) -import Data.Sequence.Strict (StrictSeq (..)) -import Data.Set (Set) -import qualified Data.Set as Set -import qualified Data.Text as T -import Data.Tree -import GHC.Generics (Generic) -import GHC.Stack -import Lens.Micro -import NoThunks.Class (NoThunks) - --- | The root of a single `Proposals` tree. `prRoot` is always expected --- to be equal to the respective `PrevGovActionId` at the end of every --- epoch boundary -data PRoot a = PRoot - { prRoot :: !(StrictMaybe a) - , prChildren :: !(Set a) - } - deriving stock (Show, Eq, Ord, Generic) - deriving anyclass (NoThunks, NFData, Default) - --- | A non-root edges in a `Proposals` tree. `peParent` is expected to be --- a `SNothing` only at the begining when no governance actions has been --- enacted yet. -data PEdges a = PEdges - { peParent :: !(StrictMaybe a) - , peChildren :: !(Set a) - } - deriving stock (Show, Eq, Ord, Generic) - deriving anyclass (NoThunks, NFData, Default) - --- | A single proposal-tree. This map represents all the action-ids that --- form a tree. -newtype PGraph a = PGraph - { unPGraph :: Map a (PEdges a) - } - deriving stock (Show, Eq, Ord, Generic) - deriving newtype (NoThunks, NFData, Default) - -prRootL :: Lens' (PRoot a) (StrictMaybe a) -prRootL = lens prRoot $ \x y -> x {prRoot = y} - -prChildrenL :: Lens' (PRoot a) (Set a) -prChildrenL = lens prChildren $ \x y -> x {prChildren = y} - -peChildrenL :: Lens' (PEdges a) (Set a) -peChildrenL = lens peChildren $ \x y -> x {peChildren = y} - -pGraphNodesL :: Lens' (PGraph a) (Map a (PEdges a)) -pGraphNodesL = lens unPGraph $ \x y -> x {unPGraph = y} - --- | Self-contained representation of all 4 proposals trees. This forest --- is made up of only action-ids for nodes - full `GovActionState`s are --- stored only once in the `OMap`. All functions in this module prefixed --- with the string @proposals-@ operate on this data-type keeping it --- consistent. --- --- NOTE: The correct way to think about this data-structure is similar --- to 4 of the following, one for each @`GovActionPurpose`@ --- --- @ --- data Tree a = Node (StrictMaybe a) [Tree a] --- @ --- --- but because this does not allow us to look-up a node's edges in --- predictable time, we use a map from nodes to their edges (parent and --- children) to capture the graph (@`PGraph`@). We also need to always --- know the roots of the 4 trees, and those we store in the @`PRoot`@ --- --- NOTE: At the end of an epoch boundary, we expect @`pRoots`@ to be the same --- as the @`PrevGovActionIds`@ from the @`EnactState`@ -data Proposals era = Proposals - { pProps :: !(OMap.OMap (GovActionId (EraCrypto era)) (GovActionState era)) - , pRoots :: !(GovRelation PRoot era) - , pGraph :: !(GovRelation PGraph era) - } - deriving stock (Show, Eq, Generic) - deriving anyclass (NoThunks, NFData, Default) - -pPropsL :: Lens' (Proposals era) (OMap.OMap (GovActionId (EraCrypto era)) (GovActionState era)) -pPropsL = lens pProps $ \x y -> x {pProps = y} - -pRootsL :: Lens' (Proposals era) (GovRelation PRoot era) -pRootsL = lens pRoots $ \x y -> x {pRoots = y} - -pGraphL :: Lens' (Proposals era) (GovRelation PGraph era) -pGraphL = lens pGraph $ \x y -> x {pGraph = y} - -instance EraPParams era => ToJSON (Proposals era) where - toJSON = toJSON . pProps - toEncoding = toEncoding . pProps - --- | Add a single @`GovActionState`@ to the @`Proposals`@ forest. --- The tree to which it is added is picked according to its --- @`GovActionPurpose`@. Returns `Nothing` when the operation cannot --- succeed. -proposalsAddAction :: - forall era. - (EraPParams era, HasCallStack) => - GovActionState era -> - Proposals era -> - Maybe (Proposals era) -proposalsAddAction gas ps = checkInvariantAfterAddition gas ps <$> runProposalsAddAction gas ps - -runProposalsAddAction :: - forall era. - GovActionState era -> - Proposals era -> - Maybe (Proposals era) -runProposalsAddAction gas ps = withGovActionParent gas (Just psWithGas) update - where - psWithGas = ps & pPropsL %~ (OMap.||> gas) - -- Append a new GovActionState to the Proposals and then add it to the set of children - -- for its parent as well as initiate an empty lineage for this new child. - update :: - (forall f. Lens' (GovRelation f era) (f (GovPurposeId p era))) -> - StrictMaybe (GovPurposeId p era) -> - GovPurposeId p era -> - Maybe (Proposals era) - update govRelationL parent newId - | parent == ps ^. pRootsL . govRelationL . prRootL = - Just $ - psWithGas - & pRootsL . govRelationL . prChildrenL %~ Set.insert newId - & pGraphL . govRelationL . pGraphNodesL %~ Map.insert newId (PEdges parent Set.empty) - | SJust parentId <- parent - , Map.member parentId $ ps ^. pGraphL . govRelationL . pGraphNodesL = - Just $ - psWithGas - & pGraphL . govRelationL . pGraphNodesL - %~ ( Map.insert newId (PEdges (SJust parentId) Set.empty) - . Map.adjust (peChildrenL %~ Set.insert newId) parentId - ) - | otherwise = Nothing - --- | Reconstruct the @`Proposals`@ forest from an @`OMap`@ of --- @`GovActionState`@s and the 4 roots (@`PrevGovActionIds`@) -mkProposals :: - (EraPParams era, MonadFail m) => - GovRelation StrictMaybe era -> - OMap.OMap (GovActionId (EraCrypto era)) (GovActionState era) -> - m (Proposals era) -mkProposals pgais omap = do - ps@(Proposals omap' _roots _hierarchy) <- - foldlM' - ( \props gas -> - case proposalsAddAction gas props of - Nothing -> fail $ "mkProposals: Could not add a proposal" <> show (gas ^. gasIdL) - Just props' -> pure props' - ) - initialProposals - omap - unless (omap == omap') $ fail "mkProposals: OMap is malformed" - pure ps - where - initialProposals = def & pRootsL .~ fromPrevGovActionIds pgais - --- | Reconstruct the @`Proposals`@ forest from an @`OMap`@ of --- @`GovActionState`@s and the 4 roots (@`PrevGovActionIds`@). --- This function can fail and may return a malformed `Proposals` --- if not given correct inputs. --- --- WARNING: Should only be used for testing! -unsafeMkProposals :: - HasCallStack => - GovRelation StrictMaybe era -> - OMap.OMap (GovActionId (EraCrypto era)) (GovActionState era) -> - Proposals era -unsafeMkProposals pgais omap = foldl' unsafeProposalsAddAction initialProposals omap - where - initialProposals = def & pRootsL .~ fromPrevGovActionIds pgais - unsafeProposalsAddAction ps gas = - case runProposalsAddAction gas ps of - Just p -> p - Nothing -> error $ "unsafeMkProposals: runProposalsAddAction failed for " ++ show (gas ^. gasIdL) - -instance EraPParams era => EncCBOR (Proposals era) where - encCBOR ps = - let roots = toPrevGovActionIds $ ps ^. pRootsL - in encCBOR (roots, ps ^. pPropsL) - -instance EraPParams era => DecCBOR (Proposals era) where - decCBOR = decCBOR >>= uncurry mkProposals - --- TODO: Implement Sharing: https://github.com/intersectmbo/cardano-ledger/issues/3486 -instance EraPParams era => DecShareCBOR (Proposals era) where - decShareCBOR _ = decCBOR - --- | Add a vote to an existing `GovActionState`. This is a no-op if the --- provided `GovActionId` does not already exist -proposalsAddVote :: - Voter (EraCrypto era) -> - Vote -> - GovActionId (EraCrypto era) -> - Proposals era -> - Proposals era -proposalsAddVote voter vote gai (Proposals omap roots hierarchy) = - Proposals (OMap.adjust updateVote gai omap) roots hierarchy - where - insertVote :: - Ord k => - Lens' (GovActionState era) (Map k Vote) -> - k -> - GovActionState era -> - GovActionState era - insertVote l k = l %~ Map.insert k vote - updateVote = case voter of - DRepVoter c -> insertVote gasDRepVotesL c - StakePoolVoter kh -> insertVote gasStakePoolVotesL kh - CommitteeVoter c -> insertVote gasCommitteeVotesL c - --- | For each action-id in the given set. attempt to remove it from --- the @`Proposals`@ forest based on its purpose. Although the removal --- operations are applied to parts of the forest without any checks, we --- cover them in property-tests -proposalsRemoveIds :: - forall era. - EraPParams era => - Set (GovActionId (EraCrypto era)) -> - Proposals era -> - (Proposals era, Map.Map (GovActionId (EraCrypto era)) (GovActionState era)) -proposalsRemoveIds gais ps = - let (retainedOMap, removedFromOMap) = OMap.extractKeys gais $ ps ^. pPropsL - (roots, hierarchy) = foldl' removeEach (ps ^. pRootsL, ps ^. pGraphL) removedFromOMap - in (checkInvariantAfterDeletion gais ps $ Proposals retainedOMap roots hierarchy, removedFromOMap) - where - removeEach accum@(!roots, !graph) gas = - withGovActionParent gas accum $ \govRelationL parent gpi -> - if parent == roots ^. govRelationL . prRootL - then - ( roots & govRelationL . prChildrenL %~ Set.delete gpi - , graph & govRelationL . pGraphNodesL %~ Map.delete gpi - ) - else - ( roots - , graph - & govRelationL . pGraphNodesL %~ Map.delete gpi - & case parent of - SNothing -> assert False id - SJust parentGpi -> - govRelationL . pGraphNodesL %~ Map.adjust (peChildrenL %~ Set.delete gpi) parentGpi - ) - --- | Remove the set of given action-ids with their descendants from the --- @`Proposals`@ forest. Cannot be used for removing enacted GovActionIds (i.e. roots) -proposalsRemoveWithDescendants :: - EraPParams era => - Set (GovActionId (EraCrypto era)) -> - Proposals era -> - (Proposals era, Map (GovActionId (EraCrypto era)) (GovActionState era)) -proposalsRemoveWithDescendants gais ps@(Proposals omap _roots graph) = - proposalsRemoveIds (gais <> foldMap getAllDescendants gais) ps - where - -- Recursively aet all of the descendants for those actions that have lineage - getAllDescendants gai = - case OMap.lookup gai omap of - Nothing -> assert False mempty - Just gas -> withGovActionParent gas mempty $ \govRelationL _ -> - let go acc gpi = - case Map.lookup gpi $ graph ^. govRelationL . pGraphNodesL of - Nothing -> assert False acc - Just (PEdges _parent children) -> - foldl' go (Set.map unGovPurposeId children <> acc) children - in go mempty - --- | For use in the @`EPOCH`@ rule. Apply the result of --- @`extractDRepPulsingState`@ to the @`Proposals`@ forest, so that: --- i. all the expired action-ids and their descendants are removed, --- and --- ii. the sequence of enacted action-ids is promoted to the root, --- removing competing/sibling action-ids and their descendants at each --- step -proposalsApplyEnactment :: - forall era. - EraPParams era => - Seq (GovActionState era) -> - Set (GovActionId (EraCrypto era)) -> - Proposals era -> - ( Proposals era - , Map (GovActionId (EraCrypto era)) (GovActionState era) -- Removed due to enactment - , Map (GovActionId (EraCrypto era)) (GovActionState era) -- Removed due to expiry - ) -proposalsApplyEnactment enactedGass expiredGais props = - let (unexpiredProposals, expiredRemoved) = proposalsRemoveWithDescendants expiredGais props - (enactedProposalsState, enactedRemoved) = - foldl' enact (unexpiredProposals, Map.empty) enactedGass - in (enactedProposalsState, enactedRemoved, expiredRemoved) - where - enact (!ps, !removed) gas = withGovActionParent gas enactWithoutRoot enactFromRoot - where - gai = gas ^. gasIdL - enactWithoutRoot :: - ( Proposals era - , Map (GovActionId (EraCrypto era)) (GovActionState era) - ) - enactWithoutRoot = - let (newOMap, removedActions) = OMap.extractKeys (Set.singleton gai) $ ps ^. pPropsL - in assert -- we want an AssertionFailure here for exhaustive property-testing - (not $ Map.null removedActions) - ( ps & pPropsL .~ newOMap - , removed `Map.union` removedActions - ) - enactFromRoot :: - (forall f. Lens' (GovRelation f era) (f (GovPurposeId p era))) -> - StrictMaybe (GovPurposeId p era) -> - GovPurposeId p era -> - ( Proposals era - , Map (GovActionId (EraCrypto era)) (GovActionState era) - ) - enactFromRoot govRelationL parent gpi = - let siblings = - Set.delete gai $ - Set.map unGovPurposeId (ps ^. pRootsL . govRelationL . prChildrenL) - newRootChildren = - case Map.lookup gpi $ ps ^. pGraphL . govRelationL . pGraphNodesL of - Nothing -> assert False Set.empty - Just pe -> peChildren pe - (withoutSiblings, removedActions) = proposalsRemoveWithDescendants siblings ps - newGraph = Map.delete gpi $ withoutSiblings ^. pGraphL . govRelationL . pGraphNodesL - (newOMap, enactedAction) = - OMap.extractKeys (Set.singleton gai) $ withoutSiblings ^. pPropsL - newProposals = - withoutSiblings - & pRootsL . govRelationL . prRootL .~ SJust gpi -- Set the new root - & pRootsL . govRelationL . prChildrenL .~ newRootChildren - & pGraphL . govRelationL . pGraphNodesL .~ newGraph - & pPropsL .~ newOMap - in assert - (ps ^. pRootsL . govRelationL . prRootL == parent) - ( checkInvariantAfterDeletion (Set.singleton gai) withoutSiblings newProposals - , removed `Map.union` removedActions `Map.union` enactedAction - ) - --- | Get the sequence of `GovActionState`s -proposalsActions :: - Proposals era -> - StrictSeq (GovActionState era) -proposalsActions (Proposals omap _ _) = OMap.toStrictSeq omap - --- | Get the sequence of `GovActionId`s -proposalsIds :: - Proposals era -> - StrictSeq (GovActionId (EraCrypto era)) -proposalsIds (Proposals omap _ _) = OMap.toStrictSeqOKeys omap - --- | Get the unordered map of `GovActionId`s and `GovActionState`s -proposalsActionsMap :: - Proposals era -> - Map (GovActionId (EraCrypto era)) (GovActionState era) -proposalsActionsMap (Proposals omap _ _) = OMap.toMap omap - -proposalsSize :: Proposals era -> Int -proposalsSize (Proposals omap _ _) = OMap.size omap - -proposalsLookupId :: - GovActionId (EraCrypto era) -> - Proposals era -> - Maybe (GovActionState era) -proposalsLookupId gai (Proposals omap _ _) = OMap.lookup gai omap - -toPrevGovActionIds :: GovRelation PRoot era -> GovRelation StrictMaybe era -toPrevGovActionIds = hoistGovRelation prRoot - -fromPrevGovActionIds :: GovRelation StrictMaybe era -> GovRelation PRoot era -fromPrevGovActionIds = hoistGovRelation (`PRoot` Set.empty) - ---------------------- --- Debugging tools -- ---------------------- - --- | Wraper type, which serves as a composition of @`Tree` . `StrictMaybe`@ --- --- Also its Show instance will print a nice tree structure. -data TreeMaybe a = TreeMaybe {unTreeMaybe :: Tree (StrictMaybe a)} - deriving (Eq) - -instance Show (TreeMaybe (GovPurposeId p era)) where - show = ("\n" <>) . drawTree . fmap showGovPurposeId . unTreeMaybe - where - showGovPurposeId = \case - SNothing -> "x" - SJust (GovPurposeId govActionId) -> T.unpack (govActionIdToText govActionId) - --- | Partial version of `toGovRelationTreeEither` -toGovRelationTree :: (Era era, HasCallStack) => Proposals era -> GovRelation TreeMaybe era -toGovRelationTree = either error id . toGovRelationTreeEither - --- | Convert `Proposals` into a valid `Tree` -toGovRelationTreeEither :: Era era => Proposals era -> Either String (GovRelation TreeMaybe era) -toGovRelationTreeEither Proposals {pProps, pRoots, pGraph} = do - unless (OMap.invariantHolds' pProps) $ Left "OMap invariant is violated" - - let propsMap = OMap.toMap pProps - childParentRelation = toChildParentRelation propsMap - - (grPParamUpdate, nodesPParamUpdate) <- - toPTree (grPParamUpdate childParentRelation) (grPParamUpdate pRoots) (grPParamUpdate pGraph) - (grHardFork, nodesHardFork) <- - toPTree (grHardFork childParentRelation) (grHardFork pRoots) (grHardFork pGraph) - (grCommittee, nodesCommittee) <- - toPTree (grCommittee childParentRelation) (grCommittee pRoots) (grCommittee pGraph) - (grConstitution, nodesConstitution) <- - toPTree (grConstitution childParentRelation) (grConstitution pRoots) (grConstitution pGraph) - - let allNodes = - Set.unions - [ Set.map unGovPurposeId nodesPParamUpdate - , Set.map unGovPurposeId nodesHardFork - , Set.map unGovPurposeId nodesCommittee - , Set.map unGovPurposeId nodesConstitution - ] - guardUnknown = do - let unknown = allNodes Set.\\ Map.keysSet propsMap - unless (null unknown) $ do - Left $ "Discovered unrecognized nodes: " ++ show unknown - guardUnique = do - let sumSizes = - sum - [ Set.size nodesPParamUpdate - , Set.size nodesHardFork - , Set.size nodesCommittee - , Set.size nodesConstitution - ] - unless (Set.size allNodes == sumSizes) $ do - Left $ - "Duplicate govActionIds found between different purposes: " - ++ show (sumSizes - Set.size allNodes) - guardUnknown - guardUnique - pure GovRelation {grPParamUpdate, grHardFork, grCommittee, grConstitution} - --- | Mapping from a child to a parent that was specified in the GovAction. -newtype ChildParent a = ChildParent (Map a (StrictMaybe a)) - deriving stock (Show) - deriving newtype (Eq, Semigroup, Monoid) - -toChildParentRelation :: - Foldable f => - f (GovActionState era) -> - GovRelation ChildParent era -toChildParentRelation = foldMap toChildParent - where - toChildParent gas = - withGovActionParent gas mempty $ \govRelationL parent _ -> - mempty & govRelationL .~ ChildParent (Map.singleton (GovPurposeId (gas ^. gasIdL)) parent) - -toPTree :: - (Ord a, Show a) => - ChildParent a -> - PRoot a -> - PGraph a -> - Either String (TreeMaybe a, Set a) -toPTree (ChildParent childParent) root (PGraph fullGraph) = do - (_, tree) <- nodeToTree (prRoot root) (prChildren root) fullGraph - nodesList <- - case partitionEithers $ map (strictMaybe (Left ()) Right) $ toList tree of - (roots, nodes) - | isSNothing (prRoot root) && null roots -> - Left $ "Expected an empty root, but it was not found in the Tree" - | isSJust (prRoot root) && not (null roots) -> - Left $ "Expected a full root, but got " ++ show (length roots) ++ " Nothing cases" - | otherwise -> pure nodes - let nodes = Set.fromList nodesList - nodesWithoutRoot = strictMaybe nodes (`Set.delete` nodes) (prRoot root) - unreachable = Map.withoutKeys fullGraph nodesWithoutRoot - unless (Set.size nodes == length nodesList) $ do - Left $ "Detected duplicate nodes: " ++ show (fst $ OSet.fromFoldableDuplicates nodesList) - unless (Map.null unreachable) $ do - Left $ "Discovered unreachable nodes in the graph: " ++ show unreachable - pure (TreeMaybe tree, nodesWithoutRoot) - where - nodeToTree node children graph = do - (graph', subTrees) <- foldrM (childToTree node) (graph, []) children - pure (graph', Node node subTrees) - childToTree parent child (!graph, !acc) = - case Map.lookup child graph of - Nothing -> Left $ "Cannot find the node: " ++ show child - Just edges -> do - unless (peParent edges == parent) $ - Left $ - "Incorrect parent: " - ++ show (peParent edges) - ++ " listed for the node: " - ++ show child - case Map.lookup child childParent of - Nothing -> Left $ "Node is not found in the governance states map: " ++ show child - Just trueParent - | trueParent /= parent -> - Left $ - "Parent of " - ++ show child - ++ " specified in the GovAction: " - ++ show trueParent - ++ " does not match the one on the Graph: " - ++ show parent - | otherwise -> pure () - (graph', !subTree) <- - -- Deleting the child from the graph ensures that every node except the root - -- appears exactly once in the graph. - nodeToTree (SJust child) (peChildren edges) (Map.delete child graph) - pure (graph', subTree : acc) - --- | Verify invariant after addition of GovActionState to Proposals. Will print the state --- before the invariant is violated. --- --- /Note/ - runs only when assertions are turned on. -checkInvariantAfterAddition :: - (EraPParams era, HasCallStack) => - -- | GovAction that was added - GovActionState era -> - -- | Proposals before adding the GovActionState - Proposals era -> - -- | Proposals after adding the GovActionState - Proposals era -> - Proposals era -checkInvariantAfterAddition gas psPre ps = assert check ps - where - check = - case toGovRelationTreeEither ps of - Left err -> error $ "Addition error: " ++ err ++ "\n" ++ show gas ++ "\n" ++ show psPre - Right _ -> True - --- | Verify invariant after deletion of GovActionState to Proposals. Will print the state --- before the invariant is violated. --- --- /Note/ - runs only when assertions are turned on. -checkInvariantAfterDeletion :: - (EraPParams era, HasCallStack) => - -- | GovAction that was added - Set (GovActionId (EraCrypto era)) -> - -- | Proposals before adding the GovActionState - Proposals era -> - -- | Proposals after adding the GovActionState - Proposals era -> - Proposals era -checkInvariantAfterDeletion gais psPre ps = assert check ps - where - check = - case toGovRelationTreeEither ps of - Left err -> error $ "Deletion error: " ++ err ++ "\n" ++ show gais ++ "\n" ++ show psPre - Right _ -> True diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/PParams.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/PParams.hs deleted file mode 100644 index 8c403758517..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/PParams.hs +++ /dev/null @@ -1,1361 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE InstanceSigs #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} -{-# OPTIONS_GHC -Wno-orphans #-} - --- | This module contains the type of protocol parameters and EraPParams instance -module Cardano.Ledger.Conway.PParams ( - ConwayEraPParams (..), - ppPoolVotingThresholdsL, - ppDRepVotingThresholdsL, - ppCommitteeMinSizeL, - ppCommitteeMaxTermLengthL, - ppGovActionLifetimeL, - ppGovActionDepositL, - ppDRepDepositL, - ppDRepActivityL, - ppMinFeeRefScriptCostPerByteL, - ppuPoolVotingThresholdsL, - ppuDRepVotingThresholdsL, - ppuCommitteeMinSizeL, - ppuCommitteeMaxTermLengthL, - ppuGovActionLifetimeL, - ppuGovActionDepositL, - ppuDRepDepositL, - ppuDRepActivityL, - ppuMinFeeRefScriptCostPerByteL, - PoolVotingThresholds (..), - pvtCommitteeNoConfidenceL, - pvtCommitteeNormalL, - pvtPPSecurityGroupL, - DRepVotingThresholds (..), - dvtCommitteeNoConfidenceL, - dvtCommitteeNormalL, - dvtPPNetworkGroupL, - dvtPPGovGroupL, - dvtPPTechnicalGroupL, - dvtPPEconomicGroupL, - dvtUpdateToConstitutionL, - ConwayPParams (..), - getLanguageView, - LangDepView (..), - encodeLangViews, - upgradeConwayPParams, - UpgradeConwayPParams (..), - toUpgradeConwayPParamsUpdatePairs, - THKD (..), - DRepGroup (..), - PPGroups (..), - StakePoolGroup (..), - conwayModifiedPPGroups, - pvtHardForkInitiationL, - pvtMotionNoConfidenceL, -) -where - -import Cardano.Ledger.Alonzo.PParams (AlonzoEraPParams (..), OrdExUnits (..)) -import Cardano.Ledger.Alonzo.Scripts ( - CostModels, - ExUnits (..), - Prices (Prices), - emptyCostModels, - updateCostModels, - ) -import Cardano.Ledger.Babbage (BabbageEra) -import Cardano.Ledger.Babbage.Core -import Cardano.Ledger.Babbage.PParams -import Cardano.Ledger.BaseTypes ( - EpochInterval (..), - NonNegativeInterval, - ProtVer (ProtVer), - UnitInterval, - ) -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - Encoding, - FromCBOR (..), - ToCBOR (..), - encodeListLen, - ) -import Cardano.Ledger.Binary.Coders -import Cardano.Ledger.Coin (Coin (Coin)) -import Cardano.Ledger.Conway.Era (ConwayEra) -import Cardano.Ledger.Core (EraPParams (..)) -import Cardano.Ledger.Crypto -import Cardano.Ledger.HKD (HKD, HKDFunctor (..), HKDNoUpdate, NoUpdate (..)) -import Cardano.Ledger.Plutus.CostModels (decodeValidAndUnknownCostModels) -import Cardano.Ledger.Val (Val (..)) -import Control.DeepSeq (NFData (..), rwhnf) -import Data.Aeson hiding (Encoding, Value, decode, encode) -import qualified Data.Aeson as Aeson -import Data.Default.Class (Default (def)) -import Data.Functor.Identity (Identity) -import Data.Maybe.Strict (StrictMaybe (..), isSNothing) -import Data.Proxy -import Data.Set (Set) -import qualified Data.Set as Set -import Data.Typeable -import Data.Word (Word16, Word32) -import GHC.Generics (Generic) -import Lens.Micro -import NoThunks.Class (NoThunks (..)) -import Numeric.Natural (Natural) - -class BabbageEraPParams era => ConwayEraPParams era where - modifiedPPGroups :: PParamsUpdate era -> Set PPGroups - ppuWellFormed :: PParamsUpdate era -> Bool - - hkdPoolVotingThresholdsL :: HKDFunctor f => Lens' (PParamsHKD f era) (HKD f PoolVotingThresholds) - hkdDRepVotingThresholdsL :: HKDFunctor f => Lens' (PParamsHKD f era) (HKD f DRepVotingThresholds) - hkdCommitteeMinSizeL :: HKDFunctor f => Lens' (PParamsHKD f era) (HKD f Natural) - hkdCommitteeMaxTermLengthL :: HKDFunctor f => Lens' (PParamsHKD f era) (HKD f EpochInterval) - hkdGovActionLifetimeL :: HKDFunctor f => Lens' (PParamsHKD f era) (HKD f EpochInterval) - hkdGovActionDepositL :: HKDFunctor f => Lens' (PParamsHKD f era) (HKD f Coin) - hkdDRepDepositL :: HKDFunctor f => Lens' (PParamsHKD f era) (HKD f Coin) - hkdDRepActivityL :: HKDFunctor f => Lens' (PParamsHKD f era) (HKD f EpochInterval) - hkdMinFeeRefScriptCostPerByteL :: - HKDFunctor f => Lens' (PParamsHKD f era) (HKD f NonNegativeInterval) - -ppPoolVotingThresholdsL :: - forall era. ConwayEraPParams era => Lens' (PParams era) PoolVotingThresholds -ppPoolVotingThresholdsL = ppLens . hkdPoolVotingThresholdsL @era @Identity - -ppDRepVotingThresholdsL :: - forall era. ConwayEraPParams era => Lens' (PParams era) DRepVotingThresholds -ppDRepVotingThresholdsL = ppLens . hkdDRepVotingThresholdsL @era @Identity - -ppCommitteeMinSizeL :: forall era. ConwayEraPParams era => Lens' (PParams era) Natural -ppCommitteeMinSizeL = ppLens . hkdCommitteeMinSizeL @era @Identity - -ppCommitteeMaxTermLengthL :: forall era. ConwayEraPParams era => Lens' (PParams era) EpochInterval -ppCommitteeMaxTermLengthL = ppLens . hkdCommitteeMaxTermLengthL @era @Identity - -ppGovActionLifetimeL :: forall era. ConwayEraPParams era => Lens' (PParams era) EpochInterval -ppGovActionLifetimeL = ppLens . hkdGovActionLifetimeL @era @Identity - -ppGovActionDepositL :: forall era. ConwayEraPParams era => Lens' (PParams era) Coin -ppGovActionDepositL = ppLens . hkdGovActionDepositL @era @Identity - -ppDRepDepositL :: forall era. ConwayEraPParams era => Lens' (PParams era) Coin -ppDRepDepositL = ppLens . hkdDRepDepositL @era @Identity - -ppDRepActivityL :: forall era. ConwayEraPParams era => Lens' (PParams era) EpochInterval -ppDRepActivityL = ppLens . hkdDRepActivityL @era @Identity - -ppMinFeeRefScriptCostPerByteL :: - forall era. ConwayEraPParams era => Lens' (PParams era) NonNegativeInterval -ppMinFeeRefScriptCostPerByteL = ppLens . hkdMinFeeRefScriptCostPerByteL @era @Identity - -ppuPoolVotingThresholdsL :: - forall era. ConwayEraPParams era => Lens' (PParamsUpdate era) (StrictMaybe PoolVotingThresholds) -ppuPoolVotingThresholdsL = ppuLens . hkdPoolVotingThresholdsL @era @StrictMaybe - -ppuDRepVotingThresholdsL :: - forall era. ConwayEraPParams era => Lens' (PParamsUpdate era) (StrictMaybe DRepVotingThresholds) -ppuDRepVotingThresholdsL = ppuLens . hkdDRepVotingThresholdsL @era @StrictMaybe - -ppuCommitteeMinSizeL :: - forall era. ConwayEraPParams era => Lens' (PParamsUpdate era) (StrictMaybe Natural) -ppuCommitteeMinSizeL = ppuLens . hkdCommitteeMinSizeL @era @StrictMaybe - -ppuCommitteeMaxTermLengthL :: - forall era. ConwayEraPParams era => Lens' (PParamsUpdate era) (StrictMaybe EpochInterval) -ppuCommitteeMaxTermLengthL = ppuLens . hkdCommitteeMaxTermLengthL @era @StrictMaybe - -ppuGovActionLifetimeL :: - forall era. ConwayEraPParams era => Lens' (PParamsUpdate era) (StrictMaybe EpochInterval) -ppuGovActionLifetimeL = ppuLens . hkdGovActionLifetimeL @era @StrictMaybe - -ppuGovActionDepositL :: - forall era. ConwayEraPParams era => Lens' (PParamsUpdate era) (StrictMaybe Coin) -ppuGovActionDepositL = ppuLens . hkdGovActionDepositL @era @StrictMaybe - -ppuDRepDepositL :: - forall era. ConwayEraPParams era => Lens' (PParamsUpdate era) (StrictMaybe Coin) -ppuDRepDepositL = ppuLens . hkdDRepDepositL @era @StrictMaybe - -ppuDRepActivityL :: - forall era. ConwayEraPParams era => Lens' (PParamsUpdate era) (StrictMaybe EpochInterval) -ppuDRepActivityL = ppuLens . hkdDRepActivityL @era @StrictMaybe - -ppuMinFeeRefScriptCostPerByteL :: - forall era. ConwayEraPParams era => Lens' (PParamsUpdate era) (StrictMaybe NonNegativeInterval) -ppuMinFeeRefScriptCostPerByteL = ppuLens . hkdMinFeeRefScriptCostPerByteL @era @StrictMaybe - -data PoolVotingThresholds = PoolVotingThresholds - { pvtMotionNoConfidence :: !UnitInterval - , pvtCommitteeNormal :: !UnitInterval - , pvtCommitteeNoConfidence :: !UnitInterval - , pvtHardForkInitiation :: !UnitInterval - , pvtPPSecurityGroup :: !UnitInterval - } - deriving (Eq, Ord, Show, Generic) - -pvtMotionNoConfidenceL :: Lens' PoolVotingThresholds UnitInterval -pvtMotionNoConfidenceL = lens pvtMotionNoConfidence (\x y -> x {pvtMotionNoConfidence = y}) - -pvtCommitteeNormalL :: Lens' PoolVotingThresholds UnitInterval -pvtCommitteeNormalL = lens pvtCommitteeNormal (\x y -> x {pvtCommitteeNormal = y}) - -pvtCommitteeNoConfidenceL :: Lens' PoolVotingThresholds UnitInterval -pvtCommitteeNoConfidenceL = lens pvtCommitteeNoConfidence (\x y -> x {pvtCommitteeNoConfidence = y}) - -pvtPPSecurityGroupL :: Lens' PoolVotingThresholds UnitInterval -pvtPPSecurityGroupL = lens pvtPPSecurityGroup (\x y -> x {pvtPPSecurityGroup = y}) - -pvtHardForkInitiationL :: Lens' PoolVotingThresholds UnitInterval -pvtHardForkInitiationL = lens pvtHardForkInitiation (\x y -> x {pvtHardForkInitiation = y}) - -instance NoThunks PoolVotingThresholds - -instance NFData PoolVotingThresholds where - rnf = rwhnf - -instance Default PoolVotingThresholds where - def = PoolVotingThresholds def def def def def - -instance ToJSON PoolVotingThresholds where - toJSON pvt@(PoolVotingThresholds _ _ _ _ _) = - let PoolVotingThresholds {..} = pvt - in object - [ ("motionNoConfidence", toJSON pvtMotionNoConfidence) - , ("committeeNormal", toJSON pvtCommitteeNormal) - , ("committeeNoConfidence", toJSON pvtCommitteeNoConfidence) - , ("hardForkInitiation", toJSON pvtHardForkInitiation) - , ("ppSecurityGroup", toJSON pvtPPSecurityGroup) - ] - -instance FromJSON PoolVotingThresholds where - parseJSON = - withObject "PoolVotingThresholds" $ \o -> - PoolVotingThresholds - <$> o .: "motionNoConfidence" - <*> o .: "committeeNormal" - <*> o .: "committeeNoConfidence" - <*> o .: "hardForkInitiation" - <*> o .: "ppSecurityGroup" - -instance EncCBOR PoolVotingThresholds where - encCBOR PoolVotingThresholds {..} = - encodeListLen 5 - <> encCBOR pvtMotionNoConfidence - <> encCBOR pvtCommitteeNormal - <> encCBOR pvtCommitteeNoConfidence - <> encCBOR pvtHardForkInitiation - <> encCBOR pvtPPSecurityGroup - -instance DecCBOR PoolVotingThresholds where - decCBOR = - decodeRecordNamed "PoolVotingThresholds" (const 5) $ do - pvtMotionNoConfidence <- decCBOR - pvtCommitteeNormal <- decCBOR - pvtCommitteeNoConfidence <- decCBOR - pvtHardForkInitiation <- decCBOR - pvtPPSecurityGroup <- decCBOR - pure $ PoolVotingThresholds {..} - -data DRepVotingThresholds = DRepVotingThresholds - { dvtMotionNoConfidence :: !UnitInterval - , dvtCommitteeNormal :: !UnitInterval - , dvtCommitteeNoConfidence :: !UnitInterval - , dvtUpdateToConstitution :: !UnitInterval - , dvtHardForkInitiation :: !UnitInterval - , dvtPPNetworkGroup :: !UnitInterval - , dvtPPEconomicGroup :: !UnitInterval - , dvtPPTechnicalGroup :: !UnitInterval - , dvtPPGovGroup :: !UnitInterval - , dvtTreasuryWithdrawal :: !UnitInterval - } - deriving (Eq, Ord, Show, Generic) - -instance NoThunks DRepVotingThresholds - -instance NFData DRepVotingThresholds where - rnf = rwhnf - -instance Default DRepVotingThresholds where - def = DRepVotingThresholds def def def def def def def def def def - -instance ToJSON DRepVotingThresholds where - toJSON pvt@(DRepVotingThresholds _ _ _ _ _ _ _ _ _ _) = - let DRepVotingThresholds {..} = pvt - in object - [ ("motionNoConfidence", toJSON dvtMotionNoConfidence) - , ("committeeNormal", toJSON dvtCommitteeNormal) - , ("committeeNoConfidence", toJSON dvtCommitteeNoConfidence) - , ("updateToConstitution", toJSON dvtUpdateToConstitution) - , ("hardForkInitiation", toJSON dvtHardForkInitiation) - , ("ppNetworkGroup", toJSON dvtPPNetworkGroup) - , ("ppEconomicGroup", toJSON dvtPPEconomicGroup) - , ("ppTechnicalGroup", toJSON dvtPPTechnicalGroup) - , ("ppGovGroup", toJSON dvtPPGovGroup) - , ("treasuryWithdrawal", toJSON dvtTreasuryWithdrawal) - ] - -instance FromJSON DRepVotingThresholds where - parseJSON = - withObject "DRepVotingThresholds" $ \o -> - DRepVotingThresholds - <$> o .: "motionNoConfidence" - <*> o .: "committeeNormal" - <*> o .: "committeeNoConfidence" - <*> o .: "updateToConstitution" - <*> o .: "hardForkInitiation" - <*> o .: "ppNetworkGroup" - <*> o .: "ppEconomicGroup" - <*> o .: "ppTechnicalGroup" - <*> o .: "ppGovGroup" - <*> o .: "treasuryWithdrawal" - -dvtPPNetworkGroupL :: Lens' DRepVotingThresholds UnitInterval -dvtPPNetworkGroupL = lens dvtPPNetworkGroup (\x y -> x {dvtPPNetworkGroup = y}) - -dvtPPEconomicGroupL :: Lens' DRepVotingThresholds UnitInterval -dvtPPEconomicGroupL = lens dvtPPEconomicGroup (\x y -> x {dvtPPEconomicGroup = y}) - -dvtPPTechnicalGroupL :: Lens' DRepVotingThresholds UnitInterval -dvtPPTechnicalGroupL = lens dvtPPTechnicalGroup (\x y -> x {dvtPPTechnicalGroup = y}) - -dvtPPGovGroupL :: Lens' DRepVotingThresholds UnitInterval -dvtPPGovGroupL = lens dvtPPGovGroup (\x y -> x {dvtPPGovGroup = y}) - -dvtUpdateToConstitutionL :: Lens' DRepVotingThresholds UnitInterval -dvtUpdateToConstitutionL = lens dvtUpdateToConstitution (\x y -> x {dvtUpdateToConstitution = y}) - -dvtCommitteeNoConfidenceL :: Lens' DRepVotingThresholds UnitInterval -dvtCommitteeNoConfidenceL = lens dvtCommitteeNoConfidence (\x y -> x {dvtCommitteeNoConfidence = y}) - -dvtCommitteeNormalL :: Lens' DRepVotingThresholds UnitInterval -dvtCommitteeNormalL = lens dvtCommitteeNormal (\x y -> x {dvtCommitteeNormal = y}) - -instance EncCBOR DRepVotingThresholds where - encCBOR DRepVotingThresholds {..} = - encodeListLen 10 - <> encCBOR dvtMotionNoConfidence - <> encCBOR dvtCommitteeNormal - <> encCBOR dvtCommitteeNoConfidence - <> encCBOR dvtUpdateToConstitution - <> encCBOR dvtHardForkInitiation - <> encCBOR dvtPPNetworkGroup - <> encCBOR dvtPPEconomicGroup - <> encCBOR dvtPPTechnicalGroup - <> encCBOR dvtPPGovGroup - <> encCBOR dvtTreasuryWithdrawal - -instance DecCBOR DRepVotingThresholds where - decCBOR = - decodeRecordNamed "DRepVotingThresholds" (const 10) $ do - dvtMotionNoConfidence <- decCBOR - dvtCommitteeNormal <- decCBOR - dvtCommitteeNoConfidence <- decCBOR - dvtUpdateToConstitution <- decCBOR - dvtHardForkInitiation <- decCBOR - dvtPPNetworkGroup <- decCBOR - dvtPPEconomicGroup <- decCBOR - dvtPPTechnicalGroup <- decCBOR - dvtPPGovGroup <- decCBOR - dvtTreasuryWithdrawal <- decCBOR - pure $ DRepVotingThresholds {..} - -data PPGroups - = PPGroups DRepGroup StakePoolGroup - deriving (Eq, Ord, Show) - --- | Protocol parameter groups that dictate different thresholds for DReps. -data DRepGroup - = NetworkGroup - | EconomicGroup - | TechnicalGroup - | GovGroup - deriving (Eq, Ord, Show) - -data StakePoolGroup - = SecurityGroup - | NoStakePoolGroup - deriving (Eq, Ord, Show) - -class ToDRepGroup (t :: DRepGroup) where - toDRepGroup :: DRepGroup - -instance ToDRepGroup 'NetworkGroup where - toDRepGroup = NetworkGroup -instance ToDRepGroup 'EconomicGroup where - toDRepGroup = EconomicGroup -instance ToDRepGroup 'TechnicalGroup where - toDRepGroup = TechnicalGroup -instance ToDRepGroup 'GovGroup where - toDRepGroup = GovGroup - -class ToStakePoolGroup (t :: StakePoolGroup) where - toStakePoolGroup :: StakePoolGroup - -instance ToStakePoolGroup 'SecurityGroup where - toStakePoolGroup = SecurityGroup -instance ToStakePoolGroup 'NoStakePoolGroup where - toStakePoolGroup = NoStakePoolGroup - --- | HKD that is tagged with a group -newtype THKD (t :: PPGroups) f a = THKD {unTHKD :: HKD f a} - -instance Eq (HKD f a) => Eq (THKD t f a) where - THKD x1 == THKD x2 = x1 == x2 - -instance Ord (HKD f a) => Ord (THKD t f a) where - compare (THKD x1) (THKD x2) = compare x1 x2 - -instance Show (HKD f a) => Show (THKD t f a) where - show = show . unTHKD - -instance Semigroup (HKD f a) => Semigroup (THKD t f a) where - a <> b = THKD $ unTHKD a <> unTHKD b - -instance Monoid (HKD f a) => Monoid (THKD t f a) where - mempty = THKD mempty - -instance NoThunks (HKD f a) => NoThunks (THKD t f a) where - noThunks ctx = noThunks ctx . unTHKD - wNoThunks ctx = wNoThunks ctx . unTHKD - showTypeOf _ = showTypeOf (Proxy @(HKD f a)) - -instance NFData (HKD f a) => NFData (THKD t f a) where - rnf = rnf . unTHKD - -instance (Typeable t, EncCBOR a) => EncCBOR (THKD t Identity a) where - encCBOR = encCBOR . unTHKD - -instance (Typeable t, DecCBOR a) => DecCBOR (THKD t Identity a) where - decCBOR = THKD <$> decCBOR - -instance (Typeable t, EncCBOR a) => EncCBOR (THKD t StrictMaybe a) where - encCBOR = encCBOR . unTHKD - -instance (Typeable t, DecCBOR a) => DecCBOR (THKD t StrictMaybe a) where - decCBOR = THKD <$> decCBOR - -instance (Typeable t, ToJSON a) => ToJSON (THKD t Identity a) where - toJSON = toJSON . unTHKD - -instance (Typeable t, FromJSON a) => FromJSON (THKD t Identity a) where - parseJSON = fmap THKD . parseJSON - -instance (Typeable t, ToJSON a) => ToJSON (THKD t StrictMaybe a) where - toJSON = toJSON . unTHKD - -instance (Typeable t, FromJSON a) => FromJSON (THKD t StrictMaybe a) where - parseJSON = fmap THKD . parseJSON - -ppGroup :: - forall t s a. - (ToDRepGroup t, ToStakePoolGroup s) => - THKD ('PPGroups t s) StrictMaybe a -> - Set PPGroups -ppGroup = \case - THKD SNothing -> Set.empty - THKD SJust {} -> Set.singleton $ PPGroups (toDRepGroup @t) (toStakePoolGroup @s) - --- | Conway Protocol parameters. The following parameters have been added since Babbage: --- * @poolVotingThresholds@ --- * @dRepVotingThresholds@ --- * @committeeMinSize@ --- * @committeeMaxTermLength@ --- * @govActionLifetime@ --- * @govActionDeposit@ --- * @dRepDeposit@ --- * @dRepActivity@ -data ConwayPParams f era = ConwayPParams - { cppMinFeeA :: !(THKD ('PPGroups 'EconomicGroup 'SecurityGroup) f Coin) - -- ^ The linear factor for the minimum fee calculation - , cppMinFeeB :: !(THKD ('PPGroups 'EconomicGroup 'SecurityGroup) f Coin) - -- ^ The constant factor for the minimum fee calculation - , cppMaxBBSize :: !(THKD ('PPGroups 'NetworkGroup 'SecurityGroup) f Word32) - -- ^ Maximal block body size - , cppMaxTxSize :: !(THKD ('PPGroups 'NetworkGroup 'SecurityGroup) f Word32) - -- ^ Maximal transaction size - , cppMaxBHSize :: !(THKD ('PPGroups 'NetworkGroup 'SecurityGroup) f Word16) - -- ^ Maximal block header size - , cppKeyDeposit :: !(THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) f Coin) - -- ^ The amount of a key registration deposit - , cppPoolDeposit :: !(THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) f Coin) - -- ^ The amount of a pool registration deposit - , cppEMax :: !(THKD ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) f EpochInterval) - -- ^ Maximum number of epochs in the future a pool retirement is allowed to - -- be scheduled for. - , cppNOpt :: !(THKD ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) f Natural) - -- ^ Desired number of pools - , cppA0 :: !(THKD ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) f NonNegativeInterval) - -- ^ Pool influence - , cppRho :: !(THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) f UnitInterval) - -- ^ Monetary expansion - , cppTau :: !(THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) f UnitInterval) - -- ^ Treasury expansion - , cppProtocolVersion :: !(HKDNoUpdate f ProtVer) - -- ^ Protocol version - , cppMinPoolCost :: !(THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) f Coin) - -- ^ Minimum Stake Pool Cost - , cppCoinsPerUTxOByte :: !(THKD ('PPGroups 'EconomicGroup 'SecurityGroup) f CoinPerByte) - -- ^ Cost in lovelace per byte of UTxO storage - , cppCostModels :: !(THKD ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) f CostModels) - -- ^ Cost models for non-native script languages - , cppPrices :: !(THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) f Prices) - -- ^ Prices of execution units (for non-native script languages) - , cppMaxTxExUnits :: !(THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) f OrdExUnits) - -- ^ Max total script execution resources units allowed per tx - , cppMaxBlockExUnits :: !(THKD ('PPGroups 'NetworkGroup 'SecurityGroup) f OrdExUnits) - -- ^ Max total script execution resources units allowed per block - , cppMaxValSize :: !(THKD ('PPGroups 'NetworkGroup 'SecurityGroup) f Natural) - -- ^ Max size of a Value in an output - , cppCollateralPercentage :: !(THKD ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) f Natural) - -- ^ Percentage of the txfee which must be provided as collateral when - -- including non-native scripts. - , cppMaxCollateralInputs :: !(THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) f Natural) - -- ^ Maximum number of collateral inputs allowed in a transaction - , -- New ones for Conway: - cppPoolVotingThresholds :: !(THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) f PoolVotingThresholds) - -- ^ Thresholds for SPO votes - , cppDRepVotingThresholds :: !(THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) f DRepVotingThresholds) - -- ^ Thresholds for DRep votes - , cppCommitteeMinSize :: !(THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) f Natural) - -- ^ Minimum size of the Constitutional Committee - , cppCommitteeMaxTermLength :: !(THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) f EpochInterval) - -- ^ The Constitutional Committee Term limit in number of Slots - , cppGovActionLifetime :: !(THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) f EpochInterval) - -- ^ Gov action lifetime in number of Epochs - , cppGovActionDeposit :: !(THKD ('PPGroups 'GovGroup 'SecurityGroup) f Coin) - -- ^ The amount of the Gov Action deposit - , cppDRepDeposit :: !(THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) f Coin) - -- ^ The amount of a DRep registration deposit - , cppDRepActivity :: !(THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) f EpochInterval) - -- ^ The number of Epochs that a DRep can perform no activity without losing their @Active@ status. - , cppMinFeeRefScriptCostPerByte :: - !(THKD ('PPGroups 'EconomicGroup 'SecurityGroup) f NonNegativeInterval) - -- ^ Reference scripts fee for the minimum fee calculation - } - deriving (Generic) - -deriving instance Eq (ConwayPParams Identity era) - -deriving instance Ord (ConwayPParams Identity era) - -deriving instance Show (ConwayPParams Identity era) - -instance NoThunks (ConwayPParams Identity era) - -instance NFData (ConwayPParams Identity era) - -deriving instance Eq (ConwayPParams StrictMaybe era) - -deriving instance Ord (ConwayPParams StrictMaybe era) - -deriving instance Show (ConwayPParams StrictMaybe era) - -instance NoThunks (ConwayPParams StrictMaybe era) - -instance NFData (ConwayPParams StrictMaybe era) - -data UpgradeConwayPParams f = UpgradeConwayPParams - { ucppPoolVotingThresholds :: !(HKD f PoolVotingThresholds) - , ucppDRepVotingThresholds :: !(HKD f DRepVotingThresholds) - , ucppCommitteeMinSize :: !(HKD f Natural) - , ucppCommitteeMaxTermLength :: !(HKD f EpochInterval) - , ucppGovActionLifetime :: !(HKD f EpochInterval) - , ucppGovActionDeposit :: !(HKD f Coin) - , ucppDRepDeposit :: !(HKD f Coin) - , ucppDRepActivity :: !(HKD f EpochInterval) - , ucppMinFeeRefScriptCostPerByte :: !(HKD f NonNegativeInterval) - } - deriving (Generic) - -deriving instance Eq (UpgradeConwayPParams Identity) - -deriving instance Ord (UpgradeConwayPParams Identity) - -deriving instance Show (UpgradeConwayPParams Identity) - -instance NoThunks (UpgradeConwayPParams Identity) - -instance NFData (UpgradeConwayPParams Identity) - -deriving instance Eq (UpgradeConwayPParams StrictMaybe) - -deriving instance Ord (UpgradeConwayPParams StrictMaybe) - -deriving instance Show (UpgradeConwayPParams StrictMaybe) - -instance NoThunks (UpgradeConwayPParams StrictMaybe) - -instance NFData (UpgradeConwayPParams StrictMaybe) - -instance Default (UpgradeConwayPParams Identity) where - def = - UpgradeConwayPParams - { ucppPoolVotingThresholds = def - , ucppDRepVotingThresholds = def - , ucppCommitteeMinSize = 0 - , ucppCommitteeMaxTermLength = EpochInterval 0 - , ucppGovActionLifetime = EpochInterval 0 - , ucppGovActionDeposit = Coin 0 - , ucppDRepDeposit = Coin 0 - , ucppDRepActivity = EpochInterval 0 - , ucppMinFeeRefScriptCostPerByte = minBound - } - -instance Default (UpgradeConwayPParams StrictMaybe) where - def = - UpgradeConwayPParams - { ucppPoolVotingThresholds = SNothing - , ucppDRepVotingThresholds = SNothing - , ucppCommitteeMinSize = SNothing - , ucppCommitteeMaxTermLength = SNothing - , ucppGovActionLifetime = SNothing - , ucppGovActionDeposit = SNothing - , ucppDRepDeposit = SNothing - , ucppDRepActivity = SNothing - , ucppMinFeeRefScriptCostPerByte = SNothing - } - -instance EncCBOR (UpgradeConwayPParams Identity) where - encCBOR UpgradeConwayPParams {..} = - encode $ - Rec (UpgradeConwayPParams @Identity) - !> To ucppPoolVotingThresholds - !> To ucppDRepVotingThresholds - !> To ucppCommitteeMinSize - !> To ucppCommitteeMaxTermLength - !> To ucppGovActionLifetime - !> To ucppGovActionDeposit - !> To ucppDRepDeposit - !> To ucppDRepActivity - !> To ucppMinFeeRefScriptCostPerByte - -instance DecCBOR (UpgradeConwayPParams Identity) where - decCBOR = - decode $ - RecD UpgradeConwayPParams - EraPParams (ConwayEra c) where - type PParamsHKD f (ConwayEra c) = ConwayPParams f (ConwayEra c) - type UpgradePParams f (ConwayEra c) = UpgradeConwayPParams f - type DowngradePParams f (ConwayEra c) = () - - applyPPUpdates (PParams pp) (PParamsUpdate ppu) = - PParams $ conwayApplyPPUpdates pp ppu - - emptyPParamsIdentity = emptyConwayPParams - emptyPParamsStrictMaybe = emptyConwayPParamsUpdate - - upgradePParamsHKD = upgradeConwayPParams - downgradePParamsHKD () = downgradeConwayPParams - - hkdMinFeeAL = lens (unTHKD . cppMinFeeA) $ \pp x -> pp {cppMinFeeA = THKD x} - hkdMinFeeBL = lens (unTHKD . cppMinFeeB) $ \pp x -> pp {cppMinFeeB = THKD x} - hkdMaxBBSizeL = lens (unTHKD . cppMaxBBSize) $ \pp x -> pp {cppMaxBBSize = THKD x} - hkdMaxTxSizeL = lens (unTHKD . cppMaxTxSize) $ \pp x -> pp {cppMaxTxSize = THKD x} - hkdMaxBHSizeL = lens (unTHKD . cppMaxBHSize) $ \pp x -> pp {cppMaxBHSize = THKD x} - hkdKeyDepositL = lens (unTHKD . cppKeyDeposit) $ \pp x -> pp {cppKeyDeposit = THKD x} - hkdPoolDepositL = lens (unTHKD . cppPoolDeposit) $ \pp x -> pp {cppPoolDeposit = THKD x} - hkdEMaxL = lens (unTHKD . cppEMax) $ \pp x -> pp {cppEMax = THKD x} - hkdNOptL = lens (unTHKD . cppNOpt) $ \pp x -> pp {cppNOpt = THKD x} - hkdA0L = lens (unTHKD . cppA0) $ \pp x -> pp {cppA0 = THKD x} - hkdRhoL = lens (unTHKD . cppRho) $ \pp x -> pp {cppRho = THKD x} - hkdTauL = lens (unTHKD . cppTau) $ \pp x -> pp {cppTau = THKD x} - hkdProtocolVersionL = notSupportedInThisEraL - hkdMinPoolCostL = lens (unTHKD . cppMinPoolCost) $ \pp x -> pp {cppMinPoolCost = THKD x} - ppProtocolVersionL = ppLens . lens cppProtocolVersion (\pp x -> pp {cppProtocolVersion = x}) - - ppDG = to (const minBound) - ppuProtocolVersionL = notSupportedInThisEraL - hkdDL = notSupportedInThisEraL - hkdExtraEntropyL = notSupportedInThisEraL - hkdMinUTxOValueL = notSupportedInThisEraL - -instance Crypto c => AlonzoEraPParams (ConwayEra c) where - hkdCoinsPerUTxOWordL = notSupportedInThisEraL - hkdCostModelsL = lens (unTHKD . cppCostModels) $ \pp x -> pp {cppCostModels = THKD x} - hkdPricesL = lens (unTHKD . cppPrices) $ \pp x -> pp {cppPrices = THKD x} - - hkdMaxTxExUnitsL :: forall f. HKDFunctor f => Lens' (PParamsHKD f (ConwayEra c)) (HKD f ExUnits) - hkdMaxTxExUnitsL = - lens (hkdMap (Proxy @f) unOrdExUnits . unTHKD . cppMaxTxExUnits) $ \pp x -> - pp {cppMaxTxExUnits = THKD $ hkdMap (Proxy @f) OrdExUnits x} - hkdMaxBlockExUnitsL :: forall f. HKDFunctor f => Lens' (PParamsHKD f (ConwayEra c)) (HKD f ExUnits) - hkdMaxBlockExUnitsL = - lens (hkdMap (Proxy @f) unOrdExUnits . unTHKD . cppMaxBlockExUnits) $ \pp x -> - pp {cppMaxBlockExUnits = THKD $ hkdMap (Proxy @f) OrdExUnits x} - hkdMaxValSizeL = lens (unTHKD . cppMaxValSize) $ \pp x -> pp {cppMaxValSize = THKD x} - hkdCollateralPercentageL = - lens (unTHKD . cppCollateralPercentage) $ \pp x -> pp {cppCollateralPercentage = THKD x} - hkdMaxCollateralInputsL = - lens (unTHKD . cppMaxCollateralInputs) $ \pp x -> pp {cppMaxCollateralInputs = THKD x} - -instance Crypto c => BabbageEraPParams (ConwayEra c) where - hkdCoinsPerUTxOByteL = - lens (unTHKD . cppCoinsPerUTxOByte) $ \pp x -> pp {cppCoinsPerUTxOByte = THKD x} - -instance Crypto c => ConwayEraPParams (ConwayEra c) where - modifiedPPGroups (PParamsUpdate ppu) = conwayModifiedPPGroups ppu - ppuWellFormed ppu = - and - [ -- Numbers - isValid (/= 0) ppuMaxBBSizeL - , isValid (/= 0) ppuMaxTxSizeL - , isValid (/= 0) ppuMaxBHSizeL - , isValid (/= 0) ppuMaxValSizeL - , isValid (/= 0) ppuCollateralPercentageL - , isValid (/= EpochInterval 0) ppuCommitteeMaxTermLengthL - , isValid (/= EpochInterval 0) ppuGovActionLifetimeL - , -- Coins - isValid (/= zero) ppuPoolDepositL - , isValid (/= zero) ppuGovActionDepositL - , isValid (/= zero) ppuDRepDepositL - , ppu /= emptyPParamsUpdate - ] - where - isValid :: - (t -> Bool) -> - Lens' (PParamsUpdate (ConwayEra c)) (StrictMaybe t) -> - Bool - isValid p l = case ppu ^. l of - SJust x -> p x - SNothing -> True - hkdPoolVotingThresholdsL = - lens (unTHKD . cppPoolVotingThresholds) $ \pp x -> pp {cppPoolVotingThresholds = THKD x} - hkdDRepVotingThresholdsL = - lens (unTHKD . cppDRepVotingThresholds) $ \pp x -> pp {cppDRepVotingThresholds = THKD x} - hkdCommitteeMinSizeL = - lens (unTHKD . cppCommitteeMinSize) $ \pp x -> pp {cppCommitteeMinSize = THKD x} - hkdCommitteeMaxTermLengthL = - lens (unTHKD . cppCommitteeMaxTermLength) $ \pp x -> pp {cppCommitteeMaxTermLength = THKD x} - hkdGovActionLifetimeL = - lens (unTHKD . cppGovActionLifetime) $ \pp x -> pp {cppGovActionLifetime = THKD x} - hkdGovActionDepositL = - lens (unTHKD . cppGovActionDeposit) $ \pp x -> pp {cppGovActionDeposit = THKD x} - hkdDRepDepositL = - lens (unTHKD . cppDRepDeposit) $ \pp x -> pp {cppDRepDeposit = THKD x} - hkdDRepActivityL = - lens (unTHKD . cppDRepActivity) $ \pp x -> pp {cppDRepActivity = THKD x} - hkdMinFeeRefScriptCostPerByteL = - lens (unTHKD . cppMinFeeRefScriptCostPerByte) $ \pp x -> pp {cppMinFeeRefScriptCostPerByte = THKD x} - -instance Era era => EncCBOR (ConwayPParams Identity era) where - encCBOR ConwayPParams {..} = - encode $ - Rec (ConwayPParams @Identity) - !> To cppMinFeeA - !> To cppMinFeeB - !> To cppMaxBBSize - !> To cppMaxTxSize - !> To cppMaxBHSize - !> To cppKeyDeposit - !> To cppPoolDeposit - !> To cppEMax - !> To cppNOpt - !> To cppA0 - !> To cppRho - !> To cppTau - !> To cppProtocolVersion - !> To cppMinPoolCost - !> To cppCoinsPerUTxOByte - !> To cppCostModels - !> To cppPrices - !> To cppMaxTxExUnits - !> To cppMaxBlockExUnits - !> To cppMaxValSize - !> To cppCollateralPercentage - !> To cppMaxCollateralInputs - -- New for Conway - !> To cppPoolVotingThresholds - !> To cppDRepVotingThresholds - !> To cppCommitteeMinSize - !> To cppCommitteeMaxTermLength - !> To cppGovActionLifetime - !> To cppGovActionDeposit - !> To cppDRepDeposit - !> To cppDRepActivity - !> To cppMinFeeRefScriptCostPerByte - -instance Era era => ToCBOR (ConwayPParams Identity era) where - toCBOR = toEraCBOR @era - -instance Era era => DecCBOR (ConwayPParams Identity era) where - decCBOR = - decode $ - RecD (ConwayPParams @Identity) - FromCBOR (ConwayPParams Identity era) where - fromCBOR = fromEraCBOR @era - -instance Crypto c => ToJSON (ConwayPParams Identity (ConwayEra c)) where - toJSON = object . conwayPParamsPairs - toEncoding = pairs . mconcat . conwayPParamsPairs - -conwayPParamsPairs :: - forall era a e. - (ConwayEraPParams era, KeyValue e a) => - PParamsHKD Identity era -> - [a] -conwayPParamsPairs pp = - uncurry (.=) - <$> conwayPParamsHKDPairs (Proxy @Identity) pp - <> [("protocolVersion", toJSON $ PParams pp ^. ppProtocolVersionL)] - -instance Era era => FromJSON (ConwayPParams Identity era) where - parseJSON = - withObject "ProtocolParameters" $ \obj -> - ConwayPParams - <$> obj .: "txFeePerByte" - <*> obj .: "txFeeFixed" - <*> obj .: "maxBlockBodySize" - <*> obj .: "maxTxSize" - <*> obj .: "maxBlockHeaderSize" - <*> obj .: "stakeAddressDeposit" - <*> obj .: "stakePoolDeposit" - <*> obj .: "poolRetireMaxEpoch" - <*> obj .: "stakePoolTargetNum" - <*> obj .: "poolPledgeInfluence" - <*> obj .: "monetaryExpansion" - <*> obj .: "treasuryCut" - <*> obj .: "protocolVersion" - <*> obj .: "minPoolCost" .!= mempty - <*> obj .: "utxoCostPerByte" - <*> obj .: "costModels" - <*> obj .: "executionUnitPrices" - <*> obj .: "maxTxExecutionUnits" - <*> obj .: "maxBlockExecutionUnits" - <*> obj .: "maxValueSize" - <*> obj .: "collateralPercentage" - <*> obj .: "maxCollateralInputs" - <*> obj .: "poolVotingThresholds" - <*> obj .: "dRepVotingThresholds" - <*> obj .: "committeeMinSize" - <*> obj .: "committeeMaxTermLength" - <*> obj .: "govActionLifetime" - <*> obj .: "govActionDeposit" - <*> obj .: "dRepDeposit" - <*> obj .: "dRepActivity" - <*> obj .: "minFeeRefScriptCostPerByte" - --- | Returns a basic "empty" `PParams` structure with all zero values. -emptyConwayPParams :: forall era. Era era => ConwayPParams Identity era -emptyConwayPParams = - ConwayPParams - { cppMinFeeA = THKD (Coin 0) - , cppMinFeeB = THKD (Coin 0) - , cppMaxBBSize = THKD 0 - , cppMaxTxSize = THKD 2048 - , cppMaxBHSize = THKD 0 - , cppKeyDeposit = THKD (Coin 0) - , cppPoolDeposit = THKD (Coin 0) - , cppEMax = THKD (EpochInterval 0) - , cppNOpt = THKD 100 - , cppA0 = THKD minBound - , cppRho = THKD minBound - , cppTau = THKD minBound - , cppProtocolVersion = ProtVer (eraProtVerLow @era) 0 - , cppMinPoolCost = THKD mempty - , cppCoinsPerUTxOByte = THKD (CoinPerByte $ Coin 0) - , cppCostModels = THKD emptyCostModels - , cppPrices = THKD (Prices minBound minBound) - , cppMaxTxExUnits = THKD (OrdExUnits $ ExUnits 0 0) - , cppMaxBlockExUnits = THKD (OrdExUnits $ ExUnits 0 0) - , cppMaxValSize = THKD 0 - , cppCollateralPercentage = THKD 150 - , cppMaxCollateralInputs = THKD 5 - , -- New in Conway - cppPoolVotingThresholds = THKD def - , cppDRepVotingThresholds = THKD def - , cppCommitteeMinSize = THKD 0 - , cppCommitteeMaxTermLength = THKD (EpochInterval 0) - , cppGovActionLifetime = THKD (EpochInterval 0) - , cppGovActionDeposit = THKD (Coin 0) - , cppDRepDeposit = THKD (Coin 0) - , cppDRepActivity = THKD (EpochInterval 0) - , cppMinFeeRefScriptCostPerByte = THKD minBound - } - -emptyConwayPParamsUpdate :: ConwayPParams StrictMaybe era -emptyConwayPParamsUpdate = - ConwayPParams - { cppMinFeeA = THKD SNothing - , cppMinFeeB = THKD SNothing - , cppMaxBBSize = THKD SNothing - , cppMaxTxSize = THKD SNothing - , cppMaxBHSize = THKD SNothing - , cppKeyDeposit = THKD SNothing - , cppPoolDeposit = THKD SNothing - , cppEMax = THKD SNothing - , cppNOpt = THKD SNothing - , cppA0 = THKD SNothing - , cppRho = THKD SNothing - , cppTau = THKD SNothing - , cppProtocolVersion = NoUpdate - , cppMinPoolCost = THKD SNothing - , cppCoinsPerUTxOByte = THKD SNothing - , cppCostModels = THKD SNothing - , cppPrices = THKD SNothing - , cppMaxTxExUnits = THKD SNothing - , cppMaxBlockExUnits = THKD SNothing - , cppMaxValSize = THKD SNothing - , cppCollateralPercentage = THKD SNothing - , cppMaxCollateralInputs = THKD SNothing - , -- New for Conway - cppPoolVotingThresholds = THKD SNothing - , cppDRepVotingThresholds = THKD SNothing - , cppCommitteeMinSize = THKD SNothing - , cppCommitteeMaxTermLength = THKD SNothing - , cppGovActionLifetime = THKD SNothing - , cppGovActionDeposit = THKD SNothing - , cppDRepDeposit = THKD SNothing - , cppDRepActivity = THKD SNothing - , cppMinFeeRefScriptCostPerByte = THKD SNothing - } - -encodePParamsUpdate :: - ConwayPParams StrictMaybe era -> - Encode ('Closed 'Sparse) (ConwayPParams StrictMaybe era) -encodePParamsUpdate ppu = - Keyed ConwayPParams - !> omitStrictMaybe 0 (cppMinFeeA ppu) encCBOR - !> omitStrictMaybe 1 (cppMinFeeB ppu) encCBOR - !> omitStrictMaybe 2 (cppMaxBBSize ppu) encCBOR - !> omitStrictMaybe 3 (cppMaxTxSize ppu) encCBOR - !> omitStrictMaybe 4 (cppMaxBHSize ppu) encCBOR - !> omitStrictMaybe 5 (cppKeyDeposit ppu) encCBOR - !> omitStrictMaybe 6 (cppPoolDeposit ppu) encCBOR - !> omitStrictMaybe 7 (cppEMax ppu) encCBOR - !> omitStrictMaybe 8 (cppNOpt ppu) encCBOR - !> omitStrictMaybe 9 (cppA0 ppu) encCBOR - !> omitStrictMaybe 10 (cppRho ppu) encCBOR - !> omitStrictMaybe 11 (cppTau ppu) encCBOR - !> OmitC NoUpdate - !> omitStrictMaybe 16 (cppMinPoolCost ppu) encCBOR - !> omitStrictMaybe 17 (cppCoinsPerUTxOByte ppu) encCBOR - !> omitStrictMaybe 18 (cppCostModels ppu) encCBOR - !> omitStrictMaybe 19 (cppPrices ppu) encCBOR - !> omitStrictMaybe 20 (cppMaxTxExUnits ppu) encCBOR - !> omitStrictMaybe 21 (cppMaxBlockExUnits ppu) encCBOR - !> omitStrictMaybe 22 (cppMaxValSize ppu) encCBOR - !> omitStrictMaybe 23 (cppCollateralPercentage ppu) encCBOR - !> omitStrictMaybe 24 (cppMaxCollateralInputs ppu) encCBOR - -- New for Conway - !> omitStrictMaybe 25 (cppPoolVotingThresholds ppu) encCBOR - !> omitStrictMaybe 26 (cppDRepVotingThresholds ppu) encCBOR - !> omitStrictMaybe 27 (cppCommitteeMinSize ppu) encCBOR - !> omitStrictMaybe 28 (cppCommitteeMaxTermLength ppu) encCBOR - !> omitStrictMaybe 29 (cppGovActionLifetime ppu) encCBOR - !> omitStrictMaybe 30 (cppGovActionDeposit ppu) encCBOR - !> omitStrictMaybe 31 (cppDRepDeposit ppu) encCBOR - !> omitStrictMaybe 32 (cppDRepActivity ppu) encCBOR - !> omitStrictMaybe 33 (cppMinFeeRefScriptCostPerByte ppu) encCBOR - where - omitStrictMaybe :: - Word -> - THKD t StrictMaybe a -> - (a -> Encoding) -> - Encode ('Closed 'Sparse) (THKD t StrictMaybe a) - omitStrictMaybe key x enc = - Omit (isSNothing . unTHKD) (Key key (E (enc . fromSJust . unTHKD) x)) - - fromSJust :: StrictMaybe a -> a - fromSJust (SJust x) = x - fromSJust SNothing = - error "SNothing in fromSJust. This should never happen, it is guarded by isSNothing." - -instance Era era => EncCBOR (ConwayPParams StrictMaybe era) where - encCBOR ppup = encode (encodePParamsUpdate ppup) - -updateField :: Word -> Field (ConwayPParams StrictMaybe era) -updateField = \case - 0 -> field (\x up -> up {cppMinFeeA = THKD (SJust x)}) From - 1 -> field (\x up -> up {cppMinFeeB = THKD (SJust x)}) From - 2 -> field (\x up -> up {cppMaxBBSize = THKD (SJust x)}) From - 3 -> field (\x up -> up {cppMaxTxSize = THKD (SJust x)}) From - 4 -> field (\x up -> up {cppMaxBHSize = THKD (SJust x)}) From - 5 -> field (\x up -> up {cppKeyDeposit = THKD (SJust x)}) From - 6 -> field (\x up -> up {cppPoolDeposit = THKD (SJust x)}) From - 7 -> field (\x up -> up {cppEMax = THKD (SJust x)}) From - 8 -> field (\x up -> up {cppNOpt = THKD (SJust x)}) From - 9 -> field (\x up -> up {cppA0 = THKD (SJust x)}) From - 10 -> field (\x up -> up {cppRho = THKD (SJust x)}) From - 11 -> field (\x up -> up {cppTau = THKD (SJust x)}) From - 16 -> field (\x up -> up {cppMinPoolCost = THKD (SJust x)}) From - 17 -> field (\x up -> up {cppCoinsPerUTxOByte = THKD (SJust x)}) From - 18 -> field (\x up -> up {cppCostModels = THKD (SJust x)}) $ D decodeValidAndUnknownCostModels - 19 -> field (\x up -> up {cppPrices = THKD (SJust x)}) From - 20 -> field (\x up -> up {cppMaxTxExUnits = THKD (SJust x)}) From - 21 -> field (\x up -> up {cppMaxBlockExUnits = THKD (SJust x)}) From - 22 -> field (\x up -> up {cppMaxValSize = THKD (SJust x)}) From - 23 -> field (\x up -> up {cppCollateralPercentage = THKD (SJust x)}) From - 24 -> field (\x up -> up {cppMaxCollateralInputs = THKD (SJust x)}) From - -- New for Conway - 25 -> field (\x up -> up {cppPoolVotingThresholds = THKD (SJust x)}) From - 26 -> field (\x up -> up {cppDRepVotingThresholds = THKD (SJust x)}) From - 27 -> field (\x up -> up {cppCommitteeMinSize = THKD (SJust x)}) From - 28 -> field (\x up -> up {cppCommitteeMaxTermLength = THKD (SJust x)}) From - 29 -> field (\x up -> up {cppGovActionLifetime = THKD (SJust x)}) From - 30 -> field (\x up -> up {cppGovActionDeposit = THKD (SJust x)}) From - 31 -> field (\x up -> up {cppDRepDeposit = THKD (SJust x)}) From - 32 -> field (\x up -> up {cppDRepActivity = THKD (SJust x)}) From - 33 -> field (\x up -> up {cppMinFeeRefScriptCostPerByte = THKD (SJust x)}) From - k -> field (\_x up -> up) (Invalid k) - -instance Era era => DecCBOR (ConwayPParams StrictMaybe era) where - decCBOR = decode (SparseKeyed "PParamsUpdate" emptyConwayPParamsUpdate updateField []) - -instance Era era => ToCBOR (ConwayPParams StrictMaybe era) where - toCBOR = toEraCBOR @era - -instance Era era => FromCBOR (ConwayPParams StrictMaybe era) where - fromCBOR = fromEraCBOR @era - -instance - ( ConwayEraPParams era - , PParamsHKD StrictMaybe era ~ ConwayPParams StrictMaybe era - ) => - ToJSON (ConwayPParams StrictMaybe era) - where - toJSON = object . conwayPParamsUpdatePairs - toEncoding = pairs . mconcat . conwayPParamsUpdatePairs - -conwayPParamsUpdatePairs :: - forall era a e. - (ConwayEraPParams era, KeyValue e a) => - PParamsHKD StrictMaybe era -> - [a] -conwayPParamsUpdatePairs pp = - [ k .= v - | (k, SJust v) <- conwayPParamsHKDPairs (Proxy @StrictMaybe) pp - ] - -conwayPParamsHKDPairs :: - forall era f. - (ConwayEraPParams era, HKDFunctor f) => - Proxy f -> - PParamsHKD f era -> - [(Key, HKD f Aeson.Value)] -conwayPParamsHKDPairs px pp = - babbageCommonPParamsHKDPairs px pp - <> conwayUpgradePParamsHKDPairs px pp - -conwayUpgradePParamsHKDPairs :: - forall era f. - (ConwayEraPParams era, HKDFunctor f) => - Proxy f -> - PParamsHKD f era -> - [(Key, HKD f Aeson.Value)] -conwayUpgradePParamsHKDPairs px pp = - [ - ( "poolVotingThresholds" - , hkdMap px (toJSON @PoolVotingThresholds) (pp ^. hkdPoolVotingThresholdsL @era @f) - ) - , - ( "dRepVotingThresholds" - , hkdMap px (toJSON @DRepVotingThresholds) (pp ^. hkdDRepVotingThresholdsL @era @f) - ) - , ("committeeMinSize", hkdMap px (toJSON @Natural) (pp ^. hkdCommitteeMinSizeL @era @f)) - , - ( "committeeMaxTermLength" - , hkdMap px (toJSON @EpochInterval) (pp ^. hkdCommitteeMaxTermLengthL @era @f) - ) - , ("govActionLifetime", hkdMap px (toJSON @EpochInterval) (pp ^. hkdGovActionLifetimeL @era @f)) - , ("govActionDeposit", hkdMap px (toJSON @Coin) (pp ^. hkdGovActionDepositL @era @f)) - , ("dRepDeposit", hkdMap px (toJSON @Coin) (pp ^. hkdDRepDepositL @era @f)) - , ("dRepActivity", hkdMap px (toJSON @EpochInterval) (pp ^. hkdDRepActivityL @era @f)) - , - ( "minFeeRefScriptCostPerByte" - , hkdMap px (toJSON @NonNegativeInterval) (pp ^. hkdMinFeeRefScriptCostPerByteL @era @f) - ) - ] - -instance ToJSON (UpgradeConwayPParams Identity) where - toJSON = object . toUpgradeConwayPParamsUpdatePairs - toEncoding = pairs . mconcat . toUpgradeConwayPParamsUpdatePairs - -toUpgradeConwayPParamsUpdatePairs :: KeyValue e a => UpgradeConwayPParams Identity -> [a] -toUpgradeConwayPParamsUpdatePairs upp = - uncurry (.=) <$> upgradeConwayPParamsHKDPairs upp - -upgradeConwayPParamsHKDPairs :: UpgradeConwayPParams Identity -> [(Key, Aeson.Value)] -upgradeConwayPParamsHKDPairs UpgradeConwayPParams {..} = - [ ("poolVotingThresholds", (toJSON @PoolVotingThresholds) ucppPoolVotingThresholds) - , ("dRepVotingThresholds", (toJSON @DRepVotingThresholds) ucppDRepVotingThresholds) - , ("committeeMinSize", (toJSON @Natural) ucppCommitteeMinSize) - , ("committeeMaxTermLength", (toJSON @EpochInterval) ucppCommitteeMaxTermLength) - , ("govActionLifetime", (toJSON @EpochInterval) ucppGovActionLifetime) - , ("govActionDeposit", (toJSON @Coin) ucppGovActionDeposit) - , ("dRepDeposit", (toJSON @Coin) ucppDRepDeposit) - , ("dRepActivity", (toJSON @EpochInterval) ucppDRepActivity) - , ("minFeeRefScriptCostPerByte", (toJSON @NonNegativeInterval) ucppMinFeeRefScriptCostPerByte) - ] - -instance FromJSON (UpgradeConwayPParams Identity) where - parseJSON = - withObject "UpgradeConwayPParams" $ \o -> - UpgradeConwayPParams - <$> o .: "poolVotingThresholds" - <*> o .: "dRepVotingThresholds" - <*> o .: "committeeMinSize" - <*> o .: "committeeMaxTermLength" - <*> o .: "govActionLifetime" - <*> o .: "govActionDeposit" - <*> o .: "dRepDeposit" - <*> o .: "dRepActivity" - <*> o .: "minFeeRefScriptCostPerByte" - -upgradeConwayPParams :: - forall f c. - HKDFunctor f => - UpgradeConwayPParams f -> - PParamsHKD f (BabbageEra c) -> - ConwayPParams f (ConwayEra c) -upgradeConwayPParams UpgradeConwayPParams {..} BabbagePParams {..} = - ConwayPParams - { cppMinFeeA = THKD bppMinFeeA - , cppMinFeeB = THKD bppMinFeeB - , cppMaxBBSize = THKD bppMaxBBSize - , cppMaxTxSize = THKD bppMaxTxSize - , cppMaxBHSize = THKD bppMaxBHSize - , cppKeyDeposit = THKD bppKeyDeposit - , cppPoolDeposit = THKD bppPoolDeposit - , cppEMax = THKD bppEMax - , cppNOpt = THKD bppNOpt - , cppA0 = THKD bppA0 - , cppRho = THKD bppRho - , cppTau = THKD bppTau - , cppProtocolVersion = toNoUpdate @f @ProtVer bppProtocolVersion - , cppMinPoolCost = THKD bppMinPoolCost - , cppCoinsPerUTxOByte = THKD bppCoinsPerUTxOByte - , cppCostModels = THKD bppCostModels - , cppPrices = THKD bppPrices - , cppMaxTxExUnits = THKD bppMaxTxExUnits - , cppMaxBlockExUnits = THKD bppMaxBlockExUnits - , cppMaxValSize = THKD bppMaxValSize - , cppCollateralPercentage = THKD bppCollateralPercentage - , cppMaxCollateralInputs = THKD bppMaxCollateralInputs - , -- New for Conway - cppPoolVotingThresholds = THKD ucppPoolVotingThresholds - , cppDRepVotingThresholds = THKD ucppDRepVotingThresholds - , cppCommitteeMinSize = THKD ucppCommitteeMinSize - , cppCommitteeMaxTermLength = THKD ucppCommitteeMaxTermLength - , cppGovActionLifetime = THKD ucppGovActionLifetime - , cppGovActionDeposit = THKD ucppGovActionDeposit - , cppDRepDeposit = THKD ucppDRepDeposit - , cppDRepActivity = THKD ucppDRepActivity - , cppMinFeeRefScriptCostPerByte = THKD ucppMinFeeRefScriptCostPerByte - } - -downgradeConwayPParams :: - forall f c. - HKDFunctor f => - ConwayPParams f (ConwayEra c) -> - PParamsHKD f (BabbageEra c) -downgradeConwayPParams ConwayPParams {..} = - BabbagePParams - { bppMinFeeA = unTHKD cppMinFeeA - , bppMinFeeB = unTHKD cppMinFeeB - , bppMaxBBSize = unTHKD cppMaxBBSize - , bppMaxTxSize = unTHKD cppMaxTxSize - , bppMaxBHSize = unTHKD cppMaxBHSize - , bppKeyDeposit = unTHKD cppKeyDeposit - , bppPoolDeposit = unTHKD cppPoolDeposit - , bppEMax = unTHKD cppEMax - , bppNOpt = unTHKD cppNOpt - , bppA0 = unTHKD cppA0 - , bppRho = unTHKD cppRho - , bppTau = unTHKD cppTau - , bppProtocolVersion = fromNoUpdate @f @ProtVer cppProtocolVersion - , bppMinPoolCost = unTHKD cppMinPoolCost - , bppCoinsPerUTxOByte = unTHKD cppCoinsPerUTxOByte - , bppCostModels = unTHKD cppCostModels - , bppPrices = unTHKD cppPrices - , bppMaxTxExUnits = unTHKD cppMaxTxExUnits - , bppMaxBlockExUnits = unTHKD cppMaxBlockExUnits - , bppMaxValSize = unTHKD cppMaxValSize - , bppCollateralPercentage = unTHKD cppCollateralPercentage - , bppMaxCollateralInputs = unTHKD cppMaxCollateralInputs - } - -conwayApplyPPUpdates :: - ConwayPParams Identity era -> - ConwayPParams StrictMaybe era -> - ConwayPParams Identity era -conwayApplyPPUpdates pp ppu = - ConwayPParams - { cppMinFeeA = ppUpdate (cppMinFeeA pp) (cppMinFeeA ppu) - , cppMinFeeB = ppUpdate (cppMinFeeB pp) (cppMinFeeB ppu) - , cppMaxBBSize = ppUpdate (cppMaxBBSize pp) (cppMaxBBSize ppu) - , cppMaxTxSize = ppUpdate (cppMaxTxSize pp) (cppMaxTxSize ppu) - , cppMaxBHSize = ppUpdate (cppMaxBHSize pp) (cppMaxBHSize ppu) - , cppKeyDeposit = ppUpdate (cppKeyDeposit pp) (cppKeyDeposit ppu) - , cppPoolDeposit = ppUpdate (cppPoolDeposit pp) (cppPoolDeposit ppu) - , cppEMax = ppUpdate (cppEMax pp) (cppEMax ppu) - , cppNOpt = ppUpdate (cppNOpt pp) (cppNOpt ppu) - , cppA0 = ppUpdate (cppA0 pp) (cppA0 ppu) - , cppRho = ppUpdate (cppRho pp) (cppRho ppu) - , cppTau = ppUpdate (cppTau pp) (cppTau ppu) - , cppProtocolVersion = cppProtocolVersion pp - , cppMinPoolCost = ppUpdate (cppMinPoolCost pp) (cppMinPoolCost ppu) - , cppCoinsPerUTxOByte = ppUpdate (cppCoinsPerUTxOByte pp) (cppCoinsPerUTxOByte ppu) - , cppCostModels = ppUpdateCostModels (cppCostModels pp) (cppCostModels ppu) - , cppPrices = ppUpdate (cppPrices pp) (cppPrices ppu) - , cppMaxTxExUnits = ppUpdate (cppMaxTxExUnits pp) (cppMaxTxExUnits ppu) - , cppMaxBlockExUnits = ppUpdate (cppMaxBlockExUnits pp) (cppMaxBlockExUnits ppu) - , cppMaxValSize = ppUpdate (cppMaxValSize pp) (cppMaxValSize ppu) - , cppCollateralPercentage = ppUpdate (cppCollateralPercentage pp) (cppCollateralPercentage ppu) - , cppMaxCollateralInputs = ppUpdate (cppMaxCollateralInputs pp) (cppMaxCollateralInputs ppu) - , cppPoolVotingThresholds = ppUpdate (cppPoolVotingThresholds pp) (cppPoolVotingThresholds ppu) - , cppDRepVotingThresholds = ppUpdate (cppDRepVotingThresholds pp) (cppDRepVotingThresholds ppu) - , cppCommitteeMinSize = ppUpdate (cppCommitteeMinSize pp) (cppCommitteeMinSize ppu) - , cppCommitteeMaxTermLength = - ppUpdate (cppCommitteeMaxTermLength pp) (cppCommitteeMaxTermLength ppu) - , cppGovActionLifetime = ppUpdate (cppGovActionLifetime pp) (cppGovActionLifetime ppu) - , cppGovActionDeposit = ppUpdate (cppGovActionDeposit pp) (cppGovActionDeposit ppu) - , cppDRepDeposit = ppUpdate (cppDRepDeposit pp) (cppDRepDeposit ppu) - , cppDRepActivity = ppUpdate (cppDRepActivity pp) (cppDRepActivity ppu) - , cppMinFeeRefScriptCostPerByte = - ppUpdate (cppMinFeeRefScriptCostPerByte pp) (cppMinFeeRefScriptCostPerByte ppu) - } - where - ppUpdate :: - THKD f Identity a -> - THKD f StrictMaybe a -> - THKD f Identity a - ppUpdate (THKD ppCurValue) (THKD ppuValue) = - case ppuValue of - SNothing -> THKD ppCurValue - SJust ppNewValue -> THKD ppNewValue - - ppUpdateCostModels :: - THKD f Identity CostModels -> - THKD f StrictMaybe CostModels -> - THKD f Identity CostModels - ppUpdateCostModels (THKD curCostModel) (THKD ppuCostModel) = - case ppuCostModel of - SNothing -> THKD curCostModel - SJust costModelUpdate -> THKD $ updateCostModels curCostModel costModelUpdate - -conwayModifiedPPGroups :: ConwayPParams StrictMaybe era -> Set PPGroups -conwayModifiedPPGroups - ( ConwayPParams - p01 - p02 - p03 - p04 - p05 - p06 - p07 - p08 - p09 - p10 - p11 - p12 - _protocolVersion - p14 - p15 - p16 - p17 - p18 - p19 - p20 - p21 - p22 - p23 - p24 - p25 - p26 - p27 - p28 - p29 - p30 - p31 - ) = - mconcat - [ ppGroup p01 - , ppGroup p02 - , ppGroup p03 - , ppGroup p04 - , ppGroup p05 - , ppGroup p06 - , ppGroup p07 - , ppGroup p08 - , ppGroup p09 - , ppGroup p10 - , ppGroup p11 - , ppGroup p12 - , ppGroup p14 - , ppGroup p15 - , ppGroup p16 - , ppGroup p17 - , ppGroup p18 - , ppGroup p19 - , ppGroup p20 - , ppGroup p21 - , ppGroup p22 - , ppGroup p23 - , ppGroup p24 - , ppGroup p25 - , ppGroup p26 - , ppGroup p27 - , ppGroup p28 - , ppGroup p29 - , ppGroup p30 - , ppGroup p31 - ] diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/Plutus/Context.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/Plutus/Context.hs deleted file mode 100644 index 24dd833bbd5..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/Plutus/Context.hs +++ /dev/null @@ -1,212 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE KindSignatures #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE UndecidableSuperClasses #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Conway.Plutus.Context ( - pparamUpdateToData, - pparamUpdateFromData, - conwayPParam, - conwayPParamMap, - ConwayEraPlutusTxInfo (..), -) where - -import Cardano.Ledger.Alonzo.PParams ( - ppuCollateralPercentageL, - ppuCostModelsL, - ppuMaxBlockExUnitsL, - ppuMaxCollateralInputsL, - ppuMaxTxExUnitsL, - ppuMaxValSizeL, - ppuPricesL, - ) -import Cardano.Ledger.Alonzo.Plutus.Context (EraPlutusTxInfo) -import Cardano.Ledger.Babbage.PParams (CoinPerByte (..), ppuCoinsPerUTxOByteL) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Conway.PParams ( - ConwayEraPParams (..), - DRepVotingThresholds (..), - PoolVotingThresholds (..), - ppuCommitteeMaxTermLengthL, - ppuCommitteeMinSizeL, - ppuDRepActivityL, - ppuDRepDepositL, - ppuDRepVotingThresholdsL, - ppuGovActionDepositL, - ppuGovActionLifetimeL, - ppuMinFeeRefScriptCostPerByteL, - ppuPoolVotingThresholdsL, - ) -import Cardano.Ledger.Core ( - EraPParams (..), - PParam (..), - PParamsUpdate, - emptyPParamsUpdate, - makePParamMap, - ppuA0L, - ppuEMaxL, - ppuKeyDepositL, - ppuMaxBBSizeL, - ppuMaxBHSizeL, - ppuMaxTxSizeL, - ppuMinFeeAL, - ppuMinFeeBL, - ppuMinPoolCostL, - ppuNOptL, - ppuPoolDepositL, - ppuRhoL, - ppuTauL, - ) -import Cardano.Ledger.Plutus.Language (Language (..)) -import Cardano.Ledger.Plutus.ToPlutusData (ToPlutusData (..)) -import Data.Foldable (foldlM) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Maybe.Strict (StrictMaybe (..)) -import Lens.Micro ((&), (.~), (^.)) -import PlutusLedgerApi.Common (Data (..)) -import qualified PlutusLedgerApi.V3 as PV3 - --- ==================================================================== --- Generic, Table (Map Word (PParam era)) driven translators for --- PParamUpdate, A table for some era, will make instances for (PParamUpdate era) for that Era. - --- | Translate a PParamUpdate to Data, using the PParamMap. --- The PParamUpdate is Basically (Map (tag t) (Some (StrictMaybe t))) --- The idea is to only store (Map (tag t) (Some t)) for just the components --- that had (SJust t), and to leave out the other tags. To transform this --- back to a (Map (tag t) (Some t)), we start with a full map where everything is --- SNothing, and then override the tags we find in the data with (SJust t) --- That is what happens in pparamUpdateFromData below -pparamUpdateToData :: Map Word (PParam era) -> PParamsUpdate era -> Data -pparamUpdateToData pparamMap ppu = Map (Map.foldrWithKey' toMapPair [] pparamMap) - where - toMapPair tag (PParam _ ppuL) ans = - case ppu ^. ppuL of - SNothing -> ans - SJust t -> (I (toInteger @Word tag), toPlutusData t) : ans - --- | Translate Data to a PParamUpdate, using the PParamMap. -pparamUpdateFromData :: EraPParams era => Map Word (PParam era) -> Data -> Maybe (PParamsUpdate era) -pparamUpdateFromData pparamMap (Map pairs) = - fst - <$> foldlM accum (emptyPParamsUpdate, pparamMap) pairs - where - accum (!ppu, !leftOverMap) (key, value) = do - tg <- fromPlutusData key - PParam _ ppuL <- Map.lookup tg leftOverMap - val <- fromPlutusData value - pure (ppu & ppuL .~ SJust val, Map.delete tg leftOverMap) -pparamUpdateFromData _ _ = Nothing - --- =================================================================== --- ToPlutusData instances necessary for (PParamUpdate (CowayEra c)) - -instance ToPlutusData PoolVotingThresholds where - toPlutusData x = - List - [ toPlutusData (pvtMotionNoConfidence x) - , toPlutusData (pvtCommitteeNormal x) - , toPlutusData (pvtCommitteeNoConfidence x) - , toPlutusData (pvtHardForkInitiation x) - , toPlutusData (pvtPPSecurityGroup x) - ] - fromPlutusData (List [a, b, c, d, e]) = - PoolVotingThresholds - <$> fromPlutusData a - <*> fromPlutusData b - <*> fromPlutusData c - <*> fromPlutusData d - <*> fromPlutusData e - fromPlutusData _ = Nothing - -instance ToPlutusData DRepVotingThresholds where - toPlutusData x = - List - [ toPlutusData (dvtMotionNoConfidence x) - , toPlutusData (dvtCommitteeNormal x) - , toPlutusData (dvtCommitteeNoConfidence x) - , toPlutusData (dvtUpdateToConstitution x) - , toPlutusData (dvtHardForkInitiation x) - , toPlutusData (dvtPPNetworkGroup x) - , toPlutusData (dvtPPEconomicGroup x) - , toPlutusData (dvtPPTechnicalGroup x) - , toPlutusData (dvtPPGovGroup x) - , toPlutusData (dvtTreasuryWithdrawal x) - ] - fromPlutusData (List [a, b, c, d, e, f, g, h, i, j]) = - DRepVotingThresholds - <$> fromPlutusData a - <*> fromPlutusData b - <*> fromPlutusData c - <*> fromPlutusData d - <*> fromPlutusData e - <*> fromPlutusData f - <*> fromPlutusData g - <*> fromPlutusData h - <*> fromPlutusData i - <*> fromPlutusData j - fromPlutusData _ = Nothing - -instance ToPlutusData CoinPerByte where - toPlutusData (CoinPerByte c) = toPlutusData @Coin c - fromPlutusData x = CoinPerByte <$> fromPlutusData @Coin x - --- ========================================================== - --- | A Map for the Conway era -conwayPParamMap :: ConwayEraPParams era => Map Word (PParam era) -conwayPParamMap = makePParamMap conwayPParam - --- | A list for the Conway era, other eras may have different tags and lenses. -conwayPParam :: ConwayEraPParams era => [PParam era] -conwayPParam = - [ PParam 0 ppuMinFeeAL - , PParam 1 ppuMinFeeBL - , PParam 2 ppuMaxBBSizeL - , PParam 3 ppuMaxTxSizeL - , PParam 4 ppuMaxBHSizeL - , PParam 5 ppuKeyDepositL - , PParam 6 ppuPoolDepositL - , PParam 7 ppuEMaxL - , PParam 8 ppuNOptL - , PParam 9 ppuA0L - , PParam 10 ppuRhoL - , PParam 11 ppuTauL - , -- Missing in Conway [12,13,14,15] - PParam 16 ppuMinPoolCostL - , PParam 17 ppuCoinsPerUTxOByteL - , PParam 18 ppuCostModelsL - , PParam 19 ppuPricesL - , PParam 20 ppuMaxTxExUnitsL - , PParam 21 ppuMaxBlockExUnitsL - , PParam 22 ppuMaxValSizeL - , PParam 23 ppuCollateralPercentageL - , PParam 24 ppuMaxCollateralInputsL - , -- New to Conway [25 .. 33] - PParam 25 ppuPoolVotingThresholdsL - , PParam 26 ppuDRepVotingThresholdsL - , PParam 27 ppuCommitteeMinSizeL - , PParam 28 ppuCommitteeMaxTermLengthL - , PParam 29 ppuGovActionLifetimeL - , PParam 30 ppuGovActionDepositL - , PParam 31 ppuDRepDepositL - , PParam 32 ppuDRepActivityL - , PParam 33 ppuMinFeeRefScriptCostPerByteL - ] - --- =========================================================== --- A class to compute the changed parameters in the TxInfo --- given a ToPlutusData instance for PParamsUpdate - -class - ( ToPlutusData (PParamsUpdate era) - , EraPlutusTxInfo l era - ) => - ConwayEraPlutusTxInfo (l :: Language) era - where - toPlutusChangedParameters :: proxy l -> PParamsUpdate era -> PV3.ChangedParameters diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/Rules.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/Rules.hs deleted file mode 100644 index ef6c3e5d4cb..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/Rules.hs +++ /dev/null @@ -1,47 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Conway.Rules ( - module Cardano.Ledger.Conway.Rules.Cert, - module Cardano.Ledger.Conway.Rules.Deleg, - module Cardano.Ledger.Conway.Rules.GovCert, - module Cardano.Ledger.Conway.Rules.Certs, - module Cardano.Ledger.Conway.Rules.Enact, - module Cardano.Ledger.Conway.Rules.Epoch, - module Cardano.Ledger.Conway.Rules.Ledger, - module Cardano.Ledger.Conway.Rules.NewEpoch, - module Cardano.Ledger.Conway.Rules.Tickf, - module Cardano.Ledger.Conway.Rules.Ratify, - module Cardano.Ledger.Conway.Rules.Gov, - module Cardano.Ledger.Conway.Rules.Utxos, - module Cardano.Ledger.Conway.Rules.Utxow, -) -where - -import Cardano.Ledger.Conway.Core (EraRuleEvent, InjectRuleEvent (..)) -import Cardano.Ledger.Conway.Era (ConwayEra) -import Cardano.Ledger.Conway.Rules.Bbody () -import Cardano.Ledger.Conway.Rules.Cert -import Cardano.Ledger.Conway.Rules.Certs -import Cardano.Ledger.Conway.Rules.Deleg -import Cardano.Ledger.Conway.Rules.Enact -import Cardano.Ledger.Conway.Rules.Epoch -import Cardano.Ledger.Conway.Rules.Gov -import Cardano.Ledger.Conway.Rules.GovCert -import Cardano.Ledger.Conway.Rules.Ledger -import Cardano.Ledger.Conway.Rules.Ledgers () -import Cardano.Ledger.Conway.Rules.NewEpoch -import Cardano.Ledger.Conway.Rules.Pool () -import Cardano.Ledger.Conway.Rules.Ratify -import Cardano.Ledger.Conway.Rules.Tickf -import Cardano.Ledger.Conway.Rules.Utxo () -import Cardano.Ledger.Conway.Rules.Utxos -import Cardano.Ledger.Conway.Rules.Utxow -import Cardano.Ledger.Shelley.Rules (ShelleyTickEvent (..)) - -type instance EraRuleEvent "TICK" (ConwayEra c) = ShelleyTickEvent (ConwayEra c) - -instance InjectRuleEvent "TICK" ConwayEpochEvent (ConwayEra c) where - injectEvent = TickNewEpochEvent . EpochEvent diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Bbody.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Bbody.hs deleted file mode 100644 index 3291c27785e..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Bbody.hs +++ /dev/null @@ -1,104 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Conway.Rules.Bbody () where - -import Cardano.Ledger.Allegra.Rules (AllegraUtxoPredFailure) -import Cardano.Ledger.Alonzo.Rules ( - AlonzoBbodyEvent, - AlonzoBbodyPredFailure (..), - AlonzoUtxoPredFailure, - AlonzoUtxosPredFailure, - AlonzoUtxowPredFailure, - ) -import Cardano.Ledger.Babbage.Rules (BabbageUtxoPredFailure, BabbageUtxowPredFailure) -import Cardano.Ledger.Conway.Era (ConwayEra) -import Cardano.Ledger.Conway.Rules.Cert (ConwayCertPredFailure) -import Cardano.Ledger.Conway.Rules.Certs (ConwayCertsPredFailure) -import Cardano.Ledger.Conway.Rules.Deleg (ConwayDelegPredFailure) -import Cardano.Ledger.Conway.Rules.Gov (ConwayGovPredFailure) -import Cardano.Ledger.Conway.Rules.GovCert (ConwayGovCertPredFailure) -import Cardano.Ledger.Conway.Rules.Ledger (ConwayLedgerPredFailure) -import Cardano.Ledger.Conway.Rules.Ledgers () -import Cardano.Ledger.Conway.Rules.Utxos (ConwayUtxosPredFailure) -import Cardano.Ledger.Core -import Cardano.Ledger.Shelley.Rules ( - ShelleyBbodyPredFailure (..), - ShelleyLedgersPredFailure (..), - ShelleyPoolPredFailure, - ShelleyUtxoPredFailure, - ShelleyUtxowPredFailure, - ) - -type instance EraRuleFailure "BBODY" (ConwayEra c) = AlonzoBbodyPredFailure (ConwayEra c) - -type instance EraRuleEvent "BBODY" (ConwayEra c) = AlonzoBbodyEvent (ConwayEra c) - -instance InjectRuleFailure "BBODY" AlonzoBbodyPredFailure (ConwayEra c) - -instance InjectRuleFailure "BBODY" ShelleyBbodyPredFailure (ConwayEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure - -instance InjectRuleFailure "BBODY" ShelleyLedgersPredFailure (ConwayEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure - -instance InjectRuleFailure "BBODY" ConwayLedgerPredFailure (ConwayEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" BabbageUtxowPredFailure (ConwayEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" AlonzoUtxowPredFailure (ConwayEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyUtxowPredFailure (ConwayEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" BabbageUtxoPredFailure (ConwayEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" AlonzoUtxoPredFailure (ConwayEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" AlonzoUtxosPredFailure (ConwayEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ConwayUtxosPredFailure (ConwayEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyUtxoPredFailure (ConwayEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" AllegraUtxoPredFailure (ConwayEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ConwayCertsPredFailure (ConwayEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ConwayCertPredFailure (ConwayEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ConwayDelegPredFailure (ConwayEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyPoolPredFailure (ConwayEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ConwayGovCertPredFailure (ConwayEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ConwayGovPredFailure (ConwayEra c) where - injectFailure = ShelleyInAlonzoBbodyPredFailure . LedgersFailure . injectFailure diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Cert.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Cert.hs deleted file mode 100644 index cac3f10a188..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Cert.hs +++ /dev/null @@ -1,268 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Conway.Rules.Cert ( - ConwayCERT, - ConwayCertPredFailure (..), - ConwayCertEvent (..), - CertEnv (..), -) where - -import Cardano.Ledger.BaseTypes (EpochNo, ShelleyBase, SlotNo) -import Cardano.Ledger.Binary (DecCBOR (..), EncCBOR (..)) -import Cardano.Ledger.Binary.Coders -import Cardano.Ledger.Conway.Core -import Cardano.Ledger.Conway.Era ( - ConwayCERT, - ConwayDELEG, - ConwayEra, - ConwayGOVCERT, - ) -import Cardano.Ledger.Conway.Rules.Deleg (ConwayDelegPredFailure (..)) -import Cardano.Ledger.Conway.Rules.GovCert ( - ConwayGovCertEnv (..), - ConwayGovCertPredFailure, - ) -import Cardano.Ledger.Conway.TxCert ( - ConwayDelegCert, - ConwayGovCert, - ConwayTxCert (..), - ) -import Cardano.Ledger.Shelley.API ( - CertState (..), - DState, - PState, - PoolEnv (PoolEnv), - VState, - ) -import Cardano.Ledger.Shelley.Rules (PoolEvent, ShelleyPOOL, ShelleyPoolPredFailure) -import Control.DeepSeq (NFData) -import Control.State.Transition.Extended ( - Embed, - STS (..), - TRC (TRC), - TransitionRule, - judgmentContext, - trans, - wrapEvent, - wrapFailed, - ) -import Data.Typeable (Typeable) -import Data.Void (absurd) -import GHC.Generics (Generic) -import NoThunks.Class (NoThunks) - -data CertEnv era = CertEnv - { ceSlotNo :: !SlotNo - , cePParams :: !(PParams era) - , ceCurrentEpoch :: !EpochNo - } - deriving (Generic) - -deriving instance Eq (PParams era) => Eq (CertEnv era) -deriving instance Show (PParams era) => Show (CertEnv era) - -data ConwayCertPredFailure era - = DelegFailure (PredicateFailure (EraRule "DELEG" era)) - | PoolFailure (PredicateFailure (EraRule "POOL" era)) - | GovCertFailure (PredicateFailure (EraRule "GOVCERT" era)) - deriving (Generic) - -type instance EraRuleFailure "CERT" (ConwayEra c) = ConwayCertPredFailure (ConwayEra c) - -type instance EraRuleEvent "CERT" (ConwayEra c) = ConwayCertEvent (ConwayEra c) - -instance InjectRuleFailure "CERT" ConwayCertPredFailure (ConwayEra c) - -instance InjectRuleFailure "CERT" ConwayDelegPredFailure (ConwayEra c) where - injectFailure = DelegFailure - -instance InjectRuleFailure "CERT" ShelleyPoolPredFailure (ConwayEra c) where - injectFailure = PoolFailure - -instance InjectRuleFailure "CERT" ConwayGovCertPredFailure (ConwayEra c) where - injectFailure = GovCertFailure - -deriving stock instance - ( Show (PredicateFailure (EraRule "DELEG" era)) - , Show (PredicateFailure (EraRule "POOL" era)) - , Show (PredicateFailure (EraRule "GOVCERT" era)) - ) => - Show (ConwayCertPredFailure era) - -deriving stock instance - ( Eq (PredicateFailure (EraRule "DELEG" era)) - , Eq (PredicateFailure (EraRule "POOL" era)) - , Eq (PredicateFailure (EraRule "GOVCERT" era)) - ) => - Eq (ConwayCertPredFailure era) - -instance - ( NoThunks (PredicateFailure (EraRule "DELEG" era)) - , NoThunks (PredicateFailure (EraRule "POOL" era)) - , NoThunks (PredicateFailure (EraRule "GOVCERT" era)) - ) => - NoThunks (ConwayCertPredFailure era) - -instance - ( NFData (PredicateFailure (EraRule "DELEG" era)) - , NFData (PredicateFailure (EraRule "POOL" era)) - , NFData (PredicateFailure (EraRule "GOVCERT" era)) - ) => - NFData (ConwayCertPredFailure era) - -data ConwayCertEvent era - = DelegEvent (Event (EraRule "DELEG" era)) - | PoolEvent (Event (EraRule "POOL" era)) - | GovCertEvent (Event (EraRule "GOVCERT" era)) - deriving (Generic) - -deriving instance - ( Eq (Event (EraRule "DELEG" era)) - , Eq (Event (EraRule "GOVCERT" era)) - , Eq (Event (EraRule "POOL" era)) - ) => - Eq (ConwayCertEvent era) - -instance - ( NFData (Event (EraRule "DELEG" era)) - , NFData (Event (EraRule "GOVCERT" era)) - , NFData (Event (EraRule "POOL" era)) - ) => - NFData (ConwayCertEvent era) - -instance - forall era. - ( Era era - , State (EraRule "DELEG" era) ~ DState era - , State (EraRule "POOL" era) ~ PState era - , State (EraRule "GOVCERT" era) ~ VState era - , Environment (EraRule "DELEG" era) ~ PParams era - , Environment (EraRule "POOL" era) ~ PoolEnv era - , Environment (EraRule "GOVCERT" era) ~ ConwayGovCertEnv era - , Signal (EraRule "DELEG" era) ~ ConwayDelegCert (EraCrypto era) - , Signal (EraRule "POOL" era) ~ PoolCert (EraCrypto era) - , Signal (EraRule "GOVCERT" era) ~ ConwayGovCert (EraCrypto era) - , Embed (EraRule "DELEG" era) (ConwayCERT era) - , Embed (EraRule "POOL" era) (ConwayCERT era) - , Embed (EraRule "GOVCERT" era) (ConwayCERT era) - , TxCert era ~ ConwayTxCert era - ) => - STS (ConwayCERT era) - where - type State (ConwayCERT era) = CertState era - type Signal (ConwayCERT era) = TxCert era - type Environment (ConwayCERT era) = CertEnv era - type BaseM (ConwayCERT era) = ShelleyBase - type PredicateFailure (ConwayCERT era) = ConwayCertPredFailure era - type Event (ConwayCERT era) = ConwayCertEvent era - - transitionRules = [certTransition @era] - -certTransition :: - forall era. - ( State (EraRule "DELEG" era) ~ DState era - , State (EraRule "POOL" era) ~ PState era - , State (EraRule "GOVCERT" era) ~ VState era - , Environment (EraRule "DELEG" era) ~ PParams era - , Environment (EraRule "POOL" era) ~ PoolEnv era - , Environment (EraRule "GOVCERT" era) ~ ConwayGovCertEnv era - , Signal (EraRule "DELEG" era) ~ ConwayDelegCert (EraCrypto era) - , Signal (EraRule "POOL" era) ~ PoolCert (EraCrypto era) - , Signal (EraRule "GOVCERT" era) ~ ConwayGovCert (EraCrypto era) - , Embed (EraRule "DELEG" era) (ConwayCERT era) - , Embed (EraRule "POOL" era) (ConwayCERT era) - , Embed (EraRule "GOVCERT" era) (ConwayCERT era) - , TxCert era ~ ConwayTxCert era - ) => - TransitionRule (ConwayCERT era) -certTransition = do - TRC (CertEnv slot pp currentEpoch, cState, c) <- judgmentContext - let CertState {certDState, certPState, certVState} = cState - case c of - ConwayTxCertDeleg delegCert -> do - newDState <- trans @(EraRule "DELEG" era) $ TRC (pp, certDState, delegCert) - pure $ cState {certDState = newDState} - ConwayTxCertPool poolCert -> do - newPState <- trans @(EraRule "POOL" era) $ TRC (PoolEnv slot pp, certPState, poolCert) - pure $ cState {certPState = newPState} - ConwayTxCertGov govCert -> do - newVState <- - trans @(EraRule "GOVCERT" era) $ TRC (ConwayGovCertEnv pp currentEpoch, certVState, govCert) - pure $ cState {certVState = newVState} - -instance - ( Era era - , STS (ConwayDELEG era) - , PredicateFailure (EraRule "DELEG" era) ~ ConwayDelegPredFailure era - ) => - Embed (ConwayDELEG era) (ConwayCERT era) - where - wrapFailed = DelegFailure - wrapEvent = absurd - -instance - ( Era era - , STS (ShelleyPOOL era) - , Event (EraRule "POOL" era) ~ PoolEvent era - , PredicateFailure (EraRule "POOL" era) ~ ShelleyPoolPredFailure era - , PredicateFailure (ShelleyPOOL era) ~ ShelleyPoolPredFailure era - , BaseM (ShelleyPOOL era) ~ ShelleyBase - ) => - Embed (ShelleyPOOL era) (ConwayCERT era) - where - wrapFailed = PoolFailure - wrapEvent = PoolEvent - -instance - ( Era era - , STS (ConwayGOVCERT era) - , PredicateFailure (EraRule "GOVCERT" era) ~ ConwayGovCertPredFailure era - ) => - Embed (ConwayGOVCERT era) (ConwayCERT era) - where - wrapFailed = GovCertFailure - wrapEvent = absurd - -instance - ( Typeable era - , EncCBOR (PredicateFailure (EraRule "DELEG" era)) - , EncCBOR (PredicateFailure (EraRule "POOL" era)) - , EncCBOR (PredicateFailure (EraRule "GOVCERT" era)) - ) => - EncCBOR (ConwayCertPredFailure era) - where - encCBOR = - encode . \case - DelegFailure x -> Sum (DelegFailure @era) 1 !> To x - PoolFailure x -> Sum (PoolFailure @era) 2 !> To x - GovCertFailure x -> Sum (GovCertFailure @era) 3 !> To x - -instance - ( Typeable era - , DecCBOR (PredicateFailure (EraRule "DELEG" era)) - , DecCBOR (PredicateFailure (EraRule "POOL" era)) - , DecCBOR (PredicateFailure (EraRule "GOVCERT" era)) - ) => - DecCBOR (ConwayCertPredFailure era) - where - decCBOR = - decode $ Summands "ConwayCertPredFailure" $ \case - 1 -> SumD DelegFailure SumD PoolFailure SumD GovCertFailure Invalid n diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Certs.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Certs.hs deleted file mode 100644 index 01b73873e6d..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Certs.hs +++ /dev/null @@ -1,270 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE TypeSynonymInstances #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Conway.Rules.Certs ( - ConwayCERTS, - ConwayCertsPredFailure (..), - ConwayCertsEvent (..), - CertsEnv (..), -) where - -import Cardano.Ledger.BaseTypes ( - EpochNo (EpochNo), - Globals (..), - ShelleyBase, - SlotNo, - addEpochInterval, - binOpEpochNo, - ) -import Cardano.Ledger.Binary (DecCBOR (..), EncCBOR (..)) -import Cardano.Ledger.Binary.Coders ( - Decode (..), - Encode (..), - decode, - encode, - (!>), - ( - Eq (ConwayCertsPredFailure era) - -deriving stock instance - Show (PredicateFailure (EraRule "CERT" era)) => - Show (ConwayCertsPredFailure era) - -instance - NoThunks (PredicateFailure (EraRule "CERT" era)) => - NoThunks (ConwayCertsPredFailure era) - -instance - NFData (PredicateFailure (EraRule "CERT" era)) => - NFData (ConwayCertsPredFailure era) - -newtype ConwayCertsEvent era = CertEvent (Event (EraRule "CERT" era)) - deriving (Generic) - -deriving instance Eq (Event (EraRule "CERT" era)) => Eq (ConwayCertsEvent era) - -instance NFData (Event (EraRule "CERT" era)) => NFData (ConwayCertsEvent era) - -instance - ( Era era - , EncCBOR (PredicateFailure (EraRule "CERT" era)) - ) => - EncCBOR (ConwayCertsPredFailure era) - where - encCBOR = - encode . \case - DelegateeNotRegisteredDELEG kh -> Sum (DelegateeNotRegisteredDELEG @era) 0 !> To kh - WithdrawalsNotInRewardsCERTS rs -> Sum (WithdrawalsNotInRewardsCERTS @era) 1 !> To rs - CertFailure x -> Sum (CertFailure @era) 2 !> To x - -instance - ( Era era - , DecCBOR (PredicateFailure (EraRule "CERT" era)) - ) => - DecCBOR (ConwayCertsPredFailure era) - where - decCBOR = decode $ Summands "ConwayGovPredFailure" $ \case - 0 -> SumD DelegateeNotRegisteredDELEG SumD WithdrawalsNotInRewardsCERTS SumD CertFailure Invalid k - -instance - ( EraTx era - , ConwayEraTxBody era - , ConwayEraPParams era - , State (EraRule "CERT" era) ~ CertState era - , Signal (EraRule "CERT" era) ~ TxCert era - , Environment (EraRule "CERT" era) ~ CertEnv era - , Embed (EraRule "CERT" era) (ConwayCERTS era) - ) => - STS (ConwayCERTS era) - where - type State (ConwayCERTS era) = CertState era - type Signal (ConwayCERTS era) = Seq (TxCert era) - type Environment (ConwayCERTS era) = CertsEnv era - type BaseM (ConwayCERTS era) = ShelleyBase - type - PredicateFailure (ConwayCERTS era) = - ConwayCertsPredFailure era - type Event (ConwayCERTS era) = ConwayCertsEvent era - - transitionRules = [conwayCertsTransition @era] - -conwayCertsTransition :: - forall era. - ( EraTx era - , ConwayEraTxBody era - , State (EraRule "CERT" era) ~ CertState era - , Embed (EraRule "CERT" era) (ConwayCERTS era) - , Environment (EraRule "CERT" era) ~ CertEnv era - , Signal (EraRule "CERT" era) ~ TxCert era - ) => - TransitionRule (ConwayCERTS era) -conwayCertsTransition = do - TRC - ( env@(CertsEnv tx pp slot currentEpoch) - , certState - , certificates - ) <- - judgmentContext - network <- liftSTS $ asks networkId - - case certificates of - Empty -> do - -- If there is a new governance proposal to vote on in this transaction, - -- AND the number of dormant-epochs recorded is greater than zero, we bump - -- the expiry for all DReps by the number of dormant epochs, and reset the - -- counter to zero. - -- It does not matter that this rule (CERTS) is called _before_ the GOV rule - -- in LEDGER, even though we cannot validate any governance proposal here, - -- since the entire transaction will fail if the proposal is not accepted in - -- GOV, and so will this expiry bump done here. It will be discarded. - let certState' = - let hasProposals = not . OSet.null $ tx ^. bodyTxL . proposalProceduresTxBodyL - numDormantEpochs = certState ^. certVStateL . vsNumDormantEpochsL - isNumDormantEpochsNonZero = numDormantEpochs /= EpochNo 0 - in if hasProposals && isNumDormantEpochsNonZero - then - certState - & certVStateL . vsDRepsL %~ (<&> (drepExpiryL %~ binOpEpochNo (+) numDormantEpochs)) - & certVStateL . vsNumDormantEpochsL .~ EpochNo 0 - else certState - - -- Update DRep expiry for all DReps that are voting in this transaction. - -- This will execute in mutual-exclusion to the previous updates to DRep expiry, - -- because if there are no proposals to vote on , there will be no votes either. - let drepActivity = pp ^. ppDRepActivityL - updatedVSDReps = - Map.foldlWithKey' - ( \dreps voter _ -> case voter of - DRepVoter cred -> Map.adjust (drepExpiryL .~ addEpochInterval currentEpoch drepActivity) cred dreps - _ -> dreps - ) - (certState' ^. certVStateL . vsDRepsL) - (unVotingProcedures $ tx ^. bodyTxL . votingProceduresTxBodyL) - certStateWithDRepExpiryUpdated = certState' & certVStateL . vsDRepsL .~ updatedVSDReps - dState = certStateWithDRepExpiryUpdated ^. certDStateL - withdrawals = tx ^. bodyTxL . withdrawalsTxBodyL - - -- Validate withdrawals and rewards and drain withdrawals - validateTrans WithdrawalsNotInRewardsCERTS $ validateZeroRewards dState withdrawals network - - pure $ certStateWithDRepExpiryUpdated & certDStateL .~ drainWithdrawals dState withdrawals - gamma :|> txCert -> do - certState' <- - trans @(ConwayCERTS era) $ TRC (env, certState, gamma) - validateTrans DelegateeNotRegisteredDELEG $ - case getDelegateeTxCert txCert >>= getStakePoolDelegatee of - Nothing -> pure () - Just targetPool -> - validateStakePoolDelegateeRegistered (certPState certState') targetPool - trans @(EraRule "CERT" era) $ - TRC (CertEnv slot pp currentEpoch, certState', txCert) - -instance - ( Era era - , STS (ConwayCERT era) - , BaseM (EraRule "CERT" era) ~ ShelleyBase - , Event (EraRule "CERT" era) ~ ConwayCertEvent era - , PredicateFailure (EraRule "CERT" era) ~ ConwayCertPredFailure era - ) => - Embed (ConwayCERT era) (ConwayCERTS era) - where - wrapFailed = CertFailure - wrapEvent = CertEvent diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Deleg.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Deleg.hs deleted file mode 100644 index 36bd28fe01d..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Deleg.hs +++ /dev/null @@ -1,182 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE EmptyDataDeriving #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Conway.Rules.Deleg ( - ConwayDELEG, - ConwayDelegPredFailure (..), -) where - -import Cardano.Ledger.BaseTypes (ShelleyBase) -import Cardano.Ledger.Binary (DecCBOR (..), EncCBOR (..)) -import Cardano.Ledger.Binary.Coders ( - Decode (From, Invalid, SumD, Summands), - Encode (Sum, To), - decode, - encode, - (!>), - ( EncCBOR (ConwayDelegPredFailure era) where - encCBOR = - encode . \case - IncorrectDepositDELEG mCoin -> - Sum (IncorrectDepositDELEG @era) 1 !> To mCoin - StakeKeyRegisteredDELEG stakeCred -> - Sum (StakeKeyRegisteredDELEG @era) 2 !> To stakeCred - StakeKeyNotRegisteredDELEG stakeCred -> - Sum (StakeKeyNotRegisteredDELEG @era) 3 !> To stakeCred - StakeKeyHasNonZeroRewardAccountBalanceDELEG mCoin -> - Sum (StakeKeyHasNonZeroRewardAccountBalanceDELEG @era) 4 !> To mCoin - DRepAlreadyRegisteredForStakeKeyDELEG stakeCred -> - Sum (DRepAlreadyRegisteredForStakeKeyDELEG @era) 5 !> To stakeCred - -instance Era era => DecCBOR (ConwayDelegPredFailure era) where - decCBOR = decode $ Summands "ConwayDelegPredFailure" $ \case - 1 -> SumD IncorrectDepositDELEG SumD StakeKeyRegisteredDELEG SumD StakeKeyNotRegisteredDELEG SumD StakeKeyHasNonZeroRewardAccountBalanceDELEG SumD DRepAlreadyRegisteredForStakeKeyDELEG Invalid n - -instance - ( EraPParams era - , State (EraRule "DELEG" era) ~ DState era - , Signal (EraRule "DELEG" era) ~ ConwayDelegCert (EraCrypto era) - , Environment (EraRule "DELEG" era) ~ PParams era - , EraRule "DELEG" era ~ ConwayDELEG era - ) => - STS (ConwayDELEG era) - where - type State (ConwayDELEG era) = DState era - type Signal (ConwayDELEG era) = ConwayDelegCert (EraCrypto era) - type Environment (ConwayDELEG era) = PParams era - type BaseM (ConwayDELEG era) = ShelleyBase - type PredicateFailure (ConwayDELEG era) = ConwayDelegPredFailure era - type Event (ConwayDELEG era) = Void - - transitionRules = [conwayDelegTransition @era] - -conwayDelegTransition :: forall era. EraPParams era => TransitionRule (ConwayDELEG era) -conwayDelegTransition = do - TRC - ( pp - , dState@DState {dsUnified} - , c - ) <- - judgmentContext - let ppKeyDeposit = pp ^. ppKeyDepositL - case c of - ConwayRegCert stakeCred sMayDeposit -> do - forM_ sMayDeposit $ checkDepositAgainstPParams ppKeyDeposit - dsUnified' <- checkAndAcceptDepositForStakeCred stakeCred ppKeyDeposit dsUnified - pure $ dState {dsUnified = dsUnified'} - ConwayUnRegCert stakeCred sMayDeposit -> do - checkStakeKeyIsRegistered stakeCred dsUnified - checkStakeKeyHasZeroRewardBalance stakeCred dsUnified - forM_ sMayDeposit $ checkDepositAgainstPaidDeposit stakeCred dsUnified - pure $ dState {dsUnified = UM.domDeleteAll (Set.singleton stakeCred) dsUnified} - ConwayDelegCert stakeCred delegatee -> do - checkStakeKeyIsRegistered stakeCred dsUnified - pure $ dState {dsUnified = processDelegation stakeCred delegatee dsUnified} - ConwayRegDelegCert stakeCred delegatee deposit -> do - checkDepositAgainstPParams ppKeyDeposit deposit - dsUnified' <- checkAndAcceptDepositForStakeCred stakeCred deposit dsUnified - pure $ dState {dsUnified = processDelegation stakeCred delegatee dsUnified'} - where - -- Whenever we want to accept new deposit, we must always check if the stake credential isn't already registered. - checkAndAcceptDepositForStakeCred stakeCred deposit dsUnified = do - checkStakeKeyNotRegistered stakeCred dsUnified - -- This looks like it should have been a right-biased union, so that the (reward, deposit) pair would be inserted - -- (or overwritten) in the UMap. But since we are sure that the stake credential isn't a member yet - -- it will still work. The reason we cannot use a right-biased union here is because UMap treats deposits specially - -- in right-biased unions, and is unable to accept new deposits. - pure $ - UM.RewDepUView dsUnified - UM.∪ (stakeCred, UM.RDPair (UM.CompactCoin 0) (UM.compactCoinOrError deposit)) - delegStake stakeCred sPool dsUnified = - UM.SPoolUView dsUnified UM.⨃ Map.singleton stakeCred sPool - delegVote stakeCred dRep dsUnified = - UM.DRepUView dsUnified UM.⨃ Map.singleton stakeCred dRep - processDelegation stakeCred delegatee dsUnified = - case delegatee of - DelegStake sPool -> delegStake stakeCred sPool dsUnified - DelegVote dRep -> delegVote stakeCred dRep dsUnified - DelegStakeVote sPool dRep -> delegVote stakeCred dRep $ delegStake stakeCred sPool dsUnified - checkDepositAgainstPParams ppKeyDeposit deposit = - deposit == ppKeyDeposit ?! IncorrectDepositDELEG deposit - checkDepositAgainstPaidDeposit stakeCred dsUnified deposit = - Just deposit - == fmap (UM.fromCompact . UM.rdDeposit) (UM.lookup stakeCred $ UM.RewDepUView dsUnified) - ?! IncorrectDepositDELEG deposit - checkStakeKeyNotRegistered stakeCred dsUnified = - UM.notMember stakeCred (UM.RewDepUView dsUnified) ?! StakeKeyRegisteredDELEG stakeCred - checkStakeKeyIsRegistered stakeCred dsUnified = - UM.member stakeCred (UM.RewDepUView dsUnified) ?! StakeKeyNotRegisteredDELEG stakeCred - checkStakeKeyHasZeroRewardBalance stakeCred dsUnified = - let mReward = UM.rdReward <$> UM.lookup stakeCred (UM.RewDepUView dsUnified) - in forM_ mReward $ \r -> r == mempty ?! StakeKeyHasNonZeroRewardAccountBalanceDELEG (UM.fromCompact r) diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Enact.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Enact.hs deleted file mode 100644 index cfca92aee7e..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Enact.hs +++ /dev/null @@ -1,121 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Conway.Rules.Enact ( - ConwayENACT, - EnactSignal (..), - EnactState (..), -) where - -import Cardano.Ledger.Address (RewardAccount (..)) -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.Conway.Core -import Cardano.Ledger.Conway.Era (ConwayENACT, ConwayEra) -import Cardano.Ledger.Conway.Governance ( - Committee (..), - EnactState (..), - GovAction (..), - GovActionId (..), - GovPurposeId (GovPurposeId), - ensCommitteeL, - ensConstitutionL, - ensCurPParamsL, - ensPrevCommitteeL, - ensPrevConstitutionL, - ensPrevHardForkL, - ensPrevPParamUpdateL, - ensProtVerL, - ) -import Cardano.Ledger.Credential (Credential) -import Cardano.Ledger.Keys (KeyRole (..)) -import Cardano.Ledger.Val (Val (..)) -import Control.State.Transition.Extended ( - STS (..), - TRC (..), - TransitionRule, - judgmentContext, - ) -import Data.Foldable (fold) -import qualified Data.Map.Strict as Map -import qualified Data.Set as Set -import Data.Void (Void) -import GHC.Generics -import Lens.Micro - -type instance EraRuleEvent "ENACT" (ConwayEra c) = VoidEraRule "ENACT" (ConwayEra c) - -data EnactSignal era = EnactSignal - { esGovActionId :: !(GovActionId (EraCrypto era)) - , esGovAction :: !(GovAction era) - } - deriving (Eq, Show, Generic) - -instance EraGov era => STS (ConwayENACT era) where - type Environment (ConwayENACT era) = () - type PredicateFailure (ConwayENACT era) = Void - type Signal (ConwayENACT era) = EnactSignal era - type State (ConwayENACT era) = EnactState era - type BaseM (ConwayENACT era) = ShelleyBase - - initialRules = [] - transitionRules = [enactmentTransition] - -enactmentTransition :: forall era. EraPParams era => TransitionRule (ConwayENACT era) -enactmentTransition = do - TRC ((), st, EnactSignal govActionId act) <- judgmentContext - - pure $! - case act of - ParameterChange _ ppup _ -> - st - & ensCurPParamsL %~ (`applyPPUpdates` ppup) - & ensPrevPParamUpdateL .~ SJust (GovPurposeId govActionId) - HardForkInitiation _ pv -> - st - & ensProtVerL .~ pv - & ensPrevHardForkL .~ SJust (GovPurposeId govActionId) - TreasuryWithdrawals wdrls _ -> - let wdrlsAmount = fold wdrls - wdrlsNoNetworkId = Map.mapKeys raCredential wdrls - in st - { ensWithdrawals = Map.unionWith (<>) wdrlsNoNetworkId $ ensWithdrawals st - , ensTreasury = ensTreasury st <-> wdrlsAmount - } - NoConfidence _ -> - st - & ensCommitteeL .~ SNothing - & ensPrevCommitteeL .~ SJust (GovPurposeId govActionId) - UpdateCommittee _ membersToRemove membersToAdd newThreshold -> do - st - & ensCommitteeL %~ SJust . updatedCommittee membersToRemove membersToAdd newThreshold - & ensPrevCommitteeL .~ SJust (GovPurposeId govActionId) - NewConstitution _ c -> - st - & ensConstitutionL .~ c - & ensPrevConstitutionL .~ SJust (GovPurposeId govActionId) - InfoAction -> st - -updatedCommittee :: - Set.Set (Credential 'ColdCommitteeRole (EraCrypto era)) -> - Map.Map (Credential 'ColdCommitteeRole (EraCrypto era)) EpochNo -> - UnitInterval -> - StrictMaybe (Committee era) -> - Committee era -updatedCommittee membersToRemove membersToAdd newThreshold committee = - case committee of - SNothing -> Committee membersToAdd newThreshold - SJust (Committee currentMembers _) -> - let newCommitteeMembers = - Map.union - membersToAdd - (currentMembers `Map.withoutKeys` membersToRemove) - in Committee - newCommitteeMembers - newThreshold diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Epoch.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Epoch.hs deleted file mode 100644 index c8ddd29282a..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Epoch.hs +++ /dev/null @@ -1,421 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE EmptyCase #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Conway.Rules.Epoch ( - ConwayEPOCH, - PredicateFailure, - ConwayEpochEvent (..), -) -where - -import Cardano.Ledger.Address (RewardAccount (..)) -import Cardano.Ledger.BaseTypes (ShelleyBase) -import Cardano.Ledger.CertState ( - CertState (..), - CommitteeState (..), - VState, - dsUnifiedL, - vsCommitteeStateL, - vsNumDormantEpochsL, - ) -import Cardano.Ledger.Coin (Coin, compactCoinOrError) -import Cardano.Ledger.Conway.Core -import Cardano.Ledger.Conway.Era (ConwayEPOCH, ConwayEra, ConwayRATIFY) -import Cardano.Ledger.Conway.Governance ( - Committee, - ConwayEraGov (..), - ConwayGovState (..), - DRepPulsingState (..), - EnactState (..), - GovActionId, - GovActionState (..), - RatifyEnv (..), - RatifySignal (..), - RatifyState (..), - RunConwayRatify, - cgsCommitteeL, - cgsConstitutionL, - cgsCurPParamsL, - cgsPrevPParamsL, - cgsProposalsL, - dormantEpoch, - ensTreasuryL, - ensWithdrawalsL, - epochStateDRepPulsingStateL, - extractDRepPulsingState, - gasDeposit, - gasReturnAddr, - proposalsApplyEnactment, - proposalsGovStateL, - setFreshDRepPulsingState, - ) -import Cardano.Ledger.Conway.Governance.Procedures (Committee (..)) -import Cardano.Ledger.EpochBoundary (SnapShots (..)) -import Cardano.Ledger.Shelley.LedgerState ( - AccountState (..), - DState (..), - EpochState (..), - LedgerState (..), - PState (..), - UTxOState (..), - asTreasuryL, - esAccountState, - esAccountStateL, - esLStateL, - esSnapshotsL, - lsCertStateL, - lsUTxOStateL, - totalObligation, - utxosDepositedL, - utxosDonationL, - utxosGovStateL, - ) -import Cardano.Ledger.Shelley.Rewards () -import Cardano.Ledger.Shelley.Rules ( - ShelleyPOOLREAP, - ShelleyPoolreapEnv (..), - ShelleyPoolreapEvent, - ShelleyPoolreapPredFailure, - ShelleyPoolreapState (..), - ShelleySNAP, - ShelleySnapPredFailure, - SnapEnv (..), - UpecPredFailure, - ) -import qualified Cardano.Ledger.Shelley.Rules as Shelley -import Cardano.Ledger.Slot (EpochNo) -import Cardano.Ledger.UMap (RDPair (..), UMap, UView (..), (∪+), (◁)) -import qualified Cardano.Ledger.UMap as UMap -import Cardano.Ledger.Val (zero, (<->)) -import Control.DeepSeq (NFData) -import Control.SetAlgebra (eval, (⨃)) -import Control.State.Transition ( - Embed (..), - STS (..), - TRC (..), - TransitionRule, - judgmentContext, - liftSTS, - tellEvent, - trans, - ) -import Data.Foldable (Foldable (..)) -import qualified Data.Map.Strict as Map -import Data.Maybe.Strict (StrictMaybe (..)) -import Data.Set (Set) -import qualified Data.Set as Set -import Data.Void (Void, absurd) -import GHC.Generics (Generic) -import Lens.Micro ((%~), (&), (.~), (<>~), (^.)) - -data ConwayEpochEvent era - = PoolReapEvent (Event (EraRule "POOLREAP" era)) - | SnapEvent (Event (EraRule "SNAP" era)) - | EpochBoundaryRatifyState (RatifyState era) - | GovInfoEvent - (Set (GovActionState era)) -- enacted - (Set (GovActionState era)) -- expired - (Set (GovActionId (EraCrypto era))) -- unclaimed - deriving (Generic) - -type instance EraRuleEvent "EPOCH" (ConwayEra c) = ConwayEpochEvent (ConwayEra c) - -deriving instance - ( EraPParams era - , Eq (Event (EraRule "POOLREAP" era)) - , Eq (Event (EraRule "SNAP" era)) - ) => - Eq (ConwayEpochEvent era) - -instance - ( EraPParams era - , NFData (Event (EraRule "POOLREAP" era)) - , NFData (Event (EraRule "SNAP" era)) - ) => - NFData (ConwayEpochEvent era) - -instance - ( EraTxOut era - , RunConwayRatify era - , ConwayEraGov era - , Embed (EraRule "SNAP" era) (ConwayEPOCH era) - , Environment (EraRule "SNAP" era) ~ SnapEnv era - , State (EraRule "SNAP" era) ~ SnapShots (EraCrypto era) - , Signal (EraRule "SNAP" era) ~ () - , Embed (EraRule "POOLREAP" era) (ConwayEPOCH era) - , Environment (EraRule "POOLREAP" era) ~ ShelleyPoolreapEnv era - , State (EraRule "POOLREAP" era) ~ ShelleyPoolreapState era - , Signal (EraRule "POOLREAP" era) ~ EpochNo - , Eq (UpecPredFailure era) - , Show (UpecPredFailure era) - , Embed (EraRule "RATIFY" era) (ConwayEPOCH era) - , Environment (EraRule "RATIFY" era) ~ RatifyEnv era - , GovState era ~ ConwayGovState era - , State (EraRule "RATIFY" era) ~ RatifyState era - , Signal (EraRule "RATIFY" era) ~ RatifySignal era - ) => - STS (ConwayEPOCH era) - where - type State (ConwayEPOCH era) = EpochState era - type Signal (ConwayEPOCH era) = EpochNo - type Environment (ConwayEPOCH era) = () - type BaseM (ConwayEPOCH era) = ShelleyBase - - -- EPOCH rule can never fail - type PredicateFailure (ConwayEPOCH era) = Void - type Event (ConwayEPOCH era) = ConwayEpochEvent era - transitionRules = [epochTransition] - -returnProposalDeposits :: - Foldable f => - f (GovActionState era) -> - UMap (EraCrypto era) -> - (UMap (EraCrypto era), Map.Map (GovActionId (EraCrypto era)) Coin) -returnProposalDeposits removedProposals oldUMap = - foldr' processProposal (oldUMap, mempty) removedProposals - where - processProposal - gas - (um, unclaimed) - | UMap.member (raCredential (gasReturnAddr gas)) (RewDepUView um) = - ( UMap.adjust - (addReward (gasDeposit gas)) - (raCredential (gasReturnAddr gas)) - (RewDepUView um) - , unclaimed - ) - | otherwise = (um, Map.insertWith (<>) (gasId gas) (gasDeposit gas) unclaimed) - addReward c rd = - -- Deposits have been validated at this point - rd {rdReward = rdReward rd <> compactCoinOrError c} - --- | When there have been zero governance proposals to vote on in the previous epoch --- increase the dormant-epoch counter by one. -updateNumDormantEpochs :: DRepPulsingState era -> VState era -> VState era -updateNumDormantEpochs pulser vState = - if dormantEpoch pulser - then vState & vsNumDormantEpochsL %~ succ - else vState - --- | Apply TreasuryWithdrawals to the EpochState --- --- acnt' = record acnt { treasury = treasury + UTxOState.fees utxoSt --- + getCoin unclaimed + donations ∸ totWithdrawals } --- --- The utxo fees and donations are applied in the remaining body of EPOCH transition -applyEnactedWithdrawals :: - AccountState -> - DState era -> - EnactState era -> - (AccountState, DState era, EnactState era) -applyEnactedWithdrawals accountState dState enactedState = - let enactedWithdrawals = enactedState ^. ensWithdrawalsL - rewardsUView = RewDepUView $ dState ^. dsUnifiedL - successfulWithdrawls = rewardsUView ◁ enactedWithdrawals - accountState' = - accountState - -- Subtract `successfulWithdrawals` from the treasury, and add them to the rewards UMap - -- `unclaimed` withdrawals remain in the treasury. - -- Compared to the spec, instead of adding `unclaimed` and subtracting `totWithdrawals` - -- + unclaimed - totWithdrawals - -- we just subtract the `refunds` - -- - refunds - & asTreasuryL %~ (<-> fold successfulWithdrawls) - -- The use of the partial function `compactCoinOrError` is justified here because - -- 1. the decoder for coin at the proposal-submission boundary has already - -- confirmed we have a compactible value - -- 2. the refunds and unsuccessful refunds together do not exceed the - -- current treasury value, as enforced by the `ENACT` rule. - dState' = - dState - & dsUnifiedL .~ (rewardsUView ∪+ (compactCoinOrError <$> successfulWithdrawls)) - -- Reset enacted withdrawals: - enactedState' = - enactedState - & ensWithdrawalsL .~ Map.empty - & ensTreasuryL .~ mempty - in (accountState', dState', enactedState') - -epochTransition :: - forall era. - ( RunConwayRatify era - , Embed (EraRule "SNAP" era) (ConwayEPOCH era) - , EraTxOut era - , Eq (UpecPredFailure era) - , Show (UpecPredFailure era) - , Environment (EraRule "SNAP" era) ~ SnapEnv era - , State (EraRule "SNAP" era) ~ SnapShots (EraCrypto era) - , Signal (EraRule "SNAP" era) ~ () - , Embed (EraRule "POOLREAP" era) (ConwayEPOCH era) - , Environment (EraRule "POOLREAP" era) ~ ShelleyPoolreapEnv era - , State (EraRule "POOLREAP" era) ~ ShelleyPoolreapState era - , Signal (EraRule "POOLREAP" era) ~ EpochNo - , Embed (EraRule "RATIFY" era) (ConwayEPOCH era) - , Environment (EraRule "RATIFY" era) ~ RatifyEnv era - , State (EraRule "RATIFY" era) ~ RatifyState era - , GovState era ~ ConwayGovState era - , Signal (EraRule "RATIFY" era) ~ RatifySignal era - , ConwayEraGov era - ) => - TransitionRule (ConwayEPOCH era) -epochTransition = do - TRC - ( () - , epochState0@EpochState - { esAccountState = accountState0 - , esSnapshots = snapshots0 - , esLState = ledgerState0 - } - , eNo - ) <- - judgmentContext - let govState0 = utxosGovState utxoState0 - curPParams = govState0 ^. curPParamsGovStateL - utxoState0 = lsUTxOState ledgerState0 - CertState vState pState0 dState0 = lsCertState ledgerState0 - snapshots1 <- - trans @(EraRule "SNAP" era) $ TRC (SnapEnv ledgerState0 curPParams, snapshots0, ()) - - -- Activate future StakePols - let newStakePoolParams = eval (psStakePoolParams pState0 ⨃ psFutureStakePoolParams pState0) - pState1 = - pState0 - { psStakePoolParams = newStakePoolParams - , psFutureStakePoolParams = Map.empty - } - PoolreapState utxoState1 accountState1 dState1 pState2 <- - trans @(EraRule "POOLREAP" era) $ - TRC (ShelleyPoolreapEnv vState, PoolreapState utxoState0 accountState0 dState0 pState1, eNo) - - let - stakePoolDistr = ssStakeMarkPoolDistr snapshots1 - pulsingState = epochState0 ^. epochStateDRepPulsingStateL - - ratState0@RatifyState {rsEnactState, rsEnacted, rsExpired} = - extractDRepPulsingState pulsingState - - (accountState2, dState2, EnactState {..}) = - applyEnactedWithdrawals accountState1 dState1 rsEnactState - - -- NOTE: It is important that we apply the results of ratifcation - -- and enactment from the pulser to the working copy of proposals. - -- The proposals in the pulser are a subset of the current - -- proposals, in that, in addition to the proposals in the pulser, - -- the current proposals now contain new proposals submitted during - -- the epoch that just passed (we are at its boundary here) and - -- any votes that were submitted to the already pulsing as well as - -- newly submitted proposals. We only need to apply the enactment - -- operations to this superset to get a new set of proposals with: - -- enacted actions and their sibling subtrees, as well as expired - -- actions and their subtrees, removed, and with all the votes - -- intact for the rest of them. - (newProposals, enactedActions, expiredActions) = - proposalsApplyEnactment rsEnacted rsExpired (govState0 ^. proposalsGovStateL) - - -- Apply the values from the computed EnactState to the GovState - govState1 = - govState0 - & cgsProposalsL .~ newProposals - & cgsCommitteeL .~ ensCommittee - & cgsConstitutionL .~ ensConstitution - & cgsCurPParamsL .~ ensCurPParams - & cgsPrevPParamsL .~ curPParams - - allRemovedGovActions = expiredActions `Map.union` enactedActions - (newUMap, unclaimed) = - returnProposalDeposits allRemovedGovActions $ - dState2 ^. dsUnifiedL - - tellEvent $ - GovInfoEvent - (Set.fromList $ Map.elems enactedActions) - (Set.fromList $ Map.elems expiredActions) - (Map.keysSet unclaimed) - - let - certState = - CertState - { certPState = pState2 - , certDState = dState2 & dsUnifiedL .~ newUMap - , certVState = - -- Increment the dormant epoch counter - updateNumDormantEpochs pulsingState vState - -- Remove cold credentials of committee members that were removed or were invalid - & vsCommitteeStateL %~ updateCommitteeState (govState1 ^. cgsCommitteeL) - } - accountState3 = - accountState2 - -- Move donations and unclaimed rewards from proposals to treasury: - & asTreasuryL <>~ (utxoState0 ^. utxosDonationL <> fold unclaimed) - utxoState2 = - utxoState1 - & utxosDepositedL .~ totalObligation certState govState1 - -- Clear the donations field: - & utxosDonationL .~ zero - & utxosGovStateL .~ govState1 - ledgerState1 = - ledgerState0 - & lsCertStateL .~ certState - & lsUTxOStateL .~ utxoState2 - epochState1 = - epochState0 - & esAccountStateL .~ accountState3 - & esSnapshotsL .~ snapshots1 - & esLStateL .~ ledgerState1 - tellEvent $ EpochBoundaryRatifyState ratState0 - liftSTS $ setFreshDRepPulsingState eNo stakePoolDistr epochState1 - -instance - ( Era era - , STS (ShelleyPOOLREAP era) - , PredicateFailure (EraRule "POOLREAP" era) ~ ShelleyPoolreapPredFailure era - , Event (EraRule "POOLREAP" era) ~ ShelleyPoolreapEvent era - ) => - Embed (ShelleyPOOLREAP era) (ConwayEPOCH era) - where - wrapFailed = \case {} - wrapEvent = PoolReapEvent - -instance - ( EraTxOut era - , PredicateFailure (EraRule "SNAP" era) ~ ShelleySnapPredFailure era - , Event (EraRule "SNAP" era) ~ Shelley.SnapEvent era - ) => - Embed (ShelleySNAP era) (ConwayEPOCH era) - where - wrapFailed = \case {} - wrapEvent = SnapEvent - -instance - ( EraGov era - , PredicateFailure (ConwayRATIFY era) ~ Void - , STS (ConwayRATIFY era) - , BaseM (ConwayRATIFY era) ~ ShelleyBase - , Event (ConwayRATIFY era) ~ Void - ) => - Embed (ConwayRATIFY era) (ConwayEPOCH era) - where - wrapFailed = absurd - wrapEvent = absurd - -updateCommitteeState :: StrictMaybe (Committee era) -> CommitteeState era -> CommitteeState era -updateCommitteeState committee (CommitteeState creds) = - CommitteeState $ Map.intersection creds members - where - members = foldMap' committeeMembers committee diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Gov.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Gov.hs deleted file mode 100644 index 50914328c0a..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Gov.hs +++ /dev/null @@ -1,461 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE EmptyDataDeriving #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Conway.Rules.Gov ( - ConwayGOV, - GovEnv (..), - ConwayGovEvent (..), - ConwayGovPredFailure (..), -) where - -import Cardano.Ledger.Address (RewardAccount, raNetwork) -import Cardano.Ledger.BaseTypes ( - EpochInterval (..), - EpochNo (..), - Network, - ProtVer, - ShelleyBase, - StrictMaybe (SJust), - addEpochInterval, - networkId, - ) -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - ) -import Cardano.Ledger.Binary.Coders ( - Decode (..), - Encode (..), - decode, - encode, - (!>), - ( NFData (GovEnv era) -deriving instance (Show (PParams era), Era era) => Show (GovEnv era) -deriving instance Eq (PParams era) => Eq (GovEnv era) - -data ConwayGovPredFailure era - = GovActionsDoNotExist (NonEmpty (GovActionId (EraCrypto era))) - | MalformedProposal (GovAction era) - | ProposalProcedureNetworkIdMismatch (RewardAccount (EraCrypto era)) Network - | TreasuryWithdrawalsNetworkIdMismatch (Set.Set (RewardAccount (EraCrypto era))) Network - | ProposalDepositIncorrect - -- | Submitted deposit - Coin - -- | Expected deposit taken from `PParams` - Coin - | -- | Some governance actions are not allowed to be voted on by certain types of - -- Voters. This failure lists all governance action ids with their respective voters - -- that are not allowed to vote on those governance actions. - DisallowedVoters !(NonEmpty (Voter (EraCrypto era), GovActionId (EraCrypto era))) - | ConflictingCommitteeUpdate - -- | Credentials that are mentioned as members to be both removed and added - (Set.Set (Credential 'ColdCommitteeRole (EraCrypto era))) - | ExpirationEpochTooSmall - -- | Members for which the expiration epoch has already been reached - (Map.Map (Credential 'ColdCommitteeRole (EraCrypto era)) EpochNo) - | InvalidPrevGovActionId (ProposalProcedure era) - | VotingOnExpiredGovAction (NonEmpty (Voter (EraCrypto era), GovActionId (EraCrypto era))) - | ProposalCantFollow - -- | The PrevGovActionId of the HardForkInitiation that fails - (StrictMaybe (GovPurposeId 'HardForkPurpose era)) - -- | Its protocol version - ProtVer - -- | The ProtVer of the Previous GovAction pointed to by the one proposed - ProtVer - | InvalidPolicyHash - -- | The policy script hash in the proposal - (StrictMaybe (ScriptHash (EraCrypto era))) - -- | The policy script hash of the current constitution - (StrictMaybe (ScriptHash (EraCrypto era))) - deriving (Eq, Show, Generic) - -type instance EraRuleFailure "GOV" (ConwayEra c) = ConwayGovPredFailure (ConwayEra c) - -type instance EraRuleEvent "GOV" (ConwayEra c) = ConwayGovEvent (ConwayEra c) - -instance InjectRuleFailure "GOV" ConwayGovPredFailure (ConwayEra c) - -instance EraPParams era => NFData (ConwayGovPredFailure era) - -instance EraPParams era => NoThunks (ConwayGovPredFailure era) - -instance EraPParams era => DecCBOR (ConwayGovPredFailure era) where - decCBOR = decode $ Summands "ConwayGovPredFailure" $ \case - 0 -> SumD GovActionsDoNotExist SumD MalformedProposal SumD ProposalProcedureNetworkIdMismatch SumD TreasuryWithdrawalsNetworkIdMismatch SumD ProposalDepositIncorrect SumD DisallowedVoters SumD ConflictingCommitteeUpdate SumD ExpirationEpochTooSmall SumD InvalidPrevGovActionId SumD VotingOnExpiredGovAction SumD ProposalCantFollow SumD InvalidPolicyHash Invalid k - -instance EraPParams era => EncCBOR (ConwayGovPredFailure era) where - encCBOR = - encode . \case - GovActionsDoNotExist gid -> Sum GovActionsDoNotExist 0 !> To gid - MalformedProposal ga -> Sum MalformedProposal 1 !> To ga - ProposalProcedureNetworkIdMismatch acnt nid -> - Sum ProposalProcedureNetworkIdMismatch 2 !> To acnt !> To nid - TreasuryWithdrawalsNetworkIdMismatch acnts nid -> - Sum TreasuryWithdrawalsNetworkIdMismatch 3 !> To acnts !> To nid - ProposalDepositIncorrect submitted expected -> - Sum ProposalDepositIncorrect 4 !> To submitted !> To expected - DisallowedVoters votes -> - Sum DisallowedVoters 5 !> To votes - ConflictingCommitteeUpdate members -> - Sum ConflictingCommitteeUpdate 6 !> To members - ExpirationEpochTooSmall members -> - Sum ExpirationEpochTooSmall 7 !> To members - InvalidPrevGovActionId proposal -> - Sum InvalidPrevGovActionId 8 !> To proposal - VotingOnExpiredGovAction ga -> - Sum VotingOnExpiredGovAction 9 !> To ga - ProposalCantFollow prevgaid pv1 pv2 -> - Sum ProposalCantFollow 10 - !> To prevgaid - !> To pv1 - !> To pv2 - InvalidPolicyHash got expected -> - Sum InvalidPolicyHash 11 - !> To got - !> To expected - -instance EraPParams era => ToCBOR (ConwayGovPredFailure era) where - toCBOR = toEraCBOR @era - -instance EraPParams era => FromCBOR (ConwayGovPredFailure era) where - fromCBOR = fromEraCBOR @era - -data ConwayGovEvent era - = GovNewProposals !(TxId (EraCrypto era)) !(Proposals era) - deriving (Generic, Eq) - -instance EraPParams era => NFData (ConwayGovEvent era) - -instance - ( ConwayEraPParams era - , EraRule "GOV" era ~ ConwayGOV era - , InjectRuleFailure "GOV" ConwayGovPredFailure era - ) => - STS (ConwayGOV era) - where - type State (ConwayGOV era) = Proposals era - type Signal (ConwayGOV era) = GovProcedures era - type Environment (ConwayGOV era) = GovEnv era - type BaseM (ConwayGOV era) = ShelleyBase - type PredicateFailure (ConwayGOV era) = ConwayGovPredFailure era - type Event (ConwayGOV era) = ConwayGovEvent era - - initialRules = [] - - transitionRules = [govTransition @era] - -checkVotesAreNotForExpiredActions :: - EpochNo -> - [(Voter (EraCrypto era), GovActionState era)] -> - Test (ConwayGovPredFailure era) -checkVotesAreNotForExpiredActions curEpoch voters = - let votesOnExpiredActions = filter (\(_, GovActionState {gasExpiresAfter}) -> curEpoch > gasExpiresAfter) voters - in failureOnNonEmpty votesOnExpiredActions $ - VotingOnExpiredGovAction . fmap (second gasId) - -checkVotersAreValid :: - forall era. - ConwayEraPParams era => - CommitteeState era -> - [(Voter (EraCrypto era), GovActionState era)] -> - Test (ConwayGovPredFailure era) -checkVotersAreValid committeeState voters = - let canVoteOn voter govAction = case voter of - CommitteeVoter {} -> isCommitteeVotingAllowed committeeState govAction - DRepVoter {} -> isDRepVotingAllowed govAction - StakePoolVoter {} -> isStakePoolVotingAllowed govAction - disallowedVoters = - filter - (\(voter, action) -> not $ voter `canVoteOn` gasAction action) - voters - in failureOnNonEmpty disallowedVoters $ - DisallowedVoters . fmap (second gasId) - -actionWellFormed :: ConwayEraPParams era => GovAction era -> Test (ConwayGovPredFailure era) -actionWellFormed ga = failureUnless isWellFormed $ MalformedProposal ga - where - isWellFormed = case ga of - ParameterChange _ ppd _ -> ppuWellFormed ppd - _ -> True - -mkGovActionState :: - GovActionId (EraCrypto era) -> - ProposalProcedure era -> - -- | The number of epochs to expiry from protocol parameters - EpochInterval -> - -- | The current epoch - EpochNo -> - GovActionState era -mkGovActionState actionId proposal expiryInterval curEpoch = - GovActionState - { gasId = actionId - , gasCommitteeVotes = mempty - , gasDRepVotes = mempty - , gasStakePoolVotes = mempty - , gasProposalProcedure = proposal - , gasProposedIn = curEpoch - , gasExpiresAfter = addEpochInterval curEpoch expiryInterval - } - -checkPolicy :: - StrictMaybe (ScriptHash (EraCrypto era)) -> - StrictMaybe (ScriptHash (EraCrypto era)) -> - Test (ConwayGovPredFailure era) -checkPolicy expectedPolicyHash actualPolicyHash = - failureUnless (actualPolicyHash == expectedPolicyHash) $ - InvalidPolicyHash actualPolicyHash expectedPolicyHash - -govTransition :: - forall era. - ( ConwayEraPParams era - , STS (EraRule "GOV" era) - , Event (EraRule "GOV" era) ~ ConwayGovEvent era - , Signal (EraRule "GOV" era) ~ GovProcedures era - , PredicateFailure (EraRule "GOV" era) ~ ConwayGovPredFailure era - , BaseM (EraRule "GOV" era) ~ ShelleyBase - , Environment (EraRule "GOV" era) ~ GovEnv era - , State (EraRule "GOV" era) ~ Proposals era - , InjectRuleFailure "GOV" ConwayGovPredFailure era - ) => - TransitionRule (EraRule "GOV" era) -govTransition = do - TRC - ( GovEnv txid currentEpoch pp prevGovActionIds constitutionPolicy committeeState - , st - , gp - ) <- - judgmentContext - - expectedNetworkId <- liftSTS $ asks networkId - - let processProposal ps (idx, proposal@ProposalProcedure {..}) = do - let newGaid = GovActionId txid idx - - -- In a HardFork, check that the ProtVer can follow - let badHardFork = do - (prevGaid, newProtVer, prevProtVer) <- - preceedingHardFork @era pProcGovAction pp prevGovActionIds st - if pvCanFollow prevProtVer newProtVer - then Nothing - else Just $ ProposalCantFollow @era prevGaid newProtVer prevProtVer - failOnJust badHardFork id - - -- PParamsUpdate well-formedness check - runTest $ actionWellFormed pProcGovAction - - -- Deposit check - let expectedDep = pp ^. ppGovActionDepositL - in pProcDeposit - == expectedDep - ?! ProposalDepositIncorrect pProcDeposit expectedDep - - -- Return address network id check - raNetwork pProcReturnAddr - == expectedNetworkId - ?! ProposalProcedureNetworkIdMismatch pProcReturnAddr expectedNetworkId - - -- Treasury withdrawal return address and committee well-formedness checks - case pProcGovAction of - TreasuryWithdrawals wdrls proposalPolicy -> - let mismatchedAccounts = - Set.filter ((/= expectedNetworkId) . raNetwork) $ Map.keysSet wdrls - in do - Set.null mismatchedAccounts - ?! TreasuryWithdrawalsNetworkIdMismatch mismatchedAccounts expectedNetworkId - - -- Policy check - runTest $ checkPolicy @era constitutionPolicy proposalPolicy - UpdateCommittee _mPrevGovActionId membersToRemove membersToAdd _qrm -> do - checkConflictingUpdate - checkExpirationEpoch - where - checkConflictingUpdate = - let conflicting = - Set.intersection - (Map.keysSet membersToAdd) - membersToRemove - in Set.null conflicting ?! ConflictingCommitteeUpdate conflicting - checkExpirationEpoch = - let invalidMembers = Map.filter (<= currentEpoch) membersToAdd - in Map.null invalidMembers ?! ExpirationEpochTooSmall invalidMembers - ParameterChange _ _ proposalPolicy -> - runTest $ checkPolicy @era constitutionPolicy proposalPolicy - _ -> pure () - - -- Ancestry checks and accept proposal - let expiry = pp ^. ppGovActionLifetimeL - actionState = - mkGovActionState - newGaid - proposal - expiry - currentEpoch - in case proposalsAddAction actionState ps of - Just updatedPs -> pure updatedPs - Nothing -> ps <$ failBecause (InvalidPrevGovActionId proposal) - - proposals <- - foldlM' - processProposal - st - (indexedGovProps $ SSeq.fromStrict $ OSet.toStrictSeq $ gpProposalProcedures gp) - - -- Voting - let votingProcedures = gpVotingProcedures gp - -- Inversion of the keys in VotingProcedures, where we can find - -- the voters for every govActionId - (unknownGovActionIds, knownVotes) = - foldrVotingProcedures - -- strictness is not needed for `unknown` - ( \voter gaId _ (unknown, !known) -> - case Map.lookup gaId curGovActionIds of - Just gas -> (unknown, (voter, gas) : known) - Nothing -> (gaId : unknown, known) - ) - ([], []) - votingProcedures - curGovActionIds = proposalsActionsMap proposals - failOnNonEmpty unknownGovActionIds GovActionsDoNotExist - runTest $ checkVotesAreNotForExpiredActions currentEpoch knownVotes - runTest $ checkVotersAreValid committeeState knownVotes - - let - addVoterVote ps voter govActionId VotingProcedure {vProcVote} = - proposalsAddVote voter vProcVote govActionId ps - updatedProposalStates = foldlVotingProcedures addVoterVote proposals votingProcedures - - -- Report the event - tellEvent $ GovNewProposals txid updatedProposalStates - - pure updatedProposalStates - --- | If the GovAction is a HardFork, then return 3 things (if they exist) --- 1) The (StrictMaybe GovPurposeId), pointed to by the HardFork proposal --- 2) The proposed ProtVer --- 3) The ProtVer of the preceeding HardFork --- If it is not a HardFork, or the previous govActionId points to something other --- than HardFork, return Nothing. It will be verified with another predicate check. -preceedingHardFork :: - EraPParams era => - GovAction era -> - PParams era -> - GovRelation StrictMaybe era -> - Proposals era -> - Maybe (StrictMaybe (GovPurposeId 'HardForkPurpose era), ProtVer, ProtVer) -preceedingHardFork (HardForkInitiation mPrev newProtVer) pp pgaids ps - | mPrev == pgaids ^. grHardForkL = Just (mPrev, newProtVer, pp ^. ppProtocolVersionL) - | otherwise = do - SJust (GovPurposeId prevGovActionId) <- Just mPrev - HardForkInitiation _ prevProtVer <- gasAction <$> proposalsLookupId prevGovActionId ps - Just (mPrev, newProtVer, prevProtVer) -preceedingHardFork _ _ _ _ = Nothing diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/GovCert.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/GovCert.hs deleted file mode 100644 index 051574d5d94..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/GovCert.hs +++ /dev/null @@ -1,227 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE EmptyDataDeriving #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Conway.Rules.GovCert ( - ConwayGOVCERT, - ConwayGovCertPredFailure (..), - ConwayGovCertEnv (..), -) -where - -import Cardano.Ledger.BaseTypes ( - EpochNo, - ShelleyBase, - addEpochInterval, - ) -import Cardano.Ledger.Binary (DecCBOR (..), EncCBOR (..), encodeListLen) -import Cardano.Ledger.Binary.Coders -import Cardano.Ledger.CertState (CommitteeAuthorization (..), CommitteeState (..), VState (..)) -import Cardano.Ledger.Coin (Coin) -import Cardano.Ledger.Conway.Core -import Cardano.Ledger.Conway.Era (ConwayEra, ConwayGOVCERT) -import Cardano.Ledger.Conway.TxCert (ConwayGovCert (..)) -import Cardano.Ledger.Credential (Credential) -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.DRep (DRepState (..), drepAnchorL, drepDepositL, drepExpiryL) -import Cardano.Ledger.Keys (KeyRole (ColdCommitteeRole, DRepRole)) -import Control.DeepSeq (NFData) -import Control.State.Transition.Extended ( - BaseM, - Environment, - Event, - PredicateFailure, - STS, - Signal, - State, - TRC (TRC), - TransitionRule, - failBecause, - judgmentContext, - transitionRules, - (?!), - ) -import qualified Data.Map.Strict as Map -import Data.Typeable (Typeable) -import Data.Void (Void) -import Data.Word (Word8) -import GHC.Generics (Generic) -import Lens.Micro ((&), (.~), (^.)) -import NoThunks.Class (NoThunks (..)) - -data ConwayGovCertEnv era = ConwayGovCertEnv - { cgcePParams :: !(PParams era) - , cgceCurrentEpoch :: !EpochNo - } - deriving (Generic) - -deriving instance Show (PParams era) => Show (ConwayGovCertEnv era) - -deriving instance Eq (PParams era) => Eq (ConwayGovCertEnv era) - -data ConwayGovCertPredFailure era - = ConwayDRepAlreadyRegistered !(Credential 'DRepRole (EraCrypto era)) - | ConwayDRepNotRegistered !(Credential 'DRepRole (EraCrypto era)) - | ConwayDRepIncorrectDeposit !Coin !Coin -- The first is the given and the second is the expected deposit - | ConwayCommitteeHasPreviouslyResigned !(Credential 'ColdCommitteeRole (EraCrypto era)) - | ConwayDRepIncorrectRefund !Coin !Coin -- The first is the given and the second is the expected refund - deriving (Show, Eq, Generic) - -type instance EraRuleFailure "GOVCERT" (ConwayEra c) = ConwayGovCertPredFailure (ConwayEra c) - -type instance EraRuleEvent "GOVCERT" (ConwayEra c) = VoidEraRule "GOVCERT" (ConwayEra c) - -instance InjectRuleFailure "GOVCERT" ConwayGovCertPredFailure (ConwayEra c) - -instance NoThunks (ConwayGovCertPredFailure era) - -instance NFData (ConwayGovCertPredFailure era) - -instance - (Typeable era, Crypto (EraCrypto era)) => - EncCBOR (ConwayGovCertPredFailure era) - where - encCBOR = \case - ConwayDRepAlreadyRegistered cred -> - encodeListLen 2 - <> encCBOR (0 :: Word8) - <> encCBOR cred - ConwayDRepNotRegistered cred -> - encodeListLen 2 - <> encCBOR (1 :: Word8) - <> encCBOR cred - ConwayDRepIncorrectDeposit deposit expectedDeposit -> - encodeListLen 3 - <> encCBOR (2 :: Word8) - <> encCBOR deposit - <> encCBOR expectedDeposit - ConwayCommitteeHasPreviouslyResigned keyH -> - encodeListLen 2 - <> encCBOR (3 :: Word8) - <> encCBOR keyH - ConwayDRepIncorrectRefund refund expectedRefund -> - encodeListLen 3 - <> encCBOR (4 :: Word8) - <> encCBOR refund - <> encCBOR expectedRefund - -instance - (Typeable era, Crypto (EraCrypto era)) => - DecCBOR (ConwayGovCertPredFailure era) - where - decCBOR = decodeRecordSum "ConwayGovCertPredFailure" $ - \case - 0 -> do - cred <- decCBOR - pure (2, ConwayDRepAlreadyRegistered cred) - 1 -> do - cred <- decCBOR - pure (2, ConwayDRepNotRegistered cred) - 2 -> do - deposit <- decCBOR - expectedDeposit <- decCBOR - pure (3, ConwayDRepIncorrectDeposit deposit expectedDeposit) - 3 -> do - keyH <- decCBOR - pure (2, ConwayCommitteeHasPreviouslyResigned keyH) - 4 -> do - refund <- decCBOR - expectedRefund <- decCBOR - pure (3, ConwayDRepIncorrectRefund refund expectedRefund) - k -> invalidKey k - -instance - ( ConwayEraPParams era - , State (EraRule "GOVCERT" era) ~ VState era - , Signal (EraRule "GOVCERT" era) ~ ConwayGovCert (EraCrypto era) - , Environment (EraRule "GOVCERT" era) ~ ConwayGovCertEnv era - , EraRule "GOVCERT" era ~ ConwayGOVCERT era - , Eq (PredicateFailure (EraRule "GOVCERT" era)) - , Show (PredicateFailure (EraRule "GOVCERT" era)) - ) => - STS (ConwayGOVCERT era) - where - type State (ConwayGOVCERT era) = VState era - type Signal (ConwayGOVCERT era) = ConwayGovCert (EraCrypto era) - type Environment (ConwayGOVCERT era) = ConwayGovCertEnv era - type BaseM (ConwayGOVCERT era) = ShelleyBase - type PredicateFailure (ConwayGOVCERT era) = ConwayGovCertPredFailure era - type Event (ConwayGOVCERT era) = Void - - transitionRules = [conwayGovCertTransition @era] - -conwayGovCertTransition :: - ConwayEraPParams era => TransitionRule (ConwayGOVCERT era) -conwayGovCertTransition = do - TRC - ( ConwayGovCertEnv {cgcePParams, cgceCurrentEpoch} - , vState@VState {vsDReps} - , c - ) <- - judgmentContext - let ppDRepDeposit = cgcePParams ^. ppDRepDepositL - ppDRepActivity = cgcePParams ^. ppDRepActivityL - case c of - ConwayRegDRep cred deposit mAnchor -> do - Map.notMember cred vsDReps ?! ConwayDRepAlreadyRegistered cred - deposit == ppDRepDeposit ?! ConwayDRepIncorrectDeposit deposit ppDRepDeposit - pure - vState - { vsDReps = - Map.insert - cred - (DRepState (addEpochInterval cgceCurrentEpoch ppDRepActivity) mAnchor ppDRepDeposit) - vsDReps - } - ConwayUnRegDRep cred refund -> do - case Map.lookup cred vsDReps of - Nothing -> failBecause $ ConwayDRepNotRegistered cred - Just drepState -> - let paidDeposit = drepState ^. drepDepositL - in refund == paidDeposit ?! ConwayDRepIncorrectRefund refund paidDeposit - pure vState {vsDReps = Map.delete cred vsDReps} - ConwayAuthCommitteeHotKey coldCred hotCred -> - checkAndOverwriteCommitteeHotCred vState coldCred $ CommitteeHotCredential hotCred - ConwayResignCommitteeColdKey coldCred anchor -> - checkAndOverwriteCommitteeHotCred vState coldCred $ CommitteeMemberResigned anchor - -- Update a DRep expiry too along with its anchor. - ConwayUpdateDRep cred mAnchor -> do - Map.member cred vsDReps ?! ConwayDRepNotRegistered cred - pure - vState - { vsDReps = - Map.adjust - ( \drepState -> - drepState - & drepExpiryL .~ addEpochInterval cgceCurrentEpoch ppDRepActivity - & drepAnchorL .~ mAnchor - ) - cred - vsDReps - } - where - checkColdCredHasNotResigned coldCred csCommitteeCreds = - case Map.lookup coldCred csCommitteeCreds of - Just (CommitteeMemberResigned _) -> failBecause $ ConwayCommitteeHasPreviouslyResigned coldCred - _ -> pure () - checkAndOverwriteCommitteeHotCred vState@VState {vsCommitteeState = CommitteeState csCommitteeCreds} coldCred hotCred = do - checkColdCredHasNotResigned coldCred csCommitteeCreds - pure - vState - { vsCommitteeState = - CommitteeState - { csCommitteeCreds = Map.insert coldCred hotCred csCommitteeCreds - } - } diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Ledger.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Ledger.hs deleted file mode 100644 index 63f9678576d..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Ledger.hs +++ /dev/null @@ -1,493 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Conway.Rules.Ledger ( - ConwayLEDGER, - ConwayLedgerPredFailure (..), - ConwayLedgerEvent (..), -) where - -import Cardano.Crypto.DSIGN (DSIGNAlgorithm (..)) -import Cardano.Crypto.Hash.Class (Hash) -import Cardano.Ledger.Address (RewardAccount (..)) -import Cardano.Ledger.Allegra.Rules (AllegraUtxoPredFailure) -import Cardano.Ledger.Alonzo.Rules ( - AlonzoUtxoPredFailure, - AlonzoUtxosPredFailure, - AlonzoUtxowEvent, - AlonzoUtxowPredFailure, - ) -import Cardano.Ledger.Alonzo.Scripts (AlonzoScript) -import Cardano.Ledger.Alonzo.UTxO (AlonzoScriptsNeeded (..)) -import Cardano.Ledger.Babbage.Rules ( - BabbageUtxoPredFailure, - BabbageUtxowPredFailure, - ) -import Cardano.Ledger.Babbage.Tx (IsValid (..)) -import Cardano.Ledger.Babbage.TxBody (BabbageTxOut (..)) -import Cardano.Ledger.BaseTypes (ShelleyBase, StrictMaybe (..), epochInfoPure) -import Cardano.Ledger.Binary (DecCBOR (..), EncCBOR (..)) -import Cardano.Ledger.Binary.Coders -import Cardano.Ledger.Coin (Coin) -import Cardano.Ledger.Conway.Core -import Cardano.Ledger.Conway.Era (ConwayCERTS, ConwayEra, ConwayGOV, ConwayLEDGER, ConwayUTXOW) -import Cardano.Ledger.Conway.Governance ( - ConwayEraGov (..), - ConwayGovState (..), - GovProcedures (..), - Proposals, - constitutionScriptL, - pRootsL, - proposalsGovStateL, - toPrevGovActionIds, - ) -import Cardano.Ledger.Conway.Rules.Cert (CertEnv, ConwayCertPredFailure) -import Cardano.Ledger.Conway.Rules.Certs ( - CertsEnv (CertsEnv), - ConwayCertsEvent, - ConwayCertsPredFailure, - ) -import Cardano.Ledger.Conway.Rules.Deleg (ConwayDelegPredFailure) -import Cardano.Ledger.Conway.Rules.Gov ( - ConwayGovEvent (..), - ConwayGovPredFailure, - GovEnv (..), - ) -import Cardano.Ledger.Conway.Rules.GovCert (ConwayGovCertPredFailure) -import Cardano.Ledger.Conway.Rules.Utxos (ConwayUtxosPredFailure) -import Cardano.Ledger.Conway.Rules.Utxow () -import Cardano.Ledger.Credential (Credential) -import Cardano.Ledger.Crypto (Crypto (..)) -import Cardano.Ledger.Keys (KeyRole (..)) -import Cardano.Ledger.Shelley.LedgerState ( - CertState (..), - DState (..), - LedgerState (..), - UTxOState (..), - asTreasuryL, - certVStateL, - utxosGovStateL, - vsCommitteeStateL, - ) -import Cardano.Ledger.Shelley.Rules ( - LedgerEnv (..), - ShelleyLEDGERS, - ShelleyLedgersEvent (..), - ShelleyLedgersPredFailure (..), - ShelleyPoolPredFailure, - ShelleyUtxoPredFailure, - ShelleyUtxowPredFailure, - UtxoEnv (..), - renderDepositEqualsObligationViolation, - shelleyLedgerAssertions, - ) -import Cardano.Ledger.Slot (epochInfoEpoch) -import Cardano.Ledger.UMap (UView (..), dRepMap) -import qualified Cardano.Ledger.UMap as UMap -import Cardano.Ledger.UTxO (EraUTxO (..)) -import Control.DeepSeq (NFData) -import Control.Monad (when) -import Control.Monad.Trans.Reader (asks) -import Control.State.Transition.Extended ( - Embed (..), - STS (..), - TRC (..), - TransitionRule, - judgmentContext, - liftSTS, - trans, - (?!), - ) -import Data.Kind (Type) -import qualified Data.Map.Strict as Map -import Data.Sequence (Seq) -import qualified Data.Sequence.Strict as StrictSeq -import Data.Set (Set) -import qualified Data.Set as Set -import GHC.Generics (Generic (..)) -import Lens.Micro as L -import NoThunks.Class (NoThunks (..)) - -data ConwayLedgerPredFailure era - = ConwayUtxowFailure (PredicateFailure (EraRule "UTXOW" era)) - | ConwayCertsFailure (PredicateFailure (EraRule "CERTS" era)) - | ConwayGovFailure (PredicateFailure (EraRule "GOV" era)) - | ConwayWdrlNotDelegatedToDRep (Set (Credential 'Staking (EraCrypto era))) - | ConwayTreasuryValueMismatch - -- | Actual - Coin - -- | Submitted in transaction - Coin - deriving (Generic) - -type instance EraRuleFailure "LEDGER" (ConwayEra c) = ConwayLedgerPredFailure (ConwayEra c) - -type instance EraRuleEvent "LEDGER" (ConwayEra c) = ConwayLedgerEvent (ConwayEra c) - -instance InjectRuleFailure "LEDGER" ConwayLedgerPredFailure (ConwayEra c) - -instance InjectRuleFailure "LEDGER" BabbageUtxowPredFailure (ConwayEra c) where - injectFailure = ConwayUtxowFailure - -instance InjectRuleFailure "LEDGER" AlonzoUtxowPredFailure (ConwayEra c) where - injectFailure = ConwayUtxowFailure . injectFailure - -instance InjectRuleFailure "LEDGER" ShelleyUtxowPredFailure (ConwayEra c) where - injectFailure = ConwayUtxowFailure . injectFailure - -instance InjectRuleFailure "LEDGER" BabbageUtxoPredFailure (ConwayEra c) where - injectFailure = ConwayUtxowFailure . injectFailure - -instance InjectRuleFailure "LEDGER" AlonzoUtxoPredFailure (ConwayEra c) where - injectFailure = ConwayUtxowFailure . injectFailure - -instance InjectRuleFailure "LEDGER" AlonzoUtxosPredFailure (ConwayEra c) where - injectFailure = ConwayUtxowFailure . injectFailure - -instance InjectRuleFailure "LEDGER" ConwayUtxosPredFailure (ConwayEra c) where - injectFailure = ConwayUtxowFailure . injectFailure - -instance InjectRuleFailure "LEDGER" ShelleyUtxoPredFailure (ConwayEra c) where - injectFailure = ConwayUtxowFailure . injectFailure - -instance InjectRuleFailure "LEDGER" AllegraUtxoPredFailure (ConwayEra c) where - injectFailure = ConwayUtxowFailure . injectFailure - -instance InjectRuleFailure "LEDGER" ConwayCertsPredFailure (ConwayEra c) where - injectFailure = ConwayCertsFailure - -instance InjectRuleFailure "LEDGER" ConwayCertPredFailure (ConwayEra c) where - injectFailure = ConwayCertsFailure . injectFailure - -instance InjectRuleFailure "LEDGER" ConwayDelegPredFailure (ConwayEra c) where - injectFailure = ConwayCertsFailure . injectFailure - -instance InjectRuleFailure "LEDGER" ShelleyPoolPredFailure (ConwayEra c) where - injectFailure = ConwayCertsFailure . injectFailure - -instance InjectRuleFailure "LEDGER" ConwayGovCertPredFailure (ConwayEra c) where - injectFailure = ConwayCertsFailure . injectFailure - -instance InjectRuleFailure "LEDGER" ConwayGovPredFailure (ConwayEra c) where - injectFailure = ConwayGovFailure - -deriving instance - ( Era era - , Eq (PredicateFailure (EraRule "UTXOW" era)) - , Eq (PredicateFailure (EraRule "CERTS" era)) - , Eq (PredicateFailure (EraRule "GOV" era)) - ) => - Eq (ConwayLedgerPredFailure era) - -deriving instance - ( Era era - , Show (PredicateFailure (EraRule "UTXOW" era)) - , Show (PredicateFailure (EraRule "CERTS" era)) - , Show (PredicateFailure (EraRule "GOV" era)) - ) => - Show (ConwayLedgerPredFailure era) - -instance - ( Era era - , NoThunks (PredicateFailure (EraRule "UTXOW" era)) - , NoThunks (PredicateFailure (EraRule "CERTS" era)) - , NoThunks (PredicateFailure (EraRule "GOV" era)) - ) => - NoThunks (ConwayLedgerPredFailure era) - -instance - ( Era era - , NFData (PredicateFailure (EraRule "UTXOW" era)) - , NFData (PredicateFailure (EraRule "CERTS" era)) - , NFData (PredicateFailure (EraRule "GOV" era)) - ) => - NFData (ConwayLedgerPredFailure era) - -instance - ( Era era - , EncCBOR (PredicateFailure (EraRule "UTXOW" era)) - , EncCBOR (PredicateFailure (EraRule "CERTS" era)) - , EncCBOR (PredicateFailure (EraRule "GOV" era)) - ) => - EncCBOR (ConwayLedgerPredFailure era) - where - encCBOR = - encode . \case - ConwayUtxowFailure x -> Sum (ConwayUtxowFailure @era) 1 !> To x - ConwayCertsFailure x -> Sum (ConwayCertsFailure @era) 2 !> To x - ConwayGovFailure x -> Sum (ConwayGovFailure @era) 3 !> To x - ConwayWdrlNotDelegatedToDRep x -> - Sum (ConwayWdrlNotDelegatedToDRep @era) 4 !> To x - ConwayTreasuryValueMismatch actual submitted -> - Sum (ConwayTreasuryValueMismatch @era) 5 !> To actual !> To submitted - -instance - ( Era era - , DecCBOR (PredicateFailure (EraRule "UTXOW" era)) - , DecCBOR (PredicateFailure (EraRule "CERTS" era)) - , DecCBOR (PredicateFailure (EraRule "GOV" era)) - ) => - DecCBOR (ConwayLedgerPredFailure era) - where - decCBOR = - decode $ Summands "ConwayLedgerPredFailure" $ \case - 1 -> SumD ConwayUtxowFailure SumD ConwayCertsFailure SumD ConwayGovFailure SumD ConwayWdrlNotDelegatedToDRep SumD ConwayTreasuryValueMismatch Invalid n - -data ConwayLedgerEvent era - = UtxowEvent (Event (EraRule "UTXOW" era)) - | CertsEvent (Event (EraRule "CERTS" era)) - | GovEvent (Event (EraRule "GOV" era)) - deriving (Generic) - -deriving instance - ( Eq (Event (EraRule "CERTS" era)) - , Eq (Event (EraRule "UTXOW" era)) - , Eq (Event (EraRule "GOV" era)) - ) => - Eq (ConwayLedgerEvent era) - -instance - ( NFData (Event (EraRule "CERTS" era)) - , NFData (Event (EraRule "UTXOW" era)) - , NFData (Event (EraRule "GOV" era)) - ) => - NFData (ConwayLedgerEvent era) - -instance - ( AlonzoEraTx era - , ConwayEraTxBody era - , ConwayEraGov era - , GovState era ~ ConwayGovState era - , Embed (EraRule "UTXOW" era) (ConwayLEDGER era) - , Embed (EraRule "GOV" era) (ConwayLEDGER era) - , Embed (EraRule "CERTS" era) (ConwayLEDGER era) - , State (EraRule "UTXOW" era) ~ UTxOState era - , State (EraRule "CERTS" era) ~ CertState era - , State (EraRule "GOV" era) ~ Proposals era - , Environment (EraRule "UTXOW" era) ~ UtxoEnv era - , Environment (EraRule "CERTS" era) ~ CertsEnv era - , Environment (EraRule "GOV" era) ~ GovEnv era - , Signal (EraRule "UTXOW" era) ~ Tx era - , Signal (EraRule "CERTS" era) ~ Seq (TxCert era) - , Signal (EraRule "GOV" era) ~ GovProcedures era - ) => - STS (ConwayLEDGER era) - where - type State (ConwayLEDGER era) = LedgerState era - type Signal (ConwayLEDGER era) = Tx era - type Environment (ConwayLEDGER era) = LedgerEnv era - type BaseM (ConwayLEDGER era) = ShelleyBase - type PredicateFailure (ConwayLEDGER era) = ConwayLedgerPredFailure era - type Event (ConwayLEDGER era) = ConwayLedgerEvent era - - initialRules = [] - transitionRules = [ledgerTransition @ConwayLEDGER] - - renderAssertionViolation = renderDepositEqualsObligationViolation - - assertions = shelleyLedgerAssertions @era @ConwayLEDGER - --- ======================================= - -ledgerTransition :: - forall (someLEDGER :: Type -> Type) era. - ( AlonzoEraTx era - , ConwayEraTxBody era - , ConwayEraGov era - , GovState era ~ ConwayGovState era - , Signal (someLEDGER era) ~ Tx era - , State (someLEDGER era) ~ LedgerState era - , Environment (someLEDGER era) ~ LedgerEnv era - , PredicateFailure (someLEDGER era) ~ ConwayLedgerPredFailure era - , Embed (EraRule "UTXOW" era) (someLEDGER era) - , Embed (EraRule "GOV" era) (someLEDGER era) - , Embed (EraRule "CERTS" era) (someLEDGER era) - , State (EraRule "UTXOW" era) ~ UTxOState era - , State (EraRule "CERTS" era) ~ CertState era - , State (EraRule "GOV" era) ~ Proposals era - , Environment (EraRule "UTXOW" era) ~ UtxoEnv era - , Environment (EraRule "GOV" era) ~ GovEnv era - , Environment (EraRule "CERTS" era) ~ CertsEnv era - , Signal (EraRule "UTXOW" era) ~ Tx era - , Signal (EraRule "CERTS" era) ~ Seq (TxCert era) - , Signal (EraRule "GOV" era) ~ GovProcedures era - , BaseM (someLEDGER era) ~ ShelleyBase - , STS (someLEDGER era) - ) => - TransitionRule (someLEDGER era) -ledgerTransition = do - TRC (LedgerEnv slot _txIx pp account, LedgerState utxoState certState, tx) <- judgmentContext - - let actualTreasuryValue = account ^. asTreasuryL - in case tx ^. bodyTxL . currentTreasuryValueTxBodyL of - SNothing -> pure () - SJust submittedTreasuryValue -> - submittedTreasuryValue - == actualTreasuryValue - ?! ConwayTreasuryValueMismatch actualTreasuryValue submittedTreasuryValue - - currentEpoch <- liftSTS $ do - ei <- asks epochInfoPure - epochInfoEpoch ei slot - - let txBody = tx ^. bodyTxL - - (utxoState', certStateAfterCERTS) <- - if tx ^. isValidTxL == IsValid True - then do - certStateAfterCERTS <- - trans @(EraRule "CERTS" era) $ - TRC - ( CertsEnv tx pp slot currentEpoch - , certState - , StrictSeq.fromStrict $ txBody ^. certsTxBodyL - ) - let wdrlAddrs = Map.keysSet . unWithdrawals $ tx ^. bodyTxL . withdrawalsTxBodyL - wdrlCreds = Set.map raCredential wdrlAddrs - dUnified = dsUnified $ certDState certStateAfterCERTS - delegatedAddrs = DRepUView dUnified - - -- TODO enable this check once delegation is fully implemented in cardano-api - when False $ do - all (`UMap.member` delegatedAddrs) wdrlCreds - ?! ConwayWdrlNotDelegatedToDRep (wdrlCreds Set.\\ Map.keysSet (dRepMap dUnified)) - - -- Votes and proposals from signal tx - let govProcedures = - GovProcedures - { gpVotingProcedures = txBody ^. votingProceduresTxBodyL - , gpProposalProcedures = txBody ^. proposalProceduresTxBodyL - } - proposalsState <- - trans @(EraRule "GOV" era) $ - TRC - ( GovEnv - (txIdTxBody txBody) - currentEpoch - pp - (utxoState ^. utxosGovStateL . proposalsGovStateL . pRootsL . L.to toPrevGovActionIds) - (utxoState ^. utxosGovStateL . constitutionGovStateL . constitutionScriptL) - (certState ^. certVStateL . vsCommitteeStateL) - , utxoState ^. utxosGovStateL . proposalsGovStateL - , govProcedures - ) - let utxoState' = - utxoState - & utxosGovStateL . proposalsGovStateL .~ proposalsState - pure (utxoState', certStateAfterCERTS) - else pure (utxoState, certState) - - utxoState'' <- - trans @(EraRule "UTXOW" era) $ - TRC - -- Pass to UTXOW the unmodified CertState in its Environment, - -- so it can process refunds of deposits for deregistering - -- stake credentials and DReps. The modified CertState - -- (certStateAfterCERTS) has these already removed from its - -- UMap. - ( UtxoEnv @era slot pp certState - , utxoState' - , tx - ) - pure $ LedgerState utxoState'' certStateAfterCERTS - -instance - ( Signable (DSIGN (EraCrypto era)) (Hash (HASH (EraCrypto era)) EraIndependentTxBody) - , BaseM (ConwayUTXOW era) ~ ShelleyBase - , AlonzoEraTx era - , EraUTxO era - , BabbageEraTxBody era - , Embed (EraRule "UTXO" era) (ConwayUTXOW era) - , State (EraRule "UTXO" era) ~ UTxOState era - , Environment (EraRule "UTXO" era) ~ UtxoEnv era - , Script era ~ AlonzoScript era - , TxOut era ~ BabbageTxOut era - , ScriptsNeeded era ~ AlonzoScriptsNeeded era - , Signal (EraRule "UTXO" era) ~ Tx era - , PredicateFailure (EraRule "UTXOW" era) ~ BabbageUtxowPredFailure era - , Event (EraRule "UTXOW" era) ~ AlonzoUtxowEvent era - , STS (ConwayUTXOW era) - , PredicateFailure (ConwayUTXOW era) ~ BabbageUtxowPredFailure era - , Event (ConwayUTXOW era) ~ AlonzoUtxowEvent era - ) => - Embed (ConwayUTXOW era) (ConwayLEDGER era) - where - wrapFailed = ConwayUtxowFailure - wrapEvent = UtxowEvent - -instance - ( EraTx era - , ConwayEraTxBody era - , ConwayEraPParams era - , ConwayEraGov era - , Embed (EraRule "CERT" era) (ConwayCERTS era) - , State (EraRule "CERT" era) ~ CertState era - , Environment (EraRule "CERT" era) ~ CertEnv era - , Signal (EraRule "CERT" era) ~ TxCert era - , PredicateFailure (EraRule "CERTS" era) ~ ConwayCertsPredFailure era - , Event (EraRule "CERTS" era) ~ ConwayCertsEvent era - , EraRule "CERTS" era ~ ConwayCERTS era - ) => - Embed (ConwayCERTS era) (ConwayLEDGER era) - where - wrapFailed = ConwayCertsFailure - wrapEvent = CertsEvent - -instance - ( Embed (EraRule "UTXOW" era) (ConwayLEDGER era) - , Embed (EraRule "CERTS" era) (ConwayLEDGER era) - , Embed (EraRule "GOV" era) (ConwayLEDGER era) - , ConwayEraGov era - , AlonzoEraTx era - , ConwayEraTxBody era - , ConwayEraPParams era - , GovState era ~ ConwayGovState era - , Environment (EraRule "UTXOW" era) ~ UtxoEnv era - , Environment (EraRule "CERTS" era) ~ CertsEnv era - , Environment (EraRule "GOV" era) ~ GovEnv era - , Signal (EraRule "UTXOW" era) ~ Tx era - , Signal (EraRule "CERTS" era) ~ Seq (TxCert era) - , Signal (EraRule "GOV" era) ~ GovProcedures era - , State (EraRule "UTXOW" era) ~ UTxOState era - , State (EraRule "CERTS" era) ~ CertState era - , State (EraRule "GOV" era) ~ Proposals era - , EraRule "GOV" era ~ ConwayGOV era - , PredicateFailure (EraRule "LEDGER" era) ~ ConwayLedgerPredFailure era - , Event (EraRule "LEDGER" era) ~ ConwayLedgerEvent era - , EraGov era - ) => - Embed (ConwayLEDGER era) (ShelleyLEDGERS era) - where - wrapFailed = LedgerFailure - wrapEvent = LedgerEvent - -instance - ( ConwayEraPParams era - , BaseM (ConwayLEDGER era) ~ ShelleyBase - , PredicateFailure (EraRule "GOV" era) ~ ConwayGovPredFailure era - , Event (EraRule "GOV" era) ~ ConwayGovEvent era - , EraRule "GOV" era ~ ConwayGOV era - , InjectRuleFailure "GOV" ConwayGovPredFailure era - ) => - Embed (ConwayGOV era) (ConwayLEDGER era) - where - wrapFailed = ConwayGovFailure - wrapEvent = GovEvent diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Ledgers.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Ledgers.hs deleted file mode 100644 index 41edcbed5bb..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Ledgers.hs +++ /dev/null @@ -1,84 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Conway.Rules.Ledgers () where - -import Cardano.Ledger.Allegra.Rules (AllegraUtxoPredFailure) -import Cardano.Ledger.Alonzo.Rules ( - AlonzoUtxoPredFailure, - AlonzoUtxosPredFailure, - AlonzoUtxowPredFailure, - ) -import Cardano.Ledger.Babbage.Rules (BabbageUtxoPredFailure, BabbageUtxowPredFailure) -import Cardano.Ledger.Conway.Era (ConwayEra) -import Cardano.Ledger.Conway.Rules.Cert (ConwayCertPredFailure) -import Cardano.Ledger.Conway.Rules.Certs (ConwayCertsPredFailure) -import Cardano.Ledger.Conway.Rules.Deleg (ConwayDelegPredFailure) -import Cardano.Ledger.Conway.Rules.Gov (ConwayGovPredFailure) -import Cardano.Ledger.Conway.Rules.GovCert (ConwayGovCertPredFailure) -import Cardano.Ledger.Conway.Rules.Ledger (ConwayLedgerPredFailure) -import Cardano.Ledger.Conway.Rules.Utxos (ConwayUtxosPredFailure) -import Cardano.Ledger.Core -import Cardano.Ledger.Shelley.Rules ( - ShelleyLedgersEvent, - ShelleyLedgersPredFailure (..), - ShelleyPoolPredFailure, - ShelleyUtxoPredFailure, - ShelleyUtxowPredFailure, - ) - -type instance EraRuleFailure "LEDGERS" (ConwayEra c) = ShelleyLedgersPredFailure (ConwayEra c) - -type instance EraRuleEvent "LEDGERS" (ConwayEra c) = ShelleyLedgersEvent (ConwayEra c) - -instance InjectRuleFailure "LEDGERS" ShelleyLedgersPredFailure (ConwayEra c) - -instance InjectRuleFailure "LEDGERS" ConwayLedgerPredFailure (ConwayEra c) where - injectFailure = LedgerFailure - -instance InjectRuleFailure "LEDGERS" BabbageUtxowPredFailure (ConwayEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" AlonzoUtxowPredFailure (ConwayEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ShelleyUtxowPredFailure (ConwayEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" BabbageUtxoPredFailure (ConwayEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" AlonzoUtxoPredFailure (ConwayEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" AlonzoUtxosPredFailure (ConwayEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ConwayUtxosPredFailure (ConwayEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ShelleyUtxoPredFailure (ConwayEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" AllegraUtxoPredFailure (ConwayEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ConwayCertsPredFailure (ConwayEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ConwayCertPredFailure (ConwayEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ConwayDelegPredFailure (ConwayEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ShelleyPoolPredFailure (ConwayEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ConwayGovCertPredFailure (ConwayEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ConwayGovPredFailure (ConwayEra c) where - injectFailure = LedgerFailure . injectFailure diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/NewEpoch.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/NewEpoch.hs deleted file mode 100644 index 75b867de401..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/NewEpoch.hs +++ /dev/null @@ -1,238 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE EmptyCase #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Conway.Rules.NewEpoch ( - ConwayNEWEPOCH, - ConwayNewEpochPredFailure (..), - ConwayNewEpochEvent (..), -) where - -import Cardano.Ledger.BaseTypes ( - BlocksMade (BlocksMade), - ShelleyBase, - StrictMaybe (SJust, SNothing), - ) -import Cardano.Ledger.Coin (toDeltaCoin) -import Cardano.Ledger.Conway.Core -import Cardano.Ledger.Conway.Era (ConwayEPOCH, ConwayEra, ConwayNEWEPOCH) -import Cardano.Ledger.Conway.Governance ( - ConwayEraGov, - ConwayGovState (..), - RatifyEnv (..), - RatifySignal (..), - RatifyState (..), - newEpochStateDRepPulsingStateL, - pulseDRepPulsingState, - ) -import Cardano.Ledger.Conway.Rules.Epoch (ConwayEpochEvent) -import Cardano.Ledger.Credential (Credential) -import Cardano.Ledger.EpochBoundary -import Cardano.Ledger.Keys (KeyRole (..)) -import Cardano.Ledger.PoolDistr (PoolDistr (..)) -import Cardano.Ledger.Shelley.AdaPots (AdaPots (..), totalAdaPotsES) -import Cardano.Ledger.Shelley.LedgerState -import Cardano.Ledger.Shelley.Rewards (sumRewards) -import Cardano.Ledger.Shelley.Rules ( - RupdEvent (..), - ShelleyTICK, - ShelleyTickEvent (..), - ShelleyTickPredFailure (..), - ) -import Cardano.Ledger.Slot (EpochNo (EpochNo)) -import qualified Cardano.Ledger.Val as Val -import Control.DeepSeq (NFData) -import Control.State.Transition -import Data.Default.Class (Default (..)) -import qualified Data.Map.Strict as Map -import Data.Set (Set) -import GHC.Generics (Generic) -import Lens.Micro ((%~), (&), (^.)) - -newtype ConwayNewEpochPredFailure era - = CorruptRewardUpdate - (RewardUpdate (EraCrypto era)) -- The reward update which violates an invariant - deriving (Generic) - -deriving instance Eq (ConwayNewEpochPredFailure era) - -deriving instance - ( Show (PredicateFailure (EraRule "EPOCH" era)) - , Show (PredicateFailure (EraRule "RATIFY" era)) - ) => - Show (ConwayNewEpochPredFailure era) - -instance NFData (ConwayNewEpochPredFailure era) - -data ConwayNewEpochEvent era - = DeltaRewardEvent !(Event (EraRule "RUPD" era)) - | RestrainedRewards - !EpochNo - !(Map.Map (Credential 'Staking (EraCrypto era)) (Set (Reward (EraCrypto era)))) - !(Set (Credential 'Staking (EraCrypto era))) - | TotalRewardEvent - !EpochNo - !(Map.Map (Credential 'Staking (EraCrypto era)) (Set (Reward (EraCrypto era)))) - | EpochEvent !(Event (EraRule "EPOCH" era)) - | TotalAdaPotsEvent !AdaPots - deriving (Generic) - -type instance EraRuleEvent "NEWEPOCH" (ConwayEra c) = ConwayNewEpochEvent (ConwayEra c) - -deriving instance - ( Eq (Event (EraRule "EPOCH" era)) - , Eq (Event (EraRule "RUPD" era)) - ) => - Eq (ConwayNewEpochEvent era) - -instance - ( NFData (Event (EraRule "EPOCH" era)) - , NFData (Event (EraRule "RUPD" era)) - ) => - NFData (ConwayNewEpochEvent era) - -instance - ( EraTxOut era - , ConwayEraGov era - , Embed (EraRule "EPOCH" era) (ConwayNEWEPOCH era) - , Event (EraRule "RUPD" era) ~ RupdEvent (EraCrypto era) - , Environment (EraRule "EPOCH" era) ~ () - , State (EraRule "EPOCH" era) ~ EpochState era - , Signal (EraRule "EPOCH" era) ~ EpochNo - , Default (EpochState era) - , Default (StashedAVVMAddresses era) - , Signal (EraRule "RATIFY" era) ~ RatifySignal era - , State (EraRule "RATIFY" era) ~ RatifyState era - , Environment (EraRule "RATIFY" era) ~ RatifyEnv era - , GovState era ~ ConwayGovState era - , Eq (PredicateFailure (EraRule "RATIFY" era)) - , Show (PredicateFailure (EraRule "RATIFY" era)) - ) => - STS (ConwayNEWEPOCH era) - where - type State (ConwayNEWEPOCH era) = NewEpochState era - type Signal (ConwayNEWEPOCH era) = EpochNo - type Environment (ConwayNEWEPOCH era) = () - type BaseM (ConwayNEWEPOCH era) = ShelleyBase - type PredicateFailure (ConwayNEWEPOCH era) = ConwayNewEpochPredFailure era - type Event (ConwayNEWEPOCH era) = ConwayNewEpochEvent era - - initialRules = - [ pure $ - NewEpochState - (EpochNo 0) - (BlocksMade Map.empty) - (BlocksMade Map.empty) - def - SNothing - (PoolDistr Map.empty) - def - ] - - transitionRules = [newEpochTransition] - -newEpochTransition :: - forall era. - ( EraTxOut era - , ConwayEraGov era - , Embed (EraRule "EPOCH" era) (ConwayNEWEPOCH era) - , Environment (EraRule "EPOCH" era) ~ () - , State (EraRule "EPOCH" era) ~ EpochState era - , Signal (EraRule "EPOCH" era) ~ EpochNo - , Default (StashedAVVMAddresses era) - , Event (EraRule "RUPD" era) ~ RupdEvent (EraCrypto era) - , Signal (EraRule "RATIFY" era) ~ RatifySignal era - , State (EraRule "RATIFY" era) ~ RatifyState era - , Environment (EraRule "RATIFY" era) ~ RatifyEnv era - , GovState era ~ ConwayGovState era - , Eq (PredicateFailure (EraRule "RATIFY" era)) - , Show (PredicateFailure (EraRule "RATIFY" era)) - ) => - TransitionRule (ConwayNEWEPOCH era) -newEpochTransition = do - TRC - ( _ - , nes@(NewEpochState eL _ bcur es0 ru _ _) - , eNo - ) <- - judgmentContext - if eNo /= succ eL - then pure (nes & newEpochStateDRepPulsingStateL %~ pulseDRepPulsingState) - else do - es1 <- case ru of -- Here is where we extract the result of Reward pulsing. - SNothing -> pure es0 - SJust p@(Pulsing _ _) -> do - (ans, event) <- liftSTS (completeRupd p) - tellReward (DeltaRewardEvent (RupdEvent eNo event)) - updateRewards es0 eNo ans - SJust (Complete ru') -> updateRewards es0 eNo ru' - es2 <- trans @(EraRule "EPOCH" era) $ TRC ((), es1, eNo) - let adaPots = totalAdaPotsES es2 - tellEvent $ TotalAdaPotsEvent adaPots - let pd' = ssStakeMarkPoolDistr (esSnapshots es0) - -- See `ShelleyNEWEPOCH` for details on the implementation - pure $ - nes - { nesEL = eNo - , nesBprev = bcur - , nesBcur = BlocksMade mempty - , nesEs = es2 - , nesRu = SNothing - , nesPd = pd' - } - --- | tell a RupdEvent as a DeltaRewardEvent only if the map is non-empty -tellReward :: - Event (EraRule "RUPD" era) ~ RupdEvent (EraCrypto era) => - ConwayNewEpochEvent era -> - Rule (ConwayNEWEPOCH era) rtype () -tellReward (DeltaRewardEvent (RupdEvent _ m)) | Map.null m = pure () -tellReward x = tellEvent x - -updateRewards :: - EraGov era => - EpochState era -> - EpochNo -> - RewardUpdate (EraCrypto era) -> - Rule (ConwayNEWEPOCH era) 'Transition (EpochState era) -updateRewards es e ru'@(RewardUpdate dt dr rs_ df _) = do - let totRs = sumRewards (es ^. prevPParamsEpochStateL . ppProtocolVersionL) rs_ - Val.isZero (dt <> dr <> toDeltaCoin totRs <> df) ?! CorruptRewardUpdate ru' - let !(!es', filtered) = applyRUpdFiltered ru' es - tellEvent $ RestrainedRewards e (frShelleyIgnored filtered) (frUnregistered filtered) - -- This event (which is only generated once per epoch) must be generated even if the - -- map is empty (db-sync depends on it). - tellEvent $ TotalRewardEvent e (frRegistered filtered) - pure es' - -instance - ( STS (ConwayNEWEPOCH era) - , PredicateFailure (EraRule "NEWEPOCH" era) ~ ConwayNewEpochPredFailure era - , Event (EraRule "NEWEPOCH" era) ~ ConwayNewEpochEvent era - ) => - Embed (ConwayNEWEPOCH era) (ShelleyTICK era) - where - wrapFailed = NewEpochFailure - wrapEvent = TickNewEpochEvent - -instance - ( STS (ConwayEPOCH era) - , Event (EraRule "EPOCH" era) ~ ConwayEpochEvent era - ) => - Embed (ConwayEPOCH era) (ConwayNEWEPOCH era) - where - wrapFailed = \case {} - wrapEvent = EpochEvent diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Pool.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Pool.hs deleted file mode 100644 index 42c0e7ccced..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Pool.hs +++ /dev/null @@ -1,12 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE TypeFamilies #-} - -module Cardano.Ledger.Conway.Rules.Pool () where - -import Cardano.Ledger.Conway.Era (ConwayEra) -import Cardano.Ledger.Core (EraRuleEvent, EraRuleFailure) -import Cardano.Ledger.Shelley.Rules (PoolEvent, ShelleyPoolPredFailure) - -type instance EraRuleFailure "POOL" (ConwayEra c) = ShelleyPoolPredFailure (ConwayEra c) - -type instance EraRuleEvent "POOL" (ConwayEra c) = PoolEvent (ConwayEra c) diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Ratify.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Ratify.hs deleted file mode 100644 index c2676f73ed9..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Ratify.hs +++ /dev/null @@ -1,375 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Conway.Rules.Ratify ( - RatifyState (..), - committeeAccepted, - committeeAcceptedRatio, - spoAccepted, - spoAcceptedRatio, - dRepAccepted, - dRepAcceptedRatio, - -- Testing - prevActionAsExpected, - validCommitteeTerm, - withdrawalCanWithdraw, -) where - -import Cardano.Ledger.BaseTypes ( - BoundedRational (..), - ShelleyBase, - StrictMaybe (..), - addEpochInterval, - ) -import Cardano.Ledger.CertState (CommitteeAuthorization (..), CommitteeState (csCommitteeCreds)) -import Cardano.Ledger.Coin (Coin (..), CompactForm (..)) -import Cardano.Ledger.Conway.Core ( - Era (EraCrypto), - EraGov, - EraRule, - PParams, - ) -import Cardano.Ledger.Conway.Era (ConwayENACT, ConwayRATIFY) -import Cardano.Ledger.Conway.Governance ( - Committee (..), - GovAction (..), - GovActionState (..), - GovRelation, - ProposalProcedure (..), - RatifyEnv (..), - RatifySignal (..), - RatifyState (..), - Vote (..), - ensCommitteeL, - ensTreasuryL, - gasAction, - rsDelayedL, - rsEnactStateL, - rsEnactedL, - rsExpiredL, - votingCommitteeThreshold, - votingDRepThreshold, - votingStakePoolThreshold, - withGovActionParent, - ) -import Cardano.Ledger.Conway.PParams ( - ConwayEraPParams, - ppCommitteeMaxTermLengthL, - ) -import Cardano.Ledger.Conway.Rules.Enact (EnactSignal (..), EnactState (..)) -import Cardano.Ledger.Credential (Credential (..)) -import Cardano.Ledger.DRep (DRep (..), DRepState (..)) -import Cardano.Ledger.Keys (KeyRole (..)) -import Cardano.Ledger.PoolDistr (PoolDistr (..), individualPoolStake) -import Cardano.Ledger.Slot (EpochNo (..)) -import Cardano.Ledger.Val (Val (..), (<+>)) -import Control.State.Transition.Extended ( - Embed (..), - STS (..), - TRC (..), - TransitionRule, - judgmentContext, - trans, - ) -import Data.Foldable (Foldable (..)) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Monoid (Sum (..)) -import Data.Ratio ((%)) -import qualified Data.Sequence as Seq -import qualified Data.Sequence.Strict as SSeq -import qualified Data.Set as Set -import Data.Void (Void, absurd) -import Data.Word (Word64) -import Lens.Micro - -instance - ( ConwayEraPParams era - , Embed (EraRule "ENACT" era) (ConwayRATIFY era) - , State (EraRule "ENACT" era) ~ EnactState era - , Environment (EraRule "ENACT" era) ~ () - , Signal (EraRule "ENACT" era) ~ EnactSignal era - ) => - STS (ConwayRATIFY era) - where - type Environment (ConwayRATIFY era) = RatifyEnv era - type PredicateFailure (ConwayRATIFY era) = Void - type Signal (ConwayRATIFY era) = RatifySignal era - type State (ConwayRATIFY era) = RatifyState era - type BaseM (ConwayRATIFY era) = ShelleyBase - - initialRules = [] - transitionRules = [ratifyTransition] - --- Compute the ratio yes/(yes + no), where --- yes: --- - the number of registered, unexpired, unresigned committee members that voted yes --- no: --- - the number of registered, unexpired, unresigned committee members that voted no, plus --- - the number of registered, unexpired, unresigned committee members that did not vote for this action --- --- We iterate over the committee, and incrementally construct the numerator and denominator, --- based on the votes and the committee state. -committeeAccepted :: - ConwayEraPParams era => - RatifyEnv era -> - RatifyState era -> - GovActionState era -> - Bool -committeeAccepted RatifyEnv {reCommitteeState, reCurrentEpoch} rs gas = - case votingCommitteeThreshold rs reCommitteeState (gasAction gas) of - SNothing -> False -- this happens if we have no committee, or if the committee is too small, - -- in which case the committee vote is `no` - SJust r -> - -- short circuit on zero threshold, in which case the committee vote is `yes` - r == minBound || acceptedRatio >= unboundRational r - where - acceptedRatio = - committeeAcceptedRatio members (gasCommitteeVotes gas) reCommitteeState reCurrentEpoch - members = foldMap' committeeMembers (rs ^. rsEnactStateL . ensCommitteeL) - -committeeAcceptedRatio :: - forall era. - Map (Credential 'ColdCommitteeRole (EraCrypto era)) EpochNo -> - Map (Credential 'HotCommitteeRole (EraCrypto era)) Vote -> - CommitteeState era -> - EpochNo -> - Rational -committeeAcceptedRatio members votes committeeState currentEpoch - | totalExcludingAbstain == 0 = 0 - | otherwise = yesVotes % totalExcludingAbstain - where - accumVotes :: - (Integer, Integer) -> - Credential 'ColdCommitteeRole (EraCrypto era) -> - EpochNo -> - (Integer, Integer) - accumVotes (!yes, !tot) member expiry - | currentEpoch > expiry = (yes, tot) -- member is expired, vote "abstain" (don't count it) - | otherwise = - case Map.lookup member (csCommitteeCreds committeeState) of - Nothing -> (yes, tot) -- member is not registered, vote "abstain" - Just (CommitteeMemberResigned _) -> (yes, tot) -- member has resigned, vote "abstain" - Just (CommitteeHotCredential hotKey) -> - case Map.lookup hotKey votes of - Nothing -> (yes, tot + 1) -- member hasn't voted, vote "no" - Just Abstain -> (yes, tot) -- member voted "abstain" - Just VoteNo -> (yes, tot + 1) -- member voted "no" - Just VoteYes -> (yes + 1, tot + 1) -- member voted "yes" - (yesVotes, totalExcludingAbstain) = Map.foldlWithKey' accumVotes (0, 0) members - -spoAccepted :: - ConwayEraPParams era => RatifyEnv era -> RatifyState era -> GovActionState era -> Bool -spoAccepted re rs gas = - case votingStakePoolThreshold rs (gasAction gas) of - -- Short circuit on zero threshold in order to avoid redundant computation. - SJust r -> r == minBound || spoAcceptedRatio re gas >= unboundRational r - SNothing -> False - --- | Final ratio for `totalAcceptedStakePoolsRatio` we want is: t = y \/ (s - a) --- Where: --- * `y` - total delegated stake that voted Yes --- * `a` - total delegated stake that voted Abstain --- * `s` - total delegated stake --- --- However, computing the total stake again would be wasteful, since we already have --- distributions per pool computed. So, values that we have available are not exactly --- what we need, because we have: --- * `y/s` - stake that votes yes over the total stake --- * `a/s` - stake that voted abstain over the total stake --- --- We divide both numerator and denominator by `s` and we'll get a formula that we can --- use: --- --- t = y \/ (s - a) = (y \/ s) / (1 - a \/ s) --- --- For `HardForkInitiation` all SPOs that didn't vote are considered as --- `No` votes. Whereas, for all other `GovAction`s, SPOs that didn't --- vote are considered as `Abstain` votes. -spoAcceptedRatio :: forall era. RatifyEnv era -> GovActionState era -> Rational -spoAcceptedRatio - RatifyEnv {reStakePoolDistr} - GovActionState - { gasStakePoolVotes - , gasProposalProcedure = - ProposalProcedure {pProcGovAction} - } - | abstainVotesRatio == 1 = 0 -- guard against the degenerate case when all abstain. - | otherwise = yesVotesRatio / (1 - abstainVotesRatio) - where - PoolDistr stakePoolDistr = reStakePoolDistr - (Sum yesVotesRatio, Sum abstainVotesRatio) = - Map.foldMapWithKey getVotesStakePerStakePoolDistr stakePoolDistr - getVotesStakePerStakePoolDistr poolId distr = - let d = Sum $ individualPoolStake distr - vote = Map.lookup poolId gasStakePoolVotes - in case vote of - Nothing - | HardForkInitiation {} <- pProcGovAction -> mempty - | otherwise -> (mempty, d) - Just VoteNo -> mempty - Just VoteYes -> (d, mempty) - Just Abstain -> (mempty, d) - -dRepAccepted :: - ConwayEraPParams era => RatifyEnv era -> RatifyState era -> GovActionState era -> Bool -dRepAccepted re rs GovActionState {gasDRepVotes, gasProposalProcedure} = - case votingDRepThreshold rs govAction of - SJust r -> - -- Short circuit on zero threshold in order to avoid redundant computation. - r == minBound - || dRepAcceptedRatio re gasDRepVotes govAction >= unboundRational r - SNothing -> False - where - govAction = pProcGovAction gasProposalProcedure - --- Compute the dRep ratio yes/(yes + no), where --- yes: is the total stake of --- - registered dReps that voted 'yes', plus --- - the AlwaysNoConfidence dRep, in case the action is NoConfidence --- no: is the total stake of --- - registered dReps that voted 'no', plus --- - registered dReps that did not vote for this action, plus --- - the AlwaysNoConfidence dRep --- In other words, the denominator `yes + no` is the total stake of all registered dReps, minus the abstain votes stake --- (both credential DReps and AlwaysAbstain) --- --- We iterate over the dRep distribution, and incrementally construct the numerator and denominator. -dRepAcceptedRatio :: - forall era. - RatifyEnv era -> - Map (Credential 'DRepRole (EraCrypto era)) Vote -> - GovAction era -> - Rational -dRepAcceptedRatio RatifyEnv {reDRepDistr, reDRepState, reCurrentEpoch} gasDRepVotes govAction - | totalExcludingAbstainStake == 0 = 0 - | otherwise = toInteger yesStake % toInteger totalExcludingAbstainStake - where - accumStake :: (Word64, Word64) -> DRep (EraCrypto era) -> CompactForm Coin -> (Word64, Word64) - accumStake (!yes, !tot) drep (CompactCoin stake) = - case drep of - DRepCredential cred -> - case Map.lookup cred reDRepState of - Nothing -> (yes, tot) -- drep is not registered, so we don't consider it - Just (DRepState expiry _ _) - | reCurrentEpoch > expiry -> (yes, tot) -- drep is expired, so we don't consider it - | otherwise -> - case Map.lookup cred gasDRepVotes of - -- drep hasn't voted for this action, so we don't count - -- the vote but we consider it in the denominator: - Nothing -> (yes, tot + stake) - Just VoteYes -> (yes + stake, tot + stake) - Just Abstain -> (yes, tot) - Just VoteNo -> (yes, tot + stake) - DRepAlwaysNoConfidence -> - case govAction of - NoConfidence _ -> (yes + stake, tot + stake) - _ -> (yes, tot + stake) - DRepAlwaysAbstain -> (yes, tot) - - (yesStake, totalExcludingAbstainStake) = Map.foldlWithKey' accumStake (0, 0) reDRepDistr - -delayingAction :: GovAction era -> Bool -delayingAction NoConfidence {} = True -delayingAction HardForkInitiation {} = True -delayingAction UpdateCommittee {} = True -delayingAction NewConstitution {} = True -delayingAction TreasuryWithdrawals {} = False -delayingAction ParameterChange {} = False -delayingAction InfoAction {} = False - -withdrawalCanWithdraw :: GovAction era -> Coin -> Bool -withdrawalCanWithdraw (TreasuryWithdrawals m _) treasury = - Map.foldr' (<+>) zero m <= treasury -withdrawalCanWithdraw _ _ = True - -ratifyTransition :: - forall era. - ( Embed (EraRule "ENACT" era) (ConwayRATIFY era) - , State (EraRule "ENACT" era) ~ EnactState era - , Environment (EraRule "ENACT" era) ~ () - , Signal (EraRule "ENACT" era) ~ EnactSignal era - , ConwayEraPParams era - ) => - TransitionRule (ConwayRATIFY era) -ratifyTransition = do - TRC - ( env@RatifyEnv {reCurrentEpoch} - , st@( RatifyState - rsEnactState@EnactState - { ensCurPParams - , ensTreasury - , ensPrevGovActionIds - } - _rsEnacted - _rsExpired - rsDelayed - ) - , RatifySignal rsig - ) <- - judgmentContext - case rsig of - gas@GovActionState {gasId, gasExpiresAfter} SSeq.:<| sigs -> do - let govAction = gasAction gas - if prevActionAsExpected gas ensPrevGovActionIds - && validCommitteeTerm govAction ensCurPParams reCurrentEpoch - && not rsDelayed - && withdrawalCanWithdraw govAction ensTreasury - && committeeAccepted env st gas - && spoAccepted env st gas - && dRepAccepted env st gas - then do - newEnactState <- - trans @(EraRule "ENACT" era) $ - TRC ((), rsEnactState, EnactSignal gasId govAction) - let - st' = - st - & rsEnactStateL .~ newEnactState - & rsDelayedL .~ delayingAction govAction - & rsEnactedL %~ (Seq.:|> gas) - trans @(ConwayRATIFY era) $ TRC (env, st', RatifySignal sigs) - else do - -- This action hasn't been ratified yet. Process the remaining actions. - st' <- trans @(ConwayRATIFY era) $ TRC (env, st, RatifySignal sigs) - -- Finally, filter out actions that have expired. - if gasExpiresAfter < reCurrentEpoch - then pure $ st' & rsExpiredL %~ Set.insert gasId - else pure st' - SSeq.Empty -> pure $ st & rsEnactStateL . ensTreasuryL .~ Coin 0 - --- | Check that the previous governance action id specified in the proposal --- does match the last one of the same purpose that was enacted. -prevActionAsExpected :: GovActionState era -> GovRelation StrictMaybe era -> Bool -prevActionAsExpected gas prevGovActionIds = - withGovActionParent gas True $ \govRelationL parent _ -> - parent == prevGovActionIds ^. govRelationL - -validCommitteeTerm :: - ConwayEraPParams era => - GovAction era -> - PParams era -> - EpochNo -> - Bool -validCommitteeTerm govAction pp currentEpoch = - case govAction of - UpdateCommittee _ _ newMembers _ -> withinMaxTermLength newMembers - _ -> True - where - committeeMaxTermLength = pp ^. ppCommitteeMaxTermLengthL - withinMaxTermLength = all (<= addEpochInterval currentEpoch committeeMaxTermLength) - -instance EraGov era => Embed (ConwayENACT era) (ConwayRATIFY era) where - wrapFailed = absurd - wrapEvent = absurd diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Tickf.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Tickf.hs deleted file mode 100644 index 95d076d3705..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Tickf.hs +++ /dev/null @@ -1,93 +0,0 @@ -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Conway.Rules.Tickf ( - ConwayTICKF, - ConwayTickfPredFailure, - ConwayTickfEvent, -) -where - -import Cardano.Ledger.BaseTypes (ShelleyBase, SlotNo, epochInfoPure) -import Cardano.Ledger.Conway.Era -import Cardano.Ledger.Core -import Cardano.Ledger.EpochBoundary (SnapShots (ssStakeMarkPoolDistr)) -import Cardano.Ledger.Shelley.LedgerState -import Cardano.Ledger.Slot (epochInfoEpoch) -import Control.Monad.Trans.Reader (asks) -import Control.State.Transition -import GHC.Generics (Generic) -import NoThunks.Class (NoThunks (..)) - --- ================================================== - -{------------------------------------------------------------------------------ --- TICKF transition - --- This is a variant on the TICK transition called only by the consensus layer -to tick the ledger state to a future slot. -------------------------------------------------------------------------------} - -data ConwayTickfPredFailure era - deriving (Generic) - -deriving instance - Era era => - Show (ConwayTickfPredFailure era) - -deriving instance - Era era => - Eq (ConwayTickfPredFailure era) - -instance NoThunks (ConwayTickfPredFailure era) - -data ConwayTickfEvent era - -instance - Era era => - STS (ConwayTICKF era) - where - type State (ConwayTICKF era) = NewEpochState era - type Signal (ConwayTICKF era) = SlotNo - type Environment (ConwayTICKF era) = () - type BaseM (ConwayTICKF era) = ShelleyBase - type PredicateFailure (ConwayTICKF era) = ConwayTickfPredFailure era - type Event (ConwayTICKF era) = ConwayTickfEvent era - - initialRules = [] - transitionRules = pure $ do - TRC ((), nes, slot) <- judgmentContext - -- This whole function is a specialization of an inlined 'NEWEPOCH'. - -- - -- The ledger view, 'LedgerView', is built entirely from the 'nesPd' and 'esPp' and - -- 'dsGenDelegs', so the correctness of 'validatingTickTransitionFORECAST' only - -- depends on getting these three fields correct. - - epoch <- liftSTS $ do - ei <- asks epochInfoPure - epochInfoEpoch ei slot - - let es = nesEs nes - ss = esSnapshots es - - -- the relevant 'NEWEPOCH' logic - let pd' = ssStakeMarkPoolDistr ss - - -- note that the genesis delegates are updated not only on the epoch boundary. - if epoch /= succ (nesEL nes) - then pure nes - else do - -- We can skip 'SNAP'; we already have the equivalent pd'. - - -- We can skip 'POOLREAP'; - -- we don't need to do the checks: - -- if the checks would fail, then the node will fail in the 'TICK' rule - -- if it ever then node tries to validate blocks for which the - -- return value here was used to validate their headers. - - pure $! - nes - { nesPd = pd' - } diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Utxo.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Utxo.hs deleted file mode 100644 index cba7d5f971e..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Utxo.hs +++ /dev/null @@ -1,69 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TupleSections #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Conway.Rules.Utxo (allegraToConwayUtxoPredFailure) where - -import Cardano.Ledger.Allegra.Rules (shelleyToAllegraUtxoPredFailure) -import qualified Cardano.Ledger.Allegra.Rules as Allegra (AllegraUtxoPredFailure (..)) -import Cardano.Ledger.Alonzo.Rules ( - AlonzoUtxoEvent, - AlonzoUtxoPredFailure (..), - AlonzoUtxosPredFailure, - ) -import Cardano.Ledger.Babbage.Rules (BabbageUtxoPredFailure (..)) -import Cardano.Ledger.Conway.Era (ConwayEra) -import Cardano.Ledger.Conway.Rules.Utxos (ConwayUtxosPredFailure) -import Cardano.Ledger.Core -import Cardano.Ledger.Shelley.Rules (ShelleyUtxoPredFailure) - -type instance EraRuleFailure "UTXO" (ConwayEra c) = BabbageUtxoPredFailure (ConwayEra c) - -type instance EraRuleEvent "UTXO" (ConwayEra c) = AlonzoUtxoEvent (ConwayEra c) - -instance InjectRuleFailure "UTXO" BabbageUtxoPredFailure (ConwayEra c) - -instance InjectRuleFailure "UTXO" AlonzoUtxoPredFailure (ConwayEra c) where - injectFailure = AlonzoInBabbageUtxoPredFailure - -instance InjectRuleFailure "UTXO" ShelleyUtxoPredFailure (ConwayEra c) where - injectFailure = - AlonzoInBabbageUtxoPredFailure - . allegraToConwayUtxoPredFailure - . shelleyToAllegraUtxoPredFailure - -instance InjectRuleFailure "UTXO" Allegra.AllegraUtxoPredFailure (ConwayEra c) where - injectFailure = AlonzoInBabbageUtxoPredFailure . allegraToConwayUtxoPredFailure - -instance InjectRuleFailure "UTXO" ConwayUtxosPredFailure (ConwayEra c) where - injectFailure = AlonzoInBabbageUtxoPredFailure . UtxosFailure - -instance InjectRuleFailure "UTXO" AlonzoUtxosPredFailure (ConwayEra c) where - injectFailure = AlonzoInBabbageUtxoPredFailure . UtxosFailure . injectFailure - -allegraToConwayUtxoPredFailure :: - forall era. - EraRuleFailure "PPUP" era ~ VoidEraRule "PPUP" era => - Allegra.AllegraUtxoPredFailure era -> - AlonzoUtxoPredFailure era -allegraToConwayUtxoPredFailure = \case - Allegra.BadInputsUTxO x -> BadInputsUTxO x - Allegra.OutsideValidityIntervalUTxO vi slotNo -> OutsideValidityIntervalUTxO vi slotNo - Allegra.MaxTxSizeUTxO x y -> MaxTxSizeUTxO x y - Allegra.InputSetEmptyUTxO -> InputSetEmptyUTxO - Allegra.FeeTooSmallUTxO c1 c2 -> FeeTooSmallUTxO c1 c2 - Allegra.ValueNotConservedUTxO vc vp -> ValueNotConservedUTxO vc vp - Allegra.WrongNetwork x y -> WrongNetwork x y - Allegra.WrongNetworkWithdrawal x y -> WrongNetworkWithdrawal x y - Allegra.OutputTooSmallUTxO x -> OutputTooSmallUTxO x - Allegra.UpdateFailure x -> absurdEraRule @"PPUP" @era x - Allegra.OutputBootAddrAttrsTooBig xs -> OutputBootAddrAttrsTooBig xs - Allegra.TriesToForgeADA -> TriesToForgeADA - Allegra.OutputTooBigUTxO xs -> OutputTooBigUTxO (map (0,0,) xs) diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Utxos.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Utxos.hs deleted file mode 100644 index bb6dec693f7..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Utxos.hs +++ /dev/null @@ -1,302 +0,0 @@ -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Conway.Rules.Utxos ( - ConwayUTXOS, - ConwayUtxosPredFailure (..), - ConwayUtxosEvent (..), -) where - -import Cardano.Ledger.Alonzo.Plutus.Context (ContextError, EraPlutusContext) -import Cardano.Ledger.Alonzo.Plutus.Evaluate (CollectError (..)) -import Cardano.Ledger.Alonzo.Rules ( - AlonzoUtxoEvent (..), - AlonzoUtxoPredFailure (..), - AlonzoUtxosEvent, - AlonzoUtxosPredFailure, - TagMismatchDescription, - validBegin, - validEnd, - ) -import qualified Cardano.Ledger.Alonzo.Rules as Alonzo ( - AlonzoUtxosEvent (..), - AlonzoUtxosPredFailure (..), - ) -import Cardano.Ledger.Alonzo.UTxO ( - AlonzoEraUTxO, - AlonzoScriptsNeeded, - ) -import Cardano.Ledger.Babbage.Rules ( - BabbageUTXO, - BabbageUtxoPredFailure (..), - babbageEvalScriptsTxInvalid, - expectScriptsToPass, - ) -import Cardano.Ledger.Babbage.Tx -import Cardano.Ledger.BaseTypes (ShelleyBase) -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - ) -import Cardano.Ledger.Binary.Coders -import Cardano.Ledger.Coin (Coin) -import Cardano.Ledger.Conway.Core -import Cardano.Ledger.Conway.Era (ConwayEra, ConwayUTXOS) -import Cardano.Ledger.Conway.Governance (ConwayGovState (..)) -import Cardano.Ledger.Conway.TxInfo () -import Cardano.Ledger.Plutus (PlutusWithContext) -import Cardano.Ledger.SafeHash (SafeHash, hashAnnotated) -import Cardano.Ledger.Shelley.LedgerState (UTxOState (..), utxosDonationL) -import Cardano.Ledger.Shelley.Rules (UtxoEnv (..), updateUTxOState) -import Cardano.Ledger.UTxO (EraUTxO (..), UTxO) -import Control.DeepSeq (NFData) -import Control.State.Transition.Extended -import Data.List.NonEmpty (NonEmpty) -import Debug.Trace (traceEvent) -import GHC.Generics (Generic) -import Lens.Micro -import NoThunks.Class (NoThunks) - -data ConwayUtxosPredFailure era - = -- | The 'isValid' tag on the transaction is incorrect. The tag given - -- here is that provided on the transaction (whereas evaluation of the - -- scripts gives the opposite.). The Text tries to explain why it failed. - ValidationTagMismatch IsValid TagMismatchDescription - | -- | We could not find all the necessary inputs for a Plutus Script. - -- Previous PredicateFailure tests should make this impossible, but the - -- consequences of not detecting this means scripts get dropped, so things - -- might validate that shouldn't. So we double check in the function - -- collectTwoPhaseScriptInputs, it should find data for every Script. - CollectErrors [CollectError era] - deriving - (Generic) - -data ConwayUtxosEvent era - = TotalDeposits (SafeHash (EraCrypto era) EraIndependentTxBody) Coin - | SuccessfulPlutusScriptsEvent (NonEmpty (PlutusWithContext (EraCrypto era))) - | FailedPlutusScriptsEvent (NonEmpty (PlutusWithContext (EraCrypto era))) - | -- | The UTxOs consumed and created by a signal tx - TxUTxODiff - -- | UTxO consumed - (UTxO era) - -- | UTxO created - (UTxO era) - deriving (Generic) - -deriving instance (Era era, Eq (TxOut era)) => Eq (ConwayUtxosEvent era) - -instance (Era era, NFData (TxOut era)) => NFData (ConwayUtxosEvent era) - -type instance EraRuleFailure "UTXOS" (ConwayEra c) = ConwayUtxosPredFailure (ConwayEra c) - -type instance EraRuleEvent "UTXOS" (ConwayEra c) = ConwayUtxosEvent (ConwayEra c) - -instance InjectRuleFailure "UTXOS" ConwayUtxosPredFailure (ConwayEra c) - -instance InjectRuleEvent "UTXOS" ConwayUtxosEvent (ConwayEra c) - -instance InjectRuleFailure "UTXOS" AlonzoUtxosPredFailure (ConwayEra c) where - injectFailure = alonzoToConwayUtxosPredFailure - -instance InjectRuleEvent "UTXOS" AlonzoUtxosEvent (ConwayEra c) where - injectEvent = alonzoToConwayUtxosEvent - -alonzoToConwayUtxosPredFailure :: - forall era. - EraRuleFailure "PPUP" era ~ VoidEraRule "PPUP" era => - Alonzo.AlonzoUtxosPredFailure era -> - ConwayUtxosPredFailure era -alonzoToConwayUtxosPredFailure = \case - Alonzo.ValidationTagMismatch t x -> ValidationTagMismatch t x - Alonzo.CollectErrors x -> CollectErrors x - Alonzo.UpdateFailure x -> absurdEraRule @"PPUP" @era x - -alonzoToConwayUtxosEvent :: - forall era. - EraRuleEvent "PPUP" era ~ VoidEraRule "PPUP" era => - Alonzo.AlonzoUtxosEvent era -> - ConwayUtxosEvent era -alonzoToConwayUtxosEvent = \case - Alonzo.AlonzoPpupToUtxosEvent x -> absurdEraRule @"PPUP" @era x - Alonzo.TotalDeposits h c -> TotalDeposits h c - Alonzo.SuccessfulPlutusScriptsEvent l -> SuccessfulPlutusScriptsEvent l - Alonzo.FailedPlutusScriptsEvent l -> FailedPlutusScriptsEvent l - Alonzo.TxUTxODiff x y -> TxUTxODiff x y - -instance - ( EraTxCert era - , ConwayEraScript era - , EncCBOR (ContextError era) - ) => - EncCBOR (ConwayUtxosPredFailure era) - where - encCBOR = - encode . \case - ValidationTagMismatch v descr -> Sum ValidationTagMismatch 0 !> To v !> To descr - CollectErrors cs -> Sum (CollectErrors @era) 1 !> To cs - -instance - ( EraTxCert era - , ConwayEraScript era - , DecCBOR (ContextError era) - ) => - DecCBOR (ConwayUtxosPredFailure era) - where - decCBOR = decode (Summands "ConwayUtxosPredicateFailure" dec) - where - dec 0 = SumD ValidationTagMismatch - Show (ConwayUtxosPredFailure era) - -deriving stock instance - ( ConwayEraScript era - , Eq (TxCert era) - , Eq (ContextError era) - , Eq (UTxOState era) - ) => - Eq (ConwayUtxosPredFailure era) - -instance - ( ConwayEraScript era - , NoThunks (TxCert era) - , NoThunks (ContextError era) - , NoThunks (UTxOState era) - ) => - NoThunks (ConwayUtxosPredFailure era) - -instance - ( ConwayEraScript era - , NFData (TxCert era) - , NFData (ContextError era) - , NFData (UTxOState era) - ) => - NFData (ConwayUtxosPredFailure era) - -instance - ( AlonzoEraTx era - , AlonzoEraUTxO era - , ConwayEraTxBody era - , ConwayEraPParams era - , EraGov era - , EraPlutusContext era - , GovState era ~ ConwayGovState era - , ScriptsNeeded era ~ AlonzoScriptsNeeded era - , Signal (ConwayUTXOS era) ~ Tx era - , EraRule "UTXOS" era ~ ConwayUTXOS era - , InjectRuleFailure "UTXOS" AlonzoUtxosPredFailure era - , InjectRuleEvent "UTXOS" AlonzoUtxosEvent era - , InjectRuleEvent "UTXOS" ConwayUtxosEvent era - ) => - STS (ConwayUTXOS era) - where - type BaseM (ConwayUTXOS era) = Cardano.Ledger.BaseTypes.ShelleyBase - type Environment (ConwayUTXOS era) = UtxoEnv era - type State (ConwayUTXOS era) = UTxOState era - type Signal (ConwayUTXOS era) = AlonzoTx era - type PredicateFailure (ConwayUTXOS era) = ConwayUtxosPredFailure era - type Event (ConwayUTXOS era) = ConwayUtxosEvent era - - transitionRules = [utxosTransition] - -instance - ( AlonzoEraTx era - , AlonzoEraUTxO era - , ConwayEraTxBody era - , ConwayEraPParams era - , EraGov era - , EraPlutusContext era - , GovState era ~ ConwayGovState era - , PredicateFailure (EraRule "UTXOS" era) ~ ConwayUtxosPredFailure era - , ScriptsNeeded era ~ AlonzoScriptsNeeded era - , Signal (ConwayUTXOS era) ~ Tx era - , EraRule "UTXOS" era ~ ConwayUTXOS era - , InjectRuleFailure "UTXOS" AlonzoUtxosPredFailure era - , InjectRuleEvent "UTXOS" AlonzoUtxosEvent era - , InjectRuleEvent "UTXOS" ConwayUtxosEvent era - ) => - Embed (ConwayUTXOS era) (BabbageUTXO era) - where - wrapFailed = AlonzoInBabbageUtxoPredFailure . UtxosFailure - wrapEvent = UtxosEvent - -utxosTransition :: - forall era. - ( AlonzoEraTx era - , AlonzoEraUTxO era - , ConwayEraTxBody era - , EraPlutusContext era - , ScriptsNeeded era ~ AlonzoScriptsNeeded era - , Signal (EraRule "UTXOS" era) ~ Tx era - , STS (EraRule "UTXOS" era) - , Environment (EraRule "UTXOS" era) ~ UtxoEnv era - , State (EraRule "UTXOS" era) ~ UTxOState era - , InjectRuleFailure "UTXOS" AlonzoUtxosPredFailure era - , BaseM (EraRule "UTXOS" era) ~ ShelleyBase - , InjectRuleEvent "UTXOS" AlonzoUtxosEvent era - , InjectRuleEvent "UTXOS" ConwayUtxosEvent era - ) => - TransitionRule (EraRule "UTXOS" era) -utxosTransition = - judgmentContext >>= \(TRC (_, _, tx)) -> do - case tx ^. isValidTxL of - IsValid True -> conwayEvalScriptsTxValid - IsValid False -> babbageEvalScriptsTxInvalid - -conwayEvalScriptsTxValid :: - forall era. - ( AlonzoEraTx era - , AlonzoEraUTxO era - , ConwayEraTxBody era - , EraPlutusContext era - , ScriptsNeeded era ~ AlonzoScriptsNeeded era - , Signal (EraRule "UTXOS" era) ~ Tx era - , STS (EraRule "UTXOS" era) - , State (EraRule "UTXOS" era) ~ UTxOState era - , Environment (EraRule "UTXOS" era) ~ UtxoEnv era - , InjectRuleFailure "UTXOS" AlonzoUtxosPredFailure era - , BaseM (EraRule "UTXOS" era) ~ ShelleyBase - , InjectRuleEvent "UTXOS" AlonzoUtxosEvent era - , InjectRuleEvent "UTXOS" ConwayUtxosEvent era - ) => - TransitionRule (EraRule "UTXOS" era) -conwayEvalScriptsTxValid = do - TRC (UtxoEnv _ pp certState, utxos@(UTxOState utxo _ _ govState _ _), tx) <- - judgmentContext - let txBody = tx ^. bodyTxL - - () <- pure $! traceEvent validBegin () - expectScriptsToPass pp tx utxo - () <- pure $! traceEvent validEnd () - - utxos' <- - updateUTxOState - pp - utxos - txBody - certState - govState - (tellEvent . injectEvent . TotalDeposits (hashAnnotated txBody)) - (\a b -> tellEvent . injectEvent $ TxUTxODiff a b) - pure $! utxos' & utxosDonationL <>~ txBody ^. treasuryDonationTxBodyL diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Utxow.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Utxow.hs deleted file mode 100644 index dca1943f481..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/Rules/Utxow.hs +++ /dev/null @@ -1,138 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Conway.Rules.Utxow ( - ConwayUTXOW, - conwayWitsVKeyNeeded, -) -where - -import Cardano.Crypto.DSIGN.Class (Signable) -import Cardano.Crypto.Hash.Class (Hash) -import Cardano.Ledger.Allegra.Rules (AllegraUtxoPredFailure) -import Cardano.Ledger.Alonzo.Rules ( - AlonzoUtxoEvent, - AlonzoUtxoPredFailure, - AlonzoUtxosPredFailure, - AlonzoUtxowEvent (WrappedShelleyEraEvent), - AlonzoUtxowPredFailure (..), - ) -import Cardano.Ledger.Alonzo.UTxO (AlonzoEraUTxO, AlonzoScriptsNeeded) -import Cardano.Ledger.Babbage.Rules ( - BabbageUTXO, - BabbageUtxoPredFailure, - BabbageUtxowPredFailure (..), - babbageUtxowTransition, - ) -import Cardano.Ledger.BaseTypes (ShelleyBase) -import Cardano.Ledger.Conway.Core -import Cardano.Ledger.Conway.Era (ConwayEra, ConwayUTXOW) -import Cardano.Ledger.Conway.Rules.Utxo () -import Cardano.Ledger.Conway.Rules.Utxos (ConwayUtxosPredFailure) -import Cardano.Ledger.Conway.UTxO (getConwayWitsVKeyNeeded) -import Cardano.Ledger.Crypto (DSIGN, HASH) -import Cardano.Ledger.Keys (KeyHash, KeyRole (..)) -import Cardano.Ledger.Shelley.LedgerState (UTxOState (..)) -import Cardano.Ledger.Shelley.Rules ( - ShelleyUtxoPredFailure, - ShelleyUtxowEvent (UtxoEvent), - ShelleyUtxowPredFailure, - UtxoEnv (..), - ) -import Cardano.Ledger.UTxO (EraUTxO (..), UTxO) -import Control.State.Transition.Extended (Embed (..), STS (..)) -import Data.Set (Set) - -conwayWitsVKeyNeeded :: - (EraTx era, ConwayEraTxBody era) => - UTxO era -> - TxBody era -> - Set (KeyHash 'Witness (EraCrypto era)) -conwayWitsVKeyNeeded = getConwayWitsVKeyNeeded -{-# DEPRECATED conwayWitsVKeyNeeded "In favor of `getConwayWitsVKeyNeeded` or `getWitsVKeyNeeded`" #-} - --- ================================ - -type instance EraRuleFailure "UTXOW" (ConwayEra c) = BabbageUtxowPredFailure (ConwayEra c) - -type instance EraRuleEvent "UTXOW" (ConwayEra c) = AlonzoUtxowEvent (ConwayEra c) - -instance InjectRuleFailure "UTXOW" BabbageUtxowPredFailure (ConwayEra c) - -instance InjectRuleFailure "UTXOW" AlonzoUtxowPredFailure (ConwayEra c) where - injectFailure = AlonzoInBabbageUtxowPredFailure - -instance InjectRuleFailure "UTXOW" ShelleyUtxowPredFailure (ConwayEra c) where - injectFailure = AlonzoInBabbageUtxowPredFailure . ShelleyInAlonzoUtxowPredFailure - -instance InjectRuleFailure "UTXOW" BabbageUtxoPredFailure (ConwayEra c) where - injectFailure = UtxoFailure - -instance InjectRuleFailure "UTXOW" AlonzoUtxoPredFailure (ConwayEra c) where - injectFailure = UtxoFailure . injectFailure - -instance InjectRuleFailure "UTXOW" AlonzoUtxosPredFailure (ConwayEra c) where - injectFailure = UtxoFailure . injectFailure - -instance InjectRuleFailure "UTXOW" ConwayUtxosPredFailure (ConwayEra c) where - injectFailure = UtxoFailure . injectFailure - -instance InjectRuleFailure "UTXOW" ShelleyUtxoPredFailure (ConwayEra c) where - injectFailure = UtxoFailure . injectFailure - -instance InjectRuleFailure "UTXOW" AllegraUtxoPredFailure (ConwayEra c) where - injectFailure = UtxoFailure . injectFailure - -instance - forall era. - ( AlonzoEraTx era - , AlonzoEraUTxO era - , ScriptsNeeded era ~ AlonzoScriptsNeeded era - , ConwayEraTxBody era - , Signable (DSIGN (EraCrypto era)) (Hash (HASH (EraCrypto era)) EraIndependentTxBody) - , EraRule "UTXOW" era ~ ConwayUTXOW era - , InjectRuleFailure "UTXOW" ShelleyUtxowPredFailure era - , InjectRuleFailure "UTXOW" AlonzoUtxowPredFailure era - , InjectRuleFailure "UTXOW" BabbageUtxowPredFailure era - , -- Allow UTXOW to call UTXO - Embed (EraRule "UTXO" era) (ConwayUTXOW era) - , Environment (EraRule "UTXO" era) ~ UtxoEnv era - , State (EraRule "UTXO" era) ~ UTxOState era - , Signal (EraRule "UTXO" era) ~ Tx era - , Eq (PredicateFailure (EraRule "UTXOS" era)) - , Show (PredicateFailure (EraRule "UTXOS" era)) - ) => - STS (ConwayUTXOW era) - where - type State (ConwayUTXOW era) = UTxOState era - type Signal (ConwayUTXOW era) = Tx era - type Environment (ConwayUTXOW era) = UtxoEnv era - type BaseM (ConwayUTXOW era) = ShelleyBase - type PredicateFailure (ConwayUTXOW era) = BabbageUtxowPredFailure era - type Event (ConwayUTXOW era) = AlonzoUtxowEvent era - transitionRules = [babbageUtxowTransition @era] - initialRules = [] - -instance - ( Era era - , STS (BabbageUTXO era) - , PredicateFailure (EraRule "UTXO" era) ~ BabbageUtxoPredFailure era - , Event (EraRule "UTXO" era) ~ AlonzoUtxoEvent era - , BaseM (ConwayUTXOW era) ~ ShelleyBase - , PredicateFailure (ConwayUTXOW era) ~ BabbageUtxowPredFailure era - , Event (ConwayUTXOW era) ~ AlonzoUtxowEvent era - ) => - Embed (BabbageUTXO era) (ConwayUTXOW era) - where - wrapFailed = UtxoFailure - wrapEvent = WrappedShelleyEraEvent . UtxoEvent diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/Scripts.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/Scripts.hs deleted file mode 100644 index ba479068839..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/Scripts.hs +++ /dev/null @@ -1,281 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE QuantifiedConstraints #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} -{-# LANGUAGE ViewPatterns #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Conway.Scripts ( - ConwayEraScript (..), - AlonzoScript (..), - PlutusScript (..), - isPlutusScript, - ConwayPlutusPurpose (..), - pattern VotingPurpose, - pattern ProposingPurpose, -) -where - -import Cardano.Ledger.Address (RewardAccount) -import Cardano.Ledger.Allegra.Scripts (Timelock, translateTimelock) -import Cardano.Ledger.Alonzo.Scripts ( - AlonzoPlutusPurpose (..), - AlonzoScript (..), - alonzoScriptPrefixTag, - isPlutusScript, - ) -import Cardano.Ledger.Babbage.Core -import Cardano.Ledger.Babbage.Scripts (PlutusScript (..)) -import Cardano.Ledger.BaseTypes (kindObject) -import Cardano.Ledger.Binary ( - CBORGroup (..), - DecCBOR (decCBOR), - DecCBORGroup (..), - EncCBOR (..), - EncCBORGroup (..), - decodeWord8, - encodeWord8, - ) -import Cardano.Ledger.Conway.Era -import Cardano.Ledger.Conway.Governance.Procedures -import Cardano.Ledger.Conway.TxCert () -import Cardano.Ledger.Crypto -import Cardano.Ledger.Mary.Value (PolicyID) -import Cardano.Ledger.Plutus.Language -import Cardano.Ledger.SafeHash (SafeToHash (..)) -import Cardano.Ledger.TxIn (TxIn) -import Control.DeepSeq (NFData (..), rwhnf) -import Data.Aeson (ToJSON (..), (.=)) -import Data.Typeable -import Data.Word (Word16, Word32, Word8) -import GHC.Generics -import NoThunks.Class (NoThunks (..)) - -class AlonzoEraScript era => ConwayEraScript era where - mkVotingPurpose :: f Word32 (Voter (EraCrypto era)) -> PlutusPurpose f era - - toVotingPurpose :: PlutusPurpose f era -> Maybe (f Word32 (Voter (EraCrypto era))) - - mkProposingPurpose :: f Word32 (ProposalProcedure era) -> PlutusPurpose f era - - toProposingPurpose :: PlutusPurpose f era -> Maybe (f Word32 (ProposalProcedure era)) - -instance Crypto c => EraScript (ConwayEra c) where - type Script (ConwayEra c) = AlonzoScript (ConwayEra c) - type NativeScript (ConwayEra c) = Timelock (ConwayEra c) - - upgradeScript = \case - TimelockScript ts -> TimelockScript $ translateTimelock ts - PlutusScript (BabbagePlutusV1 ps) -> PlutusScript $ ConwayPlutusV1 ps - PlutusScript (BabbagePlutusV2 ps) -> PlutusScript $ ConwayPlutusV2 ps - - scriptPrefixTag = alonzoScriptPrefixTag - - getNativeScript = \case - TimelockScript ts -> Just ts - _ -> Nothing - - fromNativeScript = TimelockScript - -instance Crypto c => AlonzoEraScript (ConwayEra c) where - data PlutusScript (ConwayEra c) - = ConwayPlutusV1 !(Plutus 'PlutusV1) - | ConwayPlutusV2 !(Plutus 'PlutusV2) - | ConwayPlutusV3 !(Plutus 'PlutusV3) - deriving (Eq, Ord, Show, Generic) - - type PlutusPurpose f (ConwayEra c) = ConwayPlutusPurpose f (ConwayEra c) - - eraMaxLanguage = PlutusV3 - - mkPlutusScript plutus = - case plutusSLanguage plutus of - SPlutusV1 -> Just $ ConwayPlutusV1 plutus - SPlutusV2 -> Just $ ConwayPlutusV2 plutus - SPlutusV3 -> Just $ ConwayPlutusV3 plutus - - withPlutusScript (ConwayPlutusV1 plutus) f = f plutus - withPlutusScript (ConwayPlutusV2 plutus) f = f plutus - withPlutusScript (ConwayPlutusV3 plutus) f = f plutus - - hoistPlutusPurpose f = \case - ConwaySpending x -> ConwaySpending $ f x - ConwayMinting x -> ConwayMinting $ f x - ConwayCertifying x -> ConwayCertifying $ f x - ConwayRewarding x -> ConwayRewarding $ f x - ConwayVoting x -> ConwayVoting $ f x - ConwayProposing x -> ConwayProposing $ f x - - mkSpendingPurpose = ConwaySpending - - toSpendingPurpose (ConwaySpending i) = Just i - toSpendingPurpose _ = Nothing - - mkMintingPurpose = ConwayMinting - - toMintingPurpose (ConwayMinting i) = Just i - toMintingPurpose _ = Nothing - - mkCertifyingPurpose = ConwayCertifying - - toCertifyingPurpose (ConwayCertifying i) = Just i - toCertifyingPurpose _ = Nothing - - mkRewardingPurpose = ConwayRewarding - - toRewardingPurpose (ConwayRewarding i) = Just i - toRewardingPurpose _ = Nothing - - upgradePlutusPurposeAsIx = \case - AlonzoSpending (AsIx ix) -> ConwaySpending (AsIx ix) - AlonzoMinting (AsIx ix) -> ConwayMinting (AsIx ix) - AlonzoCertifying (AsIx ix) -> ConwayCertifying (AsIx ix) - AlonzoRewarding (AsIx ix) -> ConwayRewarding (AsIx ix) - -instance Crypto c => ConwayEraScript (ConwayEra c) where - mkVotingPurpose = ConwayVoting - - toVotingPurpose (ConwayVoting i) = Just i - toVotingPurpose _ = Nothing - - mkProposingPurpose = ConwayProposing - - toProposingPurpose (ConwayProposing i) = Just i - toProposingPurpose _ = Nothing - -instance NFData (PlutusScript (ConwayEra c)) where - rnf = rwhnf -instance NoThunks (PlutusScript (ConwayEra c)) -instance Crypto c => SafeToHash (PlutusScript (ConwayEra c)) where - originalBytes ps = withPlutusScript ps originalBytes - -data ConwayPlutusPurpose f era - = ConwaySpending !(f Word32 (TxIn (EraCrypto era))) - | ConwayMinting !(f Word32 (PolicyID (EraCrypto era))) - | ConwayCertifying !(f Word32 (TxCert era)) - | ConwayRewarding !(f Word32 (RewardAccount (EraCrypto era))) - | ConwayVoting !(f Word32 (Voter (EraCrypto era))) - | ConwayProposing !(f Word32 (ProposalProcedure era)) - deriving (Generic) - -deriving instance Eq (ConwayPlutusPurpose AsIx era) -deriving instance Ord (ConwayPlutusPurpose AsIx era) -deriving instance Show (ConwayPlutusPurpose AsIx era) -instance NoThunks (ConwayPlutusPurpose AsIx era) - -deriving instance (Eq (TxCert era), EraPParams era) => Eq (ConwayPlutusPurpose AsItem era) -deriving instance (Show (TxCert era), EraPParams era) => Show (ConwayPlutusPurpose AsItem era) -instance (NoThunks (TxCert era), EraPParams era) => NoThunks (ConwayPlutusPurpose AsItem era) -deriving via - (CBORGroup (ConwayPlutusPurpose f era)) - instance - ( forall a b. (EncCBOR a, EncCBOR b) => EncCBOR (f a b) - , EraPParams era - , Typeable f - , EncCBOR (TxCert era) - ) => - EncCBOR (ConwayPlutusPurpose f era) -deriving via - (CBORGroup (ConwayPlutusPurpose f era)) - instance - ( forall a b. (EncCBOR a, EncCBOR b) => EncCBOR (f a b) - , forall a b. (DecCBOR a, DecCBOR b) => DecCBOR (f a b) - , EraPParams era - , Typeable f - , EncCBOR (TxCert era) - , DecCBOR (TxCert era) - ) => - DecCBOR (ConwayPlutusPurpose f era) - -deriving instance (Eq (TxCert era), EraPParams era) => Eq (ConwayPlutusPurpose AsIxItem era) -deriving instance (Show (TxCert era), EraPParams era) => Show (ConwayPlutusPurpose AsIxItem era) -instance (NoThunks (TxCert era), EraPParams era) => NoThunks (ConwayPlutusPurpose AsIxItem era) - -instance - (forall a b. (NFData a, NFData b) => NFData (f a b), NFData (TxCert era), EraPParams era) => - NFData (ConwayPlutusPurpose f era) - where - rnf = \case - ConwaySpending x -> rnf x - ConwayMinting x -> rnf x - ConwayCertifying x -> rnf x - ConwayRewarding x -> rnf x - ConwayVoting x -> rnf x - ConwayProposing x -> rnf x - -instance - ( forall a b. (EncCBOR a, EncCBOR b) => EncCBOR (f a b) - , EraPParams era - , Typeable f - , EncCBOR (TxCert era) - ) => - EncCBORGroup (ConwayPlutusPurpose f era) - where - listLen _ = 2 - listLenBound _ = 2 - encCBORGroup = \case - ConwaySpending p -> encodeWord8 0 <> encCBOR p - ConwayMinting p -> encodeWord8 1 <> encCBOR p - ConwayCertifying p -> encodeWord8 2 <> encCBOR p - ConwayRewarding p -> encodeWord8 3 <> encCBOR p - ConwayVoting p -> encodeWord8 4 <> encCBOR p - ConwayProposing p -> encodeWord8 5 <> encCBOR p - encodedGroupSizeExpr size_ _proxy = - encodedSizeExpr size_ (Proxy :: Proxy Word8) - + encodedSizeExpr size_ (Proxy :: Proxy Word16) - -instance - ( forall a b. (DecCBOR a, DecCBOR b) => DecCBOR (f a b) - , EraPParams era - , Typeable f - , DecCBOR (TxCert era) - ) => - DecCBORGroup (ConwayPlutusPurpose f era) - where - decCBORGroup = - decodeWord8 >>= \case - 0 -> ConwaySpending <$> decCBOR - 1 -> ConwayMinting <$> decCBOR - 2 -> ConwayCertifying <$> decCBOR - 3 -> ConwayRewarding <$> decCBOR - 4 -> ConwayVoting <$> decCBOR - 5 -> ConwayProposing <$> decCBOR - n -> fail $ "Unexpected tag for ConwayPlutusPurpose: " <> show n - -instance - ( forall a b. (ToJSON a, ToJSON b) => ToJSON (f a b) - , ToJSON (TxCert era) - , EraPParams era - ) => - ToJSON (ConwayPlutusPurpose f era) - where - toJSON = \case - ConwaySpending n -> kindObjectWithValue "ConwaySpending" n - ConwayMinting n -> kindObjectWithValue "ConwayMinting" n - ConwayCertifying n -> kindObjectWithValue "ConwayCertifying" n - ConwayRewarding n -> kindObjectWithValue "ConwayRewarding" n - ConwayVoting n -> kindObjectWithValue "ConwayVoting" n - ConwayProposing n -> kindObjectWithValue "ConwayProposing" n - where - kindObjectWithValue name n = kindObject name ["value" .= n] - -pattern VotingPurpose :: - ConwayEraScript era => f Word32 (Voter (EraCrypto era)) -> PlutusPurpose f era -pattern VotingPurpose c <- (toVotingPurpose -> Just c) - where - VotingPurpose c = mkVotingPurpose c - -pattern ProposingPurpose :: - ConwayEraScript era => f Word32 (ProposalProcedure era) -> PlutusPurpose f era -pattern ProposingPurpose c <- (toProposingPurpose -> Just c) - where - ProposingPurpose c = mkProposingPurpose c diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/Transition.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/Transition.hs deleted file mode 100644 index 83dc9d6a328..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/Transition.hs +++ /dev/null @@ -1,166 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableSuperClasses #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Conway.Transition ( - ConwayEraTransition (..), - TransitionConfig (..), - toConwayTransitionConfigPairs, -) where - -import Cardano.Ledger.Alonzo.Transition (toAlonzoTransitionConfigPairs) -import Cardano.Ledger.Babbage -import Cardano.Ledger.Babbage.Transition (TransitionConfig (BabbageTransitionConfig)) -import Cardano.Ledger.Conway.Core (Era (..)) -import Cardano.Ledger.Conway.Era -import Cardano.Ledger.Conway.Genesis (ConwayGenesis (..), toConwayGenesisPairs) -import Cardano.Ledger.Conway.Translation () -import Cardano.Ledger.Conway.TxCert (Delegatee, getStakePoolDelegatee, getVoteDelegatee) -import Cardano.Ledger.Credential (Credential) -import Cardano.Ledger.Crypto -import Cardano.Ledger.DRep (DRepState) -import Cardano.Ledger.Keys (KeyRole (..)) -import Cardano.Ledger.Shelley.LedgerState ( - NewEpochState, - certDStateL, - certVStateL, - dsUnifiedL, - esLStateL, - lsCertStateL, - nesEsL, - vsDRepsL, - ) -import Cardano.Ledger.Shelley.Transition -import Cardano.Ledger.UMap (UMElem (..), umElemsL) -import Control.Applicative (Alternative (..)) -import Data.Aeson ( - FromJSON (..), - KeyValue (..), - ToJSON (..), - Value (..), - object, - pairs, - withObject, - (.:), - ) -import Data.ListMap (ListMap) -import qualified Data.ListMap as ListMap -import qualified Data.Map.Strict as Map -import Data.Maybe.Strict (StrictMaybe (..), maybeToStrictMaybe) -import GHC.Generics -import Lens.Micro -import NoThunks.Class (NoThunks (..)) - -class EraTransition era => ConwayEraTransition era where - tcDelegsL :: - Lens' - (TransitionConfig era) - (ListMap (Credential 'Staking (EraCrypto era)) (Delegatee (EraCrypto era))) - - tcInitialDRepsL :: - Lens' - (TransitionConfig era) - (ListMap (Credential 'DRepRole (EraCrypto era)) (DRepState (EraCrypto era))) - - tcConwayGenesisL :: Lens' (TransitionConfig era) (ConwayGenesis (EraCrypto era)) - -registerDRepsThenDelegs :: - ConwayEraTransition era => - TransitionConfig era -> - NewEpochState era -> - NewEpochState era -registerDRepsThenDelegs cfg = - -- NOTE: The order of registration does not matter. - registerDelegs cfg . registerInitialDReps cfg - -instance Crypto c => EraTransition (ConwayEra c) where - data TransitionConfig (ConwayEra c) = ConwayTransitionConfig - { ctcConwayGenesis :: !(ConwayGenesis c) - , ctcBabbageTransitionConfig :: !(TransitionConfig (BabbageEra c)) - } - deriving (Show, Eq, Generic) - - mkTransitionConfig = ConwayTransitionConfig - - injectIntoTestState cfg = - registerDRepsThenDelegs cfg - . registerInitialFundsThenStaking cfg - - tcPreviousEraConfigL = - lens ctcBabbageTransitionConfig (\ctc pc -> ctc {ctcBabbageTransitionConfig = pc}) - - tcTranslationContextL = - lens ctcConwayGenesis (\ctc ag -> ctc {ctcConwayGenesis = ag}) - -instance Crypto c => ConwayEraTransition (ConwayEra c) where - tcConwayGenesisL = lens ctcConwayGenesis (\g x -> g {ctcConwayGenesis = x}) - - tcDelegsL = - protectMainnetLens "ConwayDelegs" null $ - tcConwayGenesisL . lens cgDelegs (\g x -> g {cgDelegs = x}) - - tcInitialDRepsL = - protectMainnetLens "InitialDReps" null $ - tcConwayGenesisL . lens cgInitialDReps (\g x -> g {cgInitialDReps = x}) - -instance Crypto c => NoThunks (TransitionConfig (ConwayEra c)) - -instance Crypto c => ToJSON (TransitionConfig (ConwayEra c)) where - toJSON = object . toConwayTransitionConfigPairs - toEncoding = pairs . mconcat . toConwayTransitionConfigPairs - -toConwayTransitionConfigPairs :: (KeyValue e a, Crypto c) => TransitionConfig (ConwayEra c) -> [a] -toConwayTransitionConfigPairs conwayConfig = - toAlonzoTransitionConfigPairs alonzoConfig - ++ ["conway" .= object (toConwayGenesisPairs (conwayConfig ^. tcTranslationContextL))] - where - babbageConfig = conwayConfig ^. tcPreviousEraConfigL - alonzoConfig = babbageConfig ^. tcPreviousEraConfigL - -instance Crypto c => FromJSON (TransitionConfig (ConwayEra c)) where - parseJSON = withObject "ConwayTransitionConfig" $ \o -> do - pc <- parseJSON (Object o) - ag <- o .: "conway" - pure $ mkTransitionConfig pc ag - -registerInitialDReps :: - ConwayEraTransition era => - TransitionConfig era -> - NewEpochState era -> - NewEpochState era -registerInitialDReps cfg = - nesEsL . esLStateL . lsCertStateL . certVStateL . vsDRepsL .~ drepsMap - where - drepsMap = ListMap.toMap $ cfg ^. tcInitialDRepsL - -registerDelegs :: - forall era. - ConwayEraTransition era => - TransitionConfig era -> - NewEpochState era -> - NewEpochState era -registerDelegs cfg = - nesEsL . esLStateL . lsCertStateL . certDStateL . dsUnifiedL . umElemsL - %~ \m -> ListMap.foldrWithKey (\(k, v) -> Map.insertWith joinUMElems k $ delegateeToUMElem v) m delegs - where - delegs = cfg ^. tcDelegsL - delegateeToUMElem d = - UMElem - SNothing - mempty - (maybeToStrictMaybe $ getStakePoolDelegatee d) - (maybeToStrictMaybe $ getVoteDelegatee d) - joinUMElems - (UMElem _ _ newStakePool newDRep) - (UMElem rdp ptrs oldStakePool oldDRrep) = - UMElem - rdp - ptrs - (oldStakePool <|> newStakePool) - (oldDRrep <|> newDRep) diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/Translation.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/Translation.hs deleted file mode 100644 index d4ae6381061..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/Translation.hs +++ /dev/null @@ -1,202 +0,0 @@ -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeSynonymInstances #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Conway.Translation ( - Tx (..), - addrPtrNormalize, - translateDatum, - translateTxOut, -) where - -import Cardano.Ledger.Address (addrPtrNormalize) -import Cardano.Ledger.Babbage (BabbageEra) -import Cardano.Ledger.Binary (DecoderError) -import Cardano.Ledger.CertState (CommitteeState (..)) -import Cardano.Ledger.Conway.Core hiding (Tx) -import Cardano.Ledger.Conway.Era (ConwayEra) -import Cardano.Ledger.Conway.Genesis (ConwayGenesis (..)) -import Cardano.Ledger.Conway.Governance ( - cgsCommitteeL, - cgsConstitutionL, - cgsCurPParamsL, - cgsPrevPParamsL, - mkEnactState, - rsEnactStateL, - setCompleteDRepPulsingState, - ) -import Cardano.Ledger.Conway.Scripts () -import Cardano.Ledger.Conway.Tx () -import qualified Cardano.Ledger.Core as Core (Tx) -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Plutus.Data (translateDatum) -import Cardano.Ledger.Shelley.API ( - CertState (..), - DState (..), - EpochState (..), - NewEpochState (..), - PState (..), - StrictMaybe (..), - UTxOState (..), - VState (..), - ) -import qualified Cardano.Ledger.Shelley.API as API -import Cardano.Ledger.Shelley.LedgerState ( - epochStateGovStateL, - ) -import Data.Default.Class (Default (def)) -import qualified Data.Map.Strict as Map -import Lens.Micro - --------------------------------------------------------------------------------- --- Translation from Babbage to Conway --- --- The instances below are needed by the consensus layer. Do not remove any of --- them without coordinating with consensus. --- --- Please add auxiliary instances and other declarations at the bottom of this --- module, not in the list below so that it remains clear which instances the --- consensus layer needs. --- --- WARNING: when a translation instance currently uses the default --- 'TranslationError', i.e., 'Void', it means the consensus layer relies on it --- being total. Do not change it! --------------------------------------------------------------------------------- - -type instance TranslationContext (ConwayEra c) = ConwayGenesis c - -instance Crypto c => TranslateEra (ConwayEra c) NewEpochState where - translateEra ctxt nes = do - let es = translateEra' ctxt $ nesEs nes - -- We need to ensure that we have the same initial EnactState in the pulser as - -- well as in the current EnactState, otherwise in the very first EPOCH rule call - -- the pulser will reset it. - ratifyState = - def - & rsEnactStateL .~ mkEnactState (es ^. epochStateGovStateL) - pure $ - NewEpochState - { nesEL = nesEL nes - , nesBprev = nesBprev nes - , nesBcur = nesBcur nes - , nesEs = setCompleteDRepPulsingState def ratifyState es - , nesRu = nesRu nes - , nesPd = nesPd nes - , stashedAVVMAddresses = () - } - -newtype Tx era = Tx {unTx :: Core.Tx era} - -instance Crypto c => TranslateEra (ConwayEra c) Tx where - type TranslationError (ConwayEra c) Tx = DecoderError - translateEra _ctxt (Tx tx) = do - -- Note that this does not preserve the hidden bytes field of the transaction. - -- This is under the premise that this is irrelevant for TxInBlocks, which are - -- not transmitted as contiguous chunks. - txBody <- translateEraThroughCBOR "TxBody" $ tx ^. bodyTxL - txWits <- translateEraThroughCBOR "TxWitness" $ tx ^. witsTxL - auxData <- mapM (translateEraThroughCBOR "AuxData") (tx ^. auxDataTxL) - let isValidTx = tx ^. isValidTxL - newTx = - mkBasicTx txBody - & witsTxL .~ txWits - & isValidTxL .~ isValidTx - & auxDataTxL .~ auxData - pure $ Tx newTx - --------------------------------------------------------------------------------- --- Auxiliary instances and functions --------------------------------------------------------------------------------- - -instance Crypto c => TranslateEra (ConwayEra c) PParams where - translateEra ConwayGenesis {cgUpgradePParams} = pure . upgradePParams cgUpgradePParams - -instance Crypto c => TranslateEra (ConwayEra c) EpochState where - translateEra ctxt es = - pure $ - EpochState - { esAccountState = esAccountState es - , esSnapshots = esSnapshots es - , esLState = translateEra' ctxt $ esLState es - , esNonMyopic = esNonMyopic es - } - -instance Crypto c => TranslateEra (ConwayEra c) DState where - translateEra _ DState {..} = pure DState {..} - -instance Crypto c => TranslateEra (ConwayEra c) CommitteeState where - translateEra _ CommitteeState {..} = pure CommitteeState {..} - -instance Crypto c => TranslateEra (ConwayEra c) VState where - translateEra ctx VState {..} = do - committeeState <- translateEra ctx vsCommitteeState - pure VState {vsCommitteeState = committeeState, ..} - -instance Crypto c => TranslateEra (ConwayEra c) PState where - translateEra _ PState {..} = pure PState {..} - -instance Crypto c => TranslateEra (ConwayEra c) CertState where - translateEra ctxt ls = - pure - CertState - { certDState = translateEra' ctxt $ certDState ls - , certPState = translateEra' ctxt $ certPState ls - , certVState = translateEra' ctxt $ certVState ls - } - -instance Crypto c => TranslateEra (ConwayEra c) API.LedgerState where - translateEra conwayGenesis ls = - pure - API.LedgerState - { API.lsUTxOState = translateEra' conwayGenesis $ API.lsUTxOState ls - , API.lsCertState = translateEra' conwayGenesis $ API.lsCertState ls - } - -translateGovState :: - Crypto c => - TranslationContext (ConwayEra c) -> - GovState (BabbageEra c) -> - GovState (ConwayEra c) -translateGovState ctxt@ConwayGenesis {..} sgov = - let curPParams = translateEra' ctxt (sgov ^. curPParamsGovStateL) - prevPParams = translateEra' ctxt (sgov ^. prevPParamsGovStateL) - in emptyGovState - & cgsCurPParamsL .~ curPParams - & cgsPrevPParamsL .~ prevPParams - & cgsCommitteeL .~ SJust cgCommittee - & cgsConstitutionL .~ cgConstitution - -instance Crypto c => TranslateEra (ConwayEra c) UTxOState where - translateEra ctxt us = - pure - UTxOState - { API.utxosUtxo = translateEra' ctxt $ API.utxosUtxo us - , API.utxosDeposited = API.utxosDeposited us - , API.utxosFees = API.utxosFees us - , API.utxosGovState = - translateGovState ctxt $ - API.utxosGovState us - , API.utxosStakeDistr = API.utxosStakeDistr us - , API.utxosDonation = API.utxosDonation us - } - -instance Crypto c => TranslateEra (ConwayEra c) API.UTxO where - translateEra _ctxt utxo = - pure $ API.UTxO $ upgradeTxOut `Map.map` API.unUTxO utxo - --- | Filter out `TxOut`s with zero Coins and normalize Pointers, --- while converting `TxOut`s to Conway era. -translateTxOut :: - Crypto c => - TxOut (BabbageEra c) -> - TxOut (ConwayEra c) -translateTxOut = upgradeTxOut -{-# DEPRECATED translateTxOut "In favor of `upgradeTxOut`" #-} diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/Tx.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/Tx.hs deleted file mode 100644 index d94ae8f7a3b..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/Tx.hs +++ /dev/null @@ -1,101 +0,0 @@ -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Conway.Tx ( - module BabbageTxReExport, -) -where - -import Cardano.Ledger.Allegra.Tx (validateTimelock) -import Cardano.Ledger.Alonzo.Core (AlonzoEraTxWits) -import Cardano.Ledger.Alonzo.Tx ( - alonzoMinFeeTx, - auxDataAlonzoTxL, - bodyAlonzoTxL, - isValidAlonzoTxL, - mkBasicAlonzoTx, - sizeAlonzoTxF, - witsAlonzoTxL, - ) -import Cardano.Ledger.Alonzo.TxSeq ( - AlonzoTxSeq (AlonzoTxSeq, txSeqTxns), - hashAlonzoTxSeq, - ) -import Cardano.Ledger.Babbage.Tx as BabbageTxReExport ( - AlonzoEraTx (..), - AlonzoTx (..), - ) -import Cardano.Ledger.BaseTypes (unboundRational) -import Cardano.Ledger.Coin (Coin (Coin)) -import Cardano.Ledger.Conway.Era (ConwayEra) -import Cardano.Ledger.Conway.PParams (ConwayEraPParams, ppMinFeeRefScriptCostPerByteL) -import Cardano.Ledger.Conway.TxAuxData () -import Cardano.Ledger.Conway.TxBody () -import Cardano.Ledger.Conway.TxWits () -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto -import Cardano.Ledger.Val (Val (..)) -import Lens.Micro ((^.)) - -instance Crypto c => EraTx (ConwayEra c) where - {-# SPECIALIZE instance EraTx (ConwayEra StandardCrypto) #-} - - type Tx (ConwayEra c) = AlonzoTx (ConwayEra c) - type TxUpgradeError (ConwayEra c) = TxBodyUpgradeError (ConwayEra c) - - mkBasicTx = mkBasicAlonzoTx - - bodyTxL = bodyAlonzoTxL - {-# INLINE bodyTxL #-} - - witsTxL = witsAlonzoTxL - {-# INLINE witsTxL #-} - - auxDataTxL = auxDataAlonzoTxL - {-# INLINE auxDataTxL #-} - - sizeTxF = sizeAlonzoTxF - {-# INLINE sizeTxF #-} - - validateNativeScript = validateTimelock - {-# INLINE validateNativeScript #-} - - getMinFeeTx = getConwayMinFeeTx - - upgradeTx (AlonzoTx b w valid aux) = - AlonzoTx - <$> upgradeTxBody b - <*> pure (upgradeTxWits w) - <*> pure valid - <*> pure (fmap upgradeTxAuxData aux) - -getConwayMinFeeTx :: - ( EraTx era - , AlonzoEraTxWits era - , ConwayEraPParams era - ) => - PParams era -> - Tx era -> - Int -> - Coin -getConwayMinFeeTx pp tx refScriptsSize = - alonzoMinFeeTx pp tx <+> refScriptsFee - where - refScriptCostPerByte = unboundRational (pp ^. ppMinFeeRefScriptCostPerByteL) - refScriptsFee = Coin (floor (fromIntegral @Int @Rational refScriptsSize * refScriptCostPerByte)) - -instance Crypto c => AlonzoEraTx (ConwayEra c) where - {-# SPECIALIZE instance AlonzoEraTx (ConwayEra StandardCrypto) #-} - - isValidTxL = isValidAlonzoTxL - {-# INLINE isValidTxL #-} - -instance Crypto c => EraSegWits (ConwayEra c) where - type TxSeq (ConwayEra c) = AlonzoTxSeq (ConwayEra c) - fromTxSeq = txSeqTxns - toTxSeq = AlonzoTxSeq - hashTxSeq = hashAlonzoTxSeq - numSegComponents = 4 diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/TxAuxData.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/TxAuxData.hs deleted file mode 100644 index 4b8be90c636..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/TxAuxData.hs +++ /dev/null @@ -1,24 +0,0 @@ -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Conway.TxAuxData () where - -import Cardano.Ledger.Alonzo.TxAuxData ( - AlonzoTxAuxData, - hashAlonzoTxAuxData, - translateAlonzoTxAuxData, - validateAlonzoTxAuxData, - ) -import Cardano.Ledger.Conway.Era -import Cardano.Ledger.Conway.Scripts () -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto - -instance Crypto c => EraTxAuxData (ConwayEra c) where - type TxAuxData (ConwayEra c) = AlonzoTxAuxData (ConwayEra c) - - upgradeTxAuxData = translateAlonzoTxAuxData - - hashTxAuxData = hashAlonzoTxAuxData - - validateTxAuxData = validateAlonzoTxAuxData diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/TxBody.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/TxBody.hs deleted file mode 100644 index c57a43c0468..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/TxBody.hs +++ /dev/null @@ -1,745 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE InstanceSigs #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} -{-# LANGUAGE ViewPatterns #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Conway.TxBody ( - ConwayEraTxBody (..), - ConwayTxBody ( - ConwayTxBody, - ctbSpendInputs, - ctbCollateralInputs, - ctbReferenceInputs, - ctbOutputs, - ctbCollateralReturn, - ctbTotalCollateral, - ctbCerts, - ctbWithdrawals, - ctbTxfee, - ctbVldt, - ctbReqSignerHashes, - ctbMint, - ctbScriptIntegrityHash, - ctbAdHash, - ctbTxNetworkId, - ctbVotingProcedures, - ctbProposalProcedures, - ctbCurrentTreasuryValue, - ctbTreasuryDonation - ), - ConwayTxBodyRaw, - conwayTotalDepositsTxBody, - conwayProposalsDeposits, -) where - -import Cardano.Ledger.Alonzo.TxAuxData (AuxiliaryDataHash (..)) -import Cardano.Ledger.Alonzo.TxBody (Indexable (..)) -import Cardano.Ledger.Babbage.Core -import Cardano.Ledger.Babbage.TxBody ( - BabbageTxBody (..), - allSizedOutputsBabbageTxBodyF, - babbageAllInputsTxBodyF, - babbageSpendableInputsTxBodyF, - ) -import Cardano.Ledger.BaseTypes (Network, fromSMaybe, isSJust) -import Cardano.Ledger.Binary ( - Annotator, - DecCBOR (..), - EncCBOR (..), - Sized (..), - ToCBOR (..), - mkSized, - ) -import Cardano.Ledger.Binary.Coders ( - Decode (..), - Density (..), - Encode (..), - Field (..), - Wrapped (..), - decode, - encode, - encodeKeyedStrictMaybe, - field, - fieldGuarded, - ofield, - (!>), - ) -import Cardano.Ledger.Coin (Coin (..), decodePositiveCoin) -import Cardano.Ledger.Conway.Era (ConwayEra) -import Cardano.Ledger.Conway.Governance.Procedures (ProposalProcedure, VotingProcedures (..)) -import Cardano.Ledger.Conway.PParams (ConwayEraPParams, ppGovActionDepositL) -import Cardano.Ledger.Conway.Scripts (ConwayEraScript, ConwayPlutusPurpose (..)) -import Cardano.Ledger.Conway.TxCert ( - ConwayEraTxCert, - ConwayTxCert (..), - ConwayTxCertUpgradeError, - ) -import Cardano.Ledger.Conway.TxOut () -import Cardano.Ledger.Crypto -import Cardano.Ledger.Keys (KeyHash (..), KeyRole (..)) -import Cardano.Ledger.Mary.Value ( - MaryValue (..), - MultiAsset (..), - PolicyID, - policies, - ) -import Cardano.Ledger.MemoBytes ( - EqRaw, - Mem, - MemoBytes (..), - MemoHashIndex, - Memoized (..), - getMemoRawType, - getMemoSafeHash, - lensMemoRawType, - mkMemoized, - ) -import Cardano.Ledger.SafeHash (HashAnnotated (..), SafeToHash) -import Cardano.Ledger.TxIn (TxIn (..)) -import Cardano.Ledger.Val (Val (..)) -import Control.Arrow (left) -import Control.DeepSeq (NFData) -import Control.Monad (unless, when) -import Data.Maybe.Strict (StrictMaybe (..)) -import qualified Data.OSet.Strict as OSet -import Data.Sequence.Strict (StrictSeq) -import Data.Set (Set) -import Data.Typeable (Typeable) -import GHC.Generics (Generic) -import Lens.Micro (Lens', to, (^.)) -import NoThunks.Class (NoThunks) - -instance Memoized ConwayTxBody where - type RawType ConwayTxBody = ConwayTxBodyRaw - -data ConwayTxBodyRaw era = ConwayTxBodyRaw - { ctbrSpendInputs :: !(Set (TxIn (EraCrypto era))) - , ctbrCollateralInputs :: !(Set (TxIn (EraCrypto era))) - , ctbrReferenceInputs :: !(Set (TxIn (EraCrypto era))) - , ctbrOutputs :: !(StrictSeq (Sized (TxOut era))) - , ctbrCollateralReturn :: !(StrictMaybe (Sized (TxOut era))) - , ctbrTotalCollateral :: !(StrictMaybe Coin) - , ctbrCerts :: !(OSet.OSet (ConwayTxCert era)) - , ctbrWithdrawals :: !(Withdrawals (EraCrypto era)) - , ctbrTxfee :: !Coin - , ctbrVldt :: !ValidityInterval - , ctbrReqSignerHashes :: !(Set (KeyHash 'Witness (EraCrypto era))) - , ctbrMint :: !(MultiAsset (EraCrypto era)) - , ctbrScriptIntegrityHash :: !(StrictMaybe (ScriptIntegrityHash (EraCrypto era))) - , ctbrAuxDataHash :: !(StrictMaybe (AuxiliaryDataHash (EraCrypto era))) - , ctbrTxNetworkId :: !(StrictMaybe Network) - , ctbrVotingProcedures :: !(VotingProcedures era) - , ctbrProposalProcedures :: !(OSet.OSet (ProposalProcedure era)) - , ctbrCurrentTreasuryValue :: !(StrictMaybe Coin) - , ctbrTreasuryDonation :: !Coin - } - deriving (Generic, Typeable) - -deriving instance (EraPParams era, Eq (TxOut era)) => Eq (ConwayTxBodyRaw era) - -instance - (EraPParams era, NoThunks (TxOut era)) => - NoThunks (ConwayTxBodyRaw era) - -instance - (EraPParams era, NFData (TxOut era)) => - NFData (ConwayTxBodyRaw era) - -deriving instance - (EraPParams era, Show (TxOut era)) => - Show (ConwayTxBodyRaw era) - -instance - ( EraPParams era - , DecCBOR (TxOut era) - , ShelleyEraTxCert era - , TxCert era ~ ConwayTxCert era - ) => - DecCBOR (ConwayTxBodyRaw era) - where - decCBOR = - decode $ - SparseKeyed - "TxBodyRaw" - basicConwayTxBodyRaw - bodyFields - requiredFields - where - bodyFields :: Word -> Field (ConwayTxBodyRaw era) - bodyFields 0 = field (\x tx -> tx {ctbrSpendInputs = x}) From - bodyFields 1 = field (\x tx -> tx {ctbrOutputs = x}) From - bodyFields 2 = field (\x tx -> tx {ctbrTxfee = x}) From - bodyFields 3 = - ofield - (\x tx -> tx {ctbrVldt = (ctbrVldt tx) {invalidHereafter = x}}) - From - bodyFields 4 = - fieldGuarded - (emptyFailure "Certificates" "non-empty") - OSet.null - (\x tx -> tx {ctbrCerts = x}) - From - bodyFields 5 = - fieldGuarded - (emptyFailure "Withdrawals" "non-empty") - (null . unWithdrawals) - (\x tx -> tx {ctbrWithdrawals = x}) - From - bodyFields 7 = ofield (\x tx -> tx {ctbrAuxDataHash = x}) From - bodyFields 8 = - ofield - (\x tx -> tx {ctbrVldt = (ctbrVldt tx) {invalidBefore = x}}) - From - bodyFields 9 = - fieldGuarded - (emptyFailure "Mint" "non-empty") - (== mempty) - (\x tx -> tx {ctbrMint = x}) - From - bodyFields 11 = ofield (\x tx -> tx {ctbrScriptIntegrityHash = x}) From - bodyFields 13 = - fieldGuarded - (emptyFailure "Collateral Inputs" "non-empty") - null - (\x tx -> tx {ctbrCollateralInputs = x}) - From - bodyFields 14 = - fieldGuarded - (emptyFailure "Required Signer Hashes" "non-empty") - null - (\x tx -> tx {ctbrReqSignerHashes = x}) - From - bodyFields 15 = ofield (\x tx -> tx {ctbrTxNetworkId = x}) From - bodyFields 16 = ofield (\x tx -> tx {ctbrCollateralReturn = x}) From - bodyFields 17 = ofield (\x tx -> tx {ctbrTotalCollateral = x}) From - bodyFields 18 = - fieldGuarded - (emptyFailure "Reference Inputs" "non-empty") - null - (\x tx -> tx {ctbrReferenceInputs = x}) - From - bodyFields 19 = - fieldGuarded - (emptyFailure "VotingProcedures" "non-empty") - (null . unVotingProcedures) - (\x tx -> tx {ctbrVotingProcedures = x}) - From - bodyFields 20 = - fieldGuarded - (emptyFailure "ProposalProcedures" "non-empty") - OSet.null - (\x tx -> tx {ctbrProposalProcedures = x}) - From - bodyFields 21 = ofield (\x tx -> tx {ctbrCurrentTreasuryValue = x}) From - bodyFields 22 = - ofield - (\x tx -> tx {ctbrTreasuryDonation = fromSMaybe zero x}) - (D (decodePositiveCoin $ emptyFailure "Treasury Donation" "non-zero")) - bodyFields n = field (\_ t -> t) (Invalid n) - requiredFields :: [(Word, String)] - requiredFields = - [ (0, "inputs") - , (1, "outputs") - , (2, "fee") - ] - emptyFailure fieldName requirement = - "TxBody: '" <> fieldName <> "' must be " <> requirement <> " when supplied" - -newtype ConwayTxBody era = TxBodyConstr (MemoBytes ConwayTxBodyRaw era) - deriving (Generic, SafeToHash, ToCBOR) - -deriving instance - (EraPParams era, NoThunks (TxOut era)) => - NoThunks (ConwayTxBody era) - -deriving instance - (EraPParams era, Eq (TxOut era)) => - Eq (ConwayTxBody era) - -deriving newtype instance - (EraPParams era, NFData (TxOut era)) => - NFData (ConwayTxBody era) - -deriving instance - (EraPParams era, Show (TxOut era)) => - Show (ConwayTxBody era) - -type instance MemoHashIndex ConwayTxBodyRaw = EraIndependentTxBody - -instance c ~ EraCrypto era => HashAnnotated (ConwayTxBody era) EraIndependentTxBody c where - hashAnnotated = getMemoSafeHash - -instance - ( DecCBOR (TxOut era) - , EraPParams era - , ShelleyEraTxCert era - , TxCert era ~ ConwayTxCert era - ) => - DecCBOR (Annotator (ConwayTxBodyRaw era)) - where - decCBOR = pure <$> decCBOR - -deriving via - (Mem ConwayTxBodyRaw era) - instance - ( DecCBOR (TxOut era) - , EraPParams era - , ShelleyEraTxCert era - , TxCert era ~ ConwayTxCert era - ) => - DecCBOR (Annotator (ConwayTxBody era)) - -mkConwayTxBody :: ConwayEraTxBody era => ConwayTxBody era -mkConwayTxBody = mkMemoized basicConwayTxBodyRaw - -basicConwayTxBodyRaw :: ConwayTxBodyRaw era -basicConwayTxBodyRaw = - ConwayTxBodyRaw - mempty - mempty - mempty - mempty - SNothing - SNothing - OSet.empty - (Withdrawals mempty) - mempty - (ValidityInterval SNothing SNothing) - mempty - mempty - SNothing - SNothing - SNothing - (VotingProcedures mempty) - OSet.empty - SNothing - mempty - -data ConwayTxBodyUpgradeError c - = CTBUETxCert ConwayTxCertUpgradeError - | -- | The TxBody contains an update proposal from a pre-Conway era. Since - -- this can only have come from the genesis delegates, we just discard it. - CTBUEContainsUpdate - | -- | In eras prior to Conway duplicate certificates where allowed - CTBUEContainsDuplicateCerts (Set (TxCert (ConwayEra c))) - deriving (Eq, Show) - -instance Crypto c => EraTxBody (ConwayEra c) where - {-# SPECIALIZE instance EraTxBody (ConwayEra StandardCrypto) #-} - - type TxBody (ConwayEra c) = ConwayTxBody (ConwayEra c) - type TxBodyUpgradeError (ConwayEra c) = ConwayTxBodyUpgradeError c - - mkBasicTxBody = mkConwayTxBody - - inputsTxBodyL = lensMemoRawType ctbrSpendInputs (\txb x -> txb {ctbrSpendInputs = x}) - {-# INLINE inputsTxBodyL #-} - - outputsTxBodyL = - lensMemoRawType - (fmap sizedValue . ctbrOutputs) - (\txb x -> txb {ctbrOutputs = mkSized (eraProtVerLow @(ConwayEra c)) <$> x}) - {-# INLINE outputsTxBodyL #-} - - feeTxBodyL = lensMemoRawType ctbrTxfee (\txb x -> txb {ctbrTxfee = x}) - {-# INLINE feeTxBodyL #-} - - auxDataHashTxBodyL = lensMemoRawType ctbrAuxDataHash (\txb x -> txb {ctbrAuxDataHash = x}) - {-# INLINE auxDataHashTxBodyL #-} - - spendableInputsTxBodyF = babbageSpendableInputsTxBodyF - {-# INLINE spendableInputsTxBodyF #-} - - allInputsTxBodyF = babbageAllInputsTxBodyF - {-# INLINE allInputsTxBodyF #-} - - withdrawalsTxBodyL = lensMemoRawType ctbrWithdrawals (\txb x -> txb {ctbrWithdrawals = x}) - {-# INLINE withdrawalsTxBodyL #-} - - certsTxBodyL = - lensMemoRawType (OSet.toStrictSeq . ctbrCerts) (\txb x -> txb {ctbrCerts = OSet.fromStrictSeq x}) - {-# INLINE certsTxBodyL #-} - - getTotalDepositsTxBody = conwayTotalDepositsTxBody - - getTotalRefundsTxBody pp lookupStakingDeposit lookupDRepDeposit txBody = - getTotalRefundsTxCerts pp lookupStakingDeposit lookupDRepDeposit (txBody ^. certsTxBodyL) - - upgradeTxBody btb = do - when (isSJust (btbUpdate btb)) $ Left CTBUEContainsUpdate - certs <- traverse (left CTBUETxCert . upgradeTxCert) (btbCerts btb) - let (duplicates, certsOSet) = OSet.fromStrictSeqDuplicates certs - unless (null duplicates) $ Left $ CTBUEContainsDuplicateCerts duplicates - pure $ - ConwayTxBody - { ctbSpendInputs = btbInputs btb - , ctbOutputs = - mkSized (eraProtVerLow @(ConwayEra c)) - . upgradeTxOut - . sizedValue - <$> btbOutputs btb - , ctbCerts = certsOSet - , ctbWithdrawals = btbWithdrawals btb - , ctbTxfee = btbTxFee btb - , ctbVldt = btbValidityInterval btb - , ctbAdHash = btbAuxDataHash btb - , ctbMint = btbMint btb - , ctbCollateralInputs = btbCollateral btb - , ctbReqSignerHashes = btbReqSignerHashes btb - , ctbScriptIntegrityHash = btbScriptIntegrityHash btb - , ctbTxNetworkId = btbTxNetworkId btb - , ctbReferenceInputs = btbReferenceInputs btb - , ctbCollateralReturn = - mkSized (eraProtVerLow @(ConwayEra c)) - . upgradeTxOut - . sizedValue - <$> btbCollateralReturn btb - , ctbTotalCollateral = btbTotalCollateral btb - , ctbCurrentTreasuryValue = SNothing - , ctbProposalProcedures = OSet.empty - , ctbVotingProcedures = VotingProcedures mempty - , ctbTreasuryDonation = Coin 0 - } - --- ========================================== --- Deposits and Refunds for Conway TxBody - --- | Compute all the deposits in a TxBody. This includes deposits for: --- --- 1. registering Stake --- 2. registering a StakePool --- 3. registering a DRep --- 4. submitting a Proposal --- --- This is the contribution of a TxBody towards the total --- `Cardano.Ledger.CertState.Obligations` -conwayTotalDepositsTxBody :: - ConwayEraTxBody era => - PParams era -> - (KeyHash 'StakePool (EraCrypto era) -> Bool) -> - TxBody era -> - Coin -conwayTotalDepositsTxBody pp isPoolRegisted txBody = - getTotalDepositsTxCerts pp isPoolRegisted (txBody ^. certsTxBodyL) - <+> conwayProposalsDeposits pp txBody - --- | Total number of deposits in the proposals in TxBody -conwayProposalsDeposits :: - ConwayEraTxBody era => - PParams era -> - TxBody era -> - Coin -conwayProposalsDeposits pp txBody = numProposals <×> depositPerProposal - where - numProposals = length (txBody ^. proposalProceduresTxBodyL) - depositPerProposal = pp ^. ppGovActionDepositL - -instance Crypto c => AllegraEraTxBody (ConwayEra c) where - {-# SPECIALIZE instance AllegraEraTxBody (ConwayEra StandardCrypto) #-} - - vldtTxBodyL = lensMemoRawType ctbrVldt (\txb x -> txb {ctbrVldt = x}) - {-# INLINE vldtTxBodyL #-} - -instance Crypto c => MaryEraTxBody (ConwayEra c) where - {-# SPECIALIZE instance MaryEraTxBody (ConwayEra StandardCrypto) #-} - - mintTxBodyL = lensMemoRawType ctbrMint (\txb x -> txb {ctbrMint = x}) - {-# INLINE mintTxBodyL #-} - - mintValueTxBodyF = mintTxBodyL . to (MaryValue mempty) - - mintedTxBodyF = - to (\(TxBodyConstr (Memo txBodyRaw _)) -> policies (ctbrMint txBodyRaw)) - {-# INLINE mintedTxBodyF #-} - -instance Crypto c => AlonzoEraTxBody (ConwayEra c) where - {-# SPECIALIZE instance AlonzoEraTxBody (ConwayEra StandardCrypto) #-} - - collateralInputsTxBodyL = - lensMemoRawType ctbrCollateralInputs (\txb x -> txb {ctbrCollateralInputs = x}) - {-# INLINE collateralInputsTxBodyL #-} - - reqSignerHashesTxBodyL = - lensMemoRawType ctbrReqSignerHashes (\txb x -> txb {ctbrReqSignerHashes = x}) - {-# INLINE reqSignerHashesTxBodyL #-} - - scriptIntegrityHashTxBodyL = - lensMemoRawType ctbrScriptIntegrityHash (\txb x -> txb {ctbrScriptIntegrityHash = x}) - {-# INLINE scriptIntegrityHashTxBodyL #-} - - networkIdTxBodyL = lensMemoRawType ctbrTxNetworkId (\txb x -> txb {ctbrTxNetworkId = x}) - {-# INLINE networkIdTxBodyL #-} - - redeemerPointer = conwayRedeemerPointer - - redeemerPointerInverse = conwayRedeemerPointerInverse - -instance Crypto c => BabbageEraTxBody (ConwayEra c) where - {-# SPECIALIZE instance BabbageEraTxBody (ConwayEra StandardCrypto) #-} - - sizedOutputsTxBodyL = lensMemoRawType ctbrOutputs (\txb x -> txb {ctbrOutputs = x}) - {-# INLINE sizedOutputsTxBodyL #-} - - referenceInputsTxBodyL = - lensMemoRawType ctbrReferenceInputs (\txb x -> txb {ctbrReferenceInputs = x}) - {-# INLINE referenceInputsTxBodyL #-} - - totalCollateralTxBodyL = - lensMemoRawType ctbrTotalCollateral (\txb x -> txb {ctbrTotalCollateral = x}) - {-# INLINE totalCollateralTxBodyL #-} - - collateralReturnTxBodyL = - lensMemoRawType - (fmap sizedValue . ctbrCollateralReturn) - (\txb x -> txb {ctbrCollateralReturn = mkSized (eraProtVerLow @(ConwayEra c)) <$> x}) - {-# INLINE collateralReturnTxBodyL #-} - - sizedCollateralReturnTxBodyL = - lensMemoRawType ctbrCollateralReturn (\txb x -> txb {ctbrCollateralReturn = x}) - {-# INLINE sizedCollateralReturnTxBodyL #-} - - allSizedOutputsTxBodyF = allSizedOutputsBabbageTxBodyF - {-# INLINE allSizedOutputsTxBodyF #-} - -instance Crypto c => ConwayEraTxBody (ConwayEra c) where - votingProceduresTxBodyL = - lensMemoRawType ctbrVotingProcedures (\txb x -> txb {ctbrVotingProcedures = x}) - {-# INLINE votingProceduresTxBodyL #-} - proposalProceduresTxBodyL = - lensMemoRawType ctbrProposalProcedures (\txb x -> txb {ctbrProposalProcedures = x}) - {-# INLINE proposalProceduresTxBodyL #-} - currentTreasuryValueTxBodyL = - lensMemoRawType ctbrCurrentTreasuryValue (\txb x -> txb {ctbrCurrentTreasuryValue = x}) - {-# INLINE currentTreasuryValueTxBodyL #-} - treasuryDonationTxBodyL = - lensMemoRawType ctbrTreasuryDonation (\txb x -> txb {ctbrTreasuryDonation = x}) - {-# INLINE treasuryDonationTxBodyL #-} - -instance - (EraPParams era, Eq (TxOut era), Eq (TxCert era)) => - EqRaw (ConwayTxBody era) - -pattern ConwayTxBody :: - ConwayEraTxBody era => - Set (TxIn (EraCrypto era)) -> - Set (TxIn (EraCrypto era)) -> - Set (TxIn (EraCrypto era)) -> - StrictSeq (Sized (TxOut era)) -> - StrictMaybe (Sized (TxOut era)) -> - StrictMaybe Coin -> - OSet.OSet (ConwayTxCert era) -> - Withdrawals (EraCrypto era) -> - Coin -> - ValidityInterval -> - Set (KeyHash 'Witness (EraCrypto era)) -> - MultiAsset (EraCrypto era) -> - StrictMaybe (ScriptIntegrityHash (EraCrypto era)) -> - StrictMaybe (AuxiliaryDataHash (EraCrypto era)) -> - StrictMaybe Network -> - VotingProcedures era -> - OSet.OSet (ProposalProcedure era) -> - StrictMaybe Coin -> - Coin -> - ConwayTxBody era -pattern ConwayTxBody - { ctbSpendInputs - , ctbCollateralInputs - , ctbReferenceInputs - , ctbOutputs - , ctbCollateralReturn - , ctbTotalCollateral - , ctbCerts - , ctbWithdrawals - , ctbTxfee - , ctbVldt - , ctbReqSignerHashes - , ctbMint - , ctbScriptIntegrityHash - , ctbAdHash - , ctbTxNetworkId - , ctbVotingProcedures - , ctbProposalProcedures - , ctbCurrentTreasuryValue - , ctbTreasuryDonation - } <- - ( getMemoRawType -> - ConwayTxBodyRaw - { ctbrSpendInputs = ctbSpendInputs - , ctbrCollateralInputs = ctbCollateralInputs - , ctbrReferenceInputs = ctbReferenceInputs - , ctbrOutputs = ctbOutputs - , ctbrCollateralReturn = ctbCollateralReturn - , ctbrTotalCollateral = ctbTotalCollateral - , ctbrCerts = ctbCerts - , ctbrWithdrawals = ctbWithdrawals - , ctbrTxfee = ctbTxfee - , ctbrVldt = ctbVldt - , ctbrReqSignerHashes = ctbReqSignerHashes - , ctbrMint = ctbMint - , ctbrScriptIntegrityHash = ctbScriptIntegrityHash - , ctbrAuxDataHash = ctbAdHash - , ctbrTxNetworkId = ctbTxNetworkId - , ctbrVotingProcedures = ctbVotingProcedures - , ctbrProposalProcedures = ctbProposalProcedures - , ctbrCurrentTreasuryValue = ctbCurrentTreasuryValue - , ctbrTreasuryDonation = ctbTreasuryDonation - } - ) - where - ConwayTxBody - inputsX - collateralX - referenceInputsX - outputsX - collateralReturnX - totalCollateralX - certsX - withdrawalsX - txfeeX - vldtX - reqSignerHashesX - mintX - scriptIntegrityHashX - adHashX - txnetworkidX - votingProcedures - proposalProcedures - currentTreasuryValue - treasuryDonation = - mkMemoized $ - ConwayTxBodyRaw - inputsX - collateralX - referenceInputsX - outputsX - collateralReturnX - totalCollateralX - certsX - withdrawalsX - txfeeX - vldtX - reqSignerHashesX - mintX - scriptIntegrityHashX - adHashX - txnetworkidX - votingProcedures - proposalProcedures - currentTreasuryValue - treasuryDonation - -{-# COMPLETE ConwayTxBody #-} - --------------------------------------------------------------------------------- --- Serialisation --------------------------------------------------------------------------------- - -encodeTxBodyRaw :: - ConwayEraTxBody era => - ConwayTxBodyRaw era -> - Encode ('Closed 'Sparse) (ConwayTxBodyRaw era) -encodeTxBodyRaw ConwayTxBodyRaw {..} = - let ValidityInterval bot top = ctbrVldt - in Keyed - ( \i ci ri o cr tc f t c w b -> - ConwayTxBodyRaw i ci ri o cr tc c w f (ValidityInterval b t) - ) - !> Key 0 (To ctbrSpendInputs) - !> Omit null (Key 13 (To ctbrCollateralInputs)) - !> Omit null (Key 18 (To ctbrReferenceInputs)) - !> Key 1 (To ctbrOutputs) - !> encodeKeyedStrictMaybe 16 ctbrCollateralReturn - !> encodeKeyedStrictMaybe 17 ctbrTotalCollateral - !> Key 2 (To ctbrTxfee) - !> encodeKeyedStrictMaybe 3 top - !> Omit OSet.null (Key 4 (To ctbrCerts)) - !> Omit (null . unWithdrawals) (Key 5 (To ctbrWithdrawals)) - !> encodeKeyedStrictMaybe 8 bot - !> Omit null (Key 14 (To ctbrReqSignerHashes)) - !> Omit (== mempty) (Key 9 (To ctbrMint)) - !> encodeKeyedStrictMaybe 11 ctbrScriptIntegrityHash - !> encodeKeyedStrictMaybe 7 ctbrAuxDataHash - !> encodeKeyedStrictMaybe 15 ctbrTxNetworkId - !> Omit (null . unVotingProcedures) (Key 19 (To ctbrVotingProcedures)) - !> Omit OSet.null (Key 20 (To ctbrProposalProcedures)) - !> encodeKeyedStrictMaybe 21 ctbrCurrentTreasuryValue - !> Omit (== mempty) (Key 22 $ To ctbrTreasuryDonation) - -instance ConwayEraTxBody era => EncCBOR (ConwayTxBodyRaw era) where - encCBOR = encode . encodeTxBodyRaw - --- | Encodes memoized bytes created upon construction. -instance Era era => EncCBOR (ConwayTxBody era) - -class - (BabbageEraTxBody era, ConwayEraTxCert era, ConwayEraPParams era, ConwayEraScript era) => - ConwayEraTxBody era - where - -- | Lens for getting and setting number of `Coin` that is expected to be in the - -- Treasury at the current Epoch - currentTreasuryValueTxBodyL :: Lens' (TxBody era) (StrictMaybe Coin) - - -- | Lens for getting and setting `VotingProcedures`. - votingProceduresTxBodyL :: Lens' (TxBody era) (VotingProcedures era) - - -- | Lens for getting and setting `ProposalProcedures`. - proposalProceduresTxBodyL :: Lens' (TxBody era) (OSet.OSet (ProposalProcedure era)) - - treasuryDonationTxBodyL :: Lens' (TxBody era) Coin - -conwayRedeemerPointer :: - forall era. - ConwayEraTxBody era => - TxBody era -> - ConwayPlutusPurpose AsItem era -> - StrictMaybe (ConwayPlutusPurpose AsIx era) -conwayRedeemerPointer txBody = \case - ConwayMinting policyID -> - ConwayMinting <$> indexOf policyID (txBody ^. mintedTxBodyF :: Set (PolicyID (EraCrypto era))) - ConwaySpending txIn -> - ConwaySpending <$> indexOf txIn (txBody ^. inputsTxBodyL) - ConwayRewarding rewardAccount -> - ConwayRewarding <$> indexOf rewardAccount (unWithdrawals (txBody ^. withdrawalsTxBodyL)) - ConwayCertifying txCert -> - ConwayCertifying <$> indexOf txCert (txBody ^. certsTxBodyL) - ConwayVoting votingProcedure -> - ConwayVoting <$> indexOf votingProcedure (txBody ^. votingProceduresTxBodyL) - ConwayProposing proposalProcedure -> - ConwayProposing <$> indexOf proposalProcedure (txBody ^. proposalProceduresTxBodyL) - -conwayRedeemerPointerInverse :: - ConwayEraTxBody era => - TxBody era -> - ConwayPlutusPurpose AsIx era -> - StrictMaybe (ConwayPlutusPurpose AsIxItem era) -conwayRedeemerPointerInverse txBody = \case - ConwayMinting idx -> - ConwayMinting <$> fromIndex idx (txBody ^. mintedTxBodyF) - ConwaySpending idx -> - ConwaySpending <$> fromIndex idx (txBody ^. inputsTxBodyL) - ConwayRewarding idx -> - ConwayRewarding <$> fromIndex idx (unWithdrawals (txBody ^. withdrawalsTxBodyL)) - ConwayCertifying idx -> - ConwayCertifying <$> fromIndex idx (txBody ^. certsTxBodyL) - ConwayVoting idx -> - ConwayVoting <$> fromIndex idx (txBody ^. votingProceduresTxBodyL) - ConwayProposing idx -> - ConwayProposing <$> fromIndex idx (txBody ^. proposalProceduresTxBodyL) diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/TxCert.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/TxCert.hs deleted file mode 100644 index 50b10fe0c05..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/TxCert.hs +++ /dev/null @@ -1,817 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} -{-# LANGUAGE ViewPatterns #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Conway.TxCert ( - ConwayTxCert (..), - ConwayTxCertUpgradeError (..), - ConwayDelegCert (..), - ConwayGovCert (..), - Delegatee (..), - ConwayEraTxCert (..), - fromShelleyDelegCert, - toShelleyDelegCert, - getScriptWitnessConwayTxCert, - getVKeyWitnessConwayTxCert, - getDelegateeTxCert, - getStakePoolDelegatee, - getVoteDelegatee, - conwayDRepDepositsTxCerts, - conwayDRepRefundsTxCerts, - conwayTotalDepositsTxCerts, - conwayTotalRefundsTxCerts, - pattern RegDepositTxCert, - pattern UnRegDepositTxCert, - pattern DelegTxCert, - pattern RegDepositDelegTxCert, - pattern AuthCommitteeHotKeyTxCert, - pattern ResignCommitteeColdTxCert, - pattern RegDRepTxCert, - pattern UnRegDRepTxCert, - pattern UpdateDRepTxCert, -) -where - -import Cardano.Ledger.Babbage.Core -import Cardano.Ledger.BaseTypes (StrictMaybe (..), invalidKey, kindObject) -import Cardano.Ledger.Binary ( - DecCBOR (..), - Decoder, - EncCBOR (..), - Encoding, - FromCBOR (..), - ToCBOR (..), - decodeNullStrictMaybe, - decodeRecordSum, - encodeListLen, - encodeNullStrictMaybe, - encodeWord8, - toPlainDecoder, - toPlainEncoding, - ) -import Cardano.Ledger.Binary.Coders (Decode (..), Encode (..), decode, encode, (!>), ( EraTxCert (ConwayEra c) where - type TxCert (ConwayEra c) = ConwayTxCert (ConwayEra c) - - type TxCertUpgradeError (ConwayEra c) = ConwayTxCertUpgradeError - - upgradeTxCert = \case - RegPoolTxCert poolParams -> Right $ RegPoolTxCert poolParams - RetirePoolTxCert poolId epochNo -> Right $ RetirePoolTxCert poolId epochNo - RegTxCert cred -> Right $ RegTxCert cred - UnRegTxCert cred -> Right $ UnRegTxCert cred - DelegStakeTxCert cred poolId -> Right $ DelegStakeTxCert cred poolId - MirTxCert {} -> Left MirTxCertExpunged - -- Using wildcard here instead of a pattern match on GenesisDelegTxCert in order to - -- workaround ghc-8.10 disrespecting the completeness pragma. - _ -> Left GenesisDelegTxCertExpunged - - getVKeyWitnessTxCert = getVKeyWitnessConwayTxCert - - getScriptWitnessTxCert = getScriptWitnessConwayTxCert - - mkRegPoolTxCert = ConwayTxCertPool . RegPool - - getRegPoolTxCert (ConwayTxCertPool (RegPool poolParams)) = Just poolParams - getRegPoolTxCert _ = Nothing - - mkRetirePoolTxCert poolId epochNo = ConwayTxCertPool $ RetirePool poolId epochNo - - getRetirePoolTxCert (ConwayTxCertPool (RetirePool poolId epochNo)) = Just (poolId, epochNo) - getRetirePoolTxCert _ = Nothing - - lookupRegStakeTxCert = \case - RegTxCert c -> Just c - RegDepositTxCert c _ -> Just c - RegDepositDelegTxCert c _ _ -> Just c - _ -> Nothing - lookupUnRegStakeTxCert = \case - UnRegTxCert c -> Just c - UnRegDepositTxCert c _ -> Just c - _ -> Nothing - - getTotalRefundsTxCerts = conwayTotalRefundsTxCerts - - getTotalDepositsTxCerts = conwayTotalDepositsTxCerts - -instance Crypto c => ShelleyEraTxCert (ConwayEra c) where - mkRegTxCert c = ConwayTxCertDeleg $ ConwayRegCert c SNothing - - getRegTxCert (ConwayTxCertDeleg (ConwayRegCert c _)) = Just c - getRegTxCert _ = Nothing - - mkUnRegTxCert c = ConwayTxCertDeleg $ ConwayUnRegCert c SNothing - - getUnRegTxCert (ConwayTxCertDeleg (ConwayUnRegCert c _)) = Just c - getUnRegTxCert _ = Nothing - - mkDelegStakeTxCert c kh = ConwayTxCertDeleg $ ConwayDelegCert c (DelegStake kh) - - getDelegStakeTxCert (ConwayTxCertDeleg (ConwayDelegCert c (DelegStake kh))) = Just (c, kh) - getDelegStakeTxCert _ = Nothing - - mkGenesisDelegTxCert = notSupportedInThisEra - getGenesisDelegTxCert _ = Nothing - - mkMirTxCert = notSupportedInThisEra - getMirTxCert = const Nothing - -class ShelleyEraTxCert era => ConwayEraTxCert era where - mkRegDepositTxCert :: StakeCredential (EraCrypto era) -> Coin -> TxCert era - getRegDepositTxCert :: TxCert era -> Maybe (StakeCredential (EraCrypto era), Coin) - - mkUnRegDepositTxCert :: StakeCredential (EraCrypto era) -> Coin -> TxCert era - getUnRegDepositTxCert :: TxCert era -> Maybe (StakeCredential (EraCrypto era), Coin) - - mkDelegTxCert :: - StakeCredential (EraCrypto era) -> Delegatee (EraCrypto era) -> TxCert era - getDelegTxCert :: - TxCert era -> Maybe (StakeCredential (EraCrypto era), Delegatee (EraCrypto era)) - - mkRegDepositDelegTxCert :: - StakeCredential (EraCrypto era) -> Delegatee (EraCrypto era) -> Coin -> TxCert era - getRegDepositDelegTxCert :: - TxCert era -> Maybe (StakeCredential (EraCrypto era), Delegatee (EraCrypto era), Coin) - - mkAuthCommitteeHotKeyTxCert :: - Credential 'ColdCommitteeRole (EraCrypto era) -> - Credential 'HotCommitteeRole (EraCrypto era) -> - TxCert era - getAuthCommitteeHotKeyTxCert :: - TxCert era -> - Maybe (Credential 'ColdCommitteeRole (EraCrypto era), Credential 'HotCommitteeRole (EraCrypto era)) - - mkResignCommitteeColdTxCert :: - Credential 'ColdCommitteeRole (EraCrypto era) -> StrictMaybe (Anchor (EraCrypto era)) -> TxCert era - getResignCommitteeColdTxCert :: - TxCert era -> - Maybe (Credential 'ColdCommitteeRole (EraCrypto era), StrictMaybe (Anchor (EraCrypto era))) - - mkRegDRepTxCert :: - Credential 'DRepRole (EraCrypto era) -> Coin -> StrictMaybe (Anchor (EraCrypto era)) -> TxCert era - getRegDRepTxCert :: - TxCert era -> - Maybe (Credential 'DRepRole (EraCrypto era), Coin, StrictMaybe (Anchor (EraCrypto era))) - - mkUnRegDRepTxCert :: Credential 'DRepRole (EraCrypto era) -> Coin -> TxCert era - getUnRegDRepTxCert :: TxCert era -> Maybe (Credential 'DRepRole (EraCrypto era), Coin) - - mkUpdateDRepTxCert :: - Credential 'DRepRole (EraCrypto era) -> StrictMaybe (Anchor (EraCrypto era)) -> TxCert era - getUpdateDRepTxCert :: - TxCert era -> Maybe (Credential 'DRepRole (EraCrypto era), StrictMaybe (Anchor (EraCrypto era))) - -instance Crypto c => ConwayEraTxCert (ConwayEra c) where - mkRegDepositTxCert cred c = ConwayTxCertDeleg $ ConwayRegCert cred $ SJust c - - getRegDepositTxCert (ConwayTxCertDeleg (ConwayRegCert cred (SJust c))) = Just (cred, c) - getRegDepositTxCert _ = Nothing - - mkUnRegDepositTxCert cred c = ConwayTxCertDeleg $ ConwayUnRegCert cred (SJust c) - getUnRegDepositTxCert (ConwayTxCertDeleg (ConwayUnRegCert cred (SJust c))) = Just (cred, c) - getUnRegDepositTxCert _ = Nothing - - mkDelegTxCert cred d = ConwayTxCertDeleg $ ConwayDelegCert cred d - getDelegTxCert (ConwayTxCertDeleg (ConwayDelegCert cred d)) = Just (cred, d) - getDelegTxCert _ = Nothing - - mkRegDepositDelegTxCert cred d c = ConwayTxCertDeleg $ ConwayRegDelegCert cred d c - getRegDepositDelegTxCert (ConwayTxCertDeleg (ConwayRegDelegCert cred d c)) = Just (cred, d, c) - getRegDepositDelegTxCert _ = Nothing - - mkAuthCommitteeHotKeyTxCert ck hk = ConwayTxCertGov $ ConwayAuthCommitteeHotKey ck hk - getAuthCommitteeHotKeyTxCert (ConwayTxCertGov (ConwayAuthCommitteeHotKey ck hk)) = Just (ck, hk) - getAuthCommitteeHotKeyTxCert _ = Nothing - - mkResignCommitteeColdTxCert ck a = ConwayTxCertGov $ ConwayResignCommitteeColdKey ck a - getResignCommitteeColdTxCert (ConwayTxCertGov (ConwayResignCommitteeColdKey ck a)) = Just (ck, a) - getResignCommitteeColdTxCert _ = Nothing - - mkRegDRepTxCert cred deposit mAnchor = ConwayTxCertGov $ ConwayRegDRep cred deposit mAnchor - getRegDRepTxCert = \case - ConwayTxCertGov (ConwayRegDRep cred deposit mAnchor) -> Just (cred, deposit, mAnchor) - _ -> Nothing - - mkUnRegDRepTxCert cred deposit = ConwayTxCertGov $ ConwayUnRegDRep cred deposit - getUnRegDRepTxCert = \case - ConwayTxCertGov (ConwayUnRegDRep cred deposit) -> Just (cred, deposit) - _ -> Nothing - - mkUpdateDRepTxCert cred mAnchor = ConwayTxCertGov $ ConwayUpdateDRep cred mAnchor - getUpdateDRepTxCert = \case - ConwayTxCertGov (ConwayUpdateDRep cred mAnchor) -> Just (cred, mAnchor) - _ -> Nothing - -pattern RegDepositTxCert :: - ConwayEraTxCert era => - StakeCredential (EraCrypto era) -> - Coin -> - TxCert era -pattern RegDepositTxCert cred c <- (getRegDepositTxCert -> Just (cred, c)) - where - RegDepositTxCert cred c = mkRegDepositTxCert cred c - -pattern UnRegDepositTxCert :: - ConwayEraTxCert era => - StakeCredential (EraCrypto era) -> - Coin -> - TxCert era -pattern UnRegDepositTxCert cred c <- (getUnRegDepositTxCert -> Just (cred, c)) - where - UnRegDepositTxCert cred c = mkUnRegDepositTxCert cred c - -pattern DelegTxCert :: - ConwayEraTxCert era => - StakeCredential (EraCrypto era) -> - Delegatee (EraCrypto era) -> - TxCert era -pattern DelegTxCert cred d <- (getDelegTxCert -> Just (cred, d)) - where - DelegTxCert cred d = mkDelegTxCert cred d - -pattern RegDepositDelegTxCert :: - ConwayEraTxCert era => - StakeCredential (EraCrypto era) -> - Delegatee (EraCrypto era) -> - Coin -> - TxCert era -pattern RegDepositDelegTxCert cred d c <- (getRegDepositDelegTxCert -> Just (cred, d, c)) - where - RegDepositDelegTxCert cred d c = mkRegDepositDelegTxCert cred d c - -pattern AuthCommitteeHotKeyTxCert :: - ConwayEraTxCert era => - Credential 'ColdCommitteeRole (EraCrypto era) -> - Credential 'HotCommitteeRole (EraCrypto era) -> - TxCert era -pattern AuthCommitteeHotKeyTxCert ck hk <- (getAuthCommitteeHotKeyTxCert -> Just (ck, hk)) - where - AuthCommitteeHotKeyTxCert ck hk = mkAuthCommitteeHotKeyTxCert ck hk - -pattern ResignCommitteeColdTxCert :: - ConwayEraTxCert era => - Credential 'ColdCommitteeRole (EraCrypto era) -> - StrictMaybe (Anchor (EraCrypto era)) -> - TxCert era -pattern ResignCommitteeColdTxCert ck a <- (getResignCommitteeColdTxCert -> Just (ck, a)) - where - ResignCommitteeColdTxCert ck = mkResignCommitteeColdTxCert ck - -pattern RegDRepTxCert :: - ConwayEraTxCert era => - Credential 'DRepRole (EraCrypto era) -> - Coin -> - StrictMaybe (Anchor (EraCrypto era)) -> - TxCert era -pattern RegDRepTxCert cred deposit mAnchor <- (getRegDRepTxCert -> Just (cred, deposit, mAnchor)) - where - RegDRepTxCert cred deposit mAnchor = mkRegDRepTxCert cred deposit mAnchor - -pattern UnRegDRepTxCert :: - ConwayEraTxCert era => - Credential 'DRepRole (EraCrypto era) -> - Coin -> - TxCert era -pattern UnRegDRepTxCert cred deposit <- (getUnRegDRepTxCert -> Just (cred, deposit)) - where - UnRegDRepTxCert cred deposit = mkUnRegDRepTxCert cred deposit - -pattern UpdateDRepTxCert :: - ConwayEraTxCert era => - Credential 'DRepRole (EraCrypto era) -> - StrictMaybe (Anchor (EraCrypto era)) -> - TxCert era -pattern UpdateDRepTxCert cred mAnchor <- (getUpdateDRepTxCert -> Just (cred, mAnchor)) - where - UpdateDRepTxCert cred mAnchor = mkUpdateDRepTxCert cred mAnchor - -{-# COMPLETE - RegPoolTxCert - , RetirePoolTxCert - , RegTxCert - , UnRegTxCert - , RegDepositTxCert - , UnRegDepositTxCert - , DelegTxCert - , RegDepositDelegTxCert - , AuthCommitteeHotKeyTxCert - , ResignCommitteeColdTxCert - , RegDRepTxCert - , UnRegDRepTxCert - , UpdateDRepTxCert - #-} - -getDelegateeTxCert :: ConwayEraTxCert era => TxCert era -> Maybe (Delegatee (EraCrypto era)) -getDelegateeTxCert = \case - DelegTxCert _ delegatee -> Just delegatee - RegDepositDelegTxCert _ delegatee _ -> Just delegatee - _ -> Nothing - --- | First type argument is the deposit -data Delegatee c - = DelegStake !(KeyHash 'StakePool c) - | DelegVote !(DRep c) - | DelegStakeVote !(KeyHash 'StakePool c) !(DRep c) - deriving (Show, Generic, Eq, Ord) - -instance Crypto c => ToJSON (Delegatee c) where - toJSON = \case - DelegStake poolId -> - kindObject "DelegStake" ["poolId" .= toJSON poolId] - DelegVote dRep -> - kindObject "DelegVote" ["dRep" .= toJSON dRep] - DelegStakeVote poolId dRep -> - kindObject "DelegStakeVote" $ - [ "poolId" .= toJSON poolId - , "dRep" .= toJSON dRep - ] - -instance Crypto c => FromJSON (Delegatee c) where - parseJSON = withObject "Delegatee" $ \obj -> do - poolId <- obj .:? "poolId" - dRep <- obj .:? "dRep" - case (poolId, dRep) of - (Just poolId', Nothing) -> pure $ DelegStake poolId' - (Nothing, Just dRep') -> pure $ DelegVote dRep' - (Just poolId', Just dRep') -> pure $ DelegStakeVote poolId' dRep' - _ -> fail "Object does not contain a dRep or a poolId field" - -instance Crypto c => EncCBOR (Delegatee c) where - encCBOR = - encode . \case - DelegStake kh -> Sum DelegStake 0 !> To kh - DelegVote dRep -> Sum DelegVote 1 !> To dRep - DelegStakeVote kh dRep -> Sum DelegStakeVote 2 !> To kh !> To dRep - -instance Crypto c => DecCBOR (Delegatee c) where - decCBOR = decode $ - Summands "Delegatee" $ \case - 0 -> SumD DelegStake SumD DelegVote SumD DelegStakeVote Invalid k - -getStakePoolDelegatee :: Delegatee c -> Maybe (KeyHash 'StakePool c) -getStakePoolDelegatee = \case - DelegStake targetPool -> Just targetPool - DelegVote {} -> Nothing - DelegStakeVote targetPool _ -> Just targetPool - -getVoteDelegatee :: Delegatee c -> Maybe (DRep c) -getVoteDelegatee DelegStake {} = Nothing -getVoteDelegatee (DelegVote x) = Just x -getVoteDelegatee (DelegStakeVote _ x) = Just x - -instance NFData (Delegatee c) - -instance NoThunks (Delegatee c) - --- | Certificates for registration and delegation of stake to Pools and DReps. Comparing --- to previous eras, there is now ability to: --- --- * Register and delegate with a single certificate: `ConwayRegDelegCert` --- --- * Ability to delegate to DReps with `DelegVote` and `DelegStakeVote` --- --- * Ability to specify the deposit amount. Deposits during registration and --- unregistration in Conway are optional, which will change in the future era. They are --- optional only for the smooth transition from Babbage to Conway. Validity of deposits --- is checked by the @CERT@ rule. -data ConwayDelegCert c - = -- | Register staking credential. Deposit, when present, must match the expected deposit - -- amount specified by `ppKeyDepositL` in the protocol parameters. - ConwayRegCert !(StakeCredential c) !(StrictMaybe Coin) - | -- | De-Register the staking credential. Deposit, if present, must match the amount - -- that was left as a deposit upon stake credential registration. - ConwayUnRegCert !(StakeCredential c) !(StrictMaybe Coin) - | -- | Redelegate to another delegatee. Staking credential must already be registered. - ConwayDelegCert !(StakeCredential c) !(Delegatee c) - | -- | This is a new type of certificate, which allows to register staking credential - -- and delegate within a single certificate. Deposit is required and must match the - -- expected deposit amount specified by `ppKeyDepositL` in the protocol parameters. - ConwayRegDelegCert !(StakeCredential c) !(Delegatee c) !Coin - deriving (Show, Generic, Eq, Ord) - -instance NFData (ConwayDelegCert c) - -instance NoThunks (ConwayDelegCert c) - -instance Crypto c => ToJSON (ConwayDelegCert c) where - toJSON = \case - ConwayRegCert cred deposit -> - kindObject "RegCert" $ - [ "credential" .= toJSON cred - , "deposit" .= toJSON deposit - ] - ConwayUnRegCert cred refund -> - kindObject "UnRegCert" $ - [ "credential" .= toJSON cred - , "refund" .= toJSON refund - ] - ConwayDelegCert cred delegatee -> - kindObject "DelegCert" $ - [ "credential" .= toJSON cred - , "delegatee" .= toJSON delegatee - ] - ConwayRegDelegCert cred delegatee deposit -> - kindObject "RegDelegCert" $ - [ "credential" .= toJSON cred - , "delegatee" .= toJSON delegatee - , "deposit" .= toJSON deposit - ] - -data ConwayGovCert c - = ConwayRegDRep !(Credential 'DRepRole c) !Coin !(StrictMaybe (Anchor c)) - | ConwayUnRegDRep !(Credential 'DRepRole c) !Coin - | ConwayUpdateDRep !(Credential 'DRepRole c) !(StrictMaybe (Anchor c)) - | ConwayAuthCommitteeHotKey !(Credential 'ColdCommitteeRole c) !(Credential 'HotCommitteeRole c) - | ConwayResignCommitteeColdKey !(Credential 'ColdCommitteeRole c) !(StrictMaybe (Anchor c)) - deriving (Show, Generic, Eq, Ord) - -instance Crypto c => NFData (ConwayGovCert c) - -instance NoThunks (ConwayGovCert c) - -instance Crypto c => ToJSON (ConwayGovCert c) where - toJSON = \case - ConwayRegDRep dRep deposit anchor -> - kindObject "RegDRep" $ - [ "dRep" .= toJSON dRep - , "deposit" .= toJSON deposit - , "anchor" .= toJSON anchor - ] - ConwayUnRegDRep dRep refund -> - kindObject "UnRegDRep" $ - [ "dRep" .= toJSON dRep - , "refund" .= toJSON refund - ] - ConwayUpdateDRep dRep anchor -> - kindObject "UpdateDRep" $ - [ "dRep" .= toJSON dRep - , "anchor" .= toJSON anchor - ] - ConwayAuthCommitteeHotKey coldCred hotCred -> - kindObject "AuthCommitteeHotKey" $ - [ "coldCredential" .= toJSON coldCred - , "hotCredential" .= toJSON hotCred - ] - ConwayResignCommitteeColdKey coldCred anchor -> - kindObject "ResignCommitteeColdKey" $ - [ "coldCredential" .= toJSON coldCred - , "anchor" .= toJSON anchor - ] - -data ConwayTxCert era - = ConwayTxCertDeleg !(ConwayDelegCert (EraCrypto era)) - | ConwayTxCertPool !(PoolCert (EraCrypto era)) - | ConwayTxCertGov !(ConwayGovCert (EraCrypto era)) - deriving (Show, Generic, Eq, Ord) - -instance Crypto (EraCrypto era) => NFData (ConwayTxCert era) - -instance NoThunks (ConwayTxCert era) - -instance Era era => ToJSON (ConwayTxCert era) where - toJSON = \case - ConwayTxCertDeleg delegCert -> toJSON delegCert - ConwayTxCertPool poolCert -> toJSON poolCert - ConwayTxCertGov govCert -> toJSON govCert - -instance - ( ShelleyEraTxCert era - , TxCert era ~ ConwayTxCert era - ) => - FromCBOR (ConwayTxCert era) - where - fromCBOR = toPlainDecoder (eraProtVerLow @era) decCBOR - -instance - ( ConwayEraTxCert era - , TxCert era ~ ConwayTxCert era - ) => - DecCBOR (ConwayTxCert era) - where - decCBOR = decodeRecordSum "ConwayTxCert" $ \case - t - | 0 <= t && t < 3 -> shelleyTxCertDelegDecoder t - | 3 <= t && t < 5 -> poolTxCertDecoder t - | t == 5 -> fail "Genesis delegation certificates are no longer supported" - | t == 6 -> fail "MIR certificates are no longer supported" - | 7 <= t -> conwayTxCertDelegDecoder t - t -> invalidKey t - -conwayTxCertDelegDecoder :: ConwayEraTxCert era => Word -> Decoder s (Int, TxCert era) -conwayTxCertDelegDecoder = \case - 7 -> do - cred <- decCBOR - deposit <- decCBOR - pure (3, RegDepositTxCert cred deposit) - 8 -> do - cred <- decCBOR - deposit <- decCBOR - pure (3, UnRegDepositTxCert cred deposit) - 9 -> delegCertDecoder 3 (DelegVote <$> decCBOR) - 10 -> delegCertDecoder 4 (DelegStakeVote <$> decCBOR <*> decCBOR) - 11 -> regDelegCertDecoder 4 (DelegStake <$> decCBOR) - 12 -> regDelegCertDecoder 4 (DelegVote <$> decCBOR) - 13 -> regDelegCertDecoder 5 (DelegStakeVote <$> decCBOR <*> decCBOR) - 14 -> do - cred <- decCBOR - key <- decCBOR - pure (3, AuthCommitteeHotKeyTxCert cred key) - 15 -> do - cred <- decCBOR - a <- decodeNullStrictMaybe decCBOR - pure (3, ResignCommitteeColdTxCert cred a) - 16 -> do - cred <- decCBOR - deposit <- decCBOR - mAnchor <- decodeNullStrictMaybe decCBOR - pure (4, RegDRepTxCert cred deposit mAnchor) - 17 -> do - cred <- decCBOR - deposit <- decCBOR - pure (3, UnRegDRepTxCert cred deposit) - 18 -> do - cred <- decCBOR - mAnchor <- decodeNullStrictMaybe decCBOR - pure (3, UpdateDRepTxCert cred mAnchor) - k -> invalidKey k - where - delegCertDecoder n decodeDelegatee = do - cred <- decCBOR - delegatee <- decodeDelegatee - pure (n, DelegTxCert cred delegatee) - {-# INLINE delegCertDecoder #-} - regDelegCertDecoder n decodeDelegatee = do - cred <- decCBOR - delegatee <- decodeDelegatee - deposit <- decCBOR - pure (n, RegDepositDelegTxCert cred delegatee deposit) - {-# INLINE regDelegCertDecoder #-} -{-# INLINE conwayTxCertDelegDecoder #-} - -instance (Era era, Val (Value era)) => ToCBOR (ConwayTxCert era) where - toCBOR = toPlainEncoding (eraProtVerLow @era) . encCBOR - -instance (Era era, Val (Value era)) => EncCBOR (ConwayTxCert era) where - encCBOR = \case - ConwayTxCertDeleg delegCert -> encodeConwayDelegCert delegCert - ConwayTxCertPool poolCert -> encodePoolCert poolCert - ConwayTxCertGov govCert -> encodeGovCert govCert - -encodeConwayDelegCert :: Crypto c => ConwayDelegCert c -> Encoding -encodeConwayDelegCert = \case - -- Shelley backwards compatibility - ConwayRegCert cred SNothing -> encodeShelleyDelegCert $ ShelleyRegCert cred - ConwayUnRegCert cred SNothing -> encodeShelleyDelegCert $ ShelleyUnRegCert cred - ConwayDelegCert cred (DelegStake poolId) -> encodeShelleyDelegCert $ ShelleyDelegCert cred poolId - -- New in Conway - ConwayRegCert cred (SJust deposit) -> - encodeListLen 3 - <> encodeWord8 7 - <> encCBOR cred - <> encCBOR deposit - ConwayUnRegCert cred (SJust deposit) -> - encodeListLen 3 - <> encodeWord8 8 - <> encCBOR cred - <> encCBOR deposit - ConwayDelegCert cred (DelegVote drep) -> - encodeListLen 3 - <> encodeWord8 9 - <> encCBOR cred - <> encCBOR drep - ConwayDelegCert cred (DelegStakeVote poolId dRep) -> - encodeListLen 4 - <> encodeWord8 10 - <> encCBOR cred - <> encCBOR poolId - <> encCBOR dRep - ConwayRegDelegCert cred (DelegStake poolId) deposit -> - encodeListLen 4 - <> encodeWord8 11 - <> encCBOR cred - <> encCBOR poolId - <> encCBOR deposit - ConwayRegDelegCert cred (DelegVote drep) deposit -> - encodeListLen 4 - <> encodeWord8 12 - <> encCBOR cred - <> encCBOR drep - <> encCBOR deposit - ConwayRegDelegCert cred (DelegStakeVote poolId dRep) deposit -> - encodeListLen 5 - <> encodeWord8 13 - <> encCBOR cred - <> encCBOR poolId - <> encCBOR dRep - <> encCBOR deposit - -encodeGovCert :: Crypto c => ConwayGovCert c -> Encoding -encodeGovCert = \case - ConwayAuthCommitteeHotKey cred key -> - encodeListLen 3 - <> encodeWord8 14 - <> encCBOR cred - <> encCBOR key - ConwayResignCommitteeColdKey cred a -> - encodeListLen 3 - <> encodeWord8 15 - <> encCBOR cred - <> encodeNullStrictMaybe encCBOR a - ConwayRegDRep cred deposit mAnchor -> - encodeListLen 4 - <> encodeWord8 16 - <> encCBOR cred - <> encCBOR deposit - <> encodeNullStrictMaybe encCBOR mAnchor - ConwayUnRegDRep cred deposit -> - encodeListLen 3 - <> encodeWord8 17 - <> encCBOR cred - <> encCBOR deposit - ConwayUpdateDRep cred mAnchor -> - encodeListLen 3 - <> encodeWord8 18 - <> encCBOR cred - <> encodeNullStrictMaybe encCBOR mAnchor - -fromShelleyDelegCert :: ShelleyDelegCert c -> ConwayDelegCert c -fromShelleyDelegCert = \case - ShelleyRegCert cred -> ConwayRegCert cred SNothing - ShelleyUnRegCert cred -> ConwayUnRegCert cred SNothing - ShelleyDelegCert cred poolId -> ConwayDelegCert cred (DelegStake poolId) - -toShelleyDelegCert :: ConwayDelegCert c -> Maybe (ShelleyDelegCert c) -toShelleyDelegCert = \case - ConwayRegCert cred SNothing -> Just $ ShelleyRegCert cred - ConwayUnRegCert cred SNothing -> Just $ ShelleyUnRegCert cred - ConwayDelegCert cred (DelegStake poolId) -> Just $ ShelleyDelegCert cred poolId - _ -> Nothing - --- For both of the functions `getScriptWitnessConwayTxCert` and --- `getVKeyWitnessConwayTxCert` we preserve the old behavior of not requiring a witness --- for staking credential registration, but only during the transitional period of Conway --- era and only for staking credential registration certificates without a deposit. Future --- eras will require a witness for registration certificates, because the one without a --- deposit will be removed. - -getScriptWitnessConwayTxCert :: - ConwayTxCert era -> - Maybe (ScriptHash (EraCrypto era)) -getScriptWitnessConwayTxCert = \case - ConwayTxCertDeleg delegCert -> - case delegCert of - ConwayRegCert _ SNothing -> Nothing - ConwayRegCert cred (SJust _) -> credScriptHash cred - ConwayUnRegCert cred _ -> credScriptHash cred - ConwayDelegCert cred _ -> credScriptHash cred - ConwayRegDelegCert cred _ _ -> credScriptHash cred - -- PoolIds can't be Scripts - ConwayTxCertPool {} -> Nothing - ConwayTxCertGov govCert -> govWitness govCert - where - govWitness :: ConwayGovCert c -> Maybe (ScriptHash c) - govWitness = \case - ConwayAuthCommitteeHotKey coldCred _hotCred -> credScriptHash coldCred - ConwayResignCommitteeColdKey coldCred _ -> credScriptHash coldCred - ConwayRegDRep cred _ _ -> credScriptHash cred - ConwayUnRegDRep cred _ -> credScriptHash cred - ConwayUpdateDRep cred _ -> credScriptHash cred - -getVKeyWitnessConwayTxCert :: ConwayTxCert era -> Maybe (KeyHash 'Witness (EraCrypto era)) -getVKeyWitnessConwayTxCert = \case - ConwayTxCertDeleg delegCert -> - case delegCert of - ConwayRegCert _ SNothing -> Nothing - ConwayRegCert cred (SJust _) -> credKeyHashWitness cred - ConwayUnRegCert cred _ -> credKeyHashWitness cred - ConwayDelegCert cred _ -> credKeyHashWitness cred - ConwayRegDelegCert cred _ _ -> credKeyHashWitness cred - ConwayTxCertPool poolCert -> Just $ poolCertKeyHashWitness poolCert - ConwayTxCertGov govCert -> govWitness govCert - where - govWitness :: ConwayGovCert c -> Maybe (KeyHash 'Witness c) - govWitness = \case - ConwayAuthCommitteeHotKey coldCred _hotCred -> credKeyHashWitness coldCred - ConwayResignCommitteeColdKey coldCred _ -> credKeyHashWitness coldCred - ConwayRegDRep cred _ _ -> credKeyHashWitness cred - ConwayUnRegDRep cred _ -> credKeyHashWitness cred - ConwayUpdateDRep cred _ -> credKeyHashWitness cred - --- | Determine the total deposit amount needed from a TxBody. --- The block may (legitimately) contain multiple registration certificates --- for the same pool, where the first will be treated as a registration and --- any subsequent ones as re-registration. As such, we must only take a --- deposit for the first such registration. It is even possible for a single --- transaction to have multiple pool registration for the same pool, so as --- we process pool registrations, we must keep track of those that are already --- registered, so we do not add a Deposit for the same pool twice. --- --- Note that this is not an issue for key registrations since subsequent --- registration certificates would be invalid. -conwayTotalDepositsTxCerts :: - (ConwayEraPParams era, Foldable f, ConwayEraTxCert era) => - PParams era -> - -- | Check whether a pool with a supplied PoolStakeId is already registered. - (KeyHash 'StakePool (EraCrypto era) -> Bool) -> - f (TxCert era) -> - Coin -conwayTotalDepositsTxCerts pp isRegPoolRegistered certs = - shelleyTotalDepositsTxCerts pp isRegPoolRegistered certs - <+> conwayDRepDepositsTxCerts pp certs - -conwayDRepDepositsTxCerts :: - (ConwayEraPParams era, Foldable f, ConwayEraTxCert era) => - PParams era -> - f (TxCert era) -> - Coin -conwayDRepDepositsTxCerts pp certs = nDReps <×> depositPerDRep - where - nDReps = getSum @Int (foldMap' (\case RegDRepTxCert {} -> 1; _ -> 0) certs) - depositPerDRep = pp ^. ppDRepDepositL - --- | Compute the key deregistration refunds in a transaction -conwayTotalRefundsTxCerts :: - (EraPParams era, Foldable f, ConwayEraTxCert era) => - PParams era -> - -- | Function that can lookup current deposit, in case when the Staking credential is registered. - (Credential 'Staking (EraCrypto era) -> Maybe Coin) -> - -- | Function that can lookup current deposit, in case when the DRep credential is registered. - (Credential 'DRepRole (EraCrypto era) -> Maybe Coin) -> - f (TxCert era) -> - Coin -conwayTotalRefundsTxCerts pp lookupStakingDeposit lookupDRepDeposit certs = - shelleyTotalRefundsTxCerts pp lookupStakingDeposit certs - <+> conwayDRepRefundsTxCerts lookupDRepDeposit certs - --- | Compute the Refunds from a TxBody, given a function that computes a partial Coin for --- known Credentials. -conwayDRepRefundsTxCerts :: - (Foldable f, ConwayEraTxCert era) => - (Credential 'DRepRole (EraCrypto era) -> Maybe Coin) -> - f (TxCert era) -> - Coin -conwayDRepRefundsTxCerts lookupDRepDeposit = snd . foldl' go (Map.empty, Coin 0) - where - go accum@(!drepRegsInTx, !totalRefund) = \case - RegDRepTxCert cred deposit _ -> - -- Track registrations - (Map.insert cred deposit drepRegsInTx, totalRefund) - UnRegDRepTxCert cred _ - -- DRep previously registered in the same tx. - | Just deposit <- Map.lookup cred drepRegsInTx -> - (Map.delete cred drepRegsInTx, totalRefund <+> deposit) - -- DRep previously registered in some other tx. - | Just deposit <- lookupDRepDeposit cred -> (drepRegsInTx, totalRefund <+> deposit) - _ -> accum diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/TxInfo.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/TxInfo.hs deleted file mode 100644 index 87ebb8b24ca..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/TxInfo.hs +++ /dev/null @@ -1,663 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Conway.TxInfo ( - ConwayContextError (..), - transTxBodyWithdrawals, - transTxCert, - transDRepCred, - transColdCommitteeCred, - transHotCommitteeCred, - transDelegatee, - transDRep, - transScriptPurpose, - transMap, - transTxInInfoV1, - transTxOutV1, -) where - -import Cardano.Crypto.Hash.Class (hashToBytes) -import Cardano.Ledger.Alonzo.Plutus.Context ( - EraPlutusContext (..), - EraPlutusTxInfo (..), - PlutusTxCert, - mkPlutusLanguageContext, - ) -import Cardano.Ledger.Alonzo.Plutus.TxInfo (AlonzoContextError (..), TxOutSource (..)) -import qualified Cardano.Ledger.Alonzo.Plutus.TxInfo as Alonzo -import Cardano.Ledger.Alonzo.Scripts (AlonzoPlutusPurpose (..), toAsItem) -import Cardano.Ledger.Babbage.TxInfo (BabbageContextError (..), transTxOutV2) -import qualified Cardano.Ledger.Babbage.TxInfo as Babbage -import Cardano.Ledger.BaseTypes ( - Inject (..), - ProtVer (..), - StrictMaybe (..), - getVersion64, - isSJust, - kindObject, - strictMaybe, - txIxToInt, - ) -import Cardano.Ledger.Binary (DecCBOR (..), EncCBOR (..)) -import Cardano.Ledger.Binary.Coders ( - Decode (..), - Encode (..), - decode, - encode, - (!>), - ( EraPlutusContext (ConwayEra c) where - type ContextError (ConwayEra c) = ConwayContextError (ConwayEra c) - - mkPlutusScriptContext = \case - ConwayPlutusV1 p -> mkPlutusLanguageContext p - ConwayPlutusV2 p -> mkPlutusLanguageContext p - ConwayPlutusV3 p -> mkPlutusLanguageContext p - -data ConwayContextError era - = BabbageContextError !(BabbageContextError era) - | CertificateNotSupported !(TxCert era) - | PlutusPurposeNotSupported !(PlutusPurpose AsItem era) - | CurrentTreasuryFieldNotSupported !Coin - | VotingProceduresFieldNotSupported !(VotingProcedures era) - | ProposalProceduresFieldNotSupported !(OSet.OSet (ProposalProcedure era)) - | TreasuryDonationFieldNotSupported !Coin - deriving (Generic) - -deriving instance - ( Eq (BabbageContextError era) - , Eq (TxCert era) - , Eq (PlutusPurpose AsItem era) - , Eq (PlutusPurpose AsIx era) - , EraPParams era - ) => - Eq (ConwayContextError era) - -deriving instance - ( Show (BabbageContextError era) - , Show (TxCert era) - , Show (PlutusPurpose AsItem era) - , Show (PlutusPurpose AsIx era) - , EraPParams era - ) => - Show (ConwayContextError era) - -instance Inject (ConwayContextError era) (ConwayContextError era) - -instance Inject (BabbageContextError era) (ConwayContextError era) where - inject = BabbageContextError - -instance Inject (AlonzoContextError era) (ConwayContextError era) where - inject = BabbageContextError . inject - -instance - ( NoThunks (TxCert era) - , NoThunks (PlutusPurpose AsIx era) - , NoThunks (PlutusPurpose AsItem era) - , EraPParams era - ) => - NoThunks (ConwayContextError era) - -instance - ( EraPParams era - , NFData (TxCert era) - , NFData (PlutusPurpose AsIx era) - , NFData (PlutusPurpose AsItem era) - ) => - NFData (ConwayContextError era) - -instance - ( EraPParams era - , EncCBOR (TxCert era) - , EncCBOR (PlutusPurpose AsIx era) - , EncCBOR (PlutusPurpose AsItem era) - ) => - EncCBOR (ConwayContextError era) - where - encCBOR = \case - -- We start at tag 8, just in case to avoid clashes with previous eras. - BabbageContextError babbageContextError -> - encode $ Sum BabbageContextError 8 !> To babbageContextError - CertificateNotSupported txCert -> - encode $ Sum CertificateNotSupported 9 !> To txCert - PlutusPurposeNotSupported purpose -> - encode $ Sum PlutusPurposeNotSupported 10 !> To purpose - CurrentTreasuryFieldNotSupported scoin -> - encode $ Sum CurrentTreasuryFieldNotSupported 11 !> To scoin - VotingProceduresFieldNotSupported votingProcedures -> - encode $ Sum VotingProceduresFieldNotSupported 12 !> To votingProcedures - ProposalProceduresFieldNotSupported proposalProcedures -> - encode $ Sum ProposalProceduresFieldNotSupported 13 !> To proposalProcedures - TreasuryDonationFieldNotSupported coin -> - encode $ Sum TreasuryDonationFieldNotSupported 14 !> To coin - -instance - ( EraPParams era - , DecCBOR (TxCert era) - , DecCBOR (PlutusPurpose AsIx era) - , DecCBOR (PlutusPurpose AsItem era) - ) => - DecCBOR (ConwayContextError era) - where - decCBOR = decode $ Summands "ContextError" $ \case - 8 -> SumD BabbageContextError SumD CertificateNotSupported SumD PlutusPurposeNotSupported SumD CurrentTreasuryFieldNotSupported SumD VotingProceduresFieldNotSupported SumD ProposalProceduresFieldNotSupported SumD TreasuryDonationFieldNotSupported Invalid n - -instance - ( ToJSON (TxCert era) - , ToJSON (PlutusPurpose AsIx era) - , ToJSON (PlutusPurpose AsItem era) - , EraPParams era - ) => - ToJSON (ConwayContextError era) - where - toJSON = \case - BabbageContextError err -> toJSON err - CertificateNotSupported txCert -> - kindObject "CertificateNotSupported" ["certificate" .= toJSON txCert] - PlutusPurposeNotSupported purpose -> - kindObject "PlutusPurposeNotSupported" ["purpose" .= toJSON purpose] - CurrentTreasuryFieldNotSupported scoin -> - kindObject - "CurrentTreasuryFieldNotSupported" - ["current_treasury_value" .= toJSON scoin] - VotingProceduresFieldNotSupported votingProcedures -> - kindObject - "VotingProceduresFieldNotSupported" - ["voting_procedures" .= toJSON votingProcedures] - ProposalProceduresFieldNotSupported proposalProcedures -> - kindObject - "ProposalProceduresFieldNotSupported" - ["proposal_procedures" .= toJSON proposalProcedures] - TreasuryDonationFieldNotSupported coin -> - kindObject - "TreasuryDonationFieldNotSupported" - ["treasury_donation" .= toJSON coin] - --- | Given a TxOut, translate it for V2 and return (Right transalation). --- If the transaction contains any Byron addresses or Babbage features, return Left. -transTxOutV1 :: - forall era. - ( Inject (BabbageContextError era) (ContextError era) - , Value era ~ MaryValue (EraCrypto era) - , BabbageEraTxOut era - ) => - TxOutSource (EraCrypto era) -> - TxOut era -> - Either (ContextError era) PV1.TxOut -transTxOutV1 txOutSource txOut = do - when (isSJust (txOut ^. dataTxOutL)) $ do - Left $ inject $ InlineDatumsNotSupported @era txOutSource - case Alonzo.transTxOut txOut of - Nothing -> Left $ inject $ ByronTxOutInContext @era txOutSource - Just plutusTxOut -> Right plutusTxOut - --- | Given a TxIn, look it up in the UTxO. If it exists, translate it to the V1 context -transTxInInfoV1 :: - forall era. - ( Inject (BabbageContextError era) (ContextError era) - , Value era ~ MaryValue (EraCrypto era) - , BabbageEraTxOut era - ) => - UTxO era -> - TxIn (EraCrypto era) -> - Either (ContextError era) PV1.TxInInfo -transTxInInfoV1 utxo txIn = do - txOut <- left (inject . AlonzoContextError @era) $ Alonzo.transLookupTxOut utxo txIn - plutusTxOut <- transTxOutV1 (TxOutFromInput txIn) txOut - Right (PV1.TxInInfo (TxInfo.transTxIn txIn) plutusTxOut) - --- | Given a TxIn, look it up in the UTxO. If it exists, translate it to the V3 context -transTxInInfoV3 :: - forall era. - ( Inject (BabbageContextError era) (ContextError era) - , Value era ~ MaryValue (EraCrypto era) - , BabbageEraTxOut era - ) => - UTxO era -> - TxIn (EraCrypto era) -> - Either (ContextError era) PV3.TxInInfo -transTxInInfoV3 utxo txIn = do - txOut <- left (inject . AlonzoContextError @era) $ Alonzo.transLookupTxOut utxo txIn - plutusTxOut <- transTxOutV2 (TxOutFromInput txIn) txOut - Right (PV3.TxInInfo (transTxIn txIn) plutusTxOut) - -guardConwayFeaturesForPlutusV1V2 :: - forall era. - ( EraTx era - , ConwayEraTxBody era - , Inject (ConwayContextError era) (ContextError era) - ) => - Tx era -> - Either (ContextError era) () -guardConwayFeaturesForPlutusV1V2 tx = do - let txBody = tx ^. bodyTxL - currentTreasuryValue = txBody ^. currentTreasuryValueTxBodyL - votingProcedures = txBody ^. votingProceduresTxBodyL - proposalProcedures = txBody ^. proposalProceduresTxBodyL - treasuryDonation = txBody ^. treasuryDonationTxBodyL - unless (null $ unVotingProcedures votingProcedures) $ - Left $ - inject $ - VotingProceduresFieldNotSupported @era votingProcedures - unless (null proposalProcedures) $ - Left $ - inject $ - ProposalProceduresFieldNotSupported @era proposalProcedures - unless (treasuryDonation == Coin 0) $ - Left $ - inject $ - TreasuryDonationFieldNotSupported @era treasuryDonation - case currentTreasuryValue of - SNothing -> Right () - SJust treasury -> - Left $ inject $ CurrentTreasuryFieldNotSupported @era treasury - -transTxCertV1V2 :: - ( ConwayEraTxCert era - , Inject (ConwayContextError era) (ContextError era) - ) => - TxCert era -> - Either (ContextError era) PV1.DCert -transTxCertV1V2 = \case - RegDepositTxCert stakeCred _deposit -> - Right $ PV1.DCertDelegRegKey (PV1.StakingHash (transCred stakeCred)) - UnRegDepositTxCert stakeCred _refund -> - Right $ PV1.DCertDelegDeRegKey (PV1.StakingHash (transCred stakeCred)) - txCert - | Just dCert <- Alonzo.transTxCertCommon txCert -> Right dCert - | otherwise -> Left $ inject $ CertificateNotSupported txCert - -instance Crypto c => EraPlutusTxInfo 'PlutusV1 (ConwayEra c) where - toPlutusTxCert _ = transTxCertV1V2 - - toPlutusScriptPurpose proxy = transPlutusPurposeV1V2 proxy . hoistPlutusPurpose toAsItem - - toPlutusTxInfo proxy pp epochInfo systemStart utxo tx = do - guardConwayFeaturesForPlutusV1V2 tx - timeRange <- Alonzo.transValidityInterval pp epochInfo systemStart (txBody ^. vldtTxBodyL) - inputs <- mapM (transTxInInfoV1 utxo) (Set.toList (txBody ^. inputsTxBodyL)) - mapM_ (transTxInInfoV1 utxo) (Set.toList (txBody ^. referenceInputsTxBodyL)) - outputs <- - zipWithM - (transTxOutV1 . TxOutFromOutput) - [minBound ..] - (F.toList (txBody ^. outputsTxBodyL)) - txCerts <- Alonzo.transTxBodyCerts proxy txBody - pure - PV1.TxInfo - { PV1.txInfoInputs = inputs - , PV1.txInfoOutputs = outputs - , PV1.txInfoFee = transCoinToValue (txBody ^. feeTxBodyL) - , PV1.txInfoMint = Alonzo.transMintValue (txBody ^. mintTxBodyL) - , PV1.txInfoDCert = txCerts - , PV1.txInfoWdrl = Alonzo.transTxBodyWithdrawals txBody - , PV1.txInfoValidRange = timeRange - , PV1.txInfoSignatories = Alonzo.transTxBodyReqSignerHashes txBody - , PV1.txInfoData = Alonzo.transTxWitsDatums (tx ^. witsTxL) - , PV1.txInfoId = Alonzo.transTxBodyId txBody - } - where - txBody = tx ^. bodyTxL - - toPlutusScriptContext proxy txInfo scriptPurpose = - PV1.ScriptContext txInfo <$> toPlutusScriptPurpose proxy scriptPurpose - -instance Crypto c => EraPlutusTxInfo 'PlutusV2 (ConwayEra c) where - toPlutusTxCert _ = transTxCertV1V2 - - toPlutusScriptPurpose proxy = transPlutusPurposeV1V2 proxy . hoistPlutusPurpose toAsItem - - toPlutusTxInfo proxy pp epochInfo systemStart utxo tx = do - guardConwayFeaturesForPlutusV1V2 tx - timeRange <- Alonzo.transValidityInterval pp epochInfo systemStart (txBody ^. vldtTxBodyL) - inputs <- mapM (Babbage.transTxInInfoV2 utxo) (Set.toList (txBody ^. inputsTxBodyL)) - refInputs <- mapM (Babbage.transTxInInfoV2 utxo) (Set.toList (txBody ^. referenceInputsTxBodyL)) - outputs <- - zipWithM - (Babbage.transTxOutV2 . TxOutFromOutput) - [minBound ..] - (F.toList (txBody ^. outputsTxBodyL)) - txCerts <- Alonzo.transTxBodyCerts proxy txBody - plutusRedeemers <- Babbage.transTxRedeemers proxy tx - pure - PV2.TxInfo - { PV2.txInfoInputs = inputs - , PV2.txInfoOutputs = outputs - , PV2.txInfoReferenceInputs = refInputs - , PV2.txInfoFee = transCoinToValue (txBody ^. feeTxBodyL) - , PV2.txInfoMint = Alonzo.transMintValue (txBody ^. mintTxBodyL) - , PV2.txInfoDCert = txCerts - , PV2.txInfoWdrl = PV2.unsafeFromList $ Alonzo.transTxBodyWithdrawals txBody - , PV2.txInfoValidRange = timeRange - , PV2.txInfoSignatories = Alonzo.transTxBodyReqSignerHashes txBody - , PV2.txInfoRedeemers = plutusRedeemers - , PV2.txInfoData = PV2.unsafeFromList $ Alonzo.transTxWitsDatums (tx ^. witsTxL) - , PV2.txInfoId = Alonzo.transTxBodyId txBody - } - where - txBody = tx ^. bodyTxL - - toPlutusScriptContext proxy txInfo scriptPurpose = - PV2.ScriptContext txInfo <$> toPlutusScriptPurpose proxy scriptPurpose - -instance Crypto c => EraPlutusTxInfo 'PlutusV3 (ConwayEra c) where - toPlutusTxCert _ = pure . transTxCert - - toPlutusScriptPurpose = transScriptPurpose - - toPlutusTxInfo proxy pp epochInfo systemStart utxo tx = do - timeRange <- Alonzo.transValidityInterval pp epochInfo systemStart (txBody ^. vldtTxBodyL) - inputs <- mapM (transTxInInfoV3 utxo) (Set.toList (txBody ^. inputsTxBodyL)) - refInputs <- mapM (transTxInInfoV3 utxo) (Set.toList (txBody ^. referenceInputsTxBodyL)) - outputs <- - zipWithM - (Babbage.transTxOutV2 . TxOutFromOutput) - [minBound ..] - (F.toList (txBody ^. outputsTxBodyL)) - txCerts <- Alonzo.transTxBodyCerts proxy txBody - plutusRedeemers <- Babbage.transTxRedeemers proxy tx - pure - PV3.TxInfo - { PV3.txInfoInputs = inputs - , PV3.txInfoOutputs = outputs - , PV3.txInfoReferenceInputs = refInputs - , PV3.txInfoFee = transCoinToLovelace (txBody ^. feeTxBodyL) - , PV3.txInfoMint = Alonzo.transMultiAsset (txBody ^. mintTxBodyL) - , PV3.txInfoTxCerts = txCerts - , PV3.txInfoWdrl = transTxBodyWithdrawals txBody - , PV3.txInfoValidRange = timeRange - , PV3.txInfoSignatories = Alonzo.transTxBodyReqSignerHashes txBody - , PV3.txInfoRedeemers = plutusRedeemers - , PV3.txInfoData = PV3.unsafeFromList $ Alonzo.transTxWitsDatums (tx ^. witsTxL) - , PV3.txInfoId = transTxBodyId txBody - , PV3.txInfoVotes = transVotingProcedures (txBody ^. votingProceduresTxBodyL) - , PV3.txInfoProposalProcedures = - map (transProposal proxy) $ toList (txBody ^. proposalProceduresTxBodyL) - , PV3.txInfoCurrentTreasuryAmount = - strictMaybe Nothing (Just . transCoinToLovelace) $ txBody ^. currentTreasuryValueTxBodyL - , PV3.txInfoTreasuryDonation = - case txBody ^. treasuryDonationTxBodyL of - Coin 0 -> Nothing - coin -> Just $ transCoinToLovelace coin - } - where - txBody = tx ^. bodyTxL - - toPlutusScriptContext proxy txInfo scriptPurpose = - PV3.ScriptContext txInfo <$> toPlutusScriptPurpose proxy scriptPurpose - -transTxId :: TxId c -> PV3.TxId -transTxId txId = PV3.TxId (transSafeHash (unTxId txId)) - -transTxBodyId :: EraTxBody era => TxBody era -> PV3.TxId -transTxBodyId txBody = PV3.TxId (transSafeHash (hashAnnotated txBody)) - -transTxIn :: TxIn c -> PV3.TxOutRef -transTxIn (TxIn txid txIx) = PV3.TxOutRef (transTxId txid) (toInteger (txIxToInt txIx)) - --- | Translate all `Withdrawal`s from within a `TxBody` -transTxBodyWithdrawals :: EraTxBody era => TxBody era -> PV3.Map PV3.Credential PV3.Lovelace -transTxBodyWithdrawals txBody = - transMap transRewardAccount transCoinToLovelace (unWithdrawals $ txBody ^. withdrawalsTxBodyL) - -transTxCert :: ConwayEraTxCert era => TxCert era -> PV3.TxCert -transTxCert = \case - RegPoolTxCert PoolParams {ppId, ppVrf} -> - PV3.TxCertPoolRegister (transKeyHash ppId) (PV3.PubKeyHash (PV3.toBuiltin (hashToBytes ppVrf))) - RetirePoolTxCert poolId retireEpochNo -> - PV3.TxCertPoolRetire (transKeyHash poolId) (transEpochNo retireEpochNo) - RegTxCert stakeCred -> - PV3.TxCertRegStaking (transCred stakeCred) Nothing - UnRegTxCert stakeCred -> - PV3.TxCertUnRegStaking (transCred stakeCred) Nothing - RegDepositTxCert stakeCred deposit -> - PV3.TxCertRegStaking (transCred stakeCred) (Just (transCoinToLovelace deposit)) - UnRegDepositTxCert stakeCred refund -> - PV3.TxCertUnRegStaking (transCred stakeCred) (Just (transCoinToLovelace refund)) - DelegTxCert stakeCred delegatee -> - PV3.TxCertDelegStaking (transCred stakeCred) (transDelegatee delegatee) - RegDepositDelegTxCert stakeCred delegatee deposit -> - PV3.TxCertRegDeleg (transCred stakeCred) (transDelegatee delegatee) (transCoinToLovelace deposit) - AuthCommitteeHotKeyTxCert coldCred hotCred -> - PV3.TxCertAuthHotCommittee (transColdCommitteeCred coldCred) (transHotCommitteeCred hotCred) - ResignCommitteeColdTxCert coldCred _anchor -> - PV3.TxCertResignColdCommittee (transColdCommitteeCred coldCred) - RegDRepTxCert drepCred deposit _anchor -> - PV3.TxCertRegDRep (transDRepCred drepCred) (transCoinToLovelace deposit) - UnRegDRepTxCert drepCred refund -> - PV3.TxCertUnRegDRep (transDRepCred drepCred) (transCoinToLovelace refund) - UpdateDRepTxCert drepCred _anchor -> - PV3.TxCertUpdateDRep (transDRepCred drepCred) - -transDRepCred :: Credential 'DRepRole c -> PV3.DRepCredential -transDRepCred = PV3.DRepCredential . transCred - -transColdCommitteeCred :: Credential 'ColdCommitteeRole c -> PV3.ColdCommitteeCredential -transColdCommitteeCred = PV3.ColdCommitteeCredential . transCred - -transHotCommitteeCred :: Credential 'HotCommitteeRole c -> PV3.HotCommitteeCredential -transHotCommitteeCred = PV3.HotCommitteeCredential . transCred - -transDelegatee :: Delegatee c -> PV3.Delegatee -transDelegatee = \case - DelegStake poolId -> PV3.DelegStake (transKeyHash poolId) - DelegVote drep -> PV3.DelegVote (transDRep drep) - DelegStakeVote poolId drep -> PV3.DelegStakeVote (transKeyHash poolId) (transDRep drep) - -transDRep :: DRep c -> PV3.DRep -transDRep = \case - DRepCredential drepCred -> PV3.DRep (transDRepCred drepCred) - DRepAlwaysAbstain -> PV3.DRepAlwaysAbstain - DRepAlwaysNoConfidence -> PV3.DRepAlwaysNoConfidence - --- | In Conway we have `Anchor`s in some certificates and all proposals. However, because --- we do not translate anchors to plutus context, it is not always possible to deduce --- which item the script purpose is responsible for, without also including the index for --- that item. For this reason starting with PlutusV3, besides the item, `PV3.Certifying` --- and `PV3.Proposing` also have an index. Moreover, other script purposes rely on Ledger --- `Ord` instances for types that dictate the order, so it might not be a good idea to pass --- that information to Plutus for those purposes. -transScriptPurpose :: - (ConwayEraPlutusTxInfo l era, PlutusTxCert l ~ PV3.TxCert) => - proxy l -> - ConwayPlutusPurpose AsIxItem era -> - Either (ContextError era) PV3.ScriptPurpose -transScriptPurpose proxy = \case - ConwaySpending (AsIxItem _ txIn) -> pure $ PV3.Spending (transTxIn txIn) - ConwayMinting (AsIxItem _ policyId) -> pure $ PV3.Minting (Alonzo.transPolicyID policyId) - ConwayCertifying (AsIxItem ix txCert) -> - PV3.Certifying (toInteger ix) <$> toPlutusTxCert proxy txCert - ConwayRewarding (AsIxItem _ rewardAccount) -> pure $ PV3.Rewarding (transRewardAccount rewardAccount) - ConwayVoting (AsIxItem _ voter) -> pure $ PV3.Voting (transVoter voter) - ConwayProposing (AsIxItem ix proposal) -> - pure $ PV3.Proposing (toInteger ix) (transProposal proxy proposal) - -transVoter :: Voter c -> PV3.Voter -transVoter = \case - CommitteeVoter cred -> PV3.CommitteeVoter $ PV3.HotCommitteeCredential $ transCred cred - DRepVoter cred -> PV3.DRepVoter $ PV3.DRepCredential $ transCred cred - StakePoolVoter keyHash -> PV3.StakePoolVoter $ transKeyHash keyHash - -transGovActionId :: GovActionId c -> PV3.GovernanceActionId -transGovActionId GovActionId {gaidTxId, gaidGovActionIx} = - PV3.GovernanceActionId - { PV3.gaidTxId = transTxId gaidTxId - , PV3.gaidGovActionIx = toInteger $ unGovActionIx gaidGovActionIx - } - -transGovAction :: ConwayEraPlutusTxInfo l era => proxy l -> GovAction era -> PV3.GovernanceAction -transGovAction proxy = \case - ParameterChange pGovActionId ppu govPolicy -> - PV3.ParameterChange - (transPrevGovActionId pGovActionId) - (toPlutusChangedParameters proxy ppu) - (transGovPolicy govPolicy) - HardForkInitiation pGovActionId protVer -> - PV3.HardForkInitiation - (transPrevGovActionId pGovActionId) - (transProtVer protVer) - TreasuryWithdrawals withdrawals govPolicy -> - PV3.TreasuryWithdrawals - (transMap transRewardAccount transCoinToLovelace withdrawals) - (transGovPolicy govPolicy) - NoConfidence pGovActionId -> PV3.NoConfidence (transPrevGovActionId pGovActionId) - UpdateCommittee pGovActionId ccToRemove ccToAdd threshold -> - PV3.UpdateCommittee - (transPrevGovActionId pGovActionId) - (map (PV3.ColdCommitteeCredential . transCred) $ Set.toList ccToRemove) - (transMap (PV3.ColdCommitteeCredential . transCred) transEpochNo ccToAdd) - (transBoundedRational threshold) - NewConstitution pGovActionId constitution -> - PV3.NewConstitution - (transPrevGovActionId pGovActionId) - (transConstitution constitution) - InfoAction -> PV3.InfoAction - where - transGovPolicy = \case - SJust govPolicy -> Just (transScriptHash govPolicy) - SNothing -> Nothing - transConstitution (Constitution _ govPolicy) = - PV3.Constitution (transGovPolicy govPolicy) - transPrevGovActionId = \case - SJust (GovPurposeId gaId) -> Just (transGovActionId gaId) - SNothing -> Nothing - -transMap :: (t1 -> k) -> (t2 -> v) -> Map.Map t1 t2 -> PV3.Map k v -transMap transKey transValue = - PV3.unsafeFromList . map (\(k, v) -> (transKey k, transValue v)) . Map.toList - -transVotingProcedures :: - VotingProcedures era -> PV3.Map PV3.Voter (PV3.Map PV3.GovernanceActionId PV3.Vote) -transVotingProcedures = - transMap transVoter (transMap transGovActionId (transVote . vProcVote)) . unVotingProcedures - -transVote :: Vote -> PV3.Vote -transVote = \case - VoteNo -> PV3.VoteNo - VoteYes -> PV3.VoteYes - Abstain -> PV3.Abstain - -transProposal :: - ConwayEraPlutusTxInfo l era => - proxy l -> - ProposalProcedure era -> - PV3.ProposalProcedure -transProposal proxy ProposalProcedure {pProcDeposit, pProcReturnAddr, pProcGovAction} = - PV3.ProposalProcedure - { PV3.ppDeposit = transCoinToLovelace pProcDeposit - , PV3.ppReturnAddr = transRewardAccount pProcReturnAddr - , PV3.ppGovernanceAction = transGovAction proxy pProcGovAction - } - -transPlutusPurposeV1V2 :: - ( PlutusTxCert l ~ PV2.DCert - , PlutusPurpose AsItem era ~ ConwayPlutusPurpose AsItem era - , EraPlutusTxInfo l era - , Inject (ConwayContextError era) (ContextError era) - ) => - proxy l -> - ConwayPlutusPurpose AsItem era -> - Either (ContextError era) PV2.ScriptPurpose -transPlutusPurposeV1V2 proxy = \case - ConwaySpending txIn -> Alonzo.transPlutusPurpose proxy $ AlonzoSpending txIn - ConwayMinting policyId -> Alonzo.transPlutusPurpose proxy $ AlonzoMinting policyId - ConwayCertifying txCert -> Alonzo.transPlutusPurpose proxy $ AlonzoCertifying txCert - ConwayRewarding rewardAccount -> Alonzo.transPlutusPurpose proxy $ AlonzoRewarding rewardAccount - purpose -> Left $ inject $ PlutusPurposeNotSupported purpose - -transProtVer :: ProtVer -> PV3.ProtocolVersion -transProtVer (ProtVer major minor) = - PV3.ProtocolVersion (toInteger (getVersion64 major)) (toInteger minor) - --- ========================== --- Instances - -instance Crypto c => ToPlutusData (PParamsUpdate (ConwayEra c)) where - toPlutusData = pparamUpdateToData conwayPParamMap - fromPlutusData = pparamUpdateFromData conwayPParamMap - -instance Crypto c => ConwayEraPlutusTxInfo 'PlutusV3 (ConwayEra c) where - toPlutusChangedParameters _ x = PV3.ChangedParameters (PV3.dataToBuiltinData (toPlutusData x)) diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/TxOut.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/TxOut.hs deleted file mode 100644 index a9c70ec41bc..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/TxOut.hs +++ /dev/null @@ -1,72 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Conway.TxOut () where - -import Cardano.Ledger.Address (addrPtrNormalize) -import Cardano.Ledger.Babbage.Core -import Cardano.Ledger.Babbage.TxOut ( - BabbageTxOut (..), - addrEitherBabbageTxOutL, - babbageMinUTxOValue, - dataBabbageTxOutL, - dataHashBabbageTxOutL, - datumBabbageTxOutL, - getDatumBabbageTxOut, - referenceScriptBabbageTxOutL, - valueEitherBabbageTxOutL, - ) -import Cardano.Ledger.Conway.Era (ConwayEra) -import Cardano.Ledger.Conway.PParams () -import Cardano.Ledger.Conway.Scripts () -import Cardano.Ledger.Crypto -import Cardano.Ledger.Plutus.Data (Datum (..), translateDatum) -import Data.Maybe.Strict (StrictMaybe (..)) -import Lens.Micro - -instance Crypto c => EraTxOut (ConwayEra c) where - {-# SPECIALIZE instance EraTxOut (ConwayEra StandardCrypto) #-} - - type TxOut (ConwayEra c) = BabbageTxOut (ConwayEra c) - - mkBasicTxOut addr vl = BabbageTxOut addr vl NoDatum SNothing - - upgradeTxOut (BabbageTxOut addr value d s) = - BabbageTxOut (addrPtrNormalize addr) value (translateDatum d) (upgradeScript <$> s) - - addrEitherTxOutL = addrEitherBabbageTxOutL - {-# INLINE addrEitherTxOutL #-} - - valueEitherTxOutL = valueEitherBabbageTxOutL - {-# INLINE valueEitherTxOutL #-} - - getMinCoinSizedTxOut = babbageMinUTxOValue - -instance Crypto c => AlonzoEraTxOut (ConwayEra c) where - {-# SPECIALIZE instance AlonzoEraTxOut (ConwayEra StandardCrypto) #-} - - dataHashTxOutL = dataHashBabbageTxOutL - {-# INLINE dataHashTxOutL #-} - - datumTxOutF = to getDatumBabbageTxOut - {-# INLINE datumTxOutF #-} - -instance Crypto c => BabbageEraTxOut (ConwayEra c) where - {-# SPECIALIZE instance BabbageEraTxOut (ConwayEra StandardCrypto) #-} - - dataTxOutL = dataBabbageTxOutL - {-# INLINE dataTxOutL #-} - - datumTxOutL = datumBabbageTxOutL - {-# INLINE datumTxOutL #-} - - referenceScriptTxOutL = referenceScriptBabbageTxOutL - {-# INLINE referenceScriptTxOutL #-} diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/TxWits.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/TxWits.hs deleted file mode 100644 index c30ba8d5d27..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/TxWits.hs +++ /dev/null @@ -1,60 +0,0 @@ -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Conway.TxWits ( - module BabbageTxWitsReExport, -) -where - -import Cardano.Ledger.Alonzo.TxWits ( - addrAlonzoTxWitsL, - bootAddrAlonzoTxWitsL, - datsAlonzoTxWitsL, - rdmrsAlonzoTxWitsL, - scriptAlonzoTxWitsL, - upgradeRedeemers, - upgradeTxDats, - ) -import Cardano.Ledger.Alonzo.TxWits as BabbageTxWitsReExport ( - AlonzoEraTxWits (..), - AlonzoTxWits (..), - ) -import Cardano.Ledger.Conway.Era (ConwayEra) -import Cardano.Ledger.Conway.Scripts () -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto - -instance Crypto c => EraTxWits (ConwayEra c) where - {-# SPECIALIZE instance EraTxWits (ConwayEra StandardCrypto) #-} - - type TxWits (ConwayEra c) = AlonzoTxWits (ConwayEra c) - - mkBasicTxWits = mempty - - addrTxWitsL = addrAlonzoTxWitsL - {-# INLINE addrTxWitsL #-} - - bootAddrTxWitsL = bootAddrAlonzoTxWitsL - {-# INLINE bootAddrTxWitsL #-} - - scriptTxWitsL = scriptAlonzoTxWitsL - {-# INLINE scriptTxWitsL #-} - - upgradeTxWits atw = - AlonzoTxWits - { txwitsVKey = txwitsVKey atw - , txwitsBoot = txwitsBoot atw - , txscripts = upgradeScript <$> txscripts atw - , txdats = upgradeTxDats (txdats atw) - , txrdmrs = upgradeRedeemers (txrdmrs atw) - } - -instance Crypto c => AlonzoEraTxWits (ConwayEra c) where - {-# SPECIALIZE instance AlonzoEraTxWits (ConwayEra StandardCrypto) #-} - - datsTxWitsL = datsAlonzoTxWitsL - {-# INLINE datsTxWitsL #-} - - rdmrsTxWitsL = rdmrsAlonzoTxWitsL - {-# INLINE rdmrsTxWitsL #-} diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/UTxO.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/UTxO.hs deleted file mode 100644 index 51acf6de5bb..00000000000 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/UTxO.hs +++ /dev/null @@ -1,173 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE TupleSections #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Conway.UTxO ( - conwayProducedValue, - getConwayWitsVKeyNeeded, -) where - -import Cardano.Ledger.Alonzo.UTxO ( - AlonzoEraUTxO (..), - AlonzoScriptsNeeded (..), - getAlonzoScriptsHashesNeeded, - getMintingScriptsNeeded, - getRewardingScriptsNeeded, - getSpendingScriptsNeeded, - zipAsIxItem, - ) -import Cardano.Ledger.Babbage.UTxO ( - getBabbageScriptsProvided, - getBabbageSpendingDatum, - getBabbageSupplementalDataHashes, - getReferenceScriptsNonDistinct, - ) -import Cardano.Ledger.BaseTypes (StrictMaybe (..)) -import Cardano.Ledger.Coin (Coin) -import Cardano.Ledger.Conway.Core -import Cardano.Ledger.Conway.Era (ConwayEra) -import Cardano.Ledger.Conway.Governance.Procedures ( - GovAction (..), - ProposalProcedure (..), - Voter (..), - unVotingProcedures, - ) -import Cardano.Ledger.Credential (credKeyHashWitness, credScriptHash) -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Keys (KeyHash, KeyRole (..), asWitness) -import Cardano.Ledger.Mary.UTxO (getConsumedMaryValue) -import Cardano.Ledger.SafeHash (SafeToHash (..)) -import Cardano.Ledger.Shelley.UTxO (getShelleyWitsVKeyNeededNoGov, shelleyProducedValue) -import Cardano.Ledger.UTxO (EraUTxO (..), UTxO (..)) -import Cardano.Ledger.Val (Val (..), inject) -import qualified Data.Map.Strict as Map -import Data.Maybe (catMaybes) -import Data.Monoid (Sum (..)) -import qualified Data.Set as Set -import Lens.Micro ((^.)) - -getConwayScriptsNeeded :: - ConwayEraTxBody era => - UTxO era -> - TxBody era -> - AlonzoScriptsNeeded era -getConwayScriptsNeeded utxo txBody = - getSpendingScriptsNeeded utxo txBody - <> getRewardingScriptsNeeded txBody - <> certifyingScriptsNeeded - <> getMintingScriptsNeeded txBody - <> votingScriptsNeeded - <> proposingScriptsNeeded - where - certifyingScriptsNeeded = - AlonzoScriptsNeeded $ - catMaybes $ - zipAsIxItem (txBody ^. certsTxBodyL) $ - \asIxItem@(AsIxItem _ txCert) -> - (CertifyingPurpose asIxItem,) <$> getScriptWitnessTxCert txCert - - votingScriptsNeeded = - AlonzoScriptsNeeded $ - catMaybes $ - zipAsIxItem (Map.keys (unVotingProcedures (txBody ^. votingProceduresTxBodyL))) $ - \asIxItem@(AsIxItem _ voter) -> - (VotingPurpose asIxItem,) <$> getVoterScriptHash voter - where - getVoterScriptHash = \case - CommitteeVoter cred -> credScriptHash cred - DRepVoter cred -> credScriptHash cred - StakePoolVoter _ -> Nothing - - proposingScriptsNeeded = - AlonzoScriptsNeeded $ - catMaybes $ - zipAsIxItem (txBody ^. proposalProceduresTxBodyL) $ - \asIxItem@(AsIxItem _ proposal) -> - (ProposingPurpose asIxItem,) <$> getProposalScriptHash proposal - where - getProposalScriptHash ProposalProcedure {pProcGovAction} = - case pProcGovAction of - ParameterChange _ _ (SJust govPolicyHash) -> Just govPolicyHash - TreasuryWithdrawals _ (SJust govPolicyHash) -> Just govPolicyHash - _ -> Nothing - -conwayProducedValue :: - ConwayEraTxBody era => - PParams era -> - (KeyHash 'StakePool (EraCrypto era) -> Bool) -> - TxBody era -> - Value era -conwayProducedValue pp isStakePool txBody = - shelleyProducedValue pp isStakePool txBody - <+> inject (txBody ^. treasuryDonationTxBodyL) - -instance Crypto c => EraUTxO (ConwayEra c) where - type ScriptsNeeded (ConwayEra c) = AlonzoScriptsNeeded (ConwayEra c) - - getConsumedValue = getConsumedMaryValue - - getProducedValue = conwayProducedValue - - getScriptsProvided = getBabbageScriptsProvided - - getScriptsNeeded = getConwayScriptsNeeded - - getScriptsHashesNeeded = getAlonzoScriptsHashesNeeded -- TODO: This also changes for Conway - - getWitsVKeyNeeded _ = getConwayWitsVKeyNeeded - - getMinFeeTxUtxo = getConwayMinFeeTxUtxo - -instance Crypto c => AlonzoEraUTxO (ConwayEra c) where - getSupplementalDataHashes = getBabbageSupplementalDataHashes - - getSpendingDatum = getBabbageSpendingDatum - -getConwayMinFeeTxUtxo :: - ( EraTx era - , BabbageEraTxBody era - ) => - PParams era -> - Tx era -> - UTxO era -> - Coin -getConwayMinFeeTxUtxo pparams tx utxo = - getMinFeeTx pparams tx refScriptsSize - where - ins = (tx ^. bodyTxL . referenceInputsTxBodyL) `Set.union` (tx ^. bodyTxL . inputsTxBodyL) - refScripts = getReferenceScriptsNonDistinct utxo ins - refScriptsSize = getSum $ foldMap (Sum . originalBytesSize . snd) refScripts - -getConwayWitsVKeyNeeded :: - (EraTx era, ConwayEraTxBody era) => - UTxO era -> - TxBody era -> - Set.Set (KeyHash 'Witness (EraCrypto era)) -getConwayWitsVKeyNeeded utxo txBody = - getShelleyWitsVKeyNeededNoGov utxo txBody - `Set.union` (txBody ^. reqSignerHashesTxBodyL) - `Set.union` voterWitnesses txBody - -voterWitnesses :: - ConwayEraTxBody era => - TxBody era -> - Set.Set (KeyHash 'Witness (EraCrypto era)) -voterWitnesses txb = - Map.foldrWithKey' accum mempty (unVotingProcedures (txb ^. votingProceduresTxBodyL)) - where - accum voter _ khs = - maybe khs (`Set.insert` khs) $ - case voter of - CommitteeVoter cred -> credKeyHashWitness cred - DRepVoter cred -> credKeyHashWitness cred - StakePoolVoter poolId -> Just $ asWitness poolId diff --git a/eras/conway/impl/test/Main.hs b/eras/conway/impl/test/Main.hs deleted file mode 100644 index 0304cb9e12f..00000000000 --- a/eras/conway/impl/test/Main.hs +++ /dev/null @@ -1,45 +0,0 @@ -{-# LANGUAGE TypeApplications #-} - -module Main where - -import Cardano.Ledger.Conway (Conway) -import qualified Test.Cardano.Ledger.Alonzo.Binary.CostModelsSpec as CostModelsSpec -import qualified Test.Cardano.Ledger.Alonzo.Binary.TxWitsSpec as TxWitsSpec -import qualified Test.Cardano.Ledger.Alonzo.Imp as AlonzoImp -import Test.Cardano.Ledger.Common -import qualified Test.Cardano.Ledger.Conway.Binary.CddlSpec as Cddl -import qualified Test.Cardano.Ledger.Conway.Binary.Regression as Regression -import qualified Test.Cardano.Ledger.Conway.BinarySpec as Binary -import qualified Test.Cardano.Ledger.Conway.CommitteeRatifySpec as CommitteeRatify -import qualified Test.Cardano.Ledger.Conway.DRepRatifySpec as DRepRatify -import qualified Test.Cardano.Ledger.Conway.GenesisSpec as Genesis -import qualified Test.Cardano.Ledger.Conway.GovActionReorderSpec as GovActionReorder -import qualified Test.Cardano.Ledger.Conway.Imp as ConwayImp -import Test.Cardano.Ledger.Conway.Plutus.PlutusSpec as PlutusSpec -import qualified Test.Cardano.Ledger.Conway.Proposals as Proposals -import Test.Cardano.Ledger.Core.JSON (roundTripJsonEraSpec) -import qualified Test.Cardano.Ledger.Shelley.Imp as ShelleyImp - -main :: IO () -main = - ledgerTestMain $ - describe "Conway" $ do - Proposals.spec - Binary.spec - Cddl.spec - DRepRatify.spec - CommitteeRatify.spec - Genesis.spec - GovActionReorder.spec - roundTripJsonEraSpec @Conway - describe "Imp" $ do - AlonzoImp.spec @Conway - ConwayImp.spec @Conway - ShelleyImp.spec @Conway - describe "CostModels" $ do - CostModelsSpec.spec @Conway - describe "TxWits" $ do - TxWitsSpec.spec @Conway - describe "Plutus" $ do - PlutusSpec.spec - Regression.spec @Conway diff --git a/eras/conway/impl/test/Test/Cardano/Ledger/Conway/Binary/CddlSpec.hs b/eras/conway/impl/test/Test/Cardano/Ledger/Conway/Binary/CddlSpec.hs deleted file mode 100644 index 76660f4aac0..00000000000 --- a/eras/conway/impl/test/Test/Cardano/Ledger/Conway/Binary/CddlSpec.hs +++ /dev/null @@ -1,42 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Conway.Binary.CddlSpec (spec) where - -import Cardano.Ledger.Allegra.Scripts -import Cardano.Ledger.Alonzo.Scripts (CostModels) -import Cardano.Ledger.Alonzo.TxWits (Redeemers) -import Cardano.Ledger.Conway (Conway) -import Cardano.Ledger.Conway.Governance (GovAction, ProposalProcedure, VotingProcedure) -import Cardano.Ledger.Core -import Cardano.Ledger.Plutus.Data (Data, Datum) -import Test.Cardano.Ledger.Binary.Cddl ( - beforeAllCddlFile, - cddlRoundTripAnnCborSpec, - cddlRoundTripCborSpec, - ) -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Conway.Binary.Cddl (readConwayCddlFiles) - -spec :: Spec -spec = - describe "CDDL" $ beforeAllCddlFile 3 readConwayCddlFiles $ do - let v = eraProtVerHigh @Conway - cddlRoundTripCborSpec @(Value Conway) v "positive_coin" - cddlRoundTripCborSpec @(Value Conway) v "value" - cddlRoundTripAnnCborSpec @(TxBody Conway) v "transaction_body" - cddlRoundTripAnnCborSpec @(TxAuxData Conway) v "auxiliary_data" - cddlRoundTripAnnCborSpec @(Timelock Conway) v "native_script" - cddlRoundTripAnnCborSpec @(Data Conway) v "plutus_data" - cddlRoundTripCborSpec @(TxOut Conway) v "transaction_output" - cddlRoundTripAnnCborSpec @(Script Conway) v "script" - cddlRoundTripCborSpec @(Datum Conway) v "datum_option" - cddlRoundTripAnnCborSpec @(TxWits Conway) v "transaction_witness_set" - cddlRoundTripCborSpec @(PParamsUpdate Conway) v "protocol_param_update" - cddlRoundTripCborSpec @CostModels v "costmdls" - cddlRoundTripAnnCborSpec @(Redeemers Conway) v "redeemers" - cddlRoundTripAnnCborSpec @(Tx Conway) v "transaction" - cddlRoundTripCborSpec @(VotingProcedure Conway) v "voting_procedure" - cddlRoundTripCborSpec @(ProposalProcedure Conway) v "proposal_procedure" - cddlRoundTripCborSpec @(GovAction Conway) v "gov_action" - cddlRoundTripCborSpec @(TxCert Conway) v "certificate" diff --git a/eras/conway/impl/test/Test/Cardano/Ledger/Conway/BinarySpec.hs b/eras/conway/impl/test/Test/Cardano/Ledger/Conway/BinarySpec.hs deleted file mode 100644 index 5aac13774ae..00000000000 --- a/eras/conway/impl/test/Test/Cardano/Ledger/Conway/BinarySpec.hs +++ /dev/null @@ -1,32 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Conway.BinarySpec (spec) where - -import Cardano.Ledger.Conway -import Cardano.Ledger.Conway.Genesis -import Cardano.Ledger.Conway.Governance -import Cardano.Ledger.Crypto -import Data.Default.Class (def) -import Test.Cardano.Ledger.Binary.RoundTrip -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Conway.Arbitrary () -import Test.Cardano.Ledger.Conway.Binary.RoundTrip (roundTripConwayCommonSpec) -import Test.Cardano.Ledger.Conway.TreeDiff () -import Test.Cardano.Ledger.Core.Binary (specUpgrade) -import Test.Cardano.Ledger.Core.Binary.RoundTrip (roundTripEraSpec) - -spec :: Spec -spec = do - specUpgrade @Conway def - describe "RoundTrip" $ do - roundTripCborSpec @(GovActionId StandardCrypto) - roundTripCborSpec @(GovPurposeId 'PParamUpdatePurpose Conway) - roundTripCborSpec @(GovPurposeId 'HardForkPurpose Conway) - roundTripCborSpec @(GovPurposeId 'CommitteePurpose Conway) - roundTripCborSpec @(GovPurposeId 'ConstitutionPurpose Conway) - roundTripCborSpec @Vote - roundTripCborSpec @(Voter StandardCrypto) - roundTripConwayCommonSpec @Conway - -- ConwayGenesis only makes sense in Conway era - roundTripEraSpec @Conway @(ConwayGenesis StandardCrypto) diff --git a/eras/conway/impl/test/Test/Cardano/Ledger/Conway/CommitteeRatifySpec.hs b/eras/conway/impl/test/Test/Cardano/Ledger/Conway/CommitteeRatifySpec.hs deleted file mode 100644 index 69d4c6f52b5..00000000000 --- a/eras/conway/impl/test/Test/Cardano/Ledger/Conway/CommitteeRatifySpec.hs +++ /dev/null @@ -1,394 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedLists #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TupleSections #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Conway.CommitteeRatifySpec (spec) where - -import Cardano.Ledger.BaseTypes (EpochNo (..), StrictMaybe (..)) -import Cardano.Ledger.CertState (CommitteeAuthorization (..), CommitteeState (..)) -import Cardano.Ledger.Conway -import Cardano.Ledger.Conway.Core -import Cardano.Ledger.Conway.Governance ( - GovAction (..), - GovActionState (..), - ProposalProcedure (..), - RatifyEnv (..), - RatifyState, - Vote (..), - ensCommitteeL, - rsEnactStateL, - ) -import Cardano.Ledger.Conway.Rules ( - committeeAccepted, - committeeAcceptedRatio, - ) -import Cardano.Ledger.Credential (Credential (..)) -import Cardano.Ledger.Keys (KeyRole (..)) -import Data.Functor.Identity (Identity) -import Data.List ((\\)) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Ratio ((%)) -import qualified Data.Set as Set -import Lens.Micro ((&), (.~)) -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Conway.Arbitrary () -import Test.Cardano.Ledger.Core.Arbitrary () - -spec :: Spec -spec = do - describe "Committee Ratification" $ do - acceptedRatioProp @Conway - acceptedProp @Conway - allYesProp @Conway - allNoProp @Conway - allAbstainProp @Conway - expiredAndResignedMembersProp @Conway - -acceptedRatioProp :: forall era. Era era => Spec -acceptedRatioProp = - prop "Committee vote count for arbitrary vote ratios" $ - forAll genRatios $ \ratios -> do - forAll (genTestData ratios) $ - \TestData {members, votes, committeeState} -> do - let acceptedRatio = - committeeAcceptedRatio @era members (totalVotes votes) committeeState (EpochNo 0) - Votes {..} = votes - -- everyone is registered and noone is resigned, - -- so we expect the accepted ratio to be yes / (yes + no + notVoted) - expectedRatio = - ratioOrZero - (length votedYes) - (length votedYes + length votedNo + length notVoted) - - acceptedRatio `shouldBe` expectedRatio - - -- we can also express this as : yes / (total - abstain) - let expectedRatioAlt = - ratioOrZero - (length votedYes) - (length members - length votedAbstain) - - acceptedRatio `shouldBe` expectedRatioAlt - -acceptedProp :: - forall era. - ( ConwayEraPParams era - , Arbitrary (PParamsHKD Identity era) - , Arbitrary (PParamsHKD StrictMaybe era) - ) => - Spec -acceptedProp = - prop "Only NoConfidence or UpdateCommittee should pass without a committee" $ - forAll (arbitrary @(RatifyState era, RatifyEnv era, GovActionState era)) $ do - \(rs, rEnv, gas) -> do - committeeAccepted rEnv (rs & rsEnactStateL . ensCommitteeL .~ SNothing) gas - `shouldBe` isNoConfidenceOrUpdateCommittee gas - where - isNoConfidenceOrUpdateCommittee GovActionState {gasProposalProcedure} = - case pProcGovAction gasProposalProcedure of - NoConfidence {} -> True - UpdateCommittee {} -> True - _ -> False - -allYesProp :: forall era. Era era => Spec -allYesProp = - prop "If all vote yes, ratio is 1" $ - forAll (genTestData (Ratios {yes = 1, no = 0, abstain = 0})) $ - \TestData {members, votes, committeeState} -> do - let acceptedRatio = - committeeAcceptedRatio @era members (totalVotes votes) committeeState (EpochNo 0) - acceptedRatio `shouldBe` 1 - -allNoProp :: forall era. Era era => Spec -allNoProp = - prop "If all vote no, ratio is 0" $ - forAll (genTestData (Ratios {yes = 0, no = 1, abstain = 0})) $ - \TestData {members, votes, committeeState} -> do - let acceptedRatio = - committeeAcceptedRatio @era members (totalVotes votes) committeeState (EpochNo 0) - acceptedRatio `shouldBe` 0 - -allAbstainProp :: forall era. Era era => Spec -allAbstainProp = - prop "If all abstain, ratio is 0" $ - forAll (genTestData (Ratios {yes = 0, no = 0, abstain = 1})) $ - \TestData {members, votes, committeeState} -> do - let acceptedRatio = - committeeAcceptedRatio @era members (totalVotes votes) committeeState (EpochNo 0) - acceptedRatio `shouldBe` 0 - -expiredAndResignedMembersProp :: forall era. Era era => Spec -expiredAndResignedMembersProp = - prop "Expired or resigned members are not counted" $ - forAll genRatios $ \ratios -> do - forAll (genTestData @era ratios) $ \testData -> do - forAll ((,) <$> genEpoch <*> genExpiredEpoch) $ \(epochNo, expiredEpochNo) -> do - -- generate test data with some expired and/or resigned credentials corresponding - -- to each category of votes - forAll (genExpiredOrResignedForEachVoteType testData expiredEpochNo) $ do - \(testData', remainingYes, remainingNo, remainingNotVoted) -> do - let TestData {members, votes, committeeState} = testData' - acceptedRatio = - committeeAcceptedRatio @era members (totalVotes votes) committeeState epochNo - expectedRatio = - ratioOrZero - remainingYes - (remainingYes + remainingNo + remainingNotVoted) - acceptedRatio `shouldBe` expectedRatio - where - genExpiredOrResignedForEachVoteType :: - TestData era -> - EpochNo -> - Gen (TestData era, Int, Int, Int) - genExpiredOrResignedForEachVoteType td epochNo = do - let Votes {votedYes, votedNo, votedAbstain, notVoted} = votes td - (td', remYes) <- genExpiredOrResigned td votedYes epochNo - (td'', remNo) <- genExpiredOrResigned td' votedNo epochNo - (td''', _) <- genExpiredOrResigned td'' votedAbstain epochNo - (res, remNotVoted) <- genExpiredOrResigned td''' notVoted epochNo - pure (res, remYes, remNo, remNotVoted) - - genExpiredOrResigned :: - TestData era -> - [Credential 'HotCommitteeRole (EraCrypto era)] -> - EpochNo -> - Gen (TestData era, Int) - genExpiredOrResigned td votes epochNo = do - pct <- arbitrary @Rational - frequency - [ (4, pure $ updatePctOfCommittee @era td pct votes (expireMembers epochNo)) - , (4, pure $ updatePctOfCommittee @era td pct votes resignMembers) - , (2, pure $ updatePctOfCommittee @era td pct votes (expireAndResign epochNo)) - ] - expireAndResign :: - EpochNo -> - Set.Set (Credential 'HotCommitteeRole (EraCrypto era)) -> - TestData era -> - TestData era - expireAndResign epochNo hotCreds td = - let td' = expireMembers epochNo hotCreds td - td'' = resignMembers hotCreds td' - in td'' - --- Updates a percentage of the committee of the given test data. --- The update is based on a function that given a set of hot credentials, --- updates test data based on these. --- We pass to this update function a percentage of the given list of credentials. --- We also calculate and return the number of credentials that haven't been affected by the update. --- The initial list contains duplicates (these are corresponding to votes). --- We are passing a percentage of distinct credentials to the update functions, --- but we want to calculate correctly the number of credentials that haven't been affected by the update --- (including duplicates, excluding all the ones that are being updated). -updatePctOfCommittee :: - TestData era -> - Rational -> - [Credential 'HotCommitteeRole (EraCrypto era)] -> - -- | The update function, which updates test data based on a set of credentials. - (Set.Set (Credential 'HotCommitteeRole (EraCrypto era)) -> TestData era -> TestData era) -> - (TestData era, Int) -updatePctOfCommittee td pct hotCreds action = - let - hotCredsSet = Set.fromList hotCreds - affectedSize = pctOfN pct (length hotCreds) - affectedCreds = Set.take affectedSize hotCredsSet - -- we want to count all the remaining credentials, including duplicates - remaining = length $ filter (`Set.notMember` affectedCreds) hotCreds - res = action affectedCreds td - in - (res, remaining) - where - pctOfN :: Rational -> Int -> Int - pctOfN p n = floor (p * fromIntegral n) - -data Ratios = Ratios - { yes :: Rational - , no :: Rational - , abstain :: Rational - } - deriving (Show) - -data TestData era = TestData - { members :: Map (Credential 'ColdCommitteeRole (EraCrypto era)) EpochNo - , votes :: Votes era - , committeeState :: CommitteeState era - } - deriving (Show) - -data Votes era = Votes - { votedYes :: [Credential 'HotCommitteeRole (EraCrypto era)] - , votedNo :: [Credential 'HotCommitteeRole (EraCrypto era)] - , votedAbstain :: [Credential 'HotCommitteeRole (EraCrypto era)] - , notVoted :: [Credential 'HotCommitteeRole (EraCrypto era)] - } - deriving (Show) - -genTestData :: - forall era. - Era era => - Ratios -> - Gen (TestData era) -genTestData ratios = do - coldCreds <- genNonEmptyColdCreds @era - committeeState@(CommitteeState {csCommitteeCreds}) <- genNonResignedCommitteeState @era coldCreds - members <- genMembers @era coldCreds - let hotCreds = [k | CommitteeHotCredential k <- Map.elems csCommitteeCreds] - votes = distributeVotes @era ratios hotCreds - pure $ TestData members votes committeeState - --- Updates the given test data by resigning the given hot credentials. -resignMembers :: - Set.Set (Credential 'HotCommitteeRole (EraCrypto era)) -> - TestData era -> - TestData era -resignMembers hotCreds td@TestData {committeeState} = - td - { committeeState = - CommitteeState - ( Map.map - ( \case - CommitteeHotCredential hk - | hk `Set.member` hotCreds -> CommitteeMemberResigned SNothing - x -> x - ) - (csCommitteeCreds committeeState) - ) - } - -expireMembers :: - forall era. - EpochNo -> - Set.Set (Credential 'HotCommitteeRole (EraCrypto era)) -> - TestData era -> - TestData era -expireMembers newEpochNo hotCreds td@TestData {members, committeeState} = - td - { members = - Map.mapWithKey (\ck epochNo -> if expire ck then newEpochNo else epochNo) members - } - where - expire ck = case Map.lookup ck (csCommitteeCreds committeeState) of - Just (CommitteeHotCredential k) | k `Set.member` hotCreds -> True - _ -> False - -totalVotes :: Votes era -> Map (Credential 'HotCommitteeRole (EraCrypto era)) Vote -totalVotes Votes {votedYes, votedNo, votedAbstain} = - Map.unions @[] - [ Map.fromList $ (,VoteYes) <$> votedYes - , Map.fromList $ (,VoteNo) <$> votedNo - , Map.fromList $ (,Abstain) <$> votedAbstain - ] - -genNonEmptyColdCreds :: Era era => Gen (Set.Set (Credential 'ColdCommitteeRole (EraCrypto era))) -genNonEmptyColdCreds = - Set.fromList <$> listOf1 arbitrary - -genMembers :: - Set.Set (Credential 'ColdCommitteeRole (EraCrypto era)) -> - Gen (Map (Credential 'ColdCommitteeRole (EraCrypto era)) EpochNo) -genMembers coldCreds = - Map.fromList . zip (Set.toList coldCreds) - <$> vectorOf (length coldCreds) genNonExpiredEpoch - -genEpoch :: Gen EpochNo -genEpoch = EpochNo <$> choose (100, 1000) - -genNonExpiredEpoch :: Gen EpochNo -genNonExpiredEpoch = EpochNo <$> choose (1000, maxBound) - -genExpiredEpoch :: Gen EpochNo -genExpiredEpoch = EpochNo <$> choose (0, 100) - -genNonResignedCommitteeState :: - forall era. - Era era => - Set.Set (Credential 'ColdCommitteeRole (EraCrypto era)) -> - Gen (CommitteeState era) -genNonResignedCommitteeState coldCreds = do - hotCredsMap <- - sequence $ - Map.fromSet - (const $ CommitteeHotCredential <$> arbitrary) - coldCreds - frequency - [ (9, pure $ CommitteeState hotCredsMap) - , (1, CommitteeState <$> overwriteWithDuplicate hotCredsMap) - ] - where - overwriteWithDuplicate m - | Map.size m < 2 = pure m - | otherwise = do - fromIx <- choose (0, Map.size m - 1) - toIx <- choose (0, Map.size m - 1) - let valueToDuplicate = snd $ Map.elemAt fromIx m - pure $ Map.updateAt (\_ _ -> Just valueToDuplicate) toIx m - -distributeVotes :: - Ratios -> - [Credential 'HotCommitteeRole (EraCrypto era)] -> - Votes era -distributeVotes Ratios {yes, no, abstain} hotCreds = do - let - -- The list of hot credentials, which we split into the 4 voting categories, may contain duplicates. - -- We want the duplicates to be in the same category (since this is what will happen in practice, - -- where the votes is a Map from hot credential to vote). - -- So we first remove the duplicates, then split the list into the 4 categories, - -- and then add the duplicates back. - hotCredsSet = Set.fromList hotCreds - duplicates = Set.fromList $ hotCreds \\ Set.toList hotCredsSet - (yesCreds, noCreds, abstainCreds, notVotedCreds) = splitByPct yes no abstain hotCredsSet - in - Votes - { votedYes = addDuplicates yesCreds duplicates - , votedNo = addDuplicates noCreds duplicates - , votedAbstain = addDuplicates abstainCreds duplicates - , notVoted = addDuplicates notVotedCreds duplicates - } - where - splitByPct :: - Rational -> - Rational -> - Rational -> - Set.Set a -> - (Set.Set a, Set.Set a, Set.Set a, Set.Set a) - splitByPct x y z l = - let - size = fromIntegral $ length l - (xs, rest) = Set.splitAt (round (x * size)) l - (ys, rest') = Set.splitAt (round (y * size)) rest - (zs, rest'') = Set.splitAt (round (z * size)) rest' - in - (xs, ys, zs, rest'') - addDuplicates :: Ord a => Set.Set a -> Set.Set a -> [a] - addDuplicates s dups = - if dups `Set.isSubsetOf` s - then Set.toList s ++ Set.toList dups - else Set.toList s - -genRatios :: Gen Ratios -genRatios = do - (a, b, c, _) <- genPctsOf100 - pure $ Ratios {yes = a, no = b, abstain = c} - -genPctsOf100 :: Gen (Rational, Rational, Rational, Rational) -genPctsOf100 = do - a <- choose (0, 100) - b <- choose (0, 100) - c <- choose (0, 100) - d <- choose (0, 100) - let s = a + b + c + d - pure (a % s, b % s, c % s, d % s) - -ratioOrZero :: Integral a => a -> a -> Rational -ratioOrZero a b = - if b == 0 - then 0 - else fromIntegral a % fromIntegral b diff --git a/eras/conway/impl/test/Test/Cardano/Ledger/Conway/DRepRatifySpec.hs b/eras/conway/impl/test/Test/Cardano/Ledger/Conway/DRepRatifySpec.hs deleted file mode 100644 index 5412e7dced5..00000000000 --- a/eras/conway/impl/test/Test/Cardano/Ledger/Conway/DRepRatifySpec.hs +++ /dev/null @@ -1,328 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MonoLocalBinds #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Conway.DRepRatifySpec (spec) where - -import Cardano.Ledger.BaseTypes (EpochNo (..), StrictMaybe (..)) -import Cardano.Ledger.CertState (CommitteeState (..)) -import Cardano.Ledger.Coin (Coin (..), CompactForm (..)) -import Cardano.Ledger.Compactible (Compactible (..)) -import Cardano.Ledger.Conway -import Cardano.Ledger.Conway.Core -import Cardano.Ledger.Conway.Governance ( - GovAction (..), - GovActionState (..), - RatifyEnv (..), - RatifyState, - Vote (..), - gasAction, - pparamsUpdateThreshold, - votingDRepThreshold, - ) -import Cardano.Ledger.Conway.Rules ( - dRepAccepted, - dRepAcceptedRatio, - ) -import Cardano.Ledger.Credential (Credential (..)) -import Cardano.Ledger.DRep (DRep (..), DRepState (..)) -import Cardano.Ledger.Keys (KeyRole (..)) -import Cardano.Ledger.PoolDistr (PoolDistr (..)) -import Cardano.Ledger.Val ((<+>), (<->)) -import Data.Foldable (fold) -import Data.Functor.Identity (Identity) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Ratio ((%)) -import qualified Data.Set as Set -import Data.Word (Word64) -import Lens.Micro -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Conway.Arbitrary () -import Test.Cardano.Ledger.Core.Arbitrary () -import Test.Cardano.Ledger.Core.Rational ((%!)) - -spec :: Spec -spec = do - describe "DRep Ratification" $ do - correctThresholdsProp @Conway - acceptedRatioProp @Conway - noStakeProp @Conway - allAbstainProp @Conway - noVotesProp @Conway - allYesProp @Conway - noConfidenceProp @Conway - -correctThresholdsProp :: - forall era. - ( ConwayEraPParams era - , Arbitrary (PParams era) - , Arbitrary (PParamsUpdate era) - ) => - Spec -correctThresholdsProp = do - prop "PParamsUpdateThreshold always selects a threshold" $ \(pp :: PParams era) ppu -> do - let DRepVotingThresholds {..} = pp ^. ppDRepVotingThresholdsL - allDRepThresholds = - Set.fromList - [ dvtPPNetworkGroup - , dvtPPEconomicGroup - , dvtPPTechnicalGroup - , dvtPPGovGroup - ] - when (ppu /= emptyPParamsUpdate) $ - pparamsUpdateThreshold pp ppu `shouldSatisfy` (`Set.member` allDRepThresholds) - pparamsUpdateThreshold pp emptyPParamsUpdate `shouldBe` (0 %! 1) - -acceptedRatioProp :: forall era. Era era => Spec -acceptedRatioProp = do - prop "DRep vote count for arbitrary vote ratios" $ - forAll genRatios $ \ratios -> do - forAll (genTestData @era ratios) $ - \(TestData {..}) -> do - let drepState = - -- non-expired (active) dReps - Map.fromList - [(cred, DRepState (EpochNo 100) SNothing mempty) | DRepCredential cred <- Map.keys distr] - ratifyEnv = (emptyRatifyEnv @era) {reDRepDistr = distr, reDRepState = drepState} - actual = dRepAcceptedRatio @era ratifyEnv votes InfoAction - -- Check the accepted min ratio is : yes/(total - abstain), or zero if everyone abstained - expected - | totalStake == stakeAbstain <+> stakeAlwaysAbstain = 0 - | otherwise = unCoin stakeYes % unCoin (totalStake <-> stakeAbstain <-> stakeAlwaysAbstain) - actual `shouldBe` expected - - -- This can be also expressed as: yes/(yes + no + not voted + noconfidence) - let expectedRephrased - | stakeYes <+> stakeNo <+> stakeNotVoted <+> stakeNoConfidence == Coin 0 = 0 - | otherwise = - unCoin stakeYes % unCoin (stakeYes <+> stakeNo <+> stakeNotVoted <+> stakeNoConfidence) - actual `shouldBe` expectedRephrased - - let actualNoConfidence = dRepAcceptedRatio @era ratifyEnv votes (NoConfidence SNothing) - -- For NoConfidence action, we count the `NoConfidence` votes as Yes - expectedNoConfidence - | totalStake == stakeAbstain <+> stakeAlwaysAbstain = 0 - | otherwise = - unCoin (stakeYes <+> stakeNoConfidence) - % unCoin (totalStake <-> stakeAbstain <-> stakeAlwaysAbstain) - actualNoConfidence `shouldBe` expectedNoConfidence - - let allExpiredDreps = - Map.fromList - [(cred, DRepState (EpochNo 9) SNothing mempty) | DRepCredential cred <- Map.keys distr] - actualAllExpired = - dRepAcceptedRatio @era - ( (emptyRatifyEnv @era) - { reDRepDistr = distr - , reDRepState = allExpiredDreps - , reCurrentEpoch = EpochNo 10 - } - ) - votes - InfoAction - actualAllExpired `shouldBe` 0 - - -- Expire half of the DReps and check that the ratio is the same as if only the active DReps exist - let (activeDreps, expiredDreps) = splitAt (length distr `div` 2) (Map.keys distr) - activeDrepsState = - Map.fromList - [(cred, DRepState (EpochNo 10) SNothing mempty) | DRepCredential cred <- activeDreps] - expiredDrepsState = - Map.fromList - [(cred, DRepState (EpochNo 3) SNothing mempty) | DRepCredential cred <- expiredDreps] - someExpiredDrepsState = activeDrepsState `Map.union` expiredDrepsState - - actualSomeExpired = - dRepAcceptedRatio @era - ( (emptyRatifyEnv @era) - { reDRepDistr = distr - , reDRepState = someExpiredDrepsState - , reCurrentEpoch = EpochNo 5 - } - ) - (votes `Map.union` Map.fromList [(cred, VoteYes) | DRepCredential cred <- expiredDreps]) - InfoAction - - actualSomeExpired - `shouldBe` dRepAcceptedRatio @era - ( (emptyRatifyEnv @era) - { reDRepDistr = distr - , reDRepState = activeDrepsState - , reCurrentEpoch = EpochNo 5 - } - ) - votes - InfoAction - -allAbstainProp :: forall era. Era era => Spec -allAbstainProp = - prop "If all votes are abstain, accepted ratio is zero" - $ forAll - ( genTestData @era - (Ratios {yes = 0, no = 0, abstain = 50 % 100, alwaysAbstain = 50 % 100, noConfidence = 0}) - ) - $ \drepTestData -> - activeDRepAcceptedRatio drepTestData `shouldBe` 0 - -noConfidenceProp :: forall era. Era era => Spec -noConfidenceProp = - prop "If all votes are no confidence, accepted ratio is zero" - $ forAll - ( genTestData @era - (Ratios {yes = 0, no = 0, abstain = 0, alwaysAbstain = 0, noConfidence = 100 % 100}) - ) - $ \drepTestData -> - activeDRepAcceptedRatio drepTestData `shouldBe` 0 - -noVotesProp :: forall era. Era era => Spec -noVotesProp = - prop "If there are no votes, accepted ratio is zero" - $ forAll - (genTestData @era (Ratios {yes = 0, no = 0, abstain = 0, alwaysAbstain = 0, noConfidence = 0})) - $ \drepTestData -> - activeDRepAcceptedRatio drepTestData `shouldBe` 0 - -allYesProp :: forall era. Era era => Spec -allYesProp = - prop "If all vote yes, accepted ratio is 1 (unless there is no stake) " - $ forAll - ( genTestData @era - (Ratios {yes = 100 % 100, no = 0, abstain = 0, alwaysAbstain = 0, noConfidence = 0}) - ) - $ \drepTestData -> - if totalStake drepTestData == Coin 0 - then activeDRepAcceptedRatio drepTestData `shouldBe` 0 - else activeDRepAcceptedRatio drepTestData `shouldBe` 1 - -noStakeProp :: - forall era. - ( Arbitrary (PParamsHKD StrictMaybe era) - , Arbitrary (PParamsHKD Identity era) - , ConwayEraPParams era - ) => - Spec -noStakeProp = - prop @((RatifyEnv era, RatifyState era, GovActionState era) -> IO ()) - "If there is no stake, accept iff threshold is zero" - ( \(env, st, gas) -> - dRepAccepted - @era - env {reDRepDistr = Map.empty} - st - gas - `shouldBe` votingDRepThreshold @era st (gasAction gas) - == SJust minBound - ) - -activeDRepAcceptedRatio :: forall era. TestData era -> Rational -activeDRepAcceptedRatio (TestData {..}) = - let activeDrepState = - -- non-expired dReps - Map.fromList - [(cred, DRepState (EpochNo 100) SNothing mempty) | DRepCredential cred <- Map.keys distr] - ratifyEnv = (emptyRatifyEnv @era) {reDRepDistr = distr, reDRepState = activeDrepState} - in dRepAcceptedRatio @era ratifyEnv votes InfoAction - -data TestData era = TestData - { distr :: Map (DRep (EraCrypto era)) (CompactForm Coin) - , votes :: Map (Credential 'DRepRole (EraCrypto era)) Vote - , totalStake :: Coin - , stakeYes :: Coin - , stakeNo :: Coin - , stakeAbstain :: Coin - , stakeAlwaysAbstain :: Coin - , stakeNoConfidence :: Coin - , stakeNotVoted :: Coin - } - deriving (Show) - -data Ratios = Ratios - { yes :: Rational - , no :: Rational - , abstain :: Rational - , alwaysAbstain :: Rational - , noConfidence :: Rational - } - deriving (Show) - --- Prepare the stake distribution and votes according to the given ratios. -genTestData :: - forall era. - Era era => - Ratios -> - Gen (TestData era) -genTestData Ratios {yes, no, abstain, alwaysAbstain, noConfidence} = do - let inDreps = listOf (DRepCredential <$> (arbitrary @(Credential 'DRepRole (EraCrypto era)))) - dreps <- inDreps - - let drepSize = length dreps - alwaysAbstainPct :: Word64 = pct alwaysAbstain - noConfidencePct :: Word64 = pct noConfidence - distr = - Map.alter - (\case _ -> Just (CompactCoin noConfidencePct)) - DRepAlwaysNoConfidence - . Map.alter - (\case _ -> Just (CompactCoin alwaysAbstainPct)) - DRepAlwaysAbstain - $ Map.fromList [(drep, CompactCoin 1) | drep <- dreps] - (drepsYes, drepsNo, drepsAbstain, rest) = splitByPct yes no abstain dreps - notVotedStake = length rest - votes = - Map.union - (Map.fromList [(cred, VoteYes) | DRepCredential cred <- drepsYes]) - $ Map.union - (Map.fromList [(cred, VoteNo) | DRepCredential cred <- drepsNo]) - (Map.fromList [(cred, Abstain) | DRepCredential cred <- drepsAbstain]) - pct :: Integral a => Rational -> a - pct r = ceiling (r * fromIntegral drepSize) - pure - TestData - { distr = distr - , votes = votes - , totalStake = fromCompact (fold distr) - , stakeYes = Coin (fromIntegral (length drepsYes)) - , stakeNo = Coin (fromIntegral (length drepsNo)) - , stakeAbstain = Coin (fromIntegral (length drepsAbstain)) - , stakeAlwaysAbstain = Coin (fromIntegral alwaysAbstainPct) - , stakeNoConfidence = Coin (fromIntegral noConfidencePct) - , stakeNotVoted = Coin (fromIntegral notVotedStake) - } - where - splitByPct :: Rational -> Rational -> Rational -> [a] -> ([a], [a], [a], [a]) - splitByPct x y z l = - let - size = fromIntegral $ length l - (xs, rest) = splitAt (ceiling (x * size)) l - (ys, rest') = splitAt (ceiling (y * size)) rest - (zs, rest'') = splitAt (ceiling (z * size)) rest' - in - (xs, ys, zs, rest'') - -genRatios :: Gen Ratios -genRatios = do - (a, b, c, d, e, _) <- genPctsOf100 - pure $ Ratios {yes = a, no = b, abstain = c, alwaysAbstain = d, noConfidence = e} - -genPctsOf100 :: Gen (Rational, Rational, Rational, Rational, Rational, Rational) -genPctsOf100 = do - a <- choose (0, 100) - b <- choose (0, 100) - c <- choose (0, 100) - d <- choose (0, 100) - e <- choose (0, 100) - f <- choose (0, 100) - let s = a + b + c + d + e + f - pure (a % s, b % s, c % s, d % s, e % s, f % s) - -emptyRatifyEnv :: forall era. RatifyEnv era -emptyRatifyEnv = - RatifyEnv Map.empty (PoolDistr Map.empty) Map.empty Map.empty (EpochNo 0) (CommitteeState Map.empty) diff --git a/eras/conway/impl/test/Test/Cardano/Ledger/Conway/GenesisSpec.hs b/eras/conway/impl/test/Test/Cardano/Ledger/Conway/GenesisSpec.hs deleted file mode 100644 index dbc90df3234..00000000000 --- a/eras/conway/impl/test/Test/Cardano/Ledger/Conway/GenesisSpec.hs +++ /dev/null @@ -1,141 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} - -module Test.Cardano.Ledger.Conway.GenesisSpec (spec) where - -import Cardano.Ledger.BaseTypes (textToUrl) -import Cardano.Ledger.CertState (DRep (..), DRepState (..)) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Conway -import Cardano.Ledger.Conway.Genesis (ConwayGenesis (..)) -import Cardano.Ledger.Conway.Governance (Anchor (..), Committee (..)) -import Cardano.Ledger.Conway.TxCert (Delegatee (..)) -import Cardano.Ledger.Core -import Cardano.Ledger.Credential -import Cardano.Ledger.Crypto (StandardCrypto) -import Cardano.Ledger.Keys -import Cardano.Ledger.Slot (EpochNo (..)) -import Data.Aeson hiding (Encoding) -import Data.Default.Class (Default (def)) -import qualified Data.ListMap as ListMap -import Data.Map as Map -import Data.Maybe (fromJust) -import Data.Maybe.Strict (StrictMaybe (..)) -import Data.Ratio ((%)) -import Paths_cardano_ledger_conway (getDataFileName) -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Core.Utils (unsafeBoundRational) -import Test.Cardano.Slotting.Numeric () - -spec :: Spec -spec = do - describe "Genesis Golden Spec" $ do - goldenConwayGenesisJSON - -goldenConwayGenesisJSON :: Spec -goldenConwayGenesisJSON = - it "should deserialize to the default value" $ do - let fileName = "test/data/conway-genesis.json" - credMember = - KeyHashObj - (KeyHash "4e88cc2d27c364aaf90648a87dfb95f8ee103ba67fa1f12f5e86c42a") :: - Credential 'ColdCommitteeRole StandardCrypto - scriptMember = - ScriptHashObj - (ScriptHash "4e88cc2d27c364aaf90648a87dfb95f8ee103ba67fa1f12f5e86c42a") :: - Credential 'ColdCommitteeRole StandardCrypto - comm = - Committee - ( Map.fromList - [ - ( credMember - , EpochNo 1 - ) - , - ( scriptMember - , EpochNo 2 - ) - ] - ) - (unsafeBoundRational (1 % 2)) :: - Committee Conway - file <- getDataFileName fileName - dec <- eitherDecodeFileStrict' file - cg <- case dec of - Left err -> error ("Failed to deserialize JSON: " ++ err) - Right x -> pure x - let - expectedCg = - def - { cgCommittee = comm - , cgInitialDReps = - ListMap.fromList - [ - ( KeyHashObj - (KeyHash "78301005df84ba67fa1f12f95f8ee10335bc5e86c42afbc593ab4cdd") - , DRepState - { drepExpiry = 1000 - , drepAnchor = SNothing - , drepDeposit = Coin 5000 - } - ) - , - ( ScriptHashObj - (ScriptHash "01305df84b078ac5e86c42afbc593ab4cdd67fa1f12f95f8ee10335b") - , DRepState - { drepExpiry = 300 - , drepAnchor = - SJust $ - Anchor - { anchorUrl = fromJust $ textToUrl 99 "example.com" - , anchorDataHash = def - } - , drepDeposit = Coin 6000 - } - ) - ] - , cgDelegs = - ListMap.fromList - [ - ( KeyHashObj - (KeyHash "35bc5e86c42afbc593ab4cdd78301005df84ba67fa1f12f95f8ee103") - , DelegVote DRepAlwaysNoConfidence - ) - , - ( KeyHashObj - (KeyHash "4e88cc2d27c364aaf90648a87dfb95f8ee103ba67fa1f12f5e86c42a") - , DelegVote DRepAlwaysAbstain - ) - , - ( KeyHashObj - (KeyHash "5df84bcdd7a5f8ee93aafbc500b435bc5e83067fa1f12f9110386c42") - , DelegStake $ KeyHash "0335bc5e86c42afbc578301005df84ba67fa1f12f95f8ee193ab4cdd" - ) - , - ( KeyHashObj - (KeyHash "8ee93a5df84bc42cdd7a5fafbc500b435bc5e83067fa1f12f9110386") - , DelegStakeVote - (KeyHash "086c42afbc578301005df84ba67fa1f12f95f8ee193ab4cdd335bc5e") - DRepAlwaysAbstain - ) - , - ( KeyHashObj - (KeyHash "df93ab435bc5eafbc500583067fa1f12f9110386c42cdd784ba5f8ee") - , DelegVote $ - DRepCredential - (ScriptHashObj (ScriptHash "01305df84b078ac5e86c42afbc593ab4cdd67fa1f12f95f8ee10335b")) - ) - , - ( ScriptHashObj - (ScriptHash "afbc5005df84ba5f8ee93ab435bc5e83067fa1f12f9c42cdd7110386") - , DelegVote $ - DRepCredential - (KeyHashObj (KeyHash "78301005df84ba67fa1f12f95f8ee10335bc5e86c42afbc593ab4cdd")) - ) - ] - } - cg `shouldBe` expectedCg diff --git a/eras/conway/impl/test/Test/Cardano/Ledger/Conway/GovActionReorderSpec.hs b/eras/conway/impl/test/Test/Cardano/Ledger/Conway/GovActionReorderSpec.hs deleted file mode 100644 index 65f2cb50192..00000000000 --- a/eras/conway/impl/test/Test/Cardano/Ledger/Conway/GovActionReorderSpec.hs +++ /dev/null @@ -1,37 +0,0 @@ -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Conway.GovActionReorderSpec (spec) where - -import Cardano.Ledger.Conway (Conway) -import Cardano.Ledger.Conway.Governance ( - GovActionState (..), - actionPriority, - gasAction, - reorderActions, - ) -import Data.Foldable (Foldable (..)) -import Data.List (sort) -import qualified Data.Sequence.Strict as Seq -import Test.Cardano.Ledger.Binary.Arbitrary () -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Conway.Arbitrary (ShuffledGovActionStates (..)) - -spec :: Spec -spec = - describe "Conway governance actions reordering" $ do - prop "preserves length when reordered" $ - \(actions :: Seq.StrictSeq (GovActionState Conway)) -> - Seq.length actions `shouldBe` Seq.length (reorderActions @Conway actions) - prop "sorts by priority" $ - \(actions :: Seq.StrictSeq (GovActionState Conway)) -> - sort (toList (actionPriority . gasAction @Conway <$> actions)) - `shouldBe` toList (actionPriority . gasAction <$> reorderActions actions) - prop "same priority actions are not rearranged" $ - \(a :: GovActionState Conway) (as :: Seq.StrictSeq (GovActionState Conway)) -> - let filterPrio b = actionPriority (gasAction a) == actionPriority (gasAction b) - in filter filterPrio (toList $ reorderActions @Conway (a Seq.:<| as)) - `shouldBe` filter filterPrio (toList $ reorderActions (a Seq.:<| as)) - prop "orders actions correctly with shuffles" $ - \(ShuffledGovActionStates gass shuffledGass :: ShuffledGovActionStates Conway) -> do - reorderActions (Seq.fromList gass) `shouldBe` reorderActions (Seq.fromList shuffledGass) diff --git a/eras/conway/impl/test/Test/Cardano/Ledger/Conway/Plutus/PlutusSpec.hs b/eras/conway/impl/test/Test/Cardano/Ledger/Conway/Plutus/PlutusSpec.hs deleted file mode 100644 index b523a3f0f2a..00000000000 --- a/eras/conway/impl/test/Test/Cardano/Ledger/Conway/Plutus/PlutusSpec.hs +++ /dev/null @@ -1,23 +0,0 @@ -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Conway.Plutus.PlutusSpec (spec) where - -import Cardano.Ledger.Babbage.PParams (CoinPerByte) -import Cardano.Ledger.Conway (ConwayEra) -import Cardano.Ledger.Conway.PParams (DRepVotingThresholds, PoolVotingThresholds) -import Cardano.Ledger.Core (PParamsUpdate) -import Cardano.Ledger.Crypto (StandardCrypto) -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Conway.Arbitrary () -import Test.Cardano.Ledger.Core.Arbitrary () -import Test.Cardano.Ledger.Plutus.ToPlutusData (roundTripPlutusDataSpec) - --- ================================ - -spec :: Spec -spec = do - describe "roundtrip ToPlutusData Conway instances" $ do - roundTripPlutusDataSpec @PoolVotingThresholds - roundTripPlutusDataSpec @DRepVotingThresholds - roundTripPlutusDataSpec @CoinPerByte - roundTripPlutusDataSpec @(PParamsUpdate (ConwayEra StandardCrypto)) diff --git a/eras/conway/impl/test/data/conway-genesis.json b/eras/conway/impl/test/data/conway-genesis.json deleted file mode 100644 index 031692a708c..00000000000 --- a/eras/conway/impl/test/data/conway-genesis.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "poolVotingThresholds": { - "committeeNormal": 0, - "committeeNoConfidence": 0, - "hardForkInitiation": 0, - "motionNoConfidence": 0, - "ppSecurityGroup": 0 - }, - "dRepVotingThresholds": { - "motionNoConfidence": 0, - "committeeNormal": 0, - "committeeNoConfidence": 0, - "updateToConstitution": 0, - "hardForkInitiation": 0, - "ppNetworkGroup": 0, - "ppEconomicGroup": 0, - "ppTechnicalGroup": 0, - "ppGovGroup": 0, - "treasuryWithdrawal": 0 - }, - "committeeMinSize": 0, - "committeeMaxTermLength": 0, - "govActionLifetime": 0, - "govActionDeposit": 0, - "dRepDeposit": 0, - "dRepActivity": 0, - "minFeeRefScriptCostPerByte": 0, - "constitution": { - "anchor": { - "url": "", - "dataHash": "0000000000000000000000000000000000000000000000000000000000000000" - } - }, - "committee": { - "members": { - "keyHash-4e88cc2d27c364aaf90648a87dfb95f8ee103ba67fa1f12f5e86c42a": 1, - "scriptHash-4e88cc2d27c364aaf90648a87dfb95f8ee103ba67fa1f12f5e86c42a": 2 - }, - "threshold": 0.5 - }, - "delegs": { - "keyHash-4e88cc2d27c364aaf90648a87dfb95f8ee103ba67fa1f12f5e86c42a": { - "dRep": "drep-alwaysAbstain" - }, - "keyHash-35bc5e86c42afbc593ab4cdd78301005df84ba67fa1f12f95f8ee103": { - "dRep": "drep-alwaysNoConfidence" - }, - "scriptHash-afbc5005df84ba5f8ee93ab435bc5e83067fa1f12f9c42cdd7110386": { - "dRep": "drep-keyHash-78301005df84ba67fa1f12f95f8ee10335bc5e86c42afbc593ab4cdd" - }, - "keyHash-df93ab435bc5eafbc500583067fa1f12f9110386c42cdd784ba5f8ee": { - "dRep": "drep-scriptHash-01305df84b078ac5e86c42afbc593ab4cdd67fa1f12f95f8ee10335b" - }, - "keyHash-5df84bcdd7a5f8ee93aafbc500b435bc5e83067fa1f12f9110386c42": { - "poolId": "0335bc5e86c42afbc578301005df84ba67fa1f12f95f8ee193ab4cdd" - }, - "keyHash-8ee93a5df84bc42cdd7a5fafbc500b435bc5e83067fa1f12f9110386": { - "poolId": "086c42afbc578301005df84ba67fa1f12f95f8ee193ab4cdd335bc5e", - "dRep": "drep-alwaysAbstain" - } - }, - "initialDReps": { - "keyHash-78301005df84ba67fa1f12f95f8ee10335bc5e86c42afbc593ab4cdd": { - "expiry": 1000, - "deposit": 5000 - }, - "scriptHash-01305df84b078ac5e86c42afbc593ab4cdd67fa1f12f95f8ee10335b": { - "expiry": 300, - "deposit": 6000, - "anchor": { - "url": "example.com", - "dataHash": "0000000000000000000000000000000000000000000000000000000000000000" - } - } - } -} diff --git a/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Arbitrary.hs b/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Arbitrary.hs deleted file mode 100644 index ce9679dba1d..00000000000 --- a/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Arbitrary.hs +++ /dev/null @@ -1,774 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE QuantifiedConstraints #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Conway.Arbitrary ( - genUpdateCommittee, - genNoConfidence, - genTreasuryWithdrawals, - genHardForkInitiation, - genParameterChange, - genNewConstitution, - govActionGenerators, - genConwayPlutusPurposePointer, - genGovAction, - genGovActionState, - genPParamUpdateGovAction, - genHardForkGovAction, - genCommitteeGovAction, - genConstitutionGovAction, - genProposals, - ProposalsNewActions (..), - ProposalsForEnactment (..), - ShuffledGovActionStates (..), -) where - -import Cardano.Ledger.Alonzo.Plutus.Evaluate (CollectError) -import Cardano.Ledger.BaseTypes (StrictMaybe (..)) -import Cardano.Ledger.Binary (Sized) -import Cardano.Ledger.Conway.Core -import Cardano.Ledger.Conway.Genesis (ConwayGenesis (..)) -import Cardano.Ledger.Conway.Governance -import Cardano.Ledger.Conway.PParams ( - ConwayPParams (..), - THKD (..), - UpgradeConwayPParams (..), - ) -import Cardano.Ledger.Conway.Rules -import Cardano.Ledger.Conway.Scripts (ConwayPlutusPurpose (..)) -import Cardano.Ledger.Conway.TxBody -import Cardano.Ledger.Conway.TxCert -import Cardano.Ledger.Conway.TxInfo (ConwayContextError) -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.HKD (HKD, NoUpdate (..)) -import Control.State.Transition.Extended (STS (Event)) -import Data.Default.Class (def) -import Data.Foldable (toList) -import Data.Functor.Identity (Identity) -import Data.List (nubBy) -import qualified Data.Map.Strict as Map -import qualified Data.Sequence as Seq -import qualified Data.Sequence.Strict as SSeq -import qualified Data.Set as Set -import Data.Word -import Generic.Random (genericArbitraryU) -import Lens.Micro -import Test.Cardano.Data (genNonEmptyMap) -import Test.Cardano.Data.Arbitrary () -import Test.Cardano.Ledger.Alonzo.Arbitrary ( - genValidAndUnknownCostModels, - unFlexibleCostModels, - ) -import Test.Cardano.Ledger.Babbage.Arbitrary () -import Test.Cardano.Ledger.Common - -instance - (Era era, Arbitrary (PParamsUpdate era)) => - Arbitrary (PulsingSnapshot era) - where - arbitrary = PulsingSnapshot <$> arbitrary <*> arbitrary <*> arbitrary - -instance - (Arbitrary (PParams era), Arbitrary (PParamsUpdate era), Era era) => - Arbitrary (DRepPulsingState era) - where - arbitrary = DRComplete <$> arbitrary <*> arbitrary - -instance - ( EraPParams era - , Arbitrary (PlutusPurpose AsItem era) - , Arbitrary (PlutusPurpose AsIx era) - , Arbitrary (TxCert era) - , Arbitrary (PParamsHKD StrictMaybe era) - ) => - Arbitrary (ConwayContextError era) - where - arbitrary = genericArbitraryU - -instance Crypto c => Arbitrary (ConwayGenesis c) where - arbitrary = - ConwayGenesis - <$> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - -instance Arbitrary (UpgradeConwayPParams Identity) where - arbitrary = - UpgradeConwayPParams - <$> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - -instance Crypto c => Arbitrary (Delegatee c) where - arbitrary = - oneof - [ DelegStake <$> arbitrary - , DelegVote <$> arbitrary - , DelegStakeVote <$> arbitrary <*> arbitrary - ] - -instance Crypto c => Arbitrary (ConwayDelegCert c) where - arbitrary = - oneof - [ ConwayRegCert <$> arbitrary <*> arbitrary - , ConwayUnRegCert <$> arbitrary <*> arbitrary - , ConwayDelegCert <$> arbitrary <*> arbitrary - , ConwayRegDelegCert <$> arbitrary <*> arbitrary <*> arbitrary - ] - -instance Era era => Arbitrary (ConwayTxCert era) where - arbitrary = - oneof - [ ConwayTxCertDeleg <$> arbitrary - , ConwayTxCertPool <$> arbitrary - , ConwayTxCertGov <$> arbitrary - ] - -instance Crypto c => Arbitrary (ConwayGovCert c) where - arbitrary = - oneof - [ ConwayRegDRep <$> arbitrary <*> arbitrary <*> arbitrary - , ConwayUnRegDRep <$> arbitrary <*> arbitrary - , ConwayAuthCommitteeHotKey <$> arbitrary <*> arbitrary - , ConwayResignCommitteeColdKey <$> arbitrary <*> arbitrary - ] - -instance - (EraPParams era, Arbitrary (PParams era), Arbitrary (PParamsHKD StrictMaybe era)) => - Arbitrary (ConwayGovState era) - where - arbitrary = - ConwayGovState - <$> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - -instance - (Era era, Arbitrary (PParams era), Arbitrary (PParamsUpdate era)) => - Arbitrary (RatifyState era) - where - arbitrary = - RatifyState - <$> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - -instance - (Era era, Arbitrary (PParams era), Arbitrary (PParamsUpdate era)) => - Arbitrary (RatifyEnv era) - where - arbitrary = - RatifyEnv - <$> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - -instance - (Era era, Arbitrary (PParams era), Arbitrary (PParamsUpdate era)) => - Arbitrary (EnactState era) - where - arbitrary = - EnactState - <$> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - -_uniqueIdGovActions :: - (Era era, Arbitrary (PParamsUpdate era)) => - Gen (SSeq.StrictSeq (GovActionState era)) -_uniqueIdGovActions = SSeq.fromList . nubBy (\x y -> gasId x == gasId y) <$> arbitrary - -instance - (forall p. Arbitrary (f (GovPurposeId (p :: GovActionPurpose) era))) => - Arbitrary (GovRelation f era) - where - arbitrary = GovRelation <$> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary - -data ProposalsForEnactment era - = ProposalsForEnactment - (Proposals era) - (Seq.Seq (GovActionState era)) - (Set.Set (GovActionId (EraCrypto era))) - deriving (Show, Eq) - -instance - (EraPParams era, Arbitrary (PParamsUpdate era), Arbitrary (PParamsHKD StrictMaybe era)) => - Arbitrary (ProposalsForEnactment era) - where - arbitrary = do - ps <- genProposals @era (2, 50) - pparamUpdates <- chooseLineage grPParamUpdateL ps Seq.Empty - hardForks <- chooseLineage grHardForkL ps Seq.Empty - committees <- chooseLineage grCommitteeL ps Seq.Empty - constitutions <- chooseLineage grConstitutionL ps Seq.Empty - sequencedGass <- - sequenceLineages - ( Seq.filter - (not . Seq.null) - (Seq.fromList [pparamUpdates, hardForks, committees, constitutions]) - ) - Seq.Empty - let expiredGais = - Set.fromList (toList $ proposalsIds ps) - `Set.difference` Set.fromList (gasId <$> toList sequencedGass) - pure $ ProposalsForEnactment ps sequencedGass expiredGais - where - chooseLineage :: - (forall f. Lens' (GovRelation f era) (f (GovPurposeId p era))) -> - Proposals era -> - Seq.Seq (GovActionState era) -> - Gen (Seq.Seq (GovActionState era)) - chooseLineage govRelL ps = \case - Seq.Empty -> - let children = ps ^. pRootsL . govRelL . prChildrenL - in if Set.null children - then pure Seq.Empty - else do - child <- elements $ toList children - chooseLineage govRelL ps (Seq.Empty Seq.:|> (proposalsActionsMap ps Map.! unGovPurposeId child)) - lineage@(_ Seq.:|> gas) -> - let children = ps ^. pGraphL . govRelL . pGraphNodesL . to (Map.! GovPurposeId (gasId gas)) . peChildrenL - in if Set.null children - then pure lineage - else do - child <- elements $ toList children - chooseLineage govRelL ps (lineage Seq.:|> (proposalsActionsMap ps Map.! unGovPurposeId child)) - consumeHeadAtIndex :: Int -> Seq.Seq (Seq.Seq a) -> (a, Seq.Seq (Seq.Seq a)) - consumeHeadAtIndex idx ss = (ss `Seq.index` idx `Seq.index` 0, Seq.adjust' (Seq.drop 1) idx ss) - sequenceLineages :: Seq.Seq (Seq.Seq a) -> Seq.Seq a -> Gen (Seq.Seq a) - sequenceLineages lineages sequenced = case lineages of - Seq.Empty -> pure sequenced - _ -> do - index <- chooseInt (0, length lineages - 1) - let (chosen, adjustedLineages) = consumeHeadAtIndex index lineages - sequenceLineages (Seq.filter (not . Seq.null) adjustedLineages) (sequenced Seq.:|> chosen) - -data ProposalsNewActions era = ProposalsNewActions (Proposals era) [GovActionState era] - deriving (Show, Eq) - -instance - (EraPParams era, Arbitrary (PParamsUpdate era), Arbitrary (PParamsHKD StrictMaybe era)) => - Arbitrary (ProposalsNewActions era) - where - arbitrary = do - ps <- arbitrary - i <- chooseInt (2, 20) - gass <- vectorOf i $ genGovActionState =<< genGovAction ps - pure $ ProposalsNewActions ps gass - -instance - (EraPParams era, Arbitrary (PParamsUpdate era), Arbitrary (PParamsHKD StrictMaybe era)) => - Arbitrary (Proposals era) - where - arbitrary = genProposals (0, 30) - -genProposals :: - forall era. - ( HasCallStack - , EraPParams era - , Arbitrary (PParamsHKD StrictMaybe era) - ) => - (Int, Int) -> - Gen (Proposals era) -genProposals range = do - pgais <- arbitrary - i <- chooseInt range - go (def & pRootsL .~ fromPrevGovActionIds pgais) i - where - go :: Proposals era -> Int -> Gen (Proposals era) - go ps n - | n <= 0 = pure ps - | otherwise = do - gas <- genGovActionState @era =<< genGovAction ps - case proposalsAddAction gas ps of - Nothing -> error "Error adding GovActionState to Proposals" - Just ps' -> go ps' (n - 1) - -genGovAction :: - forall era. - (Era era, Arbitrary (PParamsHKD StrictMaybe era)) => - Proposals era -> - Gen (GovAction era) -genGovAction ps = - oneof - [ genWithParent genPParamUpdateGovAction grPParamUpdateL - , genWithParent genHardForkGovAction grHardForkL - , genTreasuryWithdrawals - , genWithParent genCommitteeGovAction grCommitteeL - , genWithParent genConstitutionGovAction grConstitutionL - , pure InfoAction - ] - where - genWithParent :: - (StrictMaybe (GovPurposeId p era) -> Gen (GovAction era)) -> - (forall f. Lens' (GovRelation f era) (f (GovPurposeId p era))) -> - Gen (GovAction era) - genWithParent gen govRelL = - gen - =<< elements - ( (ps ^. pRootsL . govRelL . prRootL) - : fmap SJust (Map.keys $ ps ^. pGraphL . govRelL . pGraphNodesL) - ) - -genPParamUpdateGovAction :: - ( Era era - , Arbitrary (PParamsHKD StrictMaybe era) - ) => - StrictMaybe (GovPurposeId 'PParamUpdatePurpose era) -> - Gen (GovAction era) -genPParamUpdateGovAction parent = ParameterChange parent <$> arbitrary <*> arbitrary - -genHardForkGovAction :: - StrictMaybe (GovPurposeId 'HardForkPurpose era) -> - Gen (GovAction era) -genHardForkGovAction parent = HardForkInitiation parent <$> arbitrary - -genCommitteeGovAction :: - Era era => - StrictMaybe (GovPurposeId 'CommitteePurpose era) -> - Gen (GovAction era) -genCommitteeGovAction parent = - oneof - [ pure $ NoConfidence parent - , UpdateCommittee parent <$> arbitrary <*> arbitrary <*> arbitrary - ] - -genConstitutionGovAction :: - Era era => - StrictMaybe (GovPurposeId 'ConstitutionPurpose era) -> - Gen (GovAction era) -genConstitutionGovAction parent = NewConstitution parent <$> arbitrary - -genGovActionState :: Era era => GovAction era -> Gen (GovActionState era) -genGovActionState ga = - GovActionState - <$> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> (ProposalProcedure <$> arbitrary <*> arbitrary <*> pure ga <*> arbitrary) - <*> arbitrary - <*> arbitrary - -instance (Era era, Arbitrary (PParamsUpdate era)) => Arbitrary (GovActionState era) where - arbitrary = genGovActionState =<< arbitrary - --- | These lists of `GovActionStates` contain only one of a priority. --- In other words, no two `GovActionState`s in the list have the same `actionPriority`. -data ShuffledGovActionStates era - = ShuffledGovActionStates [GovActionState era] [GovActionState era] - deriving (Show) - -instance - (Era era, Arbitrary (PParamsUpdate era)) => - Arbitrary (ShuffledGovActionStates era) - where - arbitrary = do - gass <- traverse (genGovActionState =<<) govActionGenerators - shuffledGass <- shuffle gass - pure $ ShuffledGovActionStates gass shuffledGass - -genParameterChange :: (Era era, Arbitrary (PParamsUpdate era)) => Gen (GovAction era) -genParameterChange = ParameterChange <$> arbitrary <*> arbitrary <*> arbitrary - -genHardForkInitiation :: Era era => Gen (GovAction era) -genHardForkInitiation = HardForkInitiation <$> arbitrary <*> arbitrary - -genTreasuryWithdrawals :: Era era => Gen (GovAction era) -genTreasuryWithdrawals = TreasuryWithdrawals <$> arbitrary <*> arbitrary - -genNoConfidence :: Era era => Gen (GovAction era) -genNoConfidence = NoConfidence <$> arbitrary - -genUpdateCommittee :: Era era => Gen (GovAction era) -genUpdateCommittee = - UpdateCommittee - <$> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - -genNewConstitution :: Era era => Gen (GovAction era) -genNewConstitution = NewConstitution <$> arbitrary <*> arbitrary - -govActionGenerators :: - ( Era era - , Arbitrary (PParamsUpdate era) - ) => - [Gen (GovAction era)] -govActionGenerators = - [ genParameterChange - , genHardForkInitiation - , genTreasuryWithdrawals - , genNoConfidence - , genUpdateCommittee - , genNewConstitution - , pure InfoAction - ] - -instance (Era era, Arbitrary (PParamsUpdate era)) => Arbitrary (GovAction era) where - arbitrary = oneof govActionGenerators - -instance Era era => Arbitrary (Committee era) where - arbitrary = Committee <$> arbitrary <*> arbitrary - -instance Crypto c => Arbitrary (GovActionId c) where - arbitrary = GovActionId <$> arbitrary <*> arbitrary - -deriving instance Arbitrary GovActionIx - -deriving instance - forall (p :: GovActionPurpose) era. - Crypto (EraCrypto era) => - Arbitrary (GovPurposeId p era) - -instance Crypto c => Arbitrary (Voter c) where - arbitrary = - oneof - [ CommitteeVoter <$> arbitrary - , DRepVoter <$> arbitrary - , StakePoolVoter <$> arbitrary - ] - -instance Arbitrary Vote where - arbitrary = arbitraryBoundedEnum - -instance - ( ConwayEraTxBody era - , Arbitrary (Sized (TxOut era)) - , Arbitrary (TxOut era) - , Arbitrary (Value era) - , Arbitrary (Script era) - , Arbitrary (PParamsUpdate era) - ) => - Arbitrary (ConwayTxBody era) - where - arbitrary = - ConwayTxBody - <$> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> scale (`div` 15) arbitrary - <*> arbitrary - <*> scale (`div` 15) arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - -instance - ( Era era - , Arbitrary (TxCert era) - , Arbitrary (PParamsHKD StrictMaybe era) - ) => - Arbitrary (ConwayPlutusPurpose AsItem era) - where - arbitrary = - oneof - [ ConwaySpending <$> arbitrary - , ConwayMinting <$> arbitrary - , ConwayCertifying <$> arbitrary - , ConwayRewarding <$> arbitrary - , ConwayVoting <$> arbitrary - , ConwayProposing <$> arbitrary - ] - -instance - ( Era era - , Arbitrary (TxCert era) - , Arbitrary (PParamsHKD StrictMaybe era) - ) => - Arbitrary (ConwayPlutusPurpose AsIxItem era) - where - arbitrary = - oneof - [ ConwaySpending <$> arbitrary - , ConwayMinting <$> arbitrary - , ConwayCertifying <$> arbitrary - , ConwayRewarding <$> arbitrary - , ConwayVoting <$> arbitrary - , ConwayProposing <$> arbitrary - ] - -instance - Era era => - Arbitrary (ConwayPlutusPurpose AsIx era) - where - arbitrary = arbitrary >>= genConwayPlutusPurposePointer - -genConwayPlutusPurposePointer :: Word32 -> Gen (ConwayPlutusPurpose AsIx era) -genConwayPlutusPurposePointer i = - elements - [ ConwaySpending (AsIx i) - , ConwayMinting (AsIx i) - , ConwayCertifying (AsIx i) - , ConwayRewarding (AsIx i) - , ConwayVoting (AsIx i) - , ConwayProposing (AsIx i) - ] - ------------------------------------------------------------------------------------------- --- Cardano.Ledger.Conway.Rules ----------------------------------------------------------- ------------------------------------------------------------------------------------------- - --- GOV - -instance (Era era, Arbitrary (PParamsHKD Identity era)) => Arbitrary (GovEnv era) where - arbitrary = - GovEnv - <$> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - -instance Era era => Arbitrary (VotingProcedure era) where - arbitrary = VotingProcedure <$> arbitrary <*> arbitrary - -instance Era era => Arbitrary (VotingProcedures era) where - arbitrary = VotingProcedures <$> liftArbitrary (genNonEmptyMap arbitrary arbitrary) - -instance (Era era, Arbitrary (PParamsUpdate era)) => Arbitrary (ProposalProcedure era) where - arbitrary = - ProposalProcedure - <$> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - shrink (ProposalProcedure dep ret gov anch) = - [ ProposalProcedure dep' ret' gov' anch' - | (dep', ret', gov', anch') <- shrink (dep, ret, gov, anch) - ] - -instance (EraPParams era, Arbitrary (PParamsUpdate era)) => Arbitrary (GovProcedures era) where - arbitrary = - GovProcedures <$> arbitrary <*> arbitrary - shrink (GovProcedures vp pp) = [GovProcedures vp' pp' | (vp', pp') <- shrink (vp, pp)] - -instance - ( Era era - , Arbitrary (PParamsHKD StrictMaybe era) - ) => - Arbitrary (ConwayGovPredFailure era) - where - arbitrary = genericArbitraryU - -instance - ( Era era - , Arbitrary (CollectError era) - ) => - Arbitrary (ConwayUtxosPredFailure era) - where - arbitrary = genericArbitraryU - -instance - ( Era era - , Arbitrary (PredicateFailure (EraRule "UTXOW" era)) - , Arbitrary (PredicateFailure (EraRule "CERTS" era)) - , Arbitrary (PredicateFailure (EraRule "GOV" era)) - ) => - Arbitrary (ConwayLedgerPredFailure era) - where - arbitrary = genericArbitraryU - --- EPOCH - -instance - ( Era era - , Arbitrary (Event (EraRule "POOLREAP" era)) - , Arbitrary (Event (EraRule "SNAP" era)) - ) => - Arbitrary (ConwayEpochEvent era) - where - arbitrary = - oneof - [ PoolReapEvent <$> arbitrary - , SnapEvent <$> arbitrary - ] - --- NEWEPOCH - -instance - ( Era era - , Arbitrary (Event (EraRule "RUPD" era)) - ) => - Arbitrary (ConwayNewEpochEvent era) - where - arbitrary = - oneof - [ DeltaRewardEvent <$> arbitrary - , RestrainedRewards <$> arbitrary <*> arbitrary <*> arbitrary - ] - --- CERTS - -instance - ( Era era - , Arbitrary (PredicateFailure (EraRule "CERT" era)) - ) => - Arbitrary (ConwayCertsPredFailure era) - where - arbitrary = genericArbitraryU - --- CERT - -instance - ( Era era - , Arbitrary (PredicateFailure (EraRule "DELEG" era)) - , Arbitrary (PredicateFailure (EraRule "POOL" era)) - , Arbitrary (PredicateFailure (EraRule "GOVCERT" era)) - ) => - Arbitrary (ConwayCertPredFailure era) - where - arbitrary = genericArbitraryU - --- DELEG - -instance - Era era => - Arbitrary (ConwayDelegPredFailure era) - where - arbitrary = genericArbitraryU - --- GOVCERT - -instance Era era => Arbitrary (ConwayGovCertPredFailure era) where - arbitrary = genericArbitraryU - -instance Arbitrary (HKD f a) => Arbitrary (THKD t f a) where - arbitrary = THKD <$> arbitrary - -instance Era era => Arbitrary (ConwayPParams Identity era) where - arbitrary = - ConwayPParams - <$> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> (THKD . unFlexibleCostModels <$> arbitrary) - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - -instance Era era => Arbitrary (ConwayPParams StrictMaybe era) where - arbitrary = - ConwayPParams - <$> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> pure NoUpdate - <*> arbitrary - <*> arbitrary - <*> (THKD <$> oneof [SJust <$> genValidAndUnknownCostModels, pure SNothing]) - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - -instance Arbitrary PoolVotingThresholds where - arbitrary = - PoolVotingThresholds - <$> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - -instance Arbitrary DRepVotingThresholds where - arbitrary = - DRepVotingThresholds - <$> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - -instance Era era => Arbitrary (Constitution era) where - arbitrary = Constitution <$> arbitrary <*> arbitrary diff --git a/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Binary/Cddl.hs b/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Binary/Cddl.hs deleted file mode 100644 index 2f7fbc219fe..00000000000 --- a/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Binary/Cddl.hs +++ /dev/null @@ -1,18 +0,0 @@ -module Test.Cardano.Ledger.Conway.Binary.Cddl ( - readConwayCddlFileNames, - readConwayCddlFiles, -) where - -import qualified Data.ByteString.Lazy as BSL -import Paths_cardano_ledger_conway - -readConwayCddlFileNames :: IO [FilePath] -readConwayCddlFileNames = do - base <- getDataFileName "cddl-files/conway.cddl" - crypto <- getDataFileName "cddl-files/crypto.cddl" - extras <- getDataFileName "cddl-files/extra.cddl" - -- extras contains the types whose restrictions cannot be expressed in CDDL - pure [base, crypto, extras] - -readConwayCddlFiles :: IO [BSL.ByteString] -readConwayCddlFiles = mapM BSL.readFile =<< readConwayCddlFileNames diff --git a/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Binary/Regression.hs b/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Binary/Regression.hs deleted file mode 100644 index 3e0f5921751..00000000000 --- a/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Binary/Regression.hs +++ /dev/null @@ -1,147 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE NumericUnderscores #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Conway.Binary.Regression where - -import Cardano.Ledger.Alonzo.Rules (AlonzoUtxoPredFailure (..)) -import Cardano.Ledger.Babbage.Rules (BabbageUtxoPredFailure (..), BabbageUtxowPredFailure (..)) -import Cardano.Ledger.BaseTypes (Inject (..), StrictMaybe (..), TxIx (..)) -import Cardano.Ledger.Binary ( - EncCBOR (..), - decCBOR, - decodeFull, - decodeFullAnnotatorFromHexText, - mkVersion, - serialize, - ) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Conway (Conway) -import Cardano.Ledger.Conway.Core ( - BabbageEraTxBody (..), - EraTx (..), - EraTxBody (..), - EraTxOut (..), - EraTxWits (..), - coinTxOutL, - eraProtVerLow, - txIdTx, - ) -import Cardano.Ledger.Conway.Rules (ConwayLedgerPredFailure (..)) -import Cardano.Ledger.Plutus.Language (SLanguage (..), hashPlutusScript) -import Cardano.Ledger.TxIn (TxIn (..)) -import Control.Monad ((<=<)) -import qualified Data.Sequence.Strict as SSeq -import qualified Data.Set as Set -import Lens.Micro ((%~), (&), (.~)) -import Test.Cardano.Ledger.Conway.ImpTest -import Test.Cardano.Ledger.Core.KeyPair (mkScriptAddr) -import Test.Cardano.Ledger.Imp.Common -import Test.Cardano.Ledger.Plutus.Examples (guessTheNumber3) - -spec :: - forall era. - ( EraTx era - , NFData (Tx era) - ) => - Spec -spec = describe "Regression" $ do - it "DeserialiseFailure on resubmitting Conway Tx with invalid plutus script #4198" $ do - io . expectRightDeep_ $ - decodeFullAnnotatorFromHexText @(Tx era) (eraProtVerLow @era) "Unwitnessed Tx" decCBOR $ - mconcat - [ "84a700d9010282825820745f04573e7429be1404f9b936d208b81159f3fc4b300" - , "37b9d630187eec1875600825820745f04573e7429be1404f9b936d208b81159f3" - , "fc4b30037b9d630187eec18756020dd9010281825820745f04573e7429be1404f" - , "9b936d208b81159f3fc4b30037b9d630187eec1875601018282581d60fdfaa525" - , "1e9ed2186a52eeea05ac1d39834eeef09b3e41dc151577a01a001e848082581d6" - , "0fe920c980dbc1113a01db0156955479f3b91f6fb6a51bdc0c383c1b91a3b586d" - , "e61082581d60fe920c980dbc1113a01db0156955479f3b91f6fb6a51bdc0c383c" - , "1b91a001a65b0111a00041ed0021a0002bf350b5820878c73eb6ec7171b23396f" - , "71d7e5adee98b3f72cfc1c0662453ea724a4e27ad5a303d9010281581e581c010" - , "0003322323222235004007123500235300300149849848004800504d9010281d8" - , "799f182aff0581840000d8799f182aff820000f4f6" - ] - expectRightDeep_ $ - decodeFullAnnotatorFromHexText @(Tx era) (eraProtVerLow @era) "Witnessed Tx" decCBOR $ - mconcat - [ "84a700d9010282825820745f04573e7429be1404f9b936d208b81159f3fc4b300" - , "37b9d630187eec1875600825820745f04573e7429be1404f9b936d208b81159f3" - , "fc4b30037b9d630187eec18756020dd9010281825820745f04573e7429be1404f" - , "9b936d208b81159f3fc4b30037b9d630187eec1875601018282581d60fdfaa525" - , "1e9ed2186a52eeea05ac1d39834eeef09b3e41dc151577a01a001e848082581d6" - , "0fe920c980dbc1113a01db0156955479f3b91f6fb6a51bdc0c383c1b91a3b586d" - , "e61082581d60fe920c980dbc1113a01db0156955479f3b91f6fb6a51bdc0c383c" - , "1b91a001a65b0111a00041ed0021a0002bf350b5820878c73eb6ec7171b23396f" - , "71d7e5adee98b3f72cfc1c0662453ea724a4e27ad5a400d9010282825820119ca" - , "69d7aadd28f1e182176cbaa35f4e08d580b79ee749103f4106768594343584057" - , "de8c067f7b806001e94f740c9c96c51f884e264dd0b2d0cff501ad67f1d269b7a" - , "7af5adf92148f4a10855fe3b2090bc88f045603cfe14c8a5f3fed6c4008038258" - , "20468ed75ae68f72233e33b0a869ae5f00cfabe477f186184782e5a1994d189a9" - , "b58408395b8e91540804ce1860272ac72b4ecc682f567a33c33da8e835d736f1f" - , "c039ff86ee5aae0ac0e9c9d50506132e209f62a02fe04906b66a3392d48d4d627" - , "d0403d9010281581e581c01000033223232222350040071235002353003001498" - , "49848004800504d9010281d8799f182aff0581840000d8799f182aff820000f4f6" - ] - describe "ImpTest" $ - withImpState @Conway $ - it "InsufficientCollateral is not encoded with negative coin #4198" $ do - let lockedVal = inject $ Coin 100 - (_, collateralAddress) <- freshKeyAddr - (_, skp) <- freshKeyPair - let - plutusVersion = SPlutusV2 - scriptHash = hashPlutusScript $ guessTheNumber3 plutusVersion - lockScriptAddress = mkScriptAddr scriptHash skp - (_, collateralReturnAddr) <- freshKeyAddr - lockedTx <- - submitTxAnn @Conway "Script locked tx" $ - mkBasicTx mkBasicTxBody - & bodyTxL . outputsTxBodyL - .~ SSeq.fromList - [ mkBasicTxOut lockScriptAddress lockedVal - , mkBasicTxOut collateralAddress (inject $ Coin 1) - ] - & bodyTxL . collateralReturnTxBodyL - .~ SJust (mkBasicTxOut collateralReturnAddr . inject $ Coin 1) - let - modifyRootCoin = coinTxOutL .~ Coin 989482376 - modifyRootTxOut (x SSeq.:<| SSeq.Empty) = - modifyRootCoin x SSeq.:<| SSeq.Empty - modifyRootTxOut (x SSeq.:<| xs) = x SSeq.:<| modifyRootTxOut xs - modifyRootTxOut (xs SSeq.:|> x) = xs SSeq.:|> modifyRootCoin x - modifyRootTxOut SSeq.Empty = SSeq.Empty - breakCollaterals tx = - pure $ - tx - & bodyTxL . collateralReturnTxBodyL - .~ SJust (mkBasicTxOut collateralReturnAddr . inject $ Coin 1_000_000_000) - & bodyTxL . feeTxBodyL .~ Coin 178349 - & bodyTxL . outputsTxBodyL %~ modifyRootTxOut - & witsTxL . addrTxWitsL .~ mempty - res <- - impAnn "Consume the script locked output" $ - withPostFixup (updateAddrTxWits <=< breakCollaterals) $ do - trySubmitTx @Conway $ - mkBasicTx mkBasicTxBody - & bodyTxL . inputsTxBodyL .~ Set.singleton (TxIn (txIdTx lockedTx) $ TxIx 0) - pFailure <- impAnn "Expecting failure" $ expectLeftDeepExpr res - let - hasInsufficientCollateral - (ConwayUtxowFailure (UtxoFailure (AlonzoInBabbageUtxoPredFailure (InsufficientCollateral _ _)))) = True - hasInsufficientCollateral _ = False - impAnn "Fails with InsufficientCollateral" $ - pFailure `shouldSatisfyExpr` any hasInsufficientCollateral - let encoding = encCBOR pFailure - version <- mkVersion (11 :: Int) - let - bs = serialize version encoding - decoded = decodeFull version bs - impAnn "Expecting deserialization of predicate failure to succeed" $ - decoded `shouldBe` Right pFailure diff --git a/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Binary/RoundTrip.hs b/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Binary/RoundTrip.hs deleted file mode 100644 index 62ebe24f89b..00000000000 --- a/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Binary/RoundTrip.hs +++ /dev/null @@ -1,92 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Conway.Binary.RoundTrip ( - roundTripConwayCommonSpec, - roundTripConwayEraTypesSpec, -) where - -import Cardano.Ledger.BaseTypes (StrictMaybe) -import Cardano.Ledger.Compactible -import Cardano.Ledger.Conway (ConwayEra) -import Cardano.Ledger.Conway.Governance -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Shelley.LedgerState -import Test.Cardano.Ledger.Alonzo.Arbitrary (FlexibleCostModels (..)) -import Test.Cardano.Ledger.Alonzo.Binary.RoundTrip (roundTripAlonzoCommonSpec) -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Conway.Arbitrary () -import Test.Cardano.Ledger.Core.Binary.RoundTrip - -roundTripConwayCommonSpec :: - forall era. - ( EraTx era - , EraGov era - , StashedAVVMAddresses era ~ () - , Arbitrary (Tx era) - , Arbitrary (TxBody era) - , Arbitrary (TxOut era) - , Arbitrary (TxCert era) - , Arbitrary (TxWits era) - , Arbitrary (TxAuxData era) - , Arbitrary (Value era) - , Arbitrary (CompactForm (Value era)) - , Arbitrary (Script era) - , Arbitrary (GovState era) - , Arbitrary (PParams era) - , Arbitrary (PParamsUpdate era) - , Arbitrary (PParamsHKD StrictMaybe era) - , RuleListEra era - ) => - Spec -roundTripConwayCommonSpec = do - roundTripConwayEraTypesSpec @era - roundTripAlonzoCommonSpec @era - -roundTripConwayEraTypesSpec :: - forall era. - ( Arbitrary (PParams era) - , Arbitrary (PParamsUpdate era) - , Arbitrary (PParamsHKD StrictMaybe era) - , EraPParams era - ) => - Spec -roundTripConwayEraTypesSpec = do - describe "Conway Transaction Types" $ do - roundTripEraTypeSpec @era @GovAction - roundTripEraTypeSpec @era @VotingProcedure - roundTripEraTypeSpec @era @VotingProcedures - roundTripEraTypeSpec @era @ProposalProcedure - roundTripEraTypeSpec @era @Constitution - -- Conway adds ability to serialize unknown cost models, i.e. FlexibleCostModels - prop "CostModels" $ roundTripEraExpectation @era . unFlexibleCostModels - describe "Conway State Types" $ do - roundTripShareEraTypeSpec @era @EnactState - roundTripShareEraTypeSpec @era @GovActionState - roundTripShareEraTypeSpec @era @Proposals - roundTripShareEraTypeSpec @era @DRepPulsingState - roundTripShareEraTypeSpec @era @PulsingSnapshot - roundTripShareEraTypeSpec @era @RatifyState - -instance Crypto c => RuleListEra (ConwayEra c) where - type - EraRules (ConwayEra c) = - '[ "GOV" - , "UTXOS" - , "LEDGER" - , "CERTS" - , "CERT" - , "DELEG" - , "GOVCERT" - , "UTXOW" - , "UTXO" - , "LEDGERS" - , "POOL" - ] diff --git a/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Imp.hs b/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Imp.hs deleted file mode 100644 index ab0799db167..00000000000 --- a/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Imp.hs +++ /dev/null @@ -1,66 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} - -module Test.Cardano.Ledger.Conway.Imp (spec) where - -import Cardano.Ledger.Alonzo.Plutus.Context (EraPlutusContext (..)) -import Cardano.Ledger.Alonzo.Rules (AlonzoUtxosPredFailure) -import Cardano.Ledger.Babbage.Rules (BabbageUtxoPredFailure) -import Cardano.Ledger.Babbage.TxInfo (BabbageContextError) -import Cardano.Ledger.BaseTypes (Inject) -import Cardano.Ledger.Conway.Core -import Cardano.Ledger.Conway.Governance (ConwayGovState) -import Cardano.Ledger.Conway.Rules ( - ConwayEpochEvent, - ConwayGovCertPredFailure, - ConwayGovPredFailure, - ConwayNewEpochEvent, - ) -import Cardano.Ledger.Conway.TxInfo (ConwayContextError) -import Cardano.Ledger.Shelley.Rules (Event, ShelleyUtxowPredFailure (..)) -import Data.Typeable (Typeable) -import Test.Cardano.Ledger.Common -import qualified Test.Cardano.Ledger.Conway.Imp.EnactSpec as Enact -import qualified Test.Cardano.Ledger.Conway.Imp.EpochSpec as Epoch -import qualified Test.Cardano.Ledger.Conway.Imp.GovCertSpec as GovCert -import qualified Test.Cardano.Ledger.Conway.Imp.GovSpec as Gov -import qualified Test.Cardano.Ledger.Conway.Imp.RatifySpec as Ratify -import qualified Test.Cardano.Ledger.Conway.Imp.UtxoSpec as Utxo -import qualified Test.Cardano.Ledger.Conway.Imp.UtxosSpec as Utxos -import Test.Cardano.Ledger.Conway.ImpTest (ConwayEraImp, withImpState) - -spec :: - forall era. - ( ConwayEraImp era - , GovState era ~ ConwayGovState era - , InjectRuleFailure "LEDGER" ConwayGovPredFailure era - , Inject (BabbageContextError era) (ContextError era) - , Inject (ConwayContextError era) (ContextError era) - , InjectRuleFailure "LEDGER" BabbageUtxoPredFailure era - , InjectRuleFailure "LEDGER" AlonzoUtxosPredFailure era - , InjectRuleFailure "LEDGER" ShelleyUtxowPredFailure era - , InjectRuleFailure "LEDGER" ConwayGovCertPredFailure era - , NFData (Event (EraRule "ENACT" era)) - , ToExpr (Event (EraRule "ENACT" era)) - , Eq (Event (EraRule "ENACT" era)) - , Typeable (Event (EraRule "ENACT" era)) - , InjectRuleEvent "TICK" ConwayEpochEvent era - , Event (EraRule "EPOCH" era) ~ ConwayEpochEvent era - , Event (EraRule "NEWEPOCH" era) ~ ConwayNewEpochEvent era - ) => - Spec -spec = do - describe "ConwayImpSpec" $ withImpState @era $ do - Enact.spec @era - Epoch.spec @era - Gov.spec @era - GovCert.spec @era - Utxo.spec @era - Utxos.spec @era - Ratify.spec @era - GovCert.spec @era diff --git a/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Imp/EnactSpec.hs b/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Imp/EnactSpec.hs deleted file mode 100644 index 383aad647f7..00000000000 --- a/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Imp/EnactSpec.hs +++ /dev/null @@ -1,429 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE NumericUnderscores #-} -{-# LANGUAGE OverloadedLists #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TupleSections #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} - -module Test.Cardano.Ledger.Conway.Imp.EnactSpec (spec) where - -import Cardano.Ledger.Address -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.Coin -import Cardano.Ledger.Conway.Core -import Cardano.Ledger.Conway.Governance -import Cardano.Ledger.Conway.PParams -import Cardano.Ledger.Conway.Rules -import Cardano.Ledger.Credential -import Cardano.Ledger.Shelley.LedgerState -import Cardano.Ledger.Val (zero, (<->)) -import Control.Monad (forM) -import Control.State.Transition.Extended (STS (..)) -import Data.Default.Class (def) -import Data.Foldable (foldl', traverse_) -import qualified Data.List.NonEmpty as NE -import qualified Data.Map.Strict as Map -import Data.Ratio ((%)) -import qualified Data.Sequence as Seq -import Data.Word (Word64) -import Lens.Micro -import Test.Cardano.Ledger.Conway.ImpTest -import Test.Cardano.Ledger.Core.Rational -import Test.Cardano.Ledger.Imp.Common -import Type.Reflection (Typeable) - -spec :: - forall era. - ( ConwayEraImp era - , NFData (Event (EraRule "ENACT" era)) - , ToExpr (Event (EraRule "ENACT" era)) - , Eq (Event (EraRule "ENACT" era)) - , Typeable (Event (EraRule "ENACT" era)) - ) => - SpecWith (ImpTestState era) -spec = - describe "ENACT" $ do - treasuryWithdrawalsSpec - hardForkInitiationSpec - noConfidenceSpec - constitutionSpec - actionPrioritySpec - -treasuryWithdrawalsSpec :: - forall era. - ( ConwayEraImp era - , NFData (Event (EraRule "ENACT" era)) - , ToExpr (Event (EraRule "ENACT" era)) - , Eq (Event (EraRule "ENACT" era)) - , Typeable (Event (EraRule "ENACT" era)) - ) => - SpecWith (ImpTestState era) -treasuryWithdrawalsSpec = - describe "Treasury withdrawals" $ do - it "Modify EnactState as expected" $ do - rewardAcount1 <- registerRewardAccount - govActionId <- submitTreasuryWithdrawals [(rewardAcount1, Coin 666)] - gas <- getGovActionState govActionId - let govAction = gasAction gas - enactStateInit <- getEnactState - let signal = - EnactSignal - { esGovActionId = govActionId - , esGovAction = govAction - } - enactState = - enactStateInit - { ensTreasury = Coin 1000 - } - enactState' <- runImpRule @"ENACT" () enactState signal - ensWithdrawals enactState' `shouldBe` [(raCredential rewardAcount1, Coin 666)] - - rewardAcount2 <- registerRewardAccount - let withdrawals' = - [ (rewardAcount1, Coin 111) - , (rewardAcount2, Coin 222) - ] - govActionId' <- submitTreasuryWithdrawals withdrawals' - gas' <- getGovActionState govActionId' - let govAction' = gasAction gas' - let signal' = - EnactSignal - { esGovActionId = govActionId' - , esGovAction = govAction' - } - - enactState'' <- runImpRule @"ENACT" () enactState' signal' - - ensWithdrawals enactState'' - `shouldBe` [ (raCredential rewardAcount1, Coin 777) - , (raCredential rewardAcount2, Coin 222) - ] - ensTreasury enactState'' `shouldBe` Coin 1 - - it "Withdrawals exceeding treasury submitted in a single proposal" $ do - (drepC, committeeC, _) <- electBasicCommittee - modifyPParams $ ppGovActionLifetimeL .~ EpochInterval 5 - initialTreasury <- getTreasury - numWithdrawals <- choose (1, 10) - withdrawals <- genWithdrawalsExceeding initialTreasury numWithdrawals - - void $ enactTreasuryWithdrawals withdrawals drepC committeeC - checkNoWithdrawal initialTreasury withdrawals - - let sumRequested = foldMap snd withdrawals - - impAnn "Submit a treasury donation that can cover the withdrawals" $ do - let tx = - mkBasicTx mkBasicTxBody - & bodyTxL . treasuryDonationTxBodyL .~ (sumRequested <-> initialTreasury) - submitTx_ tx - passNEpochs 2 - getTreasury `shouldReturn` zero - sumRewardAccounts withdrawals `shouldReturn` sumRequested - - it "Withdrawals exceeding maxBound Word64 submitted in a single proposal" $ do - (drepC, committeeC, _) <- electBasicCommittee - modifyPParams $ ppGovActionLifetimeL .~ EpochInterval 5 - initialTreasury <- getTreasury - numWithdrawals <- choose (1, 10) - withdrawals <- genWithdrawalsExceeding (Coin (fromIntegral (maxBound :: Word64))) numWithdrawals - void $ enactTreasuryWithdrawals withdrawals drepC committeeC - checkNoWithdrawal initialTreasury withdrawals - - it "Withdrawals exceeding treasury submitted in several proposals within the same epoch" $ do - (drepC, committeeC, _) <- electBasicCommittee - modifyPParams $ ppGovActionLifetimeL .~ EpochInterval 5 - initialTreasury <- getTreasury - numWithdrawals <- choose (1, 10) - withdrawals <- genWithdrawalsExceeding initialTreasury numWithdrawals - - impAnn "submit in individual proposals in the same epoch" $ do - traverse_ - ( \w -> do - gaId <- submitTreasuryWithdrawals @era [w] - submitYesVote_ (DRepVoter drepC) gaId - submitYesVote_ (CommitteeVoter committeeC) gaId - ) - withdrawals - passNEpochs 2 - - let expectedTreasury = - foldl' - ( \acc (_, x) -> - if acc >= x - then acc <-> x - else acc - ) - initialTreasury - withdrawals - - getTreasury `shouldReturn` expectedTreasury - -- check that the sum of the rewards matches what was spent from the treasury - sumRewardAccounts withdrawals `shouldReturn` (initialTreasury <-> expectedTreasury) - where - getTreasury = getsNES (nesEsL . esAccountStateL . asTreasuryL) - sumRewardAccounts withdrawals = mconcat <$> traverse (getRewardAccountAmount . fst) withdrawals - genWithdrawalsExceeding (Coin val) n = do - vals <- genValuesExceeding val n - forM (Coin <$> vals) $ \coin -> (,coin) <$> registerRewardAccount - checkNoWithdrawal initialTreasury withdrawals = do - getTreasury `shouldReturn` initialTreasury - sumRewardAccounts withdrawals `shouldReturn` zero - genValuesExceeding val n = do - pcts <- replicateM (n - 1) $ choose (1, 100) - let tot = sum pcts - let amounts = map (\x -> ceiling ((x * val) % tot)) pcts - let minNeeded = max 0 (val - sum amounts + 1) - excess <- choose (minNeeded, val + 1) - pure $ excess : amounts - -hardForkInitiationSpec :: ConwayEraImp era => SpecWith (ImpTestState era) -hardForkInitiationSpec = - it "HardForkInitiation" $ do - (_, committeeMember, _) <- electBasicCommittee - modifyPParams $ \pp -> - pp - & ppDRepVotingThresholdsL - %~ ( \dvt -> - dvt - { dvtHardForkInitiation = 2 %! 3 - } - ) - & ppPoolVotingThresholdsL - %~ ( \pvt -> - pvt - { pvtHardForkInitiation = 2 %! 3 - } - ) - & ppGovActionLifetimeL - .~ EpochInterval 20 - _ <- setupPoolWithStake $ Coin 22_000_000 - (stakePoolId1, _, _) <- setupPoolWithStake $ Coin 22_000_000 - (stakePoolId2, _, _) <- setupPoolWithStake $ Coin 22_000_000 - (dRep1, _, _) <- setupSingleDRep 11_000_000 - (dRep2, _, _) <- setupSingleDRep 11_000_000 - curProtVer <- getsNES $ nesEsL . curPParamsEpochStateL . ppProtocolVersionL - nextMajorVersion <- succVersion $ pvMajor curProtVer - let nextProtVer = curProtVer {pvMajor = nextMajorVersion} - govActionId <- submitGovAction $ HardForkInitiation SNothing nextProtVer - submitYesVote_ (CommitteeVoter committeeMember) govActionId - submitYesVote_ (DRepVoter (KeyHashObj dRep1)) govActionId - submitYesVote_ (StakePoolVoter stakePoolId1) govActionId - passNEpochs 2 - getsNES (nesEsL . curPParamsEpochStateL . ppProtocolVersionL) `shouldReturn` curProtVer - submitYesVote_ (DRepVoter (KeyHashObj dRep2)) govActionId - passNEpochs 2 - getsNES (nesEsL . curPParamsEpochStateL . ppProtocolVersionL) `shouldReturn` curProtVer - submitYesVote_ (StakePoolVoter stakePoolId2) govActionId - passNEpochs 2 - getsNES (nesEsL . curPParamsEpochStateL . ppProtocolVersionL) `shouldReturn` nextProtVer - -noConfidenceSpec :: forall era. ConwayEraImp era => SpecWith (ImpTestState era) -noConfidenceSpec = - it "NoConfidence" $ do - modifyPParams $ \pp -> - pp - & ppDRepVotingThresholdsL . dvtCommitteeNoConfidenceL .~ 1 %! 2 - & ppPoolVotingThresholdsL . pvtCommitteeNoConfidenceL .~ 1 %! 2 - & ppCommitteeMaxTermLengthL .~ EpochInterval 200 - let - getCommittee = - getsNES $ - nesEsL . esLStateL . lsUTxOStateL . utxosGovStateL . committeeGovStateL - assertNoCommittee :: HasCallStack => ImpTestM era () - assertNoCommittee = - do - committee <- getCommittee - impAnn "There should not be a committee" $ committee `shouldBe` SNothing - assertNoCommittee - khCC <- freshKeyHash - (drep, _, _) <- setupSingleDRep 1_000_000 - let committeeMap = - Map.fromList - [ (KeyHashObj khCC, EpochNo 50) - ] - prevGaidCommittee@(GovPurposeId gaidCommittee) <- - electCommittee - SNothing - drep - mempty - committeeMap - (khSPO, _, _) <- setupPoolWithStake $ Coin 42_000_000 - logStakeDistr - submitYesVote_ (StakePoolVoter khSPO) gaidCommittee - replicateM_ 4 passEpoch - impAnn "Committee should be elected" $ do - committee <- getCommittee - committee `shouldBe` SJust (Committee committeeMap $ 1 %! 2) - pp <- getsNES $ nesEsL . curPParamsEpochStateL - returnAddr <- registerRewardAccount - gaidNoConf <- - submitProposal $ - ProposalProcedure - { pProcReturnAddr = returnAddr - , pProcGovAction = NoConfidence (SJust prevGaidCommittee) - , pProcDeposit = pp ^. ppGovActionDepositL - , pProcAnchor = def - } - submitYesVote_ (StakePoolVoter khSPO) gaidNoConf - submitYesVote_ (DRepVoter $ KeyHashObj drep) gaidNoConf - replicateM_ 4 passEpoch - assertNoCommittee - -constitutionSpec :: ConwayEraImp era => SpecWith (ImpTestState era) -constitutionSpec = - it "Constitution" $ do - (dRep, committeeMember, _) <- electBasicCommittee - (govActionId, constitution) <- submitConstitution SNothing - - proposalsBeforeVotes <- getsNES $ newEpochStateGovStateL . proposalsGovStateL - pulserBeforeVotes <- getsNES newEpochStateDRepPulsingStateL - - submitYesVote_ (DRepVoter dRep) govActionId - submitYesVote_ (CommitteeVoter committeeMember) govActionId - - proposalsAfterVotes <- getsNES $ newEpochStateGovStateL . proposalsGovStateL - pulserAfterVotes <- getsNES newEpochStateDRepPulsingStateL - - impAnn "Votes are recorded in the proposals" $ do - let proposalsWithVotes = - proposalsAddVote - (CommitteeVoter committeeMember) - VoteYes - govActionId - ( proposalsAddVote - (DRepVoter dRep) - VoteYes - govActionId - proposalsBeforeVotes - ) - proposalsAfterVotes `shouldBe` proposalsWithVotes - - impAnn "Pulser has not changed" $ - pulserAfterVotes `shouldBe` pulserBeforeVotes - - passEpoch - - impAnn "New constitution is not enacted after one epoch" $ do - constitutionAfterOneEpoch <- getsNES $ newEpochStateGovStateL . constitutionGovStateL - constitutionAfterOneEpoch `shouldBe` def - - impAnn "Pulser should reflect the constitution to be enacted" $ do - pulser <- getsNES newEpochStateDRepPulsingStateL - let ratifyState = extractDRepPulsingState pulser - gasId <$> rsEnacted ratifyState `shouldBe` govActionId Seq.:<| Seq.Empty - rsEnactState ratifyState ^. ensConstitutionL `shouldBe` constitution - - passEpoch - - impAnn "Constitution is enacted after two epochs" $ do - curConstitution <- getsNES $ newEpochStateGovStateL . constitutionGovStateL - curConstitution `shouldBe` constitution - - impAnn "Pulser is reset" $ do - pulser <- getsNES newEpochStateDRepPulsingStateL - let pulserRatifyState = extractDRepPulsingState pulser - rsEnacted pulserRatifyState `shouldBe` Seq.empty - enactState <- getEnactState - rsEnactState pulserRatifyState `shouldBe` enactState - -actionPrioritySpec :: - forall era. - ConwayEraImp era => - SpecWith (ImpTestState era) -actionPrioritySpec = - describe "Competing proposals ratified in the same epoch" $ do - it - "higher action priority wins" - $ do - (drepC, _, gpi) <- electBasicCommittee - (poolKH, _, _) <- setupPoolWithStake $ Coin 1_000_000 - modifyPParams $ ppGovActionLifetimeL .~ EpochInterval 5 - cc <- KeyHashObj <$> freshKeyHash - gai1 <- - submitGovAction $ - UpdateCommittee (SJust gpi) mempty (Map.singleton cc (EpochNo 30)) $ - 1 %! 2 - -- gai2 is the first action of a higher priority - gai2 <- submitGovAction $ NoConfidence $ SJust gpi - gai3 <- submitGovAction $ NoConfidence $ SJust gpi - traverse_ @[] - ( \gaid -> do - submitYesVote_ (DRepVoter drepC) gaid - submitYesVote_ (StakePoolVoter poolKH) gaid - ) - [gai1, gai2, gai3] - passNEpochs 2 - getLastEnactedCommittee - `shouldReturn` SJust (GovPurposeId gai2) - expectNoCurrentProposals - - committee <- - getsNES $ - nesEsL . esLStateL . lsUTxOStateL . utxosGovStateL . committeeGovStateL - committee `shouldBe` SNothing - - let val1 = Coin 1_000_001 - let val2 = Coin 1_000_002 - let val3 = Coin 1_000_003 - - it "proposals of same priority are enacted in order of submission" $ do - (drepC, committeeC, _) <- electBasicCommittee - modifyPParams $ ppGovActionLifetimeL .~ EpochInterval 5 - pGai0 <- - submitParameterChange - SNothing - $ def & ppuDRepDepositL .~ SJust val1 - pGai1 <- - submitParameterChange - (SJust $ GovPurposeId pGai0) - $ def & ppuDRepDepositL .~ SJust val2 - pGai2 <- - submitParameterChange - (SJust $ GovPurposeId pGai1) - $ def & ppuDRepDepositL .~ SJust val3 - traverse_ @[] - ( \gaid -> do - submitYesVote_ (DRepVoter drepC) gaid - submitYesVote_ (CommitteeVoter committeeC) gaid - ) - [pGai0, pGai1, pGai2] - passNEpochs 2 - getLastEnactedParameterChange - `shouldReturn` SJust (GovPurposeId pGai2) - expectNoCurrentProposals - getsNES (nesEsL . curPParamsEpochStateL . ppDRepDepositL) - `shouldReturn` val3 - - it "only the first action of a transaction gets enacted" $ do - (drepC, committeeC, _) <- electBasicCommittee - modifyPParams $ ppGovActionLifetimeL .~ EpochInterval 5 - gaids <- - submitGovActions $ - NE.fromList - [ ParameterChange - SNothing - (def & ppuDRepDepositL .~ SJust val1) - SNothing - , ParameterChange - SNothing - (def & ppuDRepDepositL .~ SJust val2) - SNothing - , ParameterChange - SNothing - (def & ppuDRepDepositL .~ SJust val3) - SNothing - ] - traverse_ - ( \gaid -> do - submitYesVote_ (DRepVoter drepC) gaid - submitYesVote_ (CommitteeVoter committeeC) gaid - ) - gaids - passNEpochs 2 - getsNES (nesEsL . curPParamsEpochStateL . ppDRepDepositL) - `shouldReturn` val1 - expectNoCurrentProposals diff --git a/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Imp/EpochSpec.hs b/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Imp/EpochSpec.hs deleted file mode 100644 index 578d250d1c3..00000000000 --- a/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Imp/EpochSpec.hs +++ /dev/null @@ -1,389 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE NumericUnderscores #-} -{-# LANGUAGE OverloadedLists #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} - -module Test.Cardano.Ledger.Conway.Imp.EpochSpec (spec) where - -import Cardano.Ledger.Address (RewardAccount (..)) -import Cardano.Ledger.BaseTypes (EpochInterval (..), EpochNo (..), textToUrl) -import Cardano.Ledger.Coin -import Cardano.Ledger.Conway.Core -import Cardano.Ledger.Conway.Governance -import Cardano.Ledger.Conway.Rules (ConwayEpochEvent (GovInfoEvent), ConwayNewEpochEvent (..)) -import Cardano.Ledger.Credential (Credential (..)) -import Cardano.Ledger.Shelley.LedgerState ( - asTreasuryL, - curPParamsEpochStateL, - epochStateGovStateL, - esAccountStateL, - nesEpochStateL, - nesEsL, - ) -import Cardano.Ledger.Shelley.Rules (Event, ShelleyTickEvent (..)) -import Cardano.Ledger.Val -import Control.Monad.Writer (listen) -import Data.Data (cast) -import Data.Default.Class (Default (..)) -import qualified Data.List.NonEmpty as NE -import qualified Data.Map.Strict as Map -import Data.Maybe (fromJust) -import Data.Maybe.Strict (StrictMaybe (..)) -import qualified Data.Sequence.Strict as SSeq -import qualified Data.Set as Set -import Data.Tree -import Lens.Micro ((&), (.~)) -import Test.Cardano.Ledger.Conway.ImpTest -import Test.Cardano.Ledger.Core.Rational (IsRatio (..)) -import Test.Cardano.Ledger.Imp.Common - -spec :: - forall era. - ( ConwayEraImp era - , InjectRuleEvent "TICK" ConwayEpochEvent era - , Event (EraRule "EPOCH" era) ~ ConwayEpochEvent era - , Event (EraRule "NEWEPOCH" era) ~ ConwayNewEpochEvent era - ) => - SpecWith (ImpTestState era) -spec = - describe "EPOCH" $ do - proposalsSpec - dRepSpec - treasurySpec - eventsSpec - -proposalsSpec :: - forall era. - ConwayEraImp era => - SpecWith (ImpTestState era) -proposalsSpec = - describe "Proposals" $ do - it "Proposals survive multiple epochs without any activity" $ do - -- + 2 epochs to pass to get the desired effect - modifyPParams $ ppGovActionLifetimeL .~ EpochInterval 4 - _tree <- - submitConstitutionGovActionTree SNothing $ - Node - () - [ Node - () - [ Node () [] - , Node () [] - ] - , Node () [] - ] - - forest <- getProposals - passNEpochs 5 - forest' <- getProposals - forest' `shouldBe` forest - passEpoch - forest'' <- getProposals - forest'' `shouldBe` def - it "Expired proposal deposit refunded" $ do - let deposit = Coin 999 - modifyPParams $ \pp -> - pp - & ppGovActionLifetimeL .~ EpochInterval 1 - & ppGovActionDepositL .~ deposit - rewardAccount <- registerRewardAccount - - getRewardAccountAmount rewardAccount `shouldReturn` Coin 0 - - policy <- - getsNES $ - nesEpochStateL . epochStateGovStateL . constitutionGovStateL . constitutionScriptL - govActionId <- - submitProposal $ - ProposalProcedure - { pProcDeposit = deposit - , pProcReturnAddr = rewardAccount - , pProcGovAction = TreasuryWithdrawals [(rewardAccount, Coin 123_456_789)] policy - , pProcAnchor = def - } - expectPresentGovActionId govActionId - passEpoch - passEpoch - passEpoch - expectMissingGovActionId govActionId - - getRewardAccountAmount rewardAccount `shouldReturn` deposit - -dRepSpec :: - forall era. - ConwayEraImp era => - SpecWith (ImpTestState era) -dRepSpec = - describe "DRep" $ do - it "is updated based on to number of dormant epochs" $ do - modifyPParams $ ppGovActionLifetimeL .~ EpochInterval 2 - (drep, _, _) <- setupSingleDRep 1_000_000 - - expectNumDormantEpochs 0 - - -- epoch 0 - _ <- submitConstitution SNothing - expectCurrentProposals - expectNoPulserProposals - expectNumDormantEpochs 0 - expectExtraDRepExpiry drep 0 - - passEpoch - -- epoch 1 - expectCurrentProposals - expectPulserProposals - expectNumDormantEpochs 1 - expectExtraDRepExpiry drep 0 - - passEpoch - -- epoch 2 - expectCurrentProposals - expectPulserProposals - expectNumDormantEpochs 1 - expectExtraDRepExpiry drep 0 - - passEpoch - -- epoch 3 - expectCurrentProposals - expectPulserProposals - expectNumDormantEpochs 1 - expectExtraDRepExpiry drep 0 - - passEpoch - -- epoch 4, proposals expired - expectNoCurrentProposals - expectNoPulserProposals - expectNumDormantEpochs 1 - expectExtraDRepExpiry drep 0 - - passEpoch - -- epoch 5 - expectNoCurrentProposals - expectNoPulserProposals - expectNumDormantEpochs 2 - expectExtraDRepExpiry drep 0 - - _ <- submitConstitution SNothing - -- number of dormant epochs is added to the drep expiry and the reset - expectNumDormantEpochs 0 - expectExtraDRepExpiry drep 2 - - passEpoch - -- epoch 6 - expectCurrentProposals - expectPulserProposals - expectNumDormantEpochs 1 - expectExtraDRepExpiry drep 2 - it "DRep registration should succeed" $ do - logEntry "Stake distribution before DRep registration:" - logStakeDistr - _ <- registerDRep - logEntry "Stake distribution after DRep registration:" - logStakeDistr - passEpoch - -treasurySpec :: - forall era. - ConwayEraImp era => - SpecWith (ImpTestState era) -treasurySpec = - describe "Treasury" $ do - it "constitution is accepted after two epochs" $ do - constitutionHash <- freshSafeHash - let - constitutionAction = - NewConstitution - SNothing - ( Constitution - ( Anchor - (fromJust $ textToUrl 64 "constitution.0") - constitutionHash - ) - SNothing - ) - -- Submit NewConstitution proposal two epoch too early to check that the action - -- doesn't expire prematurely (ppGovActionLifetimeL is set to two epochs) - logEntry "Submitting new constitution" - gaidConstitutionProp <- submitGovAction constitutionAction - - (dRepCred, committeeHotCred, _) <- electBasicCommittee - - logRatificationChecks gaidConstitutionProp - do - isAccepted <- isDRepAccepted gaidConstitutionProp - assertBool "Gov action should not be accepted" $ not isAccepted - submitYesVote_ (DRepVoter dRepCred) gaidConstitutionProp - submitYesVote_ (CommitteeVoter committeeHotCred) gaidConstitutionProp - logAcceptedRatio gaidConstitutionProp - do - isAccepted <- isDRepAccepted gaidConstitutionProp - assertBool "Gov action should be accepted" isAccepted - - passEpoch - do - isAccepted <- isDRepAccepted gaidConstitutionProp - assertBool "Gov action should be accepted" isAccepted - logAcceptedRatio gaidConstitutionProp - logRatificationChecks gaidConstitutionProp - constitutionShouldBe "" - - passEpoch - constitutionShouldBe "constitution.0" - - it "TreasuryWithdrawal" $ do - treasuryWithdrawalExpectation [] - - it "TreasuryWithdrawalExtra" $ do - rewardAccount <- registerRewardAccount - rewardAccountOther <- registerRewardAccount - govPolicy <- getGovPolicy - treasuryWithdrawalExpectation - [ TreasuryWithdrawals (Map.singleton rewardAccount (Coin 667)) govPolicy - , TreasuryWithdrawals (Map.singleton rewardAccountOther (Coin 668)) govPolicy - ] - - it - "deposit is moved to treasury when the reward address is not registered" - depositMovesToTreasuryWhenStakingAddressUnregisters - -treasuryWithdrawalExpectation :: - forall era. - ConwayEraImp era => - [GovAction era] -> - ImpTestM era () -treasuryWithdrawalExpectation extraWithdrawals = do - (dRepCred, committeeHotCred, _) <- electBasicCommittee - treasuryStart <- getsNES $ nesEsL . esAccountStateL . asTreasuryL - rewardAccount <- registerRewardAccount - govPolicy <- getGovPolicy - let withdrawalAmount = Coin 666 - (govActionId NE.:| _) <- - submitGovActions $ - TreasuryWithdrawals (Map.singleton rewardAccount withdrawalAmount) govPolicy - NE.:| extraWithdrawals - submitYesVote_ (DRepVoter dRepCred) govActionId - submitYesVote_ (CommitteeVoter committeeHotCred) govActionId - passEpoch -- 1st epoch crossing starts DRep pulser - impAnn "Withdrawal should not be received yet" $ - lookupReward (raCredential rewardAccount) `shouldReturn` mempty - passEpoch -- 2nd epoch crossing enacts all the ratified actions - treasuryEnd <- getsNES $ nesEsL . esAccountStateL . asTreasuryL - impAnn "Withdrawal deducted from treasury" $ - treasuryStart <-> treasuryEnd `shouldBe` withdrawalAmount - impAnn "Withdrawal received by reward account" $ - lookupReward (raCredential rewardAccount) `shouldReturn` withdrawalAmount - expectMissingGovActionId govActionId - -depositMovesToTreasuryWhenStakingAddressUnregisters :: ConwayEraImp era => ImpTestM era () -depositMovesToTreasuryWhenStakingAddressUnregisters = do - initialTreasury <- getsNES $ nesEsL . esAccountStateL . asTreasuryL - modifyPParams $ \pp -> - pp - & ppGovActionLifetimeL .~ EpochInterval 8 - & ppGovActionDepositL .~ Coin 100 - returnAddr <- registerRewardAccount - govActionDeposit <- getsNES $ nesEsL . curPParamsEpochStateL . ppGovActionDepositL - khCC <- KeyHashObj <$> freshKeyHash - committeeActionId <- - submitProposal - ProposalProcedure - { pProcReturnAddr = returnAddr - , pProcGovAction = - UpdateCommittee - SNothing - mempty - (Map.singleton khCC $ EpochNo 10) - (1 %! 2) - , pProcDeposit = govActionDeposit - , pProcAnchor = def - } - expectPresentGovActionId committeeActionId - replicateM_ 5 passEpoch - expectTreasury initialTreasury - expectRegisteredRewardAddress returnAddr - submitTx_ $ - mkBasicTx mkBasicTxBody - & bodyTxL . certsTxBodyL - .~ SSeq.singleton - (UnRegTxCert $ raCredential returnAddr) - expectNotRegisteredRewardAddress returnAddr - replicateM_ 5 passEpoch - expectMissingGovActionId committeeActionId - expectTreasury $ initialTreasury <> govActionDeposit - -eventsSpec :: - forall era. - ( ConwayEraImp era - , InjectRuleEvent "TICK" ConwayEpochEvent era - , Event (EraRule "NEWEPOCH" era) ~ ConwayNewEpochEvent era - , Event (EraRule "EPOCH" era) ~ ConwayEpochEvent era - ) => - SpecWith (ImpTestState era) -eventsSpec = describe "Events" $ do - describe "emits event" $ do - it "GovInfoEvent" $ do - (drepCred, ccCred, _) <- electBasicCommittee - let actionLifetime = 10 - modifyPParams $ \pp -> - pp - & ppGovActionLifetimeL .~ EpochInterval actionLifetime - & ppDRepVotingThresholdsL .~ def {dvtPPEconomicGroup = 1 %! 2} - propDeposit <- getsNES $ nesEsL . curPParamsEpochStateL . ppGovActionDepositL - let - proposeCostModel = do - newTau <- arbitrary - submitParameterChange SNothing $ def & ppuTauL .~ SJust newTau - proposalA <- impAnn "proposalA" proposeCostModel - proposalB <- impAnn "proposalB" proposeCostModel - rewardAccount@(RewardAccount _ rewardCred) <- registerRewardAccount - proposalC <- impAnn "proposalC" $ do - newTau <- arbitrary - submitProposal - ProposalProcedure - { pProcReturnAddr = rewardAccount - , pProcGovAction = - ParameterChange - SNothing - (def & ppuTauL .~ SJust newTau) - SNothing - , pProcDeposit = propDeposit - , pProcAnchor = def - } - let - isGovInfoEvent (SomeSTSEvent ev) - | Just (TickNewEpochEvent (EpochEvent (GovInfoEvent {})) :: ShelleyTickEvent era) <- cast ev = True - isGovInfoEvent _ = False - passEpochWithNoDroppedActions = do - (_, evs) <- listen passEpoch - filter isGovInfoEvent evs - `shouldBeExpr` [ SomeSTSEvent @era @"TICK" . injectEvent $ - GovInfoEvent mempty mempty mempty - ] - replicateM_ (fromIntegral actionLifetime) passEpochWithNoDroppedActions - logAcceptedRatio proposalA - submitYesVote_ (DRepVoter drepCred) proposalA - submitYesVote_ (CommitteeVoter ccCred) proposalA - gasA <- getGovActionState proposalA - gasB <- getGovActionState proposalB - gasC <- getGovActionState proposalC - submitTx_ $ - mkBasicTx mkBasicTxBody - & bodyTxL . certsTxBodyL - .~ SSeq.singleton (UnRegTxCert rewardCred) - passEpochWithNoDroppedActions - (_, evs) <- listen passEpoch - let - filteredEvs = filter isGovInfoEvent evs - filteredEvs - `shouldBeExpr` [ SomeSTSEvent @era @"TICK" . injectEvent $ - GovInfoEvent - (Set.singleton gasA) - (Set.fromList [gasB, gasC]) - (Set.singleton proposalC) - ] diff --git a/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Imp/GovCertSpec.hs b/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Imp/GovCertSpec.hs deleted file mode 100644 index c5e3a2c039d..00000000000 --- a/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Imp/GovCertSpec.hs +++ /dev/null @@ -1,237 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} - -module Test.Cardano.Ledger.Conway.Imp.GovCertSpec (spec) where - -import Cardano.Ledger.BaseTypes (EpochInterval (..), EpochNo (..)) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Conway.Core ( - EraGov (..), - InjectRuleFailure (..), - ppCommitteeMaxTermLengthL, - ppDRepDepositL, - ) -import Cardano.Ledger.Conway.Governance ( - ConwayEraGov (..), - ConwayGovState, - GovAction (..), - GovPurposeId (..), - Voter (..), - committeeMembers, - committeeMembersL, - ) -import Cardano.Ledger.Conway.Rules (ConwayGovCertPredFailure (..)) -import Cardano.Ledger.Conway.TxCert ( - pattern AuthCommitteeHotKeyTxCert, - pattern RegDRepTxCert, - pattern ResignCommitteeColdTxCert, - pattern UnRegDRepTxCert, - ) -import Cardano.Ledger.Core (Era (..), EraTx (..), EraTxBody (..)) -import Cardano.Ledger.Credential (Credential (..)) -import Cardano.Ledger.Keys (KeyRole (..)) -import Cardano.Ledger.Shelley.LedgerState ( - curPParamsEpochStateL, - esLStateL, - lsUTxOStateL, - nesEsL, - utxosGovStateL, - ) -import Cardano.Ledger.Val (Val (..)) -import qualified Data.Map.Strict as Map -import Data.Maybe.Strict (StrictMaybe (..)) -import qualified Data.Sequence.Strict as SSeq -import qualified Data.Set as Set -import Lens.Micro ((&), (.~), (^.)) -import Test.Cardano.Ledger.Common hiding (assertBool, shouldBe) -import Test.Cardano.Ledger.Conway.Arbitrary () -import Test.Cardano.Ledger.Conway.ImpTest -import Test.Cardano.Ledger.Core.Rational (IsRatio (..)) -import Test.Cardano.Ledger.Imp.Common - -electCommittee1 :: ConwayEraImp era => ImpTestM era (Credential 'ColdCommitteeRole (EraCrypto era)) -electCommittee1 = do - modifyPParams $ ppCommitteeMaxTermLengthL .~ EpochInterval 100 - drep <- registerDRep - EpochInterval ccTerm <- getsNES $ nesEsL . curPParamsEpochStateL . ppCommitteeMaxTermLengthL - ccCred <- KeyHashObj <$> freshKeyHash - let - committee = Map.singleton ccCred (EpochNo $ fromIntegral ccTerm) - _ <- electCommittee SNothing drep mempty committee - passNEpochs 3 - newCommittee <- - getsNES $ - nesEsL . esLStateL . lsUTxOStateL . utxosGovStateL . committeeGovStateL - fmap committeeMembers newCommittee `shouldBe` SJust committee - pure ccCred - -spec :: - forall era. - ( ConwayEraImp era - , GovState era ~ ConwayGovState era - , InjectRuleFailure "LEDGER" ConwayGovCertPredFailure era - ) => - SpecWith (ImpTestState era) -spec = describe "GOVCERT" $ do - it - "A CC that has resigned will need to be first voted out and then voted in to be considered active" - $ do - (dRep, _, gaidCC) <- electBasicCommittee - passNEpochs 2 - -- Add a fresh CC - cc <- KeyHashObj <$> freshKeyHash - let addCCAction = UpdateCommittee (SJust gaidCC) mempty (Map.singleton cc 20) (1 %! 2) - addCCGaid <- submitGovAction addCCAction - submitYesVote_ (DRepVoter dRep) addCCGaid - passNEpochs 2 - -- Confirm that they are added - SJust committee <- getsNES $ nesEsL . esLStateL . lsUTxOStateL . utxosGovStateL . committeeGovStateL - let assertCCMembership comm = - assertBool "Expected CC to be present in the committee" $ - Map.member cc (comm ^. committeeMembersL) - assertCCMissing comm = - assertBool "Expected CC to be absent in the committee" $ - Map.notMember cc (comm ^. committeeMembersL) - assertCCMembership committee - -- Confirm their hot key registration - _hotKey <- registerCommitteeHotKey cc - ccShouldNotBeResigned cc - -- Have them resign - resignCommitteeColdKey cc SNothing - ccShouldBeResigned cc - -- Re-add the same CC - let reAddCCAction = UpdateCommittee (SJust $ GovPurposeId addCCGaid) mempty (Map.singleton cc 20) (1 %! 2) - reAddCCGaid <- submitGovAction reAddCCAction - submitYesVote_ (DRepVoter dRep) reAddCCGaid - passNEpochs 2 - -- Confirm that they are still resigned - ccShouldBeResigned cc - -- Remove them - let removeCCAction = UpdateCommittee (SJust $ GovPurposeId reAddCCGaid) (Set.singleton cc) mempty (1 %! 2) - removeCCGaid <- submitGovAction removeCCAction - submitYesVote_ (DRepVoter dRep) removeCCGaid - passNEpochs 2 - -- Confirm that they have been removed - SJust committeeAfterRemove <- - getsNES $ nesEsL . esLStateL . lsUTxOStateL . utxosGovStateL . committeeGovStateL - assertCCMissing committeeAfterRemove - -- Add the same CC back a second time - let secondAddCCAction = UpdateCommittee (SJust $ GovPurposeId removeCCGaid) mempty (Map.singleton cc 20) (1 %! 2) - secondAddCCGaid <- submitGovAction secondAddCCAction - submitYesVote_ (DRepVoter dRep) secondAddCCGaid - passNEpochs 2 - -- Confirm that they have been added - SJust committeeAfterRemoveAndAdd <- - getsNES $ nesEsL . esLStateL . lsUTxOStateL . utxosGovStateL . committeeGovStateL - assertCCMembership committeeAfterRemoveAndAdd - -- Confirm that after registering a hot key, they are active - _hotKey <- registerCommitteeHotKey cc - ccShouldNotBeResigned cc - describe "succeeds for" $ do - it "registering and unregistering a DRep" $ do - modifyPParams $ ppDRepDepositL .~ Coin 100 - drepCred <- KeyHashObj <$> freshKeyHash - drepDeposit <- getsNES $ nesEsL . curPParamsEpochStateL . ppDRepDepositL - submitTx_ $ - mkBasicTx mkBasicTxBody - & bodyTxL . certsTxBodyL - .~ SSeq.singleton (RegDRepTxCert drepCred drepDeposit SNothing) - submitTx_ $ - mkBasicTx mkBasicTxBody - & bodyTxL . certsTxBodyL - .~ SSeq.singleton (UnRegDRepTxCert drepCred drepDeposit) - it "resigning a non-CC key" $ do - someCred <- KeyHashObj <$> freshKeyHash - submitTx_ - ( mkBasicTx mkBasicTxBody - & bodyTxL . certsTxBodyL - .~ SSeq.singleton (ResignCommitteeColdTxCert someCred SNothing) - ) - it "re-registering a CC hot key" $ do - ccCred <- electCommittee1 - replicateM_ 10 $ do - ccHotCred <- KeyHashObj <$> freshKeyHash - submitTx_ $ - mkBasicTx mkBasicTxBody - & bodyTxL . certsTxBodyL - .~ SSeq.singleton (AuthCommitteeHotKeyTxCert ccCred ccHotCred) - describe "fails for" $ do - it "invalid deposit provided with DRep registration cert" $ do - modifyPParams $ ppDRepDepositL .~ Coin 100 - expectedDRepDeposit <- getsNES $ nesEsL . curPParamsEpochStateL . ppDRepDepositL - let providedDRepDeposit = expectedDRepDeposit <+> Coin 10 - khDRep <- freshKeyHash - submitFailingTx - ( mkBasicTx mkBasicTxBody - & bodyTxL . certsTxBodyL - .~ SSeq.singleton - (RegDRepTxCert (KeyHashObj khDRep) providedDRepDeposit SNothing) - ) - ( pure . injectFailure $ - ConwayDRepIncorrectDeposit providedDRepDeposit expectedDRepDeposit - ) - it "invalid refund provided with DRep deregistration cert" $ do - modifyPParams $ ppDRepDepositL .~ Coin 100 - drepDeposit <- getsNES $ nesEsL . curPParamsEpochStateL . ppDRepDepositL - let refund = drepDeposit <+> Coin 10 - drepCred <- KeyHashObj <$> freshKeyHash - submitTx_ $ - mkBasicTx mkBasicTxBody - & bodyTxL . certsTxBodyL - .~ SSeq.singleton - (RegDRepTxCert drepCred drepDeposit SNothing) - submitFailingTx - ( mkBasicTx mkBasicTxBody - & bodyTxL . certsTxBodyL - .~ SSeq.singleton - (UnRegDRepTxCert drepCred refund) - ) - ( pure . injectFailure $ - ConwayDRepIncorrectRefund refund drepDeposit - ) - it "DRep already registered" $ do - modifyPParams $ ppDRepDepositL .~ Coin 100 - drepDeposit <- getsNES $ nesEsL . curPParamsEpochStateL . ppDRepDepositL - drepCred <- KeyHashObj <$> freshKeyHash - let - regTx = - mkBasicTx mkBasicTxBody - & bodyTxL . certsTxBodyL - .~ SSeq.singleton - (RegDRepTxCert drepCred drepDeposit SNothing) - submitTx_ regTx - submitFailingTx - regTx - (pure . injectFailure $ ConwayDRepAlreadyRegistered drepCred) - it "unregistering a nonexistent DRep" $ do - modifyPParams $ ppDRepDepositL .~ Coin 100 - drepDeposit <- getsNES $ nesEsL . curPParamsEpochStateL . ppDRepDepositL - drepCred <- KeyHashObj <$> freshKeyHash - submitFailingTx - ( mkBasicTx mkBasicTxBody - & bodyTxL . certsTxBodyL - .~ SSeq.singleton (UnRegDRepTxCert drepCred drepDeposit) - ) - (pure . injectFailure $ ConwayDRepNotRegistered drepCred) - it "registering a resigned CC member hotkey" $ do - ccCred <- electCommittee1 - ccHotCred <- KeyHashObj <$> freshKeyHash - let - registerHotKeyTx = - mkBasicTx mkBasicTxBody - & bodyTxL . certsTxBodyL - .~ SSeq.singleton (AuthCommitteeHotKeyTxCert ccCred ccHotCred) - submitTx_ registerHotKeyTx - submitTx_ $ - mkBasicTx mkBasicTxBody - & bodyTxL . certsTxBodyL - .~ SSeq.singleton (ResignCommitteeColdTxCert ccCred SNothing) - submitFailingTx - registerHotKeyTx - (pure . injectFailure $ ConwayCommitteeHasPreviouslyResigned ccCred) diff --git a/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Imp/GovSpec.hs b/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Imp/GovSpec.hs deleted file mode 100644 index 8cdbf422a7f..00000000000 --- a/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Imp/GovSpec.hs +++ /dev/null @@ -1,1223 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE NumericUnderscores #-} -{-# LANGUAGE OverloadedLists #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} - -module Test.Cardano.Ledger.Conway.Imp.GovSpec (spec) where - -import Cardano.Ledger.Address (RewardAccount (..)) -import Cardano.Ledger.Allegra.Scripts ( - pattern RequireAllOf, - pattern RequireAnyOf, - pattern RequireMOf, - pattern RequireSignature, - ) -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.Coin (Coin (Coin)) -import Cardano.Ledger.Conway.Core -import Cardano.Ledger.Conway.Governance -import Cardano.Ledger.Conway.Rules (ConwayGovPredFailure (..)) -import Cardano.Ledger.Credential (Credential (KeyHashObj)) -import Cardano.Ledger.Shelley.LedgerState -import Cardano.Ledger.Val (zero, (<->)) -import Data.Default.Class (Default (..)) -import qualified Data.Map.Strict as Map -import Data.Maybe -import qualified Data.Sequence.Strict as SSeq -import qualified Data.Set as Set -import Data.Tree -import Lens.Micro -import Test.Cardano.Ledger.Conway.Arbitrary () -import Test.Cardano.Ledger.Conway.ImpTest -import Test.Cardano.Ledger.Core.Rational (IsRatio (..)) -import Test.Cardano.Ledger.Imp.Common hiding (Success) - -spec :: - forall era. - ( ConwayEraImp era - , GovState era ~ ConwayGovState era - , InjectRuleFailure "LEDGER" ConwayGovPredFailure era - ) => - SpecWith (ImpTestState era) -spec = - describe "GOV" $ do - hardForkSpec - pparamUpdateSpec - proposalsSpec - votingSpec - constitutionSpec - policySpec - networkIdSpec - predicateFailuresSpec - -predicateFailuresSpec :: - forall era. - ( ConwayEraImp era - , InjectRuleFailure "LEDGER" ConwayGovPredFailure era - ) => - SpecWith (ImpTestState era) -predicateFailuresSpec = - describe "Predicate failures" $ do - it "ExpirationEpochTooSmall" $ do - pp <- getsNES $ nesEsL . curPParamsEpochStateL - committeeC <- KeyHashObj <$> freshKeyHash - rewardAccount <- registerRewardAccount - let expiration = EpochNo 1 - action = - UpdateCommittee - SNothing - mempty - (Map.singleton committeeC expiration) - (0 %! 1) - passEpoch - submitFailingProposal - ( ProposalProcedure - { pProcReturnAddr = rewardAccount - , pProcGovAction = action - , pProcDeposit = pp ^. ppGovActionDepositL - , pProcAnchor = def - } - ) - [injectFailure $ ExpirationEpochTooSmall $ Map.singleton committeeC expiration] - it "ProposalDepositIncorrect" $ do - committeeC <- KeyHashObj <$> freshKeyHash - rewardAccount <- registerRewardAccount - let expiration = EpochNo 1 - actionDeposit = Coin 2 - action = - UpdateCommittee - SNothing - mempty - (Map.singleton committeeC expiration) - (0 %! 1) - modifyPParams $ ppGovActionDepositL .~ actionDeposit - submitFailingProposal - ( ProposalProcedure - { pProcReturnAddr = rewardAccount - , pProcGovAction = action - , pProcDeposit = actionDeposit <-> Coin 1 - , pProcAnchor = def - } - ) - [injectFailure $ ProposalDepositIncorrect (actionDeposit <-> Coin 1) actionDeposit] - it "ConflictingCommitteeUpdate" $ do - pp <- getsNES $ nesEsL . curPParamsEpochStateL - committeeC <- KeyHashObj <$> freshKeyHash - rewardAccount <- registerRewardAccount - let expiration = EpochNo 1 - action = - UpdateCommittee - SNothing - (Set.singleton committeeC) - (Map.singleton committeeC expiration) - (0 %! 1) - submitFailingProposal - ( ProposalProcedure - { pProcReturnAddr = rewardAccount - , pProcGovAction = action - , pProcDeposit = pp ^. ppGovActionDepositL - , pProcAnchor = def - } - ) - [injectFailure $ ConflictingCommitteeUpdate $ Set.singleton committeeC] - -hardForkSpec :: - forall era. - ( ConwayEraImp era - , InjectRuleFailure "LEDGER" ConwayGovPredFailure era - ) => - SpecWith (ImpTestState era) -hardForkSpec = - describe "HardFork" $ do - describe "Hardfork is the first one (doesn't have a GovPurposeId) " $ do - it "Hardfork minorFollow" (firstHardForkFollows minorFollow) - it "Hardfork majorFollow" (firstHardForkFollows majorFollow) - it "Hardfork cantFollow" firstHardForkCantFollow - describe "Hardfork is the second one (has a GovPurposeId)" $ do - it "Hardfork minorFollow" (secondHardForkFollows minorFollow) - it "Hardfork majorFollow" (secondHardForkFollows majorFollow) - it "Hardfork cantFollow" secondHardForkCantFollow - -pparamUpdateSpec :: - forall era. - ( ConwayEraImp era - , InjectRuleFailure "LEDGER" ConwayGovPredFailure era - ) => - SpecWith (ImpTestState era) -pparamUpdateSpec = - describe "PParamUpdate" $ do - describe "PPU needs to be wellformed" $ do - let testMalformedProposal lbl lenz val = it lbl $ do - pp <- getsNES $ nesEsL . curPParamsEpochStateL - rew <- registerRewardAccount - let ppUpdate = - emptyPParamsUpdate - & lenz .~ SJust val - ga = ParameterChange SNothing ppUpdate SNothing - submitFailingProposal - ( ProposalProcedure - { pProcReturnAddr = rew - , pProcGovAction = ga - , pProcDeposit = pp ^. ppGovActionDepositL - , pProcAnchor = def - } - ) - [injectFailure $ MalformedProposal ga] - testMalformedProposal - "ppuMaxBBSizeL cannot be 0" - ppuMaxBBSizeL - 0 - testMalformedProposal - "ppuMaxTxSizeL cannot be 0" - ppuMaxTxSizeL - 0 - testMalformedProposal - "ppuMaxBHSizeL cannot be 0" - ppuMaxBHSizeL - 0 - testMalformedProposal - "ppuMaxValSizeL cannot be 0" - ppuMaxValSizeL - 0 - testMalformedProposal - "ppuCollateralPercentageL cannot be 0" - ppuCollateralPercentageL - 0 - testMalformedProposal - "ppuCommitteeMaxTermLengthL cannot be 0" - ppuCommitteeMaxTermLengthL - $ EpochInterval 0 - testMalformedProposal - "ppuGovActionLifetimeL cannot be 0" - ppuGovActionLifetimeL - $ EpochInterval 0 - testMalformedProposal - "ppuPoolDepositL cannot be 0" - ppuPoolDepositL - zero - testMalformedProposal - "ppuGovActionDepositL cannot be 0" - ppuGovActionDepositL - zero - testMalformedProposal - "ppuDRepDepositL cannot be 0" - ppuDRepDepositL - zero - it "PPU cannot be empty" $ do - pp <- getsNES $ nesEsL . curPParamsEpochStateL - rew <- registerRewardAccount - let ga = ParameterChange SNothing emptyPParamsUpdate SNothing - submitFailingProposal - ( ProposalProcedure - { pProcReturnAddr = rew - , pProcGovAction = ga - , pProcDeposit = pp ^. ppGovActionDepositL - , pProcAnchor = def - } - ) - [injectFailure $ MalformedProposal ga] - -proposalsSpec :: - forall era. - ( ConwayEraImp era - , InjectRuleFailure "LEDGER" ConwayGovPredFailure era - ) => - SpecWith (ImpTestState era) -proposalsSpec = - describe "Proposals" $ do - describe "Consistency" $ do - it "Proposals submitted without proper parent fail" $ do - let mkCorruptGovActionId :: GovActionId c -> GovActionId c - mkCorruptGovActionId (GovActionId txi (GovActionIx gaix)) = - GovActionId txi $ GovActionIx $ gaix + 999 - modifyPParams $ ppGovActionLifetimeL .~ EpochInterval 4 - Node p1 [Node _p11 []] <- - submitConstitutionGovActionTree - SNothing - $ Node - () - [ Node () [] - ] - constitutionHash <- freshSafeHash - pp <- getsNES $ nesEsL . curPParamsEpochStateL - khPropRwd <- freshKeyHash - let constitutionAction = - NewConstitution - (SJust $ GovPurposeId $ mkCorruptGovActionId p1) - ( Constitution - ( Anchor - (fromJust $ textToUrl 64 "constitution.after.0") - constitutionHash - ) - SNothing - ) - constitutionProposal = - ProposalProcedure - { pProcDeposit = pp ^. ppGovActionDepositL - , pProcReturnAddr = RewardAccount Testnet (KeyHashObj khPropRwd) - , pProcGovAction = constitutionAction - , pProcAnchor = def - } - submitFailingProposal - constitutionProposal - [ injectFailure $ InvalidPrevGovActionId constitutionProposal - ] - it "Subtrees are pruned when proposals expire" $ do - modifyPParams $ ppGovActionLifetimeL .~ EpochInterval 4 - p1 <- submitInitConstitutionGovAction - passNEpochs 3 - a <- - submitConstitutionGovActionTree - (SJust p1) - $ Node - () - [ Node () [] - , Node () [] - ] - b <- - submitConstitutionGovActionTree - SNothing - $ Node - () - [ Node () [] - ] - getProposalsForest - `shouldReturn` [ Node SNothing [] - , Node SNothing [] - , Node SNothing [] - , Node - SNothing - [ Node (SJust p1) [SJust <$> a] - , SJust <$> b - ] - ] - passNEpochs 3 - getProposalsForest - `shouldReturn` [ Node SNothing [] - , Node SNothing [] - , Node SNothing [] - , Node SNothing [SJust <$> b] - ] - it "Subtrees are pruned when competing proposals are enacted" $ do - (dRep, committeeMember, GovPurposeId committeeGovActionId) <- electBasicCommittee - a@[ _ - , b@(Node p2 _) - ] <- - submitConstitutionGovActionForest - SNothing - [ Node - () - [ Node - () - [ Node () [] - , Node () [] - ] - ] - , Node - () - [ Node () [] - ] - ] - - getProposalsForest - `shouldReturn` [ Node SNothing [] - , Node SNothing [] - , Node (SJust committeeGovActionId) [] - , Node SNothing (fmap SJust <$> a) - ] - passEpoch - submitYesVote_ (DRepVoter dRep) p2 - submitYesVote_ (CommitteeVoter committeeMember) p2 - passNEpochs 2 - getProposalsForest - `shouldReturn` [ Node SNothing [] - , Node SNothing [] - , Node (SJust committeeGovActionId) [] - , SJust <$> b - ] - it "Subtrees are pruned when proposals expire over multiple rounds" $ do - modifyPParams $ ppGovActionLifetimeL .~ EpochInterval 4 - p1 <- submitInitConstitutionGovAction - getProposalsForest - `shouldReturn` [ Node SNothing [] - , Node SNothing [] - , Node SNothing [] - , Node - SNothing - [ Node (SJust p1) [] - ] - ] - passEpoch - p2 <- submitInitConstitutionGovAction - p11 <- submitChildConstitutionGovAction p1 - getProposalsForest - `shouldReturn` [ Node SNothing [] - , Node SNothing [] - , Node SNothing [] - , Node - SNothing - [ Node (SJust p1) [Node (SJust p11) []] - , Node (SJust p2) [] - ] - ] - - passEpoch - p3 <- submitInitConstitutionGovAction - p21 <- submitChildConstitutionGovAction p2 - a <- - submitConstitutionGovActionForest - (SJust p11) - [ Node () [] - , Node () [] - ] - getProposalsForest - `shouldReturn` [ Node SNothing [] - , Node SNothing [] - , Node SNothing [] - , Node - SNothing - [ Node - (SJust p1) - [ Node - (SJust p11) - (fmap SJust <$> a) - ] - , Node (SJust p2) [Node (SJust p21) []] - , Node (SJust p3) [] - ] - ] - passEpoch - p4 <- submitInitConstitutionGovAction - p31 <- submitChildConstitutionGovAction p3 - p211 <- submitChildConstitutionGovAction p21 - getProposalsForest - `shouldReturn` [ Node SNothing [] - , Node SNothing [] - , Node SNothing [] - , Node - SNothing - [ Node - (SJust p1) - [ Node - (SJust p11) - (fmap SJust <$> a) - ] - , Node (SJust p2) [Node (SJust p21) [Node (SJust p211) []]] - , Node (SJust p3) [Node (SJust p31) []] - , Node (SJust p4) [] - ] - ] - passNEpochs 3 - getProposalsForest - `shouldReturn` [ Node SNothing [] - , Node SNothing [] - , Node SNothing [] - , Node - SNothing - [ Node (SJust p2) [Node (SJust p21) [Node (SJust p211) []]] - , Node (SJust p3) [Node (SJust p31) []] - , Node (SJust p4) [] - ] - ] - p5 <- submitInitConstitutionGovAction - p41 <- submitChildConstitutionGovAction p4 - p311 <- submitChildConstitutionGovAction p31 - p212 <- submitChildConstitutionGovAction p21 - getProposalsForest - `shouldReturn` [ Node SNothing [] - , Node SNothing [] - , Node SNothing [] - , Node - SNothing - [ Node - (SJust p2) - [ Node - (SJust p21) - [ Node (SJust p211) [] - , Node (SJust p212) [] - ] - ] - , Node (SJust p3) [Node (SJust p31) [Node (SJust p311) []]] - , Node (SJust p4) [Node (SJust p41) []] - , Node (SJust p5) [] - ] - ] - passEpoch - p6 <- submitInitConstitutionGovAction - p51 <- submitChildConstitutionGovAction p5 - p411 <- submitChildConstitutionGovAction p41 - p312 <- submitChildConstitutionGovAction p31 - getProposalsForest - `shouldReturn` [ Node SNothing [] - , Node SNothing [] - , Node SNothing [] - , Node - SNothing - [ Node - (SJust p3) - [ Node - (SJust p31) - [ Node (SJust p311) [] - , Node (SJust p312) [] - ] - ] - , Node (SJust p4) [Node (SJust p41) [Node (SJust p411) []]] - , Node (SJust p5) [Node (SJust p51) []] - , Node (SJust p6) [] - ] - ] - passEpoch - getProposalsForest - `shouldReturn` [ Node SNothing [] - , Node SNothing [] - , Node SNothing [] - , Node - SNothing - [ Node (SJust p4) [Node (SJust p41) [Node (SJust p411) []]] - , Node (SJust p5) [Node (SJust p51) []] - , Node (SJust p6) [] - ] - ] - passEpoch - getProposalsForest - `shouldReturn` [ Node SNothing [] - , Node SNothing [] - , Node SNothing [] - , Node - SNothing - [ Node (SJust p5) [Node (SJust p51) []] - , Node (SJust p6) [] - ] - ] - passNEpochs 3 - getProposalsForest - `shouldReturn` [ Node SNothing [] - , Node SNothing [] - , Node SNothing [] - , Node - SNothing - [ Node (SJust p6) [] - ] - ] - passEpoch - getProposalsForest - `shouldReturn` [ Node SNothing [] - , Node SNothing [] - , Node SNothing [] - , Node SNothing [] - ] - it "Subtrees are pruned when competing proposals are enacted over multiple rounds" $ do - (dRep, committeeMember, _) <- electBasicCommittee - a@[ c - , Node - p2 - [ Node p21 [] - , Node p22 [] - ] - , Node p3 [] - ] <- - submitConstitutionGovActionForest - SNothing - [ Node - () - [ Node - () - [ Node () [] - , Node () [] - ] - ] - , Node - () - [ Node () [] - , Node () [] - ] - , Node () [] - ] - submitYesVote_ (DRepVoter dRep) p2 - submitYesVote_ (CommitteeVoter committeeMember) p2 - submitYesVote_ (DRepVoter dRep) p21 - submitYesVote_ (CommitteeVoter committeeMember) p21 - submitYesVote_ (DRepVoter dRep) p3 - submitYesVote_ (CommitteeVoter committeeMember) p3 -- Two competing proposals break the tie based on proposal order - fmap (!! 3) getProposalsForest - `shouldReturn` Node SNothing (fmap SJust <$> a) - passEpoch - p4 <- submitInitConstitutionGovAction - p31 <- submitChildConstitutionGovAction p3 - p211 <- submitChildConstitutionGovAction p21 - fmap (!! 3) getProposalsForest - `shouldReturn` Node - SNothing - [ SJust <$> c - , Node - (SJust p2) - [ Node (SJust p21) [Node (SJust p211) []] - , Node (SJust p22) [] - ] - , Node (SJust p3) [Node (SJust p31) []] - , Node (SJust p4) [] - ] - passEpoch - fmap (!! 3) getProposalsForest - `shouldReturn` Node - (SJust p2) - [ Node (SJust p21) [Node (SJust p211) []] - , Node (SJust p22) [] - ] - [ Node p212 [] - , Node p213 [] - , Node p214 [] - ] <- - submitConstitutionGovActionForest - (SJust p21) - [ Node () [] - , Node () [] - , Node () [] - ] - p2131 <- submitChildConstitutionGovAction p213 - p2141 <- submitChildConstitutionGovAction p214 - submitYesVote_ (DRepVoter dRep) p212 - submitYesVote_ (CommitteeVoter committeeMember) p212 - fmap (!! 3) getProposalsForest - `shouldReturn` Node - (SJust p2) - [ Node - (SJust p21) - [ Node (SJust p211) [] - , Node (SJust p212) [] - , Node (SJust p213) [Node (SJust p2131) []] - , Node (SJust p214) [Node (SJust p2141) []] - ] - , Node (SJust p22) [] - ] - passNEpochs 2 - fmap (!! 3) getProposalsForest - `shouldReturn` Node (SJust p212) [] - props <- getProposals - proposalsSize props `shouldBe` 0 - it "Votes from subsequent epochs are considered for ratification" $ do - modifyPParams $ ppGovActionLifetimeL .~ EpochInterval 4 - (dRep, committeeMember, _) <- electBasicCommittee - [Node p1 []] <- - submitConstitutionGovActionForest - SNothing - [Node () []] - fmap (!! 3) getProposalsForest - `shouldReturn` Node SNothing [Node (SJust p1) []] - passNEpochs 2 - submitYesVote_ (DRepVoter dRep) p1 - submitYesVote_ (CommitteeVoter committeeMember) p1 - passNEpochs 2 - fmap (!! 3) getProposalsForest - `shouldReturn` Node (SJust p1) [] - it "Subtrees are pruned for both enactment and expiry over multiple rounds" $ do - (dRep, committeeMember, _) <- electBasicCommittee - modifyPParams $ ppGovActionLifetimeL .~ EpochInterval 4 - [ a@( Node - p1 - [ b@( Node - p11 - [ Node _p111 [] - , Node _p112 [] - ] - ) - ] - ) - , Node - _p2 - [ Node _p21 [] - , Node _p22 [] - ] - , Node p3 [] - ] <- - submitConstitutionGovActionForest - SNothing - [ Node - () - [ Node - () - [ Node () [] - , Node () [] - ] - ] - , Node - () - [ Node () [] - , Node () [] - ] - , Node () [] - ] - passNEpochs 2 - submitYesVote_ (DRepVoter dRep) p1 - submitYesVote_ (CommitteeVoter committeeMember) p1 - submitYesVote_ (DRepVoter dRep) p11 - submitYesVote_ (CommitteeVoter committeeMember) p11 - submitYesVote_ (DRepVoter dRep) p3 - submitYesVote_ (CommitteeVoter committeeMember) p3 -- Two competing proposals break the tie based on proposal order - passNEpochs 2 - fmap (!! 3) getProposalsForest - `shouldReturn` SJust - <$> a - passEpoch -- ConstitutionPurpose is a delayed action - fmap (!! 3) getProposalsForest - `shouldReturn` SJust - <$> b - passNEpochs 2 - fmap (!! 3) getProposalsForest - `shouldReturn` Node (SJust p11) [] - c@[ Node _p113 [] - , Node _p114 [] - ] <- - submitConstitutionGovActionForest - (SJust p11) - [ Node () [] - , Node () [] - ] - fmap (!! 3) getProposalsForest - `shouldReturn` Node (SJust p11) (fmap SJust <$> c) - passNEpochs 4 - d@[ Node _p115 [] - , Node p116 [] - ] <- - submitConstitutionGovActionForest - (SJust p11) - [ Node () [] - , Node () [] - ] - fmap (!! 3) getProposalsForest - `shouldReturn` Node (SJust p11) (fmap SJust <$> (c <> d)) - passNEpochs 2 - fmap (!! 3) getProposalsForest - `shouldReturn` Node (SJust p11) (fmap SJust <$> d) - submitYesVote_ (DRepVoter dRep) p116 - submitYesVote_ (CommitteeVoter committeeMember) p116 - passNEpochs 3 - fmap (!! 3) getProposalsForest - `shouldReturn` Node (SJust p116) [] - -votingSpec :: - forall era. - ( ConwayEraImp era - , InjectRuleFailure "LEDGER" ConwayGovPredFailure era - , GovState era ~ ConwayGovState era - ) => - SpecWith (ImpTestState era) -votingSpec = - describe "Voting" $ do - describe "fails for" $ do - it "expired gov-actions" $ do - -- Voting after the 3rd epoch should fail - modifyPParams $ ppGovActionLifetimeL .~ EpochInterval 2 - (khDRep, _, _) <- setupSingleDRep 1_000_000 - (govActionId, _) <- submitConstitution SNothing - passEpoch - passEpoch - passEpoch - let voter = DRepVoter $ KeyHashObj khDRep - submitFailingVote - voter - govActionId - [ injectFailure $ VotingOnExpiredGovAction [(voter, govActionId)] - ] - it "non-existent gov-actions" $ do - (khDRep, _, _) <- setupSingleDRep 1_000_000 - (govActionId, _) <- submitConstitution SNothing - let voter = DRepVoter $ KeyHashObj khDRep - dummyGaid = govActionId {gaidGovActionIx = GovActionIx 99} -- non-existent `GovActionId` - submitFailingVote - voter - dummyGaid - [injectFailure $ GovActionsDoNotExist $ pure dummyGaid] - it - "committee member voting on committee change" - committeeMemberVotingOnCommitteeChange - it "non-committee-member voting on committee change as a committee member" $ do - (_, _, prevGovActionId) <- electBasicCommittee - credCandidate <- KeyHashObj <$> freshKeyHash - credVoter <- KeyHashObj <$> freshKeyHash - committeeUpdateId <- - submitGovAction $ - UpdateCommittee - (SJust prevGovActionId) - mempty - (Map.singleton credCandidate $ EpochNo 28) - (3 %! 5) - let voter = CommitteeVoter credVoter - trySubmitVote VoteNo voter committeeUpdateId - `shouldReturn` Left - [ injectFailure $ DisallowedVoters [(voter, committeeUpdateId)] - ] - it - "committee member can't vote on committee update when sandwiched between other votes" - ccVoteOnConstitutionFailsWithMultipleVotes - it "CC cannot ratify if below threshold" $ do - modifyPParams $ \pp -> - pp - & ppGovActionLifetimeL .~ EpochInterval 3 - & ppDRepVotingThresholdsL - .~ def - { dvtUpdateToConstitution = 1 %! 2 - } - & ppCommitteeMinSizeL .~ 2 - & ppCommitteeMaxTermLengthL .~ EpochInterval 10 - (khDRep, _, _) <- setupSingleDRep 1_000_000 - let dRepCred = KeyHashObj khDRep - ccColdCred0 <- KeyHashObj <$> freshKeyHash - ccColdCred1 <- KeyHashObj <$> freshKeyHash - electionGovAction <- - submitGovAction $ - UpdateCommittee - SNothing - mempty - ( Map.fromList - [ (ccColdCred0, EpochNo 10) - , (ccColdCred1, EpochNo 10) - ] - ) - (3 %! 5) - submitYesVote_ (DRepVoter dRepCred) electionGovAction - logAcceptedRatio electionGovAction - passNEpochs 3 - expectNoCurrentProposals - ccHotKey0 <- registerCommitteeHotKey ccColdCred0 - ccHotKey1 <- registerCommitteeHotKey ccColdCred1 - anchor <- arbitrary - constitutionChangeId <- - submitGovAction $ - NewConstitution - SNothing - Constitution - { constitutionScript = SNothing - , constitutionAnchor = anchor - } - submitYesVote_ (DRepVoter dRepCred) constitutionChangeId - resignCommitteeColdKey ccColdCred0 SNothing - submitYesVote_ (CommitteeVoter ccHotKey0) constitutionChangeId - submitYesVote_ (CommitteeVoter ccHotKey1) constitutionChangeId - passEpoch - logAcceptedRatio constitutionChangeId - logToExpr =<< lookupGovActionState constitutionChangeId - passNEpochs 4 - conAnchor <- - getsNES $ - nesEsL - . esLStateL - . lsUTxOStateL - . utxosGovStateL - . cgsConstitutionL - . constitutionAnchorL - expectNoCurrentProposals - conAnchor `shouldNotBe` anchor - -constitutionSpec :: - forall era. - ( ConwayEraImp era - , GovState era ~ ConwayGovState era - , InjectRuleFailure "LEDGER" ConwayGovPredFailure era - ) => - SpecWith (ImpTestState era) -constitutionSpec = - describe "Constitution proposals" $ do - describe "accepted for" $ do - it "empty PrevGovId before the first constitution is enacted" $ do - -- Initial proposal does not need a GovPurposeId but after it is enacted, the - -- following ones are not - _ <- submitConstitution SNothing - -- Until the first proposal is enacted all proposals with empty GovPurposeIds are valid - void $ submitConstitution SNothing - it "valid GovPurposeId" $ do - (dRep, committeeMember, _) <- electBasicCommittee - constitution <- arbitrary - gaidConstitutionProp <- enactConstitution SNothing constitution dRep committeeMember - constitution1 <- arbitrary - void $ - enactConstitution (SJust $ GovPurposeId gaidConstitutionProp) constitution1 dRep committeeMember - - describe "rejected for" $ do - it "empty PrevGovId after the first constitution was enacted" $ do - (dRep, committeeMember, _) <- electBasicCommittee - (govActionId, _constitution) <- submitConstitution SNothing - submitYesVote_ (DRepVoter dRep) govActionId - submitYesVote_ (CommitteeVoter committeeMember) govActionId - passNEpochs 2 - constitution <- arbitrary - let invalidNewConstitutionGovAction = - NewConstitution - SNothing - constitution - invalidNewConstitutionProposal <- proposalWithRewardAccount invalidNewConstitutionGovAction - submitFailingProposal - invalidNewConstitutionProposal - [ injectFailure $ InvalidPrevGovActionId invalidNewConstitutionProposal - ] - it "invalid index in GovPurposeId" $ do - (_dRep, _committeeMember, _) <- electBasicCommittee - (govActionId, _constitution) <- submitConstitution SNothing - passNEpochs 2 - constitution <- arbitrary - let invalidPrevGovActionId = - -- Expected Ix = 0 - GovPurposeId (govActionId {gaidGovActionIx = GovActionIx 1}) - invalidNewConstitutionGovAction = - NewConstitution - (SJust invalidPrevGovActionId) - constitution - invalidNewConstitutionProposal <- proposalWithRewardAccount invalidNewConstitutionGovAction - submitFailingProposal - invalidNewConstitutionProposal - [ injectFailure $ InvalidPrevGovActionId invalidNewConstitutionProposal - ] - it "valid GovPurposeId but invalid purpose" $ do - (_dRep, _committeeMember, _) <- electBasicCommittee - (govActionId, _constitution) <- submitConstitution SNothing - passNEpochs 2 - let invalidNoConfidenceAction = - NoConfidence $ SJust $ GovPurposeId govActionId - invalidNoConfidenceProposal <- proposalWithRewardAccount invalidNoConfidenceAction - - submitFailingProposal - invalidNoConfidenceProposal - [ injectFailure $ InvalidPrevGovActionId invalidNoConfidenceProposal - ] - it "submitted successfully with valid GovPurposeId" $ do - modifyPParams $ ppGovActionLifetimeL .~ EpochInterval 1 - - curConstitution <- getsNES $ newEpochStateGovStateL . constitutionGovStateL - initialPulser <- getsNES $ newEpochStateGovStateL . drepPulsingStateGovStateL - initialEnactState <- getEnactState - - (govActionId, _) <- submitConstitution SNothing - curConstitution' <- getsNES $ newEpochStateGovStateL . constitutionGovStateL - impAnn "Constitution has not been enacted yet" $ - curConstitution' `shouldBe` curConstitution - - ConwayGovState expectedProposals _ _ _ _ expectedPulser <- - getsNES newEpochStateGovStateL - expectedEnactState <- getEnactState - - impAnn "EnactState reflects the submitted governance action" $ do - expectedEnactState `shouldBe` initialEnactState - - impAnn "Proposals contain the submitted proposal" $ - expectedProposals `shouldSatisfy` \props -> govActionId `elem` proposalsIds props - - impAnn "Pulser has not changed" $ - expectedPulser `shouldBe` initialPulser - - passEpoch >> passEpoch - impAnn "Proposal gets removed after expiry" $ do - ConwayGovState _ _ _ _ _ pulser <- getsNES newEpochStateGovStateL - let ratifyState = extractDRepPulsingState pulser - rsExpired ratifyState `shouldBe` Set.singleton govActionId - -policySpec :: - forall era. - ( ConwayEraImp era - , InjectRuleFailure "LEDGER" ConwayGovPredFailure era - ) => - SpecWith (ImpTestState era) -policySpec = - describe "Policy" $ do - it "policy is respected by proposals" $ do - (dRep, committeeMember, _) <- electBasicCommittee - keyHash <- freshKeyHash - scriptHash <- impAddNativeScript $ RequireAllOf (SSeq.singleton (RequireSignature keyHash)) - anchor <- arbitrary - _ <- enactConstitution SNothing (Constitution anchor (SJust scriptHash)) dRep committeeMember - wrongScriptHash <- - impAddNativeScript $ - RequireMOf 1 $ - SSeq.fromList [RequireAnyOf mempty, RequireAllOf mempty] - pp <- getsNES $ nesEsL . curPParamsEpochStateL - impAnn "ParameterChange with correct policy succeeds" $ do - let - pparamsUpdate = - def - & ppuCommitteeMinSizeL .~ SJust 1 - rewardAccount <- registerRewardAccount - submitProposal_ - ProposalProcedure - { pProcReturnAddr = rewardAccount - , pProcGovAction = ParameterChange SNothing pparamsUpdate (SJust scriptHash) - , pProcDeposit = pp ^. ppGovActionDepositL - , pProcAnchor = def - } - - impAnn "TreasuryWithdrawals with correct policy succeeds" $ do - rewardAccount <- registerRewardAccount - let - withdrawals = - Map.fromList - [ (rewardAccount, Coin 1000) - ] - submitProposal_ - ProposalProcedure - { pProcReturnAddr = rewardAccount - , pProcGovAction = TreasuryWithdrawals withdrawals (SJust scriptHash) - , pProcDeposit = pp ^. ppGovActionDepositL - , pProcAnchor = def - } - - impAnn "ParameterChange with invalid policy fails" $ do - rewardAccount <- registerRewardAccount - let - pparamsUpdate = - def - & ppuCommitteeMinSizeL .~ SJust 2 - res <- - trySubmitProposal - ProposalProcedure - { pProcReturnAddr = rewardAccount - , pProcGovAction = ParameterChange SNothing pparamsUpdate (SJust wrongScriptHash) - , pProcDeposit = pp ^. ppGovActionDepositL - , pProcAnchor = def - } - res - `shouldBeLeft` [ injectFailure $ - InvalidPolicyHash (SJust wrongScriptHash) (SJust scriptHash) - ] - - impAnn "TreasuryWithdrawals with invalid policy fails" $ do - rewardAccount <- registerRewardAccount - let - withdrawals = - Map.fromList - [ (rewardAccount, Coin 1000) - ] - res <- - trySubmitProposal - ProposalProcedure - { pProcReturnAddr = rewardAccount - , pProcGovAction = TreasuryWithdrawals withdrawals (SJust wrongScriptHash) - , pProcDeposit = pp ^. ppGovActionDepositL - , pProcAnchor = def - } - res - `shouldBeLeft` [ injectFailure $ - InvalidPolicyHash (SJust wrongScriptHash) (SJust scriptHash) - ] - -networkIdSpec :: - forall era. - ( ConwayEraImp era - , InjectRuleFailure "LEDGER" ConwayGovPredFailure era - ) => - SpecWith (ImpTestState era) -networkIdSpec = - describe "Network ID" $ do - it "Fails with invalid network ID in proposal return address" $ do - rewardCredential <- KeyHashObj <$> freshKeyHash - let badRewardAccount = - RewardAccount - { raNetwork = Mainnet -- Our network is Testnet - , raCredential = rewardCredential - } - propDeposit <- getsNES $ nesEsL . curPParamsEpochStateL . ppGovActionDepositL - submitFailingProposal - ProposalProcedure - { pProcReturnAddr = badRewardAccount - , pProcGovAction = InfoAction - , pProcDeposit = propDeposit - , pProcAnchor = def - } - [ injectFailure $ - ProposalProcedureNetworkIdMismatch - badRewardAccount - Testnet - ] - it "Fails with invalid network ID in withdrawal addresses" $ do - rewardAccount <- registerRewardAccount - rewardCredential <- KeyHashObj <$> freshKeyHash - let badRewardAccount = - RewardAccount - { raNetwork = Mainnet -- Our network is Testnet - , raCredential = rewardCredential - } - propDeposit <- getsNES $ nesEsL . curPParamsEpochStateL . ppGovActionDepositL - submitFailingProposal - ProposalProcedure - { pProcReturnAddr = rewardAccount - , pProcGovAction = - TreasuryWithdrawals - (Map.singleton badRewardAccount $ Coin 100_000_000) - SNothing - , pProcDeposit = propDeposit - , pProcAnchor = def - } - [ injectFailure $ - TreasuryWithdrawalsNetworkIdMismatch - (Set.singleton badRewardAccount) - Testnet - ] - -proposalWithRewardAccount :: - forall era. - ConwayEraImp era => - GovAction era -> - ImpTestM era (ProposalProcedure era) -proposalWithRewardAccount action = do - rewardAccount <- registerRewardAccount - govActionDeposit <- getsNES $ nesEsL . curPParamsEpochStateL . ppGovActionDepositL - pure - ProposalProcedure - { pProcDeposit = govActionDeposit - , pProcReturnAddr = rewardAccount - , pProcGovAction = action - , pProcAnchor = def - } - --- ========================================================= --- Proposing a HardFork should always use a new ProtVer that --- can follow the one installed in the previous HardFork action. - --- | Tests the first hardfork in the Conway era where the PrevGovActionID is SNothing -firstHardForkFollows :: - forall era. - (ShelleyEraImp era, ConwayEraTxBody era) => - (ProtVer -> ProtVer) -> - ImpTestM era () -firstHardForkFollows computeNewFromOld = do - protVer <- getsNES $ nesEsL . curPParamsEpochStateL . ppProtocolVersionL - submitGovAction_ $ HardForkInitiation SNothing (computeNewFromOld protVer) - --- | Negative (deliberatey failing) first hardfork in the Conway era where the PrevGovActionID is SNothing -firstHardForkCantFollow :: - forall era. - ( ShelleyEraImp era - , ConwayEraTxBody era - , InjectRuleFailure "LEDGER" ConwayGovPredFailure era - ) => - ImpTestM era () -firstHardForkCantFollow = do - rewardAccount <- registerRewardAccount - pp <- getsNES $ nesEsL . curPParamsEpochStateL - let protver0 = pp ^. ppProtocolVersionL - protver1 = minorFollow protver0 - protver2 = cantFollow protver1 - submitFailingProposal - ( ProposalProcedure - { pProcDeposit = pp ^. ppGovActionDepositL - , pProcReturnAddr = rewardAccount - , pProcGovAction = HardForkInitiation SNothing protver2 - , pProcAnchor = def - } - ) - [injectFailure $ ProposalCantFollow SNothing protver2 protver0] - --- | Tests a second hardfork in the Conway era where the PrevGovActionID is SJust -secondHardForkFollows :: - forall era. - (ShelleyEraImp era, ConwayEraTxBody era) => - (ProtVer -> ProtVer) -> - ImpTestM era () -secondHardForkFollows computeNewFromOld = do - protver0 <- getsNES $ nesEsL . curPParamsEpochStateL . ppProtocolVersionL - let protver1 = minorFollow protver0 - protver2 = computeNewFromOld protver1 - gaid1 <- submitGovAction $ HardForkInitiation SNothing protver1 - submitGovAction_ $ HardForkInitiation (SJust (GovPurposeId gaid1)) protver2 - --- | Negative (deliberatey failing) first hardfork in the Conway era where the PrevGovActionID is SJust -secondHardForkCantFollow :: - forall era. - ( ShelleyEraImp era - , ConwayEraTxBody era - , InjectRuleFailure "LEDGER" ConwayGovPredFailure era - ) => - ImpTestM era () -secondHardForkCantFollow = do - rewardAccount <- registerRewardAccount - pp <- getsNES $ nesEsL . curPParamsEpochStateL - let protver0 = pp ^. ppProtocolVersionL - protver1 = minorFollow protver0 - protver2 = cantFollow protver1 - gaid1 <- - submitProposal $ - ProposalProcedure - { pProcDeposit = pp ^. ppGovActionDepositL - , pProcReturnAddr = rewardAccount - , pProcGovAction = HardForkInitiation SNothing protver1 - , pProcAnchor = def - } - submitFailingProposal - ( ProposalProcedure - { pProcDeposit = pp ^. ppGovActionDepositL - , pProcReturnAddr = rewardAccount - , pProcGovAction = HardForkInitiation (SJust (GovPurposeId gaid1)) protver2 - , pProcAnchor = def - } - ) - [injectFailure $ ProposalCantFollow (SJust (GovPurposeId gaid1)) protver2 protver1] - -committeeMemberVotingOnCommitteeChange :: - forall era. - ( ConwayEraImp era - , InjectRuleFailure "LEDGER" ConwayGovPredFailure era - ) => - ImpTestM era () -committeeMemberVotingOnCommitteeChange = do - (_, ccHot, prevGovActionId) <- electBasicCommittee - khCommittee <- KeyHashObj <$> freshKeyHash - committeeUpdateId <- - submitGovAction $ - UpdateCommittee - (SJust prevGovActionId) - mempty - (Map.singleton khCommittee $ EpochNo 28) - (3 %! 5) - let voter = CommitteeVoter ccHot - submitFailingVote - voter - committeeUpdateId - [ injectFailure $ DisallowedVoters [(voter, committeeUpdateId)] - ] - -ccVoteOnConstitutionFailsWithMultipleVotes :: - forall era. - ( ConwayEraImp era - , InjectRuleFailure "LEDGER" ConwayGovPredFailure era - ) => - ImpTestM era () -ccVoteOnConstitutionFailsWithMultipleVotes = do - (drepCred, ccCred, prevCommitteeId) <- electBasicCommittee - drepCred2 <- KeyHashObj <$> registerDRep - newCommitteeMember <- KeyHashObj <$> freshKeyHash - committeeProposal <- - submitGovAction $ - UpdateCommittee - (SJust prevCommitteeId) - mempty - (Map.singleton newCommitteeMember $ EpochNo 10) - (1 %! 2) - let - voteTx = - mkBasicTx $ - mkBasicTxBody - & votingProceduresTxBodyL - .~ VotingProcedures - ( Map.fromList - [ - ( DRepVoter drepCred2 - , Map.singleton committeeProposal $ VotingProcedure VoteYes SNothing - ) - , - ( CommitteeVoter ccCred - , Map.singleton committeeProposal $ VotingProcedure VoteNo SNothing - ) - , - ( DRepVoter drepCred - , Map.singleton committeeProposal $ VotingProcedure VoteYes SNothing - ) - ] - ) - impAnn "Try to vote as a committee member" $ - submitFailingTx - voteTx - [ injectFailure $ - DisallowedVoters [(CommitteeVoter ccCred, committeeProposal)] - ] diff --git a/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Imp/RatifySpec.hs b/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Imp/RatifySpec.hs deleted file mode 100644 index 66066b6fc4c..00000000000 --- a/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Imp/RatifySpec.hs +++ /dev/null @@ -1,806 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE NumericUnderscores #-} -{-# LANGUAGE OverloadedLists #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} - -module Test.Cardano.Ledger.Conway.Imp.RatifySpec (spec) where - -import Cardano.Ledger.Address -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.Coin -import Cardano.Ledger.Conway.Core -import Cardano.Ledger.Conway.Governance -import Cardano.Ledger.Conway.PParams -import Cardano.Ledger.Credential -import Cardano.Ledger.Keys -import Cardano.Ledger.Shelley.LedgerState -import qualified Cardano.Ledger.UMap as UM -import Cardano.Ledger.Val ((<->)) -import Data.Default.Class (def) -import Data.Foldable -import qualified Data.Map.Strict as Map -import qualified Data.Set as Set -import Lens.Micro -import Test.Cardano.Ledger.Conway.ImpTest -import Test.Cardano.Ledger.Core.KeyPair -import Test.Cardano.Ledger.Core.Rational ((%!)) -import Test.Cardano.Ledger.Imp.Common - -spec :: - forall era. - ConwayEraImp era => - SpecWith (ImpTestState era) -spec = - describe "RATIFY" $ do - votingSpec - delayingActionsSpec - spoVotesForHardForkInitiation - committeeMinSizeAffectsInFlightProposalsSpec - paramChangeAffectsProposalsSpec - -paramChangeAffectsProposalsSpec :: - forall era. - ConwayEraImp era => - SpecWith (ImpTestState era) -paramChangeAffectsProposalsSpec = - describe "ParameterChange affects existing proposals" $ do - let largerThreshold :: UnitInterval - largerThreshold = 51 %! 100 - smallerThreshold :: UnitInterval - smallerThreshold = 1 %! 2 - describe "DRep" $ do - let setThreshold :: UnitInterval -> ImpTestM era () - setThreshold threshold = do - drepVotingThresholds <- getsPParams ppDRepVotingThresholdsL - modifyPParams $ - ppDRepVotingThresholdsL - .~ (drepVotingThresholds & dvtCommitteeNormalL .~ threshold) - enactThreshold :: - UnitInterval -> - Credential 'DRepRole (EraCrypto era) -> - Credential 'HotCommitteeRole (EraCrypto era) -> - ImpTestM era () - enactThreshold threshold drepC hotCommitteeC = do - drepVotingThresholds <- getsPParams ppDRepVotingThresholdsL - let paramChange = - ParameterChange - SNothing - ( emptyPParamsUpdate - & ppuDRepVotingThresholdsL - .~ SJust (drepVotingThresholds & dvtCommitteeNormalL .~ threshold) - ) - SNothing - pcGai <- submitGovAction paramChange - submitYesVote_ (DRepVoter drepC) pcGai - submitYesVote_ (CommitteeVoter hotCommitteeC) pcGai - passNEpochs 2 - submitTwoExampleProposalsAndVoteOnTheChild :: - GovPurposeId 'CommitteePurpose era -> - KeyHash 'DRepRole (EraCrypto era) -> - ImpTestM era (GovActionId (EraCrypto era), GovActionId (EraCrypto era)) - submitTwoExampleProposalsAndVoteOnTheChild gpiCC drepKH = do - committeeC <- KeyHashObj <$> freshKeyHash - let updateCC parent = UpdateCommittee parent mempty (Map.singleton committeeC $ EpochNo 5) $ 1 %! 2 - gaiParent <- submitGovAction $ updateCC $ SJust gpiCC - -- We submit a descendent proposal so that even though it is sufficiently - -- voted on, it cannot be ratified before the ParameterChange proposal - -- is enacted. - gaiChild <- submitGovAction $ updateCC $ SJust $ GovPurposeId gaiParent - submitYesVote_ (DRepVoter $ KeyHashObj drepKH) gaiChild - passEpoch -- Make the votes count - pure (gaiParent, gaiChild) - it "Increasing the threshold prevents a hitherto-ratifiable proposal from being ratified" $ do - (drepC, hotCommitteeC, gpiCC) <- electBasicCommittee - setThreshold smallerThreshold - (drepKH, _stakingKH, _paymentKP) <- setupSingleDRep 1_000_000 - (_gaiParent, gaiChild) <- submitTwoExampleProposalsAndVoteOnTheChild gpiCC drepKH - isDRepAccepted gaiChild `shouldReturn` True - enactThreshold largerThreshold drepC hotCommitteeC - isDRepAccepted gaiChild `shouldReturn` False - it "Decreasing the threshold ratifies a hitherto-unratifiable proposal" $ do - (drepC, hotCommitteeC, gpiCC) <- electBasicCommittee - modifyPParams $ ppGovActionLifetimeL .~ EpochInterval 5 - setThreshold largerThreshold - (drepKH, _stakingKH, _paymentKP) <- setupSingleDRep 1_000_000 - (gaiParent, gaiChild) <- submitTwoExampleProposalsAndVoteOnTheChild gpiCC drepKH - isDRepAccepted gaiChild `shouldReturn` False - enactThreshold smallerThreshold drepC hotCommitteeC - isDRepAccepted gaiChild `shouldReturn` True - -- Not vote on the parent too to make sure both get enacted - submitYesVote_ (DRepVoter $ KeyHashObj drepKH) gaiParent - passNEpochs 2 - getLastEnactedCommittee `shouldReturn` SJust (GovPurposeId gaiParent) - passEpoch -- UpdateCommittee is a delaying action - getLastEnactedCommittee `shouldReturn` SJust (GovPurposeId gaiChild) - describe "SPO" $ do - let setThreshold :: UnitInterval -> ImpTestM era () - setThreshold threshold = do - poolVotingThresholds <- getsPParams ppPoolVotingThresholdsL - modifyPParams $ - ppPoolVotingThresholdsL - .~ (poolVotingThresholds & pvtCommitteeNormalL .~ threshold) - enactThreshold :: - UnitInterval -> - Credential 'DRepRole (EraCrypto era) -> - Credential 'HotCommitteeRole (EraCrypto era) -> - ImpTestM era () - enactThreshold threshold drepC hotCommitteeC = do - poolVotingThresholds <- getsPParams ppPoolVotingThresholdsL - let paramChange = - ParameterChange - SNothing - ( emptyPParamsUpdate - & ppuPoolVotingThresholdsL - .~ SJust (poolVotingThresholds & pvtCommitteeNormalL .~ threshold) - ) - SNothing - pcGai <- submitGovAction paramChange - submitYesVote_ (DRepVoter drepC) pcGai - submitYesVote_ (CommitteeVoter hotCommitteeC) pcGai - passNEpochs 2 - submitTwoExampleProposalsAndVoteOnTheChild :: - GovPurposeId 'CommitteePurpose era -> - KeyHash 'StakePool (EraCrypto era) -> - KeyHash 'StakePool (EraCrypto era) -> - Credential 'DRepRole (EraCrypto era) -> - ImpTestM era (GovActionId (EraCrypto era), GovActionId (EraCrypto era)) - submitTwoExampleProposalsAndVoteOnTheChild gpiCC poolKH1 poolKH2 drepC = do - committeeC <- KeyHashObj <$> freshKeyHash - let updateCC parent = UpdateCommittee parent mempty (Map.singleton committeeC $ EpochNo 5) $ 1 %! 2 - gaiParent <- submitGovAction $ updateCC $ SJust gpiCC - -- We submit a descendent proposal so that even though it is sufficiently - -- voted on, it cannot be ratified before the ParameterChange proposal - -- is enacted. - gaiChild <- submitGovAction $ updateCC $ SJust $ GovPurposeId gaiParent - submitYesVote_ (DRepVoter drepC) gaiChild - submitYesVote_ (StakePoolVoter poolKH1) gaiChild - -- Abstained stake is not counted in the total stake in case of SPOs - submitVote_ VoteNo (StakePoolVoter poolKH2) gaiChild - passEpoch -- Make the votes count do - pure (gaiParent, gaiChild) - it "Increasing the threshold prevents a hitherto-ratifiable proposal from being ratified" $ do - (drepC, hotCommitteeC, gpiCC) <- electBasicCommittee - setThreshold smallerThreshold - (poolKH1, _paymentC1, _stakingC1) <- setupPoolWithStake $ Coin 1_000_000 - (poolKH2, _paymentC2, _stakingC2) <- setupPoolWithStake $ Coin 1_000_000 - passEpoch -- Make the new pool distribution count - (_gaiParent, gaiChild) <- submitTwoExampleProposalsAndVoteOnTheChild gpiCC poolKH1 poolKH2 drepC - isSpoAccepted gaiChild `shouldReturn` True - enactThreshold largerThreshold drepC hotCommitteeC - isSpoAccepted gaiChild `shouldReturn` False - it "Decreasing the threshold ratifies a hitherto-unratifiable proposal" $ do - (drepC, hotCommitteeC, gpiCC) <- electBasicCommittee - modifyPParams $ ppGovActionLifetimeL .~ EpochInterval 5 - setThreshold largerThreshold - (poolKH1, _paymentC1, _stakingC1) <- setupPoolWithStake $ Coin 1_000_000 - (poolKH2, _paymentC2, _stakingC2) <- setupPoolWithStake $ Coin 1_000_000 - (gaiParent, gaiChild) <- submitTwoExampleProposalsAndVoteOnTheChild gpiCC poolKH1 poolKH2 drepC - isSpoAccepted gaiChild `shouldReturn` False - enactThreshold smallerThreshold drepC hotCommitteeC - isSpoAccepted gaiChild `shouldReturn` True - -- Not vote on the parent too to make sure both get enacted - submitYesVote_ (DRepVoter drepC) gaiParent - submitYesVote_ (StakePoolVoter poolKH1) gaiParent - logRatificationChecks gaiParent - logRatificationChecks gaiChild - passNEpochs 2 - getLastEnactedCommittee `shouldReturn` SJust (GovPurposeId gaiParent) - passEpoch -- UpdateCommittee is a delaying action - getLastEnactedCommittee `shouldReturn` SJust (GovPurposeId gaiChild) - it "A parent ParameterChange proposal can prevent its child from being enacted" $ do - (drepC, hotCommitteeC, _gpiCC) <- electBasicCommittee - -- Setup one other DRep with equal stake - (_drepKH, _, _) <- setupSingleDRep 1_000_000 - -- Set a smaller DRep threshold - drepVotingThresholds <- getsPParams ppDRepVotingThresholdsL - modifyPParams $ - ppDRepVotingThresholdsL - .~ (drepVotingThresholds & dvtPPGovGroupL .~ smallerThreshold) - -- Submit a parent-child sequence of ParameterChange proposals and vote on - -- both equally, so that both may be ratified. But, the parent increases - -- the threshold, and it should prevent the child from being ratified. - let paramChange parent threshold = - ParameterChange - parent - ( emptyPParamsUpdate - & ppuDRepVotingThresholdsL - .~ SJust (drepVotingThresholds & dvtPPGovGroupL .~ threshold) - ) - SNothing - parentGai <- submitGovAction $ paramChange SNothing largerThreshold - childGai <- submitGovAction $ paramChange (SJust $ GovPurposeId parentGai) smallerThreshold - submitYesVote_ (DRepVoter drepC) parentGai - submitYesVote_ (CommitteeVoter hotCommitteeC) parentGai - submitYesVote_ (DRepVoter drepC) childGai - submitYesVote_ (CommitteeVoter hotCommitteeC) childGai - passEpoch - logRatificationChecks parentGai - logRatificationChecks childGai - isDRepAccepted parentGai `shouldReturn` True - isDRepAccepted childGai `shouldReturn` True - passEpoch - getLastEnactedParameterChange `shouldReturn` SJust (GovPurposeId parentGai) - Map.member (GovPurposeId childGai) <$> getParameterChangeProposals `shouldReturn` True - isDRepAccepted childGai `shouldReturn` False - -committeeMinSizeAffectsInFlightProposalsSpec :: - forall era. - ConwayEraImp era => - SpecWith (ImpTestState era) -committeeMinSizeAffectsInFlightProposalsSpec = - describe "CommitteeMinSize affects in-flight proposals" $ do - let setCommitteeMinSize n = modifyPParams $ ppCommitteeMinSizeL .~ n - submitATreasuryWithdrawal = do - rewardAccount <- registerRewardAccount - submitTreasuryWithdrawals [(rewardAccount, Coin 1_000)] - it "TreasuryWithdrawal fails to ratify due to an increase in CommitteeMinSize" $ do - (drepC, hotCommitteeC, _gpiCC) <- electBasicCommittee - setCommitteeMinSize 1 - gaiTW <- submitATreasuryWithdrawal - submitYesVote_ (CommitteeVoter hotCommitteeC) gaiTW - submitYesVote_ (DRepVoter drepC) gaiTW - isCommitteeAccepted gaiTW `shouldReturn` True - gaiPC <- - submitParameterChange SNothing $ - emptyPParamsUpdate - & ppuCommitteeMinSizeL .~ SJust 2 - submitYesVote_ (CommitteeVoter hotCommitteeC) gaiPC - submitYesVote_ (DRepVoter drepC) gaiPC - treasury <- getsNES $ nesEsL . esAccountStateL . asTreasuryL - passNEpochs 2 - -- The ParameterChange prevents the TreasuryWithdrawal from being enacted, - -- because it has higher priority. - getLastEnactedParameterChange `shouldReturn` SJust (GovPurposeId gaiPC) - isCommitteeAccepted gaiTW `shouldReturn` False - currentProposalsShouldContain gaiTW - getsNES (nesEsL . esAccountStateL . asTreasuryL) `shouldReturn` treasury - it "TreasuryWithdrawal ratifies due to a decrease in CommitteeMinSize" $ do - (drepC, hotCommitteeC, gpiCC) <- electBasicCommittee - modifyPParams $ ppGovActionLifetimeL .~ EpochInterval 10 - treasury <- getsNES $ nesEsL . esAccountStateL . asTreasuryL - gaiTW <- submitATreasuryWithdrawal - submitYesVote_ (CommitteeVoter hotCommitteeC) gaiTW - submitYesVote_ (DRepVoter drepC) gaiTW - setCommitteeMinSize 2 - isCommitteeAccepted gaiTW `shouldReturn` False - passNEpochs 2 - getsNES (nesEsL . esAccountStateL . asTreasuryL) `shouldReturn` treasury - -- We do not enact the ParameterChange here because that does not pass - -- ratification as the CC size is smaller than MinSize. - -- We instead just add another Committee member to reach the CommitteeMinSize. - coldCommitteeC' <- KeyHashObj <$> freshKeyHash - gaiCC <- - submitGovAction $ - UpdateCommittee - (SJust gpiCC) - Set.empty - (Map.singleton coldCommitteeC' $ EpochNo 10) - (1 %! 2) - submitYesVote_ (DRepVoter drepC) gaiCC - passNEpochs 2 - _hotCommitteeC' <- registerCommitteeHotKey coldCommitteeC' - isCommitteeAccepted gaiTW `shouldReturn` True - passNEpochs 2 - getsNES (nesEsL . esAccountStateL . asTreasuryL) `shouldReturn` (treasury <-> Coin 1_000) - -spoVotesForHardForkInitiation :: - forall era. - ConwayEraImp era => - SpecWith (ImpTestState era) -spoVotesForHardForkInitiation = - describe "Counting of SPO votes" $ do - it "HardForkInitiation" $ do - (_dRepC, hotCC, _gpi) <- electBasicCommittee - (spoK1, _paymentC1, _stakingC1) <- setupPoolWithStake $ Coin 1_000 - (spoK2, _paymentC2, _stakingC2) <- setupPoolWithStake $ Coin 1_000 - (_spoK3, _paymentC3, _stakingC3) <- setupPoolWithStake $ Coin 1_000 - (_spoK4, _paymentC4, _stakingC4) <- setupPoolWithStake $ Coin 1_000 - modifyPParams $ ppPoolVotingThresholdsL . pvtHardForkInitiationL .~ 1 %! 2 - protVer <- getsNES $ nesEsL . curPParamsEpochStateL . ppProtocolVersionL - gai <- submitGovAction $ HardForkInitiation SNothing (majorFollow protVer) - submitYesVote_ (CommitteeVoter hotCC) gai - -- 1 % 4 stake yes; 3 % 4 stake no; yes / stake - abstain < 1 % 2 - submitYesVote_ (StakePoolVoter spoK1) gai - passNEpochs 2 - logRatificationChecks gai - isSpoAccepted gai `shouldReturn` False - getLastEnactedHardForkInitiation `shouldReturn` SNothing - -- 1 % 2 stake yes; 1 % 2 stake no; yes / stake - abstain = 1 % 2 - submitYesVote_ (StakePoolVoter spoK2) gai - isSpoAccepted gai `shouldReturn` True - passNEpochs 2 - getLastEnactedHardForkInitiation `shouldReturn` SJust (GovPurposeId gai) - describe "All gov action other than HardForkInitiation" $ do - it "NoConfidence" $ do - (spoK1, _paymentC1, _stakingC1) <- setupPoolWithStake $ Coin 1_000 - (_spoK2, _paymentC2, _stakingC2) <- setupPoolWithStake $ Coin 1_000 - (_spoK3, _paymentC3, _stakingC3) <- setupPoolWithStake $ Coin 1_000 - (_spoK4, _paymentC4, _stakingC4) <- setupPoolWithStake $ Coin 1_000 - modifyPParams $ ppPoolVotingThresholdsL . pvtMotionNoConfidenceL .~ 1 %! 2 - gai <- submitGovAction $ NoConfidence SNothing - -- 1 % 4 stake yes; 3 % 4 stake abstain; yes / stake - abstain > 1 % 2 - submitYesVote_ (StakePoolVoter spoK1) gai - passNEpochs 2 - getLastEnactedCommittee `shouldReturn` SJust (GovPurposeId gai) - it "CommitteeUpdate" $ do - (spoK1, _paymentC1, _stakingC1) <- setupPoolWithStake $ Coin 1_000 - (_spoK2, _paymentC2, _stakingC2) <- setupPoolWithStake $ Coin 1_000 - (_spoK3, _paymentC3, _stakingC3) <- setupPoolWithStake $ Coin 1_000 - (_spoK4, _paymentC4, _stakingC4) <- setupPoolWithStake $ Coin 1_000 - modifyPParams $ ppPoolVotingThresholdsL . pvtCommitteeNormalL .~ 1 %! 2 - modifyPParams $ ppCommitteeMaxTermLengthL .~ EpochInterval 10 - committeeC <- KeyHashObj <$> freshKeyHash - gai <- - submitGovAction $ - UpdateCommittee SNothing mempty (Map.singleton committeeC $ EpochNo 5) $ - 1 %! 2 - -- 1 % 4 stake yes; 3 % 4 stake abstain; yes / stake - abstain > 1 % 2 - submitYesVote_ (StakePoolVoter spoK1) gai - passNEpochs 2 - getLastEnactedCommittee `shouldReturn` SJust (GovPurposeId gai) - -votingSpec :: - forall era. - ConwayEraImp era => - SpecWith (ImpTestState era) -votingSpec = - describe "Voting" $ do - it "SPO needs to vote on security-relevant parameter changes" $ do - (drep, ccCred, _) <- electBasicCommittee - (khPool, _, _) <- setupPoolWithStake $ Coin 42_000_000 - initMinFeeA <- getsNES $ nesEsL . curPParamsEpochStateL . ppMinFeeAL - gaidThreshold <- impAnn "Update StakePool thresholds" $ do - pp <- getsNES $ nesEsL . curPParamsEpochStateL - (pp ^. ppPoolVotingThresholdsL . pvtPPSecurityGroupL) `shouldBe` minBound - rew <- registerRewardAccount - let ppUpdate = - emptyPParamsUpdate - & ppuPoolVotingThresholdsL - .~ SJust - PoolVotingThresholds - { pvtPPSecurityGroup = 1 %! 2 - , pvtMotionNoConfidence = 1 %! 2 - , pvtHardForkInitiation = 1 %! 2 - , pvtCommitteeNormal = 1 %! 2 - , pvtCommitteeNoConfidence = 1 %! 2 - } - & ppuGovActionLifetimeL .~ SJust (EpochInterval 100) - gaidThreshold <- - submitProposal $ - ProposalProcedure - { pProcReturnAddr = rew - , pProcGovAction = ParameterChange SNothing ppUpdate SNothing - , pProcDeposit = pp ^. ppGovActionDepositL - , pProcAnchor = def - } - submitYesVote_ (DRepVoter drep) gaidThreshold - submitYesVote_ (CommitteeVoter ccCred) gaidThreshold - logAcceptedRatio gaidThreshold - pure gaidThreshold - passEpoch - logAcceptedRatio gaidThreshold - passEpoch - let newMinFeeA = Coin 12_345 - gaidMinFee <- do - pp <- getsNES $ nesEsL . curPParamsEpochStateL - impAnn "Security group threshold should be 1/2" $ - (pp ^. ppPoolVotingThresholdsL . pvtPPSecurityGroupL) `shouldBe` (1 %! 2) - rew <- registerRewardAccount - gaidMinFee <- - submitProposal $ - ProposalProcedure - { pProcReturnAddr = rew - , pProcGovAction = - ParameterChange - (SJust (GovPurposeId gaidThreshold)) - ( emptyPParamsUpdate - & ppuMinFeeAL .~ SJust newMinFeeA - ) - SNothing - , pProcDeposit = pp ^. ppGovActionDepositL - , pProcAnchor = def - } - submitYesVote_ (DRepVoter drep) gaidMinFee - submitYesVote_ (CommitteeVoter ccCred) gaidMinFee - pure gaidMinFee - passEpoch - logAcceptedRatio gaidMinFee - passEpoch - do - pp <- getsNES $ nesEsL . curPParamsEpochStateL - (pp ^. ppMinFeeAL) `shouldBe` initMinFeeA - submitYesVote_ (StakePoolVoter khPool) gaidMinFee - passEpoch - logStakeDistr - logAcceptedRatio gaidMinFee - logRatificationChecks gaidMinFee - passEpoch - pp <- getsNES $ nesEsL . curPParamsEpochStateL - (pp ^. ppMinFeeAL) `shouldBe` newMinFeeA - describe "Active voting stake" $ do - describe "DRep" $ do - it "UTxOs contribute to active voting stake" $ do - -- Only modify the applicable thresholds - modifyPParams $ \pp -> - pp - & ppDRepVotingThresholdsL - .~ def - { dvtCommitteeNormal = 51 %! 100 - , dvtCommitteeNoConfidence = 51 %! 100 - } - & ppCommitteeMaxTermLengthL .~ EpochInterval 20 - -- Setup DRep delegation #1 - (drepKH1, stakingKH1, paymentKP1) <- setupSingleDRep 1_000_000 - -- Setup DRep delegation #2 - (_drepKH2, _stakingKH2, _paymentKP2) <- setupSingleDRep 1_000_000 - -- Submit a committee proposal - cc <- KeyHashObj <$> freshKeyHash - let addCCAction = UpdateCommittee SNothing mempty (Map.singleton cc 10) (75 %! 100) - addCCGaid <- submitGovAction addCCAction - -- Submit the vote - submitVote_ VoteYes (DRepVoter $ KeyHashObj drepKH1) addCCGaid - passNEpochs 2 - -- The vote should not result in a ratification - isDRepAccepted addCCGaid `shouldReturn` False - getLastEnactedCommittee `shouldReturn` SNothing - -- Bump up the UTxO delegated - -- to barely make the threshold (51 %! 100) - stakingKP1 <- lookupKeyPair stakingKH1 - _ <- sendCoinTo (mkAddr (paymentKP1, stakingKP1)) (inject $ Coin 200_000) - passNEpochs 2 - -- The same vote should now successfully ratify the proposal - getLastEnactedCommittee `shouldReturn` SJust (GovPurposeId addCCGaid) - it "Rewards contribute to active voting stake" $ do - -- Only modify the applicable thresholds - modifyPParams $ \pp -> - pp - & ppDRepVotingThresholdsL - .~ def - { dvtCommitteeNormal = 51 %! 100 - , dvtCommitteeNoConfidence = 51 %! 100 - } - & ppCommitteeMaxTermLengthL .~ EpochInterval 20 - -- Setup DRep delegation #1 - (drepKH1, stakingKH1, _paymentKP1) <- setupSingleDRep 1_000_000 - -- Setup DRep delegation #2 - (_drepKH2, _stakingKH2, _paymentKP2) <- setupSingleDRep 1_000_000 - -- Submit a committee proposal - cc <- KeyHashObj <$> freshKeyHash - let addCCAction = UpdateCommittee SNothing mempty (Map.singleton cc 10) (75 %! 100) - addCCGaid <- submitGovAction addCCAction - -- Submit the vote - submitVote_ VoteYes (DRepVoter $ KeyHashObj drepKH1) addCCGaid - passNEpochs 2 - -- The vote should not result in a ratification - isDRepAccepted addCCGaid `shouldReturn` False - getLastEnactedCommittee `shouldReturn` SNothing - -- Add to the rewards of the delegator to this DRep - -- to barely make the threshold (51 %! 100) - modifyNES $ - nesEsL . epochStateUMapL - %~ UM.adjust - (\(UM.RDPair r d) -> UM.RDPair (r <> UM.CompactCoin 200_000) d) - (KeyHashObj stakingKH1) - . UM.RewDepUView - passNEpochs 2 - -- The same vote should now successfully ratify the proposal - getLastEnactedCommittee `shouldReturn` SJust (GovPurposeId addCCGaid) - describe "StakePool" $ do - it "UTxOs contribute to active voting stake" $ do - -- Only modify the applicable thresholds - modifyPParams $ \pp -> - pp - & ppPoolVotingThresholdsL - .~ def - { pvtCommitteeNormal = 51 %! 100 - , pvtCommitteeNoConfidence = 51 %! 100 - } - & ppCommitteeMaxTermLengthL .~ EpochInterval 20 - -- Setup Pool delegation #1 - (poolKH1, delegatorCPayment1, delegatorCStaking1) <- setupPoolWithStake $ Coin 1_000_000 - -- Setup Pool delegation #2 - (poolKH2, _delegatorCPayment2, _delegatorCStaking2) <- setupPoolWithStake $ Coin 1_000_000 - passEpoch - -- Submit a committee proposal - cc <- KeyHashObj <$> freshKeyHash - let addCCAction = UpdateCommittee SNothing mempty (Map.singleton cc 10) (75 %! 100) - addCCGaid <- submitGovAction addCCAction - -- Submit the vote - submitVote_ VoteYes (StakePoolVoter poolKH1) addCCGaid - submitVote_ VoteNo (StakePoolVoter poolKH2) addCCGaid - passNEpochs 2 - -- The vote should not result in a ratification - logRatificationChecks addCCGaid - isSpoAccepted addCCGaid `shouldReturn` False - getLastEnactedCommittee `shouldReturn` SNothing - -- Bump up the UTxO delegated - -- to barely make the threshold (51 %! 100) - _ <- - sendCoinTo - (Addr Testnet delegatorCPayment1 (StakeRefBase delegatorCStaking1)) - (Coin 200_000) - passNEpochs 2 - -- The same vote should now successfully ratify the proposal - getLastEnactedCommittee `shouldReturn` SJust (GovPurposeId addCCGaid) - it "Rewards contribute to active voting stake" $ do - -- Only modify the applicable thresholds - modifyPParams $ \pp -> - pp - & ppPoolVotingThresholdsL - .~ def - { pvtCommitteeNormal = 51 %! 100 - , pvtCommitteeNoConfidence = 51 %! 100 - } - & ppCommitteeMaxTermLengthL .~ EpochInterval 20 - -- Setup Pool delegation #1 - (poolKH1, _delegatorCPayment1, delegatorCStaking1) <- setupPoolWithStake $ Coin 1_000_000 - -- Setup Pool delegation #2 - (poolKH2, _delegatorCPayment2, _delegatorCStaking2) <- setupPoolWithStake $ Coin 1_000_000 - passEpoch - -- Submit a committee proposal - cc <- KeyHashObj <$> freshKeyHash - let addCCAction = UpdateCommittee SNothing mempty (Map.singleton cc 10) (75 %! 100) - addCCGaid <- submitGovAction addCCAction - -- Submit the vote - submitVote_ VoteYes (StakePoolVoter poolKH1) addCCGaid - submitVote_ VoteNo (StakePoolVoter poolKH2) addCCGaid - passNEpochs 2 - -- The vote should not result in a ratification - isSpoAccepted addCCGaid `shouldReturn` False - getLastEnactedCommittee `shouldReturn` SNothing - -- Add to the rewards of the delegator to this SPO - -- to barely make the threshold (51 %! 100) - modifyNES $ - nesEsL . epochStateUMapL - %~ UM.adjust - (\(UM.RDPair r d) -> UM.RDPair (r <> UM.CompactCoin 200_000) d) - delegatorCStaking1 - . UM.RewDepUView - passNEpochs 2 - -- The same vote should now successfully ratify the proposal - getLastEnactedCommittee `shouldReturn` SJust (GovPurposeId addCCGaid) - -delayingActionsSpec :: - forall era. - ConwayEraImp era => - SpecWith (ImpTestState era) -delayingActionsSpec = - describe "Delaying actions" $ do - it "A delaying action delays its child even when both ere proposed and ratified in the same epoch" $ do - (dRep, committeeMember, _gpi) <- electBasicCommittee - modifyPParams $ ppGovActionLifetimeL .~ EpochInterval 5 - gai0 <- submitInitConstitutionGovAction - gai1 <- submitChildConstitutionGovAction gai0 - gai2 <- submitChildConstitutionGovAction gai1 - gai3 <- submitChildConstitutionGovAction gai2 - submitYesVote_ (DRepVoter dRep) gai0 - submitYesVote_ (CommitteeVoter committeeMember) gai0 - submitYesVote_ (DRepVoter dRep) gai1 - submitYesVote_ (CommitteeVoter committeeMember) gai1 - submitYesVote_ (DRepVoter dRep) gai2 - submitYesVote_ (CommitteeVoter committeeMember) gai2 - submitYesVote_ (DRepVoter dRep) gai3 - submitYesVote_ (CommitteeVoter committeeMember) gai3 - passNEpochs 2 - getLastEnactedConstitution `shouldReturn` SJust (GovPurposeId gai0) - passEpoch - getLastEnactedConstitution `shouldReturn` SJust (GovPurposeId gai1) - passEpoch - getLastEnactedConstitution `shouldReturn` SJust (GovPurposeId gai2) - passEpoch - getLastEnactedConstitution `shouldReturn` SJust (GovPurposeId gai3) - getConstitutionProposals `shouldReturn` Map.empty - it - "A delaying action delays all other actions even when all of them may be ratified in the same epoch" - $ do - (dRep, committeeMember, _gpi) <- electBasicCommittee - modifyPParams $ ppGovActionLifetimeL .~ EpochInterval 5 - pGai0 <- - submitParameterChange - SNothing - $ def & ppuDRepDepositL .~ SJust (Coin 1_000_000) - pGai1 <- - submitParameterChange - (SJust $ GovPurposeId pGai0) - $ def & ppuDRepDepositL .~ SJust (Coin 1_000_001) - pGai2 <- - submitParameterChange - (SJust $ GovPurposeId pGai1) - $ def & ppuDRepDepositL .~ SJust (Coin 1_000_002) - cGai0 <- submitInitConstitutionGovAction - cGai1 <- submitChildConstitutionGovAction cGai0 - submitYesVote_ (DRepVoter dRep) cGai0 - submitYesVote_ (CommitteeVoter committeeMember) cGai0 - submitYesVote_ (DRepVoter dRep) cGai1 - submitYesVote_ (CommitteeVoter committeeMember) cGai1 - submitYesVote_ (DRepVoter dRep) pGai0 - submitYesVote_ (CommitteeVoter committeeMember) pGai0 - submitYesVote_ (DRepVoter dRep) pGai1 - submitYesVote_ (CommitteeVoter committeeMember) pGai1 - submitYesVote_ (DRepVoter dRep) pGai2 - submitYesVote_ (CommitteeVoter committeeMember) pGai2 - passNEpochs 2 - getLastEnactedConstitution `shouldReturn` SJust (GovPurposeId cGai0) - getLastEnactedParameterChange `shouldReturn` SNothing - passEpoch - -- here 'ParameterChange' action does not get enacted even though - -- it is not related, since its priority is 4 while the priority - -- for 'NewConstitution' is 2, so it gets delayed a second time - getLastEnactedConstitution `shouldReturn` SJust (GovPurposeId cGai1) - getConstitutionProposals `shouldReturn` Map.empty - getLastEnactedParameterChange `shouldReturn` SNothing - passEpoch - -- all three actions, pGai0, pGai1 and pGai2, are enacted one - -- after the other in the same epoch - getLastEnactedParameterChange `shouldReturn` SJust (GovPurposeId pGai2) - getParameterChangeProposals `shouldReturn` Map.empty - describe "An action expires when delayed enough even after being ratified" $ do - it "Same lineage" $ do - (dRep, committeeMember, _gpi) <- electBasicCommittee - gai0 <- submitInitConstitutionGovAction - gai1 <- submitChildConstitutionGovAction gai0 - gai2 <- submitChildConstitutionGovAction gai1 - gai3 <- submitChildConstitutionGovAction gai2 - submitYesVote_ (DRepVoter dRep) gai0 - submitYesVote_ (CommitteeVoter committeeMember) gai0 - submitYesVote_ (DRepVoter dRep) gai1 - submitYesVote_ (CommitteeVoter committeeMember) gai1 - submitYesVote_ (DRepVoter dRep) gai2 - submitYesVote_ (CommitteeVoter committeeMember) gai2 - submitYesVote_ (DRepVoter dRep) gai3 - submitYesVote_ (CommitteeVoter committeeMember) gai3 - passNEpochs 2 - getLastEnactedConstitution `shouldReturn` SJust (GovPurposeId gai0) - passEpoch - getLastEnactedConstitution `shouldReturn` SJust (GovPurposeId gai1) - passEpoch - getLastEnactedConstitution `shouldReturn` SJust (GovPurposeId gai2) - getConstitutionProposals `shouldReturn` Map.empty - passEpoch - getLastEnactedConstitution `shouldReturn` SJust (GovPurposeId gai2) - it "Other lineage" $ do - (dRep, committeeMember, _gpi) <- electBasicCommittee - pGai0 <- - submitParameterChange - SNothing - $ def & ppuDRepDepositL .~ SJust (Coin 1_000_000) - pGai1 <- - submitParameterChange - (SJust $ GovPurposeId pGai0) - $ def & ppuDRepDepositL .~ SJust (Coin 1_000_001) - pGai2 <- - submitParameterChange - (SJust $ GovPurposeId pGai1) - $ def & ppuDRepDepositL .~ SJust (Coin 1_000_002) - cGai0 <- submitInitConstitutionGovAction - cGai1 <- submitChildConstitutionGovAction cGai0 - cGai2 <- submitChildConstitutionGovAction cGai1 - submitYesVote_ (DRepVoter dRep) cGai0 - submitYesVote_ (CommitteeVoter committeeMember) cGai0 - submitYesVote_ (DRepVoter dRep) cGai1 - submitYesVote_ (CommitteeVoter committeeMember) cGai1 - submitYesVote_ (DRepVoter dRep) cGai2 - submitYesVote_ (CommitteeVoter committeeMember) cGai2 - submitYesVote_ (DRepVoter dRep) pGai0 - submitYesVote_ (CommitteeVoter committeeMember) pGai0 - submitYesVote_ (DRepVoter dRep) pGai1 - submitYesVote_ (CommitteeVoter committeeMember) pGai1 - submitYesVote_ (DRepVoter dRep) pGai2 - submitYesVote_ (CommitteeVoter committeeMember) pGai2 - passNEpochs 2 - getLastEnactedConstitution `shouldReturn` SJust (GovPurposeId cGai0) - getLastEnactedParameterChange `shouldReturn` SNothing - passEpoch - getLastEnactedConstitution `shouldReturn` SJust (GovPurposeId cGai1) - getLastEnactedParameterChange `shouldReturn` SNothing - passEpoch - getLastEnactedConstitution `shouldReturn` SJust (GovPurposeId cGai2) - getConstitutionProposals `shouldReturn` Map.empty - getLastEnactedParameterChange `shouldReturn` SNothing - passEpoch - -- all three actions, pGai0, pGai1 and pGai2, are expired here - -- and nothing gets enacted - getLastEnactedParameterChange `shouldReturn` SNothing - getParameterChangeProposals `shouldReturn` Map.empty - it "proposals to update the committee get delayed if the expiration exceeds the max term" $ do - let expectMembers :: - HasCallStack => Set.Set (Credential 'ColdCommitteeRole (EraCrypto era)) -> ImpTestM era () - expectMembers expKhs = do - committee <- - getsNES $ - nesEsL . esLStateL . lsUTxOStateL . utxosGovStateL . committeeGovStateL - let members = Map.keysSet $ foldMap' committeeMembers committee - impAnn "Expecting committee members" $ members `shouldBe` expKhs - setPParams :: HasCallStack => ImpTestM era () - setPParams = do - modifyPParams $ \pp -> - pp - & ppDRepVotingThresholdsL - .~ def - { dvtCommitteeNormal = 1 %! 1 - , dvtCommitteeNoConfidence = 1 %! 2 - , dvtUpdateToConstitution = 1 %! 2 - } - & ppCommitteeMaxTermLengthL .~ EpochInterval 10 - & ppGovActionLifetimeL .~ EpochInterval 100 - & ppGovActionDepositL .~ Coin 123 - - setPParams - (drep, _, _) <- setupSingleDRep 1_000_000 - maxTermLength <- - getsNES $ - nesEsL . esLStateL . lsUTxOStateL . utxosGovStateL . curPParamsGovStateL . ppCommitteeMaxTermLengthL - - (initialMembers, govIdCom1) <- - impAnn "Initial committee is enacted" $ do - c1 <- freshKeyHash - c2 <- freshKeyHash - currentEpoch <- getsNES nesELL - let maxExpiry = addEpochInterval currentEpoch maxTermLength - let initialMembers = [(KeyHashObj c1, maxExpiry), (KeyHashObj c2, maxExpiry)] - govIdCom1 <- - electCommittee - SNothing - drep - Set.empty - initialMembers - passEpoch >> passEpoch - expectMembers $ Map.keysSet initialMembers - pure (Map.keysSet initialMembers, govIdCom1) - - (membersExceedingExpiry, exceedingExpiry) <- - impAnn "Committee with members exceeding the maxTerm is not enacted" $ do - -- submit a proposal for adding two members to the committee, - -- one of which has a max term exceeding the maximum - c3 <- freshKeyHash - c4 <- freshKeyHash - currentEpoch <- getsNES nesELL - let exceedingExpiry = addEpochInterval (addEpochInterval currentEpoch maxTermLength) (EpochInterval 7) - let membersExceedingExpiry = [(KeyHashObj c3, exceedingExpiry), (KeyHashObj c4, addEpochInterval currentEpoch maxTermLength)] - _ <- - electCommittee - (SJust govIdCom1) - drep - Set.empty - membersExceedingExpiry - passEpoch >> passEpoch - -- the new committee has not been enacted - expectMembers initialMembers - pure (Map.keysSet membersExceedingExpiry, exceedingExpiry) - - -- other actions get ratified and enacted - govIdConst1 <- impAnn "Other actions are ratified and enacted" $ do - (govIdConst1, constitution) <- submitConstitution SNothing - submitYesVote_ (DRepVoter (KeyHashObj drep)) govIdConst1 - hks <- traverse registerCommitteeHotKey (Set.toList initialMembers) - traverse_ (\m -> submitYesVote_ (CommitteeVoter m) govIdConst1) hks - - passEpoch >> passEpoch - curConstitution <- getsNES $ newEpochStateGovStateL . constitutionGovStateL - curConstitution `shouldBe` constitution - pure govIdConst1 - - -- after enough epochs pass, the expiration of the new members becomes acceptable - -- and the new committee is enacted - impAnn "New committee is enacted" $ do - currentEpoch <- getsNES nesELL - let delta = - fromIntegral (unEpochNo exceedingExpiry) - - fromIntegral (unEpochNo (addEpochInterval currentEpoch maxTermLength)) - replicateM_ delta passEpoch - - -- pass one more epoch after ratification, in order to be enacted - passEpoch - expectMembers $ initialMembers <> membersExceedingExpiry - - impAnn "New committee can vote" $ do - (govIdConst2, constitution) <- submitConstitution $ SJust (GovPurposeId govIdConst1) - submitYesVote_ (DRepVoter (KeyHashObj drep)) govIdConst2 - hks <- traverse registerCommitteeHotKey (Set.toList membersExceedingExpiry) - traverse_ (\m -> submitYesVote_ (CommitteeVoter m) govIdConst2) hks - - passEpoch >> passEpoch - curConstitution <- getsNES $ newEpochStateGovStateL . constitutionGovStateL - curConstitution `shouldBe` constitution diff --git a/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Imp/UtxoSpec.hs b/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Imp/UtxoSpec.hs deleted file mode 100644 index aae54302565..00000000000 --- a/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Imp/UtxoSpec.hs +++ /dev/null @@ -1,165 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Test.Cardano.Ledger.Conway.Imp.UtxoSpec (spec) where - -import Cardano.Ledger.Address -import Cardano.Ledger.Allegra.Scripts ( - pattern RequireAllOf, - pattern RequireSignature, - ) -import Cardano.Ledger.Alonzo.Scripts -import Cardano.Ledger.Babbage.TxBody (referenceInputsTxBodyL) -import Cardano.Ledger.Babbage.TxOut (referenceScriptTxOutL) -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Conway.PParams (ppMinFeeRefScriptCostPerByteL) -import Cardano.Ledger.MemoBytes (getMemoRawBytes) -import Cardano.Ledger.Plutus.Language (SLanguage (..), hashPlutusScript, plutusBinary) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState -import Cardano.Ledger.Shelley.UTxO (getShelleyMinFeeTxUtxo) -import Cardano.Ledger.TxIn (TxIn (..)) -import Cardano.Ledger.UTxO (getMinFeeTxUtxo) -import Cardano.Ledger.Val -import qualified Data.ByteString.Short as SBS (length) -import Data.Functor ((<&>)) -import qualified Data.Map.Strict as Map -import qualified Data.Sequence.Strict as SSeq -import qualified Data.Set as Set -import Lens.Micro ((&), (.~), (^.)) -import Test.Cardano.Ledger.Conway.ImpTest -import Test.Cardano.Ledger.Core.KeyPair (mkScriptAddr) -import Test.Cardano.Ledger.Core.Rational ((%!)) -import Test.Cardano.Ledger.Core.Utils (txInAt) -import Test.Cardano.Ledger.Imp.Common -import Test.Cardano.Ledger.Plutus.Examples (alwaysSucceeds3) - -spec :: - forall era. - ConwayEraImp era => - SpecWith (ImpTestState era) -spec = describe "UTxO" $ do - describe "Reference scripts" $ do - it "required reference script counts towards the minFee calculation" $ do - spendingScript <- nativeScript - checkMinFee spendingScript [fromNativeScript spendingScript] - - it "reference scripts not required for spending the input count towards the minFee calculation" $ do - spendingScript <- nativeScript - extraScripts <- distinctScripts - checkMinFee spendingScript $ - fromNativeScript spendingScript : extraScripts - - it "a scripts referenced several times counts for each reference towards the minFee calculation" $ do - spendingScript <- nativeScript - extraScripts <- distinctScripts - checkMinFee spendingScript $ - [fromNativeScript spendingScript, fromNativeScript spendingScript] - ++ extraScripts - ++ extraScripts - where - checkMinFee :: NativeScript era -> [Script era] -> ImpTestM era () - checkMinFee scriptToSpend refScripts = do - refScriptFee <- setRefScriptFee - logEntry "lock an input with a script" - scriptSpendIn <- createScriptUtxo scriptToSpend - logEntry - "create outputs with reference scripts and the return them mapped to their corresponding inputs" - refScriptInToScripts <- createRefScriptsUtxos refScripts - logEntry "spend the initial input by passing the reference scripts" - tx <- spendScriptUsingRefScripts scriptSpendIn $ Map.keysSet refScriptInToScripts - logEntry - "compute the difference between the current-era minFee and that computed in pre-Conway eras" - minFeeDiff <- conwayDiffMinFee tx - logEntry "check that the difference is the sum of the sizes of the passed reference scripts" - minFeeDiff - `shouldBe` Coin - ( floor $ - fromIntegral @Int @Rational (sum $ scriptSize <$> refScriptInToScripts) - * unboundRational refScriptFee - ) - - distinctScripts :: ImpTestM era [Script era] - distinctScripts = do - nativeScripts <- - (fromNativeScript @era <$>) - <$> replicateM 3 nativeScript - let - psh1 = hashPlutusScript $ alwaysSucceeds3 SPlutusV3 - ps1 <- impAnn "Expecting Plutus script" . expectJust $ impLookupPlutusScriptMaybe psh1 - let - psh2 = hashPlutusScript $ alwaysSucceeds3 SPlutusV3 - ps2 <- impAnn "Expecting Plutus script" . expectJust $ impLookupPlutusScriptMaybe psh2 - let plutusScripts = [fromPlutusScript ps1, fromPlutusScript ps2] - pure $ nativeScripts ++ plutusScripts - - conwayDiffMinFee :: Tx era -> ImpTestM era Coin - conwayDiffMinFee tx = do - utxo <- getUTxO - pp <- getsNES $ nesEsL . curPParamsEpochStateL - pure $ getMinFeeTxUtxo pp tx utxo <-> getShelleyMinFeeTxUtxo pp tx - - createScriptUtxo :: NativeScript era -> ImpTestM era (TxIn (EraCrypto era)) - createScriptUtxo script = do - scriptAddr <- addScriptAddr script - tx <- - submitTx . mkBasicTx $ - mkBasicTxBody - & outputsTxBodyL @era - .~ SSeq.fromList [mkBasicTxOut @era scriptAddr (inject (Coin 1000))] - pure $ txInAt (0 :: Int) tx - - createRefScriptsUtxos :: [Script era] -> ImpTestM era (Map.Map (TxIn (EraCrypto era)) (Script era)) - createRefScriptsUtxos scripts = do - rootOut <- snd <$> lookupImpRootTxOut - let outs = - scripts - <&> ( \s -> - mkBasicTxOut @era (rootOut ^. addrTxOutL) (inject (Coin 100)) - & referenceScriptTxOutL @era .~ SJust s - ) - tx <- - submitTx . mkBasicTx $ - mkBasicTxBody - & outputsTxBodyL @era - .~ SSeq.fromList outs - let refIns = (`txInAt` tx) <$> [0 .. length scripts - 1] - pure $ Map.fromList $ refIns `zip` scripts - - spendScriptUsingRefScripts :: - TxIn (EraCrypto era) -> Set.Set (TxIn (EraCrypto era)) -> ImpTestM era (Tx era) - spendScriptUsingRefScripts scriptIn refIns = - submitTxAnn "spendScriptUsingRefScripts" . mkBasicTx $ - mkBasicTxBody - & inputsTxBodyL @era .~ Set.singleton scriptIn - & referenceInputsTxBodyL @era .~ refIns - - nativeScript :: ImpTestM era (NativeScript era) - nativeScript = do - requiredKeyHash <- freshKeyHash - let script = RequireAllOf (SSeq.singleton (RequireSignature @era requiredKeyHash)) - _ <- impAddNativeScript script - pure script - - addScriptAddr :: NativeScript era -> ImpTestM era (Addr (EraCrypto era)) - addScriptAddr script = do - kpStaking1 <- lookupKeyPair =<< freshKeyHash - scriptHash <- impAddNativeScript script - pure $ mkScriptAddr scriptHash kpStaking1 - - scriptSize :: Script era -> Int - scriptSize = \case - TimelockScript tl -> SBS.length $ getMemoRawBytes tl - PlutusScript ps -> withPlutusScript ps (SBS.length . unPlutusBinary . plutusBinary) - - setRefScriptFee :: ImpTestM era NonNegativeInterval - setRefScriptFee = do - let refScriptFee = 10 %! 1 - modifyPParams $ ppMinFeeRefScriptCostPerByteL .~ refScriptFee - pure refScriptFee diff --git a/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Imp/UtxosSpec.hs b/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Imp/UtxosSpec.hs deleted file mode 100644 index 170e10e1a8b..00000000000 --- a/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Imp/UtxosSpec.hs +++ /dev/null @@ -1,763 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE NumericUnderscores #-} -{-# LANGUAGE OverloadedLists #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Conway.Imp.UtxosSpec (spec) where - -import Cardano.Ledger.Address (Addr (..)) -import Cardano.Ledger.Allegra.Scripts ( - pattern RequireTimeStart, - ) -import Cardano.Ledger.Alonzo.Plutus.Context (EraPlutusContext (..)) -import Cardano.Ledger.Alonzo.Plutus.Evaluate (CollectError (..)) -import Cardano.Ledger.Alonzo.Rules (AlonzoUtxosPredFailure (..)) -import Cardano.Ledger.Alonzo.Tx (IsValid (..)) -import Cardano.Ledger.Babbage.Rules (BabbageUtxoPredFailure (..)) -import Cardano.Ledger.Babbage.TxInfo (BabbageContextError (..)) -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Conway.Core -import Cardano.Ledger.Conway.Governance -import Cardano.Ledger.Conway.TxCert -import Cardano.Ledger.Conway.TxInfo -import Cardano.Ledger.Credential (Credential (..), StakeReference (..)) -import Cardano.Ledger.DRep -import Cardano.Ledger.Keys (KeyRole (..)) -import Cardano.Ledger.Mary.Value ( - MultiAsset (..), - PolicyID (..), - ) -import Cardano.Ledger.Plutus -import Cardano.Ledger.Shelley.LedgerState -import Cardano.Ledger.Shelley.Rules (ShelleyUtxowPredFailure (..)) -import Cardano.Ledger.TxIn (TxId (..), mkTxInPartial) -import Data.Default.Class (def) -import Data.List.NonEmpty (NonEmpty (..)) -import qualified Data.Map.Strict as Map -import qualified Data.OSet.Strict as OSet -import qualified Data.Sequence.Strict as SSeq -import qualified Data.Set as Set -import Lens.Micro -import qualified PlutusLedgerApi.V1 as P1 -import Test.Cardano.Ledger.Conway.ImpTest -import Test.Cardano.Ledger.Core.KeyPair (mkAddr) -import Test.Cardano.Ledger.Core.Rational ((%!)) -import Test.Cardano.Ledger.Core.Utils -import Test.Cardano.Ledger.Imp.Common -import Test.Cardano.Ledger.Plutus (testingCostModels) -import Test.Cardano.Ledger.Plutus.Examples (alwaysFails2, alwaysSucceeds2, guessTheNumber3) - -spec :: - forall era. - ( ConwayEraImp era - , Inject (BabbageContextError era) (ContextError era) - , Inject (ConwayContextError era) (ContextError era) - , InjectRuleFailure "LEDGER" BabbageUtxoPredFailure era - , InjectRuleFailure "LEDGER" AlonzoUtxosPredFailure era - , InjectRuleFailure "LEDGER" ShelleyUtxowPredFailure era - ) => - SpecWith (ImpTestState era) -spec = - describe "UTXOS" $ do - datumAndReferenceInputsSpec - conwayFeaturesPlutusV1V2FailureSpec - govPolicySpec - costModelsSpec - -datumAndReferenceInputsSpec :: - forall era. - ( Inject (BabbageContextError era) (ContextError era) - , InjectRuleFailure "LEDGER" BabbageUtxoPredFailure era - , InjectRuleFailure "LEDGER" AlonzoUtxosPredFailure era - , ConwayEraImp era - ) => - SpecWith (ImpTestState era) -datumAndReferenceInputsSpec = do - it "can use reference scripts" $ do - producingTx <- setupRefTx - referringTx <- - submitTxAnn "Transaction that refers to the script" $ - mkBasicTx mkBasicTxBody - & bodyTxL . inputsTxBodyL .~ Set.singleton (mkTxInPartial producingTx 1) - & bodyTxL . referenceInputsTxBodyL .~ Set.singleton (mkTxInPartial producingTx 0) - (referringTx ^. witsTxL . scriptTxWitsL) `shouldBe` mempty - it "can use regular inputs for reference" $ do - producingTx <- setupRefTx - referringTx <- - submitTxAnn "Consuming transaction" $ - mkBasicTx mkBasicTxBody - & bodyTxL . inputsTxBodyL - .~ Set.fromList - [ mkTxInPartial producingTx 0 - , mkTxInPartial producingTx 1 - ] - (referringTx ^. witsTxL . scriptTxWitsL) `shouldBe` mempty - it "fails with same txIn in regular inputs and reference inputs" $ do - producingTx <- setupRefTx - let - consumingTx = - mkBasicTx mkBasicTxBody - & bodyTxL . inputsTxBodyL - .~ Set.fromList - [ mkTxInPartial producingTx 0 - , mkTxInPartial producingTx 1 - ] - & bodyTxL . referenceInputsTxBodyL .~ Set.singleton (mkTxInPartial producingTx 0) - _ <- - submitFailingTx - consumingTx - ( pure . injectFailure . BabbageNonDisjointRefInputs $ - mkTxInPartial producingTx 0 :| [] - ) - pure () - it "fails when using inline datums for PlutusV1" $ do - let shSpending = hashPlutusScript (guessTheNumber3 SPlutusV1) - refTxOut <- mkRefTxOut shSpending - let producingTx = - mkBasicTx mkBasicTxBody - & bodyTxL . outputsTxBodyL - .~ SSeq.fromList - [ refTxOut - , scriptLockedTxOut shSpending & dataTxOutL .~ SJust (Data spendDatum) - ] - logToExpr producingTx - producingTxId <- txIdTx <$> submitTxAnn "Producing transaction" producingTx - let - lockedTxIn = mkTxInPartial producingTxId 1 - consumingTx = - mkBasicTx mkBasicTxBody - & bodyTxL . inputsTxBodyL .~ Set.singleton lockedTxIn - & bodyTxL . referenceInputsTxBodyL .~ Set.singleton (mkTxInPartial producingTxId 0) - impAnn "Consuming transaction" $ - submitFailingTx - consumingTx - ( pure . injectFailure $ - CollectErrors - [BadTranslation . inject . InlineDatumsNotSupported @era $ TxOutFromInput lockedTxIn] - ) - it "fails with same txIn in regular inputs and reference inputs" $ do - producingTx <- setupRefTx - let - consumingTx = - mkBasicTx mkBasicTxBody - & bodyTxL . inputsTxBodyL - .~ Set.fromList - [ mkTxInPartial producingTx 0 - , mkTxInPartial producingTx 1 - ] - & bodyTxL . referenceInputsTxBodyL .~ Set.singleton (mkTxInPartial producingTx 0) - _ <- - submitFailingTx - consumingTx - ( pure . injectFailure . BabbageNonDisjointRefInputs $ - mkTxInPartial producingTx 0 :| [] - ) - pure () - it "fails when using inline datums for PlutusV1" $ do - let shSpending = hashPlutusScript $ guessTheNumber3 SPlutusV1 - refTxOut <- mkRefTxOut shSpending - producingTx <- - fmap txIdTx . submitTxAnn "Producing transaction" $ - mkBasicTx mkBasicTxBody - & bodyTxL . outputsTxBodyL - .~ SSeq.fromList - [ refTxOut - , scriptLockedTxOut shSpending & dataTxOutL .~ SJust (Data spendDatum) - ] - let - lockedTxIn = mkTxInPartial producingTx 1 - consumingTx = - mkBasicTx mkBasicTxBody - & bodyTxL . inputsTxBodyL .~ Set.singleton lockedTxIn - & bodyTxL . referenceInputsTxBodyL .~ Set.singleton (mkTxInPartial producingTx 0) - impAnn "Consuming transaction" $ - submitFailingTx - consumingTx - ( pure . injectFailure $ - CollectErrors - [BadTranslation . inject . InlineDatumsNotSupported @era $ TxOutFromInput lockedTxIn] - ) - -conwayFeaturesPlutusV1V2FailureSpec :: - forall era. - ( ConwayEraImp era - , InjectRuleFailure "LEDGER" BabbageUtxoPredFailure era - , InjectRuleFailure "LEDGER" AlonzoUtxosPredFailure era - , Inject (ConwayContextError era) (ContextError era) - ) => - SpecWith (ImpTestState era) -conwayFeaturesPlutusV1V2FailureSpec = do - describe "Conway features fail in Plutusdescribe v1 and v2" $ do - describe "Unsupported Fields" $ do - describe "CurrentTreasuryValue" $ do - it "V1" - $ testPlutusV1V2Failure - (hashPlutusScript $ guessTheNumber3 SPlutusV1) - (SJust (Coin 10_000)) - currentTreasuryValueTxBodyL - $ inject - $ CurrentTreasuryFieldNotSupported @era - $ Coin 10_000 - it "V2" - $ testPlutusV1V2Failure - (hashPlutusScript $ guessTheNumber3 SPlutusV2) - (SJust (Coin 10_000)) - currentTreasuryValueTxBodyL - $ inject - $ CurrentTreasuryFieldNotSupported @era - $ Coin 10_000 - describe "VotingProcedures" $ do - it "V1" $ do - drepC <- KeyHashObj <$> registerDRep - cc <- KeyHashObj <$> freshKeyHash - proposal <- - submitGovAction $ - UpdateCommittee SNothing mempty (Map.singleton cc $ EpochNo 10) (1 %! 2) - let badField = - VotingProcedures - $ Map.singleton - (DRepVoter drepC) - $ Map.singleton proposal - $ VotingProcedure VoteYes SNothing - testPlutusV1V2Failure - (hashPlutusScript $ guessTheNumber3 SPlutusV1) - badField - votingProceduresTxBodyL - $ inject - $ VotingProceduresFieldNotSupported badField - it "V2" $ do - drepC <- KeyHashObj <$> registerDRep - cc <- KeyHashObj <$> freshKeyHash - proposal <- - submitGovAction $ - UpdateCommittee SNothing mempty (Map.singleton cc $ EpochNo 10) (1 %! 2) - let badField = - VotingProcedures - $ Map.singleton - (DRepVoter drepC) - $ Map.singleton proposal - $ VotingProcedure VoteYes SNothing - testPlutusV1V2Failure - (hashPlutusScript $ guessTheNumber3 SPlutusV2) - badField - votingProceduresTxBodyL - $ inject - $ VotingProceduresFieldNotSupported badField - describe "ProposalProcedures" $ do - it "V1" $ do - deposit <- getsNES $ nesEsL . curPParamsEpochStateL . ppGovActionDepositL - rewardAccount <- registerRewardAccount - let badField = OSet.singleton $ ProposalProcedure deposit rewardAccount InfoAction def - testPlutusV1V2Failure - (hashPlutusScript $ guessTheNumber3 SPlutusV1) - badField - proposalProceduresTxBodyL - $ inject - $ ProposalProceduresFieldNotSupported badField - it "V2" $ do - deposit <- getsNES $ nesEsL . curPParamsEpochStateL . ppGovActionDepositL - rewardAccount <- registerRewardAccount - let badField = OSet.singleton $ ProposalProcedure deposit rewardAccount InfoAction def - testPlutusV1V2Failure - (hashPlutusScript $ guessTheNumber3 SPlutusV2) - badField - proposalProceduresTxBodyL - $ inject - $ ProposalProceduresFieldNotSupported badField - describe "TreasuryDonation" $ do - it "V1" - $ testPlutusV1V2Failure - (hashPlutusScript $ guessTheNumber3 SPlutusV1) - (Coin 10_000) - treasuryDonationTxBodyL - $ inject - $ TreasuryDonationFieldNotSupported @era - $ Coin 10_000 - it "V2" - $ testPlutusV1V2Failure - (hashPlutusScript $ guessTheNumber3 SPlutusV2) - (Coin 10_000) - treasuryDonationTxBodyL - $ inject - $ TreasuryDonationFieldNotSupported @era - $ Coin 10_000 - describe "Certificates" $ do - describe "Translated" $ do - let testCertificateTranslated okCert tx = do - submitTx_ - ( mkBasicTx mkBasicTxBody - & bodyTxL . inputsTxBodyL - .~ Set.singleton (txInAt (0 :: Int) tx) - & bodyTxL . certsTxBodyL - .~ SSeq.singleton okCert - ) - describe "RegDepositTxCert" $ do - it "V1" $ do - stakingC <- KeyHashObj <$> freshKeyHash - let regDepositTxCert = RegDepositTxCert stakingC (Coin 0) - testCertificateTranslated regDepositTxCert - =<< txWithPlutus (hashPlutusScript $ guessTheNumber3 SPlutusV1) - it "V2" $ do - stakingC <- KeyHashObj <$> freshKeyHash - let regDepositTxCert = RegDepositTxCert stakingC (Coin 0) - testCertificateTranslated regDepositTxCert - =<< txWithPlutus (hashPlutusScript $ guessTheNumber3 SPlutusV2) - describe "UnRegDepositTxCert" $ do - it "V1" $ do - (_poolKH, _spendingC, stakingC) <- setupPoolWithStake $ Coin 1_000 - let unRegDepositTxCert = UnRegDepositTxCert stakingC (Coin 0) - testCertificateTranslated unRegDepositTxCert - =<< txWithPlutus (hashPlutusScript $ guessTheNumber3 SPlutusV1) - it "V2" $ do - (_poolKH, _spendingC, stakingC) <- setupPoolWithStake $ Coin 1_000 - let unRegDepositTxCert = UnRegDepositTxCert stakingC (Coin 0) - testCertificateTranslated unRegDepositTxCert - =<< txWithPlutus (hashPlutusScript $ guessTheNumber3 SPlutusV2) - describe "Unsupported" $ do - let testCertificateNotSupportedV1 badCert = - testCertificateNotSupported badCert - =<< txWithPlutus @era (hashPlutusScript $ guessTheNumber3 SPlutusV1) - testCertificateNotSupportedV2 badCert = - testCertificateNotSupported badCert - =<< txWithPlutus @era (hashPlutusScript $ guessTheNumber3 SPlutusV2) - testCertificateNotSupported badCert tx = do - submitFailingTx - ( mkBasicTx mkBasicTxBody - & bodyTxL . inputsTxBodyL - .~ Set.singleton (txInAt (0 :: Int) tx) - & bodyTxL . certsTxBodyL - .~ SSeq.singleton badCert - ) - ( pure . injectFailure $ - CollectErrors - [ BadTranslation $ - inject $ - CertificateNotSupported badCert - ] - ) - describe "DelegTxCert" $ do - it "V1" $ do - (drepKH, delegatorKH, _spendingKP) <- setupSingleDRep 1_000 - let delegTxCert = - DelegTxCert @era - (KeyHashObj delegatorKH) - (DelegVote (DRepCredential $ KeyHashObj drepKH)) - testCertificateNotSupportedV1 delegTxCert - it "V2" $ do - (drepKH, delegatorKH, _spendingKP) <- setupSingleDRep 1_000 - let delegTxCert = - DelegTxCert @era - (KeyHashObj delegatorKH) - (DelegVote (DRepCredential $ KeyHashObj drepKH)) - testCertificateNotSupportedV2 delegTxCert - describe "RegDepositDelegTxCert" $ do - it "V1" $ do - (drepKH, _delegatorKH, _spendingKP) <- setupSingleDRep 1_000 - unregisteredDelegatorKH <- freshKeyHash - let regDepositDelegTxCert = - RegDepositDelegTxCert @era - (KeyHashObj unregisteredDelegatorKH) - (DelegVote (DRepCredential $ KeyHashObj drepKH)) - (Coin 0) - testCertificateNotSupportedV1 regDepositDelegTxCert - it "V2" $ do - (drepKH, _delegatorKH, _spendingKP) <- setupSingleDRep 1_000 - unregisteredDelegatorKH <- freshKeyHash - let regDepositDelegTxCert = - RegDepositDelegTxCert @era - (KeyHashObj unregisteredDelegatorKH) - (DelegVote (DRepCredential $ KeyHashObj drepKH)) - (Coin 0) - testCertificateNotSupportedV2 regDepositDelegTxCert - describe "AuthCommitteeHotKeyTxCert" $ do - it "V1" $ do - coldKey <- KeyHashObj <$> freshKeyHash - hotKey <- KeyHashObj <$> freshKeyHash - let authCommitteeHotKeyTxCert = AuthCommitteeHotKeyTxCert @era coldKey hotKey - testCertificateNotSupportedV1 authCommitteeHotKeyTxCert - it "V2" $ do - coldKey <- KeyHashObj <$> freshKeyHash - hotKey <- KeyHashObj <$> freshKeyHash - let authCommitteeHotKeyTxCert = AuthCommitteeHotKeyTxCert @era coldKey hotKey - testCertificateNotSupportedV2 authCommitteeHotKeyTxCert - describe "ResignCommitteeColdTxCert" $ do - it "V1" $ do - coldKey <- KeyHashObj <$> freshKeyHash - let resignCommitteeColdTxCert = ResignCommitteeColdTxCert @era coldKey SNothing - testCertificateNotSupportedV1 resignCommitteeColdTxCert - it "V2" $ do - coldKey <- KeyHashObj <$> freshKeyHash - let resignCommitteeColdTxCert = ResignCommitteeColdTxCert @era coldKey SNothing - testCertificateNotSupportedV2 resignCommitteeColdTxCert - describe "RegDRepTxCert" $ do - it "V1" $ do - unregisteredDRepKH <- freshKeyHash - let regDRepTxCert = RegDRepTxCert @era (KeyHashObj unregisteredDRepKH) (Coin 0) SNothing - testCertificateNotSupportedV1 regDRepTxCert - it "V2" $ do - unregisteredDRepKH <- freshKeyHash - let regDRepTxCert = RegDRepTxCert @era (KeyHashObj unregisteredDRepKH) (Coin 0) SNothing - testCertificateNotSupportedV2 regDRepTxCert - describe "UnRegDRepTxCert" $ do - it "V1" $ do - (drepKH, _delegatorKH, _spendingKP) <- setupSingleDRep 1_000 - let unRegDRepTxCert = UnRegDRepTxCert @era (KeyHashObj drepKH) (Coin 0) - testCertificateNotSupportedV1 unRegDRepTxCert - it "V1" $ do - (drepKH, _delegatorKH, _spendingKP) <- setupSingleDRep 1_000 - let unRegDRepTxCert = UnRegDRepTxCert @era (KeyHashObj drepKH) (Coin 0) - testCertificateNotSupportedV2 unRegDRepTxCert - describe "UpdateDRepTxCert" $ do - it "V1" $ do - (drepKH, _delegatorKH, _spendingKP) <- setupSingleDRep 1_000 - let updateDRepTxCert = UpdateDRepTxCert @era (KeyHashObj drepKH) SNothing - testCertificateNotSupportedV1 updateDRepTxCert - it "V2" $ do - (drepKH, _delegatorKH, _spendingKP) <- setupSingleDRep 1_000 - let updateDRepTxCert = UpdateDRepTxCert @era (KeyHashObj drepKH) SNothing - testCertificateNotSupportedV2 updateDRepTxCert - -govPolicySpec :: - forall era. - ( ConwayEraImp era - , InjectRuleFailure "LEDGER" ShelleyUtxowPredFailure era - ) => - SpecWith (ImpTestState era) -govPolicySpec = do - describe "Gov policy scripts" $ do - it "failing native script govPolicy" $ do - (dRep, committeeMember, _) <- electBasicCommittee - scriptHash <- impAddNativeScript $ RequireTimeStart (SlotNo 1) - anchor <- arbitrary - void $ - enactConstitution SNothing (Constitution anchor (SJust scriptHash)) dRep committeeMember - rewardAccount <- registerRewardAccount - pp <- getsNES $ nesEsL . curPParamsEpochStateL - impAnn "ParameterChange" $ do - let pparamsUpdate = def & ppuCommitteeMinSizeL .~ SJust 1 - let govAction = ParameterChange SNothing pparamsUpdate (SJust scriptHash) - let proposal = - ProposalProcedure - { pProcReturnAddr = rewardAccount - , pProcGovAction = govAction - , pProcDeposit = pp ^. ppGovActionDepositL - , pProcAnchor = anchor - } - let tx = - mkBasicTx mkBasicTxBody - & bodyTxL . proposalProceduresTxBodyL .~ [proposal] - & bodyTxL . vldtTxBodyL .~ ValidityInterval SNothing SNothing - submitFailingTx tx [injectFailure $ ScriptWitnessNotValidatingUTXOW [scriptHash]] - - impAnn "TreasuryWithdrawals" $ do - let withdrawals = Map.fromList [(rewardAccount, Coin 1000)] - let govAction = TreasuryWithdrawals withdrawals (SJust scriptHash) - - let proposal = - ProposalProcedure - { pProcReturnAddr = rewardAccount - , pProcGovAction = govAction - , pProcDeposit = pp ^. ppGovActionDepositL - , pProcAnchor = anchor - } - let tx = - mkBasicTx mkBasicTxBody - & bodyTxL . proposalProceduresTxBodyL .~ [proposal] - & bodyTxL . vldtTxBodyL .~ ValidityInterval SNothing SNothing - submitFailingTx tx [injectFailure $ ScriptWitnessNotValidatingUTXOW [scriptHash]] - - it "alwaysSucceeds Plutus govPolicy validates" $ do - let alwaysSucceedsSh = hashPlutusScript (alwaysSucceeds2 SPlutusV3) - (dRep, committeeMember, _) <- electBasicCommittee - anchor <- arbitrary - pp <- getsNES $ nesEsL . curPParamsEpochStateL - void $ - enactConstitution - SNothing - (Constitution anchor (SJust alwaysSucceedsSh)) - dRep - committeeMember - rewardAccount <- registerRewardAccount - - impAnn "ParameterChange" $ do - let pparamsUpdate = def & ppuCommitteeMinSizeL .~ SJust 1 - let govAction = ParameterChange SNothing pparamsUpdate (SJust alwaysSucceedsSh) - let proposal = - ProposalProcedure - { pProcReturnAddr = rewardAccount - , pProcGovAction = govAction - , pProcDeposit = pp ^. ppGovActionDepositL - , pProcAnchor = anchor - } - submitProposal_ proposal - impAnn "TreasuryWithdrawals" $ do - let withdrawals = Map.fromList [(rewardAccount, Coin 1000)] - let govAction = TreasuryWithdrawals withdrawals (SJust alwaysSucceedsSh) - - let proposal = - ProposalProcedure - { pProcReturnAddr = rewardAccount - , pProcGovAction = govAction - , pProcDeposit = pp ^. ppGovActionDepositL - , pProcAnchor = anchor - } - submitProposal_ proposal - - it "alwaysFails Plutus govPolicy does not validate" $ do - let alwaysFailsSh = hashPlutusScript (alwaysFails2 SPlutusV3) - (dRep, committeeMember, _) <- electBasicCommittee - anchor <- arbitrary - pp <- getsNES $ nesEsL . curPParamsEpochStateL - void $ - enactConstitution SNothing (Constitution anchor (SJust alwaysFailsSh)) dRep committeeMember - - rewardAccount <- registerRewardAccount - impAnn "ParameterChange" $ do - let pparamsUpdate = def & ppuCommitteeMinSizeL .~ SJust 1 - let govAction = ParameterChange SNothing pparamsUpdate (SJust alwaysFailsSh) - let proposal = - ProposalProcedure - { pProcReturnAddr = rewardAccount - , pProcGovAction = govAction - , pProcDeposit = pp ^. ppGovActionDepositL - , pProcAnchor = anchor - } - let tx = mkBasicTx mkBasicTxBody & bodyTxL . proposalProceduresTxBodyL .~ [proposal] - expectPhase2Invalid tx - - impAnn "TreasuryWithdrawals" $ do - let withdrawals = Map.fromList [(rewardAccount, Coin 1000)] - let govAction = TreasuryWithdrawals withdrawals (SJust alwaysFailsSh) - let proposal = - ProposalProcedure - { pProcReturnAddr = rewardAccount - , pProcGovAction = govAction - , pProcDeposit = pp ^. ppGovActionDepositL - , pProcAnchor = anchor - } - let tx = mkBasicTx mkBasicTxBody & bodyTxL . proposalProceduresTxBodyL .~ [proposal] - expectPhase2Invalid tx - -costModelsSpec :: - forall era. - ( ConwayEraImp era - , InjectRuleFailure "LEDGER" ShelleyUtxowPredFailure era - , InjectRuleFailure "LEDGER" AlonzoUtxosPredFailure era - ) => - SpecWith (ImpTestState era) -costModelsSpec = - describe "PlutusV3 Initialization" $ do - it "Updating CostModels with alwaysFails govPolicy does not validate" $ do - -- no initial PlutusV3 CostModels - modifyPParams $ ppCostModelsL .~ testingCostModels [PlutusV1 .. PlutusV2] - - (dRep, committeeMember, _) <- electBasicCommittee - anchor <- arbitrary - govIdConstitution1 <- - enactConstitution SNothing (Constitution anchor SNothing) dRep committeeMember - -- propose and enact PlutusV3 Costmodels - govIdPPUpdate1 <- - enactCostModels SNothing (testingCostModels [PlutusV3]) dRep committeeMember - - let alwaysFailsSh = hashPlutusScript (alwaysFails2 SPlutusV3) - void $ - enactConstitution - (SJust (GovPurposeId govIdConstitution1)) - (Constitution anchor (SJust alwaysFailsSh)) - dRep - committeeMember - - impAnn "Fail to update V3 Costmodels" $ do - let pparamsUpdate = def & ppuCostModelsL .~ SJust (testingCostModels [PlutusV3]) - let govAction = ParameterChange (SJust govIdPPUpdate1) pparamsUpdate (SJust alwaysFailsSh) - rewardAccount <- registerRewardAccount - pp <- getsNES $ nesEsL . curPParamsEpochStateL - let proposal = - ProposalProcedure - { pProcReturnAddr = rewardAccount - , pProcGovAction = govAction - , pProcDeposit = pp ^. ppGovActionDepositL - , pProcAnchor = anchor - } - let tx = mkBasicTx mkBasicTxBody & bodyTxL . proposalProceduresTxBodyL .~ [proposal] - expectPhase2Invalid tx - - it "Updating CostModels with alwaysSucceeds govPolicy but no PlutusV3 CostModels fails" $ do - modifyPParams $ ppCostModelsL .~ testingCostModels [PlutusV1 .. PlutusV2] - - (dRep, committeeMember, _) <- electBasicCommittee - anchor <- arbitrary - let alwaysSucceedsSh = hashPlutusScript (alwaysSucceeds2 SPlutusV3) - void $ - enactConstitution - SNothing - (Constitution anchor (SJust alwaysSucceedsSh)) - dRep - committeeMember - - let pparamsUpdate = def & ppuCostModelsL .~ SJust (testingCostModels [PlutusV3]) - let govAction = ParameterChange SNothing pparamsUpdate (SJust alwaysSucceedsSh) - - submitFailingGovAction govAction [injectFailure $ CollectErrors [NoCostModel PlutusV3]] - - it "Updating CostModels and setting the govPolicy afterwards succeeds" $ do - modifyPParams $ ppCostModelsL .~ testingCostModels [PlutusV1 .. PlutusV2] - - (dRep, committeeMember, _) <- electBasicCommittee - anchor <- arbitrary - govIdConstitution1 <- - enactConstitution SNothing (Constitution anchor SNothing) dRep committeeMember - - let guessTheNumberSh = hashPlutusScript (guessTheNumber3 SPlutusV3) - - impAnn "Minting token fails" $ do - tx <- mintingTokenTx @era (mkBasicTx @era mkBasicTxBody) guessTheNumberSh - submitFailingTx tx [injectFailure $ CollectErrors [NoCostModel PlutusV3]] - - govIdPPUpdate1 <- - enactCostModels - SNothing - (testingCostModels [PlutusV3]) - dRep - committeeMember - - let alwaysSucceedsSh = hashPlutusScript (alwaysSucceeds2 SPlutusV3) - void $ - enactConstitution - (SJust (GovPurposeId govIdConstitution1)) - (Constitution anchor (SJust alwaysSucceedsSh)) - dRep - committeeMember - - impAnn "Minting token succeeds" $ do - tx <- mintingTokenTx @era (mkBasicTx @era mkBasicTxBody) guessTheNumberSh - submitTx_ tx - - impAnn "Updating CostModels succeeds" $ do - void $ - enactCostModels - (SJust govIdPPUpdate1) - (testingCostModels [PlutusV3]) - dRep - committeeMember - -txWithPlutus :: - forall era. - ConwayEraImp era => - ScriptHash (EraCrypto era) -> - ImpTestM era (Tx era) -txWithPlutus sh = do - submitTxAnn "Submit a Plutus" $ - mkBasicTx mkBasicTxBody - & bodyTxL . outputsTxBodyL - .~ SSeq.singleton (scriptLockedTxOut sh) - -scriptLockedTxOut :: - forall era. - AlonzoEraTxOut era => - ScriptHash (EraCrypto era) -> - TxOut era -scriptLockedTxOut shSpending = - mkBasicTxOut - (Addr Testnet (ScriptHashObj shSpending) StakeRefNull) - (inject $ Coin 1_000_000) - & dataHashTxOutL .~ SJust (hashData @era $ Data spendDatum) - -mkRefTxOut :: - ( BabbageEraTxOut era - , AlonzoEraImp era - ) => - ScriptHash (EraCrypto era) -> - ImpTestM era (TxOut era) -mkRefTxOut sh = do - kpPayment <- lookupKeyPair =<< freshKeyHash - kpStaking <- lookupKeyPair =<< freshKeyHash - let mbyPlutusScript = impLookupPlutusScriptMaybe sh - pure $ - mkBasicTxOut (mkAddr (kpPayment, kpStaking)) (inject $ Coin 100) - & referenceScriptTxOutL .~ maybeToStrictMaybe (fromPlutusScript <$> mbyPlutusScript) - -setupRefTx :: - forall era. - ( BabbageEraTxOut era - , AlonzoEraImp era - ) => - ImpTestM era (TxId (EraCrypto era)) -setupRefTx = do - let shSpending = hashPlutusScript (guessTheNumber3 SPlutusV1) - refTxOut <- mkRefTxOut shSpending - fmap txIdTx . submitTxAnn "Producing transaction" $ - mkBasicTx mkBasicTxBody - & bodyTxL . outputsTxBodyL - .~ SSeq.fromList - [ refTxOut - , scriptLockedTxOut shSpending - , scriptLockedTxOut shSpending - ] - -testPlutusV1V2Failure :: - forall era a. - ( ConwayEraImp era - , InjectRuleFailure "LEDGER" AlonzoUtxosPredFailure era - , HasCallStack - ) => - ScriptHash (EraCrypto era) -> - a -> - Lens' (TxBody era) a -> - ContextError era -> - ImpTestM era () -testPlutusV1V2Failure sh badField lenz errorField = do - tx <- txWithPlutus @era sh - submitFailingTx - ( mkBasicTx mkBasicTxBody - & bodyTxL . inputsTxBodyL - .~ Set.singleton (txInAt (0 :: Int) tx) - & bodyTxL . lenz - .~ badField - ) - ( pure . injectFailure $ - CollectErrors [BadTranslation errorField] - ) - -expectPhase2Invalid :: ConwayEraImp era => Tx era -> ImpTestM era () -expectPhase2Invalid tx = do - res <- trySubmitTx tx - -- TODO: find a way to check that this is a PlutusFailure - -- without comparing the entire PredicateFailure - void $ expectLeft res - submitTx_ $ tx & isValidTxL .~ IsValid False - -mintingTokenTx :: ConwayEraImp era => Tx era -> ScriptHash (EraCrypto era) -> ImpTestM era (Tx era) -mintingTokenTx tx sh = do - name <- arbitrary - count <- choose (0, 10) - let policyId = PolicyID sh - let ma = MultiAsset $ Map.singleton policyId [(name, count)] - pure $ tx & bodyTxL . mintTxBodyL .~ ma - -enactCostModels :: - ConwayEraImp era => - StrictMaybe (GovPurposeId 'PParamUpdatePurpose era) -> - CostModels -> - Credential 'DRepRole (EraCrypto era) -> - Credential 'HotCommitteeRole (EraCrypto era) -> - ImpTestM era (GovPurposeId 'PParamUpdatePurpose era) -enactCostModels prevGovId cms dRep committeeMember = do - initialCms <- getsNES $ nesEsL . curPParamsEpochStateL . ppCostModelsL - let pparamsUpdate = def & ppuCostModelsL .~ SJust cms - govId <- submitParameterChange prevGovId pparamsUpdate - submitYesVote_ (DRepVoter dRep) govId - submitYesVote_ (CommitteeVoter committeeMember) govId - passNEpochs 2 - enactedCms <- getsNES $ nesEsL . curPParamsEpochStateL . ppCostModelsL - enactedCms `shouldBe` (initialCms <> cms) - pure $ GovPurposeId govId - -spendDatum :: P1.Data -spendDatum = P1.I 3 diff --git a/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/ImpTest.hs b/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/ImpTest.hs deleted file mode 100644 index 75840d5b703..00000000000 --- a/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/ImpTest.hs +++ /dev/null @@ -1,1327 +0,0 @@ -{-# LANGUAGE CPP #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE NumericUnderscores #-} -{-# LANGUAGE OverloadedLists #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Conway.ImpTest ( - module ImpTest, - ConwayEraImp, - enactConstitution, - enactTreasuryWithdrawals, - submitGovAction, - submitGovAction_, - submitGovActions, - submitProposal, - submitProposal_, - submitProposals, - submitFailingProposal, - trySubmitGovAction, - trySubmitGovActions, - trySubmitProposal, - trySubmitProposals, - submitTreasuryWithdrawals, - submitVote, - submitVote_, - submitYesVote_, - submitFailingVote, - trySubmitVote, - registerDRep, - setupSingleDRep, - setupPoolWithStake, - conwayModifyPParams, - getProposals, - getEnactState, - getGovActionState, - lookupGovActionState, - expectPresentGovActionId, - expectMissingGovActionId, - getRatifyEnv, - calculateDRepAcceptedRatio, - calculatePoolAcceptedRatio, - calculateCommitteeAcceptedRatio, - logAcceptedRatio, - isDRepAccepted, - isSpoAccepted, - isCommitteeAccepted, - logRatificationChecks, - resignCommitteeColdKey, - registerCommitteeHotKey, - logCurPParams, - electCommittee, - electBasicCommittee, - proposalsShowDebug, - getGovPolicy, - submitFailingGovAction, - submitInitConstitutionGovAction, - submitChildConstitutionGovAction, - submitConstitutionGovAction, - submitConstitutionGovActionTree, - submitConstitutionGovActionForest, - getProposalsForest, - logProposalsForest, - logProposalsForestDiff, - constitutionShouldBe, - ccShouldBeResigned, - ccShouldNotBeResigned, - getLastEnactedCommittee, - getLastEnactedConstitution, - submitParameterChange, - getLastEnactedParameterChange, - getLastEnactedHardForkInitiation, - getConstitutionProposals, - getParameterChangeProposals, - expectNumDormantEpochs, - submitConstitution, - expectExtraDRepExpiry, - expectCurrentProposals, - expectNoCurrentProposals, - expectPulserProposals, - expectNoPulserProposals, - minorFollow, - majorFollow, - cantFollow, - getsPParams, - currentProposalsShouldContain, -) where - -import Cardano.Crypto.DSIGN (DSIGNAlgorithm (..), Ed25519DSIGN, Signable) -import Cardano.Crypto.Hash.Class (Hash) -import Cardano.Ledger.Address (Addr (..), RewardAccount (..)) -import Cardano.Ledger.Allegra.Scripts (Timelock) -import Cardano.Ledger.Alonzo.Scripts (AlonzoScript) -import Cardano.Ledger.BaseTypes ( - EpochInterval (..), - EpochNo, - Network (..), - ProtVer (..), - ShelleyBase, - StrictMaybe (..), - addEpochInterval, - inject, - succVersion, - textToUrl, - ) -import Cardano.Ledger.CertState ( - CommitteeAuthorization (..), - csCommitteeCredsL, - vsNumDormantEpochsL, - ) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Conway (ConwayEra) -import Cardano.Ledger.Conway.Core hiding (proposals) -import Cardano.Ledger.Conway.Governance -import Cardano.Ledger.Conway.Rules ( - ConwayGovEvent, - EnactSignal, - committeeAccepted, - committeeAcceptedRatio, - dRepAccepted, - dRepAcceptedRatio, - prevActionAsExpected, - spoAccepted, - spoAcceptedRatio, - validCommitteeTerm, - withdrawalCanWithdraw, - ) -import Cardano.Ledger.Conway.TxCert ( - ConwayEraTxCert (..), - Delegatee (..), - pattern AuthCommitteeHotKeyTxCert, - pattern RegDRepTxCert, - pattern RegDepositDelegTxCert, - pattern ResignCommitteeColdTxCert, - ) -import Cardano.Ledger.Credential (Credential (..), StakeReference (..)) -import Cardano.Ledger.Crypto (Crypto (..)) -import Cardano.Ledger.DRep -import Cardano.Ledger.Keys (KeyHash, KeyRole (..)) -import Cardano.Ledger.Plutus.Language (SLanguage (..)) -import Cardano.Ledger.Shelley.LedgerState ( - IncrementalStake (..), - asTreasuryL, - certVStateL, - curPParamsEpochStateL, - epochStateGovStateL, - esAccountStateL, - esLStateL, - lsCertStateL, - lsUTxOStateL, - nesELL, - nesEpochStateL, - nesEsL, - nesPdL, - newEpochStateGovStateL, - utxosGovStateL, - utxosStakeDistrL, - vsCommitteeStateL, - vsDRepsL, - ) -import Cardano.Ledger.TxIn (TxId (..)) -import Cardano.Ledger.Val (Val (..)) -import Control.Monad (forM) -import Control.State.Transition.Extended (STS (..)) -import Data.Default.Class (Default (..)) -import Data.Foldable (Foldable (..)) -import Data.Functor.Identity -import Data.List.NonEmpty (NonEmpty) -import qualified Data.List.NonEmpty as NE -import qualified Data.Map.Strict as Map -import Data.Maybe (fromJust, isJust) -import Data.Maybe.Strict (isSJust) -import Data.Sequence.Strict (StrictSeq (..)) -import qualified Data.Sequence.Strict as SSeq -import qualified Data.Set as Set -import qualified Data.Text as T -import Data.Tree -import qualified GHC.Exts as GHC (fromList) -import Lens.Micro -import Test.Cardano.Ledger.Allegra.ImpTest (impAllegraSatisfyNativeScript) -import Test.Cardano.Ledger.Alonzo.ImpTest as ImpTest -import Test.Cardano.Ledger.Conway.Arbitrary () -import Test.Cardano.Ledger.Conway.TreeDiff () -import Test.Cardano.Ledger.Core.KeyPair (KeyPair (..), mkAddr) -import Test.Cardano.Ledger.Core.Rational (IsRatio (..)) -import Test.Cardano.Ledger.Imp.Common - --- | Modify the PParams in the current state with the given function -conwayModifyPParams :: - ConwayEraGov era => - (PParams era -> PParams era) -> - ImpTestM era () -conwayModifyPParams f = modifyNES $ \nes -> - nes - & nesEsL . curPParamsEpochStateL %~ f - & newEpochStateGovStateL . drepPulsingStateGovStateL %~ modifyDRepPulser - where - modifyDRepPulser pulser = - case finishDRepPulser pulser of - (snapshot, ratifyState) -> - DRComplete snapshot (ratifyState & rsEnactStateL . ensCurPParamsL %~ f) - -instance - ( Crypto c - , NFData (SigDSIGN (DSIGN c)) - , NFData (VerKeyDSIGN (DSIGN c)) - , DSIGN c ~ Ed25519DSIGN - , Signable (DSIGN c) (Hash (HASH c) EraIndependentTxBody) - , Eq (ConwayGovEvent (ConwayEra c)) - ) => - ShelleyEraImp (ConwayEra c) - where - initImpNES = - let nes = - initAlonzoImpNES - & nesEsL . curPParamsEpochStateL . ppDRepActivityL .~ EpochInterval 100 - & nesEsL . curPParamsEpochStateL . ppGovActionLifetimeL .~ EpochInterval 30 - epochState = nes ^. nesEsL - ratifyState = - def - & rsEnactStateL .~ mkEnactState (epochState ^. epochStateGovStateL) - in nes & nesEsL .~ setCompleteDRepPulsingState def ratifyState epochState - - impSatisfyNativeScript = impAllegraSatisfyNativeScript - - modifyPParams = conwayModifyPParams - - fixupTx = alonzoFixupTx - -instance ShelleyEraImp (ConwayEra c) => AlonzoEraImp (ConwayEra c) where - scriptTestContexts = - plutusTestScripts SPlutusV1 - <> plutusTestScripts SPlutusV2 - <> plutusTestScripts SPlutusV3 - -class - ( AlonzoEraImp era - , ConwayEraGov era - , ConwayEraTxBody era - , STS (EraRule "ENACT" era) - , BaseM (EraRule "ENACT" era) ~ ShelleyBase - , State (EraRule "ENACT" era) ~ EnactState era - , Signal (EraRule "ENACT" era) ~ EnactSignal era - , Environment (EraRule "ENACT" era) ~ () - , NativeScript era ~ Timelock era - , Script era ~ AlonzoScript era - ) => - ConwayEraImp era - -instance - ( Crypto c - , NFData (SigDSIGN (DSIGN c)) - , NFData (VerKeyDSIGN (DSIGN c)) - , DSIGN c ~ Ed25519DSIGN - , Signable (DSIGN c) (Hash (HASH c) EraIndependentTxBody) - ) => - ConwayEraImp (ConwayEra c) - --- | Submit a transaction that registers a new DRep and return the keyhash --- belonging to that DRep -registerDRep :: - forall era. - ( ShelleyEraImp era - , ConwayEraTxCert era - ) => - ImpTestM era (KeyHash 'DRepRole (EraCrypto era)) -registerDRep = do - -- Register a DRep - khDRep <- freshKeyHash - submitTxAnn_ "Register DRep" $ - mkBasicTx mkBasicTxBody - & bodyTxL . certsTxBodyL - .~ SSeq.singleton - ( RegDRepTxCert - (KeyHashObj khDRep) - zero - SNothing - ) - dreps <- getsNES @era $ nesEsL . esLStateL . lsCertStateL . certVStateL . vsDRepsL - dreps `shouldSatisfy` Map.member (KeyHashObj khDRep) - pure khDRep - --- | Registers a new DRep and delegates the specified amount of ADA to it. -setupSingleDRep :: - forall era. - ( ConwayEraTxCert era - , ShelleyEraImp era - ) => - Integer -> - ImpTestM - era - ( KeyHash 'DRepRole (EraCrypto era) - , KeyHash 'Staking (EraCrypto era) - , KeyPair 'Payment (EraCrypto era) - ) -setupSingleDRep stake = do - drepKH <- registerDRep - delegatorKH <- freshKeyHash - delegatorKP <- lookupKeyPair delegatorKH - spendingKP <- lookupKeyPair =<< freshKeyHash - submitTxAnn_ "Delegate to DRep" $ - mkBasicTx mkBasicTxBody - & bodyTxL . outputsTxBodyL - .~ SSeq.singleton - ( mkBasicTxOut - (mkAddr (spendingKP, delegatorKP)) - (inject $ Coin stake) - ) - & bodyTxL . certsTxBodyL - .~ SSeq.fromList - [ mkRegDepositDelegTxCert @era - (KeyHashObj delegatorKH) - (DelegVote (DRepCredential $ KeyHashObj drepKH)) - zero - ] - pure (drepKH, delegatorKH, spendingKP) - -getsPParams :: EraGov era => Lens' (PParams era) a -> ImpTestM era a -getsPParams f = getsNES $ nesEsL . curPParamsEpochStateL . f - --- | Sets up a stake pool with coin delegated to it. --- --- NOTE: This uses the `RegDepositDelegTxCert` for delegating, so it has to be --- in Conway. The Shelley version of this function would have to separately --- register the staking credential and then delegate it. -setupPoolWithStake :: - (ShelleyEraImp era, ConwayEraTxCert era) => - Coin -> - ImpTestM - era - ( KeyHash 'StakePool (EraCrypto era) - , Credential 'Payment (EraCrypto era) - , Credential 'Staking (EraCrypto era) - ) -setupPoolWithStake delegCoin = do - khPool <- registerPool - credDelegatorPayment <- KeyHashObj <$> freshKeyHash - credDelegatorStaking <- KeyHashObj <$> freshKeyHash - void $ - sendCoinTo - (Addr Testnet credDelegatorPayment (StakeRefBase credDelegatorStaking)) - delegCoin - pp <- getsNES $ nesEsL . curPParamsEpochStateL - submitTxAnn_ "Delegate to stake pool" $ - mkBasicTx mkBasicTxBody - & bodyTxL . certsTxBodyL - .~ SSeq.fromList - [ RegDepositDelegTxCert - credDelegatorStaking - (DelegStake khPool) - (pp ^. ppKeyDepositL) - ] - pure (khPool, credDelegatorPayment, credDelegatorStaking) - --- | Submits a transaction with a Vote for the given governance action as --- some voter -submitVote :: - ( ShelleyEraImp era - , ConwayEraTxBody era - , HasCallStack - ) => - Vote -> - Voter (EraCrypto era) -> - GovActionId (EraCrypto era) -> - ImpTestM era (TxId (EraCrypto era)) -submitVote vote voter gaId = trySubmitVote vote voter gaId >>= expectRightDeep - --- | Submits a transaction that votes "Yes" for the given governance action as --- some voter -submitYesVote_ :: - ( ShelleyEraImp era - , ConwayEraTxBody era - , HasCallStack - ) => - Voter (EraCrypto era) -> - GovActionId (EraCrypto era) -> - ImpTestM era () -submitYesVote_ voter gaId = void $ submitVote VoteYes voter gaId - -submitVote_ :: - ( ShelleyEraImp era - , ConwayEraTxBody era - , HasCallStack - ) => - Vote -> - Voter (EraCrypto era) -> - GovActionId (EraCrypto era) -> - ImpTestM era () -submitVote_ vote voter gaId = void $ submitVote vote voter gaId - -submitFailingVote :: - ( ShelleyEraImp era - , ConwayEraTxBody era - , HasCallStack - ) => - Voter (EraCrypto era) -> - GovActionId (EraCrypto era) -> - NonEmpty (PredicateFailure (EraRule "LEDGER" era)) -> - ImpTestM era () -submitFailingVote voter gaId expectedFailure = - trySubmitVote VoteYes voter gaId >>= (`shouldBeLeftExpr` expectedFailure) - --- | Submits a transaction that votes "Yes" for the given governance action as --- some voter, and expects an `Either` result. -trySubmitVote :: - ( ShelleyEraImp era - , ConwayEraTxBody era - ) => - Vote -> - Voter (EraCrypto era) -> - GovActionId (EraCrypto era) -> - ImpTestM - era - ( Either - (NonEmpty (PredicateFailure (EraRule "LEDGER" era))) - (TxId (EraCrypto era)) - ) -trySubmitVote vote voter gaId = - fmap (fmap txIdTx) $ - trySubmitTx $ - mkBasicTx mkBasicTxBody - & bodyTxL . votingProceduresTxBodyL - .~ VotingProcedures - ( Map.singleton - voter - ( Map.singleton - gaId - ( VotingProcedure - { vProcVote = vote - , vProcAnchor = SNothing - } - ) - ) - ) - -submitProposal_ :: - (ShelleyEraImp era, ConwayEraTxBody era, HasCallStack) => - ProposalProcedure era -> - ImpTestM era () -submitProposal_ = void . submitProposal - -submitProposal :: - (ShelleyEraImp era, ConwayEraTxBody era, HasCallStack) => - ProposalProcedure era -> - ImpTestM era (GovActionId (EraCrypto era)) -submitProposal proposal = trySubmitProposal proposal >>= expectRightExpr - -submitProposals :: - (ShelleyEraImp era, ConwayEraGov era, ConwayEraTxBody era, HasCallStack) => - NE.NonEmpty (ProposalProcedure era) -> - ImpTestM era (NE.NonEmpty (GovActionId (EraCrypto era))) -submitProposals proposals = do - curEpochNo <- getsNES nesELL - pp <- getsNES $ nesEsL . curPParamsEpochStateL - tx <- trySubmitProposals proposals >>= expectRightExpr - let txId = txIdTx tx - proposalsWithGovActionId = - NE.zipWith (\idx p -> (GovActionId txId (GovActionIx idx), p)) (0 NE.:| [1 ..]) proposals - forM proposalsWithGovActionId $ \(govActionId, proposal) -> do - govActionState <- getGovActionState govActionId - govActionState - `shouldBeExpr` GovActionState - { gasId = govActionId - , gasCommitteeVotes = mempty - , gasDRepVotes = mempty - , gasStakePoolVotes = mempty - , gasProposalProcedure = proposal - , gasProposedIn = curEpochNo - , gasExpiresAfter = addEpochInterval curEpochNo (pp ^. ppGovActionLifetimeL) - } - pure govActionId - --- | Submits a transaction that proposes the given proposal -trySubmitProposal :: - ( ShelleyEraImp era - , ConwayEraTxBody era - ) => - ProposalProcedure era -> - ImpTestM - era - ( Either - (NonEmpty (PredicateFailure (EraRule "LEDGER" era))) - (GovActionId (EraCrypto era)) - ) -trySubmitProposal proposal = do - res <- trySubmitProposals (pure proposal) - pure $ case res of - Right tx -> - Right - GovActionId - { gaidTxId = txIdTx tx - , gaidGovActionIx = GovActionIx 0 - } - Left err -> Left err - -trySubmitProposals :: - ( ShelleyEraImp era - , ConwayEraTxBody era - ) => - NE.NonEmpty (ProposalProcedure era) -> - ImpTestM era (Either (NonEmpty (PredicateFailure (EraRule "LEDGER" era))) (Tx era)) -trySubmitProposals proposals = do - trySubmitTx $ - mkBasicTx mkBasicTxBody - & bodyTxL . proposalProceduresTxBodyL .~ GHC.fromList (toList proposals) - -submitFailingProposal :: - ( ShelleyEraImp era - , ConwayEraTxBody era - , HasCallStack - ) => - ProposalProcedure era -> - NonEmpty (PredicateFailure (EraRule "LEDGER" era)) -> - ImpTestM era () -submitFailingProposal proposal expectedFailure = - trySubmitProposal proposal >>= (`shouldBeLeftExpr` expectedFailure) - --- | Submits a transaction that proposes the given governance action. For proposing --- multiple actions in the same transaciton use `trySubmitGovActions` instead. -trySubmitGovAction :: - ( ShelleyEraImp era - , ConwayEraTxBody era - ) => - GovAction era -> - ImpTestM - era - ( Either - (NonEmpty (PredicateFailure (EraRule "LEDGER" era))) - (GovActionId (EraCrypto era)) - ) -trySubmitGovAction ga = do - let mkGovActionId tx = GovActionId (txIdTx tx) (GovActionIx 0) - fmap mkGovActionId <$> trySubmitGovActions (pure ga) - --- | Submits a transaction that proposes the given governance action -trySubmitGovActions :: - (ShelleyEraImp era, ConwayEraTxBody era) => - NE.NonEmpty (GovAction era) -> - ImpTestM era (Either (NonEmpty (PredicateFailure (EraRule "LEDGER" era))) (Tx era)) -trySubmitGovActions gas = do - deposit <- getsNES $ nesEsL . curPParamsEpochStateL . ppGovActionDepositL - rewardAccount <- registerRewardAccount - proposals <- forM gas $ \ga -> do - pure - ProposalProcedure - { pProcDeposit = deposit - , pProcReturnAddr = rewardAccount - , pProcGovAction = ga - , pProcAnchor = def - } - trySubmitProposals proposals - -submitGovAction :: - forall era. - ( ShelleyEraImp era - , ConwayEraTxBody era - , HasCallStack - ) => - GovAction era -> - ImpTestM era (GovActionId (EraCrypto era)) -submitGovAction ga = do - gaId NE.:| _ <- submitGovActions (pure ga) - pure gaId - -submitGovAction_ :: - forall era. - ( ShelleyEraImp era - , ConwayEraTxBody era - , HasCallStack - ) => - GovAction era -> - ImpTestM era () -submitGovAction_ = void . submitGovAction - -submitGovActions :: - forall era. - ( ShelleyEraImp era - , ConwayEraTxBody era - , HasCallStack - ) => - NE.NonEmpty (GovAction era) -> - ImpTestM era (NE.NonEmpty (GovActionId (EraCrypto era))) -submitGovActions gas = do - tx <- trySubmitGovActions gas >>= expectRightExpr - let txId = txIdTx tx - pure $ NE.zipWith (\idx _ -> GovActionId txId (GovActionIx idx)) (0 NE.:| [1 ..]) gas - -submitTreasuryWithdrawals :: - ( ShelleyEraImp era - , ConwayEraTxBody era - , ConwayEraGov era - ) => - [(RewardAccount (EraCrypto era), Coin)] -> - ImpTestM era (GovActionId (EraCrypto era)) -submitTreasuryWithdrawals wdrls = do - policy <- getGovPolicy - submitGovAction $ TreasuryWithdrawals (Map.fromList wdrls) policy - -enactTreasuryWithdrawals :: - ConwayEraImp era => - [(RewardAccount (EraCrypto era), Coin)] -> - Credential 'DRepRole (EraCrypto era) -> - Credential 'HotCommitteeRole (EraCrypto era) -> - ImpTestM era (GovActionId (EraCrypto era)) -enactTreasuryWithdrawals withdrawals dRep cm = do - gaId <- submitTreasuryWithdrawals withdrawals - submitYesVote_ (DRepVoter dRep) gaId - submitYesVote_ (CommitteeVoter cm) gaId - passNEpochs 2 - pure gaId - -submitParameterChange :: - ConwayEraImp era => - StrictMaybe (GovPurposeId 'PParamUpdatePurpose era) -> - PParamsUpdate era -> - ImpTestM era (GovActionId (EraCrypto era)) -submitParameterChange parent ppu = do - policy <- getGovPolicy - submitGovAction $ ParameterChange parent ppu policy - -getGovPolicy :: ConwayEraGov era => ImpTestM era (StrictMaybe (ScriptHash (EraCrypto era))) -getGovPolicy = - getsNES $ - nesEpochStateL . epochStateGovStateL . constitutionGovStateL . constitutionScriptL - -submitFailingGovAction :: - forall era. - ( ShelleyEraImp era - , ConwayEraTxBody era - , HasCallStack - ) => - GovAction era -> - NonEmpty (PredicateFailure (EraRule "LEDGER" era)) -> - ImpTestM era () -submitFailingGovAction ga expectedFailure = trySubmitGovAction ga >>= (`shouldBeLeftExpr` expectedFailure) - -getEnactState :: ConwayEraGov era => ImpTestM era (EnactState era) -getEnactState = mkEnactState <$> getsNES (nesEsL . epochStateGovStateL) - -getProposals :: ConwayEraGov era => ImpTestM era (Proposals era) -getProposals = getsNES $ nesEsL . esLStateL . lsUTxOStateL . utxosGovStateL . proposalsGovStateL - -logProposalsForest :: ConwayEraGov era => ImpTestM era () -logProposalsForest = do - proposals <- getProposals - logEntry $ proposalsShowDebug proposals True - -getLastEnactedCommittee :: - ConwayEraGov era => ImpTestM era (StrictMaybe (GovPurposeId 'CommitteePurpose era)) -getLastEnactedCommittee = do - ps <- getProposals - pure $ ps ^. pRootsL . grCommitteeL . prRootL - -getLastEnactedConstitution :: - ConwayEraGov era => ImpTestM era (StrictMaybe (GovPurposeId 'ConstitutionPurpose era)) -getLastEnactedConstitution = do - ps <- getProposals - pure $ ps ^. pRootsL . grConstitutionL . prRootL - -getLastEnactedParameterChange :: - ConwayEraGov era => ImpTestM era (StrictMaybe (GovPurposeId 'PParamUpdatePurpose era)) -getLastEnactedParameterChange = do - ps <- getProposals - pure $ ps ^. pRootsL . grPParamUpdateL . prRootL - -getLastEnactedHardForkInitiation :: - ConwayEraGov era => ImpTestM era (StrictMaybe (GovPurposeId 'HardForkPurpose era)) -getLastEnactedHardForkInitiation = do - ps <- getProposals - pure $ ps ^. pRootsL . grHardForkL . prRootL - -getConstitutionProposals :: - ConwayEraGov era => - ImpTestM - era - ( Map.Map - (GovPurposeId 'ConstitutionPurpose era) - (PEdges (GovPurposeId 'ConstitutionPurpose era)) - ) -getConstitutionProposals = do - ps <- getProposals - pure $ ps ^. pGraphL . grConstitutionL . pGraphNodesL - -getParameterChangeProposals :: - ConwayEraGov era => - ImpTestM - era - ( Map.Map - (GovPurposeId 'PParamUpdatePurpose era) - (PEdges (GovPurposeId 'PParamUpdatePurpose era)) - ) -getParameterChangeProposals = do - ps <- getProposals - pure $ ps ^. pGraphL . grPParamUpdateL . pGraphNodesL - -logProposalsForestDiff :: - (Era era, ToExpr (PParamsHKD StrictMaybe era)) => - Proposals era -> - Proposals era -> - ImpTestM era () -logProposalsForestDiff pf1 pf2 = logEntry $ unlines ["Proposals Forest Diff:", diffExpr pf1 pf2] - --- | Looks up the governance action state corresponding to the governance action id -lookupGovActionState :: - ConwayEraGov era => - GovActionId (EraCrypto era) -> - ImpTestM era (Maybe (GovActionState era)) -lookupGovActionState aId = proposalsLookupId aId <$> getProposals - --- | Looks up the governance action state corresponding to the governance action id -getGovActionState :: - (HasCallStack, ConwayEraGov era) => - GovActionId (EraCrypto era) -> - ImpTestM era (GovActionState era) -getGovActionState govActionId = - impAnn "Expecting an action state" $ do - lookupGovActionState govActionId >>= \case - Nothing -> - assertFailure $ "Could not find action state for govActionId: " <> show govActionId - Just govActionState -> pure govActionState - -expectPresentGovActionId :: - (HasCallStack, ConwayEraGov era) => - GovActionId (EraCrypto era) -> - ImpTestM era () -expectPresentGovActionId govActionId = void $ getGovActionState govActionId - -expectMissingGovActionId :: - (HasCallStack, ConwayEraGov era) => - GovActionId (EraCrypto era) -> - ImpTestM era () -expectMissingGovActionId govActionId = - impAnn "Expecting for gov action state to be missing" $ do - lookupGovActionState govActionId >>= \case - Just _ -> - expectationFailure $ "Found gov action state for govActionId: " <> show govActionId - Nothing -> pure () - --- | Builds a RatifyEnv from the current state -getRatifyEnv :: ConwayEraGov era => ImpTestM era (RatifyEnv era) -getRatifyEnv = do - eNo <- getsNES nesELL - stakeDistr <- getsNES $ nesEsL . esLStateL . lsUTxOStateL . utxosStakeDistrL - poolDistr <- getsNES nesPdL - drepDistr <- getsNES $ nesEsL . epochStateDRepPulsingStateL . psDRepDistrG - drepState <- getsNES $ nesEsL . esLStateL . lsCertStateL . certVStateL . vsDRepsL - committeeState <- getsNES $ nesEsL . esLStateL . lsCertStateL . certVStateL . vsCommitteeStateL - pure - RatifyEnv - { reStakePoolDistr = poolDistr - , reStakeDistr = credMap stakeDistr - , reDRepState = drepState - , reDRepDistr = drepDistr - , reCurrentEpoch = eNo - 1 - , reCommitteeState = committeeState - } - --- | Test the resignation status for a CC cold key to be resigned -ccShouldBeResigned :: - HasCallStack => Credential 'ColdCommitteeRole (EraCrypto era) -> ImpTestM era () -ccShouldBeResigned coldK = do - committeeCreds <- - getsNES $ nesEsL . esLStateL . lsCertStateL . certVStateL . vsCommitteeStateL . csCommitteeCredsL - authHk <$> Map.lookup coldK committeeCreds `shouldBe` Just Nothing - --- | Test the resignation status for a CC cold key to not be resigned -ccShouldNotBeResigned :: - HasCallStack => Credential 'ColdCommitteeRole (EraCrypto era) -> ImpTestM era () -ccShouldNotBeResigned coldK = do - committeeCreds <- - getsNES $ nesEsL . esLStateL . lsCertStateL . certVStateL . vsCommitteeStateL . csCommitteeCredsL - (Map.lookup coldK committeeCreds >>= authHk) `shouldSatisfy` isJust - -authHk :: CommitteeAuthorization c -> Maybe (Credential 'HotCommitteeRole c) -authHk (CommitteeHotCredential hk) = Just hk -authHk _ = Nothing - --- | Calculates the ratio of DReps that have voted for the governance action -calculateDRepAcceptedRatio :: - forall era. - (HasCallStack, ConwayEraGov era) => - GovActionId (EraCrypto era) -> - ImpTestM era Rational -calculateDRepAcceptedRatio gaId = do - ratEnv <- getRatifyEnv - gas <- getGovActionState gaId - pure $ - dRepAcceptedRatio @era - ratEnv - (gas ^. gasDRepVotesL) - (gasAction gas) - --- | Calculates the ratio of Committee members that have voted for the governance --- action -calculateCommitteeAcceptedRatio :: - forall era. - (HasCallStack, ConwayEraGov era) => - GovActionId (EraCrypto era) -> - ImpTestM era Rational -calculateCommitteeAcceptedRatio gaId = do - eNo <- getsNES nesELL - RatifyEnv {reCommitteeState} <- getRatifyEnv - GovActionState {gasCommitteeVotes} <- getGovActionState gaId - committee <- getsNES $ nesEsL . epochStateGovStateL . committeeGovStateL - let - members = foldMap' (committeeMembers @era) committee - pure $ - committeeAcceptedRatio - members - gasCommitteeVotes - reCommitteeState - eNo - -calculatePoolAcceptedRatio :: - ConwayEraGov era => GovActionId (EraCrypto era) -> ImpTestM era Rational -calculatePoolAcceptedRatio gaId = do - ratEnv <- getRatifyEnv - gas <- getGovActionState gaId - pure $ spoAcceptedRatio ratEnv gas - --- | Logs the ratios of accepted votes per category -logAcceptedRatio :: - (HasCallStack, ConwayEraGov era) => GovActionId (EraCrypto era) -> ImpTestM era () -logAcceptedRatio aId = do - dRepRatio <- calculateDRepAcceptedRatio aId - committeeRatio <- calculateCommitteeAcceptedRatio aId - spoRatio <- calculatePoolAcceptedRatio aId - logEntry $ - unlines - [ "" - , "----- ACCEPTED RATIOS -----" - , "DRep accepted ratio:\t\t" <> show dRepRatio - , "Committee accepted ratio:\t" <> show committeeRatio - , "SPO accepted ratio:\t\t" <> show spoRatio - ] - -getRatifyEnvAndState :: ConwayEraGov era => ImpTestM era (RatifyEnv era, RatifyState era) -getRatifyEnvAndState = do - ratifyEnv <- getRatifyEnv - enactState <- getEnactState - let ratifyState = - RatifyState - { rsEnactState = enactState - , rsEnacted = mempty - , rsExpired = mempty - , rsDelayed = False - } - pure (ratifyEnv, ratifyState) - --- | Checks whether the governance action has enough DRep votes to be accepted in the next --- epoch. (Note that no other checks execept DRep votes is used) -isDRepAccepted :: - (HasCallStack, ConwayEraGov era, ConwayEraPParams era) => - GovActionId (EraCrypto era) -> - ImpTestM era Bool -isDRepAccepted gaId = do - (ratifyEnv, ratifyState) <- getRatifyEnvAndState - action <- getGovActionState gaId - pure $ dRepAccepted ratifyEnv ratifyState action - -isSpoAccepted :: - (HasCallStack, ConwayEraGov era, ConwayEraPParams era) => - GovActionId (EraCrypto era) -> - ImpTestM era Bool -isSpoAccepted gaId = do - (ratifyEnv, ratifyState) <- getRatifyEnvAndState - action <- getGovActionState gaId - pure $ spoAccepted ratifyEnv ratifyState action - -isCommitteeAccepted :: - (HasCallStack, ConwayEraGov era, ConwayEraPParams era) => - GovActionId (EraCrypto era) -> - ImpTestM era Bool -isCommitteeAccepted gaId = do - (ratifyEnv, ratifyState) <- getRatifyEnvAndState - action <- getGovActionState gaId - pure $ committeeAccepted ratifyEnv ratifyState action - --- | Logs the results of each check required to make the governance action pass -logRatificationChecks :: - (ConwayEraGov era, ConwayEraPParams era) => - GovActionId (EraCrypto era) -> - ImpTestM era () -logRatificationChecks gaId = do - gas@GovActionState {gasCommitteeVotes, gasDRepVotes} <- getGovActionState gaId - let govAction = gasAction gas - ens@EnactState {..} <- getEnactState - committee <- getsNES $ nesEsL . epochStateGovStateL . committeeGovStateL - ratEnv <- getRatifyEnv - let ratSt = RatifyState ens mempty mempty False - curTreasury <- getsNES $ nesEsL . esAccountStateL . asTreasuryL - currentEpoch <- getsNES nesELL - let - members = foldMap' committeeMembers committee - committeeState = reCommitteeState ratEnv - curPParams <- getsNES $ nesEsL . epochStateGovStateL . curPParamsGovStateL - logEntry $ - unlines - [ "----- RATIFICATION CHECKS -----" - , "prevActionAsExpected:\t" <> show (prevActionAsExpected gas ensPrevGovActionIds) - , "validCommitteeTerm:\t" <> show (validCommitteeTerm govAction curPParams currentEpoch) - , "notDelayed:\t\t??" - , "withdrawalCanWithdraw:\t" <> show (withdrawalCanWithdraw govAction curTreasury) - , "committeeAccepted:\t" - <> show (committeeAccepted ratEnv ratSt gas) - <> " [ To Pass: " - <> show (committeeAcceptedRatio members gasCommitteeVotes committeeState currentEpoch) - <> " >= " - <> show (votingCommitteeThreshold ratSt committeeState (gasAction gas)) - <> " ]" - , "spoAccepted:\t\t" - <> show (spoAccepted ratEnv ratSt gas) - <> " [ To Pass: " - <> show (spoAcceptedRatio ratEnv gas) - <> " >= " - <> show (votingStakePoolThreshold ratSt (gasAction gas)) - <> " ]" - , "dRepAccepted:\t\t" - <> show (dRepAccepted ratEnv ratSt gas) - <> " [ To Pass: " - <> show (dRepAcceptedRatio ratEnv gasDRepVotes (gasAction gas)) - <> " >= " - <> show (votingDRepThreshold ratSt (gasAction gas)) - <> " ]" - , "" - ] - --- | Submits a transaction that registers a hot key for the given cold key. --- Returns the hot key hash. -registerCommitteeHotKey :: - (ShelleyEraImp era, ConwayEraTxCert era) => - Credential 'ColdCommitteeRole (EraCrypto era) -> - ImpTestM era (Credential 'HotCommitteeRole (EraCrypto era)) -registerCommitteeHotKey coldKey = do - hotKey <- KeyHashObj <$> freshKeyHash - submitTxAnn_ "Registering Committee Hot key" $ - mkBasicTx mkBasicTxBody - & bodyTxL . certsTxBodyL - .~ SSeq.singleton (AuthCommitteeHotKeyTxCert coldKey hotKey) - pure hotKey - --- | Submits a transaction that resigns the cold key -resignCommitteeColdKey :: - (ShelleyEraImp era, ConwayEraTxCert era) => - Credential 'ColdCommitteeRole (EraCrypto era) -> - StrictMaybe (Anchor (EraCrypto era)) -> - ImpTestM era () -resignCommitteeColdKey coldKey anchor = do - submitTxAnn_ "Resigning Committee Cold key" $ - mkBasicTx mkBasicTxBody - & bodyTxL . certsTxBodyL - .~ SSeq.singleton (ResignCommitteeColdTxCert coldKey anchor) - -electCommittee :: - forall era. - ( HasCallStack - , ConwayEraImp era - ) => - StrictMaybe (GovPurposeId 'CommitteePurpose era) -> - KeyHash 'DRepRole (EraCrypto era) -> - Set.Set (Credential 'ColdCommitteeRole (EraCrypto era)) -> - Map.Map (Credential 'ColdCommitteeRole (EraCrypto era)) EpochNo -> - ImpTestM era (GovPurposeId 'CommitteePurpose era) -electCommittee prevGovId drep toRemove toAdd = impAnn "Electing committee" $ do - let - committeeAction = - UpdateCommittee - prevGovId - toRemove - toAdd - (1 %! 2) - gaidCommitteeProp <- submitGovAction committeeAction - submitYesVote_ (DRepVoter $ KeyHashObj drep) gaidCommitteeProp - pure (GovPurposeId gaidCommitteeProp) - -electBasicCommittee :: - forall era. - ( HasCallStack - , ConwayEraImp era - ) => - ImpTestM - era - ( Credential 'DRepRole (EraCrypto era) - , Credential 'HotCommitteeRole (EraCrypto era) - , GovPurposeId 'CommitteePurpose era - ) -electBasicCommittee = do - logEntry "Setting up PParams and DRep" - modifyPParams $ \pp -> - pp - & ppDRepVotingThresholdsL - %~ ( \dvt -> - dvt - { dvtCommitteeNormal = 1 %! 1 - , dvtCommitteeNoConfidence = 1 %! 2 - , dvtUpdateToConstitution = 1 %! 2 - } - ) - & ppCommitteeMaxTermLengthL .~ EpochInterval 20 - & ppGovActionLifetimeL .~ EpochInterval 2 - & ppGovActionDepositL .~ Coin 123 - (drepKH, _, _) <- setupSingleDRep 1_000_000 - - logEntry "Registering committee member" - coldCommitteeC <- KeyHashObj <$> freshKeyHash - let - committeeAction = - UpdateCommittee - SNothing - mempty - (Map.singleton coldCommitteeC 20) - (1 %! 2) - (gaidCommitteeProp NE.:| _) <- - submitGovActions - [ committeeAction - , UpdateCommittee SNothing mempty mempty (1 %! 10) - ] - submitYesVote_ (DRepVoter $ KeyHashObj drepKH) gaidCommitteeProp - - let - assertNoCommittee = do - committee <- - getsNES $ - nesEsL . esLStateL . lsUTxOStateL . utxosGovStateL . committeeGovStateL - impAnn "There should not be a committee" $ committee `shouldBe` SNothing - logRatificationChecks gaidCommitteeProp - assertNoCommittee - - passEpoch - logRatificationChecks gaidCommitteeProp - assertNoCommittee - passEpoch - do - committee <- - getsNES $ - nesEsL . esLStateL . lsUTxOStateL . utxosGovStateL . committeeGovStateL - impAnn "There should be a committee" $ committee `shouldSatisfy` isSJust - - hotCommitteeC <- registerCommitteeHotKey coldCommitteeC - pure (KeyHashObj drepKH, hotCommitteeC, GovPurposeId gaidCommitteeProp) - -logCurPParams :: (EraGov era, ToExpr (PParamsHKD Identity era)) => ImpTestM era () -logCurPParams = do - pp <- getsNES $ nesEsL . curPParamsEpochStateL - logEntry $ - unlines - [ "" - , "----- Current PParams -----" - , showExpr pp - , "---------------------------" - , "" - ] - -proposalsShowDebug :: Era era => Proposals era -> Bool -> String -proposalsShowDebug ps showRoots = - unlines $ - [ "" - , "----- Proposals -----" - , "Size" - , show $ proposalsSize ps - , "OMap" - , show $ proposalsIds ps - , "" - , "Roots" - , "> PParamUpdate" - , show $ ps ^. pRootsL . grPParamUpdateL - , "> HardFork" - , show $ ps ^. pRootsL . grHardForkL - , "> Committee" - , show $ ps ^. pRootsL . grCommitteeL - , "> Constitution" - , show $ ps ^. pRootsL . grConstitutionL - ] - <> ( if showRoots - then - [ "Hierarchy" - , ">> PParamUpdate" - , show $ ps ^. pGraphL . grPParamUpdateL . pGraphNodesL - , ">> HardFork" - , show $ ps ^. pGraphL . grHardForkL . pGraphNodesL - , ">> Committee" - , show $ ps ^. pGraphL . grCommitteeL . pGraphNodesL - , ">> Constitution" - , show $ ps ^. pGraphL . grConstitutionL . pGraphNodesL - ] - else mempty - ) - <> ["----- Proposals End -----"] - -submitInitConstitutionGovAction :: - (ShelleyEraImp era, ConwayEraTxBody era) => - ImpTestM era (GovActionId (EraCrypto era)) -submitInitConstitutionGovAction = do - submitConstitutionGovAction SNothing - -submitChildConstitutionGovAction :: - (ShelleyEraImp era, ConwayEraTxBody era) => - GovActionId (EraCrypto era) -> - ImpTestM era (GovActionId (EraCrypto era)) -submitChildConstitutionGovAction gai = - submitConstitutionGovAction $ SJust $ GovPurposeId gai - -submitConstitutionGovAction :: - (ShelleyEraImp era, ConwayEraTxBody era) => - StrictMaybe (GovPurposeId 'ConstitutionPurpose era) -> - ImpTestM era (GovActionId (EraCrypto era)) -submitConstitutionGovAction pgai = do - constitutionHash <- freshSafeHash - let constitutionAction = - NewConstitution - pgai - ( Constitution - ( Anchor - (fromJust $ textToUrl 64 "constitution.dummy.0") - constitutionHash - ) - SNothing - ) - submitGovAction constitutionAction - -getProposalsForest :: - ConwayEraGov era => - ImpTestM era (Forest (StrictMaybe (GovActionId (EraCrypto era)))) -getProposalsForest = do - ps <- getProposals - pure - [ Node (mkRoot grPParamUpdateL ps) $ mkForest grPParamUpdateL ps - , Node (mkRoot grHardForkL ps) $ mkForest grHardForkL ps - , Node (mkRoot grCommitteeL ps) $ mkForest grCommitteeL ps - , Node (mkRoot grConstitutionL ps) $ mkForest grConstitutionL ps - ] - where - mkRoot :: - Lens' (GovRelation PRoot era) (PRoot (GovPurposeId p era)) -> - Proposals era -> - StrictMaybe (GovActionId (EraCrypto era)) - mkRoot rootL ps = fmap unGovPurposeId $ ps ^. pRootsL . rootL . prRootL - mkForest :: - (forall f. Lens' (GovRelation f era) (f (GovPurposeId p era))) -> - Proposals era -> - Forest (StrictMaybe (GovActionId (EraCrypto era))) - mkForest forestL ps = - let h = ps ^. pGraphL . forestL . pGraphNodesL - s = toList $ proposalsIds ps - getOrderedChildren cs = filter (`Set.member` Set.map unGovPurposeId cs) s - go c = (SJust c, getOrderedChildren $ h Map.! GovPurposeId c ^. peChildrenL) - in unfoldForest go (getOrderedChildren $ ps ^. pRootsL . forestL . prChildrenL) - -submitConstitutionGovActionTree :: - (ShelleyEraImp era, ConwayEraTxBody era) => - StrictMaybe (GovActionId (EraCrypto era)) -> - Tree () -> - ImpTestM era (Tree (GovActionId (EraCrypto era))) -submitConstitutionGovActionTree p tree = - unfoldTreeM go $ fmap (const p) tree - where - go (Node parent children) = do - n <- submitConstitutionGovAction $ GovPurposeId <$> parent - pure (n, fmap (\(Node _child subtree) -> Node (SJust n) subtree) children) - -submitConstitutionGovActionForest :: - ConwayEraImp era => - StrictMaybe (GovActionId (EraCrypto era)) -> - Forest () -> - ImpTestM era (Forest (GovActionId (EraCrypto era))) -submitConstitutionGovActionForest p forest = - unfoldForestM go $ fmap (fmap $ const p) forest - where - go (Node parent children) = do - n <- submitConstitutionGovAction $ GovPurposeId <$> parent - pure (n, fmap (\(Node _child subtree) -> Node (SJust n) subtree) children) - -enactConstitution :: - forall era. - ( ConwayEraImp era - , HasCallStack - ) => - StrictMaybe (GovPurposeId 'ConstitutionPurpose era) -> - Constitution era -> - Credential 'DRepRole (EraCrypto era) -> - Credential 'HotCommitteeRole (EraCrypto era) -> - ImpTestM era (GovActionId (EraCrypto era)) -enactConstitution prevGovId constitution dRep committeeMember = impAnn "Enacting constitution" $ do - let action = NewConstitution prevGovId constitution - govId <- submitGovAction action - submitYesVote_ (DRepVoter dRep) govId - submitYesVote_ (CommitteeVoter committeeMember) govId - logRatificationChecks govId - passNEpochs 2 - enactedConstitution <- - getsNES $ - nesEsL . esLStateL . lsUTxOStateL . utxosGovStateL . constitutionGovStateL - enactedConstitution `shouldBe` constitution - pure govId - --- | Asserts that the URL of the current constitution is equal to the given --- string -constitutionShouldBe :: (HasCallStack, ConwayEraGov era) => String -> ImpTestM era () -constitutionShouldBe cUrl = do - Constitution {constitutionAnchor = Anchor {anchorUrl}} <- - getsNES $ - nesEsL . esLStateL . lsUTxOStateL . utxosGovStateL . constitutionGovStateL - anchorUrl `shouldBe` fromJust (textToUrl 64 $ T.pack cUrl) - -expectNumDormantEpochs :: HasCallStack => EpochNo -> ImpTestM era () -expectNumDormantEpochs expected = do - nd <- - getsNES $ - nesEsL . esLStateL . lsCertStateL . certVStateL . vsNumDormantEpochsL - nd `shouldBeExpr` expected - -submitConstitution :: - forall era. - ConwayEraImp era => - StrictMaybe (GovPurposeId 'ConstitutionPurpose era) -> - ImpTestM era (GovActionId (EraCrypto era), Constitution era) -submitConstitution prevGovId = do - constitution <- arbitrary - let constitutionAction = - NewConstitution - prevGovId - constitution - govActionId <- submitGovAction constitutionAction - pure (govActionId, constitution) - -expectExtraDRepExpiry :: - (HasCallStack, EraGov era, ConwayEraPParams era) => - KeyHash 'DRepRole (EraCrypto era) -> - EpochNo -> - ImpTestM era () -expectExtraDRepExpiry kh expected = do - drepActivity <- - getsNES $ - nesEsL . esLStateL . lsUTxOStateL . utxosGovStateL . curPParamsGovStateL . ppDRepActivityL - dsMap <- - getsNES $ - nesEsL . esLStateL . lsCertStateL . certVStateL . vsDRepsL - let ds = Map.lookup (KeyHashObj kh) dsMap - (^. drepExpiryL) - <$> ds - `shouldBe` Just (addEpochInterval expected drepActivity) - -currentProposalsShouldContain :: - ( HasCallStack - , ConwayEraGov era - ) => - GovActionId (EraCrypto era) -> - ImpTestM era () -currentProposalsShouldContain gai = - currentProposalIds >>= flip shouldContain [gai] . toList - -expectCurrentProposals :: (HasCallStack, ConwayEraGov era) => ImpTestM era () -expectCurrentProposals = do - props <- currentProposalIds - assertBool "Expected proposals in current gov state" (not (SSeq.null props)) - -expectNoCurrentProposals :: (HasCallStack, ConwayEraImp era) => ImpTestM era () -expectNoCurrentProposals = do - proposals <- getProposals - case proposalsActions proposals of - Empty -> pure () - xs -> assertFailure $ "Expected no active proposals, but got:\n" <> show (toExpr xs) - -expectPulserProposals :: (HasCallStack, ConwayEraGov era) => ImpTestM era () -expectPulserProposals = do - props <- lastEpochProposals - assertBool "Expected proposals in the pulser" (not (SSeq.null props)) - -expectNoPulserProposals :: (HasCallStack, ConwayEraGov era) => ImpTestM era () -expectNoPulserProposals = do - props <- lastEpochProposals - assertBool "Expected no proposals in the pulser" (SSeq.null props) - -currentProposalIds :: - ConwayEraGov era => ImpTestM era (SSeq.StrictSeq (GovActionId (EraCrypto era))) -currentProposalIds = - proposalsIds - <$> getsNES (nesEsL . esLStateL . lsUTxOStateL . utxosGovStateL . proposalsGovStateL) - -lastEpochProposals :: - forall era. - ConwayEraGov era => - ImpTestM era (SSeq.StrictSeq (GovActionId (EraCrypto era))) -lastEpochProposals = - fmap (gasId @era) . psProposals - <$> getsNES - ( nesEsL - . esLStateL - . lsUTxOStateL - . utxosGovStateL - . drepPulsingStateGovStateL - . pulsingStateSnapshotL - ) - -pulsingStateSnapshotL :: Lens' (DRepPulsingState era) (PulsingSnapshot era) -pulsingStateSnapshotL = lens getter setter - where - getter (DRComplete x _) = x - getter state = fst (finishDRepPulser state) - setter (DRComplete _ y) snap = DRComplete snap y - setter state snap = DRComplete snap $ snd $ finishDRepPulser state - --- | A legal ProtVer that differs in the minor Version -minorFollow :: ProtVer -> ProtVer -minorFollow (ProtVer x y) = ProtVer x (y + 1) - --- | A legal ProtVer that moves to the next major Version -majorFollow :: ProtVer -> ProtVer -majorFollow pv@(ProtVer x _) = case succVersion x of - Just x' -> ProtVer x' 0 - Nothing -> error ("The last major version can't be incremented. " ++ show pv) - --- | An illegal ProtVer that skips 3 minor versions -cantFollow :: ProtVer -> ProtVer -cantFollow (ProtVer x y) = ProtVer x (y + 3) diff --git a/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Proposals.hs b/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Proposals.hs deleted file mode 100644 index ed06aace706..00000000000 --- a/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Proposals.hs +++ /dev/null @@ -1,83 +0,0 @@ -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE ScopedTypeVariables #-} - -module Test.Cardano.Ledger.Conway.Proposals where - -import Cardano.Ledger.Conway -import Cardano.Ledger.Conway.Governance -import Control.DeepSeq (force) -import Control.Exception (AssertionFailed (..), evaluate) -import Data.Either (isRight) -import Data.Foldable (foldl', toList) -import qualified Data.Map.Strict as Map -import Data.Maybe (fromMaybe) -import Data.Sequence (fromList) -import qualified Data.Sequence as Seq -import qualified Data.Sequence.Strict as SSeq -import qualified Data.Set as Set -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Conway.Arbitrary ( - ProposalsForEnactment (..), - ProposalsNewActions (..), - ) - -spec :: Spec -spec = do - describe "Proposals" $ do - describe "Construction" $ do - prop "Adding new nodes keeps Proposals consistent" $ - \(ProposalsNewActions ps actions :: ProposalsNewActions Conway) -> - let ps' = - foldl' - (\p action -> fromMaybe (error "Unable to add action") $ proposalsAddAction action p) - ps - actions - actionsMap = foldl' (\accum gas -> Map.insert (gasId gas) gas accum) Map.empty actions - in actionsMap `shouldBe` (actionsMap `Map.intersection` proposalsActionsMap ps') - describe "Removal" $ do - prop "Removing leaf nodes keeps Proposals consistent" $ - \(ps :: Proposals Conway) -> do - let gais = Set.fromList $ toList $ SSeq.takeLast 4 $ proposalsIds ps - ps' = fst $ proposalsRemoveWithDescendants gais ps - proposalsSize ps' `shouldBe` proposalsSize ps - Set.size gais - prop "Removing root nodes keeps Proposals consistent" $ - \(ps :: Proposals Conway) -> do - let gais = Set.fromList $ toList $ SSeq.take 4 $ proposalsIds ps - ps' = fst $ proposalsRemoveWithDescendants gais ps - proposalsSize ps' `shouldSatisfy` (<= proposalsSize ps) - prop "Removing non-member nodes throws an AssertionFailure" $ - \(ProposalsNewActions ps actions :: ProposalsNewActions Conway) -> - (evaluate . force) (proposalsRemoveWithDescendants (Set.fromList $ gasId <$> actions) ps) - `shouldThrow` \AssertionFailed {} -> True - describe "Enactment" $ do - prop "Adding votes preserves consistency" $ - \(ProposalsForEnactment ps gass _ :: ProposalsForEnactment Conway, voter :: Voter era, vote :: Vote) -> do - case gass of - gas Seq.:<| _gass -> isRight . toGovRelationTreeEither $ proposalsAddVote voter vote (gasId gas) ps - _ -> True - prop "Enacting exhaustive lineages reduces Proposals to their roots" $ - \(ProposalsForEnactment ps gass _ :: ProposalsForEnactment Conway) -> do - let toEnact = Set.fromList $ toList gass - (_ps', enactedRemoved, expiredRemoved) = proposalsApplyEnactment gass Set.empty ps - expiredRemoved `shouldSatisfy` Map.null - toEnact `shouldSatisfy` (`Set.isSubsetOf` Set.fromList (Map.elems enactedRemoved)) - prop "Enacting non-member nodes throws an AssertionFailure" $ - \(ProposalsNewActions ps actions :: ProposalsNewActions Conway) -> - (evaluate . force) (proposalsApplyEnactment (fromList actions) Set.empty ps) - `shouldThrow` \AssertionFailed {} -> True - prop "Expiring compliments of exhaustive lineages keeps proposals consistent" $ - \(ProposalsForEnactment ps _ gais :: ProposalsForEnactment Conway) -> do - let (_ps', enactedRemoved, expiredRemoved) = proposalsApplyEnactment Seq.Empty gais ps - enactedRemoved `shouldSatisfy` Map.null - gais `shouldSatisfy` (`Set.isSubsetOf` Map.keysSet expiredRemoved) - prop "Expiring non-member nodes throws an AssertionFailure" $ - \(ProposalsNewActions ps actions :: ProposalsNewActions Conway) -> - (evaluate . force) (proposalsApplyEnactment Seq.Empty (Set.fromList $ gasId <$> actions) ps) - `shouldThrow` \AssertionFailed {} -> True - prop "Enacting and expiring exhaustive lineages reduces Proposals to their roots" $ - \(ProposalsForEnactment ps toEnact toExpire :: ProposalsForEnactment Conway) -> do - let (ps', enactedRemoved, expiredRemoved) = proposalsApplyEnactment toEnact toExpire ps - Set.fromList (toList toEnact) - `shouldSatisfy` (`Set.isSubsetOf` Set.fromList (Map.elems enactedRemoved)) - Set.fromList (toList toExpire) `shouldSatisfy` (`Set.isSubsetOf` Map.keysSet expiredRemoved) - proposalsSize ps' `shouldBe` 0 diff --git a/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/TreeDiff.hs b/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/TreeDiff.hs deleted file mode 100644 index 1f0395f54a6..00000000000 --- a/eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/TreeDiff.hs +++ /dev/null @@ -1,235 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE KindSignatures #-} -{-# LANGUAGE QuantifiedConstraints #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Conway.TreeDiff ( - module Test.Cardano.Ledger.Babbage.TreeDiff, -) where - -import Cardano.Ledger.Alonzo.Plutus.Context (ContextError) -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.Conway (ConwayEra) -import Cardano.Ledger.Conway.Core -import Cardano.Ledger.Conway.Governance -import Cardano.Ledger.Conway.PParams -import Cardano.Ledger.Conway.Rules -import Cardano.Ledger.Conway.Scripts -import Cardano.Ledger.Conway.TxBody -import Cardano.Ledger.Conway.TxCert -import Cardano.Ledger.Conway.TxInfo (ConwayContextError) -import Cardano.Ledger.Crypto -import Cardano.Ledger.HKD -import Control.State.Transition.Extended (STS (..)) -import Data.Functor.Identity -import Test.Cardano.Data.TreeDiff () -import Test.Cardano.Ledger.Babbage.TreeDiff - --- Core -instance ToExpr PoolVotingThresholds - -instance ToExpr DRepVotingThresholds - --- Scripts -instance ToExpr (PlutusScript (ConwayEra c)) - -instance ToExpr (ConwayPlutusPurpose AsIx era) - -instance - ( Era era - , ToExpr (TxCert era) - , ToExpr (PParamsHKD StrictMaybe era) - ) => - ToExpr (ConwayPlutusPurpose AsItem era) - --- PlutusContext -instance - ( Era era - , ToExpr (PParamsHKD StrictMaybe era) - , ToExpr (TxCert era) - , ToExpr (PlutusPurpose AsIx era) - , ToExpr (PlutusPurpose AsItem era) - ) => - ToExpr (ConwayContextError era) - --- Governance/Procedure -instance ToExpr GovActionIx - -instance ToExpr (GovActionId c) - -instance ToExpr (PParamsHKD StrictMaybe era) => ToExpr (GovActionState era) - -instance Crypto c => ToExpr (Voter c) - -instance ToExpr Vote - -instance Era era => ToExpr (VotingProcedures era) - -instance ToExpr (VotingProcedure era) - -instance ToExpr (PParamsHKD StrictMaybe era) => ToExpr (ProposalProcedure era) - -instance ToExpr (Committee era) - -instance ToExpr (GovPurposeId purpose era) - -instance ToExpr (PParamsHKD StrictMaybe era) => ToExpr (GovAction era) - --- Governance/Proposals -instance ToExpr a => ToExpr (PRoot a) - -instance ToExpr a => ToExpr (PEdges a) - -instance ToExpr a => ToExpr (PGraph a) - -instance - (forall p. ToExpr (f (GovPurposeId (p :: GovActionPurpose) era))) => - ToExpr (GovRelation f era) - -instance (Era era, ToExpr (PParamsHKD StrictMaybe era)) => ToExpr (Proposals era) - --- PParams -instance ToExpr (HKD f a) => ToExpr (THKD t f a) where - toExpr = toExpr . unTHKD - -instance ToExpr (ConwayPParams Identity era) - -instance ToExpr (ConwayPParams StrictMaybe era) - --- Governance -instance (EraPParams era, ToExpr (PParamsHKD StrictMaybe era)) => ToExpr (PulsingSnapshot era) - -instance (Era era, ToExpr (PParamsHKD Identity era)) => ToExpr (EnactState era) - -instance - ( EraPParams era - , ToExpr (PParamsHKD Identity era) - , ToExpr (PParamsHKD StrictMaybe era) - ) => - ToExpr (RatifyState era) - -instance - (EraPParams era, ToExpr (PParamsHKD Identity era), ToExpr (PParamsHKD StrictMaybe era)) => - ToExpr (ConwayGovState era) - -instance - (EraPParams era, ToExpr (PParamsHKD StrictMaybe era), ToExpr (PParamsHKD Identity era)) => - ToExpr (DRepPulsingState era) - where - toExpr (DRComplete x y) = App "DRComplete" [toExpr x, toExpr y] - toExpr x@(DRPulsing (DRepPulser {})) = App "DRComplete" [toExpr a, toExpr b] - where - (a, b) = finishDRepPulser x - -instance ToExpr (RatifyEnv era) where - toExpr (RatifyEnv stake pool drep dstate ep cs) = - App "RatifyEnv" [toExpr stake, toExpr pool, toExpr drep, toExpr dstate, toExpr ep, toExpr cs] - --- Rules/Gov -instance (EraPParams era, ToExpr (PParamsHKD StrictMaybe era)) => ToExpr (ConwayGovPredFailure era) - --- TxCert -instance ToExpr (Delegatee c) - -instance ToExpr (ConwayDelegCert c) - -instance ToExpr (ConwayGovCert c) - -instance ToExpr (ConwayTxCert c) - --- Rules -instance ToExpr (ConwayGovCertPredFailure era) - -instance ToExpr (ConwayDelegPredFailure era) - -instance - ( ToExpr (PlutusPurpose AsItem era) - , ToExpr (ContextError era) - , ToExpr (TxCert era) - ) => - ToExpr (ConwayUtxosPredFailure era) - --- TxBody -instance - (EraPParams era, ToExpr (PParamsHKD StrictMaybe era), ToExpr (TxOut era)) => - ToExpr (ConwayTxBodyRaw era) - -instance - (EraPParams era, ToExpr (PParamsHKD StrictMaybe era), ToExpr (TxOut era)) => - ToExpr (ConwayTxBody era) - --- Rules/Cert -instance - ( ToExpr (PredicateFailure (EraRule "DELEG" era)) - , ToExpr (PredicateFailure (EraRule "GOVCERT" era)) - , ToExpr (PredicateFailure (EraRule "POOL" era)) - ) => - ToExpr (ConwayCertPredFailure era) - --- Rules/Certs -instance - ToExpr (PredicateFailure (EraRule "CERT" era)) => - ToExpr (ConwayCertsPredFailure era) - --- Rules/Ledger -instance - ( ToExpr (PredicateFailure (EraRule "UTXOW" era)) - , ToExpr (PredicateFailure (EraRule "GOV" era)) - , ToExpr (PredicateFailure (EraRule "CERTS" era)) - ) => - ToExpr (ConwayLedgerPredFailure era) - -instance ToExpr (Constitution era) - -instance - ( ToExpr (Event (EraRule "EPOCH" era)) - , ToExpr (Event (EraRule "RUPD" era)) - ) => - ToExpr (ConwayNewEpochEvent era) - -instance - ( EraPParams era - , ToExpr (PParamsHKD Identity era) - , ToExpr (PParamsHKD StrictMaybe era) - , ToExpr (Event (EraRule "POOLREAP" era)) - , ToExpr (Event (EraRule "SNAP" era)) - ) => - ToExpr (ConwayEpochEvent era) - -instance - ( ToExpr (Event (EraRule "CERTS" era)) - , ToExpr (Event (EraRule "UTXOW" era)) - , ToExpr (Event (EraRule "GOV" era)) - ) => - ToExpr (ConwayLedgerEvent era) - -instance - ToExpr (Event (EraRule "CERT" era)) => - ToExpr (ConwayCertsEvent era) - -instance - ( ToExpr (Event (EraRule "DELEG" era)) - , ToExpr (Event (EraRule "GOVCERT" era)) - , ToExpr (Event (EraRule "POOL" era)) - ) => - ToExpr (ConwayCertEvent era) - -instance ToExpr (TxOut era) => ToExpr (ConwayUtxosEvent era) - -instance - ( Era era - , ToExpr (PParamsHKD StrictMaybe era) - ) => - ToExpr (ConwayGovEvent era) - -instance - ( EraPParams era - , ToExpr (PParamsHKD StrictMaybe era) - ) => - ToExpr (GovProcedures era) - -instance ToExpr (PParamsHKD Identity era) => ToExpr (GovEnv era) diff --git a/eras/conway/test-suite/.ghcid b/eras/conway/test-suite/.ghcid deleted file mode 100644 index e955c52c687..00000000000 --- a/eras/conway/test-suite/.ghcid +++ /dev/null @@ -1 +0,0 @@ ---command="cabal repl --repl-options='-isrc -fwarn-unused-binds -fwarn-unused-imports -fno-code -fobject-code -g2 -fno-break-on-exception -fno-break-on-error -ferror-spans -j -Wno-unused-packages'" --clear --no-height-limit --reverse-errors --reload=../../../ --outputfile=/tmp/cardano-ledger-conway-test-ghcid.txt \ No newline at end of file diff --git a/eras/conway/test-suite/CHANGELOG.md b/eras/conway/test-suite/CHANGELOG.md deleted file mode 100644 index 67ae55d5dcc..00000000000 --- a/eras/conway/test-suite/CHANGELOG.md +++ /dev/null @@ -1,46 +0,0 @@ -# Version history for `cardano-ledger-conway-test` - -## 1.2.1.5 - -* - -## 1.2.1.4 - -* - -## 1.2.1.3 - -* - -## 1.2.1.2 - -* Move `cddl-files` to `cardano-ledger-alonzo` - -## 1.2.1.1 - -* Update CDDL files to reflect the change in header structure in - cardano-protocol-praos. - -## 1.2.1.0 - -* Add `Crypto c` constraint to `exampleConwayGenesis` - -## 1.2.0.5 - -* - -## 1.2.0.4 - -* - -## 1.2.0.3 - -* - -## 1.2.0.2 - -* - -## 1.2.0.1 - -* diff --git a/eras/conway/test-suite/cardano-ledger-conway-test.cabal b/eras/conway/test-suite/cardano-ledger-conway-test.cabal deleted file mode 100644 index 97d9d80911e..00000000000 --- a/eras/conway/test-suite/cardano-ledger-conway-test.cabal +++ /dev/null @@ -1,89 +0,0 @@ -cabal-version: 3.0 -name: cardano-ledger-conway-test -version: 1.2.1.4 -license: Apache-2.0 -maintainer: operations@iohk.io -author: IOHK -bug-reports: https://github.com/intersectmbo/cardano-ledger/issues -synopsis: Tests for Cardano ledger Conway era -description: This package builds upon the Alonzo ledger -category: Network -build-type: Simple -data-files: golden/*.cbor - -source-repository head - type: git - location: https://github.com/intersectmbo/cardano-ledger - subdir: eras/conway/test-suite - -library - exposed-modules: - Test.Cardano.Ledger.Conway.Examples.Consensus - Test.Cardano.Ledger.Conway.Translation.TranslatableGen - - hs-source-dirs: src - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints - -Wunused-packages - - build-depends: - base >=4.14 && <5, - cardano-data, - cardano-ledger-alonzo:{cardano-ledger-alonzo, testlib} >=1.6, - cardano-ledger-alonzo-test, - cardano-ledger-babbage >=1.3 && <1.9, - cardano-ledger-babbage-test >=1.1.1, - cardano-ledger-binary >=1.0, - cardano-ledger-conway:{cardano-ledger-conway, testlib} ^>=1.13, - cardano-ledger-core:{cardano-ledger-core, testlib} >=1.11, - cardano-ledger-allegra >=1.2, - cardano-ledger-mary >=1.4, - cardano-ledger-shelley-ma-test >=1.1, - cardano-ledger-shelley-test >=1.1, - cardano-ledger-shelley >=1.6, - cardano-slotting, - cardano-strict-containers, - containers, - data-default-class, - small-steps >=1.1, - plutus-ledger-api, - microlens - -executable gen-golden - main-is: GenerateGoldenFileMain.hs - hs-source-dirs: test - other-modules: Paths_cardano_ledger_conway_test - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints - -Wunused-packages - - build-depends: - base, - cardano-ledger-conway:{cardano-ledger-conway, testlib}, - cardano-ledger-conway-test, - cardano-ledger-alonzo-test - -test-suite cardano-ledger-conway-test - type: exitcode-stdio-1.0 - main-is: Tests.hs - hs-source-dirs: test - other-modules: - Test.Cardano.Ledger.Conway.TxInfo - Paths_cardano_ledger_conway_test - - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints - -Wunused-packages -threaded -rtsopts -with-rtsopts=-N - "-with-rtsopts=-K4m -M250m" - - build-depends: - base, - cardano-ledger-babbage-test, - cardano-ledger-conway, - tasty diff --git a/eras/conway/test-suite/golden/translations.cbor b/eras/conway/test-suite/golden/translations.cbor deleted file mode 100644 index b7854d16260f07b59cb4fc3cc0f904a6f231da0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68526 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 diff --git a/eras/conway/test-suite/src/Test/Cardano/Ledger/Conway/Examples/Consensus.hs b/eras/conway/test-suite/src/Test/Cardano/Ledger/Conway/Examples/Consensus.hs deleted file mode 100644 index 79e7717da35..00000000000 --- a/eras/conway/test-suite/src/Test/Cardano/Ledger/Conway/Examples/Consensus.hs +++ /dev/null @@ -1,206 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Test.Cardano.Ledger.Conway.Examples.Consensus where - -import Cardano.Ledger.Allegra.Scripts (Timelock (..)) -import Cardano.Ledger.Alonzo.Scripts (AlonzoScript (..), ExUnits (..)) -import Cardano.Ledger.Alonzo.Tx (IsValid (..)) -import Cardano.Ledger.Alonzo.TxAuxData ( - AuxiliaryDataHash (..), - mkAlonzoTxAuxData, - ) -import Cardano.Ledger.Alonzo.TxWits (Redeemers (..), TxDats (..)) -import Cardano.Ledger.Babbage.TxBody (BabbageTxOut (..)) -import Cardano.Ledger.BaseTypes (StrictMaybe (..)) -import Cardano.Ledger.Binary (mkSized) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Conway (Conway) -import Cardano.Ledger.Conway.Core -import Cardano.Ledger.Conway.Genesis (ConwayGenesis (..)) -import Cardano.Ledger.Conway.Governance (VotingProcedures (..)) -import Cardano.Ledger.Conway.Rules (ConwayCERTS, ConwayCertsPredFailure (..), ConwayLEDGER) -import Cardano.Ledger.Conway.Scripts (ConwayPlutusPurpose (..)) -import Cardano.Ledger.Conway.Translation () -import Cardano.Ledger.Conway.Tx (AlonzoTx (..)) -import Cardano.Ledger.Conway.TxBody (ConwayTxBody (..)) -import Cardano.Ledger.Conway.TxCert (ConwayTxCert (..)) -import Cardano.Ledger.Conway.TxWits (AlonzoTxWits (..)) -import Cardano.Ledger.Credential (Credential (KeyHashObj, ScriptHashObj)) -import Cardano.Ledger.Crypto (Crypto, StandardCrypto) -import Cardano.Ledger.Keys (asWitness) -import Cardano.Ledger.Mary.Value (MaryValue (..)) -import Cardano.Ledger.Plutus.Data ( - Data (..), - Datum (..), - dataToBinaryData, - hashData, - ) -import Cardano.Ledger.Plutus.Language (Language (..)) -import Cardano.Ledger.SafeHash (hashAnnotated) -import Cardano.Ledger.Shelley.API ( - ApplyTxError (..), - Network (..), - NewEpochState (..), - ProposedPPUpdates (..), - RewardAccount (..), - TxId (..), - ) -import Cardano.Ledger.Shelley.Tx (ShelleyTx (..)) -import Cardano.Ledger.TxIn (mkTxInPartial) -import Cardano.Slotting.Slot (SlotNo (..)) -import Control.State.Transition.Extended (Embed (..)) -import Data.Default.Class (Default (def)) -import qualified Data.Map.Strict as Map -import qualified Data.OSet.Strict as OSet -import Data.Proxy (Proxy (..)) -import qualified Data.Sequence.Strict as StrictSeq -import qualified Data.Set as Set -import Lens.Micro -import qualified PlutusLedgerApi.Common as P -import Test.Cardano.Ledger.Alonzo.Arbitrary (alwaysFails, alwaysSucceeds) -import Test.Cardano.Ledger.Core.KeyPair (mkAddr, mkWitnessesVKey) -import Test.Cardano.Ledger.Core.Utils (mkDummySafeHash) -import qualified Test.Cardano.Ledger.Mary.Examples.Consensus as MarySLE -import Test.Cardano.Ledger.Shelley.Examples.Consensus (examplePoolParams) -import qualified Test.Cardano.Ledger.Shelley.Examples.Consensus as SLE - --- ============================================================== - --- | ShelleyLedgerExamples for Conway era -ledgerExamplesConway :: - SLE.ShelleyLedgerExamples Conway -ledgerExamplesConway = - SLE.ShelleyLedgerExamples - { SLE.sleBlock = SLE.exampleShelleyLedgerBlock exampleTransactionInBlock - , SLE.sleHashHeader = SLE.exampleHashHeader (Proxy @Conway) - , SLE.sleTx = exampleTransactionInBlock - , SLE.sleApplyTxError = - ApplyTxError $ - pure $ - wrapFailed @(ConwayCERTS Conway) @(ConwayLEDGER Conway) $ - DelegateeNotRegisteredDELEG @Conway (SLE.mkKeyHash 1) - , SLE.sleRewardsCredentials = - Set.fromList - [ Left (Coin 100) - , Right (ScriptHashObj (SLE.mkScriptHash 1)) - , Right (KeyHashObj (SLE.mkKeyHash 2)) - ] - , SLE.sleResultExamples = resultExamples - , SLE.sleNewEpochState = exampleConwayNewEpochState - , SLE.sleChainDepState = SLE.exampleLedgerChainDepState 1 - , SLE.sleTranslationContext = exampleConwayGenesis - } - where - resultExamples = - SLE.ShelleyResultExamples - { SLE.srePParams = def - , SLE.sreProposedPPUpdates = examplePPPU - , SLE.srePoolDistr = SLE.examplePoolDistr - , SLE.sreNonMyopicRewards = SLE.exampleNonMyopicRewards - , SLE.sreShelleyGenesis = SLE.testShelleyGenesis - } - examplePPPU = - ProposedPPUpdates $ - Map.singleton - (SLE.mkKeyHash 0) - (emptyPParamsUpdate & ppuCollateralPercentageL .~ SJust 150) - -collateralOutput :: BabbageTxOut Conway -collateralOutput = - BabbageTxOut - (mkAddr (SLE.examplePayKey, SLE.exampleStakeKey)) - (MaryValue (Coin 8675309) mempty) - NoDatum - SNothing - -exampleConwayCerts :: Era era => OSet.OSet (ConwayTxCert era) -exampleConwayCerts = - OSet.fromList -- TODO should I add the new certs here? - [ ConwayTxCertPool (RegPool examplePoolParams) - ] - -exampleTxBodyConway :: TxBody Conway -exampleTxBodyConway = - ConwayTxBody - (Set.fromList [mkTxInPartial (TxId (mkDummySafeHash Proxy 1)) 0]) -- spending inputs - (Set.fromList [mkTxInPartial (TxId (mkDummySafeHash Proxy 2)) 1]) -- collateral inputs - (Set.fromList [mkTxInPartial (TxId (mkDummySafeHash Proxy 1)) 3]) -- reference inputs - ( StrictSeq.fromList - [ mkSized (eraProtVerHigh @Conway) $ - BabbageTxOut - (mkAddr (SLE.examplePayKey, SLE.exampleStakeKey)) - (MarySLE.exampleMultiAssetValue 2) - (Datum $ dataToBinaryData datumExample) -- inline datum - (SJust $ alwaysSucceeds @'PlutusV2 3) -- reference script - ] - ) - (SJust $ mkSized (eraProtVerHigh @Conway) collateralOutput) -- collateral return - (SJust $ Coin 8675309) -- collateral tot - exampleConwayCerts -- txcerts - ( Withdrawals $ - Map.singleton - (RewardAccount Testnet (SLE.keyToCredential SLE.exampleStakeKey)) - (Coin 100) -- txwdrls - ) - (Coin 999) -- txfee - (ValidityInterval (SJust (SlotNo 2)) (SJust (SlotNo 4))) -- txvldt - (Set.singleton $ SLE.mkKeyHash 212) -- reqSignerHashes - exampleMultiAsset -- mint - (SJust $ mkDummySafeHash (Proxy @StandardCrypto) 42) -- scriptIntegrityHash - (SJust . AuxiliaryDataHash $ mkDummySafeHash (Proxy @StandardCrypto) 42) -- adHash - (SJust Mainnet) -- txnetworkid - (VotingProcedures mempty) - mempty - (SJust $ Coin 867530900000) -- current treasury value - mempty - where - MaryValue _ exampleMultiAsset = MarySLE.exampleMultiAssetValue 3 - -datumExample :: Data Conway -datumExample = Data (P.I 191) - -redeemerExample :: Data Conway -redeemerExample = Data (P.I 919) - -exampleTx :: ShelleyTx Conway -exampleTx = - ShelleyTx - exampleTxBodyConway - ( AlonzoTxWits - (mkWitnessesVKey (hashAnnotated exampleTxBodyConway) [asWitness SLE.examplePayKey]) -- vkey - mempty -- bootstrap - ( Map.singleton - (hashScript @Conway $ alwaysSucceeds @'PlutusV1 3) - (alwaysSucceeds @'PlutusV1 3) -- txscripts - ) - (TxDats $ Map.singleton (hashData datumExample) datumExample) - ( Redeemers $ - Map.singleton (ConwaySpending $ AsIx 0) (redeemerExample, ExUnits 5000 5000) - ) -- redeemers - ) - ( SJust $ - mkAlonzoTxAuxData - SLE.exampleAuxDataMap -- metadata - [alwaysFails @'PlutusV1 2, TimelockScript $ RequireAllOf mempty] -- Scripts - ) - -exampleTransactionInBlock :: AlonzoTx Conway -exampleTransactionInBlock = AlonzoTx b w (IsValid True) a - where - ShelleyTx b w a = exampleTx - -exampleConwayNewEpochState :: NewEpochState Conway -exampleConwayNewEpochState = - SLE.exampleNewEpochState - (MarySLE.exampleMultiAssetValue 1) - emptyPParams - (emptyPParams & ppCoinsPerUTxOByteL .~ CoinPerByte (Coin 1)) - -exampleConwayGenesis :: Crypto c => ConwayGenesis c -exampleConwayGenesis = def diff --git a/eras/conway/test-suite/src/Test/Cardano/Ledger/Conway/Translation/TranslatableGen.hs b/eras/conway/test-suite/src/Test/Cardano/Ledger/Conway/Translation/TranslatableGen.hs deleted file mode 100644 index d45e986cd72..00000000000 --- a/eras/conway/test-suite/src/Test/Cardano/Ledger/Conway/Translation/TranslatableGen.hs +++ /dev/null @@ -1,86 +0,0 @@ -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Conway.Translation.TranslatableGen where - -import Cardano.Ledger.Alonzo.Scripts (AlonzoEraScript, AsIx (..), PlutusPurpose) -import Cardano.Ledger.Alonzo.TxWits (Redeemers (..)) -import Cardano.Ledger.Binary (mkSized) -import Cardano.Ledger.Conway (Conway, ConwayEra) -import Cardano.Ledger.Conway.Scripts (ConwayPlutusPurpose (..)) -import Cardano.Ledger.Conway.TxBody (ConwayTxBody (..)) -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto -import Cardano.Ledger.Plutus (Data (..), ExUnits, Language (..), SLanguage (..)) -import Cardano.Ledger.TxIn (TxIn (..)) -import qualified Data.Map.Strict as Map -import Data.Sequence.Strict (fromList) -import qualified Data.Set as Set -import Test.Cardano.Ledger.Alonzo.Translation.TranslatableGen ( - TranslatableGen (..), - TxInfoLanguage (..), - ) -import qualified Test.Cardano.Ledger.Babbage.Translation.TranslatableGen as BabbageTranslatableGen ( - genTx, - genTxOut, - utxoWithTx, - ) -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Conway.Arbitrary () - -instance TranslatableGen Conway where - tgRedeemers = genRedeemers - tgTx l = BabbageTranslatableGen.genTx @Conway (genTxBody l) - tgUtxo = BabbageTranslatableGen.utxoWithTx @Conway - mkTxInfoLanguage PlutusV1 = TxInfoLanguage SPlutusV1 - mkTxInfoLanguage PlutusV2 = TxInfoLanguage SPlutusV2 - mkTxInfoLanguage PlutusV3 = TxInfoLanguage SPlutusV3 - -genTxBody :: forall c. Crypto c => Language -> Gen (ConwayTxBody (ConwayEra c)) -genTxBody l = do - let genTxOuts = - fromList - <$> listOf1 - ( mkSized (eraProtVerLow @Conway) - <$> BabbageTranslatableGen.genTxOut @(ConwayEra c) l - ) - let genTxIns = Set.fromList <$> listOf1 (arbitrary :: Gen (TxIn c)) - ConwayTxBody - <$> genTxIns - <*> arbitrary - <*> ( case l of -- refinputs - PlutusV1 -> pure Set.empty - _ -> arbitrary - ) - <*> genTxOuts - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> scale (`div` 15) arbitrary - <*> arbitrary - <*> scale (`div` 15) arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - -genRedeemers :: - forall era. - (AlonzoEraScript era, PlutusPurpose AsIx era ~ ConwayPlutusPurpose AsIx era) => - Gen (Redeemers era) -genRedeemers = do - d <- arbitrary :: Gen (Data era) - eu <- arbitrary :: Gen ExUnits - -- We provide `RdrmPtr Spend 0` as the only valid reedemer, because - -- for any other redeemer type, we would have to modify the body of the transaction - -- in order for the translation to succeed - Redeemers <$> elements [Map.singleton (ConwaySpending $ AsIx 0) (d, eu), Map.empty] diff --git a/eras/conway/test-suite/test/GenerateGoldenFileMain.hs b/eras/conway/test-suite/test/GenerateGoldenFileMain.hs deleted file mode 100644 index 380d59ce2f9..00000000000 --- a/eras/conway/test-suite/test/GenerateGoldenFileMain.hs +++ /dev/null @@ -1,12 +0,0 @@ -{-# LANGUAGE TypeApplications #-} - -module Main where - -import Cardano.Ledger.Conway (Conway) -import Test.Cardano.Ledger.Alonzo.Translation.Golden (generateGoldenFile) -import Test.Cardano.Ledger.Conway.Arbitrary () -import Test.Cardano.Ledger.Conway.Translation.TranslatableGen () - --- | Generates golden translation file for Conway era -main :: IO () -main = generateGoldenFile @Conway "eras/conway/test-suite/golden/translations.cbor" diff --git a/eras/conway/test-suite/test/Test/Cardano/Ledger/Conway/TxInfo.hs b/eras/conway/test-suite/test/Test/Cardano/Ledger/Conway/TxInfo.hs deleted file mode 100644 index 26f66cbb9d2..00000000000 --- a/eras/conway/test-suite/test/Test/Cardano/Ledger/Conway/TxInfo.hs +++ /dev/null @@ -1,15 +0,0 @@ -{-# LANGUAGE GADTs #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Conway.TxInfo where - -import Data.Proxy (Proxy (..)) -import Test.Tasty (TestTree, testGroup) - -txInfoTests :: - forall era. - Proxy era -> - TestTree -txInfoTests _p = testGroup "Conway Plutus Tests" [] -- Disabled for now --- B.txInfoTestsV2 p PlutusV3 -- The V2 tests in Babbage should all hold for V3 diff --git a/eras/conway/test-suite/test/Tests.hs b/eras/conway/test-suite/test/Tests.hs deleted file mode 100644 index f4b4b088977..00000000000 --- a/eras/conway/test-suite/test/Tests.hs +++ /dev/null @@ -1,20 +0,0 @@ -{-# LANGUAGE TypeApplications #-} - -module Main where - -import Cardano.Ledger.Conway (Conway) -import Data.Proxy (Proxy (..)) -import qualified Test.Cardano.Ledger.Babbage.TxInfo as Babbage (txInfoTests) -import qualified Test.Cardano.Ledger.Conway.TxInfo as Conway (txInfoTests) -import Test.Tasty (TestTree, defaultMain, testGroup) - -main :: IO () -main = defaultMain defaultTests - -defaultTests :: TestTree -defaultTests = - testGroup - "Conway tests" - [ Babbage.txInfoTests (Proxy @Conway) - , Conway.txInfoTests (Proxy @Conway) - ] diff --git a/eras/mary/impl/.ghcid b/eras/mary/impl/.ghcid deleted file mode 100644 index 5e40da14e20..00000000000 --- a/eras/mary/impl/.ghcid +++ /dev/null @@ -1 +0,0 @@ ---command="cabal repl --repl-options='-isrc -fwarn-unused-binds -fwarn-unused-imports -fno-code -fobject-code -g2 -fno-break-on-exception -fno-break-on-error -ferror-spans -j -Wno-unused-packages'" --clear --no-height-limit --reverse-errors --reload=../../../ --outputfile=/tmp/cardano-ledger-mary-ghcid.txt \ No newline at end of file diff --git a/eras/mary/impl/CHANGELOG.md b/eras/mary/impl/CHANGELOG.md deleted file mode 100644 index 7529224ac08..00000000000 --- a/eras/mary/impl/CHANGELOG.md +++ /dev/null @@ -1,104 +0,0 @@ -# Version history for `cardano-ledger-mary` - -## 1.5.1.1 - -* - -## 1.5.1.0 - -* Add type `EraRuleEvent` instances for the event type of `TICK` and `LEDGER` -* Add instances for `InjectRuleFailure` and switch to using `injectFailure` -* Add implementation for `getMinFeeTxUtxo` - -### `testlib` - -* Add `RuleListEra` instance for Mary - -## 1.5.0.0 - -* Change return type of `mintedTxBodyF` to `Set PolicyID` -* Stop exporting all of the internal `hkd*` functions and `PParamsHKD` from - `Cardano.Ledger.Mary.Core`. -* Stop exporting `ValidityInterval` and `StrictMaybe` from `Cardano.Ledger.Mary.TxBody` -* Moved `ToExpr` instances out of the main library and into the testlib. -* Remove deprecated `translateValue` and `translateCompactValue` - -## 1.4.0.0 - -* Switch `MaryValue` field for ADA from `Integer` to `Coin` -* Make sure that `getConsumedMaryValue` can also handle `DRep` deposits. This is safe for - all pre-Conway eras and useful for Conway onwards eras. - -### `testlib` - -* Provide CDDL spec files with `readMaryCddlFileNames` and `readMaryCddlFiles` from - `Test.Cardano.Ledger.Mary.Binary.Cddl` - -## 1.3.5.0 - -* Add `ToExpr` instance for `CompactValue` -* Implement `getScriptsProvided` - -### `testlib` - -* Add `Test.Cardano.Ledger.Mary.ImpTest` -* Add `EraImpTest` instance for `MaryEra` - -## 1.3.4.0 - -* Add `ToExpr` instance for: - * `MaryTxBody` - * `CompactForm (MaryValue)` - * `CompactValue` -* Add `Generic` instance for `CompactValue` -* Add `EraTransition` instance. - -## 1.3.3.0 - -* Add `EqRaw` instance for `MaryTxBody` - -## 1.3.2.0 - -* Deprecate `translateValue` and `translateCompactValue` - -## 1.3.1.0 - -* Add implementation for `spendableInputsTxBodyL` - -## 1.3.0.2 - -* - -## 1.3.0.1 - -* - -## 1.3.0.0 - -* Introduction of `TxCert` and `EraTxCert` -* Add `EraTxCert` and `ShelleyEraTxCert` instances to `MaryEra` - -## 1.2.0.0 - -* Removed `genMintValues` - -## 1.1.1.0 - -* Add `TranslateEra` instances for: - * `DState` - * `PState` - * `VState` -* Add `EraDCert`, `ShelleyEraDCert` instances to `MaryEra` - -## 1.1.0.0 - -* Addition of `ToJSON` instances for `AssetName`, `PolicyID`, `MultiAsset` and `MaryValue`. -* Add `ToJSONKey`/`FromJSONKey` instances for `PolicyID` - -### `testlib` - -* Consolidate all `Arbitrary` instances from the test package to under a new `testlib`. #3285 - -## 1.0.0.0 - -* First properly versioned release. diff --git a/eras/mary/impl/Setup.hs b/eras/mary/impl/Setup.hs deleted file mode 100644 index e8ef27dbba9..00000000000 --- a/eras/mary/impl/Setup.hs +++ /dev/null @@ -1,3 +0,0 @@ -import Distribution.Simple - -main = defaultMain diff --git a/eras/mary/impl/cardano-ledger-mary.cabal b/eras/mary/impl/cardano-ledger-mary.cabal deleted file mode 100644 index d850f9464c8..00000000000 --- a/eras/mary/impl/cardano-ledger-mary.cabal +++ /dev/null @@ -1,147 +0,0 @@ -cabal-version: 3.0 -name: cardano-ledger-mary -version: 1.5.1.0 -license: Apache-2.0 -maintainer: operations@iohk.io -author: IOHK -bug-reports: https://github.com/intersectmbo/cardano-ledger/issues -synopsis: Cardano ledger with multiasset support. -description: - This package extends the Allegra ledger with support for - native tokens. - -category: Network -build-type: Simple -data-files: - cddl-files/mary.cddl - cddl-files/crypto.cddl - cddl-files/extras.cddl - -extra-source-files: CHANGELOG.md - -source-repository head - type: git - location: https://github.com/intersectmbo/cardano-ledger - subdir: eras/mary/impl - -flag asserts - description: Enable assertions - default: False - -library - exposed-modules: - Cardano.Ledger.Mary - Cardano.Ledger.Mary.Core - Cardano.Ledger.Mary.Transition - Cardano.Ledger.Mary.Translation - Cardano.Ledger.Mary.TxBody - Cardano.Ledger.Mary.TxOut - Cardano.Ledger.Mary.UTxO - Cardano.Ledger.Mary.Value - - hs-source-dirs: src - other-modules: - Cardano.Ledger.Mary.Era - Cardano.Ledger.Mary.PParams - Cardano.Ledger.Mary.Scripts - Cardano.Ledger.Mary.Tx - Cardano.Ledger.Mary.TxAuxData - Cardano.Ledger.Mary.TxCert - Cardano.Ledger.Mary.TxSeq - Cardano.Ledger.Mary.TxWits - Cardano.Ledger.Mary.Rules - Cardano.Ledger.Mary.Rules.Bbody - Cardano.Ledger.Mary.Rules.Deleg - Cardano.Ledger.Mary.Rules.Delegs - Cardano.Ledger.Mary.Rules.Delpl - Cardano.Ledger.Mary.Rules.Pool - Cardano.Ledger.Mary.Rules.Ppup - Cardano.Ledger.Mary.Rules.Ledger - Cardano.Ledger.Mary.Rules.Ledgers - Cardano.Ledger.Mary.Rules.Utxo - Cardano.Ledger.Mary.Rules.Utxow - - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wpartial-fields - -Wunused-packages - - build-depends: - base >=4.14 && <5, - bytestring, - base16-bytestring, - aeson >=2.2, - cardano-crypto-class, - cardano-data ^>=1.2, - cardano-ledger-allegra ^>=1.4, - cardano-ledger-binary ^>=1.3, - cardano-ledger-core ^>=1.11, - cardano-ledger-shelley ^>=1.10, - containers, - deepseq, - groups, - microlens, - nothunks, - primitive, - cardano-strict-containers, - text - - if flag(asserts) - ghc-options: -fno-ignore-asserts - -library testlib - exposed-modules: - Test.Cardano.Ledger.Mary.Arbitrary - Test.Cardano.Ledger.Mary.Binary.Cddl - Test.Cardano.Ledger.Mary.ImpTest - Test.Cardano.Ledger.Mary.TreeDiff - - visibility: public - hs-source-dirs: testlib - other-modules: Paths_cardano_ledger_mary - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wpartial-fields - -Wunused-packages - - build-depends: - base, - bytestring, - containers, - cardano-data:testlib, - cardano-crypto-class, - cardano-ledger-binary:testlib, - cardano-ledger-core:{cardano-ledger-core, testlib}, - cardano-ledger-mary, - cardano-ledger-allegra:testlib, - cardano-ledger-shelley:{cardano-ledger-shelley, testlib}, - cardano-strict-containers - -test-suite tests - type: exitcode-stdio-1.0 - main-is: Main.hs - hs-source-dirs: test - other-modules: - Test.Cardano.Ledger.Mary.BinarySpec - Test.Cardano.Ledger.Mary.Binary.CddlSpec - Test.Cardano.Ledger.Mary.ValueSpec - - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wpartial-fields - -Wunused-packages -threaded -rtsopts -with-rtsopts=-N - - build-depends: - base, - base16-bytestring, - bytestring, - cardano-data:{cardano-data, testlib}, - cardano-ledger-binary:testlib, - cardano-ledger-core:{cardano-ledger-core, testlib}, - cardano-ledger-mary, - cardano-ledger-shelley:testlib, - data-default-class, - testlib diff --git a/eras/mary/impl/cddl-files/crypto.cddl b/eras/mary/impl/cddl-files/crypto.cddl deleted file mode 100644 index 339444964d2..00000000000 --- a/eras/mary/impl/cddl-files/crypto.cddl +++ /dev/null @@ -1,13 +0,0 @@ -$hash28 /= bytes .size 28 -$hash32 /= bytes .size 32 - -$vkey /= bytes .size 32 - -$vrf_vkey /= bytes .size 32 -$vrf_cert /= [bytes, bytes .size 80] - -$kes_vkey /= bytes .size 32 -$kes_signature /= bytes .size 448 -signkeyKES = bytes .size 64 - -$signature /= bytes .size 64 diff --git a/eras/mary/impl/cddl-files/extras.cddl b/eras/mary/impl/cddl-files/extras.cddl deleted file mode 100644 index 96714ecbac7..00000000000 --- a/eras/mary/impl/cddl-files/extras.cddl +++ /dev/null @@ -1,27 +0,0 @@ -finite_set = [* a ] - -set = [* a] - -;unit_interval = #6.30([uint, uint]) -unit_interval = #6.30([1, 2]) - ; real unit_interval is: #6.30([uint, uint]) - ; but this produces numbers outside the unit interval - ; and can also produce a zero in the denominator - -positive_int = 1 .. 18446744073709551615 - -nonnegative_interval = #6.30([uint, positive_int]) - -address = - h'001000000000000000000000000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000' / - h'102000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000' / - h'203000000000000000000000000000000000000000000000000000000033000000000000000000000000000000000000000000000000000000' / - h'304000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000' / - h'405000000000000000000000000000000000000000000000000000000087680203' / - h'506000000000000000000000000000000000000000000000000000000087680203' / - h'6070000000000000000000000000000000000000000000000000000000' / - h'7080000000000000000000000000000000000000000000000000000000' - -reward_account = - h'E090000000000000000000000000000000000000000000000000000000' / - h'F0A0000000000000000000000000000000000000000000000000000000' diff --git a/eras/mary/impl/cddl-files/mary.cddl b/eras/mary/impl/cddl-files/mary.cddl deleted file mode 100644 index cd59d1743e4..00000000000 --- a/eras/mary/impl/cddl-files/mary.cddl +++ /dev/null @@ -1,292 +0,0 @@ -block = - [ header - , transaction_bodies : [* transaction_body] - , transaction_witness_sets : [* transaction_witness_set] - , auxiliary_data_set : - { * transaction_index => auxiliary_data } - ]; Valid blocks must also satisfy the following two constraints: - ; 1) the length of transaction_bodies and transaction_witness_sets - ; must be the same - ; 2) every transaction_index must be strictly smaller than the - ; length of transaction_bodies - -transaction = - [ transaction_body - , transaction_witness_set - , auxiliary_data / null - ] - -transaction_index = uint .size 2 - -header = - [ header_body - , body_signature : $kes_signature - ] - -header_body = - [ block_number : uint - , slot : uint - , prev_hash : $hash32 / null - , issuer_vkey : $vkey - , vrf_vkey : $vrf_vkey - , nonce_vrf : $vrf_cert - , leader_vrf : $vrf_cert - , block_body_size : uint - , block_body_hash : $hash32 ; merkle triple root - , operational_cert - , protocol_version - ] - -operational_cert = - ( hot_vkey : $kes_vkey - , sequence_number : uint - , kes_period : uint - , sigma : $signature - ) - -next_major_protocol_version = 5 - -major_protocol_version = 1..next_major_protocol_version - -protocol_version = (major_protocol_version, uint) - -transaction_body = - { 0 : set - , 1 : [* transaction_output] - , 2 : coin ; fee - , ? 3 : uint ; ttl - , ? 4 : [* certificate] - , ? 5 : withdrawals - , ? 6 : update - , ? 7 : metadata_hash - , ? 8 : uint ; validity interval start - , ? 9 : mint - } - -transaction_input = [ transaction_id : $hash32 - , index : uint - ] - -transaction_output = [address, amount : value] - -; address = bytes -; reward_account = bytes - -; address format: -; [ 8 bit header | payload ]; -; -; shelley payment addresses: -; bit 7: 0 -; bit 6: base/other -; bit 5: pointer/enterprise [for base: stake cred is keyhash/scripthash] -; bit 4: payment cred is keyhash/scripthash -; bits 3-0: network id -; -; reward addresses: -; bits 7-5: 111 -; bit 4: credential is keyhash/scripthash -; bits 3-0: network id -; -; byron addresses: -; bits 7-4: 1000 - -; 0000: base address: keyhash28,keyhash28 -; 0001: base address: scripthash28,keyhash28 -; 0010: base address: keyhash28,scripthash28 -; 0011: base address: scripthash28,scripthash28 -; 0100: pointer address: keyhash28, 3 variable length uint -; 0101: pointer address: scripthash28, 3 variable length uint -; 0110: enterprise address: keyhash28 -; 0111: enterprise address: scripthash28 -; 1000: byron address -; 1110: reward account: keyhash28 -; 1111: reward account: scripthash28 -; 1001 - 1101: future formats - -certificate = - [ stake_registration - // stake_deregistration - // stake_delegation - // pool_registration - // pool_retirement - // genesis_key_delegation - // move_instantaneous_rewards_cert - ] - -stake_registration = (0, stake_credential) -stake_deregistration = (1, stake_credential) -stake_delegation = (2, stake_credential, pool_keyhash) -pool_registration = (3, pool_params) -pool_retirement = (4, pool_keyhash, epoch) -genesis_key_delegation = (5, genesishash, genesis_delegate_hash, vrf_keyhash) -move_instantaneous_rewards_cert = (6, move_instantaneous_reward) - -move_instantaneous_reward = [ 0 / 1, { * stake_credential => coin } ] -; The first field determines where the funds are drawn from. -; 0 denotes the reserves, 1 denotes the treasury. - -stake_credential = - [ 0, addr_keyhash - // 1, scripthash - ] - -pool_params = ( operator: pool_keyhash - , vrf_keyhash: vrf_keyhash - , pledge: coin - , cost: coin - , margin: unit_interval - , reward_account: reward_account - , pool_owners: set - , relays: [* relay] - , pool_metadata: pool_metadata / null - ) - -port = uint .le 65535 -ipv4 = bytes .size 4 -ipv6 = bytes .size 16 -dns_name = tstr .size (0..64) - -single_host_addr = ( 0 - , port / null - , ipv4 / null - , ipv6 / null - ) -single_host_name = ( 1 - , port / null - , dns_name ; An A or AAAA DNS record - ) -multi_host_name = ( 2 - , dns_name ; A SRV DNS record - ) -relay = - [ single_host_addr - // single_host_name - // multi_host_name - ] - -pool_metadata = [url, metadata_hash] -url = tstr .size (0..64) - -withdrawals = { * reward_account => coin } - -update = [ proposed_protocol_parameter_updates - , epoch - ] - -proposed_protocol_parameter_updates = - { * genesishash => protocol_param_update } - -protocol_param_update = - { ? 0: uint ; minfee A - , ? 1: uint ; minfee B - , ? 2: uint ; max block body size - , ? 3: uint ; max transaction size - , ? 4: uint ; max block header size - , ? 5: coin ; key deposit - , ? 6: coin ; pool deposit - , ? 7: epoch ; maximum epoch - , ? 8: uint ; n_opt: desired number of stake pools - , ? 9: nonnegative_interval ; pool pledge influence - , ? 10: unit_interval ; expansion rate - , ? 11: unit_interval ; treasury growth rate - , ? 12: unit_interval ; d. decentralization constant - , ? 13: $nonce ; extra entropy - , ? 14: [protocol_version] ; protocol version - , ? 15: coin ; min utxo value - } - -transaction_witness_set = - { ? 0: [* vkeywitness ] - , ? 1: [* native_script ] - , ? 2: [* bootstrap_witness ] - ; In the future, new kinds of witnesses can be added like this: - ; , ? 4: [* foo_script ] - ; , ? 5: [* plutus_script ] - } - -transaction_metadatum = - { * transaction_metadatum => transaction_metadatum } - / [ * transaction_metadatum ] - / int - / bytes .size (0..64) - / text .size (0..64) - -transaction_metadatum_label = uint - -auxiliary_data = - { * transaction_metadatum_label => transaction_metadatum } - / [ transaction_metadata: { * transaction_metadatum_label => transaction_metadatum } - , auxiliary_scripts: [ * native_script ] - ; other types of metadata... - ] - -vkeywitness = [ $vkey, $signature ] - -bootstrap_witness = - [ public_key : $vkey - , signature : $signature - , chain_code : bytes .size 32 - , attributes : bytes - ] - -native_script = - [ script_pubkey - // script_all - // script_any - // script_n_of_k - // invalid_before - ; Timelock validity intervals are half-open intervals [a, b). - ; This field specifies the left (included) endpoint a. - // invalid_hereafter - ; Timelock validity intervals are half-open intervals [a, b). - ; This field specifies the right (excluded) endpoint b. - ] - -script_pubkey = (0, addr_keyhash) -script_all = (1, [ * native_script ]) -script_any = (2, [ * native_script ]) -script_n_of_k = (3, n: uint, [ * native_script ]) -invalid_before = (4, uint) -invalid_hereafter = (5, uint) - -coin = uint - -multiasset = { * policy_id => { * asset_name => a } } -policy_id = scripthash -asset_name = bytes .size (0..32) - -value = coin / [coin,multiasset] -mint = multiasset - -int64 = -9223372036854775808 .. 9223372036854775807 - -epoch = uint - -addr_keyhash = $hash28 -genesis_delegate_hash = $hash28 -pool_keyhash = $hash28 -genesishash = $hash28 - -vrf_keyhash = $hash32 -metadata_hash = $hash32 - -; To compute a script hash, note that you must prepend -; a tag to the bytes of the script before hashing. -; The tag is determined by the language. -; In the Allegra and Mary eras there is only one such tag, -; namely "\x00" for multisig scripts. -scripthash = $hash28 - -; allegra differences -transaction_body_allegra = - { 0 : set - , 1 : [* transaction_output_allegra] - , 2 : coin ; fee - , ? 3 : uint ; ttl - , ? 4 : [* certificate] - , ? 5 : withdrawals - , ? 6 : update - , ? 7 : metadata_hash - , ? 8 : uint ; validity interval start - } -transaction_output_allegra = [address, amount : coin] diff --git a/eras/mary/impl/src/Cardano/Ledger/Mary.hs b/eras/mary/impl/src/Cardano/Ledger/Mary.hs deleted file mode 100644 index e83e1143c48..00000000000 --- a/eras/mary/impl/src/Cardano/Ledger/Mary.hs +++ /dev/null @@ -1,46 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE UndecidableInstances #-} --- CanStartFromGenesis -{-# OPTIONS_GHC -Wno-deprecations #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Mary ( - Mary, - MaryEra, - ShelleyTx, - ShelleyTxOut, - MaryValue, - MaryTxBody, -) -where - -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto (Crypto, StandardCrypto) -import Cardano.Ledger.Keys (DSignable) -import Cardano.Ledger.Mary.Era (MaryEra) -import Cardano.Ledger.Mary.PParams () -import Cardano.Ledger.Mary.Rules () -import Cardano.Ledger.Mary.Scripts () -import Cardano.Ledger.Mary.Transition () -import Cardano.Ledger.Mary.Translation () -import Cardano.Ledger.Mary.TxAuxData () -import Cardano.Ledger.Mary.TxBody (MaryTxBody) -import Cardano.Ledger.Mary.TxSeq () -import Cardano.Ledger.Mary.UTxO () -import Cardano.Ledger.Mary.Value (MaryValue) -import Cardano.Ledger.Shelley.API - -type Mary = MaryEra StandardCrypto - -instance - (Crypto c, DSignable c (Hash c EraIndependentTxBody)) => - ApplyTx (MaryEra c) - -instance - (Crypto c, DSignable c (Hash c EraIndependentTxBody)) => - ApplyBlock (MaryEra c) - -instance Crypto c => CanStartFromGenesis (MaryEra c) where - fromShelleyPParams () = translateEra' () . fromShelleyPParams () diff --git a/eras/mary/impl/src/Cardano/Ledger/Mary/Core.hs b/eras/mary/impl/src/Cardano/Ledger/Mary/Core.hs deleted file mode 100644 index 92a7425f3f4..00000000000 --- a/eras/mary/impl/src/Cardano/Ledger/Mary/Core.hs +++ /dev/null @@ -1,9 +0,0 @@ -module Cardano.Ledger.Mary.Core ( - MaryEraTxBody (..), - module Cardano.Ledger.Allegra.Core, -) -where - -import Cardano.Ledger.Allegra.Core -import Cardano.Ledger.Mary.Tx () -import Cardano.Ledger.Mary.TxBody (MaryEraTxBody (..)) diff --git a/eras/mary/impl/src/Cardano/Ledger/Mary/Era.hs b/eras/mary/impl/src/Cardano/Ledger/Mary/Era.hs deleted file mode 100644 index 382776e3c29..00000000000 --- a/eras/mary/impl/src/Cardano/Ledger/Mary/Era.hs +++ /dev/null @@ -1,75 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} - -module Cardano.Ledger.Mary.Era (MaryEra) where - -import Cardano.Ledger.Allegra (AllegraEra) -import Cardano.Ledger.Allegra.Rules (AllegraUTXO, AllegraUTXOW) -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Mary.Value (MaryValue) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.Rules - -data MaryEra era - -instance Crypto c => Era (MaryEra c) where - type PreviousEra (MaryEra c) = AllegraEra c - type EraCrypto (MaryEra c) = c - type ProtVerLow (MaryEra c) = 4 - - eraName = "Mary" - --------------------------------------------------------------------------------- --- Core instances --------------------------------------------------------------------------------- - --- | No context is needed to translate from Allegra to Mary. -type instance TranslationContext (MaryEra c) = () - -type instance Value (MaryEra c) = MaryValue c - --- These rules are all inherited from Shelley - -type instance EraRule "BBODY" (MaryEra c) = ShelleyBBODY (MaryEra c) - -type instance EraRule "DELEG" (MaryEra c) = ShelleyDELEG (MaryEra c) - -type instance EraRule "DELEGS" (MaryEra c) = ShelleyDELEGS (MaryEra c) - -type instance EraRule "DELPL" (MaryEra c) = ShelleyDELPL (MaryEra c) - -type instance EraRule "EPOCH" (MaryEra c) = ShelleyEPOCH (MaryEra c) - -type instance EraRule "LEDGER" (MaryEra c) = ShelleyLEDGER (MaryEra c) - -type instance EraRule "LEDGERS" (MaryEra c) = ShelleyLEDGERS (MaryEra c) - -type instance EraRule "MIR" (MaryEra c) = ShelleyMIR (MaryEra c) - -type instance EraRule "NEWEPOCH" (MaryEra c) = ShelleyNEWEPOCH (MaryEra c) - -type instance EraRule "NEWPP" (MaryEra c) = ShelleyNEWPP (MaryEra c) - -type instance EraRule "POOL" (MaryEra c) = ShelleyPOOL (MaryEra c) - -type instance EraRule "POOLREAP" (MaryEra c) = ShelleyPOOLREAP (MaryEra c) - -type instance EraRule "PPUP" (MaryEra c) = ShelleyPPUP (MaryEra c) - -type instance EraRule "RUPD" (MaryEra c) = ShelleyRUPD (MaryEra c) - -type instance EraRule "SNAP" (MaryEra c) = ShelleySNAP (MaryEra c) - -type instance EraRule "TICK" (MaryEra c) = ShelleyTICK (MaryEra c) - -type instance EraRule "TICKF" (MaryEra c) = ShelleyTICKF (MaryEra c) - -type instance EraRule "UPEC" (MaryEra c) = ShelleyUPEC (MaryEra c) - -type instance EraRule "UTXO" (MaryEra c) = AllegraUTXO (MaryEra c) - -type instance EraRule "UTXOW" (MaryEra c) = AllegraUTXOW (MaryEra c) diff --git a/eras/mary/impl/src/Cardano/Ledger/Mary/PParams.hs b/eras/mary/impl/src/Cardano/Ledger/Mary/PParams.hs deleted file mode 100644 index c72257cbe4e..00000000000 --- a/eras/mary/impl/src/Cardano/Ledger/Mary/PParams.hs +++ /dev/null @@ -1,64 +0,0 @@ -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Mary.PParams () where - -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto -import Cardano.Ledger.Mary.Era (MaryEra) -import Cardano.Ledger.Shelley.Governance ( - EraGov (..), - ShelleyGovState (..), - curPParamsShelleyGovStateL, - prevPParamsShelleyGovStateL, - ) -import Cardano.Ledger.Shelley.PParams -import Data.Coerce -import Lens.Micro - -instance Crypto c => EraPParams (MaryEra c) where - type PParamsHKD f (MaryEra c) = ShelleyPParams f (MaryEra c) - - type UpgradePParams f (MaryEra c) = () - type DowngradePParams f (MaryEra c) = () - - emptyPParamsIdentity = emptyShelleyPParams - emptyPParamsStrictMaybe = emptyShelleyPParamsUpdate - - upgradePParamsHKD () = coerce - downgradePParamsHKD () = coerce - - hkdMinFeeAL = lens sppMinFeeA $ \pp x -> pp {sppMinFeeA = x} - hkdMinFeeBL = lens sppMinFeeB $ \pp x -> pp {sppMinFeeB = x} - hkdMaxBBSizeL = lens sppMaxBBSize $ \pp x -> pp {sppMaxBBSize = x} - hkdMaxTxSizeL = lens sppMaxTxSize $ \pp x -> pp {sppMaxTxSize = x} - hkdMaxBHSizeL = lens sppMaxBHSize $ \pp x -> pp {sppMaxBHSize = x} - hkdKeyDepositL = lens sppKeyDeposit $ \pp x -> pp {sppKeyDeposit = x} - hkdPoolDepositL = lens sppPoolDeposit $ \pp x -> pp {sppPoolDeposit = x} - hkdEMaxL = lens sppEMax $ \pp x -> pp {sppEMax = x} - hkdNOptL = lens sppNOpt $ \pp x -> pp {sppNOpt = x} - hkdA0L = lens sppA0 $ \pp x -> pp {sppA0 = x} - hkdRhoL = lens sppRho $ \pp x -> pp {sppRho = x} - hkdTauL = lens sppTau $ \pp x -> pp {sppTau = x} - hkdDL = lens sppD $ \pp x -> pp {sppD = x} - hkdExtraEntropyL = lens sppExtraEntropy $ \pp x -> pp {sppExtraEntropy = x} - hkdProtocolVersionL = lens sppProtocolVersion $ \pp x -> pp {sppProtocolVersion = x} - hkdMinUTxOValueL = lens sppMinUTxOValue $ \pp x -> pp {sppMinUTxOValue = x} - hkdMinPoolCostL = lens sppMinPoolCost $ \pp x -> pp {sppMinPoolCost = x} - -instance Crypto c => EraGov (MaryEra c) where - type GovState (MaryEra c) = ShelleyGovState (MaryEra c) - emptyGovState = - ShelleyGovState - emptyPPPUpdates - emptyPPPUpdates - emptyPParams - emptyPParams - - getProposedPPUpdates = Just . sgsCurProposals - - curPParamsGovStateL = curPParamsShelleyGovStateL - - prevPParamsGovStateL = prevPParamsShelleyGovStateL - - obligationGovState = const mempty diff --git a/eras/mary/impl/src/Cardano/Ledger/Mary/Rules.hs b/eras/mary/impl/src/Cardano/Ledger/Mary/Rules.hs deleted file mode 100644 index 32d3f4ce7f1..00000000000 --- a/eras/mary/impl/src/Cardano/Ledger/Mary/Rules.hs +++ /dev/null @@ -1,20 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE TypeFamilies #-} - -module Cardano.Ledger.Mary.Rules () where - -import Cardano.Ledger.Mary.Core (EraRuleEvent) -import Cardano.Ledger.Mary.Era (MaryEra) -import Cardano.Ledger.Mary.Rules.Bbody () -import Cardano.Ledger.Mary.Rules.Deleg () -import Cardano.Ledger.Mary.Rules.Delegs () -import Cardano.Ledger.Mary.Rules.Delpl () -import Cardano.Ledger.Mary.Rules.Ledger () -import Cardano.Ledger.Mary.Rules.Ledgers () -import Cardano.Ledger.Mary.Rules.Pool () -import Cardano.Ledger.Mary.Rules.Ppup () -import Cardano.Ledger.Mary.Rules.Utxo () -import Cardano.Ledger.Mary.Rules.Utxow () -import Cardano.Ledger.Shelley.Rules (ShelleyTickEvent) - -type instance EraRuleEvent "TICK" (MaryEra c) = ShelleyTickEvent (MaryEra c) diff --git a/eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Bbody.hs b/eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Bbody.hs deleted file mode 100644 index 96bdfa84c7c..00000000000 --- a/eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Bbody.hs +++ /dev/null @@ -1,53 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Mary.Rules.Bbody () where - -import Cardano.Ledger.Core -import Cardano.Ledger.Mary.Era (MaryEra) -import Cardano.Ledger.Mary.Rules.Ledgers () -import Cardano.Ledger.Shelley.Rules ( - ShelleyBbodyPredFailure (..), - ShelleyDelegPredFailure, - ShelleyDelegsPredFailure, - ShelleyDelplPredFailure, - ShelleyLedgerPredFailure, - ShelleyLedgersPredFailure, - ShelleyPoolPredFailure, - ShelleyPpupPredFailure, - ShelleyUtxoPredFailure, - ShelleyUtxowPredFailure, - ) - -type instance EraRuleFailure "BBODY" (MaryEra c) = ShelleyBbodyPredFailure (MaryEra c) - -instance InjectRuleFailure "BBODY" ShelleyBbodyPredFailure (MaryEra c) - -instance InjectRuleFailure "BBODY" ShelleyLedgersPredFailure (MaryEra c) where - injectFailure = LedgersFailure - -instance InjectRuleFailure "BBODY" ShelleyLedgerPredFailure (MaryEra c) where - injectFailure = LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyUtxowPredFailure (MaryEra c) where - injectFailure = LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyUtxoPredFailure (MaryEra c) where - injectFailure = LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyPpupPredFailure (MaryEra c) where - injectFailure = LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyDelegsPredFailure (MaryEra c) where - injectFailure = LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyDelplPredFailure (MaryEra c) where - injectFailure = LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyPoolPredFailure (MaryEra c) where - injectFailure = LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyDelegPredFailure (MaryEra c) where - injectFailure = LedgersFailure . injectFailure diff --git a/eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Deleg.hs b/eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Deleg.hs deleted file mode 100644 index 28e6314467e..00000000000 --- a/eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Deleg.hs +++ /dev/null @@ -1,14 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Mary.Rules.Deleg () where - -import Cardano.Ledger.Core -import Cardano.Ledger.Mary.Era (MaryEra) -import Cardano.Ledger.Shelley.Rules (ShelleyDelegPredFailure) - -type instance EraRuleFailure "DELEG" (MaryEra c) = ShelleyDelegPredFailure (MaryEra c) - -instance InjectRuleFailure "DELEG" ShelleyDelegPredFailure (MaryEra c) diff --git a/eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Delegs.hs b/eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Delegs.hs deleted file mode 100644 index 0d6e8caebf1..00000000000 --- a/eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Delegs.hs +++ /dev/null @@ -1,29 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Mary.Rules.Delegs () where - -import Cardano.Ledger.Core -import Cardano.Ledger.Mary.Era (MaryEra) -import Cardano.Ledger.Mary.Rules.Delpl () -import Cardano.Ledger.Shelley.Rules ( - ShelleyDelegPredFailure, - ShelleyDelegsPredFailure (..), - ShelleyDelplPredFailure, - ShelleyPoolPredFailure, - ) - -type instance EraRuleFailure "DELEGS" (MaryEra c) = ShelleyDelegsPredFailure (MaryEra c) - -instance InjectRuleFailure "DELEGS" ShelleyDelegsPredFailure (MaryEra c) - -instance InjectRuleFailure "DELEGS" ShelleyDelplPredFailure (MaryEra c) where - injectFailure = DelplFailure - -instance InjectRuleFailure "DELEGS" ShelleyPoolPredFailure (MaryEra c) where - injectFailure = DelplFailure . injectFailure - -instance InjectRuleFailure "DELEGS" ShelleyDelegPredFailure (MaryEra c) where - injectFailure = DelplFailure . injectFailure diff --git a/eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Delpl.hs b/eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Delpl.hs deleted file mode 100644 index 2bc61e87852..00000000000 --- a/eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Delpl.hs +++ /dev/null @@ -1,26 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Mary.Rules.Delpl () where - -import Cardano.Ledger.Core -import Cardano.Ledger.Mary.Era (MaryEra) -import Cardano.Ledger.Mary.Rules.Deleg () -import Cardano.Ledger.Mary.Rules.Pool () -import Cardano.Ledger.Shelley.Rules ( - ShelleyDelegPredFailure, - ShelleyDelplPredFailure (..), - ShelleyPoolPredFailure, - ) - -type instance EraRuleFailure "DELPL" (MaryEra c) = ShelleyDelplPredFailure (MaryEra c) - -instance InjectRuleFailure "DELPL" ShelleyDelplPredFailure (MaryEra c) - -instance InjectRuleFailure "DELPL" ShelleyPoolPredFailure (MaryEra c) where - injectFailure = PoolFailure - -instance InjectRuleFailure "DELPL" ShelleyDelegPredFailure (MaryEra c) where - injectFailure = DelegFailure diff --git a/eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Ledger.hs b/eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Ledger.hs deleted file mode 100644 index f54f436e53e..00000000000 --- a/eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Ledger.hs +++ /dev/null @@ -1,49 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Mary.Rules.Ledger () where - -import Cardano.Ledger.Core -import Cardano.Ledger.Mary.Era (MaryEra) -import Cardano.Ledger.Mary.Rules.Delegs () -import Cardano.Ledger.Mary.Rules.Utxow () -import Cardano.Ledger.Shelley.Rules ( - ShelleyDelegPredFailure, - ShelleyDelegsPredFailure, - ShelleyDelplPredFailure, - ShelleyLedgerEvent, - ShelleyLedgerPredFailure (..), - ShelleyPoolPredFailure, - ShelleyPpupPredFailure, - ShelleyUtxoPredFailure, - ShelleyUtxowPredFailure, - ) - -type instance EraRuleFailure "LEDGER" (MaryEra c) = ShelleyLedgerPredFailure (MaryEra c) - -instance InjectRuleFailure "LEDGER" ShelleyLedgerPredFailure (MaryEra c) - -instance InjectRuleFailure "LEDGER" ShelleyUtxowPredFailure (MaryEra c) where - injectFailure = UtxowFailure - -instance InjectRuleFailure "LEDGER" ShelleyUtxoPredFailure (MaryEra c) where - injectFailure = UtxowFailure . injectFailure - -instance InjectRuleFailure "LEDGER" ShelleyPpupPredFailure (MaryEra c) where - injectFailure = UtxowFailure . injectFailure - -instance InjectRuleFailure "LEDGER" ShelleyDelegsPredFailure (MaryEra c) where - injectFailure = DelegsFailure - -instance InjectRuleFailure "LEDGER" ShelleyDelplPredFailure (MaryEra c) where - injectFailure = DelegsFailure . injectFailure - -instance InjectRuleFailure "LEDGER" ShelleyPoolPredFailure (MaryEra c) where - injectFailure = DelegsFailure . injectFailure - -instance InjectRuleFailure "LEDGER" ShelleyDelegPredFailure (MaryEra c) where - injectFailure = DelegsFailure . injectFailure - -type instance EraRuleEvent "LEDGER" (MaryEra c) = ShelleyLedgerEvent (MaryEra c) diff --git a/eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Ledgers.hs b/eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Ledgers.hs deleted file mode 100644 index d406d3ed908..00000000000 --- a/eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Ledgers.hs +++ /dev/null @@ -1,49 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Mary.Rules.Ledgers () where - -import Cardano.Ledger.Core -import Cardano.Ledger.Mary.Era (MaryEra) -import Cardano.Ledger.Mary.Rules.Ledger () -import Cardano.Ledger.Shelley.Rules ( - ShelleyDelegPredFailure, - ShelleyDelegsPredFailure, - ShelleyDelplPredFailure, - ShelleyLedgerPredFailure, - ShelleyLedgersPredFailure (..), - ShelleyPoolPredFailure, - ShelleyPpupPredFailure, - ShelleyUtxoPredFailure, - ShelleyUtxowPredFailure, - ) - -type instance EraRuleFailure "LEDGERS" (MaryEra c) = ShelleyLedgersPredFailure (MaryEra c) - -instance InjectRuleFailure "LEDGERS" ShelleyLedgersPredFailure (MaryEra c) - -instance InjectRuleFailure "LEDGERS" ShelleyLedgerPredFailure (MaryEra c) where - injectFailure = LedgerFailure - -instance InjectRuleFailure "LEDGERS" ShelleyUtxowPredFailure (MaryEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ShelleyUtxoPredFailure (MaryEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ShelleyPpupPredFailure (MaryEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ShelleyDelegsPredFailure (MaryEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ShelleyDelplPredFailure (MaryEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ShelleyPoolPredFailure (MaryEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ShelleyDelegPredFailure (MaryEra c) where - injectFailure = LedgerFailure . injectFailure diff --git a/eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Pool.hs b/eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Pool.hs deleted file mode 100644 index 9edf8f4ce68..00000000000 --- a/eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Pool.hs +++ /dev/null @@ -1,14 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Mary.Rules.Pool () where - -import Cardano.Ledger.Core -import Cardano.Ledger.Mary.Era (MaryEra) -import Cardano.Ledger.Shelley.Rules (ShelleyPoolPredFailure) - -type instance EraRuleFailure "POOL" (MaryEra c) = ShelleyPoolPredFailure (MaryEra c) - -instance InjectRuleFailure "POOL" ShelleyPoolPredFailure (MaryEra c) diff --git a/eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Ppup.hs b/eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Ppup.hs deleted file mode 100644 index 9a283e009b9..00000000000 --- a/eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Ppup.hs +++ /dev/null @@ -1,14 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Mary.Rules.Ppup () where - -import Cardano.Ledger.Core -import Cardano.Ledger.Mary.Era (MaryEra) -import Cardano.Ledger.Shelley.Rules (ShelleyPpupPredFailure) - -type instance EraRuleFailure "PPUP" (MaryEra c) = ShelleyPpupPredFailure (MaryEra c) - -instance InjectRuleFailure "PPUP" ShelleyPpupPredFailure (MaryEra c) diff --git a/eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Utxo.hs b/eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Utxo.hs deleted file mode 100644 index 01540fc9bb6..00000000000 --- a/eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Utxo.hs +++ /dev/null @@ -1,25 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Mary.Rules.Utxo () where - -import Cardano.Ledger.Allegra.Rules (AllegraUtxoPredFailure (..), shelleyToAllegraUtxoPredFailure) -import Cardano.Ledger.Core -import Cardano.Ledger.Mary.Era (MaryEra) -import Cardano.Ledger.Mary.Rules.Ppup () -import Cardano.Ledger.Shelley.Rules ( - ShelleyPpupPredFailure, - ShelleyUtxoPredFailure, - ) - -type instance EraRuleFailure "UTXO" (MaryEra c) = AllegraUtxoPredFailure (MaryEra c) - -instance InjectRuleFailure "UTXO" AllegraUtxoPredFailure (MaryEra c) - -instance InjectRuleFailure "UTXO" ShelleyUtxoPredFailure (MaryEra c) where - injectFailure = shelleyToAllegraUtxoPredFailure - -instance InjectRuleFailure "UTXO" ShelleyPpupPredFailure (MaryEra c) where - injectFailure = UpdateFailure diff --git a/eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Utxow.hs b/eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Utxow.hs deleted file mode 100644 index 80ffded0de0..00000000000 --- a/eras/mary/impl/src/Cardano/Ledger/Mary/Rules/Utxow.hs +++ /dev/null @@ -1,29 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Mary.Rules.Utxow () where - -import Cardano.Ledger.Allegra.Rules (AllegraUtxoPredFailure) -import Cardano.Ledger.Core -import Cardano.Ledger.Mary.Era (MaryEra) -import Cardano.Ledger.Mary.Rules.Utxo () -import Cardano.Ledger.Shelley.Rules ( - ShelleyPpupPredFailure, - ShelleyUtxoPredFailure, - ShelleyUtxowPredFailure (..), - ) - -type instance EraRuleFailure "UTXOW" (MaryEra c) = ShelleyUtxowPredFailure (MaryEra c) - -instance InjectRuleFailure "UTXOW" ShelleyUtxowPredFailure (MaryEra c) - -instance InjectRuleFailure "UTXOW" AllegraUtxoPredFailure (MaryEra c) where - injectFailure = UtxoFailure - -instance InjectRuleFailure "UTXOW" ShelleyUtxoPredFailure (MaryEra c) where - injectFailure = UtxoFailure . injectFailure - -instance InjectRuleFailure "UTXOW" ShelleyPpupPredFailure (MaryEra c) where - injectFailure = UtxoFailure . injectFailure diff --git a/eras/mary/impl/src/Cardano/Ledger/Mary/Scripts.hs b/eras/mary/impl/src/Cardano/Ledger/Mary/Scripts.hs deleted file mode 100644 index c2d949b6ab1..00000000000 --- a/eras/mary/impl/src/Cardano/Ledger/Mary/Scripts.hs +++ /dev/null @@ -1,29 +0,0 @@ -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Mary.Scripts ( - module Cardano.Ledger.Allegra.Scripts, -) -where - -import Cardano.Ledger.Allegra.Scripts (Timelock, translateTimelock) -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Mary.Era (MaryEra) -import Cardano.Ledger.Shelley.Scripts (nativeMultiSigTag) - --- | Since Timelock scripts are a strictly backwards compatible extension of --- MultiSig scripts, we can use the same 'scriptPrefixTag' tag here as we did --- for the ValidateScript instance in MultiSig -instance Crypto c => EraScript (MaryEra c) where - type Script (MaryEra c) = Timelock (MaryEra c) - type NativeScript (MaryEra c) = Timelock (MaryEra c) - - upgradeScript = translateTimelock - - scriptPrefixTag _script = nativeMultiSigTag -- "\x00" - - getNativeScript = Just - - fromNativeScript = id diff --git a/eras/mary/impl/src/Cardano/Ledger/Mary/Transition.hs b/eras/mary/impl/src/Cardano/Ledger/Mary/Transition.hs deleted file mode 100644 index 4be057e594d..00000000000 --- a/eras/mary/impl/src/Cardano/Ledger/Mary/Transition.hs +++ /dev/null @@ -1,31 +0,0 @@ -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Mary.Transition (TransitionConfig (..)) where - -import Cardano.Ledger.Allegra -import Cardano.Ledger.Allegra.Transition -import Cardano.Ledger.Crypto -import Cardano.Ledger.Mary.Era -import Cardano.Ledger.Mary.Translation () -import Cardano.Ledger.Shelley.Transition -import Data.Aeson (FromJSON (..), ToJSON (..)) -import Lens.Micro -import NoThunks.Class (NoThunks (..)) - -instance Crypto c => EraTransition (MaryEra c) where - newtype TransitionConfig (MaryEra c) = MaryTransitionConfig - { mtcAllegraTransitionConfig :: TransitionConfig (AllegraEra c) - } - deriving (Show, Eq, NoThunks, ToJSON, FromJSON) - - mkTransitionConfig () = MaryTransitionConfig - - injectIntoTestState = registerInitialFundsThenStaking - - tcPreviousEraConfigL = - lens mtcAllegraTransitionConfig (\mtc pc -> mtc {mtcAllegraTransitionConfig = pc}) - - tcTranslationContextL = lens (const ()) (const . id) diff --git a/eras/mary/impl/src/Cardano/Ledger/Mary/Translation.hs b/eras/mary/impl/src/Cardano/Ledger/Mary/Translation.hs deleted file mode 100644 index e9bc69cb39e..00000000000 --- a/eras/mary/impl/src/Cardano/Ledger/Mary/Translation.hs +++ /dev/null @@ -1,166 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PartialTypeSignatures #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Mary.Translation where - -import Cardano.Ledger.Binary (DecoderError) -import Cardano.Ledger.CertState (CommitteeState (..)) -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Mary.Core -import Cardano.Ledger.Mary.Era (MaryEra) -import Cardano.Ledger.Mary.Scripts (Timelock, translateTimelock) -import Cardano.Ledger.Mary.TxAuxData (AllegraTxAuxData (..)) -import Cardano.Ledger.Shelley.LedgerState ( - CertState (..), - DState (..), - EpochState (..), - LedgerState (..), - NewEpochState (..), - PState (..), - UTxOState (..), - VState (..), - ) -import Cardano.Ledger.Shelley.PParams (ProposedPPUpdates (..), Update (..)) -import Cardano.Ledger.Shelley.Tx (ShelleyTx) -import Cardano.Ledger.Shelley.TxOut (ShelleyTxOut) -import Cardano.Ledger.Shelley.TxWits (ShelleyTxWits) -import Cardano.Ledger.UTxO (UTxO (..)) -import Data.Coerce (coerce) -import qualified Data.Map.Strict as Map - --------------------------------------------------------------------------------- --- Translation from Allegra to Mary --- --- The instances below are needed by the consensus layer. Do not remove any of --- them without coordinating with consensus. --- --- Please add auxiliary instances and other declarations at the bottom of this --- module, not in the list below so that it remains clear which instances the --- consensus layer needs. --- --- WARNING: when a translation instance currently uses the default --- 'TranslationError', i.e., 'Void', it means the consensus layer relies on it --- being total. Do not change it! --------------------------------------------------------------------------------- - -instance Crypto c => TranslateEra (MaryEra c) NewEpochState where - translateEra ctxt nes = - return $ - NewEpochState - { nesEL = nesEL nes - , nesBprev = nesBprev nes - , nesBcur = nesBcur nes - , nesEs = translateEra' ctxt $ nesEs nes - , nesRu = nesRu nes - , nesPd = nesPd nes - , stashedAVVMAddresses = () - } - -instance (Crypto c, EraTx (MaryEra c)) => TranslateEra (MaryEra c) ShelleyTx where - type TranslationError (MaryEra c) ShelleyTx = DecoderError - translateEra _ctx = translateEraThroughCBOR "ShelleyTx" - --------------------------------------------------------------------------------- --- Auxiliary instances and functions --------------------------------------------------------------------------------- - -instance Crypto c => TranslateEra (MaryEra c) PParams - -instance Crypto c => TranslateEra (MaryEra c) PParamsUpdate - -instance Crypto c => TranslateEra (MaryEra c) EpochState where - translateEra ctxt es = - return - EpochState - { esAccountState = esAccountState es - , esSnapshots = esSnapshots es - , esLState = translateEra' ctxt $ esLState es - , esNonMyopic = esNonMyopic es - } - -instance Crypto c => TranslateEra (MaryEra c) DState where - translateEra _ DState {..} = pure DState {..} - -instance Crypto c => TranslateEra (MaryEra c) CommitteeState where - translateEra _ CommitteeState {..} = pure CommitteeState {..} - -instance Crypto c => TranslateEra (MaryEra c) VState where - translateEra ctx VState {..} = do - committeeState <- translateEra ctx vsCommitteeState - pure VState {vsCommitteeState = committeeState, ..} - -instance Crypto c => TranslateEra (MaryEra c) PState where - translateEra _ PState {..} = pure PState {..} - -instance Crypto c => TranslateEra (MaryEra c) CertState where - translateEra ctxt ls = - pure - CertState - { certDState = translateEra' ctxt $ certDState ls - , certPState = translateEra' ctxt $ certPState ls - , certVState = translateEra' ctxt $ certVState ls - } - -instance Crypto c => TranslateEra (MaryEra c) LedgerState where - translateEra ctxt ls = - return - LedgerState - { lsUTxOState = translateEra' ctxt $ lsUTxOState ls - , lsCertState = translateEra' ctxt $ lsCertState ls - } - -instance Crypto c => TranslateEra (MaryEra c) ProposedPPUpdates where - translateEra ctxt (ProposedPPUpdates ppup) = - return $ ProposedPPUpdates $ Map.map (translateEra' ctxt) ppup - -instance Crypto c => TranslateEra (MaryEra c) ShelleyGovState where - translateEra ctxt ps = - return - ShelleyGovState - { sgsCurProposals = translateEra' ctxt $ sgsCurProposals ps - , sgsFutureProposals = translateEra' ctxt $ sgsFutureProposals ps - , sgsCurPParams = translateEra' ctxt $ sgsCurPParams ps - , sgsPrevPParams = translateEra' ctxt $ sgsPrevPParams ps - } - -instance Crypto c => TranslateEra (MaryEra c) UTxOState where - translateEra ctxt us = - return - UTxOState - { utxosUtxo = translateEra' ctxt $ utxosUtxo us - , utxosDeposited = utxosDeposited us - , utxosFees = utxosFees us - , utxosGovState = translateEra' ctxt $ utxosGovState us - , utxosStakeDistr = utxosStakeDistr us - , utxosDonation = utxosDonation us - } - -instance Crypto c => TranslateEra (MaryEra c) ShelleyTxOut where - translateEra () = pure . upgradeTxOut - -instance Crypto c => TranslateEra (MaryEra c) UTxO where - translateEra ctxt utxo = - return $ UTxO (translateEra' ctxt `Map.map` unUTxO utxo) - -instance Crypto c => TranslateEra (MaryEra c) ShelleyTxWits where - type TranslationError (MaryEra c) ShelleyTxWits = DecoderError - translateEra _ctx = translateEraThroughCBOR "ShelleyTxWits" - -instance Crypto c => TranslateEra (MaryEra c) Update where - translateEra _ (Update pp en) = pure $ Update (coerce pp) en - -instance Crypto c => TranslateEra (MaryEra c) Timelock where - translateEra _ = pure . translateTimelock - -instance Crypto c => TranslateEra (MaryEra c) AllegraTxAuxData where - translateEra ctx (AllegraTxAuxData md as) = - pure $ AllegraTxAuxData md $ translateEra' ctx <$> as diff --git a/eras/mary/impl/src/Cardano/Ledger/Mary/Tx.hs b/eras/mary/impl/src/Cardano/Ledger/Mary/Tx.hs deleted file mode 100644 index d9e166e9f52..00000000000 --- a/eras/mary/impl/src/Cardano/Ledger/Mary/Tx.hs +++ /dev/null @@ -1,59 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Mary.Tx ( - validateTimelock, -) -where - -import Cardano.Ledger.Allegra.Tx (validateTimelock) -import Cardano.Ledger.Core (EraTx (..), upgradeTxAuxData, upgradeTxBody, upgradeTxWits) -import Cardano.Ledger.Crypto (Crypto, StandardCrypto) -import Cardano.Ledger.Mary.Era (MaryEra) -import Cardano.Ledger.Mary.PParams () -import Cardano.Ledger.Mary.TxAuxData () -import Cardano.Ledger.Mary.TxBody () -import Cardano.Ledger.Mary.TxWits () -import Cardano.Ledger.Shelley.Tx ( - ShelleyTx (..), - auxDataShelleyTxL, - bodyShelleyTxL, - mkBasicShelleyTx, - shelleyMinFeeTx, - sizeShelleyTxF, - witsShelleyTxL, - ) - --- ======================================== - -instance Crypto c => EraTx (MaryEra c) where - {-# SPECIALIZE instance EraTx (MaryEra StandardCrypto) #-} - - type Tx (MaryEra c) = ShelleyTx (MaryEra c) - - mkBasicTx = mkBasicShelleyTx - - bodyTxL = bodyShelleyTxL - {-# INLINE bodyTxL #-} - - witsTxL = witsShelleyTxL - {-# INLINE witsTxL #-} - - auxDataTxL = auxDataShelleyTxL - {-# INLINE auxDataTxL #-} - - sizeTxF = sizeShelleyTxF - {-# INLINE sizeTxF #-} - - validateNativeScript = validateTimelock - {-# INLINE validateNativeScript #-} - - getMinFeeTx pp tx _ = shelleyMinFeeTx pp tx - - upgradeTx (ShelleyTx txb txwits txAux) = - ShelleyTx - <$> upgradeTxBody txb - <*> pure (upgradeTxWits txwits) - <*> pure (fmap upgradeTxAuxData txAux) diff --git a/eras/mary/impl/src/Cardano/Ledger/Mary/TxAuxData.hs b/eras/mary/impl/src/Cardano/Ledger/Mary/TxAuxData.hs deleted file mode 100644 index 1f72f72ffaf..00000000000 --- a/eras/mary/impl/src/Cardano/Ledger/Mary/TxAuxData.hs +++ /dev/null @@ -1,34 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Mary.TxAuxData ( - module Cardano.Ledger.Allegra.TxAuxData, -) -where - -import Cardano.Ledger.Allegra.TxAuxData -import Cardano.Ledger.AuxiliaryData (AuxiliaryDataHash (..)) -import Cardano.Ledger.Core (EraTxAuxData (..), upgradeScript) -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Mary.Era (MaryEra) -import Cardano.Ledger.Mary.Scripts () -import Cardano.Ledger.SafeHash (hashAnnotated) -import Cardano.Ledger.Shelley.TxAuxData (validMetadatum) -import Control.DeepSeq (deepseq) - --- ======================================= - -instance Crypto c => EraTxAuxData (MaryEra c) where - type TxAuxData (MaryEra c) = AllegraTxAuxData (MaryEra c) - - upgradeTxAuxData (AllegraTxAuxData md scripts) = AllegraTxAuxData md $ upgradeScript <$> scripts - - validateTxAuxData _ (AllegraTxAuxData md as) = as `deepseq` all validMetadatum md - - hashTxAuxData aux = AuxiliaryDataHash (hashAnnotated aux) diff --git a/eras/mary/impl/src/Cardano/Ledger/Mary/TxBody.hs b/eras/mary/impl/src/Cardano/Ledger/Mary/TxBody.hs deleted file mode 100644 index 89dc4d6e5b8..00000000000 --- a/eras/mary/impl/src/Cardano/Ledger/Mary/TxBody.hs +++ /dev/null @@ -1,316 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} -{-# LANGUAGE ViewPatterns #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Mary.TxBody ( - MaryEraTxBody (..), - MaryTxBody ( - MaryTxBody, - mtbAuxDataHash, - mtbCerts, - mtbInputs, - mtbOutputs, - mtbTxFee, - mtbUpdate, - mtbValidityInterval, - mtbWithdrawals, - mtbMint - ), - MaryTxBodyRaw, -) -where - -import Cardano.Ledger.Allegra.Core -import Cardano.Ledger.Allegra.TxBody -import Cardano.Ledger.AuxiliaryData (AuxiliaryDataHash) -import Cardano.Ledger.Binary (Annotator, DecCBOR (..), EncCBOR (..), ToCBOR (..)) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Crypto (Crypto, StandardCrypto) -import Cardano.Ledger.Mary.Era (MaryEra) -import Cardano.Ledger.Mary.TxCert () -import Cardano.Ledger.Mary.TxOut () -import Cardano.Ledger.Mary.Value -import Cardano.Ledger.MemoBytes ( - EqRaw, - Mem, - MemoBytes (Memo), - MemoHashIndex, - Memoized (RawType), - getMemoRawType, - getMemoSafeHash, - lensMemoRawType, - mkMemoized, - ) -import Cardano.Ledger.SafeHash (HashAnnotated (..), SafeToHash) -import Cardano.Ledger.Shelley.PParams (Update, upgradeUpdate) -import Cardano.Ledger.Shelley.TxBody (getShelleyGenesisKeyHashCountTxBody) -import Cardano.Ledger.TxIn (TxIn (..)) -import Control.DeepSeq (NFData (..)) -import Data.Sequence.Strict (StrictSeq) -import Data.Set (Set) -import GHC.Generics (Generic) -import Lens.Micro -import NoThunks.Class (NoThunks (..)) - -class AllegraEraTxBody era => MaryEraTxBody era where - mintTxBodyL :: Lens' (TxBody era) (MultiAsset (EraCrypto era)) - - mintValueTxBodyF :: SimpleGetter (TxBody era) (Value era) - - mintedTxBodyF :: SimpleGetter (TxBody era) (Set (PolicyID (EraCrypto era))) - --- =========================================================================== --- Wrap it all up in a newtype, hiding the insides with a pattern constructor. - -newtype MaryTxBodyRaw era = MaryTxBodyRaw (AllegraTxBodyRaw (MultiAsset (EraCrypto era)) era) - -deriving newtype instance - (Era era, NFData (TxOut era), NFData (TxCert era), NFData (PParamsUpdate era)) => - NFData (MaryTxBodyRaw era) - -deriving newtype instance - (Era era, Eq (TxOut era), Eq (TxCert era), Eq (PParamsUpdate era)) => - Eq (MaryTxBodyRaw era) - -deriving newtype instance - (Era era, Show (TxOut era), Show (TxCert era), Show (PParamsUpdate era)) => - Show (MaryTxBodyRaw era) - -deriving instance Generic (MaryTxBodyRaw era) - -deriving newtype instance - (Era era, NoThunks (TxOut era), NoThunks (TxCert era), NoThunks (PParamsUpdate era)) => - NoThunks (MaryTxBodyRaw era) - -deriving newtype instance AllegraEraTxBody era => DecCBOR (MaryTxBodyRaw era) - -newtype MaryTxBody era = TxBodyConstr (MemoBytes MaryTxBodyRaw era) - deriving newtype (SafeToHash, ToCBOR) - --- | Encodes memoized bytes created upon construction. -instance Era era => EncCBOR (MaryTxBody era) - -instance - (Era era, Eq (PParamsUpdate era), Eq (TxOut era), Eq (TxCert era)) => - EqRaw (MaryTxBody era) - -instance AllegraEraTxBody era => DecCBOR (Annotator (MaryTxBodyRaw era)) where - decCBOR = pure <$> decCBOR - -deriving newtype instance (EraTxOut era, EraTxCert era) => EncCBOR (MaryTxBodyRaw era) - -instance Memoized MaryTxBody where - type RawType MaryTxBody = MaryTxBodyRaw - -deriving newtype instance - (Era era, Eq (TxOut era), Eq (TxCert era), Eq (PParamsUpdate era)) => - Eq (MaryTxBody era) - -deriving newtype instance - (Era era, Show (TxOut era), Show (TxCert era), Show (PParamsUpdate era)) => - Show (MaryTxBody era) - -deriving instance Generic (MaryTxBody era) - -deriving newtype instance - (Era era, NoThunks (TxOut era), NoThunks (TxCert era), NoThunks (PParamsUpdate era)) => - NoThunks (MaryTxBody era) - -deriving newtype instance - (Era era, NFData (TxOut era), NFData (TxCert era), NFData (PParamsUpdate era)) => - NFData (MaryTxBody era) - -deriving via - Mem MaryTxBodyRaw era - instance - MaryEraTxBody era => DecCBOR (Annotator (MaryTxBody era)) - -type instance MemoHashIndex MaryTxBodyRaw = EraIndependentTxBody - -instance (c ~ EraCrypto era, Era era) => HashAnnotated (MaryTxBody era) EraIndependentTxBody c where - hashAnnotated = getMemoSafeHash - --- | A pattern to keep the newtype and the MemoBytes hidden -pattern MaryTxBody :: - (EraTxOut era, EraTxCert era) => - Set (TxIn (EraCrypto era)) -> - StrictSeq (TxOut era) -> - StrictSeq (TxCert era) -> - Withdrawals (EraCrypto era) -> - Coin -> - ValidityInterval -> - StrictMaybe (Update era) -> - StrictMaybe (AuxiliaryDataHash (EraCrypto era)) -> - MultiAsset (EraCrypto era) -> - MaryTxBody era -pattern MaryTxBody - { mtbInputs - , mtbOutputs - , mtbCerts - , mtbWithdrawals - , mtbTxFee - , mtbValidityInterval - , mtbUpdate - , mtbAuxDataHash - , mtbMint - } <- - ( getMemoRawType -> - MaryTxBodyRaw - ( AllegraTxBodyRaw - { atbrInputs = mtbInputs - , atbrOutputs = mtbOutputs - , atbrCerts = mtbCerts - , atbrWithdrawals = mtbWithdrawals - , atbrTxFee = mtbTxFee - , atbrValidityInterval = mtbValidityInterval - , atbrUpdate = mtbUpdate - , atbrAuxDataHash = mtbAuxDataHash - , atbrMint = mtbMint - } - ) - ) - where - MaryTxBody - inputs - outputs - certs - withdrawals - txFee - validityInterval - update - auxDataHash - mint = - mkMemoized $ - MaryTxBodyRaw $ - AllegraTxBodyRaw - { atbrInputs = inputs - , atbrOutputs = outputs - , atbrCerts = certs - , atbrWithdrawals = withdrawals - , atbrTxFee = txFee - , atbrValidityInterval = validityInterval - , atbrUpdate = update - , atbrAuxDataHash = auxDataHash - , atbrMint = mint - } - -{-# COMPLETE MaryTxBody #-} - --- | This is a helper Lens creator for any Memoized type. -lensMaryTxBodyRaw :: - (EraTxOut era, EraTxCert era) => - (AllegraTxBodyRaw (MultiAsset (EraCrypto era)) era -> a) -> - ( AllegraTxBodyRaw (MultiAsset (EraCrypto era)) era -> - b -> - AllegraTxBodyRaw (MultiAsset (EraCrypto era)) era - ) -> - Lens (MaryTxBody era) (MaryTxBody era) a b -lensMaryTxBodyRaw getter setter = - lensMemoRawType - (\(MaryTxBodyRaw atbr) -> getter atbr) - (\(MaryTxBodyRaw atbr) a -> MaryTxBodyRaw (setter atbr a)) -{-# INLINEABLE lensMaryTxBodyRaw #-} - -instance Crypto c => EraTxBody (MaryEra c) where - {-# SPECIALIZE instance EraTxBody (MaryEra StandardCrypto) #-} - - type TxBody (MaryEra c) = MaryTxBody (MaryEra c) - - mkBasicTxBody = mkMemoized $ MaryTxBodyRaw emptyAllegraTxBodyRaw - - inputsTxBodyL = - lensMaryTxBodyRaw atbrInputs $ \txBodyRaw inputs -> txBodyRaw {atbrInputs = inputs} - {-# INLINEABLE inputsTxBodyL #-} - - outputsTxBodyL = - lensMaryTxBodyRaw atbrOutputs $ \txBodyRaw outputs -> txBodyRaw {atbrOutputs = outputs} - {-# INLINEABLE outputsTxBodyL #-} - - feeTxBodyL = - lensMaryTxBodyRaw atbrTxFee $ \txBodyRaw fee -> txBodyRaw {atbrTxFee = fee} - {-# INLINEABLE feeTxBodyL #-} - - auxDataHashTxBodyL = - lensMaryTxBodyRaw atbrAuxDataHash $ - \txBodyRaw auxDataHash -> txBodyRaw {atbrAuxDataHash = auxDataHash} - {-# INLINEABLE auxDataHashTxBodyL #-} - - spendableInputsTxBodyF = inputsTxBodyL - {-# INLINE spendableInputsTxBodyF #-} - - allInputsTxBodyF = inputsTxBodyL - {-# INLINEABLE allInputsTxBodyF #-} - - withdrawalsTxBodyL = - lensMaryTxBodyRaw atbrWithdrawals $ \txBodyRaw withdrawals -> txBodyRaw {atbrWithdrawals = withdrawals} - {-# INLINEABLE withdrawalsTxBodyL #-} - - certsTxBodyL = - lensMaryTxBodyRaw atbrCerts $ \txBodyRaw certs -> txBodyRaw {atbrCerts = certs} - {-# INLINEABLE certsTxBodyL #-} - - getGenesisKeyHashCountTxBody = getShelleyGenesisKeyHashCountTxBody - - upgradeTxBody atb = do - certs <- traverse upgradeTxCert (atbCerts atb) - pure $ - MaryTxBody - { mtbInputs = atbInputs atb - , mtbOutputs = upgradeTxOut <$> atbOutputs atb - , mtbCerts = certs - , mtbWithdrawals = atbWithdrawals atb - , mtbTxFee = atbTxFee atb - , mtbValidityInterval = atbValidityInterval atb - , mtbUpdate = upgradeUpdate () <$> atbUpdate atb - , mtbAuxDataHash = atbAuxDataHash atb - , mtbMint = mempty - } - -instance Crypto c => ShelleyEraTxBody (MaryEra c) where - {-# SPECIALIZE instance ShelleyEraTxBody (MaryEra StandardCrypto) #-} - - ttlTxBodyL = notSupportedInThisEraL - {-# INLINEABLE ttlTxBodyL #-} - - updateTxBodyL = - lensMaryTxBodyRaw atbrUpdate $ \txBodyRaw update -> txBodyRaw {atbrUpdate = update} - {-# INLINEABLE updateTxBodyL #-} - -instance Crypto c => AllegraEraTxBody (MaryEra c) where - {-# SPECIALIZE instance AllegraEraTxBody (MaryEra StandardCrypto) #-} - - vldtTxBodyL = - lensMaryTxBodyRaw atbrValidityInterval $ - \txBodyRaw vldt -> txBodyRaw {atbrValidityInterval = vldt} - {-# INLINEABLE vldtTxBodyL #-} - -instance Crypto c => MaryEraTxBody (MaryEra c) where - {-# SPECIALIZE instance MaryEraTxBody (MaryEra StandardCrypto) #-} - - mintTxBodyL = - lensMaryTxBodyRaw atbrMint (\txBodyRaw mint -> txBodyRaw {atbrMint = mint}) - {-# INLINEABLE mintTxBodyL #-} - - mintValueTxBodyF = - to $ \(TxBodyConstr (Memo (MaryTxBodyRaw txBodyRaw) _)) -> - MaryValue mempty (atbrMint txBodyRaw) - {-# INLINEABLE mintValueTxBodyF #-} - - mintedTxBodyF = - to $ \(TxBodyConstr (Memo (MaryTxBodyRaw txBodyRaw) _)) -> policies (atbrMint txBodyRaw) - {-# INLINEABLE mintedTxBodyF #-} diff --git a/eras/mary/impl/src/Cardano/Ledger/Mary/TxCert.hs b/eras/mary/impl/src/Cardano/Ledger/Mary/TxCert.hs deleted file mode 100644 index e9ab8224f38..00000000000 --- a/eras/mary/impl/src/Cardano/Ledger/Mary/TxCert.hs +++ /dev/null @@ -1,84 +0,0 @@ -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Mary.TxCert () where - -import Cardano.Ledger.Crypto (Crypto, StandardCrypto) -import Cardano.Ledger.Mary.Era (MaryEra) -import Cardano.Ledger.Mary.PParams () -import Cardano.Ledger.Shelley.TxCert ( - EraTxCert (..), - PoolCert (..), - ShelleyDelegCert (..), - ShelleyEraTxCert (..), - ShelleyTxCert (..), - getScriptWitnessShelleyTxCert, - getVKeyWitnessShelleyTxCert, - shelleyTotalDepositsTxCerts, - shelleyTotalRefundsTxCerts, - upgradeShelleyTxCert, - pattern RegTxCert, - pattern UnRegTxCert, - ) - -instance Crypto c => EraTxCert (MaryEra c) where - {-# SPECIALIZE instance EraTxCert (MaryEra StandardCrypto) #-} - - type TxCert (MaryEra c) = ShelleyTxCert (MaryEra c) - - upgradeTxCert = Right . upgradeShelleyTxCert - - getVKeyWitnessTxCert = getVKeyWitnessShelleyTxCert - - getScriptWitnessTxCert = getScriptWitnessShelleyTxCert - - mkRegPoolTxCert = ShelleyTxCertPool . RegPool - - getRegPoolTxCert (ShelleyTxCertPool (RegPool poolParams)) = Just poolParams - getRegPoolTxCert _ = Nothing - - mkRetirePoolTxCert poolId epochNo = ShelleyTxCertPool $ RetirePool poolId epochNo - - getRetirePoolTxCert (ShelleyTxCertPool (RetirePool poolId epochNo)) = Just (poolId, epochNo) - getRetirePoolTxCert _ = Nothing - - lookupRegStakeTxCert = \case - RegTxCert c -> Just c - _ -> Nothing - lookupUnRegStakeTxCert = \case - UnRegTxCert c -> Just c - _ -> Nothing - - getTotalDepositsTxCerts = shelleyTotalDepositsTxCerts - - getTotalRefundsTxCerts pp lookupStakeDeposit _ = shelleyTotalRefundsTxCerts pp lookupStakeDeposit - -instance Crypto c => ShelleyEraTxCert (MaryEra c) where - {-# SPECIALIZE instance ShelleyEraTxCert (MaryEra StandardCrypto) #-} - - mkRegTxCert = ShelleyTxCertDelegCert . ShelleyRegCert - - getRegTxCert (ShelleyTxCertDelegCert (ShelleyRegCert c)) = Just c - getRegTxCert _ = Nothing - - mkUnRegTxCert = ShelleyTxCertDelegCert . ShelleyUnRegCert - - getUnRegTxCert (ShelleyTxCertDelegCert (ShelleyUnRegCert c)) = Just c - getUnRegTxCert _ = Nothing - - mkDelegStakeTxCert c kh = ShelleyTxCertDelegCert $ ShelleyDelegCert c kh - - getDelegStakeTxCert (ShelleyTxCertDelegCert (ShelleyDelegCert c kh)) = Just (c, kh) - getDelegStakeTxCert _ = Nothing - - mkGenesisDelegTxCert = ShelleyTxCertGenesisDeleg - - getGenesisDelegTxCert (ShelleyTxCertGenesisDeleg c) = Just c - getGenesisDelegTxCert _ = Nothing - - mkMirTxCert = ShelleyTxCertMir - - getMirTxCert (ShelleyTxCertMir c) = Just c - getMirTxCert _ = Nothing diff --git a/eras/mary/impl/src/Cardano/Ledger/Mary/TxOut.hs b/eras/mary/impl/src/Cardano/Ledger/Mary/TxOut.hs deleted file mode 100644 index 3878e80ead5..00000000000 --- a/eras/mary/impl/src/Cardano/Ledger/Mary/TxOut.hs +++ /dev/null @@ -1,79 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Mary.TxOut (scaledMinDeposit) where - -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto (Crypto, StandardCrypto) -import Cardano.Ledger.Mary.Era (MaryEra) -import Cardano.Ledger.Mary.PParams () -import Cardano.Ledger.Shelley.TxOut ( - ShelleyTxOut (..), - addrEitherShelleyTxOutL, - valueEitherShelleyTxOutL, - ) -import Cardano.Ledger.Val (Val (isAdaOnly, size), injectCompact) -import Data.Coerce (coerce) -import Lens.Micro ((^.)) - -instance Crypto c => EraTxOut (MaryEra c) where - {-# SPECIALIZE instance EraTxOut (MaryEra StandardCrypto) #-} - - type TxOut (MaryEra c) = ShelleyTxOut (MaryEra c) - - mkBasicTxOut = ShelleyTxOut - - upgradeTxOut (TxOutCompact addr cfval) = TxOutCompact (coerce addr) (injectCompact cfval) - - addrEitherTxOutL = addrEitherShelleyTxOutL - {-# INLINE addrEitherTxOutL #-} - - valueEitherTxOutL = valueEitherShelleyTxOutL - {-# INLINE valueEitherTxOutL #-} - - getMinCoinTxOut pp txOut = scaledMinDeposit (txOut ^. valueTxOutL) (pp ^. ppMinUTxOValueL) - --- | The `scaledMinDeposit` calculation uses the minUTxOValue protocol parameter --- (passed to it as Coin mv) as a specification of "the cost of making a --- Shelley-sized UTxO entry", calculated here by "utxoEntrySizeWithoutVal + --- uint", using the constants in the "where" clause. In the case when a UTxO --- entry contains coins only (and the Shelley UTxO entry format is used - we --- will extend this to be correct for other UTxO formats shortly), the deposit --- should be exactly the minUTxOValue. This is the "inject (coin v) == v" case. --- Otherwise, we calculate the per-byte deposit by multiplying the minimum --- deposit (which is for the number of Shelley UTxO-entry bytes) by the size of --- a Shelley UTxO entry. This is the "(mv * (utxoEntrySizeWithoutVal + uint))" --- calculation. We then calculate the total deposit required for making a UTxO --- entry with a Val-class member v by dividing "(mv * (utxoEntrySizeWithoutVal + --- uint))" by the estimated total size of the UTxO entry containing v, ie by --- "(utxoEntrySizeWithoutVal + size v)". See the formal specification for --- details. --- --- This scaling function is right for UTxO, not EUTxO -scaledMinDeposit :: Val v => v -> Coin -> Coin -scaledMinDeposit v (Coin mv) - | isAdaOnly v = Coin mv -- without non-Coin assets, scaled deposit should be exactly minUTxOValue - -- The calculation should represent this equation - -- minValueParameter / coinUTxOSize = actualMinValue / valueUTxOSize - -- actualMinValue = (minValueParameter / coinUTxOSize) * valueUTxOSize - | otherwise = Coin $ max mv (coinsPerUTxOWord * (utxoEntrySizeWithoutVal + size v)) - where - -- lengths obtained from tracing on HeapWords of inputs and outputs - -- obtained experimentally, and number used here - -- units are Word64s - txoutLenNoVal = 14 - txinLen = 7 - - -- unpacked CompactCoin Word64 size in Word64s - coinSize :: Integer - coinSize = 0 - - utxoEntrySizeWithoutVal :: Integer - utxoEntrySizeWithoutVal = 6 + txoutLenNoVal + txinLen - - -- how much ada does a Word64 of UTxO space cost, calculated from minAdaValue PP - -- round down - coinsPerUTxOWord :: Integer - coinsPerUTxOWord = quot mv (utxoEntrySizeWithoutVal + coinSize) diff --git a/eras/mary/impl/src/Cardano/Ledger/Mary/TxSeq.hs b/eras/mary/impl/src/Cardano/Ledger/Mary/TxSeq.hs deleted file mode 100644 index 793797b8239..00000000000 --- a/eras/mary/impl/src/Cardano/Ledger/Mary/TxSeq.hs +++ /dev/null @@ -1,25 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Mary.TxSeq () where - -import Cardano.Ledger.Core (EraSegWits (..)) -import Cardano.Ledger.Crypto (Crypto, StandardCrypto) -import Cardano.Ledger.Mary.Era (MaryEra) -import Cardano.Ledger.Mary.Tx () -import Cardano.Ledger.Shelley.BlockChain (ShelleyTxSeq (..), bbHash, txSeqTxns) - -instance Crypto c => EraSegWits (MaryEra c) where - {-# SPECIALIZE instance EraSegWits (MaryEra StandardCrypto) #-} - type TxSeq (MaryEra c) = ShelleyTxSeq (MaryEra c) - fromTxSeq = txSeqTxns - toTxSeq = ShelleyTxSeq - hashTxSeq = bbHash - numSegComponents = 3 diff --git a/eras/mary/impl/src/Cardano/Ledger/Mary/TxWits.hs b/eras/mary/impl/src/Cardano/Ledger/Mary/TxWits.hs deleted file mode 100644 index 912c4e712bf..00000000000 --- a/eras/mary/impl/src/Cardano/Ledger/Mary/TxWits.hs +++ /dev/null @@ -1,43 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Mary.TxWits () where - -import Cardano.Ledger.Core (EraTxWits (..), upgradeScript) -import Cardano.Ledger.Crypto (Crypto, StandardCrypto) -import Cardano.Ledger.Mary.Era (MaryEra) -import Cardano.Ledger.Mary.TxAuxData () -import Cardano.Ledger.Shelley.TxWits ( - ShelleyTxWits (..), - addrShelleyTxWitsL, - bootAddrShelleyTxWitsL, - scriptShelleyTxWitsL, - ) - -instance Crypto c => EraTxWits (MaryEra c) where - {-# SPECIALIZE instance EraTxWits (MaryEra StandardCrypto) #-} - - type TxWits (MaryEra c) = ShelleyTxWits (MaryEra c) - - mkBasicTxWits = mempty - - addrTxWitsL = addrShelleyTxWitsL - {-# INLINE addrTxWitsL #-} - - bootAddrTxWitsL = bootAddrShelleyTxWitsL - {-# INLINE bootAddrTxWitsL #-} - - scriptTxWitsL = scriptShelleyTxWitsL - {-# INLINE scriptTxWitsL #-} - - upgradeTxWits stw = - ShelleyTxWits - (addrWits stw) - (upgradeScript <$> scriptWits stw) - (bootWits stw) diff --git a/eras/mary/impl/src/Cardano/Ledger/Mary/UTxO.hs b/eras/mary/impl/src/Cardano/Ledger/Mary/UTxO.hs deleted file mode 100644 index 757bd0585ed..00000000000 --- a/eras/mary/impl/src/Cardano/Ledger/Mary/UTxO.hs +++ /dev/null @@ -1,92 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Mary.UTxO (getConsumedMaryValue) where - -import Cardano.Ledger.Coin (Coin) -import Cardano.Ledger.Credential (Credential) -import Cardano.Ledger.Crypto -import Cardano.Ledger.Keys (KeyRole (DRepRole, Staking)) -import Cardano.Ledger.Mary.Core -import Cardano.Ledger.Mary.Era (MaryEra) -import Cardano.Ledger.Mary.Value (MaryValue, policyID) -import Cardano.Ledger.Shelley.UTxO ( - ShelleyScriptsNeeded (..), - getShelleyMinFeeTxUtxo, - getShelleyScriptsNeeded, - getShelleyWitsVKeyNeeded, - shelleyProducedValue, - ) -import Cardano.Ledger.UTxO ( - EraUTxO (..), - ScriptsProvided (..), - UTxO, - balance, - txInsFilter, - ) -import Cardano.Ledger.Val (inject) -import Data.Foldable (fold) -import qualified Data.Set as Set -import Lens.Micro - -instance Crypto c => EraUTxO (MaryEra c) where - type ScriptsNeeded (MaryEra c) = ShelleyScriptsNeeded (MaryEra c) - - getConsumedValue = getConsumedMaryValue - - getProducedValue = shelleyProducedValue - - getScriptsProvided _ tx = ScriptsProvided (tx ^. witsTxL . scriptTxWitsL) - - getScriptsNeeded = getMaryScriptsNeeded - - getScriptsHashesNeeded (ShelleyScriptsNeeded scriptHashes) = scriptHashes - - getWitsVKeyNeeded = getShelleyWitsVKeyNeeded - - getMinFeeTxUtxo pp tx _ = getShelleyMinFeeTxUtxo pp tx - --- | Calculate the value consumed by the transation. --- --- This differs from the corresponding Shelley function 'Shelley.coinConsumed' --- since it works on Value and it also considers the "mint" field which --- creates or destroys non-Ada tokens. --- --- Note that this is slightly confusing, since it also covers non-Ada assets --- _created_ by the transaction, depending on the sign of the quantities in --- the mint field. -getConsumedMaryValue :: - (MaryEraTxBody era, Value era ~ MaryValue (EraCrypto era)) => - PParams era -> - (Credential 'Staking (EraCrypto era) -> Maybe Coin) -> - (Credential 'DRepRole (EraCrypto era) -> Maybe Coin) -> - UTxO era -> - TxBody era -> - MaryValue (EraCrypto era) -getConsumedMaryValue pp lookupStakingDeposit lookupDRepDeposit utxo txBody = - consumedValue <> txBody ^. mintValueTxBodyF - where - {- balance (txins tx ◁ u) + wbalance (txwdrls tx) + keyRefunds pp tx -} - consumedValue = - balance (txInsFilter utxo (txBody ^. inputsTxBodyL)) - <> inject (refunds <> withdrawals) - refunds = getTotalRefundsTxBody pp lookupStakingDeposit lookupDRepDeposit txBody - withdrawals = fold . unWithdrawals $ txBody ^. withdrawalsTxBodyL - --- | Computes the set of script hashes required to unlock the transaction inputs and the --- withdrawals. Unlike the one from Shelley, this one also includes script hashes needed --- for minting multi-assets in the transaction. -getMaryScriptsNeeded :: - (ShelleyEraTxBody era, MaryEraTxBody era) => - UTxO era -> - TxBody era -> - ShelleyScriptsNeeded era -getMaryScriptsNeeded u txBody = - case getShelleyScriptsNeeded u txBody of - ShelleyScriptsNeeded shelleyScriptsNeeded -> - ShelleyScriptsNeeded $ - shelleyScriptsNeeded `Set.union` Set.map policyID (txBody ^. mintedTxBodyF) diff --git a/eras/mary/impl/src/Cardano/Ledger/Mary/Value.hs b/eras/mary/impl/src/Cardano/Ledger/Mary/Value.hs deleted file mode 100644 index 1893f408e28..00000000000 --- a/eras/mary/impl/src/Cardano/Ledger/Mary/Value.hs +++ /dev/null @@ -1,893 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Cardano.Ledger.Mary.Value ( - PolicyID (..), - AssetName (..), - MaryValue (..), - MultiAsset (..), - insert, - insertMultiAsset, - lookup, - lookupMultiAsset, - multiAssetFromList, - policies, - prune, - representationSize, - showValue, - flattenMultiAsset, - valueFromList, - CompactValue (..), - CompactForm (CompactValue), - isMultiAssetSmallEnough, - assetNameToTextAsHex, -) -where - -import qualified Cardano.Crypto.Hash.Class as Hash -import Cardano.Ledger.BaseTypes (Inject (..)) -import Cardano.Ledger.Binary ( - DecCBOR (..), - Decoder, - DecoderError (..), - EncCBOR (..), - TokenType (..), - cborError, - decodeInteger, - decodeMap, - decodeWord64, - ifDecoderVersionAtLeast, - peekTokenType, - ) -import Cardano.Ledger.Binary.Coders ( - Decode (..), - Encode (..), - decode, - encode, - (!>), - ( BS.ByteString -assetNameToBytesAsHex = BS16.encode . SBS.fromShort . assetName - -assetNameToTextAsHex :: AssetName -> Text -assetNameToTextAsHex = decodeLatin1 . assetNameToBytesAsHex - -instance DecCBOR AssetName where - decCBOR = do - an <- decCBOR - if SBS.length an > 32 - then - cborError $ - DecoderErrorCustom "asset name exceeds 32 bytes:" $ - assetNameToTextAsHex $ - AssetName an - else pure $ AssetName an - --- | Policy ID -newtype PolicyID c = PolicyID {policyID :: ScriptHash c} - deriving - ( Show - , Eq - , Ord - , Generic - , NoThunks - , NFData - , EncCBOR - , DecCBOR - , ToJSON - , FromJSON - , ToJSONKey - , FromJSONKey - ) - --- | The MultiAssets map -newtype MultiAsset c = MultiAsset (Map (PolicyID c) (Map AssetName Integer)) - deriving (Show, Generic, ToJSON, EncCBOR) - -instance Crypto c => Eq (MultiAsset c) where - MultiAsset x == MultiAsset y = pointWise (pointWise (==)) x y - -instance NFData (MultiAsset cypto) where - rnf (MultiAsset m) = rnf m - -instance NoThunks (MultiAsset c) - -instance Semigroup (MultiAsset c) where - MultiAsset m1 <> MultiAsset m2 = - MultiAsset (canonicalMapUnion (canonicalMapUnion (+)) m1 m2) - -instance Monoid (MultiAsset c) where - mempty = MultiAsset mempty - -instance Group (MultiAsset c) where - invert (MultiAsset m) = - MultiAsset (canonicalMap (canonicalMap ((-1 :: Integer) *)) m) - -instance Crypto c => DecCBOR (MultiAsset c) where - decCBOR = decodeMultiAsset decodeIntegerBounded64 - --- | The Value representing MultiAssets -data MaryValue c = MaryValue !Coin !(MultiAsset c) - deriving (Show, Generic) - -instance Crypto c => Eq (MaryValue c) where - x == y = pointwise (==) x y - -instance NFData (MaryValue c) where - rnf (MaryValue c m) = c `deepseq` rnf m - -instance NoThunks (MaryValue c) - -instance Semigroup (MaryValue c) where - MaryValue c1 m1 <> MaryValue c2 m2 = - MaryValue (c1 <> c2) (m1 <> m2) - -instance Monoid (MaryValue c) where - mempty = MaryValue mempty mempty - -instance Group (MaryValue c) where - invert (MaryValue c m) = - MaryValue - (invert c) - (invert m) - -instance Abelian (MaryValue c) - -instance Inject Coin (MaryValue c) where - inject c = MaryValue c (MultiAsset Map.empty) - --- =================================================== --- Make the Val instance of MaryValue - -instance Crypto c => Val (MaryValue c) where - s <×> MaryValue c (MultiAsset m) = - MaryValue - (s <×> c) - (MultiAsset (canonicalMap (canonicalMap (fromIntegral s *)) m)) - isZero (MaryValue c (MultiAsset m)) = c == zero && Map.null m - coin (MaryValue c _) = c - modifyCoin f (MaryValue c m) = MaryValue (f c) m - pointwise p (MaryValue (Coin c) (MultiAsset x)) (MaryValue (Coin d) (MultiAsset y)) = - p c d && pointWise (pointWise p) x y - - -- returns the size, in Word64's, of the CompactValue representation of MaryValue - size vv@(MaryValue _ (MultiAsset m)) - -- when MaryValue contains only ada - -- !WARNING! This branch is INCORRECT in the Mary era and should ONLY be - -- used in the Alonzo ERA. - -- TODO - find a better way to reconcile the mistakes in Mary with what needs - -- to be the case in Alonzo. - | Map.null m = 2 - -- when MaryValue contains ada as well as other tokens - -- sums up : - -- i) adaWords : the space taken up by the ada amount - -- ii) numberMulAssets : the space taken by number of words used to store - -- number of non-ada assets in a value - -- iii) the space taken up by the rest of the representation (quantities, - -- PIDs, AssetNames, indeces) - | otherwise = - fromIntegral - ( roundupBytesToWords (representationSize (snd $ gettriples vv)) - + repOverhead - ) - - isAdaOnly (MaryValue _ (MultiAsset m)) = Map.null m - - isAdaOnlyCompact = \case - CompactValue (CompactValueAdaOnly _) -> True - CompactValue CompactValueMultiAsset {} -> False - - coinCompact = \case - CompactValue (CompactValueAdaOnly cc) -> cc - CompactValue (CompactValueMultiAsset cc _ _) -> cc - - injectCompact = CompactValue . CompactValueAdaOnly - - modifyCompactCoin f = \case - CompactValue (CompactValueAdaOnly cc) -> - CompactValue (CompactValueAdaOnly (f cc)) - CompactValue (CompactValueMultiAsset cc n sbs) -> - CompactValue (CompactValueMultiAsset (f cc) n sbs) - --- space (in Word64s) taken up by the ada amount -adaWords :: Int -adaWords = 1 - --- 64 bit machine Word64 length -wordLength :: Int -wordLength = 8 - --- overhead in MA compact rep -repOverhead :: Int -repOverhead = 4 + adaWords + numberMulAssets - --- number of words used to store number of MAs in a value -numberMulAssets :: Int -numberMulAssets = 1 - --- converts bytes to words (rounding up) -roundupBytesToWords :: Int -> Int -roundupBytesToWords b = quot (b + wordLength - 1) wordLength - --- ============================================================== --- CBOR - -decodeMaryValue :: - forall c s. - Crypto c => - Decoder s (MaryValue c) -decodeMaryValue = do - tt <- peekTokenType - case tt of - TypeUInt -> inject . Coin . toInteger <$> decodeWord64 - TypeUInt64 -> inject . Coin . toInteger <$> decodeWord64 - TypeListLen -> decodeValuePair (toInteger <$> decodeWord64) - TypeListLen64 -> decodeValuePair (toInteger <$> decodeWord64) - TypeListLenIndef -> decodeValuePair (toInteger <$> decodeWord64) - _ -> fail $ "MaryValue: expected array or int, got " ++ show tt - -decodeValuePair :: - Crypto c => - (forall t. Decoder t Integer) -> - Decoder s (MaryValue c) -decodeValuePair decodeMultiAssetAmount = - decode $ - RecD MaryValue - decodeWord64) - (forall t. Decoder t Integer) -> Decoder s (MultiAsset c) -decodeMultiAsset decodeAmount = do - ma <- - MultiAsset - <$> ifDecoderVersionAtLeast - (natVersion @9) - decodeWithEnforcing - decodeWithPrunning - ma <$ unless (isMultiAssetSmallEnough ma) (fail "MultiAsset is too big to compact") - where - decodeWithEnforcing = - decodeMap decCBOR $ do - m <- decodeMap decCBOR $ do - amount <- decodeAmount - amount <$ when (amount == 0) (fail "MultiAsset cannot contain zeros") - m <$ when (Map.null m) (fail "Empty Assets are not allowed") - decodeWithPrunning = - prune <$> decodeMap decCBOR (decodeMap decCBOR decodeAmount) - -instance Crypto c => EncCBOR (MaryValue c) where - encCBOR (MaryValue c ma@(MultiAsset m)) = - if Map.null m - then encCBOR c - else - encode $ - Rec MaryValue - !> To c - !> To ma - -instance Crypto c => DecCBOR (MaryValue c) where - decCBOR = decodeMaryValue - --- Note: we do not use `decodeInt64` from the cborg library here because the --- implementation contains "-- TODO FIXME: overflow" -decodeIntegerBounded64 :: Decoder s Integer -decodeIntegerBounded64 = do - tt <- peekTokenType - case tt of - TypeUInt -> pure () - TypeUInt64 -> pure () - TypeNInt -> pure () - TypeNInt64 -> pure () - _ -> fail "expected major type 0 or 1 when decoding mint field" - x <- decodeInteger - if minval <= x && x <= maxval - then pure x - else - fail $ - concat - [ "overflow when decoding mint field. min value: " - , show minval - , " max value: " - , show maxval - , " got: " - , show x - ] - where - maxval = fromIntegral (maxBound :: Int64) - minval = fromIntegral (minBound :: Int64) - --- ======================================================================== --- JSON - -instance Crypto c => ToJSON (MaryValue c) where - toJSON = object . toMaryValuePairs - toEncoding = Aeson.pairs . mconcat . toMaryValuePairs - -toMaryValuePairs :: Crypto c => Aeson.KeyValue e a => MaryValue c -> [a] -toMaryValuePairs (MaryValue l ps) = - [ "lovelace" .= l - , "policies" .= ps - ] - -instance ToJSON AssetName where - toJSON = Aeson.String . assetNameToTextAsHex - -instance ToJSONKey AssetName where - toJSONKey = toJSONKeyText assetNameToTextAsHex - --- ======================================================================== --- Compactible --- This is used in the TxOut which stores the (CompactForm MaryValue). - -instance Crypto c => Compactible (MaryValue c) where - newtype CompactForm (MaryValue c) = CompactValue (CompactValue c) - deriving (Eq, Typeable, Show, NoThunks, EncCBOR, DecCBOR, NFData) - toCompact x = CompactValue <$> to x - fromCompact (CompactValue x) = from x - -instance Crypto c => EncCBOR (CompactValue c) where - encCBOR = encCBOR . from - -instance Crypto c => DecCBOR (CompactValue c) where - decCBOR = do - v <- decodeMaryValue - case to v of - Nothing -> - fail - "impossible failure: decoded nonnegative value that cannot be compacted" - Just x -> pure x - -data CompactValue c - = CompactValueAdaOnly {-# UNPACK #-} !(CompactForm Coin) - | CompactValueMultiAsset - {-# UNPACK #-} !(CompactForm Coin) -- ada - {-# UNPACK #-} !Word32 -- number of ma's - {-# UNPACK #-} !ShortByteString -- rep - deriving (Generic, Show, Typeable) - -instance NFData (CompactValue c) where - rnf = rwhnf - -instance Crypto c => Eq (CompactValue c) where - a == b = from a == from b - -deriving via - OnlyCheckWhnfNamed "CompactValue" (CompactValue c) - instance - NoThunks (CompactValue c) - -{- -The MaryValue surface type uses a nested map. For the compact version we use a -flattened representation, equivalent to a list of triples: - [(PolicyID, AssetName, Quantity)] - -Example: - [ ("0xa519f84e...", "", 42) -- empty asset name - , ("0xf820a82c...", "Snark", 1) - , ("0xf820a82c...", "Boojum", 1) -- shared policy id, different name - ] - -We start by sorting in /descending/ order by asset name. Note that descending -order puts empty strings last: - [ ("0xf820a82c...", "Snark", 1) - , ("0xf820a82c...", "Boojum", 1) - , ("0xa519f84e...", "", 42) - ] - -This example will be serialised as: - ┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓ -A)┃ 1 ┃ 1 ┃ 42 ┃ Word64 quantities - ┣━━━┳━━━┳━━━┳━━━┻━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━┛ -B)┃ 36┃ 36┃ 64┃ Word16 policyId offsets - ┣━━━╋━━━╋━━━┫ -C)┃ 92┃ 98┃103┃ Word16 asset name offsets - ┣━┯━╇━┯━╇━┯━╇━┯━┯━┯━┯━┯━┯━┯━┯━┯━┯━┯━┯━┯━┯━┯━┯━┯━┯━┯━┯━┯━┓ -D)┃f820a82c.. ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┃ 28 byte policyId #1 - ┣━┿━┿━┿━┿━┿━┿━┿━┿━┿━┿━┿━┿━┿━┿━┿━┿━┿━┿━┿━┿━┿━┿━┿━┿━┿━┿━┿━┫ - ┃a519f84e.. ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┃ 28 byte policyId #2 - ┣━┿━┿━┿━┿━┿━┿━┿━┿━┿━┿━╈━╈━┷━┷━┷━┷━┷━┷━┷━┷━┷━┷━┷━┷━┷━┷━┷━┛ -E)┃S┊n┊a┊r┊k┊B┊o┊o┊j┊u┊m┃◀╂─padding to word size Asset names, plus padding - ┗━┷━┷━┷━┷━┷━┷━┷━┷━┷━┷━┻━┛ - ▲ ▲ ▲ - 92-offset 97-offset 103-offset, end of string - -Note that the asset name offsets end up sorted in ascending order, with empty -asset names pointing to the offset past the end of the concatenated names. - -The serialised representation consists of five parts, concatenated together: - A) A sequence of Word64s representing asset quantities. - - B) A sequence of Word16s representing policyId string offsets within D. - We do not need to store a length because policyIds are fixed size. - - C) A sequence of Word16s representing asset name string offsets within E. - We store only the starting offset and not a end offset or length. We can - do this because we keep the assets in A,B,C sorted by the asset name, so - the offsets in C are sorted. This means the next distinct entry gives the - (exclusive) end offset of the asset name string. As a special case for - empty asset names, the index points to the end of the string E. - - Note: If there are duplicate asset names, this can yield a sequence of - multiple of the same offset. For example, if the assets are named - "Snark","Snark","Boojum", region E would contain "SnarkBoojum", - and region C would contain 92, 92, 97. For the decoder to determine the - length of the first asset, it would subtract 92 from 97 (and not from the - duplicate 92). - - D) a blob of policyIDs, without duplicates, concatenated. - - E) a blob of asset names, sorted, without duplicates, concatenated. - -The size of the regions A,B,C are known based on the number of values. The -string offsets in B and C are relative to the whole of the representation, not -relative to the start of D & E (since D is variable size depending on whether -there were duplicate policyIDs) - -The encoding strategy is - - Collect all (unique) policy Ids. - - Collect all (unique) asset names. - - Determine the sizes of the regions and allocate them. - - size A = 8 * numassets - - size B = 2 * numassets - - size C = 2 * numassets - - size D = length (concat policyIds) - - size E = length (concat assetNames) - - sum = 12*numassets - + length (concat policyIds) - + length (concat assetNames) - - Write the policyIds to region D - - Write the asset names to region E - - For each asset entry - - Locate the corresponding asset name and policyId - - Write quantity, policyId location, and asset name location to corresponding - regions - - For the special case of 0 length asset names, the location is the end of - region E - -The decoding strategy is - - Use length information to determine the beginnings of regions A,B,C - (We do not need to do this for regions D and E because the policyId - and asset name locations are relative to the beginning of entire rep.) - - For each integer in 0..(numassets -1) - - Read corresponding quantity, pid offset, and asset name offset from regions - A, B, and C, respectively. - - Read (pid length) bytes from pid offset. assume it points into region D - - Determine asset name lengths using the difference between the offset and - the next greater offset (if it exists). If there is no next greater offset, - use the difference from the end of the rep. (Note: for the special case of - 0 length asset names, this calculation results in 0 because we are - subtracting the end of the rep from itself.) - - Read (asset name length) bytes from asset name offset. assume it points - into region E. - -} - -to :: - forall c. - Crypto c => - MaryValue c -> - -- The Nothing case of the return value corresponds to a quantity that is outside - -- the bounds of a Word64. x < 0 or x > (2^64 - 1) - Maybe (CompactValue c) -to (MaryValue ada (MultiAsset m)) - | Map.null m = CompactValueAdaOnly <$> toCompact ada -to v@(MaryValue _ ma) = do - c <- assert (isMultiAssetSmallEnough ma) (toCompact ada) - -- Here we convert the (pid, assetName, quantity) triples into - -- (Int, (Word16,Word16,Word64)) - -- These represent the index, pid offset, asset name offset, and quantity. - -- If any of the quantities out of bounds, this will produce Nothing. - -- The triples are ordered by asset name in descending order. - preparedTriples <- - zip [0 ..] . sortOn (\(_, x, _) -> x) <$> traverse prepare triples - pure $ - CompactValueMultiAsset c (fromIntegral numTriples) $ - runST $ do - byteArray <- BA.newByteArray repSize - forM_ preparedTriples $ \(i, (pidoff, anoff, q)) -> - do - -- For each triple, we write the quantity to region A, - -- the pid offset to region B, and the asset name offset to region C. - -- We can calculate the sizes (and therefore the starts) of each region - -- using the number of triples. - -- A: - -- size: (#triples * 8) bytes - -- start: offset 0 - -- B: - -- size: (#triples * 2) bytes - -- start: size(A) = #triples * 8 - -- C: - -- size: (#triples * 2) bytes - -- start: size(A) + size(B) = #triples * 10 - -- - -- The position argument to writeByteArray is an index in terms of the - -- size of the value being written. So writeByteArray of a Word64 at - -- position 1 writes at offset 8. - -- - -- For the following, the byte offsets calculated above are converted to - -- ByteArray positions by division. - -- - -- The byte offset of the ith... - -- quantity: 8i - -- pid offset: 8n + 2i - -- asset name offset: 8n + 2n + 2i - -- Dividing by the respective sizes (8,2,2) yields the indices below. - BA.writeByteArray byteArray i q - BA.writeByteArray byteArray (4 * numTriples + i) pidoff - BA.writeByteArray byteArray (5 * numTriples + i) anoff - - forM_ (Map.toList pidOffsetMap) $ - \(PolicyID (ScriptHash sh), offset) -> - let pidBytes = Hash.hashToBytesShort sh - in BA.copyByteArray - byteArray - (fromIntegral offset) - (sbsToByteArray pidBytes) - 0 - pidSize - - forM_ (Map.toList assetNameOffsetMap) $ - \(AssetName anameBS, offset) -> - let anameBytes = anameBS - anameLen = SBS.length anameBS - in BA.copyByteArray - byteArray - (fromIntegral offset) - (sbsToByteArray anameBytes) - 0 - anameLen - byteArrayToSbs <$> BA.unsafeFreezeByteArray byteArray - where - (ada, triples) = gettriples v - numTriples = length triples - - -- abcRegionSize is the combined size of regions A, B, and C - abcRegionSize = numTriples * 12 - - pidSize = fromIntegral (Hash.sizeHash (Proxy :: Proxy (ADDRHASH c))) - - -- pids is the collection of all distinct pids - pids = Set.fromList $ (\(pid, _, _) -> pid) <$> triples - - pidOffsetMap :: Map (PolicyID c) Word16 - pidOffsetMap = - -- the pid offsets are: - -- X, X + s, X + 2s, X + 3s, ... - -- where X is the start of block D and s is the size of a pid - let offsets = - enumFromThen (fromIntegral abcRegionSize) (fromIntegral (abcRegionSize + pidSize)) - in Map.fromList (zip (Set.toList pids) offsets) - - pidOffset pid = fromJust (Map.lookup pid pidOffsetMap) - - pidBlockSize = Set.size pids * pidSize - - -- Putting asset names in descending order ensures that the empty string - -- is last, so the associated offset is pointing to the end of the array - assetNames = Set.toDescList $ Set.fromList $ (\(_, an, _) -> an) <$> triples - - assetNameLengths = fromIntegral . SBS.length . assetName <$> assetNames - - assetNameOffsetMap :: Map AssetName Word16 - assetNameOffsetMap = - -- The asset name offsets are the running sum of the asset lengths, - -- but starting with the offset of the start of block E. - let offsets = scanl (+) (abcRegionSize + pidBlockSize) assetNameLengths - in fromIntegral <$> Map.fromList (zip assetNames offsets) - - assetNameOffset aname = fromJust (Map.lookup aname assetNameOffsetMap) - - anameBlockSize = sum assetNameLengths - - -- size = size(A+B+C) + size(D) + size(E) - repSize = abcRegionSize + pidBlockSize + anameBlockSize - - prepare (pid, aname, q) = do - q' <- integerToWord64 q - pure (pidOffset pid, assetNameOffset aname, q') - --- | Unlike `representationSize`, this function cheaply checks whether --- any offset within a MultiAsset compact representation is likely to overflow Word16. --- --- compact form inequality: --- 8n (Word64) + 2n (Word16) + 2n (Word16) + 28p (policy ids) + sum of lengths of unique asset names <= 65535 --- maximum size for the asset name is 32 bytes, so: --- 8n + 2n + 2n + 28p + 32n <= 65535 --- where: n = total number of assets, p = number of unique policy ids -isMultiAssetSmallEnough :: MultiAsset c -> Bool -isMultiAssetSmallEnough (MultiAsset ma) = - 44 * M.getSum (foldMap' (M.Sum . length) ma) + 28 * length ma <= 65535 - -representationSize :: - forall c. - Crypto c => - [(PolicyID c, AssetName, Integer)] -> - Int -representationSize xs = abcRegionSize + pidBlockSize + anameBlockSize - where - len = length xs - abcRegionSize = len * 12 - - numPids = Set.size . Set.fromList $ (\(pid, _, _) -> pid) <$> xs - pidSize = fromIntegral (Hash.sizeHash (Proxy :: Proxy (ADDRHASH c))) - pidBlockSize = numPids * pidSize - - assetNames = Set.fromList $ (\(_, an, _) -> an) <$> xs - anameBlockSize = - Semigroup.getSum $ foldMap' (Semigroup.Sum . SBS.length . assetName) assetNames - -from :: forall c. Crypto c => CompactValue c -> MaryValue c -from (CompactValueAdaOnly c) = MaryValue (fromCompact c) (MultiAsset Map.empty) -from (CompactValueMultiAsset c numAssets rep) = - let mv@(MaryValue _ ma) = valueFromList (fromCompact c) triples - in assert (isMultiAssetSmallEnough ma) mv - where - n = fromIntegral numAssets - - ba = sbsToByteArray rep - - getTripleForIndex :: Int -> (Word16, Word16, Word64) - getTripleForIndex i = - -- indexByteArray indices are in terms of the size of the value being indexed - -- rather than byte offsets. - -- The corresponding byte offsets are: - -- q: 0 + 8i - -- pidix: 8n + 2i - -- anameix: 8n + 2n + 2i - -- Dividing by the sized (resp 8,2,2) yields the indices below - let q = BA.indexByteArray ba i - pidix = BA.indexByteArray ba (4 * n + i) - anameix = BA.indexByteArray ba (5 * n + i) - in (pidix, anameix, q) - - -- raw triples :: [(pid offset, asset name offset, quantity)] - rawTriples :: [(Word16, Word16, Word64)] - rawTriples = map getTripleForIndex [0 .. (fromIntegral $ numAssets - 1)] - - triples :: [(PolicyID c, AssetName, Integer)] - triples = map convertTriple rawTriples - - -- Asset name length are calculated by subtracting the offset from the - -- next greater offset (or from the end of the rep, if there is none.) - -- For an index pointing to the end of the array, the associated - -- length will be: offset - length(rep) = 0 - assetLens = - -- This assumes that the triples are ordered by nondecreasing asset name offset - let ixs = nubOrd $ map (\(_, x, _) -> x) rawTriples - ixPairs = zip ixs (drop 1 ixs ++ [fromIntegral $ SBS.length rep]) - in Map.fromList $ (\(a, b) -> (a, fromIntegral $ b - a)) <$> ixPairs - assetLen :: Word16 -> Int - assetLen ix = fromJust (Map.lookup ix assetLens) - - convertTriple :: - (Word16, Word16, Word64) -> (PolicyID c, AssetName, Integer) - convertTriple (p, a, i) = - ( PolicyID $ - ScriptHash $ - Hash.UnsafeHash $ - readShortByteString - rep - (fromIntegral p) - (fromIntegral $ Hash.sizeHash ([] :: [ADDRHASH c])) - , AssetName $ readShortByteString rep (fromIntegral a) (assetLen a) - , fromIntegral i - ) - --- | Strip out duplicates -nubOrd :: Ord a => [a] -> [a] -nubOrd = - loop mempty - where - loop _ [] = [] - loop s (a : as) - | a `Set.member` s = loop s as - | otherwise = - let s' = Set.insert a s in s' `seq` a : loop s' as - -sbsToByteArray :: ShortByteString -> BA.ByteArray -sbsToByteArray (SBS bah) = BA.ByteArray bah - -byteArrayToSbs :: BA.ByteArray -> ShortByteString -byteArrayToSbs (BA.ByteArray bah) = SBS bah - -readShortByteString :: ShortByteString -> Int -> Int -> ShortByteString -readShortByteString sbs start len = - byteArrayToSbs $ BA.cloneByteArray (sbsToByteArray sbs) start len - --- ======================================================================== --- Operations on Values - --- | Extract the set of policies in the Value. --- --- This function is equivalent to computing the support of the value in the --- spec. -policies :: MultiAsset c -> Set (PolicyID c) -policies (MultiAsset m) = Map.keysSet m - -lookup :: PolicyID c -> AssetName -> MaryValue c -> Integer -lookup = lookupMultiAsset -{-# DEPRECATED lookup "In favor of `lookupMultiAsset`" #-} - -lookupMultiAsset :: PolicyID c -> AssetName -> MaryValue c -> Integer -lookupMultiAsset pid aid (MaryValue _ (MultiAsset m)) = - case Map.lookup pid m of - Nothing -> 0 - Just m2 -> Map.findWithDefault 0 aid m2 - --- | insert comb policy asset n v, --- if comb = \ old new -> old, the integer in the MultiAsset is prefered over n --- if comb = \ old new -> new, then n is prefered over the integer in the MultiAsset --- if (comb old new) == 0, then that value should not be stored in the MultiAsset -insert :: - (Integer -> Integer -> Integer) -> - PolicyID c -> - AssetName -> - Integer -> - MultiAsset c -> - MultiAsset c -insert = insertMultiAsset -{-# DEPRECATED insert "In favor of `insertMultiAsset`" #-} - --- | insertMultiAsset comb policy asset n v, --- if comb = \ old new -> old, the integer in the MultiAsset is prefered over n --- if comb = \ old new -> new, then n is prefered over the integer in the MultiAsset --- if (comb old new) == 0, then that value should not be stored in the MultiAsset -insertMultiAsset :: - (Integer -> Integer -> Integer) -> - PolicyID c -> - AssetName -> - Integer -> - MultiAsset c -> - MultiAsset c -insertMultiAsset combine pid aid new (MultiAsset m1) = - case Map.splitLookup pid m1 of - (l1, Just m2, l2) -> - case Map.splitLookup aid m2 of - (v1, Just old, v2) -> - if n == 0 - then - let m3 = link2 v1 v2 - in if Map.null m3 - then MultiAsset (link2 l1 l2) - else MultiAsset (link pid m3 l1 l2) - else MultiAsset (link pid (link aid n v1 v2) l1 l2) - where - n = combine old new - (_, Nothing, _) -> - MultiAsset - ( link - pid - ( if new == 0 - then m2 - else Map.insert aid new m2 - ) - l1 - l2 - ) - (l1, Nothing, l2) -> - MultiAsset - ( if new == 0 - then link2 l1 l2 - else link pid (Map.singleton aid new) l1 l2 - ) - --- ======================================================== - --- | Remove 0 assets from a map -prune :: - Map (PolicyID c) (Map AssetName Integer) -> - Map (PolicyID c) (Map AssetName Integer) -prune assets = - Map.filter (not . null) $ Map.filter (/= 0) <$> assets - --- | Rather than using prune to remove 0 assets, when can avoid adding them in the --- first place by using valueFromList to construct a MultiAsset -multiAssetFromList :: [(PolicyID era, AssetName, Integer)] -> MultiAsset era -multiAssetFromList = foldr (\(p, n, i) ans -> insertMultiAsset (+) p n i ans) mempty - -valueFromList :: Coin -> [(PolicyID era, AssetName, Integer)] -> MaryValue era -valueFromList ada triples = MaryValue ada (multiAssetFromList triples) - --- | Display a MaryValue as a String, one token per line -showValue :: MaryValue c -> String -showValue v = show c ++ "\n" ++ unlines (map trans ts) - where - (c, ts) = gettriples v - trans (PolicyID x, hash, cnt) = - show x - ++ ", " - ++ show hash - ++ ", " - ++ show cnt - --- | Turn the nested 'MaryValue' map-of-maps representation into a flat sequence --- of policyID, asset name and quantity, plus separately the ada quantity. -gettriples :: MaryValue c -> (Coin, [(PolicyID c, AssetName, Integer)]) -gettriples (MaryValue c ma) = (c, flattenMultiAsset ma) - -flattenMultiAsset :: MultiAsset c -> [(PolicyID c, AssetName, Integer)] -flattenMultiAsset (MultiAsset m) = - [ (policyId, aname, amount) - | (policyId, m2) <- assocs m - , (aname, amount) <- assocs m2 - ] diff --git a/eras/mary/impl/test/Main.hs b/eras/mary/impl/test/Main.hs deleted file mode 100644 index d453e2ab349..00000000000 --- a/eras/mary/impl/test/Main.hs +++ /dev/null @@ -1,21 +0,0 @@ -{-# LANGUAGE TypeApplications #-} - -module Main where - -import Cardano.Ledger.Mary (Mary) -import Test.Cardano.Ledger.Common -import qualified Test.Cardano.Ledger.Mary.Binary.CddlSpec as CddlSpec -import qualified Test.Cardano.Ledger.Mary.BinarySpec as BinarySpec -import Test.Cardano.Ledger.Mary.ImpTest () -import qualified Test.Cardano.Ledger.Mary.ValueSpec as ValueSpec -import qualified Test.Cardano.Ledger.Shelley.Imp as ShelleyImp - -main :: IO () -main = - ledgerTestMain $ - describe "Mary" $ do - ValueSpec.spec - BinarySpec.spec - CddlSpec.spec - describe "Imp" $ do - ShelleyImp.spec @Mary diff --git a/eras/mary/impl/test/Test/Cardano/Ledger/Mary/Binary/CddlSpec.hs b/eras/mary/impl/test/Test/Cardano/Ledger/Mary/Binary/CddlSpec.hs deleted file mode 100644 index f4692945aea..00000000000 --- a/eras/mary/impl/test/Test/Cardano/Ledger/Mary/Binary/CddlSpec.hs +++ /dev/null @@ -1,23 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Mary.Binary.CddlSpec (spec) where - -import Cardano.Ledger.Core -import Cardano.Ledger.Mary (Mary) -import Test.Cardano.Ledger.Binary.Cddl ( - beforeAllCddlFile, - cddlRoundTripAnnCborSpec, - cddlRoundTripCborSpec, - ) -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Mary.Binary.Cddl (readMaryCddlFiles) - -spec :: Spec -spec = - describe "CDDL" $ beforeAllCddlFile 3 readMaryCddlFiles $ do - let v = eraProtVerLow @Mary - cddlRoundTripCborSpec @(Value Mary) v "value" - cddlRoundTripAnnCborSpec @(TxBody Mary) v "transaction_body" - cddlRoundTripAnnCborSpec @(Script Mary) v "native_script" - cddlRoundTripAnnCborSpec @(TxAuxData Mary) v "auxiliary_data" diff --git a/eras/mary/impl/test/Test/Cardano/Ledger/Mary/BinarySpec.hs b/eras/mary/impl/test/Test/Cardano/Ledger/Mary/BinarySpec.hs deleted file mode 100644 index 647fc35d39a..00000000000 --- a/eras/mary/impl/test/Test/Cardano/Ledger/Mary/BinarySpec.hs +++ /dev/null @@ -1,36 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Mary.BinarySpec (spec) where - -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Mary -import Data.Default.Class (def) -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Core.Binary (specUpgrade) -import Test.Cardano.Ledger.Core.Binary.RoundTrip (RuleListEra (..)) -import Test.Cardano.Ledger.Mary.Arbitrary () -import Test.Cardano.Ledger.Mary.TreeDiff () -import Test.Cardano.Ledger.Shelley.Binary.RoundTrip (roundTripShelleyCommonSpec) - -spec :: Spec -spec = do - specUpgrade @Mary def - describe "RoundTrip" $ do - roundTripShelleyCommonSpec @Mary - -instance Crypto c => RuleListEra (MaryEra c) where - type - EraRules (MaryEra c) = - '[ "DELEG" - , "DELEGS" - , "DELPL" - , "LEDGER" - , "LEDGERS" - , "POOL" - , "PPUP" - , "UTXO" - , "UTXOW" - ] diff --git a/eras/mary/impl/test/Test/Cardano/Ledger/Mary/ValueSpec.hs b/eras/mary/impl/test/Test/Cardano/Ledger/Mary/ValueSpec.hs deleted file mode 100644 index 0a7ebc4792e..00000000000 --- a/eras/mary/impl/test/Test/Cardano/Ledger/Mary/ValueSpec.hs +++ /dev/null @@ -1,125 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Mary.ValueSpec (spec) where - -import Cardano.Ledger.BaseTypes (natVersion) -import Cardano.Ledger.Coin (Coin (Coin)) -import Cardano.Ledger.Compactible (fromCompact, toCompact) -import Cardano.Ledger.Core (eraProtVerLow) -import Cardano.Ledger.Crypto (Crypto, StandardCrypto) -import Cardano.Ledger.Mary (Mary) -import Cardano.Ledger.Mary.Value -import Control.Exception (AssertionFailed (AssertionFailed), evaluate) -import qualified Data.ByteString.Base16 as BS16 -import qualified Data.ByteString.Char8 as BS8 -import qualified Data.ByteString.Short as SBS -import Data.CanonicalMaps (canonicalInsert) -import Data.Maybe (fromJust) -import GHC.Exts -import Test.Cardano.Data -import Test.Cardano.Ledger.Binary.RoundTrip ( - roundTripCborExpectation, - roundTripCborFailureExpectation, - roundTripCborRangeExpectation, - roundTripCborRangeFailureExpectation, - ) -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Mary.Arbitrary ( - genEmptyMultiAsset, - genMaryValue, - genMultiAsset, - genMultiAssetToFail, - genMultiAssetZero, - genNegativeInt, - ) - -spec :: Spec -spec = do - describe "MultiAsset" $ do - prop "Canonical construction agrees" $ - withMaxSuccess 10000 $ - propCanonicalConstructionAgrees @StandardCrypto - describe "CBOR roundtrip" $ do - context "Coin" $ do - prop "Non-negative Coin succeeds for all eras" $ - \(NonNegative i) -> roundTripCborExpectation (Coin i) - prop "Negative Coin succeeds for pre-Conway" $ - \(Negative i) -> roundTripCborRangeExpectation minBound (natVersion @8) (Coin i) - prop "Negative Coin fails to deserialise for Conway" $ - \(Negative i) -> roundTripCborRangeFailureExpectation (natVersion @9) (natVersion @9) (Coin i) - context "MultiAsset" $ do - prop "Non-zero-valued MultiAsset succeeds for all eras" $ - roundTripCborExpectation @(MultiAsset StandardCrypto) - prop "Zero-valued MultiAsset fails for Conway" $ - forAll (genMultiAssetZero @StandardCrypto) $ - roundTripCborRangeFailureExpectation (natVersion @9) maxBound - prop "Empty MultiAsset fails for Conway" $ - forAll (genEmptyMultiAsset @StandardCrypto) $ - roundTripCborRangeFailureExpectation (natVersion @9) maxBound - context "MaryValue" $ do - prop "Positive MaryValue succeeds for all eras" $ \(mv :: MaryValue StandardCrypto) -> - roundTripCborExpectation mv - prop "Negative MaryValue fails for all eras" $ - forAll - (genMaryValue (genMultiAsset @StandardCrypto (toInteger <$> genNegativeInt))) - roundTripCborFailureExpectation - prop "Zero MaryValue fails for Conway" $ - forAll (genMaryValue (genMultiAssetZero @StandardCrypto)) $ - roundTripCborRangeFailureExpectation (natVersion @9) maxBound - prop "Empty MaryValue fails for Conway" $ - forAll (genMaryValue (genEmptyMultiAsset @StandardCrypto)) $ - roundTripCborRangeFailureExpectation (natVersion @9) maxBound - it "Too many assets should fail" $ - property $ - forAll - (genMaryValue (genMultiAssetToFail @StandardCrypto True)) - ( roundTripCborRangeFailureExpectation @(MaryValue StandardCrypto) - (eraProtVerLow @Mary) - maxBound - ) - describe "MaryValue compacting" $ do - prop "Canonical generator" $ - \(ma :: MaryValue StandardCrypto) -> - fromCompact (fromJust (toCompact ma)) `shouldBe` ma - prop "Failing generator" $ - forAll (genMaryValue (genMultiAssetToFail @StandardCrypto True)) $ - \ma -> - evaluate (fromCompact (fromJust (toCompact ma))) - `shouldThrow` (\(AssertionFailed errorMsg) -> take 16 errorMsg == "Assertion failed") - -instance IsString AssetName where - fromString = AssetName . either error SBS.toShort . BS16.decode . BS8.pack - -propCanonicalConstructionAgrees :: - Crypto c => - [(PolicyID c, AssetName, Integer)] -> - [(PolicyID c, AssetName, Integer)] -> - Property -propCanonicalConstructionAgrees xs ys = property $ do - let ma1@(MultiAsset a1) = multiAssetFromList xs - ma2@(MultiAsset a2) = multiAssetFromList ys - expectValidMap a1 - expectValidMap a2 - let mb1@(MultiAsset b1) = - mconcat - [ MultiAsset $ - canonicalInsert const pid (canonicalInsert const an i mempty) mempty - | (pid, an, i) <- xs - ] - mb2@(MultiAsset b2) = - mconcat - [ MultiAsset $ - canonicalInsert const pid (canonicalInsert const an i mempty) mempty - | (pid, an, i) <- ys - ] - expectValidMap b1 - expectValidMap b2 - ma1 `shouldBe` mb1 - ma2 `shouldBe` mb2 - ma1 <> ma2 `shouldBe` mb1 <> mb2 - ma1 <> mb2 `shouldBe` mb1 <> ma2 diff --git a/eras/mary/impl/testlib/Test/Cardano/Ledger/Mary/Arbitrary.hs b/eras/mary/impl/testlib/Test/Cardano/Ledger/Mary/Arbitrary.hs deleted file mode 100644 index 0d322f6fc79..00000000000 --- a/eras/mary/impl/testlib/Test/Cardano/Ledger/Mary/Arbitrary.hs +++ /dev/null @@ -1,242 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE ViewPatterns #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Mary.Arbitrary ( - genEmptyMultiAsset, - genMaryValue, - genMultiAsset, - genMultiAssetToFail, - genMultiAssetZero, - genPositiveInt, - genNegativeInt, - genNonNegativeInt, -) where - -import Cardano.Crypto.Hash.Class (Hash, HashAlgorithm, castHash, hashWith) -import Cardano.Ledger.Coin -import Cardano.Ledger.Compactible -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Mary.TxBody (MaryTxBody (..)) -import Cardano.Ledger.Mary.Value ( - AssetName (..), - MaryValue (..), - MultiAsset (..), - PolicyID (..), - isMultiAssetSmallEnough, - ) -import qualified Cardano.Ledger.Mary.Value as ConcreteValue -import Data.Int (Int64) -import qualified Data.Map.Strict as Map (empty) -import Data.Maybe (fromMaybe) -import Data.Maybe.Strict (StrictMaybe) -import Data.String (IsString (fromString)) -import Test.Cardano.Data (genNonEmptyMap) -import Test.Cardano.Ledger.Allegra.Arbitrary () -import Test.Cardano.Ledger.Binary.Arbitrary (genByteString, genShortByteString) -import Test.Cardano.Ledger.Common - -instance Arbitrary AssetName where - arbitrary = - AssetName - <$> frequency - [ (3, elements digitByteStrings) - , (7, genShortByteString =<< choose (1, 32)) - ] - -instance - ( EraTxOut era - , EraTxCert era - , Era era - , Arbitrary (TxOut era) - , Arbitrary (PParamsHKD StrictMaybe era) - , Arbitrary (TxCert era) - ) => - Arbitrary (MaryTxBody era) - where - arbitrary = - MaryTxBody - <$> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - --- | Variant on @multiAssetFromList@ that makes sure that generated values stay --- bounded within the range of a given integral type. -multiAssetFromListBounded :: - forall i c. - (Bounded i, Integral i) => - [(PolicyID c, AssetName, i)] -> - MultiAsset c -multiAssetFromListBounded = - foldr - (\(p, n, fromIntegral -> i) ans -> ConcreteValue.insertMultiAsset comb p n i ans) - mempty - where - comb :: Integer -> Integer -> Integer - comb a b = - max - (fromIntegral $ minBound @i) - (min (fromIntegral $ maxBound @i) (a + b)) - -instance Crypto c => Arbitrary (PolicyID c) where - arbitrary = - PolicyID . ScriptHash - <$> oneof - [ arbitrary - , elements hashOfDigitByteStrings - ] - -genMultiAssetTriple :: Crypto c => Gen Int64 -> Gen (PolicyID c, AssetName, Int64) -genMultiAssetTriple genAmount = (,,) <$> arbitrary <*> arbitrary <*> genAmount - --- When we generate a number of MultiAssets all at once, that number happens to have --- an implicit upper limit due to the Cardano.Ledger.Mary.Value.{to,from}-based --- compacting operation. This operation is also performed when we serialise to and from CBOR. --- --- Refering to the haddock for 'Cardano.Ledger.Mary.Value.to' we surmise that --- 1. The offsets for AssetName and PolicyID are stored as Word16 (maxBound = 65535). --- 2. All offsets (including those for AssetName and PolicyID) are relative to the whole --- of the representation (binary blob) rather than the start of their respective regions. --- 3. If the offsets exceed their maxBounds, they will overflow. --- 4. So, we need to ensure that at least the last of the offsets (AssetName offsets) do --- not exceed 65535. --- 5. With `n` as the total number of assets, `p` the number of policy ids, the inequality to be satisfied is thus: --- 8n -- Word64 asset quantities --- + 2n -- Word16 policy id offsets --- + 2n -- Word16 asset name offsets --- + 28p -- 28-byte policy ids --- + 32n -- 32-byte asset names (a maximum of 32 bytes) --- should be <= 65535, assuming the numer of policies to be maximal (i.e. equal to number of assets) --- 65535 / 72 ~ 910.2 is the maximum number of triples to be safely generated. --- Or, in other words, 44n + 28p <= 65535 --- --- NOTE: There are some conditions due to which exceeding this number may not --- result in a guaranteed failure to compact without overflow, because, during compacting --- 1. The asset names and policy ids are deduplicated --- 2. Not all generated asset names are 32-bytes long --- But, exceeding this number does make the probability of causing overflow > 0. -genMultiAsset :: forall c. Crypto c => Gen Integer -> Gen (MultiAsset c) -genMultiAsset genAmount = do - ma <- - oneof - [ MultiAsset <$> genNonEmptyMap arbitrary (genNonEmptyMap arbitrary genAmount) - , multiAssetFromListBounded <$> listOf1 (genMultiAssetTriple $ fromIntegral <$> genAmount) - ] - if isMultiAssetSmallEnough ma - then pure ma - else scale (`div` 2) $ genMultiAsset genAmount - --- | For tests, because `insertMultiAsset` called through `genMultiAsset` filters out zero values -genMultiAssetZero :: Crypto c => Gen (MultiAsset c) -genMultiAssetZero = MultiAsset <$> genNonEmptyMap arbitrary (genNonEmptyMap arbitrary (pure 0)) - --- For negative tests, we need a definite generator that will produce just large-enough MultiAssets --- that will fail decoding, but not large-enough to consume too much resource. --- The first Bool argument indicates whether the generation is for use in a MaryValue (MaryValue MultiAssets have Positive values) -genMultiAssetToFail :: forall c. Crypto c => Bool -> Gen (MultiAsset c) -genMultiAssetToFail isForMaryValue = do - let genAssetNameToFail = AssetName <$> genShortByteString 32 - genPolicyIDToFail = PolicyID . ScriptHash . castHash . hashWith id <$> genByteString 28 - (numP, numA) <- do - -- When numAssetNames > 1489 it is enough to have at least 1 policy id - numAssetNames <- chooseInt (1, 1500) - -- Make at least 1 policy id - let minNumPolicyIds = max 0 ((65535 - 44 * numAssetNames) `div` 28) - numPolicyIds <- (minNumPolicyIds +) . getPositive <$> arbitrary - -- Ensure we have at least as many asset names as there are policy ids - pure (numPolicyIds, max numPolicyIds numAssetNames) - - -- Here we generate separately a list of asset names and a list of policy ids and - -- randomly shuffle them into a MultiAsset, ensuring that each policy has at least one asset. - ps <- vectorOf numP genPolicyIDToFail - as <- - vectorOf numA $ - (,) - <$> genAssetNameToFail - <*> if isForMaryValue then getPositive @Int <$> arbitrary else getNonZero @Int <$> arbitrary - let initialTriples = zipWith (\p (a, v) -> (p, a, v)) ps as -- All policies should have at least one asset - remainingAs = drop numP as - remainingTriples <- - traverse - ( \(a, v) -> do - policy <- elements ps -- For every remaining asset, randomly assign a policy - pure (policy, a, v) - ) - remainingAs - let MultiAsset ma = multiAssetFromListBounded $ initialTriples <> remainingTriples - -- Ensure that the large numbers aren't reduced due to duplicates. - -- This is impossible in practice, since PRNG produces uniform values. - if length ma == numP && sum (length <$> ma) == numA - then pure $ MultiAsset ma - else genMultiAssetToFail isForMaryValue - -instance Crypto c => Arbitrary (MultiAsset c) where - arbitrary = - genMultiAsset $ - toInteger - <$> oneof - [ choose (1 :: Int, maxBound) - , choose (minBound :: Int, -1) - ] - -genEmptyMultiAsset :: Crypto c => Gen (MultiAsset c) -genEmptyMultiAsset = - MultiAsset <$> genNonEmptyMap arbitrary (pure Map.empty) - --- | Better generator for a Non-Negative Int that explores more values -genNonNegativeInt :: Gen Int -genNonNegativeInt = - oneof - [ choose (0, maxBound) - , getNonNegative <$> arbitrary - ] - --- | Better generator for a positive Int that explores more values -genPositiveInt :: Gen Int -genPositiveInt = - oneof - [ choose (1, maxBound) - , getPositive <$> arbitrary - ] - --- | Better generator for a Negative Int that explores more values -genNegativeInt :: Gen Int -genNegativeInt = - oneof - [ choose (minBound, -1) - , negate . getPositive <$> arbitrary - ] - -genMaryValue :: Gen (MultiAsset c) -> Gen (MaryValue c) -genMaryValue genMA = do - i <- toInteger <$> genNonNegativeInt - ma <- genMA - pure $ MaryValue (Coin i) ma - -instance Crypto c => Arbitrary (MaryValue c) where - arbitrary = - genMaryValue $ genMultiAsset $ toInteger <$> genPositiveInt - -instance Crypto c => Arbitrary (CompactForm (MaryValue c)) where - arbitrary = toCompactMaryValue <$> arbitrary - where - toCompactMaryValue v = - fromMaybe (error $ "Could not compact the value: " ++ show v) $ toCompact v - -digitByteStrings :: IsString s => [s] -digitByteStrings = [fromString [x] | x <- ['0' .. '9']] - -hashOfDigitByteStrings :: HashAlgorithm h => [Hash h a] -hashOfDigitByteStrings = castHash . hashWith id <$> digitByteStrings diff --git a/eras/mary/impl/testlib/Test/Cardano/Ledger/Mary/Binary/Cddl.hs b/eras/mary/impl/testlib/Test/Cardano/Ledger/Mary/Binary/Cddl.hs deleted file mode 100644 index 6efbd4f1963..00000000000 --- a/eras/mary/impl/testlib/Test/Cardano/Ledger/Mary/Binary/Cddl.hs +++ /dev/null @@ -1,18 +0,0 @@ -module Test.Cardano.Ledger.Mary.Binary.Cddl ( - readMaryCddlFileNames, - readMaryCddlFiles, -) where - -import qualified Data.ByteString.Lazy as BSL -import Paths_cardano_ledger_mary - -readMaryCddlFileNames :: IO [FilePath] -readMaryCddlFileNames = do - base <- getDataFileName "cddl-files/mary.cddl" - crypto <- getDataFileName "cddl-files/crypto.cddl" - extras <- getDataFileName "cddl-files/extras.cddl" - -- extras contains the types whose restrictions cannot be expressed in CDDL - pure [base, crypto, extras] - -readMaryCddlFiles :: IO [BSL.ByteString] -readMaryCddlFiles = mapM BSL.readFile =<< readMaryCddlFileNames diff --git a/eras/mary/impl/testlib/Test/Cardano/Ledger/Mary/ImpTest.hs b/eras/mary/impl/testlib/Test/Cardano/Ledger/Mary/ImpTest.hs deleted file mode 100644 index bd850bd8963..00000000000 --- a/eras/mary/impl/testlib/Test/Cardano/Ledger/Mary/ImpTest.hs +++ /dev/null @@ -1,34 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Mary.ImpTest () where - -import Cardano.Crypto.DSIGN (DSIGNAlgorithm (..), Ed25519DSIGN) -import Cardano.Crypto.Hash (Hash) -import Cardano.Ledger.Core (EraIndependentTxBody) -import Cardano.Ledger.Crypto (Crypto (..)) -import Cardano.Ledger.Mary (MaryEra) -import Test.Cardano.Ledger.Allegra.ImpTest (impAllegraSatisfyNativeScript) -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Mary.TreeDiff () -import Test.Cardano.Ledger.Shelley.ImpTest ( - ShelleyEraImp (..), - initShelleyImpNES, - shelleyFixupTx, - ) - -instance - ( Crypto c - , NFData (SigDSIGN (DSIGN c)) - , NFData (VerKeyDSIGN (DSIGN c)) - , DSIGN c ~ Ed25519DSIGN - , Signable (DSIGN c) (Hash (HASH c) EraIndependentTxBody) - ) => - ShelleyEraImp (MaryEra c) - where - initImpNES = initShelleyImpNES - impSatisfyNativeScript = impAllegraSatisfyNativeScript - fixupTx = shelleyFixupTx diff --git a/eras/mary/impl/testlib/Test/Cardano/Ledger/Mary/TreeDiff.hs b/eras/mary/impl/testlib/Test/Cardano/Ledger/Mary/TreeDiff.hs deleted file mode 100644 index 820301178fc..00000000000 --- a/eras/mary/impl/testlib/Test/Cardano/Ledger/Mary/TreeDiff.hs +++ /dev/null @@ -1,47 +0,0 @@ -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE MonoLocalBinds #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Mary.TreeDiff ( - module Test.Cardano.Ledger.Allegra.TreeDiff, -) where - -import Cardano.Ledger.Core -import Cardano.Ledger.Mary.TxBody -import Cardano.Ledger.Mary.Value -import Cardano.Ledger.Shelley.PParams -import Test.Cardano.Ledger.Allegra.TreeDiff - --- Value -instance ToExpr (CompactValue c) - -instance ToExpr (MaryValue c) - -instance ToExpr (MultiAsset c) - -instance ToExpr (PolicyID c) - -instance ToExpr AssetName where - toExpr an = App "AssetName" [toExpr (assetNameToTextAsHex an)] - -deriving newtype instance ToExpr (CompactForm (MaryValue c)) - --- TxBody -instance - ( ToExpr (TxOut era) - , ToExpr (TxCert era) - , ToExpr (Update era) - ) => - ToExpr (MaryTxBodyRaw era) - -instance - ( ToExpr (TxOut era) - , ToExpr (TxCert era) - , ToExpr (Update era) - ) => - ToExpr (MaryTxBody era) diff --git a/eras/shelley-ma/formal-spec/IOHKCoverPage.sty b/eras/shelley-ma/formal-spec/IOHKCoverPage.sty deleted file mode 100644 index be8f75ac50e..00000000000 --- a/eras/shelley-ma/formal-spec/IOHKCoverPage.sty +++ /dev/null @@ -1,266 +0,0 @@ -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{IOHKCoverPage}[2019/09/12] - -\RequirePackage{fancyhdr} -%\RequirePackage{xcolor} - -\newif\if@deliverable -\newif\if@teamreport -\newif\if@wpreport -\newif\if@techreport -\DeclareOption{deliverable} - {\@deliverabletrue} -\DeclareOption{teamreport} - {\@teamreporttrue} -\DeclareOption{wpreport} - {\@wpreporttrue} -\DeclareOption{techreport} - {\@techreporttrue} - \ProcessOptions -% -\def\IOHK{IOHK} -% -\def\reportnumber#1{\def\@reportnumber{#1}} -\def\reportmonth#1{\def\@reportmonth{#1}} -\def\reportyear#1{\def\@reportyear{#1}} -\def\email#1{\def\@email{#1}} -\def\@reportnumber{?} -\def\@reportmonth{} -\def\@reportyear{} -% -\def\Project#1{\def\@Project{#1}} -\def\ReportNumber#1{\def\@ReportNumber{#1}} -\def\DeliverableNumber#1{\def\@DeliverableNumber{#1}} -\def\DeliverableTitle#1#2{\def\@DeliverableTitle{#1}\def\@ShortDelTitle{#2}} -\def\DueDate#1{\def\@DueDate{#1}} -%% should be possible to convert! KH -\def\SubmissionDate#1#2{\def\@SubmissionDate{#1}\def\@ShortSubmissionDate{#2}} -\def\VersionDate#1{\def\@VersionDate{#1}} -\def\LeaderName#1{\def\@LeaderName{#1}} -\def\Authors#1{\def\@Authors{#1}} -\def\DeliverableResponsible#1{\def\@DeliverableResponsible{#1}} -\def\Institution#1{\def\@Institution{#1}} -\def\InstitutionAddress#1{\def\@InstitutionAddress{#1}} -\def\EditorName#1{\def\@EditorName{#1}} -\def\WorkPackage#1{\def\@WorkPackage{#1}} -\def\TaskNumber#1{\def\@TaskNumber{{\@emph Task number:} #1}} -\def\Version#1{\def\@Version{#1}} -\def\SVNRevision#1{\def\@SVNRevision{#1}} -\def\LastEditor#1{\def\@LastEditor{#1}} -%\def\Reviewers#1{\def\@ReviewersTitle{\@bold Reviewers:}\def\@Reviewers{#1}} -\def\Reviewers#1{\@Reviewerstrue\def\@Reviewers{#1}} -\def\LastDate#1{\def\@LastDate{#1}} -\def\DisseminationPU{\def\@IsPU{$\surd$}} -\def\DisseminationCO{\def\@IsCO{$\surd$}} -\def\DisseminationDR{\def\@IsDR{$\surd$}} -\newcommand{\Revision}[5]{\@writefile{cov}{\hline \hfil #1\hfil\\}} -\newcommand{\Task}[3]{\@Taskstrue\@writefile{par}{\hline #1\\}} - -\def\@Project{Cardano} -\def\@Authors{XXXX} -\def\@ReportNumber{XXXX} -\def\@DeliverableNumber{XXXX} -\def\@DeliverableTitle{XXXX} -\def\@ShortDelTitle{\@DeliverableTitle} -\def\@DueDate{XXXX} -\def\@SubmissionDate{XXXX} -\def\@ShortSubmissionDate{\@SubmissionDate} -\def\@LeaderName{XXXX} -\def\@DeliverableResponsible{XXXX} -\def\@Institution{XXXX} -\def\@InstitutionAddress{XXXX} -\def\@EditorName{XXXX} -\def\@WorkPackage{XXXX} -\def\@TaskNumber{~} -\def\@Version{XXXX} -\def\@SVNRevision{XXXX} -\def\@LastEditor{XXXX} -\def\@Reviewers{~} -\newif\if@Reviewers -\newif\if@Tasks -\@Tasksfalse -\def\@LastDate{XXXX} -\def\@IsDR{} -\def\@IsPP{} -\def\@IsPU{} -\def\@IsRE{} -\def\@IsCO{} -\def\@Revision{} -\def\@Task{} - -%%cover fonts -\def\@ProjFont{\fontsize{24}{28}\usefont{T1}{ptm}{b}{n}\selectfont} -\def\@TitleFont{\fontsize{18}{24}\usefont{T1}{ptm}{b}{n}\selectfont} -\def\@Large{\fontsize{18}{21}\usefont{T1}{ptm}{m}{n}\selectfont} -\def\@Small{\fontsize{9}{11}\usefont{T1}{ptm}{m}{n}\selectfont} -\def\@font{\fontsize{12}{12}\usefont{T1}{ptm}{m}{n}\selectfont} -\def\@sc{\fontshape{sc}\selectfont} -\def\@emph{\fontshape{sl}\selectfont} -\def\@bold{\fontseries{b}\selectfont} - - -\newdimen\@CoverPageWidth -\newdimen\@CoverPageHeight -\newdimen\@TableWidth -\@CoverPageWidth=\paperwidth -\@CoverPageHeight=\paperheight -\@TableWidth=\paperwidth -\advance\@CoverPageWidth by -1.5in -\advance\@CoverPageHeight by -2in -\advance\@TableWidth by -5cm -\newdimen\TableWidth -\TableWidth=\@TableWidth - - -\newcommand{\@CoverBody}{ -\@font -\parbox{\linewidth}{\centering - \vspace{15mm} -% {Project no. 644235}\par - \vspace{6mm} - {\@ProjFont \Project{}}\par - \vspace{6mm} -% {Research \& Innovation Action (RIA)}\par -% {\@sc \large{\textbf{Refactoring Parallel Heterogeneous Resource-Aware Applications -- a Software Engineering Approach}}}\par - \vspace{10mm} - \if@deliverable - {\@TitleFont \@DeliverableTitle\\ - \vspace{18mm} - {Deliverable }\@DeliverableNumber}\par - \vspace{16mm} - \begin{large} - \begin{center} - {\@Authors } - \end{center} - \end{large} - \par - \vspace{1cm} -% \begin{tabular}{r@{: }l} -% Due date of deliverable& \@DueDate\\ -% Actual submission date& \@SubmissionDate -% \end{tabular} - \par - \fi - \if@techreport - {\@TitleFont \@DeliverableTitle\\ - \vspace{3mm}} - {\Project{} Technical Report \# \@ReportNumber}\par - \vspace{6mm} - {\@Authors \vspace{1cm} }\par - \fi - -} -\parbox{\linewidth}{\flushright - \vspace{10mm} - \if@techreport - Report Registration Date: \@SubmissionDate - \else - {\@emph Project:} \@Project \par - \vspace{5mm} - \fi - \if@deliverable - {\@emph Type:} Deliverable\par - {\@emph Due Date:} \@DueDate\par - % {\@emph WP number:} \@WorkPackage\par - %{\@TaskNumber}\par - \vspace{5mm} - {\@emph Responsible team:} \@DeliverableResponsible\par - {\@emph Editor:} \@EditorName\par - {\@emph Team Leader:} \@LeaderName\par - \fi - \if@teamreport - \vspace{5mm} - {\@emph Report type:} Team Leader's Progress Report\par - \vspace{5mm} - {\@emph Name of Team leader:} \@LeaderName\par - {\@emph Institution \& address:} \@InstitutionAddress\par - \fi - \if@wpreport - {\@emph Report type:} WP Leader's Progress Report\par - {\@emph WP number:} \@WorkPackage\par - \vspace{5mm} - {\@emph Name of WP leader:} \@LeaderName\par - {\@emph Institution \& address:} \@InstitutionAddress\par - \fi -} -\vfill -\parbox{\linewidth}{\centering -{Version \@Version}\par - {\@SubmissionDate}\par - \vspace{5mm}} -{ -\newdimen\@msize -\@msize=\linewidth -\advance\@msize by -1cm -\advance\@msize by -6\tabcolsep -\begin{tabular}{ | p{0.7cm} | p{\@msize} | p{0.3cm} |} - \hline - \multicolumn{3}{|c|}{{\@bold Dissemination Level}}\\ - \hline - {\@bold PU} & Public & \@IsPU\\ - \hline - {{\@bold CO}} & Confidential, only for company distribution & \@IsCO\\ - \hline - {\@bold DR} & Draft, not for general circulation & \@IsDR\\ - \hline - \end{tabular} - } -} - -\newcommand{\@PrintCoverPage}{\bgroup\global\setbox255\vbox{% - \vspace*{-.25in}% - \noindent\hspace*{-.25in}% - \renewcommand{\thepage}{\roman{page}} - \pagestyle{myheadings} \markboth{}{} - - \rlap{ - \begin{minipage}[t][\@CoverPageHeight][t]{\@CoverPageWidth}% - \parbox{\linewidth}{ - \begin{minipage}[c]{6cm} - \includegraphics[width=6cm]{iohk-share-logo.jpg} - \end{minipage} - \hfill -% \begin{minipage}[c]{3.5cm} -% \includegraphics[width=3.5cm]{figures/H2020.jpg} -% \end{minipage} - } - \@CoverBody - \end{minipage} - }% -}\egroup\shipout\box255} - - -\newcommand{\@PrintBackCoverPage}{% -\pagestyle{myheadings}% -\markboth{\@Project: \@ShortDelTitle~(v.\@Version, \@ShortSubmissionDate)}% - {\@Project: \@ShortDelTitle~(v.\@Version, \@ShortSubmissionDate)}% -} - - - -\AtBeginDocument{\@PrintCoverPage\@PrintBackCoverPage% - \renewcommand{\thepage}{\roman{page}}% -% \setcounter{page}{1}% -} - -%% Added change log -- KH - -\newcounter{change} - -\newenvironment{changelog}{% -\clearpage -\setcounter{change}{0} -\section*{Change Log} -% -\begin{tabular}{||p{0.8cm}|p{1.6cm}|p{3cm}|p{1.5cm}|p{7.6cm}||}% -\hline\hline% -\textbf{Rev.} & \textbf{Date} & \textbf{Who} & \textbf{Team} & \textbf{What}% -}{% -\\\hline\hline% -\end{tabular}% -\clearpage% -} - -\newcommand{\change}[4]{\stepcounter{change}% -\\\hline% -\arabic{change}} diff --git a/eras/shelley-ma/formal-spec/Makefile b/eras/shelley-ma/formal-spec/Makefile deleted file mode 100644 index 55832d86d26..00000000000 --- a/eras/shelley-ma/formal-spec/Makefile +++ /dev/null @@ -1,50 +0,0 @@ -## -## Makefile for a specification of the delegation rules, based on: -## -## https://tex.stackexchange.com/questions/40738/how-to-properly-make-a-latex-project -## - -# Document name -ifndef DOCNAME - DOCNAME = mary-ledger -endif - -# You want latexmk to *always* run, because make does not have all the info. -# Also, include non-file targets in .PHONY so they are run regardless of any -# file of the given name existing. -.PHONY: $(DOCNAME).pdf all clean - -# The first rule in a Makefile is the one executed by default ("make"). It -# should always be the "all" rule, so that "make" and "make all" are identical. -all: $(DOCNAME).pdf - -## -## CUSTOM BUILD RULES -## - -## -## MAIN LATEXMK RULE -## - -# -pdf tells latexmk to generate PDF directly (instead of DVI). -# -pdflatex="" tells latexmk to call a specific backend with specific options. -# -use-make tells latexmk to call make for generating missing files. - -# -interaction=nonstopmode keeps the pdflatex backend from stopping at a -# missing file reference and interactively asking you for an alternative. - -$(DOCNAME).pdf: $(DOCNAME).tex - latexmk -pdf -pdflatex="pdflatex -synctex=1 -interaction=nonstopmode" -use-make $(DOCNAME).tex - -watch: $(DOCNAME).tex - latexmk -pvc -pdf -pdflatex="pdflatex -synctex=1 -interaction=nonstopmode" -use-make $(DOCNAME).tex - -clean: - latexmk -CA - -install: - mkdir -pv ${out}/nix-support/ - for i in $(DOCNAME) ; do \ - cp $$i.pdf ${out}/ ; \ - echo "doc-pdf $$i ${out}/$$i.pdf" >> ${out}/nix-support/hydra-build-products ; \ - done diff --git a/eras/shelley-ma/formal-spec/TODO b/eras/shelley-ma/formal-spec/TODO deleted file mode 100644 index 36b31f5c675..00000000000 --- a/eras/shelley-ma/formal-spec/TODO +++ /dev/null @@ -1,14 +0,0 @@ -- Move the properties from the shelley spec over in an appropriate - way. In particular, Lemma 15.2 can be adopted by adding a forged - value to a block. - -- Finalize `valueSize`. We need to decide if it should count the - number of pid's. The tradeoff here is accuracy vs. ease of - explanation. Without counting the pid's, one can increase the size - of a Value by roughly a factor of 2 over what we count, which - weakens the protection against attacks somewhat (but the attacker - has to supply lots of scripts in their transaction, increasing the - txsize, which might compensate for this a bit). However, there is - some value in keeping the minValue calculation as easy as possible, - and having 'some constant amount plus some amount for every non-ada - token' is easily understood. diff --git a/eras/shelley-ma/formal-spec/chain.tex b/eras/shelley-ma/formal-spec/chain.tex deleted file mode 100644 index e5c72f055c8..00000000000 --- a/eras/shelley-ma/formal-spec/chain.tex +++ /dev/null @@ -1,84 +0,0 @@ -\section{Blockchain layer} -\label{sec:chain} - -\newcommand{\Proof}{\type{Proof}} -\newcommand{\Seedl}{\mathsf{Seed}_\ell} -\newcommand{\Seede}{\mathsf{Seed}_\eta} -\newcommand{\activeSlotCoeff}[1]{\fun{activeSlotCoeff}~ \var{#1}} -\newcommand{\slotToSeed}[1]{\fun{slotToSeed}~ \var{#1}} - -\newcommand{\T}{\type{T}} -\newcommand{\vrf}[3]{\fun{vrf}_{#1} ~ #2 ~ #3} -\newcommand{\verifyVrf}[4]{\fun{verifyVrf}_{#1} ~ #2 ~ #3 ~#4} - -\newcommand{\HashHeader}{\type{HashHeader}} -\newcommand{\HashBBody}{\type{HashBBody}} -\newcommand{\bhHash}[1]{\fun{bhHash}~ \var{#1}} -\newcommand{\bHeaderSize}[1]{\fun{bHeaderSize}~ \var{#1}} -\newcommand{\bSize}[1]{\fun{bSize}~ \var{#1}} -\newcommand{\bBodySize}[1]{\fun{bBodySize}~ \var{#1}} -\newcommand{\OCert}{\type{OCert}} -\newcommand{\BHeader}{\type{BHeader}} -\newcommand{\BHBody}{\type{BHBody}} - -\newcommand{\bheader}[1]{\fun{bheader}~\var{#1}} -\newcommand{\hsig}[1]{\fun{hsig}~\var{#1}} -\newcommand{\bprev}[1]{\fun{bprev}~\var{#1}} -\newcommand{\bhash}[1]{\fun{bhash}~\var{#1}} -\newcommand{\bvkcold}[1]{\fun{bvkcold}~\var{#1}} -\newcommand{\bseedl}[1]{\fun{bseed}_{\ell}~\var{#1}} -\newcommand{\bprfn}[1]{\fun{bprf}_{n}~\var{#1}} -\newcommand{\bseedn}[1]{\fun{bseed}_{n}~\var{#1}} -\newcommand{\bprfl}[1]{\fun{bprf}_{\ell}~\var{#1}} -\newcommand{\bocert}[1]{\fun{bocert}~\var{#1}} -\newcommand{\bnonce}[1]{\fun{bnonce}~\var{#1}} -\newcommand{\bleader}[1]{\fun{bleader}~\var{#1}} -\newcommand{\hBbsize}[1]{\fun{hBbsize}~\var{#1}} -\newcommand{\bbodyhash}[1]{\fun{bbodyhash}~\var{#1}} -\newcommand{\overlaySchedule}[4]{\fun{overlaySchedule}~\var{#1}~\var{#2}~{#3}~\var{#4}} - -\newcommand{\PrtclState}{\type{PrtclState}} -\newcommand{\PrtclEnv}{\type{PrtclEnv}} -\newcommand{\OverlayEnv}{\type{OverlayEnv}} -\newcommand{\VRFState}{\type{VRFState}} -\newcommand{\NewEpochEnv}{\type{NewEpochEnv}} -\newcommand{\NewEpochState}{\type{NewEpochState}} -\newcommand{\PoolDistr}{\type{PoolDistr}} -\newcommand{\BBodyEnv}{\type{BBodyEnv}} -\newcommand{\BBodyState}{\type{BBodyState}} -\newcommand{\RUpdEnv}{\type{RUpdEnv}} -\newcommand{\ChainEnv}{\type{ChainEnv}} -\newcommand{\ChainState}{\type{ChainState}} -\newcommand{\ChainSig}{\type{ChainSig}} - -No translation between Shelley and Allegra chain state types -are required to transition between the eras. -A Shelley $\Tx$ can be decoded as an Allegra one, including decoding a -multi-sig script as a timelock one (the difference between them -is that timelock scripts have additional constructurs). -The one type that changes during era transition is only part of the transaction, -but does not appear in the chain state. - -In Figure~\ref{fig:functions:to-ma}, we give the function $\fun{translateEra}$ that -specifies the translation of an Allegra-era chain state into a chain state that provides multi-asset support -(the Mary era). -We use $\ChainState_{\mathsf{Allegra}}$ to denote the type of the chain state -in the Allegra era, and $\ChainState$ for the Mary era chain state. -We use the notation $\var{chainstate}_x$ to represent -variable $x$ in the chain state. We do not specify the variables that remain -unchanged during the transition. -The only part of the state that is affected by the era transition is the UTxO, as -each UTxO map entry must be updated to contain a $\Value$ instead of $\Coin$. - -%% -%% Figure - Allegra to Mary Transition -%% -\begin{figure}[htb] - \begin{align*} - & \fun{translateEra} ~\in~ \ChainState_{\mathsf{Allegra}} \to \ChainState \\ - & \fun{translateEra}~(\var{chainstate}_{\var{utxo}}) ~=~ \{~ \var{txin} \mapsto (a,\fun{inject}~c) ~\vert~ - \var{txin} \mapsto \var{(a,c)}\in ~\var{utxo}~\} - \end{align*} - \caption{Allegra to Multi-Asset Chain State Transtition} - \label{fig:functions:to-ma} -\end{figure} diff --git a/eras/shelley-ma/formal-spec/epoch.tex b/eras/shelley-ma/formal-spec/epoch.tex deleted file mode 100644 index c0d766880a6..00000000000 --- a/eras/shelley-ma/formal-spec/epoch.tex +++ /dev/null @@ -1,71 +0,0 @@ -\section{Rewards and the Epoch Boundary} -\label{sec:epoch} - -\newcommand{\UTxOEpState}{\type{UTxOEpState}} -\newcommand{\Acnt}{\type{Acnt}} -\newcommand{\PlReapState}{\type{PlReapState}} -\newcommand{\NewPParamEnv}{\type{NewPParamEnv}} -\newcommand{\Snapshots}{\type{Snapshots}} -\newcommand{\SnapshotEnv}{\type{SnapshotEnv}} -\newcommand{\SnapshotState}{\type{SnapshotState}} -\newcommand{\NewPParamState}{\type{NewPParamState}} -\newcommand{\EpochState}{\type{EpochState}} -\newcommand{\BlocksMade}{\type{BlocksMade}} -\newcommand{\Snapshot}{\type{Snapshot}} -\newcommand{\RewardUpdate}{\type{RewardUpdate}} - -\newcommand{\obligation}[4]{\fun{obligation}~ \var{#1}~ \var{#2}~ \var{#3}~ \var{#4}} -\newcommand{\reward}[7]{\fun{reward} - ~ \var{#1}~ \var{#2}~ \var{#3}~ \var{#4}~ \var{#5}~ \var{#6}~ \var{#7}} -\newcommand{\rewardOnePool}[9]{\fun{rewardOnePool} - ~\var{#1}~\var{#2}~\var{#3}~\var{#4}~\var{#5}~\var{#6}~\var{#7}~\var{#8}~\var{#9}} -\newcommand{\isActive}[4]{\fun{isActive}~ \var{#1}~ \var{#2}~ \var{#3}~ \var{#4}} -\newcommand{\activeStake}[5]{\fun{activeStake}~ \var{#1}~ \var{#2}~ \var{#3}~ \var{#4}~ \var{#5}} -\newcommand{\poolRefunds}[3]{\fun{poolRefunds}~ \var{#1}~ \var{#2}~ \var{#3}} -\newcommand{\poolStake}[3]{\fun{poolStake}~ \var{#1}~ \var{#2}~ \var{#3}} -\newcommand{\stakeDistr}[3]{\fun{stakeDistr}~ \var{#1}~ \var{#2}~ \var{#3}} -\newcommand{\lReward}[4]{\fun{r_{operator}}~ \var{#1}~ \var{#2}~ \var{#3}~ {#4}} -\newcommand{\mReward}[4]{\fun{r_{member}}~ \var{#1}~ \var{#2}~ \var{#3}~ {#4}} -\newcommand{\poolReward}[5]{\fun{poolReward}~\var{#1}~{#2}~\var{#3}~\var{#4}~\var{#5}} -\newcommand{\createRUpd}[2]{\fun{createRUpd}~\var{#1}~\var{#2}} - -In order to handle rewards and staking, we must change the stake distribution -calculation function to add up only the Ada in the UTxO - before performing any calculations. In Figure~\ref{fig:functions:stake-distribution} - below, we do so using the function $\fun{utxoAda}$, which returns the amount of Ada - in an address. - -%% -%% Figure Functions for Stake Distribution -%% -\begin{figure}[htb] - \emph{Helper functions} - % - \begin{align*} - & \fun{utxoAda} \in \UTxO \to \Addr \to \Coin \\ - & \fun{utxoAda}~{\var{utxo}}~\var{addr} ~=~\sum_{\var{out} \in \range \var{utxo}, \fun{getAddr}~\var{out} = \var{addr}} \fun{getCoin}~\var{out} - \end{align*} - % - \emph{Stake Distribution (using functions and maps as relations)} - % - \begin{align*} - & \fun{stakeDistr} \in \UTxO \to \DState \to \PState \to \Snapshot \\ - & \fun{stakeDistr}~{utxo}~{dstate}~{pstate} = \\ - & ~~~~ \big((\dom{\var{activeDelegs}}) - \restrictdom\left(\fun{aggregate_{+}}~\var{stakeRelation}\right), - ~\var{delegations},~\var{poolParams}\big)\\ - & \where \\ - & ~~~~ (~\var{rewards},~\var{delegations},~\var{ptrs},~\wcard,~\wcard,~\wcard) - = \var{dstate} \\ - & ~~~~ (~\var{poolParams},~\wcard,~\wcard) = \var{pstate} \\ - & ~~~~ \var{stakeRelation} = \left( - \left(\fun{stakeCred_b}^{-1}\cup\left(\fun{addrPtr}\circ\var{ptr}\right)^{-1}\right) - \circ\left(\hldiff{\fun{utxoAda}}~{\var{utxo}}\right) - \right) - \cup \var{rewards} \\ - & ~~~~ \var{activeDelegs} = - (\dom{rewards}) \restrictdom \var{delegations} \restrictrange (\dom{poolParams}) - \end{align*} - \caption{Stake Distribution Function} - \label{fig:functions:stake-distribution} -\end{figure} diff --git a/eras/shelley-ma/formal-spec/flake.nix b/eras/shelley-ma/formal-spec/flake.nix deleted file mode 100644 index 31a35d2d2d8..00000000000 --- a/eras/shelley-ma/formal-spec/flake.nix +++ /dev/null @@ -1,30 +0,0 @@ -{ - outputs = inputs: { - packages = - builtins.mapAttrs (_: {nixpkgs, ...}: { - default = with nixpkgs; - buildLatex { - name = "shelley-ma-spec"; - texFiles = ["mary-ledger"]; - meta = with lib; { - description = "Shelley multi-asset specification"; - license = licenses.asl20; - platforms = platforms.linux; - }; - src = filterLatex ./.; - - texInputs = { - inherit - (texlive) - scheme-small - collection-latexextra - collection-latexrecommended - collection-mathscience - bclogo - ; - }; - }; - }) - (inputs.main or (import ../../../nix/flake-compat.nix).defaultNix).legacyPackages; - }; -} diff --git a/eras/shelley-ma/formal-spec/frontmatter.tex b/eras/shelley-ma/formal-spec/frontmatter.tex deleted file mode 100644 index a3d6390de41..00000000000 --- a/eras/shelley-ma/formal-spec/frontmatter.tex +++ /dev/null @@ -1,51 +0,0 @@ -\hypersetup{ - pdftitle={Formal Specification of the Cardano Ledger with a Native - Multi-Asset Implementation}, - breaklinks=true, - bookmarks=true, - colorlinks=false, - linkcolor={blue}, - citecolor={blue}, - urlcolor={blue}, - linkbordercolor={white}, - citebordercolor={white}, - urlbordercolor={white} -} - -\title{Formal Specification of the Cardano Ledger with a Native -Multi-Asset Implementation} -\renewcommand{\thepage}{\arabic{page}} -\setcounter{page}{1} - -\author{ - Polina Vinogradova \\ {\small \texttt{polina.vinogradova@iohk.io}} \\ - Andre Knispel \\ {\small \texttt{andre.knispel@iohk.io}} \\ - } - -\date{} - -\maketitle - -\begin{abstract} -This document presents modifications to the Shelley ledger -specification -(see~\cite{shelley_spec}) that enable it to support native -Multi-Assets (see~\cite{multi_currency}) -using a small scripting language that is fully specified -by the ledger rules. -\end{abstract} - -\section*{List of Contributors} -\label{acknowledgements} - -Alex Byaly, -Manuel Chakravarty, -Nicholas Clarke, -Jared Corduan, -Duncan Coutts, -Matthias G\"{u}demann, -Kevin Hammond, -Philipp Kant, -Jann Mueller, -Michael Peyton Jones, -Tim Sheard diff --git a/eras/shelley-ma/formal-spec/introduction.tex b/eras/shelley-ma/formal-spec/introduction.tex deleted file mode 100644 index 2c4f5b9cb93..00000000000 --- a/eras/shelley-ma/formal-spec/introduction.tex +++ /dev/null @@ -1,58 +0,0 @@ -\section{Introduction} - -This document gives a specification of the changes -required to implement a both an Allegra-era and a Mary-era ledger. These ledgers share -a specification (and can share an implementation), with the exception of -a difference in one particular type. We abstract over this type and several -functions specific to it, which allows us to write a single specification for both versions of the -ledger, to which we refer as a \emph{ShelleyMA ledger specification}. - -All aspects of the ledger not given in this document are as specified -in the Shelley ledger design and implementation~\cite{shelley_spec}. -Only additions and replacements of definitions of Shelley types, functions, rules, and transitions -are given here. Replacements are always given the same name as the -original definition in the Shelley specification, eg. the $\mathsf{UTXO}$ rule in the -Shelley specification is replaced with the $\mathsf{UTXO}$ rule given here. - -\subsection{ShelleyMA, Allegra and Mary Eras} - -The additional functionality that is introduced in the Allegra and Mary eras -is as follows : - -\begin{itemize} - \item \emph{Allegra} : Timelock scripts replace multi-signature scripts as the native - ledger-iterpreted script type. This type of script, in addition to the - clauses of the m-of-n multi-signature language, has constructors that - allow users to constrain the upper and lower slots of the validity of a - clause of the script. For example, one may specify that up to a given slot $s$, - either key $k$ or $k'$ can sign the transaction for the script to be valid, - whereas from $s$ onwards, only $k$'s signature can make the script valid. - - \item \emph{Mary} : Multi-asset support is added to the Allegra ledger, ie. - to the Shelley ledger with timelock scripts. This includes changes to - ledger accounting to accommodate multiple types of assets, as well as - support for minting and burning of user-defined assets. This approach - taken here was described initially in \cite{utxo_ma}. -\end{itemize} - -Adding both timelock script and multi-asset support is done in a single specification -of the ShelleyMA ledger, as the transition rules are exactly the same for both -Mary and Allegra. The difference between the two is that all accounting is -done in terms of lovelace, ie. $\Coin$, in the Allegra era, whereas the Mary era -replaces the $\Coin$ type with a type the terms of which are bundles of arbitrary assets -(user-defined ones, as well as lovelace), which we call $\Value$. - -In this specification, we represent all the places where the $\Coin$ type is used in Allegra, -and the $\Value$ type in Mary using an algebraic structure called a Token algebra. We choose -an abstract but fixed Token algebra $\ValMonoid$ for most of this specification. -See Section \ref{sec:coin-ma} for details. - -This -\begin{itemize} - \item makes this document is a specification for Allegra if $\ValMonoid = \Coin$, and - \item makes it a specification for Mary if $\ValMonoid = \Value$. -\end{itemize} - -Note that this specification is for two distinct eras, but we give only one translations, which is -from Shelley to Mary, see Section \ref{sec:chain}. This is because no changes to -chain or ledger types are required for Allegra. diff --git a/eras/shelley-ma/formal-spec/iohk-share-logo.jpg b/eras/shelley-ma/formal-spec/iohk-share-logo.jpg deleted file mode 100644 index 9c864e184c9115ae3013c592fcbec14b8d4410be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9689 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 Gng0VXU1MYb diff --git a/eras/shelley-ma/formal-spec/iohk.sty b/eras/shelley-ma/formal-spec/iohk.sty deleted file mode 100644 index 71a1dc5b1fb..00000000000 --- a/eras/shelley-ma/formal-spec/iohk.sty +++ /dev/null @@ -1,46 +0,0 @@ -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{iohk}[2018/10/18] - -\RequirePackage{amssymb} -\RequirePackage{extarrows} -\RequirePackage{slashed} -\RequirePackage[tikz]{bclogo} -\RequirePackage{stmaryrd} - -\DeclareMathOperator{\dom}{dom} -\DeclareMathOperator{\range}{range} - -\newcommand{\powerset}[1]{\ensuremath{\mathbb{P}~#1}} -\newcommand{\restrictdom}{\ensuremath{\lhd}} -\newcommand{\subtractdom}{\ensuremath{\mathbin{\slashed{\restrictdom}}}} -\newcommand{\restrictrange}{\ensuremath{\rhd}} -\newcommand{\subtractrange}{\ensuremath{\mathbin{\slashed{\restrictrange}}}} -\newcommand{\union}{\ensuremath{\cup}} -\newcommand{\unionoverrideRight}{\ensuremath{\mathbin{\underrightarrow\cup}}} -\newcommand{\unionoverrideLeft}{\ensuremath{\mathbin{\underleftarrow\cup}}} -\newcommand{\unionoverridePlus}{\ensuremath{\mathbin{\cup_{+}}}} -\newcommand{\unionoverrideZero}{\ensuremath{\mathbin{\cup_{0}}}} -\newcommand{\uniondistinct}{\ensuremath{\uplus}} -\newcommand{\var}[1]{\ensuremath{\mathit{#1}}} -\newcommand{\fun}[1]{\ensuremath{\mathsf{#1}}} -\newcommand{\type}[1]{\ensuremath{\mathsf{#1}}} -\newcommand{\signed}[2]{\ensuremath{\llbracket #1 \rrbracket_{#2}}} -\newcommand{\size}[1]{\ensuremath{\left| #1 \right|}} -\newcommand{\trans}[2]{\ensuremath{\xlongrightarrow[\textsc{#1}]{#2}}} -\newcommand{\seqof}[1]{\ensuremath{#1^{*}}} -\newcommand{\nextdef}{\ensuremath{\\[1em]}} -\newcommand{\where}{\ensuremath{~ ~ \mathbf{where}~ ~ }} - -\newcommand{\varUpdate}[1]{\boldsymbol{\color{Violet}#1}} - -\newenvironment{question} - {\begin{bclogo}[logo=\bcquestion, couleur=orange!10, arrondi=0.2]{ QUESTION}} - {\end{bclogo}} -%\newenvironment{todo} -% {\begin{bclogo}[logo=\bcoutil, couleur=red!5, couleurBarre=red, arrondi=0.2]{ TODO}} -% {\end{bclogo}} -\newenvironment{note} - {\begin{bclogo}[logo=\bcattention, couleur=orange!10, arrondi=0.2]{ NOTE}} - {\end{bclogo}} - -\endinput diff --git a/eras/shelley-ma/formal-spec/mary-ledger.tex b/eras/shelley-ma/formal-spec/mary-ledger.tex deleted file mode 100644 index 56f8c1300f3..00000000000 --- a/eras/shelley-ma/formal-spec/mary-ledger.tex +++ /dev/null @@ -1,390 +0,0 @@ -\documentclass[11pt,a4paper,dvipsnames]{article} -\usepackage[deliverable]{IOHKCoverPage} - - -\usepackage[margin=2.5cm]{geometry} -\usepackage{iohk} -\usepackage{microtype} -\usepackage{mathpazo} % nice fonts -\usepackage{amsmath} -\usepackage{amssymb} -\usepackage{amsthm} -\usepackage{latexsym} -\usepackage{mathtools} -\usepackage{stmaryrd} -\usepackage{extarrows} -\usepackage{slashed} -\usepackage[colon]{natbib} -\usepackage[unicode=true,pdftex,pdfa,colorlinks=true]{hyperref} -\usepackage{xcolor} -\usepackage[capitalise,noabbrev,nameinlink]{cleveref} -\usepackage{float} -\floatstyle{boxed} -\restylefloat{figure} -\usepackage{tikz} -\usepackage{booktabs} -\usepackage{enumerate} -\usepackage{fancyvrb} -\usepackage{xcolor} - - -%% -%% Package `semantic` can be used for writing inference rules. -%% -\usepackage{semantic} -%% Setup for the semantic package -\setpremisesspace{20pt} - -% data for Deliverable header -- added by KH from an EU H2020 project template -\DeliverableNumber{GL-D1} -\DeliverableTitle{A Formal Specification of the Cardano Ledger with a Native Multi-Asset Implementation} - {Formal Cardano Ledger with Multi-Asset Spec.} - -\DeliverableResponsible{Formal Methods Team} - -\DueDate{31$^{\textrm{st}}$ July 2020} - -\SubmissionDate{20$^{\textrm{st}}$ August 2020}{20$^{\textrm{st}}$ August 2020} - -\Authors{ - Polina Vinogradova \quad \texttt{polina.vinogradova@iohk.io} \\ - Andre Knispel \quad \texttt{andre.knispel@iohk.io} -} - -\EditorName{Polina Vinogradova} -\LeaderName{Philipp Kant, \IOHK} -\InstitutionAddress{\IOHK} -\Version{1.0} -\Project{Goguen Ledger} -\DisseminationPU - -%% -%% Types -%% -\newcommand{\Nothing}{\ensuremath{\Diamond}} -\newcommand{\N}{\ensuremath{\mathbb{N}}} -\newcommand{\Bool}{\type{Bool}} -\newcommand{\Npos}{\ensuremath{\mathbb{N}^{+}}} -\newcommand{\Z}{\ensuremath{\mathbb{Z}}} -\newcommand{\R}{\ensuremath{\mathbb{R}}} -\newcommand{\Rnn}{\ensuremath{\mathbb{R}^{\geq 0}}} -\newcommand{\Tx}{\type{Tx}} -\newcommand{\ShelleyTx}{\type{ShelleyTx}} -\newcommand{\GoguenTx}{\type{GoguenTx}} -\newcommand{\TxBody}{\type{TxBody}} -\newcommand{\UnsignedData}{\type{UnsignedData}} -\newcommand{\VldSR}{\type{VldSR}} -\newcommand{\VldOut}{\type{VldOut}} -\newcommand{\Vlds}{\type{Vlds}} -\newcommand{\TxWitness}{\type{TxWitness}} -\newcommand{\Ix}{\type{Ix}} -\newcommand{\RdmrPtr}{\type{RdmrPtr}} -\newcommand{\TxId}{\type{TxId}} -\newcommand{\Addr}{\type{Addr}} -\newcommand{\UTxO}{\type{UTxO}} -\newcommand{\UTxOIn}{\type{UTxOIn}} -\newcommand{\UTxOOut}{\type{UTxOOut}} -\newcommand{\Wdrl}{\type{Wdrl}} -\newcommand{\Coin}{\type{Coin}} -\newcommand{\PParams}{\type{PParams}} -\newcommand{\ShelleyPParams}{\type{ShelleyPParams}} -\newcommand{\NewParams}{\type{NewParams}} -\newcommand{\Slot}{\type{Slot}} -\newcommand{\SlotsPrior}{\ensuremath{\mathsf{SlotsPrior}}} -\newcommand{\SlotsPerEpoch}{\mathsf{SlotsPerEpoch}} -\newcommand{\SlotsPerKESPeriod}{\mathsf{SlotsPerKESPeriod}} -\newcommand{\SlotsStabilityParam}{\fun{k}} -\newcommand{\Duration}{\type{Duration}} -\newcommand{\StakePools}{\type{StakePools}} -\newcommand{\StakeDeleg}{\type{StakeDeleg}} -\newcommand{\StakeCreds}{\type{StakeCreds}} -\newcommand{\Seed}{\type{Seed}} -\newcommand{\seedOp}{\star} -\newcommand{\Ppm}{\type{Ppm}} -\newcommand{\Value}{\type{Value}} -\newcommand{\Integer}{\type{Integer}} -\newcommand{\ValMonoid}{\mathbf{TA}} -\newcommand{\ProtVer}{\ensuremath{\type{ProtVer}}} -\newcommand{\Language}{\type{Language}} -\newcommand{\ApName}{\ensuremath{\type{ApName}}} -\newcommand{\ApVer}{\ensuremath{\type{ApVer}}} -\newcommand{\SystemTag}{\ensuremath{\type{SystemTag}}} -\newcommand{\InstallerHash}{\ensuremath{\type{InstallerHash}}} -\newcommand{\PPUpdate}{\type{PPUpdate}} -\newcommand{\Applications}{\type{Applications}} -\newcommand{\AVUpdate}{\type{AVUpdate}} -\newcommand{\Update}{\type{Update}} -\newcommand{\DCert}{\type{DCert}} -\newcommand{\DCertRegKey}{\type{DCert_{regkey}}} -\newcommand{\DCertDeRegKey}{\type{DCert_{deregkey}}} -\newcommand{\DCertDeleg}{\type{DCert_{delegate}}} -\newcommand{\DCertRegPool}{\type{DCert_{regpool}}} -\newcommand{\DCertRetirePool}{\type{DCert_{retirepool}}} -\newcommand{\DCertGen}{\type{DCert_{genesis}}} -\newcommand{\DCertMir}{\type{DCert_{mir}}} -\newcommand{\PoolParam}{\type{PoolParam}} -\newcommand{\UTxOState}{\ensuremath{\type{UTxOState}}} -\newcommand{\SFState}{\ensuremath{\type{SFState}}} -\newcommand{\ledgerState}{\ensuremath{\type{ledgerState}}} -\newcommand{\ValEnv}{\type{ValEnv}} -\newcommand{\ValState}{\type{ValState}} -\newcommand{\ScrInData}{\type{ScrInData}} -\newcommand{\AddrRWD}{\type{Addr_{rwd}}} -\newcommand{\AddrB}{\type{Addr_{base}}} -\newcommand{\AddrP}{\type{Addr_{ptr}}} -\newcommand{\AddrE}{\type{Addr_{enterprise}}} -\newcommand{\AddrBS}{\type{Addr_{bootstrap}}} -\newcommand{\Ptr}{\type{Ptr}} -\newcommand{\DState}{\type{DState}} -\newcommand{\DWEnv}{\type{DWEnv}} -\newcommand{\DPSEnv}{\type{DPSEnv}} -\newcommand{\DPEnv}{\type{DPEnv}} -\newcommand{\DEnv}{\type{DEnv}} -\newcommand{\PEnv}{\type{PEnv}} -\newcommand{\DPState}{\type{DPState}} -\newcommand{\PState}{\type{PState}} -\newcommand{\DCertBody}{\type{DCertBody}} -\newcommand{\TData}{\type{TData}} -\newcommand{\DPoolReap}{\ensuremath{\type{poolreap}}} -\newcommand{\UPIState}{\type{UPIState}} -\newcommand{\UpdatePayload}{\type{UpdatePayload}} -\newcommand{\NetworkId}{\mathsf{NetworkId}} -\newcommand{\MemoryEstimate}{\type{MemoryEstimate}} - -% multi-signature -\newcommand{\StakeCredential}{\type{Credential}_{stake}} -\newcommand{\StakeDelegs}{\type{StakeDelegs}} -\newcommand{\Quorum}{\type{Quorum}} - -\newcommand{\txwitsVKey}[1]{\fun{txwitsVKey}~\var{#1}} -\newcommand{\txwitsScript}[1]{\fun{txwitsScript}~\var{#1}} - -\newcommand{\AddrVKey}{\type{Addr^{vkey}}} -\newcommand{\AddrRWDVKey}{\type{Addr_{rwd}^{vkey}}} -\newcommand{\AddrRWDScr}{\type{Addr_{rwd}^{script}}} -\newcommand{\AddrVKeyB}{\type{Addr^{vkey}_{base}}} -\newcommand{\AddrVKeyP}{\type{Addr^{vkey}_{ptr}}} -\newcommand{\AddrVKeyE}{\type{Addr^{vkey}_{enterprise}}} -\newcommand{\AddrVKeyBS}{\type{Addr^{vkey}_{bootstrap}}} -\newcommand{\AddrScr}{\type{Addr^{script}}} -\newcommand{\AddrScrBase}{\type{Addr_{base}^{script}}} -\newcommand{\AddrScrEnterprise}{\type{Addr_{enterprise}^{script}}} -\newcommand{\AddrScrPtr}{\type{Addr_{ptr}^{script}}} -\newcommand{\AuxiliaryData}{\type{AuxiliaryData}} -\newcommand{\AuxiliaryDataHash}{\type{AuxiliaryDataHash}} -\newcommand{\Metadata}{\type{Metadata}} -\newcommand{\DataHash}{\type{DataHash}} -\newcommand{\ScriptHash}{\type{ScriptHash}} -\newcommand{\PolicyID}{\type{PolicyID}} -\newcommand{\AdaIDType}{\type{AdaIDType}} -\newcommand{\AdaID}{\type{AdaID}} -\newcommand{\PPHash}{\type{PPHash}} -\newcommand{\RdmrsHash}{\type{RdmrsHash}} -\newcommand{\Script}{\type{Script}} -\newcommand{\ScriptPlutus}{\type{Script}_{plc}} -\newcommand{\ScriptNI}{\type{Script^{native}_{v1}}} -\newcommand{\Timelock}{\type{Script^{native}_{v2}}} -\newcommand{\ScriptMSig}{\type{Script}_{msig}} -\newcommand{\ScriptV}{\type{Script_{v}}} -\newcommand{\Datum}{\type{Datum}} -\newcommand{\Rdmr}{\type{Rdmr}} -\newcommand{\CurItem}{\type{CurItem}} -\newcommand{\Rdmrs}{\type{Rdmrs}} -\newcommand{\DorR}{\type{DorR}} -\newcommand{\ValidationData}{\type{ValidationData}} -\newcommand{\IsValidating}{\type{IsValidating}} -\newcommand{\HashUnsData}{\type{HashUnsData}} -\newcommand{\True}{\type{True}} -\newcommand{\False}{\type{False}} -\newcommand{\MSig}{\type{MSig}} -\newcommand{\Credential}{\type{Credential}} -\newcommand{\AssetID}{\type{AssetID}} -\newcommand{\AssetName}{\type{AssetName}} -\newcommand{\Quantity}{\type{Quantity}} -\newcommand{\QuantityPM}{\type{Quantity}^{\pm}} -\newcommand{\ValuePM}{\type{Value}^{\pm}} - -%% Adding witnesses -\newcommand{\TxIn}{\type{TxIn}} -\newcommand{\OutRef}{\type{OutRef}} -\newcommand{\ShelleyTxIn}{\type{ShelleyTxIn}} -\newcommand{\ShelleyTxOut}{\type{ShelleyTxOut}} -\newcommand{\ShelleyUTxO}{\type{ShelleyUTxO}} -\newcommand{\ShelleyChainState}{\type{ShelleyChainState}} -\newcommand{\HasDV}{\type{HasDV}} -\newcommand{\TxInScr}{\type{TxInScr}} -\newcommand{\Info}{\type{Info}} -\newcommand{\ExUnits}{\type{ExUnits}} -\newcommand{\CostMod}{\type{CostMod}} -\newcommand{\Prices}{\type{Prices}} -\newcommand{\ByteString}{\type{ByteString}} -\newcommand{\IsFee}{\type{IsFee}} -\newcommand{\TxOut}{\type{TxOut}} -\newcommand{\OutFoo}{\type{OutFoo}} -\newcommand{\TxOutND}{\type{TxOutND}} -\newcommand{\TxOutP}{\type{TxOutP}} -\newcommand{\VKey}{\type{VKey}} -\newcommand{\VKeyEv}{\type{VKey_{ev}}} -\newcommand{\VKeyGen}{\type{VKey_G}} -\newcommand{\SKey}{\type{SKey}} -\newcommand{\SKeyEv}{\type{SKey_{ev}}} -\newcommand{\KeyHash}{\type{KeyHash}} -\newcommand{\KeyHashGen}{\type{KeyHash_G}} -\newcommand{\KeyPair}{\type{KeyPair}} -\newcommand{\KeyPairEv}{\type{KeyPair_{ev}}} -\newcommand{\Sig}{\type{Sig}} -\newcommand{\Data}{\type{Data}} -%% Adding delegation -\newcommand{\Epoch}{\type{Epoch}} -\newcommand{\KESPeriod}{\type{KESPeriod}} -%% Blockchain -\newcommand{\Gkeys}{\var{G_{keys}}} -\newcommand{\Block}{\type{Block}} -\newcommand{\SlotId}{\type{SlotId}} -\newcommand{\PPUpdateEnv}{\type{PPUpdateEnv}} -\newcommand{\AVUpdateEnv}{\type{AVUpdateEnv}} -\newcommand{\AVUpdateState}{\type{AVUpdateState}} -\newcommand{\UpdateEnv}{\type{UpdateEnv}} -\newcommand{\UpdateState}{\type{UpdateState}} -\newcommand{\UTxOEnv}{\type{UTxOEnv}} -\newcommand{\CEEnv}{\type{CEEnv}} -\newcommand{\CEState}{\type{CEState}} -\newcommand{\BDEnv}{\type{BDEnv}} -\newcommand{\BDState}{\type{BDState}} -\newcommand{\LEnv}{\type{LEnv}} -\newcommand{\LState}{\type{LState}} -\newcommand{\GoguenChainState}{\type{GoguenChainState}} -%% -%% Functions -%% -\newcommand{\txins}[1]{\fun{txins}~ \var{#1}} -\newcommand{\txouts}[1]{\fun{txouts}~ \var{#1}} -\newcommand{\txcerts}[1]{\fun{txcerts}~ \var{#1}} -\newcommand{\txid}[1]{\fun{txid}~ \var{#1}} -\newcommand{\outs}[1]{\fun{outs}~ \var{#1}} -\newcommand{\values}[1]{\fun{values}~ #1} -\newcommand{\ubalance}[1]{\fun{ubalance}~ \var{#1}} -\newcommand{\txttl}[1]{\fun{txttl}~ \var{#1}} -\newcommand{\firstSlot}[1]{\fun{firstSlot}~ \var{#1}} -\newcommand{\totalDeposits}[3]{\fun{totalDeposits}~ \var{#1} ~ \var{#2} ~ \var{#3}} -\newcommand{\decayedKey}[4]{\fun{decayedKey}~ \var{#1}~ \var{#2}~ \var{#3}~ \var{#4}} -\newcommand{\decayedTx}[3]{\fun{decayedTx}~ \var{#1}~ \var{#2}~ \var{#3}} -\newcommand{\keyRefund}[6]{\fun{keyRefund}~ {#1}~{#2}~{#3}~\var{#4}~\var{#5}~\var{#6}} -\newcommand{\refund}[4]{\fun{refund}~ \var{#1}~ \var{#2}~ {#3}~ {#4}} -\newcommand{\keyRefunds}[2]{\fun{keyRefunds}~ \var{#1}~ \var{#2}} -\newcommand{\consumed}[2]{\fun{consumed}~ \var{#1}~ \var{#2}} -\newcommand{\produced}[2]{\fun{produced}~ \var{#1}~ \var{#2}} -\newcommand{\applyFun}[2]{\fun{#1}~\var{#2}} - -\newcommand{\RegKey}[1]{\textsc{RegKey}(#1)} -\newcommand{\DeregKey}[1]{\textsc{DeregKey}(#1)} -\newcommand{\Delegate}[1]{\textsc{Delegate}(#1)} -\newcommand{\RegPool}[1]{\textsc{RegPool}(#1)} -\newcommand{\RetirePool}[1]{\textsc{RetirePool}(#1)} -\newcommand{\cwitness}[1]{\fun{cwitness}~ \var{#1}} -\newcommand{\dpool}[1]{\fun{dpool}~ \var{#1}} -\newcommand{\poolParam}[1]{\fun{poolParam}~ \var{#1}} -\newcommand{\retire}[1]{\fun{retire}~ \var{#1}} -\newcommand{\addrRw}[1]{\fun{addr_{rwd}}~ \var{#1}} -\newcommand{\epoch}[1]{\fun{epoch}~\var{#1}} -\newcommand{\kesPeriod}[1]{\fun{kesPeriod}~\var{#1}} - -%% UTxO witnesses -\newcommand{\inputs}[1]{\fun{inputs}~ \var{#1}} -\newcommand{\txwits}[1]{\fun{txwits}~ \var{#1}} -\newcommand{\verify}[3]{\fun{verify} ~ #1 ~ #2 ~ #3} -\newcommand{\sign}[2]{\fun{sign} ~ #1 ~ #2} -\newcommand{\verifyEv}[4]{\fun{verify_{ev}} ~ #1 ~ #2 ~ #3 ~ #4} -\newcommand{\signEv}[3]{\fun{sign_{ev}} ~ #1 ~ #2 ~ #3} -\newcommand{\serialised}[1]{\llbracket \var{#1} \rrbracket} -\newcommand{\hashKey}[1]{\fun{hashKey}~ \var{#1}} -\newcommand{\txbody}[1]{\fun{txbody}~ \var{#1}} -\newcommand{\txfee}[1]{\fun{txfee}~ \var{#1}} -\newcommand{\txwdrls}[1]{\fun{txwdrls}~ \var{#1}} -\newcommand{\minfee}[2]{\fun{minfee}~ \var{#1}~ \var{#2}} -\newcommand{\slotminus}[2]{\var{#1}~-_{s}~\var{#2}} -\DeclarePairedDelimiter\floor{\lfloor}{\rfloor} -% wildcard parameter -\newcommand{\wcard}[0]{\underline{\phantom{a}}} -%% Adding ledgers... -\newcommand{\utxo}[1]{\fun{utxo}~ #1} -%% Delegation -\newcommand{\delegatesName}{\fun{delegates}} -\newcommand{\delegates}[3]{\delegatesName~#1~#2~#3} -\newcommand{\dwho}[1]{\fun{dwho}~\var{#1}} -\newcommand{\depoch}[1]{\fun{depoch}~\var{#1}} -\newcommand{\dval}{\ensuremath{d_{\mathsf{val}}}} -%% Delegation witnesses -\newcommand{\dbody}[1]{\fun{dbody}~\var{#1}} -\newcommand{\dwit}[1]{\fun{dwit}~\var{#1}} -%% Blockchain -\newcommand{\bwit}[1]{\fun{bwit}~\var{#1}} -\newcommand{\bslot}[1]{\fun{bslot}~\var{#1}} -\newcommand{\bbody}[1]{\fun{bbody}~\var{#1}} -\newcommand{\bhbody}[1]{\fun{bhbody}~\var{#1}} -\newcommand{\bdlgs}[1]{\fun{bdlgs}~\var{#1}} -%% ledgerstate constants -\newcommand{\genesisId}{\ensuremath{Genesis_{Id}}} -\newcommand{\genesisTxOut}{\ensuremath{Genesis_{Out}}} -\newcommand{\genesisUTxO}{\ensuremath{Genesis_{UTxO}}} -\newcommand{\genesisUTxOState}{(\genesisUTxO,\wcard,\wcard,\wcard)} -\newcommand{\emax}{\ensuremath{\mathsf{E_{max}}}} - -\newcommand{\unitInterval}{\ensuremath{[0,~1]}} -\newcommand{\unitIntervalNonNull}{\ensuremath{(0,~1]}} -\newcommand{\nonnegReals}{\ensuremath{[0,~\infty)}} -\newcommand{\posReals}{\ensuremath{(0,~\infty)}} - -\theoremstyle{definition} -\newtheorem{definition}{Definition}[section] -\newtheorem{lemma}[definition]{Lemma} -\newtheorem{theorem}[definition]{Theorem} -\newtheorem{property}{Property}[section] - -\newcommand{\leteq}{\ensuremath{\mathrel{\mathop:}=}} - -\newcommand{\arrow}{\rightarrow} - -\definecolor{hldiffcolor}{rgb}{0.95, 0.93, 0} -\newcommand{\hldiff}[1]{\mathchoice - {\colorbox{hldiffcolor}{$\displaystyle#1$}} - {\colorbox{hldiffcolor}{$\textstyle#1$}} - {\colorbox{hldiffcolor}{$\scriptstyle#1$}} - {\colorbox{hldiffcolor}{$\scriptscriptstyle#1$}}} -\DeclareMathOperator{\supp}{supp} - -\newcommand{\khcomment}[1]{\textbf{ -- KH: #1 -- }} -\renewcommand{\khcomment}[1]{} % For publication - -\begin{document} - -\input{frontmatter} - -\pagebreak -\tableofcontents -\listoffigures - -\include{introduction} -\include{notation} -\include{value} -\include{transactions} - -\include{utxo} - -\include{epoch} - -\include{chain} -\include{properties} - - -\addcontentsline{toc}{section}{References} -\bibliographystyle{plainnat} -\bibliography{references} - -\begin{appendix} - \include{valmonoid-examples} - \include{timelock-language} - \include{value-size} -\end{appendix} - -\end{document} diff --git a/eras/shelley-ma/formal-spec/notation.tex b/eras/shelley-ma/formal-spec/notation.tex deleted file mode 100644 index c41c4945209..00000000000 --- a/eras/shelley-ma/formal-spec/notation.tex +++ /dev/null @@ -1,11 +0,0 @@ -\section{Notation} - -In addition to the notation in the Shelley specification, we use the following notations: - -\begin{description} -\item[Functions with finite support] For a monoid $M$, $A \to_0 M$ - are the functions $f : A \to M$ with finite support, i.e. such that - there exist only finitely many $a \in A$ such that $f a \neq 0$. We - denote the support of $f$ by $\supp f$, which is defined as - $\supp f := \{ a \in A : f a \neq 0 \}$. -\end{description} diff --git a/eras/shelley-ma/formal-spec/properties.tex b/eras/shelley-ma/formal-spec/properties.tex deleted file mode 100644 index 524cf1821bf..00000000000 --- a/eras/shelley-ma/formal-spec/properties.tex +++ /dev/null @@ -1,88 +0,0 @@ -\newcommand{\Val}{\fun{Val}} -\newcommand{\POV}[2]{\ensuremath{\mathsf{PresOfVal}(#1, \mathsf{#2})}} - -\section{Properties} -\label{sec:properties} - -The properties of this section are modifications and additions to the properties of the Shelley ledger. See \cite{shelley_spec} for definitions used here. We need to amend the definition of $\Val$ to the following: - -\begin{equation*} - \Val(x \in \ValMonoid) = x -\end{equation*} -\begin{equation*} - \Val(x \in \Coin) = \fun{inject}~x -\end{equation*} -\begin{equation*} - \Val((\wcard\mapsto (y \in \ValMonoid))^{*}) = \sum y -\end{equation*} - -\begin{lemma} - \label{lemma:utxo-pres-of-value} - For all environments $e$, transactions $t$, and states $s$, $s'$, if - \begin{equation*} - e\vdash s\trans{utxo}{t}s' - \end{equation*} - then - \begin{equation*} - \Val(s) + wm = \Val(s') - \end{equation*} - where $wm = \fun{inject} (\fun{wbalance}~(\fun{txwdrls}~{t})) + \fun{mint}~(\fun{txbody}~{t})$. -\end{lemma} -\begin{proof} - The proof is identical to the corresponding one in the previous - specification, except that unfolding $\fun{consumed}$ gives an - additional $\fun{mint}~{txb}$ term and all $\Coin$ quantities have - to be converted to terms of type $\ValMonoid$. -\end{proof} - -We also need to track the sum of the $\fun{mint}$ fields of all -transactions in a block, for which we write $\fun{mint}(b)$. - -\begin{theorem}[Preservation of Value] - \label{thm:chain-pres-of-value} - For all environments $e$, blocks $b$, and states $s$, $s'$, if - \begin{equation*} - e\vdash s\trans{chain}{b}s' - \end{equation*} - then - \begin{equation*} - \Val(s) + \fun{mint}(b) = \Val(s') - \end{equation*} -\end{theorem} -\begin{proof} - Similar to the corresponding proof in the Shelley specification, - for a given $x$ and transition $\mathsf{TR}$, let \POV{x, TR} - be the statement: - - \begin{tabular}{l} - for all environments $e$, signals $\sigma$, and states $s$, $s'$, - $$ - $e\vdash s\trans{tr}{\sigma}s'~\implies~\Val(s) + x = \Val(s')$. - $$ - \end{tabular} - \noindent - Then, \POV{\fun{mint}~{txb}}{LEDGER} follows from - Lemma~\ref{lemma:utxo-pres-of-value}. By induction, we have \\ - \POV{\fun{mint}(b)}{LEDGERS}. The rest of the proof works as - previously, using \POV{0}{TR} or \POV{\fun{mint}(b)}{TR} as needed. -\end{proof} - -\begin{theorem}[Preservation of Ada] - \label{thm:chain-pres-of-ada} - For all environments $e$, blocks $b$, and states $s$, $s'$, if - \begin{equation*} - e\vdash s\trans{chain}{b}s' - \end{equation*} - then - \begin{equation*} - \fun{coin}(\Val(s)) = \fun{coin}(\Val(s')) - \end{equation*} -\end{theorem} -\begin{proof} - The hypothesis implies that for all transactions $tx$ included in - $b$, there exist some $e_{tx}, s_{tx}$ and $s'_{tx}$ such that - $e_{tx}\vdash s_{tx}\trans{utxo}{tx}s'_{tx}$, so - $\fun{coin}(\fun{mint}~tx) = 0$ for all transactions included - in $b$. This implies $\fun{coin}(\fun{mint}(b)) = 0$, so the - claim follows by Lemma~\ref{thm:chain-pres-of-value}. -\end{proof} diff --git a/eras/shelley-ma/formal-spec/references.bib b/eras/shelley-ma/formal-spec/references.bib deleted file mode 100644 index 303cfcb2740..00000000000 --- a/eras/shelley-ma/formal-spec/references.bib +++ /dev/null @@ -1,109 +0,0 @@ -@misc{small_step_semantics, - label = {CdoSem}, - author = {{Formal Methods Team, IOHK}}, - title = {{Small Step Semantics for Cardano}}, - year = {2018}, - url = {https://github.com/input-output-hk/cardano-chain/blob/master/specs/semantics/latex/small-step-semantics.tex}, -} - -@misc{delegation_design, - label = {alonzoCDDL}, - author = {Ledger Team}, - title = {{Alonzo CDDL}}, - year = {2021}, - url = {https://github.com/intersectmbo/cardano-ledger/tree/master/alonzo/test/cddl-files}, -} - -@misc{delegation_design, - label = {cdoDel}, - author = {Philipp Kant and Lars Br\"unjes and Duncan Coutts}, - title = {{Design Specification for Delegation and Incentives in Cardano}}, - year = {2018}, - url = {https://github.com/intersectmbo/cardano-ledger/tree/master/eras/shelley/design-spec/shelley-delegation.tex}, -} - -@article{chimeric, - author = {Joachim Zahnentferner}, - title = {Chimeric Ledgers: Translating and Unifying UTXO-based and Account-based Cryptocurrencies}, - journal = {Cryptology ePrint Archive, Report 2018/262}, - year = {2018}, - url = {https://eprint.iacr.org/2018/262}, -} - -@article{utxo_scripts, - author = {Joachim Zahnentferner}, - title = {An Abstract Model of UTxO-based Cryptocurrencies with Scripts}, - journal = {Cryptology ePrint Archive, Report 2018/469}, - year = {2018}, - url = {https://eprint.iacr.org/2018/469}, -} - -@article{multi_currency, - author = {Joachim Zahnentferner}, - title = {Multi-Currency Ledgers}, - journal = {??}, - year = {2018}, -} - -@article{shelley_consensus, - author = {{Formal Methods Team, IOHK}}, - title = {{?? - Shelley Consensus}}, - year = {TODO}, -} - -@misc{shelley_spec, - label = {CdoLedger}, - author = {{Formal Methods Team, IOHK}}, - title = {{A Formal Specification of the Cardano Ledger}}, - year = {2019}, - url = {https://github.com/intersectmbo/cardano-ledger/tree/master/eras/shelley/formal-spec/shelley-ledger.tex} -} - -@misc{ouroboros, - label = {CdoProt}, - author = {Aggelos Kiayias and Alexander Russell and Bernardo David and Roman Oliynykov}, - title = {Ouroboros: A Provably Secure Proof-of-Stake Blockchain Protocol}, - howpublished = {Cryptology ePrint Archive, Report 2016/889}, - year = {2016}, - note = {\url{http://eprint.iacr.org/2016/889}}, -} - -@inproceedings{chakravarty2020extended, - title={The extended UTXO model}, - author={Chakravarty, Manuel MT and Chapman, James and MacKenzie, Kenneth and Melkonian, Orestis and Jones, Michael Peyton and Wadler, Philip}, - booktitle={International Conference on Financial Cryptography and Data Security}, - pages={525--539}, - year={2020}, - organization={Springer}, - url={https://iohk.io/en/research/library/papers/the-extended-utxo-model/} -} - -@misc{formal_multicur, -label = {CdoFMCUR}, -author = {{Plutus Team, Ledger Team, IOHK}}, -title = {{A Formal Specification of a UTxO Ledger with Scripts and Multi-Currency}}, -year = {2019}, -url = {https://github.com/intersectmbo/cardano-ledger/blob/master/eras/shelley/formal-spec/scripts-multicurrency.tex} -} - -@misc{utxo_ma, -author = {{Plutus Team, IOHK}}, -title = {{$UTXO_{ma}$: UTXO with Multi-Asset Support}}, -year = {2020}} -} - -@misc{multi_sig, - label = {CdoMSIG}, - author = {{Formal Methods Team, IOHK}}, - title = {{A Formal Specification of a Multi-Signature Scheme using Scripts}}, - year = {2019}, - url = {https://github.com/intersectmbo/cardano-ledger/blob/master/eras/shelley/formal-spec/multi-sig.tex} -} - -@misc{non_int, - label = {CdoNonInt}, - author = {{Matthias Gudemann}}, - title = {{A Specification of the Non-Integral Calculations in the Ledger}}, - year = {2019}, - url = {https://github.com/intersectmbo/cardano-ledger/releases/latest/download/non-integer-calculations.pdf} -} diff --git a/eras/shelley-ma/formal-spec/timelock-language.tex b/eras/shelley-ma/formal-spec/timelock-language.tex deleted file mode 100644 index 2a15d563391..00000000000 --- a/eras/shelley-ma/formal-spec/timelock-language.tex +++ /dev/null @@ -1,197 +0,0 @@ -\section{Script Constructors and Evaluation} -\label{sec:timelock-lang} - - -\begin{figure}[htb] - \begin{align*} - \fun{validateScript} & \in\Script\to\Tx\to\Bool \\ - \fun{validateScript} ~s~\var{tx}~& =~ - \fun{evalTimelock}~\var{vhks} ~\var{itr}~\var{s} \\ - & ~~~~\where \\ - & ~~~~~~~~\var{vhks}\leteq \{\fun{hashKey}~vk \vert - vk \in \dom(\fun{txwitsVKey}~\var{tx})\} \\ - & ~~~~~~~~\var{itr} \leteq \fun{txvldt}~ (\txbody~ \var{tx}) - \end{align*} - \caption{Script Validation} - \label{fig:functions-validate} -\end{figure} - -In the ShelleyMA era, the -$\fun{validateScript}$ function performs validation of only timelock scripts, -see Figure~\ref{fig:functions-validate}. Note that while there is no explicit -support for validating multi-signature scripts in $\fun{validateScript}$, -these scripts remain effectively usable as the encodings of multi-sig and timelock -scripts are compatible. An existing multi-sig script-locked output is -spent by interpreting the encoded script as a timelock script (one without -any validity interval clauses), then validating it. For details, see the CDDL -specification. - -The arguments that are passed to the $\fun{validateScript}$ function include all those -that are needed for $\Timelock$ script evaluation : - -\begin{itemize} -\item The script getting evaluated -\item The transaction -\end{itemize} - -The semantics of the Timelock language are specified in Figure~\ref{fig:defs:tx-mc-eval}. -The evaluation of the scripts constructed by $\type{Signature}, \type{AllOf}, -\type{AnyOf}, \type{MOfN}$ is done the same as for their -$\ScriptNI$ counterparts. The $\type{RequireTimeStart}$ evaluation -checks that the start of the transaction validity interval is not $\Nothing$, and is in or after -the slot specified by the constructor. The $\type{RequireTimeExpire}$ evaluation -checks that the end of the transaction validity interval is not $\Nothing$, and is in or before -the slot specified by the constructor. - -\begin{figure*}[htb] - \emph{Timelock Script Constructor Types} - \begin{align*} - & \type{evalTimelock} & \in \powerset{\KeyHash}\to(\Slot^? \times \Slot^?)\to\Timelock \to \Bool & \\ - & \text{The type of the Timelock script evaluator} \\~\\ - % - & \type{Signature} & \in \KeyHash \to \Timelock & \\ - % - & \type{AllOf} & \in \seqof{\Timelock} \to \Timelock & \\ - % - & \type{AnyOf} & \in \seqof{\Timelock} \to \Timelock & \\ - % - & \type{MOfN} & \in \N \to \seqof{\Timelock} \to \Timelock & \\ - % - & \type{RequireTimeStart} & \in \Slot \to \Timelock &\\ - % - & \type{RequireTimeExpire} & \in \Slot \to \Timelock &\\ - \end{align*} - % - \emph{Timelock Script Evaluation} - \begin{align*} - \fun{evalTimelock} & ~(\type{Signature}~hk)~\var{vhks}~\wcard = hk \in vhks \\ - \fun{evalTimelock} & ~(\type{AllOf}~ts)~\var{vhks}~\wcard = - \forall t \in ts: \fun{evalTimelock}~t~vhks\\ - \fun{evalTimelock} & ~(\type{AnyOf}~ts)~\var{vhks}~\wcard = - \exists t \in ts: \fun{evalTimelock}~t~vhks\\ - \fun{evalTimelock} & ~(\type{MOfN}~m~ts)~\var{vhks}~\wcard = \\ - & m \leq \Sigma - (\textrm{card} \{ t s.t. t \leftarrow ts \wedge \fun{evalTimelock}~\var{t}~\var{vhks} \}) \\ - \fun{evalTimelock} &~(\type{RequireTimeStart}~\var{lockStart})~\var{vhks}~\var{(\var{txStart}, \wcard)} \\ - & =~ - \begin{cases} - \False & \var{txStart} = \Nothing \\ - \var{lockStart} \leq \var{txStart} & \text{otherwise} - \end{cases} \\ - \fun{evalTimelock} &~(\type{RequireTimeExpire}~\var{lockExp})~\var{vhks}~\var{(\wcard, \var{txExp})} \\ - & =~ - \begin{cases} - \False & \var{txExp} = \Nothing \\ - \var{txExp} \leq \var{lockExp} & \text{otherwise} - \end{cases} \\ - \end{align*} - \caption{Timelock Script Constructor Types and Evaluation} - \label{fig:defs:tx-mc-eval} -\end{figure*} - -% The Figures~\ref{fig:defs:tx-mc-eval},~\ref{fig:defs:tx-mc-eval-2}, -% and~\ref{fig:whitelist-example} give -% possible constructors of the Timelock language. -% -% %% \begin{note} -% %% sort out the constructors -% %% \end{note} -% -% \begin{figure*}[htb] -% \begin{align*} -% & \fun{evalTimelock} \in\Timelock\to\PolicyID\to\Slot\to\powerset\KeyHash \\ -% &~~~~\to\TxBody\to\UTxO \to\Bool \\ -% & \text{UTxO is only for the outputs THIS tx is spending, not global UTxO, i.e.} \\ -% & \text{when called,}~\var{spentouts}~=~(\fun{txins}~\var{txb}) ~\restrictdom~\var{utxo} \\~\\ -% % -% & \fun{evalTimelock} ~(\type{JustMSig}~s)~\var{pid}~\var{slot}~\var{vhks} -% ~\var{txb}~\var{spentouts} \\ -% &~~~~ =~ \fun{evalMultiSigScript}~s~\var{vhks} \\ -% & \text {checks the msig script}\\~\\ -% % -% & \fun{evalTimelock} -% ~\type{DoMint}~\var{pid}~ \var{slot}~\var{vhks} ~\var{txb}~\var{spentouts} \\ -% &~~~~ =~ \var{pid} \notin \dom~(\fun{mint}~\var{txb}) \\ -% & \text {checks that script hash of this script is not an asset ID being minted by tx} \\~\\ -% % -% & \fun{evalTimelock} -% ~\type{SignedByPIDToken}~\var{pid}~ \var{slot}~\var{vhks} ~\var{txb}~\var{spentouts} \\ -% &~~~~ =~ \exists~t\mapsto ~\_~\in~ \fun{range}~(\var{pid}~ \restrictdom~(\fun{ubalance}~\var{spentouts})) ~:~ t~\in~\var{vhks} \\ -% & \text{checks that tx is signed by a key whose hash is the name of a token in this asset} -% \\~\\ -% & \fun{evalTimelock} -% ~(\type{SpendsCur}~\var{pid'})~\var{pid}~ \var{slot}~\var{vhks} ~\var{txb}~\var{spentouts} \\ -% &~~~~ =~ (\var{pid'}~\neq~\Nothing ~\wedge ~\var{pid'}~\in~ \dom~(\fun{ubalance}~\var{spentouts}))\\ -% &~~~~~~ \vee (\var{pid'}~=~\Nothing ~\wedge ~\var{pid}~\in~ \dom~(\fun{ubalance}~\var{spentouts})) \\ -% & \text{checks that this transaction spends asset pid' OR itself if}~\var{pid'}~=~\Nothing -% \\~\\ -% &\fun{evalTimelock}~(\type{Not}~s)~\var{pid}~\var{slot}~\var{vhks} -% ~\var{txb}~\var{spentouts} -% \\ -% &~~~~ = \neg ~\fun{evalTimelock}~s~\var{pid}~\var{slot}~\var{vhks} -% ~\var{txb}~\var{spentouts}\\~\\ -% % -% &\fun{evalTimelock}~(\type{RequireAll}~ls)~\var{pid}~\var{slot}~\var{vhks} -% ~\var{txb}~\var{spentouts} -% \\ -% &~~~~ = \forall ~s'~ \in~ ls~:~\fun{evalTimelock}~s'~\var{pid}~\var{slot}~\var{vhks} -% ~\var{txb}~\var{spentouts}\\~\\ -% % -% &\fun{evalTimelock}~(\type{RequireOr}~ls)~\var{pid}~\var{slot}~\var{vhks} -% ~\var{txb}~\var{spentouts} -% \\ -% &~~~~ = \exists ~s'~ \in~ ls~:~\fun{evalTimelock}~s'~\var{pid}~\var{slot}~\var{vhks} -% ~\var{txb}~\var{spentouts}\\ -% \end{align*} -% \caption{Multi-asset Script Evaluation} -% \label{fig:defs:tx-mc-eval} -% \end{figure*} -% -% \begin{figure*}[htb] -% \begin{align*} -% & \fun{evalTimelock} -% ~(\type{AssetToAddress}~\var{pid'}~\var{addr})~\var{pid}~ \var{slot}~\var{vhks} ~\var{txb}~\var{spentouts} \\ -% &~~~~ =~ \forall~(a, v)~\in~\fun{range}~(\fun{outs}~txb),~\\ -% &~~~~~~ \var{c}~\in~\dom~v~\Rightarrow~(a~=~ \var{a'} ~\wedge~ -% v~=~\var{c}~ \restrictdom~(\fun{ubalance}~(\fun{outs}~txb)) \\ -% & \where \\ -% & ~~~~~~~ \var{a'}~=~\fun{if}~ \var{addr}~\neq~\Nothing~\fun{then}~\var{addr}~\fun{else}~\var{(pid',pid')} \\ -% & ~~~~~~~ \var{c}~=~\fun{if}~ \var{pid'}~\neq~\Nothing~\fun{then}~\var{pid'}~\fun{else}~\var{pid} \\ -% & \text{checks that tx outputs any pid tokens by themselves to the specified address} \\ -% & \text {the script address of the given asset when addr unspecified} \\~\\ -% & \fun{evalTimelock} -% ~(\type{TrancheTokens}~\var{tts}~\var{txin})~\var{pid}~\var{slot}~\var{vhks} -% ~\var{txb}~\var{spentouts} \\ -% &~~~~ =~(\var{pid}\mapsto\var{tts}~\in~\var{val})~ \wedge~(\var{txin}~\in~\fun{txins}~{txb}) \\ -% & \text{tranche tokens is incomplete} \\~\\ -% % -% & \fun{evalTimelock} -% ~(\type{FreshTokens})~\var{pid}~\var{slot}~\var{vhks} -% ~\var{txb}~\var{spentouts} -% \\ -% &~~~~ =~\forall~\var{pid}~ \mapsto ~tkns ~\in~ \var{val}~:~ \\ -% &~~~~ \forall~t~\in~\var{tkns},~ -% \fun{nameToken}~(\fun{indexof}~\var{t}~\var{tkns},~\fun{txins}~{txb})~=~t -% \end{align*} -% \caption{Multi-asset Script Evaluation, cont.} -% \label{fig:defs:tx-mc-eval-2} -% \end{figure*} -% -% \begin{figure*}[htb] -% \begin{align*} -% & \fun{whitelist} \in\ScriptMSig\to\Script \\~\\ -% % -% & \type{whitelist} ~\var{msig}~ =~ \type{RequireOr}~ -% (\type{RequireAll}~(\type{DoMint};~\type{JustMSig}~\var{msig});~\\ -% &~~~~~~ \type{RequireAll}~(\type{AssetToAddress}~\Nothing~\Nothing ;\\ -% &~~~~~~ (\type{Not}~\type{DoMint});~\type{SignedByPIDToken})) \\ -% % -% & \text{msig is some MSig script containing signatures of some accreditation authority} \\ -% & \text{i.e. this authority can do any minting or spending of this token} \\~\\ -% % -% & (\fun{hashScript}~(\type{SpendsCur}~(\fun{hashScript}~(\type{whitelist}~\var{msig}))),~ \var{tkns}) \\ -% & \text{an example of an output spending which requires to be on a whitelist made by msig authority} -% \end{align*} -% \caption{Whitelist Script Example} -% \label{fig:whitelist-example} -% \end{figure*} diff --git a/eras/shelley-ma/formal-spec/transactions.tex b/eras/shelley-ma/formal-spec/transactions.tex deleted file mode 100644 index 54e2bba29ac..00000000000 --- a/eras/shelley-ma/formal-spec/transactions.tex +++ /dev/null @@ -1,154 +0,0 @@ -\begin{figure*}[t!] - % - \emph{Abstract types} - % - \begin{equation*} - \begin{array}{r@{~\in~}l@{\qquad=\qquad}lr} - \var{s_{v2}} & \Timelock & \text{extended script language} - \end{array} - \end{equation*} - % - \emph{Derived types} - % - \begin{equation*} - \begin{array}{r@{~\in~}l@{\qquad=\qquad}lr} - \var{txout} & \TxOut & \Addr \times \hldiff{\ValMonoid} \\ -% & \text{tx outputs} - \var{s} & \Script & \hldiff{\Timelock} -% & \text{scripts} - \\ - \end{array} - \end{equation*} - % - \emph{Transaction Type} - % - \begin{equation*} - \begin{array}{r@{~~}l@{~~}l@{\qquad}l} - \var{txbody} ~\in~ \TxBody ~=~ - & \powerset{\TxIn} & \fun{txinputs}& \text{inputs}\\ - &\times ~(\Ix \mapsto \TxOut) & \fun{txouts}& \text{outputs}\\ - & \times~ \seqof{\DCert} & \fun{txcerts}& \text{certificates}\\ - & \times ~\hldiff{\ValMonoid} & \hldiff{\fun{mint}} &\text{value minted}\\ - & \times ~\Coin & \fun{txfee} &\text{non-script fee}\\ - & \times ~\hldiff{\Slot^? \times \Slot^?} & \hldiff{\fun{txvldt}} & \text{validity interval}\\ - & \times~ \Wdrl & \fun{txwdrls} &\text{reward withdrawals}\\ - & \times ~\Update^? & \fun{txUpdates} & \text{update proposals}\\ - & \times ~\AuxiliaryDataHash^? & \fun{txADhash} & \text{auxiliary data hash} - \end{array} - \end{equation*} - % - \begin{equation*} - \begin{array}{r@{~~}l@{~~}l@{\qquad}l} - \var{ad} ~\in~ \AuxiliaryData ~=~ - & \powerset{\Script} & \fun{scripts}& \text{Optional scripts}\\ - & \times ~\Metadata^? & \fun{md} & \text{metadata} - \end{array} - \end{equation*} - % - \begin{equation*} - \begin{array}{r@{~~}l@{~~}l@{\qquad}l} - \var{tx} ~\in~ \Tx ~=~ - & \TxBody & \fun{txinputs}& \text{Transaction body}\\ - &\times ~\TxWitness & \fun{txouts}& \text{Witnesses}\\ - & \times ~\AuxiliaryData^? & \fun{txADhash} & \text{Auxiliary data} - \end{array} - \end{equation*} - % - \emph{Accessor Functions} - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \fun{getValue} & \TxOut \to \ValMonoid & \text{output value} \\ - \fun{getAddr} & \TxOut \to \Addr & \text{output address} - \end{array} - \end{equation*} - \caption{Type Definitions used in the UTxO transition system} - \label{fig:defs:utxo-shelley} -\end{figure*} - -\section{Transactions} -\label{sec:transactions} - -This section describes the changes that are made to the -transaction structure to support both timelock script and native multi-asset (MA) -functionality in the Cardano ledger. - -\subsection*{New Output Type} - -A key change needed to introduce MA functionality in the Mary era is changing the type of -the transaction and UTxO outputs to contain multi-asset values to accommodate -transacting with these types of assets natively, using the same ledger accounting -scheme as is used for Ada. We set up the infrastructure for this -change in transition system update common to both Allegra and Mary, ie. ShelleyMA. That is, -$\TxOut$ now contains an element of $\ValMonoid$ (which -could be a $\Coin$, $\Value$, or another type, see Section \ref{sec:coin-ma}), -rather than only $\Coin$. - -\subsection*{New Script Type} - -The multi-signature scripting language has been renamed to $\ScriptNI$ and -the type $\Script$ has been extended to include a new scripting language, -$\Timelock$, that is backwards compatible with the multi signature scripting -language, see Section~\ref{sec:chain}. We specify the evaluation -function for the new script type in Section~\ref{sec:timelock-lang}. - -The new type of scripts can be used for all the same purposes, which means, for this -specification, as - -\begin{itemize} - \item output-locking scripts, - \item certificate validation, - \item reward withdrawals, or - \item as minting scripts (see below). -\end{itemize} - -\subsection*{The Mint Field} - -The body of a transaction in the ShelleyMA era contains one additional -field, the $\fun{mint}$ field. -The $\fun{mint}$ field contains an element of $\ValMonoid$, which is used to specify -the assets a transaction is putting into or taking out of -circulation. Here, by "circulation", we mean specifically "the UTxO on the -ledger". Since the administrative fields cannot contain assets other than Ada, -and Ada cannot be minted (this is enforced by the UTxO rule, see Figure~\ref{fig:rules:utxo-shelley}), -they are not affected in any way by minting. - -Putting assets into circulation is done with positive values in the $\Quantity$ -fields $\fun{mint}$ field, and taking assets out of circulation can be done -with negative quantities. - -A transaction cannot simply mint arbitrary assets. In the Mary era, restrictions on -multi-asset are imposed, for each asset with policy ID $\var{pid}$, by a script -with the hash $\var{pid}$. Whether a minting transaction adheres to the restrictions -prescribed by the preimage script is verified as part of the processing of the transaction. -The minting mechanism is detailed in Section~\ref{sec:utxo}. - -Note that the $\fun{mint}$ field exists in both Allegra and Mary eras, -but can only be used in the Mary era, when multi-assets are introduced. - -\subsection*{Transaction Body} - -The following changes were made to $\TxBody$: - -\begin{itemize} - \item a change in the type of $\TxOut$ --- instead of -$\Coin$, the transaction outputs now have type $\ValMonoid$. - \item the addition of the $\fun{mint}$ field to the transaction body - \item the time-to-live slot number (which had the accessor $\fun{txttl}$), - has been replaced with a validity interval with accessor $\fun{txvldt}$, - both endpoints of which are optional -\end{itemize} - -The only change to the types related to transaction witnessing is the addition -of minting policy scripts to the underlying $\Script$ type, so we do not include the -whole $\Tx$ type here. - -\subsection*{Auxiliary Data} - -The auxiliary data section of the transaction consists of two parts: -$\fun{md}$ which is the same metadata type used in -Shelley, and $\fun{scripts}$, which is used to allow transactions to -contain optional scripts that are not used for witnessing. The -intended purpose of this field is to give users the ability to -transmit a script that belongs to a script address via this -auxiliary data. There are no restrictions on this field however, and users -can use it to put arbitrary scripts into the auxiliary data. diff --git a/eras/shelley-ma/formal-spec/utxo.tex b/eras/shelley-ma/formal-spec/utxo.tex deleted file mode 100644 index b87d43af14a..00000000000 --- a/eras/shelley-ma/formal-spec/utxo.tex +++ /dev/null @@ -1,268 +0,0 @@ -\section{UTxO} -\label{sec:utxo} - -\subsection*{UTxO Helper Functions} - -\begin{figure}[htb] - \emph{Type Definition} - \begin{equation*} - \begin{array}{r@{~\in~}l@{\qquad=\qquad}lr} - \var{mest} & \MemoryEstimate & \N - \end{array} - \end{equation*} - % - \emph{Abstract Helper Function} - \begin{align*} - \fun{utxoEntrySize} \in& ~\TxOut \to \MemoryEstimate & \text{Memory estimate for}~\TxOut - \end{align*} - % - \emph{Helper Functions} - \begin{align*} - & \fun{ininterval} \in \Slot \to (\Slot^? \times \Slot^?) \to \Bool \\ - & \fun{ininterval}~\var{slot}~(i_s, i_f) ~=~ - \begin{cases} - \True & (i_s = \Nothing)~\wedge~(i_f = \Nothing) \\ - \var{slot}~<~i_f & (i_s = \Nothing)~\wedge~(i_f \neq \Nothing)\\ - i_s~\leq~\var{slot} & (i_s \neq \Nothing)~\wedge~(i_f = \Nothing) \\ - i_s~\leq~\var{slot}~<~i_f & (i_s \neq \Nothing)~\wedge~(i_f \neq \Nothing) - \end{cases} - \nextdef - & \fun{getCoin} \in \TxOut \to \Coin \\ - & \fun{getCoin}~{(\wcard,~\var{out})} ~=~\fun{coin}~\var{out} - \nextdef - & \fun{ubalance} \in \UTxO \to \hldiff{\ValMonoid} \\ - & \fun{ubalance} ~ utxo = \hldiff{\sum_{\wcard\mapsto\var{u}\in~\var{utxo}} \fun{getValue}~\var{u}} - \nextdef - & \fun{isAdaOnly} ~\in~ \mathsf{ValType} \to \Bool \\ - & \fun{isAdaOnly}~v = v \in \range \fun{inject} - \nextdef - & \fun{scaledMinDeposit} \in \ValMonoid \to \Coin \to \Coin \\ - & \fun{scaledMinDeposit}~\var{v}~\var{mv} ~=~ - \begin{cases} - \var{mv} & \fun{isAdaOnly}~v \\ - \fun{max}~(\var{mv},~\fun{utxoEntrySize}~{v} * \fun{coinsPerUTxOWord}~mv)) & \text{otherwise} - \end{cases} - \end{align*} - % - \emph{Produced and Consumed Calculations} - \begin{align*} - & \fun{consumed} \in \PParams \to \UTxO \to \TxBody \to \hldiff{\ValMonoid} \\ - & \consumed{pp}{utxo}{txb} = \\ - & ~~\ubalance{(\txins{txb} \restrictdom \var{utxo})} ~+~ \hldiff{\fun{mint}~\var{txb}} \\ - &~~+~\hldiff{\fun{inject}}(\fun{wbalance}~(\fun{txwdrls}~{txb})~+~ \keyRefunds{pp}{txb}) - \nextdef - & \fun{produced} \in \PParams \to \StakePools \to \TxBody \to \hldiff{\ValMonoid} \\ - & \fun{produced}~\var{pp}~\var{stpools}~\var{txb} = \\ - &~~\ubalance{(\fun{outs}~{txb})} \\ - &~~+ \hldiff{\fun{inject}}(\txfee{txb} + \totalDeposits{pp}{stpools}{(\txcerts{txb})}) - \end{align*} - \caption{UTxO Calculations} - \label{fig:functions:utxo} -\end{figure} - -Figure~\ref{fig:functions:utxo} defines additional calculations that are needed for the -UTxO transition system with multi-assets: - -\begin{itemize} - \item The $\MemoryEstimate$ type represents the size, in \emph{words} (8 bytes), of - a term (eg. a transaction input, or output). Note that this estimate is calculated - according to fomulas we provide in this specification (see Appendix \ref{sec:value-size}), - as opposed to obtained using an existing function of the programming - language selected for implementation. - - \item The $\fun{utxoEntrySize}$ function provides a rough estimate of - the amount of memory the storage of an output will consume, which is used in the UTXO rule. - Its implementation is described in Appendix \ref{sec:value-size}. - - \item The function $\fun{ininterval}$ returns $\True$ whenever the given slot is - inside the given interval. If an endpoint of the validity interval - is $\Nothing$, the comparison of the slot to that endpoint is $\True$ by default. - - \item The function $\fun{getCoin}$ returns the Ada in a given output as a $\Coin$ value. - - \item The $\fun{ubalance}$ function calculates the sum total in a given UTxO. - - \item The $\fun{consumed}$ and $\fun{produced}$ calculations are similar to their Shelley - counterparts, with the following changes: 1) They return elements of $\ValMonoid$, which - the administrative fields of type $\Coin$ have to be converted to, via $\fun{inject}$. - 2) $\fun{consumed}$ also contains the $\fun{mint}$ field of the transaction. - This is explained below. -\end{itemize} - -\subsection*{Minting and the Preservation of Value} -What does it mean to preserve the value of non-Ada assets, since they -are put in and taken out of circulation by the users themselves? This -question becomes relevant when we pick a Token algebra that can represent -assets other than Ada. - -If a transaction $\var{tx}$ has an empty $\fun{mint}$ field, the preservation -of value condition reduces to the same equality as the POV in Shelley. If a transaction -mints assets, the value of the $\fun{mint}$ field has to reflect exactly -the increase or decrease of the total quantities of the assets being -minted or burned. Note that this means that the -$\fun{mint}$ field can also contain negative quantities in the case assets -are being burned. - -To balance the preservation of value equation, the $\fun{mint}$ field -could be included in either $\fun{consumed}$ or $\fun{produced}$, with -the only difference being the sign of the $\fun{mint}$ field. We -include it on the $\fun{consumed}$ side, because this means that -minting a positive quantity increases the total quantity of assets on the -ledger, and minting a negative quantity reduces the total quantity of assets on -the ledger. - -Note that the UTXO rule specifically forbids the minting of Ada, and -thus in the case of Ada, the preservation of value equation is exactly -the same as in Shelley. - -The minting scripts themselves are not evaluated at part of the UTXO, but instead -as part of witnessing, i.e. in the UTXOW rule, see Figure~\ref{fig:functions-witnesses}. - -\subsection*{The UTXO Transition Rule} -In Figure \ref{fig:rules:utxo-shelley}, we give the UTXO transition rule for ShelleyMA. -There are the following changes to the preconditions -of this rule as compared to the original Shelley UTXO rule: - -\begin{itemize} - \item The check that the time-to-live of a transaction is after the current - slot is replaced with the check that the current slot is inside the validity interval - - \item In the preservation of value calculation (which looks the same as in - Shelley), the value in the $\fun{mint}$ field is taken into account. - - \item The transaction is not minting any Ada. This condition, in the Allegra - era, ensures that no assets can ever be minted (since Ada is the only existing - asset). - - \item The $\ValMonoid$ element in each output is constrained from below by a - $\ValMonoid$ element that contains some amount of Ada and no other assets. - The amount of Ada that is contained in this element (and therefore, the output - element which it constrains) depends on the - size of the output. To get the minimum Ada amount, the size of the output is multiplied by - the function $\var{coinsPerUTxOWord}$ applied to protocol parameters - (see Section~\ref{sec:value-size} for the function definition). - Note that this check implies that no quantity of any asset appearing in that output can be - negative. - - In the case that $\ValMonoid = \Coin$, this constraint exactly mimics - the $\fun{minUTxOValue}$ constraint in Shelley, see \ref{sec:min-value}. - - \item The serialized size of the $\ValMonoid$ element in each output is no greater than $\mathsf{MaxValSize}$ - (specified in Section~\ref{sec:value-size}). - This ensures that each individual output is never so large that any transaction carrying all the - witness data (eg. large scripts, etc.) necessary for spending such an output will exceed the transaction size limit. - See Section~\ref{sec:value-size} for details. Note that this precondition can be assumed to - hold for the Token algebra $\Coin$, as it is a single integer. -\end{itemize} - -Note that updating the $\UTxO$ with the inputs and the outputs of the transaction -looks the same as in the Shelley rule. There is a type-level difference however, as -the outputs of a transaction contain an element of $\ValMonoid$, rather than -$\Coin$. - - -\begin{figure}[htb] - \begin{equation}\label{eq:utxo-inductive-shelley} - \inference[UTxO-inductive] - { \var{txb}\leteq\txbody{tx} - & \hldiff{\fun{ininterval}~\var{slot}~(\fun{txvldt}~{tx})} - \\ \txins{txb} \neq \emptyset - & \minfee{pp}{tx} \leq \txfee{txb} - & \txins{txb} \subseteq \dom \var{utxo} - \\ - \consumed{pp}{utxo}~{txb} = \produced{pp}{stpools}~{txb} - \\ - ~ - \\ - { - \begin{array}{r} - \var{slot} \\ - \var{pp} \\ - \var{genDelegs} \\ - \end{array} - } - \vdash \var{pup} \trans{\hyperref[fig:rules:update]{ppup}}{\fun{txup}~\var{tx}} \var{pup'} - \\ - ~ - \\ - \hldiff{\fun{coin}~(\fun{mint}~txb)~=~0} \\ - ~\\ - \hldiff{\forall txout \in \txouts{txb},} \\ - \hldiff{\fun{getValue}~txout \geq \fun{inject}~(\fun{scaledMinDeposit}~v~(\fun{minUTxOValue}~pp))} \\~ - \\ - \hldiff{\forall txout \in \txouts{txb},} \\ - \hldiff{\fun{serSize}~(\fun{getValue}~txout) ~\leq ~\mathsf{MaxValSize}} \\~\\ - \forall (\wcard\mapsto (a,~\wcard)) \in \txouts{txb}, a \in \AddrBS \Rightarrow \fun{bootstrapAttrsSize}~a \leq 64 - \\ - \forall (\wcard\mapsto (a,~\wcard)) \in \txouts{txb}, \fun{netId}~a =\NetworkId - \\ - \forall (a\mapsto\wcard) \in \txwdrls{txb}, \fun{netId}~a =\NetworkId - \\ - \fun{txsize}~{tx}\leq\fun{maxTxSize}~\var{pp} - \\ - ~ - \\ - \var{refunded} \leteq \keyRefunds{pp}{txb} - \\ - \var{depositChange} \leteq - \totalDeposits{pp}{stpools}{(\txcerts{txb})} - \var{refunded} - } - { - \begin{array}{r} - \var{slot}\\ - \var{pp}\\ - \var{stpools}\\ - \var{genDelegs}\\ - \end{array} - \vdash - \left( - \begin{array}{r} - \var{utxo} \\ - \var{deposits} \\ - \var{fees} \\ - \var{pup}\\ - \end{array} - \right) - \trans{utxo}{tx} - \left( - \begin{array}{r} - \varUpdate{(\txins{txb} \subtractdom \var{utxo}) \cup \fun{outs}~{txb}} \\ - \varUpdate{\var{deposits} + \var{depositChange}} \\ - \varUpdate{\var{fees} + \txfee{txb}} \\ - \varUpdate{pup'}\\ - \end{array} - \right) - } - \end{equation} - \caption{UTxO inference rules} - \label{fig:rules:utxo-shelley} -\end{figure} - - -\subsection*{Witnessing} - -\begin{figure}[htb] - \begin{align*} - \fun{scriptsNeeded} & \in \UTxO \to \Tx \to \powerset{\ScriptHash} \hspace{2cm} \text{required script hashes} \\ - \fun{scriptsNeeded} &~\var{utxo}~\var{tx} = \\ - & ~~\{ \fun{validatorHash}~a \mid i \mapsto (a, \wcard) \in \var{utxo},\\ - & ~~~~~i\in\fun{txinsScript}~{(\fun{txins~\var{txb}})}~{utxo}\} \\ - \cup & ~~\{ \fun{stakeCred_{r}}~\var{a} \mid a \in \dom (\AddrRWDScr - \restrictdom \fun{txwdrls}~\var{txb}) \} \\ - \cup & ~~(\AddrScr \cap \fun{certWitsNeeded}~{txb}) \\ - \cup & ~~\hldiff{\fun{policies}~(\fun{mint}~{txb})} \\ - & \where \\ - & ~~~~~~~ \var{txb}~=~\txbody{tx} - \end{align*} - \caption{Scripts Needed} - \label{fig:functions-witnesses} -\end{figure} - -Figure~\ref{fig:functions-witnesses} contains the changed definition -of the function $\fun{scriptsNeeded}$, which also collects the scripts -necessary for minting. -Recall that in Allegra, no assets can ever be minted, so there are no scripts to run that -validate minting. - -The witnessing rule UTXOW only needs a minor change for verifying the metadata hash, -which is replacing the condition $\var{md} = \Nothing$ with $\var{md} = (\emptyset, \Nothing)$. diff --git a/eras/shelley-ma/formal-spec/value-size.tex b/eras/shelley-ma/formal-spec/value-size.tex deleted file mode 100644 index 7efb5a1e8ee..00000000000 --- a/eras/shelley-ma/formal-spec/value-size.tex +++ /dev/null @@ -1,171 +0,0 @@ -\section{Output Size} -\label{sec:value-size} - -In Shelley, the protocol parameter $\var{minUTxOValue}$ is used to -disincentivize attacking nodes by putting many small outputs on the -UTxO, permanently blocking memory. In the Mary era -and onwards, the $\ValMonoid$ is $\Value$, rather than $\Coin$ (as in Allegra). Elements of $\Value$ -can potentially be arbitrarily large, so the ledger requires each $\UTxO$ entry to -contain a minimum amount of Ada, proportional to its size. - -There is also another $\Value_C$ size consideration with respect to spendability -of an output. The restriction on the total serialized size of the transaction (set -by the parameter $\var{maxTxSize}$) serves as an implicit upper bound on the -size of a $\Value_C$ contained in an output of a transaction. Without tighter -limits on the output $\Value_C$ size, one of the following situations could arise, -causing the output to be come unspendable (these are just a two examples) : - -\begin{itemize} - \item The script locking the very large $\Value_C$-containing UTxO is too large - to fit inside the transaction alongside the $\Value_C$ itself while still respecting - the max transaction size - \item The large $\Value_C$ cannot be split into several outputs, because the - outputs are impossible to fit inside a single transaction -\end{itemize} - -The same considerations apply for any underlying $\ValMonoid$ we choose to fix. -In the ShelleyMA eras, the two types that are used to define concrete ledgers are $\Coin$ and $\Value_C$. -The size calculations for $\Coin$, in practice, -result in either trivial restrictions in the ledger rules, -or ones that align with Shelley (as discussed in Section \ref{sec:utxo}). - -\subsection{Value Size} - -Figure \ref{fig:size-helper} contains abstract and helper functions -used in calculating the in-memory and serialized representation -sizes of $\Value_C$ elements. - -\begin{figure*}[h] - \emph{Abstract Functions} - % - \begin{align*} - & \fun{serialize} \in \wcard \to \ByteString \\ - & \text{Serialization function on an arbitrary (serializable) type} - \nextdef - & \fun{anameLen} \in \AssetName \to \MemoryEstimate \\ - & \text{Returns the length (in bytes) of an asset name} - \end{align*} - % - \emph{Helper Functions} - \begin{align*} - & \fun{serSize} \in \ValMonoid \to \MemoryEstimate \\ - & \fun{serSize}~v=\lvert \fun{serialize}~{v} \rvert \\ - & \text{Gives the size of the serialized representation of a $\ValMonoid$} - & \nextdef - & \fun{numAssets} \in \Value_C \to \N \\ - & \fun{numAssets}~{vl}=\lvert \{~(pid, an)~\vert~ pid \mapsto (an \mapsto \wcard) \in vl~\} \rvert \\ - & \text{Returns the number of distinct asset IDs in a $\Value_C$} - & \nextdef - & \fun{sumALs} \in \Value_C \to \N \\ - & \fun{sumALs}~{vl}= \sum_{\{~an~\vert~\wcard~\mapsto~(an~\mapsto~\wcard)~\in~vl~\}} \fun{anameLen}~an \\ - & \text{Returns the sum of the lengths (in bytes) of distinct asset names in a $\Value_C$} - & \nextdef - & \fun{numPids} \in \Value_C \to \N \\ - & \fun{numPids}~{vl} = \lvert \fun{pids}~{vl} \rvert \\ - & \text{The number of policy IDs in a $\Value_C$} - \end{align*} - \caption{Value Size Helper Functions} - \label{fig:size-helper} -\end{figure*} - -For a serializable type, the function $\fun{serialize}$ is defined on that type. We do not -specify serialization functions here, but the CDDL specification gives the encoding -details (see \cite{alonzoCDDL}). We give this function here because it is the -first time it is used in the specification, but it is not specific to -multi-assets, Mary, or Allegra in any way. - -The function $\fun{serSize}$ returns the actual number of bytes in the bytestring that is the - serialized representation of a $\ValMonoid$ element. The specific underlying $\ValMonoid$ - is required to be serializable in every era. - - The $\fun{serSize}$ function is used constrain - the serialized representation of the transaction (in particular, the size - of $\Value_C$ elements in outputs), whereas the min-Ada requirement is a calculation based on - the in-memory representation size. A transparently-calculated size estimate - is not necessary for limiting the size of values in outputs, since this size-bound - check does not place any additional accounting/monetary constranits on transaction construction, - unlike the min-Ada requirement. - -\subsection{Min UTxO Value} -\label{sec:min-value} - -Figure \ref{fig:min-val-calc} gives the types of constants used in the estimation -of the size of a UTxO entry, and the associated min-Ada-value. - -\begin{figure*}[h] - \emph{Constants} - \begin{equation*} - \begin{array}{lcl} - (k_0, k_1, k_2, k_3, k_4) & \in & \N \times \N \times \N \times \N \times \N \\ - \mathsf{UtxoEntrySizeWithoutVal} & \in & \MemoryEstimate \\ - \mathsf{AdaOnlyUTxOSize} & \in & \MemoryEstimate \\ - \mathsf{MaxValSize} & \in & \MemoryEstimate \\ - \end{array} - \end{equation*} - % - \emph{Size and Min-Ada Functions} - \begin{align*} - & \fun{size} \in \Value_C \to \MemoryEstimate \\ - & \fun{size}~\var{vl} = - \begin{cases} - k_0 & \fun{isAdaOnly}~vl\\ - k_1 + \lfloor~ \fun{numAssets}~vl * k_2 + \fun{sumALs}~vl & \\ - ~~~~~~ + \fun{numPids}~vl * k_3 + k_4 - 1 /~ k_4~\rfloor & \text{otherwise} \\ - \end{cases} \\ - & \text{Calculate the size of a $\Value_C$} - \nextdef - & \fun{coinsPerUTxOWord}\in \Coin \to \Coin \\ - & \fun{coinsPerUTxOWord}~\var{mv} = \lfloor~ \var{mv}~/~ \mathsf{adaOnlyUTxOSize}~ \rfloor \\ - & \text{Calculate the cost of storing a memory unit of data as a UTxO entry} - \nextdef - & \fun{utxoEntrySize} \in \ValMonoid \to \MemoryEstimate \\ - & \fun{utxoEntrySize}~\var{v} = \mathsf{utxoEntrySizeWithoutVal} + \fun{size}~\var{v} \\ - & \text{Calculate the size of a UTxO entry} -\end{align*} -\caption{Value Size Calculation} -\label{fig:min-val-calc} -\end{figure*} - -The $\fun{size}$ function returns the estimated size of a $\Value_C$ element. The size -function on $\Value$ is defined via the isomorphism in Section \ref{sec:coin-value}, - -\[ \fun{size}_{\Value}~v=\fun{size}~(\fun{iso}_{v}~v) \] - -The size of a $\Value_C$ element is constant in the case when it contains only Ada. -If there are other types of assets contained in it, the size depends on - -\begin{itemize} - \item the number of distinct asset types (asset IDs) - \item the number of distinct policy IDs, and - \item the sum of the lengths of distinct asset names. -\end{itemize} - -The parameter $\fun{minUTxOValue}$ specifies the min-Ada value for a UTxO containing -only Ada. This type of UTxO varies in size somewhat (eg. Byron style addresses -may be a different length than Shelley ones), but we estimate the size of the most commonly -used type of Ada-only UTxO as the constant value $\mathsf{adaOnlyUTxOSize}$. -This constant is in fact an upper bound on UTxOs which have have only Shelley credentials. - -We use this size estimate -to calculate what $\fun{minUTxOValue}$ implies to be the min-Ada value requirement -\emph{per word} of UTxO data. -The function $\fun{coinsPerUTxOWord}$ performs this calculation by dividing the -min-Ada value by the Ada-only UTxO size (and taking the floor). - -The $\mathsf{utxoEntrySizeWithoutVal}$ is the constant representing -the size of a UTxO entry, not counting the size of the $\ValMonoid$ element it contains. -Here, again, the actual size of a UTxO (excluding the $\ValMonoid$ element) can vary, but -we use an upper bound on the size of Shelley-credential UTxOs. - -The function $\fun{utxoEntrySize}$ estimates the size of an arbitrary ShelleyMA-era -UTxOs. It adds the size estimate of the $\ValMonoid$ element in a UTxO and the -$\mathsf{utxoEntrySizeWithoutVal}$ constant. - -The constants used in the implementation of the ShelleyMA eras are as follows : - -\begin{itemize} - \item $(k_0, k_1, k_2, k_3, k_4) = (1, 6, 12, 28, 8)$ - \item $\mathsf{utxoEntrySizeWithoutVal} = 27$ words (8 bytes) - \item $\mathsf{adaOnlyUTxOSize} = 27$ words (8 bytes) - \item $\mathsf{MaxValSize} = 4000$ bytes, ie. 500 words. -\end{itemize} diff --git a/eras/shelley-ma/formal-spec/value.tex b/eras/shelley-ma/formal-spec/value.tex deleted file mode 100644 index 34896122c06..00000000000 --- a/eras/shelley-ma/formal-spec/value.tex +++ /dev/null @@ -1,233 +0,0 @@ -\section{Coin and Multi-Asset Token algebras} -\label{sec:coin-ma} - -In this chapter we introduce the concept of a \emph{Token algebra}, -which is an abstraction used to generalize this specification to two -different eras depending on the Token algebra chosen. - -\begin{definition}[Token algebra] - A \emph{Token algebra} is a partially ordered commutative monoid - $T$, written additively, (i.e. a commutative monoid together with a - partial order, such that addition is monotonic in both variables) - together with the functions and properties as described in Figure - \ref{fig:TokenAlgebra}. -\end{definition} - -%% -%% Figure ValMonoid and its Functions -%% -\begin{figure}[htb] - % - \emph{Functions} - % - \begin{align*} - & \fun{coin} ~\in~ T \to \Coin\\ - & \text{Return the Ada contained inside the $\mathsf{ValType}$ element} - \nextdef - % - & \fun{inject} ~\in~ \Coin \to T\\ - & \text{Create a $\mathsf{ValType}$ element containing only this amount of Ada} - \nextdef - % - & \fun{policies} ~\in~ T \to \powerset{\PolicyID} \\ - & \text{The set of policy IDs required for minting} - \nextdef - % - & \fun{size} ~\in~ T \to \MemoryEstimate\\ - & \text{Return the size, in words, of a $\mathsf{ValType}$ element} - \end{align*} - % - \emph{Properties} - % - \begin{align*} - & \fun{coin} \circ \fun{inject} = \fun{id}_{\Coin} - \end{align*} - \caption{Additional functions and properties required for a Token algebra} - \label{fig:TokenAlgebra} -\end{figure} - -A Token algebra is precisely the structure required to generalize the -$\Coin$ type of the Shelley specification in transaction outputs for -this ledger. We can then describe the ShelleyMA -transaction processing rules without fixing a concrete Token algebra. - -Depending on the Token algebra chosen, we obtain distinct ledgers. In -particular, we get - -\begin{itemize} - \item the Allegra ledger rules with $\Coin$, and - \item the Mary ledger rules with $\Value$ (defined below). -\end{itemize} - -When multi-asset support on the ledger is introduced, Ada ($\Coin$) will still be -the most common type of asset on the ledger, as the ledger rules enforce that -some quantity of it (specified via -the $\fun{coinsPerUTxOWord}$ protocol parameter) must -be contained in every UTxO on the ledger. -It is the only -type of asset used for all non-UTxO ledger accounting, including deposits, -fees, rewards, treasury, and the proof of stake protocol. For this reason, not -all occurrences of $\Coin$ inside a transaction or in the ledger state can or -should be replaced by the chosen Token algebra. - -Below we give the definitions of all the functions that must be defined on -$\Coin$ and $\Value$ in order for them to have the structure of a Token algebra. -In Section \ref{sec:other-valmonoids} we give several other types which we can meaningfully -support the definition of the required functions (addition, size, etc.), including -an optimized representation that more accurately represents the implementation -used in the Haskell implementation of the multi-asset type. -These types are convertible to and from the $\Value$ type, and appear in other -parts of the system as a multi-asset representation which is more suitable in particular -use cases. - -\subsection{$\Coin$ as a Token algebra} - -This section defines the Token algebra structure for the $\Coin$ type, -see Figure \ref{fig:coin}. The structure of a partially ordered monoid -is inherited from the (additive) integers. - -For $\Coin$, no policies are associated with $\Coin$, since minting of Ada is not allowed. - -%% -%% Figure Coin Functions -%% -\begin{figure}[htb] - \begin{align*} - & \fun{coin} = \fun{id}_{\Coin} - \nextdef - % - & \fun{inject} = \fun{id}_{\Coin} - \nextdef - % - & \fun{policies}~v = \emptyset - \nextdef - % - & \fun{size}~v = 0 - \end{align*} - \caption{The Token algebra structure of $\Coin$} - \label{fig:coin} -\end{figure} - - -\subsection{Multi-assets and the Token algebra $\Value$} - -Elements of $\Value$ represent heterogeneous collections of assets, -both user-defined and Ada. The Mary era ledger uses $\Value$ as its Token algebra -in order to support multi-assets. -$\Value$ and its Token algebra structure are given in Figure \ref{fig:defs:value}. - -\begin{figure*}[t!] - \emph{Derived types} - % - \begin{equation*} - \begin{array}{r@{~\in~}l@{\qquad=\qquad}lr} - \var{aname} & \AssetName & \mathsf{ByteString} \\ - \var{pid} & \PolicyID & \ScriptHash \\ - \var{adaID} & \AdaIDType & \{~\mathsf{AdaID}~\} \\ - \var{aid} & \AssetID & \AdaIDType \uniondistinct (\PolicyID \times \AssetName) \\ - \var{quan} & \Quantity & \Z \\ - \var{v}, \var{w} & \Value & \AssetID \mapsto_0 \Quantity - \end{array} - \end{equation*} - % - \emph{Token algebra structure of $\Value$} - % - \begin{align*} - & \fun{coin}~\var{v} = \var{v}~\mathsf{AdaID} - \nextdef - % - & \fun{inject}~c = \mathsf{AdaID}~\mapsto_0~\var{c} - \nextdef - % - & \fun{policies}~v = \{~\var{pid}~\vert~(\var{pid,~\wcard}) \in \supp v~\} - \nextdef - % - & \fun{size} ~~~ \text{see Section \ref{sec:value-size}} - \end{align*} - \caption{$\Value$ and its Token algebra structure} - \label{fig:defs:value} -\end{figure*} - -\begin{itemize} - \item $\PolicyID$ identifies monetary policies. A policy ID $\var{pid}$ is associated with a script - $s$ such that $\fun{hashScript}~s=pid$. When a transaction attempts to create or destroy assets - that fall under the policy ID $\var{pid}$, - $s$ verifies that the transaction - respects the restrictions that are imposed by the monetary policy. - See sections \ref{sec:transactions} and \ref{sec:utxo} for details. - - \item $\AssetName$ is a byte string used to distinguish different assets with the same $\PolicyID$. - Each $aname$ identifies a particular kind of asset out of all the assets under the - $\var{pid}$ policy (but not necessarily among assets under other policies). - The maximum length of this - byte string is 32 bytes (this is not explicitly enforced in this specification). - - \item $\AssetID$ is either $\mathsf{AdaID}$ or a pair of a policy ID and an asset name. - It is a unique and permanent - identifier of an asset. That is, there are is no mechanism to change it or - any part of it for any assets. - - Mary MA assets are fungible with each other if and only if they have to the same $\AssetID$. - The reason the unique identifier is a pair of two elements (except for the non-mintable Ada case) is to allow - minting arbitrary collections of unique assets under a single policy. - - \item $\mathsf{AdaID}$ is a special asset ID for Ada, different than all other asset IDs. - It is a term of the single-term type $\AdaIDType$. - It does not include a policy, so instead, the validation outcome in the presence - of Ada in the $\fun{mint}$ field of the transaction is specified in the UTXO - ledger rule. The rule disallows the $\fun{mint}$ field to contain Ada. - - \item $\Quantity$ is an integer type that represents an amount of a specific $\AssetName$. We associate - a $q\in\Quantity$ with a specific asset to track how much of that asset is contained in a given asset value. - - \item $\Value$ is the multi-asset type that is used to represent - a collection of assets, including Ada. This type is a finitely supported map. - - If $\var{aid}$ is an $\AssetID$ and $v \in \Value$, - the quantity of assets with that assed ID contained in $v$ is $v~\var{aid}$. - Elements of $\Value$ are sometimes also referred to as - \emph{asset bundles}. -\end{itemize} - -To give $\Value$ the structure of a partially ordered monoid, we define the -required operations -pointwise, in accordance with the usual definitions of these operations on -finitely supported maps. See Figure \ref{fig:pointwise}. - -\begin{figure*}[t!] - \begin{align*} - v + w &= \{~ aid \mapsto v~\var{aid} + w~\var{aid} ~\vert~ \var{aid} \in \fun{dom}~v \cup \fun{dom}~w ~\} \\ - v \leq w &\Leftrightarrow \forall~\var{aid} \in \AssetID, v~\var{aid} \leq w~\var{aid} - \end{align*} - \caption{Pointwise operations on Value} - \label{fig:pointwise} -\end{figure*} - -\subsection{Special Ada representation} -Although all assets are native on the Cardano ledger (ie. the accounting and -transfer logic for them is done directly by the ledger), Ada is still treated in a -special way by the ledger rules, and is the most common type of asset on the ledger. -It can -be used for special purposes (such as fees) for which other assets cannot be used. -The underlying consensus algorithm relies on Ada in a way that -cannot be extended to user-defined assets. -Ada can also neither be minted nor burned. - -Note that in the $\Value$ definition above, we pick a special asset ID for Ada, that -is not part of the type which represents the asset IDs for all other assets. -Combining the asset name and policy for Ada gives a type-level guarantee that there is exactly -one kind of asset that is associated with it in any way, rather than -deriving this guarantee as an emergent property of minting rules. - -Additionally, not giving Ada an actual policy ID -(that could have a hash-associated policy) eliminates the possibility -certain cryptographic attacks. -We sometimes refer to Ada as the primary or principal currency. Ada does not, -for the purposes of the Mary ledger specification, have a $\PolicyID$ or an $\AssetName$. - -\subsection{Fixing a Token algebra} - -For the remainder of this specification, let $\ValMonoid$ be an -arbitrary but fixed Token algebra. As described above, choosing -$\Coin$ results in the Allegra ledger, and choosing $\Value$ results -in the Mary ledger. diff --git a/eras/shelley-ma/test-suite/.ghcid b/eras/shelley-ma/test-suite/.ghcid deleted file mode 100644 index 79c23268cf1..00000000000 --- a/eras/shelley-ma/test-suite/.ghcid +++ /dev/null @@ -1 +0,0 @@ ---command="cabal repl --repl-options='-isrc -fwarn-unused-binds -fwarn-unused-imports -fno-code -fobject-code -g2 -fno-break-on-exception -fno-break-on-error -ferror-spans -j -Wno-unused-packages'" --clear --no-height-limit --reverse-errors --reload=../../../ --outputfile=/tmp/cardano-ledger-shelley-ma-test-ghcid.txt \ No newline at end of file diff --git a/eras/shelley-ma/test-suite/CHANGELOG.md b/eras/shelley-ma/test-suite/CHANGELOG.md deleted file mode 100644 index 697e05fe0aa..00000000000 --- a/eras/shelley-ma/test-suite/CHANGELOG.md +++ /dev/null @@ -1,33 +0,0 @@ -# Version history for `cardano-ledger-shelley-ma-test` - -## 1.2.2.1 - -* - -## 1.2.2.0 - -* Replaced `small-steps-test` dependency with `small-steps:testlib` - -## 1.2.1.6 - -* - -## 1.2.1.5 - -* Move `cddl-files` to `cardano-ledger-allegra` and `cardano-ledger-mary` - -## 1.2.1.4 - -* - -## 1.2.1.3 - -* - -## 1.2.1.2 - -* - -## 1.2.1.1 - -* diff --git a/eras/shelley-ma/test-suite/README.md b/eras/shelley-ma/test-suite/README.md deleted file mode 100644 index 1928695149b..00000000000 --- a/eras/shelley-ma/test-suite/README.md +++ /dev/null @@ -1,9 +0,0 @@ -##### NOTE on ghc-options in the package cabal file. - -We set a memory bound here so that we're alerted of potential space -leaks in our generators (or test) code. - -The 4 megabytes stack bound and 250 megabytes heap bound were -determined ad-hoc. - -> This is here because comments in .cabal files do not survive a re-formatting by `cabal format`. diff --git a/eras/shelley-ma/test-suite/cardano-ledger-shelley-ma-test.cabal b/eras/shelley-ma/test-suite/cardano-ledger-shelley-ma-test.cabal deleted file mode 100644 index 18d0a181792..00000000000 --- a/eras/shelley-ma/test-suite/cardano-ledger-shelley-ma-test.cabal +++ /dev/null @@ -1,112 +0,0 @@ -cabal-version: 3.0 -name: cardano-ledger-shelley-ma-test -version: 1.2.2.0 -license: Apache-2.0 -maintainer: operations@iohk.io -author: IOHK -bug-reports: https://github.com/intersectmbo/cardano-ledger/issues -synopsis: Shelley ledger with multiasset and time lock support. -description: - This package extends the Shelley ledger with support for - native tokens and timelocks. - -category: Network -build-type: Simple - -source-repository head - type: git - location: https://github.com/intersectmbo/cardano-ledger - subdir: eras/shelley-ma/test-suite - -library - exposed-modules: - Test.Cardano.Ledger.TranslationTools - Test.Cardano.Ledger.EraBuffet - Test.Cardano.Ledger.MaryEraGen - Test.Cardano.Ledger.Mary.Golden - Test.Cardano.Ledger.Mary.Examples.Consensus - Test.Cardano.Ledger.AllegraEraGen - Test.Cardano.Ledger.Allegra.Examples.Consensus - Test.Cardano.Ledger.ShelleyMA.TxBody - Test.Cardano.Ledger.ShelleyMA.Serialisation.Generators - Test.Cardano.Ledger.ShelleyMA.Serialisation.Roundtrip - - hs-source-dirs: src - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints - -Wunused-packages - - build-depends: - base >=4.14 && <5, - bytestring, - cardano-ledger-binary:{cardano-ledger-binary, testlib} >=1.2, - cardano-ledger-core:{cardano-ledger-core, testlib} >=1.11, - cardano-ledger-allegra:{cardano-ledger-allegra, testlib} ^>=1.4, - cardano-ledger-mary:{cardano-ledger-mary, testlib} ^>=1.5, - cardano-slotting, - containers, - hashable, - cardano-ledger-shelley-test >=1.1, - cardano-ledger-shelley:{cardano-ledger-shelley, testlib} ^>=1.10, - cardano-strict-containers, - microlens, - mtl, - small-steps >=1.1, - tasty, - tasty-quickcheck, - tasty-hunit, - text, - QuickCheck - -test-suite cardano-ledger-shelley-ma-test - type: exitcode-stdio-1.0 - main-is: Tests.hs - hs-source-dirs: test - other-modules: - Test.Cardano.Ledger.Mary.Examples - Test.Cardano.Ledger.Mary.Examples.Cast - Test.Cardano.Ledger.Mary.Examples.MultiAssets - Test.Cardano.Ledger.Mary.Translation - Test.Cardano.Ledger.Mary.Value - Test.Cardano.Ledger.Allegra.Translation - Test.Cardano.Ledger.Allegra.ScriptTranslation - Test.Cardano.Ledger.ShelleyMA.Serialisation - Test.Cardano.Ledger.ShelleyMA.Serialisation.Golden.Encoding - Test.Cardano.Ledger.ShelleyMA.Serialisation.Timelocks - - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints - -Wunused-packages -threaded -rtsopts -with-rtsopts=-N - "-with-rtsopts=-K4m -M650m" - - build-depends: - base, - bytestring, - cardano-crypto-class, - cardano-data, - cardano-ledger-binary:{cardano-ledger-binary, testlib}, - cardano-ledger-core:{cardano-ledger-core, testlib}, - cardano-ledger-shelley-ma-test, - cardano-ledger-allegra, - cardano-ledger-mary:{cardano-ledger-mary, testlib}, - cardano-protocol-tpraos >=1.0, - cardano-slotting, - cborg, - containers, - data-default-class, - deepseq, - groups, - mtl, - microlens, - QuickCheck, - cardano-ledger-shelley-test, - cardano-ledger-shelley, - small-steps:{small-steps, testlib} >=1.1, - cardano-strict-containers, - tasty-hunit, - tasty-quickcheck, - tasty diff --git a/eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/Allegra/Examples/Consensus.hs b/eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/Allegra/Examples/Consensus.hs deleted file mode 100644 index 9acc41225b0..00000000000 --- a/eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/Allegra/Examples/Consensus.hs +++ /dev/null @@ -1,78 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Test.Cardano.Ledger.Allegra.Examples.Consensus where - -import Cardano.Ledger.Allegra -import Cardano.Ledger.Allegra.Core -import Cardano.Ledger.Allegra.Scripts -import Cardano.Ledger.Allegra.TxAuxData -import Cardano.Ledger.Allegra.TxBody -import Cardano.Ledger.AuxiliaryData -import Cardano.Ledger.Coin -import Cardano.Ledger.Shelley.PParams (Update (..)) -import Cardano.Slotting.Slot -import Data.Proxy -import qualified Data.Sequence.Strict as StrictSeq -import Lens.Micro -import Test.Cardano.Ledger.Core.KeyPair (mkAddr) -import Test.Cardano.Ledger.Core.Utils (mkDummySafeHash) -import Test.Cardano.Ledger.Shelley.Examples.Consensus - --- | ShelleyLedgerExamples for Allegra era -ledgerExamplesAllegra :: ShelleyLedgerExamples Allegra -ledgerExamplesAllegra = - defaultShelleyLedgerExamples - (mkWitnessesPreAlonzo (Proxy @Allegra)) - id - exampleCoin - (exampleAllegraTxBody exampleCoin) - exampleAllegraTxAuxData - () - -exampleAllegraTxBody :: - forall era. - ( AllegraEraTxBody era - , ShelleyEraTxBody era - ) => - Value era -> - TxBody era -exampleAllegraTxBody value = - mkBasicTxBody - & inputsTxBodyL .~ exampleTxIns - & outputsTxBodyL - .~ StrictSeq.singleton (mkBasicTxOut (mkAddr (examplePayKey, exampleStakeKey)) value) - & certsTxBodyL .~ exampleCerts - & withdrawalsTxBodyL .~ exampleWithdrawals - & feeTxBodyL .~ Coin 3 - & vldtTxBodyL .~ ValidityInterval (SJust (SlotNo 2)) (SJust (SlotNo 4)) - & updateTxBodyL .~ SJust (Update exampleProposedPPUpdates (EpochNo 0)) - & auxDataHashTxBodyL .~ SJust auxiliaryDataHash - where - -- Dummy hash to decouple from the auxiliary data in 'exampleTx'. - auxiliaryDataHash :: AuxiliaryDataHash (EraCrypto era) - auxiliaryDataHash = - AuxiliaryDataHash $ mkDummySafeHash (Proxy @(EraCrypto era)) 30 - -exampleTimelock :: Era era => Timelock era -exampleTimelock = - RequireMOf 2 $ - StrictSeq.fromList - [ RequireAllOf $ - StrictSeq.fromList - [ RequireTimeStart (SlotNo 0) - , RequireTimeExpire (SlotNo 9) - ] - , RequireAnyOf $ - StrictSeq.fromList - [ RequireSignature (mkKeyHash 0) - , RequireSignature (mkKeyHash 1) - ] - , RequireSignature (mkKeyHash 100) - ] - -exampleAllegraTxAuxData :: Era era => AllegraTxAuxData era -exampleAllegraTxAuxData = AllegraTxAuxData exampleAuxDataMap (StrictSeq.fromList [exampleTimelock]) diff --git a/eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/AllegraEraGen.hs b/eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/AllegraEraGen.hs deleted file mode 100644 index b791fd9049e..00000000000 --- a/eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/AllegraEraGen.hs +++ /dev/null @@ -1,214 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -fno-warn-orphans #-} - -module Test.Cardano.Ledger.AllegraEraGen ( - -- export EraGen instance for AllegraEra and helpers shared with MaryEra - quantifyTL, - unQuantifyTL, - someLeaf, - genValidityInterval, -) -where - -import Cardano.Ledger.Allegra (AllegraEra) -import Cardano.Ledger.Allegra.Core -import Cardano.Ledger.Allegra.Scripts (Timelock (..)) -import Cardano.Ledger.Allegra.TxBody (AllegraTxBody (..)) -import Cardano.Ledger.AuxiliaryData (AuxiliaryDataHash) -import Cardano.Ledger.BaseTypes (StrictMaybe (..)) -import Cardano.Ledger.Binary (encCBOR, serialize') -import Cardano.Ledger.Coin (Coin) -import qualified Cardano.Ledger.Crypto as CryptoClass -import Cardano.Ledger.Keys (KeyHash) -import Cardano.Ledger.Shelley.API (KeyRole (Witness)) -import Cardano.Ledger.Shelley.PParams (Update) -import Cardano.Ledger.Shelley.Tx (pattern ShelleyTx) -import Cardano.Ledger.Shelley.TxOut (ShelleyTxOut (..)) -import Cardano.Ledger.Shelley.TxWits (pattern ShelleyTxWits) -import Cardano.Ledger.TxIn (TxIn) -import Cardano.Ledger.Val ((<+>)) -import Cardano.Slotting.Slot (SlotNo (SlotNo)) -import Control.Monad (replicateM) -import Data.Hashable (hash) -import Data.Sequence.Strict (StrictSeq (..), fromList) -import qualified Data.Set as Set -import Lens.Micro -import Test.Cardano.Ledger.Allegra.Arbitrary () -import Test.Cardano.Ledger.Shelley.Constants (Constants (..)) -import Test.Cardano.Ledger.Shelley.Generator.Core (GenEnv (..), genCoin) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (EraGen (..), MinGenTxout (..)) -import Test.Cardano.Ledger.Shelley.Generator.ScriptClass ( - Quantifier (..), - ScriptClass (..), - ) -import Test.Cardano.Ledger.Shelley.Generator.Update (genPParams, genShelleyPParamsUpdate) -import Test.Cardano.Ledger.ShelleyMA.Serialisation.Generators () -import Test.QuickCheck (Arbitrary, Gen, arbitrary, frequency) - --- ========================================================== - -{------------------------------------------------------------------------------ - EraGen instance for AllegraEra - This instance makes it possible to run the - Shelley property tests for (AllegraEra c) - - This instance is layered on top of the ShelleyMA instances - in Cardano.Ledger.ShelleyMA.Scripts: - - `type instance Script (AllegraEra c) = Timelock (AllegraEra c)` - `instance ValidateScript (ShelleyMAEra ma c) where ...` -------------------------------------------------------------------------------} - -instance CryptoClass.Crypto c => ScriptClass (AllegraEra c) where - isKey _ (RequireSignature hk) = Just hk - isKey _ _ = Nothing - basescript _proxy = someLeaf @(AllegraEra c) - quantify _ = quantifyTL - unQuantify _ = unQuantifyTL - -instance CryptoClass.Crypto c => EraGen (AllegraEra c) where - genGenesisValue (GenEnv _keySpace _scriptspace Constants {minGenesisOutputVal, maxGenesisOutputVal}) = - genCoin minGenesisOutputVal maxGenesisOutputVal - genEraTxBody _ge _utxo _pparams = genTxBody - genEraAuxiliaryData = genAuxiliaryData - updateEraTxBody _utxo _pp _wits txBody fee ins out = - txBody - & inputsTxBodyL %~ (<> ins) - & outputsTxBodyL %~ (:|> out) - & feeTxBodyL .~ fee - genEraPParamsUpdate = genShelleyPParamsUpdate - genEraPParams = genPParams - genEraTxWits _scriptinfo setWitVKey mapScriptWit = ShelleyTxWits setWitVKey mapScriptWit mempty - constructTx = ShelleyTx - -genTxBody :: - AllegraEraTxBody era => - SlotNo -> - Set.Set (TxIn (EraCrypto era)) -> - StrictSeq (TxOut era) -> - StrictSeq (TxCert era) -> - Withdrawals (EraCrypto era) -> - Coin -> - StrictMaybe (Update era) -> - StrictMaybe (AuxiliaryDataHash (EraCrypto era)) -> - Gen (AllegraTxBody era, [Timelock era]) -genTxBody slot ins outs cert wdrl fee upd ad = do - validityInterval <- genValidityInterval slot - pure - ( AllegraTxBody - ins - outs - cert - wdrl - fee - validityInterval - upd - ad - , [] -- Allegra does not need any additional script witnesses - ) - -instance CryptoClass.Crypto c => MinGenTxout (AllegraEra c) where - calcEraMinUTxO _txout pp = pp ^. ppMinUTxOValueL - addValToTxOut v (ShelleyTxOut a u) = ShelleyTxOut a (v <+> u) - genEraTxOut _genenv genVal addrs = do - values <- replicateM (length addrs) genVal - pure (zipWith mkBasicTxOut addrs values) - -{------------------------------------------------------------------------------ - ShelleyMA helpers, shared by Allegra and Mary -------------------------------------------------------------------------------} - -quantifyTL :: Era era => Timelock era -> Quantifier (Timelock era) -quantifyTL (RequireAllOf xs) = AllOf (foldr (:) [] xs) -quantifyTL (RequireAnyOf xs) = AnyOf (foldr (:) [] xs) -quantifyTL (RequireMOf n xs) = MOf n (foldr (:) [] xs) -quantifyTL t = Leaf t - -unQuantifyTL :: Era era => Quantifier (Timelock era) -> Timelock era -unQuantifyTL (AllOf xs) = RequireAllOf (fromList xs) -unQuantifyTL (AnyOf xs) = RequireAnyOf (fromList xs) -unQuantifyTL (MOf n xs) = RequireMOf n (fromList xs) -unQuantifyTL (Leaf t) = t - -genAuxiliaryData :: - Arbitrary (TxAuxData era) => - Constants -> - Gen (StrictMaybe (TxAuxData era)) -genAuxiliaryData Constants {frequencyTxWithMetadata} = - frequency - [ (frequencyTxWithMetadata, SJust <$> arbitrary) - , (100 - frequencyTxWithMetadata, pure SNothing) - ] - --- | Generates a trivial validity interval that is valid for the current slot. --- --- Note: the validity interval must be a subset of all timelock --- script intervals that apply to the transaction. This depends on --- which generated scripts are actually required to validate the transaction --- (which is itself not always deterministic, e.g. 'RequireMOf n scripts'). --- --- A more sophisticated generator would compute which set of scripts --- would validate the transaction, and from that compute a minimal --- ValidityInterval that fits into all timelock slot ranges. -genValidityInterval :: SlotNo -> Gen ValidityInterval -genValidityInterval cs@(SlotNo currentSlot) = - pure $ - ValidityInterval - (SJust cs) - (SJust . SlotNo $ currentSlot + 1) - --- | Generate some Leaf Timelock (i.e. a Signature or TimeStart or TimeExpire). --- --- Because we don't know how these "leaf scripts" will be situated in larger scripts --- (e.g. the script generated here might form part of a 'RequireAll' or 'RequireMOf' script) --- we must make sure that all timelocks generated here are valid for all slots. --- --- To achieve this we arrange the timelock scripts like so: --- RequireAnyOf [ --- RequireAllOf [RequireTimeExpire k, RequireSignature x], --- RequireAllOf [RequireTimeStart k, RequireSignature x] --- ] --- where k is arbitrary. This means that regardless of slot, there will be a --- valid sub-branch of script. -someLeaf :: - forall era. - Era era => - KeyHash 'Witness (EraCrypto era) -> - Timelock era -someLeaf x = - let n = mod (hash (serialize' (eraProtVerLow @era) (encCBOR x))) 200 - in partition @era [n] [RequireSignature x] - -partition :: - forall era. - Era era => - [Int] -> - [Timelock era] -> - Timelock era -partition splits scripts = - RequireAnyOf . fromList $ - zipWith pair (intervals @era splits) (cycle scripts) - where - pair a b = RequireAllOf $ fromList [a, b] - -intervals :: - forall era. - Era era => - [Int] -> - [Timelock era] -intervals xs = zipWith mkInterval padded (tail padded) - where - padded = Nothing : (Just . SlotNo . fromIntegral <$> xs) ++ [Nothing] - start Nothing = [] - start (Just x) = [RequireTimeStart x] - end Nothing = [] - end (Just x) = [RequireTimeExpire x] - mkInterval s e = RequireAllOf . fromList $ start s ++ end e diff --git a/eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/EraBuffet.hs b/eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/EraBuffet.hs deleted file mode 100644 index e1c9a7a444b..00000000000 --- a/eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/EraBuffet.hs +++ /dev/null @@ -1,20 +0,0 @@ -module Test.Cardano.Ledger.EraBuffet ( - TestCrypto, - StandardCrypto, - ShelleyEra, - MaryEra, - AllegraEra, - Value, - Script, - TxBody, - TxAuxData, - Era (..), -) -where - -import Cardano.Ledger.Allegra (AllegraEra) -import Cardano.Ledger.Core (Script, TxAuxData, TxBody, Value) -import Cardano.Ledger.Era (Era, EraCrypto) -import Cardano.Ledger.Mary (MaryEra) -import Cardano.Ledger.Shelley (ShelleyEra) -import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes (StandardCrypto, TestCrypto) diff --git a/eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/Mary/Examples/Consensus.hs b/eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/Mary/Examples/Consensus.hs deleted file mode 100644 index 60adf497add..00000000000 --- a/eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/Mary/Examples/Consensus.hs +++ /dev/null @@ -1,43 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Test.Cardano.Ledger.Mary.Examples.Consensus where - -import Cardano.Ledger.Coin -import Cardano.Ledger.Crypto -import Cardano.Ledger.Mary (Mary) -import Cardano.Ledger.Mary.Core -import Cardano.Ledger.Mary.Value -import qualified Data.Map.Strict as Map (singleton) -import Data.Proxy -import Lens.Micro -import Test.Cardano.Ledger.Allegra.Examples.Consensus -import Test.Cardano.Ledger.MaryEraGen () -import Test.Cardano.Ledger.Shelley.Examples.Consensus - --- | ShelleyLedgerExamples for Allegra era -ledgerExamplesMary :: ShelleyLedgerExamples Mary -ledgerExamplesMary = - defaultShelleyLedgerExamples - (mkWitnessesPreAlonzo (Proxy @Mary)) - id - (exampleMultiAssetValue 1) - ((exampleAllegraTxBody (exampleMultiAssetValue 1)) & mintTxBodyL .~ exampleMultiAsset 1) - exampleAllegraTxAuxData - mempty - -exampleMultiAssetValue :: Crypto c => Int -> MaryValue c -exampleMultiAssetValue x = MaryValue (Coin 100) $ exampleMultiAsset x - -exampleMultiAsset :: forall c. Crypto c => Int -> MultiAsset c -exampleMultiAsset x = - MultiAsset (Map.singleton policyId $ Map.singleton couttsCoin 1000) - where - policyId :: PolicyID c - policyId = PolicyID $ mkScriptHash x - - couttsCoin :: AssetName - couttsCoin = AssetName "couttsCoin" diff --git a/eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/Mary/Golden.hs b/eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/Mary/Golden.hs deleted file mode 100644 index 327f1e9fbd6..00000000000 --- a/eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/Mary/Golden.hs +++ /dev/null @@ -1,207 +0,0 @@ -{-# LANGUAGE TupleSections #-} -{-# LANGUAGE TypeApplications #-} - --- | --- Module : Test.Cardano.Ledger.Mary.Golden --- Description : Golden Tests for the Mary era -module Test.Cardano.Ledger.Mary.Golden ( - goldenScaledMinDeposit, - pid1, - pid2, - pid3, - smallName, - smallestName, - realName, - minUTxO, - largestName, -) -where - -import Cardano.Ledger.Allegra.Scripts (Timelock (..)) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Core (hashScript) -import Cardano.Ledger.Mary (Mary) -import Cardano.Ledger.Mary.TxOut (scaledMinDeposit) -import Cardano.Ledger.Mary.Value (AssetName (..), MaryValue (..), MultiAsset (..), PolicyID (..)) -import Cardano.Ledger.Slot (SlotNo (..)) -import qualified Data.ByteString.Short as SBS -import qualified Data.Map.Strict as Map -import qualified Data.Sequence.Strict as StrictSeq -import qualified Data.Text as Text -import qualified Data.Text.Encoding as Text -import Data.Word (Word8) -import Test.Cardano.Ledger.EraBuffet (StandardCrypto) -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.HUnit (testCase, (@?=)) - --- --- Golden Tests for the scaled MinUTxO function --- - -pid1 :: PolicyID StandardCrypto -pid1 = - PolicyID $ - hashScript @Mary $ - RequireAllOf (StrictSeq.fromList []) - -pid2 :: PolicyID StandardCrypto -pid2 = - PolicyID $ - hashScript @Mary $ - RequireAllOf (StrictSeq.fromList [RequireTimeStart (SlotNo 1)]) - -pid3 :: PolicyID StandardCrypto -pid3 = - PolicyID $ - hashScript @Mary $ - RequireAllOf (StrictSeq.fromList [RequireTimeExpire (SlotNo 1)]) - --- | The smallest asset name has length zero -smallestName :: AssetName -smallestName = AssetName $ SBS.pack [] - --- | The small asset names have length one -smallName :: Word8 -> AssetName -smallName c = AssetName $ SBS.pack [c] - --- | The largest asset names have length thirty-two -largestName :: Word8 -> AssetName -largestName c = AssetName . SBS.pack $ c : [1 .. 31] - --- | try using a real asset name the way the CLI handles input -realName :: AssetName -realName = AssetName . SBS.toShort . Text.encodeUtf8 . Text.pack $ "ATADAcoin" - --- | This is the current value of the protocol parameter --- at the time this comment was written, namely one Ada. -minUTxO :: Coin -minUTxO = Coin $ 1000 * 1000 - -goldenScaledMinDeposit :: TestTree -goldenScaledMinDeposit = - testGroup - "golden tests - scaledMinDeposit" - [ testCase "one policy, one (smallest) name" $ - scaledMinDeposit - ( MaryValue (Coin 1407406) $ - MultiAsset $ - Map.singleton pid1 (Map.fromList [(smallestName, 1)]) - ) - minUTxO - @?= Coin 1407406 - , testCase "one policy, one (small) name" $ - scaledMinDeposit - ( MaryValue (Coin 1444443) $ - MultiAsset $ - Map.singleton - pid1 - (Map.fromList [(smallName 1, 1)]) - ) - minUTxO - @?= Coin 1444443 - , testCase "one policy, one (real) name" $ - scaledMinDeposit - ( MaryValue (Coin 1444443) $ - MultiAsset $ - Map.singleton - pid1 - (Map.fromList [(realName, 1)]) - ) - minUTxO - @?= Coin 1481480 - , testCase "one policy, three (small) name" $ - scaledMinDeposit - ( MaryValue (Coin 1555554) $ - MultiAsset $ - Map.singleton - pid1 - ( Map.fromList - [ (smallName 1, 1) - , (smallName 2, 1) - , (smallName 3, 1) - ] - ) - ) - minUTxO - @?= Coin 1555554 - , testCase "one policy, one (largest) name" $ - scaledMinDeposit - ( MaryValue (Coin 1555554) $ - MultiAsset $ - Map.singleton - pid1 - (Map.fromList [(largestName 65, 1)]) - ) - minUTxO - @?= Coin 1555554 - , testCase "one policy, three (largest) name" $ - scaledMinDeposit - ( MaryValue (Coin 1962961) $ - MultiAsset $ - Map.singleton - pid1 - ( Map.fromList - [ (largestName 65, 1) - , (largestName 66, 1) - , (largestName 67, 1) - ] - ) - ) - minUTxO - @?= Coin 1962961 - , testCase "two policies, one (smallest) name" $ - scaledMinDeposit - ( MaryValue (Coin 1592591) $ - MultiAsset $ - Map.fromList - [ - ( pid1 - , Map.fromList [(smallestName, 1)] - ) - , - ( pid2 - , Map.fromList [(smallestName, 1)] - ) - ] - ) - minUTxO - @?= Coin 1592591 - , testCase "two policies, two (small) names" $ - scaledMinDeposit - ( MaryValue (Coin 1629628) $ - MultiAsset $ - Map.fromList - [ - ( pid1 - , Map.fromList [(smallName 1, 1)] - ) - , - ( pid2 - , Map.fromList [(smallName 2, 1)] - ) - ] - ) - minUTxO - @?= Coin 1629628 - , testCase "three policies, ninety-six (small) names" $ - scaledMinDeposit - ( MaryValue (Coin 7407400) $ - MultiAsset $ - Map.fromList - [ - ( pid1 - , Map.fromList $ map ((,1) . smallName) [32 .. 63] - ) - , - ( pid2 - , Map.fromList $ map ((,1) . smallName) [64 .. 95] - ) - , - ( pid3 - , Map.fromList $ map ((,1) . smallName) [96 .. 127] - ) - ] - ) - minUTxO - @?= Coin 7407400 - ] diff --git a/eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/MaryEraGen.hs b/eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/MaryEraGen.hs deleted file mode 100644 index 4bb2ef679f0..00000000000 --- a/eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/MaryEraGen.hs +++ /dev/null @@ -1,337 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -fno-warn-orphans #-} - --- | Export the EraGen instance for MaryEra, as well as some reusable functions for future Eras -module Test.Cardano.Ledger.MaryEraGen ( - genMint, - maryGenesisValue, - policyIndex, - addTokens, -) where - -import Cardano.Ledger.Allegra.Scripts (Timelock (..)) -import Cardano.Ledger.AuxiliaryData (AuxiliaryDataHash) -import Cardano.Ledger.BaseTypes (StrictMaybe (..)) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto -import Cardano.Ledger.Mary.TxBody (MaryTxBody (MaryTxBody)) -import Cardano.Ledger.Mary.Value ( - AssetName (..), - MaryValue (..), - MultiAsset, - PolicyID (..), - multiAssetFromList, - policies, - ) -import Cardano.Ledger.Shelley.PParams (Update) -import Cardano.Ledger.Shelley.TxBody (Withdrawals) -import Cardano.Ledger.Shelley.TxOut (ShelleyTxOut (..)) -import Cardano.Ledger.Shelley.TxWits (ShelleyTxWits (ShelleyTxWits)) -import Cardano.Ledger.TxIn (TxIn) -import Cardano.Ledger.Val ((<+>)) -import qualified Cardano.Ledger.Val as Val -import Cardano.Slotting.Slot (SlotNo) -import Control.Monad (replicateM) -import Data.Map (Map) -import qualified Data.Map.Strict as Map -import Data.Proxy (Proxy (..)) -import Data.Sequence.Strict (StrictSeq (..), (<|), (><)) -import qualified Data.Sequence.Strict as StrictSeq -import qualified Data.Set as Set -import GHC.Exts (fromString) -import Lens.Micro -import Test.Cardano.Ledger.Allegra.Arbitrary () -import Test.Cardano.Ledger.AllegraEraGen ( - genValidityInterval, - quantifyTL, - someLeaf, - unQuantifyTL, - ) -import Test.Cardano.Ledger.EraBuffet (MaryEra) -import Test.Cardano.Ledger.Shelley.Constants (Constants (..)) -import Test.Cardano.Ledger.Shelley.Generator.Core (GenEnv (..), genInteger) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (EraGen (..), MinGenTxout (..)) -import Test.Cardano.Ledger.Shelley.Generator.ScriptClass ( - ScriptClass (..), - exponential, - ) -import Test.Cardano.Ledger.Shelley.Generator.Update (genPParams, genShelleyPParamsUpdate) -import Test.Cardano.Ledger.Shelley.Utils (Split (..)) -import Test.QuickCheck (Gen, arbitrary, frequency) -import qualified Test.QuickCheck as QC - -{------------------------------------------------------------------------------ - EraGen instance for MaryEra - This instance makes it possible to run the - Shelley property tests for (MaryEra c) - - This instance is layered on top of the ShelleyMA instances - in Cardano.Ledger.ShelleyMA.Scripts: - - `type instance Script (MaryEra c) = Timelock (MaryEra c)` - `instance ValidateScript (ShelleyMAEra ma c) where ... ` -------------------------------------------------------------------------------} - -instance Crypto c => ScriptClass (MaryEra c) where - isKey _ (RequireSignature hk) = Just hk - isKey _ _ = Nothing - basescript _proxy = someLeaf @(MaryEra c) - quantify _ = quantifyTL - unQuantify _ = unQuantifyTL - -instance Crypto c => EraGen (MaryEra c) where - genGenesisValue = maryGenesisValue - genEraTxBody _ge _utxo = genTxBody - genEraAuxiliaryData = genAuxiliaryData - updateEraTxBody _utxo _pp _wits txBody fee ins out = - txBody - & inputsTxBodyL <>~ ins - & outputsTxBodyL %~ (:|> out) - & feeTxBodyL .~ fee - genEraPParamsUpdate = genShelleyPParamsUpdate - genEraPParams = genPParams - genEraTxWits _scriptinfo setWitVKey mapScriptWit = ShelleyTxWits setWitVKey mapScriptWit mempty - -genAuxiliaryData :: Crypto c => Constants -> Gen (StrictMaybe (TxAuxData (MaryEra c))) -genAuxiliaryData Constants {frequencyTxWithMetadata} = - frequency - [ (frequencyTxWithMetadata, SJust <$> arbitrary) - , (100 - frequencyTxWithMetadata, pure SNothing) - ] - --- | Carefully crafted to apply in any Era where Value is MaryValue -maryGenesisValue :: GenEnv era -> Gen (MaryValue c) -maryGenesisValue (GenEnv _ _ Constants {minGenesisOutputVal, maxGenesisOutputVal}) = - Val.inject . Coin <$> exponential minGenesisOutputVal maxGenesisOutputVal - --------------------------------------------------------- --- Permissionless Tokens -- --- -- --- We introduce three token bundles, each which has a -- --- permissionless minting policy and each which has a -- --- different minting behavior (use of asset names). -- --------------------------------------------------------- - --- | An infinite indexed collection of trivial policies. --- They are trivial in the sense that they require no --- signature and can be submitted at any time. -trivialPolicy :: Era era => Int -> Timelock era -trivialPolicy i - | i == 0 = RequireAllOf (StrictSeq.fromList []) - | otherwise = RequireAllOf (StrictSeq.fromList [trivialPolicy (i - 1)]) - -coloredCoinMinMint :: Integer -coloredCoinMinMint = 1000 - -coloredCoinMaxMint :: Integer -coloredCoinMaxMint = 1000 * 1000 - --------------------------------------------------------- --- Red Coins -- --- -- --- These tokens are always minted with the same asset -- --- name, "red". -- --------------------------------------------------------- - -redCoins :: Era era => Timelock era -redCoins = trivialPolicy 0 - -redCoinId :: forall c. Crypto c => PolicyID c -redCoinId = PolicyID $ hashScript @(MaryEra c) redCoins - -red :: AssetName -red = AssetName "red" - -genRed :: Crypto c => Gen (MultiAsset c) -genRed = do - n <- genInteger coloredCoinMinMint coloredCoinMaxMint - pure $ multiAssetFromList [(redCoinId, red, n)] - --------------------------------------------------------- --- Blue Coins -- --- -- --- These tokens are (nearly) always minted with a new -- --- asset name. --------------------------------------------------------- - -blueCoins :: Era era => Timelock era -blueCoins = trivialPolicy 1 - -blueCoinId :: forall c. Crypto c => PolicyID c -blueCoinId = PolicyID $ hashScript @(MaryEra c) blueCoins - -maxBlueMint :: Int -maxBlueMint = 5 - --- TODO these blue coins are actually problematic since our --- current coin selection algorithm does not prevent creating --- a multi-asset that is too large. - -genBlue :: Crypto c => Gen (MultiAsset c) -genBlue = do - as <- QC.resize maxBlueMint $ QC.listOf genSingleBlue - -- the transaction size gets too big if we mint too many assets - pure $ multiAssetFromList (map (\(asset, count) -> (blueCoinId, asset, count)) as) - where - genSingleBlue = do - n <- genInteger coloredCoinMinMint coloredCoinMaxMint - a <- arbitrary - pure (AssetName a, n) - --------------------------------------------------------- --- Yellow Coins -- --- -- --- These tokens are minted with a small variety of -- --- asset names. -- --------------------------------------------------------- - -yellowCoins :: Era era => Timelock era -yellowCoins = trivialPolicy 2 - -yellowCoinId :: forall c. Crypto c => PolicyID c -yellowCoinId = PolicyID $ hashScript @(MaryEra c) yellowCoins - -yellowNumAssets :: Int -yellowNumAssets = 5 - -genYellow :: Crypto c => Gen (MultiAsset c) -genYellow = do - xs <- QC.sublistOf [0 .. yellowNumAssets] - as <- mapM genSingleYellow xs - pure $ multiAssetFromList (map (\(asset, count) -> (yellowCoinId, asset, count)) as) - where - genSingleYellow x = do - y <- genInteger coloredCoinMinMint coloredCoinMaxMint - let an = AssetName . fromString $ "yellow" <> show x - pure (an, y) - --- | Carefully crafted to apply in any Era where Value is MaryValue --- | This map allows us to lookup a minting policy by the policy ID. -policyIndex :: Era era => Map (PolicyID (EraCrypto era)) (Timelock era) -policyIndex = - Map.fromList - [ (redCoinId, redCoins) - , (blueCoinId, blueCoins) - , (yellowCoinId, yellowCoins) - ] - --------------------------------------------------------- --- Minting Frequencies -- --- -- --- The frequencies represent a percent chance of any -- --- given transaction to mint one of the three token -- --- bundles. -- --------------------------------------------------------- - -redFreq :: Int -redFreq = 10 - -blueFreq :: Int -blueFreq = 1 - -yellowFreq :: Int -yellowFreq = 20 - -genBundle :: Int -> Gen (MultiAsset c) -> Gen (MultiAsset c) -genBundle freq g = QC.frequency [(freq, g), (100 - freq, pure mempty)] - -genMint :: Crypto c => Gen (MultiAsset c) -genMint = do - r <- genBundle redFreq genRed - b <- genBundle blueFreq genBlue - y <- genBundle yellowFreq genYellow - pure $ r <> b <> y - -------------------------------- --- END Permissionless Tokens -- -------------------------------- - --- | Carefully crafted to apply to any Era where Value is MaryValue --- We attempt to Add tokens to a non-empty list of transaction outputs. --- It will add them to the first output that has enough lovelace --- to meet the minUTxO requirment, if such an output exists. -addTokens :: - forall era. - ( EraGen era - , Value era ~ MaryValue (EraCrypto era) - ) => - Proxy era -> - StrictSeq (TxOut era) -> -- This is an accumuating parameter - PParams era -> - MultiAsset (EraCrypto era) -> - StrictSeq (TxOut era) -> - Maybe (StrictSeq (TxOut era)) -addTokens proxy tooLittleLovelace pparams ts (txOut :<| os) = - if txOut ^. coinTxOutL < getMinCoinTxOut pparams txOut - then addTokens proxy (txOut :<| tooLittleLovelace) pparams ts os - else Just $ tooLittleLovelace >< addValToTxOut @era (MaryValue mempty ts) txOut <| os -addTokens _proxy _ _ _ StrictSeq.Empty = Nothing - --- | This function is only good in the Mary Era -genTxBody :: - forall era. - ( EraGen era - , Value era ~ MaryValue (EraCrypto era) - , TxOut era ~ ShelleyTxOut era - ) => - PParams era -> - SlotNo -> - Set.Set (TxIn (EraCrypto era)) -> - StrictSeq (ShelleyTxOut era) -> - StrictSeq (TxCert era) -> - Withdrawals (EraCrypto era) -> - Coin -> - StrictMaybe (Update era) -> - StrictMaybe (AuxiliaryDataHash (EraCrypto era)) -> - Gen (MaryTxBody era, [Timelock era]) -genTxBody pparams slot ins outs cert wdrl fee upd meta = do - validityInterval <- genValidityInterval slot - mint <- genMint - let (mint', outs') = case addTokens (Proxy @era) StrictSeq.Empty pparams mint outs of - Nothing -> (mempty, outs) - Just os -> (mint, os) - ps = - map (\k -> Map.findWithDefault (error $ "Cannot find policy: " ++ show k) k policyIndex) $ - Set.toList $ - policies mint - pure - ( MaryTxBody - ins - outs' - cert - wdrl - fee - validityInterval - upd - meta - mint' - , ps -- These additional scripts are for the minting policies. - ) - -instance Split (MaryValue era) where - vsplit (MaryValue n _) 0 = ([], n) - vsplit (MaryValue (Coin n) mp) m - | m <= 0 = error "must split coins into positive parts" - | otherwise = - ( take - (fromIntegral m) - (MaryValue (Coin (n `div` m)) mp : repeat (MaryValue (Coin (n `div` m)) mempty)) - , Coin (n `rem` m) - ) - -instance Crypto c => MinGenTxout (MaryEra c) where - calcEraMinUTxO _txout pp = pp ^. ppMinUTxOValueL - addValToTxOut v (ShelleyTxOut a u) = ShelleyTxOut a (v <+> u) - genEraTxOut _genenv genVal addrs = do - values <- replicateM (length addrs) genVal - let makeTxOut (addr, val) = ShelleyTxOut addr val - pure (makeTxOut <$> zip addrs values) diff --git a/eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/ShelleyMA/Serialisation/Generators.hs b/eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/ShelleyMA/Serialisation/Generators.hs deleted file mode 100644 index c6c98ab29d5..00000000000 --- a/eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/ShelleyMA/Serialisation/Generators.hs +++ /dev/null @@ -1,9 +0,0 @@ -module Test.Cardano.Ledger.ShelleyMA.Serialisation.Generators ( - sizedTimelock, - maxTimelockDepth, -) where - -import Test.Cardano.Ledger.Allegra.Arbitrary ( - maxTimelockDepth, - sizedTimelock, - ) diff --git a/eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/ShelleyMA/Serialisation/Roundtrip.hs b/eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/ShelleyMA/Serialisation/Roundtrip.hs deleted file mode 100644 index 2436a944a25..00000000000 --- a/eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/ShelleyMA/Serialisation/Roundtrip.hs +++ /dev/null @@ -1,51 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE MonoLocalBinds #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.ShelleyMA.Serialisation.Roundtrip where - -import Cardano.Ledger.Allegra (Allegra) -import Cardano.Ledger.Binary (DecCBOR, EncCBOR) -import Cardano.Ledger.Core -import Cardano.Ledger.Mary (Mary) -import Cardano.Ledger.Shelley (Shelley) -import Cardano.Ledger.Shelley.API (ApplyTx, ApplyTxError) -import Control.State.Transition.Extended (PredicateFailure) -import Data.Proxy (Proxy (Proxy)) -import Data.Typeable (typeRep) -import Test.Cardano.Ledger.Binary.RoundTrip ( - roundTripCborExpectation, - ) -import Test.Cardano.Ledger.Mary.Arbitrary () -import Test.Cardano.Ledger.Shelley.Generator.TxAuxData () -import Test.Cardano.Ledger.Shelley.Serialisation.Generators () -import Test.Cardano.Ledger.ShelleyMA.Serialisation.Generators () -import Test.QuickCheck (Arbitrary) -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.QuickCheck (testProperty) - -eraRoundTripProps :: - forall e. - ( ApplyTx e - , Arbitrary (ApplyTxError e) - , EncCBOR (PredicateFailure (EraRule "LEDGER" e)) - , DecCBOR (PredicateFailure (EraRule "LEDGER" e)) - ) => - TestTree -eraRoundTripProps = - testGroup - (show $ typeRep (Proxy @e)) - [ testProperty "ApplyTxError" $ roundTripCborExpectation @(ApplyTxError e) - ] - -allEraRoundtripTests :: TestTree -allEraRoundtripTests = - testGroup - "All Era Roundtrip Tests" - [ eraRoundTripProps @Shelley - , eraRoundTripProps @Allegra - , eraRoundTripProps @Mary - ] diff --git a/eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/ShelleyMA/TxBody.hs b/eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/ShelleyMA/TxBody.hs deleted file mode 100644 index a1bbb802366..00000000000 --- a/eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/ShelleyMA/TxBody.hs +++ /dev/null @@ -1,80 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - --- ========================= - -module Test.Cardano.Ledger.ShelleyMA.TxBody ( - txBodyTest, -) -where - -import Cardano.Ledger.Allegra.Scripts (Timelock (..), ValidityInterval (..)) -import Cardano.Ledger.Allegra.TxBody (AllegraEraTxBody (..)) -import Cardano.Ledger.BaseTypes (StrictMaybe (SJust, SNothing)) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto -import Cardano.Ledger.Mary (Mary) -import Cardano.Ledger.Mary.TxBody (MaryEraTxBody (..)) -import Cardano.Ledger.Mary.Value (AssetName (..), MultiAsset (..), PolicyID (..)) -import Cardano.Ledger.MemoBytes (getMemoRawBytes) -import Cardano.Ledger.Shelley.TxBody (ShelleyEraTxBody (..), Withdrawals (..)) -import Cardano.Slotting.Slot (SlotNo (..)) -import qualified Data.ByteString.Short as Short -import qualified Data.Map.Strict as Map -import Data.Sequence.Strict (fromList) -import qualified Data.Sequence.Strict as StrictSeq -import Data.Set (empty) -import Data.String (fromString) -import Lens.Micro -import Test.Cardano.Ledger.Shelley.Serialisation.Generators () -import Test.Tasty -import Test.Tasty.HUnit - --- ==================================================================================================== --- Make a TxBody to test with - -txM :: TxBody Mary -txM = - mkBasicTxBody - & feeTxBodyL .~ Coin 6 - & vldtTxBodyL .~ ValidityInterval (SJust (SlotNo 3)) (SJust (SlotNo 42)) - & mintTxBodyL .~ testMint - -testMint :: MultiAsset StandardCrypto -testMint = MultiAsset $ Map.singleton policyId (Map.singleton aname 2) - where - policyId = PolicyID . hashScript @Mary . RequireAnyOf $ fromList [] - aname = AssetName $ fromString "asset name" - -fieldTests :: TestTree -fieldTests = - testGroup - "Tests for lenses" - [ testCase "inputs" (assertEqual "inputs" (txM ^. inputsTxBodyL) empty) - , testCase "outputs" (assertEqual "outputs" (txM ^. outputsTxBodyL) StrictSeq.empty) - , testCase "certs" (assertEqual "certs" (txM ^. certsTxBodyL) StrictSeq.empty) - , testCase - "withdrawals" - (assertEqual "withdrawals" (txM ^. withdrawalsTxBodyL) (Withdrawals Map.empty)) - , testCase "txfree" (assertEqual "txfree" (txM ^. feeTxBodyL) (Coin 6)) - , testCase "vldt" $ - assertEqual "vldt" (txM ^. vldtTxBodyL) $ - ValidityInterval (SJust (SlotNo 3)) (SJust (SlotNo 42)) - , testCase "update" (assertEqual "update" (txM ^. updateTxBodyL) SNothing) - , testCase "adHash" (assertEqual "adHash" (txM ^. auxDataHashTxBodyL) SNothing) - , testCase "mint" (assertEqual "mint" (txM ^. mintTxBodyL) testMint) - ] - -txBodyTest :: TestTree -txBodyTest = - testGroup - "TxBody" - [ fieldTests - , testCase "length" (assertEqual "length" 57 (Short.length (getMemoRawBytes txM))) - ] diff --git a/eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/TranslationTools.hs b/eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/TranslationTools.hs deleted file mode 100644 index e626162cbf2..00000000000 --- a/eras/shelley-ma/test-suite/src/Test/Cardano/Ledger/TranslationTools.hs +++ /dev/null @@ -1,80 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - --- TODO: Move to cardano-ledger-core:test-lib -module Test.Cardano.Ledger.TranslationTools ( - translateEraPartial, - translateEraEncoding, - translateEraEncCBOR, -) -where - -import Cardano.Ledger.Binary (EncCBOR (..), toPlainEncoding) -import qualified Cardano.Ledger.Binary.Plain as Plain -import Cardano.Ledger.Core -import Control.Monad -import Control.Monad.Except (runExcept) -import GHC.Stack -import Test.Cardano.Ledger.Binary.TreeDiff (CBORBytes (..), diffExprNoColor) -import Test.Tasty.HUnit (Assertion, assertFailure) - -translateEraPartial :: - forall era f. - (TranslateEra era f, Show (TranslationError era f), HasCallStack) => - TranslationContext era -> - f (PreviousEra era) -> - f era -translateEraPartial tc fe = - case runExcept $ translateEra @era tc fe of - Right result -> result - Left err -> error $ "TranslateEra failure: " <> show err - --- Tests that the serializing before translation or after translating does not change the --- result --- --- FIXME: This property only holds for annotated types. Replace this test with a better --- one, since there is no requirement for two different eras to encode the type in the --- same way. There is, however a requirement that the encoding from a previous era, must --- be decodable by the current era. -translateEraEncoding :: - forall era f. - ( HasCallStack - , TranslateEra era f - , Show (TranslationError era f) - ) => - TranslationContext era -> - (f era -> Plain.Encoding) -> - (f (PreviousEra era) -> Plain.Encoding) -> - f (PreviousEra era) -> - Assertion -translateEraEncoding tc encodeThisEra encodePreviousEra x = - let previousEra = - Plain.serialize' (encodePreviousEra x) - currentEra = - Plain.serialize' (encodeThisEra $ translateEraPartial @era tc x) - in unless (previousEra == currentEra) $ - assertFailure $ - diffExprNoColor (CBORBytes previousEra) (CBORBytes currentEra) - --- Tests that the serializing before translation or after translating --- does not change the result -translateEraEncCBOR :: - forall proxy era f. - ( HasCallStack - , TranslateEra era f - , EncCBOR (f era) - , EncCBOR (f (PreviousEra era)) - , Show (TranslationError era f) - ) => - proxy era -> - TranslationContext era -> - f (PreviousEra era) -> - Assertion -translateEraEncCBOR _ tc = - translateEraEncoding @era - tc - (toEraCBOR @era) - (toPlainEncoding (eraProtVerHigh @(PreviousEra era)) . encCBOR) diff --git a/eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/Allegra/ScriptTranslation.hs b/eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/Allegra/ScriptTranslation.hs deleted file mode 100644 index c59559bd686..00000000000 --- a/eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/Allegra/ScriptTranslation.hs +++ /dev/null @@ -1,77 +0,0 @@ -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Allegra.ScriptTranslation ( - testScriptPostTranslation, -) -where - -import Cardano.Ledger.Allegra (Allegra) -import Cardano.Ledger.Crypto (StandardCrypto) -import Cardano.Ledger.Shelley (Shelley) -import qualified Cardano.Ledger.Shelley.API as S -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState (LedgerState (..)) -import qualified Cardano.Ledger.Val as Val -import Cardano.Slotting.Slot (SlotNo (..)) -import Control.Monad.Except (runExcept) -import Control.State.Transition.Extended (TRC (..)) -import Data.Default.Class (def) -import qualified Data.Map.Strict as Map -import qualified Data.Sequence.Strict as StrictSeq -import qualified Data.Set as Set -import GHC.Stack -import Lens.Micro ((&), (.~)) -import Test.Cardano.Ledger.Shelley.Utils (applySTSTest, runShelleyBase) -import Test.Tasty (TestTree) -import Test.Tasty.HUnit (testCase) - -bootstrapTxId :: S.TxId StandardCrypto -bootstrapTxId = txIdTxBody @Shelley mkBasicTxBody - -fromRight :: HasCallStack => Either e a -> a -fromRight (Right x) = x -fromRight _ = error "Expected Right" - -script :: S.MultiSig Shelley -script = S.RequireAllOf [] - -scriptHash :: S.ScriptHash StandardCrypto -scriptHash = hashScript @Shelley script - -testScriptPostTranslation :: TestTree -testScriptPostTranslation = - testCase - "we should still be able to spend a translated script" - $ let addr = - S.Addr - S.Testnet - (S.ScriptHashObj scriptHash) - S.StakeRefNull - utxo = - S.UTxO $ - Map.singleton - (S.TxIn bootstrapTxId minBound) - (S.ShelleyTxOut addr (Val.inject (S.Coin 1))) - env = S.LedgerEnv (SlotNo 0) minBound emptyPParams (S.AccountState (S.Coin 0) (S.Coin 0)) - utxoStShelley = def {S.utxosUtxo = utxo} - utxoStAllegra = fromRight . runExcept $ translateEra @Allegra () utxoStShelley - txb = - S.ShelleyTxBody - (Set.singleton $ S.TxIn bootstrapTxId minBound) - StrictSeq.empty - StrictSeq.empty - (S.Withdrawals mempty) - (S.Coin 1) - (SlotNo 1) - S.SNothing - S.SNothing - wits = mkBasicTxWits & scriptTxWitsL .~ Map.singleton scriptHash script - txs = S.ShelleyTx txb wits S.SNothing - txa = fromRight . runExcept $ translateEra @Allegra () txs - result = - runShelleyBase $ - applySTSTest @(S.ShelleyLEDGER Allegra) - (TRC (env, LedgerState utxoStAllegra def, txa)) - in case result of - Left e -> error $ show e - Right _ -> pure () diff --git a/eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/Allegra/Translation.hs b/eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/Allegra/Translation.hs deleted file mode 100644 index f31523195db..00000000000 --- a/eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/Allegra/Translation.hs +++ /dev/null @@ -1,70 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Allegra.Translation ( - allegraTranslationTests, - allegraEncodeDecodeTests, -) -where - -import Cardano.Ledger.Allegra (Allegra) -import Cardano.Ledger.Binary -import Cardano.Ledger.Core -import Cardano.Ledger.Shelley (Shelley) -import qualified Cardano.Ledger.Shelley.API as S -import Test.Cardano.Ledger.Binary.RoundTrip -import Test.Cardano.Ledger.Shelley.Generator.ShelleyEraGen () -import Test.Cardano.Ledger.Shelley.Serialisation.Generators () -import Test.Cardano.Ledger.TranslationTools (translateEraEncCBOR, translateEraEncoding) -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.HUnit (Assertion) -import Test.Tasty.QuickCheck (testProperty) - -allegraEncodeDecodeTests :: TestTree -allegraEncodeDecodeTests = - testGroup - "encoded shelley types can be decoded as allegra types" - [ testProperty - "decoding auxiliary data" - ( embedTripAnnExpectation @(TxAuxData Shelley) @(TxAuxData Allegra) - (eraProtVerLow @Shelley) - (eraProtVerLow @Allegra) - (\_ _ -> pure ()) - ) - ] - -allegraTranslationTests :: TestTree -allegraTranslationTests = - testGroup - "Allegra translation binary compatibiliby tests" - [ testProperty "Tx compatibility" $ - translateEraEncoding @Allegra @S.ShelleyTx () toCBOR toCBOR - , testProperty "ProposedPPUpdates compatibility" (testTranslation @S.ProposedPPUpdates) - , testProperty "ShelleyGovState compatibility" $ - translateEraEncoding @Allegra @S.ShelleyGovState () toCBOR toCBOR - , testProperty "TxOut compatibility" (testTranslation @S.ShelleyTxOut) - , testProperty "UTxO compatibility" $ - translateEraEncoding @Allegra @S.UTxO () toCBOR toCBOR - , testProperty "UTxOState compatibility" $ - translateEraEncoding @Allegra @S.UTxOState () toCBOR toCBOR - , testProperty "LedgerState compatibility" $ - translateEraEncoding @Allegra @S.LedgerState () toCBOR toCBOR - , testProperty "EpochState compatibility" $ - translateEraEncoding @Allegra @S.EpochState () toCBOR toCBOR - , testProperty "ShelleyTxWits compatibility" $ - translateEraEncoding @Allegra @S.ShelleyTxWits () toCBOR toCBOR - , testProperty "Update compatibility" (testTranslation @S.Update) - ] - -testTranslation :: - forall f. - ( EncCBOR (f Allegra) - , EncCBOR (f Shelley) - , TranslateEra Allegra f - , Show (TranslationError Allegra f) - ) => - f Shelley -> - Assertion -testTranslation = translateEraEncCBOR ([] :: [Allegra]) () diff --git a/eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/Mary/Examples.hs b/eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/Mary/Examples.hs deleted file mode 100644 index 5db1c8428c3..00000000000 --- a/eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/Mary/Examples.hs +++ /dev/null @@ -1,56 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Mary.Examples ( - testMaryNoDelegLEDGER, -) -where - -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Mary (Mary) -import Cardano.Ledger.Shelley.API (LedgerEnv (..), ShelleyLEDGER) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState (LedgerState (..), UTxOState (..), smartUTxOState) -import Cardano.Ledger.Shelley.Tx (ShelleyTx (..)) -import Cardano.Ledger.UTxO (UTxO) -import Control.State.Transition.Extended hiding (Assertion) -import Data.Default.Class (def) -import Data.List.NonEmpty (NonEmpty) -import GHC.Stack -import Lens.Micro -import Test.Cardano.Ledger.Mary.TreeDiff () -import Test.Cardano.Ledger.Shelley.Utils (applySTSTest, runShelleyBase) -import Test.Control.State.Transition.Trace (checkTrace, (.-), (.->>)) -import Test.Tasty.HUnit (Assertion, (@?=)) - -ignoreAllButUTxO :: - Either (NonEmpty (PredicateFailure (ShelleyLEDGER Mary))) (LedgerState Mary) -> - Either (NonEmpty (PredicateFailure (ShelleyLEDGER Mary))) (UTxO Mary) -ignoreAllButUTxO = fmap (\(LedgerState (UTxOState utxo _ _ _ _ _) _) -> utxo) - -testMaryNoDelegLEDGER :: - HasCallStack => - UTxO Mary -> - ShelleyTx Mary -> - LedgerEnv Mary -> - Either (NonEmpty (PredicateFailure (ShelleyLEDGER Mary))) (UTxO Mary) -> - Assertion -testMaryNoDelegLEDGER utxo tx env (Right expectedUTxO) = do - checkTrace @(ShelleyLEDGER Mary) runShelleyBase env $ - pure (LedgerState (smartUTxOState (ledgerPp env) utxo (Coin 0) (Coin 0) def mempty) def) - .- tx - .->> expectedSt' - where - txFee = tx ^. bodyTxL . feeTxBodyL - expectedSt' = LedgerState (smartUTxOState (ledgerPp env) expectedUTxO (Coin 0) txFee def mempty) def -testMaryNoDelegLEDGER utxo tx env predicateFailure@(Left _) = do - let st = - runShelleyBase $ - applySTSTest @(ShelleyLEDGER Mary) - ( TRC - ( env - , LedgerState (smartUTxOState (ledgerPp env) utxo (Coin 0) (Coin 0) def mempty) def - , tx - ) - ) - ignoreAllButUTxO st @?= predicateFailure diff --git a/eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/Mary/Examples/Cast.hs b/eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/Mary/Examples/Cast.hs deleted file mode 100644 index b549bd0c9c2..00000000000 --- a/eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/Mary/Examples/Cast.hs +++ /dev/null @@ -1,93 +0,0 @@ -{-# LANGUAGE DataKinds #-} - --- | --- Module : Test.Cardano.Ledger.Mary.Examples.Cast --- Description : Cast of characters for Mary ledger examples --- --- The cast of Characters for Mary Ledger Examples -module Test.Cardano.Ledger.Mary.Examples.Cast ( - alicePay, - aliceStake, - aliceAddr, - bobPay, - bobStake, - bobAddr, - carlPay, - carlStake, - carlAddr, - dariaPay, - dariaStake, - dariaAddr, -) where - -import Cardano.Ledger.Address (Addr (..)) -import Cardano.Ledger.Crypto (StandardCrypto) -import Cardano.Ledger.Keys ( - KeyRole (..), - ) -import Test.Cardano.Ledger.Core.KeyPair (KeyPair (..), mkAddr) -import Test.Cardano.Ledger.Shelley.Utils (RawSeed (..), mkKeyPair) - --- | Alice's payment key pair -alicePay :: KeyPair 'Payment StandardCrypto -alicePay = KeyPair vk sk - where - (sk, vk) = mkKeyPair (RawSeed 0 0 0 0 0) - --- | Alice's stake key pair -aliceStake :: KeyPair 'Staking StandardCrypto -aliceStake = KeyPair vk sk - where - (sk, vk) = mkKeyPair (RawSeed 1 1 1 1 1) - --- | Alice's base address -aliceAddr :: Addr StandardCrypto -aliceAddr = mkAddr (alicePay, aliceStake) - --- | Bob's payment key pair -bobPay :: KeyPair 'Payment StandardCrypto -bobPay = KeyPair vk sk - where - (sk, vk) = mkKeyPair (RawSeed 2 2 2 2 2) - --- | Bob's stake key pair -bobStake :: KeyPair 'Staking StandardCrypto -bobStake = KeyPair vk sk - where - (sk, vk) = mkKeyPair (RawSeed 3 3 3 3 3) - --- | Bob's address -bobAddr :: Addr StandardCrypto -bobAddr = mkAddr (bobPay, bobStake) - --- Carl's payment key pair -carlPay :: KeyPair 'Payment StandardCrypto -carlPay = KeyPair vk sk - where - (sk, vk) = mkKeyPair (RawSeed 4 4 4 4 4) - --- | Carl's stake key pair -carlStake :: KeyPair 'Staking StandardCrypto -carlStake = KeyPair vk sk - where - (sk, vk) = mkKeyPair (RawSeed 5 5 5 5 5) - --- | Carl's address -carlAddr :: Addr StandardCrypto -carlAddr = mkAddr (carlPay, carlStake) - --- | Daria's payment key pair -dariaPay :: KeyPair 'Payment StandardCrypto -dariaPay = KeyPair vk sk - where - (sk, vk) = mkKeyPair (RawSeed 6 6 6 6 6) - --- | Daria's stake key pair -dariaStake :: KeyPair 'Staking StandardCrypto -dariaStake = KeyPair vk sk - where - (sk, vk) = mkKeyPair (RawSeed 7 7 7 7 7) - --- | Daria's address -dariaAddr :: Addr StandardCrypto -dariaAddr = mkAddr (dariaPay, dariaStake) diff --git a/eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/Mary/Examples/MultiAssets.hs b/eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/Mary/Examples/MultiAssets.hs deleted file mode 100644 index 66b6c124747..00000000000 --- a/eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/Mary/Examples/MultiAssets.hs +++ /dev/null @@ -1,658 +0,0 @@ -{-# LANGUAGE NumericUnderscores #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} - --- | --- Module : Test.Cardano.Ledger.Mary.Examples.MultiAssets --- Description : Multi-Assets Examples --- --- Examples demonstrating the use of multi-assets. -module Test.Cardano.Ledger.Mary.Examples.MultiAssets ( - multiAssetsExample, -) -where - -import Cardano.Ledger.Allegra.Rules (AllegraUtxoPredFailure (..)) -import Cardano.Ledger.Allegra.Scripts (Timelock (..)) -import Cardano.Ledger.BaseTypes (StrictMaybe (..)) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Crypto (StandardCrypto) -import Cardano.Ledger.Keys (asWitness, hashKey) -import Cardano.Ledger.Mary (Mary) -import Cardano.Ledger.Mary.Core -import Cardano.Ledger.Mary.Value ( - AssetName (..), - MaryValue (..), - MultiAsset (..), - PolicyID (..), - ) -import Cardano.Ledger.SafeHash (hashAnnotated) -import Cardano.Ledger.Shelley.API (LedgerEnv (..), ShelleyLEDGER) -import Cardano.Ledger.Shelley.LedgerState (AccountState (..)) -import Cardano.Ledger.Shelley.Rules (ShelleyLedgerPredFailure (..), ShelleyUtxowPredFailure (..)) -import Cardano.Ledger.Shelley.Tx (ShelleyTx (..)) -import Cardano.Ledger.Shelley.TxOut (ShelleyTxOut (..)) -import Cardano.Ledger.Shelley.TxWits (addrWits) -import Cardano.Ledger.Slot (SlotNo (..)) -import Cardano.Ledger.TxIn (TxId, TxIn (..), mkTxInPartial) -import Cardano.Ledger.UTxO (UTxO (..)) -import Cardano.Ledger.Val ((<+>), (<->)) -import qualified Cardano.Ledger.Val as Val -import Control.Exception (ErrorCall (ErrorCall), evaluate, try) -import Control.State.Transition.Extended (PredicateFailure) -import Data.List.NonEmpty (NonEmpty) -import qualified Data.Map.Strict as Map -import qualified Data.Sequence.Strict as StrictSeq -import qualified Data.Set as Set -import GHC.Exts (fromString) -import Lens.Micro -import Test.Cardano.Ledger.Core.KeyPair (KeyPair (..), mkWitnessesVKey) -import Test.Cardano.Ledger.Mary.Examples (testMaryNoDelegLEDGER) -import qualified Test.Cardano.Ledger.Mary.Examples.Cast as Cast -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.HUnit (Assertion, assertFailure, testCase) - ------------------------------- --- Set Up the Initial State -- ------------------------------- - -aliceInitCoin :: Coin -aliceInitCoin = Coin $ 10_000_000_000_000_000 - -bobInitCoin :: Coin -bobInitCoin = Coin $ 1_000_000_000_000_000 - -unboundedInterval :: ValidityInterval -unboundedInterval = ValidityInterval SNothing SNothing - -bootstrapTxId :: TxId StandardCrypto -bootstrapTxId = txIdTxBody txb - where - txb :: TxBody Mary - txb = mkBasicTxBody - -initUTxO :: UTxO Mary -initUTxO = - UTxO $ - Map.fromList - [ (mkTxInPartial bootstrapTxId 0, ShelleyTxOut Cast.aliceAddr (Val.inject aliceInitCoin)) - , (mkTxInPartial bootstrapTxId 1, ShelleyTxOut Cast.bobAddr (Val.inject bobInitCoin)) - ] - -pp :: PParams Mary -pp = - emptyPParams - & ppMinFeeAL .~ Coin 0 - & ppMinFeeBL .~ Coin 1 - & ppMaxTxSizeL .~ 16384 - & ppMinUTxOValueL .~ Coin 100 - -ledgerEnv :: SlotNo -> LedgerEnv Mary -ledgerEnv s = LedgerEnv s minBound pp (AccountState (Coin 0) (Coin 0)) - -feeEx :: Coin -feeEx = Coin 3 - --- These examples do not use several of the transaction components, --- so we can simplify building them. -makeMaryTxBody :: - [TxIn StandardCrypto] -> - [ShelleyTxOut Mary] -> - ValidityInterval -> - MultiAsset StandardCrypto -> - TxBody Mary -makeMaryTxBody ins outs interval minted = - mkBasicTxBody - & inputsTxBodyL .~ Set.fromList ins - & outputsTxBodyL .~ StrictSeq.fromList outs - & feeTxBodyL .~ feeEx - & vldtTxBodyL .~ interval - & mintTxBodyL .~ minted - -policyFailure :: - PolicyID StandardCrypto -> Either (NonEmpty (PredicateFailure (ShelleyLEDGER Mary))) (UTxO Mary) -policyFailure p = - Left . pure . UtxowFailure . ScriptWitnessNotValidatingUTXOW $ Set.singleton (policyID p) - -outTooBigFailure :: - ShelleyTxOut Mary -> Either (NonEmpty (PredicateFailure (ShelleyLEDGER Mary))) (UTxO Mary) -outTooBigFailure out = - Left . pure . UtxowFailure . UtxoFailure $ OutputTooBigUTxO [out] - ----------------------------------------------------- --- Introduce a new Token Bundle, Purple Tokens --- --- Variables ending with SimpleExN (for a numeral N) --- refer to this example. ----------------------------------------------------- - --- This is the most lax policy possible, requiring no authorization at all. -purplePolicy :: Timelock Mary -purplePolicy = RequireAllOf (StrictSeq.fromList []) - -purplePolicyId :: PolicyID StandardCrypto -purplePolicyId = PolicyID $ hashScript @Mary purplePolicy - -plum :: AssetName -plum = AssetName "plum" - -amethyst :: AssetName -amethyst = AssetName "amethyst" - ------------------------- --- Mint Purple Tokens -- ------------------------- - -mintSimpleEx1 :: MultiAsset StandardCrypto -mintSimpleEx1 = - MultiAsset $ - Map.singleton purplePolicyId (Map.fromList [(plum, 13), (amethyst, 2)]) - -aliceCoinSimpleEx1 :: Coin -aliceCoinSimpleEx1 = aliceInitCoin <-> feeEx - -tokensSimpleEx1 :: MaryValue StandardCrypto -tokensSimpleEx1 = MaryValue mempty mintSimpleEx1 <+> Val.inject aliceCoinSimpleEx1 - --- Mint a purple token bundle, consisting of thirteen plums and two amethysts. --- Give the bundle to Alice. -txbodySimpleEx1 :: TxBody Mary -txbodySimpleEx1 = - makeMaryTxBody - [mkTxInPartial bootstrapTxId 0] - [ShelleyTxOut Cast.aliceAddr tokensSimpleEx1] - unboundedInterval - mintSimpleEx1 - -txSimpleEx1 :: ShelleyTx Mary -txSimpleEx1 = - mkBasicTx txbodySimpleEx1 - & witsTxL .~ (mkBasicTxWits & addrTxWitsL .~ atw & scriptTxWitsL .~ stw) - where - atw = mkWitnessesVKey (hashAnnotated txbodySimpleEx1) [asWitness Cast.alicePay] - stw = Map.fromList [(policyID purplePolicyId, purplePolicy)] - -expectedUTxOSimpleEx1 :: UTxO Mary -expectedUTxOSimpleEx1 = - UTxO $ - Map.fromList - [ (mkTxInPartial (txIdTxBody txbodySimpleEx1) 0, ShelleyTxOut Cast.aliceAddr tokensSimpleEx1) - , (mkTxInPartial bootstrapTxId 1, ShelleyTxOut Cast.bobAddr (Val.inject bobInitCoin)) - ] - ----------------------------- --- Transfer Purple Tokens -- ----------------------------- - -minUtxoSimpleEx2 :: Coin -minUtxoSimpleEx2 = Coin 117 - -aliceCoinsSimpleEx2 :: Coin -aliceCoinsSimpleEx2 = aliceCoinSimpleEx1 <-> (feeEx <+> minUtxoSimpleEx2) - -aliceTokensSimpleEx2 :: MaryValue StandardCrypto -aliceTokensSimpleEx2 = - MaryValue aliceCoinsSimpleEx2 $ - MultiAsset $ - Map.singleton purplePolicyId (Map.fromList [(plum, 8), (amethyst, 2)]) - -bobTokensSimpleEx2 :: MaryValue StandardCrypto -bobTokensSimpleEx2 = - MaryValue minUtxoSimpleEx2 $ - MultiAsset $ - Map.singleton purplePolicyId (Map.singleton plum 5) - --- Alice gives five plums to Bob. -txbodySimpleEx2 :: TxBody Mary -txbodySimpleEx2 = - makeMaryTxBody - [mkTxInPartial (txIdTxBody txbodySimpleEx1) 0] - [ ShelleyTxOut Cast.aliceAddr aliceTokensSimpleEx2 - , ShelleyTxOut Cast.bobAddr bobTokensSimpleEx2 - ] - unboundedInterval - mempty - -txSimpleEx2 :: ShelleyTx Mary -txSimpleEx2 = - mkBasicTx txbodySimpleEx2 - & witsTxL .~ (mkBasicTxWits & addrTxWitsL .~ atw) - where - atw = mkWitnessesVKey (hashAnnotated txbodySimpleEx2) [asWitness Cast.alicePay] - -expectedUTxOSimpleEx2 :: UTxO Mary -expectedUTxOSimpleEx2 = - UTxO $ - Map.fromList - [ (mkTxInPartial (txIdTxBody txbodySimpleEx2) 0, ShelleyTxOut Cast.aliceAddr aliceTokensSimpleEx2) - , (mkTxInPartial (txIdTxBody txbodySimpleEx2) 1, ShelleyTxOut Cast.bobAddr bobTokensSimpleEx2) - , (mkTxInPartial bootstrapTxId 1, ShelleyTxOut Cast.bobAddr (Val.inject bobInitCoin)) - ] - ------------------------------------------------------------- --- Introduce a new Token Bundle, Tokens With a Time Range --- --- Variables ending with TimeExN (for a numeral N) --- refer to this example. ------------------------------------------------------------- - -beforeStart :: SlotNo -beforeStart = SlotNo 12 - -startInterval :: SlotNo -startInterval = SlotNo 13 - -stopInterval :: SlotNo -stopInterval = SlotNo 19 - -afterStop :: SlotNo -afterStop = SlotNo 20 - -boundedTimePolicy :: Timelock Mary -boundedTimePolicy = - RequireAllOf - ( StrictSeq.fromList - [ RequireTimeStart startInterval - , RequireTimeExpire stopInterval - ] - ) - -boundedTimePolicyId :: PolicyID StandardCrypto -boundedTimePolicyId = PolicyID $ hashScript @Mary boundedTimePolicy - -tokenTimeEx :: AssetName -tokenTimeEx = AssetName "tokenTimeEx" - ------------------------------------- --- Mint Bounded Time Range Tokens -- ------------------------------------- - -mintTimeEx1 :: MultiAsset StandardCrypto -mintTimeEx1 = - MultiAsset $ - Map.singleton boundedTimePolicyId (Map.singleton tokenTimeEx 1) - -aliceCoinsTimeEx1 :: Coin -aliceCoinsTimeEx1 = aliceInitCoin <-> feeEx - -tokensTimeEx1 :: MaryValue StandardCrypto -tokensTimeEx1 = MaryValue mempty mintTimeEx1 <+> Val.inject aliceCoinsTimeEx1 - --- Mint tokens -txbodyTimeEx1 :: StrictMaybe SlotNo -> StrictMaybe SlotNo -> TxBody Mary -txbodyTimeEx1 s e = - makeMaryTxBody - [mkTxInPartial bootstrapTxId 0] - [ShelleyTxOut Cast.aliceAddr tokensTimeEx1] - (ValidityInterval s e) - mintTimeEx1 - -txbodyTimeEx1Valid :: TxBody Mary -txbodyTimeEx1Valid = txbodyTimeEx1 (SJust startInterval) (SJust stopInterval) - -txTimeEx1 :: TxBody Mary -> ShelleyTx Mary -txTimeEx1 txbody = - mkBasicTx txbody - & witsTxL .~ (mkBasicTxWits & addrTxWitsL .~ atw & scriptTxWitsL .~ stw) - where - atw = mkWitnessesVKey (hashAnnotated txbody) [asWitness Cast.alicePay] - stw = Map.fromList [(policyID boundedTimePolicyId, boundedTimePolicy)] - -txTimeEx1Valid :: ShelleyTx Mary -txTimeEx1Valid = txTimeEx1 txbodyTimeEx1Valid - -txTimeEx1InvalidLHSfixed :: ShelleyTx Mary -txTimeEx1InvalidLHSfixed = txTimeEx1 $ txbodyTimeEx1 (SJust beforeStart) (SJust stopInterval) - -txTimeEx1InvalidLHSopen :: ShelleyTx Mary -txTimeEx1InvalidLHSopen = txTimeEx1 $ txbodyTimeEx1 SNothing (SJust stopInterval) - -txTimeEx1InvalidRHSfixed :: ShelleyTx Mary -txTimeEx1InvalidRHSfixed = txTimeEx1 $ txbodyTimeEx1 (SJust startInterval) (SJust afterStop) - -txTimeEx1InvalidRHSopen :: ShelleyTx Mary -txTimeEx1InvalidRHSopen = txTimeEx1 $ txbodyTimeEx1 (SJust startInterval) SNothing - -expectedUTxOTimeEx1 :: UTxO Mary -expectedUTxOTimeEx1 = - UTxO $ - Map.fromList - [ (mkTxInPartial (txIdTxBody txbodyTimeEx1Valid) 0, ShelleyTxOut Cast.aliceAddr tokensTimeEx1) - , (mkTxInPartial bootstrapTxId 1, ShelleyTxOut Cast.bobAddr (Val.inject bobInitCoin)) - ] - ----------------------------------------- --- Transfer Bounded Time Range Tokens -- ----------------------------------------- - -mintTimeEx2 :: Coin -mintTimeEx2 = Coin 120 - -bobTokensTimeEx2 :: MaryValue StandardCrypto -bobTokensTimeEx2 = - MaryValue mintTimeEx2 $ - MultiAsset $ - Map.singleton boundedTimePolicyId (Map.singleton tokenTimeEx 1) - -aliceCoinsTimeEx2 :: Coin -aliceCoinsTimeEx2 = aliceCoinSimpleEx1 <-> (feeEx <+> mintTimeEx2) - --- Alice gives one token to Bob -txbodyTimeEx2 :: TxBody Mary -txbodyTimeEx2 = - makeMaryTxBody - [mkTxInPartial (txIdTxBody txbodyTimeEx1Valid) 0] - [ ShelleyTxOut Cast.aliceAddr (Val.inject aliceCoinsTimeEx2) - , ShelleyTxOut Cast.bobAddr bobTokensTimeEx2 - ] - unboundedInterval - mempty - -txTimeEx2 :: ShelleyTx Mary -txTimeEx2 = - ShelleyTx - txbodyTimeEx2 - mempty - { addrWits = - mkWitnessesVKey (hashAnnotated txbodyTimeEx2) [asWitness Cast.alicePay] - } - SNothing - -expectedUTxOTimeEx2 :: UTxO Mary -expectedUTxOTimeEx2 = - UTxO $ - Map.fromList - [ - ( mkTxInPartial (txIdTxBody txbodyTimeEx2) 0 - , ShelleyTxOut Cast.aliceAddr (Val.inject aliceCoinsTimeEx2) - ) - , (mkTxInPartial (txIdTxBody txbodyTimeEx2) 1, ShelleyTxOut Cast.bobAddr bobTokensTimeEx2) - , (mkTxInPartial bootstrapTxId 1, ShelleyTxOut Cast.bobAddr (Val.inject bobInitCoin)) - ] - --------------------------------------------------------------- --- Introduce a new Token Bundle, Tokens only Alice can mint --- --- Variables ending with SingExN (for a numeral N) --- refer to this example. --------------------------------------------------------------- - -alicePolicy :: Timelock Mary -alicePolicy = RequireSignature . asWitness . hashKey . vKey $ Cast.alicePay - -alicePolicyId :: PolicyID StandardCrypto -alicePolicyId = PolicyID $ hashScript @Mary alicePolicy - -tokenSingWitEx1 :: AssetName -tokenSingWitEx1 = AssetName "tokenSingWitEx1" - ------------------------ --- Mint Alice Tokens -- ------------------------ - -mintSingWitEx1 :: MultiAsset StandardCrypto -mintSingWitEx1 = - MultiAsset $ - Map.singleton alicePolicyId (Map.singleton tokenSingWitEx1 17) - -bobCoinsSingWitEx1 :: Coin -bobCoinsSingWitEx1 = bobInitCoin <-> feeEx - -tokensSingWitEx1 :: MaryValue StandardCrypto -tokensSingWitEx1 = MaryValue mempty mintSingWitEx1 <+> Val.inject bobCoinsSingWitEx1 - --- Bob pays the fees, but only alice can witness the minting -txbodySingWitEx1 :: TxBody Mary -txbodySingWitEx1 = - makeMaryTxBody - [mkTxInPartial bootstrapTxId 1] - [ShelleyTxOut Cast.bobAddr tokensSingWitEx1] - unboundedInterval - mintSingWitEx1 - -txSingWitEx1Valid :: ShelleyTx Mary -txSingWitEx1Valid = - mkBasicTx txbodySingWitEx1 - & witsTxL .~ (mkBasicTxWits & addrTxWitsL .~ atw & scriptTxWitsL .~ stw) - where - atw = mkWitnessesVKey (hashAnnotated txbodySingWitEx1) [asWitness Cast.bobPay, asWitness Cast.alicePay] - stw = Map.fromList [(policyID alicePolicyId, alicePolicy)] - -expectedUTxOSingWitEx1 :: UTxO Mary -expectedUTxOSingWitEx1 = - UTxO $ - Map.fromList - [ (mkTxInPartial (txIdTxBody txbodySingWitEx1) 0, ShelleyTxOut Cast.bobAddr tokensSingWitEx1) - , (mkTxInPartial bootstrapTxId 0, ShelleyTxOut Cast.aliceAddr (Val.inject aliceInitCoin)) - ] - -txSingWitEx1Invalid :: ShelleyTx Mary -txSingWitEx1Invalid = - mkBasicTx txbodySingWitEx1 - & witsTxL .~ (mkBasicTxWits & addrTxWitsL .~ atw & scriptTxWitsL .~ stw) - where - atw = mkWitnessesVKey (hashAnnotated txbodySingWitEx1) [asWitness Cast.bobPay] - stw = Map.fromList [(policyID alicePolicyId, alicePolicy)] - ------------------------- --- Mint Negative Values --- --- Variables ending with NegExN (for a numeral N) --- refer to this example. We assume that the simple --- tokens in the SimpleEx1 example have been minted --- and we use expectedUTxOSimpleEx1 as our starting --- state. ------------------------- - --- Mint negative valued tokens -mintNegEx1 :: MultiAsset StandardCrypto -mintNegEx1 = - MultiAsset $ - Map.singleton purplePolicyId (Map.singleton plum (-8)) - -aliceTokensNegEx1 :: MaryValue StandardCrypto -aliceTokensNegEx1 = - MaryValue (aliceCoinsSimpleEx2 <-> feeEx) $ - MultiAsset $ - Map.singleton purplePolicyId (Map.singleton amethyst 2) - -txbodyNegEx1 :: TxBody Mary -txbodyNegEx1 = - makeMaryTxBody - [mkTxInPartial (txIdTxBody txbodySimpleEx2) 0] - [ShelleyTxOut Cast.aliceAddr aliceTokensNegEx1] - unboundedInterval - mintNegEx1 - -txNegEx1 :: ShelleyTx Mary -txNegEx1 = - mkBasicTx txbodyNegEx1 - & witsTxL .~ (mkBasicTxWits & addrTxWitsL .~ atw & scriptTxWitsL .~ stw) - where - atw = mkWitnessesVKey (hashAnnotated txbodyNegEx1) [asWitness Cast.alicePay] - stw = Map.fromList [(policyID purplePolicyId, purplePolicy)] - -initialUTxONegEx1 :: UTxO Mary -initialUTxONegEx1 = expectedUTxOSimpleEx2 - -expectedUTxONegEx1 :: UTxO Mary -expectedUTxONegEx1 = - UTxO $ - Map.fromList - [ (mkTxInPartial (txIdTxBody txbodyNegEx1) 0, ShelleyTxOut Cast.aliceAddr aliceTokensNegEx1) - , (mkTxInPartial bootstrapTxId 1, ShelleyTxOut Cast.bobAddr (Val.inject bobInitCoin)) - , (mkTxInPartial (txIdTxBody txbodySimpleEx2) 1, ShelleyTxOut Cast.bobAddr bobTokensSimpleEx2) - ] - --- --- Now attempt to produce negative outputs --- - -mintNegEx2 :: MultiAsset StandardCrypto -mintNegEx2 = - MultiAsset $ - Map.singleton purplePolicyId (Map.singleton plum (-9)) - -aliceTokensNegEx2 :: MaryValue StandardCrypto -aliceTokensNegEx2 = - MaryValue (aliceCoinsSimpleEx2 <-> feeEx) $ - MultiAsset $ - Map.singleton purplePolicyId (Map.fromList [(plum, -1), (amethyst, 2)]) - --- Mint negative valued tokens -txbodyNegEx2 :: TxBody Mary -txbodyNegEx2 = - makeMaryTxBody - [mkTxInPartial (txIdTxBody txbodySimpleEx2) 0] - [ShelleyTxOut Cast.aliceAddr aliceTokensNegEx2] - unboundedInterval - mintNegEx2 - -testNegEx2 :: Assertion -testNegEx2 = do - r <- try (evaluate $ txbodyNegEx2 == txbodyNegEx2) - case r of - Left (ErrorCall _) -> pure () - Right _ -> assertFailure "constructed negative ShelleyTxOut Value" - --- --- Create a Value that is too big --- - -minUtxoBigEx :: Coin -minUtxoBigEx = Coin 50000 - -smallValue :: MultiAsset StandardCrypto -smallValue = - MultiAsset $ - Map.singleton purplePolicyId (Map.fromList [(plum, 13), (amethyst, 2)]) - -smallOut :: ShelleyTxOut Mary -smallOut = - ShelleyTxOut Cast.aliceAddr $ - MaryValue mempty smallValue - <+> Val.inject (aliceInitCoin <-> (feeEx <+> minUtxoBigEx)) - -numAssets :: Int -numAssets = 1000 - -bigValue :: MultiAsset StandardCrypto -bigValue = - MultiAsset $ - Map.singleton - purplePolicyId - (Map.fromList $ map (\x -> (AssetName . fromString $ show x, 1)) [1 .. numAssets]) - -bigOut :: ShelleyTxOut Mary -bigOut = ShelleyTxOut Cast.aliceAddr $ MaryValue mempty bigValue <+> Val.inject minUtxoBigEx - -txbodyWithBigValue :: TxBody Mary -txbodyWithBigValue = - makeMaryTxBody - [mkTxInPartial bootstrapTxId 0] - [smallOut, bigOut] - unboundedInterval - (bigValue <> smallValue) - -txBigValue :: ShelleyTx Mary -txBigValue = - mkBasicTx txbodyWithBigValue - & witsTxL .~ (mkBasicTxWits & addrTxWitsL .~ atw & scriptTxWitsL .~ stw) - where - atw = mkWitnessesVKey (hashAnnotated txbodyWithBigValue) [asWitness Cast.alicePay] - stw = Map.fromList [(policyID purplePolicyId, purplePolicy)] - --- --- Multi-Assets Test Group --- - -multiAssetsExample :: TestTree -multiAssetsExample = - testGroup - "multi-assets" - [ testGroup - "simple" - [ testCase "minting" $ - testMaryNoDelegLEDGER - initUTxO - txSimpleEx1 - (ledgerEnv $ SlotNo 0) - (Right expectedUTxOSimpleEx1) - , testCase "transfer" $ - testMaryNoDelegLEDGER - expectedUTxOSimpleEx1 - txSimpleEx2 - (ledgerEnv $ SlotNo 1) - (Right expectedUTxOSimpleEx2) - ] - , testGroup - "bounded time interval" - [ testCase "minting, valid" $ - testMaryNoDelegLEDGER - initUTxO - txTimeEx1Valid - (ledgerEnv startInterval) - (Right expectedUTxOTimeEx1) - , testCase "minting, invalid LHS too small" $ - testMaryNoDelegLEDGER - initUTxO - txTimeEx1InvalidLHSfixed - (ledgerEnv startInterval) - (policyFailure boundedTimePolicyId) - , testCase "minting, invalid LHS unspecified" $ - testMaryNoDelegLEDGER - initUTxO - txTimeEx1InvalidLHSopen - (ledgerEnv startInterval) - (policyFailure boundedTimePolicyId) - , testCase "minting, invalid RHS too big" $ - testMaryNoDelegLEDGER - initUTxO - txTimeEx1InvalidRHSfixed - (ledgerEnv startInterval) - (policyFailure boundedTimePolicyId) - , testCase "minting, invalid RHS unspecified" $ - testMaryNoDelegLEDGER - initUTxO - txTimeEx1InvalidRHSopen - (ledgerEnv startInterval) - (policyFailure boundedTimePolicyId) - , testCase "transfer, after minting period" $ - testMaryNoDelegLEDGER - expectedUTxOTimeEx1 - txTimeEx2 - (ledgerEnv afterStop) - (Right expectedUTxOTimeEx2) - ] - , testGroup - "single key" - [ testCase "minting, valid" $ - testMaryNoDelegLEDGER - initUTxO - txSingWitEx1Valid - (ledgerEnv $ SlotNo 0) - (Right expectedUTxOSingWitEx1) - , testCase "minting, invalid no mint signature" $ - testMaryNoDelegLEDGER - initUTxO - txSingWitEx1Invalid - (ledgerEnv $ SlotNo 0) - (policyFailure alicePolicyId) - ] - , testGroup - "negative minting" - [ testCase "remove assets" $ - testMaryNoDelegLEDGER - initialUTxONegEx1 - txNegEx1 - (ledgerEnv $ SlotNo 3) - (Right expectedUTxONegEx1) - , testCase "no negative outputs" testNegEx2 - ] - , testCase "value too big" $ - testMaryNoDelegLEDGER - initUTxO - txBigValue - (ledgerEnv $ SlotNo 0) - (outTooBigFailure bigOut) - ] diff --git a/eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/Mary/Translation.hs b/eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/Mary/Translation.hs deleted file mode 100644 index 7b9408febdc..00000000000 --- a/eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/Mary/Translation.hs +++ /dev/null @@ -1,76 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Mary.Translation ( - maryTranslationTests, - maryEncodeDecodeTests, -) -where - -import Cardano.Ledger.Allegra (Allegra) -import Cardano.Ledger.Binary -import Cardano.Ledger.Core -import Cardano.Ledger.Mary (Mary) -import Cardano.Ledger.Mary.Translation () -import Cardano.Ledger.Shelley (Shelley) -import qualified Cardano.Ledger.Shelley.API as S -import Test.Cardano.Ledger.AllegraEraGen () -import Test.Cardano.Ledger.Binary.RoundTrip -import Test.Cardano.Ledger.Mary.Arbitrary () -import Test.Cardano.Ledger.Shelley.Generator.ShelleyEraGen () -import Test.Cardano.Ledger.Shelley.Serialisation.EraIndepGenerators () -import Test.Cardano.Ledger.Shelley.Serialisation.Generators () -import Test.Cardano.Ledger.ShelleyMA.Serialisation.Generators () -import Test.Cardano.Ledger.TranslationTools (translateEraEncCBOR, translateEraEncoding) -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.HUnit (Assertion) -import Test.Tasty.QuickCheck (testProperty) - -maryEncodeDecodeTests :: TestTree -maryEncodeDecodeTests = - testGroup - "encoded allegra types can be decoded as mary types" - [ testProperty - "decoding metadata" - ( embedTripAnnExpectation @(TxAuxData Allegra) @(TxAuxData Mary) - (eraProtVerLow @Shelley) - (eraProtVerLow @Allegra) - (\_ _ -> pure ()) - ) - ] - -maryTranslationTests :: TestTree -maryTranslationTests = - testGroup - "Mary translation binary compatibiliby tests" - [ testProperty "Tx compatibility" $ - translateEraEncoding @Mary @S.ShelleyTx () toCBOR toCBOR - , testProperty "ProposedPPUpdates compatibility" (test @S.ProposedPPUpdates) - , testProperty "ShelleyGovState compatibility" $ - translateEraEncoding @Mary @S.ShelleyGovState () toCBOR toCBOR - , testProperty "TxOut compatibility" (test @S.ShelleyTxOut) - , testProperty "UTxO compatibility" $ - translateEraEncoding @Mary @S.UTxO () toCBOR toCBOR - , testProperty "UTxOState compatibility" $ - translateEraEncoding @Mary @S.UTxOState () toCBOR toCBOR - , testProperty "LedgerState compatibility" $ - translateEraEncoding @Mary @S.LedgerState () toCBOR toCBOR - , testProperty "EpochState compatibility" $ - translateEraEncoding @Mary @S.EpochState () toCBOR toCBOR - , testProperty "ShelleyTxWits compatibility" $ - translateEraEncoding @Mary @S.ShelleyTxWits () toCBOR toCBOR - , testProperty "Update compatibility" (test @S.Update) - ] - -test :: - forall f. - ( EncCBOR (f Allegra) - , EncCBOR (f Mary) - , TranslateEra Mary f - , Show (TranslationError Mary f) - ) => - f Allegra -> - Assertion -test = translateEraEncCBOR ([] :: [Mary]) () diff --git a/eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/Mary/Value.hs b/eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/Mary/Value.hs deleted file mode 100644 index ab81dd4200f..00000000000 --- a/eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/Mary/Value.hs +++ /dev/null @@ -1,443 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE NoMonoLocalBinds #-} -{-# OPTIONS_GHC -fno-warn-orphans #-} - -module Test.Cardano.Ledger.Mary.Value (valTests) where - -import Cardano.Crypto.Hash.Class (castHash, hashFromStringAsHex) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Compactible (fromCompact, toCompact) -import Cardano.Ledger.Crypto (StandardCrypto) -import qualified Cardano.Ledger.Crypto as CC (Crypto) -import Cardano.Ledger.Hashes (ScriptHash (..)) -import Cardano.Ledger.Mary.Value ( - AssetName (..), - MaryValue (..), - MultiAsset (..), - PolicyID (..), - insertMultiAsset, - lookupMultiAsset, - ) -import Cardano.Ledger.Val (Val (..), inject, invert) -import Control.DeepSeq (rnf) -import Control.Monad (replicateM) -import Data.ByteString.Short (ShortByteString) -import Data.CanonicalMaps ( - CanonicalZero (..), - canonicalInsert, - canonicalMapUnion, - ) -import qualified Data.Group as G -import Data.Map.Strict (empty, singleton) -import qualified Data.Map.Strict as Map -import Data.Maybe (fromMaybe) -import Test.Cardano.Ledger.Mary.Arbitrary () -import Test.Cardano.Ledger.Shelley.Serialisation.EraIndepGenerators () -import Test.Cardano.Ledger.Shelley.Serialisation.Generators () -import qualified Test.QuickCheck as QC -import Test.Tasty -import Test.Tasty.QuickCheck hiding (scale) -import Prelude hiding (lookup) - --- ================================================================================= --- Alternate implementations of insert to be benchmarked. --- Also used in testing below. to show that the executable spec: insert is correct. --- We compute Values 3 ways and show all are equivalent. --- ================================================================================= - --- Use canonicalUnion and canonicalInsert - -pickNew, pickOld :: a -> a -> a -pickNew _o n = n -pickOld o _n = o - -insertValue :: - (Integer -> Integer -> Integer) -> - PolicyID c -> - AssetName -> - Integer -> - MaryValue c -> - MaryValue c -insertValue combine pid aid new (MaryValue c m) = MaryValue c $ insertMultiAsset combine pid aid new m - -insert3 :: - (Integer -> Integer -> Integer) -> - PolicyID c -> - AssetName -> - Integer -> - MaryValue c -> - MaryValue c -insert3 combine pid aid new (MaryValue c (MultiAsset m1)) = - case Map.lookup pid m1 of - Nothing -> - MaryValue c $ - MultiAsset $ - canonicalInsert (canonicalMapUnion combine) pid (canonicalInsert combine aid new zeroC) m1 - Just m2 -> case Map.lookup aid m2 of - Nothing -> - MaryValue c $ - MultiAsset $ - canonicalInsert (canonicalMapUnion combine) pid (singleton aid new) m1 - Just old -> - MaryValue c $ - MultiAsset $ - canonicalInsert pickNew pid (canonicalInsert pickNew aid (combine old new) m2) m1 - --- | Make a Value with no coin, and just one token. -unit :: PolicyID c -> AssetName -> Integer -> MaryValue c -unit pid aid n = - MaryValue mempty $ - MultiAsset (canonicalInsert pickNew pid (canonicalInsert pickNew aid n empty) empty) - --- Use <+> and <-> - -insert2 :: - CC.Crypto c => - (Integer -> Integer -> Integer) -> - PolicyID c -> - AssetName -> - Integer -> - MaryValue c -> - MaryValue c -insert2 combine pid aid new m1 = - -- The trick is to correctly not store a zero. Several ways to get a zero - case (lookupMultiAsset pid aid m1, new == 0) of - -- input is zero, and its not in the map - (0, True) -> m1 - -- input is not zero, its not in the map, so add it to the map - (0, False) -> m1 <+> unit pid aid new - (old, _) -> - let n = combine old new -- it is in the map, use combine to get the correct value - in m1 <+> unit pid aid (n - old) -- make the correction - -- equivalent to: (m1 <-> unit pid aid old) <+> unit pid aid n - --- 3 functions that build Values from Policy Asset triples. - -valueFromList :: - [(PolicyID StandardCrypto, AssetName, Integer)] -> Integer -> MaryValue StandardCrypto -valueFromList list c = MaryValue (Coin c) $ foldr acc mempty list - where - acc (policy, asset, count) m = insertMultiAsset (+) policy asset count m - -valueFromList3 :: - [(PolicyID StandardCrypto, AssetName, Integer)] -> Integer -> MaryValue StandardCrypto -valueFromList3 list c = foldr acc (MaryValue (Coin c) mempty) list - where - acc (policy, asset, count) m = insert3 (+) policy asset count m - -valueFromList2 :: - [(PolicyID StandardCrypto, AssetName, Integer)] -> Integer -> MaryValue StandardCrypto -valueFromList2 list c = foldr acc (MaryValue (Coin c) mempty) list - where - acc (policy, asset, count) m = insert2 (+) policy asset count m - --- Test that all tree functions build the same values. - -insertTests :: TestTree -insertTests = - testGroup - "insert == insert2 == insert3" - [ testProperty "insert=insert2" $ \vs c -> valueFromList vs c === valueFromList2 vs c - , testProperty "insert=insert3" $ \vs c -> valueFromList vs c === valueFromList3 vs c - , testProperty "insert2=insert3" $ \vs c -> valueFromList2 vs c === valueFromList3 vs c - ] - --- ============================================================================================ --- Arbitray instances - -genB :: Gen ShortByteString -genB = resize 4 arbitrary - -genAssetName :: Gen AssetName -genAssetName = AssetName <$> genB - -genPolicyID :: Gen (PolicyID StandardCrypto) -genPolicyID = PolicyID <$> arbitrary - --- =========================================================================== --- Tests that Val instances really align with the Albelian Group Supertype - -albelianlist :: forall v. Val v => [(v -> v -> Property, String)] -albelianlist = - [ (\x y -> x <+> y === x <> y, "<+> is <>") - , (\_ _ -> (zero @v) === mempty, "zero is mempty") - , (\_ _ -> isZero (zero @v) === True, "isZero zero") - , (\_ _ -> isZero (mempty @v) === True, "isZero mempty") - , (\x _ -> isZero x === (x == mempty), "isZero is (== mempty)") - ] - -albelianTests :: TestTree -albelianTests = - testGroup - "albelian test" - [ testGroup "albelian Coin" $ - map (\(prop, name) -> testProperty name prop) (albelianlist @Coin) - , testGroup "albelian Value" $ - map (\(prop, name) -> testProperty name prop) (albelianlist @(MaryValue StandardCrypto)) - ] - --- =================================================================== --- Generic tests that should hold for all Val instances. --- We will instantiate these twice. Once with Coin, once with Value. - -proplist :: forall v. Val v => [(Integer -> Integer -> v -> v -> v -> Bool, String)] -proplist = - -- (\ r s x y z -> prop , name) - [ (\_ _ x y _ -> x <-> y == x <+> invert y, "defMinus") - , (\_ _ x _ _ -> invert x == (-1 :: Integer) <×> x, "defInvert") - , (\_ _ x y _ -> x <+> y == y <+> x, "commute") - , (\_ _ x y z -> x <+> (y <+> z) == (y <+> x) <+> z, "assoc") - , (\_ _ x _ _ -> (zero <+> x == x <+> zero) && (zero <+> x == x), "addIdent") - , (\_ _ _ _ _ -> (zero @v <+> zero) == zero, "zero-zero") - , (\_ _ x _ _ -> x <-> x == zero, "cancel") - , (\r _ x y _ -> r <×> (x <+> y) == (r <×> x) <+> (r <×> y), "distr1") - , (\r s x _ _ -> (r + s) <×> x == (r <×> x) <+> (s <×> x), "dist2") - , (\r s x _ _ -> (r * s) <×> x == r <×> (s <×> x), "distr3") - , (\_ _ x _ _ -> (1 :: Integer) <×> x == x, "scaleIdenity") - , (\_ _ x _ _ -> (x <-> x) == zero, "minusCancel") - , (\_ _ x y _ -> ((x <+> y) <-> y == x <+> (y <-> y)) && (x <+> (y <-> y) == x), "plusMinusAssoc") - , (\_ _ x _ _ -> (x <+> invert x == (x <-> x)) && (x <-> x == zero), "plusInvertCancel") - , (\_ _ x _ _ -> (x <-> zero) == x, "minusZero") - , (\_ _ x _ _ -> (zero <-> x) == invert x, "zeroMinus") - , (\_ _ x _ _ -> invert x == (-1 :: Integer) <×> x, "invertScale") - , (\_ _ x _ _ -> (0 :: Integer) <×> x == zero, "scaleZero") - , (\r _ _ _ _ -> r <×> zero @v == zero @v, "zeroScale") - , (\r s _ _ _ -> r <×> inject @_ @v (Coin s) == inject (r <×> Coin s), "scaleInject") - , (\_ _ x _ _ -> (1 :: Integer) <×> x == x, "scaleOne") - , (\r _ x y _ -> r <×> (x <+> y) == (r <×> x) <+> (r <×> y), "scalePlus") - , (\r s x _ _ -> r <×> (s <×> x) == (r * s) <×> x, "scaleScale") - , (\r _ x _ _ -> r <×> coin x == coin (r <×> x), "scaleCoin") - , (\_ _ x _ _ -> (3 :: Integer) <×> x == x <+> x <+> x, "unfoldScale") - , (\_ _ _ _ _ -> coin (zero @v) == zero, "coinZero") - , (\_ _ x y _ -> coin (x <+> y) == coin x <+> coin y, "coinPlus") - , (\r _ x _ _ -> coin (r <×> x) == r <×> coin x, "coinScale") - , (\r _ _ _ _ -> coin @v (inject @_ @v (Coin r)) == Coin r, "coinInject") - , (\_ _ _ _ _ -> pointwise (==) (zero @v) zero, "pointwise zero") - ] - -polyCoinTests :: TestTree -polyCoinTests = testGroup "polyCoinTests" (map f (proplist @Coin)) - where - f (fun, name) = testProperty name fun - -polyValueTests :: TestTree -polyValueTests = testGroup "polyValueTests" (map f (proplist @(MaryValue StandardCrypto))) - where - f (fun, name) = testProperty name fun - --- ============================================================================ --- Tests that hold only in the Value class. --- Testing that insert, lookup, and coin interact properly - -valuePropList :: - [ ( Integer -> Integer -> MaryValue StandardCrypto -> PolicyID StandardCrypto -> AssetName -> Bool - , String - ) - ] -valuePropList = - [ (\_ _ x _ _ -> coin (modifyCoin f x) == modifyCoin f (coin x), "coinModify") - , (\_ _ _ p a -> insertValue pickOld p a 0 zero == zero, "Nozeros") - , (\_ _ x p a -> insertValue pickOld p a 0 x == insert2 pickOld p a 0 x, "insert==insert2A") - , (\_ _ x p a -> insertValue pickNew p a 0 x == insert2 pickNew p a 0 x, "insert==insert2B") - , (\_ _ x p a -> insertValue pickOld p a 0 x == insert3 pickOld p a 0 x, "insert==insert3A") - , (\_ _ x p a -> insertValue pickNew p a 0 x == insert3 pickNew p a 0 x, "insert==insert3B") - , - ( \n _ _ p a -> insertValue pickNew p a n zero == insertValue pickOld p a n zero - , "comb doesn't matter on zero" - ) - , -- the following 4 laws only holds for non zero n and m, and when not(n==m). - -- Zeros cause the inserts to be no-ops in that case. - - ( \n m _ p a -> - n == 0 - || m == 0 - || n == m - || (insertValue pickOld p a m (insertValue pickNew p a n zero)) - == (insertValue pickNew p a n zero) - , "retains-old" - ) - , - ( \n m _ p a -> - n == 0 - || m == 0 - || n == m - || (insertValue pickNew p a m (insertValue pickNew p a n zero)) - == (insertValue pickNew p a m zero) - , "new-overrides" - ) - , - ( \n m _ p a -> - n == 0 - || m == 0 - || n == m - || lookupMultiAsset p a (insertValue pickOld p a m (insertValue pickNew p a n zero)) == n - , "oldVsNew" - ) - , - ( \n m _ p a -> - n == 0 - || m == 0 - || n == m - || lookupMultiAsset p a (insertValue pickNew p a m (insertValue pickNew p a n zero)) == m - , "newVsOld" - ) - , (\n _ x p a -> lookupMultiAsset p a (insertValue pickNew p a n x) == n, "lookup-insert-overwrite") - , - ( \n _ x p a -> - lookupMultiAsset p a x == 0 - || lookupMultiAsset p a (insertValue pickOld p a n x) == lookupMultiAsset p a x - , "lookup-insert-retain" - ) - , (\n _ x p a -> coin (insertValue pickOld p a n x) == coin x, "coinIgnores1") - , (\n _ x p a -> coin (insertValue pickNew p a n x) == coin x, "coinIgnores2") - , (\n _ x p a -> coin (insertValue (\o _n -> o + n) p a n x) == coin x, "coinIgnores3") - ] - where - f (Coin n) = Coin (n + 3) - -monoValueTests :: TestTree -monoValueTests = testGroup "Value specific tests" (map (\(f, n) -> testProperty n f) valuePropList) - -valueGroup :: - [ ( Integer -> - MaryValue StandardCrypto -> - MaryValue StandardCrypto -> - PolicyID StandardCrypto -> - AssetName -> - Property - , String - ) - ] -valueGroup = - [ - ( \_ x y p a -> lookupMultiAsset p a (x <+> y) === lookupMultiAsset p a x + lookupMultiAsset p a y - , "lookup over <+>" - ) - , - ( \_ x y p a -> lookupMultiAsset p a (x <-> y) === lookupMultiAsset p a x - lookupMultiAsset p a y - , "lookup over <->" - ) - , (\n x _ p a -> lookupMultiAsset p a (n <×> x) === n * lookupMultiAsset p a x, "lookup over <×>") - , (\_ _ _ p a -> lookupMultiAsset p a zero === 0, "lookup over zero") - , - ( \_ x _ p a -> lookupMultiAsset p a (invert x) === (-1) * lookupMultiAsset p a x - , "lookup over invert" - ) - ] - -valueGroupTests :: TestTree -valueGroupTests = testGroup "value is a group" (map (\(f, n) -> testProperty n f) valueGroup) - -compactRoundTrip :: Property -compactRoundTrip = forAll gen $ \v -> - counterexample - (show $ toCompact v) - (Just v === fmap fromCompact (toCompact v)) - where - gen = do - pids <- replicateM 3 (pure <$> genPolicyID) - ans <- replicateM 3 (pure <$> genAssetName) - -- this ensures we get some collisions among asset names and among pids - numTriples <- QC.choose (3, 30) - triples <- replicateM numTriples $ do - pid <- QC.oneof pids - an <- QC.oneof ans - q <- QC.choose (0, 100) - pure (pid, an, q) - q <- QC.choose (0, 100) - pure (valueFromList triples q) - -compactTest :: TestTree -compactTest = testProperty "fromCompact . toCompact == id" compactRoundTrip - --- | Create a script hash of length 28 with 27 leading zeros followed by one hex-encoded byte --- supplied by the caller. -makeScriptHash :: String -> ScriptHash StandardCrypto -makeScriptHash str = - ScriptHash $ castHash (fromMaybe (error "Impossible") $ hashFromStringAsHex (pad <> str)) - where - pad = replicate 54 '0' - -oneNonameAsset :: Map.Map AssetName Integer -oneNonameAsset = Map.fromList [(AssetName "", 1)] - -makeMultiAsset :: ScriptHash StandardCrypto -> MultiAsset StandardCrypto -makeMultiAsset sh = MultiAsset (Map.singleton (PolicyID sh) oneNonameAsset) - -s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12 :: MultiAsset StandardCrypto -s0 = makeMultiAsset $ makeScriptHash "00" -s1 = makeMultiAsset $ makeScriptHash "01" -s2 = makeMultiAsset $ makeScriptHash "02" -s3 = makeMultiAsset $ makeScriptHash "03" -s4 = makeMultiAsset $ makeScriptHash "04" -s5 = makeMultiAsset $ makeScriptHash "05" -s6 = makeMultiAsset $ makeScriptHash "06" -s7 = makeMultiAsset $ makeScriptHash "07" -s8 = makeMultiAsset $ makeScriptHash "08" -s9 = makeMultiAsset $ makeScriptHash "09" -s10 = makeMultiAsset $ makeScriptHash "10" -s11 = makeMultiAsset $ makeScriptHash "11" -s12 = makeMultiAsset $ makeScriptHash "12" - -exampleMultiAssets :: [MultiAsset StandardCrypto] -exampleMultiAssets = [s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12] - --- | Test that the subtraction of Multi-assets (and the underlying 'CanonicalMaps') --- is a total function. --- This was used to diagnose https://github.com/input-output-hk/cardano-node/issues/4826 -subtractionIsTotal :: TestTree -subtractionIsTotal = testProperty "multi-asset subtraction is total" $ - QC.withMaxSuccess 100000 $ - do - shuffle1 <- take 12 <$> QC.shuffle exampleMultiAssets - shuffle2 <- take 2 <$> QC.shuffle exampleMultiAssets - let a = mconcat [m | MultiAsset m <- shuffle1] - -- \^ here we chose to perform addition on the CanonicalMaps, as this is what - -- happens during deserialization, giving us insight into how node-4826 could - -- have occurred on mainnet (since we care about how the addition is associated). - -- Note that the ledger does not manipulate instances of - -- 'Value' and then store them in memory, since outputs are created by the user - -- and only deserialized. In other words, it is only in the ledger rules themselves - -- that we manipulate 'Value'. - b = mconcat shuffle2 - pure $! rnf (MultiAsset a <> G.invert b) - --- | The test below was discovered by a failure of 'subtractionIsTotal' --- using git sha bd359d3f745ca72242b2cd1208780c2787992b5f and --quickcheck-replay=649941 -node4826Reproducible :: TestTree -node4826Reproducible = - testProperty "node4826Reproducible" $ - let shuffle1 = - [ makeMultiAsset $ makeScriptHash suffix - | suffix <- ["10", "09", "11", "08", "01", "06", "03", "05", "04", "07", "02", "00"] - ] - shuffle2 = - [ makeMultiAsset $ makeScriptHash suffix - | suffix <- ["04", "08"] - ] - multiAssetMap = mconcat [m | MultiAsset m <- shuffle1] - reproducible = MultiAsset multiAssetMap <> G.invert (mconcat shuffle2) - in rnf reproducible - --- =========================================== --- All the value tests - -valTests :: TestTree -valTests = - testGroup - "allValTests" - [ insertTests - , albelianTests - , polyCoinTests - , polyValueTests - , monoValueTests - , valueGroupTests - , compactTest - , subtractionIsTotal - , node4826Reproducible - ] diff --git a/eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/ShelleyMA/Serialisation.hs b/eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/ShelleyMA/Serialisation.hs deleted file mode 100644 index ddc44ee13c0..00000000000 --- a/eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/ShelleyMA/Serialisation.hs +++ /dev/null @@ -1,21 +0,0 @@ -module Test.Cardano.Ledger.ShelleyMA.Serialisation where - -import Test.Cardano.Ledger.Allegra.Translation (allegraEncodeDecodeTests) -import Test.Cardano.Ledger.Mary.Translation (maryEncodeDecodeTests) -import Test.Cardano.Ledger.ShelleyMA.Serialisation.Golden.Encoding (goldenEncodingTests) -import Test.Cardano.Ledger.ShelleyMA.Serialisation.Roundtrip (allEraRoundtripTests) -import Test.Cardano.Ledger.ShelleyMA.Serialisation.Timelocks (timelockTests) -import Test.Cardano.Ledger.ShelleyMA.TxBody (txBodyTest) -import Test.Tasty - -tests :: TestTree -tests = - testGroup - "Serialisation tests" - [ allegraEncodeDecodeTests - , maryEncodeDecodeTests - , txBodyTest - , timelockTests - , goldenEncodingTests - , allEraRoundtripTests - ] diff --git a/eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/ShelleyMA/Serialisation/Golden/Encoding.hs b/eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/ShelleyMA/Serialisation/Golden/Encoding.hs deleted file mode 100644 index ae25470edee..00000000000 --- a/eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/ShelleyMA/Serialisation/Golden/Encoding.hs +++ /dev/null @@ -1,450 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - --- | Golden tests that check CBOR token encoding. -module Test.Cardano.Ledger.ShelleyMA.Serialisation.Golden.Encoding (goldenEncodingTests) where - -import Cardano.Ledger.Address (Addr (..), RewardAccount (..)) -import Cardano.Ledger.Allegra (Allegra) -import Cardano.Ledger.Allegra.Scripts (Timelock (..)) -import Cardano.Ledger.Allegra.TxAuxData (pattern AllegraTxAuxData) -import Cardano.Ledger.Allegra.TxBody (AllegraTxBody (..)) -import Cardano.Ledger.BaseTypes (Network (..), StrictMaybe (..)) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Credential (Credential (..), StakeReference (..)) -import Cardano.Ledger.Crypto (Crypto, StandardCrypto) -import Cardano.Ledger.Keys (KeyHash (..), KeyRole (..), hashKey) -import Cardano.Ledger.Mary (Mary) -import Cardano.Ledger.Mary.Core -import Cardano.Ledger.Mary.TxBody (MaryTxBody (..)) -import Cardano.Ledger.Mary.Value (AssetName (..), MaryValue (..), MultiAsset (..), PolicyID (..)) -import Cardano.Ledger.Shelley.PParams ( - Update, - pattern ProposedPPUpdates, - pattern Update, - ) -import qualified Cardano.Ledger.Shelley.TxAuxData as TxAuxData -import Cardano.Ledger.Shelley.TxOut (ShelleyTxOut (..)) -import Cardano.Ledger.Slot (EpochNo (..), SlotNo (..)) -import Cardano.Ledger.TxIn (mkTxInPartial) -import qualified Cardano.Ledger.Val as Val -import Codec.CBOR.Encoding (Tokens (..)) -import qualified Data.ByteString.Short as SBS -import qualified Data.Map.Strict as Map -import qualified Data.Sequence.Strict as StrictSeq -import qualified Data.Set as Set -import Lens.Micro -import Test.Cardano.Ledger.Binary.RoundTrip (roundTripCborRangeFailureExpectation) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (genesisId) -import Test.Cardano.Ledger.Shelley.Serialisation.GoldenUtils ( - ToTokens (..), - checkEncodingCBOR, - checkEncodingCBORAnnotated, - checkEncodingCBORDecodeFailure, - ) -import Test.Cardano.Ledger.Shelley.Utils (RawSeed (..), mkGenKey, mkKeyPair) -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.HUnit (Assertion, testCase) - --- =============================================== --- == Test Values for Building Timelock Scripts == --- =============================================== - -policy1 :: Era era => Timelock era -policy1 = RequireAnyOf . StrictSeq.fromList $ [] - -policyID1 :: PolicyID StandardCrypto -policyID1 = PolicyID . (hashScript @Allegra) $ policy1 - -policyID2 :: PolicyID StandardCrypto -policyID2 = PolicyID . (hashScript @Allegra) . RequireAllOf . StrictSeq.fromList $ [] - -assetName1 :: SBS.ShortByteString -assetName1 = "a1" - -assetName2 :: SBS.ShortByteString -assetName2 = "a2" - -assetName3 :: SBS.ShortByteString -assetName3 = "a3" - --- =========================================== --- == Test Values for Building Transactions == --- =========================================== - -testGKeyHash :: Crypto c => KeyHash 'Genesis c -testGKeyHash = hashKey . snd . mkGenKey $ RawSeed 0 0 0 0 0 - -testAddrE :: Addr StandardCrypto -testAddrE = - Addr - Testnet - (KeyHashObj . hashKey . snd $ mkKeyPair (RawSeed 0 0 0 0 1)) - StakeRefNull - -testKeyHash :: KeyHash 'Staking StandardCrypto -testKeyHash = hashKey . snd $ mkKeyPair (RawSeed 0 0 0 0 2) - -testStakeCred :: Credential 'Staking StandardCrypto -testStakeCred = KeyHashObj . hashKey . snd $ mkKeyPair (RawSeed 0 0 0 0 3) - -testUpdate :: - forall era. - EraPParams era => - Update era -testUpdate = - Update - ( ProposedPPUpdates - ( Map.singleton - testGKeyHash - (emptyPParamsUpdate & ppuNOptL .~ SJust 100) - ) - ) - (EpochNo 0) - --- ============================================= --- == Golden Tests Common to Allegra and Mary == --- ============================================= - -scriptGoldenTest :: forall era. Era era => TestTree -scriptGoldenTest = - let kh0 = hashKey . snd . mkGenKey $ RawSeed 0 0 0 0 0 :: KeyHash 'Witness (EraCrypto era) - kh1 = hashKey . snd . mkGenKey $ RawSeed 1 1 1 1 1 :: KeyHash 'Witness (EraCrypto era) - in checkEncodingCBORAnnotated - (eraProtVerHigh @era) - "timelock_script" - ( RequireAllOf @era - ( StrictSeq.fromList - [ RequireMOf 1 $ StrictSeq.fromList [RequireSignature kh0, RequireSignature kh1] - , RequireTimeStart (SlotNo 100) - , RequireTimeExpire (SlotNo 101) - ] - ) - ) - ( T - ( TkListLen 2 - . TkInteger 1 -- label for RequireAllOf - . TkListLen 3 -- RequireMOf, RequireTimeStart, RequireTimeExpire - . TkListLen 3 -- label, m, signatures - . TkInteger 3 -- label for RequireMOf - . TkInteger 1 -- m value - . TkListLen 2 -- two possible signatures - . TkListLen 2 -- credential wrapper - . TkInteger 0 -- label for keyhash - ) - <> S kh0 -- keyhash - <> T - ( TkListLen 2 -- credential wrapper - . TkInteger 0 -- label for keyhash - ) - <> S kh1 -- keyhash - <> T - ( TkListLen 2 -- RequireTimeStart - . TkInteger 4 -- label for RequireTimeStart - . TkInteger 100 -- start slot - . TkListLen 2 -- RequireTimeExpire - . TkInteger 5 -- label for RequireTimeExpire - . TkInteger 101 -- expire slot - ) - ) - -metadataNoScriptsGoldenTest :: forall era. Era era => TestTree -metadataNoScriptsGoldenTest = - checkEncodingCBORAnnotated - (eraProtVerHigh @era) - "metadata_no_scripts" - (AllegraTxAuxData @era (Map.singleton 17 (TxAuxData.I 42)) StrictSeq.empty) - ( T - ( TkListLen 2 -- structured metadata and auxiliary scripts - . TkMapLen 1 -- metadata wrapper - . TkInteger 17 - . TkInteger 42 - . TkListLen 0 -- empty scripts - ) - ) - --- CONTINUE also Scripts -metadataWithScriptsGoldenTest :: forall era. Era era => TestTree -metadataWithScriptsGoldenTest = - checkEncodingCBORAnnotated - (eraProtVerHigh @era) - "metadata_with_scripts" - ( AllegraTxAuxData @era - (Map.singleton 17 (TxAuxData.I 42)) - (StrictSeq.singleton policy1) - ) - ( T - ( TkListLen 2 -- structured metadata and auxiliary scripts - . TkMapLen 1 -- metadata wrapper - . TkInteger 17 - . TkInteger 42 - . TkListLen 1 -- one script - ) - <> S (policy1 @era) - ) - --- | Golden Tests for Allegra -goldenEncodingTestsAllegra :: TestTree -goldenEncodingTestsAllegra = - testGroup - "Allegra" - [ checkEncodingCBOR - (eraProtVerHigh @Mary) - "value" - (Val.inject (Coin 1) :: Value Allegra) - (T (TkInteger 1)) - , scriptGoldenTest @Allegra - , metadataNoScriptsGoldenTest @Allegra - , metadataWithScriptsGoldenTest @Allegra - , -- "minimal_txn_body" - let tin = mkTxInPartial genesisId 1 - tout = ShelleyTxOut @Allegra testAddrE (Coin 2) - in checkEncodingCBORAnnotated - (eraProtVerHigh @Allegra) - "minimal_txbody" - ( AllegraTxBody - (Set.fromList [tin]) - (StrictSeq.singleton tout) - StrictSeq.empty - (Withdrawals Map.empty) - (Coin 9) - (ValidityInterval SNothing SNothing) - SNothing - SNothing - ) - ( T (TkMapLen 3) - <> T (TkWord 0) -- Tx Ins - <> T (TkListLen 1) - <> S tin - <> T (TkWord 1) -- Tx Outs - <> T (TkListLen 1) - <> S tout - <> T (TkWord 2) -- Tx Fee - <> T (TkWord64 9) - ) - , -- "full_txn_body" - let tin = mkTxInPartial genesisId 1 - tout = ShelleyTxOut @Allegra testAddrE (Coin 2) - reg = RegTxCert testStakeCred - ras = Map.singleton (RewardAccount Testnet (KeyHashObj testKeyHash)) (Coin 123) - up = testUpdate - mdh = hashTxAuxData @Allegra $ AllegraTxAuxData Map.empty StrictSeq.empty - in checkEncodingCBORAnnotated - (eraProtVerHigh @Allegra) - "full_txn_body" - ( AllegraTxBody - (Set.fromList [tin]) - (StrictSeq.singleton tout) - (StrictSeq.fromList [reg]) - (Withdrawals ras) - (Coin 9) - (ValidityInterval (SJust $ SlotNo 500) (SJust $ SlotNo 600)) - (SJust up) - (SJust mdh) - ) - ( T (TkMapLen 9) - <> T (TkWord 0) -- Tx Ins - <> T (TkListLen 1) - <> S tin - <> T (TkWord 1) -- Tx Outs - <> T (TkListLen 1) - <> S tout - <> T (TkWord 2) -- Tx Fee - <> S (Coin 9) - <> T (TkWord 3) -- Tx TTL - <> S (SlotNo 600) - <> T (TkWord 4) -- Tx Certs - <> T (TkListLen 1) -- Seq list begin - <> S reg - <> T (TkWord 5) -- Tx Reward Withdrawals - <> S ras - <> T (TkWord 6) -- Tx Update - <> S up - <> T (TkWord 7) -- Tx AuxiliaryData Hash - <> S mdh - <> T (TkWord 8) -- Tx Validity Start - <> S (SlotNo 500) - ) - ] - --- | Golden Tests for Mary -goldenEncodingTestsMary :: TestTree -goldenEncodingTestsMary = - testGroup - "Mary" - [ checkEncodingCBOR - (eraProtVerHigh @Mary) - "ada_only_value" - (Val.inject (Coin 1) :: MaryValue StandardCrypto) - (T (TkInteger 1)) - , checkEncodingCBOR - (eraProtVerHigh @Mary) - "not_just_ada_value" - ( MaryValue @StandardCrypto (Coin 2) $ - MultiAsset $ - Map.fromList - [ - ( policyID1 - , Map.fromList - [ (AssetName assetName1, 13) - , (AssetName assetName2, 17) - ] - ) - , - ( policyID2 - , Map.singleton (AssetName assetName3) 19 - ) - ] - ) - ( T - ( TkListLen 2 - . TkInteger 2 - . TkMapLen 2 - ) - <> S policyID1 - <> T - ( TkMapLen 2 - . TkBytes (SBS.fromShort assetName1) - . TkInteger 13 - . TkBytes (SBS.fromShort assetName2) - . TkInteger 17 - ) - <> S policyID2 - <> T - ( TkMapLen 1 - . TkBytes (SBS.fromShort assetName3) - . TkInteger 19 - ) - ) - , checkEncodingCBOR - (eraProtVerHigh @Mary) - "multiasset_with_negative" - (MultiAsset $ Map.singleton policyID1 (Map.singleton (AssetName assetName1) (-19))) - ( T - ( TkMapLen 1 - ) - <> S policyID1 - <> T - ( TkMapLen 1 - . TkBytes (SBS.fromShort assetName1) - . TkInteger (-19) - ) - ) - , checkEncodingCBORDecodeFailure - (eraProtVerHigh @Mary) - "value_with_negative" - ( MaryValue (Coin 1) $ - MultiAsset $ - Map.singleton policyID1 (Map.singleton (AssetName assetName1) (-19)) - ) - ( T - ( TkListLen 2 - . TkInteger 1 - . TkMapLen 1 - ) - <> S policyID1 - <> T - ( TkMapLen 1 - . TkBytes (SBS.fromShort assetName1) - . TkInteger (-19) - ) - ) - , scriptGoldenTest @Mary - , metadataNoScriptsGoldenTest @Mary - , metadataWithScriptsGoldenTest @Mary - , -- "minimal_txn_body" - let tin = mkTxInPartial genesisId 1 - tout = ShelleyTxOut @Mary testAddrE (Val.inject $ Coin 2) - in checkEncodingCBORAnnotated - (eraProtVerHigh @Mary) - "minimal_txbody" - ( MaryTxBody - (Set.fromList [tin]) - (StrictSeq.singleton tout) - StrictSeq.empty - (Withdrawals Map.empty) - (Coin 9) - (ValidityInterval SNothing SNothing) - SNothing - SNothing - mempty - ) - ( T (TkMapLen 3) - <> T (TkWord 0) -- Tx Ins - <> T (TkListLen 1) - <> S tin - <> T (TkWord 1) -- Tx Outs - <> T (TkListLen 1) - <> S tout - <> T (TkWord 2) -- Tx Fee - <> T (TkWord64 9) - ) - , -- "full_txn_body" - let tin = mkTxInPartial genesisId 1 - tout = ShelleyTxOut @Mary testAddrE (Val.inject $ Coin 2) - reg = RegTxCert testStakeCred - ras = Map.singleton (RewardAccount Testnet (KeyHashObj testKeyHash)) (Coin 123) - up = testUpdate - mdh = hashTxAuxData @Allegra $ AllegraTxAuxData Map.empty StrictSeq.empty - mint = Map.singleton policyID1 $ Map.singleton (AssetName assetName1) 13 - in checkEncodingCBORAnnotated - (eraProtVerHigh @Mary) - "full_txn_body" - ( MaryTxBody - (Set.fromList [tin]) - (StrictSeq.singleton tout) - (StrictSeq.fromList [reg]) - (Withdrawals ras) - (Coin 9) - (ValidityInterval (SJust $ SlotNo 500) (SJust $ SlotNo 600)) - (SJust up) - (SJust mdh) - (MultiAsset mint) - ) - ( T (TkMapLen 10) - <> T (TkWord 0) -- Tx Ins - <> T (TkListLen 1) - <> S tin - <> T (TkWord 1) -- Tx Outs - <> T (TkListLen 1) - <> S tout - <> T (TkWord 2) -- Tx Fee - <> S (Coin 9) - <> T (TkWord 3) -- Tx TTL - <> S (SlotNo 600) - <> T (TkWord 4) -- Tx Certs - <> T (TkListLen 1) - <> S reg - <> T (TkWord 5) -- Tx Reward Withdrawals - <> S ras - <> T (TkWord 6) -- Tx Update - <> S up - <> T (TkWord 7) -- Tx AuxiliaryData Hash - <> S mdh - <> T (TkWord 8) -- Tx Validity Start - <> S (SlotNo 500) - <> T (TkWord 9) -- Tx Mint - <> S mint - ) - ] - -assetName32Bytes :: Assertion -assetName32Bytes = - roundTripCborRangeFailureExpectation (eraProtVerHigh @Mary) maxBound $ - AssetName "123456789-123456789-123456789-123" - --- | Golden Tests for Allegra and Mary -goldenEncodingTests :: TestTree -goldenEncodingTests = - testGroup - "Golden Encoding Tests" - [ goldenEncodingTestsAllegra - , goldenEncodingTestsMary - , testCase "33 bytes asset name too big" assetName32Bytes - ] diff --git a/eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/ShelleyMA/Serialisation/Timelocks.hs b/eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/ShelleyMA/Serialisation/Timelocks.hs deleted file mode 100644 index d79cc63e7bb..00000000000 --- a/eras/shelley-ma/test-suite/test/Test/Cardano/Ledger/ShelleyMA/Serialisation/Timelocks.hs +++ /dev/null @@ -1,61 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Test.Cardano.Ledger.ShelleyMA.Serialisation.Timelocks ( - timelockTests, - MultiSig, -) -where - -import Cardano.Ledger.Allegra (Allegra) -import Cardano.Ledger.Allegra.Scripts (Timelock (..)) -import Cardano.Ledger.Core (eraProtVerHigh, eraProtVerLow) -import Cardano.Ledger.SafeHash (originalBytes) -import Cardano.Ledger.Shelley (Shelley) -import Cardano.Ledger.Shelley.Scripts (MultiSig) -import Cardano.Slotting.Slot (SlotNo (..)) -import Data.Sequence.Strict (fromList) -import Test.Cardano.Ledger.Binary.RoundTrip (embedTripAnnExpectation, roundTripAnnExpectation) -import Test.Cardano.Ledger.Binary.TreeDiff (HexBytes (HexBytes), expectExprEqual) -import Test.Cardano.Ledger.Mary.Arbitrary () -import Test.Cardano.Ledger.Shelley.Serialisation.Generators () -import Test.Cardano.Ledger.ShelleyMA.Serialisation.Generators () -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.HUnit (testCase) -import Test.Tasty.QuickCheck (testProperty) - --- ================================================================ - -s1 :: Timelock Shelley -s1 = RequireAllOf (fromList [RequireTimeStart (SlotNo 12), RequireTimeExpire 18]) - -s2 :: Timelock Shelley -s2 = RequireAllOf (fromList [RequireTimeStart (SlotNo 12), RequireTimeExpire (SlotNo 23)]) - -s3 :: Timelock Shelley -s3 = RequireAllOf (fromList [s1, s2]) - --- ================================================================ - -timelockTests :: TestTree -timelockTests = - testGroup - "Timelock tests" - [ testCase "s1" $ roundTripAnnExpectation s1 - , testCase "s2" $ roundTripAnnExpectation s2 - , testCase "s3" $ roundTripAnnExpectation s3 - , testProperty "roundtripTimelock" $ roundTripAnnExpectation @(Timelock Shelley) - , testProperty "MultiSig deserialises as Timelock" $ - embedTripAnnExpectation @(MultiSig Shelley) - @(Timelock Allegra) - (eraProtVerHigh @Shelley) - (eraProtVerLow @Allegra) - ( \timelock multiSig -> - expectExprEqual (HexBytes (originalBytes timelock)) (HexBytes (originalBytes multiSig)) - ) - ] diff --git a/eras/shelley-ma/test-suite/test/Tests.hs b/eras/shelley-ma/test-suite/test/Tests.hs deleted file mode 100644 index d61d000f367..00000000000 --- a/eras/shelley-ma/test-suite/test/Tests.hs +++ /dev/null @@ -1,92 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Main where - -import Cardano.Ledger.Allegra (Allegra, AllegraEra) -import Cardano.Ledger.Core -import Cardano.Ledger.Mary (Mary, MaryEra) -import Cardano.Ledger.Shelley.Rules (ShelleyLEDGER) -import qualified Cardano.Protocol.TPraos.Rules.Tickn as TPraos -import System.Environment (lookupEnv) -import Test.Cardano.Ledger.Allegra.ScriptTranslation (testScriptPostTranslation) -import Test.Cardano.Ledger.Allegra.Translation (allegraTranslationTests) -import Test.Cardano.Ledger.AllegraEraGen () -import Test.Cardano.Ledger.Mary.Examples.MultiAssets (multiAssetsExample) -import Test.Cardano.Ledger.Mary.Golden (goldenScaledMinDeposit) -import Test.Cardano.Ledger.Mary.Translation (maryTranslationTests) -import Test.Cardano.Ledger.Mary.Value (valTests) -import Test.Cardano.Ledger.MaryEraGen () -import qualified Test.Cardano.Ledger.Shelley.PropertyTests as Shelley (commonTests) -import qualified Test.Cardano.Ledger.Shelley.Rules.AdaPreservation as AdaPreservation -import qualified Test.Cardano.Ledger.Shelley.Rules.ClassifyTraces as ClassifyTraces ( - onlyValidChainSignalsAreGenerated, - relevantCasesAreCovered, - ) -import qualified Test.Cardano.Ledger.Shelley.WitVKeys as WitVKeys (tests) -import qualified Test.Cardano.Ledger.ShelleyMA.Serialisation as Serialisation -import Test.QuickCheck (Args (maxSuccess), stdArgs) -import Test.Tasty -import qualified Test.Tasty.QuickCheck as TQC - -type instance EraRule "TICKN" (MaryEra _c) = TPraos.TICKN - -type instance EraRule "TICKN" (AllegraEra _c) = TPraos.TICKN - -main :: IO () -main = do - nightly <- lookupEnv "NIGHTLY" - defaultMain $ case nightly of - Nothing -> defaultTests - Just _ -> nightlyTests - -defaultTests :: TestTree -defaultTests = - testGroup - "ShelleyMA Ledger Tests" - [ allegraTests - , maryTests - , testGroup - "Mixed MA Ledger Tests" - [ Serialisation.tests - ] - ] - -allegraTests :: TestTree -allegraTests = - testGroup - "Allegra Ledger Tests" - [ allegraTranslationTests - , ( localOption - (TQC.QuickCheckMaxRatio 50) - (ClassifyTraces.relevantCasesAreCovered @Allegra (maxSuccess stdArgs)) - ) - , AdaPreservation.tests @Allegra @(ShelleyLEDGER Allegra) (maxSuccess stdArgs) - , ClassifyTraces.onlyValidChainSignalsAreGenerated @Allegra - , WitVKeys.tests @(EraCrypto Allegra) - , testScriptPostTranslation - ] - -maryTests :: TestTree -maryTests = - testGroup - "Mary Ledger Tests" - [ maryTranslationTests - , valTests - , multiAssetsExample - , goldenScaledMinDeposit - ] - -nightlyTests :: TestTree -nightlyTests = - testGroup - "ShelleyMA Ledger - nightly" - [ testGroup - "Allegra Ledger - nightly" - (Shelley.commonTests @Allegra @(ShelleyLEDGER Allegra)) - , testGroup - "Mary Ledger - nightly" - (Shelley.commonTests @Mary @(ShelleyLEDGER Mary)) - ] diff --git a/eras/shelley/Deliverables.pdf b/eras/shelley/Deliverables.pdf deleted file mode 100644 index f9392c9328605c8480a8b2667480cc1503aebb4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 280735 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 diff --git a/eras/shelley/design-spec/.gitignore b/eras/shelley/design-spec/.gitignore deleted file mode 100644 index e5f6eb686a3..00000000000 --- a/eras/shelley/design-spec/.gitignore +++ /dev/null @@ -1,28 +0,0 @@ -## Ignore LaTeX build products -*.aux -*.lof -*.log -*.lot -*.fls -*.out -*.toc -*.fmt -*.fot -*.cb -*.cb2 -*.lb -*.pdf -*.fdb_latexmk -*.tdo -auto - -## Bibliography auxiliary files (bibtex/biblatex/biber): -*.bbl -*.bcf -*.blg -*-blx.aux -*-blx.bib -*.run.xml - -# Emacs auto-generated Emacs-lisp code -auto/ diff --git a/eras/shelley/design-spec/CHANGELOG.md b/eras/shelley/design-spec/CHANGELOG.md deleted file mode 100644 index 7ce6d1affb8..00000000000 --- a/eras/shelley/design-spec/CHANGELOG.md +++ /dev/null @@ -1,119 +0,0 @@ -# Delegation Design Document Changelog - -## 2020-10-08 -Include member stake in the non-myopic stake calculation. -Replaced average apparent performance usage with references to the stake pool ranking document. - -## 2020-06-12 -Rewrote the chapter on addresses. Now includes multi-sig, and is clearly separating addresses (payment and stake) and credentials. - -## 2020-02-28 -Clarify when we use active stake vs total stake. - -## 2019-06-07 -Update section on script addresses. - -## 2019-05-17 -Some clarifications in response to review by the auditors. - -## 2019-04-11 -Some subtle corrections in the rewards chapter after review by Aikaterina. - -First version officially published on the IOHK blog. - -## 2019-04-08 -General review of the document. - -Mostly small things. Consistent wording, spelling, readability, removed some -obsolete things. - -Removed the remaining todo items. Decisions we still need to make are now -tracked on github instead. - -Moved the section on detecting stale stake into an appendix, and changed it to -reflect the design where stake that is not delegated to an active pool is -ignored (which solves the problem of stale stake to a large degree). - -## 2019-04-05 -Rewrote the chapter on rewards. - -We had lots of discussions about how to properly account for the performance of -pools, particularly in Praos where the actual performance is not observable due -to the private leader schedule. We finally converged to a solution, leading to a -re-write of the incentives section. - -Also, changed the title of the document, and made the capitalisation of ada -consistent. - -## 2019-03-01 -Incorporating further input from the workshop in Berlin, and following discussions, -into the document. - -- Decision: transactions have to have at least one UTxO style input - -- Update: Stake pool metadata - - Specify the format for the metadata, and how it is provided. Streamlined the - different sections that touch stake pool metadata. -- Elaborating further on why stake pool registrations will not be censored. -- Capture choice of KES scheme in design doc. -- Streamlining information on deposits - - Replacing an explanation of the concept with a link to the section where it's - already explained. -- Elaborate on certificate replay protection - - The paragraph was not entirely true, it said there was only one possible source - of funds in addition to UTxO entries, but with rewards accounts, there is - another one. -- Fix that rewards go to treasury if reward key unregistered. - - We can not move them to the rewards pool -- if we did, it would create an - incentive for all other leaders to censor a certificate that caused the pool to - use a valid certificate. -- Update block validity to require operational key -- Additions to Operational Key section - - They are compulsory - - They will use KES - - Operational Key Certificates will expire, to encourage key rotation - - Slight Change in validity rules -- Add FAQ section to the delegation design doc -- Add a couple of todo entries - - -## 2019-01-08 -Changes after the second day of the Berlin workshop. - -- Avoid overloading the term "pool" -- Clarify that Treasury is a Sink for now. -- Avoid Contention at Epoch Boundary -- Decision made: refund for stake pool paid after retirement. -- Update to non-refundable part of deposits - - We figured out in the formal spec how to incrementally add the non-refundable - part to the reward pool of all the relevant epochs, which is fairer than - adding all of it to the reward pool where the resource is released. -- Correction: we're introducing four address types, not three - -## 2019-01-07 -Changes after the first day of the Berlin workshop. - -- Add todo to clarify stakepool metadata -- Add section on TTL for transactions -- Elaboration and slight change to stake pool registration. - - After the first day of discussions in Berlin, we came to the conclusions that - - - we need a _registered_ staking key to collect rewards - - this should _not_ be the same key that's used for participating in the - protocol. For participation in the protocol, we want cold and operational - keys, and using the same key to withdraw rewards is detrimental. - - We needed more elaboration on the multiple owner use case, emphasising that - the rewards for all owners are given to the operator. -- Resolved several todo items -- Include git revision in documents -- Explain why pool registration will not be censored. - -## 2018-12-18 -First version that is considered stable enough to warrant V1. Some things still -need to be pinned down. diff --git a/eras/shelley/design-spec/IOHKCoverPage.sty b/eras/shelley/design-spec/IOHKCoverPage.sty deleted file mode 100644 index 6c9c247ada9..00000000000 --- a/eras/shelley/design-spec/IOHKCoverPage.sty +++ /dev/null @@ -1,271 +0,0 @@ -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{IOHKCoverPage}[2019/09/12] - -\RequirePackage{fancyhdr} -%\RequirePackage{xcolor} - -\newif\if@deliverable -\newif\if@teamreport -\newif\if@wpreport -\newif\if@techreport -\DeclareOption{deliverable} - {\@deliverabletrue} -\DeclareOption{teamreport} - {\@teamreporttrue} -\DeclareOption{wpreport} - {\@wpreporttrue} -\DeclareOption{techreport} - {\@techreporttrue} - \ProcessOptions -% -\def\IOHK{IOHK} -% -\def\reportnumber#1{\def\@reportnumber{#1}} -\def\reportmonth#1{\def\@reportmonth{#1}} -\def\reportyear#1{\def\@reportyear{#1}} -\def\email#1{\def\@email{#1}} -\def\@reportnumber{?} -\def\@reportmonth{} -\def\@reportyear{} -% -\def\Project#1{\def\@Project{#1}} -\def\ReportNumber#1{\def\@ReportNumber{#1}} -\def\DeliverableNumber#1{\def\@DeliverableNumber{#1}} -\def\DeliverableTitle#1#2{\def\@DeliverableTitle{#1}\def\@ShortDelTitle{#2}} -\def\DueDate#1{\def\@DueDate{#1}} -%% should be possible to convert! KH -\def\SubmissionDate#1#2{\def\@SubmissionDate{#1}\def\@ShortSubmissionDate{#2}} -\def\VersionDate#1{\def\@VersionDate{#1}} -\def\LeaderName#1{\def\@LeaderName{#1}} -\def\Authors#1{\def\@Authors{#1}} -\def\DeliverableResponsible#1{\def\@DeliverableResponsible{#1}} -\def\Institution#1{\def\@Institution{#1}} -\def\InstitutionAddress#1{\def\@InstitutionAddress{#1}} -\def\EditorName#1{\def\@EditorName{#1}} -\def\WorkPackage#1{\def\@WorkPackage{#1}} -\def\TaskNumber#1{\def\@TaskNumber{{\@emph Task number:} #1}} -\def\Version#1{\def\@Version{#1}} -\def\SVNRevision#1{\def\@SVNRevision{#1}} -\def\LastEditor#1{\def\@LastEditor{#1}} -%\def\Reviewers#1{\def\@ReviewersTitle{\@bold Reviewers:}\def\@Reviewers{#1}} -\def\Reviewers#1{\@Reviewerstrue\def\@Reviewers{#1}} -\def\LastDate#1{\def\@LastDate{#1}} -\def\DisseminationPU{\def\@IsPU{$\surd$}} -\def\DisseminationCO{\def\@IsCO{$\surd$}} -\def\DisseminationDR{\def\@IsDR{$\surd$}} -\newcommand{\Revision}[5]{\@writefile{cov}{\hline \hfil #1\hfil\\}} -\newcommand{\Task}[3]{\@Taskstrue\@writefile{par}{\hline #1\\}} - -\def\@Project{Cardano} -\def\@Authors{XXXX} -\def\@ReportNumber{XXXX} -\def\@DeliverableNumber{XXXX} -\def\@DeliverableTitle{XXXX} -\def\@ShortDelTitle{\@DeliverableTitle} -\def\@DueDate{XXXX} -\def\@SubmissionDate{XXXX} -\def\@ShortSubmissionDate{\@SubmissionDate} -\def\@LeaderName{XXXX} -\def\@DeliverableResponsible{XXXX} -\def\@Institution{XXXX} -\def\@InstitutionAddress{XXXX} -\def\@EditorName{XXXX} -\def\@WorkPackage{XXXX} -\def\@TaskNumber{~} -\def\@Version{XXXX} -\def\@SVNRevision{XXXX} -\def\@LastEditor{XXXX} -\def\@Reviewers{~} -\newif\if@Reviewers -\newif\if@Tasks -\@Tasksfalse -\def\@LastDate{XXXX} -\def\@IsPU{} -\def\@IsCO{} -\def\@IsDR{} -\def\@Revision{} -\def\@Task{} - -%%cover fonts -\def\@ProjFont{\fontsize{24}{28}\usefont{T1}{ptm}{b}{n}\selectfont} -\def\@TitleFont{\fontsize{18}{24}\usefont{T1}{ptm}{b}{n}\selectfont} -\def\@Large{\fontsize{18}{21}\usefont{T1}{ptm}{m}{n}\selectfont} -\def\@Small{\fontsize{9}{11}\usefont{T1}{ptm}{m}{n}\selectfont} -\def\@font{\fontsize{12}{12}\usefont{T1}{ptm}{m}{n}\selectfont} -\def\@sc{\fontshape{sc}\selectfont} -\def\@emph{\fontshape{sl}\selectfont} -\def\@bold{\fontseries{b}\selectfont} - - -\newdimen\@CoverPageWidth -\newdimen\@CoverPageHeight -\newdimen\@TableWidth -\@CoverPageWidth=\paperwidth -\@CoverPageHeight=\paperheight -\@TableWidth=\paperwidth -\advance\@CoverPageWidth by -1.5in -\advance\@CoverPageHeight by -2in -\advance\@TableWidth by -5cm -\newdimen\TableWidth -\TableWidth=\@TableWidth - - -\newcommand{\@CoverBody}{ -\@font -\parbox{\linewidth}{\centering - \vspace{15mm} -% {Project no. 644235}\par - \vspace{6mm} - {\@ProjFont \Project{}}\par - \vspace{6mm} -% {Research \& Innovation Action (RIA)}\par -% {\@sc \large{\textbf{Refactoring Parallel Heterogeneous Resource-Aware Applications -- a Software Engineering Approach}}}\par - \vspace{10mm} - \if@deliverable - {\@TitleFont \@DeliverableTitle\\ - \vspace{18mm} - {Deliverable }\@DeliverableNumber}\par - \vspace{16mm} - \begin{large} - \begin{center} - {\@Authors } - \end{center} - \end{large} - \par - \vspace{1cm} -% \begin{tabular}{r@{: }l} -% Due date of deliverable& \@DueDate\\ -% Actual submission date& \@SubmissionDate -% \end{tabular} - \par - \fi - \if@techreport - {\@TitleFont \@DeliverableTitle\\ - \vspace{3mm}} - {\Project{} Technical Report \# \@ReportNumber}\par - \vspace{6mm} - {\@Authors \vspace{1cm} }\par - \fi - -} -\parbox{\linewidth}{\flushright - \vspace{10mm} - \if@techreport - Report Registration Date: \@SubmissionDate - \else - {\@emph Project:} \@Project \par - \vspace{5mm} - \fi - \if@deliverable - {\@emph Type:} Deliverable\par - {\@emph Due Date:} \@DueDate\par - % {\@emph WP number:} \@WorkPackage\par - %{\@TaskNumber}\par - \vspace{5mm} - {\@emph Responsible team:} \@DeliverableResponsible\par - {\@emph Editor:} \@EditorName\par - {\@emph Team Leader:} \@LeaderName\par - \fi - \if@teamreport - \vspace{5mm} - {\@emph Report type:} Team Leader's Progress Report\par - \vspace{5mm} - {\@emph Name of Team leader:} \@LeaderName\par - {\@emph Institution \& address:} \@InstitutionAddress\par - \fi - \if@wpreport - {\@emph Report type:} WP Leader's Progress Report\par - {\@emph WP number:} \@WorkPackage\par - \vspace{5mm} - {\@emph Name of WP leader:} \@LeaderName\par - {\@emph Institution \& address:} \@InstitutionAddress\par - \fi -} -\vfill -\parbox{\linewidth}{\centering -{Version \@Version}\par - {\@SubmissionDate}\par - \vspace{5mm}} -{ -\newdimen\@msize -\@msize=\linewidth -\advance\@msize by -1cm -\advance\@msize by -6\tabcolsep -\begin{tabular}{ | p{0.7cm} | p{\@msize} | p{0.3cm} |} - \hline - \multicolumn{3}{|c|}{{\@bold Dissemination Level}}\\ - \hline - {\@bold PU} & Public & \@IsPU\\ - \hline - {{\@bold CO}} & Confidential, only for company distribution & \@IsCO\\ - \hline - {\@bold DR} & Draft, not for general circulation & \@IsDR\\ - \hline - \end{tabular} - } -} - -\newcommand{\@PrintCoverPage}{\bgroup\global\setbox255\vbox{% - \vspace*{-.25in}% - \noindent\hspace*{-.25in}% - \renewcommand{\thepage}{\roman{page}} - \pagestyle{myheadings} \markboth{}{} - - \rlap{ - \begin{minipage}[t][\@CoverPageHeight][t]{\@CoverPageWidth}% - \parbox{\linewidth}{ - \begin{minipage}[c]{6cm} - \includegraphics[width=6cm]{iohk-share-logo.jpg} - \end{minipage} - \hfill -% \begin{minipage}[c]{3.5cm} -% \includegraphics[width=3.5cm]{figures/H2020.jpg} -% \end{minipage} - } - \@CoverBody - \end{minipage} - }% -}\egroup\shipout\box255} - - -\newcommand{\@PrintBackCoverPage}{% -\pagestyle{myheadings}% -\markboth{\@Project: \@ShortDelTitle~(\@DeliverableNumber~v.\@Version, \@ShortSubmissionDate)}% - {\@Project: \@ShortDelTitle~(\@DeliverableNumber~v.\@Version, \@ShortSubmissionDate)}% -} - - - -\AtBeginDocument{\@PrintCoverPage\@PrintBackCoverPage% - \renewcommand{\thepage}{\roman{page}}% -% \setcounter{page}{1}% -} - -%% Added change log -- KH - -\newcounter{change} - -\newenvironment{changelog}{% -\clearpage -\setcounter{change}{0} -\section*{Change Log} -% -\begin{tabular}{||p{0.8cm}|p{1.8cm}|p{3cm}|p{1.5cm}|p{7.4cm}||}% -\hline\hline% -\textbf{Rev.} & \textbf{Date} & \textbf{Who} & \textbf{Team} & \textbf{What}% -}{% -\\\hline\hline% -\end{tabular}% -\clearpage% -} - -\newcommand{\change}[4]{\stepcounter{change}% -\\\hline% -\arabic{change}} - -\newcommand{\changePageBreak}{% -\end{tabular}% -\clearpage% -\begin{tabular}{||p{0.8cm}|p{1.8cm}|p{3cm}|p{1.5cm}|p{7.4cm}||}% -\textbf{Rev.} & \textbf{Date} & \textbf{Who} & \textbf{Team} & \textbf{What}% -} diff --git a/eras/shelley/design-spec/Makefile b/eras/shelley/design-spec/Makefile deleted file mode 100644 index f023ad906f7..00000000000 --- a/eras/shelley/design-spec/Makefile +++ /dev/null @@ -1,51 +0,0 @@ -## -## Makefile for the ledger rules, based on: -## -## https://tex.stackexchange.com/questions/40738/how-to-properly-make-a-latex-project -## - -# Document name -DOCNAME = shelley-delegation - -# You want latexmk to *always* run, because make does not have all the info. -# Also, include non-file targets in .PHONY so they are run regardless of any -# file of the given name existing. -.PHONY: $(DOCNAME).pdf all clean - -# The first rule in a Makefile is the one executed by default ("make"). It -# should always be the "all" rule, so that "make" and "make all" are identical. -all: $(DOCNAME).pdf - -## -## CUSTOM BUILD RULES -## -$(DOCNAME).pdf: $(DOCNAME).bbl - -$(DOCNAME).bbl: $(DOCNAME).tex - touch $(DOCNAME).bbl - - -## -## MAIN LATEXMK RULE -## - -# -pdf tells latexmk to generate PDF directly (instead of DVI). -# -pdflatex="" tells latexmk to call a specific backend with specific options. -# -use-make tells latexmk to call make for generating missing files. - -# -interaction=nonstopmode keeps the pdflatex backend from stopping at a -# missing file reference and interactively asking you for an alternative. - -$(DOCNAME).pdf: $(DOCNAME).tex - latexmk -pdf -pdflatex="pdflatex -synctex=1 -interaction=nonstopmode" -use-make $(DOCNAME).tex - -watch: $(DOCNAME).tex - latexmk -pvc -pdf -pdflatex="pdflatex -synctex=1 -interaction=nonstopmode" -use-make $(DOCNAME).tex - -clean: - latexmk -CA - -install: - mkdir -pv ${out}/nix-support/ - cp $(DOCNAME).pdf ${out}/ - echo "doc-pdf $(DOCNAME) ${out}/$(DOCNAME).pdf" > ${out}/nix-support/hydra-build-products diff --git a/eras/shelley/design-spec/addresses.dot b/eras/shelley/design-spec/addresses.dot deleted file mode 100644 index f03c4170099..00000000000 --- a/eras/shelley/design-spec/addresses.dot +++ /dev/null @@ -1,52 +0,0 @@ -digraph addresses { - graph[compound=true]; - node [shape=box]; - - payment_address [label = "Payment Address"]; - byron_address [label = "Byron Address"]; - stake_address [label = "Stake Address"]; - - payment_credential [label = "Payment Credential"]; - stake_address_reference [label = "Stake Address Reference"]; - stake_credential [label = "Stake Credential"]; - - pvkh [label = "Payment Verification\nKey Hash"]; - psh [label = "Script Hash"]; - svkh [label = "Stake Verification\nKey Hash"]; - ssh [label = "Script Hash"]; - - by_value [label = "By Value"]; - by_pointer [label = "By Pointer"]; - null [label = "null"]; - - subgraph cluster_stake { - stake_address - stake_credential - svkh - ssh - } - - subgraph cluster_payment { - payment_address byron_address payment_credential stake_address_reference - pvkh psh by_value by_pointer null - by_value by_pointer null - - - subgraph cluster_shelley { - label = "Shelley Address" - payment_credential - stake_address_reference - } - - } - - payment_address -> byron_address; - payment_address -> payment_credential [lhead = cluster_shelley]; - payment_credential -> {pvkh, psh}; - stake_address_reference -> {by_value, by_pointer, null}; - - by_value -> stake_credential [style = dashed, constraint=false]; - - stake_address -> stake_credential; - stake_credential -> {svkh, ssh}; -} diff --git a/eras/shelley/design-spec/addresses.pdf b/eras/shelley/design-spec/addresses.pdf deleted file mode 100644 index c1b80a2a69356f4aa40afa884c0142dc0dd710f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17029 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

r9HJAl?5YC<* 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 r-0e(0T=i{joc>d<`JaI%{uiC$|6kC= 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 tOLMTGnHjH{5Evo}_ } - { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't := - nameptr #1 > - { namesleft #1 > - { ", " * t * } - { numnames #2 > - { "," * } - 'skip$ - if$ - t "others" = - { " et~al." * } - { " and " * t * } - if$ - } - if$ - } - 't - if$ - nameptr #1 + 'nameptr := - namesleft #1 - 'namesleft := - } - while$ -} - -FUNCTION {format.authors} -{ author empty$ - { "" } - { author format.names } - if$ -} - -FUNCTION {format.editors} -{ editor empty$ - { "" } - { editor format.names - editor num.names$ #1 > - { ", editors" * } - { ", editor" * } - if$ - } - if$ -} - -FUNCTION {format.title} -{ title empty$ - { "" } - { title "t" change.case$ } - if$ -} - -FUNCTION {format.eprint} -{ eprint empty$ - { "" } - { "\burlalt{" eprint * "}{http://arxiv.org/abs/" * eprint * "}" * } - if$ -} - -FUNCTION {format.url} -{ doi empty$ not - url empty$ - or - { "" } - { "\urlprefix\url{" url * "}" * } - if$ -} - -FUNCTION {format.doi} -{ doi empty$ - { "" } - { "\doi{" doi * "}" * } - if$ -} - - -FUNCTION {n.dashify} -{ 't := - "" - { t empty$ not } - { t #1 #1 substring$ "-" = - { t #1 #2 substring$ "--" = not - { "--" * - t #2 global.max$ substring$ 't := - } - { { t #1 #1 substring$ "-" = } - { "-" * - t #2 global.max$ substring$ 't := - } - while$ - } - if$ - } - { t #1 #1 substring$ * - t #2 global.max$ substring$ 't := - } - if$ - } - while$ -} - -FUNCTION {format.date} -{ year empty$ - { month empty$ - { "" } - { "there's a month but no year in " cite$ * warning$ - month - } - if$ - } - { month empty$ - 'year - { month " " * year * } - if$ - } - if$ -} - -FUNCTION {format.btitle} -{ title emphasize -} - -FUNCTION {tie.or.space.connect} -{ duplicate$ text.length$ #3 < - { "~" } - { " " } - if$ - swap$ * * -} - -FUNCTION {either.or.check} -{ empty$ - 'pop$ - { "can't use both " swap$ * " fields in " * cite$ * warning$ } - if$ -} - -FUNCTION {format.bvolume} -{ volume empty$ - { "" } - { "volume" volume tie.or.space.connect - series empty$ - 'skip$ - { " of " * series emphasize * } - if$ - "volume and number" number either.or.check - } - if$ -} - -FUNCTION {format.number.series} -{ volume empty$ - { number empty$ - { series field.or.null } - { output.state mid.sentence = - { "number" } - { "Number" } - if$ - number tie.or.space.connect - series empty$ - { "there's a number but no series in " cite$ * warning$ } - { " in " * series * } - if$ - } - if$ - } - { "" } - if$ -} - -FUNCTION {format.edition} -{ edition empty$ - { "" } - { output.state mid.sentence = - { edition "l" change.case$ " edition" * } - { edition "t" change.case$ " edition" * } - if$ - } - if$ -} - -INTEGERS { multiresult } - -FUNCTION {multi.page.check} -{ 't := - #0 'multiresult := - { multiresult not - t empty$ not - and - } - { t #1 #1 substring$ - duplicate$ "-" = - swap$ duplicate$ "," = - swap$ "+" = - or or - { #1 'multiresult := } - { t #2 global.max$ substring$ 't := } - if$ - } - while$ - multiresult -} - -FUNCTION {format.pages} -{ pages empty$ - { "" } - { pages multi.page.check - { "pages" pages n.dashify tie.or.space.connect } - { "page" pages tie.or.space.connect } - if$ - } - if$ -} - -FUNCTION {format.vol.num.pages} -{ volume field.or.null - number empty$ - 'skip$ - { "(" number * ")" * * - volume empty$ - { "there's a number but no volume in " cite$ * warning$ } - 'skip$ - if$ - } - if$ - pages empty$ - 'skip$ - { duplicate$ empty$ - { pop$ format.pages } - { ":" * pages n.dashify * } - if$ - } - if$ -} - -FUNCTION {format.chapter.pages} -{ chapter empty$ - 'format.pages - { type empty$ - { "chapter" } - { type "l" change.case$ } - if$ - chapter tie.or.space.connect - pages empty$ - 'skip$ - { ", " * format.pages * } - if$ - } - if$ -} - -FUNCTION {format.in.ed.booktitle} -{ booktitle empty$ - { "" } - { editor empty$ - { "In " booktitle emphasize * } - { "In " format.editors * ", " * booktitle emphasize * } - if$ - } - if$ -} - -FUNCTION {empty.misc.check} -{ author empty$ title empty$ howpublished empty$ - month empty$ year empty$ note empty$ - and and and and and - key empty$ not and - { "all relevant fields are empty in " cite$ * warning$ } - 'skip$ - if$ -} - -FUNCTION {format.thesis.type} -{ type empty$ - 'skip$ - { pop$ - type "t" change.case$ - } - if$ -} - -FUNCTION {format.tr.number} -{ type empty$ - { "Technical Report" } - 'type - if$ - number empty$ - { "t" change.case$ } - { number tie.or.space.connect } - if$ -} - -FUNCTION {format.article.crossref} -{ key empty$ - { journal empty$ - { "need key or journal for " cite$ * " to crossref " * crossref * - warning$ - "" - } - { "In {\em " journal * "\/}" * } - if$ - } - { "In " key * } - if$ - " \cite{" * crossref * "}" * -} - -FUNCTION {format.crossref.editor} -{ editor #1 "{vv~}{ll}" format.name$ - editor num.names$ duplicate$ - #2 > - { pop$ " et~al." * } - { #2 < - 'skip$ - { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = - { " et~al." * } - { " and " * editor #2 "{vv~}{ll}" format.name$ * } - if$ - } - if$ - } - if$ -} - -FUNCTION {format.book.crossref} -{ volume empty$ - { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ - "In " - } - { "Volume" volume tie.or.space.connect - " of " * - } - if$ - editor empty$ - editor field.or.null author field.or.null = - or - { key empty$ - { series empty$ - { "need editor, key, or series for " cite$ * " to crossref " * - crossref * warning$ - "" * - } - { "{\em " * series * "\/}" * } - if$ - } - { key * } - if$ - } - { format.crossref.editor * } - if$ - " \cite{" * crossref * "}" * -} - -FUNCTION {format.incoll.inproc.crossref} -{ editor empty$ - editor field.or.null author field.or.null = - or - { key empty$ - { booktitle empty$ - { "need editor, key, or booktitle for " cite$ * " to crossref " * - crossref * warning$ - "" - } - { "In {\em " booktitle * "\/}" * } - if$ - } - { "In " key * } - if$ - } - { "In " format.crossref.editor * } - if$ - " \cite{" * crossref * "}" * -} - -FUNCTION {article} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - crossref missing$ - { journal emphasize "journal" output.check - format.vol.num.pages output - format.date "year" output.check - } - { format.article.crossref output.nonnull - format.pages output - } - if$ - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {book} -{ output.bibitem - author empty$ - { format.editors "author and editor" output.check } - { format.authors output.nonnull - crossref missing$ - { "author and editor" editor either.or.check } - 'skip$ - if$ - } - if$ - new.block - format.btitle "title" output.check - crossref missing$ - { format.bvolume output - new.block - format.number.series output - new.sentence - publisher "publisher" output.check - address output - } - { new.block - format.book.crossref output.nonnull - } - if$ - format.edition output - format.date "year" output.check - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {booklet} -{ output.bibitem - format.authors output - new.block - format.title "title" output.check - howpublished address new.block.checkb - howpublished output - address output - format.date output - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {inbook} -{ output.bibitem - author empty$ - { format.editors "author and editor" output.check } - { format.authors output.nonnull - crossref missing$ - { "author and editor" editor either.or.check } - 'skip$ - if$ - } - if$ - new.block - format.btitle "title" output.check - crossref missing$ - { format.bvolume output - format.chapter.pages "chapter and pages" output.check - new.block - format.number.series output - new.sentence - publisher "publisher" output.check - address output - } - { format.chapter.pages "chapter and pages" output.check - new.block - format.book.crossref output.nonnull - } - if$ - format.edition output - format.date "year" output.check - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {incollection} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - crossref missing$ - { format.in.ed.booktitle "booktitle" output.check - format.bvolume output - format.number.series output - format.chapter.pages output - new.sentence - publisher "publisher" output.check - address output - format.edition output - format.date "year" output.check - } - { format.incoll.inproc.crossref output.nonnull - format.chapter.pages output - } - if$ - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {inproceedings} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - crossref missing$ - { format.in.ed.booktitle "booktitle" output.check - format.bvolume output - format.number.series output - format.pages output - address empty$ - { organization publisher new.sentence.checkb - organization output - publisher output - format.date "year" output.check - } - { address output.nonnull - format.date "year" output.check - new.sentence - organization output - publisher output - } - if$ - } - { format.incoll.inproc.crossref output.nonnull - format.pages output - } - if$ - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {conference} { inproceedings } - -FUNCTION {manual} -{ output.bibitem - author empty$ - { organization empty$ - 'skip$ - { organization output.nonnull - address output - } - if$ - } - { format.authors output.nonnull } - if$ - new.block - format.btitle "title" output.check - author empty$ - { organization empty$ - { address new.block.checka - address output - } - 'skip$ - if$ - } - { organization address new.block.checkb - organization output - address output - } - if$ - format.edition output - format.date output - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {mastersthesis} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - "Master's thesis" format.thesis.type output.nonnull - school "school" output.check - address output - format.date "year" output.check - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {misc} -{ output.bibitem - format.authors output - title howpublished new.block.checkb - format.title output - howpublished new.block.checka - howpublished output - format.date output - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry - empty.misc.check -} - -FUNCTION {phdthesis} -{ output.bibitem - format.authors "author" output.check - new.block - format.btitle "title" output.check - new.block - "PhD thesis" format.thesis.type output.nonnull - school "school" output.check - address output - format.date "year" output.check - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {proceedings} -{ output.bibitem - editor empty$ - { organization output } - { format.editors output.nonnull } - if$ - new.block - format.btitle "title" output.check - format.bvolume output - format.number.series output - address empty$ - { editor empty$ - { publisher new.sentence.checka } - { organization publisher new.sentence.checkb - organization output - } - if$ - publisher output - format.date "year" output.check - } - { address output.nonnull - format.date "year" output.check - new.sentence - editor empty$ - 'skip$ - { organization output } - if$ - publisher output - } - if$ - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {techreport} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - format.tr.number output.nonnull - institution "institution" output.check - address output - format.date "year" output.check - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {unpublished} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - note "note" output.check - format.date output - format.eprint output - format.doi output - new.block - format.url output - fin.entry -} - -FUNCTION {default.type} { misc } - -MACRO {jan} {"Jan."} - -MACRO {feb} {"Feb."} - -MACRO {mar} {"Mar."} - -MACRO {apr} {"Apr."} - -MACRO {may} {"May"} - -MACRO {jun} {"June"} - -MACRO {jul} {"July"} - -MACRO {aug} {"Aug."} - -MACRO {sep} {"Sept."} - -MACRO {oct} {"Oct."} - -MACRO {nov} {"Nov."} - -MACRO {dec} {"Dec."} - -MACRO {acmcs} {"ACM Comput. Surv."} - -MACRO {acta} {"Acta Inf."} - -MACRO {cacm} {"Commun. ACM"} - -MACRO {ibmjrd} {"IBM J. Res. Dev."} - -MACRO {ibmsj} {"IBM Syst.~J."} - -MACRO {ieeese} {"IEEE Trans. Softw. Eng."} - -MACRO {ieeetc} {"IEEE Trans. Comput."} - -MACRO {ieeetcad} - {"IEEE Trans. Comput.-Aided Design Integrated Circuits"} - -MACRO {ipl} {"Inf. Process. Lett."} - -MACRO {jacm} {"J.~ACM"} - -MACRO {jcss} {"J.~Comput. Syst. Sci."} - -MACRO {scp} {"Sci. Comput. Programming"} - -MACRO {sicomp} {"SIAM J. Comput."} - -MACRO {tocs} {"ACM Trans. Comput. Syst."} - -MACRO {tods} {"ACM Trans. Database Syst."} - -MACRO {tog} {"ACM Trans. Gr."} - -MACRO {toms} {"ACM Trans. Math. Softw."} - -MACRO {toois} {"ACM Trans. Office Inf. Syst."} - -MACRO {toplas} {"ACM Trans. Prog. Lang. Syst."} - -MACRO {tcs} {"Theoretical Comput. Sci."} - -READ - -FUNCTION {sortify} -{ purify$ - "l" change.case$ -} - -INTEGERS { len } - -FUNCTION {chop.word} -{ 's := - 'len := - s #1 len substring$ = - { s len #1 + global.max$ substring$ } - 's - if$ -} - -INTEGERS { et.al.char.used } - -FUNCTION {initialize.et.al.char.used} -{ #0 'et.al.char.used := -} - -EXECUTE {initialize.et.al.char.used} - -FUNCTION {format.lab.names} -{ 's := - s num.names$ 'numnames := - numnames #1 > - { numnames #4 > - { #3 'namesleft := } - { numnames 'namesleft := } - if$ - #1 'nameptr := - "" - { namesleft #0 > } - { nameptr numnames = - { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" = - { "{\etalchar{+}}" * - #1 'et.al.char.used := - } - { s nameptr "{v{}}{l{}}" format.name$ * } - if$ - } - { s nameptr "{v{}}{l{}}" format.name$ * } - if$ - nameptr #1 + 'nameptr := - namesleft #1 - 'namesleft := - } - while$ - numnames #4 > - { "{\etalchar{+}}" * - #1 'et.al.char.used := - } - 'skip$ - if$ - } - { s #1 "{v{}}{l{}}" format.name$ - duplicate$ text.length$ #2 < - { pop$ s #1 "{ll}" format.name$ #3 text.prefix$ } - 'skip$ - if$ - } - if$ -} - -FUNCTION {author.key.label} -{ author empty$ - { key empty$ - { cite$ #1 #3 substring$ } - { key #3 text.prefix$ } - if$ - } - { author format.lab.names } - if$ -} - -FUNCTION {author.editor.key.label} -{ author empty$ - { editor empty$ - { key empty$ - { cite$ #1 #3 substring$ } - { key #3 text.prefix$ } - if$ - } - { editor format.lab.names } - if$ - } - { author format.lab.names } - if$ -} - -FUNCTION {author.key.organization.label} -{ author empty$ - { key empty$ - { organization empty$ - { cite$ #1 #3 substring$ } - { "The " #4 organization chop.word #3 text.prefix$ } - if$ - } - { key #3 text.prefix$ } - if$ - } - { author format.lab.names } - if$ -} - -FUNCTION {editor.key.organization.label} -{ editor empty$ - { key empty$ - { organization empty$ - { cite$ #1 #3 substring$ } - { "The " #4 organization chop.word #3 text.prefix$ } - if$ - } - { key #3 text.prefix$ } - if$ - } - { editor format.lab.names } - if$ -} - -FUNCTION {calc.label} -{ label empty$ - { type$ "book" = - type$ "inbook" = - or - 'author.editor.key.label - { type$ "proceedings" = - 'editor.key.organization.label - { type$ "manual" = - 'author.key.organization.label - 'author.key.label - if$ - } - if$ - } - if$ - duplicate$ - year field.or.null purify$ #-1 #2 substring$ - * - } - { label duplicate$ } - if$ - 'cite.label := - year field.or.null purify$ #-1 #4 substring$ - * - sortify 'sort.label := -} - -FUNCTION {sort.format.names} -{ 's := - #1 'nameptr := - "" - s num.names$ 'numnames := - numnames 'namesleft := - { namesleft #0 > } - { nameptr #1 > - { " " * } - 'skip$ - if$ - s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := - nameptr numnames = t "others" = and - { "et al" * } - { t sortify * } - if$ - nameptr #1 + 'nameptr := - namesleft #1 - 'namesleft := - } - while$ -} - -FUNCTION {sort.format.title} -{ 't := - "A " #2 - "An " #3 - "The " #4 t chop.word - chop.word - chop.word - sortify - #1 global.max$ substring$ -} - -FUNCTION {author.sort} -{ author empty$ - { key empty$ - { "to sort, need author or key in " cite$ * warning$ - "" - } - { key sortify } - if$ - } - { author sort.format.names } - if$ -} - -FUNCTION {author.editor.sort} -{ author empty$ - { editor empty$ - { key empty$ - { "to sort, need author, editor, or key in " cite$ * warning$ - "" - } - { key sortify } - if$ - } - { editor sort.format.names } - if$ - } - { author sort.format.names } - if$ -} - -FUNCTION {author.organization.sort} -{ author empty$ - { organization empty$ - { key empty$ - { "to sort, need author, organization, or key in " cite$ * warning$ - "" - } - { key sortify } - if$ - } - { "The " #4 organization chop.word sortify } - if$ - } - { author sort.format.names } - if$ -} - -FUNCTION {editor.organization.sort} -{ editor empty$ - { organization empty$ - { key empty$ - { "to sort, need editor, organization, or key in " cite$ * warning$ - "" - } - { key sortify } - if$ - } - { "The " #4 organization chop.word sortify } - if$ - } - { editor sort.format.names } - if$ -} - -FUNCTION {presort} -{ calc.label - sort.label - " " - * - type$ "book" = - type$ "inbook" = - or - 'author.editor.sort - { type$ "proceedings" = - 'editor.organization.sort - { type$ "manual" = - 'author.organization.sort - 'author.sort - if$ - } - if$ - } - if$ - * - " " - * - year field.or.null sortify - * - " " - * - title field.or.null - sort.format.title - * - #1 entry.max$ substring$ - 'sort.key$ := -} - -ITERATE {presort} - -SORT - -STRINGS { longest.label last.sort.label next.extra } - -INTEGERS { longest.label.width last.extra.num } - -FUNCTION {initialize.longest.label} -{ "" 'longest.label := - #0 int.to.chr$ 'last.sort.label := - "" 'next.extra := - #0 'longest.label.width := - #0 'last.extra.num := -} - -FUNCTION {forward.pass} -{ last.sort.label sort.label = - { last.extra.num #1 + 'last.extra.num := - last.extra.num int.to.chr$ 'extra.label := - } - { "a" chr.to.int$ 'last.extra.num := - "" 'extra.label := - sort.label 'last.sort.label := - } - if$ -} - -FUNCTION {reverse.pass} -{ next.extra "b" = - { "a" 'extra.label := } - 'skip$ - if$ - cite.label extra.label * 'cite.label := - cite.label width$ longest.label.width > - { cite.label 'longest.label := - cite.label width$ 'longest.label.width := - } - 'skip$ - if$ - extra.label 'next.extra := -} - -EXECUTE {initialize.longest.label} - -ITERATE {forward.pass} - -REVERSE {reverse.pass} - -FUNCTION {begin.bib} -{ et.al.char.used - { "\newcommand{\etalchar}[1]{$^{#1}$}" write$ newline$ } - 'skip$ - if$ - preamble$ empty$ - 'skip$ - { preamble$ write$ newline$ } - if$ - "\begin{thebibliography}{" longest.label * "}" * write$ newline$ - "\expandafter\ifx\csname url\endcsname\relax" - write$ newline$ - " \def\url#1{\texttt{#1}}\fi" - write$ newline$ - "\expandafter\ifx\csname doi\endcsname\relax" - write$ newline$ - " \def\doi#1{\burlalt{doi:#1}{http://dx.doi.org/#1}}\fi" - write$ newline$ - "\expandafter\ifx\csname urlprefix\endcsname\relax\def\urlprefix{URL }\fi" - write$ newline$ - "\expandafter\ifx\csname href\endcsname\relax" - write$ newline$ - " \def\href#1#2{#2}\fi" - write$ newline$ - "\expandafter\ifx\csname burlalt\endcsname\relax" - write$ newline$ - " \def\burlalt#1#2{\href{#2}{#1}}\fi" - write$ newline$ -} - -EXECUTE {begin.bib} - -EXECUTE {init.state.consts} - -ITERATE {call.type$} - -FUNCTION {end.bib} -{ newline$ - "\end{thebibliography}" write$ newline$ -} - -EXECUTE {end.bib} diff --git a/eras/shelley/design-spec/iohk-share-logo.jpg b/eras/shelley/design-spec/iohk-share-logo.jpg deleted file mode 100644 index 9c864e184c9115ae3013c592fcbec14b8d4410be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9689 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 Gng0VXU1MYb diff --git a/eras/shelley/formal-spec/iohk.sty b/eras/shelley/formal-spec/iohk.sty deleted file mode 100644 index 71a1dc5b1fb..00000000000 --- a/eras/shelley/formal-spec/iohk.sty +++ /dev/null @@ -1,46 +0,0 @@ -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{iohk}[2018/10/18] - -\RequirePackage{amssymb} -\RequirePackage{extarrows} -\RequirePackage{slashed} -\RequirePackage[tikz]{bclogo} -\RequirePackage{stmaryrd} - -\DeclareMathOperator{\dom}{dom} -\DeclareMathOperator{\range}{range} - -\newcommand{\powerset}[1]{\ensuremath{\mathbb{P}~#1}} -\newcommand{\restrictdom}{\ensuremath{\lhd}} -\newcommand{\subtractdom}{\ensuremath{\mathbin{\slashed{\restrictdom}}}} -\newcommand{\restrictrange}{\ensuremath{\rhd}} -\newcommand{\subtractrange}{\ensuremath{\mathbin{\slashed{\restrictrange}}}} -\newcommand{\union}{\ensuremath{\cup}} -\newcommand{\unionoverrideRight}{\ensuremath{\mathbin{\underrightarrow\cup}}} -\newcommand{\unionoverrideLeft}{\ensuremath{\mathbin{\underleftarrow\cup}}} -\newcommand{\unionoverridePlus}{\ensuremath{\mathbin{\cup_{+}}}} -\newcommand{\unionoverrideZero}{\ensuremath{\mathbin{\cup_{0}}}} -\newcommand{\uniondistinct}{\ensuremath{\uplus}} -\newcommand{\var}[1]{\ensuremath{\mathit{#1}}} -\newcommand{\fun}[1]{\ensuremath{\mathsf{#1}}} -\newcommand{\type}[1]{\ensuremath{\mathsf{#1}}} -\newcommand{\signed}[2]{\ensuremath{\llbracket #1 \rrbracket_{#2}}} -\newcommand{\size}[1]{\ensuremath{\left| #1 \right|}} -\newcommand{\trans}[2]{\ensuremath{\xlongrightarrow[\textsc{#1}]{#2}}} -\newcommand{\seqof}[1]{\ensuremath{#1^{*}}} -\newcommand{\nextdef}{\ensuremath{\\[1em]}} -\newcommand{\where}{\ensuremath{~ ~ \mathbf{where}~ ~ }} - -\newcommand{\varUpdate}[1]{\boldsymbol{\color{Violet}#1}} - -\newenvironment{question} - {\begin{bclogo}[logo=\bcquestion, couleur=orange!10, arrondi=0.2]{ QUESTION}} - {\end{bclogo}} -%\newenvironment{todo} -% {\begin{bclogo}[logo=\bcoutil, couleur=red!5, couleurBarre=red, arrondi=0.2]{ TODO}} -% {\end{bclogo}} -\newenvironment{note} - {\begin{bclogo}[logo=\bcattention, couleur=orange!10, arrondi=0.2]{ NOTE}} - {\end{bclogo}} - -\endinput diff --git a/eras/shelley/formal-spec/leader-value.tex b/eras/shelley/formal-spec/leader-value.tex deleted file mode 100644 index b70a264d003..00000000000 --- a/eras/shelley/formal-spec/leader-value.tex +++ /dev/null @@ -1,60 +0,0 @@ -\section{Leader Value Calculation} -\label{sec:leader-value-calc} - -This section details how we determine whether a node is entitled to lead (under -the Praos protocol) given the output of its verifiable random function -calculation. - -\begin{figure} - \emph{Values associated with the leader value calculations} - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \var{certNat} & \{n | n \in \N, n \in [0,2^{512})\} & \text{Certified natural value from VRF} \\ - \var{f} & [0,1] & \text{Active slot coefficient} \\ - \sigma & [0,1] & \text{Stake proportion} - \end{array} - \end{equation*} -\end{figure} - -\subsection{Computing the leader value} - -The verifiable random function gives us a 64-byte random output. We interpret -this as a natural number $\var{certNat}$ in the range $[0,2^{512})$. - -\subsection{Node eligibility} - -As per \cite{ouroboros_praos}, a node is eligible to lead when its leader value -$p < 1 - (1 - f)^\sigma$. We have - -\begin{align*} - p & < 1 - (1 -f)^\sigma \\ - \iff \left(\frac{1}{1-p}\right) & < \exp{(-\sigma \cdot \ln{(1-f)})} -\end{align*} - -The latter inequality can be efficiently computed through use of its Taylor -expansion and error estimation to stop computing terms once we are certain that -the result will be either above or below the target value. - -We carry out all computations using fixed precision arithmetic (specifically, we -use 34 decimal bits of precision, since this is enough to represent the fraction -of a single lovelace.) - -As such, we define the following: - -\begin{align*} - p & = \frac{\var{certNat}}{2^{512}} \\ - q & = 1 - p \\ - c & = \ln{(1 - f)} -\end{align*} - -and define the function \textit{checkLeaderVal} as follows: - -\begin{equation*} - \fun{checkLeaderVal}~\var{certNat}~\sigma~\var{f} = - \left\{ - \begin{array}{l@{~}r} - \mathsf{True}, & f = 1 \\ - \frac{1}{q} < \exp{(-\sigma \cdot c)}, & \text{ otherwise} - \end{array} - \right. -\end{equation*} diff --git a/eras/shelley/formal-spec/ledger.tex b/eras/shelley/formal-spec/ledger.tex deleted file mode 100644 index ef2f0483f4f..00000000000 --- a/eras/shelley/formal-spec/ledger.tex +++ /dev/null @@ -1,195 +0,0 @@ -\section{Ledger State Transition} -\label{sec:ledger-trans} - -The entire state transformation of the ledger state caused by a valid transaction -can now be given as the combination of the UTxO transition and the delegation transitions. - -Figure~\ref{fig:ts-types:ledger} defines the types for this transition. -The environment for this rule consists of: -\begin{itemize} - \item The current slot. - \item The transaction index within the current block. - \item The protocol parameters. - \item The accounting state. -\end{itemize} -The ledger state consists of: -\begin{itemize} - \item The UTxO state. - \item The delegation and pool states. -\end{itemize} - -\begin{figure}[htb] - \emph{Ledger environment} - \begin{equation*} - \LEnv = - \left( - \begin{array}{r@{~\in~}lr} - \var{slot} & \Slot & \text{current slot}\\ - \var{txIx} & \Ix & \text{transaction index}\\ - \var{pp} & \PParams & \text{protocol parameters}\\ - \var{acnt} & \Acnt & \text{accounting state} - \end{array} - \right) - \end{equation*} - % - \emph{Ledger state} - \begin{equation*} - \LState = - \left( - \begin{array}{r@{~\in~}lr} - \var{utxoSt} & \UTxOState & \text{UTxO state}\\ - \var{dpstate} & \DPState & \text{delegation and pool state}\\ - \end{array} - \right) - \end{equation*} - % - \emph{Ledger transitions} - \begin{equation*} - \_ \vdash - \var{\_} \trans{ledger}{\_} \var{\_} - \subseteq \powerset (\LEnv \times \LState \times \Tx \times \LState) - \end{equation*} - \caption{Ledger transition-system types} - \label{fig:ts-types:ledger} -\end{figure} - -Figure~\ref{fig:ts-types:ledger} defines the ledger state transition. -It has a single rule, which first calls the $\mathsf{UTXOW}$ transition, -then calls the $\mathsf{DELEGS}$ transition. - -\begin{figure} - \begin{equation} - \label{eq:ledger} - \inference[ledger] - { - { - \begin{array}{c} - \var{slot} \\ - \var{txIx} \\ - \var{pp} \\ - \var{tx}\\ - \var{acnt} - \end{array} - } - \vdash - dpstate \trans{\hyperref[fig:rules:delegation-sequence]{delegs}}{ - \fun{txcerts}~\var{(\txbody{tx})}} dpstate' - \\~\\ - (\var{dstate}, \var{pstate}) \leteq \var{dpstate} \\ - (\_, \_, \_, \_, \var{genDelegs}, \_) \leteq \var{dstate} \\ - (\var{poolParams}, \_, \_) \leteq \var{pstate} \\ - \\~\\ - { - \begin{array}{c} - \var{slot} \\ - \var{pp} \\ - \var{poolParams} \\ - \var{genDelegs} \\ - \end{array} - } - \vdash \var{utxoSt} \trans{\hyperref[fig:rules:utxow-shelley]{utxow}}{tx} \var{utxoSt'} - } - { - \begin{array}{c} - \var{slot} \\ - \var{txIx} \\ - \var{pp} \\ - \var{acnt} - \end{array} - \vdash - \left( - \begin{array}{ll} - \var{utxoSt} \\ - \var{dpstate} \\ - \end{array} - \right) - \trans{ledger}{tx} - \left( - \begin{array}{ll} - \varUpdate{utxoSt'} \\ - \varUpdate{dpstate'} \\ - \end{array} - \right) - } - \end{equation} - \caption{Ledger inference rule} - \label{fig:rules:ledger} -\end{figure} - -\clearpage - -The transition system $\mathsf{LEDGER}$ in Figure~\ref{fig:rules:ledger} is iterated -in $\mathsf{LEDGERS}$ in order to process a list of transactions. - -\begin{figure}[htb] - \emph{Ledger Sequence transitions} - \begin{equation*} - \_ \vdash - \var{\_} \trans{ledgers}{\_} \var{\_} - \subseteq \powerset ((\Slot\times\PParams\times\Coin) \times \LState \times \seqof{\Tx} \times \LState) - \end{equation*} - \caption{Ledger Sequence transition-system types} - \label{fig:ts-types:ledgers} -\end{figure} - -\begin{figure}[hbt] - \begin{equation} - \label{eq:ledgers-base} - \inference[Seq-ledger-base] - { } - { - \begin{array}{r} - \var{slot}\\ - \var{pp}\\ - \var{acnt} - \end{array} - \vdash \var{ls} \trans{ledgers}{\epsilon} \var{ls} - } - \end{equation} - - \nextdef - - \begin{equation} - \label{eq:ledgers-induct} - \inference[Seq-ledger-ind] - { - { - \begin{array}{r} - \var{slot}\\ - \var{pp}\\ - \var{acnt} - \end{array} - } - \vdash - \var{ls} - \trans{ledgers}{\Gamma} - \var{ls'} - & - { - \begin{array}{r} - \var{slot}\\ - \mathsf{len}~\Gamma\\ - \var{pp}\\ - \var{acnt} - \end{array} - } - \vdash - \var{ls'} - \trans{\hyperref[fig:rules:ledger]{ledger}}{\var{tx}} - \var{ls''} - } - { - \begin{array}{r} - \var{slot}\\ - \var{pp}\\ - \var{acnt} - \end{array} - \vdash - \var{ls} - \trans{ledgers}{\Gamma;~\var{tx}} - \varUpdate{\var{ls''}} - } - \end{equation} - \caption{Ledger sequence rules} - \label{fig:rules:ledger-sequence} -\end{figure} diff --git a/eras/shelley/formal-spec/multi-sig.tex b/eras/shelley/formal-spec/multi-sig.tex deleted file mode 100644 index 75c96e0174d..00000000000 --- a/eras/shelley/formal-spec/multi-sig.tex +++ /dev/null @@ -1,884 +0,0 @@ -\documentclass[11pt,a4paper,dvipsnames,twosided]{article} - -\usepackage[deliverable]{IOHKCoverPage} - -% data for Deliverable header -- added by KH from an EU H2020 project template -\DeliverableNumber{SL-D3} -\DeliverableTitle{A Formal Specification of a Multi-Signature Scheme \\ using Scripts}{Multi-Sig Formal Spec.} -\DeliverableResponsible{Formal Methods Team} -\EditorName{Matthias G\"udemann, \IOHK} -\Authors{Jared Corduan \quad \texttt{} - \\[1em] -% \newline - Matthias G\"udemann \quad \texttt{} -} -\DueDate{20$^{\textrm{th}}$ September 2019} -\SubmissionDate{11th September 2019}{2019/09/11} -\LeaderName{Philipp Kant, \IOHK} -\InstitutionAddress{\IOHK} -\Version{1.0} -\Project{Shelley Ledger} -\DisseminationPU - -\usepackage[margin=2.5cm]{geometry} -\usepackage{lscape} -\usepackage{iohk} -\usepackage{microtype} -\usepackage{mathpazo} % nice fonts -\usepackage{amsmath} -\usepackage{amssymb} -\usepackage{amsthm} -\usepackage{latexsym} -\usepackage{mathtools} -\usepackage{stmaryrd} -\usepackage{extarrows} -\usepackage{slashed} -%\usepackage[colon]{natbib} -\usepackage[unicode=true,pdftex,pdfa,colorlinks=true]{hyperref} -\usepackage{xcolor} -\usepackage[capitalise,noabbrev,nameinlink]{cleveref} -\usepackage{float} -\floatstyle{boxed} -\restylefloat{figure} -\usepackage{tikz} -\usepackage{booktabs} -\usepackage{enumerate} - -%% Commenting -- KH -\usepackage[obeyFinal]{todonotes} -\newcommand{\khcomment}[1]{\todo[color=blue!20]{KH: #1}} - -%% In-para enumeration -- KH -\usepackage{paralist} - -%% -%% Package `semantic` can be used for writing inference rules. -%% -\usepackage{semantic} -%% Setup for the semantic package -\setpremisesspace{20pt} - -%% -%% Types -%% -\newcommand{\Nothing}{\ensuremath{\Diamond}} -\newcommand{\N}{\ensuremath{\mathbb{N}}} -\newcommand{\Bool}{\ensuremath{\mathbb{B}}} -\newcommand{\Tx}{\type{Tx}} -\newcommand{\TxWitness}{\type{TxWitness}} -\newcommand{\TxBody}{\type{TxBody}} -\newcommand{\Ix}{\type{Ix}} -\newcommand{\TxId}{\type{TxId}} -\newcommand{\Addr}{\type{Addr}} -\newcommand{\AddrVKey}{\type{Addr^{vkey}}} -\newcommand{\UTxO}{\type{UTxO}} -\newcommand{\Wdrl}{\type{Wdrl}} -\newcommand{\Coin}{\type{Coin}} -\newcommand{\PParams}{\type{PParams}} - -\newcommand{\Slot}{\type{Slot}} -\newcommand{\SlotsPerEpoch}{\mathsf{SlotsPerEpoch}} -\newcommand{\SlotsPerKESPeriod}{\mathsf{SlotsPerKESPeriod}} -\newcommand{\Duration}{\type{Duration}} -\newcommand{\StakePools}{\type{StakePools}} -\newcommand{\StakeCreds}{\type{StakeCreds}} -\newcommand{\StakeObject}{\type{StakeCredential}} - -\newcommand{\DCert}{\type{DCert}} -\newcommand{\DCertRegKey}{\type{DCert_{regkey}}} -\newcommand{\DCertDeRegKey}{\type{DCert_{deregkey}}} -\newcommand{\DCertDeleg}{\type{DCert_{delegate}}} -\newcommand{\DCertRegPool}{\type{DCert_{regpool}}} -\newcommand{\DCertRetirePool}{\type{DCert_{retirepool}}} -\newcommand{\PoolParam}{\type{PoolParam}} -\newcommand{\UTxOState}{\ensuremath{\type{UTxOState}}} -\newcommand{\ledgerState}{\ensuremath{\type{ledgerState}}} - -\newcommand{\AddrRWD}{\type{Addr_{rwd}}} -\newcommand{\AddrRWDVKey}{\type{Addr_{rwd}^{vkey}}} -\newcommand{\AddrRWDScr}{\type{Addr_{rwd}^{script}}} -\newcommand{\AddrVKeyB}{\type{Addr^{vkey}_{base}}} -\newcommand{\AddrVKeyP}{\type{Addr^{vkey}_{ptr}}} -\newcommand{\AddrVKeyE}{\type{Addr^{vkey}_{enterprise}}} -\newcommand{\AddrVKeyBS}{\type{Addr^{vkey}_{bootstrap}}} -\newcommand{\AddrScr}{\type{Addr^{script}}} -\newcommand{\AddrScrBase}{\type{Addr_{base}^{script}}} -\newcommand{\AddrScrEnterprise}{\type{Addr_{enterprise}^{script}}} -\newcommand{\AddrScrPtr}{\type{Addr_{ptr}^{script}}} -\newcommand{\HashScr}{\type{ScriptHash}} - -\newcommand{\Ptr}{\type{Ptr}} -\newcommand{\DState}{\type{DState}} -\newcommand{\DWEnv}{\type{DWEnv}} -\newcommand{\DPSEnv}{\type{DPSEnv}} -\newcommand{\DPEnv}{\type{DPEnv}} -\newcommand{\DEnv}{\type{DEnv}} -\newcommand{\PEnv}{\type{PEnv}} -\newcommand{\DPState}{\type{DPState}} -\newcommand{\PState}{\type{PState}} -\newcommand{\DCertBody}{\type{DCertBody}} -\newcommand{\TData}{\type{TData}} -\newcommand{\DPoolReap}{\ensuremath{\type{poolreap}}} -\newcommand{\UPIState}{\type{UPIState}} -\newcommand{\UpdatePayload}{\type{UpdatePayload}} - -\newcommand{\Script}{\type{Script}} -\newcommand{\ScriptPlutus}{\Script_{plc}} -\newcommand{\ScriptMSig}{\Script_{msig}} -\newcommand{\PendingTx}{\type{PendingTx}} - -%% Adding witnesses -\newcommand{\TxIn}{\type{TxIn}} - -\newcommand{\TxOut}{\type{TxOut}} -\newcommand{\VKey}{\type{VKey}} -\newcommand{\VKeyEv}{\type{VKey_{ev}}} -\newcommand{\VKeyGen}{\type{VKey_G}} -\newcommand{\SKey}{\type{SKey}} -\newcommand{\SKeyEv}{\type{SKey_{ev}}} -\newcommand{\KeyHash}{\type{KeyHash}} -\newcommand{\KeyPair}{\type{KeyPair}} -\newcommand{\KeyPairEv}{\type{KeyPair_{ev}}} -\newcommand{\Sig}{\type{Sig}} -\newcommand{\Data}{\type{Data}} -%% Adding delegation -\newcommand{\Epoch}{\type{Epoch}} -\newcommand{\KESPeriod}{\type{KESPeriod}} -%% Blockchain -\newcommand{\Gkeys}{\var{G_{keys}}} -\newcommand{\Block}{\type{Block}} -\newcommand{\SlotId}{\type{SlotId}} -\newcommand{\UTxOEnv}{\type{UTxOEnv}} -\newcommand{\CEEnv}{\type{CEEnv}} -\newcommand{\CEState}{\type{CEState}} -\newcommand{\BDEnv}{\type{BDEnv}} -\newcommand{\BDState}{\type{BDState}} -\newcommand{\LEnv}{\type{LEnv}} -\newcommand{\LState}{\type{LState}} - -%% -%% Functions -%% -\newcommand{\txins}[1]{\fun{txins}~ \var{#1}} -\newcommand{\txouts}[1]{\fun{txouts}~ \var{#1}} -\newcommand{\txcerts}[1]{\fun{txcerts}~ \var{#1}} -\newcommand{\txid}[1]{\fun{txid}~ \var{#1}} -\newcommand{\outs}[1]{\fun{outs}~ \var{#1}} -\newcommand{\values}[1]{\fun{values}~ #1} -\newcommand{\ubalance}[1]{\fun{ubalance}~ \var{#1}} -\newcommand{\txttl}[1]{\fun{txttl}~ \var{#1}} -\newcommand{\firstSlot}[1]{\fun{firstSlot}~ \var{#1}} -\newcommand{\deposits}[2]{\fun{deposits}~ \var{#1} ~ \var{#2}} -\newcommand{\decayedKey}[4]{\fun{decayedKey}~ \var{#1}~ \var{#2}~ \var{#3}~ \var{#4}} -\newcommand{\decayedTx}[3]{\fun{decayedTx}~ \var{#1}~ \var{#2}~ \var{#3}} -\newcommand{\keyRefund}[6]{\fun{keyRefund}~ {#1}~{#2}~{#3}~\var{#4}~\var{#5}~\var{#6}} -\newcommand{\refund}[4]{\fun{refund}~ \var{#1}~ \var{#2}~ {#3}~ {#4}} -\newcommand{\keyRefunds}[3]{\fun{keyRefunds}~ \var{#1}~ \var{#2}~ \var{#3}} -\newcommand{\consumed}[4]{\fun{consumed}~ \var{#1}~ \var{#2}~ \var{#3}~ \var{#4}} -\newcommand{\produced}[2]{\fun{produced}~ \var{#1}~ \var{#2}} -\newcommand{\applyFun}[2]{\fun{#1}~\var{#2}} - -\newcommand{\RegKey}[1]{\textsc{RegKey}(#1)} -\newcommand{\DeregKey}[1]{\textsc{DeregKey}(#1)} -\newcommand{\Delegate}[1]{\textsc{Delegate}(#1)} -\newcommand{\RegPool}[1]{\textsc{RegPool}(#1)} -\newcommand{\RetirePool}[1]{\textsc{RetirePool}(#1)} -\newcommand{\cwitness}[1]{\fun{cwitness}~ \var{#1}} -\newcommand{\dpool}[1]{\fun{dpool}~ \var{#1}} -\newcommand{\poolParam}[1]{\fun{poolParam}~ \var{#1}} -\newcommand{\retire}[1]{\fun{retire}~ \var{#1}} -\newcommand{\addrRw}[1]{\fun{addr_{rwd}}~ \var{#1}} -\newcommand{\epoch}[1]{\fun{epoch}~\var{#1}} -\newcommand{\kesPeriod}[1]{\fun{kesPeriod}~\var{#1}} -\newcommand{\dcerts}[1]{\fun{dcerts}~ \var{#1}} - -%% UTxO witnesses -\newcommand{\inputs}[1]{\fun{inputs}~ \var{#1}} -\newcommand{\txwitsVKey}[1]{\fun{txwitsVKey}~\var{#1}} -\newcommand{\txwitsScript}[1]{\fun{txwitsScript}~\var{#1}} -\newcommand{\verify}[3]{\fun{verify} ~ #1 ~ #2 ~ #3} -\newcommand{\sign}[2]{\fun{sign} ~ #1 ~ #2} -\newcommand{\verifyEv}[4]{\fun{verify_{ev}} ~ #1 ~ #2 ~ #3 ~ #4} -\newcommand{\signEv}[3]{\fun{sign_{ev}} ~ #1 ~ #2 ~ #3} -\newcommand{\serialised}[1]{\llbracket \var{#1} \rrbracket} -\newcommand{\hashKey}[1]{\fun{hashKey}~ \var{#1}} -\newcommand{\txbody}[1]{\fun{txbody}~ \var{#1}} -\newcommand{\txfee}[1]{\fun{txfee}~ \var{#1}} -\newcommand{\txwdrls}[1]{\fun{txwdrls}~ \var{#1}} -\newcommand{\minfee}[2]{\fun{minfee}~ \var{#1}~ \var{#2}} -\newcommand{\slotminus}[2]{\var{#1}~-_{s}~\var{#2}} -\DeclarePairedDelimiter\floor{\lfloor}{\rfloor} -% wildcard parameter -\newcommand{\wcard}[0]{\underline{\phantom{a}}} -%% Adding ledgers... -\newcommand{\utxo}[1]{\fun{utxo}~ #1} -%% Delegation -\newcommand{\delegatesName}{\fun{delegates}} -\newcommand{\delegates}[3]{\delegatesName~#1~#2~#3} -\newcommand{\dwho}[1]{\fun{dwho}~\var{#1}} -\newcommand{\depoch}[1]{\fun{depoch}~\var{#1}} -\newcommand{\dval}{\ensuremath{d_{\mathsf{val}}}} -%% Delegation witnesses -\newcommand{\dbody}[1]{\fun{dbody}~\var{#1}} -\newcommand{\dwit}[1]{\fun{dwit}~\var{#1}} -%% Blockchain -\newcommand{\bwit}[1]{\fun{bwit}~\var{#1}} -\newcommand{\bslot}[1]{\fun{bslot}~\var{#1}} -\newcommand{\bbody}[1]{\fun{bbody}~\var{#1}} -\newcommand{\bhbody}[1]{\fun{bhbody}~\var{#1}} -\newcommand{\bdlgs}[1]{\fun{bdlgs}~\var{#1}} -%% ledgerstate constants -\newcommand{\genesisId}{\ensuremath{Genesis_{Id}}} -\newcommand{\genesisTxOut}{\ensuremath{Genesis_{Out}}} -\newcommand{\genesisUTxO}{\ensuremath{Genesis_{UTxO}}} -\newcommand{\emax}{\ensuremath{\mathsf{E_{\max}}}} - -\newcommand{\unitInterval}{\ensuremath{[0,~1]}} -\newcommand{\unitIntervalNonNull}{\ensuremath{(0,~1]}} -\newcommand{\nonnegReals}{\ensuremath{[0,~\infty)}} -\newcommand{\posReals}{\ensuremath{(0,~\infty)}} - -\theoremstyle{definition} -\newtheorem{definition}{Definition}[section] -\newtheorem{property}{Property}[section] - -\newcommand{\leteq}{\ensuremath{\mathrel{\mathop:}=}} - -\begin{document} - -\hypersetup{ - pdftitle={A Formal Specification of a Multi-Signature Scheme using Scripts}, - breaklinks=true, - bookmarks=true, - colorlinks=false, - linkcolor={blue}, - citecolor={blue}, - urlcolor={blue}, - linkbordercolor={white}, - citebordercolor={white}, - urlbordercolor={white} -} - - \cleardoublepage% - \tableofcontents% - \listoffigures% - \clearpage% - - \begin{changelog} - \change{2019/09/11}{Jared Corduan and Matthias G\"udemann}{FM (IOHK)}{Initial version (0.1).} - \change{2019/09/11}{Kevin Hammond}{FM (IOHK)}{Added cover page, applied review comments.} - \change{2019/09/18}{Matthias G\"udemann}{FM (IOHK)}{Reviewed and finalised.} - \end{changelog} - \clearpage% -\begin{landscape} -\floatstyle{plain} -\restylefloat{figure} -\begin{figure*} -\includegraphics[scale=0.8,angle=90]{d3-depends.pdf} -\caption{Positioning of this Deliverable (outlined in red).} -\end{figure*} -\end{landscape} -\floatstyle{boxed} -\restylefloat{figure} -\cleardoublepage -% \begin{center} -% \large{Executive Summary} -% \end{center} - -% \cleardoublepage -\renewcommand{\thepage}{\arabic{page}} -\setcounter{page}{1} - -\title{A Formal Specification of a Multi-Signature Scheme using Scripts} - -\author{Jared Corduan \\ {\small \texttt{jared.corduan@iohk.io}} \\ - \and Matthias G\"udemann \\ {\small \texttt{matthias.gudemann@iohk.io}}} - -%\date{} - -\maketitle - -\begin{abstract} - This document specifies how to support ``multi-signature'' transactions, that is ones where two or more parties are required - to authorise the transaction. It The approach is based on a simple script model, which allows multiple requirements to - be expressed for a single transaction. It uses only single-step script execution - and does not require data scripts. We illustrate this by providing two different ways to implement - such a scheme on top of the Shelley formal ledger specification: \begin{inparaenum} - \item based on - Plutus scripts; - \item - based on a simple script DSL, for which a native script interpreter can be used. - \end{inparaenum} -% - A multi-signature scheme allows an unspent transaction output to be used as an - input to a new transaction if a pre-defined combination of signatures is - provided, e.g., if two parties have to sign simultaneously, or two out of three possible - keys have to be provided, etc. -% - For an output that is requires a ``multi-signature'', the set of all the keys - that have signed the transaction is passed to a validation script. In this - way, the script can decide in a single step whether or not it has a - combination of keys that will permit the output to be spent correctly. It is - possible to supply more signatures than are required to authorise the - transaction. In this case, any subset of valid signatures can be used. -\end{abstract} - -\tableofcontents -\listoffigures - -% \section*{List of Contributors} -% \label{acknowledgements} - - -\section{Introduction} -\label{sec:introduction} - -Under some circumstances, multiple signatures may be required to authorise a transaction, for example, where an account -is held in joint names or is a business account that is held by several business partners. -Depending on the account, it may be that authorisation is required by all signatories or by a single signatory. -This specification for a simple multi-signature scheme -on the formal specification for the Shelley Cardano Ledger~\cite{shelley_spec}. -% which formally specifies the Shelley Cardano ledger. -The main changes from that document are: - -\begin{enumerate} -\item Add a new address type for outputs, stake and rewards that require scripts; -\item Add a new witness type to the transaction; -\item Adapt the signature validation in such a way that funds that require a - multi-signature script can be spent and delegation certificates that require - multi-signature scripts can be used; -\item Adapt the validation functions to the extended types of - addresses, transaction inputs and to delegation certificates with scripts. -\end{enumerate} - -In this approach for multi-signature, the scripts will receive as input the set of -all the keys that were used to sign the transaction. The script can then check this set -against its own representation of valid combinations of keys that are permitted to unlock the -unspent output. -% -This design means that the scripts are completely stateless and therefore that no data needs to be -supplied to the script apart from the information about which combinations of keys -can legitimately sign the transaction. The design allows for any $n$ of $m$ -signatures to be required for each unspent transaction output, where $m, n \ge 0$. - -\section{Types} -\label{sec:types} - -\begin{figure*}[hbt] - \emph{Abstract types} - - \begin{equation*} - \begin{array}{r@{~\in~}l@{\qquad=\qquad}lr} - script & \Script & \ScriptPlutus\uniondistinct\ScriptMSig\uniondistinct\,\,\cdots & \text{Representation of a script} - \end{array} - \end{equation*} - - \emph{Derived types} - - \begin{equation*} - \begin{array}{r@{~\in~}l@{\qquad=\qquad}lr} - \var{addr_{s}} & \AddrScr & \AddrScrBase \uniondistinct \AddrScrEnterprise - \uniondistinct \AddrScrPtr & \text{Script address} \\ - \var{addr_{vk}} & \AddrVKey & \begin{array}{l@{~\uniondistinct}l} - \AddrVKeyB & \AddrVKeyP \uniondistinct \AddrVKeyE \\ - & \AddrVKeyBS - \end{array} - & \text{Key address}\\ - \var{addr} & \Addr & \AddrScr \uniondistinct \AddrVKey \\ - \var{addr_{rwd}} & \AddrRWD & (\AddrRWDVKey \uniondistinct \AddrRWDScr) - & \text{Reward address} - \end{array} - \end{equation*} - - \emph{Accessor Functions} - - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \fun{paymentHK} & \AddrVKey \to \KeyHash_{pay} - & \text{hash of payment key from addr}\\ - \fun{validatorHash} & \AddrScr \to \HashScr & \text{hash of validator - script} \\ - \fun{stakeCred_{b}} & (\AddrVKeyB \uniondistinct \AddrScrBase) \to - \StakeObject & \text{stake credential from base - addr}\\ - \fun{stakeCred_{r}} & \AddrRWD \to \StakeObject & \text{stake credential - from reward addr}\\ - \fun{addrPtr} & (\AddrVKeyP \uniondistinct \AddrScrPtr) \to \Ptr & - \text{pointer - from - pointer addr} - \end{array} - \end{equation*} - - \emph{Abstract Functions} - - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \fun{hashScript} & \Script \to \HashScr & \text{hash a serialized script} - \end{array} - \end{equation*} - - \caption{Types for Scripts and Script Addresses} - \label{fig:types-scripts} -\end{figure*} - -In Figure~\ref{fig:types-scripts} the $\Addr$ type of the Cardano Ledger formal -specification~\cite{shelley_spec} is changed to include both public key and -script addresses, split into the sub-types $\AddrVKey$ and $\AddrScr$. Key -addresses, of type $\AddrVKey$, are used as in the original specification; -script addresses contain the hash of the validator script, and are used to -lookup the script. The $\Script$ type is partitioned into subtypes: here, -$\ScriptPlutus$ for Plutus scripts, $\ScriptMSig$ for native interpreter scripts -(see Sections~\ref{sec:plutus-scripts} and~\ref{sec:native-script-interp} for -details). - -A transaction output that requires a script carries the hash of the -corresponding validator script. The output can only be spent if the matching -script is provided and validates its input. The necessary information is carried -by the $\AddrScr$ sub-type of $\Addr$ (Figure~\ref{fig:types-scripts}). This -can therefore be part of a transaction output that consists of a pair of -$\Addr\times\Coin$. Analogously to $\AddrVKey$, $\AddrScr$ also has an -\emph{enterprise} script address sub-type which does not allow staking, as well -as \emph{base} and \emph{pointer} script address sub-types. We will refer to the -parts of an address that is used for payment as the \emph{payment object} and -the part that is used for staking as the \emph{staking reference}. Analogously -to the payment object, the staking reference for an $\AddrScr$ is also a script. -This means that staking can also require a combination of signatures and these -may be different from the combination of signatures that is required for -payment. - -The $\fun{hashScript}$ function calculates the hash of the serialized -script. The accessor function $\fun{validatorHash}$ returns the hash of a script -address. The domain of the accessor function $\fun{paymentHK}$ is changed to -public key addresses. The domains of the accessor functions $\fun{stakeHK_b}$, -$\fun{stakeHK_{r}}$ and $\fun{addrPtr}$ are extended to also include the -respective script address variants. The return types are changed to be a staking -reference. - -\begin{figure*}[hbt] - \emph{Transaction Type} - - \begin{equation*} - \begin{array}{r@{~\in~}l@{\qquad=\qquad}l} - \var{wit} & \TxWitness & (\VKey \mapsto \Sig, \HashScr \mapsto \Script) - \\ - \var{tx} - & \Tx - & \TxBody \times \TxWitness - \\ - \end{array} - \end{equation*} - - \emph{Accessor Functions} - - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \fun{txwitsVKey} & \Tx \to (\VKey \mapsto \Sig) & \text{VKey witnesses} \\ - \fun{txwitsScript} & \Tx \to (\HashScr \mapsto \Script) & \text{script witnesses} - \end{array} - \end{equation*} - - \emph{Abstract Functions} - - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \fun{validateScript} & \Script \to (\Tx \to \Bool) & \text{script interpreter} - \end{array} - \end{equation*} - \caption{Types for Transaction Inputs with Scripts} - \label{fig:types_defs_multi} -\end{figure*} - -Figure~\ref{fig:types_defs_multi} extends the type of a transaction as defined -in the formal ledger specification~\cite{shelley_spec} to carry an additional -witness type. This is achieved by explicitly defining $\TxWitness$ to be a pair -of a public key witness and a script -witness. %\khcomment{I don't understand the difference between a tuple and a $\times$ type.} -The accessor function $\fun{txwits}$ is renamed to $\fun{txwitsVKey}$. The new -accessor function $\fun{txwitsScript}$ returns a map of script hashes to -scripts. In order for a transaction to be accepted, all the corresponding -scripts need to validate the transaction. - -\begin{figure*}[htb] - \emph{Classification Functions} - % - \begin{align*} - \fun{txinsVKey} & \in \powerset \TxIn \to \UTxO \to \powerset\TxIn & \text{VKey Tx inputs}\\ - \fun{txinsVKey} & ~\var{txins}~\var{utxo} = - \var{txins} \cap \dom (\var{utxo} \restrictrange (\AddrVKey \times Coin)) - \\ - \\ - \fun{txinsScript} & \in \powerset \TxIn \to \UTxO \to \powerset\TxIn & \text{Script Tx inputs}\\ - \fun{txinsScript} & ~\var{txins}~\var{utxo} = - \var{txins} \cap \dom (\var{utxo} \restrictrange (\AddrScr \times Coin)) - \end{align*} - % - \caption{Key/Script Classification Functions} - \label{fig:defs:functions-txins} -\end{figure*} - -Figure~\ref{fig:defs:functions-txins} shows the $\fun{txinsVKey}$ and -$\fun{txinsScript}$ scripts, which partition the set of transaction inputs of -the transaction into those that require a private key and those that require a -multi-signature script, respectively. - -\section{Ledger Transitions for Multi-Signature} -\label{sec:ledg-trans-multi} - -While spending transaction outputs and altering delegation decisions can both -require multi-signature scripts, script validation can be treated in the same -way for both cases. The validation of all witnesses occurs through the UTXOW STS -rule, using the \fun{witsVKeyNeeded} function to collect all the necessary key -signatures and the \fun{scriptsNeeded} function to collect all necessary -multi-signature scripts. - -\subsection{Delegation Specific Changes} -\label{sec:deleg-trans-rules} - -Staking using multiple signatures requires a change to the type of staking reference from -just a hashed key to either a hashed key or a hashed script. This is -reflected in the type of $\StakeCreds$ (which replaces the previous -$\type{StakeKeys}$ type) and the new $\StakeObject$ type, % (which describes either a key or a script used for staking), -as shown in -Figure~\ref{fig:delegation-state-type}. - -\begin{figure} - \emph{Delegation Types} - \begin{equation*} - \begin{array}{r@{~\in~}l@{\qquad=\qquad}lr} - \var{stakeCred} & \StakeObject & (\KeyHash_{stake} \uniondistinct - \HashScr) \\ - \var{regCreds} & \StakeCreds & \StakeObject \mapsto \Slot \\ - \end{array} - \end{equation*} - % - \emph{Delegation States} - % - \begin{equation*} - \begin{array}{l} - \DState = - \left(\begin{array}{r@{~\in~}lr} - \var{stkCreds} & \StakeCreds & \text{registered stake delegators}\\ - \var{rewards} & \AddrRWD \mapsto \Coin & \text{rewards}\\ - \var{delegations} & \StakeObject \mapsto \KeyHash_{pool} & \text{delegations}\\ - \var{ptrs} & \Ptr \mapsto \StakeObject & \text{pointer to staking reference}\\ - \var{fGenDelegs} & (\Slot\times\VKeyGen) \mapsto \VKey & \text{future genesis key delegations}\\ - \var{genDelegs} & \VKeyGen \mapsto \VKey & \text{genesis key delegations}\\ - \end{array}\right) - \end{array} - \end{equation*} - % - \emph{Certificate Accessor functions} - % - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \cwitness{} & \DCert \to \StakeCreds & \text{certificate witness} - \end{array} - \end{equation*} - \caption{Delegation State type} - \label{fig:delegation-state-type} -\end{figure} - -\textbf{Note:} In contrast to staking reference delegation, staking pools -themselves cannot use multi-signature schemes. Otherwise, the lightweight -certificates that are used for delegation from the pool to the KES hot keys would also need to be -script witnesses. This is undesirable since these certificates need to be included in each header, -but headers are required to have a minimal and fixed size. %\khcomment{What size - %is acceptable?} - -\subsection{UTXOW Transition Rule} -\label{sec:utxow-transition} - -The UTXOW extended transition system of~\cite{shelley_spec} is shown in -Figure~\ref{fig:rules:utxow-multi-sig}. The constraint on the set of required -witnesses is relaxed in such a way that \emph{redundant} signatures can be -supplied in the transaction. %\khcomment{redundant meaning ``not required'' or - %``duplicate''?} -The set of verification keys is passed to the validator script -via the concrete implementation of $\fun{validateScript}$ for the specific -script type. -% -The set of all validator scripts of $\fun{txwitsScript}~(\fun{txins}~tx)$ is -checked for: - -\begin{enumerate} -\item equality of the hashed script with the hash that is stored in the output to spent; -\item that the script validates the transaction; and -\item that it is precisely the set of the scripts required for the transaction - (as returned from $\fun{scriptsNeeded}$). -\end{enumerate} - -\begin{figure}[htb] - \begin{equation} - \inference[UTxO-wit] - { - (utxo, \wcard, \wcard) \leteq \var{utxoSt} \\~\\ - \forall \var{hs} \mapsto \var{validator} \in \fun{txwitsScript}~{tx},\\ - \fun{hashScript}~\var{validator} = \var{hs} \wedge - \fun{validateScript}~\var{validator}~\var{tx}\\~\\ - \fun{scriptsNeeded}~\var{utxo}~\var{tx} = \dom (\fun{txwitsScript}~{tx}) - \\~\\ - \forall \var{vk} \mapsto \sigma \in \txwitsVKey{tx}, - \mathcal{V}_{\var{vk}}{\serialised{\txbody{tx}}}_{\sigma} \\ - \fun{witsVKeyNeeded}~{utxo}~{tx} \subseteq \{ \hashKey \var{vk} \mid - \var{vk}\in\dom{(\txwitsVKey{tx})} \}\\~\\ - { - \begin{array}{l} - \var{utxoEnv} - \end{array} - } - \vdash \var{utxoSt} \trans{\hyperref[fig:rules:utxo-shelley]{utxo}}{tx} \var{utxoSt'}\\ - } - { - \begin{array}{l} - \var{utxoEnv} - \end{array} - \vdash \var{utxoSt} \trans{utxow}{tx} \varUpdate{\var{utxoSt'}} - } - \end{equation} - \caption{UTxO with Witnesses and Multi-Signatures} - \label{fig:rules:utxow-multi-sig} -\end{figure} - -Multi-signature staking also causes reward accounts to be locked by a multi-signature -scheme. This means that in order to allow for spending of rewards accumulated in -a multi-signature rewards account, we also need to validate the required -script. This is done in a predicate in the UTXOW rule which checks that for each -withdrawal of a transaction which uses a multi-script rewards account, there -exists a corresponding script that matches the hash in the reward address and that also -validates the transaction. Because of the changes to the staking reference type, -the original function $\fun{witsNeeded}$ is changed as shown in -Figure~\ref{fig:functions-witnesses}. Figure~\ref{fig:functions-witnesses} also shows the function -$\fun{scriptNeeded}$ that computes the required script hashes from the set of -spent inputs that are locked by scripts and the consumed withdrawals that are locked by scripts. - -\begin{figure}[htb] - \begin{align*} - & \hspace{-0.8cm}\fun{witsVKeyNeeded} \in \UTxO \to \Tx \to (\VKeyGen\mapsto\VKey) \to - \powerset{\KeyHash} - & \text{required keyhashes} \\ - & \hspace{-0.8cm}\fun{witsVKeyNeeded}~\var{utxo}~\var{tx}~\var{dms} = \\ - & ~~\{ \fun{paymentHK}~a \mid i \mapsto (a, \wcard) \in \var{utxo},~i\in\fun{txinsVKey}~{tx} \} \\ - \cup & ~~ - \left(\{\fun{stakeCred_r}~a\mid a\mapsto \wcard \in \AddrRWDVKey - \restrictdom \txwdrls{tx}\} \cap \KeyHash_{Stake} \right)\\ - \cup & ~~\{\cwitness{c} \mid c \in \txcerts{tx}\}~\cup \\ - \cup & ~~\fun{propWits}~(\fun{txup}~\var{tx}) \\ - \cup & ~~\bigcup_{\substack{c \in \txcerts{tx} \\ ~c \in\DCertRegPool}} \fun{poolOwners}~{c} - \end{align*} - \begin{align*} - & \hspace{-0.5cm}\fun{scriptsNeeded} \in \UTxO \to \Tx \to - \powerset{\HashScr} - & \text{required script hashes} \\ - & \hspace{-0.5cm}\fun{scriptsNeeded}~\var{utxo}~\var{tx} = \\ - & ~~\{ \fun{validatorHash}~a \mid i \mapsto (a, \wcard) \in \var{utxo},\\ - & ~~~~~i\in\fun{txinsScript}~{(\fun{txins~\var{tx}})}~{utxo}\} \\ - \cup & ~~\left(\{ \fun{stakeCred_{r}}~\var{a} \mid a \in \dom (\AddrRWDScr - \restrictdom \fun{txwdrls}~\var{tx}) \} \cap \HashScr\right) \\ - \cup & ~~\{\AddrScr \cap \fun{cwitness}~\var{c} \mid c \in \fun{txcerts}~\var{tx}\} - \end{align*} - \caption{Required Witnesses} - \label{fig:functions-witnesses} -\end{figure} - -\section{Implementation of Script-Based Multi-Signature} -\label{sec:altern-impl} - -There are different implementation possibilities for the introduced -multi-signature scheme. Section~\ref{sec:plutus-scripts} describes an -implementation based on Plutus~\cite{chakravarty2020extended} which uses only simple -scripts, without redeemer or data -scripts. Section~\ref{sec:native-script-interp} describes an alternative -implementation that supports validation using a -native implementation for a script-like DSL. - -\subsection{Plutus Scripts} -\label{sec:plutus-scripts} - -\begin{figure*}[hbt] - \emph{Abstract Type} - - \begin{equation*} - \begin{array}{r@{~\in~}lr} - pendingTx & \PendingTx & \text{information about pending Tx} - \end{array} - \end{equation*} - - \emph{Abstract Functions} - - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \fun{validateScript} & \ScriptPlutus \to (\Tx \to \Bool) & \text{Plutus script - interpreter} \\ - \fun{validate} & () \to () \to (\PendingTx \to \Bool) & \text{Plutus - validator script type} - \end{array} - \end{equation*} - \caption{Implementation based on Plutus Scripts} - \label{fig:types_defs_plutus} -\end{figure*} - -$\PendingTx$ is a representation of the pending transaction. In particular, this -information contains the set of keys that signed the transaction. The function -$\fun{txPending}$ constructs the necessary information about a transaction -which can be passed as value of type $\PendingTx$ to the validator script. - -In order to spend funds locked by a multi-signature script, the validator -scripts need to validate the transaction. The abstract function $\fun{validate}$ -corresponds to such a Plutus validator script. Its type consists of two -parameters of unit type and one parameter of type $\PendingTx$; its return type -is Boolean. The first two input parameters correspond to the redeemer and the -data scripts which are used in the full extended UTxO model for -Plutus~\cite{chakravarty2020extended}. As those values are not required for simple -multi-signature, we use the unit type for them. The Boolean return type signals -whether the script succeeded in validating the transaction. The function -$\fun{validateScript}$ specialized for $\ScriptPlutus$ takes a Plutus script -representation and a $\PendingTx$ value, and evaluates the script using the -Plutus interpreter. - -The following is a possible Plutus implementation of a simple $m$ out of $n$ -multi-signature validation script. The type $\type{MultiSig}$ is a list of keys -and a threshold value. - -\begin{verbatim} -import qualified Language.PlutusTx as P -import Ledger.Validation as V - -data MultiSig = MultiSig - { signatories :: [Ledger.PubKey] - -- ^ List of public keys of people who may sign the transaction - , requiredSignatures :: Integer - -- ^ Minimum number of signatures required to unlock - -- the output (should not exceed @length signatories@) - -- n.b., should also check that this is >= 0 - } - -validate :: MultiSig -> () -> () -> PendingTx -> Bool -validate multiSig@(MultiSig keys num) () () p = - let present = P.length (P.filter (V.txSignedBy p) keys) - in present `P.geq` num -\end{verbatim} - -The above Plutus script takes a parameter \var{multiSig} of type -$\type{MultiSig}$. This is a list of keys $\var{keys}$ and a threshold $num$ -that indicates how many of the keys are required as signatures. When the -validation script is called, it computes the length of the list of keys in $keys$ which correctly signed -the transaction. If this number is greater than or equal to \emph{num}, -then sufficient signatures are present. It follows that, since -\var{hkeys} is a value of type \type{MultiSig}, partial application of -$\fun{validate}~multisig$ will return a correctly typed validator script -as defined by Figure~\ref{fig:types_defs_plutus}. - -\subsection{Native Script Interpreter} -\label{sec:native-script-interp} - -\begin{figure*}[hbt] - \emph{MultiSig Type} - - \begin{equation*} - \begin{array}{rll} - \var{msig} & \in & \type{RequireSig}~\KeyHash\\ - & \uniondistinct & - \type{RequireAllOf}~[\ScriptMSig] \\ - & \uniondistinct& - \type{RequireAnyOf}~[\ScriptMSig] \\ - & \uniondistinct& - \type{RequireMOf}~\N~[\ScriptMSig] - \end{array} - \end{equation*} - - \emph{Functions} - - \begin{align*} - \fun{validateScript} & \in\ScriptMSig\to\Tx\to\Bool & \text{validate native - script} \\ - \fun{validateScript} & ~\var{msig}~\var{tx}= \\ - & \textrm{let}~\var{vhks}\leteq \{\fun{hashKey}~vk \vert - vk \in \fun{txwitsVKey}~\var{tx}\} \\ - & \fun{evalMultiSigScript}~msig~vhks\\ - \end{align*} - \begin{align*} - \fun{evalMultiSigScript} & \in\ScriptMSig\to\powerset\KeyHash\to\Bool & \\ - \fun{evalMultiSigScript} & ~(\type{RequireSig}~hk)~\var{vhks} = hk \in vhks \\ - \fun{evalMultiSigScript} & ~(\type{RequireAllOf}~ts)~\var{vhks} = - \forall t \in ts: \fun{evalMultiSigScript}~t~vhks\\ - \fun{evalMultiSigScript} & ~(\type{RequireAnyOf}~ts)~\var{vhks} = - \exists t \in ts: \fun{evalMultiSigScript}~t~vhks\\ - \fun{evalMultiSigScript} & ~(\type{RequireMOf}~m~ts)~\var{vhks} = \\ - & m \leq \Sigma - (\textrm{card} \{ t s.t. t \leftarrow ts \wedge \fun{evalMultiSigScript}~\var{t}~\var{vhks} -% \left( -% [\textrm{if}~(\fun{evalMultiSigScript}~\var{t}~\var{vhks})~ -% \textrm{then}~1~\textrm{else}~0\vert t \leftarrow ts] -% \right) - \end{align*} - - \caption{Implementation based on Native Scripts} - \label{fig:types-msig} -\end{figure*} - -An alternative implementation for multi-signature scripts is an embedding of the -script as a data type that can then be interpreted -directly. Figure~\ref{fig:types-msig} shows the types and functions -that are needed for such a native script implementation. The type $\ScriptMSig$ is defined as a -tree-structure which is either a single signature leaf node or a list of values -of type $\ScriptMSig$. This either requires all signatures to be validated, at -least one of the signatures to be validated, or at least the threshold value of $m$ -signatures to be validated. - -\subsection{Lower Level Implementation Details} -\label{sec:lower-level-impl} - -For each new type of witness, there will be a requirement to represent such a -witness on-chain and allow for identification when deserializing such a -witness. For this, there will be a language-specific tag for each witness (and -staking reference) in its serialized form. This tag will also be part of the -hash to allow for easy identification of the language type. - -As an example, one could tag key hash payment object and staking references with -the tag $0$, native multi-signature scripts with the tag $1$, and simple Plutus scripts with the tag -$2$. Every new language would require a new tag. Changes to the payment or staking reference details -that are treated \emph{within} an existing language -framework would be changed via a software update, rather than an additional tag. - -\section{Summary} -\label{sec:summary} - -The script-based multi-signature scheme that is presented here does not require the scripts -to use any cryptographic primitives. Rather, it requires only the ability to compare the -required keys to those that actually signed the transaction. The worst-case -potential calculation cost can therefore be calculated statically in advance and -can be added to the transaction fees or as gas cost. %\khcomment{Assumes - %transactions are - %independent.} -The scripts can be realized -with only limited functionality requirements for the script language. -% -The necessary extensions to the data types in the Shelley -specification~\cite{shelley_spec} are relatively simple. They consist -mainly of introducing additional optional data types for payment objects or -staking references. - -The relaxation on accepting a superset of the strictly required signatures -potentially allows the creation of transactions with an arbitrary number of signatures. This -could then be a possible attack vector. The number of signatures should be taken -into account in some way in the calculation of the transaction fee. - -There are two proposed implementation schemes, one based on Plutus, the other on -a script-like integration as DSL for a native interpreter. Both follow the same -strategy for integration: extending addresses, defining witnesses and -specializing the script validation function. If the Plutus approach is not -viable for any reason, e.g., script size or readiness of library, only the -native script implementation could be pursued instead. - -\addcontentsline{toc}{section}{References} -\bibliographystyle{habbrv} -\bibliography{references} - -\end{document} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: t -%%% End: diff --git a/eras/shelley/formal-spec/notation.tex b/eras/shelley/formal-spec/notation.tex deleted file mode 100644 index 03273f4e013..00000000000 --- a/eras/shelley/formal-spec/notation.tex +++ /dev/null @@ -1,98 +0,0 @@ -\section{Notation} -\label{sec:notation-shelley} - -The transition system is explained in \cite{small_step_semantics}. - -\begin{description} - \item[Powerset] Given a set $\type{X}$, $\powerset{\type{X}}$ is the set of all - the subsets of $\type{X}$. - \item[Sequences] Given a set $\type{X}$, $\seqof{\type{X}}$ is the set of - sequences having elements taken from $\type{X}$. The empty sequence is - denoted by $\epsilon$. Given a sequence $\Lambda$, $\Lambda; \type{x}$ is - the sequence that results from appending $\type{x} \in \type{X}$ to - $\Lambda$. - \item[Functions] $A \to B$ denotes a \textbf{total function} from $A$ to $B$. - Given a function $f$ we write $f~a$ for the application of $f$ to argument - $a$. - \item[Inverse Image] Given a function $f: A \to B$ and $b\in B$, we write - $f^{-1}~b$ for the \textbf{inverse image} of $f$ at $b$, which is defined by - $\{a \mid\ f a = b\}$. - \item[Maps and partial functions] $A \mapsto B$ denotes a \textbf{partial - function} from $A$ to $B$, which can be seen as a map (dictionary) with - keys in $A$ and values in $B$. Given a map $m \in A \mapsto B$, notation - $a \mapsto b \in m$ is equivalent to $m~ a = b$. - The $\emptyset$ symbol is also used to - represent the empty map as well. - \item[Map Operations] Figure~\ref{fig:notation:nonstandard} - describes some non-standard map operations. - \item[Relations] A relation on $A\times B$ is a subset of $A\times B$. - Both maps and functions can be thought of as relations. - A function $f:A\to B$ is a relation consisting of pairs $(a, f(a))$ such that $a\in A$. - A map $m: A\mapsto B$ is a relation consisting of pairs $(a, b)$ such that - $a\mapsto b \in m$. - Given a relation $R$ on $A\times B$, we define the inverse relation $R^{-1}$ to be - all pairs $(b, a)$ such that $(a, b)\in R$. Similarly, given a function $f:A\to B$ we - define the inverse relation $f^{-1}$ to consist of all pairs $(f(a), a)$. - Finally, given two relations $R\subseteq A\times B$ and $S\subseteq B\times C$, - we define the compostion $R\circ S$ to be all pairs $(a, c)$ such that - $(a, b)\in R$ and $(b, c)\in S$ for some $b\in B$. - \item[Option type] An option type in type $A$ is denoted as $A^? = A + \Nothing$. The - $A$ case corresponds to the case when there is a value of type $A$ and the $\Nothing$ - case corresponds to the case when there is no value. - \item[:=] We abuse the \textbf{:=} symbol here to mean propositional equality. In the - style of semantics we use in this formal spec, definitional equality is not needed. - It is meant to make the spec easier to read in the sense that each time we use it, - we use a fresh variable as shorthand notation for an expression, e.g. we write - - \[s := slot + \StabilityWindow\] - - Then, in subsequent expressions, it is more convenient to write simply $s$. - It is not meant to shadow variables, and if it does, there is likely a problem with the - rules that must be addressed. -\end{description} - - -In Figure~\ref{fig:notation:nonstandard}, we specify the notation that we use in -the rest of the document. - -\begin{figure}[htb] - \begin{align*} - \var{set} \restrictdom \var{map} - & = \{ k \mapsto v \mid k \mapsto v \in \var{map}, ~ k \in \var{set} \} - & \text{domain restriction} - \\ - \var{set} \subtractdom \var{map} - & = \{ k \mapsto v \mid k \mapsto v \in \var{map}, ~ k \notin \var{set} \} - & \text{domain exclusion} - \\ - \var{map} \restrictrange \var{set} - & = \{ k \mapsto v \mid k \mapsto v \in \var{map}, ~ v \in \var{set} \} - & \text{range restriction} - \\ - \var{map} \subtractrange \var{set} - & = \{ k \mapsto v \mid k \mapsto v \in \var{map}, ~ v \notin \var{set} \} - & \text{range exclusion} - \\ - A \triangle B - & = (A \setminus B) \cup (B \setminus A) - & \text{symmetric difference} - \\ - M \unionoverrideRight N - & = (\dom N \subtractdom M)\cup N - & \text{union override right} - \\ - M \unionoverrideLeft N - & = M \cup (\dom M \subtractdom N) - & \text{union override left} - \\ - M \unionoverridePlus N - & = (M \triangle N) - \cup \{k\mapsto v_1+v_2\mid {k\mapsto v_1}\in M \land {k\mapsto v_2}\in N \} - & \text{union override plus} \\ - & & \text{(for monoidal values)}\\ - \end{align*} - \caption{Non-standard map operators} - \label{fig:notation:nonstandard} -\end{figure} - -\clearpage diff --git a/eras/shelley/formal-spec/proofs.tex b/eras/shelley/formal-spec/proofs.tex deleted file mode 100644 index 4b7798a4471..00000000000 --- a/eras/shelley/formal-spec/proofs.tex +++ /dev/null @@ -1,393 +0,0 @@ -\section{Proofs} -\label{sec:proofs} - -\newif\ifproofs -% \proofstrue comment in to include generated proofs - -For the proofs we use the automated theorem prover -MetiTarski~\cite{DBLP:journals/jar/AkbarpourP10} which is specialized for proofs -over real arithmetic, including elementary functions. - -\begin{proof} - For the property~(\ref{prop:reward-splitting}) - (p.~\pageref{prop:reward-splitting}) for reward splitting we actually show a - stronger one, by removing the floor function. Using the fractional values we - get an upper bound for the real value and showing that this upper bound is - bounded by $\hat{f}$ we show that the real value is also bounded by - $\hat{f}$. To eliminate the sum, we use the identity $\frac{s + - \sum_{j}t_{j}}{\sigma} = 1$, see the definition of - $\sigma$ in~\cite{delegation_design}. Using this, we show for $\hat{f} > c$ - - \begin{equation*} - \begin{array}{cll} - & 0 \leq c + (\hat{f} - c)\cdot (m + (1 - m))\cdot \frac{s}{\sigma} + - \sum_{j}(\hat{f}-c)\cdot(1-m)\cdot\frac{t_{j}}{\sigma} & \leq \hat{f} \\ - \Leftrightarrow & - 0\leq c + (\hat{f}-c)\cdot m \cdot \frac{s}{\sigma} + (\hat{f} - -c)\cdot(1-m)\cdot\frac{s + \sum_{j}t_{j}}{\sigma} & \leq \hat{f} \\ - \Leftrightarrow & - 0\leq c + (\hat{f}-c)\cdot m \cdot \frac{s}{\sigma} + (\hat{f} - -c)\cdot(1-m) & \leq \hat{f} \\ - \end{array} - \end{equation*} - - This can be proven automatically using - -\begin{verbatim} -fof(reward_splitting, conjecture, -! [C, F, M, S, Sigma] : -( -M : (=0, 1=) & C >= 0 & F > C & Sigma : (0, 1=) & S : (=0, Sigma=) -=> -C + (F - C) * M * S / Sigma + (F - C) * (1 - M) <= F & -0 <= C + (F - C) * M * S / Sigma + (F - C) * (1 - M))). -\end{verbatim} - - \ifproofs -\begin{verbatim} -SZS output start CNFRefutation for rewardsplit.tptp -cnf(leq_left_divide_mul_pos, axiom, (Y * Z < X | X / Z <= Y | Z <= 0)). - -cnf(leq_right_divide_mul_pos, axiom, (Y < X * Z | X <= Y / Z | Z <= 0)). - -cnf(leq_left_divide_mul_neg, axiom, (Y * Z < X | Y <= X / Z | 0 <= Z)). - -cnf(leq_right_divide_mul_neg, axiom, (Y < X * Z | Y / Z <= X | 0 <= Z)). - -cnf(interval_elim1, axiom, (~ interval(R, A, S, B, X) | lgen(R, A, X))). - -cnf(interval_elim2, axiom, (~ interval(R, A, S, B, X) | lgen(S, X, B))). - -fof(reward_splitting, conjecture, - (! [C, F, M, S, Sigma] : - ((interval(0, 0, 0, 1, M) & 0 <= C & C < F & - interval(1, 0, 0, 1, Sigma) & interval(0, 0, 0, Sigma, S)) => - (C + (F - C) * M * S / Sigma + (F - C) * (1 - M) <= F & - 0 <= C + (F - C) * M * S / Sigma + (F - C) * (1 - M))))). - -fof(subgoal_0, plain, - (! [C, F, M, S, Sigma] : - ((interval(0, 0, 0, 1, M) & 0 <= C & C < F & - interval(1, 0, 0, 1, Sigma) & interval(0, 0, 0, Sigma, S)) => - C + (F - C) * M * S / Sigma + (F - C) * (1 - M) <= F)), - inference(strip, [], [reward_splitting])). - -fof(subgoal_1, plain, - (! [C, F, M, S, Sigma] : - (((interval(0, 0, 0, 1, M) & 0 <= C & C < F & - interval(1, 0, 0, 1, Sigma) & interval(0, 0, 0, Sigma, S)) & - C + (F - C) * M * S / Sigma + (F - C) * (1 - M) <= F) => - 0 <= C + (F - C) * M * S / Sigma + (F - C) * (1 - M))), - inference(strip, [], [reward_splitting])). - -fof(negate_0_0, plain, - (~ ! [C, F, M, S, Sigma] : - ((interval(0, 0, 0, 1, M) & 0 <= C & C < F & - interval(1, 0, 0, 1, Sigma) & interval(0, 0, 0, Sigma, S)) => - C + (F - C) * M * S / Sigma + (F - C) * (1 - M) <= F)), - inference(negate, [], [subgoal_0])). - -fof(normalize_0_0, plain, - (? [C, F, M, S, Sigma] : - (C < F & F < C + (F - C) * M * S / Sigma + (F - C) * (1 - M) & - 0 <= C & interval(0, 0, 0, Sigma, S) & interval(0, 0, 0, 1, M) & - interval(1, 0, 0, 1, Sigma))), - inference(canonicalize, [], [negate_0_0])). - -fof(normalize_0_1, plain, - (skoFC2 < - skoCC2 + (skoFC2 - skoCC2) * skoMC2 * skoSC2 / skoSigmaC2 + - (skoFC2 - skoCC2) * (1 - skoMC2) & skoCC2 < skoFC2 & 0 <= skoCC2 & - interval(0, 0, 0, 1, skoMC2) & interval(0, 0, 0, skoSigmaC2, skoSC2) & - interval(1, 0, 0, 1, skoSigmaC2)), - inference(skolemize, [], [normalize_0_0])). - -fof(normalize_0_2, plain, (interval(0, 0, 0, skoSigmaC2, skoSC2)), - inference(conjunct, [], [normalize_0_1])). - -fof(normalize_0_3, plain, (interval(1, 0, 0, 1, skoSigmaC2)), - inference(conjunct, [], [normalize_0_1])). - -fof(normalize_0_4, plain, (interval(0, 0, 0, 1, skoMC2)), - inference(conjunct, [], [normalize_0_1])). - -fof(normalize_0_5, plain, - (skoFC2 < - skoCC2 + (skoFC2 - skoCC2) * skoMC2 * skoSC2 / skoSigmaC2 + - (skoFC2 - skoCC2) * (1 - skoMC2)), - inference(conjunct, [], [normalize_0_1])). - -fof(normalize_0_6, plain, (0 <= skoCC2), - inference(conjunct, [], [normalize_0_1])). - -fof(normalize_0_7, plain, (skoCC2 < skoFC2), - inference(conjunct, [], [normalize_0_1])). - -cnf(refute_0_0, plain, (interval(0, 0, 0, skoSigmaC2, skoSC2)), - inference(canonicalize, [], [normalize_0_2])). - -cnf(refute_0_1, plain, - (~ interval(0, 0, 0, skoSigmaC2, skoSC2) | - lgen(0, skoSC2, skoSigmaC2)), inference(subst, [], [interval_elim2])). - -cnf(refute_0_2, plain, (lgen(0, skoSC2, skoSigmaC2)), - inference(resolve, [], [refute_0_0, refute_0_1])). - -cnf(refute_0_3, plain, (skoSC2 <= skoSigmaC2), - inference(arithmetic, [], [refute_0_2])). - -cnf(refute_0_4, plain, (interval(1, 0, 0, 1, skoSigmaC2)), - inference(canonicalize, [], [normalize_0_3])). - -cnf(refute_0_5, plain, - (~ interval(1, 0, 0, 1, skoSigmaC2) | lgen(1, 0, skoSigmaC2)), - inference(subst, [], [interval_elim1])). - -cnf(refute_0_6, plain, (lgen(1, 0, skoSigmaC2)), - inference(resolve, [], [refute_0_4, refute_0_5])). - -cnf(refute_0_7, plain, (0 < skoSigmaC2), - inference(arithmetic, [], [refute_0_6])). - -cnf(refute_0_8, plain, - (~ interval(0, 0, 0, skoSigmaC2, skoSC2) | lgen(0, 0, skoSC2)), - inference(subst, [], [interval_elim1])). - -cnf(refute_0_9, plain, (lgen(0, 0, skoSC2)), - inference(resolve, [], [refute_0_0, refute_0_8])). - -cnf(refute_0_10, plain, (0 <= skoSC2), - inference(arithmetic, [], [refute_0_9])). - -cnf(refute_0_11, plain, (interval(0, 0, 0, 1, skoMC2)), - inference(canonicalize, [], [normalize_0_4])). - -cnf(refute_0_12, plain, - (~ interval(0, 0, 0, 1, skoMC2) | lgen(0, 0, skoMC2)), - inference(subst, [], [interval_elim1])). - -cnf(refute_0_13, plain, (lgen(0, 0, skoMC2)), - inference(resolve, [], [refute_0_11, refute_0_12])). - -cnf(refute_0_14, plain, (0 <= skoMC2), - inference(arithmetic, [], [refute_0_13])). - -cnf(refute_0_15, plain, - (skoFC2 < - skoCC2 + (skoFC2 - skoCC2) * skoMC2 * skoSC2 / skoSigmaC2 + - (skoFC2 - skoCC2) * (1 - skoMC2)), - inference(canonicalize, [], [normalize_0_5])). - -cnf(refute_0_16, plain, - (skoMC2 * (skoCC2 * -1 + skoFC2) < - skoSC2 * (skoMC2 * (skoCC2 * -1 + skoFC2)) / skoSigmaC2), - inference(arithmetic, [], [refute_0_15])). - -cnf(refute_0_17, plain, - (skoSC2 * (skoMC2 * (skoCC2 * -1 + skoFC2)) < - skoMC2 * (skoCC2 * -1 + skoFC2) * skoSigmaC2 | 0 <= skoSigmaC2 | - skoSC2 * (skoMC2 * (skoCC2 * -1 + skoFC2)) / skoSigmaC2 <= - skoMC2 * (skoCC2 * -1 + skoFC2)), - inference(subst, [], [leq_right_divide_mul_neg])). - -cnf(refute_0_18, plain, - (skoSC2 * (skoMC2 * (skoCC2 * -1 + skoFC2)) < - skoMC2 * (skoCC2 * -1 + skoFC2) * skoSigmaC2 | 0 <= skoSigmaC2), - inference(resolve, [], [refute_0_17, refute_0_16])). - -cnf(refute_0_19, plain, - (skoSC2 * (skoMC2 * (skoCC2 * -1 + skoFC2)) < - skoSigmaC2 * (skoMC2 * (skoCC2 * -1 + skoFC2)) | 0 <= skoSigmaC2), - inference(arithmetic, [], [refute_0_18])). - -cnf(refute_0_20, plain, - (skoMC2 * (skoCC2 * -1 + skoFC2) * skoSigmaC2 < - skoSC2 * (skoMC2 * (skoCC2 * -1 + skoFC2)) | - skoSC2 * (skoMC2 * (skoCC2 * -1 + skoFC2)) / skoSigmaC2 <= - skoMC2 * (skoCC2 * -1 + skoFC2) | skoSigmaC2 <= 0), - inference(subst, [], [leq_left_divide_mul_pos])). - -cnf(refute_0_21, plain, - (skoMC2 * (skoCC2 * -1 + skoFC2) * skoSigmaC2 < - skoSC2 * (skoMC2 * (skoCC2 * -1 + skoFC2)) | skoSigmaC2 <= 0), - inference(resolve, [], [refute_0_20, refute_0_16])). - -cnf(refute_0_22, plain, - (skoSC2 * (skoMC2 * (skoCC2 + skoFC2 * -1)) < - skoSigmaC2 * (skoMC2 * (skoCC2 + skoFC2 * -1)) | skoSigmaC2 <= 0), - inference(arithmetic, [], [refute_0_21])). - -cnf(refute_0_23, plain, (0 <= skoCC2), - inference(canonicalize, [], [normalize_0_6])). - -cnf(refute_0_24, plain, (skoCC2 < skoFC2), - inference(canonicalize, [], [normalize_0_7])). - -cnf(refute_0_25, plain, (skoSigmaC2 < skoSC2), - inference(decision, [], - [refute_0_7, refute_0_10, refute_0_14, refute_0_19, - refute_0_22, refute_0_23, refute_0_24])). - -cnf(refute_0_26, plain, ($false), - inference(resolve, [], [refute_0_3, refute_0_25])). - -fof(negate_1_0, plain, - (~ ! [C, F, M, S, Sigma] : - (((interval(0, 0, 0, 1, M) & 0 <= C & C < F & - interval(1, 0, 0, 1, Sigma) & interval(0, 0, 0, Sigma, S)) & - C + (F - C) * M * S / Sigma + (F - C) * (1 - M) <= F) => - 0 <= C + (F - C) * M * S / Sigma + (F - C) * (1 - M))), - inference(negate, [], [subgoal_1])). - -fof(normalize_1_0, plain, - (? [C, F, M, S, Sigma] : - (C < F & C + (F - C) * M * S / Sigma + (F - C) * (1 - M) < 0 & - 0 <= C & C + (F - C) * M * S / Sigma + (F - C) * (1 - M) <= F & - interval(0, 0, 0, Sigma, S) & interval(0, 0, 0, 1, M) & - interval(1, 0, 0, 1, Sigma))), - inference(canonicalize, [], [negate_1_0])). - -fof(normalize_1_1, plain, - (skoCC3 + (skoFC3 - skoCC3) * skoMC3 * skoSC3 / skoSigmaC3 + - (skoFC3 - skoCC3) * (1 - skoMC3) < 0 & skoCC3 < skoFC3 & 0 <= skoCC3 & - skoCC3 + (skoFC3 - skoCC3) * skoMC3 * skoSC3 / skoSigmaC3 + - (skoFC3 - skoCC3) * (1 - skoMC3) <= skoFC3 & - interval(0, 0, 0, 1, skoMC3) & interval(0, 0, 0, skoSigmaC3, skoSC3) & - interval(1, 0, 0, 1, skoSigmaC3)), - inference(skolemize, [], [normalize_1_0])). - -fof(normalize_1_2, plain, (interval(0, 0, 0, 1, skoMC3)), - inference(conjunct, [], [normalize_1_1])). - -fof(normalize_1_3, plain, (interval(1, 0, 0, 1, skoSigmaC3)), - inference(conjunct, [], [normalize_1_1])). - -fof(normalize_1_4, plain, (interval(0, 0, 0, skoSigmaC3, skoSC3)), - inference(conjunct, [], [normalize_1_1])). - -fof(normalize_1_5, plain, - (skoCC3 + (skoFC3 - skoCC3) * skoMC3 * skoSC3 / skoSigmaC3 + - (skoFC3 - skoCC3) * (1 - skoMC3) < 0), - inference(conjunct, [], [normalize_1_1])). - -fof(normalize_1_6, plain, (0 <= skoCC3), - inference(conjunct, [], [normalize_1_1])). - -fof(normalize_1_7, plain, (skoCC3 < skoFC3), - inference(conjunct, [], [normalize_1_1])). - -cnf(refute_1_0, plain, (interval(0, 0, 0, 1, skoMC3)), - inference(canonicalize, [], [normalize_1_2])). - -cnf(refute_1_1, plain, - (~ interval(0, 0, 0, 1, skoMC3) | lgen(0, skoMC3, 1)), - inference(subst, [], [interval_elim2])). - -cnf(refute_1_2, plain, (lgen(0, skoMC3, 1)), - inference(resolve, [], [refute_1_0, refute_1_1])). - -cnf(refute_1_3, plain, (skoMC3 <= 1), - inference(arithmetic, [], [refute_1_2])). - -cnf(refute_1_4, plain, (interval(1, 0, 0, 1, skoSigmaC3)), - inference(canonicalize, [], [normalize_1_3])). - -cnf(refute_1_5, plain, - (~ interval(1, 0, 0, 1, skoSigmaC3) | lgen(1, 0, skoSigmaC3)), - inference(subst, [], [interval_elim1])). - -cnf(refute_1_6, plain, (lgen(1, 0, skoSigmaC3)), - inference(resolve, [], [refute_1_4, refute_1_5])). - -cnf(refute_1_7, plain, (0 < skoSigmaC3), - inference(arithmetic, [], [refute_1_6])). - -cnf(refute_1_8, plain, (interval(0, 0, 0, skoSigmaC3, skoSC3)), - inference(canonicalize, [], [normalize_1_4])). - -cnf(refute_1_9, plain, - (~ interval(0, 0, 0, skoSigmaC3, skoSC3) | lgen(0, 0, skoSC3)), - inference(subst, [], [interval_elim1])). - -cnf(refute_1_10, plain, (lgen(0, 0, skoSC3)), - inference(resolve, [], [refute_1_8, refute_1_9])). - -cnf(refute_1_11, plain, (0 <= skoSC3), - inference(arithmetic, [], [refute_1_10])). - -cnf(refute_1_12, plain, - (~ interval(0, 0, 0, 1, skoMC3) | lgen(0, 0, skoMC3)), - inference(subst, [], [interval_elim1])). - -cnf(refute_1_13, plain, (lgen(0, 0, skoMC3)), - inference(resolve, [], [refute_1_0, refute_1_12])). - -cnf(refute_1_14, plain, (0 <= skoMC3), - inference(arithmetic, [], [refute_1_13])). - -cnf(refute_1_15, plain, - (skoCC3 + (skoFC3 - skoCC3) * skoMC3 * skoSC3 / skoSigmaC3 + - (skoFC3 - skoCC3) * (1 - skoMC3) < 0), - inference(canonicalize, [], [normalize_1_5])). - -cnf(refute_1_16, plain, - (skoSC3 * (skoMC3 * (skoCC3 * -1 + skoFC3)) / skoSigmaC3 < - skoFC3 * -1 + skoMC3 * (skoCC3 * -1 + skoFC3)), - inference(arithmetic, [], [refute_1_15])). - -cnf(refute_1_17, plain, - ((skoFC3 * -1 + skoMC3 * (skoCC3 * -1 + skoFC3)) * skoSigmaC3 < - skoSC3 * (skoMC3 * (skoCC3 * -1 + skoFC3)) | 0 <= skoSigmaC3 | - skoFC3 * -1 + skoMC3 * (skoCC3 * -1 + skoFC3) <= - skoSC3 * (skoMC3 * (skoCC3 * -1 + skoFC3)) / skoSigmaC3), - inference(subst, [], [leq_left_divide_mul_neg])). - -cnf(refute_1_18, plain, - ((skoFC3 * -1 + skoMC3 * (skoCC3 * -1 + skoFC3)) * skoSigmaC3 < - skoSC3 * (skoMC3 * (skoCC3 * -1 + skoFC3)) | 0 <= skoSigmaC3), - inference(resolve, [], [refute_1_17, refute_1_16])). - -cnf(refute_1_19, plain, - (skoSC3 * (skoMC3 * (skoCC3 + skoFC3 * -1)) < - skoSigmaC3 * (skoFC3 + skoMC3 * (skoCC3 + skoFC3 * -1)) | - 0 <= skoSigmaC3), inference(arithmetic, [], [refute_1_18])). - -cnf(refute_1_20, plain, - (skoSC3 * (skoMC3 * (skoCC3 * -1 + skoFC3)) < - (skoFC3 * -1 + skoMC3 * (skoCC3 * -1 + skoFC3)) * skoSigmaC3 | - skoFC3 * -1 + skoMC3 * (skoCC3 * -1 + skoFC3) <= - skoSC3 * (skoMC3 * (skoCC3 * -1 + skoFC3)) / skoSigmaC3 | - skoSigmaC3 <= 0), inference(subst, [], [leq_right_divide_mul_pos])). - -cnf(refute_1_21, plain, - (skoSC3 * (skoMC3 * (skoCC3 * -1 + skoFC3)) < - (skoFC3 * -1 + skoMC3 * (skoCC3 * -1 + skoFC3)) * skoSigmaC3 | - skoSigmaC3 <= 0), inference(resolve, [], [refute_1_20, refute_1_16])). - -cnf(refute_1_22, plain, - (skoSC3 * (skoMC3 * (skoCC3 * -1 + skoFC3)) < - skoSigmaC3 * (skoFC3 * -1 + skoMC3 * (skoCC3 * -1 + skoFC3)) | - skoSigmaC3 <= 0), inference(arithmetic, [], [refute_1_21])). - -cnf(refute_1_23, plain, (0 <= skoCC3), - inference(canonicalize, [], [normalize_1_6])). - -cnf(refute_1_24, plain, (skoCC3 < skoFC3), - inference(canonicalize, [], [normalize_1_7])). - -cnf(refute_1_25, plain, (1 < skoMC3), - inference(decision, [], - [refute_1_7, refute_1_11, refute_1_14, refute_1_19, - refute_1_22, refute_1_23, refute_1_24])). - -cnf(refute_1_26, plain, ($false), - inference(resolve, [], [refute_1_3, refute_1_25])). -SZS output end CNFRefutation for rewardsplit.tptp -\end{verbatim} - \fi -\end{proof} - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "ledger-spec" -%%% End: diff --git a/eras/shelley/formal-spec/properties.tex b/eras/shelley/formal-spec/properties.tex deleted file mode 100644 index 93106b6fa3e..00000000000 --- a/eras/shelley/formal-spec/properties.tex +++ /dev/null @@ -1,682 +0,0 @@ -\newcommand{\Val}{\fun{Val}} -\newcommand{\POV}[1]{\ensuremath{\mathsf{PresOfVal}(\mathsf{#1})}} -\newcommand{\DBE}[2]{\ensuremath{\mathsf{DBE}({#1},~{#2})}} -\newcommand{\DGO}[2]{\ensuremath{\mathsf{DGO}({#1},~{#2})}} -\newcommand{\transtar}[2]{\xlongrightarrow[\textsc{#1}]{#2}\negthickspace^{*}} - -\section{Properties} -\label{sec:properties} - -This section describes the properties that the ledger should have. The goal is to -to include these properties in the executable specification to enable e.g. -property-based testing or formal verification. - -% TODO - the hand proofs of preservation of ada and non-negative deposit -% pot are woefully out of date, mostly due to the removal of decaying deposits. -%\input{hand_proofs} - -\subsection{Header-Only Validation} -\label{sec:header-only-validation} -The header-only validation properties of the Shelley Ledger are the analogs -of those from Section 8.1 of \cite{byron_chain_spec}. - -In any given chain state, the consensus layer needs to be able to validate the -block headers without having to download the block bodies. -Property~\ref{prop:header-only-validation} states that if an extension of a -chain that spans less than $\StabilityWindow$ slots is valid, then validating the -headers of that extension is also valid. This property is useful for its -converse: if the header validation check for a sequence of headers does not -pass, then we know that the block validation that corresponds to those headers -will not pass either. - -First we define the header-only version of the $\mathsf{CHAIN}$ transition, -which we call $\mathsf{CHAINHEAD}$. -It is very similar to $\mathsf{CHAIN}$, the differences being: -\begin{itemize} - \item The $\mathsf{CHAINHEAD}$ signal is not a block, but a block header ($\BHeader$). - \item $\mathsf{CHAINHEAD}$ does not call $\mathsf{BBODY}$. - \item $\mathsf{CHAINHEAD}$ does not call $\mathsf{TICK}$, but instead - calls the similar $\mathsf{TICKF}$, which differs by - not calling the reward update transition $\mathsf{RUPD}$. - \item $\mathsf{CHAINHEAD}$ does not store the new epoch state $\var{nes}$ in - its state, but rather contains it in the environment. - We will conveniently \textbf{abuse the tuple notation} and write - $(nes, \tilde{s}) = s$ - for splitting the chain state into the new epoch state and the remaiing fields. -\end{itemize} - -\begin{figure}[ht] - \begin{equation}\label{eq:tickf} - \inference[TickForecast] - { - { - \vdash - \var{nes} - \trans{\hyperref[fig:rules:new-epoch]{newepoch}}{\epoch{slot}} - \var{nes}' - } - \\~\\ - (\var{e_\ell'},~\var{b_{prev}'},~\var{b_{cur}'},~\var{es'},~\var{ru'},~\var{pd'}) - \leteq\var{nes'} - \\ - \var{es''}\leteq\fun{adoptGenesisDelegs}~\var{es'}~\var{slot} - \\ - \var{forecast}\leteq - (\var{e_\ell'},~\var{b_{prev}'},~\var{b_{cur}'},~\var{es''},~\var{ru'},~\var{pd'}) - \\~\\ - } - { - \vdash\var{nes}\trans{tickf}{\var{slot}}\varUpdate{\var{forecast}} - } - \end{equation} - \caption{Tick Forecast rules} - \label{fig:rules:tickf} -\end{figure} - -\clearpage - -\begin{figure}[ht] - \begin{equation}\label{eq:chain-head} - \inference[ChainHead] - { - \var{bhb} \leteq \bhbody{bh} - & - \var{s} \leteq \bslot{bhb} - \\~\\ - \fun{prtlSeqChecks}~\var{lab}~\var{bh} - \\~\\ - { - \vdash\var{nes}\trans{\hyperref[fig:rules:tickf]{tickf}}{\var{s}}\var{forecast} - } \\~\\ - (\var{e_1},~\wcard,~\wcard,~\wcard,~\wcard,~\wcard) - \leteq\var{nes} \\ - (\var{e_2},~\wcard,~\wcard,~\var{es},~\wcard,~\wcard,~\var{pd}) - \leteq\var{forecast} \\ - (\var{acnt},~\wcard,\var{ls},~\wcard,~\var{pp})\leteq\var{es}\\ - ( \wcard, - ( (\wcard,~\wcard,~\wcard,~\wcard,~\var{genDelegs},~\wcard),~ - (\wcard,~\wcard,~\wcard)))\leteq\var{ls}\\ - \var{ne} \leteq \var{e_1} \neq \var{e_2}\\ - \eta_{ph} \leteq \prevHashToNonce{(\lastAppliedHash{lab})} \\~\\ - \fun{chainChecks}~ - \MaxMajorPV~(\fun{maxHeaderSize}~\var{pp},~\fun{maxBlockSize}~\var{pp},~\fun{pv}~\var{pp})~ - \var{bh}\\~\\ - { - {\begin{array}{c} - \var{pp} \\ - \eta_c \\ - \eta_\var{ph} \\ - \end{array}} - \vdash - {\left(\begin{array}{c} - \eta_0 \\ - \eta_h \\ - \end{array}\right)} - \trans{\hyperref[fig:rules:tick-nonce]{tickn}}{\var{ne}} - {\left(\begin{array}{c} - \eta_0' \\ - \eta_h' \\ - \end{array}\right)} - }\\~\\~\\ - { - {\begin{array}{c} - (\fun{d}~\var{pp}) \\ - \var{pd} \\ - \var{genDelegs} \\ - \eta_0' \\ - \end{array}} - \vdash - {\left(\begin{array}{c} - \var{cs} \\ - \eta_v \\ - \eta_c \\ - \end{array}\right)} - \trans{\hyperref[fig:rules:prtcl]{prtcl}}{\var{bh}} - {\left(\begin{array}{c} - \var{cs'} \\ - \eta_v' \\ - \eta_c' \\ - \end{array}\right)} - } \\~\\~\\ - \var{lab'}\leteq (\bblockno{bhb},~\var{s},~\bhash{bh} ) \\ - } - { - \var{nes} - \vdash - {\left(\begin{array}{c} - \var{cs} \\ - \eta_0 \\ - \eta_v \\ - \eta_c \\ - \eta_h \\ - \var{lab} \\ - \end{array}\right)} - \trans{chainhead}{\var{bh}} - {\left(\begin{array}{c} - \varUpdate{\var{cs}'} \\ - \varUpdate{\eta_0'} \\ - \varUpdate{\eta_v'} \\ - \varUpdate{\eta_c'} \\ - \varUpdate{\eta_h'} \\ - \varUpdate{\var{lab}'} \\ - \end{array}\right)} - } - \end{equation} - \caption{Chain-Head rules} - \label{fig:rules:chainhead} -\end{figure} - -\begin{property}[Header only validation]\label{prop:header-only-validation} - For all states $s$ with slot number $t$\footnote{i.e. the - component $\var{s_\ell}$ of the last applied block of $s$ equals $t$}, - and chain extensions $E$ with corresponding headers $H$ such that: - % - $$ - 0 \leq t_E - t \leq \StabilityWindow - $$ - % - we have: - % - $$ - \vdash s \transtar{\hyperref[fig:rules:chain]{chain}}{E} s' - \implies - \var{nes} \vdash \tilde{s} \transtar{\hyperref[fig:rules:chainhead]{chainhead}}{H} s'' - $$ - where $s=(\var{nes},~\tilde{s})$, - $t_E$ is the maximum slot number appearing in the blocks contained in - $E$, and $H$ is obtained from $E$ by applying $\fun{bheader}$ to each block in $E$. -\end{property} - -\begin{property}[Body only validation]\label{prop:body-only-validation} - For all states $s$ with slot number $t$, and chain - extensions $E = [b_0, \ldots, b_n]$ with corresponding headers $H$ such that: - $$ - 0 \leq t_E - t \leq \StabilityWindow - $$ - we have that for all $i \in [1, n]$: - $$ - \var{nes} \vdash \tilde{s} \transtar{\hyperref[fig:rules:chainhead]{chainhead}}{H} s_{h} - \wedge - \vdash (\var{nes},~\tilde{s}) \transtar{\hyperref[fig:rules:chain]{chain}}{[b_0 \ldots b_{i-1}]} s_{i-1} - \implies - \var{nes'} \vdash \tilde{s}_{i-1}\trans{\hyperref[fig:rules:chainhead]{chainhead}}{h_i} s'_{h} - $$ - where $s_{i-1}=(\var{nes'},~\tilde{s}_{i-1})$, - $t_E$ is the maximum slot number appearing in the blocks contained in $E$. -\end{property} - -Property~\ref{prop:body-only-validation} states that if we validate a sequence -of headers, we can validate their bodies independently and be sure that the -blocks will pass the chain validation rule. To see this, given an environment -$e$ and initial state $s$, assume that a sequence of headers -$H = [h_0, \ldots, h_n]$ corresponding to blocks in $E = [b_0, \ldots, b_n]$ is -valid according to the $\mathsf{chainhead}$ transition system: -% -$$ -\var{nes} \vdash \tilde{s} \transtar{\hyperref[fig:rules:chainhead]{chainhead}}{H} \tilde{s'} -$$ -% -Assume the bodies of $E$ are valid -according to the $\mathsf{bbody}$ rules, but $E$ is not valid according to -the $\mathsf{chain}$ rule. Assume that there is a $b_j \in E$ such that it is -\textbf{the first block} such that does not pass the $\mathsf{chain}$ -validation. Then: -% -$$ -\vdash (\var{nes},~\tilde{s}) \transtar{\hyperref[fig:rules:chain]{chain}}{[b_0, \ldots b_{j-1}]} s_j -$$ -But by Property~\ref{prop:body-only-validation} we know that -% -$$ -\var{nes}_j \vdash \tilde{s}_j \trans{\hyperref[fig:rules:chainhead]{chainhead}}{h_j} \tilde{s}_{j+1} -$$ -which means that block $b_j$ has valid headers, and this in turn means that the -validation of $b_j$ according to the chain rules must have failed because it -contained an invalid block body. But this contradicts our assumption that the -block bodies were valid. - -\begin{property}[Existence of roll back function]\label{prop:roll-back-funk} - There exists a function $\fun{f}$ such that for all chains - $$C = C_0 ; b; C_1$$ - we have that if for all alternative chains $C'_1$, $\size{C'_1} \leq \frac{\StabilityWindow}{2}$, with - corresponding headers $H'_1$ - $$ - \vdash s_0 \transtar{\hyperref[fig:rules:chain]{chain}}{C_0;b} s_1 \transtar{\hyperref[fig:rules:chain]{chain}}{C_1} s_2 - \wedge - \vdash s_1 \transtar{\hyperref[fig:rules:chain]{chain}}{C_1'} s'_1 - \implies - \var{nes} \vdash \tilde{s} \transtar{\hyperref[fig:rules:chainhead]{chainhead}}{H'_1} s_h - $$ -\end{property} -where $\fun{f}~(\bheader{b})~s_2=(\var{nes},~\tilde{s})$. - -Property~\ref{prop:roll-back-funk} expresses the fact the there is a function -that allow us to recover the header-only state by rolling back at most $k$ -blocks, and use this state to validate the headers of an alternate chain. Note -that this property is not inherent to the $\mathsf{chain}$ rules and can be -trivially satisfied by any function that keeps track of the history of the -intermediate chain states up to $k$ blocks back. This property is stated here -so that it can be used as a reference for the tests in the consensus layer, -which uses the rules presented in this document. - - -\subsection{Validity of a Ledger State} -\label{sec:valid-ledg-state} - -Many properties only make sense when applied to a valid ledger state. In -informal terms, a valid ledger state $l$ can only be reached when starting from -an initial state $l_{0}$ (ledger in the genesis state) and only executing LEDGER -state transition rules as specified in Section~\ref{sec:ledger-trans} which -changes either the UTxO or the delegation state. - -\begin{figure}[ht] - \centering - \begin{align*} - \genesisId & \in & \TxId \\ - \genesisTxOut & \in & \TxOut \\ - \genesisUTxO & \coloneqq & (\genesisId, 0) \mapsto \genesisTxOut - \\ - \ledgerState & \in & \left( - \begin{array}{c} - \UTxOState \\ - \DPState - \end{array} - \right)\\ - && \\ - \fun{getUTxO} & \in & \UTxOState \to \UTxO \\ - \fun{getUTxO} & \coloneqq & (\var{utxo}, \wcard, \wcard, \wcard) \mapsto \var{utxo} - \end{align*} - \caption{Definitions and Functions for Valid Ledger State} - \label{fig:valid-ledger} -\end{figure} - -In Figure~\ref{fig:valid-ledger} \genesisId{} marks the transaction identifier -of the initial coin distribution, where \genesisTxOut{} represents the initial -UTxO. It should be noted that no corresponding inputs exists, i.e., the -transaction inputs are the empty set for the initial transaction. The function -\fun{getUTxO} extracts the UTxO from a UTxO state. - -\begin{definition}[\textbf{Valid Ledger State}] - \begin{multline*} - \forall l_{0},\ldots,l_{n} \in \LState, lenv_{0},\ldots,lenv_{n} \in \LEnv, - l_{0} = \left( - \begin{array}{c} - \genesisUTxOState \\ - \left( - \begin{array}{c} - \emptyset\\ - \emptyset - \end{array} - \right) - \end{array} - \right) \\ - \implies \forall 0 < i \leq n, (\exists tx_{i} \in \Tx, - lenv_{i-1}\vdash l_{i-1} \trans{ledger}{tx_{i}} l_{i}) \implies - \applyFun{validLedgerState} l_{n} - \end{multline*} - \label{def:valid-ledger-state} -\end{definition} - -Definition~\ref{def:valid-ledger-state} defines a valid ledger state reachable -from the genesis state via valid LEDGER STS transitions. This gives a -constructive rule how to reach a valid ledger state. - -\subsection{Ledger Properties} -\label{sec:ledger-properties} - -The following properties state the desired features of updating a valid ledger -state. - -\begin{property}[\textbf{Preserve Balance}] - \begin{multline*} - \forall \var{l}, \var{l'} \in \LState: \applyFun{validLedgerstate}{l}, - l=(u,\wcard,\wcard,\wcard), l' = (u',\wcard,\wcard,\wcard)\\ - \implies \forall \var{tx} \in \Tx, lenv \in\LEnv, lenv \vdash\var{u} \trans{utxow}{tx} \var{u'} \\ - \implies \applyFun{destroyed}{pc~utxo~stkCreds~rewards~tx} = - \applyFun{created}{pc~stPools~tx} - \end{multline*} - \label{prop:ledger-properties-1} -\end{property} - -Property~\ref{prop:ledger-properties-1} states that for each valid ledger $l$, -if a transaction $tx$ is added to the ledger via the state transition rule UTXOW -to the new ledger state $l'$, the balance of the UTxOs in $l$ equals the balance -of the UTxOs in $l'$ in the sense that the amount of created value in $l'$ -equals the amount of destroyed value in $l$. This means that the total amount of -value is left unchanged by a transaction. - -\begin{property}[\textbf{Preserve Balance Restricted to TxIns in Balance of - TxOuts}] - \begin{multline*} - \forall \var{l}, \var{l'} \in \ledgerState: \applyFun{validLedgerstate}{l}, - l=(u,\wcard,\wcard,\wcard), l' = (u',\wcard,\wcard,\wcard)\\ - \implies \forall \var{tx} \in \Tx, lenv \in\LEnv, lenv \vdash \var{u} - \trans{utxow}{tx} \var{u'} \\ - \implies \fun{ubalance}(\applyFun{txins}{tx} \restrictdom - \applyFun{getUTxO}{u}) = \fun{ubalance}(\applyFun{outs}{tx}) + - \applyFun{txfee}{tx} + depositChange - \end{multline*} - \label{prop:ledger-properties-2} -\end{property} - -Property~\ref{prop:ledger-properties-2} states a slightly more detailed relation -of the balances change. For ledgers $l, l'$ and a transaction $tx$ as above, the -balance of the UTxOs of $l$ restricted to those whose domain is in the set of -transaction inputs of $tx$ equals the balance of the transaction outputs of $tx$ -minus the transaction fees and the change in the deposit -$depositChange$~(cf.~Fig.~\ref{fig:rules:utxo-shelley}). - -\begin{property}[\textbf{Preserve Outputs of Transaction}] - \begin{multline*} - \forall \var{l}, \var{l'} \in \ledgerState: \applyFun{validLedgerstate}{l}, - l=(u,\wcard,\wcard,\wcard), l' = (u',\wcard,\wcard,\wcard)\\ - \implies \forall \var{tx} \in \Tx, lenv \in\LEnv, lenv \vdash \var{u} - \trans{utxow}{tx} \var{u'} \implies \forall \var{out} \in - \applyFun{outs}{tx}, out \in \applyFun{getUTxO}{u'} - \end{multline*} - \label{prop:ledger-properties-3} -\end{property} - -Property~\ref{prop:ledger-properties-3} states that for all ledger states -$l, l'$ and transaction $tx$ as above, all output UTxOs of $tx$ are in the UTxO -set of $l'$, i.e., they are now available as unspent transaction output. - -\begin{property}[\textbf{Eliminate Inputs of Transaction}] - \begin{multline*} - \forall \var{l}, \var{l'} \in \ledgerState: \applyFun{validLedgerstate}{l}, - l=(u,\wcard,\wcard,\wcard), l' = (u',\wcard,\wcard,\wcard)\\ - \implies \forall \var{tx} \in \Tx, lenv \in\LEnv, lenv \vdash \var{u} - \trans{utxow}{tx} \var{u'} \implies \forall \var{in} \in - \applyFun{txins}{tx}, in \not\in \fun{dom}(\applyFun{getUTxO}{u'}) - \end{multline*} - \label{prop:ledger-properties-4} -\end{property} - -Property~\ref{prop:ledger-properties-4} states that for all ledger states -$l, l'$ and transaction $tx$ as above, all transaction inputs $in$ of $tx$ are -not in the domain of the UTxO of $l'$, i.e., these are no longer available to -spend. - -\begin{property}[\textbf{Completeness and Collision-Freeness of new Transaction - Ids}] - \begin{multline*} - \forall \var{l}, \var{l'} \in \ledgerState: \applyFun{validLedgerstate}{l}, - l=(u,\wcard,\wcard,\wcard), l' = (u',\wcard,\wcard,\wcard)\\ - \implies \forall \var{tx} \in \Tx, lenv \in\LEnv, lenv \vdash \var{u} - \trans{utxow}{tx} \var{u'} \\ \implies \forall ((txId', \wcard) \mapsto - \wcard) \in \applyFun{outs}{tx}, ((txId, \wcard) \mapsto \wcard) - \in\applyFun{getUTxO}{u} \implies \var{txId'} \neq \var{txId} - \end{multline*} - \label{prop:ledger-properties-5} -\end{property} - -Property~\ref{prop:ledger-properties-5} states that for ledger states $l, l'$ -and a transaction $tx$ as above, the UTxOs of $l'$ contain all newly created -UTxOs and the referred transaction id of each new UTxO is not used in the UTxO -set of $l$. - -\begin{property}[\textbf{Absence of Double-Spend}] - \begin{multline*} - \forall l_{0},\ldots,l_{n} \in \ledgerState, l_{0} = - \left( - \begin{array}{c} - \left\{ - \genesisUTxO - \right\} \\ - \left( - \begin{array}{c} - \emptyset\\ - \emptyset - \end{array} - \right) - \end{array} - \right) \wedge \applyFun{validLedgerState} l_{n}, l_{i}=(u_{i},\wcard,\wcard,\wcard)\\ - \implies \forall 0 < i \leq n, tx_{i} \in \Tx, lenv_{i}\in\LEnv, - lenv_{i} \vdash u_{i-1} - \trans{ledger}{tx_{i}} u_{i} \wedge \applyFun{validLedgerState} l_{i} \\ - \implies \forall j < i, \applyFun{txins}{tx_{j}} \cap - \applyFun{txins}{tx_{i}} = \emptyset - \end{multline*} - \label{prop:ledger-properties-no-double-spend} -\end{property} - -Property~\ref{prop:ledger-properties-no-double-spend} states that for each valid -ledger state $l_{n}$ reachable from the genesis state, each transaction $t_{i}$ -does not share any input with any previous transaction $t_{j}$. This means that -each output of a transition is spent at most once. - -\subsection{Ledger State Properties for Delegation Transitions} -\label{sec:ledg-prop-deleg} - -\begin{figure}[ht] - \centering - \begin{align*} - \fun{getStDelegs} & \in & \DState \to \powerset \Credential \\ - \fun{getStDelegs} & \coloneqq & - (\var{stkCreds}, \wcard, - \wcard,\wcard,\wcard,\wcard) \to \var{stkCreds} \\ - &&\\ - \fun{getRewards} & \in & \DState \to (\AddrRWD \mapsto \Coin) \\ - \fun{getRewards} & \coloneqq & (\wcard, \var{rewards}, - \wcard,\wcard,\wcard,\wcard) - \to \var{rewards} \\ - &&\\ - \fun{getDelegations} & \in & \DState \to (\Credential \mapsto \KeyHash) \\ - \fun{getDelegations} & \coloneqq & (\wcard, \wcard, - \var{delegations},\wcard,\wcard,\wcard) \to - \var{delegations} \\ - &&\\ - \fun{getStPools} & \in & \LState \to (\KeyHash \mapsto \DCertRegPool) \\ - \fun{getStPools} & \coloneqq & (\wcard, (\wcard, - (\var{stpools},\wcard,\wcard,\wcard))) \to \var{stpools} \\ - &&\\ - \fun{getRetiring} & \in & \LState \to (\KeyHash \mapsto \Epoch) \\ - \fun{getRetiring} & \coloneqq & (\wcard, (\wcard, - (\wcard, \wcard, \var{retiring},\wcard))) \to \var{retiring} \\ - \end{align*} - \caption{Definitions and Functions for Stake Delegation in Ledger States} - \label{fig:stake-delegation-functions} -\end{figure} - - -\begin{property}[\textbf{Registered Staking Credential with Zero Rewards}] - \begin{multline*} - \forall \var{l}, \var{l'} \in \ledgerState: \applyFun{validLedgerstate}{l}, - l = (\wcard, ((d, \wcard), \wcard)), l' = (\wcard, ((d',\wcard), \wcard)), dEnv\in\DEnv \\ - \implies \forall \var{c} \in \DCertRegKey, dEnv\vdash \var{d} - \trans{deleg}{c} \var{d'} \implies \applyFun{cwitness}{c} = \var{hk}\\ - \implies hk\not\in \fun{getStDelegs}~\var{d} \implies \var{hk} \in - \applyFun{getStDelegs}{d'} \wedge - (\applyFun{getRewards}\var{d'})[\fun{addr_{rwd}}{hk}] = 0 - \end{multline*} - \label{prop:ledger-properties-6} -\end{property} - -Property~\ref{prop:ledger-properties-6} states that for each valid ledger state -$l$, if a delegation transaction of type $\DCertRegKey$ is executed, then in the -resulting ledger state $l'$, the set of staking credential of $l'$ includes the -credential $hk$ associated with the key registration certificate and the -associated reward is set to 0 in $l'$. - -\begin{property}[\textbf{Deregistered Staking Credential}] - \begin{multline*} - \forall \var{l}, \var{l'} \in \ledgerState: \applyFun{validLedgerstate}{l}, - l = (\wcard, (d, \wcard)), l' = (\wcard, (d', \wcard)), dEnv\in\DEnv \\ - \implies \forall \var{c} \in \DCertDeRegKey, dEnv\vdash\var{d} - \trans{deleg}{c} \var{d'} \implies \applyFun{cwitness}{c} = \var{hk}\\ - \implies \var{hk} \not\in \applyFun{getStDelegs}{d'} \wedge hk\not\in - \left\{ \fun{stakeCred_{r}}~sc\vert - sc\in\fun{dom}(\applyFun{getRewards}{d'}) - \right\}\\ - \wedge hk \not\in \fun{dom}(\applyFun{getDelegations}{d'})) - \end{multline*} - \label{prop:ledger-properties-7} -\end{property} - -Property~\ref{prop:ledger-properties-7} states that for $l, l'$ as above but -with a delegation transition of type $\DCertDeRegKey$, the staking credential -$hk$ associated with the deregistration certificate is not in the set of staking -credentials of $l'$ and is not in the domain of either the rewards or the -delegation map of $l'$. - -\begin{property}[\textbf{Delegated Stake}] - \begin{multline*} - \forall \var{l}, \var{l'} \in \ledgerState: \applyFun{validLedgerstate}{l}, - l = (\wcard, (d,\wcard)), l' = (\wcard, (d',\wcard)), dEnv\in\DEnv \\ - \implies \forall \var{c} \in \DCertDeleg, dEnv \vdash\var{d} - \trans{deleg}{c} \var{d'} \implies \applyFun{cwitness}{c} = \var{hk}\\ - \implies \var{hk} \in \applyFun{getStDelegs}{d'} \wedge - (\applyFun{getDelegations}{d'})[hk] = \applyFun{dpool}{c} - \end{multline*} - \label{prop:ledger-properties-8} -\end{property} - -Property~\ref{prop:ledger-properties-8} states that for $l, l'$ as above but -with a delegation transition of type $\DCertDeleg$, the staking credential $hk$ -associated with the deregistration certificate is in the set of staking -credentials of $l$ and delegates to the staking pool associated with the -delegation certificate in $l'$. - -\begin{property}[\textbf{Genesis Keys are Always All Delegated}] - \label{prop:genkeys-delegated} - \begin{multline*} - \forall \var{l}, \var{l'} \in \LState: \applyFun{validLedgerstate}{l},\\ - \implies \forall \Gamma \in \seqof{\Tx}, env \in (\Slot \times \PParams), \\ - env \vdash\var{l} \trans{ledgers}{\Gamma} \var{l'} \implies |genDelegs| = 7 - \end{multline*} -\end{property} - -Property \ref{prop:genkeys-delegated} states that all seven of the genesis keys -are constantly all delegated after applying a list of transactions to a valid ledger -state. - -\subsection{Ledger State Properties for Staking Pool Transitions} -\label{sec:ledg-state-prop} - -\begin{property}[\textbf{Registered Staking Pool}] - \begin{multline*} - \forall \var{l}, \var{l'} \in \ledgerState: \applyFun{validLedgerstate}{l}, - l = (\wcard, (\wcard, p)), l' = (\wcard, (\wcard, p')), pEnv\in\PEnv \\ - \implies \forall \var{c} \in \DCertRegPool, \var{p} \trans{pool}{c} \var{p'} - \implies \applyFun{cwitness}{c} = \var{hk}\\ \implies - \var{hk}\in\applyFun{getStPools}{p'} \wedge \var{hk} \not\in - \applyFun{getRetiring}{p'} - \end{multline*} - \label{prop:ledger-properties-9} -\end{property} - -Property~\ref{prop:ledger-properties-9} states that for $l, l'$ as above but -with a delegation transition of type $\DCertRegPool$, the key $hk$ is associated -with the author of the pool registration certificate in $\var{stpools}$ of $l'$ -and that $hk$ is not in the set of retiring stake pools in $l'$. - -\begin{property}[\textbf{Start Staking Pool Retirement}] - \begin{multline*} - \forall \var{l}, \var{l'} \in \ledgerState, \var{cepoch} \in \Epoch: - \applyFun{validLedgerstate}{l}, - l = (\wcard, (\wcard,p)), l' = (\wcard, (\wcard,p')), pEnv\in\PEnv \\ - \implies \forall \var{c} \in \DCertRetirePool, pEnv\vdash\var{p} - \trans{POOL}{c} \var{p'} \\ \implies e = \applyFun{retire}{c} \wedge - \var{cepoch} < e < \var{cepoch} + \emax \wedge \applyFun{cwitness}{c} = - \var{hk}\\ \implies (\applyFun{getRetiring}{p'})[\var{hk}] = e \wedge - \var{hk} \in - \fun{dom}(\applyFun{getStPools}{p})\wedge\fun{dom}(\applyFun{getStPools}{p'} - ) - \end{multline*} - \label{prop:ledger-properties-10} -\end{property} - -Property~\ref{prop:ledger-properties-10} states that for $l, l'$ as above but -with a delegation transition of type $\DCertRetirePool$, the key $hk$ is -associated with the author of the pool registration certificate in -$\var{stpools}$ of $l'$ and that $hk$ is in the map of retiring staking pools of -$l'$ with retirement epoch $e$, as well as that $hk$ is in the map of stake -pools in $l$ and $l'$. - -\begin{property}[\textbf{Stake Pool Reaping}] - \begin{multline*} - \forall \var{l}, \var{l'} \in \ledgerState, \var{e} \in \Epoch: - \applyFun{validLedgerstate}{l},\\ - l = (\wcard, (d, p)), l' = (\wcard, (d', p')), pp\in\PParams, acnt, acnt'\in\Acnt \\ - \implies pp\vdash\var{(acnt, d, p} \trans{poolreap}{e} \var{(acnt, d', p')} - \implies \forall \var{retire}\in{(\fun{getRetiring}~p)}^{-1}[e], retire \neq - \emptyset \\ \wedge \var{retire} \subseteq - \fun{dom}(\applyFun{getStPool}{p}) \wedge - \var{retire} \cap\fun{dom}(\applyFun{getStPool}{p'})=\emptyset \\ - \wedge\var{retire} \cap \fun{dom}(\applyFun{getRetiring}{p'}) = \emptyset - \end{multline*} - \label{prop:ledger-properties-11} -\end{property} - -Property~\ref{prop:ledger-properties-11} states that for $l, l'$ as above but -with a delegation transition of type POOLREAP, there exist registered stake -pools in $l$ which are associated to stake pool registration certificates and -which are to be retired at the current epoch $\var{e}$. In $l'$ all those stake -pools are removed from the maps $stpools$ and $retiring$. - -\subsection{Properties of Numerical Calculations} -\label{sec:prop-numer-calc} - -The numerical calculations for refunds and rewards in -(see Section~\ref{sec:epoch}) are also required to have certain properties. In -particular we need to make sure that the functions that use non-integral -arithmetic have properties which guarantee consistency of the system. Here, we -state those properties and formulate them in a way that makes them usable in -properties-based testing for validation in the executable spec. - -\begin{property}[\textbf{Maximal Pool Reward}] - \label{prop:maximal-pool-reward} - - The maximal pool reward is the expected maximal reward paid to a stake - pool. The sum of all these rewards cannot exceed the total available reward, - let $Pool$ be the set of active stake pools: - - \begin{equation*} - \forall R \in Coin:\sum_{p \in Pools} \floor*{\frac{R}{1+p_{a_{0}}}\cdot - \left( - p_{\sigma'}+p_{p'}\cdotp_{a_{0}}\cdot\frac{p_{\sigma'}-p_{p'}\cdot\frac{p_{z_{0}}-p_{\sigma'}}{p_{z_{0}}}}{p_{z_{0}}} - \right)}\leq R - \end{equation*} -\end{property} - -\begin{property}[\textbf{Actual Reward}] - \label{prop:actual-reward} - - The actual reward for a stake pool in an epoch is calculated by the function - $\fun{poolReward}$. The actual reward per stake pool is non-negative and - bounded by the maximal reward for the stake pool, with $\overline{p}$ being - the relation $\frac{n}{\max(1, \overline{N})}$ of the number of produced - blocks $n$ of one pool to the total number $\overline{N}$ of produced blocks - in an epoch and $maxP$ being the maximal reward for the stake pool. This gives - us: - - \begin{equation*} - \forall \gamma \in [0,1] \implies 0\leq \floor*{\overline{p}\cdot maxP} \leq maxP - \end{equation*} -\end{property} - -The two functions $\fun{r_{operator}}$ and $\fun{r_{member}}$ are closely related as -they both split the reward between the pool leader and the members. - -\begin{property}[\textbf{Reward Splitting}] - \label{prop:reward-splitting} - - The reward splitting is done via $\fun{r_{operator}}$ and $\fun{r_{member}}$, i.e., - a split between the pool leader and the pool members using the pool cost $c$ - and the pool margin $m$. Therefore the property relates the total reward - $\hat{f}$ to the split rewards in the following way: - - \begin{multline*} - \forall m\in [0,1], c\in Coin \implies c + \floor*{(\hat{f} - c)\cdot (m + - (1 - m)) \cdot \frac{s}{\sigma}} + \sum_{j}\floor*{(\hat{f} - - c)\cdot(1-m)\cdot\frac{t_{j}}{\sigma}} \leq \hat{f} - \end{multline*} - -\end{property} - -\clearpage - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "ledger-spec" -%%% End: diff --git a/eras/shelley/formal-spec/protocol-parameters.tex b/eras/shelley/formal-spec/protocol-parameters.tex deleted file mode 100644 index 3af33a8606b..00000000000 --- a/eras/shelley/formal-spec/protocol-parameters.tex +++ /dev/null @@ -1,240 +0,0 @@ -\section{Protocol Parameters} -\label{sec:protocol-parameters} - -\subsection{Updatable Protocol Parameters} -\label{sec:updatable-protocol-parameters} - -The Shelley protocol parameters are listed in Figure~\ref{fig:defs:protocol-parameters}. -Some of the Shelley protocol parameters are common to the Byron era, -specifically, the common ones are $\var{a}$, $\var{b}$, $\var{maxTxSize}$, and -$\var{maxHeaderSize}$ (see the document~\cite{byron_ledger_spec}). - -The type $\Ppm$ represents the names of the protocol parameters, -and $\mathsf{T_{ppm}}$ is the type of the protocol parameter $\var{ppm}$. -The type $\PParams$ is a finite map containing all the Shelley parameters, -indexed by their names. -We will explain the significance of each parameter as it comes up in -the calculations used in transition rules. -The type $\PParamsUpdate$ is similar to $\PParams$, but is -a partial mapping of the protocol parameters. It is used in the update -system explained in Section~\ref{sec:update}. - -The type $\Coin$ is defined as an alias for the integers. -Negative values will not be allowed in UTxO outputs or reward accounts, -and $\Z$ is only chosen over $\N$ for its additive inverses. - -Some helper functions are defined in Figure~\ref{fig:defs:protocol-parameters-helpers}. -The $\fun{minfee}$ function calculates the minimum fee that must be paid by a transaction. -This value depends on the protocol parameters and the size of the transaction. - -Two time related types are introduced, $\Epoch$ and $\type{Duration}$. -A $\type{Duration}$ is the difference between two slots, as given by $\slotminus{}{}$. - -Lastly, there are two functions, $\fun{epoch}$ and $\fun{firstSlot}$ for converting -between epochs and slots and one function $\fun{kesPeriod}$ for getting the cycle of a slot. -Note that $\Slot$ is an abstract type, while the constants are integers. -We use multiplication and division symbols on these distinct types -without being explicit about the types and conversion. - -\begin{figure*}[htb] - \emph{Abstract types} - % - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \var{p} & \Ppm & \text{protocol parameter}\\ - \var{dur} & \Duration & \text{difference between slots}\\ - \var{epoch} & \Epoch & \text{epoch} \\ - \var{kesPeriod} & \KESPeriod & \text{KES period} \\ - \end{array} - \end{equation*} - % - \emph{Derived types} - % - \begin{equation*} - \begin{array}{r@{~\in~}l@{\qquad=\qquad}lr} - \var{pp} - & \PParams - & \Ppm \to \mathsf{T_{ppm}} - & \text{protocol parameters} - \\ - \var{ppup} - & \PParamsUpdate - & \Ppm \mapsto \mathsf{T_{ppm}} - & \text{protocol parameter update} - \\ - \var{coin} - & \Coin - & \Z - & \text{unit of value} - \\ - \var{pv} - & \ProtVer - & \N\times\N - & \text{protocol version} - \end{array} - \end{equation*} - % - \emph{Protocol Parameters} - % - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \var{a} \mapsto \Z & \PParams & \text{min fee factor}\\ - \var{b} \mapsto \Z & \PParams & \text{min fee constant}\\ - \var{maxBlockSize} \mapsto \N & \PParams & \text{max block body size}\\ - \var{maxTxSize} \mapsto \N & \PParams & \text{max transaction size}\\ - \var{maxHeaderSize} \mapsto \N & \PParams & \text{max block header size}\\ - \var{keyDeposit} \mapsto \Coin & \PParams & \text{stake key deposit}\\ - \var{poolDeposit} \mapsto \Coin & \PParams & \text{stake pool deposit}\\ - \var{E_{max}} \mapsto \Epoch & \PParams & \text{epoch bound on pool retirement}\\ - \var{n_{opt}} \mapsto \Npos & \PParams & \text{desired number of pools}\\ - \var{a_0} \mapsto \nonnegReals & \PParams & \text{pool influence}\\ - \tau \mapsto \unitInterval & \PParams & \text{treasury expansion}\\ - \rho \mapsto \unitInterval & \PParams & \text{monetary expansion}\\ - \var{d} \mapsto \{0,~1/100,~2/100,~\ldots,~1\} & \PParams & \text{decentralization parameter}\\ - \var{extraEntropy} \mapsto \Seed & \PParams & \text{extra entropy}\\ - \var{pv} \mapsto \ProtVer & \PParams & \text{protocol version}\\ - \var{minUTxOValue} \mapsto \Coin & \PParams & \text{minimum allowed value of a new \TxOut}\\ - \var{minPoolCost} \mapsto \Coin & \PParams & \text{minimum allowed stake pool cost}\\ - \end{array} - \end{equation*} - % - \emph{Accessor Functions} - % - \begin{center} - \fun{a}, - \fun{b}, - \fun{maxBlockSize}, - \fun{maxTxSize}, - \fun{maxHeaderSize}, - \fun{keyDeposit}, - \fun{poolDeposit}, - \fun{emax}, - \fun{nopt}, - \fun{influence}, - \fun{tau}, - \fun{rho}, - \fun{d}, - \fun{extraEntropy}, - \fun{pv}, - \fun{minUTxOValue}, - \fun{minPoolCost} - \end{center} - % - \emph{Abstract Functions} - % - \begin{equation*} - \begin{array}{r@{~\in~}lr} - (\slotminus{}{}) & \Slot \to \Slot \to \Duration - & \text{duration between slots} - \end{array} - \end{equation*} - % - \caption{Definitions Used in Protocol Parameters} - \label{fig:defs:protocol-parameters} -\end{figure*} - -\subsection{Global Constants} -\label{sec:global-constants} - -In additon to the updatable protocol parameters defined in -Section~\ref{sec:updatable-protocol-parameters}, -there are ten parameters which cannot be changed by the update -system in Section~\ref{sec:update}. -We call these the global constants, as changing these values can only -be done by updating the software, i.e. a soft or a hard fork. -For the software update mechanism, see Section~\ref{sec:software-updates}. - -The constants $\SlotsPerEpoch$ and $\SlotsPerKESPeriod$ -represent the number of slots in an epoch/KES period (for a brief explanation -of a KES cryptography, see Section \ref{sec:crypto-primitives-shelley}). The KES period is defined -as a duration of slots which determines how often the KES private key must be evolved. The -KES private key must be evolved once at the start of each new KES period. The duration of the -KES period is determined by $\SlotsPerKESPeriod$. Any given KES key can be evolved up -to $\MaxKESEvo$-many times before a new operational certificate must be issued. -The constants $\StabilityWindow$ and $\RandomnessStabilisationWindow$ concern the chain stability. -The maximum number of time a KES key can be evolved before a pool operator -must create a new operational certificate is given by $\MaxKESEvo$. -\textbf{Note that if } $\MaxKESEvo$ -\textbf{is changed, the KES signature format may have to change as well.} - -The constant $\Quorum$ determines the quorum amount needed for votes on the -protocol parameter updates and the application version updates. - -The constant $\MaxMajorPV$ provides a mechanism for halting outdated nodes. -Once the major component of the protocol version in the protocol parameters -exceeds this value, every subsequent block is invalid. -See Figures~\ref{fig:funcs:chain-helper} and~\ref{fig:rules:chain}. - -The constant $\MaxLovelaceSupply$ gives the total number of lovelace in the system, -which is used in the reward calculation. -It is always equal to the sum of the values in the UTxO, plus the sum of the -values in the reward accounts, plus the deposit pot, plus the fee pot, -plus the treasury and the reserves. - -The constant $\ActiveSlotCoeff$ is the value $f$ from the -Praos paper \cite{ouroboros_praos}. - -Lastly, $\NetworkId$ determines what network, either mainnet or testnet, is expected. -This value will also appear inside every address, and transactions -containing addresses with an unexpected network ID are rejected. - -\begin{figure*}[htb] - \emph{Global Constants} - % - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \SlotsPerEpoch & \N & \text{- slots per epoch} \\ - \SlotsPerKESPeriod & \N & \text{- slots per KES period} \\ - \StabilityWindow & \Duration & - \begin{array}{r} - \text{- window size for chain growth} \\ - \text{guarantees, see}\text{ in \cite{ouroboros_praos}} - \end{array} \\ - \RandomnessStabilisationWindow & \Duration & - \begin{array}{r} - \text{- duration needed for epoch}\\ - \text{nonce stabilization}\\ - \end{array} \\ - \MaxKESEvo & \N & \text{- maximum KES key evolutions}\\ - \Quorum & \N & \text{- quorum for update system votes}\\ - \MaxMajorPV & \N & \text{- all blocks are invalid after this value}\\ - \MaxLovelaceSupply & \Coin & \text{- total lovelace in the system}\\ - \ActiveSlotCoeff & (0, 1] & \text{ - }f\text{ in \cite{ouroboros_praos}}\\ - \NetworkId & \Network & \text{- the network, mainnet or testnet}\\ - \end{array} - \end{equation*} - % - \caption{Global Constants} - \label{fig:defs:global-constants} -\end{figure*} - -\begin{figure*}[htb] - \emph{Helper Functions} - % - \begin{align*} - \fun{minfee} & \in \PParams \to \Tx \to \Coin & \text{minimum fee}\\ - \fun{minfee} & ~\var{pp}~\var{tx} = - (\fun{a}~\var{pp}) \cdot \fun{txSize}~\var{tx} + (\fun{b}~\var{pp}) - \\ - \\ - \fun{epoch} & \in ~ \Slot \to \Epoch & \text{epoch of a slot} - \\ - \fun{epoch} & ~\var{slot} = \var{slot}~/~\SlotsPerEpoch - \\ - \\ - \fun{firstSlot} & \in ~ \Epoch \to \Slot - & \text{first slot of an epoch} - \\ - \fun{firstSlot} & ~\var{e} = \var{e}~\cdot~\SlotsPerEpoch - \\ - \\ - \fun{kesPeriod} & \in ~ \Slot \to \KESPeriod & \text{KES period of a slot} - \\ - \fun{kesPeriod} & ~\var{slot} = \var{slot}~/~\SlotsPerKESPeriod - \end{align*} - % - \caption{Helper functions for the Protocol Parameters} - \label{fig:defs:protocol-parameters-helpers} -\end{figure*} - -\clearpage diff --git a/eras/shelley/formal-spec/references.bib b/eras/shelley/formal-spec/references.bib deleted file mode 100644 index bfec7fb59a9..00000000000 --- a/eras/shelley/formal-spec/references.bib +++ /dev/null @@ -1,342 +0,0 @@ -@misc{small_step_semantics, - label = {FM-TR-2018-01}, - author = {{IOHK Formal Methods Team}}, - title = {{Small Step Semantics for Cardano, IOHK Technical Report FM-TR-2018-01}}, - year = {2018}, - url = {https://github.com/input-output-hk/cardano-chain/blob/master/specs/semantics/latex/small-step-semantics.tex}, -} - - -@misc{delegation_design, - label = {SL-D1}, - author = {{IOHK Formal Methods Team}}, - title = {{Design Specification for Delegation and Incentives in Cardano, IOHK Deliverable SL-D1}}, - year = {2018}, - url = {https://github.com/intersectmbo/cardano-ledger/releases/latest/download/shelley-delegation.pdf} -} - -@misc{byron_ledger_spec, - label = {BL-D1}, - author = {{IOHK Formal Methods Team}}, - title = {{Byron Ledger Specification, IOHK Deliverable BL-D1}}, - year = {2019}, - url = {https://github.com/intersectmbo/cardano-ledger/tree/master/docs/}, -} - -@misc{byron_chain_spec, - label = {BC-D1}, - author = {{IOHK Formal Methods Team}}, - title = {{Byron Blockchain Specification, IOHK Deliverable BC-D1}}, - year = {2019}, - url = {https://github.com/intersectmbo/cardano-ledger/tree/master/docs/}, -} - -@article{chimeric, - author = {Joachim Zahnentferner}, - title = {Chimeric Ledgers: Translating and Unifying UTXO-based and Account-based Cryptocurrencies}, - journal = {Cryptology ePrint Archive, Report 2018/262}, - year = {2018}, - url = {https://eprint.iacr.org/2018/262}, -} - -@article{utxo_scripts, - author = {Joachim Zahnentferner}, - title = {An Abstract Model of UTxO-based Cryptocurrencies with Scripts}, - journal = {Cryptology ePrint Archive, Report 2018/469}, - year = {2018}, - url = {https://eprint.iacr.org/2018/469}, -} - -@article{multi_currency, - author = {Joachim Zahnentferner}, - title = {Multi-Currency Ledgers}, - journal = {??}, - year = {2018}, -} - -@article{shelley_consensus, - label = {SC-DX}, - author = {{IOHK Formal Methods Team}}, - title = {{?? - Shelley Consensus, IOHK Deliverable SC-DX}}, - year = {TODO}, -} - -@misc{shelley_spec, - label = {SL-D5}, - author = {{IOHK Formal Methods Team}}, - title = {{A Formal Specification of the Cardano Ledger, IOHK Deliverable SL-D5}}, - year = {2019}, - url = {https://github.com/intersectmbo/cardano-ledger/tree/master/eras/shelley/formal-spec/shelley-ledger.tex} -} - -@misc{shelley_multisig, - label = {SL-D3}, - author = {{IOHK Formal Methods Team}}, - title = {{A Formal Specification of a Multi-Signature Scheme using Scripts, IOHK Deliverable SL-D3}}, - year = {2019}, -} - -@misc{ouroboros, - label = {Ouroboros-Protocol}, - author = {Aggelos Kiayias and Alexander Russell and Bernardo David and Roman Oliynykov}, - title = {Ouroboros: A Provably Secure Proof-of-Stake Blockchain Protocol}, - howpublished = {Cryptology ePrint Archive, Report 2016/889}, - year = {2016}, - note = {\url{http://eprint.iacr.org/2016/889}}, -} - -@inproceedings{chakravarty2020extended, - title={The extended UTXO model}, - author={Chakravarty, Manuel MT and Chapman, James and MacKenzie, Kenneth and Melkonian, Orestis and Jones, Michael Peyton and Wadler, Philip}, - booktitle={International Conference on Financial Cryptography and Data Security}, - pages={525--539}, - year={2020}, - organization={Springer}, - url={https://iohk.io/en/research/library/papers/the-extended-utxo-model/} -} - -@conference{ouroboros_classic, - author = {Aggelos Kiayias and Alexander Russell and Bernardo David and Roman Oliynykov}, - title = {Ouroboros: A Provably Secure Proof-of-Stake Blockchain Protocol}, - booktitle = {Advances in Cryptology -- CRYPTO 2017}, - series = {Security and Cryptology}, - volume = {10401}, - year = {2017}, - publisher = {Springer International Publishing}, - url = {https://eprint.iacr.org/2016/889}, - doi = {10.1007/978-3-319-63688-7}, -} - -@article{ouroboros_praos, - title={Ouroboros Praos: An adaptively-secure, semi-synchronous proof-of-stake protocol}, - author={Bernardo Machado David and Peter Gazi and Aggelos Kiayias and Alexander Russell}, - journal={IACR Cryptology ePrint Archive}, - year={2017}, - volume={2017}, - pages={573} -} - -@article{utxo_accounting, - author = {Joachim Zahnentferner}, - title = {Chimeric Ledgers: Translating and Unifying UTXO-based and Account-based Cryptocurrencies}, - journal = {Cryptology ePrint Archive, Report 2018/262}, - year = {2018}, - url = {https://eprint.iacr.org/2018/262}, -} - -@misc{bip32, - author = {Pieter Wuille}, - title = {Hierarchical Deterministic Wallets}, - year = {2012}, - month = {February}, - url = {https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki}, - note = {BIP-32}, -} - -@misc{bkks2018, - Author = {Lars Bruenjes and Aggelos Kiayias and Elias Koutsoupias and Aikaterini-Panagiota Stouka}, - Date-Added = {2018-08-05 08:14:11 +0000}, - Date-Modified = {2018-08-07 09:48:36 +0000}, - Howpublished = {Computer Science and Game Theory (cs.GT) arXiv:1807.11218}, - Title = {Reward Sharing Schemes for Stake Pools}, - Year = {2018}} - -@misc{cryptoeprint:2001:034, - author = {Tal Malkin and Daniele Micciancio and Sara Miner}, - title = {Composition and Efficiency Tradeoffs for Forward-Secure Digital Signatures}, - howpublished = {Cryptology ePrint Archive, Report 2001/034}, - year = {2001}, - note = {\url{https://eprint.iacr.org/2001/034}}, -} - -@article{DBLP:journals/jar/AkbarpourP10, - author = {Behzad Akbarpour and - Lawrence C. Paulson}, - title = {MetiTarski: An Automatic Theorem Prover for Real-Valued Special Functions}, - journal = {J. Autom. Reasoning}, - volume = {44}, - number = {3}, - pages = {175--205}, - year = {2010}, - url = {https://doi.org/10.1007/s10817-009-9149-2}, - doi = {10.1007/s10817-009-9149-2}, - timestamp = {Wed, 14 Nov 2018 10:38:36 +0100}, - biburl = {https://dblp.org/rec/bib/journals/jar/AkbarpourP10}, - bibsource = {dblp computer science bibliography, https://dblp.org} - } - -@article{DBLP:journals/tcs/Escardo96, - author = {Mart{\'{\i}}n H{\"{o}}tzel Escard{\'{o}}}, - title = {{PCF} Extended with Real Numbers}, - journal = {Theor. Comput. Sci.}, - volume = {162}, - number = {1}, - pages = {79--115}, - year = {1996}, - url = {https://doi.org/10.1016/0304-3975(95)00250-2}, - doi = {10.1016/0304-3975(95)00250-2}, - timestamp = {Sun, 28 May 2017 13:20:09 +0200}, - biburl = {https://dblp.org/rec/bib/journals/tcs/Escardo96}, -} - -@techreport{rfcCBOR, - author = {C. Bormann}, - title = {Concise {B}inary {O}bject {R}epresentation ({CBOR})}, - howpublished = {Internet Requests for Comments}, - type = {RFC}, - number = 7049, - year = {2013}, - month = {10}, - issn = {2070-1721}, - publisher = {RFC Editor}, - institution = {RFC Editor}, - url = {https://tools.ietf.org/html/rfc7049} -} - -@techreport{rfcCDDL, - author = {H. Birkholz}, - title = {Concise {D}ata {D}efinition {L}anguage ({CDDL})}, - howpublished = {Internet Requests for Comments}, - type = {RFC}, - number = 8610, - year = {2019}, - month = {6}, - issn = {2070-1721}, - publisher = {RFC Editor}, - institution = {RFC Editor}, - url = {https://tools.ietf.org/html/rfc8610} -} - -@techreport{rfcBLAKE2, - author = {M-J. Saarinen}, - title = {The {BLAKE2} Cryptographic Hash and Message Authentication Code ({MAC})}, - howpublished = {Internet Requests for Comments}, - type = {RFC}, - number = 7693, - year = {2015}, - month = {11}, - issn = {2070-1721}, - publisher = {RFC Editor}, - institution = {RFC Editor}, - url = {https://tools.ietf.org/html/rfc7693} -} - -@techreport{rfcEdDSA, - author = {S. Josefsson}, - title = {Edwards-{C}urve {D}igital {S}ignature {A}lgorithm ({EdDSA})}, - howpublished = {Internet Requests for Comments}, - type = {RFC}, - number = 8032, - year = {2017}, - month = {1}, - issn = {2070-1721}, - publisher = {RFC Editor}, - institution = {RFC Editor}, - url = {https://tools.ietf.org/html/rfc8032} -} - -@techreport{rfcVRFDraft, - author = {S. Goldberg}, - title = {Verifiable {R}andom {F}unctions ({VRFs}), draft-irtf-cfrg-vrf-06}, - howpublished = {Internet Requests for Comments}, - type = {RFC}, - number = {draft}, - year = {2020}, - month = {2}, - issn = {2070-1721}, - publisher = {RFC Editor}, - institution = {RFC Editor}, - url = {https://tools.ietf.org/html/draft-irtf-cfrg-vrf-06} -} - -@article{musig2, - author = {Jonas Nick and - Tim Ruffing and - Yannick Seurin}, - title = {MuSig2: Simple Two-Round Schnorr Multi-Signatures}, - journal = {{IACR} Cryptol. ePrint Arch.}, - volume = {2020}, - pages = {1261}, - year = {2020}, - url = {https://eprint.iacr.org/2020/1261}, - timestamp = {Fri, 30 Oct 2020 16:40:33 +0100}, - biburl = {https://dblp.org/rec/journals/iacr/NickRS20.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} -} - -@article{musig, - author = {Gregory Maxwell and - Andrew Poelstra and - Yannick Seurin and - Pieter Wuille}, - title = {Simple Schnorr multi-signatures with applications to Bitcoin}, - journal = {Des. Codes Cryptogr.}, - volume = {87}, - number = {9}, - pages = {2139--2164}, - year = {2019}, - url = {https://doi.org/10.1007/s10623-019-00608-x}, - doi = {10.1007/s10623-019-00608-x}, - timestamp = {Mon, 23 Sep 2019 17:26:44 +0200}, - biburl = {https://dblp.org/rec/journals/dcc/MaxwellPSW19.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} -} - -@inproceedings{pixel, - author = {Manu Drijvers and - Sergey Gorbunov and - Gregory Neven and - Hoeteck Wee}, - editor = {Srdjan Capkun and - Franziska Roesner}, - title = {Pixel: Multi-signatures for Consensus}, - booktitle = {29th {USENIX} Security Symposium, {USENIX} Security 2020, August 12-14, - 2020}, - pages = {2093--2110}, - publisher = {{USENIX} Association}, - year = {2020}, - url = {https://www.usenix.org/conference/usenixsecurity20/presentation/drijvers}, - timestamp = {Fri, 29 Jan 2021 22:08:55 +0100}, - biburl = {https://dblp.org/rec/conf/uss/Drijvers0NW20.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} -} - -@inproceedings{musigBoneh, - author = {Dan Boneh and - Manu Drijvers and - Gregory Neven}, - editor = {Thomas Peyrin and - Steven D. Galbraith}, - title = {Compact Multi-signatures for Smaller Blockchains}, - booktitle = {Advances in Cryptology - {ASIACRYPT} 2018 - 24th International Conference - on the Theory and Application of Cryptology and Information Security, - Brisbane, QLD, Australia, December 2-6, 2018, Proceedings, Part {II}}, - series = {Lecture Notes in Computer Science}, - volume = {11273}, - pages = {435--464}, - publisher = {Springer}, - year = {2018}, - url = {https://doi.org/10.1007/978-3-030-03329-3\_15}, - doi = {10.1007/978-3-030-03329-3\_15}, - timestamp = {Tue, 14 May 2019 10:00:40 +0200}, - biburl = {https://dblp.org/rec/conf/asiacrypt/BonehDN18.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} -} - -@inproceedings{musigs, -author = {Micali, Silvio and Ohta, Kazuo and Reyzin, Leonid}, -title = {Accountable-Subgroup Multisignatures: Extended Abstract}, -year = {2001}, -isbn = {1581133855}, -publisher = {Association for Computing Machinery}, -address = {New York, NY, USA}, -url = {https://doi.org/10.1145/501983.502017}, -doi = {10.1145/501983.502017}, -abstract = {Formal models and security proofs are especially important for multisignatures: in contrast to threshold signatures, no precise definitions were ever provided for such schemes, and some proposals were subsequently broken.In this paper, we formalize and implement a variant of multi-signature schemes, Accountable-Subgroup Multisignatures (ASM). In essence, ASM schemes enable any subgroup, S, of a given group, G, of potential signers, to sign efficiently a message M so that the signature provably reveals the identities of the signers in S to any verifier.Specifically, we provide:The first formal model of security for multisignature schemes that explicitly includes key generation (without relying on trusted third parties);A protocol, based on Schnorr's signature scheme [33], that is both provable and efficient:Only three rounds of communication are required per signature.The signing time per signer is the same as for the single-signer Schnorr scheme, regardless of the number of signers.The verification time is only slightly greater than that for the single-signer Schnorr scheme.The signature length is the same as for the single signer Schnorr scheme, regardless of the number of signers.Our proof of security relies on random oracles and the hardness of the Discrete Log Problem.}, -booktitle = {Proceedings of the 8th ACM Conference on Computer and Communications Security}, -pages = {245-254}, -numpages = {10}, -keywords = {digital signature, multisignature}, -location = {Philadelphia, PA, USA}, -series = {CCS '01} -} diff --git a/eras/shelley/formal-spec/rules.dot b/eras/shelley/formal-spec/rules.dot deleted file mode 100644 index 218ac48bcfa..00000000000 --- a/eras/shelley/formal-spec/rules.dot +++ /dev/null @@ -1,50 +0,0 @@ -digraph STS { - CHAIN -> BBODY - CHAIN -> PRTCL - CHAIN -> TICK - CHAIN -> TICKN - TICKN -> PRTCL [style=dotted] - - BBODY -> PRTCL [style=dotted] - BBODY -> TICK [style=dotted] - PRTCL -> TICK [style=dotted] - - UTXOW -> UTXO - UTXOW -> DELEGS [style=dotted] - UTXO -> PPUP - - DELEGS -> DELPL - DELEGS -> DELEGS - DELPL -> DELEGS [style=dotted] - - DELPL -> DELEG - DELPL -> POOL - - LEDGER -> DELEGS - LEDGER -> UTXOW - - LEDGERS -> LEDGER - LEDGERS -> LEDGERS - LEDGER -> LEDGERS [style=dotted] - - EPOCH -> SNAP - EPOCH -> POOLREAP - EPOCH -> NEWPP - NEWPP -> POOLREAP [style=dotted] - NEWPP -> SNAP [style=dotted] - - NEWEPOCH -> EPOCH - NEWEPOCH -> MIR - MIR -> EPOCH [style=dotted] - - TICK -> RUPD - TICK -> NEWEPOCH - RUPD -> NEWEPOCH [style=dotted] - - OVERLAY -> OCERT - - PRTCL -> UPDN - PRTCL -> OVERLAY - - BBODY -> LEDGERS -} diff --git a/eras/shelley/formal-spec/rules.pdf b/eras/shelley/formal-spec/rules.pdf deleted file mode 100644 index 5a9060fbf6b7e760ec451c5ab488abbe2c5deeed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12644 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 diff --git a/eras/shelley/formal-spec/scripts-multicurrency.tex b/eras/shelley/formal-spec/scripts-multicurrency.tex deleted file mode 100644 index ce1621600a6..00000000000 --- a/eras/shelley/formal-spec/scripts-multicurrency.tex +++ /dev/null @@ -1,559 +0,0 @@ -\documentclass[11pt,a4paper]{article} -\usepackage[margin=2.5cm]{geometry} -\usepackage{microtype} -\usepackage{mathpazo} % nice fonts -\usepackage{amsmath} -\usepackage{amssymb} -\usepackage{latexsym} -\usepackage{mathtools} -\usepackage{stmaryrd} -\usepackage{extarrows} -\usepackage{slashed} -\usepackage[colon]{natbib} -\usepackage[colorinlistoftodos,prependcaption,textsize=tiny]{todonotes} -\usepackage[unicode=true,pdftex,pdfa]{hyperref} -\usepackage[capitalise,noabbrev,nameinlink]{cleveref} -\hypersetup{ - pdftitle={A Formal Specification of a UTxO Ledger with Scripts and Multi-Currency}, - breaklinks=true, - colorlinks=false, - linkcolor={blue}, - citecolor={blue}, - urlcolor={blue}, - linkbordercolor={white}, - citebordercolor={white}, - urlbordercolor={white} -} -\usepackage{float} -\floatstyle{boxed} -\restylefloat{figure} - -%% -%% Package `semantic` can be used for writing inference rules. -%% -\usepackage{semantic} -%% Setup for the semantic package -\setpremisesspace{20pt} - -\DeclareMathOperator{\dom}{dom} -\DeclareMathOperator{\range}{range} - -%% -%% TODO: we should package this -%% -\newcommand{\powerset}[1]{\mathbb{P}~#1} -\newcommand{\restrictdom}{\lhd} -\newcommand{\subtractdom}{\mathbin{\slashed{\restrictdom}}} -\newcommand{\restrictrange}{\rhd} -\newcommand{\union}{\cup} -\newcommand{\unionoverride}{\mathbin{\underrightarrow\cup}} -\newcommand{\uniondistinct}{\uplus} -\newcommand{\var}[1]{\mathit{#1}} -\newcommand{\fun}[1]{\mathsf{#1}} -\newcommand{\type}[1]{\mathsf{#1}} -\newcommand{\signed}[2]{\llbracket #1 \rrbracket_{#2}} -\newcommand{\size}[1]{\left| #1 \right|} -\newcommand{\trans}[2]{\xlongrightarrow[\textsc{#1}]{#2}} -\newcommand{\seqof}[1]{#1^{*}} -\newcommand{\nextdef}{\\[1em]} - -%% -%% Types -%% -\newcommand{\Bool}{\type{Bool}} -\newcommand{\Slot}{\type{Slot}} -\newcommand{\Script}{\type{Script}} -\newcommand{\TxId}{\type{TxId}} -\newcommand{\Ix}{\type{Ix}} -\newcommand{\Addr}{\type{Addr}} -\newcommand{\Currency}{\type{Currency}} -\newcommand{\Quantity}{\type{Quantity}} -\newcommand{\Value}{\type{Value}} -\newcommand{\TxIn}{\type{TxIn}} -\newcommand{\OutRef}{\type{OutRef}} -\newcommand{\TxOut}{\type{TxOut}} -\newcommand{\UTxO}{\type{UTxO}} -\newcommand{\Create}{\type{Create}} -\newcommand{\Forge}{\type{Forge}} -\newcommand{\TxBody}{\type{TxBody}} -\newcommand{\Tx}{\type{Tx}} - -%% -% Scripts -%% -\newcommand{\ScriptEval}[1]{[\![ #1 ]\!]} - -%% -%% Functions -%% -\newcommand{\scriptValidate}[3]{\fun{scriptValidate} ~ \var{#1} ~ \var{#2} ~ \var{#3}} -\newcommand{\txid}[1]{\fun{txid}\ \var{#1}} -\newcommand{\inputAddr}[1]{\fun{inputAddr}\ \var{#1}} -\newcommand{\txins}[1]{\fun{txins}\ \var{#1}} -\newcommand{\txouts}[1]{\fun{txouts}\ \var{#1}} -\newcommand{\hash}[1]{\fun{hash}\ \var{#1}} -\newcommand{\forged}[1]{\fun{forged}\ \var{#1}} -\newcommand{\forgeReedemers}[1]{\fun{forgeReedemers}\ \var{#1}} -\newcommand{\fee}[1]{\fun{fee}\ \var{#1}} -\newcommand{\created}[1]{\fun{created}\ \var{#1}} -\newcommand{\outRefs}[1]{\fun{outRefs}\ \var{#1}} - -\begin{document} - -\title{A Formal Specification of a \\ - UTxO Ledger with Scripts and Multi-Currency} - -\author{} - -%\date{} - -\maketitle - -\begin{abstract} -This documents specifies the rules for a multi-currency UTxO ledger with scripts, -as described in \cite{multi_currency} and \cite{utxo_scripts}. -\end{abstract} - -\tableofcontents -\listoffigures - -\section{Introduction} - -A model of a UTxO ledger utilizing an abstract authorization mechanism is -described in \cite{utxo_scripts}. The authorization mechanism involves a -scripting language, which we leave unspecified and refer to as $\Script$. -This model is an extension of the model described in \cite{chimeric}, -which includes account based transactions in addition to UTxO transactions. -We do not include account transactions in this specification. - -The model described in \cite{utxo_scripts} was further generalized in -\cite{multi_currency} to support using multiple currencies on the same ledger. - -In what follows, we describe the multi-currency UTxO ledger model using -mostly set theory, we state validation rules that determine whether a transaction -is valid for a given ledger state and finally we define the state transformation -that a valid transaction has on the state. - -\section{Scripts} - -We use an abstract scripting language $\Script$ to generalize authorization -mechanisms such as pay-to-pubkey-hash. -In pay-to-pubkey-hash, an address is the hash of a public key. -UTxO held by that address are authorized by providing the public key -and a digital signature. -Similarly, in the generalized script model, an address -is the hash of a verification script and the redeemer script -plays the role of the digital signature. -UTxO held by script addresses are authorized by providing both the validator -and redeemer script. Analogously to checking a digital signature, -the authorization succeeds if the redeemer scripts provides evidence to -that causes the validator script to return true. -This is made precise in \cref{fig:scripts}. - -\todo[inline]{These scripts probably also need to take some of the data -from the validating transaction} - -\begin{figure} -\emph{Scripts} -% -\begin{equation*} -\begin{array}{r@{~\in~}l@{~,~}r@{~:~}l} - \var{validator} -& \Script -& \ScriptEval{validator} -& \type{LedgerState} \mapsto \type{R} \mapsto \Bool -\\ - \var{redeemer} -& \Script -& \ScriptEval{redeemer} -& \type{LedgerState} \mapsto \type{R} -\end{array} -\end{equation*} -~ ~ ~ \text{where $\ScriptEval{script}$ is the pure function denoted -by $script\in\Script$,} - -~ ~ ~ \text{and $\type{R}$ is an arbitrary type, but must be the -same for each validator/redeemer pair.} -\\ -\\ -\emph{Script Operations} -\begin{align*} -& \fun{scriptValidate} \in - \type{LedgerState} \mapsto \Script \mapsto \Script \mapsto \Bool \\ -& \scriptValidate{st}{validator}{redeemer} = -\ScriptEval{validator} ~ state \left(\ScriptEval{redeemer} state\right) -\end{align*} - -\caption{Scripts} -\label{fig:scripts} -\end{figure} -\section{Multi-Currency} - -Multi-currency is explained in detail in \cite{multi_currency}, but here we give some -brief details. The main idea is to replace the currency quantity type with a (finite) -mapping from currency names to quantity. The understanding is that currencies not in -a given mapping are assumed to have value 0 (the additive identity). Previous operations -on the quantity type, such as addition and less-than, are now performed coordinate-wise -on the new type. We write $\vec{0}$ for the empty map/value. - -\section{Basic Types and Operations} - -The basic types and operations for this specification are given -in \cref{fig:basic_definitions}. Transaction inputs are references to -previous unspent outputs, together with the scripts needed to authorize it. -Outputs are the pair of an address (the hash of a validator script) and a -multi-currency value. A transaction is a collection of inputs and outputs, -together with other data for creating new currencies, minting currency, -and paying fees. Currency is authorized to be minted using the same -mechanism of validator and redeemer scripts. -Other needed operations on transactions and UTxO are given in -\cref{fig:auxiliary_ops}. - -\begin{figure} - -\emph{Primitive types} -% -\begin{equation*} -\begin{array}{r@{~\in~}lr} - \var{txid} -& \TxId -& \text{transaction id} -\\ - ix -& \Ix -& \text{index} -\\ - \var{addr} -& Addr -& \text{address} -\\ - curr -& \Currency -& \text{currency identifier} -\\ - qty -& \Quantity -& \text{currency quantity} -\end{array} -\end{equation*} - -% -\emph{Derived types} -% -\begin{equation*} -\begin{array}{r@{~=~}lc@{}r@{~\in~}l} - \Value -& \Currency \mapsto \Quantity -& -& (\var{curr}, \var{qty}) -& \Value -\\ - \TxIn -& \TxId \times \Ix \times \Script \times \Script -& -& (\var{txid}, \var{ix}, \var{validator}, \var{redeemer}) -& \TxIn -\\ - \OutRef -& \TxId \times \Ix -& -& (\var{txid}, \var{ix}) -& \OutRef -\\ - \TxOut -& \Addr \times \Value -& -& (\var{addr}, v) -& \TxOut -\\ - \UTxO -& \OutRef \mapsto \TxOut -& -& \var{outRef} \mapsto \var{txout} \in \var{utxo} -& \UTxO -\\ - \Create -& \type{Optional} (\Currency \times \Script) -& -& (\var{currency}, \var{validator}) -& \Create -\\ - \Forge -& \Value \times (\Currency \mapsto \Script) -& -& (\var{value}, \var{curr} \mapsto \var{redeemer}) -& \Forge -\\ - \TxBody -& \powerset{\TxIn} \times (\Ix \mapsto \TxOut) -& -& (\var{txins}, \var{txouts}) -& \TxBody -\\ - \Tx -& \TxBody \times \Forge \times \Value \times \Create -& -& (\var{txbody}, \var{forge}, \var{fee}, \var{create}) -& \Tx -\end{array} -\end{equation*} -% -\emph{Functions} -% -\begin{equation*} -\begin{array}{lr} - \fun{txid} \in \Tx \to \TxId -& \text{compute transaction id} -\\ - \fun{hash} \in \Script \to \Addr -& \text{compute script address} -\end{array} -\end{equation*} - -\caption{Basic Definitions} -\label{fig:basic_definitions} -\end{figure} - - -\begin{figure} -\begin{align*} -& \fun{txins} \in \Tx \to \powerset{\TxIn} -& \text{transaction inputs} \\ -& \fun{txins} ~ ((\var{txins}, \_), \_, \_, \_) = \var{txins} -\\[1em] -& \fun{txouts} \in \Tx \to \UTxO -& \text{transaction outputs as UTxO} \\ -& \fun{txouts} ~ \var{tx} = - \left\{ (\fun{txid} ~ \var{tx}, \var{ix}) \mapsto \var{txout} ~ - \middle| \begin{array}{l@{~}c@{~}l} - ((\_, \var{txouts}),\_, \_, \_) & = & \var{tx} \\ - \var{ix} \mapsto \var{txout} & \in & \var{txouts} - \end{array} - \right\} -\\[1em] -& \fun{outRefs} \in \Tx \to \powerset({\TxId \times \Ix}) -& \text{Output References} \\ -& \fun{outRefs} ~ ((\var{txins}, \_), \_, \_, \_) -= \left\{ (id, ix) \middle| (id, ix, \_, \_) \in txins\right\} -\\[1em] -& \fun{balance} \in \UTxO \to \Value -& \text{UTxO balance} \\ -& \fun{balance} ~ utxo = \sum_{(\_ ~ \mapsto (\_, v)) \in \var{utxo}} v -\\[1em] -& \fun{created} \in \Tx \to \Create -& \text{created currency} \\ -& \fun{created} ~ (\_, \_, \_, create) = \var{create} -\\[1em] -& \fun{forged} \in \Tx \to \Value -& \text{the forged multi-currency} \\ -& \fun{forged} ~ (\_, (value, \_), \_, \_) = \var{value} -\\[1em] -& \fun{forgeReedemers} \in \Tx \to \Script -& \text{redeemer scripts for forging} \\ -& \fun{forgeReedemers} ~ ( \_, (\_, \var{redeemers}), \_, \_) = reedemers -\\[1em] -& \fun{fee} \in \Tx \to \Value -& \text{the fees in a transaction} \\ -& \fun{fee} ~ (\_, \_, fee, \_) = \var{fee} -\end{align*} -\caption{Operations on transactions and UTxOs} -\label{fig:auxiliary_ops} -\end{figure} - -\section{Validation and Ledger State} - -Validation is the determination that a transaction is permitted to be appended -to the ledger and hence manipulate the state of the ledger. -The data in the ledger state is given by \cref{fig:ledger_state}. -Though $\var{totalMinted}$ and $\var{slot}$ do not appear to be used in this specification, -they are important since they are used by the validator scripts. -For example, expirations can be implemented using $\var{slot}$ and a currency's -policy may depend on $\var{totalMinted}$. - -The ledger state is defined inductively. -The initial state is defined in \cref{fig:ledger_state}. -\todo{Should we hard code $\mathsf{ADA}$ and the corresponding -monetary policy into the initial ledger state?} -Given a transaction and a ledger state, first we check that -the transaction is valid. -To be valid, it must pass every test given in \cref{fig:validation_rules}. -Note that these rules depend only on the transaction and the ledger state. -If a transaction is valid for a given ledger state, it is then -applied using the state transformation rule given in \cref{fig:state_transition}. -\todo[inline]{There is a subtlety here involving in the order in which these rules are applied. -If the UTxO update rule (\cref{eq:utxo-update}) is applied to a transaction before the -currency creation rule (\cref{eq:create-currency}), -then a currency cannot be both created and forged in the same transaction.} - -Note that two rules from \cite{multi_currency} do not appear in \cref{fig:validation_rules}, -namely ``creator has enough money" and ``fee is non-negative". -In a model without account transactions, as we have here, we do not need additive -inverses and can assume that all quantities are nonnegative. - -\begin{figure} -\emph{Valid-Inputs} -% -\begin{equation*} -\outRefs{tx} \subseteq \dom \var{utxo} -\end{equation*} - -\emph{Preservation-of-Value} -% -\begin{equation*} -balance (\txouts tx) + (\fee tx) - = balance (\outRefs tx \restrictdom utxo) + (\forged tx) -\end{equation*} - -\emph{No-Double-Spend} -% -\begin{equation*} -\lvert \txins tx \rvert = \lvert \outRefs tx\rvert -\end{equation*} - -\emph{Scripts-Validate} -% -\begin{equation*} -\forall (\_, \_, validator, redeemer)\in(\txins tx), -~ \scriptValidate{state}{validator}{redeemer} -\end{equation*} - -\emph{Authorized} -% -\begin{equation*} -\begin{array}{c} - \forall i\in(\txins tx),\\ - i = (txid, ix, validator, \_) - \land ((txid, ix) \mapsto (addr, \_)) \in \var{utxo} - \land \hash validator = addr -\end{array} -\end{equation*} - -\emph{Forge-Obeys-Policy} -% -\begin{equation*} -\begin{array}{c} -\forall c\in(\forged tx), \\ -\exists policy, (c \mapsto policy) \in \var{currencies} \\ -\exists reedemer, (c \mapsto reedemer) \in \forgeReedemers tx \\ -\scriptValidate{state}{policy}{redeemer} -\end{array} -\end{equation*} - -\emph{Create-Only-New-Currencies} -% -\begin{equation*} -\created tx = (curr, policy), curr \notin \dom currencies -\end{equation*} - -\caption{Validation Rules} -\label{fig:validation_rules} -\end{figure} - - -\begin{figure} - -\emph{Ledger State} -% -\begin{equation*} -\begin{array}{r@{~\in~}lr} -utxo & \UTxO & \text{unspent outputs} -\\ -currencies & \Currency \mapsto \Script - & \text{currencies with policies} -\\ -totalMinted & \Value & \text{total currency minted} -\\ -slot & \Slot & \text{current slot} - -\end{array} -\end{equation*} -\emph{Initial Ledger State} -% -\begin{equation*} -\begin{array}{llllll} -utxo = \emptyset - & currencies = \emptyset - & totalMinted = \vec{0} - & slot = 0 -\end{array} -\end{equation*} - -\caption{Ledger State} -\label{fig:ledger_state} -\end{figure} - -\begin{figure} - \centering - \begin{equation}\label{eq:utxo-update} - \inference[update-UTxO] - { - \text{Valid-Inputs} & \text{Preservation-of-Value} & \text{No-Double-Spend} \\ - \text{Scripts-Validate} & \text{Authorized} & \text{Forge-Obeys-Policy} - } - { - \begin{array}{rcl} - \var{utxo} & & (\outRefs tx \subtractdom \var{utxo}) \union \txouts tx \\ - \var{totalMinted} & \trans{}{tx} & \var{totalMinted} + (\forged tx)\\ - \end{array} - } - \end{equation} - - \begin{equation}\label{eq:create-currency} - \inference[create-currency] - { - \text{Create-Only-New-Currencies} - } - { - \var{currencies} \trans{}{tx} \var{currencies} \union (\created tx) - } - \end{equation} - - \caption{State Transitions} - \label{fig:state_transition} -\end{figure} - -\section{Disabling Multi-Currency} - -If we want to disable multi-currency, we can remove the ``Forge Obeys Policy" rule and -add \cref{fig:only_ada_rule} -\begin{figure} -\emph{Only ADA} -% -\begin{equation*} -\created tx = (curr, policy), curr = \mathsf{ADA} -\end{equation*} - -\caption{Only ADA Rule} -\label{fig:only_ada_rule} -\end{figure} - -\todo[inline]{We need to think carefully about how to handle similar names, -like ``ada", ``Ada" and ``ADA". Allow only uppercase (lowercase)? No unicode?} - -\section{Disabling Scripts} - -WIP - We should probably make two types of addresses, pay-to-pubkey addresses and script addresses. -The pay-to-pubkey addresses will work similarly to the validation rules defined above, with the -following changes: - -"Scripts Validate" becomes a specific validator/redeemer pair, where $\mathsf{validator}$ checks a -digital signature and $\mathsf{redeemer}$ is the constant function returning a signature of the -part of transaction (perhaps $\outRefs tx$?). - -``Authorized" is nearly the same, except we hash the stake key instead of the validator script. - -``No Double Spend" is no longer needed. - -\section{Extended UTxO} - -The main documentation is \href{https://github.com/input-output-hk/plutus/blob/master/extended-utxo-spec/extended-utxo-specification.tex}{here}. -We need to add the data script to TxOut: -$$ \TxOut = \Addr \times \Value \times \Script $$ -We also need to provide the validator script with more information. Is the $\TxBody$ enough? -How is this more expressive than what we already have? - -\addcontentsline{toc}{section}{References} -\bibliographystyle{plainnat} -\bibliography{references} - -\end{document} diff --git a/eras/shelley/formal-spec/shelley-ledger.tex b/eras/shelley/formal-spec/shelley-ledger.tex deleted file mode 100644 index 54ecf1a757d..00000000000 --- a/eras/shelley/formal-spec/shelley-ledger.tex +++ /dev/null @@ -1,385 +0,0 @@ -\documentclass[11pt,a4paper,dvipsnames,twosided]{article} -\usepackage[deliverable]{IOHKCoverPage} - -% data for Deliverable header -- added by KH from an EU H2020 project template -\DeliverableNumber{SL-D5} -\DeliverableTitle{A Formal Specification of the Cardano Ledger}{Formal Cardano Ledger Spec.} -\DeliverableResponsible{Formal Methods Team} -\EditorName{Jared Corduan, \IOHK} -\Authors{Jared Corduan \quad \texttt{} - \\[1em] - Polina Vinogradova \quad \texttt{} - \\[1em] - Matthias G\"udemann \quad \texttt{} -} -\DueDate{15$^{\textrm{th}}$ October 2019} -\SubmissionDate{8th October 2019}{2019/10/08} -\LeaderName{Philipp Kant, \IOHK} -\InstitutionAddress{\IOHK} -\Version{1.0} -\Project{Shelley Ledger} -\DisseminationPU - -\usepackage[margin=2.5cm]{geometry} -\usepackage{lscape} -\usepackage{iohk} -\usepackage{microtype} -\usepackage{mathpazo} % nice fonts -\usepackage{amsmath} -\usepackage{amssymb} -\usepackage{amsthm} -\usepackage{latexsym} -\usepackage{mathtools} -\usepackage{stmaryrd} -\usepackage{extarrows} -\usepackage{slashed} -\usepackage[unicode=true,pdftex,pdfa,colorlinks=true]{hyperref} -\usepackage{xcolor} -\usepackage[capitalise,noabbrev,nameinlink]{cleveref} -\usepackage{float} -\floatstyle{boxed} -\restylefloat{figure} -\usepackage{tikz} -\usepackage{booktabs} -\usepackage{enumerate} -\usepackage{listings} -%% -%% Package `semantic` can be used for writing inference rules. -%% -\usepackage{semantic} -%% Setup for the semantic package -\setpremisesspace{20pt} - -\usepackage{tocloft} -\addtolength{\cftsubsecnumwidth}{5pt} - -%% -%% Types -%% -\newcommand{\Nothing}{\ensuremath{\Diamond}} -\newcommand{\N}{\ensuremath{\mathbb{N}}} -\newcommand{\Bool}{\type{Bool}} -\newcommand{\Npos}{\ensuremath{\mathbb{N}^{>0}}} -\newcommand{\Z}{\ensuremath{\mathbb{Z}}} -\newcommand{\Q}{\ensuremath{\mathbb{Q}}} -\newcommand{\R}{\ensuremath{\mathbb{R}}} -\newcommand{\Rnn}{\ensuremath{\mathbb{R}^{\geq 0}}} -\newcommand{\Tx}{\type{Tx}} -\newcommand{\TxBody}{\type{TxBody}} -\newcommand{\TxWitness}{\type{TxWitness}} -\newcommand{\Ix}{\type{Ix}} -\newcommand{\TxId}{\type{TxId}} -\newcommand{\Addr}{\type{Addr}} -\newcommand{\UTxO}{\type{UTxO}} -\newcommand{\Wdrl}{\type{Wdrl}} -\newcommand{\Coin}{\type{Coin}} -\newcommand{\PParams}{\type{PParams}} -\newcommand{\PParamsUpdate}{\type{PParamsUpdate}} -\newcommand{\ProposedPPUpdates}{\type{ProposedPPUpdates}} -\newcommand{\Slot}{\type{Slot}} -\newcommand{\StabilityWindow}{\ensuremath{\mathsf{StabilityWindow}}} -\newcommand{\RandomnessStabilisationWindow}{\ensuremath{\mathsf{RandomnessStabilisationWindow}}} -\newcommand{\SlotsPerEpoch}{\mathsf{SlotsPerEpoch}} -\newcommand{\SlotsPerKESPeriod}{\mathsf{SlotsPerKESPeriod}} -\newcommand{\MaxMajorPV}{\mathsf{MaxMajorPV}} -\newcommand{\ActiveSlotCoeff}{\mathsf{ActiveSlotCoeff}} -\newcommand{\Network}{\mathsf{Network}} -\newcommand{\NetworkId}{\mathsf{NetworkId}} -\newcommand{\BlockNo}{\type{BlockNo}} -\newcommand{\MaxKESEvo}{\ensuremath{\mathsf{MaxKESEvo}}} -\newcommand{\Quorum}{\ensuremath{\mathsf{Quorum}}} -\newcommand{\MaxLovelaceSupply}{\ensuremath{\mathsf{MaxLovelaceSupply}}} -\newcommand{\Duration}{\type{Duration}} -\newcommand{\StakePools}{\type{StakePools}} -\newcommand{\Seed}{\type{Seed}} -\newcommand{\seedOp}{\star} -\newcommand{\Ppm}{\type{Ppm}} -\newcommand{\ProtVer}{\ensuremath{\type{ProtVer}}} -\newcommand{\Metadatum}{\ensuremath{\type{Metadatum}}} -\newcommand{\Metadata}{\ensuremath{\type{Metadata}}} -\newcommand{\MetadataHash}{\ensuremath{\type{MetadataHash}}} -\newcommand{\Update}{\type{Update}} -\newcommand{\GenesisDelegation}{\type{GenesisDelegation}} -\newcommand{\FutGenesisDelegation}{\type{FutGenesisDelegation}} - -\newcommand{\DCert}{\type{DCert}} -\newcommand{\DCertRegKey}{\type{DCert_{regkey}}} -\newcommand{\DCertDeRegKey}{\type{DCert_{deregkey}}} -\newcommand{\DCertDeleg}{\type{DCert_{delegate}}} -\newcommand{\DCertRegPool}{\type{DCert_{regpool}}} -\newcommand{\DCertRetirePool}{\type{DCert_{retirepool}}} -\newcommand{\DCertGen}{\type{DCert_{genesis}}} -\newcommand{\DCertMir}{\type{DCert_{mir}}} -\newcommand{\PoolParam}{\type{PoolParam}} -\newcommand{\PoolMD}{\type{PoolMD}} -\newcommand{\MIRPot}{\type{MIRPot}} -\newcommand{\InstantaneousRewards}{\type{InstantaneousRewards}} -\newcommand{\ReservesMIR}{\type{ReservesMIR}} -\newcommand{\TreasuryMIR}{\type{TreasuryMIR}} -\newcommand{\URL}{\type{Url}} -\newcommand{\UTxOState}{\ensuremath{\type{UTxOState}}} -\newcommand{\ledgerState}{\ensuremath{\type{ledgerState}}} - -\newcommand{\AddrRWD}{\type{Addr_{rwd}}} -\newcommand{\AddrB}{\type{Addr_{base}}} -\newcommand{\AddrP}{\type{Addr_{ptr}}} -\newcommand{\AddrE}{\type{Addr_{enterprise}}} -\newcommand{\AddrBS}{\type{Addr_{bootstrap}}} -\newcommand{\Ptr}{\type{Ptr}} -\newcommand{\DState}{\type{DState}} -\newcommand{\DWEnv}{\type{DWEnv}} -\newcommand{\DPSEnv}{\type{DPSEnv}} -\newcommand{\DPEnv}{\type{DPEnv}} -\newcommand{\DEnv}{\type{DEnv}} -\newcommand{\PEnv}{\type{PEnv}} -\newcommand{\DPState}{\type{DPState}} -\newcommand{\PState}{\type{PState}} -\newcommand{\DCertBody}{\type{DCertBody}} -\newcommand{\TData}{\type{TData}} -\newcommand{\DPoolReap}{\ensuremath{\type{poolreap}}} -\newcommand{\UPIState}{\type{UPIState}} -\newcommand{\UpdatePayload}{\type{UpdatePayload}} - -% multi-signature -\newcommand{\StakeCredential}{\type{Credential}_{stake}} - -\newcommand{\txwitsVKey}[1]{\fun{txwitsVKey}~\var{#1}} -\newcommand{\txwitsScript}[1]{\fun{txwitsScript}~\var{#1}} - -\newcommand{\AddrVKey}{\type{Addr^{vkey}}} -\newcommand{\AddrRWDVKey}{\type{Addr_{rwd}^{vkey}}} -\newcommand{\AddrRWDScr}{\type{Addr_{rwd}^{script}}} -\newcommand{\AddrVKeyB}{\type{Addr^{vkey}_{base}}} -\newcommand{\AddrVKeyP}{\type{Addr^{vkey}_{ptr}}} -\newcommand{\AddrVKeyE}{\type{Addr^{vkey}_{enterprise}}} -\newcommand{\AddrVKeyBS}{\type{Addr^{vkey}_{bootstrap}}} -\newcommand{\AddrScr}{\type{Addr^{script}}} -\newcommand{\AddrScrBase}{\type{Addr_{base}^{script}}} -\newcommand{\AddrScrEnterprise}{\type{Addr_{enterprise}^{script}}} -\newcommand{\AddrScrPtr}{\type{Addr_{ptr}^{script}}} -\newcommand{\HashScr}{\type{ScriptHash}} -\newcommand{\Script}{\type{Script}} -\newcommand{\MSig}{\type{MSig}} -\newcommand{\Credential}{\type{Credential}} - -%% Adding witnesses -\newcommand{\TxIn}{\type{TxIn}} -\newcommand{\TxOut}{\type{TxOut}} -\newcommand{\VKey}{\type{VKey}} -\newcommand{\VKeyEv}{\type{VKey_{ev}}} -\newcommand{\VKeyGen}{\type{VKey_G}} -\newcommand{\SKey}{\type{SKey}} -\newcommand{\SKeyEv}{\type{SKey_{ev}}} -\newcommand{\KeyHash}{\type{KeyHash}} -\newcommand{\KeyHashGen}{\type{KeyHash_G}} -\newcommand{\KeyPair}{\type{KeyPair}} -\newcommand{\KeyPairEv}{\type{KeyPair_{ev}}} -\newcommand{\Sig}{\type{Sig}} -\newcommand{\Data}{\type{Data}} -\newcommand{\Ser}{\type{Ser}} -%% Adding delegation -\newcommand{\Epoch}{\type{Epoch}} -\newcommand{\KESPeriod}{\type{KESPeriod}} -%% Blockchain -\newcommand{\Acnt}{\type{Acnt}} -\newcommand{\Gkeys}{\var{G_{keys}}} -\newcommand{\Block}{\type{Block}} -\newcommand{\SlotId}{\type{SlotId}} -\newcommand{\PPUpdateState}{\type{PPUpdateState}} -\newcommand{\PPUpdateEnv}{\type{PPUpdateEnv}} -\newcommand{\UTxOEnv}{\type{UTxOEnv}} -\newcommand{\CEEnv}{\type{CEEnv}} -\newcommand{\CEState}{\type{CEState}} -\newcommand{\BDEnv}{\type{BDEnv}} -\newcommand{\BDState}{\type{BDState}} -\newcommand{\LEnv}{\type{LEnv}} -\newcommand{\LState}{\type{LState}} - -\newcommand{\Proof}{\type{Proof}} -\newcommand{\Seedl}{\mathsf{Seed}_\ell} -\newcommand{\Seede}{\mathsf{Seed}_\eta} -\newcommand{\slotToSeed}[1]{\fun{slotToSeed}~ \var{#1}} -\newcommand{\prevHashToNonce}[1]{\fun{prevHashToNonce}~ \var{#1}} -\newcommand{\isOverlaySlot}[3]{\fun{isOverlaySlot}~\var{#1}~\var{#2}~\var{#3}} -\newcommand{\classifyOverlaySlot}[5]{\fun{classifyOverlaySlot}~\var{#1}~\var{#2}~\var{#3}~\var{#4}~\var{#5}} - -\newcommand{\T}{\type{T}} -\newcommand{\vrf}[3]{\fun{vrf}_{#1} ~ #2 ~ #3} -\newcommand{\verifyVrf}[4]{\fun{verifyVrf}_{#1} ~ #2 ~ #3 ~#4} - -\newcommand{\HashHeader}{\type{HashHeader}} -\newcommand{\HashBBody}{\type{HashBBody}} -\newcommand{\bhHash}[1]{\fun{bhHash}~ \var{#1}} -\newcommand{\bHeaderSize}[1]{\fun{bHeaderSize}~ \var{#1}} -\newcommand{\bSize}[1]{\fun{bSize}~ \var{#1}} -\newcommand{\bBodySize}[1]{\fun{bBodySize}~ \var{#1}} -\newcommand{\OCert}{\type{OCert}} -\newcommand{\BHeader}{\type{BHeader}} -\newcommand{\BHBody}{\type{BHBody}} - -\newcommand{\bheader}[1]{\fun{bheader}~\var{#1}} -\newcommand{\hsig}[1]{\fun{hsig}~\var{#1}} -\newcommand{\bprev}[1]{\fun{bprev}~\var{#1}} -\newcommand{\bhash}[1]{\fun{bhash}~\var{#1}} -\newcommand{\bvkcold}[1]{\fun{bvkcold}~\var{#1}} -\newcommand{\bseedl}[1]{\fun{bseed}_{\ell}~\var{#1}} -\newcommand{\bprfn}[1]{\fun{bprf}_{n}~\var{#1}} -\newcommand{\bseedn}[1]{\fun{bseed}_{n}~\var{#1}} -\newcommand{\bprfl}[1]{\fun{bprf}_{\ell}~\var{#1}} -\newcommand{\bocert}[1]{\fun{bocert}~\var{#1}} -\newcommand{\bnonce}[1]{\fun{bnonce}~\var{#1}} -\newcommand{\bleader}[1]{\fun{bleader}~\var{#1}} -\newcommand{\hBbsize}[1]{\fun{hBbsize}~\var{#1}} -\newcommand{\bbodyhash}[1]{\fun{bbodyhash}~\var{#1}} -\newcommand{\overlaySchedule}[3]{\fun{overlaySchedule}~\var{#1}~\var{#2}~\var{#3}} - -\newcommand{\OCertEnv}{\type{OCertEnv}} -\newcommand{\PrtclState}{\type{PrtclState}} -\newcommand{\PrtclEnv}{\type{PrtclEnv}} -\newcommand{\OverlayEnv}{\type{OverlayEnv}} -\newcommand{\VRFState}{\type{VRFState}} -\newcommand{\TickNonceState}{\type{TickNonceState}} -\newcommand{\TickNonceEnv}{\type{TickNonceEnv}} -\newcommand{\NewEpochState}{\type{NewEpochState}} -\newcommand{\UpdateNonceState}{\type{UpdateNonceState}} -\newcommand{\UpdateNonceEnv}{\type{UpdateNonceEnv}} -\newcommand{\PoolDistr}{\type{PoolDistr}} -\newcommand{\BBodyEnv}{\type{BBodyEnv}} -\newcommand{\BBodyState}{\type{BBodyState}} -\newcommand{\RUpdEnv}{\type{RUpdEnv}} -\newcommand{\ChainEnv}{\type{ChainEnv}} -\newcommand{\ChainState}{\type{ChainState}} -\newcommand{\ChainSig}{\type{ChainSig}} -\newcommand{\LastAppliedBlock}{\type{LastAppliedBlock}} -\newcommand{\lastAppliedHash}[1]{\fun{lastAppliedHash}~\var{#1}} - - -%% -%% Functions -%% -\newcommand{\txins}[1]{\fun{txins}~ \var{#1}} -\newcommand{\txouts}[1]{\fun{txouts}~ \var{#1}} -\newcommand{\txcerts}[1]{\fun{txcerts}~ \var{#1}} -\newcommand{\txid}[1]{\fun{txid}~ \var{#1}} -\newcommand{\outs}[1]{\fun{outs}~ \var{#1}} -\newcommand{\values}[1]{\fun{values}~ #1} -\newcommand{\ubalance}[1]{\fun{ubalance}~ \var{#1}} -\newcommand{\txttl}[1]{\fun{txttl}~ \var{#1}} -\newcommand{\firstSlot}[1]{\fun{firstSlot}~ \var{#1}} -\newcommand{\totalDeposits}[3]{\fun{totalDeposits}~ \var{#1} ~ \var{#2} ~ \var{#3}} -\newcommand{\keyRefund}[6]{\fun{keyRefund}~ {#1}~{#2}~{#3}~\var{#4}~\var{#5}~\var{#6}} -\newcommand{\refund}[4]{\fun{refund}~ \var{#1}~ \var{#2}~ {#3}~ {#4}} -\newcommand{\keyRefunds}[2]{\fun{keyRefunds}~ \var{#1}~ \var{#2}} -\newcommand{\consumed}[2]{\fun{consumed}~ \var{#1}~ \var{#2}} -\newcommand{\produced}[2]{\fun{produced}~ \var{#1}~ \var{#2}} -\newcommand{\applyFun}[2]{\fun{#1}~\var{#2}} - -\newcommand{\RegKey}[1]{\textsc{RegKey}(#1)} -\newcommand{\DeregKey}[1]{\textsc{DeregKey}(#1)} -\newcommand{\Delegate}[1]{\textsc{Delegate}(#1)} -\newcommand{\RegPool}[1]{\textsc{RegPool}(#1)} -\newcommand{\RetirePool}[1]{\textsc{RetirePool}(#1)} -\newcommand{\cwitness}[1]{\fun{cwitness}~ \var{#1}} -\newcommand{\dpool}[1]{\fun{dpool}~ \var{#1}} -\newcommand{\poolParam}[1]{\fun{poolParam}~ \var{#1}} -\newcommand{\retire}[1]{\fun{retire}~ \var{#1}} -\newcommand{\addrRw}[1]{\fun{addr_{rwd}}~ \var{#1}} -\newcommand{\epoch}[1]{\fun{epoch}~\var{#1}} -\newcommand{\kesPeriod}[1]{\fun{kesPeriod}~\var{#1}} - -%% UTxO witnesses -\newcommand{\inputs}[1]{\fun{inputs}~ \var{#1}} -\newcommand{\txwits}[1]{\fun{txwits}~ \var{#1}} -\newcommand{\verify}[3]{\fun{verify} ~ #1 ~ #2 ~ #3} -\newcommand{\sign}[2]{\fun{sign} ~ #1 ~ #2} -\newcommand{\verifyEv}[4]{\fun{verify_{ev}} ~ #1 ~ #2 ~ #3 ~ #4} -\newcommand{\signEv}[3]{\fun{sign_{ev}} ~ #1 ~ #2 ~ #3} -\newcommand{\serialised}[1]{\llbracket \var{#1} \rrbracket} -\newcommand{\hashKey}[1]{\fun{hashKey}~ \var{#1}} -\newcommand{\txbody}[1]{\fun{txbody}~ \var{#1}} -\newcommand{\txfee}[1]{\fun{txfee}~ \var{#1}} -\newcommand{\txwdrls}[1]{\fun{txwdrls}~ \var{#1}} -\newcommand{\minfee}[2]{\fun{minfee}~ \var{#1}~ \var{#2}} -\newcommand{\slotminus}[2]{\var{#1}~-_{s}~\var{#2}} -\DeclarePairedDelimiter\floor{\lfloor}{\rfloor} -% wildcard parameter -\newcommand{\wcard}[0]{\rule[-.5mm]{2mm}{.2mm}} -%% Adding ledgers... -\newcommand{\utxo}[1]{\fun{utxo}~ #1} -%% Delegation -\newcommand{\delegatesName}{\fun{delegates}} -\newcommand{\delegates}[3]{\delegatesName~#1~#2~#3} -\newcommand{\dwho}[1]{\fun{dwho}~\var{#1}} -\newcommand{\depoch}[1]{\fun{depoch}~\var{#1}} -\newcommand{\dval}{\ensuremath{d_{\mathsf{val}}}} -%% Delegation witnesses -\newcommand{\dbody}[1]{\fun{dbody}~\var{#1}} -\newcommand{\dwit}[1]{\fun{dwit}~\var{#1}} -%% Blockchain -\newcommand{\bwit}[1]{\fun{bwit}~\var{#1}} -\newcommand{\bslot}[1]{\fun{bslot}~\var{#1}} -\newcommand{\bblockno}[1]{\fun{bblockno}~\var{#1}} -\newcommand{\bbody}[1]{\fun{bbody}~\var{#1}} -\newcommand{\bhbody}[1]{\fun{bhbody}~\var{#1}} -\newcommand{\bdlgs}[1]{\fun{bdlgs}~\var{#1}} -%% ledgerstate constants -\newcommand{\genesisId}{\ensuremath{Genesis_{Id}}} -\newcommand{\genesisTxOut}{\ensuremath{Genesis_{Out}}} -\newcommand{\genesisUTxO}{\ensuremath{Genesis_{UTxO}}} -\newcommand{\genesisUTxOState}{(\genesisUTxO,\wcard,\wcard,\wcard)} -\newcommand{\emax}{\ensuremath{\mathsf{E_{max}}}} - -\newcommand{\unitInterval}{\ensuremath{[0,~1]}} -\newcommand{\unitIntervalNonNull}{\ensuremath{(0,~1]}} -\newcommand{\nonnegReals}{\ensuremath{[0,~\infty)}} -\newcommand{\posReals}{\ensuremath{(0,~\infty)}} - -\theoremstyle{definition} -\newtheorem{definition}{Definition}[section] -\newtheorem{lemma}[definition]{Lemma} -\newtheorem{theorem}[definition]{Theorem} -\newtheorem{property}{Property}[section] - -\newcommand{\leteq}{\ensuremath{\mathrel{\mathop:}=}} - -\begin{document} - -\input{frontmatter.tex} - -\include{intro} -\include{notation} -\include{crypto-primitives} -\include{address} -\include{protocol-parameters} -\include{transactions} -\include{update} -\include{utxo} -\include{delegation} -\include{ledger} -\include{epoch} -\include{chain} -\include{software-updates} -\include{sts-overview} -\include{properties} -\include{hand_proofs} -\include{leader-value} -\include{errata} - -\clearpage - -\addcontentsline{toc}{section}{References} -\bibliographystyle{habbrv} -\bibliography{references} - -\clearpage -\begin{appendix} - \input{crypto-details} - \input{address-binary} - \input{bootstrap-witnesses} - \input{cddl} - \input{txsize} - \input{proofs} -\end{appendix} - - -\end{document} diff --git a/eras/shelley/formal-spec/software-updates.tex b/eras/shelley/formal-spec/software-updates.tex deleted file mode 100644 index 8c311ebf68c..00000000000 --- a/eras/shelley/formal-spec/software-updates.tex +++ /dev/null @@ -1,44 +0,0 @@ -\section{Software Updates} -\label{sec:software-updates} - -Updates to the software will include increasing the protocol version. -An increase in the major version indicates a hard fork, and the minor version a soft fork -(meaning old software can validate but not produce new blocks). - -The current protocol version ($\ProtVer$) is a member of the protocol parameters. -It represents a specific version of the \textit{ledger rules}. -If $\var{pv}$ changes, this document may have to be updated with -the new rules and types if there is a change in the logic. -If there is a change in the transition rules, nodes must have -software installed that can implement these rules at the epoch boundary -when the protocol parameter adoption occurs. -Switching to using these new rules is mandatory in the sense that -if the nodes do not have the applications implementing them, this -will prevent a user from reading and writing to the ledger. - -Applications must sometimes support \textit{several different versions} -of ledger rules in order to accommodate the timely switch of the $\ProtVer$ at the epoch boundary. -In this situation, the newest protocol version a node is ready to use is included in the block -header of the blocks it produces, see \ref{sec:defs-blocks}. This is either: - -\begin{itemize} -\item the current version (if there is no protocol version update pending or the node -has not updated to an upcoming software version capable of of implementing a -newer protocol version), or -\item the next protocol version, -(if the node has updated its software, but the current protocol version on the -ledger has not been updated yet). -\end{itemize} - -Stake pools have some agency in the process of adoption of -new protocol versions. They may refuse to download and install updates. -Since software updates cannot be \textit{forced} on the users, if the majority of -users do not perform an update which allows the switch to the next $\ProtVer$, -it cannot happen. - -Note that if there is a \textit{new protocol version} implemented by new -software, the core nodes can monitor how many nodes are ready to use the new -protocol version via the block headers. -Once enough nodes are ready for the new protocol version, this -may now be updated as well (by the mechanism in described in -Section \ref{sec:update}). diff --git a/eras/shelley/formal-spec/sts-overview.tex b/eras/shelley/formal-spec/sts-overview.tex deleted file mode 100644 index 3790c8b5e2c..00000000000 --- a/eras/shelley/formal-spec/sts-overview.tex +++ /dev/null @@ -1,28 +0,0 @@ -\section{Transition Rule Dependencies} -\label{sec:sts-rules-overview} - -Figure~\ref{fig:sts-rules-dependencies} shows all STS rules, the sub-rules they -use and possible dependencies. Each node in the graph represents one rule, the -top rule being CHAIN.\@ A straight arrow from one node to another one represents -a sub-rule relationship. There are two recursive rules, LEDGERS and DELEGS which -have self loops. - -An arrow with a dotted line from one node to another represents a dependency in -the sense that the output of the target rule is an input to the source one, -either as part of the source state, the environment or the signal. In most cases -these dependencies are between sub-rules of a rule. In the case of recursive -rules, the sub-rule can also have a dependency on the super-rule. Those -recursively call themselves while traversing the input signal sequence until -reaching the base case with an empty input sequence. - -\begin{figure}[htp] - \centering - \includegraphics[width=\textwidth]{rules} - \caption{STS Rules, Sub-Rules and Dependencies} - \label{fig:sts-rules-dependencies} -\end{figure} - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "ledger-spec" -%%% End: diff --git a/eras/shelley/formal-spec/transactions.tex b/eras/shelley/formal-spec/transactions.tex deleted file mode 100644 index 390f4da0009..00000000000 --- a/eras/shelley/formal-spec/transactions.tex +++ /dev/null @@ -1,194 +0,0 @@ -\section{Transactions} -\label{sec:transactions} - -Transactions are defined in Figure~\ref{fig:defs:utxo-shelley}. -A transaction body, $\TxBody$, is made up of eight pieces: - -\begin{itemize} - \item A set of transaction inputs. - This derived type identifies an output from a previous transaction. - It consists of a transaction id and an index to uniquely identify the output. - \item An indexed collection of transaction outputs. - The $\TxOut$ type is an address paired with a coin value. - \item A list of certificates, which will be explained in detail in - Section~\ref{sec:delegation-shelley}. - \item A transaction fee. This value will be added to the fee pot and eventually handed out - as stake rewards. - \item A time to live. A transaction will be deemed invalid if processed after this slot. - \item A mapping of reward account withdrawals. The type $\Wdrl$ is a finite map that maps - a reward address to the coin value to be withdrawn. The coin value must be equal - to the full value contained in the account. Explicitly stating these values ensures - that error messages can be precise about why a transaction is invalid. - For reward calculation rules, see Section \ref{sec:reward-overview}, - and for the rule for collecting rewards, see Section \ref{sec:utxo-trans}. - \item An optional update proposals for the protocol parameters. - The update system will be explained in Section \ref{sec:update}. - \item An optional metadata hash. -\end{itemize} - -A transaction, $\Tx$, consists of: - -\begin{itemize} - \item The transaction body. - \item A triple of: - \begin{itemize} - \item A finite map from payment verification keys to signatures. - \item A finite map containing scripts as values, with their hashes as - their indexes. - \item Optional metadata. - \end{itemize} -\end{itemize} - -Additionally, the $\UTxO$ type will be used by the ledger state to store all the -unspent transaction outputs. It is a finite map from transaction inputs -to transaction outputs that are available to be spent. - -Finally, $\fun{txid}$ computes the transaction id of a given transaction. -This function must produce a unique id for each unique transaction body. - -\begin{figure*}[htb] - \emph{Abstract types} - % - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \var{gkey} & \VKeyGen & \text{genesis public keys}\\ - \var{gkh} & \KeyHashGen & \text{genesis key hash}\\ - \var{txid} & \TxId & \text{transaction id}\\ - \var{m} & \Metadatum & \text{metadatum}\\ - \var{mdh} & \MetadataHash & \text{hash of transaction metadata}\\ - \end{array} - \end{equation*} - \emph{Derived types} - % - \begin{equation*} - \begin{array}{r@{~\in~}l@{\qquad=\qquad}lr} - (\var{txid}, \var{ix}) - & \TxIn - & \TxId \times \Ix - & \text{transaction input} - \\ - (\var{addr}, c) - & \type{TxOut} - & \Addr \times \Coin - & \text{transaction output} - \\ - \var{utxo} - & \UTxO - & \TxIn \mapsto \TxOut - & \text{unspent tx outputs} - \\ - \var{wdrl} - & \Wdrl - & \AddrRWD \mapsto \Coin - & \text{reward withdrawal} - \\ - \var{md} - & \Metadata - & \N \mapsto \Metadatum - & \text{metadata} - \end{array} - \end{equation*} - \emph{Derived types (update system)} - % - \begin{equation*} - \begin{array}{r@{~\in~}l@{\qquad=\qquad}lr} - \var{pup} - & \ProposedPPUpdates - & \KeyHashGen \mapsto \PParamsUpdate - & \text{proposed updates} - \\ - \var{up} - & \Update - & \ProposedPPUpdates \times \Epoch - & \text{update proposal} - \end{array} - \end{equation*} - % - \emph{Transaction Types} - % - \begin{equation*} - \begin{array}{r@{~\in~}l@{\qquad=\qquad}l} - \var{txbody} - & \TxBody - & \begin{array}{l} - \powerset{\TxIn} \times (\Ix \mapsto \TxOut) \times \seqof{\DCert} - \times \Coin \times \Slot \times \Wdrl - \\ ~~~~\times \Update^? \times \MetadataHash^? - \end{array} - \\ - \var{wit} & \TxWitness & (\VKey \mapsto \Sig) \times (\HashScr \mapsto \Script) - \\ - \var{tx} - & \Tx - & \TxBody \times \TxWitness \times \Metadata^? - \end{array} - \end{equation*} - % - \emph{Accessor Functions} - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \fun{txins} & \Tx \to \powerset{\TxIn} & \text{transaction inputs} \\ - \fun{txouts} & \Tx \to (\Ix \mapsto \TxOut) & \text{transaction outputs} \\ - \fun{txcerts} & \Tx \to \seqof{\DCert} & \text{delegation certificates} \\ - \fun{txfee} & \Tx \to \Coin & \text{transaction fee} \\ - \fun{txttl} & \Tx \to \Slot & \text{time to live} \\ - \fun{txwdrls} & \Tx \to \Wdrl & \text{withdrawals} \\ - \fun{txbody} & \Tx \to \TxBody & \text{transaction body}\\ - \fun{txwitsVKey} & \Tx \to (\VKey \mapsto \Sig) & \text{VKey witnesses} \\ - \fun{txwitsScript} & \Tx \to (\HashScr \mapsto \Script) & \text{script witnesses}\\ - \fun{txup} & \Tx \to \Update^? & \text{protocol parameter update}\\ - \fun{txMD} & \Tx \to \Metadata^? & \text{metadata}\\ - \fun{txMDhash} & \Tx \to \MetadataHash^? & \text{metadata hash}\\ - \end{array} - \end{equation*} - % - \emph{Abstract Functions} - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \txid{} & \TxBody \to \TxId & \text{compute transaction id}\\ - \fun{validateScript} & \Script \to \Tx \to \Bool & \text{script interpreter}\\ - \fun{hashMD} & \Metadata \to \MetadataHash & \text{hash the metadata}\\ - \fun{bootstrapAttrSize} & \AddrBS \to \N & \text{bootstrap attribute size}\\ - \end{array} - \end{equation*} - \caption{Definitions used in the UTxO transition system} - \label{fig:defs:utxo-shelley} -\end{figure*} - -\begin{figure*}[htb] - \emph{Helper Functions} - % - \begin{align*} - \fun{txinsVKey} & \in \powerset \TxIn \to \UTxO \to \powerset\TxIn & \text{VKey Tx inputs}\\ - \fun{txinsVKey} & ~\var{txins}~\var{utxo} = - \var{txins} \cap \dom (\var{utxo} \restrictrange (\AddrVKey \times Coin)) - \\ - \\ - \fun{txinsScript} & \in \powerset \TxIn \to \UTxO \to \powerset\TxIn & \text{Script Tx inputs}\\ - \fun{txinsScript} & ~\var{txins}~\var{utxo} = - \var{txins} \cap \dom (\var{utxo} \restrictrange (\AddrScr \times Coin)) - \end{align*} - % - \begin{align*} - \fun{validateScript} & \in\Script\to\Tx\to\Bool & \text{validate - script} \\ - \fun{validateScript} & ~\var{msig}~\var{tx}= - \begin{cases} - \fun{evalMultiSigScript}~msig~vhks & \text{if}~msig \in\MSig \\ - \mathsf{False} & \text{otherwise} - \end{cases} \\ - & ~~~~\where \var{vhks}\leteq \{\fun{hashKey}~vk \vert - vk \in \dom(\fun{txwitsVKey}~\var{tx})\} - \end{align*} - % - \caption{Helper Functions for Transaction Inputs} - \label{fig:defs:functions-txins} -\end{figure*} - -Figure~\ref{fig:defs:functions-txins} shows the helper functions -$\fun{txinsVKey}$ and $\fun{txinsScript}$ which partition the set of transaction -inputs of the transaction into those that are locked with a private key and -those that are locked via a script. -It also defines $\fun{validateScript}$, which validates the multisignature scripts. - -\clearpage diff --git a/eras/shelley/formal-spec/txsize.tex b/eras/shelley/formal-spec/txsize.tex deleted file mode 100644 index ad8cb8bb61b..00000000000 --- a/eras/shelley/formal-spec/txsize.tex +++ /dev/null @@ -1,7 +0,0 @@ -\section{Implementation of \fun{txSize}} -\label{sec:txSize} - -The minimum fee calculation in Figure~\ref{fig:defs:protocol-parameters-helpers} -depends on an abstract $\fun{txSize}$ function. -We have implemented $\fun{txSize}$ as the number of bytes in the CBOR serialization -of the transaction, as defined in Appendix~\ref{sec:cddl}. diff --git a/eras/shelley/formal-spec/update.tex b/eras/shelley/formal-spec/update.tex deleted file mode 100644 index 4ef4535ad76..00000000000 --- a/eras/shelley/formal-spec/update.tex +++ /dev/null @@ -1,278 +0,0 @@ -\section{Update Proposal Mechanism} -\label{sec:update} - - -The $\mathsf{PPUP}$ transition is responsible for the federated governance model in Shelley. -The governance process includes a mechanism for core nodes to propose and vote on -protocol parameter updates. In this chapter we -outline rules for genesis keys \textit{proposing} protocol parameter updates. -For rules regarding the \textit{adoption} of protocol -parameter updates, see Section~\ref{sec:pparam-update}. - -This chapter does not discuss authentication of update proposals. -The signature for the keys in the proposal will be checked in the -$\mathsf{UTXOW}$ transition, which checks all the necessary witnesses -for a transaction, see Section\ref{sec:witnesses-shelley}. - -\textbf{Genesis Key Delegations.} The environment for the protocol parameter -update transition contains the value $\var{genDelegs}$, -which is a finite map indexed by genesis key hashes, -and which maps to a pair consisting of a delegate key hash -(corresponding to the cold key used for producing blocks) and -a VRF key hash. - -During the Byron era, the genesis nodes are all -already delegated to some $\KeyHash$, and these delegations are inherited -through the Byron-Shelley transition (see Section~\ref{sec:byron-to-shelley}). -The VRF key hashes in this mapping will be new to the Shelley era. - -The delegations mapping can be updated as described in -Section~\ref{sec:delegation-shelley}, -but there is no mechanism for them to un-delegate or for the keys to which they delegate -to retire (unlike regular stake pools). - -The types $\ProposedPPUpdates$ and $\Update$ were defined in -Figure~\ref{fig:defs:utxo-shelley}. -The update proposal type $\Update$ is a pair of $\ProposedPPUpdates$ and $\Epoch$. -The epoch in the update specifies the epoch in which the proposal is valid. -$\ProposedPPUpdates$ is a finite maps which is indexed by the hashes of the keys of -entities proposing the given updates, $\KeyHashGen$. -We use the abstract type $\KeyHashGen$ to represent hashes of genesis -(public verification) keys, which have type $\VKeyGen$. -Genesis keys are the keys belonging to the federated -nodes running the Cardano system currently (also referred to as core nodes). -The regular user verification keys are of a type $\VKey$, distinct from the -genesis key type, $\VKeyGen$. Similarly, the type hashes of these -are distinct, $\KeyHash$ and $\KeyHashGen$ respectively. - -Currently, updates can only be proposed and voted on by the owners of the genesis keys. -The process of decentralization will result in the core nodes gradually giving up -some of their privileges and responsibilities to the network, -eventually give them \textit{all} up. -The update proposal mechanism will not be decentralized in the Shelley era, however. -For more on the decentralization process, see Section~\ref{sec:new-epoch-trans}. - -\subsection{Protocol Parameter Update Proposals} -\label{sec:pp-proposals} - -The transition type $\mathsf{PPUP}$ is for proposing updates to protocol -parameters, see Figure \ref{fig:ts-types:pp-update} (for the corresponding rules, -see Figure \ref{fig:rules:pp-update}). -The signal for this transition is an optional update. - -Protocol updates for the current epoch are only allowed up until -($2\cdot\StabilityWindow$)-many slots before the end of the epoch. -The reason for this involves how we safely predict hard forks. -Changing the protocol version can result in a hard fork, and we would like an -entire stability period between when we know that a hard fork will necessarily happen -and when the current epoch ends. -Protocol updates can still be submitted during the last -($2\cdot\StabilityWindow$)-many slots of the epoch, but they must -be marked for the following epoch. - -The transition $\mathsf{PPUP}$ has three rules: -\begin{itemize} - \item PP-Update-Empty : No new updates were proposed, do nothing. - \item PP-Update-Current : Some new updates $\var{up}$ were proposed - for the current epoch, and the current slot is not too far into the epoch. - Add these to the existing proposals using a right override. That is, if a genesis key - has previously submitted an update proposal, replace it with its new - proposal in $\var{pup}$. - \item PP-Update-Future : Some new updates $\var{up}$ were proposed - for the next epoch, and the current slot is near the end of the epoch. - Add these to the existing future proposals using a right override. That is, if a genesis key - has previously submitted a future update proposal, replace it with its new - proposal in $\var{pup}$. - - The future update proposals will become update proposals on the next epoch, - provided they contain no proposals for a protocol version which cannot follow - from the current protocol version. - See the $\mathsf{NEWPP}$ transition in Figure~\ref{fig:rules:new-proto-param}, - and the function $\fun{updatePpup}$ from Figure~\ref{fig:ts-types:new-proto-param}. -\end{itemize} - -This rule has the following predicate failures: - -\begin{enumerate} -\item In the case that the epoch number in the signal is not appropriate for the - slot in the current epoch, there is a \emph{PPUpdateWrongEpoch} failure. -\item In the case of \var{pup} being non-empty, if the check $\dom pup \subseteq - \dom genDelegs$ fails, there is a \emph{NonGenesisUpdate} failure as only genesis keys - can be used in the protocol parameter update. -\item If a protocol parameter update in \var{pup} contains a proposal for a - protocol version which cannot follow from the current protocol version, - there is a \emph{PVCannotFollow} failure. - Note that $\fun{pvCanFollow}$ is defined in Figure~\ref{fig:ts-types:pp-update}. -\end{enumerate} - -\begin{figure}[htb] - \emph{Derived types} - \begin{equation*} - \begin{array}{lclr} - \GenesisDelegation - & ~=~ - & \KeyHashGen\mapsto(\KeyHash\times\KeyHash_{vrf}) - & \text{genesis delegations} \\ - \end{array} - \end{equation*} - % - \emph{Protocol Parameter Update environment} - % - \begin{equation*} - \PPUpdateState = - \left( - \begin{array}{r@{~\in~}lr} - \var{pup} & \ProposedPPUpdates & \text{current proposals}\\ - \var{fpup} & \ProposedPPUpdates & \text{future proposals}\\ - \end{array} - \right) - \end{equation*} - % - \begin{equation*} - \PPUpdateEnv = - \left( - \begin{array}{r@{~\in~}lr} - \var{slot} & \Slot & \text{current slot}\\ - \var{pp} & \PParams & \text{protocol parameters}\\ - \var{genDelegs} & \GenesisDelegation - & \text{genesis key delegations} \\ - \end{array} - \right) - \end{equation*} - % - \emph{Protocol Parameter Update transitions} - \begin{equation*} - \_ \vdash - \var{\_} \trans{ppup}{\_} \var{\_} - \subseteq \powerset ( - \PPUpdateEnv \times \PPUpdateState \times \Update^? \times \PPUpdateState) - \end{equation*} - % - \emph{Helper Functions} - \begin{align*} - & \fun{pvCanFollow} \in \ProtVer \to \ProtVer \to \Bool\\ - & \fun{pvCanFollow}~(m,~n)~(m',~n') = \\ - & ~~~~(m + 1, 0) = (m', n') \lor (m, n + 1) = (m', n') - \end{align*} - % - \caption{Protocol Parameter Update Transition System Types} - \label{fig:ts-types:pp-update} -\end{figure} - -\begin{figure}[htb] - \begin{equation}\label{eq:pp-update-Empty} - \inference[PP-Update-Empty] - { - \var{up} = \Nothing - } - { - \begin{array}{r} - \var{slot}\\ - \var{pp}\\ - \var{genDelegs}\\ - \end{array} - \vdash - \left( - \begin{array}{r} - \var{pup_s} \\ - \var{fpup_s} - \end{array} - \right) - \trans{ppup}{up} - \left( - \begin{array}{r} - \var{pup_s} \\ - \var{fpup_s} - \end{array} - \right) - } - \end{equation} - - \nextdef - - \begin{equation}\label{eq:update-nonempty-current} - \inference[PP-Update-Current] - { - (\var{pup},~\var{e})\leteq\var{up} - & - \dom{pup}\subseteq\dom{genDelegs} - \\ - \forall\var{ps}\in\range{pup},~ - \var{pv}\mapsto\var{v}\in\var{ps}\implies\fun{pvCanFollow}~(\fun{pv}~\var{pp})~\var{v} - \\ - \var{slot} < \fun{firstSlot}~((\epoch{slot}) + 1) - 2\cdot\StabilityWindow - \\ - \epoch{slot} = e - } - { - \begin{array}{c} - \var{slot}\\ - \var{pp}\\ - \var{genDelegs}\\ - \end{array} - \vdash - \left( - \begin{array}{c} - \var{pup_s} \\ - \var{fpup_s} - \end{array} - \right) - \trans{ppup}{up} - \left( - \begin{array}{c} - \varUpdate{pup_s\unionoverrideRight pup} \\ - \var{fpup_s} - \end{array} - \right) - } - \end{equation} - - \nextdef - - \begin{equation}\label{eq:update-nonempty-future} - \inference[PP-Update-Future] - { - (\var{pup},~\var{e})\leteq\var{up} - & - \dom{pup}\subseteq\dom{genDelegs} - \\ - \forall\var{ps}\in\range{pup},~ - \var{pv}\mapsto\var{v}\in\var{ps}\implies\fun{pvCanFollow}~(\fun{pv}~\var{pp})~\var{v} - \\ - \var{slot} \geq \fun{firstSlot}~((\epoch{slot}) + 1) - 2\cdot\StabilityWindow - \\ - (\epoch{slot}) +1 = e - } - { - \begin{array}{c} - \var{slot}\\ - \var{pp}\\ - \var{genDelegs}\\ - \end{array} - \vdash - \left( - \begin{array}{c} - \var{pup_s} \\ - \var{fpup_s} - \end{array} - \right) - \trans{ppup}{up} - \left( - \begin{array}{c} - \var{pup_s} \\ - \varUpdate{fpup_s\unionoverrideRight pup} \\ - \end{array} - \right) - } - \end{equation} - - \caption{Protocol Parameter Update Inference Rules} - \label{fig:rules:pp-update} -\end{figure} - -\clearpage - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: t -%%% End: diff --git a/eras/shelley/formal-spec/utxo.tex b/eras/shelley/formal-spec/utxo.tex deleted file mode 100644 index 5f0e9b98631..00000000000 --- a/eras/shelley/formal-spec/utxo.tex +++ /dev/null @@ -1,607 +0,0 @@ -\section{UTxO} -\label{sec:utxo} - -A key constraint that must always be satisfied as a result and precondition of -a valid ledger state transition is called the \textit{general accounting -property}, or the \textit{preservation of value} condition. Every piece of -software that is a part of the implementation of the -Cardano cryptocurrency must function in such a way as to not result in -a violation of this rule. -If this condition is not satisfied, it is an indicator of -incorrect accounting, potentially due to -malicious disruption or a bug. - -The preservation of value is expressed as an equality that uses values in -the ledger state and the environment, as well as the values in the body of -the signal transaction. -We have defined the rules of the delegation protocol in a way that should -consistently satisfy the preservation of value. - -In this section, we discuss the relevant accounting that needs to be done -as a result of processing a transaction, i.e.~the deposits for all certificates, -transaction fees, transaction withdrawals and refunds for individual -deregistration, so that we may keep track of whether the preservation of -value is satisfied. Stake pool retirement refunds are not triggered by a -transaction (but rather, happen at the epoch boundary) and are therefore -not considered in our state change rules invoked due to a signal transaction. - -Note that when a transaction is issued by a wallet to be applied to the ledger -state (i.e.~processed), the rules in this section are defined in such a way that it is impossible to -apply only some parts of a transaction (e.g.~only certain certificates). -Every part of the transaction must be valid and it must be live, otherwise -it is ignored entirely. It is the wallet's responsibility to inform the user -that a transaction failed to be processed. - -\subsection{UTxO Transitions} -\label{sec:utxo-trans} - -Figure~\ref{fig:functions:utxo} defines functions needed for the UTxO transition system. -See Figure~\ref{fig:defs:utxo-shelley} for most of the definitions used in the transition system. - -\begin{itemize} - - \item - The function $\fun{outs}$ creates unspent outputs generated by a transaction, so that - they can be added to the ledger state. For each output in the transaction, - $\fun{outs}$ maps the transaction id and output index to the output. - - \item - The $\fun{ubalance}$ function calculates sum total of all the coin in a given UTxO. - \item - The $\fun{wbalance}$ function calculates the total sum of all the reward withdrawals in a - transaction. - - \item The calculation $\fun{consumed}$ gives the value consumed by the - transaction $\var{tx}$ in the context of the protocol parameters, the - current UTxO on the ledger and the registered stake credentials. This - calculation is a sum of all coin in the inputs of $\var{tx}$, reward - withdrawals and stake credential deposit refunds. Some of the definitions - used in this function will be defined in Section~\ref{sec:deps-refunds}. In particular, - $\fun{keyRefunds}$ is defined in Figure~\ref{fig:functions:deposits-refunds}. - - \item The calculation $\fun{produced}$ gives the value produced by the transaction $\var{tx}$ - in the context of the protocol parameters and the registered stake pools. - This calculation is a sum of all coin in the outputs of $\var{tx}$, - the transaction fee and all needed deposits. - Some of the definitions used in this function will be defined in - Section~\ref{sec:deps-refunds}. - In particular, $\fun{totalDeposits}$ is defined in Figure~\ref{fig:functions:deposits-refunds}. -\end{itemize} - -For a transaction and a given ledger state, the preservation of value property holds -exactly when the results of $\fun{consumed}$ equal the results of $\fun{produced}$. -Moreover, when the property holds, value is only moved between transaction outputs, -the reward accounts, the fee pot and the deposit pot. - -Note that the $\fun{produced}$ function takes the registered stake pools ($\var{poolParams}$) -as a parameter only in order to determine which pool registration certificates are -new (and thus require a deposit) and which ones are updates. -Registration will be discussed more in Section~\ref{sec:delegation-shelley}. - -\begin{figure}[htb] - \begin{align*} - & \fun{outs} \in \TxBody \to \UTxO - & \text{tx outputs as UTxO} \\ - & \fun{outs} ~ \var{tx} = - \left\{ - (\fun{txid} ~ \var{tx}, \var{ix}) \mapsto \var{txout} ~ - \middle| - \var{ix} \mapsto \var{txout} \in \txouts{tx} - \right\} - \nextdef - & \fun{ubalance} \in \UTxO \to \Coin - & \text{UTxO balance} \\ - & \fun{ubalance} ~ utxo = \sum_{(~\wcard ~ \mapsto (\wcard, ~c)) \in \var{utxo}} c - \nextdef - & \fun{wbalance} \in \Wdrl \to \Coin - & \text{withdrawal balance} \\ - & \fun{wbalance} ~ ws = \sum_{(\wcard\mapsto c)\in\var{ws}} c - \nextdef - & \fun{consumed} \in \PParams \to \UTxO \to \TxBody \to \Coin - & \text{value consumed} \\ - & \consumed{pp}{utxo}{tx} = \\ - & ~~\ubalance{(\txins{tx} \restrictdom \var{utxo})} + - \fun{wbalance}~(\fun{txwdrls}~{tx}) \\ - & ~~ + \keyRefunds{pp}{tx} \\ - \nextdef - & \fun{produced} \in \PParams \to (\KeyHash_{pool}\mapsto\PoolParam) \to \TxBody \to \Coin - & \text{value produced} \\ - & \fun{produced}~\var{pp}~\var{poolParams}~\var{tx} = \\ - &~~\ubalance{(\outs{tx})} - + \txfee{tx} + \totalDeposits{pp}{poolParams}{(\txcerts{tx})}\\ - \end{align*} - - \caption{Functions used in UTxO rules} - \label{fig:functions:utxo} -\end{figure} - -\clearpage - - -The types for the UTxO transition are given in Figure~\ref{fig:ts-types:utxo-shelley}. -The environment, $\UTxOEnv$, consists of: - -\begin{itemize} - \item The current slot. - \item The protocol parameters. - \item The registered stake pools - (also explained in Section~\ref{sec:delegation-shelley}, - Figure~\ref{fig:delegation-defs}). - \item The genesis key delegation mapping. -\end{itemize} -The current slot and registrations are needed for the refund calculations -described in Section~\ref{sec:deps-refunds}. - -The state needed for the UTxO transition $\UTxOState$, consists of: - -\begin{itemize} - \item The current UTxO. - \item The deposit pot. - \item The fee pot. - \item Proposed updates (see Section~\ref{sec:update}). -\end{itemize} -The signal for the UTxO transition is a transaction. - -\begin{figure}[htb] - \emph{UTxO environment} - \begin{equation*} - \UTxOEnv = - \left( - \begin{array}{r@{~\in~}lr} - \var{slot} & \Slot & \text{current slot}\\ - \var{pp} & \PParams & \text{protocol parameters}\\ - \var{poolParams} & \KeyHash_{pool}\mapsto\PoolParam & \text{stake pools}\\ - \var{genDelegs} & \GenesisDelegation & \text{genesis key delegations} \\ - \end{array} - \right) - \end{equation*} - % - \emph{UTxO States} - \begin{equation*} - \UTxOState = - \left( - \begin{array}{r@{~\in~}lr} - \var{utxo} & \UTxO & \text{UTxO}\\ - \var{deposited} & \Coin & \text{deposits pot}\\ - \var{fees} & \Coin & \text{fee pot}\\ - \var{ppup} & \PPUpdateState & \text{proposed updates}\\ - \end{array} - \right) - \end{equation*} - % - \emph{UTxO transitions} - \begin{equation*} - \_ \vdash - \var{\_} \trans{utxo}{\_} \var{\_} - \subseteq \powerset (\UTxOEnv \times \UTxOState \times \Tx \times \UTxOState) - \end{equation*} - % - \caption{UTxO transition-system types} - \label{fig:ts-types:utxo-shelley} -\end{figure} - -The UTxO transition system is given in Figure~\ref{fig:rules:utxo-shelley}. -Rule~\ref{eq:utxo-inductive-shelley} specifies the conditions under which a transaction can -be applied to a particular $\UTxOState$ in environment $\UTxOEnv$: - -The transition contains the following predicates: - -\begin{itemize} - \item - The transaction is live (the current slot is less than its time to live). - \item - The transaction has at least one input. - The global uniqueness of transaction inputs prevents replay attacks. - By requiring that all transactions spend at least one input, - the entire transaction is safe from such attacks. - A delegation certificate by itself, for example, does not have this property. - \item - The fee paid by the transaction has to be greater than or equal to the minimum fee, - which is based on the size of the transaction. - We leave open the future possibility that transactions with larger fees can be prioritized. - \item - Each input spent in the transaction must be in the set of unspent - outputs. - \item - The \textit{preservation of value} property must hold. - In other words, the amount of value produced by the transaction must be the same as - the amount consumed. - \item - The $\mathsf{PPUP}$ transition is successful. - \item - The coin value of each new output must be at least as large as the - minimum value specified by the protocol parameter $\var{minUTxOValue}$. - \item - The transaction size must be below the allowed maximum. - Note that there is an implicit max transaction size given by the max block size, - and that if we wished to allow a transaction to be as large as will fit in a block, this - check would not be needed. - Being able to limit the size below that of the block, however, gives us some - control over how transactions will be packed into the blocks. -\end{itemize} -If all the predicates are satisfied, the state is updated as follows: - -\begin{itemize} - \item Update the UTxO: - \begin{itemize} - \item Remove from the UTxO all the $(\var{txin}, \var{txout})$ pairs - associated with the $\var{txins}$'s in the $\var{inputs}$ list of - the transaction body $\var{txb}$. - \item Add all the $\var{outputs}$ of $\var{tx}$ to the - UTxO, associated with the $\fun{txid}$ of the transaction body $\var{txb}$ - \end{itemize} - \item Add all new deposits to the deposit pot and subtract all deposit refunds. - \item Add the transaction fee to the fee pot. - \item Update the current update proposals. -\end{itemize} - -The accounting for the reward withdrawals is not done in this transition system. -The rewards are tracked with the delegation state and will -be removed in the final delegation transition, see ~\ref{eq:delegs-base}. - -Note here that output entries for both the deposit refunds and the rewards -withdrawals must be included in the body of the transaction -carrying the deregistration certificates (requesting these refunds) and the -reward requests. It is the job -of the wallet to calculate the value of these refunds and withdrawals and -generate the correct outputs to include in the outputs list of $\var{tx}$ such -that applying this transaction results in a -valid ledger update adding correct amounts of coin to the right addresses. - -The approach of including refunds and rewards directly in the $outputs$ gives -great flexibility to the management of the coin value obtained from these -accounts, i.e.~it can be directed to any address. However, it means there is no -direct link between the $wdrls$ requests (similarly for the key deregistration -certificate addresses and refund amounts) and the $outputs$. We verify that -the included outputs are correct and authorized through the preservation of value condition -and witnessing the transaction. The combination of the -preservation of value and witnessing, described in Section~\ref{sec:witnesses-shelley}, -assures that the ledger state is updated correctly. - -The main difference, however, in how rewards and refunds work is that refunds -come from the $\var{deposited}$ pot, which is a single coin value indicating -the sum of all the deposits, while rewards come from individual -accounts where a reward is accumulated to a specific address. - -\begin{figure}[htb] - \begin{equation}\label{eq:utxo-inductive-shelley} - \inference[UTxO-inductive] - { \var{txb}\leteq\txbody{tx} - & \txttl txb \geq \var{slot} - \\ \txins{txb} \neq \emptyset - & \minfee{pp}{tx} \leq \txfee{txb} - & \txins{txb} \subseteq \dom \var{utxo} - \\ - \consumed{pp}{utxo}~{txb} = \produced{pp}{poolParams}~{txb} - \\ - ~ - \\ - { - \begin{array}{r} - \var{slot} \\ - \var{pp} \\ - \var{genDelegs} \\ - \end{array} - } - \vdash \var{ppup} \trans{\hyperref[fig:rules:pp-update]{ppup}}{\fun{txup}~\var{tx}} \var{ppup'} - \\ - ~ - \\ - \forall (\wcard\mapsto (\wcard,~c)) \in \txouts{txb}, c \geq (\fun{minUTxOValue}~\var{pp}) - \\ - \forall (\wcard\mapsto (a,~\wcard)) \in \txouts{txb}, a \in \AddrBS \Rightarrow \fun{bootstrapAttrsSize}~a \leq 64 - \\ - \forall (\wcard\mapsto (a,~\wcard)) \in \txouts{txb}, \fun{netId}~a =\NetworkId - \\ - \forall (a\mapsto\wcard) \in \txwdrls{txb}, \fun{netId}~a =\NetworkId - \\ - \fun{txsize}~{tx}\leq\fun{maxTxSize}~\var{pp} - \\ - ~ - \\ - \var{refunded} \leteq \keyRefunds{pp}{txb} - \\ - \var{depositChange} \leteq - \totalDeposits{pp}{poolParams}{(\txcerts{txb})} - \var{refunded} - } - { - \begin{array}{r} - \var{slot}\\ - \var{pp}\\ - \var{poolParams}\\ - \var{genDelegs}\\ - \end{array} - \vdash - \left( - \begin{array}{r} - \var{utxo} \\ - \var{deposited} \\ - \var{fees} \\ - \var{ppup}\\ - \end{array} - \right) - \trans{utxo}{tx} - \left( - \begin{array}{r} - \varUpdate{(\txins{txb} \subtractdom \var{utxo}) \cup \outs{txb}} \\ - \varUpdate{\var{deposited} + \var{depositChange}} \\ - \varUpdate{\var{fees} + \txfee{txb}} \\ - \varUpdate{ppup'}\\ - \end{array} - \right) - } - \end{equation} - \caption{UTxO inference rules} - \label{fig:rules:utxo-shelley} -\end{figure} - -The UTXO rule has ten predicate failures: -\begin{itemize} -\item In the case of any input not being valid, there is a \emph{BadInput} - failure. -\item In the case of the current slot being greater than the time-to-live of the - current transaction, there is an \emph{Expired} failure. -\item In the case that the transaction is too large, - there is a \emph{MaxTxSize} failure. -\item In the case of an empty input set, there is a \emph{InputSetEmpty} failure, - in order to prevent replay attacks. -\item If the fees are smaller than the minimal transaction fees, there is a - \emph{FeeTooSmall} failure. -\item If the transaction does not correctly conserve the balance, there is a - \emph{ValueNotConserved} failure. -\item If the transaction creates any outputs with the wrong network ID, - there is a \emph{WrongNetwork} failure. -\item If the transaction contains any withdrawals with the wrong network ID, - there is a \emph{WrongNetworkWithdrawal} failure. -\item If the transaction creates an output below the allowed minimum value, - there is a \emph{OutputTooSmall} failure. -\item If the transaction creates any boostrap outputs whose attributes have - size bigger than 64, there is a \emph{OutputBootAddrAttrsTooBig} failure. -\end{itemize} - -\clearpage - -\subsection{Deposits and Refunds} -\label{sec:deps-refunds} - -Deposits are described in appendix B.2 of the delegation design document -\cite{delegation_design}. These deposit functions were used above in the UTxO -transition,~\ref{sec:utxo-trans}. Deposits are used for stake credential -registration and pool registration certificates, which will be explained in -Section~\ref{sec:delegation-shelley}. In particular, the function -$\cwitness{}$, which gets the certificate witness from a certificate, will be -defined later. Figure~\ref{fig:functions:deposits-refunds} defines the deposit -and refund functions. -\begin{itemize} - \item The function $\fun{totalDeposits}$ returns the total deposits that have to be - made by a transaction. This calculation uses two protocol parameters, namely - the key deposit value and the pool deposit value. - Note that those certificates which are - updates of stake pool parameters of already registered pool keys should not - (and are, in fact, not allowed to) make a deposit. - \item The function $\fun{keyRefunds}$, calculates the total amount of returned - deposits from stake key deregistration certificates. - - Note that $\fun{keyRefunds}$ uses the \textit{current} protocol parameters. - This means that any deposits made prior to a change in the deposit values - will be refunded with the current value, not the one originally paid. - - The protocol parameters are not - expected to change often and using the current ones for the calculation - is a deliberate simplification choice, which does not introduce any inconsistencies - into the system rules or properties. In particular, the general accounting - property is not violated. -\end{itemize} - -\begin{figure}[htb] - \begin{align*} - & \fun{totalDeposits} \in \PParams \to (\KeyHash_{pool}\mapsto\PoolParam) \\ - & ~~~~\to \seqof{\DCert} \to \Coin - & \text{total deposits for a tx} \\ - & \totalDeposits{pp}{poolParams}{certs} = \\ - & ~~~ (\fun{keyDeposit}~pp)\cdot|\var{certs}\cap\DCertRegKey| \\ - & ~~~~~ + (\fun{poolDeposit}~pp)\cdot|\{\cwitness{c} ~\mid c\in~\var{newPools}\}| \\ - & ~~~\where \\ - & ~~~~~~~ \var{newPools} = \{c ~\mid~ c\in\var{certs}\cap\DCertRegPool,~\cwitness{c}\notin \var{poolParams}\} - \nextdef - & \fun{keyRefunds} \in \PParams \to \TxBody \to \Coin - & \text{key refunds for a tx} \\ - & \keyRefunds{pp}{tx} = (\fun{keyDeposit}~\var{pp})\cdot|\txcerts{tx} \cap \DCertDeRegKey|\\ - \end{align*} - \caption{Functions used in Deposits - Refunds} - \label{fig:functions:deposits-refunds} - \end{figure} - -\clearpage - -\subsection{Witnesses} -\label{sec:witnesses-shelley} - -The purpose of witnessing is make sure that the intended action is authorized by -the holder of the signing key, providing replay protection as a consequence. -Replay prevention is an inherent property of UTxO type accounting -since transaction IDs are unique and we require all transaction to -consume at least one input. - -A transaction is witnessed by a signature and a verification key corresponding -to this signature. The witnesses, together with the transaction body, form a -full transaction. Every witness in a transaction signs the transaction body. -Moreover, the witnesses are represented as finite maps from verification keys to -signatures, so that any key that is required to sign a transaction only provides -a single witness. This means that, for example, a transaction which includes a -delegation certificate and a reward withdrawal corresponding to the same stake -credential still only includes one signature. - -Figure~\ref{fig:functions-witnesses} defines the function which -gathers all the (hashes of) verification keys needed to witness a given transaction. -This consists of: -\begin{itemize} - \item payment keys for outputs being spent - \item stake credentials for reward withdrawals - \item stake credentials for delegation certificates (except \DCertMir{} and \DCertRegKey{}) - \item delegates of the genesis keys for any protocol parameter updates - \item stake credentials for the pool owners in a pool registration certificate -\end{itemize} - -\begin{figure}[htb] - \begin{align*} - & \fun{propWits} \in \Update \to \GenesisDelegation \to \powerset{\KeyHash} - & \text{hashkeys for proposals} \\ - & \fun{propWits}~(\var{pup},~\wcard)~\var{genDelegs} = \\ - & ~~\left\{ - \var{kh} - \mid - \var{gkh}\mapsto(\var{kh},~\wcard)\in - \left(\dom{\var{pup}}\restrictdom\var{genDelegs}\right) - \right\} - \end{align*} - - \begin{align*} - & \hspace{-0.8cm}\fun{certWitsNeeded} \Tx \to \powerset{\Credential} - & \text{certificates with witnesses} \\ - & \hspace{-0.8cm}\fun{certWitsNeeded}~\var{tx} = \\ - & \bigcup\{\cwitness{c} \mid c \in \txcerts{tx} \setminus (\DCertRegKey\cup\DCertMir)\} - \end{align*} - - \begin{align*} - & \hspace{-0.8cm}\fun{witsVKeyNeeded} \in \UTxO \to \Tx \to (\KeyHashGen\mapsto\VKey) \to - \powerset{\KeyHash} - & \text{required key hashes} \\ - & \hspace{-0.8cm}\fun{witsVKeyNeeded}~\var{utxo}~\var{tx}~\var{genDelegs} = \\ - & ~~\{ \fun{paymentHK}~a \mid i \mapsto (a, \wcard) \in \var{utxo},~i\in\fun{txinsVKey}~{tx} \} \\ - \cup & ~~ - \{\fun{stakeCred_r}~a\mid a\mapsto \wcard \in \AddrRWDVKey - \restrictdom \txwdrls{tx}\}\\ - \cup & ~~(\AddrVKey \cap \fun{certWitsNeeded}~{tx}) \\ - \cup & ~~\fun{propWits}~(\fun{txup}~\var{tx})~\var{genDelegs} \\ - \cup & ~~\bigcup_{\substack{c \in \txcerts{tx} \\ ~c \in\DCertRegPool}} \fun{poolOwners}~{c} - \end{align*} - \begin{align*} - & \hspace{-1cm}\fun{scriptsNeeded} \in \UTxO \to \Tx \to - \powerset{\HashScr} - & \text{required script hashes} \\ - & \hspace{-1cm}\fun{scriptsNeeded}~\var{utxo}~\var{tx} = \\ - & ~~\{ \fun{validatorHash}~a \mid i \mapsto (a, \wcard) \in \var{utxo},\\ - & ~~~~~i\in\fun{txinsScript}~{(\fun{txins~\var{tx}})}~{utxo}\} \\ - \cup & ~~\{ \fun{stakeCred_{r}}~\var{a} \mid a \in \dom (\AddrRWDScr - \restrictdom \fun{txwdrls}~\var{tx}) \} \\ - \cup & ~~(\AddrScr \cap \fun{certWitsNeeded}~{tx}) - \end{align*} - \caption{Functions used in witness rule} - \label{fig:functions-witnesses} -\end{figure} - -The UTxOW transition system adds witnessing to the previous UTxO transition system. -Figure~\ref{fig:ts-types:utxow-shelley} defines the type for this transition. - -\begin{figure} - \emph{UTxO with witness transitions} - \begin{equation*} - \var{\_} \vdash - \var{\_} \trans{utxow}{\_} \var{\_} - \subseteq \powerset (\UTxOEnv \times \UTxOState \times \Tx \times \UTxOState) - \end{equation*} - \caption{UTxO with witness transition-system types} - \label{fig:ts-types:utxow-shelley} -\end{figure} - -Figure~\ref{fig:rules:utxow-shelley} defines UTxOW transition. -It has six predicates: -\begin{itemize} - \item Every signature in the transaction is a valid signature of the transaction body. - \item The set of (hashes of) verification keys given by the transaction is a subset of - the set of needed (hashes of) verification keys. - \item Every multisignature script is valid. - \item The set of scripts given by the transaction is equal to the set of required scripts. - \item Any instantaneous reward certificates have quorum agreement from the genesis nodes delegates. - \item Either the transaction metadata hash and the transaction metadata are both absent, - or the hash present in the body is actually equal to the hash of the metadata. -\end{itemize} -If the predicates are satisfied, the state is transitioned by the UTxO transition rule. - -\begin{figure} - \begin{equation} - \label{eq:utxo-witness-inductive-shelley} - \inference[UTxO-wit] - { - (utxo, \wcard, \wcard, \wcard) \leteq \var{utxoSt} \\ - \var{witsKeyHashes} \leteq \{\fun{hashKey}~\var{vk} \vert \var{vk} \in - \dom (\txwitsVKey{tx}) \}\\~\\ - \forall \var{hs} \mapsto \var{validator} \in \fun{txwitsScript}~{tx},\\ - \fun{hashScript}~\var{validator} = \var{hs} \wedge - \fun{validateScript}~\var{validator}~\var{tx}\\~\\ - \fun{scriptsNeeded}~\var{utxo}~\var{tx} = \dom (\fun{txwitsScript}~{tx}) - \\~\\ - \var{txbodyHash}\leteq\fun{hash}~(\txbody{tx}) \\ - \forall \var{vk} \mapsto \sigma \in \txwitsVKey{tx}, - \mathcal{V}_{\var{vk}}{\serialised{txbodyHash}}_{\sigma} \\ - \fun{witsVKeyNeeded}~{utxo}~{tx}~{genDelegs} \subseteq witsKeyHashes - \\~\\ - genSig \leteq - \left\{ - \var{genDelegate}~\vert~(\var{genDelegate},~\wcard) \in\range{genDelegs} - \right\} - \cap - \var{witsKeyHashes} - \\ - \left\{ - c\in\txcerts{tx}~\cap\DCertMir - \right\} \neq\emptyset \implies \vert genSig\vert \geq \Quorum - \\~\\ - \var{mdh}\leteq\fun{txMDhash}~\var{tx} - & - \var{md}\leteq\fun{txMD}~\var{tx} - \\ - (\var{mdh}=\Nothing \land \var{md}=\Nothing) - \lor - (\var{mdh}=\fun{hashMD}~\var{md}) - \\~\\ - { - \begin{array}{r} - \var{slot}\\ - \var{pp}\\ - \var{poolParams}\\ - \var{genDelegs}\\ - \end{array} - } - \vdash \var{utxoSt} \trans{\hyperref[fig:rules:utxo-shelley]{utxo}}{tx} - \var{utxoSt'}\\ - } - { - \begin{array}{r} - \var{slot}\\ - \var{pp}\\ - \var{poolParams}\\ - \var{genDelegs}\\ - \end{array} - \vdash \var{utxoSt} \trans{utxow}{tx} \varUpdate{\var{utxoSt'}} - } - \end{equation} - \caption{UTxO with witnesses inference rules} - \label{fig:rules:utxow-shelley} -\end{figure} - -The UTXOW rule has eight predicate failures: -\begin{itemize} -\item In the case of an incorrect witness, - there is a \emph{InvalidWitnesses} failure. -\item In the case of a missing witness, - there is a \emph{MissingVKeyWitnesses} failure. -\item In the case of missing scripts, - there is a \emph{MissingScriptWitnesses} failure. -\item In the case of an invalid script, - there is a \emph{ScriptWitnessNotValidating} failure. -\item In the case of a lack of quorum on an instantaneous reward certificate, - there is a \emph{MIRInsufficientGenesisSigs} failure. -\item In the case the transaction contains metadata, - but the transaction body does not contain a metadata hash, - there is a \emph{MissingTxBodyMetadataHash} failure. -\item In the case that the transaction body contains a metadata hash, - but there is no metadata outside the body, - there is a \emph{MissingTxMetadata} failure. -\item In the case that the metadata hash in the transaction body - is not equal to the hash of the metadata outside the body, - there is a \emph{ConflictingMetadataHash} failure. -\end{itemize} - -\clearpage diff --git a/eras/shelley/impl/.ghcid b/eras/shelley/impl/.ghcid deleted file mode 100644 index fe53df69d67..00000000000 --- a/eras/shelley/impl/.ghcid +++ /dev/null @@ -1 +0,0 @@ ---command="cabal repl --repl-options='-isrc -fwarn-unused-binds -fwarn-unused-imports -fno-code -fobject-code -g2 -fno-break-on-exception -fno-break-on-error -ferror-spans -j -Wno-unused-packages'" --clear --no-height-limit --reverse-errors --reload=../../../ --outputfile=/tmp/cardano-ledger-shelley-ghcid.txt \ No newline at end of file diff --git a/eras/shelley/impl/CHANGELOG.md b/eras/shelley/impl/CHANGELOG.md deleted file mode 100644 index 2ce9a47fb6a..00000000000 --- a/eras/shelley/impl/CHANGELOG.md +++ /dev/null @@ -1,461 +0,0 @@ -# Version history for `cardano-ledger-shelley` - -## 1.10.1.0 - -* - -### `testlib` - -* Add functions to Shelley `ImpTest`: - * `withFixup` - * `withCustomFixup` - * `withPreFixup` - * `withPostFixup` -* Add `ToExpr` and `NFData` instances for `UtxoEnv` - -## 1.10.0.0 - -* Remove the `PParams` param from `validateMissingScripts` -* Remove the `missingScriptsSymmetricDifference` function -* Add `NFData` instance for `AdaPots`, `ShelleyDelegEvent` -* Add `Generic`, `Eq` and `NFData` instances for: - * `ShelleyDelegsEvent` - * `ShelleyDelplEvent` - * `ShelleyEpochEvent` - * `ShelleyLedgerEvent` - * `ShelleyMirEvent` - * `ShelleyNewEpochEvent` - * `PoolEvent` - * `PoolReap` - * `PpupEvent` - * `RupdEvent` - * `SnapEvent` - * `ShelleyTickEvent` - * `UtxoEvent` - * `ShelleyUtxowEvent` -* Rename `NewEpoch` constructor of `ShelleyDelegEvent` to `DelegNewEpoch` -* Rename `ShelleyGovState` fields: - * `proposals` to `sgsCurProposals` - * `futureProposals` to `sgsFutureProposals` - * `sgovPp` to `sgsCurPParams` - * `sgovPrevPp` to `sgsPrevPParams` -* Change `UPEC` environment to `LedgerState` -* Rename `currentPp` to `usCurPParams` and `ppupState` to `usGovState` -* Change `ApplyTxError`, `TickTransitionError` and `BlockTransitionError` - to use `NonEmpty (PredicateFailure _)` instead of `[PredicateFailure _]` -* Removed `prettyWitnessSetParts` -* Re-implemented `ShelleyTxWits` with `MemoBytes` -* Re-implemented `ShelleyTxAuxData` with `MemoBytes` -* Remove `getNextEpochCommitteeMembers` from `EraGov` -* Deprecated `PPUPPredFailure` -* Add instances for `InjectRuleFailure` and switch to using `injectFailure` -* Remove `poolCertTransition` -* Remove `getDRepDistr`, `getConstitution` and `getCommitteeMembers` from `EraGov` #4033 - * Move `Constitution` to `Conway.Governance.Procedures` -* Deprecated `keyBy` -* Add `getShelleyMinFeeTxUtxo` -* Add implementation for `getMinFeeTxUtxo` -* Remove deprecated functions from `Wallet`: `evaluateMinFee` and `evaluateTransactionFee` -* Replace `depositsAdaPot` in `AdaPots` with `obligationsPot` -* Add `sumAdaPots` -* Deprecate `delPlAcnt` in favor of `delPlAccount` -* Rename `RewardAccount` fields `getRwdNetwork` and `getRwdCred` to `raNetwork` and `raCredential` respectively -* Deprecate `prAcnt` in favor of `prAccountState` -* Deprecate `RewardAcnt` in favor of `RewardAccount` -* Remove `registerInitialFunds` and `registerInitialStaking` -* Add `registerInitialFundsThenStaking` -* Modify `PParams` JSON instances to match `cardano-api` -* Add wrapper to `PParams` in `ShelleyGenesis` to preserve the legacy behaviour of JSON instances - -### `testlib` - -* Add `ToExpr` instances for: - * `ShelleyDelegsEvent` - * `ShelleyDelplEvent` - * `ShelleyEpochEvent` - * `ShelleyLedgerEvent` - * `ShelleyMirEvent` - * `ShelleyNewEpochEvent` - * `PoolEvent` - * `PoolReap` - * `PpupEvent` - * `RupdEvent` - * `SnapEvent` - * `ShelleyTickEvent` - * `UtxoEvent` - * `ShelleyUtxowEvent` -* Add `SomeSTSEvent` -* Replaced `small-steps-test` dependency with `small-steps:testlib` -* Change `submitFailingTx`, `tryRunImpRule` and `trySubmitTx` - to use `NonEmpty (PredicateFailure _)` instead of `[PredicateFailure _]` -* Added `ToExpr` instance for `ShelleyTxWitsRaw` -* Add `RuleListEra` instance for Shelley -* Add argument to `impSatisfyNativeScript` that accounts for already satisifed witnesses -* Remove `impFreshIdxL` -* Remove root coin argument from `initImpNES`, `initShelleyImpNES` -* Adjust `sendCointTo` and `sendValueTo` to return `TxIn` -* Added `ToExpr` instance for `ShelleyTxAuxDataRaw` -* Add: - * `PlutusArgs` - * `ScriptTestContext` - * `shelleyFixupTx` - * `impGetScriptTestContext` - * `impGetScriptContextMaybe` - * `updateAddrTxWits` - * `addNativeScriptTxWits` - * `addRootTxIn` - * `fixupFees` - * `logFeeMismatch` - * `impScriptsL` - * `impNativeScriptsG` -* Add: - * `expectRegisteredRewardAddress` - * `expectNotRegisteredRewardAddress` - * `expectTreasury` -* Add `ToExpr` instances for `AdaPots` and `Obligations` - -## 1.9.0.0 - -* Add `getShelleyGenesisKeyHashCountTxBody` -* Change `PPUP` signal to `StrictMaybe` from `Maybe` -* Deprecate `txup` function. -* Prevent instances for `SahelleyEraTxBody` starting with protocol version 9. -* Add `ToJSON` instance for `ShelleyTxCert`, `ShelleyDelegCert`, `MIRCert`, `MIRTarget`, - `MIRPot` and `GenesisDelegCert` -* Deprecate `evaluateTransactionFee` in favor of `Cardano.Ledger.Api.Tx.estimateMinFeeTx` -* Change the type signature and the logic in `validateNeededWitnesses` -* Add `getShelleyWitsVKeyNeeded` and `getShelleyWitsVKeyNeededNoGov` -* Deprecate `witsVKeyNeededNoGov` and `shelleyWitsVKeyNeeded` -* Get rid of `ueGenDelegs` and `ueGenDelegsL` as unnecessary. -* Change the signature of `protectMainnet` to make it work with any - `TransitionConfig` -* Add `protectMainnetLens` -* Add `tcNetworkIDG` -* Add `sgInitialFundsL` and `sgStakingL` -* Stop exporting all of the internal `hkd*` functions and `PParamsHKD` from - `Cardano.Ledger.Shelley.Core`. -* Deprecated unused `hashMultiSigScript`, `txwitsScript` -* Delete deprecated modules: - * `Cardano.Ledger.Shelley.Orphans` - * `Cardano.Ledger.Shelley.Delegation.PoolParams` - * `Cardano.Ledger.Shelley.LedgerState.RefundsAndDeposits` -* Remove deprecated functions: `updateTxBodyG`, `totalCertsDeposits`, - `totalCertsDepositsCertState`, `totalTxRefundsShelley`, `keyCertsRefunds`, - `keyCertsRefundsCertState`, `totalTxDeposits`, `totalTxDepositsShelley` `minfee`, - `extractKeyHashWitnessSet`, `witKeyHash`, `wvkBytes`, `validateNativeMultiSigScript`, - `evalNativeMultiSigScript`, `diffWitHashes`, `nullWitHashes`, `unWitHashes` and - `emptyDState` -* Remove deprecated type: `WitHashes` -* Stop exporting `ShelleyTxBody`, `ShelleyTxOut`, `TxIn`, `TxId` from - `Cardano.Ledger.Shelley.Tx` -* Stop exporting `GenesisDelegCert`, `MIRCert`, `MIRPot`, `MIRTarget`, `ShelleyDelegCert`, - `PoolCert`, `PoolMetadata`, `PoolParams`, `Ptr`, `StakePoolRelay`, `TxOut`, - `ShelleyTxOut`, `Url`, `SizeOfPoolRelays`, `SizeOfPoolOwners`, `Delegation`, - `addrEitherShelleyTxOutL`, `valueEitherShelleyTxOutL`, `nativeMultiSigTag` and - `Cardano.Ledger.Keys.WitVKey` module from `Cardano.Ledger.Shelley.TxBody` -* Export `RegTxCert`, `UnRegTxCert`, `DelegStakeTxCert` and `GenesisDelegTxCert` from - `Cardano.Ledger.Shelley.Core`. -* Change the type of `ppEMaxL` -* Change the type of `pvCanFollow` to make sure new protocol version is not optional -* Add `hasLegalProtVerUpdate` - -### `testlib` - -* Add `freshKeyHashVRF` -* Add `registerPool` -* Add `sendValueTo` and `sendCoinTo` -* Add `dispenseIndex` -* Add `fixupTx`, `impAddNativeScript` and `logToExpr` -* Remove `mkTxWits` -* Add `impNESG`, `impLastTickG`, `impKeyPairsG` and `impScriptsG`. Stop exporting - `impNESL` and `impLastTickL` -* Add `impScripts` and `impScriptsG` -* Add `impSatisfyNativeScript` and `impShelleySatisfyNativeScript` -* Rename `emptyImpNES` to `initImpNES` -* Rename `emptyShelleyImpNES` to `initShelleyImpNES` -* Add `lookupImpRootTxOut` and remove `impRootTxCoin` -* Add `submitTx_`, `submitTxAnn` and `submitTxAnn_`. -* Change type signature for `submitTx` and `trySubmitTx`. -* Add `tryRunImpRule` -* Extract `impWitsVKeyNeeded` from the `ShelleyEraImp` type class and make it into an - `ImpTestM` action -* Add `fixupFees` `impLastTickL` `withNoFixup` `ImpTestEnv` `iteDoFixupL` -* Add `runImpTestM`, `runImpTestM_`, `evalImpTestM` and `execImpTestM` -* Add instance `Example (a -> ImpTestM era ())`, which allows use of `Arbitrary` -* Add `getNextEpochCommitteeMembers` to `EraGov` typeclass, with a default empty implementation -* Add `TxUTxODiff (UTxO era) (UTxO era)` inhabitant to the `UtxoEvent era` data type. - -## 1.8.0.0 - -* Add `shelleyTotalDepositsTxCerts` and `shelleyTotalRefundsTxCerts` -* Remove dead functions: `depositPoolChange` and `reapRewards` -* Move `getTotalDepositsTxBody` and `getTotalRefundsTxBody` into - `cardano-ledger-core:Cardano.Ledger.Core.EraTxBody` from `ShelleyEraTxBody` -* Change type signature and behavior of `updateUTxOState` -* Deprecate `totalCertsDeposits`, `totalCertsDepositsCertState`, `totalTxDepositsShelley`, - `keyCertsRefundsCertState`, `keyCertsRefunds` and `totalTxRefundsShelley` - -### `testlib` - -* Provide CDDL spec files with `readBabbageCddlFileNames` and `readBabbageCddlFiles` from - `Test.Cardano.Ledger.Babbage.Binary.Cddl` -* Remove `impExpectFailure` in favor of `expectLeft` -* Remove `impExpectSuccess` in favor of `expectRightDeep` -* Remove `itM` in favor of `it` -* Remove `impIOMsg` in favor of new `impAnn` -* Remove `impIO` and `predicateFailureShouldBe` as no longer needed -* Add `withImpState` -* Expose type `ImpTestState` -* Add `Example` instance for `ImpTestM` - -## 1.7.0.0 - -* Change the return type of `getCommitteeMembers` -* Remove `validateDelegationRegistered` in favor of a new and more specific validating - function `validateStakePoolDelegateeRegistered`. -* Add `ToExpr` instances for: - * `ShelleyDelegPredFailure` - * `ShelleyDelegsPredFailure` - * `ShelleyDelplPredFailure` - * `ShelleyEpochPredFailure` - * `ShelleyLedgerPredFailure` - * `ShelleyPpupPredFailure` - * `ShelleyUtxoPredFailure` - * `VotingPeriod` -* Add `NFData` instances for: - * `ShelleyMirPredFailure` - * `ShelleyNewEpochPredFailure` - * `ShelleyNewppPredFailure` - * `ShelleyPoolreapPredFailure` - * `ShelleySnapPredFailure` - * `ShelleyUpecPredFailure` -* Add `epochStateGovStateL` -* Add `shelleyCommonPParamsHKDPairsV8` -* Add `ToExpr` instances for: - * `ShelleyPoolPredFailure` - * `ShelleyUtxowPredFailure` -* Add `NFData` instance for: - * `ShelleyRupdPredFailure` - * `ShelleyTickPredFailure` -* Rename `validateFailedScripts` to `validateFailedNativeScripts` and change its - arguments. -* Change type of `validateMissingScripts` - -### `testlib` - -* Add `Test.Cardano.Ledger.Shelley.ImpTest` -* Add `Test.Cardano.Ledger.Shelley.ImpTestSpec` -* Add `EraImpTest` instance for `ShelleyEra` - -## 1.6.1.0 - -* Add `ToExpr` instance for: - * `Update` - * `ShelleyTx` - * `ShelleyTxBody` - * `ShelleyTxWits` -* Add `Generic` instance for `ShelleyTx` -* Add `Memoized` instance for `ShelleyTx` -* Introduce `Cardano.Ledger.Shelley.Transition` module with `EraTransition` interface. -* Deprecated `CanStartFromGenesis` interface in favor of `EraTransition` -* Add `Semigroup` and `Monoid` instances for `ShelleyGenesisStaking` -* Add `FromJSON` instance for `Constitution` - -### `testlib` - -* Add `Arbitrary` instance for `Constitution` -* `Test.Cardano.Ledger.Shelley.Binary.RoundTrip` module with: - * `roundTripShelleyCommonSpec` - * `roundTripStateEraTypesSpec` - -## 1.6.1.0 - -* Add lens `epochStateTreasuryL` #3748 - -## 1.6.0.0 - -* Deprecate `isRegKey` and `isDeRegKey` in favor of `isRegStakeTxCert` and `isUnRegStakeTxCert` #3700 -* Add lenses for `UTxOEnv` #3688 -* Add `getTotalTxDepositsBody` to `ShelleyEraTxBody` -* Add `obligationGovState` to `EraGov` -* Add `ToExpr` instance to `Constitution` -* Replace `obligationCertState` with `totalObligation` -* Deprecated `totalTxDeposits` -* Add `potEqualsObligation` -* Add `shelleyLedgerAssertions` -* Add `totalTxDepositsShelley` -* Add `eqMultiSigRaw`, `shelleyEqTxRaw` and `shelleyEqTxWitsRaw` -* Add `EqRaw` instance for `MultiSig`, `ShelleyTxWits`, `ShelleyTxAuxData`, `TxBody` and `Tx` -* Add `ToExpr` instance for `GenesisDelegCert`, `MIRPot`, `MirTarget`, `MIRCert`, - `ShelleyTxCert`, `ShelleyDelegCert`, `MultiSig` and `MultiSigRaw` - -## 1.5.1.0 - -* Add new lens `epochStateIncrStakeDistrL`, that points to the `credMap` field of - `IncrementalStake` from `EpochState` - -## 1.5.0.0 - -* Introduce `ShelleyPoolreapEnv` and replace `Environment` for `ShelleyPOOLREAP` -* Remove redundant reimplementation of lens function `%~`: `updateWithLens`. -* Change `getConstituitionHash` to `getConstitution` -* Replace `constitutionHash` with `constitutionAnchor` -* Add `upgradeShelleyTxCert` -* Rename `*governance*` to `*gov*` #3607 - * `EraGovernance` to `EraGov` - * `GovernanceState` to `GovState` - * `witsVKeyNeededNoGovernance` to `witsVKeyNeededNoGov` - * `witsVKeyNeededGovernance` to `witsVKeyNeededGov` - * `utxosGovernance` to `utxosGovState` -* Filter out zero valued `TxOut`'s on Byron/Shelley boundary. -* Rename `getProducedValue` to `shelleyProducedValue` -* Change the constraints on `produced` and `evaluateTransactionBalance` -* Add `lsCertStateL` -* Make new `Constitution` datatype #3556 - * Adopt some Default instances for example SafeHash -* Add new methods to `EraGovernance`: - * `curPParamsGovStateL` - * `prevPParamsGovStateL` -* Rename `ShelleyPPUPState` to `ShelleyGovState` -* Add new fields to `ShelleyGovState`: - * `sgovPp` - * `sgovPrevPp` -* Add lenses: - * `proposalsL` - * `futureProposalsL` - * `esAccountStateL` - * `esSnapshotsL` - * `esNonMyopicL` -* Remove `esPrevPp` and `esPp` from `EpochState` -* Rename `esPrevPpL` to `prevPParamsEpochStateL` -* Rename `esPpL` to `curPParamsEpochStateL` -* Swap the order of `esSnapshots` and `esLState` in `EpochState` -* Add lenses: - * `lsCertStateL` - * `utxosStakeDistrL` - * `utxosDonationL` - * `utxosUtxoL` - * `utxosDepositedL` - * `esAccountStateL` - * `asTreasuryL` - * `asReservesL` - -## 1.4.2.0 - -* Add implementation for `spendableInputsTxBodyL` -* Fix an issue with where `witsVKeyNeededNoGovernance` and `witsVKeyNeeded` required - witnesses for `allInputsTxL`, which affected reference inputs in Babbage. - -## 1.4.1.0 - -* Add `getConstitutionHash` to `EraGovernance` #3506 - * Also add `nesEpochStateL` to `LedgerState.Types` - -## 1.4.0.0 - -* Deprecated `updateTxBodyG` -* Changed the argument types of `witsVKeyNeeded` -* Changed the signature of `validateNeededWitnesses` -* Added `witsVKeyNeededGovernance` and `witsVKeyNeededNoGovernance` -* Added protocol version bound to - * `STS (ShelleyUTXOW era)` instance - * `transitionRulesUTXOW` - * `witsVKeyNeeded` -* Prevent using `getMirTxCert` from being used in eras after Babbage. This also affects - all functions that use it -* Prevent using `mkGenesisDelegTxCert`, `getGenesisDelegTxCert` and `GenesisDelegTxCert` - from being used in eras after Babbage. This also affects all functions that use those - functions and patern synonym -* Remove `WrongCertificateTypePOOL` as an impossible case. - -## 1.3.0.0 - -* Deprecated `poolSpec` function -* Deprecated `Cardano.Ledger.Shelley.Delegation.Certificates` and - `Cardano.Ledger.Shelley.Delegation.PoolParams` modules -* Added `Cardano.Ledger.Shelley.TxCert` module -* Make `DCert` parameterized on `era` instead of `c`rypto and rename it as `ShelleyTxCert`: - * `DCertDelegCert` -> `ShelleyTxCertDeleg` - * `DCertPool` -> `ShelleyTxCertPool` - * `DCertGenesis` -> `ShelleyTxCertGenesis` - * `DCertMir` -> `ShelleyTxCertMir` -* Introduce `TxCert` type family with pattern synonyms and rename the actual `DCert` type into - `ShelleyTxCert` -* Introduce `ShelleyEraTxCert` type class. -* Add `EraTxCert` and `ShelleyEraTxCert` instances to `ShelleyEra` -* Remove `certsTxBodyL` and `certsTxBodyG` from `ShelleyEraTxBody`. Former migrated to `EraTxBody`. -* Add helper functions `shelleyTxCertDelegDecoder`, `commonTxCertDecoder`, `encodeShelleyDelegCert`, - `encodePoolCert` and `encodeConstitutionalCert` -* Deprecate: - * `RegKey` in favor of `ShelleyRegCert` - * `DeRegKey` in favor of `ShelleyUnRegCert` - * `Delegate` in favor of `ShelleyDelegCert` -* Addition of `getVKeyWitnessShelleyTxCert` and `getScriptWitnessShelleyTxCert` -* Deprecate: - * `extractKeyHashWitnessSet` in favor of `credKeyHashWitness` - * `scriptCred` in favor of `credScriptHash` - * `scriptStakeCred` in favor of `getScriptWitnessTxCert` - * `requiresVKeyWitness` in favor of `getVKeyWitnessTxCert` - * `delegCWitness` - no longer used. - * `propWits` - will become an internal function in the future version -* `validateNeededWitnesses` no longer accepts `witsVKeyNeeded` as an argument. -* Move `ConstitutionalDelegCert` from `cardano-ledger-core` as `GenesisDelegCert`. -* Fixed `NoThunks (ShelleyGenesis c)` instance, as it was incorrectly disallowing thunks in its `sgInitialFunds` and `sgStaking` fields - -## 1.2.0.0 - -* Replace `DPState c` with `CertState era` -* Parametrize `DState` and `PState` by era -* Rename `obligationDPState` to `obligationCertState` -* Rename `keyCertsRefundsDPState` to `keyCertsRefundsCertState` -* Rename `totalCertsDepositsDPState` to `totalCertsDepositsCertState` -* Added new functions to `DELEGS` rule - * `drainWithdrawals` - * `validateZeroRewards` - * `validateDelegationRegistered` - -## 1.1.1.0 - -* Disable `TICKF` rule optimization: [#3375](https://github.com/intersectmbo/cardano-ledger/pull/3375) - -## 1.1.0.0 - -* Added a default implementation for `emptyGovernanceState` -* Added lenses: - * `esAccountStateL` - * `esSnapshotsL` - * `esLStateL` - * `esPrevPpL` - * `esPpL` - * `esNonMyopicL` - * `lsUTxOState` - * `lsDPState` - * `utxosUtxo` - * `utxosDeposited` - * `utxosFees` - * `utxosGovernance` - * `utxosStakeDistr` -* Added `ToJSON` instance for `ShelleyTxOut` -* Added `ToJSON` instance for `AlonzoPParams StrictMaybe` -* Added `ToJSON (GovernanceState era)` superclass constraint for `EraGovernance` -* Added `ToJSON` instance for: - * `ShelleyTxOut` - * `AlonzoPParams StrictMaybe` - * `ProposedPPUpdates` and `ShelleyPPUPState` - * `AccountState`, `EpochState`, `UTxOState`, `IncrementalStake` and `LedgerState` - * `Likelihood` and `NonMyopic` - * `RewardUpdate` and `PulsingRewUpdate` -* Added of `ToJSON`/`FromJSON` instances for `LogWeight` -* Change `totalCertsDeposits` to accept a function that checks for registered pools, - rather than the `DPState`. Use `totalCertsDepositsDPState` for the previous behavior -* Added `getProducedValue` and `totalCertsDepositsDPState`. -* Deprecate `evaluateTransactionBalance` -* Change types in `StakePoolRetirementWrongEpochPOOL` from `Word64` to `EpochNo` - -### `testlib` - -* Consolidate all `Arbitrary` instances from the test package to under a new `testlib`. #3285 - -## 1.0.0.0 - -* First properly versioned release. diff --git a/eras/shelley/impl/Setup.hs b/eras/shelley/impl/Setup.hs deleted file mode 100644 index e8ef27dbba9..00000000000 --- a/eras/shelley/impl/Setup.hs +++ /dev/null @@ -1,3 +0,0 @@ -import Distribution.Simple - -main = defaultMain diff --git a/eras/shelley/impl/cardano-ledger-shelley.cabal b/eras/shelley/impl/cardano-ledger-shelley.cabal deleted file mode 100644 index a2ffe66f473..00000000000 --- a/eras/shelley/impl/cardano-ledger-shelley.cabal +++ /dev/null @@ -1,209 +0,0 @@ -cabal-version: 3.0 -name: cardano-ledger-shelley -version: 1.10.1.0 -license: Apache-2.0 -maintainer: operations@iohk.io -author: IOHK -synopsis: Shelley Ledger Executable Model -build-type: Simple -data-files: - cddl-files/shelley.cddl - cddl-files/crypto.cddl - cddl-files/extras.cddl - -extra-source-files: CHANGELOG.md - -source-repository head - type: git - location: https://github.com/intersectmbo/cardano-ledger.git - subdir: eras/shelley/impl - -flag asserts - description: Enable assertions - default: False - -library - exposed-modules: - Cardano.Ledger.Chain - Cardano.Ledger.Shelley - Cardano.Ledger.Shelley.Address.Bootstrap - Cardano.Ledger.Shelley.API - Cardano.Ledger.Shelley.API.ByronTranslation - Cardano.Ledger.Shelley.API.Genesis - Cardano.Ledger.Shelley.API.Validation - Cardano.Ledger.Shelley.API.Wallet - Cardano.Ledger.Shelley.API.Mempool - Cardano.Ledger.Shelley.API.Types - Cardano.Ledger.Shelley.AdaPots - Cardano.Ledger.Shelley.BlockChain - Cardano.Ledger.Shelley.Core - Cardano.Ledger.Shelley.Delegation.Certificates - Cardano.Ledger.Shelley.EpochBoundary - Cardano.Ledger.Shelley.Genesis - Cardano.Ledger.Shelley.Governance - Cardano.Ledger.Shelley.HardForks - Cardano.Ledger.Shelley.LedgerState - Cardano.Ledger.Shelley.Metadata - Cardano.Ledger.Shelley.PoolRank - Cardano.Ledger.Shelley.PoolParams - Cardano.Ledger.Shelley.PParams - Cardano.Ledger.Shelley.Rewards - Cardano.Ledger.Shelley.RewardProvenance - Cardano.Ledger.Shelley.RewardUpdate - Cardano.Ledger.Shelley.Scripts - Cardano.Ledger.Shelley.SoftForks - Cardano.Ledger.Shelley.StabilityWindow - Cardano.Ledger.Shelley.Rules - Cardano.Ledger.Shelley.Transition - Cardano.Ledger.Shelley.Translation - Cardano.Ledger.Shelley.Tx - Cardano.Ledger.Shelley.TxAuxData - Cardano.Ledger.Shelley.TxBody - Cardano.Ledger.Shelley.TxCert - Cardano.Ledger.Shelley.TxOut - Cardano.Ledger.Shelley.TxWits - Cardano.Ledger.Shelley.UTxO - Cardano.Ledger.Shelley.Rules.Reports - Cardano.Ledger.Shelley.Internal - - hs-source-dirs: src - other-modules: - Cardano.Ledger.Shelley.Era - Cardano.Ledger.Shelley.LedgerState.Types - Cardano.Ledger.Shelley.LedgerState.IncrementalStake - Cardano.Ledger.Shelley.LedgerState.NewEpochState - Cardano.Ledger.Shelley.LedgerState.PulsingReward - Cardano.Ledger.Shelley.Rules.Bbody - Cardano.Ledger.Shelley.Rules.Deleg - Cardano.Ledger.Shelley.Rules.Delegs - Cardano.Ledger.Shelley.Rules.Delpl - Cardano.Ledger.Shelley.Rules.Epoch - Cardano.Ledger.Shelley.Rules.Ledger - Cardano.Ledger.Shelley.Rules.Ledgers - Cardano.Ledger.Shelley.Rules.Mir - Cardano.Ledger.Shelley.Rules.NewEpoch - Cardano.Ledger.Shelley.Rules.Newpp - Cardano.Ledger.Shelley.Rules.Pool - Cardano.Ledger.Shelley.Rules.PoolReap - Cardano.Ledger.Shelley.Rules.Ppup - Cardano.Ledger.Shelley.Rules.Rupd - Cardano.Ledger.Shelley.Rules.Snap - Cardano.Ledger.Shelley.Rules.Tick - Cardano.Ledger.Shelley.Rules.Upec - Cardano.Ledger.Shelley.Rules.Utxo - Cardano.Ledger.Shelley.Rules.Utxow - - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wpartial-fields - -Wunused-packages - - build-depends: - base >=4.14 && <5, - aeson >=2, - bytestring, - cardano-crypto-class, - cardano-crypto-wrapper, - cardano-data ^>=1.2.2, - cardano-ledger-binary ^>=1.3, - cardano-ledger-byron, - cardano-ledger-core ^>=1.11.1, - cardano-slotting, - vector-map ^>=1.1, - containers, - data-default-class, - deepseq, - groups, - heapwords, - mtl, - microlens, - nothunks, - quiet, - set-algebra >=1.0, - small-steps >=1.1, - cardano-strict-containers, - text, - time, - transformers, - validation-selective - - if flag(asserts) - ghc-options: -fno-ignore-asserts - -library testlib - exposed-modules: - Test.Cardano.Ledger.Shelley.Arbitrary - Test.Cardano.Ledger.Shelley.Binary.Cddl - Test.Cardano.Ledger.Shelley.Binary.Golden - Test.Cardano.Ledger.Shelley.Binary.RoundTrip - Test.Cardano.Ledger.Shelley.Constants - Test.Cardano.Ledger.Shelley.ImpTest - Test.Cardano.Ledger.Shelley.Imp - Test.Cardano.Ledger.Shelley.Imp.EpochSpec - Test.Cardano.Ledger.Shelley.Imp.LedgerSpec - Test.Cardano.Ledger.Shelley.Imp.UtxowSpec - Test.Cardano.Ledger.Shelley.TreeDiff - Test.Cardano.Ledger.Shelley.UnitTests.IncrementalStakeTest - - visibility: public - hs-source-dirs: testlib - other-modules: Paths_cardano_ledger_shelley - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wpartial-fields - -Wunused-packages - - build-depends: - base, - bytestring, - cardano-crypto-class, - data-default-class, - cardano-data, - cardano-ledger-binary:{cardano-ledger-binary, testlib}, - cardano-ledger-byron, - cardano-ledger-byron-test, - cardano-ledger-core:{cardano-ledger-core, testlib}, - cardano-ledger-shelley, - cardano-slotting:testlib, - cardano-strict-containers, - containers, - generic-random, - hedgehog-quickcheck, - hspec-core, - HUnit, - prettyprinter, - QuickCheck, - random, - small-steps >=1.1, - text, - transformers, - microlens, - microlens-mtl, - mtl, - unliftio, - vector-map - -test-suite tests - type: exitcode-stdio-1.0 - main-is: Main.hs - hs-source-dirs: test - other-modules: - Test.Cardano.Ledger.Shelley.BinarySpec - Test.Cardano.Ledger.Shelley.Binary.GoldenSpec - Test.Cardano.Ledger.Shelley.Binary.RoundTripSpec - Test.Cardano.Ledger.Shelley.Binary.CddlSpec - - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wpartial-fields - -Wunused-packages -threaded -rtsopts -with-rtsopts=-N - - build-depends: - base, - cardano-ledger-binary:testlib, - cardano-ledger-core:{cardano-ledger-core, testlib}, - cardano-ledger-shelley, - testlib diff --git a/eras/shelley/impl/cddl-files/crypto.cddl b/eras/shelley/impl/cddl-files/crypto.cddl deleted file mode 100644 index 339444964d2..00000000000 --- a/eras/shelley/impl/cddl-files/crypto.cddl +++ /dev/null @@ -1,13 +0,0 @@ -$hash28 /= bytes .size 28 -$hash32 /= bytes .size 32 - -$vkey /= bytes .size 32 - -$vrf_vkey /= bytes .size 32 -$vrf_cert /= [bytes, bytes .size 80] - -$kes_vkey /= bytes .size 32 -$kes_signature /= bytes .size 448 -signkeyKES = bytes .size 64 - -$signature /= bytes .size 64 diff --git a/eras/shelley/impl/cddl-files/extras.cddl b/eras/shelley/impl/cddl-files/extras.cddl deleted file mode 100644 index 97de1c130ef..00000000000 --- a/eras/shelley/impl/cddl-files/extras.cddl +++ /dev/null @@ -1,27 +0,0 @@ -finite_set = [* a] - -;unit_interval = #6.30([uint, uint]) -unit_interval = #6.30([1, 2]) - ; real unit_interval is: #6.30([uint, uint]) - ; but this produces numbers outside the unit interval - ; and can also produce a zero in the denominator - -positive_int = 1 .. 18446744073709551615 - -nonnegative_interval = #6.30([uint, positive_int]) - -set = [* a] - -address = - h'001000000000000000000000000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000' / - h'102000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000' / - h'203000000000000000000000000000000000000000000000000000000033000000000000000000000000000000000000000000000000000000' / - h'304000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000' / - h'405000000000000000000000000000000000000000000000000000000087680203' / - h'506000000000000000000000000000000000000000000000000000000087680203' / - h'6070000000000000000000000000000000000000000000000000000000' / - h'7080000000000000000000000000000000000000000000000000000000' - -reward_account = - h'E090000000000000000000000000000000000000000000000000000000' / - h'F0A0000000000000000000000000000000000000000000000000000000' diff --git a/eras/shelley/impl/cddl-files/shelley.cddl b/eras/shelley/impl/cddl-files/shelley.cddl deleted file mode 100644 index c0c3f337e3d..00000000000 --- a/eras/shelley/impl/cddl-files/shelley.cddl +++ /dev/null @@ -1,258 +0,0 @@ -; Shelley Types - -block = - [ header - , transaction_bodies : [* transaction_body] - , transaction_witness_sets : [* transaction_witness_set] - , transaction_metadata_set : - { * transaction_index => transaction_metadata } - ]; Valid blocks must also satisfy the following two constraints: - ; 1) the length of transaction_bodies and transaction_witness_sets - ; must be the same - ; 2) every transaction_index must be strictly smaller than the - ; length of transaction_bodies - -transaction = - [ transaction_body - , transaction_witness_set - , transaction_metadata / null - ] - -transaction_index = uint .size 2 - -header = - [ header_body - , body_signature : $kes_signature - ] - -header_body = - [ block_number : uint - , slot : uint - , prev_hash : $hash32 / null - , issuer_vkey : $vkey - , vrf_vkey : $vrf_vkey - , nonce_vrf : $vrf_cert - , leader_vrf : $vrf_cert - , block_body_size : uint - , block_body_hash : $hash32 ; merkle triple root - , operational_cert - , protocol_version - ] - -operational_cert = - ( hot_vkey : $kes_vkey - , sequence_number : uint - , kes_period : uint - , sigma : $signature - ) - -next_major_protocol_version = 3 - -major_protocol_version = 1..next_major_protocol_version - -protocol_version = (major_protocol_version, uint) - -transaction_body = - { 0 : set - , 1 : [* transaction_output] - , 2 : coin ; fee - , 3 : uint ; ttl - , ? 4 : [* certificate] - , ? 5 : withdrawals - , ? 6 : update - , ? 7 : metadata_hash - } - -transaction_input = [ transaction_id : $hash32 - , index : uint - ] - -transaction_output = [address, amount : coin] - -; address = bytes -; reward_account = bytes - -; address format: -; [ 8 bit header | payload ]; -; -; shelley payment addresses: -; bit 7: 0 -; bit 6: base/other -; bit 5: pointer/enterprise [for base: stake cred is keyhash/scripthash] -; bit 4: payment cred is keyhash/scripthash -; bits 3-0: network id -; -; reward addresses: -; bits 7-5: 111 -; bit 4: credential is keyhash/scripthash -; bits 3-0: network id -; -; byron addresses: -; bits 7-4: 1000 - -; 0000: base address: keyhash28,keyhash28 -; 0001: base address: scripthash28,keyhash28 -; 0010: base address: keyhash28,scripthash28 -; 0011: base address: scripthash28,scripthash28 -; 0100: pointer address: keyhash28, 3 variable length uint -; 0101: pointer address: scripthash28, 3 variable length uint -; 0110: enterprise address: keyhash28 -; 0111: enterprise address: scripthash28 -; 1000: byron address -; 1110: reward account: keyhash28 -; 1111: reward account: scripthash28 -; 1001 - 1101: future formats - -certificate = - [ stake_registration - // stake_deregistration - // stake_delegation - // pool_registration - // pool_retirement - // genesis_key_delegation - // move_instantaneous_rewards_cert - ] - -stake_registration = (0, stake_credential) -stake_deregistration = (1, stake_credential) -stake_delegation = (2, stake_credential, pool_keyhash) -pool_registration = (3, pool_params) -pool_retirement = (4, pool_keyhash, epoch) -genesis_key_delegation = (5, genesishash, genesis_delegate_hash, vrf_keyhash) -move_instantaneous_rewards_cert = (6, move_instantaneous_reward) - -move_instantaneous_reward = [ 0 / 1, { * stake_credential => coin } ] -; The first field determines where the funds are drawn from. -; 0 denotes the reserves, 1 denotes the treasury. - -stake_credential = - [ 0, addr_keyhash - // 1, scripthash - ] - -pool_params = ( operator: pool_keyhash - , vrf_keyhash: vrf_keyhash - , pledge: coin - , cost: coin - , margin: unit_interval - , reward_account: reward_account - , pool_owners: set - , relays: [* relay] - , pool_metadata: pool_metadata / null - ) - -port = uint .le 65535 -ipv4 = bytes .size 4 -ipv6 = bytes .size 16 -dns_name = tstr .size (0..64) - -single_host_addr = ( 0 - , port / null - , ipv4 / null - , ipv6 / null - ) -single_host_name = ( 1 - , port / null - , dns_name ; An A or AAAA DNS record - ) -multi_host_name = ( 2 - , dns_name ; A SRV DNS record - ) -relay = - [ single_host_addr - // single_host_name - // multi_host_name - ] - -pool_metadata = [url, metadata_hash] -url = tstr .size (0..64) - -withdrawals = { * reward_account => coin } - -update = [ proposed_protocol_parameter_updates - , epoch - ] - -proposed_protocol_parameter_updates = - { * genesishash => protocol_param_update } - -protocol_param_update = - { ? 0: uint ; minfee A - , ? 1: uint ; minfee B - , ? 2: uint ; max block body size - , ? 3: uint ; max transaction size - , ? 4: uint ; max block header size - , ? 5: coin ; key deposit - , ? 6: coin ; pool deposit - , ? 7: epoch ; maximum epoch - , ? 8: uint ; n_opt: desired number of stake pools - , ? 9: nonnegative_interval ; pool pledge influence - , ? 10: unit_interval ; expansion rate - , ? 11: unit_interval ; treasury growth rate - , ? 12: unit_interval ; d. decentralization constant - , ? 13: $nonce ; extra entropy - , ? 14: [protocol_version] ; protocol version - , ? 15: coin ; min utxo value - } - -transaction_witness_set = - { ?0 => [* vkeywitness ] - , ?1 => [* multisig_script ] - , ?2 => [* bootstrap_witness ] - ; In the future, new kinds of witnesses can be added like this: - ; , ?3 => [* monetary_policy_script ] - ; , ?4 => [* plutus_script ] - } - -transaction_metadatum = - { * transaction_metadatum => transaction_metadatum } - / [ * transaction_metadatum ] - / int - / bytes .size (0..64) - / text .size (0..64) - -transaction_metadatum_label = uint - -transaction_metadata = - { * transaction_metadatum_label => transaction_metadatum } - -vkeywitness = [ $vkey, $signature ] - -bootstrap_witness = - [ public_key : $vkey - , signature : $signature - , chain_code : bytes .size 32 - , attributes : bytes - ] - -multisig_script = - [ multisig_pubkey - // multisig_all - // multisig_any - // multisig_n_of_k - ] - -multisig_pubkey = (0, addr_keyhash) -multisig_all = (1, [ * multisig_script ]) -multisig_any = (2, [ * multisig_script ]) -multisig_n_of_k = (3, n: uint, [ * multisig_script ]) - -coin = uint -epoch = uint - -addr_keyhash = $hash28 -genesis_delegate_hash = $hash28 -pool_keyhash = $hash28 -genesishash = $hash28 - -vrf_keyhash = $hash32 -metadata_hash = $hash32 - -; To compute a script hash, note that you must prepend -; a tag to the bytes of the script before hashing. -; The tag is determined by the language. -; In the Shelley era there is only one such tag, -; namely "\x00" for multisig scripts. -scripthash = $hash28 - -$nonce /= [ 0 // 1, bytes .size 32 ] diff --git a/eras/shelley/impl/src/Cardano/Ledger/Chain.hs b/eras/shelley/impl/src/Cardano/Ledger/Chain.hs deleted file mode 100644 index babab899c3a..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Chain.hs +++ /dev/null @@ -1,78 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} - -module Cardano.Ledger.Chain ( - -- | Chain Checks - ChainChecksPParams (..), - ChainPredicateFailure (..), - pparamsToChainChecksPParams, - chainChecks, -) -where - -import Cardano.Ledger.BHeaderView (BHeaderView (..)) -import Cardano.Ledger.BaseTypes (ProtVer (..), Version) -import Cardano.Ledger.Core -import Control.Monad (unless) -import Control.Monad.Except (MonadError, throwError) -import Data.Word (Word16, Word32) -import GHC.Generics (Generic) -import Lens.Micro ((^.)) -import NoThunks.Class (NoThunks (..)) - -data ChainChecksPParams = ChainChecksPParams - { ccMaxBHSize :: Word16 - , ccMaxBBSize :: Word32 - , ccProtocolVersion :: ProtVer - } - deriving (Show, Eq, Generic, NoThunks) - -pparamsToChainChecksPParams :: - EraPParams era => - PParams era -> - ChainChecksPParams -pparamsToChainChecksPParams pp = - ChainChecksPParams - { ccMaxBHSize = pp ^. ppMaxBHSizeL - , ccMaxBBSize = pp ^. ppMaxBBSizeL - , ccProtocolVersion = pp ^. ppProtocolVersionL - } - -data ChainPredicateFailure - = HeaderSizeTooLargeCHAIN - !Int -- Header Size - !Word16 -- Max Header Size - | BlockSizeTooLargeCHAIN - !Word32 -- Block Size - !Word32 -- Max Block Size - | ObsoleteNodeCHAIN - !Version -- protocol version used - !Version -- max protocol version - deriving (Generic, Show, Eq, Ord) - -instance NoThunks ChainPredicateFailure - -chainChecks :: - MonadError ChainPredicateFailure m => - Version -> - ChainChecksPParams -> - BHeaderView c -> - m () -chainChecks maxpv ccd bhv = do - unless (m <= maxpv) $ throwError (ObsoleteNodeCHAIN m maxpv) - unless (bhviewHSize bhv <= (fromIntegral :: Word16 -> Int) (ccMaxBHSize ccd)) $ - throwError $ - HeaderSizeTooLargeCHAIN (bhviewHSize bhv) (ccMaxBHSize ccd) - unless (bhviewBSize bhv <= ccMaxBBSize ccd) $ - throwError $ - BlockSizeTooLargeCHAIN (bhviewBSize bhv) (ccMaxBBSize ccd) - where - ProtVer m _ = ccProtocolVersion ccd diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley.hs deleted file mode 100644 index 06cf8a2cd27..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley.hs +++ /dev/null @@ -1,24 +0,0 @@ -module Cardano.Ledger.Shelley ( - Shelley, - ShelleyEra, - ShelleyTx, - ShelleyTxOut, - ShelleyTxBody, - ShelleyTxAuxData, - nativeMultiSigTag, -) -where - -import Cardano.Ledger.Crypto (StandardCrypto) -import Cardano.Ledger.Shelley.Era (ShelleyEra) -import Cardano.Ledger.Shelley.PParams () -import Cardano.Ledger.Shelley.Rules () -import Cardano.Ledger.Shelley.Scripts (nativeMultiSigTag) -import Cardano.Ledger.Shelley.Translation () -import Cardano.Ledger.Shelley.Tx (ShelleyTx) -import Cardano.Ledger.Shelley.TxAuxData (ShelleyTxAuxData) -import Cardano.Ledger.Shelley.TxBody (ShelleyTxBody) -import Cardano.Ledger.Shelley.TxOut (ShelleyTxOut) -import Cardano.Ledger.Shelley.UTxO () - -type Shelley = ShelleyEra StandardCrypto diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/API.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/API.hs deleted file mode 100644 index d8cd36a9919..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/API.hs +++ /dev/null @@ -1,12 +0,0 @@ --- | API to the Shelley ledger -module Cardano.Ledger.Shelley.API ( - module X, -) -where - -import Cardano.Ledger.Shelley.API.ByronTranslation as X -import Cardano.Ledger.Shelley.API.Genesis as X -import Cardano.Ledger.Shelley.API.Mempool as X -import Cardano.Ledger.Shelley.API.Types as X -import Cardano.Ledger.Shelley.API.Validation as X -import Cardano.Ledger.Shelley.API.Wallet as X diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/API/ByronTranslation.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/API/ByronTranslation.hs deleted file mode 100644 index bd50d3e0c35..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/API/ByronTranslation.hs +++ /dev/null @@ -1,188 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE ExistentialQuantification #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# OPTIONS_GHC -Wno-redundant-constraints #-} - -module Cardano.Ledger.Shelley.API.ByronTranslation ( - translateToShelleyLedgerState, - - -- * Exported for testing purposes - translateCompactTxOutByronToShelley, - translateTxIdByronToShelley, -) -where - -import qualified Cardano.Chain.Block as Byron -import qualified Cardano.Chain.Common as Byron -import qualified Cardano.Chain.UTxO as Byron -import qualified Cardano.Crypto.Hash as Crypto -import qualified Cardano.Crypto.Hashing as Hashing -import Cardano.Ledger.Address (fromBoostrapCompactAddress, isBootstrapRedeemer) -import Cardano.Ledger.BaseTypes (BlocksMade (..), EpochNo, TxIx (..)) -import Cardano.Ledger.Coin (CompactForm (CompactCoin)) -import Cardano.Ledger.Crypto (Crypto (ADDRHASH)) -import Cardano.Ledger.EpochBoundary (emptySnapShots) -import Cardano.Ledger.SafeHash (unsafeMakeSafeHash) -import Cardano.Ledger.Shelley (ShelleyEra) -import Cardano.Ledger.Shelley.API.Types -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState.Types (curPParamsEpochStateL, prevPParamsEpochStateL) -import Cardano.Ledger.Shelley.Rules () -import Cardano.Ledger.Shelley.Translation (FromByronTranslationContext (..)) -import qualified Cardano.Ledger.UMap as UM -import Cardano.Ledger.UTxO (coinBalance) -import Cardano.Ledger.Val (zero, (<->)) -import qualified Data.ByteString.Short as SBS -import Data.Default.Class (def) -import qualified Data.Map.Strict as Map -import Data.Word -import GHC.Stack (HasCallStack) -import Lens.Micro ((&), (.~), (^.)) -import Lens.Micro.Extras (view) - --- | We use the same hashing algorithm so we can unwrap and rewrap the bytes. --- We don't care about the type that is hashed, which will differ going from --- Byron to Shelley, we just use the hashes as IDs. -translateTxIdByronToShelley :: - (Crypto c, ADDRHASH c ~ Crypto.Blake2b_224) => - Byron.TxId -> - TxId c -translateTxIdByronToShelley = - TxId . unsafeMakeSafeHash . hashFromShortBytesE . Hashing.abstractHashToShort - -hashFromShortBytesE :: - forall h a. - (Crypto.HashAlgorithm h, HasCallStack) => - SBS.ShortByteString -> - Crypto.Hash h a -hashFromShortBytesE sbs = - case Crypto.hashFromBytesShort sbs of - Just !h -> h - Nothing -> - error $ "hashFromBytesShort called with ShortByteString of the wrong length: " <> show sbs - -translateCompactTxOutByronToShelley :: Byron.CompactTxOut -> ShelleyTxOut (ShelleyEra c) -translateCompactTxOutByronToShelley (Byron.CompactTxOut compactAddr amount) = - TxOutCompact - (fromBoostrapCompactAddress compactAddr) - (CompactCoin (Byron.unsafeGetLovelace amount)) - -translateCompactTxInByronToShelley :: - (Crypto c, ADDRHASH c ~ Crypto.Blake2b_224) => - Byron.CompactTxIn -> - TxIn c -translateCompactTxInByronToShelley (Byron.CompactTxInUtxo compactTxId idx) = - TxIn - (translateTxIdByronToShelley (Byron.fromCompactTxId compactTxId)) - (TxIx ((fromIntegral :: Word16 -> Word64) idx)) - -translateUTxOByronToShelley :: - forall c. - (Crypto c, ADDRHASH c ~ Crypto.Blake2b_224) => - Byron.UTxO -> - UTxO (ShelleyEra c) -translateUTxOByronToShelley (Byron.UTxO utxoByron) = - UTxO $ - Map.fromList - [ (txInShelley, txOutShelley) - | (txInByron, txOutByron) <- Map.toList utxoByron - , let txInShelley = translateCompactTxInByronToShelley txInByron - txOutShelley = translateCompactTxOutByronToShelley txOutByron - , -- In some testnets there are a few TxOuts with zero values injected at - -- initialization of Byron. We do not allow zero values in TxOuts in Shelley - -- onwards. - txOutShelley ^. coinTxOutL /= zero - ] - -translateToShelleyLedgerState :: - forall c. - (Crypto c, ADDRHASH c ~ Crypto.Blake2b_224) => - FromByronTranslationContext c -> - EpochNo -> - Byron.ChainValidationState -> - NewEpochState (ShelleyEra c) -translateToShelleyLedgerState transCtxt epochNo cvs = - NewEpochState - { nesEL = epochNo - , nesBprev = BlocksMade Map.empty - , nesBcur = BlocksMade Map.empty - , nesEs = epochState - , nesRu = SNothing - , nesPd = PoolDistr Map.empty - , -- At this point, we compute the stashed AVVM addresses, while we are able - -- to do a linear scan of the UTxO, and stash them away for use at the - -- Shelley/Allegra boundary. - stashedAVVMAddresses = - let UTxO utxo = utxosUtxo . lsUTxOState . esLState $ epochState - redeemers = - Map.filter (maybe False isBootstrapRedeemer . view bootAddrTxOutF) utxo - in UTxO redeemers - } - where - pparams :: PParams (ShelleyEra c) - pparams = fbtcProtocolParams transCtxt - - -- NOTE: we ignore the Byron delegation map because the genesis and - -- delegation verification keys are hashed using a different hashing - -- scheme. This means we can't simply convert them, as Byron nowhere stores - -- the original verification keys. - -- - -- Fortunately, no Byron genesis delegations have happened yet, and if - -- they did, we would be aware of them before the hard fork, as we - -- instigate the hard fork. We just have to make sure that the hard-coded - -- Shelley genesis contains the same genesis and delegation verification - -- keys, but hashed with the right algorithm. - genDelegs :: GenDelegs c - genDelegs = GenDelegs $ fbtcGenDelegs transCtxt - - reserves :: Coin - reserves = - word64ToCoin (fbtcMaxLovelaceSupply transCtxt) <-> coinBalance utxoShelley - - epochState :: EpochState (ShelleyEra c) - epochState = - EpochState - { esAccountState = AccountState (Coin 0) reserves - , esSnapshots = emptySnapShots - , esLState = ledgerState - , esNonMyopic = def - } - & prevPParamsEpochStateL .~ pparams - & curPParamsEpochStateL .~ pparams - - utxoByron :: Byron.UTxO - utxoByron = Byron.cvsUtxo cvs - - utxoShelley :: UTxO (ShelleyEra c) - utxoShelley = translateUTxOByronToShelley utxoByron - - ledgerState :: LedgerState (ShelleyEra c) - ledgerState = - LedgerState - { lsUTxOState = - UTxOState - { utxosUtxo = utxoShelley - , utxosDeposited = Coin 0 - , utxosFees = Coin 0 - , utxosGovState = emptyGovState - , utxosStakeDistr = IStake mempty Map.empty - , utxosDonation = mempty - } - , lsCertState = - CertState - { certDState = dState - , certPState = def - , certVState = def - } - } - - dState :: DState (ShelleyEra c) - dState = - DState - { dsUnified = UM.empty - , dsFutureGenDelegs = Map.empty - , dsGenDelegs = genDelegs - , dsIRewards = def - } diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/API/Genesis.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/API/Genesis.hs deleted file mode 100644 index 58924a6ebab..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/API/Genesis.hs +++ /dev/null @@ -1,123 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} - -module Cardano.Ledger.Shelley.API.Genesis where - -import Cardano.Ledger.BaseTypes (BlocksMade (..), EpochNo (EpochNo)) -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.EpochBoundary (emptySnapShots) -import Cardano.Ledger.Shelley (ShelleyEra) -import Cardano.Ledger.Shelley.API.Types ( - AccountState (AccountState), - CertState (CertState), - Coin (Coin), - DState (..), - EpochState (EpochState), - GenDelegs (GenDelegs), - LedgerState (LedgerState), - NewEpochState (NewEpochState), - PoolDistr (PoolDistr), - ShelleyGenesis (sgGenDelegs, sgMaxLovelaceSupply, sgProtocolParams), - StrictMaybe (SNothing), - genesisUTxO, - word64ToCoin, - ) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState ( - StashedAVVMAddresses, - smartUTxOState, - ) -import qualified Cardano.Ledger.UMap as UM -import Cardano.Ledger.UTxO (coinBalance) -import Cardano.Ledger.Val (Val (..)) -import Data.Default.Class (Default, def) -import Data.Kind (Type) -import qualified Data.Map.Strict as Map -import Lens.Micro ((&), (.~)) - --- | Indicates that this era may be bootstrapped from 'ShelleyGenesis'. -class - ( EraTxOut era - , Default (StashedAVVMAddresses era) - , EraGov era - ) => - CanStartFromGenesis era - where - -- | Additional genesis configuration necessary for this era. - type AdditionalGenesisConfig era :: Type - - type AdditionalGenesisConfig era = () - - -- | Upgrade `PParams` from `ShelleyEra` all the way to the current one. - fromShelleyPParams :: - AdditionalGenesisConfig era -> - PParams (ShelleyEra (EraCrypto era)) -> - PParams era - - -- | Construct an initial state given a 'ShelleyGenesis' and any appropriate - -- 'AdditionalGenesisConfig' for the era. - initialState :: - ShelleyGenesis (EraCrypto era) -> - AdditionalGenesisConfig era -> - NewEpochState era - initialState = initialStateFromGenesis - -{-# DEPRECATED CanStartFromGenesis "Use `Cardano.Ledger.Shelley.Transition.EraTransition` instead" #-} -{-# DEPRECATED fromShelleyPParams "Use `Cardano.Ledger.Shelley.Transition.tcInitialPParamsG` instead" #-} -{-# DEPRECATED initialState "Use `Cardano.Ledger.Shelley.Transition.createInitialState` instead" #-} - -instance - Crypto c => - CanStartFromGenesis (ShelleyEra c) - where - fromShelleyPParams _ = id - --- | Helper function for constructing the initial state for any era -initialStateFromGenesis :: - forall era. - CanStartFromGenesis era => - -- | Genesis type - ShelleyGenesis (EraCrypto era) -> - AdditionalGenesisConfig era -> - NewEpochState era -initialStateFromGenesis sg ag = - NewEpochState - initialEpochNo - (BlocksMade Map.empty) - (BlocksMade Map.empty) - ( EpochState - (AccountState (Coin 0) reserves) - ( LedgerState - (smartUTxOState (fromShelleyPParams ag pp) initialUtxo (Coin 0) (Coin 0) govSt zero) - (CertState def def dState) - ) - emptySnapShots - def - ) - SNothing - (PoolDistr Map.empty) - def - where - initialEpochNo = EpochNo 0 - initialUtxo = genesisUTxO sg - reserves = word64ToCoin (sgMaxLovelaceSupply sg) <-> coinBalance initialUtxo - genDelegs = sgGenDelegs sg - pp = sgProtocolParams sg - govSt = - def - & curPParamsGovStateL .~ fromShelleyPParams ag pp - & prevPParamsGovStateL .~ fromShelleyPParams ag pp - - dState :: DState era - dState = - DState - { dsUnified = UM.empty - , dsFutureGenDelegs = Map.empty - , dsGenDelegs = GenDelegs genDelegs - , dsIRewards = def - } diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/API/Mempool.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/API/Mempool.hs deleted file mode 100644 index b996bfd05d4..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/API/Mempool.hs +++ /dev/null @@ -1,322 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TupleSections #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} - --- | Interface to the Shelley ledger for the purposes of managing a Shelley --- mempool. -module Cardano.Ledger.Shelley.API.Mempool ( - ApplyTx (..), - ApplyTxError (..), - Validated, - extractTx, - coerceValidated, - translateValidated, - - -- * Exports for testing - MempoolEnv, - MempoolState, - applyTxsTransition, - unsafeMakeValidated, - - -- * Exports for compatibility - applyTxs, - mkMempoolEnv, - mkMempoolState, - overNewEpochState, -) -where - -import Cardano.Ledger.BaseTypes (Globals, ShelleyBase) -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - encodeFoldableAsIndefLenList, - ifEncodingVersionAtLeast, - natVersion, - ) -import Cardano.Ledger.Core -import Cardano.Ledger.Keys -import Cardano.Ledger.Shelley (ShelleyEra) -import Cardano.Ledger.Shelley.Core (EraGov) -import Cardano.Ledger.Shelley.LedgerState (NewEpochState, curPParamsEpochStateL) -import qualified Cardano.Ledger.Shelley.LedgerState as LedgerState -import Cardano.Ledger.Shelley.Rules () -import Cardano.Ledger.Shelley.Rules.Ledger (LedgerEnv) -import qualified Cardano.Ledger.Shelley.Rules.Ledger as Ledger -import Cardano.Ledger.Slot (SlotNo) -import Control.Arrow (ArrowChoice (right), left) -import Control.DeepSeq (NFData) -import Control.Monad (foldM) -import Control.Monad.Except (Except, MonadError, liftEither) -import Control.Monad.Trans.Reader (runReader) -import Control.State.Transition.Extended ( - BaseM, - Environment, - PredicateFailure, - STS, - Signal, - State, - TRC (..), - applySTS, - ) -import Data.Coerce (Coercible, coerce) -import Data.Functor ((<&>)) -import Data.List.NonEmpty (NonEmpty) -import Data.Sequence (Seq) -import Data.Typeable (Typeable) -import Lens.Micro ((^.)) -import NoThunks.Class (NoThunks) - --- | A newtype which indicates that a transaction has been validated against --- some chain state. -newtype Validated tx = Validated tx - deriving (Eq, NoThunks, Show, NFData) - --- | Extract the underlying unvalidated Tx. -extractTx :: Validated tx -> tx -extractTx (Validated tx) = tx - -coerceValidated :: Coercible a b => Validated a -> Validated b -coerceValidated (Validated a) = Validated $ coerce a - --- Don't use this except in Testing to make Arbitrary instances, etc. -unsafeMakeValidated :: tx -> Validated tx -unsafeMakeValidated = Validated - --- | Translate a validated transaction across eras. --- --- This is not a `TranslateEra` instance since `Validated` is not itself --- era-parametrised. -translateValidated :: - forall era f. - TranslateEra era f => - TranslationContext era -> - Validated (f (PreviousEra era)) -> - Except (TranslationError era f) (Validated (f era)) -translateValidated ctx (Validated tx) = Validated <$> translateEra @era ctx tx - -class - ( EraTx era - , Eq (ApplyTxError era) - , Show (ApplyTxError era) - , Typeable (ApplyTxError era) - , STS (EraRule "LEDGER" era) - , BaseM (EraRule "LEDGER" era) ~ ShelleyBase - , Environment (EraRule "LEDGER" era) ~ LedgerEnv era - , State (EraRule "LEDGER" era) ~ MempoolState era - , Signal (EraRule "LEDGER" era) ~ Tx era - ) => - ApplyTx era - where - -- | Validate a transaction against a mempool state, and return both the new - -- mempool state and a "validated" 'TxInBlock'. - -- - -- The meaning of being "validated" depends on the era. In general, a - -- 'TxInBlock' has had all checks run, and can now only fail due to checks - -- which depend on the state; most notably, that UTxO inputs disappear. - applyTx :: - MonadError (ApplyTxError era) m => - Globals -> - MempoolEnv era -> - MempoolState era -> - Tx era -> - m (MempoolState era, Validated (Tx era)) - applyTx globals env state tx = - let res = - flip runReader globals - . applySTS @(EraRule "LEDGER" era) - $ TRC (env, state, tx) - in liftEither - . left ApplyTxError - . right (,Validated tx) - $ res - - -- | Reapply a previously validated 'Tx'. - -- - -- This applies the (validated) transaction to a new mempool state. It may - -- fail due to the mempool state changing (for example, a needed output - -- having already been spent). It should not fail due to any static check - -- (such as cryptographic checks). - -- - -- Implementations of this function may optionally skip the performance of - -- any static checks. This is not required, but strongly encouraged since - -- this function will be called each time the mempool revalidates - -- transactions against a new mempool state. - reapplyTx :: - MonadError (ApplyTxError era) m => - Globals -> - MempoolEnv era -> - MempoolState era -> - Validated (Tx era) -> - m (MempoolState era) - reapplyTx globals env state (Validated tx) = - let res = - flip runReader globals - . applySTS @(EraRule "LEDGER" era) - $ TRC (env, state, tx) - in liftEither - . left ApplyTxError - $ res - -instance - ( EraPParams (ShelleyEra c) - , DSignable c (Hash c EraIndependentTxBody) - ) => - ApplyTx (ShelleyEra c) - -type MempoolEnv era = Ledger.LedgerEnv era - -type MempoolState era = LedgerState.LedgerState era - --- | Construct the environment used to validate transactions from the full --- ledger state. --- --- Note that this function also takes a slot. During slot validation, the slot --- given here is the slot of the block containing the transactions. This slot is --- used for quite a number of things, but in general these do not determine the --- validity of the transaction. There are two exceptions: --- --- - Each transaction has a ttl (time-to-live) value. If the slot is beyond this --- value, then the transaction is invalid. --- - If the transaction contains a protocol update proposal, then it may only be --- included until a certain number of slots before the end of the epoch. A --- protocol update proposal submitted after this is considered invalid. -mkMempoolEnv :: - EraGov era => - NewEpochState era -> - SlotNo -> - MempoolEnv era -mkMempoolEnv - LedgerState.NewEpochState - { LedgerState.nesEs - } - slot = - Ledger.LedgerEnv - { Ledger.ledgerSlotNo = slot - , Ledger.ledgerIx = minBound - , Ledger.ledgerPp = nesEs ^. curPParamsEpochStateL - , Ledger.ledgerAccount = LedgerState.esAccountState nesEs - } - --- | Construct a mempool state from the wider ledger state. --- --- The given mempool state may then be evolved using 'applyTxs', but should be --- regenerated when the ledger state gets updated (e.g. through application of --- a new block). -mkMempoolState :: NewEpochState era -> MempoolState era -mkMempoolState LedgerState.NewEpochState {LedgerState.nesEs} = LedgerState.esLState nesEs - -newtype ApplyTxError era = ApplyTxError (NonEmpty (PredicateFailure (EraRule "LEDGER" era))) - -deriving stock instance - Eq (PredicateFailure (EraRule "LEDGER" era)) => - Eq (ApplyTxError era) - -deriving stock instance - Show (PredicateFailure (EraRule "LEDGER" era)) => - Show (ApplyTxError era) - --- TODO: This instance can be switched back to a derived version, once we are officially --- in the Conway era: --- --- deriving newtype instance --- ( Era era --- , EncCBOR (PredicateFailure (EraRule "LEDGER" era)) --- ) => --- EncCBOR (ApplyTxError era) - -instance - ( Era era - , EncCBOR (PredicateFailure (EraRule "LEDGER" era)) - ) => - EncCBOR (ApplyTxError era) - where - encCBOR (ApplyTxError failures) = - ifEncodingVersionAtLeast - (natVersion @9) - (encCBOR failures) - (encodeFoldableAsIndefLenList encCBOR failures) - -deriving newtype instance - ( Era era - , DecCBOR (PredicateFailure (EraRule "LEDGER" era)) - ) => - DecCBOR (ApplyTxError era) - -instance - ( Era era - , EncCBOR (PredicateFailure (EraRule "LEDGER" era)) - ) => - ToCBOR (ApplyTxError era) - where - toCBOR = toEraCBOR @era - -instance - ( Era era - , DecCBOR (PredicateFailure (EraRule "LEDGER" era)) - ) => - FromCBOR (ApplyTxError era) - where - fromCBOR = fromEraCBOR @era - --- | Old 'applyTxs' -applyTxs :: - (ApplyTx era, MonadError (ApplyTxError era) m, EraGov era) => - Globals -> - SlotNo -> - Seq (Tx era) -> - NewEpochState era -> - m (NewEpochState era) -applyTxs - globals - slot - txs - state = - overNewEpochState (applyTxsTransition globals mempoolEnv txs) state - where - mempoolEnv = mkMempoolEnv state slot - -applyTxsTransition :: - forall era m. - ( ApplyTx era - , MonadError (ApplyTxError era) m - ) => - Globals -> - MempoolEnv era -> - Seq (Tx era) -> - MempoolState era -> - m (MempoolState era) -applyTxsTransition globals env txs state = - foldM - (\st tx -> fst <$> applyTx globals env st tx) - state - txs - --- | Transform a function over mempool states to one over the full --- 'NewEpochState'. -overNewEpochState :: - Functor f => - (MempoolState era -> f (MempoolState era)) -> - NewEpochState era -> - f (NewEpochState era) -overNewEpochState f st = do - f (mkMempoolState st) - <&> \ls -> - st - { LedgerState.nesEs = - (LedgerState.nesEs st) - { LedgerState.esLState = ls - } - } diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/API/Types.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/API/Types.hs deleted file mode 100644 index 7669cc74281..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/API/Types.hs +++ /dev/null @@ -1,153 +0,0 @@ -module Cardano.Ledger.Shelley.API.Types ( - module X, -) -where - -import Cardano.Ledger.Address as X (Addr (..), RewardAccount (..), RewardAcnt, Withdrawals (..)) -import Cardano.Ledger.BHeaderView as X (isOverlaySlot) -import Cardano.Ledger.BaseTypes as X ( - CertIx, - Globals (..), - Network (..), - Nonce (..), - Port (..), - ProtVer (..), - StrictMaybe (..), - TxIx, - certIxFromIntegral, - certIxToInt, - epochInfo, - txIxFromIntegral, - txIxToInt, - ) -import Cardano.Ledger.Block as X ( - Block (..), - bbody, - bheader, - ) -import Cardano.Ledger.Coin as X ( - Coin (..), - word64ToCoin, - ) -import Cardano.Ledger.Credential as X ( - Credential (..), - Ptr (..), - StakeReference (..), - ) -import Cardano.Ledger.EpochBoundary as X ( - SnapShot (..), - SnapShots (..), - Stake (..), - ) -import Cardano.Ledger.Keys as X ( - CertifiedVRF, - GenDelegPair (..), - GenDelegs (..), - Hash, - KESignable, - KeyHash (..), - KeyPair (..), - KeyRole (..), - SignKeyDSIGN, - SignKeyKES, - SignKeyVRF, - SignedDSIGN, - SignedKES, - VKey (..), - VerKeyKES, - VerKeyVRF, - WitVKey (..), - coerceKeyRole, - hashKey, - hashVerKeyVRF, - ) -import Cardano.Ledger.Keys.Bootstrap as X ( - BootstrapWitness (..), - ) -import Cardano.Ledger.PoolDistr as X ( - PoolDistr (..), - individualPoolStake, - ) -import Cardano.Ledger.PoolParams as X ( - PoolMetadata (..), - PoolParams (..), - StakePoolRelay (..), - ) -import Cardano.Ledger.Shelley.BlockChain as X (bbHash) -import Cardano.Ledger.Shelley.Genesis as X -import Cardano.Ledger.Shelley.LedgerState as X ( - AccountState (..), - CertState (..), - DState (..), - EpochState (..), - IncrementalStake (..), - InstantaneousRewards (..), - KeyPairs, - LedgerState (..), - NewEpochState (..), - PState (..), - RewardUpdate (..), - ShelleyGovState (..), - UTxOState (..), - VState (..), - ) -import Cardano.Ledger.Shelley.PParams as X ( - ProposedPPUpdates (..), - Update (..), - ) -import Cardano.Ledger.Shelley.PoolRank as X ( - NonMyopic, - ) -import Cardano.Ledger.Shelley.Rules.Deleg as X (DelegEnv (..), ShelleyDELEG) -import Cardano.Ledger.Shelley.Rules.Delegs as X (DelegsEnv (..), ShelleyDELEGS) -import Cardano.Ledger.Shelley.Rules.Delpl as X (DelplEnv (..), ShelleyDELPL) -import Cardano.Ledger.Shelley.Rules.Ledger as X (LedgerEnv (..), ShelleyLEDGER) -import Cardano.Ledger.Shelley.Rules.Ledgers as X (ShelleyLEDGERS, ShelleyLedgersEnv (..)) -import Cardano.Ledger.Shelley.Rules.NewEpoch as X ( - ShelleyNEWEPOCH, - calculatePoolDistr, - calculatePoolDistr', - ) -import Cardano.Ledger.Shelley.Rules.Pool as X (PoolEnv (..), ShelleyPOOL) -import Cardano.Ledger.Shelley.Rules.PoolReap as X (ShelleyPOOLREAP) -import Cardano.Ledger.Shelley.Rules.Ppup as X (PpupEnv (..), ShelleyPPUP) -import Cardano.Ledger.Shelley.Rules.Snap as X (SnapEnv (..)) -import Cardano.Ledger.Shelley.Rules.Tick as X (ShelleyTICK, ShelleyTICKF) -import Cardano.Ledger.Shelley.Rules.Utxo as X ( - ShelleyUTXO, - UtxoEnv (..), - ) -import Cardano.Ledger.Shelley.Rules.Utxow as X (ShelleyUTXOW) -import Cardano.Ledger.Shelley.Scripts as X ( - MultiSig (..), - ScriptHash (..), - ) -import Cardano.Ledger.Shelley.StabilityWindow as X ( - computeRandomnessStabilisationWindow, - computeStabilityWindow, - ) -import Cardano.Ledger.Shelley.Tx as X (ShelleyTx (..)) -import Cardano.Ledger.Shelley.TxAuxData as X ( - Metadata, - Metadatum (..), - ShelleyTxAuxData (..), - ) -import Cardano.Ledger.Shelley.TxBody as X (ShelleyTxBody (..)) -import Cardano.Ledger.Shelley.TxCert as X ( - Delegation (..), - GenesisDelegCert (..), - MIRCert (..), - MIRPot (..), - MIRTarget (..), - PoolCert (..), - ShelleyDelegCert (..), - ) -import Cardano.Ledger.Shelley.TxOut as X (ShelleyTxOut (..)) -import Cardano.Ledger.Shelley.TxWits as X ( - ShelleyTxWits, - ) -import Cardano.Ledger.TxIn as X (TxId (..), TxIn (..)) -import Cardano.Ledger.UTxO as X ( - UTxO (..), - balance, - ) diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/API/Validation.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/API/Validation.hs deleted file mode 100644 index eaa0dc89289..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/API/Validation.hs +++ /dev/null @@ -1,267 +0,0 @@ -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DefaultSignatures #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} - --- | Interface to the block validation and chain extension logic in the Shelley --- API. -module Cardano.Ledger.Shelley.API.Validation ( - ApplyBlock (..), - applyBlock, - applyTick, - TickTransitionError (..), - BlockTransitionError (..), - chainChecks, - ShelleyEraCrypto, -) -where - -import Cardano.Ledger.BHeaderView (BHeaderView) -import Cardano.Ledger.BaseTypes (Globals (..), ShelleyBase, Version) -import Cardano.Ledger.Binary (EncCBORGroup) -import Cardano.Ledger.Block (Block) -import qualified Cardano.Ledger.Chain as STS -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Keys (DSignable, Hash) -import Cardano.Ledger.Shelley (ShelleyEra) -import Cardano.Ledger.Shelley.Core (EraGov) -import Cardano.Ledger.Shelley.LedgerState (LedgerState (..), NewEpochState, curPParamsEpochStateL) -import qualified Cardano.Ledger.Shelley.LedgerState as LedgerState -import Cardano.Ledger.Shelley.PParams () -import Cardano.Ledger.Shelley.Rules () -import qualified Cardano.Ledger.Shelley.Rules as STS -import Cardano.Ledger.Slot (SlotNo) -import Control.Arrow (left, right) -import Control.Monad.Except -import Control.Monad.Trans.Reader (runReader) -import Control.State.Transition.Extended -import Data.List.NonEmpty (NonEmpty) -import GHC.Generics (Generic) -import Lens.Micro ((^.)) -import NoThunks.Class (NoThunks (..)) - -{------------------------------------------------------------------------------- - Block validation API --------------------------------------------------------------------------------} - -class - ( STS (EraRule "TICK" era) - , BaseM (EraRule "TICK" era) ~ ShelleyBase - , Environment (EraRule "TICK" era) ~ () - , State (EraRule "TICK" era) ~ NewEpochState era - , Signal (EraRule "TICK" era) ~ SlotNo - , STS (EraRule "BBODY" era) - , BaseM (EraRule "BBODY" era) ~ ShelleyBase - , Environment (EraRule "BBODY" era) ~ STS.BbodyEnv era - , State (EraRule "BBODY" era) ~ STS.ShelleyBbodyState era - , Signal (EraRule "BBODY" era) ~ Block (BHeaderView (EraCrypto era)) era - , EncCBORGroup (TxSeq era) - , State (EraRule "LEDGERS" era) ~ LedgerState era - ) => - ApplyBlock era - where - -- | Apply the header level ledger transition. - -- - -- This handles checks and updates that happen on a slot tick, as well as a - -- few header level checks, such as size constraints. - applyTickOpts :: - ApplySTSOpts ep -> - Globals -> - NewEpochState era -> - SlotNo -> - EventReturnType ep (EraRule "TICK" era) (NewEpochState era) - applyTickOpts opts globals state hdr = - either err id - . flip runReader globals - . applySTSOptsEither @(EraRule "TICK" era) opts - $ TRC ((), state, hdr) - where - err :: Show a => a -> b - err msg = error $ "Panic! applyTick failed: " <> show msg - - -- | Apply the block level ledger transition. - applyBlockOpts :: - forall ep m. - (EventReturnTypeRep ep, MonadError (BlockTransitionError era) m) => - ApplySTSOpts ep -> - Globals -> - NewEpochState era -> - Block (BHeaderView (EraCrypto era)) era -> - m (EventReturnType ep (EraRule "BBODY" era) (NewEpochState era)) - default applyBlockOpts :: - forall ep m. - (EventReturnTypeRep ep, MonadError (BlockTransitionError era) m, EraGov era) => - ApplySTSOpts ep -> - Globals -> - NewEpochState era -> - Block (BHeaderView (EraCrypto era)) era -> - m (EventReturnType ep (EraRule "BBODY" era) (NewEpochState era)) - applyBlockOpts opts globals state blk = - liftEither - . left BlockTransitionError - . right - ( mapEventReturn @ep @(EraRule "BBODY" era) $ - updateNewEpochState state - ) - $ res - where - res = - flip runReader globals - . applySTSOptsEither @(EraRule "BBODY" era) - opts - $ TRC (mkBbodyEnv state, bbs, blk) - bbs = - STS.BbodyState - (LedgerState.esLState $ LedgerState.nesEs state) - (LedgerState.nesBcur state) - - -- | Re-apply a ledger block to the same state it has been applied to before. - -- - -- This function does no validation of whether the block applies successfully; - -- the caller implicitly guarantees that they have previously called - -- 'applyBlockTransition' on the same block and that this was successful. - reapplyBlock :: - Globals -> - NewEpochState era -> - Block (BHeaderView (EraCrypto era)) era -> - NewEpochState era - default reapplyBlock :: - EraGov era => - Globals -> - NewEpochState era -> - Block (BHeaderView (EraCrypto era)) era -> - NewEpochState era - reapplyBlock globals state blk = - updateNewEpochState state res - where - res = - flip runReader globals . reapplySTS @(EraRule "BBODY" era) $ - TRC (mkBbodyEnv state, bbs, blk) - bbs = - STS.BbodyState - (LedgerState.esLState $ LedgerState.nesEs state) - (LedgerState.nesBcur state) - -applyTick :: - ApplyBlock era => - Globals -> - NewEpochState era -> - SlotNo -> - NewEpochState era -applyTick = - applyTickOpts $ - ApplySTSOpts - { asoAssertions = globalAssertionPolicy - , asoValidation = ValidateAll - , asoEvents = EPDiscard - } - -applyBlock :: - ( ApplyBlock era - , MonadError (BlockTransitionError era) m - ) => - Globals -> - NewEpochState era -> - Block (BHeaderView (EraCrypto era)) era -> - m (NewEpochState era) -applyBlock = - applyBlockOpts $ - ApplySTSOpts - { asoAssertions = globalAssertionPolicy - , asoValidation = ValidateAll - , asoEvents = EPDiscard - } - -type ShelleyEraCrypto c = - ( Crypto c - , DSignable c (Hash c EraIndependentTxBody) - ) - -{-# DEPRECATED ShelleyEraCrypto "Constraint synonyms are being removed" #-} - -instance - ( Crypto c - , DSignable c (Hash c EraIndependentTxBody) - ) => - ApplyBlock (ShelleyEra c) - -{------------------------------------------------------------------------------- - CHAIN Transition checks --------------------------------------------------------------------------------} - -chainChecks :: - forall c m. - MonadError STS.ChainPredicateFailure m => - -- | Max major protocol version - Version -> - STS.ChainChecksPParams -> - BHeaderView c -> - m () -chainChecks = STS.chainChecks - -{------------------------------------------------------------------------------- - Applying blocks --------------------------------------------------------------------------------} - -mkBbodyEnv :: - EraGov era => - NewEpochState era -> - STS.BbodyEnv era -mkBbodyEnv - LedgerState.NewEpochState - { LedgerState.nesEs - } = - STS.BbodyEnv - { STS.bbodyPp = nesEs ^. curPParamsEpochStateL - , STS.bbodyAccount = LedgerState.esAccountState nesEs - } - -updateNewEpochState :: - (LedgerState era ~ State (EraRule "LEDGERS" era), EraGov era) => - NewEpochState era -> - STS.ShelleyBbodyState era -> - NewEpochState era -updateNewEpochState ss (STS.BbodyState ls bcur) = - LedgerState.updateNES ss bcur ls - -newtype TickTransitionError era - = TickTransitionError (NonEmpty (STS.PredicateFailure (EraRule "TICK" era))) - deriving (Generic) - -instance - NoThunks (STS.PredicateFailure (EraRule "TICK" era)) => - NoThunks (TickTransitionError era) - -deriving stock instance - Eq (STS.PredicateFailure (EraRule "TICK" era)) => - Eq (TickTransitionError era) - -deriving stock instance - Show (STS.PredicateFailure (EraRule "TICK" era)) => - Show (TickTransitionError era) - -newtype BlockTransitionError era - = BlockTransitionError (NonEmpty (STS.PredicateFailure (EraRule "BBODY" era))) - deriving (Generic) - -deriving stock instance - Eq (STS.PredicateFailure (EraRule "BBODY" era)) => - Eq (BlockTransitionError era) - -deriving stock instance - Show (STS.PredicateFailure (EraRule "BBODY" era)) => - Show (BlockTransitionError era) - -instance - NoThunks (STS.PredicateFailure (EraRule "BBODY" era)) => - NoThunks (BlockTransitionError era) diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/API/Wallet.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/API/Wallet.hs deleted file mode 100644 index bab5621fb86..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/API/Wallet.hs +++ /dev/null @@ -1,520 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} --- FIXME: use better names for record names -{-# OPTIONS_GHC -Wno-name-shadowing #-} - -module Cardano.Ledger.Shelley.API.Wallet ( - -- * UTxOs - getUTxO, - getUTxOSubset, - getFilteredUTxO, - - -- * Stake Pools - getPools, - getPoolParameters, - getTotalStake, - poolsByTotalStakeFraction, - RewardInfoPool (..), - RewardParams (..), - getRewardInfoPools, - getRewardProvenance, - getNonMyopicMemberRewards, - - -- * Transaction helpers - addKeyWitnesses, - evaluateTransactionBalance, - evaluateMinLovelaceOutput, - addShelleyKeyWitnesses, - - -- * Ada pots - AdaPots (..), - totalAdaES, - totalAdaPotsES, -) -where - -import Cardano.Ledger.Address (Addr (..), compactAddr) -import Cardano.Ledger.BaseTypes ( - BlocksMade, - Globals (..), - NonNegativeInterval, - UnitInterval, - epochInfoPure, - ) -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - decodeDouble, - encodeDouble, - ) -import Cardano.Ledger.Binary.Coders ( - Decode (..), - Encode (..), - decode, - encode, - (!>), - ()) -import Cardano.Slotting.Slot (EpochSize) -import Control.DeepSeq (NFData) -import Control.Monad.Trans.Reader (runReader) -import Data.Aeson (FromJSON, ToJSON) -import Data.Default.Class (Default (def)) -import Data.Foldable (foldMap') -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Ratio ((%)) -import Data.Set (Set) -import qualified Data.Set as Set -import qualified Data.VMap as VMap -import GHC.Generics (Generic) -import Lens.Micro -import NoThunks.Class (NoThunks (..)) -import Numeric.Natural (Natural) - --------------------------------------------------------------------------------- --- UTxOs --------------------------------------------------------------------------------- - --- | Get the full UTxO. -getUTxO :: - NewEpochState era -> - UTxO era -getUTxO = utxosUtxo . lsUTxOState . esLState . nesEs - --- | Get the UTxO filtered by address. -getFilteredUTxO :: - EraTxOut era => - NewEpochState era -> - Set (Addr (EraCrypto era)) -> - UTxO era -getFilteredUTxO ss addrSet = - UTxO $ Map.filter checkAddr fullUTxO - where - UTxO fullUTxO = getUTxO ss - compactAddrSet = Set.map compactAddr addrSet - checkAddr out = - case out ^. addrEitherTxOutL of - Left addr -> addr `Set.member` addrSet - Right cAddr -> cAddr `Set.member` compactAddrSet -{-# INLINEABLE getFilteredUTxO #-} - -getUTxOSubset :: - NewEpochState era -> - Set (TxIn (EraCrypto era)) -> - UTxO era -getUTxOSubset nes = txInsFilter (getUTxO nes) - --------------------------------------------------------------------------------- --- Stake pools and pool rewards --------------------------------------------------------------------------------- - --- | Get the /current/ registered stake pools. -getPools :: - NewEpochState era -> - Set (KeyHash 'StakePool (EraCrypto era)) -getPools = Map.keysSet . f - where - f = psStakePoolParams . certPState . lsCertState . esLState . nesEs - --- | Get the /current/ registered stake pool parameters for a given set of --- stake pools. The result map will contain entries for all the given stake --- pools that are currently registered. -getPoolParameters :: - NewEpochState era -> - Set (KeyHash 'StakePool (EraCrypto era)) -> - Map (KeyHash 'StakePool (EraCrypto era)) (PoolParams (EraCrypto era)) -getPoolParameters = Map.restrictKeys . f - where - f = psStakePoolParams . certPState . lsCertState . esLState . nesEs - --- | Get pool sizes, but in terms of total stake --- --- The stake distribution uses active stake (so that the leader schedule is not --- affected by undelegated stake), but the wallet wants to display pool --- saturation for rewards purposes. For that, it needs the fraction of total --- stake. --- --- This is not based on any snapshot, but uses the current ledger state. -poolsByTotalStakeFraction :: - forall era. - EraGov era => - Globals -> - NewEpochState era -> - PoolDistr (EraCrypto era) -poolsByTotalStakeFraction globals ss = - PoolDistr poolsByTotalStake - where - snap@(EB.SnapShot stake _ _) = currentSnapshot ss - Coin totalStake = getTotalStake globals ss - Coin activeStake = EB.sumAllStake stake - stakeRatio = activeStake % totalStake - PoolDistr poolsByActiveStake = calculatePoolDistr snap - poolsByTotalStake = Map.map toTotalStakeFrac poolsByActiveStake - toTotalStakeFrac :: - IndividualPoolStake (EraCrypto era) -> - IndividualPoolStake (EraCrypto era) - toTotalStakeFrac (IndividualPoolStake s vrf) = - IndividualPoolStake (s * stakeRatio) vrf - --- | Calculate the current total stake. -getTotalStake :: Globals -> NewEpochState era -> Coin -getTotalStake globals ss = - let supply = Coin . fromIntegral $ maxLovelaceSupply globals - es = nesEs ss - in circulation es supply - --- | Calculate the Non-Myopic Pool Member Rewards for a set of credentials. --- For each given credential, this function returns a map from each stake --- pool (identified by the key hash of the pool operator) to the --- non-myopic pool member reward for that stake pool. --- --- This is not based on any snapshot, but uses the current ledger state. -getNonMyopicMemberRewards :: - EraGov era => - Globals -> - NewEpochState era -> - Set (Either Coin (Credential 'Staking (EraCrypto era))) -> - Map - (Either Coin (Credential 'Staking (EraCrypto era))) - (Map (KeyHash 'StakePool (EraCrypto era)) Coin) -getNonMyopicMemberRewards globals ss = - Map.fromSet (\cred -> Map.map (mkNMMRewards $ memShare cred) poolData) - where - maxSupply = Coin . fromIntegral $ maxLovelaceSupply globals - Coin totalStake = circulation es maxSupply - toShare (Coin x) = StakeShare (x % totalStake) - memShare (Right cred) = - toShare $ maybe mempty fromCompact $ VMap.lookup cred (EB.unStake stake) - memShare (Left coin) = toShare coin - es = nesEs ss - pp = es ^. curPParamsEpochStateL - NonMyopic {likelihoodsNM = ls, rewardPotNM = rPot} = esNonMyopic es - EB.SnapShot stake delegs poolParams = currentSnapshot ss - poolData = - Map.fromDistinctAscList - [ ( k - , - ( percentile' (histLookup k) - , p - , toShare . EB.sumAllStake $ EB.poolStake k delegs stake - ) - ) - | (k, p) <- VMap.toAscList poolParams - ] - histLookup k = Map.findWithDefault mempty k ls - topPools = - getTopRankedPoolsVMap - rPot - (Coin totalStake) - pp - poolParams - (fmap percentile' ls) - mkNMMRewards t (hitRateEst, poolp, sigma) = - if checkPledge poolp - then nonMyopicMemberRew pp rPot poolp s sigma t topPools hitRateEst - else mempty - where - s = (toShare . ppPledge) poolp - checkPledge pool = - let ostake = sumPoolOwnersStake pool stake - in ppPledge poolp <= ostake - -sumPoolOwnersStake :: PoolParams c -> EB.Stake c -> Coin -sumPoolOwnersStake pool stake = - let getStakeFor o = - maybe mempty fromCompact $ VMap.lookup (KeyHashObj o) (EB.unStake stake) - in foldMap' getStakeFor (ppOwners pool) - --- | Create a current snapshot of the ledger state. --- --- When ranking pools, and reporting their saturation level, in the wallet, we --- do not want to use one of the regular snapshots, but rather the most recent --- ledger state. -currentSnapshot :: forall era. EraGov era => NewEpochState era -> EB.SnapShot (EraCrypto era) -currentSnapshot ss = - incrementalStakeDistr pp incrementalStake dstate pstate - where - pp = nesEs ss ^. curPParamsEpochStateL - ledgerState = esLState $ nesEs ss - incrementalStake = utxosStakeDistr $ lsUTxOState ledgerState - dstate = certDState $ lsCertState ledgerState - pstate = certPState $ lsCertState ledgerState - --- | Information about a stake pool -data RewardInfoPool = RewardInfoPool - { stake :: Coin - -- ^ Absolute stake delegated to this pool - , ownerPledge :: Coin - -- ^ Pledge of pool owner(s) - , ownerStake :: Coin - -- ^ Absolute stake delegated by pool owner(s) - , cost :: Coin - -- ^ Pool cost - , margin :: UnitInterval - -- ^ Pool margin - , performanceEstimate :: Double - -- ^ Number of blocks produced divided by expected number of blocks. - -- Can be larger than @1.0@ for pool that gets lucky. - -- (If some pools get unlucky, some pools must get lucky.) - } - deriving (Eq, Show, Generic) - -instance NoThunks RewardInfoPool - -instance NFData RewardInfoPool - -deriving instance FromJSON RewardInfoPool - -deriving instance ToJSON RewardInfoPool - --- | Global information that influences stake pool rewards -data RewardParams = RewardParams - { nOpt :: Natural - -- ^ Desired number of stake pools - , a0 :: NonNegativeInterval - -- ^ Influence of the pool owner's pledge on rewards - , rPot :: Coin - -- ^ Total rewards available for the given epoch - , totalStake :: Coin - -- ^ Maximum lovelace supply minus treasury - } - deriving (Eq, Show, Generic) - -instance NoThunks RewardParams - -instance NFData RewardParams - -deriving instance FromJSON RewardParams - -deriving instance ToJSON RewardParams - --- | Retrieve the information necessary to calculate stake pool member rewards --- from the /current/ stake distribution. --- --- This information includes the current stake distribution aggregated --- by stake pools and pool owners, --- the `current` pool costs and margins, --- and performance estimates. --- Also included are global information such as --- the total stake or protocol parameters. -getRewardInfoPools :: - EraGov era => - Globals -> - NewEpochState era -> - (RewardParams, Map (KeyHash 'StakePool (EraCrypto era)) RewardInfoPool) -getRewardInfoPools globals ss = - (mkRewardParams, VMap.toMap (VMap.mapWithKey mkRewardInfoPool poolParams)) - where - es = nesEs ss - pp = es ^. curPParamsEpochStateL - NonMyopic - { likelihoodsNM = ls - , rewardPotNM = rPot - } = esNonMyopic es - histLookup key = Map.findWithDefault mempty key ls - - EB.SnapShot stakes delegs poolParams = currentSnapshot ss - - mkRewardParams = - RewardParams - { a0 = pp ^. ppA0L - , nOpt = pp ^. ppNOptL - , totalStake = getTotalStake globals ss - , rPot = rPot - } - mkRewardInfoPool key poolp = - RewardInfoPool - { stake = pstake - , ownerStake = ostake - , ownerPledge = ppPledge poolp - , margin = ppMargin poolp - , cost = ppCost poolp - , performanceEstimate = - unPerformanceEstimate $ percentile' $ histLookup key - } - where - pstake = EB.sumAllStake $ EB.poolStake key delegs stakes - ostake = sumPoolOwnersStake poolp stakes - --- | Calculate stake pool rewards from the snapshot labeled `go`. --- Also includes information on how the rewards were calculated --- ('RewardProvenance'). --- --- For a calculation of rewards based on the current stake distribution, --- see 'getRewardInfoPools'. --- --- TODO: Deprecate 'getRewardProvenance', because wallets are more --- likely to use 'getRewardInfoPools' for up-to-date information --- on stake pool rewards. -getRewardProvenance :: - forall era. - EraGov era => - Globals -> - NewEpochState era -> - (RewardUpdate (EraCrypto era), RewardProvenance (EraCrypto era)) -getRewardProvenance globals newepochstate = - ( runReader - (createRUpd slotsPerEpoch blocksmade epochstate maxsupply asc secparam) - globals - , def - ) - where - epochstate = nesEs newepochstate - maxsupply :: Coin - maxsupply = Coin (fromIntegral (maxLovelaceSupply globals)) - blocksmade :: BlocksMade (EraCrypto era) - blocksmade = nesBprev newepochstate - epochnumber = nesEL newepochstate - slotsPerEpoch :: EpochSize - slotsPerEpoch = runReader (epochInfoSize (epochInfoPure globals) epochnumber) globals - asc = activeSlotCoeff globals - secparam = securityParameter globals - --------------------------------------------------------------------------------- --- Transaction helpers --------------------------------------------------------------------------------- - --- | Evaluate the minimum lovelace that a given transaction output must contain. -evaluateMinLovelaceOutput :: EraTxOut era => PParams era -> TxOut era -> Coin -evaluateMinLovelaceOutput = getMinCoinTxOut -{-# DEPRECATED evaluateMinLovelaceOutput "In favor of `getMinCoinTxOut`" #-} - -addKeyWitnesses :: EraTx era => Tx era -> Set (WitVKey 'Witness (EraCrypto era)) -> Tx era -addKeyWitnesses tx newWits = tx & witsTxL . addrTxWitsL %~ Set.union newWits - --- | Evaluate the difference between the value currently being consumed by --- a transaction and the number of lovelace being produced. --- This value will be zero for a valid transaction. -evaluateTransactionBalance :: - EraUTxO era => - -- | Current protocol parameters - PParams era -> - -- | Where the deposit info is stored - CertState era -> - -- | The UTxO relevant to the transaction. - UTxO era -> - -- | The transaction being evaluated for balance. - TxBody era -> - -- | The difference between what the transaction consumes and what it produces. - Value era -evaluateTransactionBalance pp dpstate u txb = - consumed pp dpstate u txb <-> produced pp dpstate txb -{-# DEPRECATED - evaluateTransactionBalance - "In favor of new API function `Cardano.Ledger.Api.Tx.Body.evalBalanceTxBody`" - #-} - --------------------------------------------------------------------------------- --- Shelley specifics --------------------------------------------------------------------------------- - -addShelleyKeyWitnesses :: - (EraTx era, Tx era ~ ShelleyTx era) => - ShelleyTx era -> - Set (WitVKey 'Witness (EraCrypto era)) -> - ShelleyTx era -addShelleyKeyWitnesses = addKeyWitnesses -{-# DEPRECATED addShelleyKeyWitnesses "In favor of 'addKeyWitnesses'" #-} - --------------------------------------------------------------------------------- --- CBOR instances --------------------------------------------------------------------------------- - -instance EncCBOR RewardParams where - encCBOR (RewardParams p1 p2 p3 p4) = - encode $ - Rec RewardParams - !> To p1 - !> To p2 - !> To p3 - !> To p4 - -instance DecCBOR RewardParams where - decCBOR = - decode $ - RecD RewardParams - To p1 - !> To p2 - !> To p3 - !> To p4 - !> To p5 - !> E encodeDouble d6 - -instance DecCBOR RewardInfoPool where - decCBOR = - decode $ - RecD RewardInfoPool - - EpochState era -> - AdaPots -totalAdaPotsES (EpochState (AccountState treasury_ reserves_) ls _ _) = - AdaPots - { treasuryAdaPot = treasury_ - , reservesAdaPot = reserves_ - , rewardsAdaPot = rewards_ - , utxoAdaPot = coins - , feesAdaPot = fees_ - , obligationsPot = obligationCertState certState <> govStateObligations - } - where - UTxOState u _ fees_ _ _ _ = lsUTxOState ls - certState@(CertState _ _ dstate) = lsCertState ls - rewards_ = fromCompact $ sumRewardsUView (rewards dstate) - coins = coinBalance u - govStateObligations = obligationGovState (ls ^. lsUTxOStateL . utxosGovStateL) - -sumAdaPots :: AdaPots -> Coin -sumAdaPots - AdaPots - { treasuryAdaPot - , reservesAdaPot - , rewardsAdaPot - , utxoAdaPot - , feesAdaPot - , obligationsPot - } = - treasuryAdaPot - <> reservesAdaPot - <> rewardsAdaPot - <> utxoAdaPot - <> feesAdaPot - <> sumObligation obligationsPot - --- | Calculate the total ada in the epoch state -totalAdaES :: (EraTxOut era, EraGov era) => EpochState era -> Coin -totalAdaES = sumAdaPots . totalAdaPotsES - --- ============================================= --- Produced and Consumed are specialized AdaPots --- relative to the actions of a TxBody - --- | Itemizing what is consumed by a transaction -data Consumed = Consumed - {conInputs :: !Coin, conRefunds :: !Coin, conWithdrawals :: !Coin} - -instance Show Consumed where - show (Consumed (Coin i) (Coin r) (Coin w)) = - "Consumed(Inputs " - ++ show i - ++ ", Refunds " - ++ show r - ++ ", Withdrawals " - ++ show w - ++ ") = " - ++ show (i + r + w) - --- | Itemizing what is Produced by a transaction -data Produced = Produced - { proOutputs :: !Coin - , proFees :: !Coin - , proDeposits :: !Coin - } - -instance Show Produced where - show (Produced (Coin out) (Coin f) (Coin d)) = - "Produced(Outputs " - ++ show out - ++ ", Fees " - ++ show f - ++ ", Deposits " - ++ show d - ++ ") = " - ++ show (out + f + d) - --- ========================= - --- | Compute the Coin part of what is consumed by a TxBody, itemized as a 'Consume' -consumedTxBody :: - EraTxBody era => - TxBody era -> - PParams era -> - CertState era -> - UTxO era -> - Consumed -consumedTxBody txBody pp dpstate utxo = - Consumed - { conInputs = coinBalance (txInsFilter utxo (txBody ^. inputsTxBodyL)) - , conRefunds = certsTotalRefundsTxBody pp dpstate txBody - , conWithdrawals = fold . unWithdrawals $ txBody ^. withdrawalsTxBodyL - } - --- | Compute the Coin part of what is produced by a TxBody, itemized as a 'Produced' -producedTxBody :: - EraTxBody era => - TxBody era -> - PParams era -> - CertState era -> - Produced -producedTxBody txBody pp dpstate = - Produced - { proOutputs = coinBalance (txouts txBody) - , proFees = txBody ^. feeTxBodyL - , proDeposits = certsTotalDepositsTxBody pp dpstate txBody - } diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Address/Bootstrap.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/Address/Bootstrap.hs deleted file mode 100644 index 92fb4ebe736..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Address/Bootstrap.hs +++ /dev/null @@ -1,7 +0,0 @@ -module Cardano.Ledger.Shelley.Address.Bootstrap - {-# DEPRECATED "Use 'import Cardano.Ledger.Keys.Bootstrap' instead" #-} ( - module X, -) -where - -import Cardano.Ledger.Keys.Bootstrap as X diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/BlockChain.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/BlockChain.hs deleted file mode 100644 index ce1c35c4b43..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/BlockChain.hs +++ /dev/null @@ -1,263 +0,0 @@ -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Shelley.BlockChain ( - ShelleyTxSeq (ShelleyTxSeq, txSeqTxns', TxSeq'), - constructMetadata, - txSeqTxns, - bbHash, - bBodySize, - slotToNonce, - -- - incrBlocks, - coreAuxDataBytes, - txSeqDecoder, -) -where - -import qualified Cardano.Crypto.Hash.Class as Hash -import Cardano.Ledger.BaseTypes ( - BlocksMade (..), - Nonce (..), - StrictMaybe (..), - mkNonceFromNumber, - strictMaybeToMaybe, - ) -import Cardano.Ledger.Binary ( - Annotator (..), - DecCBOR (decCBOR), - Decoder, - EncCBOR (..), - EncCBORGroup (..), - encodeFoldableEncoder, - encodeFoldableMapEncoder, - encodePreEncoded, - serialize, - withSlice, - ) -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto -import Cardano.Ledger.Keys (Hash, KeyHash, KeyRole (..)) -import Cardano.Ledger.SafeHash (SafeToHash (..)) -import Cardano.Ledger.Shelley.Era (ShelleyEra) -import Cardano.Ledger.Shelley.Tx (ShelleyTx, segwitTx) -import Cardano.Ledger.Slot (SlotNo (..)) -import Control.Monad (unless) -import Data.ByteString (ByteString) -import qualified Data.ByteString.Lazy as BSL -import Data.Coerce (coerce) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Sequence (Seq) -import qualified Data.Sequence as Seq -import Data.Sequence.Strict (StrictSeq) -import qualified Data.Sequence.Strict as StrictSeq -import Data.Typeable -import GHC.Generics (Generic) -import Lens.Micro ((^.)) -import NoThunks.Class (AllowThunksIn (..), NoThunks (..)) - -data ShelleyTxSeq era = TxSeq' - { txSeqTxns' :: !(StrictSeq (ShelleyTx era)) - , txSeqBodyBytes :: BSL.ByteString - , txSeqWitsBytes :: BSL.ByteString - , txSeqMetadataBytes :: BSL.ByteString - -- bytes representing a (Map index metadata). Missing indices have SNothing for metadata - } - deriving (Generic) - -instance Crypto c => EraSegWits (ShelleyEra c) where - type TxSeq (ShelleyEra c) = ShelleyTxSeq (ShelleyEra c) - fromTxSeq = txSeqTxns - toTxSeq = ShelleyTxSeq - hashTxSeq = bbHash - numSegComponents = 3 - -deriving via - AllowThunksIn - '[ "txSeqBodyBytes" - , "txSeqWitsBytes" - , "txSeqMetadataBytes" - ] - (ShelleyTxSeq era) - instance - (Typeable era, NoThunks (ShelleyTx era)) => NoThunks (ShelleyTxSeq era) - -deriving stock instance - Show (ShelleyTx era) => - Show (ShelleyTxSeq era) - -deriving stock instance - Eq (ShelleyTx era) => - Eq (ShelleyTxSeq era) - --- =========================== --- Getting bytes from pieces of a Tx - -coreWitnessBytes :: - (EraTx era, SafeToHash (TxWits era)) => - Tx era -> - ByteString -coreWitnessBytes tx = originalBytes $ tx ^. witsTxL - -coreBodyBytes :: EraTx era => Tx era -> ByteString -coreBodyBytes tx = originalBytes $ tx ^. bodyTxL - -coreAuxDataBytes :: EraTx era => Tx era -> StrictMaybe ByteString -coreAuxDataBytes tx = originalBytes <$> tx ^. auxDataTxL - --- =========================== - --- | Constuct a TxSeq (with all it bytes) from just Tx's -pattern ShelleyTxSeq :: - forall era. - ( EraTx era - , Tx era ~ ShelleyTx era - , SafeToHash (TxWits era) - ) => - StrictSeq (Tx era) -> - ShelleyTxSeq era -pattern ShelleyTxSeq xs <- - TxSeq' xs _ _ _ - where - ShelleyTxSeq txns = - let version = eraProtVerLow @era - serializeFoldable x = - serialize version $ - encodeFoldableEncoder encodePreEncoded x - metaChunk index m = encodePair <$> strictMaybeToMaybe m - where - encodePair metadata = encCBOR index <> encodePreEncoded metadata - in TxSeq' - { txSeqTxns' = txns - , -- bytes encoding Seq(TxBody era) - txSeqBodyBytes = serializeFoldable $ coreBodyBytes @era <$> txns - , -- bytes encoding Seq(TxWits era) - txSeqWitsBytes = serializeFoldable $ coreWitnessBytes @era <$> txns - , -- bytes encoding a (Map Int (TxAuxData)) - txSeqMetadataBytes = - serialize version . encodeFoldableMapEncoder metaChunk $ - coreAuxDataBytes @era <$> txns - } - -{-# COMPLETE ShelleyTxSeq #-} - -txSeqTxns :: ShelleyTxSeq era -> StrictSeq (ShelleyTx era) -txSeqTxns (TxSeq' ts _ _ _) = ts - -instance - forall era. - Era era => - EncCBORGroup (ShelleyTxSeq era) - where - encCBORGroup (TxSeq' _ bodyBytes witsBytes metadataBytes) = - encodePreEncoded $ - BSL.toStrict $ - bodyBytes <> witsBytes <> metadataBytes - encodedGroupSizeExpr size _proxy = - encodedSizeExpr size (Proxy :: Proxy ByteString) - + encodedSizeExpr size (Proxy :: Proxy ByteString) - + encodedSizeExpr size (Proxy :: Proxy ByteString) - listLen _ = 3 - listLenBound _ = 3 - --- | Hash a given block body -bbHash :: - forall era. - Era era => - ShelleyTxSeq era -> - Hash (EraCrypto era) EraIndependentBlockBody -bbHash (TxSeq' _ bodies wits md) = - coerce $ - hashStrict - ( hashPart bodies - <> hashPart wits - <> hashPart md - ) - where - hashStrict :: ByteString -> Hash (EraCrypto era) ByteString - hashStrict = Hash.hashWith id - hashPart = Hash.hashToBytes . hashStrict . BSL.toStrict - --- | Given a size and a mapping from indices to maybe metadata, --- return a sequence whose size is the size paramater and --- whose non-Nothing values correspond to the values in the mapping. -constructMetadata :: - forall era. - Int -> - Map Int (Annotator (TxAuxData era)) -> - Seq (Maybe (Annotator (TxAuxData era))) -constructMetadata n md = fmap (`Map.lookup` md) (Seq.fromList [0 .. n - 1]) - --- | The parts of the Tx in Blocks that have to have DecCBOR(Annotator x) instances. --- These are exactly the parts that are SafeToHash. --- | Decode a TxSeq, used in decoding a Block. -txSeqDecoder :: - forall era. - EraTx era => - Bool -> - forall s. - Decoder s (Annotator (ShelleyTxSeq era)) -txSeqDecoder lax = do - (bodies, bodiesAnn) <- withSlice decCBOR - (wits, witsAnn) <- withSlice decCBOR - let b = length bodies - inRange x = (0 <= x) && (x <= (b - 1)) - w = length wits - (metadata, metadataAnn) <- withSlice $ - do - m <- decCBOR - unless -- TODO this PR introduces this new test, That didn't used to run in the Shelley - (lax || all inRange (Map.keysSet m)) -- Era, Is it possible there might be some blocks, that should have been caught on the chain? - (fail ("Some Auxiliarydata index is not in the range: 0 .. " ++ show (b - 1))) - pure (constructMetadata @era b m) - - unless - (lax || b == w) - ( fail $ - "different number of transaction bodies (" - <> show b - <> ") and witness sets (" - <> show w - <> ")" - ) - - let txns = - sequenceA $ - StrictSeq.forceToStrict $ - Seq.zipWith3 segwitTx bodies wits metadata - pure $ TxSeq' <$> txns <*> bodiesAnn <*> witsAnn <*> metadataAnn - -instance EraTx era => DecCBOR (Annotator (ShelleyTxSeq era)) where - decCBOR = txSeqDecoder False - -slotToNonce :: SlotNo -> Nonce -slotToNonce (SlotNo s) = mkNonceFromNumber s - -incrBlocks :: - Bool -> - KeyHash 'StakePool c -> - BlocksMade c -> - BlocksMade c -incrBlocks isOverlay hk b'@(BlocksMade b) - | isOverlay = b' - | otherwise = BlocksMade $ case hkVal of - Nothing -> Map.insert hk 1 b - Just n -> Map.insert hk (n + 1) b - where - hkVal = Map.lookup hk b diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Core.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/Core.hs deleted file mode 100644 index a3579ba032f..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Core.hs +++ /dev/null @@ -1,46 +0,0 @@ -{-# LANGUAGE PatternSynonyms #-} - -module Cardano.Ledger.Shelley.Core ( - ShelleyEraTxBody (..), - Withdrawals (..), - ShelleyEraTxCert (..), - pattern MirTxCert, - MIRCert (..), - MIRPot (..), - MIRTarget (..), - pattern GenesisDelegTxCert, - pattern RegTxCert, - pattern UnRegTxCert, - pattern DelegStakeTxCert, - module Cardano.Ledger.Core, - module Cardano.Ledger.Shelley.Governance, -) -where - -import Cardano.Ledger.Address (Withdrawals (..)) -import Cardano.Ledger.Core ( - EraPParams ( - DowngradePParams, - PParamsHKD, - UpgradePParams, - applyPPUpdates, - ppDG, - ppProtocolVersionL, - ppuProtocolVersionL - ), - ) -import Cardano.Ledger.Core hiding (EraPParams (..)) -import Cardano.Ledger.Shelley.Governance -import Cardano.Ledger.Shelley.Tx () -import Cardano.Ledger.Shelley.TxBody (ShelleyEraTxBody (..)) -import Cardano.Ledger.Shelley.TxCert ( - MIRCert (..), - MIRPot (..), - MIRTarget (..), - ShelleyEraTxCert (..), - pattern DelegStakeTxCert, - pattern GenesisDelegTxCert, - pattern MirTxCert, - pattern RegTxCert, - pattern UnRegTxCert, - ) diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Delegation/Certificates.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/Delegation/Certificates.hs deleted file mode 100644 index 55b6f34df62..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Delegation/Certificates.hs +++ /dev/null @@ -1,6 +0,0 @@ -module Cardano.Ledger.Shelley.Delegation.Certificates - {-# DEPRECATED "Use `Cardano.Ledger.Shelley.TxCert` instead" #-} ( - module Cardano.Ledger.Shelley.TxCert, -) where - -import Cardano.Ledger.Shelley.TxCert diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/EpochBoundary.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/EpochBoundary.hs deleted file mode 100644 index ea02c27d4bb..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/EpochBoundary.hs +++ /dev/null @@ -1,7 +0,0 @@ -module Cardano.Ledger.Shelley.EpochBoundary - {-# DEPRECATED "Use 'import Cardano.Ledger.EpochBoundary' instead" #-} ( - module X, -) -where - -import Cardano.Ledger.EpochBoundary as X diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Era.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/Era.hs deleted file mode 100644 index 6bf75815d94..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Era.hs +++ /dev/null @@ -1,122 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE TypeFamilies #-} - -module Cardano.Ledger.Shelley.Era ( - ShelleyEra, - ShelleyBBODY, - ShelleyDELEG, - ShelleyDELEGS, - ShelleyDELPL, - ShelleyEPOCH, - ShelleyLEDGER, - ShelleyLEDGERS, - ShelleyMIR, - ShelleyNEWEPOCH, - ShelleyNEWPP, - ShelleyPOOL, - ShelleyPOOLREAP, - ShelleyPPUP, - ShelleyRUPD, - ShelleySNAP, - ShelleyTICK, - ShelleyTICKF, - ShelleyUPEC, - ShelleyUTXO, - ShelleyUTXOW, -) -where - -import Cardano.Ledger.Coin (Coin) -import Cardano.Ledger.Core (ByronEra, Era (..), EraRule, Value) -import Cardano.Ledger.Crypto (Crypto) - -data ShelleyEra c - -instance Crypto c => Era (ShelleyEra c) where - type PreviousEra (ShelleyEra c) = ByronEra c - type EraCrypto (ShelleyEra c) = c - type ProtVerLow (ShelleyEra c) = 2 - - eraName = "Shelley" - -type instance Value (ShelleyEra _c) = Coin - -data ShelleyBBODY era - -data ShelleyDELEG era - -data ShelleyDELEGS era - -data ShelleyDELPL era - -data ShelleyEPOCH era - -data ShelleyLEDGER era - -data ShelleyLEDGERS era - -data ShelleyMIR era - -data ShelleyNEWEPOCH era - -data ShelleyNEWPP era - -data ShelleyPOOL era - -data ShelleyPOOLREAP era - -data ShelleyPPUP era - -data ShelleyRUPD era - -data ShelleySNAP era - -data ShelleyTICK era - -data ShelleyTICKF era - -data ShelleyUPEC era - -data ShelleyUTXO era - -data ShelleyUTXOW era - -type instance EraRule "BBODY" (ShelleyEra c) = ShelleyBBODY (ShelleyEra c) - -type instance EraRule "DELEG" (ShelleyEra c) = ShelleyDELEG (ShelleyEra c) - -type instance EraRule "DELEGS" (ShelleyEra c) = ShelleyDELEGS (ShelleyEra c) - -type instance EraRule "DELPL" (ShelleyEra c) = ShelleyDELPL (ShelleyEra c) - -type instance EraRule "EPOCH" (ShelleyEra c) = ShelleyEPOCH (ShelleyEra c) - -type instance EraRule "LEDGER" (ShelleyEra c) = ShelleyLEDGER (ShelleyEra c) - -type instance EraRule "LEDGERS" (ShelleyEra c) = ShelleyLEDGERS (ShelleyEra c) - -type instance EraRule "MIR" (ShelleyEra c) = ShelleyMIR (ShelleyEra c) - -type instance EraRule "NEWEPOCH" (ShelleyEra c) = ShelleyNEWEPOCH (ShelleyEra c) - -type instance EraRule "NEWPP" (ShelleyEra c) = ShelleyNEWPP (ShelleyEra c) - -type instance EraRule "POOL" (ShelleyEra c) = ShelleyPOOL (ShelleyEra c) - -type instance EraRule "POOLREAP" (ShelleyEra c) = ShelleyPOOLREAP (ShelleyEra c) - -type instance EraRule "PPUP" (ShelleyEra c) = ShelleyPPUP (ShelleyEra c) - -type instance EraRule "RUPD" (ShelleyEra c) = ShelleyRUPD (ShelleyEra c) - -type instance EraRule "SNAP" (ShelleyEra c) = ShelleySNAP (ShelleyEra c) - -type instance EraRule "TICK" (ShelleyEra c) = ShelleyTICK (ShelleyEra c) - -type instance EraRule "TICKF" (ShelleyEra c) = ShelleyTICKF (ShelleyEra c) - -type instance EraRule "UPEC" (ShelleyEra c) = ShelleyUPEC (ShelleyEra c) - -type instance EraRule "UTXO" (ShelleyEra c) = ShelleyUTXO (ShelleyEra c) - -type instance EraRule "UTXOW" (ShelleyEra c) = ShelleyUTXOW (ShelleyEra c) diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Genesis.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/Genesis.hs deleted file mode 100644 index a55bc4fc9eb..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Genesis.hs +++ /dev/null @@ -1,698 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE NumericUnderscores #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Shelley.Genesis ( - ShelleyGenesisStaking (..), - ShelleyGenesis (..), - toShelleyGenesisPairs, - ValidationErr (..), - NominalDiffTimeMicro (..), - emptyGenesisStaking, - sgActiveSlotCoeff, - genesisUTxO, - initialFundsPseudoTxIn, - validateGenesis, - describeValidationErr, - mkShelleyGlobals, - nominalDiffTimeMicroToMicroseconds, - nominalDiffTimeMicroToSeconds, - toNominalDiffTimeMicro, - toNominalDiffTimeMicroWithRounding, - fromNominalDiffTimeMicro, - secondsToNominalDiffTimeMicro, - sgInitialFundsL, - sgStakingL, -) -where - -import qualified Cardano.Crypto.Hash.Class as Crypto -import Cardano.Crypto.KES.Class (totalPeriodsKES) -import Cardano.Ledger.Address (Addr, serialiseAddr) -import Cardano.Ledger.BaseTypes ( - ActiveSlotCoeff, - BoundedRational (boundRational, unboundRational), - EpochSize (..), - Globals (..), - Network, - Nonce (..), - PositiveUnitInterval, - Version, - mkActiveSlotCoeff, - ) -import Cardano.Ledger.Binary ( - DecCBOR (..), - Decoder, - DecoderError (..), - EncCBOR (..), - Encoding, - FromCBOR (..), - ToCBOR (..), - cborError, - decodeRational, - decodeRecordNamed, - encodeListLen, - enforceDecoderVersion, - enforceEncodingVersion, - shelleyProtVer, - toPlainDecoder, - toPlainEncoding, - ) -import Cardano.Ledger.Coin (Coin) -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto (Crypto, HASH, KES) -import Cardano.Ledger.Keys -import Cardano.Ledger.PoolParams (PoolParams (..)) -import Cardano.Ledger.SafeHash (unsafeMakeSafeHash) -import Cardano.Ledger.Shelley.Era (ShelleyEra) -import Cardano.Ledger.Shelley.PParams (ShelleyPParams (..)) -import Cardano.Ledger.Shelley.StabilityWindow -import Cardano.Ledger.TxIn (TxId (..), TxIn (..)) -import Cardano.Ledger.UTxO (UTxO (UTxO)) -import qualified Cardano.Ledger.Val as Val -import Cardano.Slotting.EpochInfo (EpochInfo) -import Cardano.Slotting.Time (SystemStart (SystemStart)) -import Control.Monad.Identity (Identity) -import Data.Aeson (FromJSON (..), ToJSON (..), object, (.!=), (.:), (.:?), (.=)) -import qualified Data.Aeson as Aeson -import Data.Aeson.Types (Parser, Value (..), typeMismatch) -import Data.Fixed (Fixed (..), Micro, Pico) -import qualified Data.ListMap as LM -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Maybe (catMaybes) -import Data.Proxy (Proxy (..)) -import Data.Text (Text) -import qualified Data.Text as Text -import Data.Time.Clock ( - NominalDiffTime, - UTCTime (..), - nominalDiffTimeToSeconds, - secondsToNominalDiffTime, - ) -import Data.Unit.Strict (forceElemsToWHNF) -import Data.Word (Word32, Word64) -import GHC.Generics (Generic) -import Lens.Micro (Lens', lens) -import NoThunks.Class (AllowThunksIn (..), NoThunks (..)) - --- | Genesis Shelley staking configuration. --- --- This allows us to configure some initial stake pools and delegation to them, --- in order to test Praos in a static configuration, without requiring on-chain --- registration and delegation. --- --- For simplicity, pools defined in the genesis staking do not pay deposits for --- their registration. -data ShelleyGenesisStaking c = ShelleyGenesisStaking - { sgsPools :: LM.ListMap (KeyHash 'StakePool c) (PoolParams c) - -- ^ Pools to register - -- - -- The key in this map is the hash of the public key of the _pool_. This - -- need not correspond to any payment or staking key, but must correspond - -- to the cold key held by 'TPraosIsCoreNode'. - , sgsStake :: LM.ListMap (KeyHash 'Staking c) (KeyHash 'StakePool c) - -- ^ Stake-holding key hash credentials and the pools to delegate that stake - -- to. We require the raw staking key hash in order to: - -- - -- - Avoid pointer addresses, which would be tricky when there's no slot or - -- transaction to point to. - -- - Avoid script credentials. - } - deriving stock (Eq, Show, Generic) - -instance NoThunks (ShelleyGenesisStaking c) - -instance Semigroup (ShelleyGenesisStaking c) where - (<>) (ShelleyGenesisStaking p1 s1) (ShelleyGenesisStaking p2 s2) = - ShelleyGenesisStaking (p1 <> p2) (s1 <> s2) - -instance Monoid (ShelleyGenesisStaking c) where - mempty = ShelleyGenesisStaking mempty mempty - -instance Crypto c => EncCBOR (ShelleyGenesisStaking c) where - encCBOR (ShelleyGenesisStaking pools stake) = - encodeListLen 2 <> encCBOR pools <> encCBOR stake - -instance Crypto c => DecCBOR (ShelleyGenesisStaking c) where - decCBOR = do - decodeRecordNamed "ShelleyGenesisStaking" (const 2) $ do - pools <- decCBOR - stake <- decCBOR - pure $ ShelleyGenesisStaking pools stake - --- | Empty genesis staking -emptyGenesisStaking :: ShelleyGenesisStaking c -emptyGenesisStaking = mempty - --- | Unlike @'NominalDiffTime'@ that supports @'Pico'@ precision, this type --- only supports @'Micro'@ precision. -newtype NominalDiffTimeMicro = NominalDiffTimeMicro Micro - deriving (Show, Eq, Generic) - deriving anyclass (NoThunks) - deriving newtype (Ord, Num, Fractional, Real, ToJSON, FromJSON, EncCBOR, DecCBOR) - --- | There is no loss of resolution in this conversion -microToPico :: Micro -> Pico -microToPico micro = fromRational @Pico $ toRational micro - --- | Loss of resolution occurs in this conversion -picoToMicro :: Pico -> Micro -picoToMicro pico = fromRational @Micro $ toRational pico - -fromNominalDiffTimeMicro :: NominalDiffTimeMicro -> NominalDiffTime -fromNominalDiffTimeMicro = - secondsToNominalDiffTime . microToPico . nominalDiffTimeMicroToMicroseconds - -toNominalDiffTimeMicroWithRounding :: NominalDiffTime -> NominalDiffTimeMicro -toNominalDiffTimeMicroWithRounding = - secondsToNominalDiffTimeMicro . picoToMicro . nominalDiffTimeToSeconds - -toNominalDiffTimeMicro :: NominalDiffTime -> Maybe NominalDiffTimeMicro -toNominalDiffTimeMicro ndt - | fromNominalDiffTimeMicro ndtm == ndt = Just ndtm - | otherwise = Nothing - where - ndtm = toNominalDiffTimeMicroWithRounding ndt - -secondsToNominalDiffTimeMicro :: Micro -> NominalDiffTimeMicro -secondsToNominalDiffTimeMicro = NominalDiffTimeMicro - -nominalDiffTimeMicroToMicroseconds :: NominalDiffTimeMicro -> Micro -nominalDiffTimeMicroToMicroseconds (NominalDiffTimeMicro microseconds) = microseconds - -nominalDiffTimeMicroToSeconds :: NominalDiffTimeMicro -> Pico -nominalDiffTimeMicroToSeconds (NominalDiffTimeMicro microseconds) = microToPico microseconds - --- | Shelley genesis information --- --- Note that this is needed only for a pure Shelley network, hence it being --- defined here rather than in its own module. In mainnet, Shelley will --- transition naturally from Byron, and thus will never have its own genesis --- information. -data ShelleyGenesis c = ShelleyGenesis - { sgSystemStart :: !UTCTime - , sgNetworkMagic :: !Word32 - , sgNetworkId :: !Network - , sgActiveSlotsCoeff :: !PositiveUnitInterval - , sgSecurityParam :: !Word64 - , sgEpochLength :: !EpochSize - , sgSlotsPerKESPeriod :: !Word64 - , sgMaxKESEvolutions :: !Word64 - , sgSlotLength :: !NominalDiffTimeMicro - , sgUpdateQuorum :: !Word64 - , sgMaxLovelaceSupply :: !Word64 - , sgProtocolParams :: !(PParams (ShelleyEra c)) - , sgGenDelegs :: !(Map (KeyHash 'Genesis c) (GenDelegPair c)) - , sgInitialFunds :: LM.ListMap (Addr c) Coin - -- ^ 'sgInitialFunds' is intentionally kept lazy, as it can otherwise cause - -- out-of-memory problems in testing and benchmarking. - , sgStaking :: ShelleyGenesisStaking c - -- ^ 'sgStaking' is intentionally kept lazy, as it can otherwise cause - -- out-of-memory problems in testing and benchmarking. - } - deriving stock (Generic) - -sgInitialFundsL :: Lens' (ShelleyGenesis c) (LM.ListMap (Addr c) Coin) -sgInitialFundsL = lens sgInitialFunds (\sg x -> sg {sgInitialFunds = x}) - -sgStakingL :: Lens' (ShelleyGenesis c) (ShelleyGenesisStaking c) -sgStakingL = lens sgStaking (\sg x -> sg {sgStaking = x}) - -deriving instance Crypto c => Show (ShelleyGenesis c) - -deriving instance Crypto c => Eq (ShelleyGenesis c) - -deriving via - AllowThunksIn '["sgInitialFunds", "sgStaking"] (ShelleyGenesis c) - instance - Crypto c => NoThunks (ShelleyGenesis c) - -sgActiveSlotCoeff :: ShelleyGenesis c -> ActiveSlotCoeff -sgActiveSlotCoeff = mkActiveSlotCoeff . sgActiveSlotsCoeff - -instance Crypto c => ToJSON (ShelleyGenesis c) where - toJSON = Aeson.object . toShelleyGenesisPairs - toEncoding = Aeson.pairs . mconcat . toShelleyGenesisPairs - --------------------------------------------------- --- Legacy JSON representation of ShelleyGenesis -- --------------------------------------------------- -newtype LegacyJSONPParams c = LegacyJSONPParams (PParamsHKD Identity (ShelleyEra c)) - -legacyFromJSONPParams :: LegacyJSONPParams c -> PParams (ShelleyEra c) -legacyFromJSONPParams (LegacyJSONPParams x) = PParams x - -instance FromJSON (LegacyJSONPParams c) where - parseJSON = - Aeson.withObject "ShelleyPParams" $ \obj -> do - LegacyJSONPParams - <$> ( ShelleyPParams - <$> obj .: "minFeeA" - <*> obj .: "minFeeB" - <*> obj .: "maxBlockBodySize" - <*> obj .: "maxTxSize" - <*> obj .: "maxBlockHeaderSize" - <*> obj .: "keyDeposit" - <*> obj .: "poolDeposit" - <*> obj .: "eMax" - <*> obj .: "nOpt" - <*> obj .: "a0" - <*> obj .: "rho" - <*> obj .: "tau" - <*> obj .: "decentralisationParam" - <*> (parseNonce =<< (obj .: "extraEntropy")) - <*> obj .: "protocolVersion" - <*> obj .:? "minUTxOValue" .!= mempty - <*> obj .:? "minPoolCost" .!= mempty - ) - where - parseNonce :: Aeson.Value -> Parser Nonce - parseNonce = - Aeson.withObject - "Nonce" - ( \obj -> do - tag <- (obj .: "tag" :: Parser Text) - case tag of - "Nonce" -> Nonce <$> obj .: "contents" - "NeutralNonce" -> return NeutralNonce - _ -> typeMismatch "Nonce" (Object obj) - ) - -legacyToJSONPParams :: PParams (ShelleyEra c) -> LegacyJSONPParams c -legacyToJSONPParams (PParams x) = LegacyJSONPParams x - -instance ToJSON (LegacyJSONPParams c) where - toJSON - ( LegacyJSONPParams - ( ShelleyPParams - { sppMinFeeA - , sppMinFeeB - , sppMaxBBSize - , sppMaxTxSize - , sppMaxBHSize - , sppKeyDeposit - , sppPoolDeposit - , sppEMax - , sppNOpt - , sppA0 - , sppRho - , sppTau - , sppD - , sppExtraEntropy - , sppProtocolVersion - , sppMinUTxOValue - , sppMinPoolCost - } - ) - ) = - Aeson.object - [ "minFeeA" .= sppMinFeeA - , "minFeeB" .= sppMinFeeB - , "maxBlockBodySize" .= sppMaxBBSize - , "maxTxSize" .= sppMaxTxSize - , "maxBlockHeaderSize" .= sppMaxBHSize - , "keyDeposit" .= sppKeyDeposit - , "poolDeposit" .= sppPoolDeposit - , "eMax" .= sppEMax - , "nOpt" .= sppNOpt - , "a0" .= sppA0 - , "rho" .= sppRho - , "tau" .= sppTau - , "decentralisationParam" .= sppD - , "extraEntropy" - .= object - ( case sppExtraEntropy of - Nonce hash -> - [ "tag" .= ("Nonce" :: Text) - , "contents" .= hash - ] - NeutralNonce -> ["tag" .= ("NeutralNonce" :: Text)] - ) - , "protocolVersion" .= sppProtocolVersion - , "minUTxOValue" .= sppMinUTxOValue - , "minPoolCost" .= sppMinPoolCost - ] - -toShelleyGenesisPairs :: (Aeson.KeyValue e a, Crypto c) => ShelleyGenesis c -> [a] -toShelleyGenesisPairs - ShelleyGenesis - { sgSystemStart - , sgNetworkMagic - , sgNetworkId - , sgActiveSlotsCoeff - , sgSecurityParam - , sgEpochLength - , sgSlotsPerKESPeriod - , sgMaxKESEvolutions - , sgSlotLength - , sgUpdateQuorum - , sgMaxLovelaceSupply - , sgProtocolParams - , sgGenDelegs - , sgInitialFunds - , sgStaking - } = - let !strictSgInitialFunds = sgInitialFunds - !strictSgStaking = sgStaking - in [ "systemStart" .= sgSystemStart - , "networkMagic" .= sgNetworkMagic - , "networkId" .= sgNetworkId - , "activeSlotsCoeff" .= sgActiveSlotsCoeff - , "securityParam" .= sgSecurityParam - , "epochLength" .= sgEpochLength - , "slotsPerKESPeriod" .= sgSlotsPerKESPeriod - , "maxKESEvolutions" .= sgMaxKESEvolutions - , "slotLength" .= sgSlotLength - , "updateQuorum" .= sgUpdateQuorum - , "maxLovelaceSupply" .= sgMaxLovelaceSupply - , "protocolParams" .= legacyToJSONPParams sgProtocolParams - , "genDelegs" .= sgGenDelegs - , "initialFunds" .= strictSgInitialFunds - , "staking" .= strictSgStaking - ] - -instance Crypto c => FromJSON (ShelleyGenesis c) where - parseJSON = - Aeson.withObject "ShelleyGenesis" $ \obj -> - ShelleyGenesis - <$> (forceUTCTime <$> obj .: "systemStart") - <*> obj .: "networkMagic" - <*> obj .: "networkId" - <*> obj .: "activeSlotsCoeff" - <*> obj .: "securityParam" - <*> obj .: "epochLength" - <*> obj .: "slotsPerKESPeriod" - <*> obj .: "maxKESEvolutions" - <*> obj .: "slotLength" - <*> obj .: "updateQuorum" - <*> obj .: "maxLovelaceSupply" - <*> (legacyFromJSONPParams <$> obj .: "protocolParams") - <*> (forceElemsToWHNF <$> obj .: "genDelegs") - <*> (forceElemsToWHNF <$> obj .: "initialFunds") -- TODO: disable. Move to EraTransition - <*> obj .:? "staking" .!= emptyGenesisStaking -- TODO: remove. Move to EraTransition - where - forceUTCTime date = - let !day = utctDay date - !time = utctDayTime date - in UTCTime day time - -instance Crypto c => ToJSON (ShelleyGenesisStaking c) where - toJSON = Aeson.object . toShelleyGenesisStakingPairs - toEncoding = Aeson.pairs . mconcat . toShelleyGenesisStakingPairs - -toShelleyGenesisStakingPairs :: - (Aeson.KeyValue e a, Crypto c) => - ShelleyGenesisStaking c -> - [a] -toShelleyGenesisStakingPairs ShelleyGenesisStaking {sgsPools, sgsStake} = - [ "pools" .= sgsPools - , "stake" .= sgsStake - ] - -instance Crypto c => FromJSON (ShelleyGenesisStaking c) where - parseJSON = - Aeson.withObject "ShelleyGenesisStaking" $ \obj -> - ShelleyGenesisStaking - <$> (forceElemsToWHNF <$> obj .: "pools") - <*> (forceElemsToWHNF <$> obj .: "stake") - --- | Genesis are always encoded with the version of era they are defined in. -instance Crypto c => DecCBOR (ShelleyGenesis c) - -instance Crypto c => EncCBOR (ShelleyGenesis c) - -instance Crypto c => ToCBOR (ShelleyGenesis c) where - toCBOR - ShelleyGenesis - { sgSystemStart - , sgNetworkMagic - , sgNetworkId - , sgActiveSlotsCoeff - , sgSecurityParam - , sgEpochLength - , sgSlotsPerKESPeriod - , sgMaxKESEvolutions - , sgSlotLength - , sgUpdateQuorum - , sgMaxLovelaceSupply - , sgProtocolParams - , sgGenDelegs - , sgInitialFunds - , sgStaking - } = - toPlainEncoding shelleyProtVer $ - encodeListLen 15 - <> encCBOR sgSystemStart - <> encCBOR sgNetworkMagic - <> encCBOR sgNetworkId - <> activeSlotsCoeffEncCBOR sgActiveSlotsCoeff - <> encCBOR sgSecurityParam - <> encCBOR (unEpochSize sgEpochLength) - <> encCBOR sgSlotsPerKESPeriod - <> encCBOR sgMaxKESEvolutions - <> encCBOR sgSlotLength - <> encCBOR sgUpdateQuorum - <> encCBOR sgMaxLovelaceSupply - <> encCBOR sgProtocolParams - <> encCBOR sgGenDelegs - <> encCBOR sgInitialFunds - <> encCBOR sgStaking - -instance Crypto c => FromCBOR (ShelleyGenesis c) where - fromCBOR = toPlainDecoder shelleyProtVer $ do - decodeRecordNamed "ShelleyGenesis" (const 15) $ do - sgSystemStart <- decCBOR - sgNetworkMagic <- decCBOR - sgNetworkId <- decCBOR - sgActiveSlotsCoeff <- activeSlotsCoeffDecCBOR - sgSecurityParam <- decCBOR - sgEpochLength <- decCBOR - sgSlotsPerKESPeriod <- decCBOR - sgMaxKESEvolutions <- decCBOR - sgSlotLength <- decCBOR - sgUpdateQuorum <- decCBOR - sgMaxLovelaceSupply <- decCBOR - sgProtocolParams <- decCBOR - sgGenDelegs <- decCBOR - sgInitialFunds <- decCBOR - sgStaking <- decCBOR - pure $ - ShelleyGenesis - sgSystemStart - sgNetworkMagic - sgNetworkId - sgActiveSlotsCoeff - sgSecurityParam - (EpochSize sgEpochLength) - sgSlotsPerKESPeriod - sgMaxKESEvolutions - sgSlotLength - sgUpdateQuorum - sgMaxLovelaceSupply - sgProtocolParams - sgGenDelegs - sgInitialFunds - sgStaking - --- | Serialize `PositiveUnitInterval` type in the same way `Rational` is serialized, --- however ensure there is no usage of tag 30 by enforcing Shelley protocol version. -activeSlotsCoeffEncCBOR :: PositiveUnitInterval -> Encoding -activeSlotsCoeffEncCBOR = enforceEncodingVersion shelleyProtVer . encCBOR . unboundRational - --- | Deserialize `PositiveUnitInterval` type using `Rational` deserialization and fail --- when bounds are violated. Also, ensure there is no usage of tag 30 by enforcing Shelley --- protocol version. -activeSlotsCoeffDecCBOR :: Decoder s PositiveUnitInterval -activeSlotsCoeffDecCBOR = do - r <- enforceDecoderVersion shelleyProtVer $ decodeRational - case boundRational r of - Nothing -> - cborError $ DecoderErrorCustom "ActiveSlotsCoeff (PositiveUnitInterval)" (Text.pack $ show r) - Just u -> pure u - -{------------------------------------------------------------------------------- - Genesis UTxO --------------------------------------------------------------------------------} - -genesisUTxO :: - forall era. - EraTxOut era => - ShelleyGenesis (EraCrypto era) -> - UTxO era -genesisUTxO genesis = - UTxO $ - Map.fromList - [ (txIn, txOut) - | (addr, amount) <- LM.unListMap (sgInitialFunds genesis) - , let txIn = initialFundsPseudoTxIn addr - txOut = mkBasicTxOut addr (Val.inject amount) - ] - --- | Compute the 'TxIn' of the initial UTxO pseudo-transaction corresponding --- to the given address in the genesis initial funds. --- --- The Shelley initial UTxO is constructed from the 'sgInitialFunds' which --- is not a full UTxO but just a map from addresses to coin values. --- --- This gets turned into a UTxO by making a pseudo-transaction for each address, --- with the 0th output being the coin value. So to spend from the initial UTxO --- we need this same 'TxIn' to use as an input to the spending transaction. -initialFundsPseudoTxIn :: forall c. Crypto c => Addr c -> TxIn c -initialFundsPseudoTxIn addr = - TxIn (pseudoTxId addr) minBound - where - pseudoTxId = - TxId - . unsafeMakeSafeHash - . ( Crypto.castHash :: - Crypto.Hash (HASH c) (Addr c) -> - Crypto.Hash (HASH c) EraIndependentTxBody - ) - . Crypto.hashWith serialiseAddr - -{------------------------------------------------------------------------------- - Genesis validation --------------------------------------------------------------------------------} - -data ValidationErr - = EpochNotLongEnough EpochSize Word64 Rational EpochSize - | MaxKESEvolutionsUnsupported Word64 Word - | QuorumTooSmall Word64 Word64 Word64 - deriving (Eq, Show) - -describeValidationErr :: ValidationErr -> Text -describeValidationErr (EpochNotLongEnough es secParam asc minEpochSize) = - mconcat - [ "Epoch length is too low. Your epoch length of " - , Text.pack (show es) - , " does not meet the minimum epoch length of " - , Text.pack (show minEpochSize) - , " required by your choice of parameters for k and f: " - , Text.pack (show secParam) - , " and " - , Text.pack (show asc) - , ". Epochs should be at least 10k/f slots long." - ] -describeValidationErr (MaxKESEvolutionsUnsupported reqKES supportedKES) = - mconcat - [ "You have specified a 'maxKESEvolutions' higher" - , " than that supported by the underlying algorithm." - , " You requested " - , Text.pack (show reqKES) - , " but the algorithm supports a maximum of " - , Text.pack (show supportedKES) - ] -describeValidationErr (QuorumTooSmall q maxTooSmal nodes) = - mconcat - [ "You have specified an 'updateQuorum' which is" - , " too small compared to the number of genesis nodes." - , " You requested " - , Text.pack (show q) - , ", but given " - , Text.pack (show nodes) - , " genesis nodes 'updateQuorum' must be greater than " - , Text.pack (show maxTooSmal) - ] - --- | Do some basic sanity checking on the Shelley genesis file. -validateGenesis :: - forall c. - Crypto c => - ShelleyGenesis c -> - Either [ValidationErr] () -validateGenesis - ShelleyGenesis - { sgEpochLength - , sgActiveSlotsCoeff - , sgMaxKESEvolutions - , sgSecurityParam - , sgUpdateQuorum - , sgGenDelegs - } = - case catMaybes errors of - [] -> Right () - xs -> Left xs - where - errors = - [ checkEpochLength - , checkKesEvolutions - , checkQuorumSize - ] - checkEpochLength = - let activeSlotsCoeff = unboundRational sgActiveSlotsCoeff - minLength = - EpochSize . ceiling $ - fromIntegral @_ @Double (3 * sgSecurityParam) - / fromRational activeSlotsCoeff - in if minLength > sgEpochLength - then - Just $ - EpochNotLongEnough - sgEpochLength - sgSecurityParam - activeSlotsCoeff - minLength - else Nothing - checkKesEvolutions = - if sgMaxKESEvolutions - <= fromIntegral (totalPeriodsKES (Proxy @(KES c))) - then Nothing - else - Just $ - MaxKESEvolutionsUnsupported - sgMaxKESEvolutions - (totalPeriodsKES (Proxy @(KES c))) - checkQuorumSize = - let numGenesisNodes = fromIntegral $ length sgGenDelegs - maxTooSmal = numGenesisNodes `div` 2 - in if numGenesisNodes == 0 || sgUpdateQuorum > maxTooSmal - then Nothing - else Just $ QuorumTooSmall sgUpdateQuorum maxTooSmal numGenesisNodes - -{------------------------------------------------------------------------------- - Construct 'Globals' using 'ShelleyGenesis' --------------------------------------------------------------------------------} - -mkShelleyGlobals :: - ShelleyGenesis c -> - EpochInfo (Either Text) -> - Version -> - Globals -mkShelleyGlobals genesis epochInfoAc maxMajorPV = - Globals - { activeSlotCoeff = sgActiveSlotCoeff genesis - , epochInfo = epochInfoAc - , maxKESEvo = sgMaxKESEvolutions genesis - , maxLovelaceSupply = sgMaxLovelaceSupply genesis - , maxMajorPV = maxMajorPV - , networkId = sgNetworkId genesis - , quorum = sgUpdateQuorum genesis - , randomnessStabilisationWindow - , securityParameter = k - , slotsPerKESPeriod = sgSlotsPerKESPeriod genesis - , stabilityWindow - , systemStart - } - where - systemStart = SystemStart $ sgSystemStart genesis - k = sgSecurityParam genesis - stabilityWindow = - computeStabilityWindow k (sgActiveSlotCoeff genesis) - randomnessStabilisationWindow = - computeRandomnessStabilisationWindow k (sgActiveSlotCoeff genesis) diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Governance.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/Governance.hs deleted file mode 100644 index bcc80ca310d..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Governance.hs +++ /dev/null @@ -1,235 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilyDependencies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} - -module Cardano.Ledger.Shelley.Governance ( - EraGov (..), - ShelleyGovState (..), - -- Lens - proposalsL, - futureProposalsL, - curPParamsShelleyGovStateL, - prevPParamsShelleyGovStateL, - - -- * Deprecations - proposals, - futureProposals, - sgovPp, - sgovPrevPp, -) where - -import Cardano.Ledger.Binary ( - DecCBOR (decCBOR), - DecShareCBOR (..), - EncCBOR (encCBOR), - FromCBOR (..), - ToCBOR (..), - decNoShareCBOR, - ) -import Cardano.Ledger.Binary.Coders (Decode (..), Encode (..), decode, encode, (!>), ( - EraGov era - where - type GovState era = (r :: Type) | r -> era - - -- | Construct empty governance state - emptyGovState :: GovState era - emptyGovState = def - - -- | Returns `Nothing` for all eras starting with Conway, otherwise returns proposed - -- pparams updates - getProposedPPUpdates :: GovState era -> Maybe (ProposedPPUpdates era) - getProposedPPUpdates _ = Nothing - - -- | Lens for accessing current protocol parameters - curPParamsGovStateL :: Lens' (GovState era) (PParams era) - - -- | Lens for accessing the previous protocol parameters - prevPParamsGovStateL :: Lens' (GovState era) (PParams era) - - obligationGovState :: GovState era -> Obligations - -instance Crypto c => EraGov (ShelleyEra c) where - type GovState (ShelleyEra c) = ShelleyGovState (ShelleyEra c) - - getProposedPPUpdates = Just . sgsCurProposals - - curPParamsGovStateL = curPParamsShelleyGovStateL - - prevPParamsGovStateL = prevPParamsShelleyGovStateL - - obligationGovState = const mempty -- No GovState obigations in ShelleyEra - -data ShelleyGovState era = ShelleyGovState - { sgsCurProposals :: !(ProposedPPUpdates era) - , sgsFutureProposals :: !(ProposedPPUpdates era) - , sgsCurPParams :: !(PParams era) - , sgsPrevPParams :: !(PParams era) - } - deriving (Generic) - -proposals :: ShelleyGovState era -> ProposedPPUpdates era -proposals = sgsCurProposals -{-# DEPRECATED proposals "In favor of `sgsCurProposals`" #-} -futureProposals :: ShelleyGovState era -> ProposedPPUpdates era -futureProposals = sgsFutureProposals -{-# DEPRECATED futureProposals "In favor of `sgsFutureProposals`" #-} -sgovPp :: ShelleyGovState era -> PParams era -sgovPp = sgsCurPParams -{-# DEPRECATED sgovPp "In favor of `sgsCurPParams`" #-} -sgovPrevPp :: ShelleyGovState era -> PParams era -sgovPrevPp = sgsPrevPParams -{-# DEPRECATED sgovPrevPp "In favor of `sgsPrevPParams`" #-} - -proposalsL :: Lens' (ShelleyGovState era) (ProposedPPUpdates era) -proposalsL = lens sgsCurProposals (\sgov x -> sgov {sgsCurProposals = x}) - -futureProposalsL :: Lens' (ShelleyGovState era) (ProposedPPUpdates era) -futureProposalsL = lens sgsFutureProposals (\sgov x -> sgov {sgsFutureProposals = x}) - -curPParamsShelleyGovStateL :: Lens' (ShelleyGovState era) (PParams era) -curPParamsShelleyGovStateL = lens sgsCurPParams (\sps x -> sps {sgsCurPParams = x}) - -prevPParamsShelleyGovStateL :: Lens' (ShelleyGovState era) (PParams era) -prevPParamsShelleyGovStateL = lens sgsPrevPParams (\sps x -> sps {sgsPrevPParams = x}) - -deriving instance - ( Show (PParamsUpdate era) - , Show (PParams era) - ) => - Show (ShelleyGovState era) - -deriving instance - ( Eq (PParamsUpdate era) - , Eq (PParams era) - ) => - Eq (ShelleyGovState era) - -instance - ( NFData (PParamsUpdate era) - , NFData (PParams era) - ) => - NFData (ShelleyGovState era) - -instance - ( NoThunks (PParamsUpdate era) - , NoThunks (PParams era) - ) => - NoThunks (ShelleyGovState era) - -instance - ( Era era - , EncCBOR (PParamsUpdate era) - , EncCBOR (PParams era) - ) => - EncCBOR (ShelleyGovState era) - where - encCBOR (ShelleyGovState ppup fppup pp ppp) = - encode $ - Rec ShelleyGovState - !> To ppup - !> To fppup - !> To pp - !> To ppp - -instance - ( Era era - , DecCBOR (PParamsUpdate era) - , DecCBOR (PParams era) - ) => - DecShareCBOR (ShelleyGovState era) - where - decShareCBOR _ = - decode $ - RecD ShelleyGovState - - DecCBOR (ShelleyGovState era) - where - decCBOR = decNoShareCBOR - -instance - ( Era era - , EncCBOR (PParamsUpdate era) - , EncCBOR (PParams era) - ) => - ToCBOR (ShelleyGovState era) - where - toCBOR = toEraCBOR @era - -instance - ( Era era - , DecCBOR (PParamsUpdate era) - , DecCBOR (PParams era) - ) => - FromCBOR (ShelleyGovState era) - where - fromCBOR = fromEraCBOR @era - -instance EraPParams era => ToJSON (ShelleyGovState era) where - toJSON = object . toPPUPStatePairs - toEncoding = pairs . mconcat . toPPUPStatePairs - -toPPUPStatePairs :: (KeyValue e a, EraPParams era) => ShelleyGovState era -> [a] -toPPUPStatePairs ShelleyGovState {..} = - [ "proposals" .= sgsCurProposals - , "futureProposals" .= sgsFutureProposals - , "curPParams" .= sgsCurPParams - , "prevPParams" .= sgsPrevPParams - ] - -instance EraPParams era => Default (ShelleyGovState era) where - def = - ShelleyGovState - emptyPPPUpdates - emptyPPPUpdates - emptyPParams - emptyPParams diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/HardForks.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/HardForks.hs deleted file mode 100644 index 69dc6cbc10d..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/HardForks.hs +++ /dev/null @@ -1,66 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE TypeApplications #-} - -module Cardano.Ledger.Shelley.HardForks ( - aggregatedRewards, - allowMIRTransfer, - validatePoolRewardAccountNetID, - forgoRewardPrefilter, - translateUpperBoundForPlutusScripts, - forgoPointerAddressResolution, -) -where - -import Cardano.Ledger.BaseTypes (ProtVer (..), natVersion) - -aggregatedRewards :: - ProtVer -> - Bool -aggregatedRewards pv = pvMajor pv > natVersion @2 - --- | Starting with protocol version 5, the MIR certs will also be --- able to transfer funds between the reserves and the treasury. --- Additionally, the semantics for the pervious functionality will --- change a bit. Before version 5 redundancies in the instantaneous --- reward mapping were handled by overriding. Now they are handled --- by adding the values and allowing for negatives updates, provided --- the sum for each key remains positive. -allowMIRTransfer :: - ProtVer -> - Bool -allowMIRTransfer pv = pvMajor pv > natVersion @4 - --- | Starting with protocol version 5, we will validate the network ID --- for the reward account listed in stake pool registration certificates. -validatePoolRewardAccountNetID :: - ProtVer -> - Bool -validatePoolRewardAccountNetID pv = pvMajor pv > natVersion @4 - --- | Starting with protocol version 7, the reward calculation no longer --- filters out unregistered stake addresses at the moment the calculation begins. --- See the Shelley Ledger Errata 17.2. -forgoRewardPrefilter :: - ProtVer -> - Bool -forgoRewardPrefilter pv = pvMajor pv > natVersion @6 - --- | Starting with protocol version 9, we translate the upper bound of validity interval --- correctly for Plutus scripts. --- --- TODO - After mainnet has successfully moved to protocol version 9, we can check --- to see if the semantic difference here has even been exercised. --- (We probably also need to check preprod and potentially preview.) --- If it has not been exercised by version 9, we can safely remove this check --- and always use the correct semantics (which cleans up the code). -translateUpperBoundForPlutusScripts :: - ProtVer -> - Bool -translateUpperBoundForPlutusScripts pv = pvMajor pv > natVersion @8 - --- | Starting with protocol version 9, we no longer resolve pointer addresses. -forgoPointerAddressResolution :: - ProtVer -> - Bool -forgoPointerAddressResolution pv = pvMajor pv > natVersion @8 diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Internal.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/Internal.hs deleted file mode 100644 index f7caed394a1..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Internal.hs +++ /dev/null @@ -1,67 +0,0 @@ -{-# OPTIONS_HADDOCK hide, not-home #-} - --- | Provide Tools for debugging --- Feel free to add new things as they are developed. -module Cardano.Ledger.Shelley.Internal ( - trace, - totalAdaPotsES, - compareAdaPots, - producedTxBody, - consumedTxBody, - showCred, - showIR, - showKeyHash, - showListy, - showMap, - showWithdrawal, - showSafeHash, - synopsisCoinMap, - showTxCerts, -) -where - -import Cardano.Ledger.CertState (Obligations (..)) -import Cardano.Ledger.Shelley.AdaPots ( - AdaPots (..), - consumedTxBody, - producedTxBody, - totalAdaPotsES, - ) -import Cardano.Ledger.Shelley.Rules.Reports ( - showCred, - showIR, - showKeyHash, - showListy, - showMap, - showSafeHash, - showTxCerts, - showWithdrawal, - synopsisCoinMap, - ) -import Cardano.Ledger.Val ((<->)) -import Debug.Trace (trace) - --- ============================================== --- Compare two AdaPots, item by item - -pad :: Int -> String -> String -pad n x = x ++ replicate (n - length x) ' ' - -compareAdaPots :: String -> AdaPots -> String -> AdaPots -> String -compareAdaPots xlabel x ylabel y = - unlines - [ pad n "field" ++ pad n xlabel ++ pad n ylabel ++ pad n "difference" - , oneline "treasuryAdaPot" treasuryAdaPot - , oneline "reservesAdaPot" reservesAdaPot - , oneline "rewardsAdaPot" rewardsAdaPot - , oneline "utxoAdaPot" utxoAdaPot - , oneline "feesAdaPot" feesAdaPot - , oneline "oblStakePot" (oblStake . obligationsPot) - , oneline "oblPoolPot" (oblPool . obligationsPot) - , oneline "oblDRepPot" (oblDRep . obligationsPot) - , oneline "oblProposalPot" (oblProposal . obligationsPot) - ] - where - n = 25 - oneline name f = - pad n name ++ pad n (show (f x)) ++ pad n (show (f y)) ++ pad n (show (f y <-> f x)) diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/LedgerState.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/LedgerState.hs deleted file mode 100644 index 1a0289a57c6..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/LedgerState.hs +++ /dev/null @@ -1,161 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE ScopedTypeVariables #-} - --- | --- Module : LedgerState --- Description : Operational Rules --- --- This module implements the operation rules for treating UTxO transactions ('Tx') --- as state transformations on a ledger state ('LedgerState'), --- as specified in /A Simplified Formal Specification of a UTxO Ledger/. -module Cardano.Ledger.Shelley.LedgerState ( - AccountState (..), - CertState (..), - DState (..), - VState (..), - rewards, - delegations, - ptrsMap, - EpochState (..), - PulsingRewUpdate (..), - FutureGenDeleg (..), - InstantaneousRewards (..), - KeyPairs, -- deprecated - LedgerState (..), - PState (..), - PPUPPredFailure, - RewardAccounts, - RewardUpdate (..), - RewardSnapShot (..), - UTxOState (..), - smartUTxOState, - IncrementalStake (..), - - -- * Genesis State - genesisState, - - -- * Validation - consumed, - produced, - - -- * DelegationState - payPoolDeposit, - refundPoolDeposit, - totalObligation, - allObligations, - - -- * Epoch boundary - incrementalStakeDistr, - updateStakeDistribution, - applyRUpd, - applyRUpdFiltered, - filterAllRewards, - FilteredRewards (..), - createRUpd, - completeRupd, - startStep, - pulseStep, - completeStep, - NewEpochState (NewEpochState, nesEL, nesEs, nesRu, nesPd, nesBprev, nesBcur), - StashedAVVMAddresses, - stashedAVVMAddresses, - getGKeys, - updateNES, - circulation, - - -- * Decay - decayFactor, - - -- * Remove Bootstrap Redeem Addresses - returnRedeemAddrsToReserves, - updateNonMyopic, - emptyRewardUpdate, - pvCanFollow, - availableAfterMIR, - ShelleyGovState (..), - - -- * Lenses from Types - nesPdL, - nesEsL, - unifiedL, - nesELL, - nesBprevL, - nesBcurL, - nesRuL, - nesStashedAVVMAddressesL, - nesEpochStateL, - esAccountStateL, - esSnapshotsL, - esLStateL, - esNonMyopicL, - curPParamsEpochStateL, - prevPParamsEpochStateL, - asTreasuryL, - asReservesL, - lsUTxOStateL, - lsCertStateL, - utxosUtxoL, - utxosDepositedL, - utxosFeesL, - utxosGovStateL, - utxosStakeDistrL, - utxosDonationL, - epochStateGovStateL, - epochStateStakeDistrL, - epochStateUMapL, - epochStatePoolParamsL, - epochStateRegDrepL, - epochStateIncrStakeDistrL, - epochStateDonationL, - newEpochStateGovStateL, - epochStateTreasuryL, - - -- * Lenses from CertState - certDStateL, - certPStateL, - certVStateL, - dsUnifiedL, - dsGenDelegsL, - dsIRewardsL, - dsFutureGenDelegsL, - psStakePoolParamsL, - psFutureStakePoolParamsL, - psRetiringL, - psDepositsL, - vsDRepsL, - vsCommitteeStateL, - credMapL, - - -- * Lenses from SnapShot(s) - ssStakeMarkL, - ssStakeMarkPoolDistrL, - ssStakeSetL, - ssStakeGoL, - ssFeeL, - ssStakeL, - ssStakeDistrL, - ssDelegationsL, - ssPoolParamsL, -) where - -import Cardano.Ledger.CertState -import Cardano.Ledger.EpochBoundary ( - ssDelegationsL, - ssFeeL, - ssPoolParamsL, - ssStakeDistrL, - ssStakeGoL, - ssStakeL, - ssStakeMarkL, - ssStakeMarkPoolDistrL, - ssStakeSetL, - ) -import Cardano.Ledger.Shelley.LedgerState.IncrementalStake -import Cardano.Ledger.Shelley.LedgerState.NewEpochState -import Cardano.Ledger.Shelley.LedgerState.PulsingReward -import Cardano.Ledger.Shelley.LedgerState.Types -import Cardano.Ledger.Shelley.PParams (pvCanFollow) -import Cardano.Ledger.Shelley.RewardUpdate -import Cardano.Ledger.Shelley.Rules.Ppup (PPUPPredFailure, ShelleyGovState (..)) -import Cardano.Ledger.Shelley.UTxO (consumed, produced) diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/LedgerState/IncrementalStake.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/LedgerState/IncrementalStake.hs deleted file mode 100644 index e24eb05a878..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/LedgerState/IncrementalStake.hs +++ /dev/null @@ -1,371 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - --- =========================================================================== --- There are three parts to IncrementalStaking. --- 1) The incremental part, where we keep track of each update to the UTxO --- adding Inputs and deleting consumed Outputs. Done in the Utxo rules. --- 2) Finalizing and aggregating by stake credential to create a Snapshot. --- done in the Snap rules. --- 3) Applying the RewardUpdate, to the Rewards component of the UMap. --- done in the NewEpoch rules. - -module Cardano.Ledger.Shelley.LedgerState.IncrementalStake ( - updateStakeDistribution, - incrementalStakeDistr, - applyRUpd, - applyRUpdFiltered, - smartUTxOState, - filterAllRewards, - FilteredRewards (..), -) -where - -import Cardano.Ledger.Address (Addr (..)) -import Cardano.Ledger.BaseTypes (ProtVer) -import Cardano.Ledger.CertState ( - CertState (..), - DState (..), - PState (..), - delegations, - rewards, - ) -import Cardano.Ledger.Coin ( - Coin (..), - CompactForm (CompactCoin), - addDeltaCoin, - ) -import Cardano.Ledger.Compactible -import Cardano.Ledger.Core -import Cardano.Ledger.Credential ( - Credential (..), - StakeReference (StakeRefBase, StakeRefPtr), - ) -import Cardano.Ledger.EpochBoundary ( - SnapShot (..), - Stake (..), - ) -import Cardano.Ledger.Keys ( - KeyRole (..), - ) -import Cardano.Ledger.Shelley.Governance (EraGov (GovState)) -import qualified Cardano.Ledger.Shelley.HardForks as HardForks -import Cardano.Ledger.Shelley.LedgerState.Types -import Cardano.Ledger.Shelley.RewardUpdate (RewardUpdate (..)) -import Cardano.Ledger.Shelley.Rewards ( - aggregateCompactRewards, - aggregateRewards, - filterRewards, - ) -import Cardano.Ledger.UMap ( - UMElem, - UMap (..), - member, - ) -import qualified Cardano.Ledger.UMap as UM -import Cardano.Ledger.UTxO ( - UTxO (..), - ) -import Control.DeepSeq (NFData (rnf), deepseq) -import Control.Exception (assert) -import Data.Coerce (coerce) -import Data.Foldable (fold) -import Data.Map.Internal.Debug as Map (valid) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Set (Set) -import qualified Data.VMap as VMap -import Data.Word -import Lens.Micro - --- ======================================================================= --- Part 1, Incrementally updating the IncrementalStake in Utxo rule --- ======================================================================= - --- | Incrementally add the inserts 'utxoAdd' and the deletes 'utxoDel' to the IncrementalStake. -updateStakeDistribution :: - EraTxOut era => - PParams era -> - IncrementalStake (EraCrypto era) -> - UTxO era -> - UTxO era -> - IncrementalStake (EraCrypto era) -updateStakeDistribution pp incStake0 utxoDel utxoAdd = incStake2 - where - incStake1 = incAggUtxoCoinByCred pp (coerce ((+) @Word64)) utxoAdd incStake0 - incStake2 = incAggUtxoCoinByCred pp (coerce ((-) @Word64)) utxoDel incStake1 - --- | Incrementally sum up all the Coin, for each staking Credential, in the outputs of the UTxO, and --- "add" them to the IncrementalStake. "add" has different meaning depending on if we are inserting --- or deleting the UtxO entries. For inserts (the mode is to add (+)) and for deletes (the mode is --- to subtract (-)). --- Never store a (Coin 0) balance, since these do not occur in the non-incremental style that --- works directly from the whole UTxO. --- This function has a non-incremental analog 'aggregateUtxoCoinByCredential' . In this incremental --- version we expect the size of the UTxO to be fairly small. I.e the number of inputs and outputs --- in a transaction, which is aways < 4096, not millions, and very often < 10). -incAggUtxoCoinByCred :: - forall era. - EraTxOut era => - PParams era -> - (CompactForm Coin -> CompactForm Coin -> CompactForm Coin) -> - UTxO era -> - IncrementalStake (EraCrypto era) -> - IncrementalStake (EraCrypto era) -incAggUtxoCoinByCred pp f (UTxO u) initial = - Map.foldl' accum initial u - where - keepOrDeleteCompact new = \case - Nothing -> - case new of - CompactCoin 0 -> Nothing - final -> Just final - Just old -> - case old `f` new of - CompactCoin 0 -> Nothing - final -> Just final - ignorePtrs = HardForks.forgoPointerAddressResolution (pp ^. ppProtocolVersionL) - accum ans@(IStake stake ptrs) out = - let cc = out ^. compactCoinTxOutL - in case out ^. addrTxOutL of - Addr _ _ (StakeRefPtr p) - | not ignorePtrs -> - IStake stake (Map.alter (keepOrDeleteCompact cc) p ptrs) - Addr _ _ (StakeRefBase hk) -> - IStake (Map.alter (keepOrDeleteCompact cc) hk stake) ptrs - _other -> ans - --- ================================================ - --- | A valid (or self-consistent) UTxOState{utxosUtxo, utxosDeposited , utxosFees , utxosPpups , utxosStakeDistr} --- maintains an invariant between the utxosUtxo and utxosStakeDistr fields. the utxosStakeDistr field is --- the aggregation of Coin over the StakeReferences in the UTxO. It can be computed by a pure --- function from the _utxo field. In some situations, mostly unit or example tests, or when --- initializing a small UTxO, we want to create a UTxOState that computes the utxosStakeDistr from --- the utxosUtxo. This is aways safe to do, but if the utxosUtxo field is big, this can be very expensive, --- which defeats the purpose of memoizing the utxosStakeDistr field. So use of this function should be --- restricted to tests and initializations, where the invariant should be maintained. --- --- TO IncrementalStake -smartUTxOState :: - EraTxOut era => - PParams era -> - UTxO era -> - Coin -> - Coin -> - GovState era -> - Coin -> - UTxOState era -smartUTxOState pp utxo c1 c2 st = - UTxOState - utxo - c1 - c2 - st - (updateStakeDistribution pp mempty mempty utxo) - --- ======================================================================= --- Part 2. Compute a Snapshot using the IncrementalStake in Snap rule --- ======================================================================= - --- | This computes a Snapshot using IncrementalStake (which is an --- aggregate of the current UTxO) and UMap (which tracks Coin, --- SPoolUView, and Ptrs simultaneously). Note that logically: --- 1) IncrementalStake = (credStake, ptrStake) --- 2) UMap = (rewards, activeDelegs, ptrmap :: Map ptr cred) --- --- Using this scheme the logic can do 3 things in one go, without touching the UTxO. --- 1) Resolve Pointers --- 2) Throw away things not actively delegated --- 3) Add up the coin --- --- The Stake distribution function (Map cred coin) (the first component of a SnapShot) --- is defined by this SetAlgebra expression: --- (dom activeDelegs) ◁ (aggregate+ (credStake ∪ ptrStake ∪ rewards)) --- --- We can apply meaning preserving operations to get equivalent expressions --- --- (dom activeDelegs) ◁ (aggregate+ (credStake ∪ ptrStake ∪ rewards)) --- aggregate+ (dom activeDelegs ◁ (credStake ∪ ptrStake ∪ rewards)) --- aggregate+ ((dom activeDelegs ◁ credStake) ∪ (dom activeDelegs ◁ ptrStake) ∪ (dom activeDelegs ◁ rewards)) --- --- We will compute this in several steps --- step1 = (dom activeDelegs ◁ credStake) ∪ (dom activeDelegs ◁ ptrStake) --- step2 = aggregate (dom activeDelegs ◁ rewards) step1 --- This function has a non-incremental analog, 'stakeDistr', mosty used in tests, which does use the UTxO. -incrementalStakeDistr :: - forall era. - EraPParams era => - PParams era -> - IncrementalStake (EraCrypto era) -> - DState era -> - PState era -> - SnapShot (EraCrypto era) -incrementalStakeDistr pp (IStake credStake ptrStake) ds ps = - SnapShot - (Stake $ VMap.fromMap step2) - delegs_ - (VMap.fromMap poolParams) - where - UMap triplesMap ptrsMap = dsUnified ds - PState {psStakePoolParams = poolParams} = ps - delegs_ = UM.unUnifyToVMap (delegations ds) - -- A credential is active, only if it is being delegated - activeCreds = Map.filterWithKey (\k _ -> VMap.member k delegs_) credStake - ignorePtrs = HardForks.forgoPointerAddressResolution (pp ^. ppProtocolVersionL) - -- pre Conway: (dom activeDelegs ◁ credStake) ∪ (dom activeDelegs ◁ ptrStake) - -- afterwards we forgo ptr resolution: (dom activeDelegs ◁ credStake) - step1 = - if ignorePtrs - then activeCreds - else -- Resolve inserts and deletes which were indexed by ptrs, by looking them up - -- in the ptrsMap and combining the result of the lookup with the ordinary - -- stake, keeping only the active credentials - Map.foldlWithKey' addResolvedPointer activeCreds ptrStake - step2 = aggregateActiveStake triplesMap step1 - addResolvedPointer ans ptr ccoin = - case Map.lookup ptr ptrsMap of -- map of ptrs to credentials - Just cred | VMap.member cred delegs_ -> Map.insertWith (<>) cred ccoin ans - _ -> ans - --- | Aggregate active stake by merging two maps. The triple map from the --- UMap, and the IncrementalStake. Only keep the active stake. Active can --- be determined if there is a (SJust deleg) in the Tuple. This is step2 = --- aggregate (dom activeDelegs ◁ rewards) step1 -aggregateActiveStake :: - Ord k => Map k (UMElem c) -> Map k (CompactForm Coin) -> Map k (CompactForm Coin) -aggregateActiveStake m1 m2 = assert (Map.valid m) m - where - m = - Map.mergeWithKey - -- How to merge the ranges of the two maps where they have a common key. Below - -- 'coin1' and 'coin2' have the same key, '_k', and the stake is active if the delegation is SJust - (\_k trip coin2 -> extractAndAdd coin2 <$> UM.umElemRDActive trip) - -- what to do when a key appears just in 'tripmap', we only add the coin if the key is active - (Map.mapMaybe (\trip -> UM.rdReward <$> UM.umElemRDActive trip)) - -- what to do when a key is only in 'incremental', keep everything, because at - -- the call site of aggregateActiveStake, the arg 'incremental' is filtered by - -- 'resolveActiveIncrementalPtrs' which guarantees that only active stake is included. - id - m1 - m2 - extractAndAdd :: CompactForm Coin -> UM.RDPair -> CompactForm Coin - extractAndAdd coin (UM.RDPair rew _dep) = coin <> rew - --- ===================================================== --- Part 3 Apply a reward update, in NewEpoch rule --- ===================================================== - --- | Apply a RewardUpdate to the EpochState. Does several things --- 1) Adds reward coins to Rewards component of the UMap field of the DState, --- for actively delegated Stake --- 2) Adds to the Treasury of the AccountState for non-actively delegated stake --- 3) Adds fees to the UTxOState -applyRUpd :: - EraGov era => - RewardUpdate (EraCrypto era) -> - EpochState era -> - EpochState era -applyRUpd ru es = - let (!es', _) = applyRUpdFiltered ru es - in es' - --- TO IncrementalStake -applyRUpdFiltered :: - EraGov era => - RewardUpdate (EraCrypto era) -> - EpochState era -> - (EpochState era, FilteredRewards era) -applyRUpdFiltered - ru - es@(EpochState as ls ss _nm) = (epochStateAns, filteredRewards) - where - !epochStateAns = - EpochState as' ls' ss nm' - & curPParamsEpochStateL .~ es ^. curPParamsEpochStateL - & prevPParamsEpochStateL .~ es ^. prevPParamsEpochStateL - utxoState_ = lsUTxOState ls - dpState = lsCertState ls - dState = certDState dpState - prevPParams = es ^. prevPParamsEpochStateL - prevProVer = prevPParams ^. ppProtocolVersionL - filteredRewards@FilteredRewards - { frRegistered - , frTotalUnregistered - } = filterAllRewards' (rs ru) prevProVer dState - -- Note: domain filteredRewards is a subset of domain (rewards dstate) - registeredAggregated = aggregateCompactRewards prevProVer frRegistered - -- Note: domain registeredAggregated is a subset of domain (rewards dstate) - as' = - as - { asTreasury = addDeltaCoin (asTreasury as) (deltaT ru) <> frTotalUnregistered - , asReserves = addDeltaCoin (asReserves as) (deltaR ru) - } - ls' = - ls - { lsUTxOState = - utxoState_ {utxosFees = utxosFees utxoState_ `addDeltaCoin` deltaF ru} - , lsCertState = - dpState - { certDState = - dState - { dsUnified = rewards dState UM.∪+ registeredAggregated - } - } - } - nm' = nonMyopic ru - -data FilteredRewards era = FilteredRewards - { -- Only the first component is strict on purpose. The others are lazy because in most instances - -- they are never used, so this keeps them from being evaluated. - - frRegistered :: !(Map (Credential 'Staking (EraCrypto era)) (Set (Reward (EraCrypto era)))) - -- ^ These are registered, in the current Unified map of the CertState - , frShelleyIgnored :: Map (Credential 'Staking (EraCrypto era)) (Set (Reward (EraCrypto era))) - -- ^ These are registered, but ignored in the ShelleyEra because of backward - -- compatibility in non-Shelley Eras, this field will be Map.empty - , frUnregistered :: Set (Credential 'Staking (EraCrypto era)) - -- ^ These are NOT registered in the current Unified map of the CertState - , frTotalUnregistered :: Coin - -- ^ Total Coin of the unregistered rewards. These will end up in the Treasury or Reserves. - } - -instance NFData (FilteredRewards era) where - rnf (FilteredRewards a b c d) = a `deepseq` b `deepseq` c `deepseq` rnf d - --- | Return aggregated information from a reward mapping from the previous Epoch. --- Breaks the mapping into several parts captured by the 'Filtered' data type. --- Note that the 'registered' field of the returned (FilteredRewards) is a Map --- whose domain is always a subset of the Rewards View of the Unified Map in the DState of the EpochState. --- 'prevPParams' is the ProtocolParams of the previous Epoch --- 'rs' is the rewards mapping of the RewardUpdate from that previous Epoch -filterAllRewards' :: - Map (Credential 'Staking (EraCrypto era)) (Set (Reward (EraCrypto era))) -> - ProtVer -> - DState era -> - FilteredRewards era -filterAllRewards' rs protVer dState = - FilteredRewards registered shelleyIgnored unregistered totalUnregistered - where - (regRU, unregRU) = Map.partitionWithKey (\k _ -> member k (rewards dState)) rs - -- Partition on memebership in the rewards view of the unified map of DState - -- Note that only registered rewards appear in 'regRU' because of this 'member' check. - totalUnregistered = fold $ aggregateRewards protVer unregRU - unregistered = Map.keysSet unregRU - (registered, shelleyIgnored) = filterRewards protVer regRU - -filterAllRewards :: - EraGov era => - Map (Credential 'Staking (EraCrypto era)) (Set (Reward (EraCrypto era))) -> - EpochState era -> - FilteredRewards era -filterAllRewards mp epochstate = filterAllRewards' mp prevPP dState - where - prevPP = epochstate ^. prevPParamsEpochStateL . ppProtocolVersionL - dState = (certDState . lsCertState . esLState) epochstate diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/LedgerState/NewEpochState.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/LedgerState/NewEpochState.hs deleted file mode 100644 index 144728b7a94..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/LedgerState/NewEpochState.hs +++ /dev/null @@ -1,152 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} - -module Cardano.Ledger.Shelley.LedgerState.NewEpochState ( - availableAfterMIR, - getGKeys, - genesisState, - updateNES, - returnRedeemAddrsToReserves, -) where - -import Cardano.Ledger.Address (isBootstrapRedeemer) -import Cardano.Ledger.BaseTypes ( - BlocksMade (..), - ) -import Cardano.Ledger.CertState ( - CertState (..), - DState (..), - InstantaneousRewards (..), - ) -import Cardano.Ledger.Coin (Coin (..), addDeltaCoin) -import Cardano.Ledger.Keys ( - GenDelegPair (..), - GenDelegs (..), - KeyHash (..), - KeyRole (..), - ) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState.Types -import qualified Cardano.Ledger.UMap as UM -import Cardano.Ledger.UTxO (UTxO (..), coinBalance) -import Cardano.Ledger.Val ((<+>), (<->)) -import Data.Default.Class (def) -import Data.Foldable (fold) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Set (Set) -import Lens.Micro ((&), (.~), (^.)) -import Lens.Micro.Extras (view) - --- | This function returns the coin balance of a given pot, either the --- reserves or the treasury, after the instantaneous rewards and pot --- transfers are accounted for. -availableAfterMIR :: MIRPot -> AccountState -> InstantaneousRewards c -> Coin -availableAfterMIR ReservesMIR as ir = - asReserves as `addDeltaCoin` deltaReserves ir <-> fold (iRReserves ir) -availableAfterMIR TreasuryMIR as ir = - asTreasury as `addDeltaCoin` deltaTreasury ir <-> fold (iRTreasury ir) - --- ======================== --- Virtual selectors, which get the appropriate view from a DState from the embedded UnifiedMap - -getGKeys :: - NewEpochState era -> - Set (KeyHash 'Genesis (EraCrypto era)) -getGKeys nes = Map.keysSet genDelegs - where - NewEpochState _ _ _ es _ _ _ = nes - EpochState _ ls _ _ = es - LedgerState _ (CertState _ _ DState {dsGenDelegs = (GenDelegs genDelegs)}) = ls - --- | Creates the ledger state for an empty ledger which --- contains the specified transaction outputs. -genesisState :: - forall era. - EraGov era => - Map (KeyHash 'Genesis (EraCrypto era)) (GenDelegPair (EraCrypto era)) -> - UTxO era -> - LedgerState era -genesisState genDelegs0 utxo0 = - LedgerState - ( UTxOState - utxo0 - (Coin 0) - (Coin 0) - emptyGovState - (IStake mempty Map.empty) - mempty - ) - (CertState def def dState) - where - dState :: DState era - dState = - DState - { dsUnified = UM.empty - , dsFutureGenDelegs = Map.empty - , dsGenDelegs = GenDelegs genDelegs0 :: GenDelegs (EraCrypto era) - , dsIRewards = def - } - --- Functions for stake delegation model - --- A TxOut has 4 different shapes, depending on the shape of its embedded Addr. --- Credentials are stored in only 2 of the 4 cases. --- 1) TxOut (Addr _ _ (StakeRefBase cred)) coin -> HERE --- 2) TxOut (Addr _ _ (StakeRefPtr ptr)) coin -> HERE --- 3) TxOut (Addr _ _ StakeRefNull) coin -> NOT HERE --- 4) TxOut (AddrBootstrap _) coin -> NOT HERE - --- | Update new epoch state -updateNES :: - EraGov era => - NewEpochState era -> - BlocksMade (EraCrypto era) -> - LedgerState era -> - NewEpochState era -updateNES - oldNes@( NewEpochState - _eL - _bprev - _ - es@(EpochState acnt _ ss nm) - _ru - _pd - _avvm - ) - bcur - ls = - let - pp = es ^. curPParamsEpochStateL - pr = es ^. prevPParamsEpochStateL - in - oldNes - { nesBcur = bcur - , nesEs = - EpochState acnt ls ss nm - & curPParamsEpochStateL .~ pp - & prevPParamsEpochStateL .~ pr - } - -returnRedeemAddrsToReserves :: - forall era. - EraTxOut era => - EpochState era -> - EpochState era -returnRedeemAddrsToReserves es = es {esAccountState = acnt', esLState = ls'} - where - ls = esLState es - us = lsUTxOState ls - UTxO utxo = utxosUtxo us - (redeemers, nonredeemers) = - Map.partition (maybe False isBootstrapRedeemer . view bootAddrTxOutF) utxo - acnt = esAccountState es - utxoR = UTxO redeemers :: UTxO era - acnt' = - acnt - { asReserves = asReserves acnt <+> coinBalance utxoR - } - us' = us {utxosUtxo = UTxO nonredeemers :: UTxO era} - ls' = ls {lsUTxOState = us'} diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/LedgerState/PulsingReward.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/LedgerState/PulsingReward.hs deleted file mode 100644 index c49cdc4bd1b..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/LedgerState/PulsingReward.hs +++ /dev/null @@ -1,347 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} - -module Cardano.Ledger.Shelley.LedgerState.PulsingReward ( - startStep, - pulseStep, - completeStep, - createRUpd, - completeRupd, - circulation, - updateNonMyopic, - decayFactor, -) -where - -import Cardano.Ledger.Address (RewardAccount (..), raCredential) -import Cardano.Ledger.BaseTypes ( - ActiveSlotCoeff, - BlocksMade (..), - BoundedRational (..), - ShelleyBase, - activeSlotVal, - ) -import Cardano.Ledger.CertState ( - CertState (..), - rewards, - ) -import Cardano.Ledger.Coin ( - Coin (..), - DeltaCoin (..), - rationalToCoinViaFloor, - toDeltaCoin, - ) -import Cardano.Ledger.Core -import Cardano.Ledger.EpochBoundary ( - SnapShot (..), - SnapShots (..), - Stake (..), - sumAllStake, - sumStakePerPool, - ) -import Cardano.Ledger.Keys (KeyHash, KeyRole (StakePool)) -import Cardano.Ledger.PoolParams (PoolParams (..)) -import Cardano.Ledger.Shelley.Governance (EraGov) -import qualified Cardano.Ledger.Shelley.HardForks as HardForks -import Cardano.Ledger.Shelley.LedgerState.Types -import Cardano.Ledger.Shelley.PoolRank ( - Likelihood (..), - NonMyopic (..), - applyDecay, - leaderProbability, - likelihood, - ) -import Cardano.Ledger.Shelley.RewardUpdate ( - FreeVars (..), - Pulser, - PulsingRewUpdate (..), - RewardAns (..), - RewardEvent, - RewardPulser (..), - RewardSnapShot (..), - RewardUpdate (..), - ) -import Cardano.Ledger.Shelley.Rewards ( - PoolRewardInfo (..), - StakeShare (..), - leaderRewardToGeneral, - mkPoolRewardInfo, - sumRewards, - ) -import Cardano.Ledger.Slot (EpochSize (..)) -import qualified Cardano.Ledger.UMap as UM -import Cardano.Ledger.Val ((<->)) -import Data.Group (invert) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Pulse (Pulsable (..), completeM) -import Data.Ratio ((%)) -import qualified Data.Set as Set -import qualified Data.VMap as VMap -import Data.Word (Word64) -import Lens.Micro ((^.)) - --- ============================= --- To prevent a huge pause, at the stability point, we spread out the --- Calculation of rewards over many blocks. We do this in 3 phases. Phase 1 --- of a reward upate is a pure computation, computing some parameters which --- become fixed at the time when we reach the stability point. One of these --- parameters is a Pulser, i.e. a computation that when pulseM'ed computes --- a portion of what is required, so that the whole compuation can be spread out in time. - -startStep :: - forall era. - EraGov era => - EpochSize -> - BlocksMade (EraCrypto era) -> - EpochState era -> - Coin -> - ActiveSlotCoeff -> - Word64 -> - PulsingRewUpdate (EraCrypto era) -startStep slotsPerEpoch b@(BlocksMade b') es@(EpochState acnt ls ss nm) maxSupply asc secparam = - let SnapShot stake delegs poolParams = ssStakeGo ss - numStakeCreds, k :: Rational - numStakeCreds = fromIntegral (VMap.size $ unStake stake) - k = fromIntegral secparam - -- We expect approximately 10k-many blocks to be produced each epoch. - -- The reward calculation begins (4k/f)-many slots into the epoch, - -- and we guarantee that it ends (2k/f)-many slots before the end - -- of the epoch (to allow tools such as db-sync to see the reward - -- values in advance of them being applied to the ledger state). - -- - -- Therefore to evenly space out the reward calculation, we divide - -- the number of stake credentials by 4k in order to determine how many - -- stake credential rewards we should calculate each block. - -- If it does not finish in this amount of time, the calculation is - -- forced to completion. - pulseSize = max 1 (ceiling (numStakeCreds / (4 * k))) - -- We now compute the amount of total rewards that can potentially be given - -- out this epoch, and the adjustments to the reserves and the treasury. - Coin reserves = asReserves acnt - ds = certDState $ lsCertState ls - -- reserves and rewards change - pr = es ^. prevPParamsEpochStateL - deltaR1 = - rationalToCoinViaFloor $ - min 1 eta - * unboundRational (pr ^. ppRhoL) - * fromIntegral reserves - d = unboundRational (pr ^. ppDG) - expectedBlocks = - floor $ - (1 - d) * unboundRational (activeSlotVal asc) * (fromIntegral $ unEpochSize slotsPerEpoch) - -- TODO asc is a global constant, and slotsPerEpoch should not change often at all, - -- it would be nice to not have to compute expectedBlocks every epoch - blocksMade = fromIntegral $ Map.foldr (+) 0 b' :: Integer - eta - | unboundRational (pr ^. ppDG) >= 0.8 = 1 - | otherwise = blocksMade % expectedBlocks - Coin rPot = ssFee ss <> deltaR1 - deltaT1 = floor $ unboundRational (pr ^. ppTauL) * fromIntegral rPot - _R = Coin $ rPot - deltaT1 - -- We now compute stake pool specific values that are needed for computing - -- member and leader rewards. - activestake = sumAllStake stake - totalStake = circulation es maxSupply - stakePerPool = sumStakePerPool delegs stake - mkPoolRewardInfoCurry = - mkPoolRewardInfo - pr - _R - b - (fromIntegral blocksMade) - stake - delegs - stakePerPool - totalStake - activestake - -- We map over the registered stake pools to compute the revelant - -- stake pool specific values. - allPoolInfo = VMap.map mkPoolRewardInfoCurry poolParams - - -- Stake pools that do not produce any blocks get no rewards, - -- but some information is still needed from non-block-producing - -- pools for the ranking algorithm used by the wallets. - blockProducingPoolInfo = VMap.toMap $ VMap.mapMaybe (either (const Nothing) Just) allPoolInfo - getSigma = unStakeShare . poolRelativeStake - makeLikelihoods = \case - -- This pool produced no blocks this epoch - Left (StakeShare sigma) -> - likelihood - 0 - (leaderProbability asc sigma $ pr ^. ppDG) - slotsPerEpoch - -- This pool produced at least one block this epoch - Right info -> - likelihood - (poolBlocks info) - (leaderProbability asc (getSigma info) $ pr ^. ppDG) - slotsPerEpoch - newLikelihoods = VMap.toMap $ VMap.map makeLikelihoods allPoolInfo - -- We now compute the leader rewards for each stake pool. - collectLRs acc poolRI = - let rewardAccount = raCredential . ppRewardAccount . poolPs $ poolRI - packageLeaderReward = Set.singleton . leaderRewardToGeneral . poolLeaderReward - in if HardForks.forgoRewardPrefilter (pr ^. ppProtocolVersionL) - || rewardAccount `UM.member` rewards ds - then - Map.insertWith - Set.union - rewardAccount - (packageLeaderReward poolRI) - acc - else acc - -- The data in 'RewardSnapShot' will be used to finish up the reward calculation - -- once all the member rewards are complete. - rewsnap = - RewardSnapShot - { rewFees = ssFee ss - , rewProtocolVersion = pr ^. ppProtocolVersionL - , rewNonMyopic = nm - , rewDeltaR1 = deltaR1 - , rewR = _R - , rewDeltaT1 = Coin deltaT1 - , rewLikelihoods = newLikelihoods - , rewLeaders = Map.foldl' collectLRs mempty blockProducingPoolInfo - } - -- The data in 'FreeVars' to supply individual stake pool members with - -- the neccessary information to compute their individual rewards. - free = - FreeVars - delegs - (UM.domain $ rewards ds) - totalStake - (pr ^. ppProtocolVersionL) - blockProducingPoolInfo - pulser :: Pulser (EraCrypto era) - pulser = - RSLP - pulseSize - free - (unStake stake) - (RewardAns Map.empty Map.empty) - in Pulsing rewsnap pulser - --- Phase 2 - --- | Run the pulser for a bit. If is has nothing left to do, complete it. -pulseStep :: - PulsingRewUpdate c -> - ShelleyBase (PulsingRewUpdate c, RewardEvent c) -pulseStep (Complete r_) = pure (Complete r_, mempty) -pulseStep p@(Pulsing _ pulser) | done pulser = completeStep p -pulseStep (Pulsing rewsnap pulser) = do - -- The pulser might compute provenance, but using pulseM here does not compute it - p2@(RSLP _ _ _ (RewardAns _ event)) <- pulseM pulser - pure (Pulsing rewsnap p2, event) - --- Phase 3 - -completeStep :: - PulsingRewUpdate c -> - ShelleyBase (PulsingRewUpdate c, RewardEvent c) -completeStep (Complete r) = pure (Complete r, mempty) -completeStep (Pulsing rewsnap pulser) = do - (p2, !event) <- completeRupd (Pulsing rewsnap pulser) - pure (Complete p2, event) - --- | Phase 3 of reward update has several parts --- a) completeM the pulser (in case there are still computions to run) --- b) Combine the pulser provenance with the RewardProvenance --- c) Construct the final RewardUpdate --- d) Add the leader rewards to both the events and the computed Rewards -completeRupd :: - PulsingRewUpdate c -> - ShelleyBase (RewardUpdate c, RewardEvent c) -completeRupd (Complete x) = pure (x, mempty) -completeRupd - ( Pulsing - RewardSnapShot - { rewDeltaR1 = deltaR1 - , rewFees = feesSS - , rewR = oldr - , rewDeltaT1 = (Coin deltaT1) - , rewNonMyopic = nm - , rewLikelihoods = newLikelihoods - , rewLeaders = lrewards - , rewProtocolVersion = protVer - } - pulser@(RSLP _size _free _source (RewardAns prev _now)) -- If prev is Map.empty, we have never pulsed. - ) = do - RewardAns rs_ events <- completeM pulser - let rs' = Map.map Set.singleton rs_ - let rs'' = Map.unionWith Set.union rs' lrewards - let !events' = Map.unionWith Set.union events lrewards - - let deltaR2 = oldr <-> sumRewards protVer rs'' - let neverpulsed = Map.null prev - !newevent = - if neverpulsed -- If we have never pulsed then everything in the computed needs to added to the event - then Map.unionWith Set.union rs' events' - else events' - pure - ( RewardUpdate - { deltaT = DeltaCoin deltaT1 - , deltaR = invert (toDeltaCoin deltaR1) <> toDeltaCoin deltaR2 - , rs = rs'' - , deltaF = invert (toDeltaCoin feesSS) - , nonMyopic = updateNonMyopic nm oldr newLikelihoods - } - , newevent - ) - --- | To create a reward update, run all 3 phases --- This function is not used in the rules, so it ignores RewardEvents -createRUpd :: - forall era. - EraGov era => - EpochSize -> - BlocksMade (EraCrypto era) -> - EpochState era -> - Coin -> - ActiveSlotCoeff -> - Word64 -> - ShelleyBase (RewardUpdate (EraCrypto era)) -createRUpd slotsPerEpoch blocksmade epstate maxSupply asc secparam = do - let step1 = startStep slotsPerEpoch blocksmade epstate maxSupply asc secparam - (step2, _event) <- pulseStep step1 - case step2 of - (Complete r) -> pure r - (Pulsing rewsnap pulser) -> fst <$> completeRupd (Pulsing rewsnap pulser) - --- | Calculate the current circulation --- --- This is used in the rewards calculation, and for API endpoints for pool ranking. -circulation :: EpochState era -> Coin -> Coin -circulation (EpochState acnt _ _ _) supply = - supply <-> asReserves acnt - -decayFactor :: Float -decayFactor = 0.9 - -updateNonMyopic :: - NonMyopic c -> - Coin -> - Map (KeyHash 'StakePool c) Likelihood -> - NonMyopic c -updateNonMyopic nm rPot_ newLikelihoods = - nm - { likelihoodsNM = updatedLikelihoods - , rewardPotNM = rPot_ - } - where - history = likelihoodsNM nm - performance kh newPerf = - maybe - mempty - (applyDecay decayFactor) - (Map.lookup kh history) - <> newPerf - updatedLikelihoods = Map.mapWithKey performance newLikelihoods diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/LedgerState/Types.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/LedgerState/Types.hs deleted file mode 100644 index ecbfe85ab5a..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/LedgerState/Types.hs +++ /dev/null @@ -1,741 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-deprecations #-} - -module Cardano.Ledger.Shelley.LedgerState.Types where - -import Cardano.Ledger.BaseTypes ( - BlocksMade (..), - EpochNo, - StrictMaybe (..), - ) -import Cardano.Ledger.Binary ( - DecCBOR (decCBOR), - DecShareCBOR (Share, decShareCBOR, decSharePlusCBOR), - EncCBOR (encCBOR), - FromCBOR (..), - Interns, - ToCBOR (..), - decNoShareCBOR, - decShareLensCBOR, - decodeRecordNamed, - decodeRecordNamedT, - encodeListLen, - toPlainDecoder, - ) -import Cardano.Ledger.Binary.Coders (Decode (From, RecD), Encode (..), decode, encode, (!>), ( encCBOR t <> encCBOR r - -instance DecCBOR AccountState where - decCBOR = - decodeRecordNamed "AccountState" (const 2) $ AccountState <$> decCBOR <*> decCBOR - -instance ToJSON AccountState where - toJSON = object . toAccountStatePairs - toEncoding = pairs . mconcat . toAccountStatePairs - -toAccountStatePairs :: KeyValue e a => AccountState -> [a] -toAccountStatePairs as@(AccountState _ _) = - let AccountState {asTreasury, asReserves} = as - in [ "treasury" .= asTreasury - , "reserves" .= asReserves - ] - -instance NoThunks AccountState - -instance NFData AccountState - -data EpochState era = EpochState - { esAccountState :: !AccountState - , esLState :: !(LedgerState era) - , esSnapshots :: !(SnapShots (EraCrypto era)) - , esNonMyopic :: !(NonMyopic (EraCrypto era)) - -- ^ This field, esNonMyopic, does not appear in the formal spec - -- and is not a part of the protocol. It is only used for providing - -- data to the stake pool ranking calculation @getNonMyopicMemberRewards@. - -- See https://github.com/intersectmbo/cardano-ledger/releases/latest/download/pool-ranking.pdf - } - deriving (Generic) - -deriving stock instance - ( EraTxOut era - , Show (GovState era) - ) => - Show (EpochState era) - -deriving stock instance - ( EraTxOut era - , Eq (GovState era) - ) => - Eq (EpochState era) - -instance - ( EraTxOut era - , NoThunks (GovState era) - ) => - NoThunks (EpochState era) - -instance - ( EraTxOut era - , NFData (GovState era) - ) => - NFData (EpochState era) - -instance - ( EraTxOut era - , EncCBOR (GovState era) - ) => - EncCBOR (EpochState era) - where - encCBOR EpochState {esAccountState, esLState, esSnapshots, esNonMyopic} = - encode $ - Rec EpochState - !> To esAccountState - !> To esLState -- We get better sharing when encoding ledger state before snaphots - !> To esSnapshots - !> To esNonMyopic - -instance - ( EraTxOut era - , EraGov era - ) => - DecCBOR (EpochState era) - where - decCBOR = - decodeRecordNamed "EpochState" (const 4) $ - flip evalStateT mempty $ do - esAccountState <- lift decCBOR - esLState <- decSharePlusCBOR - esSnapshots <- decSharePlusCBOR - esNonMyopic <- decShareLensCBOR _2 - pure EpochState {esAccountState, esSnapshots, esLState, esNonMyopic} - -instance (EraTxOut era, EraGov era) => ToCBOR (EpochState era) where - toCBOR = toEraCBOR @era - -instance (EraTxOut era, EraGov era) => FromCBOR (EpochState era) where - fromCBOR = fromEraCBOR @era - -instance (EraTxOut era, EraGov era) => ToJSON (EpochState era) where - toJSON = object . toEpochStatePairs - toEncoding = pairs . mconcat . toEpochStatePairs - -toEpochStatePairs :: - ( EraTxOut era - , EraGov era - , KeyValue e a - ) => - EpochState era -> - [a] -toEpochStatePairs es@(EpochState _ _ _ _) = - let EpochState {..} = es - in [ "esAccountState" .= esAccountState - , "esSnapshots" .= esSnapshots - , "esLState" .= esLState - , "esNonMyopic" .= esNonMyopic - ] - --- ============================= - --- | Incremental Stake, Stake along with possible missed coins from danging Ptrs. --- Transactions can use Ptrs to refer to a stake credential in a TxOut. The Ptr --- does not have to point to anything until the epoch boundary, when we compute --- rewards and aggregate staking information for ranking. This is unusual but legal. --- In a non incremental system, we use whatever 'legal' Ptrs exist at the epoch --- boundary. Here we are computing things incrementally, so we need to remember Ptrs --- that might point to something by the time the epoch boundary is reached. When --- the epoch boundary is reached we 'resolve' these pointers, to see if any have --- become non-dangling since the time they were first used in the incremental computation. -data IncrementalStake c = IStake - { credMap :: !(Map (Credential 'Staking c) (CompactForm Coin)) - , ptrMap :: !(Map Ptr (CompactForm Coin)) - } - deriving (Generic, Show, Eq, Ord, NoThunks, NFData) - -instance Crypto c => EncCBOR (IncrementalStake c) where - encCBOR (IStake st dangle) = - encodeListLen 2 <> encCBOR st <> encCBOR dangle - -instance Crypto c => DecShareCBOR (IncrementalStake c) where - type Share (IncrementalStake c) = Interns (Credential 'Staking c) - decShareCBOR credInterns = - decodeRecordNamed "Stake" (const 2) $ do - stake <- decShareCBOR (credInterns, mempty) - IStake stake <$> decCBOR - -instance Semigroup (IncrementalStake c) where - (IStake a b) <> (IStake c d) = IStake (Map.unionWith (<>) a c) (Map.unionWith (<>) b d) - -instance Monoid (IncrementalStake c) where - mempty = IStake Map.empty Map.empty - -instance Data.Group.Group (IncrementalStake c) where - invert (IStake m1 m2) = IStake (Map.map invert m1) (Map.map invert m2) - -instance Default (IncrementalStake c) where - def = IStake Map.empty Map.empty - -instance Crypto c => ToJSON (IncrementalStake c) where - toJSON = object . toIncrementalStakePairs - toEncoding = pairs . mconcat . toIncrementalStakePairs - -toIncrementalStakePairs :: - (KeyValue e a, Crypto c) => IncrementalStake c -> [a] -toIncrementalStakePairs iStake@(IStake _ _) = - let IStake {..} = iStake -- guard against addition or removal of fields - in [ "credentials" .= credMap - , "pointers" .= ptrMap - ] - --- ============================= - --- | There is a serious invariant that we must maintain in the UTxOState. --- Given (UTxOState utxo _ _ _ istake) it must be the case that --- istake == (updateStakeDistribution (UTxO Map.empty) (UTxO Map.empty) utxo) --- Of course computing the RHS of the above equality can be very expensive, so we only --- use this route in the testing function smartUTxO. But we are very careful, wherever --- we update the UTxO, we carefully make INCREMENTAL changes to istake to maintain --- this invariant. This happens in the UTxO rule. -data UTxOState era = UTxOState - { utxosUtxo :: !(UTxO era) - , utxosDeposited :: Coin - -- ^ This field is left lazy, because we only use it for assertions - , utxosFees :: !Coin - , utxosGovState :: !(GovState era) - , utxosStakeDistr :: !(IncrementalStake (EraCrypto era)) - , utxosDonation :: !Coin - } - deriving (Generic) - -instance - ( EraTxOut era - , NFData (GovState era) - ) => - NFData (UTxOState era) - -deriving stock instance - ( EraTxOut era - , Show (GovState era) - ) => - Show (UTxOState era) - -deriving stock instance - ( EraTxOut era - , Eq (GovState era) - ) => - Eq (UTxOState era) - -deriving via - AllowThunksIn - '["utxosDeposited"] - (UTxOState era) - instance - ( NoThunks (UTxO era) - , NoThunks (GovState era) - , Era era - ) => - NoThunks (UTxOState era) - -instance - ( EraTxOut era - , EncCBOR (GovState era) - ) => - EncCBOR (UTxOState era) - where - encCBOR (UTxOState ut dp fs us sd don) = - encode $ - Rec UTxOState - !> To ut - !> To dp - !> To fs - !> To us - !> To sd - !> To don - -instance - ( EraTxOut era - , EraGov era - ) => - DecShareCBOR (UTxOState era) - where - type - Share (UTxOState era) = - Interns (Credential 'Staking (EraCrypto era)) - decShareCBOR credInterns = - decodeRecordNamed "UTxOState" (const 6) $ do - utxosUtxo <- decShareCBOR credInterns - utxosDeposited <- decCBOR - utxosFees <- decCBOR - -- TODO: implement proper sharing: https://github.com/intersectmbo/cardano-ledger/issues/3486 - utxosGovState <- decNoShareCBOR - utxosStakeDistr <- decShareCBOR credInterns - utxosDonation <- decCBOR - pure UTxOState {..} - -instance (EraTxOut era, EraGov era) => ToCBOR (UTxOState era) where - toCBOR = toEraCBOR @era - -instance (EraTxOut era, EraGov era) => FromCBOR (UTxOState era) where - fromCBOR = toPlainDecoder (eraProtVerLow @era) decNoShareCBOR - -instance (EraTxOut era, EraGov era) => ToJSON (UTxOState era) where - toJSON = object . toUTxOStatePairs - toEncoding = pairs . mconcat . toUTxOStatePairs - -toUTxOStatePairs :: - (EraTxOut era, EraGov era, KeyValue e a) => UTxOState era -> [a] -toUTxOStatePairs utxoState@(UTxOState _ _ _ _ _ _) = - let UTxOState {..} = utxoState - in [ "utxo" .= utxosUtxo - , "deposited" .= utxosDeposited - , "fees" .= utxosFees - , "ppups" .= utxosGovState - , "stake" .= utxosStakeDistr - ] - --- | New Epoch state and environment -data NewEpochState era = NewEpochState - { nesEL :: !EpochNo - -- ^ Last epoch - , nesBprev :: !(BlocksMade (EraCrypto era)) - -- ^ Blocks made before current epoch - , nesBcur :: !(BlocksMade (EraCrypto era)) - -- ^ Blocks made in current epoch - , nesEs :: !(EpochState era) - -- ^ Epoch state - , nesRu :: !(StrictMaybe (PulsingRewUpdate (EraCrypto era))) - -- ^ Possible reward update - , nesPd :: !(PoolDistr (EraCrypto era)) - -- ^ Stake distribution within the stake pool - , stashedAVVMAddresses :: !(StashedAVVMAddresses era) - -- ^ AVVM addresses to be removed at the end of the Shelley era. Note that - -- the existence of this field is a hack, related to the transition of UTxO - -- to disk. We remove AVVM addresses from the UTxO on the Shelley/Allegra - -- boundary. However, by this point the UTxO will be moved to disk, and - -- hence doing a scan of the UTxO for AVVM addresses will be expensive. Our - -- solution to this is to do a scan of the UTxO on the Byron/Shelley - -- boundary (since Byron UTxO are still on disk), stash the results here, - -- and then remove them at the Shelley/Allegra boundary. - -- - -- This is very much an awkward implementation hack, and hence we hide it - -- from as many places as possible. - } - deriving (Generic) - -type family StashedAVVMAddresses era where - StashedAVVMAddresses (ShelleyEra c) = UTxO (ShelleyEra c) - StashedAVVMAddresses _ = () - -deriving stock instance - ( EraTxOut era - , Show (StashedAVVMAddresses era) - , Show (GovState era) - ) => - Show (NewEpochState era) - -deriving stock instance - ( EraTxOut era - , Eq (StashedAVVMAddresses era) - , Eq (GovState era) - ) => - Eq (NewEpochState era) - -instance - ( EraTxOut era - , NFData (StashedAVVMAddresses era) - , NFData (GovState era) - ) => - NFData (NewEpochState era) - -instance - ( EraTxOut era - , EncCBOR (StashedAVVMAddresses era) - , EncCBOR (GovState era) - ) => - EncCBOR (NewEpochState era) - where - encCBOR (NewEpochState e bp bc es ru pd av) = - encodeListLen 7 - <> encCBOR e - <> encCBOR bp - <> encCBOR bc - <> encCBOR es - <> encCBOR ru - <> encCBOR pd - <> encCBOR av - -instance - ( EraTxOut era - , EraGov era - , DecCBOR (StashedAVVMAddresses era) - ) => - DecCBOR (NewEpochState era) - where - decCBOR = do - decode $ - RecD NewEpochState - - ToCBOR (NewEpochState era) - where - toCBOR = toEraCBOR @era - -instance - (EraTxOut era, EraGov era, DecCBOR (StashedAVVMAddresses era)) => - FromCBOR (NewEpochState era) - where - fromCBOR = fromEraCBOR @era - -instance - ( Era era - , NoThunks (BlocksMade (EraCrypto era)) - , NoThunks (EpochState era) - , NoThunks (PulsingRewUpdate (EraCrypto era)) - , NoThunks (StashedAVVMAddresses era) - ) => - NoThunks (NewEpochState era) - --- | The state associated with a 'Ledger'. -data LedgerState era = LedgerState - { lsUTxOState :: !(UTxOState era) - -- ^ The current unspent transaction outputs. - , lsCertState :: !(CertState era) - } - deriving (Generic) - -deriving stock instance - ( EraTxOut era - , Show (GovState era) - ) => - Show (LedgerState era) - -deriving stock instance - ( EraTxOut era - , Eq (GovState era) - ) => - Eq (LedgerState era) - -instance - ( EraTxOut era - , NoThunks (GovState era) - ) => - NoThunks (LedgerState era) - -instance - ( EraTxOut era - , NFData (GovState era) - ) => - NFData (LedgerState era) - -instance - ( EraTxOut era - , EncCBOR (GovState era) - ) => - EncCBOR (LedgerState era) - where - encCBOR LedgerState {lsUTxOState, lsCertState} = - encodeListLen 2 - <> encCBOR lsCertState -- encode delegation state first to improve sharing - <> encCBOR lsUTxOState - -instance - ( EraTxOut era - , EraGov era - ) => - DecShareCBOR (LedgerState era) - where - type - Share (LedgerState era) = - ( Interns (Credential 'Staking (EraCrypto era)) - , Interns (KeyHash 'StakePool (EraCrypto era)) - ) - decSharePlusCBOR = - decodeRecordNamedT "LedgerState" (const 2) $ do - lsCertState <- decSharePlusCBOR - lsUTxOState <- decShareLensCBOR _1 - pure LedgerState {lsUTxOState, lsCertState} - -instance (EraTxOut era, EraGov era) => ToCBOR (LedgerState era) where - toCBOR = toEraCBOR @era - -instance (EraTxOut era, EraGov era) => FromCBOR (LedgerState era) where - fromCBOR = toPlainDecoder (eraProtVerLow @era) decNoShareCBOR - -instance (EraTxOut era, EraGov era) => ToJSON (LedgerState era) where - toJSON = object . toLedgerStatePairs - toEncoding = pairs . mconcat . toLedgerStatePairs - -toLedgerStatePairs :: - (EraTxOut era, EraGov era, KeyValue e a) => LedgerState era -> [a] -toLedgerStatePairs ls@(LedgerState _ _) = - let LedgerState {..} = ls - in [ "utxoState" .= lsUTxOState - , "delegationState" .= lsCertState - ] - --- ==================================================== - --------------------------------------------------------------------------------- --- Default instances --------------------------------------------------------------------------------- - -instance EraGov era => Default (UTxOState era) where - def = UTxOState mempty mempty mempty def mempty mempty - -instance - Default (LedgerState era) => - Default (EpochState era) - where - def = EpochState def def def def - -instance Default (UTxOState era) => Default (LedgerState era) where - def = LedgerState def def - -instance Default AccountState where - def = AccountState (Coin 0) (Coin 0) - --- ============================================================= --- Lenses for types found inside NewEpochState and its fields - --- ========================================== --- NewEpochState - -nesPdL :: Lens' (NewEpochState era) (PoolDistr (EraCrypto era)) -nesPdL = lens nesPd (\ds u -> ds {nesPd = u}) - -{- Callled nesEpochStateL elsewhere -} -nesEsL :: Lens' (NewEpochState era) (EpochState era) -nesEsL = lens nesEs (\ds u -> ds {nesEs = u}) - -unifiedL :: Lens' (NewEpochState era) (UMap (EraCrypto era)) -unifiedL = nesEsL . esLStateL . lsCertStateL . certDStateL . dsUnifiedL - -nesELL :: Lens' (NewEpochState era) EpochNo -nesELL = lens nesEL (\ds u -> ds {nesEL = u}) - -nesBprevL :: Lens' (NewEpochState era) (Map (KeyHash 'StakePool (EraCrypto era)) Natural) -nesBprevL = lens (unBlocksMade . nesBprev) (\ds u -> ds {nesBprev = BlocksMade u}) - -nesBcurL :: Lens' (NewEpochState era) (Map (KeyHash 'StakePool (EraCrypto era)) Natural) -nesBcurL = lens (unBlocksMade . nesBcur) (\ds u -> ds {nesBcur = BlocksMade u}) - -nesRuL :: Lens' (NewEpochState era) (StrictMaybe (PulsingRewUpdate (EraCrypto era))) -nesRuL = lens nesRu (\ds u -> ds {nesRu = u}) - -nesStashedAVVMAddressesL :: Lens' (NewEpochState era) (StashedAVVMAddresses era) -nesStashedAVVMAddressesL = lens stashedAVVMAddresses (\ds u -> ds {stashedAVVMAddresses = u}) - --- For backward compatibility -nesEpochStateL :: Lens' (NewEpochState era) (EpochState era) -nesEpochStateL = lens nesEs $ \x y -> x {nesEs = y} - --- =================================================== --- EpochState - -esAccountStateL :: Lens' (EpochState era) AccountState -esAccountStateL = lens esAccountState (\x y -> x {esAccountState = y}) - -esSnapshotsL :: Lens' (EpochState era) (SnapShots (EraCrypto era)) -esSnapshotsL = lens esSnapshots (\x y -> x {esSnapshots = y}) - -esLStateL :: Lens' (EpochState era) (LedgerState era) -esLStateL = lens esLState (\x y -> x {esLState = y}) - -esNonMyopicL :: Lens' (EpochState era) (NonMyopic (EraCrypto era)) -esNonMyopicL = lens esNonMyopic (\x y -> x {esNonMyopic = y}) - -curPParamsEpochStateL :: EraGov era => Lens' (EpochState era) (PParams era) -curPParamsEpochStateL = esLStateL . lsUTxOStateL . utxosGovStateL . curPParamsGovStateL - -prevPParamsEpochStateL :: EraGov era => Lens' (EpochState era) (PParams era) -prevPParamsEpochStateL = esLStateL . lsUTxOStateL . utxosGovStateL . prevPParamsGovStateL - --- ========================================== --- AccountState - -asTreasuryL :: Lens' AccountState Coin -asTreasuryL = lens asTreasury (\ds u -> ds {asTreasury = u}) - -asReservesL :: Lens' AccountState Coin -asReservesL = lens asReserves (\ds u -> ds {asReserves = u}) - --- ==================================================== --- LedgerState - -lsUTxOStateL :: Lens' (LedgerState era) (UTxOState era) -lsUTxOStateL = lens lsUTxOState (\x y -> x {lsUTxOState = y}) - -lsCertStateL :: Lens' (LedgerState era) (CertState era) -lsCertStateL = lens lsCertState (\x y -> x {lsCertState = y}) - --- ================ UTxOState =========================== - -utxosUtxoL :: Lens' (UTxOState era) (UTxO era) -utxosUtxoL = lens utxosUtxo (\x y -> x {utxosUtxo = y}) - -utxosDepositedL :: Lens' (UTxOState era) Coin -utxosDepositedL = lens utxosDeposited (\x y -> x {utxosDeposited = y}) - -utxosFeesL :: Lens' (UTxOState era) Coin -utxosFeesL = lens utxosFees (\x y -> x {utxosFees = y}) - -utxosGovStateL :: Lens' (UTxOState era) (GovState era) -utxosGovStateL = lens utxosGovState (\x y -> x {utxosGovState = y}) - -utxosStakeDistrL :: Lens' (UTxOState era) (IncrementalStake (EraCrypto era)) -utxosStakeDistrL = lens utxosStakeDistr (\x y -> x {utxosStakeDistr = y}) - -utxosDonationL :: Lens' (UTxOState era) Coin -utxosDonationL = lens utxosDonation (\x y -> x {utxosDonation = y}) - --- ================ IncremetalStake =========================== - -credMapL :: Lens' (IncrementalStake c) (Map (Credential 'Staking c) (CompactForm Coin)) -credMapL = lens credMap (\x y -> x {credMap = y}) - -ptrMapL :: Lens' (IncrementalStake c) (Map Ptr (CompactForm Coin)) -ptrMapL = lens ptrMap (\x y -> x {ptrMap = y}) - --- ==================== Compound Lenses ======================= - -newEpochStateGovStateL :: Lens' (NewEpochState era) (GovState era) -newEpochStateGovStateL = nesEsL . esLStateL . lsUTxOStateL . utxosGovStateL - -epochStateGovStateL :: Lens' (EpochState era) (GovState era) -epochStateGovStateL = esLStateL . lsUTxOStateL . utxosGovStateL - -epochStateDonationL :: Lens' (EpochState era) Coin -epochStateDonationL = esLStateL . lsUTxOStateL . utxosDonationL - -epochStateTreasuryL :: Lens' (EpochState era) Coin -epochStateTreasuryL = esAccountStateL . asTreasuryL - -epochStateIncrStakeDistrL :: - Lens' - (EpochState era) - (Map (Credential 'Staking (EraCrypto era)) (CompactForm Coin)) -epochStateIncrStakeDistrL = esLStateL . lsUTxOStateL . utxosStakeDistrL . credMapL - -epochStateRegDrepL :: - Lens' - (EpochState era) - (Map (Credential 'DRepRole (EraCrypto era)) (DRepState (EraCrypto era))) -epochStateRegDrepL = esLStateL . lsCertStateL . certVStateL . vsDRepsL - -epochStatePoolParamsL :: - Lens' - (EpochState era) - (Map (KeyHash 'StakePool (EraCrypto era)) (PoolParams (EraCrypto era))) -epochStatePoolParamsL = esLStateL . lsCertStateL . certPStateL . psStakePoolParamsL - -epochStateUMapL :: Lens' (EpochState era) (UMap (EraCrypto era)) -epochStateUMapL = esLStateL . lsCertStateL . certDStateL . dsUnifiedL - -epochStateStakeDistrL :: - Lens' - (EpochState era) - (VMap VB VP (Credential 'Staking (EraCrypto era)) (CompactForm Coin)) -epochStateStakeDistrL = esSnapshotsL . ssStakeMarkL . ssStakeDistrL - -potEqualsObligation :: - EraGov era => - CertState era -> - UTxOState era -> - Bool -potEqualsObligation certState utxoSt = obligations == pot - where - obligations = totalObligation certState (utxoSt ^. utxosGovStateL) - pot = utxoSt ^. utxosDepositedL - -allObligations :: EraGov era => CertState era -> GovState era -> Obligations -allObligations certState govState = - obligationCertState certState <> obligationGovState govState - -totalObligation :: EraGov era => CertState era -> GovState era -> Coin -totalObligation certState govState = sumObligation (allObligations certState govState) diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Metadata.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/Metadata.hs deleted file mode 100644 index 7f1736ec59c..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Metadata.hs +++ /dev/null @@ -1,7 +0,0 @@ -module Cardano.Ledger.Shelley.Metadata - {-# DEPRECATED "Use 'import Cardano.Ledger.Shelley.TxAuxData' instead" #-} ( - module X, -) -where - -import Cardano.Ledger.Shelley.TxAuxData as X diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/PParams.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/PParams.hs deleted file mode 100644 index 54bf78856b4..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/PParams.hs +++ /dev/null @@ -1,582 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - --- | This module contains just the type of protocol parameters. -module Cardano.Ledger.Shelley.PParams ( - emptyShelleyPParams, - emptyShelleyPParamsUpdate, - ShelleyPParams (..), - emptyPParams, - HKD, - PPUpdateEnv (..), - ProposedPPUpdates (..), - emptyPPPUpdates, - Update (..), - pvCanFollow, - hasLegalProtVerUpdate, - - -- * JSON helpers - shelleyCommonPParamsHKDPairs, - shelleyCommonPParamsHKDPairsV6, - shelleyCommonPParamsHKDPairsV8, - - -- * Deprecated - updatePParams, - upgradeUpdate, -) -where - -import Cardano.Ledger.BaseTypes ( - EpochInterval (..), - NonNegativeInterval, - Nonce (NeutralNonce), - ProtVer (..), - StrictMaybe (..), - UnitInterval, - invalidKey, - strictMaybeToMaybe, - succVersion, - ) -import Cardano.Ledger.Binary ( - DecCBOR (..), - DecCBORGroup (..), - EncCBOR (..), - EncCBORGroup (..), - FromCBOR (..), - ToCBOR (..), - decodeMapContents, - decodeRecordNamed, - decodeWord, - encodeListLen, - encodeMapLen, - encodeWord, - ) -import Cardano.Ledger.Binary.Coders (Decode (From, RecD), decode, ( EraPParams (ShelleyEra c) where - type PParamsHKD f (ShelleyEra c) = ShelleyPParams f (ShelleyEra c) - - type UpgradePParams f (ShelleyEra c) = Void - type DowngradePParams f (ShelleyEra c) = Void - - emptyPParamsIdentity = emptyShelleyPParams - emptyPParamsStrictMaybe = emptyShelleyPParamsUpdate - - -- These two functions are impossible for two reasons: - -- 1. Upgrade/DowngradePParams are Void - -- 2. ByronEra does not have an instance for EraPParams - -- - -- Using either one of these two functions with ShelleyEra will result in a build error: - upgradePParamsHKD = error "IMPOSSIBLE! There cannot be PParams that can be upgraded to Shelley" - downgradePParamsHKD = error "IMPOSSIBLE! There cannot be PParams that can be downgraded from Shelley" - - hkdMinFeeAL = lens sppMinFeeA $ \pp x -> pp {sppMinFeeA = x} - hkdMinFeeBL = lens sppMinFeeB $ \pp x -> pp {sppMinFeeB = x} - hkdMaxBBSizeL = lens sppMaxBBSize $ \pp x -> pp {sppMaxBBSize = x} - hkdMaxTxSizeL = lens sppMaxTxSize $ \pp x -> pp {sppMaxTxSize = x} - hkdMaxBHSizeL = lens sppMaxBHSize $ \pp x -> pp {sppMaxBHSize = x} - hkdKeyDepositL = lens sppKeyDeposit $ \pp x -> pp {sppKeyDeposit = x} - hkdPoolDepositL = lens sppPoolDeposit $ \pp x -> pp {sppPoolDeposit = x} - hkdEMaxL = lens sppEMax $ \pp x -> pp {sppEMax = x} - hkdNOptL = lens sppNOpt $ \pp x -> pp {sppNOpt = x} - hkdA0L = lens sppA0 $ \pp x -> pp {sppA0 = x} - hkdRhoL = lens sppRho $ \pp x -> pp {sppRho = x} - hkdTauL = lens sppTau $ \pp x -> pp {sppTau = x} - hkdDL = lens sppD $ \pp x -> pp {sppD = x} - hkdExtraEntropyL = lens sppExtraEntropy $ \pp x -> pp {sppExtraEntropy = x} - hkdProtocolVersionL = lens sppProtocolVersion $ \pp x -> pp {sppProtocolVersion = x} - hkdMinUTxOValueL = lens sppMinUTxOValue $ \pp x -> pp {sppMinUTxOValue = x} - hkdMinPoolCostL = lens sppMinPoolCost $ \pp x -> pp {sppMinPoolCost = x} - -instance Era era => EncCBOR (ShelleyPParams Identity era) where - encCBOR - ShelleyPParams {..} = - encodeListLen 18 - <> encCBOR sppMinFeeA - <> encCBOR sppMinFeeB - <> encCBOR sppMaxBBSize - <> encCBOR sppMaxTxSize - <> encCBOR sppMaxBHSize - <> encCBOR sppKeyDeposit - <> encCBOR sppPoolDeposit - <> encCBOR sppEMax - <> encCBOR sppNOpt - <> encCBOR sppA0 - <> encCBOR sppRho - <> encCBOR sppTau - <> encCBOR sppD - <> encCBOR sppExtraEntropy - <> encCBORGroup sppProtocolVersion - <> encCBOR sppMinUTxOValue - <> encCBOR sppMinPoolCost - -instance Era era => DecCBOR (ShelleyPParams Identity era) where - decCBOR = do - decodeRecordNamed "ShelleyPParams" (const 18) $ - ShelleyPParams @Identity - <$> decCBOR -- sppMinFeeA :: Integer - <*> decCBOR -- sppMinFeeB :: Natural - <*> decCBOR -- sppMaxBBSize :: Natural - <*> decCBOR -- sppMaxTxSize :: Natural - <*> decCBOR -- sppMaxBHSize :: Natural - <*> decCBOR -- sppKeyDeposit :: Coin - <*> decCBOR -- sppPoolDeposit :: Coin - <*> decCBOR -- sppEMax :: EpochNo - <*> decCBOR -- sppNOpt :: Natural - <*> decCBOR -- sppA0 :: NonNegativeInterval - <*> decCBOR -- sppRho :: UnitInterval - <*> decCBOR -- sppTau :: UnitInterval - <*> decCBOR -- sppD :: UnitInterval - <*> decCBOR -- sppExtraEntropy :: Nonce - <*> decCBORGroup -- sppProtocolVersion :: ProtVer - <*> decCBOR -- sppMinUTxOValue :: Natural - <*> decCBOR -- sppMinPoolCost :: Natural - -instance Era era => ToCBOR (ShelleyPParams Identity era) where - toCBOR = toEraCBOR @era - -instance Era era => FromCBOR (ShelleyPParams Identity era) where - fromCBOR = fromEraCBOR @era - -instance - ( EraPParams era - , PParamsHKD Identity era ~ ShelleyPParams Identity era - , ProtVerAtMost era 4 - , ProtVerAtMost era 6 - , ProtVerAtMost era 8 - ) => - ToJSON (ShelleyPParams Identity era) - where - toJSON = object . shelleyPParamsPairs - toEncoding = pairs . mconcat . shelleyPParamsPairs - -shelleyPParamsPairs :: - forall era a e. - (EraPParams era, ProtVerAtMost era 4, ProtVerAtMost era 6, ProtVerAtMost era 8, KeyValue e a) => - PParamsHKD Identity era -> - [a] -shelleyPParamsPairs pp = - uncurry (.=) - <$> shelleyPParamsHKDPairs (Proxy @Identity) pp - -instance FromJSON (ShelleyPParams Identity era) where - parseJSON = - Aeson.withObject "ShelleyPParams" $ \obj -> do - ShelleyPParams - <$> obj .: "txFeePerByte" - <*> obj .: "txFeeFixed" - <*> obj .: "maxBlockBodySize" - <*> obj .: "maxTxSize" - <*> obj .: "maxBlockHeaderSize" - <*> obj .: "stakeAddressDeposit" - <*> obj .: "stakePoolDeposit" - <*> obj .: "poolRetireMaxEpoch" - <*> obj .: "stakePoolTargetNum" - <*> obj .: "poolPledgeInfluence" - <*> obj .: "monetaryExpansion" - <*> obj .: "treasuryCut" - <*> obj .: "decentralization" - <*> obj .: "extraPraosEntropy" - <*> obj .: "protocolVersion" - <*> obj .:? "minUTxOValue" .!= mempty - <*> obj .:? "minPoolCost" .!= mempty - -emptyShelleyPParams :: forall era. Era era => ShelleyPParams Identity era -emptyShelleyPParams = - ShelleyPParams - { sppMinFeeA = Coin 0 - , sppMinFeeB = Coin 0 - , sppMaxBBSize = 0 - , sppMaxTxSize = 2048 - , sppMaxBHSize = 0 - , sppKeyDeposit = Coin 0 - , sppPoolDeposit = Coin 0 - , sppEMax = EpochInterval 0 - , sppNOpt = 100 - , sppA0 = minBound - , sppRho = minBound - , sppTau = minBound - , sppD = minBound - , sppExtraEntropy = NeutralNonce - , sppProtocolVersion = ProtVer (eraProtVerLow @era) 0 - , sppMinUTxOValue = mempty - , sppMinPoolCost = mempty - } - -emptyShelleyPParamsUpdate :: ShelleyPParams StrictMaybe era -emptyShelleyPParamsUpdate = - ShelleyPParams - { sppMinFeeA = SNothing - , sppMinFeeB = SNothing - , sppMaxBBSize = SNothing - , sppMaxTxSize = SNothing - , sppMaxBHSize = SNothing - , sppKeyDeposit = SNothing - , sppPoolDeposit = SNothing - , sppEMax = SNothing - , sppNOpt = SNothing - , sppA0 = SNothing - , sppRho = SNothing - , sppTau = SNothing - , sppD = SNothing - , sppExtraEntropy = SNothing - , sppProtocolVersion = SNothing - , sppMinUTxOValue = SNothing - , sppMinPoolCost = SNothing - } - --- | Update Proposal -data Update era - = Update !(ProposedPPUpdates era) !EpochNo - deriving (Generic) - -deriving instance Eq (PParamsUpdate era) => Eq (Update era) - -instance NFData (PParamsUpdate era) => NFData (Update era) - -deriving instance Show (PParamsUpdate era) => Show (Update era) - -instance NoThunks (PParamsUpdate era) => NoThunks (Update era) - -instance (Era era, EncCBOR (PParamsUpdate era)) => EncCBOR (Update era) where - encCBOR (Update ppUpdate e) = - encodeListLen 2 <> encCBOR ppUpdate <> encCBOR e - -instance - (Era era, DecCBOR (PParamsUpdate era)) => - DecCBOR (Update era) - where - decCBOR = decode $ RecD Update EncCBOR (ShelleyPParams StrictMaybe era) where - encCBOR ppup = - let l = - mapMaybe - strictMaybeToMaybe - [ encodeMapElement 0 encCBOR =<< sppMinFeeA ppup - , encodeMapElement 1 encCBOR =<< sppMinFeeB ppup - , encodeMapElement 2 encCBOR =<< sppMaxBBSize ppup - , encodeMapElement 3 encCBOR =<< sppMaxTxSize ppup - , encodeMapElement 4 encCBOR =<< sppMaxBHSize ppup - , encodeMapElement 5 encCBOR =<< sppKeyDeposit ppup - , encodeMapElement 6 encCBOR =<< sppPoolDeposit ppup - , encodeMapElement 7 encCBOR =<< sppEMax ppup - , encodeMapElement 8 encCBOR =<< sppNOpt ppup - , encodeMapElement 9 encCBOR =<< sppA0 ppup - , encodeMapElement 10 encCBOR =<< sppRho ppup - , encodeMapElement 11 encCBOR =<< sppTau ppup - , encodeMapElement 12 encCBOR =<< sppD ppup - , encodeMapElement 13 encCBOR =<< sppExtraEntropy ppup - , encodeMapElement 14 encCBOR =<< sppProtocolVersion ppup - , encodeMapElement 15 encCBOR =<< sppMinUTxOValue ppup - , encodeMapElement 16 encCBOR =<< sppMinPoolCost ppup - ] - n = fromIntegral $ length l - in encodeMapLen n <> fold l - where - encodeMapElement i encoder x = SJust (encodeWord i <> encoder x) - -instance Era era => DecCBOR (ShelleyPParams StrictMaybe era) where - decCBOR = do - mapParts <- - decodeMapContents $ - decodeWord >>= \case - 0 -> decCBOR >>= \x -> pure (0, \up -> up {sppMinFeeA = SJust x}) - 1 -> decCBOR >>= \x -> pure (1, \up -> up {sppMinFeeB = SJust x}) - 2 -> decCBOR >>= \x -> pure (2, \up -> up {sppMaxBBSize = SJust x}) - 3 -> decCBOR >>= \x -> pure (3, \up -> up {sppMaxTxSize = SJust x}) - 4 -> decCBOR >>= \x -> pure (4, \up -> up {sppMaxBHSize = SJust x}) - 5 -> decCBOR >>= \x -> pure (5, \up -> up {sppKeyDeposit = SJust x}) - 6 -> decCBOR >>= \x -> pure (6, \up -> up {sppPoolDeposit = SJust x}) - 7 -> decCBOR >>= \x -> pure (7, \up -> up {sppEMax = SJust x}) - 8 -> decCBOR >>= \x -> pure (8, \up -> up {sppNOpt = SJust x}) - 9 -> decCBOR >>= \x -> pure (9, \up -> up {sppA0 = SJust x}) - 10 -> decCBOR >>= \x -> pure (10, \up -> up {sppRho = SJust x}) - 11 -> decCBOR >>= \x -> pure (11, \up -> up {sppTau = SJust x}) - 12 -> decCBOR >>= \x -> pure (12, \up -> up {sppD = SJust x}) - 13 -> decCBOR >>= \x -> pure (13, \up -> up {sppExtraEntropy = SJust x}) - 14 -> decCBOR >>= \x -> pure (14, \up -> up {sppProtocolVersion = SJust x}) - 15 -> decCBOR >>= \x -> pure (15, \up -> up {sppMinUTxOValue = SJust x}) - 16 -> decCBOR >>= \x -> pure (16, \up -> up {sppMinPoolCost = SJust x}) - k -> invalidKey k - let fields = fst <$> mapParts :: [Int] - unless - (nub fields == fields) - (fail $ "duplicate keys: " <> show fields) - pure $ foldr ($) emptyShelleyPParamsUpdate (snd <$> mapParts) - -instance Era era => ToCBOR (ShelleyPParams StrictMaybe era) where - toCBOR = toEraCBOR @era - -instance Era era => FromCBOR (ShelleyPParams StrictMaybe era) where - fromCBOR = fromEraCBOR @era - -instance - ( EraPParams era - , PParamsHKD StrictMaybe era ~ ShelleyPParams StrictMaybe era - , ProtVerAtMost era 4 - , ProtVerAtMost era 6 - , ProtVerAtMost era 8 - ) => - ToJSON (ShelleyPParams StrictMaybe era) - where - toJSON = object . shelleyPParamsUpdatePairs - toEncoding = pairs . mconcat . shelleyPParamsUpdatePairs - -shelleyPParamsUpdatePairs :: - forall era a e. - (EraPParams era, ProtVerAtMost era 4, ProtVerAtMost era 6, ProtVerAtMost era 8, KeyValue e a) => - PParamsHKD StrictMaybe era -> - [a] -shelleyPParamsUpdatePairs pp = - [ k .= v - | (k, SJust v) <- shelleyPParamsHKDPairs (Proxy @StrictMaybe) pp - ] - -shelleyPParamsHKDPairs :: - forall f era. - (HKDFunctor f, EraPParams era, ProtVerAtMost era 4, ProtVerAtMost era 6, ProtVerAtMost era 8) => - Proxy f -> - PParamsHKD f era -> - [(Key, HKD f Aeson.Value)] -shelleyPParamsHKDPairs px pp = - shelleyCommonPParamsHKDPairs px pp - ++ shelleyCommonPParamsHKDPairsV6 px pp - ++ shelleyCommonPParamsHKDPairsV8 px pp - ++ [("minUTxOValue", hkdMap px (toJSON @Coin) (pp ^. hkdMinUTxOValueL @era @f))] - --- | These are the fields that are common only up to major protocol version 6 -shelleyCommonPParamsHKDPairsV6 :: - forall f era. - (HKDFunctor f, EraPParams era, ProtVerAtMost era 6) => - Proxy f -> - PParamsHKD f era -> - [(Key, HKD f Aeson.Value)] -shelleyCommonPParamsHKDPairsV6 px pp = - [ ("decentralization", hkdMap px (toJSON @UnitInterval) (pp ^. hkdDL @era @f)) - , ("extraPraosEntropy", hkdMap px (toJSON @Nonce) (pp ^. hkdExtraEntropyL @era @f)) - ] - -shelleyCommonPParamsHKDPairsV8 :: - forall f era. - (HKDFunctor f, EraPParams era, ProtVerAtMost era 8) => - Proxy f -> - PParamsHKD f era -> - [(Key, HKD f Aeson.Value)] -shelleyCommonPParamsHKDPairsV8 px pp = - [ ("protocolVersion", hkdMap px (toJSON @ProtVer) (pp ^. hkdProtocolVersionL @era @f)) - ] - --- | These are the fields that are common across all eras -shelleyCommonPParamsHKDPairs :: - forall f era. - (HKDFunctor f, EraPParams era) => - Proxy f -> - PParamsHKD f era -> - [(Key, HKD f Aeson.Value)] -shelleyCommonPParamsHKDPairs px pp = - [ ("txFeePerByte", hkdMap px (toJSON @Coin) (pp ^. hkdMinFeeAL @_ @f :: HKD f Coin)) - , ("txFeeFixed", hkdMap px (toJSON @Coin) (pp ^. hkdMinFeeBL @era @f)) - , ("maxBlockBodySize", hkdMap px (toJSON @Word32) (pp ^. hkdMaxBBSizeL @era @f)) - , ("maxTxSize", hkdMap px (toJSON @Word32) (pp ^. hkdMaxTxSizeL @era @f)) - , ("maxBlockHeaderSize", hkdMap px (toJSON @Word16) (pp ^. hkdMaxBHSizeL @era @f)) - , ("stakeAddressDeposit", hkdMap px (toJSON @Coin) (pp ^. hkdKeyDepositL @era @f)) - , ("stakePoolDeposit", hkdMap px (toJSON @Coin) (pp ^. hkdPoolDepositL @era @f)) - , ("poolRetireMaxEpoch", hkdMap px (toJSON @EpochInterval) (pp ^. hkdEMaxL @era @f)) - , ("stakePoolTargetNum", hkdMap px (toJSON @Natural) (pp ^. hkdNOptL @era @f)) - , ("poolPledgeInfluence", hkdMap px (toJSON @NonNegativeInterval) (pp ^. hkdA0L @era @f)) - , ("monetaryExpansion", hkdMap px (toJSON @UnitInterval) (pp ^. hkdRhoL @era @f)) - , ("treasuryCut", hkdMap px (toJSON @UnitInterval) (pp ^. hkdTauL @era @f)) - , ("minPoolCost", hkdMap px (toJSON @Coin) (pp ^. hkdMinPoolCostL @era @f)) - ] - --- | Update operation for protocol parameters structure @PParams@ -newtype ProposedPPUpdates era - = ProposedPPUpdates (Map (KeyHash 'Genesis (EraCrypto era)) (PParamsUpdate era)) - deriving (Generic) - -deriving instance Eq (PParamsUpdate era) => Eq (ProposedPPUpdates era) - -deriving instance NFData (PParamsUpdate era) => NFData (ProposedPPUpdates era) - -deriving instance Show (PParamsUpdate era) => Show (ProposedPPUpdates era) - -instance NoThunks (PParamsUpdate era) => NoThunks (ProposedPPUpdates era) - -deriving instance (Era era, ToCBOR (PParamsUpdate era)) => ToCBOR (ProposedPPUpdates era) - -deriving instance (Era era, FromCBOR (PParamsUpdate era)) => FromCBOR (ProposedPPUpdates era) - -deriving instance (Era era, EncCBOR (PParamsUpdate era)) => EncCBOR (ProposedPPUpdates era) - -deriving instance (Era era, DecCBOR (PParamsUpdate era)) => DecCBOR (ProposedPPUpdates era) - -instance EraPParams era => ToJSON (ProposedPPUpdates era) where - toJSON (ProposedPPUpdates ppUpdates) = toJSON $ Map.toList ppUpdates - toEncoding (ProposedPPUpdates ppUpdates) = toEncoding $ Map.toList ppUpdates - -emptyPPPUpdates :: ProposedPPUpdates era -emptyPPPUpdates = ProposedPPUpdates Map.empty - -updatePParams :: EraPParams era => PParams era -> PParamsUpdate era -> PParams era -updatePParams = applyPPUpdates -{-# DEPRECATED updatePParams "Use applyPPUpdates instead" #-} - --- | Check whether the new protocol version is a legitimate version bump with respect to the --- previous one. -pvCanFollow :: - -- | Previous protocol version - ProtVer -> - -- | New protocol version - ProtVer -> - Bool -pvCanFollow (ProtVer curMajor curMinor) (ProtVer newMajor newMinor) = - (succVersion curMajor, 0) == (Just newMajor, newMinor) - || (curMajor, curMinor + 1) == (newMajor, newMinor) - --- | Check whether `PParamsUpdate` contains a valid `ProtVer` update. When a protocol version --- update is not included in `PParamsUpdate` it is considered a legal update. -hasLegalProtVerUpdate :: - (ProtVerAtMost era 8, EraPParams era) => PParams era -> PParamsUpdate era -> Bool -hasLegalProtVerUpdate pp ppu = - case ppu ^. ppuProtocolVersionL of - SNothing -> True - SJust newProtVer -> pvCanFollow (pp ^. ppProtocolVersionL) newProtVer - -upgradeUpdate :: - forall era. - ( EraPParams era - , EraPParams (PreviousEra era) - , EraCrypto (PreviousEra era) ~ EraCrypto era - ) => - UpgradePParams StrictMaybe era -> - Update (PreviousEra era) -> - Update era -upgradeUpdate args (Update pp epoch) = Update (upgradeProposedPPUpdates @era args pp) epoch - -upgradeProposedPPUpdates :: - ( EraPParams era - , EraPParams (PreviousEra era) - , EraCrypto (PreviousEra era) ~ EraCrypto era - ) => - UpgradePParams StrictMaybe era -> - ProposedPPUpdates (PreviousEra era) -> - ProposedPPUpdates era -upgradeProposedPPUpdates args (ProposedPPUpdates ppus) = - ProposedPPUpdates $ upgradePParamsUpdate args <$> ppus diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/PoolParams.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/PoolParams.hs deleted file mode 100644 index d06c625c88f..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/PoolParams.hs +++ /dev/null @@ -1,7 +0,0 @@ -module Cardano.Ledger.Shelley.PoolParams - {-# DEPRECATED "Use 'import Cardano.Ledger.PoolParams' instead" #-} ( - module X, -) -where - -import Cardano.Ledger.PoolParams as X diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/PoolRank.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/PoolRank.hs deleted file mode 100644 index 31c63b1ec1a..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/PoolRank.hs +++ /dev/null @@ -1,389 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeFamilies #-} - -module Cardano.Ledger.Shelley.PoolRank ( - desirability, - PerformanceEstimate (..), - NonMyopic (..), - getTopRankedPools, - getTopRankedPoolsVMap, - nonMyopicStake, - nonMyopicMemberRew, - percentile', - Histogram (..), - LogWeight (..), - likelihood, - applyDecay, - Likelihood (..), - leaderProbability, -) -where - -import Cardano.Ledger.BaseTypes ( - ActiveSlotCoeff, - BoundedRational (..), - NonNegativeInterval, - UnitInterval, - activeSlotVal, - ) -import Cardano.Ledger.Binary ( - DecCBOR (decCBOR), - DecShareCBOR (Share, decSharePlusCBOR), - EncCBOR (encCBOR), - Interns, - decSharePlusLensCBOR, - decodeDouble, - decodeRecordNamedT, - encodeDouble, - encodeListLen, - toMemptyLens, - ) -import Cardano.Ledger.Coin (Coin (..), coinToRational) -import Cardano.Ledger.Core (Era (..), EraPParams, PParams, ppA0L, ppNOptL) -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.EpochBoundary (maxPool) -import Cardano.Ledger.Keys (KeyHash, KeyRole (..)) -import Cardano.Ledger.PoolParams (PoolParams (..)) -import Cardano.Ledger.Shelley.Rewards (StakeShare (..), memberRew) -import Cardano.Slotting.Slot (EpochSize (..)) -import Control.DeepSeq (NFData) -import Control.Monad.Trans -import Data.Aeson (FromJSON, KeyValue, ToJSON (..), object, pairs, (.=)) -import Data.Default.Class (Default, def) -import Data.Foldable (find) -import Data.Function (on) -import Data.List (sortBy) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Maybe (fromMaybe) -import Data.Ratio ((%)) -import qualified Data.Sequence as Seq -import Data.Sequence.Strict (StrictSeq) -import qualified Data.Sequence.Strict as StrictSeq -import Data.Set (Set) -import qualified Data.Set as Set -import qualified Data.VMap as VMap -import GHC.Generics (Generic) -import Lens.Micro ((^.), _1) -import NoThunks.Class (NoThunks (..)) -import Numeric.Natural (Natural) -import Quiet - -newtype LogWeight = LogWeight {unLogWeight :: Float} - deriving (Eq, Generic, Ord, Num, NFData, NoThunks, EncCBOR, DecCBOR, ToJSON, FromJSON) - deriving (Show) via Quiet LogWeight - -toLogWeight :: Double -> LogWeight -toLogWeight d = LogWeight (realToFrac $ log d) - -fromLogWeight :: LogWeight -> Double -fromLogWeight (LogWeight l) = exp (realToFrac l) - -newtype Histogram = Histogram {unHistogram :: StrictSeq LogWeight} - deriving (Eq, Show, Generic) - -newtype Likelihood = Likelihood {unLikelihood :: StrictSeq LogWeight} - -- TODO: replace with small data structure - deriving (Show, Ord, Generic, NFData, EncCBOR, DecCBOR) - -instance NoThunks Likelihood - -instance Eq Likelihood where - (==) = (==) `on` unLikelihood . normalizeLikelihood - -instance Semigroup Likelihood where - (Likelihood x) <> (Likelihood y) = - normalizeLikelihood $ Likelihood (StrictSeq.zipWith (+) x y) - -instance Monoid Likelihood where - mempty = Likelihood $ StrictSeq.forceToStrict $ Seq.replicate (length samplePositions) (LogWeight 0) - -instance ToJSON Likelihood where - toJSON = toJSON . fmap fromLogWeight . unLikelihood - toEncoding = toEncoding . fmap fromLogWeight . unLikelihood - -normalizeLikelihood :: Likelihood -> Likelihood -normalizeLikelihood (Likelihood xs) = Likelihood $ (\x -> x - m) <$> xs - where - m = minimum xs - -leaderProbability :: ActiveSlotCoeff -> Rational -> UnitInterval -> Double -leaderProbability activeSlotCoeff relativeStake decentralizationParameter = - (1 - (1 - asc) ** s) * (1 - d') - where - d' = realToFrac . unboundRational $ decentralizationParameter - asc = realToFrac . unboundRational . activeSlotVal $ activeSlotCoeff - s = realToFrac relativeStake - -samplePositions :: StrictSeq Double -samplePositions = (\x -> (x + 0.5) / 100.0) <$> StrictSeq.fromList [0.0 .. 99.0] - -likelihood :: - Natural -> -- number of blocks produced this epoch - Double -> -- chance we're allowed to produce a block in this slot - EpochSize -> - Likelihood -likelihood blocks t slotsPerEpoch = - Likelihood $ - sample <$> samplePositions - where - -- The likelihood function L(x) is the probability of observing the data we got - -- under the assumption that the underlying pool performance is equal to x. - -- L(x) = C(n,m) * (tx)^n * (1-tx)^m - -- where - -- t is the chance we're allowed to produce a block - -- n is the number of slots in which a block was produced - -- m is the number of slots in which a block was not produced - -- (slots per epoch minus n) - -- C(n,m) is a coefficient that will be irrelevant - -- Since the likelihood function only matters up to a scalar multiple, we will - -- will divide out C(n,m) t^n and use the following instead: - -- L(x) = x^n * (1-tx)^m - -- We represent this function using 100 sample points, but to avoid very - -- large exponents, we store the log of the value instead of the value itself. - -- log(L(x)) = log [ x^n * (1-tx)^m ] - -- = n * log(x) + m * log(1 - tx) - -- TODO: worry more about loss of floating point precision - -- - -- example: - -- a pool has relative stake of 1 / 1,000,000 (~ 30k ada of 35b ada) - -- f = active slot coefficient = 1/20 - -- t = 1 - (1-f)^(1/1,000,000) - n = fromIntegral blocks - m = fromIntegral $ unEpochSize slotsPerEpoch - fromIntegral blocks - l :: Double -> Double - l x = n * log x + m * log (1 - t * x) - sample position = LogWeight (realToFrac $ l position) - --- | Decay previous likelihood -applyDecay :: Float -> Likelihood -> Likelihood -applyDecay decay (Likelihood logWeights) = Likelihood $ mul decay <$> logWeights - where - mul x (LogWeight f) = LogWeight (x * f) - -posteriorDistribution :: Histogram -> Likelihood -> Histogram -posteriorDistribution (Histogram points) (Likelihood likelihoods) = - normalize $ - Histogram $ - StrictSeq.zipWith (+) points likelihoods - --- | Normalize the histogram so that the total area is 1 -normalize :: Histogram -> Histogram -normalize (Histogram values) = Histogram $ (\x -> x - logArea) <$> values' - where - m = maximum values - values' = (\x -> x - m) <$> values - logArea = toLogWeight area - area = reimannSum 0.01 (fromLogWeight <$> values') - --- | Calculate the k percentile for this distribution. --- k is a value between 0 and 1. The 0 percentile is 0 and the 1 percentile is 1 -percentile :: Double -> Histogram -> Likelihood -> PerformanceEstimate -percentile p prior likelihoods = - PerformanceEstimate . fst $ - fromMaybe (1, 1) $ - find (\(_x, fx) -> fx > p) cdf - where - (Histogram values) = posteriorDistribution prior likelihoods - cdf = - Seq.zip - (StrictSeq.fromStrict samplePositions) - (StrictSeq.fromStrict (StrictSeq.scanl (+) 0 (fromLogWeight <$> values))) - -percentile' :: Likelihood -> PerformanceEstimate -percentile' = percentile 0.5 h - where - h = normalize . Histogram $ logBeta 40 1 <$> samplePositions - -- Beta(n,m)(x) = C * x^(n-1)*(1-x)^(m-1) - -- log( Beta(n,m)(x) ) = (n-1) * log x + (m-1) * log (1-x) - logBeta n m x = LogWeight . realToFrac $ (n - 1) * log x + (m - 1) * log (1 - x) - -reimannSum :: (Functor f, Foldable f) => Double -> f Double -> Double -reimannSum width heights = sum $ fmap (width *) heights - --- | This is a estimate of the proportion of allowed blocks a pool will --- make in the future. It is used for ranking pools in delegation. -newtype PerformanceEstimate = PerformanceEstimate {unPerformanceEstimate :: Double} - deriving (Show, Eq, Generic, NoThunks) - -instance EncCBOR PerformanceEstimate where - encCBOR = encodeDouble . unPerformanceEstimate - -instance DecCBOR PerformanceEstimate where - decCBOR = PerformanceEstimate <$> decodeDouble - -data NonMyopic c = NonMyopic - { likelihoodsNM :: !(Map (KeyHash 'StakePool c) Likelihood) - , rewardPotNM :: !Coin - } - deriving (Show, Eq, Generic) - -instance Default (NonMyopic c) where - def = NonMyopic Map.empty (Coin 0) - -instance NoThunks (NonMyopic c) - -instance NFData (NonMyopic c) - -instance Crypto c => EncCBOR (NonMyopic c) where - encCBOR - NonMyopic - { likelihoodsNM = aps - , rewardPotNM = rp - } = - encodeListLen 2 - <> encCBOR aps - <> encCBOR rp - -instance Crypto c => DecShareCBOR (NonMyopic c) where - type Share (NonMyopic c) = Interns (KeyHash 'StakePool c) - decSharePlusCBOR = do - decodeRecordNamedT "NonMyopic" (const 2) $ do - likelihoodsNM <- decSharePlusLensCBOR (toMemptyLens _1 id) - rewardPotNM <- lift decCBOR - pure $ NonMyopic {likelihoodsNM, rewardPotNM} - -instance Crypto crypto => ToJSON (NonMyopic crypto) where - toJSON = object . toNonMyopicPair - toEncoding = pairs . mconcat . toNonMyopicPair - -toNonMyopicPair :: (KeyValue e a, Crypto crypto) => NonMyopic crypto -> [a] -toNonMyopicPair nm@(NonMyopic _ _) = - let NonMyopic {likelihoodsNM, rewardPotNM} = nm - in [ "likelihoodsNM" .= likelihoodsNM - , "rewardPotNM" .= rewardPotNM - ] - --- | Desirability calculation for non-myopic utility, --- corresponding to f^~ in section 5.6.1 of --- "Design Specification for Delegation and Incentives in Cardano" -desirability :: - (NonNegativeInterval, Natural) -> - Coin -> - PoolParams c -> - PerformanceEstimate -> - Coin -> - Double -desirability (a0, nOpt) r pool (PerformanceEstimate p) (Coin totalStake) = - if fTilde <= cost - then 0 - else (fTilde - cost) * (1 - margin) - where - fTilde = fTildeNumer / fTildeDenom - fTildeNumer = p * fromRational (coinToRational r * (z0 + min s z0 * unboundRational a0)) - fTildeDenom = fromRational $ 1 + unboundRational a0 - cost = (fromRational . coinToRational . ppCost) pool - margin = (fromRational . unboundRational . ppMargin) pool - tot = max 1 (fromIntegral totalStake) - Coin pledge = ppPledge pool - s = fromIntegral pledge % tot - z0 = 1 % max 1 (fromIntegral nOpt) - --- | Computes the top ranked stake pools --- corresponding to section 5.6.1 of --- "Design Specification for Delegation and Incentives in Cardano" -getTopRankedPools :: - EraPParams era => - Coin -> - Coin -> - PParams era -> - Map (KeyHash 'StakePool c) (PoolParams c) -> - Map (KeyHash 'StakePool c) PerformanceEstimate -> - Set (KeyHash 'StakePool c) -getTopRankedPools rPot totalStake pp poolParams aps = - let pdata = Map.toAscList $ Map.intersectionWith (,) poolParams aps - in getTopRankedPoolsInternal rPot totalStake pp pdata - -getTopRankedPoolsVMap :: - EraPParams era => - Coin -> - Coin -> - PParams era -> - VMap.VMap VMap.VB VMap.VB (KeyHash 'StakePool (EraCrypto era)) (PoolParams (EraCrypto era)) -> - Map (KeyHash 'StakePool (EraCrypto era)) PerformanceEstimate -> - Set (KeyHash 'StakePool (EraCrypto era)) -getTopRankedPoolsVMap rPot totalStake pp poolParams aps = - let pdata = [(kh, (pps, a)) | (kh, a) <- Map.toAscList aps, Just pps <- [VMap.lookup kh poolParams]] - in getTopRankedPoolsInternal rPot totalStake pp pdata - -getTopRankedPoolsInternal :: - EraPParams era => - Coin -> - Coin -> - PParams era -> - [(KeyHash 'StakePool c, (PoolParams c, PerformanceEstimate))] -> - Set (KeyHash 'StakePool c) -getTopRankedPoolsInternal rPot totalStake pp pdata = - Set.fromList $ - fst - <$> take (fromIntegral $ pp ^. ppNOptL) (sortBy (flip compare `on` snd) rankings) - where - rankings = - [ ( hk - , desirability (pp ^. ppA0L, pp ^. ppNOptL) rPot pool ap totalStake - ) - | (hk, (pool, ap)) <- pdata - ] - --- | Compute the Non-Myopic Pool Stake --- --- This function implements non-myopic stake calculation in section 5.6.2 --- of "Design Specification for Delegation and Incentives in Cardano". --- Note that the protocol parameters are implicit in the design document. --- Additionally, instead of passing a rank r to compare with k, --- we pass the top k desirable pools and check for membership. -nonMyopicStake :: - EraPParams era => - PParams era -> - StakeShare -> - StakeShare -> - StakeShare -> - KeyHash 'StakePool c -> - Set (KeyHash 'StakePool c) -> - StakeShare -nonMyopicStake pp (StakeShare s) (StakeShare sigma) (StakeShare t) kh topPools = - let z0 = 1 % max 1 (fromIntegral (pp ^. ppNOptL)) - in if kh `Set.member` topPools - then StakeShare (max (sigma + t) z0) - else StakeShare (s + t) - --- | Compute the Non-Myopic Pool Member Reward --- --- This function implements equation (3) in section 5.6.4 --- of "Design Specification for Delegation and Incentives in Cardano". --- Note that the protocol parameters and the reward pot are implicit --- in the design document. Additionally, instead of passing a rank --- r to compare with k, we pass the top k desirable pools and --- check for membership. -nonMyopicMemberRew :: - EraPParams era => - PParams era -> - Coin -> - PoolParams c -> - StakeShare -> - StakeShare -> - StakeShare -> - Set (KeyHash 'StakePool c) -> - PerformanceEstimate -> - Coin -nonMyopicMemberRew - pp - rPot - pool - s - sigma - t - topPools - (PerformanceEstimate p) = - let nm = nonMyopicStake pp s sigma t (ppId pool) topPools - f = maxPool pp rPot (unStakeShare nm) (unStakeShare s) - fHat = floor (p * (fromRational . coinToRational) f) - in memberRew (Coin fHat) pool t nm diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/RewardProvenance.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/RewardProvenance.hs deleted file mode 100644 index 72a4ca23a2b..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/RewardProvenance.hs +++ /dev/null @@ -1,322 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE UndecidableInstances #-} - -module Cardano.Ledger.Shelley.RewardProvenance ( - RewardProvenance (..), - RewardProvenancePool (..), - Desirability (..), -) -where - -import Cardano.Ledger.BaseTypes (BlocksMade (..)) -import Cardano.Ledger.Binary (DecCBOR (..), EncCBOR (..)) -import Cardano.Ledger.Binary.Coders -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Crypto -import Cardano.Ledger.Keys (KeyHash (..), KeyRole (..)) -import Cardano.Ledger.PoolParams (PoolParams (..)) -import Control.DeepSeq (NFData) -import Data.Aeson (FromJSON, ToJSON) -import Data.Default.Class (Default (..)) -import Data.Map.Strict (Map) -import Data.Word (Word64) -import GHC.Generics -import NoThunks.Class (NoThunks (..)) -import Numeric.Natural (Natural) - --- instances only --- ========================================================== - --- | Provenance for an individual stake pool's reward calculation. -data RewardProvenancePool c = RewardProvenancePool - { poolBlocksP :: !Natural - -- ^ The number of blocks the pool produced. - , sigmaP :: !Rational - -- ^ The stake pool's stake share (portion of the total stake). - , sigmaAP :: !Rational - -- ^ The stake pool's active stake share (portion of the active stake). - , ownerStakeP :: !Coin - -- ^ The number of Lovelace owned by the stake pool owners. - -- If this value is not at least as large as the 'pledgeRatioP', - -- the stake pool will not earn any rewards for the given epoch. - , poolParamsP :: !(PoolParams c) - -- ^ The stake pool's registered parameters. - , pledgeRatioP :: !Rational - -- ^ The stake pool's pledge. - , maxPP :: !Coin - -- ^ The maximum number of Lovelace this stake pool can earn. - , appPerfP :: !Rational - -- ^ The stake pool's apparent performance. - -- See Section 5.5.2 of the - -- - , poolRP :: !Coin - -- ^ The total Lovelace earned by the stake pool. - , lRewardP :: !Coin - -- ^ The total Lovelace earned by the stake pool leader. - } - deriving (Eq, Generic) - -instance NoThunks (RewardProvenancePool c) - -instance NFData (RewardProvenancePool c) - -deriving instance Crypto c => FromJSON (RewardProvenancePool c) - -deriving instance Crypto c => ToJSON (RewardProvenancePool c) - -instance Crypto c => Default (RewardProvenancePool c) where - def = RewardProvenancePool 0 0 0 (Coin 0) def 0 (Coin 0) 0 (Coin 0) (Coin 0) - --- | The desirability score of a stake pool, as described --- in . --- Additionally, the hit rate estimation described in the --- is included. -data Desirability = Desirability - { desirabilityScore :: !Double - , hitRateEstimate :: !Double - } - deriving (Eq, Show, Generic) - -instance NoThunks Desirability - -instance NFData Desirability - --- | 'RewardProvenenace' captures some of the intermediate calculations when computing --- the staking reward distribution. Most of these fields are simple scalar --- values, computed from the current State, and are fixed before we start to compute --- the distribution. Two of them are aggregates computed when we compute the distribution --- ('pools' and 'desirabilities'). --- --- For more background, see "Figure 48: The Reward Calculation" and --- "Figure 51: Reward Update Creation" of the --- . --- The variable names here align with those in the specification. --- See also Section 5 of the --- -data RewardProvenance c = RewardProvenance - { spe :: !Word64 - -- ^ The number of slots per epoch. - , blocks :: !(BlocksMade c) - -- ^ A map from pool ID (the key hash of the stake pool operator's - -- verification key) to the number of blocks made in the given epoch. - , maxLL :: !Coin - -- ^ The maximum Lovelace supply. On mainnet, this value is equal to - -- 45 * 10^15 (45 billion ADA). - , deltaR1 :: !Coin - -- ^ The maximum amount of Lovelace which can be removed from the reserves - -- to be given out as rewards for the given epoch. - , deltaR2 :: !Coin - -- ^ The difference between the total Lovelace that could have been - -- distributed as rewards this epoch (which is 'r') and what was actually distributed. - , r :: !Coin - -- ^ The total Lovelace available for rewards for the given epoch, - -- equal to 'rPot' less 'deltaT1'. - , totalStake :: !Coin - -- ^ The maximum Lovelace supply ('maxLL') less the current value of the reserves. - , blocksCount :: !Integer - -- ^ The total number of blocks produced during the given epoch. - , d :: !Rational - -- ^ The decentralization parameter. - , expBlocks :: !Integer - -- ^ The number of blocks expected to be produced during the given epoch. - , eta :: !Rational - -- ^ The ratio of the number of blocks actually made versus the number - -- of blocks that were expected. - , rPot :: !Coin - -- ^ The reward pot for the given epoch, equal to 'deltaR1' plus the fee pot. - , deltaT1 :: !Coin - -- ^ The amount of Lovelace taken from the treasury for the given epoch. - , activeStake :: !Coin - -- ^ The amount of Lovelace that is delegated during the given epoch. - , pools :: - !( Map - (KeyHash 'StakePool c) - (RewardProvenancePool c) - ) - -- ^ Individual stake pool provenance. - , desirabilities :: - !(Map (KeyHash 'StakePool c) Desirability) - -- ^ A map from pool ID to the desirability score. - -- See the . - } - deriving (Eq, Generic) - -deriving instance FromJSON Desirability - -deriving instance ToJSON Desirability - -deriving instance Crypto c => FromJSON (RewardProvenance c) - -deriving instance Crypto c => ToJSON (RewardProvenance c) - -instance NoThunks (RewardProvenance c) - -instance NFData (RewardProvenance c) - -instance Default (RewardProvenance c) where - def = - RewardProvenance - 0 - (BlocksMade def) - (Coin 0) - (Coin 0) - (Coin 0) - (Coin 0) - (Coin 0) - 0 - 0 - 0 - 0 - (Coin 0) - (Coin 0) - (Coin 0) - def - def - --- ======================================================= --- Show instances - -mylines :: Int -> [String] -> String -mylines n xs = unlines (map (replicate n ' ' ++) xs) - -instance Show (RewardProvenancePool c) where - show t = - "RewardProvenancePool\n" - ++ mylines - 3 - [ "poolBlocks = " ++ show (poolBlocksP t) - , "sigma = " ++ show (sigmaP t) - , "sigmaA = " ++ show (sigmaAP t) - , "ownerStake = " ++ show (ownerStakeP t) - , "poolParams = " ++ showPoolParams (poolParamsP t) - , "pledgeRatio = " ++ show (pledgeRatioP t) - , "maxP = " ++ show (maxPP t) - , "appPerf = " ++ show (appPerfP t) - , "poolR = " ++ show (poolRP t) - , "lReward = " ++ show (lRewardP t) - ] - -showPoolParams :: PoolParams c -> String -showPoolParams x = - "PoolParams\n" - ++ mylines - 6 - [ "poolId = " ++ show (ppId x) - , "poolVrf = " ++ show (ppVrf x) - , "poolPledge = " ++ show (ppPledge x) - , "poolCost = " ++ show (ppCost x) - , "poolMargin = " ++ show (ppMargin x) - , "poolRAcnt = " ++ show (ppRewardAccount x) - , "poolOwners = " ++ show (ppOwners x) - , "poolRelays = " ++ show (ppRelays x) - , "poolMD = " ++ show (ppMetadata x) - ] - -instance Show (RewardProvenance c) where - show t = - "RewardProvenance\n" - ++ mylines - 3 - [ "spe = " ++ show (spe t) - , "blocks = " ++ show (blocks t) - , "maxLL = " ++ show (maxLL t) - , "deltaR1 = " ++ show (deltaR1 t) - , "deltaR2 = " ++ show (deltaR2 t) - , "r = " ++ show (r t) - , "totalStake = " ++ show (totalStake t) - , "blocksCount = " ++ show (blocksCount t) - , "d = " ++ show (d t) - , "expBlocks = " ++ show (expBlocks t) - , "eta = " ++ show (eta t) - , "rPot = " ++ show (rPot t) - , "deltaT1 = " ++ show (deltaT1 t) - , "activeStake = " ++ show (activeStake t) - , "pools = " ++ show (pools t) - , "desirabilities = " ++ show (desirabilities t) - ] - --- ======================================================= --- CBOR instances - -instance EncCBOR Desirability where - encCBOR (Desirability p1 p2) = - encode $ Rec Desirability !> To p1 !> To p2 - -instance DecCBOR Desirability where - decCBOR = decode $ RecD Desirability EncCBOR (RewardProvenancePool c) where - encCBOR (RewardProvenancePool p1 p2 p3 p4 p5 p6 p7 p8 p9 p10) = - encode $ - Rec RewardProvenancePool - !> To p1 - !> To p2 - !> To p3 - !> To p4 - !> To p5 - !> To p6 - !> To p7 - !> To p8 - !> To p9 - !> To p10 - -instance Crypto c => DecCBOR (RewardProvenancePool c) where - decCBOR = - decode $ - RecD RewardProvenancePool - EncCBOR (RewardProvenance c) where - encCBOR (RewardProvenance p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 p16) = - encode $ - Rec RewardProvenance - !> To p1 - !> To p2 - !> To p3 - !> To p4 - !> To p5 - !> To p6 - !> To p7 - !> To p8 - !> To p9 - !> To p10 - !> To p11 - !> To p12 - !> To p13 - !> To p14 - !> To p15 - !> To p16 - -instance Crypto c => DecCBOR (RewardProvenance c) where - decCBOR = - decode $ - RecD RewardProvenance - ), - ( EncCBOR (RewardAns c) where - encCBOR (RewardAns accum recent) = encodeListLen 2 <> encCBOR accum <> encCBOR recent - -instance Crypto c => DecCBOR (RewardAns c) where - decCBOR = decodeRecordNamed "RewardAns" (const 2) (RewardAns <$> decCBOR <*> decCBOR) - --- | The type of RewardPulser we pulse on. -type Pulser c = RewardPulser c ShelleyBase (RewardAns c) - --- ===================================== - --- | The ultiate goal of a reward update computation. --- Aggregating rewards for each staking credential. -data RewardUpdate c = RewardUpdate - { deltaT :: !DeltaCoin - , deltaR :: !DeltaCoin - , rs :: !(Map (Credential 'Staking c) (Set (Reward c))) - , deltaF :: !DeltaCoin - , nonMyopic :: !(NonMyopic c) - } - deriving (Show, Eq, Generic) - -instance NoThunks (RewardUpdate c) - -instance NFData (RewardUpdate c) - -instance Crypto c => EncCBOR (RewardUpdate c) where - encCBOR (RewardUpdate dt dr rw df nm) = - encodeListLen 5 - <> encCBOR dt - <> encCBOR (invert dr) -- TODO change Coin serialization to use integers? - <> encCBOR rw - <> encCBOR (invert df) -- TODO change Coin serialization to use integers? - <> encCBOR nm - -instance Crypto c => DecCBOR (RewardUpdate c) where - decCBOR = do - decodeRecordNamed "RewardUpdate" (const 5) $ do - dt <- decCBOR - dr <- decCBOR -- TODO change Coin serialization to use integers? - rw <- decCBOR - df <- decCBOR -- TODO change Coin serialization to use integers? - nm <- decNoShareCBOR - pure $ RewardUpdate dt (invert dr) rw (invert df) nm - -instance Crypto c => ToJSON (RewardUpdate c) where - toJSON = object . toRewardUpdatePair - toEncoding = pairs . mconcat . toRewardUpdatePair - -toRewardUpdatePair :: (KeyValue e a, Crypto c) => RewardUpdate c -> [a] -toRewardUpdatePair ru@(RewardUpdate _ _ _ _ _) = - let RewardUpdate {..} = ru - in [ "deltaT" .= deltaT - , "deltaR" .= deltaR - , "rs" .= rs - , "deltaF" .= deltaF - , "nonMyopic" .= nonMyopic - ] - -emptyRewardUpdate :: RewardUpdate c -emptyRewardUpdate = - RewardUpdate (DeltaCoin 0) (DeltaCoin 0) Map.empty (DeltaCoin 0) def - --- =================================================== - --- | To complete the reward update, we need a snap shot of the EpochState particular to this computation -data RewardSnapShot c = RewardSnapShot - { rewFees :: !Coin - , rewProtocolVersion :: !ProtVer - , rewNonMyopic :: !(NonMyopic c) - , rewDeltaR1 :: !Coin -- deltaR1 - , rewR :: !Coin -- r - , rewDeltaT1 :: !Coin -- deltaT1 - , rewLikelihoods :: !(Map (KeyHash 'StakePool c) Likelihood) - , rewLeaders :: !(Map (Credential 'Staking c) (Set (Reward c))) - } - deriving (Show, Eq, Generic) - -instance Typeable c => NoThunks (RewardSnapShot c) - -instance NFData (RewardSnapShot c) - -instance Crypto c => EncCBOR (RewardSnapShot c) where - encCBOR (RewardSnapShot fees ver nm dr1 r dt1 lhs lrs) = - encode - ( Rec RewardSnapShot - !> To fees - !> To ver - !> To nm - !> To dr1 - !> To r - !> To dt1 - !> To lhs - !> To lrs - ) - -instance Crypto c => DecCBOR (RewardSnapShot c) where - decCBOR = - decode - ( RecD RewardSnapShot - EncCBOR (FreeVars c) where - encCBOR - FreeVars - { fvDelegs - , fvAddrsRew - , fvTotalStake - , fvProtVer - , fvPoolRewardInfo - } = - encode - ( Rec FreeVars - !> To fvDelegs - !> To fvAddrsRew - !> To fvTotalStake - !> To fvProtVer - !> To fvPoolRewardInfo - ) - -instance Crypto c => DecCBOR (FreeVars c) where - decCBOR = - decode - ( RecD FreeVars - - RewardAns c -> - Credential 'Staking c -> - CompactForm Coin -> - RewardAns c -rewardStakePoolMember - FreeVars - { fvDelegs - , fvAddrsRew - , fvTotalStake - , fvPoolRewardInfo - , fvProtVer - } - inputanswer@(RewardAns accum recent) - cred - c = fromMaybe inputanswer $ do - poolID <- VMap.lookup cred fvDelegs - poolRI <- Map.lookup poolID fvPoolRewardInfo - r <- rewardOnePoolMember fvProtVer fvTotalStake fvAddrsRew poolRI cred (fromCompact c) - let ans = Reward MemberReward poolID r - -- There is always just 1 member reward, so Set.singleton is appropriate - pure $ RewardAns (Map.insert cred ans accum) (Map.insert cred (Set.singleton ans) recent) - --- ================================================================ - --- | The type of a Pulser which uses 'rewardStakePoolMember' as its underlying function. --- 'rewardStakePool' will be partially applied to the component of type --- (FreeVars c) when pulsing. Note that we use two type equality (~) constraints --- to fix both the monad 'm' and the 'ans' type, to the context where we will use --- the type as a Pulser. The type must have 'm' and 'ans' as its last two --- parameters so we can make a Pulsable instance. --- RSPL = Reward Serializable Listbased Pulser -data RewardPulser c (m :: Type -> Type) ans where - RSLP :: - (ans ~ RewardAns c, m ~ ShelleyBase) => - !Int -> - !(FreeVars c) -> - !(VMap.VMap VMap.VB VMap.VP (Credential 'Staking c) (CompactForm Coin)) -> - !ans -> - RewardPulser c m ans - --- Because of the constraints on the Constructor RSLP, there is really only one inhabited --- type: (RewardPulser c ShelleyBase (RewardAns c)) --- All of the instances are at that type. Though only the CBOR instances need make that explicit. - -clearRecent :: RewardAns c -> RewardAns c -clearRecent (RewardAns accum _) = RewardAns accum Map.empty - -instance Pulsable (RewardPulser c) where - done (RSLP _n _free zs _ans) = VMap.null zs - current (RSLP _ _ _ ans) = ans - pulseM p@(RSLP n free balance (clearRecent -> ans)) = - if VMap.null balance - then pure p - else do - let !(steps, !balance') = VMap.splitAt n balance - ans' = VMap.foldlWithKey (rewardStakePoolMember free) ans steps - pure $! RSLP n free balance' ans' - completeM (RSLP _ free balance (clearRecent -> ans)) = - pure $ VMap.foldlWithKey (rewardStakePoolMember free) ans balance - -deriving instance Eq ans => Eq (RewardPulser c m ans) - -deriving instance Show ans => Show (RewardPulser c m ans) - -instance Typeable c => NoThunks (Pulser c) where - showTypeOf _ = "RewardPulser" - wNoThunks ctxt (RSLP n free balance ans) = - allNoThunks - [ noThunks ctxt n - , noThunks ctxt free - , noThunks ctxt balance - , noThunks ctxt ans - ] - -instance NFData (Pulser c) where - rnf (RSLP n1 c1 b1 a1) = seq (rnf n1) (seq (rnf c1) (seq (rnf b1) (rnf a1))) - -instance Crypto c => EncCBOR (Pulser c) where - encCBOR (RSLP n free balance ans) = - encode (Rec RSLP !> To n !> To free !> To balance !> To ans) - -instance Crypto c => DecCBOR (Pulser c) where - decCBOR = - decode (RecD RSLP EncCBOR (PulsingRewUpdate c) where - encCBOR (Pulsing s p) = encode (Sum Pulsing 0 !> To s !> To p) - encCBOR (Complete r) = encode (Sum Complete 1 !> To r) - -instance Crypto c => DecCBOR (PulsingRewUpdate c) where - decCBOR = decode (Summands "PulsingRewUpdate" decPS) - where - decPS 0 = SumD Pulsing ToJSON (PulsingRewUpdate c) where - toJSON = \case - Pulsing _ _ -> Null - Complete ru -> toJSON ru - toEncoding = \case - Pulsing _ _ -> toEncoding Null - Complete ru -> toEncoding ru diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rewards.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rewards.hs deleted file mode 100644 index 12ae3c8caee..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rewards.hs +++ /dev/null @@ -1,371 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE RankNTypes #-} - -module Cardano.Ledger.Shelley.Rewards ( - StakeShare (..), - PoolRewardInfo (..), - mkApparentPerformance, - RewardType (..), - Reward (..), - LeaderOnlyReward (..), - leaderRewardToGeneral, - leaderRew, - memberRew, - aggregateRewards, - filterRewards, - sumRewards, - aggregateCompactRewards, - sumCompactRewards, - rewardOnePoolMember, - mkPoolRewardInfo, -) -where - -import Cardano.Ledger.BaseTypes ( - BlocksMade (..), - BoundedRational (..), - ProtVer, - UnitInterval, - ) -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - ) -import Cardano.Ledger.Binary.Coders (Decode (..), Encode (..), decode, encode, (!>), ()) -import Control.DeepSeq (NFData) -import Control.Monad (guard) -import Data.Foldable (fold, foldMap') -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Ratio ((%)) -import Data.Set (Set) -import qualified Data.Set as Set -import qualified Data.VMap as VMap -import GHC.Generics (Generic) -import Lens.Micro ((^.)) -import NoThunks.Class (NoThunks (..)) -import Numeric.Natural (Natural) -import Quiet - --- | StakeShare type -newtype StakeShare = StakeShare {unStakeShare :: Rational} - deriving (Generic, Ord, Eq, NoThunks) - deriving (Show) via Quiet StakeShare - -instance NFData StakeShare - --- | Calculate pool reward -mkApparentPerformance :: - UnitInterval -> - Rational -> - Natural -> - Natural -> - Rational -mkApparentPerformance d_ sigma blocksN blocksTotal - | sigma == 0 = 0 - | unboundRational d_ < 0.8 = beta / sigma - | otherwise = 1 - where - beta = fromIntegral blocksN / fromIntegral (max 1 blocksTotal) - --- | Calculate pool leader reward -leaderRew :: - Coin -> - PoolParams c -> - StakeShare -> - StakeShare -> - Coin -leaderRew f pool (StakeShare s) (StakeShare sigma) - | f <= c = f - | otherwise = - c - <> rationalToCoinViaFloor - (coinToRational (f <-> c) * (m' + (1 - m') * s / sigma)) - where - c = ppCost pool - m = ppMargin pool - m' = unboundRational m - --- | Calculate pool member reward -memberRew :: - Coin -> - PoolParams c -> - StakeShare -> - StakeShare -> - Coin -memberRew (Coin f') pool (StakeShare t) (StakeShare sigma) - | f' <= c = mempty - | otherwise = - rationalToCoinViaFloor $ - fromIntegral (f' - c) * (1 - m') * t / sigma - where - Coin c = ppCost pool - m = ppMargin pool - m' = unboundRational m - -sumRewards :: - forall c. - ProtVer -> - Map (Credential 'Staking c) (Set (Reward c)) -> - Coin -sumRewards protocolVersion rs = fold $ aggregateRewards protocolVersion rs - --- | Filter the reward payments to those that will actually be delivered. This --- function exists since in Shelley, a stake credential earning rewards from --- multiple sources would only receive one reward. So some of the coins are ignored, --- because of this backward compatibility issue in early protocolVersions. Note that --- both of the domains of the returned maps are a subset of the the domain of the input map 'rewards' -filterRewards :: - forall c. - ProtVer -> - Map (Credential 'Staking c) (Set (Reward c)) -> - ( Map (Credential 'Staking c) (Set (Reward c)) -- delivered - , Map (Credential 'Staking c) (Set (Reward c)) -- ignored in Shelley Era - ) -filterRewards pv rewards = - if HardForks.aggregatedRewards pv - then (rewards, Map.empty) - else - let mp = Map.map Set.deleteFindMin rewards - in (Map.map (Set.singleton . fst) mp, Map.filter (not . Set.null) $ Map.map snd mp) - --- | for each (Set (Reward c)) entry in the map, sum up the coin. In the ShelleyEra --- some of the coins are ignored (because of backward compatibility) see 'filterRewards' --- Note that domain of the returned map is a subset of the input map 'rewards' -aggregateRewards :: - forall c. - ProtVer -> - Map (Credential 'Staking c) (Set (Reward c)) -> - Map (Credential 'Staking c) Coin -aggregateRewards pv rewards = - Map.map (foldMap' rewardAmount) $ fst $ filterRewards pv rewards - --- ================================================ --- Compact Coin versions of sumRewards and aggregateCompactRewards - -sumCompactRewards :: - ProtVer -> - Map (Credential 'Staking c) (Set (Reward c)) -> - CompactForm Coin -sumCompactRewards protocolVersion rs = fold $ aggregateCompactRewards protocolVersion rs - --- | for each (Set (Reward c)) entry in the map, sum up the coin. In the ShelleyEra --- some of the coins are ignored (because of backward compatibility) see 'filterRewards' --- Note that the domain of the output map is a subset of the domain of the input rewards. -aggregateCompactRewards :: - ProtVer -> - Map (Credential 'Staking c) (Set (Reward c)) -> - Map (Credential 'Staking c) (CompactForm Coin) -aggregateCompactRewards pv rewards = - Map.map (foldMap' (compactCoinOrError . rewardAmount)) $ fst $ filterRewards pv rewards - --- We argue that the call to 'compactCoinOrError' will never return error. --- The Reward is stored in the LedgerState, and we know the sum of all Ada in the LedgerState cannot --- exceed (maxBound :: Word64), So if the sum cannot exceed it, neither can any component of the sum. --- We need a (CompactForm Coin) because the reward map is stored in the UMap, which stores rewards --- as (CompactForm Coin). And aggregateRewards is used to update that part of the UMap. --- See Cardano.Ledger.Shelley.LedgerState.IncrementalStake(applyRUpdFiltered) - --- ===================================================== - -data LeaderOnlyReward c = LeaderOnlyReward - { lRewardPool :: !(KeyHash 'StakePool c) - , lRewardAmount :: !Coin - } - deriving (Eq, Ord, Show, Generic) - -instance NoThunks (LeaderOnlyReward c) - -instance NFData (LeaderOnlyReward c) - -instance CC.Crypto c => EncCBOR (LeaderOnlyReward c) where - encCBOR (LeaderOnlyReward pool c) = encode $ Rec LeaderOnlyReward !> To pool !> To c - -instance CC.Crypto c => DecCBOR (LeaderOnlyReward c) where - decCBOR = decode $ RecD LeaderOnlyReward Reward c -leaderRewardToGeneral (LeaderOnlyReward poolId r) = Reward LeaderReward poolId r - --- | Stake Pool specific information needed to compute the rewards --- for its members. -data PoolRewardInfo c = PoolRewardInfo - { poolRelativeStake :: !StakeShare - -- ^ The stake pool's stake divided by the total stake - , poolPot :: !Coin - -- ^ The maximum rewards available for the entire pool - , poolPs :: !(PoolParams c) - -- ^ The stake pool parameters - , poolBlocks :: !Natural - -- ^ The number of blocks the stake pool produced - , poolLeaderReward :: !(LeaderOnlyReward c) - -- ^ The leader reward - } - deriving (Show, Eq, Ord, Generic) - -instance NoThunks (PoolRewardInfo c) - -instance NFData (PoolRewardInfo c) - -instance CC.Crypto c => EncCBOR (PoolRewardInfo c) where - encCBOR - (PoolRewardInfo a b c d e) = - encode $ - Rec PoolRewardInfo - !> E (encCBOR . unStakeShare) a - !> To b - !> To c - !> To d - !> To e - -instance CC.Crypto c => DecCBOR (PoolRewardInfo c) where - decCBOR = - decode - ( RecD PoolRewardInfo - decCBOR) - - Credential 'Staking c -> - Bool -notPoolOwner pps = \case - KeyHashObj hk -> hk `Set.notMember` ppOwners pps - ScriptHashObj _ -> True - --- | The stake pool member reward calculation -rewardOnePoolMember :: - -- | The protocol version - ProtVer -> - -- | The total amount of stake in the system - Coin -> - -- | The set of registered stake credentials - Set (Credential 'Staking c) -> - -- | Stake pool specific intermediate values needed - -- to compute member rewards. - PoolRewardInfo c -> - -- | The stake credential whose reward is being calculated. - Credential 'Staking c -> - -- | The stake controlled by the stake credential - -- in the previous parameter above. - Coin -> - -- | The reward for the given stake credential. - -- This could be Nothing if the credential is no longer registered, - -- if it is an owner, or if the reward is zero. - Maybe Coin -rewardOnePoolMember - pp - (Coin totalStake) - addrsRew - rewardInfo - hk - (Coin c) = - if prefilter && notPoolOwner (poolPs rewardInfo) hk && r /= Coin 0 - then Just r - else Nothing - where - prefilter = HardForks.forgoRewardPrefilter pp || hk `Set.member` addrsRew - pool = poolPs rewardInfo - sigma = poolRelativeStake rewardInfo - poolR = poolPot rewardInfo - r = memberRew poolR pool (StakeShare (c % totalStake)) sigma - --- | Calculate single stake pool specific values for the reward computation. --- --- Note that if a stake pool has made no blocks in the given epoch, it will --- get no rewards, and so we do not need to return 'PoolRewardInfo'. We do, --- however, need to return the relative stake of the pool in order to --- compute data for the stake pool ranking. Eventually we will remove --- the ranking information out of the ledger code and into a separate service, --- and at that point we can simplify this function to not care about ranking. -mkPoolRewardInfo :: - EraPParams era => - PParams era -> - Coin -> - BlocksMade (EraCrypto era) -> - Natural -> - Stake (EraCrypto era) -> - VMap.VMap VMap.VB VMap.VB (Credential 'Staking (EraCrypto era)) (KeyHash 'StakePool (EraCrypto era)) -> - Map (KeyHash 'StakePool (EraCrypto era)) Coin -> - Coin -> - Coin -> - PoolParams (EraCrypto era) -> - Either StakeShare (PoolRewardInfo (EraCrypto era)) -mkPoolRewardInfo - pp - r - blocks - blocksTotal - stake - delegs - stakePerPool - (Coin totalStake) - (Coin activeStake) - pool = case Map.lookup (ppId pool) (unBlocksMade blocks) of - -- This pool made no blocks this epoch. For the purposes of stake pool - -- ranking only, we return the relative stake of this pool so that we - -- can judge how likely it was that this pool made no blocks. - Nothing -> Left $! StakeShare sigma - -- This pool made no blocks, so we can proceed to calculate the - -- intermediate values needed for the individual reward calculations. - Just blocksN -> - let Coin pledge = ppPledge pool - pledgeRelative = pledge % totalStake - sigmaA = if activeStake == 0 then 0 else pstakeTot % activeStake - Coin maxP = - if pledge <= ostake - then maxPool' pp_a0 pp_nOpt r sigma pledgeRelative - else mempty - appPerf = mkApparentPerformance pp_d sigmaA blocksN blocksTotal - poolR = rationalToCoinViaFloor (appPerf * fromIntegral maxP) - lreward = - leaderRew - poolR - pool - (StakeShare $ if totalStake == 0 then 0 else ostake % totalStake) - (StakeShare sigma) - rewardInfo = - PoolRewardInfo - { poolRelativeStake = StakeShare sigma - , poolPot = poolR - , poolPs = pool - , poolBlocks = blocksN - , poolLeaderReward = LeaderOnlyReward (ppId pool) lreward - } - in Right $! rewardInfo - where - pp_d = pp ^. ppDG - pp_a0 = pp ^. ppA0L - pp_nOpt = pp ^. ppNOptL - Coin pstakeTot = Map.findWithDefault mempty (ppId pool) stakePerPool - accOwnerStake c o = maybe c (c <>) $ do - hk <- VMap.lookup (KeyHashObj o) delegs - guard (hk == ppId pool) - fromCompact <$> VMap.lookup (KeyHashObj o) (unStake stake) - Coin ostake = Set.foldl' accOwnerStake mempty (ppOwners pool) - sigma = if totalStake == 0 then 0 else fromIntegral pstakeTot % fromIntegral totalStake diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules.hs deleted file mode 100644 index 971e86d44ee..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules.hs +++ /dev/null @@ -1,48 +0,0 @@ -module Cardano.Ledger.Shelley.Rules ( - -- * Block - module Cardano.Ledger.Shelley.Rules.Bbody, - module Cardano.Ledger.Shelley.Rules.Deleg, - module Cardano.Ledger.Shelley.Rules.Delegs, - module Cardano.Ledger.Shelley.Rules.Delpl, - module Cardano.Ledger.Shelley.Rules.Ledger, - module Cardano.Ledger.Shelley.Rules.Ledgers, - module Cardano.Ledger.Shelley.Rules.Pool, - module Cardano.Ledger.Shelley.Rules.Ppup, - module Cardano.Ledger.Shelley.Rules.Utxo, - module Cardano.Ledger.Shelley.Rules.Utxow, - - -- * Tick - module Cardano.Ledger.Shelley.Rules.Epoch, - module Cardano.Ledger.Shelley.Rules.NewEpoch, - module Cardano.Ledger.Shelley.Rules.Rupd, - module Cardano.Ledger.Shelley.Rules.Snap, - module Cardano.Ledger.Shelley.Rules.Tick, - module Cardano.Ledger.Shelley.Rules.Upec, - module Cardano.Ledger.Shelley.Rules.Mir, - module Cardano.Ledger.Shelley.Rules.Newpp, - module Cardano.Ledger.Shelley.Rules.PoolReap, -) -where - --- Block -import Cardano.Ledger.Shelley.Rules.Bbody -import Cardano.Ledger.Shelley.Rules.Deleg -import Cardano.Ledger.Shelley.Rules.Delegs -import Cardano.Ledger.Shelley.Rules.Delpl -import Cardano.Ledger.Shelley.Rules.Ledger -import Cardano.Ledger.Shelley.Rules.Ledgers -import Cardano.Ledger.Shelley.Rules.Pool -import Cardano.Ledger.Shelley.Rules.Ppup -import Cardano.Ledger.Shelley.Rules.Utxo -import Cardano.Ledger.Shelley.Rules.Utxow - --- Tick -import Cardano.Ledger.Shelley.Rules.Epoch -import Cardano.Ledger.Shelley.Rules.Mir -import Cardano.Ledger.Shelley.Rules.NewEpoch -import Cardano.Ledger.Shelley.Rules.Newpp -import Cardano.Ledger.Shelley.Rules.PoolReap -import Cardano.Ledger.Shelley.Rules.Rupd -import Cardano.Ledger.Shelley.Rules.Snap -import Cardano.Ledger.Shelley.Rules.Tick -import Cardano.Ledger.Shelley.Rules.Upec diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Bbody.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Bbody.hs deleted file mode 100644 index 30a2ee49fb5..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Bbody.hs +++ /dev/null @@ -1,220 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Shelley.Rules.Bbody ( - ShelleyBBODY, - ShelleyBbodyState (..), - BbodyEnv (..), - ShelleyBbodyPredFailure (..), - ShelleyBbodyEvent (..), - PredicateFailure, - State, -) -where - -import Cardano.Ledger.BHeaderView (BHeaderView (..), isOverlaySlot) -import Cardano.Ledger.BaseTypes (BlocksMade, ShelleyBase, epochInfoPure) -import Cardano.Ledger.Block (Block (..)) -import Cardano.Ledger.Core -import Cardano.Ledger.Keys (DSignable, Hash, coerceKeyRole) -import Cardano.Ledger.Shelley.BlockChain (incrBlocks) -import Cardano.Ledger.Shelley.Era (ShelleyBBODY, ShelleyEra) -import Cardano.Ledger.Shelley.LedgerState (AccountState) -import Cardano.Ledger.Shelley.Rules.Deleg (ShelleyDelegPredFailure) -import Cardano.Ledger.Shelley.Rules.Delegs (ShelleyDelegsPredFailure) -import Cardano.Ledger.Shelley.Rules.Delpl (ShelleyDelplPredFailure) -import Cardano.Ledger.Shelley.Rules.Ledger (ShelleyLedgerPredFailure) -import Cardano.Ledger.Shelley.Rules.Ledgers (ShelleyLedgersEnv (..), ShelleyLedgersPredFailure) -import Cardano.Ledger.Shelley.Rules.Pool (ShelleyPoolPredFailure) -import Cardano.Ledger.Shelley.Rules.Ppup (ShelleyPpupPredFailure) -import Cardano.Ledger.Shelley.Rules.Utxo (ShelleyUtxoPredFailure) -import Cardano.Ledger.Shelley.Rules.Utxow (ShelleyUtxowPredFailure) -import Cardano.Ledger.Slot (epochInfoEpoch, epochInfoFirst) -import Control.Monad.Trans.Reader (asks) -import Control.State.Transition ( - Embed (..), - STS (..), - TRC (..), - TransitionRule, - judgmentContext, - liftSTS, - trans, - (?!), - ) -import Data.Sequence (Seq) -import qualified Data.Sequence.Strict as StrictSeq -import GHC.Generics (Generic) -import Lens.Micro ((^.)) -import NoThunks.Class (NoThunks (..)) - -data ShelleyBbodyState era - = BbodyState !(State (EraRule "LEDGERS" era)) !(BlocksMade (EraCrypto era)) - -deriving stock instance Show (State (EraRule "LEDGERS" era)) => Show (ShelleyBbodyState era) - -deriving stock instance Eq (State (EraRule "LEDGERS" era)) => Eq (ShelleyBbodyState era) - -data BbodyEnv era = BbodyEnv - { bbodyPp :: PParams era - , bbodyAccount :: AccountState - } - -data ShelleyBbodyPredFailure era - = WrongBlockBodySizeBBODY - !Int -- Actual Body Size - !Int -- Claimed Body Size in Header - | InvalidBodyHashBBODY - !(Hash (EraCrypto era) EraIndependentBlockBody) -- Actual Hash - !(Hash (EraCrypto era) EraIndependentBlockBody) -- Claimed Hash - | LedgersFailure (PredicateFailure (EraRule "LEDGERS" era)) -- Subtransition Failures - deriving (Generic) - -type instance EraRuleFailure "BBODY" (ShelleyEra c) = ShelleyBbodyPredFailure (ShelleyEra c) - -instance InjectRuleFailure "BBODY" ShelleyBbodyPredFailure (ShelleyEra c) - -instance InjectRuleFailure "BBODY" ShelleyLedgersPredFailure (ShelleyEra c) where - injectFailure = LedgersFailure - -instance InjectRuleFailure "BBODY" ShelleyLedgerPredFailure (ShelleyEra c) where - injectFailure = LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyUtxowPredFailure (ShelleyEra c) where - injectFailure = LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyUtxoPredFailure (ShelleyEra c) where - injectFailure = LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyPpupPredFailure (ShelleyEra c) where - injectFailure = LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyDelegsPredFailure (ShelleyEra c) where - injectFailure = LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyDelplPredFailure (ShelleyEra c) where - injectFailure = LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyPoolPredFailure (ShelleyEra c) where - injectFailure = LedgersFailure . injectFailure - -instance InjectRuleFailure "BBODY" ShelleyDelegPredFailure (ShelleyEra c) where - injectFailure = LedgersFailure . injectFailure - -newtype ShelleyBbodyEvent era - = LedgersEvent (Event (EraRule "LEDGERS" era)) - -deriving stock instance - ( Era era - , Show (PredicateFailure (EraRule "LEDGERS" era)) - ) => - Show (ShelleyBbodyPredFailure era) - -deriving stock instance - ( Era era - , Eq (PredicateFailure (EraRule "LEDGERS" era)) - ) => - Eq (ShelleyBbodyPredFailure era) - -instance - ( Era era - , NoThunks (PredicateFailure (EraRule "LEDGERS" era)) - ) => - NoThunks (ShelleyBbodyPredFailure era) - -instance - ( EraSegWits era - , DSignable (EraCrypto era) (Hash (EraCrypto era) EraIndependentTxBody) - , Embed (EraRule "LEDGERS" era) (ShelleyBBODY era) - , Environment (EraRule "LEDGERS" era) ~ ShelleyLedgersEnv era - , Signal (EraRule "LEDGERS" era) ~ Seq (Tx era) - ) => - STS (ShelleyBBODY era) - where - type - State (ShelleyBBODY era) = - ShelleyBbodyState era - - type - Signal (ShelleyBBODY era) = - Block (BHeaderView (EraCrypto era)) era - - type Environment (ShelleyBBODY era) = BbodyEnv era - - type BaseM (ShelleyBBODY era) = ShelleyBase - - type PredicateFailure (ShelleyBBODY era) = ShelleyBbodyPredFailure era - - type Event (ShelleyBBODY era) = ShelleyBbodyEvent era - - initialRules = [] - transitionRules = [bbodyTransition] - -bbodyTransition :: - forall era. - ( STS (ShelleyBBODY era) - , EraSegWits era - , Embed (EraRule "LEDGERS" era) (ShelleyBBODY era) - , Environment (EraRule "LEDGERS" era) ~ ShelleyLedgersEnv era - , Signal (EraRule "LEDGERS" era) ~ Seq (Tx era) - ) => - TransitionRule (ShelleyBBODY era) -bbodyTransition = - judgmentContext - >>= \( TRC - ( BbodyEnv pp account - , BbodyState ls b - , UnserialisedBlock bhview txsSeq - ) - ) -> do - let txs = fromTxSeq txsSeq - actualBodySize = bBodySize (pp ^. ppProtocolVersionL) txsSeq - actualBodyHash = hashTxSeq txsSeq - - actualBodySize - == fromIntegral (bhviewBSize bhview) - ?! WrongBlockBodySizeBBODY actualBodySize (fromIntegral $ bhviewBSize bhview) - - actualBodyHash - == bhviewBHash bhview - ?! InvalidBodyHashBBODY actualBodyHash (bhviewBHash bhview) - - ls' <- - trans @(EraRule "LEDGERS" era) $ - TRC (LedgersEnv (bhviewSlot bhview) pp account, ls, StrictSeq.fromStrict txs) - - -- Note that this may not actually be a stake pool - it could be a genesis key - -- delegate. However, this would only entail an overhead of 7 counts, and it's - -- easier than differentiating here. - let hkAsStakePool = coerceKeyRole $ bhviewID bhview - slot = bhviewSlot bhview - firstSlotNo <- liftSTS $ do - ei <- asks epochInfoPure - e <- epochInfoEpoch ei slot - epochInfoFirst ei e - let isOverlay = isOverlaySlot firstSlotNo (pp ^. ppDG) slot - pure $ BbodyState ls' (incrBlocks isOverlay hkAsStakePool b) - -instance - forall era ledgers. - ( Era era - , BaseM ledgers ~ ShelleyBase - , ledgers ~ EraRule "LEDGERS" era - , STS ledgers - , DSignable (EraCrypto era) (Hash (EraCrypto era) EraIndependentTxBody) - , Era era - ) => - Embed ledgers (ShelleyBBODY era) - where - wrapFailed = LedgersFailure - wrapEvent = LedgersEvent diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Deleg.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Deleg.hs deleted file mode 100644 index d13ff2e5ee4..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Deleg.hs +++ /dev/null @@ -1,412 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Shelley.Rules.Deleg ( - ShelleyDELEG, - DelegEnv (..), - PredicateFailure, - ShelleyDelegPredFailure (..), - ShelleyDelegEvent (..), -) -where - -import Cardano.Ledger.BaseTypes (Globals (..), ShelleyBase, epochInfoPure, invalidKey) -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - decodeRecordSum, - encodeListLen, - ) -import Cardano.Ledger.Coin (Coin (..), DeltaCoin (..), addDeltaCoin, toDeltaCoin) -import Cardano.Ledger.Credential (Credential, Ptr) -import Cardano.Ledger.Keys ( - GenDelegPair (..), - GenDelegs (..), - Hash, - KeyHash, - KeyRole (..), - VerKeyVRF, - ) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.Era (ShelleyDELEG, ShelleyEra) -import Cardano.Ledger.Shelley.HardForks as HardForks (allowMIRTransfer) -import Cardano.Ledger.Shelley.LedgerState ( - AccountState (..), - DState (..), - FutureGenDeleg (..), - InstantaneousRewards (..), - availableAfterMIR, - delegations, - dsFutureGenDelegs, - dsGenDelegs, - dsIRewards, - rewards, - ) -import Cardano.Ledger.Slot ( - Duration (..), - EpochNo (..), - SlotNo, - epochInfoEpoch, - epochInfoFirst, - (*-), - (+*), - ) -import Cardano.Ledger.UMap (RDPair (..), UView (..), compactCoinOrError, fromCompact) -import qualified Cardano.Ledger.UMap as UM -import Control.DeepSeq -import Control.Monad.Trans.Reader (asks) -import Control.SetAlgebra (eval, range, singleton, (∉), (∪), (⨃)) -import Control.State.Transition -import Data.Foldable (fold) -import Data.Group (Group (..)) -import qualified Data.Map.Strict as Map -import Data.Maybe (isJust) -import qualified Data.Set as Set -import Data.Typeable (Typeable) -import Data.Word (Word8) -import GHC.Generics (Generic) -import Lens.Micro ((^.)) -import NoThunks.Class (NoThunks (..)) - -data DelegEnv era = DelegEnv - { slotNo :: !SlotNo - , ptr_ :: !Ptr - , acnt_ :: !AccountState - , ppDE :: !(PParams era) -- The protocol parameters are only used for the HardFork mechanism - } - -deriving instance Show (PParams era) => Show (DelegEnv era) - -deriving instance Eq (PParams era) => Eq (DelegEnv era) - -data ShelleyDelegPredFailure era - = StakeKeyAlreadyRegisteredDELEG - !(Credential 'Staking (EraCrypto era)) -- Credential which is already registered - | -- | Indicates that the stake key is somehow already in the rewards map. - -- This error is now redundant with StakeKeyAlreadyRegisteredDELEG. - -- We should remove it and replace its one use with StakeKeyAlreadyRegisteredDELEG. - StakeKeyInRewardsDELEG - !(Credential 'Staking (EraCrypto era)) -- DEPRECATED, now redundant with StakeKeyAlreadyRegisteredDELEG - | StakeKeyNotRegisteredDELEG - !(Credential 'Staking (EraCrypto era)) -- Credential which is not registered - | StakeKeyNonZeroAccountBalanceDELEG - !(Maybe Coin) -- The remaining reward account balance, if it exists - | StakeDelegationImpossibleDELEG - !(Credential 'Staking (EraCrypto era)) -- Credential that is not registered - | WrongCertificateTypeDELEG -- The TxCertPool constructor should not be used by this transition - | GenesisKeyNotInMappingDELEG - !(KeyHash 'Genesis (EraCrypto era)) -- Unknown Genesis KeyHash - | DuplicateGenesisDelegateDELEG - !(KeyHash 'GenesisDelegate (EraCrypto era)) -- Keyhash which is already delegated to - | InsufficientForInstantaneousRewardsDELEG - !MIRPot -- which pot the rewards are to be drawn from, treasury or reserves - !Coin -- amount of rewards to be given out - !Coin -- size of the pot from which the lovelace is drawn - | MIRCertificateTooLateinEpochDELEG - !SlotNo -- current slot - !SlotNo -- EraRule "MIR" must be submitted before this slot - | DuplicateGenesisVRFDELEG - !(Hash (EraCrypto era) (VerKeyVRF (EraCrypto era))) -- VRF KeyHash which is already delegated to - | MIRTransferNotCurrentlyAllowed - | MIRNegativesNotCurrentlyAllowed - | InsufficientForTransferDELEG - !MIRPot -- which pot the rewards are to be drawn from, treasury or reserves - !Coin -- amount attempted to transfer - !Coin -- amount available - | MIRProducesNegativeUpdate - | MIRNegativeTransfer - !MIRPot -- which pot the rewards are to be drawn from, treasury or reserves - !Coin -- amount attempted to transfer - deriving (Show, Eq, Generic) - -type instance EraRuleFailure "DELEG" (ShelleyEra c) = ShelleyDelegPredFailure (ShelleyEra c) - -instance InjectRuleFailure "DELEG" ShelleyDelegPredFailure (ShelleyEra c) - -newtype ShelleyDelegEvent era = DelegNewEpoch EpochNo - deriving (Generic, Eq) - -instance NFData (ShelleyDelegEvent era) - -instance (EraPParams era, ShelleyEraTxCert era, ProtVerAtMost era 8) => STS (ShelleyDELEG era) where - type State (ShelleyDELEG era) = DState era - type Signal (ShelleyDELEG era) = TxCert era - type Environment (ShelleyDELEG era) = DelegEnv era - type BaseM (ShelleyDELEG era) = ShelleyBase - type PredicateFailure (ShelleyDELEG era) = ShelleyDelegPredFailure era - type Event (ShelleyDELEG era) = ShelleyDelegEvent era - - transitionRules = [delegationTransition] - -instance NoThunks (ShelleyDelegPredFailure era) - -instance NFData (ShelleyDelegPredFailure era) - -instance - (Era era, Typeable (Script era)) => - EncCBOR (ShelleyDelegPredFailure era) - where - encCBOR = \case - StakeKeyAlreadyRegisteredDELEG cred -> - encodeListLen 2 <> encCBOR (0 :: Word8) <> encCBOR cred - StakeKeyNotRegisteredDELEG cred -> - encodeListLen 2 <> encCBOR (1 :: Word8) <> encCBOR cred - StakeKeyNonZeroAccountBalanceDELEG rewardBalance -> - encodeListLen 2 <> encCBOR (2 :: Word8) <> encCBOR rewardBalance - StakeDelegationImpossibleDELEG cred -> - encodeListLen 2 <> encCBOR (3 :: Word8) <> encCBOR cred - WrongCertificateTypeDELEG -> - encodeListLen 1 <> encCBOR (4 :: Word8) - GenesisKeyNotInMappingDELEG gkh -> - encodeListLen 2 <> encCBOR (5 :: Word8) <> encCBOR gkh - DuplicateGenesisDelegateDELEG kh -> - encodeListLen 2 <> encCBOR (6 :: Word8) <> encCBOR kh - InsufficientForInstantaneousRewardsDELEG pot needed potAmount -> - encodeListLen 4 - <> encCBOR (7 :: Word8) - <> encCBOR pot - <> encCBOR needed - <> encCBOR potAmount - MIRCertificateTooLateinEpochDELEG sNow sTooLate -> - encodeListLen 3 <> encCBOR (8 :: Word8) <> encCBOR sNow <> encCBOR sTooLate - DuplicateGenesisVRFDELEG vrf -> - encodeListLen 2 <> encCBOR (9 :: Word8) <> encCBOR vrf - StakeKeyInRewardsDELEG cred -> - encodeListLen 2 <> encCBOR (10 :: Word8) <> encCBOR cred - MIRTransferNotCurrentlyAllowed -> - encodeListLen 1 <> encCBOR (11 :: Word8) - MIRNegativesNotCurrentlyAllowed -> - encodeListLen 1 <> encCBOR (12 :: Word8) - InsufficientForTransferDELEG pot needed available -> - encodeListLen 4 - <> encCBOR (13 :: Word8) - <> encCBOR pot - <> encCBOR needed - <> encCBOR available - MIRProducesNegativeUpdate -> - encodeListLen 1 <> encCBOR (14 :: Word8) - MIRNegativeTransfer pot amt -> - encodeListLen 3 - <> encCBOR (15 :: Word8) - <> encCBOR pot - <> encCBOR amt - -instance - (Era era, Typeable (Script era)) => - DecCBOR (ShelleyDelegPredFailure era) - where - decCBOR = decodeRecordSum "ShelleyDelegPredFailure" $ - \case - 0 -> do - kh <- decCBOR - pure (2, StakeKeyAlreadyRegisteredDELEG kh) - 1 -> do - kh <- decCBOR - pure (2, StakeKeyNotRegisteredDELEG kh) - 2 -> do - b <- decCBOR - pure (2, StakeKeyNonZeroAccountBalanceDELEG b) - 3 -> do - kh <- decCBOR - pure (2, StakeDelegationImpossibleDELEG kh) - 4 -> do - pure (1, WrongCertificateTypeDELEG) - 5 -> do - gkh <- decCBOR - pure (2, GenesisKeyNotInMappingDELEG gkh) - 6 -> do - kh <- decCBOR - pure (2, DuplicateGenesisDelegateDELEG kh) - 7 -> do - pot <- decCBOR - needed <- decCBOR - potAmount <- decCBOR - pure (4, InsufficientForInstantaneousRewardsDELEG pot needed potAmount) - 8 -> do - sNow <- decCBOR - sTooLate <- decCBOR - pure (3, MIRCertificateTooLateinEpochDELEG sNow sTooLate) - 9 -> do - vrf <- decCBOR - pure (2, DuplicateGenesisVRFDELEG vrf) - 10 -> do - kh <- decCBOR - pure (2, StakeKeyInRewardsDELEG kh) - 11 -> do - pure (1, MIRTransferNotCurrentlyAllowed) - 12 -> do - pure (1, MIRNegativesNotCurrentlyAllowed) - 13 -> do - pot <- decCBOR - needed <- decCBOR - available <- decCBOR - pure (4, InsufficientForTransferDELEG pot needed available) - 14 -> do - pure (1, MIRProducesNegativeUpdate) - 15 -> do - pot <- decCBOR - amt <- decCBOR - pure (3, MIRNegativeTransfer pot amt) - k -> invalidKey k - -delegationTransition :: - (ShelleyEraTxCert era, EraPParams era, ProtVerAtMost era 8) => - TransitionRule (ShelleyDELEG era) -delegationTransition = do - TRC (DelegEnv slot ptr acnt pp, ds, c) <- judgmentContext - let pv = pp ^. ppProtocolVersionL - case c of - RegTxCert hk -> do - -- (hk ∉ dom (rewards ds)) - UM.notMember hk (rewards ds) ?! StakeKeyAlreadyRegisteredDELEG hk - let u1 = dsUnified ds - deposit = compactCoinOrError (pp ^. ppKeyDepositL) - u2 = RewDepUView u1 UM.∪ (hk, RDPair (UM.CompactCoin 0) deposit) - u3 = PtrUView u2 UM.∪ (ptr, hk) - pure (ds {dsUnified = u3}) - UnRegTxCert hk -> do - -- note that pattern match is used instead of cwitness, as in the spec - -- (hk ∈ dom (rewards ds)) - UM.member hk (rewards ds) ?! StakeKeyNotRegisteredDELEG hk - let rewardCoin = rdReward <$> UM.lookup hk (rewards ds) - rewardCoin == Just mempty ?! StakeKeyNonZeroAccountBalanceDELEG (fromCompact <$> rewardCoin) - - let u0 = dsUnified ds - u1 = Set.singleton hk UM.⋪ RewDepUView u0 - u2 = Set.singleton hk UM.⋪ SPoolUView u1 - u3 = PtrUView u2 UM.⋫ Set.singleton hk - u4 = ds {dsUnified = u3} - pure u4 - DelegStakeTxCert hk dpool -> do - -- note that pattern match is used instead of cwitness and dpool, as in the spec - -- (hk ∈ dom (rewards ds)) - UM.member hk (rewards ds) ?! StakeDelegationImpossibleDELEG hk - - pure (ds {dsUnified = delegations ds UM.⨃ Map.singleton hk dpool}) - GenesisDelegTxCert gkh vkh vrf -> do - sp <- liftSTS $ asks stabilityWindow - -- note that pattern match is used instead of genesisDeleg, as in the spec - let s' = slot +* Duration sp - GenDelegs genDelegs = dsGenDelegs ds - - -- gkh ∈ dom genDelegs ?! GenesisKeyNotInMappingDELEG gkh - isJust (Map.lookup gkh genDelegs) ?! GenesisKeyNotInMappingDELEG gkh - - let cod = range $ Map.delete gkh genDelegs - fod = - range $ - Map.filterWithKey (\(FutureGenDeleg _ g) _ -> g /= gkh) (dsFutureGenDelegs ds) - currentOtherColdKeyHashes = Set.map genDelegKeyHash cod - currentOtherVrfKeyHashes = Set.map genDelegVrfHash cod - futureOtherColdKeyHashes = Set.map genDelegKeyHash fod - futureOtherVrfKeyHashes = Set.map genDelegVrfHash fod - - eval (vkh ∉ (currentOtherColdKeyHashes ∪ futureOtherColdKeyHashes)) - ?! DuplicateGenesisDelegateDELEG vkh - eval (vrf ∉ (currentOtherVrfKeyHashes ∪ futureOtherVrfKeyHashes)) - ?! DuplicateGenesisVRFDELEG vrf - - pure $ - ds - { dsFutureGenDelegs = - eval (dsFutureGenDelegs ds ⨃ singleton (FutureGenDeleg s' gkh) (GenDelegPair vkh vrf)) - } - RegPoolTxCert _ -> do - failBecause WrongCertificateTypeDELEG -- this always fails - pure ds - _ | Just (MIRCert targetPot mirTarget) <- getMirTxCert c -> do - checkSlotNotTooLate slot - case mirTarget of - StakeAddressesMIR credCoinMap -> do - let (potAmount, delta, instantaneousRewards) = - case targetPot of - ReservesMIR -> - (asReserves acnt, deltaReserves $ dsIRewards ds, iRReserves $ dsIRewards ds) - TreasuryMIR -> - (asTreasury acnt, deltaTreasury $ dsIRewards ds, iRTreasury $ dsIRewards ds) - let credCoinMap' = Map.map (\(DeltaCoin x) -> Coin x) credCoinMap - (combinedMap, available) <- - if HardForks.allowMIRTransfer pv - then do - let cm = Map.unionWith (<>) credCoinMap' instantaneousRewards - all (>= mempty) cm ?! MIRProducesNegativeUpdate - pure (cm, potAmount `addDeltaCoin` delta) - else do - all (>= mempty) credCoinMap ?! MIRNegativesNotCurrentlyAllowed - pure (Map.union credCoinMap' instantaneousRewards, potAmount) - updateReservesAndTreasury targetPot combinedMap available ds - SendToOppositePotMIR coin -> - if HardForks.allowMIRTransfer pv - then do - let available = availableAfterMIR targetPot acnt (dsIRewards ds) - coin >= mempty ?! MIRNegativeTransfer targetPot coin - coin <= available ?! InsufficientForTransferDELEG targetPot coin available - - let ir = dsIRewards ds - dr = deltaReserves ir - dt = deltaTreasury ir - case targetPot of - ReservesMIR -> - pure $ - ds - { dsIRewards = - ir - { deltaReserves = dr <> invert (toDeltaCoin coin) - , deltaTreasury = dt <> toDeltaCoin coin - } - } - TreasuryMIR -> - pure $ - ds - { dsIRewards = - ir - { deltaReserves = dr <> toDeltaCoin coin - , deltaTreasury = dt <> invert (toDeltaCoin coin) - } - } - else do - failBecause MIRTransferNotCurrentlyAllowed - pure ds - _ -> do - -- The impossible case - failBecause WrongCertificateTypeDELEG -- this always fails - pure ds - -checkSlotNotTooLate :: - (ShelleyEraTxCert era, EraPParams era, ProtVerAtMost era 8) => - SlotNo -> - Rule (ShelleyDELEG era) 'Transition () -checkSlotNotTooLate slot = do - sp <- liftSTS $ asks stabilityWindow - ei <- liftSTS $ asks epochInfoPure - EpochNo currEpoch <- liftSTS $ epochInfoEpoch ei slot - let newEpoch = EpochNo (currEpoch + 1) - tellEvent (DelegNewEpoch newEpoch) - firstSlot <- liftSTS $ epochInfoFirst ei newEpoch - let tooLate = firstSlot *- Duration sp - slot < tooLate ?! MIRCertificateTooLateinEpochDELEG slot tooLate - -updateReservesAndTreasury :: - MIRPot -> - Map.Map (Credential 'Staking (EraCrypto era)) Coin -> - Coin -> - DState era -> - Rule (ShelleyDELEG era) 'Transition (DState era) -updateReservesAndTreasury targetPot combinedMap available ds = do - let requiredForRewards = fold combinedMap - requiredForRewards - <= available - ?! InsufficientForInstantaneousRewardsDELEG targetPot requiredForRewards available - pure $ - case targetPot of - ReservesMIR -> ds {dsIRewards = (dsIRewards ds) {iRReserves = combinedMap}} - TreasuryMIR -> ds {dsIRewards = (dsIRewards ds) {iRTreasury = combinedMap}} diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Delegs.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Delegs.hs deleted file mode 100644 index e0a9b34af20..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Delegs.hs +++ /dev/null @@ -1,320 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Shelley.Rules.Delegs ( - ShelleyDELEGS, - DelegsEnv (..), - ShelleyDelegsPredFailure (..), - ShelleyDelegsEvent (..), - PredicateFailure, - validateZeroRewards, - validateStakePoolDelegateeRegistered, - drainWithdrawals, -) -where - -import Cardano.Ledger.BaseTypes ( - Network, - ShelleyBase, - TxIx, - invalidKey, - mkCertIxPartial, - networkId, - ) -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - decodeRecordSum, - encodeListLen, - ) -import Cardano.Ledger.Coin (Coin) -import Cardano.Ledger.Core -import Cardano.Ledger.Credential (Credential, Ptr (..)) -import Cardano.Ledger.Keys (KeyHash, KeyRole (..)) -import Cardano.Ledger.Rules.ValidationMode (Test) -import Cardano.Ledger.Shelley.Era (ShelleyDELEGS, ShelleyEra) -import Cardano.Ledger.Shelley.LedgerState ( - AccountState, - CertState (..), - DState (..), - PState (..), - certDState, - psStakePoolParams, - rewards, - ) -import Cardano.Ledger.Shelley.Rules.Deleg (ShelleyDelegPredFailure) -import Cardano.Ledger.Shelley.Rules.Delpl ( - DelplEnv (..), - ShelleyDELPL, - ShelleyDelplEvent, - ShelleyDelplPredFailure, - ) -import Cardano.Ledger.Shelley.Rules.Pool (ShelleyPoolPredFailure) -import Cardano.Ledger.Shelley.TxBody ( - RewardAccount (..), - ShelleyEraTxBody (..), - Withdrawals (..), - ) -import Cardano.Ledger.Shelley.TxCert (pattern DelegStakeTxCert) -import Cardano.Ledger.Slot (SlotNo) -import Cardano.Ledger.UMap (UMElem (..), UMap (..), UView (..), fromCompact) -import qualified Cardano.Ledger.UMap as UM -import Control.DeepSeq -import Control.Monad.Trans.Reader (asks) -import Control.SetAlgebra (dom, eval, (∈)) -import Control.State.Transition ( - Embed (..), - STS (..), - TRC (..), - TransitionRule, - judgmentContext, - liftSTS, - trans, - validateTrans, - ) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Maybe.Strict (StrictMaybe (..)) -import Data.Sequence (Seq (..)) -import Data.Typeable (Typeable) -import Data.Word (Word8) -import GHC.Generics (Generic) -import Lens.Micro ((^.)) -import NoThunks.Class (NoThunks (..)) -import Validation (failureUnless) - -data DelegsEnv era = DelegsEnv - { delegsSlotNo :: !SlotNo - , delegsIx :: !TxIx - , delegspp :: !(PParams era) - , delegsTx :: !(Tx era) - , delegsAccount :: !AccountState - } - -deriving stock instance - ( Show (Tx era) - , Show (PParams era) - ) => - Show (DelegsEnv era) - -data ShelleyDelegsPredFailure era - = -- | Target pool which is not registered - DelegateeNotRegisteredDELEG - !(KeyHash 'StakePool (EraCrypto era)) - | -- | Withdrawals that are missing or do not withdrawal the entire amount - WithdrawalsNotInRewardsDELEGS - !(Map (RewardAccount (EraCrypto era)) Coin) - | -- | Subtransition Failures - DelplFailure !(PredicateFailure (EraRule "DELPL" era)) - deriving (Generic) - -type instance EraRuleFailure "DELEGS" (ShelleyEra c) = ShelleyDelegsPredFailure (ShelleyEra c) - -instance InjectRuleFailure "DELEGS" ShelleyDelegsPredFailure (ShelleyEra c) - -instance InjectRuleFailure "DELEGS" ShelleyDelplPredFailure (ShelleyEra c) where - injectFailure = DelplFailure - -instance InjectRuleFailure "DELEGS" ShelleyPoolPredFailure (ShelleyEra c) where - injectFailure = DelplFailure . injectFailure - -instance InjectRuleFailure "DELEGS" ShelleyDelegPredFailure (ShelleyEra c) where - injectFailure = DelplFailure . injectFailure - -newtype ShelleyDelegsEvent era = DelplEvent (Event (EraRule "DELPL" era)) - deriving (Generic) - -deriving instance Eq (Event (EraRule "DELPL" era)) => Eq (ShelleyDelegsEvent era) - -instance NFData (Event (EraRule "DELPL" era)) => NFData (ShelleyDelegsEvent era) - -deriving stock instance - Show (PredicateFailure (EraRule "DELPL" era)) => - Show (ShelleyDelegsPredFailure era) - -deriving stock instance - Eq (PredicateFailure (EraRule "DELPL" era)) => - Eq (ShelleyDelegsPredFailure era) - -instance - NFData (PredicateFailure (EraRule "DELPL" era)) => - NFData (ShelleyDelegsPredFailure era) - -instance - ( EraTx era - , ShelleyEraTxBody era - , Embed (EraRule "DELPL" era) (ShelleyDELEGS era) - , Environment (EraRule "DELPL" era) ~ DelplEnv era - , State (EraRule "DELPL" era) ~ CertState era - , Signal (EraRule "DELPL" era) ~ TxCert era - , EraRule "DELEGS" era ~ ShelleyDELEGS era - ) => - STS (ShelleyDELEGS era) - where - type State (ShelleyDELEGS era) = CertState era - type Signal (ShelleyDELEGS era) = Seq (TxCert era) - type Environment (ShelleyDELEGS era) = DelegsEnv era - type BaseM (ShelleyDELEGS era) = ShelleyBase - type - PredicateFailure (ShelleyDELEGS era) = - ShelleyDelegsPredFailure era - type Event (ShelleyDELEGS era) = ShelleyDelegsEvent era - - transitionRules = [delegsTransition] - -instance - NoThunks (PredicateFailure (EraRule "DELPL" era)) => - NoThunks (ShelleyDelegsPredFailure era) - -instance - ( Era era - , Typeable (Script era) - , EncCBOR (PredicateFailure (EraRule "DELPL" era)) - ) => - EncCBOR (ShelleyDelegsPredFailure era) - where - encCBOR = \case - DelegateeNotRegisteredDELEG kh -> - encodeListLen 2 - <> encCBOR (0 :: Word8) - <> encCBOR kh - WithdrawalsNotInRewardsDELEGS ws -> - encodeListLen 2 - <> encCBOR (1 :: Word8) - <> encCBOR ws - (DelplFailure a) -> - encodeListLen 2 - <> encCBOR (2 :: Word8) - <> encCBOR a - -instance - ( Era era - , DecCBOR (PredicateFailure (EraRule "DELPL" era)) - , Typeable (Script era) - ) => - DecCBOR (ShelleyDelegsPredFailure era) - where - decCBOR = - decodeRecordSum "PredicateFailure" $ - \case - 0 -> do - kh <- decCBOR - pure (2, DelegateeNotRegisteredDELEG kh) - 1 -> do - ws <- decCBOR - pure (2, WithdrawalsNotInRewardsDELEGS ws) - 2 -> do - a <- decCBOR - pure (2, DelplFailure a) - k -> invalidKey k - -delegsTransition :: - forall era. - ( EraTx era - , ShelleyEraTxBody era - , Embed (EraRule "DELPL" era) (ShelleyDELEGS era) - , Environment (EraRule "DELPL" era) ~ DelplEnv era - , State (EraRule "DELPL" era) ~ CertState era - , Signal (EraRule "DELPL" era) ~ TxCert era - , EraRule "DELEGS" era ~ ShelleyDELEGS era - ) => - TransitionRule (ShelleyDELEGS era) -delegsTransition = do - TRC (env@(DelegsEnv slot txIx pp tx acnt), certState, certificates) <- judgmentContext - network <- liftSTS $ asks networkId - - case certificates of - Empty -> do - let dState = certDState certState - withdrawals = tx ^. bodyTxL . withdrawalsTxBodyL - validateTrans WithdrawalsNotInRewardsDELEGS $ - validateZeroRewards dState withdrawals network - pure $ certState {certDState = drainWithdrawals dState withdrawals} - gamma :|> txCert -> do - certState' <- - trans @(ShelleyDELEGS era) $ TRC (env, certState, gamma) - validateTrans DelegateeNotRegisteredDELEG $ - case txCert of - DelegStakeTxCert _ targetPool -> - validateStakePoolDelegateeRegistered (certPState certState') targetPool - _ -> pure () - -- It is impossible to have 65535 number of certificates in a - -- transaction, therefore partial function is justified. - let ptr = Ptr slot txIx (mkCertIxPartial $ toInteger $ length gamma) - trans @(EraRule "DELPL" era) $ - TRC (DelplEnv slot ptr pp acnt, certState', txCert) - -validateStakePoolDelegateeRegistered :: - PState era -> - KeyHash 'StakePool (EraCrypto era) -> - Test (KeyHash 'StakePool (EraCrypto era)) -validateStakePoolDelegateeRegistered pState targetPool = - let stPools = psStakePoolParams pState - in failureUnless (eval (targetPool ∈ dom stPools)) targetPool - --- @withdrawals_@ is small and @rewards@ big, better to transform the former --- than the latter into the right shape so we can call 'Map.isSubmapOf'. -isSubmapOfUM :: - forall era. - Map (RewardAccount (EraCrypto era)) Coin -> - UView (EraCrypto era) (Credential 'Staking (EraCrypto era)) UM.RDPair -> - Bool -isSubmapOfUM ws (RewDepUView (UMap tripmap _)) = Map.isSubmapOfBy f withdrawalMap tripmap - where - withdrawalMap :: Map.Map (Credential 'Staking (EraCrypto era)) Coin - withdrawalMap = Map.mapKeys (\(RewardAccount _ cred) -> cred) ws - f :: Coin -> UMElem (EraCrypto era) -> Bool - f coin1 (UMElem (SJust (UM.RDPair coin2 _)) _ _ _) = coin1 == fromCompact coin2 - f _ _ = False - -drainWithdrawals :: DState era -> Withdrawals (EraCrypto era) -> DState era -drainWithdrawals dState (Withdrawals wdrls) = - dState {dsUnified = rewards dState UM.⨃ drainedRewardAccounts} - where - drainedRewardAccounts = - Map.foldrWithKey - ( \(RewardAccount _ cred) _coin -> - Map.insert cred (UM.RDPair (UM.CompactCoin 0) (UM.CompactCoin 0)) - -- Note that the deposit (CompactCoin 0) will be ignored. - ) - Map.empty - wdrls - -validateZeroRewards :: - forall era. - DState era -> - Withdrawals (EraCrypto era) -> - Network -> - Test (Map (RewardAccount (EraCrypto era)) Coin) -validateZeroRewards dState (Withdrawals wdrls) network = do - failureUnless (isSubmapOfUM @era wdrls (rewards dState)) $ -- withdrawals_ ⊆ rewards - Map.differenceWith - (\x y -> if x /= y then Just x else Nothing) - wdrls - (Map.mapKeys (RewardAccount network) (UM.rewardMap (dsUnified dState))) - -instance - ( Era era - , STS (ShelleyDELPL era) - , PredicateFailure (EraRule "DELPL" era) ~ ShelleyDelplPredFailure era - , Event (EraRule "DELPL" era) ~ ShelleyDelplEvent era - ) => - Embed (ShelleyDELPL era) (ShelleyDELEGS era) - where - wrapFailed = DelplFailure - wrapEvent = DelplEvent diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Delpl.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Delpl.hs deleted file mode 100644 index 7ccfb845f30..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Delpl.hs +++ /dev/null @@ -1,248 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Shelley.Rules.Delpl ( - ShelleyDELPL, - DelplEnv (..), - ShelleyDelplPredFailure (..), - ShelleyDelplEvent, - PredicateFailure, - - -- * Deprecations - delPlAcnt, -) -where - -import Cardano.Ledger.BaseTypes (ShelleyBase, invalidKey) -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - decodeRecordSum, - encodeListLen, - ) -import Cardano.Ledger.Credential (Ptr) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.Era (ShelleyDELPL, ShelleyEra) -import Cardano.Ledger.Shelley.LedgerState ( - AccountState, - CertState, - DState, - PState, - certDState, - certPState, - ) -import Cardano.Ledger.Shelley.Rules.Deleg ( - DelegEnv (..), - ShelleyDELEG, - ShelleyDelegEvent, - ShelleyDelegPredFailure, - ) -import Cardano.Ledger.Shelley.Rules.Pool (PoolEnv (..), ShelleyPOOL, ShelleyPoolPredFailure) -import qualified Cardano.Ledger.Shelley.Rules.Pool as Pool -import Cardano.Ledger.Shelley.TxCert (GenesisDelegCert (..), ShelleyTxCert (..)) -import Cardano.Ledger.Slot (SlotNo) -import Control.DeepSeq -import Control.State.Transition -import Data.Typeable (Typeable) -import Data.Word (Word8) -import GHC.Generics (Generic) -import NoThunks.Class (NoThunks (..)) - -data DelplEnv era = DelplEnv - { delplSlotNo :: SlotNo - , delPlPtr :: Ptr - , delPlPp :: PParams era - , delPlAccount :: AccountState - } - -delPlAcnt :: DelplEnv era -> AccountState -delPlAcnt = delPlAccount -{-# DEPRECATED delPlAcnt "Use `delPlAccount` instead" #-} - -data ShelleyDelplPredFailure era - = PoolFailure (PredicateFailure (EraRule "POOL" era)) -- Subtransition Failures - | DelegFailure (PredicateFailure (EraRule "DELEG" era)) -- Subtransition Failures - deriving (Generic) - -type instance EraRuleFailure "DELPL" (ShelleyEra c) = ShelleyDelplPredFailure (ShelleyEra c) - -instance InjectRuleFailure "DELPL" ShelleyDelplPredFailure (ShelleyEra c) - -instance InjectRuleFailure "DELPL" ShelleyPoolPredFailure (ShelleyEra c) where - injectFailure = PoolFailure - -instance InjectRuleFailure "DELPL" ShelleyDelegPredFailure (ShelleyEra c) where - injectFailure = DelegFailure - -data ShelleyDelplEvent era - = PoolEvent (Event (EraRule "POOL" era)) - | DelegEvent (Event (EraRule "DELEG" era)) - deriving (Generic) - -instance - ( NFData (Event (EraRule "DELEG" era)) - , NFData (Event (EraRule "POOL" era)) - ) => - NFData (ShelleyDelplEvent era) - -deriving instance - ( Eq (Event (EraRule "DELEG" era)) - , Eq (Event (EraRule "POOL" era)) - ) => - Eq (ShelleyDelplEvent era) - -deriving stock instance - ( Eq (PredicateFailure (EraRule "DELEG" era)) - , Eq (PredicateFailure (EraRule "POOL" era)) - ) => - Eq (ShelleyDelplPredFailure era) - -deriving stock instance - ( Show (PredicateFailure (EraRule "DELEG" era)) - , Show (PredicateFailure (EraRule "POOL" era)) - ) => - Show (ShelleyDelplPredFailure era) - -instance - ( NoThunks (PredicateFailure (EraRule "DELEG" era)) - , NoThunks (PredicateFailure (EraRule "POOL" era)) - ) => - NoThunks (ShelleyDelplPredFailure era) - -instance - ( NFData (PredicateFailure (EraRule "DELEG" era)) - , NFData (PredicateFailure (EraRule "POOL" era)) - ) => - NFData (ShelleyDelplPredFailure era) - -instance - ( Era era - , Embed (EraRule "DELEG" era) (ShelleyDELPL era) - , Environment (EraRule "DELEG" era) ~ DelegEnv era - , State (EraRule "DELEG" era) ~ DState era - , Embed (EraRule "POOL" era) (ShelleyDELPL era) - , Environment (EraRule "POOL" era) ~ PoolEnv era - , State (EraRule "POOL" era) ~ PState era - , Signal (EraRule "DELEG" era) ~ TxCert era - , Embed (EraRule "POOL" era) (ShelleyDELPL era) - , Environment (EraRule "POOL" era) ~ PoolEnv era - , Signal (EraRule "POOL" era) ~ PoolCert (EraCrypto era) - , TxCert era ~ ShelleyTxCert era - ) => - STS (ShelleyDELPL era) - where - type State (ShelleyDELPL era) = CertState era - type Signal (ShelleyDELPL era) = TxCert era - type Environment (ShelleyDELPL era) = DelplEnv era - type BaseM (ShelleyDELPL era) = ShelleyBase - type PredicateFailure (ShelleyDELPL era) = ShelleyDelplPredFailure era - type Event (ShelleyDELPL era) = ShelleyDelplEvent era - - transitionRules = [delplTransition] - -instance - ( Era era - , EncCBOR (PredicateFailure (EraRule "POOL" era)) - , EncCBOR (PredicateFailure (EraRule "DELEG" era)) - , Typeable (Script era) - ) => - EncCBOR (ShelleyDelplPredFailure era) - where - encCBOR = \case - (PoolFailure a) -> - encodeListLen 2 - <> encCBOR (0 :: Word8) - <> encCBOR a - (DelegFailure a) -> - encodeListLen 2 - <> encCBOR (1 :: Word8) - <> encCBOR a - -instance - ( Era era - , DecCBOR (PredicateFailure (EraRule "POOL" era)) - , DecCBOR (PredicateFailure (EraRule "DELEG" era)) - , Typeable (Script era) - ) => - DecCBOR (ShelleyDelplPredFailure era) - where - decCBOR = - decodeRecordSum - "PredicateFailure (DELPL era)" - ( \case - 0 -> do - a <- decCBOR - pure (2, PoolFailure a) - 1 -> do - a <- decCBOR - pure (2, DelegFailure a) - k -> invalidKey k - ) - -delplTransition :: - forall era. - ( Embed (EraRule "DELEG" era) (ShelleyDELPL era) - , Environment (EraRule "DELEG" era) ~ DelegEnv era - , State (EraRule "DELEG" era) ~ DState era - , State (EraRule "POOL" era) ~ PState era - , Signal (EraRule "DELEG" era) ~ TxCert era - , Embed (EraRule "POOL" era) (ShelleyDELPL era) - , Environment (EraRule "POOL" era) ~ PoolEnv era - , Signal (EraRule "POOL" era) ~ PoolCert (EraCrypto era) - , TxCert era ~ ShelleyTxCert era - ) => - TransitionRule (ShelleyDELPL era) -delplTransition = do - TRC (DelplEnv slot ptr pp acnt, d, c) <- judgmentContext - case c of - ShelleyTxCertPool poolCert -> do - ps <- - trans @(EraRule "POOL" era) $ TRC (PoolEnv slot pp, certPState d, poolCert) - pure $ d {certPState = ps} - ShelleyTxCertGenesisDeleg GenesisDelegCert {} -> do - ds <- - trans @(EraRule "DELEG" era) $ TRC (DelegEnv slot ptr acnt pp, certDState d, c) - pure $ d {certDState = ds} - ShelleyTxCertDelegCert _ -> do - ds <- - trans @(EraRule "DELEG" era) $ TRC (DelegEnv slot ptr acnt pp, certDState d, c) - pure $ d {certDState = ds} - ShelleyTxCertMir _ -> do - ds <- trans @(EraRule "DELEG" era) $ TRC (DelegEnv slot ptr acnt pp, certDState d, c) - pure $ d {certDState = ds} - -instance - ( Era era - , STS (ShelleyPOOL era) - , PredicateFailure (EraRule "POOL" era) ~ ShelleyPoolPredFailure era - , Event (EraRule "POOL" era) ~ Pool.PoolEvent era - ) => - Embed (ShelleyPOOL era) (ShelleyDELPL era) - where - wrapFailed = PoolFailure - wrapEvent = PoolEvent - -instance - ( ShelleyEraTxCert era - , EraPParams era - , ProtVerAtMost era 8 - , PredicateFailure (EraRule "DELEG" era) ~ ShelleyDelegPredFailure era - , Event (EraRule "DELEG" era) ~ ShelleyDelegEvent era - ) => - Embed (ShelleyDELEG era) (ShelleyDELPL era) - where - wrapFailed = DelegFailure - wrapEvent = DelegEvent diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Epoch.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Epoch.hs deleted file mode 100644 index 71fab967ca8..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Epoch.hs +++ /dev/null @@ -1,276 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Shelley.Rules.Epoch ( - ShelleyEPOCH, - ShelleyEpochPredFailure (..), - ShelleyEpochEvent (..), - PredicateFailure, - UpecPredFailure, -) where - -import Cardano.Ledger.BaseTypes (ShelleyBase) -import Cardano.Ledger.EpochBoundary (SnapShots) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.Era (ShelleyEPOCH) -import Cardano.Ledger.Shelley.LedgerState ( - EpochState, - LedgerState, - PState (..), - UTxOState (utxosDeposited, utxosGovState), - curPParamsEpochStateL, - esAccountState, - esLState, - esLStateL, - esNonMyopic, - esSnapshots, - lsCertState, - lsUTxOState, - lsUTxOStateL, - totalObligation, - utxosGovStateL, - pattern CertState, - pattern EpochState, - ) -import Cardano.Ledger.Shelley.LedgerState.Types (prevPParamsEpochStateL) -import Cardano.Ledger.Shelley.Rewards () -import Cardano.Ledger.Shelley.Rules.PoolReap ( - ShelleyPOOLREAP, - ShelleyPoolreapEnv (..), - ShelleyPoolreapEvent, - ShelleyPoolreapPredFailure, - ShelleyPoolreapState (..), - ) -import Cardano.Ledger.Shelley.Rules.Snap ( - ShelleySNAP, - ShelleySnapPredFailure, - SnapEnv (..), - SnapEvent, - ) -import Cardano.Ledger.Shelley.Rules.Upec (ShelleyUPEC, ShelleyUpecPredFailure, UpecState (..)) -import Cardano.Ledger.Slot (EpochNo) -import Control.DeepSeq (NFData) -import Control.SetAlgebra (eval, (⨃)) -import Control.State.Transition ( - Embed (..), - STS (..), - TRC (..), - TransitionRule, - judgmentContext, - trans, - ) -import Data.Default.Class (Default) -import qualified Data.Map.Strict as Map -import Data.Void (Void) -import GHC.Generics (Generic) -import Lens.Micro -import NoThunks.Class (NoThunks (..)) - -type UpecPredFailure era = UpecPredFailurePV (ProtVerLow era) era - -type family UpecPredFailurePV pv era where - UpecPredFailurePV 2 era = ShelleyUpecPredFailure era - UpecPredFailurePV 3 era = ShelleyUpecPredFailure era - UpecPredFailurePV 4 era = ShelleyUpecPredFailure era - UpecPredFailurePV 5 era = ShelleyUpecPredFailure era - UpecPredFailurePV 6 era = ShelleyUpecPredFailure era - UpecPredFailurePV 7 era = ShelleyUpecPredFailure era - UpecPredFailurePV 8 era = ShelleyUpecPredFailure era - UpecPredFailurePV _ era = Void - -data ShelleyEpochPredFailure era - = PoolReapFailure (PredicateFailure (EraRule "POOLREAP" era)) -- Subtransition Failures - | SnapFailure (PredicateFailure (EraRule "SNAP" era)) -- Subtransition Failures - | UpecFailure (UpecPredFailure era) -- Subtransition Failures - deriving (Generic) - -deriving stock instance - ( Eq (PredicateFailure (EraRule "POOLREAP" era)) - , Eq (PredicateFailure (EraRule "SNAP" era)) - , Eq (UpecPredFailure era) - ) => - Eq (ShelleyEpochPredFailure era) - -deriving stock instance - ( Show (PredicateFailure (EraRule "POOLREAP" era)) - , Show (PredicateFailure (EraRule "SNAP" era)) - , Show (UpecPredFailure era) - ) => - Show (ShelleyEpochPredFailure era) - -instance - ( NFData (PredicateFailure (EraRule "POOLREAP" era)) - , NFData (PredicateFailure (EraRule "SNAP" era)) - , NFData (UpecPredFailure era) - ) => - NFData (ShelleyEpochPredFailure era) - -data ShelleyEpochEvent era - = PoolReapEvent (Event (EraRule "POOLREAP" era)) - | SnapEvent (Event (EraRule "SNAP" era)) - | UpecEvent (Event (EraRule "UPEC" era)) - deriving (Generic) - -deriving instance - ( Eq (Event (EraRule "POOLREAP" era)) - , Eq (Event (EraRule "SNAP" era)) - , Eq (Event (EraRule "UPEC" era)) - ) => - Eq (ShelleyEpochEvent era) - -instance - ( NFData (Event (EraRule "POOLREAP" era)) - , NFData (Event (EraRule "SNAP" era)) - , NFData (Event (EraRule "UPEC" era)) - ) => - NFData (ShelleyEpochEvent era) - -instance - ( EraTxOut era - , EraGov era - , GovState era ~ ShelleyGovState era - , Embed (EraRule "SNAP" era) (ShelleyEPOCH era) - , Environment (EraRule "SNAP" era) ~ SnapEnv era - , State (EraRule "SNAP" era) ~ SnapShots (EraCrypto era) - , Signal (EraRule "SNAP" era) ~ () - , Embed (EraRule "POOLREAP" era) (ShelleyEPOCH era) - , Environment (EraRule "POOLREAP" era) ~ ShelleyPoolreapEnv era - , State (EraRule "POOLREAP" era) ~ ShelleyPoolreapState era - , Signal (EraRule "POOLREAP" era) ~ EpochNo - , Embed (EraRule "UPEC" era) (ShelleyEPOCH era) - , Environment (EraRule "UPEC" era) ~ LedgerState era - , State (EraRule "UPEC" era) ~ UpecState era - , Signal (EraRule "UPEC" era) ~ () - , Default (PParams era) - , Eq (UpecPredFailure era) - , Show (UpecPredFailure era) - ) => - STS (ShelleyEPOCH era) - where - type State (ShelleyEPOCH era) = EpochState era - type Signal (ShelleyEPOCH era) = EpochNo - type Environment (ShelleyEPOCH era) = () - type BaseM (ShelleyEPOCH era) = ShelleyBase - type PredicateFailure (ShelleyEPOCH era) = ShelleyEpochPredFailure era - type Event (ShelleyEPOCH era) = ShelleyEpochEvent era - transitionRules = [epochTransition] - -instance - ( NoThunks (PredicateFailure (EraRule "POOLREAP" era)) - , NoThunks (PredicateFailure (EraRule "SNAP" era)) - , NoThunks (UpecPredFailure era) - ) => - NoThunks (ShelleyEpochPredFailure era) - -epochTransition :: - forall era. - ( Embed (EraRule "SNAP" era) (ShelleyEPOCH era) - , Environment (EraRule "SNAP" era) ~ SnapEnv era - , State (EraRule "SNAP" era) ~ SnapShots (EraCrypto era) - , Signal (EraRule "SNAP" era) ~ () - , Embed (EraRule "POOLREAP" era) (ShelleyEPOCH era) - , Environment (EraRule "POOLREAP" era) ~ ShelleyPoolreapEnv era - , State (EraRule "POOLREAP" era) ~ ShelleyPoolreapState era - , Signal (EraRule "POOLREAP" era) ~ EpochNo - , Embed (EraRule "UPEC" era) (ShelleyEPOCH era) - , Environment (EraRule "UPEC" era) ~ LedgerState era - , State (EraRule "UPEC" era) ~ UpecState era - , Signal (EraRule "UPEC" era) ~ () - , GovState era ~ ShelleyGovState era - , EraGov era - ) => - TransitionRule (ShelleyEPOCH era) -epochTransition = do - TRC - ( _ - , es@EpochState - { esAccountState = acnt - , esSnapshots = ss - , esLState = ls - , esNonMyopic = nm - } - , e - ) <- - judgmentContext - let pp = es ^. curPParamsEpochStateL - utxoSt = lsUTxOState ls - CertState vstate pstate dstate = lsCertState ls - ss' <- - trans @(EraRule "SNAP" era) $ TRC (SnapEnv ls pp, ss, ()) - - let PState pParams fPParams _ _ = pstate - ppp = eval (pParams ⨃ fPParams) - pstate' = - pstate - { psStakePoolParams = ppp - , psFutureStakePoolParams = Map.empty - } - PoolreapState utxoSt' acnt' dstate' pstate'' <- - trans @(EraRule "POOLREAP" era) $ - TRC (ShelleyPoolreapEnv vstate, PoolreapState utxoSt acnt dstate pstate', e) - - let adjustedCertState = CertState vstate pstate'' dstate' - ls' = ls {lsUTxOState = utxoSt', lsCertState = adjustedCertState} - - UpecState pp' ppupSt' <- - trans @(EraRule "UPEC" era) $ - TRC (ls', UpecState pp (utxosGovState utxoSt'), ()) - let utxoSt'' = utxoSt' {utxosGovState = ppupSt'} - - let - -- At the epoch boundary refunds are made, so we need to change what - -- the utxosDeposited field is. The other two places where deposits are - -- kept (dsUnified of DState and psDeposits of PState) are adjusted by - -- the rules, So we can recompute the utxosDeposited field using adjustedCertState - -- since we have the invariant that: obligationCertState dpstate == utxosDeposited utxostate - oblgNew = totalObligation adjustedCertState (utxoSt'' ^. utxosGovStateL) - utxoSt''' = utxoSt'' {utxosDeposited = oblgNew} - pure $ - EpochState acnt' ls' ss' nm - & esLStateL . lsUTxOStateL .~ utxoSt''' - & prevPParamsEpochStateL .~ pp - & curPParamsEpochStateL .~ pp' - -instance - ( EraTxOut era - , PredicateFailure (EraRule "SNAP" era) ~ ShelleySnapPredFailure era - , Event (EraRule "SNAP" era) ~ SnapEvent era - ) => - Embed (ShelleySNAP era) (ShelleyEPOCH era) - where - wrapFailed = SnapFailure - wrapEvent = SnapEvent - -instance - ( Era era - , STS (ShelleyPOOLREAP era) - , PredicateFailure (EraRule "POOLREAP" era) ~ ShelleyPoolreapPredFailure era - , Event (EraRule "POOLREAP" era) ~ ShelleyPoolreapEvent era - ) => - Embed (ShelleyPOOLREAP era) (ShelleyEPOCH era) - where - wrapFailed = PoolReapFailure - wrapEvent = PoolReapEvent - -instance - ( Era era - , STS (ShelleyUPEC era) - , UpecPredFailure era ~ ShelleyUpecPredFailure era - , Event (EraRule "UPEC" era) ~ Void - ) => - Embed (ShelleyUPEC era) (ShelleyEPOCH era) - where - wrapFailed = UpecFailure - wrapEvent = UpecEvent diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Ledger.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Ledger.hs deleted file mode 100644 index 613e2c77358..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Ledger.hs +++ /dev/null @@ -1,343 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Shelley.Rules.Ledger ( - ShelleyLEDGER, - LedgerEnv (..), - ShelleyLedgerPredFailure (..), - ShelleyLedgerEvent (..), - Event, - PredicateFailure, - epochFromSlot, - renderDepositEqualsObligationViolation, - shelleyLedgerAssertions, -) -where - -import Cardano.Ledger.BaseTypes (Globals, ShelleyBase, TxIx, epochInfoPure, invalidKey) -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - decodeRecordSum, - encodeListLen, - ) -import Cardano.Ledger.Keys (DSignable, Hash) -import Cardano.Ledger.Shelley.AdaPots (consumedTxBody, producedTxBody) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.Era (ShelleyEra, ShelleyLEDGER) -import Cardano.Ledger.Shelley.LedgerState ( - AccountState, - CertState (..), - LedgerState (..), - UTxOState (..), - utxosDepositedL, - ) -import Cardano.Ledger.Shelley.LedgerState.Types (allObligations, potEqualsObligation) -import Cardano.Ledger.Shelley.Rules.Deleg (ShelleyDelegPredFailure) -import Cardano.Ledger.Shelley.Rules.Delegs ( - DelegsEnv (..), - ShelleyDELEGS, - ShelleyDelegsEvent, - ShelleyDelegsPredFailure, - ) -import Cardano.Ledger.Shelley.Rules.Delpl (ShelleyDelplPredFailure) -import Cardano.Ledger.Shelley.Rules.Pool (ShelleyPoolPredFailure) -import Cardano.Ledger.Shelley.Rules.Ppup (ShelleyPpupPredFailure) -import Cardano.Ledger.Shelley.Rules.Reports (showTxCerts) -import Cardano.Ledger.Shelley.Rules.Utxo (ShelleyUtxoPredFailure (..), UtxoEnv (..)) -import Cardano.Ledger.Shelley.Rules.Utxow (ShelleyUTXOW, ShelleyUtxowPredFailure) -import Cardano.Ledger.Slot (EpochNo, SlotNo, epochInfoEpoch) -import Control.DeepSeq (NFData (..)) -import Control.Monad.Reader (Reader) -import Control.Monad.Trans.Reader (asks) -import Control.State.Transition ( - Assertion (PostCondition), - AssertionViolation (..), - Embed (..), - STS (..), - TRC (..), - TransitionRule, - judgmentContext, - trans, - ) -import Data.Sequence (Seq) -import qualified Data.Sequence.Strict as StrictSeq -import Data.Word (Word8) -import GHC.Generics (Generic) -import Lens.Micro -import NoThunks.Class (NoThunks (..)) - --- ======================================================== - -data LedgerEnv era = LedgerEnv - { ledgerSlotNo :: !SlotNo - , ledgerIx :: !TxIx - , ledgerPp :: !(PParams era) - , ledgerAccount :: !AccountState - } - deriving (Generic) - -deriving instance Show (PParams era) => Show (LedgerEnv era) -deriving instance Eq (PParams era) => Eq (LedgerEnv era) - -instance NFData (PParams era) => NFData (LedgerEnv era) where - rnf (LedgerEnv _slotNo _ix pp _account) = rnf pp - -data ShelleyLedgerPredFailure era - = UtxowFailure (PredicateFailure (EraRule "UTXOW" era)) -- Subtransition Failures - | DelegsFailure (PredicateFailure (EraRule "DELEGS" era)) -- Subtransition Failures - deriving (Generic) - -type instance EraRuleFailure "LEDGER" (ShelleyEra c) = ShelleyLedgerPredFailure (ShelleyEra c) - -instance InjectRuleFailure "LEDGER" ShelleyLedgerPredFailure (ShelleyEra c) - -instance InjectRuleFailure "LEDGER" ShelleyUtxowPredFailure (ShelleyEra c) where - injectFailure = UtxowFailure - -instance InjectRuleFailure "LEDGER" ShelleyUtxoPredFailure (ShelleyEra c) where - injectFailure = UtxowFailure . injectFailure - -instance InjectRuleFailure "LEDGER" ShelleyPpupPredFailure (ShelleyEra c) where - injectFailure = UtxowFailure . injectFailure - -instance InjectRuleFailure "LEDGER" ShelleyDelegsPredFailure (ShelleyEra c) where - injectFailure = DelegsFailure - -instance InjectRuleFailure "LEDGER" ShelleyDelplPredFailure (ShelleyEra c) where - injectFailure = DelegsFailure . injectFailure - -instance InjectRuleFailure "LEDGER" ShelleyPoolPredFailure (ShelleyEra c) where - injectFailure = DelegsFailure . injectFailure - -instance InjectRuleFailure "LEDGER" ShelleyDelegPredFailure (ShelleyEra c) where - injectFailure = DelegsFailure . injectFailure - -type instance EraRuleEvent "LEDGER" (ShelleyEra c) = ShelleyLedgerEvent (ShelleyEra c) - -data ShelleyLedgerEvent era - = UtxowEvent (Event (EraRule "UTXOW" era)) - | DelegsEvent (Event (EraRule "DELEGS" era)) - deriving (Generic) - -deriving instance - ( Eq (Event (EraRule "UTXOW" era)) - , Eq (Event (EraRule "DELEGS" era)) - ) => - Eq (ShelleyLedgerEvent era) - -instance - ( NFData (Event (EraRule "UTXOW" era)) - , NFData (Event (EraRule "DELEGS" era)) - ) => - NFData (ShelleyLedgerEvent era) - -deriving stock instance - ( Show (PredicateFailure (EraRule "DELEGS" era)) - , Show (PredicateFailure (EraRule "UTXOW" era)) - , Era era - ) => - Show (ShelleyLedgerPredFailure era) - -deriving stock instance - ( Eq (PredicateFailure (EraRule "DELEGS" era)) - , Eq (PredicateFailure (EraRule "UTXOW" era)) - , Era era - ) => - Eq (ShelleyLedgerPredFailure era) - -instance - ( NoThunks (PredicateFailure (EraRule "DELEGS" era)) - , NoThunks (PredicateFailure (EraRule "UTXOW" era)) - , Era era - ) => - NoThunks (ShelleyLedgerPredFailure era) - -instance - ( NFData (PredicateFailure (EraRule "DELEGS" era)) - , NFData (PredicateFailure (EraRule "UTXOW" era)) - , Era era - ) => - NFData (ShelleyLedgerPredFailure era) - -instance - ( EncCBOR (PredicateFailure (EraRule "DELEGS" era)) - , EncCBOR (PredicateFailure (EraRule "UTXOW" era)) - , Era era - ) => - EncCBOR (ShelleyLedgerPredFailure era) - where - encCBOR = \case - (UtxowFailure a) -> encodeListLen 2 <> encCBOR (0 :: Word8) <> encCBOR a - (DelegsFailure a) -> encodeListLen 2 <> encCBOR (1 :: Word8) <> encCBOR a - -instance - ( DecCBOR (PredicateFailure (EraRule "DELEGS" era)) - , DecCBOR (PredicateFailure (EraRule "UTXOW" era)) - , Era era - ) => - DecCBOR (ShelleyLedgerPredFailure era) - where - decCBOR = - decodeRecordSum "PredicateFailure (LEDGER era)" $ - \case - 0 -> do - a <- decCBOR - pure (2, UtxowFailure a) - 1 -> do - a <- decCBOR - pure (2, DelegsFailure a) - k -> invalidKey k - -epochFromSlot :: SlotNo -> Reader Globals EpochNo -epochFromSlot slot = do - ei <- asks epochInfoPure - epochInfoEpoch ei slot - -shelleyLedgerAssertions :: - ( EraGov era - , State (rule era) ~ LedgerState era - ) => - [Assertion (rule era)] -shelleyLedgerAssertions = - [ PostCondition - "Deposit pot must equal obligation (LEDGER)" - ( \(TRC (_, _, _)) - (LedgerState utxoSt dpstate) -> potEqualsObligation dpstate utxoSt - ) - ] - -instance - ( DSignable (EraCrypto era) (Hash (EraCrypto era) EraIndependentTxBody) - , EraTx era - , EraGov era - , Embed (EraRule "DELEGS" era) (ShelleyLEDGER era) - , Embed (EraRule "UTXOW" era) (ShelleyLEDGER era) - , Environment (EraRule "UTXOW" era) ~ UtxoEnv era - , State (EraRule "UTXOW" era) ~ UTxOState era - , Signal (EraRule "UTXOW" era) ~ Tx era - , Environment (EraRule "DELEGS" era) ~ DelegsEnv era - , State (EraRule "DELEGS" era) ~ CertState era - , Signal (EraRule "DELEGS" era) ~ Seq (TxCert era) - , ProtVerAtMost era 8 - ) => - STS (ShelleyLEDGER era) - where - type State (ShelleyLEDGER era) = LedgerState era - type Signal (ShelleyLEDGER era) = Tx era - type Environment (ShelleyLEDGER era) = LedgerEnv era - type BaseM (ShelleyLEDGER era) = ShelleyBase - type PredicateFailure (ShelleyLEDGER era) = ShelleyLedgerPredFailure era - type Event (ShelleyLEDGER era) = ShelleyLedgerEvent era - - initialRules = [] - transitionRules = [ledgerTransition] - - renderAssertionViolation = renderDepositEqualsObligationViolation - - assertions = shelleyLedgerAssertions - -ledgerTransition :: - forall era. - ( EraTx era - , Embed (EraRule "DELEGS" era) (ShelleyLEDGER era) - , Environment (EraRule "DELEGS" era) ~ DelegsEnv era - , State (EraRule "DELEGS" era) ~ CertState era - , Signal (EraRule "DELEGS" era) ~ Seq (TxCert era) - , Embed (EraRule "UTXOW" era) (ShelleyLEDGER era) - , Environment (EraRule "UTXOW" era) ~ UtxoEnv era - , State (EraRule "UTXOW" era) ~ UTxOState era - , Signal (EraRule "UTXOW" era) ~ Tx era - ) => - TransitionRule (ShelleyLEDGER era) -ledgerTransition = do - TRC (LedgerEnv slot txIx pp account, LedgerState utxoSt certState, tx) <- judgmentContext - certState' <- - trans @(EraRule "DELEGS" era) $ - TRC - ( DelegsEnv slot txIx pp tx account - , certState - , StrictSeq.fromStrict $ tx ^. bodyTxL . certsTxBodyL - ) - - utxoSt' <- - trans @(EraRule "UTXOW" era) $ - TRC - ( UtxoEnv slot pp certState - , utxoSt - , tx - ) - pure (LedgerState utxoSt' certState') - -instance - ( Era era - , STS (ShelleyDELEGS era) - , PredicateFailure (EraRule "DELEGS" era) ~ ShelleyDelegsPredFailure era - , Event (EraRule "DELEGS" era) ~ ShelleyDelegsEvent era - ) => - Embed (ShelleyDELEGS era) (ShelleyLEDGER era) - where - wrapFailed = DelegsFailure - wrapEvent = DelegsEvent - -instance - ( STS (ShelleyUTXOW era) - , PredicateFailure (EraRule "UTXOW" era) ~ ShelleyUtxowPredFailure era - , Event (EraRule "UTXOW" era) ~ Event (ShelleyUTXOW era) - ) => - Embed (ShelleyUTXOW era) (ShelleyLEDGER era) - where - wrapFailed = UtxowFailure - wrapEvent = UtxowEvent - --- ============================================================= - -renderDepositEqualsObligationViolation :: - ( EraTx era - , EraGov era - , Environment t ~ LedgerEnv era - , Signal t ~ Tx era - , State t ~ LedgerState era - ) => - AssertionViolation t -> - String -renderDepositEqualsObligationViolation - AssertionViolation {avSTS, avMsg, avCtx = TRC (LedgerEnv slot _ pp _, _, tx), avState} = - case avState of - Nothing -> "\nAssertionViolation " ++ avSTS ++ " " ++ avMsg ++ " (avState is Nothing)." - Just lstate -> - let certstate = lsCertState lstate - utxoSt = lsUTxOState lstate - utxo = utxosUtxo utxoSt - txb = tx ^. bodyTxL - pot = utxoSt ^. utxosDepositedL - in "\n\nAssertionViolation (" - <> avSTS - <> ")\n\n " - <> avMsg - <> "\n\nCERTS\n" - <> showTxCerts txb - <> "\n(slot,keyDeposit,poolDeposit) " - <> show (slot, pp ^. ppKeyDepositL, pp ^. ppPoolDepositL) - <> "\nThe Pot (utxosDeposited) = " - <> show pot - <> "\n" - <> show (allObligations certstate (utxosGovState utxoSt)) - <> "\nConsumed = " - <> show (consumedTxBody txb pp certstate utxo) - <> "\nProduced = " - <> show (producedTxBody txb pp certstate) diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Ledgers.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Ledgers.hs deleted file mode 100644 index d566c79e55a..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Ledgers.hs +++ /dev/null @@ -1,185 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Shelley.Rules.Ledgers ( - ShelleyLEDGERS, - ShelleyLedgersEnv (..), - ShelleyLedgersPredFailure (..), - ShelleyLedgersEvent (..), - PredicateFailure, -) -where - -import Cardano.Ledger.BaseTypes (ShelleyBase) -import Cardano.Ledger.Binary (DecCBOR (..), EncCBOR (..)) -import Cardano.Ledger.Core -import Cardano.Ledger.Keys (DSignable, Hash) -import Cardano.Ledger.Shelley.Era (ShelleyEra, ShelleyLEDGERS) -import Cardano.Ledger.Shelley.LedgerState (AccountState, LedgerState) -import Cardano.Ledger.Shelley.Rules.Deleg (ShelleyDelegPredFailure) -import Cardano.Ledger.Shelley.Rules.Delegs (ShelleyDelegsPredFailure) -import Cardano.Ledger.Shelley.Rules.Delpl (ShelleyDelplPredFailure) -import Cardano.Ledger.Shelley.Rules.Ledger ( - LedgerEnv (..), - ShelleyLEDGER, - ShelleyLedgerEvent, - ShelleyLedgerPredFailure, - ) -import Cardano.Ledger.Shelley.Rules.Pool (ShelleyPoolPredFailure) -import Cardano.Ledger.Shelley.Rules.Ppup (ShelleyPpupPredFailure) -import Cardano.Ledger.Shelley.Rules.Utxo (ShelleyUtxoPredFailure) -import Cardano.Ledger.Shelley.Rules.Utxow (ShelleyUtxowPredFailure) -import Cardano.Ledger.Slot (SlotNo) -import Control.Monad (foldM) -import Control.State.Transition ( - Embed (..), - STS (..), - TRC (..), - TransitionRule, - judgmentContext, - trans, - ) -import Data.Default.Class (Default) -import Data.Foldable (toList) -import Data.Sequence (Seq) -import GHC.Generics (Generic) -import NoThunks.Class (NoThunks (..)) - -data ShelleyLedgersEnv era = LedgersEnv - { ledgersSlotNo :: SlotNo - , ledgersPp :: PParams era - , ledgersAccount :: AccountState - } - -newtype ShelleyLedgersPredFailure era - = LedgerFailure (PredicateFailure (EraRule "LEDGER" era)) -- Subtransition Failures - deriving (Generic) - -type instance EraRuleFailure "LEDGERS" (ShelleyEra c) = ShelleyLedgersPredFailure (ShelleyEra c) - -type instance EraRuleEvent "LEDGERS" (ShelleyEra c) = ShelleyLedgersEvent (ShelleyEra c) - -instance InjectRuleFailure "LEDGERS" ShelleyLedgersPredFailure (ShelleyEra c) - -instance InjectRuleFailure "LEDGERS" ShelleyLedgerPredFailure (ShelleyEra c) where - injectFailure = LedgerFailure - -instance InjectRuleFailure "LEDGERS" ShelleyUtxowPredFailure (ShelleyEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ShelleyUtxoPredFailure (ShelleyEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ShelleyPpupPredFailure (ShelleyEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ShelleyDelegsPredFailure (ShelleyEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ShelleyDelplPredFailure (ShelleyEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ShelleyPoolPredFailure (ShelleyEra c) where - injectFailure = LedgerFailure . injectFailure - -instance InjectRuleFailure "LEDGERS" ShelleyDelegPredFailure (ShelleyEra c) where - injectFailure = LedgerFailure . injectFailure - -newtype ShelleyLedgersEvent era - = LedgerEvent (Event (EraRule "LEDGER" era)) - -deriving stock instance - ( Era era - , Show (PredicateFailure (EraRule "LEDGER" era)) - ) => - Show (ShelleyLedgersPredFailure era) - -deriving stock instance - ( Era era - , Eq (PredicateFailure (EraRule "LEDGER" era)) - ) => - Eq (ShelleyLedgersPredFailure era) - -instance - ( Era era - , NoThunks (PredicateFailure (EraRule "LEDGER" era)) - ) => - NoThunks (ShelleyLedgersPredFailure era) - -instance - ( Era era - , EncCBOR (PredicateFailure (EraRule "LEDGER" era)) - ) => - EncCBOR (ShelleyLedgersPredFailure era) - where - encCBOR (LedgerFailure e) = encCBOR e - -instance - ( Era era - , DecCBOR (PredicateFailure (EraRule "LEDGER" era)) - ) => - DecCBOR (ShelleyLedgersPredFailure era) - where - decCBOR = LedgerFailure <$> decCBOR - -instance - ( Era era - , Embed (EraRule "LEDGER" era) (ShelleyLEDGERS era) - , Environment (EraRule "LEDGER" era) ~ LedgerEnv era - , State (EraRule "LEDGER" era) ~ LedgerState era - , Signal (EraRule "LEDGER" era) ~ Tx era - , DSignable (EraCrypto era) (Hash (EraCrypto era) EraIndependentTxBody) - , Default (LedgerState era) - ) => - STS (ShelleyLEDGERS era) - where - type State (ShelleyLEDGERS era) = LedgerState era - type Signal (ShelleyLEDGERS era) = Seq (Tx era) - type Environment (ShelleyLEDGERS era) = ShelleyLedgersEnv era - type BaseM (ShelleyLEDGERS era) = ShelleyBase - type PredicateFailure (ShelleyLEDGERS era) = ShelleyLedgersPredFailure era - type Event (ShelleyLEDGERS era) = ShelleyLedgersEvent era - - transitionRules = [ledgersTransition] - -ledgersTransition :: - forall era. - ( Embed (EraRule "LEDGER" era) (ShelleyLEDGERS era) - , Environment (EraRule "LEDGER" era) ~ LedgerEnv era - , State (EraRule "LEDGER" era) ~ LedgerState era - , Signal (EraRule "LEDGER" era) ~ Tx era - ) => - TransitionRule (ShelleyLEDGERS era) -ledgersTransition = do - TRC (LedgersEnv slot pp account, ls, txwits) <- judgmentContext - foldM - ( \ !ls' (ix, tx) -> - trans @(EraRule "LEDGER" era) $ - TRC (LedgerEnv slot ix pp account, ls', tx) - ) - ls - $ zip [minBound ..] - $ toList txwits - -instance - ( Era era - , STS (ShelleyLEDGER era) - , PredicateFailure (EraRule "LEDGER" era) ~ ShelleyLedgerPredFailure era - , Event (EraRule "LEDGER" era) ~ ShelleyLedgerEvent era - ) => - Embed (ShelleyLEDGER era) (ShelleyLEDGERS era) - where - wrapFailed = LedgerFailure - wrapEvent = LedgerEvent diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Mir.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Mir.hs deleted file mode 100644 index b54ae904561..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Mir.hs +++ /dev/null @@ -1,184 +0,0 @@ -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE EmptyDataDeriving #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Shelley.Rules.Mir ( - ShelleyMIR, - PredicateFailure, - ShelleyMirPredFailure, - ShelleyMirEvent (..), - emptyInstantaneousRewards, -) -where - -import Cardano.Ledger.BaseTypes (ShelleyBase) -import Cardano.Ledger.Coin (Coin, addDeltaCoin) -import Cardano.Ledger.Era (EraCrypto) -import Cardano.Ledger.Shelley.Era (ShelleyMIR) -import Cardano.Ledger.Shelley.Governance (EraGov) -import Cardano.Ledger.Shelley.LedgerState ( - AccountState (..), - EpochState, - InstantaneousRewards (..), - RewardAccounts, - certDState, - curPParamsEpochStateL, - dsIRewards, - dsUnified, - esAccountState, - esLState, - esNonMyopic, - esSnapshots, - lsCertState, - prevPParamsEpochStateL, - rewards, - pattern EpochState, - ) -import Cardano.Ledger.UMap (compactCoinOrError) -import qualified Cardano.Ledger.UMap as UM -import Cardano.Ledger.Val ((<->)) -import Control.DeepSeq (NFData) -import Control.SetAlgebra (eval, (∪+)) -import Control.State.Transition ( - Assertion (..), - STS (..), - TRC (..), - TransitionRule, - judgmentContext, - tellEvent, - ) -import Data.Default.Class (Default) -import Data.Foldable (fold) -import qualified Data.Map.Strict as Map -import GHC.Generics (Generic) -import Lens.Micro ((&), (.~), (^.)) -import NoThunks.Class (NoThunks (..)) - -data ShelleyMirPredFailure era - deriving (Show, Generic, Eq) - -instance NFData (ShelleyMirPredFailure era) - -data ShelleyMirEvent era - = MirTransfer (InstantaneousRewards (EraCrypto era)) - | -- | We were not able to perform an MIR transfer due to insufficient funds. - -- This event gives the rewards we wanted to pay, plus the available - -- reserves and treasury. - NoMirTransfer (InstantaneousRewards (EraCrypto era)) Coin Coin - deriving (Generic) - -deriving instance Eq (ShelleyMirEvent era) - -instance NFData (ShelleyMirEvent era) - -instance NoThunks (ShelleyMirPredFailure era) - -instance - ( Default (EpochState era) - , EraGov era - ) => - STS (ShelleyMIR era) - where - type State (ShelleyMIR era) = EpochState era - type Signal (ShelleyMIR era) = () - type Environment (ShelleyMIR era) = () - type BaseM (ShelleyMIR era) = ShelleyBase - type Event (ShelleyMIR era) = ShelleyMirEvent era - type PredicateFailure (ShelleyMIR era) = ShelleyMirPredFailure era - - transitionRules = [mirTransition] - - assertions = - [ PostCondition - "MIR may not create or remove reward accounts" - ( \(TRC (_, st, _)) st' -> - let r = rewards . certDState . lsCertState . esLState - in length (r st) == length (r st') - ) - ] - -mirTransition :: - forall era. - EraGov era => - TransitionRule (ShelleyMIR era) -mirTransition = do - TRC - ( _ - , es@EpochState - { esAccountState = acnt - , esSnapshots = ss - , esLState = ls - , esNonMyopic = nm - } - , () - ) <- - judgmentContext - let pr = es ^. prevPParamsEpochStateL - pp = es ^. curPParamsEpochStateL - dpState = lsCertState ls - ds = certDState dpState - rewards' = rewards ds - reserves = asReserves acnt - treasury = asTreasury acnt - irwdR = rewards' UM.◁ iRReserves (dsIRewards ds) :: RewardAccounts (EraCrypto era) - irwdT = rewards' UM.◁ iRTreasury (dsIRewards ds) :: RewardAccounts (EraCrypto era) - totR = fold irwdR - totT = fold irwdT - availableReserves = reserves `addDeltaCoin` deltaReserves (dsIRewards ds) - availableTreasury = treasury `addDeltaCoin` deltaTreasury (dsIRewards ds) - update = eval (irwdR ∪+ irwdT) :: RewardAccounts (EraCrypto era) - - if totR <= availableReserves && totT <= availableTreasury - then do - tellEvent $ MirTransfer ((dsIRewards ds) {iRReserves = irwdR, iRTreasury = irwdT}) - pure $ - EpochState - acnt - { asReserves = availableReserves <-> totR - , asTreasury = availableTreasury <-> totT - } - ls - { lsCertState = - dpState - { certDState = - ds - { dsUnified = rewards' UM.∪+ Map.map compactCoinOrError update - , dsIRewards = emptyInstantaneousRewards - } - } - } - ss - nm - & prevPParamsEpochStateL .~ pr - & curPParamsEpochStateL .~ pp - else do - tellEvent $ - NoMirTransfer - ((dsIRewards ds) {iRReserves = irwdR, iRTreasury = irwdT}) - availableReserves - availableTreasury - pure $ - EpochState - acnt - ls - { lsCertState = - dpState - { certDState = - ds {dsIRewards = emptyInstantaneousRewards} - } - } - ss - nm - & prevPParamsEpochStateL .~ pr - & curPParamsEpochStateL .~ pp - -emptyInstantaneousRewards :: InstantaneousRewards c -emptyInstantaneousRewards = InstantaneousRewards Map.empty Map.empty mempty mempty diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/NewEpoch.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/NewEpoch.hs deleted file mode 100644 index f8bd701e124..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/NewEpoch.hs +++ /dev/null @@ -1,271 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Shelley.Rules.NewEpoch ( - ShelleyNEWEPOCH, - ShelleyNewEpochPredFailure (..), - ShelleyNewEpochEvent (..), - PredicateFailure, - updateRewards, - calculatePoolDistr, - calculatePoolDistr', -) where - -import Cardano.Ledger.BaseTypes ( - BlocksMade (BlocksMade), - ShelleyBase, - StrictMaybe (SJust, SNothing), - ) -import Cardano.Ledger.Coin (toDeltaCoin) -import Cardano.Ledger.Credential (Credential) -import Cardano.Ledger.EpochBoundary -import Cardano.Ledger.Keys (KeyRole (Staking)) -import Cardano.Ledger.PoolDistr (PoolDistr (..)) -import Cardano.Ledger.Shelley.AdaPots (AdaPots, totalAdaPotsES) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.Era (ShelleyEra, ShelleyNEWEPOCH) -import Cardano.Ledger.Shelley.LedgerState -import Cardano.Ledger.Shelley.Rewards (sumRewards) -import Cardano.Ledger.Shelley.Rules.Epoch -import Cardano.Ledger.Shelley.Rules.Mir (ShelleyMIR, ShelleyMirEvent, ShelleyMirPredFailure) -import Cardano.Ledger.Shelley.Rules.Rupd (RupdEvent (..)) -import Cardano.Ledger.Slot (EpochNo (..)) -import qualified Cardano.Ledger.Val as Val -import Control.DeepSeq (NFData) -import Control.State.Transition -import Data.Default.Class (Default, def) -import qualified Data.Map.Strict as Map -import Data.Set (Set) -import GHC.Generics (Generic) -import Lens.Micro ((^.)) -import NoThunks.Class (NoThunks (..)) - -data ShelleyNewEpochPredFailure era - = EpochFailure (PredicateFailure (EraRule "EPOCH" era)) -- Subtransition Failures - | CorruptRewardUpdate - !(RewardUpdate (EraCrypto era)) -- The reward update which violates an invariant - | MirFailure (PredicateFailure (EraRule "MIR" era)) -- Subtransition Failures - deriving (Generic) - -deriving stock instance - ( Show (PredicateFailure (EraRule "EPOCH" era)) - , Show (PredicateFailure (EraRule "MIR" era)) - ) => - Show (ShelleyNewEpochPredFailure era) - -deriving stock instance - ( Eq (PredicateFailure (EraRule "EPOCH" era)) - , Eq (PredicateFailure (EraRule "MIR" era)) - ) => - Eq (ShelleyNewEpochPredFailure era) - -instance - ( NoThunks (PredicateFailure (EraRule "EPOCH" era)) - , NoThunks (PredicateFailure (EraRule "MIR" era)) - ) => - NoThunks (ShelleyNewEpochPredFailure era) - -instance - ( NFData (PredicateFailure (EraRule "EPOCH" era)) - , NFData (PredicateFailure (EraRule "MIR" era)) - ) => - NFData (ShelleyNewEpochPredFailure era) - -data ShelleyNewEpochEvent era - = DeltaRewardEvent (Event (EraRule "RUPD" era)) - | RestrainedRewards - EpochNo - (Map.Map (Credential 'Staking (EraCrypto era)) (Set (Reward (EraCrypto era)))) - (Set (Credential 'Staking (EraCrypto era))) - | TotalRewardEvent - EpochNo - (Map.Map (Credential 'Staking (EraCrypto era)) (Set (Reward (EraCrypto era)))) - | EpochEvent (Event (EraRule "EPOCH" era)) - | MirEvent (Event (EraRule "MIR" era)) - | TotalAdaPotsEvent AdaPots - deriving (Generic) - -deriving instance - ( Eq (Event (EraRule "EPOCH" era)) - , Eq (Event (EraRule "MIR" era)) - , Eq (Event (EraRule "RUPD" era)) - ) => - Eq (ShelleyNewEpochEvent era) - -instance - ( NFData (Event (EraRule "EPOCH" era)) - , NFData (Event (EraRule "MIR" era)) - , NFData (Event (EraRule "RUPD" era)) - ) => - NFData (ShelleyNewEpochEvent era) - -type instance EraRuleEvent "NEWEPOCH" (ShelleyEra c) = ShelleyNewEpochEvent (ShelleyEra c) - -instance - ( EraTxOut era - , EraGov era - , Embed (EraRule "MIR" era) (ShelleyNEWEPOCH era) - , Embed (EraRule "EPOCH" era) (ShelleyNEWEPOCH era) - , Environment (EraRule "MIR" era) ~ () - , State (EraRule "MIR" era) ~ EpochState era - , Signal (EraRule "MIR" era) ~ () - , Event (EraRule "RUPD" era) ~ RupdEvent (EraCrypto era) - , Environment (EraRule "EPOCH" era) ~ () - , State (EraRule "EPOCH" era) ~ EpochState era - , Signal (EraRule "EPOCH" era) ~ EpochNo - , Default (EpochState era) - , Default (State (EraRule "PPUP" era)) - , Default (PParams era) - , Default (StashedAVVMAddresses era) - ) => - STS (ShelleyNEWEPOCH era) - where - type State (ShelleyNEWEPOCH era) = NewEpochState era - - type Signal (ShelleyNEWEPOCH era) = EpochNo - - type Environment (ShelleyNEWEPOCH era) = () - - type BaseM (ShelleyNEWEPOCH era) = ShelleyBase - type PredicateFailure (ShelleyNEWEPOCH era) = ShelleyNewEpochPredFailure era - type Event (ShelleyNEWEPOCH era) = ShelleyNewEpochEvent era - - initialRules = - [ pure $ - NewEpochState - (EpochNo 0) - (BlocksMade Map.empty) - (BlocksMade Map.empty) - def - SNothing - (PoolDistr Map.empty) - def - ] - - transitionRules = [newEpochTransition] - -newEpochTransition :: - forall era. - ( EraTxOut era - , EraGov era - , Embed (EraRule "MIR" era) (ShelleyNEWEPOCH era) - , Embed (EraRule "EPOCH" era) (ShelleyNEWEPOCH era) - , Environment (EraRule "MIR" era) ~ () - , State (EraRule "MIR" era) ~ EpochState era - , Signal (EraRule "MIR" era) ~ () - , Environment (EraRule "EPOCH" era) ~ () - , State (EraRule "EPOCH" era) ~ EpochState era - , Signal (EraRule "EPOCH" era) ~ EpochNo - , Default (PParams era) - , Default (StashedAVVMAddresses era) - , Event (EraRule "RUPD" era) ~ RupdEvent (EraCrypto era) - , Default (State (EraRule "PPUP" era)) - ) => - TransitionRule (ShelleyNEWEPOCH era) -newEpochTransition = do - TRC - ( _ - , src@(NewEpochState eNoL _ bcur es ru _pd _) - , eNo - ) <- - judgmentContext - if eNo /= succ eNoL - then pure src - else do - es' <- case ru of - SNothing -> pure es - SJust p@(Pulsing _ _) -> do - (ans, event) <- liftSTS (completeRupd p) - tellReward (DeltaRewardEvent (RupdEvent eNo event)) - updateRewards es eNo ans - SJust (Complete ru') -> updateRewards es eNo ru' - es'' <- trans @(EraRule "MIR" era) $ TRC ((), es', ()) - es''' <- trans @(EraRule "EPOCH" era) $ TRC ((), es'', eNo) - let adaPots = totalAdaPotsES es''' - tellEvent $ TotalAdaPotsEvent adaPots - let pd' = ssStakeMarkPoolDistr (esSnapshots es) - -- The spec sets pd' with: - -- pd' = calculatePoolDistr (ssStakeSet $ esSnapshots es'''), - -- - -- This is equivalent to: - -- pd' = ssStakeMarkPoolDistr (esSnapshots es) - -- - -- since: - -- - -- \* SNAP rotates `ssStakeMark` to `ssStakeSet`, so - -- \* the `ssStakeSet` snapshot in es''' is `ssStakeMark` in es - -- \* `ssStakeMarkPoolDistr` is computed by calling `calculatePoolDistr` - -- on the `ssStakeMark` snapshot at the previous epoch boundary. - -- \* RUPD does not alter `esSnaphots` - -- \* MIR does not alter `esSnaphots` - -- - -- This was done to memoize the per-pool stake distribution. - -- See ADR-7. - pure $ - src - { nesEL = eNo - , nesBprev = bcur - , nesBcur = BlocksMade mempty - , nesEs = es''' - , nesRu = SNothing - , nesPd = pd' - } - --- | tell a RupdEvent as a DeltaRewardEvent only if the map is non-empty -tellReward :: - Event (EraRule "RUPD" era) ~ RupdEvent (EraCrypto era) => - ShelleyNewEpochEvent era -> - Rule (ShelleyNEWEPOCH era) rtype () -tellReward (DeltaRewardEvent (RupdEvent _ m)) | Map.null m = pure () -tellReward x = tellEvent x - -instance - ( STS (ShelleyEPOCH era) - , PredicateFailure (EraRule "EPOCH" era) ~ ShelleyEpochPredFailure era - , Event (EraRule "EPOCH" era) ~ ShelleyEpochEvent era - ) => - Embed (ShelleyEPOCH era) (ShelleyNEWEPOCH era) - where - wrapFailed = EpochFailure - wrapEvent = EpochEvent - -instance - ( EraGov era - , Default (EpochState era) - , PredicateFailure (EraRule "MIR" era) ~ ShelleyMirPredFailure era - , Event (EraRule "MIR" era) ~ ShelleyMirEvent era - ) => - Embed (ShelleyMIR era) (ShelleyNEWEPOCH era) - where - wrapFailed = MirFailure - wrapEvent = MirEvent - --- =========================================== - -updateRewards :: - EraGov era => - EpochState era -> - EpochNo -> - RewardUpdate (EraCrypto era) -> - Rule (ShelleyNEWEPOCH era) 'Transition (EpochState era) -updateRewards es e ru'@(RewardUpdate dt dr rs_ df _) = do - let totRs = sumRewards (es ^. prevPParamsEpochStateL . ppProtocolVersionL) rs_ - Val.isZero (dt <> (dr <> toDeltaCoin totRs <> df)) ?! CorruptRewardUpdate ru' - let !(!es', filtered) = applyRUpdFiltered ru' es - tellEvent $ RestrainedRewards e (frShelleyIgnored filtered) (frUnregistered filtered) - -- This event (which is only generated once per epoch) must be generated even if the - -- map is empty (db-sync depends on it). - tellEvent $ TotalRewardEvent e (frRegistered filtered) - pure es' diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Newpp.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Newpp.hs deleted file mode 100644 index 69dc2a02a49..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Newpp.hs +++ /dev/null @@ -1,137 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Shelley.Rules.Newpp ( - ShelleyNEWPP, - ShelleyNewppState (..), - NewppEnv (..), - ShelleyNewppPredFailure (..), - PredicateFailure, -) where - -import Cardano.Ledger.BaseTypes (ShelleyBase) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Core -import Cardano.Ledger.Shelley.Era (ShelleyNEWPP) -import Cardano.Ledger.Shelley.Governance -import Cardano.Ledger.Shelley.LedgerState ( - CertState (..), - UTxOState (utxosDeposited), - totalObligation, - utxosGovStateL, - ) -import Cardano.Ledger.Shelley.PParams ( - ProposedPPUpdates (ProposedPPUpdates), - emptyPPPUpdates, - hasLegalProtVerUpdate, - ) -import Control.DeepSeq (NFData) -import Control.Monad (forM_) -import Control.State.Transition ( - STS (..), - TRC (..), - TransitionRule, - judgmentContext, - (?!), - ) -import Data.Default.Class (Default, def) -import GHC.Generics (Generic) -import Lens.Micro ((&), (.~), (^.)) -import NoThunks.Class (NoThunks (..)) - -data ShelleyNewppState era - = NewppState (PParams era) (ShelleyGovState era) - -data NewppEnv era = NewppEnv - { neCertState :: !(CertState era) - , neUTxOState :: !(UTxOState era) - } - -data ShelleyNewppPredFailure era - = UnexpectedDepositPot - !Coin -- The total outstanding deposits - !Coin -- The deposit pot - deriving (Show, Eq, Generic) - -instance NoThunks (ShelleyNewppPredFailure era) - -instance NFData (ShelleyNewppPredFailure era) - -instance - ( EraGov era - , GovState era ~ ShelleyGovState era - , ProtVerAtMost era 8 - ) => - STS (ShelleyNEWPP era) - where - type State (ShelleyNEWPP era) = ShelleyNewppState era - type Signal (ShelleyNEWPP era) = Maybe (PParams era) - type Environment (ShelleyNEWPP era) = NewppEnv era - type BaseM (ShelleyNEWPP era) = ShelleyBase - type PredicateFailure (ShelleyNEWPP era) = ShelleyNewppPredFailure era - transitionRules = [newPpTransition] - -instance EraPParams era => Default (ShelleyNewppState era) where - def = NewppState def def - -newPpTransition :: - forall era. - ( GovState era ~ ShelleyGovState era - , EraGov era - , ProtVerAtMost era 8 - ) => - TransitionRule (ShelleyNEWPP era) -newPpTransition = do - TRC - ( NewppEnv certState utxoState - , NewppState pp ppupState - , mppNew - ) <- - judgmentContext - let obligationCurr = - totalObligation - certState - (utxoState ^. utxosGovStateL) - - -- TODO: remove this predicate check. See #4158 - forM_ mppNew $ \_ -> - obligationCurr - == utxosDeposited utxoState - ?! UnexpectedDepositPot obligationCurr (utxosDeposited utxoState) - - case mppNew of - Just ppNew - | toInteger (ppNew ^. ppMaxTxSizeL) - + toInteger (ppNew ^. ppMaxBHSizeL) - < toInteger (ppNew ^. ppMaxBBSizeL) -> - pure $ NewppState ppNew $ updatePpup ppupState ppNew - _ -> pure $ NewppState pp $ updatePpup ppupState pp - --- | Update the protocol parameter updates by clearing out the proposals --- and making the future proposals become the new proposals, --- provided the new proposals can follow (otherwise reset them). -updatePpup :: - ( EraPParams era - , GovState era ~ ShelleyGovState era - , ProtVerAtMost era 8 - ) => - GovState era -> - PParams era -> - ShelleyGovState era -updatePpup ppupState pp = - ppupState - & proposalsL .~ ps - & futureProposalsL .~ emptyPPPUpdates - where - ProposedPPUpdates newProposals = sgsFutureProposals ppupState - ps = - if all (hasLegalProtVerUpdate pp) newProposals - then ProposedPPUpdates newProposals - else emptyPPPUpdates diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Pool.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Pool.hs deleted file mode 100644 index 4d02b5e5339..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Pool.hs +++ /dev/null @@ -1,238 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Shelley.Rules.Pool ( - ShelleyPOOL, - PoolEvent (..), - PoolEnv (..), - PredicateFailure, - ShelleyPoolPredFailure (..), -) -where - -import Cardano.Crypto.Hash.Class (sizeHash) -import Cardano.Ledger.Address (raNetwork) -import Cardano.Ledger.BaseTypes ( - Globals (..), - Network, - ShelleyBase, - addEpochInterval, - epochInfoPure, - invalidKey, - networkId, - ) -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - decodeRecordSum, - encodeListLen, - ) -import Cardano.Ledger.Coin (Coin) -import qualified Cardano.Ledger.Crypto as CC (Crypto (HASH)) -import Cardano.Ledger.Keys (KeyHash (..), KeyRole (..)) -import Cardano.Ledger.PoolParams (PoolMetadata (..), PoolParams (..)) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.Era (ShelleyEra, ShelleyPOOL) -import qualified Cardano.Ledger.Shelley.HardForks as HardForks -import Cardano.Ledger.Shelley.LedgerState (PState (..), payPoolDeposit) -import qualified Cardano.Ledger.Shelley.SoftForks as SoftForks -import Cardano.Ledger.Slot (EpochNo (..), SlotNo, epochInfoEpoch) -import Control.DeepSeq -import Control.Monad (forM_, when) -import Control.Monad.Trans.Reader (asks) -import Control.SetAlgebra (dom, eval, setSingleton, singleton, (∈), (∉), (⋪), (⨃)) -import Control.State.Transition ( - STS (..), - TRC (..), - TransitionRule, - judgmentContext, - liftSTS, - tellEvent, - (?!), - ) -import qualified Data.ByteString as BS -import Data.Kind (Type) -import Data.Word (Word8) -import GHC.Generics (Generic) -import Lens.Micro ((^.)) -import NoThunks.Class (NoThunks (..)) - -data PoolEnv era - = PoolEnv !SlotNo !(PParams era) - deriving (Generic) - -deriving instance Show (PParams era) => Show (PoolEnv era) - -deriving instance Eq (PParams era) => Eq (PoolEnv era) - -data ShelleyPoolPredFailure era - = StakePoolNotRegisteredOnKeyPOOL - !(KeyHash 'StakePool (EraCrypto era)) -- KeyHash which cannot be retired since it is not registered - | StakePoolRetirementWrongEpochPOOL - !EpochNo -- Current Epoch - !EpochNo -- The epoch listed in the Pool Retirement Certificate - !EpochNo -- The first epoch that is too far out for retirement - | StakePoolCostTooLowPOOL - !Coin -- The stake pool cost listed in the Pool Registration Certificate - !Coin -- The minimum stake pool cost listed in the protocol parameters - | WrongNetworkPOOL - !Network -- Actual Network ID - !Network -- Network ID listed in Pool Registration Certificate - !(KeyHash 'StakePool (EraCrypto era)) -- Stake Pool ID - | PoolMedataHashTooBig - !(KeyHash 'StakePool (EraCrypto era)) -- Stake Pool ID - !Int -- Size of the metadata hash - deriving (Eq, Show, Generic) - -type instance EraRuleFailure "POOL" (ShelleyEra c) = ShelleyPoolPredFailure (ShelleyEra c) - -instance InjectRuleFailure "POOL" ShelleyPoolPredFailure (ShelleyEra c) - -instance NoThunks (ShelleyPoolPredFailure era) - -instance NFData (ShelleyPoolPredFailure era) - -instance (ShelleyEraTxCert era, EraPParams era) => STS (ShelleyPOOL era) where - type State (ShelleyPOOL era) = PState era - - type Signal (ShelleyPOOL era) = PoolCert (EraCrypto era) - - type Environment (ShelleyPOOL era) = PoolEnv era - - type BaseM (ShelleyPOOL era) = ShelleyBase - type PredicateFailure (ShelleyPOOL era) = ShelleyPoolPredFailure era - type Event (ShelleyPOOL era) = PoolEvent era - - transitionRules = [poolDelegationTransition] - -data PoolEvent era - = RegisterPool (KeyHash 'StakePool (EraCrypto era)) - | ReregisterPool (KeyHash 'StakePool (EraCrypto era)) - deriving (Generic, Eq) - -instance NFData (PoolEvent era) - -instance Era era => EncCBOR (ShelleyPoolPredFailure era) where - encCBOR = \case - StakePoolNotRegisteredOnKeyPOOL kh -> - encodeListLen 2 <> encCBOR (0 :: Word8) <> encCBOR kh - StakePoolRetirementWrongEpochPOOL ce e em -> - encodeListLen 4 <> encCBOR (1 :: Word8) <> encCBOR ce <> encCBOR e <> encCBOR em - StakePoolCostTooLowPOOL pc mc -> - encodeListLen 3 <> encCBOR (3 :: Word8) <> encCBOR pc <> encCBOR mc - WrongNetworkPOOL a b c -> - encodeListLen 4 <> encCBOR (4 :: Word8) <> encCBOR a <> encCBOR b <> encCBOR c - PoolMedataHashTooBig a b -> - encodeListLen 3 <> encCBOR (5 :: Word8) <> encCBOR a <> encCBOR b - -instance Era era => DecCBOR (ShelleyPoolPredFailure era) where - decCBOR = decodeRecordSum "PredicateFailure (POOL era)" $ - \case - 0 -> do - kh <- decCBOR - pure (2, StakePoolNotRegisteredOnKeyPOOL kh) - 1 -> do - ce <- decCBOR - e <- decCBOR - em <- decCBOR - pure (4, StakePoolRetirementWrongEpochPOOL ce e em) - 2 -> fail "WrongCertificateTypePOOL has been removed as impossible case" - 3 -> do - pc <- decCBOR - mc <- decCBOR - pure (3, StakePoolCostTooLowPOOL pc mc) - 4 -> do - actualNetID <- decCBOR - suppliedNetID <- decCBOR - poolID <- decCBOR - pure (4, WrongNetworkPOOL actualNetID suppliedNetID poolID) - 5 -> do - poolID <- decCBOR - s <- decCBOR - pure (3, PoolMedataHashTooBig poolID s) - k -> invalidKey k - -poolDelegationTransition :: - forall (ledger :: Type -> Type) era. - ( EraPParams era - , Signal (ledger era) ~ PoolCert (EraCrypto era) - , Environment (ledger era) ~ PoolEnv era - , State (ledger era) ~ PState era - , STS (ledger era) - , Event (ledger era) ~ PoolEvent era - , BaseM (ledger era) ~ ShelleyBase - , PredicateFailure (ledger era) ~ ShelleyPoolPredFailure era - ) => - TransitionRule (ledger era) -poolDelegationTransition = do - TRC - ( PoolEnv slot pp - , ps@PState {psStakePoolParams, psFutureStakePoolParams, psRetiring} - , poolCert - ) <- - judgmentContext - case poolCert of - RegPool poolParams@PoolParams {ppId, ppRewardAccount, ppMetadata, ppCost} -> do - let pv = pp ^. ppProtocolVersionL - when (HardForks.validatePoolRewardAccountNetID pv) $ do - actualNetID <- liftSTS $ asks networkId - let suppliedNetID = raNetwork ppRewardAccount - actualNetID == suppliedNetID ?! WrongNetworkPOOL actualNetID suppliedNetID ppId - - when (SoftForks.restrictPoolMetadataHash pv) $ - forM_ ppMetadata $ \pmd -> - let s = BS.length (pmHash pmd) - in s - <= fromIntegral (sizeHash ([] @(CC.HASH (EraCrypto era)))) - ?! PoolMedataHashTooBig ppId s - - let minPoolCost = pp ^. ppMinPoolCostL - ppCost >= minPoolCost ?! StakePoolCostTooLowPOOL ppCost minPoolCost - - if eval (ppId ∉ dom psStakePoolParams) - then do - -- register new, Pool-Reg - tellEvent $ RegisterPool ppId - pure $ - payPoolDeposit ppId pp $ - ps {psStakePoolParams = eval (psStakePoolParams ⨃ singleton ppId poolParams)} - else do - tellEvent $ ReregisterPool ppId - -- hk is already registered, so we want to reregister it. That means adding it - -- to the Future pool params (if it is not there already), and overriding the - -- range with the new 'poolParam', if it is (using ⨃ ). We must also unretire - -- it, if it has been scheduled for retirement. The deposit does not - -- change. One pays the deposit just once. Only if it is fully retired - -- (i.e. it's deposit has been refunded, and it has been removed from the - -- registered pools). does it need to pay a new deposit (at the current deposit - -- amount). But of course, if that has happened, we cannot be in this branch of - -- the if statement. - pure $ - ps - { psFutureStakePoolParams = eval (psFutureStakePoolParams ⨃ singleton ppId poolParams) - , psRetiring = eval (setSingleton ppId ⋪ psRetiring) - } - RetirePool hk e -> do - eval (hk ∈ dom psStakePoolParams) ?! StakePoolNotRegisteredOnKeyPOOL hk - cepoch <- liftSTS $ do - ei <- asks epochInfoPure - epochInfoEpoch ei slot - let maxEpoch = pp ^. ppEMaxL - (cepoch < e && e <= addEpochInterval cepoch maxEpoch) - ?! StakePoolRetirementWrongEpochPOOL cepoch e (addEpochInterval cepoch maxEpoch) - -- We just schedule it for retirement. When it is retired we refund the deposit (see POOLREAP) - pure $ ps {psRetiring = eval (psRetiring ⨃ singleton hk e)} diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/PoolReap.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/PoolReap.hs deleted file mode 100644 index f35d4059af1..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/PoolReap.hs +++ /dev/null @@ -1,234 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE EmptyDataDeriving #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Shelley.Rules.PoolReap ( - ShelleyPOOLREAP, - ShelleyPoolreapEvent (..), - ShelleyPoolreapState (..), - ShelleyPoolreapEnv (..), - PredicateFailure, - ShelleyPoolreapPredFailure, - - -- * Deprecations - prAcnt, -) -where - -import Cardano.Ledger.Address (RewardAccount, raCredential) -import Cardano.Ledger.BaseTypes (ShelleyBase) -import Cardano.Ledger.CertState (VState) -import Cardano.Ledger.Coin (Coin) -import Cardano.Ledger.Core -import Cardano.Ledger.Credential (Credential) -import Cardano.Ledger.Keys (KeyHash, KeyRole (StakePool, Staking)) -import Cardano.Ledger.PoolParams (ppRewardAccount) -import Cardano.Ledger.Shelley.Era (ShelleyEra, ShelleyPOOLREAP) -import Cardano.Ledger.Shelley.Governance (EraGov) -import Cardano.Ledger.Shelley.LedgerState ( - AccountState (..), - CertState (..), - DState (..), - PState (..), - UTxOState (..), - allObligations, - rewards, - utxosGovStateL, - ) -import Cardano.Ledger.Shelley.LedgerState.Types (potEqualsObligation) -import Cardano.Ledger.Slot (EpochNo (..)) -import Cardano.Ledger.UMap (UView (RewDepUView, SPoolUView), compactCoinOrError) -import qualified Cardano.Ledger.UMap as UM -import Cardano.Ledger.Val ((<+>), (<->)) -import Control.DeepSeq (NFData) -import Control.SetAlgebra (dom, eval, setSingleton, (⋪), (▷), (◁)) -import Control.State.Transition ( - Assertion (..), - AssertionViolation (..), - STS (..), - TRC (..), - TransitionRule, - judgmentContext, - tellEvent, - ) -import Data.Default.Class (Default, def) -import Data.Foldable (fold) -import qualified Data.Map.Strict as Map -import Data.Set (Set) -import qualified Data.Set as Set (member) -import GHC.Generics (Generic) -import Lens.Micro -import NoThunks.Class (NoThunks (..)) - -data ShelleyPoolreapState era = PoolreapState - { prUTxOSt :: UTxOState era - , prAccountState :: AccountState - , prDState :: DState era - , prPState :: PState era - } - -prAcnt :: ShelleyPoolreapState era -> AccountState -prAcnt = prAccountState -{-# DEPRECATED prAcnt "Use `prAccountState` instead" #-} - -newtype ShelleyPoolreapEnv era = ShelleyPoolreapEnv - { speVState :: VState era - -- ^ This enviroment field is only needed for assertions. - } - -deriving stock instance Eq (PParams era) => Eq (ShelleyPoolreapEnv era) - -deriving stock instance Show (PParams era) => Show (ShelleyPoolreapEnv era) - -deriving stock instance Show (UTxOState era) => Show (ShelleyPoolreapState era) - -data ShelleyPoolreapPredFailure era -- No predicate failures - deriving (Show, Eq, Generic) - -instance NFData (ShelleyPoolreapPredFailure era) - -data ShelleyPoolreapEvent era = RetiredPools - { refundPools :: - Map.Map (Credential 'Staking (EraCrypto era)) (Map.Map (KeyHash 'StakePool (EraCrypto era)) Coin) - , unclaimedPools :: - Map.Map (Credential 'Staking (EraCrypto era)) (Map.Map (KeyHash 'StakePool (EraCrypto era)) Coin) - , epochNo :: EpochNo - } - deriving (Generic) - -deriving instance Eq (ShelleyPoolreapEvent era) - -instance NFData (ShelleyPoolreapEvent era) - -instance NoThunks (ShelleyPoolreapPredFailure era) - -instance Default (UTxOState era) => Default (ShelleyPoolreapState era) where - def = PoolreapState def def def def - -type instance EraRuleEvent "POOLREAP" (ShelleyEra c) = ShelleyPoolreapEvent (ShelleyEra c) - -instance - ( Default (ShelleyPoolreapState era) - , EraPParams era - , EraGov era - ) => - STS (ShelleyPOOLREAP era) - where - type State (ShelleyPOOLREAP era) = ShelleyPoolreapState era - type Signal (ShelleyPOOLREAP era) = EpochNo - type Environment (ShelleyPOOLREAP era) = ShelleyPoolreapEnv era - type BaseM (ShelleyPOOLREAP era) = ShelleyBase - type PredicateFailure (ShelleyPOOLREAP era) = ShelleyPoolreapPredFailure era - type Event (ShelleyPOOLREAP era) = ShelleyPoolreapEvent era - transitionRules = [poolReapTransition] - - renderAssertionViolation = renderPoolReapViolation - assertions = - [ PostCondition - "Deposit pot must equal obligation (PoolReap)" - ( \(TRC (env, _, _)) st -> - potEqualsObligation - (CertState (speVState env) (prPState st) (prDState st)) - (prUTxOSt st) - ) - , PostCondition - "PoolReap may not create or remove reward accounts" - ( \(TRC (_, st, _)) st' -> - let r = rewards . prDState - in length (r st) == length (r st') - ) - ] - -poolReapTransition :: forall era. TransitionRule (ShelleyPOOLREAP era) -poolReapTransition = do - TRC (_, PoolreapState us a ds ps, e) <- judgmentContext - - let - -- The set of pools retiring this epoch - retired :: Set (KeyHash 'StakePool (EraCrypto era)) - retired = eval (dom (psRetiring ps ▷ setSingleton e)) - -- The Map of pools (retiring this epoch) to their deposits - retiringDeposits, remainingDeposits :: Map.Map (KeyHash 'StakePool (EraCrypto era)) Coin - (retiringDeposits, remainingDeposits) = - Map.partitionWithKey (\k _ -> Set.member k retired) (psDeposits ps) - rewardAccounts :: Map.Map (KeyHash 'StakePool (EraCrypto era)) (RewardAccount (EraCrypto era)) - rewardAccounts = Map.map ppRewardAccount $ eval (retired ◁ psStakePoolParams ps) - rewardAccounts_ :: - Map.Map (KeyHash 'StakePool (EraCrypto era)) (RewardAccount (EraCrypto era), Coin) - rewardAccounts_ = Map.intersectionWith (,) rewardAccounts retiringDeposits - rewardAccounts' :: Map.Map (RewardAccount (EraCrypto era)) Coin - rewardAccounts' = - Map.fromListWith (<+>) - . Map.elems - $ rewardAccounts_ - refunds :: Map.Map (Credential 'Staking (EraCrypto era)) Coin - mRefunds :: Map.Map (Credential 'Staking (EraCrypto era)) Coin - (refunds, mRefunds) = - Map.partitionWithKey - (\k _ -> UM.member k (rewards ds)) -- (k ∈ dom (rewards ds)) - (Map.mapKeys raCredential rewardAccounts') - refunded = fold refunds - unclaimed = fold mRefunds - - tellEvent $ - let rewardAccountsWithPool = - Map.foldlWithKey' - ( \acc sp (ra, coin) -> - Map.insertWith (Map.unionWith (<>)) (raCredential ra) (Map.singleton sp coin) acc - ) - Map.empty - rewardAccounts_ - (refundPools', unclaimedPools') = - Map.partitionWithKey - (\k _ -> UM.member k (rewards ds)) -- (k ∈ dom (rewards ds)) - rewardAccountsWithPool - in RetiredPools - { refundPools = refundPools' - , unclaimedPools = unclaimedPools' - , epochNo = e - } - pure $ - PoolreapState - us {utxosDeposited = utxosDeposited us <-> (unclaimed <+> refunded)} - a {asTreasury = asTreasury a <+> unclaimed} - ( let u0 = dsUnified ds - u1 = RewDepUView u0 UM.∪+ Map.map compactCoinOrError refunds - u2 = SPoolUView u1 UM.⋫ retired - in ds {dsUnified = u2} - ) - ps - { psStakePoolParams = eval (retired ⋪ psStakePoolParams ps) - , -- TODO: redundant - psFutureStakePoolParams = eval (retired ⋪ psFutureStakePoolParams ps) - , psRetiring = eval (retired ⋪ psRetiring ps) - , psDeposits = remainingDeposits - } - -renderPoolReapViolation :: - ( EraGov era - , Environment t ~ ShelleyPoolreapEnv era - , State t ~ ShelleyPoolreapState era - ) => - AssertionViolation t -> - String -renderPoolReapViolation - AssertionViolation {avSTS, avMsg, avCtx = TRC (ShelleyPoolreapEnv vs, poolreapst, _)} = - let certst = CertState vs (prPState poolreapst) (prDState poolreapst) - obligations = allObligations certst (prUTxOSt poolreapst ^. utxosGovStateL) - in "\n\nAssertionViolation (" - <> avSTS - <> ")\n " - <> avMsg - <> "\npot (utxosDeposited) = " - <> show (utxosDeposited (prUTxOSt poolreapst)) - <> show obligations diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Ppup.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Ppup.hs deleted file mode 100644 index 26bf67e5dc9..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Ppup.hs +++ /dev/null @@ -1,222 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Shelley.Rules.Ppup ( - ShelleyPPUP, - PpupEnv (..), - ShelleyPpupPredFailure (..), - ShelleyGovState (..), - PpupEvent (..), - PredicateFailure, - VotingPeriod (..), - PPUPPredFailure, -) -where - -import Cardano.Ledger.BaseTypes ( - Globals (stabilityWindow), - ProtVer, - ShelleyBase, - StrictMaybe (..), - epochInfoPure, - invalidKey, - ) -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - decodeRecordSum, - decodeWord, - encodeListLen, - ) -import Cardano.Ledger.Core -import Cardano.Ledger.Keys (GenDelegs (GenDelegs), KeyHash, KeyRole (Genesis)) -import Cardano.Ledger.Shelley.Era (ShelleyEra, ShelleyPPUP) -import Cardano.Ledger.Shelley.Governance -import Cardano.Ledger.Shelley.PParams ( - ProposedPPUpdates (ProposedPPUpdates), - Update (..), - hasLegalProtVerUpdate, - ) -import Cardano.Ledger.Slot ( - Duration (Duration), - EpochNo (..), - SlotNo, - epochInfoEpoch, - epochInfoFirst, - (*-), - ) -import Control.DeepSeq (NFData) -import Control.Monad.Trans.Reader (asks) -import Control.SetAlgebra (dom, eval, (⊆), (⨃)) -import Control.State.Transition -import qualified Data.Foldable as F (find) -import Data.Set (Set) -import Data.Word (Word8) -import GHC.Generics (Generic) -import Lens.Micro ((^.)) -import NoThunks.Class (NoThunks (..)) - -data PpupEnv era - = PPUPEnv SlotNo (PParams era) (GenDelegs (EraCrypto era)) - -data VotingPeriod = VoteForThisEpoch | VoteForNextEpoch - deriving (Show, Eq, Generic) - -instance NoThunks VotingPeriod - -instance NFData VotingPeriod - -instance EncCBOR VotingPeriod where - encCBOR VoteForThisEpoch = encCBOR (0 :: Word8) - encCBOR VoteForNextEpoch = encCBOR (1 :: Word8) - -instance DecCBOR VotingPeriod where - decCBOR = - decodeWord >>= \case - 0 -> pure VoteForThisEpoch - 1 -> pure VoteForNextEpoch - k -> invalidKey k - -data ShelleyPpupPredFailure era - = -- | An update was proposed by a key hash that is not one of the genesis keys. - -- The first set contains the key hashes which were a part of the update. - -- The second set contains the key hashes of the genesis keys. - NonGenesisUpdatePPUP - !(Set (KeyHash 'Genesis (EraCrypto era))) - !(Set (KeyHash 'Genesis (EraCrypto era))) - | -- | An update was proposed for the wrong epoch. - -- The first 'EpochNo' is the current epoch. - -- The second 'EpochNo' is the epoch listed in the update. - -- The last parameter indicates if the update was intended - -- for the current or the next epoch. - PPUpdateWrongEpoch - !EpochNo - !EpochNo - !VotingPeriod - | -- | An update was proposed which contains an invalid protocol version. - -- New protocol versions must either increase the major - -- number by exactly one and set the minor version to zero, - -- or keep the major version the same and increase the minor - -- version by exactly one. - PVCannotFollowPPUP - !ProtVer - deriving (Show, Eq, Generic) - -type instance EraRuleFailure "PPUP" (ShelleyEra c) = ShelleyPpupPredFailure (ShelleyEra c) - -instance InjectRuleFailure "PPUP" ShelleyPpupPredFailure (ShelleyEra c) - -instance NoThunks (ShelleyPpupPredFailure era) - -instance NFData (ShelleyPpupPredFailure era) - -newtype PpupEvent era = PpupNewEpoch EpochNo - deriving (Generic, Eq) - -instance NFData (PpupEvent era) - -instance (EraPParams era, ProtVerAtMost era 8) => STS (ShelleyPPUP era) where - type State (ShelleyPPUP era) = ShelleyGovState era - type Signal (ShelleyPPUP era) = StrictMaybe (Update era) - type Environment (ShelleyPPUP era) = PpupEnv era - type BaseM (ShelleyPPUP era) = ShelleyBase - type PredicateFailure (ShelleyPPUP era) = ShelleyPpupPredFailure era - type Event (ShelleyPPUP era) = PpupEvent era - - initialRules = [] - - transitionRules = [ppupTransitionNonEmpty] - -instance Era era => EncCBOR (ShelleyPpupPredFailure era) where - encCBOR = \case - NonGenesisUpdatePPUP a b -> - encodeListLen 3 - <> encCBOR (0 :: Word8) - <> encCBOR a - <> encCBOR b - PPUpdateWrongEpoch ce e vp -> - encodeListLen 4 <> encCBOR (1 :: Word8) <> encCBOR ce <> encCBOR e <> encCBOR vp - PVCannotFollowPPUP p -> encodeListLen 2 <> encCBOR (2 :: Word8) <> encCBOR p - -instance Era era => DecCBOR (ShelleyPpupPredFailure era) where - decCBOR = decodeRecordSum "ShelleyPpupPredFailure" $ - \case - 0 -> do - a <- decCBOR - b <- decCBOR - pure (3, NonGenesisUpdatePPUP a b) - 1 -> do - a <- decCBOR - b <- decCBOR - c <- decCBOR - pure (4, PPUpdateWrongEpoch a b c) - 2 -> do - p <- decCBOR - pure (2, PVCannotFollowPPUP p) - k -> invalidKey k - -ppupTransitionNonEmpty :: (EraPParams era, ProtVerAtMost era 8) => TransitionRule (ShelleyPPUP era) -ppupTransitionNonEmpty = do - TRC - ( PPUPEnv slot pp (GenDelegs genDelegs) - , pps@( ShelleyGovState - { sgsCurProposals = ProposedPPUpdates pupS - , sgsFutureProposals = ProposedPPUpdates fpupS - } - ) - , update - ) <- - judgmentContext - - case update of - SNothing -> pure pps - SJust (Update (ProposedPPUpdates pup) targetEpochNo) -> do - eval (dom pup ⊆ dom genDelegs) ?! NonGenesisUpdatePPUP (eval (dom pup)) (eval (dom genDelegs)) - - let firstIllegalProtVerUpdate = do - ppu <- F.find (not . hasLegalProtVerUpdate pp) pup - -- SNothing is considered legal - SJust newBadProtVer <- Just (ppu ^. ppuProtocolVersionL) - Just newBadProtVer - failOnJust firstIllegalProtVerUpdate PVCannotFollowPPUP - - sp <- liftSTS $ asks stabilityWindow - (currentEpochNo, firstSlotNextEpoch) <- do - epochInfo <- liftSTS $ asks epochInfoPure - epochNo <- liftSTS $ epochInfoEpoch epochInfo slot - let nextEpochNo = succ epochNo - tellEvent $ PpupNewEpoch nextEpochNo - liftSTS $ do - (,) epochNo <$> epochInfoFirst epochInfo nextEpochNo - - let tooLate = firstSlotNextEpoch *- Duration (2 * sp) - - if slot < tooLate - then do - (currentEpochNo == targetEpochNo) - ?! PPUpdateWrongEpoch currentEpochNo targetEpochNo VoteForThisEpoch - pure $ - pps - { sgsCurProposals = ProposedPPUpdates (eval (pupS ⨃ pup)) - , sgsFutureProposals = ProposedPPUpdates fpupS - } - else do - (succ currentEpochNo == targetEpochNo) - ?! PPUpdateWrongEpoch currentEpochNo targetEpochNo VoteForNextEpoch - pure $ - pps - { sgsCurProposals = ProposedPPUpdates pupS - , sgsFutureProposals = ProposedPPUpdates (eval (fpupS ⨃ pup)) - } - -type PPUPPredFailure era = EraRuleFailure "PPUP" era -{-# DEPRECATED PPUPPredFailure "In favor of `EraRuleFailure` PPUP era" #-} diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Reports.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Reports.hs deleted file mode 100644 index b9f024b5b6d..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Reports.hs +++ /dev/null @@ -1,106 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE TypeFamilies #-} - --- | Tools for reporting things in readable manner. Used in Rules to implement --- STS 'renderAssertionViolation' methods, and in Tests. -module Cardano.Ledger.Shelley.Rules.Reports ( - showCred, - showIR, - showKeyHash, - showListy, - showMap, - showWithdrawal, - showSafeHash, - synopsisCoinMap, - showTxCerts, - produceEqualsConsumed, -) -where - -import Cardano.Ledger.CertState ( - CertState (..), - InstantaneousRewards (..), - ) -import Cardano.Ledger.Coin (Coin) -import Cardano.Ledger.Core -import Cardano.Ledger.Credential (Credential (..)) -import Cardano.Ledger.Keys (KeyHash (..)) -import Cardano.Ledger.SafeHash (SafeHash, extractHash) -import Cardano.Ledger.Shelley.AdaPots (consumedTxBody, producedTxBody) -import Cardano.Ledger.Shelley.TxBody (RewardAccount (..), Withdrawals (..)) -import Cardano.Ledger.UTxO (UTxO (..)) -import Data.Foldable (fold, toList) -import qualified Data.Map.Strict as Map -import Lens.Micro ((^.)) - --- =============================================== --- Reporting Certificates - -showCred :: Credential x c -> String -showCred (ScriptHashObj (ScriptHash x)) = show x -showCred (KeyHashObj (KeyHash x)) = show x - -showKeyHash :: KeyHash c x -> String -showKeyHash (KeyHash hash) = take 10 (show hash) - -showCerts :: Show (TxCert era) => [TxCert era] -> String -showCerts certs = unlines (map ((" " ++) . show) certs) - -showTxCerts :: EraTxBody era => TxBody era -> String -showTxCerts txb = showCerts (toList (txb ^. certsTxBodyL)) - --- | Display a synopsis of a map to Coin -synopsisCoinMap :: Maybe (Map.Map k Coin) -> String -synopsisCoinMap (Just m) = "Count = " ++ show (Map.size m) ++ ", total = " ++ show (fold m) -synopsisCoinMap Nothing = "SYNOPSIS NOTHING" - --- =============================================== --- Printing Produced == Consumed - -produceEqualsConsumed :: - EraTxBody era => - PParams era -> - CertState era -> - UTxO era -> - TxBody era -> - String -produceEqualsConsumed pp dpstate utxo txb = - let consumedValue = consumedTxBody txb pp dpstate utxo - producedValue = producedTxBody txb pp dpstate - in ( "\n (Produce = Consumed) Report\n certificates\n" - ++ showTxCerts txb - ++ "\n withdrawals " - ++ show (fold . unWithdrawals $ txb ^. withdrawalsTxBodyL) - ++ show producedValue - ++ show consumedValue - ) - --- ======================== - -showMap :: (t1 -> [Char]) -> (t2 -> [Char]) -> Map.Map t1 t2 -> String -showMap showKey showVal m = unlines (map showpair (Map.toList m)) - where - showpair (key, val) = showKey key ++ " -> " ++ showVal val - -showListy :: Foldable t => (a -> String) -> t a -> String -showListy showElem list = unlines (map showElem (toList list)) - -showRewardAcct :: RewardAccount c -> [Char] -showRewardAcct (RewardAccount {raNetwork = network, raCredential = cred}) = - show network ++ " " ++ showCred cred - -showWithdrawal :: Withdrawals c -> String -showWithdrawal (Withdrawals m) = showMap ((" " ++) . showRewardAcct) show m - -showIR :: InstantaneousRewards c -> String -showIR (InstantaneousRewards m n x y) = - unlines - [ "IRReseves " ++ showMap ((" " ++) . take 10 . showCred) show m - , "IRTreasury " ++ showMap ((" " ++) . take 10 . showCred) show n - , "DeltaReserves " ++ show x - , "DeltaTreasury " ++ show y - ] - -showSafeHash :: SafeHash c i -> String -showSafeHash x = take 12 (show (extractHash x)) diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Rupd.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Rupd.hs deleted file mode 100644 index d632799f3e0..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Rupd.hs +++ /dev/null @@ -1,171 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE EmptyDataDeriving #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Shelley.Rules.Rupd ( - ShelleyRUPD, - RupdEnv (..), - PredicateFailure, - ShelleyRupdPredFailure, - epochInfoRange, - PulsingRewUpdate (..), - startStep, - pulseStep, - completeStep, - lift, - Identity (..), - RupdEvent (..), -) -where - -import Cardano.Ledger.BaseTypes ( - BlocksMade, - ShelleyBase, - StrictMaybe (..), - activeSlotCoeff, - epochInfoPure, - maxLovelaceSupply, - randomnessStabilisationWindow, - securityParameter, - ) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Core -import Cardano.Ledger.Credential (Credential) -import Cardano.Ledger.Keys (KeyRole (Staking)) -import Cardano.Ledger.Shelley.Era (ShelleyRUPD) -import Cardano.Ledger.Shelley.Governance (EraGov) -import Cardano.Ledger.Shelley.LedgerState ( - EpochState, - PulsingRewUpdate (..), - completeStep, - pulseStep, - startStep, - ) -import Cardano.Ledger.Slot ( - Duration (..), - EpochNo (..), - SlotNo, - epochInfoEpoch, - epochInfoFirst, - epochInfoSize, - (+*), - ) -import Cardano.Slotting.EpochInfo.API (epochInfoRange) -import Control.DeepSeq (NFData) -import Control.Monad.Identity (Identity (..)) -import Control.Monad.Trans (lift) -import Control.Monad.Trans.Reader (asks) -import Control.State.Transition ( - Rule, - STS (..), - TRC (..), - TransitionRule, - judgmentContext, - liftSTS, - tellEvent, - ) -import Data.Functor ((<&>)) -import qualified Data.Map.Strict as Map -import Data.Set (Set) -import GHC.Generics (Generic) -import NoThunks.Class (NoThunks (..)) - -data RupdEnv era - = RupdEnv !(BlocksMade (EraCrypto era)) !(EpochState era) - -data ShelleyRupdPredFailure era -- No predicate failures - deriving (Show, Eq, Generic) - -instance NoThunks (ShelleyRupdPredFailure era) - -instance NFData (ShelleyRupdPredFailure era) - -instance - ( Era era - , EraGov era - ) => - STS (ShelleyRUPD era) - where - type State (ShelleyRUPD era) = StrictMaybe (PulsingRewUpdate (EraCrypto era)) - type Signal (ShelleyRUPD era) = SlotNo - type Environment (ShelleyRUPD era) = RupdEnv era - type BaseM (ShelleyRUPD era) = ShelleyBase - type PredicateFailure (ShelleyRUPD era) = ShelleyRupdPredFailure era - type Event (ShelleyRUPD era) = RupdEvent (EraCrypto era) - - initialRules = [pure SNothing] - transitionRules = [rupdTransition] - -data RupdEvent c - = RupdEvent - !EpochNo - !(Map.Map (Credential 'Staking c) (Set (Reward c))) - deriving (Generic, Eq) - -instance NFData (RupdEvent c) - --- | tell a RupdEvent only if the map is non-empty -tellRupd :: String -> RupdEvent (EraCrypto era) -> Rule (ShelleyRUPD era) rtype () -tellRupd _ (RupdEvent _ m) | Map.null m = pure () -tellRupd _message x = tellEvent x - --- | The Goldilocks labeling of when to do the reward calculation. -data RewardTiming = RewardsTooEarly | RewardsJustRight | RewardsTooLate - -determineRewardTiming :: SlotNo -> SlotNo -> SlotNo -> RewardTiming -determineRewardTiming currentSlot startAfterSlot endSlot - | currentSlot > endSlot = RewardsTooLate - | currentSlot <= startAfterSlot = RewardsTooEarly - | otherwise = RewardsJustRight - -rupdTransition :: EraGov era => TransitionRule (ShelleyRUPD era) -rupdTransition = do - TRC (RupdEnv b es, ru, s) <- judgmentContext - (slotsPerEpoch, slot, slotForce, maxLL, asc, k, e) <- liftSTS $ do - ei <- asks epochInfoPure - sr <- asks randomnessStabilisationWindow - e <- epochInfoEpoch ei s - slotsPerEpoch <- epochInfoSize ei e - slot <- epochInfoFirst ei e <&> (+* Duration sr) - maxLL <- asks maxLovelaceSupply - asc <- asks activeSlotCoeff - k <- asks securityParameter -- Maximum number of blocks we are allowed to roll back - return (slotsPerEpoch, slot, slot +* Duration sr, maxLL, asc, k, e) - let maxsupply = Coin (fromIntegral maxLL) - case determineRewardTiming s slot slotForce of - -- Waiting for the stability point, do nothing, keep waiting - RewardsTooEarly -> pure SNothing - -- More blocks to come, get things started or take a step - RewardsJustRight -> - case ru of - SNothing -> - -- This is the first opportunity to pulse, so start pulsing. - -- SJust <$> tellLeaderEvents (e + 1) (fst (startStep slotsPerEpoch b es maxsupply asc k)) - (pure . SJust) (startStep slotsPerEpoch b es maxsupply asc k) - (SJust p@(Pulsing _ _)) -> do - -- We began pulsing earlier, so run another pulse - (ans, event) <- liftSTS $ pulseStep p - tellRupd "Pulsing Rupd" (RupdEvent (succ e) event) - pure (SJust ans) - (SJust p@(Complete _)) -> pure (SJust p) - -- Time to force the completion of the pulser so that downstream tools such as db-sync - -- have time to see the reward update before the epoch boundary rollover. - RewardsTooLate -> - case ru of - SNothing -> do - -- Nothing has been done, so start, and then complete the pulser. We hope this is very rare. - let pulser = startStep slotsPerEpoch b es maxsupply asc k - (reward, event) <- liftSTS $ completeStep pulser - tellRupd "Starting too late" (RupdEvent (succ e) event) - pure (SJust reward) - SJust p@(Pulsing _ _) -> do - -- We have been pulsing, but we ran out of time, so complete the pulser. - (reward, event) <- liftSTS $ completeStep p - tellRupd "Completing too late" (RupdEvent (succ e) event) - pure (SJust reward) - complete@(SJust (Complete _)) -> pure complete diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Snap.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Snap.hs deleted file mode 100644 index b107c23aaa3..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Snap.hs +++ /dev/null @@ -1,126 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE EmptyDataDeriving #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Shelley.Rules.Snap ( - ShelleySNAP, - PredicateFailure, - ShelleySnapPredFailure, - SnapEvent (..), - SnapEnv (..), -) -where - -import Cardano.Ledger.BaseTypes (ShelleyBase) -import Cardano.Ledger.Coin (Coin, CompactForm) -import Cardano.Ledger.Compactible (fromCompact) -import Cardano.Ledger.Core -import Cardano.Ledger.Credential (Credential) -import Cardano.Ledger.EpochBoundary ( - SnapShot (ssDelegations, ssStake), - SnapShots (..), - Stake (unStake), - calculatePoolDistr, - emptySnapShots, - ) -import Cardano.Ledger.Keys (KeyHash, KeyRole (StakePool, Staking)) -import Cardano.Ledger.Shelley.Era (ShelleySNAP) -import Cardano.Ledger.Shelley.LedgerState ( - CertState (..), - LedgerState (..), - UTxOState (..), - incrementalStakeDistr, - ) -import Control.DeepSeq (NFData) -import Control.State.Transition ( - STS (..), - TRC (..), - TransitionRule, - judgmentContext, - tellEvent, - ) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import qualified Data.VMap as VMap -import GHC.Generics (Generic) -import NoThunks.Class (NoThunks (..)) - --- ====================================================== - -data ShelleySnapPredFailure era -- No predicate failures - deriving (Show, Generic, Eq) - -instance NFData (ShelleySnapPredFailure era) - -instance NoThunks (ShelleySnapPredFailure era) - -newtype SnapEvent era - = StakeDistEvent - (Map (Credential 'Staking (EraCrypto era)) (Coin, KeyHash 'StakePool (EraCrypto era))) - deriving (Generic) - -deriving instance Eq (SnapEvent era) - -instance NFData (SnapEvent era) - -data SnapEnv era = SnapEnv !(LedgerState era) !(PParams era) - -instance EraTxOut era => STS (ShelleySNAP era) where - type State (ShelleySNAP era) = SnapShots (EraCrypto era) - type Signal (ShelleySNAP era) = () - type Environment (ShelleySNAP era) = SnapEnv era - type BaseM (ShelleySNAP era) = ShelleyBase - type PredicateFailure (ShelleySNAP era) = ShelleySnapPredFailure era - type Event (ShelleySNAP era) = SnapEvent era - initialRules = [pure emptySnapShots] - transitionRules = [snapTransition] - --- | The stake distribution was previously computed as in the spec: --- --- @ --- stakeDistr @era utxo dstate pstate --- @ --- --- but is now computed incrementally. We leave the comment as a historical note about --- where important changes were made to the source code. -snapTransition :: - forall era. - EraPParams era => - TransitionRule (ShelleySNAP era) -snapTransition = do - TRC (snapEnv, s, _) <- judgmentContext - - let SnapEnv (LedgerState (UTxOState _utxo _ fees _ incStake _) (CertState _ pstate dstate)) pp = snapEnv - -- per the spec: stakeSnap = stakeDistr @era utxo dstate pstate - istakeSnap = incrementalStakeDistr pp incStake dstate pstate - - tellEvent $ - let stMap :: Map (Credential 'Staking (EraCrypto era)) (CompactForm Coin) - stMap = VMap.toMap . unStake $ ssStake istakeSnap - - stakeCoinMap :: Map (Credential 'Staking (EraCrypto era)) Coin - stakeCoinMap = fmap fromCompact stMap - - stakePoolMap :: Map (Credential 'Staking (EraCrypto era)) (KeyHash 'StakePool (EraCrypto era)) - stakePoolMap = VMap.toMap $ ssDelegations istakeSnap - - stakeMap :: Map (Credential 'Staking (EraCrypto era)) (Coin, KeyHash 'StakePool (EraCrypto era)) - stakeMap = Map.intersectionWith (,) stakeCoinMap stakePoolMap - in StakeDistEvent stakeMap - - pure $ - SnapShots - { ssStakeMark = istakeSnap - , ssStakeMarkPoolDistr = calculatePoolDistr istakeSnap - , -- ssStakeMarkPoolDistr exists for performance reasons, see ADR-7 - ssStakeSet = ssStakeMark s - , ssStakeGo = ssStakeSet s - , ssFee = fees - } diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Tick.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Tick.hs deleted file mode 100644 index 1ce7ff6b442..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Tick.hs +++ /dev/null @@ -1,388 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE CPP #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE EmptyDataDeriving #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} -#if __GLASGOW_HASKELL__ >= 908 -{-# OPTIONS_GHC -Wno-redundant-constraints #-} -#endif - -module Cardano.Ledger.Shelley.Rules.Tick ( - ShelleyTICK, - State, - ShelleyTickPredFailure (..), - ShelleyTickEvent (..), - PredicateFailure, - adoptGenesisDelegs, - ShelleyTICKF, - ShelleyTickfPredFailure, - validatingTickTransition, - validatingTickTransitionFORECAST, -) -where - -import Cardano.Ledger.BaseTypes (ShelleyBase, StrictMaybe (..), epochInfoPure) -import Cardano.Ledger.Core -import Cardano.Ledger.EpochBoundary (SnapShots (ssStakeMark, ssStakeMarkPoolDistr)) -import Cardano.Ledger.Keys (GenDelegs (..)) -import Cardano.Ledger.Shelley.Era (ShelleyEra, ShelleyTICK, ShelleyTICKF) -import Cardano.Ledger.Shelley.Governance -import Cardano.Ledger.Shelley.LedgerState ( - CertState (..), - DState (..), - EpochState (..), - FutureGenDeleg (..), - LedgerState (..), - NewEpochState (..), - PulsingRewUpdate, - UTxOState (..), - curPParamsEpochStateL, - ) -import Cardano.Ledger.Shelley.Rules.NewEpoch ( - ShelleyNEWEPOCH, - ShelleyNewEpochEvent, - ShelleyNewEpochPredFailure, - ) -import Cardano.Ledger.Shelley.Rules.Rupd ( - RupdEnv (..), - RupdEvent, - ShelleyRUPD, - ShelleyRupdPredFailure, - ) -import Cardano.Ledger.Shelley.Rules.Upec (ShelleyUPEC, ShelleyUpecPredFailure, UpecState (..)) -import Cardano.Ledger.Slot (EpochNo (unEpochNo), SlotNo, epochInfoEpoch) -import Control.DeepSeq (NFData) -import Control.Monad.Trans.Reader (asks) -import Control.SetAlgebra (eval, (⨃)) -import Control.State.Transition -import qualified Data.Map.Strict as Map -import Data.Void (Void) -import GHC.Generics (Generic) -import Lens.Micro ((&), (.~), (^.)) -import NoThunks.Class (NoThunks (..)) - --- ================================================== - -data ShelleyTickPredFailure era - = NewEpochFailure (PredicateFailure (EraRule "NEWEPOCH" era)) -- Subtransition Failures - | RupdFailure (PredicateFailure (EraRule "RUPD" era)) -- Subtransition Failures - deriving (Generic) - -deriving stock instance - ( Show (PredicateFailure (EraRule "NEWEPOCH" era)) - , Show (PredicateFailure (EraRule "RUPD" era)) - ) => - Show (ShelleyTickPredFailure era) - -deriving stock instance - ( Eq (PredicateFailure (EraRule "NEWEPOCH" era)) - , Eq (PredicateFailure (EraRule "RUPD" era)) - ) => - Eq (ShelleyTickPredFailure era) - -instance - ( NoThunks (PredicateFailure (EraRule "NEWEPOCH" era)) - , NoThunks (PredicateFailure (EraRule "RUPD" era)) - ) => - NoThunks (ShelleyTickPredFailure era) - -instance - ( NFData (PredicateFailure (EraRule "NEWEPOCH" era)) - , NFData (PredicateFailure (EraRule "RUPD" era)) - ) => - NFData (ShelleyTickPredFailure era) - -data ShelleyTickEvent era - = TickNewEpochEvent (Event (EraRule "NEWEPOCH" era)) - | TickRupdEvent (Event (EraRule "RUPD" era)) - deriving (Generic) - -type instance EraRuleEvent "TICK" (ShelleyEra c) = ShelleyTickEvent (ShelleyEra c) - -deriving instance - ( Eq (Event (EraRule "NEWEPOCH" era)) - , Eq (Event (EraRule "RUPD" era)) - ) => - Eq (ShelleyTickEvent era) - -instance - ( NFData (Event (EraRule "NEWEPOCH" era)) - , NFData (Event (EraRule "RUPD" era)) - ) => - NFData (ShelleyTickEvent era) - -instance - ( Era era - , Embed (EraRule "NEWEPOCH" era) (ShelleyTICK era) - , Embed (EraRule "RUPD" era) (ShelleyTICK era) - , State (ShelleyTICK era) ~ NewEpochState era - , BaseM (ShelleyTICK era) ~ ShelleyBase - , Environment (EraRule "RUPD" era) ~ RupdEnv era - , State (EraRule "RUPD" era) ~ StrictMaybe (PulsingRewUpdate (EraCrypto era)) - , Signal (EraRule "RUPD" era) ~ SlotNo - , Environment (EraRule "NEWEPOCH" era) ~ () - , State (EraRule "NEWEPOCH" era) ~ NewEpochState era - , Signal (EraRule "NEWEPOCH" era) ~ EpochNo - ) => - STS (ShelleyTICK era) - where - type State (ShelleyTICK era) = NewEpochState era - type Signal (ShelleyTICK era) = SlotNo - type Environment (ShelleyTICK era) = () - type BaseM (ShelleyTICK era) = ShelleyBase - type PredicateFailure (ShelleyTICK era) = ShelleyTickPredFailure era - type Event (ShelleyTICK era) = ShelleyTickEvent era - - initialRules = [] - transitionRules = [bheadTransition] - -adoptGenesisDelegs :: - EpochState era -> - SlotNo -> - EpochState era -adoptGenesisDelegs es slot = es' - where - ls = esLState es - dp = lsCertState ls - ds = certDState dp - fGenDelegs = dsFutureGenDelegs ds - GenDelegs genDelegs = dsGenDelegs ds - (curr, fGenDelegs') = Map.partitionWithKey (\(FutureGenDeleg s _) _ -> s <= slot) fGenDelegs - latestPerGKey (FutureGenDeleg s genKeyHash) delegate latest = - case Map.lookup genKeyHash latest of - Nothing -> Map.insert genKeyHash (s, delegate) latest - Just (t, _) -> - if s > t - then Map.insert genKeyHash (s, delegate) latest - else latest - genDelegs' = Map.map snd $ Map.foldrWithKey latestPerGKey Map.empty curr - ds' = - ds - { dsFutureGenDelegs = fGenDelegs' - , dsGenDelegs = GenDelegs $ eval (genDelegs ⨃ genDelegs') - } - dp' = dp {certDState = ds'} - ls' = ls {lsCertState = dp'} - es' = es {esLState = ls'} - --- | This is a limited version of 'bheadTransition' which is suitable for the --- future ledger view. -validatingTickTransition :: - forall tick era. - ( Embed (EraRule "NEWEPOCH" era) (tick era) - , STS (tick era) - , State (tick era) ~ NewEpochState era - , BaseM (tick era) ~ ShelleyBase - , Environment (EraRule "NEWEPOCH" era) ~ () - , State (EraRule "NEWEPOCH" era) ~ NewEpochState era - , Signal (EraRule "NEWEPOCH" era) ~ EpochNo - ) => - NewEpochState era -> - SlotNo -> - TransitionRule (tick era) -validatingTickTransition nes slot = do - epoch <- liftSTS $ do - ei <- asks epochInfoPure - epochInfoEpoch ei slot - - nes' <- trans @(EraRule "NEWEPOCH" era) $ TRC ((), nes, epoch) - let es'' = adoptGenesisDelegs (nesEs nes') slot - - pure $ nes' {nesEs = es''} - --- | This is a limited version of 'validatingTickTransition' which is only suitable --- for the future ledger view. -validatingTickTransitionFORECAST :: - forall tick era. - ( State (tick era) ~ NewEpochState era - , BaseM (tick era) ~ ShelleyBase - , State (EraRule "UPEC" era) ~ UpecState era - , Signal (EraRule "UPEC" era) ~ () - , Environment (EraRule "UPEC" era) ~ LedgerState era - , Embed (EraRule "UPEC" era) (tick era) - , STS (tick era) - , GovState era ~ ShelleyGovState era - , EraGov era - ) => - NewEpochState era -> - SlotNo -> - TransitionRule (tick era) -validatingTickTransitionFORECAST nes slot = do - -- This whole function is a specialization of an inlined 'NEWEPOCH'. - -- - -- The ledger view, 'LedgerView', is built entirely from the 'nesPd' and 'esPp' and - -- 'dsGenDelegs', so the correctness of 'validatingTickTransitionFORECAST' only - -- depends on getting these three fields correct. - - epoch <- liftSTS $ do - ei <- asks epochInfoPure - epochInfoEpoch ei slot - - let es = nesEs nes - ss = esSnapshots es - - -- the relevant 'NEWEPOCH' logic - let pd' = ssStakeMarkPoolDistr ss - - -- note that the genesis delegates are updated not only on the epoch boundary. - if unEpochNo epoch /= unEpochNo (nesEL nes) + 1 - then pure $ nes {nesEs = adoptGenesisDelegs es slot} - else do - -- We can skip 'SNAP'; we already have the equivalent pd'. - - -- We can skip 'MIR' and 'POOLREAP'; - -- we don't need to do the checks: - -- if the checks would fail, then the node will fail in the 'TICK' rule - -- if it ever then node tries to validate blocks for which the - -- return value here was used to validate their headers. - - let pp = es ^. curPParamsEpochStateL - ls = esLState es - updates = utxosGovState $ lsUTxOState ls - UpecState pp' _ <- - trans @(EraRule "UPEC" era) $ - TRC (ls, UpecState pp updates, ()) - let es' = - adoptGenesisDelegs es slot - & curPParamsEpochStateL .~ pp' - - pure $! - nes - { nesPd = pd' - , nesEs = es' - } - -bheadTransition :: - forall era. - ( Embed (EraRule "NEWEPOCH" era) (ShelleyTICK era) - , Embed (EraRule "RUPD" era) (ShelleyTICK era) - , STS (ShelleyTICK era) - , State (ShelleyTICK era) ~ NewEpochState era - , BaseM (ShelleyTICK era) ~ ShelleyBase - , Environment (EraRule "RUPD" era) ~ RupdEnv era - , State (EraRule "RUPD" era) ~ StrictMaybe (PulsingRewUpdate (EraCrypto era)) - , Signal (EraRule "RUPD" era) ~ SlotNo - , Environment (EraRule "NEWEPOCH" era) ~ () - , State (EraRule "NEWEPOCH" era) ~ NewEpochState era - , Signal (EraRule "NEWEPOCH" era) ~ EpochNo - ) => - TransitionRule (ShelleyTICK era) -bheadTransition = do - TRC ((), nes0@(NewEpochState _ bprev _ es _ _ _), slot) <- - judgmentContext - - nes1 <- validatingTickTransition @ShelleyTICK nes0 slot - - -- Here we force the evaluation of the mark snapshot - -- and the per-pool stake distribution. - -- We do NOT force it in the TICKF and TICKN rule - -- so that it can remain a thunk when the consensus - -- layer computes the ledger view across the epoch boundary. - let !_ = ssStakeMark . esSnapshots . nesEs $ nes1 - !_ = ssStakeMarkPoolDistr . esSnapshots . nesEs $ nes1 - - ru'' <- - trans @(EraRule "RUPD" era) $ - TRC (RupdEnv bprev es, nesRu nes1, slot) - - let nes2 = nes1 {nesRu = ru''} - pure nes2 - -instance - ( STS (ShelleyNEWEPOCH era) - , PredicateFailure (EraRule "NEWEPOCH" era) ~ ShelleyNewEpochPredFailure era - , Event (EraRule "NEWEPOCH" era) ~ ShelleyNewEpochEvent era - ) => - Embed (ShelleyNEWEPOCH era) (ShelleyTICK era) - where - wrapFailed = NewEpochFailure - wrapEvent = TickNewEpochEvent - -instance - ( Era era - , STS (ShelleyRUPD era) - , PredicateFailure (EraRule "RUPD" era) ~ ShelleyRupdPredFailure era - , Event (EraRule "RUPD" era) ~ RupdEvent (EraCrypto era) - ) => - Embed (ShelleyRUPD era) (ShelleyTICK era) - where - wrapFailed = RupdFailure - wrapEvent = TickRupdEvent - -{------------------------------------------------------------------------------ --- TICKF transition - --- This is a variant on the TICK transition called only by the consensus layer -to tick the ledger state to a future slot. -------------------------------------------------------------------------------} - -newtype ShelleyTickfPredFailure era - = TickfUpecFailure (PredicateFailure (EraRule "UPEC" era)) -- Subtransition Failures - deriving (Generic) - -deriving stock instance - ( Era era - , Show (PredicateFailure (EraRule "UPEC" era)) - ) => - Show (ShelleyTickfPredFailure era) - -deriving stock instance - ( Era era - , Eq (PredicateFailure (EraRule "UPEC" era)) - ) => - Eq (ShelleyTickfPredFailure era) - -instance - NoThunks (PredicateFailure (EraRule "UPEC" era)) => - NoThunks (ShelleyTickfPredFailure era) - -newtype ShelleyTickfEvent era - = TickfUpecEvent (Event (EraRule "UPEC" era)) -- Subtransition Events - -instance - ( Era era - , EraGov era - , State (EraRule "PPUP" era) ~ ShelleyGovState era - , Signal (EraRule "UPEC" era) ~ () - , State (EraRule "UPEC" era) ~ UpecState era - , Environment (EraRule "UPEC" era) ~ LedgerState era - , Embed (EraRule "UPEC" era) (ShelleyTICKF era) - , GovState era ~ ShelleyGovState era - ) => - STS (ShelleyTICKF era) - where - type State (ShelleyTICKF era) = NewEpochState era - type Signal (ShelleyTICKF era) = SlotNo - type Environment (ShelleyTICKF era) = () - type BaseM (ShelleyTICKF era) = ShelleyBase - type PredicateFailure (ShelleyTICKF era) = ShelleyTickfPredFailure era - type Event (ShelleyTICKF era) = ShelleyTickfEvent era - - initialRules = [] - transitionRules = - [ do - TRC ((), nes, slot) <- judgmentContext - validatingTickTransitionFORECAST nes slot - ] - -instance - ( Era era - , STS (ShelleyUPEC era) - , PredicateFailure (EraRule "UPEC" era) ~ ShelleyUpecPredFailure era - , Event (EraRule "UPEC" era) ~ Void - ) => - Embed (ShelleyUPEC era) (ShelleyTICKF era) - where - wrapFailed = TickfUpecFailure - wrapEvent = TickfUpecEvent diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Upec.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Upec.hs deleted file mode 100644 index c2f3d35eddd..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Upec.hs +++ /dev/null @@ -1,146 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - --- | Epoch change registration. --- --- The rules of this module determine how the update subsystem of the ledger --- handles the epoch transitions. -module Cardano.Ledger.Shelley.Rules.Upec ( - ShelleyUPEC, - UpecState (..), - ShelleyUpecPredFailure (..), - votedValue, -) where - -import Cardano.Ledger.BaseTypes (Globals (..), ShelleyBase) -import Cardano.Ledger.Core -import Cardano.Ledger.Shelley.Era (ShelleyUPEC) -import Cardano.Ledger.Shelley.Governance -import Cardano.Ledger.Shelley.LedgerState ( - LedgerState, - lsCertState, - lsUTxOState, - ) -import Cardano.Ledger.Shelley.PParams (ProposedPPUpdates (..)) -import Cardano.Ledger.Shelley.Rules.Newpp ( - NewppEnv (..), - ShelleyNEWPP, - ShelleyNewppPredFailure, - ShelleyNewppState (..), - ) -import Control.DeepSeq (NFData) -import Control.Monad.Trans.Reader (asks) -import Control.State.Transition ( - Embed (..), - STS (..), - TRC (..), - judgmentContext, - liftSTS, - trans, - ) -import Data.Default.Class (Default) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import GHC.Generics (Generic) -import NoThunks.Class (NoThunks (..)) - -data UpecState era = UpecState - { usCurPParams :: !(PParams era) - -- ^ Current protocol parameters. - , usGovState :: !(ShelleyGovState era) - -- ^ State of the protocol update transition system. - } - -deriving stock instance - (Show (PParams era), Show (PParamsUpdate era)) => - Show (UpecState era) - -newtype ShelleyUpecPredFailure era - = NewPpFailure (PredicateFailure (ShelleyNEWPP era)) - deriving (Eq, Show, Generic) - -instance NoThunks (ShelleyUpecPredFailure era) - -instance NFData (ShelleyNewppPredFailure era) => NFData (ShelleyUpecPredFailure era) - -instance - ( EraGov era - , Default (PParams era) - , GovState era ~ ShelleyGovState era - , ProtVerAtMost era 8 - ) => - STS (ShelleyUPEC era) - where - type State (ShelleyUPEC era) = UpecState era - type Signal (ShelleyUPEC era) = () - type Environment (ShelleyUPEC era) = LedgerState era - type BaseM (ShelleyUPEC era) = ShelleyBase - type PredicateFailure (ShelleyUPEC era) = ShelleyUpecPredFailure era - initialRules = [] - transitionRules = - [ do - TRC - ( ls - , UpecState pp ppupState - , _ - ) <- - judgmentContext - - coreNodeQuorum <- liftSTS $ asks quorum - - let utxoState = lsUTxOState ls - pup = sgsCurProposals ppupState - ppNew = votedValue pup pp (fromIntegral coreNodeQuorum) - NewppState pp' ppupState' <- - trans @(ShelleyNEWPP era) $ - TRC (NewppEnv (lsCertState ls) utxoState, NewppState pp ppupState, ppNew) - pure $! UpecState pp' ppupState' - ] - --- | If at least @n@ nodes voted to change __the same__ protocol parameters to --- __the same__ values, return the given protocol parameters updated to these --- values. Here @n@ is the quorum needed. -votedValue :: - forall era. - EraPParams era => - ProposedPPUpdates era -> - -- | Protocol parameters to which the change will be applied. - PParams era -> - -- | Quorum needed to change the protocol parameters. - Int -> - Maybe (PParams era) -votedValue (ProposedPPUpdates pppu) pp quorumN = - let votes = - Map.foldr - (\vote -> Map.insertWith (+) vote 1) - (Map.empty :: Map (PParamsUpdate era) Int) - pppu - consensus = Map.filter (>= quorumN) votes - in case Map.keys consensus of - -- NOTE that `quorumN` is a global constant, and that we require - -- it to be strictly greater than half the number of genesis nodes. - -- The keys in the `pup` correspond to the genesis nodes, - -- and therefore either: - -- 1) `consensus` is empty, or - -- 2) `consensus` has exactly one element. - [ppu] -> Just $ applyPPUpdates pp ppu - -- NOTE that `updatePParams` corresponds to the union override right - -- operation in the formal spec. - _ -> Nothing - -instance - (Era era, STS (ShelleyNEWPP era)) => - Embed (ShelleyNEWPP era) (ShelleyUPEC era) - where - wrapFailed = NewPpFailure diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Utxo.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Utxo.hs deleted file mode 100644 index c84b8bee336..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Utxo.hs +++ /dev/null @@ -1,667 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Shelley.Rules.Utxo ( - ShelleyUTXO, - UtxoEnv (..), - ShelleyUtxoPredFailure (..), - UtxoEvent (..), - PredicateFailure, - updateUTxOState, - - -- * Validations - validateInputSetEmptyUTxO, - validateFeeTooSmallUTxO, - validateBadInputsUTxO, - validateWrongNetwork, - validateWrongNetworkWithdrawal, - validateOutputBootAddrAttrsTooBig, - validateMaxTxSizeUTxO, - validateValueNotConservedUTxO, - utxoEnvSlotL, - utxoEnvPParamsL, - utxoEnvCertStateL, -) -where - -import Cardano.Ledger.Address ( - Addr (..), - bootstrapAddressAttrsSize, - getNetwork, - raNetwork, - ) -import Cardano.Ledger.BaseTypes (Network, ShelleyBase, StrictMaybe, invalidKey, networkId) -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - decodeRecordSum, - encodeListLen, - ) -import Cardano.Ledger.CertState ( - certsTotalDepositsTxBody, - certsTotalRefundsTxBody, - dsGenDelegs, - ) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Rules.ValidationMode (Test, runTest) -import Cardano.Ledger.SafeHash (SafeHash, hashAnnotated) -import Cardano.Ledger.Shelley.AdaPots (consumedTxBody, producedTxBody) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.Era (ShelleyEra, ShelleyUTXO) -import Cardano.Ledger.Shelley.LedgerState (CertState (..), UTxOState (..)) -import Cardano.Ledger.Shelley.LedgerState.IncrementalStake -import Cardano.Ledger.Shelley.PParams (Update) -import Cardano.Ledger.Shelley.Rules.Ppup ( - PpupEnv (..), - PpupEvent, - ShelleyPPUP, - ShelleyPpupPredFailure, - ) -import Cardano.Ledger.Shelley.Rules.Reports (showTxCerts) -import Cardano.Ledger.Shelley.TxBody (RewardAccount) -import Cardano.Ledger.Shelley.UTxO (consumed, produced) -import Cardano.Ledger.Slot (SlotNo) -import Cardano.Ledger.TxIn (TxIn) -import Cardano.Ledger.UTxO (EraUTxO (getMinFeeTxUtxo), UTxO (..), balance, txouts) -import Cardano.Ledger.Val ((<->)) -import qualified Cardano.Ledger.Val as Val -import Control.DeepSeq -import Control.Monad.Trans.Reader (asks) -import Control.State.Transition ( - Assertion (..), - AssertionViolation (..), - Embed, - STS (..), - TRC (..), - TransitionRule, - judgmentContext, - liftSTS, - tellEvent, - trans, - wrapEvent, - wrapFailed, - ) -import Data.Foldable ( - foldl', - toList, - ) -import qualified Data.Map.Strict as Map -import Data.MapExtras (extractKeys) -import Data.Set (Set) -import qualified Data.Set as Set -import Data.Word (Word8) -import GHC.Generics (Generic) -import Lens.Micro -import Lens.Micro.Extras (view) -import NoThunks.Class (NoThunks (..)) -import Validation (failureUnless) - -data UtxoEnv era = UtxoEnv - { ueSlot :: SlotNo - , uePParams :: PParams era - , ueCertState :: CertState era - } - deriving (Generic) - -utxoEnvSlotL :: Lens' (UtxoEnv era) SlotNo -utxoEnvSlotL = lens ueSlot $ \x y -> x {ueSlot = y} - -utxoEnvPParamsL :: Lens' (UtxoEnv era) (PParams era) -utxoEnvPParamsL = lens uePParams $ \x y -> x {uePParams = y} - -utxoEnvCertStateL :: Lens' (UtxoEnv era) (CertState era) -utxoEnvCertStateL = lens ueCertState $ \x y -> x {ueCertState = y} - -deriving instance Show (PParams era) => Show (UtxoEnv era) -deriving instance Eq (PParams era) => Eq (UtxoEnv era) - -instance (Era era, NFData (PParams era)) => NFData (UtxoEnv era) - -data UtxoEvent era - = TotalDeposits (SafeHash (EraCrypto era) EraIndependentTxBody) Coin - | UpdateEvent (Event (EraRule "PPUP" era)) - | -- | The UTxOs consumed and created by a signal tx - TxUTxODiff - -- | UTxO consumed - (UTxO era) - -- | UTxO created - (UTxO era) - deriving (Generic) - -deriving instance - ( Era era - , Eq (TxOut era) - , Eq (Event (EraRule "PPUP" era)) - ) => - Eq (UtxoEvent era) - -instance (Era era, NFData (Event (EraRule "PPUP" era)), NFData (TxOut era)) => NFData (UtxoEvent era) - -data ShelleyUtxoPredFailure era - = BadInputsUTxO - !(Set (TxIn (EraCrypto era))) -- The bad transaction inputs - | ExpiredUTxO - !SlotNo -- transaction's time to live - !SlotNo -- current slot - | MaxTxSizeUTxO - !Integer -- the actual transaction size - !Integer -- the max transaction size - | InputSetEmptyUTxO - | FeeTooSmallUTxO - !Coin -- the minimum fee for this transaction - !Coin -- the fee supplied in this transaction - | ValueNotConservedUTxO - !(Value era) -- the Coin consumed by this transaction - !(Value era) -- the Coin produced by this transaction - | WrongNetwork - !Network -- the expected network id - !(Set (Addr (EraCrypto era))) -- the set of addresses with incorrect network IDs - | WrongNetworkWithdrawal - !Network -- the expected network id - !(Set (RewardAccount (EraCrypto era))) -- the set of reward addresses with incorrect network IDs - | OutputTooSmallUTxO - ![TxOut era] -- list of supplied transaction outputs that are too small - | UpdateFailure (EraRuleFailure "PPUP" era) -- Subtransition Failures - | OutputBootAddrAttrsTooBig - ![TxOut era] -- list of supplied bad transaction outputs - deriving (Generic) - -type instance EraRuleFailure "UTXO" (ShelleyEra c) = ShelleyUtxoPredFailure (ShelleyEra c) - -instance InjectRuleFailure "UTXO" ShelleyUtxoPredFailure (ShelleyEra c) - -instance InjectRuleFailure "UTXO" ShelleyPpupPredFailure (ShelleyEra c) where - injectFailure = UpdateFailure - -deriving stock instance - ( Show (Value era) - , Show (TxOut era) - , Show (EraRuleFailure "PPUP" era) - ) => - Show (ShelleyUtxoPredFailure era) - -deriving stock instance - ( Eq (Value era) - , Eq (TxOut era) - , Eq (EraRuleFailure "PPUP" era) - ) => - Eq (ShelleyUtxoPredFailure era) - -instance - ( NoThunks (Value era) - , NoThunks (TxOut era) - , NoThunks (EraRuleFailure "PPUP" era) - ) => - NoThunks (ShelleyUtxoPredFailure era) - -instance - ( Era era - , NFData (Value era) - , NFData (TxOut era) - , NFData (EraRuleFailure "PPUP" era) - ) => - NFData (ShelleyUtxoPredFailure era) - -instance - ( Era era - , EncCBOR (Value era) - , EncCBOR (TxOut era) - , EncCBOR (EraRuleFailure "PPUP" era) - ) => - EncCBOR (ShelleyUtxoPredFailure era) - where - encCBOR = \case - BadInputsUTxO ins -> - encodeListLen 2 <> encCBOR (0 :: Word8) <> encCBOR ins - ExpiredUTxO a b -> - encodeListLen 3 - <> encCBOR (1 :: Word8) - <> encCBOR a - <> encCBOR b - MaxTxSizeUTxO a b -> - encodeListLen 3 - <> encCBOR (2 :: Word8) - <> encCBOR a - <> encCBOR b - InputSetEmptyUTxO -> encodeListLen 1 <> encCBOR (3 :: Word8) - FeeTooSmallUTxO a b -> - encodeListLen 3 - <> encCBOR (4 :: Word8) - <> encCBOR a - <> encCBOR b - ValueNotConservedUTxO a b -> - encodeListLen 3 - <> encCBOR (5 :: Word8) - <> encCBOR a - <> encCBOR b - OutputTooSmallUTxO outs -> - encodeListLen 2 - <> encCBOR (6 :: Word8) - <> encCBOR outs - UpdateFailure a -> - encodeListLen 2 - <> encCBOR (7 :: Word8) - <> encCBOR a - WrongNetwork right wrongs -> - encodeListLen 3 - <> encCBOR (8 :: Word8) - <> encCBOR right - <> encCBOR wrongs - WrongNetworkWithdrawal right wrongs -> - encodeListLen 3 - <> encCBOR (9 :: Word8) - <> encCBOR right - <> encCBOR wrongs - OutputBootAddrAttrsTooBig outs -> - encodeListLen 2 - <> encCBOR (10 :: Word8) - <> encCBOR outs - -instance - ( EraTxOut era - , DecCBOR (EraRuleFailure "PPUP" era) - ) => - DecCBOR (ShelleyUtxoPredFailure era) - where - decCBOR = - decodeRecordSum "PredicateFailureUTXO" $ - \case - 0 -> do - ins <- decCBOR - pure (2, BadInputsUTxO ins) - 1 -> do - a <- decCBOR - b <- decCBOR - pure (3, ExpiredUTxO a b) - 2 -> do - a <- decCBOR - b <- decCBOR - pure (3, MaxTxSizeUTxO a b) - 3 -> pure (1, InputSetEmptyUTxO) - 4 -> do - a <- decCBOR - b <- decCBOR - pure (3, FeeTooSmallUTxO a b) - 5 -> do - a <- decCBOR - b <- decCBOR - pure (3, ValueNotConservedUTxO a b) - 6 -> do - outs <- decCBOR - pure (2, OutputTooSmallUTxO outs) - 7 -> do - a <- decCBOR - pure (2, UpdateFailure a) - 8 -> do - right <- decCBOR - wrongs <- decCBOR - pure (3, WrongNetwork right wrongs) - 9 -> do - right <- decCBOR - wrongs <- decCBOR - pure (3, WrongNetworkWithdrawal right wrongs) - 10 -> do - outs <- decCBOR - pure (2, OutputBootAddrAttrsTooBig outs) - k -> invalidKey k - -instance - ( EraTx era - , EraUTxO era - , ShelleyEraTxBody era - , EraGov era - , GovState era ~ ShelleyGovState era - , ExactEra ShelleyEra era - , Embed (EraRule "PPUP" era) (ShelleyUTXO era) - , Environment (EraRule "PPUP" era) ~ PpupEnv era - , Signal (EraRule "PPUP" era) ~ StrictMaybe (Update era) - , State (EraRule "PPUP" era) ~ ShelleyGovState era - , Eq (EraRuleFailure "PPUP" era) - , Show (EraRuleFailure "PPUP" era) - , EraRule "UTXO" era ~ ShelleyUTXO era - , InjectRuleFailure "UTXO" ShelleyUtxoPredFailure era - ) => - STS (ShelleyUTXO era) - where - type State (ShelleyUTXO era) = UTxOState era - type Signal (ShelleyUTXO era) = Tx era - type Environment (ShelleyUTXO era) = UtxoEnv era - type BaseM (ShelleyUTXO era) = ShelleyBase - type PredicateFailure (ShelleyUTXO era) = ShelleyUtxoPredFailure era - type Event (ShelleyUTXO era) = UtxoEvent era - - transitionRules = [utxoInductive] - - renderAssertionViolation - AssertionViolation - { avSTS - , avMsg - , avCtx = TRC (UtxoEnv _slot pp certState, UTxOState {utxosDeposited, utxosUtxo}, tx) - } = - "AssertionViolation (" - <> avSTS - <> "): " - <> avMsg - <> "\n PParams\n" - <> show pp - <> "\n Certs\n" - <> showTxCerts (tx ^. bodyTxL) - <> "\n Deposits\n" - <> show utxosDeposited - <> "\n Consumed\n" - <> show (consumedTxBody (tx ^. bodyTxL) pp certState utxosUtxo) - <> "\n Produced\n" - <> show (producedTxBody (tx ^. bodyTxL) pp certState) - - assertions = - [ PreCondition - "Deposit pot must not be negative (pre)" - (\(TRC (_, st, _)) -> utxosDeposited st >= mempty) - , PostCondition - "UTxO must increase fee pot" - (\(TRC (_, st, _)) st' -> utxosFees st' >= utxosFees st) - , PostCondition - "Deposit pot must not be negative (post)" - (\_ st' -> utxosDeposited st' >= mempty) - , let utxoBalance us = Val.inject (utxosDeposited us <> utxosFees us) <> balance (utxosUtxo us) - withdrawals :: TxBody era -> Value era - withdrawals txb = Val.inject $ foldl' (<>) mempty $ unWithdrawals $ txb ^. withdrawalsTxBodyL - in PostCondition - "Should preserve value in the UTxO state" - ( \(TRC (_, us, tx)) us' -> - utxoBalance us <> withdrawals (tx ^. bodyTxL) == utxoBalance us' - ) - ] - -utxoInductive :: - forall era. - ( EraUTxO era - , ShelleyEraTxBody era - , ExactEra ShelleyEra era - , STS (EraRule "UTXO" era) - , InjectRuleFailure "UTXO" ShelleyUtxoPredFailure era - , Embed (EraRule "PPUP" era) (EraRule "UTXO" era) - , BaseM (EraRule "UTXO" era) ~ ShelleyBase - , Environment (EraRule "UTXO" era) ~ UtxoEnv era - , State (EraRule "UTXO" era) ~ UTxOState era - , Signal (EraRule "UTXO" era) ~ Tx era - , Event (EraRule "UTXO" era) ~ UtxoEvent era - , Environment (EraRule "PPUP" era) ~ PpupEnv era - , State (EraRule "PPUP" era) ~ ShelleyGovState era - , Signal (EraRule "PPUP" era) ~ StrictMaybe (Update era) - , GovState era ~ ShelleyGovState era - ) => - TransitionRule (EraRule "UTXO" era) -utxoInductive = do - TRC (UtxoEnv slot pp certState, utxos, tx) <- judgmentContext - let UTxOState utxo _ _ ppup _ _ = utxos - txBody = tx ^. bodyTxL - outputs = txBody ^. outputsTxBodyL - genDelegs = dsGenDelegs (certDState certState) - - {- txttl txb ≥ slot -} - runTest $ validateTimeToLive txBody slot - - {- txins txb ≠ ∅ -} - runTest $ validateInputSetEmptyUTxO txBody - - {- minfee pp tx ≤ txfee txb -} - runTest $ validateFeeTooSmallUTxO pp tx utxo - - {- txins txb ⊆ dom utxo -} - runTest $ validateBadInputsUTxO utxo $ txBody ^. inputsTxBodyL - - netId <- liftSTS $ asks networkId - - {- ∀(_ → (a, _)) ∈ txouts txb, netId a = NetworkId -} - runTest $ validateWrongNetwork netId outputs - - {- ∀(a → ) ∈ txwdrls txb, netId a = NetworkId -} - runTest $ validateWrongNetworkWithdrawal netId txBody - - {- consumed pp utxo txb = produced pp poolParams txb -} - runTest $ validateValueNotConservedUTxO pp utxo certState txBody - - -- process Protocol Parameter Update Proposals - ppup' <- - trans @(EraRule "PPUP" era) $ TRC (PPUPEnv slot pp genDelegs, ppup, txBody ^. updateTxBodyL) - - {- ∀(_ → (_, c)) ∈ txouts txb, c ≥ (minUTxOValue pp) -} - runTest $ validateOutputTooSmallUTxO pp outputs - - {- ∀ ( _ ↦ (a,_)) ∈ txoutstxb, a ∈ Addrbootstrap → bootstrapAttrsSize a ≤ 64 -} - runTest $ validateOutputBootAddrAttrsTooBig outputs - - {- txsize tx ≤ maxTxSize pp -} - runTest $ validateMaxTxSizeUTxO pp tx - - updateUTxOState - pp - utxos - txBody - certState - ppup' - (tellEvent . TotalDeposits (hashAnnotated txBody)) - (\a b -> tellEvent $ TxUTxODiff a b) - --- | The ttl field marks the top of an open interval, so it must be strictly --- less than the slot, so fail if it is (>=). --- --- > txttl txb ≥ slot -validateTimeToLive :: - (ShelleyEraTxBody era, ExactEra ShelleyEra era) => - TxBody era -> - SlotNo -> - Test (ShelleyUtxoPredFailure era) -validateTimeToLive txb slot = failureUnless (ttl >= slot) $ ExpiredUTxO ttl slot - where - ttl = txb ^. ttlTxBodyL - --- | Ensure that there is at least one input in the `TxBody` --- --- > txins txb ≠ ∅ -validateInputSetEmptyUTxO :: - EraTxBody era => - TxBody era -> - Test (ShelleyUtxoPredFailure era) -validateInputSetEmptyUTxO txb = - failureUnless (txins /= Set.empty) InputSetEmptyUTxO - where - txins = txb ^. inputsTxBodyL - --- | Ensure that the fee is at least the amount specified by the `minfee` --- --- > minfee pp tx ≤ txfee txb -validateFeeTooSmallUTxO :: - EraUTxO era => - PParams era -> - Tx era -> - UTxO era -> - Test (ShelleyUtxoPredFailure era) -validateFeeTooSmallUTxO pp tx utxo = - failureUnless (minFee <= txFee) $ FeeTooSmallUTxO minFee txFee - where - minFee = getMinFeeTxUtxo pp tx utxo - txFee = txb ^. feeTxBodyL - txb = tx ^. bodyTxL - --- | Ensure all transaction inputs are present in `UTxO` --- --- > inputs ⊆ dom utxo -validateBadInputsUTxO :: - UTxO era -> - Set (TxIn (EraCrypto era)) -> - Test (ShelleyUtxoPredFailure era) -validateBadInputsUTxO utxo txins = - failureUnless (Set.null badInputs) $ BadInputsUTxO badInputs - where - {- inputs ➖ dom utxo -} - badInputs = Set.filter (`Map.notMember` unUTxO utxo) txins - --- | Make sure all addresses match the supplied NetworkId --- --- > ∀(_ → (a, _)) ∈ txouts txb, netId a = NetworkId -validateWrongNetwork :: - (EraTxOut era, Foldable f) => - Network -> - f (TxOut era) -> - Test (ShelleyUtxoPredFailure era) -validateWrongNetwork netId outputs = - failureUnless (null addrsWrongNetwork) $ WrongNetwork netId (Set.fromList addrsWrongNetwork) - where - addrsWrongNetwork = - filter - (\a -> getNetwork a /= netId) - (view addrTxOutL <$> toList outputs) - --- | Make sure all addresses match the supplied NetworkId --- --- > ∀(a → ) ∈ txwdrls txb, netId a = NetworkId -validateWrongNetworkWithdrawal :: - EraTxBody era => - Network -> - TxBody era -> - Test (ShelleyUtxoPredFailure era) -validateWrongNetworkWithdrawal netId txb = - failureUnless (null withdrawalsWrongNetwork) $ - WrongNetworkWithdrawal netId (Set.fromList withdrawalsWrongNetwork) - where - withdrawalsWrongNetwork = - filter - (\a -> raNetwork a /= netId) - (Map.keys . unWithdrawals $ txb ^. withdrawalsTxBodyL) - --- | Ensure that value consumed and produced matches up exactly --- --- > consumed pp utxo txb = produced pp poolParams txb -validateValueNotConservedUTxO :: - EraUTxO era => - PParams era -> - UTxO era -> - CertState era -> - TxBody era -> - Test (ShelleyUtxoPredFailure era) -validateValueNotConservedUTxO pp utxo dpstate txb = - failureUnless (consumedValue == producedValue) $ ValueNotConservedUTxO consumedValue producedValue - where - consumedValue = consumed pp dpstate utxo txb - producedValue = produced pp dpstate txb - --- | Ensure there are no `TxOut`s that have less than @minUTxOValue@ --- --- > ∀(_ → (_, c)) ∈ txouts txb, c ≥ (minUTxOValue pp) -validateOutputTooSmallUTxO :: - (EraTxOut era, Foldable f) => - PParams era -> - f (TxOut era) -> - Test (ShelleyUtxoPredFailure era) -validateOutputTooSmallUTxO pp outputs = - failureUnless (null outputsTooSmall) $ OutputTooSmallUTxO outputsTooSmall - where - -- minUTxOValue deposit comparison done as Coin because this rule is correct - -- strictly in the Shelley era (in ShelleyMA we additionally check that all - -- amounts are non-negative) - outputsTooSmall = - filter - (\txOut -> txOut ^. coinTxOutL < getMinCoinTxOut pp txOut) - (toList outputs) - --- | Bootstrap (i.e. Byron) addresses have variable sized attributes in them. --- It is important to limit their overall size. --- --- > ∀ ( _ ↦ (a,_)) ∈ txoutstxb, a ∈ Addrbootstrap → bootstrapAttrsSize a ≤ 64 -validateOutputBootAddrAttrsTooBig :: - (EraTxOut era, Foldable f) => - f (TxOut era) -> - Test (ShelleyUtxoPredFailure era) -validateOutputBootAddrAttrsTooBig outputs = - failureUnless (null outputsAttrsTooBig) $ OutputBootAddrAttrsTooBig outputsAttrsTooBig - where - outputsAttrsTooBig = - filter - ( \txOut -> - case txOut ^. bootAddrTxOutF of - Just addr -> bootstrapAddressAttrsSize addr > 64 - _ -> False - ) - (toList outputs) - --- | Ensure that the size of the transaction does not exceed the @maxTxSize@ protocol parameter --- --- > txsize tx ≤ maxTxSize pp -validateMaxTxSizeUTxO :: - EraTx era => - PParams era -> - Tx era -> - Test (ShelleyUtxoPredFailure era) -validateMaxTxSizeUTxO pp tx = - failureUnless (txSize <= maxTxSize) $ MaxTxSizeUTxO txSize maxTxSize - where - maxTxSize = toInteger (pp ^. ppMaxTxSizeL) - txSize = tx ^. sizeTxF - --- | This monadic action captures the final stages of the UTXO(S) rule. In particular it --- applies all of the UTxO related aditions and removals, gathers all of the fees into the --- fee pot `utxosFees` and updates the `utxosDeposited` field. Continuation supplied will --- be called on the @deposit - refund@ change, which is normally used to emit the --- `TotalDeposits` event. -updateUTxOState :: - (EraTxBody era, Monad m) => - PParams era -> - UTxOState era -> - TxBody era -> - CertState era -> - GovState era -> - (Coin -> m ()) -> - (UTxO era -> UTxO era -> m ()) -> - m (UTxOState era) -updateUTxOState pp utxos txBody certState govState depositChangeEvent txUtxODiffEvent = do - let UTxOState {utxosUtxo, utxosDeposited, utxosFees, utxosStakeDistr, utxosDonation} = utxos - UTxO utxo = utxosUtxo - !utxoAdd = txouts txBody -- These will be inserted into the UTxO - {- utxoDel = txins txb ◁ utxo -} - !(utxoWithout, utxoDel) = extractKeys utxo (txBody ^. inputsTxBodyL) - {- newUTxO = (txins txb ⋪ utxo) ∪ outs txb -} - newUTxO = utxoWithout `Map.union` unUTxO utxoAdd - deletedUTxO = UTxO utxoDel - newIncStakeDistro = updateStakeDistribution pp utxosStakeDistr deletedUTxO utxoAdd - totalRefunds = certsTotalRefundsTxBody pp certState txBody - totalDeposits = certsTotalDepositsTxBody pp certState txBody - depositChange = totalDeposits <-> totalRefunds - depositChangeEvent depositChange - txUtxODiffEvent deletedUTxO utxoAdd - pure $! - UTxOState - { utxosUtxo = UTxO newUTxO - , utxosDeposited = utxosDeposited <> depositChange - , utxosFees = utxosFees <> txBody ^. feeTxBodyL - , utxosGovState = govState - , utxosStakeDistr = newIncStakeDistro - , utxosDonation = utxosDonation - } - -instance - ( Era era - , STS (ShelleyPPUP era) - , EraRuleFailure "PPUP" era ~ ShelleyPpupPredFailure era - , Event (EraRule "PPUP" era) ~ PpupEvent era - ) => - Embed (ShelleyPPUP era) (ShelleyUTXO era) - where - wrapFailed = UpdateFailure - wrapEvent = UpdateEvent diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Utxow.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Utxow.hs deleted file mode 100644 index 4526b42ebf5..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Rules/Utxow.hs +++ /dev/null @@ -1,569 +0,0 @@ -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Shelley.Rules.Utxow ( - ShelleyUTXOW, - ShelleyUtxowPredFailure (..), - ShelleyUtxowEvent (..), - PredicateFailure, - transitionRulesUTXOW, - shelleyWitsVKeyNeeded, - witsVKeyNeededGov, - witsVKeyNeededNoGov, - - -- * Individual validation steps - validateFailedNativeScripts, - validateMissingScripts, - validateVerifiedWits, - validateMetadata, - validateMIRInsufficientGenesisSigs, - validateNeededWitnesses, - propWits, -) -where - -import Cardano.Crypto.DSIGN.Class (DSIGNAlgorithm (VerKeyDSIGN)) -import Cardano.Ledger.AuxiliaryData (AuxiliaryDataHash) -import Cardano.Ledger.BaseTypes ( - ShelleyBase, - StrictMaybe (..), - invalidKey, - maybeToStrictMaybe, - quorum, - (==>), - ) -import Cardano.Ledger.Binary (DecCBOR (..), EncCBOR (..), decodeRecordSum, encodeListLen) -import Cardano.Ledger.CertState (CertState, certDState, dsGenDelegs) -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto (Crypto (DSIGN)) -import Cardano.Ledger.Keys ( - DSignable, - GenDelegPair (..), - GenDelegs (..), - Hash, - KeyHash, - KeyRole (..), - VKey, - WitVKey (..), - asWitness, - bwKey, - verifyBootstrapWit, - ) -import Cardano.Ledger.Rules.ValidationMode ( - Test, - runTest, - runTestOnSignal, - ) -import Cardano.Ledger.SafeHash (extractHash, hashAnnotated) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.Era (ShelleyEra, ShelleyUTXOW) -import Cardano.Ledger.Shelley.LedgerState.Types (UTxOState (..)) -import Cardano.Ledger.Shelley.PParams (ProposedPPUpdates (ProposedPPUpdates), Update (..)) -import Cardano.Ledger.Shelley.Rules.Ppup (ShelleyPpupPredFailure) -import Cardano.Ledger.Shelley.Rules.Utxo ( - ShelleyUTXO, - ShelleyUtxoPredFailure, - UtxoEnv (..), - UtxoEvent, - ) -import qualified Cardano.Ledger.Shelley.SoftForks as SoftForks -import Cardano.Ledger.Shelley.Tx (witsFromTxWitnesses) -import Cardano.Ledger.Shelley.TxCert (isInstantaneousRewards) -import Cardano.Ledger.Shelley.UTxO ( - EraUTxO (..), - ScriptsProvided (..), - ShelleyScriptsNeeded (..), - UTxO, - getShelleyWitsVKeyNeededNoGov, - verifyWitVKey, - ) -import Control.DeepSeq -import Control.Monad (when) -import Control.Monad.Trans.Reader (asks) -import Control.SetAlgebra (eval, (∩), (◁)) -import Control.State.Transition ( - Embed, - IRC (..), - InitialRule, - STS (..), - TRC (..), - TransitionRule, - judgmentContext, - liftSTS, - trans, - wrapEvent, - wrapFailed, - ) -import Data.Foldable (sequenceA_) -import qualified Data.Map.Strict as Map -import qualified Data.Sequence as Seq (filter) -import qualified Data.Sequence.Strict as StrictSeq -import Data.Set (Set) -import qualified Data.Set as Set -import Data.Typeable (Typeable) -import Data.Word (Word64, Word8) -import GHC.Generics (Generic) -import Lens.Micro -import NoThunks.Class (NoThunks (..)) -import Validation - --- ========================================= - -data ShelleyUtxowPredFailure era - = InvalidWitnessesUTXOW - ![VKey 'Witness (EraCrypto era)] - | -- witnesses which failed in verifiedWits function - MissingVKeyWitnessesUTXOW - !(Set (KeyHash 'Witness (EraCrypto era))) -- witnesses which were needed and not supplied - | MissingScriptWitnessesUTXOW - !(Set (ScriptHash (EraCrypto era))) -- missing scripts - | ScriptWitnessNotValidatingUTXOW - !(Set (ScriptHash (EraCrypto era))) -- failed scripts - | UtxoFailure (PredicateFailure (EraRule "UTXO" era)) - | MIRInsufficientGenesisSigsUTXOW (Set (KeyHash 'Witness (EraCrypto era))) - | MissingTxBodyMetadataHash - !(AuxiliaryDataHash (EraCrypto era)) -- hash of the full metadata - | MissingTxMetadata - !(AuxiliaryDataHash (EraCrypto era)) -- hash of the metadata included in the transaction body - | ConflictingMetadataHash - !(AuxiliaryDataHash (EraCrypto era)) -- hash of the metadata included in the transaction body - !(AuxiliaryDataHash (EraCrypto era)) -- hash of the full metadata - -- Contains out of range values (strings too long) - | InvalidMetadata - | ExtraneousScriptWitnessesUTXOW - !(Set (ScriptHash (EraCrypto era))) -- extraneous scripts - deriving (Generic) - -type instance EraRuleFailure "UTXOW" (ShelleyEra c) = ShelleyUtxowPredFailure (ShelleyEra c) - -instance InjectRuleFailure "UTXOW" ShelleyUtxowPredFailure (ShelleyEra c) - -instance InjectRuleFailure "UTXOW" ShelleyUtxoPredFailure (ShelleyEra c) where - injectFailure = UtxoFailure - -instance InjectRuleFailure "UTXOW" ShelleyPpupPredFailure (ShelleyEra c) where - injectFailure = UtxoFailure . injectFailure - -newtype ShelleyUtxowEvent era - = UtxoEvent (Event (EraRule "UTXO" era)) - deriving (Generic) - -deriving instance Eq (Event (EraRule "UTXO" era)) => Eq (ShelleyUtxowEvent era) - -instance NFData (Event (EraRule "UTXO" era)) => NFData (ShelleyUtxowEvent era) - -instance - ( NoThunks (PredicateFailure (EraRule "UTXO" era)) - , Era era - ) => - NoThunks (ShelleyUtxowPredFailure era) - -instance - ( NFData (PredicateFailure (EraRule "UTXO" era)) - , NFData (VerKeyDSIGN (DSIGN (EraCrypto era))) - , Era era - ) => - NFData (ShelleyUtxowPredFailure era) - -deriving stock instance - ( Eq (PredicateFailure (EraRule "UTXO" era)) - , Era era - ) => - Eq (ShelleyUtxowPredFailure era) - -deriving stock instance - ( Show (PredicateFailure (EraRule "UTXO" era)) - , Era era - ) => - Show (ShelleyUtxowPredFailure era) - -instance - ( Era era - , Typeable (Script era) - , Typeable (TxAuxData era) - , EncCBOR (PredicateFailure (EraRule "UTXO" era)) - ) => - EncCBOR (ShelleyUtxowPredFailure era) - where - encCBOR = \case - InvalidWitnessesUTXOW wits -> - encodeListLen 2 <> encCBOR (0 :: Word8) <> encCBOR wits - MissingVKeyWitnessesUTXOW missing -> - encodeListLen 2 <> encCBOR (1 :: Word8) <> encCBOR missing - MissingScriptWitnessesUTXOW ss -> - encodeListLen 2 - <> encCBOR (2 :: Word8) - <> encCBOR ss - ScriptWitnessNotValidatingUTXOW ss -> - encodeListLen 2 - <> encCBOR (3 :: Word8) - <> encCBOR ss - UtxoFailure a -> - encodeListLen 2 - <> encCBOR (4 :: Word8) - <> encCBOR a - MIRInsufficientGenesisSigsUTXOW sigs -> - encodeListLen 2 - <> encCBOR (5 :: Word8) - <> encCBOR sigs - MissingTxBodyMetadataHash h -> - encodeListLen 2 <> encCBOR (6 :: Word8) <> encCBOR h - MissingTxMetadata h -> - encodeListLen 2 <> encCBOR (7 :: Word8) <> encCBOR h - ConflictingMetadataHash bodyHash fullMDHash -> - encodeListLen 3 <> encCBOR (8 :: Word8) <> encCBOR bodyHash <> encCBOR fullMDHash - InvalidMetadata -> - encodeListLen 1 <> encCBOR (9 :: Word8) - ExtraneousScriptWitnessesUTXOW ss -> - encodeListLen 2 - <> encCBOR (10 :: Word8) - <> encCBOR ss - -instance - ( Era era - , DecCBOR (PredicateFailure (EraRule "UTXO" era)) - , Typeable (Script era) - , Typeable (TxAuxData era) - ) => - DecCBOR (ShelleyUtxowPredFailure era) - where - decCBOR = decodeRecordSum "PredicateFailure (UTXOW era)" $ - \case - 0 -> do - wits <- decCBOR - pure (2, InvalidWitnessesUTXOW wits) - 1 -> do - missing <- decCBOR - pure (2, MissingVKeyWitnessesUTXOW missing) - 2 -> do - ss <- decCBOR - pure (2, MissingScriptWitnessesUTXOW ss) - 3 -> do - ss <- decCBOR - pure (2, ScriptWitnessNotValidatingUTXOW ss) - 4 -> do - a <- decCBOR - pure (2, UtxoFailure a) - 5 -> do - s <- decCBOR - pure (2, MIRInsufficientGenesisSigsUTXOW s) - 6 -> do - h <- decCBOR - pure (2, MissingTxBodyMetadataHash h) - 7 -> do - h <- decCBOR - pure (2, MissingTxMetadata h) - 8 -> do - bodyHash <- decCBOR - fullMDHash <- decCBOR - pure (3, ConflictingMetadataHash bodyHash fullMDHash) - 9 -> pure (1, InvalidMetadata) - 10 -> do - ss <- decCBOR - pure (2, ExtraneousScriptWitnessesUTXOW ss) - k -> invalidKey k - --- ================================================= --- State Transition System Instances - -initialLedgerStateUTXOW :: - forall era. - ( Embed (EraRule "UTXO" era) (ShelleyUTXOW era) - , Environment (EraRule "UTXO" era) ~ UtxoEnv era - , State (EraRule "UTXO" era) ~ UTxOState era - ) => - InitialRule (ShelleyUTXOW era) -initialLedgerStateUTXOW = do - IRC (UtxoEnv slots pp certState) <- judgmentContext - trans @(EraRule "UTXO" era) $ IRC (UtxoEnv slots pp certState) - --- | A generic Utxow witnessing function designed to be used across many Eras. --- Note the 'embed' argument lifts from the simple Shelley (ShelleyUtxowPredFailure) to --- the PredicateFailure (type family) of the context of where it is called. -transitionRulesUTXOW :: - forall era. - ( EraUTxO era - , ShelleyEraTxBody era - , ScriptsNeeded era ~ ShelleyScriptsNeeded era - , BaseM (EraRule "UTXOW" era) ~ ShelleyBase - , Embed (EraRule "UTXO" era) (EraRule "UTXOW" era) - , Environment (EraRule "UTXO" era) ~ UtxoEnv era - , State (EraRule "UTXO" era) ~ UTxOState era - , Signal (EraRule "UTXO" era) ~ Tx era - , Environment (EraRule "UTXOW" era) ~ UtxoEnv era - , State (EraRule "UTXOW" era) ~ UTxOState era - , Signal (EraRule "UTXOW" era) ~ Tx era - , InjectRuleFailure "UTXOW" ShelleyUtxowPredFailure era - , STS (EraRule "UTXOW" era) - , DSignable (EraCrypto era) (Hash (EraCrypto era) EraIndependentTxBody) - ) => - TransitionRule (EraRule "UTXOW" era) -transitionRulesUTXOW = do - (TRC (utxoEnv@(UtxoEnv _ pp certState), u, tx)) <- judgmentContext - - {- (utxo,_,_,_ ) := utxoSt -} - {- witsKeyHashes := { hashKey vk | vk ∈ dom(txwitsVKey txw) } -} - let utxo = utxosUtxo u - witsKeyHashes = witsFromTxWitnesses tx - scriptsProvided = getScriptsProvided utxo tx - - -- check scripts - {- ∀ s ∈ range(txscripts txw) ∩ Scriptnative), runNativeScript s tx -} - - runTestOnSignal $ validateFailedNativeScripts scriptsProvided tx - - {- { s | (_,s) ∈ scriptsNeeded utxo tx} = dom(txscripts txw) -} - let scriptsNeeded = getScriptsNeeded utxo (tx ^. bodyTxL) - runTest $ validateMissingScripts scriptsNeeded scriptsProvided - - -- check VKey witnesses - {- ∀ (vk ↦ σ) ∈ (txwitsVKey txw), V_vk⟦ txbodyHash ⟧_σ -} - runTestOnSignal $ validateVerifiedWits tx - - {- witsVKeyNeeded utxo tx genDelegs ⊆ witsKeyHashes -} - runTest $ validateNeededWitnesses witsKeyHashes certState utxo (tx ^. bodyTxL) - - -- check metadata hash - {- ((adh = ◇) ∧ (ad= ◇)) ∨ (adh = hashAD ad) -} - runTestOnSignal $ validateMetadata pp tx - - -- check genesis keys signatures for instantaneous rewards certificates - {- genSig := { hashKey gkey | gkey ∈ dom(genDelegs)} ∩ witsKeyHashes -} - {- { c ∈ txcerts txb ∩ TxCert_mir} ≠ ∅ ⇒ (|genSig| ≥ Quorum) ∧ (d pp > 0) -} - let genDelegs = dsGenDelegs (certDState certState) - coreNodeQuorum <- liftSTS $ asks quorum - runTest $ - validateMIRInsufficientGenesisSigs genDelegs coreNodeQuorum witsKeyHashes tx - - trans @(EraRule "UTXO" era) $ TRC (utxoEnv, u, tx) - -instance - ( Era era - , STS (ShelleyUTXO era) - , PredicateFailure (EraRule "UTXO" era) ~ ShelleyUtxoPredFailure era - , Event (EraRule "UTXO" era) ~ UtxoEvent era - ) => - Embed (ShelleyUTXO era) (ShelleyUTXOW era) - where - wrapFailed = UtxoFailure - wrapEvent = UtxoEvent - -instance - ( EraTx era - , EraUTxO era - , ShelleyEraTxBody era - , ScriptsNeeded era ~ ShelleyScriptsNeeded era - , DSignable (EraCrypto era) (Hash (EraCrypto era) EraIndependentTxBody) - , -- Allow UTXOW to call UTXO - Embed (EraRule "UTXO" era) (ShelleyUTXOW era) - , Environment (EraRule "UTXO" era) ~ UtxoEnv era - , State (EraRule "UTXO" era) ~ UTxOState era - , Signal (EraRule "UTXO" era) ~ Tx era - , EraRule "UTXOW" era ~ ShelleyUTXOW era - , InjectRuleFailure "UTXOW" ShelleyUtxowPredFailure era - , DSignable (EraCrypto era) (Hash (EraCrypto era) EraIndependentTxBody) - , EraGov era - ) => - STS (ShelleyUTXOW era) - where - type State (ShelleyUTXOW era) = UTxOState era - type Signal (ShelleyUTXOW era) = Tx era - type Environment (ShelleyUTXOW era) = UtxoEnv era - type BaseM (ShelleyUTXOW era) = ShelleyBase - type PredicateFailure (ShelleyUTXOW era) = ShelleyUtxowPredFailure era - type Event (ShelleyUTXOW era) = ShelleyUtxowEvent era - transitionRules = [transitionRulesUTXOW] - initialRules = [initialLedgerStateUTXOW] - -{- ∀ s ∈ range(txscripts txw) ∩ Scriptnative), runNativeScript s tx -} -validateFailedNativeScripts :: - EraTx era => ScriptsProvided era -> Tx era -> Test (ShelleyUtxowPredFailure era) -validateFailedNativeScripts (ScriptsProvided scriptsProvided) tx = do - let failedScripts = - Map.filter -- we keep around only non-validating native scripts - (maybe False (not . validateNativeScript tx) . getNativeScript) - scriptsProvided - failureUnless (Map.null failedScripts) $ - ScriptWitnessNotValidatingUTXOW (Map.keysSet failedScripts) - -{- { s | (_,s) ∈ scriptsNeeded utxo tx} = dom(txscripts txw) -} -{- sNeeded := scriptsNeeded utxo tx -} -{- sProvided := Map.keysSet (tx ^. witsTxL . scriptTxWitsL) -} -validateMissingScripts :: - ShelleyScriptsNeeded era -> - ScriptsProvided era -> - Test (ShelleyUtxowPredFailure era) -validateMissingScripts (ShelleyScriptsNeeded sNeeded) scriptsprovided = - sequenceA_ - [ failureUnless (sNeeded `Set.isSubsetOf` sProvided) $ - MissingScriptWitnessesUTXOW (sNeeded `Set.difference` sProvided) - , failureUnless (sProvided `Set.isSubsetOf` sNeeded) $ - ExtraneousScriptWitnessesUTXOW (sProvided `Set.difference` sNeeded) - ] - where - sProvided = Map.keysSet $ unScriptsProvided scriptsprovided - --- | Determine if the UTxO witnesses in a given transaction are correct. -validateVerifiedWits :: - ( EraTx era - , DSignable (EraCrypto era) (Hash (EraCrypto era) EraIndependentTxBody) - ) => - Tx era -> - Test (ShelleyUtxowPredFailure era) -validateVerifiedWits tx = - case failed <> failedBootstrap of - [] -> pure () - nonEmpty -> failure $ InvalidWitnessesUTXOW nonEmpty - where - txBody = tx ^. bodyTxL - txBodyHash = extractHash (hashAnnotated txBody) - wvkKey (WitVKey k _) = k - failed = - wvkKey - <$> filter - (not . verifyWitVKey txBodyHash) - (Set.toList $ tx ^. witsTxL . addrTxWitsL) - failedBootstrap = - bwKey - <$> filter - (not . verifyBootstrapWit txBodyHash) - (Set.toList $ tx ^. witsTxL . bootAddrTxWitsL) - --- | Verify that we provide at least all of the required witnesses --- --- @witsVKeyNeeded utxo tx ⊆ witsKeyHashes@ -validateNeededWitnesses :: - EraUTxO era => - -- | Provided witness - Set (KeyHash 'Witness (EraCrypto era)) -> - CertState era -> - UTxO era -> - TxBody era -> - Test (ShelleyUtxowPredFailure era) -validateNeededWitnesses witsKeyHashes certState utxo txBody = - let needed = getWitsVKeyNeeded certState utxo txBody - missingWitnesses = Set.difference needed witsKeyHashes - in failureUnless (Set.null missingWitnesses) $ - MissingVKeyWitnessesUTXOW missingWitnesses - --- | Collect the set of hashes of keys that needs to sign a --- given transaction. This set consists of the txin owners, --- certificate authors, and withdrawal reward accounts. -witsVKeyNeededGov :: - forall era. - ShelleyEraTxBody era => - TxBody era -> - GenDelegs (EraCrypto era) -> - Set (KeyHash 'Witness (EraCrypto era)) -witsVKeyNeededGov txBody genDelegs = - asWitness `Set.map` proposedUpdatesWitnesses (txBody ^. updateTxBodyL) genDelegs -{-# DEPRECATED witsVKeyNeededGov "As unnecessary. Use `getWitsVKeyNeeded` instead" #-} - -witsVKeyNeededNoGov :: - forall era. - EraTx era => - UTxO era -> - TxBody era -> - Set (KeyHash 'Witness (EraCrypto era)) -witsVKeyNeededNoGov = getShelleyWitsVKeyNeededNoGov -{-# DEPRECATED witsVKeyNeededNoGov "Use `getShelleyWitsVKeyNeededNoGov` instead" #-} - -shelleyWitsVKeyNeeded :: - forall era. - (EraTx era, ShelleyEraTxBody era) => - UTxO era -> - TxBody era -> - GenDelegs (EraCrypto era) -> - Set (KeyHash 'Witness (EraCrypto era)) -shelleyWitsVKeyNeeded utxo txBody genDelegs = - witsVKeyNeededNoGov utxo txBody - `Set.union` witsVKeyNeededGov txBody genDelegs -{-# DEPRECATED shelleyWitsVKeyNeeded "Use `getShelleyWitsVKeyNeeded` instead" #-} - --- | check metadata hash --- ((adh = ◇) ∧ (ad= ◇)) ∨ (adh = hashAD ad) -validateMetadata :: EraTx era => PParams era -> Tx era -> Test (ShelleyUtxowPredFailure era) -validateMetadata pp tx = - let txBody = tx ^. bodyTxL - pv = pp ^. ppProtocolVersionL - in case (txBody ^. auxDataHashTxBodyL, tx ^. auxDataTxL) of - (SNothing, SNothing) -> pure () - (SJust mdh, SNothing) -> failure $ MissingTxMetadata mdh - (SNothing, SJust md') -> - failure $ MissingTxBodyMetadataHash (hashTxAuxData md') - (SJust mdh, SJust md') -> - sequenceA_ - [ failureUnless (hashTxAuxData md' == mdh) $ - ConflictingMetadataHash mdh (hashTxAuxData md') - , -- check metadata value sizes - when (SoftForks.validMetadata pv) $ - failureUnless (validateTxAuxData pv md') InvalidMetadata - ] - --- | check genesis keys signatures for instantaneous rewards certificates --- --- genSig := { hashKey gkey | gkey ∈ dom(genDelegs)} ∩ witsKeyHashes --- { c ∈ txcerts txb ∩ TxCert_mir} ≠ ∅ ⇒ |genSig| ≥ Quorum -validateMIRInsufficientGenesisSigs :: - ( EraTx era - , ShelleyEraTxBody era - ) => - GenDelegs (EraCrypto era) -> - Word64 -> - Set (KeyHash 'Witness (EraCrypto era)) -> - Tx era -> - Test (ShelleyUtxowPredFailure era) -validateMIRInsufficientGenesisSigs (GenDelegs genMapping) coreNodeQuorum witsKeyHashes tx = - let genDelegates = - Set.fromList $ asWitness . genDelegKeyHash <$> Map.elems genMapping - khAsSet = witsKeyHashes - genSig = eval (genDelegates ∩ khAsSet) - txBody = tx ^. bodyTxL - mirCerts = - StrictSeq.forceToStrict - . Seq.filter isInstantaneousRewards - . StrictSeq.fromStrict - $ txBody ^. certsTxBodyL - in failureUnless - (not (null mirCerts) ==> Set.size genSig >= fromIntegral coreNodeQuorum) - $ MIRInsufficientGenesisSigsUTXOW genSig - --- | Deprecated. -proposedUpdatesWitnesses :: - StrictMaybe (Update era) -> - GenDelegs (EraCrypto era) -> - Set (KeyHash 'Witness (EraCrypto era)) -proposedUpdatesWitnesses SNothing _ = Set.empty -proposedUpdatesWitnesses (SJust (Update (ProposedPPUpdates pup) _)) (GenDelegs genDelegs) = - Set.map asWitness . Set.fromList $ Map.elems updateKeys'' - where - updateKeys' = eval (Map.keysSet pup ◁ genDelegs) - updateKeys'' = Map.map genDelegKeyHash updateKeys' - --- | Calculate the set of hash keys of the required witnesses for update --- proposals. -propWits :: - Maybe (Update era) -> - GenDelegs (EraCrypto era) -> - Set (KeyHash 'Witness (EraCrypto era)) -propWits mu = proposedUpdatesWitnesses (maybeToStrictMaybe mu) -{-# DEPRECATED - propWits - "This will become an internal function in the future. \ - \ Submit an issue if you still need it. " - #-} diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Scripts.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/Scripts.hs deleted file mode 100644 index 49866624d87..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Scripts.hs +++ /dev/null @@ -1,221 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Shelley.Scripts ( - MultiSig ( - RequireAllOf, - RequireAnyOf, - RequireSignature, - RequireMOf - ), - evalMultiSig, - validateMultiSig, - ScriptHash (..), - nativeMultiSigTag, - eqMultiSigRaw, - MultiSigRaw, -) -where - -import Cardano.Crypto.Hash.Class (HashAlgorithm) -import Cardano.Ledger.BaseTypes (invalidKey) -import Cardano.Ledger.Binary ( - Annotator (..), - DecCBOR (decCBOR), - EncCBOR (..), - ToCBOR, - decodeRecordSum, - ) -import Cardano.Ledger.Binary.Coders (Encode (..), (!>)) -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto (Crypto, HASH) -import Cardano.Ledger.Keys (KeyHash (..), KeyRole (Witness)) -import Cardano.Ledger.Keys.WitVKey (witVKeyHash) -import Cardano.Ledger.MemoBytes ( - EqRaw (..), - Mem, - MemoBytes, - Memoized (..), - getMemoRawType, - memoBytes, - pattern Memo, - ) -import Cardano.Ledger.SafeHash (SafeToHash (..)) -import Cardano.Ledger.Shelley.Era -import Control.DeepSeq (NFData) -import qualified Data.ByteString as BS -import Data.Functor.Classes (Eq1 (liftEq)) -import qualified Data.Set as Set -import GHC.Generics (Generic) -import Lens.Micro -import NoThunks.Class (NoThunks (..)) - --- | A simple language for expressing conditions under which it is valid to --- withdraw from a normal UTxO payment address or to use a stake address. --- --- The use case is for expressing multi-signature payment addresses and --- multi-signature stake addresses. These can be combined arbitrarily using --- logical operations: --- --- * multi-way \"and\"; --- * multi-way \"or\"; --- * multi-way \"N of M\". --- --- This makes it easy to express multi-signature addresses, and provides an --- extension point to express other validity conditions, e.g., as needed for --- locking funds used with lightning. -data MultiSigRaw era - = -- | Require the redeeming transaction be witnessed by the spending key - -- corresponding to the given verification key hash. - RequireSignature' !(KeyHash 'Witness (EraCrypto era)) - | -- | Require all the sub-terms to be satisfied. - RequireAllOf' ![MultiSig era] - | -- | Require any one of the sub-terms to be satisfied. - RequireAnyOf' ![MultiSig era] - | -- | Require M of the given sub-terms to be satisfied. - RequireMOf' !Int ![MultiSig era] - deriving (Eq, Generic) - deriving anyclass (NoThunks) - -deriving instance HashAlgorithm (HASH (EraCrypto era)) => Show (MultiSigRaw era) - -instance NFData (MultiSigRaw era) - -newtype MultiSig era = MultiSigConstr (MemoBytes MultiSigRaw era) - deriving (Eq, Generic) - deriving newtype (ToCBOR, NoThunks, SafeToHash) - -instance Memoized MultiSig where - type RawType MultiSig = MultiSigRaw - -deriving instance HashAlgorithm (HASH (EraCrypto era)) => Show (MultiSig era) - --- | Magic number "memorialized" in the ValidateScript class under the method: --- scriptPrefixTag:: Core.Script era -> Bs.ByteString, for the Shelley Era. -nativeMultiSigTag :: BS.ByteString -nativeMultiSigTag = "\00" - -instance Crypto c => EraScript (ShelleyEra c) where - type Script (ShelleyEra c) = MultiSig (ShelleyEra c) - type NativeScript (ShelleyEra c) = MultiSig (ShelleyEra c) - - -- Calling this partial function will result in compilation error, since ByronEra has - -- no instance for EraScript type class. - upgradeScript = error "It is not possible to translate a script with 'upgradeScript' from Byron era" - - getNativeScript = Just - - fromNativeScript = id - - -- In the ShelleyEra there is only one kind of Script and its tag is "\x00" - scriptPrefixTag _script = nativeMultiSigTag - -deriving newtype instance NFData (MultiSig era) - -deriving via - Mem MultiSigRaw era - instance - Era era => DecCBOR (Annotator (MultiSig era)) - -instance EqRaw (MultiSig era) where - eqRaw = eqMultiSigRaw - -pattern RequireSignature :: Era era => KeyHash 'Witness (EraCrypto era) -> MultiSig era -pattern RequireSignature akh <- - MultiSigConstr (Memo (RequireSignature' akh) _) - where - RequireSignature akh = - MultiSigConstr $ memoBytes (Sum RequireSignature' 0 !> To akh) - -pattern RequireAllOf :: Era era => [MultiSig era] -> MultiSig era -pattern RequireAllOf ms <- - MultiSigConstr (Memo (RequireAllOf' ms) _) - where - RequireAllOf ms = - MultiSigConstr $ memoBytes (Sum RequireAllOf' 1 !> To ms) - -pattern RequireAnyOf :: Era era => [MultiSig era] -> MultiSig era -pattern RequireAnyOf ms <- - MultiSigConstr (Memo (RequireAnyOf' ms) _) - where - RequireAnyOf ms = - MultiSigConstr $ memoBytes (Sum RequireAnyOf' 2 !> To ms) - -pattern RequireMOf :: Era era => Int -> [MultiSig era] -> MultiSig era -pattern RequireMOf n ms <- - MultiSigConstr (Memo (RequireMOf' n ms) _) - where - RequireMOf n ms = - MultiSigConstr $ memoBytes (Sum RequireMOf' 3 !> To n !> To ms) - -{-# COMPLETE RequireSignature, RequireAllOf, RequireAnyOf, RequireMOf #-} - --- | Encodes memoized bytes created upon construction. -instance Era era => EncCBOR (MultiSig era) - -instance Era era => DecCBOR (Annotator (MultiSigRaw era)) where - decCBOR = decodeRecordSum "MultiSig" $ - \case - 0 -> (,) 2 . pure . RequireSignature' . KeyHash <$> decCBOR - 1 -> do - multiSigs <- sequence <$> decCBOR - pure (2, RequireAllOf' <$> multiSigs) - 2 -> do - multiSigs <- sequence <$> decCBOR - pure (2, RequireAnyOf' <$> multiSigs) - 3 -> do - m <- decCBOR - multiSigs <- sequence <$> decCBOR - pure (3, RequireMOf' m <$> multiSigs) - k -> invalidKey k - --- | Check the equality of two underlying types, while ignoring their binary --- representation, which `Eq` instance normally does. This is used for testing. -eqMultiSigRaw :: MultiSig era -> MultiSig era -> Bool -eqMultiSigRaw t1 t2 = go (getMemoRawType t1) (getMemoRawType t2) - where - go (RequireSignature' kh1) (RequireSignature' kh2) = kh1 == kh2 - go (RequireAllOf' ts1) (RequireAllOf' ts2) = liftEq eqMultiSigRaw ts1 ts2 - go (RequireAnyOf' ts1) (RequireAnyOf' ts2) = liftEq eqMultiSigRaw ts1 ts2 - go (RequireMOf' n1 ts1) (RequireMOf' n2 ts2) = n1 == n2 && liftEq eqMultiSigRaw ts1 ts2 - go _ _ = False - --- | Script evaluator for native multi-signature scheme. 'vhks' is the set of --- key hashes that signed the transaction to be validated. -evalMultiSig :: - Era era => - Set.Set (KeyHash 'Witness (EraCrypto era)) -> - MultiSig era -> - Bool -evalMultiSig vhks = go - where - -- The important part of this validator is that it will stop as soon as it reaches the - -- required number of valid scripts - isValidMOf n [] = n <= 0 - isValidMOf n (msig : msigs) = - n <= 0 || if go msig then isValidMOf (n - 1) msigs else isValidMOf n msigs - go = \case - RequireSignature hk -> Set.member hk vhks - RequireAllOf msigs -> all go msigs - RequireAnyOf msigs -> any go msigs - RequireMOf m msigs -> isValidMOf m msigs - --- | Script validator for native multi-signature scheme. -validateMultiSig :: EraTx era => Tx era -> MultiSig era -> Bool -validateMultiSig tx = - evalMultiSig $ Set.map witVKeyHash (tx ^. witsTxL . addrTxWitsL) -{-# INLINE validateMultiSig #-} diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/SoftForks.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/SoftForks.hs deleted file mode 100644 index 75fc835a94d..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/SoftForks.hs +++ /dev/null @@ -1,21 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE TypeApplications #-} - -module Cardano.Ledger.Shelley.SoftForks ( - validMetadata, - restrictPoolMetadataHash, -) -where - -import Cardano.Ledger.BaseTypes (ProtVer (..), natVersion) - -validMetadata :: - ProtVer -> - Bool -validMetadata pv = pv > ProtVer (natVersion @2) 0 - -restrictPoolMetadataHash :: - ProtVer -> - Bool -restrictPoolMetadataHash pv = pv > ProtVer (natVersion @4) 0 diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/StabilityWindow.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/StabilityWindow.hs deleted file mode 100644 index e5cee15cec5..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/StabilityWindow.hs +++ /dev/null @@ -1,36 +0,0 @@ -module Cardano.Ledger.Shelley.StabilityWindow ( - computeStabilityWindow, - computeRandomnessStabilisationWindow, -) -where - -import Cardano.Ledger.BaseTypes -import Data.Word (Word64) - --- | Calculate the stability window (e.g. the number of slots needed for a block --- to become stable) from the security param and the active slot coefficient. --- --- The value 3k/f is determined to be a suitabe value as per --- https://docs.google.com/document/d/1B8BNMx8jVWRjYiUBOaI3jfZ7dQNvNTSDODvT5iOuYCU/edit#heading=h.qh2zcajmu6hm -computeStabilityWindow :: - Word64 -> - ActiveSlotCoeff -> - Word64 -computeStabilityWindow k asc = - ceiling $ (3 * fromIntegral k) / f - where - f = unboundRational . activeSlotVal $ asc - --- | Calculate the randomness stabilisation window from the security param and --- the active slot coefficient. --- --- The value 4k/f is determined to be a suitabe value as per --- https://docs.google.com/document/d/1B8BNMx8jVWRjYiUBOaI3jfZ7dQNvNTSDODvT5iOuYCU/edit#heading=h.qh2zcajmu6hm -computeRandomnessStabilisationWindow :: - Word64 -> - ActiveSlotCoeff -> - Word64 -computeRandomnessStabilisationWindow k asc = - ceiling $ (4 * fromIntegral k) / f - where - f = unboundRational . activeSlotVal $ asc diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Transition.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/Transition.hs deleted file mode 100644 index 2a10dd823b9..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Transition.hs +++ /dev/null @@ -1,495 +0,0 @@ -{-# LANGUAGE ConstrainedClassMethods #-} -{-# LANGUAGE DefaultSignatures #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableSuperClasses #-} - --- | Besides capturing all configuration that is necessary to progress to a specific era, --- this interface also provides fast forward functionality that is used in testing and --- benchmarking in order to initilize a chain in a particular era without going through --- the trouble of generating all the history for preceeding eras. -module Cardano.Ledger.Shelley.Transition ( - EraTransition (..), - tcInitialFundsL, - tcInitialStakingL, - mkShelleyTransitionConfig, - createInitialState, - registerInitialFundsThenStaking, - toShelleyTransitionConfigPairs, - protectMainnet, - protectMainnetLens, -) where - -import Cardano.Ledger.Address -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.CertState -import Cardano.Ledger.Coin -import Cardano.Ledger.Core -import Cardano.Ledger.Credential -import Cardano.Ledger.Crypto -import Cardano.Ledger.EpochBoundary -import Cardano.Ledger.Keys -import Cardano.Ledger.PoolDistr -import Cardano.Ledger.Shelley.Era -import Cardano.Ledger.Shelley.Genesis -import Cardano.Ledger.Shelley.Governance -import Cardano.Ledger.Shelley.LedgerState -import Cardano.Ledger.Shelley.Translation ( - FromByronTranslationContext (..), - toFromByronTranslationContext, - ) -import qualified Cardano.Ledger.UMap as UM -import Cardano.Ledger.UTxO -import Cardano.Ledger.Val -import Data.Aeson (FromJSON (..), KeyValue (..), ToJSON (..), object, pairs, withObject, (.:)) -import Data.Default.Class -import Data.Kind -import qualified Data.ListMap as LM -import qualified Data.ListMap as ListMap -import qualified Data.Map.Strict as Map -import Data.Void (Void) -import GHC.Generics (Generic) -import GHC.Stack -import Lens.Micro -import NoThunks.Class (NoThunks (..)) - -class - ( EraTxOut era - , EraGov era - , ToJSON (TransitionConfig era) - , FromJSON (TransitionConfig era) - , Default (StashedAVVMAddresses era) - ) => - EraTransition era - where - -- | Cumulative configuration that is needed to be able to start in a current era - data TransitionConfig era :: Type - - mkTransitionConfig :: - -- | Translation context necessary for advancing from previous era into the current - -- one. This will usually be the contents of genesis file, if one exists for the - -- current era - TranslationContext era -> - -- | Transition configuration for the previous era. - TransitionConfig (PreviousEra era) -> - TransitionConfig era - - injectIntoTestState :: - -- | Extract data from the given transition configuration and store it in the given state. - -- - -- /Warning/ - Should only be used in testing and benchmarking. Will result in an error - -- when 'NetworkId' is set to 'Mainnet'. - TransitionConfig era -> - NewEpochState era -> - NewEpochState era - - -- | In case when a previous era is available, we should always be able to access - -- `TransitionConfig` for the previous era, from within the current era's - -- `TransitionConfig` - tcPreviousEraConfigL :: - EraTransition (PreviousEra era) => - Lens' (TransitionConfig era) (TransitionConfig (PreviousEra era)) - - -- | Lens for the `TranslationContext` for the current era from the `TransitionConfig` - -- Translation context is a different name for the Genesis type for each era, they are - -- one and the same concept. - tcTranslationContextL :: - Lens' (TransitionConfig era) (TranslationContext era) - - -- | Lens for the `ShelleyGenesis` from the `TransitionConfig`. Default implementation - -- looks in the previous era's config - tcShelleyGenesisL :: Lens' (TransitionConfig era) (ShelleyGenesis (EraCrypto era)) - default tcShelleyGenesisL :: - (EraTransition (PreviousEra era), EraCrypto (PreviousEra era) ~ EraCrypto era) => - Lens' (TransitionConfig era) (ShelleyGenesis (EraCrypto era)) - tcShelleyGenesisL = tcPreviousEraConfigL . tcShelleyGenesisL - - -- | Get the initial PParams for the current era from the `TransitionConfig`. Note that - -- this is only useful for testing and fast forward functionality, because this function - -- assumes no on-chain changes to PParams through PParamsUpdate functionality. - -- - -- Default implementation will use the PParams from the Previous era and the current - -- `TranslationContext` to construct PParams for the current era. - -- - -- /Warning/ - Should only be used in testing and benchmarking - tcInitialPParamsG :: SimpleGetter (TransitionConfig era) (PParams era) - default tcInitialPParamsG :: - ( EraTransition (PreviousEra era) - , TranslateEra era PParams - , TranslationError era PParams ~ Void - ) => - SimpleGetter (TransitionConfig era) (PParams era) - tcInitialPParamsG = - to $ \tc -> - translateEra' - (tc ^. tcTranslationContextL) - (tc ^. tcPreviousEraConfigL . tcInitialPParamsG) - -tcNetworkIDG :: EraTransition era => SimpleGetter (TransitionConfig era) Network -tcNetworkIDG = tcShelleyGenesisL . to sgNetworkId - -registerInitialFundsThenStaking :: - EraTransition era => - TransitionConfig era -> - NewEpochState era -> - NewEpochState era -registerInitialFundsThenStaking cfg = - -- We must first register the initial funds, because the stake - -- information depends on it. - registerInitialStaking cfg . registerInitialFunds cfg - -instance Crypto c => EraTransition (ShelleyEra c) where - newtype TransitionConfig (ShelleyEra c) = ShelleyTransitionConfig - { stcShelleyGenesis :: ShelleyGenesis c - } - deriving (Eq, Show, Generic) - - mkTransitionConfig = - error "Impossible: There is no EraTransition instance for ByronEra" - - injectIntoTestState = registerInitialFundsThenStaking - - tcPreviousEraConfigL = notSupportedInThisEraL - - tcTranslationContextL = - tcShelleyGenesisL . lens toFromByronTranslationContext setFBTC - where - setFBTC shelleyGenesis FromByronTranslationContext {..} = - shelleyGenesis - { sgGenDelegs = fbtcGenDelegs - , sgProtocolParams = fbtcProtocolParams - , sgMaxLovelaceSupply = fbtcMaxLovelaceSupply - } - - tcShelleyGenesisL = lens stcShelleyGenesis (\tc sg -> tc {stcShelleyGenesis = sg}) - - tcInitialPParamsG = to (sgProtocolParams . stcShelleyGenesis) - --- | Get the initial funds from the `TransitionConfig`. This value must be non-empty --- only during testing and benchmarking, it must never contain anything on a real system. --- --- /Warning/ - Should only be used in testing and benchmarking. Will result in an error --- when NetworkId is set to Mainnet -tcInitialFundsL :: - (HasCallStack, EraTransition era) => - Lens' (TransitionConfig era) (LM.ListMap (Addr (EraCrypto era)) Coin) -tcInitialFundsL = - protectMainnetLens "InitialFunds" null $ - tcShelleyGenesisL . sgInitialFundsL - --- | Get the initial staking from the `TransitionConfig`. This value must be non-empty --- only during testing and benchmarking, it must never contain anything on a real system. --- --- /Warning/ - Should only be used in testing and benchmarking. Will result in an error --- when NetworkId is set to Mainnet -tcInitialStakingL :: - (HasCallStack, EraTransition era) => - Lens' (TransitionConfig era) (ShelleyGenesisStaking (EraCrypto era)) -tcInitialStakingL = - protectMainnetLens "InitialStaking" (== mempty) $ - tcShelleyGenesisL . sgStakingL - --- | Constructor for the base Shelley `TransitionConfig` -mkShelleyTransitionConfig :: ShelleyGenesis c -> TransitionConfig (ShelleyEra c) -mkShelleyTransitionConfig = ShelleyTransitionConfig - -protectMainnetLens :: - (HasCallStack, EraTransition era) => - String -> - (a -> Bool) -> - Lens' (TransitionConfig era) a -> - Lens' (TransitionConfig era) a -protectMainnetLens name isMainnetSafe l = - lens - (\g -> protectMainnet name g isMainnetSafe $ g ^. l) - (\g x -> g & l .~ x) - -protectMainnet :: - (HasCallStack, EraTransition era) => - String -> - TransitionConfig era -> - (a -> Bool) -> - a -> - a -protectMainnet name g isMainnetSafe m = - if g ^. tcNetworkIDG == Mainnet && not (isMainnetSafe m) - then error $ "Injection of " ++ name ++ " is not possible on Mainnet" - else m - -deriving instance Crypto c => NoThunks (TransitionConfig (ShelleyEra c)) - -instance Crypto c => ToJSON (TransitionConfig (ShelleyEra c)) where - toJSON = object . toShelleyTransitionConfigPairs - toEncoding = pairs . mconcat . toShelleyTransitionConfigPairs - -instance Crypto c => FromJSON (TransitionConfig (ShelleyEra c)) where - parseJSON = withObject "ShelleyTransitionConfig" $ \o -> do - sg <- o .: "shelley" - pure $ ShelleyTransitionConfig {stcShelleyGenesis = sg} - -toShelleyTransitionConfigPairs :: - (KeyValue e a, Crypto c) => - TransitionConfig (ShelleyEra c) -> - [a] -toShelleyTransitionConfigPairs stc@(ShelleyTransitionConfig _) = - ["shelley" .= object (toShelleyGenesisPairs (stcShelleyGenesis stc))] - --- | Helper function for constructing the initial state for any era --- --- /Warning/ - Should only be used in testing and benchmarking. Will result in an error --- when NetworkId is set to Mainnet --- --- This function does not register any initial funds or delegates. -createInitialState :: - forall era. - (EraTransition era, HasCallStack) => - TransitionConfig era -> - NewEpochState era -createInitialState tc = - protectMainnet - "InitialState" - tc - (const False) - NewEpochState - { nesEL = initialEpochNo - , nesBprev = BlocksMade Map.empty - , nesBcur = BlocksMade Map.empty - , nesEs = - EpochState - { esAccountState = AccountState zero reserves - , esSnapshots = emptySnapShots - , esLState = - LedgerState - { lsUTxOState = - smartUTxOState pp initialUtxo zero zero govState zero - , lsCertState = - CertState - { certDState = dState {dsGenDelegs = GenDelegs (sgGenDelegs sg)} - , certPState = def - , certVState = def - } - } - , esNonMyopic = def - } - , nesRu = SNothing - , nesPd = PoolDistr Map.empty - , stashedAVVMAddresses = def - } - where - dState :: DState era - dState = def - govState :: GovState era - govState = - emptyGovState - & curPParamsGovStateL .~ pp - & prevPParamsGovStateL .~ pp - pp :: PParams era - pp = tc ^. tcInitialPParamsG - sg :: ShelleyGenesis (EraCrypto era) - sg = tc ^. tcShelleyGenesisL - initialEpochNo :: EpochNo - initialEpochNo = EpochNo 0 - initialUtxo :: UTxO era - initialUtxo = mempty - reserves :: Coin - reserves = word64ToCoin (sgMaxLovelaceSupply sg) <-> coinBalance initialUtxo - --- | Register the initial staking information in the 'NewEpochState'. --- --- HERE BE DRAGONS! This function is intended to help in testing. --- --- In production, the genesis should /not/ contain any initial staking. --- --- Any existing staking information is overridden, but the UTxO is left --- untouched. --- --- /Warning/ - Should only be used in testing and benchmarking. Will result in an error --- when NetworkId is set to Mainnet -registerInitialStaking :: - forall era. - (HasCallStack, EraTransition era) => - TransitionConfig era -> - NewEpochState era -> - NewEpochState era -registerInitialStaking tc nes = - nes - { nesEs = - epochState - { esLState = - ledgerState - { lsCertState = - dpState - { certDState = dState' - , certPState = pState' - } - } - , esSnapshots = - (esSnapshots epochState) - { ssStakeMark = initSnapShot - , ssStakeMarkPoolDistr = calculatePoolDistr initSnapShot - } - } - , -- Note that this is only applicable in the initial configuration where - -- there is no existing stake distribution, since it would completely - -- overwrite any such thing. - nesPd = calculatePoolDistr initSnapShot - } - where - ShelleyGenesisStaking {sgsPools, sgsStake} = tc ^. tcInitialStakingL - NewEpochState {nesEs = epochState} = nes - ledgerState = esLState epochState - dpState = lsCertState ledgerState - - -- New delegation state. Since we're using base addresses, we only care - -- about updating the '_delegations' field. - -- - -- See STS DELEG for details - dState' :: DState era - dState' = - (certDState dpState) - { dsUnified = - UM.unify - ( Map.map (const $ UM.RDPair (CompactCoin 0) (CompactCoin 0)) - . Map.mapKeys KeyHashObj - $ sgsStakeMap - ) - mempty - (Map.mapKeys KeyHashObj sgsStakeMap) - mempty - } - where - sgsStakeMap = ListMap.toMap sgsStake - - -- We consider pools as having been registered in slot 0 - -- See STS POOL for details - pState' :: PState era - pState' = - (certPState dpState) - { psStakePoolParams = ListMap.toMap sgsPools - } - - pp = nes ^. nesEsL . curPParamsEpochStateL - - -- The new stake distribution is made on the basis of a snapshot taken - -- during the previous epoch. We create a "fake" snapshot in order to - -- establish an initial stake distribution. - initSnapShot :: SnapShot (EraCrypto era) - initSnapShot = - -- Since we build a stake from nothing, we first initialise an - -- 'IncrementalStake' as empty, and then: - -- - -- 1. Add the initial UTxO, whilst deleting nothing. - -- 2. Update the stake map given the initial delegation. - incrementalStakeDistr - pp - -- Note that 'updateStakeDistribution' takes first the set of UTxO to - -- delete, and then the set to add. In our case, there is nothing to - -- delete, since this is an initial UTxO set. - (updateStakeDistribution pp mempty mempty (utxosUtxo (lsUTxOState ledgerState))) - dState' - pState' - --- | Register the initial funds in the 'NewEpochState'. --- --- HERE BE DRAGONS! This function is intended to help in testing. --- --- In production, the genesis should /not/ contain any initial funds. --- --- The given funds are /added/ to the existing UTxO. --- --- PRECONDITION: the given funds must not be part of the existing UTxO. --- > forall (addr, _) in initialFunds. --- > Map.notElem (initialFundsPseudoTxIn addr) existingUTxO --- --- PROPERTY: --- > genesisUTxO genesis --- > == (sgInitialFunds genesis) --- > == (registerInitialFunds (sgInitialFunds genesis) --- > ) --- --- /Warning/ - Should only be used in testing and benchmarking. Will result in an error --- when NetworkId is set to Mainnet -registerInitialFunds :: - forall era. - ( EraTransition era - , HasCallStack - ) => - TransitionConfig era -> - NewEpochState era -> - NewEpochState era -registerInitialFunds tc nes = - nes - { nesEs = - epochState - { esAccountState = accountState' - , esLState = ledgerState' - } - } - where - epochState = nesEs nes - accountState = esAccountState epochState - ledgerState = esLState epochState - utxoState = lsUTxOState ledgerState - utxo = utxosUtxo utxoState - reserves = asReserves accountState - - initialFundsUtxo :: UTxO era - initialFundsUtxo = - UTxO $ - Map.fromList - [ (txIn, txOut) - | (addr, amount) <- ListMap.toList (tc ^. tcInitialFundsL) - , let txIn = initialFundsPseudoTxIn addr - txOut = mkBasicTxOut addr (inject amount) - ] - - utxo' = mergeUtxoNoOverlap utxo initialFundsUtxo - - -- Update the reserves - accountState' = - accountState - { asReserves = reserves <-> coin (balance initialFundsUtxo) - } - - -- Since we only add entries to our UTxO, rather than spending them, there - -- is nothing to delete in the incremental update. - utxoToDel = UTxO mempty - ledgerState' = - ledgerState - { lsUTxOState = - utxoState - { utxosUtxo = utxo' - , -- Normally we would incrementally update here. But since we pass - -- the full UTxO as "toAdd" rather than a delta, we simply - -- reinitialise the full incremental stake. - utxosStakeDistr = - updateStakeDistribution - (nes ^. nesEsL . curPParamsEpochStateL) - mempty - utxoToDel - utxo' - } - } - - -- Merge two UTxOs, throw an 'error' in case of overlap - mergeUtxoNoOverlap :: - HasCallStack => - UTxO era -> - UTxO era -> - UTxO era - mergeUtxoNoOverlap (UTxO m1) (UTxO m2) = - UTxO $ - Map.unionWithKey - (\k _ _ -> error $ "initial fund part of UTxO: " <> show k) - m1 - m2 diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Translation.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/Translation.hs deleted file mode 100644 index c009188d83a..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Translation.hs +++ /dev/null @@ -1,57 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Shelley.Translation ( - FromByronTranslationContext (..), - emptyFromByronTranslationContext, - toFromByronTranslationContext, -) -where - -import Cardano.Ledger.Core (PParams, TranslationContext, emptyPParams) -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Keys -import Cardano.Ledger.Shelley.Era (ShelleyEra) -import Cardano.Ledger.Shelley.Genesis (ShelleyGenesis (..)) -import Data.Map (Map) -import qualified Data.Map as Map -import GHC.Generics (Generic) -import GHC.Word (Word64) -import NoThunks.Class (NoThunks (..)) - --- | Required data to translate a Byron ledger into a Shelley ledger. -data FromByronTranslationContext c = FromByronTranslationContext - { fbtcGenDelegs :: !(Map (KeyHash 'Genesis c) (GenDelegPair c)) - , fbtcProtocolParams :: !(PParams (ShelleyEra c)) - , fbtcMaxLovelaceSupply :: !Word64 - } - deriving (Eq, Show, Generic) - --- | Trivial FromByronTranslationContext value, for use in cases where we do not need --- to translate from Byron to Shelley. -emptyFromByronTranslationContext :: Crypto c => FromByronTranslationContext c -emptyFromByronTranslationContext = - FromByronTranslationContext - { fbtcGenDelegs = Map.empty - , fbtcMaxLovelaceSupply = 0 - , fbtcProtocolParams = emptyPParams - } - -toFromByronTranslationContext :: - ShelleyGenesis c -> - FromByronTranslationContext c -toFromByronTranslationContext ShelleyGenesis {sgGenDelegs, sgMaxLovelaceSupply, sgProtocolParams} = - FromByronTranslationContext - { fbtcGenDelegs = sgGenDelegs - , fbtcProtocolParams = sgProtocolParams - , fbtcMaxLovelaceSupply = sgMaxLovelaceSupply - } - -deriving instance Crypto c => NoThunks (FromByronTranslationContext c) - -type instance TranslationContext (ShelleyEra c) = FromByronTranslationContext c diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Tx.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/Tx.hs deleted file mode 100644 index f184c6c0d32..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/Tx.hs +++ /dev/null @@ -1,402 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Shelley.Tx ( - -- * Transaction - ShelleyTx ( - ShelleyTx, - body, - wits, - auxiliaryData - ), - ShelleyTxRaw, - bodyShelleyTxL, - witsShelleyTxL, - auxDataShelleyTxL, - sizeShelleyTxF, - segwitTx, - mkBasicShelleyTx, - shelleyMinFeeTx, - witsFromTxWitnesses, - shelleyEqTxRaw, - - -- * Deprecated - txwitsScript, - hashMultiSigScript, -) -where - -import Cardano.Ledger.Binary ( - Annotator (..), - DecCBOR (decCBOR), - EncCBOR (encCBOR), - ToCBOR, - decodeNullMaybe, - encodeNullMaybe, - runAnnotator, - ) -import Cardano.Ledger.Binary.Coders -import qualified Cardano.Ledger.Binary.Plain as Plain -import Cardano.Ledger.Coin (Coin) -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto (Crypto, StandardCrypto) -import Cardano.Ledger.Keys (KeyHash, KeyRole (Witness)) -import Cardano.Ledger.Keys.Bootstrap (bootstrapWitKeyHash) -import Cardano.Ledger.Keys.WitVKey (witVKeyHash) -import Cardano.Ledger.MemoBytes ( - EqRaw (..), - Mem, - MemoBytes, - Memoized (..), - memoBytes, - mkMemoBytes, - pattern Memo, - ) -import Cardano.Ledger.SafeHash (SafeToHash (..)) -import Cardano.Ledger.Shelley.Era (ShelleyEra) -import Cardano.Ledger.Shelley.Scripts (MultiSig (..), validateMultiSig) -import Cardano.Ledger.Shelley.TxAuxData () -import Cardano.Ledger.Shelley.TxBody () -import Cardano.Ledger.Shelley.TxWits () -import Cardano.Ledger.Val ((<+>), (<×>)) -import Control.DeepSeq (NFData) -import qualified Data.ByteString.Lazy as LBS -import qualified Data.ByteString.Short as SBS -import Data.Functor.Classes (Eq1 (liftEq)) -import Data.Map.Strict (Map) -import Data.Maybe.Strict ( - StrictMaybe (..), - maybeToStrictMaybe, - strictMaybeToMaybe, - ) -import Data.Set (Set) -import qualified Data.Set as Set -import Data.Typeable (Typeable) -import GHC.Generics (Generic) -import Lens.Micro (Lens', SimpleGetter, lens, to, (^.)) -import NoThunks.Class (NoThunks (..)) - --- ======================================================== - -data ShelleyTxRaw era = ShelleyTxRaw - { strBody :: !(TxBody era) - , strWits :: !(TxWits era) - , strAuxiliaryData :: !(StrictMaybe (TxAuxData era)) - } - deriving (Generic, Typeable) - -instance - ( NFData (TxBody era) - , NFData (TxWits era) - , NFData (TxAuxData era) - ) => - NFData (ShelleyTxRaw era) - -deriving instance - ( Era era - , Eq (TxBody era) - , Eq (TxWits era) - , Eq (TxAuxData era) - ) => - Eq (ShelleyTxRaw era) - -deriving instance - ( Era era - , Show (TxBody era) - , Show (TxWits era) - , Show (TxAuxData era) - ) => - Show (ShelleyTxRaw era) - -instance - ( Era era - , NoThunks (TxAuxData era) - , NoThunks (TxBody era) - , NoThunks (TxWits era) - ) => - NoThunks (ShelleyTxRaw era) - -newtype ShelleyTx era = TxConstr (MemoBytes ShelleyTxRaw era) - deriving newtype (SafeToHash, ToCBOR) - deriving (Generic) - -instance Memoized ShelleyTx where - type RawType ShelleyTx = ShelleyTxRaw - --- | `TxBody` setter and getter for `ShelleyTx`. The setter does update --- memoized binary representation. -bodyShelleyTxL :: EraTx era => Lens' (ShelleyTx era) (TxBody era) -bodyShelleyTxL = - lens (\(TxConstr (Memo tx _)) -> strBody tx) $ - \(TxConstr (Memo tx _)) txBody -> - TxConstr $ memoBytes $ encodeShelleyTxRaw $ tx {strBody = txBody} -{-# INLINEABLE bodyShelleyTxL #-} - --- | `TxWits` setter and getter for `ShelleyTx`. The setter does update --- memoized binary representation. -witsShelleyTxL :: EraTx era => Lens' (ShelleyTx era) (TxWits era) -witsShelleyTxL = - lens (\(TxConstr (Memo tx _)) -> strWits tx) $ - \(TxConstr (Memo tx _)) txWits -> - TxConstr $ memoBytes $ encodeShelleyTxRaw $ tx {strWits = txWits} -{-# INLINEABLE witsShelleyTxL #-} - --- | `TxAuxData` setter and getter for `ShelleyTx`. The setter does update --- memoized binary representation. -auxDataShelleyTxL :: EraTx era => Lens' (ShelleyTx era) (StrictMaybe (TxAuxData era)) -auxDataShelleyTxL = - lens (\(TxConstr (Memo tx _)) -> strAuxiliaryData tx) $ - \(TxConstr (Memo tx _)) auxData -> mkShelleyTx $ tx {strAuxiliaryData = auxData} -{-# INLINEABLE auxDataShelleyTxL #-} - --- | Size getter for `ShelleyTx`. -sizeShelleyTxF :: Era era => SimpleGetter (ShelleyTx era) Integer -sizeShelleyTxF = to (\(TxConstr (Memo _ bytes)) -> fromIntegral $ SBS.length bytes) -{-# INLINEABLE sizeShelleyTxF #-} - -mkShelleyTx :: EraTx era => ShelleyTxRaw era -> ShelleyTx era -mkShelleyTx = TxConstr . memoBytes . encodeShelleyTxRaw -{-# INLINEABLE mkShelleyTx #-} - -mkBasicShelleyTx :: EraTx era => TxBody era -> ShelleyTx era -mkBasicShelleyTx txBody = - mkShelleyTx $ - ShelleyTxRaw - { strBody = txBody - , strWits = mkBasicTxWits - , strAuxiliaryData = SNothing - } - -instance Crypto c => EraTx (ShelleyEra c) where - {-# SPECIALIZE instance EraTx (ShelleyEra StandardCrypto) #-} - - type Tx (ShelleyEra c) = ShelleyTx (ShelleyEra c) - - mkBasicTx = mkBasicShelleyTx - - bodyTxL = bodyShelleyTxL - {-# INLINE bodyTxL #-} - - witsTxL = witsShelleyTxL - {-# INLINE witsTxL #-} - - auxDataTxL = auxDataShelleyTxL - {-# INLINE auxDataTxL #-} - - sizeTxF = sizeShelleyTxF - {-# INLINE sizeTxF #-} - - validateNativeScript = validateMultiSig - {-# INLINE validateNativeScript #-} - - getMinFeeTx pp tx _ = shelleyMinFeeTx pp tx - - upgradeTx = - error - "Calling this function will cause a compilation error, since there is no Tx instance for Byron" - -instance (Tx era ~ ShelleyTx era, EraTx era) => EqRaw (ShelleyTx era) where - eqRaw = shelleyEqTxRaw - -shelleyEqTxRaw :: EraTx era => Tx era -> Tx era -> Bool -shelleyEqTxRaw tx1 tx2 = - eqRaw (tx1 ^. bodyTxL) (tx2 ^. bodyTxL) - && eqRaw (tx1 ^. witsTxL) (tx2 ^. witsTxL) - && liftEq -- TODO: Implement Eq1 instance for StrictMaybe - eqRaw - (strictMaybeToMaybe (tx1 ^. auxDataTxL)) - (strictMaybeToMaybe (tx2 ^. auxDataTxL)) - -deriving newtype instance - ( NFData (TxBody era) - , NFData (TxWits era) - , NFData (TxAuxData era) - ) => - NFData (ShelleyTx era) - -deriving newtype instance - ( Era era - , Eq (TxBody era) - , Eq (TxWits era) - , Eq (TxAuxData era) - ) => - Eq (ShelleyTx era) - -deriving newtype instance - (Era era, Show (TxBody era), Show (TxWits era), Show (TxAuxData era)) => - Show (ShelleyTx era) - -deriving newtype instance - ( Era era - , NoThunks (TxAuxData era) - , NoThunks (TxBody era) - , NoThunks (TxWits era) - ) => - NoThunks (ShelleyTx era) - -pattern ShelleyTx :: - EraTx era => - TxBody era -> - TxWits era -> - StrictMaybe (TxAuxData era) -> - ShelleyTx era -pattern ShelleyTx {body, wits, auxiliaryData} <- - TxConstr - ( Memo - ShelleyTxRaw - { strBody = body - , strWits = wits - , strAuxiliaryData = auxiliaryData - } - _ - ) - where - ShelleyTx b w a = mkShelleyTx $ ShelleyTxRaw b w a - -{-# COMPLETE ShelleyTx #-} - --------------------------------------------------------------------------------- --- Serialisation --------------------------------------------------------------------------------- - -encodeShelleyTxRaw :: - (EncCBOR (TxWits era), EncCBOR (TxBody era), EncCBOR (TxAuxData era)) => - ShelleyTxRaw era -> - Encode ('Closed 'Dense) (ShelleyTxRaw era) -encodeShelleyTxRaw ShelleyTxRaw {strBody, strWits, strAuxiliaryData} = - Rec ShelleyTxRaw - !> To strBody - !> To strWits - !> E (encodeNullMaybe encCBOR . strictMaybeToMaybe) strAuxiliaryData - -instance - (Era era, EncCBOR (TxWits era), EncCBOR (TxBody era), EncCBOR (TxAuxData era)) => - EncCBOR (ShelleyTxRaw era) - where - encCBOR = encode . encodeShelleyTxRaw - --- | Encodes memoized bytes created upon construction. -instance Era era => EncCBOR (ShelleyTx era) - -instance - ( Era era - , DecCBOR (Annotator (TxBody era)) - , DecCBOR (Annotator (TxWits era)) - , DecCBOR (Annotator (TxAuxData era)) - ) => - DecCBOR (Annotator (ShelleyTxRaw era)) - where - decCBOR = - decode $ - Ann (RecD ShelleyTxRaw) - <*! From - <*! From - <*! D - ( sequence . maybeToStrictMaybe - <$> decodeNullMaybe decCBOR - ) - -deriving via - Mem ShelleyTxRaw era - instance - EraTx era => DecCBOR (Annotator (ShelleyTx era)) - --- | Construct a Tx containing the explicit serialised bytes. --- --- This function is marked as unsafe since it makes no guarantee that the --- represented bytes are indeed the correct serialisation of the transaction. --- Thus, when calling this function, the caller is responsible for making this --- guarantee. --- --- The only intended use case for this is for segregated witness. -unsafeConstructTxWithBytes :: - Era era => - TxBody era -> - TxWits era -> - StrictMaybe (TxAuxData era) -> - LBS.ByteString -> - ShelleyTx era -unsafeConstructTxWithBytes b w a bytes = TxConstr (mkMemoBytes (ShelleyTxRaw b w a) bytes) - --------------------------------------------------------------------------------- --- Segregated witness --------------------------------------------------------------------------------- - -segwitTx :: - forall era. - EraTx era => - Annotator (TxBody era) -> - Annotator (TxWits era) -> - Maybe (Annotator (TxAuxData era)) -> - Annotator (ShelleyTx era) -segwitTx - bodyAnn - witsAnn - metaAnn = Annotator $ \bytes -> - let body' = runAnnotator bodyAnn bytes - witnessSet = runAnnotator witsAnn bytes - metadata = flip runAnnotator bytes <$> metaAnn - wrappedMetadataBytes = case metadata of - Nothing -> Plain.serialize Plain.encodeNull - Just b -> Plain.serialize b - fullBytes = - Plain.serialize (Plain.encodeListLen 3) - <> Plain.serialize body' - <> Plain.serialize witnessSet - <> wrappedMetadataBytes - in unsafeConstructTxWithBytes - body' - witnessSet - (maybeToStrictMaybe metadata) - fullBytes - --- =============================================================== - --- | Hashes native multi-signature script. -hashMultiSigScript :: - forall era. - ( EraScript era - , Script era ~ MultiSig (EraCrypto era) - ) => - MultiSig (EraCrypto era) -> - ScriptHash (EraCrypto era) -hashMultiSigScript = hashScript @era -{-# DEPRECATED hashMultiSigScript "In favor of `hashScript`" #-} - --- ======================================== - --- | Multi-signature script witness accessor function for Transactions -txwitsScript :: - EraTx era => - Tx era -> - Map (ScriptHash (EraCrypto era)) (Script era) -txwitsScript tx = tx ^. witsTxL . scriptTxWitsL -{-# DEPRECATED txwitsScript "In favor of `scriptTxWitsL`" #-} - --- | Minimum fee calculation -shelleyMinFeeTx :: EraTx era => PParams era -> Tx era -> Coin -shelleyMinFeeTx pp tx = - (tx ^. sizeTxF <×> pp ^. ppMinFeeAL) <+> pp ^. ppMinFeeBL - --- | Extract the witness hashes from the Transaction. -witsFromTxWitnesses :: - EraTx era => - Tx era -> - Set (KeyHash 'Witness (EraCrypto era)) -witsFromTxWitnesses tx = - Set.map witVKeyHash (tx ^. witsTxL . addrTxWitsL) - `Set.union` Set.map bootstrapWitKeyHash (tx ^. witsTxL . bootAddrTxWitsL) diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/TxAuxData.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/TxAuxData.hs deleted file mode 100644 index 1129a5769ce..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/TxAuxData.hs +++ /dev/null @@ -1,370 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} -{-# LANGUAGE ViewPatterns #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Shelley.TxAuxData ( - Metadatum (..), - ShelleyTxAuxData (ShelleyTxAuxData), - ShelleyTxAuxDataRaw, - hashShelleyTxAuxData, - validMetadatum, - - -- * Deprecations - Metadata, -) -where - -import Cardano.Crypto.Hash.Class (HashAlgorithm) -import Cardano.Ledger.AuxiliaryData (AuxiliaryDataHash (..)) -import Cardano.Ledger.Binary ( - Annotator (..), - DecCBOR (decCBOR), - Decoder, - DecoderError (..), - EncCBOR (encCBOR), - Encoding, - TokenType (..), - cborError, - decodeBreakOr, - decodeBytes, - decodeBytesIndef, - decodeInteger, - decodeListLen, - decodeListLenIndef, - decodeMapLen, - decodeMapLenIndef, - decodeString, - decodeStringIndef, - encodeBytes, - encodeInteger, - encodeListLen, - encodeMapLen, - encodeString, - peekTokenType, - ) -import qualified Cardano.Ledger.Binary.Plain as Plain (ToCBOR) -import Cardano.Ledger.Core (Era (..), EraTxAuxData (..)) -import Cardano.Ledger.Crypto (Crypto (HASH)) -import Cardano.Ledger.Hashes (EraIndependentTxAuxData) -import Cardano.Ledger.MemoBytes ( - EqRaw (..), - Mem, - MemoBytes, - MemoHashIndex, - Memoized (RawType), - getMemoRawType, - getMemoSafeHash, - mkMemoized, - ) -import Cardano.Ledger.SafeHash ( - HashAnnotated, - SafeHash, - SafeToHash (..), - hashAnnotated, - ) -import Cardano.Ledger.Shelley.Era (ShelleyEra) -import Control.DeepSeq (NFData (rnf)) -import Data.ByteString (ByteString) -import qualified Data.ByteString as BS -import Data.Map.Strict (Map) -import qualified Data.Text as T -import qualified Data.Text.Encoding as T -import Data.Typeable (Proxy (..)) -import Data.Word (Word64) -import GHC.Generics (Generic) -import NoThunks.Class (InspectHeapNamed (..), NoThunks (..)) - --- | A generic metadatum type. -data Metadatum - = Map ![(Metadatum, Metadatum)] - | List ![Metadatum] - | I !Integer - | B !BS.ByteString - | S !T.Text - deriving stock (Show, Eq, Ord, Generic) - -instance NoThunks Metadatum - -instance NFData Metadatum where - rnf = \case - Map m -> rnf m - List l -> rnf l - I _ -> () - B _ -> () - S _ -> () - -newtype ShelleyTxAuxDataRaw era = ShelleyTxAuxDataRaw - { stadrMetadata :: Map Word64 Metadatum - } - deriving (Eq, Show, Generic) - deriving newtype (NFData) - -deriving via - InspectHeapNamed "ShelleyTxAuxDataRaw" (ShelleyTxAuxDataRaw era) - instance - NoThunks (ShelleyTxAuxDataRaw era) - -deriving newtype instance Era era => EncCBOR (ShelleyTxAuxDataRaw era) - -deriving newtype instance Era era => DecCBOR (ShelleyTxAuxDataRaw era) - -instance Era era => DecCBOR (Annotator (ShelleyTxAuxDataRaw era)) where - decCBOR = pure <$> decCBOR - -deriving via - InspectHeapNamed "ShelleyTxAuxDataRaw" (ShelleyTxAuxData era) - instance - NoThunks (ShelleyTxAuxData era) - -deriving via - (Mem ShelleyTxAuxDataRaw era) - instance - Era era => DecCBOR (Annotator (ShelleyTxAuxData era)) - -newtype ShelleyTxAuxData era - = AuxiliaryDataConstr (MemoBytes ShelleyTxAuxDataRaw era) - deriving (Eq, Generic) - deriving newtype (NFData, Plain.ToCBOR, SafeToHash) - -instance Memoized ShelleyTxAuxData where - type RawType ShelleyTxAuxData = ShelleyTxAuxDataRaw - -type Metadata era = ShelleyTxAuxData era - -{-# DEPRECATED Metadata "Use `ShelleyTxAuxData` instead" #-} - -instance Crypto c => EraTxAuxData (ShelleyEra c) where - type TxAuxData (ShelleyEra c) = ShelleyTxAuxData (ShelleyEra c) - - -- Calling this partial function will result in compilation error, since ByronEra has - -- no instance for EraTxOut type class. - upgradeTxAuxData = error "It is not possible to translate Byron TxOut with 'upgradeTxOut'" - - validateTxAuxData _ (ShelleyTxAuxData m) = all validMetadatum m - - hashTxAuxData metadata = - AuxiliaryDataHash (makeHashWithExplicitProxys (Proxy @c) index metadata) - where - index = Proxy @EraIndependentTxAuxData - -instance EqRaw (ShelleyTxAuxData era) - -instance - c ~ EraCrypto era => - HashAnnotated (ShelleyTxAuxData era) EraIndependentTxAuxData c - where - hashAnnotated = getMemoSafeHash - -hashShelleyTxAuxData :: - Era era => - ShelleyTxAuxData era -> - SafeHash (EraCrypto era) EraIndependentTxAuxData -hashShelleyTxAuxData = hashAnnotated - -pattern ShelleyTxAuxData :: forall era. Era era => Map Word64 Metadatum -> ShelleyTxAuxData era -pattern ShelleyTxAuxData m <- - (getMemoRawType -> ShelleyTxAuxDataRaw m) - where - ShelleyTxAuxData m = mkMemoized $ ShelleyTxAuxDataRaw m - -{-# COMPLETE ShelleyTxAuxData #-} - --- | Encodes memoized bytes created upon construction. -instance Era era => EncCBOR (ShelleyTxAuxData era) - -deriving instance - HashAlgorithm (HASH (EraCrypto era)) => - Show (ShelleyTxAuxData era) - -type instance MemoHashIndex ShelleyTxAuxDataRaw = EraIndependentTxAuxData - -instance EncCBOR Metadatum where - encCBOR = encodeMetadatum - -instance DecCBOR Metadatum where - decCBOR = decodeMetadatum - --- Validation of sizes - -validMetadatum :: Metadatum -> Bool --- The integer size/representation checks are enforced in the decoder. -validMetadatum (I _) = True -validMetadatum (B b) = BS.length b <= 64 -validMetadatum (S s) = BS.length (T.encodeUtf8 s) <= 64 -validMetadatum (List xs) = all validMetadatum xs -validMetadatum (Map kvs) = - all - ( \(k, v) -> - validMetadatum k - && validMetadatum v - ) - kvs - -------------------------------------------------------------------------------- --- CBOR encoding and decoding - -encodeMetadatum :: Metadatum -> Encoding -encodeMetadatum (I n) = encodeInteger n -encodeMetadatum (B b) = encodeBytes b -encodeMetadatum (S s) = encodeString s -encodeMetadatum (List xs) = - encodeListLen (fromIntegral (length xs)) - <> mconcat - [ encodeMetadatum x - | x <- xs - ] -encodeMetadatum (Map kvs) = - encodeMapLen (fromIntegral (length kvs)) - <> mconcat - [ encodeMetadatum k <> encodeMetadatum v - | (k, v) <- kvs - ] - --- | Decode a transaction matadatum value from its CBOR representation. --- --- The CDDL for the CBOR is --- --- > transaction_metadatum = --- > int --- > / bytes .size (0..64) --- > / text .size (0..64) --- > / [ * transaction_metadatum ] --- > / { * transaction_metadatum => transaction_metadatum } --- --- We do not require canonical representations, just like everywhere else --- on the chain. We accept both definte and indefinite representations. --- --- The byte and string length checks are not enforced in this decoder, but -decodeMetadatum :: Decoder s Metadatum -decodeMetadatum = do - tkty <- peekTokenType - case tkty of - -- We support -(2^64-1) .. 2^64-1, but not big integers - -- not even big integer representation of values within range - TypeUInt -> I <$> decodeInteger - TypeUInt64 -> I <$> decodeInteger - TypeNInt -> I <$> decodeInteger - TypeNInt64 -> I <$> decodeInteger - -- Note that we do not enforce byte and string lengths here in the - -- decoder. We enforce that in the tx validation rules. - TypeBytes -> do - !x <- decodeBytes - return (B x) - TypeBytesIndef -> do - decodeBytesIndef - !x <- decodeBytesIndefLen [] - return (B x) - TypeString -> do - !x <- decodeString - return (S x) - TypeStringIndef -> do - decodeStringIndef - !x <- decodeStringIndefLen [] - return (S x) - - -- Why does it work to do the same thing here for 32 and 64bit list len - -- tokens? On 32bit systems the decodeListLen will fail if the value - -- really is bigger than maxBound :: Int, and on 64bit systems if a value - -- that big is provided, then it'll fail when it runs out of input for - -- such a big list. Hence we can do exactly the same for the 32bit and - -- 64bit cases. - TypeListLen -> do - n <- decodeListLen - xs <- decodeListN n [] - return (List xs) - TypeListLen64 -> do - n <- decodeListLen - xs <- decodeListN n [] - return (List xs) - TypeListLenIndef -> do - decodeListLenIndef - xs <- decodeListIndefLen [] - return (List xs) - - -- Same logic applies as above for large lists. - TypeMapLen -> do - n <- decodeMapLen - xs <- decodeMapN n [] - return (Map xs) - TypeMapLen64 -> do - n <- decodeMapLen - xs <- decodeMapN n [] - return (Map xs) - TypeMapLenIndef -> do - decodeMapLenIndef - xs <- decodeMapIndefLen [] - return (Map xs) - _ -> decodeError ("Unsupported token type " <> T.pack (show tkty)) - where - decodeError msg = cborError (DecoderErrorCustom "metadata" msg) - -decodeBytesIndefLen :: [BS.ByteString] -> Decoder s ByteString -decodeBytesIndefLen acc = do - stop <- decodeBreakOr - if stop - then return $! BS.concat (reverse acc) - else do - !bs <- decodeBytes - decodeBytesIndefLen (bs : acc) - -decodeStringIndefLen :: [T.Text] -> Decoder s T.Text -decodeStringIndefLen acc = do - stop <- decodeBreakOr - if stop - then return $! T.concat (reverse acc) - else do - !str <- decodeString - decodeStringIndefLen (str : acc) - -decodeListN :: Int -> [Metadatum] -> Decoder s [Metadatum] -decodeListN !n acc = - case n of - 0 -> return $! reverse acc - _ -> do - !t <- decodeMetadatum - decodeListN (n - 1) (t : acc) - -decodeListIndefLen :: [Metadatum] -> Decoder s [Metadatum] -decodeListIndefLen acc = do - stop <- decodeBreakOr - if stop - then return $! reverse acc - else do - !tm <- decodeMetadatum - decodeListIndefLen (tm : acc) - -decodeMapN :: Int -> [(Metadatum, Metadatum)] -> Decoder s [(Metadatum, Metadatum)] -decodeMapN !n acc = - case n of - 0 -> return $! reverse acc - _ -> do - !tm <- decodeMetadatum - !tm' <- decodeMetadatum - decodeMapN (n - 1) ((tm, tm') : acc) - -decodeMapIndefLen :: [(Metadatum, Metadatum)] -> Decoder s [(Metadatum, Metadatum)] -decodeMapIndefLen acc = do - stop <- decodeBreakOr - if stop - then return $! reverse acc - else do - !tm <- decodeMetadatum - !tm' <- decodeMetadatum - decodeMapIndefLen ((tm, tm') : acc) diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/TxBody.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/TxBody.hs deleted file mode 100644 index a35b704067c..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/TxBody.hs +++ /dev/null @@ -1,391 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} -{-# LANGUAGE ViewPatterns #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Shelley.TxBody ( - ShelleyTxBody ( - ShelleyTxBody, - TxBodyConstr, - stbInputs, - stbOutputs, - stbCerts, - stbWithdrawals, - stbTxFee, - stbTTL, - stbUpdate, - stbMDHash - ), - ShelleyEraTxBody (..), - ShelleyTxBodyRaw (..), - EraIndependentTxBody, - RewardAccount (..), - Withdrawals (..), - getShelleyGenesisKeyHashCountTxBody, - - -- * Deprecations - RewardAcnt, -) where - -import Cardano.Ledger.Address (RewardAccount (..), RewardAcnt, Withdrawals (..)) -import Cardano.Ledger.AuxiliaryData (AuxiliaryDataHash) -import Cardano.Ledger.BaseTypes (StrictMaybe (..)) -import Cardano.Ledger.Binary ( - Annotator (..), - DecCBOR (decCBOR), - EncCBOR (..), - ToCBOR (..), - ) -import Cardano.Ledger.Binary.Coders ( - Decode (..), - Density (..), - Encode (..), - Field, - Wrapped (..), - decode, - encode, - encodeKeyedStrictMaybe, - field, - invalidField, - ofield, - (!>), - ) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto (Crypto, StandardCrypto) -import Cardano.Ledger.MemoBytes ( - EqRaw (..), - Mem, - MemoBytes, - MemoHashIndex, - Memoized (..), - getMemoRawType, - getMemoSafeHash, - lensMemoRawType, - mkMemoized, - ) -import Cardano.Ledger.SafeHash (HashAnnotated (..), SafeToHash) -import Cardano.Ledger.Shelley.Era (ShelleyEra) -import Cardano.Ledger.Shelley.PParams (ProposedPPUpdates (..), Update (..)) -import Cardano.Ledger.Shelley.TxCert (ShelleyEraTxCert (..)) -import Cardano.Ledger.Shelley.TxOut () -import Cardano.Ledger.Slot (SlotNo (..)) -import Cardano.Ledger.TxIn (TxIn) -import Control.DeepSeq (NFData) -import qualified Data.Map.Strict as Map -import Data.Sequence.Strict (StrictSeq) -import qualified Data.Sequence.Strict as StrictSeq -import Data.Set (Set) -import qualified Data.Set as Set -import Data.Typeable (Typeable) -import GHC.Generics (Generic) -import Lens.Micro -import NoThunks.Class (NoThunks (..)) - -class (ShelleyEraTxCert era, EraTxBody era, ProtVerAtMost era 8) => ShelleyEraTxBody era where - ttlTxBodyL :: ExactEra ShelleyEra era => Lens' (TxBody era) SlotNo - - updateTxBodyL :: Lens' (TxBody era) (StrictMaybe (Update era)) - --- ============================== --- The underlying type for TxBody - -data ShelleyTxBodyRaw era = ShelleyTxBodyRaw - { stbrInputs :: !(Set (TxIn (EraCrypto era))) - , stbrOutputs :: !(StrictSeq (TxOut era)) - , stbrCerts :: !(StrictSeq (TxCert era)) - , stbrWithdrawals :: !(Withdrawals (EraCrypto era)) - , stbrTxFee :: !Coin - , stbrTTL :: !SlotNo - , stbrUpdate :: !(StrictMaybe (Update era)) - , stbrMDHash :: !(StrictMaybe (AuxiliaryDataHash (EraCrypto era))) - } - deriving (Generic, Typeable) - -deriving instance - (NoThunks (TxOut era), NoThunks (TxCert era), NoThunks (PParamsUpdate era)) => - NoThunks (ShelleyTxBodyRaw era) - -deriving instance - (Era era, NFData (TxOut era), NFData (TxCert era), NFData (PParamsUpdate era)) => - NFData (ShelleyTxBodyRaw era) - -deriving instance - (Era era, Eq (TxOut era), Eq (TxCert era), Eq (PParamsUpdate era)) => - Eq (ShelleyTxBodyRaw era) - -deriving instance - (Era era, Show (TxOut era), Show (TxCert era), Show (PParamsUpdate era)) => - Show (ShelleyTxBodyRaw era) - --- | Encodes memoized bytes created upon construction. -instance Era era => EncCBOR (ShelleyTxBody era) - -instance - ( Era era - , DecCBOR (PParamsUpdate era) - , DecCBOR (TxOut era) - , DecCBOR (TxCert era) - ) => - DecCBOR (ShelleyTxBodyRaw era) - where - decCBOR = - decode - ( SparseKeyed - "TxBody" - basicShelleyTxBodyRaw - boxBody - [(0, "inputs"), (1, "outputs"), (2, "fee"), (3, "ttl")] - ) - -instance - ( Era era - , DecCBOR (PParamsUpdate era) - , DecCBOR (TxOut era) - , DecCBOR (TxCert era) - ) => - DecCBOR (Annotator (ShelleyTxBodyRaw era)) - where - decCBOR = pure <$> decCBOR - --- ================================================================= --- Composable components for building TxBody optional sparse serialisers. --- The order of serializing optional fields, and their key values is --- demanded by backward compatibility concerns. - --- | Choose a de-serialiser when given the key (of type Word). --- Wrap it in a Field which pairs it with its update function which --- changes only the field being deserialised. -boxBody :: - ( Era era - , DecCBOR (PParamsUpdate era) - , DecCBOR (TxOut era) - , DecCBOR (TxCert era) - ) => - Word -> - Field (ShelleyTxBodyRaw era) -boxBody 0 = field (\x tx -> tx {stbrInputs = x}) From -boxBody 1 = field (\x tx -> tx {stbrOutputs = x}) From -boxBody 4 = field (\x tx -> tx {stbrCerts = x}) From -boxBody 5 = field (\x tx -> tx {stbrWithdrawals = x}) From -boxBody 2 = field (\x tx -> tx {stbrTxFee = x}) From -boxBody 3 = field (\x tx -> tx {stbrTTL = x}) From -boxBody 6 = ofield (\x tx -> tx {stbrUpdate = x}) From -boxBody 7 = ofield (\x tx -> tx {stbrMDHash = x}) From -boxBody n = invalidField n - --- | Tells how to serialise each field, and what tag to label it with in the --- serialisation. boxBody and txSparse should be Duals, visually inspect --- The key order looks strange but was choosen for backward compatibility. -txSparse :: - (Era era, EncCBOR (TxOut era), EncCBOR (TxCert era), EncCBOR (PParamsUpdate era)) => - ShelleyTxBodyRaw era -> - Encode ('Closed 'Sparse) (ShelleyTxBodyRaw era) -txSparse (ShelleyTxBodyRaw input output cert wdrl fee ttl update hash) = - Keyed (\i o f t c w u h -> ShelleyTxBodyRaw i o c w f t u h) - !> Key 0 (To input) -- We don't have to send these in ShelleyTxBodyRaw order - !> Key 1 (To output) -- Just hack up a fake constructor with the lambda. - !> Key 2 (To fee) - !> Key 3 (To ttl) - !> Omit null (Key 4 (To cert)) - !> Omit (null . unWithdrawals) (Key 5 (To wdrl)) - !> encodeKeyedStrictMaybe 6 update - !> encodeKeyedStrictMaybe 7 hash - --- The initial TxBody. We will overide some of these fields as we build a TxBody, --- adding one field at a time, using optional serialisers, inside the Pattern. -basicShelleyTxBodyRaw :: ShelleyTxBodyRaw era -basicShelleyTxBodyRaw = - ShelleyTxBodyRaw - { stbrInputs = Set.empty - , stbrOutputs = StrictSeq.empty - , stbrTxFee = Coin 0 - , stbrTTL = SlotNo 0 - , stbrCerts = StrictSeq.empty - , stbrWithdrawals = Withdrawals Map.empty - , stbrUpdate = SNothing - , stbrMDHash = SNothing - } - -instance - (Era era, EncCBOR (TxOut era), EncCBOR (TxCert era), EncCBOR (PParamsUpdate era)) => - EncCBOR (ShelleyTxBodyRaw era) - where - encCBOR = encode . txSparse - --- ==================================================== --- Introduce ShelleyTxBody as a newtype around a MemoBytes - -newtype ShelleyTxBody era = TxBodyConstr (MemoBytes ShelleyTxBodyRaw era) - deriving (Generic, Typeable) - deriving newtype (SafeToHash, ToCBOR) - -instance Memoized ShelleyTxBody where - type RawType ShelleyTxBody = ShelleyTxBodyRaw - -instance - (Era era, Eq (TxOut era), Eq (TxCert era), Eq (PParamsUpdate era)) => - EqRaw (ShelleyTxBody era) - -instance Crypto c => EraTxBody (ShelleyEra c) where - {-# SPECIALIZE instance EraTxBody (ShelleyEra StandardCrypto) #-} - - type TxBody (ShelleyEra c) = ShelleyTxBody (ShelleyEra c) - - mkBasicTxBody = mkMemoized basicShelleyTxBodyRaw - - spendableInputsTxBodyF = inputsTxBodyL - {-# INLINE spendableInputsTxBodyF #-} - - allInputsTxBodyF = inputsTxBodyL - {-# INLINE allInputsTxBodyF #-} - - inputsTxBodyL = - lensMemoRawType stbrInputs $ \txBodyRaw inputs -> txBodyRaw {stbrInputs = inputs} - {-# INLINEABLE inputsTxBodyL #-} - - outputsTxBodyL = - lensMemoRawType stbrOutputs $ \txBodyRaw outputs -> txBodyRaw {stbrOutputs = outputs} - {-# INLINEABLE outputsTxBodyL #-} - - feeTxBodyL = - lensMemoRawType stbrTxFee $ \txBodyRaw fee -> txBodyRaw {stbrTxFee = fee} - {-# INLINEABLE feeTxBodyL #-} - - auxDataHashTxBodyL = - lensMemoRawType stbrMDHash $ \txBodyRaw auxDataHash -> txBodyRaw {stbrMDHash = auxDataHash} - {-# INLINEABLE auxDataHashTxBodyL #-} - - withdrawalsTxBodyL = - lensMemoRawType stbrWithdrawals $ \txBodyRaw withdrawals -> txBodyRaw {stbrWithdrawals = withdrawals} - {-# INLINEABLE withdrawalsTxBodyL #-} - - certsTxBodyL = - lensMemoRawType stbrCerts $ \txBodyRaw certs -> txBodyRaw {stbrCerts = certs} - {-# INLINEABLE certsTxBodyL #-} - - getGenesisKeyHashCountTxBody = getShelleyGenesisKeyHashCountTxBody - - upgradeTxBody = - error $ - "Calling this function will cause a compilation error, " - ++ "since there is no TxBody instance for ByronEra" - -instance Crypto c => ShelleyEraTxBody (ShelleyEra c) where - {-# SPECIALIZE instance ShelleyEraTxBody (ShelleyEra StandardCrypto) #-} - - ttlTxBodyL = - lensMemoRawType stbrTTL $ \txBodyRaw ttl -> txBodyRaw {stbrTTL = ttl} - {-# INLINEABLE ttlTxBodyL #-} - - updateTxBodyL = - lensMemoRawType stbrUpdate $ \txBodyRaw update -> txBodyRaw {stbrUpdate = update} - {-# INLINEABLE updateTxBodyL #-} - -deriving newtype instance - (Era era, NoThunks (TxOut era), NoThunks (TxCert era), NoThunks (PParamsUpdate era)) => - NoThunks (ShelleyTxBody era) - -deriving newtype instance EraTxBody era => NFData (ShelleyTxBody era) - -deriving instance EraTxBody era => Show (ShelleyTxBody era) - -deriving instance - (Era era, Eq (TxOut era), Eq (TxCert era), Eq (PParamsUpdate era)) => - Eq (ShelleyTxBody era) - -deriving via - Mem ShelleyTxBodyRaw era - instance - EraTxBody era => DecCBOR (Annotator (ShelleyTxBody era)) - --- | Pattern for use by external users -pattern ShelleyTxBody :: - (EraTxOut era, EncCBOR (TxCert era)) => - Set (TxIn (EraCrypto era)) -> - StrictSeq (TxOut era) -> - StrictSeq (TxCert era) -> - Withdrawals (EraCrypto era) -> - Coin -> - SlotNo -> - StrictMaybe (Update era) -> - StrictMaybe (AuxiliaryDataHash (EraCrypto era)) -> - ShelleyTxBody era -pattern ShelleyTxBody - { stbInputs - , stbOutputs - , stbCerts - , stbWithdrawals - , stbTxFee - , stbTTL - , stbUpdate - , stbMDHash - } <- - ( getMemoRawType -> - ShelleyTxBodyRaw - { stbrInputs = stbInputs - , stbrOutputs = stbOutputs - , stbrCerts = stbCerts - , stbrWithdrawals = stbWithdrawals - , stbrTxFee = stbTxFee - , stbrTTL = stbTTL - , stbrUpdate = stbUpdate - , stbrMDHash = stbMDHash - } - ) - where - ShelleyTxBody - inputs - outputs - certs - withdrawals - txFee - ttl - update - mDHash = - mkMemoized $ - ShelleyTxBodyRaw - { stbrInputs = inputs - , stbrOutputs = outputs - , stbrCerts = certs - , stbrWithdrawals = withdrawals - , stbrTxFee = txFee - , stbrTTL = ttl - , stbrUpdate = update - , stbrMDHash = mDHash - } - -{-# COMPLETE ShelleyTxBody #-} - --- ========================================= - -type instance MemoHashIndex ShelleyTxBodyRaw = EraIndependentTxBody - -instance - (Era era, c ~ EraCrypto era) => - HashAnnotated (ShelleyTxBody era) EraIndependentTxBody c - where - hashAnnotated = getMemoSafeHash - --- =============================================================== - --- | Count number of Genesis keys supplied in the `updateTxBodyL` field. -getShelleyGenesisKeyHashCountTxBody :: ShelleyEraTxBody era => TxBody era -> Int -getShelleyGenesisKeyHashCountTxBody txBody = - case txBody ^. updateTxBodyL of - SJust (Update (ProposedPPUpdates m) _) -> Map.size m - _ -> 0 diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/TxCert.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/TxCert.hs deleted file mode 100644 index 6a74027f1ea..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/TxCert.hs +++ /dev/null @@ -1,678 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} -{-# LANGUAGE ViewPatterns #-} --- Due to Delegation usage. --- TODO: remove when Delegation is gone -{-# OPTIONS_GHC -Wno-deprecations #-} -{-# OPTIONS_GHC -Wno-orphans #-} --- Due to deprecated requiresVKeyWitness. --- TODO: remove when requiresVKeyWitness is gone: -{-# OPTIONS_GHC -Wno-redundant-constraints #-} - -module Cardano.Ledger.Shelley.TxCert ( - ShelleyEraTxCert (..), - pattern MirTxCert, - pattern GenesisDelegTxCert, - pattern RegTxCert, - pattern UnRegTxCert, - pattern DelegStakeTxCert, - ShelleyDelegCert (.., RegKey, DeRegKey, Delegate), - getVKeyWitnessShelleyTxCert, - getScriptWitnessShelleyTxCert, - delegCWitness, - ShelleyTxCert (..), - upgradeShelleyTxCert, - - -- ** GenesisDelegCert - GenesisDelegCert (..), - genesisCWitness, - genesisKeyHashWitness, - - -- ** MIRCert - MIRCert (..), - MIRPot (..), - MIRTarget (..), - isRegKey, - isDeRegKey, - isDelegation, - isRegPool, - isRetirePool, - isGenesisDelegation, - isInstantaneousRewards, - isReservesMIRCert, - isTreasuryMIRCert, - requiresVKeyWitness, - - -- ** Serialization helpers - shelleyTxCertDelegDecoder, - poolTxCertDecoder, - encodeShelleyDelegCert, - encodePoolCert, - encodeGenesisDelegCert, - - -- ** Deposits and Refunds - shelleyTotalDepositsTxCerts, - shelleyTotalRefundsTxCerts, - - -- * Re-exports - EraTxCert (..), - pattern RegPoolTxCert, - pattern RetirePoolTxCert, - Delegation (..), - PoolCert (..), - poolCWitness, - isRegStakeTxCert, - isUnRegStakeTxCert, -) -where - -import Cardano.Ledger.BaseTypes (invalidKey, kindObject) -import Cardano.Ledger.Binary ( - DecCBOR (decCBOR), - DecCBORGroup (..), - Decoder, - EncCBOR (..), - EncCBORGroup (..), - Encoding, - FromCBOR (..), - ToCBOR (..), - TokenType (TypeMapLen, TypeMapLen64, TypeMapLenIndef), - decodeRecordNamed, - decodeRecordSum, - decodeWord, - encodeListLen, - encodeWord8, - listLenInt, - peekTokenType, - ) -import Cardano.Ledger.Coin (Coin (..), DeltaCoin) -import Cardano.Ledger.Core -import Cardano.Ledger.Credential ( - Credential (..), - StakeCredential, - credKeyHashWitness, - credScriptHash, - ) -import Cardano.Ledger.Crypto -import Cardano.Ledger.Keys (Hash, KeyHash (..), KeyRole (..), VerKeyVRF, asWitness) -import Cardano.Ledger.PoolParams (PoolParams (..)) -import Cardano.Ledger.Shelley.Era (ShelleyEra) -import Cardano.Ledger.Shelley.PParams () -import Cardano.Ledger.Val ((<+>), (<×>)) -import Control.DeepSeq (NFData (..), rwhnf) -import Data.Aeson (ToJSON (..), (.=)) -import Data.Foldable (Foldable (..), foldMap', foldl') -import Data.Map.Strict (Map) -import Data.Maybe (isJust, isNothing) -import Data.Monoid (Sum (..)) -import qualified Data.Set as Set -import GHC.Generics (Generic) -import Lens.Micro -import NoThunks.Class (NoThunks (..)) - -instance Crypto c => EraTxCert (ShelleyEra c) where - {-# SPECIALIZE instance EraTxCert (ShelleyEra StandardCrypto) #-} - - type TxCert (ShelleyEra c) = ShelleyTxCert (ShelleyEra c) - - -- Calling this partial function will result in compilation error, since ByronEra has - -- no instance for EraTxOut type class. - upgradeTxCert = error "Byron does not have any TxCerts to upgrade with 'upgradeTxCert'" - - getVKeyWitnessTxCert = getVKeyWitnessShelleyTxCert - - getScriptWitnessTxCert = getScriptWitnessShelleyTxCert - - mkRegPoolTxCert = ShelleyTxCertPool . RegPool - - getRegPoolTxCert (ShelleyTxCertPool (RegPool poolParams)) = Just poolParams - getRegPoolTxCert _ = Nothing - - mkRetirePoolTxCert poolId epochNo = ShelleyTxCertPool $ RetirePool poolId epochNo - - getRetirePoolTxCert (ShelleyTxCertPool (RetirePool poolId epochNo)) = Just (poolId, epochNo) - getRetirePoolTxCert _ = Nothing - - lookupRegStakeTxCert = \case - RegTxCert c -> Just c - _ -> Nothing - lookupUnRegStakeTxCert = \case - UnRegTxCert c -> Just c - _ -> Nothing - - getTotalDepositsTxCerts = shelleyTotalDepositsTxCerts - - getTotalRefundsTxCerts pp lookupStakeDeposit _ = shelleyTotalRefundsTxCerts pp lookupStakeDeposit - -class EraTxCert era => ShelleyEraTxCert era where - mkRegTxCert :: StakeCredential (EraCrypto era) -> TxCert era - getRegTxCert :: TxCert era -> Maybe (StakeCredential (EraCrypto era)) - - mkUnRegTxCert :: StakeCredential (EraCrypto era) -> TxCert era - getUnRegTxCert :: TxCert era -> Maybe (StakeCredential (EraCrypto era)) - - mkDelegStakeTxCert :: - StakeCredential (EraCrypto era) -> KeyHash 'StakePool (EraCrypto era) -> TxCert era - getDelegStakeTxCert :: - TxCert era -> Maybe (StakeCredential (EraCrypto era), KeyHash 'StakePool (EraCrypto era)) - - mkGenesisDelegTxCert :: ProtVerAtMost era 8 => GenesisDelegCert (EraCrypto era) -> TxCert era - getGenesisDelegTxCert :: - ProtVerAtMost era 8 => TxCert era -> Maybe (GenesisDelegCert (EraCrypto era)) - - mkMirTxCert :: ProtVerAtMost era 8 => MIRCert (EraCrypto era) -> TxCert era - getMirTxCert :: - ProtVerAtMost era 8 => TxCert era -> Maybe (MIRCert (EraCrypto era)) - -instance Crypto c => ShelleyEraTxCert (ShelleyEra c) where - {-# SPECIALIZE instance ShelleyEraTxCert (ShelleyEra StandardCrypto) #-} - - mkRegTxCert = ShelleyTxCertDelegCert . ShelleyRegCert - - getRegTxCert (ShelleyTxCertDelegCert (ShelleyRegCert c)) = Just c - getRegTxCert _ = Nothing - - mkUnRegTxCert = ShelleyTxCertDelegCert . ShelleyUnRegCert - - getUnRegTxCert (ShelleyTxCertDelegCert (ShelleyUnRegCert c)) = Just c - getUnRegTxCert _ = Nothing - - mkDelegStakeTxCert c kh = ShelleyTxCertDelegCert $ ShelleyDelegCert c kh - - getDelegStakeTxCert (ShelleyTxCertDelegCert (ShelleyDelegCert c kh)) = Just (c, kh) - getDelegStakeTxCert _ = Nothing - - mkGenesisDelegTxCert = ShelleyTxCertGenesisDeleg - - getGenesisDelegTxCert (ShelleyTxCertGenesisDeleg c) = Just c - getGenesisDelegTxCert _ = Nothing - - mkMirTxCert = ShelleyTxCertMir - - getMirTxCert (ShelleyTxCertMir c) = Just c - getMirTxCert _ = Nothing - -pattern RegTxCert :: ShelleyEraTxCert era => StakeCredential (EraCrypto era) -> TxCert era -pattern RegTxCert c <- (getRegTxCert -> Just c) - where - RegTxCert c = mkRegTxCert c - -pattern UnRegTxCert :: ShelleyEraTxCert era => StakeCredential (EraCrypto era) -> TxCert era -pattern UnRegTxCert c <- (getUnRegTxCert -> Just c) - where - UnRegTxCert c = mkUnRegTxCert c - -pattern DelegStakeTxCert :: - ShelleyEraTxCert era => - StakeCredential (EraCrypto era) -> - KeyHash 'StakePool (EraCrypto era) -> - TxCert era -pattern DelegStakeTxCert c kh <- (getDelegStakeTxCert -> Just (c, kh)) - where - DelegStakeTxCert c kh = mkDelegStakeTxCert c kh - -pattern MirTxCert :: - (ShelleyEraTxCert era, ProtVerAtMost era 8) => MIRCert (EraCrypto era) -> TxCert era -pattern MirTxCert d <- (getMirTxCert -> Just d) - where - MirTxCert d = mkMirTxCert d - -pattern GenesisDelegTxCert :: - (ShelleyEraTxCert era, ProtVerAtMost era 8) => - KeyHash 'Genesis (EraCrypto era) -> - KeyHash 'GenesisDelegate (EraCrypto era) -> - Hash (EraCrypto era) (VerKeyVRF (EraCrypto era)) -> - TxCert era -pattern GenesisDelegTxCert genKey genDelegKey vrf <- - (getGenesisDelegTxCert -> Just (GenesisDelegCert genKey genDelegKey vrf)) - where - GenesisDelegTxCert genKey genDelegKey vrf = - mkGenesisDelegTxCert $ GenesisDelegCert genKey genDelegKey vrf - -{-# COMPLETE - RegPoolTxCert - , RetirePoolTxCert - , RegTxCert - , UnRegTxCert - , DelegStakeTxCert - , MirTxCert - , GenesisDelegTxCert - #-} - --- | Genesis key delegation certificate -data GenesisDelegCert c - = GenesisDelegCert - !(KeyHash 'Genesis c) - !(KeyHash 'GenesisDelegate c) - !(Hash c (VerKeyVRF c)) - deriving (Show, Generic, Eq) - -instance NoThunks (GenesisDelegCert c) - -instance NFData (GenesisDelegCert c) where - rnf = rwhnf - -instance Crypto c => ToJSON (GenesisDelegCert c) where - toJSON (GenesisDelegCert genKeyHash genDelegKeyHash hashVrf) = - kindObject "GenesisDelegCert" $ - [ "genKeyHash" .= toJSON genKeyHash - , "genDelegKeyHash" .= toJSON genDelegKeyHash - , "hashVrf" .= toJSON hashVrf - ] - -genesisKeyHashWitness :: GenesisDelegCert c -> KeyHash 'Witness c -genesisKeyHashWitness (GenesisDelegCert gk _ _) = asWitness gk - -genesisCWitness :: GenesisDelegCert c -> KeyHash 'Genesis c -genesisCWitness (GenesisDelegCert gk _ _) = gk - -data MIRPot = ReservesMIR | TreasuryMIR - deriving (Show, Generic, Eq, NFData, Ord, Enum, Bounded) - -deriving instance NoThunks MIRPot - -instance EncCBOR MIRPot where - encCBOR ReservesMIR = encodeWord8 0 - encCBOR TreasuryMIR = encodeWord8 1 - -instance DecCBOR MIRPot where - decCBOR = - decodeWord >>= \case - 0 -> pure ReservesMIR - 1 -> pure TreasuryMIR - k -> invalidKey k - -instance ToJSON MIRPot where - toJSON = \case - ReservesMIR -> "reserves" - TreasuryMIR -> "treasury" - --- | MIRTarget specifies if funds from either the reserves --- or the treasury are to be handed out to a collection of --- reward accounts or instead transfered to the opposite pot. -data MIRTarget c - = StakeAddressesMIR !(Map (Credential 'Staking c) DeltaCoin) - | SendToOppositePotMIR !Coin - deriving (Show, Generic, Eq, NFData) - -deriving instance NoThunks (MIRTarget c) - -instance Crypto c => DecCBOR (MIRTarget c) where - decCBOR = do - peekTokenType >>= \case - TypeMapLen -> StakeAddressesMIR <$> decCBOR - TypeMapLen64 -> StakeAddressesMIR <$> decCBOR - TypeMapLenIndef -> StakeAddressesMIR <$> decCBOR - _ -> SendToOppositePotMIR <$> decCBOR - -instance Crypto c => EncCBOR (MIRTarget c) where - encCBOR = \case - StakeAddressesMIR m -> encCBOR m - SendToOppositePotMIR c -> encCBOR c - -instance Crypto c => ToJSON (MIRTarget c) where - toJSON = \case - StakeAddressesMIR mirAddresses -> - kindObject "StakeAddressesMIR" ["addresses" .= toJSON mirAddresses] - SendToOppositePotMIR c -> - kindObject "SendToOppositePotMIR" ["coin" .= toJSON c] - --- | Move instantaneous rewards certificate -data MIRCert c = MIRCert - { mirPot :: !MIRPot - , mirRewards :: !(MIRTarget c) - } - deriving (Show, Generic, Eq, NFData) - -instance NoThunks (MIRCert c) - -instance Crypto c => DecCBOR (MIRCert c) where - decCBOR = - decodeRecordNamed "MIRCert" (const 2) (MIRCert <$> decCBOR <*> decCBOR) - -instance Crypto c => EncCBOR (MIRCert c) where - encCBOR (MIRCert pot targets) = - encodeListLen 2 <> encCBOR pot <> encCBOR targets - -instance Crypto c => ToJSON (MIRCert c) where - toJSON MIRCert {mirPot, mirRewards} = - kindObject "MIRCert" $ - [ "pot" .= toJSON mirPot - , "rewards" .= toJSON mirRewards - ] - --- | A heavyweight certificate. -data ShelleyTxCert era - = ShelleyTxCertDelegCert !(ShelleyDelegCert (EraCrypto era)) - | ShelleyTxCertPool !(PoolCert (EraCrypto era)) - | ShelleyTxCertGenesisDeleg !(GenesisDelegCert (EraCrypto era)) - | ShelleyTxCertMir !(MIRCert (EraCrypto era)) - deriving (Show, Generic, Eq, NFData) - -instance NoThunks (ShelleyTxCert era) - -instance Era era => ToJSON (ShelleyTxCert era) where - toJSON = \case - ShelleyTxCertDelegCert delegCert -> toJSON delegCert - ShelleyTxCertPool poolCert -> toJSON poolCert - ShelleyTxCertGenesisDeleg genDelegCert -> toJSON genDelegCert - ShelleyTxCertMir mirCert -> toJSON mirCert - -upgradeShelleyTxCert :: - EraCrypto era1 ~ EraCrypto era2 => - ShelleyTxCert era1 -> - ShelleyTxCert era2 -upgradeShelleyTxCert = \case - ShelleyTxCertDelegCert cert -> ShelleyTxCertDelegCert cert - ShelleyTxCertPool cert -> ShelleyTxCertPool cert - ShelleyTxCertGenesisDeleg cert -> ShelleyTxCertGenesisDeleg cert - ShelleyTxCertMir cert -> ShelleyTxCertMir cert - --- CBOR - -instance Era era => EncCBOR (ShelleyTxCert era) where - encCBOR = \case - ShelleyTxCertDelegCert delegCert -> encodeShelleyDelegCert delegCert - ShelleyTxCertPool poolCert -> encodePoolCert poolCert - ShelleyTxCertGenesisDeleg constCert -> encodeGenesisDelegCert constCert - ShelleyTxCertMir mir -> - encodeListLen 2 <> encodeWord8 6 <> encCBOR mir - -encodeShelleyDelegCert :: Crypto c => ShelleyDelegCert c -> Encoding -encodeShelleyDelegCert = \case - ShelleyRegCert cred -> - encodeListLen 2 <> encodeWord8 0 <> encCBOR cred - ShelleyUnRegCert cred -> - encodeListLen 2 <> encodeWord8 1 <> encCBOR cred - ShelleyDelegCert cred poolId -> - encodeListLen 3 <> encodeWord8 2 <> encCBOR cred <> encCBOR poolId - -encodePoolCert :: Crypto c => PoolCert c -> Encoding -encodePoolCert = \case - RegPool poolParams -> - encodeListLen (1 + listLen poolParams) - <> encodeWord8 3 - <> encCBORGroup poolParams - RetirePool vk epoch -> - encodeListLen 3 - <> encodeWord8 4 - <> encCBOR vk - <> encCBOR epoch - -encodeGenesisDelegCert :: Crypto c => GenesisDelegCert c -> Encoding -encodeGenesisDelegCert (GenesisDelegCert gk kh vrf) = - encodeListLen 4 - <> encodeWord8 5 - <> encCBOR gk - <> encCBOR kh - <> encCBOR vrf - -instance Era era => ToCBOR (ShelleyTxCert era) where - toCBOR = toEraCBOR @era - -instance - ( ShelleyEraTxCert era - , TxCert era ~ ShelleyTxCert era - ) => - FromCBOR (ShelleyTxCert era) - where - fromCBOR = fromEraCBOR @era - -instance - ( ShelleyEraTxCert era - , TxCert era ~ ShelleyTxCert era - ) => - DecCBOR (ShelleyTxCert era) - where - decCBOR = decodeRecordSum "ShelleyTxCert" $ \case - t - | 0 <= t && t < 3 -> shelleyTxCertDelegDecoder t - | 3 <= t && t < 5 -> poolTxCertDecoder t - 5 -> do - gen <- decCBOR - genDeleg <- decCBOR - vrf <- decCBOR - pure (4, ShelleyTxCertGenesisDeleg $ GenesisDelegCert gen genDeleg vrf) - 6 -> do - x <- decCBOR - pure (2, ShelleyTxCertMir x) - x -> invalidKey x - {-# INLINE decCBOR #-} - -shelleyTxCertDelegDecoder :: - ShelleyEraTxCert era => - Word -> - Decoder s (Int, TxCert era) -shelleyTxCertDelegDecoder = \case - 0 -> do - cred <- decCBOR - pure (2, RegTxCert cred) - 1 -> do - cred <- decCBOR - pure (2, UnRegTxCert cred) - 2 -> do - cred <- decCBOR - stakePool <- decCBOR - pure (3, DelegStakeTxCert cred stakePool) - k -> invalidKey k -{-# INLINE shelleyTxCertDelegDecoder #-} - -poolTxCertDecoder :: EraTxCert era => Word -> Decoder s (Int, TxCert era) -poolTxCertDecoder = \case - 3 -> do - group <- decCBORGroup - pure (1 + listLenInt group, RegPoolTxCert group) - 4 -> do - a <- decCBOR - b <- decCBOR - pure (3, RetirePoolTxCert a b) - k -> invalidKey k -{-# INLINE poolTxCertDecoder #-} - -data ShelleyDelegCert c - = -- | A stake credential registration certificate. - ShelleyRegCert !(StakeCredential c) - | -- | A stake credential deregistration certificate. - ShelleyUnRegCert !(StakeCredential c) - | -- | A stake delegation certificate. - ShelleyDelegCert !(StakeCredential c) !(KeyHash 'StakePool c) - deriving (Show, Generic, Eq) - -instance Crypto c => ToJSON (ShelleyDelegCert c) where - toJSON = \case - ShelleyRegCert cred -> kindObject "RegCert" ["credential" .= toJSON cred] - ShelleyUnRegCert cred -> kindObject "UnRegCert" ["credential" .= toJSON cred] - ShelleyDelegCert cred poolId -> - kindObject "DelegCert" $ - [ "credential" .= toJSON cred - , "poolId" .= toJSON poolId - ] - -pattern RegKey :: StakeCredential c -> ShelleyDelegCert c -pattern RegKey cred = ShelleyRegCert cred -{-# DEPRECATED RegKey "In favor of `ShelleyRegCert`" #-} - -pattern DeRegKey :: StakeCredential c -> ShelleyDelegCert c -pattern DeRegKey cred = ShelleyUnRegCert cred -{-# DEPRECATED DeRegKey "In favor of `ShelleyUnRegCert`" #-} - -pattern Delegate :: Delegation c -> ShelleyDelegCert c -pattern Delegate delegation <- (mkDelegation -> Just delegation) - where - Delegate (Delegation cred poolId) = ShelleyDelegCert cred poolId -{-# DEPRECATED Delegate "In favor of `ShelleyDelegCert`" #-} - -{-# COMPLETE RegKey, DeRegKey, Delegate #-} - -mkDelegation :: ShelleyDelegCert c -> Maybe (Delegation c) -mkDelegation (ShelleyDelegCert cred poolId) = Just (Delegation cred poolId) -mkDelegation _ = Nothing - -instance NoThunks (ShelleyDelegCert c) - -instance NFData (ShelleyDelegCert c) where - rnf = rwhnf - --- | Determine the certificate author -delegCWitness :: ShelleyDelegCert c -> Credential 'Staking c -delegCWitness (ShelleyRegCert _) = error "no witness in key registration certificate" -delegCWitness (ShelleyUnRegCert cred) = cred -delegCWitness (ShelleyDelegCert cred _) = cred -{-# DEPRECATED delegCWitness "This was a partial function, logic rewritten in a safer way" #-} - --- | Check for 'ShelleyRegCert' constructor -isRegKey :: ShelleyEraTxCert era => TxCert era -> Bool -isRegKey (RegTxCert _) = True -isRegKey _ = False -{-# DEPRECATED isRegKey "Use `isRegStakeTxCert` instead" #-} - --- | Check for 'ShelleyUnRegCert' constructor -isDeRegKey :: ShelleyEraTxCert era => TxCert era -> Bool -isDeRegKey (UnRegTxCert _) = True -isDeRegKey _ = False -{-# DEPRECATED isDeRegKey "Use `isUnRegStakeTxCert` instead" #-} - --- | Check for 'ShelleyDelegCert' constructor -isDelegation :: ShelleyEraTxCert era => TxCert era -> Bool -isDelegation (DelegStakeTxCert _ _) = True -isDelegation _ = False - --- | Check for 'GenesisDelegate' constructor -isGenesisDelegation :: (ShelleyEraTxCert era, ProtVerAtMost era 8) => TxCert era -> Bool -isGenesisDelegation = isJust . getGenesisDelegTxCert - --- | Check for 'RegPool' constructor -isRegPool :: EraTxCert era => TxCert era -> Bool -isRegPool (RegPoolTxCert _) = True -isRegPool _ = False - --- | Check for 'RetirePool' constructor -isRetirePool :: EraTxCert era => TxCert era -> Bool -isRetirePool (RetirePoolTxCert _ _) = True -isRetirePool _ = False - -isInstantaneousRewards :: (ShelleyEraTxCert era, ProtVerAtMost era 8) => TxCert era -> Bool -isInstantaneousRewards = isJust . getMirTxCert - -isReservesMIRCert :: (ShelleyEraTxCert era, ProtVerAtMost era 8) => TxCert era -> Bool -isReservesMIRCert x = case getMirTxCert x of - Just (MIRCert ReservesMIR _) -> True - _ -> False - -isTreasuryMIRCert :: (ShelleyEraTxCert era, ProtVerAtMost era 8) => TxCert era -> Bool -isTreasuryMIRCert x = case getMirTxCert x of - Just (MIRCert TreasuryMIR _) -> True - _ -> False - --- | Returns True for delegation certificates that require at least --- one witness, and False otherwise. It is mainly used to ensure --- that calling a variant of 'cwitness' is safe. --- --- Note: This will not compile for Conway, because it is incorrect for Conway, use --- `getVKeyWitnessTxCert` instead. -requiresVKeyWitness :: (ShelleyEraTxCert era, ProtVerAtMost era 8) => TxCert era -> Bool -requiresVKeyWitness (RegTxCert _) = False -requiresVKeyWitness x = isNothing $ getMirTxCert x -{-# DEPRECATED requiresVKeyWitness "In favor of `getVKeyWitnessTxCert`" #-} - -getScriptWitnessShelleyTxCert :: - ShelleyTxCert era -> - Maybe (ScriptHash (EraCrypto era)) -getScriptWitnessShelleyTxCert = \case - ShelleyTxCertDelegCert delegCert -> - case delegCert of - ShelleyRegCert _ -> Nothing - ShelleyUnRegCert cred -> credScriptHash cred - ShelleyDelegCert cred _ -> credScriptHash cred - _ -> Nothing - -getVKeyWitnessShelleyTxCert :: ShelleyTxCert era -> Maybe (KeyHash 'Witness (EraCrypto era)) -getVKeyWitnessShelleyTxCert = \case - ShelleyTxCertDelegCert delegCert -> - case delegCert of - -- Registration certificates do not require a witness - ShelleyRegCert _ -> Nothing - ShelleyUnRegCert cred -> credKeyHashWitness cred - ShelleyDelegCert cred _ -> credKeyHashWitness cred - ShelleyTxCertPool poolCert -> Just $ poolCertKeyHashWitness poolCert - ShelleyTxCertGenesisDeleg genesisCert -> Just $ genesisKeyHashWitness genesisCert - ShelleyTxCertMir {} -> Nothing - --- | Determine the total deposit amount needed from a TxBody. --- The block may (legitimately) contain multiple registration certificates --- for the same pool, where the first will be treated as a registration and --- any subsequent ones as re-registration. As such, we must only take a --- deposit for the first such registration. It is even possible for a single --- transaction to have multiple pool registration for the same pool, so as --- we process pool registrations, we must keep track of those that are already --- registered, so we do not add a Deposit for the same pool twice. --- --- Note that this is not an issue for key registrations since subsequent --- registration certificates would be invalid. -shelleyTotalDepositsTxCerts :: - (EraPParams era, Foldable f, EraTxCert era) => - PParams era -> - -- | Check whether a pool with a supplied PoolStakeId is already registered. - (KeyHash 'StakePool (EraCrypto era) -> Bool) -> - f (TxCert era) -> - Coin -shelleyTotalDepositsTxCerts pp isRegPoolRegistered certs = - numKeys - <×> (pp ^. ppKeyDepositL) - <+> numNewRegPoolCerts - <×> (pp ^. ppPoolDepositL) - where - numKeys = getSum @Int $ foldMap' (\x -> if isRegStakeTxCert x then 1 else 0) certs - numNewRegPoolCerts = Set.size (foldl' addNewPoolIds Set.empty certs) - addNewPoolIds regPoolIds = \case - RegPoolTxCert (PoolParams {ppId}) - -- We don't pay a deposit on a pool that is already registered or duplicated in the certs - | not (isRegPoolRegistered ppId || Set.member ppId regPoolIds) -> Set.insert ppId regPoolIds - _ -> regPoolIds - --- | Compute the key deregistration refunds in a transaction -shelleyTotalRefundsTxCerts :: - (EraPParams era, Foldable f, EraTxCert era) => - PParams era -> - -- | Function that can lookup current deposit, in case when the stake key is registered. - (StakeCredential (EraCrypto era) -> Maybe Coin) -> - f (TxCert era) -> - Coin -shelleyTotalRefundsTxCerts pp lookupDeposit = snd . foldl' accum (mempty, Coin 0) - where - keyDeposit = pp ^. ppKeyDepositL - accum (!regCreds, !totalRefunds) cert = - case lookupRegStakeTxCert cert of - Just k -> - -- Need to track new delegations in case that the same key is later deregistered in - -- the same transaction. - (Set.insert k regCreds, totalRefunds) - Nothing -> - case lookupUnRegStakeTxCert cert of - Just cred - -- We first check if there was already a registration certificate in this - -- transaction. - | Set.member cred regCreds -> (Set.delete cred regCreds, totalRefunds <+> keyDeposit) - -- Check for the deposit left during registration in some previous - -- transaction. This de-registration check will be matched first, despite being - -- the last case to match, because registration is not possible without - -- de-registration. - | Just deposit <- lookupDeposit cred -> (regCreds, totalRefunds <+> deposit) - _ -> (regCreds, totalRefunds) diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/TxOut.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/TxOut.hs deleted file mode 100644 index 180fe5c0f69..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/TxOut.hs +++ /dev/null @@ -1,185 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeSynonymInstances #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE ViewPatterns #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Shelley.TxOut ( - ShelleyTxOut (ShelleyTxOut, TxOutCompact), - - -- * Helpers - addrEitherShelleyTxOutL, - valueEitherShelleyTxOutL, -) where - -import qualified Cardano.Crypto.Hash as HS -import Cardano.HeapWords (HeapWords (..)) -import Cardano.Ledger.Address (Addr (..), CompactAddr, compactAddr, decompactAddr) -import Cardano.Ledger.Binary ( - DecCBOR (..), - DecShareCBOR (..), - EncCBOR (..), - FromCBOR (..), - Interns (..), - ToCBOR (..), - decodeRecordNamed, - encodeListLen, - ) -import Cardano.Ledger.Compactible (Compactible (CompactForm, fromCompact, toCompact)) -import Cardano.Ledger.Core -import Cardano.Ledger.Credential (Credential) -import Cardano.Ledger.Crypto (Crypto (ADDRHASH), StandardCrypto) -import Cardano.Ledger.Keys (KeyRole (..)) -import Cardano.Ledger.Shelley.Era (ShelleyEra) -import Cardano.Ledger.Shelley.PParams () -import Cardano.Ledger.Val (Val) -import Data.Aeson (KeyValue, ToJSON (..), object, pairs, (.=)) - -import Control.DeepSeq (NFData (rnf)) -import Data.ByteString.Short (ShortByteString, pack) -import Data.Maybe (fromMaybe) -import Data.Proxy (Proxy (..)) -import Data.Word (Word8) -import GHC.Stack (HasCallStack) -import Lens.Micro -import NoThunks.Class (InspectHeapNamed (..), NoThunks (..)) - -data ShelleyTxOut era = TxOutCompact - { txOutCompactAddr :: {-# UNPACK #-} !(CompactAddr (EraCrypto era)) - , txOutCompactValue :: !(CompactForm (Value era)) - } - -instance Crypto crypto => EraTxOut (ShelleyEra crypto) where - {-# SPECIALIZE instance EraTxOut (ShelleyEra StandardCrypto) #-} - - type TxOut (ShelleyEra crypto) = ShelleyTxOut (ShelleyEra crypto) - - mkBasicTxOut = ShelleyTxOut - - -- Calling this partial function will result in compilation error, since ByronEra has - -- no instance for EraTxOut type class. - upgradeTxOut = error "It is not possible to translate Byron TxOut with 'upgradeTxOut'" - - addrEitherTxOutL = addrEitherShelleyTxOutL - {-# INLINE addrEitherTxOutL #-} - - valueEitherTxOutL = valueEitherShelleyTxOutL - {-# INLINE valueEitherTxOutL #-} - - getMinCoinTxOut pp _ = pp ^. ppMinUTxOValueL - -addrEitherShelleyTxOutL :: - Lens' (ShelleyTxOut era) (Either (Addr (EraCrypto era)) (CompactAddr (EraCrypto era))) -addrEitherShelleyTxOutL = - lens - (Right . txOutCompactAddr) - ( \txOut -> \case - Left addr -> txOut {txOutCompactAddr = compactAddr addr} - Right cAddr -> txOut {txOutCompactAddr = cAddr} - ) -{-# INLINE addrEitherShelleyTxOutL #-} - -valueEitherShelleyTxOutL :: - Val (Value era) => Lens' (ShelleyTxOut era) (Either (Value era) (CompactForm (Value era))) -valueEitherShelleyTxOutL = - lens - (Right . txOutCompactValue) - ( \txOut -> \case - Left value -> - txOut - { txOutCompactValue = - fromMaybe (error $ "Illegal value in TxOut: " <> show value) $ toCompact value - } - Right cValue -> txOut {txOutCompactValue = cValue} - ) -{-# INLINE valueEitherShelleyTxOutL #-} - --- assume Shelley+ type address : payment addr, staking addr (same length as payment), plus 1 word overhead -instance (Era era, HeapWords (CompactForm (Value era))) => HeapWords (ShelleyTxOut era) where - heapWords (TxOutCompact _ vl) = - 3 - + heapWords (packedADDRHASH (Proxy :: Proxy era)) - + heapWords vl - -instance (Era era, Val (Value era)) => Show (ShelleyTxOut era) where - show = show . viewCompactTxOut -- FIXME: showing TxOut as a tuple is just sad - -deriving instance Eq (CompactForm (Value era)) => Eq (ShelleyTxOut era) - -instance NFData (ShelleyTxOut era) where - rnf = (`seq` ()) - -deriving via InspectHeapNamed "TxOut" (ShelleyTxOut era) instance NoThunks (ShelleyTxOut era) - -pattern ShelleyTxOut :: - (HasCallStack, Era era, Val (Value era)) => - Addr (EraCrypto era) -> - Value era -> - ShelleyTxOut era -pattern ShelleyTxOut addr vl <- - (viewCompactTxOut -> (addr, vl)) - where - ShelleyTxOut addr vl = - TxOutCompact - (compactAddr addr) - (fromMaybe (error $ "Illegal value in TxOut: " <> show vl) $ toCompact vl) - -{-# COMPLETE ShelleyTxOut #-} - -viewCompactTxOut :: - (Era era, Val (Value era)) => ShelleyTxOut era -> (Addr (EraCrypto era), Value era) -viewCompactTxOut TxOutCompact {txOutCompactAddr, txOutCompactValue} = - (decompactAddr txOutCompactAddr, fromCompact txOutCompactValue) - -instance (Era era, EncCBOR (CompactForm (Value era))) => EncCBOR (ShelleyTxOut era) where - encCBOR (TxOutCompact addr coin) = - encodeListLen 2 - <> encCBOR addr - <> encCBOR coin - -instance (Era era, DecCBOR (CompactForm (Value era))) => DecCBOR (ShelleyTxOut era) where - decCBOR = - decodeRecordNamed "ShelleyTxOut" (const 2) $ do - cAddr <- decCBOR - TxOutCompact cAddr <$> decCBOR - -instance (Era era, DecCBOR (CompactForm (Value era))) => DecShareCBOR (ShelleyTxOut era) where - type Share (ShelleyTxOut era) = Interns (Credential 'Staking (EraCrypto era)) - decShareCBOR _ = decCBOR - -instance (Era era, EncCBOR (CompactForm (Value era))) => ToCBOR (ShelleyTxOut era) where - toCBOR = toEraCBOR @era - -instance (Era era, DecCBOR (CompactForm (Value era))) => FromCBOR (ShelleyTxOut era) where - fromCBOR = fromEraCBOR @era - -instance (Era era, Val (Value era)) => ToJSON (ShelleyTxOut era) where - toJSON = object . toTxOutPair - toEncoding = pairs . mconcat . toTxOutPair - -toTxOutPair :: (KeyValue e a, Era era, Val (Value era)) => ShelleyTxOut era -> [a] -toTxOutPair (ShelleyTxOut !addr !amount) = - [ "address" .= addr - , "amount" .= amount - ] - --- a ShortByteString of the same length as the ADDRHASH --- used to calculate heapWords -packedADDRHASH :: forall proxy era. Crypto (EraCrypto era) => proxy era -> ShortByteString -packedADDRHASH _ = - pack $ - replicate - (fromIntegral (1 + 2 * HS.sizeHash (Proxy :: Proxy (ADDRHASH (EraCrypto era))))) - (1 :: Word8) diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/TxWits.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/TxWits.hs deleted file mode 100644 index 81da8c3238f..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/TxWits.hs +++ /dev/null @@ -1,285 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE ViewPatterns #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Shelley.TxWits ( - keyBy, - decodeWits, - ShelleyTxWits ( - ShelleyTxWits, - addrWits, - bootWits, - scriptWits - ), - ShelleyTxWitsRaw, - scriptShelleyTxWitsL, - addrShelleyTxWitsL, - bootAddrShelleyTxWitsL, - addrWits', - shelleyEqTxWitsRaw, - mapTraverseableDecoderA, - - -- * Re-exports - WitVKey (..), -) -where - -import Cardano.Ledger.Binary ( - Annotator, - DecCBOR (decCBOR), - Decoder, - EncCBOR (encCBOR), - decodeList, - ) -import Cardano.Ledger.Binary.Coders -import qualified Cardano.Ledger.Binary.Plain as Plain (ToCBOR (..)) -import Cardano.Ledger.Core ( - Era (EraCrypto), - EraScript (Script), - EraTxWits (..), - ScriptHash, - hashScript, - ) -import Cardano.Ledger.Crypto (Crypto, StandardCrypto) -import Cardano.Ledger.Keys (KeyRole (Witness)) -import Cardano.Ledger.Keys.Bootstrap (BootstrapWitness) -import Cardano.Ledger.Keys.WitVKey (WitVKey (..), witVKeyHash) -import Cardano.Ledger.MemoBytes ( - EqRaw (..), - Mem, - MemoBytes, - Memoized (..), - getMemoRawType, - lensMemoRawType, - mkMemoized, - ) -import Cardano.Ledger.SafeHash (SafeToHash (..)) -import Cardano.Ledger.Shelley.Era (ShelleyEra) -import Cardano.Ledger.Shelley.Scripts () -import Cardano.Ledger.Shelley.TxAuxData () -import Control.DeepSeq (NFData) -import Data.Functor.Classes (Eq1 (liftEq)) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import qualified Data.MapExtras as Map (fromElems) -import Data.Set (Set) -import qualified Data.Set as Set -import Data.Typeable (Typeable) -import GHC.Generics (Generic) -import GHC.Records () -import Lens.Micro (Lens', (^.)) -import NoThunks.Class (NoThunks (..)) - -data ShelleyTxWitsRaw era = ShelleyTxWitsRaw - { addrWits' :: !(Set (WitVKey 'Witness (EraCrypto era))) - , scriptWits' :: !(Map (ScriptHash (EraCrypto era)) (Script era)) - , bootWits' :: !(Set (BootstrapWitness (EraCrypto era))) - } - deriving (Generic) - -deriving instance EraScript era => Show (ShelleyTxWitsRaw era) - -deriving instance EraScript era => Eq (ShelleyTxWitsRaw era) - -instance - ( Era era - , NFData (Script era) - , NFData (WitVKey 'Witness (EraCrypto era)) - , NFData (BootstrapWitness (EraCrypto era)) - ) => - NFData (ShelleyTxWitsRaw era) - -instance EraScript era => NoThunks (ShelleyTxWitsRaw era) - -newtype ShelleyTxWits era = ShelleyTxWitsConstr (MemoBytes ShelleyTxWitsRaw era) - deriving (Generic) - deriving newtype (SafeToHash, Plain.ToCBOR) - -instance Memoized ShelleyTxWits where - type RawType ShelleyTxWits = ShelleyTxWitsRaw - -deriving newtype instance EraScript era => Eq (ShelleyTxWits era) - -deriving newtype instance EraScript era => Show (ShelleyTxWits era) - -instance - ( Era era - , NFData (Script era) - , NFData (WitVKey 'Witness (EraCrypto era)) - , NFData (BootstrapWitness (EraCrypto era)) - ) => - NFData (ShelleyTxWits era) - -instance EraScript era => NoThunks (ShelleyTxWits era) - --- ======================================================= --- Accessors --- ======================================================= - --- | Addresses witness setter and getter for `ShelleyTxWits`. The --- setter does update memoized binary representation. -addrShelleyTxWitsL :: - EraScript era => Lens' (ShelleyTxWits era) (Set (WitVKey 'Witness (EraCrypto era))) -addrShelleyTxWitsL = - lensMemoRawType addrWits' $ \witsRaw aw -> witsRaw {addrWits' = aw} -{-# INLINEABLE addrShelleyTxWitsL #-} - --- | Bootstrap Addresses witness setter and getter for `ShelleyTxWits`. The --- setter does update memoized binary representation. -bootAddrShelleyTxWitsL :: - EraScript era => - Lens' (ShelleyTxWits era) (Set (BootstrapWitness (EraCrypto era))) -bootAddrShelleyTxWitsL = - lensMemoRawType bootWits' $ \witsRaw bw -> witsRaw {bootWits' = bw} -{-# INLINEABLE bootAddrShelleyTxWitsL #-} - --- | Script witness setter and getter for `ShelleyTxWits`. The --- setter does update memoized binary representation. -scriptShelleyTxWitsL :: - EraScript era => - Lens' (ShelleyTxWits era) (Map (ScriptHash (EraCrypto era)) (Script era)) -scriptShelleyTxWitsL = - lensMemoRawType scriptWits' $ \witsRaw sw -> witsRaw {scriptWits' = sw} -{-# INLINEABLE scriptShelleyTxWitsL #-} - -instance Crypto c => EraTxWits (ShelleyEra c) where - {-# SPECIALIZE instance EraTxWits (ShelleyEra StandardCrypto) #-} - - type TxWits (ShelleyEra c) = ShelleyTxWits (ShelleyEra c) - - mkBasicTxWits = mempty - - addrTxWitsL = addrShelleyTxWitsL - {-# INLINE addrTxWitsL #-} - - bootAddrTxWitsL = bootAddrShelleyTxWitsL - {-# INLINE bootAddrTxWitsL #-} - - scriptTxWitsL = scriptShelleyTxWitsL - {-# INLINE scriptTxWitsL #-} - - upgradeTxWits = - error - "Calling this function will cause a compilation error, since there is no TxWits instance for ByronEra" - -instance (TxWits era ~ ShelleyTxWits era, EraTxWits era) => EqRaw (ShelleyTxWits era) where - eqRaw = shelleyEqTxWitsRaw - -instance (Era era, EncCBOR (Script era)) => EncCBOR (ShelleyTxWitsRaw era) where - encCBOR (ShelleyTxWitsRaw vkeys scripts boots) = - encode $ - Keyed ShelleyTxWitsRaw - !> Omit null (Key 0 $ To vkeys) - !> Omit null (Key 1 $ E (encCBOR . Map.elems) scripts) - !> Omit null (Key 2 $ To boots) - --- | Encodes memoized bytes created upon construction. -instance Era era => EncCBOR (ShelleyTxWits era) - -instance EraScript era => Semigroup (ShelleyTxWits era) where - (ShelleyTxWits a b c) <> y | Set.null a && Map.null b && Set.null c = y - y <> (ShelleyTxWits a b c) | Set.null a && Map.null b && Set.null c = y - (ShelleyTxWits a b c) <> (ShelleyTxWits a' b' c') = ShelleyTxWits (a <> a') (b <> b') (c <> c') - -instance EraScript era => Monoid (ShelleyTxWits era) where - mempty = ShelleyTxWits mempty mempty mempty - -pattern ShelleyTxWits :: - forall era. - EraScript era => - Set (WitVKey 'Witness (EraCrypto era)) -> - Map (ScriptHash (EraCrypto era)) (Script era) -> - Set (BootstrapWitness (EraCrypto era)) -> - ShelleyTxWits era -pattern ShelleyTxWits {addrWits, scriptWits, bootWits} <- - (getMemoRawType -> ShelleyTxWitsRaw addrWits scriptWits bootWits) - where - ShelleyTxWits awits scriptWitMap bootstrapWits = - mkMemoized $ ShelleyTxWitsRaw awits scriptWitMap bootstrapWits - -{-# COMPLETE ShelleyTxWits #-} - -shelleyEqTxWitsRaw :: EraTxWits era => TxWits era -> TxWits era -> Bool -shelleyEqTxWitsRaw txWits1 txWits2 = - liftEq eqRaw (txWits1 ^. addrTxWitsL) (txWits2 ^. addrTxWitsL) - && liftEq eqRaw (txWits1 ^. scriptTxWitsL) (txWits2 ^. scriptTxWitsL) - && liftEq eqRaw (txWits1 ^. bootAddrTxWitsL) (txWits2 ^. bootAddrTxWitsL) - -instance EraScript era => DecCBOR (Annotator (ShelleyTxWitsRaw era)) where - decCBOR = decodeWits - -deriving via - (Mem ShelleyTxWitsRaw era) - instance - EraScript era => DecCBOR (Annotator (ShelleyTxWits era)) - --- | This type is only used to preserve the old buggy behavior where signature --- was ignored in the `Ord` instance for `WitVKey`s. -newtype IgnoreSigOrd kr c = IgnoreSigOrd {unIgnoreSigOrd :: WitVKey kr c} - deriving (Eq) - -instance (Typeable kr, Crypto c) => Ord (IgnoreSigOrd kr c) where - compare (IgnoreSigOrd w1) (IgnoreSigOrd w2) = compare (witVKeyHash w1) (witVKeyHash w2) - -decodeWits :: - forall era s. - EraScript era => - Decoder s (Annotator (ShelleyTxWitsRaw era)) -decodeWits = - decode $ - SparseKeyed - "ShelleyTxWitsRaw" - (pure emptyWitnessSet) - witField - [] - where - emptyWitnessSet = ShelleyTxWitsRaw mempty mempty mempty - witField :: Word -> Field (Annotator (ShelleyTxWitsRaw era)) - witField 0 = - fieldAA - (\x wits -> wits {addrWits' = x}) - ( D $ - mapTraverseableDecoderA - (decodeList decCBOR) - (Set.map unIgnoreSigOrd . Set.fromList . fmap IgnoreSigOrd) - ) - witField 1 = - fieldAA - (\x wits -> wits {scriptWits' = x}) - ( D $ - mapTraverseableDecoderA - (decodeList decCBOR) - (Map.fromElems (hashScript @era)) - ) - witField 2 = - fieldAA - (\x wits -> wits {bootWits' = x}) - (D $ mapTraverseableDecoderA (decodeList decCBOR) Set.fromList) - witField n = fieldAA (\_ wits -> wits) (Invalid n) - -keyBy :: Ord k => (a -> k) -> [a] -> Map k a -keyBy f xs = Map.fromList $ (\x -> (f x, x)) <$> xs -{-# DEPRECATED keyBy "In favor of `Data.MapExtras.fromElems`" #-} - -mapTraverseableDecoderA :: - Traversable f => - Decoder s (f (Annotator a)) -> - (f a -> m b) -> - Decoder s (Annotator (m b)) -mapTraverseableDecoderA decList transformList = fmap transformList . sequence <$> decList diff --git a/eras/shelley/impl/src/Cardano/Ledger/Shelley/UTxO.hs b/eras/shelley/impl/src/Cardano/Ledger/Shelley/UTxO.hs deleted file mode 100644 index 028a09acb5f..00000000000 --- a/eras/shelley/impl/src/Cardano/Ledger/Shelley/UTxO.hs +++ /dev/null @@ -1,312 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE BlockArguments #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilyDependencies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Shelley.UTxO ( - EraUTxO (..), - ShelleyScriptsNeeded (..), - scriptsNeeded, - getShelleyScriptsNeeded, - scriptCred, - scriptStakeCred, - getConsumedCoin, - shelleyProducedValue, - consumed, - produced, - txup, - getShelleyMinFeeTxUtxo, - getShelleyWitsVKeyNeeded, - getShelleyWitsVKeyNeededNoGov, - module UTxO, -) -where - -import Cardano.Ledger.Address (Addr (..), bootstrapKeyHash) -import Cardano.Ledger.BaseTypes (StrictMaybe (..), strictMaybeToMaybe) -import Cardano.Ledger.CertState ( - CertState (..), - certDStateL, - certPStateL, - certVStateL, - dsGenDelegs, - lookupDepositDState, - lookupDepositVState, - psStakePoolParamsL, - ) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Core -import Cardano.Ledger.Credential (Credential (..), credKeyHashWitness, credScriptHash) -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Keys ( - GenDelegs (..), - KeyHash (..), - KeyRole (..), - asWitness, - genDelegKeyHash, - ) -import Cardano.Ledger.PoolParams (PoolParams (..)) -import Cardano.Ledger.Shelley.Era (ShelleyEra) -import Cardano.Ledger.Shelley.PParams (ProposedPPUpdates (ProposedPPUpdates), Update (..)) -import Cardano.Ledger.Shelley.Tx () -import Cardano.Ledger.Shelley.TxBody ( - ShelleyEraTxBody (..), - Withdrawals (..), - raCredential, - ) -import Cardano.Ledger.Shelley.TxCert ( - ShelleyEraTxCert, - pattern DelegStakeTxCert, - pattern RegTxCert, - pattern UnRegTxCert, - ) -import Cardano.Ledger.TxIn (TxIn (..)) -import Cardano.Ledger.UTxO as UTxO -import Cardano.Ledger.Val ((<+>)) -import qualified Cardano.Ledger.Val as Val -import Control.SetAlgebra (eval, (◁)) -import Data.Foldable (Foldable (fold), foldr', toList) -import qualified Data.Map.Strict as Map -import Data.Set (Set) -import qualified Data.Set as Set -import Lens.Micro ((^.)) - -txup :: (EraTx era, ShelleyEraTxBody era) => Tx era -> Maybe (Update era) -txup tx = strictMaybeToMaybe (tx ^. bodyTxL . updateTxBodyL) -{-# DEPRECATED txup "In favor of `updateTxBodyL`" #-} - -scriptStakeCred :: - ShelleyEraTxCert era => - TxCert era -> - Maybe (ScriptHash (EraCrypto era)) -scriptStakeCred = \case - RegTxCert _ -> Nothing - UnRegTxCert cred -> credScriptHash cred - DelegStakeTxCert cred _ -> credScriptHash cred - _ -> Nothing -{-# DEPRECATED scriptStakeCred "In favor of `getScriptWitnessTxCert`" #-} - -scriptCred :: Credential kr c -> Maybe (ScriptHash c) -scriptCred = credScriptHash -{-# DEPRECATED scriptCred "In favor of `credScriptHash`" #-} - --- | Computes the set of script hashes required to unlock the transaction inputs --- and the withdrawals. -scriptsNeeded :: - forall era. - EraTx era => - UTxO era -> - Tx era -> - Set (ScriptHash (EraCrypto era)) -scriptsNeeded u tx = - case getShelleyScriptsNeeded u (tx ^. bodyTxL) of - ShelleyScriptsNeeded sn -> sn -{-# DEPRECATED scriptsNeeded "In favor of `getScriptsNeeded`" #-} - --- | Compute the subset of inputs of the set 'txIns' for which each input is --- locked by a script in the UTxO 'u'. -txinsScriptHashes :: - EraTxOut era => - Set (TxIn (EraCrypto era)) -> - UTxO era -> - Set (ScriptHash (EraCrypto era)) -txinsScriptHashes txInps (UTxO u) = foldr add Set.empty txInps - where - -- to get subset, start with empty, and only insert those inputs in txInps - -- that are locked in u - add input ans = case Map.lookup input u of - Just txOut -> case txOut ^. addrTxOutL of - Addr _ (ScriptHashObj h) _ -> Set.insert h ans - _ -> ans - Nothing -> ans - -getShelleyScriptsNeeded :: - EraTxBody era => - UTxO era -> - TxBody era -> - ShelleyScriptsNeeded era -getShelleyScriptsNeeded u txBody = - ShelleyScriptsNeeded - ( scriptHashes - `Set.union` Set.fromList - [sh | w <- withdrawals, Just sh <- [credScriptHash (raCredential w)]] - `Set.union` Set.fromList - [sh | c <- certificates, Just sh <- [getScriptWitnessTxCert c]] - ) - where - withdrawals = Map.keys (unWithdrawals (txBody ^. withdrawalsTxBodyL)) - scriptHashes = txinsScriptHashes (txBody ^. inputsTxBodyL) u - certificates = toList (txBody ^. certsTxBodyL) - --- | For eras before Conway, VState is expected to have an empty Map for vsDReps, and so deposit summed up is zero. -consumed :: - EraUTxO era => - PParams era -> - CertState era -> - UTxO era -> - TxBody era -> - Value era -consumed pp certState = - getConsumedValue - pp - (lookupDepositDState $ certState ^. certDStateL) - (lookupDepositVState $ certState ^. certVStateL) - --- | Compute the lovelace which are created by the transaction --- For eras before Conway, VState is expected to have an empty Map for vsDReps, and so deposit summed up is zero. -produced :: - EraUTxO era => - PParams era -> - CertState era -> - TxBody era -> - Value era -produced pp certState = - getProducedValue pp (flip Map.member $ certState ^. certPStateL . psStakePoolParamsL) - -shelleyProducedValue :: - EraTxBody era => - PParams era -> - -- | Check whether a pool with a supplied PoolStakeId is already registered. - (KeyHash 'StakePool (EraCrypto era) -> Bool) -> - TxBody era -> - Value era -shelleyProducedValue pp isRegPoolId txBody = - sumAllValue (txBody ^. outputsTxBodyL) - <+> Val.inject - (txBody ^. feeTxBodyL <+> getTotalDepositsTxBody pp isRegPoolId txBody) - --- | Compute the lovelace which are destroyed by the transaction. This implementation is --- suitable for Shelley and Allegra only. -getConsumedCoin :: - EraTxBody era => - PParams era -> - (Credential 'Staking (EraCrypto era) -> Maybe Coin) -> - UTxO era -> - TxBody era -> - Coin -getConsumedCoin pp lookupRefund utxo txBody = - {- balance (txins tx ◁ u) + wbalance (txwdrls tx) + keyRefunds dpstate tx -} - coinBalance (txInsFilter utxo (txBody ^. inputsTxBodyL)) - <> refunds - <> withdrawals - where - refunds = getTotalRefundsTxBody pp lookupRefund (const Nothing) txBody - withdrawals = fold . unWithdrawals $ txBody ^. withdrawalsTxBodyL - -newtype ShelleyScriptsNeeded era = ShelleyScriptsNeeded (Set (ScriptHash (EraCrypto era))) - deriving (Eq, Show) - -instance Crypto c => EraUTxO (ShelleyEra c) where - type ScriptsNeeded (ShelleyEra c) = ShelleyScriptsNeeded (ShelleyEra c) - - getConsumedValue pp lookupKeyDeposit _ = getConsumedCoin pp lookupKeyDeposit - - getProducedValue = shelleyProducedValue - - getScriptsProvided _ tx = ScriptsProvided (tx ^. witsTxL . scriptTxWitsL) - - getScriptsNeeded = getShelleyScriptsNeeded - - getScriptsHashesNeeded (ShelleyScriptsNeeded scriptsHashes) = scriptsHashes - - getWitsVKeyNeeded = getShelleyWitsVKeyNeeded - - getMinFeeTxUtxo pp tx _ = getShelleyMinFeeTxUtxo pp tx - --- We don't consider the reference scripts in the calculation before Conway -getShelleyMinFeeTxUtxo :: EraTx era => PParams era -> Tx era -> Coin -getShelleyMinFeeTxUtxo pparams tx = getMinFeeTx pparams tx 0 - --- | Collect the set of hashes of keys that needs to sign a --- given transaction. This set consists of the txin owners, --- certificate authors, and withdrawal reward accounts. -witsVKeyNeededGenDelegs :: - forall era. - ShelleyEraTxBody era => - TxBody era -> - GenDelegs (EraCrypto era) -> - Set (KeyHash 'Witness (EraCrypto era)) -witsVKeyNeededGenDelegs txBody (GenDelegs genDelegs) = - asWitness `Set.map` proposedUpdatesWitnesses (txBody ^. updateTxBodyL) - where - -- Calculate the set of hash keys of the required witnesses for update - -- proposals. - proposedUpdatesWitnesses = \case - SNothing -> Set.empty - SJust (Update (ProposedPPUpdates pup) _) -> - Set.map asWitness . Set.fromList $ Map.elems updateKeys'' - where - updateKeys' = eval (Map.keysSet pup ◁ genDelegs) - updateKeys'' = Map.map genDelegKeyHash updateKeys' - --- | Extract witnesses from UTxO and TxBody. Does not enforce witnesses for governance --- related Keys, i.e. `GenDelegs` -getShelleyWitsVKeyNeededNoGov :: - forall era. - EraTx era => - UTxO era -> - TxBody era -> - Set (KeyHash 'Witness (EraCrypto era)) -getShelleyWitsVKeyNeededNoGov utxo' txBody = - certAuthors - `Set.union` inputAuthors - `Set.union` owners - `Set.union` wdrlAuthors - where - inputAuthors :: Set (KeyHash 'Witness (EraCrypto era)) - inputAuthors = foldr' accum Set.empty (txBody ^. spendableInputsTxBodyF) - where - accum txin !ans = - case txinLookup txin utxo' of - Just txOut -> - case txOut ^. addrTxOutL of - Addr _ (KeyHashObj pay) _ -> Set.insert (asWitness pay) ans - AddrBootstrap bootAddr -> - Set.insert (asWitness (bootstrapKeyHash bootAddr)) ans - _ -> ans - Nothing -> ans - - wdrlAuthors :: Set (KeyHash 'Witness (EraCrypto era)) - wdrlAuthors = Map.foldrWithKey' accum Set.empty (unWithdrawals (txBody ^. withdrawalsTxBodyL)) - where - accum key _ !ans = - case credKeyHashWitness (raCredential key) of - Nothing -> ans - Just vkeyWit -> Set.insert vkeyWit ans - owners :: Set (KeyHash 'Witness (EraCrypto era)) - owners = foldr' accum Set.empty (txBody ^. certsTxBodyL) - where - accum (RegPoolTxCert pool) !ans = - Set.union - (Set.map asWitness (ppOwners pool)) - ans - accum _cert ans = ans - certAuthors :: Set (KeyHash 'Witness (EraCrypto era)) - certAuthors = foldr' accum Set.empty (txBody ^. certsTxBodyL) - where - accum cert !ans = - case getVKeyWitnessTxCert cert of - Nothing -> ans - Just vkeyWit -> Set.insert vkeyWit ans - -getShelleyWitsVKeyNeeded :: - forall era. - (EraTx era, ShelleyEraTxBody era) => - CertState era -> - UTxO era -> - TxBody era -> - Set (KeyHash 'Witness (EraCrypto era)) -getShelleyWitsVKeyNeeded certState utxo txBody = - getShelleyWitsVKeyNeededNoGov utxo txBody - `Set.union` witsVKeyNeededGenDelegs txBody (dsGenDelegs (certState ^. certDStateL)) diff --git a/eras/shelley/impl/test/Main.hs b/eras/shelley/impl/test/Main.hs deleted file mode 100644 index adb31c5e763..00000000000 --- a/eras/shelley/impl/test/Main.hs +++ /dev/null @@ -1,19 +0,0 @@ -{-# LANGUAGE TypeApplications #-} - -module Main where - -import Cardano.Ledger.Shelley (Shelley) -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Core.JSON (roundTripJsonEraSpec) -import qualified Test.Cardano.Ledger.Shelley.Binary.CddlSpec as Cddl -import qualified Test.Cardano.Ledger.Shelley.BinarySpec as Binary -import qualified Test.Cardano.Ledger.Shelley.Imp as Imp - -main :: IO () -main = - ledgerTestMain $ - describe "Shelley" $ do - Binary.spec - Cddl.spec - Imp.spec @Shelley - roundTripJsonEraSpec @Shelley diff --git a/eras/shelley/impl/test/Test/Cardano/Ledger/Shelley/Binary/CddlSpec.hs b/eras/shelley/impl/test/Test/Cardano/Ledger/Shelley/Binary/CddlSpec.hs deleted file mode 100644 index dc0ce45b610..00000000000 --- a/eras/shelley/impl/test/Test/Cardano/Ledger/Shelley/Binary/CddlSpec.hs +++ /dev/null @@ -1,49 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Shelley.Binary.CddlSpec (spec) where - -import Cardano.Ledger.Address (Addr, RewardAccount) -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto (StandardCrypto) -import Cardano.Ledger.Keys (KeyRole (Staking)) -import Cardano.Ledger.Keys.Bootstrap (BootstrapWitness) -import Cardano.Ledger.PoolParams (StakePoolRelay) -import Cardano.Ledger.Shelley (Shelley) -import Cardano.Ledger.Shelley.API ( - Credential, - MultiSig, - ProposedPPUpdates, - Update, - ) -import Cardano.Ledger.TxIn (TxIn) -import Test.Cardano.Ledger.Binary.Cddl ( - beforeAllCddlFile, - cddlRoundTripAnnCborSpec, - cddlRoundTripCborSpec, - ) -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Shelley.Binary.Cddl (readShelleyCddlFiles) - -spec :: Spec -spec = - describe "CDDL" $ beforeAllCddlFile 3 readShelleyCddlFiles $ do - let v = eraProtVerLow @Shelley - cddlRoundTripAnnCborSpec @(BootstrapWitness StandardCrypto) v "bootstrap_witness" - cddlRoundTripCborSpec @(Addr StandardCrypto) v "address" - cddlRoundTripCborSpec @(RewardAccount StandardCrypto) v "reward_account" - cddlRoundTripCborSpec @(Credential 'Staking StandardCrypto) v "stake_credential" - cddlRoundTripAnnCborSpec @(TxBody Shelley) v "transaction_body" - cddlRoundTripCborSpec @(TxOut Shelley) v "transaction_output" - cddlRoundTripCborSpec @StakePoolRelay v "relay" - cddlRoundTripCborSpec @(TxCert Shelley) v "certificate" - cddlRoundTripCborSpec @(TxIn StandardCrypto) v "transaction_input" - cddlRoundTripAnnCborSpec @(TxAuxData Shelley) v "transaction_metadata" - cddlRoundTripAnnCborSpec @(MultiSig Shelley) v "multisig_script" - cddlRoundTripCborSpec @(Update Shelley) v "update" - cddlRoundTripCborSpec @(ProposedPPUpdates Shelley) v "proposed_protocol_parameter_updates" - cddlRoundTripCborSpec @(PParamsUpdate Shelley) v "protocol_param_update" - cddlRoundTripAnnCborSpec @(Tx Shelley) v "transaction" diff --git a/eras/shelley/impl/test/Test/Cardano/Ledger/Shelley/Binary/GoldenSpec.hs b/eras/shelley/impl/test/Test/Cardano/Ledger/Shelley/Binary/GoldenSpec.hs deleted file mode 100644 index c110313a2d9..00000000000 --- a/eras/shelley/impl/test/Test/Cardano/Ledger/Shelley/Binary/GoldenSpec.hs +++ /dev/null @@ -1,15 +0,0 @@ -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Shelley.Binary.GoldenSpec (spec) where - -import Cardano.Ledger.Shelley -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Shelley.Arbitrary () -import Test.Cardano.Ledger.Shelley.Binary.Golden (goldenNewEpochStateExpectation) - -spec :: Spec -spec = - describe "Golden" $ do - prop "NewEpochState" $ goldenNewEpochStateExpectation @Shelley diff --git a/eras/shelley/impl/test/Test/Cardano/Ledger/Shelley/Binary/RoundTripSpec.hs b/eras/shelley/impl/test/Test/Cardano/Ledger/Shelley/Binary/RoundTripSpec.hs deleted file mode 100644 index 1bcafef0589..00000000000 --- a/eras/shelley/impl/test/Test/Cardano/Ledger/Shelley/Binary/RoundTripSpec.hs +++ /dev/null @@ -1,30 +0,0 @@ -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Shelley.Binary.RoundTripSpec (spec) where - -import Cardano.Ledger.Crypto -import Cardano.Ledger.Shelley -import Cardano.Ledger.Shelley.Genesis -import Cardano.Ledger.Shelley.RewardUpdate -import Test.Cardano.Ledger.Binary.RoundTrip (roundTripCborSpec) -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Core.Binary.RoundTrip (roundTripEraSpec) -import Test.Cardano.Ledger.Shelley.Arbitrary () -import Test.Cardano.Ledger.Shelley.Binary.RoundTrip (roundTripShelleyCommonSpec) - -spec :: Spec -spec = - describe "RoundTrip" $ do - roundTripShelleyCommonSpec @Shelley - describe "Non era parametric Shelley types" $ do - roundTripCborSpec @NominalDiffTimeMicro - roundTripCborSpec @(ShelleyGenesisStaking StandardCrypto) - -- ShelleyGenesis only makes sense in Shelley era - roundTripEraSpec @Shelley @(ShelleyGenesis StandardCrypto) - roundTripCborSpec @(RewardUpdate StandardCrypto) - roundTripCborSpec @(RewardSnapShot StandardCrypto) - roundTripCborSpec @(FreeVars StandardCrypto) - roundTripCborSpec @(Pulser StandardCrypto) - roundTripCborSpec @(PulsingRewUpdate StandardCrypto) diff --git a/eras/shelley/impl/test/Test/Cardano/Ledger/Shelley/BinarySpec.hs b/eras/shelley/impl/test/Test/Cardano/Ledger/Shelley/BinarySpec.hs deleted file mode 100644 index c976de634a1..00000000000 --- a/eras/shelley/impl/test/Test/Cardano/Ledger/Shelley/BinarySpec.hs +++ /dev/null @@ -1,10 +0,0 @@ -module Test.Cardano.Ledger.Shelley.BinarySpec (spec) where - -import Test.Cardano.Ledger.Common -import qualified Test.Cardano.Ledger.Shelley.Binary.GoldenSpec as Golden -import qualified Test.Cardano.Ledger.Shelley.Binary.RoundTripSpec as RoundTrip - -spec :: Spec -spec = do - Golden.spec - RoundTrip.spec diff --git a/eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/Arbitrary.hs b/eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/Arbitrary.hs deleted file mode 100644 index 7a69a7c71b1..00000000000 --- a/eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/Arbitrary.hs +++ /dev/null @@ -1,738 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} --- Due to Delegation usage -{-# OPTIONS_GHC -Wno-orphans -Wno-deprecations #-} - -module Test.Cardano.Ledger.Shelley.Arbitrary ( - collectionDatumMaxSize, - metadataMaxSize, - genMetadata, - genMetadata', - RawSeed (..), - ASC (..), - StakeProportion (..), - VRFNatVal (..), -) where - -import qualified Cardano.Chain.UTxO as Byron -import qualified Cardano.Crypto.VRF as VRF -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.Binary (EncCBOR) -import Cardano.Ledger.Crypto -import Cardano.Ledger.Shelley (ShelleyEra) -import Cardano.Ledger.Shelley.API ( - ApplyTxError (ApplyTxError), - MultiSig (..), - NominalDiffTimeMicro (..), - ShelleyDelegCert, - ShelleyGenesis (..), - ShelleyGenesisStaking (ShelleyGenesisStaking), - ShelleyTx (ShelleyTx), - ShelleyTxBody (ShelleyTxBody), - ) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState -import Cardano.Ledger.Shelley.PParams -import Cardano.Ledger.Shelley.PoolRank -import Cardano.Ledger.Shelley.RewardUpdate -import Cardano.Ledger.Shelley.Rewards ( - LeaderOnlyReward (..), - PoolRewardInfo (..), - StakeShare (..), - ) -import Cardano.Ledger.Shelley.Rules ( - PredicateFailure, - ShelleyDelegPredFailure, - ShelleyDelegsPredFailure, - ShelleyDelplPredFailure, - ShelleyLedgerPredFailure, - ShelleyLedgersPredFailure, - ShelleyPoolPredFailure, - ShelleyPpupPredFailure, - ShelleyUtxoPredFailure, - ShelleyUtxowPredFailure, - VotingPeriod, - ) -import Cardano.Ledger.Shelley.TxAuxData -import Cardano.Ledger.Shelley.TxCert ( - GenesisDelegCert (..), - ShelleyTxCert, - ) -import Cardano.Ledger.Shelley.TxOut -import Cardano.Ledger.Shelley.TxWits (ShelleyTxWits (ShelleyTxWits)) -import Control.Exception (assert) -import Control.Monad.Identity (Identity) -import qualified Data.ByteString.Char8 as BS (length, pack) -import qualified Data.ListMap as LM -import qualified Data.Map.Strict as Map (fromList) -import Data.Proxy (Proxy (Proxy)) -import qualified Data.Text as T (pack) -import qualified Data.Text.Encoding as T (encodeUtf8) -import Data.Word (Word64) -import Generic.Random (genericArbitraryU) -import Numeric.Natural (Natural) -import Test.Cardano.Chain.UTxO.Gen (genCompactTxOut) -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Core.Arbitrary () -import Test.Cardano.Ledger.Core.Utils (unsafeBoundRational) -import Test.QuickCheck.Hedgehog (hedgehog) - ------------------------------------------------------------------------------------------- --- Cardano.Ledger.Shelley.PParams -------------------------------------------------------- ------------------------------------------------------------------------------------------- - -instance Era era => Arbitrary (ShelleyPParams Identity era) where - arbitrary = genericArbitraryU - shrink = genericShrink - -instance Era era => Arbitrary (ShelleyPParams StrictMaybe era) where - arbitrary = genericArbitraryU - shrink = genericShrink - -instance (Era era, Arbitrary (PParamsUpdate era)) => Arbitrary (ProposedPPUpdates era) where - arbitrary = ProposedPPUpdates <$> scale (`div` 15) arbitrary - ------------------------------------------------------------------------------------------- --- Cardano.Ledger.Shelley.TxOut ---------------------------------------------------------- ------------------------------------------------------------------------------------------- - -instance (EraTxOut era, Arbitrary (Value era)) => Arbitrary (ShelleyTxOut era) where - arbitrary = ShelleyTxOut <$> arbitrary <*> scale (`div` 15) arbitrary - ------------------------------------------------------------------------------------------- --- Cardano.Ledger.Shelley.LedgerState ---------------------------------------------------- ------------------------------------------------------------------------------------------- - -instance - ( EraTxOut era - , Arbitrary (TxOut era) - , Arbitrary (Value era) - , Arbitrary (PParams era) - , Arbitrary (StashedAVVMAddresses era) - , Arbitrary (GovState era) - ) => - Arbitrary (NewEpochState era) - where - arbitrary = - NewEpochState - <$> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - -instance - ( EraTxOut era - , Arbitrary (TxOut era) - , Arbitrary (GovState era) - ) => - Arbitrary (EpochState era) - where - arbitrary = - EpochState - <$> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - shrink = genericShrink - -instance - ( EraTxOut era - , Arbitrary (TxOut era) - , Arbitrary (GovState era) - ) => - Arbitrary (LedgerState era) - where - arbitrary = - LedgerState - <$> arbitrary - <*> arbitrary - shrink LedgerState {..} = - -- We drop the first element in the list so the list does not contain the - -- original LedgerState which would cause `shrink` to loop indefinitely. - -- This call of `tail` is safe since the list guaranteed to have at least - -- one element. - tail $ - LedgerState - <$> (lsUTxOState : shrink lsUTxOState) - <*> (lsCertState : shrink lsCertState) - -instance - ( EraTxOut era - , Arbitrary (TxOut era) - , Arbitrary (GovState era) - ) => - Arbitrary (UTxOState era) - where - arbitrary = - UTxOState - <$> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - - -- The 'genericShrink' function returns first the immediate subterms of a - -- value (in case it is a recursive data-type), and then shrinks the value - -- itself. Since 'UTxOState' is not a recursive data-type, there are no - -- subterms, and we can use `recursivelyShrink` directly. This is particularly - -- important when abstracting away the different fields of the ledger state, - -- since the generic subterms instances will overlap due to GHC not having - -- enough context to infer if 'a' and 'b' are the same types (since in this - -- case this will depend on the definition of 'era'). - -- - -- > instance OVERLAPPING_ GSubtermsIncl (K1 i a) a where - -- > instance OVERLAPPING_ GSubtermsIncl (K1 i a) b where - shrink = recursivelyShrink - -instance Arbitrary AccountState where - arbitrary = AccountState <$> arbitrary <*> arbitrary - shrink = genericShrink - -instance Crypto c => Arbitrary (IncrementalStake c) where - arbitrary = IStake <$> arbitrary <*> arbitrary - shrink = genericShrink - ------------------------------------------------------------------------------------------- --- Cardano.Ledger.Shelley.PoolRank ------------------------------------------------------- ------------------------------------------------------------------------------------------- - -instance Arbitrary Likelihood where - arbitrary = Likelihood <$> arbitrary - -instance Arbitrary LogWeight where - arbitrary = LogWeight <$> arbitrary - -instance Arbitrary PerformanceEstimate where - arbitrary = PerformanceEstimate <$> arbitrary - -instance Crypto c => Arbitrary (NonMyopic c) where - arbitrary = NonMyopic <$> arbitrary <*> arbitrary - shrink = genericShrink - ------------------------------------------------------------------------------------------- --- Cardano.Ledger.Shelley.Rewards -------------------------------------------------------- ------------------------------------------------------------------------------------------- -deriving newtype instance Arbitrary StakeShare - -instance Crypto c => Arbitrary (LeaderOnlyReward c) where - arbitrary = LeaderOnlyReward <$> arbitrary <*> arbitrary - shrink = genericShrink - -instance Crypto c => Arbitrary (PoolRewardInfo c) where - arbitrary = - PoolRewardInfo - <$> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - shrink = genericShrink - ------------------------------------------------------------------------------------------- --- Cardano.Ledger.Shelley.RewardUpdate --------------------------------------------------- ------------------------------------------------------------------------------------------- - -instance Crypto c => Arbitrary (RewardUpdate c) where - arbitrary = - RewardUpdate - <$> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - shrink = genericShrink - -instance Crypto c => Arbitrary (RewardAns c) where - arbitrary = RewardAns <$> arbitrary <*> arbitrary - shrink = genericShrink - -instance (Crypto c, a ~ RewardAns c) => Arbitrary (RewardPulser c ShelleyBase a) where - arbitrary = RSLP <$> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary - -instance Crypto c => Arbitrary (PulsingRewUpdate c) where - arbitrary = - oneof - [ Pulsing <$> arbitrary <*> arbitrary - , Complete <$> arbitrary - ] - shrink = genericShrink - -instance Crypto c => Arbitrary (RewardSnapShot c) where - arbitrary = - RewardSnapShot - <$> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - shrink = genericShrink - -instance Crypto c => Arbitrary (FreeVars c) where - arbitrary = - FreeVars - <$> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - shrink = genericShrink - ------------------------------------------------------------------------------------------- --- Cardano.Ledger.Shelley.Governance ----------------------------------------------------- ------------------------------------------------------------------------------------------- - -instance - ( Era era - , Arbitrary (PParamsUpdate era) - , Arbitrary (PParams era) - ) => - Arbitrary (ShelleyGovState era) - where - arbitrary = ShelleyGovState <$> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary - shrink = genericShrink - ------------------------------------------------------------------------------------------- --- Cardano.Ledger.Shelley.TxAuxData ------------------------------------------------------ ------------------------------------------------------------------------------------------- - --- | Max size of generated Metadatum List and Map -collectionDatumMaxSize :: Int -collectionDatumMaxSize = 5 - --- | Max size of generated Metadata map -metadataMaxSize :: Int -metadataMaxSize = 3 - --- | Generate ShelleyTxAuxData (and compute hash) with given frequency -genMetadata :: Era era => Int -> Gen (StrictMaybe (ShelleyTxAuxData era)) -genMetadata metadataFrequency = - frequency - [ (metadataFrequency, SJust <$> genMetadata') - , (100 - metadataFrequency, pure SNothing) - ] - --- | Generate Metadata (and compute hash) of size up to 'metadataMaxSize' -genMetadata' :: Era era => Gen (ShelleyTxAuxData era) -genMetadata' = do - n <- choose (1, metadataMaxSize) - ShelleyTxAuxData . Map.fromList - <$> vectorOf n genMetadatum - --- | Generate one of the Metadatum -genMetadatum :: Gen (Word64, Metadatum) -genMetadatum = do - (,) - <$> arbitrary - <*> oneof - [ genDatumInt - , genDatumString - , genDatumBytestring - , genMetadatumList - , genMetadatumMap - ] - -genDatumInt :: Gen Metadatum -genDatumInt = - I - <$> frequency - [ (8, choose (minVal, maxVal)) - , (1, pure minVal) - , (1, pure maxVal) - ] - where - minVal, maxVal :: Integer - minVal = -maxVal - maxVal = fromIntegral (maxBound :: Word64) - -genDatumString :: Gen Metadatum -genDatumString = - sized $ \sz -> do - n <- choose (0, min sz 64) - cs <- genUtf8StringOfSize n - let s = T.pack cs - assert (BS.length (T.encodeUtf8 s) == n) $ - return (S s) - --- | Produce an arbitrary Unicode string such that it's UTF8 encoding size in --- bytes is exactly the given length. -genUtf8StringOfSize :: Int -> Gen [Char] -genUtf8StringOfSize 0 = return [] -genUtf8StringOfSize n = do - cz <- choose (1, min n 4) - c <- case cz of - 1 -> choose ('\x00000', '\x00007f') - 2 -> choose ('\x00080', '\x0007ff') - 3 -> - oneof - [ choose ('\x00800', '\x00d7ff') - , -- skipping UTF-16 surrogates d800--dfff - choose ('\x0e000', '\x00ffff') - ] - _ -> choose ('\x10000', '\x10ffff') - cs <- genUtf8StringOfSize (n - cz) - return (c : cs) - -genDatumBytestring :: Gen Metadatum -genDatumBytestring = - sized $ \sz -> do - n <- choose (0, min sz 64) - B . BS.pack <$> vectorOf n arbitrary - --- | Generate a 'MD.List [Metadatum]' --- --- Note: to limit generated metadata size, impact on transaction fees and --- cost of hashing, we generate only lists of "simple" Datums, not lists --- of list or map Datum. -genMetadatumList :: Gen Metadatum -genMetadatumList = List <$> vectorOfMetadatumSimple - --- | Generate a 'MD.Map ('[(Metadatum, Metadatum)]') -genMetadatumMap :: Gen Metadatum -genMetadatumMap = - Map <$> (zip <$> vectorOfMetadatumSimple <*> vectorOfMetadatumSimple) - -vectorOfMetadatumSimple :: Gen [Metadatum] -vectorOfMetadatumSimple = do - n <- choose (1, collectionDatumMaxSize) - vectorOf - n - ( oneof - [ genDatumInt - , genDatumString - , genDatumBytestring - ] - ) - ------------------------------------------------------------------------------------------- --- Era-independent generators ------------------------------------------------------------ ------------------------------------------------------------------------------------------- - -instance Era era => Arbitrary (ShelleyTxCert era) where - arbitrary = genericArbitraryU - shrink = genericShrink - -instance Crypto c => Arbitrary (ShelleyDelegCert c) where - arbitrary = genericArbitraryU - shrink = genericShrink - -instance Crypto c => Arbitrary (Delegation c) where - arbitrary = genericArbitraryU - shrink = genericShrink - -instance Crypto c => Arbitrary (GenesisDelegCert c) where - arbitrary = genericArbitraryU - shrink = genericShrink - -instance Crypto c => Arbitrary (MIRCert c) where - arbitrary = genericArbitraryU - shrink = genericShrink - -instance Crypto c => Arbitrary (MIRTarget c) where - arbitrary = - oneof - [ StakeAddressesMIR <$> arbitrary - , SendToOppositePotMIR <$> arbitrary - ] - -instance Arbitrary MIRPot where - arbitrary = genericArbitraryU - -instance (Era era, Arbitrary (PParamsUpdate era)) => Arbitrary (Update era) where - arbitrary = genericArbitraryU - shrink = genericShrink - -newtype VRFNatVal = VRFNatVal Natural - deriving (Show) - -instance Arbitrary VRFNatVal where - arbitrary = - VRFNatVal . fromIntegral - <$> choose @Integer - ( 0 - , 2 - ^ ( 8 - * VRF.sizeOutputVRF - (Proxy @(VRF StandardCrypto)) - ) - ) - shrink (VRFNatVal v) = VRFNatVal <$> shrinkIntegral v - -instance Arbitrary Byron.CompactTxOut where - arbitrary = hedgehog genCompactTxOut - -instance Arbitrary ASC where - arbitrary = - ASC - . mkActiveSlotCoeff - . unsafeBoundRational - . fromRational - . toRational - <$> choose @Double (0.01, 0.5) - -newtype ASC = ASC ActiveSlotCoeff - deriving (Show) - -instance Arbitrary StakeProportion where - arbitrary = StakeProportion . toRational <$> choose @Double (0, 1) - shrink (StakeProportion r) = StakeProportion <$> shrinkRealFrac r - -newtype StakeProportion = StakeProportion Rational - deriving (Show) - -instance - ( EraTxOut era - , Arbitrary (PParamsUpdate era) - , Arbitrary (TxOut era) - , Arbitrary (TxCert era) - , EncCBOR (TxCert era) - ) => - Arbitrary (ShelleyTxBody era) - where - arbitrary = - ShelleyTxBody - <$> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> scale (`div` 15) arbitrary - <*> arbitrary - -genTx :: - ( EraTx era - , Arbitrary (TxBody era) - , Arbitrary (TxAuxData era) - , Arbitrary (TxWits era) - ) => - Gen (ShelleyTx era) -genTx = - ShelleyTx - <$> arbitrary - <*> resize maxTxWits arbitrary - <*> arbitrary - -maxTxWits :: Int -maxTxWits = 5 - -instance Arbitrary Metadatum where - arbitrary = sizedMetadatum maxMetadatumDepth - -instance Era era => Arbitrary (ShelleyTxAuxData era) where - arbitrary = ShelleyTxAuxData <$> arbitrary - -deriving newtype instance Arbitrary NominalDiffTimeMicro - -maxMetadatumDepth :: Int -maxMetadatumDepth = 2 - -maxMetadatumListLens :: Int -maxMetadatumListLens = 5 - -sizedMetadatum :: Int -> Gen Metadatum -sizedMetadatum 0 = - oneof - [ I <$> arbitrary - , B <$> arbitrary - , S <$> (T.pack <$> arbitrary) - ] -sizedMetadatum n = - let xsGen = listOf (sizedMetadatum (n - 1)) - in oneof - [ Map <$> (zip <$> resize maxMetadatumListLens xsGen <*> xsGen) - , List <$> resize maxMetadatumListLens xsGen - , I <$> arbitrary - , B <$> arbitrary - , S <$> (T.pack <$> arbitrary) - ] - -instance Arbitrary VotingPeriod where - arbitrary = genericArbitraryU - shrink = genericShrink - -instance (Arbitrary k, Arbitrary v) => Arbitrary (LM.ListMap k v) where - arbitrary = genericArbitraryU - shrink = genericShrink - -instance Era era => Arbitrary (MultiSig era) where - arbitrary = sizedMultiSig maxMultiSigDepth - -maxMultiSigDepth :: Int -maxMultiSigDepth = 3 - -maxMultiSigListLens :: Int -maxMultiSigListLens = 5 - -sizedMultiSig :: Era era => Int -> Gen (MultiSig era) -sizedMultiSig 0 = RequireSignature <$> arbitrary -sizedMultiSig n = - oneof - [ RequireSignature <$> arbitrary - , RequireAllOf <$> resize maxMultiSigListLens (listOf (sizedMultiSig (n - 1))) - , RequireAnyOf <$> resize maxMultiSigListLens (listOf (sizedMultiSig (n - 1))) - , RequireMOf <$> arbitrary <*> resize maxMultiSigListLens (listOf (sizedMultiSig (n - 1))) - ] - -instance - (Crypto c, Arbitrary (PParams (ShelleyEra c))) => - Arbitrary (ShelleyGenesis c) - where - arbitrary = do - sgSystemStart <- arbitrary - sgNetworkMagic <- arbitrary - sgNetworkId <- arbitrary - sgActiveSlotsCoeff <- arbitrary - sgSecurityParam <- arbitrary - sgEpochLength <- arbitrary - sgSlotsPerKESPeriod <- arbitrary - sgMaxKESEvolutions <- arbitrary - sgSlotLength <- (* 1000000) <$> arbitrary - sgUpdateQuorum <- arbitrary - sgMaxLovelaceSupply <- arbitrary - sgProtocolParams <- arbitrary - sgGenDelegs <- arbitrary - sgInitialFunds <- arbitrary - sgStaking <- arbitrary - pure ShelleyGenesis {..} - -instance Crypto c => Arbitrary (ShelleyGenesisStaking c) where - arbitrary = ShelleyGenesisStaking <$> arbitrary <*> arbitrary - -instance - ( Era era - , EraScript era - , Arbitrary (Script era) - ) => - Arbitrary (ShelleyTxWits era) - where - arbitrary = - ShelleyTxWits - <$> arbitrary - <*> (mscriptsToWits <$> arbitrary) - <*> arbitrary - where - mscriptsToWits = Map.fromList . map (\s -> (hashScript @era s, s)) - -instance Era era => Arbitrary (ShelleyPpupPredFailure era) where - arbitrary = genericArbitraryU - shrink = genericShrink - -instance Era era => Arbitrary (ShelleyPoolPredFailure era) where - arbitrary = genericArbitraryU - shrink = genericShrink - -instance - ( Era era - , Arbitrary (PredicateFailure (EraRule "POOL" era)) - , Arbitrary (PredicateFailure (EraRule "DELEG" era)) - ) => - Arbitrary (ShelleyDelplPredFailure era) - where - arbitrary = genericArbitraryU - shrink = recursivelyShrink - -instance - Era era => - Arbitrary (ShelleyDelegPredFailure era) - where - arbitrary = genericArbitraryU - shrink = genericShrink - -instance - ( Era era - , Arbitrary (PredicateFailure (EraRule "DELPL" era)) - ) => - Arbitrary (ShelleyDelegsPredFailure era) - where - arbitrary = genericArbitraryU - shrink = recursivelyShrink - -instance - ( Era era - , Arbitrary (PredicateFailure (EraRule "LEDGER" era)) - ) => - Arbitrary (ShelleyLedgersPredFailure era) - where - arbitrary = genericArbitraryU - shrink = genericShrink - -instance - ( Era era - , Arbitrary (PredicateFailure (EraRule "DELEGS" era)) - , Arbitrary (PredicateFailure (EraRule "UTXOW" era)) - ) => - Arbitrary (ShelleyLedgerPredFailure era) - where - arbitrary = genericArbitraryU - shrink _ = [] - -instance - ( Era era - , Arbitrary (PredicateFailure (EraRule "UTXO" era)) - ) => - Arbitrary (ShelleyUtxowPredFailure era) - where - arbitrary = genericArbitraryU - shrink _ = [] - -instance - ( EraTx era - , Arbitrary (TxBody era) - , Arbitrary (Value era) - , Arbitrary (TxAuxData era) - , Arbitrary (Script era) - , Arbitrary (TxWits era) - ) => - Arbitrary (ShelleyTx era) - where - arbitrary = genTx - -instance - ( Era era - , Arbitrary (PredicateFailure (EraRule "LEDGER" era)) - ) => - Arbitrary (ApplyTxError era) - where - arbitrary = ApplyTxError <$> arbitrary - shrink (ApplyTxError xs) = [ApplyTxError xs' | xs' <- shrink xs] - -instance - ( Era era - , Arbitrary (Value era) - , Arbitrary (TxOut era) - , Arbitrary (EraRuleFailure "PPUP" era) - ) => - Arbitrary (ShelleyUtxoPredFailure era) - where - arbitrary = genericArbitraryU - shrink _ = [] - -data RawSeed = RawSeed !Word64 !Word64 !Word64 !Word64 !Word64 - deriving (Eq, Show) - -instance Arbitrary RawSeed where - arbitrary = - RawSeed - <$> chooseAny - <*> chooseAny - <*> chooseAny - <*> chooseAny - <*> chooseAny diff --git a/eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/Binary/Cddl.hs b/eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/Binary/Cddl.hs deleted file mode 100644 index 535ba1533c0..00000000000 --- a/eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/Binary/Cddl.hs +++ /dev/null @@ -1,18 +0,0 @@ -module Test.Cardano.Ledger.Shelley.Binary.Cddl ( - readShelleyCddlFileNames, - readShelleyCddlFiles, -) where - -import qualified Data.ByteString.Lazy as BSL -import Paths_cardano_ledger_shelley - -readShelleyCddlFileNames :: IO [FilePath] -readShelleyCddlFileNames = do - base <- getDataFileName "cddl-files/shelley.cddl" - crypto <- getDataFileName "cddl-files/crypto.cddl" - extras <- getDataFileName "cddl-files/extras.cddl" - -- extras contains the types whose restrictions cannot be expressed in CDDL - pure [base, crypto, extras] - -readShelleyCddlFiles :: IO [BSL.ByteString] -readShelleyCddlFiles = mapM BSL.readFile =<< readShelleyCddlFileNames diff --git a/eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/Binary/Golden.hs b/eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/Binary/Golden.hs deleted file mode 100644 index baf04809346..00000000000 --- a/eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/Binary/Golden.hs +++ /dev/null @@ -1,85 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Shelley.Binary.Golden ( - goldenNewEpochStateExpectation, -) where - -import Cardano.Ledger.BaseTypes (BlocksMade (..), EpochNo (..)) -import Cardano.Ledger.Binary (EncCBOR, lengthThreshold) -import Cardano.Ledger.Binary.Plain -import Cardano.Ledger.Core -import Cardano.Ledger.EpochBoundary -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState -import qualified Data.Map.Strict as Map -import qualified Data.VMap as VMap -import Test.Cardano.Ledger.Binary.Plain.Golden -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Shelley.Arbitrary () - -goldenNewEpochStateExpectation :: - forall era. - ( HasCallStack - , EraTxOut era - , EraGov era - , ToCBOR (StashedAVVMAddresses era) - , EncCBOR (StashedAVVMAddresses era) - ) => - NewEpochState era -> - Expectation -goldenNewEpochStateExpectation - nes@NewEpochState - { nesEs = - EpochState - { esAccountState = AccountState {..} - , esSnapshots = SnapShots {..} - , .. - } - , .. - } = - expectGoldenToCBOR DiffHex nes $ - mconcat - [ E (TkListLen 7) - , E (TkWord64 (unEpochNo nesEL)) - , mapEnc (unBlocksMade nesBprev) - , mapEnc (unBlocksMade nesBcur) - , Em - [ E (TkListLen 4) - , Em - [ E (TkListLen 2) - , E asTreasury - , E asReserves - ] - , E esLState - , Em - [ E (TkListLen 4) - , snapShotEnc ssStakeMark - , snapShotEnc ssStakeSet - , snapShotEnc ssStakeGo - , E ssFee - ] - , Ev ver esNonMyopic - ] - , Ev ver nesRu - , Ev ver nesPd - , E stashedAVVMAddresses - ] - where - ver = eraProtVerLow @era - mapEnc m - | Map.size m > lengthThreshold = - Em [E TkMapBegin, me, E TkBreak] - | otherwise = - Em [E (TkMapLen (fromIntegral (Map.size m))), me] - where - me = Em [Ev ver k <> Ev ver v | (k, v) <- Map.toList m] - snapShotEnc SnapShot {..} = - Em - [ E (TkListLen 3) - , mapEnc (VMap.toMap (unStake ssStake)) - , Ev ver ssDelegations - , Ev ver ssPoolParams - ] diff --git a/eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/Binary/RoundTrip.hs b/eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/Binary/RoundTrip.hs deleted file mode 100644 index 7f3c7525f36..00000000000 --- a/eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/Binary/RoundTrip.hs +++ /dev/null @@ -1,89 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Shelley.Binary.RoundTrip ( - roundTripShelleyCommonSpec, - roundTripStateEraTypesSpec, -) where - -import Cardano.Ledger.Binary -import Cardano.Ledger.Compactible -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Shelley (ShelleyEra) -import Cardano.Ledger.Shelley.Governance -import Cardano.Ledger.Shelley.LedgerState -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Core.Binary.RoundTrip -import Test.Cardano.Ledger.Shelley.Arbitrary () - -roundTripShelleyCommonSpec :: - forall era. - ( EraTx era - , EraGov era - , Eq (StashedAVVMAddresses era) - , Show (StashedAVVMAddresses era) - , EncCBOR (StashedAVVMAddresses era) - , DecCBOR (StashedAVVMAddresses era) - , Arbitrary (StashedAVVMAddresses era) - , Arbitrary (Tx era) - , Arbitrary (TxBody era) - , Arbitrary (TxOut era) - , Arbitrary (TxCert era) - , Arbitrary (TxWits era) - , Arbitrary (TxAuxData era) - , Arbitrary (Value era) - , Arbitrary (CompactForm (Value era)) - , Arbitrary (Script era) - , Arbitrary (GovState era) - , Arbitrary (PParams era) - , Arbitrary (PParamsUpdate era) - , RuleListEra era - ) => - Spec -roundTripShelleyCommonSpec = do - roundTripCoreEraTypesSpec @era - roundTripStateEraTypesSpec @era - roundTripAllPredicateFailures @era - -roundTripStateEraTypesSpec :: - forall era. - ( EraTxOut era - , EraGov era - , Eq (StashedAVVMAddresses era) - , Show (StashedAVVMAddresses era) - , EncCBOR (StashedAVVMAddresses era) - , DecCBOR (StashedAVVMAddresses era) - , Arbitrary (StashedAVVMAddresses era) - , Arbitrary (TxOut era) - , Arbitrary (Value era) - , Arbitrary (PParams era) - , Arbitrary (GovState era) - ) => - Spec -roundTripStateEraTypesSpec = do - describe "State Types Families" $ do - roundTripShareEraSpec @era @(GovState era) - describe "State Types" $ do - roundTripShareEraTypeSpec @era @UTxOState - roundTripEraTypeSpec @era @EpochState - roundTripEraTypeSpec @era @NewEpochState - -instance Crypto c => RuleListEra (ShelleyEra c) where - type - EraRules (ShelleyEra c) = - '[ "DELEG" - , "DELEGS" - , "DELPL" - , "LEDGER" - , "LEDGERS" - , "POOL" - , "PPUP" - , "UTXO" - , "UTXOW" - ] diff --git a/eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/Constants.hs b/eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/Constants.hs deleted file mode 100644 index e8d3989e038..00000000000 --- a/eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/Constants.hs +++ /dev/null @@ -1,153 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Shelley.Constants ( - Constants (..), - defaultConstants, -) -where - -import Cardano.Ledger.BaseTypes (Version, natVersion) -import Cardano.Ledger.Coin (Coin (..)) -import Data.Word (Word64) - -data Constants = Constants - { minNumGenInputs :: Int - -- ^ minimal number of transaction inputs to select - , maxNumGenInputs :: Int - -- ^ maximal number of transaction inputs to select - , frequencyRegCert :: Int - -- ^ Relative frequency of generated credential registration certificates - , frequencyRegPoolCert :: Int - -- ^ Relative frequency of generated pool registration certificates - , frequencyDelegCert :: Int - -- ^ Relative frequency of generated delegation certificates - , frequencyGenesisDelegationCert :: Int - -- ^ Relative frequency of generated genesis delegation certificates - , frequencyDeRegKeyCert :: Int - -- ^ Relative frequency of generated credential de-registration certificates - , frequencyRetirePoolCert :: Int - -- ^ Relative frequency of generated pool retirement certificates - , frequencyMIRCert :: Int - -- ^ Relative frequency of generated MIR certificates - , frequencyScriptCredReg :: Int - -- ^ Relative frequency of script credentials in credential registration - -- certificates - , frequencyKeyCredReg :: Int - -- ^ Relative frequency of key credentials in credential registration - -- certificates - , frequencyScriptCredDeReg :: Int - -- ^ Relative frequency of script credentials in credential de-registration - -- certificates - , frequencyKeyCredDeReg :: Int - -- ^ Relative frequency of key credentials in credential de-registration - -- certificates - , frequencyScriptCredDelegation :: Int - -- ^ Relative frequency of script credentials in credential delegation - -- certificates - , frequencyKeyCredDelegation :: Int - -- ^ Relative frequency of key credentials in credential delegation - -- certificates - , frequencyTxUpdates :: Int - -- ^ Relative frequency of Prototol/Application Updates in a transaction - , frequencyTxWithMetadata :: Int - -- ^ Relative frequency of Metadata in a transaction - , minGenesisUTxOouts :: Int - -- ^ minimal number of genesis UTxO outputs - , maxGenesisUTxOouts :: Int - -- ^ maximal number of genesis UTxO outputs - , maxCertsPerTx :: Word64 - -- ^ maximal number of certificates per transaction - , maxTxsPerBlock :: Word64 - -- ^ maximal number of Txs per block - , maxNumKeyPairs :: Word64 - -- ^ maximal numbers of generated keypairs - , minGenesisOutputVal :: Integer - -- ^ minimal coin value for generated genesis outputs - , maxGenesisOutputVal :: Integer - -- ^ maximal coin value for generated genesis outputs - , numBaseScripts :: Int - -- ^ Number of base scripts from which multi sig scripts are built. - , numSimpleScripts :: Int - -- ^ Number of simple scripts which appear in the choices, the remainder are compound (MofN, All, Any, etc.) scripts - , frequencyNoWithdrawals :: Int - -- ^ Relative frequency that a transaction does not include any reward withdrawals - , frequencyAFewWithdrawals :: Int - -- ^ Relative frequency that a transaction includes a small number of - -- reward withdrawals, bounded by 'maxAFewWithdrawals'. - , maxAFewWithdrawals :: Int - -- ^ Maximum number of reward withdrawals that counts as a small number. - , frequencyPotentiallyManyWithdrawals :: Int - -- ^ Relative frequency that a transaction includes any positive number of - -- reward withdrawals - , minSlotTrace :: Int - -- ^ Minimal slot for CHAIN trace generation. - , maxSlotTrace :: Int - -- ^ Maximal slot for CHAIN trace generation. - , frequencyLowMaxEpoch :: Word64 - -- ^ Lower bound of the MaxEpoch protocol parameter - , maxMinFeeA :: Coin - , maxMinFeeB :: Coin - , numCoreNodes :: Word64 - , minTreasury :: Integer - , maxTreasury :: Integer - , minReserves :: Integer - , maxReserves :: Integer - , minMajorPV :: Version - , maxMajorPV :: Version - , genTxStableUtxoSize :: Int - -- ^ When generating Tx, we want the UTxO size to fluctuate around this point. If - -- it gets too small, we can't balance the fee, too large it gets too complicated. - , genTxUtxoIncrement :: Int - -- ^ If we need to grow the Utxo when generating a Tx, how much should it grow by. - } - deriving (Show) - -defaultConstants :: Constants -defaultConstants = - Constants - { minNumGenInputs = 1 - , maxNumGenInputs = 5 - , frequencyRegCert = 2 - , frequencyRegPoolCert = 2 - , frequencyDelegCert = 3 - , frequencyGenesisDelegationCert = 1 - , frequencyDeRegKeyCert = 1 - , frequencyRetirePoolCert = 1 - , frequencyMIRCert = 1 - , frequencyScriptCredReg = 1 - , frequencyKeyCredReg = 2 - , frequencyScriptCredDeReg = 1 - , frequencyKeyCredDeReg = 2 - , frequencyScriptCredDelegation = 1 - , frequencyKeyCredDelegation = 2 - , frequencyTxUpdates = 10 - , frequencyTxWithMetadata = 10 - , minGenesisUTxOouts = 10 - , maxGenesisUTxOouts = 100 - , maxCertsPerTx = 3 - , maxTxsPerBlock = 10 - , maxNumKeyPairs = 150 - , minGenesisOutputVal = 1000000 - , maxGenesisOutputVal = 100000000 - , numBaseScripts = 3 - , numSimpleScripts = 20 - , frequencyNoWithdrawals = 75 - , frequencyAFewWithdrawals = 20 - , maxAFewWithdrawals = 10 - , frequencyPotentiallyManyWithdrawals = 5 - , minSlotTrace = 1000 - , maxSlotTrace = 5000 - , frequencyLowMaxEpoch = 200 - , maxMinFeeA = Coin 1000 - , maxMinFeeB = Coin 3 - , numCoreNodes = 7 - , minTreasury = 1000000 - , maxTreasury = 10000000 - , minReserves = 1000000 - , maxReserves = 10000000 - , minMajorPV = natVersion @2 - , maxMajorPV = maxBound - , genTxStableUtxoSize = 100 - , genTxUtxoIncrement = 3 - } diff --git a/eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/Imp.hs b/eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/Imp.hs deleted file mode 100644 index 377197a7b60..00000000000 --- a/eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/Imp.hs +++ /dev/null @@ -1,30 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Shelley.Imp (spec) where - -import Cardano.Ledger.Core -import Cardano.Ledger.Shelley.Rules (ShelleyUtxowPredFailure) -import Test.Cardano.Ledger.Common -import qualified Test.Cardano.Ledger.Shelley.Imp.EpochSpec as Epoch -import qualified Test.Cardano.Ledger.Shelley.Imp.LedgerSpec as Ledger -import qualified Test.Cardano.Ledger.Shelley.Imp.UtxowSpec as Utxow -import Test.Cardano.Ledger.Shelley.ImpTest (ShelleyEraImp, withImpState) -import qualified Test.Cardano.Ledger.Shelley.UnitTests.IncrementalStakeTest as Incremental - -spec :: - forall era. - ( ShelleyEraImp era - , InjectRuleFailure "LEDGER" ShelleyUtxowPredFailure era - ) => - Spec -spec = do - describe "ShelleyImpSpec" $ withImpState @era $ do - Ledger.spec @era - Epoch.spec @era - Utxow.spec @era - describe "ShelleyPureTests" $ do - Incremental.spec @era diff --git a/eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/Imp/EpochSpec.hs b/eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/Imp/EpochSpec.hs deleted file mode 100644 index f48e5fe154d..00000000000 --- a/eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/Imp/EpochSpec.hs +++ /dev/null @@ -1,47 +0,0 @@ -{-# LANGUAGE ScopedTypeVariables #-} - -module Test.Cardano.Ledger.Shelley.Imp.EpochSpec ( - spec, -) where - -import Cardano.Ledger.Core -import Cardano.Ledger.Shelley.LedgerState ( - esLStateL, - lsCertStateL, - lsUTxOStateL, - nesELL, - nesEsL, - totalObligation, - utxosDepositedL, - utxosGovStateL, - ) -import Cardano.Ledger.Val (Val (..)) -import Test.Cardano.Ledger.Imp.Common -import Test.Cardano.Ledger.Shelley.ImpTest ( - ImpTestState, - ShelleyEraImp, - getsNES, - passEpoch, - submitTxAnn_, - ) - -spec :: - forall era. - ShelleyEraImp era => - SpecWith (ImpTestState era) -spec = describe "EPOCH" $ do - it "Runs basic transaction" $ do - do - certState <- getsNES $ nesEsL . esLStateL . lsCertStateL - govState <- getsNES $ nesEsL . esLStateL . lsUTxOStateL . utxosGovStateL - totalObligation certState govState `shouldBe` zero - do - deposited <- getsNES $ nesEsL . esLStateL . lsUTxOStateL . utxosDepositedL - deposited `shouldBe` zero - submitTxAnn_ "simple transaction" $ mkBasicTx mkBasicTxBody - passEpoch - - it "Crosses the epoch boundary" $ do - getsNES nesELL `shouldReturn` 0 - passEpoch - getsNES nesELL `shouldReturn` 1 diff --git a/eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/Imp/LedgerSpec.hs b/eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/Imp/LedgerSpec.hs deleted file mode 100644 index 7b783463909..00000000000 --- a/eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/Imp/LedgerSpec.hs +++ /dev/null @@ -1,56 +0,0 @@ -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Shelley.Imp.LedgerSpec ( - spec, -) where - -import Cardano.Ledger.BaseTypes (inject) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.UTxO (UTxO (..)) -import qualified Data.Map.Strict as Map -import qualified Data.Sequence.Strict as SSeq -import qualified Data.Set as Set -import Lens.Micro ((&), (.~), (^.)) -import Test.Cardano.Ledger.Core.KeyPair (mkAddr) -import Test.Cardano.Ledger.Core.Utils (txInAt) -import Test.Cardano.Ledger.Imp.Common -import Test.Cardano.Ledger.Shelley.ImpTest - -spec :: - forall era. - ShelleyEraImp era => - SpecWith (ImpTestState era) -spec = describe "LEDGER" $ do - it "Transactions update UTxO" $ do - kpPayment1 <- lookupKeyPair =<< freshKeyHash - kpStaking1 <- lookupKeyPair =<< freshKeyHash - let coin1 = Coin 1000 - tx1 <- - submitTxAnn "First transaction" . mkBasicTx $ - mkBasicTxBody - & outputsTxBodyL @era - .~ SSeq.singleton - (mkBasicTxOut (mkAddr (kpPayment1, kpStaking1)) $ inject coin1) - UTxO utxo1 <- getUTxO - case Map.lookup (txInAt (0 :: Int) tx1) utxo1 of - Just out1 -> out1 ^. coinTxOutL `shouldBe` coin1 - Nothing -> expectationFailure "Could not find the TxOut of the first transaction" - kpPayment2 <- lookupKeyPair =<< freshKeyHash - kpStaking2 <- lookupKeyPair =<< freshKeyHash - let coin2 = Coin 500 - tx2 <- - submitTxAnn "Second transaction" . mkBasicTx $ - mkBasicTxBody - & inputsTxBodyL - .~ Set.singleton - (txInAt (0 :: Int) tx1) - & outputsTxBodyL @era - .~ SSeq.singleton - (mkBasicTxOut (mkAddr (kpPayment2, kpStaking2)) $ inject coin2) - UTxO utxo2 <- getUTxO - case Map.lookup (txInAt (0 :: Int) tx2) utxo2 of - Just out1 -> do - out1 ^. coinTxOutL `shouldBe` coin2 - Nothing -> expectationFailure "Could not find the TxOut of the second transaction" diff --git a/eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/Imp/UtxowSpec.hs b/eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/Imp/UtxowSpec.hs deleted file mode 100644 index a6ca83c9103..00000000000 --- a/eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/Imp/UtxowSpec.hs +++ /dev/null @@ -1,51 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE OverloadedLists #-} - -module Test.Cardano.Ledger.Shelley.Imp.UtxowSpec (spec) where - -import qualified Cardano.Chain.Common as Byron -import Cardano.Ledger.Address (Addr (..), BootstrapAddress (..)) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Core -import Cardano.Ledger.Keys.Bootstrap -import Cardano.Ledger.SafeHash (extractHash, hashAnnotated) -import Cardano.Ledger.Shelley.Rules (ShelleyUtxowPredFailure (..)) -import Lens.Micro -import Test.Cardano.Ledger.Core.KeyPair (ByronKeyPair (..)) -import Test.Cardano.Ledger.Imp.Common -import Test.Cardano.Ledger.Shelley.ImpTest - -spec :: - ( ShelleyEraImp era - , InjectRuleFailure "LEDGER" ShelleyUtxowPredFailure era - ) => - SpecWith (ImpTestState era) -spec = describe "UTXOW" $ do - describe "Bootstrap Witness" $ do - it "Valid Witnesses" $ do - modifyPParams (ppMaxTxSizeL .~ 1000) - aliceBootAddr <- freshBootstapAddress - txIn <- sendCoinTo (AddrBootstrap aliceBootAddr) (Coin 1000000) - let txBody = mkBasicTxBody & inputsTxBodyL .~ [txIn] - submitTx_ (mkBasicTx txBody) - it "InvalidWitnessesUTXOW" $ do - modifyPParams (ppMaxTxSizeL .~ 1000) - aliceBootAddr@(BootstrapAddress aliceByronAddr) <- freshBootstapAddress - aliceByronKeyPair <- lookupByronKeyPair aliceBootAddr - txIn <- sendCoinTo (AddrBootstrap aliceBootAddr) (Coin 1000000) - let (aliceVKey, _) = unpackByronVKey (bkpVerificationKey aliceByronKeyPair) - txBody = mkBasicTxBody & inputsTxBodyL .~ [txIn] - - -- below we use TxBody that was not fixed up, which means the hash for signing - -- will be different thus resulting in a wrong signature - aliceBadWitness = - makeBootstrapWitness - (extractHash (hashAnnotated txBody)) - (bkpSigningKey aliceByronKeyPair) - (Byron.addrAttributes aliceByronAddr) - - txBad = - mkBasicTx txBody - & (witsTxL %~ (bootAddrTxWitsL .~ [aliceBadWitness])) - submitFailingTx txBad [injectFailure $ InvalidWitnessesUTXOW [aliceVKey]] diff --git a/eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/ImpTest.hs b/eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/ImpTest.hs deleted file mode 100644 index 34e6ef2b4b3..00000000000 --- a/eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/ImpTest.hs +++ /dev/null @@ -1,1389 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveFunctor #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE ImplicitParams #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE NumericUnderscores #-} -{-# LANGUAGE OverloadedLists #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilyDependencies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} - -module Test.Cardano.Ledger.Shelley.ImpTest ( - ImpTestM, - SomeSTSEvent (..), - runImpTestM, - runImpTestM_, - evalImpTestM, - execImpTestM, - runImpTestGenM, - runImpTestGenM_, - evalImpTestGenM, - execImpTestGenM, - ImpTestState, - ImpTestEnv (..), - ImpException (..), - ShelleyEraImp (..), - PlutusArgs, - ScriptTestContext, - initShelleyImpNES, - impWitsVKeyNeeded, - modifyPrevPParams, - passEpoch, - passNEpochs, - passTick, - freshKeyHash, - freshKeyPair, - freshKeyAddr, - lookupKeyPair, - freshByronKeyHash, - freshBootstapAddress, - lookupByronKeyPair, - freshSafeHash, - freshKeyHashVRF, - submitTx, - submitTx_, - submitTxAnn, - submitTxAnn_, - submitFailingTx, - trySubmitTx, - modifyNES, - getsNES, - getUTxO, - impAddNativeScript, - impAnn, - runImpRule, - tryRunImpRule, - registerRewardAccount, - lookupReward, - registerPool, - getRewardAccountAmount, - withImpState, - shelleyFixupTx, - lookupImpRootTxOut, - sendValueTo, - sendCoinTo, - expectRegisteredRewardAddress, - expectNotRegisteredRewardAddress, - expectTreasury, - updateAddrTxWits, - addNativeScriptTxWits, - addRootTxIn, - fixupFees, - impGetNativeScript, - impLookupUTxO, - - -- * Logging - logEntry, - logToExpr, - logStakeDistr, - logFeeMismatch, - - -- * Combinators - withCustomFixup, - withFixup, - withNoFixup, - withPostFixup, - withPreFixup, - -- We only export getters, because internal state should not be accessed during testing - impNESG, - impLastTickG, - impKeyPairsG, - impNativeScriptsG, -) where - -import qualified Cardano.Chain.Common as Byron -import Cardano.Crypto.DSIGN (DSIGNAlgorithm (..), Ed25519DSIGN, seedSizeDSIGN) -import Cardano.Crypto.Hash (Hash, HashAlgorithm) -import Cardano.Crypto.Seed (mkSeedFromBytes) -import qualified Cardano.Crypto.VRF as VRF -import Cardano.Ledger.Address ( - Addr (..), - BootstrapAddress (..), - RewardAccount (..), - bootstrapKeyHash, - ) -import Cardano.Ledger.BaseTypes ( - BlocksMade (..), - EpochSize (..), - Globals (..), - Network (..), - ShelleyBase, - SlotNo, - StrictMaybe (..), - TxIx (..), - inject, - mkTxIxPartial, - ) -import Cardano.Ledger.CertState (certDStateL, dsUnifiedL) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Core -import Cardano.Ledger.Credential (Credential (..), StakeReference (..), credToText) -import Cardano.Ledger.Crypto (Crypto (..)) -import Cardano.Ledger.EpochBoundary (emptySnapShots) -import Cardano.Ledger.Keys ( - HasKeyRole (..), - KeyHash, - KeyRole (..), - VerKeyVRF, - bootstrapWitKeyHash, - hashKey, - makeBootstrapWitness, - witVKeyHash, - ) -import Cardano.Ledger.PoolDistr (IndividualPoolStake (..), PoolDistr (..)) -import Cardano.Ledger.PoolParams (PoolParams (..)) -import Cardano.Ledger.SafeHash (HashAnnotated (..), SafeHash, extractHash) -import Cardano.Ledger.Shelley (ShelleyEra) -import Cardano.Ledger.Shelley.AdaPots (sumAdaPots, totalAdaPotsES) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState ( - AccountState (..), - EpochState (..), - LedgerState (..), - NewEpochState (..), - StashedAVVMAddresses, - asTreasuryL, - consumed, - curPParamsEpochStateL, - epochStateIncrStakeDistrL, - epochStateUMapL, - esAccountStateL, - esLStateL, - lsCertStateL, - lsUTxOStateL, - nesELL, - nesEsL, - prevPParamsEpochStateL, - produced, - smartUTxOState, - startStep, - utxosDonationL, - utxosUtxoL, - ) -import Cardano.Ledger.Shelley.Rules (LedgerEnv (..)) -import Cardano.Ledger.Shelley.Scripts (MultiSig (..)) -import Cardano.Ledger.Tools (calcMinFeeTxNativeScriptWits, integralToByteStringN) -import Cardano.Ledger.TxIn (TxId (..), TxIn (..)) -import Cardano.Ledger.UMap as UMap -import Cardano.Ledger.UTxO ( - EraUTxO (..), - ScriptsProvided (..), - UTxO (..), - txinLookup, - ) -import Cardano.Ledger.Val (Val (..)) -import Control.Monad (forM) -import Control.Monad.IO.Class -import Control.Monad.Reader (MonadReader (..), asks) -import Control.Monad.State.Strict (MonadState (..), execStateT, gets, modify) -import Control.Monad.Trans (lift) -import Control.Monad.Trans.Reader (ReaderT (..)) -import Control.Monad.Writer.Class (MonadWriter (..)) -import Control.State.Transition (STS (..), TRC (..), applySTSOptsEither) -import Control.State.Transition.Extended ( - ApplySTSOpts (..), - AssertionPolicy (..), - SingEP (..), - ValidationPolicy (..), - ) -import Data.Coerce (coerce) -import Data.Data (Proxy (..), type (:~:) (..)) -import Data.Default.Class (Default (..)) -import Data.Foldable (toList) -import Data.Functor (($>)) -import Data.Functor.Identity (Identity (..)) -import Data.IORef -import Data.List.NonEmpty (NonEmpty) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Maybe (catMaybes, fromMaybe, mapMaybe) -import Data.Sequence.Strict (StrictSeq (..)) -import qualified Data.Sequence.Strict as SSeq -import qualified Data.Set as Set -import qualified Data.Text as T -import Data.Type.Equality (TestEquality (..)) -import GHC.Stack (SrcLoc (..), getCallStack) -import GHC.TypeLits (KnownSymbol, Symbol, symbolVal) -import Lens.Micro (Lens', SimpleGetter, lens, to, (%~), (&), (.~), (<>~), (^.)) -import Lens.Micro.Mtl (use, view, (%=), (+=), (.=)) -import Numeric.Natural (Natural) -import Prettyprinter (Doc, Pretty (..), defaultLayoutOptions, layoutPretty, line) -import Prettyprinter.Render.String (renderString) -import System.Random -import qualified System.Random as Random -import Test.Cardano.Ledger.Core.Arbitrary () -import Test.Cardano.Ledger.Core.KeyPair ( - ByronKeyPair (..), - KeyPair (..), - mkAddr, - mkKeyHash, - mkWitnessesVKey, - ) -import Test.Cardano.Ledger.Core.Utils (mkDummySafeHash, testGlobals, txInAt) -import Test.Cardano.Ledger.Imp.Common -import Test.Cardano.Ledger.Plutus (PlutusArgs, ScriptTestContext) -import Test.Cardano.Ledger.Shelley.TreeDiff (Expr (..)) -import Test.Cardano.Slotting.Numeric () -import Test.HUnit.Lang (FailureReason (..), HUnitFailure (..)) -import Test.Hspec.Core.Spec (Example (..), Params, paramsQuickCheckArgs) -import Test.QuickCheck.Gen (Gen (..)) -import Test.QuickCheck.Random (QCGen (..), mkQCGen) -import Type.Reflection (Typeable, typeOf) -import UnliftIO (MonadUnliftIO (..)) -import UnliftIO.Exception ( - Exception (..), - SomeException (..), - catchAny, - catchAnyDeep, - evaluateDeep, - throwIO, - ) - -data SomeSTSEvent era - = forall (rule :: Symbol). - ( Typeable (Event (EraRule rule era)) - , Eq (Event (EraRule rule era)) - , ToExpr (Event (EraRule rule era)) - ) => - SomeSTSEvent (Event (EraRule rule era)) - -instance Eq (SomeSTSEvent era) where - SomeSTSEvent x == SomeSTSEvent y - | Just Refl <- testEquality (typeOf x) (typeOf y) = x == y - | otherwise = False - -instance ToExpr (SomeSTSEvent era) where - toExpr (SomeSTSEvent ev) = App "SomeSTSEvent" [toExpr ev] - -data ImpTestState era = ImpTestState - { impNES :: !(NewEpochState era) - , impRootTxIn :: !(TxIn (EraCrypto era)) - , impKeyPairs :: !(forall k. Map (KeyHash k (EraCrypto era)) (KeyPair k (EraCrypto era))) - , impByronKeyPairs :: !(Map (BootstrapAddress (EraCrypto era)) ByronKeyPair) - , impNativeScripts :: !(Map (ScriptHash (EraCrypto era)) (NativeScript era)) - , impLastTick :: !SlotNo - , impGlobals :: !Globals - , impLog :: !(Doc ()) - , impGen :: !QCGen - , impEvents :: [SomeSTSEvent era] - } - -impLogL :: Lens' (ImpTestState era) (Doc ()) -impLogL = lens impLog (\x y -> x {impLog = y}) - -impNESL :: Lens' (ImpTestState era) (NewEpochState era) -impNESL = lens impNES (\x y -> x {impNES = y}) - -impNESG :: SimpleGetter (ImpTestState era) (NewEpochState era) -impNESG = impNESL - -impLastTickL :: Lens' (ImpTestState era) SlotNo -impLastTickL = lens impLastTick (\x y -> x {impLastTick = y}) - -impLastTickG :: SimpleGetter (ImpTestState era) SlotNo -impLastTickG = impLastTickL - -impRootTxInL :: Lens' (ImpTestState era) (TxIn (EraCrypto era)) -impRootTxInL = lens impRootTxIn (\x y -> x {impRootTxIn = y}) - -impKeyPairsG :: - SimpleGetter - (ImpTestState era) - (Map (KeyHash k (EraCrypto era)) (KeyPair k (EraCrypto era))) -impKeyPairsG = to impKeyPairs - -impNativeScriptsL :: Lens' (ImpTestState era) (Map (ScriptHash (EraCrypto era)) (NativeScript era)) -impNativeScriptsL = lens impNativeScripts (\x y -> x {impNativeScripts = y}) - -impNativeScriptsG :: - SimpleGetter (ImpTestState era) (Map (ScriptHash (EraCrypto era)) (NativeScript era)) -impNativeScriptsG = impNativeScriptsL - -impEventsL :: Lens' (ImpTestState era) [SomeSTSEvent era] -impEventsL = lens impEvents (\x y -> x {impEvents = y}) - -class - ( Show (NewEpochState era) - , ToExpr (NewEpochState era) - , ToExpr (Tx era) - , ToExpr (TxOut era) - , ToExpr (PParams era) - , ToExpr (StashedAVVMAddresses era) - , ToExpr (GovState era) - , ToExpr (PParamsHKD StrictMaybe era) - , ToExpr (PParamsHKD Identity era) - , ToExpr (Value era) - , Show (TxOut era) - , Show (PParams era) - , Show (StashedAVVMAddresses era) - , Show (GovState era) - , Eq (TxOut era) - , Eq (PParams era) - , Eq (StashedAVVMAddresses era) - , Eq (GovState era) - , Eq (Event (EraRule "LEDGER" era)) - , Eq (Event (EraRule "TICK" era)) - , Signal (EraRule "LEDGER" era) ~ Tx era - , BaseM (EraRule "LEDGER" era) ~ ShelleyBase - , STS (EraRule "LEDGER" era) - , Signable - (DSIGN (EraCrypto era)) - (Hash (HASH (EraCrypto era)) EraIndependentTxBody) - , DSIGN (EraCrypto era) ~ Ed25519DSIGN - , ToExpr (PredicateFailure (EraRule "LEDGER" era)) - , ToExpr (PredicateFailure (EraRule "UTXOW" era)) - , ToExpr (Event (EraRule "LEDGER" era)) - , ToExpr (Event (EraRule "TICK" era)) - , EraUTxO era - , ShelleyEraTxCert era - , State (EraRule "LEDGER" era) ~ LedgerState era - , Environment (EraRule "LEDGER" era) ~ LedgerEnv era - , EraGov era - , BaseM (EraRule "TICK" era) ~ ShelleyBase - , Signal (EraRule "TICK" era) ~ SlotNo - , Environment (EraRule "TICK" era) ~ () - , State (EraRule "TICK" era) ~ NewEpochState era - , STS (EraRule "TICK" era) - , NFData (PredicateFailure (EraRule "TICK" era)) - , NFData (StashedAVVMAddresses era) - , NFData (Tx era) - , NFData (VerKeyDSIGN (DSIGN (EraCrypto era))) - , NFData (PredicateFailure (EraRule "LEDGER" era)) - , NFData (Event (EraRule "LEDGER" era)) - , NFData (Event (EraRule "TICK" era)) - , VRF.VRFAlgorithm (VRF (EraCrypto era)) - , HashAlgorithm (HASH (EraCrypto era)) - , DSIGNAlgorithm (DSIGN (EraCrypto era)) - , EraRuleEvent "LEDGER" era ~ Event (EraRule "LEDGER" era) - , EraRuleEvent "TICK" era ~ Event (EraRule "TICK" era) - , Typeable (EraRuleEvent "LEDGER" era) - , Typeable (EraRuleEvent "TICK" era) - , ToExpr (EraRuleEvent "LEDGER" era) - , ToExpr (EraRuleEvent "TICK" era) - ) => - ShelleyEraImp era - where - initImpNES :: NewEpochState era - - -- | Try to find a sufficient number of KeyPairs that would satisfy a native script. - -- Whenever script can't be satisfied, Nothing is returned - impSatisfyNativeScript :: - -- | Set of Witnesses that have already been satisfied - Set.Set (KeyHash 'Witness (EraCrypto era)) -> - NativeScript era -> - ImpTestM era (Maybe (Map (KeyHash 'Witness (EraCrypto era)) (KeyPair 'Witness (EraCrypto era)))) - - -- | This modifer should change not only the current PParams, but also the future - -- PParams. If the future PParams are not updated, then they will overwrite the - -- mofication of the current PParams at the next epoch. - modifyPParams :: - (PParams era -> PParams era) -> - ImpTestM era () - modifyPParams f = modifyNES $ nesEsL . curPParamsEpochStateL %~ f - - fixupTx :: HasCallStack => Tx era -> ImpTestM era (Tx era) - -impLedgerEnv :: EraGov era => NewEpochState era -> ImpTestM era (LedgerEnv era) -impLedgerEnv nes = do - slotNo <- gets impLastTick - pure - LedgerEnv - { ledgerSlotNo = slotNo - , ledgerPp = nes ^. nesEsL . curPParamsEpochStateL - , ledgerIx = TxIx 0 - , ledgerAccount = nes ^. nesEsL . esAccountStateL - } - --- | Modify the previous PParams in the current state with the given function. For current --- and future PParams, use `modifyPParams` -modifyPrevPParams :: - EraGov era => - (PParams era -> PParams era) -> - ImpTestM era () -modifyPrevPParams f = modifyNES $ nesEsL . prevPParamsEpochStateL %~ f - --- | Logs the current stake distribution -logStakeDistr :: ImpTestM era () -logStakeDistr = do - stakeDistr <- getsNES $ nesEsL . epochStateIncrStakeDistrL - logEntry $ "Stake distr: " <> showExpr stakeDistr - -mkHashVerKeyVRF :: - forall era. - ShelleyEraImp era => - Integer -> - Hash (HASH (EraCrypto era)) (VerKeyVRF (EraCrypto era)) -mkHashVerKeyVRF = - VRF.hashVerKeyVRF - . VRF.deriveVerKeyVRF - . VRF.genKeyVRF - . mkSeedFromBytes - . integralToByteStringN seedSize - where - seedSize = fromIntegral . seedSizeDSIGN $ Proxy @(DSIGN (EraCrypto era)) - -testKeyHash :: Crypto c => KeyHash kd c -testKeyHash = mkKeyHash (-1) - -initShelleyImpNES :: - forall era. - ( Default (StashedAVVMAddresses era) - , ShelleyEraImp era - ) => - NewEpochState era -initShelleyImpNES = - NewEpochState - { stashedAVVMAddresses = def - , nesRu = - SJust $ - startStep - (EpochSize 432_000) - (BlocksMade (Map.singleton testKeyHash 10)) - epochState - (Coin 45) - (activeSlotCoeff testGlobals) - 10 - , nesPd = - PoolDistr $ - Map.fromList - [ - ( testKeyHash - , IndividualPoolStake - 1 - (mkHashVerKeyVRF @era 0) - ) - ] - , nesEs = epochState - , nesEL = 0 - , nesBprev = BlocksMade (Map.singleton testKeyHash 10) - , nesBcur = BlocksMade mempty - } - where - pp = - emptyPParams - & ppMinFeeAL .~ Coin 44 - & ppMinFeeBL .~ Coin 155_381 - epochState = - EpochState - { esAccountState = - AccountState - { asTreasury = Coin 10_000 - , asReserves = Coin 1_000 - } - , esSnapshots = emptySnapShots - , esLState = - LedgerState - { lsUTxOState = - smartUTxOState - emptyPParams - utxo - zero - zero - emptyGovState - mempty - , lsCertState = def - } - , esNonMyopic = def - } - & prevPParamsEpochStateL .~ pp - & curPParamsEpochStateL .~ pp - utxo = mempty - -mkTxId :: Crypto c => Int -> TxId c -mkTxId idx = TxId (mkDummySafeHash Proxy idx) - -instance - ( Crypto c - , NFData (SigDSIGN (DSIGN c)) - , NFData (VerKeyDSIGN (DSIGN c)) - , DSIGN c ~ Ed25519DSIGN - , Signable (DSIGN c) (Hash (HASH c) EraIndependentTxBody) - ) => - ShelleyEraImp (ShelleyEra c) - where - initImpNES = initShelleyImpNES - - impSatisfyNativeScript providedVKeyHashes script = do - keyPairs <- gets impKeyPairs - let - satisfyMOf m [] - | m <= 0 = Just mempty - | otherwise = Nothing - satisfyMOf m (x : xs) = - case satisfyScript x of - Nothing -> satisfyMOf m xs - Just kps -> do - kps' <- satisfyMOf (m - 1) xs - Just $ kps <> kps' - satisfyScript = \case - RequireSignature keyHash - | keyHash `Set.member` providedVKeyHashes -> Just mempty - | otherwise -> do - keyPair <- Map.lookup keyHash keyPairs - Just $ Map.singleton keyHash keyPair - RequireAllOf ss -> satisfyMOf (length ss) ss - RequireAnyOf ss -> satisfyMOf 1 ss - RequireMOf m ss -> satisfyMOf m ss - pure $ satisfyScript script - - fixupTx = shelleyFixupTx - --- | Figure out all the Byron Addresses that need witnesses as well as all of the --- KeyHashes for Shelley Key witnesses that are required. -impWitsVKeyNeeded :: - EraUTxO era => - TxBody era -> - ImpTestM - era - ( Set.Set (BootstrapAddress (EraCrypto era)) -- Byron Based Addresses - , Set.Set (KeyHash 'Witness (EraCrypto era)) -- Shelley Based KeyHashes - ) -impWitsVKeyNeeded txBody = do - ls <- getsNES (nesEsL . esLStateL) - utxo <- getUTxO - let toBootAddr txIn = do - txOut <- txinLookup txIn utxo - txOut ^. bootAddrTxOutF - bootAddrs = Set.fromList $ mapMaybe toBootAddr $ Set.toList (txBody ^. spendableInputsTxBodyF) - bootKeyHashes = Set.map (coerceKeyRole . bootstrapKeyHash) bootAddrs - allKeyHashes = - getWitsVKeyNeeded (ls ^. lsCertStateL) (ls ^. lsUTxOStateL . utxosUtxoL) txBody - pure (bootAddrs, allKeyHashes Set.\\ bootKeyHashes) - -data ImpTestEnv era = ImpTestEnv - { iteState :: !(IORef (ImpTestState era)) - , iteFixup :: Tx era -> ImpTestM era (Tx era) - } - -iteFixupL :: Lens' (ImpTestEnv era) (Tx era -> ImpTestM era (Tx era)) -iteFixupL = lens iteFixup (\x y -> x {iteFixup = y}) - -newtype ImpTestM era a = ImpTestM {unImpTestM :: ReaderT (ImpTestEnv era) (GenT IO) a} - deriving - ( Functor - , Applicative - , Monad - , MonadIO - , MonadUnliftIO - , MonadReader (ImpTestEnv era) - ) - -instance MonadWriter [SomeSTSEvent era] (ImpTestM era) where - writer (x, evs) = (impEventsL %= (<> evs)) $> x - listen act = do - oldEvs <- use impEventsL - impEventsL .= mempty - res <- act - newEvs <- use impEventsL - impEventsL .= oldEvs - pure (res, newEvs) - pass act = do - ((a, f), evs) <- listen act - writer (a, f evs) - -instance MonadFail (ImpTestM era) where - fail = assertFailure - -instance MonadState (ImpTestState era) (ImpTestM era) where - get = ImpTestM $ do - liftIO . readIORef . iteState =<< ask - put x = ImpTestM $ do - liftIO . flip writeIORef x . iteState =<< ask - -instance ShelleyEraImp era => Example (ImpTestM era ()) where - type Arg (ImpTestM era ()) = ImpTestState era - - evaluateExample impTest params = - evaluateExample (\s -> evalImpTestM (getParamsQCGen params) s impTest) params - -instance (ShelleyEraImp era, Arbitrary a, Show a) => Example (a -> ImpTestM era ()) where - type Arg (a -> ImpTestM era ()) = ImpTestState era - - evaluateExample impTest params = - evaluateExample (\s -> property $ evalImpTestM (getParamsQCGen params) s . impTest) params - -instance MonadGen (ImpTestM era) where - liftGen = ImpTestM . lift . liftGen - variant n (ImpTestM f) = ImpTestM $ ask >>= lift . variant n . runReaderT f - sized f = ImpTestM $ do - env <- ask - lift $ sized (\n -> runReaderT (unImpTestM (f n)) env) - resize n (ImpTestM f) = ImpTestM $ ask >>= lift . resize n . runReaderT f - choose = ImpTestM . lift . choose - -instance HasStatefulGen (StateGenM (ImpTestState era)) (ImpTestM era) where - askStatefulGen = pure StateGenM - -instance HasSubState (ImpTestState era) where - type SubState (ImpTestState era) = StateGen QCGen - getSubState = StateGen . impGen - setSubState s (StateGen g) = s {impGen = g} - -getParamsQCGen :: Params -> Maybe (QCGen, Int) -getParamsQCGen params = replay (paramsQuickCheckArgs params) - -evalImpTestGenM :: ShelleyEraImp era => ImpTestState era -> ImpTestM era b -> Gen (IO b) -evalImpTestGenM impState = fmap (fmap fst) . runImpTestGenM impState - -evalImpTestM :: - ShelleyEraImp era => Maybe (QCGen, Int) -> ImpTestState era -> ImpTestM era b -> IO b -evalImpTestM qc impState = fmap fst . runImpTestM qc impState - -execImpTestGenM :: - ShelleyEraImp era => ImpTestState era -> ImpTestM era b -> Gen (IO (ImpTestState era)) -execImpTestGenM impState = fmap (fmap snd) . runImpTestGenM impState - -execImpTestM :: - ShelleyEraImp era => - Maybe (QCGen, Int) -> - ImpTestState era -> - ImpTestM era b -> - IO (ImpTestState era) -execImpTestM qc impState = fmap snd . runImpTestM qc impState - -runImpTestGenM_ :: ShelleyEraImp era => ImpTestState era -> ImpTestM era b -> Gen (IO ()) -runImpTestGenM_ impState = fmap void . runImpTestGenM impState - -runImpTestM_ :: - ShelleyEraImp era => Maybe (QCGen, Int) -> ImpTestState era -> ImpTestM era b -> IO () -runImpTestM_ qc impState = void . runImpTestM qc impState - -runImpTestGenM :: - ShelleyEraImp era => ImpTestState era -> ImpTestM era b -> Gen (IO (b, ImpTestState era)) -runImpTestGenM impState m = MkGen $ \qcGen qcSz -> runImpTestM (Just (qcGen, qcSz)) impState m - -runImpTestM :: - ShelleyEraImp era => - Maybe (QCGen, Int) -> - ImpTestState era -> - ImpTestM era b -> - IO (b, ImpTestState era) -runImpTestM mQCGen impState (ImpTestM m) = do - let - (qcGen, qcSize, impState') = - case fromMaybe (impGen impState, 30) mQCGen of - (initGen, sz) -> - case split initGen of - (qc, stdGen) -> (qc, sz, impState {impGen = stdGen}) - ioRef <- newIORef impState' - let - env = - ImpTestEnv - { iteState = ioRef - , iteFixup = fixupTx - } - res <- - unGenT (runReaderT m env) qcGen qcSize `catchAny` \exc -> do - logsDoc <- impLog <$> readIORef ioRef - let logs = renderString (layoutPretty defaultLayoutOptions logsDoc) - adjustHUnitExc header (HUnitFailure srcLoc failReason) = - toException $ - HUnitFailure srcLoc $ - case failReason of - Reason msg -> Reason $ logs <> "\n" <> header <> msg - ExpectedButGot Nothing expected got -> - ExpectedButGot (Just $ logs <> header) expected got - ExpectedButGot (Just msg) expected got -> - ExpectedButGot (Just (logs <> "\n" <> header <> msg)) expected got - newExc - | Just hUnitExc <- fromException exc = - adjustHUnitExc [] hUnitExc - | Just (ImpException ann excThrown) <- fromException exc = - let header = unlines $ zipWith (\n str -> replicate n ' ' <> str) [0, 2 ..] ann - in case fromException excThrown of - Nothing -> toException $ ImpException [logs, header] excThrown - Just hUnitExc -> adjustHUnitExc header hUnitExc - | otherwise = toException $ ImpException [logs] exc - throwIO newExc - endState <- readIORef ioRef - pure (res, endState) - -runShelleyBase :: Globals -> ShelleyBase a -> a -runShelleyBase globals act = runIdentity $ runReaderT act globals - -getRewardAccountAmount :: RewardAccount (EraCrypto era) -> ImpTestM era Coin -getRewardAccountAmount rewardAcount = do - umap <- getsNES $ nesEsL . epochStateUMapL - let cred = raCredential rewardAcount - case UMap.lookup cred (RewDepUView umap) of - Nothing -> assertFailure $ "Expected a reward account: " ++ show cred - Just RDPair {rdReward} -> pure $ fromCompact rdReward - -lookupImpRootTxOut :: ImpTestM era (TxIn (EraCrypto era), TxOut era) -lookupImpRootTxOut = do - ImpTestState {impRootTxIn} <- get - utxo <- getUTxO - case txinLookup impRootTxIn utxo of - Nothing -> error "Root txId no longer points to an existing unspent output" - Just rootTxOut -> pure (impRootTxIn, rootTxOut) - -impAddNativeScript :: - forall era. - EraScript era => - NativeScript era -> - ImpTestM era (ScriptHash (EraCrypto era)) -impAddNativeScript nativeScript = do - let script = fromNativeScript nativeScript - scriptHash = hashScript @era script - impNativeScriptsL %= Map.insert scriptHash nativeScript - pure scriptHash - -impNativeScriptsRequired :: - EraUTxO era => - Tx era -> - ImpTestM era (Map (ScriptHash (EraCrypto era)) (NativeScript era)) -impNativeScriptsRequired tx = do - utxo <- getUTxO - ImpTestState {impNativeScripts} <- get - let needed = getScriptsNeeded utxo (tx ^. bodyTxL) - hashesNeeded = getScriptsHashesNeeded needed - pure $ impNativeScripts `Map.restrictKeys` hashesNeeded - --- | Modifies transaction by adding necessary scripts -addNativeScriptTxWits :: - ShelleyEraImp era => - Tx era -> - ImpTestM era (Tx era) -addNativeScriptTxWits tx = impAnn "addNativeScriptTxWits" $ do - scriptsRequired <- impNativeScriptsRequired tx - utxo <- getUTxO - let ScriptsProvided provided = getScriptsProvided utxo tx - scriptsToAdd = scriptsRequired Map.\\ provided - pure $ - tx - & witsTxL . scriptTxWitsL <>~ fmap fromNativeScript scriptsToAdd - --- | Adds @TxWits@ that will satisfy all of the required key witnesses -updateAddrTxWits :: - ( HasCallStack - , ShelleyEraImp era - ) => - Tx era -> - ImpTestM era (Tx era) -updateAddrTxWits tx = impAnn "updateAddrTxWits" $ do - let txBody = tx ^. bodyTxL - txBodyHash = hashAnnotated txBody - (bootAddrs, witsVKeyNeeded) <- impWitsVKeyNeeded txBody - -- Shelley Based Addr Witnesses - let curAddrWitHashes = Set.map witVKeyHash $ tx ^. witsTxL . addrTxWitsL - extraKeyPairs <- mapM lookupKeyPair $ Set.toList (witsVKeyNeeded Set.\\ curAddrWitHashes) - let extraAddrVKeyWits = mkWitnessesVKey txBodyHash extraKeyPairs - addrWitHashes = curAddrWitHashes <> Set.map witVKeyHash extraAddrVKeyWits - -- Shelley Based Native Script Witnesses - scriptsRequired <- impNativeScriptsRequired tx - nativeScriptsKeyPairs <- mapM (impSatisfyNativeScript addrWitHashes) (Map.elems scriptsRequired) - let extraNativeScriptVKeyWits = - mkWitnessesVKey txBodyHash $ Map.elems (mconcat (catMaybes nativeScriptsKeyPairs)) - -- Byron Based Witessed - let curBootAddrWitHashes = Set.map bootstrapWitKeyHash $ tx ^. witsTxL . bootAddrTxWitsL - bootAddrWitsNeeded = - [ bootAddr - | bootAddr <- Set.toList bootAddrs - , not (coerceKeyRole (bootstrapKeyHash bootAddr) `Set.member` curBootAddrWitHashes) - ] - extraBootAddrWits <- forM bootAddrWitsNeeded $ \bootAddr@(BootstrapAddress byronAddr) -> do - ByronKeyPair _ signingKey <- lookupByronKeyPair bootAddr - let attrs = Byron.addrAttributes byronAddr - pure $ makeBootstrapWitness (extractHash txBodyHash) signingKey attrs - pure $ - tx - & witsTxL . addrTxWitsL <>~ extraAddrVKeyWits <> extraNativeScriptVKeyWits - & witsTxL . bootAddrTxWitsL <>~ Set.fromList extraBootAddrWits - --- | This fixup step ensures that there are enough funds in the transaction. -addRootTxIn :: - ShelleyEraImp era => - Tx era -> - ImpTestM era (Tx era) -addRootTxIn tx = impAnn "addRootTxIn" $ do - rootTxIn <- fst <$> lookupImpRootTxOut - pure $ - tx - & bodyTxL . inputsTxBodyL %~ Set.insert rootTxIn - -impNativeScriptKeyPairs :: - ShelleyEraImp era => - Tx era -> - ImpTestM - era - (Map (KeyHash 'Witness (EraCrypto era)) (KeyPair 'Witness (EraCrypto era))) -impNativeScriptKeyPairs tx = do - scriptsRequired <- impNativeScriptsRequired tx - let nativeScripts = Map.elems scriptsRequired - curAddrWits = Set.map witVKeyHash $ tx ^. witsTxL . addrTxWitsL - keyPairs <- mapM (impSatisfyNativeScript curAddrWits) nativeScripts - pure . mconcat $ catMaybes keyPairs - -fixupFees :: - (ShelleyEraImp era, HasCallStack) => - Tx era -> - ImpTestM era (Tx era) -fixupFees tx = impAnn "fixupFees" $ do - pp <- getsNES $ nesEsL . curPParamsEpochStateL - utxo <- getUTxO - certState <- getsNES $ nesEsL . esLStateL . lsCertStateL - kpSpending <- lookupKeyPair =<< freshKeyHash - kpStaking <- lookupKeyPair =<< freshKeyHash - nativeScriptKeyPairs <- impNativeScriptKeyPairs tx - let - nativeScriptKeyWits = Map.keysSet nativeScriptKeyPairs - consumedValue = consumed pp certState utxo (tx ^. bodyTxL) - producedValue = produced pp certState (tx ^. bodyTxL) - validateValue v - | pointwise (<=) zero v = pure v - | otherwise = do - logEntry $ "Failed to validate value: " <> show v - pure zero - logEntry "Validating changeBeforeFee" - changeBeforeFee <- validateValue $ consumedValue <-> producedValue - logToExpr changeBeforeFee - let - changeBeforeFeeTxOut = - mkBasicTxOut - (mkAddr (kpSpending, kpStaking)) - changeBeforeFee - txNoWits = tx & bodyTxL . outputsTxBodyL %~ (:|> changeBeforeFeeTxOut) - outsBeforeFee = tx ^. bodyTxL . outputsTxBodyL - fee = calcMinFeeTxNativeScriptWits utxo pp txNoWits nativeScriptKeyWits - logEntry "Validating change" - change <- validateValue $ changeBeforeFeeTxOut ^. coinTxOutL <-> fee - logToExpr change - let - changeTxOut = changeBeforeFeeTxOut & coinTxOutL .~ change - -- If the remainder is sufficently big we add it to outputs, otherwise we add the - -- extraneous coin to the fee and discard the remainder TxOut - txWithFee - | change >= getMinCoinTxOut pp changeTxOut = - txNoWits - & bodyTxL . outputsTxBodyL .~ (outsBeforeFee :|> changeTxOut) - & bodyTxL . feeTxBodyL .~ fee - | otherwise = - txNoWits - & bodyTxL . outputsTxBodyL .~ outsBeforeFee - & bodyTxL . feeTxBodyL .~ (fee <> changeTxOut ^. coinTxOutL) - pure txWithFee - -shelleyFixupTx :: - forall era. - (ShelleyEraImp era, HasCallStack) => - Tx era -> - ImpTestM era (Tx era) -shelleyFixupTx = - addNativeScriptTxWits - >=> addRootTxIn - >=> fixupFees - >=> updateAddrTxWits - >=> (\tx -> logFeeMismatch tx $> tx) - -logFeeMismatch :: (EraGov era, EraUTxO era) => Tx era -> ImpTestM era () -logFeeMismatch tx = do - pp <- getsNES $ nesEsL . curPParamsEpochStateL - utxo <- getsNES $ nesEsL . esLStateL . lsUTxOStateL . utxosUtxoL - let Coin feeUsed = tx ^. bodyTxL . feeTxBodyL - Coin feeMin = getMinFeeTxUtxo pp tx utxo - when (feeUsed /= feeMin) $ do - logEntry $ - "Estimated fee " <> show feeUsed <> " while required fee is " <> show feeMin - -submitTx_ :: (HasCallStack, ShelleyEraImp era) => Tx era -> ImpTestM era () -submitTx_ = void . submitTx - -submitTx :: (HasCallStack, ShelleyEraImp era) => Tx era -> ImpTestM era (Tx era) -submitTx tx = trySubmitTx tx >>= expectRightDeepExpr - -trySubmitTx :: - forall era. - ( ShelleyEraImp era - , HasCallStack - ) => - Tx era -> - ImpTestM era (Either (NonEmpty (PredicateFailure (EraRule "LEDGER" era))) (Tx era)) -trySubmitTx tx = do - txFixed <- asks iteFixup >>= ($ tx) - logToExpr txFixed - st <- gets impNES - lEnv <- impLedgerEnv st - ImpTestState {impRootTxIn} <- get - res <- tryRunImpRule @"LEDGER" lEnv (st ^. nesEsL . esLStateL) txFixed - let txId = TxId . hashAnnotated $ txFixed ^. bodyTxL - outsSize = SSeq.length $ txFixed ^. bodyTxL . outputsTxBodyL - rootIndex - | outsSize > 0 = outsSize - 1 - | otherwise = error ("Expected at least 1 output after submitting tx: " <> show txId) - forM res $ \(st', events) -> do - tell $ fmap (SomeSTSEvent @era @"LEDGER") events - modify $ impNESL . nesEsL . esLStateL .~ st' - UTxO utxo <- getUTxO - -- This TxIn is in the utxo, and thus can be the new root, only if the transaction was phase2-valid. - -- Otherwise, no utxo with this id would have been created, and so we need to set the new root - -- to what it was before the submission. - let assumedNewRoot = TxIn txId (mkTxIxPartial (fromIntegral rootIndex)) - let newRoot - | Map.member assumedNewRoot utxo = assumedNewRoot - | Map.member impRootTxIn utxo = impRootTxIn - | otherwise = error "Root not found in UTxO" - impRootTxInL .= newRoot - pure txFixed - --- | Submit a transaction that is expected to be rejected. The inputs and --- outputs are automatically balanced. -submitFailingTx :: - ( HasCallStack - , ShelleyEraImp era - ) => - Tx era -> - NonEmpty (PredicateFailure (EraRule "LEDGER" era)) -> - ImpTestM era () -submitFailingTx tx expectedFailure = trySubmitTx tx >>= (`shouldBeLeftExpr` expectedFailure) - -tryRunImpRule :: - forall rule era. - (STS (EraRule rule era), BaseM (EraRule rule era) ~ ShelleyBase) => - Environment (EraRule rule era) -> - State (EraRule rule era) -> - Signal (EraRule rule era) -> - ImpTestM - era - ( Either - (NonEmpty (PredicateFailure (EraRule rule era))) - (State (EraRule rule era), [Event (EraRule rule era)]) - ) -tryRunImpRule stsEnv stsState stsSignal = do - let trc = TRC (stsEnv, stsState, stsSignal) - globals <- use $ to impGlobals - let - stsOpts = - ApplySTSOpts - { asoValidation = ValidateAll - , asoEvents = EPReturn - , asoAssertions = AssertionsAll - } - pure $ runShelleyBase globals (applySTSOptsEither @(EraRule rule era) stsOpts trc) - -runImpRule :: - forall rule era. - ( HasCallStack - , KnownSymbol rule - , STS (EraRule rule era) - , BaseM (EraRule rule era) ~ ShelleyBase - , NFData (State (EraRule rule era)) - , NFData (Event (EraRule rule era)) - , ToExpr (Event (EraRule rule era)) - , Eq (Event (EraRule rule era)) - , Typeable (Event (EraRule rule era)) - ) => - Environment (EraRule rule era) -> - State (EraRule rule era) -> - Signal (EraRule rule era) -> - ImpTestM era (State (EraRule rule era)) -runImpRule stsEnv stsState stsSignal = do - let ruleName = symbolVal (Proxy @rule) - (res, ev) <- - tryRunImpRule @rule stsEnv stsState stsSignal >>= \case - Left fs -> - assertFailure $ - unlines $ - ("Failed to run " <> ruleName <> ":") : map show (toList fs) - Right res -> evaluateDeep res - tell $ fmap (SomeSTSEvent @era @rule) ev - pure res - --- | Runs the TICK rule once -passTick :: - forall era. - ( HasCallStack - , ShelleyEraImp era - ) => - ImpTestM era () -passTick = do - impLastTick <- gets impLastTick - curNES <- getsNES id - nes <- runImpRule @"TICK" () curNES impLastTick - impLastTickL += 1 - impNESL .= nes - --- | Runs the TICK rule until the next epoch is reached -passEpoch :: - forall era. - ShelleyEraImp era => - ImpTestM era () -passEpoch = do - startEpoch <- getsNES nesELL - logEntry $ "Entering " <> show (succ startEpoch) - let - tickUntilNewEpoch curEpoch = do - passTick @era - newEpoch <- getsNES nesELL - unless (newEpoch > curEpoch) $ tickUntilNewEpoch newEpoch - preNES <- gets impNES - - tickUntilNewEpoch startEpoch - gets impNES >>= epochBoundaryCheck preNES - -epochBoundaryCheck :: - (EraTxOut era, EraGov era) => - NewEpochState era -> - NewEpochState era -> - ImpTestM era () -epochBoundaryCheck preNES postNES = do - impAnn "Checking ADA preservation at the epoch boundary" $ do - let preSum = tot preNES - postSum = tot postNES - logEntry $ diffExpr preSum postSum - unless (preSum == postSum) . expectationFailure $ - "Total ADA in the epoch state is not preserved\n\tpost - pre = " - <> show (postSum <-> preSum) - where - tot nes = - (<+>) - (sumAdaPots (totalAdaPotsES (nes ^. nesEsL))) - (nes ^. nesEsL . esLStateL . lsUTxOStateL . utxosDonationL) - --- | Runs the TICK rule until the `n` epochs are passed -passNEpochs :: - forall era. - ShelleyEraImp era => - Natural -> - ImpTestM era () -passNEpochs n = when (n > 0) $ passEpoch >> passNEpochs (n - 1) - --- | Stores extra information about the failure of the unit test -data ImpException = ImpException - { ieAnnotation :: [String] - -- ^ Description of the IO action that caused the failure - , ieThrownException :: SomeException - -- ^ Exception that caused the test to fail - } - -instance Show ImpException where - show (ImpException ann e) = - "Log:\n" - <> unlines ann - <> "\nFailed with Exception:\n\t" - <> displayException e -instance Exception ImpException - --- | Annotation for when failure happens. All the logging done within annotation will be --- discarded if there no failures within the annotation. -impAnn :: NFData a => String -> ImpTestM era a -> ImpTestM era a -impAnn msg m = do - logs <- use impLogL - res <- catchAnyDeep m $ \exc -> - throwIO $ - case fromException exc of - Just (ImpException ann origExc) -> ImpException (msg : ann) origExc - Nothing -> ImpException [msg] exc - impLogL .= logs - pure res - --- | Adds a string to the log, which is only shown if the test fails -logEntry :: HasCallStack => String -> ImpTestM era () -logEntry e = impLogL %= (<> pretty loc <> "\t" <> pretty e <> line) - where - formatSrcLoc srcLoc = - "[" <> srcLocModule srcLoc <> ":" <> show (srcLocStartLine srcLoc) <> "]\n" - loc = - case getCallStack ?callStack of - (_, srcLoc) : _ -> formatSrcLoc srcLoc - _ -> "" - -logToExpr :: (HasCallStack, ToExpr a) => a -> ImpTestM era () -logToExpr e = logEntry (showExpr e) - -withImpState :: - forall era. - ShelleyEraImp era => - SpecWith (ImpTestState era) -> - Spec -withImpState = - beforeAll $ - execStateT addRootTxOut $ - ImpTestState - { impNES = initImpNES - , impRootTxIn = rootTxIn - , impKeyPairs = mempty - , impByronKeyPairs = mempty - , impNativeScripts = mempty - , impLastTick = 0 - , impGlobals = testGlobals - , impLog = mempty - , impGen = qcGen - , impEvents = mempty - } - where - rootCoin = Coin 1_000_000_000 - rootTxIn = TxIn (mkTxId 0) minBound - (rootKeyPair, qcGen) = Random.uniform (mkQCGen 2024) - addRootTxOut = do - rootKeyHash <- addKeyPair rootKeyPair - let rootAddr = Addr Testnet (KeyHashObj rootKeyHash) StakeRefNull - rootTxOut = mkBasicTxOut rootAddr $ inject rootCoin - impNESL . nesEsL . esLStateL . lsUTxOStateL . utxosUtxoL - %= (<> UTxO (Map.singleton rootTxIn rootTxOut)) - --- | Creates a fresh @SafeHash@ -freshSafeHash :: Era era => ImpTestM era (SafeHash (EraCrypto era) a) -freshSafeHash = arbitrary - -freshKeyHashVRF :: - Era era => - ImpTestM era (Hash (HASH (EraCrypto era)) (VerKeyVRF (EraCrypto era))) -freshKeyHashVRF = arbitrary - --- | Adds a key pair to the keyhash lookup map -addKeyPair :: - (Era era, MonadState (ImpTestState era) m) => - KeyPair r (EraCrypto era) -> - m (KeyHash r (EraCrypto era)) -addKeyPair keyPair@(KeyPair vk _) = do - ImpTestState {impKeyPairs} <- get - let keyHash = hashKey vk - modify $ \st -> - st - { impKeyPairs = - Map.insert - (coerceKeyRole keyHash) - (coerce keyPair) - impKeyPairs - } - pure keyHash - --- | Looks up the `KeyPair` corresponding to the `KeyHash`. The `KeyHash` must be --- created with `freshKeyHash` for this to work. -lookupKeyPair :: - HasCallStack => KeyHash r (EraCrypto era) -> ImpTestM era (KeyPair r (EraCrypto era)) -lookupKeyPair keyHash = do - keyPairs <- gets impKeyPairs - case Map.lookup keyHash keyPairs of - Just keyPair -> pure keyPair - Nothing -> - error $ - "Could not find a keypair corresponding to: " - ++ show keyHash - ++ "\nAlways use `freshKeyHash` to create key hashes." - --- | Generates a fresh `KeyHash` and stores the corresponding `KeyPair` in the --- ImpTestState. If you also need the `KeyPair` consider using `freshKeyPair` for --- generation or `lookupKeyPair` to look up the `KeyPair` corresponding to the `KeyHash` -freshKeyHash :: Era era => ImpTestM era (KeyHash r (EraCrypto era)) -freshKeyHash = fst <$> freshKeyPair - --- | Generate a random KeyPair and add it to the known keys in the Imp state -freshKeyPair :: - (Era era, MonadState (ImpTestState era) m, MonadGen m) => - m (KeyHash r (EraCrypto era), KeyPair r (EraCrypto era)) -freshKeyPair = do - keyPair <- arbitrary - keyHash <- addKeyPair keyPair - pure (keyHash, keyPair) - -freshKeyAddr :: Era era => ImpTestM era (KeyHash r (EraCrypto era), Addr (EraCrypto era)) -freshKeyAddr = do - keyHash <- freshKeyHash - pure (coerceKeyRole keyHash, Addr Testnet (KeyHashObj keyHash) StakeRefNull) - --- | Looks up the keypair corresponding to the `BootstrapAddress`. The `BootstrapAddress` --- must be created with `freshBootstrapAddess` for this to work. -lookupByronKeyPair :: HasCallStack => BootstrapAddress (EraCrypto era) -> ImpTestM era ByronKeyPair -lookupByronKeyPair bootAddr = do - keyPairs <- gets impByronKeyPairs - case Map.lookup bootAddr keyPairs of - Just keyPair -> pure keyPair - Nothing -> - error $ - "Could not find a keypair corresponding to: " - ++ show bootAddr - ++ "\nAlways use `freshByronKeyHash` to create key hashes." - --- | Generates a fresh `KeyHash` and stores the corresponding `ByronKeyPair` in the --- ImpTestState. If you also need the `ByronKeyPair` consider using `freshByronKeyPair` for --- generation or `lookupByronKeyPair` to look up the `ByronKeyPair` corresponding to the `KeyHash` -freshByronKeyHash :: Era era => ImpTestM era (KeyHash r (EraCrypto era)) -freshByronKeyHash = coerceKeyRole . bootstrapKeyHash <$> freshBootstapAddress - -freshBootstapAddress :: ImpTestM era (BootstrapAddress (EraCrypto era)) -freshBootstapAddress = do - ImpTestState {impByronKeyPairs} <- get - keyPair@(ByronKeyPair verificationKey _) <- arbitrary - payload <- - oneof - [ pure Nothing - , Just . Byron.HDAddressPayload <$> (uniformByteStringM =<< choose (0, 63)) - ] - let asd = Byron.VerKeyASD verificationKey - attrs = Byron.AddrAttributes payload (Byron.NetworkTestnet 0) - bootAddr = BootstrapAddress $ Byron.makeAddress asd attrs - modify $ \st -> - st {impByronKeyPairs = Map.insert bootAddr keyPair impByronKeyPairs} - pure bootAddr - -sendCoinTo :: - (ShelleyEraImp era, HasCallStack) => - Addr (EraCrypto era) -> - Coin -> - ImpTestM era (TxIn (EraCrypto era)) -sendCoinTo addr = sendValueTo addr . inject - -sendValueTo :: - (ShelleyEraImp era, HasCallStack) => - Addr (EraCrypto era) -> - Value era -> - ImpTestM era (TxIn (EraCrypto era)) -sendValueTo addr amount = do - tx <- - submitTxAnn - ("Giving " <> show amount <> " to " <> show addr) - $ mkBasicTx mkBasicTxBody - & bodyTxL . outputsTxBodyL .~ SSeq.singleton (mkBasicTxOut addr amount) - pure $ txInAt (0 :: Int) tx - --- | Modify the current new epoch state with a function -modifyNES :: (NewEpochState era -> NewEpochState era) -> ImpTestM era () -modifyNES = (impNESL %=) - --- | Get a value from the current new epoch state using the lens -getsNES :: SimpleGetter (NewEpochState era) a -> ImpTestM era a -getsNES l = gets . view $ impNESL . l - -getUTxO :: ImpTestM era (UTxO era) -getUTxO = getsNES $ nesEsL . esLStateL . lsUTxOStateL . utxosUtxoL - -submitTxAnn :: - (HasCallStack, ShelleyEraImp era) => - String -> - Tx era -> - ImpTestM era (Tx era) -submitTxAnn msg tx = impAnn msg (trySubmitTx tx >>= expectRightDeepExpr) - -submitTxAnn_ :: - (HasCallStack, ShelleyEraImp era) => String -> Tx era -> ImpTestM era () -submitTxAnn_ msg = void . submitTxAnn msg - -registerRewardAccount :: - forall era. - ( HasCallStack - , ShelleyEraImp era - ) => - ImpTestM era (RewardAccount (EraCrypto era)) -registerRewardAccount = do - khDelegator <- freshKeyHash - kpDelegator <- lookupKeyPair khDelegator - kpSpending <- lookupKeyPair =<< freshKeyHash - let stakingCredential = KeyHashObj khDelegator - submitTxAnn_ ("Register Reward Account: " <> T.unpack (credToText stakingCredential)) $ - mkBasicTx mkBasicTxBody - & bodyTxL . outputsTxBodyL - .~ SSeq.fromList - [ mkBasicTxOut - (mkAddr (kpSpending, kpDelegator)) - (inject $ Coin 10_000_000) - ] - & bodyTxL . certsTxBodyL - .~ SSeq.fromList [RegTxCert @era stakingCredential] - networkId <- use (to impGlobals . to networkId) - pure $ RewardAccount networkId stakingCredential - -lookupReward :: HasCallStack => Credential 'Staking (EraCrypto era) -> ImpTestM era Coin -lookupReward stakingCredential = do - umap <- getsNES (nesEsL . epochStateUMapL) - case UMap.lookup stakingCredential (RewDepUView umap) of - Nothing -> - error $ - "Staking Credential is not found in the state: " - <> show stakingCredential - <> "\nMake sure you have the reward account registered with `registerRewardAccount` " - <> "or by some other means." - Just rd -> pure $ fromCompact (rdReward rd) - -registerPool :: ShelleyEraImp era => ImpTestM era (KeyHash 'StakePool (EraCrypto era)) -registerPool = do - khPool <- freshKeyHash - rewardAccount <- registerRewardAccount - vrfHash <- freshKeyHashVRF - let - poolParams = - PoolParams - { ppVrf = vrfHash - , ppRewardAccount = rewardAccount - , ppRelays = mempty - , ppPledge = zero - , ppOwners = mempty - , ppMetadata = SNothing - , ppMargin = def - , ppId = khPool - , ppCost = zero - } - submitTxAnn_ "Registering a new stake pool" $ - mkBasicTx mkBasicTxBody - & bodyTxL . certsTxBodyL .~ SSeq.singleton (RegPoolTxCert poolParams) - pure khPool - --- | Compose given function with the configured fixup -withCustomFixup :: - ((Tx era -> ImpTestM era (Tx era)) -> Tx era -> ImpTestM era (Tx era)) -> - ImpTestM era a -> - ImpTestM era a -withCustomFixup f = local $ iteFixupL %~ f - --- | Replace all fixup with the given function -withFixup :: - (Tx era -> ImpTestM era (Tx era)) -> - ImpTestM era a -> - ImpTestM era a -withFixup f = withCustomFixup (const f) - --- | Performs the action without running the fix-up function on any transactions -withNoFixup :: ImpTestM era a -> ImpTestM era a -withNoFixup = withFixup pure - --- | Apply given fixup function before the configured fixup -withPreFixup :: - (Tx era -> ImpTestM era (Tx era)) -> - ImpTestM era a -> - ImpTestM era a -withPreFixup f = withCustomFixup (f >=>) - --- | Apply given fixup function after the configured fixup -withPostFixup :: - (Tx era -> ImpTestM era (Tx era)) -> - ImpTestM era a -> - ImpTestM era a -withPostFixup f = withCustomFixup (>=> f) - -expectRegisteredRewardAddress :: RewardAccount (EraCrypto era) -> ImpTestM era () -expectRegisteredRewardAddress (RewardAccount _ cred) = do - umap <- getsNES $ nesEsL . esLStateL . lsCertStateL . certDStateL . dsUnifiedL - Map.member cred (rdPairMap umap) `shouldBe` True - -expectNotRegisteredRewardAddress :: RewardAccount (EraCrypto era) -> ImpTestM era () -expectNotRegisteredRewardAddress (RewardAccount _ cred) = do - umap <- getsNES $ nesEsL . esLStateL . lsCertStateL . certDStateL . dsUnifiedL - Map.member cred (rdPairMap umap) `shouldBe` False - -expectTreasury :: HasCallStack => Coin -> ImpTestM era () -expectTreasury c = - impAnn "Checking treasury amount" $ do - treasuryAmt <- getsNES $ nesEsL . esAccountStateL . asTreasuryL - c `shouldBe` treasuryAmt - -impGetNativeScript :: ScriptHash (EraCrypto era) -> ImpTestM era (Maybe (NativeScript era)) -impGetNativeScript sh = Map.lookup sh <$> gets impNativeScripts - -impLookupUTxO :: ShelleyEraImp era => TxIn (EraCrypto era) -> ImpTestM era (TxOut era) -impLookupUTxO txIn = impAnn "Looking up TxOut" $ do - utxo <- getUTxO - case txinLookup txIn utxo of - Just txOut -> pure txOut - Nothing -> error $ "Failed to get TxOut for " <> show txIn diff --git a/eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/TreeDiff.hs b/eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/TreeDiff.hs deleted file mode 100644 index 1c40c9c9228..00000000000 --- a/eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/TreeDiff.hs +++ /dev/null @@ -1,264 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MonoLocalBinds #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Shelley.TreeDiff ( - module Test.Cardano.Ledger.TreeDiff, -) where - -import Cardano.Ledger.AuxiliaryData -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.CertState (Obligations) -import Cardano.Ledger.Core -import Cardano.Ledger.Shelley.AdaPots (AdaPots) -import Cardano.Ledger.Shelley.Governance -import Cardano.Ledger.Shelley.LedgerState -import Cardano.Ledger.Shelley.PParams -import Cardano.Ledger.Shelley.PoolRank -import Cardano.Ledger.Shelley.Rules -import Cardano.Ledger.Shelley.Scripts -import Cardano.Ledger.Shelley.Tx -import Cardano.Ledger.Shelley.TxAuxData -import Cardano.Ledger.Shelley.TxBody -import Cardano.Ledger.Shelley.TxCert -import Cardano.Ledger.Shelley.TxOut -import Cardano.Ledger.Shelley.TxWits -import Test.Cardano.Ledger.TreeDiff - --- PParams -instance ToExpr (PParamsUpdate era) => ToExpr (ProposedPPUpdates era) - -instance ToExpr (ShelleyPParams StrictMaybe era) - -instance ToExpr (ShelleyPParams Identity era) - -instance ToExpr (PParamsUpdate era) => ToExpr (Update era) - --- Scripts -instance ToExpr (MultiSigRaw era) - -instance ToExpr (MultiSig era) - --- TxAuxData -instance ToExpr Metadatum - -instance ToExpr (ShelleyTxAuxDataRaw era) - -instance ToExpr (ShelleyTxAuxData era) - --- Governance -instance - ( ToExpr (PParamsUpdate era) - , ToExpr (PParams era) - ) => - ToExpr (ShelleyGovState era) - --- TxCert -instance ToExpr (GenesisDelegCert c) -instance ToExpr MIRPot -instance ToExpr (MIRTarget c) -instance ToExpr (MIRCert c) -instance ToExpr (ShelleyTxCert era) -instance ToExpr (ShelleyDelegCert c) - --- TxWits -instance (Era era, ToExpr (Script era)) => ToExpr (ShelleyTxWits era) - -instance (Era era, ToExpr (Script era)) => ToExpr (ShelleyTxWitsRaw era) - --- Rules/Ppup -instance ToExpr VotingPeriod - -instance ToExpr (ShelleyPpupPredFailure era) - --- TxOut -instance (EraTxOut era, ToExpr (Value era)) => ToExpr (ShelleyTxOut era) where - toExpr (ShelleyTxOut x y) = App "ShelleyTxOut" [toExpr x, toExpr y] - --- TxBody -instance - ( ToExpr (TxOut era) - , ToExpr (TxCert era) - , ToExpr (Update era) - ) => - ToExpr (ShelleyTxBodyRaw era) - -instance - ( ToExpr (TxOut era) - , ToExpr (TxCert era) - , ToExpr (Update era) - ) => - ToExpr (ShelleyTxBody era) - --- PoolRank -instance ToExpr Likelihood - -instance ToExpr LogWeight - -instance ToExpr (NonMyopic c) - --- Tx -instance - ( ToExpr (TxAuxData era) - , ToExpr (TxBody era) - , ToExpr (TxWits era) - ) => - ToExpr (ShelleyTxRaw era) - -instance - ( ToExpr (TxAuxData era) - , ToExpr (TxBody era) - , ToExpr (TxWits era) - ) => - ToExpr (ShelleyTx era) - --- RewardUpdate - --- | You really don't want to see what is inside this. -instance ToExpr (PulsingRewUpdate c) where - toExpr _ = App "PulsingRewUpdate..." [] - --- LedgerState/Types -instance ToExpr AccountState - -instance - ( ToExpr (TxOut era) - , ToExpr (PParams era) - , ToExpr (StashedAVVMAddresses era) - , ToExpr (GovState era) - ) => - ToExpr (NewEpochState era) - -instance - ( ToExpr (TxOut era) - , ToExpr (PParams era) - , ToExpr (GovState era) - ) => - ToExpr (EpochState era) - -instance - ( ToExpr (TxOut era) - , ToExpr (GovState era) - ) => - ToExpr (LedgerState era) - -instance - ( ToExpr (TxOut era) - , ToExpr (GovState era) - ) => - ToExpr (UTxOState era) - -instance ToExpr (IncrementalStake c) - --- Rules/Utxo -instance - ( ToExpr (EraRuleFailure "PPUP" era) - , ToExpr (Value era) - , ToExpr (TxOut era) - ) => - ToExpr (ShelleyUtxoPredFailure era) - --- Rules/Pool -instance ToExpr (ShelleyPoolPredFailure era) - --- Rules/Deleg -instance ToExpr (ShelleyDelegPredFailure era) - --- Rules/Utxow -instance - ( Era era - , ToExpr (PredicateFailure (EraRule "UTXO" era)) - , ToExpr (AuxiliaryDataHash (EraCrypto era)) - ) => - ToExpr (ShelleyUtxowPredFailure era) - --- Rules/Delpl -instance - ( ToExpr (PredicateFailure (EraRule "DELEG" era)) - , ToExpr (PredicateFailure (EraRule "POOL" era)) - ) => - ToExpr (ShelleyDelplPredFailure era) - --- Rules/Delegs -instance - ToExpr (PredicateFailure (EraRule "DELPL" era)) => - ToExpr (ShelleyDelegsPredFailure era) - --- Rules/Ledger -instance - ( ToExpr (PredicateFailure (EraRule "UTXOW" era)) - , ToExpr (PredicateFailure (EraRule "DELEGS" era)) - ) => - ToExpr (ShelleyLedgerPredFailure era) - -instance ToExpr Obligations - -instance ToExpr AdaPots - --- Events -instance - ( ToExpr (Event (EraRule "UTXOW" era)) - , ToExpr (Event (EraRule "DELEGS" era)) - ) => - ToExpr (ShelleyLedgerEvent era) - -instance - ToExpr (Event (EraRule "UTXO" era)) => - ToExpr (ShelleyUtxowEvent era) - -instance - ( ToExpr (Event (EraRule "PPUP" era)) - , ToExpr (TxOut era) - ) => - ToExpr (UtxoEvent era) - -instance ToExpr (PpupEvent era) - -instance ToExpr (Event (EraRule "DELPL" era)) => ToExpr (ShelleyDelegsEvent era) - -instance - ( ToExpr (Event (EraRule "DELEG" era)) - , ToExpr (Event (EraRule "POOL" era)) - ) => - ToExpr (ShelleyDelplEvent era) - -instance ToExpr (ShelleyDelegEvent era) - -instance ToExpr (PoolEvent era) - -instance - ( ToExpr (Event (EraRule "NEWEPOCH" era)) - , ToExpr (Event (EraRule "RUPD" era)) - ) => - ToExpr (ShelleyTickEvent era) - -instance ToExpr RewardType - -instance ToExpr (Reward c) - -instance - ( ToExpr (Event (EraRule "EPOCH" era)) - , ToExpr (Event (EraRule "MIR" era)) - , ToExpr (Event (EraRule "RUPD" era)) - ) => - ToExpr (ShelleyNewEpochEvent era) - -instance - ( ToExpr (Event (EraRule "POOLREAP" era)) - , ToExpr (Event (EraRule "SNAP" era)) - , ToExpr (Event (EraRule "UPEC" era)) - ) => - ToExpr (ShelleyEpochEvent era) - -instance ToExpr (ShelleyPoolreapEvent era) - -instance ToExpr (SnapEvent era) - -instance ToExpr (ShelleyMirEvent era) - -instance ToExpr (RupdEvent era) - -instance ToExpr (PParamsHKD Identity era) => ToExpr (UtxoEnv era) diff --git a/eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/UnitTests/IncrementalStakeTest.hs b/eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/UnitTests/IncrementalStakeTest.hs deleted file mode 100644 index 1177a96b01b..00000000000 --- a/eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/UnitTests/IncrementalStakeTest.hs +++ /dev/null @@ -1,138 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Shelley.UnitTests.IncrementalStakeTest (spec) where - -import Cardano.Ledger.Address (Addr (..)) -import Cardano.Ledger.BaseTypes (Network (..)) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Compactible (fromCompact) -import Cardano.Ledger.Core (Era (..), EraTxOut, emptyPParams, mkCoinTxOut) -import Cardano.Ledger.Credential (Credential, StakeReference (..)) -import Cardano.Ledger.EpochBoundary (SnapShot (..), Stake (..)) -import Cardano.Ledger.Keys (KeyHash, KeyRole (..)) -import Cardano.Ledger.PoolParams (PoolParams (..)) -import Cardano.Ledger.Shelley.LedgerState ( - IncrementalStake (..), - dsUnifiedL, - incrementalStakeDistr, - psStakePoolParamsL, - updateStakeDistribution, - ) -import Cardano.Ledger.TxIn (TxIn) -import Cardano.Ledger.UMap (RDPair (..), rdRewardCoin) -import qualified Cardano.Ledger.UMap as UM -import Cardano.Ledger.UTxO (UTxO (..)) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.MonoTuple (TupleN) -import qualified Data.VMap as VMap -import Lens.Micro -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Core.Arbitrary () - -ppIdL :: Lens' (PoolParams c) (KeyHash 'StakePool c) -ppIdL = lens ppId (\x y -> x {ppId = y}) - -address :: Credential 'Payment c -> Maybe (Credential 'Staking c) -> Addr c -address pc Nothing = Addr Testnet pc StakeRefNull -address pc (Just sc) = Addr Testnet pc (StakeRefBase sc) - -arbitraryLens :: Arbitrary a => Lens' a b -> b -> Gen a -arbitraryLens l b = do a <- arbitrary; pure (a & l .~ b) - --- =========================================== - -stakeDistrIncludesRewards :: forall era. EraTxOut era => Gen Property -stakeDistrIncludesRewards = do - (tom, john, ann, ron, mary) <- arbitrary @(TupleN 5 (Credential 'Staking (EraCrypto era))) - (tomPay, johnPay, annPay, ronPay) <- arbitrary @(TupleN 4 (Credential 'Payment (EraCrypto era))) - - (pool1, pool2) <- arbitrary @(TupleN 2 (KeyHash 'StakePool (EraCrypto era))) - pool1Params <- arbitraryLens ppIdL pool1 - pool2Params <- arbitraryLens ppIdL pool2 - - (tomRD, johnRD, annRD, ronRD, maryRD) <- arbitrary @(TupleN 5 RDPair) - - let tomAddr = address tomPay Nothing -- Nothing means tomAddr does not have a StakeReference - johnAddr = address johnPay (Just john) - annAddr = address annPay (Just ann) - ronAddr = address ronPay (Just ron) - -- maryAddr is omitted on purpose. Mary will not have a UTxO entry - - rewards :: Map (Credential 'Staking (EraCrypto era)) RDPair - rewards = - Map.fromList - [ (tom, tomRD) - , (john, johnRD) - , (ann, annRD) - , (ron, ronRD) - , (mary, maryRD) - ] - - delegations :: Map (Credential 'Staking (EraCrypto era)) (KeyHash 'StakePool (EraCrypto era)) - delegations = - Map.fromList - [ (tom, pool1) -- since every one is delegated - , (ann, pool2) -- no one's stake should be left out - , (ron, pool1) - , (john, pool2) - , (mary, pool2) - ] - - -- Again mary is not included, because she will not have an UTxO entry, but tom will have 2 - (tomCoin1, tomCoin2, johnCoin, annCoin, ronCoin) <- arbitrary @(TupleN 5 Coin) - - (tomTxIn1, tomTxIn2, johnTxIn, annTxIn, ronTxIn) <- arbitrary @(TupleN 5 (TxIn (EraCrypto era))) - - let - -- Each wallet (except mary) has one or more UTxO entries - -- Since tom uses a StakeRefNull those entries will not be distributed - utxo1 = - UTxO @era - ( Map.fromList - [ (tomTxIn1, mkCoinTxOut tomAddr tomCoin1) -- Not distrubuted, see tomAddr - , (tomTxIn2, mkCoinTxOut tomAddr tomCoin2) -- Not distributed, see tomAddr - , (annTxIn, mkCoinTxOut annAddr annCoin) - , (ronTxIn, mkCoinTxOut ronAddr ronCoin) - , (johnTxIn, mkCoinTxOut johnAddr johnCoin) - -- Note Mary does not have a UTxO entry, but her rewards are still counted - ] - ) - - pparams = emptyPParams @era - - incrementalStake = updateStakeDistribution pparams (IStake mempty mempty) mempty utxo1 - umap = UM.unify rewards Map.empty delegations Map.empty - poolparamMap = Map.fromList [(pool1, pool1Params), (pool2, pool2Params)] - -- We can either use an emptyDstate with just the umap, like this - -- dState = (emptyDState {dsUnified = umap}) :: DState era - -- Or an arbitrary one, where we overwrite the umap, with the one we need. - dState <- arbitraryLens dsUnifiedL umap - pState <- arbitraryLens psStakePoolParamsL poolparamMap - let computedStakeDistr = Map.map fromCompact (VMap.toMap (unStake (ssStake snap))) - where - snap = - incrementalStakeDistr -- This computes the actual Incremental Stake - pparams - incrementalStake - dState - pState - - expectedStakeDistr :: Map (Credential 'Staking (EraCrypto era)) Coin - expectedStakeDistr = - Map.fromList -- Coin Part is (rdRewardCoin <> utxoCoin) - [ (tom, rdRewardCoin tomRD <> Coin 0) -- tom uxtxoCoin is zero because his address has StakeRefNull - , (ann, rdRewardCoin annRD <> annCoin) - , (ron, rdRewardCoin ronRD <> ronCoin) - , (john, rdRewardCoin johnRD <> johnCoin) - , (mary, rdRewardCoin maryRD <> Coin 0) -- mary uxtxoCoin is zero because she has no UtxO entry - ] - - pure $ (computedStakeDistr === expectedStakeDistr) - -spec :: forall era. EraTxOut era => Spec -spec = prop "StakeDistrIncludesRewards" (stakeDistrIncludesRewards @era) diff --git a/eras/shelley/test-suite/.ghcid b/eras/shelley/test-suite/.ghcid deleted file mode 100644 index 942a46dff74..00000000000 --- a/eras/shelley/test-suite/.ghcid +++ /dev/null @@ -1 +0,0 @@ ---command="cabal repl --repl-options='-isrc -fwarn-unused-binds -fwarn-unused-imports -fno-code -fobject-code -g2 -fno-break-on-exception -fno-break-on-error -ferror-spans -j -Wno-unused-packages'" --clear --no-height-limit --reverse-errors --reload=../../../ --outputfile=/tmp/cardano-ledger-shelley-test-ghcid.txt \ No newline at end of file diff --git a/eras/shelley/test-suite/CHANGELOG.md b/eras/shelley/test-suite/CHANGELOG.md deleted file mode 100644 index 48164bace43..00000000000 --- a/eras/shelley/test-suite/CHANGELOG.md +++ /dev/null @@ -1,45 +0,0 @@ -# Version history for `cardano-ledger-shelley-test` - -## 1.4.0.1 - -* - -## 1.4.0.0 - -* Replaced `small-steps-test` dependency with `small-steps:testlib` -* Change `testSTS` to use `NonEmpty (PredicateFailure _)` instead of `[PredicateFailure _]` -* Remove `testBootstrapSpending`, `testBootstrapNotSpending`, `bootstrapHashTest` and `genSignature` -* Moved `genBootstrapAddress` to `cardano-ledger-core:testlib:Test.Cardano.Ledger.Core.KeyPairs` - -## 1.3.0.1 - -* - -## 1.3.0.0 - -* Move `CDDLUtils` functionality into `cardano-ledger-binary` -* Move `cddl-files` to `cardano-ledger-shelley` - -## 1.2.0.6 - -* - -## 1.2.0.5 - -* - -## 1.2.0.4 - -* - -## 1.2.0.3 - -* - -## 1.2.0.2 - -* GHC-9.6 compatibility - -## 1.2.0.1 - -* Changed bounds on cardano-ledger-shelley-test diff --git a/eras/shelley/test-suite/Setup.hs b/eras/shelley/test-suite/Setup.hs deleted file mode 100644 index e8ef27dbba9..00000000000 --- a/eras/shelley/test-suite/Setup.hs +++ /dev/null @@ -1,3 +0,0 @@ -import Distribution.Simple - -main = defaultMain diff --git a/eras/shelley/test-suite/bench/BenchUTxOAggregate.hs b/eras/shelley/test-suite/bench/BenchUTxOAggregate.hs deleted file mode 100644 index a128f052a07..00000000000 --- a/eras/shelley/test-suite/bench/BenchUTxOAggregate.hs +++ /dev/null @@ -1,141 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE ScopedTypeVariables #-} - -module BenchUTxOAggregate where - -import Cardano.Ledger.Address (Addr (..), compactAddr) -import Cardano.Ledger.BaseTypes (mkTxIxPartial) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Compactible (toCompact) -import Cardano.Ledger.Core (Era (..)) -import Cardano.Ledger.Credential ( - Credential (..), - Ptr (..), - StakeReference (..), - ) -import Cardano.Ledger.Crypto (StandardCrypto) -import Cardano.Ledger.DRep (DRep) -import Cardano.Ledger.Keys (GenDelegs (..), KeyHash (..), KeyRole (..)) -import Cardano.Ledger.PoolParams (PoolParams (..)) -import Cardano.Ledger.SafeHash (unsafeMakeSafeHash) -import Cardano.Ledger.Shelley (ShelleyEra) -import Cardano.Ledger.Shelley.LedgerState ( - DState (..), - InstantaneousRewards (..), - PState (..), - ) -import Cardano.Ledger.Shelley.TxOut (ShelleyTxOut (..)) -import Cardano.Ledger.TxIn (TxId (..), TxIn (..)) -import qualified Cardano.Ledger.UMap as UM -import Cardano.Ledger.UTxO ( - UTxO (..), - ) -import qualified Cardano.Ledger.Val as Val -import Control.Iterate.SetAlgebra (compile, compute, run) -import Control.Monad (replicateM) -import Control.SetAlgebra (dom, (▷), (◁)) -import Data.Map (Map) -import qualified Data.Map.Strict as Map -import Data.Maybe (fromJust) -import qualified Data.Sequence as Seq -import Data.Word (Word16) -import Test.Cardano.Ledger.Binary.Random (mkDummyHash) -import Test.Cardano.Ledger.Core.Arbitrary () -import Test.Cardano.Ledger.Shelley.Examples.Cast (alicePoolParams) -import Test.Cardano.Ledger.Shelley.Serialisation.Generators () -import Test.QuickCheck - -genTestCase :: - Int -> -- The size of the utxo - Int -> -- the number of addresses - Gen - ( DState (ShelleyEra StandardCrypto) - , PState (ShelleyEra StandardCrypto) - , UTxO (ShelleyEra StandardCrypto) - ) -genTestCase numUTxO numAddr = do - addrs :: [Addr StandardCrypto] <- replicateM numAddr arbitrary - let packedAddrs = Seq.fromList addrs - txOuts <- replicateM numUTxO $ do - i <- choose (0, numAddr - 1) - let addr = Seq.index packedAddrs i - pure $ - TxOutCompact - (compactAddr addr) - (fromJust $ toCompact $ Val.inject (Coin $ fromIntegral i)) - let mktxid i = TxId (unsafeMakeSafeHash (mkDummyHash (i :: Int))) - let mktxin i = TxIn (mktxid i) (mkTxIxPartial (toInteger (fromIntegral i :: Word16))) - let utxo = Map.fromList $ zip (mktxin <$> [1 ..]) txOuts - liveptrs :: [Ptr] - liveptrs = [p | ShelleyTxOut (Addr _ _ (StakeRefPtr p)) _ <- txOuts] - m = length liveptrs `div` 2 - moreptrs :: [Ptr] <- replicateM m arbitrary - creds :: [Credential 'Staking StandardCrypto] <- replicateM (m + m) arbitrary - let ptrs' :: Map Ptr (Credential 'Staking StandardCrypto) - ptrs' = Map.fromList (zip (liveptrs ++ moreptrs) creds) - rewards :: [(Credential 'Staking StandardCrypto, Coin)] <- - replicateM (3 * (numUTxO `div` 4)) arbitrary - let rewards' :: Map (Credential 'Staking StandardCrypto) Coin - rewards' = Map.fromList rewards - - keyhash :: [KeyHash 'StakePool StandardCrypto] <- replicateM 400 arbitrary - let delegs = Map.fromList (zip creds (cycle (take 200 keyhash))) - reps :: [DRep StandardCrypto] <- replicateM (m `div` 10) arbitrary - let dreps = Map.fromList (zip (take (m `div` 5) creds) (cycle reps)) - let pp = alicePoolParams - let poolParams = Map.fromList (zip keyhash (replicate 400 pp)) - let (dstate, pstate) = makeStatePair rewards' ptrs' delegs dreps poolParams - pure (dstate, pstate, UTxO utxo) - -makeStatePair :: - Map (Credential 'Staking (EraCrypto era)) Coin -> - Map Ptr (Credential 'Staking (EraCrypto era)) -> - Map (Credential 'Staking (EraCrypto era)) (KeyHash 'StakePool (EraCrypto era)) -> - Map (Credential 'Staking (EraCrypto era)) (DRep (EraCrypto era)) -> - Map (KeyHash 'StakePool (EraCrypto era)) (PoolParams (EraCrypto era)) -> - (DState era, PState era) -makeStatePair rewards' ptrs' sPools dReps poolParams = - ( DState - (UM.unify (Map.map rdPair rewards') ptrs' sPools dReps) - Map.empty - (GenDelegs Map.empty) - (InstantaneousRewards Map.empty Map.empty mempty mempty) - , PState poolParams Map.empty Map.empty Map.empty - ) - -rdPair :: Coin -> UM.RDPair -rdPair coin = UM.RDPair (UM.compactCoinOrError coin) (UM.CompactCoin 1) - --- ==================================================================================== --- operations to benchmark different algorithms for executing ((dom d ◁ r) ▷ dom rg) - -big :: Int -> Gen Int -big n = choose (1, n) - -pair :: Gen a -> Gen b -> Gen (a, b) -pair g1 g2 = do x <- g1; y <- g2; pure (x, y) - -char :: Gen Char -char = arbitrary - -list :: Int -> Gen a -> Gen [a] -list m g = sequence [g | _x <- [1 .. m]] - -expr :: Int -> IO (Map Int Int, Map Int Char, Map Char Char) -expr n = do d <- domain; r <- rel; rg <- range; pure (d, r, rg) - where - rel :: IO (Map Int Char) - rel = fmap Map.fromList $ generate $ list n (pair (big 1000000) char) - domain :: IO (Map Int Int) - domain = fmap Map.fromList $ generate $ list (div n 7) (pair (big 1000000) (big 10)) - range :: IO (Map Char Char) - range = fmap Map.fromList $ generate $ list (max 10 (div n 2000)) (pair char char) - -test23 :: Map Int Int -> Map Int Char -> Map Char Char -> Bool -test23 domain relation range = compute exp2 == (run (compile exp2)) - where - exp2 = ((dom domain ◁ relation) ▷ dom range) - --- quickCheck test23 diff --git a/eras/shelley/test-suite/bench/BenchValidation.hs b/eras/shelley/test-suite/bench/BenchValidation.hs deleted file mode 100644 index e9bdb06711e..00000000000 --- a/eras/shelley/test-suite/bench/BenchValidation.hs +++ /dev/null @@ -1,212 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# OPTIONS_GHC -Wno-orphans #-} -{-# OPTIONS_GHC -Wno-unused-binds #-} - -module BenchValidation ( - ValidateInput (..), - validateInput, - benchValidate, - benchreValidate, - applyBlock, - sizes, - updateChain, - updateAndTickChain, - genUpdateInputs, -) where - -import Cardano.Ledger.BaseTypes (Globals (..), unBlocksMade) -import Cardano.Ledger.Block (Block (..)) -import Cardano.Ledger.Crypto -import qualified Cardano.Ledger.Shelley.API as API -import Cardano.Ledger.Shelley.Bench.Gen (genBlock, genChainState) -import Cardano.Ledger.Shelley.BlockChain (slotToNonce) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState ( - NewEpochState, - StashedAVVMAddresses, - nesBcur, - ) -import Cardano.Protocol.TPraos.API ( - ChainDepState (..), - ChainTransitionError, - GetLedgerView, - LedgerView (..), - currentLedgerView, - tickChainDepState, - updateChainDepState, - ) -import Cardano.Protocol.TPraos.BHeader (BHeader (..), LastAppliedBlock (..), makeHeaderView) -import Cardano.Protocol.TPraos.Rules.Prtcl (PrtclState (..)) -import Cardano.Protocol.TPraos.Rules.Tickn (TicknState (..)) -import Cardano.Slotting.Slot (withOriginToMaybe) -import Control.DeepSeq (NFData (rnf)) -import Control.Monad.Except () -import qualified Data.Map.Strict as Map -import Data.Proxy -import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes (Mock) -import Test.Cardano.Ledger.Shelley.Constants (defaultConstants) -import Test.Cardano.Ledger.Shelley.Generator.Core (GenEnv) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (EraGen, MinLEDGER_STS) -import Test.Cardano.Ledger.Shelley.Generator.Presets (genEnv) -import Test.Cardano.Ledger.Shelley.Rules.Chain (ChainState (..)) -import Test.Cardano.Ledger.Shelley.Serialisation.Generators () -import Test.Cardano.Ledger.Shelley.Utils (testGlobals) -import qualified Test.Control.State.Transition.Trace.Generator.QuickCheck as QC - -data ValidateInput era = ValidateInput Globals (NewEpochState era) (Block (BHeader (EraCrypto era)) era) - -sizes :: ValidateInput era -> String -sizes (ValidateInput _gs ss _blk) = "blockMap size=" ++ show (Map.size (unBlocksMade (nesBcur ss))) - -instance NFData (ValidateInput era) where - rnf (ValidateInput a b c) = seq a (seq b (seq c ())) - -validateInput :: - ( EraGen era - , Mock (EraCrypto era) - , EraRule "LEDGERS" era ~ API.ShelleyLEDGERS era - , QC.HasTrace (API.ShelleyLEDGERS era) (GenEnv era) - , API.ApplyBlock era - , GetLedgerView era - , MinLEDGER_STS era - ) => - Int -> - IO (ValidateInput era) -validateInput utxoSize = genValidateInput utxoSize - -genValidateInput :: - ( EraGen era - , Mock (EraCrypto era) - , EraRule "LEDGERS" era ~ API.ShelleyLEDGERS era - , QC.HasTrace (API.ShelleyLEDGERS era) (GenEnv era) - , API.ApplyBlock era - , GetLedgerView era - , MinLEDGER_STS era - ) => - Int -> - IO (ValidateInput era) -genValidateInput n = do - let ge = genEnv (Proxy :: Proxy era) defaultConstants - chainstate <- genChainState n ge - block <- genBlock ge chainstate - pure (ValidateInput testGlobals (chainNes chainstate) block) - -benchValidate :: - forall era. - (API.ApplyBlock era, Era era) => - ValidateInput era -> - IO (NewEpochState era) -benchValidate (ValidateInput globals state (Block bh txs)) = - case API.applyBlock @era globals state (UnsafeUnserialisedBlock (makeHeaderView bh) txs) of - Right x -> pure x - Left x -> error (show x) - -applyBlock :: - forall era. - ( EraTxOut era - , API.ApplyBlock era - , NFData (StashedAVVMAddresses era) - , GovState era ~ ShelleyGovState era - ) => - ValidateInput era -> - Int -> - Int -applyBlock (ValidateInput globals state (Block bh txs)) n = - case API.applyBlock @era globals state (UnsafeUnserialisedBlock (makeHeaderView bh) txs) of - Right x -> seq (rnf x) (n + 1) - Left x -> error (show x) - -benchreValidate :: - (API.ApplyBlock era, Era era) => - ValidateInput era -> - NewEpochState era -benchreValidate (ValidateInput globals state (Block bh txs)) = - API.reapplyBlock globals state (UnsafeUnserialisedBlock (makeHeaderView bh) txs) - --- ============================================================== - -data UpdateInputs c - = UpdateInputs - !Globals - !(LedgerView c) - !(BHeader c) - !(ChainDepState c) - -instance Crypto c => Show (UpdateInputs c) where - show (UpdateInputs _globals vl bh st) = - show vl ++ "\n" ++ show bh ++ "\n" ++ show st - -instance NFData (LedgerView era) where - rnf (LedgerView _D _extraEntropy _pool _delegs _ccd) = () - -instance Crypto c => NFData (BHeader c) where - rnf (BHeader _ _) = () - -instance NFData (ChainDepState c) where - rnf (ChainDepState _ _ _) = () - -instance NFData (ChainTransitionError c) where - rnf _ = () - -instance Crypto c => NFData (UpdateInputs c) where - rnf (UpdateInputs g lv bh st) = - seq (rnf g) (seq (rnf lv) (seq (rnf bh) (rnf st))) - -genUpdateInputs :: - forall era. - ( EraGen era - , Mock (EraCrypto era) - , MinLEDGER_STS era - , GetLedgerView era - , EraRule "LEDGERS" era ~ API.ShelleyLEDGERS era - , QC.HasTrace (API.ShelleyLEDGERS era) (GenEnv era) - , API.ApplyBlock era - ) => - Int -> - IO (UpdateInputs (EraCrypto era)) -genUpdateInputs utxoSize = do - let ge = genEnv (Proxy :: Proxy era) defaultConstants - chainstate <- genChainState utxoSize ge - (Block blockheader _) <- genBlock ge chainstate - let ledgerview = currentLedgerView (chainNes chainstate) - let (ChainState _newepochState keys eta0 etaV etaC etaH slot) = chainstate - let prtclState = PrtclState keys eta0 etaV - let ticknState = TicknState etaC etaH - let nonce = case withOriginToMaybe slot of - Just (LastAppliedBlock _blknum slotnum _hash) -> slotToNonce slotnum - Nothing -> error "Empty Slot" - pure - ( UpdateInputs - testGlobals - ledgerview - blockheader - (ChainDepState prtclState ticknState nonce) - ) - -updateChain :: - Mock c => - UpdateInputs c -> - Either (ChainTransitionError c) (ChainDepState c) -updateChain (UpdateInputs gl lv bh st) = updateChainDepState gl lv bh st - -updateAndTickChain :: - Mock c => - UpdateInputs c -> - Either (ChainTransitionError c) (ChainDepState c) -updateAndTickChain (UpdateInputs gl lv bh st) = - updateChainDepState gl lv bh - . tickChainDepState gl lv True - $ st diff --git a/eras/shelley/test-suite/bench/Cardano/Ledger/Shelley/Bench/Gen.hs b/eras/shelley/test-suite/bench/Cardano/Ledger/Shelley/Bench/Gen.hs deleted file mode 100644 index e23baa1b846..00000000000 --- a/eras/shelley/test-suite/bench/Cardano/Ledger/Shelley/Bench/Gen.hs +++ /dev/null @@ -1,126 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} - --- | Benchmarks for Shelley test generators. -module Cardano.Ledger.Shelley.Bench.Gen ( - genTriple, - genBlock, - genChainState, -) -where - -import Cardano.Ledger.Coin -import Cardano.Ledger.Shelley.API ( - ApplyBlock, - Block, - CertState, - DelplEnv, - ShelleyLEDGERS, - ShelleyTx, - ) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState ( - EpochState (..), - NewEpochState (..), - ) -import Cardano.Ledger.UTxO (EraUTxO) -import Cardano.Protocol.TPraos.API (GetLedgerView) -import Cardano.Protocol.TPraos.BHeader (BHeader) -import Control.State.Transition.Extended -import Data.Either (fromRight) -import qualified Data.Map.Strict as Map -import Data.Proxy -import Test.Cardano.Ledger.Shelley.BenchmarkFunctions (ledgerEnv) -import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes (Mock) -import Test.Cardano.Ledger.Shelley.Constants ( - Constants ( - maxGenesisUTxOouts, - maxMinFeeA, - minGenesisUTxOouts - ), - defaultConstants, - ) -import qualified Test.Cardano.Ledger.Shelley.Generator.Block as GenBlock -import Test.Cardano.Ledger.Shelley.Generator.Core (GenEnv (..), ScriptSpace (..)) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (EraGen, MinLEDGER_STS) -import Test.Cardano.Ledger.Shelley.Generator.Presets (genEnv) -import Test.Cardano.Ledger.Shelley.Generator.Trace.Chain (mkGenesisChainState) -import Test.Cardano.Ledger.Shelley.Generator.Trace.TxCert (CERTS) -import Test.Cardano.Ledger.Shelley.Generator.Utxo (genTx) -import Test.Cardano.Ledger.Shelley.Rules.Chain (ChainState (..)) -import Test.Cardano.Ledger.Shelley.Serialisation.Generators () -import qualified Test.Control.State.Transition.Trace.Generator.QuickCheck as QC -import Test.QuickCheck (generate) - --- =============================================================== - --- | Generate a genesis chain state given a UTxO size -genChainState :: - ( EraGen era - , EraGov era - ) => - Int -> - GenEnv era -> - IO (ChainState era) -genChainState n ge = - let cs = - (geConstants ge) - { minGenesisUTxOouts = n - , maxGenesisUTxOouts = n - , -- We are using real crypto types here, which can be larger than - -- those expected by the mock fee calculations. Since this is - -- unimportant for now, we set the A part of the fee to 0 - maxMinFeeA = Coin 0 - } - ge' = GenEnv (geKeySpace ge) (ScriptSpace [] [] Map.empty Map.empty) cs - in fromRight (error "genChainState failed") - <$> ( generate $ - mkGenesisChainState ge' (IRC ()) - ) - --- | Benchmark generating a block given a chain state. -genBlock :: - ( Mock (EraCrypto era) - , EraGen era - , MinLEDGER_STS era - , GetLedgerView era - , EraRule "LEDGERS" era ~ ShelleyLEDGERS era - , QC.HasTrace (ShelleyLEDGERS era) (GenEnv era) - , ApplyBlock era - ) => - GenEnv era -> - ChainState era -> - IO (Block (BHeader (EraCrypto era)) era) -genBlock ge cs = generate $ GenBlock.genBlock ge cs - --- The order one does this is important, since all these things must flow from the same --- GenEnv, so that the addresses ind signatures in the UTxO are known and consistent. --- 1) genEnv from a (Proxy era) --- 2) genChainState from a GenEnv --- 3) get a UTxOState from the ChainState --- 4) get a CertState from the ChainState --- 5) get a Transaction (Tx) from GenEnv and ChainState - -genTriple :: - ( EraGen era - , EraUTxO era - , Mock (EraCrypto era) - , Embed (EraRule "DELPL" era) (CERTS era) - , Environment (EraRule "DELPL" era) ~ DelplEnv era - , State (EraRule "DELPL" era) ~ CertState era - , Signal (EraRule "DELPL" era) ~ TxCert era - , Tx era ~ ShelleyTx era - , EraGov era - , ProtVerAtMost era 4 - , ProtVerAtMost era 6 - ) => - Proxy era -> - Int -> - IO (GenEnv era, ChainState era, GenEnv era -> IO (ShelleyTx era)) -genTriple proxy n = do - let ge = genEnv proxy defaultConstants - cs <- genChainState n ge - let fun genenv = generate $ genTx genenv ledgerEnv (esLState (nesEs (chainNes cs))) - pure (ge, cs, fun) diff --git a/eras/shelley/test-suite/bench/Cardano/Ledger/Shelley/Bench/Rewards.hs b/eras/shelley/test-suite/bench/Cardano/Ledger/Shelley/Bench/Rewards.hs deleted file mode 100644 index a9a52c3e7f8..00000000000 --- a/eras/shelley/test-suite/bench/Cardano/Ledger/Shelley/Bench/Rewards.hs +++ /dev/null @@ -1,215 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE PartialTypeSignatures #-} -{-# LANGUAGE TypeApplications #-} - -module Cardano.Ledger.Shelley.Bench.Rewards ( - createRUpd, - createRUpdWithProv, - genChainInEpoch, -) -where - -import Cardano.Crypto.VRF (hashVerKeyVRF) -import Cardano.Ledger.Address ( - Addr (..), - RewardAccount (..), - ) -import Cardano.Ledger.BaseTypes ( - Globals (activeSlotCoeff, securityParameter), - Network (Testnet), - StrictMaybe (..), - epochInfoPure, - ) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Credential (Credential (..), StakeReference (..)) -import Cardano.Ledger.Keys (KeyHash, KeyRole (Staking)) -import Cardano.Ledger.PoolParams (PoolParams (..)) -import Cardano.Ledger.Shelley.Genesis (ShelleyGenesisStaking (..)) -import qualified Cardano.Ledger.Shelley.LedgerState as LS -import Cardano.Ledger.Shelley.TxOut (ShelleyTxOut (..)) -import Cardano.Ledger.UTxO (UTxO (..)) -import Cardano.Slotting.EpochInfo -import Cardano.Slotting.Slot (EpochNo) -import Control.Monad.Reader (runReader, runReaderT) -import Control.State.Transition.Extended (IRC (..), TRC (..), applySTS) -import Data.Either (fromRight) -import Data.Functor.Identity (runIdentity) -import qualified Data.ListMap as LM -import qualified Data.Map.Strict as Map -import qualified Data.Maybe as Maybe -import Data.Proxy (Proxy (..)) -import qualified Data.Sequence.Strict as StrictSeq -import qualified Data.Set as Set -import Test.Cardano.Ledger.Shelley.BenchmarkFunctions (B, B_Crypto) -import Test.Cardano.Ledger.Shelley.Constants ( - defaultConstants, - maxGenesisUTxOouts, - minGenesisUTxOouts, - ) -import Test.Cardano.Ledger.Shelley.Generator.Block (genBlockWithTxGen) -import Test.Cardano.Ledger.Shelley.Generator.Core ( - AllIssuerKeys (..), - GenEnv (..), - ScriptSpace (..), - VRFKeyPair (..), - geConstants, - geKeySpace, - ksStakePools, - ) -import Test.Cardano.Ledger.Shelley.Generator.Presets (genEnv) -import Test.Cardano.Ledger.Shelley.Generator.Trace.Chain ( - mkGenesisChainState, - registerGenesisStaking, - ) -import Test.Cardano.Ledger.Shelley.Rules.Chain (CHAIN, ChainState, chainNes, totalAda) -import Test.Cardano.Ledger.Shelley.Utils (testGlobals) -import Test.QuickCheck (Gen) - --- | Generate a chain state at a given epoch. Since we are only concerned about --- rewards, this will populate the chain with empty blocks (only issued by the --- original genesis delegates). -genChainInEpoch :: EpochNo -> Gen (ChainState B) -genChainInEpoch epoch = do - genesisChainState <- - fromRight (error "genChainState failed") - <$> mkGenesisChainState @B (GenEnv ks (ScriptSpace [] [] Map.empty Map.empty) cs) (IRC ()) - -- Our genesis chain state contains no registered staking. Since we want to - -- calculate a reward update, we will set some up. - -- What do we want to do here? - -- - We find all the addresses which are present in the initial UTxO, and - -- register them all for staking - -- - We group them into 50 groups (number of stake pools). The first one in - -- each group becomes the pool owner, with pledge set to the value in that - -- address. - let initUtxo = - LS.utxosUtxo - . LS.lsUTxOState - . LS.esLState - . LS.nesEs - $ chainNes genesisChainState - initUtxoAddrs = - Maybe.mapMaybe (\(ShelleyTxOut addr _) -> addrToKeyHash addr) - . Map.elems - . unUTxO - $ initUtxo - stakeMap = - zip stakePools $ - chunk (length initUtxoAddrs `div` length stakePools) initUtxoAddrs - - let chainState = - registerGenesisStaking - (mkGenesisStaking stakeMap) - genesisChainState - -- Now run the empty block generator over the chain state until we hit the - -- desired epoch. - applyUntil - chainState - ( \x -> - if (LS.nesEL $ chainNes x) >= epoch - then Nothing - else Just $ applyBlk x <$> genEmptyBlock x - ) - where - applyUntil :: Monad m => a -> (a -> Maybe (m a)) -> m a - applyUntil x f = case f x of - Nothing -> pure x - Just x' -> x' >>= flip applyUntil f - applyBlk cs' blk = - (either err id) - . flip runReader testGlobals - . applySTS @(CHAIN B) - $ TRC ((), cs', blk) - where - err :: Show a => a -> b - err msg = error $ "Panic! applyBlk failed: " <> (show msg) - ge = genEnv (Proxy @B) defaultConstants - -- Small UTxO set; we just want enough to stake to pools - cs = - (geConstants ge) - { minGenesisUTxOouts = 5000 - , maxGenesisUTxOouts = 5000 - } - ks = geKeySpace ge - genEmptyBlock = genBlockWithTxGen @B (\_ _ _ _ -> pure mempty) ge - mkGenesisStaking stakeMap = - ShelleyGenesisStaking - { sgsPools = - LM.ListMap - [ (aikColdKeyHash, pp) - | (AllIssuerKeys {aikVrf, aikColdKeyHash}, (owner : _)) <- stakeMap - , let pp = - PoolParams - { ppId = aikColdKeyHash - , ppVrf = hashVerKeyVRF $ vrfVerKey aikVrf - , ppPledge = Coin 1 - , ppCost = Coin 1 - , ppMargin = minBound - , ppRewardAccount = RewardAccount Testnet $ KeyHashObj owner - , ppOwners = Set.singleton owner - , ppRelays = StrictSeq.empty - , ppMetadata = SNothing - } - ] - , sgsStake = - LM.ListMap - [ (dlg, aikColdKeyHash) - | (AllIssuerKeys {aikColdKeyHash}, dlgs) <- stakeMap - , dlg <- dlgs - ] - } - stakePools = ksStakePools ks - chunk :: Int -> [a] -> [[a]] - chunk n _ | n <= 0 = [] - chunk n xs = go [] xs - where - go !acc [] = acc - go !acc xs' = let (a, b) = splitAt n xs' in go (a : acc) b - - addrToKeyHash :: Addr c -> Maybe (KeyHash 'Staking c) - addrToKeyHash (Addr _ _ (StakeRefBase (KeyHashObj kh))) = Just kh - addrToKeyHash _ = Nothing - --- | Benchmark creating a reward update. -createRUpd :: - Globals -> - ChainState B -> - LS.RewardUpdate B_Crypto -createRUpd globals cs = - runIdentity $ - runReaderT - (LS.createRUpd epochSize bm es total asc k) - globals - where - nes = chainNes cs - bm = LS.nesBprev nes - es = LS.nesEs nes - total = totalAda cs - epochSize = - runIdentity $ - epochInfoSize (epochInfoPure globals) (LS.nesEL nes) - asc = activeSlotCoeff globals - k = securityParameter testGlobals - --- | Benchmark creating a reward update. -createRUpdWithProv :: - Globals -> - ChainState B -> - (LS.RewardUpdate B_Crypto) -createRUpdWithProv globals cs = - runIdentity $ - runReaderT - (LS.createRUpd epochSize bm es total asc k) - globals - where - nes = chainNes cs - bm = LS.nesBprev nes - es = LS.nesEs nes - total = totalAda cs - epochSize = - runIdentity $ - epochInfoSize (epochInfoPure globals) (LS.nesEL nes) - asc = activeSlotCoeff globals - k = securityParameter testGlobals diff --git a/eras/shelley/test-suite/bench/Main.hs b/eras/shelley/test-suite/bench/Main.hs deleted file mode 100644 index 35ab5136d18..00000000000 --- a/eras/shelley/test-suite/bench/Main.hs +++ /dev/null @@ -1,512 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Main where - -import BenchUTxOAggregate (expr, genTestCase) -import BenchValidation ( - applyBlock, - benchValidate, - benchreValidate, - genUpdateInputs, - updateAndTickChain, - updateChain, - validateInput, - ) -import Cardano.Crypto.DSIGN -import Cardano.Crypto.Hash -import Cardano.Crypto.KES -import Cardano.Crypto.VRF.Praos -import Cardano.Ledger.Coin (Coin (..)) -import qualified Cardano.Ledger.Crypto as CryptoClass -import qualified Cardano.Ledger.EpochBoundary as EB -import Cardano.Ledger.Shelley (ShelleyEra) -import Cardano.Ledger.Shelley.Bench.Gen ( - genBlock, - genTriple, - ) -import Cardano.Ledger.Shelley.Bench.Rewards (createRUpd, createRUpdWithProv, genChainInEpoch) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState ( - CertState (..), - DState (..), - LedgerState (..), - PState (..), - UTxOState (..), - incrementalStakeDistr, - updateStakeDistribution, - ) -import Cardano.Ledger.Shelley.PoolRank (likelihood) -import Cardano.Ledger.UTxO (UTxO) -import Cardano.Protocol.TPraos.API (PraosCrypto) -import Cardano.Slotting.Slot (EpochSize (..)) -import Control.DeepSeq (NFData) -import Control.Iterate.SetAlgebra (compile, compute, run) -import Control.SetAlgebra (dom, keysEqual, (▷), (◁)) -import Criterion.Main ( - Benchmark, - bench, - bgroup, - defaultMain, - env, - nf, - nfIO, - whnf, - whnfIO, - ) -import Data.Map (Map) -import qualified Data.Map.Strict as Map -import Data.Proxy (Proxy (..)) -import Data.Word (Word64) -import Test.Cardano.Ledger.Shelley.BenchmarkFunctions ( - initUTxO, - ledgerDeRegisterStakeKeys, - ledgerDelegateManyKeysOnePool, - ledgerReRegisterStakePools, - ledgerRegisterStakeKeys, - ledgerRegisterStakePools, - ledgerRetireStakePools, - ledgerRewardWithdrawals, - ledgerSpendOneGivenUTxO, - ledgerSpendOneUTxO, - ledgerStateWithNkeysMpools, - ledgerStateWithNregisteredKeys, - ledgerStateWithNregisteredPools, - ) - -import Cardano.Ledger.Crypto (StandardCrypto) -import Test.Cardano.Ledger.Shelley.Rules.IncrementalStake (stakeDistr) -import Test.Cardano.Ledger.Shelley.Utils (testGlobals) -import Test.QuickCheck (arbitrary) -import Test.QuickCheck.Gen as QC - --- Generator for coin. This is required, but its ouput is completely discarded. --- What is going on here? --- --- In order to support running tests in multiple eras (which may have different --- values) we allow providing a value generator from the top level. However, --- this value generator is currently only used to generate the non-coin part of --- the value, since we pass additional arguments to the coin generator. --- --- However, in the Shelley era, the value _is_ Coin, so anything generated by --- this is immediately overridden by the specialised `Coin` generator. --- --- The correct solution here will be to allow passing a generator which can have --- the correct arguments plumbed in. At that point we can remove the specialised --- Coin generator with its overrides, and simply establish the correct generator --- from the top for the correct era. --- --- TODO CAD-2119 covers the task of fixing this generator infrastructure. -genVl :: Gen Coin -genVl = arbitrary - --- ========================================================== - -data BenchCrypto - -instance CryptoClass.Crypto BenchCrypto where - type DSIGN BenchCrypto = Ed25519DSIGN - type KES BenchCrypto = Sum6KES Ed25519DSIGN Blake2b_256 - type VRF BenchCrypto = PraosVRF - type HASH BenchCrypto = Blake2b_256 - type ADDRHASH BenchCrypto = Blake2b_224 - -instance PraosCrypto BenchCrypto - -type BenchEra = ShelleyEra BenchCrypto - --- ============================================================ - --- TODO set this in one place (where?) -type FixedValType = Coin - -eqf :: String -> (Map.Map Int Int -> Map.Map Int Int -> Bool) -> Int -> Benchmark -eqf name f n = bgroup (name ++ " " ++ show n) (map runat [n, n * 10, n * 100, n * 1000]) - where - runat m = - env - ( return $ - Map.fromList - [ (k, k) - | k <- [1 .. m] - ] - ) - (\state -> bench (show m) (whnf (f state) state)) - -mainEq :: IO () -mainEq = - defaultMain $ - [ bgroup "KeysEqual tests" $ - [ eqf "keysEqual" keysEqual (100 :: Int) - , eqf - "keys x == keys y" - (\x y -> Map.keys x == Map.keys y) - (100 :: Int) - ] - ] - --- ================================================= --- Spending 1 UTxO - -includes_init_SpendOneUTxO :: IO () -includes_init_SpendOneUTxO = - defaultMain - [ bgroup "Spend 1 UTXO with initialization" $ - fmap - (\n -> bench (show n) $ whnf ledgerSpendOneUTxO n) - [50, 500, 5000, 50000] - ] - -profileUTxO :: IO () -profileUTxO = do - putStrLn "Enter profiling" - let ans = ledgerSpendOneGivenUTxO (initUTxO 500000) - putStrLn ("Exit profiling " ++ show ans) - --- ========================================== --- Registering Stake Keys - -touchCertState :: CertState c -> Int -touchCertState (CertState _x _y _z) = 1 - -touchUTxOState :: Cardano.Ledger.Shelley.LedgerState.UTxOState cryto -> Int -touchUTxOState (UTxOState _utxo _deposited _fees _ppups _ _) = 2 - -profileCreateRegKeys :: IO () -profileCreateRegKeys = do - putStrLn "Enter profiling stake key creation" - let state = ledgerStateWithNregisteredKeys 1 500000 -- using 75,000 and 100,000 causes - -- mainbench: internal error: PAP object entered! - -- (GHC version 8.6.5 for x86_64_unknown_linux) - -- Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug - let touch (LedgerState x y) = touchUTxOState x + touchCertState y - putStrLn ("Exit profiling " ++ show (touch state)) - --- ============================================ --- Profiling N keys and M pools - -profileNkeysMPools :: IO () -profileNkeysMPools = do - putStrLn "Enter N keys and M Pools" - let unit = - ledgerDelegateManyKeysOnePool - 50 - 500 - (ledgerStateWithNkeysMpools 5000 500) - putStrLn ("Exit profiling " ++ show unit) - --- ========================================== --- Registering Pools - -profileCreateRegPools :: Word64 -> IO () -profileCreateRegPools size = do - putStrLn "Enter profiling pool creation" - let state = ledgerStateWithNregisteredPools 1 size - let touch (LedgerState x y) = touchUTxOState x + touchCertState y - putStrLn ("Exit profiling " ++ show (touch state)) - --- ========================================== --- Epoch Boundary - -profileEpochBoundary :: Benchmark -profileEpochBoundary = - bgroup "aggregate stake" $ epochAt <$> benchParameters - where - benchParameters :: [Int] - benchParameters = [5000, 50000, 500000] - -epochAt :: Int -> Benchmark -epochAt x = - env (QC.generate (genTestCase x n)) $ \ ~arg@(dstate, pstate, utxo) -> - bgroup - ("UTxO=" ++ show x ++ ", address=" ++ show n) - [ bench "stakeDistr" (nf action2m arg) - , bench "incrementalStakeDistr" (nf action2im arg) - , env (pure (updateStakeDistribution emptyPParams mempty mempty utxo)) $ \incStake -> - bench "incrementalStakeDistr (no update)" $ - nf (incrementalStakeDistr (emptyPParams @(ShelleyEra StandardCrypto)) incStake dstate) pstate - ] - where - n = 10000 :: Int - -action2m :: - EraTxOut era => - (DState era, PState era, UTxO era) -> - EB.SnapShot (EraCrypto era) -action2m (dstate, pstate, utxo) = stakeDistr utxo dstate pstate - -action2im :: - forall era. - EraTxOut era => - (DState era, PState era, UTxO era) -> - EB.SnapShot (EraCrypto era) -action2im (dstate, pstate, utxo) = - let pp = emptyPParams @era - incStake = updateStakeDistribution pp mempty mempty utxo - in incrementalStakeDistr pp incStake dstate pstate - --- ================================================================= - --- | Benchmarks for the various validation transitions exposed by the API -validGroup :: Benchmark -validGroup = - bgroup - "validation" - [ runAtUTxOSize 1000 - , runAtUTxOSize 100000 - , runAtUTxOSize 1000000 - ] - where - runAtUTxOSize n = - bgroup - (show n) - [ env (validateInput @BenchEra n) $ \arg -> - bgroup - "block" - [ bench "applyBlockTransition" (nfIO $ benchValidate arg) - , bench "reapplyBlockTransition" (nf benchreValidate arg) - ] - , env (genUpdateInputs @BenchEra n) $ \arg -> - bgroup - "protocol" - [ bench "updateChainDepState" (nf updateChain arg) - , bench - "updateAndTickChainDepState" - (nf updateAndTickChain arg) - ] - ] - -profileValid :: IO () -profileValid = do - state <- validateInput @BenchEra 10000 - let ans = sum [applyBlock @BenchEra state n | n <- [1 .. 10000 :: Int]] - print ans - --- ======================================================== --- Profile algorithms for ((dom d ◁ r) ▷ dom rg) - -domainRangeRestrict :: IO () -domainRangeRestrict = - defaultMain - [ bgroup "domain-range restict" $ - drrAt <$> benchParameters - ] - where - benchParameters :: [Int] - benchParameters = [1000, 10000, 100000] - -drrAt :: Int -> Benchmark -drrAt x = - env (expr x) $ - \arg -> - bgroup - ("size=" ++ show x) - [ bench "compute" (whnf alg1 arg) - , bench "run . compile" (whnf alg2 arg) - ] - -alg1 :: (Map Int Int, Map Int Char, Map Char Char) -> Map Int Char -alg1 (d, r, rg) = compute ((dom d ◁ r) ▷ dom rg) - -alg2 :: (Map Int Int, Map Int Char, Map Char Char) -> Map Int Char -alg2 (d, r, rg) = run $ compile ((dom d ◁ r) ▷ dom rg) - --- ================================================= --- Some things we might want to profile. - --- main :: IO() --- main = profileUTxO --- main = includes_init_SpendOneUTxO --- main:: IO () --- main = profileCreateRegPools 10000 --- main = profileCreateRegPools 100000 --- main = profileNkeysMPools --- main = profile_stakeDistr - --- ========================================================= - -varyState :: - NFData state => - String -> - Word64 -> - [Word64] -> - (Word64 -> Word64 -> state) -> - (Word64 -> Word64 -> state -> ()) -> - Benchmark -varyState tag fixed changes initstate action = - bgroup ("state/" ++ tag ++ "/constant") $ map runAtSize changes - where - runAtSize n = - env - (return $ initstate 1 n) - (\state -> bench (show n) (whnf (action fixed fixed) state)) - -varyInput :: - NFData state => - String -> - (Word64, Word64) -> - [(Word64, Word64)] -> - (Word64 -> Word64 -> state) -> - (Word64 -> Word64 -> state -> ()) -> - Benchmark -varyInput tag fixed changes initstate action = - bgroup ("input/" ++ tag ++ "/growing") $ map runAtSize changes - where - runAtSize n = - env - (return $ initstate (fst fixed) (snd fixed)) - (\state -> bench (show n) (whnf (action (fst n) (snd n)) state)) - -varyDelegState :: - NFData state => - String -> - Word64 -> - [Word64] -> - (Word64 -> Word64 -> state) -> - (Word64 -> Word64 -> state -> ()) -> - Benchmark -varyDelegState tag fixed changes initstate action = - bgroup ("state/" ++ tag ++ "/growing") $ map runAtSize changes - where - runAtSize n = - env - (return $ initstate n n) - (\state -> bench (show n) (whnf (action 1 fixed) state)) - --- ============================================================================= - -main :: IO () -main = do - (genenv, chainstate, genTxfun) <- genTriple (Proxy :: Proxy BenchEra) 1000 - defaultMain - [ bgroup - "vary input size" - [ varyInput - "deregister key" - (1, 5000) - [(1, 50), (1, 500), (1, 5000)] - ledgerStateWithNregisteredKeys - ledgerDeRegisterStakeKeys - , varyInput - "register key" - (20001, 25001) - [(1, 50), (1, 500), (1, 5000)] - ledgerStateWithNregisteredKeys - ledgerRegisterStakeKeys - , varyInput - "withdrawal" - (1, 5000) - [(1, 50), (1, 500), (1, 5000)] - ledgerStateWithNregisteredKeys - ledgerRewardWithdrawals - , varyInput - "register pool" - (1, 5000) - [(1, 50), (1, 500), (1, 5000)] - ledgerStateWithNregisteredPools - ledgerRegisterStakePools - , varyInput - "reregister pool" - (1, 5000) - [(1, 50), (1, 500), (1, 5000)] - ledgerStateWithNregisteredPools - ledgerReRegisterStakePools - , varyInput - "retire pool" - (1, 5000) - [(1, 50), (1, 500), (1, 5000)] - ledgerStateWithNregisteredPools - ledgerRetireStakePools - , varyInput - "manyKeysOnePool" - (5000, 5000) - [(1, 50), (1, 500), (1, 5000)] - ledgerStateWithNkeysMpools - ledgerDelegateManyKeysOnePool - ] - , bgroup "vary initial state" $ - [ varyState - "spendOne" - 1 - [50, 500, 5000] - (\_m n -> initUTxO (fromIntegral n)) - (\_m _ -> ledgerSpendOneGivenUTxO) - , varyState - "register key" - 5001 - [50, 500, 5000] - ledgerStateWithNregisteredKeys - ledgerRegisterStakeKeys - , varyState - "deregister key" - 50 - [50, 500, 5000] - ledgerStateWithNregisteredKeys - ledgerDeRegisterStakeKeys - , varyState - "withdrawal" - 50 - [50, 500, 5000] - ledgerStateWithNregisteredKeys - ledgerRewardWithdrawals - , varyState - "register pool" - 5001 - [50, 500, 5000] - ledgerStateWithNregisteredPools - ledgerRegisterStakePools - , varyState - "reregister pool" - 5001 - [50, 500, 5000] - ledgerStateWithNregisteredPools - ledgerReRegisterStakePools - , varyState - "retire pool" - 50 - [50, 500, 5000] - ledgerStateWithNregisteredPools - ledgerRetireStakePools - , varyDelegState - "manyKeysOnePool" - 50 - [50, 500, 5000] - ledgerStateWithNkeysMpools - ledgerDelegateManyKeysOnePool - ] - , profileEpochBoundary - , bgroup "domain-range restict" $ drrAt <$> [10000, 100000, 1000000] - , validGroup - , -- Benchmarks for the various generators - bgroup - "gen" - [ env - (return chainstate) - ( \cs -> - bgroup - "block" - [ bench "genBlock" $ whnfIO $ genBlock genenv cs - ] - ) - , bgroup - "genTx" - [ bench "1000" $ whnfIO $ genTxfun genenv - ] - ] - , bgroup "rewards" $ - [ env - (generate $ genChainInEpoch 5) - ( \cs -> - bench "createRUpd" $ whnf (createRUpd testGlobals) cs - ) - , env - (generate $ genChainInEpoch 5) - ( \cs -> - bench "createRUpdWithProvenance" $ whnf (createRUpdWithProv testGlobals) cs - ) - , bench "likelihood" $ whnf (likelihood 1234 0.1) (EpochSize 10000) - ] - ] diff --git a/eras/shelley/test-suite/bench/README.md b/eras/shelley/test-suite/bench/README.md deleted file mode 100644 index 54d2f5df228..00000000000 --- a/eras/shelley/test-suite/bench/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# Benchmarking - -## Running with Stack - -The benchmark suite can be run from the command line with: - -```shell -stack bench -``` - -The benchmark groups can be specified by name, eg: - -```shell -stack bench --ba 'utxo' -stack bench --ba 'stake-key/register' -``` - -More output is available by specifying at html output file: - -```shell -stack bench --ba --output=bench.html -``` diff --git a/eras/shelley/test-suite/cardano-ledger-shelley-test.cabal b/eras/shelley/test-suite/cardano-ledger-shelley-test.cabal deleted file mode 100644 index 8d40b694f64..00000000000 --- a/eras/shelley/test-suite/cardano-ledger-shelley-test.cabal +++ /dev/null @@ -1,209 +0,0 @@ -cabal-version: 3.0 -name: cardano-ledger-shelley-test -version: 1.4.0.0 -license: Apache-2.0 -maintainer: operations@iohk.io -author: IOHK -synopsis: - Test helpers from cardano-ledger-shelley exposed to other packages - -build-type: Simple -data-files: test/Golden/ShelleyGenesis -extra-source-files: CHANGELOG.md - -source-repository head - type: git - location: https://github.com/intersectmbo/cardano-ledger.git - subdir: eras/shelley/test-suite - -library - exposed-modules: - Test.Cardano.Ledger.TerseTools - Test.Cardano.Ledger.Shelley.Address.Bootstrap - Test.Cardano.Ledger.Shelley.BenchmarkFunctions - Test.Cardano.Ledger.Shelley.ByronTranslation - Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes - Test.Cardano.Ledger.Shelley.Examples.Cast - Test.Cardano.Ledger.Shelley.Examples.Consensus - Test.Cardano.Ledger.Shelley.Examples.Federation - Test.Cardano.Ledger.Shelley.Generator.Block - Test.Cardano.Ledger.Shelley.Generator.Constants - Test.Cardano.Ledger.Shelley.Generator.Core - Test.Cardano.Ledger.Shelley.Generator.Delegation - Test.Cardano.Ledger.Shelley.Generator.Presets - Test.Cardano.Ledger.Shelley.Generator.Trace.Chain - Test.Cardano.Ledger.Shelley.Generator.Trace.DCert - Test.Cardano.Ledger.Shelley.Generator.Trace.TxCert - Test.Cardano.Ledger.Shelley.Generator.Trace.Ledger - Test.Cardano.Ledger.Shelley.Generator.TxAuxData - Test.Cardano.Ledger.Shelley.Generator.TxCert - Test.Cardano.Ledger.Shelley.Generator.Update - Test.Cardano.Ledger.Shelley.Generator.Utxo - Test.Cardano.Ledger.Shelley.Generator.EraGen - Test.Cardano.Ledger.Shelley.Generator.ScriptClass - Test.Cardano.Ledger.Shelley.Generator.ShelleyEraGen - Test.Cardano.Ledger.Shelley.LaxBlock - Test.Cardano.Ledger.Shelley.PropertyTests - Test.Cardano.Ledger.Shelley.Rewards - Test.Cardano.Ledger.Shelley.Rules.AdaPreservation - Test.Cardano.Ledger.Shelley.Rules.Chain - Test.Cardano.Ledger.Shelley.Rules.ClassifyTraces - Test.Cardano.Ledger.Shelley.Rules.CollisionFreeness - Test.Cardano.Ledger.Shelley.Rules.Deposits - Test.Cardano.Ledger.Shelley.Rules.IncrementalStake - Test.Cardano.Ledger.Shelley.Rules.PoolReap - Test.Cardano.Ledger.Shelley.Rules.TestChain - Test.Cardano.Ledger.Shelley.Rules.Deleg - Test.Cardano.Ledger.Shelley.Rules.Pool - Test.Cardano.Ledger.Shelley.Serialisation.Generators - Test.Cardano.Ledger.Shelley.Serialisation.EraIndepGenerators - Test.Cardano.Ledger.Shelley.Serialisation.GoldenUtils - Test.Cardano.Ledger.Shelley.ShelleyTranslation - Test.Cardano.Ledger.Shelley.Utils - Test.Cardano.Ledger.Shelley.WitVKeys - - hs-source-dirs: src - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wunused-packages - - build-depends: - base >=4.14 && <5, - QuickCheck >=2.13.2, - bytestring, - cardano-crypto, - cardano-crypto-class, - cardano-crypto-wrapper, - cardano-data >=1.2, - cardano-ledger-binary:{cardano-ledger-binary, testlib} >=1.3, - cardano-ledger-byron, - cardano-ledger-core:{cardano-ledger-core, testlib} ^>=1.11, - cardano-ledger-shelley:{cardano-ledger-shelley, testlib} ^>=1.10, - cardano-protocol-tpraos:{cardano-protocol-tpraos, testlib} >=1.0.1, - cardano-slotting:{cardano-slotting, testlib}, - cborg, - containers, - data-default-class, - deepseq, - hashable, - microlens, - mtl, - nothunks, - plutus-ledger-api, - serialise, - set-algebra, - small-steps:{small-steps, testlib} >=1.1, - cardano-strict-containers, - tasty, - tasty-hunit, - tasty-quickcheck, - text, - time, - transformers, - tree-diff, - vector, - vector-map >=1.1 - -test-suite cardano-ledger-shelley-test - type: exitcode-stdio-1.0 - main-is: Tests.hs - hs-source-dirs: test - other-modules: - Test.Cardano.Ledger.Shelley.Examples - Test.Cardano.Ledger.Shelley.Examples.Combinators - Test.Cardano.Ledger.Shelley.Examples.EmptyBlock - Test.Cardano.Ledger.Shelley.Examples.Init - Test.Cardano.Ledger.Shelley.Examples.GenesisDelegation - Test.Cardano.Ledger.Shelley.Examples.NetworkID - Test.Cardano.Ledger.Shelley.Examples.Mir - Test.Cardano.Ledger.Shelley.Examples.MirTransfer - Test.Cardano.Ledger.Shelley.Examples.PoolLifetime - Test.Cardano.Ledger.Shelley.Examples.PoolReReg - Test.Cardano.Ledger.Shelley.Examples.TwoPools - Test.Cardano.Ledger.Shelley.Examples.Updates - Test.Cardano.Ledger.Shelley.Fees - Test.Cardano.Ledger.Shelley.MultiSigExamples - Test.Cardano.Ledger.Shelley.SafeHash - Test.Cardano.Ledger.Shelley.Serialisation - Test.Cardano.Ledger.Shelley.Serialisation.Golden.Address - Test.Cardano.Ledger.Shelley.Serialisation.Golden.Encoding - Test.Cardano.Ledger.Shelley.Serialisation.Golden.Genesis - Test.Cardano.Ledger.Shelley.Serialisation.Tripping.CBOR - Test.Cardano.Ledger.Shelley.Serialisation.Tripping.JSON - Test.Cardano.Ledger.Shelley.RulesTests - Test.Cardano.Ledger.Shelley.UnitTests - Paths_cardano_ledger_shelley_test - - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wunused-packages - -threaded -rtsopts -with-rtsopts=-N "-with-rtsopts=-K4m -M250m" - - build-depends: - base, - QuickCheck, - aeson >=2, - base16-bytestring, - binary, - bytestring, - cardano-ledger-binary:{cardano-ledger-binary, testlib}, - cardano-crypto-class, - cardano-data, - cardano-ledger-byron, - cardano-ledger-core:{cardano-ledger-core, testlib}, - cardano-ledger-shelley:{cardano-ledger-shelley, testlib}, - cardano-ledger-shelley-test >=1.1, - cardano-protocol-tpraos:{cardano-protocol-tpraos, testlib}, - cardano-slotting, - cborg, - containers, - data-default-class, - deepseq, - groups, - iproute, - microlens, - scientific, - small-steps:{small-steps, testlib} >=1.1, - cardano-strict-containers, - tasty, - tasty-hunit, - tasty-quickcheck, - time - -benchmark mainbench - type: exitcode-stdio-1.0 - main-is: Main.hs - hs-source-dirs: bench - other-modules: - BenchUTxOAggregate - BenchValidation - Cardano.Ledger.Shelley.Bench.Gen - Cardano.Ledger.Shelley.Bench.Rewards - - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wunused-packages - -threaded -rtsopts -O2 - - build-depends: - base, - QuickCheck, - cardano-crypto-class, - cardano-crypto-praos, - cardano-data, - cardano-ledger-binary:testlib, - cardano-ledger-core:{cardano-ledger-core, testlib}, - cardano-ledger-shelley:{cardano-ledger-shelley, testlib}, - cardano-ledger-shelley-test, - cardano-protocol-tpraos, - cardano-slotting, - cardano-strict-containers, - containers, - criterion, - deepseq, - mtl, - set-algebra, - small-steps:{small-steps, testlib} >=1.1 diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Address/Bootstrap.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Address/Bootstrap.hs deleted file mode 100644 index 4159370cf78..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Address/Bootstrap.hs +++ /dev/null @@ -1,34 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} - -module Test.Cardano.Ledger.Shelley.Address.Bootstrap ( - aliceByronAddr, -) -where - -import qualified Cardano.Chain.Common as Byron -import qualified Cardano.Crypto.Signing as Byron -import qualified Cardano.Crypto.Wallet as Byron -import Data.ByteString (ByteString) -import Test.Cardano.Ledger.Shelley.Generator.ShelleyEraGen () - -aliceSigningKey :: Byron.SigningKey -aliceSigningKey = Byron.SigningKey $ Byron.generate seed (mempty :: ByteString) - where - seed :: ByteString -- 32 bytes - seed = "12345678901234567890123456789012" - -aliceByronAddr :: Byron.Address -aliceByronAddr = Byron.makeAddress asd attrs - where - asd = Byron.VerKeyASD byronVerificationKey - attrs = - Byron.AddrAttributes - (Just (Byron.HDAddressPayload "a compressed lenna.png")) - (Byron.NetworkTestnet 0) - byronVerificationKey = Byron.toVerification aliceSigningKey diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/BenchmarkFunctions.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/BenchmarkFunctions.hs deleted file mode 100644 index 6e5fe4e1afc..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/BenchmarkFunctions.hs +++ /dev/null @@ -1,545 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} - -module Test.Cardano.Ledger.Shelley.BenchmarkFunctions ( - ledgerSpendOneUTxO, - ledgerSpendOneGivenUTxO, - initUTxO, -- How to precompute env for the UTxO transactions - ledgerEnv, - ledgerRegisterStakeKeys, - ledgerDeRegisterStakeKeys, - ledgerRewardWithdrawals, - ledgerStateWithNregisteredKeys, -- How to precompute env for the StakeKey transactions - ledgerRegisterStakePools, - ledgerReRegisterStakePools, - ledgerRetireStakePools, - ledgerStateWithNregisteredPools, -- How to precompute env for the Stake Pool transactions - ledgerDelegateManyKeysOnePool, - ledgerStateWithNkeysMpools, -- How to precompute env for the Stake Delegation transactions - B, -- Era instance for Benchmarking - B_Crypto, -- Crypto instance for Benchmarking -) -where - -import Cardano.Crypto.Hash.Blake2b (Blake2b_256) -import Cardano.Ledger.Address (Addr, RewardAccount (..)) -import Cardano.Ledger.BaseTypes ( - EpochInterval (..), - Network (..), - StrictMaybe (..), - TxIx, - inject, - mkTxIxPartial, - ) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Credential (Credential (..)) -import Cardano.Ledger.Crypto (Crypto (..)) -import Cardano.Ledger.Keys ( - Hash, - KeyHash, - KeyRole (..), - VerKeyVRF, - asWitness, - hashKey, - hashVerKeyVRF, - ) -import Cardano.Ledger.PoolParams ( - PoolParams (..), - ppCost, - ppId, - ppMargin, - ppMetadata, - ppOwners, - ppPledge, - ppRelays, - ppRewardAccount, - ppVrf, - ) -import Cardano.Ledger.SafeHash (hashAnnotated) -import Cardano.Ledger.Shelley (ShelleyEra) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState ( - AccountState (..), - LedgerState (..), - UTxOState (..), - ) -import Cardano.Ledger.Shelley.Rules (LedgerEnv (..), ShelleyLEDGER) -import Cardano.Ledger.Shelley.Tx (ShelleyTx (..)) -import Cardano.Ledger.Shelley.TxBody (ShelleyTxBody (..)) -import Cardano.Ledger.Shelley.TxOut (ShelleyTxOut (..)) -import Cardano.Ledger.Shelley.TxWits (addrWits) -import Cardano.Ledger.Slot (EpochNo (..), SlotNo (..)) -import Cardano.Ledger.TxIn (TxIn (..), mkTxInPartial) -import Cardano.Protocol.TPraos.API (PraosCrypto) -import Control.State.Transition.Extended (TRC (..), applySTS) -import Data.Default.Class (def) -import qualified Data.Map.Strict as Map -import Data.Sequence.Strict (StrictSeq) -import qualified Data.Sequence.Strict as StrictSeq -import qualified Data.Set as Set -import Data.Word (Word64) -import GHC.Stack -import Lens.Micro ((&), (.~)) -import Test.Cardano.Ledger.Core.KeyPair (KeyPair (..), mkAddr, mkWitnessesVKey, vKey) -import qualified Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes as Original ( - C_Crypto, - ) -import Test.Cardano.Ledger.Shelley.Generator.Core ( - VRFKeyPair (..), - genesisCoins, - ) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (genesisId) -import Test.Cardano.Ledger.Shelley.Generator.ShelleyEraGen () -import Test.Cardano.Ledger.Shelley.Utils ( - RawSeed (..), - mkKeyPair, - mkKeyPair', - mkVRFKeyPair, - runShelleyBase, - unsafeBoundRational, - ) - --- =============================================== --- A special Era to run the Benchmarks in - -type B = ShelleyEra B_Crypto - -data B_Crypto - -instance Cardano.Ledger.Crypto.Crypto B_Crypto where - type KES B_Crypto = KES Original.C_Crypto - type VRF B_Crypto = VRF Original.C_Crypto - type DSIGN B_Crypto = DSIGN Original.C_Crypto - type HASH B_Crypto = Blake2b_256 - type ADDRHASH B_Crypto = Blake2b_256 - -instance PraosCrypto B_Crypto - --- ========================================================= - -aliceStake :: KeyPair 'Staking B_Crypto -aliceStake = KeyPair vk sk - where - (sk, vk) = mkKeyPair (RawSeed 0 0 0 0 1) - -alicePay :: KeyPair 'Payment B_Crypto -alicePay = KeyPair vk sk - where - (sk, vk) = mkKeyPair (RawSeed 0 0 0 0 0) - -aliceAddr :: Addr B_Crypto -aliceAddr = mkAddr (alicePay, aliceStake) - --- ========================================================== - -injcoins :: Integer -> [ShelleyTxOut B] -injcoins n = fmap (\_ -> ShelleyTxOut aliceAddr (inject $ Coin 100)) [0 .. n] - --- Cretae an initial UTxO set with n-many transaction outputs -initUTxO :: Integer -> UTxOState B -initUTxO n = - UTxOState - (genesisCoins genesisId (injcoins n)) - (Coin 0) - (Coin 0) - def - mempty - mempty - --- Protocal Parameters used for the benchmarknig tests. --- Note that the fees and deposits are set to zero for --- ease of creating transactions. -ppsBench :: (EraPParams era, ProtVerAtMost era 4, ProtVerAtMost era 6) => PParams era -ppsBench = - emptyPParams - & ppMaxBBSizeL .~ 50000 - & ppDL .~ unsafeBoundRational 0.5 - & ppEMaxL .~ EpochInterval 10000 - & ppKeyDepositL .~ Coin 0 - & ppMaxBHSizeL .~ 10000 - & ppMaxTxSizeL .~ 1000000000 - & ppMinFeeAL .~ Coin 0 - & ppMinFeeBL .~ Coin 0 - & ppMinUTxOValueL .~ Coin 10 - & ppPoolDepositL .~ Coin 0 - & ppRhoL .~ unsafeBoundRational 0.0021 - & ppTauL .~ unsafeBoundRational 0.2 - -ledgerEnv :: (EraPParams era, ProtVerAtMost era 4, ProtVerAtMost era 6) => LedgerEnv era -ledgerEnv = LedgerEnv (SlotNo 0) minBound ppsBench (AccountState (Coin 0) (Coin 0)) - -testLEDGER :: - LedgerState B -> - ShelleyTx B -> - LedgerEnv B -> - () -testLEDGER initSt tx env = do - let st = runShelleyBase $ applySTS @(ShelleyLEDGER B) (TRC (env, initSt, tx)) - case st of - Right _ -> () - Left e -> error $ show e - -txbSpendOneUTxO :: ShelleyTxBody B -txbSpendOneUTxO = - ShelleyTxBody - (Set.fromList [TxIn genesisId minBound]) - ( StrictSeq.fromList - [ ShelleyTxOut aliceAddr (inject $ Coin 10) - , ShelleyTxOut aliceAddr (inject $ Coin 89) - ] - ) - StrictSeq.empty - (Withdrawals Map.empty) - (Coin 1) - (SlotNo 10) - SNothing - SNothing - -txSpendOneUTxO :: ShelleyTx B -txSpendOneUTxO = - ShelleyTx - txbSpendOneUTxO - mempty - { addrWits = mkWitnessesVKey (hashAnnotated txbSpendOneUTxO) [asWitness alicePay] - } - SNothing - -ledgerSpendOneUTxO :: Integer -> () -ledgerSpendOneUTxO n = testLEDGER (initLedgerState n) txSpendOneUTxO ledgerEnv - -ledgerSpendOneGivenUTxO :: UTxOState B -> () -ledgerSpendOneGivenUTxO state = testLEDGER (LedgerState state def) txSpendOneUTxO ledgerEnv - --- =========================================================================== --- --- Register a stake keys when there are a lot of registered stake keys --- - --- Create stake key pairs, corresponding to seeds --- (RawSeed start 0 0 0 0) through (RawSeed end 0 0 0 0) -stakeKeys :: Word64 -> Word64 -> [KeyPair 'Staking B_Crypto] -stakeKeys start end = fmap (\w -> mkKeyPair' (RawSeed w 0 0 0 0)) [start .. end] - -stakeKeyOne :: KeyPair 'Staking B_Crypto -stakeKeyOne = mkKeyPair' (RawSeed 1 0 0 0 0) - -stakeKeyToCred :: KeyPair 'Staking B_Crypto -> Credential 'Staking B_Crypto -stakeKeyToCred = KeyHashObj . hashKey . vKey - -firstStakeKeyCred :: Credential 'Staking B_Crypto -firstStakeKeyCred = stakeKeyToCred stakeKeyOne - --- Create stake key registration certificates -stakeKeyRegistrations :: [KeyPair 'Staking B_Crypto] -> StrictSeq (TxCert B) -stakeKeyRegistrations keys = - StrictSeq.fromList $ - fmap (RegTxCert . KeyHashObj . hashKey . vKey) keys - --- Create a transaction body given a sequence of certificates. --- It spends the genesis coin given by the index ix. -txbFromCerts :: TxIx -> StrictSeq (TxCert B) -> ShelleyTxBody B -txbFromCerts ix regCerts = - ShelleyTxBody - (Set.fromList [TxIn genesisId ix]) - (StrictSeq.fromList [ShelleyTxOut aliceAddr (inject $ Coin 100)]) - regCerts - (Withdrawals Map.empty) - (Coin 0) - (SlotNo 10) - SNothing - SNothing - -makeSimpleTx :: - ShelleyTxBody B -> - [KeyPair 'Witness B_Crypto] -> - ShelleyTx B -makeSimpleTx txbody keysAddr = - ShelleyTx - txbody - mempty - { addrWits = mkWitnessesVKey (hashAnnotated txbody) keysAddr - } - SNothing - --- Create a transaction that registers stake credentials. -txRegStakeKeys :: TxIx -> [KeyPair 'Staking B_Crypto] -> ShelleyTx B -txRegStakeKeys ix keys = - makeSimpleTx - (txbFromCerts ix $ stakeKeyRegistrations keys) - [asWitness alicePay] - -initLedgerState :: Integer -> LedgerState B -initLedgerState n = LedgerState (initUTxO n) def - -makeLEDGERState :: HasCallStack => LedgerState B -> ShelleyTx B -> LedgerState B -makeLEDGERState start tx = - let st = applySTS @(ShelleyLEDGER B) (TRC (ledgerEnv, start, tx)) - in case runShelleyBase st of - Right st' -> st' - Left e -> error $ show e - --- Create a ledger state that has registered stake credentials that --- are seeded with (RawSeed n 0 0 0 0) to (RawSeed m 0 0 0 0). --- It is pre-populated with 2 genesis injcoins. -ledgerStateWithNregisteredKeys :: Word64 -> Word64 -> LedgerState B -ledgerStateWithNregisteredKeys n m = - makeLEDGERState (initLedgerState 1) $ txRegStakeKeys minBound (stakeKeys n m) - --- =========================================================== --- Stake Key Registration example - --- Given a ledger state, presumably created by ledgerStateWithNregisteredKeys n m, --- so that keys (RawSeed n 0 0 0 0) through (RawSeed m 0 0 0 0) are already registered, --- register new keys (RawSeed x 0 0 0 0) through (RawSeed y 0 0 0 0). --- Note that [n, m] must be disjoint from [x, y]. -ledgerRegisterStakeKeys :: Word64 -> Word64 -> LedgerState B -> () -ledgerRegisterStakeKeys x y state = - testLEDGER - state - (txRegStakeKeys (mkTxIxPartial 1) (stakeKeys x y)) - ledgerEnv - --- =========================================================== --- Deregistration example - --- Create a transaction body that de-registers stake credentials, --- corresponding to the keys seeded with (RawSeed x 0 0 0 0) to (RawSeed y 0 0 0 0) -txbDeRegStakeKey :: Word64 -> Word64 -> ShelleyTxBody B -txbDeRegStakeKey x y = - ShelleyTxBody - (Set.fromList [mkTxInPartial genesisId 1]) - (StrictSeq.fromList [ShelleyTxOut aliceAddr (inject $ Coin 100)]) - ( StrictSeq.fromList $ - fmap (UnRegTxCert . stakeKeyToCred) (stakeKeys x y) - ) - (Withdrawals Map.empty) - (Coin 0) - (SlotNo 10) - SNothing - SNothing - --- Create a transaction that deregisters stake credentials numbered x through y. --- It spends the genesis coin indexed by 1. -txDeRegStakeKeys :: Word64 -> Word64 -> ShelleyTx B -txDeRegStakeKeys x y = - makeSimpleTx - (txbDeRegStakeKey x y) - (asWitness alicePay : fmap asWitness (stakeKeys x y)) - --- Given a ledger state, presumably created by ledgerStateWithNregisteredKeys n m, --- so that keys (RawSeed n 0 0 0 0) through (RawSeed m 0 0 0 0) are already registered, --- deregister keys (RawSeed x 0 0 0 0) through (RawSeed y 0 0 0 0). --- Note that [x, y] must be contained in [n, m]. -ledgerDeRegisterStakeKeys :: Word64 -> Word64 -> LedgerState B -> () -ledgerDeRegisterStakeKeys x y state = - testLEDGER - state - (txDeRegStakeKeys x y) - ledgerEnv - --- =========================================================== --- Reward Withdrawal example - --- Create a transaction body that withdrawals from reward accounts, --- corresponding to the keys seeded with (RawSeed x 0 0 0 0) to (RawSeed y 0 0 0 0). -txbWithdrawals :: Word64 -> Word64 -> ShelleyTxBody B -txbWithdrawals x y = - ShelleyTxBody - (Set.fromList [mkTxInPartial genesisId 1]) - (StrictSeq.fromList [ShelleyTxOut aliceAddr (inject $ Coin 100)]) - StrictSeq.empty - ( Withdrawals $ - Map.fromList $ - fmap (\ks -> (RewardAccount Testnet (stakeKeyToCred ks), Coin 0)) (stakeKeys x y) - ) - (Coin 0) - (SlotNo 10) - SNothing - SNothing - --- Create a transaction that withdrawals from a reward accounts. --- It spends the genesis coin indexed by 1. -txWithdrawals :: Word64 -> Word64 -> ShelleyTx B -txWithdrawals x y = - makeSimpleTx - (txbWithdrawals x y) - (asWitness alicePay : fmap asWitness (stakeKeys x y)) - --- Given a ledger state, presumably created by ledgerStateWithNregisteredKeys n m, --- so that keys (RawSeed n 0 0 0 0) through (RawSeed m 0 0 0 0) are already registered, --- make reward withdrawals for keys (RawSeed x 0 0 0 0) through (RawSeed y 0 0 0 0). --- Note that [x, y] must be contained in [n, m]. -ledgerRewardWithdrawals :: Word64 -> Word64 -> LedgerState B -> () -ledgerRewardWithdrawals x y state = testLEDGER state (txWithdrawals x y) ledgerEnv - --- =========================================================================== --- --- Register a stake pool when there are a lot of registered stake pool --- - --- Create stake pool key pairs, corresponding to seeds --- (RawSeed start 0 0 0 0) through (RawSeed end 0 0 0 0) -poolColdKeys :: Word64 -> Word64 -> [KeyPair 'StakePool B_Crypto] -poolColdKeys start end = fmap (\w -> mkKeyPair' (RawSeed w 1 0 0 0)) [start .. end] - -firstStakePool :: KeyPair 'StakePool B_Crypto -firstStakePool = mkKeyPair' (RawSeed 1 1 0 0 0) - -mkPoolKeyHash :: KeyPair 'StakePool B_Crypto -> KeyHash 'StakePool B_Crypto -mkPoolKeyHash = hashKey . vKey - -firstStakePoolKeyHash :: KeyHash 'StakePool B_Crypto -firstStakePoolKeyHash = mkPoolKeyHash firstStakePool - -vrfKeyHash :: Hash B_Crypto (VerKeyVRF B_Crypto) -vrfKeyHash = hashVerKeyVRF . vrfVerKey . mkVRFKeyPair @B_Crypto $ RawSeed 0 0 0 0 0 - -mkPoolParameters :: KeyPair 'StakePool B_Crypto -> PoolParams B_Crypto -mkPoolParameters keys = - PoolParams - { ppId = hashKey (vKey keys) - , ppVrf = vrfKeyHash - , ppPledge = Coin 0 - , ppCost = Coin 0 - , ppMargin = unsafeBoundRational 0 - , ppRewardAccount = RewardAccount Testnet firstStakeKeyCred - , ppOwners = Set.singleton $ hashKey (vKey stakeKeyOne) - , ppRelays = StrictSeq.empty - , ppMetadata = SNothing - } - --- Create stake pool registration certs -poolRegCerts :: [KeyPair 'StakePool B_Crypto] -> StrictSeq (TxCert B) -poolRegCerts = StrictSeq.fromList . fmap (RegPoolTxCert . mkPoolParameters) - --- Create a transaction that registers stake pools. -txRegStakePools :: TxIx -> [KeyPair 'StakePool B_Crypto] -> ShelleyTx B -txRegStakePools ix keys = - makeSimpleTx - (txbFromCerts ix $ poolRegCerts keys) - ([asWitness alicePay, asWitness stakeKeyOne] ++ fmap asWitness keys) - --- Create a ledger state that has n registered stake pools. --- The keys are seeded with (RawSeed n 1 0 0 0) to (RawSeed m 1 0 0 0) --- It is pre-populated with 2 genesis injcoins. -ledgerStateWithNregisteredPools :: Word64 -> Word64 -> LedgerState B -ledgerStateWithNregisteredPools n m = - makeLEDGERState (initLedgerState 1) $ txRegStakePools minBound (poolColdKeys n m) - --- =========================================================== --- Stake Pool Registration example - --- Given a ledger state, presumably created by ledgerStateWithNregisteredPools n m, --- so that pool keys (RawSeed n 1 0 0 0) through (RawSeed m 1 0 0 0) are already registered, --- register new pools (RawSeed x 0 0 0 0) through (RawSeed y 0 0 0 0). --- Note that [n, m] must be disjoint from [x, y]. -ledgerRegisterStakePools :: Word64 -> Word64 -> LedgerState B -> () -ledgerRegisterStakePools x y state = - testLEDGER - state - (txRegStakePools (mkTxIxPartial 1) (poolColdKeys x y)) - ledgerEnv - --- =========================================================== --- Stake Pool Re-Registration/Update example - --- Given a ledger state, presumably created by ledgerStateWithNregisteredPools n m, --- so that pool keys (RawSeed n 1 0 0 0) through (RawSeed m 1 0 0 0) are already registered, --- re-register pools (RawSeed x 0 0 0 0) through (RawSeed y 0 0 0 0). --- Note that [n, m] must be contained in [x, y]. -ledgerReRegisterStakePools :: Word64 -> Word64 -> LedgerState B -> () -ledgerReRegisterStakePools x y state = - testLEDGER - state - (txRegStakePools (mkTxIxPartial 1) (poolColdKeys x y)) - ledgerEnv - --- =========================================================== --- Stake Pool Retirement example - --- Create a transaction body that retires stake pools, --- corresponding to the keys seeded with (RawSeed x 1 0 0 0) to (RawSeed y 1 0 0 0) -txbRetireStakePool :: Word64 -> Word64 -> ShelleyTxBody B -txbRetireStakePool x y = - ShelleyTxBody - (Set.fromList [mkTxInPartial genesisId 1]) - (StrictSeq.fromList [ShelleyTxOut aliceAddr (inject $ Coin 100)]) - ( StrictSeq.fromList $ - fmap - (\ks -> RetirePoolTxCert (mkPoolKeyHash ks) (EpochNo 1)) - (poolColdKeys x y) - ) - (Withdrawals Map.empty) - (Coin 0) - (SlotNo 10) - SNothing - SNothing - --- Create a transaction that retires stake pools x through y. --- It spends the genesis coin indexed by 1. -txRetireStakePool :: Word64 -> Word64 -> ShelleyTx B -txRetireStakePool x y = - makeSimpleTx - (txbRetireStakePool x y) - (asWitness alicePay : fmap asWitness (poolColdKeys x y)) - --- Given a ledger state, presumably created by ledgerStateWithNregisteredPools n m, --- so that pool keys (RawSeed n 1 0 0 0) through (RawSeed m 1 0 0 0) are already registered, --- retire pools (RawSeed x 0 0 0 0) through (RawSeed y 0 0 0 0). --- Note that [n, m] must be contained in [x, y]. -ledgerRetireStakePools :: Word64 -> Word64 -> LedgerState B -> () -ledgerRetireStakePools x y state = testLEDGER state (txRetireStakePool x y) ledgerEnv - --- =========================================================================== --- --- Delegate Stake Credentials when many stake keys and stake pools are registered. --- - --- Create a ledger state that has n registered stake keys and m stake pools. --- The stake keys are seeded with (RawSeed 1 0 0 0 0) to (RawSeed n 0 0 0 0) --- The stake pools are seeded with (RawSeed 1 1 0 0 0) to (RawSeed m 1 0 0 0) --- It is pre-populated with 3 genesis injcoins. -ledgerStateWithNkeysMpools :: Word64 -> Word64 -> LedgerState B -ledgerStateWithNkeysMpools n m = - makeLEDGERState - (makeLEDGERState (initLedgerState 2) $ txRegStakeKeys minBound (stakeKeys 1 n)) - (txRegStakePools (mkTxIxPartial 1) (poolColdKeys 1 m)) - --- Create a transaction body that delegates several keys to ONE stake pool, --- corresponding to the keys seeded with (RawSeed n 0 0 0 0) to (RawSeed m 0 0 0 0) -txbDelegate :: Word64 -> Word64 -> ShelleyTxBody B -txbDelegate n m = - ShelleyTxBody - (Set.fromList [mkTxInPartial genesisId 2]) - (StrictSeq.fromList [ShelleyTxOut aliceAddr (inject $ Coin 100)]) - ( StrictSeq.fromList $ - fmap - (\ks -> DelegStakeTxCert (stakeKeyToCred ks) firstStakePoolKeyHash) - (stakeKeys n m) - ) - (Withdrawals Map.empty) - (Coin 0) - (SlotNo 10) - SNothing - SNothing - --- Create a transaction that delegates stake. -txDelegate :: Word64 -> Word64 -> ShelleyTx B -txDelegate n m = - makeSimpleTx - (txbDelegate n m) - (asWitness alicePay : fmap asWitness (stakeKeys n m)) - --- Given a ledger state, presumably created by ledgerStateWithNkeysMpools n m, --- so that stake keys (RawSeed 1 0 0 0 0) through (RawSeed n 0 0 0 0) are already registered --- and pool keys (RawSeed 1 1 0 0 0) through (RawSeed m 1 0 0 0) are already registered, --- delegate stake keys (RawSeed x 0 0 0 0) through (RawSeed y 0 0 0 0) to ONE pool. --- Note that [x, y] must be contained in [1, n]. -ledgerDelegateManyKeysOnePool :: Word64 -> Word64 -> LedgerState B -> () -ledgerDelegateManyKeysOnePool x y state = testLEDGER state (txDelegate x y) ledgerEnv diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/ByronTranslation.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/ByronTranslation.hs deleted file mode 100644 index c171aae0f20..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/ByronTranslation.hs +++ /dev/null @@ -1,59 +0,0 @@ -{-# LANGUAGE GADTs #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Shelley.ByronTranslation (testGroupByronTranslation) where - -import qualified Cardano.Chain.Common as Byron -import qualified Cardano.Chain.UTxO as Byron -import Cardano.Ledger.Address -import Cardano.Ledger.Coin -import qualified Cardano.Ledger.Crypto as CryptoClass -import Cardano.Ledger.Shelley (ShelleyEra) -import Cardano.Ledger.Shelley.API.ByronTranslation -import Cardano.Ledger.Shelley.Core -import Test.Cardano.Ledger.Shelley.Arbitrary () -import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes (C_Crypto) -import Test.Tasty -import Test.Tasty.QuickCheck - -{------------------------------------------------------------------------------ - Top-level tests -------------------------------------------------------------------------------} - -testGroupByronTranslation :: TestTree -testGroupByronTranslation = - testGroup - "Translation from Byron to Shelley" - [ testProperty "translateTxOut correctness" prop_translateTxOut_correctness - ] - -{------------------------------------------------------------------------------ - Properties -------------------------------------------------------------------------------} - -prop_translateTxOut_correctness :: Byron.CompactTxOut -> Property -prop_translateTxOut_correctness compactTxOut = - translateTxOutByronToShelley - @C_Crypto - (Byron.fromCompactTxOut compactTxOut) - === translateCompactTxOutByronToShelley compactTxOut - -{------------------------------------------------------------------------------ - Reference implementation -------------------------------------------------------------------------------} - -translateTxOutByronToShelley :: - forall c. - CryptoClass.Crypto c => - Byron.TxOut -> - TxOut (ShelleyEra c) -translateTxOutByronToShelley (Byron.TxOut addr amount) = - mkBasicTxOut (translateAddr addr) (translateAmount amount) - where - translateAmount :: Byron.Lovelace -> Coin - translateAmount = Coin . Byron.lovelaceToInteger - - translateAddr :: Byron.Address -> Addr c - translateAddr = AddrBootstrap . BootstrapAddress diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/ConcreteCryptoTypes.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/ConcreteCryptoTypes.hs deleted file mode 100644 index c172fb92578..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/ConcreteCryptoTypes.hs +++ /dev/null @@ -1,59 +0,0 @@ -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} - -module Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes ( - Mock, - ExMock, - C_Crypto, - C, - TestCrypto, - StandardCrypto, -) -where - -import Cardano.Crypto.DSIGN (MockDSIGN, VerKeyDSIGN) -import qualified Cardano.Crypto.DSIGN.Class as DSIGN -import Cardano.Crypto.KES (MockKES) -import qualified Cardano.Crypto.KES.Class as KES -import Cardano.Crypto.Util (SignableRepresentation) -import qualified Cardano.Crypto.VRF as VRF -import Cardano.Ledger.BaseTypes (Seed) -import Cardano.Ledger.Crypto -import Cardano.Ledger.Shelley (ShelleyEra) -import Cardano.Protocol.TPraos.API (PraosCrypto) -import Test.Cardano.Protocol.Crypto.VRF.Fake (FakeVRF) - --- | Mocking constraints used in generators -type Mock c = - ( PraosCrypto c - , KES.Signable (KES c) ~ SignableRepresentation - , DSIGN.Signable (DSIGN c) ~ SignableRepresentation - , VRF.Signable (VRF c) Seed - ) - --- | Additional mocking constraints used in examples. -type ExMock c = - ( Mock c - , Num (DSIGN.SignKeyDSIGN (DSIGN c)) - , Num (VerKeyDSIGN (DSIGN c)) - , VRF c ~ FakeVRF - ) - -type C = ShelleyEra C_Crypto - -type TestCrypto = C_Crypto - -data C_Crypto - -instance Cardano.Ledger.Crypto.Crypto C_Crypto where - type HASH C_Crypto = HASH StandardCrypto - type ADDRHASH C_Crypto = ADDRHASH StandardCrypto - type DSIGN C_Crypto = MockDSIGN - type KES C_Crypto = MockKES 10 - type VRF C_Crypto = FakeVRF - -instance PraosCrypto C_Crypto diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Examples/Cast.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Examples/Cast.hs deleted file mode 100644 index 5c4eb1ff99f..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Examples/Cast.hs +++ /dev/null @@ -1,243 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - --- | --- Module : Test.Cardano.Ledger.Shelley.Examples.Cast --- Description : Cast of characters for Shelley ledger examples --- --- The cast of Characters for Shelley Ledger Examples --- (excluding the genesis/cord nodes, --- which are in Test.Cardano.Ledger.Shelley.Examples.Federation). -module Test.Cardano.Ledger.Shelley.Examples.Cast ( - alicePay, - aliceStake, - alicePHK, - aliceSHK, - aliceAddr, - alicePtrAddr, - alicePoolKeys, - alicePoolParams, - aliceVRFKeyHash, - bobPay, - bobStake, - bobSHK, - bobAddr, - bobPoolKeys, - bobPoolParams, - bobVRFKeyHash, - carlPay, - carlStake, - carlSHK, - carlAddr, - dariaPay, - dariaStake, - dariaSHK, - dariaAddr, -) -where - -import Cardano.Ledger.Address (Addr (..), RewardAccount (..)) -import Cardano.Ledger.BaseTypes ( - Network (..), - StrictMaybe (..), - textToUrl, - ) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Credential ( - Credential (..), - Ptr (..), - StakeReference (..), - ) -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Keys ( - Hash, - KeyRole (..), - VerKeyVRF, - hashKey, - hashVerKeyVRF, - ) -import Cardano.Ledger.PoolParams ( - PoolMetadata (..), - PoolParams (..), - ) -import Cardano.Ledger.Slot (SlotNo (..)) -import Cardano.Protocol.TPraos.OCert (KESPeriod (..)) -import qualified Data.ByteString.Char8 as BS (pack) -import qualified Data.List.NonEmpty as NE -import Data.Maybe (fromJust) -import qualified Data.Sequence.Strict as StrictSeq -import qualified Data.Set as Set -import Test.Cardano.Ledger.Core.KeyPair (KeyPair (..), mkAddr) -import Test.Cardano.Ledger.Shelley.Generator.Core ( - AllIssuerKeys (..), - VRFKeyPair (..), - ) -import Test.Cardano.Ledger.Shelley.Utils ( - RawSeed (..), - mkKESKeyPair, - mkKeyPair, - mkVRFKeyPair, - unsafeBoundRational, - ) - --- | Alice's payment key pair -alicePay :: Crypto c => KeyPair 'Payment c -alicePay = KeyPair vk sk - where - (sk, vk) = mkKeyPair (RawSeed 0 0 0 0 0) - --- | Alice's stake key pair -aliceStake :: Crypto c => KeyPair 'Staking c -aliceStake = KeyPair vk sk - where - (sk, vk) = mkKeyPair (RawSeed 1 1 1 1 1) - --- | Alice's stake pool keys (cold keys, VRF keys, hot KES keys) -alicePoolKeys :: Crypto c => AllIssuerKeys c 'StakePool -alicePoolKeys = - AllIssuerKeys - (KeyPair vkCold skCold) - (mkVRFKeyPair (RawSeed 1 0 0 0 2)) - ((KESPeriod 0, mkKESKeyPair (RawSeed 1 0 0 0 3)) NE.:| []) - (hashKey vkCold) - where - (skCold, vkCold) = mkKeyPair (RawSeed 1 0 0 0 1) - --- | Alice's base address -aliceAddr :: Crypto c => Addr c -aliceAddr = mkAddr (alicePay, aliceStake) - --- | Alice's payment credential -alicePHK :: Crypto c => Credential 'Payment c -alicePHK = (KeyHashObj . hashKey . vKey) alicePay - --- | Alice's stake credential -aliceSHK :: Crypto c => Credential 'Staking c -aliceSHK = (KeyHashObj . hashKey . vKey) aliceStake - --- | Alice's base address -alicePtrAddr :: Crypto c => Addr c -alicePtrAddr = Addr Testnet alicePHK (StakeRefPtr $ Ptr (SlotNo 10) minBound minBound) - --- | Alice's stake pool parameters -alicePoolParams :: forall c. Crypto c => PoolParams c -alicePoolParams = - PoolParams - { ppId = hashKey . vKey $ aikCold alicePoolKeys - , ppVrf = hashVerKeyVRF . vrfVerKey $ aikVrf (alicePoolKeys @c) - , ppPledge = Coin 1 - , ppCost = Coin 5 - , ppMargin = unsafeBoundRational 0.1 - , ppRewardAccount = RewardAccount Testnet aliceSHK - , ppOwners = Set.singleton $ (hashKey . vKey) aliceStake - , ppRelays = StrictSeq.empty - , ppMetadata = - SJust $ - PoolMetadata - { pmUrl = fromJust $ textToUrl 64 "alice.pool" - , pmHash = BS.pack "{}" - } - } - --- | Alice's VRF key hash -aliceVRFKeyHash :: - forall c. - Crypto c => - Hash c (VerKeyVRF c) -aliceVRFKeyHash = hashVerKeyVRF (vrfVerKey $ aikVrf (alicePoolKeys @c)) - --- | Bob's payment key pair -bobPay :: Crypto c => KeyPair 'Payment c -bobPay = KeyPair vk sk - where - (sk, vk) = mkKeyPair (RawSeed 2 2 2 2 2) - --- | Bob's stake key pair -bobStake :: Crypto c => KeyPair 'Staking c -bobStake = KeyPair vk sk - where - (sk, vk) = mkKeyPair (RawSeed 3 3 3 3 3) - --- | Bob's address -bobAddr :: Crypto c => Addr c -bobAddr = mkAddr (bobPay, bobStake) - --- | Bob's stake credential -bobSHK :: Crypto c => Credential 'Staking c -bobSHK = (KeyHashObj . hashKey . vKey) bobStake - --- | Bob's stake pool keys (cold keys, VRF keys, hot KES keys) -bobPoolKeys :: Crypto c => AllIssuerKeys c 'StakePool -bobPoolKeys = - AllIssuerKeys - (KeyPair vkCold skCold) - (mkVRFKeyPair (RawSeed 2 0 0 0 2)) - ((KESPeriod 0, mkKESKeyPair (RawSeed 2 0 0 0 3)) NE.:| []) - (hashKey vkCold) - where - (skCold, vkCold) = mkKeyPair (RawSeed 2 0 0 0 1) - --- | Bob's stake pool parameters -bobPoolParams :: forall c. Crypto c => PoolParams c -bobPoolParams = - PoolParams - { ppId = hashKey . vKey $ aikCold bobPoolKeys - , ppVrf = hashVerKeyVRF . vrfVerKey $ aikVrf (bobPoolKeys @c) - , ppPledge = Coin 2 - , ppCost = Coin 1 - , ppMargin = unsafeBoundRational 0.1 - , ppRewardAccount = RewardAccount Testnet bobSHK - , ppOwners = Set.singleton $ hashKey (vKey bobStake) - , ppRelays = StrictSeq.empty - , ppMetadata = SNothing - } - --- | Bob's VRF key hash -bobVRFKeyHash :: - forall c. - Crypto c => - Hash c (VerKeyVRF c) -bobVRFKeyHash = hashVerKeyVRF (vrfVerKey $ aikVrf (bobPoolKeys @c)) - --- Carl's payment key pair -carlPay :: Crypto c => KeyPair 'Payment c -carlPay = KeyPair vk sk - where - (sk, vk) = mkKeyPair (RawSeed 4 4 4 4 4) - --- | Carl's stake key pair -carlStake :: Crypto c => KeyPair 'Staking c -carlStake = KeyPair vk sk - where - (sk, vk) = mkKeyPair (RawSeed 5 5 5 5 5) - --- | Carl's address -carlAddr :: Crypto c => Addr c -carlAddr = mkAddr (carlPay, carlStake) - --- | Carl's stake credential -carlSHK :: Crypto c => Credential 'Staking c -carlSHK = (KeyHashObj . hashKey . vKey) carlStake - --- | Daria's payment key pair -dariaPay :: Crypto c => KeyPair 'Payment c -dariaPay = KeyPair vk sk - where - (sk, vk) = mkKeyPair (RawSeed 6 6 6 6 6) - --- | Daria's stake key pair -dariaStake :: Crypto c => KeyPair 'Staking c -dariaStake = KeyPair vk sk - where - (sk, vk) = mkKeyPair (RawSeed 7 7 7 7 7) - --- | Daria's address -dariaAddr :: Crypto c => Addr c -dariaAddr = mkAddr (dariaPay, dariaStake) - --- | Daria's stake credential -dariaSHK :: Crypto c => Credential 'Staking c -dariaSHK = (KeyHashObj . hashKey . vKey) dariaStake diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Examples/Consensus.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Examples/Consensus.hs deleted file mode 100644 index 87bbb1879ce..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Examples/Consensus.hs +++ /dev/null @@ -1,575 +0,0 @@ -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} - -module Test.Cardano.Ledger.Shelley.Examples.Consensus where - -import Cardano.Crypto.DSIGN as DSIGN -import Cardano.Crypto.Hash as Hash -import Cardano.Crypto.Seed as Seed -import Cardano.Crypto.VRF as VRF -import Cardano.Ledger.AuxiliaryData -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.Coin -import Cardano.Ledger.Crypto -import Cardano.Ledger.EpochBoundary -import Cardano.Ledger.Keys hiding (KeyPair, vKey) -import Cardano.Ledger.PoolDistr -import Cardano.Ledger.SafeHash -import Cardano.Ledger.Shelley (Shelley) -import Cardano.Ledger.Shelley.API hiding (KeyPair, vKey) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState -import Cardano.Ledger.Shelley.Rules -import Cardano.Ledger.Shelley.Translation (emptyFromByronTranslationContext) -import Cardano.Ledger.Shelley.TxWits -import Cardano.Protocol.TPraos.API -import Cardano.Protocol.TPraos.BHeader -import Cardano.Protocol.TPraos.OCert -import Cardano.Protocol.TPraos.Rules.Prtcl -import Cardano.Protocol.TPraos.Rules.Tickn -import Cardano.Slotting.EpochInfo -import qualified Data.ByteString as Strict -import Data.Coerce (coerce) -import Data.Default.Class -import qualified Data.List.NonEmpty as NE -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Maybe (fromJust) -import Data.Proxy -import Data.Sequence.Strict (StrictSeq) -import qualified Data.Sequence.Strict as StrictSeq -import Data.Set (Set) -import qualified Data.Set as Set -import Data.Text (pack) -import Data.Time -import Data.Word (Word64, Word8) -import Lens.Micro ((&), (.~)) -import Test.Cardano.Ledger.Binary.Random (mkDummyHash) -import Test.Cardano.Ledger.Core.KeyPair (KeyPair (..), mkWitnessesVKey) -import Test.Cardano.Ledger.Shelley.Generator.Core -import Test.Cardano.Ledger.Shelley.Utils hiding (mkVRFKeyPair) - -type KeyPairWits era = [KeyPair 'Witness (EraCrypto era)] - -{------------------------------------------------------------------------------- - ShelleyLedgerExamples --------------------------------------------------------------------------------} - -data ShelleyResultExamples era = ShelleyResultExamples - { srePParams :: PParams era - , sreProposedPPUpdates :: ProposedPPUpdates era - , srePoolDistr :: PoolDistr (EraCrypto era) - , sreNonMyopicRewards :: - Map - (Either Coin (Credential 'Staking (EraCrypto era))) - (Map (KeyHash 'StakePool (EraCrypto era)) Coin) - , sreShelleyGenesis :: ShelleyGenesis (EraCrypto era) - } - -deriving instance - ( Eq (PParams era) - , Eq (PParamsUpdate era) - , Era era - ) => - Eq (ShelleyResultExamples era) - -data ShelleyLedgerExamples era = ShelleyLedgerExamples - { sleBlock :: Block (BHeader (EraCrypto era)) era - , sleHashHeader :: HashHeader (EraCrypto era) - , sleTx :: Tx era - , sleApplyTxError :: ApplyTxError era - , sleRewardsCredentials :: Set (Either Coin (Credential 'Staking (EraCrypto era))) - , sleResultExamples :: ShelleyResultExamples era - , sleNewEpochState :: NewEpochState era - , sleChainDepState :: ChainDepState (EraCrypto era) - , sleTranslationContext :: TranslationContext era - } - -deriving instance - ( EraTx era - , EraGov era - , Eq (TxSeq era) - , Eq (PredicateFailure (EraRule "LEDGER" era)) - , Eq (StashedAVVMAddresses era) - , Eq (TranslationContext era) - ) => - Eq (ShelleyLedgerExamples era) - -{------------------------------------------------------------------------------- - Default constructor --------------------------------------------------------------------------------} - -type ShelleyBasedEra' era = - ( PraosCrypto (EraCrypto era) - ) - -defaultShelleyLedgerExamples :: - forall era. - ( ShelleyBasedEra' era - , EraSegWits era - , EraGov era - , PredicateFailure (EraRule "DELEGS" era) ~ ShelleyDelegsPredFailure era - , PredicateFailure (EraRule "LEDGER" era) ~ ShelleyLedgerPredFailure era - , Default (StashedAVVMAddresses era) - , ProtVerAtMost era 4 - ) => - (TxBody era -> KeyPairWits era -> TxWits era) -> - (ShelleyTx era -> Tx era) -> - Value era -> - TxBody era -> - TxAuxData era -> - TranslationContext era -> - ShelleyLedgerExamples era -defaultShelleyLedgerExamples mkWitnesses mkAlonzoTx value txBody auxData translationContext = - ShelleyLedgerExamples - { sleBlock = exampleShelleyLedgerBlock (mkAlonzoTx tx) - , sleHashHeader = exampleHashHeader (Proxy @era) - , sleTx = mkAlonzoTx tx - , sleApplyTxError = - ApplyTxError . pure . DelegsFailure $ - DelegateeNotRegisteredDELEG @era (mkKeyHash 1) - , sleRewardsCredentials = - Set.fromList - [ Left (Coin 100) - , Right (ScriptHashObj (mkScriptHash 1)) - , Right (KeyHashObj (mkKeyHash 2)) - ] - , sleResultExamples = resultExamples - , sleNewEpochState = - exampleNewEpochState - value - emptyPParams - (emptyPParams & ppMinUTxOValueL .~ Coin 1) - , sleChainDepState = exampleLedgerChainDepState 1 - , sleTranslationContext = translationContext - } - where - tx = exampleTx mkWitnesses txBody auxData - - resultExamples = - ShelleyResultExamples - { srePParams = def - , sreProposedPPUpdates = exampleProposedPParamsUpdates - , srePoolDistr = examplePoolDistr - , sreNonMyopicRewards = exampleNonMyopicRewards - , sreShelleyGenesis = testShelleyGenesis - } - -{------------------------------------------------------------------------------- - Helper constructors --------------------------------------------------------------------------------} - -exampleShelleyLedgerBlock :: - forall era. - (EraSegWits era, PraosCrypto (EraCrypto era)) => - Tx era -> - Block (BHeader (EraCrypto era)) era -exampleShelleyLedgerBlock tx = Block blockHeader blockBody - where - keys :: AllIssuerKeys (EraCrypto era) 'StakePool - keys = exampleKeys - - hotKey = kesSignKey $ snd $ NE.head $ aikHot keys - KeyPair vKeyCold _ = aikCold keys - - blockHeader :: BHeader (EraCrypto era) - blockHeader = BHeader blockHeaderBody (signedKES () 0 blockHeaderBody hotKey) - - blockHeaderBody :: BHBody (EraCrypto era) - blockHeaderBody = - BHBody - { bheaderBlockNo = BlockNo 3 - , bheaderSlotNo = SlotNo 9 - , bheaderPrev = BlockHash (HashHeader (mkDummyHash (2 :: Int))) - , bheaderVk = coerceKeyRole vKeyCold - , bheaderVrfVk = vrfVerKey $ aikVrf keys - , bheaderEta = mkCertifiedVRF (mkBytes 0) (vrfSignKey $ aikVrf keys) - , bheaderL = mkCertifiedVRF (mkBytes 1) (vrfSignKey $ aikVrf keys) - , bsize = 2345 - , bhash = hashTxSeq @era blockBody - , bheaderOCert = mkOCert keys 0 (KESPeriod 0) - , bprotver = ProtVer (natVersion @2) 0 - } - - blockBody = toTxSeq @era (StrictSeq.fromList [tx]) - - mkBytes :: Int -> Cardano.Ledger.BaseTypes.Seed - mkBytes = Seed . mkDummyHash @Blake2b_256 - -exampleHashHeader :: - forall era. - ShelleyBasedEra' era => - Proxy era -> - HashHeader (EraCrypto era) -exampleHashHeader _ = coerce $ mkDummyHash @(HASH (EraCrypto era)) (0 :: Int) - -mkKeyHash :: forall c discriminator. Crypto c => Int -> KeyHash discriminator c -mkKeyHash = KeyHash . mkDummyHash @(ADDRHASH c) - -mkScriptHash :: forall c. Crypto c => Int -> ScriptHash c -mkScriptHash = ScriptHash . mkDummyHash @(ADDRHASH c) - --- | This is not a valid transaction. We don't care, we are only interested in --- serialisation, not validation. -exampleTx :: - forall era. - EraTx era => - (TxBody era -> KeyPairWits era -> TxWits era) -> - TxBody era -> - TxAuxData era -> - ShelleyTx era -exampleTx mkWitnesses txBody auxData = - ShelleyTx txBody (mkWitnesses txBody keyPairWits) (SJust auxData) - where - keyPairWits :: KeyPairWits era - keyPairWits = - [ asWitness examplePayKey - , asWitness exampleStakeKey - , asWitness $ aikCold (exampleKeys @(EraCrypto era) @'StakePool) - ] - -exampleProposedPParamsUpdates :: - EraPParams era => - ProposedPPUpdates era -exampleProposedPParamsUpdates = - ProposedPPUpdates $ - Map.singleton - (mkKeyHash 0) - (emptyPParamsUpdate & ppuKeyDepositL .~ SJust (Coin 100)) - -examplePoolDistr :: forall c. PraosCrypto c => PoolDistr c -examplePoolDistr = - PoolDistr $ - Map.fromList - [ - ( mkKeyHash 1 - , IndividualPoolStake - 1 - (hashVerKeyVRF (vrfVerKey (aikVrf (exampleKeys @c)))) - ) - ] - -exampleNonMyopicRewards :: - forall c. - Crypto c => - Map - (Either Coin (Credential 'Staking c)) - (Map (KeyHash 'StakePool c) Coin) -exampleNonMyopicRewards = - Map.fromList - [ (Left (Coin 100), Map.singleton (mkKeyHash 2) (Coin 3)) - , (Right (ScriptHashObj (mkScriptHash 1)), Map.empty) - , (Right (KeyHashObj (mkKeyHash 2)), Map.singleton (mkKeyHash 3) (Coin 9)) - ] - --- | These are dummy values. -testShelleyGenesis :: Crypto c => ShelleyGenesis c -testShelleyGenesis = - ShelleyGenesis - { sgSystemStart = UTCTime (fromGregorian 2020 5 14) 0 - , sgNetworkMagic = 0 - , sgNetworkId = Testnet - , -- Chosen to match activeSlotCoeff - sgActiveSlotsCoeff = unsafeBoundRational 0.9 - , sgSecurityParam = securityParameter testGlobals - , sgEpochLength = runIdentity $ epochInfoSize testEpochInfo 0 - , sgSlotsPerKESPeriod = slotsPerKESPeriod testGlobals - , sgMaxKESEvolutions = maxKESEvo testGlobals - , -- Not important - sgSlotLength = secondsToNominalDiffTimeMicro 2 - , sgUpdateQuorum = quorum testGlobals - , sgMaxLovelaceSupply = maxLovelaceSupply testGlobals - , sgProtocolParams = emptyPParams - , sgGenDelegs = Map.empty - , sgInitialFunds = mempty - , sgStaking = emptyGenesisStaking - } - --- | This is probably not a valid ledger. We don't care, we are only --- interested in serialisation, not validation. -exampleNewEpochState :: - forall era. - ( EraTxOut era - , EraGov era - , ShelleyBasedEra' era - , Default (StashedAVVMAddresses era) - ) => - Value era -> - PParams era -> - PParams era -> - NewEpochState era -exampleNewEpochState value ppp pp = - NewEpochState - { nesEL = EpochNo 0 - , nesBprev = BlocksMade (Map.singleton (mkKeyHash 1) 10) - , nesBcur = BlocksMade (Map.singleton (mkKeyHash 2) 3) - , nesEs = epochState - , nesRu = SJust rewardUpdate - , nesPd = examplePoolDistr - , stashedAVVMAddresses = def - } - where - epochState :: EpochState era - epochState = - EpochState - { esAccountState = - AccountState - { asTreasury = Coin 10000 - , asReserves = Coin 1000 - } - , esSnapshots = emptySnapShots - , esLState = - LedgerState - { lsUTxOState = - UTxOState - { utxosUtxo = - UTxO $ - Map.fromList - [ - ( TxIn (TxId (mkDummySafeHash Proxy 1)) minBound - , mkBasicTxOut addr value - ) - ] - , utxosDeposited = Coin 1000 - , utxosFees = Coin 1 - , utxosGovState = emptyGovState - , utxosStakeDistr = mempty - , utxosDonation = mempty - } - , lsCertState = def - } - , esNonMyopic = def - } - & prevPParamsEpochStateL .~ ppp - & curPParamsEpochStateL .~ pp - where - addr :: Addr (EraCrypto era) - addr = - Addr - Testnet - (keyToCredential examplePayKey) - (StakeRefBase (keyToCredential exampleStakeKey)) - - rewardUpdate :: PulsingRewUpdate (EraCrypto era) - rewardUpdate = - startStep @era - (EpochSize 432000) - (BlocksMade (Map.singleton (mkKeyHash 1) 10)) - epochState - (Coin 1000) - (activeSlotCoeff testGlobals) - 10 - -exampleLedgerChainDepState :: forall c. Crypto c => Word64 -> ChainDepState c -exampleLedgerChainDepState seed = - ChainDepState - { csProtocol = - PrtclState - ( Map.fromList - [ (mkKeyHash 1, 1) - , (mkKeyHash 2, 2) - ] - ) - (mkNonceFromNumber seed) - (mkNonceFromNumber seed) - , csTickn = - TicknState - NeutralNonce - (mkNonceFromNumber seed) - , csLabNonce = - mkNonceFromNumber seed - } - -testEpochInfo :: EpochInfo Identity -testEpochInfo = epochInfoPure testGlobals - -mkDummyAnchor :: Crypto c => Int -> Anchor c -mkDummyAnchor n = - Anchor - { anchorUrl = fromJust . textToUrl 64 $ "dummy@" <> pack (show n) - , anchorDataHash = mkDummySafeHash Proxy n - } - -{------------------------------------------------------------------------------- - Shelley era specific functions --------------------------------------------------------------------------------} - --- | ShelleyLedgerExamples for Shelley era -ledgerExamplesShelley :: ShelleyLedgerExamples Shelley -ledgerExamplesShelley = - defaultShelleyLedgerExamples - (mkWitnessesPreAlonzo (Proxy @Shelley)) - id - exampleCoin - exampleTxBodyShelley - exampleAuxiliaryDataShelley - emptyFromByronTranslationContext - -mkWitnessesPreAlonzo :: - ( EraTx era - , DSIGN.Signable - (DSIGN (EraCrypto era)) - (Hash.Hash (HASH (EraCrypto era)) EraIndependentTxBody) - ) => - Proxy era -> - TxBody era -> - KeyPairWits era -> - ShelleyTxWits era -mkWitnessesPreAlonzo _ txBody keyPairWits = - mempty - { addrWits = - mkWitnessesVKey (coerce (hashAnnotated txBody)) keyPairWits - } - -exampleCoin :: Coin -exampleCoin = Coin 10 - -exampleTxBodyShelley :: ShelleyTxBody Shelley -exampleTxBodyShelley = - ShelleyTxBody - exampleTxIns - ( StrictSeq.fromList - [ ShelleyTxOut (mkAddr (examplePayKey, exampleStakeKey)) (Coin 100000) - ] - ) - exampleCerts - exampleWithdrawals - (Coin 3) - (SlotNo 10) - (SJust (Update exampleProposedPPUpdates (EpochNo 0))) - (SJust auxiliaryDataHash) - where - -- Dummy hash to decouple from the auxiliaryData in 'exampleTx'. - auxiliaryDataHash :: AuxiliaryDataHash StandardCrypto - auxiliaryDataHash = - AuxiliaryDataHash $ mkDummySafeHash (Proxy @StandardCrypto) 30 - -exampleAuxDataMap :: Map Word64 Metadatum -exampleAuxDataMap = - Map.fromList - [ (1, S "string") - , (2, B "bytes") - , (3, List [I 1, I 2]) - , (4, Map [(I 3, B "b")]) - ] - -exampleAuxiliaryDataShelley :: TxAuxData Shelley -exampleAuxiliaryDataShelley = ShelleyTxAuxData exampleAuxDataMap - -exampleTxIns :: Crypto c => Set (TxIn c) -exampleTxIns = - Set.fromList - [ TxIn (TxId (mkDummySafeHash Proxy 1)) minBound - ] - -exampleCerts :: (ShelleyEraTxCert era, ProtVerAtMost era 8) => StrictSeq (TxCert era) -exampleCerts = - StrictSeq.fromList - [ RegTxCert (keyToCredential exampleStakeKey) - , RegPoolTxCert examplePoolParams - , MirTxCert $ - MIRCert ReservesMIR $ - StakeAddressesMIR $ - Map.fromList - [ (keyToCredential (mkDSIGNKeyPair 2), DeltaCoin 110) - ] - ] - -exampleWithdrawals :: Crypto c => Withdrawals c -exampleWithdrawals = - Withdrawals $ - Map.fromList - [ (ppRewardAccount examplePoolParams, Coin 100) - ] - -exampleProposedPPUpdates :: - EraPParams era => - ProposedPPUpdates era -exampleProposedPPUpdates = - ProposedPPUpdates $ - Map.singleton - (mkKeyHash 1) - (emptyPParamsUpdate & ppuMaxBHSizeL .~ SJust 4000) - -examplePayKey :: Crypto c => KeyPair 'Payment c -examplePayKey = mkDSIGNKeyPair 0 - -exampleStakeKey :: Crypto c => KeyPair 'Staking c -exampleStakeKey = mkDSIGNKeyPair 1 - -exampleKeys :: forall c r. Crypto c => AllIssuerKeys c r -exampleKeys = - AllIssuerKeys - coldKey - (mkVRFKeyPair (Proxy @c) 1) - ((KESPeriod 0, mkKESKeyPair (RawSeed 1 0 0 0 3)) NE.:| []) - (hashKey (vKey coldKey)) - where - coldKey = mkDSIGNKeyPair 1 - -keyToCredential :: Crypto c => KeyPair r c -> Credential r c -keyToCredential = KeyHashObj . hashKey . vKey - --- | @mkKeyPair'@ from @Test.Cardano.Ledger.Shelley.Utils@ doesn't work for real --- crypto: --- -mkDSIGNKeyPair :: - forall c kd. - DSIGNAlgorithm (DSIGN c) => - Word8 -> - KeyPair kd c -mkDSIGNKeyPair byte = KeyPair (VKey $ DSIGN.deriveVerKeyDSIGN sk) sk - where - seed = - Seed.mkSeedFromBytes $ - Strict.replicate - (fromIntegral (DSIGN.seedSizeDSIGN (Proxy @(DSIGN c)))) - byte - - sk = DSIGN.genKeyDSIGN seed - -mkVRFKeyPair :: - forall c. - Crypto c => - Proxy c -> - Word8 -> - VRFKeyPair c -mkVRFKeyPair _ byte = VRFKeyPair sk (VRF.deriveVerKeyVRF sk) - where - seed = - Seed.mkSeedFromBytes $ - Strict.replicate - (fromIntegral (VRF.seedSizeVRF (Proxy @(VRF c)))) - byte - - sk = VRF.genKeyVRF seed - -examplePoolParams :: forall c. Crypto c => PoolParams c -examplePoolParams = - PoolParams - { ppId = hashKey $ vKey $ aikCold poolKeys - , ppVrf = hashVerKeyVRF $ vrfVerKey $ aikVrf poolKeys - , ppPledge = Coin 1 - , ppCost = Coin 5 - , ppMargin = unsafeBoundRational 0.1 - , ppRewardAccount = RewardAccount Testnet (keyToCredential exampleStakeKey) - , ppOwners = Set.singleton $ hashKey $ vKey exampleStakeKey - , ppRelays = StrictSeq.empty - , ppMetadata = - SJust $ - PoolMetadata - { pmUrl = fromJust $ textToUrl 64 "consensus.pool" - , pmHash = "{}" - } - } - where - poolKeys = exampleKeys @c @'StakePool diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Examples/Federation.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Examples/Federation.hs deleted file mode 100644 index 45f2a00c645..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Examples/Federation.hs +++ /dev/null @@ -1,155 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - --- | --- Module : Test.Cardano.Ledger.Shelley.Examples.Federation --- Description : Core Nodes for Shelley ledger examples --- --- The genesis/core nodes for Shelley Ledger Examples. -module Test.Cardano.Ledger.Shelley.Examples.Federation ( - numCoreNodes, - coreNodeSK, - coreNodeVK, - coreNodeIssuerKeys, - coreNodeKeysBySchedule, - genDelegs, -) -where - -import Cardano.Ledger.BaseTypes (Globals (..)) -import Cardano.Ledger.Core (EraCrypto, EraPParams (..), PParams (..)) -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Keys ( - GenDelegPair (..), - KeyHash (..), - KeyRole (..), - SignKeyDSIGN, - VKey (..), - coerceKeyRole, - hashKey, - hashVerKeyVRF, - ) -import Cardano.Ledger.Slot (SlotNo (..)) -import Cardano.Protocol.TPraos.OCert (KESPeriod (..)) -import Cardano.Protocol.TPraos.Rules.Overlay ( - OBftSlot (..), - lookupInOverlaySchedule, - ) -import qualified Data.List -import qualified Data.List.NonEmpty as NE -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Word (Word64) -import GHC.Stack (HasCallStack) -import Lens.Micro ((^.)) -import Test.Cardano.Ledger.Core.KeyPair (KeyPair (..), vKey) -import Test.Cardano.Ledger.Shelley.Generator.Core ( - AllIssuerKeys (..), - VRFKeyPair (..), - ) -import Test.Cardano.Ledger.Shelley.Utils - --- | Number of Core Node -numCoreNodes :: Word64 -numCoreNodes = 7 - -mkAllCoreNodeKeys :: - Crypto c => - Word64 -> - AllIssuerKeys c r -mkAllCoreNodeKeys w = - AllIssuerKeys - (KeyPair vkCold skCold) - (mkVRFKeyPair (RawSeed w 0 0 0 2)) - ((KESPeriod 0, mkKESKeyPair (RawSeed w 0 0 0 3)) NE.:| []) - (hashKey vkCold) - where - (skCold, vkCold) = mkKeyPair (RawSeed w 0 0 0 1) - -coreNodes :: - forall c. - Crypto c => - [ ( (SignKeyDSIGN c, VKey 'Genesis c) - , AllIssuerKeys c 'GenesisDelegate - ) - ] -coreNodes = - [ (mkGenKey (RawSeed x 0 0 0 0), mkAllCoreNodeKeys x) - | x <- [101 .. 100 + numCoreNodes] - ] - --- === Signing (Secret) Keys --- Retrieve the signing key for a core node by providing --- a number in the range @[0, ... ('numCoreNodes'-1)]@. -coreNodeSK :: forall c. Crypto c => Int -> SignKeyDSIGN c -coreNodeSK = fst . fst . (coreNodes @c !!) - --- | === Verification (Public) Keys --- Retrieve the verification key for a core node by providing --- a number in the range @[0, ... ('numCoreNodes'-1)]@. -coreNodeVK :: forall c. Crypto c => Int -> VKey 'Genesis c -coreNodeVK = snd . fst . (coreNodes @c !!) - --- | === Block Issuer Keys --- Retrieve the block issuer keys (cold, VRF, and hot KES keys) --- for a core node by providing --- a number in the range @[0, ... ('numCoreNodes'-1)]@. -coreNodeIssuerKeys :: - forall c. - Crypto c => - Int -> - AllIssuerKeys c 'GenesisDelegate -coreNodeIssuerKeys = snd . (coreNodes @c !!) - --- | === Keys by Overlay Schedule --- Retrieve all the keys associated with a core node --- for a given slot and protocol parameters. --- It will return an error if there is not a core node scheduled --- for the given slot. -coreNodeKeysBySchedule :: - forall era. - (HasCallStack, EraPParams era) => - PParams era -> - Word64 -> - AllIssuerKeys (EraCrypto era) 'GenesisDelegate -coreNodeKeysBySchedule pp slot = - case lookupInOverlaySchedule - firstSlot - (Map.keysSet genDelegs) - (pp ^. ppDG) - (activeSlotCoeff testGlobals) - slot' of - Nothing -> error $ "coreNodesForSlot: Cannot find keys for slot " <> show slot - Just NonActiveSlot -> error $ "coreNodesForSlot: Non-active slot " <> show slot - Just (ActiveSlot gkh) -> - case Data.List.find (\((_, gk), _) -> hashKey gk == gkh) coreNodes of - Nothing -> - error $ - "coreNodesForSlot: Cannot find key hash in coreNodes: " - <> show gkh - Just ((_, _), ak) -> ak - where - slot' = SlotNo slot - firstSlot = slotFromEpoch . epochFromSlotNo $ slot' - --- | === Genesis Delegation Mapping --- The map from genesis/core node (verification) key hashes --- to their delegate's (verification) key hash. -genDelegs :: - forall c. - Crypto c => - Map (KeyHash 'Genesis c) (GenDelegPair c) -genDelegs = - Map.fromList - [ ( hashKey $ snd gkey - , ( GenDelegPair - (coerceKeyRole . hashKey . vKey $ aikCold pkeys) - (hashVerKeyVRF . vrfVerKey $ aikVrf pkeys) - ) - ) - | (gkey, pkeys) <- coreNodes - ] diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Block.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Block.hs deleted file mode 100644 index 804a60546ba..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Block.hs +++ /dev/null @@ -1,308 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TupleSections #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Test.Cardano.Ledger.Shelley.Generator.Block ( - genBlock, - genBlockWithTxGen, - tickChainState, -) -where - -import qualified Cardano.Crypto.VRF as VRF -import Cardano.Ledger.BHeaderView (bhviewBSize, bhviewHSize) -import Cardano.Ledger.BaseTypes (UnitInterval) -import Cardano.Ledger.Crypto (VRF) -import Cardano.Ledger.Shelley.API hiding (vKey) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState (curPParamsEpochStateL) -import Cardano.Ledger.Slot (SlotNo (..)) -import Cardano.Protocol.TPraos.API -import Cardano.Protocol.TPraos.BHeader ( - BHeader (..), - LastAppliedBlock (..), - hashHeaderToNonce, - makeHeaderView, - mkSeed, - seedL, - ) -import Cardano.Protocol.TPraos.OCert (KESPeriod (..), OCertEnv (..), currentIssueNo, kesPeriod) -import Cardano.Protocol.TPraos.Rules.Overlay (OBftSlot (..), lookupInOverlaySchedule) -import Cardano.Protocol.TPraos.Rules.Prtcl (PrtclState (..)) -import Cardano.Protocol.TPraos.Rules.Tickn (TicknState (..)) -import Cardano.Slotting.Slot (WithOrigin (..)) -import Control.SetAlgebra (dom, eval) -import Data.Coerce (coerce) -import Data.Foldable (toList) -import qualified Data.List as List (find) -import qualified Data.List.NonEmpty as NE -import qualified Data.Map.Strict as Map -import Data.Maybe (catMaybes, fromMaybe) -import Data.Sequence (Seq) -import qualified Data.Set as Set -import Lens.Micro ((^.)) -import Lens.Micro.Extras (view) -import Test.Cardano.Ledger.Core.KeyPair (vKey) -import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes ( - Mock, - ) -import Test.Cardano.Ledger.Shelley.Generator.Core ( - AllIssuerKeys (..), - GenEnv (..), - KeySpace (..), - getKESPeriodRenewalNo, - mkBlock, - mkOCert, - ) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (EraGen (..), MinLEDGER_STS) -import Test.Cardano.Ledger.Shelley.Generator.Trace.Ledger () -import Test.Cardano.Ledger.Shelley.Rules.Chain (ChainState (..)) -import Test.Cardano.Ledger.Shelley.Utils ( - epochFromSlotNo, - maxKESIterations, - runShelleyBase, - slotFromEpoch, - testGlobals, - ) -import Test.Cardano.Protocol.TPraos.Create (VRFKeyPair (..)) -import Test.Control.State.Transition.Trace.Generator.QuickCheck (sigGen) -import qualified Test.Control.State.Transition.Trace.Generator.QuickCheck as QC -import Test.QuickCheck (Gen, discard) -import qualified Test.QuickCheck as QC (choose) - --- ====================================================== - --- | Type alias for a transaction generator -type TxGen era = - PParams era -> - AccountState -> - LedgerState era -> - SlotNo -> - Gen (Seq (Tx era)) - --- | Generate a valid block. -genBlock :: - forall era. - ( MinLEDGER_STS era - , ApplyBlock era - , Mock (EraCrypto era) - , GetLedgerView era - , QC.HasTrace (EraRule "LEDGERS" era) (GenEnv era) - , EraGen era - ) => - GenEnv era -> - ChainState era -> - Gen (Block (BHeader (EraCrypto era)) era) -genBlock ge = genBlockWithTxGen genTxs ge - where - genTxs :: TxGen era - genTxs pp reserves ls s = do - let ledgerEnv = LedgersEnv @era s pp reserves - block <- sigGen @(EraRule "LEDGERS" era) ge ledgerEnv ls - genEraTweakBlock @era pp block - -genBlockWithTxGen :: - forall era. - ( Mock (EraCrypto era) - , GetLedgerView era - , ApplyBlock era - , EraGen era - ) => - TxGen era -> - GenEnv era -> - ChainState era -> - Gen (Block (BHeader (EraCrypto era)) era) -genBlockWithTxGen - genTxs - ge@(GenEnv KeySpace_ {ksStakePools, ksIndexedGenDelegates} _scriptspace _) - origChainState = do - -- Firstly, we must choose a slot in which to lead. - -- Caution: the number of slots we jump here will affect the number - -- of epochs that a chain of blocks will span - firstConsideredSlot <- (slot +) . SlotNo <$> QC.choose (5, 10) - let (nextSlot, chainSt, issuerKeys) = - fromMaybe - (error "Cannot find a slot to create a block in") - $ selectNextSlotWithLeader ge origChainState firstConsideredSlot - - -- Now we need to compute the KES period and get the set of hot keys. - let NewEpochState _ _ _ es _ _ _ = chainNes chainSt - EpochState acnt ls _ _ = es - pp = es ^. curPParamsEpochStateL - kp@(KESPeriod kesPeriod_) = runShelleyBase $ kesPeriod nextSlot - cs = chainOCertIssue chainSt - m = getKESPeriodRenewalNo issuerKeys kp - hotKeys = - fromMaybe - ( error $ - "No more hot keys left. Tried dropping " - ++ show m - ++ " from: " - ++ show (aikHot issuerKeys) - ) - (NE.nonEmpty $ NE.drop (fromIntegral m) (aikHot issuerKeys)) - keys = issuerKeys {aikHot = hotKeys} - - -- And issue a new ocert - n' = - currentIssueNo - ( OCertEnv - (Set.fromList $ aikColdKeyHash <$> ksStakePools) - (eval (dom ksIndexedGenDelegates)) - ) - cs - (coerceKeyRole . hashKey . vKey $ aikCold issuerKeys) - issueNumber = - if n' == Nothing - then error "no issue number available" - else fromIntegral m - oCert = mkOCert keys issueNumber (fst $ NE.head hotKeys) - theBlock <- - mkBlock - <$> pure hashheader - <*> pure keys - <*> toList - <$> genTxs pp acnt ls nextSlot - <*> pure nextSlot - <*> pure (block + 1) - <*> pure (chainEpochNonce chainSt) - <*> pure kesPeriod_ - -- This seems to be trying to work out the start of the KES "era", - -- e.g. the KES period in which this key starts to be valid. - <*> pure (fromIntegral (m * fromIntegral maxKESIterations)) - <*> pure oCert - let hView = makeHeaderView (bheader theBlock) - if bhviewBSize hView <= pp ^. ppMaxBBSizeL && bhviewHSize hView <= fromIntegral (pp ^. ppMaxBHSizeL) - then pure theBlock - else discard - where - -- This is safe to take form the original chain state, since we only tick - -- it forward; no new blocks will have been applied. - (block, slot, hashheader) = case chainLastAppliedBlock origChainState of - Origin -> error "block generator does not support from Origin" - At (LastAppliedBlock b s hh) -> (b, s, hh) - -selectNextSlotWithLeader :: - forall era. - ( Mock (EraCrypto era) - , EraGen era - , GetLedgerView era - , ApplyBlock era - ) => - GenEnv era -> - ChainState era -> - -- Starting slot - SlotNo -> - Maybe (SlotNo, ChainState era, AllIssuerKeys (EraCrypto era) 'BlockIssuer) -selectNextSlotWithLeader - (GenEnv KeySpace_ {ksStakePools, ksIndexedGenDelegates} _ _) - origChainState - startSlot = - List.find (const True) . catMaybes $ - selectNextSlotWithLeaderThisEpoch - <$> (startSlot : [slotFromEpoch x | x <- [startEpoch + 1 .. startEpoch + 4]]) - where - -- If we can't find a leader in the next N Epochs, some thing is wrong, N=4 should be large enough. - - startEpoch = epochFromSlotNo startSlot - selectNextSlotWithLeaderThisEpoch :: - -- Slot number whence we begin our search - SlotNo -> - Maybe (SlotNo, ChainState era, AllIssuerKeys (EraCrypto era) 'BlockIssuer) - selectNextSlotWithLeaderThisEpoch fromSlot = - findJust selectLeaderForSlot [fromSlot .. toSlot] - where - currentEpoch = epochFromSlotNo fromSlot - toSlot = slotFromEpoch (currentEpoch + 1) - 1 - - findJust _ [] = Nothing - findJust f (x : xs) = case f x of - Just (chainSt, y) -> Just (x, chainSt, y) - Nothing -> findJust f xs - - -- Try to select a leader for the given slot - selectLeaderForSlot :: - SlotNo -> - Maybe (ChainState era, AllIssuerKeys (EraCrypto era) 'BlockIssuer) - selectLeaderForSlot slotNo = - (chainSt,) - <$> case lookupInOverlaySchedule firstEpochSlot (Map.keysSet cores) d f slotNo of - Nothing -> - coerce - <$> List.find - ( \(AllIssuerKeys {aikVrf, aikColdKeyHash}) -> - isLeader aikColdKeyHash (vrfSignKey aikVrf) - ) - ksStakePools - Just (ActiveSlot x) -> - coerce $ - Map.lookup x cores - >>= \y -> Map.lookup (genDelegKeyHash y) ksIndexedGenDelegates - _ -> Nothing - where - chainSt = tickChainState slotNo origChainState - epochNonce = chainEpochNonce chainSt - poolDistr = unPoolDistr . nesPd . chainNes $ chainSt - dpstate = (lsCertState . esLState . nesEs . chainNes) chainSt - (GenDelegs cores) = (dsGenDelegs . certDState) dpstate - firstEpochSlot = slotFromEpoch (epochFromSlotNo slotNo) - f = activeSlotCoeff testGlobals - getUnitInterval :: PParams era -> UnitInterval - getUnitInterval pp = pp ^. ppDG - d = (getUnitInterval . view curPParamsEpochStateL . nesEs . chainNes) chainSt - - isLeader poolHash vrfKey = - let y = VRF.evalCertified @(VRF (EraCrypto era)) () (mkSeed seedL slotNo epochNonce) vrfKey - stake = maybe 0 individualPoolStake $ Map.lookup poolHash poolDistr - in case lookupInOverlaySchedule firstEpochSlot (Map.keysSet cores) d f slotNo of - Nothing -> checkLeaderValue (VRF.certifiedOutput y) stake f - Just (ActiveSlot x) | coerceKeyRole x == poolHash -> True - _ -> False - --- | The chain state is a composite of the new epoch state and the chain dep --- state. We tick both. -tickChainState :: - (GetLedgerView era, ApplyBlock era) => - SlotNo -> - ChainState era -> - ChainState era -tickChainState - slotNo - ChainState - { chainNes - , chainOCertIssue - , chainEpochNonce - , chainEvolvingNonce - , chainCandidateNonce - , chainPrevEpochNonce - , chainLastAppliedBlock - } = - let cds = - ChainDepState - { csProtocol = PrtclState chainOCertIssue chainEvolvingNonce chainCandidateNonce - , csTickn = TicknState chainEpochNonce chainPrevEpochNonce - , csLabNonce = case chainLastAppliedBlock of - Origin -> NeutralNonce - At (LastAppliedBlock {labHash}) -> hashHeaderToNonce labHash - } - lv = either (error . show) id $ futureLedgerView testGlobals chainNes slotNo - isNewEpoch = epochFromSlotNo slotNo /= nesEL chainNes - ChainDepState {csProtocol, csTickn} = - tickChainDepState testGlobals lv isNewEpoch cds - PrtclState ocertIssue evNonce candNonce = csProtocol - nes' = applyTick testGlobals chainNes slotNo - in ChainState - { chainNes = nes' - , chainOCertIssue = ocertIssue - , chainEpochNonce = ticknStateEpochNonce csTickn - , chainEvolvingNonce = evNonce - , chainCandidateNonce = candNonce - , chainPrevEpochNonce = ticknStatePrevHashNonce csTickn - , chainLastAppliedBlock = chainLastAppliedBlock - } diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Constants.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Constants.hs deleted file mode 100644 index a87c35d8a20..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Constants.hs +++ /dev/null @@ -1,7 +0,0 @@ -module Test.Cardano.Ledger.Shelley.Generator.Constants - {-# DEPRECATED "Use `Test.Cardano.Ledger.Shelley.Constants` instead" #-} ( - Constants (..), - defaultConstants, -) where - -import Test.Cardano.Ledger.Shelley.Constants (Constants (..), defaultConstants) diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Core.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Core.hs deleted file mode 100644 index fa7b96a3a29..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Core.hs +++ /dev/null @@ -1,561 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} - -module Test.Cardano.Ledger.Shelley.Generator.Core ( - AllIssuerKeys (..), - VRFKeyPair (..), - KESKeyPair (..), - GenEnv (..), - ScriptSpace (..), - TwoPhase3ArgInfo (..), - TwoPhase2ArgInfo (..), - ScriptInfo, - KeySpace (..), - pattern KeySpace, - NatNonce (..), - findPayKeyPairAddr, - findPayKeyPairCred, - findPayScriptFromCred, - findStakeScriptFromCred, - findPayScriptFromAddr, - genBool, - genCoinList, - genInteger, - genNatural, - genWord64, - genTxOut, - genesisCoins, - increasingProbabilityAt, - pickStakeKey, - mkAddr, - mkCred, - unitIntervalToNatural, - mkBlock, - mkBlockHeader, - mkBlockFakeVRF, - mkOCert, - getKESPeriodRenewalNo, - tooLateInEpoch, - RawSeed (..), - mkKeyPair, - mkKeyPairs, - mkGenKey, - genesisAccountState, - genCoin, - PreAlonzo, - hashData, - findPlutus, -) -where - -import qualified Cardano.Crypto.Hash as Hash -import Cardano.Ledger.Address (Addr (..)) -import Cardano.Ledger.BaseTypes ( - BoundedRational (..), - Nonce (..), - ProtVer (..), - StrictMaybe (..), - UnitInterval, - epochInfoPure, - stabilityWindow, - ) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Core hiding (DataHash) -import Cardano.Ledger.Credential ( - Credential (..), - pattern KeyHashObj, - pattern ScriptHashObj, - pattern StakeRefBase, - pattern StakeRefPtr, - ) -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Keys ( - Hash, - KeyHash, - KeyRole (..), - VKey, - asWitness, - hashKey, - ) -import Cardano.Ledger.SafeHash (SafeHash, unsafeMakeSafeHash) -import Cardano.Ledger.Shelley.LedgerState (AccountState (..)) -import Cardano.Ledger.Shelley.TxWits ( - ShelleyTxWits, - ) -import Cardano.Ledger.Slot ( - BlockNo (..), - Duration (..), - SlotNo (..), - epochInfoFirst, - (*-), - ) -import Cardano.Ledger.TxIn (TxId, TxIn (TxIn)) -import Cardano.Ledger.UTxO (UTxO (UTxO)) -import Cardano.Protocol.TPraos.BHeader (BHeader, HashHeader) -import Cardano.Protocol.TPraos.OCert (KESPeriod (..), OCert) -import Codec.Serialise (serialise) -import Control.Monad (replicateM) -import Control.Monad.Trans.Reader (asks) -import Data.ByteString.Lazy (toStrict) -import qualified Data.List.NonEmpty as NE -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Maybe (fromMaybe) -import Data.Ratio (denominator, numerator, (%)) -import Data.Word (Word32, Word64) -import Numeric.Natural (Natural) -import qualified PlutusLedgerApi.V1 as PV1 -import Test.Cardano.Ledger.Core.KeyPair (KeyPair (..), KeyPairs, mkAddr, mkCred, vKey) -import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes (Mock) -import Test.Cardano.Ledger.Shelley.Constants (Constants (..)) -import Test.Cardano.Ledger.Shelley.Generator.ScriptClass ( - ScriptClass, - exponential, - mkKeyPairs, - mkPayScriptHashMap, - mkStakeScriptHashMap, - ) -import Test.Cardano.Ledger.Shelley.Utils ( - GenesisKeyPair, - RawSeed (..), - epochFromSlotNo, - maxKESIterations, - maxLLSupply, - mkGenKey, - mkKeyPair, - runShelleyBase, - ) -import Test.Cardano.Protocol.Crypto.VRF.Fake (NatNonce (..)) -import Test.Cardano.Protocol.TPraos.Create ( - AllIssuerKeys (..), - KESKeyPair (..), - VRFKeyPair (..), - mkBHBody, - mkBHeader, - mkBlock, - mkBlockFakeVRF, - mkOCert, - ) -import Test.Cardano.Slotting.Numeric () -import Test.QuickCheck (Gen) -import qualified Test.QuickCheck as QC - --- | For use in the Serialisation and Example Tests, which assume Shelley, Allegra, or Mary Eras. -type PreAlonzo era = - ( TxWits era ~ ShelleyTxWits era - ) - --- ========================================= - -type DataHash c = SafeHash c EraIndependentData - -type ScriptInfo era = - ( Map (ScriptHash (EraCrypto era)) (TwoPhase3ArgInfo era) - , Map (ScriptHash (EraCrypto era)) (TwoPhase2ArgInfo era) - ) - -data TwoPhase3ArgInfo era = TwoPhase3ArgInfo - { getScript3 :: Script era - -- ^ A Plutus Script - , getHash3 :: ScriptHash (EraCrypto era) - -- ^ Its ScriptHash - , getData3 :: PV1.Data - -- ^ A Data that will make it succeed - , getRedeemer3 :: - ( PV1.Data -- The redeeming data - , Natural -- The ExUnits memory count - , Natural -- The ExUnits steps count - ) - -- ^ A Redeemer that will make it succeed - , getSucceeds3 :: Bool - } - -data TwoPhase2ArgInfo era = TwoPhase2ArgInfo - { getScript2 :: Script era - -- ^ A Plutus Script - , getHash2 :: ScriptHash (EraCrypto era) - -- ^ Its ScriptHash - , getRedeemer2 :: - ( PV1.Data -- The redeeming data - , Natural -- The ExUnits memory count - , Natural -- The ExUnits steps count - ) - -- ^ A Redeemer that will make it succeed - , getSucceeds2 :: Bool - } - -deriving instance Show (Script era) => Show (TwoPhase3ArgInfo era) - -deriving instance Show (Script era) => Show (TwoPhase2ArgInfo era) - -data ScriptSpace era = ScriptSpace - { ssScripts3 :: [TwoPhase3ArgInfo era] - -- ^ A list of Two Phase 3 Arg Scripts and their associated data we can use. - , ssScripts2 :: [TwoPhase2ArgInfo era] - -- ^ A list of Two Phase 2 Arg Scripts and their associated data we can use. - , ssHash3 :: Map (ScriptHash (EraCrypto era)) (TwoPhase3ArgInfo era) - , ssHash2 :: Map (ScriptHash (EraCrypto era)) (TwoPhase2ArgInfo era) - } - -deriving instance Show (Script era) => Show (ScriptSpace era) - --- | Generator environment. -data GenEnv era = GenEnv - { geKeySpace :: KeySpace era - , geScriptSpapce :: ScriptSpace era - , geConstants :: Constants - } - --- | Collection of all keys which are required to generate a trace. --- --- These are the _only_ keys which should be involved in the trace. -data KeySpace era = KeySpace_ - { ksCoreNodes :: [(GenesisKeyPair (EraCrypto era), AllIssuerKeys (EraCrypto era) 'GenesisDelegate)] - , ksGenesisDelegates :: [AllIssuerKeys (EraCrypto era) 'GenesisDelegate] - -- ^ Bag of keys to be used for future genesis delegates - , ksStakePools :: [AllIssuerKeys (EraCrypto era) 'StakePool] - -- ^ Bag of keys to be used for future stake pools - , ksKeyPairs :: KeyPairs (EraCrypto era) - -- ^ Bag of keys to be used for future payment/staking addresses - , ksMSigScripts :: [(Script era, Script era)] - , ksIndexedPaymentKeys :: Map (KeyHash 'Payment (EraCrypto era)) (KeyPair 'Payment (EraCrypto era)) - -- ^ Index over the payment keys in 'ksKeyPairs' - , ksIndexedStakingKeys :: Map (KeyHash 'Staking (EraCrypto era)) (KeyPair 'Staking (EraCrypto era)) - -- ^ Index over the staking keys in 'ksKeyPairs' - , ksIndexedGenDelegates :: - Map (KeyHash 'GenesisDelegate (EraCrypto era)) (AllIssuerKeys (EraCrypto era) 'GenesisDelegate) - -- ^ Index over the cold key hashes in Genesis Delegates - , ksIndexedPayScripts :: Map (ScriptHash (EraCrypto era)) (Script era, Script era) - -- ^ Index over the pay script hashes in Script pairs - , ksIndexedStakeScripts :: Map (ScriptHash (EraCrypto era)) (Script era, Script era) - -- ^ Index over the stake script hashes in Script pairs - } - -deriving instance (Era era, Show (Script era)) => Show (KeySpace era) - -pattern KeySpace :: - forall era. - ScriptClass era => - [(GenesisKeyPair (EraCrypto era), AllIssuerKeys (EraCrypto era) 'GenesisDelegate)] -> - [AllIssuerKeys (EraCrypto era) 'GenesisDelegate] -> - [AllIssuerKeys (EraCrypto era) 'StakePool] -> - KeyPairs (EraCrypto era) -> - [(Script era, Script era)] -> - KeySpace era -pattern KeySpace - ksCoreNodes - ksGenesisDelegates - ksStakePools - ksKeyPairs - ksMSigScripts <- - KeySpace_ - { ksCoreNodes - , ksGenesisDelegates - , ksStakePools - , ksKeyPairs - , ksMSigScripts - } - where - KeySpace ksCoreNodes ksGenesisDelegates ksStakePools ksKeyPairs ksMSigScripts = - KeySpace_ - { ksCoreNodes - , ksGenesisDelegates - , ksStakePools - , ksKeyPairs - , ksIndexedPaymentKeys = mkPayKeyHashMap ksKeyPairs - , ksIndexedStakingKeys = mkStakeKeyHashMap ksKeyPairs - , ksIndexedGenDelegates = mkGenesisDelegatesHashMap ksCoreNodes ksGenesisDelegates - , ksIndexedPayScripts = mkPayScriptHashMap @era ksMSigScripts - , ksIndexedStakeScripts = mkStakeScriptHashMap @era ksMSigScripts - , ksMSigScripts - } - -genCoin :: Integer -> Integer -> Gen Coin -genCoin minCoin maxCoin = Coin <$> exponential minCoin maxCoin - -genBool :: Gen Bool -genBool = QC.arbitraryBoundedRandom - -genInteger :: Integer -> Integer -> Gen Integer -genInteger lower upper = QC.choose (lower, upper) - --- | Generator for a natural number between 'lower' and 'upper' -genNatural :: Natural -> Natural -> Gen Natural -genNatural lower upper = fromInteger <$> QC.choose (lower', upper') - where - lower' = fromIntegral lower - upper' = fromIntegral upper - --- | Generator for a Word64 between 'lower' and 'upper' -genWord64 :: Word64 -> Word64 -> Gen Word64 -genWord64 lower upper = - fromIntegral - <$> genNatural (fromIntegral lower) (fromIntegral upper) - --- | Generate a mapping from genesis delegate cold key hash to the issuer keys. --- Note: we index all possible genesis delegate keys, that is, --- core nodes and all potential keys. -mkGenesisDelegatesHashMap :: - Crypto c => - [(GenesisKeyPair c, AllIssuerKeys c 'GenesisDelegate)] -> - [AllIssuerKeys c 'GenesisDelegate] -> - Map (KeyHash 'GenesisDelegate c) (AllIssuerKeys c 'GenesisDelegate) -mkGenesisDelegatesHashMap coreNodes genesisDelegates = - Map.fromList (f <$> allDelegateKeys) - where - f issuerKeys = (hashKey . vKey $ aikCold issuerKeys, issuerKeys) - allDelegateKeys = (snd <$> coreNodes) <> genesisDelegates - --- | Generate a mapping from stake key hash to stake key pair, from a list of --- (payment, staking) key pairs. -mkStakeKeyHashMap :: Crypto c => KeyPairs c -> Map (KeyHash 'Staking c) (KeyPair 'Staking c) -mkStakeKeyHashMap keyPairs = - Map.fromList (f <$> keyPairs) - where - f (_payK, stakeK) = ((hashKey . vKey) stakeK, stakeK) - --- | Generate a mapping from payment key hash to keypair --- from a list of (payment, staking) key pairs. -mkPayKeyHashMap :: - Crypto c => - KeyPairs c -> - Map (KeyHash 'Payment c) (KeyPair 'Payment c) -mkPayKeyHashMap keyPairs = - Map.fromList (f <$> keyPairs) - where - f (payK, _stakeK) = ((hashKey . vKey) payK, payK) - --- | Find first matching key pair for a credential. Returns the matching key pair --- where the first element of the pair matched the hash in 'addr'. -findPayKeyPairCred :: - forall era kr. - Credential kr (EraCrypto era) -> - Map (KeyHash kr (EraCrypto era)) (KeyPair kr (EraCrypto era)) -> - KeyPair kr (EraCrypto era) -findPayKeyPairCred (KeyHashObj addr) keyHashMap = - fromMaybe - (error $ "findPayKeyPairCred: could not find a match for the given credential: " <> show addr) - (Map.lookup addr keyHashMap) -findPayKeyPairCred _ _ = - error "findPayKeyPairCred: expects only KeyHashObj" - --- | Find first matching key pair for address. Returns the matching key pair --- where the first element of the pair matched the hash in 'addr'. -findPayKeyPairAddr :: - forall era. - Addr (EraCrypto era) -> - Map (KeyHash 'Payment (EraCrypto era)) (KeyPair 'Payment (EraCrypto era)) -> - KeyPair 'Payment (EraCrypto era) -findPayKeyPairAddr a keyHashMap = - case a of - Addr _ addr (StakeRefBase _) -> findPayKeyPairCred @era addr keyHashMap - Addr _ addr (StakeRefPtr _) -> findPayKeyPairCred @era addr keyHashMap - _ -> - error "findPayKeyPairAddr: expects only Base or Ptr addresses" - --- | Find matching multisig scripts for a credential. -findPayScriptFromCred :: - forall era. - Credential 'Witness (EraCrypto era) -> - Map (ScriptHash (EraCrypto era)) (Script era, Script era) -> - (Script era, Script era) -findPayScriptFromCred (ScriptHashObj scriptHash) scriptsByPayHash = - fromMaybe - (error "findPayScript: could not find matching script for given credential") - (Map.lookup scriptHash scriptsByPayHash) -findPayScriptFromCred _ _ = - error "findPayScriptFromCred: expects only ScriptHashObj" - --- | Find first matching script for a credential. -findStakeScriptFromCred :: - Credential 'Witness (EraCrypto era) -> - Map (ScriptHash (EraCrypto era)) (Script era, Script era) -> - (Script era, Script era) -findStakeScriptFromCred (ScriptHashObj scriptHash) scriptsByStakeHash = - fromMaybe - (error "findStakeScriptFromCred: could not find matching script for given credential") - (Map.lookup scriptHash scriptsByStakeHash) -findStakeScriptFromCred _ _ = - error "findStakeScriptFromCred: expects only ScriptHashObj" - --- | Find first matching multisig script for an address. -findPayScriptFromAddr :: - forall era. - Addr (EraCrypto era) -> - Map (ScriptHash (EraCrypto era)) (Script era, Script era) -> - (Script era, Script era) -findPayScriptFromAddr (Addr _ scriptHash (StakeRefBase _)) scriptsByPayHash = - findPayScriptFromCred @era (asWitness scriptHash) scriptsByPayHash -findPayScriptFromAddr (Addr _ scriptHash (StakeRefPtr _)) scriptsByPayHash = - findPayScriptFromCred @era (asWitness scriptHash) scriptsByPayHash -findPayScriptFromAddr _ _ = - error "findPayScriptFromAddr: expects only base and pointer script addresses" - --- | Select one random verification staking key from list of pairs of KeyPair. -pickStakeKey :: KeyPairs c -> Gen (VKey 'Staking c) -pickStakeKey keys = vKey . snd <$> QC.elements keys - --- | Generates a list of coins for the given 'Addr' and produced a 'TxOut' for each 'Addr' --- --- Note: we need to keep the initial utxo coin sizes large enough so that --- when we simulate sequences of transactions, we have enough funds available --- to include certificates that require deposits. -genTxOut :: - forall era. - EraTxOut era => - Gen (Value era) -> - [Addr (EraCrypto era)] -> - Gen [TxOut era] -genTxOut genEraVal addrs = do - values <- replicateM (length addrs) genEraVal - return (uncurry mkBasicTxOut <$> zip addrs values) - --- | Generates a list of 'Coin' values of length between 'lower' and 'upper' --- and with values between 'minCoin' and 'maxCoin'. -genCoinList :: Integer -> Integer -> Int -> Gen [Coin] -genCoinList minCoin maxCoin len = do - replicateM len $ genCoin minCoin maxCoin - --- | Generate values the given distribution in 90% of the cases, and values at --- the bounds of the range in 10% of the cases. --- --- This can be used to generate enough extreme values. The exponential and --- linear distributions provided by @hedgehog@ will generate a small percentage --- of these (0-1%). -increasingProbabilityAt :: - Gen a -> - (a, a) -> - Gen a -increasingProbabilityAt gen (lower, upper) = - QC.frequency - [ (5, pure lower) - , (90, gen) - , (5, pure upper) - ] - --- | Try to map the unit interval to a natural number. We don't care whether --- this is surjective. But it should be right inverse to `fromNatural` - that --- is, one should be able to recover the `UnitInterval` value used here. -unitIntervalToNatural :: UnitInterval -> Natural -unitIntervalToNatural ui = - toNat ((toInteger (maxBound :: Word64) % 1) * unboundRational ui) - where - toNat r = fromInteger (numerator r `quot` denominator r) -{-# DEPRECATED - unitIntervalToNatural - "This function has been made private in cardano-protocol-tpraos:testlib. Open an issue if you need it" - #-} - -mkBlockHeader :: - Mock c => - ProtVer -> - -- | Hash of previous block - HashHeader c -> - -- | All keys in the stake pool - AllIssuerKeys c r -> - -- | Current slot - SlotNo -> - -- | Block number/chain length/chain "difficulty" - BlockNo -> - -- | EpochNo nonce - Nonce -> - -- | Period of KES (key evolving signature scheme) - Word -> - -- | KES period of key registration - Word -> - -- | Operational certificate - OCert c -> - -- | Block size - Word32 -> - -- | Block body hash - Hash c EraIndependentBlockBody -> - BHeader c -mkBlockHeader protVer prev pKeys slotNo blockNo enonce kesPeriod c0 oCert bodySize bodyHash = - let bhBody = mkBHBody protVer prev pKeys slotNo blockNo enonce oCert bodySize bodyHash - in mkBHeader pKeys kesPeriod c0 bhBody -{-# DEPRECATED mkBlockHeader "In favor of `mkBHeader` and `mkBHBody`" #-} - --- | Takes a sequence of KES hot keys and checks to see whether there is one whose --- range contains the current KES period. If so, return its index in the list of --- hot keys. -getKESPeriodRenewalNo :: AllIssuerKeys h r -> KESPeriod -> Integer -getKESPeriodRenewalNo keys (KESPeriod kp) = - go (NE.toList (aikHot keys)) 0 kp - where - go [] _ _ = error "did not find enough KES renewals" - go ((KESPeriod p, _) : rest) n k = - if p <= k && k < p + fromIntegral maxKESIterations - then n - else go rest (n + 1) k - --- | True if the given slot is within the last `2 * stabilityWindow` --- slots of the current epoch. -tooLateInEpoch :: SlotNo -> Bool -tooLateInEpoch s = runShelleyBase $ do - ei <- asks epochInfoPure - firstSlotNo <- epochInfoFirst ei (epochFromSlotNo s + 1) - stabilityWindow <- asks stabilityWindow - - return (s >= firstSlotNo *- Duration (2 * stabilityWindow)) - --- | Account with empty treasury -genesisAccountState :: AccountState -genesisAccountState = - AccountState - { asTreasury = Coin 0 - , asReserves = maxLLSupply - } - --- | Creates the UTxO for a new ledger with the specified --- genesis TxId and transaction outputs. -genesisCoins :: - TxId (EraCrypto era) -> - [TxOut era] -> - UTxO era -genesisCoins genesisTxId outs = - UTxO $ - Map.fromList [(TxIn genesisTxId idx, out) | (idx, out) <- zip [minBound ..] outs] - --- ================================================================== --- Operations on GenEnv that deal with ScriptSpace - -hashData :: forall era. Era era => PV1.Data -> DataHash (EraCrypto era) -hashData x = unsafeMakeSafeHash (Hash.castHash (Hash.hashWith (toStrict . serialise) x)) - -{- --- | Choose one of the preallocated PlutusScripts, and return it and its Hash -genPlutus :: forall era. GenEnv era -> Gen (Script era, ScriptHash (Crypto era), TwoPhaseInfo era) -genPlutus (GenEnv _ (ScriptSpace scripts _) _) = gettriple <$> oneof (pure <$> scripts) - where gettriple (info@(TwoPhaseInfo script hash _data _rdmr)) = (script,hash,info) --} - --- | Find the preallocated Script from its Hash. -findPlutus :: - forall era. - Era era => - GenEnv era -> - ScriptHash (EraCrypto era) -> - (Script era, StrictMaybe (DataHash (EraCrypto era))) -findPlutus (GenEnv keyspace (ScriptSpace _ _ mp3 mp2) _) hsh = - case Map.lookup hsh mp3 of - Just info3 -> (getScript3 info3, SJust (hashData @era (getData3 info3))) - Nothing -> - case Map.lookup hsh mp2 of - Just info2 -> (getScript2 info2, SNothing) - Nothing -> case Map.lookup hsh (ksIndexedPayScripts keyspace) of - Just (pay, _ssStake) -> (pay, SNothing) - Nothing -> - case Map.lookup hsh (ksIndexedStakeScripts keyspace) of - Just (_pay, stake) -> (stake, SNothing) - Nothing -> error ("Can't find a Script for the hash: " ++ show hsh) diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Delegation.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Delegation.hs deleted file mode 100644 index ed31e0daff4..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Delegation.hs +++ /dev/null @@ -1,6 +0,0 @@ -module Test.Cardano.Ledger.Shelley.Generator.Delegation - {-# DEPRECATED "Use `Test.Cardano.Ledger.Shelley.Generator.TxCert` instead" #-} ( - module Test.Cardano.Ledger.Shelley.Generator.TxCert, -) where - -import Test.Cardano.Ledger.Shelley.Generator.TxCert diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/EraGen.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/EraGen.hs deleted file mode 100644 index 8b60d510121..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/EraGen.hs +++ /dev/null @@ -1,371 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} -{-# OPTIONS_GHC -fno-warn-orphans #-} - --- | Infrastructure for generating STS Traces over any Era -module Test.Cardano.Ledger.Shelley.Generator.EraGen ( - genUtxo0, - genesisId, - EraGen (..), - MinLEDGER_STS, - MinCHAIN_STS, - MinUTXO_STS, - MinGenTxout (..), - Label (..), - Sets (..), - someKeyPairs, - allScripts, - mkDummyHash, -) -where - -import qualified Cardano.Crypto.Hash as Hash -import Cardano.Ledger.AuxiliaryData (AuxiliaryDataHash) -import Cardano.Ledger.BaseTypes (Network (..), ShelleyBase, StrictMaybe) -import qualified Cardano.Ledger.Binary.Plain as Plain -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Core -import qualified Cardano.Ledger.Crypto as CC (Crypto, HASH) -import Cardano.Ledger.Keys (KeyRole (Witness), WitVKey) -import Cardano.Ledger.SafeHash (unsafeMakeSafeHash) -import Cardano.Ledger.Shelley.API ( - Addr (Addr), - Block (..), - Credential (ScriptHashObj), - LedgerEnv, - LedgerState, - ShelleyLedgersEnv, - StakeReference (StakeRefBase), - ) -import Cardano.Ledger.Shelley.LedgerState (StashedAVVMAddresses, UTxOState (..)) -import Cardano.Ledger.Shelley.PParams (Update) -import Cardano.Ledger.Shelley.Rules (UtxoEnv) -import Cardano.Ledger.Shelley.TxBody (ShelleyEraTxBody, Withdrawals) -import Cardano.Ledger.TxIn (TxId (TxId), TxIn) -import Cardano.Ledger.UTxO (UTxO) -import Cardano.Protocol.TPraos.BHeader (BHeader) -import Cardano.Slotting.Slot (SlotNo) -import Control.State.Transition.Extended (STS (..)) -import qualified Data.ByteString as BS -import Data.Default.Class (Default) -import Data.Hashable (Hashable (..)) -import Data.Map (Map) -import Data.Sequence (Seq) -import Data.Sequence.Strict (StrictSeq) -import Data.Set (Set) -import Lens.Micro -import Test.Cardano.Ledger.Binary.Random (mkDummyHash) -import Test.Cardano.Ledger.Core.KeyPair (KeyPairs, mkAddr) -import Test.Cardano.Ledger.Shelley.Constants (Constants (..)) -import Test.Cardano.Ledger.Shelley.Generator.Core ( - GenEnv (..), - ScriptInfo, - TwoPhase2ArgInfo (..), - TwoPhase3ArgInfo (..), - genesisCoins, - ) -import Test.Cardano.Ledger.Shelley.Generator.ScriptClass ( - ScriptClass, - baseScripts, - combinedScripts, - keyPairs, - ) -import Test.Cardano.Ledger.Shelley.Rules.Chain (CHAIN, ChainState) -import Test.Cardano.Ledger.Shelley.Utils (Split) -import Test.QuickCheck (Gen, choose, shuffle) - -{------------------------------------------------------------------------------ - An EraGen instance makes it possible to run the Shelley property tests. The idea - is to generate (not fully) random Transactions, i.e. with enough coherency to be - a real transaction, but which are strung together into Traces. In each step of the trace - one of these (not fully) random transactions is applied. The idea is that some property should - hold on any trace. Because we want these tests to work in any Era there are two things - to consider: - 1) A Transaction generator needs to be parametric over all Eras. - 2) Since the Internals of the STS rules differ from Era to Era, the STS instances - must also adapt to many Eras. - - To account for the "not fully" random nature of tranactions we use the type GenEnv which - holds enough information to build "not fully" random transactions that are still coherent. - - For Transactions, we account for these differences by using the type families found in - Cardano.Ledger.Core and other modules, and by a set of Era specific generators encoded - in the EraGen class. Generally there is some "method" in the class for each type family. - - For traces we use the "class HasTrace (CHAIN era) (GenEnv era)" - - The following constraints encode the minimal properties needed to build a chain for - any Era. It should be an invariant that these properties hold for all Eras (Shelley, Allegra, Mary, Alonzo ...) - If we introduce a new Era, where they do not hold, we must adjust these things, so they do. - 1) Add a new type family - 2) Add new methods to EraGen - 3) Change the minimal constraints, so that they now hold for all Eras - 4) Change the generators to use the new methods. - - -----------------------------------------------------------------------------} - --- | Minimal requirements on the LEDGER and LEDGERS instances -type MinLEDGER_STS era = - ( Environment (EraRule "LEDGERS" era) ~ ShelleyLedgersEnv era - , BaseM (EraRule "LEDGER" era) ~ ShelleyBase - , Signal (EraRule "LEDGER" era) ~ Tx era - , State (EraRule "LEDGER" era) ~ LedgerState era - , Environment (EraRule "LEDGER" era) ~ LedgerEnv era - , BaseM (EraRule "LEDGERS" era) ~ ShelleyBase - , State (EraRule "LEDGERS" era) ~ LedgerState era - , Signal (EraRule "LEDGERS" era) ~ Seq (Tx era) - , STS (EraRule "LEDGER" era) - ) - --- | Minimal requirements on the CHAIN instances -type MinCHAIN_STS era = - ( STS (CHAIN era) - , BaseM (CHAIN era) ~ ShelleyBase - , Environment (CHAIN era) ~ () - , State (CHAIN era) ~ ChainState era - , Signal (CHAIN era) ~ Block (BHeader (EraCrypto era)) era - ) - --- | Minimal requirements on the UTxO instances -type MinUTXO_STS era = - ( STS (EraRule "UTXOW" era) - , BaseM (EraRule "UTXOW" era) ~ ShelleyBase - , State (EraRule "UTXOW" era) ~ UTxOState era - , Environment (EraRule "UTXOW" era) ~ UtxoEnv era - , Signal (EraRule "UTXOW" era) ~ Tx era - , State (EraRule "UTXO" era) ~ UTxOState era - , Environment (EraRule "UTXO" era) ~ UtxoEnv era - , Signal (EraRule "UTXO" era) ~ Tx era - ) - -class Show (TxOut era) => MinGenTxout era where - calcEraMinUTxO :: TxOut era -> PParams era -> Coin - addValToTxOut :: Value era -> TxOut era -> TxOut era - genEraTxOut :: GenEnv era -> Gen (Value era) -> [Addr (EraCrypto era)] -> Gen [TxOut era] - --- ====================================================================================== --- The EraGen class. Generally one method for each type family in Cardano.Ledger.Core --- ====================================================================================== - -class - ( EraSegWits era - , ShelleyEraTxBody era - , Split (Value era) - , ScriptClass era - , EraPParams era - , MinGenTxout era - , Default (StashedAVVMAddresses era) - ) => - EraGen era - where - -- | Generate a genesis value for the Era - genGenesisValue :: GenEnv era -> Gen (Value era) - - -- | A list of three-phase scripts that can be chosen for payment when building a transaction - genEraTwoPhase3Arg :: [TwoPhase3ArgInfo era] - genEraTwoPhase3Arg = [] - - -- | A list of two-phase scripts that can be chosen for Delegating, Minting, or Rewarding when building a transaction - genEraTwoPhase2Arg :: [TwoPhase2ArgInfo era] - genEraTwoPhase2Arg = [] - - -- | Given some pre-generated data, generate an era-specific TxBody, - -- and a list of additional scripts for eras that sometimes require - -- additional script witnessing. - genEraTxBody :: - GenEnv era -> - UTxO era -> - PParams era -> - SlotNo -> - Set (TxIn (EraCrypto era)) -> - StrictSeq (TxOut era) -> - StrictSeq (TxCert era) -> - Withdrawals (EraCrypto era) -> - Coin -> - StrictMaybe (Update era) -> - StrictMaybe (AuxiliaryDataHash (EraCrypto era)) -> - Gen (TxBody era, [Script era]) - - -- | Generate era-specific auxiliary data - genEraAuxiliaryData :: Constants -> Gen (StrictMaybe (TxAuxData era)) - - -- | Update an era-specific TxBody - updateEraTxBody :: - UTxO era -> - PParams era -> - TxWits era -> - TxBody era -> - Coin -> - -- | This overrides the existing TxFee - Set (TxIn (EraCrypto era)) -> - -- | This is to be Unioned with the existing TxIn - TxOut era -> - -- | This is to be Appended to the end of the existing TxOut - TxBody era - - -- | Union the TxIn with the existing TxIn in the TxBody - addInputs :: TxBody era -> Set (TxIn (EraCrypto era)) -> TxBody era - addInputs txb _ins = txb - - genEraPParamsUpdate :: Constants -> PParams era -> Gen (PParamsUpdate era) - - genEraPParams :: Constants -> Gen (PParams era) - - -- Its is VERY IMPORTANT that the decentralisation parameter "_d" be non-zero and less than 1. - -- The system will deadlock if d==0 and there are no registered stake pools. - -- use Test.Cardano.Ledger.Shelley.Generator.Update(genDecentralisationParam) in your instance. - - genEraTxWits :: - (UTxO era, TxBody era, ScriptInfo era) -> - Set (WitVKey 'Witness (EraCrypto era)) -> - Map (ScriptHash (EraCrypto era)) (Script era) -> - TxWits era - - -- When choosing new recipients from the UTxO, choose only those whose Outputs meet this predicate. - genEraGoodTxOut :: TxOut era -> Bool - genEraGoodTxOut _ = True -- The default implementation marks every TxOut as good. - - -- | Construct a transaction given its constituent parts. - constructTx :: - TxBody era -> - TxWits era -> - StrictMaybe (TxAuxData era) -> - Tx era - constructTx txBody txWits txAuxData = - mkBasicTx txBody & witsTxL .~ txWits & auxDataTxL .~ txAuxData - - -- | compute the delta cost of an additional script on per Era basis. - genEraScriptCost :: PParams era -> Script era -> Coin - genEraScriptCost _pp _script = Coin 0 - - -- | A final opportunity to tweak things when the generator is done. Possible uses - -- 1) Add tracing when debugging on a per Era basis - genEraDone :: UTxO era -> PParams era -> Tx era -> Gen (Tx era) - genEraDone _utxo _pp x = pure x - - -- | A final opportunity to tweak things at the block level. Possible uses - -- 2) Run a test that might decide to 'discard' the test, because we got unlucky, and a rare unfixible condition has occurred. - genEraTweakBlock :: PParams era -> Seq (Tx era) -> Gen (Seq (Tx era)) - genEraTweakBlock _pp seqTx = pure seqTx - - hasFailedScripts :: Tx era -> Bool - hasFailedScripts = const False - - feeOrCollateral :: Tx era -> UTxO era -> Coin - feeOrCollateral tx _ = tx ^. bodyTxL . feeTxBodyL - -{------------------------------------------------------------------------------ - Generators shared across eras - -----------------------------------------------------------------------------} - --- | Select between _lower_ and _upper_ keys from 'keyPairs' -someKeyPairs :: CC.Crypto c => Constants -> Int -> Int -> Gen (KeyPairs c) -someKeyPairs c lower upper = - take - <$> choose (lower, upper) - <*> shuffle (keyPairs c) - -genUtxo0 :: forall era. EraGen era => GenEnv era -> Gen (UTxO era) -genUtxo0 ge@(GenEnv _ _ c@Constants {minGenesisUTxOouts, maxGenesisUTxOouts}) = do - genesisKeys <- someKeyPairs c minGenesisUTxOouts maxGenesisUTxOouts - genesisScripts <- someScripts @era c minGenesisUTxOouts maxGenesisUTxOouts - outs <- - (genEraTxOut @era ge) - (genGenesisValue @era ge) - (fmap mkAddr genesisKeys ++ fmap (scriptsmkAddr' Testnet) genesisScripts) - return (genesisCoins genesisId outs) - where - scriptsmkAddr' :: Network -> (Script era, Script era) -> Addr (EraCrypto era) - scriptsmkAddr' n (payScript, stakeScript) = - Addr n (scriptToCred' payScript) (StakeRefBase $ scriptToCred' stakeScript) - - scriptToCred' :: Script era -> Credential kr (EraCrypto era) - scriptToCred' = ScriptHashObj . hashScript @era - --- | We share this dummy TxId as genesis transaction id across eras -genesisId :: - Hash.HashAlgorithm (CC.HASH c) => - TxId c -genesisId = TxId (unsafeMakeSafeHash (mkDummyHash (0 :: Int))) - --- ========================================================== - --- | Select between _lower_ and _upper_ scripts from the possible combinations --- of the first `numBaseScripts` multi-sig scripts of `mSigScripts` (i.e compound scripts) AND --- some simple scripts (NOT compound. ie either signature or Plutus scripts). -someScripts :: - forall era. - EraGen era => - Constants -> - Int -> - Int -> - Gen [(Script era, Script era)] -someScripts c lower upper = take <$> choose (lower, upper) <*> shuffle (allScripts @era c) - --- | A list of all possible kinds of scripts in the current Era. --- Might include Keylocked scripts, Start-Finish Timelock scripts, Quantified scripts (All, Any, MofN), Plutus Scripts --- Note that 'genEraTwoPhase3Arg' and 'genEraTwoPhase2Arg' may be the empty list ([]) in some Eras. -allScripts :: forall era. EraGen era => Constants -> [(Script era, Script era)] -allScripts c = - plutusPairs genEraTwoPhase3Arg genEraTwoPhase2Arg (take 3 simple) - ++ take (numSimpleScripts c) simple -- 10 means about 5% of allScripts are Plutus Scripts - -- Plutus scripts in some Eras ([] in other Eras) - -- [(payment,staking)] where the either payment or staking may be a plutus script - ++ - -- Simple scripts (key locked, Start-Finish timelocks) - combinedScripts @era c - where - -- Quantifed scripts (All, Any, MofN) - - simple = baseScripts @era c - plutusPairs :: - [TwoPhase3ArgInfo era] -> - [TwoPhase2ArgInfo era] -> - [(Script era, Script era)] -> - [(Script era, Script era)] - plutusPairs [] _ _ = [] - plutusPairs _ [] _ = [] - plutusPairs _ _ [] = [] - plutusPairs args3 args2 ((pay, stake) : more) = pair : plutusPairs args3 args2 more - where - count3 = length args3 - 1 - count2 = length args2 - 1 - payBytes = Plain.serialize' pay - n = randomByHash 0 count3 $ Plain.serialize' stake - m = randomByHash 0 count2 payBytes - mode = randomByHash 1 3 payBytes - pair = case mode of - 1 -> (getScript3 (args3 !! n), stake) - 2 -> (pay, getScript2 (args2 !! m)) - 3 -> (getScript3 (args3 !! n), getScript2 (args2 !! m)) - i -> error ("mod function returns value out of bounds: " ++ show i) - -randomByHash :: Int -> Int -> BS.ByteString -> Int -randomByHash low high x = low + remainder - where - n = hash x - -- We don't really care about the hash, we only - -- use it to pseudo-randomly pick a number bewteen low and high - m = high - low + 1 - remainder = mod n m -- mode==0 is a time leaf, mode 1 or 2 is a signature leaf - --- ========================================================= - -data Label t where - Body' :: Label (TxBody era) - Wits' :: Label (TxWits era) - -class Sets (x :: Label t) y where - set :: Label t -> y -> y diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Presets.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Presets.hs deleted file mode 100644 index d0d9d18540c..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Presets.hs +++ /dev/null @@ -1,173 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - --- | Pre-generated items to use in traces. --- --- Functions in this module make specific assumptions about the sets of keys --- involved, and thus cannot be used as generic generators. -module Test.Cardano.Ledger.Shelley.Generator.Presets ( - coreNodeKeys, - keySpace, - genEnv, - genesisDelegs0, - someKeyPairs, - keyPairs, - scriptSpace, -) -where - -import Cardano.Ledger.Core (EraScript, hashScript) -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Keys ( - GenDelegPair (..), - KeyHash, - KeyRole (..), - coerceKeyRole, - hashKey, - hashVerKeyVRF, - ) -import Cardano.Protocol.TPraos.OCert (KESPeriod (..)) -import Data.List.NonEmpty (NonEmpty ((:|))) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Proxy (Proxy (..)) -import Data.Word (Word64) -import Test.Cardano.Ledger.Core.KeyPair (KeyPair (..)) -import Test.Cardano.Ledger.Shelley.Constants (Constants (..)) -import Test.Cardano.Ledger.Shelley.Generator.Core -import Test.Cardano.Ledger.Shelley.Generator.EraGen (EraGen (..), allScripts, someKeyPairs) -import Test.Cardano.Ledger.Shelley.Generator.ScriptClass (keyPairs) -import Test.Cardano.Ledger.Shelley.Utils ( - maxKESIterations, - mkKESKeyPair, - mkVRFKeyPair, - slotsPerKESIteration, - ) - --- ================================================================= - --- | Example generator environment, consisting of default constants and an --- corresponding keyspace. -genEnv :: - forall era. - EraGen era => - Proxy era -> - Constants -> - GenEnv era -genEnv _ constants = - GenEnv - (keySpace constants) - (scriptSpace @era (genEraTwoPhase3Arg @era) (genEraTwoPhase2Arg @era)) - constants - --- | An Example Script space for use in Trace generators -scriptSpace :: - forall era. - EraScript era => - [TwoPhase3ArgInfo era] -> - [TwoPhase2ArgInfo era] -> - ScriptSpace era -scriptSpace scripts3 scripts2 = - ScriptSpace - scripts3 - scripts2 - (Map.fromList [(hashScript @era (getScript3 s), s) | s <- scripts3]) - (Map.fromList [(hashScript @era (getScript2 s), s) | s <- scripts2]) - --- | Example keyspace for use in generators -keySpace :: - forall era. - EraGen era => - Constants -> - KeySpace era -keySpace c = - KeySpace - (coreNodeKeys c) - (genesisDelegates c) - (stakePoolKeys c) - (keyPairs c) - (allScripts @era c) - --- Pairs of (genesis key, node keys) --- --- NOTE: we use a seed range in the [1000...] range --- to create keys that don't overlap with any of the other generated keys -coreNodeKeys :: - Crypto c => - Constants -> - [(KeyPair 'Genesis c, AllIssuerKeys c 'GenesisDelegate)] -coreNodeKeys c@Constants {numCoreNodes} = - [ ( (toKeyPair . mkGenKey) (RawSeed x 0 0 0 0) - , issuerKeys c 0 x - ) - | x <- [1001 .. 1000 + numCoreNodes] - ] - where - toKeyPair (sk, vk) = KeyPair vk sk - --- Pre-generate a set of keys to use for genesis delegates. -genesisDelegates :: Crypto c => Constants -> [AllIssuerKeys c 'GenesisDelegate] -genesisDelegates c = - [ issuerKeys c 20 x - | x <- [0 .. 50] - ] - --- Pre-generate a set of keys to use for stake pools. -stakePoolKeys :: Crypto c => Constants -> [AllIssuerKeys c 'StakePool] -stakePoolKeys c = - [ issuerKeys c 10 x - | x <- [0 .. 50] - ] - --- | Generate all keys for any entity which will be issuing blocks. -issuerKeys :: - Crypto c => - Constants -> - -- | Namespace parameter. Can be used to differentiate between different - -- "types" of issuer. - Word64 -> - Word64 -> - AllIssuerKeys c r -issuerKeys Constants {maxSlotTrace} ns x = - let (skCold, vkCold) = mkKeyPair (RawSeed x 0 0 0 (ns + 1)) - iters = - 0 - :| [ 1 - .. 1 - + ( maxSlotTrace - `div` fromIntegral (maxKESIterations * slotsPerKESIteration) - ) - ] - in AllIssuerKeys - { aikCold = KeyPair vkCold skCold - , aikHot = - fmap - ( \iter -> - ( KESPeriod (fromIntegral (iter * fromIntegral maxKESIterations)) - , mkKESKeyPair (RawSeed x 0 0 (fromIntegral iter) (ns + 3)) - ) - ) - iters - , aikVrf = mkVRFKeyPair (RawSeed x 0 0 0 (ns + 2)) - , aikColdKeyHash = hashKey vkCold - } - -genesisDelegs0 :: - Crypto c => - Constants -> - Map (KeyHash 'Genesis c) (GenDelegPair c) -genesisDelegs0 c = - Map.fromList - [ ( hashVKey gkey - , GenDelegPair - (coerceKeyRole . hashVKey $ aikCold pkeys) - (hashVerKeyVRF . vrfVerKey $ aikVrf pkeys) - ) - | (gkey, pkeys) <- coreNodeKeys c - ] - where - hashVKey = hashKey . vKey diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/ScriptClass.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/ScriptClass.hs deleted file mode 100644 index 1778c162a6a..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/ScriptClass.hs +++ /dev/null @@ -1,256 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE ConstrainedClassMethods #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveFunctor #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableSuperClasses #-} - -module Test.Cardano.Ledger.Shelley.Generator.ScriptClass ( - ScriptClass (..), - Quantifier (..), - exponential, - anyOf, - allOf, - mOf, - keyPairs, - mkPayScriptHashMap, - mkStakeScriptHashMap, - mkScriptsFromKeyPair, - mkKeyPairs, - mkScripts, - mkScriptCombinations, - combinedScripts, - baseScripts, - scriptKeyCombinations, - scriptKeyCombination, -) -where - -import Cardano.Crypto.DSIGN.Class (DSIGNAlgorithm (..)) -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto -import Cardano.Ledger.Keys (KeyHash, KeyRole (..), asWitness, hashKey) -import Data.List (permutations) -import qualified Data.List as List -import qualified Data.Map.Strict as Map -import Data.Proxy -import Data.Tuple (swap) -import Data.Word (Word64) -import Test.Cardano.Ledger.Core.KeyPair (KeyPair (..), KeyPairs, vKey) -import Test.Cardano.Ledger.Shelley.Constants (Constants (..)) -import Test.Cardano.Ledger.Shelley.Utils (RawSeed (..), mkKeyPair) -import Test.QuickCheck (Gen) -import qualified Test.QuickCheck as QC - -{------------------------------------------------------------------------------ - ScriptClass defines the operations that enable an Era's scripts to - be adapated to property tests. This is a key component of the EraGen class. -------------------------------------------------------------------------------} - -class EraScript era => ScriptClass era where - basescript :: Proxy era -> KeyHash 'Witness (EraCrypto era) -> Script era - isKey :: Proxy era -> Script era -> Maybe (KeyHash 'Witness (EraCrypto era)) - isOnePhase :: Proxy era -> Script era -> Bool - isOnePhase _proxy _ = True -- Many Eras have only OnePhase Scripts. - quantify :: Proxy era -> Script era -> Quantifier (Script era) - unQuantify :: Proxy era -> Quantifier (Script era) -> Script era - -{------------------------------------------------------------------------------ - Abstracts the quantifier structure of (Script era) - used in the 'quantify' and 'unQuantify' methods of ScriptClass. - -----------------------------------------------------------------------------} - -data Quantifier t = AllOf [t] | AnyOf [t] | MOf Int [t] | Leaf t - deriving (Functor) - -anyOf :: forall era. ScriptClass era => Proxy era -> [Script era] -> Script era -anyOf prox xs = unQuantify prox $ AnyOf xs - -allOf :: forall era. ScriptClass era => Proxy era -> [Script era] -> Script era -allOf prox xs = unQuantify prox $ AllOf xs - -mOf :: forall era. ScriptClass era => Proxy era -> Int -> [Script era] -> Script era -mOf prox m xs = unQuantify prox $ MOf m xs - -{------------------------------------------------------------------------------ - Compute lists of keyHashes -------------------------------------------------------------------------------} - --- | return the first sublist that meets the predicate p. -getFirst :: ([a] -> Bool) -> [[a]] -> [a] -getFirst _p [] = [] -getFirst p (xs : xss) = if p xs then xs else getFirst p xss - --- | Produce a valid list of key hashes that appear in a Script. --- Note: in the case of AnyOf, we just take the first script in the expression. --- This only works if we generate AnyOf scripts such that all script options --- are valid scripts (that is, valid in the context of a transaction, at generation time --- and execution/spend time). -scriptKeyCombination :: - forall era. - ScriptClass era => - Proxy era -> - Script era -> - [KeyHash 'Witness (EraCrypto era)] -scriptKeyCombination prox script = case quantify prox script of - AllOf xs -> concatMap (scriptKeyCombination prox) xs - AnyOf xs -> getFirst (not . null) (map (scriptKeyCombination prox) xs) - MOf m xs -> concatMap (scriptKeyCombination prox) (take m xs) - Leaf t -> case isKey prox t of - Just hk -> [hk] - Nothing -> [] - --- | Return all valid lists of KeyHashes that appear in a Script --- used in testing. -scriptKeyCombinations :: - forall era. - ScriptClass era => - Proxy era -> - Script era -> - [[KeyHash 'Witness (EraCrypto era)]] -scriptKeyCombinations prox script = case quantify prox script of - AllOf xs -> [concat $ concatMap (scriptKeyCombinations prox) xs] - AnyOf xs -> concatMap (scriptKeyCombinations prox) xs - MOf m xs -> - let perms = map (take m) $ permutations xs - in map (concat . concatMap (scriptKeyCombinations prox)) perms - Leaf t -> case isKey prox t of - Just hk -> [[hk]] - Nothing -> [[]] - --- | Make a simple (non-combined, ie NO quantifer like All, Any, MofN, etc.) script. --- 'basescript' is a method of ScriptClass, and is different for every Era. -mkScriptFromKey :: forall era. ScriptClass era => KeyPair 'Witness (EraCrypto era) -> Script era -mkScriptFromKey = (basescript (Proxy :: Proxy era) . hashKey . vKey) - -mkScriptsFromKeyPair :: - forall era. - ScriptClass era => - (KeyPair 'Payment (EraCrypto era), KeyPair 'Staking (EraCrypto era)) -> - (Script era, Script era) -mkScriptsFromKeyPair (k0, k1) = - (mkScriptFromKey @era $ asWitness k0, mkScriptFromKey @era $ asWitness k1) - --- | make Scripts based on the given key pairs -mkScripts :: - forall era. - ScriptClass era => - KeyPairs (EraCrypto era) -> - [(Script era, Script era)] -mkScripts = map (mkScriptsFromKeyPair @era) - -mkPayScriptHashMap :: - forall era. - ScriptClass era => - [(Script era, Script era)] -> - Map.Map (ScriptHash (EraCrypto era)) (Script era, Script era) -mkPayScriptHashMap scripts = - Map.fromList (f <$> scripts) - where - f script@(pay, _ssStake) = (hashScript @era pay, script) - --- | Generate a mapping from stake script hash to script pair. -mkStakeScriptHashMap :: - forall era. - ScriptClass era => - [(Script era, Script era)] -> - Map.Map (ScriptHash (EraCrypto era)) (Script era, Script era) -mkStakeScriptHashMap scripts = - Map.fromList (f <$> scripts) - where - f script@(_pay, stake) = (hashScript @era stake, script) - --- | Combine a list of script pairs into hierarchically structured multi-sig --- scripts, list must have at least length 3. Be careful not to call with too --- many pairs in order not to create too many of the possible combinations. -mkScriptCombinations :: - forall era. - ScriptClass era => - [(Script era, Script era)] -> - [(Script era, Script era)] -mkScriptCombinations msigs = - if length msigs < 3 - then error "length of input msigs must be at least 3" - else - ( List.foldl' (++) [] $ - do - (k1, k2) <- msigs - (k3, k4) <- msigs List.\\ [(k1, k2)] - (k5, k6) <- msigs List.\\ [(k1, k2), (k3, k4)] - - pure - [ (pay, stake) - | pay <- - [ anyOf (Proxy @era) [k1, k3, k5] - , allOf (Proxy @era) [k1, k3, k5] - , mOf (Proxy @era) 1 [k1, k3, k5] - , mOf (Proxy @era) 2 [k1, k3, k5] - , mOf (Proxy @era) 3 [k1, k3, k5] - ] - , stake <- - [ anyOf (Proxy @era) [k2, k4, k6] - , allOf (Proxy @era) [k2, k4, k6] - , mOf (Proxy @era) 1 [k2, k4, k6] - , mOf (Proxy @era) 2 [k2, k4, k6] - , mOf (Proxy @era) 3 [k2, k4, k6] - ] - ] - ) :: - [(Script era, Script era)] - --- | Make list of script pairs (payment,staking). These are non-combined scripts --- Ie NO quantifer like All, Any, MofN, etc.) scripts. --- In post Shelley Eras, either Keylock or Require Start-Finish scripts. -baseScripts :: - forall era. - ScriptClass era => - Constants -> - [(Script era, Script era)] -baseScripts c = mkScripts @era (keyPairs c) - --- | Make a list of script pairs (payment,staking). Each of these are combined scripts. --- I.e. All, Any, MofN, etc. These come from combining the the first N (numBaseScripts) baseScripts --- When N==3, we get about 150 combined scripts. -combinedScripts :: - forall era. - ScriptClass era => - Constants -> - [(Script era, Script era)] -combinedScripts c@(Constants {numBaseScripts}) = - mkScriptCombinations @era . take numBaseScripts $ baseScripts @era c - --- | Constant list of KeyPairs intended to be used in the generators. -keyPairs :: Crypto c => Constants -> KeyPairs c -keyPairs Constants {maxNumKeyPairs} = mkKeyPairs <$> [1 .. maxNumKeyPairs] - -mkKeyPairs :: - DSIGNAlgorithm (DSIGN c) => - Word64 -> - (KeyPair kr c, KeyPair kr' c) -mkKeyPairs n = - (mkKeyPair_ (2 * n), mkKeyPair_ (2 * n + 1)) - where - mkKeyPair_ n_ = - (uncurry KeyPair . swap) - (mkKeyPair (RawSeed n_ n_ n_ n_ n_)) - -{------------------------------------------------------------------------------ - How to be a Generic Value -------------------------------------------------------------------------------} - -exponential :: Integer -> Integer -> Gen Integer -exponential minc maxc = QC.frequency spread - where - width = (maxc - minc) `div` n - deltas = [QC.choose (minc + (i - 1) * width, minc + i * width) | i <- [1 .. n]] - scales = [1, 2, 4, 6, 4, 2, 1] - n = fromIntegral (length scales) - spread = zip scales deltas diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/ShelleyEraGen.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/ShelleyEraGen.hs deleted file mode 100644 index b943e6dc8e9..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/ShelleyEraGen.hs +++ /dev/null @@ -1,146 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -fno-warn-orphans #-} - -module Test.Cardano.Ledger.Shelley.Generator.ShelleyEraGen (genCoin) where - -import qualified Cardano.Crypto.DSIGN as DSIGN -import qualified Cardano.Crypto.KES as KES -import Cardano.Crypto.Util (SignableRepresentation) -import Cardano.Ledger.AuxiliaryData (AuxiliaryDataHash) -import Cardano.Ledger.BaseTypes (StrictMaybe (..)) -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto (DSIGN, KES) -import qualified Cardano.Ledger.Crypto as CC (Crypto) -import Cardano.Ledger.Shelley (ShelleyEra) -import Cardano.Ledger.Shelley.API ( - Coin (..), - Update, - ) -import Cardano.Ledger.Shelley.Scripts (MultiSig (..)) -import Cardano.Ledger.Shelley.TxBody ( - ShelleyTxBody (ShelleyTxBody, stbInputs, stbOutputs, stbTxFee), - Withdrawals (..), - ) -import Cardano.Ledger.Shelley.TxOut (ShelleyTxOut (..)) -import Cardano.Ledger.Shelley.TxWits (ShelleyTxWits (ShelleyTxWits)) -import Cardano.Ledger.Slot (SlotNo (..)) -import Cardano.Ledger.TxIn (TxIn (..)) -import Cardano.Ledger.Val ((<+>)) -import Cardano.Protocol.TPraos.API (PraosCrypto) -import Control.Monad (replicateM) -import Data.Sequence.Strict (StrictSeq ((:|>))) -import Data.Set (Set) -import Lens.Micro.Extras (view) -import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes (Mock) -import Test.Cardano.Ledger.Shelley.Constants (Constants (..)) -import Test.Cardano.Ledger.Shelley.Generator.Core ( - GenEnv (..), - genCoin, - genNatural, - ) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (EraGen (..), MinGenTxout (..)) -import Test.Cardano.Ledger.Shelley.Generator.ScriptClass ( - Quantifier (..), - ScriptClass (..), - ) -import Test.Cardano.Ledger.Shelley.Generator.Trace.Chain () -import Test.Cardano.Ledger.Shelley.Generator.TxAuxData (genMetadata) -import Test.Cardano.Ledger.Shelley.Generator.Update (genPParams, genShelleyPParamsUpdate) -import Test.QuickCheck (Gen) - -{------------------------------------------------------------------------------ - ShelleyEra instances for EraGen and ScriptClass - -----------------------------------------------------------------------------} - -instance - ( PraosCrypto c - , DSIGN.Signable (DSIGN c) ~ SignableRepresentation - , KES.Signable (KES c) ~ SignableRepresentation - ) => - EraGen (ShelleyEra c) - where - genGenesisValue - ( GenEnv - _keySpace - _scriptspace - Constants {minGenesisOutputVal, maxGenesisOutputVal} - ) = - genCoin minGenesisOutputVal maxGenesisOutputVal - genEraTxBody _ge _utxo = genTxBody - genEraAuxiliaryData = genMetadata - - updateEraTxBody _utxo _pp _wits body' fee ins out = - body' - { stbTxFee = fee - , stbInputs = stbInputs body' <> ins - , stbOutputs = stbOutputs body' :|> out - } - genEraPParamsUpdate = genShelleyPParamsUpdate @(ShelleyEra c) - genEraPParams = genPParams - - genEraTxWits _ setWitVKey mapScriptWit = ShelleyTxWits setWitVKey mapScriptWit mempty - -instance CC.Crypto c => ScriptClass (ShelleyEra c) where - basescript _proxy = RequireSignature - isKey _ (RequireSignature hk) = Just hk - isKey _ _ = Nothing - quantify _ (RequireAllOf xs) = AllOf xs - quantify _ (RequireAnyOf xs) = AnyOf xs - quantify _ (RequireMOf n xs) = MOf n xs - quantify _ t = Leaf t - unQuantify _ (AllOf xs) = RequireAllOf xs - unQuantify _ (AnyOf xs) = RequireAnyOf xs - unQuantify _ (MOf n xs) = RequireMOf n xs - unQuantify _ (Leaf t) = t - -{------------------------------------------------------------------------------ - ShelleyEra generators - -----------------------------------------------------------------------------} - -genTxBody :: - ( EraTxOut era - , EraTxCert era - ) => - PParams era -> - SlotNo -> - Set (TxIn (EraCrypto era)) -> - StrictSeq (TxOut era) -> - StrictSeq (TxCert era) -> - Withdrawals (EraCrypto era) -> - Coin -> - StrictMaybe (Update era) -> - StrictMaybe (AuxiliaryDataHash (EraCrypto era)) -> - Gen (ShelleyTxBody era, [MultiSig era]) -genTxBody _pparams slot inputs outputs certs withdrawals fee update adHash = do - ttl <- genTimeToLive slot - return - ( ShelleyTxBody - inputs - outputs - certs - withdrawals - fee - ttl - update - adHash - , [] -- Shelley does not need any additional script witnesses - ) - -genTimeToLive :: SlotNo -> Gen SlotNo -genTimeToLive currentSlot = do - ttl <- genNatural 50 100 - pure $ currentSlot + SlotNo (fromIntegral ttl) - -instance Mock c => MinGenTxout (ShelleyEra c) where - calcEraMinUTxO _txout = view ppMinUTxOValueL - addValToTxOut v (ShelleyTxOut a u) = ShelleyTxOut a (v <+> u) - genEraTxOut _genenv genVal addrs = do - values <- replicateM (length addrs) genVal - pure (zipWith mkBasicTxOut addrs values) diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Trace/Chain.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Trace/Chain.hs deleted file mode 100644 index 1443c78c34a..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Trace/Chain.hs +++ /dev/null @@ -1,265 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DuplicateRecordFields #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} --- Allow for an orphan HasTrace instance for CHAIN, since HasTrace only pertains to tests -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Shelley.Generator.Trace.Chain where - -import Cardano.Ledger.BHeaderView (BHeaderView (..)) -import Cardano.Ledger.Shelley.API -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState (curPParamsEpochStateL, incrementalStakeDistr) -import Cardano.Ledger.Shelley.Rules ( - BbodyEnv, - ShelleyBbodyState, - ) -import Cardano.Ledger.Slot ( - BlockNo (..), - EpochNo (..), - SlotNo (..), - ) -import qualified Cardano.Ledger.UMap as UM -import Cardano.Ledger.Val ((<->)) -import qualified Cardano.Ledger.Val as Val -import Cardano.Protocol.TPraos.API -import Cardano.Protocol.TPraos.BHeader ( - HashHeader (..), - LastAppliedBlock (..), - hashHeaderToNonce, - ) -import Cardano.Protocol.TPraos.Rules.Tickn ( - TicknEnv, - TicknState, - ) -import Cardano.Slotting.Slot (WithOrigin (..)) -import Control.Monad.Trans.Reader (runReaderT) -import Control.State.Transition -import Data.Functor.Identity (runIdentity) -import qualified Data.ListMap as LM -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Proxy (Proxy (..)) -import Lens.Micro ((^.)) -import Lens.Micro.Extras (view) -import Numeric.Natural (Natural) -import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes (Mock) -import Test.Cardano.Ledger.Shelley.Generator.Block (genBlock) -import Test.Cardano.Ledger.Shelley.Generator.Core (GenEnv (..)) -import Test.Cardano.Ledger.Shelley.Generator.EraGen ( - EraGen (..), - MinCHAIN_STS, - MinLEDGER_STS, - genUtxo0, - ) -import Test.Cardano.Ledger.Shelley.Generator.Presets (genesisDelegs0) -import Test.Cardano.Ledger.Shelley.Rules.Chain ( - CHAIN, - ChainState (..), - initialShelleyState, - ) -import qualified Test.Cardano.Ledger.Shelley.Rules.Chain as STS (ChainState (ChainState)) -import Test.Cardano.Ledger.Shelley.Utils (maxLLSupply, mkHash) -import Test.Control.State.Transition.Trace.Generator.QuickCheck ( - BaseEnv, - HasTrace, - envGen, - interpretSTS, - sigGen, - ) -import qualified Test.Control.State.Transition.Trace.Generator.QuickCheck as QC -import Test.QuickCheck (Gen) - --- ====================================================== - --- The CHAIN STS at the root of the STS allows for generating blocks of transactions --- with meaningful delegation certificates, protocol and application updates, withdrawals etc. -instance - ( EraGen era - , EraSegWits era - , Mock (EraCrypto era) - , ApplyBlock era - , GetLedgerView era - , MinLEDGER_STS era - , MinCHAIN_STS era - , Embed (EraRule "BBODY" era) (CHAIN era) - , Environment (EraRule "BBODY" era) ~ BbodyEnv era - , State (EraRule "BBODY" era) ~ ShelleyBbodyState era - , Signal (EraRule "BBODY" era) ~ Block (BHeaderView (EraCrypto era)) era - , Embed (EraRule "TICKN" era) (CHAIN era) - , Environment (EraRule "TICKN" era) ~ TicknEnv - , State (EraRule "TICKN" era) ~ TicknState - , Signal (EraRule "TICKN" era) ~ Bool - , Embed (EraRule "TICK" era) (CHAIN era) - , Environment (EraRule "TICK" era) ~ () - , State (EraRule "TICK" era) ~ NewEpochState era - , Signal (EraRule "TICK" era) ~ SlotNo - , QC.HasTrace (EraRule "LEDGERS" era) (GenEnv era) - ) => - HasTrace (CHAIN era) (GenEnv era) - where - envGen _ = pure () - - sigGen ge _env st = genBlock ge st - - shrinkSignal = (\_x -> []) -- shrinkBlock -- TO DO FIX ME - - type BaseEnv (CHAIN era) = Globals - interpretSTS globals act = runIdentity $ runReaderT act globals - --- | The first block of the Shelley era will point back to the last block of the Byron era. --- For our purposes we can bootstrap the chain by just coercing the value. --- When this transition actually occurs, the consensus layer will do the work of making --- sure that the hash gets translated across the fork -lastByronHeaderHash :: forall proxy era. Era era => proxy era -> HashHeader (EraCrypto era) -lastByronHeaderHash _ = HashHeader $ mkHash 0 - --- Note: this function must be usable in place of 'applySTS' and needs to align --- with the signature 'RuleContext sts -> Gen (Either [[PredicateFailure sts]] (State sts))'. --- To achieve this we (1) use 'IRC CHAIN' (the "initial rule context") instead of simply 'Chain Env' --- and (2) always return Right (since this function does not raise predicate failures). -mkGenesisChainState :: - forall era a. - ( EraGen era - , EraGov era - ) => - GenEnv era -> - IRC (CHAIN era) -> - Gen (Either a (ChainState era)) -mkGenesisChainState ge@(GenEnv _ _ constants) (IRC _slotNo) = do - utxo0 <- genUtxo0 ge - - pParams <- genEraPParams @era constants - - pure . Right . withRewards $ - initialShelleyState @era - (At $ LastAppliedBlock (BlockNo 0) (SlotNo 0) (lastByronHeaderHash p)) - epoch0 - utxo0 - (maxLLSupply <-> Val.coin (balance utxo0)) - delegs0 - pParams - (hashHeaderToNonce (lastByronHeaderHash p)) - where - epoch0 = EpochNo 0 - delegs0 = genesisDelegs0 constants - -- We preload the initial state with some Treasury to enable generation - -- of things dependent on Treasury (e.g. MIR Treasury certificates) - withRewards :: ChainState h -> ChainState h - withRewards st@STS.ChainState {..} = - st - { chainNes = - chainNes - { nesEs = - (nesEs chainNes) - { esAccountState = - (esAccountState (nesEs chainNes)) - { asTreasury = Coin 1000000 - } - } - } - } - p :: Proxy era - p = Proxy - -mkOCertIssueNos :: - GenDelegs h -> - Map (KeyHash 'BlockIssuer h) Natural -mkOCertIssueNos (GenDelegs delegs0) = - Map.fromList (fmap f (Map.elems delegs0)) - where - f (GenDelegPair vk _) = (coerceKeyRole vk, 0) - --- Register the initial staking. --- --- This allows stake pools to produce blocks from genesis. -registerGenesisStaking :: - forall era. - EraGov era => - ShelleyGenesisStaking (EraCrypto era) -> - ChainState era -> - ChainState era -registerGenesisStaking - ShelleyGenesisStaking {sgsPools, sgsStake} - cs@STS.ChainState {chainNes = oldChainNes} = - cs - { chainNes = newChainNes - } - where - keyDeposit :: UM.CompactForm Coin - keyDeposit = (UM.compactCoinOrError . view ppKeyDepositL . view curPParamsEpochStateL . nesEs) oldChainNes - oldEpochState = nesEs oldChainNes - oldLedgerState = esLState oldEpochState - oldCertState = lsCertState oldLedgerState - - -- Note that this is only applicable in the initial configuration where - -- there is no existing stake distribution, since it would completely - -- overwrite any such thing. - newPoolDistr = calculatePoolDistr initSnapShot - - newChainNes = - oldChainNes - { nesEs = newEpochState - , nesPd = newPoolDistr - } - newEpochState = - oldEpochState - { esLState = newLedgerState - , esSnapshots = - (esSnapshots oldEpochState) - { ssStakeMark = initSnapShot - , ssStakeMarkPoolDistr = newPoolDistr - } - } - newLedgerState = - oldLedgerState - { lsCertState = newCertState - } - newCertState = - oldCertState - { certDState = newDState - , certPState = newPState - } - -- New delegation state. Since we're using base addresses, we only care - -- about updating the 'ssDelegations' field. - -- - -- See STS DELEG for details - pairWithDepositsButNoRewards _ = UM.RDPair (UM.CompactCoin 0) keyDeposit - newDState :: DState era - newDState = - (certDState oldCertState) - { dsUnified = - UM.unify - (Map.map pairWithDepositsButNoRewards . Map.mapKeys KeyHashObj . LM.toMap $ sgsStake) - (UM.ptrMap (dsUnified (certDState oldCertState))) - (Map.mapKeys KeyHashObj $ LM.toMap sgsStake) - Map.empty - } - - -- We consider pools as having been registered in slot 0 - -- See STS POOL for details - newPState :: PState era - newPState = - (certPState oldCertState) - { psStakePoolParams = LM.toMap sgsPools - } - - -- The new stake distribution is made on the basis of a snapshot taken - -- during the previous epoch. We create a "fake" snapshot in order to - -- establish an initial stake distribution. - initSnapShot = - incrementalStakeDistr - (newEpochState ^. curPParamsEpochStateL) - (utxosStakeDistr . lsUTxOState . esLState $ oldEpochState) - newDState - newPState diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Trace/DCert.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Trace/DCert.hs deleted file mode 100644 index e7273074928..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Trace/DCert.hs +++ /dev/null @@ -1,6 +0,0 @@ -module Test.Cardano.Ledger.Shelley.Generator.Trace.DCert - {-# DEPRECATED "Use `Test.Cardano.Ledger.Shelley.Generator.Trace.TxCert` instead" #-} ( - module Test.Cardano.Ledger.Shelley.Generator.Trace.TxCert, -) where - -import Test.Cardano.Ledger.Shelley.Generator.Trace.TxCert diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Trace/Ledger.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Trace/Ledger.hs deleted file mode 100644 index 6ceceb86958..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Trace/Ledger.hs +++ /dev/null @@ -1,184 +0,0 @@ -{-# LANGUAGE BlockArguments #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} --- The HasTrace instance relies on test generators and so cannot --- be included with the LEDGER STS -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Shelley.Generator.Trace.Ledger where - -import Cardano.Ledger.BaseTypes (Globals, TxIx, mkTxIxPartial) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState ( - AccountState (..), - CertState, - LedgerState (..), - UTxOState, - genesisState, - ) -import Cardano.Ledger.Shelley.Rules ( - DelegsEnv, - DelplEnv, - LedgerEnv (..), - ShelleyDELPL, - ShelleyDelplPredFailure, - ShelleyLEDGER, - ShelleyLEDGERS, - ShelleyLedgersEnv (..), - UtxoEnv, - ) -import Cardano.Ledger.Slot (SlotNo (..)) -import Cardano.Ledger.UTxO (EraUTxO) -import Control.Monad (foldM) -import Control.Monad.Trans.Reader (runReaderT) -import Control.State.Transition -import Data.Functor.Identity (runIdentity) -import Data.Sequence (Seq) -import qualified Data.Sequence as Seq -import GHC.Stack -import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes (Mock) -import Test.Cardano.Ledger.Shelley.Constants (Constants (..)) -import Test.Cardano.Ledger.Shelley.Generator.Core (GenEnv (..), genCoin) -import Test.Cardano.Ledger.Shelley.Generator.EraGen ( - EraGen (..), - MinLEDGER_STS, - genUtxo0, - ) -import Test.Cardano.Ledger.Shelley.Generator.Presets (genesisDelegs0) -import Test.Cardano.Ledger.Shelley.Generator.Trace.TxCert (CERTS) -import Test.Cardano.Ledger.Shelley.Generator.Utxo (genTx) -import Test.Cardano.Ledger.Shelley.Utils ( - applySTSTest, - runShelleyBase, - ) -import qualified Test.Control.State.Transition.Trace.Generator.QuickCheck as TQC -import Test.QuickCheck (Gen) - --- ====================================================== - -genAccountState :: Constants -> Gen AccountState -genAccountState Constants {minTreasury, maxTreasury, minReserves, maxReserves} = - AccountState - <$> genCoin minTreasury maxTreasury - <*> genCoin minReserves maxReserves - --- The LEDGER STS combines utxo and delegation rules and allows for generating transactions --- with meaningful delegation certificates. -instance - ( EraGen era - , EraGov era - , EraUTxO era - , Mock (EraCrypto era) - , MinLEDGER_STS era - , Embed (EraRule "DELPL" era) (CERTS era) - , Environment (EraRule "DELPL" era) ~ DelplEnv era - , State (EraRule "DELPL" era) ~ CertState era - , Signal (EraRule "DELPL" era) ~ TxCert era - , PredicateFailure (EraRule "DELPL" era) ~ ShelleyDelplPredFailure era - , Embed (EraRule "DELEGS" era) (ShelleyLEDGER era) - , Embed (EraRule "UTXOW" era) (ShelleyLEDGER era) - , Environment (EraRule "UTXOW" era) ~ UtxoEnv era - , State (EraRule "UTXOW" era) ~ UTxOState era - , Signal (EraRule "UTXOW" era) ~ Tx era - , Environment (EraRule "DELEGS" era) ~ DelegsEnv era - , State (EraRule "DELEGS" era) ~ CertState era - , Signal (EraRule "DELEGS" era) ~ Seq (TxCert era) - , ProtVerAtMost era 8 - ) => - TQC.HasTrace (ShelleyLEDGER era) (GenEnv era) - where - envGen GenEnv {geConstants} = - LedgerEnv (SlotNo 0) minBound - <$> genEraPParams @era geConstants - <*> genAccountState geConstants - - sigGen genenv env state = genTx genenv env state - - shrinkSignal _ = [] -- TODO add some kind of Shrinker? - - type BaseEnv (ShelleyLEDGER era) = Globals - interpretSTS globals act = runIdentity $ runReaderT act globals - -instance - forall era. - ( EraGen era - , EraGov era - , EraUTxO era - , Mock (EraCrypto era) - , MinLEDGER_STS era - , Embed (EraRule "DELPL" era) (CERTS era) - , Environment (EraRule "DELPL" era) ~ DelplEnv era - , State (EraRule "DELPL" era) ~ CertState era - , Signal (EraRule "DELPL" era) ~ TxCert era - , PredicateFailure (EraRule "DELPL" era) ~ ShelleyDelplPredFailure era - , Embed (EraRule "DELEG" era) (ShelleyDELPL era) - , Embed (EraRule "LEDGER" era) (ShelleyLEDGERS era) - , ProtVerAtMost era 8 - ) => - TQC.HasTrace (ShelleyLEDGERS era) (GenEnv era) - where - envGen GenEnv {geConstants} = - LedgersEnv (SlotNo 0) - <$> genEraPParams @era geConstants - <*> genAccountState geConstants - - -- a LEDGERS signal is a sequence of LEDGER signals - sigGen - ge@(GenEnv _ _ Constants {maxTxsPerBlock}) - (LedgersEnv slotNo pParams reserves) - ls = do - (_, txs') <- - foldM - genAndApplyTx - (ls, []) - [minBound .. mkTxIxPartial (toInteger maxTxsPerBlock - 1)] - - pure $ Seq.fromList (reverse txs') -- reverse Newest first to Oldest first - where - genAndApplyTx :: - HasCallStack => - (LedgerState era, [Tx era]) -> - TxIx -> - Gen (LedgerState era, [Tx era]) - genAndApplyTx (ls', txs) txIx = do - let ledgerEnv = LedgerEnv slotNo txIx pParams reserves - tx <- genTx ge ledgerEnv ls' - - let res = - runShelleyBase $ - applySTSTest @(EraRule "LEDGER" era) - (TRC (ledgerEnv, ls', tx)) - case res of - Left pf -> error ("LEDGER sigGen: " <> show pf) - Right ls'' -> pure (ls'', tx : txs) - - shrinkSignal = const [] - - type BaseEnv (ShelleyLEDGERS era) = Globals - interpretSTS globals act = runIdentity $ runReaderT act globals - --- | Generate initial state for the LEDGER STS using the STS environment. --- --- Note: this function must be usable in place of 'applySTS' and needs to align --- with the signature 'RuleContext sts -> Gen (Either [[PredicateFailure sts]] (State sts))'. --- To achieve this we (1) use 'IRC LEDGER' (the "initial rule context") instead of simply 'LedgerEnv' --- and (2) always return Right (since this function does not raise predicate failures). -mkGenesisLedgerState :: - forall a era ledger. - ( EraGen era - , EraGov era - ) => - GenEnv era -> - IRC ledger -> - Gen (Either a (LedgerState era)) -mkGenesisLedgerState ge@(GenEnv _ _ c) _ = - Right . genesisState (genesisDelegs0 c) <$> genUtxo0 ge diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Trace/TxCert.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Trace/TxCert.hs deleted file mode 100644 index bd69406cec4..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Trace/TxCert.hs +++ /dev/null @@ -1,290 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} - -module Test.Cardano.Ledger.Shelley.Generator.Trace.TxCert ( - CERTS, - genTxCerts, -) -where - -import Cardano.Ledger.BaseTypes (CertIx, Globals, ShelleyBase, TxIx) -import Cardano.Ledger.CertState ( - CertState (..), - lookupDepositDState, - lookupDepositVState, - psStakePoolParams, - ) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Core -import qualified Cardano.Ledger.Core as Core -import Cardano.Ledger.Keys (HasKeyRole (coerceKeyRole), asWitness) -import Cardano.Ledger.Shelley.API ( - AccountState, - DelplEnv (..), - KeyRole (..), - Ptr (..), - ShelleyDELPL, - ) -import Cardano.Ledger.Shelley.Rules (ShelleyDelplEvent, ShelleyDelplPredFailure) -import Cardano.Ledger.Slot (SlotNo (..)) -import Control.Monad.Trans.Reader (runReaderT) -import Control.State.Transition ( - BaseM, - Embed, - Environment, - Event, - PredicateFailure, - STS (..), - Signal, - State, - TRC (..), - TransitionRule, - initialRules, - judgmentContext, - trans, - transitionRules, - wrapEvent, - wrapFailed, - ) -import Data.Functor.Identity (runIdentity) -import Data.List (partition) -import qualified Data.Map.Strict as Map -import Data.Maybe (catMaybes, mapMaybe) -import Data.Proxy (Proxy (..)) -import GHC.Generics (Generic) -import GHC.Stack (HasCallStack) -import Test.Cardano.Ledger.Core.KeyPair (KeyPair) -import Test.Cardano.Ledger.Shelley.Constants (Constants (..)) -import Test.Cardano.Ledger.Shelley.Generator.Core (GenEnv (..), KeySpace (..)) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (EraGen (..)) -import Test.Cardano.Ledger.Shelley.Generator.ScriptClass (scriptKeyCombination) -import Test.Cardano.Ledger.Shelley.Generator.TxCert (CertCred (..), genTxCert) -import Test.Cardano.Ledger.Shelley.Utils (testGlobals) -import Test.Control.State.Transition.Trace (TraceOrder (OldestFirst), lastState, traceSignals) -import qualified Test.Control.State.Transition.Trace.Generator.QuickCheck as QC -import Test.QuickCheck (Gen) - --- | This is a non-spec STS used to generate a sequence of certificates with --- witnesses. -data CERTS era - -newtype CertsPredicateFailure era - = CertsFailure (PredicateFailure (Core.EraRule "DELPL" era)) - deriving (Generic) - -newtype CertsEvent era - = CertsEvent (Event (Core.EraRule "DELPL" era)) - -deriving stock instance - Eq (PredicateFailure (Core.EraRule "DELPL" era)) => - Eq (CertsPredicateFailure era) - -deriving stock instance - Show (PredicateFailure (Core.EraRule "DELPL" era)) => - Show (CertsPredicateFailure era) - -instance - ( Era era - , Embed (Core.EraRule "DELPL" era) (CERTS era) - , Environment (Core.EraRule "DELPL" era) ~ DelplEnv era - , State (Core.EraRule "DELPL" era) ~ CertState era - , Signal (Core.EraRule "DELPL" era) ~ TxCert era - ) => - STS (CERTS era) - where - type Environment (CERTS era) = (SlotNo, TxIx, Core.PParams era, AccountState) - type State (CERTS era) = (CertState era, CertIx) - type Signal (CERTS era) = Maybe (TxCert era, CertCred era) - type PredicateFailure (CERTS era) = CertsPredicateFailure era - type Event (CERTS era) = CertsEvent era - - type BaseM (CERTS era) = ShelleyBase - - initialRules = [] - transitionRules = [certsTransition] - -certsTransition :: - forall era. - ( Embed (Core.EraRule "DELPL" era) (CERTS era) - , Environment (Core.EraRule "DELPL" era) ~ DelplEnv era - , State (Core.EraRule "DELPL" era) ~ CertState era - , Signal (Core.EraRule "DELPL" era) ~ TxCert era - ) => - TransitionRule (CERTS era) -certsTransition = do - TRC - ( (slot, txIx, pp, acnt) - , (dpState, nextCertIx) - , c - ) <- - judgmentContext - - case c of - Just (cert, _wits) -> do - let ptr = Ptr slot txIx nextCertIx - dpState' <- - trans @(Core.EraRule "DELPL" era) $ - TRC (DelplEnv slot ptr pp acnt, dpState, cert) - - pure (dpState', succ nextCertIx) - Nothing -> - pure (dpState, nextCertIx) - -instance - ( Era era - , STS (ShelleyDELPL era) - , PredicateFailure (Core.EraRule "DELPL" era) ~ ShelleyDelplPredFailure era - , Event (Core.EraRule "DELPL" era) ~ ShelleyDelplEvent era - ) => - Embed (ShelleyDELPL era) (CERTS era) - where - wrapFailed = CertsFailure - wrapEvent = CertsEvent - -instance - ( EraGen era - , Embed (Core.EraRule "DELPL" era) (CERTS era) - , Environment (Core.EraRule "DELPL" era) ~ DelplEnv era - , State (Core.EraRule "DELPL" era) ~ CertState era - , Signal (Core.EraRule "DELPL" era) ~ TxCert era - , ProtVerAtMost era 8 - ) => - QC.HasTrace (CERTS era) (GenEnv era) - where - envGen _ = error "HasTrace CERTS - envGen not required" - - sigGen - ( GenEnv - ks - _scriptspace - constants - ) - (slot, _txIx, pparams, accountState) - (dpState, _certIx) = - genTxCert - constants - ks - pparams - accountState - dpState - slot - - shrinkSignal = const [] - - type BaseEnv (CERTS era) = Globals - interpretSTS globals act = runIdentity $ runReaderT act globals - --- | Generate certificates and also return the associated witnesses and --- deposits and refunds required. -genTxCerts :: - forall era. - ( EraGen era - , Embed (Core.EraRule "DELPL" era) (CERTS era) - , Environment (Core.EraRule "DELPL" era) ~ DelplEnv era - , State (Core.EraRule "DELPL" era) ~ CertState era - , Signal (Core.EraRule "DELPL" era) ~ TxCert era - ) => - GenEnv era -> - Core.PParams era -> - CertState era -> - SlotNo -> - TxIx -> - AccountState -> - Gen - ( [TxCert era] - , Coin - , Coin - , CertState era - , [KeyPair 'Witness (EraCrypto era)] - , [(Core.Script era, Core.Script era)] - ) -genTxCerts - ge@( GenEnv - KeySpace_ {ksIndexedStakingKeys} - _scriptspace - Constants {maxCertsPerTx} - ) - pp - certState@CertState {certDState, certVState, certPState} - slot - txIx - acnt = do - let env = (slot, txIx, pp, acnt) - st0 = (certState, minBound) - - certsTrace <- - QC.traceFrom @(CERTS era) testGlobals maxCertsPerTx ge env st0 - - let certsCreds = catMaybes . traceSignals OldestFirst $ certsTrace - (lastState_, _) = lastState certsTrace - (certs, creds) = unzip certsCreds - (scriptCreds, keyCreds) = partition isScript creds - keyCreds' = concat (keyCreds : map scriptWitnesses scriptCreds) - - refunds = - getTotalRefundsTxCerts - pp - (lookupDepositDState certDState) - (lookupDepositVState certVState) - certs - - deposits = getTotalDepositsTxCerts pp (`Map.member` psStakePoolParams certPState) certs - - certWits = concat (keyCredAsWitness <$> keyCreds') - certScripts = extractScriptCred <$> scriptCreds - pure - ( certs - , deposits - , refunds - , lastState_ - , certWits - , certScripts - ) - where - isScript (ScriptCred _) = True - isScript _ = False - - scriptWitnesses :: CertCred era -> [CertCred era] - scriptWitnesses (ScriptCred (_, stakeScript)) = - StakeCred <$> witnessHashes'' - where - witnessHashes = coerceKeyRole <$> scriptKeyCombination (Proxy @era) stakeScript - witnessHashes'' = coerceKeyRole <$> mapMaybe lookupWit witnessHashes - scriptWitnesses _ = [] - - lookupWit = flip Map.lookup ksIndexedStakingKeys - -extractScriptCred :: - (HasCallStack, Era era, Show (Core.Script era)) => - CertCred era -> - (Core.Script era, Core.Script era) -extractScriptCred (ScriptCred c) = c -extractScriptCred x = - error $ - "extractScriptCred: use only for Script Credentials - " - <> show x - -keyCredAsWitness :: - (HasCallStack, Era era, Show (Core.Script era)) => - CertCred era -> - [KeyPair 'Witness (EraCrypto era)] -keyCredAsWitness (DelegateCred c) = asWitness <$> c -keyCredAsWitness (CoreKeyCred c) = asWitness <$> c -keyCredAsWitness (StakeCred c) = [asWitness c] -keyCredAsWitness (PoolCred c) = [asWitness c] -keyCredAsWitness NoCred = [] -keyCredAsWitness x = - error $ - "keyCredAsWitness: use only for Script Credentials - " - <> show x diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/TxAuxData.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/TxAuxData.hs deleted file mode 100644 index 6f8934d332f..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/TxAuxData.hs +++ /dev/null @@ -1,134 +0,0 @@ -{-# LANGUAGE NamedFieldPuns #-} - -module Test.Cardano.Ledger.Shelley.Generator.TxAuxData ( - genMetadata, - genMetadata', -) -where - -import Cardano.Ledger.BaseTypes ( - StrictMaybe (..), - ) -import Cardano.Ledger.Core -import Cardano.Ledger.Shelley.TxAuxData ( - Metadatum (..), - ShelleyTxAuxData (..), - ) -import Control.Exception (assert) -import qualified Data.ByteString.Char8 as BS (length, pack) -import qualified Data.Map.Strict as Map -import qualified Data.Text as T (pack) -import qualified Data.Text.Encoding as T -import Data.Word (Word64) -import Test.Cardano.Ledger.Shelley.Constants (Constants (..)) -import Test.QuickCheck (Gen) -import qualified Test.QuickCheck as QC - --- | Max size of generated Metadatum List and Map -collectionDatumMaxSize :: Int -collectionDatumMaxSize = 5 - --- | Max size of generated Metadata map -metadataMaxSize :: Int -metadataMaxSize = 3 - --- | Generate ShelleyTxAuxData (and compute hash) with frequency 'frequencyTxWithMetadata' -genMetadata :: Era era => Constants -> Gen (StrictMaybe (ShelleyTxAuxData era)) -genMetadata (Constants {frequencyTxWithMetadata}) = - QC.frequency - [ (frequencyTxWithMetadata, SJust <$> genMetadata') - , (100 - frequencyTxWithMetadata, pure SNothing) - ] - --- | Generate Metadata (and compute hash) of size up to 'metadataMaxSize' -genMetadata' :: Era era => Gen (ShelleyTxAuxData era) -genMetadata' = do - n <- QC.choose (1, metadataMaxSize) - ShelleyTxAuxData . Map.fromList - <$> QC.vectorOf n genMetadatum - --- | Generate one of the Metadatum -genMetadatum :: Gen (Word64, Metadatum) -genMetadatum = do - (,) - <$> QC.arbitrary - <*> ( QC.oneof - [ genDatumInt - , genDatumString - , genDatumBytestring - , genMetadatumList - , genMetadatumMap - ] - ) - -genDatumInt :: Gen Metadatum -genDatumInt = - I - <$> QC.frequency - [ (8, QC.choose (minVal, maxVal)) - , (1, pure minVal) - , (1, pure maxVal) - ] - where - minVal, maxVal :: Integer - minVal = -maxVal - maxVal = fromIntegral (maxBound :: Word64) - -genDatumString :: Gen Metadatum -genDatumString = - QC.sized $ \sz -> do - n <- QC.choose (0, min sz 64) - cs <- genUtf8StringOfSize n - let s = T.pack cs - assert (BS.length (T.encodeUtf8 s) == n) $ - return (S s) - --- | Produce an arbitrary Unicode string such that it's UTF8 encoding size in --- bytes is exactly the given length. -genUtf8StringOfSize :: Int -> Gen [Char] -genUtf8StringOfSize 0 = return [] -genUtf8StringOfSize n = do - cz <- QC.choose (1, min n 4) - c <- case cz of - 1 -> QC.choose ('\x00000', '\x00007f') - 2 -> QC.choose ('\x00080', '\x0007ff') - 3 -> - QC.oneof - [ QC.choose ('\x00800', '\x00d7ff') - , -- skipping UTF-16 surrogates d800--dfff - QC.choose ('\x0e000', '\x00ffff') - ] - _ -> QC.choose ('\x10000', '\x10ffff') - cs <- genUtf8StringOfSize (n - cz) - return (c : cs) - -genDatumBytestring :: Gen Metadatum -genDatumBytestring = - QC.sized $ \sz -> do - n <- QC.choose (0, min sz 64) - B . BS.pack <$> QC.vectorOf n QC.arbitrary - --- | Generate a 'MD.List [Metadatum]' --- --- Note: to limit generated metadata size, impact on transaction fees and --- cost of hashing, we generate only lists of "simple" Datums, not lists --- of list or map Datum. -genMetadatumList :: Gen Metadatum -genMetadatumList = List <$> vectorOfMetadatumSimple - --- | Generate a 'MD.Map ('[(Metadatum, Metadatum)]') -genMetadatumMap :: Gen Metadatum -genMetadatumMap = - Map <$> (zip <$> vectorOfMetadatumSimple <*> vectorOfMetadatumSimple) - -vectorOfMetadatumSimple :: Gen [Metadatum] -vectorOfMetadatumSimple = do - n <- QC.choose (1, collectionDatumMaxSize) - QC.vectorOf - n - ( QC.oneof - [ genDatumInt - , genDatumString - , genDatumBytestring - ] - ) diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/TxCert.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/TxCert.hs deleted file mode 100644 index 1664acf1541..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/TxCert.hs +++ /dev/null @@ -1,571 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-redundant-constraints #-} - -module Test.Cardano.Ledger.Shelley.Generator.TxCert ( - genTxCert, - CertCred (..), -) -where - -import Cardano.Ledger.Address (RewardAccount (..)) -import Cardano.Ledger.Coin (DeltaCoin (..), toDeltaCoin) -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Keys ( - coerceKeyRole, - hashKey, - hashVerKeyVRF, - ) -import Cardano.Ledger.Shelley.API ( - AccountState (..), - CertState (..), - Coin (..), - Credential (..), - DState (..), - GenDelegPair (..), - GenDelegs (..), - KeyHash, - KeyRole (..), - Network (..), - PState (..), - PoolParams (..), - StrictMaybe (..), - VKey, - ) -import Cardano.Ledger.Shelley.Core -import qualified Cardano.Ledger.Shelley.HardForks as HardForks -import Cardano.Ledger.Shelley.LedgerState (availableAfterMIR, rewards) -import Cardano.Ledger.Slot (EpochNo (EpochNo), SlotNo) -import qualified Cardano.Ledger.UMap as UM -import Control.Monad (replicateM) -import Control.SetAlgebra (dom, domain, eval, (∈)) -import Data.Foldable (fold) -import qualified Data.List as List -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map (elems, fromList, lookup) -import Data.Maybe (fromMaybe) -import Data.Ratio ((%)) -import qualified Data.Sequence.Strict as StrictSeq -import Data.Set ((\\)) -import qualified Data.Set as Set -import Lens.Micro ((^.)) -import Numeric.Natural (Natural) -import Test.Cardano.Ledger.Core.KeyPair (KeyPair, KeyPairs, vKey) -import Test.Cardano.Ledger.Shelley.Constants (Constants (..)) -import Test.Cardano.Ledger.Shelley.Generator.Core ( - AllIssuerKeys (..), - KeySpace (..), - genInteger, - genWord64, - mkCred, - tooLateInEpoch, - ) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (EraGen) -import Test.Cardano.Ledger.Shelley.Utils -import Test.Cardano.Protocol.TPraos.Create (VRFKeyPair (..)) -import Test.QuickCheck (Gen) -import qualified Test.QuickCheck as QC - --- ====================================================== - -data CertCred era - = CoreKeyCred [GenesisKeyPair (EraCrypto era)] - | StakeCred (KeyPair 'Staking (EraCrypto era)) - | PoolCred (KeyPair 'StakePool (EraCrypto era)) - | ScriptCred (Script era, Script era) - | DelegateCred [KeyPair 'GenesisDelegate (EraCrypto era)] - | NoCred - -deriving instance (Era era, Show (Script era)) => Show (CertCred era) - --- | Occasionally generate a valid certificate --- --- Returning `Nothing` indicates a failure to generate a value, usually due to lack of --- available values from the pre-populated (e.g. key) spaces. --- A `Just` represents a successfully generated value. --- --- Different generators return witnesses that are either genesis or regular keys. --- --- Note: we register keys and pools more often than deregistering/retiring them, --- and we generate more delegations than registrations of keys/pools. -genTxCert :: - forall era. - (EraGen era, ProtVerAtMost era 8) => - Constants -> - KeySpace era -> - PParams era -> - AccountState -> - CertState era -> - SlotNo -> - Gen (Maybe (TxCert era, CertCred era)) -genTxCert - c@( Constants - { frequencyRegCert - , frequencyRegPoolCert - , frequencyDelegCert - , frequencyGenesisDelegationCert - , frequencyDeRegKeyCert - , frequencyRetirePoolCert - , frequencyMIRCert - } - ) - KeySpace_ - { ksCoreNodes - , ksKeyPairs - , ksMSigScripts - , ksStakePools - , ksGenesisDelegates - , ksIndexedGenDelegates - } - pparams - accountState - dpState - slot = - QC.frequency - [ (frequencyRegCert, genRegKeyCert c ksKeyPairs ksMSigScripts dState) - , (frequencyRegPoolCert, genRegPool ksStakePools ksKeyPairs (pparams ^. ppMinPoolCostL)) - , (frequencyDelegCert, genDelegation c ksKeyPairs ksMSigScripts dpState) - , - ( frequencyGenesisDelegationCert - , genGenesisDelegation ksCoreNodes ksGenesisDelegates dpState - ) - , (frequencyDeRegKeyCert, genDeRegKeyCert c ksKeyPairs ksMSigScripts dState) - , (frequencyRetirePoolCert, genRetirePool pparams ksStakePools pState slot) - , - ( frequencyMIRCert - , genInstantaneousRewards - slot - ksIndexedGenDelegates - pparams - accountState - dState - ) - ] - where - dState = certDState dpState - pState = certPState dpState - --- | Generate a RegKey certificate -genRegKeyCert :: - forall era. - (EraScript era, ShelleyEraTxCert era) => - Constants -> - KeyPairs (EraCrypto era) -> - [(Script era, Script era)] -> - DState era -> - Gen (Maybe (TxCert era, CertCred era)) -genRegKeyCert - Constants {frequencyKeyCredReg, frequencyScriptCredReg} - keys - scripts - delegSt = - QC.frequency - [ - ( frequencyKeyCredReg - , case availableKeys of - [] -> pure Nothing - _ -> do - (_payKey, stakeKey) <- QC.elements availableKeys - pure $ - Just - ( RegTxCert (mkCred stakeKey) - , NoCred - ) - ) - , - ( frequencyScriptCredReg - , case availableScripts of - [] -> pure Nothing - _ -> do - (_, stakeScript) <- QC.elements availableScripts - pure $ - Just - ( RegTxCert (scriptToCred' stakeScript) - , NoCred - ) - ) - ] - where - scriptToCred' = ScriptHashObj . hashScript @era - notRegistered k = UM.notMember k (rewards delegSt) - availableKeys = filter (notRegistered . mkCred . snd) keys - availableScripts = filter (notRegistered . scriptToCred' . snd) scripts - --- | Generate a DeRegKey certificate along with the staking credential, which is --- needed to witness the certificate. -genDeRegKeyCert :: - forall era. - (EraScript era, ShelleyEraTxCert era) => - Constants -> - KeyPairs (EraCrypto era) -> - [(Script era, Script era)] -> - DState era -> - Gen (Maybe (TxCert era, CertCred era)) -genDeRegKeyCert Constants {frequencyKeyCredDeReg, frequencyScriptCredDeReg} keys scripts dState = - QC.frequency - [ - ( frequencyKeyCredDeReg - , case availableKeys of - [] -> pure Nothing - _ -> do - (_payKey, stakeKey) <- QC.elements availableKeys - pure $ Just (UnRegTxCert (mkCred stakeKey), StakeCred stakeKey) - ) - , - ( frequencyScriptCredDeReg - , case availableScripts of - [] -> pure Nothing - _ -> do - scriptPair@(_, stakeScript) <- QC.elements availableScripts - pure $ - Just - ( UnRegTxCert (scriptToCred' stakeScript) - , ScriptCred scriptPair - ) - ) - ] - where - scriptToCred' = ScriptHashObj . hashScript @era - registered k = UM.member k (rewards dState) - availableKeys = - filter - ( \(_, k) -> - let cred = mkCred k - in ((&&) <$> registered <*> zeroRewards) cred - ) - keys - availableScripts = - filter - ( \(_, s) -> - let cred = scriptToCred' s - in ((&&) <$> registered <*> zeroRewards) cred - ) - scripts - zeroRewards k = case UM.lookup (raCredential $ RewardAccount Testnet k) (rewards dState) of - Nothing -> False - Just (UM.RDPair ccoin _) -> ccoin == UM.CompactCoin 0 - --- | Generate a new delegation certificate by picking a registered staking --- credential and pool. The delegation is witnessed by the delegator's --- credential which we return along with the certificate. --- --- Returns nothing if there are no registered staking credentials or no --- registered pools. -genDelegation :: - forall era. - (EraScript era, ShelleyEraTxCert era) => - Constants -> - KeyPairs (EraCrypto era) -> - [(Script era, Script era)] -> - CertState era -> - Gen (Maybe (TxCert era, CertCred era)) -genDelegation - Constants {frequencyKeyCredDelegation, frequencyScriptCredDelegation} - keys - scripts - dpState = - if null availablePools - then pure Nothing - else - QC.frequency - [ - ( frequencyKeyCredDelegation - , if null availableDelegates - then pure Nothing - else - mkCert - <$> QC.elements availableDelegates - <*> QC.elements availablePools - ) - , - ( frequencyScriptCredDelegation - , if null availableDelegatesScripts - then pure Nothing - else - mkCertFromScript - <$> QC.elements availableDelegatesScripts - <*> QC.elements availablePools - ) - ] - where - scriptToCred' = ScriptHashObj . hashScript @era - mkCert (_, delegatorKey) poolKey = Just (cert, StakeCred delegatorKey) - where - cert = DelegStakeTxCert (mkCred delegatorKey) poolKey - mkCertFromScript (s, delegatorScript) poolKey = - Just (scriptCert, ScriptCred (s, delegatorScript)) - where - scriptCert = - DelegStakeTxCert (scriptToCred' delegatorScript) poolKey - registeredDelegate k = UM.member k (rewards (certDState dpState)) - availableDelegates = filter (registeredDelegate . mkCred . snd) keys - availableDelegatesScripts = - filter (registeredDelegate . scriptToCred' . snd) scripts - registeredPools = psStakePoolParams (certPState dpState) - availablePools = Set.toList $ domain registeredPools - -genGenesisDelegation :: - (Era era, ShelleyEraTxCert era, ProtVerAtMost era 8) => - -- | Core nodes - [(GenesisKeyPair (EraCrypto era), AllIssuerKeys (EraCrypto era) 'GenesisDelegate)] -> - -- | All potential genesis delegate keys - [AllIssuerKeys (EraCrypto era) 'GenesisDelegate] -> - CertState era -> - Gen (Maybe (TxCert era, CertCred era)) -genGenesisDelegation coreNodes delegateKeys dpState = - if null genesisDelegators || null availableDelegatees - then pure Nothing - else do - gk <- QC.elements genesisDelegators - AllIssuerKeys {aikCold, aikVrf} <- QC.elements availableDelegatees - case Map.lookup (hashVKey gk) genDelegs_ of - Nothing -> pure Nothing - Just _ -> return $ mkCert gk aikCold (vrfVerKey aikVrf) - where - allDelegateKeys = (snd <$> coreNodes) <> delegateKeys - hashVKey = hashKey . vKey - mkCert gkey key vrf = - Just - ( GenesisDelegTxCert - (hashVKey gkey) - (hashVKey key) - (hashVerKeyVRF vrf) - , CoreKeyCred [gkey] - ) - GenDelegs genDelegs_ = dsGenDelegs $ certDState dpState - genesisDelegator k = eval (k ∈ dom genDelegs_) - genesisDelegators = filter (genesisDelegator . hashVKey) (fst <$> coreNodes) - activeGenDelegsKeyHashSet = - Set.fromList $ genDelegKeyHash <$> Map.elems genDelegs_ - futureGenDelegsKeyHashSet = - Set.fromList $ genDelegKeyHash <$> Map.elems (dsFutureGenDelegs $ certDState dpState) - notActiveDelegatee k = coerceKeyRole k `Set.notMember` activeGenDelegsKeyHashSet - notFutureDelegatee k = coerceKeyRole k `Set.notMember` futureGenDelegsKeyHashSet - notDelegatee k = notActiveDelegatee k && notFutureDelegatee k - availableDelegatees = filter (notDelegatee . hashVKey . aikCold) allDelegateKeys - --- | Generate PoolParams and the key witness. -genStakePool :: - forall c. - Crypto c => - -- | Available keys for stake pool registration - [AllIssuerKeys c 'StakePool] -> - -- | KeyPairs containing staking keys to act as owners/reward account - KeyPairs c -> - -- | Minimum pool cost Protocol Param - Coin -> - Gen (PoolParams c, KeyPair 'StakePool c) -genStakePool poolKeys skeys (Coin minPoolCost) = - mkPoolParams - <$> QC.elements poolKeys - <*> ( Coin -- pledge - <$> QC.frequency - [ (1, genInteger 1 100) - , (5, pure 0) - ] - ) - <*> (Coin <$> genInteger minPoolCost (minPoolCost + 50)) -- cost - <*> (fromInteger <$> QC.choose (0, 100) :: Gen Natural) - <*> getAnyStakeKey skeys - where - getAnyStakeKey :: KeyPairs c -> Gen (VKey 'Staking c) - getAnyStakeKey keys = vKey . snd <$> QC.elements keys - mkPoolParams allPoolKeys pledge cost marginPercent acntKey = - let interval = unsafeBoundRational $ fromIntegral marginPercent % 100 - pps = - PoolParams - (hashKey . vKey $ aikCold allPoolKeys) - (hashVerKeyVRF . vrfVerKey $ aikVrf allPoolKeys) - pledge - cost - interval - (RewardAccount Testnet $ KeyHashObj $ hashKey acntKey) - Set.empty - StrictSeq.empty - SNothing - in (pps, aikCold allPoolKeys) - --- | Generate `RegPool` and the key witness. -genRegPool :: - (Era era, EraTxCert era) => - [AllIssuerKeys (EraCrypto era) 'StakePool] -> - KeyPairs (EraCrypto era) -> - Coin -> - Gen (Maybe (TxCert era, CertCred era)) -genRegPool poolKeys keyPairs minPoolCost = do - (pps, poolKey) <- genStakePool poolKeys keyPairs minPoolCost - pure $ Just (RegPoolTxCert pps, PoolCred poolKey) - --- | Generate a RetirePool along with the keypair which registered it. --- --- Choose a `KeyHash` to retire, by pulling from the set of registered --- `KeyHash`s in the `stakePools` mapping. Generate a random epoch within an --- acceptable range of the current epoch. In addition to the `RetirePool` --- constructed value, return the keypair which corresponds to the selected --- `KeyHash`, by doing a lookup in the set of `availableKeys`. -genRetirePool :: - (EraPParams era, EraTxCert era) => - PParams era -> - [AllIssuerKeys (EraCrypto era) 'StakePool] -> - PState era -> - SlotNo -> - Gen (Maybe (TxCert era, CertCred era)) -genRetirePool _pp poolKeys pState slot = - if null retireable - then pure Nothing - else - ( \keyHash epoch -> - Just - ( RetirePoolTxCert keyHash epoch - , PoolCred (aikCold $ lookupHash keyHash) - ) - ) - <$> QC.elements retireable - <*> (EpochNo <$> genWord64 epochLow epochHigh) - where - stakePools = psStakePoolParams pState - registered_ = eval (dom stakePools) - retiring_ = domain (psRetiring pState) - retireable = Set.toList (registered_ \\ retiring_) - lookupHash hk' = - fromMaybe - (error "genRetirePool: could not find keyHash") - (List.find (\x -> aikColdKeyHash x == hk') poolKeys) - EpochNo cepoch = epochFromSlotNo slot - epochLow = cepoch + 1 - -- if epochHigh is more than a few epochs above epochLow, then - -- because our traces are at most, maybe 6 or so traces long, - -- we will never reap any pools. Choosing a delta between 1 and 10 - -- should give good mix of sometimes reaping, but mostly not. - epochHigh = cepoch + 10 - --- | Generate an InstantaneousRewards Transfer certificate -genInstantaneousRewardsAccounts :: - (EraPParams era, ShelleyEraTxCert era, ProtVerAtMost era 8) => - SlotNo -> - -- | Index over the cold key hashes of all possible Genesis Delegates - Map (KeyHash 'GenesisDelegate (EraCrypto era)) (AllIssuerKeys (EraCrypto era) 'GenesisDelegate) -> - PParams era -> - AccountState -> - DState era -> - Gen (Maybe (TxCert era, CertCred era)) -genInstantaneousRewardsAccounts s genesisDelegatesByHash pparams accountState delegSt = do - let (GenDelegs genDelegs_) = dsGenDelegs delegSt - lookupGenDelegate' gk = - fromMaybe - (error "genInstantaneousRewardsAccounts: lookupGenDelegate failed") - (Map.lookup gk genesisDelegatesByHash) - credentials = rewards delegSt - winnerCreds <- - take - <$> QC.elements [0 .. (max 0 $ UM.size credentials - 1)] - <*> QC.shuffle (Set.toList (UM.domain credentials)) - coins <- replicateM (length winnerCreds) $ genInteger 1 1000 - let credCoinMap = Map.fromList $ zip winnerCreds (fmap DeltaCoin coins) - - coreSigners <- - take - <$> QC.elements [5 .. (max 0 $ length genDelegs_ - 1)] - <*> QC.shuffle (lookupGenDelegate' . genDelegKeyHash <$> Map.elems genDelegs_) - - pot <- QC.elements [ReservesMIR, TreasuryMIR] - let available = availableAfterMIR pot accountState (dsIRewards delegSt) - let rewardAmount = fold $ Map.elems credCoinMap - insufficientFunds = toDeltaCoin available < rewardAmount - pure $ - if -- Discard this generator (by returning Nothing) if: - -- we are in full decentralisation mode (d=0) when IR certs are not allowed - pparams ^. ppDG == minBound - -- or when we don't have keys available for generating an IR cert - || null credCoinMap - -- or it's too late in the epoch for IR certs - || tooLateInEpoch s - -- or the rewards exceed the pot amount - || insufficientFunds - then Nothing - else - Just - ( MirTxCert (MIRCert pot (StakeAddressesMIR credCoinMap)) - , DelegateCred (aikCold <$> coreSigners) - ) - --- | Generate an InstantaneousRewards Transfer -genInstantaneousRewardsTransfer :: - (EraPParams era, ShelleyEraTxCert era, ProtVerAtMost era 8) => - SlotNo -> - -- | Index over the cold key hashes of all possible Genesis Delegates - Map (KeyHash 'GenesisDelegate (EraCrypto era)) (AllIssuerKeys (EraCrypto era) 'GenesisDelegate) -> - PParams era -> - AccountState -> - DState era -> - Gen (Maybe (TxCert era, CertCred era)) -genInstantaneousRewardsTransfer s genesisDelegatesByHash pparams accountState delegSt = do - let (GenDelegs genDelegs_) = dsGenDelegs delegSt - lookupGenDelegate' gk = - fromMaybe - (error "genInstantaneousRewardsTransfer: lookupGenDelegate failed") - (Map.lookup gk genesisDelegatesByHash) - - coreSigners <- - take - <$> QC.elements [5 .. (max 0 $ length genDelegs_ - 1)] - <*> QC.shuffle (lookupGenDelegate' . genDelegKeyHash <$> Map.elems genDelegs_) - - pot <- QC.elements [ReservesMIR, TreasuryMIR] - let Coin available = availableAfterMIR pot accountState (dsIRewards delegSt) - amount <- if available > 0 then QC.choose (0, available) else pure 0 - pure $ - if -- Discard this generator (by returning Nothing) if: - -- we are in full decentralisation mode (d=0) when IR certs are not allowed - pparams ^. ppDG == minBound - -- or it's too late in the epoch for IR certs - || tooLateInEpoch s - then Nothing - else - Just - ( MirTxCert (MIRCert pot (SendToOppositePotMIR $ Coin amount)) - , DelegateCred (aikCold <$> coreSigners) - ) - -genInstantaneousRewards :: - (EraPParams era, ShelleyEraTxCert era, ProtVerAtMost era 8) => - SlotNo -> - -- | Index over the cold key hashes of all possible Genesis Delegates - Map (KeyHash 'GenesisDelegate (EraCrypto era)) (AllIssuerKeys (EraCrypto era) 'GenesisDelegate) -> - PParams era -> - AccountState -> - DState era -> - Gen (Maybe (TxCert era, CertCred era)) -genInstantaneousRewards slot genesisDelegatesByHash pparams accountState delegSt = - if HardForks.allowMIRTransfer (pparams ^. ppProtocolVersionL) - then - QC.oneof - [ genInstantaneousRewardsAccounts - slot - genesisDelegatesByHash - pparams - accountState - delegSt - , genInstantaneousRewardsTransfer - slot - genesisDelegatesByHash - pparams - accountState - delegSt - ] - else - genInstantaneousRewardsAccounts - slot - genesisDelegatesByHash - pparams - accountState - delegSt diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Update.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Update.hs deleted file mode 100644 index 827f4fa1c86..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Update.hs +++ /dev/null @@ -1,351 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TupleSections #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-redundant-constraints #-} -{-# OPTIONS_GHC -fno-warn-unused-binds #-} -{-# OPTIONS_GHC -fno-warn-unused-imports #-} - -module Test.Cardano.Ledger.Shelley.Generator.Update ( - genPParams, - genUpdate, - genShelleyPParamsUpdate, - genM, - genDecentralisationParam, -) -where - -import Cardano.Ledger.BaseTypes ( - BoundedRational, - EpochInterval (..), - NonNegativeInterval, - Nonce (NeutralNonce), - ProtVer (..), - StrictMaybe (..), - UnitInterval, - Version, - getVersion64, - mkNonceFromNumber, - mkVersion, - mkVersion64, - succVersion, - ) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Core -import Cardano.Ledger.Era (EraCrypto) -import Cardano.Ledger.Keys ( - GenDelegPair (..), - GenDelegs (..), - KeyHash, - KeyRole (..), - asWitness, - hashKey, - ) -import Cardano.Ledger.Shelley.API ( - ProposedPPUpdates, - Update, - ) -import Cardano.Ledger.Shelley.LedgerState ( - CertState (..), - DState (..), - UTxOState (..), - ) -import Cardano.Ledger.Shelley.PParams -import Cardano.Ledger.Slot (EpochNo (EpochNo), SlotNo) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Maybe (catMaybes) -import Data.Ratio (Ratio, (%)) -import Data.Typeable (Typeable) -import Data.Word (Word16, Word32, Word64) -import GHC.Records -import GHC.Stack (HasCallStack) -import Lens.Micro -import Numeric.Natural (Natural) -import Test.Cardano.Ledger.Binary.Arbitrary (genVersion) -import Test.Cardano.Ledger.Core.KeyPair (KeyPair, vKey) -import Test.Cardano.Ledger.Shelley.Constants (Constants (..)) -import Test.Cardano.Ledger.Shelley.Generator.Core ( - AllIssuerKeys (aikCold), - genInteger, - genNatural, - genWord64, - increasingProbabilityAt, - tooLateInEpoch, - ) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (EraGen (..)) -import Test.Cardano.Ledger.Shelley.Utils ( - GenesisKeyPair, - epochFromSlotNo, - unsafeBoundRational, - ) -import Test.QuickCheck (Gen, choose, frequency) -import qualified Test.QuickCheck as QC - --- ==================================== - -genRationalInThousands :: HasCallStack => Integer -> Integer -> Gen Rational -genRationalInThousands lower upper = - (% 1000) <$> genInteger lower upper - -genIntervalInThousands :: - (Typeable a, BoundedRational a, HasCallStack) => Integer -> Integer -> Gen a -genIntervalInThousands lower upper = - unsafeBoundRational <$> genRationalInThousands lower upper - -genPParams :: - (EraPParams era, ProtVerAtMost era 4, ProtVerAtMost era 6) => - Constants -> - Gen (PParams era) -genPParams c@Constants {maxMinFeeA, maxMinFeeB, minMajorPV, maxMajorPV} = do - minFeeA <- genInteger 0 (unCoin maxMinFeeA) - minFeeB <- genInteger 0 (unCoin maxMinFeeB) - (maxBBSize, maxTxSize, maxBHSize) <- szGen - keyDeposit <- genKeyDeposit - poolDeposit <- genPoolDeposit - eMax <- genEMax c - nOpt <- genNOpt - a0 <- genA0 - rho <- genRho - tau <- genTau - d <- genDecentralisationParam - extraEntropy <- genExtraEntropy - protocolVersion <- genProtocolVersion minMajorPV maxMajorPV - minUTxOValue <- genMinUTxOValue - minPoolCost <- genMinPoolCost - pure $ - emptyPParams - & ppMinFeeAL .~ Coin minFeeA - & ppMinFeeBL .~ Coin minFeeB - & ppMaxBBSizeL .~ maxBBSize - & ppMaxTxSizeL .~ maxTxSize - & ppMaxBHSizeL .~ maxBHSize - & ppKeyDepositL .~ keyDeposit - & ppPoolDepositL .~ poolDeposit - & ppEMaxL .~ eMax - & ppNOptL .~ nOpt - & ppA0L .~ a0 - & ppRhoL .~ rho - & ppTauL .~ tau - & ppDL .~ d - & ppExtraEntropyL .~ extraEntropy - & ppProtocolVersionL .~ protocolVersion - & ppMinUTxOValueL .~ minUTxOValue - & ppMinPoolCostL .~ minPoolCost - where - szGen :: Gen (Word32, Word32, Word16) - szGen = do - blockBodySize <- choose (low, hi) - (blockBodySize,,) - <$> choose (blockBodySize, blockBodySize `div` 2) - <*> choose (25000, maxBound :: Word16) -- Must stay in the range of Word16, but can't be too small - --- Note: we keep the lower bound high enough so that we can more likely --- generate valid transactions and blocks -low, hi :: Word32 -low = 50000 -hi = 200000 - --- poolDeposit --- NOTE: we need to keep these deposits small, otherwise --- when we generate sequences of transactions we will bleed too --- much funds into the deposit pool (i.e. funds not available as utxo) -genPoolDeposit :: HasCallStack => Gen Coin -genPoolDeposit = - increasingProbabilityAt - (Coin <$> genInteger 0 100) - (Coin 0, Coin 100) - --- Generates a Neutral or actual Nonces with equal frequency -genExtraEntropy :: HasCallStack => Gen Nonce -genExtraEntropy = - QC.frequency - [ (1, pure NeutralNonce) - , (1, mkNonceFromNumber <$> genWord64 1 123) - ] - --- eMax (for an epoch per 5 days, say, this is between a month and 7yrs) -genEMax :: - HasCallStack => - Constants -> - Gen EpochInterval -genEMax Constants {frequencyLowMaxEpoch} = - EpochInterval . fromIntegral <$> genWord64 frequencyLowMaxEpoch 500 - --- | nOpt -genNOpt :: HasCallStack => Gen Natural -genNOpt = genNatural 1 100 - --- | genKeyDeposit --- NOTE: we need to keep these deposits small, otherwise --- when we generate sequences of transactions we will bleed too --- much funds into the deposit pool (i.e. funds not available as utxo) -genKeyDeposit :: HasCallStack => Gen Coin -genKeyDeposit = - increasingProbabilityAt - (Coin <$> genInteger 0 20) - (Coin 0, Coin 20) - --- | a0: 0.01-1.0 -genA0 :: HasCallStack => Gen NonNegativeInterval -genA0 = genIntervalInThousands 10 1000 - --- | rho: 0.001-0.009 -genRho :: HasCallStack => Gen UnitInterval -genRho = genIntervalInThousands 1 9 - --- | tau: 0.1-0.3 -genTau :: HasCallStack => Gen UnitInterval -genTau = genIntervalInThousands 100 300 - -genDecentralisationParam :: HasCallStack => Gen UnitInterval -genDecentralisationParam = unsafeBoundRational <$> QC.elements [0.1, 0.2 .. 1] --- ^ ^ TODO jc - generating d=0 takes some care, if there are no registered --- stake pools then d=0 deadlocks the system. - -genProtocolVersion :: HasCallStack => Version -> Version -> Gen ProtVer -genProtocolVersion minMajPV maxMajPV = - ProtVer <$> genVersion minMajPV maxMajPV <*> genNatural 1 50 - -genMinUTxOValue :: HasCallStack => Gen Coin -genMinUTxOValue = Coin <$> genInteger 1 20 - -genMinPoolCost :: HasCallStack => Gen Coin -genMinPoolCost = Coin <$> genInteger 10 50 - --- | Generate a possible next Protocol version based on the previous version. --- Increments the Major or Minor versions and possibly the Alt version. -genNextProtocolVersion :: EraPParams era => HasCallStack => PParams era -> Version -> Gen ProtVer -genNextProtocolVersion pp maxMajorPV = do - QC.elements $ ProtVer m (n + 1) : [ProtVer m' 0 | Just m' <- [succVersion m], m' <= maxMajorPV] - where - ProtVer m n = pp ^. ppProtocolVersionL - -genM :: Gen a -> Gen (StrictMaybe a) -genM gen = frequency [(1, SJust <$> gen), (2, pure SNothing)] - --- | This is only good in the Shelley Era, used to define the genShelleyEraPParamsUpdate method for (EraGen (ShelleyEra c)) -genShelleyPParamsUpdate :: - forall era. - (ProtVerAtMost era 4, ProtVerAtMost era 6, ProtVerAtMost era 8, EraPParams era) => - Constants -> - PParams era -> - Gen (PParamsUpdate era) -genShelleyPParamsUpdate c@Constants {maxMinFeeA, maxMinFeeB, maxMajorPV} pp = do - -- TODO generate Maybe types so not all updates are full - minFeeA <- genM $ genInteger 0 (unCoin maxMinFeeA) - minFeeB <- genM $ genInteger 0 (unCoin maxMinFeeB) - maxBBSize <- genM $ choose (low, hi) - maxTxSize <- genM $ choose (low, hi) - -- Must stay in the range of Word16, but can't be too small - maxBHSize <- genM $ choose (25000, maxBound :: Word16) - keyDeposit <- genM $ genKeyDeposit - poolDeposit <- genM $ genPoolDeposit - eMax <- genM $ genEMax c - nOpt <- genM genNOpt - a0 <- genM genA0 - rho <- genM genRho - tau <- genM genTau - d <- genM genDecentralisationParam - extraEntropy <- genM genExtraEntropy - protocolVersion <- genM $ genNextProtocolVersion pp maxMajorPV - minUTxOValue <- genM genMinUTxOValue - minPoolCost <- genM genMinPoolCost - pure $ - emptyPParamsUpdate - & ppuMinFeeAL .~ fmap Coin minFeeA - & ppuMinFeeBL .~ fmap Coin minFeeB - & ppuMaxBBSizeL .~ maxBBSize - & ppuMaxTxSizeL .~ maxTxSize - & ppuMaxBHSizeL .~ maxBHSize - & ppuKeyDepositL .~ keyDeposit - & ppuPoolDepositL .~ poolDeposit - & ppuEMaxL .~ eMax - & ppuNOptL .~ nOpt - & ppuA0L .~ a0 - & ppuRhoL .~ rho - & ppuTauL .~ tau - & ppuDL .~ d - & ppuExtraEntropyL .~ extraEntropy - & ppuProtocolVersionL .~ protocolVersion - & ppuMinUTxOValueL .~ minUTxOValue - & ppuMinPoolCostL .~ minPoolCost - --- | Generate a proposal for protocol parameter updates for all the given genesis keys. --- Return an empty update if it is too late in the epoch for updates. -genPPUpdate :: - forall era. - EraGen era => - Constants -> - PParams era -> - [KeyHash 'Genesis (EraCrypto era)] -> - Gen (ProposedPPUpdates era) -genPPUpdate constants pp genesisKeys = do - pps <- genEraPParamsUpdate @era constants pp - let ppUpdate = zip genesisKeys (repeat pps) - pure $ ProposedPPUpdates . Map.fromList $ ppUpdate - --- | Generate an @Update (where all the given nodes participate) -genUpdateForNodes :: - forall era. - EraGen era => - Constants -> - SlotNo -> - EpochNo -> -- current epoch - [KeyPair 'Genesis (EraCrypto era)] -> - PParams era -> - Gen (Maybe (Update era)) -genUpdateForNodes c s e coreKeys pp = - Just <$> (Update <$> genPPUpdate_ <*> pure e') - where - genesisKeys = hashKey . vKey <$> coreKeys - genPPUpdate_ = genPPUpdate c pp genesisKeys - e' = if tooLateInEpoch s then e + 1 else e - --- | Occasionally generate an update and return with the witness keys -genUpdate :: - EraGen era => - Constants -> - SlotNo -> - [(GenesisKeyPair (EraCrypto era), AllIssuerKeys (EraCrypto era) 'GenesisDelegate)] -> - Map (KeyHash 'GenesisDelegate (EraCrypto era)) (AllIssuerKeys (EraCrypto era) 'GenesisDelegate) -> - PParams era -> - (UTxOState era, CertState era) -> - Gen (Maybe (Update era), [KeyPair 'Witness (EraCrypto era)]) -genUpdate - c@Constants {frequencyTxUpdates} - s - coreNodes - genesisDelegatesByHash - pp - (_utxoSt, delegPoolSt) = - do - nodes <- take 5 <$> QC.shuffle coreNodes - - let e = epochFromSlotNo s - GenDelegs genDelegs = dsGenDelegs (certDState delegPoolSt) - genesisKeys = fst <$> nodes - coreSigners = - catMaybes $ - flip Map.lookup genesisDelegatesByHash . genDelegKeyHash <$> Map.elems genDelegs - failedWitnessLookup = length coreSigners < Map.size genDelegs - if failedWitnessLookup - then -- discard - pure (Nothing, []) - else - let wits = asWitness . aikCold <$> coreSigners - in QC.frequency - [ - ( frequencyTxUpdates - , (,wits) <$> genUpdateForNodes c s e genesisKeys pp - ) - , - ( 100 - frequencyTxUpdates - , pure (Nothing, []) - ) - ] diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Utxo.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Utxo.hs deleted file mode 100644 index bd8f93521f8..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Generator/Utxo.hs +++ /dev/null @@ -1,901 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} - -module Test.Cardano.Ledger.Shelley.Generator.Utxo ( - genTx, - Delta (..), - encodedLen, - myDiscard, - pickRandomFromMap, -) -where - -import Cardano.Ledger.Address ( - Addr (..), - RewardAccount (..), - ) -import Cardano.Ledger.BaseTypes ( - Network (..), - inject, - maybeToStrictMaybe, - ) -import Cardano.Ledger.Binary (EncCBOR, serialize) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Core -import Cardano.Ledger.Credential (Credential (..), StakeReference (..)) -import Cardano.Ledger.Keys ( - KeyHash, - KeyRole (..), - asWitness, - ) -import Cardano.Ledger.SafeHash (SafeHash, hashAnnotated) -import Cardano.Ledger.Shelley.LedgerState ( - CertState (..), - DState (..), - LedgerState (..), - UTxOState (..), - certDState, - ptrsMap, - rewards, - ) -import Cardano.Ledger.Shelley.Rules (DelplEnv, LedgerEnv (..)) -import Cardano.Ledger.Shelley.TxBody (Withdrawals (..)) -import Cardano.Ledger.TxIn (TxIn (..)) -import qualified Cardano.Ledger.UMap as UM -import Cardano.Ledger.UTxO ( - EraUTxO, - UTxO (..), - getMinFeeTxUtxo, - sumAllValue, - ) -import Cardano.Ledger.Val (Val (..), sumVal, (<+>), (<->), (<×>)) -import Control.Monad (when) -import Control.State.Transition -import qualified Data.ByteString.Lazy as BSL -import qualified Data.Either as Either (partitionEithers) -import qualified Data.IntSet as IntSet -import Data.List (foldl') -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Proxy (Proxy (..)) -import Data.Sequence.Strict (StrictSeq) -import qualified Data.Sequence.Strict as StrictSeq -import qualified Data.Set as Set -import qualified Data.Vector as V -import Debug.Trace (trace) -import Lens.Micro -import NoThunks.Class () -import Test.Cardano.Ledger.Core.KeyPair ( - KeyPair, - KeyPairs, - makeWitnessesFromScriptKeys, - mkCred, - mkWitnessesVKey, - ) -import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes ( - Mock, - ) -import Test.Cardano.Ledger.Shelley.Constants (Constants (..), defaultConstants) -import Test.Cardano.Ledger.Shelley.Generator.Core ( - GenEnv (..), - KeySpace (..), - ScriptInfo, - ScriptSpace (..), - findPayKeyPairAddr, - findPayKeyPairCred, - findPayScriptFromAddr, - findStakeScriptFromCred, - ) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (EraGen (..)) -import Test.Cardano.Ledger.Shelley.Generator.ScriptClass (scriptKeyCombination) -import Test.Cardano.Ledger.Shelley.Generator.Trace.TxCert (CERTS, genTxCerts) -import Test.Cardano.Ledger.Shelley.Generator.Update (genUpdate) -import Test.Cardano.Ledger.Shelley.Utils (Split (..)) -import Test.QuickCheck (Gen, discard) -import qualified Test.QuickCheck as QC - --- Instances only - -myDiscard :: [Char] -> a -myDiscard message = trace ("\nDiscarded trace: " ++ message) discard - --- ==================================================== - --- | Generates a transaction in the context of the LEDGER STS environment --- and state. --- --- A generated transaction may not have sufficient spending balance and --- need to be discarded. In that case we try to compute a Delta, that when --- added (applyDelta) to the transaction, repairs it. The repair is made --- by adding additional inputs from which more Ada can flow into the fee. --- If that doesn't fix it, we add more inputs to the Delta. --- Experience shows that this converges quite quickly (in traces we never saw --- more than 3 iterations). - --- Note: the spending balance emerges from inputs, refund withdrawals, --- certificate deposits and fees (which in turn depend on number of --- inputs, outputs, witnesses, metadata etc.). It's hard to avoid this --- completely, but in practice it is relatively easy to calibrate --- the generator 'Constants' so that there is sufficient spending balance. - -genTx :: - forall era. - ( EraGen era - , EraUTxO era - , Mock (EraCrypto era) - , Embed (EraRule "DELPL" era) (CERTS era) - , Environment (EraRule "DELPL" era) ~ DelplEnv era - , State (EraRule "DELPL" era) ~ CertState era - , Signal (EraRule "DELPL" era) ~ TxCert era - ) => - GenEnv era -> - LedgerEnv era -> - LedgerState era -> - Gen (Tx era) -genTx - ge@( GenEnv - keySpace@KeySpace_ - { ksKeyPairs - , ksCoreNodes - , ksMSigScripts - , ksIndexedGenDelegates - , ksIndexedPaymentKeys - , ksIndexedStakingKeys - , ksIndexedPayScripts - , ksIndexedStakeScripts - } - scriptspace - constants - ) - (LedgerEnv slot txIx pparams reserves) - (LedgerState utxoSt@(UTxOState utxo _ _ _ _ _) dpState) = - do - ------------------------------------------------------------------------- - -- Generate the building blocks of a TxBody - ------------------------------------------------------------------------- - (inputs, spendingBalanceUtxo, (spendWits, spendScripts)) <- - genInputs - (minNumGenInputs constants, maxNumGenInputs constants) - ksIndexedPaymentKeys - ksIndexedPayScripts - utxo - (wdrls, (wdrlWits, wdrlScripts)) <- - genWithdrawals - @era - constants - ksIndexedStakeScripts - ksIndexedStakingKeys - ((Map.map (UM.fromCompact . UM.rdReward) . UM.unUnify . rewards . certDState) dpState) - (update, updateWits) <- - genUpdate - constants - slot - ksCoreNodes - ksIndexedGenDelegates - pparams - (utxoSt, dpState) - (certs, deposits, refunds, dpState', certWits, certScripts) <- - genTxCerts ge pparams dpState slot txIx reserves - metadata <- genEraAuxiliaryData @era constants - ------------------------------------------------------------------------- - -- Gather Key TxWits and Scripts, prepare a constructor for Tx Wits - ------------------------------------------------------------------------- - let txWits = spendWits ++ wdrlWits ++ certWits ++ updateWits - scripts = mkScriptWits @era spendScripts (certScripts ++ wdrlScripts) - mkTxWits' txbody = - mkTxWits @era - (utxo, txbody, (ssHash3 scriptspace, ssHash2 scriptspace)) - ksIndexedPaymentKeys - ksIndexedStakingKeys - txWits - scripts - (hashAnnotated txbody) - ------------------------------------------------------------------------- - -- SpendingBalance, Output Addresses (including some Pointer addresses) - -- and a Outputs builder that distributes the given balance over - -- addresses. - ------------------------------------------------------------------------- - let withdrawals = sumVal (snd <$> wdrls) - !spendingBalance = - spendingBalanceUtxo - <+> inject ((withdrawals <-> deposits) <+> refunds) - n = - if Map.size (unUTxO utxo) < genTxStableUtxoSize defaultConstants - then -- something moderate 80-120 ^ - genTxUtxoIncrement defaultConstants -- something small 2-5 - else 0 -- no change at all - -- This algorithm has an instability in that if we don't balance - -- genTxStableUtxoSize and genTxUtxoIncrement correctly the size - -- of the UTxO gradually shrinks so small we cannot support - -- generating a transaction. If we get unexplained failures one - -- might investigate changing these constants. - - -- !_ = occaisionally (length inputs * length ksKeyPairs * length ksMSigScripts) 10000 ("UTxOSize = "++show (Map.size (unUTxO utxo))) - - outputAddrs <- - genRecipients @era (length inputs + n) ksKeyPairs ksMSigScripts - >>= genPtrAddrs (certDState dpState') - - !_ <- when (coin spendingBalance < mempty) $ myDiscard "Negative spending balance" - - ------------------------------------------------------------------------- - -- Build a Draft Tx and repeatedly add to Delta until all fees are - -- accounted for. - ------------------------------------------------------------------------- - let draftFee = Coin 0 - (remainderCoin, draftOutputs) = - calcOutputsFromBalance @era - spendingBalance - outputAddrs - draftFee - - -- Occasionally we have a transaction generated with insufficient inputs - -- to cover the deposits. In this case we discard the test case. - let enough = sumVal (getMinCoinTxOut pparams <$> draftOutputs) - !_ <- when (coin spendingBalance < enough) (myDiscard "No inputs left. Utxo.hs") - - (draftTxBody, additionalScripts) <- - genEraTxBody - ge - utxo - pparams - slot - (Set.fromList inputs) - draftOutputs - (StrictSeq.fromList certs) - (Withdrawals (Map.fromList wdrls)) - draftFee - (maybeToStrictMaybe update) - (hashTxAuxData @era <$> metadata) - let draftTx = - constructTx @era - draftTxBody - (mkTxWits' draftTxBody) - metadata - scripts' = Map.fromList $ map (\s -> (hashScript @era s, s)) additionalScripts - -- We add now repeatedly add inputs until the process converges. - tx <- - converge - (ssHash3 scriptspace, ssHash2 scriptspace) - remainderCoin - txWits - (scripts `Map.union` scripts') - ksKeyPairs - ksMSigScripts - utxo - pparams - keySpace - draftTx - let txOuts = tx ^. bodyTxL . outputsTxBodyL - !_ <- - when (any (\txOut -> getMinCoinTxOut pparams txOut > txOut ^. coinTxOutL) txOuts) $ - myDiscard "TxOut value is too small" - pure tx - --- | Collect additional inputs (and witnesses and keys and scripts) to make --- the transaction balance. -data Delta era = Delta - { dfees :: Coin - , extraInputs :: Set.Set (TxIn (EraCrypto era)) - , extraWitnesses :: TxWits era - , change :: TxOut era - , deltaVKeys :: [KeyPair 'Witness (EraCrypto era)] - , deltaScripts :: [(Script era, Script era)] - } - -instance Show (Delta era) where - show (Delta fee is _wit _change dvs ds) = - "(Delta" - ++ show fee - ++ " " - ++ show (Set.size is) - ++ " wit change " - ++ show (length dvs) - ++ " " - ++ show (length ds) - ++ ")" - --- | - We need this instance to know when delta has stopped growing. We don't --- actually need to compare all the fields, because if the extraInputs has not --- changed then the Scripts and keys will not have changed. -instance - ( EraTxOut era - , Eq (TxWits era) - ) => - Eq (Delta era) - where - a == b = - dfees a == dfees b - && extraInputs a == extraInputs b - && extraWitnesses a == extraWitnesses b - -- deltaVKeys and deltaScripts equality are implied by extraWitnesses - -- equality, at least in the use case below. - && change a == change b - -deltaZero :: - forall era. - ( EraTxOut era - , Monoid (TxWits era) - ) => - Coin -> - PParams era -> - Addr (EraCrypto era) -> - Delta era -deltaZero initialfee pp addr = - Delta - (initialfee <-> txOut ^. coinTxOutL) - mempty - mempty - txOut - mempty - mempty - where - txOut = setMinCoinTxOut pp (mkBasicTxOut addr mempty) - --- Same function as in cardano-ledger-api. We don't want to depend on the api though, --- because it will be problematic for dependencies (cardano-ledger-api test suite depends --- on this package) -setMinCoinTxOut :: EraTxOut era => PParams era -> TxOut era -> TxOut era -setMinCoinTxOut pp = go - where - go txOut = - let curMinCoin = getMinCoinTxOut pp txOut - curCoin = txOut ^. coinTxOutL - in if curCoin == curMinCoin - then txOut - else go (txOut & coinTxOutL .~ curMinCoin) - -encodedLen :: forall era t. (Era era, EncCBOR t) => t -> Integer -encodedLen x = fromIntegral $ BSL.length (serialize (eraProtVerHigh @era) x) - --- | Do the work of computing what additioanl inputs we need to 'fix-up' the transaction --- so that it will balance. -genNextDelta :: - forall era. - (EraGen era, Mock (EraCrypto era), EraUTxO era) => - ScriptInfo era -> - UTxO era -> - PParams era -> - KeySpace era -> - Tx era -> - Int -> - Delta era -> - Gen (Delta era) -genNextDelta - scriptinfo - utxo - pparams - KeySpace_ - { ksIndexedStakingKeys - , ksIndexedPaymentKeys - , ksIndexedPayScripts - } - tx - _count -- the counter of the fix loop - delta@(Delta dfees extraInputs extraWitnesses change _ extraScripts) = - let !baseTxFee = getMinFeeTxUtxo pparams tx utxo - -- based on the current contents of delta, how much will the fee - -- increase when we add the delta to the tx? - draftSize = - sum - [ 1100 :: Integer -- safety net in case the coin or a list prefix rolls over into a - -- larger encoding, or some other fudge factor occurs. Sometimes we need extra buffer - -- when minting tokens. 1100 has been empirically determined to make non-failing Txs - , encodedLen @era (max dfees (Coin 0)) - 1 - , (foldr (\a b -> b + encodedLen @era a) 0 extraInputs) * 2 - , -- inputs end up in collateral as well, so we ^ multiply by 2 - encodedLen @era change - , encodedLen @era extraWitnesses - ] - deltaScriptCost = foldr accum (Coin 0) extraScripts - where - accum (s1, _) ans = genEraScriptCost @era pparams s1 <+> ans - deltaFee = draftSize <×> pparams ^. ppMinFeeAL <+> deltaScriptCost - totalFee = baseTxFee <+> deltaFee :: Coin - remainingFee = totalFee <-> dfees :: Coin - changeAmount = getChangeAmount change - minAda = getMinCoinTxOut pparams change - in if remainingFee <= Coin 0 -- we've paid for all the fees - then pure delta -- we're done - else -- the change covers what we need, so shift Coin from change to dfees. - - if remainingFee <= (changeAmount <-> minAda) - then - pure $ - delta - { dfees = totalFee - , change = - deltaChange - (<-> inject remainingFee) - change - } - else -- add a new input to cover the fee - do - let txBody = tx ^. bodyTxL - inputsInUse = txBody ^. inputsTxBodyL <> extraInputs - utxo' :: UTxO era - utxo' = - -- Remove possible inputs from Utxo, if they already - -- appear in inputs. - UTxO $ - Map.filterWithKey - ( \k v -> - (k `Set.notMember` inputsInUse) && genEraGoodTxOut v - ) - -- filter out UTxO entries where the TxOut are not - -- appropriate for this Era (i.e. Keylocked in - -- AlonzoEra) - (unUTxO utxo) - (inputs, value, (vkeyPairs, msigPairs)) <- - genInputs (1, 1) ksIndexedPaymentKeys ksIndexedPayScripts utxo' - -- It is possible that the Utxo has no possible inputs left, so - -- fail. We try and keep this from happening by using feedback: - -- adding to the number of ouputs (in the call to genRecipients) - -- in genTx above. Adding to the outputs means in the next cycle - -- the size of the UTxO will grow. In rare cases, this cannot be avoided - -- So we discard this test case. This should happen very rarely. - -- If it does happen, It is NOT a test failure, but an inadequacy in the - -- testing framework to generate almost-random transactions that always succeed every time. - -- Experience suggests that this happens less than 1% of the time, and does not lead to backtracking. - !_ <- when (null inputs) (myDiscard "NoMoneyleft Utxo.hs") - let newWits = - mkTxWits @era - (utxo, txBody, scriptinfo) - ksIndexedPaymentKeys - ksIndexedStakingKeys - vkeyPairs - (mkScriptWits @era msigPairs mempty) - (hashAnnotated txBody) - pure $ - delta - { extraWitnesses = extraWitnesses <> newWits - , extraInputs = extraInputs <> Set.fromList inputs - , change = deltaChange (<+> value) change -- <+> is plus of the Val class - , deltaVKeys = vkeyPairs <> deltaVKeys delta - , deltaScripts = msigPairs <> deltaScripts delta - } - where - deltaChange :: - (Value era -> Value era) -> - TxOut era -> - TxOut era - deltaChange f txOut = txOut & valueTxOutL %~ f - getChangeAmount txOut = txOut ^. coinTxOutL - --- calculates fixed point of getNextDelta such that --- reqFees (tx + delta) = dfees delta --- start with zero delta --- genNextDelta repeatedly until genNextDelta delta = delta - -genNextDeltaTilFixPoint :: - forall era. - ( EraGen era - , Mock (EraCrypto era) - , EraUTxO era - ) => - ScriptInfo era -> - Coin -> - KeyPairs (EraCrypto era) -> - [(Script era, Script era)] -> - UTxO era -> - PParams era -> - KeySpace era -> - Tx era -> - Gen (Delta era) -genNextDeltaTilFixPoint scriptinfo initialfee keys scripts utxo pparams keySpace tx = do - addr <- genRecipients @era 1 keys scripts - fix - 0 - (genNextDelta scriptinfo utxo pparams keySpace tx) - (deltaZero initialfee pparams (head addr)) - -applyDelta :: - forall era. - ( EraGen era - , Mock (EraCrypto era) - ) => - UTxO era -> - ScriptInfo era -> - PParams era -> - [KeyPair 'Witness (EraCrypto era)] -> - Map (ScriptHash (EraCrypto era)) (Script era) -> - KeySpace era -> - Tx era -> - Delta era -> - Tx era -applyDelta - utxo - scriptinfo - pparams - neededKeys - neededScripts - KeySpace_ {ksIndexedPaymentKeys, ksIndexedStakingKeys} - tx - (Delta deltafees extraIn _extraWits change extraKeys extraScripts) = - -- fix up the witnesses here? - -- Adds extraInputs, extraWitnesses, and change from delta to tx - let txBody = tx ^. bodyTxL - oldWitnessSet = - mkTxWits @era - (utxo, addInputs @era txBody extraIn, scriptinfo) - ksIndexedPaymentKeys - ksIndexedStakingKeys - kw - sw - (hashAnnotated txBody) - body2 = - (updateEraTxBody @era) - utxo - pparams - oldWitnessSet - txBody - deltafees -- Override the existing fee - extraIn -- Union with existing inputs - change -- Append to end of the existing outputs - kw = neededKeys <> extraKeys - sw = neededScripts <> mkScriptWits @era extraScripts mempty - newWitnessSet = - mkTxWits @era - (utxo, body2, scriptinfo) - ksIndexedPaymentKeys - ksIndexedStakingKeys - kw - sw - (hashAnnotated body2) - in constructTx @era body2 newWitnessSet (tx ^. auxDataTxL) - -fix :: (Eq d, Monad m) => Int -> (Int -> d -> m d) -> d -> m d -fix n f d = do d1 <- f n d; if d1 == d then pure d else fix (n + 1) f d1 - -converge :: - forall era. - (EraGen era, Mock (EraCrypto era), EraUTxO era) => - ScriptInfo era -> - Coin -> - [KeyPair 'Witness (EraCrypto era)] -> - Map (ScriptHash (EraCrypto era)) (Script era) -> - KeyPairs (EraCrypto era) -> - [(Script era, Script era)] -> - UTxO era -> - PParams era -> - KeySpace era -> - Tx era -> - Gen (Tx era) -converge - scriptinfo - initialfee - neededKeys - neededScripts - keys - scripts - utxo - pparams - keySpace - tx = do - delta <- genNextDeltaTilFixPoint scriptinfo initialfee keys scripts utxo pparams keySpace tx - genEraDone @era - utxo - pparams - (applyDelta utxo scriptinfo pparams neededKeys neededScripts keySpace tx delta) - --- | Return up to /k/ random elements from /items/ --- (instead of the less efficient /take k <$> QC.shuffle items/) -ruffle :: Int -> [a] -> Gen [a] -ruffle _ [] = pure [] -ruffle k items = do - (indices, _) <- genIndices k (0, length itemsV - 1) - pure $ map (itemsV V.!) indices - where - itemsV = V.fromList items - --- | Generate @n@ number of unique `Int`s in the supplied range. -genIndices :: Int -> (Int, Int) -> Gen ([Int], IntSet.IntSet) -genIndices k (l', u') - | k < 0 || u - l + 1 < k = - error $ - "Cannot generate " - ++ show k - ++ " indices in the range [" - ++ show l - ++ ", " - ++ show u - ++ "]" - | u - l < k `div` 2 = do - xs <- take k <$> QC.shuffle [l .. u] - pure (xs, IntSet.fromList xs) - | otherwise = go k [] mempty - where - (l, u) = - if l' <= u' - then (l', u') - else (u', l') - go n !res !acc - | n <= 0 = pure (res, acc) - | otherwise = do - i <- QC.choose (l, u) - if IntSet.member i acc - then go n res acc - else go (n - 1) (i : res) $ IntSet.insert i acc - --- | Select @n@ random key value pairs from the supplied map. Order of keys with --- respect to each other will also be random, i.e. not sorted. -pickRandomFromMap :: Int -> Map.Map k t -> Gen [(k, t)] -pickRandomFromMap n' initMap = go (min (max 0 n') (Map.size initMap)) [] initMap - where - go n !acc !m - | n <= 0 = pure acc - | otherwise = do - i <- QC.choose (0, n - 1) - let (k, y) = Map.elemAt i m - go (n - 1) ((k, y) : acc) (Map.deleteAt i m) - -mkScriptWits :: - forall era. - EraGen era => - [(Script era, Script era)] -> - [(Script era, Script era)] -> - Map (ScriptHash (EraCrypto era)) (Script era) -mkScriptWits payScripts stakeScripts = - Map.fromList $ - (hashPayScript <$> payScripts) - ++ (hashStakeScript <$> stakeScripts) - where - hashPayScript :: - (Script era, Script era) -> - (ScriptHash (EraCrypto era), Script era) - hashPayScript (payScript, _) = - (hashScript @era payScript, payScript) - - hashStakeScript :: - (Script era, Script era) -> - (ScriptHash (EraCrypto era), Script era) - hashStakeScript (_, sScript) = - (hashScript @era sScript, sScript) - -mkTxWits :: - forall era. - (EraGen era, Mock (EraCrypto era)) => - (UTxO era, TxBody era, ScriptInfo era) -> - Map (KeyHash 'Payment (EraCrypto era)) (KeyPair 'Payment (EraCrypto era)) -> - Map (KeyHash 'Staking (EraCrypto era)) (KeyPair 'Staking (EraCrypto era)) -> - [KeyPair 'Witness (EraCrypto era)] -> - Map (ScriptHash (EraCrypto era)) (Script era) -> - SafeHash (EraCrypto era) EraIndependentTxBody -> - TxWits era -mkTxWits - (utxo, txbody, scriptinfo) - indexedPaymentKeys - indexedStakingKeys - awits - msigs - txBodyHash = - genEraTxWits @era - (utxo, txbody, scriptinfo) - ( mkWitnessesVKey txBodyHash awits - `Set.union` makeWitnessesFromScriptKeys - txBodyHash - ( indexedPaymentKeysAsWitnesses - `Map.union` indexedStakingKeysAsWitnesses - ) - msigSignatures - ) - msigs - where - indexedPaymentKeysAsWitnesses = - Map.fromAscList - . map (\(a, b) -> (asWitness a, asWitness b)) - . Map.toAscList - $ indexedPaymentKeys - indexedStakingKeysAsWitnesses = - Map.fromAscList - . map (\(a, b) -> (asWitness a, asWitness b)) - . Map.toAscList - $ indexedStakingKeys - keysLists = map (scriptKeyCombination (Proxy @era)) (Map.elems msigs) - msigSignatures = foldl' Set.union Set.empty $ map Set.fromList keysLists - --- | Distribute the sum of `balance_` and `fee` over the addresses, return the --- sum of `fee` and the remainder of the equal distribution and the list ouf --- transaction outputs that cover the balance and fees. --- --- The idea is to have an specified spending balance and fees that must be paid --- by the selected addresses. --- TODO need right splitting of v! -calcOutputsFromBalance :: - forall era. - ( EraTxOut era - , Split (Value era) - ) => - Value era -> - [Addr (EraCrypto era)] -> - Coin -> - (Coin, StrictSeq (TxOut era)) -calcOutputsFromBalance balance_ addrs fee = - ( fee <+> splitCoinRem - , StrictSeq.fromList $ zipWith mkBasicTxOut addrs amountPerOutput - ) - where - -- split the available balance into equal portions (one for each address), - -- if there is a remainder, then add it to the fee. - balanceAfterFee = balance_ <-> inject fee - (amountPerOutput, splitCoinRem) = - vsplit balanceAfterFee (fromIntegral $ length addrs) - --- | Select unspent output(s) to serve as inputs for a new transaction --- --- Returns the inputs, paired with the KeyPair or multi-sig script required to --- witness the spending of the input. --- Also returns the total spendable balance. - --- NOTE: this function needs access to the keys and multi-sig scripts that the --- given UTxO originated from (in order to produce the appropriate witnesses to --- spend these outputs). If this is not the case, `findPayKeyPairAddr` / --- `findPayScriptFromAddr` will fail by not finding the matching keys or scripts. -genInputs :: - forall era. - EraTxOut era => - (Int, Int) -> - Map (KeyHash 'Payment (EraCrypto era)) (KeyPair 'Payment (EraCrypto era)) -> - Map (ScriptHash (EraCrypto era)) (Script era, Script era) -> - UTxO era -> - Gen - ( [TxIn (EraCrypto era)] - , Value era - , ([KeyPair 'Witness (EraCrypto era)], [(Script era, Script era)]) - ) -genInputs (minNumGenInputs, maxNumGenInputs) keyHashMap payScriptMap (UTxO utxo) = do - numInputs <- QC.choose (minNumGenInputs, maxNumGenInputs) - selectedUtxo <- pickRandomFromMap numInputs utxo - let (inputs, witnesses) = unzip (fmap witnessedInput <$> selectedUtxo) - return - ( inputs - , sumAllValue @era (snd <$> selectedUtxo) - , Either.partitionEithers witnesses - ) - where - witnessedInput output = - case output ^. addrTxOutL of - addr@(Addr _ (KeyHashObj _) _) -> - Left . asWitness $ findPayKeyPairAddr @era addr keyHashMap - addr@(Addr _ (ScriptHashObj _) _) -> - Right $ findPayScriptFromAddr @era addr payScriptMap - _ -> error "unsupported address" - --- | Select a subset of the reward accounts to use for reward withdrawals. -genWithdrawals :: - forall era. - Constants -> - Map (ScriptHash (EraCrypto era)) (Script era, Script era) -> - Map (KeyHash 'Staking (EraCrypto era)) (KeyPair 'Staking (EraCrypto era)) -> - Map (Credential 'Staking (EraCrypto era)) Coin -> - Gen - ( [(RewardAccount (EraCrypto era), Coin)] - , ([KeyPair 'Witness (EraCrypto era)], [(Script era, Script era)]) - ) -genWithdrawals - Constants - { frequencyNoWithdrawals - , frequencyAFewWithdrawals - , frequencyPotentiallyManyWithdrawals - , maxAFewWithdrawals - } - ksIndexedStakeScripts - ksIndexedStakingKeys - withdrawals = do - (a, b) <- - QC.frequency - [ - ( frequencyNoWithdrawals - , pure ([], ([], [])) - ) - , - ( frequencyAFewWithdrawals - , genWrdls (take maxAFewWithdrawals . Map.toList $ withdrawals) - ) - , - ( frequencyPotentiallyManyWithdrawals - , genWrdls (Map.toList withdrawals) - ) - ] - pure (a, b) - where - toRewardAccount (rwd, coinx) = (RewardAccount Testnet rwd, coinx) - genWrdls withdrawals_ = do - selectedWrdls <- map toRewardAccount <$> QC.sublistOf withdrawals_ - let txwits = - mkWithdrawalsWits @era ksIndexedStakeScripts ksIndexedStakingKeys - . raCredential - . fst - <$> selectedWrdls - return (selectedWrdls, Either.partitionEithers txwits) - --- | Collect witnesses needed for reward withdrawals. -mkWithdrawalsWits :: - forall era. - Map (ScriptHash (EraCrypto era)) (Script era, Script era) -> - Map (KeyHash 'Staking (EraCrypto era)) (KeyPair 'Staking (EraCrypto era)) -> - Credential 'Staking (EraCrypto era) -> - Either (KeyPair 'Witness (EraCrypto era)) (Script era, Script era) -mkWithdrawalsWits scriptsByStakeHash _ c@(ScriptHashObj _) = - Right $ - findStakeScriptFromCred @era (asWitness c) scriptsByStakeHash -mkWithdrawalsWits _ keyHashMap c@(KeyHashObj _) = - Left $ - asWitness $ - findPayKeyPairCred @era c keyHashMap - --- | Select recipient addresses that will serve as output targets for a new --- transaction. -genRecipients :: - forall era. - EraGen era => - Int -> - KeyPairs (EraCrypto era) -> - [(Script era, Script era)] -> - Gen [Addr (EraCrypto era)] -genRecipients len keys scripts = do - n' <- - QC.frequency - ( (if len > 1 then [(1, pure (len - 1))] else []) - -- contract size of UTxO (only if at least 2 inputs are chosen) - ++ [(2, pure len)] - -- keep size - ++ [(1, pure $ len + 1)] - ) - -- expand size of UTxO - - -- choose m scripts and n keys as recipients - -- We want to choose more Keys than Scripts by a factor of 2 or more. - (m, n) <- case n' of - 0 -> pure (0, 0) - 1 -> pure (0, 1) - 2 -> pure (0, 2) - 3 -> pure (1, 2) - 4 -> pure (1, 3) - 5 -> pure (2, 3) - _ -> - do - m <- QC.choose (0, n' - 4) - let n = n' - m - pure (m, n) - - recipientKeys <- ruffle n keys - recipientScripts <- ruffle m scripts - - let payKeys = mkCred . fst <$> recipientKeys - stakeKeys = mkCred . snd <$> recipientKeys - payScripts = scriptToCred' . fst <$> recipientScripts - stakeScripts = scriptToCred' . snd <$> recipientScripts - - -- zip keys and scripts together as base addresses - let payCreds = payKeys ++ payScripts - stakeCreds = stakeKeys ++ stakeScripts - let stakeCreds' = fmap StakeRefBase stakeCreds - - return (zipWith (Addr Testnet) payCreds stakeCreds') - where - scriptToCred' :: Script era -> Credential kr (EraCrypto era) - scriptToCred' = ScriptHashObj . hashScript @era - -genPtrAddrs :: DState era -> [Addr (EraCrypto era)] -> Gen [Addr (EraCrypto era)] -genPtrAddrs ds addrs = do - let pointers = ptrsMap ds - n <- QC.choose (0, min (Map.size pointers) (length addrs)) - pointerList <- map fst <$> pickRandomFromMap n pointers - - let addrs' = zipWith baseAddrToPtrAddr (take n addrs) pointerList - - pure (addrs' ++ drop n addrs) - where - baseAddrToPtrAddr a p = case a of - Addr n pay _ -> Addr n pay (StakeRefPtr p) - _ -> a diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/LaxBlock.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/LaxBlock.hs deleted file mode 100644 index db07bfb0340..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/LaxBlock.hs +++ /dev/null @@ -1,57 +0,0 @@ -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} - -module Test.Cardano.Ledger.Shelley.LaxBlock where - -import Cardano.Ledger.Binary ( - Annotator (..), - DecCBOR (decCBOR), - Decoder, - ToCBOR, - annotatorSlice, - decodeRecordNamed, - ) -import Cardano.Ledger.Block (Block (..)) -import Cardano.Ledger.Core (Era, EraSegWits (TxSeq), EraTx) -import Cardano.Ledger.Shelley.BlockChain (ShelleyTxSeq, txSeqDecoder) -import Data.Typeable (Typeable) - --- | A block in which we do not validate the matched --- encoding of parts of the segwit. --- This is only for testing. -newtype LaxBlock h era = LaxBlock (Block h era) - deriving (ToCBOR) - -blockDecoder :: - ( EraTx era - , TxSeq era ~ ShelleyTxSeq era - , DecCBOR (Annotator h) - ) => - Bool -> - forall s. - Decoder s (Annotator (Block h era)) -blockDecoder lax = annotatorSlice $ - decodeRecordNamed "Block" (const 4) $ do - header <- decCBOR - txns <- txSeqDecoder lax - pure $ Block' <$> header <*> txns - -deriving stock instance (Era era, Show (TxSeq era), Show h) => Show (LaxBlock h era) - -instance - ( EraTx era - , Typeable h - , TxSeq era ~ ShelleyTxSeq era - , DecCBOR (Annotator h) - ) => - DecCBOR (Annotator (LaxBlock h era)) - where - decCBOR = fmap LaxBlock <$> blockDecoder True diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/PropertyTests.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/PropertyTests.hs deleted file mode 100644 index 1ec5f29e54e..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/PropertyTests.hs +++ /dev/null @@ -1,90 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DoAndIfThenElse #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} - -module Test.Cardano.Ledger.Shelley.PropertyTests ( - commonTests, -) -where - -import Cardano.Ledger.BaseTypes (Globals) -import Cardano.Ledger.Core -import Cardano.Ledger.Shelley.API (LedgerState) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.Rules (LedgerEnv) -import Control.Monad.Trans.Reader (ReaderT) -import Control.State.Transition -import Data.Functor.Identity (Identity) -import Test.Cardano.Ledger.Shelley.Generator.Core (GenEnv) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (EraGen) -import Test.Cardano.Ledger.Shelley.Rules.Chain (CHAIN) -import qualified Test.Control.State.Transition.Trace.Generator.QuickCheck as QC - -import qualified Test.Cardano.Ledger.Shelley.ByronTranslation as ByronTranslation ( - testGroupByronTranslation, - ) -import qualified Test.Cardano.Ledger.Shelley.Rules.AdaPreservation as AdaPreservation -import qualified Test.Cardano.Ledger.Shelley.Rules.ClassifyTraces as ClassifyTraces ( - onlyValidChainSignalsAreGenerated, - onlyValidLedgerSignalsAreGenerated, - relevantCasesAreCovered, - ) -import qualified Test.Cardano.Ledger.Shelley.Rules.CollisionFreeness as ColllisionFree (tests) -import qualified Test.Cardano.Ledger.Shelley.Rules.Deleg as Deleg (tests) -import qualified Test.Cardano.Ledger.Shelley.Rules.IncrementalStake as IncrementalStake ( - incrStakeComputationTest, - ) -import qualified Test.Cardano.Ledger.Shelley.Rules.Pool as Pool (tests) -import qualified Test.Cardano.Ledger.Shelley.Rules.PoolReap as PoolReap (tests) -import Test.Cardano.Ledger.Shelley.Serialisation.EraIndepGenerators () -import qualified Test.Cardano.Ledger.Shelley.ShelleyTranslation as ShelleyTranslation ( - testGroupShelleyTranslation, - ) -import Test.Cardano.Ledger.Shelley.Utils (ChainProperty) -import Test.QuickCheck (Args (maxSuccess), stdArgs) -import Test.Tasty (TestTree, localOption, testGroup) -import qualified Test.Tasty.QuickCheck as TQC - -commonTests :: - forall era ledger. - ( EraGen era - , ChainProperty era - , QC.HasTrace (CHAIN era) (GenEnv era) - , QC.HasTrace ledger (GenEnv era) - , Embed (EraRule "DELEGS" era) ledger - , Embed (EraRule "UTXOW" era) ledger - , Environment ledger ~ LedgerEnv era - , QC.BaseEnv ledger ~ Globals - , BaseM ledger ~ ReaderT Globals Identity - , State ledger ~ LedgerState era - , Signal ledger ~ Tx era - , GovState era ~ ShelleyGovState era - ) => - [TestTree] -commonTests = - [ ( localOption (TQC.QuickCheckMaxRatio 100) $ - (ClassifyTraces.relevantCasesAreCovered @era (maxSuccess stdArgs)) - ) - , Deleg.tests @era - , Pool.tests @era - , PoolReap.tests @era - , testGroup - "CHAIN level Properties" - [ AdaPreservation.tests @era @ledger (maxSuccess stdArgs) - , ColllisionFree.tests @era @ledger - , IncrementalStake.incrStakeComputationTest @era @ledger - ] - , testGroup - "Trace generators properties" - [ ClassifyTraces.onlyValidLedgerSignalsAreGenerated @era @ledger - , ClassifyTraces.onlyValidChainSignalsAreGenerated @era - ] - , ByronTranslation.testGroupByronTranslation - , ShelleyTranslation.testGroupShelleyTranslation - ] diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rewards.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rewards.hs deleted file mode 100644 index eb04b4db78c..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rewards.hs +++ /dev/null @@ -1,822 +0,0 @@ -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE PartialTypeSignatures #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TupleSections #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# OPTIONS_GHC -Wno-orphans #-} - --- | Currently this uses the trace mechanism to check that computing rewards has --- a required set of properties. It works only in the Shelley Era. It could be --- generalized, and then moved to the Generator/Trace/ directory which computes --- property tests in all eras. -module Test.Cardano.Ledger.Shelley.Rewards ( - tests, - C, - defaultMain, - newEpochProp, - newEpochEventsProp, - RewardUpdateOld (..), - createRUpdOld, - createRUpdOld_, -) -where - -import qualified Cardano.Crypto.DSIGN as Crypto -import Cardano.Crypto.Hash (Blake2b_256, hashToBytes) -import Cardano.Crypto.Seed (mkSeedFromBytes) -import qualified Cardano.Crypto.VRF as Crypto -import Cardano.Ledger.BaseTypes ( - ActiveSlotCoeff, - BlocksMade (..), - BoundedRational (..), - Globals (..), - Network (..), - ProtVer (..), - ShelleyBase, - StrictMaybe (..), - UnitInterval, - activeSlotVal, - epochInfoPure, - mkActiveSlotCoeff, - ) -import Cardano.Ledger.Binary (encCBOR, hashWithEncoder, natVersion, shelleyProtVer) -import Cardano.Ledger.Coin (Coin (..), DeltaCoin (..), rationalToCoinViaFloor, toDeltaCoin) -import Cardano.Ledger.Compactible -import Cardano.Ledger.Credential (Credential (..)) -import Cardano.Ledger.Crypto (VRF) -import qualified Cardano.Ledger.Crypto as CC (Crypto) -import Cardano.Ledger.EpochBoundary ( - Stake (..), - maxPool, - poolStake, - sumAllStake, - sumStakePerPool, - ) -import Cardano.Ledger.Keys ( - KeyHash, - KeyRole (..), - VKey (..), - hashKey, - ) -import Cardano.Ledger.Shelley.API (NonMyopic, SnapShot (..), SnapShots (..)) -import Cardano.Ledger.Shelley.API.Types (PoolParams (..)) -import Cardano.Ledger.Shelley.Core -import qualified Cardano.Ledger.Shelley.HardForks as HardForks -import Cardano.Ledger.Shelley.LedgerState ( - AccountState (..), - CertState (..), - EpochState (..), - FilteredRewards (..), - LedgerState (..), - NewEpochState (..), - RewardUpdate (..), - circulation, - completeRupd, - createRUpd, - filterAllRewards, - lsCertState, - prevPParamsEpochStateL, - rewards, - updateNonMyopic, - ) -import Cardano.Ledger.Shelley.PoolRank (Likelihood, leaderProbability, likelihood) -import Cardano.Ledger.Shelley.RewardUpdate ( - FreeVars (..), - Pulser, - RewardAns (..), - RewardEvent, - RewardPulser (RSLP), - ) -import Cardano.Ledger.Shelley.Rewards ( - StakeShare (..), - aggregateRewards, - leaderRew, - memberRew, - mkApparentPerformance, - mkPoolRewardInfo, - ) -import Cardano.Ledger.Shelley.Rules ( - PulsingRewUpdate (..), - RupdEvent (RupdEvent), - ShelleyNewEpochEvent (DeltaRewardEvent, TotalRewardEvent), - ShelleyTickEvent (TickNewEpochEvent, TickRupdEvent), - ) -import Cardano.Ledger.Shelley.TxBody (RewardAccount (..)) -import Cardano.Ledger.Slot (epochInfoSize) -import qualified Cardano.Ledger.UMap as UM -import Cardano.Ledger.Val (Val (..), invert, (<+>), (<->)) -import Cardano.Slotting.Slot (EpochSize (..)) -import Control.Monad (replicateM) -import Control.Monad.Trans.Reader (asks, runReader) -import Control.SetAlgebra (eval, (◁)) -import Data.Foldable (fold, foldl') -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Maybe (fromMaybe, mapMaybe) -import Data.Proxy -import Data.Pulse (Pulsable (..)) -import Data.Ratio ((%)) -import qualified Data.Sequence.Strict as StrictSeq -import Data.Set (Set) -import qualified Data.Set as Set -import Data.TreeDiff (ansiWlEditExprCompact, ediff) -import qualified Data.VMap as VMap -import Data.Word (Word64) -import GHC.Stack -import Lens.Micro ((&), (.~), (^.)) -import Numeric.Natural (Natural) -import Test.Cardano.Ledger.Core.KeyPair (KeyPair (..), vKey) -import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes (C) -import Test.Cardano.Ledger.Shelley.Constants (defaultConstants) -import Test.Cardano.Ledger.Shelley.Generator.Core (genCoin, genNatural) -import Test.Cardano.Ledger.Shelley.Generator.ShelleyEraGen () -import Test.Cardano.Ledger.Shelley.Rules.Chain (ChainEvent (..), ChainState (..)) -import Test.Cardano.Ledger.Shelley.Rules.TestChain (forAllChainTrace, forEachEpochTrace) -import Test.Cardano.Ledger.Shelley.Serialisation.EraIndepGenerators () -import Test.Cardano.Ledger.Shelley.Serialisation.Generators () -import Test.Cardano.Ledger.Shelley.Utils ( - runShelleyBase, - testGlobals, - unsafeBoundRational, - ) -import Test.Cardano.Ledger.TerseTools (Terse (..), tersemapdiffs) -import Test.Control.State.Transition.Trace (SourceSignalTarget (..), getEvents, sourceSignalTargets) -import Test.Tasty (TestTree, defaultMain, testGroup) -import Test.Tasty.QuickCheck ( - Gen, - Property, - arbitrary, - choose, - counterexample, - elements, - noShrinking, - property, - testProperty, - withMaxSuccess, - (===), - ) - --- ======================================================================== --- Bounds and Constants -- - -maxNumPools :: Int -maxNumPools = 100 - -maxNumMembers :: Int -maxNumMembers = 100 - -maxMemberLovelace :: Integer -maxMemberLovelace = 100000 - -maxOwnerLovelaceAbovePledge :: Integer -maxOwnerLovelaceAbovePledge = 100000 - -maxPoolPledeg :: Integer -maxPoolPledeg = 1000000 - -maxPoolCost :: Integer -maxPoolCost = 1000000 - -maxPoolBlocks :: Natural -maxPoolBlocks = 1000000 - -numberOfTests :: Int -numberOfTests = 500 - -decentralizationRange :: [Rational] -decentralizationRange = [0, 0.1 .. 1] - -tauRange :: [Rational] -tauRange = [0, 0.05 .. 0.3] - -rhoRange :: [Rational] -rhoRange = [0, 0.05 .. 0.3] - --- Helpers -- - -keyPair :: CC.Crypto c => Int -> KeyPair r c -keyPair seed = KeyPair vk sk - where - vk = VKey (Crypto.deriveVerKeyDSIGN sk) - sk = - Crypto.genKeyDSIGN $ - mkSeedFromBytes . hashToBytes $ - hashWithEncoder @Blake2b_256 shelleyProtVer encCBOR seed - -vrfKeyPair :: forall v. Crypto.VRFAlgorithm v => Int -> (Crypto.SignKeyVRF v, Crypto.VerKeyVRF v) -vrfKeyPair seed = (sk, vk) - where - vk = Crypto.deriveVerKeyVRF sk - sk = - Crypto.genKeyVRF $ - mkSeedFromBytes . hashToBytes $ - hashWithEncoder @Blake2b_256 shelleyProtVer encCBOR seed - -data PoolSetUpArgs c f = PoolSetUpArgs - { poolPledge :: f Coin - , poolCost :: f Coin - , poolMargin :: f UnitInterval - , poolMembers :: f (Map (Credential 'Staking c) Coin) - } - -emptySetupArgs :: PoolSetUpArgs c Maybe -emptySetupArgs = - PoolSetUpArgs - { poolPledge = Nothing - , poolCost = Nothing - , poolMargin = Nothing - , poolMembers = Nothing - } - -data PoolInfo c = PoolInfo - { params :: PoolParams c - , coldKey :: KeyPair 'StakePool c - , ownerKey :: KeyPair 'Staking c - , ownerStake :: Coin - , rewardKey :: KeyPair 'Staking c - , members :: Map (Credential 'Staking c) Coin - } - --- Generators -- - -genNonOwnerMembers :: CC.Crypto c => Gen (Map (Credential 'Staking c) Coin) -genNonOwnerMembers = do - numMembers <- choose (0, maxNumMembers) - fmap Map.fromList . replicateM numMembers $ do - credential <- KeyHashObj . hashKey . vKey . keyPair <$> arbitrary - coins <- genCoin 0 maxMemberLovelace - pure (credential, coins) - -getOrGen :: Maybe a -> Gen a -> Gen a -getOrGen (Just x) _ = pure x -getOrGen Nothing g = g - -genMargin :: Gen UnitInterval -genMargin = do - let denom = 10 - numer <- choose (0, denom) - pure $ unsafeBoundRational (numer % denom) - -genPoolInfo :: forall c. CC.Crypto c => PoolSetUpArgs c Maybe -> Gen (PoolInfo c) -genPoolInfo PoolSetUpArgs {poolPledge, poolCost, poolMargin, poolMembers} = do - pledge <- getOrGen poolPledge $ genCoin 0 maxPoolPledeg - cost <- getOrGen poolCost $ genCoin 0 maxPoolCost - margin <- getOrGen poolMargin genMargin - vrfKey <- vrfKeyPair @(VRF c) <$> arbitrary - coldKey <- keyPair <$> arbitrary - ownerKey <- keyPair <$> arbitrary - rewardKey <- keyPair <$> arbitrary - members' <- getOrGen poolMembers genNonOwnerMembers - ownerStake <- (pledge <>) <$> genCoin 0 maxOwnerLovelaceAbovePledge - -- here we are forcing the pool to meet the pledeg, later we may want flexibility - let members = Map.insert (KeyHashObj . hashKey . vKey $ ownerKey) ownerStake members' - params = - PoolParams - { ppId = hashKey . vKey $ coldKey - , ppVrf = Crypto.hashVerKeyVRF . snd $ vrfKey - , ppPledge = pledge - , ppCost = cost - , ppMargin = margin - , ppRewardAccount = RewardAccount Testnet . KeyHashObj . hashKey . vKey $ rewardKey - , ppOwners = Set.fromList [hashKey $ vKey ownerKey] - , ppRelays = StrictSeq.empty - , ppMetadata = SNothing - } - pure $ PoolInfo {params, coldKey, ownerKey, ownerStake, rewardKey, members} - -genRewardPPs :: (EraPParams era, ProtVerAtMost era 6) => Gen (PParams era) -genRewardPPs = do - d <- g decentralizationRange - tau <- g tauRange - rho <- g rhoRange - pure $ - emptyPParams - & ppDL .~ d - & ppTauL .~ tau - & ppRhoL .~ rho - where - g xs = unsafeBoundRational <$> elements xs - -genBlocksMade :: [PoolParams c] -> Gen (BlocksMade c) -genBlocksMade pools = BlocksMade . Map.fromList <$> mapM f pools - where - f p = (ppId p,) <$> genNatural 0 maxPoolBlocks - --- Properties -- - -toCompactCoinError :: HasCallStack => Coin -> CompactForm Coin -toCompactCoinError c = - fromMaybe (error $ "Invalid Coin: " <> show c) $ toCompact c - -rewardsBoundedByPot :: - forall era. - (EraPParams era, ProtVerAtMost era 6) => - Proxy era -> - Property -rewardsBoundedByPot _ = property $ do - numPools <- choose (0, maxNumPools) - pools <- sequence $ genPoolInfo @(EraCrypto era) <$> replicate numPools emptySetupArgs - pp <- genRewardPPs - rewardPot <- genCoin 0 (fromIntegral $ maxLovelaceSupply testGlobals) - undelegatedLovelace <- genCoin 0 (fromIntegral $ maxLovelaceSupply testGlobals) - asc <- mkActiveSlotCoeff . unsafeBoundRational <$> elements [0.1, 0.2, 0.3] - bs@(BlocksMade blocks) <- genBlocksMade (fmap params pools) - let totalBlocks = sum blocks - silentSlots <- genNatural 0 (3 * totalBlocks) -- the '3 * sum blocks' is pretty arbitrary - let stake = fold (members <$> pools) - delegs = fold $ - flip fmap pools $ - \PoolInfo {params, members} -> - Map.fromList $ (,ppId params) <$> Map.keys members - rewardAccounts = Set.fromList $ Map.keys delegs - poolParams = - VMap.fromList - [(ppId params, params) | PoolInfo {params} <- pools] - totalLovelace = undelegatedLovelace <> fold stake - slotsPerEpoch = EpochSize . fromIntegral $ totalBlocks + silentSlots - (RewardAns rs _) = - runShelleyBase $ - reward @era - pp - bs - rewardPot - rewardAccounts - poolParams - (Stake (VMap.fromMap (toCompactCoinError <$> stake))) - (VMap.fromMap delegs) - totalLovelace - pure $ - counterexample - ( mconcat - [ "pp\n" - , show pp - , "\nrewardPot\n" - , show rewardPot - , "\nrewardAccounts\n" - , show rewardAccounts - , "\npoolParams\n" - , show poolParams - , "\nstake\n" - , show stake - , "\ndelegs\n" - , show delegs - , "\ntotalLovelace\n" - , show totalLovelace - , "\nasc\n" - , show asc - , "\nslotsPerEpoch\n" - , show slotsPerEpoch - ] - ) - (foldMap rewardAmount rs < rewardPot) - --- ==================================================================================== --- To demonstrate that the code we wrote that uses pulsing does not --- change the result of reward calculation. we reproduce the old style functions here. - -rewardOnePool :: - EraPParams era => - PParams era -> - Coin -> - Natural -> - Natural -> - PoolParams (EraCrypto era) -> - Stake (EraCrypto era) -> - Rational -> - Rational -> - Coin -> - Set.Set (Credential 'Staking (EraCrypto era)) -> - Map (Credential 'Staking (EraCrypto era)) Coin -rewardOnePool - pp - r - blocksN - blocksTotal - pool - (Stake stake) - sigma - sigmaA - (Coin totalStake) - addrsRew = - rewards' - where - Coin ostake = - Set.foldl' - (\c o -> maybe c (mappend c . fromCompact) $ VMap.lookup (KeyHashObj o) stake) - mempty - (ppOwners pool) - Coin pledge = ppPledge pool - pr = fromIntegral pledge % fromIntegral totalStake - Coin maxP = - if pledge <= ostake - then maxPool pp r sigma pr - else mempty - appPerf = mkApparentPerformance (pp ^. ppDG) sigmaA blocksN blocksTotal - poolR = rationalToCoinViaFloor (appPerf * fromIntegral maxP) - tot = fromIntegral totalStake - pv = pp ^. ppProtocolVersionL - mRewards = - Map.fromList - [ ( hk - , memberRew - poolR - pool - (StakeShare (unCoin (fromCompact c) % tot)) - (StakeShare sigma) - ) - | (hk, c) <- VMap.toAscList stake - , notPoolOwner hk - ] - notPoolOwner (KeyHashObj hk) = hk `Set.notMember` ppOwners pool - notPoolOwner (ScriptHashObj _) = True - lReward = - leaderRew - poolR - pool - (StakeShare $ fromIntegral ostake % tot) - (StakeShare sigma) - f = - if HardForks.aggregatedRewards pv - then Map.insertWith (<>) - else Map.insert - potentialRewards = - f (raCredential $ ppRewardAccount pool) lReward mRewards - potentialRewards' = - if HardForks.forgoRewardPrefilter pv - then potentialRewards - else eval (addrsRew ◁ potentialRewards) - rewards' = Map.filter (/= Coin 0) potentialRewards' - -rewardOld :: - forall era. - EraPParams era => - PParams era -> - BlocksMade (EraCrypto era) -> - Coin -> - Set.Set (Credential 'Staking (EraCrypto era)) -> - VMap.VMap VMap.VB VMap.VB (KeyHash 'StakePool (EraCrypto era)) (PoolParams (EraCrypto era)) -> - Stake (EraCrypto era) -> - VMap.VMap VMap.VB VMap.VB (Credential 'Staking (EraCrypto era)) (KeyHash 'StakePool (EraCrypto era)) -> - Coin -> - ActiveSlotCoeff -> - EpochSize -> - ( Map - (Credential 'Staking (EraCrypto era)) - Coin - , Map (KeyHash 'StakePool (EraCrypto era)) Likelihood - ) -rewardOld - pp - (BlocksMade b) - r - addrsRew - poolParams - stake - delegs - (Coin totalStake) - asc - slotsPerEpoch = (rewards', hs) - where - totalBlocks = sum b - Coin activeStake = sumAllStake stake - results :: - [ ( KeyHash 'StakePool (EraCrypto era) - , Maybe (Map (Credential 'Staking (EraCrypto era)) Coin) - , Likelihood - ) - ] - results = do - (hk, pparams) <- VMap.toAscList poolParams - let sigma = if totalStake == 0 then 0 else fromIntegral pstake % fromIntegral totalStake - sigmaA = if activeStake == 0 then 0 else fromIntegral pstake % fromIntegral activeStake - blocksProduced = Map.lookup hk b - actgr = poolStake hk delegs stake - Coin pstake = sumAllStake actgr - rewardMap = case blocksProduced of - Nothing -> Nothing -- This is equivalent to calling rewarOnePool with n = 0 - Just n -> - Just $ - rewardOnePool - pp - r - n - totalBlocks - pparams - actgr - sigma - sigmaA - (Coin totalStake) - addrsRew - ls = - likelihood - (fromMaybe 0 blocksProduced) - (leaderProbability asc sigma (pp ^. ppDG)) - slotsPerEpoch - pure (hk, rewardMap, ls) - pv = pp ^. ppProtocolVersionL - f = - if HardForks.aggregatedRewards pv - then Map.unionsWith (<>) - else Map.unions - rewards' = f $ mapMaybe (\(_, x, _) -> x) results - hs = Map.fromList $ fmap (\(hk, _, l) -> (hk, l)) results - -data RewardUpdateOld c = RewardUpdateOld - { deltaTOld :: !DeltaCoin - , deltaROld :: !DeltaCoin - , rsOld :: !(Map (Credential 'Staking c) Coin) - , deltaFOld :: !DeltaCoin - , nonMyopicOld :: !(NonMyopic c) - } - deriving (Show, Eq) - -createRUpdOld :: - forall era. - EraGov era => - EpochSize -> - BlocksMade (EraCrypto era) -> - EpochState era -> - Coin -> - ShelleyBase (RewardUpdateOld (EraCrypto era)) -createRUpdOld slotsPerEpoch b es@(EpochState acnt ls ss nm) maxSupply = - createRUpdOld_ @era slotsPerEpoch b ss reserves pr totalStake rs nm - where - ds = certDState $ lsCertState ls - rs = UM.domain $ rewards ds - reserves = asReserves acnt - totalStake = circulation es maxSupply - pr = es ^. prevPParamsEpochStateL - -createRUpdOld_ :: - forall era. - EraPParams era => - EpochSize -> - BlocksMade (EraCrypto era) -> - SnapShots (EraCrypto era) -> - Coin -> - PParams era -> - Coin -> - Set.Set (Credential 'Staking (EraCrypto era)) -> - NonMyopic (EraCrypto era) -> - ShelleyBase (RewardUpdateOld (EraCrypto era)) -createRUpdOld_ slotsPerEpoch b@(BlocksMade b') ss (Coin reserves) pr totalStake rs nm = do - asc <- asks activeSlotCoeff - let SnapShot stake' delegs' poolParams = ssStakeGo ss - -- reserves and rewards change - deltaR1 = - rationalToCoinViaFloor $ - min 1 eta - * unboundRational (pr ^. ppRhoL) - * fromIntegral reserves - d = unboundRational (pr ^. ppDG) - expectedBlocks = - floor $ - (1 - d) * unboundRational (activeSlotVal asc) * fromIntegral slotsPerEpoch - -- TODO asc is a global constant, and slotsPerEpoch should not change often at all, - -- it would be nice to not have to compute expectedBlocks every epoch - eta - | unboundRational (pr ^. ppDG) >= 0.8 = 1 - | otherwise = blocksMade % expectedBlocks - Coin rPot = ssFee ss <> deltaR1 - deltaT1 = floor $ unboundRational (pr ^. ppTauL) * fromIntegral rPot - _R = Coin $ rPot - deltaT1 - (rs_, newLikelihoods) = - rewardOld - pr - b - _R - rs - poolParams - stake' - delegs' - totalStake - asc - slotsPerEpoch - deltaR2 = _R <-> Map.foldr (<+>) mempty rs_ - blocksMade = fromIntegral $ Map.foldr (+) 0 b' :: Integer - pure $ - RewardUpdateOld - { deltaTOld = DeltaCoin deltaT1 - , deltaROld = invert (toDeltaCoin deltaR1) <> toDeltaCoin deltaR2 - , rsOld = rs_ - , deltaFOld = invert (toDeltaCoin $ ssFee ss) - , nonMyopicOld = updateNonMyopic nm _R newLikelihoods - } - -overrideProtocolVersionUsedInRewardCalc :: - EraGov era => - ProtVer -> - EpochState era -> - EpochState era -overrideProtocolVersionUsedInRewardCalc pv es = - es & prevPParamsEpochStateL . ppProtocolVersionL .~ pv - -oldEqualsNew :: - forall era. - era ~ C => - ProtVer -> - NewEpochState era -> - Property -oldEqualsNew pv newepochstate = - counterexample - (show newepochstate ++ show (ansiWlEditExprCompact $ ediff old new)) - (old === new) - where - globals = testGlobals - epochstate = overrideProtocolVersionUsedInRewardCalc pv $ nesEs newepochstate - maxsupply :: Coin - maxsupply = Coin (fromIntegral (maxLovelaceSupply globals)) - blocksmade :: BlocksMade (EraCrypto era) - blocksmade = nesBprev newepochstate - epochnumber = nesEL newepochstate - slotsPerEpoch :: EpochSize - slotsPerEpoch = runReader (epochInfoSize (epochInfoPure globals) epochnumber) globals - unAggregated = - runReader (createRUpd slotsPerEpoch blocksmade epochstate maxsupply asc k) globals - old = rsOld $ runReader (createRUpdOld slotsPerEpoch blocksmade epochstate maxsupply) globals - newWithZeros = aggregateRewards @(EraCrypto era) pv (rs unAggregated) - new = Map.filter (/= Coin 0) newWithZeros - asc = activeSlotCoeff globals - k = securityParameter testGlobals - -oldEqualsNewOn :: - forall era. - era ~ C => - ProtVer -> - NewEpochState era -> - Property -oldEqualsNewOn pv newepochstate = old === new - where - globals = testGlobals - epochstate = overrideProtocolVersionUsedInRewardCalc pv $ nesEs newepochstate - maxsupply :: Coin - maxsupply = Coin (fromIntegral (maxLovelaceSupply globals)) - blocksmade :: BlocksMade (EraCrypto era) - blocksmade = nesBprev newepochstate - epochnumber = nesEL newepochstate - slotsPerEpoch :: EpochSize - slotsPerEpoch = runReader (epochInfoSize (epochInfoPure globals) epochnumber) globals - unAggregated = - runReader (createRUpd slotsPerEpoch blocksmade epochstate maxsupply asc k) globals - old :: Map (Credential 'Staking (EraCrypto era)) Coin - old = rsOld $ runReader (createRUpdOld slotsPerEpoch blocksmade epochstate maxsupply) globals - newWithZeros = aggregateRewards @(EraCrypto era) pv (rs unAggregated) - new = Map.filter (/= Coin 0) newWithZeros - asc = activeSlotCoeff globals - k = securityParameter testGlobals - -lastElem :: [a] -> Maybe a -lastElem [a] = Just a -lastElem [] = Nothing -lastElem (_ : xs) = lastElem xs - --- | Provide a legitimate NewEpochState to make an test Property -newEpochProp :: Word64 -> (NewEpochState C -> Property) -> Property -newEpochProp tracelen propf = withMaxSuccess 100 $ - forAllChainTrace @C tracelen defaultConstants $ \tr -> - case lastElem (sourceSignalTargets tr) of - Just SourceSignalTarget {target} -> propf (chainNes target) - _ -> property True - --- | Given a NewEpochState and [ChainEvent], test a Property at every Epoch Boundary -newEpochEventsProp :: Word64 -> ([ChainEvent C] -> NewEpochState C -> Property) -> Property -newEpochEventsProp tracelen propf = withMaxSuccess 10 $ - forEachEpochTrace @C 10 tracelen defaultConstants $ \tr -> - case lastElem (sourceSignalTargets tr) of - Just SourceSignalTarget {target} -> - propf (concat (runShelleyBase $ getEvents tr)) (chainNes target) - _ -> property True - -aggIncrementalRewardEvents :: - [ChainEvent C] -> - Map (Credential 'Staking (EraCrypto C)) (Set (Reward (EraCrypto C))) -aggIncrementalRewardEvents = foldl' accum Map.empty - where - accum ans (TickEvent (TickRupdEvent (RupdEvent _ m))) = Map.unionWith Set.union m ans - accum ans (TickEvent (TickNewEpochEvent (DeltaRewardEvent (RupdEvent _ m)))) = - Map.unionWith Set.union m ans - accum ans _ = ans - -getMostRecentTotalRewardEvent :: - [ChainEvent C] -> - Map (Credential 'Staking (EraCrypto C)) (Set (Reward (EraCrypto C))) -getMostRecentTotalRewardEvent = foldl' accum Map.empty - where - accum ans (TickEvent (TickNewEpochEvent (TotalRewardEvent _ m))) = Map.unionWith Set.union m ans - accum ans _ = ans - -complete :: PulsingRewUpdate c -> (RewardUpdate c, RewardEvent c) -complete (Complete r) = (r, mempty) -complete (Pulsing rewsnap pulser) = runShelleyBase $ (completeRupd (Pulsing rewsnap pulser)) - -eventsMirrorRewards :: [ChainEvent C] -> NewEpochState C -> Property -eventsMirrorRewards events nes = same eventRew compRew - where - (compRew, eventRew) = - case nesRu nes of - SNothing -> (total, aggFilteredEvent) - SJust pulser -> - ( Map.unionWith Set.union (rs completed) total - , Map.unionWith Set.union lastevent aggevent - ) - where - (completed, lastevent) = complete pulser - total = getMostRecentTotalRewardEvent events - aggevent = aggIncrementalRewardEvents events - FilteredRewards aggFilteredEvent _ _ _ = filterAllRewards aggevent (nesEs nes) - same x y = withMaxSuccess 1 $ counterexample message (x === y) - where - message = - "events don't mirror rewards " - ++ tersemapdiffs - "Map differences: aggregated filtered events on the left, computed on the right." - x - y - -instance Terse (Reward c) where - terse (Reward ty pl (Coin n)) = "Reward{" ++ show ty ++ ", #" ++ take 9 (show pl) ++ ", " ++ show n ++ "}" - -instance Terse x => Terse (Set x) where - terse x = unlines (Set.toList (Set.map terse x)) - --- ================================================================ - -reward :: - forall era. - EraPParams era => - PParams era -> - BlocksMade (EraCrypto era) -> - Coin -> - Set (Credential 'Staking (EraCrypto era)) -> - VMap.VMap VMap.VB VMap.VB (KeyHash 'StakePool (EraCrypto era)) (PoolParams (EraCrypto era)) -> - Stake (EraCrypto era) -> - VMap.VMap VMap.VB VMap.VB (Credential 'Staking (EraCrypto era)) (KeyHash 'StakePool (EraCrypto era)) -> - Coin -> - ShelleyBase (RewardAns (EraCrypto era)) -reward - pp - (BlocksMade b) - r - addrsRew - poolParams - stake - delegs - totalStake = completeM pulser - where - totalBlocks = sum b - stakePerPool = sumStakePerPool delegs stake - activeStake = sumAllStake stake - -- ensure mkPoolRewardInfo does not use stake that doesn't belong to the pool - stakeForPool pool = poolStake (ppId pool) delegs stake - mkPoolRewardInfo' pool = - mkPoolRewardInfo - pp - r - (BlocksMade b) - totalBlocks - (stakeForPool pool) - delegs - stakePerPool - totalStake - activeStake - pool - free = - FreeVars - { fvAddrsRew = addrsRew - , fvTotalStake = totalStake - , fvPoolRewardInfo = - VMap.toMap $ VMap.mapMaybe (either (const Nothing) Just . mkPoolRewardInfo') poolParams - , fvDelegs = delegs - , fvProtVer = pp ^. ppProtocolVersionL - } - pulser :: Pulser (EraCrypto era) - pulser = RSLP 2 free (unStake stake) (RewardAns Map.empty Map.empty) - --- ================================================================== - --- | Note that chainlen must be set high enough so that enough epochs --- have passed to get non-trivial rewards. -chainlen :: Word64 -chainlen = 200 - -tests :: TestTree -tests = - testGroup - "Reward Tests" - [ testProperty "Sum of rewards is bounded by reward pot" $ - withMaxSuccess numberOfTests (rewardsBoundedByPot (Proxy @C)) - , testProperty "compare with reference impl, no provenance, v3" . noShrinking $ - newEpochProp chainlen (oldEqualsNew @C (ProtVer (natVersion @3) 0)) - , testProperty "compare with reference impl, no provenance, v7" . noShrinking $ - newEpochProp chainlen (oldEqualsNew @C (ProtVer (natVersion @7) 0)) - , testProperty "compare with reference impl, with provenance" . noShrinking $ - newEpochProp chainlen (oldEqualsNewOn @C (ProtVer (natVersion @3) 0)) - , testProperty "delta events mirror reward updates" $ - newEpochEventsProp chainlen eventsMirrorRewards - ] diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/AdaPreservation.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/AdaPreservation.hs deleted file mode 100644 index d7c50c327c1..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/AdaPreservation.hs +++ /dev/null @@ -1,638 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} - -module Test.Cardano.Ledger.Shelley.Rules.AdaPreservation ( - adaPreservationProps, - tests, -) where - -import Test.Cardano.Ledger.Shelley.Rules.TestChain ( - TestingLedger, - forAllChainTrace, - ledgerTraceFromBlock, - ledgerTraceFromBlockWithRestrictedUTxO, - longTraceLen, - ) - -import Cardano.Ledger.BaseTypes (StrictMaybe (..)) -import Cardano.Ledger.Block ( - Block (..), - bbody, - ) -import Cardano.Ledger.CertState ( - CertState (..), - DState (..), - certsTotalDepositsTxBody, - certsTotalRefundsTxBody, - ) -import Cardano.Ledger.Coin -import Cardano.Ledger.Compactible (fromCompact) -import Cardano.Ledger.Core -import Cardano.Ledger.Keys (KeyHash, KeyRole (StakePool)) -import Cardano.Ledger.SafeHash (hashAnnotated) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.Internal (compareAdaPots) -import Cardano.Ledger.Shelley.LedgerState ( - EpochState (..), - LedgerState (..), - NewEpochState (..), - PState (..), - UTxOState (..), - completeRupd, - curPParamsEpochStateL, - deltaF, - deltaR, - deltaT, - iRReserves, - iRTreasury, - prevPParamsEpochStateL, - rewards, - rs, - ) -import Cardano.Ledger.Shelley.Rewards (sumRewards) -import Cardano.Ledger.Shelley.Rules ( - votedValue, - ) -import Cardano.Ledger.Shelley.Rules.Reports ( - showCred, - showIR, - showKeyHash, - showListy, - showMap, - showWithdrawal, - ) -import Cardano.Ledger.UMap (sumRewardsUView) -import qualified Cardano.Ledger.UMap as UM -import Cardano.Ledger.UTxO (UTxO (..), coinBalance, txInsFilter, txouts) -import Cardano.Ledger.Val ((<+>), (<->)) -import Cardano.Protocol.TPraos.BHeader (BHeader (..)) -import Data.Foldable (fold, foldl', toList) -import Data.Map (Map) -import qualified Data.Map.Strict as Map -import Data.TreeDiff.QuickCheck (ediffEq) -import Lens.Micro hiding (ix) -import Lens.Micro.Extras (view) -import Test.Cardano.Ledger.Shelley.Constants (defaultConstants) -import Test.Cardano.Ledger.Shelley.Generator.Core (GenEnv) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (EraGen (..)) -import Test.Cardano.Ledger.Shelley.Generator.ShelleyEraGen () -import Test.Cardano.Ledger.Shelley.Rules.Chain (CHAIN, ChainState (..), totalAda, totalAdaPots) -import Test.Cardano.Ledger.Shelley.Utils ( - ChainProperty, - runShelleyBase, - ) -import Test.Control.State.Transition.Trace ( - SourceSignalTarget (..), - Trace (..), - sourceSignalTargets, - ) -import qualified Test.Control.State.Transition.Trace.Generator.QuickCheck as QC -import Test.QuickCheck ( - Property, - Testable (..), - conjoin, - counterexample, - noShrinking, - (.&&.), - (.||.), - (===), - ) -import Test.QuickCheck.Property (withMaxSuccess) -import Test.Tasty (TestTree) -import qualified Test.Tasty.QuickCheck as TQC - -tests :: - forall era ledger. - ( EraGen era - , TestingLedger era ledger - , ChainProperty era - , QC.HasTrace (CHAIN era) (GenEnv era) - , GovState era ~ ShelleyGovState era - ) => - Int -> - TestTree -tests n = - TQC.testProperty - "total amount of Ada is preserved (Chain)" - (noShrinking $ withMaxSuccess n (adaPreservationProps @era @ledger)) - --- | Various preservation properties -adaPreservationProps :: - forall era ledger. - ( EraGen era - , TestingLedger era ledger - , ChainProperty era - , QC.HasTrace (CHAIN era) (GenEnv era) - , GovState era ~ ShelleyGovState era - ) => - Property -adaPreservationProps = - forAllChainTrace @era longTraceLen defaultConstants $ \tr -> do - let ssts :: [SourceSignalTarget (CHAIN era)] - -- In this test, the STS Signal has this definition - -- Signal(CHAIN era) = Block (BHeader (EraCrypto era)) era - ssts = sourceSignalTargets tr - noEpochBoundarySsts = filter sameEpoch ssts - justBoundarySsts = filter (not . sameEpoch) ssts - - conjoin . concat $ - [ -- preservation properties - zipWith (checkPreservation @era) justBoundarySsts [0 ..] - , map (potsSumIncreaseWithdrawalsPerTx @era @ledger) ssts - , map (potsSumIncreaseByRewardsPerTx @era @ledger) ssts - , map (preserveBalance @era @ledger) ssts - , map (preserveBalanceRestricted @era @ledger) ssts - , map (preserveOutputsTx @era @ledger) ssts - , map (potsRewardsDecreaseByWithdrawalsPerTx @era @ledger) ssts - , map (canRestrictUTxO @era @ledger) ssts - , -- well formed deposits - map nonNegativeDeposits ssts - , -- non-epoch-boundary preservation properties - map checkWithdrawalBound noEpochBoundarySsts - , map (utxoDepositsIncreaseByFeesWithdrawals @era @ledger) noEpochBoundarySsts - , map potsSumIncreaseWithdrawalsPerBlock noEpochBoundarySsts - , map feesNonDecreasing noEpochBoundarySsts - ] - -infoRetire :: Map (KeyHash 'StakePool c) Coin -> KeyHash 'StakePool c -> String -infoRetire deposits keyhash = showKeyHash keyhash ++ extra - where - extra = case Map.lookup keyhash deposits of - Nothing -> " (?)" - Just coin -> " (" ++ show coin ++ ")" - --- ADA should be preserved for all state transitions in the generated trace -checkPreservation :: - forall era. - ( EraSegWits era - , GovState era ~ ShelleyGovState era - , EraGov era - ) => - SourceSignalTarget (CHAIN era) -> - Int -> - Property -checkPreservation SourceSignalTarget {source, target, signal} count = - counterexample - ( mconcat - ( [ "\ncount = " ++ show count ++ "\n" - , compareAdaPots "before" (totalAdaPots source) "after" (totalAdaPots target) - , "\n\nTotal lovelace before block\n" - , show sourceTotal - , "\n\nTotal lovelace after block\n" - , show targetTotal - , "\n\nEpoch before block\n" - , show (nesEL . chainNes $ source) - , "\n\nEpoch after block\n" - , show (nesEL . chainNes $ target) - , "\n\nCurrent protocol parameters\n" - , show currPP - , "\nReward Accounts before update\n" - , showMap (take 10 . showCred) show (UM.unUnify oldRAs) - , "\nReward Accounts after update\n" - , showMap (take 10 . showCred) show (UM.unUnify newRAs) - , "\nRetiring pools before update\n" - , showMap (infoRetire oldPoolDeposit) show oldRetire - , "\nRetiring pools after update\n" - , showMap (infoRetire newPoolDeposit) show newRetire - , "\nMIR\n" - , showIR mir - , "\n\nRegistered Reserves MIR total " - , show (fold regMirRes) - , "\n\nUnregistered Reserves MIR total " - , show (fold unRegMirRes) - , "\n\nRegistered Treasury MIR total " - , show (fold regMirTre) - , "\n\nUnregistered Treasury MIR total " - , show (fold unRegMirTre) - , "\n\nPools Retiring This epoch\n" - , showMap - (infoRetire oldPoolDeposit) - show - (Map.filter (\e -> e == (nesEL . chainNes $ target)) oldRetire) - ] - ++ obligationMsgs - ++ rewardUpdateMsgs - ++ ["\n\ntransactions"] - ++ txs - ) - ) - $ sourceTotal === targetTotal - where - sourceTotal = totalAda source - targetTotal = totalAda target - - currPP = view curPParamsEpochStateL . nesEs . chainNes $ source - prevPP = view ppProtocolVersionL . view prevPParamsEpochStateL . nesEs . chainNes $ source - - ru' = nesRu . chainNes $ source - lsOld = esLState . nesEs . chainNes $ source - lsNew = esLState . nesEs . chainNes $ target - oldRAs = rewards . certDState . lsCertState $ lsOld - newRAs = rewards . certDState . lsCertState $ lsNew - oldCertState = lsCertState lsOld - oldRetire = psRetiring . certPState . lsCertState $ lsOld - newRetire = psRetiring . certPState . lsCertState $ lsNew - oldPoolDeposit = psDeposits . certPState . lsCertState $ lsOld - newPoolDeposit = psDeposits . certPState . lsCertState $ lsNew - - proposal = votedValue (sgsCurProposals . utxosGovState . lsUTxOState $ lsOld) currPP 5 - obligationMsgs = case proposal of - Nothing -> [] - Just proposal' -> - [ "\n\nProposed protocol parameter update\n" - , show proposal' - ] - - mir = dsIRewards . certDState . lsCertState $ lsOld - isRegistered kh _ = UM.member kh oldRAs - (regMirRes, unRegMirRes) = Map.partitionWithKey isRegistered (iRReserves mir) - (regMirTre, unRegMirTre) = Map.partitionWithKey isRegistered (iRTreasury mir) - - rewardUpdateMsgs = case ru' of - SNothing -> [] - SJust ru'' -> - let (ru, _rewevent) = runShelleyBase (completeRupd ru'') - regRewards = Map.filterWithKey (\kh _ -> UM.member kh oldRAs) (rs ru) - in [ "\n\nSum of new rewards " - , show (sumRewards prevPP (rs ru)) - , "\n\nNew rewards " - , show (rs ru) - , "\n\nSum of new registered rewards " - , show (sumRewards prevPP regRewards) - , "\n\nChange in Fees " - , show (deltaF ru) - , "\n\nChange in Treasury " - , show (deltaT ru) - , "\n\nChange in Reserves " - , show (deltaR ru) - , "\n\nNet effect of reward update " - , show $ - deltaT ru - <> deltaF ru - <> deltaR ru - <> toDeltaCoin (sumRewards prevPP (rs ru)) - ] - - txs' = toList $ (fromTxSeq @era . bbody) signal - txs = zipWith dispTx txs' [0 :: Int ..] - - dispTx tx ix = - "\n\n******** Transaction " - ++ show ix - ++ " " - ++ show (hashAnnotated (tx ^. bodyTxL)) - ++ "\nfee :" - ++ show (tx ^. bodyTxL . feeTxBodyL) - ++ "\nwithdrawals:" - ++ showWithdrawal (tx ^. bodyTxL . withdrawalsTxBodyL) - ++ "\ncerts:" - ++ showListy ((" " ++) . show) (toList $ tx ^. bodyTxL . certsTxBodyL) - ++ "total deposits " - ++ show (certsTotalDepositsTxBody currPP oldCertState (tx ^. bodyTxL)) - ++ "\ntotal refunds " - ++ show (certsTotalRefundsTxBody currPP oldCertState (tx ^. bodyTxL)) - --- If we are not at an Epoch Boundary (i.e. epoch source == epoch target) --- then the total rewards should change only by withdrawals -checkWithdrawalBound :: - EraGen era => SourceSignalTarget (CHAIN era) -> Property -checkWithdrawalBound SourceSignalTarget {source, signal, target} = - counterexample "checkWithdrawalBound" $ - rewardDelta === withdrawals signal - where - rewardDelta :: Coin - rewardDelta = - fromCompact - (sumRewardsUView (rewards . certDState . lsCertState . esLState . nesEs . chainNes $ source)) - <-> fromCompact - (sumRewardsUView (rewards . certDState . lsCertState . esLState . nesEs . chainNes $ target)) - --- | If we are not at an Epoch Boundary, then (Utxo + Deposits) --- increases by Withdrawals minus Fees (for all transactions in a block) -utxoDepositsIncreaseByFeesWithdrawals :: - forall era ledger. - ( ChainProperty era - , EraGen era - , TestingLedger era ledger - ) => - SourceSignalTarget (CHAIN era) -> - Property -utxoDepositsIncreaseByFeesWithdrawals SourceSignalTarget {source, signal, target} = - counterexample "utxoDepositsIncreaseByFeesWithdrawals" $ - circulation target - <-> circulation source - === withdrawals signal - <-> txFees ledgerTr - where - us = lsUTxOState . esLState . nesEs . chainNes - circulation chainSt = - let UTxOState {utxosUtxo = u, utxosDeposited = d} = us chainSt - in coinBalance u <+> d - (_, ledgerTr) = ledgerTraceFromBlock @era @ledger source signal - --- | If we are not at an Epoch Boundary, then (Utxo + Deposits + Fees) --- increases by sum of withdrawals for all transactions in a block -potsSumIncreaseWithdrawalsPerBlock :: - (ChainProperty era, EraGen era) => - SourceSignalTarget (CHAIN era) -> - Property -potsSumIncreaseWithdrawalsPerBlock SourceSignalTarget {source, signal, target} = - counterexample - "potsSumIncreaseWithdrawalsPerBlock" - $ potsSum target <-> potsSum source === withdrawals signal - where - potsSum chainSt = - let UTxOState {utxosUtxo = u, utxosDeposited = d, utxosFees = f} = - lsUTxOState . esLState . nesEs . chainNes $ chainSt - in coinBalance u <+> d <+> f - --- | If we are not at an Epoch Boundary, then (Utxo + Deposits + Fees) --- increases by sum of withdrawals in a transaction -potsSumIncreaseWithdrawalsPerTx :: - forall era ledger. - ( ChainProperty era - , EraGen era - , TestingLedger era ledger - ) => - SourceSignalTarget (CHAIN era) -> - Property -potsSumIncreaseWithdrawalsPerTx SourceSignalTarget {source = chainSt, signal = block} = - counterexample "potsSumIncreaseWithdrawalsPerTx" $ - conjoin $ - map sumIncreaseWithdrawals $ - sourceSignalTargets ledgerTr - where - (_, ledgerTr) = ledgerTraceFromBlock @era @ledger chainSt block - sumIncreaseWithdrawals :: SourceSignalTarget ledger -> Property - sumIncreaseWithdrawals - SourceSignalTarget - { source = LedgerState UTxOState {utxosUtxo = u, utxosDeposited = d, utxosFees = f} _ - , signal = tx - , target = LedgerState UTxOState {utxosUtxo = u', utxosDeposited = d', utxosFees = f'} _ - } = - property (hasFailedScripts tx) - .||. (coinBalance u' <+> d' <+> f') - <-> (coinBalance u <+> d <+> f) - === fold (unWithdrawals (tx ^. bodyTxL . withdrawalsTxBodyL)) - --- | (Utxo + Deposits + Fees) increases by the reward delta -potsSumIncreaseByRewardsPerTx :: - forall era ledger. - ( ChainProperty era - , EraSegWits era - , TestingLedger era ledger - ) => - SourceSignalTarget (CHAIN era) -> - Property -potsSumIncreaseByRewardsPerTx SourceSignalTarget {source = chainSt, signal = block} = - counterexample "potsSumIncreaseByRewardsPerTx" $ - conjoin $ - map sumIncreaseRewards $ - sourceSignalTargets ledgerTr - where - (_, ledgerTr) = ledgerTraceFromBlock @era @ledger chainSt block - sumIncreaseRewards - SourceSignalTarget - { source = - LedgerState - UTxOState {utxosUtxo = u, utxosDeposited = d, utxosFees = f} - CertState {certDState = DState {dsUnified = umap1}} - , target = - LedgerState - UTxOState {utxosUtxo = u', utxosDeposited = d', utxosFees = f'} - CertState {certDState = DState {dsUnified = umap2}} - } = - (coinBalance u' <+> d' <+> f') - <-> (coinBalance u <+> d <+> f) - === UM.fromCompact (sumRewardsUView (UM.RewDepUView umap1)) - <-> UM.fromCompact (sumRewardsUView (UM.RewDepUView umap2)) - --- | The Rewards pot decreases by the sum of withdrawals in a transaction -potsRewardsDecreaseByWithdrawalsPerTx :: - forall era ledger. - ( ChainProperty era - , EraGen era - , TestingLedger era ledger - ) => - SourceSignalTarget (CHAIN era) -> - Property -potsRewardsDecreaseByWithdrawalsPerTx SourceSignalTarget {source = chainSt, signal = block} = - counterexample "potsRewardsDecreaseByWithdrawalsPerTx" $ - conjoin $ - map rewardsDecreaseByWithdrawals $ - sourceSignalTargets ledgerTr - where - rewardsSum = UM.fromCompact . sumRewardsUView . rewards . certDState - (_, ledgerTr) = ledgerTraceFromBlock @era @ledger chainSt block - rewardsDecreaseByWithdrawals - SourceSignalTarget - { source = LedgerState _ dpstate - , signal = tx - , target = LedgerState _ dpstate' - } = - let totalRewards = rewardsSum dpstate - totalRewards' = rewardsSum dpstate' - txWithdrawals = fold (unWithdrawals (tx ^. bodyTxL . withdrawalsTxBodyL)) - in conjoin - [ counterexample - "A transaction should not increase the Rewards pot" - (totalRewards >= totalRewards') - , counterexample - "Withdrawals should be non-negative" - (txWithdrawals >= Coin 0) - , counterexample - "Rewards should increase by withdrawals" - (hasFailedScripts tx || totalRewards <-> totalRewards' == txWithdrawals) - ] - --- | Preserve the balance in a transaction, i.e., the sum of the consumed value --- equals the sum of the created value. -preserveBalance :: - forall era ledger. - ( ChainProperty era - , EraGen era - , TestingLedger era ledger - ) => - SourceSignalTarget (CHAIN era) -> - Property -preserveBalance SourceSignalTarget {source = chainSt, signal = block} = - counterexample "preserveBalance" $ - conjoin $ - map createdIsConsumed $ - sourceSignalTargets ledgerTr - where - (tickedChainSt, ledgerTr) = ledgerTraceFromBlock @era @ledger chainSt block - pp_ = (view curPParamsEpochStateL . nesEs . chainNes) tickedChainSt - - createdIsConsumed SourceSignalTarget {source = ledgerSt, signal = tx, target = ledgerSt'} = - counterexample - "preserveBalance created /= consumed ... " - (failedScripts .||. ediffEq created consumed_) - where - failedScripts = property $ hasFailedScripts tx - LedgerState (UTxOState {utxosUtxo = u}) certState = ledgerSt - LedgerState (UTxOState {utxosUtxo = u'}) _ = ledgerSt' - txb = tx ^. bodyTxL - created = - coinBalance u' - <+> (txb ^. feeTxBodyL) - <+> certsTotalDepositsTxBody pp_ certState txb - consumed_ = - coinBalance u - <+> certsTotalRefundsTxBody pp_ certState txb - <+> fold (unWithdrawals (txb ^. withdrawalsTxBodyL)) - --- | Preserve balance restricted to TxIns and TxOuts of the Tx -preserveBalanceRestricted :: - forall era ledger. - ( ChainProperty era - , TestingLedger era ledger - , EraSegWits era - ) => - SourceSignalTarget (CHAIN era) -> - Property -preserveBalanceRestricted SourceSignalTarget {source = chainSt, signal = block} = - counterexample "preserveBalanceRestricted" $ - conjoin $ - map createdIsConsumed $ - sourceSignalTargets ledgerTr - where - (tickedChainSt, ledgerTr) = ledgerTraceFromBlock @era @ledger chainSt block - pp_ = (view curPParamsEpochStateL . nesEs . chainNes) tickedChainSt - - createdIsConsumed - SourceSignalTarget - { source = LedgerState (UTxOState {utxosUtxo = utxo}) certState - , signal = tx - } = - inps === outs - where - txb = tx ^. bodyTxL - inps = - coinBalance @era (txInsFilter utxo (txb ^. inputsTxBodyL)) - <> certsTotalRefundsTxBody pp_ certState txb - <> fold (unWithdrawals (txb ^. withdrawalsTxBodyL)) - outs = - coinBalance (txouts @era txb) - <> (txb ^. feeTxBodyL) - <> certsTotalDepositsTxBody pp_ certState txb - -preserveOutputsTx :: - forall era ledger. - ( ChainProperty era - , EraGen era - , TestingLedger era ledger - ) => - SourceSignalTarget (CHAIN era) -> - Property -preserveOutputsTx SourceSignalTarget {source = chainSt, signal = block} = - counterexample "preserveOutputsTx" $ - conjoin $ - map outputPreserved $ - sourceSignalTargets ledgerTr - where - (_, ledgerTr) = ledgerTraceFromBlock @era @ledger chainSt block - outputPreserved - SourceSignalTarget - { target = LedgerState (UTxOState {utxosUtxo = UTxO utxo}) _ - , signal = tx - } = - let UTxO outs = txouts @era (tx ^. bodyTxL) - in property $ - hasFailedScripts tx - .||. counterexample "TxOuts are not a subset of UTxO" (outs `Map.isSubmapOf` utxo) - -canRestrictUTxO :: - forall era ledger. - ( ChainProperty era - , EraSegWits era - , TestingLedger era ledger - ) => - SourceSignalTarget (CHAIN era) -> - Property -canRestrictUTxO SourceSignalTarget {source = chainSt, signal = block} = - counterexample "canRestrictUTxO" $ - conjoin $ - zipWith - outputPreserved - (sourceSignalTargets ledgerTrFull) - (sourceSignalTargets ledgerTrRestr) - where - (_, ledgerTrFull) = ledgerTraceFromBlock @era @ledger chainSt block - (UTxO irrelevantUTxO, ledgerTrRestr) = - ledgerTraceFromBlockWithRestrictedUTxO @era @ledger chainSt block - outputPreserved - SourceSignalTarget {target = LedgerState (UTxOState {utxosUtxo = UTxO uFull}) _} - SourceSignalTarget {target = LedgerState (UTxOState {utxosUtxo = UTxO uRestr}) _} = - counterexample - (unlines ["non-disjoint:", show uRestr, show irrelevantUTxO]) - (uRestr `Map.disjoint` irrelevantUTxO) - .&&. uFull - === (uRestr `Map.union` irrelevantUTxO) - -withdrawals :: - forall era. - EraGen era => - Block (BHeader (EraCrypto era)) era -> - Coin -withdrawals (UnserialisedBlock _ txseq) = - foldl' - ( \c tx -> - let wdrls = unWithdrawals $ tx ^. bodyTxL . withdrawalsTxBodyL - in if hasFailedScripts tx then c else c <> fold wdrls - ) - (Coin 0) - $ fromTxSeq @era txseq - -txFees :: - forall era ledger. - (EraGen era, TestingLedger era ledger) => - Trace ledger -> - Coin -txFees ledgerTr = - foldl' f (Coin 0) (sourceSignalTargets ledgerTr) - where - f - c - SourceSignalTarget - { source = LedgerState UTxOState {utxosUtxo = utxo} _ - , signal = tx - } = c <> feeOrCollateral tx utxo - --- | Check that deposits are always non-negative -nonNegativeDeposits :: - SourceSignalTarget (CHAIN era) -> - Property -nonNegativeDeposits SourceSignalTarget {source = chainSt} = - let es = (nesEs . chainNes) chainSt - UTxOState {utxosDeposited = d} = (lsUTxOState . esLState) es - in counterexample ("nonNegativeDeposits: " ++ show d) (d >= mempty) - --- | Checks that the fees are non-decreasing when not at an epoch boundary -feesNonDecreasing :: - SourceSignalTarget (CHAIN era) -> - Property -feesNonDecreasing SourceSignalTarget {source, target} = - counterexample ("feesNonDecreasing: " <> show (fees_ source) <> " <= " <> show (fees_ target)) $ - fees_ source <= fees_ target - where - fees_ chainSt = - let UTxOState {utxosFees = fees} = - lsUTxOState . esLState . nesEs . chainNes $ chainSt - in fees - -sameEpoch :: - forall era. - SourceSignalTarget (CHAIN era) -> - Bool -sameEpoch SourceSignalTarget {source, target} = - epoch source == epoch target - where - epoch = nesEL . chainNes diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/Chain.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/Chain.hs deleted file mode 100644 index 48cea3a64fd..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/Chain.hs +++ /dev/null @@ -1,462 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Shelley.Rules.Chain ( - CHAIN, - ChainState (..), - TestChainPredicateFailure (..), - ChainEvent (..), - PredicateFailure, - AdaPots (..), - initialShelleyState, - totalAda, - totalAdaPots, -) where - -import Cardano.Ledger.BHeaderView (BHeaderView) -import Cardano.Ledger.BaseTypes ( - BlocksMade (..), - Globals (..), - Nonce (..), - ShelleyBase, - StrictMaybe (..), - ) -import Cardano.Ledger.Binary (EncCBORGroup) -import Cardano.Ledger.Block (Block (..)) -import Cardano.Ledger.CertState (VState (..)) -import Cardano.Ledger.Chain ( - ChainPredicateFailure (..), - chainChecks, - pparamsToChainChecksPParams, - ) -import Cardano.Ledger.Coin (Coin (..)) -import qualified Cardano.Ledger.Core as Core -import Cardano.Ledger.EpochBoundary (emptySnapShots) -import Cardano.Ledger.Keys ( - GenDelegPair (..), - GenDelegs (..), - KeyHash, - KeyRole (..), - coerceKeyRole, - ) -import Cardano.Ledger.PoolDistr (PoolDistr (..)) -import Cardano.Ledger.Shelley (ShelleyEra) -import Cardano.Ledger.Shelley.AdaPots ( - AdaPots (..), - totalAdaES, - totalAdaPotsES, - ) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState ( - AccountState (..), - CertState (..), - DState (..), - EpochState (..), - LedgerState (..), - NewEpochState (..), - PState (..), - StashedAVVMAddresses, - curPParamsEpochStateL, - dsGenDelegs, - nesEpochStateL, - prevPParamsEpochStateL, - smartUTxOState, - updateNES, - ) -import Cardano.Ledger.Shelley.Rules ( - BbodyEnv (..), - ShelleyBBODY, - ShelleyBbodyPredFailure, - ShelleyBbodyState (..), - ShelleyTICK, - ShelleyTickEvent, - ShelleyTickPredFailure, - ) -import Cardano.Ledger.Slot (EpochNo) -import qualified Cardano.Ledger.UMap as UM -import Cardano.Ledger.UTxO (UTxO (..)) -import Cardano.Protocol.TPraos.BHeader ( - BHeader, - HashHeader, - LastAppliedBlock (..), - bhHash, - bhbody, - bheaderBlockNo, - bheaderSlotNo, - lastAppliedHash, - makeHeaderView, - prevHashToNonce, - ) -import Cardano.Protocol.TPraos.Rules.Prtcl ( - PRTCL, - PrtclEnv (..), - PrtclState (..), - PrtlSeqFailure, - prtlSeqChecks, - ) -import Cardano.Protocol.TPraos.Rules.Tickn -import Cardano.Slotting.Slot (SlotNo, WithOrigin (..)) -import Control.DeepSeq (NFData) -import Control.Monad.Trans.Reader (asks) -import Control.State.Transition ( - Embed (..), - STS (..), - TRC (..), - TransitionRule, - failBecause, - judgmentContext, - liftSTS, - trans, - ) -import Data.Default.Class (Default, def) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Void (Void) -import Data.Word (Word64) -import GHC.Generics (Generic) -import Lens.Micro ((&), (.~), (^.)) -import NoThunks.Class (NoThunks (..)) -import Test.Cardano.Ledger.Shelley.TreeDiff () -import Test.Cardano.Ledger.TreeDiff (ToExpr (toExpr), defaultExprViaShow) - -type instance EraRule "TICKN" (ShelleyEra c) = TICKN - -data CHAIN era - -data ChainState era = ChainState - { chainNes :: NewEpochState era - , chainOCertIssue :: Map.Map (KeyHash 'BlockIssuer (EraCrypto era)) Word64 - , chainEpochNonce :: Nonce - , chainEvolvingNonce :: Nonce - , chainCandidateNonce :: Nonce - , chainPrevEpochNonce :: Nonce - , chainLastAppliedBlock :: WithOrigin (LastAppliedBlock (EraCrypto era)) - } - deriving (Generic) - -deriving stock instance Show (NewEpochState era) => Show (ChainState era) - -deriving stock instance Eq (NewEpochState era) => Eq (ChainState era) - -instance NFData (NewEpochState era) => NFData (ChainState era) - -data TestChainPredicateFailure era - = RealChainPredicateFailure !ChainPredicateFailure - | BbodyFailure !(PredicateFailure (EraRule "BBODY" era)) -- Subtransition Failures - | TickFailure !(PredicateFailure (EraRule "TICK" era)) -- Subtransition Failures - | TicknFailure !(PredicateFailure (EraRule "TICKN" era)) -- Subtransition Failures - | PrtclFailure !(PredicateFailure (PRTCL (EraCrypto era))) -- Subtransition Failures - | PrtclSeqFailure !(PrtlSeqFailure (EraCrypto era)) -- Subtransition Failures - deriving (Generic) - -data ChainEvent era - = BbodyEvent !(Event (EraRule "BBODY" era)) - | TickEvent !(Event (EraRule "TICK" era)) - | TicknEvent !(Event (EraRule "TICKN" era)) - | PrtclEvent !(Event (PRTCL (EraCrypto era))) - -deriving stock instance - ( Era era - , Show (PredicateFailure (EraRule "BBODY" era)) - , Show (PredicateFailure (EraRule "TICK" era)) - , Show (PredicateFailure (EraRule "TICKN" era)) - ) => - Show (TestChainPredicateFailure era) - -deriving stock instance - ( Era era - , Eq (PredicateFailure (EraRule "BBODY" era)) - , Eq (PredicateFailure (EraRule "TICK" era)) - , Eq (PredicateFailure (EraRule "TICKN" era)) - ) => - Eq (TestChainPredicateFailure era) - -instance - ( Era era - , NoThunks (PredicateFailure (EraRule "BBODY" era)) - , NoThunks (PredicateFailure (EraRule "TICK" era)) - , NoThunks (PredicateFailure (EraRule "TICKN" era)) - ) => - NoThunks (TestChainPredicateFailure era) - --- | Creates a valid initial chain state -initialShelleyState :: - forall era. - ( EraTxOut era - , EraGov era - , Default (StashedAVVMAddresses era) - ) => - WithOrigin (LastAppliedBlock (EraCrypto era)) -> - EpochNo -> - UTxO era -> - Coin -> - Map (KeyHash 'Genesis (EraCrypto era)) (GenDelegPair (EraCrypto era)) -> - PParams era -> - Nonce -> - ChainState era -initialShelleyState lab e utxo reserves genDelegs pp initNonce = - ChainState - ( NewEpochState - e - (BlocksMade Map.empty) - (BlocksMade Map.empty) - ( EpochState - (AccountState (Coin 0) reserves) - ( LedgerState - ( smartUTxOState - pp - utxo - (Coin 0) - (Coin 0) - emptyGovState - mempty - ) - (CertState def def dState) - ) - emptySnapShots - def - & curPParamsEpochStateL .~ pp - & prevPParamsEpochStateL .~ pp - ) - SNothing - (PoolDistr Map.empty) - def - ) - cs - initNonce - initNonce - initNonce - NeutralNonce - lab - where - cs = - Map.fromList - ( fmap - (\(GenDelegPair hk _) -> (coerceKeyRole hk, 0)) - (Map.elems genDelegs) - ) - - dState :: DState era - dState = - DState - { dsUnified = UM.empty - , dsFutureGenDelegs = Map.empty - , dsGenDelegs = GenDelegs genDelegs - , dsIRewards = def - } - -instance - ( EraGov era - , Embed (EraRule "BBODY" era) (CHAIN era) - , Environment (EraRule "BBODY" era) ~ BbodyEnv era - , State (EraRule "BBODY" era) ~ ShelleyBbodyState era - , Signal (EraRule "BBODY" era) ~ Block (BHeaderView (EraCrypto era)) era - , Embed (EraRule "TICKN" era) (CHAIN era) - , Environment (EraRule "TICKN" era) ~ TicknEnv - , State (EraRule "TICKN" era) ~ TicknState - , Signal (EraRule "TICKN" era) ~ Bool - , Embed (EraRule "TICK" era) (CHAIN era) - , Environment (EraRule "TICK" era) ~ () - , State (EraRule "TICK" era) ~ NewEpochState era - , Signal (EraRule "TICK" era) ~ SlotNo - , Embed (PRTCL (EraCrypto era)) (CHAIN era) - , EncCBORGroup (TxSeq era) - , ProtVerAtMost era 6 - , State (Core.EraRule "LEDGERS" era) ~ LedgerState era - ) => - STS (CHAIN era) - where - type - State (CHAIN era) = - ChainState era - - type - Signal (CHAIN era) = - Block (BHeader (EraCrypto era)) era - - type Environment (CHAIN era) = () - type BaseM (CHAIN era) = ShelleyBase - - type PredicateFailure (CHAIN era) = TestChainPredicateFailure era - type Event (CHAIN era) = ChainEvent era - - initialRules = [] - transitionRules = [chainTransition] - -chainTransition :: - forall era. - ( STS (CHAIN era) - , Embed (EraRule "BBODY" era) (CHAIN era) - , Environment (EraRule "BBODY" era) ~ BbodyEnv era - , State (EraRule "BBODY" era) ~ ShelleyBbodyState era - , Signal (EraRule "BBODY" era) ~ Block (BHeaderView (EraCrypto era)) era - , Embed (EraRule "TICKN" era) (CHAIN era) - , Environment (EraRule "TICKN" era) ~ TicknEnv - , State (EraRule "TICKN" era) ~ TicknState - , Signal (EraRule "TICKN" era) ~ Bool - , Embed (EraRule "TICK" era) (CHAIN era) - , Environment (EraRule "TICK" era) ~ () - , State (EraRule "TICK" era) ~ NewEpochState era - , Signal (EraRule "TICK" era) ~ SlotNo - , Embed (PRTCL (EraCrypto era)) (CHAIN era) - , EncCBORGroup (TxSeq era) - , ProtVerAtMost era 6 - , State (Core.EraRule "LEDGERS" era) ~ LedgerState era - , EraGov era - ) => - TransitionRule (CHAIN era) -chainTransition = - judgmentContext - >>= \( TRC - ( _ - , ChainState - nes - cs - eta0 - etaV - etaC - etaH - lab - , Block bh txs - ) - ) -> do - case prtlSeqChecks lab bh of - Right () -> pure () - Left e -> failBecause $ PrtclSeqFailure e - - let pp = nes ^. nesEpochStateL . curPParamsEpochStateL - chainChecksData = pparamsToChainChecksPParams pp - bhView = makeHeaderView bh - - maxpv <- liftSTS $ asks maxMajorPV - case chainChecks maxpv chainChecksData bhView of - Right () -> pure () - Left e -> failBecause (RealChainPredicateFailure e) - - let s = bheaderSlotNo $ bhbody bh - - nes' <- trans @(EraRule "TICK" era) $ TRC ((), nes, s) - - let NewEpochState e1 _ _ _ _ _ _ = nes - NewEpochState e2 _ bcur es _ _pd _ = nes' - let EpochState account ls _ _ = es - pp' = es ^. curPParamsEpochStateL - let LedgerState _ (CertState VState {} PState {} DState {dsGenDelegs = genDelegs}) = ls - let ph = lastAppliedHash lab - etaPH = prevHashToNonce ph - - TicknState eta0' etaH' <- - trans @(EraRule "TICKN" era) $ - TRC - ( TicknEnv (pp' ^. ppExtraEntropyL) etaC etaPH - , TicknState eta0 etaH - , e1 /= e2 - ) - - PrtclState cs' etaV' etaC' <- - trans @(PRTCL (EraCrypto era)) $ - TRC - ( PrtclEnv (pp' ^. ppDL) _pd genDelegs eta0' - , PrtclState cs etaV etaC - , bh - ) - - let thouShaltNot = error "A block with a header view should never be hashed" - BbodyState ls' bcur' <- - trans @(EraRule "BBODY" era) $ - TRC (BbodyEnv pp' account, BbodyState ls bcur, Block' bhView txs thouShaltNot) - - let nes'' = updateNES nes' bcur' ls' - bhb = bhbody bh - lab' = - At $ - LastAppliedBlock - (bheaderBlockNo bhb) - (bheaderSlotNo bhb) - (bhHash bh) - - pure $ ChainState nes'' cs' eta0' etaV' etaC' etaH' lab' - -instance - ( Era era - , Era era - , STS (ShelleyBBODY era) - , PredicateFailure (EraRule "BBODY" era) ~ ShelleyBbodyPredFailure era - , Event (EraRule "BBODY" era) ~ Event (ShelleyBBODY era) - ) => - Embed (ShelleyBBODY era) (CHAIN era) - where - wrapFailed = BbodyFailure - wrapEvent = BbodyEvent - -instance - ( Era era - , Era era - , PredicateFailure (EraRule "TICKN" era) ~ TicknPredicateFailure - , Event (EraRule "TICKN" era) ~ Void - ) => - Embed TICKN (CHAIN era) - where - wrapFailed = TicknFailure - wrapEvent = TicknEvent - -instance - ( Era era - , Era era - , STS (ShelleyTICK era) - , PredicateFailure (EraRule "TICK" era) ~ ShelleyTickPredFailure era - , Event (EraRule "TICK" era) ~ ShelleyTickEvent era - ) => - Embed (ShelleyTICK era) (CHAIN era) - where - wrapFailed = TickFailure - wrapEvent = TickEvent - -instance - ( Era era - , c ~ EraCrypto era - , Era era - , STS (PRTCL c) - ) => - Embed (PRTCL c) (CHAIN era) - where - wrapFailed = PrtclFailure - wrapEvent = PrtclEvent - --- | Calculate the total ada pots in the chain state -totalAdaPots :: - ( EraTxOut era - , EraGov era - ) => - ChainState era -> - AdaPots -totalAdaPots = totalAdaPotsES . nesEs . chainNes - --- | Calculate the total ada in the chain state -totalAda :: (EraTxOut era, EraGov era) => ChainState era -> Coin -totalAda = totalAdaES . nesEs . chainNes - -instance - ( ToExpr (PParams era) - , ToExpr (TxOut era) - , ToExpr (StashedAVVMAddresses era) - , ToExpr (GovState era) - ) => - ToExpr (ChainState era) - -instance ToExpr (HashHeader c) where - toExpr = defaultExprViaShow - -instance ToExpr (LastAppliedBlock c) diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/ClassifyTraces.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/ClassifyTraces.hs deleted file mode 100644 index 4fd7eb30847..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/ClassifyTraces.hs +++ /dev/null @@ -1,433 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeOperators #-} - -module Test.Cardano.Ledger.Shelley.Rules.ClassifyTraces ( - onlyValidLedgerSignalsAreGenerated, - onlyValidChainSignalsAreGenerated, - relevantCasesAreCovered, - propAbstractSizeBoundsBytes, - propAbstractSizeNotTooBig, -) -where - -import Cardano.Ledger.BaseTypes (Globals, StrictMaybe (..), epochInfoPure) -import Cardano.Ledger.Binary.Plain as Plain (serialize') -import Cardano.Ledger.Block (Block (..), bheader) -import Cardano.Ledger.Shelley.API ( - Addr (..), - Credential (..), - ShelleyLEDGER, - ) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState (LedgerState) -import Cardano.Ledger.Shelley.PParams ( - Update (..), - pattern ProposedPPUpdates, - pattern Update, - ) -import Cardano.Ledger.Shelley.TxCert ( - isDelegation, - isGenesisDelegation, - isRegPool, - isReservesMIRCert, - isRetirePool, - isTreasuryMIRCert, - ) -import Cardano.Ledger.Slot (SlotNo (..), epochInfoSize) -import Cardano.Protocol.TPraos.BHeader ( - BHeader, - bhbody, - bheaderSlotNo, - ) -import Cardano.Slotting.Slot (EpochSize (..)) -import Control.State.Transition (STS (State)) -import Control.State.Transition.Extended (Environment, Signal) -import qualified Data.ByteString as BS -import Data.Foldable (foldMap', toList) -import qualified Data.Map.Strict as Map -import Data.Proxy -import Data.Semigroup (Sum (..)) -import Data.Sequence.Strict (StrictSeq) -import Lens.Micro -import Lens.Micro.Extras (view) -import Test.Cardano.Ledger.Shelley.Constants (defaultConstants) -import Test.Cardano.Ledger.Shelley.Generator.Core (GenEnv) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (EraGen) -import Test.Cardano.Ledger.Shelley.Generator.Presets (genEnv) -import Test.Cardano.Ledger.Shelley.Generator.ShelleyEraGen () -import Test.Cardano.Ledger.Shelley.Generator.Trace.Chain (mkGenesisChainState) -import Test.Cardano.Ledger.Shelley.Generator.Trace.Ledger (mkGenesisLedgerState) -import Test.Cardano.Ledger.Shelley.Rules.Chain (CHAIN) -import Test.Cardano.Ledger.Shelley.Utils -import Test.Control.State.Transition.Trace ( - Trace, - TraceOrder (OldestFirst), - traceSignals, - ) -import Test.Control.State.Transition.Trace.Generator.QuickCheck ( - forAllTraceFromInitState, - onlyValidSignalsAreGeneratedFromInitState, - traceFromInitState, - ) -import qualified Test.Control.State.Transition.Trace.Generator.QuickCheck as QC -import Test.QuickCheck ( - Property, - checkCoverage, - conjoin, - cover, - forAllBlind, - property, - withMaxSuccess, - ) -import Test.Tasty (TestTree) -import qualified Test.Tasty.QuickCheck as TQC - --- ================================================================= - -relevantCasesAreCovered :: - forall era. - ( EraGen era - , ChainProperty era - , QC.HasTrace (CHAIN era) (GenEnv era) - ) => - Int -> - TestTree -relevantCasesAreCovered n = - TQC.testProperty - "Chain and Ledger traces cover the relevant cases" - (TQC.withMaxSuccess n prop) - where - prop = do - let tl = 100 - checkCoverage $ - forAllBlind - (traceFromInitState @(CHAIN era) testGlobals tl (genEnv p defaultConstants) genesisChainSt) - relevantCasesAreCoveredForTrace - p :: Proxy era - p = Proxy - genesisChainSt = Just $ mkGenesisChainState (genEnv p defaultConstants) - -relevantCasesAreCoveredForTrace :: - forall era. - ( ChainProperty era - , EraSegWits era - , ShelleyEraTxBody era - ) => - Trace (CHAIN era) -> - Property -relevantCasesAreCoveredForTrace tr = do - let blockTxs :: Block (BHeader (EraCrypto era)) era -> [Tx era] - blockTxs (UnserialisedBlock _ txSeq) = toList (fromTxSeq @era txSeq) - bs = traceSignals OldestFirst tr - txs = concat (blockTxs <$> bs) - certsByTx_ = certsByTx @era txs - certs_ = concat certsByTx_ - - classifications = - [ - ( "there is at least 1 certificate for every 2 transactions" - , length txs < 2 * length certs_ - , 60 - ) - , - ( "there is at least 1 RegKey certificate for every 10 transactions" - , length txs < 10 * length (filter isRegStakeTxCert certs_) - , 60 - ) - , - ( "there is at least 1 DeRegKey certificate for every 20 transactions" - , length txs < 20 * length (filter isUnRegStakeTxCert certs_) - , 60 - ) - , - ( "there is at least 1 Delegation certificate for every 10 transactions" - , length txs < 10 * length (filter isDelegation certs_) - , 60 - ) - , - ( "there is at least 1 Genesis Delegation certificate for every 20 transactions" - , length txs < 20 * length (filter isGenesisDelegation certs_) - , 60 - ) - , - ( "there is at least 1 RetirePool certificate for every 10 transactions" - , length txs < 10 * length (filter isRetirePool certs_) - , 60 - ) - , - ( "there is at least 1 MIR certificate (spending Reserves) for every 60 transactions" - , length txs < 60 * length (filter isReservesMIRCert certs_) - , 40 - ) - , - ( "there is at least 1 MIR certificate (spending Treasury) for every 60 transactions" - , length txs < 60 * length (filter isTreasuryMIRCert certs_) - , 40 - ) - , - ( "there is at least 1 RegPool certificate for every 10 transactions" - , length txs < 10 * length (filter isRegPool certs_) - , 60 - ) - , - ( "at least 10% of transactions have script TxOuts" - , 0.1 < txScriptOutputsRatio (view outputsTxBodyL . view bodyTxL <$> txs) - , 20 - ) - , - ( "at least 10% of `ShelleyTxCertDeleg` certificates have script credentials" - , 0.1 < scriptCredentialCertsRatio certs_ - , 60 - ) - , - ( "at least 1 in 10 transactions have a reward withdrawal" - , length txs < 10 * length (filter (hasWithdrawal @era) txs) - , 60 - ) - , - ( "at least 1 in 20 transactions have non-trivial protocol param updates" - , length txs < 20 * length (filter (hasPParamUpdate @era) txs) - , 60 - ) - , - ( "at least 1 in 20 transactions have metadata" - , length txs < 20 * length (filter (hasMetadata @era) txs) - , 60 - ) - , - ( "at least 5 epochs in a trace, 20% of the time" - , 5 <= epochsInTrace bs - , 20 - ) - ] - - conjoin $ cover_ <$> classifications - where - cover_ (label, predicate, coveragePc) = - cover coveragePc predicate label (property ()) - --- | Ratio of certificates with script credentials to the number of certificates --- that could have script credentials. -scriptCredentialCertsRatio :: ShelleyEraTxCert c => [TxCert c] -> Double -scriptCredentialCertsRatio certs = - ratioInt haveScriptCerts couldhaveScriptCerts - where - haveScriptCerts = - length $ - filter - ( \case - RegTxCert (ScriptHashObj _) -> True - UnRegTxCert (ScriptHashObj _) -> True - DelegStakeTxCert (ScriptHashObj _) _ -> True - _ -> False - ) - certs - couldhaveScriptCerts = - length $ - filter - ( \case - RegTxCert _ -> True - UnRegTxCert _ -> True - DelegStakeTxCert _ _ -> True - _ -> False - ) - certs - --- | Extract the certificates from the transactions -certsByTx :: - ( ShelleyEraTxBody era - , EraTx era - ) => - [Tx era] -> - [[TxCert era]] -certsByTx txs = toList . view certsTxBodyL . view bodyTxL <$> txs - -ratioInt :: Int -> Int -> Double -ratioInt x y = - fromIntegral x / fromIntegral y - --- | Transaction has script locked TxOuts -txScriptOutputsRatio :: - forall era. - EraTxOut era => - [StrictSeq (TxOut era)] -> - Double -txScriptOutputsRatio txoutsList = - ratioInt - (sum (map countScriptOuts txoutsList)) - (sum (map length txoutsList)) - where - countScriptOuts :: StrictSeq (TxOut era) -> Int - countScriptOuts txouts = - getSum $ - foldMap' - ( \out -> case out ^. addrTxOutL of - Addr _ (ScriptHashObj _) _ -> Sum 1 - _ -> Sum 0 - ) - txouts - -hasWithdrawal :: (ShelleyEraTxBody era, EraTx era) => Tx era -> Bool -hasWithdrawal tx = not . null $ unWithdrawals (tx ^. bodyTxL . withdrawalsTxBodyL) - -hasPParamUpdate :: (ShelleyEraTxBody era, EraTx era) => Tx era -> Bool -hasPParamUpdate tx = ppUpdates (tx ^. bodyTxL . updateTxBodyL) - where - ppUpdates SNothing = False - ppUpdates (SJust (Update (ProposedPPUpdates ppUpd) _)) = Map.size ppUpd > 0 - -hasMetadata :: EraTx era => Tx era -> Bool -hasMetadata tx = f (tx ^. bodyTxL . auxDataHashTxBodyL) - where - f SNothing = False - f (SJust _) = True - -onlyValidLedgerSignalsAreGenerated :: - forall era ledger. - ( EraGen era - , QC.HasTrace ledger (GenEnv era) - , QC.BaseEnv ledger ~ Globals - , State ledger ~ LedgerState era - , Show (Environment ledger) - , Show (Signal ledger) - , EraGov era - ) => - TestTree -onlyValidLedgerSignalsAreGenerated = - TQC.testProperty "Only valid Ledger STS signals are generated" prop - where - prop = - withMaxSuccess 200 $ - onlyValidSignalsAreGeneratedFromInitState - @ledger - testGlobals - 100 - ge - genesisLedgerSt - p :: Proxy era - p = Proxy - ge = genEnv p defaultConstants - genesisLedgerSt = Just $ mkGenesisLedgerState ge - --- | Check that the abstract transaction size function --- actually bounds the number of bytes in the serialized transaction. -propAbstractSizeBoundsBytes :: - forall era. - ( EraGen era - , QC.HasTrace (ShelleyLEDGER era) (GenEnv era) - , EraGov era - ) => - Property -propAbstractSizeBoundsBytes = property $ do - let tl = 100 - numBytes = toInteger . BS.length . Plain.serialize' - forAllTraceFromInitState @(ShelleyLEDGER era) - testGlobals - tl - (genEnv p defaultConstants) - genesisLedgerSt - $ \tr -> do - let txs :: [Tx era] - txs = traceSignals OldestFirst tr - all (\tx -> txSizeBound tx >= numBytes tx) txs - where - p :: Proxy era - p = Proxy - genesisLedgerSt = Just $ mkGenesisLedgerState (genEnv p defaultConstants) - --- | Check that the abstract transaction size function --- is not off by an acceptable order of magnitude. -propAbstractSizeNotTooBig :: - forall era. - ( EraGen era - , QC.HasTrace (ShelleyLEDGER era) (GenEnv era) - , EraGov era - ) => - Property -propAbstractSizeNotTooBig = property $ do - let tl = 100 - -- The below acceptable order of magnitude may not actually be large enough. - -- For small transactions, estimating the size of an encoded uint as 5 - -- may mean that our size is more like five times too big. - -- It will be interesting to see the test fail with - -- an acceptableMagnitude of three, though. - acceptableMagnitude = (3 :: Integer) - numBytes = toInteger . BS.length . Plain.serialize' - notTooBig tx = txSizeBound tx <= acceptableMagnitude * numBytes tx - forAllTraceFromInitState @(ShelleyLEDGER era) - testGlobals - tl - (genEnv p defaultConstants) - genesisLedgerSt - $ \tr -> do - let txs :: [Tx era] - txs = traceSignals OldestFirst tr - all notTooBig txs - where - p :: Proxy era - p = Proxy - genesisLedgerSt = Just $ mkGenesisLedgerState (genEnv p defaultConstants) - -onlyValidChainSignalsAreGenerated :: - forall era. - ( EraGen era - , QC.HasTrace (CHAIN era) (GenEnv era) - , EraGov era - ) => - TestTree -onlyValidChainSignalsAreGenerated = - TQC.testProperty "Only valid CHAIN STS signals are generated" prop - where - prop = - withMaxSuccess 100 $ - onlyValidSignalsAreGeneratedFromInitState @(CHAIN era) - testGlobals - 100 - (genEnv p defaultConstants) - genesisChainSt - p :: Proxy era - p = Proxy - genesisChainSt = Just (mkGenesisChainState (genEnv p defaultConstants)) - --- | Counts the epochs spanned by this trace -epochsInTrace :: forall era. Era era => [Block (BHeader (EraCrypto era)) era] -> Int -epochsInTrace [] = 0 -epochsInTrace bs = - fromIntegral $ toEpoch - fromEpoch + 1 - where - fromEpoch = atEpoch . blockSlot $ head bs - toEpoch = atEpoch . blockSlot $ last bs - EpochSize slotsPerEpoch = runShelleyBase $ (epochInfoSize . epochInfoPure) testGlobals undefined - blockSlot = bheaderSlotNo . bhbody . bheader - atEpoch (SlotNo s) = s `div` slotsPerEpoch - --- | Convenience Function to bound the txsize function. --- | It can be helpful for coin selection. -txSizeBound :: - forall era. - EraTx era => - Tx era -> - Integer -txSizeBound tx = numInputs * inputSize + numOutputs * outputSize + rest - where - uint = 5 - smallArray = 1 - hashLen = 32 - hashObj = 2 + hashLen - addrHashLen = 28 - addrHeader = 1 - address = 2 + addrHeader + 2 * addrHashLen - txBody = tx ^. bodyTxL - numInputs = toInteger . length $ txBody ^. inputsTxBodyL - inputSize = smallArray + uint + hashObj - numOutputs = toInteger . length $ txBody ^. outputsTxBodyL - outputSize = smallArray + uint + address - rest = tx ^. sizeTxF diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/CollisionFreeness.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/CollisionFreeness.hs deleted file mode 100644 index 42144f10600..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/CollisionFreeness.hs +++ /dev/null @@ -1,200 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Test.Cardano.Ledger.Shelley.Rules.CollisionFreeness ( - tests, -) where - -import Cardano.Ledger.Block (bbody) -import Cardano.Ledger.Core -import Cardano.Ledger.Keys (KeyHash, KeyRole (Witness), witVKeyHash) -import Cardano.Ledger.Shelley.LedgerState ( - LedgerState (..), - UTxOState (..), - ) -import Cardano.Ledger.TxIn (TxIn (..)) -import Cardano.Ledger.UTxO (UTxO (..), txins, txouts) -import Control.SetAlgebra (eval, (∩)) -import Data.Foldable (toList) -import qualified Data.Map.Strict as Map -import Data.Proxy -import Data.Set (Set) -import qualified Data.Set as Set -import Lens.Micro hiding (ix) -import Test.Cardano.Ledger.Shelley.Constants (defaultConstants) -import Test.Cardano.Ledger.Shelley.Generator.Core (GenEnv) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (EraGen (..)) -import Test.Cardano.Ledger.Shelley.Generator.ScriptClass (scriptKeyCombinations) -import Test.Cardano.Ledger.Shelley.Generator.ShelleyEraGen () -import Test.Cardano.Ledger.Shelley.Rules.Chain (CHAIN) -import Test.Cardano.Ledger.Shelley.Rules.TestChain ( - TestingLedger, - forAllChainTrace, - ledgerTraceFromBlock, - traceLen, - ) -import Test.Cardano.Ledger.Shelley.Utils ( - ChainProperty, - ) -import Test.Control.State.Transition.Trace ( - SourceSignalTarget (..), - sourceSignalTargets, - ) -import qualified Test.Control.State.Transition.Trace.Generator.QuickCheck as QC -import Test.QuickCheck ( - Property, - Testable (..), - conjoin, - counterexample, - (===), - ) -import Test.Tasty (TestTree) -import Test.Tasty.QuickCheck (testProperty) - --- | Tx inputs are eliminated, outputs added to utxo and TxIds are unique -tests :: - forall era ledger. - ( EraGen era - , ChainProperty era - , TestingLedger era ledger - , QC.HasTrace (CHAIN era) (GenEnv era) - ) => - TestTree -tests = - testProperty "inputs are eliminated, outputs added to utxo and TxIds are unique" $ - forAllChainTrace @era traceLen defaultConstants $ \tr -> do - let ssts = sourceSignalTargets tr - conjoin . concat $ - [ -- collision freeness - map (eliminateTxInputs @era @ledger) ssts - , map (newEntriesAndUniqueTxIns @era @ledger) ssts - , -- no double spend - map noDoubleSpend ssts - , -- tx signatures - map (requiredMSigSignaturesSubset @era @ledger) ssts - ] - --- | Check that consumed inputs are eliminated from the resulting UTxO -eliminateTxInputs :: - forall era ledger. - ( ChainProperty era - , EraGen era - , TestingLedger era ledger - ) => - SourceSignalTarget (CHAIN era) -> - Property -eliminateTxInputs SourceSignalTarget {source = chainSt, signal = block} = - counterexample "eliminateTxInputs" $ - conjoin $ - map inputsEliminated $ - sourceSignalTargets ledgerTr - where - (_, ledgerTr) = ledgerTraceFromBlock @era @ledger chainSt block - inputsEliminated - SourceSignalTarget - { target = LedgerState (UTxOState {utxosUtxo = (UTxO u')}) _ - , signal = tx - } = - property $ - hasFailedScripts tx - || Set.null (eval (txins @era (tx ^. bodyTxL) ∩ Map.keysSet u')) - --- | Collision-Freeness of new TxIds - checks that all new outputs of a Tx are --- included in the new UTxO and that all TxIds are new. -newEntriesAndUniqueTxIns :: - forall era ledger. - ( ChainProperty era - , EraGen era - , TestingLedger era ledger - ) => - SourceSignalTarget (CHAIN era) -> - Property -newEntriesAndUniqueTxIns SourceSignalTarget {source = chainSt, signal = block} = - counterexample "newEntriesAndUniqueTxIns" $ - conjoin $ - map newEntryPresent $ - sourceSignalTargets ledgerTr - where - (_, ledgerTr) = ledgerTraceFromBlock @era @ledger chainSt block - newEntryPresent - SourceSignalTarget - { source = LedgerState (UTxOState {utxosUtxo = UTxO u}) _ - , signal = tx - , target = LedgerState (UTxOState {utxosUtxo = UTxO u'}) _ - } = - let UTxO outs = txouts @era (tx ^. bodyTxL) - outIds = Set.map (\(TxIn _id _) -> _id) (Map.keysSet outs) - oldIds = Set.map (\(TxIn _id _) -> _id) (Map.keysSet u) - in property $ - hasFailedScripts tx - || ((outIds `Set.disjoint` oldIds) && (outs `Map.isSubmapOf` u')) - --- | Check for required signatures in case of Multi-Sig. There has to be one set --- of possible signatures for a multi-sig script which is a sub-set of the --- signatures of the tansaction. -requiredMSigSignaturesSubset :: - forall era ledger. - ( ChainProperty era - , EraGen era - , TestingLedger era ledger - ) => - SourceSignalTarget (CHAIN era) -> - Property -requiredMSigSignaturesSubset SourceSignalTarget {source = chainSt, signal = block} = - counterexample "requiredMSigSignaturesSubset" $ - conjoin $ - map signaturesSubset $ - sourceSignalTargets ledgerTr - where - (_, ledgerTr) = ledgerTraceFromBlock @era @ledger chainSt block - signaturesSubset :: SourceSignalTarget ledger -> Property - signaturesSubset SourceSignalTarget {signal = tx} = - let khs = keyHashSet tx - in property $ - all (existsReqKeyComb khs) (tx ^. witsTxL . scriptTxWitsL) - - existsReqKeyComb keyHashes msig = - any (\kl -> Set.fromList kl `Set.isSubsetOf` keyHashes) (scriptKeyCombinations (Proxy @era) msig) - keyHashSet :: Tx era -> Set (KeyHash 'Witness (EraCrypto era)) - keyHashSet tx_ = - Set.map witVKeyHash (tx_ ^. witsTxL . addrTxWitsL) - ---- | Check for absence of double spend in a block -noDoubleSpend :: - forall era. - (ChainProperty era, EraGen era) => - SourceSignalTarget (CHAIN era) -> - Property -noDoubleSpend SourceSignalTarget {signal} = - counterexample "noDoubleSpend" $ - [] === getDoubleInputs txs - where - txs = toList $ (fromTxSeq @era . bbody) signal - - getDoubleInputs :: [Tx era] -> [(Tx era, [Tx era])] - getDoubleInputs [] = [] - getDoubleInputs (t : ts) = lookForDoubleSpends t ts ++ getDoubleInputs ts - lookForDoubleSpends :: Tx era -> [Tx era] -> [(Tx era, [Tx era])] - lookForDoubleSpends _ [] = [] - lookForDoubleSpends tx_j ts = - [(tx_j, doubles) | not (null doubles)] - where - doubles = - if hasFailedScripts tx_j - then [] - else - filter - ( \tx_i -> - not - ( hasFailedScripts tx_i - || Set.disjoint inps_j (tx_i ^. bodyTxL . inputsTxBodyL) - ) - ) - ts - inps_j = tx_j ^. bodyTxL . inputsTxBodyL diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/Deleg.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/Deleg.hs deleted file mode 100644 index cbcbcb57654..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/Deleg.hs +++ /dev/null @@ -1,218 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeSynonymInstances #-} - -module Test.Cardano.Ledger.Shelley.Rules.Deleg ( - tests, -) -where - -import Cardano.Ledger.Coin -import Cardano.Ledger.Shelley.API (ShelleyDELEG) -import Cardano.Ledger.Shelley.Core -import qualified Cardano.Ledger.Shelley.HardForks as HardForks (allowMIRTransfer) -import Cardano.Ledger.Shelley.LedgerState ( - DState (..), - InstantaneousRewards (..), - delegations, - rewards, - ) -import Cardano.Ledger.Shelley.Rules (DelegEnv (..)) -import qualified Cardano.Ledger.UMap as UM -import Control.SetAlgebra (eval, rng, (∈)) -import Data.Foldable (fold) -import Data.List (foldl') -import qualified Data.Map.Strict as Map -import qualified Data.Set as Set -import Lens.Micro.Extras (view) -import Test.Cardano.Ledger.Shelley.Constants (defaultConstants) -import Test.Cardano.Ledger.Shelley.Generator.Core (GenEnv) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (EraGen (..)) -import Test.Cardano.Ledger.Shelley.Generator.ShelleyEraGen () -import Test.Cardano.Ledger.Shelley.Rules.Chain (CHAIN) -import Test.Cardano.Ledger.Shelley.Rules.TestChain ( - delegTraceFromBlock, - forAllChainTrace, - traceLen, - ) -import Test.Cardano.Ledger.Shelley.Utils ( - ChainProperty, - ) -import Test.Control.State.Transition.Trace ( - SourceSignalTarget (..), - sourceSignalTargets, - ) -import qualified Test.Control.State.Transition.Trace.Generator.QuickCheck as QC -import Test.QuickCheck ( - Property, - Testable (..), - conjoin, - counterexample, - ) -import Test.Tasty (TestTree) -import Test.Tasty.QuickCheck (testProperty) - --- | Various properties of the POOL STS Rule, tested on longer traces --- (double the default length) -tests :: - forall era. - ( EraGen era - , QC.HasTrace (CHAIN era) (GenEnv era) - , ChainProperty era - ) => - TestTree -tests = - testProperty "properties of the DELEG STS" $ - forAllChainTrace @era traceLen defaultConstants $ \tr -> do - conjoin $ - map chainProp (sourceSignalTargets tr) - where - delegProp :: DelegEnv era -> SourceSignalTarget (ShelleyDELEG era) -> Property - delegProp denv delegSst = - conjoin - [ keyRegistration delegSst - , keyDeRegistration delegSst - , keyDelegation delegSst - , rewardsSumInvariant delegSst - , checkInstantaneousRewards denv delegSst - ] - chainProp :: SourceSignalTarget (CHAIN era) -> Property - chainProp (SourceSignalTarget {source = chainSt, signal = block}) = - let delegInfo = delegTraceFromBlock chainSt block - delegEnv = fst delegInfo - delegTr = snd delegInfo - delegSsts = sourceSignalTargets delegTr - in conjoin (map (delegProp delegEnv) delegSsts) - --- | Check stake key registration -keyRegistration :: ShelleyEraTxCert era => SourceSignalTarget (ShelleyDELEG era) -> Property -keyRegistration - SourceSignalTarget - { signal = RegTxCert hk - , target = targetSt - } = - conjoin - [ counterexample - "a newly registered key should have a reward account" - (UM.member hk (rewards targetSt)) - , counterexample - "a newly registered key should have a reward account with 0 balance" - ((UM.rdReward <$> UM.lookup hk (rewards targetSt)) == Just mempty) - ] -keyRegistration _ = property () - --- | Check stake key de-registration -keyDeRegistration :: ShelleyEraTxCert era => SourceSignalTarget (ShelleyDELEG era) -> Property -keyDeRegistration - SourceSignalTarget - { signal = UnRegTxCert hk - , target = targetSt - } = - conjoin - [ counterexample - "a deregistered stake key should no longer be in the rewards mapping" - (UM.notMember hk (rewards targetSt)) - , counterexample - "a deregistered stake key should no longer be in the delegations mapping" - (UM.notMember hk (delegations targetSt)) - ] -keyDeRegistration _ = property () - --- | Check stake key delegation -keyDelegation :: ShelleyEraTxCert era => SourceSignalTarget (ShelleyDELEG era) -> Property -keyDelegation - SourceSignalTarget - { signal = DelegStakeTxCert from to - , target = targetSt - } = - let fromImage = eval (rng (Set.singleton from `UM.domRestrictedMap` delegations targetSt)) - in conjoin - [ counterexample - "a delegated key should have a reward account" - (UM.member from (rewards targetSt)) - , counterexample - "a registered stake credential should be delegated" - (eval (to ∈ fromImage) :: Bool) - , counterexample - "a registered stake credential should be uniquely delegated" - (Set.size fromImage == 1) - ] -keyDelegation _ = property () - --- | Check that the sum of rewards does not change and that each element --- that is either removed or added has a zero balance. -rewardsSumInvariant :: SourceSignalTarget (ShelleyDELEG era) -> Property -rewardsSumInvariant - SourceSignalTarget {source, target} = - let sourceRewards = UM.compactRewardMap (dsUnified source) - targetRewards = UM.compactRewardMap (dsUnified target) - rewardsSum = foldl' (<>) mempty - in conjoin - [ counterexample - "sum of rewards should not change" - (rewardsSum sourceRewards == rewardsSum targetRewards) - , counterexample - "dropped elements have a zero reward balance" - (null (Map.filter (/= UM.CompactCoin 0) $ sourceRewards `Map.difference` targetRewards)) - , counterexample - "added elements have a zero reward balance" - (null (Map.filter (/= UM.CompactCoin 0) $ targetRewards `Map.difference` sourceRewards)) - ] - -checkInstantaneousRewards :: - (EraPParams era, ShelleyEraTxCert era, ProtVerAtMost era 8) => - DelegEnv era -> - SourceSignalTarget (ShelleyDELEG era) -> - Property -checkInstantaneousRewards - denv - SourceSignalTarget {source, signal, target} = - case signal of - MirTxCert (MIRCert ReservesMIR (StakeAddressesMIR irwd)) -> - conjoin - [ counterexample - "a ReservesMIR certificate should add all entries to the `irwd` mapping" - (Map.keysSet irwd `Set.isSubsetOf` Map.keysSet (iRReserves $ dsIRewards target)) - , counterexample - "a ReservesMIR certificate should add the total value to the `irwd` map, overwriting any existing entries" - ( if HardForks.allowMIRTransfer . view ppProtocolVersionL $ ppDE denv - then -- In the Alonzo era, repeated fields are added - - fold (iRReserves $ dsIRewards source) - `addDeltaCoin` fold irwd - == fold (iRReserves $ dsIRewards target) - else -- Prior to the Alonzo era, repeated fields overridden - - fold (iRReserves (dsIRewards source) Map.\\ irwd) - `addDeltaCoin` fold irwd - == fold (iRReserves $ dsIRewards target) - ) - ] - MirTxCert (MIRCert TreasuryMIR (StakeAddressesMIR irwd)) -> - conjoin - [ counterexample - "a TreasuryMIR certificate should add all entries to the `irwd` mapping" - (Map.keysSet irwd `Set.isSubsetOf` Map.keysSet (iRTreasury $ dsIRewards target)) - , counterexample - "a TreasuryMIR certificate should add* the total value to the `irwd` map" - ( if HardForks.allowMIRTransfer . view ppProtocolVersionL . ppDE $ denv - then -- In the Alonzo era, repeated fields are added - - fold (iRTreasury $ dsIRewards source) - `addDeltaCoin` fold irwd - == fold (iRTreasury $ dsIRewards target) - else -- Prior to the Alonzo era, repeated fields overridden - - fold (iRTreasury (dsIRewards source) Map.\\ irwd) - `addDeltaCoin` fold irwd - == fold (iRTreasury $ dsIRewards target) - ) - ] - _ -> property () diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/Deposits.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/Deposits.hs deleted file mode 100644 index f777447b35c..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/Deposits.hs +++ /dev/null @@ -1,117 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Test.Cardano.Ledger.Shelley.Rules.Deposits ( - tests, -) -where - -import Test.Cardano.Ledger.Shelley.Rules.TestChain ( - shortChainTrace, - ) - -import Cardano.Ledger.Coin -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState ( - CertState (..), - DState (..), - EpochState (..), - LedgerState (..), - NewEpochState (..), - PState (..), - UTxOState (..), - ) -import Cardano.Ledger.Shelley.Rules.Reports ( - synopsisCoinMap, - ) -import Cardano.Ledger.UMap (depositMap) -import qualified Cardano.Ledger.UMap as UM -import Cardano.Ledger.Val ((<+>)) -import qualified Data.Map.Strict as Map -import Test.Cardano.Ledger.Shelley.Constants (defaultConstants) -import Test.Cardano.Ledger.Shelley.Generator.Core (GenEnv) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (EraGen (..)) -import Test.Cardano.Ledger.Shelley.Generator.ShelleyEraGen () -import Test.Cardano.Ledger.Shelley.Rules.Chain (CHAIN, ChainState (..)) -import Test.Control.State.Transition.Trace ( - SourceSignalTarget (..), - ) -import qualified Test.Control.State.Transition.Trace.Generator.QuickCheck as QC - -import Test.Cardano.Ledger.Binary.TreeDiff (diffExpr) -import Test.QuickCheck ( - Property, - counterexample, - (===), - ) -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.QuickCheck (testProperty) - --- | Tests that redundant Deposit information is consistent -tests :: - forall era. - ( EraGen era - , EraGov era - , QC.HasTrace (CHAIN era) (GenEnv era) - ) => - TestTree -tests = - testGroup - "Deposit Invariants" - [ testProperty "Non negative deposits" (shortChainTrace defaultConstants (nonNegativeDeposits @era)) - , testProperty - "Deposits = KeyDeposits + PoolDeposits" - (shortChainTrace defaultConstants (depositInvariant @era)) - , testProperty - "Reward domain = Deposit domain" - (shortChainTrace defaultConstants (rewardDepositDomainInvariant @era)) - ] - --- | Check that deposits are always non-negative -nonNegativeDeposits :: - SourceSignalTarget (CHAIN era) -> - Property -nonNegativeDeposits SourceSignalTarget {source = chainSt} = - let es = (nesEs . chainNes) chainSt - UTxOState {utxosDeposited = d} = (lsUTxOState . esLState) es - in counterexample ("nonNegativeDeposits: " ++ show d) (d >= mempty) - --- | Check that the sum of key Deposits (in the UMap) and the pool Depoits (in psDeposits) are equal to the utsosDeposits -depositInvariant :: - SourceSignalTarget (CHAIN era) -> - Property -depositInvariant SourceSignalTarget {source = chainSt} = - let LedgerState {lsUTxOState = utxost, lsCertState = CertState _vstate pstate dstate} = (esLState . nesEs . chainNes) chainSt - allDeposits = utxosDeposited utxost - sumCoin = Map.foldl' (<+>) (Coin 0) - keyDeposits = (UM.fromCompact . UM.sumDepositUView . UM.RewDepUView . dsUnified) dstate - poolDeposits = sumCoin (psDeposits pstate) - in counterexample - ( unlines - [ "Deposit invariant fails" - , "All deposits = " ++ show allDeposits - , "Key deposits = " ++ synopsisCoinMap (Just (depositMap (dsUnified dstate))) - , "Pool deposits = " ++ synopsisCoinMap (Just (psDeposits pstate)) - ] - ) - (allDeposits === keyDeposits <+> poolDeposits) - -rewardDepositDomainInvariant :: - SourceSignalTarget (CHAIN era) -> - Property -rewardDepositDomainInvariant SourceSignalTarget {source = chainSt} = - let LedgerState {lsCertState = CertState {certDState = dstate}} = (esLState . nesEs . chainNes) chainSt - rewardDomain = UM.domain (UM.RewDepUView (dsUnified dstate)) - depositDomain = Map.keysSet (depositMap (dsUnified dstate)) - in counterexample - ( unlines - [ "Reward-Deposit domain invariant fails" - , diffExpr rewardDomain depositDomain - ] - ) - (rewardDomain === depositDomain) diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/IncrementalStake.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/IncrementalStake.hs deleted file mode 100644 index d08e85d6cdc..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/IncrementalStake.hs +++ /dev/null @@ -1,230 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Test.Cardano.Ledger.Shelley.Rules.IncrementalStake ( - incrStakeComputationTest, - incrStakeComparisonTest, - stakeDistr, - aggregateUtxoCoinByCredential, -) where - -import Test.Cardano.Ledger.Shelley.Rules.TestChain ( - TestingLedger, - forAllChainTrace, - ledgerTraceFromBlock, - longTraceLen, - traceLen, - ) - -import Cardano.Ledger.Address (Addr (..)) -import Cardano.Ledger.BaseTypes (natVersion) -import Cardano.Ledger.Coin -import Cardano.Ledger.Compactible (fromCompact) -import Cardano.Ledger.Core -import Cardano.Ledger.Credential (Credential (..), Ptr, StakeReference (StakeRefBase, StakeRefPtr)) -import Cardano.Ledger.EpochBoundary (SnapShot (..), Stake (..)) -import Cardano.Ledger.Keys (KeyHash, KeyRole (StakePool, Staking)) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState ( - CertState (..), - DState (..), - EpochState (..), - IncrementalStake (..), - LedgerState (..), - NewEpochState (..), - PState (..), - UTxOState (..), - credMap, - curPParamsEpochStateL, - incrementalStakeDistr, - ptrsMap, - ) -import qualified Cardano.Ledger.UMap as UM -import Cardano.Ledger.UTxO (UTxO (..), coinBalance) -import Control.SetAlgebra (dom, eval, (▷), (◁)) -import Data.Foldable (fold) -import Data.Map (Map) -import qualified Data.Map.Strict as Map -import Data.Proxy -import qualified Data.VMap as VMap -import Lens.Micro hiding (ix) -import Test.Cardano.Ledger.Shelley.Constants (defaultConstants, maxMajorPV) -import Test.Cardano.Ledger.Shelley.Generator.Core (GenEnv) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (EraGen (..)) -import Test.Cardano.Ledger.Shelley.Generator.ShelleyEraGen () -import Test.Cardano.Ledger.Shelley.Rules.Chain (CHAIN, ChainState (..)) -import Test.Cardano.Ledger.Shelley.Utils ( - ChainProperty, - ) -import Test.Cardano.Ledger.TerseTools (tersemapdiffs) -import Test.Control.State.Transition.Trace ( - SourceSignalTarget (..), - sourceSignalTargets, - ) -import qualified Test.Control.State.Transition.Trace.Generator.QuickCheck as QC -import Test.QuickCheck ( - Property, - conjoin, - counterexample, - (===), - ) -import Test.Tasty (TestTree) -import Test.Tasty.QuickCheck (testProperty) - -incrStakeComputationTest :: - forall era ledger. - ( EraGen era - , TestingLedger era ledger - , ChainProperty era - , QC.HasTrace (CHAIN era) (GenEnv era) - ) => - TestTree -incrStakeComputationTest = - testProperty "incremental stake calc" $ - forAllChainTrace @era longTraceLen defaultConstants {maxMajorPV = natVersion @8} $ \tr -> do - let ssts = sourceSignalTargets tr - - conjoin . concat $ - [ -- preservation properties - map (incrStakeComp @era @ledger) ssts - ] - -incrStakeComp :: - forall era ledger. - (EraSegWits era, ChainProperty era, TestingLedger era ledger) => - SourceSignalTarget (CHAIN era) -> - Property -incrStakeComp SourceSignalTarget {source = chainSt, signal = block} = - conjoin $ - map checkIncrStakeComp $ - sourceSignalTargets ledgerTr - where - (_, ledgerTr) = ledgerTraceFromBlock @era @ledger chainSt block - checkIncrStakeComp :: SourceSignalTarget ledger -> Property - checkIncrStakeComp - SourceSignalTarget - { source = LedgerState UTxOState {utxosUtxo = u, utxosStakeDistr = sd} dp - , signal = tx - , target = LedgerState UTxOState {utxosUtxo = u', utxosStakeDistr = sd'} dp' - } = - counterexample - ( mconcat - ( [ "\nDetails:\n" - , "\ntx\n" - , show tx - , "\nsize original utxo\n" - , show (Map.size $ unUTxO u) - , "\noriginal utxo\n" - , show u - , "\noriginal sd\n" - , show sd - , "\nfinal utxo\n" - , show u' - , "\nfinal sd\n" - , show sd' - , "\noriginal ptrs\n" - , show ptrs - , "\nfinal ptrs\n" - , show ptrs' - ] - ) - ) - $ utxoBal === fromCompact incrStakeBal - where - utxoBal = coinBalance u' - incrStakeBal = fold (credMap sd') <> fold (ptrMap sd') - ptrs = ptrsMap $ certDState dp - ptrs' = ptrsMap $ certDState dp' - -incrStakeComparisonTest :: - forall era. - ( EraGen era - , QC.HasTrace (CHAIN era) (GenEnv era) - , EraGov era - ) => - Proxy era -> - TestTree -incrStakeComparisonTest Proxy = - testProperty "Incremental stake distribution at epoch boundaries agrees" $ - forAllChainTrace traceLen (defaultConstants {maxMajorPV = natVersion @8}) $ \tr -> - conjoin $ - map (\(SourceSignalTarget _ target _) -> checkIncrementalStake @era ((nesEs . chainNes) target)) $ - filter (not . sameEpoch) (sourceSignalTargets tr) - where - sameEpoch SourceSignalTarget {source, target} = epoch source == epoch target - epoch = nesEL . chainNes - -checkIncrementalStake :: - forall era. - (EraTxOut era, EraGov era) => - EpochState era -> - Property -checkIncrementalStake es = - let - (LedgerState (UTxOState utxo _ _ _ incStake _) (CertState _vstate pstate dstate)) = esLState es - stake = stakeDistr @era utxo dstate pstate - istake = incrementalStakeDistr (es ^. curPParamsEpochStateL) incStake dstate pstate - in - counterexample - ( "\nIncremental stake distribution does not match old style stake distribution" - ++ tersediffincremental "differences: Old vs Incremental" (ssStake stake) (ssStake istake) - ) - (stake === istake) - -tersediffincremental :: String -> Stake c -> Stake c -> String -tersediffincremental message (Stake a) (Stake c) = - tersemapdiffs (message ++ " " ++ "hashes") (mp a) (mp c) - where - mp = Map.map fromCompact . VMap.toMap - --- | Compute the current Stake Distribution. This was called at the Epoch boundary in the Snap Rule. --- Now it is called in the tests to see that its incremental analog 'incrementalStakeDistr' agrees. -stakeDistr :: - forall era. - EraTxOut era => - UTxO era -> - DState era -> - PState era -> - SnapShot (EraCrypto era) -stakeDistr u ds ps = - SnapShot - (Stake $ VMap.fromMap (UM.compactCoinOrError <$> eval (dom activeDelegs ◁ stakeRelation))) - (VMap.fromMap delegs) - (VMap.fromMap poolParams) - where - rewards' :: Map.Map (Credential 'Staking (EraCrypto era)) Coin - rewards' = UM.rewardMap (dsUnified ds) - delegs :: Map.Map (Credential 'Staking (EraCrypto era)) (KeyHash 'StakePool (EraCrypto era)) - delegs = UM.sPoolMap (dsUnified ds) - ptrs' = ptrsMap ds - PState {psStakePoolParams = poolParams} = ps - stakeRelation :: Map (Credential 'Staking (EraCrypto era)) Coin - stakeRelation = aggregateUtxoCoinByCredential ptrs' u rewards' - activeDelegs :: Map.Map (Credential 'Staking (EraCrypto era)) (KeyHash 'StakePool (EraCrypto era)) - activeDelegs = eval ((dom rewards' ◁ delegs) ▷ dom poolParams) - --- | Sum up all the Coin for each staking Credential. This function has an --- incremental analog. See 'incrementalAggregateUtxoCoinByCredential' -aggregateUtxoCoinByCredential :: - forall era. - EraTxOut era => - Map Ptr (Credential 'Staking (EraCrypto era)) -> - UTxO era -> - Map (Credential 'Staking (EraCrypto era)) Coin -> - Map (Credential 'Staking (EraCrypto era)) Coin -aggregateUtxoCoinByCredential ptrs (UTxO u) initial = - Map.foldl' accum initial u - where - accum ans out = - let c = out ^. coinTxOutL - in case out ^. addrTxOutL of - Addr _ _ (StakeRefPtr p) - | Just cred <- Map.lookup p ptrs -> Map.insertWith (<>) cred c ans - Addr _ _ (StakeRefBase hk) -> Map.insertWith (<>) hk c ans - _other -> ans diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/Pool.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/Pool.hs deleted file mode 100644 index 2486083a7a3..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/Pool.hs +++ /dev/null @@ -1,210 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Test.Cardano.Ledger.Shelley.Rules.Pool ( - tests, -) -where - -import Cardano.Ledger.BaseTypes (EpochInterval (..)) -import Cardano.Ledger.Block ( - bheader, - ) -import Cardano.Ledger.Core -import Cardano.Ledger.PoolParams (ppId) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState ( - NewEpochState (..), - PState (..), - curPParamsEpochStateL, - psFutureStakePoolParams, - psStakePoolParams, - ) -import Cardano.Ledger.Shelley.Rules (ShelleyPOOL) -import Cardano.Ledger.Slot (EpochNo (..)) -import Cardano.Protocol.TPraos.BHeader ( - bhbody, - bheaderSlotNo, - ) -import Control.SetAlgebra (dom, eval, (∈), (∉)) -import qualified Data.Map.Strict as Map -import qualified Data.Set as Set -import Lens.Micro.Extras (view) -import Test.Cardano.Ledger.Shelley.Constants (defaultConstants) -import Test.Cardano.Ledger.Shelley.Generator.Core (GenEnv) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (EraGen (..)) -import Test.Cardano.Ledger.Shelley.Generator.ShelleyEraGen () -import Test.Cardano.Ledger.Shelley.Rules.Chain (CHAIN, ChainState (..)) -import Test.Control.State.Transition.Trace ( - SourceSignalTarget (..), - TraceOrder (OldestFirst), - sourceSignalTargets, - traceStates, - ) -import qualified Test.Control.State.Transition.Trace.Generator.QuickCheck as QC -import Test.QuickCheck (Property, conjoin, counterexample, (===)) - -import Test.Cardano.Ledger.Shelley.Rules.TestChain ( - forAllChainTrace, - poolTraceFromBlock, - traceLen, - ) -import Test.Cardano.Ledger.Shelley.Utils ( - ChainProperty, - epochFromSlotNo, - ) -import Test.QuickCheck ( - Testable (..), - ) -import Test.Tasty (TestTree) -import Test.Tasty.QuickCheck (testProperty) - --- | Various properties of the POOL STS Rule, tested on longer traces --- (double the default length) -tests :: - forall era. - ( EraGen era - , ChainProperty era - , QC.HasTrace (CHAIN era) (GenEnv era) - ) => - TestTree -tests = - testProperty "properties of the POOL STS" $ - forAllChainTrace @era traceLen defaultConstants $ \tr -> do - let ssts = sourceSignalTargets tr - conjoin . concat $ - [ map poolRetirement ssts - , map poolRegistration ssts - , map poolStateIsInternallyConsistent ssts - ] - --- | Check that a `RetirePool` certificate properly marks a stake pool for --- retirement. -poolRetirement :: - ( ChainProperty era - , EraSegWits era - , ShelleyEraTxBody era - ) => - SourceSignalTarget (CHAIN era) -> - Property -poolRetirement SourceSignalTarget {source = chainSt, signal = block} = - conjoin $ - map (poolRetirementProp currentEpoch maxEpoch) (sourceSignalTargets poolTr) - where - (chainSt', poolTr) = poolTraceFromBlock chainSt block - bhb = bhbody $ bheader block - currentEpoch = (epochFromSlotNo . bheaderSlotNo) bhb - maxEpoch = (view ppEMaxL . view curPParamsEpochStateL . nesEs . chainNes) chainSt' - --- | Check that a newly registered pool key is registered and not --- in the retiring map. -poolRegistration :: - ( ChainProperty era - , EraSegWits era - , ShelleyEraTxBody era - ) => - SourceSignalTarget (CHAIN era) -> - Property -poolRegistration (SourceSignalTarget {source = chainSt, signal = block}) = - conjoin $ - map poolRegistrationProp (sourceSignalTargets poolTr) - where - (_, poolTr) = poolTraceFromBlock chainSt block - --- | Assert that PState maps are in sync with each other after each `Signal --- POOL` transition. -poolStateIsInternallyConsistent :: - ( ChainProperty era - , EraSegWits era - , ShelleyEraTxBody era - ) => - SourceSignalTarget (CHAIN era) -> - Property -poolStateIsInternallyConsistent (SourceSignalTarget {source = chainSt, signal = block}) = - conjoin $ - map poolStateIsInternallyConsistentProp (traceStates OldestFirst poolTr) - where - (_, poolTr) = poolTraceFromBlock chainSt block - -poolRegistrationProp :: SourceSignalTarget (ShelleyPOOL era) -> Property -poolRegistrationProp - SourceSignalTarget - { signal = RegPool poolParams - , source = sourceSt - , target = targetSt - } = - let hk = ppId poolParams - reRegistration = eval (hk ∈ dom (psStakePoolParams sourceSt)) - in if reRegistration - then - conjoin - [ counterexample - "Pre-existing PoolParams must still be registered in pParams" - (eval (hk ∈ dom (psStakePoolParams targetSt)) :: Bool) - , counterexample - "New PoolParams are registered in future Params map" - (Map.lookup hk (psFutureStakePoolParams targetSt) === Just poolParams) - , counterexample - "PoolParams are removed in 'retiring'" - (eval (hk ∉ dom (psRetiring targetSt)) :: Bool) - ] - else -- first registration - - conjoin - [ counterexample - "New PoolParams are registered in pParams" - (Map.lookup hk (psStakePoolParams targetSt) === Just poolParams) - , counterexample - "PoolParams are not present in 'future pool params'" - (eval (hk ∉ dom (psFutureStakePoolParams targetSt)) :: Bool) - , counterexample - "PoolParams are removed in 'retiring'" - (eval (hk ∉ dom (psRetiring targetSt)) :: Bool) - ] -poolRegistrationProp _ = property () - -poolRetirementProp :: - EpochNo -> - EpochInterval -> - SourceSignalTarget (ShelleyPOOL era) -> - Property -poolRetirementProp - currentEpoch@(EpochNo ce) - (EpochInterval maxEpoch) - SourceSignalTarget {source = sourceSt, target = targetSt, signal = RetirePool hk e} = - conjoin - [ counterexample - ("epoch must be well formed " <> show ce <> " " <> show e <> " " <> show maxEpoch) - (currentEpoch < e && e < EpochNo (ce + fromIntegral maxEpoch)) - , counterexample - "hk must be in source stPools" - (eval (hk ∈ dom (psStakePoolParams sourceSt)) :: Bool) - , counterexample - "hk must be in target stPools" - (eval (hk ∈ dom (psStakePoolParams targetSt)) :: Bool) - , counterexample - "hk must be in target's retiring" - (eval (hk ∈ dom (psRetiring targetSt)) :: Bool) - ] -poolRetirementProp _ _ _ = property () - -poolStateIsInternallyConsistentProp :: PState c -> Property -poolStateIsInternallyConsistentProp PState {psStakePoolParams = pParams_, psRetiring = retiring_} = do - let poolKeys = Map.keysSet pParams_ - pParamKeys = Map.keysSet pParams_ - retiringKeys = Map.keysSet retiring_ - - conjoin - [ counterexample - "All pool keys should be in both stPools and pParams" - (poolKeys === pParamKeys) - , counterexample - "A retiring pool should still be registered in `stPools`" - ((retiringKeys `Set.isSubsetOf` poolKeys) === True) - ] diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/PoolReap.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/PoolReap.hs deleted file mode 100644 index a50c69dbee1..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/PoolReap.hs +++ /dev/null @@ -1,117 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeSynonymInstances #-} - -module Test.Cardano.Ledger.Shelley.Rules.PoolReap ( - tests, -) -where - -import Test.Cardano.Ledger.Shelley.Rules.TestChain ( - chainSstWithTick, - forAllChainTrace, - traceLen, - ) - -import Cardano.Ledger.Block ( - Block (..), - ) -import Cardano.Ledger.Keys (KeyHash, KeyRole (StakePool)) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState ( - CertState (..), - EpochState (..), - LedgerState (..), - NewEpochState (..), - PState (..), - psStakePoolParams, - ) -import Cardano.Ledger.Slot (EpochNo (..)) -import Cardano.Protocol.TPraos.BHeader ( - bhbody, - bheaderSlotNo, - ) -import Control.SetAlgebra (dom, eval, setSingleton, (∩), (⊆), (▷)) -import qualified Data.Set as Set -import Test.Cardano.Ledger.Shelley.Constants (defaultConstants) -import Test.Cardano.Ledger.Shelley.Generator.Core (GenEnv) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (EraGen (..)) -import Test.Cardano.Ledger.Shelley.Generator.ShelleyEraGen () -import Test.Cardano.Ledger.Shelley.Rules.Chain (CHAIN, ChainState (..)) -import Test.Cardano.Ledger.Shelley.Utils ( - ChainProperty, - epochFromSlotNo, - ) -import Test.Control.State.Transition.Trace ( - SourceSignalTarget (..), - ) -import qualified Test.Control.State.Transition.Trace.Generator.QuickCheck as QC -import Test.QuickCheck ( - Property, - Testable (..), - conjoin, - ) -import Test.Tasty (TestTree) -import Test.Tasty.QuickCheck (testProperty) - ----------------------------------------------------------------------- --- Properties for PoolReap (using the CHAIN Trace) -- ----------------------------------------------------------------------- - -tests :: - forall era. - ( ChainProperty era - , EraGen era - , QC.HasTrace (CHAIN era) (GenEnv era) - ) => - TestTree -tests = - testProperty "pool is removed from stake pool and retiring maps" $ - forAllChainTrace traceLen defaultConstants $ \tr -> - conjoin $ - map removedAfterPoolreap_ $ - filter (not . sameEpoch) (chainSstWithTick tr) - where - poolState = certPState . lsCertState . esLState . nesEs . chainNes - - removedAfterPoolreap_ :: SourceSignalTarget (CHAIN era) -> Property - removedAfterPoolreap_ (SourceSignalTarget {source, target, signal = (UnserialisedBlock bh _)}) = - let e = (epochFromSlotNo . bheaderSlotNo . bhbody) bh - in removedAfterPoolreap (poolState source) (poolState target) e - --- | Check that after a POOLREAP certificate transition the pool is removed from --- the stake pool and retiring maps. -removedAfterPoolreap :: - forall era. - PState era -> - PState era -> - EpochNo -> - Property -removedAfterPoolreap p p' e = - property $ - eval (retire ⊆ dom stp) - && Set.null (eval (retire ∩ dom stp')) - && Set.null (eval (retire ∩ dom retiring')) - where - stp = psStakePoolParams p - stp' = psStakePoolParams p' - retiring = psRetiring p - retiring' = psRetiring p' - retire :: Set.Set (KeyHash 'StakePool (EraCrypto era)) -- This declaration needed to disambiguate 'eval' - retire = eval (dom (retiring ▷ setSingleton e)) - -sameEpoch :: - forall era. - SourceSignalTarget (CHAIN era) -> - Bool -sameEpoch SourceSignalTarget {source, target} = - epoch source == epoch target - where - epoch = nesEL . chainNes diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/TestChain.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/TestChain.hs deleted file mode 100644 index 1ca619c7ad2..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Rules/TestChain.hs +++ /dev/null @@ -1,347 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} - -module Test.Cardano.Ledger.Shelley.Rules.TestChain ( - delegTraceFromBlock, - forAllChainTrace, - ledgerTraceFromBlock, - ledgerTraceFromBlockWithRestrictedUTxO, - chainSstWithTick, - poolTraceFromBlock, - TestingLedger, - splitTrace, - forEachEpochTrace, - traceLen, - longTraceLen, - shortChainTrace, -) where - -import Cardano.Ledger.BaseTypes (Globals) -import Cardano.Ledger.Block ( - Block (..), - bheader, - neededTxInsForBlock, - ) -import Cardano.Ledger.Core -import Cardano.Ledger.Credential (Ptr (..)) -import Cardano.Ledger.Shelley.API (ApplyBlock, CertState (..), ShelleyDELEG) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState ( - EpochState (..), - LedgerState (..), - NewEpochState (..), - UTxOState (..), - curPParamsEpochStateL, - ) -import Cardano.Ledger.Shelley.Rules ( - DelegEnv (..), - LedgerEnv (..), - PoolEnv (..), - ShelleyPOOL, - ) -import Cardano.Ledger.UTxO (UTxO (..)) -import Cardano.Protocol.TPraos.API (GetLedgerView) -import Cardano.Protocol.TPraos.BHeader ( - BHeader (..), - bhbody, - bheaderSlotNo, - ) -import Control.Monad.Trans.Reader (ReaderT) -import Control.State.Transition -import Data.Foldable (toList) -import Data.Functor.Identity (Identity) -import qualified Data.Map.Strict as Map -import Data.Maybe (mapMaybe) -import Data.Proxy -import qualified Data.Set as Set -import Data.Word (Word64) -import Lens.Micro ((^.)) -import Lens.Micro.Extras (view) -import Test.Cardano.Ledger.Shelley.Constants (Constants) -import Test.Cardano.Ledger.Shelley.Generator.Block (tickChainState) -import Test.Cardano.Ledger.Shelley.Generator.Core (GenEnv) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (EraGen (..)) -import qualified Test.Cardano.Ledger.Shelley.Generator.Presets as Preset (genEnv) -import Test.Cardano.Ledger.Shelley.Generator.ShelleyEraGen () -import Test.Cardano.Ledger.Shelley.Generator.Trace.Chain (mkGenesisChainState) -import Test.Cardano.Ledger.Shelley.Rules.Chain (CHAIN, ChainState (..)) -import Test.Cardano.Ledger.Shelley.Utils ( - ChainProperty, - runShelleyBase, - testGlobals, - ) -import Test.Control.State.Transition.Trace ( - SourceSignalTarget (..), - Trace (..), - sourceSignalTargets, - splitTrace, - ) -import qualified Test.Control.State.Transition.Trace as Trace -import Test.Control.State.Transition.Trace.Generator.QuickCheck (forAllTraceFromInitState) -import qualified Test.Control.State.Transition.Trace.Generator.QuickCheck as QC -import Test.QuickCheck ( - Property, - Testable (..), - conjoin, - withMaxSuccess, - ) - ------------------------------- --- Constants for Properties -- ------------------------------- - -numberOfTests :: Word64 -numberOfTests = 300 - -traceLen :: Word64 -traceLen = 100 - -longTraceLen :: Word64 -longTraceLen = 150 - -type TestingLedger era ledger = - ( BaseM ledger ~ ReaderT Globals Identity - , Environment ledger ~ LedgerEnv era - , State ledger ~ LedgerState era - , Signal ledger ~ Tx era - , Embed (EraRule "DELEGS" era) ledger - , Embed (EraRule "UTXOW" era) ledger - , STS ledger - ) - --- =================================================== - --- | Properties on really short chains, with only 100 successes -shortChainTrace :: - forall era. - ( EraGen era - , QC.HasTrace (CHAIN era) (GenEnv era) - , EraGov era - ) => - Constants -> - (SourceSignalTarget (CHAIN era) -> Property) -> - Property -shortChainTrace constants f = withMaxSuccess 100 $ forAllChainTrace @era 10 constants $ \tr -> conjoin (map f (sourceSignalTargets tr)) - ----------------------------------------------------------------------- --- Projections of CHAIN Trace ----------------------------------------------------------------------- - --- | Reconstruct a LEDGER trace from the transactions in a Block and ChainState -ledgerTraceFromBlock :: - forall era ledger. - ( ChainProperty era - , EraSegWits era - , TestingLedger era ledger - ) => - ChainState era -> - Block (BHeader (EraCrypto era)) era -> - (ChainState era, Trace ledger) -ledgerTraceFromBlock chainSt block = - ( tickedChainSt - , runShelleyBase $ - Trace.closure @ledger ledgerEnv ledgerSt0 txs - ) - where - (tickedChainSt, ledgerEnv, ledgerSt0, txs) = ledgerTraceBase chainSt block - --- | This function is nearly the same as ledgerTraceFromBlock, but --- it restricts the UTxO state to only those needed by the block. --- It also returns the unused UTxO for comparison later. -ledgerTraceFromBlockWithRestrictedUTxO :: - forall era ledger. - ( ChainProperty era - , EraSegWits era - , TestingLedger era ledger - ) => - ChainState era -> - Block (BHeader (EraCrypto era)) era -> - (UTxO era, Trace ledger) -ledgerTraceFromBlockWithRestrictedUTxO chainSt block = - ( UTxO irrelevantUTxO - , runShelleyBase $ - Trace.closure @ledger ledgerEnv ledgerSt0' txs - ) - where - (_tickedChainSt, ledgerEnv, ledgerSt0, txs) = ledgerTraceBase chainSt block - txIns = neededTxInsForBlock block - LedgerState utxoSt delegationSt = ledgerSt0 - utxo = unUTxO . utxosUtxo $ utxoSt - (relevantUTxO, irrelevantUTxO) = Map.partitionWithKey (const . (`Set.member` txIns)) utxo - ledgerSt0' = LedgerState (utxoSt {utxosUtxo = UTxO relevantUTxO}) delegationSt - --- | Reconstruct a POOL trace from the transactions in a Block and ChainState -poolTraceFromBlock :: - forall era. - ( ChainProperty era - , ShelleyEraTxBody era - , EraSegWits era - ) => - ChainState era -> - Block (BHeader (EraCrypto era)) era -> - (ChainState era, Trace (ShelleyPOOL era)) -poolTraceFromBlock chainSt block = - ( tickedChainSt - , runShelleyBase $ - Trace.closure @(ShelleyPOOL era) poolEnv poolSt0 poolCerts - ) - where - (tickedChainSt, ledgerEnv, ledgerSt0, txs) = ledgerTraceBase chainSt block - certs = concatMap (toList . view certsTxBodyL . view bodyTxL) - poolCerts = mapMaybe getPoolCertTxCert (certs txs) - poolEnv = - let (LedgerEnv s _ pp _) = ledgerEnv - in PoolEnv s pp - poolSt0 = - certPState (lsCertState ledgerSt0) - --- | Reconstruct a DELEG trace from all the transaction certificates in a Block -delegTraceFromBlock :: - forall era. - ( ChainProperty era - , ShelleyEraTxBody era - , EraSegWits era - ) => - ChainState era -> - Block (BHeader (EraCrypto era)) era -> - (DelegEnv era, Trace (ShelleyDELEG era)) -delegTraceFromBlock chainSt block = - ( delegEnv - , runShelleyBase $ - Trace.closure @(ShelleyDELEG era) delegEnv delegSt0 blockCerts - ) - where - (_tickedChainSt, ledgerEnv, ledgerSt0, txs) = ledgerTraceBase chainSt block - certs = concatMap (reverse . toList . view certsTxBodyL . view bodyTxL) - blockCerts = filter delegCert (certs txs) - delegEnv = - let (LedgerEnv s txIx pp reserves) = ledgerEnv - dummyCertIx = minBound - ptr = Ptr s txIx dummyCertIx - in DelegEnv s ptr reserves pp - delegSt0 = - certDState (lsCertState ledgerSt0) - delegCert (RegTxCert _) = True - delegCert (UnRegTxCert _) = True - delegCert (DelegStakeTxCert _ _) = True - delegCert (MirTxCert _) = True - delegCert _ = False - --- | Reconstruct a POOL trace from the transactions in a Block and ChainState --- --- NOTE: we need to tick the slot before processing transactions --- (in the same way that the CHAIN rule TICKs the slot before processing --- transactions with the LEDGERS rule) -ledgerTraceBase :: - forall era. - ( EraSegWits era - , GetLedgerView era - , ApplyBlock era - ) => - ChainState era -> - Block (BHeader (EraCrypto era)) era -> - (ChainState era, LedgerEnv era, LedgerState era, [Tx era]) -ledgerTraceBase chainSt block = - ( tickedChainSt - , LedgerEnv slot minBound pp_ (esAccountState nes) - , esLState nes - , txs - ) - where - (UnserialisedBlock (BHeader bhb _) txSeq) = block - slot = bheaderSlotNo bhb - tickedChainSt = tickChainState slot chainSt - nes = (nesEs . chainNes) tickedChainSt - pp_ = nes ^. curPParamsEpochStateL - -- Oldest to Newest first - txs = (reverse . toList . fromTxSeq) txSeq -- HERE WE USE SOME SegWit function - --- | Transform the [(source, signal, target)] of a CHAIN Trace --- by manually applying the Chain TICK Rule to each source and producing --- [(source, signal, target')]. --- --- This allows for testing properties on Chain traces while excluding the effects --- of Transactions and Certificates. For example we can check that pools that are --- due for retirement at an epoch transition, are indeed retired. --- --- Had we not excluded the effects of Transactions/Certificates, we might have --- a pool that was correctly retired, but is again registered by a certificate --- in the block following the transition. -chainSstWithTick :: - forall era. - ChainProperty era => - Trace (CHAIN era) -> - [SourceSignalTarget (CHAIN era)] -chainSstWithTick ledgerTr = - map applyTick (sourceSignalTargets ledgerTr) - where - applyTick sst@SourceSignalTarget {source = chainSt, signal = block} = - let bh = bheader block - slot = (bheaderSlotNo . bhbody) bh - in sst {target = tickChainState @era slot chainSt} - ---------------------------- --- Utils -- ---------------------------- - -forAllChainTrace :: - forall era prop. - ( Testable prop - , EraGen era - , QC.HasTrace (CHAIN era) (GenEnv era) - , EraGov era - ) => - Word64 -> -- trace length - Constants -> - (Trace (CHAIN era) -> prop) -> - Property -forAllChainTrace n constants prop = - withMaxSuccess (fromIntegral numberOfTests) . property $ - forAllTraceFromInitState - testGlobals - n - (Preset.genEnv p constants) - (Just $ mkGenesisChainState (Preset.genEnv p constants)) - prop - where - p :: Proxy era - p = Proxy - --- | Test a property on the first 'subtracecount' sub-Traces that end on an EpochBoundary -forEachEpochTrace :: - forall era prop. - ( EraGen era - , Testable prop - , QC.HasTrace (CHAIN era) (GenEnv era) - , EraGov era - ) => - Int -> - Word64 -> - Constants -> - (Trace (CHAIN era) -> prop) -> - Property -forEachEpochTrace subtracecount tracelen constants f = forAllChainTrace tracelen constants action - where - -- split at contiguous elements with different Epoch numbers - p new old = (nesEL . chainNes) new /= (nesEL . chainNes) old - -- At a minimum throw away the last trace which is probably an incomplete epoch - action tr = conjoin $ map f (take (min subtracecount (m - 1)) (reverse traces)) - where - traces = splitTrace p tr - m = length traces - --- ================================ --- an example how one might debug one test, which can be replayed --- import Test.Tasty (defaultMain) --- main :: IO () --- main = defaultMain (minimal @(ShelleyEra TestCrypto)) --- Then in ghci, one can just type --- :main --quickcheck-replay=443873 --- ================================= diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Serialisation/EraIndepGenerators.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Serialisation/EraIndepGenerators.hs deleted file mode 100644 index f85de795ae0..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Serialisation/EraIndepGenerators.hs +++ /dev/null @@ -1,7 +0,0 @@ -module Test.Cardano.Ledger.Shelley.Serialisation.EraIndepGenerators ( - genCoherentBlock, -) where - -import Test.Cardano.Ledger.Core.Arbitrary () -import Test.Cardano.Ledger.Shelley.Arbitrary () -import Test.Cardano.Protocol.TPraos.Arbitrary (genCoherentBlock) diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Serialisation/Generators.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Serialisation/Generators.hs deleted file mode 100644 index de3cdbd40a6..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Serialisation/Generators.hs +++ /dev/null @@ -1,3 +0,0 @@ -module Test.Cardano.Ledger.Shelley.Serialisation.Generators () where - -import Test.Cardano.Ledger.Shelley.Arbitrary () diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Serialisation/GoldenUtils.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Serialisation/GoldenUtils.hs deleted file mode 100644 index 3a141809f5a..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Serialisation/GoldenUtils.hs +++ /dev/null @@ -1,169 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} - -module Test.Cardano.Ledger.Shelley.Serialisation.GoldenUtils ( - checkEncoding, - checkEncodingCBOR, - checkEncodingCBORAnnotated, - ToTokens (..), - roundTripFailure, - checkEncodingCBORDecodeFailure, -) -where - -import Cardano.Ledger.Binary ( - Annotator, - DecCBOR (..), - DecoderError, - EncCBOR (..), - EncCBORGroup (..), - Encoding, - ToCBOR (..), - Tokens (..), - Version, - decodeFullAnnotator, - decodeFullDecoder, - decodeTerm, - encCBOR, - fromPlainEncoding, - serialize, - serialize', - ) - --- ToExpr (CBOR.Term) instance -import qualified Codec.CBOR.Encoding as CBOR (Encoding (..)) -import Control.Exception (throwIO) -import Control.Monad (unless) -import qualified Data.ByteString.Lazy as BSL (ByteString) -import Data.String (fromString) -import GHC.Stack -import Test.Cardano.Ledger.Binary.TreeDiff (diffExpr) -import Test.Tasty (TestTree) -import Test.Tasty.HUnit (Assertion, assertFailure, testCase, (@?=)) - -expectDecodingSuccess :: (HasCallStack, Show a, Eq a) => (a -> Either DecoderError a) -> a -> IO () -expectDecodingSuccess action x = - case action x of - Left e -> assertFailure $ "could not decode serialization of " ++ show x ++ ", " ++ show e - Right y -> y @?= x - -expectDecodingFailure :: (HasCallStack, Show a) => (a -> Either DecoderError a) -> a -> IO () -expectDecodingFailure action x = - case action x of - Left _ -> pure () - Right _ -> assertFailure $ "Did not expect successful decoding of " ++ show x - -roundtrip :: - Version -> - (a -> Encoding) -> - (BSL.ByteString -> Either DecoderError a) -> - a -> - Either DecoderError a -roundtrip v encode decode = decode . serialize v . encode - -roundTripSuccess :: - (Show a, Eq a) => - Version -> - (a -> Encoding) -> - (BSL.ByteString -> Either DecoderError a) -> - a -> - Assertion -roundTripSuccess v encode decode x = expectDecodingSuccess (roundtrip v encode decode) x - -roundTripFailure :: - Show a => Version -> (a -> Encoding) -> (BSL.ByteString -> Either DecoderError a) -> a -> Assertion -roundTripFailure v encode decode x = expectDecodingFailure (roundtrip v encode decode) x - -checkEncoding :: - (HasCallStack, Show a, Eq a) => - Version -> - (a -> Encoding) -> - (BSL.ByteString -> Either DecoderError a) -> - String -> - a -> - ToTokens -> - TestTree -checkEncoding v encode decode name x t = checkEncodingWithRoundtrip v encode decode roundTripSuccess name x t - -checkEncodingWithRoundtrip :: - HasCallStack => - Version -> - (a -> Encoding) -> - (BSL.ByteString -> Either DecoderError a) -> - (Version -> (a -> Encoding) -> (BSL.ByteString -> Either DecoderError a) -> a -> Assertion) -> - String -> - a -> - ToTokens -> - TestTree -checkEncodingWithRoundtrip v encode decode roundTrip name x t = - testCase testName $ do - unless (expectedBinary == actualBinary) $ do - expectedTerms <- getTerms "expected" expectedBinary - actualTerms <- getTerms "actual" actualBinary - assertFailure $ - unlines - [ "Serialization did not match: " - , diffExpr expectedTerms actualTerms - ] - roundTrip v encode decode x - where - getTerms lbl = either throwIO pure . decodeFullDecoder v lbl decodeTerm - expectedBinary = serialize v t - actualBinary = serialize v $ encode x - testName = "golden_serialize_" <> name - -checkEncodingCBORDecodeFailure :: - (HasCallStack, DecCBOR a, EncCBOR a, Show a) => - Version -> - String -> - a -> - ToTokens -> - TestTree -checkEncodingCBORDecodeFailure v name x t = - let d = decodeFullDecoder v (fromString name) decCBOR - in checkEncodingWithRoundtrip v encCBOR d roundTripFailure name x t - -checkEncodingCBOR :: - (HasCallStack, DecCBOR a, EncCBOR a, Show a, Eq a) => - Version -> - String -> - a -> - ToTokens -> - TestTree -checkEncodingCBOR v name x t = - let d = decodeFullDecoder v (fromString name) decCBOR - in checkEncodingWithRoundtrip v encCBOR d roundTripSuccess name x t - -checkEncodingCBORAnnotated :: - (HasCallStack, DecCBOR (Annotator a), ToCBOR a, Show a, Eq a) => - Version -> - String -> - a -> - ToTokens -> - TestTree -checkEncodingCBORAnnotated v name x t = - let d = decodeFullAnnotator v (fromString name) decCBOR - in checkEncodingWithRoundtrip v (fromPlainEncoding . toCBOR) d roundTripSuccess name x annTokens - where - annTokens = T $ TkEncoded $ serialize' v t - -data ToTokens where - T :: (Tokens -> Tokens) -> ToTokens - S :: EncCBOR a => a -> ToTokens - G :: EncCBORGroup a => a -> ToTokens - Plus :: ToTokens -> ToTokens -> ToTokens - -instance EncCBOR ToTokens where - encCBOR (T xs) = fromPlainEncoding (CBOR.Encoding xs) - encCBOR (S s) = encCBOR s - encCBOR (G g) = encCBORGroup g - encCBOR (Plus a b) = encCBOR a <> encCBOR b - -instance Semigroup ToTokens where - (<>) = Plus - -instance Monoid ToTokens where - mempty = T id diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/ShelleyTranslation.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/ShelleyTranslation.hs deleted file mode 100644 index 988ef8e5d81..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/ShelleyTranslation.hs +++ /dev/null @@ -1,23 +0,0 @@ -module Test.Cardano.Ledger.Shelley.ShelleyTranslation (testGroupShelleyTranslation) where - -import Cardano.Ledger.Shelley (ShelleyEra) -import Cardano.Ledger.Shelley.AdaPots (totalAdaES) -import Cardano.Ledger.Shelley.LedgerState (EpochState, returnRedeemAddrsToReserves) -import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes (C_Crypto) -import Test.Cardano.Ledger.Shelley.Generator.ShelleyEraGen () -import Test.Cardano.Ledger.Shelley.Serialisation.EraIndepGenerators () -import Test.Cardano.Ledger.Shelley.Serialisation.Generators () -import Test.Tasty -import Test.Tasty.QuickCheck - -testGroupShelleyTranslation :: TestTree -testGroupShelleyTranslation = - testGroup - "Translation from Shelley to Allegra" - [ testProperty "returning redeemers preserves ada" propRemoveRedeemPreservesAda - ] - -propRemoveRedeemPreservesAda :: - EpochState (ShelleyEra C_Crypto) -> Property -propRemoveRedeemPreservesAda es = - totalAdaES es === (totalAdaES . returnRedeemAddrsToReserves) es diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Utils.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Utils.hs deleted file mode 100644 index a6d3a551bed..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/Utils.hs +++ /dev/null @@ -1,259 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -fno-warn-orphans #-} - -module Test.Cardano.Ledger.Shelley.Utils ( - mkSeedFromWords, - mkCertifiedVRF, - epochFromSlotNo, - evolveKESUntil, - slotFromEpoch, - epochSize, - mkHash, - mkKeyPair, - mkKeyPair', - mkGenKey, - mkKESKeyPair, - mkVRFKeyPair, - runShelleyBase, - maxKESIterations, - slotsPerKESIteration, - testSTS, - maxLLSupply, - applySTSTest, - GenesisKeyPair, - getBlockNonce, - ChainProperty, - RawSeed (..), - Split (..), - module CoreUtils, -) -where - -import Cardano.Crypto.DSIGN.Class (DSIGNAlgorithm (..)) -import Cardano.Crypto.Hash ( - Blake2b_256, - Hash, - HashAlgorithm, - hashToBytes, - ) -import Cardano.Crypto.KES ( - KESAlgorithm (..), - deriveVerKeyKES, - genKeyKES, - ) -import Cardano.Crypto.Seed (Seed, mkSeedFromBytes) -import Cardano.Crypto.VRF ( - CertifiedVRF, - SignKeyVRF, - VRFAlgorithm (..), - certifiedOutput, - deriveVerKeyVRF, - evalCertified, - genKeyVRF, - ) -import qualified Cardano.Crypto.VRF as VRF -import Cardano.Ledger.BaseTypes ( - Globals (..), - Nonce, - ShelleyBase, - epochInfoPure, - mkNonceFromOutputVRF, - ) -import Cardano.Ledger.Binary (EncCBOR (..), hashWithEncoder, shelleyProtVer) -import Cardano.Ledger.Block (Block, bheader) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Crypto (Crypto (DSIGN)) -import Cardano.Ledger.Shelley.API (ApplyBlock, KeyRole (..), VKey (..)) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Slot (EpochNo, EpochSize (..), SlotNo) -import Cardano.Protocol.TPraos.API (GetLedgerView) -import Cardano.Protocol.TPraos.BHeader (BHBody (..), BHeader, bhbody) -import Cardano.Slotting.EpochInfo ( - epochInfoEpoch, - epochInfoFirst, - epochInfoSize, - ) -import Control.Monad.Reader.Class (asks) -import Control.Monad.Trans.Reader (runReaderT) -import Control.State.Transition.Extended hiding (Assertion) -import Data.Coerce (Coercible, coerce) -import Data.Functor.Identity (runIdentity) -import Data.List.NonEmpty (NonEmpty) -import Data.Typeable (Proxy (Proxy)) -import Data.Word (Word64) -import Test.Cardano.Ledger.Core.KeyPair (KeyPair, pattern KeyPair) -import Test.Cardano.Ledger.Core.Utils as CoreUtils -import Test.Cardano.Ledger.Shelley.Arbitrary (RawSeed (..)) -import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes (Mock) -import Test.Cardano.Ledger.TreeDiff (ToExpr) -import Test.Cardano.Protocol.TPraos.Create (KESKeyPair (..), VRFKeyPair (..), evolveKESUntil) -import Test.Control.State.Transition.Trace ( - applySTSTest, - checkTrace, - (.-), - (.->>), - ) -import Test.Tasty.HUnit ( - Assertion, - (@?=), - ) - -type ChainProperty era = - ( Mock (EraCrypto era) - , ApplyBlock era - , GetLedgerView era - , EraTx era - ) - --- ================================================ - -class Split v where - vsplit :: v -> Integer -> ([v], Coin) - --- =============================================================================== --- Generating random transactions requires splitting Values into multiple Values --- with the same underlying amount of Coin. This property is crucial to generating --- transactions which have the preservation of ADA property. (vsplit n v) breaks --- v into n different values, and one remainder Coin, where the sum of the Coin --- in the original value, and the sum of the underlying Coin in the list plus the --- remainder coin are equal. --- Given: let (vs,coin) = split n value --- Then: (coin value) == sum(map coin vs) <+> coin - --- We introduce a new class Split which supplies this operation. --- As new kinds of values become instances of the Val class, and we want to generate --- transactions over these values, we will have to add additional instances here. - -instance Split Coin where - vsplit (Coin n) 0 = ([], Coin n) - vsplit (Coin n) m - | m <= 0 = error "must split coins into positive parts" - | otherwise = (take (fromIntegral m) (repeat (Coin (n `div` m))), Coin (n `rem` m)) - -type GenesisKeyPair c = KeyPair 'Genesis c - -instance EncCBOR RawSeed where - encCBOR (RawSeed w1 w2 w3 w4 w5) = encCBOR (w1, w2, w3, w4, w5) - encodedSizeExpr size _ = 1 + size (Proxy :: Proxy Word64) * 5 - --- | Construct a seed from a bunch of Word64s --- --- We multiply these words by some extra stuff to make sure they contain --- enough bits for our seed. -mkSeedFromWords :: - RawSeed -> - Seed -mkSeedFromWords stuff = - mkSeedFromBytes . hashToBytes $ hashWithEncoder @Blake2b_256 shelleyProtVer encCBOR stuff - --- | For testing purposes, generate a deterministic genesis key pair given a seed. -mkGenKey :: - DSIGNAlgorithm (DSIGN c) => - RawSeed -> - (SignKeyDSIGN (DSIGN c), VKey kd c) -mkGenKey seed = - let sk = genKeyDSIGN $ mkSeedFromWords seed - in (sk, VKey $ deriveVerKeyDSIGN sk) - --- | For testing purposes, generate a deterministic key pair given a seed. -mkKeyPair :: - forall c kd. - DSIGNAlgorithm (DSIGN c) => - RawSeed -> - (SignKeyDSIGN (DSIGN c), VKey kd c) -mkKeyPair seed = - let sk = genKeyDSIGN $ mkSeedFromWords seed - in (sk, VKey $ deriveVerKeyDSIGN sk) - --- | For testing purposes, generate a deterministic key pair given a seed. -mkKeyPair' :: - DSIGNAlgorithm (DSIGN c) => - RawSeed -> - KeyPair kd c -mkKeyPair' seed = KeyPair vk sk - where - (sk, vk) = mkKeyPair seed - --- | For testing purposes, generate a deterministic VRF key pair given a seed. -mkVRFKeyPair :: Crypto c => RawSeed -> VRFKeyPair c -mkVRFKeyPair seed = - let sk = genKeyVRF $ mkSeedFromWords seed - in VRFKeyPair - { vrfSignKey = sk - , vrfVerKey = deriveVerKeyVRF sk - } - --- | For testing purposes, create a VRF value -mkCertifiedVRF :: - ( VRF.Signable v a - , VRFAlgorithm v - , ContextVRF v ~ () - , Coercible b (CertifiedVRF v a) - ) => - a -> - SignKeyVRF v -> - b -mkCertifiedVRF a sk = - coerce $ evalCertified () a sk - --- | For testing purposes, generate a deterministic KES key pair given a seed. -mkKESKeyPair :: Crypto c => RawSeed -> KESKeyPair c -mkKESKeyPair seed = - let sk = genKeyKES $ mkSeedFromWords seed - in KESKeyPair - { kesSignKey = sk - , kesVerKey = deriveVerKeyKES sk - } - -runShelleyBase :: ShelleyBase a -> a -runShelleyBase act = runIdentity $ runReaderT act testGlobals - -epochFromSlotNo :: SlotNo -> EpochNo -epochFromSlotNo = runIdentity . epochInfoEpoch (epochInfoPure testGlobals) - -slotFromEpoch :: EpochNo -> SlotNo -slotFromEpoch = runIdentity . epochInfoFirst (epochInfoPure testGlobals) - -epochSize :: EpochNo -> EpochSize -epochSize = runIdentity . epochInfoSize (epochInfoPure testGlobals) - -maxKESIterations :: Word64 -maxKESIterations = runShelleyBase (asks maxKESEvo) - -slotsPerKESIteration :: Word64 -slotsPerKESIteration = runShelleyBase (asks slotsPerKESPeriod) - -maxLLSupply :: Coin -maxLLSupply = Coin $ fromIntegral $ runShelleyBase (asks maxLovelaceSupply) - -testSTS :: - forall s. - (BaseM s ~ ShelleyBase, STS s, Eq (State s), Show (State s), ToExpr (State s)) => - Environment s -> - State s -> - Signal s -> - Either (NonEmpty (PredicateFailure s)) (State s) -> - Assertion -testSTS env initSt signal (Right expectedSt) = do - checkTrace @s runShelleyBase env $ pure initSt .- signal .->> expectedSt -testSTS env initSt sig predicateFailure@(Left _) = do - let st = runShelleyBase $ applySTSTest @s (TRC (env, initSt, sig)) - st @?= predicateFailure - -mkHash :: forall a h. HashAlgorithm h => Int -> Hash h a -mkHash i = coerce (hashWithEncoder @h shelleyProtVer encCBOR i) - -getBlockNonce :: forall era. Era era => Block (BHeader (EraCrypto era)) era -> Nonce -getBlockNonce = - mkNonceFromOutputVRF . certifiedOutput . bheaderEta . bhbody . bheader diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/WitVKeys.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/WitVKeys.hs deleted file mode 100644 index 177e0e7035a..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/Shelley/WitVKeys.hs +++ /dev/null @@ -1,46 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Shelley.WitVKeys ( - tests, -) -where - -import Cardano.Ledger.Core (EraIndependentTxBody) -import qualified Cardano.Ledger.Crypto as CC (Crypto) -import Cardano.Ledger.Keys (DSignable, Hash) -import Cardano.Ledger.SafeHash (SafeHash) -import Data.List (nub, sort) -import Data.Set as Set (fromList, singleton) -import Test.Cardano.Ledger.Core.KeyPair (mkWitnessVKey) -import Test.Cardano.Ledger.Shelley.Serialisation.EraIndepGenerators () -import Test.Cardano.Ledger.Shelley.Utils (RawSeed, mkKeyPair') -import Test.QuickCheck (conjoin, (===), (==>)) -import Test.Tasty (TestTree) -import Test.Tasty.QuickCheck (testProperty) -import qualified Test.Tasty.QuickCheck as TQC - -tests :: - forall c. - (CC.Crypto c, DSignable c (Hash c EraIndependentTxBody)) => - TestTree -tests = testProperty "WitVKey does not brake containers due to invalid Ord" $ witVKeysProp @c - -witVKeysProp :: - forall c. - (CC.Crypto c, DSignable c (Hash c EraIndependentTxBody)) => - RawSeed -> - SafeHash c EraIndependentTxBody -> - SafeHash c EraIndependentTxBody -> - TQC.Property -witVKeysProp seed h1 h2 = - let kp = mkKeyPair' seed - w1 = mkWitnessVKey h1 kp - w2 = mkWitnessVKey h2 kp - in conjoin - [ sort [w1, w2] === sort [w2, w1] - , length (nub [w1, w2]) === length (Set.fromList [w1, w2]) - , w1 /= w2 ==> length (Set.singleton w1 <> Set.singleton w2) === 2 - ] diff --git a/eras/shelley/test-suite/src/Test/Cardano/Ledger/TerseTools.hs b/eras/shelley/test-suite/src/Test/Cardano/Ledger/TerseTools.hs deleted file mode 100644 index 0dfccb64f9f..00000000000 --- a/eras/shelley/test-suite/src/Test/Cardano/Ledger/TerseTools.hs +++ /dev/null @@ -1,113 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE UndecidableInstances #-} - --- | This module suppies tools to tersely describe the differences between 2 values of the same type. -module Test.Cardano.Ledger.TerseTools where - -import Cardano.Ledger.Address (Addr (..)) -import Cardano.Ledger.Coin (Coin (..), CompactForm (CompactCoin)) -import qualified Cardano.Ledger.Core as Core -import Cardano.Ledger.Credential ( - Credential (..), - Ptr (..), - StakeReference (..), - ) -import qualified Cardano.Ledger.Crypto as CC -import Cardano.Ledger.Era (Era) -import Cardano.Ledger.Hashes (ScriptHash (..)) -import Cardano.Ledger.Keys (KeyHash (..)) -import Cardano.Ledger.SafeHash (extractHash) -import Cardano.Ledger.Shelley.LedgerState (IncrementalStake (..)) -import Cardano.Ledger.TxIn (TxId (..), TxIn (..)) -import Cardano.Ledger.UTxO (UTxO (..)) -import Cardano.Slotting.Slot (SlotNo (..)) -import qualified Data.Map.Strict as Map - --- ==================================================== - -class Terse t where - terse :: t -> String - -data Case a b = OnLeft !a !b | OnRight !a !b | SameKey !a !b !b - -instance (Terse a, Terse b) => Show (Case a b) where - show (OnLeft a b) = "Left " ++ terse (a, b) - show (OnRight a b) = "Right" ++ terse (a, b) - show (SameKey a b c) = "Same " ++ terse (a, b, c) - -instance (Terse a, Terse b) => Terse (Case a b) where - terse x = show x - -instance (Terse a, Terse b) => Terse (a, b) where - terse (a, b) = "(" ++ terse a ++ ", " ++ terse b ++ ")" - -instance (Terse a, Terse b, Terse c) => Terse (a, b, c) where - terse (a, b, c) = "(" ++ terse a ++ ", " ++ terse b ++ ", " ++ terse c ++ ")" - -caseKey :: Case p b -> p -caseKey (OnLeft k _) = k -caseKey (OnRight k _) = k -caseKey (SameKey k _ _) = k - --- | we assume the lists are lexigraphically sorted -differences :: (Ord a, Eq b) => [(a, b)] -> [(a, b)] -> [Case a b] -differences [] [] = [] -differences xs [] = (map (\(a, b) -> OnLeft a b) xs) -differences [] ys = (map (\(a, b) -> OnRight a b) ys) -differences ((a1, b1) : xs) ((a2, b2) : ys) = - case compare a1 a2 of - EQ -> if b1 == b2 then differences xs ys else (SameKey a1 b1 b2) : differences xs ys - LT -> (OnLeft a1 b1) : differences xs ((a2, b2) : ys) - GT -> (OnRight a2 b2) : differences ((a1, b1) : xs) ys - -mapdiffs :: (Ord a, Eq b) => Map.Map a b -> Map.Map a b -> [Case a b] -mapdiffs mp1 mp2 = differences (Map.toAscList mp1) (Map.toAscList mp2) - -terselist :: Terse a => [Char] -> [a] -> [Char] -terselist message xs = "\n" ++ message ++ "\n" ++ unlines (map terse xs) - -terselistfilter :: Terse a => [Char] -> (a -> Bool) -> [a] -> [Char] -terselistfilter message p xs = "\n" ++ message ++ "\n" ++ unlines (map terse (filter p xs)) - -tersemap :: (Terse k, Terse a) => [Char] -> Map.Map k a -> [Char] -tersemap message mp = terselist message (Map.toAscList mp) - -tersemapfilter :: (Terse k, Terse a) => [Char] -> (a -> Bool) -> Map.Map k a -> [Char] -tersemapfilter message p mp = terselistfilter message (\(_, a) -> p a) (Map.toAscList mp) - -tersemapdiffs :: (Terse a, Terse b, Ord a, Eq b) => String -> Map.Map a b -> Map.Map a b -> [Char] -tersemapdiffs message mp1 mp2 = terselist message (mapdiffs mp1 mp2) - -instance Terse (Addr c) where - terse (Addr _net cred1 (StakeRefBase cred2)) = "Addr (" ++ terse cred1 ++ ") (" ++ terse cred2 ++ ")" - terse (Addr _net cred (StakeRefPtr ptr)) = "Addr (" ++ terse cred ++ ") (" ++ terse ptr ++ ")" - terse (Addr _net cred StakeRefNull) = "Addr (" ++ terse cred ++ ") Null" - terse (AddrBootstrap x) = "BootStrap " ++ show x - -instance Terse (Credential keyrole c) where - terse (ScriptHashObj (ScriptHash hash)) = "Script " ++ show hash - terse (KeyHashObj (KeyHash hash)) = "Key " ++ show hash - -instance Terse Ptr where - terse (Ptr (SlotNo n) i j) = "Ptr " ++ show n ++ " " ++ show i ++ " " ++ show j - -instance Terse (TxId era) where - terse (TxId safehash) = show (extractHash safehash) - -instance CC.Crypto era => Terse (TxIn era) where - terse (TxIn txid n) = "In " ++ terse txid ++ " " ++ show n - -instance Terse (Coin) where - terse (Coin n) = show n - -instance Terse (CompactForm Coin) where - terse (CompactCoin n) = show n - -tersediffincremental :: String -> IncrementalStake c -> IncrementalStake c -> String -tersediffincremental message (IStake a b) (IStake c d) = - tersemapdiffs (message ++ " " ++ "hashes") a c - ++ tersemapdiffs (message ++ " " ++ "ptrs") b d - -terseutxo :: (Era era, Terse (Core.TxOut era)) => String -> UTxO era -> String -terseutxo message (UTxO mp) = terselist message (Map.toList mp) diff --git a/eras/shelley/test-suite/test/Golden/ShelleyGenesis b/eras/shelley/test-suite/test/Golden/ShelleyGenesis deleted file mode 100644 index 2cc2f156472..00000000000 --- a/eras/shelley/test-suite/test/Golden/ShelleyGenesis +++ /dev/null @@ -1,93 +0,0 @@ -{ - "maxKESEvolutions": 28899, - "updateQuorum": 16991, - "protocolParams": { - "extraEntropy": { - "tag": "NeutralNonce" - }, - "maxBlockHeaderSize": 17569, - "poolDeposit": 0, - "minUTxOValue": 0, - "minFeeB": 0, - "a0": 0.0, - "minPoolCost": 0, - "rho": 0.0, - "tau": 0.0, - "nOpt": 100, - "protocolVersion": { - "minor": 0, - "major": 2 - }, - "eMax": 0, - "keyDeposit": 0, - "decentralisationParam": 1.9e-2, - "maxTxSize": 2048, - "maxBlockBodySize": 239857, - "minFeeA": 0 - }, - "slotsPerKESPeriod": 8541, - "genDelegs": { - "38e7c5986a34f334e19b712c0aa525146dab8f0ff889b2ad16894241": { - "vrf": "fce31c6f3187531ee4a39aa743c24d22275f415a8895e9cd22c30c8a25cdef0d", - "delegate": "e6960dd671ee8d73de1a83d1345b661165dcddeba99623beef2f157a" - } - }, - "staking": { - "stake": { - "83a192dec0e8da2188e520d0c536a69a747cf173a3df16a6daa94d86": "649eda82bf644d34a6925f24ea4c4c36d27e51de1b44ef47e3560be7" - }, - "pools": { - "f583a45e4947c102091b96170ef50ef0cf8edb62666193a2163247bb": { - "rewardAccount": { - "network": "Testnet", - "credential": { - "keyHash": "4e88cc2d27c364aaf90648a87dfb95f8ee103ba67fa1f12f5e86c42a" - } - }, - "relays": [ - { - "single host address": { - "port": 1234, - "IPv6": "2001:db8:a::123", - "IPv4": "0.0.0.0" - } - }, - { - "single host name": { - "port": null, - "dnsName": "cool.domain.com" - } - }, - { - "multi host name": { - "dnsName": "cool.domain.com" - } - } - ], - "vrf": "68f9cfd33ac8f044facc664db5aa1b73c0b0f5435b85e7b520bb2f1a92f02999", - "publicKey": "4e130c0bdeb7768edf2e8f85007fd52073e3dc1871f4c47f9dfca92e", - "pledge": 1, - "cost": 5, - "margin": 0.25, - "metadata": { - "hash": "31303061627b7d31303061627b7d", - "url": "best.pool.com" - }, - "owners": [ - "4e88cc2d27c364aaf90648a87dfb95f8ee103ba67fa1f12f5e86c42a" - ] - } - } - }, - "networkMagic": 4036000900, - "maxLovelaceSupply": 71, - "systemStart": "2009-02-13T23:13:09Z", - "epochLength": 1215, - "networkId": "Testnet", - "slotLength": 8, - "activeSlotsCoeff": 0.259, - "securityParam": 120842, - "initialFunds": { - "00e1bade2ab9465a24fd5eaa4b7388303917338f853a48b11a5fc9964af5ca93fb6516ebde3d150b3e2acb1909532730de33832ffb229cb20d": 12157196 - } -} \ No newline at end of file diff --git a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples.hs b/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples.hs deleted file mode 100644 index 7c594fbf88a..00000000000 --- a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples.hs +++ /dev/null @@ -1,39 +0,0 @@ -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Shelley.Examples ( - CHAINExample (..), - testCHAINExample, -) -where - -import Cardano.Ledger.Block (Block) -import Cardano.Ledger.Shelley () -import Cardano.Ledger.Shelley.Scripts () -import Cardano.Protocol.TPraos.BHeader (BHeader) -import Control.State.Transition.Extended hiding (Assertion) -import Data.List.NonEmpty (NonEmpty) -import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes (C, C_Crypto) -import Test.Cardano.Ledger.Shelley.Rules.Chain (CHAIN, ChainState, totalAda) -import Test.Cardano.Ledger.Shelley.TreeDiff (expectExprEqual) -import Test.Cardano.Ledger.Shelley.Utils (applySTSTest, maxLLSupply, runShelleyBase) -import Test.Control.State.Transition.Trace (checkTrace, (.-), (.->>)) -import Test.Tasty.HUnit (Assertion, (@?=)) - -data CHAINExample h era = CHAINExample - { startState :: ChainState era - -- ^ State to start testing with - , newBlock :: Block h era - -- ^ Block to run chain state transition system on - , intendedResult :: Either (NonEmpty (PredicateFailure (CHAIN era))) (ChainState era) - -- ^ type of fatal error, if failure expected and final chain state if success expected - } - --- | Runs example, applies chain state transition system rule (STS), --- and checks that trace ends with expected state or expected error. -testCHAINExample :: CHAINExample (BHeader C_Crypto) C -> Assertion -testCHAINExample (CHAINExample initSt block (Right expectedSt)) = do - (checkTrace @(CHAIN C) runShelleyBase () $ pure initSt .- block .->> expectedSt) - >> expectExprEqual (totalAda expectedSt) maxLLSupply -testCHAINExample (CHAINExample initSt block predicateFailure@(Left _)) = do - let st = runShelleyBase $ applySTSTest @(CHAIN C) (TRC ((), initSt, block)) - st @?= predicateFailure diff --git a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/Combinators.hs b/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/Combinators.hs deleted file mode 100644 index c4ef2649d99..00000000000 --- a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/Combinators.hs +++ /dev/null @@ -1,832 +0,0 @@ -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} - --- | --- Module : Test.Cardano.Ledger.Shelley.Examples.Combinators --- Description : Chain State Combinators --- --- A collection of combinators for manipulating Chain State. --- The idea is to provide a clear way of describing the --- changes to the chain state when a block is processed. -module Test.Cardano.Ledger.Shelley.Examples.Combinators ( - evolveNonceFrozen, - evolveNonceUnfrozen, - newLab, - feesAndKeyRefund, - feesAndDeposits, - newUTxO, - newStakeCred, - deregStakeCred, - delegation, - newPool, - reregPool, - updatePoolParams, - stageRetirement, - reapPool, - mir, - applyMIR, - rewardUpdate, - pulserUpdate, - applyRewardUpdate, - setPoolDistr, - setOCertCounter, - newSnapshot, - incrBlockCount, - newEpoch, - setCurrentProposals, - setFutureProposals, - setPParams, - setPrevPParams, - setFutureGenDeleg, - adoptFutureGenDeleg, -) -where - -import Cardano.Ledger.Address (RewardAccount (..)) -import Cardano.Ledger.BaseTypes ( - BlocksMade (..), - Nonce (..), - StrictMaybe (..), - (⭒), - ) -import Cardano.Ledger.Block ( - Block (..), - bheader, - ) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Credential ( - Credential (..), - Ptr, - ) -import Cardano.Ledger.EpochBoundary (SnapShot, SnapShots (..), calculatePoolDistr) -import Cardano.Ledger.Keys ( - GenDelegPair, - GenDelegs (..), - KeyHash, - KeyRole (..), - ) -import Cardano.Ledger.PoolDistr (PoolDistr (..)) -import Cardano.Ledger.PoolParams (PoolParams (..)) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState ( - AccountState (..), - CertState (..), - DState (..), - EpochState (..), - FutureGenDeleg (..), - InstantaneousRewards (..), - LedgerState (..), - NewEpochState (..), - PState (..), - PulsingRewUpdate (..), - RewardUpdate (..), - UTxOState (..), - applyRUpd, - curPParamsEpochStateL, - delegations, - prevPParamsEpochStateL, - rewards, - updateStakeDistribution, - ) -import Cardano.Ledger.Shelley.PParams (ProposedPPUpdates) -import Cardano.Ledger.Shelley.Rules (emptyInstantaneousRewards) -import Cardano.Ledger.UMap ( - RDPair (..), - UView (PtrUView, RewDepUView, SPoolUView), - fromCompact, - unUView, - ) -import qualified Cardano.Ledger.UMap as UM -import Cardano.Ledger.UTxO (UTxO (..), txins, txouts) -import Cardano.Ledger.Val ((<+>), (<->), (<×>)) -import Cardano.Protocol.TPraos.BHeader ( - BHBody (..), - BHeader, - LastAppliedBlock (..), - bhHash, - bhbody, - lastAppliedHash, - prevHashToNonce, - ) -import Cardano.Slotting.Slot (EpochNo, WithOrigin (..)) -import Data.Default.Class (Default (..)) -import Data.Foldable (fold, foldl') -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import qualified Data.Set as Set -import Data.Word (Word64) -import Lens.Micro ((&), (.~), (^.)) -import Lens.Micro.Extras (view) -import Test.Cardano.Ledger.Shelley.Rules.Chain (ChainState (..)) -import Test.Cardano.Ledger.Shelley.Utils (epochFromSlotNo, getBlockNonce) - --- ====================================================== - --- | = Evolve Nonces - Frozen --- --- Evolve the appropriate nonces under the assumption --- that the candidate nonce is now frozen. -evolveNonceFrozen :: forall era. Nonce -> ChainState era -> ChainState era -evolveNonceFrozen n cs = cs {chainEvolvingNonce = chainEvolvingNonce cs ⭒ n} - --- | = Evolve Nonces - Unfrozen --- --- Evolve the appropriate nonces under the assumption --- that the candidate nonce is not frozen. --- Note: do not use this function when crossing the epoch boundary, --- instead use 'newEpoch'. -evolveNonceUnfrozen :: forall era. Nonce -> ChainState era -> ChainState era -evolveNonceUnfrozen n cs = - cs - { chainCandidateNonce = chainCandidateNonce cs ⭒ n - , chainEvolvingNonce = chainEvolvingNonce cs ⭒ n - } - --- | = New 'LastAppliedBlock' (*NOT* on epoch boundaries) --- --- Update the chain state with the details of 'LastAppliedBlock' --- that occur when a new block is processed. --- Note: do not use this function when crossing the epoch boundary, --- instead use 'newEpoch'. -newLab :: - forall era. - Era era => - Block (BHeader (EraCrypto era)) era -> - ChainState era -> - ChainState era -newLab b cs = - cs {chainLastAppliedBlock = At $ LastAppliedBlock bn sn (bhHash bh)} - where - bh = bheader b - bn = bheaderBlockNo . bhbody $ bh - sn = bheaderSlotNo . bhbody $ bh - --- | = Update Fees and Deposits --- --- Update the fee pot and deposit pot with the new fees and deposits --- adjust the deposit tables in the UTxOState and the CertState. --- Notes --- 1) do not give this function duplicates in the 'stakes' or 'pools' inputs. --- 2) do not use this function when crossing the epoch boundary, --- instead use 'newEpoch'. -feesAndDeposits :: - forall era. - EraPParams era => - PParams era -> - Coin -> - [Credential 'Staking (EraCrypto era)] -> - [PoolParams (EraCrypto era)] -> - ChainState era -> - ChainState era -feesAndDeposits ppEx newFees stakes pools cs = cs {chainNes = nes'} - where - nes = chainNes cs - es = nesEs nes - ls = esLState es - CertState vstate pstate dstate = lsCertState ls - utxoSt = lsUTxOState ls - utxoSt' = - utxoSt - { utxosDeposited = - utxosDeposited utxoSt - <+> (length stakes <×> ppEx ^. ppKeyDepositL) - <+> (newcount <×> ppEx ^. ppPoolDepositL) - , utxosFees = utxosFees utxoSt <+> newFees - } - ls' = ls {lsUTxOState = utxoSt', lsCertState = dpstate'} - -- Count the number of new pools, because we don't take a deposit for existing pools - -- This strategy DOES NOT WORK if there are duplicate PoolParams in one call - newcount = foldl' accum 0 pools - accum n x = if Map.member (ppId x) (psDeposits pstate) then (n :: Integer) else n + 1 - newDeposits = - Map.fromList (map (\cred -> (cred, UM.compactCoinOrError (ppEx ^. ppKeyDepositL))) stakes) - newPools = Map.fromList (map (\p -> (ppId p, ppEx ^. ppPoolDepositL)) pools) - dpstate' = - CertState - vstate - pstate {psDeposits = Map.unionWith (\old _new -> old) newPools (psDeposits pstate)} - dstate {dsUnified = UM.unionKeyDeposits (RewDepUView (dsUnified dstate)) newDeposits} - es' = es {esLState = ls'} - nes' = nes {nesEs = es'} - -feesAndKeyRefund :: - forall era. - Coin -> - Credential 'Staking (EraCrypto era) -> - ChainState era -> - ChainState era -feesAndKeyRefund newFees key cs = cs {chainNes = nes'} - where - nes = chainNes cs - es = nesEs nes - ls = esLState es - CertState _vstate pstate dstate = lsCertState ls - refund = case UM.lookup key (RewDepUView (dsUnified dstate)) of - Nothing -> Coin 0 - Just (RDPair _ ccoin) -> fromCompact ccoin - utxoSt = lsUTxOState ls - utxoSt' = - utxoSt - { utxosDeposited = utxosDeposited utxoSt <-> refund - , utxosFees = utxosFees utxoSt <+> newFees - } - ls' = ls {lsUTxOState = utxoSt', lsCertState = dpstate'} - es' = es {esLState = ls'} - nes' = nes {nesEs = es'} - dpstate' = CertState def pstate dstate {dsUnified = UM.adjust zeroD key (RewDepUView (dsUnified dstate))} - zeroD (RDPair x _) = RDPair x (UM.CompactCoin 0) - --- | = Update the UTxO --- --- Update the UTxO for given transaction body. -newUTxO :: - forall era. - (EraTx era, EraGov era) => - TxBody era -> - ChainState era -> - ChainState era -newUTxO txb cs = cs {chainNes = nes'} - where - nes = chainNes cs - es = nesEs nes - ls = esLState es - utxoSt = lsUTxOState ls - utxo = unUTxO $ utxosUtxo utxoSt - utxoAdd = txouts @era txb - utxoToDel = Map.restrictKeys utxo (txins @era txb) - utxoWithout = Map.withoutKeys utxo (txins @era txb) - utxoDel = UTxO utxoToDel - utxo' = UTxO (utxoWithout `Map.union` unUTxO utxoAdd) - sd' = - updateStakeDistribution @era (es ^. curPParamsEpochStateL) (utxosStakeDistr utxoSt) utxoDel utxoAdd - utxoSt' = utxoSt {utxosUtxo = utxo', utxosStakeDistr = sd'} - ls' = ls {lsUTxOState = utxoSt'} - es' = es {esLState = ls'} - nes' = nes {nesEs = es'} - --- | = New Stake Credential --- --- Add a newly registered stake credential, initialize the rdRewards component of the RDPair. --- The rdDeposit component of the RDPair is set by 'feesAndDeposits' -newStakeCred :: - forall era. - Credential 'Staking (EraCrypto era) -> - Ptr -> - ChainState era -> - ChainState era -newStakeCred cred ptr cs = cs {chainNes = nes'} - where - nes = chainNes cs - es = nesEs nes - ls = esLState es - dps = lsCertState ls - ds = certDState dps - ds' = - ds - { dsUnified = - let um0 = dsUnified ds - um1 = UM.insert cred (UM.RDPair (UM.CompactCoin 0) (UM.CompactCoin 0)) (RewDepUView um0) - um2 = (PtrUView um1 UM.∪ (ptr, cred)) - in um2 - } - dps' = dps {certDState = ds'} - ls' = ls {lsCertState = dps'} - es' = es {esLState = ls'} - nes' = nes {nesEs = es'} - --- | = De-Register Stake Credential --- --- De-register a stake credential and all associated data. --- Be sure to run 'feesAndKeyRefund' before you run this --- because this throws away the stored refund, which then --- can't be used to balance the utxosDeposited field in 'feesAndKeyRefund' -deregStakeCred :: - forall era. - Credential 'Staking (EraCrypto era) -> - ChainState era -> - ChainState era -deregStakeCred cred cs = cs {chainNes = nes'} - where - nes = chainNes cs - es = nesEs nes - ls = esLState es - dps = lsCertState ls - ds = certDState dps - ds' = - ds - { dsUnified = - let um0 = dsUnified ds - um1 = UM.delete cred (RewDepUView um0) - um2 = PtrUView um1 UM.⋫ Set.singleton cred - um3 = UM.delete cred (SPoolUView um2) - in um3 - } - dps' = dps {certDState = ds'} - ls' = ls {lsCertState = dps'} - es' = es {esLState = ls'} - nes' = nes {nesEs = es'} - --- | = New Delegation --- --- Create a delegation from the given stake credential to the given --- stake pool. -delegation :: - forall era. - Credential 'Staking (EraCrypto era) -> - KeyHash 'StakePool (EraCrypto era) -> - ChainState era -> - ChainState era -delegation cred pool cs = cs {chainNes = nes'} - where - nes = chainNes cs - es = nesEs nes - ls = esLState es - dps = lsCertState ls - ds = certDState dps - ds' = - ds - { dsUnified = UM.insert cred pool (delegations ds) - } - dps' = dps {certDState = ds'} - ls' = ls {lsCertState = dps'} - es' = es {esLState = ls'} - nes' = nes {nesEs = es'} - --- | = New Stake Pool --- --- Add a newly registered stake pool -newPool :: - forall era. - PoolParams (EraCrypto era) -> - ChainState era -> - ChainState era -newPool pool cs = cs {chainNes = nes'} - where - nes = chainNes cs - es = nesEs nes - ls = esLState es - dps = lsCertState ls - ps = certPState dps - ps' = - ps - { psStakePoolParams = Map.insert (ppId pool) pool (psStakePoolParams ps) - } - dps' = dps {certPState = ps'} - ls' = ls {lsCertState = dps'} - es' = es {esLState = ls'} - nes' = nes {nesEs = es'} - --- | = Re-Register Stake Pool -reregPool :: - forall era. - PoolParams (EraCrypto era) -> - ChainState era -> - ChainState era -reregPool pool cs = cs {chainNes = nes'} - where - nes = chainNes cs - es = nesEs nes - ls = esLState es - dps = lsCertState ls - ps = certPState dps - ps' = - ps - { psFutureStakePoolParams = Map.insert (ppId pool) pool (psStakePoolParams ps) - } - dps' = dps {certPState = ps'} - ls' = ls {lsCertState = dps'} - es' = es {esLState = ls'} - nes' = nes {nesEs = es'} - --- | = Re-Register Stake Pool -updatePoolParams :: - forall era. - PoolParams (EraCrypto era) -> - ChainState era -> - ChainState era -updatePoolParams pool cs = cs {chainNes = nes'} - where - nes = chainNes cs - es = nesEs nes - ls = esLState es - dps = lsCertState ls - ps = certPState dps - ps' = - ps - { psStakePoolParams = Map.insert (ppId pool) pool (psStakePoolParams ps) - , psFutureStakePoolParams = Map.delete (ppId pool) (psStakePoolParams ps) - } - dps' = dps {certPState = ps'} - ls' = ls {lsCertState = dps'} - es' = es {esLState = ls'} - nes' = nes {nesEs = es'} - --- | = Pool Retirement --- --- Stage a stake pool for retirement. -stageRetirement :: - forall era. - KeyHash 'StakePool (EraCrypto era) -> - EpochNo -> - ChainState era -> - ChainState era -stageRetirement kh e cs = cs {chainNes = nes'} - where - nes = chainNes cs - es = nesEs nes - ls = esLState es - dps = lsCertState ls - ps = certPState dps - ps' = ps {psRetiring = Map.insert kh e (psRetiring ps)} - dps' = dps {certPState = ps'} - ls' = ls {lsCertState = dps'} - es' = es {esLState = ls'} - nes' = nes {nesEs = es'} - --- | = Reap Pool --- --- Remove a stake pool. -reapPool :: - forall era. - EraGov era => - PoolParams (EraCrypto era) -> - ChainState era -> - ChainState era -reapPool pool cs = cs {chainNes = nes'} - where - kh = ppId pool - nes = chainNes cs - es = nesEs nes - ls = esLState es - dps = lsCertState ls - ps = certPState dps - ps' = - ps - { psRetiring = Map.delete kh (psRetiring ps) - , psStakePoolParams = Map.delete kh (psStakePoolParams ps) - , psDeposits = Map.delete kh (psDeposits ps) - } - pp = es ^. curPParamsEpochStateL - ds = certDState dps - RewardAccount _ rewardAddr = ppRewardAccount pool - (rewards', unclaimed) = - case UM.lookup rewardAddr (rewards ds) of - Nothing -> (rewards ds, pp ^. ppPoolDepositL) - Just (UM.RDPair ccoin dep) -> - ( UM.insert' - rewardAddr - (UM.RDPair (UM.addCompact ccoin (UM.compactCoinOrError (pp ^. ppPoolDepositL))) dep) - (rewards ds) - , Coin 0 - ) - -- FIXME shouldn't we look up the pooldeposit here? - umap1 = unUView rewards' - umap2 = UM.SPoolUView umap1 UM.⋫ Set.singleton kh - ds' = ds {dsUnified = umap2} - as = esAccountState es - as' = as {asTreasury = asTreasury as <+> unclaimed} - utxoSt = lsUTxOState ls - utxoSt' = utxoSt {utxosDeposited = utxosDeposited utxoSt <-> (pp ^. ppPoolDepositL)} - dps' = dps {certPState = ps', certDState = ds'} - ls' = ls {lsCertState = dps', lsUTxOState = utxoSt'} - es' = es {esLState = ls', esAccountState = as'} - nes' = nes {nesEs = es'} - --- | = MIR --- --- Add a credential to the MIR mapping for the given pot (reserves or treasury) -mir :: - forall era. - Credential 'Staking (EraCrypto era) -> - MIRPot -> - Coin -> - ChainState era -> - ChainState era -mir cred pot amnt cs = cs {chainNes = nes'} - where - nes = chainNes cs - es = nesEs nes - ls = esLState es - dps = lsCertState ls - ds = certDState dps - InstantaneousRewards - { iRReserves = ir - , iRTreasury = it - , deltaReserves = dr - , deltaTreasury = dt - } = dsIRewards ds - irwd' = case pot of - ReservesMIR -> InstantaneousRewards (Map.insert cred amnt ir) it dr dt - TreasuryMIR -> InstantaneousRewards ir (Map.insert cred amnt it) dr dt - ds' = ds {dsIRewards = irwd'} - dps' = dps {certDState = ds'} - ls' = ls {lsCertState = dps'} - es' = es {esLState = ls'} - nes' = nes {nesEs = es'} - --- | = Apply MIR --- --- On the epoch boundary, reset the MIR mappings and augment the rewards. -applyMIR :: - forall era. - MIRPot -> - Map (Credential 'Staking (EraCrypto era)) Coin -> - ChainState era -> - ChainState era -applyMIR pot newrewards cs = cs {chainNes = nes'} - where - tot = fold newrewards - nes = chainNes cs - es = nesEs nes - ls = esLState es - dps = lsCertState ls - ds = certDState dps - ds' = - ds - { dsUnified = rewards ds UM.∪+ Map.map UM.compactCoinOrError newrewards - , dsIRewards = emptyInstantaneousRewards - } - dps' = dps {certDState = ds'} - ls' = ls {lsCertState = dps'} - as = esAccountState es - as' = - if pot == ReservesMIR - then as {asReserves = asReserves as <-> tot} - else as {asTreasury = asTreasury as <-> tot} - es' = es {esAccountState = as', esLState = ls'} - nes' = nes {nesEs = es'} - --- | = Reward Update --- --- Update the chain state with the given reward update -rewardUpdate :: - forall era. - RewardUpdate (EraCrypto era) -> - ChainState era -> - ChainState era -rewardUpdate ru cs = cs {chainNes = nes'} - where - nes' = (chainNes cs) {nesRu = SJust (Complete ru)} - --- | = Pulser --- --- Update the chain state with the given reward update pulser -pulserUpdate :: - forall era. - PulsingRewUpdate (EraCrypto era) -> - ChainState era -> - ChainState era -pulserUpdate p cs = cs {chainNes = nes'} - where - nes' = (chainNes cs) {nesRu = SJust p} - --- | = Apply a Reward Update --- --- Apply the given reward update to the chain state -applyRewardUpdate :: - forall era. - EraGov era => - RewardUpdate (EraCrypto era) -> - ChainState era -> - ChainState era -applyRewardUpdate ru cs = cs {chainNes = nes'} - where - nes = chainNes cs - es' = applyRUpd ru (nesEs nes) - nes' = (chainNes cs) {nesEs = es', nesRu = SNothing} - --- | = New Snapshot --- --- Add a new snapshot and rotate the others -newSnapshot :: - forall era. - SnapShot (EraCrypto era) -> - Coin -> - ChainState era -> - ChainState era -newSnapshot snap fee cs = cs {chainNes = nes'} - where - nes = chainNes cs - es = nesEs nes - SnapShots - { ssStakeMark = ssMark - , ssStakeSet = ssSet - } = esSnapshots es - snaps = - SnapShots - { ssStakeMark = snap - , ssStakeMarkPoolDistr = calculatePoolDistr snap - , ssStakeSet = ssMark - , ssStakeGo = ssSet - , ssFee = fee - } - es' = es {esSnapshots = snaps} - nes' = nes {nesEs = es'} - --- | = Set Pool Distribution --- --- Set the stake pool distribution to the given one. -setPoolDistr :: - forall era. - PoolDistr (EraCrypto era) -> - ChainState era -> - ChainState era -setPoolDistr pd cs = cs {chainNes = nes'} - where - nes' = (chainNes cs) {nesPd = pd} - --- | = Set Operation Certificate Counter --- --- Set the operational certificates counter for a given stake pool. -setOCertCounter :: - forall era. - KeyHash 'BlockIssuer (EraCrypto era) -> - Word64 -> - ChainState era -> - ChainState era -setOCertCounter kh n cs = cs {chainOCertIssue = counters} - where - counters = Map.insert kh n (chainOCertIssue cs) - --- | = Increase Block Count --- --- Record that the given stake pool (non-core node) produced a block. -incrBlockCount :: - forall era. - KeyHash 'StakePool (EraCrypto era) -> - ChainState era -> - ChainState era -incrBlockCount kh cs = cs {chainNes = nes'} - where - nes = chainNes cs - BlocksMade bs = nesBcur nes - n = 1 + Map.findWithDefault 0 kh bs - bs' = BlocksMade $ Map.insert kh n bs - nes' = nes {nesBcur = bs'} - --- | = New Epoch --- --- Update the new epoch number, set the nonces, set the last applied block, --- and reset blocks made. --- Note: This function subsumes the manipulations done by --- 'newLab', 'evolveNonceUnfrozen', and 'evolveNonceFrozen'. -newEpoch :: - forall era. - (ProtVerAtMost era 6, EraGov era) => - Block (BHeader (EraCrypto era)) era -> - ChainState era -> - ChainState era -newEpoch b cs = cs' - where - ChainState - { chainNes = nes - , chainEvolvingNonce = evNonce - , chainCandidateNonce = cNonce - , chainPrevEpochNonce = pNonce - , chainLastAppliedBlock = lab - } = cs - bh = bheader b - bn = bheaderBlockNo . bhbody $ bh - sn = bheaderSlotNo . bhbody $ bh - pp = view curPParamsEpochStateL . nesEs $ nes - e = epochFromSlotNo . bheaderSlotNo . bhbody . bheader $ b - nes' = - nes - { nesEL = e - , nesBprev = nesBcur nes - , nesBcur = BlocksMade Map.empty - } - n = getBlockNonce b - cs' = - cs - { chainNes = nes' - , chainEpochNonce = cNonce ⭒ pNonce ⭒ (pp ^. ppExtraEntropyL) - , chainEvolvingNonce = evNonce ⭒ n - , chainCandidateNonce = evNonce ⭒ n - , chainPrevEpochNonce = prevHashToNonce . lastAppliedHash $ lab - , chainLastAppliedBlock = At $ LastAppliedBlock bn sn (bhHash bh) - } - --- | = Set Current Proposals --- --- Set the current protocol parameter proposals. -setCurrentProposals :: - forall era. - GovState era ~ ShelleyGovState era => - ProposedPPUpdates era -> - ChainState era -> - ChainState era -setCurrentProposals ps cs = cs {chainNes = nes'} - where - nes = chainNes cs - es = nesEs nes - ls = esLState es - utxoSt = lsUTxOState ls - ppupSt = utxosGovState utxoSt - ppupSt' = ppupSt {sgsCurProposals = ps} - utxoSt' = utxoSt {utxosGovState = ppupSt'} - ls' = ls {lsUTxOState = utxoSt'} - es' = es {esLState = ls'} - nes' = nes {nesEs = es'} - --- | = Set Future Proposals --- --- Set the future protocol parameter proposals. -setFutureProposals :: - forall era. - GovState era ~ ShelleyGovState era => - ProposedPPUpdates era -> - ChainState era -> - ChainState era -setFutureProposals ps cs = cs {chainNes = nes'} - where - nes = chainNes cs - es = nesEs nes - ls = esLState es - utxoSt = lsUTxOState ls - ppupSt = utxosGovState utxoSt - ppupSt' = ppupSt {sgsFutureProposals = ps} - utxoSt' = utxoSt {utxosGovState = ppupSt'} - ls' = ls {lsUTxOState = utxoSt'} - es' = es {esLState = ls'} - nes' = nes {nesEs = es'} - --- | = Set the Protocol Proposals --- --- Set the protocol parameters. -setPParams :: - forall era. - EraGov era => - PParams era -> - ChainState era -> - ChainState era -setPParams pp cs = cs {chainNes = nes'} - where - nes = chainNes cs - es = nesEs nes - es' = es & curPParamsEpochStateL .~ pp - nes' = nes {nesEs = es'} - --- | = Set the Previous Protocol Proposals --- --- Set the previous protocol parameters. -setPrevPParams :: - forall era. - EraGov era => - PParams era -> - ChainState era -> - ChainState era -setPrevPParams pp cs = cs {chainNes = nes'} - where - nes = chainNes cs - es = nesEs nes - es' = es & prevPParamsEpochStateL .~ pp - nes' = nes {nesEs = es'} - --- | = Set a future genesis delegation. -setFutureGenDeleg :: - forall era. - (FutureGenDeleg (EraCrypto era), GenDelegPair (EraCrypto era)) -> - ChainState era -> - ChainState era -setFutureGenDeleg (fg, gd) cs = cs {chainNes = nes'} - where - nes = chainNes cs - es = nesEs nes - ls = esLState es - dps = lsCertState ls - ds = certDState dps - ds' = ds {dsFutureGenDelegs = Map.insert fg gd (dsFutureGenDelegs ds)} - dps' = dps {certDState = ds'} - ls' = ls {lsCertState = dps'} - es' = es {esLState = ls'} - nes' = nes {nesEs = es'} - --- | = Set a future genesis delegation. -adoptFutureGenDeleg :: - forall era. - (FutureGenDeleg (EraCrypto era), GenDelegPair (EraCrypto era)) -> - ChainState era -> - ChainState era -adoptFutureGenDeleg (fg, gd) cs = cs {chainNes = nes'} - where - nes = chainNes cs - es = nesEs nes - ls = esLState es - dps = lsCertState ls - ds = certDState dps - gds = GenDelegs $ Map.insert (fGenDelegGenKeyHash fg) gd (unGenDelegs (dsGenDelegs ds)) - ds' = - ds - { dsFutureGenDelegs = Map.delete fg (dsFutureGenDelegs ds) - , dsGenDelegs = gds - } - dps' = dps {certDState = ds'} - ls' = ls {lsCertState = dps'} - es' = es {esLState = ls'} - nes' = nes {nesEs = es'} diff --git a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/EmptyBlock.hs b/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/EmptyBlock.hs deleted file mode 100644 index 858c62ae276..00000000000 --- a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/EmptyBlock.hs +++ /dev/null @@ -1,118 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Shelley.Examples.EmptyBlock ( - exEmptyBlock, -) -where - -import Cardano.Ledger.BaseTypes (Nonce) -import Cardano.Ledger.Block (Block) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState -import Cardano.Ledger.Slot (BlockNo (..), SlotNo (..)) -import Cardano.Ledger.UTxO (UTxO (..)) -import Cardano.Protocol.TPraos.BHeader (BHeader) -import Cardano.Protocol.TPraos.OCert (KESPeriod (..)) -import Data.Default.Class -import GHC.Stack (HasCallStack) -import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes (ExMock) -import Test.Cardano.Ledger.Shelley.Examples (CHAINExample (..)) -import Test.Cardano.Ledger.Shelley.Examples.Combinators ( - evolveNonceUnfrozen, - newLab, - ) -import Test.Cardano.Ledger.Shelley.Examples.Federation (coreNodeKeysBySchedule) -import Test.Cardano.Ledger.Shelley.Examples.Init ( - initSt, - lastByronHeaderHash, - nonce0, - ppEx, - ) -import Test.Cardano.Ledger.Shelley.Generator.Core ( - NatNonce (..), - mkBlockFakeVRF, - mkOCert, - ) -import Test.Cardano.Ledger.Shelley.Rules.Chain (ChainState (..)) -import Test.Cardano.Ledger.Shelley.Utils (getBlockNonce) - --- ============================================================= - -initStEx1 :: - ( EraTxOut era - , ProtVerAtMost era 4 - , ProtVerAtMost era 6 - , Default (StashedAVVMAddresses era) - , EraGov era - ) => - ChainState era -initStEx1 = initSt (UTxO mempty) - -blockEx1 :: - forall era. - ( HasCallStack - , EraSegWits era - , ExMock (EraCrypto era) - , ProtVerAtMost era 4 - , ProtVerAtMost era 6 - ) => - Block (BHeader (EraCrypto era)) era -blockEx1 = - mkBlockFakeVRF - lastByronHeaderHash - (coreNodeKeysBySchedule @era ppEx 10) - [] - (SlotNo 10) - (BlockNo 1) - (nonce0 @(EraCrypto era)) - (NatNonce 1) - minBound - 0 - 0 - (mkOCert (coreNodeKeysBySchedule @era ppEx 10) 0 (KESPeriod 0)) - -blockNonce :: - forall era. - ( HasCallStack - , EraSegWits era - , ExMock (EraCrypto era) - , ProtVerAtMost era 4 - , ProtVerAtMost era 6 - ) => - Nonce -blockNonce = getBlockNonce (blockEx1 @era) - -expectedStEx1 :: - forall era. - ( EraSegWits era - , ExMock (EraCrypto era) - , ProtVerAtMost era 4 - , ProtVerAtMost era 6 - , EraGov era - , Default (StashedAVVMAddresses era) - ) => - ChainState era -expectedStEx1 = evolveNonceUnfrozen (blockNonce @era) . newLab blockEx1 $ initStEx1 - --- | = Empty Block Example --- --- This is the most minimal example of using the CHAIN STS transition. --- It applies an empty block to an initial shelley chain state. --- --- The only things that change in the chain state are the --- evolving and candidate nonces, and the last applied block. -exEmptyBlock :: - ( ExMock (EraCrypto era) - , EraSegWits era - , ProtVerAtMost era 4 - , ProtVerAtMost era 6 - , Default (StashedAVVMAddresses era) - , EraGov era - ) => - CHAINExample (BHeader (EraCrypto era)) era -exEmptyBlock = CHAINExample initStEx1 blockEx1 (Right expectedStEx1) diff --git a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/GenesisDelegation.hs b/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/GenesisDelegation.hs deleted file mode 100644 index 9ff4148018e..00000000000 --- a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/GenesisDelegation.hs +++ /dev/null @@ -1,270 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - --- | --- Module : Test.Cardano.Ledger.Shelley.Examples.GenesisDelegation --- Description : Genesis Delegation Example --- --- Example demonstrating Genesis Delegation -module Test.Cardano.Ledger.Shelley.Examples.GenesisDelegation ( - genesisDelegExample, -) -where - -import Cardano.Crypto.DSIGN.Class (Signable) -import qualified Cardano.Crypto.Hash as Hash -import Cardano.Ledger.BaseTypes (StrictMaybe (..)) -import Cardano.Ledger.Block (Block, bheader) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Crypto -import Cardano.Ledger.Keys ( - GenDelegPair (..), - Hash, - KeyRole (..), - VerKeyVRF, - asWitness, - hashKey, - hashVerKeyVRF, - ) -import Cardano.Ledger.SafeHash (hashAnnotated) -import Cardano.Ledger.Shelley (ShelleyEra) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState -import Cardano.Ledger.Shelley.Tx (ShelleyTx (..)) -import Cardano.Ledger.Shelley.TxBody (ShelleyTxBody (..)) -import Cardano.Ledger.Shelley.TxOut (ShelleyTxOut (..)) -import Cardano.Ledger.Shelley.TxWits (ShelleyTxWits, addrWits) -import Cardano.Ledger.Slot (BlockNo (..), SlotNo (..)) -import Cardano.Ledger.TxIn (TxIn (..)) -import Cardano.Ledger.UTxO (UTxO (..)) -import Cardano.Ledger.Val ((<->)) -import qualified Cardano.Ledger.Val as Val -import Cardano.Protocol.TPraos.BHeader (BHeader, bhHash) -import Cardano.Protocol.TPraos.OCert (KESPeriod (..)) -import Data.Default.Class (Default) -import qualified Data.Map.Strict as Map -import qualified Data.Sequence.Strict as StrictSeq -import qualified Data.Set as Set -import Test.Cardano.Ledger.Core.KeyPair (KeyPair (..), mkWitnessesVKey) -import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes (ExMock) -import Test.Cardano.Ledger.Shelley.Examples (CHAINExample (..), testCHAINExample) -import qualified Test.Cardano.Ledger.Shelley.Examples.Cast as Cast -import qualified Test.Cardano.Ledger.Shelley.Examples.Combinators as C -import Test.Cardano.Ledger.Shelley.Examples.Federation ( - coreNodeKeysBySchedule, - coreNodeSK, - coreNodeVK, - ) -import Test.Cardano.Ledger.Shelley.Examples.Init ( - initSt, - lastByronHeaderHash, - nonce0, - ppEx, - ) -import Test.Cardano.Ledger.Shelley.Examples.PoolLifetime (makePulser') -import Test.Cardano.Ledger.Shelley.Generator.Core ( - NatNonce (..), - VRFKeyPair (..), - genesisCoins, - mkBlockFakeVRF, - mkOCert, - ) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (genesisId) -import Test.Cardano.Ledger.Shelley.Generator.ShelleyEraGen () -import Test.Cardano.Ledger.Shelley.Rules.Chain (ChainState (..)) -import Test.Cardano.Ledger.Shelley.Utils ( - RawSeed (..), - getBlockNonce, - mkKeyPair, - mkVRFKeyPair, - ) -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.HUnit (testCase) - -initUTxO :: EraTxOut era => UTxO era -initUTxO = - genesisCoins - genesisId - [ mkBasicTxOut Cast.aliceAddr aliceInitCoin - , mkBasicTxOut Cast.bobAddr bobInitCoin - ] - where - aliceInitCoin = Val.inject $ Coin $ 10 * 1000 * 1000 * 1000 * 1000 * 1000 - bobInitCoin = Val.inject $ Coin $ 1 * 1000 * 1000 * 1000 * 1000 * 1000 - -initStGenesisDeleg :: - ( EraTxOut era - , ProtVerAtMost era 4 - , ProtVerAtMost era 6 - , EraGov era - , Default (StashedAVVMAddresses era) - ) => - ChainState era -initStGenesisDeleg = initSt initUTxO - --- --- Block 1, Slot 10, Epoch 0 --- - -newGenDelegate :: - Crypto c => - KeyPair 'GenesisDelegate c -newGenDelegate = KeyPair vkCold skCold - where - (skCold, vkCold) = mkKeyPair (RawSeed 108 0 0 0 1) - -newGenesisVrfKH :: forall c. Crypto c => Hash c (VerKeyVRF c) -newGenesisVrfKH = hashVerKeyVRF (vrfVerKey (mkVRFKeyPair @c (RawSeed 9 8 7 6 5))) - -feeTx1 :: Coin -feeTx1 = Coin 1 - -txbodyEx1 :: forall c. Crypto c => ShelleyTxBody (ShelleyEra c) -txbodyEx1 = - ShelleyTxBody - (Set.fromList [TxIn genesisId minBound]) - (StrictSeq.singleton $ ShelleyTxOut Cast.aliceAddr aliceCoinEx1) - ( StrictSeq.fromList - [ GenesisDelegTxCert - (hashKey (coreNodeVK 0)) - (hashKey (vKey newGenDelegate)) - (newGenesisVrfKH @c) - ] - ) - (Withdrawals Map.empty) - (Coin 1) - (SlotNo 10) - SNothing - SNothing - where - aliceCoinEx1 = aliceInitCoin <-> Val.inject feeTx1 - aliceInitCoin = Val.inject $ Coin $ 10 * 1000 * 1000 * 1000 * 1000 * 1000 - -txEx1 :: - forall c. - ( Crypto c - , Signable (DSIGN c) (Hash.Hash (HASH c) EraIndependentTxBody) - ) => - ShelleyTx (ShelleyEra c) -txEx1 = ShelleyTx txbodyEx1 txwits SNothing - where - txwits :: ShelleyTxWits (ShelleyEra c) - txwits = - mempty - { addrWits = - mkWitnessesVKey @c - (hashAnnotated (txbodyEx1 @c)) - ( [asWitness Cast.alicePay] - <> [ asWitness $ - KeyPair @'Genesis @c - (coreNodeVK 0) - (coreNodeSK @c 0) - ] - ) - } - -blockEx1 :: - forall c. - ExMock (EraCrypto (ShelleyEra c)) => - Block (BHeader c) (ShelleyEra c) -blockEx1 = - mkBlockFakeVRF @(ShelleyEra c) - lastByronHeaderHash - (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 10) - [txEx1] - (SlotNo 10) - (BlockNo 1) - (nonce0 @c) - (NatNonce 1) - minBound - 0 - 0 - (mkOCert @c (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 10) 0 (KESPeriod 0)) - -newGenDeleg :: - forall c. - Crypto c => - (FutureGenDeleg c, GenDelegPair c) -newGenDeleg = - ( FutureGenDeleg (SlotNo 43) (hashKey $ coreNodeVK 0) - , GenDelegPair (hashKey . vKey $ newGenDelegate) (newGenesisVrfKH @c) - ) - -expectedStEx1 :: - forall c. - ExMock c => - ChainState (ShelleyEra c) -expectedStEx1 = - C.evolveNonceUnfrozen (getBlockNonce @(ShelleyEra c) blockEx1) - . C.newLab blockEx1 - . C.feesAndDeposits ppEx feeTx1 [] [] - . C.newUTxO txbodyEx1 - . C.setFutureGenDeleg newGenDeleg - $ initStGenesisDeleg - --- === Block 1, Slot 10, Epoch 0 --- --- In the first block, stage a new future genesis delegate -genesisDelegation1 :: - ExMock c => - CHAINExample (BHeader c) (ShelleyEra c) -genesisDelegation1 = CHAINExample initStGenesisDeleg blockEx1 (Right expectedStEx1) - --- --- Block 2, Slot 50, Epoch 0 --- - -blockEx2 :: - forall c. - ExMock (EraCrypto (ShelleyEra c)) => - Block (BHeader c) (ShelleyEra c) -blockEx2 = - mkBlockFakeVRF @(ShelleyEra c) - (bhHash $ bheader blockEx1) - (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 50) - [] - (SlotNo 50) - (BlockNo 2) - (nonce0 @c) - (NatNonce 2) - minBound - 2 - 0 - (mkOCert @c (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 50) 0 (KESPeriod 0)) - -pulserEx2 :: ExMock c => PulsingRewUpdate c -pulserEx2 = makePulser' expectedStEx1 - -expectedStEx2 :: - forall c. - ExMock c => - ChainState (ShelleyEra c) -expectedStEx2 = - C.evolveNonceUnfrozen (getBlockNonce @(ShelleyEra c) blockEx2) - . C.newLab blockEx2 - . C.adoptFutureGenDeleg newGenDeleg - . C.pulserUpdate pulserEx2 - $ expectedStEx1 - --- === Block 2, Slot 50, Epoch 0 --- --- Submit an empty block to trigger adopting the genesis delegation. -genesisDelegation2 :: ExMock c => CHAINExample (BHeader c) (ShelleyEra c) -genesisDelegation2 = CHAINExample expectedStEx1 blockEx2 (Right expectedStEx2) - --- --- Genesis Delegation Test Group --- - -genesisDelegExample :: TestTree -genesisDelegExample = - testGroup - "genesis delegation" - [ testCase "stage genesis key delegation" $ testCHAINExample genesisDelegation1 - , testCase "adopt genesis key delegation" $ testCHAINExample genesisDelegation2 - ] diff --git a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/Init.hs b/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/Init.hs deleted file mode 100644 index 799d283b686..00000000000 --- a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/Init.hs +++ /dev/null @@ -1,109 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - --- | --- Module : Test.Cardano.Ledger.Shelley.Examples.Init --- Description : Initial State for Shelley ledger examples --- --- The initial state for Shelley Ledger Examples. -module Test.Cardano.Ledger.Shelley.Examples.Init ( - ppEx, - initSt, - nonce0, - lastByronHeaderHash, -) -where - -import Cardano.Ledger.BaseTypes (EpochInterval (..), Nonce (..)) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Crypto -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState (StashedAVVMAddresses) -import Cardano.Ledger.Slot ( - BlockNo (..), - EpochNo (..), - SlotNo (..), - ) -import Cardano.Ledger.UTxO (UTxO (..), balance) -import Cardano.Ledger.Val ((<->)) -import qualified Cardano.Ledger.Val as Val -import Cardano.Protocol.TPraos.BHeader ( - HashHeader (..), - LastAppliedBlock (..), - hashHeaderToNonce, - ) -import Cardano.Slotting.Slot (WithOrigin (..)) -import Data.Default.Class -import Lens.Micro -import Test.Cardano.Ledger.Shelley.Examples.Federation (genDelegs) -import Test.Cardano.Ledger.Shelley.Rules.Chain ( - ChainState (..), - initialShelleyState, - ) -import Test.Cardano.Ledger.Shelley.Utils (maxLLSupply, mkHash, unsafeBoundRational) - --- | Initial Protocol Parameters -ppEx :: (EraPParams era, ProtVerAtMost era 4, ProtVerAtMost era 6) => PParams era -ppEx = - emptyPParams - & ppMaxBBSizeL .~ 50000 - & ppMaxBHSizeL .~ 10000 - & ppMaxTxSizeL .~ 10000 - & ppEMaxL .~ EpochInterval 10000 - & ppKeyDepositL .~ Coin 7 - & ppPoolDepositL .~ Coin 250 - & ppDL .~ unsafeBoundRational 0.5 - & ppTauL .~ unsafeBoundRational 0.2 - & ppRhoL .~ unsafeBoundRational 0.0021 - & ppMinUTxOValueL .~ Coin 100 - --- | === The hash of the last Bryon Header --- --- The first block of the Shelley era will point back to the --- last block of the Byron era. --- For our purposes in the examples we can bootstrap the chain --- by just coercing the value. --- When this transition actually occurs, --- the consensus layer will do the work of making --- sure that the hash gets translated across the fork. -lastByronHeaderHash :: - forall c. - Crypto c => - HashHeader c -lastByronHeaderHash = HashHeader $ mkHash 0 - --- | === Initial Nonce -nonce0 :: - forall c. - Crypto c => - Nonce -nonce0 = hashHeaderToNonce (lastByronHeaderHash @c) - --- | === Initial Chain State --- --- The initial state for the examples uses the function --- 'initialShelleyState' with the genesis delegation --- 'genDelegs' and any given starting 'UTxO' set. -initSt :: - forall era. - ( EraTxOut era - , ProtVerAtMost era 4 - , ProtVerAtMost era 6 - , Default (StashedAVVMAddresses era) - , EraGov era - ) => - UTxO era -> - ChainState era -initSt utxo = - initialShelleyState - (At $ LastAppliedBlock (BlockNo 0) (SlotNo 0) lastByronHeaderHash) - (EpochNo 0) - utxo - (maxLLSupply <-> Val.coin (balance utxo)) - genDelegs - (ppEx @era) - (nonce0 @(EraCrypto era)) diff --git a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/Mir.hs b/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/Mir.hs deleted file mode 100644 index 02ff7641ebf..00000000000 --- a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/Mir.hs +++ /dev/null @@ -1,396 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - --- | --- Module : Test.Cardano.Ledger.Shelley.Examples.Mir --- Description : MIR Example --- --- Example demonstrating the Move Instantaneous Rewards mechanism -module Test.Cardano.Ledger.Shelley.Examples.Mir ( - mirExample, -) -where - -import Cardano.Ledger.BaseTypes (Nonce, StrictMaybe (..), mkCertIxPartial) -import Cardano.Ledger.Block (Block, bheader) -import Cardano.Ledger.Coin (Coin (..), toDeltaCoin) -import Cardano.Ledger.Credential (Ptr (..)) -import Cardano.Ledger.Crypto -import Cardano.Ledger.EpochBoundary (emptySnapShot) -import Cardano.Ledger.Keys ( - KeyRole (..), - asWitness, - ) -import Cardano.Ledger.SafeHash (hashAnnotated) -import Cardano.Ledger.Shelley (ShelleyEra) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState ( - AccountState (..), - EpochState (..), - NewEpochState (..), - PulsingRewUpdate, - emptyRewardUpdate, - ) -import Cardano.Ledger.Shelley.Rules ( - ShelleyDelegPredFailure (..), - ShelleyUtxowPredFailure (..), - ) -import Cardano.Ledger.Shelley.Tx (ShelleyTx (..)) -import Cardano.Ledger.Shelley.TxBody (ShelleyTxBody (..)) -import Cardano.Ledger.Shelley.TxCert (ShelleyTxCert (..)) -import Cardano.Ledger.Shelley.TxOut (ShelleyTxOut (..)) -import Cardano.Ledger.Shelley.TxWits (addrWits) -import Cardano.Ledger.Slot (BlockNo (..), SlotNo (..)) -import Cardano.Ledger.TxIn (TxIn (..)) -import Cardano.Ledger.UTxO (UTxO (..)) -import Cardano.Ledger.Val ((<+>), (<->)) -import qualified Cardano.Ledger.Val as Val -import Cardano.Protocol.TPraos.BHeader (BHeader, bhHash) -import Cardano.Protocol.TPraos.OCert (KESPeriod (..)) -import qualified Data.Map.Strict as Map -import qualified Data.Sequence.Strict as StrictSeq -import qualified Data.Set as Set -import Test.Cardano.Ledger.Core.KeyPair (KeyPair (..), mkWitnessesVKey) -import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes (ExMock, Mock) -import Test.Cardano.Ledger.Shelley.Examples (CHAINExample (..), testCHAINExample) -import qualified Test.Cardano.Ledger.Shelley.Examples.Cast as Cast -import qualified Test.Cardano.Ledger.Shelley.Examples.Combinators as C -import Test.Cardano.Ledger.Shelley.Examples.Federation ( - coreNodeIssuerKeys, - coreNodeKeysBySchedule, - ) -import Test.Cardano.Ledger.Shelley.Examples.Init ( - initSt, - lastByronHeaderHash, - nonce0, - ppEx, - ) -import Test.Cardano.Ledger.Shelley.Examples.PoolLifetime (makePulser') -import Test.Cardano.Ledger.Shelley.Generator.Core ( - AllIssuerKeys (..), - NatNonce (..), - genesisCoins, - mkBlockFakeVRF, - mkOCert, - ) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (genesisId) -import Test.Cardano.Ledger.Shelley.Generator.ShelleyEraGen () -import Test.Cardano.Ledger.Shelley.Rules.Chain (ChainState (..), TestChainPredicateFailure (..)) -import Test.Cardano.Ledger.Shelley.Utils (getBlockNonce) -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.HUnit (testCase) - -initUTxO :: Crypto c => UTxO (ShelleyEra c) -initUTxO = - genesisCoins - genesisId - [ ShelleyTxOut Cast.aliceAddr aliceInitCoin - , ShelleyTxOut Cast.bobAddr bobInitCoin - ] - where - aliceInitCoin = Val.inject $ Coin $ 10 * 1000 * 1000 * 1000 * 1000 * 1000 - bobInitCoin = Val.inject $ Coin $ 1 * 1000 * 1000 * 1000 * 1000 * 1000 - -initStMIR :: forall c. Crypto c => Coin -> ChainState (ShelleyEra c) -initStMIR treasury = cs {chainNes = (chainNes cs) {nesEs = es'}} - where - cs = initSt @(ShelleyEra c) initUTxO - as = esAccountState . nesEs . chainNes $ cs - as' = - as - { asTreasury = asTreasury as <+> treasury - , asReserves = asReserves as <-> treasury - } - es' = (nesEs $ chainNes cs) {esAccountState = as'} - --- --- Block 1, Slot 10, Epoch 0 --- - -aliceMIRCoin :: Coin -aliceMIRCoin = Coin 100 - -ir :: Crypto c => MIRTarget c -ir = StakeAddressesMIR $ Map.fromList [(Cast.aliceSHK, toDeltaCoin aliceMIRCoin)] - -feeTx1 :: Coin -feeTx1 = Coin 1 - -txbodyEx1 :: Crypto c => MIRPot -> TxBody (ShelleyEra c) -txbodyEx1 pot = - ShelleyTxBody - (Set.fromList [TxIn genesisId minBound]) - (StrictSeq.singleton $ ShelleyTxOut Cast.aliceAddr aliceCoinEx1) - ( StrictSeq.fromList - [ ShelleyTxCertMir (MIRCert pot ir) - , RegTxCert Cast.aliceSHK - ] - ) - (Withdrawals Map.empty) - (Coin 1) - (SlotNo 10) - SNothing - SNothing - where - aliceInitCoin = Val.inject $ Coin $ 10 * 1000 * 1000 * 1000 * 1000 * 1000 - aliceCoinEx1 = aliceInitCoin <-> Val.inject (feeTx1 <+> Coin 7) - -mirWits :: Crypto c => [Int] -> [KeyPair 'Witness c] -mirWits = map (asWitness . aikCold . coreNodeIssuerKeys) - -sufficientMIRWits :: Crypto c => [KeyPair 'Witness c] -sufficientMIRWits = mirWits [0 .. 4] - -insufficientMIRWits :: Crypto c => [KeyPair 'Witness c] -insufficientMIRWits = mirWits [0 .. 3] - -txEx1 :: - forall c. - Mock c => - [KeyPair 'Witness c] -> - MIRPot -> - ShelleyTx (ShelleyEra c) -txEx1 txwits pot = - ShelleyTx - (txbodyEx1 pot) - mempty - { addrWits = - mkWitnessesVKey - (hashAnnotated $ txbodyEx1 @c pot) - ([asWitness Cast.alicePay] <> txwits) - } - SNothing - -blockEx1' :: - forall c. - ExMock (EraCrypto (ShelleyEra c)) => - [KeyPair 'Witness (EraCrypto (ShelleyEra c))] -> - MIRPot -> - Block (BHeader c) (ShelleyEra c) -blockEx1' txwits pot = - mkBlockFakeVRF - lastByronHeaderHash - (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 10) - [txEx1 txwits pot] - (SlotNo 10) - (BlockNo 1) - (nonce0 @(EraCrypto (ShelleyEra c))) - (NatNonce 1) - minBound - 0 - 0 - (mkOCert (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 10) 0 (KESPeriod 0)) - -blockEx1 :: - forall c. - ExMock (EraCrypto (ShelleyEra c)) => - MIRPot -> - Block (BHeader c) (ShelleyEra c) -blockEx1 = blockEx1' sufficientMIRWits - -expectedStEx1' :: - forall c. - ExMock (EraCrypto (ShelleyEra c)) => - [KeyPair 'Witness (EraCrypto (ShelleyEra c))] -> - MIRPot -> - ChainState (ShelleyEra c) -expectedStEx1' txwits pot = - C.evolveNonceUnfrozen (getBlockNonce (blockEx1' @c txwits pot)) - . C.newLab (blockEx1' txwits pot) - . C.feesAndDeposits ppEx feeTx1 [Cast.aliceSHK] [] - . C.newUTxO (txbodyEx1 pot) - . C.newStakeCred Cast.aliceSHK (Ptr (SlotNo 10) minBound (mkCertIxPartial 1)) - . C.mir Cast.aliceSHK pot aliceMIRCoin - $ initStMIR (Coin 1000) - -expectedStEx1 :: - forall c. - ExMock (EraCrypto (ShelleyEra c)) => - MIRPot -> - ChainState (ShelleyEra c) -expectedStEx1 = expectedStEx1' sufficientMIRWits - --- === Block 1, Slot 10, Epoch 0, Successful MIR Reserves Example --- --- In the first block, submit a MIR cert drawing from the reserves. -mir1 :: ExMock (EraCrypto (ShelleyEra c)) => MIRPot -> CHAINExample (BHeader c) (ShelleyEra c) -mir1 pot = - CHAINExample - (initStMIR (Coin 1000)) - (blockEx1 pot) - (Right $ expectedStEx1 pot) - --- === Block 1, Slot 10, Epoch 0, Insufficient MIR Wits, Reserves Example --- --- In the first block, submit a MIR cert drawing from the reserves. -mirFailWits :: - forall c. - ExMock (EraCrypto (ShelleyEra c)) => - MIRPot -> - CHAINExample (BHeader c) (ShelleyEra c) -mirFailWits pot = - CHAINExample - (initStMIR (Coin 1000)) - (blockEx1' insufficientMIRWits pot) - ( Left - . pure - . BbodyFailure - . injectFailure - $ MIRInsufficientGenesisSigsUTXOW ws - ) - where - ws = Set.fromList $ map (asWitness . aikColdKeyHash . coreNodeIssuerKeys) [0 .. 3] - --- === Block 1, Slot 10, Epoch 0, Insufficient MIR funds, Reserves Example --- --- In the first block, submit a MIR cert drawing from the reserves. -mirFailFunds :: - ExMock (EraCrypto (ShelleyEra c)) => - MIRPot -> - Coin -> - Coin -> - Coin -> - CHAINExample (BHeader c) (ShelleyEra c) -mirFailFunds pot treasury llNeeded llReceived = - CHAINExample - (initStMIR treasury) - (blockEx1' sufficientMIRWits pot) - ( Left - . pure - . BbodyFailure - . injectFailure - $ InsufficientForInstantaneousRewardsDELEG pot llNeeded llReceived - ) - --- --- Block 2, Slot 50, Epoch 0 --- - -blockEx2 :: - forall c. - ExMock (EraCrypto (ShelleyEra c)) => - MIRPot -> - Block (BHeader c) (ShelleyEra c) -blockEx2 pot = - mkBlockFakeVRF - (bhHash $ bheader @(BHeader c) @(ShelleyEra c) (blockEx1 pot)) - (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 50) - [] - (SlotNo 50) - (BlockNo 2) - (nonce0 @(EraCrypto (ShelleyEra c))) - (NatNonce 2) - minBound - 2 - 0 - (mkOCert (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 50) 0 (KESPeriod 0)) - -pulserEx2 :: - forall c. - ExMock (EraCrypto (ShelleyEra c)) => - MIRPot -> - PulsingRewUpdate c -pulserEx2 pot = makePulser' (expectedStEx1 pot) - -expectedStEx2 :: - forall c. - ExMock (EraCrypto (ShelleyEra c)) => - MIRPot -> - ChainState (ShelleyEra c) -expectedStEx2 pot = - C.evolveNonceUnfrozen (getBlockNonce (blockEx2 @c pot)) - . C.newLab (blockEx2 pot) - . C.pulserUpdate (pulserEx2 pot) - $ (expectedStEx1 pot) - --- === Block 2, Slot 50, Epoch 0 --- --- Submit an empty block to create an empty reward update. -mir2 :: - ExMock (EraCrypto (ShelleyEra c)) => - MIRPot -> - CHAINExample (BHeader c) (ShelleyEra c) -mir2 pot = - CHAINExample - (expectedStEx1 pot) - (blockEx2 pot) - (Right $ expectedStEx2 pot) - --- --- Block 3, Slot 110, Epoch 1 --- - -epoch1Nonce :: - forall c. - ExMock (EraCrypto (ShelleyEra c)) => - MIRPot -> - Nonce -epoch1Nonce pot = chainCandidateNonce (expectedStEx2 @c pot) - -blockEx3 :: - forall c. - ExMock (EraCrypto (ShelleyEra c)) => - MIRPot -> - Block (BHeader c) (ShelleyEra c) -blockEx3 pot = - mkBlockFakeVRF - (bhHash $ bheader @(BHeader c) @(ShelleyEra c) (blockEx2 pot)) - (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 110) - [] - (SlotNo 110) - (BlockNo 3) - (epoch1Nonce @c pot) - (NatNonce 3) - minBound - 5 - 0 - (mkOCert (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 110) 0 (KESPeriod 0)) - -expectedStEx3 :: - forall c. - ExMock (EraCrypto (ShelleyEra c)) => - MIRPot -> - ChainState (ShelleyEra c) -expectedStEx3 pot = - C.newEpoch (blockEx3 pot) - . C.newSnapshot emptySnapShot feeTx1 - . C.applyRewardUpdate emptyRewardUpdate - . C.applyMIR pot (Map.singleton Cast.aliceSHK aliceMIRCoin) - $ (expectedStEx2 pot) - --- === Block 3, Slot 110, Epoch 1 --- --- Submit an empty block in the next epoch to apply the MIR rewards. -mir3 :: ExMock (EraCrypto (ShelleyEra c)) => MIRPot -> CHAINExample (BHeader c) (ShelleyEra c) -mir3 pot = CHAINExample (expectedStEx2 pot) (blockEx3 pot) (Right $ expectedStEx3 pot) - --- --- MIR Test Group --- - -mirExample :: TestTree -mirExample = - testGroup - "move inst rewards" - [ testCase "create MIR cert - reserves" $ testCHAINExample (mir1 ReservesMIR) - , testCase "create MIR cert - treasury" $ testCHAINExample (mir1 TreasuryMIR) - , testCase "insufficient MIR witnesses, reserves" $ - testCHAINExample (mirFailWits ReservesMIR) - , testCase "insufficient MIR witnesses, treasury" $ - testCHAINExample (mirFailWits TreasuryMIR) - , testCase "insufficient MIR funds, reserves" $ - testCHAINExample (mirFailFunds ReservesMIR (Coin 34000000000000000) (Coin 100) (Coin 0)) - , testCase "insufficient MIR funds, treasury" $ - testCHAINExample (mirFailFunds TreasuryMIR (Coin 99) (Coin 100) (Coin 99)) - , testCase "end of epoch after MIR - reserves" $ - testCHAINExample (mir2 ReservesMIR) - , testCase "end of epoch after MIR - treasury" $ - testCHAINExample (mir2 TreasuryMIR) - , testCase "apply MIR - reserves" $ testCHAINExample (mir3 ReservesMIR) - , testCase "apply MIR - treasury" $ testCHAINExample (mir3 TreasuryMIR) - ] diff --git a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/MirTransfer.hs b/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/MirTransfer.hs deleted file mode 100644 index ff927ec0fa0..00000000000 --- a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/MirTransfer.hs +++ /dev/null @@ -1,260 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Shelley.Examples.MirTransfer ( - testMIRTransfer, -) -where - -import Cardano.Ledger.BaseTypes (ProtVer (..), natVersion) -import Cardano.Ledger.Coin (Coin (..), DeltaCoin (..)) -import Cardano.Ledger.Keys ( - GenDelegs (..), - KeyRole (..), - hashKey, - ) -import Cardano.Ledger.Shelley (ShelleyEra) -import Cardano.Ledger.Shelley.API ( - AccountState (..), - Credential (..), - DState (..), - DelegEnv (..), - InstantaneousRewards (..), - Ptr (..), - ShelleyDELEG, - ) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.Rules (ShelleyDelegPredFailure (..)) -import Cardano.Ledger.Slot (SlotNo (..)) -import qualified Cardano.Ledger.UMap as UM -import Control.State.Transition.Extended hiding (Assertion) -import Data.List.NonEmpty (NonEmpty) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Lens.Micro -import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes (C_Crypto) -import Test.Cardano.Ledger.Shelley.Utils (RawSeed (..), applySTSTest, mkKeyPair, runShelleyBase) -import Test.Control.State.Transition.Trace (checkTrace, (.-), (.->>)) -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.HUnit (Assertion, testCase, (@?=)) - -type ShelleyTest = ShelleyEra C_Crypto - -ignoreAllButIRWD :: - Either (NonEmpty (PredicateFailure (ShelleyDELEG ShelleyTest))) (DState ShelleyTest) -> - Either (NonEmpty (PredicateFailure (ShelleyDELEG ShelleyTest))) (InstantaneousRewards C_Crypto) -ignoreAllButIRWD = fmap dsIRewards - -env :: ProtVer -> AccountState -> DelegEnv ShelleyTest -env pv acnt = - DelegEnv - { slotNo = SlotNo 50 - , ptr_ = Ptr (SlotNo 50) minBound minBound - , acnt_ = acnt - , ppDE = emptyPParams & ppProtocolVersionL .~ pv - } - -shelleyPV :: ProtVer -shelleyPV = ProtVer (natVersion @2) 0 - -alonzoPV :: ProtVer -alonzoPV = ProtVer (natVersion @5) 0 - -testMirTransfer :: - ProtVer -> - MIRPot -> - MIRTarget C_Crypto -> - InstantaneousRewards C_Crypto -> - AccountState -> - Either (NonEmpty (PredicateFailure (ShelleyDELEG ShelleyTest))) (InstantaneousRewards C_Crypto) -> - Assertion -testMirTransfer pv pot target ir acnt (Right expected) = do - checkTrace @(ShelleyDELEG ShelleyTest) runShelleyBase (env pv acnt) $ - (pure (dStateWithRewards ir)) .- (MirTxCert (MIRCert pot target)) .->> (dStateWithRewards expected) -testMirTransfer pv pot target ir acnt predicateFailure@(Left _) = do - let st = - runShelleyBase $ - applySTSTest @(ShelleyDELEG ShelleyTest) - (TRC (env pv acnt, dStateWithRewards ir, MirTxCert (MIRCert pot target))) - (ignoreAllButIRWD st) @?= predicateFailure - -dStateWithRewards :: InstantaneousRewards c -> DState (ShelleyEra c) -dStateWithRewards ir = - DState - { dsUnified = UM.empty - , dsFutureGenDelegs = Map.empty - , dsGenDelegs = GenDelegs Map.empty - , dsIRewards = ir - } - -alice :: Credential 'Staking C_Crypto -alice = (KeyHashObj . hashKey . snd) $ mkKeyPair (RawSeed 0 0 0 0 1) - -aliceOnlyReward :: Integer -> Map (Credential 'Staking C_Crypto) Coin -aliceOnlyReward c = Map.fromList [(alice, Coin c)] - -aliceOnlyDelta :: Integer -> Map (Credential 'Staking C_Crypto) DeltaCoin -aliceOnlyDelta c = Map.fromList [(alice, DeltaCoin c)] - -bob :: Credential 'Staking C_Crypto -bob = (KeyHashObj . hashKey . snd) $ mkKeyPair (RawSeed 0 0 0 0 2) - -bobOnlyReward :: Integer -> Map (Credential 'Staking C_Crypto) Coin -bobOnlyReward c = Map.fromList [(bob, Coin c)] - -bobOnlyDelta :: Integer -> Map (Credential 'Staking C_Crypto) DeltaCoin -bobOnlyDelta c = Map.fromList [(bob, DeltaCoin c)] - -testMIRTransfer :: TestTree -testMIRTransfer = - testGroup - "MIR cert transfers" - [ testGroup - "MIR cert embargos" - [ testCase "embargo reserves to treasury transfer" $ - testMirTransfer - shelleyPV - ReservesMIR - (SendToOppositePotMIR $ Coin 1) - (InstantaneousRewards mempty mempty mempty mempty) - (AccountState {asReserves = Coin 1, asTreasury = Coin 0}) - (Left . pure $ MIRTransferNotCurrentlyAllowed) - , testCase "embargo treasury to reserves transfer" $ - testMirTransfer - shelleyPV - TreasuryMIR - (SendToOppositePotMIR $ Coin 1) - (InstantaneousRewards mempty mempty mempty mempty) - (AccountState {asReserves = Coin 0, asTreasury = Coin 1}) - (Left . pure $ MIRTransferNotCurrentlyAllowed) - , testCase "embargo decrements from reserves" $ - testMirTransfer - shelleyPV - ReservesMIR - (StakeAddressesMIR $ aliceOnlyDelta (-1)) - (InstantaneousRewards (aliceOnlyReward 1) mempty mempty mempty) - (AccountState {asReserves = Coin 1, asTreasury = Coin 0}) - (Left . pure $ MIRNegativesNotCurrentlyAllowed) - , testCase "embargo decrements from treasury" $ - testMirTransfer - shelleyPV - TreasuryMIR - (StakeAddressesMIR $ aliceOnlyDelta (-1)) - (InstantaneousRewards mempty (aliceOnlyReward 1) mempty mempty) - (AccountState {asReserves = Coin 0, asTreasury = Coin 1}) - (Left . pure $ MIRNegativesNotCurrentlyAllowed) - ] - , testGroup - "MIR cert alonzo" - [ testCase "increment reserves too much" $ - testMirTransfer - alonzoPV - ReservesMIR - (StakeAddressesMIR $ aliceOnlyDelta 1) - (InstantaneousRewards (aliceOnlyReward 1) mempty mempty mempty) - (AccountState {asReserves = Coin 1, asTreasury = Coin 0}) - (Left . pure $ InsufficientForInstantaneousRewardsDELEG ReservesMIR (Coin 2) (Coin 1)) - , testCase "increment treasury too much" $ - testMirTransfer - alonzoPV - TreasuryMIR - (StakeAddressesMIR $ aliceOnlyDelta 1) - (InstantaneousRewards mempty (aliceOnlyReward 1) mempty mempty) - (AccountState {asReserves = Coin 0, asTreasury = Coin 1}) - (Left . pure $ InsufficientForInstantaneousRewardsDELEG TreasuryMIR (Coin 2) (Coin 1)) - , testCase "increment reserves too much with delta" $ - testMirTransfer - alonzoPV - ReservesMIR - (StakeAddressesMIR $ aliceOnlyDelta 1) - (InstantaneousRewards (aliceOnlyReward 1) mempty (DeltaCoin (-1)) (DeltaCoin 1)) - (AccountState {asReserves = Coin 2, asTreasury = Coin 0}) - (Left . pure $ InsufficientForInstantaneousRewardsDELEG ReservesMIR (Coin 2) (Coin 1)) - , testCase "increment treasury too much with delta" $ - testMirTransfer - alonzoPV - TreasuryMIR - (StakeAddressesMIR $ aliceOnlyDelta 1) - (InstantaneousRewards mempty (aliceOnlyReward 1) (DeltaCoin 1) (DeltaCoin (-1))) - (AccountState {asReserves = Coin 0, asTreasury = Coin 2}) - (Left . pure $ InsufficientForInstantaneousRewardsDELEG TreasuryMIR (Coin 2) (Coin 1)) - , testCase "negative balance in reserves mapping" $ - testMirTransfer - alonzoPV - ReservesMIR - (StakeAddressesMIR $ aliceOnlyDelta (-1)) - (InstantaneousRewards mempty mempty mempty mempty) - (AccountState {asReserves = Coin 1, asTreasury = Coin 0}) - (Left . pure $ MIRProducesNegativeUpdate) - , testCase "negative balance in treasury mapping" $ - testMirTransfer - alonzoPV - TreasuryMIR - (StakeAddressesMIR $ aliceOnlyDelta (-1)) - (InstantaneousRewards mempty mempty mempty mempty) - (AccountState {asReserves = Coin 0, asTreasury = Coin 1}) - (Left . pure $ MIRProducesNegativeUpdate) - , testCase "transfer reserves to treasury" $ - testMirTransfer - alonzoPV - ReservesMIR - (SendToOppositePotMIR (Coin 1)) - (InstantaneousRewards mempty mempty mempty mempty) - (AccountState {asReserves = Coin 1, asTreasury = Coin 0}) - (Right (InstantaneousRewards mempty mempty (DeltaCoin (-1)) (DeltaCoin 1))) - , testCase "transfer treasury to reserves" $ - testMirTransfer - alonzoPV - TreasuryMIR - (SendToOppositePotMIR (Coin 1)) - (InstantaneousRewards mempty mempty mempty mempty) - (AccountState {asReserves = Coin 0, asTreasury = Coin 1}) - (Right (InstantaneousRewards mempty mempty (DeltaCoin 1) (DeltaCoin (-1)))) - , testCase "insufficient transfer reserves to treasury" $ - testMirTransfer - alonzoPV - ReservesMIR - (SendToOppositePotMIR (Coin 1)) - (InstantaneousRewards (aliceOnlyReward 1) mempty (DeltaCoin (-1)) (DeltaCoin 1)) - (AccountState {asReserves = Coin 2, asTreasury = Coin 0}) - (Left . pure $ InsufficientForTransferDELEG ReservesMIR (Coin 1) (Coin 0)) - , testCase "insufficient transfer treasury to reserves" $ - testMirTransfer - alonzoPV - TreasuryMIR - (SendToOppositePotMIR (Coin 1)) - (InstantaneousRewards mempty (aliceOnlyReward 1) (DeltaCoin 1) (DeltaCoin (-1))) - (AccountState {asReserves = Coin 0, asTreasury = Coin 2}) - (Left . pure $ InsufficientForTransferDELEG TreasuryMIR (Coin 1) (Coin 0)) - , testCase "increment reserves mapping" $ - testMirTransfer - alonzoPV - ReservesMIR - (StakeAddressesMIR $ (aliceOnlyDelta 1 `Map.union` bobOnlyDelta 1)) - (InstantaneousRewards (aliceOnlyReward 1) mempty mempty mempty) - (AccountState {asReserves = Coin 3, asTreasury = Coin 0}) - ( Right - ( InstantaneousRewards - (aliceOnlyReward 2 `Map.union` bobOnlyReward 1) - mempty - mempty - mempty - ) - ) - , testCase "increment treasury mapping" $ - testMirTransfer - alonzoPV - TreasuryMIR - (StakeAddressesMIR $ (aliceOnlyDelta 1 `Map.union` bobOnlyDelta 1)) - (InstantaneousRewards mempty (aliceOnlyReward 1) mempty mempty) - (AccountState {asReserves = Coin 0, asTreasury = Coin 3}) - ( Right - ( InstantaneousRewards - mempty - (aliceOnlyReward 2 `Map.union` bobOnlyReward 1) - mempty - mempty - ) - ) - ] - ] diff --git a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/NetworkID.hs b/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/NetworkID.hs deleted file mode 100644 index fdd27f7b7f0..00000000000 --- a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/NetworkID.hs +++ /dev/null @@ -1,97 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Shelley.Examples.NetworkID ( - testPoolNetworkId, -) -where - -import Cardano.Ledger.BaseTypes (ProtVer (..), natVersion) -import Cardano.Ledger.Shelley (ShelleyEra) -import Cardano.Ledger.Shelley.API ( - Network (..), - PoolEnv (..), - PoolParams (..), - RewardAccount (..), - ShelleyPOOL, - ) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Slot (SlotNo (..)) -import Control.State.Transition.Extended hiding (Assertion) -import Data.Default.Class (def) -import Lens.Micro -import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes (C_Crypto) -import qualified Test.Cardano.Ledger.Shelley.Examples.Cast as Cast -import Test.Cardano.Ledger.Shelley.Utils (applySTSTest, runShelleyBase) -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.HUnit (Assertion, assertBool, testCase) - -type ShelleyTest = ShelleyEra C_Crypto - -shelleyPV :: ProtVer -shelleyPV = ProtVer (natVersion @2) 0 - -alonzoPV :: ProtVer -alonzoPV = ProtVer (natVersion @5) 0 - -data Expectation = ExpectSuccess | ExpectFailure - deriving (Show, Eq) - -testPoolNetworkID :: - ProtVer -> - PoolParams C_Crypto -> - Expectation -> - Assertion -testPoolNetworkID pv poolParams e = do - let st = - runShelleyBase $ - applySTSTest @(ShelleyPOOL ShelleyTest) - ( TRC - ( PoolEnv (SlotNo 0) $ emptyPParams & ppProtocolVersionL .~ pv - , def - , RegPool poolParams - ) - ) - case (st, e) of - (Right _, ExpectSuccess) -> assertBool "" True - (Left _, ExpectFailure) -> assertBool "" True - (Right _, ExpectFailure) -> assertBool "We expected failure." False - (Left _, ExpectSuccess) -> assertBool "We expected success." False - -matchingNetworkIDPoolParams :: PoolParams C_Crypto -matchingNetworkIDPoolParams = - Cast.alicePoolParams {ppRewardAccount = RewardAccount Testnet Cast.aliceSHK} - --- test globals use Testnet - -mismatchingNetworkIDPoolParams :: PoolParams C_Crypto -mismatchingNetworkIDPoolParams = - Cast.alicePoolParams {ppRewardAccount = RewardAccount Mainnet Cast.aliceSHK} - --- test globals use Testnet - -testPoolNetworkId :: TestTree -testPoolNetworkId = - testGroup - "Network IDs" - [ testCase "Incorrect Network ID is allowed pre-Alonzo" $ - testPoolNetworkID - shelleyPV - mismatchingNetworkIDPoolParams - ExpectSuccess - , testCase "Incorrect Network ID is NOT allowed in Alonzo" $ - testPoolNetworkID - alonzoPV - mismatchingNetworkIDPoolParams - ExpectFailure - , testCase "Correct Network ID is allowed pre-Alonzo" $ - testPoolNetworkID - shelleyPV - matchingNetworkIDPoolParams - ExpectSuccess - , testCase "Correct Network ID is allowed in Alonzo" $ - testPoolNetworkID - alonzoPV - matchingNetworkIDPoolParams - ExpectSuccess - ] diff --git a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/PoolLifetime.hs b/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/PoolLifetime.hs deleted file mode 100644 index 0d81de04cec..00000000000 --- a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/PoolLifetime.hs +++ /dev/null @@ -1,1086 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE NumericUnderscores #-} -{-# LANGUAGE OverloadedLists #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - --- | --- Module : Test.Cardano.Ledger.Shelley.Examples.PoolLifetime --- Description : Pool Lifetime Example --- --- Example demonstrating the creation of a new stake pool, --- block production under Praos, rewards, and pool retirement. -module Test.Cardano.Ledger.Shelley.Examples.PoolLifetime ( - makePulser, - makePulser', - makeCompletedPulser, - poolLifetimeExample, - mkStake, -) -where - -import Cardano.Ledger.BaseTypes ( - BlocksMade (..), - Globals (..), - Network (..), - Nonce, - StrictMaybe (..), - mkCertIxPartial, - (⭒), - ) -import Cardano.Ledger.Block (Block, bheader) -import Cardano.Ledger.Coin (Coin (..), DeltaCoin (..), addDeltaCoin, toDeltaCoin) -import Cardano.Ledger.Compactible -import Cardano.Ledger.Credential (Credential, Ptr (..)) -import qualified Cardano.Ledger.Crypto as Cr -import qualified Cardano.Ledger.EpochBoundary as EB -import Cardano.Ledger.Keys (KeyRole (..), asWitness, coerceKeyRole) -import Cardano.Ledger.PoolDistr ( - IndividualPoolStake (..), - PoolDistr (..), - ) -import Cardano.Ledger.PoolParams (PoolParams (..)) -import Cardano.Ledger.SafeHash (hashAnnotated) -import Cardano.Ledger.Shelley (ShelleyEra) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState ( - NewEpochState (..), - PulsingRewUpdate (..), - RewardUpdate (..), - completeRupd, - decayFactor, - emptyRewardUpdate, - startStep, - ) -import Cardano.Ledger.Shelley.PoolRank ( - Likelihood (..), - NonMyopic (..), - applyDecay, - leaderProbability, - likelihood, - ) -import Cardano.Ledger.Shelley.Tx (ShelleyTx (..)) -import Cardano.Ledger.Shelley.TxBody ( - RewardAccount (..), - ShelleyTxBody (..), - ) -import Cardano.Ledger.Shelley.TxCert (ShelleyTxCert (..)) -import Cardano.Ledger.Shelley.TxOut (ShelleyTxOut (..)) -import Cardano.Ledger.Shelley.TxWits ( - addrWits, - ) -import Cardano.Ledger.Slot ( - BlockNo (..), - EpochNo (..), - SlotNo (..), - ) -import Cardano.Ledger.TxIn (TxIn (..), mkTxInPartial) -import Cardano.Ledger.UTxO (UTxO (..)) -import Cardano.Ledger.Val ((<+>), (<->), (<×>)) -import qualified Cardano.Ledger.Val as Val -import Cardano.Protocol.TPraos.BHeader (BHeader, bhHash, hashHeaderToNonce) -import Cardano.Protocol.TPraos.OCert (KESPeriod (..)) -import Data.Default.Class (def) -import Data.Group (invert) -import qualified Data.Map.Strict as Map -import Data.Ratio ((%)) -import qualified Data.Sequence.Strict as StrictSeq -import qualified Data.Set as Set -import GHC.Exts (fromList) -import GHC.Stack (HasCallStack) -import Test.Cardano.Ledger.Core.KeyPair (mkWitnessesVKey) -import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes (ExMock) -import Test.Cardano.Ledger.Shelley.Examples (CHAINExample (..), testCHAINExample) -import qualified Test.Cardano.Ledger.Shelley.Examples.Cast as Cast -import qualified Test.Cardano.Ledger.Shelley.Examples.Combinators as C -import Test.Cardano.Ledger.Shelley.Examples.Federation ( - coreNodeIssuerKeys, - coreNodeKeysBySchedule, - ) -import Test.Cardano.Ledger.Shelley.Examples.Init ( - initSt, - lastByronHeaderHash, - nonce0, - ppEx, - ) -import Test.Cardano.Ledger.Shelley.Generator.Core ( - AllIssuerKeys (..), - NatNonce (..), - genesisCoins, - mkBlockFakeVRF, - mkOCert, - ) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (genesisId) -import Test.Cardano.Ledger.Shelley.Generator.ShelleyEraGen () -import Test.Cardano.Ledger.Shelley.Rules.Chain (ChainState (..)) -import Test.Cardano.Ledger.Shelley.Utils ( - epochSize, - getBlockNonce, - maxLLSupply, - runShelleyBase, - testGlobals, - unsafeBoundRational, - ) -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.HUnit (testCase) - -aliceInitCoin :: Coin -aliceInitCoin = Coin 10_000_000_000_000_000 - -bobInitCoin :: Coin -bobInitCoin = Coin 1_000_000_000_000_000 - -toCompactCoinError :: Coin -> CompactForm Coin -toCompactCoinError c = - case toCompact c of - Nothing -> error $ "Invalid coin: " <> show c - Just compactCoin -> compactCoin - -mkStake :: - [ ( Credential 'Staking c - , Coin - ) - ] -> - EB.Stake c -mkStake = EB.Stake . GHC.Exts.fromList . map (fmap toCompactCoinError) - -initUTxO :: Cr.Crypto c => UTxO (ShelleyEra c) -initUTxO = - genesisCoins - genesisId - [ ShelleyTxOut Cast.aliceAddr (Val.inject aliceInitCoin) - , ShelleyTxOut Cast.bobAddr (Val.inject bobInitCoin) - ] - -initStPoolLifetime :: forall c. Cr.Crypto c => ChainState (ShelleyEra c) -initStPoolLifetime = initSt initUTxO - --- --- Block 1, Slot 10, Epoch 0 --- - -aliceCoinEx1 :: Coin -aliceCoinEx1 = - aliceInitCoin - <-> Coin 250 - <-> ((3 :: Integer) <×> Coin 7) - <-> Coin 3 - -carlMIR :: Coin -carlMIR = Coin 110 - -dariaMIR :: Coin -dariaMIR = Coin 99 - -feeTx1 :: Coin -feeTx1 = Coin 3 - -txbodyEx1 :: Cr.Crypto c => ShelleyTxBody (ShelleyEra c) -txbodyEx1 = - ShelleyTxBody - (Set.fromList [TxIn genesisId minBound]) - (StrictSeq.fromList [ShelleyTxOut Cast.aliceAddr (Val.inject aliceCoinEx1)]) - ( StrictSeq.fromList - ( [ RegTxCert Cast.aliceSHK - , RegTxCert Cast.bobSHK - , RegTxCert Cast.carlSHK - , RegPoolTxCert Cast.alicePoolParams - ] - ++ [ ShelleyTxCertMir - ( MIRCert - ReservesMIR - ( StakeAddressesMIR $ - Map.fromList - [ (Cast.carlSHK, toDeltaCoin carlMIR) - , (Cast.dariaSHK, toDeltaCoin dariaMIR) - ] - ) - ) - ] - ) - ) - (Withdrawals Map.empty) - feeTx1 - (SlotNo 10) - SNothing - SNothing - -txEx1 :: forall c. ExMock (EraCrypto (ShelleyEra c)) => ShelleyTx (ShelleyEra c) -txEx1 = - ShelleyTx - txbodyEx1 - mempty - { addrWits = - mkWitnessesVKey - (hashAnnotated (txbodyEx1 @c)) - ( (asWitness <$> [Cast.alicePay, Cast.carlPay]) - <> (asWitness <$> [Cast.aliceStake]) - <> [asWitness $ aikCold Cast.alicePoolKeys] - <> ( asWitness - <$> [ aikCold (coreNodeIssuerKeys 0) - , aikCold (coreNodeIssuerKeys 1) - , aikCold (coreNodeIssuerKeys 2) - , aikCold (coreNodeIssuerKeys 3) - , aikCold (coreNodeIssuerKeys 4) - ] - ) - ) - } - SNothing - -blockEx1 :: - forall c. (HasCallStack, ExMock (EraCrypto (ShelleyEra c))) => Block (BHeader c) (ShelleyEra c) -blockEx1 = - mkBlockFakeVRF - lastByronHeaderHash - (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 10) - [txEx1] - (SlotNo 10) - (BlockNo 1) - (nonce0 @(EraCrypto (ShelleyEra c))) - (NatNonce 1) - minBound - 0 - 0 - (mkOCert (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 10) 0 (KESPeriod 0)) - -expectedStEx1 :: forall c. ExMock c => ChainState (ShelleyEra c) -expectedStEx1 = - C.evolveNonceUnfrozen (getBlockNonce (blockEx1 @c)) - . C.newLab blockEx1 - . C.feesAndDeposits ppEx feeTx1 [Cast.aliceSHK, Cast.bobSHK, Cast.carlSHK] [Cast.alicePoolParams] - . C.newUTxO txbodyEx1 - . C.newStakeCred Cast.aliceSHK (Ptr (SlotNo 10) minBound (mkCertIxPartial 0)) - . C.newStakeCred Cast.bobSHK (Ptr (SlotNo 10) minBound (mkCertIxPartial 1)) - . C.newStakeCred Cast.carlSHK (Ptr (SlotNo 10) minBound (mkCertIxPartial 2)) - . C.newPool Cast.alicePoolParams - . C.mir Cast.carlSHK ReservesMIR carlMIR - . C.mir Cast.dariaSHK ReservesMIR dariaMIR - $ initStPoolLifetime - --- === Block 1, Slot 10, Epoch 0 --- --- In the first block of this example, Alice, Bob, and Carl --- all register stake credentials, and Alice registers a stake pool. --- Additionally, a MIR certificate is issued to draw from the reserves --- and give Carl and Daria (who is unregistered) rewards. -poolLifetime1 :: ExMock (EraCrypto (ShelleyEra c)) => CHAINExample (BHeader c) (ShelleyEra c) -poolLifetime1 = CHAINExample initStPoolLifetime blockEx1 (Right expectedStEx1) - --- --- Block 2, Slot 90, Epoch 0 --- - -feeTx2 :: Coin -feeTx2 = Coin 4 - -aliceCoinEx2Base :: Coin -aliceCoinEx2Base = Coin $ 5 * 1000 * 1000 * 1000 * 1000 * 1000 - -aliceCoinEx2Ptr :: Coin -aliceCoinEx2Ptr = aliceCoinEx1 <-> (aliceCoinEx2Base <+> feeTx2) - --- | The transaction delegates Alice's and Bob's stake to Alice's pool. --- Additionally, we split Alice's ADA between a base address and a pointer address. -txbodyEx2 :: forall c. Cr.Crypto c => ShelleyTxBody (ShelleyEra c) -txbodyEx2 = - ShelleyTxBody - { stbInputs = Set.fromList [TxIn (txIdTxBody (txbodyEx1 @c)) minBound] - , stbOutputs = - StrictSeq.fromList - [ ShelleyTxOut Cast.aliceAddr (Val.inject aliceCoinEx2Base) - , ShelleyTxOut Cast.alicePtrAddr (Val.inject aliceCoinEx2Ptr) - ] - , stbCerts = - StrictSeq.fromList - [ DelegStakeTxCert Cast.aliceSHK (aikColdKeyHash Cast.alicePoolKeys) - , DelegStakeTxCert Cast.bobSHK (aikColdKeyHash Cast.alicePoolKeys) - ] - , stbWithdrawals = Withdrawals Map.empty - , stbTxFee = feeTx2 - , stbTTL = SlotNo 90 - , stbUpdate = SNothing - , stbMDHash = SNothing - } - -txEx2 :: forall c. ExMock (EraCrypto (ShelleyEra c)) => ShelleyTx (ShelleyEra c) -txEx2 = - ShelleyTx - txbodyEx2 - mempty - { addrWits = - mkWitnessesVKey - (hashAnnotated (txbodyEx2 @c)) - [ asWitness Cast.alicePay - , asWitness Cast.aliceStake - , asWitness Cast.bobStake - ] - } - SNothing - -blockEx2 :: forall c. ExMock (EraCrypto (ShelleyEra c)) => Block (BHeader c) (ShelleyEra c) -blockEx2 = - mkBlockFakeVRF - (bhHash $ bheader @(BHeader c) @(ShelleyEra c) blockEx1) - (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 90) - [txEx2] - (SlotNo 90) - (BlockNo 2) - (nonce0 @(EraCrypto (ShelleyEra c))) - (NatNonce 2) - minBound - 4 - 0 - (mkOCert (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 90) 0 (KESPeriod 0)) - -makePulser :: - forall era. - EraGov era => - BlocksMade (EraCrypto era) -> - ChainState era -> - PulsingRewUpdate (EraCrypto era) -makePulser bs cs = p - where - p = - startStep - (epochSize $ EpochNo 0) - bs - (nesEs . chainNes $ cs) - maxLLSupply - (activeSlotCoeff testGlobals) - (securityParameter testGlobals) - -makePulser' :: - forall era. - EraGov era => - ChainState era -> - PulsingRewUpdate (EraCrypto era) -makePulser' = makePulser (BlocksMade mempty) - -makeCompletedPulser :: - forall era. - EraGov era => - BlocksMade (EraCrypto era) -> - ChainState era -> - PulsingRewUpdate (EraCrypto era) -makeCompletedPulser bs cs = Complete . fst . runShelleyBase . completeRupd $ makePulser bs cs - -pulserEx2 :: forall c. ExMock (EraCrypto (ShelleyEra c)) => PulsingRewUpdate c -pulserEx2 = makeCompletedPulser (BlocksMade mempty) expectedStEx1 - -expectedStEx2 :: - forall c. - ExMock (EraCrypto (ShelleyEra c)) => - ChainState (ShelleyEra c) -expectedStEx2 = - C.evolveNonceFrozen (getBlockNonce (blockEx2 @c)) - . C.newLab blockEx2 - . C.feesAndDeposits ppEx feeTx2 [] [] - . C.newUTxO txbodyEx2 - . C.delegation Cast.aliceSHK (ppId $ Cast.alicePoolParams @c) - . C.delegation Cast.bobSHK (ppId $ Cast.alicePoolParams @c) - . C.pulserUpdate pulserEx2 - $ expectedStEx1 - --- === Block 2, Slot 90, Epoch 0 --- --- In the second block Alice and Bob both delegation to Alice's Pool. -poolLifetime2 :: ExMock (EraCrypto (ShelleyEra c)) => CHAINExample (BHeader c) (ShelleyEra c) -poolLifetime2 = CHAINExample expectedStEx1 blockEx2 (Right expectedStEx2) - --- --- Block 3, Slot 110, Epoch 1 --- - -epoch1Nonce :: forall c. ExMock (EraCrypto (ShelleyEra c)) => Nonce -epoch1Nonce = chainCandidateNonce (expectedStEx2 @c) - -blockEx3 :: forall c. ExMock (EraCrypto (ShelleyEra c)) => Block (BHeader c) (ShelleyEra c) -blockEx3 = - mkBlockFakeVRF - (bhHash $ bheader @(BHeader c) @(ShelleyEra c) blockEx2) - (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 110) - [] - (SlotNo 110) - (BlockNo 3) - (epoch1Nonce @c) - (NatNonce 3) - minBound - 5 - 0 - (mkOCert (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 110) 0 (KESPeriod 0)) - -snapEx3 :: Cr.Crypto c => EB.SnapShot c -snapEx3 = - EB.SnapShot - { EB.ssStake = - mkStake - [ (Cast.aliceSHK, aliceCoinEx2Base <> aliceCoinEx2Ptr) - , (Cast.bobSHK, bobInitCoin) - ] - , EB.ssDelegations = - [ (Cast.aliceSHK, aikColdKeyHash Cast.alicePoolKeys) - , (Cast.bobSHK, aikColdKeyHash Cast.alicePoolKeys) - ] - , EB.ssPoolParams = [(aikColdKeyHash Cast.alicePoolKeys, Cast.alicePoolParams)] - } - -expectedStEx3 :: - forall c. - ExMock (EraCrypto (ShelleyEra c)) => - ChainState (ShelleyEra c) -expectedStEx3 = - C.newEpoch blockEx3 - . C.newSnapshot snapEx3 (feeTx1 <> feeTx2) - . C.applyMIR ReservesMIR (Map.singleton Cast.carlSHK carlMIR) - . C.applyRewardUpdate emptyRewardUpdate - $ expectedStEx2 - --- === Block 3, Slot 110, Epoch 1 --- --- In the third block, an empty block in a new epoch, the first snapshot is created. --- The rewards accounts from the MIR certificate in block 1 are now increased. -poolLifetime3 :: ExMock (EraCrypto (ShelleyEra c)) => CHAINExample (BHeader c) (ShelleyEra c) -poolLifetime3 = CHAINExample expectedStEx2 blockEx3 (Right expectedStEx3) - --- --- Block 4, Slot 190, Epoch 1 --- - -feeTx4 :: Coin -feeTx4 = Coin 5 - -aliceCoinEx4Base :: Coin -aliceCoinEx4Base = aliceCoinEx2Base <-> feeTx4 - -txbodyEx4 :: forall c. Cr.Crypto c => ShelleyTxBody (ShelleyEra c) -txbodyEx4 = - ShelleyTxBody - { stbInputs = Set.fromList [TxIn (txIdTxBody txbodyEx2) minBound] - , stbOutputs = StrictSeq.fromList [ShelleyTxOut Cast.aliceAddr (Val.inject aliceCoinEx4Base)] - , stbCerts = - StrictSeq.fromList - [DelegStakeTxCert Cast.carlSHK (aikColdKeyHash Cast.alicePoolKeys)] - , stbWithdrawals = Withdrawals Map.empty - , stbTxFee = feeTx4 - , stbTTL = SlotNo 500 - , stbUpdate = SNothing - , stbMDHash = SNothing - } - -txEx4 :: forall c. ExMock (EraCrypto (ShelleyEra c)) => ShelleyTx (ShelleyEra c) -txEx4 = - ShelleyTx - txbodyEx4 - mempty - { addrWits = - mkWitnessesVKey - (hashAnnotated (txbodyEx4 @c)) - [asWitness Cast.alicePay, asWitness Cast.carlStake] - } - SNothing - -blockEx4 :: forall c. ExMock (EraCrypto (ShelleyEra c)) => Block (BHeader c) (ShelleyEra c) -blockEx4 = - mkBlockFakeVRF - (bhHash $ bheader @(BHeader c) @(ShelleyEra c) blockEx3) - (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 190) - [txEx4] - (SlotNo 190) - (BlockNo 4) - (epoch1Nonce @c) - (NatNonce 4) - minBound - 9 - 0 - (mkOCert (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 190) 0 (KESPeriod 0)) - -pulserEx4 :: forall c. ExMock c => PulsingRewUpdate c -pulserEx4 = makeCompletedPulser (BlocksMade mempty) expectedStEx3 - -rewardUpdateEx4 :: forall c. RewardUpdate c -rewardUpdateEx4 = - RewardUpdate - { deltaT = DeltaCoin 1 - , deltaR = DeltaCoin 6 - , rs = Map.empty - , deltaF = DeltaCoin (-7) - , nonMyopic = def {rewardPotNM = Coin 6} - } - -expectedStEx4 :: - forall c. - ExMock (EraCrypto (ShelleyEra c)) => - ChainState (ShelleyEra c) -expectedStEx4 = - C.evolveNonceFrozen (getBlockNonce (blockEx4 @c)) - . C.newLab blockEx4 - . C.feesAndDeposits ppEx feeTx4 [] [] - . C.newUTxO txbodyEx4 - . C.delegation Cast.carlSHK (ppId $ Cast.alicePoolParams @c) - . C.pulserUpdate pulserEx4 - $ expectedStEx3 - --- === Block 4, Slot 190, Epoch 1 --- --- We process a block late enough in the epoch in order to create a second reward update, --- preparing the way for the first non-empty pool distribution in this running example. --- Additionally, in order to have the stake distribution change, Carl delegates his stake. -poolLifetime4 :: ExMock (EraCrypto (ShelleyEra c)) => CHAINExample (BHeader c) (ShelleyEra c) -poolLifetime4 = CHAINExample expectedStEx3 blockEx4 (Right expectedStEx4) - -epoch2Nonce :: forall c. ExMock (EraCrypto (ShelleyEra c)) => Nonce -epoch2Nonce = - chainCandidateNonce (expectedStEx4 @c) - ⭒ hashHeaderToNonce (bhHash $ bheader (blockEx2 @c)) - --- --- Block 5, Slot 220, Epoch 2 --- - -blockEx5 :: forall c. ExMock (EraCrypto (ShelleyEra c)) => Block (BHeader c) (ShelleyEra c) -blockEx5 = - mkBlockFakeVRF - (bhHash $ bheader @(BHeader c) @(ShelleyEra c) blockEx4) - (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 220) - [] - (SlotNo 220) - (BlockNo 5) - (epoch2Nonce @c) - (NatNonce 5) - minBound - 11 - 10 - (mkOCert (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 220) 1 (KESPeriod 10)) - -snapEx5 :: forall c. Cr.Crypto c => EB.SnapShot c -snapEx5 = - EB.SnapShot - { EB.ssStake = - mkStake - [ (Cast.aliceSHK, aliceCoinEx4Base <> aliceCoinEx2Ptr) - , (Cast.carlSHK, carlMIR) - , (Cast.bobSHK, bobInitCoin) - ] - , EB.ssDelegations = - [ (Cast.aliceSHK, aikColdKeyHash Cast.alicePoolKeys) - , (Cast.carlSHK, aikColdKeyHash Cast.alicePoolKeys) - , (Cast.bobSHK, aikColdKeyHash Cast.alicePoolKeys) - ] - , EB.ssPoolParams = [(aikColdKeyHash Cast.alicePoolKeys, Cast.alicePoolParams)] - } - -pdEx5 :: forall c. Cr.Crypto c => PoolDistr c -pdEx5 = - PoolDistr $ - Map.singleton - (aikColdKeyHash $ Cast.alicePoolKeys @c) - (IndividualPoolStake 1 (Cast.aliceVRFKeyHash @c)) - -expectedStEx5 :: - forall c. - ExMock (EraCrypto (ShelleyEra c)) => - ChainState (ShelleyEra c) -expectedStEx5 = - C.newEpoch blockEx5 - . C.newSnapshot snapEx5 feeTx4 - . C.applyRewardUpdate rewardUpdateEx4 - . C.setPoolDistr pdEx5 - . C.setOCertCounter coreNodeHK 1 - $ expectedStEx4 - where - coreNodeHK = coerceKeyRole . aikColdKeyHash $ coreNodeKeysBySchedule @(ShelleyEra c) ppEx 220 - --- === Block 5, Slot 220, Epoch 2 --- --- Create the first non-empty pool distribution --- by creating a block in the third epoch of this running example. -poolLifetime5 :: ExMock (EraCrypto (ShelleyEra c)) => CHAINExample (BHeader c) (ShelleyEra c) -poolLifetime5 = CHAINExample expectedStEx4 blockEx5 (Right expectedStEx5) - --- --- Block 6, Slot 295, Epoch 2 --- - -blockEx6 :: forall c. ExMock (EraCrypto (ShelleyEra c)) => Block (BHeader c) (ShelleyEra c) -blockEx6 = - mkBlockFakeVRF - (bhHash $ bheader @(BHeader c) @(ShelleyEra c) blockEx5) - Cast.alicePoolKeys - [] - (SlotNo 295) -- odd slots open for decentralization - (BlockNo 6) - (epoch2Nonce @c) - (NatNonce 6) - minBound - 14 - 14 - (mkOCert Cast.alicePoolKeys 0 (KESPeriod 14)) - -rewardUpdateEx6 :: forall c. RewardUpdate c -rewardUpdateEx6 = - RewardUpdate - { deltaT = DeltaCoin 1 - , deltaR = DeltaCoin 4 - , rs = Map.empty - , deltaF = invert $ toDeltaCoin feeTx4 - , nonMyopic = def {rewardPotNM = Coin 4} - } - -pulserEx6 :: forall c. ExMock c => PulsingRewUpdate c -pulserEx6 = makeCompletedPulser (BlocksMade mempty) expectedStEx5 - -expectedStEx6 :: forall c. ExMock (EraCrypto (ShelleyEra c)) => ChainState (ShelleyEra c) -expectedStEx6 = - C.evolveNonceFrozen (getBlockNonce (blockEx6 @c)) - . C.newLab blockEx6 - . C.setOCertCounter (coerceKeyRole $ aikColdKeyHash Cast.alicePoolKeys) 0 - . C.incrBlockCount (aikColdKeyHash Cast.alicePoolKeys) - . C.pulserUpdate pulserEx6 - $ expectedStEx5 - --- === Block 6, Slot 295, Epoch 2 --- --- Create a decentralized Praos block (ie one not in the overlay schedule) -poolLifetime6 :: ExMock (EraCrypto (ShelleyEra c)) => CHAINExample (BHeader c) (ShelleyEra c) -poolLifetime6 = CHAINExample expectedStEx5 blockEx6 (Right expectedStEx6) - --- --- Block 7, Slot 310, Epoch 3 --- - -epoch3Nonce :: forall c. ExMock (EraCrypto (ShelleyEra c)) => Nonce -epoch3Nonce = - chainCandidateNonce (expectedStEx6 @c) - ⭒ hashHeaderToNonce (bhHash $ bheader (blockEx4 @c)) - -blockEx7 :: forall c. ExMock (EraCrypto (ShelleyEra c)) => Block (BHeader c) (ShelleyEra c) -blockEx7 = - mkBlockFakeVRF - (bhHash $ bheader @(BHeader c) @(ShelleyEra c) blockEx6) - (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 310) - [] - (SlotNo 310) - (BlockNo 7) - (epoch3Nonce @c) - (NatNonce 7) - minBound - 15 - 15 - (mkOCert (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 310) 1 (KESPeriod 15)) - -expectedStEx7 :: forall c. ExMock (EraCrypto (ShelleyEra c)) => ChainState (ShelleyEra c) -expectedStEx7 = - C.newEpoch blockEx7 - . C.newSnapshot snapEx5 (Coin 0) - . C.applyRewardUpdate rewardUpdateEx6 - . C.setOCertCounter coreNodeHK 1 - $ expectedStEx6 - where - coreNodeHK = coerceKeyRole . aikColdKeyHash $ coreNodeKeysBySchedule @(ShelleyEra c) ppEx 310 - --- === Block 7, Slot 310, Epoch 3 --- --- Create an empty block in the next epoch --- to prepare the way for the first non-trivial reward update -poolLifetime7 :: ExMock (EraCrypto (ShelleyEra c)) => CHAINExample (BHeader c) (ShelleyEra c) -poolLifetime7 = CHAINExample expectedStEx6 blockEx7 (Right expectedStEx7) - --- --- Block 8, Slot 390, Epoch 3 --- - -blockEx8 :: forall c. ExMock (EraCrypto (ShelleyEra c)) => Block (BHeader c) (ShelleyEra c) -blockEx8 = - mkBlockFakeVRF - (bhHash $ bheader @(BHeader c) @(ShelleyEra c) blockEx7) - (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 390) - [] - (SlotNo 390) - (BlockNo 8) - (epoch3Nonce @c) - (NatNonce 8) - minBound - 19 - 19 - (mkOCert (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 390) 2 (KESPeriod 19)) - -aliceRAcnt8 :: Coin -aliceRAcnt8 = Coin 11654787878 - -bobRAcnt8 :: Coin -bobRAcnt8 = Coin 1038545454 - -deltaT8' :: Coin -deltaT8' = Coin 317333333333 - -deltaT8 :: DeltaCoin -deltaT8 = toDeltaCoin deltaT8' - -deltaR8 :: DeltaCoin -deltaR8 = DeltaCoin (-330026666665) - -reserves7 :: Coin -reserves7 = Coin 33999999999999900 - -rewardPot8 :: Coin -rewardPot8 = Coin 1269333333333 - -alicePerfEx8 :: Likelihood -alicePerfEx8 = likelihood blocks t (epochSize $ EpochNo 3) - where - blocks = 1 - t = leaderProbability f relativeStake (unsafeBoundRational 0.5) - (Coin stake) = aliceCoinEx2Base <> aliceCoinEx2Ptr <> bobInitCoin - (Coin tot) = maxLLSupply <-> reserves7 - relativeStake = fromRational (stake % tot) - f = activeSlotCoeff testGlobals - -nonMyopicEx8 :: forall c. Cr.Crypto c => NonMyopic c -nonMyopicEx8 = - NonMyopic - (Map.singleton (aikColdKeyHash Cast.alicePoolKeys) alicePerfEx8) - rewardPot8 - -pulserEx8 :: forall c. ExMock c => PulsingRewUpdate c -pulserEx8 = - makeCompletedPulser (BlocksMade $ Map.singleton (aikColdKeyHash Cast.alicePoolKeys) 1) expectedStEx7 - -rewardUpdateEx8 :: forall c. Cr.Crypto c => RewardUpdate c -rewardUpdateEx8 = - RewardUpdate - { deltaT = deltaT8 - , deltaR = deltaR8 - , rs = - Map.fromList - [ - ( Cast.aliceSHK - , Set.singleton $ Reward LeaderReward (aikColdKeyHash Cast.alicePoolKeys) aliceRAcnt8 - ) - , - ( Cast.bobSHK - , Set.singleton $ Reward MemberReward (aikColdKeyHash Cast.alicePoolKeys) bobRAcnt8 - ) - ] - , deltaF = DeltaCoin 0 - , nonMyopic = nonMyopicEx8 - } - -expectedStEx8 :: forall c. ExMock (EraCrypto (ShelleyEra c)) => ChainState (ShelleyEra c) -expectedStEx8 = - C.evolveNonceFrozen (getBlockNonce (blockEx8 @c)) - . C.newLab blockEx8 - . C.setOCertCounter coreNodeHK 2 - . C.pulserUpdate pulserEx8 - $ expectedStEx7 - where - coreNodeHK = coerceKeyRole . aikColdKeyHash $ coreNodeKeysBySchedule @(ShelleyEra c) ppEx 390 - --- === Block 8, Slot 390, Epoch 3 --- --- Create the first non-trivial reward update. -poolLifetime8 :: ExMock (EraCrypto (ShelleyEra c)) => CHAINExample (BHeader c) (ShelleyEra c) -poolLifetime8 = CHAINExample expectedStEx7 blockEx8 (Right expectedStEx8) - --- --- Block 9, Slot 410, Epoch 4 --- - -epoch4Nonce :: forall c. ExMock (EraCrypto (ShelleyEra c)) => Nonce -epoch4Nonce = - chainCandidateNonce (expectedStEx8 @c) - ⭒ hashHeaderToNonce (bhHash $ bheader (blockEx6 @c)) - -blockEx9 :: forall c. ExMock (EraCrypto (ShelleyEra c)) => Block (BHeader c) (ShelleyEra c) -blockEx9 = - mkBlockFakeVRF - (bhHash $ bheader @(BHeader c) @(ShelleyEra c) blockEx8) - (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 410) - [] - (SlotNo 410) - (BlockNo 9) - (epoch4Nonce @c) - (NatNonce 9) - minBound - 20 - 20 - (mkOCert (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 410) 2 (KESPeriod 20)) - -snapEx9 :: forall c. Cr.Crypto c => EB.SnapShot c -snapEx9 = - snapEx5 - { EB.ssStake = - mkStake - [ (Cast.bobSHK, bobInitCoin <> bobRAcnt8) - , (Cast.aliceSHK, aliceCoinEx4Base <> aliceCoinEx2Ptr <> aliceRAcnt8) - , (Cast.carlSHK, carlMIR) - ] - } - -expectedStEx9 :: forall c. ExMock (EraCrypto (ShelleyEra c)) => ChainState (ShelleyEra c) -expectedStEx9 = - C.newEpoch blockEx9 - . C.newSnapshot snapEx9 (Coin 0) - . C.applyRewardUpdate rewardUpdateEx8 - . C.setOCertCounter coreNodeHK 2 - $ expectedStEx8 - where - coreNodeHK = coerceKeyRole . aikColdKeyHash $ coreNodeKeysBySchedule @(ShelleyEra c) ppEx 410 - --- === Block 9, Slot 410, Epoch 4 --- --- Apply the first non-trivial reward update. -poolLifetime9 :: ExMock (EraCrypto (ShelleyEra c)) => CHAINExample (BHeader c) (ShelleyEra c) -poolLifetime9 = CHAINExample expectedStEx8 blockEx9 (Right expectedStEx9) - --- --- Block 10, Slot 420, Epoch 4 --- - -feeTx10 :: Coin -feeTx10 = Coin 9 - -bobAda10 :: Coin -bobAda10 = - bobRAcnt8 - <+> bobInitCoin - <+> Coin 7 - <-> feeTx10 - -txbodyEx10 :: Cr.Crypto c => ShelleyTxBody (ShelleyEra c) -txbodyEx10 = - ShelleyTxBody - (Set.fromList [mkTxInPartial genesisId 1]) - (StrictSeq.singleton $ ShelleyTxOut Cast.bobAddr (Val.inject bobAda10)) - (StrictSeq.fromList [UnRegTxCert Cast.bobSHK]) - (Withdrawals $ Map.singleton (RewardAccount Testnet Cast.bobSHK) bobRAcnt8) - feeTx10 - (SlotNo 500) - SNothing - SNothing - -txEx10 :: forall c. ExMock (EraCrypto (ShelleyEra c)) => ShelleyTx (ShelleyEra c) -txEx10 = - ShelleyTx - txbodyEx10 - mempty - { addrWits = - mkWitnessesVKey (hashAnnotated (txbodyEx10 @c)) [asWitness Cast.bobPay, asWitness Cast.bobStake] - } - SNothing - -blockEx10 :: forall c. ExMock (EraCrypto (ShelleyEra c)) => Block (BHeader c) (ShelleyEra c) -blockEx10 = - mkBlockFakeVRF - (bhHash $ bheader @(BHeader c) @(ShelleyEra c) blockEx9) - (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 420) - [txEx10] - (SlotNo 420) - (BlockNo 10) - (epoch4Nonce @c) - (NatNonce 10) - minBound - 21 - 19 - (mkOCert (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 420) 2 (KESPeriod 19)) - -expectedStEx10 :: forall c. ExMock (EraCrypto (ShelleyEra c)) => ChainState (ShelleyEra c) -expectedStEx10 = - C.evolveNonceUnfrozen (getBlockNonce (blockEx10 @c)) - . C.newLab blockEx10 - . C.deregStakeCred Cast.bobSHK - . C.feesAndKeyRefund feeTx10 Cast.bobSHK -- We must zero out the refund, before we deregister - -- because we loose the refund amount otherwise - . C.newUTxO txbodyEx10 - $ expectedStEx9 - --- === Block 10, Slot 420, Epoch 4 --- --- Drain Bob's reward account and de-register Bob's stake key. -poolLifetime10 :: ExMock (EraCrypto (ShelleyEra c)) => CHAINExample (BHeader c) (ShelleyEra c) -poolLifetime10 = CHAINExample expectedStEx9 blockEx10 (Right expectedStEx10) - --- --- Block 11, Slot 490, Epoch 4 --- - -feeTx11 :: Coin -feeTx11 = Coin 2 - -aliceCoinEx11Ptr :: Coin -aliceCoinEx11Ptr = aliceCoinEx4Base <-> feeTx11 - -aliceRetireEpoch :: EpochNo -aliceRetireEpoch = EpochNo 5 - -txbodyEx11 :: forall c. Cr.Crypto c => ShelleyTxBody (ShelleyEra c) -txbodyEx11 = - ShelleyTxBody - (Set.fromList [TxIn (txIdTxBody txbodyEx4) minBound]) - (StrictSeq.singleton $ ShelleyTxOut Cast.alicePtrAddr (Val.inject aliceCoinEx11Ptr)) - (StrictSeq.fromList [RetirePoolTxCert (aikColdKeyHash Cast.alicePoolKeys) aliceRetireEpoch]) - (Withdrawals Map.empty) - feeTx11 - (SlotNo 500) - SNothing - SNothing - -txEx11 :: forall c. ExMock (EraCrypto (ShelleyEra c)) => ShelleyTx (ShelleyEra c) -txEx11 = - ShelleyTx - txbodyEx11 - mempty - { addrWits = - mkWitnessesVKey - (hashAnnotated (txbodyEx11 @c)) - ( [asWitness Cast.alicePay] - <> [asWitness $ aikCold Cast.alicePoolKeys] - ) - } - SNothing - -blockEx11 :: forall c. ExMock (EraCrypto (ShelleyEra c)) => Block (BHeader c) (ShelleyEra c) -blockEx11 = - mkBlockFakeVRF - (bhHash $ bheader @(BHeader c) @(ShelleyEra c) blockEx10) - (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 490) - [txEx11] - (SlotNo 490) - (BlockNo 11) - (epoch4Nonce @c) - (NatNonce 11) - minBound - 24 - 19 - (mkOCert (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 490) 2 (KESPeriod 19)) - -reserves12 :: Coin -reserves12 = addDeltaCoin reserves7 deltaR8 - -alicePerfEx11 :: forall c. Cr.Crypto c => Likelihood -alicePerfEx11 = applyDecay decayFactor alicePerfEx8 <> epoch4Likelihood - where - epoch4Likelihood = likelihood blocks t (epochSize $ EpochNo 4) - blocks = 0 - t = leaderProbability f relativeStake (unsafeBoundRational 0.5) - -- everyone has delegated to Alice's Pool - Coin stake = EB.sumAllStake (EB.ssStake $ snapEx5 @c) - relativeStake = fromRational (stake % supply) - Coin supply = maxLLSupply <-> reserves12 - f = activeSlotCoeff testGlobals - -nonMyopicEx11 :: forall c. Cr.Crypto c => NonMyopic c -nonMyopicEx11 = - NonMyopic - (Map.singleton (aikColdKeyHash Cast.alicePoolKeys) (alicePerfEx11 @c)) - (Coin 0) - -pulserEx11 :: forall c. ExMock c => PulsingRewUpdate c -pulserEx11 = makeCompletedPulser (BlocksMade mempty) expectedStEx10 - -rewardUpdateEx11 :: forall c. Cr.Crypto c => RewardUpdate c -rewardUpdateEx11 = - RewardUpdate - { deltaT = DeltaCoin 0 - , deltaR = DeltaCoin 0 - , rs = Map.empty - , deltaF = DeltaCoin 0 - , nonMyopic = nonMyopicEx11 - } - -expectedStEx11 :: forall c. ExMock (EraCrypto (ShelleyEra c)) => ChainState (ShelleyEra c) -expectedStEx11 = - C.evolveNonceFrozen (getBlockNonce (blockEx11 @c)) - . C.newLab blockEx11 - . C.feesAndDeposits ppEx feeTx11 [] [] - . C.newUTxO txbodyEx11 - . C.pulserUpdate pulserEx11 - . C.stageRetirement (aikColdKeyHash Cast.alicePoolKeys) aliceRetireEpoch - $ expectedStEx10 - --- === Block 11, Slot 490, Epoch 4 --- --- Stage the retirement of Alice's stake pool. -poolLifetime11 :: ExMock (EraCrypto (ShelleyEra c)) => CHAINExample (BHeader c) (ShelleyEra c) -poolLifetime11 = CHAINExample expectedStEx10 blockEx11 (Right expectedStEx11) - --- --- Block 12, Slot 510, Epoch 5 --- - -epoch5Nonce :: forall c. ExMock (EraCrypto (ShelleyEra c)) => Nonce -epoch5Nonce = - chainCandidateNonce (expectedStEx11 @c) - ⭒ hashHeaderToNonce (bhHash $ bheader (blockEx8 @c)) - -blockEx12 :: forall c. ExMock (EraCrypto (ShelleyEra c)) => Block (BHeader c) (ShelleyEra c) -blockEx12 = - mkBlockFakeVRF - (bhHash $ bheader @(BHeader c) @(ShelleyEra c) blockEx11) - (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 510) - [] - (SlotNo 510) - (BlockNo 12) - (epoch5Nonce @c) - (NatNonce 12) - minBound - 25 - 25 - (mkOCert (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 510) 3 (KESPeriod 25)) - -snapEx12 :: forall c. Cr.Crypto c => EB.SnapShot c -snapEx12 = - snapEx9 - { EB.ssStake = - mkStake - [ (Cast.aliceSHK, aliceRAcnt8 <> aliceCoinEx2Ptr <> aliceCoinEx11Ptr) - , (Cast.carlSHK, carlMIR) - ] - , EB.ssDelegations = - [ (Cast.aliceSHK, aikColdKeyHash Cast.alicePoolKeys) - , (Cast.carlSHK, aikColdKeyHash Cast.alicePoolKeys) - ] - } - -expectedStEx12 :: forall c. ExMock (EraCrypto (ShelleyEra c)) => ChainState (ShelleyEra c) -expectedStEx12 = - C.newEpoch blockEx12 - . C.newSnapshot snapEx12 (Coin 11) - . C.applyRewardUpdate rewardUpdateEx11 - . C.setOCertCounter coreNodeHK 3 - . C.reapPool Cast.alicePoolParams - $ expectedStEx11 - where - coreNodeHK = coerceKeyRole . aikColdKeyHash $ coreNodeKeysBySchedule @(ShelleyEra c) ppEx 510 - --- === Block 12, Slot 510, Epoch 5 --- --- Reap Alice's stake pool. -poolLifetime12 :: ExMock (EraCrypto (ShelleyEra c)) => CHAINExample (BHeader c) (ShelleyEra c) -poolLifetime12 = CHAINExample expectedStEx11 blockEx12 (Right expectedStEx12) - --- --- Pool Lifetime Test Group --- - -poolLifetimeExample :: TestTree -poolLifetimeExample = - testGroup - "pool lifetime" - [ testCase "initial registrations" $ testCHAINExample poolLifetime1 - , testCase "delegate stake and create reward update" $ testCHAINExample poolLifetime2 - , testCase "new epoch changes" $ testCHAINExample poolLifetime3 - , testCase "second reward update" $ testCHAINExample poolLifetime4 - , testCase "nonempty pool distr" $ testCHAINExample poolLifetime5 - , testCase "decentralized block" $ testCHAINExample poolLifetime6 - , testCase "prelude to the first nontrivial rewards" $ testCHAINExample poolLifetime7 - , testCase "create a nontrivial rewards" $ testCHAINExample poolLifetime8 - , testCase "apply a nontrivial rewards" $ testCHAINExample poolLifetime9 - , testCase "drain reward account and deregister" $ testCHAINExample poolLifetime10 - , testCase "stage stake pool retirement" $ testCHAINExample poolLifetime11 - , testCase "reap stake pool" $ testCHAINExample poolLifetime12 - ] diff --git a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/PoolReReg.hs b/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/PoolReReg.hs deleted file mode 100644 index 75cd55a1a09..00000000000 --- a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/PoolReReg.hs +++ /dev/null @@ -1,320 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE OverloadedLists #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - --- | --- Module : Test.Cardano.Ledger.Shelley.Examples.PoolReReg --- Description : Pool Re-Registration --- --- Example demonstrating the adoption of of pool parameters --- when re-registratiing. -module Test.Cardano.Ledger.Shelley.Examples.PoolReReg ( - poolReRegExample, -) -where - -import Cardano.Ledger.BaseTypes ( - BlocksMade (..), - Globals (..), - Nonce, - StrictMaybe (..), - ) -import Cardano.Ledger.Block (Block, bheader) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Crypto -import Cardano.Ledger.EpochBoundary (SnapShot (ssPoolParams), emptySnapShot) -import Cardano.Ledger.Keys (asWitness) -import Cardano.Ledger.PoolParams (PoolParams (..)) -import Cardano.Ledger.SafeHash (hashAnnotated) -import Cardano.Ledger.Shelley (ShelleyEra) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState (PulsingRewUpdate, emptyRewardUpdate) -import Cardano.Ledger.Shelley.Tx (ShelleyTx (..)) -import Cardano.Ledger.Shelley.TxBody (ShelleyTxBody (..)) -import Cardano.Ledger.Shelley.TxOut (ShelleyTxOut (..)) -import Cardano.Ledger.Shelley.TxWits (addrWits) -import Cardano.Ledger.Slot (BlockNo (..), SlotNo (..)) -import Cardano.Ledger.TxIn (TxIn (..)) -import Cardano.Ledger.UTxO (UTxO (..)) -import Cardano.Ledger.Val ((<+>), (<->)) -import qualified Cardano.Ledger.Val as Val -import Cardano.Protocol.TPraos.BHeader (BHeader, bhHash) -import Cardano.Protocol.TPraos.OCert (KESPeriod (..)) -import qualified Data.Map.Strict as Map -import qualified Data.Sequence.Strict as StrictSeq -import qualified Data.Set as Set -import Data.Word (Word64) -import GHC.Stack (HasCallStack) -import Test.Cardano.Ledger.Core.KeyPair (mkWitnessesVKey) -import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes (ExMock) -import Test.Cardano.Ledger.Shelley.Examples (CHAINExample (..), testCHAINExample) -import qualified Test.Cardano.Ledger.Shelley.Examples.Cast as Cast -import qualified Test.Cardano.Ledger.Shelley.Examples.Combinators as C -import Test.Cardano.Ledger.Shelley.Examples.Federation (coreNodeKeysBySchedule) -import Test.Cardano.Ledger.Shelley.Examples.Init ( - initSt, - lastByronHeaderHash, - nonce0, - ppEx, - ) -import Test.Cardano.Ledger.Shelley.Examples.PoolLifetime (makeCompletedPulser) -import Test.Cardano.Ledger.Shelley.Generator.Core ( - AllIssuerKeys (..), - NatNonce (..), - genesisCoins, - mkBlockFakeVRF, - mkOCert, - ) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (genesisId) -import Test.Cardano.Ledger.Shelley.Generator.ShelleyEraGen () -import Test.Cardano.Ledger.Shelley.Rules.Chain (ChainState (..)) -import Test.Cardano.Ledger.Shelley.Utils (getBlockNonce, testGlobals) -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.HUnit (testCase) - -aliceInitCoin :: Coin -aliceInitCoin = Coin $ 10 * 1000 * 1000 * 1000 * 1000 * 1000 - -initUTxO :: Crypto c => UTxO (ShelleyEra c) -initUTxO = genesisCoins genesisId [ShelleyTxOut Cast.aliceAddr (Val.inject aliceInitCoin)] - -initStPoolReReg :: Crypto c => ChainState (ShelleyEra c) -initStPoolReReg = initSt initUTxO - --- --- Block 1, Slot 10, Epoch 0 --- - -feeTx1 :: Coin -feeTx1 = Coin 3 - -aliceCoinEx1 :: Coin -aliceCoinEx1 = aliceInitCoin <-> Coin 250 <-> feeTx1 - -txbodyEx1 :: Crypto c => ShelleyTxBody (ShelleyEra c) -txbodyEx1 = - ShelleyTxBody - (Set.fromList [TxIn genesisId minBound]) - (StrictSeq.fromList [ShelleyTxOut Cast.aliceAddr (Val.inject aliceCoinEx1)]) - (StrictSeq.fromList [RegPoolTxCert Cast.alicePoolParams]) - (Withdrawals Map.empty) - feeTx1 - (SlotNo 10) - SNothing - SNothing - -txEx1 :: forall c. (Crypto c, ExMock (EraCrypto (ShelleyEra c))) => ShelleyTx (ShelleyEra c) -txEx1 = - ShelleyTx - txbodyEx1 - mempty - { addrWits = - mkWitnessesVKey - (hashAnnotated $ txbodyEx1 @c) - ( [asWitness $ Cast.alicePay] - <> [asWitness $ Cast.aliceStake] - <> [asWitness $ aikCold Cast.alicePoolKeys] - ) - } - SNothing - -blockEx1 :: - forall c. - (HasCallStack, ExMock (EraCrypto (ShelleyEra c))) => - Block (BHeader c) (ShelleyEra c) -blockEx1 = - mkBlockFakeVRF - lastByronHeaderHash - (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 10) - [txEx1] - (SlotNo 10) - (BlockNo 1) - (nonce0 @(EraCrypto (ShelleyEra c))) - (NatNonce 1) - minBound - 0 - 0 - (mkOCert (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 10) 0 (KESPeriod 0)) - -expectedStEx1 :: - forall c. - ExMock (EraCrypto (ShelleyEra c)) => - ChainState (ShelleyEra c) -expectedStEx1 = - C.evolveNonceUnfrozen (getBlockNonce (blockEx1 @c)) - . C.newLab blockEx1 - . C.feesAndDeposits ppEx feeTx1 [] [Cast.alicePoolParams] - . C.newUTxO txbodyEx1 - . C.newPool Cast.alicePoolParams - $ initStPoolReReg - --- === Block 1, Slot 10, Epoch 0 --- --- In the first block Alice registers a stake pool. -poolReReg1 :: ExMock (EraCrypto (ShelleyEra c)) => CHAINExample (BHeader c) (ShelleyEra c) -poolReReg1 = CHAINExample initStPoolReReg blockEx1 (Right expectedStEx1) - --- --- Block 2, Slot 20, Epoch 0 --- - -feeTx2 :: Coin -feeTx2 = Coin 3 - -aliceCoinEx2 :: Coin -aliceCoinEx2 = aliceCoinEx1 <-> feeTx2 - -newPoolParams :: Crypto c => PoolParams c -newPoolParams = Cast.alicePoolParams {ppCost = Coin 500} - -txbodyEx2 :: forall c. Crypto c => ShelleyTxBody (ShelleyEra c) -txbodyEx2 = - ShelleyTxBody - (Set.fromList [TxIn (txIdTxBody txbodyEx1) minBound]) - (StrictSeq.fromList [ShelleyTxOut Cast.aliceAddr (Val.inject aliceCoinEx2)]) - ( StrictSeq.fromList - ( [ RegPoolTxCert newPoolParams - ] - ) - ) - (Withdrawals Map.empty) - feeTx2 - (SlotNo 100) - SNothing - SNothing - -txEx2 :: forall c. (Crypto c, ExMock (EraCrypto (ShelleyEra c))) => ShelleyTx (ShelleyEra c) -txEx2 = - ShelleyTx - txbodyEx2 - mempty - { addrWits = - mkWitnessesVKey - (hashAnnotated $ txbodyEx2 @c) - ( (asWitness <$> [Cast.alicePay]) - <> (asWitness <$> [Cast.aliceStake]) - <> [asWitness $ aikCold Cast.alicePoolKeys] - ) - } - SNothing - -word64SlotToKesPeriodWord :: Word64 -> Word -word64SlotToKesPeriodWord slot = - fromIntegral (toInteger slot) `div` fromIntegral (toInteger $ slotsPerKESPeriod testGlobals) - -blockEx2 :: - forall c. ExMock (EraCrypto (ShelleyEra c)) => Word64 -> Block (BHeader c) (ShelleyEra c) -blockEx2 slot = - mkBlockFakeVRF - (bhHash $ bheader @(BHeader c) @(ShelleyEra c) blockEx1) - (coreNodeKeysBySchedule @(ShelleyEra c) ppEx slot) - [txEx2] - (SlotNo slot) - (BlockNo 2) - (nonce0 @(EraCrypto (ShelleyEra c))) - (NatNonce 2) - minBound - (word64SlotToKesPeriodWord slot) - 0 - (mkOCert (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 20) 0 (KESPeriod 0)) - -blockEx2A :: forall c. ExMock (EraCrypto (ShelleyEra c)) => Block (BHeader c) (ShelleyEra c) -blockEx2A = blockEx2 20 - -expectedStEx2 :: forall c. ExMock (EraCrypto (ShelleyEra c)) => ChainState (ShelleyEra c) -expectedStEx2 = - C.feesAndDeposits ppEx feeTx2 [] [newPoolParams] -- The deposit should be ignored because the poolId is already registered - . C.newUTxO txbodyEx2 - . C.reregPool newPoolParams - $ expectedStEx1 - -expectedStEx2A :: forall c. ExMock (EraCrypto (ShelleyEra c)) => ChainState (ShelleyEra c) -expectedStEx2A = - C.evolveNonceUnfrozen (getBlockNonce (blockEx2A @c)) - . C.newLab blockEx2A - $ expectedStEx2 - --- === Block 2, Slot 20, Epoch 0 --- --- In the second block Alice re-registers with new pool parameters --- early in the epoch. -poolReReg2A :: ExMock (EraCrypto (ShelleyEra c)) => CHAINExample (BHeader c) (ShelleyEra c) -poolReReg2A = CHAINExample expectedStEx1 blockEx2A (Right expectedStEx2A) - -pulserEx2 :: forall c. ExMock c => PulsingRewUpdate c -pulserEx2 = makeCompletedPulser (BlocksMade mempty) expectedStEx2 - -expectedStEx2B :: forall c. ExMock (EraCrypto (ShelleyEra c)) => ChainState (ShelleyEra c) -expectedStEx2B = - C.evolveNonceFrozen (getBlockNonce (blockEx2B @c)) - . C.newLab blockEx2B - . C.pulserUpdate pulserEx2 - $ expectedStEx2 - -blockEx2B :: forall c. ExMock (EraCrypto (ShelleyEra c)) => Block (BHeader c) (ShelleyEra c) -blockEx2B = blockEx2 90 - --- === Block 2, Slot 90, Epoch 0 --- --- In the second block Alice re-registers with new pool parameters --- late in the epoch. -poolReReg2B :: ExMock (EraCrypto (ShelleyEra c)) => CHAINExample (BHeader c) (ShelleyEra c) -poolReReg2B = CHAINExample expectedStEx1 blockEx2B (Right expectedStEx2B) - --- --- Block 3, Slot 110, Epoch 1 --- - -epoch1Nonce :: forall c. ExMock (EraCrypto (ShelleyEra c)) => Nonce -epoch1Nonce = chainCandidateNonce (expectedStEx2B @c) - -blockEx3 :: forall c. ExMock (EraCrypto (ShelleyEra c)) => Block (BHeader c) (ShelleyEra c) -blockEx3 = - mkBlockFakeVRF - (bhHash $ bheader @(BHeader c) @(ShelleyEra c) blockEx2B) - (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 110) - [] - (SlotNo 110) - (BlockNo 3) - (epoch1Nonce @c) - (NatNonce 3) - minBound - 5 - 0 - (mkOCert (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 110) 0 (KESPeriod 0)) - -snapEx3 :: Crypto c => SnapShot c -snapEx3 = - emptySnapShot {ssPoolParams = [(aikColdKeyHash Cast.alicePoolKeys, Cast.alicePoolParams)]} - -expectedStEx3 :: forall c. ExMock (EraCrypto (ShelleyEra c)) => ChainState (ShelleyEra c) -expectedStEx3 = - C.newEpoch blockEx3 - . C.newSnapshot snapEx3 (feeTx1 <+> feeTx2) - . C.applyRewardUpdate emptyRewardUpdate - . C.updatePoolParams newPoolParams - $ expectedStEx2B - --- === Block 3, Slot 110, Epoch 1 --- --- The third block is empty and trigger the epoch change, --- and Alice's new pool parameters are adopted. -poolReReg3 :: ExMock (EraCrypto (ShelleyEra c)) => CHAINExample (BHeader c) (ShelleyEra c) -poolReReg3 = CHAINExample expectedStEx2B blockEx3 (Right expectedStEx3) - --- --- Pool Lifetime Test Group --- - -poolReRegExample :: TestTree -poolReRegExample = - testGroup - "pool rereg" - [ testCase "initial pool registration" $ testCHAINExample poolReReg1 - , testCase "early epoch re-registration" $ testCHAINExample poolReReg2A - , testCase "late epoch re-registration" $ testCHAINExample poolReReg2B - , testCase "adopt new pool parameters" $ testCHAINExample poolReReg3 - ] diff --git a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/TwoPools.hs b/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/TwoPools.hs deleted file mode 100644 index 43ec66c583f..00000000000 --- a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/TwoPools.hs +++ /dev/null @@ -1,811 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE NumericUnderscores #-} -{-# LANGUAGE OverloadedLists #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - --- | --- Module : Test.Cardano.Ledger.Shelley.Examples.TwoPools --- Description : Two Pools Example --- --- Example demonstrating a particular delegation scenario involving --- two pools. Both pools select a reward account which is *not* --- a pool owner, and which delegates to one of the pools. -module Test.Cardano.Ledger.Shelley.Examples.TwoPools ( - twoPoolsExample, - twoPoolsExampleExtended, -) -where - -import Cardano.Ledger.BaseTypes ( - BlocksMade (..), - BoundedRational (..), - Globals (..), - Network (..), - Nonce, - ProtVer (..), - StrictMaybe (..), - activeSlotVal, - mkCertIxPartial, - natVersion, - (⭒), - ) -import Cardano.Ledger.Block (Block, bheader) -import Cardano.Ledger.Coin ( - Coin (..), - DeltaCoin (..), - rationalToCoinViaFloor, - toDeltaCoin, - ) -import Cardano.Ledger.Credential (Credential, Ptr (..)) -import Cardano.Ledger.Crypto -import qualified Cardano.Ledger.EpochBoundary as EB -import Cardano.Ledger.Keys (KeyRole (..), asWitness, coerceKeyRole) -import Cardano.Ledger.PoolDistr ( - IndividualPoolStake (..), - PoolDistr (..), - ) -import Cardano.Ledger.PoolParams (PoolParams (..)) -import Cardano.Ledger.SafeHash (hashAnnotated) -import Cardano.Ledger.Shelley -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState ( - PulsingRewUpdate (..), - RewardUpdate (..), - completeStep, - emptyRewardUpdate, - ) -import Cardano.Ledger.Shelley.PoolRank ( - Likelihood (..), - NonMyopic (..), - leaderProbability, - likelihood, - ) -import Cardano.Ledger.Shelley.Rewards ( - StakeShare (..), - aggregateRewards, - leaderRew, - memberRew, - mkApparentPerformance, - sumRewards, - ) -import Cardano.Ledger.Shelley.Tx ( - ShelleyTx (..), - ) -import Cardano.Ledger.Shelley.TxBody (RewardAccount (..), ShelleyTxBody (..)) -import Cardano.Ledger.Shelley.TxOut (ShelleyTxOut (..)) -import Cardano.Ledger.Shelley.TxWits ( - addrWits, - ) -import Cardano.Ledger.Slot ( - BlockNo (..), - EpochNo (..), - SlotNo (..), - ) -import Cardano.Ledger.TxIn (TxIn (..)) -import Cardano.Ledger.UTxO (UTxO (..)) -import Cardano.Ledger.Val ((<+>), (<->), (<×>)) -import qualified Cardano.Ledger.Val as Val -import Cardano.Protocol.TPraos.BHeader (BHeader, bhHash, hashHeaderToNonce) -import Cardano.Protocol.TPraos.OCert (KESPeriod (..)) -import Data.Default.Class (def) -import Data.Group (invert) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Ratio ((%)) -import qualified Data.Sequence.Strict as StrictSeq -import Data.Set (Set) -import qualified Data.Set as Set -import GHC.Stack (HasCallStack) -import Lens.Micro ((&), (.~), (^.)) -import Test.Cardano.Ledger.Core.KeyPair (mkWitnessesVKey) -import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes (C, C_Crypto, ExMock) -import Test.Cardano.Ledger.Shelley.Examples (CHAINExample (..), testCHAINExample) -import qualified Test.Cardano.Ledger.Shelley.Examples.Cast as Cast -import qualified Test.Cardano.Ledger.Shelley.Examples.Combinators as C -import Test.Cardano.Ledger.Shelley.Examples.Federation ( - coreNodeKeysBySchedule, - ) -import Test.Cardano.Ledger.Shelley.Examples.Init ( - initSt, - lastByronHeaderHash, - nonce0, - ppEx, - ) -import Test.Cardano.Ledger.Shelley.Examples.PoolLifetime (makeCompletedPulser, mkStake) -import Test.Cardano.Ledger.Shelley.Generator.Core ( - AllIssuerKeys (..), - NatNonce (..), - genesisCoins, - mkBlockFakeVRF, - mkOCert, - ) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (genesisId) -import Test.Cardano.Ledger.Shelley.Generator.ShelleyEraGen () -import Test.Cardano.Ledger.Shelley.Rules.Chain (ChainState (..)) -import Test.Cardano.Ledger.Shelley.Utils ( - epochSize, - getBlockNonce, - maxLLSupply, - runShelleyBase, - testGlobals, - unsafeBoundRational, - ) -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.HUnit (Assertion, testCase, (@?=)) - -aliceInitCoin :: Coin -aliceInitCoin = Coin 10_000_000_000_000_000 - -bobInitCoin :: Coin -bobInitCoin = Coin 1_000_000_000_000_000 - -carlInitCoin :: Coin -carlInitCoin = Coin 5_000_000_000_000_000 - -initUTxO :: UTxO C -initUTxO = - genesisCoins - genesisId - [ ShelleyTxOut Cast.aliceAddr (Val.inject aliceInitCoin) - , ShelleyTxOut Cast.bobAddr (Val.inject bobInitCoin) - , ShelleyTxOut Cast.carlAddr (Val.inject carlInitCoin) - ] - -initStTwoPools :: ChainState C -initStTwoPools = initSt initUTxO - --- --- Block 1, Slot 10, Epoch 0 --- - -aliceCoinEx1 :: Coin -aliceCoinEx1 = - aliceInitCoin - <-> ((2 :: Integer) <×> Coin 250) - <-> ((3 :: Integer) <×> Coin 7) - <-> feeTx1 - -feeTx1 :: Coin -feeTx1 = Coin 3 - -alicePoolParams' :: Crypto c => PoolParams c -alicePoolParams' = Cast.alicePoolParams {ppRewardAccount = RewardAccount Testnet Cast.carlSHK} - -bobPoolParams' :: Crypto c => PoolParams c -bobPoolParams' = Cast.bobPoolParams {ppRewardAccount = RewardAccount Testnet Cast.carlSHK} - -txbodyEx1 :: TxBody C -txbodyEx1 = - ShelleyTxBody - (Set.fromList [TxIn genesisId minBound]) - (StrictSeq.fromList [ShelleyTxOut Cast.aliceAddr (Val.inject aliceCoinEx1)]) - ( StrictSeq.fromList - [ RegTxCert Cast.aliceSHK - , RegTxCert Cast.bobSHK - , RegTxCert Cast.carlSHK - , RegPoolTxCert alicePoolParams' - , RegPoolTxCert bobPoolParams' - , DelegStakeTxCert Cast.aliceSHK (aikColdKeyHash Cast.alicePoolKeys) - , DelegStakeTxCert Cast.bobSHK (aikColdKeyHash Cast.bobPoolKeys) - , DelegStakeTxCert Cast.carlSHK (aikColdKeyHash Cast.alicePoolKeys) - ] - ) - (Withdrawals Map.empty) - feeTx1 - (SlotNo 10) - SNothing - SNothing - -txEx1 :: ShelleyTx C -txEx1 = - ShelleyTx - txbodyEx1 - mempty - { addrWits = - mkWitnessesVKey - (hashAnnotated txbodyEx1) - ( (asWitness <$> [Cast.alicePay]) - <> (asWitness <$> [Cast.aliceStake, Cast.bobStake, Cast.carlStake]) - <> (asWitness <$> [aikCold Cast.alicePoolKeys, aikCold Cast.bobPoolKeys]) - ) - } - SNothing - -blockEx1 :: HasCallStack => Block (BHeader C_Crypto) C -blockEx1 = - mkBlockFakeVRF - lastByronHeaderHash - (coreNodeKeysBySchedule @C ppEx 10) - [txEx1] - (SlotNo 10) - (BlockNo 1) - (nonce0 @C_Crypto) - (NatNonce 1) - minBound - 0 - 0 - (mkOCert (coreNodeKeysBySchedule @C ppEx 10) 0 (KESPeriod 0)) - -expectedStEx1 :: ChainState C -expectedStEx1 = - C.evolveNonceUnfrozen (getBlockNonce blockEx1) - . C.newLab blockEx1 - . C.feesAndDeposits - ppEx - feeTx1 - [Cast.aliceSHK, Cast.bobSHK, Cast.carlSHK] - [alicePoolParams', bobPoolParams'] - . C.newUTxO txbodyEx1 - . C.newStakeCred Cast.aliceSHK (Ptr (SlotNo 10) minBound (mkCertIxPartial 0)) - . C.newStakeCred Cast.bobSHK (Ptr (SlotNo 10) minBound (mkCertIxPartial 1)) - . C.newStakeCred Cast.carlSHK (Ptr (SlotNo 10) minBound (mkCertIxPartial 2)) - . C.newPool alicePoolParams' - . C.newPool bobPoolParams' - . C.delegation Cast.aliceSHK (ppId alicePoolParams') - . C.delegation Cast.bobSHK (ppId bobPoolParams') - . C.delegation Cast.carlSHK (ppId alicePoolParams') - $ initStTwoPools - --- === Block 1, Slot 10, Epoch 0 --- --- In the first block of this example, Alice, Bob, and Carl register --- stake credentials, Alice and Bob register stake pools, --- Alice and Carl delegate to Alice's pool, and Bob delegates to Bob's pool. --- --- This is the only block in this example that includes a transaction, --- and after this block is processed, the UTxO will consist entirely --- of Alice's new coin aliceCoinEx1, and Bob and Carls initial genesis coins. -twoPools1 :: CHAINExample (BHeader C_Crypto) C -twoPools1 = CHAINExample initStTwoPools blockEx1 (Right expectedStEx1) - --- --- Block 2, Slot 90, Epoch 0 --- -blockEx2 :: Block (BHeader C_Crypto) C -blockEx2 = - mkBlockFakeVRF - (bhHash $ bheader blockEx1) - (coreNodeKeysBySchedule @C ppEx 90) - [] - (SlotNo 90) - (BlockNo 2) - (nonce0 @C_Crypto) - (NatNonce 2) - minBound - 4 - 0 - (mkOCert (coreNodeKeysBySchedule @C ppEx 90) 0 (KESPeriod 0)) - -expectedStEx2 :: ChainState C -expectedStEx2 = - C.evolveNonceFrozen (getBlockNonce blockEx2) - . C.newLab blockEx2 - . C.rewardUpdate emptyRewardUpdate - $ expectedStEx1 - --- === Block 2, Slot 90, Epoch 0 --- --- Create an empty block near the end of epoch 0 to close out the epoch. -twoPools2 :: CHAINExample (BHeader C_Crypto) C -twoPools2 = CHAINExample expectedStEx1 blockEx2 (Right expectedStEx2) - --- --- Block 3, Slot 110, Epoch 1 --- - -epoch1Nonce :: Nonce -epoch1Nonce = chainCandidateNonce expectedStEx2 - -blockEx3 :: Block (BHeader C_Crypto) C -blockEx3 = - mkBlockFakeVRF - (bhHash $ bheader @(BHeader C_Crypto) blockEx2) - (coreNodeKeysBySchedule @C ppEx 110) - [] - (SlotNo 110) - (BlockNo 3) - epoch1Nonce - (NatNonce 3) - minBound - 5 - 0 - (mkOCert (coreNodeKeysBySchedule @C ppEx 110) 0 (KESPeriod 0)) - -snapEx3 :: ExMock c => EB.SnapShot c -snapEx3 = - EB.SnapShot - { EB.ssStake = - mkStake - [ (Cast.aliceSHK, aliceCoinEx1) - , (Cast.bobSHK, bobInitCoin) - , (Cast.carlSHK, carlInitCoin) - ] - , EB.ssDelegations = - [ (Cast.aliceSHK, aikColdKeyHash Cast.alicePoolKeys) - , (Cast.bobSHK, aikColdKeyHash Cast.bobPoolKeys) - , (Cast.carlSHK, aikColdKeyHash Cast.alicePoolKeys) - ] - , EB.ssPoolParams = - [ (aikColdKeyHash Cast.alicePoolKeys, alicePoolParams') - , (aikColdKeyHash Cast.bobPoolKeys, bobPoolParams') - ] - } - -expectedStEx3 :: ChainState C -expectedStEx3 = - C.newEpoch blockEx3 - . C.newSnapshot snapEx3 feeTx1 - . C.applyRewardUpdate emptyRewardUpdate - $ expectedStEx2 - --- === Block 3, Slot 110, Epoch 1 --- --- Create an empty block at the begining of epoch 1 to trigger the epoch change. -twoPools3 :: CHAINExample (BHeader C_Crypto) C -twoPools3 = CHAINExample expectedStEx2 blockEx3 (Right expectedStEx3) - --- --- Block 4, Slot 190, Epoch 1 --- - -blockEx4 :: Block (BHeader C_Crypto) C -blockEx4 = - mkBlockFakeVRF - (bhHash $ bheader @(BHeader C_Crypto) blockEx3) - (coreNodeKeysBySchedule @C ppEx 190) - [] - (SlotNo 190) - (BlockNo 4) - epoch1Nonce - (NatNonce 4) - minBound - 9 - 0 - (mkOCert (coreNodeKeysBySchedule @C ppEx 190) 0 (KESPeriod 0)) - -deltaREx4 :: Coin -deltaREx4 = Coin 3 - -rewardUpdateEx4 :: forall c. RewardUpdate c -rewardUpdateEx4 = - RewardUpdate - { deltaT = DeltaCoin 0 - , deltaR = toDeltaCoin deltaREx4 -- No rewards paid out, fees go to reserves - , rs = Map.empty - , deltaF = invert $ toDeltaCoin feeTx1 - , nonMyopic = def {rewardPotNM = feeTx1} - } - -expectedStEx4 :: ChainState C -expectedStEx4 = - C.evolveNonceFrozen (getBlockNonce blockEx4) - . C.newLab blockEx4 - . C.rewardUpdate rewardUpdateEx4 - $ expectedStEx3 - --- === Block 4, Slot 190, Epoch 1 --- --- Create an empty block near the end of epoch 0 to close out the epoch, --- preparing the way for the first non-empty pool distribution. -twoPools4 :: CHAINExample (BHeader C_Crypto) C -twoPools4 = CHAINExample expectedStEx3 blockEx4 (Right expectedStEx4) - -epoch2Nonce :: Nonce -epoch2Nonce = - chainCandidateNonce expectedStEx4 - ⭒ hashHeaderToNonce (bhHash $ bheader blockEx2) - --- --- Block 5, Slot 221, Epoch 2 --- - -blockEx5 :: Block (BHeader C_Crypto) C -blockEx5 = - mkBlockFakeVRF - (bhHash $ bheader @(BHeader C_Crypto) blockEx4) - Cast.alicePoolKeys - [] - (SlotNo 221) -- odd slots open for decentralization - (BlockNo 5) - epoch2Nonce - (NatNonce 5) - minBound - 11 - 10 - (mkOCert Cast.alicePoolKeys 0 (KESPeriod 10)) - -activeStakeEx5 :: Integer -activeStakeEx5 = sum $ map unCoin [aliceCoinEx1, bobInitCoin, carlInitCoin] - -alicePoolStake :: Rational -alicePoolStake = (unCoin aliceCoinEx1 + unCoin carlInitCoin) % activeStakeEx5 - -bobPoolStake :: Rational -bobPoolStake = unCoin bobInitCoin % activeStakeEx5 - -pdEx5 :: forall c. Crypto c => PoolDistr c -pdEx5 = - PoolDistr $ - Map.fromList - [ - ( aikColdKeyHash $ Cast.alicePoolKeys @c - , IndividualPoolStake alicePoolStake (Cast.aliceVRFKeyHash @c) - ) - , - ( aikColdKeyHash $ Cast.bobPoolKeys @c - , IndividualPoolStake bobPoolStake (Cast.bobVRFKeyHash @c) - ) - ] - -expectedStEx5 :: ChainState C -expectedStEx5 = - C.incrBlockCount (aikColdKeyHash Cast.alicePoolKeys) - . C.newSnapshot snapEx3 (Coin 0) - . C.applyRewardUpdate rewardUpdateEx4 - . C.setPoolDistr pdEx5 - . C.setOCertCounter (coerceKeyRole $ aikColdKeyHash Cast.alicePoolKeys) 0 - . C.newEpoch blockEx5 -- This must be processed before the incrBlockCount - $ expectedStEx4 - --- === Block 5, Slot 220, Epoch 2 --- --- Create the first non-empty pool distribution by starting the epoch 2. --- Moreover, Alice's pool produces the block. -twoPools5 :: CHAINExample (BHeader C_Crypto) C -twoPools5 = CHAINExample expectedStEx4 blockEx5 (Right expectedStEx5) - --- --- Block 6, Slot 295, Epoch 2 --- - -blockEx6 :: Block (BHeader C_Crypto) C -blockEx6 = - mkBlockFakeVRF - (bhHash $ bheader @(BHeader C_Crypto) blockEx5) - Cast.alicePoolKeys - [] - (SlotNo 295) -- odd slots open for decentralization - (BlockNo 6) - epoch2Nonce - (NatNonce 6) - minBound - 14 - 14 - (mkOCert Cast.alicePoolKeys 0 (KESPeriod 14)) - -expectedStEx6 :: ChainState C -expectedStEx6 = - C.evolveNonceFrozen (getBlockNonce blockEx6) - . C.newLab blockEx6 - . C.setOCertCounter (coerceKeyRole $ aikColdKeyHash Cast.alicePoolKeys) 0 - . C.incrBlockCount (aikColdKeyHash Cast.alicePoolKeys) - . C.rewardUpdate emptyRewardUpdate - $ expectedStEx5 - --- === Block 6, Slot 295, Epoch 2 --- --- Alice's pool produces a second block. -twoPools6 :: CHAINExample (BHeader C_Crypto) C -twoPools6 = CHAINExample expectedStEx5 blockEx6 (Right expectedStEx6) - --- --- Block 7, Slot 297, Epoch 2 --- - -blockEx7 :: Block (BHeader C_Crypto) C -blockEx7 = - mkBlockFakeVRF - (bhHash $ bheader @(BHeader C_Crypto) blockEx6) - Cast.bobPoolKeys - [] - (SlotNo 297) -- odd slots open for decentralization - (BlockNo 7) - epoch2Nonce - (NatNonce 7) - minBound - 14 - 14 - (mkOCert Cast.bobPoolKeys 0 (KESPeriod 14)) - -expectedStEx7 :: ChainState C -expectedStEx7 = - C.evolveNonceFrozen (getBlockNonce blockEx7) - . C.newLab blockEx7 - . C.setOCertCounter (coerceKeyRole $ aikColdKeyHash Cast.bobPoolKeys) 0 - . C.incrBlockCount (aikColdKeyHash Cast.bobPoolKeys) - $ expectedStEx6 - --- === Block 7, Slot 295, Epoch 2 --- --- Bob's pool produces a block. -twoPools7 :: CHAINExample (BHeader C_Crypto) C -twoPools7 = CHAINExample expectedStEx6 blockEx7 (Right expectedStEx7) - --- --- Block 8, Slot 310, Epoch 3 --- - -epoch3Nonce :: Nonce -epoch3Nonce = - chainCandidateNonce expectedStEx7 - ⭒ hashHeaderToNonce (bhHash $ bheader blockEx4) - -blockEx8 :: Block (BHeader C_Crypto) C -blockEx8 = - mkBlockFakeVRF - (bhHash $ bheader @(BHeader C_Crypto) blockEx7) - (coreNodeKeysBySchedule @C ppEx 310) - [] - (SlotNo 310) - (BlockNo 8) - epoch3Nonce - (NatNonce 8) - minBound - 15 - 15 - (mkOCert (coreNodeKeysBySchedule @C ppEx 310) 1 (KESPeriod 15)) - -expectedStEx8 :: ChainState C -expectedStEx8 = - C.newEpoch blockEx8 - . C.newSnapshot snapEx3 (Coin 0) - . C.setOCertCounter coreNodeHK 1 - . C.applyRewardUpdate emptyRewardUpdate - $ expectedStEx7 - where - coreNodeHK = coerceKeyRole . aikColdKeyHash $ coreNodeKeysBySchedule @C ppEx 310 - --- === Block 8, Slot 310, Epoch 3 --- --- Create an empty block to start epoch 3. -twoPools8 :: CHAINExample (BHeader C_Crypto) C -twoPools8 = CHAINExample expectedStEx7 blockEx8 (Right expectedStEx8) - --- --- Block 9, Slot 390, Epoch 3 --- - -blockEx9 :: Block (BHeader C_Crypto) C -blockEx9 = - mkBlockFakeVRF - (bhHash $ bheader @(BHeader C_Crypto) blockEx8) - (coreNodeKeysBySchedule @C ppEx 390) - [] - (SlotNo 390) - (BlockNo 9) - epoch3Nonce - (NatNonce 9) - minBound - 19 - 19 - (mkOCert (coreNodeKeysBySchedule @C ppEx 390) 2 (KESPeriod 19)) - -blocksMadeEpoch3 :: Integer -blocksMadeEpoch3 = 3 - -expectedBlocks :: Integer -expectedBlocks = - floor $ - 0.5 - * unboundRational (activeSlotVal $ activeSlotCoeff testGlobals) - * fromIntegral (epochSize $ EpochNo 3) - -reserves9 :: Coin -reserves9 = maxLLSupply <+> deltaREx4 <-> (aliceInitCoin <+> bobInitCoin <+> carlInitCoin) - -deltaR1Ex9 :: Coin -deltaR1Ex9 = - rationalToCoinViaFloor $ - (blocksMadeEpoch3 % expectedBlocks) - * 0.0021 - * (fromIntegral . unCoin $ reserves9) - -rPot :: Integer -rPot = unCoin deltaR1Ex9 -- There were no fees - -deltaTEx9 :: Integer -deltaTEx9 = floor $ (0.2 :: Double) * fromIntegral rPot - -bigR :: Coin -bigR = Coin $ rPot - deltaTEx9 - -circulation :: Integer -circulation = unCoin $ maxLLSupply <-> reserves9 - -aliceStakeShareTot :: Rational -aliceStakeShareTot = (unCoin aliceCoinEx1 + unCoin carlInitCoin) % circulation - -bobStakeShareTot :: Rational -bobStakeShareTot = unCoin bobInitCoin % circulation - -alicePoolRewards :: forall c. ExMock c => Coin -alicePoolRewards = rationalToCoinViaFloor (appPerf * (fromIntegral . unCoin $ maxP)) - where - appPerf = mkApparentPerformance (ppEx @(ShelleyEra c) ^. ppDL) alicePoolStake 2 3 - pledge = fromIntegral . unCoin . ppPledge $ alicePoolParams' @c - pr = pledge % circulation - maxP = EB.maxPool @(ShelleyEra c) ppEx bigR aliceStakeShareTot pr - -carlMemberRewardsFromAlice :: forall c. ExMock c => Coin -carlMemberRewardsFromAlice = - memberRew - (alicePoolRewards @c) - (alicePoolParams' @c) - (StakeShare $ unCoin carlInitCoin % circulation) - (StakeShare aliceStakeShareTot) - -carlLeaderRewardsFromAlice :: forall c. ExMock c => Coin -carlLeaderRewardsFromAlice = - leaderRew - (alicePoolRewards @c) - (alicePoolParams' @c) - (StakeShare $ unCoin aliceCoinEx1 % circulation) - (StakeShare aliceStakeShareTot) - -bobPoolRewards :: forall c. ExMock c => Coin -bobPoolRewards = rationalToCoinViaFloor (appPerf * (fromIntegral . unCoin $ maxP)) - where - appPerf = mkApparentPerformance (ppEx @(ShelleyEra c) ^. ppDL) bobPoolStake 1 3 - pledge = fromIntegral . unCoin . ppPledge $ bobPoolParams' @c - pr = pledge % circulation - maxP = EB.maxPool @(ShelleyEra c) ppEx bigR bobStakeShareTot pr - -carlLeaderRewardsFromBob :: forall c. ExMock c => Coin -carlLeaderRewardsFromBob = - leaderRew - (bobPoolRewards @c) - (bobPoolParams' @c) - (StakeShare $ unCoin bobInitCoin % circulation) - (StakeShare bobStakeShareTot) - -alicePerfEx9 :: Likelihood -alicePerfEx9 = likelihood blocks t (epochSize $ EpochNo 3) - where - blocks = 2 - t = leaderProbability f alicePoolStake (unsafeBoundRational 0.5) - f = activeSlotCoeff testGlobals - -bobPerfEx9 :: Likelihood -bobPerfEx9 = likelihood blocks t (epochSize $ EpochNo 3) - where - blocks = 1 - t = leaderProbability f bobPoolStake (unsafeBoundRational 0.5) - f = activeSlotCoeff testGlobals - -nonMyopicEx9 :: forall c. ExMock c => NonMyopic c -nonMyopicEx9 = - NonMyopic - ( Map.fromList - [ (aikColdKeyHash Cast.alicePoolKeys, alicePerfEx9) - , (aikColdKeyHash Cast.bobPoolKeys, bobPerfEx9) - ] - ) - bigR - -rewardUpdateEx9 :: - PParams C -> - Map (Credential 'Staking C_Crypto) (Set (Reward C_Crypto)) -> - RewardUpdate C_Crypto -rewardUpdateEx9 pp rewards = - RewardUpdate - { deltaT = DeltaCoin deltaTEx9 - , deltaR = invert (toDeltaCoin deltaR1Ex9) <> toDeltaCoin deltaR2Ex9 - , rs = rewards - , deltaF = DeltaCoin 0 - , nonMyopic = nonMyopicEx9 - } - where - pv = pp ^. ppProtocolVersionL - deltaR2Ex9 = bigR <-> sumRewards pv rewards - -pulserEx9 :: PParams C -> PulsingRewUpdate (EraCrypto C) -pulserEx9 pp = - makeCompletedPulser - ( BlocksMade $ - Map.fromList - [(aikColdKeyHash Cast.alicePoolKeys, 2), (aikColdKeyHash Cast.bobPoolKeys, 1)] - ) - expectedStEx8' - where - expectedStEx8' = C.setPrevPParams pp expectedStEx8 - -expectedStEx9 :: PParams C -> ChainState C -expectedStEx9 pp = - C.evolveNonceFrozen (getBlockNonce blockEx9) - . C.newLab blockEx9 - . C.setOCertCounter coreNodeHK 2 - . C.pulserUpdate (pulserEx9 pp) - $ expectedStEx8 - where - coreNodeHK = coerceKeyRole . aikColdKeyHash $ coreNodeKeysBySchedule @C ppEx 390 - --- === Block 9, Slot 390, Epoch 3 --- --- Create the first non-trivial reward update. The rewards demonstrate the --- results of the delegation scenario that was constructed in the first and only transaction. -twoPools9 :: CHAINExample (BHeader (EraCrypto C)) C -twoPools9 = CHAINExample expectedStEx8 blockEx9 (Right $ expectedStEx9 ppEx) - --- --- Now test with Aggregation --- -carlsRewards :: forall c. ExMock c => Set (Reward c) -carlsRewards = - Set.fromList - [ Reward MemberReward (aikColdKeyHash Cast.alicePoolKeys) (carlMemberRewardsFromAlice @c) - , Reward LeaderReward (aikColdKeyHash Cast.alicePoolKeys) (carlLeaderRewardsFromAlice @c) - , Reward LeaderReward (aikColdKeyHash Cast.bobPoolKeys) (carlLeaderRewardsFromBob @c) - ] - -rsEx9Agg :: forall c. ExMock c => Map (Credential 'Staking c) (Set (Reward c)) -rsEx9Agg = Map.singleton Cast.carlSHK carlsRewards - -ppProtVer3 :: PParams C -ppProtVer3 = ppEx & ppProtocolVersionL .~ ProtVer (natVersion @3) 0 - -expectedStEx8Agg :: ChainState C -expectedStEx8Agg = C.setPrevPParams ppProtVer3 expectedStEx8 - -expectedStEx9Agg :: ChainState C -expectedStEx9Agg = C.setPrevPParams ppProtVer3 (expectedStEx9 ppProtVer3) - --- Create the first non-trivial reward update. The rewards demonstrate the --- results of the delegation scenario that was constructed in the first and only transaction. -twoPools9Agg :: CHAINExample (BHeader C_Crypto) C -twoPools9Agg = CHAINExample expectedStEx8Agg blockEx9 (Right expectedStEx9Agg) - -testAggregateRewardsLegacy :: HasCallStack => Assertion -testAggregateRewardsLegacy = do - let expectedReward = carlLeaderRewardsFromBob @(EraCrypto C) - expectedReward @?= rewardAmount (minimum (carlsRewards @(EraCrypto C))) - aggregateRewards @C_Crypto (ppEx ^. ppProtocolVersionL @C) rsEx9Agg - @?= Map.singleton Cast.carlSHK expectedReward - -testAggregateRewardsNew :: Assertion -testAggregateRewardsNew = - aggregateRewards @C_Crypto (ppProtVer3 ^. ppProtocolVersionL @C) rsEx9Agg - @?= Map.singleton Cast.carlSHK (foldMap rewardAmount (carlsRewards @(EraCrypto C))) - --- --- Two Pools Test Group --- - -twoPoolsExample :: TestTree -twoPoolsExample = - testGroup - "two pools" - [ testCase "create non-aggregated pulser" $ testCHAINExample twoPools9 - , testCase "non-aggregated pulser is correct" $ - Complete (rewardUpdateEx9 ppEx rsEx9Agg) - @?= (fst . runShelleyBase . completeStep $ pulserEx9 ppEx) - , testCase "aggregated pulser is correct" $ - Complete (rewardUpdateEx9 ppProtVer3 rsEx9Agg) - @?= (fst . runShelleyBase . completeStep $ pulserEx9 ppProtVer3) - , testCase "create aggregated pulser" $ testCHAINExample twoPools9Agg - , testCase "create legacy aggregatedRewards" testAggregateRewardsLegacy - , testCase "create new aggregatedRewards" testAggregateRewardsNew - ] - --- This test group tests each block individually, which is really only --- helpful for debugging purposes. -twoPoolsExampleExtended :: TestTree -twoPoolsExampleExtended = - testGroup - "two pools extended" - [ testCase "initial registrations" $ testCHAINExample twoPools1 - , testCase "delegate stake and create reward update" $ testCHAINExample twoPools2 - , testCase "new epoch changes" $ testCHAINExample twoPools3 - , testCase "second reward update" $ testCHAINExample twoPools4 - , testCase "nonempty pool distr" $ testCHAINExample twoPools5 - , testCase "alice produces a block" $ testCHAINExample twoPools6 - , testCase "bob produces a block" $ testCHAINExample twoPools7 - , testCase "prelude to the first nontrivial rewards" $ testCHAINExample twoPools8 - , testCase "create non-aggregated rewards" $ testCHAINExample twoPools9 - , testCase "create aggregated rewards" $ testCHAINExample twoPools9Agg - ] diff --git a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/Updates.hs b/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/Updates.hs deleted file mode 100644 index 3d7100694e4..00000000000 --- a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Examples/Updates.hs +++ /dev/null @@ -1,398 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - --- | --- Module : Test.Cardano.Ledger.Shelley.Examples.Updates --- Description : Protocol Parameter Update Example --- --- Example demonstrating using the protocol parameter update system. -module Test.Cardano.Ledger.Shelley.Examples.Updates ( - updatesExample, - updates4, -) -where - -import Cardano.Ledger.BaseTypes ( - BlocksMade (..), - Nonce, - StrictMaybe (..), - mkNonceFromNumber, - (⭒), - ) -import Cardano.Ledger.Block (Block, bheader) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Crypto -import qualified Cardano.Ledger.EpochBoundary as EB -import Cardano.Ledger.Keys (asWitness, hashKey) -import Cardano.Ledger.SafeHash (hashAnnotated) -import Cardano.Ledger.Shelley (ShelleyEra) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState (PulsingRewUpdate, emptyRewardUpdate) -import Cardano.Ledger.Shelley.PParams (ProposedPPUpdates (..), Update (..)) -import Cardano.Ledger.Shelley.Tx (ShelleyTx (..)) -import Cardano.Ledger.Shelley.TxBody (ShelleyTxBody (..)) -import Cardano.Ledger.Shelley.TxOut (ShelleyTxOut (..)) -import Cardano.Ledger.Shelley.TxWits (addrWits) -import Cardano.Ledger.Slot ( - BlockNo (..), - EpochNo (..), - SlotNo (..), - ) -import Cardano.Ledger.TxIn (TxIn (..)) -import Cardano.Ledger.UTxO (UTxO (..)) -import Cardano.Ledger.Val ((<+>), (<->)) -import qualified Cardano.Ledger.Val as Val -import Cardano.Protocol.TPraos.BHeader (BHeader, bhHash) -import Cardano.Protocol.TPraos.OCert (KESPeriod (..)) -import qualified Data.Map.Strict as Map -import qualified Data.Sequence.Strict as StrictSeq -import qualified Data.Set as Set -import Lens.Micro ((&), (.~)) -import Test.Cardano.Ledger.Core.KeyPair (mkWitnessesVKey) -import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes (ExMock) -import Test.Cardano.Ledger.Shelley.Examples (CHAINExample (..), testCHAINExample) -import qualified Test.Cardano.Ledger.Shelley.Examples.Cast as Cast -import qualified Test.Cardano.Ledger.Shelley.Examples.Combinators as C -import Test.Cardano.Ledger.Shelley.Examples.Federation ( - coreNodeIssuerKeys, - coreNodeKeysBySchedule, - coreNodeVK, - ) -import Test.Cardano.Ledger.Shelley.Examples.Init ( - initSt, - lastByronHeaderHash, - nonce0, - ppEx, - ) -import Test.Cardano.Ledger.Shelley.Examples.PoolLifetime (makeCompletedPulser) -import Test.Cardano.Ledger.Shelley.Generator.Core ( - AllIssuerKeys (..), - NatNonce (..), - genesisCoins, - mkBlockFakeVRF, - mkOCert, - ) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (genesisId) -import Test.Cardano.Ledger.Shelley.Generator.ShelleyEraGen () -import Test.Cardano.Ledger.Shelley.Rules.Chain (ChainState (..)) -import Test.Cardano.Ledger.Shelley.Utils (getBlockNonce) -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.HUnit (testCase) - -aliceInitCoin :: Coin -aliceInitCoin = Coin $ 10 * 1000 * 1000 * 1000 * 1000 * 1000 - -bobInitCoin :: Coin -bobInitCoin = Coin $ 1 * 1000 * 1000 * 1000 * 1000 * 1000 - -initUTxO :: Crypto c => UTxO (ShelleyEra c) -initUTxO = - genesisCoins - genesisId - [ ShelleyTxOut Cast.aliceAddr (Val.inject aliceInitCoin) - , ShelleyTxOut Cast.bobAddr (Val.inject bobInitCoin) - ] - -initStUpdates :: Crypto c => ChainState (ShelleyEra c) -initStUpdates = initSt initUTxO - --- --- Block 1, Slot 10, Epoch 0 --- - -ppVoteA :: Crypto c => PParamsUpdate (ShelleyEra c) -ppVoteA = - emptyPParamsUpdate - & ppuPoolDepositL .~ SJust (Coin 200) - & ppuExtraEntropyL .~ SJust (mkNonceFromNumber 123) - -collectVotes :: - forall c. - Crypto c => - PParamsUpdate (ShelleyEra c) -> - [Int] -> - ProposedPPUpdates (ShelleyEra c) -collectVotes vote = - ProposedPPUpdates . Map.fromList . (fmap (\n -> (hashKey $ coreNodeVK n, vote))) - -ppVotes1 :: Crypto c => ProposedPPUpdates (ShelleyEra c) -ppVotes1 = collectVotes ppVoteA [0, 3, 4] - -feeTx1 :: Coin -feeTx1 = Coin 1 - -aliceCoinEx1 :: Coin -aliceCoinEx1 = aliceInitCoin <-> feeTx1 - -txbodyEx1 :: Crypto c => ShelleyTxBody (ShelleyEra c) -txbodyEx1 = - ShelleyTxBody - (Set.fromList [TxIn genesisId minBound]) - (StrictSeq.singleton $ ShelleyTxOut Cast.aliceAddr (Val.inject aliceCoinEx1)) - StrictSeq.empty - (Withdrawals Map.empty) - feeTx1 - (SlotNo 10) - (SJust (Update ppVotes1 (EpochNo 0))) - SNothing - -txEx1 :: forall c. ExMock (EraCrypto (ShelleyEra c)) => ShelleyTx (ShelleyEra c) -txEx1 = - ShelleyTx - txbodyEx1 - mempty - { addrWits = - mkWitnessesVKey - (hashAnnotated $ txbodyEx1 @c) - ( [asWitness Cast.alicePay] - <> [ asWitness . aikCold $ coreNodeIssuerKeys 0 - , asWitness . aikCold $ coreNodeIssuerKeys 3 - , asWitness . aikCold $ coreNodeIssuerKeys 4 - ] - ) - } - SNothing - -blockEx1 :: forall c. ExMock (EraCrypto (ShelleyEra c)) => Block (BHeader c) (ShelleyEra c) -blockEx1 = - mkBlockFakeVRF - lastByronHeaderHash - (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 10) - [txEx1] - (SlotNo 10) - (BlockNo 1) - (nonce0 @(EraCrypto (ShelleyEra c))) - (NatNonce 1) - minBound - 0 - 0 - (mkOCert (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 10) 0 (KESPeriod 0)) - -expectedStEx1 :: forall c. ExMock (EraCrypto (ShelleyEra c)) => ChainState (ShelleyEra c) -expectedStEx1 = - C.evolveNonceUnfrozen (getBlockNonce (blockEx1 @c)) - . C.newLab blockEx1 - . C.feesAndDeposits ppEx feeTx1 [] [] - . C.newUTxO txbodyEx1 - . C.setCurrentProposals ppVotes1 - $ initStUpdates - --- === Block 1, Slot 10, Epoch 0 --- --- In the first block, three genesis keys vote on the same new parameters. -updates1 :: ExMock (EraCrypto (ShelleyEra c)) => CHAINExample (BHeader c) (ShelleyEra c) -updates1 = CHAINExample initStUpdates blockEx1 (Right expectedStEx1) - --- --- Block 2, Slot 20, Epoch 0 --- - -ppVotes2 :: Era (ShelleyEra c) => ProposedPPUpdates (ShelleyEra c) -ppVotes2 = collectVotes ppVoteA [1, 5] - -updateEx3B :: Era (ShelleyEra c) => Update (ShelleyEra c) -updateEx3B = Update ppVotes2 (EpochNo 0) - -feeTx2 :: Coin -feeTx2 = Coin 1 - -aliceCoinEx2 :: Coin -aliceCoinEx2 = aliceCoinEx1 <-> feeTx2 - -txbodyEx2 :: forall c. Crypto c => ShelleyTxBody (ShelleyEra c) -txbodyEx2 = - ShelleyTxBody - (Set.fromList [TxIn (txIdTxBody txbodyEx1) minBound]) - (StrictSeq.singleton $ ShelleyTxOut Cast.aliceAddr (Val.inject aliceCoinEx2)) - StrictSeq.empty - (Withdrawals Map.empty) - (Coin 1) - (SlotNo 31) - (SJust updateEx3B) - SNothing - -txEx2 :: forall c. ExMock (EraCrypto (ShelleyEra c)) => ShelleyTx (ShelleyEra c) -txEx2 = - ShelleyTx - txbodyEx2 - mempty - { addrWits = - mkWitnessesVKey - (hashAnnotated $ txbodyEx2 @c) - ( [asWitness Cast.alicePay] - <> [ asWitness . aikCold $ coreNodeIssuerKeys 1 - , asWitness . aikCold $ coreNodeIssuerKeys 5 - ] - ) - } - SNothing - -blockEx2 :: forall c. ExMock (EraCrypto (ShelleyEra c)) => Block (BHeader c) (ShelleyEra c) -blockEx2 = - mkBlockFakeVRF - (bhHash $ bheader @(BHeader c) @(ShelleyEra c) blockEx1) - (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 20) - [txEx2] - (SlotNo 20) - (BlockNo 2) - (nonce0 @(EraCrypto (ShelleyEra c))) - (NatNonce 2) - minBound - 1 - 0 - (mkOCert (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 20) 0 (KESPeriod 0)) - -expectedStEx2 :: forall c. ExMock (EraCrypto (ShelleyEra c)) => ChainState (ShelleyEra c) -expectedStEx2 = - C.evolveNonceUnfrozen (getBlockNonce (blockEx2 @c)) - . C.newLab blockEx2 - . C.feesAndDeposits ppEx feeTx2 [] [] - . C.newUTxO txbodyEx2 - . C.setCurrentProposals (collectVotes ppVoteA [0, 1, 3, 4, 5]) - $ expectedStEx1 - --- === Block 2, Slot 20, Epoch 0 --- --- In the second block, two more genesis keys vote for the same new parameters. -updates2 :: ExMock (EraCrypto (ShelleyEra c)) => CHAINExample (BHeader c) (ShelleyEra c) -updates2 = CHAINExample expectedStEx1 blockEx2 (Right expectedStEx2) - --- --- Block 3, Slot 80, Epoch 0 --- - -ppVoteB :: Crypto c => PParamsUpdate (ShelleyEra c) -ppVoteB = - emptyPParamsUpdate - & ppuMinUTxOValueL .~ SJust (Coin 99) - -ppVotes3 :: Era (ShelleyEra c) => ProposedPPUpdates (ShelleyEra c) -ppVotes3 = collectVotes ppVoteB [1] - -feeTx3 :: Coin -feeTx3 = Coin 1 - -aliceCoinEx3 :: Coin -aliceCoinEx3 = aliceCoinEx2 <-> feeTx3 - -txbodyEx3 :: forall c. Crypto c => ShelleyTxBody (ShelleyEra c) -txbodyEx3 = - ShelleyTxBody - (Set.fromList [TxIn (txIdTxBody txbodyEx2) minBound]) - (StrictSeq.singleton $ ShelleyTxOut Cast.aliceAddr (Val.inject aliceCoinEx3)) - StrictSeq.empty - (Withdrawals Map.empty) - feeTx3 - (SlotNo 81) - (SJust (Update ppVotes3 (EpochNo 1))) - SNothing - -txEx3 :: forall c. (Crypto c, ExMock (EraCrypto (ShelleyEra c))) => ShelleyTx (ShelleyEra c) -txEx3 = - ShelleyTx - txbodyEx3 - mempty - { addrWits = - mkWitnessesVKey - (hashAnnotated $ txbodyEx3 @c) - [asWitness Cast.alicePay, asWitness . aikCold $ coreNodeIssuerKeys 1] - } - SNothing - -blockEx3 :: forall c. ExMock (EraCrypto (ShelleyEra c)) => Block (BHeader c) (ShelleyEra c) -blockEx3 = - mkBlockFakeVRF - (bhHash $ bheader @(BHeader c) @(ShelleyEra c) blockEx2) - (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 80) - [txEx3] - (SlotNo 80) - (BlockNo 3) - (nonce0 @(EraCrypto (ShelleyEra c))) - (NatNonce 3) - minBound - 4 - 0 - (mkOCert (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 80) 0 (KESPeriod 0)) - -pulserEx3 :: forall c. ExMock c => PulsingRewUpdate c -pulserEx3 = makeCompletedPulser (BlocksMade mempty) expectedStEx2 - -expectedStEx3 :: forall c. ExMock (EraCrypto (ShelleyEra c)) => ChainState (ShelleyEra c) -expectedStEx3 = - C.evolveNonceFrozen (getBlockNonce (blockEx3 @c)) - . C.newLab blockEx3 - . C.feesAndDeposits ppEx feeTx3 [] [] - . C.newUTxO txbodyEx3 - . C.pulserUpdate pulserEx3 - . C.setFutureProposals (collectVotes ppVoteB [1]) - $ expectedStEx2 - --- === Block 3, Slot 80, Epoch 0 --- --- In the third block, one genesis keys votes for the next epoch -updates3 :: ExMock (EraCrypto (ShelleyEra c)) => CHAINExample (BHeader c) (ShelleyEra c) -updates3 = CHAINExample expectedStEx2 blockEx3 (Right expectedStEx3) - --- --- Block 4, Slot 110, Epoch 1 --- - -epoch1Nonce :: forall c. ExMock (EraCrypto (ShelleyEra c)) => Nonce -epoch1Nonce = chainCandidateNonce (expectedStEx3 @c) ⭒ mkNonceFromNumber 123 - -blockEx4 :: forall c. ExMock (EraCrypto (ShelleyEra c)) => Block (BHeader c) (ShelleyEra c) -blockEx4 = - mkBlockFakeVRF - (bhHash $ bheader @(BHeader c) @(ShelleyEra c) blockEx3) - (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 110) - [] - (SlotNo 110) - (BlockNo 4) - (epoch1Nonce @c) - (NatNonce 4) - minBound - 5 - 0 - (mkOCert (coreNodeKeysBySchedule @(ShelleyEra c) ppEx 110) 0 (KESPeriod 0)) - -ppExUpdated :: forall c. Crypto c => PParams (ShelleyEra c) -ppExUpdated = - (ppEx @(ShelleyEra c)) - & ppPoolDepositL .~ Coin 200 - & ppExtraEntropyL .~ mkNonceFromNumber 123 - -expectedStEx4 :: forall c. ExMock (EraCrypto (ShelleyEra c)) => ChainState (ShelleyEra c) -expectedStEx4 = - C.newEpoch blockEx4 - . C.newSnapshot EB.emptySnapShot (feeTx1 <+> feeTx2 <+> feeTx3) - . C.applyRewardUpdate emptyRewardUpdate - . C.setCurrentProposals (collectVotes ppVoteB [1]) - . C.setFutureProposals (ProposedPPUpdates Map.empty) - . C.setPParams ppExUpdated - $ expectedStEx3 - --- === Block 4, Slot 110, Epoch 1 --- --- In the fourth block, the new protocol parameters are adopted, --- and the future vote becomes a current vote. --- Since the extra entropy was voted on, notice that it is a part --- of the new epoch nonce. -updates4 :: ExMock (EraCrypto (ShelleyEra c)) => CHAINExample (BHeader c) (ShelleyEra c) -updates4 = CHAINExample expectedStEx3 blockEx4 (Right expectedStEx4) - --- --- Updates Test Group --- - -updatesExample :: TestTree -updatesExample = - testGroup - "protocol parameter updates" - [ testCase "get 3/7 votes for a pparam update" $ testCHAINExample updates1 - , testCase "get 5/7 votes for a pparam update" $ testCHAINExample updates2 - , testCase "votes for the next epoch" $ testCHAINExample updates3 - , testCase "processes a pparam update" $ testCHAINExample updates4 - ] diff --git a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Fees.hs b/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Fees.hs deleted file mode 100644 index e3412575897..00000000000 --- a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Fees.hs +++ /dev/null @@ -1,543 +0,0 @@ -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# OPTIONS_GHC -Wno-deprecations #-} - -module Test.Cardano.Ledger.Shelley.Fees ( - sizeTests, -) -where - -import Cardano.Ledger.Address (Withdrawals (..)) -import Cardano.Ledger.BaseTypes ( - Network (..), - StrictMaybe (..), - textToDns, - textToUrl, - ) -import Cardano.Ledger.Binary.Plain as Plain (serialize) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto -import Cardano.Ledger.Keys ( - KeyHash, - KeyRole (..), - asWitness, - hashKey, - ) -import Cardano.Ledger.PoolParams (PoolMetadata (..), StakePoolRelay (..)) -import Cardano.Ledger.SafeHash (hashAnnotated) -import Cardano.Ledger.Shelley (Shelley) -import Cardano.Ledger.Shelley.API ( - Addr, - Credential (..), - MultiSig (..), - PoolParams (..), - RewardAccount (..), - ShelleyTxBody (..), - ShelleyTxOut (..), - TxIn (..), - hashVerKeyVRF, - ) -import Cardano.Ledger.Shelley.Tx ( - ShelleyTx (..), - ) -import Cardano.Ledger.Shelley.TxAuxData -import Cardano.Ledger.Shelley.TxCert ( - pattern DelegStakeTxCert, - pattern RegTxCert, - pattern UnRegTxCert, - ) -import Cardano.Ledger.Shelley.TxWits ( - addrWits, - ) -import Cardano.Ledger.Shelley.UTxO (getShelleyMinFeeTxUtxo) -import Cardano.Ledger.Slot (EpochNo (..), SlotNo (..)) -import Cardano.Ledger.Tools (estimateMinFeeTx) -import Cardano.Ledger.TxIn (mkTxInPartial) -import qualified Cardano.Ledger.Val as Val -import qualified Data.ByteString.Base16.Lazy as Base16 -import qualified Data.ByteString.Char8 as BS (pack) -import qualified Data.ByteString.Lazy as BSL -import qualified Data.Map.Strict as Map (empty, singleton) -import Data.Maybe (fromJust) -import qualified Data.Sequence.Strict as StrictSeq -import qualified Data.Set as Set -import GHC.Stack (HasCallStack) -import Lens.Micro -import Test.Cardano.Ledger.Core.KeyPair (KeyPair (..), mkAddr, mkWitnessesVKey, vKey) -import Test.Cardano.Ledger.Shelley.Generator.Core (VRFKeyPair (..)) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (genesisId) -import Test.Cardano.Ledger.Shelley.Generator.ShelleyEraGen () -import Test.Cardano.Ledger.Shelley.Utils ( - RawSeed (..), - mkKeyPair, - mkVRFKeyPair, - unsafeBoundRational, - ) -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.HUnit (Assertion, testCase, (@?=)) - -sizeTest :: HasCallStack => BSL.ByteString -> ShelleyTx Shelley -> Assertion -sizeTest b16 tx = do - Base16.encode (Plain.serialize tx) @?= b16 - (tx ^. sizeTxF) @?= toInteger (BSL.length b16 `div` 2) - -alicePay :: forall c. Crypto c => KeyPair 'Payment c -alicePay = KeyPair @'Payment @c vk sk - where - (sk, vk) = mkKeyPair @c (RawSeed 0 0 0 0 0) - -aliceStake :: forall c. Crypto c => KeyPair 'Staking c -aliceStake = KeyPair vk sk - where - (sk, vk) = mkKeyPair @c (RawSeed 0 0 0 0 1) - -aliceSHK :: forall c. Crypto c => Credential 'Staking c -aliceSHK = (KeyHashObj . hashKey . vKey) aliceStake - -alicePool :: forall c. Crypto c => KeyPair 'StakePool c -alicePool = KeyPair vk sk - where - (sk, vk) = mkKeyPair @c (RawSeed 0 0 0 0 2) - -alicePoolKH :: forall c. Crypto c => KeyHash 'StakePool c -alicePoolKH = (hashKey . vKey) alicePool - -aliceVRF :: forall c. Crypto c => VRFKeyPair c -aliceVRF = mkVRFKeyPair (RawSeed 0 0 0 0 3) - -alicePoolParams :: forall c. Crypto c => PoolParams c -alicePoolParams = - PoolParams - { ppId = alicePoolKH - , ppVrf = hashVerKeyVRF . vrfVerKey $ aliceVRF @c - , ppPledge = Coin 1 - , ppCost = Coin 5 - , ppMargin = unsafeBoundRational 0.1 - , ppRewardAccount = RewardAccount Testnet aliceSHK - , ppOwners = Set.singleton $ (hashKey . vKey) aliceStake - , ppRelays = - StrictSeq.singleton $ - SingleHostName SNothing $ - fromJust $ - textToDns 64 "relay.io" - , ppMetadata = - SJust $ - PoolMetadata - { pmUrl = fromJust $ textToUrl 64 "alice.pool" - , pmHash = BS.pack "{}" - } - } - -aliceAddr :: forall c. Crypto c => Addr c -aliceAddr = mkAddr (alicePay, aliceStake) - -bobPay :: forall c. Crypto c => KeyPair 'Payment c -bobPay = KeyPair vk sk - where - (sk, vk) = mkKeyPair @c (RawSeed 1 0 0 0 0) - -bobStake :: forall c. Crypto c => KeyPair 'Staking c -bobStake = KeyPair vk sk - where - (sk, vk) = mkKeyPair @c (RawSeed 1 0 0 0 1) - -bobSHK :: forall c. Crypto c => Credential 'Staking c -bobSHK = (KeyHashObj . hashKey . vKey) bobStake - -bobAddr :: forall c. Crypto c => Addr c -bobAddr = mkAddr (bobPay, bobStake) - -carlPay :: forall c. Crypto c => KeyPair 'Payment c -carlPay = KeyPair vk sk - where - (sk, vk) = mkKeyPair (RawSeed 2 0 0 0 0) - --- | Simple Transaction which consumes one UTxO and creates one UTxO --- | and has one witness -txbSimpleUTxO :: ShelleyTxBody Shelley -txbSimpleUTxO = - ShelleyTxBody - { stbInputs = Set.fromList [TxIn genesisId minBound] - , stbOutputs = StrictSeq.fromList [ShelleyTxOut aliceAddr (Val.inject $ Coin 10)] - , stbCerts = StrictSeq.empty - , stbWithdrawals = Withdrawals Map.empty - , stbTxFee = Coin 94 - , stbTTL = SlotNo 10 - , stbUpdate = SNothing - , stbMDHash = SNothing - } - -txSimpleUTxO :: ShelleyTx Shelley -txSimpleUTxO = - ShelleyTx - { body = txbSimpleUTxO - , wits = - mempty - { addrWits = mkWitnessesVKey (hashAnnotated txbSimpleUTxO) [alicePay] - } - , auxiliaryData = SNothing - } - -txSimpleUTxOBytes16 :: BSL.ByteString -txSimpleUTxOBytes16 = - "83a4008182582003170a2e7597b7b7e3d84c05391d139a62b157e78786d8c082f29dcf4c11131400018182583900e9686d801fa32aeb4390c2f2a53bb0314a9c744c46a2cada394a371fc6852b6aaed73bcf346a57ef99adae3000b51c7c59faaeb15993df760a02185e030aa100818258204628aaf16d6e1baa061d1296419542cb09287c639163d0fdbdac0ff23699797e584089c20cb6246483bbd0b2006f658597eff3e8ab3b8a6e9b22cb3c5b95cf0d3a2b96107acef88319fa2dd0fb28adcfdb330bb99f1f0058918a75d951ca9b73660cf6" - --- | Transaction which consumes two UTxO and creates five UTxO --- | and has two witness -txbMutiUTxO :: ShelleyTxBody Shelley -txbMutiUTxO = - ShelleyTxBody - { stbInputs = - Set.fromList - [ mkTxInPartial genesisId 0 - , mkTxInPartial genesisId 1 - ] - , stbOutputs = - StrictSeq.fromList - [ ShelleyTxOut aliceAddr (Val.inject $ Coin 10) - , ShelleyTxOut aliceAddr (Val.inject $ Coin 20) - , ShelleyTxOut aliceAddr (Val.inject $ Coin 30) - , ShelleyTxOut bobAddr (Val.inject $ Coin 40) - , ShelleyTxOut bobAddr (Val.inject $ Coin 50) - ] - , stbCerts = StrictSeq.empty - , stbWithdrawals = Withdrawals Map.empty - , stbTxFee = Coin 199 - , stbTTL = SlotNo 10 - , stbUpdate = SNothing - , stbMDHash = SNothing - } - -txMutiUTxO :: ShelleyTx Shelley -txMutiUTxO = - ShelleyTx - { body = txbMutiUTxO - , wits = - mempty - { addrWits = - mkWitnessesVKey - (hashAnnotated txbMutiUTxO) - [ alicePay - , bobPay - ] - } - , auxiliaryData = SNothing - } - -txMutiUTxOBytes16 :: BSL.ByteString -txMutiUTxOBytes16 = - "83a4008282582003170a2e7597b7b7e3d84c05391d139a62b157e78786d8c082f29dcf4c1113140082582003170a2e7597b7b7e3d84c05391d139a62b157e78786d8c082f29dcf4c11131401018582583900e9686d801fa32aeb4390c2f2a53bb0314a9c744c46a2cada394a371fc6852b6aaed73bcf346a57ef99adae3000b51c7c59faaeb15993df760a82583900e9686d801fa32aeb4390c2f2a53bb0314a9c744c46a2cada394a371fc6852b6aaed73bcf346a57ef99adae3000b51c7c59faaeb15993df761482583900e9686d801fa32aeb4390c2f2a53bb0314a9c744c46a2cada394a371fc6852b6aaed73bcf346a57ef99adae3000b51c7c59faaeb15993df76181e825839000d2a471489a90f2910ec67ded8e215bfcd669bae77e7f9ab15850abd4e130c0bdeb7768edf2e8f85007fd52073e3dc1871f4c47f9dfca92e1828825839000d2a471489a90f2910ec67ded8e215bfcd669bae77e7f9ab15850abd4e130c0bdeb7768edf2e8f85007fd52073e3dc1871f4c47f9dfca92e18320218c7030aa1008282582037139648f2c22bbf1d0ef9af37cfebc9014b1e0e2a55be87c4b3b231a8d84d2658405ef09b22172cd28678e76e600e899886852e03567e2e72b4815629471e736a0cd424dc71cdaa0d0403371d79ea3d0cb7f28cb0740ebfcd8947343eba99a6aa088258204628aaf16d6e1baa061d1296419542cb09287c639163d0fdbdac0ff23699797e5840ea98ef8052776aa5c182621cfd2ec91011d327527fc2531be9e1a8356c10f25f3fe5a5a7f549a0dc3b17c4ad8e4b8673b63a87977ac899b675f3ce3d6badae01f6" - --- | Transaction which registers a stake key -txbRegisterStake :: ShelleyTxBody Shelley -txbRegisterStake = - ShelleyTxBody - { stbInputs = Set.fromList [TxIn genesisId minBound] - , stbOutputs = StrictSeq.fromList [ShelleyTxOut aliceAddr (Val.inject $ Coin 10)] - , stbCerts = StrictSeq.fromList [RegTxCert aliceSHK] - , stbWithdrawals = Withdrawals Map.empty - , stbTxFee = Coin 94 - , stbTTL = SlotNo 10 - , stbUpdate = SNothing - , stbMDHash = SNothing - } - -txRegisterStake :: ShelleyTx Shelley -txRegisterStake = - ShelleyTx - { body = txbRegisterStake - , wits = - mempty - { addrWits = mkWitnessesVKey (hashAnnotated txbRegisterStake) [alicePay] - } - , auxiliaryData = SNothing - } - -txRegisterStakeBytes16 :: BSL.ByteString -txRegisterStakeBytes16 = - "83a5008182582003170a2e7597b7b7e3d84c05391d139a62b157e78786d8c082f29dcf4c11131400018182583900e9686d801fa32aeb4390c2f2a53bb0314a9c744c46a2cada394a371fc6852b6aaed73bcf346a57ef99adae3000b51c7c59faaeb15993df760a02185e030a048182008200581cc6852b6aaed73bcf346a57ef99adae3000b51c7c59faaeb15993df76a100818258204628aaf16d6e1baa061d1296419542cb09287c639163d0fdbdac0ff23699797e58403271792b002eb39bcb133668e851a5ffba9c13ad2b5c5a7bbc850a17de8309cbb9649d9e90eb4c9cc82f28f204408d513ccc575ce1f61808f67793429ff1880ef6" - --- | Transaction which delegates a stake key -txbDelegateStake :: ShelleyTxBody Shelley -txbDelegateStake = - ShelleyTxBody - { stbInputs = Set.fromList [TxIn genesisId minBound] - , stbOutputs = StrictSeq.fromList [ShelleyTxOut aliceAddr (Val.inject $ Coin 10)] - , stbCerts = - StrictSeq.fromList - [ DelegStakeTxCert bobSHK alicePoolKH - ] - , stbWithdrawals = Withdrawals Map.empty - , stbTxFee = Coin 94 - , stbTTL = SlotNo 10 - , stbUpdate = SNothing - , stbMDHash = SNothing - } - -txDelegateStake :: ShelleyTx Shelley -txDelegateStake = - ShelleyTx - { body = txbDelegateStake - , wits = - mempty - { addrWits = - mkWitnessesVKey - (hashAnnotated txbDelegateStake) - [asWitness alicePay, asWitness bobStake] - } - , auxiliaryData = SNothing - } - -txDelegateStakeBytes16 :: BSL.ByteString -txDelegateStakeBytes16 = - "83a5008182582003170a2e7597b7b7e3d84c05391d139a62b157e78786d8c082f29dcf4c11131400018182583900e9686d801fa32aeb4390c2f2a53bb0314a9c744c46a2cada394a371fc6852b6aaed73bcf346a57ef99adae3000b51c7c59faaeb15993df760a02185e030a048183028200581c4e130c0bdeb7768edf2e8f85007fd52073e3dc1871f4c47f9dfca92e581c5d43e1f1048b2619f51abc0cf505e4d4f9cb84becefd468d1a2fe335a100828258209921fa37a7d167aab519bb937d7ac6e522ad6d259a6173523357b971e05f41ff58403bad563c201b4f62448db12711af2d916776194b5176e9d312d07a328ce7780a63032dce887abc67985629b7aeabb0c334e84094f44d7e51ae51b5c799a83c0d8258204628aaf16d6e1baa061d1296419542cb09287c639163d0fdbdac0ff23699797e584064aef85b046d2d0072cd64844e9f13d86651a1db74d356a10ecd7fb35a664fc466e543ea55cfbffd74025dc092d62c4b22d7e2de4decb4f049df354cfae9790af6" - --- | Transaction which de-registers a stake key -txbDeregisterStake :: ShelleyTxBody Shelley -txbDeregisterStake = - ShelleyTxBody - { stbInputs = Set.fromList [TxIn genesisId minBound] - , stbOutputs = StrictSeq.fromList [ShelleyTxOut aliceAddr (Val.inject $ Coin 10)] - , stbCerts = StrictSeq.fromList [UnRegTxCert aliceSHK] - , stbWithdrawals = Withdrawals Map.empty - , stbTxFee = Coin 94 - , stbTTL = SlotNo 10 - , stbUpdate = SNothing - , stbMDHash = SNothing - } - -txDeregisterStake :: ShelleyTx Shelley -txDeregisterStake = - ShelleyTx - { body = txbDeregisterStake - , wits = - mempty - { addrWits = - mkWitnessesVKey - (hashAnnotated txbDeregisterStake) - [alicePay @(EraCrypto Shelley)] - } - , auxiliaryData = SNothing - } - -txDeregisterStakeBytes16 :: BSL.ByteString -txDeregisterStakeBytes16 = - "83a5008182582003170a2e7597b7b7e3d84c05391d139a62b157e78786d8c082f29dcf4c11131400018182583900e9686d801fa32aeb4390c2f2a53bb0314a9c744c46a2cada394a371fc6852b6aaed73bcf346a57ef99adae3000b51c7c59faaeb15993df760a02185e030a048182018200581cc6852b6aaed73bcf346a57ef99adae3000b51c7c59faaeb15993df76a100818258204628aaf16d6e1baa061d1296419542cb09287c639163d0fdbdac0ff23699797e5840409db925fa592b7f4c76e44d738789f4b0ffb2b9cf4567af127121d635491b4eb736e8c92571f1329f14d06aad7ec42ca654ae65eb63b0b01d30cc4454aee80cf6" - --- | Transaction which registers a stake pool -txbRegisterPool :: ShelleyTxBody Shelley -txbRegisterPool = - ShelleyTxBody - { stbInputs = Set.fromList [TxIn genesisId minBound] - , stbOutputs = StrictSeq.fromList [ShelleyTxOut aliceAddr (Val.inject $ Coin 10)] - , stbCerts = StrictSeq.fromList [RegPoolTxCert alicePoolParams] - , stbWithdrawals = Withdrawals Map.empty - , stbTxFee = Coin 94 - , stbTTL = SlotNo 10 - , stbUpdate = SNothing - , stbMDHash = SNothing - } - -txRegisterPool :: ShelleyTx Shelley -txRegisterPool = - ShelleyTx - { body = txbRegisterPool - , wits = - mempty - { addrWits = mkWitnessesVKey (hashAnnotated txbRegisterPool) [alicePay] - } - , auxiliaryData = SNothing - } - -txRegisterPoolBytes16 :: BSL.ByteString -txRegisterPoolBytes16 = - "83a5008182582003170a2e7597b7b7e3d84c05391d139a62b157e78786d8c082f29dcf4c11131400018182583900e9686d801fa32aeb4390c2f2a53bb0314a9c744c46a2cada394a371fc6852b6aaed73bcf346a57ef99adae3000b51c7c59faaeb15993df760a02185e030a04818a03581c5d43e1f1048b2619f51abc0cf505e4d4f9cb84becefd468d1a2fe33558208e61e1fa4855ea3aa0b8881a9e2e453c8c73536bdaabb64d36de86ee5a02519a0105d81e82010a581de0c6852b6aaed73bcf346a57ef99adae3000b51c7c59faaeb15993df7681581cc6852b6aaed73bcf346a57ef99adae3000b51c7c59faaeb15993df76818301f66872656c61792e696f826a616c6963652e706f6f6c427b7da100818258204628aaf16d6e1baa061d1296419542cb09287c639163d0fdbdac0ff23699797e5840165c6aa107571daafb1f9093d3cdc184a4068e8ff9243715c13335feb3652dc0d817b3b015a9929c9d83a0dd406fe71658fdccbf7925d2fff316237b499c2003f6" - --- | Transaction which retires a stake pool -txbRetirePool :: ShelleyTxBody Shelley -txbRetirePool = - ShelleyTxBody - { stbInputs = Set.fromList [TxIn genesisId minBound] - , stbOutputs = StrictSeq.fromList [ShelleyTxOut aliceAddr (Val.inject $ Coin 10)] - , stbCerts = StrictSeq.fromList [RetirePoolTxCert alicePoolKH (EpochNo 5)] - , stbWithdrawals = Withdrawals Map.empty - , stbTxFee = Coin 94 - , stbTTL = SlotNo 10 - , stbUpdate = SNothing - , stbMDHash = SNothing - } - -txRetirePool :: ShelleyTx Shelley -txRetirePool = - ShelleyTx - { body = txbRetirePool - , wits = - mempty - { addrWits = mkWitnessesVKey (hashAnnotated txbRetirePool) [alicePay] - } - , auxiliaryData = SNothing - } - -txRetirePoolBytes16 :: BSL.ByteString -txRetirePoolBytes16 = - "83a5008182582003170a2e7597b7b7e3d84c05391d139a62b157e78786d8c082f29dcf4c11131400018182583900e9686d801fa32aeb4390c2f2a53bb0314a9c744c46a2cada394a371fc6852b6aaed73bcf346a57ef99adae3000b51c7c59faaeb15993df760a02185e030a04818304581c5d43e1f1048b2619f51abc0cf505e4d4f9cb84becefd468d1a2fe33505a100818258204628aaf16d6e1baa061d1296419542cb09287c639163d0fdbdac0ff23699797e58404ad8f782368857f26db548d4ef6eca276639db9f1e8536f505c049ec94e0f6325c5f9f62a5187eb077f51bcd51cdff7d142415796442f2631081b90bf74f7204f6" - --- | Simple Transaction which consumes one UTxO and creates one UTxO --- | and has one witness -md :: Era era => ShelleyTxAuxData era -md = ShelleyTxAuxData $ Map.singleton 0 (List [I 5, S "hello"]) - -txbWithMD :: ShelleyTxBody Shelley -txbWithMD = - ShelleyTxBody - { stbInputs = Set.fromList [TxIn genesisId minBound] - , stbOutputs = StrictSeq.fromList [ShelleyTxOut aliceAddr (Val.inject $ Coin 10)] - , stbCerts = StrictSeq.empty - , stbWithdrawals = Withdrawals Map.empty - , stbTxFee = Coin 94 - , stbTTL = SlotNo 10 - , stbUpdate = SNothing - , stbMDHash = SJust $ hashTxAuxData @Shelley md - } - -txWithMD :: ShelleyTx Shelley -txWithMD = - ShelleyTx - { body = txbWithMD - , wits = - mempty - { addrWits = mkWitnessesVKey (hashAnnotated txbWithMD) [alicePay] - } - , auxiliaryData = SJust md - } - -txWithMDBytes16 :: BSL.ByteString -txWithMDBytes16 = - "83a5008182582003170a2e7597b7b7e3d84c05391d139a62b157e78786d8c082f29dcf4c11131400018182583900e9686d801fa32aeb4390c2f2a53bb0314a9c744c46a2cada394a371fc6852b6aaed73bcf346a57ef99adae3000b51c7c59faaeb15993df760a02185e030a075820e2d7de09439ab222111cecd21545c5f9c338fd6653539031eb311d34fc97e718a100818258204628aaf16d6e1baa061d1296419542cb09287c639163d0fdbdac0ff23699797e5840ab05c3933f5c7281386309a374f45eeee28b6f3a01bc76a5fa3bc9efdc603dd63059d0aebfd198e23bf848dae43a23be3e6f85149bca2f27d0e7f4f63be38e02a10082056568656c6c6f" - --- | Spending from a multi-sig address -msig :: forall era. Era era => MultiSig era -msig = - RequireMOf - 2 - [ (RequireSignature . asWitness . hashKey . vKey) alicePay - , (RequireSignature . asWitness . hashKey . vKey) bobPay - , (RequireSignature . asWitness . hashKey . vKey) carlPay - ] - -txbWithMultiSig :: ShelleyTxBody Shelley -txbWithMultiSig = - ShelleyTxBody - { stbInputs = Set.fromList [TxIn genesisId minBound] -- acting as if this is multi-sig - , stbOutputs = StrictSeq.fromList [ShelleyTxOut aliceAddr (Val.inject $ Coin 10)] - , stbCerts = StrictSeq.empty - , stbWithdrawals = Withdrawals Map.empty - , stbTxFee = Coin 94 - , stbTTL = SlotNo 10 - , stbUpdate = SNothing - , stbMDHash = SNothing - } - -txWithMultiSig :: ShelleyTx Shelley -txWithMultiSig = - ShelleyTx - { body = txbWithMultiSig - , wits = - mkBasicTxWits - & addrTxWitsL .~ mkWitnessesVKey (hashAnnotated txbWithMultiSig) [alicePay, bobPay] - & scriptTxWitsL .~ Map.singleton (hashScript @Shelley msig) msig - , auxiliaryData = SNothing - } - -txWithMultiSigBytes16 :: BSL.ByteString -txWithMultiSigBytes16 = - "83a4008182582003170a2e7597b7b7e3d84c05391d139a62b157e78786d8c082f29dcf4c11131400018182583900e9686d801fa32aeb4390c2f2a53bb0314a9c744c46a2cada394a371fc6852b6aaed73bcf346a57ef99adae3000b51c7c59faaeb15993df760a02185e030aa2008282582037139648f2c22bbf1d0ef9af37cfebc9014b1e0e2a55be87c4b3b231a8d84d265840e3b8f50632325fbd1f82202ce5a8b4672bd96c50a338d70c0aa96720f6f7fbf60e0ce708f3a7e28faa0d78dc437a0b61e02205ddb1db22d02ba35b37a7fe03068258204628aaf16d6e1baa061d1296419542cb09287c639163d0fdbdac0ff23699797e584089c20cb6246483bbd0b2006f658597eff3e8ab3b8a6e9b22cb3c5b95cf0d3a2b96107acef88319fa2dd0fb28adcfdb330bb99f1f0058918a75d951ca9b73660c0181830302838200581ce9686d801fa32aeb4390c2f2a53bb0314a9c744c46a2cada394a371f8200581c0d2a471489a90f2910ec67ded8e215bfcd669bae77e7f9ab15850abd8200581cd0671052191a58c554eee27808b2b836a03ca369ca7a847f8c37d6f9f6" - --- | Transaction with a Reward Withdrawal -txbWithWithdrawal :: ShelleyTxBody Shelley -txbWithWithdrawal = - ShelleyTxBody - { stbInputs = Set.fromList [TxIn genesisId minBound] - , stbOutputs = StrictSeq.fromList [ShelleyTxOut aliceAddr (Val.inject $ Coin 10)] - , stbCerts = StrictSeq.empty - , stbWithdrawals = - Withdrawals $ Map.singleton (RewardAccount Testnet aliceSHK) (Val.inject $ Coin 100) - , stbTxFee = Coin 94 - , stbTTL = SlotNo 10 - , stbUpdate = SNothing - , stbMDHash = SNothing - } - -txWithWithdrawal :: ShelleyTx Shelley -txWithWithdrawal = - ShelleyTx - { body = txbWithWithdrawal - , wits = - mempty - { addrWits = - mkWitnessesVKey - (hashAnnotated txbWithWithdrawal) - [asWitness alicePay, asWitness aliceStake] - } - , auxiliaryData = SNothing - } - -txWithWithdrawalBytes16 :: BSL.ByteString -txWithWithdrawalBytes16 = - "83a5008182582003170a2e7597b7b7e3d84c05391d139a62b157e78786d8c082f29dcf4c11131400018182583900e9686d801fa32aeb4390c2f2a53bb0314a9c744c46a2cada394a371fc6852b6aaed73bcf346a57ef99adae3000b51c7c59faaeb15993df760a02185e030a05a1581de0c6852b6aaed73bcf346a57ef99adae3000b51c7c59faaeb15993df761864a100828258208f40b25c9987eeb9c7f75eaf4f461f16384872a94dc353a4fb5c95bb657c59f85840c52adcbc184a497d1746ee962a762427e79e3f600a356378ffda6294c658ed91c0f0c7815cbaefb22bdabc09c5bf6c5f6724c0136701da26c77882f739f109038258204628aaf16d6e1baa061d1296419542cb09287c639163d0fdbdac0ff23699797e584012d30a6d3dbe0223e772dc183c138779449cd5fd9aac817b63af945b0a8e9f85be3bcc4457ad1a27f08fd36205717f8bafea1b1328f3a074febcfc62b6b99f06f6" - --- | The transaction fee of txSimpleUTxO if one key witness were to be added, --- given minfeeA and minfeeB are set to 1. -testEstimateMinFee :: Assertion -testEstimateMinFee = - estimateMinFeeTx @Shelley - pp - txSimpleUTxONoWit - 1 - 0 - 0 - @?= getShelleyMinFeeTxUtxo pp txSimpleUTxO - where - pp = - emptyPParams - & ppMinFeeAL .~ Coin 1 - & ppMinFeeBL .~ Coin 1 - - txSimpleUTxONoWit = - ShelleyTx - { body = txbSimpleUTxO - , wits = mempty - , auxiliaryData = SNothing - } - --- NOTE the txsize function takes into account which actual crypto parameter is in use. --- These tests are using Blake2b and Ed25519 so that: --- the regular hash length is ----> 32 --- the address hash length is ----> 28 --- the verification key size is --> 32 --- the signature size is ---------> 64 - -sizeTests :: TestTree -sizeTests = - testGroup - "Fee Tests" - [ testCase "simple utxo" $ sizeTest txSimpleUTxOBytes16 txSimpleUTxO - , testCase "multiple utxo" $ sizeTest txMutiUTxOBytes16 txMutiUTxO - , testCase "register stake key" $ sizeTest txRegisterStakeBytes16 txRegisterStake - , testCase "delegate stake key" $ sizeTest txDelegateStakeBytes16 txDelegateStake - , testCase "deregister stake key" $ sizeTest txDeregisterStakeBytes16 txDeregisterStake - , testCase "register stake pool" $ sizeTest txRegisterPoolBytes16 txRegisterPool - , testCase "retire stake pool" $ sizeTest txRetirePoolBytes16 txRetirePool - , testCase "auxiliaryData" $ sizeTest txWithMDBytes16 txWithMD - , testCase "multisig" $ sizeTest txWithMultiSigBytes16 txWithMultiSig - , testCase "reward withdrawal" $ sizeTest txWithWithdrawalBytes16 txWithWithdrawal - , testCase "estimate transaction fee" testEstimateMinFee - ] diff --git a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/MultiSigExamples.hs b/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/MultiSigExamples.hs deleted file mode 100644 index 928a4f5d815..00000000000 --- a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/MultiSigExamples.hs +++ /dev/null @@ -1,308 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Test.Cardano.Ledger.Shelley.MultiSigExamples ( - applyTxWithScript, - aliceOnly, - bobOnly, - aliceAndBob, - aliceOrBob, - aliceAndBobOrCarl, - aliceAndBobOrCarlAndDaria, - aliceAndBobOrCarlOrDaria, -) where - -import qualified Cardano.Crypto.Hash as Hash -import Cardano.Ledger.Address (Addr (Addr)) -import Cardano.Ledger.BaseTypes ( - Network (..), - StrictMaybe (..), - maybeToStrictMaybe, - mkTxIxPartial, - ) -import Cardano.Ledger.Coin -import Cardano.Ledger.Credential ( - pattern KeyHashObj, - pattern ScriptHashObj, - pattern StakeRefBase, - ) -import Cardano.Ledger.Keys ( - KeyHash (..), - KeyRole (..), - asWitness, - ) -import Cardano.Ledger.SafeHash (hashAnnotated) -import Cardano.Ledger.Shelley (ShelleyEra) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState ( - LedgerState (..), - UTxOState, - genesisState, - ) -import Cardano.Ledger.Shelley.Rules (ShelleyUTXOW, UtxoEnv (..)) -import Cardano.Ledger.Shelley.Scripts ( - MultiSig, - pattern RequireAllOf, - pattern RequireAnyOf, - pattern RequireMOf, - pattern RequireSignature, - ) -import Cardano.Ledger.Shelley.Tx (ShelleyTx (..)) -import Cardano.Ledger.Shelley.TxAuxData (ShelleyTxAuxData) -import Cardano.Ledger.Shelley.TxBody (ShelleyTxBody (..)) -import Cardano.Ledger.Shelley.TxWits (ShelleyTxWits (..)) -import Cardano.Ledger.Slot (SlotNo (..)) -import Cardano.Ledger.TxIn (TxId, TxIn (..)) -import qualified Cardano.Ledger.Val as Val -import Control.State.Transition -import Data.Default.Class (Default (def)) -import Data.Foldable (fold) -import Data.List.NonEmpty (NonEmpty) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map (empty, fromList) -import Data.Sequence.Strict (StrictSeq (..)) -import qualified Data.Sequence.Strict as StrictSeq -import qualified Data.Set as Set (fromList) -import Lens.Micro -import Test.Cardano.Ledger.Core.KeyPair (KeyPair (..), mkWitnessesVKey) -import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes ( - Mock, - ) -import qualified Test.Cardano.Ledger.Shelley.Examples.Cast as Cast -import Test.Cardano.Ledger.Shelley.Generator.Core ( - genesisCoins, - ) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (genesisId) -import Test.Cardano.Ledger.Shelley.Generator.ShelleyEraGen () -import Test.Cardano.Ledger.Shelley.Utils - --- Multi-Signature tests - --- This compile-time test asserts that the script hash and key hash use the --- same hash size and indeed hash function. We do this by checking we can --- type-check the following code that converts between them by using the hash --- casting function which changes what the hash is of, without changing the --- hashing algorithm. --- -_assertScriptHashSizeMatchesAddrHashSize :: - ScriptHash c -> - KeyHash r c -_assertScriptHashSizeMatchesAddrHashSize (ScriptHash h) = - KeyHash (Hash.castHash h) - --- Multi-signature scripts -singleKeyOnly :: Era era => Addr (EraCrypto era) -> MultiSig era -singleKeyOnly (Addr _ (KeyHashObj pk) _) = RequireSignature $ asWitness pk -singleKeyOnly _ = error "use VKey address" - -aliceOnly :: Era era => MultiSig era -aliceOnly = singleKeyOnly Cast.aliceAddr - -bobOnly :: Era era => MultiSig era -bobOnly = singleKeyOnly Cast.bobAddr - -aliceOrBob :: Era era => MultiSig era -aliceOrBob = RequireAnyOf [aliceOnly, singleKeyOnly Cast.bobAddr] - -aliceAndBob :: Era era => MultiSig era -aliceAndBob = RequireAllOf [aliceOnly, singleKeyOnly Cast.bobAddr] - -aliceAndBobOrCarl :: Era era => MultiSig era -aliceAndBobOrCarl = RequireMOf 1 [aliceAndBob, singleKeyOnly Cast.carlAddr] - -aliceAndBobOrCarlAndDaria :: Era era => MultiSig era -aliceAndBobOrCarlAndDaria = - RequireAnyOf - [ aliceAndBob - , RequireAllOf [singleKeyOnly Cast.carlAddr, singleKeyOnly Cast.dariaAddr] - ] - -aliceAndBobOrCarlOrDaria :: Era era => MultiSig era -aliceAndBobOrCarlOrDaria = - RequireMOf - 1 - [ aliceAndBob - , RequireAnyOf [singleKeyOnly Cast.carlAddr, singleKeyOnly Cast.dariaAddr] - ] - -initTxBody :: - ( EraTxOut era - , EraTxCert era - ) => - [(Addr (EraCrypto era), Value era)] -> - ShelleyTxBody era -initTxBody addrs = - ShelleyTxBody - (Set.fromList [TxIn genesisId minBound, TxIn genesisId (mkTxIxPartial 1)]) - (StrictSeq.fromList $ map (uncurry mkBasicTxOut) addrs) - Empty - (Withdrawals Map.empty) - (Coin 0) - (SlotNo 0) - SNothing - SNothing - -makeTxBody :: - ( EraTxOut era - , EraTxCert era - ) => - [TxIn (EraCrypto era)] -> - [(Addr (EraCrypto era), Value era)] -> - Withdrawals (EraCrypto era) -> - ShelleyTxBody era -makeTxBody inp addrCs wdrl = - ShelleyTxBody - (Set.fromList inp) - (StrictSeq.fromList [uncurry mkBasicTxOut addrC | addrC <- addrCs]) - Empty - wdrl - (Coin 0) - (SlotNo 10) - SNothing - SNothing - -makeTx :: - forall c. - Mock c => - TxBody (ShelleyEra c) -> - [KeyPair 'Witness c] -> - Map (ScriptHash c) (MultiSig (ShelleyEra c)) -> - Maybe (ShelleyTxAuxData (ShelleyEra c)) -> - ShelleyTx (ShelleyEra c) -makeTx txBody keyPairs msigs = ShelleyTx txBody txWits . maybeToStrictMaybe - where - txWits :: ShelleyTxWits (ShelleyEra c) - txWits = - mkBasicTxWits - & addrTxWitsL .~ mkWitnessesVKey (hashAnnotated txBody) keyPairs - & scriptTxWitsL .~ msigs - -aliceInitCoin :: Coin -aliceInitCoin = Coin 10000 - -bobInitCoin :: Coin -bobInitCoin = Coin 1000 - -genesis :: - forall era. - ( EraTxOut era - , EraGov era - ) => - LedgerState era -genesis = genesisState genDelegs0 utxo0 - where - genDelegs0 = Map.empty - utxo0 = - genesisCoins @era - genesisId - [ mkBasicTxOut Cast.aliceAddr (Val.inject aliceInitCoin) - , mkBasicTxOut Cast.bobAddr (Val.inject bobInitCoin) - ] - -initPParams :: EraPParams era => PParams era -initPParams = - emptyPParams - & ppMaxTxSizeL .~ 1000 - --- | Create an initial UTxO state where Alice has 'aliceInitCoin' and Bob --- 'bobInitCoin' to spend. Then create and apply a transaction which, if --- 'aliceKeep' is greater than 0, gives that amount to Alice and creates outputs --- locked by a script for each pair of script, coin value in 'msigs'. -initialUTxOState :: - forall c. - Mock c => - Coin -> - [(MultiSig (ShelleyEra c), Coin)] -> - ( TxId c - , Either - (NonEmpty (PredicateFailure (ShelleyUTXOW (ShelleyEra c)))) - (UTxOState (ShelleyEra c)) - ) -initialUTxOState aliceKeep msigs = - let addresses = - [(Cast.aliceAddr, aliceKeep) | Val.pointwise (>) aliceKeep mempty] - ++ map - ( \(msig, era) -> - ( Addr - Testnet - (ScriptHashObj $ hashScript @(ShelleyEra c) msig) - (StakeRefBase $ ScriptHashObj $ hashScript @(ShelleyEra c) msig) - , era - ) - ) - msigs - in let tx = - makeTx - (initTxBody addresses) - (asWitness <$> [Cast.alicePay, Cast.bobPay]) - Map.empty - Nothing - in ( txIdTx tx - , runShelleyBase $ - applySTSTest @(ShelleyUTXOW (ShelleyEra c)) - ( TRC - ( UtxoEnv - (SlotNo 0) - initPParams - def - , lsUTxOState genesis - , tx - ) - ) - ) - --- | Start from genesis, consume Alice's and Bob's coins, create an output --- spendable by Alice if 'aliceKeep' is greater than 0. For each pair of script --- and coin value in 'lockScripts' create an output of that value locked by the --- script. Sign the transaction with keys in 'signers'. Then create an --- transaction that uses the scripts in 'unlockScripts' (and the output for --- 'aliceKeep' in the case of it being non-zero) to spend all funds back to --- Alice. Return resulting UTxO state or collected errors -applyTxWithScript :: - forall c. - Mock c => - [(MultiSig (ShelleyEra c), Coin)] -> - [MultiSig (ShelleyEra c)] -> - Withdrawals c -> - Coin -> - [KeyPair 'Witness c] -> - Either (NonEmpty (PredicateFailure (ShelleyUTXOW (ShelleyEra c)))) (UTxOState (ShelleyEra c)) -applyTxWithScript lockScripts unlockScripts wdrl aliceKeep signers = utxoSt' - where - (txId, initUtxo) = initialUTxOState aliceKeep lockScripts - utxoSt = case initUtxo of - Right utxoSt'' -> utxoSt'' - _ -> error $ "must fail test before: " ++ show initUtxo - txbody = - makeTxBody - inputs' - [(Cast.aliceAddr, Val.inject $ aliceInitCoin <> bobInitCoin <> fold (unWithdrawals wdrl))] - wdrl - inputs' = - [ TxIn txId (mkTxIxPartial (toInteger n)) - | n <- - [0 .. length lockScripts - if Val.pointwise (>) aliceKeep mempty then 0 else 1] - ] - -- alice? + scripts - tx = - makeTx - txbody - signers - (Map.fromList $ map (\scr -> (hashScript @(ShelleyEra c) scr, scr)) unlockScripts) - Nothing - utxoSt' = - runShelleyBase $ - applySTSTest @(ShelleyUTXOW (ShelleyEra c)) - ( TRC - ( UtxoEnv - (SlotNo 0) - initPParams - def - , utxoSt - , tx - ) - ) diff --git a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/RulesTests.hs b/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/RulesTests.hs deleted file mode 100644 index e9d2eec4cf2..00000000000 --- a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/RulesTests.hs +++ /dev/null @@ -1,585 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Test.Cardano.Ledger.Shelley.RulesTests ( - chainExamples, - multisigExamples, - testTickF, -) -where - -import Cardano.Ledger.BaseTypes (Network (..), StrictMaybe (..)) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Core (hashScript) -import Cardano.Ledger.Credential (pattern ScriptHashObj) -import Cardano.Ledger.Keys (asWitness, hashKey) -import Cardano.Ledger.Shelley (Shelley) -import Cardano.Ledger.Shelley.API (ShelleyTICK, ShelleyTICKF) -import Cardano.Ledger.Shelley.LedgerState ( - EpochState (..), - LedgerState (..), - NewEpochState (..), - UTxOState (..), - totalObligation, - utxosGovStateL, - ) -import Cardano.Ledger.Shelley.RewardUpdate (PulsingRewUpdate (..), RewardUpdate (..)) -import Cardano.Ledger.Shelley.Rules (ShelleyUtxowPredFailure (..)) -import Cardano.Ledger.Shelley.TxBody (RewardAccount (..), Withdrawals (..)) -import Cardano.Ledger.Slot (EpochNo (..)) -import Cardano.Protocol.TPraos.API (GetLedgerView (..)) -import Control.State.Transition.Extended (TRC (..)) -import Data.Either (isRight) -import qualified Data.Map.Strict as Map -import Data.Maybe (fromMaybe) -import qualified Data.Set as Set -import Lens.Micro ((^.)) -import Test.Cardano.Ledger.Core.KeyPair (vKey) -import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes (C, C_Crypto) -import Test.Cardano.Ledger.Shelley.Examples (testCHAINExample) -import qualified Test.Cardano.Ledger.Shelley.Examples.Cast as Cast -import Test.Cardano.Ledger.Shelley.Examples.EmptyBlock (exEmptyBlock) -import Test.Cardano.Ledger.Shelley.Examples.GenesisDelegation (genesisDelegExample) -import Test.Cardano.Ledger.Shelley.Examples.Mir (mirExample) -import Test.Cardano.Ledger.Shelley.Examples.MirTransfer (testMIRTransfer) -import Test.Cardano.Ledger.Shelley.Examples.NetworkID (testPoolNetworkId) -import Test.Cardano.Ledger.Shelley.Examples.PoolLifetime (poolLifetimeExample) -import Test.Cardano.Ledger.Shelley.Examples.PoolReReg (poolReRegExample) -import Test.Cardano.Ledger.Shelley.Examples.TwoPools (twoPoolsExample) -import Test.Cardano.Ledger.Shelley.Examples.Updates (updatesExample) -import Test.Cardano.Ledger.Shelley.MultiSigExamples ( - aliceAndBob, - aliceAndBobOrCarl, - aliceAndBobOrCarlAndDaria, - aliceAndBobOrCarlOrDaria, - aliceOnly, - aliceOrBob, - applyTxWithScript, - bobOnly, - ) -import Test.Cardano.Ledger.Shelley.Serialisation.EraIndepGenerators () -import Test.Cardano.Ledger.Shelley.Serialisation.Generators () -import Test.Cardano.Ledger.Shelley.Utils -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.HUnit (Assertion, assertBool, testCase, (@?=)) -import Test.Tasty.QuickCheck (Property, discard, testProperty, (===)) - -chainExamples :: TestTree -chainExamples = - testGroup - "CHAIN examples" - [ testCase "empty block" $ testCHAINExample exEmptyBlock - , poolLifetimeExample - , twoPoolsExample - , poolReRegExample - , updatesExample - , genesisDelegExample - , mirExample - , testMIRTransfer - , testPoolNetworkId - ] - -multisigExamples :: TestTree -multisigExamples = - testGroup - "MultiSig Examples" - [ testCase "Alice uses SingleSig script" testAliceSignsAlone - , testCase "FAIL: Alice doesn't sign in multi-sig" testAliceDoesntSign - , testCase "Everybody signs in multi-sig" testEverybodySigns - , testCase "FAIL: Wrong script for correct signatures" testWrongScript - , testCase "Alice || Bob, Alice signs" testAliceOrBob - , testCase "Alice || Bob, Bob signs" testAliceOrBob' - , testCase "Alice && Bob, both sign" testAliceAndBob - , testCase "FAIL: Alice && Bob, Alice signs" testAliceAndBob' - , testCase "FAIL: Alice && Bob, Bob signs" testAliceAndBob'' - , testCase "Alice && Bob || Carl, Alice && Bob sign" testAliceAndBobOrCarl - , testCase "Alice && Bob || Carl, Carl signs" testAliceAndBobOrCarl' - , testCase "Alice && Bob || Carl && Daria, Alice && Bob sign" testAliceAndBobOrCarlAndDaria - , testCase "Alice && Bob || Carl && Daria, Carl && Daria sign" testAliceAndBobOrCarlAndDaria' - , testCase "Alice && Bob || Carl || Daria, Alice && Bob sign" testAliceAndBobOrCarlOrDaria - , testCase "Alice && Bob || Carl || Daria, Carl signs" testAliceAndBobOrCarlOrDaria' - , testCase "Alice && Bob || Carl || Daria, Daria signs" testAliceAndBobOrCarlOrDaria'' - , testCase "two scripts: Alice Or Bob / alice And Bob Or Carl" testTwoScripts - , testCase "FAIL: two scripts: Alice Or Bob / alice And Bob Or Carl" testTwoScripts' - , testCase "script and Key: Alice And Bob and alicePay" testScriptAndSKey - , testCase "FAIL: script and Key: Alice And Bob and alicePay" testScriptAndSKey' - , testCase "script and Key: Alice Or Bob and alicePay, only Alice" testScriptAndSKey'' - , testCase - "script and Key: Alice And Bob Or Carl and alicePay, Alice and Carl sign" - testScriptAndSKey''' - , testCase "withdraw from script locked account, same script" testRwdAliceSignsAlone - , testCase "FAIL: withdraw from script locked account" testRwdAliceSignsAlone' - , testCase "withdraw from script locked account, different script" testRwdAliceSignsAlone'' - , testCase - "FAIL: withdraw from script locked account, signed, missing script" - testRwdAliceSignsAlone''' - ] - -testAliceSignsAlone :: Assertion -testAliceSignsAlone = - assertBool s (isRight utxoSt') - where - utxoSt' = - applyTxWithScript - @C_Crypto - [(aliceOnly, Coin 11000)] - [aliceOnly] - (Withdrawals Map.empty) - (Coin 0) - [asWitness Cast.alicePay] - s = "problem: " ++ show utxoSt' - -testAliceDoesntSign :: Assertion -testAliceDoesntSign = - utxoSt' @?= (Left . pure . ScriptWitnessNotValidatingUTXOW) wits - where - utxoSt' = - applyTxWithScript - @C_Crypto - [(aliceOnly, Coin 11000)] - [aliceOnly] - (Withdrawals Map.empty) - (Coin 0) - [asWitness Cast.bobPay, asWitness Cast.carlPay, asWitness Cast.dariaPay] - wits = Set.singleton $ hashScript @C aliceOnly - -testEverybodySigns :: Assertion -testEverybodySigns = - assertBool s (isRight utxoSt') - where - utxoSt' = - applyTxWithScript - @C_Crypto - [(aliceOnly, Coin 11000)] - [aliceOnly] - (Withdrawals Map.empty) - (Coin 0) - [ asWitness Cast.alicePay - , asWitness Cast.bobPay - , asWitness Cast.carlPay - , asWitness Cast.dariaPay - ] - s = "problem: " ++ show utxoSt' - -testWrongScript :: Assertion -testWrongScript = - utxoSt' @?= Left (pure extraneous <> pure missing) - where - utxoSt' = - applyTxWithScript - @C_Crypto - [(aliceOnly, Coin 11000)] - [aliceOrBob] - (Withdrawals Map.empty) - (Coin 0) - [asWitness Cast.alicePay, asWitness Cast.bobPay] - asHashes = Set.singleton . hashScript @C - extraneous = ExtraneousScriptWitnessesUTXOW $ asHashes aliceOrBob - missing = MissingScriptWitnessesUTXOW $ asHashes aliceOnly - -testAliceOrBob :: Assertion -testAliceOrBob = - assertBool s (isRight utxoSt') - where - utxoSt' = - applyTxWithScript - @C_Crypto - [(aliceOrBob, Coin 11000)] - [aliceOrBob] - (Withdrawals Map.empty) - (Coin 0) - [asWitness Cast.alicePay] - s = "problem: " ++ show utxoSt' - -testAliceOrBob' :: Assertion -testAliceOrBob' = - assertBool s (isRight utxoSt') - where - utxoSt' = - applyTxWithScript - @C_Crypto - [(aliceOrBob, Coin 11000)] - [aliceOrBob] - (Withdrawals Map.empty) - (Coin 0) - [asWitness Cast.bobPay] - s = "problem: " ++ show utxoSt' - -testAliceAndBob :: Assertion -testAliceAndBob = - assertBool s (isRight utxoSt') - where - utxoSt' = - applyTxWithScript - @C_Crypto - [(aliceAndBob, Coin 11000)] - [aliceAndBob] - (Withdrawals Map.empty) - (Coin 0) - [asWitness Cast.alicePay, asWitness Cast.bobPay] - s = "problem: " ++ show utxoSt' - -testAliceAndBob' :: Assertion -testAliceAndBob' = - utxoSt' @?= (Left . pure . ScriptWitnessNotValidatingUTXOW) wits - where - utxoSt' = - applyTxWithScript - @C_Crypto - [(aliceAndBob, Coin 11000)] - [aliceAndBob] - (Withdrawals Map.empty) - (Coin 0) - [asWitness Cast.alicePay] - wits = Set.singleton $ hashScript @C aliceAndBob - -testAliceAndBob'' :: Assertion -testAliceAndBob'' = - utxoSt' @?= (Left . pure . ScriptWitnessNotValidatingUTXOW) wits - where - utxoSt' = - applyTxWithScript - @C_Crypto - [(aliceAndBob, Coin 11000)] - [aliceAndBob] - (Withdrawals Map.empty) - (Coin 0) - [asWitness Cast.bobPay] - wits = Set.singleton $ hashScript @C aliceAndBob - -testAliceAndBobOrCarl :: Assertion -testAliceAndBobOrCarl = - assertBool s (isRight utxoSt') - where - utxoSt' = - applyTxWithScript - @C_Crypto - [(aliceAndBobOrCarl, Coin 11000)] - [aliceAndBobOrCarl] - (Withdrawals Map.empty) - (Coin 0) - [asWitness Cast.alicePay, asWitness Cast.bobPay] - s = "problem: " ++ show utxoSt' - -testAliceAndBobOrCarl' :: Assertion -testAliceAndBobOrCarl' = - assertBool s (isRight utxoSt') - where - utxoSt' = - applyTxWithScript - @C_Crypto - [(aliceAndBobOrCarl, Coin 11000)] - [aliceAndBobOrCarl] - (Withdrawals Map.empty) - (Coin 0) - [asWitness Cast.carlPay] - s = "problem: " ++ show utxoSt' - -testAliceAndBobOrCarlAndDaria :: Assertion -testAliceAndBobOrCarlAndDaria = - assertBool s (isRight utxoSt') - where - utxoSt' = - applyTxWithScript - @C_Crypto - [(aliceAndBobOrCarlAndDaria, Coin 11000)] - [aliceAndBobOrCarlAndDaria] - (Withdrawals Map.empty) - (Coin 0) - [asWitness Cast.alicePay, asWitness Cast.bobPay] - s = "problem: " ++ show utxoSt' - -testAliceAndBobOrCarlAndDaria' :: Assertion -testAliceAndBobOrCarlAndDaria' = - assertBool s (isRight utxoSt') - where - utxoSt' = - applyTxWithScript - @C_Crypto - [(aliceAndBobOrCarlAndDaria, Coin 11000)] - [aliceAndBobOrCarlAndDaria] - (Withdrawals Map.empty) - (Coin 0) - [asWitness Cast.carlPay, asWitness Cast.dariaPay] - s = "problem: " ++ show utxoSt' - -testAliceAndBobOrCarlOrDaria :: Assertion -testAliceAndBobOrCarlOrDaria = - assertBool s (isRight utxoSt') - where - utxoSt' = - applyTxWithScript - @C_Crypto - [(aliceAndBobOrCarlOrDaria, Coin 11000)] - [aliceAndBobOrCarlOrDaria] - (Withdrawals Map.empty) - (Coin 0) - [asWitness Cast.alicePay, asWitness Cast.bobPay] - s = "problem: " ++ show utxoSt' - -testAliceAndBobOrCarlOrDaria' :: Assertion -testAliceAndBobOrCarlOrDaria' = - assertBool s (isRight utxoSt') - where - utxoSt' = - applyTxWithScript - @C_Crypto - [(aliceAndBobOrCarlOrDaria, Coin 11000)] - [aliceAndBobOrCarlOrDaria] - (Withdrawals Map.empty) - (Coin 0) - [asWitness Cast.carlPay] - s = "problem: " ++ show utxoSt' - -testAliceAndBobOrCarlOrDaria'' :: Assertion -testAliceAndBobOrCarlOrDaria'' = - assertBool s (isRight utxoSt') - where - utxoSt' = - applyTxWithScript - @C_Crypto - [(aliceAndBobOrCarlOrDaria, Coin 11000)] - [aliceAndBobOrCarlOrDaria] - (Withdrawals Map.empty) - (Coin 0) - [asWitness Cast.dariaPay] - s = "problem: " ++ show utxoSt' - --- multiple script-locked outputs - -testTwoScripts :: Assertion -testTwoScripts = - assertBool s (isRight utxoSt') - where - utxoSt' = - applyTxWithScript - @C_Crypto - [ (aliceOrBob, Coin 10000) - , (aliceAndBobOrCarl, Coin 1000) - ] - [ aliceOrBob - , aliceAndBobOrCarl - ] - (Withdrawals Map.empty) - (Coin 0) - [asWitness Cast.bobPay, asWitness Cast.carlPay] - s = "problem: " ++ show utxoSt' - -testTwoScripts' :: Assertion -testTwoScripts' = - utxoSt' @?= (Left . pure . ScriptWitnessNotValidatingUTXOW) wits - where - utxoSt' = - applyTxWithScript - @C_Crypto - [ (aliceAndBob, Coin 10000) - , (aliceAndBobOrCarl, Coin 1000) - ] - [ aliceAndBob - , aliceAndBobOrCarl - ] - (Withdrawals Map.empty) - (Coin 0) - [asWitness Cast.bobPay, asWitness Cast.carlPay] - wits = Set.singleton $ hashScript @C aliceAndBob - --- script and skey locked - -testScriptAndSKey :: Assertion -testScriptAndSKey = - assertBool s (isRight utxoSt') - where - utxoSt' = - applyTxWithScript - @C_Crypto - [(aliceAndBob, Coin 10000)] - [aliceAndBob] - (Withdrawals Map.empty) - (Coin 1000) - [asWitness Cast.alicePay, asWitness Cast.bobPay] - s = "problem: " ++ show utxoSt' - -testScriptAndSKey' :: Assertion -testScriptAndSKey' = - utxoSt' @?= (Left . pure . MissingVKeyWitnessesUTXOW) wits - where - utxoSt' = - applyTxWithScript - @C_Crypto - [(aliceOrBob, Coin 10000)] - [aliceOrBob] - (Withdrawals Map.empty) - (Coin 1000) - [asWitness Cast.bobPay] - wits = Set.singleton $ asWitness $ hashKey $ vKey Cast.alicePay - -testScriptAndSKey'' :: Assertion -testScriptAndSKey'' = - assertBool s (isRight utxoSt') - where - utxoSt' = - applyTxWithScript - @C_Crypto - [(aliceOrBob, Coin 10000)] - [aliceOrBob] - (Withdrawals Map.empty) - (Coin 1000) - [asWitness Cast.alicePay] - s = "problem: " ++ show utxoSt' - -testScriptAndSKey''' :: Assertion -testScriptAndSKey''' = - assertBool s (isRight utxoSt') - where - utxoSt' = - applyTxWithScript - @C_Crypto - [(aliceAndBobOrCarl, Coin 10000)] - [aliceAndBobOrCarl] - (Withdrawals Map.empty) - (Coin 1000) - [asWitness Cast.alicePay, asWitness Cast.carlPay] - s = "problem: " ++ show utxoSt' - --- Withdrawals - -testRwdAliceSignsAlone :: Assertion -testRwdAliceSignsAlone = - assertBool s (isRight utxoSt') - where - utxoSt' = - applyTxWithScript - @C_Crypto - [(aliceOnly, Coin 11000)] - [aliceOnly] - ( Withdrawals $ - Map.singleton - ( RewardAccount - Testnet - (ScriptHashObj $ hashScript @C aliceOnly) - ) - (Coin 1000) - ) - (Coin 0) - [asWitness Cast.alicePay] - s = "problem: " ++ show utxoSt' - -testRwdAliceSignsAlone' :: Assertion -testRwdAliceSignsAlone' = - utxoSt' @?= (Left . pure . ScriptWitnessNotValidatingUTXOW) wits - where - utxoSt' = - applyTxWithScript - @C_Crypto - [(aliceOnly, Coin 11000)] - [aliceOnly, bobOnly] - ( Withdrawals $ - Map.singleton - ( RewardAccount - Testnet - ( ScriptHashObj $ - hashScript @C bobOnly - ) - ) - (Coin 1000) - ) - (Coin 0) - [asWitness Cast.alicePay] - wits = Set.singleton $ hashScript @C bobOnly - -testRwdAliceSignsAlone'' :: Assertion -testRwdAliceSignsAlone'' = - assertBool s (isRight utxoSt') - where - utxoSt' = - applyTxWithScript - @C_Crypto - [(aliceOnly, Coin 11000)] - [aliceOnly, bobOnly] - ( Withdrawals $ - Map.singleton - ( RewardAccount - Testnet - ( ScriptHashObj $ - hashScript @C bobOnly - ) - ) - (Coin 1000) - ) - (Coin 0) - [asWitness Cast.alicePay, asWitness Cast.bobPay] - s = "problem: " ++ show utxoSt' - -testRwdAliceSignsAlone''' :: Assertion -testRwdAliceSignsAlone''' = - utxoSt' @?= (Left . pure . MissingScriptWitnessesUTXOW) wits - where - utxoSt' = - applyTxWithScript - @C_Crypto - [(aliceOnly, Coin 11000)] - [aliceOnly] - ( Withdrawals $ - Map.singleton - (RewardAccount Testnet (ScriptHashObj $ hashScript @C bobOnly)) - (Coin 1000) - ) - (Coin 0) - [asWitness Cast.alicePay, asWitness Cast.bobPay] - wits = Set.singleton $ hashScript @C bobOnly - --- | The reward aggregation bug described in the Shelley ledger spec in --- section 17.4 (in the Errata) resulted in needing to use 'aggregatedRewards' to change --- the behavior of how rewards are collected starting at protocol version 3. --- Instead of collecting a `Coin` for each stake credential, we collect 'Set Reward'. --- In major protocol version 2, it is impossible for this set to be empty, but sadly this --- property is not enforced in the types. For this reason, the property test --- 'propTickfPerservesLedgerView' removes these empty sets from an otherwise arbitrary --- 'NewEpochState'. -filterEmptyRewards :: NewEpochState Shelley -> NewEpochState Shelley -filterEmptyRewards (NewEpochState el bprev bcur es ru pd stash) = - NewEpochState el bprev bcur es ru' pd stash - where - removeEmptyRewards = Map.filter $ not . Set.null - ru' = case ru of - SNothing -> SNothing - SJust (Pulsing _ _) -> SNothing - SJust (Complete rewardUpdate) -> - SJust . Complete $ rewardUpdate {rs = removeEmptyRewards (rs rewardUpdate)} - -setDepositsToObligation :: NewEpochState Shelley -> NewEpochState Shelley -setDepositsToObligation nes = nes {nesEs = es {esLState = ls {lsUTxOState = utxoState}}} - where - es = nesEs nes - ls = esLState es - utxoState = - (lsUTxOState ls) - { utxosDeposited = - totalObligation - (lsCertState ls) - (utxoState ^. utxosGovStateL) - } - --- | This property test checks the correctness of the TICKF transation. --- TICKF is used by the consensus layer to get a ledger view in a computationally --- cheaper way than using the TICK rule. --- Therefore TICKF and TICK need to compute the same ledger view. -propTickfPerservesLedgerView :: NewEpochState Shelley -> Property -propTickfPerservesLedgerView nes = - let (EpochNo e) = nesEL nes - slot = slotFromEpoch (EpochNo $ e + 1) - nes' = setDepositsToObligation (filterEmptyRewards nes) - tickNes = runShelleyBase $ applySTSTest @(ShelleyTICK Shelley) (TRC ((), nes', slot)) - tickFNes = runShelleyBase $ applySTSTest @(ShelleyTICKF Shelley) (TRC ((), nes', slot)) - in fromMaybe discard $ do - Right tickNes' <- pure tickNes - Right tickFNes' <- pure tickFNes - pure $ currentLedgerView tickNes' === currentLedgerView tickFNes' - -testTickF :: TestTree -testTickF = testProperty "TICKF properties" propTickfPerservesLedgerView diff --git a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/SafeHash.hs b/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/SafeHash.hs deleted file mode 100644 index 27b803d3573..00000000000 --- a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/SafeHash.hs +++ /dev/null @@ -1,100 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Test.Cardano.Ledger.Shelley.SafeHash (safeHashTest) where - -import Cardano.Ledger.SafeHash - --- ByteString imports - -import Data.ByteString (ByteString) -import Data.ByteString.Short (ShortByteString, toShort) - --- Testing imports - -import Data.Proxy -import Data.String (fromString) -import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes -import Test.Tasty -import Test.Tasty.HUnit - --- ========================= --- Some examples - -data FooI -- HashAnnotated indexes which are analogs of our EraIndependentXXX - -long :: ByteString -long = (fromString "abc") - -short :: ShortByteString -short = toShort long - --- Any newtype over some type that is SafeToHash can easily --- derive SafeToHash and also assign its HashAnnotated type, and --- thus become a client of 'hashAnnotated' - -newtype Foo c = Foo ShortByteString - deriving (Show, SafeToHash) - -instance HashAnnotated (Foo c) FooI c - -foo :: Foo c -foo = Foo short - --- =================================== --- Lets run some examples, we'll need some concrete Crypto - -foohash :: SafeHash StandardCrypto FooI -foohash = hashAnnotated foo - -shorthash :: SafeHash StandardCrypto ShortByteString -shorthash = makeHashWithExplicitProxys (Proxy @StandardCrypto) (Proxy @ShortByteString) short - -longhash :: SafeHash StandardCrypto ByteString -longhash = makeHashWithExplicitProxys (Proxy @StandardCrypto) (Proxy @ByteString) long - -foohashT :: SafeHash TestCrypto FooI -foohashT = hashAnnotated foo - -shorthashT :: SafeHash TestCrypto ShortByteString -shorthashT = makeHashWithExplicitProxys (Proxy @TestCrypto) (Proxy @ShortByteString) short - -longhashT :: SafeHash TestCrypto ByteString -longhashT = makeHashWithExplicitProxys (Proxy @TestCrypto) (Proxy @ByteString) long - -test1, test2, test3, test4 :: TestTree -test1 = - testCase - "short==long" - (assertEqual "ShortByteString and ByteString don't hash the same" shorthash (castSafeHash longhash)) -test2 = - testCase - "newtype==underlyingtype" - ( assertEqual "A newtype and its underlying type dont hash the same" shorthash (castSafeHash foohash) - ) -test3 = - testCase - "short==long" - ( assertEqual "ShortByteString and ByteString don't hash the same" shorthashT (castSafeHash longhashT) - ) -test4 = - testCase - "newtype==underlyingtype" - ( assertEqual - "A newtype and its underlying type dont hash the same" - shorthashT - (castSafeHash foohashT) - ) - -safeHashTest :: TestTree -safeHashTest = - testGroup - "SafeHash" - [ testGroup "StandardCrypto" [test1, test2] - , testGroup "TestCrypto" [test3, test4] - ] diff --git a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Serialisation.hs b/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Serialisation.hs deleted file mode 100644 index d2b4f4b4554..00000000000 --- a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Serialisation.hs +++ /dev/null @@ -1,19 +0,0 @@ -module Test.Cardano.Ledger.Shelley.Serialisation where - -import qualified Test.Cardano.Ledger.Shelley.Serialisation.Golden.Address -import qualified Test.Cardano.Ledger.Shelley.Serialisation.Golden.Encoding -import qualified Test.Cardano.Ledger.Shelley.Serialisation.Golden.Genesis -import qualified Test.Cardano.Ledger.Shelley.Serialisation.Tripping.CBOR -import qualified Test.Cardano.Ledger.Shelley.Serialisation.Tripping.JSON -import Test.Tasty - -tests :: TestTree -tests = - testGroup - "Serialisation tests" - [ Test.Cardano.Ledger.Shelley.Serialisation.Golden.Address.tests - , Test.Cardano.Ledger.Shelley.Serialisation.Golden.Encoding.tests - , Test.Cardano.Ledger.Shelley.Serialisation.Golden.Genesis.tests - , Test.Cardano.Ledger.Shelley.Serialisation.Tripping.CBOR.tests - , Test.Cardano.Ledger.Shelley.Serialisation.Tripping.JSON.tests - ] diff --git a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Serialisation/Golden/Address.hs b/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Serialisation/Golden/Address.hs deleted file mode 100644 index 307be706439..00000000000 --- a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Serialisation/Golden/Address.hs +++ /dev/null @@ -1,233 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Test.Cardano.Ledger.Shelley.Serialisation.Golden.Address (tests) where - -import qualified Cardano.Chain.Common as Byron -import Cardano.Crypto.Hash (HashAlgorithm (..), hashFromBytes, hashFromTextAsHex, sizeHash) -import Cardano.Crypto.Hash.Blake2b (Blake2b_224) -import Cardano.Ledger.Address -import Cardano.Ledger.BaseTypes (Network (..), mkCertIxPartial, mkTxIxPartial) -import Cardano.Ledger.Credential ( - Credential (..), - Ptr (..), - StakeReference (..), - ) -import Cardano.Ledger.Crypto (StandardCrypto) -import Cardano.Ledger.Keys ( - KeyRole (..), - pattern KeyHash, - ) -import Cardano.Ledger.Shelley.Scripts (pattern ScriptHash) -import Cardano.Ledger.Slot (SlotNo (..)) -import qualified Data.Binary as B -import qualified Data.Binary.Put as B -import qualified Data.ByteString as BS -import qualified Data.ByteString.Base16 as B16 -import qualified Data.ByteString.Base16.Lazy as LB16 -import qualified Data.ByteString.Lazy as LBS -import Data.Maybe (fromMaybe) -import Data.Proxy (Proxy (..)) -import GHC.Exts (IsString) -import GHC.Stack (HasCallStack) -import Test.Tasty (TestTree) -import qualified Test.Tasty as T -import qualified Test.Tasty.HUnit as T - --- Crypto family as used in production Shelley --- This should match that defined at https://github.com/input-output-hk/ouroboros-network/blob/master/ouroboros-consensus-shelley/src/Ouroboros/Consensus/Shelley/Protocol/Crypto.hs - -tests :: TestTree -tests = - T.testGroup - "Address golden tests" - [ goldenTests_MockCrypto - , goldenTests_ShelleyCrypto - ] - -{------------------------------------------------------------------------------ --- Golden tests -------------------------------------------------------------------------------} - -goldenTests_MockCrypto :: TestTree -goldenTests_MockCrypto = - T.testGroup - "MockCrypto golden tests" - [ golden "keyHash" putCredential keyHash keyHashHex - , golden "scriptHash" putCredential scriptHash scriptHashHex - , golden "ptr" putPtr ptr ptrHex - , golden - "addrBaseKK" - putAddr - (Addr Testnet keyHash (StakeRefBase keyHash)) - ("00" <> keyHashHex <> keyHashHex) - , golden - "addrBaseSK" - putAddr - (Addr Testnet scriptHash (StakeRefBase keyHash)) - ("10" <> scriptHashHex <> keyHashHex) - , golden - "addrBaseKS" - putAddr - (Addr Testnet keyHash (StakeRefBase scriptHash)) - ("20" <> keyHashHex <> scriptHashHex) - , golden - "addrBaseSS" - putAddr - (Addr Testnet scriptHash (StakeRefBase scriptHash)) - ("30" <> scriptHashHex <> scriptHashHex) - , golden - "addrPtrK" - putAddr - (Addr Testnet keyHash (StakeRefPtr ptr)) - ("40" <> keyHashHex <> ptrHex) - , golden - "addrPtrS" - putAddr - (Addr Testnet scriptHash (StakeRefPtr ptr)) - ("50" <> scriptHashHex <> ptrHex) - , golden - "addrEnterpriseK" - putAddr - (Addr Testnet keyHash StakeRefNull) - ("60" <> keyHashHex) - , golden - "addrEnterpriseS" - putAddr - (Addr Testnet scriptHash StakeRefNull) - ("70" <> scriptHashHex) - , golden - "rewardAcntK" - putRewardAccount - (RewardAccount Testnet keyHash) - ("e0" <> keyHashHex) - , golden - "rewardAcntS" - putRewardAccount - (RewardAccount Testnet scriptHash) - ("f0" <> scriptHashHex) - ] - where - keyHashHex :: IsString s => s - keyHashHex = "01020304a1a2a3a4a5a6a7a8a9b0b1b2b3b4b5b6b7b8b9c0c1c2c3c4" - keyHash :: Credential kh StandardCrypto - keyHash = - KeyHashObj - . KeyHash - . fromMaybe (error "Unable to decode") - $ hashFromTextAsHex keyHashHex - scriptHashHex :: IsString s => s - scriptHashHex = "05060708b5b6b7b8d5d6d7d8d9e0e1e2e3e4e5e6e7e8e9f0f1f2f3f4" - scriptHash :: Credential kh StandardCrypto - scriptHash = - ScriptHashObj - . ScriptHash - . fromMaybe (error "Unable to decode") - $ hashFromTextAsHex scriptHashHex - ptrHex :: IsString s => s - ptrHex = "81000203" - ptr :: Ptr - ptr = Ptr (SlotNo 128) (mkTxIxPartial 2) (mkCertIxPartial 3) - -goldenTests_ShelleyCrypto :: TestTree -goldenTests_ShelleyCrypto = - T.testGroup - "ShelleyCrypto golden tests" - [ golden - "addrEnterpriseK for network id = 0" - putAddr - (Addr Testnet paymentKey StakeRefNull) - "608a4d111f71a79169c50bcbc27e1e20b6e13e87ff8f33edc3cab419d4" - , golden - "addrBaseKK for network id = 0" - putAddr - (Addr Testnet paymentKey (StakeRefBase stakeKey)) - "008a4d111f71a79169c50bcbc27e1e20b6e13e87ff8f33edc3cab419d408b2d658668c2e341ee5bda4477b63c5aca7ec7ae4e3d196163556a4" - , golden - "addrPtrK for network id = 0" - putAddr - (Addr Testnet paymentKey (StakeRefPtr ptr)) - "408a4d111f71a79169c50bcbc27e1e20b6e13e87ff8f33edc3cab419d481000203" - , golden - "addrEnterpriseK for network id = 1" - putAddr - (Addr Mainnet paymentKey StakeRefNull) - "618a4d111f71a79169c50bcbc27e1e20b6e13e87ff8f33edc3cab419d4" - , golden - "addrBaseKK for network id = 1" - putAddr - (Addr Mainnet paymentKey (StakeRefBase stakeKey)) - "018a4d111f71a79169c50bcbc27e1e20b6e13e87ff8f33edc3cab419d408b2d658668c2e341ee5bda4477b63c5aca7ec7ae4e3d196163556a4" - , golden - "addrPtrK for network id = 1" - putAddr - (Addr Mainnet paymentKey (StakeRefPtr ptr)) - "418a4d111f71a79169c50bcbc27e1e20b6e13e87ff8f33edc3cab419d481000203" - , golden - "rewardAcntK" - putRewardAccount - (RewardAccount Testnet stakeKey) - "e008b2d658668c2e341ee5bda4477b63c5aca7ec7ae4e3d196163556a4" - , golden - "bootstrapAddr for network id = 1" - putAddr - ( AddrBootstrap . BootstrapAddress $ - Byron.Address - { Byron.addrRoot = read "4bf3c2ee56bfef278d65f7388c46efa12a1069698e474f77adf0cf6a" - , Byron.addrAttributes = - Byron.Attributes - { Byron.attrData = - Byron.AddrAttributes - { Byron.aaVKDerivationPath = Nothing - , Byron.aaNetworkMagic = Byron.NetworkMainOrStage - } - , Byron.attrRemain = Byron.UnparsedFields mempty - } - , Byron.addrType = Byron.ATVerKey - } - ) - "82d818582183581c4bf3c2ee56bfef278d65f7388c46efa12a1069698e474f77adf0cf6aa0001ab4aad9a5" - ] - where - paymentKey :: Credential 'Payment StandardCrypto - paymentKey = keyBlake2b224 $ B16.encode "1a2a3a4a5a6a7a8a" - stakeKey :: Credential 'Staking StandardCrypto - stakeKey = keyBlake2b224 $ B16.encode "1c2c3c4c5c6c7c8c" - ptr :: Ptr - ptr = Ptr (SlotNo 128) (mkTxIxPartial 2) (mkCertIxPartial 3) - -- 32-byte verification key is expected, vk, ie., public key without chain code. - -- The verification key undergoes Blake2b_224 hashing - -- and should be 28-byte in the aftermath - keyBlake2b224 :: BS.ByteString -> Credential kh StandardCrypto - keyBlake2b224 vk = - KeyHashObj - . KeyHash - . fromMaybe (error "Supplied bytes are of unexpected length") - $ hashFromBytes hk - where - hash = digest (Proxy :: Proxy Blake2b_224) - vk' = invariantSize 32 vk - hk = - invariantSize - (fromIntegral $ sizeHash (Proxy :: Proxy Blake2b_224)) - (hash vk') - invariantSize :: HasCallStack => Int -> BS.ByteString -> BS.ByteString - invariantSize expectedLength bytes - | BS.length bytes == expectedLength = bytes - | otherwise = - error $ - "length was " - ++ show (BS.length bytes) - ++ ", but expected to be " - ++ show expectedLength - -golden :: HasCallStack => String -> (a -> B.Put) -> a -> LBS.ByteString -> TestTree -golden name put value expected = - T.testCase name $ - T.assertEqual name expected (LB16.encode . B.runPut . put $ value) diff --git a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Serialisation/Golden/Encoding.hs b/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Serialisation/Golden/Encoding.hs deleted file mode 100644 index bd63b438d29..00000000000 --- a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Serialisation/Golden/Encoding.hs +++ /dev/null @@ -1,1146 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE CPP #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE OverloadedLists #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeOperators #-} -{-# OPTIONS_GHC -Wno-orphans #-} - --- | Golden tests that check CBOR token encoding. -module Test.Cardano.Ledger.Shelley.Serialisation.Golden.Encoding (tests) where - -import qualified Cardano.Crypto.Hash as Monomorphic -import Cardano.Crypto.KES (SignedKES) -import Cardano.Crypto.VRF (CertifiedVRF) -import Cardano.Ledger.Address (Addr (..), RewardAccount (..)) -import Cardano.Ledger.BaseTypes ( - BoundedRational (..), - EpochInterval (..), - Network (..), - Nonce (..), - ProtVer (..), - StrictMaybe (..), - UnitInterval, - mkNonceFromNumber, - mkTxIxPartial, - textToDns, - textToUrl, - ) -import Cardano.Ledger.Binary ( - Annotator, - DecCBOR (..), - DecCBORGroup (..), - Decoder, - DecoderError, - EncCBOR (..), - EncCBORGroup (..), - Tokens (..), - byronProtVer, - decodeFullAnnotator, - decodeFullDecoder, - decodeMapTraverse, - encCBOR, - fromPlainEncoding, - hashWithEncoder, - ipv4ToBytes, - shelleyProtVer, - toCBOR, - toPlainEncoding, - ) -import Cardano.Ledger.Binary.Crypto ( - encodeSignedDSIGN, - encodeVerKeyDSIGN, - ) -import qualified Cardano.Ledger.Binary.Plain as Plain -import Cardano.Ledger.Block (Block (..)) -import Cardano.Ledger.Coin (Coin (..), DeltaCoin (..)) -import Cardano.Ledger.Credential (Credential (..), StakeReference (..)) -import Cardano.Ledger.Crypto -import Cardano.Ledger.Keys ( - Hash, - KeyHash (..), - KeyRole (..), - SignedDSIGN, - VKey (..), - VerKeyVRF, - WitVKey (..), - asWitness, - encodeSignedKES, - hashKey, - hashVerKeyVRF, - signedDSIGN, - signedKES, - ) -import Cardano.Ledger.PoolParams ( - PoolMetadata (..), - PoolParams (..), - StakePoolRelay (..), - ) -import Cardano.Ledger.SafeHash (SafeHash, extractHash, hashAnnotated) -import Cardano.Ledger.Shelley (Shelley, ShelleyEra) -import Cardano.Ledger.Shelley.API (MultiSig) -import Cardano.Ledger.Shelley.BlockChain (ShelleyTxSeq (..), bbHash) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.PParams ( - ProposedPPUpdates (..), - pattern ProposedPPUpdates, - pattern Update, - ) -import Cardano.Ledger.Shelley.Rewards () -import Cardano.Ledger.Shelley.Scripts (pattern RequireSignature) -import Cardano.Ledger.Shelley.Tx (ShelleyTx (..)) -import qualified Cardano.Ledger.Shelley.TxAuxData as TxAuxData -import Cardano.Ledger.Shelley.TxBody (ShelleyTxBody (..)) -import Cardano.Ledger.Shelley.TxOut (ShelleyTxOut (..)) -import Cardano.Ledger.Shelley.TxWits (ShelleyTxWits, addrWits) -import Cardano.Ledger.Slot (BlockNo (..), EpochNo (..), SlotNo (..)) -import Cardano.Ledger.TxIn (TxId, TxIn (..)) -import Cardano.Protocol.TPraos.BHeader ( - BHBody (..), - BHeader (..), - HashHeader (..), - PrevHash (..), - bhash, - bheaderBlockNo, - bheaderEta, - bheaderL, - bheaderOCert, - bheaderPrev, - bheaderSlotNo, - bheaderVk, - bheaderVrfVk, - bprotver, - bsize, - mkSeed, - seedEta, - seedL, - ) -import Cardano.Protocol.TPraos.OCert ( - KESPeriod (..), - OCert, - OCertSignable (..), - pattern OCert, - ) -import qualified Codec.CBOR.Encoding as CBOR (Encoding (..)) -import Control.Monad -import Data.ByteString (ByteString) -import qualified Data.ByteString.Base16 as B16 -import qualified Data.ByteString.Char8 as BS (pack) -import qualified Data.ByteString.Lazy as BSL (ByteString) -import Data.Coerce (coerce) -import Data.IP (toIPv4) -import qualified Data.Map.Strict as Map -import qualified Data.Maybe as Maybe (fromJust) -import Data.Ratio ((%)) -import qualified Data.Sequence.Strict as StrictSeq -import qualified Data.Set as Set -import Data.String (fromString) -import Data.Word (Word64) -import Lens.Micro ((&), (.~)) -import Numeric.Natural (Natural) -import Test.Cardano.Ledger.Binary.TreeDiff (CBORBytes (CBORBytes), diffExpr) -import Test.Cardano.Ledger.Core.KeyPair (KeyPair (..), mkWitnessVKey, sKey, vKey) -import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes (C, C_Crypto, ExMock, Mock) -import Test.Cardano.Ledger.Shelley.Examples.Consensus as Ex ( - ledgerExamplesShelley, - sleNewEpochState, - ) -import Test.Cardano.Ledger.Shelley.Generator.Core (KESKeyPair (..), PreAlonzo, VRFKeyPair (..)) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (genesisId) -import Test.Cardano.Ledger.Shelley.Serialisation.GoldenUtils ( - ToTokens (..), - checkEncoding, - checkEncodingCBOR, - checkEncodingCBORAnnotated, - ) -import Test.Cardano.Ledger.Shelley.Utils -import Test.Cardano.Protocol.Crypto.VRF.Fake (WithResult (..)) -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.HUnit (assertFailure, testCase) - --- ============================================ - -type MultiSigMap = Map.Map (ScriptHash C_Crypto) (MultiSig (ShelleyEra C_Crypto)) - -decodeMultiSigMap :: Decoder s (Annotator MultiSigMap) -decodeMultiSigMap = decodeMapTraverse (pure <$> decCBOR) decCBOR - -deserializeMultiSigMap :: BSL.ByteString -> Either DecoderError MultiSigMap -deserializeMultiSigMap = - decodeFullAnnotator shelleyProtVer "Map ScriptHash MultiSig" decodeMultiSigMap - -checkEncodingCBORCBORGroup :: - (DecCBORGroup a, EncCBORGroup a, Show a, Eq a) => - String -> - a -> - ToTokens -> - TestTree -checkEncodingCBORCBORGroup name x t = - let d = decodeFullDecoder shelleyProtVer (fromString name) decCBORGroup - in checkEncoding shelleyProtVer encCBORGroup d name x t - -getRawKeyHash :: KeyHash 'Payment h -> ByteString -getRawKeyHash (KeyHash hsh) = Monomorphic.hashToBytes hsh - -getRawNonce :: Nonce -> ByteString -getRawNonce (Nonce hsh) = Monomorphic.hashToBytes hsh -getRawNonce NeutralNonce = error "The neutral nonce has no bytes" - -testGKey :: Crypto c => GenesisKeyPair c -testGKey = KeyPair vk sk - where - (sk, vk) = mkGenKey (RawSeed 0 0 0 0 0) - -testGKeyHash :: Crypto c => KeyHash 'Genesis c -testGKeyHash = (hashKey . vKey) testGKey - -testVRF :: Crypto c => VRFKeyPair c -testVRF = mkVRFKeyPair (RawSeed 0 0 0 0 5) - -testVRFKH :: forall c. Crypto c => Hash c (VerKeyVRF c) -testVRFKH = hashVerKeyVRF $ vrfVerKey (testVRF @c) - -testTxb :: (EraTxOut era, EraTxCert era) => ShelleyTxBody era -testTxb = - ShelleyTxBody - Set.empty - StrictSeq.empty - StrictSeq.empty - (Withdrawals Map.empty) - (Coin 0) - (SlotNo 0) - SNothing - SNothing - -testTxbHash :: - forall era. - (EraTxOut era, EraTxCert era) => - SafeHash (EraCrypto era) EraIndependentTxBody -testTxbHash = hashAnnotated $ testTxb @era - -testKey1 :: Crypto c => KeyPair 'Payment c -testKey1 = KeyPair vk sk - where - (sk, vk) = mkKeyPair (RawSeed 0 0 0 0 1) - -testKey2 :: Crypto c => KeyPair kr c -testKey2 = KeyPair vk sk - where - (sk, vk) = mkKeyPair (RawSeed 0 0 0 0 2) - -testBlockIssuerKey :: Crypto c => KeyPair 'BlockIssuer c -testBlockIssuerKey = KeyPair vk sk - where - (sk, vk) = mkKeyPair (RawSeed 0 0 0 0 4) - -testStakePoolKey :: Crypto c => KeyPair 'StakePool c -testStakePoolKey = KeyPair vk sk - where - (sk, vk) = mkKeyPair (RawSeed 0 0 0 0 5) - -testGenesisDelegateKey :: - Crypto c => - KeyPair 'GenesisDelegate c -testGenesisDelegateKey = KeyPair vk sk - where - (sk, vk) = mkKeyPair (RawSeed 0 0 0 0 6) - -testBlockIssuerKeyTokens :: Tokens -> Tokens -testBlockIssuerKeyTokens = e - where - VKey vk = vKey (testBlockIssuerKey @C_Crypto) - CBOR.Encoding e = toPlainEncoding shelleyProtVer (encodeVerKeyDSIGN vk) - -testKey1SigToken :: - forall era. - (EraTxOut era, Mock (EraCrypto era), EraTxCert era) => - Tokens -> - Tokens -testKey1SigToken = e - where - s = - signedDSIGN @(EraCrypto era) - (sKey $ testKey1 @(EraCrypto era)) - (extractHash (testTxbHash @era)) :: - SignedDSIGN (EraCrypto era) (Hash (EraCrypto era) EraIndependentTxBody) - CBOR.Encoding e = toPlainEncoding shelleyProtVer (encodeSignedDSIGN s) - -testOpCertSigTokens :: - forall c. - Mock c => - Tokens -> - Tokens -testOpCertSigTokens = e - where - s = - signedDSIGN @c - (sKey $ testKey1 @c) - (OCertSignable @c (kesVerKey $ testKESKeys @c) 0 (KESPeriod 0)) - CBOR.Encoding e = toPlainEncoding shelleyProtVer (encodeSignedDSIGN s) - -testKeyHash1 :: Crypto c => KeyHash 'Payment c -testKeyHash1 = (hashKey . vKey) testKey1 - -testKeyHash2 :: Crypto c => KeyHash 'Staking c -testKeyHash2 = (hashKey . vKey) testKey2 - -testKESKeys :: Crypto c => KESKeyPair c -testKESKeys = mkKESKeyPair (RawSeed 0 0 0 0 3) - -testAddrE :: Crypto c => Addr c -testAddrE = - Addr - Testnet - (KeyHashObj testKeyHash1) - StakeRefNull - -testPayCred :: forall c. Crypto c => Credential 'Payment c -testPayCred = KeyHashObj (testKeyHash1 @c) - -testStakeCred :: forall c. Crypto c => Credential 'Staking c -testStakeCred = KeyHashObj $ testKeyHash2 @c - -testScript :: forall c. Crypto c => MultiSig (ShelleyEra c) -testScript = RequireSignature $ asWitness (testKeyHash1 @c) - -testScriptHash :: forall c. Crypto c => ScriptHash c -testScriptHash = hashScript @(ShelleyEra c) testScript - -testScript2 :: forall c. Crypto c => MultiSig (ShelleyEra c) -testScript2 = RequireSignature $ asWitness (testKeyHash2 @c) - -testHeaderHash :: - forall c. - Crypto c => - HashHeader c -testHeaderHash = - HashHeader $ - coerce - (hashWithEncoder shelleyProtVer encCBOR 0 :: Hash c Int) - -testBHB :: - forall era c. - ( EraTx era - , PreAlonzo era - , ExMock c - , c ~ EraCrypto era - , Tx era ~ ShelleyTx era - ) => - BHBody c -testBHB = - BHBody - { bheaderBlockNo = BlockNo 44 - , bheaderSlotNo = SlotNo 33 - , bheaderPrev = BlockHash testHeaderHash - , bheaderVk = vKey testBlockIssuerKey - , bheaderVrfVk = vrfVerKey $ testVRF @c - , bheaderEta = - mkCertifiedVRF - ( WithResult - (mkSeed seedEta (SlotNo 33) (mkNonceFromNumber 0)) - 1 - ) - (vrfSignKey $ testVRF @c) - , bheaderL = - mkCertifiedVRF - ( WithResult - (mkSeed seedL (SlotNo 33) (mkNonceFromNumber 0)) - 1 - ) - (vrfSignKey $ testVRF @c) - , bsize = 0 - , bhash = bbHash @era $ ShelleyTxSeq @era StrictSeq.empty - , bheaderOCert = - OCert - (kesVerKey $ testKESKeys @c) - 0 - (KESPeriod 0) - ( signedDSIGN @c - (sKey $ testKey1 @c) - (OCertSignable (kesVerKey $ testKESKeys @c) 0 (KESPeriod 0)) - ) - , bprotver = ProtVer minBound 0 - } - -testBHBSigTokens :: - forall era. - ( EraTx era - , PreAlonzo era - , ExMock (EraCrypto era) - , Tx era ~ ShelleyTx era - ) => - Tokens -> - Tokens -testBHBSigTokens = e - where - s = - signedKES @(KES (EraCrypto era)) - () - 0 - (testBHB @era) - (kesSignKey $ testKESKeys @(EraCrypto era)) - CBOR.Encoding e = toPlainEncoding shelleyProtVer (encodeSignedKES s) - -tests :: TestTree -tests = - testGroup - "CBOR Serialization Tests (Encoding)" - [ checkEncodingCBOR - byronProtVer - "list (Byron)" - ([1] :: [Integer]) - (T (TkListBegin . TkInteger 1 . TkBreak)) - , checkEncodingCBOR - shelleyProtVer - "list (Shelley)" - ([1] :: [Integer]) - (T (TkListLen 1 . TkInteger 1)) - , checkEncodingCBOR - byronProtVer - "set (Byron)" - (Set.singleton (1 :: Integer)) - (T (TkTag 258 . TkListLen 1 . TkInteger 1)) - , checkEncodingCBOR - shelleyProtVer - "set (Shelley)" - (Set.singleton (1 :: Integer)) - (T (TkListLen 1 . TkInteger 1)) - , checkEncodingCBOR - shelleyProtVer - "map" - (Map.singleton (1 :: Integer) (1 :: Integer)) - (T (TkMapLen 1 . TkInteger 1 . TkInteger 1)) - , checkEncodingCBOR - shelleyProtVer - "coin" - (Coin 30) - (T (TkWord64 30)) - , checkEncodingCBOR - shelleyProtVer - "rational" - (unsafeBoundRational (1 % 2) :: UnitInterval) - (T (TkTag 30 . TkListLen 2 . TkWord64 1 . TkWord64 2)) - , checkEncodingCBOR - shelleyProtVer - "slot" - (SlotNo 7) - (T (TkWord64 7)) - , checkEncodingCBOR - shelleyProtVer - "neutral_nonce" - NeutralNonce - (T (TkListLen 1 . TkWord 0)) - , checkEncodingCBOR - shelleyProtVer - "nonce" - (mkNonceFromNumber 99) - (T (TkListLen 2 . TkWord 1 . TkBytes (getRawNonce $ mkNonceFromNumber 99))) - , checkEncodingCBOR - shelleyProtVer - "key_hash" - (testKeyHash1 @C_Crypto) - (T (TkBytes (getRawKeyHash (testKeyHash1 @C_Crypto)))) - , checkEncodingCBOR - shelleyProtVer - "credential_key_hash" - (testPayCred @C_Crypto) - (T (TkListLen 2 . TkWord 0) <> S (testKeyHash1 @C_Crypto)) - , checkEncodingCBOR - shelleyProtVer - "txin" - (TxIn @C_Crypto genesisId minBound) - (T (TkListLen 2) <> S (genesisId :: TxId C_Crypto) <> T (TkWord64 0)) - , let a = Addr Testnet testPayCred StakeRefNull - in checkEncodingCBOR - shelleyProtVer - "txout" - (ShelleyTxOut @C a (Coin 2)) - ( T (TkListLen 2) - <> S a - <> S (Coin 2) - ) - , case mkWitnessVKey @C_Crypto (testTxbHash @C) testKey1 of - w@(WitVKey vk _sig) -> - checkEncodingCBORAnnotated - shelleyProtVer - "vkey_witnesses" - w -- Transaction _witnessVKeySet element - ( T (TkListLen 2) - <> S vk -- vkey - <> T (testKey1SigToken @C) -- signature - ) - , checkEncoding - shelleyProtVer - (fromPlainEncoding . toCBOR) - deserializeMultiSigMap - "script_hash_to_scripts" - (Map.singleton (hashScript @C testScript) testScript) -- Transaction _witnessMSigMap - ( T (TkMapLen 1) - <> S (hashScript @C testScript) - <> S (testScript @C_Crypto) - ) - , -- checkEncodingCBOR "withdrawal_key" - let r = RewardAccount Testnet (testStakeCred @C_Crypto) - in checkEncodingCBOR - shelleyProtVer - "withdrawal" - (Map.singleton r (Coin 123)) - ( (T $ TkMapLen 1) - <> S r - <> S (Coin 123) - ) - , -- checkEncodingCBOR "withdrawal_script" - -- - let r = RewardAccount Testnet (ScriptHashObj (testScriptHash @C_Crypto)) - in checkEncodingCBOR - shelleyProtVer - "withdrawal" - (Map.singleton r (Coin 123)) - ( (T $ TkMapLen 1) - <> S r - <> S (Coin 123) - ) - , checkEncodingCBOR - shelleyProtVer - "register_stake_reference" - (RegTxCert @C (testStakeCred @C_Crypto)) - ( T (TkListLen 2) - <> T (TkWord 0) -- Reg cert - <> S (testStakeCred @C_Crypto) -- keyhash - ) - , checkEncodingCBOR - shelleyProtVer - "deregister_stake_reference" - (UnRegTxCert @C (testStakeCred @C_Crypto)) - ( T (TkListLen 2) - <> T (TkWord 1) -- DeReg cert - <> S (testStakeCred @C_Crypto) -- keyhash - ) - , checkEncodingCBOR - shelleyProtVer - "stake_delegation" - (DelegStakeTxCert @C (testStakeCred @C_Crypto) (hashKey $ vKey testStakePoolKey)) - ( T - ( TkListLen 3 - . TkWord 2 -- delegation cert with key - ) - <> S (testStakeCred @C_Crypto) - <> S (hashKey . vKey $ testStakePoolKey @C_Crypto) - ) - , -- checkEncodingCBOR "register-pool" - let poolOwner = testKeyHash2 @C_Crypto - poolMargin = unsafeBoundRational 0.7 - poolRAcnt = RewardAccount Testnet (testStakeCred @C_Crypto) - poolPledge = Coin 11 - poolCost = Coin 55 - poolUrl = "pool.io" - poolMDHash = BS.pack "{}" - ipv4 = toIPv4 [127, 0, 0, 1] - ipv4Bytes = ipv4ToBytes . toIPv4 $ [127, 0, 0, 1] - poolRelays = - StrictSeq.fromList - [ SingleHostAddr SNothing (SJust ipv4) SNothing - , SingleHostName (SJust 42) $ Maybe.fromJust $ textToDns 64 "singlehost.relay.com" - , MultiHostName $ Maybe.fromJust $ textToDns 64 "multihost.relay.com" - ] - in checkEncodingCBOR - shelleyProtVer - "register_pool" - ( RegPoolTxCert @C - ( PoolParams - { ppId = hashKey . vKey $ testStakePoolKey - , ppVrf = testVRFKH @C_Crypto - , ppPledge = poolPledge - , ppCost = poolCost - , ppMargin = poolMargin - , ppRewardAccount = poolRAcnt - , ppOwners = Set.singleton poolOwner - , ppRelays = poolRelays - , ppMetadata = - SJust $ - PoolMetadata - { pmUrl = Maybe.fromJust $ textToUrl 64 poolUrl - , pmHash = poolMDHash - } - } - ) - ) - ( T (TkListLen 10) - <> T (TkWord 3) -- Reg Pool - <> S (hashKey . vKey $ testStakePoolKey @C_Crypto) -- operator - <> S (testVRFKH @C_Crypto) -- vrf keyhash - <> S poolPledge -- pledge - <> S poolCost -- cost - <> S poolMargin -- margin - <> S poolRAcnt -- reward acct - <> T (TkListLen 1) - <> S poolOwner -- owners - <> T (TkListLen 3) -- relays - <> T (TkListLen 4 . TkWord 0 . TkNull . TkBytes ipv4Bytes . TkNull) - <> T (TkListLen 3 . TkWord 1 . (TkWord 42) . TkString ("singlehost.relay.com")) - <> T (TkListLen 2 . TkWord 2 . TkString ("multihost.relay.com")) - <> T (TkListLen 2) -- metadata present - <> S poolUrl -- metadata url - <> S poolMDHash -- metadata hash - ) - , checkEncodingCBOR - shelleyProtVer - "retire_pool" - ( RetirePoolTxCert @C - (hashKey . vKey $ testStakePoolKey @C_Crypto) - (EpochNo 1729) - ) - ( T - ( TkListLen 3 - . TkWord 4 -- Pool Retire - ) - <> S (hashKey . vKey $ testStakePoolKey @C_Crypto) -- key hash - <> S (EpochNo 1729) -- epoch - ) - , checkEncodingCBOR - shelleyProtVer - "genesis_delegation" - ( GenesisDelegTxCert @C - testGKeyHash - (hashKey . vKey $ testGenesisDelegateKey @C_Crypto) - (testVRFKH @C_Crypto) - ) - ( T - ( TkListLen 4 - . TkWord 5 -- genesis delegation cert - ) - <> S (testGKeyHash @C_Crypto) -- delegator credential - <> S (hashKey . vKey $ testGenesisDelegateKey @C_Crypto) -- delegatee key hash - <> S (testVRFKH @C_Crypto) -- delegatee vrf key hash - ) - , -- checkEncodingCBOR "mir" - let rws = StakeAddressesMIR $ Map.singleton (testStakeCred @C_Crypto) (DeltaCoin 77) - in checkEncodingCBOR - shelleyProtVer - "mir" - (MirTxCert @C (MIRCert ReservesMIR rws)) - ( T - ( TkListLen 2 - . TkWord 6 -- make instantaneous rewards cert - . TkListLen 2 - . TkWord 0 -- take from the reserves - ) - <> S rws - ) - , checkEncodingCBOR - shelleyProtVer - "pparams_update_key_deposit_only" - (emptyPParamsUpdate @Shelley & ppuKeyDepositL .~ SJust (Coin 5)) - ((T $ TkMapLen 1 . TkWord 5) <> S (Coin 5)) - , -- checkEncodingCBOR "pparams_update_all" - let minfeea = Coin 0 - minfeeb = Coin 1 - maxbbsize = 2 - maxtxsize = 3 - maxbhsize = 4 - keydeposit = Coin 5 - pooldeposit = Coin 6 - emax = EpochInterval 7 - nopt = 8 - a0 = unsafeBoundRational $ 1 % 6 - rho = unsafeBoundRational $ 1 % 6 - tau = unsafeBoundRational $ 1 % 7 - d = unsafeBoundRational $ 1 % 9 - extraEntropy = NeutralNonce - protocolVersion = ProtVer minBound 1 - minUTxOValue = Coin 121 - minPoolCost = Coin 987 - in checkEncodingCBOR - shelleyProtVer - "pparams_update_all" - ( emptyPParamsUpdate @Shelley - & ppuMinFeeAL .~ SJust minfeea - & ppuMinFeeBL .~ SJust minfeeb - & ppuMaxBBSizeL .~ SJust maxbbsize - & ppuMaxTxSizeL .~ SJust maxtxsize - & ppuMaxBHSizeL .~ SJust maxbhsize - & ppuKeyDepositL .~ SJust keydeposit - & ppuPoolDepositL .~ SJust pooldeposit - & ppuEMaxL .~ SJust emax - & ppuNOptL .~ SJust nopt - & ppuA0L .~ SJust a0 - & ppuRhoL .~ SJust rho - & ppuTauL .~ SJust tau - & ppuDL .~ SJust d - & ppuExtraEntropyL .~ SJust extraEntropy - & ppuProtocolVersionL .~ SJust protocolVersion - & ppuMinUTxOValueL .~ SJust minUTxOValue - & ppuMinPoolCostL .~ SJust minPoolCost - ) - ( (T $ TkMapLen 17) - <> (T $ TkWord 0) - <> S minfeea - <> (T $ TkWord 1) - <> S minfeeb - <> (T $ TkWord 2) - <> S maxbbsize - <> (T $ TkWord 3) - <> S maxtxsize - <> (T $ TkWord 4) - <> S maxbhsize - <> (T $ TkWord 5) - <> S keydeposit - <> (T $ TkWord 6) - <> S pooldeposit - <> (T $ TkWord 7) - <> S emax - <> (T $ TkWord 8) - <> S nopt - <> (T $ TkWord 9 . TkTag 30) - <> S (unboundRational a0) - <> (T $ TkWord 10) - <> S rho - <> (T $ TkWord 11) - <> S tau - <> (T $ TkWord 12) - <> S d - <> (T $ TkWord 13) - <> S extraEntropy - <> (T $ TkWord 14) - <> S protocolVersion - <> (T $ TkWord 15) - <> S minUTxOValue - <> (T $ TkWord 16) - <> S minPoolCost - ) - , -- checkEncodingCBOR "full_update" - let ppup = - ProposedPPUpdates @C - ( Map.singleton - (testGKeyHash @C_Crypto) - (emptyPParamsUpdate & ppuNOptL .~ SJust 100) - ) - e = EpochNo 0 - in checkEncodingCBOR - shelleyProtVer - "full_update" - (Update ppup e) - ( T (TkListLen 2) - <> S ppup - <> S e - ) - , -- checkEncodingCBOR "minimal_txn_body" - let tout = ShelleyTxOut @C testAddrE (Coin 2) - in checkEncodingCBORAnnotated - shelleyProtVer - "txbody" - ( ShelleyTxBody @C -- minimal transaction body - (Set.fromList [genesisTxIn1]) - (StrictSeq.singleton tout) - StrictSeq.empty - (Withdrawals Map.empty) - (Coin 9) - (SlotNo 500) - SNothing - SNothing - ) - ( T (TkMapLen 4) - <> T (TkWord 0) -- Tx Ins - <> T (TkListLen 1) - <> S genesisTxIn1 - <> T (TkWord 1) -- Tx Outs - <> T (TkListLen 1) - <> S tout - <> T (TkWord 2) -- Tx Fee - <> T (TkWord64 9) - <> T (TkWord 3) -- Tx TTL - <> T (TkWord64 500) - ) - , -- checkEncodingCBOR "transaction_mixed" - let tout = ShelleyTxOut @C testAddrE (Coin 2) - ra = RewardAccount Testnet (KeyHashObj testKeyHash2) - ras = Map.singleton ra (Coin 123) - up = - Update - ( ProposedPPUpdates $ - Map.singleton testGKeyHash $ - emptyPParamsUpdate & ppuNOptL .~ SJust 100 - ) - (EpochNo 0) - in checkEncodingCBORAnnotated - shelleyProtVer - "txbody_partial" - ( ShelleyTxBody @C -- transaction body with some optional components - (Set.fromList [genesisTxIn1]) - (StrictSeq.singleton tout) - StrictSeq.Empty - (Withdrawals ras) - (Coin 9) - (SlotNo 500) - (SJust up) - SNothing - ) - ( T (TkMapLen 6) - <> T (TkWord 0) -- Tx Ins - <> T (TkListLen 1) - <> S genesisTxIn1 - <> T (TkWord 1) -- Tx Outs - <> T (TkListLen 1) - <> S tout - <> T (TkWord 2) -- Tx Fee - <> S (Coin 9) - <> T (TkWord 3) -- Tx TTL - <> S (SlotNo 500) - <> T (TkWord 5) -- Tx Reward Withdrawals - <> S ras - <> T (TkWord 6) -- Tx Update - <> S up - ) - , -- checkEncodingCBOR "full_txn_body" - let tout = ShelleyTxOut @C testAddrE (Coin 2) - reg = RegTxCert (testStakeCred @C_Crypto) - ra = RewardAccount Testnet (KeyHashObj testKeyHash2) - ras = Map.singleton ra (Coin 123) - up = - Update - ( ProposedPPUpdates $ - Map.singleton testGKeyHash $ - emptyPParamsUpdate & ppuNOptL .~ SJust 100 - ) - (EpochNo 0) - mdh = hashTxAuxData @C $ TxAuxData.ShelleyTxAuxData $ Map.singleton 13 (TxAuxData.I 17) - in checkEncodingCBORAnnotated - shelleyProtVer - "txbody_full" - ( ShelleyTxBody @C -- transaction body with all components - (Set.fromList [genesisTxIn1]) - (StrictSeq.singleton tout) - (StrictSeq.fromList [reg]) - (Withdrawals ras) - (Coin 9) - (SlotNo 500) - (SJust up) - (SJust mdh) - ) - ( T (TkMapLen 8) - <> T (TkWord 0) -- Tx Ins - <> T (TkListLen 1) - <> S genesisTxIn1 - <> T (TkWord 1) -- Tx Outs - <> T (TkListLen 1) - <> S tout - <> T (TkWord 2) -- Tx Fee - <> S (Coin 9) - <> T (TkWord 3) -- Tx TTL - <> S (SlotNo 500) - <> T (TkWord 4) -- Tx Certs - <> T (TkListLen 1) -- Seq list begin - <> S reg - <> T (TkWord 5) -- Tx Reward Withdrawals - <> S ras - <> T (TkWord 6) -- Tx Update - <> S up - <> T (TkWord 7) -- Tx Metadata - <> S mdh - ) - , -- checkEncodingCBOR "minimal_txn" - let txb = - ShelleyTxBody @C - (Set.fromList [TxIn genesisId (mkTxIxPartial 1)]) - (StrictSeq.singleton $ ShelleyTxOut @C testAddrE (Coin 2)) - StrictSeq.empty - (Withdrawals Map.empty) - (Coin 9) - (SlotNo 500) - SNothing - SNothing - txbh = (hashAnnotated txb) - w = mkWitnessVKey @C_Crypto txbh testKey1 - in checkEncodingCBORAnnotated - shelleyProtVer - "tx_min" - ( ShelleyTx @(ShelleyEra C_Crypto) - txb - (mempty {addrWits = Set.singleton w} :: ShelleyTxWits C) - SNothing - ) - ( T (TkListLen 3) - <> S txb - <> T (TkMapLen 1) - <> T (TkWord 0) - <> T (TkListLen 1) - <> S w - <> T TkNull - ) - , -- checkEncodingCBOR "full_txn" - let txb = - ShelleyTxBody @C - (Set.fromList [genesisTxIn1]) - (StrictSeq.singleton $ ShelleyTxOut @C testAddrE (Coin 2)) - StrictSeq.empty - (Withdrawals Map.empty) - (Coin 9) - (SlotNo 500) - SNothing - SNothing - txbh = hashAnnotated txb - w = mkWitnessVKey @C_Crypto txbh testKey1 - s = Map.singleton (hashScript @C testScript) (testScript @C_Crypto) - txwits :: ShelleyTxWits C - txwits = mkBasicTxWits @C & addrTxWitsL .~ Set.singleton w & scriptTxWitsL .~ s - md = (TxAuxData.ShelleyTxAuxData @C) $ Map.singleton 17 (TxAuxData.I 42) - in checkEncodingCBORAnnotated - shelleyProtVer - "tx_full" - (ShelleyTx @(ShelleyEra C_Crypto) txb txwits (SJust md)) - ( T (TkListLen 3) - <> S txb - <> T (TkMapLen 2) - <> T (TkWord 0) - <> T (TkListLen 1) - <> S w - <> T (TkWord 1) - <> T (TkListLen 1) - <> S (testScript @C_Crypto) - <> S md - ) - , -- checkEncodingCBOR "block_header_body" - let prevhash = BlockHash testHeaderHash - vrfVkey = vrfVerKey $ testVRF @C_Crypto - slot = SlotNo 33 - nonce = mkSeed seedEta (SlotNo 33) (mkNonceFromNumber 0) - nonceProof :: CertifiedVRF (VRF C_Crypto) Nonce - nonceProof = - mkCertifiedVRF - (WithResult nonce 1) - (vrfSignKey $ testVRF @C_Crypto) - leaderValue = mkSeed seedL (SlotNo 33) (mkNonceFromNumber 0) - leaderProof :: CertifiedVRF (VRF C_Crypto) Natural - leaderProof = - mkCertifiedVRF - (WithResult leaderValue 1) - (vrfSignKey $ testVRF @C_Crypto) - size = 0 - blockNo = BlockNo 44 - bbhash = bbHash @C $ ShelleyTxSeq StrictSeq.empty - ocert :: OCert C_Crypto - ocert = - OCert - (kesVerKey $ testKESKeys @C_Crypto) - 0 - (KESPeriod 0) - ( signedDSIGN @C_Crypto - (sKey (testBlockIssuerKey @C_Crypto)) - (OCertSignable (kesVerKey $ testKESKeys @C_Crypto) 0 (KESPeriod 0)) - ) - protover = ProtVer minBound 0 - in checkEncodingCBOR - shelleyProtVer - "block_header_body" - ( BHBody - { bheaderBlockNo = blockNo - , bheaderSlotNo = slot - , bheaderPrev = prevhash - , bheaderVk = vKey testBlockIssuerKey - , bheaderVrfVk = vrfVkey - , bheaderEta = nonceProof - , bheaderL = leaderProof - , bsize = size - , bhash = bbhash - , bheaderOCert = ocert - , bprotver = protover - } - ) - ( T (TkListLen $ 9 + 4 + 2) - <> S blockNo - <> S slot - <> S prevhash - <> T testBlockIssuerKeyTokens - <> S vrfVkey - <> S nonceProof - <> S leaderProof - <> S size - <> S bbhash - <> G ocert -- 5 - <> G protover -- 3 - ) - , -- checkEncodingCBOR "operational_cert" - let vkHot = kesVerKey $ testKESKeys @C_Crypto - counter = 0 - kesperiod = KESPeriod 0 - signature = - signedDSIGN @C_Crypto - (sKey $ testKey1 @C_Crypto) - (OCertSignable (kesVerKey $ testKESKeys @C_Crypto) 0 (KESPeriod 0)) - in checkEncodingCBORCBORGroup - "operational_cert" - ( OCert @C_Crypto - vkHot - counter - kesperiod - signature - ) - ( S vkHot - <> S counter - <> S kesperiod - <> T (testOpCertSigTokens @C_Crypto) - ) - , -- checkEncodingCBOR "block_header" - let sig :: (SignedKES (KES C_Crypto) (BHBody C_Crypto)) - sig = signedKES () 0 (testBHB @C) (kesSignKey $ testKESKeys @C_Crypto) - in checkEncodingCBORAnnotated - shelleyProtVer - "block_header" - (BHeader (testBHB @C) sig) - ( (T $ TkListLen 2) - <> S (testBHB @C) - <> T (testBHBSigTokens @C) - ) - , -- checkEncodingCBOR "empty_block" - let sig :: (SignedKES (KES C_Crypto) (BHBody C_Crypto)) - sig = signedKES () 0 (testBHB @C) (kesSignKey $ testKESKeys @C_Crypto) - bh = BHeader (testBHB @C) sig - txns = ShelleyTxSeq StrictSeq.Empty - in checkEncodingCBORAnnotated - shelleyProtVer - "empty_block" - (Block @C bh txns) - ( (T $ TkListLen 4) - <> S bh - <> T (TkListLen 0 . TkListLen 0 . TkMapLen 0) - ) - , -- checkEncodingCBOR "rich_block" - let sig :: SignedKES (KES C_Crypto) (BHBody C_Crypto) - sig = signedKES () 0 (testBHB @C) (kesSignKey $ testKESKeys @C_Crypto) - bh = BHeader (testBHB @C) sig - tout = StrictSeq.singleton $ ShelleyTxOut @C testAddrE (Coin 2) - txb :: Word64 -> ShelleyTxBody C - txb s = - ShelleyTxBody @C - (Set.fromList [genesisTxIn1]) - tout - StrictSeq.empty - (Withdrawals Map.empty) - (Coin 9) - (SlotNo s) - SNothing - SNothing - txb1, txb2, txb3, txb4, txb5 :: ShelleyTxBody C - txb1 = txb 500 - txb2 = txb 501 - txb3 = txb 502 - txb4 = txb 503 - txb5 = txb 504 - w1 = mkWitnessVKey (hashAnnotated txb1) testKey1 - w2 = mkWitnessVKey (hashAnnotated txb1) testKey2 - ws = Set.fromList [w1, w2] - tx1, tx2, tx3, tx4, tx5 :: ShelleyTx C - tx1 = - mkBasicTx txb1 - & witsTxL @C .~ (mkBasicTxWits @C & addrTxWitsL .~ Set.singleton w1) - tx2 = - mkBasicTx txb2 - & witsTxL @C .~ (mkBasicTxWits @C & addrTxWitsL .~ ws) - tx3 = - mkBasicTx txb3 - & witsTxL @C - .~ ( mkBasicTxWits @C - & scriptTxWitsL - .~ Map.singleton (hashScript @C testScript) testScript - ) - ss = - Map.fromList - [ (hashScript @C testScript, testScript) - , (hashScript @C testScript2, testScript2) - ] - tx4 = - mkBasicTx txb4 - & witsTxL @C .~ (mkBasicTxWits @C & scriptTxWitsL .~ ss) - tx5MD = TxAuxData.ShelleyTxAuxData @C $ Map.singleton 17 (TxAuxData.I 42) - tx5 = - mkBasicTx txb5 - & witsTxL @C .~ (mkBasicTxWits @C & addrTxWitsL .~ ws & scriptTxWitsL .~ ss) - & auxDataTxL @C .~ SJust tx5MD - txns = ShelleyTxSeq $ StrictSeq.fromList [tx1, tx2, tx3, tx4, tx5] - in checkEncodingCBORAnnotated - shelleyProtVer - "rich_block" - (Block @C bh txns) - ( (T $ TkListLen 4) - -- header - <> S bh - -- bodies - <> T (TkListLen 5) - <> S txb1 - <> S txb2 - <> S txb3 - <> S txb4 - <> S txb5 - -- witnesses - <> T (TkListLen 5) - -- tx 1, one key - <> T (TkMapLen 1 . TkWord 0) - <> T (TkListLen 1) - <> S w1 - -- tx 2, two keys - <> T (TkMapLen 1 . TkWord 0) - <> T (TkListLen 2) - -- The test is unfortunately sensitive to this ordering. TODO make it - -- better - <> S w2 - <> S w1 - -- tx 3, one script - <> T (TkMapLen 1 . TkWord 1) - <> T (TkListLen 1) - <> S (testScript @C_Crypto) - -- tx 4, two scripts - <> T (TkMapLen 1 . TkWord 1) - <> T (TkListLen 2) - <> S (testScript2 @C_Crypto) - <> S (testScript @C_Crypto) - -- tx 5, two keys and two scripts - <> T (TkMapLen 2) - <> T (TkWord 0) - <> T (TkListLen 2) - <> S w2 - <> S w1 - <> T (TkWord 1) - <> T (TkListLen 2) - <> S (testScript2 @C_Crypto) - <> S (testScript @C_Crypto) - -- metadata - <> T (TkMapLen 1) - <> T (TkInt 4) - <> S tx5MD - ) - , let actual = - Plain.serialize' $ Ex.sleNewEpochState Ex.ledgerExamplesShelley - expected = either error id $ B16.decode expectedHex - actualHex = B16.encode actual - expectedHex = - mconcat - [ "8700a1581ce0a714319812c3f773ba04ec5d6b3ffcd5aad85006805b047b0825410aa158" - , "1ca646474b8f5431261506b6c273d307c7569a4eb6c96b42dd4a29520a03848219271019" - , "03e8828383a0a00084a0a0a0a08482a0a0a0a084a0a0000086a1825820ee155ace9c" - , "40292074cb6aff8c9ccdd273c81648ff1149ef36bcea6ebb8a3e250082583900cb935852" - , "9df4729c3246a2a033cb9821abbfd16de4888005904abc410d6a577e9441ad8ed9663931" - , "906e4d43ece8f82c712b1d0235affb060a1903e80184a0a0920000001908000000000018" - , "64d81e820001d81e820001d81e820001d81e820001810002000100920000001908000000" - , "00001864d81e820001d81e820001d81e820001d81e82000181000200000082a0a0008483" - , "a0a0a083a0a0a083a0a0a00082a000818300880082020082a000000000a0a0840185a080" - , "00820200a0a082a0a0a1581ce0a714319812c3f773ba04ec5d6b3ffcd5aad85006805b04" - , "7b082541828201015820c5e21ab1c9f6022d81c3b25e3436cb7f1df77f9652ae3e1310c2" - , "8e621dd87b4ca0" - ] - in testCase "ledger state golden test" $ - unless (actual == expected) $ - assertFailure $ - unlines - [ "Expected: " ++ show expectedHex - , "Actual: " ++ show actualHex - , diffExpr (CBORBytes expected) (CBORBytes actual) - ] - ] - where - genesisTxIn1 = TxIn @C_Crypto genesisId (mkTxIxPartial 1) diff --git a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Serialisation/Golden/Genesis.hs b/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Serialisation/Golden/Genesis.hs deleted file mode 100644 index c958ebbf3fc..00000000000 --- a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Serialisation/Golden/Genesis.hs +++ /dev/null @@ -1,285 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Test.Cardano.Ledger.Shelley.Serialisation.Golden.Genesis ( - tests, - - -- * Individual properties - golden_json_ShelleyGenesis, - golden_cbor_ShelleyGenesis, -) -where - -import qualified Cardano.Crypto.Hash as Hash -import Cardano.Ledger.BaseTypes (textToDns, textToUrl) -import Cardano.Ledger.Binary (Tokens (..)) -import qualified Cardano.Ledger.Binary.Plain as Plain -import Cardano.Ledger.Core (emptyPParams, ppDL, ppMaxBBSizeL, ppMaxBHSizeL) -import Cardano.Ledger.Crypto (Crypto (HASH), StandardCrypto) -import Cardano.Ledger.Keys (hashKey, hashVerKeyVRF) -import Cardano.Ledger.Shelley (ShelleyEra) -import qualified Cardano.Ledger.Shelley.API as L -import Cardano.Ledger.Shelley.Genesis -import Cardano.Slotting.Slot (EpochSize (..)) -import Control.Monad -import Data.Aeson hiding (Encoding) -import qualified Data.ByteString.Char8 as BS (pack) -import qualified Data.ListMap as LM -import qualified Data.Map.Strict as Map -import Data.Maybe (fromJust) -import Data.Scientific (Scientific) -import qualified Data.Sequence.Strict as StrictSeq -import qualified Data.Set as Set -import Data.Time.Clock.POSIX (posixSecondsToUTCTime) -import Lens.Micro -import Paths_cardano_ledger_shelley_test (getDataFileName) -import Test.Cardano.Ledger.Binary.TreeDiff (CBORBytes (CBORBytes), diffExpr) -import Test.Cardano.Ledger.Core.KeyPair (vKey) -import qualified Test.Cardano.Ledger.Shelley.Examples.Cast as Cast -import Test.Cardano.Ledger.Shelley.Generator.Core (VRFKeyPair (..)) -import Test.Cardano.Ledger.Shelley.Utils ( - RawSeed (..), - mkKeyPair, - mkVRFKeyPair, - unsafeBoundRational, - ) -import Test.Tasty -import Test.Tasty.HUnit (Assertion, assertFailure, testCase, (@?=)) - -goldenTestJSON :: ToJSON a => a -> FilePath -> Assertion -goldenTestJSON actual expectedFile = - case eitherDecode' (encode actual) of - Left err -> error err - Right (val :: Value) -> do - expected <- either error id <$> eitherDecodeFileStrict expectedFile - val @?= expected - -golden_json_ShelleyGenesis :: Assertion -golden_json_ShelleyGenesis = - goldenTestJSON example =<< getDataFileName "test/Golden/ShelleyGenesis" - where - example :: ShelleyGenesis StandardCrypto - example = exampleShelleyGenesis - -golden_cbor_ShelleyGenesis :: Assertion -golden_cbor_ShelleyGenesis = - when (received /= expected) $ - assertFailure - (diffExpr (CBORBytes expected) (CBORBytes received)) - where - example :: ShelleyGenesis StandardCrypto - example = exampleShelleyGenesis - - received = Plain.serialize' expectedTokens - expected = Plain.serialize' example - - expectedTokens = - TkListLen 15 - . TkListLen 3 - . TkInt 2009 - . TkInt 44 - . TkInt 83589000000000000 -- sgSystemStart - . TkInt 4036000900 -- sgNetworkMagic - . TkInt 0 -- sgNetworkId - . TkListLen 2 - . TkInt 259 - . TkInt 1000 -- sgActiveSlotsCoeff - . TkInt 120842 -- sgSecurityParam - . TkInt 1215 -- sgEpochLength - . TkInt 8541 -- sgSlotsPerKESPeriod - . TkInt 28899 -- sgMaxKESEvolutions - . TkInt 8000000 -- sgSlotLength - . TkInt 16991 -- sgUpdateQuorum - . TkInt 71 -- sgMaxLovelaceSupply - . TkListLen 18 -- sgProtocolParams - . TkInt 0 - . TkInt 0 - . TkInt 239857 - . TkInt 2048 - . TkInt 17569 - . TkInt 0 - . TkInt 0 - . TkInt 0 - . TkInt 100 - . TkTag 30 - . TkListLen 2 - . TkInt 0 - . TkInt 1 - . TkTag 30 - . TkListLen 2 - . TkInt 0 - . TkInt 1 - . TkTag 30 - . TkListLen 2 - . TkInt 0 - . TkInt 1 - . TkTag 30 - . TkListLen 2 - . TkInt 19 - . TkInt 1000 - . TkListLen 1 - . TkInt 0 - . TkInt 2 - . TkInt 0 - . TkInt 0 - . TkInt 0 - . TkMapLen 1 -- sgGenDelegs - . TkBytes - "8\231\197\152j4\243\&4\225\155q,\n\165%\DC4m\171\143\SI\248\137\178\173\SYN\137BA" - . TkListLen 2 - . TkBytes - "\230\150\r\214q\238\141s\222\SUB\131\209\&4[f\DC1e\220\221\235\169\150#\190\239/\NAKz" - . TkBytes - "\252\227\FSo1\135S\RS\228\163\154\167C\194M\"'_AZ\136\149\233\205\"\195\f\138%\205\239\r" - . TkMapLen 1 -- sgInitialFunds - . TkBytes - "\NUL\225\186\222*\185FZ$\253^\170Ks\136\&09\ETB3\143\133:H\177\SUB_\201\150J\245\202\147\251e\SYN\235\222=\NAK\v>*\203\EM\tS'0\222\&3\131/\251\"\156\178\r" - . TkInt 12157196 - . TkListLen 2 -- sgStaking - . TkMapLen 1 -- sgsPools - . TkBytes - "\245\131\164^IG\193\STX\t\ESC\150\ETB\SO\245\SO\240\207\142\219bfa\147\162\SYN2G\187" - . TkListLen 9 -- PoolParams - . TkBytes - "N\DC3\f\v\222\183v\142\223.\143\133\NUL\DEL\213 s\227\220\CANq\244\196\DEL\157\252\169." - . TkBytes - "h\249\207\211:\200\240D\250\204fM\181\170\ESCs\192\176\245C[\133\231\181 \187/\SUB\146\240)\153" - . TkInt 1 - . TkInt 5 - . TkTag 30 - . TkListLen 2 - . TkInt 1 - . TkInt 4 - . TkBytes - "\224N\136\204-'\195d\170\249\ACKH\168}\251\149\248\238\DLE;\166\DEL\161\241/^\134\196*" - . TkListLen 1 - . TkBytes "N\136\204-'\195d\170\249\ACKH\168}\251\149\248\238\DLE;\166\DEL\161\241/^\134\196*" - . TkListLen 3 - . TkListLen 4 - . TkInt 0 - . TkInt 1234 - . TkBytes "\NUL\NUL\NUL\NUL" - . TkBytes "\184\r\SOH \NUL\NUL\n\NUL\NUL\NUL\NUL\NUL#\SOH\NUL\NUL" - . TkListLen 3 - . TkInt 1 - . TkNull - . TkString "cool.domain.com" - . TkListLen 2 - . TkInt 2 - . TkString "cool.domain.com" - . TkListLen 2 - . TkString "best.pool.com" - . TkBytes "100ab{}100ab{}" - . TkMapLen 1 -- sgsStake - . TkBytes - "\131\161\146\222\192\232\218!\136\229 \208\197\&6\166\154t|\241s\163\223\SYN\166\218\169M\134" - . TkBytes "d\158\218\130\191dM4\166\146_$\234LL6\210~Q\222\ESCD\239G\227V\v\231" - --- TODO - return a CBOR diff in the case of failure - -tests :: TestTree -tests = - testGroup - "Shelley Genesis golden tests" - [ testCase "ShelleyGenesis JSON golden test" golden_json_ShelleyGenesis - , testCase "ShelleyGenesis CBOR golden test" golden_cbor_ShelleyGenesis - ] - -exampleShelleyGenesis :: - forall c. - Crypto c => - ShelleyGenesis c -exampleShelleyGenesis = - ShelleyGenesis - { sgSystemStart = posixSecondsToUTCTime $ realToFrac (1234566789 :: Integer) - , sgNetworkMagic = 4036000900 - , sgNetworkId = L.Testnet - , sgActiveSlotsCoeff = unsafeBoundRational 0.259 - , sgSecurityParam = 120842 - , sgEpochLength = EpochSize 1215 - , sgSlotsPerKESPeriod = 8541 - , sgMaxKESEvolutions = 28899 - , sgSlotLength = 8 - , sgUpdateQuorum = 16991 - , sgMaxLovelaceSupply = 71 - , sgProtocolParams = - emptyPParams @(ShelleyEra c) - & ppDL .~ unsafeBoundRational (realToFrac (1.9e-2 :: Scientific)) - & ppMaxBBSizeL .~ 239857 - & ppMaxBHSizeL .~ 17569 - , sgGenDelegs = Map.fromList [(genesisVerKeyHash, genDelegPair)] - , sgInitialFunds = LM.ListMap [(initialFundedAddress, initialFunds)] - , sgStaking = staking - } - where - -- hash of the genesis verification key - genesisVerKeyHash :: L.KeyHash 'L.Genesis c - genesisVerKeyHash = L.KeyHash "38e7c5986a34f334e19b712c0aa525146dab8f0ff889b2ad16894241" - -- hash of the delegators verififation key - genDelegPair = L.GenDelegPair delegVerKeyHash delegVrfKeyHash - delegVerKeyHash :: L.KeyHash 'L.GenesisDelegate c - delegVerKeyHash = L.KeyHash "e6960dd671ee8d73de1a83d1345b661165dcddeba99623beef2f157a" - delegVrfKeyHash :: Hash.Hash (HASH c) (L.VerKeyVRF c) - delegVrfKeyHash = "fce31c6f3187531ee4a39aa743c24d22275f415a8895e9cd22c30c8a25cdef0d" - initialFundedAddress :: L.Addr c - initialFundedAddress = - L.Addr - L.Testnet - paymentCredential - (L.StakeRefBase stakingCredential) - where - paymentCredential = - L.KeyHashObj $ - L.KeyHash - "e1bade2ab9465a24fd5eaa4b7388303917338f853a48b11a5fc9964a" - stakingCredential = - L.KeyHashObj $ - L.KeyHash - "f5ca93fb6516ebde3d150b3e2acb1909532730de33832ffb229cb20d" - initialFunds :: L.Coin - initialFunds = L.Coin 12157196 - relays = - StrictSeq.fromList - [ L.SingleHostAddr - (L.SJust $ L.Port 1234) - (L.SJust $ read "0.0.0.0") - (L.SJust $ read "2001:db8:a::123") - , L.SingleHostName L.SNothing (fromJust $ textToDns 64 "cool.domain.com") - , L.MultiHostName (fromJust $ textToDns 64 "cool.domain.com") - ] - poolParams :: L.PoolParams c - poolParams = - L.PoolParams - { L.ppId = hashKey . snd $ mkKeyPair (RawSeed 1 0 0 0 1) - , L.ppVrf = hashVerKeyVRF . vrfVerKey $ mkVRFKeyPair @c (RawSeed 1 0 0 0 2) - , L.ppPledge = L.Coin 1 - , L.ppCost = L.Coin 5 - , L.ppMargin = unsafeBoundRational 0.25 - , L.ppRewardAccount = L.RewardAccount L.Testnet Cast.aliceSHK - , L.ppOwners = Set.singleton $ hashKey (vKey Cast.aliceStake) - , L.ppRelays = relays - , L.ppMetadata = - L.SJust $ - L.PoolMetadata - { L.pmUrl = fromJust $ textToUrl 64 "best.pool.com" - , L.pmHash = BS.pack "100ab{}100ab{}" - } - } - staking = - ShelleyGenesisStaking - { sgsPools = - LM.ListMap - [ (L.KeyHash "f583a45e4947c102091b96170ef50ef0cf8edb62666193a2163247bb", poolParams) - ] - , sgsStake = - LM.ListMap - [ - ( L.KeyHash "83a192dec0e8da2188e520d0c536a69a747cf173a3df16a6daa94d86" - , L.KeyHash "649eda82bf644d34a6925f24ea4c4c36d27e51de1b44ef47e3560be7" - ) - ] - } diff --git a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Serialisation/Tripping/CBOR.hs b/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Serialisation/Tripping/CBOR.hs deleted file mode 100644 index a2b8d64cb79..00000000000 --- a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Serialisation/Tripping/CBOR.hs +++ /dev/null @@ -1,56 +0,0 @@ -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE QuantifiedConstraints #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} - -module Test.Cardano.Ledger.Shelley.Serialisation.Tripping.CBOR ( - tests, -) -where - -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto (StandardCrypto) -import Cardano.Ledger.Shelley (Shelley) -import Cardano.Ledger.Shelley.API as Ledger -import qualified Cardano.Ledger.Shelley.Rules as STS -import qualified Cardano.Protocol.TPraos.BHeader as TP -import qualified Cardano.Protocol.TPraos.Rules.Prtcl as STS (PrtclState) -import Test.Cardano.Ledger.Binary.RoundTrip -import Test.Cardano.Ledger.Shelley.Generator.ShelleyEraGen () -import Test.Cardano.Ledger.Shelley.Serialisation.EraIndepGenerators () -import Test.Cardano.Ledger.Shelley.Serialisation.Generators () -import Test.Tasty -import Test.Tasty.QuickCheck (testProperty) - -{------------------------------------------------------------------------------- - Serialization Properties --------------------------------------------------------------------------------} - -testCoreTypes :: TestTree -testCoreTypes = - testGroup - "Core Types" - [ testProperty "Header" $ - roundTripAnnExpectation @(TP.BHeader StandardCrypto) - , testProperty "Block Header Hash" $ - roundTripExpectation @(TP.HashHeader StandardCrypto) cborTrip - , testProperty "Protocol State" $ - roundTripExpectation @(STS.PrtclState StandardCrypto) cborTrip - ] - -tests :: TestTree -tests = - testGroup - "Serialisation roundtrip Property Tests" - $ [ testProperty "Block" $ - roundTripAnnRangeExpectation @(Block (TP.BHeader StandardCrypto) Shelley) - (eraProtVerLow @Shelley) - (eraProtVerHigh @Shelley) - , testProperty "LEDGER Predicate Failures" $ - roundTripExpectation @([STS.PredicateFailure (STS.ShelleyLEDGERS Shelley)]) cborTrip - , testCoreTypes - ] diff --git a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Serialisation/Tripping/JSON.hs b/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Serialisation/Tripping/JSON.hs deleted file mode 100644 index 96854286db5..00000000000 --- a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/Serialisation/Tripping/JSON.hs +++ /dev/null @@ -1,41 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Shelley.Serialisation.Tripping.JSON ( - tests, -) -where - -import Cardano.Ledger.Address (Addr) -import Cardano.Ledger.Coin (Coin) -import Cardano.Ledger.Crypto (StandardCrypto) -import Cardano.Ledger.Keys (GenDelegPair (..), KeyHash, KeyRole (Genesis)) -import Cardano.Ledger.Shelley.API.Types (ShelleyGenesis) -import Data.Aeson (FromJSON, ToJSON (toJSON), decode, encode, fromJSON) -import Test.Cardano.Ledger.Shelley.Serialisation.EraIndepGenerators () -import Test.Cardano.Ledger.Shelley.Serialisation.Generators () -import Test.QuickCheck (Property, (.&&.), (===)) -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.QuickCheck (testProperty) - -propRoundTripJSON :: (ToJSON a, FromJSON a, Show a, Eq a) => a -> Property -propRoundTripJSON a = - (fromJSON (toJSON a) === pure a) - .&&. (decode (encode a) === pure a) - -tests :: TestTree -tests = - testGroup - "Shelley Genesis" - [ testProperty "Genesis roundtrip" $ - propRoundTripJSON @(ShelleyGenesis StandardCrypto) - , testProperty "Coin roundtrip" $ - propRoundTripJSON @Coin - , testProperty "Address roundtrip" $ - propRoundTripJSON @(Addr StandardCrypto) - , testProperty "Genesis KeyHash " $ - propRoundTripJSON @(KeyHash 'Genesis StandardCrypto) - , testProperty "GenDelegPair roundtrip" $ - propRoundTripJSON @(GenDelegPair StandardCrypto) - ] diff --git a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/UnitTests.hs b/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/UnitTests.hs deleted file mode 100644 index e7969278cfc..00000000000 --- a/eras/shelley/test-suite/test/Test/Cardano/Ledger/Shelley/UnitTests.hs +++ /dev/null @@ -1,707 +0,0 @@ -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DuplicateRecordFields #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedLists #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} - -module Test.Cardano.Ledger.Shelley.UnitTests (unitTests) where - -import Cardano.Crypto.Hash.Class (HashAlgorithm) -import qualified Cardano.Crypto.VRF as VRF -import Cardano.Ledger.Address (Addr (..), raCredential, pattern RewardAccount) -import Cardano.Ledger.BaseTypes hiding ((==>)) -import Cardano.Ledger.Coin -import Cardano.Ledger.Credential ( - Credential (..), - StakeReference (..), - ) -import Cardano.Ledger.Crypto (Crypto, HASH, StandardCrypto, VRF) -import Cardano.Ledger.Keys ( - KeyRole (..), - asWitness, - hashKey, - hashVerKeyVRF, - ) -import Cardano.Ledger.PoolParams ( - PoolMetadata (..), - PoolParams (..), - pmHash, - pmUrl, - ppCost, - ppId, - ppMargin, - ppMetadata, - ppOwners, - ppPledge, - ppRelays, - ppRewardAccount, - ppVrf, - ) -import Cardano.Ledger.SafeHash (hashAnnotated) -import Cardano.Ledger.Shelley.API ( - LedgerEnv (..), - ShelleyLEDGER, - ) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState ( - AccountState (..), - CertState (..), - IncrementalStake (..), - LedgerState (..), - UTxOState (..), - certDState, - dsUnified, - rewards, - ) -import Cardano.Ledger.Shelley.Rules ( - ShelleyDelegsPredFailure (..), - ShelleyDelplPredFailure (..), - ShelleyLedgerPredFailure (..), - ShelleyPoolPredFailure (..), - ShelleyUtxoPredFailure (..), - ShelleyUtxowPredFailure (..), - ) -import Cardano.Ledger.Shelley.Tx (ShelleyTx (..)) -import Cardano.Ledger.Shelley.TxBody (ShelleyTxBody (..)) -import Cardano.Ledger.Shelley.TxCert (ShelleyTxCert (..)) -import Cardano.Ledger.Shelley.TxOut (ShelleyTxOut (..)) -import Cardano.Ledger.Shelley.TxWits ( - ShelleyTxWits, - addrWits, - ) -import Cardano.Ledger.TxIn (TxIn (..)) -import qualified Cardano.Ledger.UMap as UM -import Cardano.Ledger.Val ((<+>), (<->)) -import Cardano.Protocol.TPraos.BHeader (checkLeaderValue) -import Control.DeepSeq (rnf) -import Control.State.Transition.Extended (PredicateFailure, TRC (..)) -import qualified Data.ByteString.Char8 as BS (pack) -import Data.Default.Class (def) -import Data.List.NonEmpty (NonEmpty) -import qualified Data.Map.Strict as Map -import Data.Maybe (fromJust) -import Data.Proxy (Proxy (..)) -import Data.Ratio ((%)) -import Data.Sequence.Strict (StrictSeq (..)) -import qualified Data.Sequence.Strict as StrictSeq -import qualified Data.Set as Set -import Data.Word (Word64) -import GHC.Stack -import Lens.Micro -import Numeric.Natural (Natural) -import Test.Cardano.Ledger.Core.KeyPair ( - KeyPair (..), - mkVKeyRewardAccount, - mkWitnessVKey, - mkWitnessesVKey, - vKey, - ) -import Test.Cardano.Ledger.Shelley.Arbitrary ( - ASC (ASC), - StakeProportion (StakeProportion), - VRFNatVal (VRFNatVal), - ) -import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes (C, C_Crypto) -import Test.Cardano.Ledger.Shelley.Fees (sizeTests) -import Test.Cardano.Ledger.Shelley.Generator.Core (VRFKeyPair (..), genesisCoins) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (genesisId) -import Test.Cardano.Ledger.Shelley.Generator.ShelleyEraGen () -import Test.Cardano.Ledger.Shelley.Utils -import Test.Control.State.Transition.Trace (checkTrace, (.-), (.->>)) -import qualified Test.QuickCheck.Gen as QC -import qualified Test.QuickCheck.Random as QC -import Test.Tasty -import Test.Tasty.HUnit -import Test.Tasty.QuickCheck - --- ======================================================================================== - -alicePay :: Crypto c => KeyPair 'Payment c -alicePay = mkKeyPair' $ RawSeed 1 1 1 1 1 - -aliceStake :: Crypto c => KeyPair 'Staking c -aliceStake = mkKeyPair' $ RawSeed 2 2 2 2 2 - -aliceAddr :: Crypto c => Addr c -aliceAddr = - Addr - Testnet - (KeyHashObj . hashKey $ vKey alicePay) - (StakeRefBase . KeyHashObj . hashKey $ vKey aliceStake) - -bobPay :: Crypto c => KeyPair 'Payment c -bobPay = mkKeyPair' $ RawSeed 3 3 3 3 3 - -bobStake :: Crypto c => KeyPair 'Staking c -bobStake = mkKeyPair' $ RawSeed 4 4 4 4 4 - -bobAddr :: Crypto c => Addr c -bobAddr = - Addr - Testnet - (KeyHashObj . hashKey $ vKey bobPay) - (StakeRefBase . KeyHashObj . hashKey $ vKey bobStake) - -mkGenesisTxIn :: (HashAlgorithm (HASH c), HasCallStack) => Integer -> TxIn c -mkGenesisTxIn = TxIn genesisId . mkTxIxPartial - -pp :: forall era. (EraPParams era, ProtVerAtMost era 4) => PParams era -pp = - emptyPParams - & ppMinFeeAL .~ Coin 1 - & ppMinFeeBL .~ Coin 1 - & ppKeyDepositL .~ Coin 100 - & ppPoolDepositL .~ Coin 250 - & ppMaxTxSizeL .~ 1024 - & ppEMaxL .~ EpochInterval 10 - & ppMinUTxOValueL .~ Coin 100 - & ppMinPoolCostL .~ Coin 10 - -testVRFCheckWithActiveSlotCoeffOne :: Assertion -testVRFCheckWithActiveSlotCoeffOne = - checkLeaderValue - (VRF.mkTestOutputVRF 0 :: VRF.OutputVRF (VRF C_Crypto)) - (1 % 2) - (mkActiveSlotCoeff $ unsafeBoundRational 1) - @?= True - -testsPParams :: TestTree -testsPParams = - testGroup - "Test the protocol parameters." - [ testCase "VRF checks when the activeSlotCoeff is one" testVRFCheckWithActiveSlotCoeffOne - ] - --- | Test @checkLeaderVal@ in 'Cardano.Ledger.Shelley.BlockChain' -testCheckLeaderVal :: - forall v. - v ~ VRF StandardCrypto => - TestTree -testCheckLeaderVal = - testGroup - "Test checkLeaderVal calculation" - [ testProperty "With a stake of 0, cannot lead" $ - \(VRFNatVal n) (ASC f) -> - checkLeaderValue @v (VRF.mkTestOutputVRF n) 0 f == False - , testProperty "With a maximal VRF, cannot lead" $ - \(ASC f) (StakeProportion r) -> - checkLeaderValue @v - (VRF.mkTestOutputVRF maxVRFVal) - r - f - == False - , testProperty "checkLeaderVal succeeds iff l < 1 - (1-f)^r" $ - \(VRFNatVal n) (ASC f) (StakeProportion r) -> - r > 0 ==> - let ascVal :: Double - ascVal = fromRational . unboundRational $ activeSlotVal f - in checkLeaderValue @v - (VRF.mkTestOutputVRF n) - r - f - === ( (realToFrac n / realToFrac (maxVRFVal + 1)) - < (1 - (1 - ascVal) ** fromRational r) - ) - , -- Suppose that our VRF value V is drawn uniformly from [0, maxVRFVal). - -- The leader check verifies that fromNat V < 1 - (1-f)^r, where fromNat - -- is an appropriate mapping into the unit interval giving fromNat V ~ - -- U(0,1). Then the probability X of being selected leader, given that VRF - -- value, is given by p = 1 - (1 - f)^r. So assuming n independent draws - -- of V, the number of slots in which we lead is given by S ~ Bin(n, p) - -- and has an expected value of np. - -- - -- The probability that S sits outside a δ-window around the mean (i.e. - -- that this test fails under the hypothesis that our leader check is - -- correct) is given by P(np - δ <= S <= np + δ). - -- - -- Previously, we chose δ such that this value is quite low (eg, <1/1000). - -- However, this means the test *will* fail sometimes. If the probability - -- is 0.0004 and we run the test 100 times for each run of the test - -- suite, we would expect it to fail approximately once in every 25 test - -- runs. - -- - -- We therefore now use a fixed seed so that this is effectively a unit test - -- and not a property test. - -- - testProperty "We are elected as leader proportional to our stake" $ - -- 6297 is a seed value that fails - -- --quickcheck-replay=618 fails when withSeed isn't used - once . withSeed 12345 $ do - let numTrials = 2000 - ASC f <- arbitrary - StakeProportion r <- arbitrary - vrfVals <- QC.vectorOf numTrials (QC.choose (0, fromIntegral maxVRFVal :: Integer)) - let ascVal :: Double - ascVal = fromRational . unboundRational $ activeSlotVal f - -- 4 standard deviations - δ = 4 * sqrt (realToFrac numTrials * p * (1 - p)) - p = 1 - (1 - ascVal) ** fromRational r - mean = realToFrac numTrials * p - lb = floor (mean - δ) - ub = ceiling (mean + δ) - check vrf = checkLeaderValue @v (VRF.mkTestOutputVRF $ fromIntegral vrf) r f - s = length . filter id $ check <$> vrfVals - pure $ - r > 0 ==> - counterexample - (show lb <> " /< " <> show s <> " /< " <> show ub <> " (p=" <> show p <> ")") - (lb < s && s < ub) - ] - where - maxVRFVal :: Natural - maxVRFVal = (2 ^ (8 * VRF.sizeOutputVRF (Proxy @v))) - 1 - withSeed i (QC.MkGen f) = QC.MkGen $ \_r n -> f (QC.mkQCGen i) n - -testLEDGER :: - HasCallStack => - LedgerState C -> - ShelleyTx C -> - LedgerEnv C -> - Either (NonEmpty (PredicateFailure (ShelleyLEDGER C))) (LedgerState C) -> - Assertion -testLEDGER initSt tx env (Right expectedSt) = do - checkTrace @(ShelleyLEDGER C) runShelleyBase env $ pure initSt .- tx .->> expectedSt -testLEDGER initSt tx env predicateFailure@(Left _) = do - let st = runShelleyBase $ applySTSTest @(ShelleyLEDGER C) (TRC (env, initSt, tx)) - st @?= predicateFailure - -aliceInitCoin :: Coin -aliceInitCoin = Coin 10000 - -data AliceToBob = AliceToBob - { input :: TxIn C_Crypto - , toBob :: Coin - , fee :: Coin - , deposits :: Coin - , refunds :: Coin - , certs :: [TxCert C] - , ttl :: SlotNo - , signers :: [KeyPair 'Witness C_Crypto] - } - -aliceGivesBobLovelace :: AliceToBob -> ShelleyTx C -aliceGivesBobLovelace - AliceToBob - { input - , toBob - , fee - , deposits - , refunds - , certs - , ttl - , signers - } = ShelleyTx txbody mempty {addrWits = awits} SNothing - where - aliceCoin = aliceInitCoin <+> refunds <-> (toBob <+> fee <+> deposits) - txbody = - ShelleyTxBody - (Set.singleton input) - ( StrictSeq.fromList - [ ShelleyTxOut aliceAddr aliceCoin - , ShelleyTxOut bobAddr toBob - ] - ) - (StrictSeq.fromList certs) - (Withdrawals Map.empty) - fee - ttl - SNothing - SNothing - awits = mkWitnessesVKey (hashAnnotated txbody) signers - -utxoState :: UTxOState C -utxoState = - UTxOState - ( genesisCoins - genesisId - [ ShelleyTxOut aliceAddr aliceInitCoin - , ShelleyTxOut bobAddr (Coin 1000) - ] - ) - (Coin 0) - (Coin 0) - def - (IStake mempty mempty) - mempty - -dpState :: CertState C -dpState = CertState def def def - -ledgerState :: LedgerState C -ledgerState = LedgerState utxoState dpState - -addReward :: CertState C -> Credential 'Staking C_Crypto -> Coin -> CertState C -addReward dp ra c = dp {certDState = ds {dsUnified = rewards'}} - where - ds = certDState dp - rewards' = UM.insert ra (UM.RDPair (UM.compactCoinOrError c) (UM.CompactCoin 2)) (rewards ds) - --- Any key deposit works in this test ^ -ledgerEnv :: LedgerEnv C -ledgerEnv = LedgerEnv (SlotNo 0) minBound pp (AccountState (Coin 0) (Coin 0)) - -testInvalidTx :: - NonEmpty (PredicateFailure (ShelleyLEDGER C)) -> - ShelleyTx C -> - Assertion -testInvalidTx errs tx = - testLEDGER ledgerState tx ledgerEnv (Left errs) - -testSpendNonexistentInput :: Assertion -testSpendNonexistentInput = - testInvalidTx - [ UtxowFailure (UtxoFailure (ValueNotConservedUTxO (Coin 0) (Coin 10000))) - , UtxowFailure (UtxoFailure $ BadInputsUTxO (Set.singleton $ mkGenesisTxIn 42)) - ] - $ aliceGivesBobLovelace - $ AliceToBob - { input = mkGenesisTxIn 42 -- Non Existent - , toBob = Coin 3000 - , fee = Coin 1500 - , deposits = Coin 0 - , refunds = Coin 0 - , certs = [] - , ttl = SlotNo 100 - , signers = [asWitness alicePay] - } - -testWitnessNotIncluded :: Assertion -testWitnessNotIncluded = - let txbody = - ShelleyTxBody @C - (Set.fromList [TxIn genesisId minBound]) - ( StrictSeq.fromList - [ ShelleyTxOut aliceAddr (Coin 6404) - , ShelleyTxOut bobAddr (Coin 3000) - ] - ) - Empty - (Withdrawals Map.empty) - (Coin 596) - (SlotNo 100) - SNothing - SNothing - tx = ShelleyTx @C txbody mempty SNothing - txwits = Set.singleton (asWitness $ hashKey $ vKey alicePay) - in testInvalidTx - [ UtxowFailure $ - MissingVKeyWitnessesUTXOW txwits - ] - tx - -testSpendNotOwnedUTxO :: Assertion -testSpendNotOwnedUTxO = - let txbody = - ShelleyTxBody @C - (Set.fromList [mkGenesisTxIn 1]) - (StrictSeq.singleton $ ShelleyTxOut aliceAddr (Coin 232)) - Empty - (Withdrawals Map.empty) - (Coin 768) - (SlotNo 100) - SNothing - SNothing - aliceWit = mkWitnessVKey (hashAnnotated txbody) alicePay - tx = ShelleyTx @C txbody mempty {addrWits = Set.fromList [aliceWit]} SNothing - txwits = Set.singleton (asWitness $ hashKey $ vKey bobPay) - in testInvalidTx - [ UtxowFailure $ - MissingVKeyWitnessesUTXOW txwits - ] - tx - -testWitnessWrongUTxO :: Assertion -testWitnessWrongUTxO = - let txbody = - ShelleyTxBody @C - (Set.fromList [mkGenesisTxIn 1]) - (StrictSeq.singleton $ ShelleyTxOut aliceAddr (Coin 230)) - Empty - (Withdrawals Map.empty) - (Coin 770) - (SlotNo 100) - SNothing - SNothing - tx2body = - ShelleyTxBody @C - (Set.fromList [mkGenesisTxIn 1]) - (StrictSeq.singleton $ ShelleyTxOut aliceAddr (Coin 230)) - Empty - (Withdrawals Map.empty) - (Coin 770) - (SlotNo 101) - SNothing - SNothing - aliceWit = mkWitnessVKey (hashAnnotated tx2body) alicePay - tx = ShelleyTx @C txbody mempty {addrWits = Set.fromList [aliceWit]} SNothing - txwits = Set.singleton (asWitness $ hashKey $ vKey bobPay) - in testInvalidTx - [ UtxowFailure $ - InvalidWitnessesUTXOW - [asWitness $ vKey alicePay] - , UtxowFailure $ - MissingVKeyWitnessesUTXOW txwits - ] - tx - -testEmptyInputSet :: Assertion -testEmptyInputSet = - let aliceWithdrawal = Map.singleton (mkVKeyRewardAccount Testnet aliceStake) (Coin 2000) - txb = - ShelleyTxBody - Set.empty - (StrictSeq.singleton $ ShelleyTxOut aliceAddr (Coin 1000)) - Empty - (Withdrawals aliceWithdrawal) - (Coin 1000) - (SlotNo 0) - SNothing - SNothing - txwits = mempty {addrWits = mkWitnessesVKey (hashAnnotated txb) [aliceStake]} - tx = ShelleyTx txb txwits SNothing - dpState' = addReward dpState (raCredential $ mkVKeyRewardAccount Testnet aliceStake) (Coin 2000) - in testLEDGER - (LedgerState utxoState dpState') - tx - ledgerEnv - (Left [UtxowFailure (UtxoFailure InputSetEmptyUTxO)]) - -testFeeTooSmall :: Assertion -testFeeTooSmall = - testInvalidTx - [UtxowFailure (UtxoFailure (FeeTooSmallUTxO (Coin 205) (Coin 1)))] - $ aliceGivesBobLovelace - AliceToBob - { input = TxIn genesisId minBound - , toBob = Coin 3000 - , fee = Coin 1 - , deposits = Coin 0 - , refunds = Coin 0 - , certs = [] - , ttl = SlotNo 100 - , signers = [asWitness alicePay] - } - -testExpiredTx :: Assertion -testExpiredTx = - let errs = [UtxowFailure (UtxoFailure (ExpiredUTxO (SlotNo {unSlotNo = 0}) (SlotNo {unSlotNo = 1})))] - tx = - aliceGivesBobLovelace $ - AliceToBob - { input = TxIn genesisId minBound - , toBob = Coin 3000 - , fee = Coin 600 - , deposits = Coin 0 - , refunds = Coin 0 - , certs = [] - , ttl = SlotNo 0 - , signers = [asWitness alicePay] - } - ledgerEnv' = LedgerEnv (SlotNo 1) minBound pp (AccountState (Coin 0) (Coin 0)) - in testLEDGER ledgerState tx ledgerEnv' (Left errs) - -testInvalidWintess :: Assertion -testInvalidWintess = - let txb = - ShelleyTxBody @C - (Set.fromList [TxIn genesisId minBound]) - ( StrictSeq.fromList - [ ShelleyTxOut aliceAddr (Coin 6000) - , ShelleyTxOut bobAddr (Coin 3000) - ] - ) - Empty - (Withdrawals Map.empty) - (Coin 1000) - (SlotNo 1) - SNothing - SNothing - txb' = txb {stbTTL = SlotNo 2} - txwits :: Cardano.Ledger.Shelley.TxWits.ShelleyTxWits C - txwits = mempty {addrWits = mkWitnessesVKey (hashAnnotated txb') [alicePay]} - tx = ShelleyTx @C txb txwits SNothing - errs = - [ UtxowFailure $ - InvalidWitnessesUTXOW - [asWitness $ vKey alicePay] - ] - in testLEDGER ledgerState tx ledgerEnv (Left errs) - -testWithdrawalNoWit :: Assertion -testWithdrawalNoWit = - let txb = - ShelleyTxBody @C - (Set.fromList [TxIn genesisId minBound]) - ( StrictSeq.fromList - [ ShelleyTxOut aliceAddr (Coin 6000) - , ShelleyTxOut bobAddr (Coin 3010) - ] - ) - Empty - (Withdrawals $ Map.singleton (mkVKeyRewardAccount Testnet bobStake) (Coin 10)) - (Coin 1000) - (SlotNo 0) - SNothing - SNothing - txwits :: ShelleyTxWits C - txwits = mempty {addrWits = Set.singleton $ mkWitnessVKey (hashAnnotated txb) alicePay} - tx = ShelleyTx @C txb txwits SNothing - missing = Set.singleton (asWitness $ hashKey $ vKey bobStake) - errs = - [ UtxowFailure $ MissingVKeyWitnessesUTXOW missing - ] - dpState' = addReward dpState (raCredential $ mkVKeyRewardAccount Testnet bobStake) (Coin 10) - in testLEDGER (LedgerState utxoState dpState') tx ledgerEnv (Left errs) - -testWithdrawalWrongAmt :: Assertion -testWithdrawalWrongAmt = - let txb = - ShelleyTxBody @C - (Set.fromList [TxIn genesisId minBound]) - ( StrictSeq.fromList - [ ShelleyTxOut aliceAddr (Coin 6000) - , ShelleyTxOut bobAddr (Coin 3011) - ] - ) - Empty - (Withdrawals $ Map.singleton (mkVKeyRewardAccount Testnet bobStake) (Coin 11)) - (Coin 1000) - (SlotNo 0) - SNothing - SNothing - txwits = - mempty - { addrWits = - mkWitnessesVKey @C_Crypto - (hashAnnotated txb) - [asWitness alicePay, asWitness bobStake] - } - rAccount = mkVKeyRewardAccount Testnet bobStake - dpState' = addReward dpState (raCredential rAccount) (Coin 10) - tx = ShelleyTx @C txb txwits SNothing - errs = [DelegsFailure (WithdrawalsNotInRewardsDELEGS (Map.singleton rAccount (Coin 11)))] - in testLEDGER (LedgerState utxoState dpState') tx ledgerEnv (Left errs) - -testOutputTooSmall :: Assertion -testOutputTooSmall = - testInvalidTx - [UtxowFailure (UtxoFailure $ OutputTooSmallUTxO [ShelleyTxOut bobAddr (Coin 1)])] - $ aliceGivesBobLovelace - $ AliceToBob - { input = TxIn genesisId minBound - , toBob = Coin 1 -- Too Small - , fee = Coin 997 - , deposits = Coin 0 - , refunds = Coin 0 - , certs = [] - , ttl = SlotNo 0 - , signers = [asWitness alicePay] - } - -alicePoolColdKeys :: KeyPair 'StakePool C_Crypto -alicePoolColdKeys = KeyPair vk sk - where - (sk, vk) = mkKeyPair (RawSeed 0 0 0 0 1) - -alicePoolParamsSmallCost :: PoolParams C_Crypto -alicePoolParamsSmallCost = - PoolParams - { ppId = hashKey . vKey $ alicePoolColdKeys - , ppVrf = hashVerKeyVRF vkVrf - , ppPledge = Coin 1 - , ppCost = Coin 5 -- Too Small! - , ppMargin = unsafeBoundRational 0.1 - , ppRewardAccount = RewardAccount Testnet (KeyHashObj . hashKey . vKey $ aliceStake) - , ppOwners = Set.singleton $ (hashKey . vKey) aliceStake - , ppRelays = StrictSeq.empty - , ppMetadata = - SJust $ - PoolMetadata - { pmUrl = fromJust $ textToUrl 64 "alice.pool" - , pmHash = BS.pack "{}" - } - } - where - vkVrf = vrfVerKey $ mkVRFKeyPair @C_Crypto (RawSeed 0 0 0 0 2) - -testPoolCostTooSmall :: Assertion -testPoolCostTooSmall = - testInvalidTx - [ DelegsFailure $ - DelplFailure $ - PoolFailure $ - StakePoolCostTooLowPOOL (ppCost alicePoolParamsSmallCost) (pp @C ^. ppMinPoolCostL) - ] - $ aliceGivesBobLovelace - $ AliceToBob - { input = TxIn genesisId minBound - , toBob = Coin 100 - , fee = Coin 997 - , deposits = Coin 250 - , refunds = Coin 0 - , certs = [ShelleyTxCertPool $ RegPool alicePoolParamsSmallCost] - , ttl = SlotNo 0 - , signers = - ( [ asWitness alicePay - , asWitness aliceStake - , asWitness alicePoolColdKeys - ] - ) - } - -testProducedOverMaxWord64 :: Assertion -testProducedOverMaxWord64 = - let biggestCoin = fromIntegral (maxBound :: Word64) - txbody = - ShelleyTxBody @C - (Set.fromList [TxIn genesisId minBound]) - (StrictSeq.fromList [ShelleyTxOut bobAddr (Coin biggestCoin)]) - Empty - (Withdrawals Map.empty) - (Coin 1) -- @produced@ will return biggestCoin + 1, which is > 2^64. - (SlotNo 100) - SNothing - SNothing - txwits = mempty {addrWits = mkWitnessesVKey @C_Crypto (hashAnnotated txbody) [alicePay]} - tx = ShelleyTx @C txbody txwits SNothing - st = - runShelleyBase $ - applySTSTest @(ShelleyLEDGER C) (TRC (ledgerEnv, ledgerState, tx)) - in -- We test that the predicate failure does not return bottom - pure $! rnf st - -testsInvalidLedger :: TestTree -testsInvalidLedger = - testGroup - "Tests with invalid transactions in ledger" - [ testCase "Invalid Ledger - Alice tries to spend a nonexistent input" testSpendNonexistentInput - , testCase "Invalid Ledger - Alice does not include a witness" testWitnessNotIncluded - , testCase "Invalid Ledger - Alice tries to spend Bob's UTxO" testSpendNotOwnedUTxO - , testCase "Invalid Ledger - Alice provides witness of wrong UTxO" testWitnessWrongUTxO - , testCase "Invalid Ledger - Alice's transaction does not consume input" testEmptyInputSet - , testCase "Invalid Ledger - Alice's fee is too small" testFeeTooSmall - , testCase "Invalid Ledger - Alice's transaction has expired" testExpiredTx - , testCase "Invalid Ledger - Invalid witnesses" testInvalidWintess - , testCase "Invalid Ledger - No withdrawal witness" testWithdrawalNoWit - , testCase "Invalid Ledger - Incorrect withdrawal amount" testWithdrawalWrongAmt - , testCase "Invalid Ledger - OutputTooSmall" testOutputTooSmall - , testCase "Invalid Ledger - PoolCostTooSmall" testPoolCostTooSmall - , testCase "Invalid Ledger - ProducedOverMaxWord64" testProducedOverMaxWord64 - ] - -unitTests :: TestTree -unitTests = - testGroup - "Unit Tests" - [ testsInvalidLedger - , testsPParams - , sizeTests - , testCheckLeaderVal - ] diff --git a/eras/shelley/test-suite/test/Tests.hs b/eras/shelley/test-suite/test/Tests.hs deleted file mode 100644 index 9e058c89915..00000000000 --- a/eras/shelley/test-suite/test/Tests.hs +++ /dev/null @@ -1,66 +0,0 @@ -{-# LANGUAGE TypeApplications #-} - -import Cardano.Crypto.Libsodium (sodiumInit) -import Cardano.Ledger.Core -import Cardano.Ledger.Shelley.Rules (ShelleyLEDGER) -import System.Environment (lookupEnv) -import System.IO (hSetEncoding, stdout, utf8) -import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes (C) -import Test.Cardano.Ledger.Shelley.PropertyTests (commonTests) -import qualified Test.Cardano.Ledger.Shelley.Rewards as Rewards (tests) -import qualified Test.Cardano.Ledger.Shelley.Rules.AdaPreservation as AdaPreservation -import qualified Test.Cardano.Ledger.Shelley.Rules.ClassifyTraces as ClassifyTraces ( - onlyValidChainSignalsAreGenerated, - relevantCasesAreCovered, - ) -import qualified Test.Cardano.Ledger.Shelley.Rules.Deposits as Deposits (tests) -import qualified Test.Cardano.Ledger.Shelley.RulesTests as RulesTests ( - chainExamples, - multisigExamples, - testTickF, - ) -import qualified Test.Cardano.Ledger.Shelley.SafeHash as SafeHash (safeHashTest) -import qualified Test.Cardano.Ledger.Shelley.Serialisation as Serialisation -import qualified Test.Cardano.Ledger.Shelley.UnitTests as UnitTests (unitTests) -import qualified Test.Cardano.Ledger.Shelley.WitVKeys as WitVKeys (tests) -import Test.Tasty -import Test.Tasty.QuickCheck (QuickCheckMaxRatio (..)) - -import Test.Cardano.Ledger.Shelley.Serialisation.EraIndepGenerators () -import Test.QuickCheck (Args (maxSuccess), stdArgs) - -main :: IO () -main = do - hSetEncoding stdout utf8 - sodiumInit - nightly <- lookupEnv "NIGHTLY" - defaultMain $ case nightly of - Nothing -> defaultTests - Just _ -> nightlyTests - -defaultTests :: TestTree -defaultTests = - testGroup - "Shelley tests" - [ Deposits.tests @C - , ( localOption - (QuickCheckMaxRatio 50) - (ClassifyTraces.relevantCasesAreCovered @C (maxSuccess stdArgs)) - ) - , AdaPreservation.tests @C @(ShelleyLEDGER C) (maxSuccess stdArgs) - , ClassifyTraces.onlyValidChainSignalsAreGenerated @C - , WitVKeys.tests @(EraCrypto C) - , Rewards.tests - , Serialisation.tests - , RulesTests.chainExamples - , RulesTests.multisigExamples - , RulesTests.testTickF - , UnitTests.unitTests - , SafeHash.safeHashTest - ] - -nightlyTests :: TestTree -nightlyTests = - testGroup - "Shelley tests - nightly" - $ Serialisation.tests : commonTests @C @(ShelleyLEDGER C) diff --git a/flake.lock b/flake.lock deleted file mode 100644 index 87af043e471..00000000000 --- a/flake.lock +++ /dev/null @@ -1,942 +0,0 @@ -{ - "nodes": { - "CHaP": { - "flake": false, - "locked": { - "lastModified": 1712334766, - "narHash": "sha256-ug8REKybXwr7IMeMCcvfKzNFaHdPtb0A2jlO3FCxgBk=", - "owner": "intersectmbo", - "repo": "cardano-haskell-packages", - "rev": "fc2da4589f09787dcb2278de12f619b706ccd76d", - "type": "github" - }, - "original": { - "owner": "intersectmbo", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "HTTP": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "blst": { - "flake": false, - "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - }, - "original": { - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - } - }, - "cabal-32": { - "flake": false, - "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", - "type": "github" - } - }, - "cabal-34": { - "flake": false, - "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", - "type": "github" - } - }, - "cabal-36": { - "flake": false, - "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", - "type": "github" - } - }, - "cardano-mainnet-mirror": { - "flake": false, - "locked": { - "lastModified": 1557232434, - "narHash": "sha256-2rclcOjIVq0lFCdYAa8S9imzZZHqySn2LZ/O48hUofw=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "a31ac7534ec855b715b9a6bb6a06861ee94935d9", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "type": "github" - } - }, - "cardano-shell": { - "flake": false, - "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", - "type": "github" - } - }, - "flake-compat": { - "flake": false, - "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_2": { - "flake": false, - "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_3": { - "flake": false, - "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-utils": { - "inputs": { - "systems": "systems" - }, - "locked": { - "lastModified": 1681378341, - "narHash": "sha256-2qUN04W6X9cHHytEsJTM41CmusifPTC0bgTtYsHSNY8=", - "owner": "hamishmack", - "repo": "flake-utils", - "rev": "2767bafdb189cd623354620c2dacbeca8fd58b17", - "type": "github" - }, - "original": { - "owner": "hamishmack", - "ref": "hkm/nested-hydraJobs", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_2": { - "inputs": { - "systems": "systems_2" - }, - "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "ghc-8.6.5-iohk": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc910X": { - "flake": false, - "locked": { - "lastModified": 1711543129, - "narHash": "sha256-MUI07CxYOng7ZwHnMCw0ugY3HmWo2p/f4r07CGV7OAM=", - "ref": "ghc-9.10", - "rev": "6ecd5f2ff97af53c7334f2d8581651203a2c6b7d", - "revCount": 62607, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.10", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc911": { - "flake": false, - "locked": { - "lastModified": 1711538967, - "narHash": "sha256-KSdOJ8seP3g30FaC2du8QjU9vumMnmzPR5wfkVRXQMk=", - "ref": "refs/heads/master", - "rev": "0acfe391583d77a72051d505f05fab0ada056c49", - "revCount": 62632, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "gitignore": { - "inputs": { - "nixpkgs": [ - "pre-commit-hooks", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1703887061, - "narHash": "sha256-gGPa9qWNc6eCXT/+Z5/zMkyYOuRZqeFZBDbopNZQkuY=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "43e1aa1308018f37118e34d3a9cb4f5e75dc11d5", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "hackage": { - "flake": false, - "locked": { - "lastModified": 1712535859, - "narHash": "sha256-vlSP7kQMJE2w24qE/7uHY02ZW5JJ2gXQY12w7Xd1VEQ=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "bcd61e6c9a22fd661ce1e55e6b16a8b4dc8f4136", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "haskellNix": { - "inputs": { - "HTTP": "HTTP", - "cabal-32": "cabal-32", - "cabal-34": "cabal-34", - "cabal-36": "cabal-36", - "cardano-shell": "cardano-shell", - "flake-compat": "flake-compat_2", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", - "ghc910X": "ghc910X", - "ghc911": "ghc911", - "hackage": "hackage", - "hls-1.10": "hls-1.10", - "hls-2.0": "hls-2.0", - "hls-2.2": "hls-2.2", - "hls-2.3": "hls-2.3", - "hls-2.4": "hls-2.4", - "hls-2.5": "hls-2.5", - "hls-2.6": "hls-2.6", - "hpc-coveralls": "hpc-coveralls", - "hydra": "hydra", - "iserv-proxy": "iserv-proxy", - "nixpkgs": [ - "haskellNix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003", - "nixpkgs-2105": "nixpkgs-2105", - "nixpkgs-2111": "nixpkgs-2111", - "nixpkgs-2205": "nixpkgs-2205", - "nixpkgs-2211": "nixpkgs-2211", - "nixpkgs-2305": "nixpkgs-2305", - "nixpkgs-2311": "nixpkgs-2311", - "nixpkgs-unstable": "nixpkgs-unstable", - "old-ghc-nix": "old-ghc-nix", - "stackage": "stackage" - }, - "locked": { - "lastModified": 1712537422, - "narHash": "sha256-/8xrHBgPHS9NoFa8MAsO7oY3iCMGNdcWLzSWkbKc0OE=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "e5ff7b65946282a46e51e4058f72e38be8418c7b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "hls-1.10": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.5": { - "flake": false, - "locked": { - "lastModified": 1701080174, - "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.5.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.6": { - "flake": false, - "locked": { - "lastModified": 1705325287, - "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.6.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hpc-coveralls": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hydra": { - "inputs": { - "nix": "nix", - "nixpkgs": [ - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "iohkNix": { - "inputs": { - "blst": "blst", - "nixpkgs": "nixpkgs_2", - "secp256k1": "secp256k1", - "sodium": "sodium" - }, - "locked": { - "lastModified": 1693968598, - "narHash": "sha256-2wFadXHMgNYrF7N6jndfp3Ywm2G0r+QTPifrlzugkjo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "7d738e59d276336d1e02447e27b0373164d3bc88", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iserv-proxy": { - "flake": false, - "locked": { - "lastModified": 1708894040, - "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", - "type": "github" - }, - "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", - "type": "github" - } - }, - "lowdown-src": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "nix": { - "inputs": { - "lowdown-src": "lowdown-src", - "nixpkgs": "nixpkgs", - "nixpkgs-regression": "nixpkgs-regression" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nixpkgs": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-regression": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-stable": { - "locked": { - "lastModified": 1704874635, - "narHash": "sha256-YWuCrtsty5vVZvu+7BchAxmcYzTMfolSPP5io8+WYCg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "3dc440faeee9e889fe2d1b4d25ad0f430d449356", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs_2": { - "locked": { - "lastModified": 1684171562, - "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "release-22.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_3": { - "locked": { - "lastModified": 1704842529, - "narHash": "sha256-OTeQA+F8d/Evad33JMfuXC89VMetQbsU4qcaePchGr4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabe8d3eface69f5bb16c18f8662a702f50c20d5", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "old-ghc-nix": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "pre-commit-hooks": { - "inputs": { - "flake-compat": "flake-compat_3", - "flake-utils": "flake-utils_2", - "gitignore": "gitignore", - "nixpkgs": "nixpkgs_3", - "nixpkgs-stable": "nixpkgs-stable" - }, - "locked": { - "lastModified": 1708018599, - "narHash": "sha256-M+Ng6+SePmA8g06CmUZWi1AjG2tFBX9WCXElBHEKnyM=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "5df5a70ad7575f6601d91f0efec95dd9bc619431", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "type": "github" - } - }, - "root": { - "inputs": { - "CHaP": "CHaP", - "cardano-mainnet-mirror": "cardano-mainnet-mirror", - "flake-compat": "flake-compat", - "flake-utils": "flake-utils", - "haskellNix": "haskellNix", - "iohkNix": "iohkNix", - "nixpkgs": [ - "haskellNix", - "nixpkgs-unstable" - ], - "pre-commit-hooks": "pre-commit-hooks" - } - }, - "secp256k1": { - "flake": false, - "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", - "type": "github" - }, - "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" - } - }, - "sodium": { - "flake": false, - "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - } - }, - "stackage": { - "flake": false, - "locked": { - "lastModified": 1712535048, - "narHash": "sha256-GkQdcpkvoX5XXfgCRSmFl3ibQRVwwa9vyJ/gtn8YW80=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "ad3c8abb39f04fe28c4d57d56553e11c594705a4", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "systems": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_2": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - } - }, - "root": "root", - "version": 7 -} diff --git a/flake.nix b/flake.nix deleted file mode 100644 index 9bae8fc6fa0..00000000000 --- a/flake.nix +++ /dev/null @@ -1,281 +0,0 @@ -{ - description = "cardano-ledger"; - - inputs = { - haskellNix.url = "github:input-output-hk/haskell.nix"; - nixpkgs.follows = "haskellNix/nixpkgs-unstable"; - iohkNix.url = "github:input-output-hk/iohk-nix"; - flake-utils.url = "github:hamishmack/flake-utils/hkm/nested-hydraJobs"; - - CHaP = { - url = "github:intersectmbo/cardano-haskell-packages?ref=repo"; - flake = false; - }; - - cardano-mainnet-mirror = { - url = "github:input-output-hk/cardano-mainnet-mirror"; - flake = false; - }; - - # non-flake nix compatibility - flake-compat = { - url = "github:edolstra/flake-compat"; - flake = false; - }; - - pre-commit-hooks.url = "github:cachix/pre-commit-hooks.nix"; - }; - - outputs = inputs: let - supportedSystems = [ - "x86_64-linux" - "x86_64-darwin" - # "aarch64-linux" - disable these temporarily because the build is broken - "aarch64-darwin" - ]; - in - inputs.flake-utils.lib.eachSystem supportedSystems ( - system: let - # setup our nixpkgs with the haskell.nix overlays, and the iohk-nix - # overlays... - nixpkgs = import inputs.nixpkgs { - overlays = [ - # our local packages. - (import ./nix/pkgs.nix) - # iohkNix.overlays.crypto provide libsodium-vrf, libblst and libsecp256k1. - inputs.iohkNix.overlays.crypto - # haskellNix.overlay can be configured by later overlays, so need to come before them. - inputs.haskellNix.overlay - # configure haskell.nix to use iohk-nix crypto librairies. - inputs.iohkNix.overlays.haskell-nix-crypto - ]; - inherit system; - inherit (inputs.haskellNix) config; - }; - inherit (nixpkgs) lib; - - # see flake `variants` below for alternative compilers - defaultCompiler = "ghc928"; - # We use cabalProject' to ensure we don't build the plan for - # all systems. - cabalProject = nixpkgs.haskell-nix.cabalProject' ({config, ...}: { - src = ./.; - name = "cardano-ledger"; - compiler-nix-name = lib.mkDefault defaultCompiler; - - # CHaP input map, so we can find CHaP packages (needs to be more - # recent than the index-state we set!). Can be updated with - # - # nix flake lock --update-input CHaP - # - inputMap = { - "https://chap.intersectmbo.org/" = inputs.CHaP; - }; - cabalProjectLocal = '' - repository cardano-haskell-packages-local - url: file:${inputs.CHaP} - secure: True - active-repositories: hackage.haskell.org, cardano-haskell-packages-local - ''; - - shell = { - # force LANG to be UTF-8, otherwise GHC might choke on UTF encoded data. - shellHook = '' - export LANG=en_US.UTF-8 - export LC_ALL=en_US.UTF-8 - export CARDANO_MAINNET_MIRROR="${inputs.cardano-mainnet-mirror}/epochs" - '' + lib.optionalString (nixpkgs.glibcLocales != null && nixpkgs.stdenv.hostPlatform.libc == "glibc") '' - export LOCALE_ARCHIVE="${nixpkgs.glibcLocales}/lib/locale/locale-archive" - DEFAULT_PS1="\n\[\033[1;32m\][nix-shell:\w]\$\[\033[0m\] " - prompt() { - local EXIT="$?" - if [ $EXIT != 0 ]; then - PS1="$DEFAULT_PS1\[\033[1;31m\]($EXIT)\[\033[00m\] " - else - PS1="$DEFAULT_PS1" - fi - } - PROMPT_COMMAND=prompt - ''; - - # tools we want in our shell, from hackage - tools = - { - cabal = "3.10.3.0"; - ghcid = "0.8.9"; - } - // lib.optionalAttrs (config.compiler-nix-name == defaultCompiler) { - # tools that work only with default compiler - fourmolu = "0.14.0.0"; - hlint = "3.6.1"; - haskell-language-server = "2.7.0.0"; - }; - - # and from nixpkgs or other inputs - nativeBuildInputs = with nixpkgs; - [ - (python3.withPackages (ps: with ps; [sphinx sphinx_rtd_theme recommonmark sphinx-markdown-tables sphinxemoji])) - haskellPackages.implicit-hie - ]; - # disable Hoogle until someone request it - withHoogle = false; - # Skip cross compilers for the shell - crossPlatforms = _: []; - }; - - # package customizations as needed. Where cabal.project is not - # specific enough, or doesn't allow setting these. - modules = [ - ({pkgs, ...}: { - # packages.plutus-core.components.library.ghcOptions = [ "-fexternal-interpreter" ]; - # uncomment if necessary when profiling - packages.byron-spec-chain.configureFlags = ["--ghc-option=-Werror"]; - packages.byron-spec-ledger.configureFlags = ["--ghc-option=-Werror"]; - packages.delegation.configureFlags = ["--ghc-option=-Werror"]; - packages.non-integral.configureFlags = ["--ghc-option=-Werror"]; - packages.cardano-ledger-shelley.configureFlags = ["--ghc-option=-Werror"]; - packages.cardano-ledger-shelley-ma.configureFlags = ["--ghc-option=-Werror"]; - packages.cardano-ledger-shelley-ma-test.configureFlags = ["--ghc-option=-Werror"]; - packages.small-steps.configureFlags = ["--ghc-option=-Werror"]; - packages.cardano-ledger-byron = { - configureFlags = ["--ghc-option=-Werror"]; - components = { - tests.cardano-ledger-byron-test = { - preCheck = '' - export CARDANO_MAINNET_MIRROR="${inputs.cardano-mainnet-mirror}/epochs" - cp ${./eras/byron/ledger/impl/mainnet-genesis.json} ./mainnet-genesis.json - ''; - testFlags = ["--scenario=ContinuousIntegration"]; - }; - }; - }; - }) - ({pkgs, ...}: - lib.mkIf pkgs.stdenv.hostPlatform.isUnix { - packages.cardano-ledger-shelley.components.tests.tests.build-tools = [pkgs.cddl pkgs.cbor-diag]; - packages.cardano-ledger-allegra.components.tests.tests.build-tools = [pkgs.cddl pkgs.cbor-diag]; - packages.cardano-ledger-mary.components.tests.tests.build-tools = [pkgs.cddl pkgs.cbor-diag]; - packages.cardano-ledger-alonzo.components.tests.tests.build-tools = [pkgs.cddl pkgs.cbor-diag]; - packages.cardano-ledger-babbage.components.tests.tests.build-tools = [pkgs.cddl pkgs.cbor-diag]; - packages.cardano-ledger-conway.components.tests.tests.build-tools = [pkgs.cddl pkgs.cbor-diag]; - packages.cardano-protocol-tpraos.components.tests.tests.build-tools = [pkgs.cddl pkgs.cbor-diag]; - }) - ({pkgs, ...}: - lib.mkIf pkgs.stdenv.hostPlatform.isWindows { - packages.set-algebra.components.tests.tests.buildable = lib.mkForce false; - packages.plutus-preprocessor.buildable = lib.mkForce false; - packages.cardano-ledger-test.buildable = lib.mkForce false; - packages.cardano-ledger-shelley.buildable = lib.mkForce false; - packages.cardano-ledger-allegra.buildable = lib.mkForce false; - packages.cardano-ledger-mary.buildable = lib.mkForce false; - packages.cardano-ledger-alonzo.buildable = lib.mkForce false; - packages.cardano-ledger-babbage.buildable = lib.mkForce false; - packages.cardano-ledger-conway.buildable = lib.mkForce false; - packages.cardano-protocol-tpraos.buildable = lib.mkForce false; - }) - ]; - }); - # ... and construct a flake from the cabal project - flake = - cabalProject.flake ( - lib.optionalAttrs (system == "x86_64-linux") { - # on linux, build/test other supported compilers - variants = lib.genAttrs ["ghc8107" "ghc964"] (compiler-nix-name: { - inherit compiler-nix-name; - }); - } - ); - in - lib.recursiveUpdate flake rec { - project = cabalProject; - # add a required job, that's basically all hydraJobs. - hydraJobs = - nixpkgs.callPackages inputs.iohkNix.utils.ciJobsAggregates - { - ciJobs = - flake.hydraJobs - // { - inherit (legacyPackages) doc specs; - - # This ensure hydra send a status for the required job (even if no change other than commit hash) - revision = nixpkgs.writeText "revision" (inputs.self.rev or "dirty"); - }; - }; - legacyPackages = rec { - inherit cabalProject nixpkgs; - # also provide hydraJobs through legacyPackages to allow building without system prefix: - inherit hydraJobs; - doc.site = ((import ./doc/flake.nix).outputs {main = inputs.self;}).packages.${system}.default; - # - # PDF builds of LaTeX documentation. - # - # To download the latest PDF build from Hydra, use this link: - # https://github.com/intersectmbo/cardano-ledger/releases/latest/download/NAME.pdf - # - # To get a shell where you can run pdflatex to build it yourself, use: - # cd - # nix develop - # - # To build all specs locally with Nix: - # nix build .#specs -o spec - # - specs = nixpkgs.symlinkJoin { - name = "cardano-ledger-specs"; - # XXX: make use of flake relative path inputs once this is fixed: https://github.com/NixOS/nix/issues/6352 - # (so that we can ditch flake-compat.nix) - paths = map (d: ((import "${./.}/${d}/flake.nix").outputs {main = inputs.self;}).packages.${system}.default) [ - "eras/byron/ledger/formal-spec" - "eras/byron/chain/formal-spec" - "eras/shelley/formal-spec" - "eras/shelley-ma/formal-spec" - "eras/alonzo/formal-spec" - "eras/babbage/formal-spec" - "eras/shelley/design-spec" - "docs/small-step-semantics" - "docs/pool-ranking" - "docs/non-integer-calculations" - "eras/byron/cddl-spec" - ]; - }; - }; - - devShells = let - mkDevShells = p: { - # `nix develop .#profiling` (or `.#ghc928.profiling): a shell with profiling enabled - profiling = (p.appendModule {modules = [{enableLibraryProfiling = true;}];}).shell; - # `nix develop .#pre-commit` (or `.#ghc928.pre-commit): a shell with pre-commit enabled - pre-commit = let - pre-commit-check = inputs.pre-commit-hooks.lib.${system}.run { - src = ./.; - hooks = { - fourmolu.enable = true; - }; - }; - in - p.shell.overrideAttrs (old: { - shellHook = old.shellHook + pre-commit-check.shellHook; - }); - }; - in - mkDevShells cabalProject - # Additional shells for every GHC version supported by haskell.nix, eg. `nix develop .#ghc928` - // lib.mapAttrs (compiler-nix-name: _: let - p = cabalProject.appendModule {inherit compiler-nix-name;}; - in - p.shell // (mkDevShells p)) - nixpkgs.haskell-nix.compiler; - # formatter used by nix fmt - formatter = nixpkgs.alejandra; - } - ); - - nixConfig = { - extra-substituters = [ - "https://cache.iog.io" - ]; - extra-trusted-public-keys = [ - "hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ=" - ]; - allow-import-from-derivation = true; - }; -} diff --git a/fourmolu.yaml b/fourmolu.yaml deleted file mode 100644 index 2761fa757f6..00000000000 --- a/fourmolu.yaml +++ /dev/null @@ -1,16 +0,0 @@ -indentation: 2 -function-arrows: trailing -comma-style: leading -import-export-style: diff-friendly -indent-wheres: true -record-brace-space: true -newlines-between-decls: 1 -haddock-style: single-line -haddock-style-module: -let-style: auto -in-style: right-align -unicode: never -respectful: true -fixities: [] -single-constraint-parens: never -column-limit: 100 diff --git a/hie.yaml b/hie.yaml deleted file mode 100644 index 1db43fe193d..00000000000 --- a/hie.yaml +++ /dev/null @@ -1,319 +0,0 @@ -cradle: - cabal: - - path: "eras/allegra/impl/src" - component: "lib:cardano-ledger-allegra" - - - path: "eras/allegra/impl/testlib" - component: "cardano-ledger-allegra:lib:testlib" - - - path: "eras/allegra/impl/test" - component: "cardano-ledger-allegra:test:tests" - - - path: "eras/alonzo/impl/src" - component: "lib:cardano-ledger-alonzo" - - - path: "eras/alonzo/impl/testlib" - component: "cardano-ledger-alonzo:lib:testlib" - - - path: "eras/alonzo/impl/test" - component: "cardano-ledger-alonzo:test:tests" - - - path: "eras/alonzo/test-suite/src" - component: "lib:cardano-ledger-alonzo-test" - - - path: "eras/alonzo/test-suite/test/GenerateGoldenFileMain.hs" - component: "cardano-ledger-alonzo-test:exe:gen-golden" - - - path: "eras/alonzo/test-suite/test/Paths_cardano_ledger_alonzo_test.hs" - component: "cardano-ledger-alonzo-test:exe:gen-golden" - - - path: "eras/alonzo/test-suite/test" - component: "cardano-ledger-alonzo-test:test:cardano-ledger-alonzo-test" - - - path: "eras/babbage/impl/src" - component: "lib:cardano-ledger-babbage" - - - path: "eras/babbage/impl/testlib" - component: "cardano-ledger-babbage:lib:testlib" - - - path: "eras/babbage/impl/test" - component: "cardano-ledger-babbage:test:tests" - - - path: "eras/babbage/test-suite/src" - component: "lib:cardano-ledger-babbage-test" - - - path: "eras/babbage/test-suite/test/GenerateGoldenFileMain.hs" - component: "cardano-ledger-babbage-test:exe:gen-golden" - - - path: "eras/babbage/test-suite/test/Paths_cardano_ledger_babbage_test.hs" - component: "cardano-ledger-babbage-test:exe:gen-golden" - - - path: "eras/babbage/test-suite/test" - component: "cardano-ledger-babbage-test:test:cardano-ledger-babbage-test" - - - path: "eras/byron/chain/executable-spec/src" - component: "lib:byron-spec-chain" - - - path: "eras/byron/chain/executable-spec/test" - component: "byron-spec-chain:test:chain-rules-test" - - - path: "eras/byron/crypto/src" - component: "lib:cardano-crypto-wrapper" - - - path: "eras/byron/crypto/test" - component: "cardano-crypto-wrapper:test:test" - - - path: "eras/byron/crypto/test/./" - component: "lib:cardano-crypto-test" - - - path: "eras/byron/ledger/executable-spec/src" - component: "lib:byron-spec-ledger" - - - path: "eras/byron/ledger/executable-spec/test" - component: "byron-spec-ledger:test:byron-spec-ledger-test" - - - path: "eras/byron/ledger/impl/src" - component: "lib:cardano-ledger-byron" - - - path: "eras/byron/ledger/impl/test" - component: "cardano-ledger-byron:test:cardano-ledger-byron-test" - - - path: "eras/byron/ledger/impl/test" - component: "cardano-ledger-byron:test:epoch-validation-normal-form-test" - - - path: "eras/byron/ledger/impl/test/./" - component: "lib:cardano-ledger-byron-test" - - - path: "eras/conway/impl/src" - component: "lib:cardano-ledger-conway" - - - path: "eras/conway/impl/testlib" - component: "cardano-ledger-conway:lib:testlib" - - - path: "eras/conway/impl/test" - component: "cardano-ledger-conway:test:tests" - - - path: "eras/conway/test-suite/src" - component: "lib:cardano-ledger-conway-test" - - - path: "eras/conway/test-suite/test/GenerateGoldenFileMain.hs" - component: "cardano-ledger-conway-test:exe:gen-golden" - - - path: "eras/conway/test-suite/test/Paths_cardano_ledger_conway_test.hs" - component: "cardano-ledger-conway-test:exe:gen-golden" - - - path: "eras/conway/test-suite/test" - component: "cardano-ledger-conway-test:test:cardano-ledger-conway-test" - - - path: "eras/mary/impl/src" - component: "lib:cardano-ledger-mary" - - - path: "eras/mary/impl/testlib" - component: "cardano-ledger-mary:lib:testlib" - - - path: "eras/mary/impl/test" - component: "cardano-ledger-mary:test:tests" - - - path: "eras/shelley/impl/src" - component: "lib:cardano-ledger-shelley" - - - path: "eras/shelley/impl/testlib" - component: "cardano-ledger-shelley:lib:testlib" - - - path: "eras/shelley/impl/test" - component: "cardano-ledger-shelley:test:tests" - - - path: "eras/shelley/test-suite/src" - component: "lib:cardano-ledger-shelley-test" - - - path: "eras/shelley/test-suite/test" - component: "cardano-ledger-shelley-test:test:cardano-ledger-shelley-test" - - - path: "eras/shelley/test-suite/bench/Main.hs" - component: "cardano-ledger-shelley-test:bench:mainbench" - - - path: "eras/shelley/test-suite/bench/BenchUTxOAggregate.hs" - component: "cardano-ledger-shelley-test:bench:mainbench" - - - path: "eras/shelley/test-suite/bench/BenchValidation.hs" - component: "cardano-ledger-shelley-test:bench:mainbench" - - - path: "eras/shelley/test-suite/bench/Cardano/Ledger/Shelley/Bench/Gen.hs" - component: "cardano-ledger-shelley-test:bench:mainbench" - - - path: "eras/shelley/test-suite/bench/Cardano/Ledger/Shelley/Bench/Rewards.hs" - component: "cardano-ledger-shelley-test:bench:mainbench" - - - path: "eras/shelley-ma/test-suite/src" - component: "lib:cardano-ledger-shelley-ma-test" - - - path: "eras/shelley-ma/test-suite/test" - component: "cardano-ledger-shelley-ma-test:test:cardano-ledger-shelley-ma-test" - - - path: "libs/cardano-data/src" - component: "lib:cardano-data" - - - path: "libs/cardano-data/testlib" - component: "cardano-data:lib:testlib" - - - path: "libs/cardano-data/test" - component: "cardano-data:test:cardano-data-tests" - - - path: "libs/cardano-ledger-api/src" - component: "lib:cardano-ledger-api" - - - path: "libs/cardano-ledger-api/testlib" - component: "cardano-ledger-api:lib:testlib" - - - path: "libs/cardano-ledger-api/test" - component: "cardano-ledger-api:test:cardano-ledger-api-test" - - - path: "libs/cardano-ledger-binary/src" - component: "lib:cardano-ledger-binary" - - - path: "libs/cardano-ledger-binary/testlib" - component: "cardano-ledger-binary:lib:testlib" - - - path: "libs/cardano-ledger-binary/test" - component: "cardano-ledger-binary:test:tests" - - - path: "libs/cardano-ledger-binary/bench/Bench.hs" - component: "cardano-ledger-binary:bench:bench" - - - path: "libs/cardano-ledger-conformance/src" - component: "lib:cardano-ledger-conformance" - - - path: "libs/cardano-ledger-conformance/test" - component: "cardano-ledger-conformance:test:tests" - - - path: "libs/cardano-ledger-core/src" - component: "lib:cardano-ledger-core" - - - path: "libs/cardano-ledger-core/testlib" - component: "cardano-ledger-core:lib:testlib" - - - path: "libs/cardano-ledger-core/test" - component: "cardano-ledger-core:test:tests" - - - path: "libs/cardano-ledger-core/bench/UMap.hs" - component: "cardano-ledger-core:bench:umap" - - - path: "libs/cardano-ledger-core/bench/Addr.hs" - component: "cardano-ledger-core:bench:addr" - - - path: "libs/cardano-ledger-test/src" - component: "lib:cardano-ledger-test" - - - path: "libs/cardano-ledger-test/test" - component: "cardano-ledger-test:test:cardano-ledger-test" - - - path: "libs/cardano-ledger-test/bench/Main.hs" - component: "cardano-ledger-test:bench:bench" - - - path: "libs/cardano-ledger-test/bench/Bench/Cardano/Ledger/ApplyTx.hs" - component: "cardano-ledger-test:bench:bench" - - - path: "libs/cardano-ledger-test/bench/Bench/Cardano/Ledger/ApplyTx/Gen.hs" - component: "cardano-ledger-test:bench:bench" - - - path: "libs/cardano-ledger-test/bench/Bench/Cardano/Ledger/EpochBoundary.hs" - component: "cardano-ledger-test:bench:bench" - - - path: "libs/cardano-ledger-test/bench/Bench/Cardano/Ledger/Serialisation/Generators.hs" - component: "cardano-ledger-test:bench:bench" - - - path: "libs/cardano-ledger-test/bench/Bench/Cardano/Ledger/SumStake.hs" - component: "cardano-ledger-test:bench:bench" - - - path: "libs/cardano-ledger-test/bench/Bench/Cardano/Ledger/TxOut.hs" - component: "cardano-ledger-test:bench:bench" - - - path: "libs/cardano-ledger-test/bench/Bench/Cardano/Ledger/StakeDistr.hs" - component: "cardano-ledger-test:bench:bench" - - - path: "libs/cardano-ledger-test/bench/Bench/Constrained/STS.hs" - component: "cardano-ledger-test:bench:bench" - - - path: "libs/cardano-ledger-test/benchProperty/Main.hs" - component: "cardano-ledger-test:bench:benchProperty" - - - path: "libs/cardano-protocol-tpraos/src" - component: "lib:cardano-protocol-tpraos" - - - path: "libs/cardano-protocol-tpraos/testlib" - component: "cardano-protocol-tpraos:lib:testlib" - - - path: "libs/cardano-protocol-tpraos/test" - component: "cardano-protocol-tpraos:test:tests" - - - path: "libs/constrained-generators/src" - component: "lib:constrained-generators" - - - path: "libs/constrained-generators/test" - component: "constrained-generators:test:constrained" - - - path: "libs/constrained-generators/bench/Main.hs" - component: "constrained-generators:bench:bench" - - - path: "libs/ledger-state/src" - component: "lib:ledger-state" - - - path: "libs/ledger-state/app/Main.hs" - component: "ledger-state:exe:ledger-state" - - - path: "libs/ledger-state/bench/Memory.hs" - component: "ledger-state:bench:memory" - - - path: "libs/ledger-state/bench/Performance.hs" - component: "ledger-state:bench:performance" - - - path: "libs/ledger-state/bench/Address.hs" - component: "ledger-state:bench:address" - - - path: "libs/non-integral/src" - component: "lib:non-integral" - - - path: "libs/non-integral/test" - component: "non-integral:test:non-integral-test" - - - path: "libs/plutus-preprocessor/src/Main.hs" - component: "plutus-preprocessor:exe:plutus-preprocessor" - - - path: "libs/plutus-preprocessor/src/PlutusV1Scripts.hs" - component: "plutus-preprocessor:exe:plutus-preprocessor" - - - path: "libs/plutus-preprocessor/src/PlutusV3Scripts.hs" - component: "plutus-preprocessor:exe:plutus-preprocessor" - - - path: "libs/plutus-preprocessor/src/ScriptSource.hs" - component: "plutus-preprocessor:exe:plutus-preprocessor" - - - path: "libs/plutus-preprocessor/src/Debug.hs" - component: "plutus-preprocessor:exe:plutus-debug" - - - path: "libs/set-algebra/src" - component: "lib:set-algebra" - - - path: "libs/set-algebra/test" - component: "set-algebra:test:tests" - - - path: "libs/small-steps/src" - component: "lib:small-steps" - - - path: "libs/small-steps/testlib" - component: "small-steps:lib:testlib" - - - path: "libs/small-steps/test" - component: "small-steps:test:tests" - - - path: "libs/vector-map/src" - component: "lib:vector-map" - - - path: "libs/vector-map/testlib" - component: "vector-map:lib:testlib" - - - path: "libs/vector-map/test" - component: "vector-map:test:tests" - - - path: "libs/vector-map/bench/Bench.hs" - component: "vector-map:bench:bench" diff --git a/implementation-decisions.md b/implementation-decisions.md deleted file mode 100644 index 0d4a798b023..00000000000 --- a/implementation-decisions.md +++ /dev/null @@ -1,117 +0,0 @@ -# Concrete implementation decisions - -This file is a repository to capture concrete decisions that have to be made in -order to implement the specs found in this repo. The idea here is that we have a -record of extra decisions which are outside of the scope of the formal spec. - -When such a case is found a section should be added to this document outlining -the decision made and the section of the spec or rule that the decision -corresponds to. In a specific format: - -## Format - -The format is similar to the Architectural Decision Record [^1] used in issues -in the wallet. This consists of: - -### Context - - - - - -#### Decision - - - -### PR - - - - -### Development Plan - - - -### Implications - - - - -## Process - -This file should be edited by adding a section matching the format above in a PR -against this repo. The PR should reference and issues in the implementation repo. - - -After that there are a few options: - - -### The decision is agreed to - -The proposal becomes the choice for concrete implementations henceforth. The PR -is approved and merged - - -### The decision needs refinement - -This refinement is discused in the PR proposing the decision, the section is -ammended until we agree on the decision (this should be timeboxed) as we can -always revisit any decisions. - -[^1]: https://adr.github.io/ - -## Decisions - -This is the section that should be appended to when decisions are made - -### This is where the title goes - -#### Context - -#### Decision - -#### PR - -| Number | Base | -| --- | --- | -| https://github.com/some/other-repo/issues/14 | `develop` | -| #42 | `release/2.0.0` | - - -#### Development Plan - -#### Implications diff --git a/libs/cardano-data/.ghcid b/libs/cardano-data/.ghcid deleted file mode 100644 index 3679a4be7e1..00000000000 --- a/libs/cardano-data/.ghcid +++ /dev/null @@ -1 +0,0 @@ ---command="cabal repl --repl-options='-isrc -fwarn-unused-binds -fwarn-unused-imports -fno-code -fobject-code -g2 -fno-break-on-exception -fno-break-on-error -ferror-spans -j -Wno-unused-packages'" --clear --no-height-limit --reverse-errors --reload=../../ --outputfile=/tmp/cardano-data-ghcid.txt \ No newline at end of file diff --git a/libs/cardano-data/CHANGELOG.md b/libs/cardano-data/CHANGELOG.md deleted file mode 100644 index 66c639709c5..00000000000 --- a/libs/cardano-data/CHANGELOG.md +++ /dev/null @@ -1,44 +0,0 @@ -# Version history for `cardano-data` - -## 1.2.2.0 - -* Add `assocList` -* Add module Data.MonoTuple - -## 1.2.1.0 - -* Add `ToJSON` instance for `OSet` #4112 -* Add `fromKeys`, `fromElems` -* Add `OSet.fromList` -* Add `fromFoldableDuplicates` - -## 1.2.0.0 - -* Add `toSet` -* Add `fromFoldable` -* Moved `ToExpr` instances out of the main library and into the testlib. - -## 1.1.2.0 - -* Add Data.OMap.Strict #3791 - -## 1.1.1.0 - -* Add Data.OSet.Strict #3779 - -## 1.1.0.0 - -* Remove `Data.UMap` #3371 - -## 1.0.1.0 - -* Fix - A bug was fixed in the `canonicalInsert` function. - The bug manifested by creating an unbalanced tree in the `Data.Map` internals of the - 'CanonicalMap', which can result in a crash. - This was the root cause of https://github.com/input-output-hk/cardano-node/issues/4826. - -* Added New module Data.Universe, reusable code for defining closed singleton types. - -## 1.0.0.0 - -* First properly versioned released. diff --git a/libs/cardano-data/Setup.hs b/libs/cardano-data/Setup.hs deleted file mode 100644 index e8ef27dbba9..00000000000 --- a/libs/cardano-data/Setup.hs +++ /dev/null @@ -1,3 +0,0 @@ -import Distribution.Simple - -main = defaultMain diff --git a/libs/cardano-data/cardano-data.cabal b/libs/cardano-data/cardano-data.cabal deleted file mode 100644 index dc5956948e1..00000000000 --- a/libs/cardano-data/cardano-data.cabal +++ /dev/null @@ -1,96 +0,0 @@ -cabal-version: 3.0 -name: cardano-data -version: 1.2.2.0 -license: Apache-2.0 -maintainer: operations@iohk.io -author: IOHK -homepage: https://github.com/intersectmbo/cardano-ledger -synopsis: Specialized data for Cardano project -category: Control -build-type: Simple -extra-source-files: CHANGELOG.md - -source-repository head - type: git - location: https://github.com/intersectmbo/cardano-ledger - subdir: libs/cardano-data - -library - exposed-modules: - Data.CanonicalMaps - Data.Pulse - Data.MapExtras - Data.ListMap - Data.Universe - Data.OSet.Strict - Data.OMap.Strict - Data.MonoTuple - - hs-source-dirs: src - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wunused-packages - - build-depends: - base >=4.14 && <5, - aeson >=2.2, - cardano-ledger-binary ^>=1.3, - cardano-strict-containers >=0.1.2.1, - containers, - data-default-class, - deepseq, - mtl, - nothunks, - vector, - microlens - -library testlib - exposed-modules: - Test.Cardano.Data - Test.Cardano.Data.Arbitrary - Test.Cardano.Data.TreeDiff - - visibility: public - hs-source-dirs: testlib - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wunused-packages - - build-depends: - base, - cardano-data, - cardano-ledger-binary:testlib, - containers, - hspec, - QuickCheck, - cardano-data, - microlens - -test-suite cardano-data-tests - type: exitcode-stdio-1.0 - main-is: Main.hs - hs-source-dirs: test - other-modules: - Test.Cardano.Data.MapExtrasSpec - Test.Cardano.Data.OSet.StrictSpec - Test.Cardano.Data.OMap.StrictSpec - - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wunused-packages - -threaded - - build-depends: - base, - cardano-strict-containers, - containers, - hspec, - cardano-data, - cardano-ledger-binary:{cardano-ledger-binary, testlib}, - testlib, - QuickCheck, - quickcheck-classes, - microlens diff --git a/libs/cardano-data/flake.nix b/libs/cardano-data/flake.nix deleted file mode 100644 index e5308044c76..00000000000 --- a/libs/cardano-data/flake.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ - outputs = inputs: let - main = inputs.main or (import ../../nix/flake-compat.nix).defaultNix; - in { - packages = - builtins.mapAttrs (_: {cabalProject, ...}: { - default = cabalProject.hsPkgs.cardano-data.components.library; - testlib = cabalProject.hsPkgs.cardano-data.components.sublibs.testlib; - tests = cabalProject.hsPkgs.cardano-data.components.tests.cardano-data-tests; - }) - main.legacyPackages; - inherit (main) devShells; - }; -} diff --git a/libs/cardano-data/src/Data/CanonicalMaps.hs b/libs/cardano-data/src/Data/CanonicalMaps.hs deleted file mode 100644 index bfd827a6fd8..00000000000 --- a/libs/cardano-data/src/Data/CanonicalMaps.hs +++ /dev/null @@ -1,112 +0,0 @@ -{-# LANGUAGE BangPatterns #-} - -module Data.CanonicalMaps ( - CanonicalZero (..), - canonicalInsert, - canonicalMapUnion, - canonicalMap, - pointWise, - Map.Map, -) -where - -import Data.Map.Internal ( - Map (..), - link, - link2, - ) -import qualified Data.Map.Strict as Map - --- ===================================================================================== --- Operations on Map from keys to values that are specialised to `CanonicalZero` values. --- A (Map k v) is (CanonicalZero v), if it never stores a zero at type v. --- In order to do this we need to know what 'zeroC' is, and 'joinC' has to know how to --- joining together two maps where one of its arguments might be 'zeroC' --- This class is strictly used in the implementation, and is not observable by the user. --- ====================================================================================== - -class Eq t => CanonicalZero t where - zeroC :: t - joinC :: t -> t -> t - -instance CanonicalZero Integer where - zeroC = 0 - joinC = (+) - -instance (Ord k, CanonicalZero v) => CanonicalZero (Map k v) where - zeroC = Map.empty - joinC = canonicalMapUnion joinC - --- Note that the class CanonicalZero and the function canonicalMapUnion are mutually recursive. - -canonicalMapUnion :: - (Ord k, CanonicalZero a) => - (a -> a -> a) -> -- (\ left right -> ??) which side do you prefer? - Map k a -> - Map k a -> - Map k a -canonicalMapUnion _f t1 Tip = t1 -canonicalMapUnion f t1 (Bin _ k x Tip Tip) = canonicalInsert f k x t1 -canonicalMapUnion f (Bin _ k x Tip Tip) t2 = canonicalInsert f k x t2 -canonicalMapUnion _f Tip t2 = t2 -canonicalMapUnion f (Bin _ k1 x1 l1 r1) t2 = case Map.splitLookup k1 t2 of - (l2, mb, r2) -> case mb of - Nothing -> - if x1 == zeroC - then link2 l1l2 r1r2 - else link k1 x1 l1l2 r1r2 - Just x2 -> - if new == zeroC - then link2 l1l2 r1r2 - else link k1 new l1l2 r1r2 - where - new = f x1 x2 - where - !l1l2 = canonicalMapUnion f l1 l2 - !r1r2 = canonicalMapUnion f r1 r2 -{-# INLINEABLE canonicalMapUnion #-} - -canonicalInsert :: - (Ord k, CanonicalZero a) => - (a -> a -> a) -> - k -> - a -> - Map k a -> - Map k a -canonicalInsert f !kx x = go - where - go Tip = if x == zeroC then Tip else Map.singleton kx x - go (Bin sy ky y l r) = - case compare kx ky of - LT -> link ky y (go l) r - GT -> link ky y l (go r) - EQ -> if new == zeroC then link2 l r else Bin sy kx new l r - where - new = f y x -- Apply to value in the tree, then the new value -{-# INLINEABLE canonicalInsert #-} - -canonicalMap :: (Ord k, CanonicalZero a) => (a -> a) -> Map k a -> Map k a -canonicalMap f = Map.foldrWithKey accum Map.empty - where - accum k v ans = if new == zeroC then ans else Map.insert k new ans - where - new = f v -{-# INLINEABLE canonicalMap #-} - --- Pointwise comparison assuming the map is CanonicalZero, and we assume semantically that --- the value for keys not appearing in the map is 'zeroC' - -pointWise :: - (Ord k, CanonicalZero v) => - (v -> v -> Bool) -> - Map k v -> - Map k v -> - Bool -pointWise _ Tip Tip = True -pointWise p Tip m@Bin {} = all (zeroC `p`) m -pointWise p m@Bin {} Tip = all (`p` zeroC) m -pointWise p m (Bin _ k v2 ls rs) = - case Map.splitLookup k m of - (lm, Just v1, rm) -> p v1 v2 && pointWise p ls lm && pointWise p rs rm - _ -> False -{-# INLINEABLE pointWise #-} diff --git a/libs/cardano-data/src/Data/ListMap.hs b/libs/cardano-data/src/Data/ListMap.hs deleted file mode 100644 index 95f90cccc83..00000000000 --- a/libs/cardano-data/src/Data/ListMap.hs +++ /dev/null @@ -1,170 +0,0 @@ -{-# LANGUAGE DeriveFoldable #-} -{-# LANGUAGE DeriveFunctor #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} - -module Data.ListMap ( - ListMap (..), - foldrWithKey, - keys, - keysSet, - elems, - lookup, - filter, - toMap, - fromMap, - mapKeys, - map, - empty, - fromList, - toList, -) -where - -import Cardano.Ledger.Binary (DecCBOR (..), EncCBOR (..), decodeMapLen, encodeMapLen) -import Control.DeepSeq (NFData, NFData1) -import Control.Monad -import Data.Aeson ( - FromJSON (..), - FromJSON1 (..), - FromJSONKey (..), - FromJSONKeyFunction (..), - ToJSON (..), - ToJSON1 (..), - ToJSON2 (..), - ToJSONKey (..), - ToJSONKeyFunction (..), - Value (..), - ) -import qualified Data.Aeson as J -import Data.Aeson.Encoding (dict) -import qualified Data.Aeson.Encoding as E -import qualified Data.Aeson.Key as Key -import qualified Data.Aeson.KeyMap as KM -import Data.Aeson.Types (listValue) -import Data.Bifunctor (Bifunctor (..)) -import Data.Coerce (coerce) -import qualified Data.List as L -import qualified Data.Map.Strict as Map -import qualified Data.Set as Set -import qualified Data.Vector as V -import GHC.Generics (Generic, Generic1) -import NoThunks.Class (NoThunks) -import Prelude hiding (filter, lookup, map) -import qualified Prelude as Pre - --- | ListMap is a wrapper around an associative list. It is encoded in CBOR --- and JSON as an object/map. -newtype ListMap k v = ListMap - { unListMap :: [(k, v)] - } - deriving (Show, Foldable, Functor, Generic, Generic1, NFData) - --- | Eq works similarly to Map -instance (Ord k, Ord v) => Eq (ListMap k v) where - (ListMap xs) == (ListMap ys) = L.sort xs == L.sort ys - -instance Semigroup (ListMap k v) where - ListMap xs <> ListMap ys = ListMap $ xs <> ys - -instance Monoid (ListMap k v) where - mempty = ListMap mempty - -instance (NoThunks k, NoThunks v) => NoThunks (ListMap k v) - -instance (DecCBOR k, DecCBOR v) => DecCBOR (ListMap k v) where - decCBOR = - ListMap <$> do - len <- decodeMapLen - replicateM len $ do - k <- decCBOR - v <- decCBOR - return (k, v) - -instance (EncCBOR k, EncCBOR v) => EncCBOR (ListMap k v) where - encCBOR (ListMap xs) = encodeMapLen (fromIntegral $ length xs) <> foldr f mempty xs - where - f (k, v) e = encCBOR k <> encCBOR v <> e - -instance ToJSONKey k => ToJSON1 (ListMap k) where - liftToJSON _ g _ = case toJSONKey of - ToJSONKeyText f _ -> Object . KM.fromList . unListMap . bimap f g - ToJSONKeyValue f _ -> Array . V.fromList . L.map (toJSONPair f g) . unListMap - where - toJSONPair :: (a -> Value) -> (b -> Value) -> (a, b) -> Value - toJSONPair a b = liftToJSON2 (const False) a (listValue a) (const False) b (listValue b) - - liftToEncoding _ g _ = case toJSONKey of - ToJSONKeyText _ f -> dict f g (foldrWithKey . uncurry) - ToJSONKeyValue _ f -> E.list (pairEncoding f) . unListMap - where - pairEncoding f (a, b) = E.list id [f a, g b] - -instance (ToJSON v, ToJSONKey k) => ToJSON (ListMap k v) where - toJSON = J.toJSON1 - toEncoding = J.toEncoding1 - -instance (FromJSON k, FromJSONKey k) => FromJSON1 (ListMap k) where - liftParseJSON _ parser _ = J.withObject "ListMap" $ \obj -> do - let kv = KM.toList obj - res <- forM kv $ \(k, v) -> do - let t = Key.toText k - k' <- case fromJSONKey of - FromJSONKeyCoerce -> return $ coerce t - FromJSONKeyText f -> return $ f t - FromJSONKeyTextParser f -> f t - -- TODO figure out what to do here - FromJSONKeyValue _ -> error "key conversion not implemented" - v' <- parser v - return (k', v') - return $ ListMap res - -instance (FromJSON v, FromJSON k, FromJSONKey k) => FromJSON (ListMap k v) where - parseJSON = J.parseJSON1 - -instance NFData k => NFData1 (ListMap k) - -instance Bifunctor ListMap where - bimap f g (ListMap xs) = ListMap $ fmap (bimap f g) xs - -foldrWithKey :: ((k, a) -> b -> b) -> b -> ListMap k a -> b -foldrWithKey f z = L.foldr f z . unListMap - -keys :: ListMap k a -> [k] -keys (ListMap xs) = fst <$> xs - -keysSet :: Ord k => ListMap k a -> Set.Set k -keysSet lm = Set.fromList $ keys lm - -elems :: ListMap k a -> [a] -elems (ListMap xs) = snd <$> xs - -lookup :: Eq k => k -> ListMap k v -> Maybe v -lookup k (ListMap xs) = L.lookup k xs - -filter :: (k -> v -> Bool) -> ListMap k v -> ListMap k v -filter f (ListMap xs) = ListMap $ Pre.filter (uncurry f) xs - -toMap :: Ord k => ListMap k v -> Map.Map k v -toMap (ListMap xs) = Map.fromList xs - -fromMap :: Map.Map k v -> ListMap k v -fromMap = ListMap . Map.toList - -mapKeys :: (k1 -> k2) -> ListMap k1 a -> ListMap k2 a -mapKeys f = ListMap . fmap (first f) . unListMap - -map :: (a -> v) -> ListMap k a -> ListMap k v -map = fmap - -empty :: ListMap k a -empty = ListMap [] - -fromList :: [(k, v)] -> ListMap k v -fromList = ListMap - -toList :: ListMap k v -> [(k, v)] -toList = unListMap diff --git a/libs/cardano-data/src/Data/MapExtras.hs b/libs/cardano-data/src/Data/MapExtras.hs deleted file mode 100644 index fe65c61ebc3..00000000000 --- a/libs/cardano-data/src/Data/MapExtras.hs +++ /dev/null @@ -1,273 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE MagicHash #-} -{-# LANGUAGE UnboxedTuples #-} - --- | Sometimes we need to write our own version of functions over `Map.Map` that --- do not appear in the "containers" library. This module is for such functions. --- --- For example: --- --- 1. Version of `Map.withoutKeys` where both arguments are `Map.Map` --- 2. Comparing that two maps have exactly the same set of keys --- 3. The intersection of two maps guarded by a predicate. --- --- > ((dom stkcred) ◁ deleg) ▷ (dom stpool)) ==> --- > intersectDomP (\ k v -> Map.member v stpool) stkcred deleg -module Data.MapExtras ( - StrictTriple (..), - extract, - noKeys, - keysEqual, - splitMemberMap, - splitMemberSet, - intersectDomP, - intersectDomPLeft, - intersectMapSetFold, - disjointMapSetFold, - extractKeys, - extractKeysSmallSet, - fromKeys, - fromElems, -) -where - -import Data.Foldable (toList) -import Data.Map.Internal (Map (..), balanceL, balanceR, glue, link, link2) -import qualified Data.Map.Strict as Map -import Data.Set (Set) -import qualified Data.Set as Set -import qualified Data.Set.Internal as Set -import GHC.Exts (isTrue#, reallyUnsafePtrEquality#, (==#)) - -data StrictTriple a b c = StrictTriple !a !b !c - deriving (Show, Eq) - -noKeys :: Ord k => Map k a -> Map k b -> Map k a -noKeys Tip _ = Tip -noKeys m Tip = m -noKeys m (Bin _ k _ ls rs) = case Map.split k m of - (lm, rm) -> link2 lm' rm' -- We know `k` is not in either `lm` or `rm` - where - !lm' = noKeys lm ls - !rm' = noKeys rm rs -{-# INLINEABLE noKeys #-} - --- | Checks if two pointers are equal. Yes means yes; --- no means maybe. The values should be forced to at least --- WHNF before comparison to get moderately reliable results. -ptrEq :: a -> a -> Bool -ptrEq x y = isTrue# (reallyUnsafePtrEquality# x y ==# 1#) -{-# INLINE ptrEq #-} - -keysEqual :: Ord k => Map k v1 -> Map k v2 -> Bool -keysEqual Tip Tip = True -keysEqual Tip (Bin _ _ _ _ _) = False -keysEqual (Bin _ _ _ _ _) Tip = False -keysEqual m (Bin _ k _ ls rs) = - case splitMemberMap k m of - StrictTriple lm True rm -> keysEqual ls lm && keysEqual rs rm - _ -> False -{-# INLINEABLE keysEqual #-} - --- | A variant of 'splitLookup' that indicates only whether the --- key was present, rather than producing its value. This is used to --- implement 'keysEqual' to avoid allocating unnecessary 'Just' --- constructors. --- --- /Note/ - this is a copy pasted internal function from "containers" package --- adjusted to return `StrictTriple` -splitMemberMap :: Ord k => k -> Map k a -> StrictTriple (Map k a) Bool (Map k a) -splitMemberMap = go - where - go :: Ord k => k -> Map k a -> StrictTriple (Map k a) Bool (Map k a) - go !k t = - case t of - Tip -> StrictTriple Tip False Tip - Bin _ kx x l r -> case compare k kx of - LT -> - let !(StrictTriple lt z gt) = go k l - !gt' = link kx x gt r - in StrictTriple lt z gt' - GT -> - let !(StrictTriple lt z gt) = go k r - !lt' = link kx x l lt - in StrictTriple lt' z gt - EQ -> StrictTriple l True r -{-# INLINEABLE splitMemberMap #-} - --- | /O(log n)/. Performs a 'split' but also returns whether the pivot --- element was found in the original set. --- --- This is a modified version of `Set.splitMember`, where `StrictTriple` is used --- instead of a lazy one for minor performance gain. -splitMemberSet :: Ord a => a -> Set a -> StrictTriple (Set a) Bool (Set a) -splitMemberSet _ Set.Tip = StrictTriple Set.Tip False Set.Tip -splitMemberSet x (Set.Bin _ y l r) = - case compare x y of - LT -> - let !(StrictTriple lt found gt) = splitMemberSet x l - !gt' = Set.link y gt r - in StrictTriple lt found gt' - GT -> - let !(StrictTriple lt found gt) = splitMemberSet x r - !lt' = Set.link y l lt - in StrictTriple lt' found gt - EQ -> StrictTriple l True r -{-# INLINEABLE splitMemberSet #-} - --- | intersetDomP p m1 m2 == Keep the key and value from m2, iff (the key is in the dom of m1) && ((p key value) is true) -intersectDomP :: Ord k => (k -> v2 -> Bool) -> Map k v1 -> Map k v2 -> Map k v2 -intersectDomP _ Tip _ = Tip -intersectDomP _ _ Tip = Tip -intersectDomP p t1 (Bin _ k v l2 r2) = - if mb && p k v - then link k v l1l2 r1r2 - else link2 l1l2 r1r2 - where - !(StrictTriple l1 mb r1) = splitMemberMap k t1 - !l1l2 = intersectDomP p l1 l2 - !r1r2 = intersectDomP p r1 r2 -{-# INLINEABLE intersectDomP #-} - --- | - Similar to intersectDomP, except the Map returned has the same key as the first input map, rather than the second input map. -intersectDomPLeft :: Ord k => (k -> v2 -> Bool) -> Map k v1 -> Map k v2 -> Map k v1 -intersectDomPLeft _ Tip _ = Tip -intersectDomPLeft _ _ Tip = Tip -intersectDomPLeft p (Bin _ k v1 l1 r1) t2 = - case mb of - Just v2 | p k v2 -> link k v1 l1l2 r1r2 - _other -> link2 l1l2 r1r2 - where - !(l2, mb, r2) = Map.splitLookup k t2 - !l1l2 = intersectDomPLeft p l1 l2 - !r1r2 = intersectDomPLeft p r1 r2 -{-# INLINEABLE intersectDomPLeft #-} - --- | - fold over the intersection of a Map and a Set -intersectMapSetFold :: Ord k => (k -> v -> ans -> ans) -> Map k v -> Set k -> ans -> ans -intersectMapSetFold _accum Tip _ !ans = ans -intersectMapSetFold _accum _ set !ans | Set.null set = ans -intersectMapSetFold accum (Bin _ k v l1 l2) set !ans = - intersectMapSetFold accum l1 s1 (addKV k v (intersectMapSetFold accum l2 s2 ans)) - where - (s1, found, s2) = Set.splitMember k set - addKV k1 v1 !ans1 = if found then accum k1 v1 ans1 else ans1 -{-# INLINEABLE intersectMapSetFold #-} - --- | Fold with 'accum' all those pairs in the map, not appearing in the set. -disjointMapSetFold :: Ord k => (k -> v -> ans -> ans) -> Map k v -> Set k -> ans -> ans -disjointMapSetFold _accum Tip _ !ans = ans -disjointMapSetFold accum m set !ans | Set.null set = Map.foldrWithKey' accum ans m -disjointMapSetFold accum (Bin _ k v l1 l2) set !ans = - disjointMapSetFold accum l1 s1 (addKV k v (disjointMapSetFold accum l2 s2 ans)) - where - (s1, found, s2) = Set.splitMember k set - addKV k1 v1 !ans1 = if not found then accum k1 v1 ans1 else ans1 -{-# INLINEABLE disjointMapSetFold #-} - --- ================================= - --- This is a slightly adjusted version of `delete` from "containers" -extract# :: Ord k => k -> Map k a -> (# Maybe a, Map k a #) -extract# !k = go - where - go Tip = (# Nothing, Tip #) - go t@(Bin _ kx x l r) = - case compare k kx of - LT - | l' `ptrEq` l -> (# mVal, t #) - | otherwise -> let !m = balanceR kx x l' r in (# mVal, m #) - where - !(# mVal, l' #) = go l - GT - | r' `ptrEq` r -> (# mVal, t #) - | otherwise -> let !m = balanceL kx x l r' in (# mVal, m #) - where - !(# mVal, r' #) = go r - EQ -> let !m = glue l r in (# Just x, m #) -{-# INLINE extract# #-} - --- | Just like `Map.delete`, but also returns the value if it was indeed deleted --- from the map. -extract :: Ord k => k -> Map k b -> (Maybe b, Map k b) -extract k m = - case extract# k m of - (# Just v, m' #) -> (Just v, m') - _ -> (Nothing, m) -{-# INLINE extract #-} - --- | Partition the `Map` according to keys in the `Set`. This is equivalent to: --- --- > extractKeys m s === (withoutKeys m s, restrictKeys m s) -extractKeys :: Ord k => Map k a -> Set k -> (Map k a, Map k a) -extractKeys m s - | Set.size s < 6 = extractKeysSmallSet m s -- See haddock for value 6 - | otherwise = - case extractKeys# m s of - (# w, r #) -> (w, r) -{-# INLINE extractKeys #-} - --- | It has been discovered expirementally through benchmarks that for small Set --- size of under around 6 elements this function performs faster than --- `extractKeys#` -extractKeysSmallSet :: Ord k => Map k a -> Set.Set k -> (Map k a, Map k a) -extractKeysSmallSet sm = Set.foldl' f (sm, Map.empty) - where - f acc@(without, restrict) k = - case extract# k without of - (# Just v, without' #) -> - let !restrict' = Map.insert k v restrict - in (without', restrict') - _ -> acc -{-# INLINE extractKeysSmallSet #-} - --- | This function will produce exactly the same results as --- `extractKeysSmallSet` for all inputs, but it performs better whenever the set --- is big. -extractKeys# :: Ord k => Map k a -> Set k -> (# Map k a, Map k a #) -extractKeys# Tip _ = (# Tip, Tip #) -extractKeys# m Set.Tip = (# m, Tip #) -extractKeys# m@(Bin _ k x lm rm) s = (# w, r #) - where - !(StrictTriple ls b rs) = splitMemberSet k s - !w - | not b = - if lmw `ptrEq` lm && rmw `ptrEq` rm - then m - else link k x lmw rmw - | otherwise = link2 lmw rmw - !r - | b = - if lmr `ptrEq` lm && rmr `ptrEq` rm - then m - else link k x lmr rmr - | otherwise = link2 lmr rmr - !(# lmw, lmr #) = extractKeys# lm ls - !(# rmw, rmr #) = extractKeys# rm rs -{-# INLINEABLE extractKeys# #-} - --- | Convert any foldable data structure with keys to a Map. Implemented in terms of --- `Map.fromList`, therefore last duplicate key wins. -fromKeys :: (Foldable f, Ord k) => (k -> v) -> f k -> Map k v -fromKeys f ks = - -- Conversion implemented in terms of list instead of an Map.insert because fromList has - -- a nice optimization for already sorted keys and with list fusion there should be no overhead - Map.fromList [(k, f k) | k <- toList ks] -{-# INLINE [2] fromKeys #-} - -{-# RULES "fromKeys/fromSet" [~2] fromKeys = Map.fromSet #-} - --- | Convert any foldable data structure with values to a Map. Implemented in terms of --- `Map.fromList`, therefore last duplicate key wins. -fromElems :: - (Foldable f, Ord k) => - -- | Function that will create a key from a value. Most common case is a hashing - -- function. - (v -> k) -> - f v -> - Map k v -fromElems f vs = - -- Conversion implemented in terms of list instead of an Map.insert because fromList has - -- a nice optimization for already sorted keys and with list fusion there should be no overhead - Map.fromList [(f v, v) | v <- toList vs] -{-# INLINE fromElems #-} diff --git a/libs/cardano-data/src/Data/MonoTuple.hs b/libs/cardano-data/src/Data/MonoTuple.hs deleted file mode 100644 index 1f9348e9bea..00000000000 --- a/libs/cardano-data/src/Data/MonoTuple.hs +++ /dev/null @@ -1,29 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - --- | Supports creating tuples (where all components have the same type) as Fixed length lists. -module Data.MonoTuple ( - TupleN, -) where - -import GHC.TypeNats (Nat) - --- ========================================= - -type family TupleN (n :: Nat) a where - TupleN 0 a = () - TupleN 1 a = a - TupleN 2 a = (a, a) - TupleN 3 a = (a, a, a) - TupleN 4 a = (a, a, a, a) - TupleN 5 a = (a, a, a, a, a) - TupleN 6 a = (a, a, a, a, a, a) - TupleN 7 a = (a, a, a, a, a, a, a) - TupleN 8 a = (a, a, a, a, a, a, a, a) - TupleN 9 a = (a, a, a, a, a, a, a, a, a) - TupleN 10 a = (a, a, a, a, a, a, a, a, a, a) diff --git a/libs/cardano-data/src/Data/OMap/Strict.hs b/libs/cardano-data/src/Data/OMap/Strict.hs deleted file mode 100644 index fd85dd0594c..00000000000 --- a/libs/cardano-data/src/Data/OMap/Strict.hs +++ /dev/null @@ -1,425 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FunctionalDependencies #-} -{-# LANGUAGE ImportQualifiedPost #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE ViewPatterns #-} - -module Data.OMap.Strict ( - HasOKey (okeyL), - OMap (Empty, (:<|:), (:|>:)), - null, - size, - empty, - singleton, - lookup, - member, - (!?), - fromSet, - fromFoldable, - fromFoldableDuplicates, - toMap, - assocList, - toStrictSeq, - toStrictSeqOKeys, - toStrictSeqOfPairs, - invariantHolds, - invariantHolds', - (|>), - (<|), - (<||), - (||>), - (|><), - (><|), - elem, - extractKeys, - adjust, - filter, -) -where - -import Cardano.Ledger.Binary ( - DecCBOR, - EncCBOR (encCBOR), - decodeListLenOrIndef, - decodeListLikeEnforceNoDuplicates, - encodeStrictSeq, - ) -import Cardano.Ledger.Binary.Decoding (DecCBOR (decCBOR)) -import Control.DeepSeq (NFData (..)) -import Data.Aeson (ToJSON (..)) -import Data.Default.Class (Default (..)) -import Data.Foldable qualified as F -import Data.Map.Strict qualified as Map -import Data.MapExtras qualified as MapE -import Data.Maybe (isJust) -import Data.Sequence.Strict qualified as SSeq -import Data.Set qualified as Set -import Data.Typeable (Typeable) -import GHC.Exts (IsList (..)) -import GHC.Generics (Generic) -import Lens.Micro -import NoThunks.Class (NoThunks (..)) -import Prelude hiding (elem, filter, lookup, null, seq) - --- | Class of types that can be mapped by a lens or a projection to an --- Ord type. --- --- For a type @V@, defines a lens from @V@ to and Ord type @K@. -class Ord k => HasOKey k v | v -> k where - okeyL :: Lens' v k - --- | A general-purpose finite, insert-ordered, map that is strict in its --- keys and values. --- --- The strictness is enforced by the underlying strict `Map` that can --- be looked-up by a projection or lens. and the ordering is maintained --- by the constructing functions, leveraging `StrictSeq` to hold the --- insert-order of the keys. --- --- TODO: DecShareCBOR instance -data OMap k v = OMap - { omSSeq :: !(SSeq.StrictSeq k) - , omMap :: !(Map.Map k v) - } - deriving (Generic, Eq) - -instance (Show v, Ord k, Show k) => Show (OMap k v) where - show = show . toStrictSeqOfPairs - -deriving instance (NoThunks k, NoThunks v) => NoThunks (OMap k v) - -deriving instance (NFData k, NFData v) => NFData (OMap k v) - --- | \(O(1)\). -empty :: OMap k v -empty = OMap SSeq.Empty Map.empty - -instance Default (OMap k v) where - def = empty - --- | \(O(1)\). Shallow invariant using just `length` and `size`. -invariantHolds :: OMap k v -> Bool -invariantHolds (OMap sseq kv) = SSeq.length sseq == Map.size kv - --- | \(O(n \log n)\). Deep, costly invariant using membership check for each --- value. By the pigeon-hole principle, this check is exhaustive. -invariantHolds' :: Ord k => OMap k v -> Bool -invariantHolds' omap@(OMap sseq kv) = - invariantHolds omap && all (\k -> isJust $ Map.lookup k kv) sseq - --- | \(O(1)\). -null :: OMap k v -> Bool -null (OMap sseq _) = SSeq.null sseq - --- | \(O(1)\). -size :: OMap k v -> Int -size (OMap sseq _) = SSeq.length sseq - --- | \(O(1)\). Strict in its arguments. -singleton :: HasOKey k v => v -> OMap k v -singleton !v = - let k = v ^. okeyL - in OMap (SSeq.singleton k) (Map.singleton k v) - --- | \(O(\log n)\). If the key is not present 'lookup' returns --- 'Nothing'. -lookup :: Ord k => k -> OMap k v -> Maybe v -lookup k (OMap _seq kv) = Map.lookup k kv - --- | `flip`ed version of `lookup` -(!?) :: Ord k => OMap k v -> k -> Maybe v -(!?) = flip lookup - --- | \(O(\log n)\). Checks membership before cons'ing. -cons :: HasOKey k v => v -> OMap k v -> OMap k v -cons v omap@(OMap sseq kv) - | Map.member k kv = omap - | otherwise = OMap (k SSeq.<| sseq) (Map.insert k v kv) - where - k = v ^. okeyL - --- | \(O(\log n)\). Checks membership before cons'ing. -(<|) :: HasOKey k v => v -> OMap k v -> OMap k v -(<|) = cons - -infixr 5 <| - --- | \(O(\log n)\). Checks membership before cons'ing. Overwrites a --- duplicate. -cons' :: HasOKey k v => v -> OMap k v -> OMap k v -cons' v (OMap sseq kv) - | Map.member k kv = OMap sseq kv' - | otherwise = OMap (k SSeq.<| sseq) kv' - where - k = v ^. okeyL - kv' = Map.insert k v kv - --- | \(O(\log n)\). Checks membership before cons'ing. Overwrites a --- duplicate. -(<||) :: HasOKey k v => v -> OMap k v -> OMap k v -(<||) = cons' - -infixr 5 <|| - --- | \(O(\log n)\). Checks membership before snoc'ing. -snoc :: HasOKey k v => OMap k v -> v -> OMap k v -snoc omap@(OMap sseq kv) v - | Map.member k kv = omap - | otherwise = OMap (sseq SSeq.|> k) (Map.insert k v kv) - where - k = v ^. okeyL - --- | \(O(\log n)\). Checks membership before snoc'ing. -(|>) :: HasOKey k v => OMap k v -> v -> OMap k v -(|>) = snoc - -infixl 5 |> - --- | \(O(\log n)\). Checks membership before snoc'ing. Overwrites a --- duplicate. -snoc' :: HasOKey k v => OMap k v -> v -> OMap k v -snoc' (OMap sseq kv) v - | Map.member k kv = OMap sseq kv' - | otherwise = OMap (sseq SSeq.|> k) kv' - where - k = v ^. okeyL - kv' = Map.insert k v kv - --- | \(O(\log n)\). Checks membership before snoc'ing. Overwrites a --- duplicate. -(||>) :: HasOKey k v => OMap k v -> v -> OMap k v -(||>) = snoc' - -infixl 5 ||> - --- | \(O(\log n)\). -uncons :: Ord k => OMap k v -> Maybe (v, OMap k v) -uncons (OMap sseq kv) = case sseq of - SSeq.Empty -> Nothing - k SSeq.:<| ks -> - case Map.lookup k kv of - Just v -> Just (v, OMap ks (Map.delete k kv)) - Nothing -> error "Invariant falsified! In OMap, key from sequence not found in corresponding map" - --- | \(O(\log n)\). -unsnoc :: Ord k => OMap k v -> Maybe (OMap k v, v) -unsnoc (OMap sseq kv) = case sseq of - SSeq.Empty -> Nothing - ks SSeq.:|> k -> - case Map.lookup k kv of - Just v -> Just (OMap ks (Map.delete k kv), v) - Nothing -> error "Invariant falsified! In OMap, key from sequence not found in corresponding map" - --- | \(O(n \log n)\). Checks membership before snoc'ing. --- De-duplicates the StrictSeq without overwriting. --- Starts from the left or head, using `foldl'` -fromFoldable :: (Foldable f, HasOKey k v) => f v -> OMap k v -fromFoldable = F.foldl' snoc empty - --- | \(O(n \log n)\). Checks membership before snoc'ing. --- De-duplicates the StrictSeq and collects and returns the duplicates found. --- Starts from the left or head, using `foldl'` -fromFoldableDuplicates :: (Foldable f, HasOKey k v, Ord v) => f v -> (Set.Set v, OMap k v) -fromFoldableDuplicates = F.foldl' snoc_ (Set.empty, empty) - where - snoc_ :: (HasOKey k v, Ord v) => (Set.Set v, OMap k v) -> v -> (Set.Set v, OMap k v) - snoc_ (duplicates, omap@(OMap sseq kv)) v = - let k = v ^. okeyL - in if Map.member k kv - then (Set.insert v duplicates, omap) - else (duplicates, OMap (sseq SSeq.|> k) (Map.insert k v kv)) - --- | \(O(n \log n)\). -fromSet :: HasOKey k v => Set.Set v -> OMap k v -fromSet = fromFoldable - --- | \(O(1)\). -toMap :: OMap k v -> Map.Map k v -toMap = omMap - --- | \(O(n \log n)\). -toStrictSeq :: Ord k => OMap k v -> SSeq.StrictSeq v -toStrictSeq (OMap sseq kv) = sseq <&> \k -> let !v = kv Map.! k in v - --- | \(O(1)\). -toStrictSeqOKeys :: OMap k v -> SSeq.StrictSeq k -toStrictSeqOKeys = omSSeq - --- | \(O(n \log n)\). -toStrictSeqOfPairs :: Ord k => OMap k v -> SSeq.StrictSeq (k, v) -toStrictSeqOfPairs (OMap sseq kv) = sseq <&> \k -> let !v = kv Map.! k in (k, v) - --- | \(O(\log n)\). Key membership check. -member :: Ord k => k -> OMap k v -> Bool -member k (OMap _sseq kv) = Map.member k kv - --- | \(O(\log n)\). Value membership check. -elem :: (HasOKey k v, Eq v) => v -> OMap k v -> Bool -elem v = (Just v ==) . lookup (v ^. okeyL) - --- | \(O(n)\). Given a `Set` of @k@s, and an `OMap` @k@ @v@ return --- a pair of `Map` and `OMap` where the @k@s in the `Set` have been --- removed from the `OMap` and presented as a separate `Map`. -extractKeys :: Ord k => Set.Set k -> OMap k v -> (OMap k v, Map.Map k v) -extractKeys ks (OMap sseq kv) = - let (kv', extractedKv) = MapE.extractKeys kv ks - sseq' = - F.foldl' - (\accum k -> if Set.member k ks then accum else accum SSeq.|> k) - SSeq.empty - sseq - in (OMap sseq' kv', extractedKv) - --- | \(O(n)\). Like `Map.adjust`. --- --- Returns the original `OMap` unaltered when the key does not exist. --- --- If the key exists, then the function is applied to the value, but we need to consider --- three possible cases: --- --- 1. The modified value's `okeyL` is unaltered --- - we return omap with the adjusted value, --- 2. The modified value's `okeyL` is altered, but not a duplicate --- - we return the omap with adjusted key (in place) and value --- 3. The modified value's `okeyL` is altered and is a duplicate --- - we return the omap with the old key deleted from the sequence but --- without inserting the new key since it is a duplicate, and --- deleting old value and inserting the new value in place of its duplicate. --- --- Examples: --- --- >>> import Data.OMap.Strict --- >>> import Lens.Micro --- >>> instance HasOKey Int (Int, Char) where okeyL = _1 --- >>> let m = fromFoldable $ zip [1,2] ['a','b'] :: OMap Int (Int, Char) --- >>> m --- StrictSeq {fromStrict = fromList [(1,(1,'a')),(2,(2,'b'))]} --- >>> let adjustingFn (k, v) = (k, succ v) -- Changes the value --- >>> let overwritingAdjustingFn (k,v) = (succ k, v) -- Changes the `okeyL`. --- >>> adjust adjustingFn 1 m --- StrictSeq {fromStrict = fromList [(1,(1,'b')),(2,(2,'b'))]} --- >>> adjust overwritingAdjustingFn 1 m --- StrictSeq {fromStrict = fromList [(2,(2,'a'))]} -adjust :: HasOKey k v => (v -> v) -> k -> OMap k v -> OMap k v -adjust f k omap@(OMap sseq kv) = - case Map.lookup k kv of - Nothing -> omap - Just v -> - let v' = f v - k' = v' ^. okeyL - in if k' == k - then OMap sseq (Map.insert k v' kv) - else - let kv' = Map.insert k' v' $ Map.delete k kv - (lseq, rseq) = case SSeq.spanl (/= k) sseq of - (l, _ SSeq.:<| r) -> (l, r) - _ -> error "Impossible: supplied key expected to be in the sequence" - in case Map.lookup k' kv of - Nothing -> OMap (lseq <> (k' SSeq.:<| rseq)) kv' - Just _ -> OMap (lseq <> rseq) kv' - --- | \(O(1)\) -pattern Empty :: OMap k v -pattern Empty <- (null -> True) - where - Empty = empty - --- | \(O(\log n)\). -pattern (:<|:) :: (HasOKey k v, Ord k) => v -> OMap k v -> OMap k v -pattern x :<|: xs <- (uncons -> Just (x, xs)) - where - x :<|: xs = x <| xs - -infixr 5 :<|: - --- | \(O(\log n)\). -pattern (:|>:) :: (HasOKey k v, Ord k) => OMap k v -> v -> OMap k v -pattern xs :|>: x <- (unsnoc -> Just (xs, x)) - where - xs :|>: x = xs |> x - -infixl 5 :|>: - -{-# COMPLETE Empty, (:|>:) #-} -{-# COMPLETE Empty, (:<|:) #-} - --- | \( O(n \log m) \). For every uncons-ed element from the sequence on the right, --- check its membership in the sequence on the left, before snoc'ing it. --- Preserve order. Remove duplicates from sequence on the right. -(|><) :: HasOKey k v => OMap k v -> OMap k v -> OMap k v -omapl |>< omapr = case omapr of - Empty -> omapl - r :<|: rs -> (omapl |> r) |>< rs - -infixl 5 |>< - --- | \( O(m \log n) \). For every unsnoc-ed element from the sequence on the left, --- check its membership in the sequence on the right, before cons'ing it. --- Preserve order. Remove duplicates from sequence on the left. -(><|) :: HasOKey k v => OMap k v -> OMap k v -> OMap k v -omapl ><| omapr = case omapl of - Empty -> omapr - ls :|>: l -> ls ><| (l <| omapr) - -infixr 5 ><| - -instance HasOKey k v => IsList (OMap k v) where - type Item (OMap k v) = v - fromList = fromFoldable - toList = F.toList - -assocList :: OMap k v -> [(k, v)] -assocList = Map.toList . toMap - -instance (HasOKey k v, ToJSON v) => ToJSON (OMap k v) where - toJSON = toJSON . toStrictSeq - toEncoding = toEncoding . toStrictSeq - -instance HasOKey k v => Semigroup (OMap k v) where - (<>) = (|><) - -instance HasOKey k v => Monoid (OMap k v) where - mempty = empty - -instance Ord k => Foldable (OMap k) where - foldMap f (OMap sseq kv) = F.foldMap (\k -> f (kv Map.! k)) sseq - {-# INLINEABLE foldMap #-} - foldr f z (OMap sseq kv) = F.foldr (\k -> f (kv Map.! k)) z sseq - {-# INLINEABLE foldr #-} - foldl f z (OMap sseq kv) = F.foldl (\acc k -> f acc (kv Map.! k)) z sseq - {-# INLINEABLE foldl #-} - foldr' f z (OMap sseq kv) = F.foldr' (\k -> f (kv Map.! k)) z sseq - {-# INLINEABLE foldr' #-} - foldl' f z (OMap sseq kv) = F.foldl' (\acc k -> f acc (kv Map.! k)) z sseq - {-# INLINEABLE foldl' #-} - length = Map.size . omMap - {-# INLINE length #-} - null = Map.null . omMap - {-# INLINE null #-} - -instance (Typeable k, EncCBOR v, Ord k) => EncCBOR (OMap k v) where - encCBOR omap = encodeStrictSeq encCBOR (toStrictSeq omap) - -instance (Typeable k, HasOKey k v, DecCBOR v, Eq v) => DecCBOR (OMap k v) where - decCBOR = - decodeListLikeEnforceNoDuplicates - decodeListLenOrIndef - (flip snoc) - (\omap -> (size omap, omap)) - decCBOR - --- | \( O(n \log n) \) -filter :: Ord k => (v -> Bool) -> OMap k v -> OMap k v -filter f (OMap sseq kv) = - let kv' = Map.filter f kv - sseq' = - F.foldl' (\accum k -> if Map.member k kv' then accum SSeq.:|> k else accum) SSeq.empty sseq - in OMap sseq' kv' diff --git a/libs/cardano-data/src/Data/OSet/Strict.hs b/libs/cardano-data/src/Data/OSet/Strict.hs deleted file mode 100644 index 851654ecf3c..00000000000 --- a/libs/cardano-data/src/Data/OSet/Strict.hs +++ /dev/null @@ -1,280 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE ImportQualifiedPost #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE ViewPatterns #-} - -module Data.OSet.Strict ( - OSet (Empty, (:<|:), (:|>:)), - null, - size, - empty, - singleton, - lookup, - member, - (!?), - fromList, - fromStrictSeq, - fromStrictSeqDuplicates, - toStrictSeq, - toSet, - fromSet, - fromFoldable, - fromFoldableDuplicates, - invariantHolds, - invariantHolds', - (|>), - (<|), - (|><), - (><|), - filter, -) -where - -import Cardano.Ledger.Binary ( - DecCBOR (decCBOR), - EncCBOR (encCBOR), - decodeSetLikeEnforceNoDuplicates, - encodeStrictSeq, - encodeTag, - setTag, - ) -import Control.DeepSeq (NFData) -import Data.Aeson (ToJSON (toJSON)) -import Data.Foldable qualified as F -import Data.Sequence.Strict qualified as SSeq -import Data.Set qualified as Set -import GHC.Exts qualified as GHC (IsList (..)) -import GHC.Generics (Generic) -import NoThunks.Class (NoThunks) -import Prelude hiding (filter, lookup, null, seq) - --- | A general-purpose finite, ordered, set that is strict in its --- values. --- --- The strictness is enforced by the underlying `StrictSeq` from base, --- and the uniqueness of the values is enforced in this module, by the --- constructing functions by leveraging an accompanying `Set`. --- --- TODO: @aniketd Implement DecShareCBOR -data OSet a = OSet - { osSSeq :: !(SSeq.StrictSeq a) - , osSet :: !(Set.Set a) - } - deriving stock (Eq, Ord, Show, Generic) - deriving (NoThunks, NFData) - -instance Ord a => Semigroup (OSet a) where - (<>) = (|><) - -instance Ord a => Monoid (OSet a) where - mempty = empty - -instance Ord a => GHC.IsList (OSet a) where - type Item (OSet a) = a - fromList = fromList - toList = F.toList . osSSeq - -instance Foldable OSet where - foldMap f = F.foldMap f . SSeq.fromStrict . osSSeq - {-# INLINEABLE foldMap #-} - foldr f z = F.foldr f z . SSeq.fromStrict . osSSeq - {-# INLINEABLE foldr #-} - foldl f z = F.foldl f z . SSeq.fromStrict . osSSeq - {-# INLINEABLE foldl #-} - foldr' f z = F.foldr' f z . SSeq.fromStrict . osSSeq - {-# INLINEABLE foldr' #-} - foldl' f z = F.foldl' f z . SSeq.fromStrict . osSSeq - {-# INLINEABLE foldl' #-} - foldr1 f = F.foldr1 f . SSeq.fromStrict . osSSeq - {-# INLINEABLE foldr1 #-} - foldl1 f = F.foldl1 f . SSeq.fromStrict . osSSeq - {-# INLINEABLE foldl1 #-} - length = F.length . SSeq.fromStrict . osSSeq - {-# INLINE length #-} - null = F.null . SSeq.fromStrict . osSSeq - {-# INLINE null #-} - -instance EncCBOR a => EncCBOR (OSet a) where - encCBOR (OSet seq _set) = encodeTag setTag <> encodeStrictSeq encCBOR seq - -instance (Show a, Ord a, DecCBOR a) => DecCBOR (OSet a) where - decCBOR = decodeSetLikeEnforceNoDuplicates (flip snoc) (\oset -> (size oset, oset)) decCBOR - -instance ToJSON a => ToJSON (OSet a) where - toJSON = toJSON . F.toList - --- | \( O(1) \). Shallow invariant using just `length` and `size`. -invariantHolds :: OSet a -> Bool -invariantHolds (OSet seq set) = SSeq.length seq == Set.size set - --- | \( O(n \log n) \). Deep invariant using set membership check for --- each value. By the pigeon-hole principle, this check is exhaustive. -invariantHolds' :: Ord a => OSet a -> Bool -invariantHolds' oset@(OSet seq set) = - invariantHolds oset && all (`Set.member` set) (SSeq.fromStrict seq) - --- | \( O(1) \). -null :: OSet a -> Bool -null (OSet _ set) = Set.null set - --- | \( O(1) \). -size :: OSet a -> Int -size (OSet _ set) = Set.size set - --- | \( O(1) \). -empty :: OSet a -empty = OSet SSeq.Empty Set.empty - --- | \( O(1) \). Strict in its argument. -singleton :: a -> OSet a -singleton !x = OSet (SSeq.singleton x) (Set.singleton x) - --- | \( O(\log(\min(i,n-i))) \). The element at the specified position, --- counting from 0. If the specified position is negative or at least --- the length of the sequence, 'lookup' returns 'Nothing'. -lookup :: Int -> OSet a -> Maybe a -lookup i (OSet seq _set) = SSeq.lookup i seq - --- | `flip`ed version of `lookup` -(!?) :: OSet a -> Int -> Maybe a -(!?) = flip lookup - --- | \( O(\log n) \). Checks membership before cons'ing. -cons :: Ord a => a -> OSet a -> OSet a -cons x oset@(OSet seq set) = - if x `Set.member` set - then oset - else OSet (x SSeq.<| seq) (x `Set.insert` set) - -(<|) :: Ord a => a -> OSet a -> OSet a -(<|) = cons - -infixr 5 <| - --- | \( O(\log n) \). Checks membership before snoc'ing. -snoc :: Ord a => OSet a -> a -> OSet a -snoc oset@(OSet seq set) x = - if x `Set.member` set - then oset - else OSet (seq SSeq.|> x) (x `Set.insert` set) - -(|>) :: Ord a => OSet a -> a -> OSet a -(|>) = snoc - -infixl 5 |> - --- | \( O(\log n) \). -uncons :: Ord a => OSet a -> Maybe (a, OSet a) -uncons (OSet seq set) = case seq of - SSeq.Empty -> Nothing - x SSeq.:<| xs' -> Just (x, OSet xs' (x `Set.delete` set)) - --- | \( O(\log n) \). -unsnoc :: Ord a => OSet a -> Maybe (OSet a, a) -unsnoc (OSet seq set) = case seq of - SSeq.Empty -> Nothing - xs' SSeq.:|> x -> Just (OSet xs' (x `Set.delete` set), x) - --- | \(O(n \log n)\). Convert to an OSet from a List. -fromList :: Ord a => [a] -> OSet a -fromList = fromFoldable - --- | Using a `Foldable` instance of the source data structure convert it to an `OSet` -fromFoldable :: (Foldable f, Ord a) => f a -> OSet a -fromFoldable = F.foldl' snoc empty - --- | \(O(n \log n)\). Checks membership before snoc-ing. --- De-duplicates the StrictSeq without overwriting. -fromStrictSeq :: Ord a => SSeq.StrictSeq a -> OSet a -fromStrictSeq = fromFoldable - --- | \(O(n \log n)\). Checks membership before snoc-ing. --- Returns a 2-tuple, with `fst` as a `Set` of duplicates found --- and the `snd` as the de-duplicated `OSet` without overwriting. -fromFoldableDuplicates :: (Foldable f, Ord a) => f a -> (Set.Set a, OSet a) -fromFoldableDuplicates = F.foldl' snoc' (Set.empty, empty) - where - snoc' :: Ord a => (Set.Set a, OSet a) -> a -> (Set.Set a, OSet a) - snoc' (!duplicates, !oset@(OSet seq set)) x = - if x `Set.member` set - then (x `Set.insert` duplicates, oset) - else (duplicates, OSet (seq SSeq.|> x) (x `Set.insert` set)) - --- | \(O(n \log n)\). Checks membership before snoc-ing. --- Returns a 2-tuple, with `fst` as a `Set` of duplicates found --- and the `snd` as the de-duplicated `OSet` without overwriting. --- Starts from the left or head, using `foldl'` -fromStrictSeqDuplicates :: Ord a => SSeq.StrictSeq a -> (Set.Set a, OSet a) -fromStrictSeqDuplicates = fromFoldableDuplicates - --- | \( O(1) \) - Extract underlying strict sequence -toStrictSeq :: OSet a -> SSeq.StrictSeq a -toStrictSeq = osSSeq - --- | \( O(1) \) - Extract underlying Set -toSet :: OSet a -> Set.Set a -toSet = osSet - --- | \( O(n) \). -fromSet :: Set.Set a -> OSet a -fromSet set = OSet (SSeq.fromList $ Set.elems set) set - --- | \(O(\log n)\). Membership check. -member :: Ord a => a -> OSet a -> Bool -member x (OSet _seq set) = x `Set.member` set - --- | \( O(n \log n) \) -filter :: Ord a => (a -> Bool) -> OSet a -> OSet a -filter f = F.foldl' (\xs x -> if f x then xs |> x else xs) empty - -pattern Empty :: OSet a -pattern Empty <- (null -> True) - where - Empty = empty - --- | \(O(\log n)\). -pattern (:<|:) :: Ord a => a -> OSet a -> OSet a -pattern x :<|: xs <- (uncons -> Just (x, xs)) - where - x :<|: xs = x <| xs - -infixr 5 :<|: - --- | \(O(\log n)\). -pattern (:|>:) :: Ord a => OSet a -> a -> OSet a -pattern xs :|>: x <- (unsnoc -> Just (xs, x)) - where - xs :|>: x = xs |> x - -infixl 5 :|>: - -{-# COMPLETE Empty, (:|>:) #-} -{-# COMPLETE Empty, (:<|:) #-} - --- | \( O(n\log(m*n)) \). For every uncons-ed element from the sequence on the right, --- checks its membership in the sequence on the left, before snoc'ing it. --- Preserves order. Remove duplicates from sequence on the right. -(|><) :: Ord a => OSet a -> OSet a -> OSet a -osetl |>< osetr = case osetr of - Empty -> osetl - r :<|: rs -> (osetl |> r) |>< rs - -infixl 5 |>< - --- | \( O(m\log(m+n)) \). For every unsnoc-ed element from the sequence on the left, --- checks its membership in the sequence on the right, before cons'ing it. --- Preserves order. Remove duplicates from sequence on the left. -(><|) :: Ord a => OSet a -> OSet a -> OSet a -osetl ><| osetr = case osetl of - Empty -> osetr - ls :|>: l -> ls ><| (l <| osetr) - -infixr 5 ><| diff --git a/libs/cardano-data/src/Data/Pulse.hs b/libs/cardano-data/src/Data/Pulse.hs deleted file mode 100644 index dcb6ca52ecb..00000000000 --- a/libs/cardano-data/src/Data/Pulse.hs +++ /dev/null @@ -1,173 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE FunctionalDependencies #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE TypeSynonymInstances #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE ViewPatterns #-} - -module Data.Pulse ( - -- * The class that defines operations on pulsers. - Pulsable (..), - - -- * Two reusable types that have Pulsable instances - PulseMapM (..), - PulseListM (..), - - -- * Virtual versions of PulseMapM and PulseListM specialized to be non-monadic. - PulseMap, - PulseList, - pulseList, - pulseMap, - pulse, - complete, - - -- * Monadic folds designed to be used inside pulsers. - foldlM', - foldlWithKeyM', -) -where - -import Control.Monad.Identity (Identity (..)) -import qualified Data.Foldable as Foldable -import Data.Kind -import qualified Data.List as List -import Data.Map (Map) -import Data.Map.Internal (Map (..)) -import qualified Data.Map.Strict as Map - --- ==================================================== - --- | let T be a Pulse structure. A Pulse struture --- is abstracted over a monad: m, and an answer type: t, --- so the concrete type of a pulse structure is written: (T m a). --- The Pulsable class supplies operations on the structure --- that allow its computation to be split into many discrete --- steps. One does this by running: "pulse p" or "pulseM p", --- depending upon whether the computation is monadic or not, --- to run a discrete step. The scheduling infrastructure needs --- to know nothing about what is going on inside the pulse structure. -class Pulsable (pulse :: (Type -> Type) -> Type -> Type) where - done :: pulse m ans -> Bool - current :: pulse m ans -> ans - pulseM :: Monad m => pulse m ans -> m (pulse m ans) - completeM :: Monad m => pulse m ans -> m ans - completeM p = - if done p - then pure (current p) - else do p' <- pulseM p; completeM p' - --- ================================= --- Pulse structure for List in an arbitray monad - --- | A List based pulser -data PulseListM m ans where - PulseList :: !Int -> !(ans -> a -> m ans) -> ![a] -> !ans -> PulseListM m ans - -instance Show ans => Show (PulseListM m ans) where - show (PulseList n _ t a) = "(Pulse " ++ show n ++ status t ++ show a ++ ")" - -status :: [a] -> String -status x = if null x then " Done " else " More " - --- ================================= --- Pulse structure for Map in an arbitray monad - --- | A Map based pulser. -data PulseMapM m ans where - PulseMap :: !Int -> !(ans -> k -> v -> m ans) -> !(Map k v) -> !ans -> PulseMapM m ans - -instance Show ans => Show (PulseMapM m ans) where - show (PulseMap n _ t a) = - "(Pulse " ++ show n ++ (if Map.null t then " Done " else " More ") ++ show a ++ ")" - --- =============================================================== --- Pulse structures can be Specialize to the Identity Monad - --- | Type of a List based pulser in the Identity monad. -type PulseList ans = PulseListM Identity ans - --- | Type of a Map based pulser in the Identity monad. -type PulseMap ans = PulseListM Identity ans - --- Use these 'pseudo constructors' to construct Pulse structures in --- the identity monad. They automatically lift the accumulating function - --- | Create List pulser structure in the Identity monad, a pure accumulator is lifted to a monadic one. -pulseList :: Int -> (t1 -> t2 -> t1) -> [t2] -> t1 -> PulseListM Identity t1 -pulseList n accum xs zero = - PulseList n (\ans x -> Identity (accum ans x)) xs zero - --- | Create Map pulser structure in the Identity monad, a pure accumulator is lifted to a monadic one. -pulseMap :: Int -> (a -> k -> v -> a) -> Map k v -> a -> PulseMapM Identity a -pulseMap n accum ts zero = PulseMap n (\ans k v -> Identity (accum ans k v)) ts zero - --- run Pulse structures in the Identity monad. - --- | Pulse a structure in the Identity monad -pulse :: Pulsable p => p Identity ans -> p Identity ans -pulse p = runIdentity (pulseM p) - --- | Complete a structure in the Identity monad -complete :: Pulsable p => p Identity ans -> ans -complete p = runIdentity (completeM p) - --- ================================================= --- Some instances - -instance Pulsable PulseListM where - done (PulseList _ _ zs _) = null zs - current (PulseList _ _ _ ans) = ans - pulseM (ll@(PulseList _ _ balance _)) | null balance = pure ll - pulseM (PulseList n accum balance ans) = do - let (steps, balance') = List.splitAt n balance - ans' <- foldlM' accum ans steps - pure (PulseList n accum balance' ans') - completeM (PulseList _ accum balance ans) = foldlM' accum ans balance - -instance Pulsable PulseMapM where - done (PulseMap _ _ m _) = Map.null m - current (PulseMap _ _ _ ans) = ans - pulseM (ll@(PulseMap _ _ balance _)) | Map.null balance = pure ll - pulseM (PulseMap n accum balance ans) = do - let (steps, balance') = Map.splitAt n balance - ans' <- foldlWithKeyM' accum ans steps - pure (PulseMap n accum balance' ans') - --- ================================================================ --- Special monadic folds for use with PulseListM and PulseMapM --- They are strict, monadic, and their arguments are in the right order. --- These functions should appear somewhere in Data.List or Data.List or --- Data.Foldable or Data.Traversable, or Control.Monad, but they don't. - --- | A strict, monadic, version of 'foldl'. It associates to the left. -foldlM' :: (Foldable t, Monad m) => (ans -> k -> m ans) -> ans -> t k -> m ans -foldlM' accum !ans acc = case Foldable.toList acc of - [] -> pure ans - (k : more) -> do ans1 <- accum ans k; foldlM' accum ans1 more - --- | /O(n)/. A strict, monadic, version of 'foldlWithKey'. Each application of the --- operator is evaluated before using the result in the next application. This --- function is strict in the starting value. Associates to the left. -foldlWithKeyM' :: Monad m => (a -> k -> b -> m a) -> a -> Map k b -> m a -foldlWithKeyM' f z = go z - where - go !z' Tip = pure z' - go z' (Bin _ kx x l r) = - do - !ans1 <- (go z' l) - !ans2 <- (f ans1 kx x) - go ans2 r - --- =================================== --- We could probably generalise this to PulseFoldableM over any --- foldable structure. We would have to devise a way to break a Foldable --- structure into small pieces. Lets leave this to another day. diff --git a/libs/cardano-data/src/Data/Universe.hs b/libs/cardano-data/src/Data/Universe.hs deleted file mode 100644 index 9f319ae2ec5..00000000000 --- a/libs/cardano-data/src/Data/Universe.hs +++ /dev/null @@ -1,214 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE CPP #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE ImpredicativeTypes #-} -{-# LANGUAGE KindSignatures #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE QuantifiedConstraints #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} - --- | The idea is to create a world of Haskell types, called a Universe. Then to --- define a 'class' whose methods are only applicable to that set of types. We define --- a closed set by defining an indexed type constructor Rep. If (Singleton Rep), then it must --- be that every value of type (Rep t) has exactly 0 or 1 inhabitants. (Rep t) has exactly --- 1 inhabitant if 't' is in the universe, and 0 inhabitants if it is not in the universe. --- A closely related class is (Indexed s t). We would like a total ordering on (t i) and (t j), --- where the indices, i and j, are different. We do this by ensuring every value of type (t i) --- has a unique Shape, and that the type Shape has a total order. Every closed singleton can --- be totally ordered this way. Other indexed types are used to make well-type terms. I.e. --- Indexed s t => Exp t, denotes a Haskell data type Exp, related to the type t. --- Note, unlike singletons, there may not be a unique value of type (Exp t), but there may be --- a unique Shape for every value. -module Data.Universe ( - Shaped (..), - Singleton (..), - Universe (..), - Any (..), - Some (..), - Dyn (..), - Shape (..), - Eql, - (:~:) (Refl), - TypeRep, - compareByShape, -) -where - -import Data.Kind (Type) -import Data.Type.Equality (TestEquality (..), (:~:) (Refl)) -#if __GLASGOW_HASKELL__ < 906 -import Type.Reflection (TypeRep, pattern App, pattern Con, pattern Fun) -#else --- Ghc-9.6 removed the Fun constructor. -import Type.Reflection (TypeRep, pattern App, pattern Con) -#endif - --- ================================================== - --- | Type synonym, so we can use ( :~: ) without TypeOperators -type Eql x y = x :~: y - --- | Given (Singleton T), a value of type (T i) has exactly 0 or 1 inhabitants, --- so we can compare the structure of the type to get proofs that the indexes (i and j) --- are the same type, using testEql, at runtime. 'cmpIndex', it is like 'compare' --- except we can have two different indexes ('a' and 'b'). -class Singleton t where - testEql :: t i -> t j -> Maybe (i :~: j) - cmpIndex :: t a -> t b -> Ordering - --- | For some indexed types, we can assign a unique Shape to each type, --- using: 'shape' :: t i -> Shape s (where s is some Singleton type) --- the class (Shaped t s) means we can assign a unique Shape to each --- value of type (t i). Not quite as strong as having a unique inhabitant. --- Every closed singleton type can be shaped, and many other indexed types --- can be shaped as well. -class Shaped t rep where - shape :: t i -> Shape rep - --- | Order two indexed types by their Shape. This is usefull for making (Singleton t) --- instances when we have (Shaped t r) instances, as cmpIndex can be compareByShape. -compareByShape :: - forall (rep :: Type -> Type) (t :: Type -> Type) (i :: Type) (j :: Type). - Shaped t rep => - t i -> - t j -> - Ordering -compareByShape x y = compare (shape @t @rep x) (shape @t @rep y) - --- | A minimal class of operations defined on the universe described by 'rep' . --- Feel free to make your own Universe classes with additional methods -class Singleton rep => Universe rep t where - repOf :: rep t - --- ====================================================================== --- A number of types that existentially quantify (i.e. hide) a type index --- Each one adding more detail, so that the types can do more - --- | Hide the index for any indexed type 't' -data Any t where - Any :: t i -> Any t - -deriving instance (forall i. Show (t i)) => Show (Any t) - --- | Hide the index for a singleton type 't' -data Some t where - Some :: Singleton t => t i -> Some t - -data Dyn rep where - Dyn :: Singleton t => t i -> i -> Dyn t - --- ============================================================================== - --- A Shape is a mechanism to define Ord instances for (Some R) where R is an indexed type. --- Let R be an indexed type, so we have values of types like (R Int), (R [Bool]) etc. We --- exploit the fact that some indexed types have a unique Shape for every value of type (R i). --- We assign this unique Shape using : shape:: R t -> Shape x. -data Shape rep where - Nullary :: Int -> Shape rep - Nary :: Int -> [Shape rep] -> Shape rep - Esc :: (Singleton rep, Ord t) => rep t -> t -> Shape rep - -instance Ord (Shape rep) where - compare (Nullary i) (Nullary j) = compare i j - compare (Nullary _) _ = LT - compare _ (Nullary _) = GT - compare (Nary n xs) (Nary m ys) = compare (n, xs) (m, ys) - compare (Nary _ _) _ = LT - compare _ (Nary _ _) = GT - compare (Esc r1 t1) (Esc r2 t2) = - case testEql r1 r2 of - Just Refl -> compare t1 t2 - Nothing -> cmpIndex r1 r2 - -instance Eq (Shape rep) where - a == b = compare a b == EQ - --- ============================================================= --- Every Singleton type 'r' has Eq(Some r) and Ord(Some r) instances - -instance Ord (Some r) where - compare (Some x) (Some y) = cmpIndex x y - -instance Eq (Some r) where - (Some x) == (Some y) = cmpIndex x y == EQ - --- A strategy for defining Eq and Ord instances for (Any t) if it is Shaped --- We don't actually make these instances, because there are other strategies --- we don't want to preclude. But just replace 't' with an indexed type 'R' --- and supply the (Shaped R TypeRep) instance. Actually any concrete singleton --- type Rep, can be used in place of TypeRep, as well. -{- -instance Shaped t TypeRep => Eq (Any t) where - (Any x) == (Any y) = compare @(Shape _) (shape @t @TypeRep x) (shape @t @TypeRep y) == EQ - -instance Shaped t TypeRep => Ord (Any t) where - compare (Any x) (Any y) = compare @(Shape _) (shape @t @TypeRep x) (shape @t @TypeRep y) --} - --- ======================================================= -{- Now we have two ways to make Ord instances for (Some R). -1) if R has a (Singleton R) instance we write - -instance Singleton t => Ord (Some t) where - compare (Some x) (Some y) = cmpIndex @t x y -instance Singleton t => Eq (Some t) where - x == y = compare x y == EQ - -2) if R has a (Shaped R rep) instance we write - -instance (forall rep . Shaped t rep) => Ord (Some t) where - compare (Some x) (Some y) = compare (shape @t x) (shape @t y) -instance (forall rep. Shaped t rep) => Eq (Some t) where - x == y = compare x y == EQ --} - --- ============================================================= --- An open Singleton type from Type.Reflection(TypeRep) - -compareTypeRep :: TypeRep a -> TypeRep b -> Ordering -compareTypeRep (Con x) (Con y) = compare x y -compareTypeRep (Con _) _ = LT -compareTypeRep _ (Con _) = GT -compareTypeRep (App x a) (App y b) = - case compareTypeRep x y of - EQ -> compareTypeRep a b - other -> other -#if __GLASGOW_HASKELL__ < 906 --- Ghc-9.6 removed the Fun constructor making these redundant. -compareTypeRep (App _ _) _ = LT -compareTypeRep _ (App _ _) = GT -compareTypeRep (Fun x a) (Fun y b) = - case compareTypeRep x y of - EQ -> compareTypeRep a b - other -> other -#endif - -instance Singleton TypeRep where - testEql = testEquality - cmpIndex = compareTypeRep - --- ============================================================= --- A very simple closed Singleton type - -data R t where - IntR :: R Int - BoolR :: R Bool - -instance Shaped R any where - shape IntR = Nullary 0 - shape BoolR = Nullary 1 - -instance Singleton R where - testEql IntR IntR = Just Refl - testEql BoolR BoolR = Just Refl - testEql _ _ = Nothing - cmpIndex x y = compare @(Shape TypeRep) (shape @R x) (shape @R y) diff --git a/libs/cardano-data/test/Main.hs b/libs/cardano-data/test/Main.hs deleted file mode 100644 index fba967d054f..00000000000 --- a/libs/cardano-data/test/Main.hs +++ /dev/null @@ -1,36 +0,0 @@ -{-# LANGUAGE ImportQualifiedPost #-} - -module Main where - -import System.IO ( - BufferMode (LineBuffering), - hSetBuffering, - hSetEncoding, - stdout, - utf8, - ) -import Test.Cardano.Data.MapExtrasSpec (mapExtrasSpec) -import Test.Cardano.Data.OMap.StrictSpec qualified as OMap -import Test.Cardano.Data.OSet.StrictSpec qualified as OSet -import Test.Hspec -import Test.Hspec.Runner - -conf :: Config -conf = - defaultConfig - { configTimes = True - , configColorMode = ColorAlways - } - -spec :: Spec -spec = - describe "cardano-data" $ do - describe "MapExtras" mapExtrasSpec - describe "OSet.Strict" OSet.spec - describe "OMap.Strict" OMap.spec - -main :: IO () -main = do - hSetBuffering stdout LineBuffering - hSetEncoding stdout utf8 - hspecWith conf spec diff --git a/libs/cardano-data/test/Test/Cardano/Data/MapExtrasSpec.hs b/libs/cardano-data/test/Test/Cardano/Data/MapExtrasSpec.hs deleted file mode 100644 index ea02185e2b2..00000000000 --- a/libs/cardano-data/test/Test/Cardano/Data/MapExtrasSpec.hs +++ /dev/null @@ -1,41 +0,0 @@ -{-# LANGUAGE ScopedTypeVariables #-} - -module Test.Cardano.Data.MapExtrasSpec (mapExtrasSpec) where - -import Control.Monad -import Data.Map (Map) -import qualified Data.Map.Strict as Map -import Data.MapExtras -import Test.Cardano.Data -import Test.Hspec -import Test.Hspec.QuickCheck -import Test.QuickCheck - -mapExtrasSpec :: Spec -mapExtrasSpec = - describe "MapExtras" $ do - prop "extract k m === (lookup k m, delete k m)" $ \(m :: Map Int Float) k -> do - let (v, ma) = extract k m - expectValidMap ma - ma `shouldBe` Map.delete k m - v `shouldBe` Map.lookup k m - prop "extractKeys m s === (withoutKeys m s, restrictKeys m s)" $ \(m :: Map Int Float) s -> do - let (wk, rk) = extractKeys m s - expectValidMap wk - expectValidMap rk - wk `shouldBe` Map.withoutKeys m s - rk `shouldBe` Map.restrictKeys m s - prop "noKeys == withoutKeys" $ \(m1 :: Map Int Float) (m2 :: Map Int Char) -> do - let nk = noKeys m1 m2 - expectValidMap nk - nk `shouldBe` Map.withoutKeys m1 (Map.keysSet m2) - prop "intersectDomP" $ \fun (m1 :: Map Int Char) (m2 :: Map Int Word) -> do - let f = applyFun2 fun :: Int -> Word -> Bool - ma = intersectDomP f m1 m2 - expectValidMap ma - ma `shouldBe` Map.filterWithKey f (Map.intersection m2 m1) - prop "intersectDomPLeft" $ \fun (m1 :: Map Int Char) (m2 :: Map Int Word) -> do - let f = applyFun2 fun :: Int -> Word -> Bool - ma = intersectDomPLeft f m1 m2 - expectValidMap ma - ma `shouldBe` Map.mapMaybeWithKey (\k v -> v <$ (guard . f k =<< Map.lookup k m2)) m1 diff --git a/libs/cardano-data/test/Test/Cardano/Data/OMap/StrictSpec.hs b/libs/cardano-data/test/Test/Cardano/Data/OMap/StrictSpec.hs deleted file mode 100644 index e9cd9ca85ec..00000000000 --- a/libs/cardano-data/test/Test/Cardano/Data/OMap/StrictSpec.hs +++ /dev/null @@ -1,168 +0,0 @@ -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE ImportQualifiedPost #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Data.OMap.StrictSpec where - -import Data.OMap.Strict -import Data.Proxy (Proxy (Proxy)) -import Data.Sequence.Strict qualified as SSeq -import Data.Set qualified as Set -import Lens.Micro hiding (set) -import Test.Cardano.Data.Arbitrary () -import Test.Cardano.Ledger.Binary.RoundTrip (roundTripCborSpec) -import Test.Hspec -import Test.Hspec.QuickCheck -import Test.QuickCheck (Arbitrary) -import Test.QuickCheck.Arbitrary (Arbitrary (arbitrary)) -import Test.QuickCheck.Classes -import Prelude hiding (elem, filter, lookup, null) - -spec :: Spec -spec = - describe "OMap.Strict" $ do - context "membership checks work" $ do - prop "unconsed" $ - \(m :: OMap Int Int) -> case m of - Empty -> pure () - v :<|: _kv -> v ^. okeyL `shouldSatisfy` (`member` m) - prop "unsnoced" $ - \(m :: OMap Int Int) -> case m of - Empty -> pure () - _kv :|>: v -> v ^. okeyL `shouldSatisfy` (`member` m) - context "when cons-ing" $ do - prop "adding a duplicate results in a no-op" $ - \(m :: OMap Int Int) -> do - case m of - Empty -> pure () - v :<|: _kv -> m `shouldBe` v <| m - case m of - Empty -> pure () - _kv :|>: v -> m `shouldBe` v <| m - prop "new values get added" $ - \((m, v) :: (OMap Int Int, Int)) -> - if v `elem` m - then v <| m `shouldBe` m - else v <| m `shouldBe` v :<|: m - context "when snoc-ing" $ do - prop "adding a duplicate results in a no-op" $ - \(m :: OMap Int Int) -> do - case m of - Empty -> pure () - v :<|: _kv -> m `shouldBe` m |> v - case m of - Empty -> pure () - _kv :|>: v -> m `shouldBe` m |> v - prop "new values get added" $ - \((m, v) :: (OMap Int Int, Int)) -> - if v `elem` m - then m |> v `shouldBe` m - else m |> v `shouldBe` m :|>: v - context "mappend preserves uniqueness" $ do - prop "mappending with itself should be a no-op" $ - \(i :: OMap Int Int) -> do - let il = i |>< i - ir = i ><| i - il `shouldBe` i - ir `shouldBe` i - il `shouldSatisfy` invariantHolds' - ir `shouldSatisfy` invariantHolds' - prop "mappending with duplicates: left-preserving" $ - \((i, j) :: (OMap Int Int, OMap Int Int)) -> - case j of - Empty -> i `shouldBe` i |>< j - j' :<|: _js -> do - let result = i |>< j - result `shouldBe` (i |> j') |>< j - result `shouldSatisfy` invariantHolds' - prop "mappending with duplicates: right-preserving" $ - \((i, j) :: (OMap Int Int, OMap Int Int)) -> - case i of - Empty -> i ><| j `shouldBe` j - _is :|>: i' -> do - let result = i ><| j - result `shouldBe` i ><| (i' <| j) - result `shouldSatisfy` invariantHolds' - prop "extractKeys should satisfy membership" $ - \((omap, set) :: (OMap Int Int, Set.Set Int)) -> do - let result = extractKeys set omap - result `shouldSatisfy` (all (`Set.notMember` set) . fst) - result `shouldSatisfy` (all (`Set.member` set) . snd) - result `shouldSatisfy` invariantHolds' . fst - prop "filter" $ - \((omap, i) :: (OMap Int Int, Int)) -> do - let result = filter (< i) omap - result `shouldSatisfy` all (< i) - result `shouldSatisfy` invariantHolds' - prop "adjust" $ - \((omap, i) :: (OMap Int OMapTest, Int)) -> do - let adjustingFn omt@OMapTest {omSnd} = omt {omSnd = omSnd + 1} - overwritingAdjustingFn omt@OMapTest {omFst} = omt {omFst = omFst + 1} -- Changes the `okeyL`. - adjust adjustingFn i omap `shouldSatisfy` invariantHolds' - adjust overwritingAdjustingFn i omap `shouldSatisfy` invariantHolds' - context "overwriting" $ do - prop "cons' - (<||)" $ - \((omap, i) :: (OMap Int OMapTest, OMapTest)) -> do - let consed = i <|| omap - k = i ^. okeyL - if k `member` omap - then consed `shouldBe` adjust (const i) (i ^. okeyL) omap - else consed `shouldBe` i <| omap - prop "snoc' - (||>)" $ - \((omap, i) :: (OMap Int OMapTest, OMapTest)) -> do - let snoced = omap ||> i - k = i ^. okeyL - if k `member` omap - then snoced `shouldBe` adjust (const i) (i ^. okeyL) omap - else snoced `shouldBe` omap |> i - prop "fromFoldable preserves order" $ - \(set :: Set.Set Int) -> do - let sseq = SSeq.fromList $ Set.elems set - omap = fromFoldable sseq - toStrictSeq omap `shouldBe` sseq - omap `shouldSatisfy` invariantHolds' - context "fromFoldableDuplicates preserves order" $ do - prop "with duplicates" $ - \(set :: Set.Set Int) -> do - let sseq = SSeq.fromList $ Set.elems set - omap = fromFoldable sseq - result = fromFoldableDuplicates (sseq SSeq.>< sseq) - toStrictSeq (snd result) `shouldBe` sseq - result `shouldBe` (set, omap) - snd result `shouldSatisfy` invariantHolds' - prop "without duplicates" $ - \(set :: Set.Set Int) -> do - let sseq = SSeq.fromList $ Set.elems set - omap = fromFoldable sseq - result = fromFoldableDuplicates sseq - toStrictSeq (snd result) `shouldBe` sseq - result `shouldBe` (Set.empty, omap) - snd result `shouldSatisfy` invariantHolds' - context "CBOR round-trip" $ do - roundTripCborSpec @(OMap Int Int) - context "Typeclass laws" $ do - it "Type" $ - lawsCheckOne - (Proxy :: Proxy (OMap Int Int)) - [ eqLaws - , isListLaws - , semigroupLaws - , monoidLaws - , semigroupMonoidLaws - ] - -instance HasOKey Int Int where - okeyL = lens id const - -data OMapTest = OMapTest {omFst :: Int, omSnd :: Int} - deriving (Eq, Show, Ord) - -instance HasOKey Int OMapTest where - okeyL = lens omFst $ \om u -> om {omFst = u} - -instance Arbitrary OMapTest where - arbitrary = OMapTest <$> arbitrary <*> arbitrary diff --git a/libs/cardano-data/test/Test/Cardano/Data/OSet/StrictSpec.hs b/libs/cardano-data/test/Test/Cardano/Data/OSet/StrictSpec.hs deleted file mode 100644 index c05ff439db3..00000000000 --- a/libs/cardano-data/test/Test/Cardano/Data/OSet/StrictSpec.hs +++ /dev/null @@ -1,104 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Data.OSet.StrictSpec where - -import Cardano.Ledger.Binary (natVersion) -import Control.Monad (forM_) -import Data.OSet.Strict hiding (empty) -import Data.Proxy -import Data.Sequence.Strict (StrictSeq, (><)) -import qualified Data.Sequence.Strict as SSeq (fromList) -import Data.Set (Set, elems, empty) -import Test.Cardano.Data.Arbitrary () -import Test.Cardano.Ledger.Binary.RoundTrip (cborTrip, embedTripSpec, roundTripCborSpec) -import Test.Hspec -import Test.Hspec.QuickCheck -import Test.QuickCheck.Classes - -spec :: Spec -spec = - describe "OSet.Strict" $ do - context "membership checks work" $ do - prop "unconsed" $ \(s :: OSet Int) -> case s of - Empty -> pure () - x :<|: _xs -> x `shouldSatisfy` (`member` s) - prop "unsnoced" $ \(s :: OSet Int) -> case s of - Empty -> pure () - _xs :|>: x -> x `shouldSatisfy` (`member` s) - context "when cons-ing" $ do - prop "adding a duplicate results in a no-op" $ \(s :: OSet Int) -> do - case s of - Empty -> pure () - x :<|: _xs -> s `shouldBe` x <| s - case s of - Empty -> pure () - _xs :|>: x -> s `shouldBe` x <| s - prop "new values get added" $ \((s, i) :: (OSet Int, Int)) -> do - if i `member` s - then i <| s `shouldBe` s - else i <| s `shouldBe` i :<|: s - context "when snoc-ing" $ do - prop "adding a duplicate results in a no-op" $ \(s :: OSet Int) -> do - case s of - Empty -> pure () - x :<|: _xs -> s `shouldBe` s |> x - case s of - Empty -> pure () - _xs :|>: x -> s `shouldBe` s |> x - prop "new values get added" $ \((s, i) :: (OSet Int, Int)) -> do - if i `member` s - then s |> i `shouldBe` s - else s |> i `shouldBe` s :|>: i - context "mappend preserves uniqueness" $ do - prop "mappending with itself should be a no-op" $ \(i :: OSet Int) -> do - i |>< i `shouldBe` i - i ><| i `shouldBe` i - prop "mappending with duplicates: left-preserving" $ \((i, j) :: (OSet Int, OSet Int)) -> do - case j of - Empty -> i `shouldBe` i |>< j - j' :<|: _js -> i |>< j `shouldBe` (i |> j') |>< j - prop "mappending with duplicates: right-preserving" $ \((i, j) :: (OSet Int, OSet Int)) -> do - case i of - Empty -> i ><| j `shouldBe` j - _is :|>: i' -> i ><| j `shouldBe` i ><| (i' <| j) - prop "operations preserve invariant" $ - \((oset, oset', sseq, set) :: (OSet Int, OSet Int, StrictSeq Int, Set Int)) -> do - oset |>< oset' `shouldSatisfy` invariantHolds' - oset ><| oset' `shouldSatisfy` invariantHolds' - fromStrictSeq sseq `shouldSatisfy` invariantHolds' - fromSet set `shouldSatisfy` invariantHolds' - prop "fromList preserves order" $ - \(set :: Set Int) -> - let sseq = SSeq.fromList $ elems set - in toStrictSeq (fromList (elems set)) `shouldBe` sseq - context "fromStrictSeqDuplicates" $ do - prop "with duplicates" $ \(set :: (Set Int)) -> - let sseq = SSeq.fromList $ elems set - oset = fromStrictSeq sseq - in fromStrictSeqDuplicates (sseq >< sseq) `shouldBe` (set, oset) - prop "without duplicates" $ \(set :: (Set Int)) -> - let sseq = SSeq.fromList $ elems set - oset = fromStrictSeq sseq - in fromStrictSeqDuplicates sseq `shouldBe` (empty, oset) - context "CBOR round-trip" $ do - roundTripCborSpec @(OSet Int) - roundTripCborSpec @(OSet (OSet Int)) - forM_ [natVersion @9 .. maxBound] $ \v -> do - embedTripSpec v v (cborTrip @(Set Word) @(OSet Word)) $ - \oset set -> set `shouldBe` toSet oset - embedTripSpec v v (cborTrip @(OSet Word) @(Set Word)) $ - \set oset -> toSet oset `shouldBe` set - context "Typeclass laws" $ do - it "Type" $ - lawsCheckOne - (Proxy :: Proxy (OSet Int)) - [ eqLaws - , ordLaws - , isListLaws - , semigroupLaws - , monoidLaws - , semigroupMonoidLaws - ] diff --git a/libs/cardano-data/testlib/Test/Cardano/Data.hs b/libs/cardano-data/testlib/Test/Cardano/Data.hs deleted file mode 100644 index 43d30d8f90b..00000000000 --- a/libs/cardano-data/testlib/Test/Cardano/Data.hs +++ /dev/null @@ -1,25 +0,0 @@ -module Test.Cardano.Data ( - expectValidMap, - genNonEmptyMap, -) where - -import Control.Monad -import qualified Data.Map.Internal.Debug as Map -import qualified Data.Map.Strict as Map hiding (showTree) -import Test.Hspec -import Test.QuickCheck - -expectValidMap :: HasCallStack => (Ord k, Show k, Show a) => Map.Map k a -> Expectation -expectValidMap m = - unless (Map.valid m) $ - expectationFailure $ - unlines - [ "Interal strucutre of a map is invalid:" - , "Keys are ordered: " ++ show (Map.ordered m) - , "Tree is balanced: " ++ show (Map.balanced m) - , "Sizes are valid: " ++ show (Map.validsize m) - , Map.showTree m - ] - -genNonEmptyMap :: Ord k => Gen k -> Gen v -> Gen (Map.Map k v) -genNonEmptyMap genKey genVal = Map.fromList <$> listOf1 ((,) <$> genKey <*> genVal) diff --git a/libs/cardano-data/testlib/Test/Cardano/Data/Arbitrary.hs b/libs/cardano-data/testlib/Test/Cardano/Data/Arbitrary.hs deleted file mode 100644 index 805b7e5595d..00000000000 --- a/libs/cardano-data/testlib/Test/Cardano/Data/Arbitrary.hs +++ /dev/null @@ -1,20 +0,0 @@ -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE ImportQualifiedPost #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Data.Arbitrary where - -import Data.Map.Strict qualified as Map -import Data.OMap.Strict qualified as OMap -import Data.OSet.Strict qualified as OSet -import Data.Set qualified as Set -import Lens.Micro (set) -import Test.Cardano.Ledger.Binary.Arbitrary () -import Test.QuickCheck - -instance (Arbitrary a, Ord a) => Arbitrary (OSet.OSet a) where - arbitrary = fmap OSet.fromFoldable . shuffle . Set.toList =<< arbitrary - -instance (Ord v, Arbitrary v, OMap.HasOKey k v, Arbitrary k) => Arbitrary (OMap.OMap k v) where - arbitrary = - fmap OMap.fromFoldable . shuffle . Map.elems . Map.mapWithKey (flip (set OMap.okeyL)) =<< arbitrary diff --git a/libs/cardano-data/testlib/Test/Cardano/Data/TreeDiff.hs b/libs/cardano-data/testlib/Test/Cardano/Data/TreeDiff.hs deleted file mode 100644 index 03e1e2f1cb0..00000000000 --- a/libs/cardano-data/testlib/Test/Cardano/Data/TreeDiff.hs +++ /dev/null @@ -1,17 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE ImportQualifiedPost #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Data.TreeDiff where - -import Data.Foldable qualified as F -import Data.OMap.Strict -import Data.OSet.Strict -import Test.Cardano.Ledger.Binary.TreeDiff (ToExpr (..)) - -deriving instance ToExpr a => ToExpr (OSet a) - -instance (HasOKey k v, ToExpr v) => ToExpr (OMap k v) where - listToExpr = listToExpr . F.toList - toExpr = toExpr . F.toList diff --git a/libs/cardano-ledger-api/.ghcid b/libs/cardano-ledger-api/.ghcid deleted file mode 100644 index 5c4928be3d5..00000000000 --- a/libs/cardano-ledger-api/.ghcid +++ /dev/null @@ -1 +0,0 @@ ---command="cabal repl --repl-options='-isrc -fwarn-unused-binds -fwarn-unused-imports -fno-code -fobject-code -g2 -fno-break-on-exception -fno-break-on-error -ferror-spans -j -Wno-unused-packages'" --clear --no-height-limit --reverse-errors --reload=../../ --outputfile=/tmp/cardano-ledger-api-ghcid.txt \ No newline at end of file diff --git a/libs/cardano-ledger-api/CHANGELOG.md b/libs/cardano-ledger-api/CHANGELOG.md deleted file mode 100644 index 106dd3f9d93..00000000000 --- a/libs/cardano-ledger-api/CHANGELOG.md +++ /dev/null @@ -1,171 +0,0 @@ -# Version history for `cardano-ledger-api` - -## 1.9.1.0 - -* Add `redeemerPointer` and `redeemerPointerInverse`. - -## 1.9.0.0 - -* Add optional `Anchor` to `MemberResigned` in `CommitteeMembersState` -* Change return type of `queryCommitteeMembersState` to `CommitteeMembersState` -* Change type of `csThreshold` in `CommitteeMembersState` to `Maybe UnitInterval` -* Remove `getNextEpochCommitteeMembers` from `EraGov` -* Remove `getDRepDistr`, `getConstitution` and `getCommitteeMembers` from `EraGov` #4033 -* Add `refScriptSize` parameter to `getMinFeeTx`, `setMinFeeTx` and `estimateMinFeeTx` -* Add `hoistGovRelation`, `withGovActionParent` and `GovRelation` -* Remove `PrevGovActionIds` -* Rename `cgProposalsL` to `cgsProposalsL` -* Remove `cgEnactStateL` -* Rename `RewardAccount` fields `getRwdNetwork` and `getRwdCred` to `raNetwork` and `raCredential` respectively -* Deprecate `deserialiseRewardAcnt` in favor of `deserialiseRewardAccount` -* Deprecate `serialiseRewardAcnt` in favor of `serialiseRewardAccount` -* Deprecate `RewardAcnt` in favor of `RewardAccount` -* Remove `registerInitialFunds`, `registerInitialStaking`, `registerInitialDReps`, and `registerDelegs` in favor of `injectIntoTestState`. -* Change the semantics of `createInitialState` to not register any initial funds or delegates. - -## 1.8.0.0 - -* Add `txIdTxBody` and `txIdTx`. -* Add `estimateMinFeeTx` and `calcMinFeeTx` -* Add `queryAccountState` -* Add `estimateMinFeeTx` -* Add `registerInitialDReps`, `registerDelegs` -* Stop exporting `CostModels` internal representation -* Change return type of `mintedTxBodyF` to `Set PolicyID` -* Remove old and deprecated functions `evaluateTransactionExecutionUnits`, - `evaluateTransactionExecutionUnitsWithLogs` and `updateTxBodyG` -* Remove no longer necessary `ValidationFailed` -* Adjust `TransactionScriptFailure` -* Add `DecAddr` and `decodeAddrLenient` with `decodeAddrLenientEither` -* Change the type of `ppEMaxL`, `ppuEMaxL`, `ppGovActionLifetimeL`, `ppDRepActivityL`, - `ppCommitteeMaxTermLengthL`, `ppuGovActionLifetimeL`, `ppuDRepActivityL` and - `ppuCommitteeMaxTermLengthL` -* Move all `ToExpr` instances into `testlib`s. -* Introduce `ToBeExpired` data constructor to `NextEpochChange` -* Introduce `TermAdjusted` data constructor to `NextEpochChange` - -## 1.7.0.1 - -* - -## 1.7.0.0 - -* Deprecate `GetCommitteeState` query -* Add `GetCommitteeMembersState` query -* Add `invalidBeforeL` and `invalidHereAfterL` -* Export `isPlutusScript` -* Add `NativeScript`, `getNativeScript` and `validateNativeScript` -* Removed `phaseScript` -* Remove `GovSnapshots`, `cgGovSnapshotsL`, `cgRatifyStateL`, `cgGovSnapshotsL` and - `cgRatifyStateL` -* Add `cgProposalsL` - -## 1.6.0.0 - -* Add `LatestKnownEra` -* Add `Cardano.Ledger.Api.Transition` module -* Add the dormant-epochs counter to `DRep` expiry in `queryDRepState` #3729 - * If it is not zero. -* Rename: - * `GovActionsState` to `GovSnapshots` - * `cgGovActionsStateL` to `cgGovSnapshotsL` -* Add `lookupRegStakeTxCert` and `lookupUnRegStakeTxCert` -* Add `isRegStakeTxCert` and `isUnRegStakeTxCert` - -## 1.5.0.0 - -* Add one more parameter to `evalBalanceTxBody` #3688 - * `Credential 'DRepRole (EraCrypto era) -> Maybe Coin` -* Add `cgEnactStateL` - -## 1.4.0.0 - -* Add `queryGovState`, `queryDRepState`, `queryDRepStakeDistr` and `queryCommitteeState` -* Add `queryConstitution`. -* Replace `constitutionHash` with `constitutionAnchor` -* Add `eraName` -* Add `upgradeTxAucData` function to `EraTxAuxData` -* Add `upgradeTxOut` function to `EraTxOut` -* Add `upgradeScript` function to `EraScript` -* Add `upgradeTxAuxData` function to `EraTxAuxData` -* Add `upgradeTxCert` function and `TxCertUpgradeError` family to `EraTxCert` -* Export: - * Procedures: `VotingProcedure`, `VotingProcedures` and `ProposalProcedure` - * Constitution: `Constitution`, `constitutionHashL` and `constitutionScriptL` - * GovActions: `GovActionPurpose`, `PrevGovActionId`, `govActionIdToText`, - `PrevGovActionId` and `GovActionPurpose` -* Add optional `PrevGovActionId` to `ParameterChange`, `HardForkInitiation`, - `NoConfidence`, `NewCommittee` and `NewConstitution` governance actions. -* Rename `*governance*` to `*gov*` #3607 -* Update `queryConstitutionHash` return type to `SafeHash (EraCrypto era) (Constitution era)` #3556 -* Rename `cgTallyL` to `cgGovL` -* Rename `ConwayTallyState` to `ConwayGovState` -* Change constraints on `evalBalanceTxBody` - -## 1.3.1.0 - -* Add `spendableInputsTxBodyL` - -## 1.3.0.0 - -* Add `queryConstitutionHash` to `Cardano.Ledger.Api.State.Query` #3506 -* Addition of `Cardano.Ledger.Api.Tx.Cert` -* Removal of `VoterRole` in favor of `Voter` -* Removal of `cgVoterRolesL` and `cgVoterRoles` as no longer needed. - -## 1.2.1.0 - -* Deprecated `updateTxBodyG` - -## 1.2.0.0 - -* Add support for Plutus V3 -* Start on `Cardano.Ledger.Api.State.Query` interface: - * Add `filterStakePoolDelegsAndRewards` and `queryStakePoolDelegsAndRewards` - -### `testlib` - -* Started `testlib` with first module `Test.Cardano.Ledger.Api.State.Query` that exposes - `getFilteredDelegationsAndRewardAccounts` - -## 1.1.0.0 - -* Add `Cardano.Ledger.Api.Governance` that exposes all of the governance related types. -* Addition of `Cardano.Ledger.Api.PParams` -* Addition of `Cardano.Ledger.Api.Tx.Address` -* Addition of `Cardano.Ledger.Api.Tx.In` -* Hide `ShelleyTxBody`, `AlonzoTxBody`, `BabbageTxBody` from `Cardano.Ledger.Api.Tx.Body` -* Export `Withdrawals` from `Cardano.Ledger.Api.Tx.Body` -* Export `ShelleyTxAuxData`, `AllegraTxAuxData` and `AlonzoTxAuxData` from - `Cardano.Ledger.Api.Tx.AuxData` -* Export `LangDepView` and `getLanguageView` from `Cardano.Ledger.Api.PParams` -* Hide the internal compact versions from `Cardano.Ledger.Api.Tx.Out` module: - `compactValueTxOutL`, `valueEitherTxOutL`, `compactAddrTxOutL` and `addrEitherTxOutL` -* Export from `Cardano.Ledger.Api.Tx.Out`: `coinTxOutL`, `bootAddrTxOutF`, - `ValidityInterval` and `DataHash`. -* Export from `Cardano.Ledger.Api.Scripts.Data`: `BinaryData`, `DataHash`, `Datum`, - `binaryDataToData`, `dataToBinaryData`, `datumDataHash`, `getPlutusData`, - `hashBinaryData` and `makeBinaryData`. -* Export `Tx` and `IsValid` from `Cardano.Ledger.Api.Tx` -* Export from `Cardano.Ledger.Api.Tx.AuxData`: `mkAlonzoTxAuxData` and `getAlonzoTxAuxDataScripts` -* Export from `Cardano.Ledger.Api.Tx.Wits`: `WitVKey`, `BootstrapWitness`, - `AlonzoEraTxWits`, `TxDats`, `unTxDats`, `Redeemers`, `unRedeemers`, `RdmrPtr` and - `Tag`. -* Export from `Cardano.Ledger.Api.Scripts`: `CostModels` and `ValidityInterval`. -* Export from `Cardano.Ledger.Api.Era`: - * `Era` - * `ByronEra` - * Protocol version related functionality: `eraProtVerHigh`, `eraProtVerLow`, - `AtLeastEra`, `AtMostEra`, `ExactEra`, `ProtVerAtLeast`, `ProtVerAtMost`, - `ProtVerInBounds`, `atLeastEra` and `atMostEra` -* Move `Cardano.Ledger.Alonzo.Tools` module from `cardano-ledegr-alonzo` into - `Cardano.Ledger.Api.Scripts` -* Addition of `evalBalanceTxBody` -* Addition of `evalTxExUnits` and `evalTxExUnitsWithLogs`. Deprecated - `evaluateTransactionExecutionUnits` and `evaluateTransactionExecutionUnitsWithLogs` if - favor of the newly added ones. -* Export `hashDataTxWitsL` and `hashScriptTxWitsL` - -## 1.0.0.0 - -* Initial release diff --git a/libs/cardano-ledger-api/Setup.hs b/libs/cardano-ledger-api/Setup.hs deleted file mode 100644 index c0bc21b7769..00000000000 --- a/libs/cardano-ledger-api/Setup.hs +++ /dev/null @@ -1,6 +0,0 @@ -module Main where - -import Distribution.Extra.Doctest (defaultMainWithDoctests) - -main :: IO () -main = defaultMainWithDoctests "doctests" diff --git a/libs/cardano-ledger-api/cardano-ledger-api.cabal b/libs/cardano-ledger-api/cardano-ledger-api.cabal deleted file mode 100644 index 7891b2b38f8..00000000000 --- a/libs/cardano-ledger-api/cardano-ledger-api.cabal +++ /dev/null @@ -1,126 +0,0 @@ -cabal-version: 3.0 -name: cardano-ledger-api -version: 1.9.1.0 -license: Apache-2.0 -maintainer: operations@iohk.io -author: IOHK -bug-reports: https://github.com/intersectmbo/cardano-ledger/issues -synopsis: Public API for the cardano ledger codebase -description: - This package a public interface into the cardano ledger codebase. It also - provides functionality that works for all eras and is useful for downstream - packages. - -build-type: Simple -extra-source-files: CHANGELOG.md - -source-repository head - type: git - location: https://github.com/intersectmbo/cardano-ledger - subdir: libs/cardano-ledger-api - -library - exposed-modules: - Cardano.Ledger.Api - Cardano.Ledger.Api.Era - Cardano.Ledger.Api.Governance - Cardano.Ledger.Api.PParams - Cardano.Ledger.Api.Scripts - Cardano.Ledger.Api.Scripts.Data - Cardano.Ledger.Api.Transition - Cardano.Ledger.Api.Tx - Cardano.Ledger.Api.Tx.Address - Cardano.Ledger.Api.Tx.AuxData - Cardano.Ledger.Api.Tx.Body - Cardano.Ledger.Api.Tx.Cert - Cardano.Ledger.Api.Tx.In - Cardano.Ledger.Api.Tx.Out - Cardano.Ledger.Api.Tx.Wits - Cardano.Ledger.Api.State.Query - Cardano.Ledger.Api.UTxO - - hs-source-dirs: src - other-modules: - Cardano.Ledger.Api.Scripts.ExUnits - Cardano.Ledger.Api.State.Query.CommitteeMembersState - - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wpartial-fields - -Wunused-packages - - build-depends: - base >=4.14 && <5, - aeson >=2.2, - bytestring, - cardano-ledger-allegra ^>=1.4, - cardano-ledger-alonzo ^>=1.8, - cardano-ledger-babbage ^>=1.8, - cardano-ledger-binary ^>=1.3, - cardano-ledger-conway ^>=1.13, - cardano-ledger-core ^>=1.11, - cardano-ledger-mary ^>=1.5, - cardano-ledger-shelley ^>=1.10, - cardano-slotting, - containers, - FailT, - microlens, - plutus-ledger-api, - text, - transformers - -library testlib - exposed-modules: - Test.Cardano.Ledger.Api.State.Query - Test.Cardano.Ledger.Api.Arbitrary - - visibility: public - hs-source-dirs: testlib - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wpartial-fields - -Wunused-packages - - build-depends: - base, - containers, - cardano-ledger-api, - cardano-ledger-core:{cardano-ledger-core, testlib} - -test-suite cardano-ledger-api-test - type: exitcode-stdio-1.0 - main-is: Tests.hs - hs-source-dirs: test - other-modules: - Test.Cardano.Ledger.Api.Tx - Test.Cardano.Ledger.Api.Tx.Out - Test.Cardano.Ledger.Api.Tx.Body - Test.Cardano.Ledger.Api.State.Imp.QuerySpec - Test.Cardano.Ledger.Api.State.QuerySpec - - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wpartial-fields - -Wunused-packages -rtsopts -threaded - - build-depends: - base, - bytestring, - cardano-ledger-api, - cardano-ledger-byron, - data-default-class, - testlib, - cardano-crypto-class, - cardano-ledger-binary, - cardano-ledger-babbage:testlib, - cardano-ledger-core:{cardano-ledger-core, testlib}, - cardano-ledger-conway:{cardano-ledger-conway, testlib}, - cardano-ledger-shelley:{cardano-ledger-shelley, testlib}, - cardano-slotting:testlib, - cardano-strict-containers, - containers, - microlens, - microlens-mtl diff --git a/libs/cardano-ledger-api/src/Cardano/Ledger/Api.hs b/libs/cardano-ledger-api/src/Cardano/Ledger/Api.hs deleted file mode 100644 index e34e7bc6785..00000000000 --- a/libs/cardano-ledger-api/src/Cardano/Ledger/Api.hs +++ /dev/null @@ -1,29 +0,0 @@ --- | This module provides a library interface for working with types that will allow a user to --- interact with Cardano ledger. --- --- It is intended to be the complete API covering everything but without exposing constructors that --- reveal any lower level types. --- --- In the interest of simplicity it glosses over some details of the system. --- Most tools should be able to work just using this interface, however you can go deeper and --- experiment with internal modules if necessary, such as "Cardano.Ledger.Core", --- "Cardano.Ledger.Shelley", "Cardano.Ledger.Babbage", etc. -module Cardano.Ledger.Api ( - -- | Definition of Cardano Ledger era types. - module Cardano.Ledger.Api.Era, - -- | Building and inspecting transactions. - module Cardano.Ledger.Api.Tx, - -- | Protocol parameters. - module Cardano.Ledger.Api.PParams, - -- | Scripts - module Cardano.Ledger.Api.Scripts, - -- | Governance - module Cardano.Ledger.Api.Governance, -) -where - -import Cardano.Ledger.Api.Era -import Cardano.Ledger.Api.Governance -import Cardano.Ledger.Api.PParams -import Cardano.Ledger.Api.Scripts -import Cardano.Ledger.Api.Tx diff --git a/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Era.hs b/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Era.hs deleted file mode 100644 index 410987e6f6b..00000000000 --- a/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Era.hs +++ /dev/null @@ -1,87 +0,0 @@ -module Cardano.Ledger.Api.Era ( - -- * Eras - Era ( - EraCrypto, - PreviousEra, - ProtVerLow, - ProtVerHigh - ), - eraName, - - -- ** Byron - ByronEra, - - -- ** Shelley - Shelley, - ShelleyEra, - - -- ** Allegra - Allegra, - AllegraEra, - - -- ** Mary - Mary, - MaryEra, - - -- ** Alonzo - Alonzo, - AlonzoEra, - - -- ** Babbage - Babbage, - BabbageEra, - - -- ** Conway - Conway, - ConwayEra, - - -- ** Latest Known - LatestKnownEra, - - -- * Crypto - StandardCrypto, - Crypto (..), - - -- * Protocol version - - -- ** Value level - eraProtVerHigh, - eraProtVerLow, - - -- ** Type level constraints - AtLeastEra, - AtMostEra, - ExactEra, - ProtVerAtLeast, - ProtVerAtMost, - ProtVerInBounds, - atLeastEra, - atMostEra, -) -where - -import Cardano.Ledger.Allegra (Allegra, AllegraEra) -import Cardano.Ledger.Alonzo (Alonzo, AlonzoEra) -import Cardano.Ledger.Babbage (Babbage, BabbageEra) -import Cardano.Ledger.Conway (Conway, ConwayEra) -import Cardano.Ledger.Core ( - AtLeastEra, - AtMostEra, - ByronEra, - Era (..), - ExactEra, - ProtVerAtLeast, - ProtVerAtMost, - ProtVerInBounds, - atLeastEra, - atMostEra, - eraProtVerHigh, - eraProtVerLow, - ) -import Cardano.Ledger.Crypto (Crypto (..), StandardCrypto) -import Cardano.Ledger.Mary (Mary, MaryEra) -import Cardano.Ledger.Shelley (Shelley, ShelleyEra) - --- | Sometimes it is useful to specify that a type corresponds to a latest era that is --- currently implemented -type LatestKnownEra c = ConwayEra c diff --git a/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Governance.hs b/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Governance.hs deleted file mode 100644 index 7687a32dc3f..00000000000 --- a/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Governance.hs +++ /dev/null @@ -1,85 +0,0 @@ -module Cardano.Ledger.Api.Governance ( - EraGov (GovState), - emptyGovState, - getProposedPPUpdates, - - -- * Shelley - ShelleyGovState (..), - ProposedPPUpdates (..), - emptyPPPUpdates, - - -- * Conway - - -- ** Governance Procedures - VotingProcedure (..), - VotingProcedures (..), - ProposalProcedure (..), - - -- ** Constitution - Constitution (..), - constitutionAnchorL, - constitutionScriptL, - - -- ** Governance State - ConwayGovState (..), - cgsProposalsL, - RatifyState (..), - EnactState (..), - Voter (..), - Vote (..), - - -- ** Governance Action - GovAction (..), - GovActionId (..), - GovActionIx (..), - GovActionState (..), - GovActionPurpose (..), - GovRelation (..), - hoistGovRelation, - withGovActionParent, - GovPurposeId (..), - govActionIdToText, - - -- *** Anchor - Anchor (..), - AnchorData (..), - hashAnchorData, -) where - --- Lenses - -import Cardano.Ledger.Api.Era () -import Cardano.Ledger.BaseTypes (hashAnchorData) -import Cardano.Ledger.Conway.Governance ( - Anchor (..), - AnchorData (..), - Constitution (..), - ConwayGovState (..), - EnactState (..), - GovAction (..), - GovActionId (..), - GovActionIx (..), - GovActionPurpose (..), - GovActionState (..), - GovPurposeId (..), - GovRelation (..), - ProposalProcedure (..), - RatifyState (..), - Vote (..), - Voter (..), - VotingProcedure (..), - VotingProcedures (..), - cgsProposalsL, - constitutionAnchorL, - constitutionScriptL, - govActionIdToText, - hoistGovRelation, - withGovActionParent, - ) -import Cardano.Ledger.Shelley.Governance ( - EraGov (GovState), - ShelleyGovState (..), - emptyGovState, - getProposedPPUpdates, - ) -import Cardano.Ledger.Shelley.PParams (ProposedPPUpdates (..), emptyPPPUpdates) diff --git a/libs/cardano-ledger-api/src/Cardano/Ledger/Api/PParams.hs b/libs/cardano-ledger-api/src/Cardano/Ledger/Api/PParams.hs deleted file mode 100644 index 9724a8c5388..00000000000 --- a/libs/cardano-ledger-api/src/Cardano/Ledger/Api/PParams.hs +++ /dev/null @@ -1,298 +0,0 @@ -module Cardano.Ledger.Api.PParams ( - -- * PParams - PParams, - emptyPParams, - UpgradePParams, - upgradePParams, - DowngradePParams, - downgradePParams, - - -- * PParamsUpdate - PParamsUpdate, - emptyPParamsUpdate, - upgradePParamsUpdate, - downgradePParamsUpdate, - - -- * Shelley params - - -- | Protocol parameters introduced in Shelley era - - -- ** @MinFeeA@ - - -- | Min fee factor - ppMinFeeAL, - ppuMinFeeAL, - - -- ** @MinFeeB@ - - -- | Min fee constant - ppMinFeeBL, - ppuMinFeeBL, - - -- ** @MaxBBSize@ - - -- | Max block body size - ppMaxBBSizeL, - ppuMaxBBSizeL, - - -- ** @AaxBHSize@ - - -- | Max block header size - ppMaxBHSizeL, - ppuMaxBHSizeL, - - -- ** @PoolDeposit@ - - -- | Stake pool deposit - ppPoolDepositL, - ppuPoolDepositL, - - -- ** @EMax@ - - -- | Epoch bound on pool retirement - ppEMaxL, - ppuEMaxL, - - -- ** @NOpt@ - - -- | Desired number of pools - ppNOptL, - ppuNOptL, - - -- ** @A0@ - - -- | Pool influence - ppA0L, - ppuA0L, - - -- ** @Tau@ - - -- | Treasury expansion - ppTauL, - ppuTauL, - - -- ** @Rho@ - - -- | Monetary expansion - ppRhoL, - ppuRhoL, - - -- ** @D@ - - -- | Decentralization paramteter - -- - -- /Note/ - Removed in Babbage - ppDL, - ppDG, - ppuDL, - - -- ** @ExtraEntropy@ - - -- | Extra entropy - -- - -- /Note/ - Removed in Babbage - ppExtraEntropyL, - ppuExtraEntropyL, - - -- ** @ProtocolVersion@ - - -- | Protocol version - ppProtocolVersionL, - ppuProtocolVersionL, - - -- ** @MinUTxOValue@ - - -- | Minimum allowed value of a new TxOut - ppuMinUTxOValueL, - ppMinUTxOValueL, - - -- ** @MinPoolCast@ - - -- | Miminum allowed stake pool cost - ppMinPoolCostL, - ppuMinPoolCostL, - - -- ** @KeyDeposit@ - ppKeyDepositL, - ppuKeyDepositL, - - -- ** @MaxTxSize@ - ppMaxTxSizeL, - ppuMaxTxSizeL, - - -- * Alonzo params - - -- | Protocol parameters introduced in Alonzo era - UpgradeAlonzoPParams (..), - DowngradeAlonzoPParams (..), - LangDepView (..), - getLanguageView, - - -- ** @CostModels@ - - -- | Plutus `Cardano.Ledegr.Api.Scripts.CostModels` - -- - -- To convert resource primitives into the more abstract - -- `Cardano.Ledegr.Api.Scripts.ExUnits` during script execution a cost model needs to be - -- supplied to the interpreter. The cost models required for this purpose are recorded - -- in the @CostModels@ protocol parameter. - ppCostModelsL, - ppuCostModelsL, - - -- ** @Prices@ - - -- | The calculation of the actual cost, in Ada, of running a script that takes - -- `Cardano.Ledegr.Api.Scripts.ExUnits` resources to run, is done by a formula in the - -- ledger rules, which uses the @Prices@ parameter - ppPricesL, - ppuPricesL, - - -- ** @MaxTxExUnits@ - - -- | Limit the total per-transaction resource use for phase-2 scripts. - ppMaxTxExUnitsL, - ppuMaxTxExUnitsL, - - -- ** @MaxBlockExUnits@ - - -- | Limit the total per-transaction and per-block resource use for phase-2 scripts. - ppMaxBlockExUnitsL, - ppuMaxBlockExUnitsL, - - -- ** @MaxValSize@ - - -- | The new parameter maxValSize replaces the constant @maxValSize@ used Mary era to - -- limit the size of the Value part of an output in a serialised transaction. - ppMaxValSizeL, - ppuMaxValSizeL, - - -- ** @CoinsPerUTxOWord@ - - -- | In Alonzo, the protocol parameter @minUTxOValue@ is deprecated, and replaced by - -- @coinsPerUTxOWord@. This specifies directly the deposit required for storing bytes of - -- data on the ledger in the form of UTxO entries. - CoinPerWord (..), - ppCoinsPerUTxOWordL, - ppuCoinsPerUTxOWordL, - - -- ** @CollateralPercentage@ - - -- | The parameter collateralPercent is used to specify the percentage of the total - -- transaction fee its collateral must (at minimum) cover. - ppCollateralPercentageL, - ppuCollateralPercentageL, - - -- ** @MaxCollateralInputs@ - - -- | The parameter @maxCollateralInputs@ is used to limit, additionally, the total number - -- of collateral inputs, and thus the total number of additional signatures that must be - -- checked during validation. - ppMaxCollateralInputsL, - ppuMaxCollateralInputsL, - - -- * Babbage params - - -- | Protocol parameters introduced in Babbage era - DowngradeBabbagePParams (..), - - -- ** @CoinsPerUTxOByte@ - - -- | Cost in the amount of lovelace ber byte. - -- - -- /Note/ - This parameter is a replacement for @coinsPerUTxOWord@ - CoinPerByte (..), - coinsPerUTxOWordToCoinsPerUTxOByte, - coinsPerUTxOByteToCoinsPerUTxOWord, - ppCoinsPerUTxOByteL, - ppuCoinsPerUTxOByteL, - - -- * Type classes - EraPParams, - AlonzoEraPParams, - BabbageEraPParams, -) -where - -import Cardano.Ledger.Alonzo.Core ( - AlonzoEraPParams, - CoinPerWord (..), - ppCoinsPerUTxOWordL, - ppCollateralPercentageL, - ppCostModelsL, - ppMaxBlockExUnitsL, - ppMaxCollateralInputsL, - ppMaxTxExUnitsL, - ppMaxValSizeL, - ppPricesL, - ppuCoinsPerUTxOWordL, - ppuCollateralPercentageL, - ppuCostModelsL, - ppuMaxBlockExUnitsL, - ppuMaxCollateralInputsL, - ppuMaxTxExUnitsL, - ppuMaxValSizeL, - ppuPricesL, - ) -import Cardano.Ledger.Alonzo.PParams ( - DowngradeAlonzoPParams (..), - LangDepView (..), - UpgradeAlonzoPParams (..), - getLanguageView, - ) -import Cardano.Ledger.Api.Era () -import Cardano.Ledger.Babbage.Core ( - BabbageEraPParams (..), - CoinPerByte (..), - ppCoinsPerUTxOByteL, - ppuCoinsPerUTxOByteL, - ) -import Cardano.Ledger.Babbage.PParams ( - DowngradeBabbagePParams (..), - coinsPerUTxOByteToCoinsPerUTxOWord, - coinsPerUTxOWordToCoinsPerUTxOByte, - ) -import Cardano.Ledger.Core ( - EraPParams (DowngradePParams, UpgradePParams, ppDG), - PParams (..), - PParamsUpdate (..), - downgradePParams, - downgradePParamsUpdate, - emptyPParams, - emptyPParamsUpdate, - ppA0L, - ppDL, - ppEMaxL, - ppExtraEntropyL, - ppKeyDepositL, - ppMaxBBSizeL, - ppMaxBHSizeL, - ppMaxTxSizeL, - ppMinFeeAL, - ppMinFeeBL, - ppMinPoolCostL, - ppMinUTxOValueL, - ppNOptL, - ppPoolDepositL, - ppProtocolVersionL, - ppRhoL, - ppTauL, - ppuA0L, - ppuDL, - ppuEMaxL, - ppuExtraEntropyL, - ppuKeyDepositL, - ppuMaxBBSizeL, - ppuMaxBHSizeL, - ppuMaxTxSizeL, - ppuMinFeeAL, - ppuMinFeeBL, - ppuMinPoolCostL, - ppuMinUTxOValueL, - ppuNOptL, - ppuPoolDepositL, - ppuProtocolVersionL, - ppuRhoL, - ppuTauL, - upgradePParams, - upgradePParamsUpdate, - ) diff --git a/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Scripts.hs b/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Scripts.hs deleted file mode 100644 index e5967e57b58..00000000000 --- a/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Scripts.hs +++ /dev/null @@ -1,59 +0,0 @@ -{-# LANGUAGE PatternSynonyms #-} - -module Cardano.Ledger.Api.Scripts ( - module Cardano.Ledger.Api.Scripts.Data, - EraScript (Script, NativeScript), - ScriptHash, - scriptPrefixTag, - upgradeScript, - hashScript, - getNativeScript, - validateNativeScript, - isNativeScript, - ValidityInterval (..), - - -- * Alonzo - AlonzoEraScript ( - PlutusScript, - PlutusPurpose, - toSpendingPurpose, - toMintingPurpose, - toCertifyingPurpose, - toRewardingPurpose - ), - isPlutusScript, - pattern SpendingPurpose, - pattern MintingPurpose, - pattern CertifyingPurpose, - pattern RewardingPurpose, - CostModels, - - -- * Conway - ConwayEraScript ( - toVotingPurpose, - toProposingPurpose - ), - pattern VotingPurpose, - pattern ProposingPurpose, -) -where - -import Cardano.Ledger.Allegra.Scripts (ValidityInterval (..)) -import Cardano.Ledger.Alonzo.Scripts ( - AlonzoEraScript (..), - CostModels, - isPlutusScript, - pattern CertifyingPurpose, - pattern MintingPurpose, - pattern RewardingPurpose, - pattern SpendingPurpose, - ) -import Cardano.Ledger.Api.Era () -import Cardano.Ledger.Api.Scripts.Data -import Cardano.Ledger.Conway.Scripts ( - ConwayEraScript (..), - pattern ProposingPurpose, - pattern VotingPurpose, - ) -import Cardano.Ledger.Core (EraScript (..), hashScript, isNativeScript, validateNativeScript) -import Cardano.Ledger.Hashes (ScriptHash) diff --git a/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Scripts/Data.hs b/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Scripts/Data.hs deleted file mode 100644 index 6e57c9afe93..00000000000 --- a/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Scripts/Data.hs +++ /dev/null @@ -1,33 +0,0 @@ -module Cardano.Ledger.Api.Scripts.Data ( - -- * Plutus Data - Data (Data), - getPlutusData, - DataHash, - hashData, - - -- * Inline Datum - Datum (..), - datumDataHash, - - -- ** BinaryData - BinaryData, - makeBinaryData, - hashBinaryData, - binaryDataToData, - dataToBinaryData, -) -where - -import Cardano.Ledger.Plutus.Data ( - BinaryData, - Data (Data), - DataHash, - Datum (..), - binaryDataToData, - dataToBinaryData, - datumDataHash, - getPlutusData, - hashBinaryData, - hashData, - makeBinaryData, - ) diff --git a/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Scripts/ExUnits.hs b/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Scripts/ExUnits.hs deleted file mode 100644 index 7f4d26146a9..00000000000 --- a/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Scripts/ExUnits.hs +++ /dev/null @@ -1,249 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} - -module Cardano.Ledger.Api.Scripts.ExUnits ( - TransactionScriptFailure (..), - evalTxExUnits, - RedeemerReport, - evalTxExUnitsWithLogs, - RedeemerReportWithLogs, -) -where - -import Cardano.Ledger.Alonzo.PParams -import Cardano.Ledger.Alonzo.Plutus.Context ( - ContextError, - EraPlutusContext (mkPlutusScriptContext), - ) -import Cardano.Ledger.Alonzo.Plutus.Evaluate (lookupPlutusScript) -import Cardano.Ledger.Alonzo.Scripts (plutusScriptLanguage, toAsItem, toAsIx) -import Cardano.Ledger.Alonzo.TxWits (unRedeemers, unTxDats) -import Cardano.Ledger.Alonzo.UTxO (AlonzoScriptsNeeded (..)) -import Cardano.Ledger.BaseTypes (pvMajor) -import Cardano.Ledger.Conway.Core -import Cardano.Ledger.Plutus.CostModels (costModelsValid) -import Cardano.Ledger.Plutus.Data (Datum (..), binaryDataToData, getPlutusData) -import Cardano.Ledger.Plutus.Evaluate ( - PlutusDatums (..), - PlutusWithContext (..), - evaluatePlutusWithContext, - ) -import Cardano.Ledger.Plutus.ExUnits -import Cardano.Ledger.Plutus.Language (Language (..)) -import Cardano.Ledger.Plutus.TxInfo (exBudgetToExUnits) -import Cardano.Ledger.TxIn (TxIn) -import Cardano.Ledger.UTxO (EraUTxO (..), ScriptsProvided (..), UTxO (..)) -import Cardano.Slotting.EpochInfo.API (EpochInfo) -import Cardano.Slotting.Time (SystemStart) -import Control.Monad (forM) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Text (Text) -import Lens.Micro -import qualified PlutusLedgerApi.Common as P - --- | Script failures that can be returned by 'evalTxExUnitsWithLogs'. -data TransactionScriptFailure era - = -- | A redeemer was supplied which points to a script hash which - -- we cannot connect to a Plutus script. - RedeemerPointsToUnknownScriptHash !(PlutusPurpose AsIx era) - | -- | Missing redeemer. - MissingScript - -- | Redeemer pointer which cannot be resolved - !(PlutusPurpose AsIx era) - -- | Map of pointers which can be resolved together with PlutusScripts and their - -- respective contexts - !( Map - (PlutusPurpose AsIx era) - (PlutusPurpose AsItem era, Maybe (PlutusScript era), ScriptHash (EraCrypto era)) - ) - | -- | Missing datum. - MissingDatum !(DataHash (EraCrypto era)) - | -- | Plutus evaluation error, for any version - ValidationFailure - -- | Supplied execution units in the transaction, which were ignored for calculating - -- the actual execution units. - !ExUnits - !P.EvaluationError - ![Text] - !(PlutusWithContext (EraCrypto era)) - | -- | A redeemer points to a transaction input which is not - -- present in the current UTxO. - UnknownTxIn !(TxIn (EraCrypto era)) - | -- | A redeemer points to a transaction input which is not - -- plutus locked. - InvalidTxIn !(TxIn (EraCrypto era)) - | -- | The execution budget that was calculated by the Plutus - -- evaluator is out of bounds. - IncompatibleBudget !P.ExBudget - | -- | There was no cost model for a given version of Plutus in the ledger state - NoCostModelInLedgerState !Language - -deriving instance - ( Era era - , Eq (TxCert era) - , Eq (PlutusScript era) - , Eq (PlutusPurpose AsIx era) - , Eq (PlutusPurpose AsItem era) - ) => - Eq (TransactionScriptFailure era) - -deriving instance - ( Era era - , Show (TxCert era) - , Show (PlutusScript era) - , Show (PlutusPurpose AsIx era) - , Show (PlutusPurpose AsItem era) - ) => - Show (TransactionScriptFailure era) - -note :: e -> Maybe a -> Either e a -note _ (Just x) = Right x -note e Nothing = Left e - -type RedeemerReport era = - Map (PlutusPurpose AsIx era) (Either (TransactionScriptFailure era) ExUnits) - -type RedeemerReportWithLogs era = - Map (PlutusPurpose AsIx era) (Either (TransactionScriptFailure era) ([Text], ExUnits)) - --- | Evaluate the execution budgets needed for all the redeemers in --- a given transaction. If a redeemer is invalid, a failure is returned instead. --- --- The execution budgets in the supplied transaction are completely ignored. --- The results of 'evalTxExUnitsWithLogs' are intended to replace them. -evalTxExUnits :: - forall era. - ( AlonzoEraTx era - , EraUTxO era - , EraPlutusContext era - , ScriptsNeeded era ~ AlonzoScriptsNeeded era - ) => - PParams era -> - -- | The transaction. - Tx era -> - -- | The current UTxO set (or the relevant portion for the transaction). - UTxO era -> - -- | The epoch info, used to translate slots to POSIX time for plutus. - EpochInfo (Either Text) -> - -- | The start time of the given block chain. - SystemStart -> - -- | We return a map from redeemer pointers to either a failure or a - -- sufficient execution budget. - -- Otherwise, we return a 'TranslationError' manifesting from failed attempts - -- to construct a valid execution context for the given transaction. - Either (ContextError era) (RedeemerReport era) -evalTxExUnits pp tx utxo ei sysS = - Map.map (fmap snd) <$> evalTxExUnitsWithLogs pp tx utxo ei sysS - --- | Evaluate the execution budgets needed for all the redeemers in --- a given transaction. If a redeemer is invalid, a failure is returned instead. --- --- The execution budgets in the supplied transaction are completely ignored. --- The results of 'evalTxExUnitsWithLogs' are intended to replace them. -evalTxExUnitsWithLogs :: - forall era. - ( AlonzoEraTx era - , EraUTxO era - , EraPlutusContext era - , ScriptsNeeded era ~ AlonzoScriptsNeeded era - ) => - PParams era -> - -- | The transaction. - Tx era -> - -- | The current UTxO set (or the relevant portion for the transaction). - UTxO era -> - -- | The epoch info, used to translate slots to POSIX time for plutus. - EpochInfo (Either Text) -> - -- | The start time of the given block chain. - SystemStart -> - -- | We return a map from redeemer pointers to either a failure or a sufficient - -- execution budget with logs of the script. Otherwise, we return a 'TranslationError' - -- manifesting from failed attempts to construct a valid execution context for the - -- given transaction. - -- - -- Unlike `evalTxExUnits`, this function also returns evaluation logs, useful for - -- debugging. - Either (ContextError era) (RedeemerReportWithLogs era) -evalTxExUnitsWithLogs pp tx utxo epochInfo sysStart = do - ptrToPlutusScript <- - forM neededPlutusScripts $ \(plutusPurpose, mPlutusScript, scriptHash) -> do - mPlutusScriptAndContext <- - forM mPlutusScript $ \plutusScript -> do - scriptContext <- - mkPlutusScriptContext - plutusScript - plutusPurpose - pp - epochInfo - sysStart - utxo - tx - pure (plutusScript, scriptContext) - let pointer = hoistPlutusPurpose toAsIx plutusPurpose - pure (pointer, (plutusPurpose, mPlutusScriptAndContext, scriptHash)) - pure $ Map.mapWithKey (findAndCount $ Map.fromList ptrToPlutusScript) rdmrs - where - maxBudget = pp ^. ppMaxTxExUnitsL - txBody = tx ^. bodyTxL - wits = tx ^. witsTxL - dats = unTxDats $ wits ^. datsTxWitsL - rdmrs = unRedeemers $ wits ^. rdmrsTxWitsL - protVerMajor = pvMajor (pp ^. ppProtocolVersionL) - costModels = costModelsValid $ pp ^. ppCostModelsL - ScriptsProvided scriptsProvided = getScriptsProvided utxo tx - AlonzoScriptsNeeded scriptsNeeded = getScriptsNeeded utxo txBody - neededPlutusScripts = - map - (\(sp, sh) -> (sp, lookupPlutusScript scriptsProvided sh, sh)) - scriptsNeeded - findAndCount ptrToPlutusScript pointer (rdmr, exUnits) = do - (plutusPurpose, mPlutusScript, scriptHash) <- - note (RedeemerPointsToUnknownScriptHash pointer) $ - Map.lookup pointer ptrToPlutusScript - let ptrToPlutusScriptNoContext = - Map.map - (\(sp, mps, sh) -> (hoistPlutusPurpose toAsItem sp, fst <$> mps, sh)) - ptrToPlutusScript - (plutusScript, scriptContext) <- - note (MissingScript pointer ptrToPlutusScriptNoContext) mPlutusScript - let lang = plutusScriptLanguage plutusScript - costModel <- - note (NoCostModelInLedgerState lang) $ Map.lookup lang costModels - -- Similar to getSpendingDatum, but with more informative errors. It is OK to use - -- inline datums, when they are present, since for PlutusV1 presence of inline - -- datums would short circuit earlier on PlutusContext translation. - datums <- - case toSpendingPurpose plutusPurpose of - Just (AsIxItem _ txIn) -> do - txOut <- note (UnknownTxIn txIn) $ Map.lookup txIn (unUTxO utxo) - datum <- - case txOut ^. datumTxOutF of - Datum binaryData -> pure $ binaryDataToData binaryData - DatumHash dh -> note (MissingDatum dh) $ Map.lookup dh dats - NoDatum -> Left (InvalidTxIn txIn) - pure [datum, rdmr, scriptContext] - Nothing -> pure [rdmr, scriptContext] - let pwc = - withPlutusScript plutusScript $ \plutus -> - PlutusWithContext - { pwcProtocolVersion = protVerMajor - , pwcScript = Left plutus - , pwcScriptHash = scriptHash - , pwcDatums = PlutusDatums (getPlutusData <$> datums) - , pwcExUnits = maxBudget - , pwcCostModel = costModel - } - case evaluatePlutusWithContext P.Verbose pwc of - (logs, Left err) -> Left $ ValidationFailure exUnits err logs pwc - (logs, Right exBudget) -> - note (IncompatibleBudget exBudget) $ - (,) logs <$> exBudgetToExUnits exBudget diff --git a/libs/cardano-ledger-api/src/Cardano/Ledger/Api/State/Query.hs b/libs/cardano-ledger-api/src/Cardano/Ledger/Api/State/Query.hs deleted file mode 100644 index 4d198b56bc3..00000000000 --- a/libs/cardano-ledger-api/src/Cardano/Ledger/Api/State/Query.hs +++ /dev/null @@ -1,276 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE ScopedTypeVariables #-} - -module Cardano.Ledger.Api.State.Query ( - -- * @GetFilteredDelegationsAndRewardAccounts@ - filterStakePoolDelegsAndRewards, - queryStakePoolDelegsAndRewards, - - -- * @GetGovState@ - queryGovState, - - -- * @GetConstitution@ - queryConstitution, - - -- * @GetConstitutionHash@ - queryConstitutionHash, - - -- * @GetDRepState@ - queryDRepState, - - -- * @GetDRepStakeDistr@ - queryDRepStakeDistr, - - -- * @GetCommitteeState@ - queryCommitteeState, - - -- * @GetCommitteeMembersState@ - queryCommitteeMembersState, - - -- * @GetAccountState@ - queryAccountState, - CommitteeMemberState (..), - CommitteeMembersState (..), - HotCredAuthStatus (..), - MemberStatus (..), - NextEpochChange (..), - - -- * For testing - getNextEpochCommitteeMembers, -) where - -import Cardano.Ledger.Api.State.Query.CommitteeMembersState ( - CommitteeMemberState (..), - CommitteeMembersState (..), - HotCredAuthStatus (..), - MemberStatus (..), - NextEpochChange (..), - ) -import Cardano.Ledger.BaseTypes (EpochNo (EpochNo), binOpEpochNo, strictMaybeToMaybe) -import Cardano.Ledger.CertState -import Cardano.Ledger.Coin (Coin) -import Cardano.Ledger.Compactible (fromCompact) -import Cardano.Ledger.Conway.Governance ( - Committee (committeeMembers), - Constitution (constitutionAnchor), - ConwayEraGov (..), - committeeThresholdL, - ensCommitteeL, - finishDRepPulser, - psDRepDistr, - rsEnactStateL, - ) -import Cardano.Ledger.Core -import Cardano.Ledger.Credential (Credential) -import Cardano.Ledger.DRep (drepExpiryL) -import Cardano.Ledger.Keys (KeyHash, KeyRole (..)) -import Cardano.Ledger.SafeHash (SafeHash) -import Cardano.Ledger.Shelley.Governance ( - EraGov ( - GovState - ), - ) -import Cardano.Ledger.Shelley.LedgerState -import Cardano.Ledger.UMap ( - StakeCredentials (scRewards, scSPools), - UMap, - domRestrictedStakeCredentials, - ) -import Control.Monad (guard) -import Data.Foldable (foldMap') -import Data.Map (Map) -import qualified Data.Map.Strict as Map -import Data.Maybe (isJust) -import Data.Set (Set) -import qualified Data.Set as Set -import Lens.Micro ((%~), (&), (<&>), (^.)) -import Lens.Micro.Extras (view) - --- | Filter out stake pool delegations and rewards for a set of stake credentials -filterStakePoolDelegsAndRewards :: - UMap c -> - Set (Credential 'Staking c) -> - (Map (Credential 'Staking c) (KeyHash 'StakePool c), Map (Credential 'Staking c) Coin) -filterStakePoolDelegsAndRewards umap creds = - (scSPools stakeCredentials, scRewards stakeCredentials) - where - stakeCredentials = domRestrictedStakeCredentials creds umap - --- | Uses `filterStakePoolDelegsAndRewards` to get the same information from the `NewEpochState` --- --- Implementation for @GetFilteredDelegationsAndRewardAccounts@ query. -queryStakePoolDelegsAndRewards :: - NewEpochState era -> - Set (Credential 'Staking (EraCrypto era)) -> - ( Map (Credential 'Staking (EraCrypto era)) (KeyHash 'StakePool (EraCrypto era)) - , Map (Credential 'Staking (EraCrypto era)) Coin - ) -queryStakePoolDelegsAndRewards nes = filterStakePoolDelegsAndRewards (dsUnified (getDState nes)) - -getDState :: NewEpochState era -> DState era -getDState = certDState . lsCertState . esLState . nesEs - -queryConstitution :: ConwayEraGov era => NewEpochState era -> Constitution era -queryConstitution = (^. constitutionGovStateL) . queryGovState - -queryConstitutionHash :: - ConwayEraGov era => - NewEpochState era -> - SafeHash (EraCrypto era) AnchorData -queryConstitutionHash nes = - anchorDataHash . constitutionAnchor $ queryConstitution nes - --- | This query returns all of the state related to governance -queryGovState :: NewEpochState era -> GovState era -queryGovState nes = nes ^. nesEpochStateL . esLStateL . lsUTxOStateL . utxosGovStateL - --- | Query DRep state. -queryDRepState :: - NewEpochState era -> - -- | Specify a set of DRep credentials whose state should be returned. When this set is - -- empty, states for all of the DReps will be returned. - Set (Credential 'DRepRole (EraCrypto era)) -> - Map (Credential 'DRepRole (EraCrypto era)) (DRepState (EraCrypto era)) -queryDRepState nes creds - | null creds = drepsState - | otherwise = - drepsState `Map.restrictKeys` creds - & if numDormantEpochs == EpochNo 0 - then id - else (<&> drepExpiryL %~ binOpEpochNo (+) numDormantEpochs) - where - drepsState = vsDReps $ certVState $ lsCertState $ esLState $ nesEs nes - numDormantEpochs = vsNumDormantEpochs $ certVState $ lsCertState $ esLState $ nesEs nes - --- | Query DRep stake distribution. Note that this can be an expensive query because there --- is a chance that current distribution has not been fully computed yet. -queryDRepStakeDistr :: - ConwayEraGov era => - NewEpochState era -> - -- | Specify DRep Ids whose stake distribution should be returned. When this set is - -- empty, distributions for all of the DReps will be returned. - Set (DRep (EraCrypto era)) -> - Map (DRep (EraCrypto era)) Coin -queryDRepStakeDistr nes creds - | null creds = Map.map fromCompact distr - | otherwise = Map.map fromCompact $ distr `Map.restrictKeys` creds - where - distr = psDRepDistr . fst $ finishDRepPulser (nes ^. newEpochStateGovStateL . drepPulsingStateGovStateL) - --- | Query committee members -queryCommitteeState :: NewEpochState era -> CommitteeState era -queryCommitteeState nes = - vsCommitteeState $ certVState $ lsCertState $ esLState $ nesEs nes -{-# DEPRECATED queryCommitteeState "In favor of `queryCommitteeMembersState`" #-} - --- | Query committee members. Whenever the system is in No Confidence mode this query will --- return `Nothing`. -queryCommitteeMembersState :: - forall era. - ConwayEraGov era => - -- | filter by cold credentials (don't filter when empty) - Set (Credential 'ColdCommitteeRole (EraCrypto era)) -> - -- | filter by hot credentials (don't filter when empty) - Set (Credential 'HotCommitteeRole (EraCrypto era)) -> - -- | filter by status (don't filter when empty) - -- (useful, for discovering, for example, only active members) - Set MemberStatus -> - NewEpochState era -> - CommitteeMembersState (EraCrypto era) -queryCommitteeMembersState coldCredsFilter hotCredsFilter statusFilter nes = - let - committee = queryGovState nes ^. committeeGovStateL - comMembers = foldMap' committeeMembers committee - nextComMembers = getNextEpochCommitteeMembers nes - comStateMembers = - csCommitteeCreds $ - nes ^. nesEpochStateL . esLStateL . lsCertStateL . certVStateL . vsCommitteeStateL - - withFilteredColdCreds s - | Set.null coldCredsFilter = s - | otherwise = s `Set.intersection` coldCredsFilter - - relevantColdKeys - | Set.null statusFilter || Set.member Unrecognized statusFilter = - withFilteredColdCreds $ - Set.unions - [ Map.keysSet comMembers - , Map.keysSet comStateMembers - , Map.keysSet nextComMembers - ] - | otherwise = withFilteredColdCreds $ Map.keysSet comMembers - - relevantHotKeys = - Set.fromList - [ ck - | (ck, CommitteeHotCredential hk) <- Map.toList comStateMembers - , hk `Set.member` hotCredsFilter - ] - - relevant - | Set.null hotCredsFilter = relevantColdKeys - | otherwise = relevantColdKeys `Set.intersection` relevantHotKeys - - cms = Map.mapMaybe id $ Map.fromSet mkMaybeMemberState relevant - currentEpoch = nes ^. nesELL - - mkMaybeMemberState :: - Credential 'ColdCommitteeRole (EraCrypto era) -> - Maybe (CommitteeMemberState (EraCrypto era)) - mkMaybeMemberState coldCred = do - let mbExpiry = Map.lookup coldCred comMembers - let status = case mbExpiry of - Nothing -> Unrecognized - Just expiry - | currentEpoch > expiry -> Expired - | otherwise -> Active - guard (null statusFilter || status `Set.member` statusFilter) - let hkStatus = - case Map.lookup coldCred comStateMembers of - Nothing -> MemberNotAuthorized - Just (CommitteeMemberResigned anchor) -> MemberResigned (strictMaybeToMaybe anchor) - Just (CommitteeHotCredential hk) -> MemberAuthorized hk - pure $ CommitteeMemberState hkStatus status mbExpiry (nextEpochChange coldCred) - - nextEpochChange :: Credential 'ColdCommitteeRole (EraCrypto era) -> NextEpochChange - nextEpochChange ck - | not inCurrent && inNext = ToBeEnacted - | not inNext = ToBeRemoved - | Just curTerm <- lookupCurrent - , Just nextTerm <- lookupNext - , curTerm /= nextTerm - , -- if the term is adjusted such that it expires in the next epoch, - -- we set it to ToBeExpired instead of TermAdjusted - not expiringNext = - TermAdjusted nextTerm - | expiringCurrent || expiringNext = ToBeExpired - | otherwise = NoChangeExpected - where - lookupCurrent = Map.lookup ck comMembers - lookupNext = Map.lookup ck nextComMembers - inCurrent = isJust lookupCurrent - inNext = isJust lookupNext - expiringCurrent = lookupCurrent == Just currentEpoch - expiringNext = lookupNext == Just currentEpoch - in - CommitteeMembersState - { csCommittee = cms - , csThreshold = strictMaybeToMaybe $ (^. committeeThresholdL) <$> committee - , csEpochNo = currentEpoch - } - -queryAccountState :: - NewEpochState era -> - AccountState -queryAccountState = view $ nesEsL . esAccountStateL - -getNextEpochCommitteeMembers :: - ConwayEraGov era => - NewEpochState era -> - Map (Credential 'ColdCommitteeRole (EraCrypto era)) EpochNo -getNextEpochCommitteeMembers nes = - let ratifyState = snd . finishDRepPulser $ queryGovState nes ^. drepPulsingStateGovStateL - committee = ratifyState ^. rsEnactStateL . ensCommitteeL - in foldMap' committeeMembers committee diff --git a/libs/cardano-ledger-api/src/Cardano/Ledger/Api/State/Query/CommitteeMembersState.hs b/libs/cardano-ledger-api/src/Cardano/Ledger/Api/State/Query/CommitteeMembersState.hs deleted file mode 100644 index db4875f636e..00000000000 --- a/libs/cardano-ledger-api/src/Cardano/Ledger/Api/State/Query/CommitteeMembersState.hs +++ /dev/null @@ -1,186 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} - -module Cardano.Ledger.Api.State.Query.CommitteeMembersState ( - CommitteeMemberState (..), - CommitteeMembersState (..), - HotCredAuthStatus (..), - MemberStatus (..), - NextEpochChange (..), -) where - -import Cardano.Ledger.BaseTypes (Anchor, UnitInterval) -import Cardano.Ledger.Binary ( - DecCBOR (decCBOR), - EncCBOR (encCBOR), - decodeEnumBounded, - encodeEnum, - ) -import Cardano.Ledger.Binary.Coders (Decode (..), Encode (..), decode, encode, (!>), ( EncCBOR (HotCredAuthStatus c) where - encCBOR = - encode . \case - MemberAuthorized cred -> Sum MemberAuthorized 0 !> To cred - MemberNotAuthorized -> Sum MemberNotAuthorized 1 - MemberResigned anchor -> Sum MemberResigned 2 !> To anchor - -instance Crypto c => DecCBOR (HotCredAuthStatus c) where - decCBOR = - decode $ Summands "HotCredAuthStatus" $ \case - 0 -> SumD MemberAuthorized SumD MemberNotAuthorized - 2 -> SumD MemberResigned Invalid k - -data NextEpochChange - = --- | Member not enacted yet, but will be at the next epoch - ToBeEnacted - | -- | Member will be removed - ToBeRemoved - | NoChangeExpected - | ToBeExpired - | TermAdjusted EpochNo - deriving (Show, Eq, Generic, Ord, ToJSON) - -instance EncCBOR NextEpochChange where - encCBOR = - encode . \case - ToBeEnacted -> Sum ToBeEnacted 0 - ToBeRemoved -> Sum ToBeRemoved 1 - NoChangeExpected -> Sum NoChangeExpected 2 - ToBeExpired -> Sum ToBeExpired 3 - TermAdjusted e -> Sum TermAdjusted 4 !> To e - -instance DecCBOR NextEpochChange where - decCBOR = - decode $ Summands "NextEpochChange" $ \case - 0 -> SumD ToBeEnacted - 1 -> SumD ToBeRemoved - 2 -> SumD NoChangeExpected - 3 -> SumD ToBeExpired - 4 -> SumD TermAdjusted Invalid k - -data CommitteeMemberState c = CommitteeMemberState - { cmsHotCredAuthStatus :: !(HotCredAuthStatus c) - , cmsStatus :: !MemberStatus - , cmsExpiration :: !(Maybe EpochNo) - -- ^ Absolute epoch number when the member expires - , cmsNextEpochChange :: !NextEpochChange - -- ^ Changes to the member at the next epoch - } - deriving (Show, Eq, Generic) - -deriving instance Ord (CommitteeMemberState c) - -instance Crypto c => EncCBOR (CommitteeMemberState c) where - encCBOR (CommitteeMemberState cStatus mStatus ex nec) = - encode $ - Rec (CommitteeMemberState @c) - !> To cStatus - !> To mStatus - !> To ex - !> To nec - -instance Crypto c => DecCBOR (CommitteeMemberState c) where - decCBOR = - decode $ - RecD CommitteeMemberState - ToJSON (CommitteeMemberState c) where - toJSON = object . toCommitteeMemberStatePairs - toEncoding = pairs . mconcat . toCommitteeMemberStatePairs - -toCommitteeMemberStatePairs :: (Crypto c, KeyValue e a) => CommitteeMemberState c -> [a] -toCommitteeMemberStatePairs c@(CommitteeMemberState _ _ _ _) = - let CommitteeMemberState {..} = c - in [ "hotCredsAuthStatus" .= cmsHotCredAuthStatus - , "status" .= cmsStatus - , "expiration" .= cmsExpiration - , "nextEpochChange" .= cmsNextEpochChange - ] - -data CommitteeMembersState c = CommitteeMembersState - { csCommittee :: !(Map (Credential 'ColdCommitteeRole c) (CommitteeMemberState c)) - , csThreshold :: !(Maybe UnitInterval) - , csEpochNo :: !EpochNo - -- ^ Current epoch number. This is necessary to interpret committee member states - } - deriving (Eq, Show, Generic) - -deriving instance Ord (CommitteeMembersState c) - -instance Crypto c => EncCBOR (CommitteeMembersState c) where - encCBOR c@(CommitteeMembersState _ _ _) = - let CommitteeMembersState {..} = c - in encode $ - Rec (CommitteeMembersState @c) - !> To csCommittee - !> To csThreshold - !> To csEpochNo - -instance Crypto c => DecCBOR (CommitteeMembersState c) where - decCBOR = - decode $ - RecD CommitteeMembersState - ToJSON (CommitteeMembersState c) where - toJSON = object . toCommitteeMembersStatePairs - toEncoding = pairs . mconcat . toCommitteeMembersStatePairs - -toCommitteeMembersStatePairs :: (KeyValue e a, Crypto c) => CommitteeMembersState c -> [a] -toCommitteeMembersStatePairs c@(CommitteeMembersState _ _ _) = - let CommitteeMembersState {..} = c - in [ "committee" .= csCommittee - , "threshold" .= csThreshold - , "epoch" .= csEpochNo - ] diff --git a/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Transition.hs b/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Transition.hs deleted file mode 100644 index 81590d9a238..00000000000 --- a/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Transition.hs +++ /dev/null @@ -1,54 +0,0 @@ --- | This module is used for defining initial configuration for all. It is also used in --- testing and benchmarking to initilize a chain in a particular era without going through --- the trouble of generating all the history for preceeding eras. -module Cardano.Ledger.Api.Transition ( - EraTransition, - TransitionConfig, - mkLatestTransitionConfig, - mkTransitionConfig, - mkShelleyTransitionConfig, - tcShelleyGenesisL, - tcPreviousEraConfigL, - tcTranslationContextL, - - -- * Genesis - ShelleyGenesis (..), - AlonzoGenesis (..), - ConwayGenesis (..), - - -- * Functions for Testing - tcInitialPParamsG, - tcInitialFundsL, - tcInitialStakingL, - createInitialState, - injectIntoTestState, -) where - -import Cardano.Ledger.Alonzo.Genesis (AlonzoGenesis (..)) -import Cardano.Ledger.Api.Era (LatestKnownEra) -import Cardano.Ledger.Conway.Genesis (ConwayGenesis (..)) -import Cardano.Ledger.Crypto -import Cardano.Ledger.Shelley.Genesis (ShelleyGenesis (..)) -import Cardano.Ledger.Shelley.Transition ( - EraTransition (..), - TransitionConfig, - createInitialState, - mkShelleyTransitionConfig, - tcInitialFundsL, - tcInitialStakingL, - ) -import Data.Function ((&)) - -mkLatestTransitionConfig :: - Crypto c => - ShelleyGenesis c -> - AlonzoGenesis -> - ConwayGenesis c -> - TransitionConfig (LatestKnownEra c) -mkLatestTransitionConfig shelleyGenesis alonzoGenesis conwayGenesis = - mkShelleyTransitionConfig shelleyGenesis - & mkTransitionConfig () - & mkTransitionConfig () - & mkTransitionConfig alonzoGenesis - & mkTransitionConfig () - & mkTransitionConfig conwayGenesis diff --git a/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Tx.hs b/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Tx.hs deleted file mode 100644 index 237c8840f83..00000000000 --- a/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Tx.hs +++ /dev/null @@ -1,84 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeOperators #-} - --- | Transaction building and inspecting relies heavily on lenses (`microlens`). Therefore, some --- familiarity with those is necessary. However, you can probably go a long way by simply --- looking at the examples and try to go from there. --- --- Let's start by defining the GHC extensions and imports. --- --- >>> :set -XScopedTypeVariables --- >>> import Test.QuickCheck --- >>> import qualified Data.Sequence.Strict as StrictSeq --- >>> import Cardano.Ledger.Api.Era (Babbage) --- >>> import Lens.Micro --- >>> import Test.Cardano.Ledger.Babbage.Arbitrary () --- --- Here's an example on how to build a Babbage era unbalanced transaction containing a single --- transaction output using the provided interface. --- --- >>> :{ --- quickCheck $ \(txOut :: TxOut Babbage) -> --- let --- -- Defining a Babbage era transaction body with a single random transaction output --- txBody = mkBasicTxBody --- & outputsTxBodyL <>~ StrictSeq.singleton txOut --- -- Defining a basic transaction with our transaction body --- tx = mkBasicTx txBody --- in --- -- We verify that the transaction's outputs contains our single random output --- tx ^. bodyTxL . outputsTxBodyL == StrictSeq.singleton txOut --- :} --- +++ OK, passed 100 tests. -module Cardano.Ledger.Api.Tx ( - -- | Building and inspecting transaction bodies - module Cardano.Ledger.Api.Tx.Body, - module Cardano.Ledger.Api.Tx.Cert, - module Cardano.Ledger.Api.Tx.AuxData, - module Cardano.Ledger.Api.Tx.Wits, - - -- * Shelley onwards - EraTx (Tx), - mkBasicTx, - bodyTxL, - witsTxL, - auxDataTxL, - sizeTxF, - getMinFeeTx, - setMinFeeTx, - setMinFeeTxUtxo, - calcMinFeeTx, - estimateMinFeeTx, - txIdTx, - - -- * Alonzo onwards - AlonzoEraTx, - isValidTxL, - IsValid (..), - - -- ** Execution units - evalTxExUnits, - RedeemerReport, - evalTxExUnitsWithLogs, - RedeemerReportWithLogs, - TransactionScriptFailure (..), -) -where - -import Cardano.Ledger.Alonzo.Tx (AlonzoEraTx (..), IsValid (..)) -import Cardano.Ledger.Api.Era () -import Cardano.Ledger.Api.Scripts.ExUnits ( - RedeemerReport, - RedeemerReportWithLogs, - TransactionScriptFailure (..), - evalTxExUnits, - evalTxExUnitsWithLogs, - ) -import Cardano.Ledger.Api.Tx.AuxData -import Cardano.Ledger.Api.Tx.Body -import Cardano.Ledger.Api.Tx.Cert -import Cardano.Ledger.Api.Tx.Wits -import Cardano.Ledger.Core (EraTx (..), txIdTx) -import Cardano.Ledger.Tools (calcMinFeeTx, estimateMinFeeTx, setMinFeeTx, setMinFeeTxUtxo) diff --git a/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Tx/Address.hs b/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Tx/Address.hs deleted file mode 100644 index f4f84f20239..00000000000 --- a/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Tx/Address.hs +++ /dev/null @@ -1,108 +0,0 @@ -module Cardano.Ledger.Api.Tx.Address ( - -- * Address - Addr (..), - getNetwork, - BootstrapAddress (..), - serialiseAddr, - - -- ** Strict decoders - - -- | Decoders below will only decode addresses that are allowed to be placed on chain - -- today. Historically there were a few bugs in the decoder which allowed a few - -- malformed addressed to be placed on chain. If you need backwards compatibility, reach - -- out for `decodeAddrLenient`. - decodeAddr, - decodeAddrEither, - decodeAddrShort, - decodeAddrShortEither, - - -- ** Lenient decoders - - -- | These lenient decoders do not fail for addresses with known bugs - DecAddr (..), - decodeAddrLenient, - decodeAddrLenientEither, - - -- * Reward Account - RewardAccount (..), - mkRwdAcnt, - serialiseRewardAccount, - deserialiseRewardAccount, - - -- * Deprecations - RewardAcnt, - serialiseRewardAcnt, - deserialiseRewardAcnt, -) -where - -import Cardano.Ledger.Address -import Cardano.Ledger.Crypto -import Control.Applicative ((<|>)) -import Control.Monad.Trans.Fail (runFail, runFailLast) -import Control.Monad.Trans.State.Strict (evalStateT, get) -import qualified Data.ByteString as BS -import Data.ByteString.Short (ShortByteString) - --- | Same as `decodeAddrShort`, but produces an `Either` result -decodeAddrShortEither :: - Crypto c => - ShortByteString -> - Either String (Addr c) -decodeAddrShortEither sbs = runFail $ evalStateT (decodeAddrStateT sbs) 0 -{-# INLINE decodeAddrShortEither #-} - --- | Same as `decodeAddr`, but works on `ShortByteString` -decodeAddrShort :: - (Crypto c, MonadFail m) => - ShortByteString -> - m (Addr c) -decodeAddrShort sbs = evalStateT (decodeAddrStateT sbs) 0 -{-# INLINE decodeAddrShort #-} - --- | Decoded Address. -data DecAddr c - = -- | Address was decoded with no problems - DecAddr (Addr c) - | -- | Address was decoded, but it contains an invalid `Cardano.Ledger.Credential.Ptr` - DecAddrBadPtr (Addr c) - | -- | Address was decoded, but not all of input was consumed - DecAddrUnconsumed - (Addr c) - -- | Left over bytes after consuming the input - BS.ByteString - deriving (Eq, Show) - --- | This is a lenient decoder that will disregard known bugs in the address --- deserialization. This function is intended for clients that need to deal with --- historical data that has already been placed on chain. If you also require information --- on what exactly is bad in the address, or you would like to guard only against a --- specific bug, you should use `decodeAddrLenientEither` instead. --- --- @since 1.8.0 -decodeAddrLenient :: - (Crypto c, MonadFail m) => - BS.ByteString -> - m (Addr c) -decodeAddrLenient bs = evalStateT (decodeAddrStateLenientT True True bs) 0 - --- | Decode an address and fail only for addresses that could have never been placed on --- chain, while decoding addresses with information about potential problems in --- them. Similar to `decodeAddrLenient`, this function is not intended for addresses that --- will be placed into a new transaction. --- --- @since 1.8.0 -decodeAddrLenientEither :: - Crypto c => - BS.ByteString -> - Either String (DecAddr c) -decodeAddrLenientEither bs = - runFailLast $ - (DecAddr <$> decodeAddr bs) - <|> (DecAddrBadPtr <$> evalStateT (decodeAddrStateLenientT True False bs) 0) - <|> decodeWithUnconsumed - where - decodeWithUnconsumed = flip evalStateT 0 $ do - addr <- decodeAddrStateLenientT False True bs - bytesConsumed <- get - pure $ DecAddrUnconsumed addr (BS.drop bytesConsumed bs) diff --git a/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Tx/AuxData.hs b/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Tx/AuxData.hs deleted file mode 100644 index 531c6352399..00000000000 --- a/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Tx/AuxData.hs +++ /dev/null @@ -1,29 +0,0 @@ -module Cardano.Ledger.Api.Tx.AuxData ( - EraTxAuxData (TxAuxData), - upgradeTxAuxData, - hashTxAuxData, - validateTxAuxData, - - -- * Shelley - ShelleyTxAuxData (..), - Metadatum (..), - - -- * Allegra - AllegraTxAuxData (..), - - -- * Alonzo - AlonzoTxAuxData (..), - mkAlonzoTxAuxData, - getAlonzoTxAuxDataScripts, -) -where - -import Cardano.Ledger.Allegra.TxAuxData (AllegraTxAuxData (..)) -import Cardano.Ledger.Alonzo.TxAuxData ( - AlonzoTxAuxData (..), - getAlonzoTxAuxDataScripts, - mkAlonzoTxAuxData, - ) -import Cardano.Ledger.Api.Era () -import Cardano.Ledger.Core (EraTxAuxData (..)) -import Cardano.Ledger.Shelley.TxAuxData (Metadatum (..), ShelleyTxAuxData (..)) diff --git a/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Tx/Body.hs b/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Tx/Body.hs deleted file mode 100644 index 40f8a91138f..00000000000 --- a/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Tx/Body.hs +++ /dev/null @@ -1,152 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} - -module Cardano.Ledger.Api.Tx.Body ( - -- | Building and inspecting transaction outputs - module Cardano.Ledger.Api.Tx.Out, - -- | Working with Timelock scripts and Plutus scripts - module Cardano.Ledger.Api.Scripts, - EraTxBody (TxBody), - mkBasicTxBody, - inputsTxBodyL, - outputsTxBodyL, - feeTxBodyL, - withdrawalsTxBodyL, - Withdrawals (..), - auxDataHashTxBodyL, - AuxiliaryDataHash, - spendableInputsTxBodyF, - allInputsTxBodyF, - evalBalanceTxBody, - txIdTxBody, - - -- * Shelley Era - ShelleyEraTxBody, - ttlTxBodyL, - updateTxBodyL, - certsTxBodyL, - - -- * Allegra Era - AllegraEraTxBody, - vldtTxBodyL, - ValidityInterval (..), - invalidBeforeL, - invalidHereAfterL, - - -- * Mary Era - MaryEraTxBody, - mintTxBodyL, - mintValueTxBodyF, - mintedTxBodyF, - - -- * Alonzo Era - AlonzoEraTxBody, - collateralInputsTxBodyL, - reqSignerHashesTxBodyL, - scriptIntegrityHashTxBodyL, - networkIdTxBodyL, - redeemerPointer, - redeemerPointerInverse, - - -- * Babbage Era - BabbageEraTxBody, - sizedOutputsTxBodyL, - referenceInputsTxBodyL, - totalCollateralTxBodyL, - collateralReturnTxBodyL, - sizedCollateralReturnTxBodyL, - allSizedOutputsTxBodyF, - - -- * Conway Era - ConwayEraTxBody, - votingProceduresTxBodyL, - proposalProceduresTxBodyL, -) -where - -import Cardano.Ledger.Address (Withdrawals (..)) -import Cardano.Ledger.Allegra.Core (AllegraEraTxBody (..)) -import Cardano.Ledger.Alonzo.TxBody (AlonzoEraTxBody (..)) -import Cardano.Ledger.Api.Era () -import Cardano.Ledger.Api.Scripts -import Cardano.Ledger.Api.Tx.Out -import Cardano.Ledger.AuxiliaryData (AuxiliaryDataHash) -import Cardano.Ledger.Babbage.TxBody (BabbageEraTxBody (..)) -import Cardano.Ledger.BaseTypes (SlotNo, StrictMaybe (..)) -import Cardano.Ledger.Coin (Coin) -import Cardano.Ledger.Conway.TxBody (ConwayEraTxBody (..)) -import Cardano.Ledger.Core (Era (EraCrypto), EraTxBody (..), PParams, Value, txIdTxBody) -import Cardano.Ledger.Credential (Credential) -import Cardano.Ledger.Keys (KeyHash (..), KeyRole (..)) -import Cardano.Ledger.Mary.Core (MaryEraTxBody (..)) -import Cardano.Ledger.Shelley.Core (ShelleyEraTxBody (..)) -import Cardano.Ledger.Shelley.UTxO (getProducedValue) -import Cardano.Ledger.UTxO (EraUTxO (getConsumedValue), UTxO) -import Cardano.Ledger.Val ((<->)) -import Lens.Micro (Lens', lens) - --- | Evaluate the difference between the value currently being consumed by a transaction --- and the total value being produced. This value will be zero for a valid transaction. --- --- In case when full `Cardano.Ledger.CertState` is available then this can be simplified to: --- --- > let lookupRefund = lookupDepositDState (certDState dpState) --- > let isRegPoolId = (`Map.member` psStakePoolParams (certPState dpState)) --- > evalBalanceTxBody pp lookupRefund isRegPoolId utxo txBody -evalBalanceTxBody :: - EraUTxO era => - -- | Current protocol parameters - PParams era -> - -- | Lookup current deposit amount for a registered stake credential delegation. This - -- function must produce valid answer for all of the stake credentials present in any of - -- the `DeRegKey` delegation certificates in the supplied `TxBody`. In other words, - -- there is no requirement to know about all of the delegation certificates in the - -- ledger state, just the ones this transaction cares about. - (Credential 'Staking (EraCrypto era) -> Maybe Coin) -> - -- | Lookup current deposit amount for a registered DRep credential. This - -- function must produce valid answer for all of the DRep credentials present in any of - -- the `UnRegDRep` certificates in the supplied `TxBody`. In other words, - -- there is no requirement to know about all of the DRep registrations in the - -- ledger state, just the ones this transaction cares about. - (Credential 'DRepRole (EraCrypto era) -> Maybe Coin) -> - -- | Check whether a pool with a supplied PoolStakeId is already registered. There is no - -- requirement to answer this question for all stake pool credentials, just for the ones - -- that have the registration certificates included in the supplied `TxBody` - (KeyHash 'StakePool (EraCrypto era) -> Bool) -> - -- | The UTxO relevant to the transaction. - UTxO era -> - -- | The transaction being evaluated for balance. - TxBody era -> - -- | The difference between what the transaction consumes and what it produces. - Value era -evalBalanceTxBody pp lookupKeyRefund lookupDRepRefund isRegPoolId utxo txBody = - getConsumedValue pp lookupKeyRefund lookupDRepRefund utxo txBody - <-> getProducedValue pp isRegPoolId txBody - --- | Lens to access the 'invalidBefore' field of a 'ValidityInterval' as a 'Maybe SlotNo'. -invalidBeforeL :: Lens' ValidityInterval (Maybe SlotNo) -invalidBeforeL = lens g s - where - g :: ValidityInterval -> Maybe SlotNo - g (ValidityInterval ma _) = - case ma of - SNothing -> Nothing - SJust a -> Just a - - s :: ValidityInterval -> Maybe SlotNo -> ValidityInterval - s (ValidityInterval _ b) a = ValidityInterval (maybe SNothing SJust a) b - --- | Lens to access the 'invalidHereAfter' field of a 'ValidityInterval' as a 'Maybe SlotNo'. -invalidHereAfterL :: Lens' ValidityInterval (Maybe SlotNo) -invalidHereAfterL = lens g s - where - g :: ValidityInterval -> Maybe SlotNo - g (ValidityInterval _ mb) = - case mb of - SNothing -> Nothing - SJust b -> Just b - - s :: ValidityInterval -> Maybe SlotNo -> ValidityInterval - s (ValidityInterval ma _) = ValidityInterval ma . maybe SNothing SJust diff --git a/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Tx/Cert.hs b/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Tx/Cert.hs deleted file mode 100644 index 4b6bc7f1357..00000000000 --- a/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Tx/Cert.hs +++ /dev/null @@ -1,106 +0,0 @@ -{-# LANGUAGE PatternSynonyms #-} - -module Cardano.Ledger.Api.Tx.Cert ( - EraTxCert (TxCert, TxCertUpgradeError), - upgradeTxCert, - getVKeyWitnessTxCert, - getScriptWitnessTxCert, - pattern RegPoolTxCert, - pattern RetirePoolTxCert, - lookupRegStakeTxCert, - lookupUnRegStakeTxCert, - isRegStakeTxCert, - isUnRegStakeTxCert, - - -- * Shelley Era - - -- | Complete set of patterns for Shelley through Babbage `TxCert`: - -- - -- @ - -- `TxCert` = - -- `RegPoolTxCert` - -- `RetirePoolTxCert` - -- `RegTxCert` - -- `UnRegTxCert` - -- `DelegStakeTxCert` - -- `MirTxCert` - -- `GenesisDelegTxCert` - -- @ - ShelleyEraTxCert, - pattern MirTxCert, - pattern GenesisDelegTxCert, - pattern RegTxCert, - pattern UnRegTxCert, - pattern DelegStakeTxCert, - - -- * Conway Era - - -- | Complete set of patterns for Conway `TxCert`: - -- - -- @ - -- `TxCert` = - -- `RegPoolTxCert` - -- `RetirePoolTxCert` - -- `RegTxCert` - -- `UnRegTxCert` - -- `RegDepositTxCert` - -- `UnRegDepositTxCert` - -- `DelegTxCert` - -- `RegDepositDelegTxCert` - -- `AuthCommitteeHotKeyTxCert` - -- `ResignCommitteeColdTxCert` - -- `RegDRepTxCert` - -- `UnRegDRepTxCert` - -- @ - ConwayEraTxCert, - getDelegateeTxCert, - Delegatee (..), - getStakePoolDelegatee, - pattern RegDepositTxCert, - pattern UnRegDepositTxCert, - pattern DelegTxCert, - pattern RegDepositDelegTxCert, - pattern AuthCommitteeHotKeyTxCert, - pattern ResignCommitteeColdTxCert, - pattern RegDRepTxCert, - pattern UnRegDRepTxCert, -) -where - -import Cardano.Ledger.Conway.TxCert ( - ConwayEraTxCert, - Delegatee (..), - getDelegateeTxCert, - getStakePoolDelegatee, - pattern AuthCommitteeHotKeyTxCert, - pattern DelegTxCert, - pattern RegDRepTxCert, - pattern RegDepositDelegTxCert, - pattern RegDepositTxCert, - pattern ResignCommitteeColdTxCert, - pattern UnRegDRepTxCert, - pattern UnRegDepositTxCert, - ) -import Cardano.Ledger.Core ( - EraTxCert ( - TxCert, - TxCertUpgradeError, - getScriptWitnessTxCert, - getVKeyWitnessTxCert, - lookupRegStakeTxCert, - lookupUnRegStakeTxCert, - upgradeTxCert - ), - isRegStakeTxCert, - isUnRegStakeTxCert, - pattern RegPoolTxCert, - pattern RetirePoolTxCert, - ) -import Cardano.Ledger.Shelley.TxCert ( - ShelleyEraTxCert, - pattern DelegStakeTxCert, - pattern GenesisDelegTxCert, - pattern MirTxCert, - pattern RegTxCert, - pattern UnRegTxCert, - ) diff --git a/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Tx/In.hs b/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Tx/In.hs deleted file mode 100644 index 916b202c117..00000000000 --- a/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Tx/In.hs +++ /dev/null @@ -1,29 +0,0 @@ -module Cardano.Ledger.Api.Tx.In ( - -- * Transaction input - TxIn (..), - - -- ** Transaction ID - TxId (..), - mkTxInPartial, - - -- ** Transaction index - TxIx, - mkTxIx, - txIxToInt, - txIxFromIntegral, - mkTxIxPartial, -) -where - -import Cardano.Ledger.BaseTypes ( - TxIx, - mkTxIx, - mkTxIxPartial, - txIxFromIntegral, - txIxToInt, - ) -import Cardano.Ledger.TxIn ( - TxId (..), - TxIn (TxIn), - mkTxInPartial, - ) diff --git a/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Tx/Out.hs b/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Tx/Out.hs deleted file mode 100644 index e095f255d82..00000000000 --- a/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Tx/Out.hs +++ /dev/null @@ -1,161 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - --- | This module is used for building and inspecting transaction outputs. --- --- You'll find some examples below. --- --- Let's start by defining the GHC extensions and imports. --- --- >>> :set -XTypeApplications --- >>> import Cardano.Ledger.Api.Era (Babbage) --- >>> import Lens.Micro --- >>> import Test.Cardano.Ledger.Babbage.Serialisation.Generators () -- Neded for doctests only --- >>> import Test.QuickCheck -- Needed for doctests only --- --- Here's an example on how to build a very basic Babbage era transaction output with a random --- address and value, and without any datum or reference script. --- --- >>> :{ --- quickCheck $ \addr val -> --- let --- -- Defining a Babbage era transaction output with some random address and value. --- txOut = mkBasicTxOut @Babbage addr val --- in --- -- We verify that the transaction output contains our random address and value. --- txOut ^. addrTxOutL == addr && txOut ^. valueTxOutL == val --- :} --- +++ OK, passed 100 tests. -module Cardano.Ledger.Api.Tx.Out ( - module Cardano.Ledger.Api.Tx.Address, - EraTxOut (TxOut), - mkBasicTxOut, - upgradeTxOut, - - -- ** Value - valueTxOutL, - coinTxOutL, - isAdaOnlyTxOutF, - - -- ** Address - addrTxOutL, - bootAddrTxOutF, - - -- ** Size - getMinCoinTxOut, - setMinCoinTxOut, - getMinCoinSizedTxOut, - setMinCoinSizedTxOut, - ensureMinCoinTxOut, - ensureMinCoinSizedTxOut, - - -- * Shelley, Allegra and Mary Era - - -- * Alonzo Era - AlonzoEraTxOut, - dataHashTxOutL, - DataHash, - datumTxOutF, - - -- * Babbage Era - BabbageEraTxOut, - dataTxOutL, - Data (..), - datumTxOutL, - Datum (..), - referenceScriptTxOutL, -) -where - -import Cardano.Ledger.Alonzo.Core (AlonzoEraTxOut (..)) -import Cardano.Ledger.Api.Era () -import Cardano.Ledger.Api.Scripts.Data (Data (..), DataHash, Datum (..)) -import Cardano.Ledger.Api.Tx.Address -import Cardano.Ledger.Babbage.Core (BabbageEraTxOut (..)) -import Cardano.Ledger.Binary -import Cardano.Ledger.Coin -import Cardano.Ledger.Core ( - EraTxOut (..), - PParams, - bootAddrTxOutF, - coinTxOutL, - eraProtVerLow, - isAdaOnlyTxOutF, - ) -import Lens.Micro - -setMinCoinTxOutInternal :: - EraTxOut era => - (Coin -> Coin -> Bool) -> - PParams era -> - TxOut era -> - TxOut era -setMinCoinTxOutInternal f pp = go - where - go !txOut = - let curMinCoin = getMinCoinTxOut pp txOut - curCoin = txOut ^. coinTxOutL - in if curCoin `f` curMinCoin - then txOut - else go (txOut & coinTxOutL .~ curMinCoin) - --- | Same as `setMinCoinSizedTxOut`, except it doesn't require the size of the --- TxOut and will recompute it if needed. Initial amount is not important. -setMinCoinTxOut :: EraTxOut era => PParams era -> TxOut era -> TxOut era -setMinCoinTxOut = setMinCoinTxOutInternal (==) - --- | Similar to `setMinCoinTxOut` it will guarantee that the minimum requirement for the --- output amount is satisified, however it makes it possible to set a higher amount than --- the minimaly required. --- --- @ --- > ensureMinCoinTxOut pp (txOut & coinTxOutL .~ zero) == setMinCoinTxOut pp (txOut & coinTxOutL .~ zero) --- > (ensureMinCoinTxOut pp txOut ^. coinTxOutL) >= (setMinCoinTxOut pp txOut ^. coinTxOutL) --- @ -ensureMinCoinTxOut :: EraTxOut era => PParams era -> TxOut era -> TxOut era -ensureMinCoinTxOut = setMinCoinTxOutInternal (>=) - -setMinCoinSizedTxOutInternal :: - forall era. - EraTxOut era => - (Coin -> Coin -> Bool) -> - PParams era -> - Sized (TxOut era) -> - Sized (TxOut era) -setMinCoinSizedTxOutInternal f pp = go - where - version = eraProtVerLow @era - go !txOut = - let curMinCoin = getMinCoinSizedTxOut pp txOut - curCoin = txOut ^. toSizedL version coinTxOutL - in if curCoin `f` curMinCoin - then txOut - else go (txOut & toSizedL version coinTxOutL .~ curMinCoin) - --- | This function will adjust the output's `Coin` value to the smallest amount --- allowed by the UTXO rule. Initial amount is not important. -setMinCoinSizedTxOut :: - forall era. - EraTxOut era => - PParams era -> - Sized (TxOut era) -> - Sized (TxOut era) -setMinCoinSizedTxOut = setMinCoinSizedTxOutInternal (==) - --- | Similar to `setMinCoinSizedTxOut` it will guarantee that the minimum requirement for the --- output amount is satisified, however it makes it possible to set a higher amount than --- the minimaly required. --- --- `ensureMinCoinSizedTxOut` relates to `setMinCoinSizedTxOut` in the same way that --- `ensureMinCoinTxOut` relates to `setMinCoinTxOut`. -ensureMinCoinSizedTxOut :: - forall era. - EraTxOut era => - PParams era -> - Sized (TxOut era) -> - Sized (TxOut era) -ensureMinCoinSizedTxOut = setMinCoinSizedTxOutInternal (>=) diff --git a/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Tx/Wits.hs b/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Tx/Wits.hs deleted file mode 100644 index 4efb4233d4a..00000000000 --- a/libs/cardano-ledger-api/src/Cardano/Ledger/Api/Tx/Wits.hs +++ /dev/null @@ -1,63 +0,0 @@ -module Cardano.Ledger.Api.Tx.Wits ( - -- * Shelley onwards - EraTxWits (TxWits), - mkBasicTxWits, - - -- ** Address witness - addrTxWitsL, - KeyRole (Witness), - - -- *** WitVKey - WitVKey (WitVKey), - witVKeyBytes, - witVKeyHash, - - -- ** Byron address witness - bootAddrTxWitsL, - BootstrapWitness, - - -- ** Script witness - scriptTxWitsL, - hashScriptTxWitsL, - - -- * Alonzo onwards - AlonzoEraTxWits, - datsTxWitsL, - hashDataTxWitsL, - TxDats (..), - unTxDats, - rdmrsTxWitsL, - Redeemers (..), - unRedeemers, - PlutusPurpose, - AlonzoPlutusPurpose (..), - AsIx (..), - AsItem (..), - - -- ** Conway - ConwayPlutusPurpose (..), -) -where - -import Cardano.Ledger.Alonzo.Scripts ( - AlonzoPlutusPurpose (..), - AsItem (..), - AsIx (..), - PlutusPurpose, - ) -import Cardano.Ledger.Alonzo.TxWits ( - AlonzoEraTxWits, - Redeemers (..), - TxDats (..), - datsTxWitsL, - hashDataTxWitsL, - rdmrsTxWitsL, - unRedeemers, - unTxDats, - ) -import Cardano.Ledger.Api.Era () -import Cardano.Ledger.Conway.Scripts (ConwayPlutusPurpose (..)) -import Cardano.Ledger.Core (EraTxWits (..), hashScriptTxWitsL) -import Cardano.Ledger.Keys (KeyRole (Witness)) -import Cardano.Ledger.Keys.Bootstrap (BootstrapWitness) -import Cardano.Ledger.Keys.WitVKey (WitVKey (WitVKey), witVKeyBytes, witVKeyHash) diff --git a/libs/cardano-ledger-api/src/Cardano/Ledger/Api/UTxO.hs b/libs/cardano-ledger-api/src/Cardano/Ledger/Api/UTxO.hs deleted file mode 100644 index 04f1934ccf7..00000000000 --- a/libs/cardano-ledger-api/src/Cardano/Ledger/Api/UTxO.hs +++ /dev/null @@ -1,8 +0,0 @@ -module Cardano.Ledger.Api.UTxO ( - UTxO (..), - EraUTxO (..), -) -where - -import Cardano.Ledger.Api.Era () -import Cardano.Ledger.UTxO (EraUTxO (..), UTxO (..)) diff --git a/libs/cardano-ledger-api/test/Test/Cardano/Ledger/Api/State/Imp/QuerySpec.hs b/libs/cardano-ledger-api/test/Test/Cardano/Ledger/Api/State/Imp/QuerySpec.hs deleted file mode 100644 index d8ac1f2b361..00000000000 --- a/libs/cardano-ledger-api/test/Test/Cardano/Ledger/Api/State/Imp/QuerySpec.hs +++ /dev/null @@ -1,308 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE NumericUnderscores #-} -{-# LANGUAGE OverloadedLists #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} - -module Test.Cardano.Ledger.Api.State.Imp.QuerySpec where - -import Cardano.Ledger.Api.State.Query ( - CommitteeMemberState (..), - CommitteeMembersState (..), - HotCredAuthStatus (..), - MemberStatus (..), - NextEpochChange (..), - queryCommitteeMembersState, - ) -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.Coin (Coin (Coin)) -import Cardano.Ledger.Conway.Governance ( - Committee (..), - ConwayEraGov (..), - ConwayGovState, - EraGov (..), - ) -import Cardano.Ledger.Conway.PParams ( - dvtCommitteeNoConfidence, - dvtCommitteeNormal, - dvtUpdateToConstitution, - ppCommitteeMaxTermLengthL, - ppDRepVotingThresholdsL, - ppGovActionDepositL, - ppGovActionLifetimeL, - ) -import Cardano.Ledger.Core -import Cardano.Ledger.Credential (Credential (KeyHashObj)) -import Cardano.Ledger.Keys ( - KeyRole (..), - ) -import Cardano.Ledger.Shelley.LedgerState -import Data.Default.Class (Default (..)) -import Data.Foldable (Foldable (..)) -import qualified Data.Map.Strict as Map -import qualified Data.Set as Set -import Lens.Micro ((&), (.~)) -import Lens.Micro.Mtl -import Test.Cardano.Ledger.Conway.ImpTest -import Test.Cardano.Ledger.Core.Rational (IsRatio (..)) -import Test.Cardano.Ledger.Imp.Common - -spec :: - forall era. - ( HasCallStack - , ConwayEraImp era - , GovState era ~ ConwayGovState era - ) => - SpecWith (ImpTestState era) -spec = do - describe "Committee members hot key pre-authorization" $ do - it "authorized members not elected get removed in the next epoch" $ do - setPParams - - c1 <- KeyHashObj <$> freshKeyHash - hk1 <- registerCommitteeHotKey c1 - expectQueryResult (Set.singleton c1) mempty mempty $ - [(c1, CommitteeMemberState (MemberAuthorized hk1) Unrecognized Nothing ToBeRemoved)] - passEpoch - expectQueryResult (Set.singleton c1) mempty mempty Map.empty - - it "members should remain authorized if authorized during the epoch after their election" $ do - setPParams - (KeyHashObj drep, _, ga0) <- electBasicCommittee - - c1 <- KeyHashObj <$> freshKeyHash - _ <- electCommittee (SJust ga0) drep Set.empty [(c1, EpochNo 12)] - passEpoch - hk1 <- registerCommitteeHotKey c1 - expectQueryResult (Set.singleton c1) mempty mempty $ - [(c1, CommitteeMemberState (MemberAuthorized hk1) Unrecognized Nothing ToBeEnacted)] - passEpoch - expectQueryResult (Set.singleton c1) mempty mempty $ - [(c1, CommitteeMemberState (MemberAuthorized hk1) Active (Just 12) NoChangeExpected)] - - it "Committee queries" $ do - setPParams - (drep, _, _) <- setupSingleDRep 1_000_000 - c1 <- KeyHashObj <$> freshKeyHash - c2 <- KeyHashObj <$> freshKeyHash - c3 <- KeyHashObj <$> freshKeyHash - c4 <- KeyHashObj <$> freshKeyHash - c5 <- KeyHashObj <$> freshKeyHash - c6 <- KeyHashObj <$> freshKeyHash - c7 <- KeyHashObj <$> freshKeyHash - c8 <- KeyHashObj <$> freshKeyHash - let newMembers = - [ (c1, EpochNo 12) - , (c2, EpochNo 2) - , (c3, EpochNo 7) - , (c4, EpochNo 5) - ] - ga1 <- - electCommittee - SNothing - drep - Set.empty - newMembers - - expectMembers Set.empty - expectNoFilterQueryResult Map.empty - passEpoch >> passEpoch -- epoch 2 - expectMembers $ Map.keysSet newMembers - -- members for which the expiration epoch is the current epoch are `ToBeExpired` - expectNoFilterQueryResult - [ (c1, CommitteeMemberState MemberNotAuthorized Active (Just 12) NoChangeExpected) - , (c2, CommitteeMemberState MemberNotAuthorized Active (Just 2) ToBeExpired) - , (c3, CommitteeMemberState MemberNotAuthorized Active (Just 7) NoChangeExpected) - , (c4, CommitteeMemberState MemberNotAuthorized Active (Just 5) NoChangeExpected) - ] - -- hot cred status of members with registered hot keys becomes `MemberAuthorized` - hk1 <- registerCommitteeHotKey c1 - hk2 <- registerCommitteeHotKey c2 - expectNoFilterQueryResult - [ (c1, CommitteeMemberState (MemberAuthorized hk1) Active (Just 12) NoChangeExpected) - , (c2, CommitteeMemberState (MemberAuthorized hk2) Active (Just 2) ToBeExpired) - , (c3, CommitteeMemberState MemberNotAuthorized Active (Just 7) NoChangeExpected) - , (c4, CommitteeMemberState MemberNotAuthorized Active (Just 5) NoChangeExpected) - ] - expectQueryResult - [c2, c3, c5] - mempty - [Active, Unrecognized] - [ (c3, CommitteeMemberState MemberNotAuthorized Active (Just 7) NoChangeExpected) - , (c2, CommitteeMemberState (MemberAuthorized hk2) Active (Just 2) ToBeExpired) - ] - - c3Anchor <- arbitrary - _ <- resignCommitteeColdKey c3 (SJust c3Anchor) - hk5 <- registerCommitteeHotKey c5 - passTick - -- hot cred status of resigned member becomes `Resigned` - -- registering a hot key for a credential that's not part of the committee will yield `Unrecognized` member status - -- and expected change of `ToBeRemoved` - expectNoFilterQueryResult - [ (c1, CommitteeMemberState (MemberAuthorized hk1) Active (Just 12) NoChangeExpected) - , (c2, CommitteeMemberState (MemberAuthorized hk2) Active (Just 2) ToBeExpired) - , (c3, CommitteeMemberState (MemberResigned (Just c3Anchor)) Active (Just 7) NoChangeExpected) - , (c4, CommitteeMemberState MemberNotAuthorized Active (Just 5) NoChangeExpected) - , (c5, CommitteeMemberState (MemberAuthorized hk5) Unrecognized Nothing ToBeRemoved) - ] - expectQueryResult - [c2, c3, c5] - [hk5] - [Unrecognized] - ( Map.singleton - c5 - (CommitteeMemberState (MemberAuthorized hk5) Unrecognized Nothing ToBeRemoved) - ) - - passEpoch -- epoch 3 - -- the `Unrecognized` member gets removed from the query result - -- the member which in the previous epoch was expected `ToBeEpired`, has now MemberStatus `Expired` and `NoChangeExpected` - expectNoFilterQueryResult - [ (c1, CommitteeMemberState (MemberAuthorized hk1) Active (Just 12) NoChangeExpected) - , (c2, CommitteeMemberState (MemberAuthorized hk2) Expired (Just 2) NoChangeExpected) - , (c3, CommitteeMemberState (MemberResigned (Just c3Anchor)) Active (Just 7) NoChangeExpected) - , (c4, CommitteeMemberState MemberNotAuthorized Active (Just 5) NoChangeExpected) - ] - - -- elect new committee to be: c1 (term extended ), c3 (no changes), c4 (term shortened, expiring next epoch), c6, c7 (new) - ga2 <- - electCommittee - (SJust ga1) - drep - [c2] - [ (c1, 13) - , (c4, 4) - , (c6, 6) - , (c7, 7) - ] - passEpoch -- epoch 4 - hk6 <- registerCommitteeHotKey c6 - hk8 <- registerCommitteeHotKey c8 - - -- in the next epoch after the election, the old committee is still in place - expectMembers [c1, c2, c3, c4] - -- members that are not be part of the next committee are `ToBeRemoved` - -- members that are part of both current and next committee have `NoChangeExpected` or `TermAdjusted` - -- members that part of only next committee are `ToBeEnacted` - expectNoFilterQueryResult - [ (c1, CommitteeMemberState (MemberAuthorized hk1) Active (Just 12) (TermAdjusted 13)) - , (c2, CommitteeMemberState (MemberAuthorized hk2) Expired (Just 2) ToBeRemoved) - , (c3, CommitteeMemberState (MemberResigned (Just c3Anchor)) Active (Just 7) NoChangeExpected) - , -- though its term was adjusted, `ToBeExpired` takes precedence - (c4, CommitteeMemberState MemberNotAuthorized Active (Just 5) ToBeExpired) - , (c6, CommitteeMemberState (MemberAuthorized hk6) Unrecognized Nothing ToBeEnacted) - , (c7, CommitteeMemberState MemberNotAuthorized Unrecognized Nothing ToBeEnacted) - , (c8, CommitteeMemberState (MemberAuthorized hk8) Unrecognized Nothing ToBeRemoved) - ] - expectQueryResult - [c2] - [hk2] - [Expired] - ( Map.singleton - c2 - (CommitteeMemberState (MemberAuthorized hk2) Expired (Just 2) ToBeRemoved) - ) - - passEpoch >> passEpoch -- epoch 6 - -- the new committee is in place with the adjusted terms - expectMembers [c1, c3, c4, c6, c7] - expectNoFilterQueryResult - [ (c1, CommitteeMemberState (MemberAuthorized hk1) Active (Just 13) NoChangeExpected) - , (c3, CommitteeMemberState (MemberResigned (Just c3Anchor)) Active (Just 7) NoChangeExpected) - , (c4, CommitteeMemberState MemberNotAuthorized Expired (Just 4) NoChangeExpected) - , (c6, CommitteeMemberState (MemberAuthorized hk6) Active (Just 6) ToBeExpired) - , (c7, CommitteeMemberState MemberNotAuthorized Active (Just 7) NoChangeExpected) - ] - expectQueryResult - Set.empty - Set.empty - [Unrecognized] - Map.empty - - -- elect new committee to be: - -- c4 (which is presently `Expired`, set a new term), - -- c6 (which is presently `ToBeExpired`, set a new term) - -- c7 (which will become `ToBeExpired` in the next epoch) - -- c3 (which would become `ToBeExpired` in the next epoch, but set a new term) - _ <- - electCommittee - (SJust ga2) - drep - [c1] - [ (c3, 9) - , (c4, 9) - , (c6, 9) - ] - passEpoch -- epoch 7 - -- members whose term changed have next epoch change `TermAdjusted` - expectNoFilterQueryResult - [ (c1, CommitteeMemberState (MemberAuthorized hk1) Active (Just 13) ToBeRemoved) - , (c3, CommitteeMemberState (MemberResigned (Just c3Anchor)) Active (Just 7) (TermAdjusted 9)) - , (c4, CommitteeMemberState MemberNotAuthorized Expired (Just 4) (TermAdjusted 9)) - , (c6, CommitteeMemberState (MemberAuthorized hk6) Expired (Just 6) (TermAdjusted 9)) - , (c7, CommitteeMemberState MemberNotAuthorized Active (Just 7) ToBeExpired) - ] - passEpoch -- epoch 8 - expectMembers [c3, c4, c6, c7] - expectNoFilterQueryResult - [ (c3, CommitteeMemberState (MemberResigned (Just c3Anchor)) Active (Just 9) NoChangeExpected) - , (c4, CommitteeMemberState MemberNotAuthorized Active (Just 9) NoChangeExpected) - , (c6, CommitteeMemberState (MemberAuthorized hk6) Active (Just 9) NoChangeExpected) - , (c7, CommitteeMemberState MemberNotAuthorized Expired (Just 7) NoChangeExpected) - ] - where - expectMembers :: - HasCallStack => Set.Set (Credential 'ColdCommitteeRole (EraCrypto era)) -> ImpTestM era () - expectMembers expKhs = do - committee <- - getsNES $ - nesEsL . esLStateL . lsUTxOStateL . utxosGovStateL . committeeGovStateL - let members = Map.keysSet $ foldMap' committeeMembers committee - impAnn "Expecting committee members" $ members `shouldBe` expKhs - - expectQueryResult :: - HasCallStack => - Set.Set (Credential 'ColdCommitteeRole (EraCrypto era)) -> - Set.Set (Credential 'HotCommitteeRole (EraCrypto era)) -> - Set.Set MemberStatus -> - Map.Map (Credential 'ColdCommitteeRole (EraCrypto era)) (CommitteeMemberState (EraCrypto era)) -> - ImpTestM era () - expectQueryResult ckFilter hkFilter statusFilter expResult = do - nes <- use impNESG - let CommitteeMembersState {csCommittee} = - queryCommitteeMembersState - ckFilter - hkFilter - statusFilter - nes - impAnn "Expecting query result" $ - csCommittee `shouldBe` expResult - - expectNoFilterQueryResult :: - HasCallStack => - Map.Map (Credential 'ColdCommitteeRole (EraCrypto era)) (CommitteeMemberState (EraCrypto era)) -> - ImpTestM era () - expectNoFilterQueryResult = - expectQueryResult mempty mempty mempty - -setPParams :: - forall era. - ( HasCallStack - , ConwayEraImp era - ) => - ImpTestM era () -setPParams = do - modifyPParams $ \pp -> - pp - & ppDRepVotingThresholdsL - .~ def - { dvtCommitteeNormal = 1 %! 1 - , dvtCommitteeNoConfidence = 1 %! 2 - , dvtUpdateToConstitution = 1 %! 2 - } - & ppCommitteeMaxTermLengthL .~ EpochInterval 100 - & ppGovActionLifetimeL .~ EpochInterval 2 - & ppGovActionDepositL .~ Coin 123 diff --git a/libs/cardano-ledger-api/test/Test/Cardano/Ledger/Api/State/QuerySpec.hs b/libs/cardano-ledger-api/test/Test/Cardano/Ledger/Api/State/QuerySpec.hs deleted file mode 100644 index 91516effdf0..00000000000 --- a/libs/cardano-ledger-api/test/Test/Cardano/Ledger/Api/State/QuerySpec.hs +++ /dev/null @@ -1,456 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} - -module Test.Cardano.Ledger.Api.State.QuerySpec (spec) where - -import Cardano.Ledger.Api.State.Query ( - CommitteeMemberState (..), - CommitteeMembersState (..), - HotCredAuthStatus (..), - MemberStatus (..), - NextEpochChange (..), - filterStakePoolDelegsAndRewards, - getNextEpochCommitteeMembers, - queryCommitteeMembersState, - ) -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.CertState -import Cardano.Ledger.Conway (Conway) -import Cardano.Ledger.Conway.Governance ( - Committee (..), - ConwayEraGov (..), - ConwayGovState, - DRepPulsingState (..), - RatifyState (..), - ensCommitteeL, - newEpochStateDRepPulsingStateL, - rsEnactStateL, - ) -import Cardano.Ledger.Credential (Credential) -import Cardano.Ledger.Crypto (StandardCrypto) -import Cardano.Ledger.Keys (KeyRole (..)) -import Cardano.Ledger.PoolDistr -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState -import Cardano.Ledger.UMap (UMap) -import Data.Default.Class (Default (..)) -import Data.Foldable (foldMap') -import qualified Data.Map.Strict as Map -import Data.Maybe (isNothing) -import Data.Set (Set) -import qualified Data.Set as Set -import Lens.Micro ((&), (.~), (^.)) -import Test.Cardano.Ledger.Api.Arbitrary () -import Test.Cardano.Ledger.Api.State.Query -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Conway.Arbitrary () -import Test.Cardano.Ledger.Core.Arbitrary (genValidUMapWithCreds) -import Test.Cardano.Ledger.Shelley.Arbitrary () -import Test.Cardano.Slotting.Numeric () - -spec :: Spec -spec = do - describe "GetFilteredDelegationsAndRewardAccounts" $ do - prop "filterStakePoolDelegsAndRewards same as getFilteredDelegationsAndRewardAccounts" $ - forAll genValidUMapWithCreds $ \(umap :: UMap StandardCrypto, creds) -> - filterStakePoolDelegsAndRewards umap creds - `shouldBe` getFilteredDelegationsAndRewardAccounts umap creds - - describe "GetCommitteeMembersState" $ do - committeeMembersStateSpec @Conway - -committeeMembersStateSpec :: - forall era. - ( ConwayEraGov era - , EraTxOut era - , Default (EpochState era) - , Default (StashedAVVMAddresses era) - , GovState era ~ ConwayGovState era - ) => - Spec -committeeMembersStateSpec = - prop "CommitteeMembersState Query" $ \statusFilter -> do - forAll genCommittee $ \committee -> - -- half of the committee members in the next epoch will overlap with the current ones - forAll (genNextCommittee @era committee) $ \nextCommittee -> - -- replace some arbitrary number of cold keys from the committeeState with the - -- ones from the committee so we can have Active members - forAll (genRelevantCommitteeState @era committee nextCommittee) $ \committeeState -> do - let nes = - defNewEpochState - & nesEpochStateL . esLStateL . lsCertStateL . certVStateL . vsCommitteeStateL - .~ committeeState - & newEpochStateDRepPulsingStateL .~ DRComplete def nextRatifyState - & nesEpochStateL . esLStateL . lsUTxOStateL . utxosGovStateL . committeeGovStateL - .~ maybeToStrictMaybe committee - nextRatifyState = - (def @(RatifyState era)) - & rsEnactStateL . ensCommitteeL .~ maybeToStrictMaybe nextCommittee - defNewEpochState = NewEpochState @era (EpochNo 0) (BlocksMade def) (BlocksMade def) def def (PoolDistr def) def - -- replace some cold and hot keys from the filter with known ones from both - -- committee and committeeState - forAll (genRelevantColdCredsFilter committee committeeState) $ \ckFilter -> - forAll (genRelevantHotCredsFilter committeeState) $ \hkFilter -> do - propEmpty nes - propComplete nes - propAuthorized nes - propActiveAuthorized nes - propNotAuthorized nes - propResigned nes - propUnrecognized nes - propNextEpoch nes - propNoExpiration nes - propFilters ckFilter hkFilter statusFilter nes - -propEmpty :: - forall era. - ConwayEraGov era => - NewEpochState era -> - Expectation -propEmpty nes = do - withCommitteeInfo nes $ - \comMembers (CommitteeState comStateMembers) nextComMembers noFilterResult -> do - Map.null (csCommittee noFilterResult) - `shouldBe` (Map.null comMembers && Map.null comStateMembers && Map.null nextComMembers) - -propComplete :: - forall era. - ConwayEraGov era => - NewEpochState era -> - Expectation -propComplete nes = do - withCommitteeInfo nes $ - \comMembers (CommitteeState comStateMembers) nextComMembers noFilterResult -> do - -- if a credential appears in either Committee or CommitteeState, it should appear - -- in the result - Set.unions [Map.keysSet comMembers, Map.keysSet nextComMembers, Map.keysSet comStateMembers] - `shouldBe` Map.keysSet (csCommittee noFilterResult) - -propNotAuthorized :: - forall era. - ConwayEraGov era => - NewEpochState era -> - Expectation -propNotAuthorized nes = do - withCommitteeInfo nes $ - \_ (CommitteeState comStateMembers) _ noFilterResult -> do - let notAuthorized = - Map.filter - ( \case - CommitteeMemberState MemberNotAuthorized _ _ _ -> True - _ -> False - ) - (csCommittee noFilterResult) - -- if the member is NotAuthorized, it should not have an associated hot credential in the committeeState - Map.intersection comStateMembers notAuthorized `shouldBe` Map.empty - -propAuthorized :: - forall era. - ConwayEraGov era => - NewEpochState era -> - Expectation -propAuthorized nes = do - withCommitteeInfo nes $ - \_ (CommitteeState comStateMembers) _ noFilterResult -> do - let ckHk = - [ (ck, hk) - | (ck, CommitteeMemberState (MemberAuthorized hk) _ _ _) <- Map.toList (csCommittee noFilterResult) - ] - -- if the member is Authorized, it should appear in the committeeState - ckHk `shouldBe` [(ck, hk) | (ck, CommitteeHotCredential hk) <- Map.toList comStateMembers] - -propResigned :: - forall era. - ConwayEraGov era => - NewEpochState era -> - Expectation -propResigned nes = do - withCommitteeInfo nes $ - \_ (CommitteeState comStateMembers) _ noFilterResult -> do - let resigned = - [ ck - | (ck, CommitteeMemberState (MemberResigned _) _ _ _) <- Map.toList (csCommittee noFilterResult) - ] - -- if the member is Resignd, it should appear in the committeeState as Nothing - resigned `shouldBe` [ck | (ck, CommitteeMemberResigned _) <- Map.toList comStateMembers] - -propUnrecognized :: - forall era. - ConwayEraGov era => - NewEpochState era -> - Expectation -propUnrecognized nes = do - withCommitteeInfo nes $ - \comMembers (CommitteeState comStateMembers) nextComMembers' noFilterResult -> do - let unrecognized = - Map.filter - ( \case - CommitteeMemberState _ Unrecognized _ _ -> True - _ -> False - ) - (csCommittee noFilterResult) - let nextComMembers = Map.keysSet nextComMembers' - -- if the member is Unrecognized, it should not be in the committe, but it should be - -- in the committeeState or in the nextCommittee - Map.intersection comMembers unrecognized `shouldBe` Map.empty - Map.keysSet unrecognized - `shouldSatisfy` (`Set.isSubsetOf` (Map.keysSet comStateMembers `Set.union` nextComMembers)) - -- all Unrecognized members will be either enacted or removed in the next epoch - Set.fromList (cmsNextEpochChange <$> Map.elems unrecognized) - `shouldSatisfy` (`Set.isSubsetOf` Set.fromList [ToBeEnacted, ToBeRemoved]) - Map.keysSet (Map.filter (\x -> cmsNextEpochChange x == ToBeEnacted) unrecognized) - `shouldSatisfy` (`Set.isSubsetOf` nextComMembers) - Map.keysSet (Map.filter (\x -> cmsNextEpochChange x == ToBeRemoved) unrecognized) - `shouldSatisfy` (\s -> Set.null s || not (s `Set.isSubsetOf` nextComMembers)) - -propActiveAuthorized :: - forall era. - ConwayEraGov era => - NewEpochState era -> - Expectation -propActiveAuthorized nes = do - withCommitteeInfo nes $ - \comMembers (CommitteeState comStateMembers) _ noFilterResult -> do - let activeAuthorized = - Map.mapMaybe - ( \case - CommitteeMemberState (MemberAuthorized hk) Active _ _ -> Just hk - _ -> Nothing - ) - (csCommittee noFilterResult) - let epochNo = nes ^. nesELL - - -- if a member is active and authorized, then it should be: - -- - in Committee and not expired - -- - in CommitteeState, not empty - Map.keysSet activeAuthorized - `shouldSatisfy` (`Set.isSubsetOf` Map.keysSet comMembers) - Map.keysSet activeAuthorized - `shouldSatisfy` (`Set.isSubsetOf` Map.keysSet comStateMembers) - Map.intersection comMembers activeAuthorized - `shouldSatisfy` all (>= epochNo) - Map.intersection comStateMembers activeAuthorized - `shouldSatisfy` all - ( \case - CommitteeHotCredential _ -> True - _ -> False - ) - - csEpochNo noFilterResult `shouldBe` epochNo - -propFilters :: - forall era. - ConwayEraGov era => - Set (Credential 'ColdCommitteeRole (EraCrypto era)) -> - Set (Credential 'HotCommitteeRole (EraCrypto era)) -> - Set MemberStatus -> - NewEpochState era -> - Expectation -propFilters ckFilter hkFilter statusFilter nes = do - let (CommitteeMembersState result _ _) = queryCommitteeMembersState @era ckFilter hkFilter statusFilter nes - let allCks = Map.keysSet result - let (allHks, allMemberStatuses) = - foldMap' - ( \case - CommitteeMemberState (MemberAuthorized hk) ms _ _ -> (Set.singleton hk, Set.singleton ms) - CommitteeMemberState _ ms _ _ -> (Set.empty, Set.singleton ms) - ) - result - unless (Set.null ckFilter) $ - result `shouldSatisfy` const (allCks `Set.isSubsetOf` ckFilter) - unless (Set.null hkFilter) $ - result `shouldSatisfy` const (allHks `Set.isSubsetOf` hkFilter) - unless (Set.null statusFilter) $ - result `shouldSatisfy` const (allMemberStatuses `Set.isSubsetOf` statusFilter) - -propNextEpoch :: - forall era. - ConwayEraGov era => - NewEpochState era -> - Expectation -propNextEpoch nes = do - withCommitteeInfo nes $ - \comMembers' (CommitteeState comStateMembers') nextComMembers' noFilterResult -> do - let comMembers = Map.keysSet comMembers' - let comStateMembers = Map.keysSet comStateMembers' - let nextComMembers = Map.keysSet nextComMembers' - - filterNext ToBeEnacted noFilterResult - `shouldSatisfy` (\res -> Map.keysSet res == nextComMembers `Set.difference` comMembers) - - filterNext ToBeRemoved noFilterResult - `shouldSatisfy` ( \res -> Map.keysSet res == (comMembers `Set.union` comStateMembers) `Set.difference` nextComMembers - ) - - -- members who are both in current and nextCommittee are either ToBeExpired, TermAdjusted or NoChangeExpected - Set.unions - [ Map.keysSet (filterNext NoChangeExpected noFilterResult) - , Map.keysSet (filterNext ToBeExpired noFilterResult) - , Map.keysSet (termAdjusted noFilterResult) - ] - `shouldSatisfy` (== (comMembers `Set.intersection` nextComMembers)) - - let currentEpoch = csEpochNo noFilterResult - let expiring = - Map.keysSet $ - Map.union - (Map.filter (== currentEpoch) comMembers') - (Map.filter (== currentEpoch) nextComMembers') - - -- members ToBeExpired have the expiry set to currentEpoch, either in the current committee or in the next one - Map.keysSet (filterNext ToBeExpired noFilterResult) - `shouldSatisfy` (`Set.isSubsetOf` expiring) - - cmsExpiration - <$> filterNext NoChangeExpected noFilterResult - `shouldSatisfy` all (all (>= currentEpoch + 1)) - where - filterNext nextEpochChange cms = - Map.filter - ( \case - CommitteeMemberState _ _ _ nextEpochChange' -> - nextEpochChange == nextEpochChange' - ) - (csCommittee cms) - termAdjusted cms = - Map.mapMaybeWithKey - ( \k cm -> - case cm of - CommitteeMemberState _ _ _ (TermAdjusted _) -> Just k - _ -> Nothing - ) - (csCommittee cms) - -propNoExpiration :: - forall era. - ConwayEraGov era => - NewEpochState era -> - Expectation -propNoExpiration nes = - withCommitteeInfo nes $ - \_ _ _ noFilterResult -> do - let noExpiration = Map.filter (isNothing . cmsExpiration) (csCommittee noFilterResult) - unless (Map.null noExpiration) $ - -- only Unrecognized members should have no expiration - Set.fromList (cmsStatus <$> Map.elems noExpiration) `shouldBe` Set.singleton Unrecognized - -genCommittee :: - forall era. - Era era => - Gen (Maybe (Committee era)) -genCommittee = frequency [(1, pure Nothing), (9, Just <$> genCommittee' arbitrary)] - -genRelevantCommitteeState :: - forall era. - EraTxOut era => - Maybe (Committee era) -> - Maybe (Committee era) -> - Gen (CommitteeState era) -genRelevantCommitteeState maybeCm maybeNextCm = do - membersRetaining <- - (++) - <$> genMembersRetaining maybeCm - <*> genMembersRetaining maybeNextCm - pairs <- zip membersRetaining <$> arbitrary - pure $ CommitteeState $ Map.fromList pairs - -genNextCommittee :: - forall era. - EraTxOut era => - Maybe (Committee era) -> - Gen (Maybe (Committee era)) -genNextCommittee maybeCm = - oneof [pure Nothing, Just <$> genCommittee' (genMembersRetaining maybeCm)] - -genCommittee' :: Gen [Credential 'ColdCommitteeRole (EraCrypto era)] -> Gen (Committee era) -genCommittee' genCreds = do - creds <- genCreds - m <- zip creds <$> listOf (EpochNo <$> chooseBoundedIntegral (0, 20)) - Committee (Map.fromList m) <$> arbitrary - -genRelevantColdCredsFilter :: - forall era. - EraTxOut era => - Maybe (Committee era) -> - CommitteeState era -> - Gen (Set.Set (Credential 'ColdCommitteeRole (EraCrypto era))) -genRelevantColdCredsFilter maybeCm (CommitteeState comStateMembers) = do - creds <- - (++) - <$> genMembersRetaining maybeCm - <*> genRetaining (Map.keys comStateMembers) - pure $ Set.fromList creds - -genRelevantHotCredsFilter :: - forall era. - EraTxOut era => - CommitteeState era -> - Gen (Set.Set (Credential 'HotCommitteeRole (EraCrypto era))) -genRelevantHotCredsFilter (CommitteeState comStateMembers) = - Set.fromList - <$> genRetaining - [hk | (_, CommitteeHotCredential hk) <- Map.toList comStateMembers] - -genMembersRetaining :: - forall era. - EraTxOut era => - Maybe (Committee era) -> - Gen [Credential 'ColdCommitteeRole (EraCrypto era)] -genMembersRetaining maybeCm = - genRetaining $ Map.keys $ foldMap' committeeMembers maybeCm - -genRetaining :: Arbitrary a => [a] -> Gen [a] -genRetaining ret = do - retSize <- choose (0, length ret) - new <- arbitrary - pure $ new <> take retSize ret - -withCommitteeInfo :: - ConwayEraGov era => - NewEpochState era -> - ( Map.Map (Credential 'ColdCommitteeRole (EraCrypto era)) EpochNo -> -- current committee members - CommitteeState era -> - Map.Map (Credential 'ColdCommitteeRole (EraCrypto era)) EpochNo -> -- next epoch committee members - CommitteeMembersState (EraCrypto era) -> - Expectation - ) -> - Expectation -withCommitteeInfo nes expectation = expectation comMembers comState nextComMembers noFilterQueryResult - where - noFilterQueryResult = queryCommitteeMembersStateNoFilters nes - (comMembers, comState, nextComMembers) = committeeInfo nes - -committeeInfo :: - forall era. - ConwayEraGov era => - NewEpochState era -> - ( Map.Map (Credential 'ColdCommitteeRole (EraCrypto era)) EpochNo - , CommitteeState era - , Map.Map (Credential 'ColdCommitteeRole (EraCrypto era)) EpochNo - ) -committeeInfo nes = - let ledgerState = nes ^. nesEpochStateL . esLStateL - govState = ledgerState ^. lsUTxOStateL . utxosGovStateL - comMembers = - foldMap' committeeMembers $ - strictMaybeToMaybe (govState ^. committeeGovStateL) - comState = ledgerState ^. lsCertStateL . certVStateL . vsCommitteeStateL - nextCommitteeMembers = getNextEpochCommitteeMembers nes - in (comMembers, comState, nextCommitteeMembers) - -queryCommitteeMembersStateNoFilters :: - forall era. - ConwayEraGov era => - NewEpochState era -> - CommitteeMembersState (EraCrypto era) -queryCommitteeMembersStateNoFilters = - queryCommitteeMembersState @era - Set.empty - Set.empty - Set.empty diff --git a/libs/cardano-ledger-api/test/Test/Cardano/Ledger/Api/Tx.hs b/libs/cardano-ledger-api/test/Test/Cardano/Ledger/Api/Tx.hs deleted file mode 100644 index b500137d6ea..00000000000 --- a/libs/cardano-ledger-api/test/Test/Cardano/Ledger/Api/Tx.hs +++ /dev/null @@ -1,112 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} - -module Test.Cardano.Ledger.Api.Tx (spec) where - -import qualified Cardano.Chain.Common as Byron -import Cardano.Crypto.DSIGN.Ed25519 (Ed25519DSIGN) -import qualified Cardano.Crypto.Hash as Hash -import Cardano.Ledger.Api.Era -import Cardano.Ledger.Api.PParams -import Cardano.Ledger.Api.Tx -import Cardano.Ledger.Binary -import Cardano.Ledger.Core (EraIndependentTxBody) -import Cardano.Ledger.Keys (DSignable, hashKey, makeBootstrapWitness) -import Cardano.Ledger.SafeHash (extractHash, hashAnnotated) -import Cardano.Ledger.Val (Val ((<×>))) -import qualified Data.ByteString as BS -import qualified Data.Map.Strict as Map -import qualified Data.Set as Set -import Lens.Micro -import Numeric.Natural -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Conway.Arbitrary () -import Test.Cardano.Ledger.Core.KeyPair (ByronKeyPair (..), KeyPair (..), mkWitnessVKey) - -txSpec :: - forall era. - ( EraTx era - , Arbitrary (Tx era) - , Arbitrary (PParams era) - , DSIGN (EraCrypto era) ~ Ed25519DSIGN - , DSignable (EraCrypto era) (Hash.Hash (HASH (EraCrypto era)) EraIndependentTxBody) - ) => - Spec -txSpec = describe (eraName @era) $ do - describe "estimateMinFeeTx" $ do - prop "no Bootstrap" $ \(pp :: PParams era) (tx :: Tx era) keyPairsList -> - let - txBody = tx ^. bodyTxL - txBodyHash = hashAnnotated txBody - - keyPairs = Map.fromList [(hashKey $ vKey kp, kp) | kp <- keyPairsList] - wits = Set.fromList $ map (mkWitnessVKey txBodyHash) $ Map.elems keyPairs - - txSigned = tx & (witsTxL . addrTxWitsL <>~ wits) - in - estimateMinFeeTx pp tx (Map.size keyPairs) 0 0 - === (setMinFeeTx pp txSigned 0 ^. bodyTxL . feeTxBodyL) - prop "with Bootstrap" $ \(pp :: PParams era) (tx :: Tx era) keyPairsList byronKeyPairsList -> - let - txBody = tx ^. bodyTxL - txBodyHash = hashAnnotated txBody - - keyPairs = Map.fromList [(hashKey $ vKey kp, kp) | kp <- keyPairsList] - wits = Set.fromList $ map (mkWitnessVKey txBodyHash) $ Map.elems keyPairs - - byronKeyPairs = - Map.fromList - [ ( bkpVerificationKey kp - , (bkpSigningKey kp, Byron.mkAttributes $ attrs {Byron.aaVKDerivationPath = Nothing}) - ) - | (kp, attrs) <- - byronKeyPairsList - ] - byronWits = - Set.fromList $ - map (uncurry (makeBootstrapWitness (extractHash txBodyHash))) (Map.elems byronKeyPairs) - - txSigned = - tx - & (witsTxL . addrTxWitsL <>~ wits) - & (witsTxL . bootAddrTxWitsL <>~ byronWits) - - -- Conversion to Natural is necessary to guard against negative numbers thus - -- checking overestimation: - serializeByronAttrs :: Byron.Attributes Byron.AddrAttributes -> Natural - serializeByronAttrs = fromIntegral . BS.length . serialize' byronProtVer - assumedAttrs = - Byron.AddrAttributes - { Byron.aaVKDerivationPath = Nothing - , Byron.aaNetworkMagic = Byron.NetworkTestnet maxBound - } - -- This is the minimum amount by which over estimation can happen. - overestimations = - [ serializeByronAttrs (Byron.mkAttributes assumedAttrs) - serializeByronAttrs attrs - | (_, attrs) <- Map.elems byronKeyPairs - ] - in - -- Overestimating transaction size can lead to the overestimated fee affecting the - -- size of the transaction, which in turn affects the overestimation. For this - -- reason we can only check `>=` - let - overestimatedMinFeeA = toInteger (sum overestimations) <×> pp ^. ppMinFeeAL - estimation = estimateMinFeeTx pp tx (Map.size keyPairs) (Map.size byronKeyPairs) 0 - actual = setMinFeeTx pp txSigned 0 ^. bodyTxL . feeTxBodyL - in - tabulate "Attrs overestimation in bytes" (map show overestimations) $ - estimation >= actual <> overestimatedMinFeeA - -spec :: Spec -spec = do - txSpec @Shelley - txSpec @Allegra - txSpec @Mary - txSpec @Alonzo - txSpec @Babbage - txSpec @Conway diff --git a/libs/cardano-ledger-api/test/Test/Cardano/Ledger/Api/Tx/Body.hs b/libs/cardano-ledger-api/test/Test/Cardano/Ledger/Api/Tx/Body.hs deleted file mode 100644 index b6a48f18309..00000000000 --- a/libs/cardano-ledger-api/test/Test/Cardano/Ledger/Api/Tx/Body.hs +++ /dev/null @@ -1,171 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Api.Tx.Body (spec) where - -import Cardano.Ledger.Api.Era -import Cardano.Ledger.Api.Tx.Body -import Cardano.Ledger.CertState -import Cardano.Ledger.Coin -import Cardano.Ledger.Compactible -import Cardano.Ledger.PoolParams -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.UTxO hiding (consumed, produced) -import qualified Cardano.Ledger.UMap as UM -import Cardano.Ledger.Val -import Data.Foldable -import qualified Data.Map.Strict as Map -import qualified Data.Sequence.Strict as SSeq -import qualified Data.Set as Set -import Lens.Micro -import Test.Cardano.Ledger.Babbage.Arbitrary () -import Test.Cardano.Ledger.Common - -totalTxDeposits :: - EraTxBody era => - PParams era -> - CertState era -> - TxBody era -> - Coin -totalTxDeposits pp dpstate txb = - numKeys <×> pp ^. ppKeyDepositL <+> snd (foldl' accum (regpools, Coin 0) certs) - where - certs = toList (txb ^. certsTxBodyL) - numKeys = length $ filter isRegStakeTxCert certs - regpools = psStakePoolParams (certPState dpstate) - accum (!pools, !ans) (RegPoolTxCert poolparam) = - -- We don't pay a deposit on a pool that is already registered - if Map.member (ppId poolparam) pools - then (pools, ans) - else (Map.insert (ppId poolparam) poolparam pools, ans <+> pp ^. ppPoolDepositL) - accum ans _ = ans - -keyTxRefunds :: - (EraTxBody era, ShelleyEraTxCert era) => - PParams era -> - CertState era -> - TxBody era -> - Coin -keyTxRefunds pp dpstate tx = snd (foldl' accum (initialKeys, Coin 0) certs) - where - certs = tx ^. certsTxBodyL - initialKeys = UM.RewDepUView $ dsUnified $ certDState dpstate - keyDeposit = UM.compactCoinOrError (pp ^. ppKeyDepositL) - accum (!keys, !ans) (RegTxCert k) = - -- Deposit is added locally to the growing 'keys' - (UM.RewDepUView $ UM.insert k (UM.RDPair mempty keyDeposit) keys, ans) - accum (!keys, !ans) (UnRegTxCert k) = - -- If the key is registered, lookup the deposit in the locally growing 'keys' - -- if it is not registered, then just return ans - case UM.lookup k keys of - Just (UM.RDPair _ deposit) -> (keys, ans <+> fromCompact deposit) - Nothing -> (keys, ans) - accum ans _ = ans - --- | This is the old implementation of `evalBodyTxBody`. We keep it around to ensure that --- the produced result hasn't changed -evaluateTransactionBalance :: - (MaryEraTxBody era, ShelleyEraTxCert era) => - PParams era -> - CertState era -> - UTxO era -> - TxBody era -> - Value era -evaluateTransactionBalance pp dpstate utxo txBody = - evaluateTransactionBalanceShelley pp dpstate utxo txBody <> (txBody ^. mintValueTxBodyF) - -evaluateTransactionBalanceShelley :: - (EraTxBody era, ShelleyEraTxCert era) => - PParams era -> - CertState era -> - UTxO era -> - TxBody era -> - Value era -evaluateTransactionBalanceShelley pp dpstate utxo txBody = consumed <-> produced - where - produced = - balance (txouts txBody) - <+> inject (txBody ^. feeTxBodyL <+> totalTxDeposits pp dpstate txBody) - consumed = - balance (txInsFilter utxo (txBody ^. inputsTxBodyL)) - <> inject (refunds <> withdrawals) - refunds = keyTxRefunds pp dpstate txBody - withdrawals = fold . unWithdrawals $ txBody ^. withdrawalsTxBodyL - --- | Randomly lookup pool params and staking credentials to add them as unregistration and --- undelegation certificates respectively. -genTxBodyFrom :: - (EraTxBody era, ShelleyEraTxCert era, Arbitrary (TxBody era)) => - CertState era -> - UTxO era -> - Gen (TxBody era) -genTxBodyFrom CertState {certDState, certPState} (UTxO u) = do - txBody <- arbitrary - inputs <- sublistOf (Map.keys u) - unDelegCreds <- sublistOf (toList (UM.domain (UM.RewDepUView $ dsUnified certDState))) - deRegKeys <- sublistOf (Map.elems (psStakePoolParams certPState)) - certs <- - shuffle $ - toList (txBody ^. certsTxBodyL) - <> (UnRegTxCert <$> unDelegCreds) - <> (RegPoolTxCert <$> deRegKeys) - pure - ( txBody - & inputsTxBodyL .~ Set.fromList inputs - & certsTxBodyL .~ SSeq.fromList certs - ) - -propEvalBalanceTxBody :: - (EraUTxO era, MaryEraTxBody era, ShelleyEraTxCert era, Arbitrary (TxBody era)) => - PParams era -> - CertState era -> - UTxO era -> - Property -propEvalBalanceTxBody pp certState utxo = - property $ - forAll (genTxBodyFrom certState utxo) $ \txBody -> - evalBalanceTxBody pp lookupKeyDeposit lookupDRepDeposit isRegPoolId utxo txBody - `shouldBe` evaluateTransactionBalance pp certState utxo txBody - where - lookupKeyDeposit = lookupDepositDState (certDState certState) - lookupDRepDeposit = lookupDepositVState (certVState certState) - isRegPoolId = (`Map.member` psStakePoolParams (certPState certState)) - -propEvalBalanceShelleyTxBody :: - (EraUTxO era, ShelleyEraTxCert era, Arbitrary (TxBody era)) => - PParams era -> - CertState era -> - UTxO era -> - Property -propEvalBalanceShelleyTxBody pp certState utxo = - property $ - forAll (genTxBodyFrom certState utxo) $ \txBody -> - evalBalanceTxBody pp lookupKeyDeposit lookupDRepDeposit isRegPoolId utxo txBody - `shouldBe` evaluateTransactionBalanceShelley pp certState utxo txBody - where - lookupKeyDeposit = lookupDepositDState (certDState certState) - lookupDRepDeposit = lookupDepositVState (certVState certState) - isRegPoolId = (`Map.member` psStakePoolParams (certPState certState)) - --- | NOTE: We cannot have this property pass for Conway and beyond because Conway changes this calculation. --- This property test only exists to confirm that the old and new implementations for the evalBalanceTxBody` API matched, --- and this can be ascertained only until Babbage. -spec :: Spec -spec = - describe "TxBody" $ do - describe "ShelleyEra" $ do - prop "evalBalanceTxBody" $ propEvalBalanceShelleyTxBody @Shelley - describe "AllegraEra" $ do - prop "evalBalanceTxBody" $ propEvalBalanceShelleyTxBody @Allegra - describe "MaryEra" $ do - prop "evalBalanceTxBody" $ propEvalBalanceTxBody @Mary - describe "AlonzoEra" $ do - prop "evalBalanceTxBody" $ propEvalBalanceTxBody @Alonzo - describe "BabbageEra" $ do - prop "evalBalanceTxBody" $ propEvalBalanceTxBody @Babbage diff --git a/libs/cardano-ledger-api/test/Test/Cardano/Ledger/Api/Tx/Out.hs b/libs/cardano-ledger-api/test/Test/Cardano/Ledger/Api/Tx/Out.hs deleted file mode 100644 index e3f83cbc0e5..00000000000 --- a/libs/cardano-ledger-api/test/Test/Cardano/Ledger/Api/Tx/Out.hs +++ /dev/null @@ -1,111 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Api.Tx.Out (spec) where - -import Cardano.Ledger.Api.Era -import Cardano.Ledger.Api.Tx.Out -import Cardano.Ledger.BaseTypes (pvMajor, strictMaybeToMaybe) -import Cardano.Ledger.Binary (Sized (sizedValue), mkSized, serialize) -import Cardano.Ledger.Coin -import Cardano.Ledger.Conway.Core -import qualified Cardano.Ledger.Val as Val -import qualified Data.ByteString.Lazy as BSL -import Data.Functor.Identity -import Lens.Micro -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Conway.Arbitrary () - -propSetShelleyMinTxOut :: - forall era. - ( EraTxOut era - , Arbitrary (PParamsHKD Identity era) - , Arbitrary (TxOut era) - , AtMostEra MaryEra era - ) => - Spec -propSetShelleyMinTxOut = - prop "setShelleyMinTxOut" $ \(pp :: PParams era) (txOut :: TxOut era) -> - within 1000000 $ -- just in case if there is a problem with termination - let txOut' = setMinCoinTxOut pp txOut - val = txOut' ^. valueTxOutL - minUTxOValue = unCoin $ pp ^. ppMinUTxOValueL - minVal - | Val.isAdaOnly val = 0 - | otherwise = (27 + Val.size val) * (minUTxOValue `quot` 27) - in Val.coin val `shouldBe` Coin (max minVal minUTxOValue) - where - _atMostMary = atMostEra @MaryEra @era - -propSetAlonzoMinTxOut :: Spec -propSetAlonzoMinTxOut = - prop "setAlonzoMinTxOut" $ \(pp :: PParams Alonzo) (txOut :: TxOut Alonzo) -> - within 1000000 $ -- just in case if there is a problem with termination - let txOut' = setMinCoinTxOut pp txOut - valSize = Val.size (txOut' ^. valueTxOutL) - dataHashSize = maybe 0 (const 10) $ strictMaybeToMaybe (txOut' ^. dataHashTxOutL) - sz = 27 + valSize + dataHashSize - in (txOut' ^. coinTxOutL) - `shouldBe` Coin (sz * unCoin (unCoinPerWord (pp ^. ppCoinsPerUTxOWordL))) - -propSetBabbageMinTxOut :: - forall era. - ( EraTxOut era - , BabbageEraPParams era - , Arbitrary (PParamsHKD Identity era) - , Arbitrary (TxOut era) - ) => - Spec -propSetBabbageMinTxOut = - prop "setBabbageMinTxOut" $ \(pp :: PParams era) (txOut :: TxOut era) -> - within 1000000 $ -- just in case if there is a problem with termination - let txOut' = setMinCoinTxOut pp txOut - sz = toInteger (BSL.length (serialize (pvMajor (pp ^. ppProtocolVersionL)) txOut')) - in (txOut' ^. coinTxOutL) - `shouldBe` Coin ((160 + sz) * unCoin (unCoinPerByte (pp ^. ppCoinsPerUTxOByteL))) - -propSetEnsureMinTxOut :: - forall era. - ( EraTxOut era - , Arbitrary (PParamsHKD Identity era) - , Arbitrary (TxOut era) - ) => - Spec -propSetEnsureMinTxOut = - prop "setEnsureMinTxOut" $ \(pp :: PParams era) (txOut :: TxOut era) -> do - ensureMinCoinTxOut pp (txOut & coinTxOutL .~ mempty) - `shouldBe` setMinCoinTxOut pp (txOut & coinTxOutL .~ mempty) - (ensureMinCoinTxOut pp txOut ^. coinTxOutL) - `shouldSatisfy` (>= (setMinCoinTxOut pp txOut ^. coinTxOutL)) - let v = eraProtVerHigh @era - txOutSz = mkSized v txOut - ensureMinCoinSizedTxOut pp (mkSized v (txOut & coinTxOutL .~ mempty)) - `shouldBe` setMinCoinSizedTxOut pp (mkSized v (txOut & coinTxOutL .~ mempty)) - (sizedValue (ensureMinCoinSizedTxOut pp txOutSz) ^. coinTxOutL) - `shouldSatisfy` (>= (sizedValue (setMinCoinSizedTxOut pp txOutSz) ^. coinTxOutL)) - -spec :: Spec -spec = - describe "TxOut" $ do - describe "ShelleyEra" $ do - propSetShelleyMinTxOut @Shelley - propSetEnsureMinTxOut @Shelley - describe "AllegraEra" $ do - propSetShelleyMinTxOut @Allegra - propSetEnsureMinTxOut @Allegra - describe "MaryEra" $ do - propSetShelleyMinTxOut @Mary - propSetEnsureMinTxOut @Mary - describe "AlonzoEra" $ do - propSetAlonzoMinTxOut - propSetEnsureMinTxOut @Alonzo - describe "BabbageEra" $ do - propSetBabbageMinTxOut @Babbage - propSetEnsureMinTxOut @Babbage - describe "ConwayEra" $ do - propSetBabbageMinTxOut @Conway - propSetEnsureMinTxOut @Conway diff --git a/libs/cardano-ledger-api/test/Tests.hs b/libs/cardano-ledger-api/test/Tests.hs deleted file mode 100644 index f5b9471d6ea..00000000000 --- a/libs/cardano-ledger-api/test/Tests.hs +++ /dev/null @@ -1,29 +0,0 @@ -{-# LANGUAGE TypeApplications #-} - -module Main where - -import Cardano.Ledger.Conway (Conway) -import qualified Test.Cardano.Ledger.Api.State.Imp.QuerySpec as ImpQuery (spec) -import qualified Test.Cardano.Ledger.Api.State.QuerySpec as StateQuery (spec) -import qualified Test.Cardano.Ledger.Api.Tx as Tx (spec) -import qualified Test.Cardano.Ledger.Api.Tx.Body as TxBody (spec) -import qualified Test.Cardano.Ledger.Api.Tx.Out as TxOut (spec) -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Conway.ImpTest (withImpState) - --- ==================================================================================== - -apiSpec :: Spec -apiSpec = - describe "cardano-ledger-api" $ do - describe "Tx" $ do - Tx.spec - TxOut.spec - TxBody.spec - describe "State" $ do - StateQuery.spec - describe "Imp" $ withImpState @Conway $ do - ImpQuery.spec @Conway - -main :: IO () -main = ledgerTestMain apiSpec diff --git a/libs/cardano-ledger-api/testlib/Test/Cardano/Ledger/Api/Arbitrary.hs b/libs/cardano-ledger-api/testlib/Test/Cardano/Ledger/Api/Arbitrary.hs deleted file mode 100644 index 16fb1dda14a..00000000000 --- a/libs/cardano-ledger-api/testlib/Test/Cardano/Ledger/Api/Arbitrary.hs +++ /dev/null @@ -1,9 +0,0 @@ -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Api.Arbitrary () where - -import Cardano.Ledger.Api.State.Query (MemberStatus) -import Test.Cardano.Ledger.Common - -instance Arbitrary MemberStatus where - arbitrary = arbitraryBoundedEnum diff --git a/libs/cardano-ledger-api/testlib/Test/Cardano/Ledger/Api/State/Query.hs b/libs/cardano-ledger-api/testlib/Test/Cardano/Ledger/Api/State/Query.hs deleted file mode 100644 index 2bba797aca4..00000000000 --- a/libs/cardano-ledger-api/testlib/Test/Cardano/Ledger/Api/State/Query.hs +++ /dev/null @@ -1,29 +0,0 @@ -{-# LANGUAGE DataKinds #-} - -module Test.Cardano.Ledger.Api.State.Query ( - -- * Old versions of queries - - -- - -- These are useful for testing and benchmarking - getFilteredDelegationsAndRewardAccounts, -) -where - -import Cardano.Ledger.Coin (Coin) -import Cardano.Ledger.Credential (Credential) -import Cardano.Ledger.Keys (KeyHash, KeyRole (StakePool, Staking)) -import Cardano.Ledger.UMap (UMap, UView (SPoolUView), domRestrictedMap, rewardMap) -import Data.Map (Map) -import qualified Data.Map.Strict as Map -import Data.Set (Set) - --- | This is an old implementation for @GetFilteredDelegationsAndRewardAccounts@ query -getFilteredDelegationsAndRewardAccounts :: - UMap c -> - Set (Credential 'Staking c) -> - (Map (Credential 'Staking c) (KeyHash 'StakePool c), Map (Credential 'Staking c) Coin) -getFilteredDelegationsAndRewardAccounts umap creds = - (filteredDelegations, filteredRwdAcnts) - where - filteredDelegations = domRestrictedMap creds $ SPoolUView umap - filteredRwdAcnts = rewardMap umap `Map.restrictKeys` creds diff --git a/libs/cardano-ledger-binary/.ghcid b/libs/cardano-ledger-binary/.ghcid deleted file mode 100644 index 996f651d355..00000000000 --- a/libs/cardano-ledger-binary/.ghcid +++ /dev/null @@ -1 +0,0 @@ ---command="cabal repl --repl-options='-isrc -fwarn-unused-binds -fwarn-unused-imports -fno-code -fobject-code -g2 -fno-break-on-exception -fno-break-on-error -ferror-spans -j -Wno-unused-packages'" --clear --no-height-limit --reverse-errors --reload=../../ --outputfile=/tmp/cardano-ledger-binary-ghcid.txt \ No newline at end of file diff --git a/libs/cardano-ledger-binary/CHANGELOG.md b/libs/cardano-ledger-binary/CHANGELOG.md deleted file mode 100644 index 2d9723612fd..00000000000 --- a/libs/cardano-ledger-binary/CHANGELOG.md +++ /dev/null @@ -1,111 +0,0 @@ -# Version history for `cardano-ledger-binary` - -## 1.3.2.0 - -* Add `decodeFullAnnotatorFromHexText` and `withHexText` - -## 1.3.1.0 - -* Increase `MaxVersion` to `11` -* Add `EncCBOR` and `DecCBOR` instances for `EpochInterval` - -## 1.3.0.0 - -* Add `decodeNonEmptyList` -* Add instance `EncCBOR`/`DecCBOR` instance for `SignedDSIGN` and add `encodedSignedDSIGNSizeExpr` -* Remove unused and badly named `decodeMapNoDuplicates` -* Fix `decodeVMap` to no longer allow duplicates -* Add `decodeMapLikeEnforceNoDuplicates` and `decodeListLikeWithCount` -* Change the semantics of one argument for `decodeListLikeEnforceNoDuplicates` and - `decodeSetLikeEnforceNoDuplicates` functions from checking membership to geting the size -* Change `decodeListLikeEnforceNoDuplicates` to also accept length decoding function -* Add `decodeListLikeT` and `decodeListLike` -* Moved `ToExpr` instances out of the main library and into the testlib. -* Add `encodeEnum` and `decodeEnumBounded` -* Change first argument of `decodeRecordSum` and `Summands` from `String` to `Text` - -### `testlib` - -* Add `diffExprCompact` - -## 1.2.1.0 - -* Export `decodeListLikeEnforceNoDuplicates` #3791 -* Add `Show` and `Eq` for `CBORGroup` - -### `testlib` - -* Addition of `Test.Cardano.Ledger.Binary.Cddl` spec testing. -* Export `toExpr` from `Test.Cardano.Ledger.Binary.TreeDiff` - -## 1.2.0.0 - -* Export `decodeSetTag`, `allowTag`, `variableListLenEncoding`, and - `decodeSetLikeEnforceNoDuplicates` #3779 -* Moved `diffExpr`, `diffExprNoColor`, `ediffEq` into the `testlib` - -## 1.1.3.0 - -* Add `ToExpr` instance for: - * `Sized` - * `SignedDSIGN` -* Add `Generic` instance for `CompactValue` -* Add `fieldGuarded` to be able to conditionally construct a `Field` #3712 -* Expose `showDecoderError` from `Cardano.Ledger.Binary.Plain` - -### `testlib` - -* Add `roundTripCborSpec` and `roundTripAnnCborSpec` -* Adjust output of `showHexBytesGrouped` -* Add helper functions: `showMaybeDecoderError` and `showFailedTermsWithReSerialization` -* Improve failure reporting when re-serialization does not match for RoundTrip tests. - -## 1.1.2.0 - -* Re-export `ToExpr` from `Test.Cardano.Ledger.Binary.TreeDiff` - -## 1.1.1.2 - -* - -## 1.1.1.1 - -* Changed bounds on plutus-ledger-api -* GHC-9.6 compatibility - -## 1.1.1.0 - -* Add `unlessDecoderVersionAtLeast` and `guardUntilAtLeast` -* Set bound on cborg >=0.2.9 - -## 1.1.0.0 - -* Add `ToJSON`/`FromJSON` instances for `Version` -* Add `decodeFullFromHexText` and `serializeAsHexText` -* Add `Arbitrary` instance for `Term` to `testlib`. -* Add `encodeStrictMaybe`/`decodeStrictMaybe` and `encodeNullStrictMaybe`/`decodeNullStrictMaybe` -* Fix CBOR instance for `StrictMaybe`. It was never used in Byron, so special - serialization is not needed for pre-protocol version `2`. -* Re-export crypto related encoding and decoding functions for `VRF`, `KES` and `DSIGN` - from `Cardano.Ledger.Binary.Plain` -* Fix deserializer for `Rational` and allow optionally tag `30` starting with protocol version `2` -* Fix serializer for `Ratio` and encode tag `30` starting with protocol version `2` -* Add new encoder `encodeRatioNoTag` for `Ratio` -* Changed: Starting in version 9, duplicate keys in CBOR sets are not longer allowed. - Additionally, the CBOR set tag 258 is permitted but not enforced. - -### `testlib` - -* Add `Arbitrary` instance for `Term` -* Renamed: - * `roundTripAnnFailureRangeExpectation` -> `roundTripAnnRangeFailureExpectation` - * `roundTripFailureCborRangeExpectation` -> `roundTripCborRangeFailureExpectation` - * `roundTripAnnFailureRangeExpectation` -> `roundTripAnnRangeFailureExpectation` -* Added: - * `embedTripFailureExpectation` - * `embedTripRangeFailureExpectation` - * `roundTripRangeFailureExpectation` - -## 1.0.0.0 - -* First version. Released on an unsuspecting world. diff --git a/libs/cardano-ledger-binary/Setup.hs b/libs/cardano-ledger-binary/Setup.hs deleted file mode 100644 index e8ef27dbba9..00000000000 --- a/libs/cardano-ledger-binary/Setup.hs +++ /dev/null @@ -1,3 +0,0 @@ -import Distribution.Simple - -main = defaultMain diff --git a/libs/cardano-ledger-binary/bench/Bench.hs b/libs/cardano-ledger-binary/bench/Bench.hs deleted file mode 100644 index 9dc377c62c3..00000000000 --- a/libs/cardano-ledger-binary/bench/Bench.hs +++ /dev/null @@ -1,142 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE TypeApplications #-} - -module Main (main) where - -import Cardano.Ledger.Binary hiding (serialize) -import Cardano.Ledger.Binary.Coders -import Control.DeepSeq -import Control.Monad -import Criterion.Main -import qualified Data.ByteString as BS -import qualified Data.ByteString.Lazy as BSL -import Data.Map (Map) -import qualified Data.Map.Strict as Map -import Data.Set (Set) -import qualified Data.Set as Set -import System.Random.Stateful - -data Serialized a = Serialized !Version !BS.ByteString - -instance NFData (Serialized a) where - rnf (Serialized v bs) = v `deepseq` rnf bs - -serialize :: Version -> (a -> Encoding) -> a -> Serialized a -serialize v e t = Serialized v (serialize' v (e t)) - -deserialize :: (forall s. Decoder s a) -> Serialized a -> a -deserialize d (Serialized v bs) = - case decodeFullDecoder' v "Bench" d bs of - Left err -> error $ "Unexpected deserialization error: " ++ show err - Right val -> val - -deserializeA :: (forall s. Decoder s (Annotator a)) -> Serialized a -> a -deserializeA d (Serialized v bs) = - case decodeFullAnnotator v "Bench" d (BSL.fromStrict bs) of - Left err -> error $ "Unexpected deserialization error: " ++ show err - Right val -> val - -main :: IO () -main = do - let - sz = 100000 - stdGen = mkStdGen 2023 - unifomMapM :: StatefulGen g m => Int -> g -> m (Map Integer Integer) - unifomMapM mapSize gen = - let largeInteger = uniformRM (0, 100000000 * toInteger (maxBound :: Word)) gen - in Map.fromList <$> replicateM mapSize ((,) <$> largeInteger <*> largeInteger) - uniformMapIO n = runStateGenT_ stdGen (unifomMapM n) - - defaultMain - [ bgroup "Map" (benchMap (uniformMapIO sz)) - , bgroup "Set" (benchSet (Map.keysSet <$> uniformMapIO sz)) - ] - -benchMap :: - (EncCBOR a, EncCBOR b, NFData a, NFData b, Ord a, DecCBOR a, DecCBOR b) => - IO (Map a b) -> - [Benchmark] -benchMap mkUniformMap = - [ bgroup - "decodeMap" - [ env (serialize (natVersion @1) encCBOR <$> mkUniformMap) $ - bench "Byron" . nf (deserialize decCBOR) - , env (serialize (natVersion @2) encCBOR <$> mkUniformMap) $ - bench "Shelley" . nf (deserialize decCBOR) - , env (serialize (natVersion @9) encCBOR <$> mkUniformMap) $ - bench "Conway" . nf (deserialize decCBOR) - , env (serialize (natVersion @9) encCBOR <$> mkUniformMap) $ - bench "Older" . nf (deserialize decodeMapCheckDuplicates) - ] - , bgroup - "Coders" - [ env (serialize (natVersion @2) encCBOR <$> mkUniformMap) $ - bench "D Shelley" . nf (deserialize (decode From)) - , env (serialize (natVersion @9) encCBOR <$> mkUniformMap) $ - bench "D Conway" . nf (deserialize (decode From)) - ] - , bgroup - "mapDecodeA" - [ env (serialize (natVersion @2) encCBOR <$> mkUniformMap) $ - bench "Shelley" - . nf (deserializeA (decode (mapDecodeA (D (pure <$> decCBOR)) (D (pure <$> decCBOR))))) - , env (serialize (natVersion @9) encCBOR <$> mkUniformMap) $ - bench "Conway" - . nf (deserializeA (decode (mapDecodeA (D (pure <$> decCBOR)) (D (pure <$> decCBOR))))) - ] - ] - where - -- older implementation that checked duplicates for each element and used an insert - decodeMapCheckDuplicates = do - let decodeInlinedPair m = do - !key <- decCBOR - when (key `Map.member` m) $ fail "Duplicate detected" - !value <- decCBOR - pure (key, value) - snd <$> decodeListLikeWithCount decodeMapLenOrIndef (uncurry Map.insert) decodeInlinedPair - -benchSet :: - (EncCBOR a, NFData a, Ord a, DecCBOR a) => - IO (Set a) -> - [Benchmark] -benchSet mkUniformSet = - [ bgroup - "decodeSet" - [ env (serialize (natVersion @1) encCBOR <$> mkUniformSet) $ - bench "Byron" . nf (deserialize decCBOR) - , env (serialize (natVersion @2) encCBOR <$> mkUniformSet) $ - bench "Shelley" . nf (deserialize decCBOR) - , env (serialize (natVersion @9) encCBOR <$> mkUniformSet) $ - bench "Conway" . nf (deserialize decCBOR) - , env (serialize (natVersion @9) encCBOR <$> mkUniformSet) $ - bench "Older" . nf (deserialize decodeSetCheckDuplicates) - ] - , bgroup - "Coders" - [ env (serialize (natVersion @2) encCBOR <$> mkUniformSet) $ - bench "D Shelley" . nf (deserialize (decode From)) - , env (serialize (natVersion @9) encCBOR <$> mkUniformSet) $ - bench "D Conway" . nf (deserialize (decode From)) - ] - , bgroup - "mapDecodeA" - [ env (serialize (natVersion @2) encCBOR <$> mkUniformSet) $ - bench "Shelley" - . nf (deserializeA (decode (setDecodeA (D (pure <$> decCBOR))))) - , env (serialize (natVersion @9) encCBOR <$> mkUniformSet) $ - bench "Conway" - . nf (deserializeA (decode (setDecodeA (D (pure <$> decCBOR))))) - ] - ] - where - -- older implementation that checked duplicates for each element and used an insert - decodeSetCheckDuplicates = do - let decodeInlinedPair m = do - !value <- decCBOR - when (value `Set.member` m) $ fail "Duplicate detected" - pure value - allowTag setTag - snd <$> decodeListLikeWithCount decodeListLenOrIndef Set.insert decodeInlinedPair diff --git a/libs/cardano-ledger-binary/cardano-ledger-binary.cabal b/libs/cardano-ledger-binary/cardano-ledger-binary.cabal deleted file mode 100644 index acb36af860d..00000000000 --- a/libs/cardano-ledger-binary/cardano-ledger-binary.cabal +++ /dev/null @@ -1,194 +0,0 @@ -cabal-version: 3.0 -name: cardano-ledger-binary -version: 1.3.2.0 -license: Apache-2.0 -maintainer: operations@iohk.io -author: IOHK -homepage: https://github.com/intersectmbo/cardano-ledger -synopsis: Binary serialization library used throughout ledger -category: Network -build-type: Simple - -source-repository head - type: git - location: https://github.com/intersectmbo/cardano-ledger - subdir: libs/cardano-ledger-binary - -library - exposed-modules: - Cardano.Ledger.Binary - Cardano.Ledger.Binary.Coders - Cardano.Ledger.Binary.Crypto - Cardano.Ledger.Binary.Decoding - Cardano.Ledger.Binary.Encoding - Cardano.Ledger.Binary.FlatTerm - Cardano.Ledger.Binary.Group - Cardano.Ledger.Binary.Plain - Cardano.Ledger.Binary.Version - - hs-source-dirs: src - other-modules: - Cardano.Ledger.Binary.Encoding.Coders - Cardano.Ledger.Binary.Encoding.Encoder - Cardano.Ledger.Binary.Encoding.EncCBOR - Cardano.Ledger.Binary.Decoding.Annotated - Cardano.Ledger.Binary.Decoding.Coders - Cardano.Ledger.Binary.Decoding.Decoder - Cardano.Ledger.Binary.Decoding.Drop - Cardano.Ledger.Binary.Decoding.DecCBOR - Cardano.Ledger.Binary.Decoding.Sharing - Cardano.Ledger.Binary.Decoding.Sized - - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wunused-packages - - build-depends: - base >=4.14 && <5, - aeson, - base16-bytestring, - binary, - bytestring, - cardano-binary >=1.7, - cardano-crypto-class >=2.1, - cardano-crypto-praos >=2.1, - cardano-slotting >=0.2, - cardano-strict-containers >=0.1.2, - cborg >=0.2.9, - containers, - data-fix, - deepseq, - FailT, - formatting, - iproute, - microlens, - mtl, - network, - nothunks, - primitive, - plutus-ledger-api ^>=1.25.0, - recursion-schemes, - serialise, - tagged, - text, - time, - transformers >=0.5, - vector, - vector-map ^>=1.1 - -library testlib - exposed-modules: - Test.Cardano.Ledger.Binary.Arbitrary - Test.Cardano.Ledger.Binary.Cddl - Test.Cardano.Ledger.Binary.Plain.Golden - Test.Cardano.Ledger.Binary.Plain.RoundTrip - Test.Cardano.Ledger.Binary.Random - Test.Cardano.Ledger.Binary.RoundTrip - Test.Cardano.Ledger.Binary.TreeDiff - Test.Cardano.Ledger.Binary.Twiddle - Test.Cardano.Ledger.Binary.Vintage.Helpers - Test.Cardano.Ledger.Binary.Vintage.Helpers.GoldenRoundTrip - - visibility: public - hs-source-dirs: testlib - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wunused-packages - - build-depends: - base, - bytestring, - base16-bytestring, - cardano-binary, - cardano-crypto-class, - cardano-crypto-tests, - cardano-ledger-binary, - cardano-prelude-test, - cardano-strict-containers, - cardano-slotting:{cardano-slotting, testlib} >=0.1.2, - cborg, - containers, - formatting, - tree-diff, - iproute, - half, - hedgehog, - hspec, - pretty-show, - primitive, - QuickCheck, - quickcheck-instances, - tasty-hunit, - random >=1.2, - text, - typed-process, - unliftio, - vector, - vector-map - -test-suite tests - type: exitcode-stdio-1.0 - main-is: Main.hs - hs-source-dirs: test - other-modules: - Test.Cardano.Ledger.Binary.Failure - Test.Cardano.Ledger.Binary.PlainSpec - Test.Cardano.Ledger.Binary.Success - Test.Cardano.Ledger.Binary.RoundTripSpec - Test.Cardano.Ledger.Binary.Vintage.Coders - Test.Cardano.Ledger.Binary.Vintage.Drop - Test.Cardano.Ledger.Binary.Vintage.Failure - Test.Cardano.Ledger.Binary.Vintage.RoundTrip - Test.Cardano.Ledger.Binary.Vintage.Serialization - Test.Cardano.Ledger.Binary.Vintage.SizeBounds - - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wunused-packages - -threaded -rtsopts -with-rtsopts=-N - - build-depends: - base, - bytestring, - cardano-ledger-binary, - cardano-crypto-class, - cardano-crypto-praos, - cardano-prelude-test, - cardano-slotting, - cardano-strict-containers, - cborg, - containers, - hedgehog, - hedgehog-quickcheck, - hspec, - iproute, - primitive, - QuickCheck, - tagged, - text, - testlib, - time, - vector, - vector-map - -benchmark bench - type: exitcode-stdio-1.0 - main-is: Bench.hs - hs-source-dirs: bench - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wunused-packages - -threaded -rtsopts -O2 - - build-depends: - base, - bytestring, - cardano-ledger-binary, - containers, - criterion, - deepseq, - random diff --git a/libs/cardano-ledger-binary/flake.nix b/libs/cardano-ledger-binary/flake.nix deleted file mode 100644 index ff5f85a634c..00000000000 --- a/libs/cardano-ledger-binary/flake.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ - outputs = inputs: let - main = inputs.main or (import ../../nix/flake-compat.nix).defaultNix; - in { - packages = - builtins.mapAttrs (_: {cabalProject, ...}: { - default = cabalProject.hsPkgs.cardano-ledger-binary.components.library; - testlib = cabalProject.hsPkgs.cardano-ledger-binary.components.sublibs.testlib; - tests = cabalProject.hsPkgs.cardano-ledger-binary.components.tests.tests; - }) - main.legacyPackages; - inherit (main) devShells; - }; -} diff --git a/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary.hs b/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary.hs deleted file mode 100644 index 30695174834..00000000000 --- a/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary.hs +++ /dev/null @@ -1,45 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} - -module Cardano.Ledger.Binary ( - module Cardano.Ledger.Binary.Decoding, - module Cardano.Ledger.Binary.Encoding, - module Cardano.Ledger.Binary.Group, - module Cardano.Ledger.Binary.Version, - module Cardano.Ledger.Binary.Plain, - Term (..), - C.DeserialiseFailure (..), - translateViaCBORAnnotator, -) -where - -import Cardano.Ledger.Binary.Decoding -import Cardano.Ledger.Binary.Encoding -import Cardano.Ledger.Binary.Group -import Cardano.Ledger.Binary.Plain (FromCBOR (fromCBOR), ToCBOR (toCBOR)) -import qualified Cardano.Ledger.Binary.Plain as Plain -import Cardano.Ledger.Binary.Version -import qualified Codec.CBOR.Read as C (DeserialiseFailure (..)) -import Codec.CBOR.Term (Term (..)) -import Control.Monad.Except (Except, MonadError (throwError)) -import Data.Text (Text) - --- | Translation function between values through a related binary representation. This --- function allows you to translate one type into another (or the same one) through their --- common binary format. It is possible for the source type to be encoded with a different --- version than the version that will be used for decoding. This is useful for types that --- build upon one another and are "upgradeable" through their binary representation. It is --- important to note that the deserialization will happen with `Annotator`, since that is --- usually the way we deserialize upgradeable types that live on chain. Moreover, encoding --- does not require a version, because memoized types that were decoded with annotation --- will have the bytes retained and thus will have the `ToCBOR` instance. -translateViaCBORAnnotator :: - (ToCBOR a, DecCBOR (Annotator b)) => - -- | Version that will be used for deserialization - Version -> - Text -> - a -> - Except DecoderError b -translateViaCBORAnnotator versionDeserialize name x = - case decodeFullAnnotator versionDeserialize name decCBOR (Plain.serialize x) of - Right newx -> pure newx - Left decoderError -> throwError decoderError diff --git a/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Coders.hs b/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Coders.hs deleted file mode 100644 index f9f1231c483..00000000000 --- a/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Coders.hs +++ /dev/null @@ -1,30 +0,0 @@ --- | "Cardano.Ledger.Binary.Coders" provides tools for writing 'EncCBOR' and 'DecCBOR' --- instances (see module 'Cardano.Ledger.Binary') in an intuitive way that mirrors the way one --- constructs values of a particular type. Advantages include: --- --- 1. Book-keeping details neccesary to write correct instances are hidden from the user. --- 2. Inverse 'EncCBOR' and 'DecCBOR' instances have visually similar definitions. --- 3. Advanced instances involving sparse-encoding, compact-representation, and --- 'Annotator' instances are also supported. --- --- A Guide to Visual inspection of Duality in Encode and Decode --- --- 1. @(Sum c)@ and @(SumD c)@ are duals --- 2. @(Rec c)@ and @(RecD c)@ are duals --- 3. @(Keyed c)@ and @(KeyedD c)@ are duals --- 4. @(OmitC x)@ and @(Emit x)@ are duals --- 5. @(Omit p ..)@ and @(Emit x)@ are duals if (p x) is True --- 6. @(To x)@ and @(From)@ are duals if (x::T) and (forall (y::T). isRight (roundTrip y)) --- 7. @(E enc x)@ and @(D dec)@ are duals if (forall x . isRight (roundTrip' enc dec x)) --- 8. @(f !> x)@ and @(g C.VerKeyDSIGN v -> Encoding -encodeVerKeyDSIGN = fromPlainEncoding . C.encodeVerKeyDSIGN -{-# INLINE encodeVerKeyDSIGN #-} - -decodeVerKeyDSIGN :: C.DSIGNAlgorithm v => Decoder s (C.VerKeyDSIGN v) -decodeVerKeyDSIGN = fromPlainDecoder C.decodeVerKeyDSIGN -{-# INLINE decodeVerKeyDSIGN #-} - -encodeSignKeyDSIGN :: C.DSIGNAlgorithm v => C.SignKeyDSIGN v -> Encoding -encodeSignKeyDSIGN = fromPlainEncoding . C.encodeSignKeyDSIGN -{-# INLINE encodeSignKeyDSIGN #-} - -decodeSignKeyDSIGN :: C.DSIGNAlgorithm v => Decoder s (C.SignKeyDSIGN v) -decodeSignKeyDSIGN = fromPlainDecoder C.decodeSignKeyDSIGN -{-# INLINE decodeSignKeyDSIGN #-} - -encodeSigDSIGN :: C.DSIGNAlgorithm v => C.SigDSIGN v -> Encoding -encodeSigDSIGN = fromPlainEncoding . C.encodeSigDSIGN -{-# INLINE encodeSigDSIGN #-} - -decodeSigDSIGN :: C.DSIGNAlgorithm v => Decoder s (C.SigDSIGN v) -decodeSigDSIGN = fromPlainDecoder C.decodeSigDSIGN -{-# INLINE decodeSigDSIGN #-} - -encodeSignedDSIGN :: C.DSIGNAlgorithm v => C.SignedDSIGN v a -> Encoding -encodeSignedDSIGN = fromPlainEncoding . C.encodeSignedDSIGN -{-# INLINE encodeSignedDSIGN #-} - -decodeSignedDSIGN :: C.DSIGNAlgorithm v => Decoder s (C.SignedDSIGN v a) -decodeSignedDSIGN = fromPlainDecoder C.decodeSignedDSIGN -{-# INLINE decodeSignedDSIGN #-} - --------------------------------------------------------------------------------- --- KES --------------------------------------------------------------------------------- - -encodeVerKeyKES :: C.KESAlgorithm v => C.VerKeyKES v -> Encoding -encodeVerKeyKES = fromPlainEncoding . C.encodeVerKeyKES -{-# INLINE encodeVerKeyKES #-} - -decodeVerKeyKES :: C.KESAlgorithm v => Decoder s (C.VerKeyKES v) -decodeVerKeyKES = fromPlainDecoder C.decodeVerKeyKES -{-# INLINE decodeVerKeyKES #-} - -encodeSignKeyKES :: C.KESAlgorithm v => C.SignKeyKES v -> Encoding -encodeSignKeyKES = fromPlainEncoding . C.encodeSignKeyKES -{-# INLINE encodeSignKeyKES #-} - -decodeSignKeyKES :: C.KESAlgorithm v => Decoder s (C.SignKeyKES v) -decodeSignKeyKES = fromPlainDecoder C.decodeSignKeyKES -{-# INLINE decodeSignKeyKES #-} - -encodeSigKES :: C.KESAlgorithm v => C.SigKES v -> Encoding -encodeSigKES = fromPlainEncoding . C.encodeSigKES -{-# INLINE encodeSigKES #-} - -decodeSigKES :: C.KESAlgorithm v => Decoder s (C.SigKES v) -decodeSigKES = fromPlainDecoder C.decodeSigKES -{-# INLINE decodeSigKES #-} - -encodeSignedKES :: C.KESAlgorithm v => C.SignedKES v a -> Encoding -encodeSignedKES = fromPlainEncoding . C.encodeSignedKES -{-# INLINE encodeSignedKES #-} - -decodeSignedKES :: C.KESAlgorithm v => Decoder s (C.SignedKES v a) -decodeSignedKES = fromPlainDecoder C.decodeSignedKES -{-# INLINE decodeSignedKES #-} - --------------------------------------------------------------------------------- --- VRF --------------------------------------------------------------------------------- - -encodeVerKeyVRF :: C.VRFAlgorithm v => C.VerKeyVRF v -> Encoding -encodeVerKeyVRF = fromPlainEncoding . C.encodeVerKeyVRF -{-# INLINE encodeVerKeyVRF #-} - -decodeVerKeyVRF :: C.VRFAlgorithm v => Decoder s (C.VerKeyVRF v) -decodeVerKeyVRF = fromPlainDecoder C.decodeVerKeyVRF -{-# INLINE decodeVerKeyVRF #-} - -encodeSignKeyVRF :: C.VRFAlgorithm v => C.SignKeyVRF v -> Encoding -encodeSignKeyVRF = fromPlainEncoding . C.encodeSignKeyVRF -{-# INLINE encodeSignKeyVRF #-} - -decodeSignKeyVRF :: C.VRFAlgorithm v => Decoder s (C.SignKeyVRF v) -decodeSignKeyVRF = fromPlainDecoder C.decodeSignKeyVRF -{-# INLINE decodeSignKeyVRF #-} - -encodeCertVRF :: C.VRFAlgorithm v => C.CertVRF v -> Encoding -encodeCertVRF = fromPlainEncoding . C.encodeCertVRF -{-# INLINE encodeCertVRF #-} - -decodeCertVRF :: C.VRFAlgorithm v => Decoder s (C.CertVRF v) -decodeCertVRF = fromPlainDecoder C.decodeCertVRF -{-# INLINE decodeCertVRF #-} diff --git a/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Decoding.hs b/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Decoding.hs deleted file mode 100644 index 30e9e92aac8..00000000000 --- a/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Decoding.hs +++ /dev/null @@ -1,286 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Cardano.Ledger.Binary.Decoding ( - -- * Running decoders - decodeFull, - decodeFull', - decodeFullDecoder, - decodeFullDecoder', - decodeFullAnnotator, - decodeFullAnnotatedBytes, - decodeFullAnnotatorFromHexText, - module Cardano.Ledger.Binary.Version, - module Cardano.Ledger.Binary.Decoding.DecCBOR, - module Cardano.Ledger.Binary.Decoding.Sharing, - module Cardano.Ledger.Binary.Decoding.Decoder, - module Cardano.Ledger.Binary.Decoding.Sized, - module Cardano.Ledger.Binary.Decoding.Drop, - - -- * Annotated - - -- - -- $annotated - module Cardano.Ledger.Binary.Decoding.Annotated, - - -- * Nested CBOR in CBOR - decodeNestedCbor, - decodeNestedCborBytes, - - -- * Unsafe deserialization - unsafeDeserialize, - unsafeDeserialize', - - -- * Helpers - toStrictByteString, - - -- * Deprecated - decodeAnnotator, - decCBORMaybe, -) -where - -import Cardano.Ledger.Binary.Decoding.Annotated -import Cardano.Ledger.Binary.Decoding.DecCBOR -import Cardano.Ledger.Binary.Decoding.Decoder -import Cardano.Ledger.Binary.Decoding.Drop -import Cardano.Ledger.Binary.Decoding.Sharing -import Cardano.Ledger.Binary.Decoding.Sized -import Cardano.Ledger.Binary.Plain (withHexText) -import Cardano.Ledger.Binary.Version -import Codec.CBOR.Read as Read (DeserialiseFailure, IDecode (..), deserialiseIncremental) -import Codec.CBOR.Write (toStrictByteString) -import Control.Exception (displayException) -import Control.Monad (when) -import Control.Monad.ST (ST, runST) -import Data.Bifunctor (bimap) -import qualified Data.ByteString as BS -import qualified Data.ByteString.Lazy as BSL -import qualified Data.ByteString.Lazy.Internal as BSL -import Data.Proxy (Proxy (Proxy)) -import Data.Text (Text) - --- | Deserialize a Haskell value from the external binary representation, which --- have been made using 'serialize' or a matching serialization functionilty in --- another language that uses CBOR format. Accepts lazy `BSL.ByteString` as --- input, for strict variant use `unsafeDeserialize'` instead. --- --- This deserializaer is not safe for these reasons: --- --- * /Throws/: @'Read.DeserialiseFailure'@ if the given external --- representation is invalid or does not correspond to a value of the --- expected type. --- --- * Decoding will not fail when the binary input is not consumed in full. -unsafeDeserialize :: - DecCBOR a => - Version -> - BSL.ByteString -> - a -unsafeDeserialize version = - either (error . displayException) id . bimap fst fst . deserialiseDecoder version decCBOR - --- | Variant of 'unsafeDeserialize' that accepts a strict `BS.ByteString` as --- input. -unsafeDeserialize' :: DecCBOR a => Version -> BS.ByteString -> a -unsafeDeserialize' version = unsafeDeserialize version . BSL.fromStrict - --- | Deserialize a Haskell value from a binary CBOR representation, failing if --- there are leftovers. In other words, the __Full__ here implies the contract --- on this function that the input must be consumed in its entirety by the --- decoder specified in `DecCBOR`. -decodeFull :: forall a. DecCBOR a => Version -> BSL.ByteString -> Either DecoderError a -decodeFull version = decodeFullDecoder version (label $ Proxy @a) decCBOR -{-# INLINE decodeFull #-} - --- | Same as `decodeFull`, except accepts a strict `BS.ByteString` as input --- instead of the lazy one. -decodeFull' :: forall a. DecCBOR a => Version -> BS.ByteString -> Either DecoderError a -decodeFull' version = decodeFull version . BSL.fromStrict -{-# INLINE decodeFull' #-} - --- | Same as `decodeFull`, except instead of relying on the `DecCBOR` instance --- the `Decoder` must be suplied manually. -decodeFullDecoder :: - -- | Protocol version to be used during decoding. - Version -> - -- | Label for error reporting - Text -> - -- | The parser for the @ByteString@ to decode. It should decode the given - -- @ByteString@ into a value of type @a@ - (forall s. Decoder s a) -> - -- | The @ByteString@ to decode - BSL.ByteString -> - Either DecoderError a -decodeFullDecoder version lbl decoder bs = - case deserialiseDecoder version decoder bs of - Right (x, leftover) -> - if BS.null leftover - then pure x - else Left $ DecoderErrorLeftover lbl leftover - Left (e, _) -> Left $ DecoderErrorDeserialiseFailure lbl e -{-# INLINE decodeFullDecoder #-} - --- | Same as `decodeFullDecoder`, except works on strict `BS.ByteString` -decodeFullDecoder' :: - Version -> - Text -> - (forall s. Decoder s a) -> - BS.ByteString -> - Either DecoderError a -decodeFullDecoder' version lbl decoder = decodeFullDecoder version lbl decoder . BSL.fromStrict -{-# INLINE decodeFullDecoder' #-} - --- | Deserialise a Haskell type from a 'BSL.ByteString' input, which be consumed --- incrementally using the provided 'Decoder'. Unlike `decodeFullDecoder` there --- is no requiremenet to consume all input, therefore left over binary input is --- returned upon sucessfull or failed deserialization. -deserialiseDecoder :: - Version -> - (forall s. Decoder s a) -> - BSL.ByteString -> - Either (Read.DeserialiseFailure, BS.ByteString) (a, BS.ByteString) -deserialiseDecoder version decoder bs0 = - runST (supplyAllInput bs0 =<< Read.deserialiseIncremental (toPlainDecoder version decoder)) -{-# INLINE deserialiseDecoder #-} - -supplyAllInput :: - BSL.ByteString -> - Read.IDecode s a -> - ST s (Either (Read.DeserialiseFailure, BS.ByteString) (a, BS.ByteString)) -supplyAllInput bs' (Read.Done bs _ x) = - return (Right (x, bs <> BSL.toStrict bs')) -supplyAllInput bs (Read.Partial k) = case bs of - BSL.Chunk chunk bs' -> k (Just chunk) >>= supplyAllInput bs' - BSL.Empty -> k Nothing >>= supplyAllInput BSL.Empty -supplyAllInput _ (Read.Fail bs _ exn) = return (Left (exn, bs)) -{-# INLINE supplyAllInput #-} - --------------------------------------------------------------------------------- --- Annotator --------------------------------------------------------------------------------- - --- | Same as `decodeFullDecoder`, except it provdes the means of passing portion or all --- of the `BSL.ByteString` input argument to the decoding `Annotator`. -decodeFullAnnotator :: - Version -> - Text -> - (forall s. Decoder s (Annotator a)) -> - BSL.ByteString -> - Either DecoderError a -decodeFullAnnotator v lbl decoder bytes = - (\x -> runAnnotator x (Full bytes)) <$> decodeFullDecoder v lbl decoder bytes -{-# INLINE decodeFullAnnotator #-} - --- | Same as `decodeFullDecoder`, decodes a Haskell value from a lazy --- `BSL.ByteString`, requiring that the full ByteString is consumed, and --- replaces `ByteSpan` annotations with the corresponding slice of the input as --- a strict `BS.ByteString`. -decodeFullAnnotatedBytes :: - Functor f => - Version -> - Text -> - (forall s. Decoder s (f ByteSpan)) -> - BSL.ByteString -> - Either DecoderError (f BS.ByteString) -decodeFullAnnotatedBytes v lbl decoder bytes = - annotationBytes bytes <$> decodeFullDecoder v lbl decoder bytes -{-# INLINE decodeFullAnnotatedBytes #-} - -decodeFullAnnotatorFromHexText :: - Version -> - Text -> - (forall s. Decoder s (Annotator a)) -> - Text -> - Either DecoderError a -decodeFullAnnotatorFromHexText v desc dec = - withHexText $ decodeFullAnnotator v desc dec . BSL.fromStrict -{-# INLINE decodeFullAnnotatorFromHexText #-} - --------------------------------------------------------------------------------- --- Nested CBOR-in-CBOR --- https://tools.ietf.org/html/rfc7049#section-2.4.4.1 --------------------------------------------------------------------------------- - --- | Remove the the semantic tag 24 from the enclosed CBOR data item, --- failing if the tag cannot be found. -decodeNestedCborTag :: Decoder s () -decodeNestedCborTag = do - t <- decodeTag - when (t /= 24) $ - cborError $ - DecoderErrorUnknownTag - "decodeNestedCborTag" - (fromIntegral t) -{-# INLINE decodeNestedCborTag #-} - --- | Remove the the semantic tag 24 from the enclosed CBOR data item, --- decoding back the inner `ByteString` as a proper Haskell type. --- Consume its input in full. -decodeNestedCbor :: DecCBOR a => Decoder s a -decodeNestedCbor = do - bs <- decodeNestedCborBytes - version <- getDecoderVersion - either cborError pure $ decodeFull' version bs -{-# INLINE decodeNestedCbor #-} - --- | Like `decodeKnownCborDataItem`, but assumes nothing about the Haskell --- type we want to deserialise back, therefore it yields the `ByteString` --- Tag 24 surrounded (stripping such tag away). --- --- In CBOR notation, if the data was serialised as: --- --- >>> 24(h'DEADBEEF') --- --- then `decodeNestedCborBytes` yields the inner 'DEADBEEF', unchanged. -decodeNestedCborBytes :: Decoder s BS.ByteString -decodeNestedCborBytes = decodeNestedCborTag >> decodeBytes -{-# INLINE decodeNestedCborBytes #-} - -decodeAnnotator :: - Version -> - Text -> - (forall s. Decoder s (Annotator a)) -> - BSL.ByteString -> - Either DecoderError a -decodeAnnotator = decodeFullAnnotator -{-# DEPRECATED decodeAnnotator "In favor of `decodeFullAnnotator`" #-} - -decCBORMaybe :: Decoder s a -> Decoder s (Maybe a) -decCBORMaybe = decodeMaybe -{-# DEPRECATED decCBORMaybe "In favor of `decodeMaybe`" #-} - --- $annotated --- --- The regular CBOR 'Decoder' does not support access to the original 'BSL.ByteString' that is --- being read during deserialization. The 'Annotator' and 'Annotated' recover this ability. --- --- 1. 'ByteSpan' A pair of indexes into a bytestring, indicating a substring. --- 2. 'Annotated' Used in practice to pair a value with a 'ByteSpan'. Mostly used in Byron codebase. --- 3. 'FullByteString' A newtype (around a bytestring) used to store the original bytestring being deserialized. --- 4. 'Annotator' An explict reader monad whose environment is a 'FullByteString' --- --- The basic idea is, for a given type @t@, where we need the original 'BSL.ByteString', either --- --- 1. To complete the deserialization, or --- 2. To combine the deserialized answer with the original 'BSL.ByteString'. --- --- We should proceed as follows: Define instances @('DecCBOR' ('Annotator' t))@ instead --- of @('DecCBOR' t)@. When making this instance we may freely use that both 'Decoder' --- and 'Annotator' are both monads, and that functions 'withSlice' and 'annotatorSlice' --- provide access to the original bytes, or portions thereof, inside of decoders. Then, --- to actually decode a value of type @t@, we use something similar to the following code --- fragment. --- --- @ --- howToUseFullBytes bytes = do --- Annotator f <- decodeFullDecoder \"DecodingAnnotator\" (decCBOR :: forall s. Decoder s (Annotator t)) bytes --- pure (f (Full bytes)) --- @ --- --- Decode the bytes to get an @('Annotator' f)@ where f is a function that when given --- original bytes produces a value of type @t@, then apply @f@ to @('Full' bytes)@ to get --- the answer. diff --git a/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Decoding/Annotated.hs b/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Decoding/Annotated.hs deleted file mode 100644 index df089d64ae5..00000000000 --- a/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Decoding/Annotated.hs +++ /dev/null @@ -1,213 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveFunctor #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Cardano.Ledger.Binary.Decoding.Annotated ( - Annotated (..), - ByteSpan (..), - Decoded (..), - annotationBytes, - annotatedDecoder, - slice, - decCBORAnnotated, - reAnnotate, - Annotator (..), - annotatorSlice, - withSlice, - FullByteString (..), - decodeAnnSet, -) -where - -import Cardano.Ledger.Binary.Decoding.DecCBOR (DecCBOR (..)) -import Cardano.Ledger.Binary.Decoding.Decoder ( - Decoder, - allowTag, - decodeList, - decodeWithByteSpan, - fromPlainDecoder, - setTag, - whenDecoderVersionAtLeast, - ) -import Cardano.Ledger.Binary.Encoding (EncCBOR, Version, serialize') -import Cardano.Ledger.Binary.Version (natVersion) -import Codec.CBOR.Read (ByteOffset) -import qualified Codec.Serialise as Serialise (decode) -import Control.DeepSeq (NFData) -import Data.Aeson (FromJSON (..), ToJSON (..)) -import Data.Bifunctor (Bifunctor (first, second)) -import qualified Data.ByteString as BS -import qualified Data.ByteString.Lazy as BSL -import Data.Function (on) -import Data.Functor ((<&>)) -import Data.Kind (Type) -import qualified Data.Set as Set -import GHC.Generics (Generic) -import NoThunks.Class (NoThunks) -import qualified PlutusLedgerApi.V1 as PV1 - -------------------------------------------------------------------------- --- ByteSpan -------------------------------------------------------------------------- - --- | Extract a substring of a given ByteString corresponding to the offsets. -slice :: BSL.ByteString -> ByteSpan -> BSL.ByteString -slice bytes (ByteSpan start end) = - BSL.take (end - start) $ BSL.drop start bytes -{-# INLINE slice #-} - --- | A pair of offsets delimiting the beginning and end of a substring of a ByteString -data ByteSpan = ByteSpan !ByteOffset !ByteOffset - deriving (Generic, Show) - --- Used for debugging purposes only. -instance ToJSON ByteSpan - -------------------------------------------------------------------------- --- Annotator -------------------------------------------------------------------------- - -data Annotated b a = Annotated {unAnnotated :: !b, annotation :: !a} - deriving (Eq, Show, Functor, Generic) - deriving anyclass (NFData, NoThunks) - -instance Bifunctor Annotated where - first f (Annotated b a) = Annotated (f b) a - second = fmap - -instance (Eq a, Ord b) => Ord (Annotated b a) where - compare = compare `on` unAnnotated - -instance ToJSON b => ToJSON (Annotated b a) where - toJSON = toJSON . unAnnotated - toEncoding = toEncoding . unAnnotated - -instance FromJSON b => FromJSON (Annotated b ()) where - parseJSON j = flip Annotated () <$> parseJSON j - --- | A decoder for a value paired with an annotation specifying the start and end --- of the consumed bytes. -annotatedDecoder :: Decoder s a -> Decoder s (Annotated a ByteSpan) -annotatedDecoder vd = - decodeWithByteSpan vd <&> \(x, start, end) -> Annotated x (ByteSpan start end) -{-# INLINE annotatedDecoder #-} - --- | A decoder for a value paired with an annotation specifying the start and end --- of the consumed bytes. -decCBORAnnotated :: DecCBOR a => Decoder s (Annotated a ByteSpan) -decCBORAnnotated = annotatedDecoder decCBOR -{-# INLINE decCBORAnnotated #-} - -annotationBytes :: Functor f => BSL.ByteString -> f ByteSpan -> f BS.ByteString -annotationBytes bytes = fmap (BSL.toStrict . slice bytes) - --- | Reconstruct an annotation by re-serialising the payload to a ByteString. -reAnnotate :: EncCBOR a => Version -> Annotated a b -> Annotated a BS.ByteString -reAnnotate version (Annotated x _) = Annotated x (serialize' version x) - -class Decoded t where - type BaseType t :: Type - recoverBytes :: t -> BS.ByteString - -instance Decoded (Annotated b BS.ByteString) where - type BaseType (Annotated b BS.ByteString) = b - recoverBytes = annotation - -------------------------------------------------------------------------- --- Annotator -------------------------------------------------------------------------- - --- | This marks the entire bytestring used during decoding, rather than the --- piece we need to finish constructing our value. -newtype FullByteString = Full BSL.ByteString - --- | A value of type @(Annotator a)@ is one that needs access to the entire bytestring --- used during decoding to finish construction of a vaue of type @a@. A typical use is --- some type that stores the bytes that were used to deserialize it. For example the --- type @Inner@ below is constructed using the helper function @makeInner@ which --- serializes and stores its bytes (using 'serialize'). Note how we build the --- 'Annotator' by abstracting over the full bytes, and using those original bytes to --- fill the bytes field of the constructor @Inner@. The 'EncCBOR' instance just reuses --- the stored bytes to produce an encoding (using 'encodePreEncoded'). --- --- @ --- data Inner = Inner Int Bool LByteString --- --- makeInner :: Int -> Bool -> Inner --- makeInner i b = Inner i b (serialize (encCBOR i <> encCBOR b)) --- --- instance EncCBOR Inner where --- encCBOR (Inner _ _ bytes) = encodePreEncoded bytes --- --- instance DecCBOR (Annotator Inner) where --- decCBOR = do --- int <- decCBOR --- trueOrFalse <- decCBOR --- pure (Annotator (\(Full bytes) -> Inner int trueOrFalse bytes)) --- @ --- --- if an @Outer@ type has a field of type @Inner@, with a @(EncCBOR (Annotator Inner))@ --- instance, the @Outer@ type must also have a @(EncCBOR (Annotator Outer))@ instance. The --- key to writing that instance is to use the operation @withSlice@ which returns a pair. --- The first component is an @Annotator@ that can build @Inner@, the second is an --- @Annotator@ that given the full bytes, extracts just the bytes needed to decode --- @Inner@. --- --- @ --- data Outer = Outer Text Inner --- --- instance EncCBOR Outer where --- encCBOR (Outer t i) = encCBOR t <> encCBOR i --- --- instance DecCBOR (Annotator Outer) where --- decCBOR = do --- t <- decCBOR --- (Annotator mkInner, Annotator extractInnerBytes) <- withSlice decCBOR --- pure (Annotator (\ full -> Outer t (mkInner (Full (extractInnerBytes full))))) --- @ -newtype Annotator a = Annotator {runAnnotator :: FullByteString -> a} - deriving newtype (Monad, Applicative, Functor) - --- | The argument is a decoder for a annotator that needs access to the bytes that --- | were decoded. This function constructs and supplies the relevant piece. -annotatorSlice :: - Decoder s (Annotator (BSL.ByteString -> a)) -> - Decoder s (Annotator a) -annotatorSlice dec = do - (k, bytes) <- withSlice dec - pure $ k <*> bytes -{-# INLINE annotatorSlice #-} - --- | Pairs the decoder result with an annotator that can be used to construct the exact --- bytes used to decode the result. -withSlice :: Decoder s a -> Decoder s (a, Annotator BSL.ByteString) -withSlice dec = do - Annotated r byteSpan <- annotatedDecoder dec - return (r, Annotator (\(Full bsl) -> slice bsl byteSpan)) -{-# INLINE withSlice #-} - --- TODO: Implement version that matches the length of a list with the size of the Set in --- order to enforce no duplicates. -decodeAnnSet :: Ord t => Decoder s (Annotator t) -> Decoder s (Annotator (Set.Set t)) -decodeAnnSet dec = do - whenDecoderVersionAtLeast (natVersion @9) $ - allowTag setTag - xs <- decodeList dec - pure (Set.fromList <$> sequence xs) -{-# INLINE decodeAnnSet #-} - --------------------------------------------------------------------------------- --- Plutus --------------------------------------------------------------------------------- - -instance DecCBOR (Annotator PV1.Data) where - decCBOR = pure <$> fromPlainDecoder Serialise.decode - {-# INLINE decCBOR #-} diff --git a/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Decoding/Coders.hs b/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Decoding/Coders.hs deleted file mode 100644 index 7430dd6c670..00000000000 --- a/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Decoding/Coders.hs +++ /dev/null @@ -1,630 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE CPP #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TupleSections #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Cardano.Ledger.Binary.Decoding.Coders ( - -- * Creating decoders. - - -- - -- $Decoders - Decode (..), - ( Wrapped -- Does not need type-wide wrapping, - -- But may need field-wide wrapping, when Density is 'Sparse - --- | A Field pairs an update function and a decoder for one field of a Sparse record. -data Field t where - Field :: (x -> t -> t) -> (forall s. Decoder s x) -> Field t - -{-# INLINE field #-} -field :: (x -> t -> t) -> Decode ('Closed d) x -> Field t -field update dec = Field update (decode dec) - -{-# INLINE fieldGuarded #-} -fieldGuarded :: - -- | The message to use if the condition fails - String -> - -- | The condition to guard against - (x -> Bool) -> - (x -> t -> t) -> - Decode ('Closed d) x -> - Field t -fieldGuarded failMsg check update dec = - Field - update - ( decode dec >>= \x -> - x <$ when (check x) (fail failMsg) - ) - -{-# INLINE ofield #-} -ofield :: (StrictMaybe x -> t -> t) -> Decode ('Closed d) x -> Field t -ofield update dec = Field update (SJust <$> decode dec) - -{-# INLINE invalidField #-} -invalidField :: forall t. Word -> Field t -invalidField n = field (flip $ const @t @Void) (Invalid n) - --- | Sparse decode something with a (DecCBOR (Annotator t)) instance --- A special case of 'field' -fieldA :: Applicative ann => (x -> t -> t) -> Decode ('Closed d) x -> Field (ann t) -fieldA update dec = Field (liftA2 update) (pure <$> decode dec) -{-# INLINE fieldA #-} - --- | Sparse decode something with a (DecCBOR (Annotator t)) instance -fieldAA :: - Applicative ann => - (x -> t -> t) -> - Decode ('Closed d) (ann x) -> - Field (ann t) -fieldAA update dec = Field (liftA2 update) (decode dec) -{-# INLINE fieldAA #-} - --- ================================================================== --- Decode --- =================================================================== - --- | The type @('Decode' t)@ is designed to be dual to @('Encode' t)@. It was designed so that --- in many cases a decoder can be extracted from an encoder by visual inspection. We now give some --- example of @(Decode t)@ and @(Encode t)@ pairs. --- --- --- An example with 1 constructor (a record) uses 'Rec' and 'RecD' --- --- In this example, let @Int@ and @C@ have 'EncCBOR' instances. --- --- @ --- data C = C { unC :: Text.Text } --- instance EncCBOR C where --- encCBOR (C t) = encCBOR t --- instance DecCBOR C where --- decCBOR = C <$> decCBOR --- --- data B = B { unB :: Text.Text } --- --- data A = ACon Int B C --- --- encodeA :: A -> Encode ('Closed 'Dense) A --- encodeA (ACon i b c) = Rec ACon !> To i !> E (encCBOR . unB) b !> To c --- --- decodeA :: Decode ('Closed 'Dense) A --- decodeA = RecD ACon decCBOR) Encode 'Open N --- encodeN (N1 i) = Sum N1 0 !> To i --- encodeN (N2 b tf) = Sum N2 1 !> E (encCBOR . unB) b !> To tf --- encodeN (N3 a) = Sum N3 2 !> To a --- --- decodeN :: Decode ('Closed 'Dense) N -- Note each clause has an 'Open decoder, --- decodeN = Summands "N" decodeNx -- But Summands returns a ('Closed 'Dense) decoder --- where decodeNx 0 = SumD N1 decCBOR) Encode 'Open M --- encM (M 0 [] t) = Sum M 0 !> OmitC 0 !> OmitC [] !> To t --- encM (M 0 bs t) = Sum M 1 !> OmitC 0 !> To bs !> To t --- encM (M n [] t) = Sum M 2 !> To n !> OmitC [] !> To t --- encM (M n bs t) = Sum M 3 !> To n !> To bs !> To t --- --- decM :: Word -> Decode 'Open M --- decM 0 = SumD M Encode ('Closed 'Sparse) M --- encM2 (M n xs t) = --- Keyed M --- !> Omit (== 0) (Key 0 (To n)) -- Omit if n is zero --- !> Omit null (Key 1 (To xs)) -- Omit if xs is null --- !> Key 2 (To t) -- Always encode t --- @ --- --- To write an Decoder we must pair a decoder for each field, with a function that updates only --- that field. We use the 'Field' GADT to construct these pairs, and we must write a function, that --- for each field tag, picks out the correct pair. If the Encode and Decode don't agree on how the --- tags correspond to a particular field, things will fail. --- --- @ --- boxM :: Word -> Field M --- boxM 0 = field update0 From --- where --- update0 n (M _ xs t) = M n xs t --- boxM 1 = field update1 From --- where --- update1 xs (M n _ t) = M n xs t --- boxM 2 = field update2 From --- where --- update2 t (M n xs _) = M n xs t --- boxM n = invalidField n --- @ --- --- Finally there is a new constructor for 'Decode', called 'SparseKeyed', that decodes field --- keyed sparse objects. The user supplies an initial value and field function, and a list --- of tags of the required fields. The initial value should have default values and --- any well type value in required fields. If the encode function (baz above) is --- encoded properly the required fields in the initial value should always be over --- overwritten. If it is not written properly, or a bad encoding comes from somewhere --- else, the intial values in the required fields might survive decoding. The list --- of required fields is checked. --- --- @ --- instance DecCBOR M where --- decCBOR = decode (SparseKeyed --- "TT" -- ^ Name of the type being decoded --- (M 0 [] (Text.pack "a")) -- ^ The default value --- boxM -- ^ The Field function --- [(2, "Stringpart")] -- ^ The required Fields --- ) --- --- instance EncCBOR M where --- encCBOR m = encode(encM2 m) --- @ -data Decode (w :: Wrapped) t where - -- | Label the constructor of a Record-like datatype (one with exactly 1 constructor) as a Decode. - RecD :: t -> Decode ('Closed 'Dense) t - -- | Label the constructor of a Record-like datatype (one with multiple constructors) as an Decode. - SumD :: t -> Decode 'Open t - -- | Lift a Word to Decode function into a DeCode for a type with multiple constructors. - Summands :: Text.Text -> (Word -> Decode 'Open t) -> Decode ('Closed 'Dense) t - -- | Lift a Word to Field function into a DeCode for a type with 1 constructor stored sparsely - SparseKeyed :: - Typeable t => - -- | Name of the Type (for error messages) - String -> - -- | The type with default values in all fields - t -> - -- | What to do with key in the @Word@ - (Word -> Field t) -> - -- | Pairs of keys and Strings which must be there (default values not allowed) - [(Word, String)] -> - Decode ('Closed 'Dense) t - -- | Label a (component, field, argument) as sparsely stored, which will be populated - -- with the default value. - KeyedD :: t -> Decode ('Closed 'Sparse) t - -- | Label a (component, field, argument). It will be decoded using the existing - -- DecCBOR instance at @t@ - From :: DecCBOR t => Decode w t - -- | Label a (component, field, argument). It will be decoded using the given decoder. - D :: (forall s. Decoder s t) -> Decode ('Closed 'Dense) t - -- | Apply a functional decoding (arising from 'RecD' or 'SumD') to get (type wise) - -- smaller decoding. - ApplyD :: Decode w1 (a -> t) -> Decode ('Closed d) a -> Decode w1 t - -- | Mark a Word as a Decoding which is not a valid Decoding. Used when decoding sums - -- that are tagged out of range. - Invalid :: Word -> Decode w t - -- | Used to make (Decode w) an instance of Functor. - Map :: (a -> b) -> Decode w a -> Decode w b - -- | Assert that the next thing decoded must be tagged with the given word. - TagD :: Word -> Decode ('Closed x) t -> Decode ('Closed x) t - -- | Decode the next thing, not by inspecting the bytes, but pulled out of thin air, - -- returning @t@. Used in sparse decoding. - Emit :: t -> Decode w t - -- The next two could be generalized to any (Applicative f) rather than Annotator - - -- | Lift a @(Decode w t)@ to a @(Decode w (Annotator t))@. Used on a (component, field, - -- argument) that was not Annotator encoded, but contained in Record or Sum which is - -- Annotator encoded. - Ann :: Decode w t -> Decode w (Annotator t) - -- | Apply a functional decoding (arising from 'RecD' or 'SumD' that needs to be - -- Annotator decoded) to get (type wise) smaller decoding. - ApplyAnn :: - -- | A functional Decode - Decode w1 (Annotator (a -> t)) -> - -- | An Decoder for an Annotator - Decode ('Closed d) (Annotator a) -> - Decode w1 (Annotator t) - -- | the function to Either can raise an error when applied by returning (Left errorMessage) - ApplyErr :: Decode w1 (a -> Either String t) -> Decode ('Closed d) a -> Decode w1 t - -infixl 4 t) -> Decode ('Closed w) a -> Decode w1 t -x t)) -> Decode ('Closed d) (Annotator a) -> Decode w1 (Annotator t) -x <*! y = ApplyAnn x y -{-# INLINE (<*!) #-} - --- | Infix form of @ApplyErr@ with the same infixity and precedence as @($)@. -( Either String t) -> Decode ('Closed d) a -> Decode w1 t -f Int -hsize (Summands _ _) = 1 -hsize (SumD _) = 0 -hsize (RecD _) = 0 -hsize (KeyedD _) = 0 -hsize From = 1 -hsize (D _) = 1 -hsize (ApplyD f x) = hsize f + hsize x -hsize (Invalid _) = 0 -hsize (Map _ x) = hsize x -hsize (Emit _) = 0 -hsize SparseKeyed {} = 1 -hsize (TagD _ _) = 1 -hsize (Ann x) = hsize x -hsize (ApplyAnn f x) = hsize f + hsize x -hsize (ApplyErr f x) = hsize f + hsize x -{-# INLINE hsize #-} - -decode :: Decode w t -> Decoder s t -decode x = fmap snd (decodE x) -{-# INLINE decode #-} - -decodE :: Decode w t -> Decoder s (Int, t) -decodE x = decodeCount x 0 -{-# INLINE decodE #-} - -decodeCount :: forall (w :: Wrapped) s t. Decode w t -> Int -> Decoder s (Int, t) -decodeCount (Summands nm f) n = (n + 1,) <$> decodeRecordSum nm (decodE . f) -decodeCount (SumD cn) n = pure (n + 1, cn) -decodeCount (KeyedD cn) n = pure (n + 1, cn) -decodeCount (RecD cn) n = decodeRecordNamed "RecD" (const n) (pure (n, cn)) -decodeCount From n = (n,) <$> decCBOR -decodeCount (D dec) n = (n,) <$> dec -decodeCount (Invalid k) _ = invalidKey k -decodeCount (Map f x) n = do (m, y) <- decodeCount x n; pure (m, f y) -decodeCount (Emit x) n = pure (n, x) -decodeCount (TagD expectedTag decoder) n = do - assertTag expectedTag - decodeCount decoder n -decodeCount (SparseKeyed name initial pick required) n = - (n + 1,) <$> decodeSparse name initial pick required -decodeCount (Ann x) n = do (m, y) <- decodeCount x n; pure (m, pure y) -decodeCount (ApplyAnn g x) n = do - (i, f) <- decodeCount g (n + hsize x) - y <- decodeClosed x - pure (i, f <*> y) -decodeCount (ApplyD cn g) n = do - (i, f) <- decodeCount cn (n + hsize g) - y <- decodeClosed g - pure (i, f y) -decodeCount (ApplyErr cn g) n = do - (i, f) <- decodeCount cn (n + hsize g) - y <- decodeClosed g - case f y of - Right z -> pure (i, z) - Left message -> cborError $ DecoderErrorCustom "decoding error:" (Text.pack message) -{-# INLINE decodeCount #-} - --- The type of DecodeClosed precludes pattern match against (SumD c) as the types are different. - -decodeClosed :: Decode ('Closed d) t -> Decoder s t -decodeClosed (Summands nm f) = decodeRecordSum nm (decodE . f) -decodeClosed (KeyedD cn) = pure cn -decodeClosed (RecD cn) = pure cn -decodeClosed From = decCBOR -decodeClosed (D dec) = dec -decodeClosed (ApplyD cn g) = do - f <- decodeClosed cn - y <- decodeClosed g - pure (f y) -decodeClosed (Invalid k) = invalidKey k -decodeClosed (Map f x) = f <$> decodeClosed x -decodeClosed (Emit n) = pure n -decodeClosed (TagD expectedTag decoder) = do - assertTag expectedTag - decodeClosed decoder -decodeClosed (SparseKeyed name initial pick required) = - decodeSparse name initial pick required -decodeClosed (Ann x) = fmap pure (decodeClosed x) -decodeClosed (ApplyAnn g x) = do - f <- decodeClosed g - y <- decodeClosed x - pure (f <*> y) -decodeClosed (ApplyErr cn g) = do - f <- decodeClosed cn - y <- decodeClosed g - case f y of - Right z -> pure z - Left message -> cborError $ DecoderErrorCustom "decoding error:" (Text.pack message) -{-# INLINE decodeClosed #-} - -decodeSparse :: - Typeable a => - String -> - a -> - (Word -> Field a) -> - [(Word, String)] -> - Decoder s a -decodeSparse name initial pick required = do - lenOrIndef <- decodeMapLenOrIndef - (!v, used) <- case lenOrIndef of - Just len -> getSparseBlock len initial pick Set.empty name - Nothing -> getSparseBlockIndef initial pick Set.empty name - if all (\(key, _name) -> member key used) required - then pure v - else unusedRequiredKeys used required (show (typeOf initial)) -{-# INLINE decodeSparse #-} - --- | Given a function that picks a Field from a key, decodes that field --- and returns a (t -> t) transformer, which when applied, will --- update the record with the value decoded. -applyField :: (Word -> Field t) -> Set Word -> String -> Decoder s (t -> t, Set Word) -applyField f seen name = do - tag <- decodeWord - if Set.member tag seen - then duplicateKey name tag - else case f tag of - Field update d -> d >>= \v -> pure (update v, insert tag seen) -{-# INLINE applyField #-} - --- | Decode a Map Block of key encoded data for type t --- given a function that picks the right box for a given key, and an --- initial value for the record (usually starts filled with default values). --- The Block can be either len-encoded or block-encoded. -getSparseBlock :: Int -> t -> (Word -> Field t) -> Set Word -> String -> Decoder s (t, Set Word) -getSparseBlock 0 initial _pick seen _name = pure (initial, seen) -getSparseBlock n initial pick seen name = do - (transform, seen2) <- applyField pick seen name - getSparseBlock (n - 1) (transform initial) pick seen2 name -{-# INLINE getSparseBlock #-} - -getSparseBlockIndef :: t -> (Word -> Field t) -> Set Word -> String -> Decoder s (t, Set Word) -getSparseBlockIndef initial pick seen name = - decodeBreakOr >>= \case - True -> pure (initial, seen) - False -> do - (transform, seen2) <- applyField pick seen name - getSparseBlockIndef (transform initial) pick seen2 name -{-# INLINE getSparseBlockIndef #-} - --- ====================================================== --- (Decode ('Closed 'Dense)) and (Decode ('Closed 'Sparse)) are applicative --- (Decode 'Open) is not applicative since there is no --- (Applys 'Open 'Open) instance. And there should never be one. - -instance Functor (Decode w) where - fmap f (Map g x) = Map (f . g) x - fmap f x = Map f x - {-# INLINE fmap #-} - -instance Applicative (Decode ('Closed d)) where - pure = Emit - {-# INLINE pure #-} - f <*> x = ApplyD f x - {-# INLINE (<*>) #-} - --- | Use `Cardano.Ledger.Binary.Coders.encodeDual` and `decodeDual`, when you want to --- guarantee that a type has both `EncCBOR` and `FromCBR` instances. -decodeDual :: forall t. (EncCBOR t, DecCBOR t) => Decode ('Closed 'Dense) t -decodeDual = D decCBOR - where - -- Enforce EncCBOR constraint on t - _encCBOR = encCBOR (undefined :: t) -{-# INLINE decodeDual #-} - --- ============================================================================= - -listDecodeA :: Decode ('Closed 'Dense) (Annotator x) -> Decode ('Closed 'Dense) (Annotator [x]) -listDecodeA dx = D (sequence <$> decodeList (decode dx)) -{-# INLINE listDecodeA #-} - -setDecodeA :: - Ord x => - Decode ('Closed 'Dense) (Annotator x) -> - Decode ('Closed 'Dense) (Annotator (Set x)) -setDecodeA dx = D (decodeAnnSet (decode dx)) -{-# INLINE setDecodeA #-} - -mapDecodeA :: - Ord k => - Decode ('Closed 'Dense) (Annotator k) -> - Decode ('Closed 'Dense) (Annotator v) -> - Decode ('Closed 'Dense) (Annotator (Map.Map k v)) -mapDecodeA k v = D (decodeMapTraverse (decode k) (decode v)) -{-# INLINE mapDecodeA #-} - --------------------------------------------------------------------------------- --- Utility functions for working with CBOR --------------------------------------------------------------------------------- - -duplicateKey :: String -> Word -> Decoder s a -duplicateKey name k = - cborError $ - DecoderErrorCustom - "Duplicate key:" - (Text.pack $ show k ++ " while decoding type " ++ name) -{-# NOINLINE duplicateKey #-} - -unusedRequiredKeys :: Set Word -> [(Word, String)] -> String -> Decoder s a -unusedRequiredKeys used required name = - cborError $ - DecoderErrorCustom - (Text.pack ("value of type " ++ name)) - (Text.pack (message (filter bad required))) - where - bad (k, _) = not (member k used) - message [] = ", not decoded." - message [pair] = report pair ++ message [] - message (pair : more) = report pair ++ ", and " ++ message more - report (k, f) = "field " ++ f ++ " with key " ++ show k -{-# NOINLINE unusedRequiredKeys #-} - --- | Prevent decoding until the 'Version' is at least the provided version. -guardUntilAtLeast :: DecCBOR a => String -> Version -> Decode ('Closed 'Dense) a -guardUntilAtLeast errMessage v = D (unlessDecoderVersionAtLeast v (fail errMessage) >> decCBOR) -{-# INLINE guardUntilAtLeast #-} diff --git a/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Decoding/DecCBOR.hs b/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Decoding/DecCBOR.hs deleted file mode 100644 index 043f10d838e..00000000000 --- a/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Decoding/DecCBOR.hs +++ /dev/null @@ -1,663 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE CPP #-} -{-# LANGUAGE DefaultSignatures #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE NoStarIsType #-} - -module Cardano.Ledger.Binary.Decoding.DecCBOR ( - DecCBOR (..), - fromByronCBOR, -) -where - -import qualified Cardano.Binary as Plain (Decoder, FromCBOR (..)) -import Cardano.Crypto.DSIGN.Class ( - DSIGNAlgorithm, - SeedSizeDSIGN, - SigDSIGN, - SignKeyDSIGN, - SignedDSIGN, - VerKeyDSIGN, - ) -import Cardano.Crypto.Hash.Class (Hash, HashAlgorithm) -import Cardano.Crypto.KES.Class (KESAlgorithm, OptimizedKESAlgorithm, SigKES, SignKeyKES, VerKeyKES) -import Cardano.Crypto.KES.CompactSingle (CompactSingleKES) -import Cardano.Crypto.KES.CompactSum (CompactSumKES) -import Cardano.Crypto.KES.Mock (MockKES) -import Cardano.Crypto.KES.Simple (SimpleKES) -import Cardano.Crypto.KES.Single (SingleKES) -import Cardano.Crypto.KES.Sum (SumKES) -import Cardano.Crypto.VRF.Class ( - CertVRF, - CertifiedVRF (..), - OutputVRF (..), - SignKeyVRF, - VRFAlgorithm, - VerKeyVRF, - ) -import Cardano.Crypto.VRF.Mock (MockVRF) -import qualified Cardano.Crypto.VRF.Praos as Praos -import Cardano.Crypto.VRF.Simple (SimpleVRF) -import Cardano.Ledger.Binary.Crypto -import Cardano.Ledger.Binary.Decoding.Decoder -import Cardano.Ledger.Binary.Version (Version, byronProtVer) -import Cardano.Slotting.Block (BlockNo (..)) -import Cardano.Slotting.Slot ( - EpochInterval (..), - EpochNo (..), - EpochSize (..), - SlotNo (..), - WithOrigin (..), - ) -import Cardano.Slotting.Time (SystemStart (..)) -import Codec.CBOR.ByteArray (ByteArray (..)) -import Codec.CBOR.ByteArray.Sliced (SlicedByteArray, fromByteArray) -import Codec.CBOR.Term (Term (..)) -import Codec.Serialise as Serialise (Serialise (decode)) -import qualified Data.ByteString as BS -import qualified Data.ByteString.Lazy as BSL -#if MIN_VERSION_bytestring(0,11,1) -import Data.ByteString.Short (ShortByteString(SBS)) -#else -import Data.ByteString.Short.Internal (ShortByteString(SBS)) -#endif -import Data.Fixed (Fixed (..)) -import Data.IP (IPv4, IPv6) -import Data.Int (Int16, Int32, Int64, Int8) -import Data.List.NonEmpty (NonEmpty) -import qualified Data.Map.Strict as Map -import qualified Data.Maybe.Strict as SMaybe -import qualified Data.Primitive.ByteArray as Prim -import qualified Data.Sequence as Seq -import qualified Data.Sequence.Strict as SSeq -import qualified Data.Set as Set -import Data.Tagged (Tagged (Tagged)) -import qualified Data.Text as T -import Data.Time.Clock (UTCTime (..)) -import Data.Typeable (Proxy (..), Typeable, typeRep) -import qualified Data.VMap as VMap -import qualified Data.Vector as V -import qualified Data.Vector.Primitive as VP -import qualified Data.Vector.Storable as VS -import qualified Data.Vector.Unboxed as VU -import Data.Void (Void) -import Data.Word (Word16, Word32, Word64, Word8) -import GHC.TypeNats (KnownNat, type (*)) -import Numeric.Natural (Natural) -import qualified PlutusLedgerApi.V1 as PV1 -import Prelude hiding (decodeFloat) - -class Typeable a => DecCBOR a where - decCBOR :: Decoder s a - default decCBOR :: Plain.FromCBOR a => Decoder s a - decCBOR = fromPlainDecoder Plain.fromCBOR - {-# INLINE decCBOR #-} - - -- | Validate decoding of a Haskell value, without the need to actually construct - -- it. Coule be slightly faster than `decCBOR`, however it should respect this law: - -- - -- > dropCBOR (proxy :: Proxy a) = () <$ (decCBOR :: Decoder s a) - dropCBOR :: Proxy a -> Decoder s () - dropCBOR _ = () <$ decCBOR @a - - label :: Proxy a -> T.Text - label = T.pack . show . typeRep - -instance DecCBOR Version where - decCBOR = decodeVersion - {-# INLINE decCBOR #-} - --- | Convert a versioned `DecCBOR` instance to a plain `Plain.Decoder` using Byron protocol --- version. -fromByronCBOR :: DecCBOR a => Plain.Decoder s a -fromByronCBOR = toPlainDecoder byronProtVer decCBOR -{-# INLINE fromByronCBOR #-} - --------------------------------------------------------------------------------- --- Primitive types --------------------------------------------------------------------------------- - -instance DecCBOR () where - decCBOR = decodeNull - {-# INLINE decCBOR #-} - -instance DecCBOR Bool where - decCBOR = decodeBool - {-# INLINE decCBOR #-} - --------------------------------------------------------------------------------- --- Numeric data --------------------------------------------------------------------------------- - -instance DecCBOR Integer where - decCBOR = decodeInteger - {-# INLINE decCBOR #-} - -instance DecCBOR Natural where - decCBOR = decodeNatural - {-# INLINE decCBOR #-} - -instance DecCBOR Word where - decCBOR = decodeWord - {-# INLINE decCBOR #-} - -instance DecCBOR Word8 where - decCBOR = decodeWord8 - {-# INLINE decCBOR #-} - -instance DecCBOR Word16 where - decCBOR = decodeWord16 - {-# INLINE decCBOR #-} - -instance DecCBOR Word32 where - decCBOR = decodeWord32 - {-# INLINE decCBOR #-} - -instance DecCBOR Word64 where - decCBOR = decodeWord64 - {-# INLINE decCBOR #-} - -instance DecCBOR Int where - decCBOR = decodeInt - {-# INLINE decCBOR #-} - -instance DecCBOR Int8 where - decCBOR = decodeInt8 - {-# INLINE decCBOR #-} - -instance DecCBOR Int16 where - decCBOR = decodeInt16 - {-# INLINE decCBOR #-} - -instance DecCBOR Int32 where - decCBOR = decodeInt32 - {-# INLINE decCBOR #-} - -instance DecCBOR Int64 where - decCBOR = decodeInt64 - {-# INLINE decCBOR #-} - -instance DecCBOR Float where - decCBOR = decodeFloat - {-# INLINE decCBOR #-} - -instance DecCBOR Double where - decCBOR = decodeDouble - {-# INLINE decCBOR #-} - -instance DecCBOR Rational where - decCBOR = decodeRational - {-# INLINE decCBOR #-} - -deriving newtype instance Typeable p => DecCBOR (Fixed p) - -instance DecCBOR Void where - decCBOR = cborError DecoderErrorVoid - -instance DecCBOR Term where - decCBOR = decodeTerm - {-# INLINE decCBOR #-} - -instance DecCBOR IPv4 where - decCBOR = decodeIPv4 - {-# INLINE decCBOR #-} - -instance DecCBOR IPv6 where - decCBOR = decodeIPv6 - {-# INLINE decCBOR #-} - --------------------------------------------------------------------------------- --- Tagged --------------------------------------------------------------------------------- - -instance (Typeable s, DecCBOR a) => DecCBOR (Tagged s a) where - decCBOR = Tagged <$> decCBOR - {-# INLINE decCBOR #-} - dropCBOR _ = dropCBOR (Proxy @a) - --------------------------------------------------------------------------------- --- Containers --------------------------------------------------------------------------------- - -instance (DecCBOR a, DecCBOR b) => DecCBOR (a, b) where - decCBOR = do - decodeListLenOf 2 - !x <- decCBOR - !y <- decCBOR - return (x, y) - dropCBOR _ = decodeListLenOf 2 <* dropCBOR (Proxy @a) <* dropCBOR (Proxy @b) - {-# INLINE decCBOR #-} - -instance (DecCBOR a, DecCBOR b, DecCBOR c) => DecCBOR (a, b, c) where - decCBOR = do - decodeListLenOf 3 - !x <- decCBOR - !y <- decCBOR - !z <- decCBOR - return (x, y, z) - dropCBOR _ = - decodeListLenOf 3 - <* dropCBOR (Proxy @a) - <* dropCBOR (Proxy @b) - <* dropCBOR (Proxy @c) - {-# INLINE decCBOR #-} - -instance (DecCBOR a, DecCBOR b, DecCBOR c, DecCBOR d) => DecCBOR (a, b, c, d) where - decCBOR = do - decodeListLenOf 4 - !a <- decCBOR - !b <- decCBOR - !c <- decCBOR - !d <- decCBOR - return (a, b, c, d) - dropCBOR _ = - decodeListLenOf 4 - <* dropCBOR (Proxy @a) - <* dropCBOR (Proxy @b) - <* dropCBOR (Proxy @c) - <* dropCBOR (Proxy @d) - {-# INLINE decCBOR #-} - -instance - (DecCBOR a, DecCBOR b, DecCBOR c, DecCBOR d, DecCBOR e) => - DecCBOR (a, b, c, d, e) - where - decCBOR = do - decodeListLenOf 5 - !a <- decCBOR - !b <- decCBOR - !c <- decCBOR - !d <- decCBOR - !e <- decCBOR - return (a, b, c, d, e) - dropCBOR _ = - decodeListLenOf 5 - <* dropCBOR (Proxy @a) - <* dropCBOR (Proxy @b) - <* dropCBOR (Proxy @c) - <* dropCBOR (Proxy @d) - <* dropCBOR (Proxy @e) - {-# INLINE decCBOR #-} - -instance - (DecCBOR a, DecCBOR b, DecCBOR c, DecCBOR d, DecCBOR e, DecCBOR f) => - DecCBOR (a, b, c, d, e, f) - where - decCBOR = do - decodeListLenOf 6 - !a <- decCBOR - !b <- decCBOR - !c <- decCBOR - !d <- decCBOR - !e <- decCBOR - !f <- decCBOR - return (a, b, c, d, e, f) - dropCBOR _ = - decodeListLenOf 6 - <* dropCBOR (Proxy @a) - <* dropCBOR (Proxy @b) - <* dropCBOR (Proxy @c) - <* dropCBOR (Proxy @d) - <* dropCBOR (Proxy @e) - <* dropCBOR (Proxy @f) - {-# INLINE decCBOR #-} - -instance - ( DecCBOR a - , DecCBOR b - , DecCBOR c - , DecCBOR d - , DecCBOR e - , DecCBOR f - , DecCBOR g - ) => - DecCBOR (a, b, c, d, e, f, g) - where - decCBOR = do - decodeListLenOf 7 - !a <- decCBOR - !b <- decCBOR - !c <- decCBOR - !d <- decCBOR - !e <- decCBOR - !f <- decCBOR - !g <- decCBOR - return (a, b, c, d, e, f, g) - dropCBOR _ = - decodeListLenOf 7 - <* dropCBOR (Proxy @a) - <* dropCBOR (Proxy @b) - <* dropCBOR (Proxy @c) - <* dropCBOR (Proxy @d) - <* dropCBOR (Proxy @e) - <* dropCBOR (Proxy @f) - <* dropCBOR (Proxy @g) - {-# INLINE decCBOR #-} - -instance DecCBOR BS.ByteString where - decCBOR = decodeBytes - {-# INLINE decCBOR #-} - -instance DecCBOR T.Text where - decCBOR = decodeString - {-# INLINE decCBOR #-} - -instance DecCBOR BSL.ByteString where - decCBOR = BSL.fromStrict <$> decCBOR - {-# INLINE decCBOR #-} - -instance DecCBOR ShortByteString where - decCBOR = do - BA (Prim.ByteArray ba) <- decodeByteArray - return $ SBS ba - {-# INLINE decCBOR #-} - -instance DecCBOR ByteArray where - decCBOR = decodeByteArray - {-# INLINE decCBOR #-} - -instance DecCBOR Prim.ByteArray where - decCBOR = unBA <$> decodeByteArray - {-# INLINE decCBOR #-} - -instance DecCBOR SlicedByteArray where - decCBOR = fromByteArray . unBA <$> decodeByteArray - {-# INLINE decCBOR #-} - -instance DecCBOR a => DecCBOR [a] where - decCBOR = decodeList decCBOR - {-# INLINE decCBOR #-} - -instance (DecCBOR a, DecCBOR b) => DecCBOR (Either a b) where - decCBOR = decodeEither (decCBOR >>= \a -> a `seq` pure a) (decCBOR >>= \a -> a `seq` pure a) - {-# INLINE decCBOR #-} - dropCBOR _ = () <$ decodeEither (dropCBOR (Proxy :: Proxy a)) (dropCBOR (Proxy :: Proxy b)) - -instance DecCBOR a => DecCBOR (NonEmpty a) where - decCBOR = decodeNonEmptyList decCBOR - {-# INLINE decCBOR #-} - -instance DecCBOR a => DecCBOR (Maybe a) where - decCBOR = decodeMaybe decCBOR - {-# INLINE decCBOR #-} - dropCBOR _ = () <$ decodeMaybe (dropCBOR (Proxy @a)) - -instance DecCBOR a => DecCBOR (SMaybe.StrictMaybe a) where - decCBOR = decodeStrictMaybe decCBOR - {-# INLINE decCBOR #-} - dropCBOR _ = () <$ decodeStrictMaybe (dropCBOR (Proxy @a)) - -instance DecCBOR a => DecCBOR (SSeq.StrictSeq a) where - decCBOR = decodeStrictSeq decCBOR - {-# INLINE decCBOR #-} - -instance DecCBOR a => DecCBOR (Seq.Seq a) where - decCBOR = decodeSeq decCBOR - {-# INLINE decCBOR #-} - -instance (Ord a, DecCBOR a) => DecCBOR (Set.Set a) where - decCBOR = decodeSet decCBOR - {-# INLINE decCBOR #-} - -instance (Ord k, DecCBOR k, DecCBOR v) => DecCBOR (Map.Map k v) where - decCBOR = decodeMap decCBOR decCBOR - {-# INLINE decCBOR #-} - -instance - ( Ord k - , DecCBOR k - , DecCBOR a - , Typeable kv - , Typeable av - , VMap.Vector kv k - , VMap.Vector av a - ) => - DecCBOR (VMap.VMap kv av k a) - where - decCBOR = decodeVMap decCBOR decCBOR - {-# INLINE decCBOR #-} - -instance DecCBOR a => DecCBOR (V.Vector a) where - decCBOR = decodeVector decCBOR - {-# INLINE decCBOR #-} - -instance (DecCBOR a, VP.Prim a) => DecCBOR (VP.Vector a) where - decCBOR = decodeVector decCBOR - {-# INLINE decCBOR #-} - -instance (DecCBOR a, VS.Storable a) => DecCBOR (VS.Vector a) where - decCBOR = decodeVector decCBOR - {-# INLINE decCBOR #-} - -instance (DecCBOR a, VU.Unbox a) => DecCBOR (VU.Vector a) where - decCBOR = decodeVector decCBOR - {-# INLINE decCBOR #-} - --------------------------------------------------------------------------------- --- Time --------------------------------------------------------------------------------- - -instance DecCBOR UTCTime where - decCBOR = decodeUTCTime - {-# INLINE decCBOR #-} - --------------------------------------------------------------------------------- --- Crypto --------------------------------------------------------------------------------- - --------------------------------------------------------------------------------- --- DSIGN --------------------------------------------------------------------------------- - -instance DSIGNAlgorithm v => DecCBOR (VerKeyDSIGN v) where - decCBOR = decodeVerKeyDSIGN - {-# INLINE decCBOR #-} - -instance DSIGNAlgorithm v => DecCBOR (SignKeyDSIGN v) where - decCBOR = decodeSignKeyDSIGN - {-# INLINE decCBOR #-} - -instance DSIGNAlgorithm v => DecCBOR (SigDSIGN v) where - decCBOR = decodeSigDSIGN - {-# INLINE decCBOR #-} - -instance (DSIGNAlgorithm v, Typeable a) => DecCBOR (SignedDSIGN v a) where - decCBOR = decodeSignedDSIGN - {-# INLINE decCBOR #-} - --------------------------------------------------------------------------------- --- Hash --------------------------------------------------------------------------------- - -instance (HashAlgorithm h, Typeable a) => DecCBOR (Hash h a) - --------------------------------------------------------------------------------- --- KES --------------------------------------------------------------------------------- - -instance - (DSIGNAlgorithm d, KnownNat t, KnownNat (SeedSizeDSIGN d * t)) => - DecCBOR (VerKeyKES (SimpleKES d t)) - where - decCBOR = decodeVerKeyKES - {-# INLINE decCBOR #-} - -instance - (DSIGNAlgorithm d, KnownNat t, KnownNat (SeedSizeDSIGN d * t)) => - DecCBOR (SignKeyKES (SimpleKES d t)) - where - decCBOR = decodeSignKeyKES - {-# INLINE decCBOR #-} - -instance - (DSIGNAlgorithm d, KnownNat t, KnownNat (SeedSizeDSIGN d * t)) => - DecCBOR (SigKES (SimpleKES d t)) - where - decCBOR = decodeSigKES - {-# INLINE decCBOR #-} - -instance (KESAlgorithm d, HashAlgorithm h) => DecCBOR (VerKeyKES (SumKES h d)) where - decCBOR = decodeVerKeyKES - {-# INLINE decCBOR #-} - -instance (KESAlgorithm d, HashAlgorithm h) => DecCBOR (SignKeyKES (SumKES h d)) where - decCBOR = decodeSignKeyKES - {-# INLINE decCBOR #-} - -instance (KESAlgorithm d, HashAlgorithm h) => DecCBOR (SigKES (SumKES h d)) where - decCBOR = decodeSigKES - {-# INLINE decCBOR #-} - -instance DSIGNAlgorithm d => DecCBOR (VerKeyKES (CompactSingleKES d)) where - decCBOR = decodeVerKeyKES - {-# INLINE decCBOR #-} - -instance DSIGNAlgorithm d => DecCBOR (SignKeyKES (CompactSingleKES d)) where - decCBOR = decodeSignKeyKES - {-# INLINE decCBOR #-} - -instance DSIGNAlgorithm d => DecCBOR (SigKES (CompactSingleKES d)) where - decCBOR = decodeSigKES - {-# INLINE decCBOR #-} - -instance - (OptimizedKESAlgorithm d, HashAlgorithm h) => - DecCBOR (VerKeyKES (CompactSumKES h d)) - where - decCBOR = decodeVerKeyKES - {-# INLINE decCBOR #-} - -instance - (OptimizedKESAlgorithm d, HashAlgorithm h) => - DecCBOR (SignKeyKES (CompactSumKES h d)) - where - decCBOR = decodeSignKeyKES - {-# INLINE decCBOR #-} - -instance - (OptimizedKESAlgorithm d, HashAlgorithm h) => - DecCBOR (SigKES (CompactSumKES h d)) - where - decCBOR = decodeSigKES - {-# INLINE decCBOR #-} - -instance DSIGNAlgorithm d => DecCBOR (VerKeyKES (SingleKES d)) where - decCBOR = decodeVerKeyKES - {-# INLINE decCBOR #-} - -instance DSIGNAlgorithm d => DecCBOR (SignKeyKES (SingleKES d)) where - decCBOR = decodeSignKeyKES - {-# INLINE decCBOR #-} - -instance DSIGNAlgorithm d => DecCBOR (SigKES (SingleKES d)) where - decCBOR = decodeSigKES - {-# INLINE decCBOR #-} - -instance KnownNat t => DecCBOR (VerKeyKES (MockKES t)) where - decCBOR = decodeVerKeyKES - {-# INLINE decCBOR #-} - -instance KnownNat t => DecCBOR (SignKeyKES (MockKES t)) where - decCBOR = decodeSignKeyKES - {-# INLINE decCBOR #-} - -instance KnownNat t => DecCBOR (SigKES (MockKES t)) where - decCBOR = decodeSigKES - {-# INLINE decCBOR #-} - --------------------------------------------------------------------------------- --- VRF --------------------------------------------------------------------------------- - -instance DecCBOR (VerKeyVRF SimpleVRF) where - decCBOR = decodeVerKeyVRF - {-# INLINE decCBOR #-} - -instance DecCBOR (SignKeyVRF SimpleVRF) where - decCBOR = decodeSignKeyVRF - {-# INLINE decCBOR #-} - -instance DecCBOR (CertVRF SimpleVRF) where - decCBOR = decodeCertVRF - {-# INLINE decCBOR #-} - -instance DecCBOR (VerKeyVRF MockVRF) where - decCBOR = decodeVerKeyVRF - {-# INLINE decCBOR #-} - -instance DecCBOR (SignKeyVRF MockVRF) where - decCBOR = decodeSignKeyVRF - {-# INLINE decCBOR #-} - -instance DecCBOR (CertVRF MockVRF) where - decCBOR = decodeCertVRF - {-# INLINE decCBOR #-} - -instance DecCBOR Praos.Proof where - decCBOR = decCBOR >>= Praos.proofFromBytes - {-# INLINE decCBOR #-} - -instance DecCBOR Praos.SignKey where - decCBOR = decCBOR >>= Praos.skFromBytes - {-# INLINE decCBOR #-} - -instance DecCBOR Praos.VerKey where - decCBOR = decCBOR >>= Praos.vkFromBytes - {-# INLINE decCBOR #-} - -deriving instance DecCBOR (VerKeyVRF Praos.PraosVRF) - -deriving instance DecCBOR (SignKeyVRF Praos.PraosVRF) - -deriving instance DecCBOR (CertVRF Praos.PraosVRF) - -deriving instance Typeable v => DecCBOR (OutputVRF v) - -instance (VRFAlgorithm v, Typeable a) => DecCBOR (CertifiedVRF v a) where - decCBOR = - CertifiedVRF - <$ enforceSize "CertifiedVRF" 2 - <*> decCBOR - <*> decodeCertVRF - {-# INLINE decCBOR #-} - --------------------------------------------------------------------------------- --- Slotting --------------------------------------------------------------------------------- - -instance DecCBOR SlotNo where - decCBOR = fromPlainDecoder Serialise.decode - {-# INLINE decCBOR #-} - -instance (Serialise.Serialise t, Typeable t) => DecCBOR (WithOrigin t) where - decCBOR = fromPlainDecoder Serialise.decode - {-# INLINE decCBOR #-} - -deriving instance DecCBOR EpochNo - -deriving instance DecCBOR EpochSize - -deriving instance DecCBOR SystemStart - -instance DecCBOR BlockNo where - decCBOR = fromPlainDecoder decode - {-# INLINE decCBOR #-} - -deriving instance DecCBOR EpochInterval - --------------------------------------------------------------------------------- --- Plutus --------------------------------------------------------------------------------- - -instance DecCBOR PV1.Data where - decCBOR = fromPlainDecoder decode - {-# INLINE decCBOR #-} diff --git a/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Decoding/Decoder.hs b/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Decoding/Decoder.hs deleted file mode 100644 index 99953ea205b..00000000000 --- a/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Decoding/Decoder.hs +++ /dev/null @@ -1,1442 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} - -module Cardano.Ledger.Binary.Decoding.Decoder ( - -- * Decoders - Decoder, - toPlainDecoder, - fromPlainDecoder, - withPlainDecoder, - enforceDecoderVersion, - DecoderError (..), - C.ByteOffset, - C.DecodeAction (..), - C.TokenType (..), - - -- ** Versioning - getDecoderVersion, - ifDecoderVersionAtLeast, - whenDecoderVersionAtLeast, - unlessDecoderVersionAtLeast, - - -- ** Error reporting - cborError, - toCborError, - showDecoderError, - invalidKey, - assertTag, - enforceSize, - matchSize, - - -- ** Compatibility tools - binaryGetDecoder, - allowTag, - - -- ** Custom decoders - decodeVersion, - decodeRational, - decodeRationalWithTag, - decodeRecordNamed, - decodeRecordNamedT, - decodeRecordSum, - decodeListLike, - decodeListLikeT, - decodeEnumBounded, - decodeWithOrigin, - - -- *** Containers - decodeMaybe, - decodeNullMaybe, - decodeStrictMaybe, - decodeNullStrictMaybe, - decodeEither, - decodeList, - decodeNonEmptyList, - decodeVector, - decodeSet, - setTag, - decodeMap, - decodeMapByKey, - decodeMapLikeEnforceNoDuplicates, - decodeVMap, - decodeSeq, - decodeStrictSeq, - decodeSetTag, - decodeListLikeWithCount, - decodeSetLikeEnforceNoDuplicates, - decodeListLikeEnforceNoDuplicates, - decodeMapContents, - - -- **** Applicaitve - decodeMapTraverse, - decodeMapContentsTraverse, - - -- *** Time - decodeUTCTime, - - -- *** Network - decodeIPv4, - decodeIPv6, - - -- ** Lifted @cborg@ decoders - decodeBool, - decodeBreakOr, - decodeByteArray, - decodeByteArrayCanonical, - decodeBytes, - decodeBytesCanonical, - decodeBytesIndef, - decodeDouble, - decodeDoubleCanonical, - decodeFloat, - decodeFloat16Canonical, - decodeFloatCanonical, - decodeInt, - decodeInt16, - decodeInt16Canonical, - decodeInt32, - decodeInt32Canonical, - decodeInt64, - decodeInt64Canonical, - decodeInt8, - decodeInt8Canonical, - decodeIntCanonical, - decodeInteger, - decodeIntegerCanonical, - decodeNatural, - decodeListLen, - decodeListLenCanonical, - decodeListLenCanonicalOf, - decodeListLenIndef, - decodeListLenOf, - decodeListLenOrIndef, - decodeMapLen, - decodeMapLenCanonical, - decodeMapLenIndef, - decodeMapLenOrIndef, - decodeNegWord, - decodeNegWord64, - decodeNegWord64Canonical, - decodeNegWordCanonical, - decodeNull, - decodeSequenceLenIndef, - decodeSequenceLenN, - decodeSimple, - decodeSimpleCanonical, - decodeString, - decodeStringCanonical, - decodeStringIndef, - decodeTag, - decodeTag64, - decodeTag64Canonical, - decodeTagCanonical, - decodeUtf8ByteArray, - decodeUtf8ByteArrayCanonical, - decodeWithByteSpan, - decodeWord, - decodeWord16, - decodeWord16Canonical, - decodeWord32, - decodeWord32Canonical, - decodeWord64, - decodeWord64Canonical, - decodeWord8, - decodeWord8Canonical, - decodeWordCanonical, - decodeWordCanonicalOf, - decodeWordOf, - decodeTerm, - peekAvailable, - peekByteOffset, - peekTokenType, -) -where - -import Cardano.Ledger.Binary.Plain ( - DecoderError (..), - cborError, - invalidKey, - showDecoderError, - toCborError, - ) -import Cardano.Ledger.Binary.Version (Version, mkVersion64, natVersion) -import Cardano.Slotting.Slot (WithOrigin, withOriginFromMaybe) -import Codec.CBOR.ByteArray (ByteArray) -import qualified Codec.CBOR.Decoding as C ( - ByteOffset, - DecodeAction (..), - Decoder, - TokenType (..), - decodeBool, - decodeBreakOr, - decodeByteArray, - decodeByteArrayCanonical, - decodeBytes, - decodeBytesCanonical, - decodeBytesIndef, - decodeDouble, - decodeDoubleCanonical, - decodeFloat, - decodeFloat16Canonical, - decodeFloatCanonical, - decodeInt, - decodeInt16, - decodeInt16Canonical, - decodeInt32, - decodeInt32Canonical, - decodeInt64, - decodeInt64Canonical, - decodeInt8, - decodeInt8Canonical, - decodeIntCanonical, - decodeInteger, - decodeIntegerCanonical, - decodeListLen, - decodeListLenCanonical, - decodeListLenCanonicalOf, - decodeListLenIndef, - decodeListLenOf, - decodeListLenOrIndef, - decodeMapLen, - decodeMapLenCanonical, - decodeMapLenIndef, - decodeMapLenOrIndef, - decodeNegWord, - decodeNegWord64, - decodeNegWord64Canonical, - decodeNegWordCanonical, - decodeNull, - decodeSequenceLenIndef, - decodeSequenceLenN, - decodeSimple, - decodeSimpleCanonical, - decodeString, - decodeStringCanonical, - decodeStringIndef, - decodeTag, - decodeTag64, - decodeTag64Canonical, - decodeTagCanonical, - decodeUtf8ByteArray, - decodeUtf8ByteArrayCanonical, - decodeWithByteSpan, - decodeWord, - decodeWord16, - decodeWord16Canonical, - decodeWord32, - decodeWord32Canonical, - decodeWord64, - decodeWord64Canonical, - decodeWord8, - decodeWord8Canonical, - decodeWordCanonical, - decodeWordCanonicalOf, - decodeWordOf, - peekAvailable, - peekByteOffset, - peekTokenType, - ) -import qualified Codec.CBOR.Term as C (Term (..), decodeTerm) -import Control.Monad -import Control.Monad.Trans (MonadTrans (..)) -import Control.Monad.Trans.Identity (IdentityT (runIdentityT)) -import Data.Binary.Get (Get, getWord32le, runGetOrFail) -import qualified Data.ByteString as BS -import qualified Data.ByteString.Lazy as BSL -import Data.Functor.Compose (Compose (..)) -import Data.IP (IPv4, IPv6, fromHostAddress, fromHostAddress6) -import Data.Int (Int16, Int32, Int64, Int8) -import qualified Data.List.NonEmpty as NE (NonEmpty, nonEmpty) -import qualified Data.Map.Strict as Map -import Data.Maybe.Strict (StrictMaybe (..), maybeToStrictMaybe) -import Data.Ratio ((%)) -import qualified Data.Sequence as Seq -import qualified Data.Sequence.Strict as SSeq -import qualified Data.Set as Set -import qualified Data.Text as Text -import Data.Time.Calendar.OrdinalDate (fromOrdinalDate) -import Data.Time.Clock (UTCTime (..), picosecondsToDiffTime) -import Data.Typeable (Proxy (Proxy), Typeable, typeRep) -import qualified Data.VMap as VMap -import qualified Data.Vector.Generic as VG -import Data.Word (Word16, Word32, Word64, Word8) -import Network.Socket (HostAddress6) -import Numeric.Natural (Natural) -import Prelude hiding (decodeFloat) - --------------------------------------------------------------------------------- --- Versioned Decoder --------------------------------------------------------------------------------- - -newtype Decoder s a = Decoder - { runDecoder :: Version -> C.Decoder s a - } - -instance Functor (Decoder s) where - fmap f (Decoder d) = Decoder (fmap f . d) - {-# INLINE fmap #-} - -instance Applicative (Decoder s) where - pure x = Decoder (const (pure x)) - {-# INLINE pure #-} - Decoder f <*> Decoder g = Decoder $ \v -> f v <*> g v - {-# INLINE (<*>) #-} - Decoder f *> Decoder g = Decoder $ \v -> f v *> g v - {-# INLINE (*>) #-} - -instance Monad (Decoder s) where - Decoder f >>= g = Decoder $ \v -> do - x <- f v - runDecoder (g x) v - {-# INLINE (>>=) #-} - -instance MonadFail (Decoder s) where - fail msg = fromPlainDecoder $ fail msg - {-# INLINE fail #-} - --- | Promote a regular `C.Decoder` to a versioned one. Which means it will work for all --- versions. -fromPlainDecoder :: C.Decoder s a -> Decoder s a -fromPlainDecoder d = Decoder (const d) -{-# INLINE fromPlainDecoder #-} - --- | Extract the underlying `C.Decoder` by specifying the concrete version to be used. -toPlainDecoder :: Version -> Decoder s a -> C.Decoder s a -toPlainDecoder v (Decoder d) = d v -{-# INLINE toPlainDecoder #-} - --- | Use the supplied decoder as a plain decoder with current version. -withPlainDecoder :: Decoder s a -> (C.Decoder s a -> C.Decoder s b) -> Decoder s b -withPlainDecoder vd f = Decoder $ \curVersion -> f (toPlainDecoder curVersion vd) -{-# INLINE withPlainDecoder #-} - --- | Ignore the current version of the decoder and enforce the supplied one instead. -enforceDecoderVersion :: Version -> Decoder s a -> Decoder s a -enforceDecoderVersion version = fromPlainDecoder . toPlainDecoder version -{-# INLINE enforceDecoderVersion #-} - --------------------------------------------------------------------------------- --- Working with current decoder version --------------------------------------------------------------------------------- - --- | Extract current version of the decoder --- --- >>> import Cardano.Ledger.Decoding --- >>> decodeFullDecoder 3 "Version" getDecoderVersion "" --- Right 3 -getDecoderVersion :: Decoder s Version -getDecoderVersion = Decoder pure -{-# INLINE getDecoderVersion #-} - --- | Conditionally choose the newer or older decoder, depending on the current --- version. Version in the context of encoders/decoders is the major protocol --- version. Supplied version acts as a pivot. --- --- =====__Example__ --- --- Let's say prior to the version 2 some type `Foo` was backed by `Word16`, but at the 2nd --- version onwards it was switched to `Word32` instead. In order to support both versions, --- we change the type, but we also use this condition to keep backwards compatibility of --- the decoder: --- --- >>> newtype Foo = Foo Word32 --- >>> decFoo = Foo <$> ifDecoderVersionAtLeast 2 decodeWord32 (fromIntegral <$> decodeWord16) -ifDecoderVersionAtLeast :: - Version -> - -- | Use this decoder if current decoder version is larger or equal to the supplied - -- `Version` - Decoder s a -> - -- | Use this decoder if current decoder version is lower than the supplied `Version` - Decoder s a -> - Decoder s a -ifDecoderVersionAtLeast atLeast newerDecoder olderDecoder = do - cur <- getDecoderVersion - if cur >= atLeast - then newerDecoder - else olderDecoder -{-# INLINE ifDecoderVersionAtLeast #-} - --- | Optionally run a decoder depending on the current version and the supplied one. -whenDecoderVersionAtLeast :: - Version -> - -- | Run this decoder whenever current decoder version is larger or equal to the supplied - -- `Version` - Decoder s a -> - Decoder s () -whenDecoderVersionAtLeast atLeast decoder = do - cur <- getDecoderVersion - when (cur >= atLeast) (void decoder) -{-# INLINE whenDecoderVersionAtLeast #-} - --- | Optionally run a decoder depending on the current version and the supplied one. -unlessDecoderVersionAtLeast :: - Version -> - -- | Run this decoder whenever current decoder version is smaller to the supplied `Version` - Decoder s a -> - Decoder s () -unlessDecoderVersionAtLeast atLeast decoder = do - cur <- getDecoderVersion - unless (cur >= atLeast) (void decoder) - --------------------------------------------------------------------------------- --- Error reporting --------------------------------------------------------------------------------- - -decodeVersion :: Decoder s Version -decodeVersion = decodeWord64 >>= mkVersion64 -{-# INLINE decodeVersion #-} - --- | `Decoder` for `Rational`. Versions variance: --- --- * [>= 9] - Allows variable as well as exact list length encoding. Consumes tag 30 if --- one is present, but does not enforce it. --- --- * [>= 2] - Allows variable as well as exact list length encoding. --- --- * [== 1] - Expects exact list length encoding. -decodeRational :: Decoder s Rational -decodeRational = - ifDecoderVersionAtLeast - (natVersion @9) - (allowTag 30 >> decodeRationalWithoutTag) - ( ifDecoderVersionAtLeast - (natVersion @2) - decodeRationalWithoutTag - decodeRationalFixedSizeTuple - ) - where - decodeRationalFixedSizeTuple = do - enforceSize "Rational" 2 - n <- decodeInteger - d <- decodeInteger - if d <= 0 - then cborError $ DecoderErrorCustom "Rational" "invalid denominator" - else return $! n % d - {-# INLINE decodeRationalFixedSizeTuple #-} -{-# INLINE decodeRational #-} - --- | Future `Decoder` for `Rational` type. This decoder will be applied in future and is --- prepared here as use case on how to do upgrades to serialization. Versions variance: --- --- * [>= 10] - Enforces tag 30 --- --- * [>= 9] - Allows variable as well as exact list length encoding. Consumes tag 30 if --- one is present, but does not enforce it. --- --- * [>= 2] - Allows variable as well as exact list length encoding. --- --- * [== 1] - Expects exact list length encoding. -_decodeRationalFuture :: Decoder s Rational -_decodeRationalFuture = do - -- We are not using `natVersion` because these versions aren't yet supported. - v9 <- mkVersion64 9 - v10 <- mkVersion64 10 - ifDecoderVersionAtLeast - v10 - decodeRationalWithTag - ( ifDecoderVersionAtLeast - v9 - (allowTag 30 >> decodeRational) - decodeRational - ) - --- | Enforces tag 30 to indicate a rational number, as per tag assignment: --- --- --- -decodeRationalWithTag :: Decoder s Rational -decodeRationalWithTag = assertTag 30 >> decodeRationalWithoutTag -{-# INLINE decodeRationalWithTag #-} - -decodeRationalWithoutTag :: Decoder s Rational -decodeRationalWithoutTag = do - (numValues, values) <- decodeCollectionWithLen decodeListLenOrIndef decodeInteger - case values of - [n, d] -> do - when (d == 0) (fail "Denominator cannot be zero") - pure $! n % d - _ -> cborError $ DecoderErrorSizeMismatch "Rational" 2 numValues -{-# INLINE decodeRationalWithoutTag #-} - --------------------------------------------------------------------------------- --- Containers --------------------------------------------------------------------------------- - --- | @'Decoder'@ for list. --- --- * [>= 2] - Allows variable as well as exact list length encoding. --- --- * [< 2] - Expects variable list length encoding -decodeList :: Decoder s a -> Decoder s [a] -decodeList decodeValue = - ifDecoderVersionAtLeast - (natVersion @2) - (decodeCollection decodeListLenOrIndef decodeValue) - (decodeListWith decodeValue) -{-# INLINE decodeList #-} - -decodeNonEmptyList :: Decoder s a -> Decoder s (NE.NonEmpty a) -decodeNonEmptyList decodeValue = do - xs <- decodeList decodeValue - case NE.nonEmpty xs of - Nothing -> fail "Empty list found, expected non-empty" - Just ne -> pure ne -{-# INLINE decodeNonEmptyList #-} - --- | @'Decoder'@ for list. -decodeListWith :: Decoder s a -> Decoder s [a] -decodeListWith decodeValue = do - decodeListLenIndef - decodeSequenceLenIndef (flip (:)) [] reverse decodeValue -{-# INLINE decodeListWith #-} - --- | `Decoder` for `Maybe`. Versions variance: --- --- * [>= 2] - Allows variable as well as exact list length encoding. --- --- * [< 2] - Expects exact list length encoding -decodeMaybe :: Decoder s a -> Decoder s (Maybe a) -decodeMaybe decodeValue = do - ifDecoderVersionAtLeast - (natVersion @2) - (decodeMaybeVarLen decodeValue) - (decodeMaybeExactLen decodeValue) -{-# INLINE decodeMaybe #-} - -decodeMaybeExactLen :: Decoder s a -> Decoder s (Maybe a) -decodeMaybeExactLen decodeValue = do - n <- decodeListLen - case n of - 0 -> return Nothing - 1 -> do - !x <- decodeValue - return (Just x) - _ -> fail "too many elements while decoding Maybe." -{-# INLINE decodeMaybeExactLen #-} - -decodeMaybeVarLen :: Decoder s a -> Decoder s (Maybe a) -decodeMaybeVarLen decodeValue = do - maybeLength <- decodeListLenOrIndef - case maybeLength of - Just 0 -> pure Nothing - Just 1 -> Just <$!> decodeValue - Just _ -> fail "too many elements in length-style decoding of Maybe." - Nothing -> do - isBreak <- decodeBreakOr - if isBreak - then pure Nothing - else do - !x <- decodeValue - isBreak2 <- decodeBreakOr - unless isBreak2 $ - fail "too many elements in break-style decoding of Maybe." - pure (Just x) -{-# INLINE decodeMaybeVarLen #-} - --- | Alternative way to decode a Maybe type. --- --- /Note/ - this is not the default method for decoding `Maybe`, use `decodeMaybe` instead. -decodeNullMaybe :: Decoder s a -> Decoder s (Maybe a) -decodeNullMaybe decoder = do - peekTokenType >>= \case - C.TypeNull -> do - decodeNull - pure Nothing - _ -> Just <$> decoder -{-# INLINE decodeNullMaybe #-} - --- | Unlike `decodeMaybe` this allows variable as well as exact list length encoding for --- all versions, because Byron never used `StrictMaybe` type. -decodeStrictMaybe :: Decoder s a -> Decoder s (StrictMaybe a) -decodeStrictMaybe = fmap maybeToStrictMaybe . decodeMaybeVarLen -{-# INLINE decodeStrictMaybe #-} - --- | Alternative way to decode a `StrictMaybe` type. --- --- /Note/ - this is not the default method for decoding `StrictMaybe`, use --- `decodeStrictMaybe` instead. -decodeNullStrictMaybe :: Decoder s a -> Decoder s (StrictMaybe a) -decodeNullStrictMaybe decoder = do - peekTokenType >>= \case - C.TypeNull -> do - decodeNull - pure SNothing - _ -> SJust <$> decoder -{-# INLINE decodeNullStrictMaybe #-} - -decodeEither :: Decoder s a -> Decoder s b -> Decoder s (Either a b) -decodeEither decodeLeft decodeRight = do - decodeListLenOf 2 - t <- decodeWord - case t of - 0 -> Left <$> decodeLeft - 1 -> Right <$> decodeRight - _ -> cborError $ DecoderErrorUnknownTag "Either" (fromIntegral t) -{-# INLINE decodeEither #-} - -decodeRecordNamed :: Text.Text -> (a -> Int) -> Decoder s a -> Decoder s a -decodeRecordNamed name getRecordSize decoder = do - runIdentityT $ decodeRecordNamedT name getRecordSize (lift decoder) -{-# INLINE decodeRecordNamed #-} - -decodeRecordNamedT :: - (MonadTrans m, Monad (m (Decoder s))) => - Text.Text -> - (a -> Int) -> - m (Decoder s) a -> - m (Decoder s) a -decodeRecordNamedT name getRecordSize decoder = - decodeListLikeT name decoder $ \result n -> - lift $ matchSize ("Record " <> name) n (getRecordSize result) -{-# INLINE decodeRecordNamedT #-} - -decodeRecordSum :: Text.Text -> (Word -> Decoder s (Int, a)) -> Decoder s a -decodeRecordSum name decoder = - snd <$> do - decodeListLike name (decodeWord >>= decoder) $ \(size, _) n -> - matchSize (Text.pack "Sum " <> name) size n -{-# INLINE decodeRecordSum #-} - --- | Use this decoder for any list like structure that accepts fixed or variable list --- length encoding. -decodeListLike :: - -- | Name for error reporting - Text.Text -> - -- | Decoder for the datastructure itself - Decoder s a -> - -- | In case when length was encoded, act upon it. - (a -> Int -> Decoder s ()) -> - Decoder s a -decodeListLike name decoder actOnLength = - runIdentityT $ decodeListLikeT name (lift decoder) (\r i -> lift (actOnLength r i)) -{-# INLINE decodeListLike #-} - -decodeListLikeT :: - (MonadTrans m, Monad (m (Decoder s))) => - -- | Name for error reporting - Text.Text -> - -- | Decoder for the datastructure itself - m (Decoder s) a -> - -- | In case when length was encoded, act upon it. - (a -> Int -> m (Decoder s) ()) -> - m (Decoder s) a -decodeListLikeT name decoder actOnLength = do - lenOrIndef <- lift decodeListLenOrIndef - result <- decoder - case lenOrIndef of - Just n -> actOnLength result n - Nothing -> lift $ do - isBreak <- decodeBreakOr - unless isBreak $ cborError $ DecoderErrorCustom name "Excess terms in array" - pure result -{-# INLINE decodeListLikeT #-} - -decodeEnumBounded :: forall a s. (Enum a, Bounded a, Typeable a) => Decoder s a -decodeEnumBounded = do - n <- decodeInt - if fromEnum (minBound :: a) <= n && n <= fromEnum (maxBound :: a) - then pure $ toEnum n - else - fail $ - "Failed to decode an Enum: " <> show n <> " for TypeRep: " <> show (typeRep (Proxy @a)) -{-# INLINE decodeEnumBounded #-} - -decodeWithOrigin :: Decoder s a -> Decoder s (WithOrigin a) -decodeWithOrigin f = withOriginFromMaybe <$> decodeMaybe f -{-# INLINE decodeWithOrigin #-} - --------------------------------------------------------------------------------- --- Decoder for Map --------------------------------------------------------------------------------- - --- | Checks canonicity by comparing the new key being decoded with --- the previous one, to enfore these are sorted the correct way. --- See: https://tools.ietf.org/html/rfc7049#section-3.9 --- "[..]The keys in every map must be sorted lowest value to highest.[...]" --- --- In other words this decoder enforces strict monotonically increasing order on keys. It --- also uses exact map length encoding. -decodeMapSkel :: - forall k m v s. - Ord k => - -- | Decoded list is guaranteed to be sorted on keys in descending order without any - -- duplicate keys. - ([(k, v)] -> m) -> - -- | Decoder for keys and values - Decoder s (k, v) -> - Decoder s m -decodeMapSkel fromDistinctDescList decodeKeyValue = do - n <- decodeMapLen - fromDistinctDescList <$> case n of - 0 -> return [] - _ -> do - (firstKey, firstValue) <- decodeKeyValue - decodeEntries (n - 1) firstKey [(firstKey, firstValue)] - where - -- Decode all the entries, enforcing canonicity by ensuring that the - -- previous key is smaller than the next one. - decodeEntries :: Int -> k -> [(k, v)] -> Decoder s [(k, v)] - decodeEntries 0 _ acc = pure acc - decodeEntries !remainingPairs previousKey !acc = do - p@(newKey, _) <- decodeKeyValue - -- Order of keys needs to be strictly increasing, because otherwise it's - -- possible to supply lists with various amount of duplicate keys which - -- will result in the same map as long as the last value of the given - -- key on the list is the same in all of them. - if newKey > previousKey - then decodeEntries (remainingPairs - 1) newKey (p : acc) - else cborError $ DecoderErrorCanonicityViolation "Map" -{-# INLINE decodeMapSkel #-} - -decodeCollection :: Decoder s (Maybe Int) -> Decoder s a -> Decoder s [a] -decodeCollection lenOrIndef el = snd <$> decodeCollectionWithLen lenOrIndef el -{-# INLINE decodeCollection #-} - -decodeCollectionWithLen :: - Decoder s (Maybe Int) -> - Decoder s v -> - Decoder s (Int, [v]) -decodeCollectionWithLen lenOrIndef decodeElement = - fmap reverse <$> decodeListLikeWithCount lenOrIndef (:) (const decodeElement) -{-# INLINE decodeCollectionWithLen #-} - --- | `Decoder` for `Map.Map`. Versions variance: --- --- * [>= 9] - Allows variable as well as exact list length encoding. Duplicate keys will --- result in a deserialization failure --- --- * [>= 2] - Allows variable as well as exact list length encoding. Duplicate keys are --- silently ignored --- --- * [< 2] - Expects exact list length encoding and enforces strict order --- without any duplicates. --- --- An example of how to use versioning --- --- >>> :set -XOverloadedStrings --- >>> import Codec.CBOR.FlatTerm --- >>> fromFlatTerm (toPlainDecoder 1 (decodeMap decodeInt decodeBytes)) [TkMapLen 2,TkInt 1,TkBytes "Foo",TkInt 2,TkBytes "Bar"] --- Right (fromList [(1,"Foo"),(2,"Bar")]) --- >>> fromFlatTerm (toPlainDecoder 1 (decodeMap decodeInt decodeBytes)) [TkMapBegin,TkInt 1,TkBytes "Foo",TkInt 2,TkBytes "Bar"] --- Left "decodeMapLen: unexpected token TkMapBegin" --- >>> fromFlatTerm (toPlainDecoder 2 (decodeMap decodeInt decodeBytes)) [TkMapBegin,TkInt 1,TkBytes "Foo",TkInt 2,TkBytes "Bar",TkBreak] --- Right (fromList [(1,"Foo"),(2,"Bar")]) -decodeMap :: - Ord k => - Decoder s k -> - Decoder s v -> - Decoder s (Map.Map k v) -decodeMap decodeKey decodeValue = decodeMapByKey decodeKey (const decodeValue) -{-# INLINE decodeMap #-} - --- | Just like `decodeMap`, but also gives access to the key for the value decoder. -decodeMapByKey :: - Ord k => - Decoder s k -> - (k -> Decoder s v) -> - Decoder s (Map.Map k v) -decodeMapByKey decodeKey decodeValue = - ifDecoderVersionAtLeast - (natVersion @2) - ( ifDecoderVersionAtLeast - (natVersion @9) - (decodeMapLikeEnforceNoDuplicates decodeMapLenOrIndef decodeKeyValue) - (Map.fromList <$> decodeCollection decodeMapLenOrIndef decodeKeyValue) - ) - (decodeMapSkel Map.fromDistinctDescList decodeKeyValue) - where - decodeKeyValue = do - !key <- decodeKey - !value <- decodeValue key - pure (key, value) - {-# INLINE decodeKeyValue #-} -{-# INLINE decodeMapByKey #-} - --- | Similar to `decodeMapByKey`, except it gives access to the key value --- decoder as a pair and allows for different type of length encoding -decodeMapLikeEnforceNoDuplicates :: - Ord k => - Decoder s (Maybe Int) -> - Decoder s (k, v) -> - Decoder s (Map.Map k v) -decodeMapLikeEnforceNoDuplicates decodeLenOrIndef = - -- We first decode into a list because most of the time the encoded Map will be in sorted - -- order and there is a nice optimization on the `Map.fromList` that can take advantage of - -- that fact. In case when encoded data is not sorted the penalty of going through a list - -- is insignificant. - decodeListLikeEnforceNoDuplicates decodeLenOrIndef (:) $ \xs -> - let result = Map.fromList (reverse xs) - in (Map.size result, result) -{-# INLINE decodeMapLikeEnforceNoDuplicates #-} - --- | Decode `VMap`. Unlike `decodeMap` it does not behavee differently for --- version prior to 2. -decodeVMap :: - (VMap.Vector kv k, VMap.Vector vv v, Ord k) => - Decoder s k -> - Decoder s v -> - Decoder s (VMap.VMap kv vv k v) -decodeVMap decodeKey decodeValue = - VMap.fromMap - <$> decodeMapLikeEnforceNoDuplicates - decodeMapLenOrIndef - ((,) <$> decodeKey <*> decodeValue) -{-# INLINE decodeVMap #-} - --- | We stitch a `258` in from of a (Hash)Set, so that tools which --- programmatically check for canonicity can recognise it from a normal --- array. Why 258? This will be formalised pretty soon, but IANA allocated --- 256...18446744073709551615 to "First come, first served": --- https://www.iana.org/assignments/cbor-tags/cbor-tags.xhtml Currently `258` is --- the first unassigned tag and as it requires 2 bytes to be encoded, it sounds --- like the best fit. --- --- -setTag :: Word -setTag = 258 - -decodeSetTag :: Decoder s () -decodeSetTag = do - t <- decodeTag - when (t /= setTag) $ cborError $ DecoderErrorUnknownTag "Set" (fromIntegral t) -{-# INLINE decodeSetTag #-} - -decodeSetSkel :: - forall a s c. - Ord a => - -- | Decoded list is guaranteed to be sorted on keys in descending order without any - -- duplicate keys. - ([a] -> c) -> - Decoder s a -> - Decoder s c -decodeSetSkel fromDistinctDescList decodeValue = do - decodeSetTag - n <- decodeListLen - fromDistinctDescList <$> case n of - 0 -> return [] - _ -> do - firstValue <- decodeValue - decodeEntries (n - 1) firstValue [firstValue] - where - decodeEntries :: Int -> a -> [a] -> Decoder s [a] - decodeEntries 0 _ acc = pure acc - decodeEntries !remainingEntries previousValue !acc = do - newValue <- decodeValue - -- Order of values needs to be strictly increasing, because otherwise - -- it's possible to supply lists with various amount of duplicates which - -- will result in the same set. - if newValue > previousValue - then decodeEntries (remainingEntries - 1) newValue (newValue : acc) - else cborError $ DecoderErrorCanonicityViolation "Set" -{-# INLINE decodeSetSkel #-} - --- | `Decoder` for `Set.Set`. Versions variance: --- --- * [>= 9] - Allows variable as well as exact list length encoding. Duplicates are --- not allowed. Set tag 258 is permitted, but not enforced. --- --- * [>= 2, < 9] - Allows variable as well as exact list length encoding. Duplicates are --- silently ignored, set tag 258 is not permitted. --- --- * [< 2] - Expects exact list length encoding and enforces strict order --- without any duplicates. Also enforces special set tag 258, which was --- abandoned starting with version 2 -decodeSet :: Ord a => Decoder s a -> Decoder s (Set.Set a) -decodeSet valueDecoder = - ifDecoderVersionAtLeast - (natVersion @2) - ( ifDecoderVersionAtLeast - (natVersion @9) - (decodeSetEnforceNoDuplicates valueDecoder) - (Set.fromList <$> decodeCollection decodeListLenOrIndef valueDecoder) - ) - (decodeSetSkel Set.fromDistinctDescList valueDecoder) -{-# INLINE decodeSet #-} - -decodeSetEnforceNoDuplicates :: - forall s a. - Ord a => - Decoder s a -> - Decoder s (Set.Set a) -decodeSetEnforceNoDuplicates = decodeSetLikeEnforceNoDuplicates (:) $ \xs -> - -- We first decode into a list because most of the time the encoded Set will be in sorted - -- order and there is a nice optimization on the `Set.fromList` that can take advantage of - -- that fact. In case when encoded data is not sorted the penalty of going through a list - -- is insignificant. - let result = Set.fromList (reverse xs) - in (Set.size result, result) -{-# INLINE decodeSetEnforceNoDuplicates #-} - --- | Decode a collection of values with ability to supply length decoder. Number of --- decoded elements will be returned together with the data structure -decodeListLikeWithCount :: - forall s a b. - Monoid b => - -- | Length decoder that produces the expected number of elements. When `Nothing` is - -- decoded the `decodeBreakOr` will be used as termination indicator. - Decoder s (Maybe Int) -> - -- | Add an element into the decoded List like data structure - (a -> b -> b) -> - -- | Decoder for the values. Current accumulator is supplied as an argument - (b -> Decoder s a) -> - Decoder s (Int, b) -decodeListLikeWithCount decodeLenOrIndef insert decodeElement = do - decodeLenOrIndef >>= \case - Just len -> loop (\x -> pure (x >= len)) 0 mempty - Nothing -> loop (\_ -> decodeBreakOr) 0 mempty - where - loop :: (Int -> Decoder s Bool) -> Int -> b -> Decoder s (Int, b) - loop condition = go - where - go !count !acc = do - shouldStop <- condition count - if shouldStop - then pure (count, acc) - else do - element <- decodeElement acc - go (count + 1) (insert element acc) - {-# INLINE loop #-} -{-# INLINE decodeListLikeWithCount #-} - --- | Decode a collection of values with ability to supply length decoder. Duplicates are not --- allowed. -decodeListLikeEnforceNoDuplicates :: - forall s a b c. - Monoid b => - Decoder s (Maybe Int) -> - -- | Add an element into the decoded List like data structure - (a -> b -> b) -> - -- | Get the final data structure and the number of elements it has. - (b -> (Int, c)) -> - Decoder s a -> - Decoder s c -decodeListLikeEnforceNoDuplicates decodeLenOrIndef insert getFinalWithCount decodeElement = do - (count, result) <- decodeListLikeWithCount decodeLenOrIndef insert (const decodeElement) - let (len, finalResult) = getFinalWithCount result - when (len /= count) $ - fail $ - "Final number of elements: " - <> show len - <> " does not match the total count that was decoded: " - <> show count - pure finalResult -{-# INLINE decodeListLikeEnforceNoDuplicates #-} - --- | Decode a Set as a either a definite or indefinite list. Duplicates are not --- allowed. Set tag 258 is permitted, but not enforced. -decodeSetLikeEnforceNoDuplicates :: - forall s a b c. - Monoid b => - -- | Add an element into the decoded Set like data structure - (a -> b -> b) -> - -- | Get the final data structure from the decoded sequence of values and the number of - -- elements it contains. This is useful when a sequence on the wire is represented by a - -- @set@, namely no duplicates are allowed, while the Haskell representation uses some - -- other data structure that enforces no duplicates by some other means. For example a - -- `Map`, where keys are hashes of the values encoded on the wire. The size of the final - -- data structure will be used to enforce the invariant that the number of elements - -- decoded matches the final size of the Set like data structure, thus ensuring no - -- duplicates were encountered. - (b -> (Int, c)) -> - Decoder s a -> - Decoder s c -decodeSetLikeEnforceNoDuplicates insert getFinalWithLen decodeElement = do - allowTag setTag - decodeListLikeEnforceNoDuplicates decodeListLenOrIndef insert getFinalWithLen decodeElement -{-# INLINE decodeSetLikeEnforceNoDuplicates #-} - -decodeContainerSkelWithReplicate :: - -- | How to get the size of the container - Decoder s Int -> - -- | replicateM for the container - (Int -> Decoder s c) -> - -- | concat for the container - ([c] -> c) -> - Decoder s c -decodeContainerSkelWithReplicate decodeLen replicateFun concatList = do - -- Look at how much data we have at the moment and use it as the limit for - -- the size of a single call to replicateFun. We don't want to use - -- replicateFun directly on the result of decodeLen since this might lead to - -- DOS attack (attacker providing a huge value for length). So if it's above - -- our limit, we'll do manual chunking and then combine the containers into - -- one. - sz <- decodeLen - limit <- peekAvailable - if sz <= limit - then replicateFun sz - else do - -- Take the max of limit and a fixed chunk size (note: limit can be - -- 0). This basically means that the attacker can make us allocate a - -- container of size 128 even though there's no actual input. - let chunkSize = max limit 128 - (d, m) = sz `divMod` chunkSize - containers <- sequence $ replicateFun m : replicate d (replicateFun chunkSize) - return $! concatList containers -{-# INLINE decodeContainerSkelWithReplicate #-} - --- | Generic decoder for vectors. Its intended use is to allow easy --- definition of 'Serialise' instances for custom vector -decodeVector :: VG.Vector vec a => Decoder s a -> Decoder s (vec a) -decodeVector decodeValue = - decodeContainerSkelWithReplicate - decodeListLen - (`VG.replicateM` decodeValue) - VG.concat -{-# INLINE decodeVector #-} - --- | Decoder for `Seq.Seq`. Same behavior for all versions, allows variable as --- well as exact list length encoding -decodeSeq :: Decoder s a -> Decoder s (Seq.Seq a) -decodeSeq decoder = Seq.fromList <$> decodeCollection decodeListLenOrIndef decoder -{-# INLINE decodeSeq #-} - --- | Decoder for `SSeq.StrictSeq`. Same behavior for all versions, allows variable as --- well as exact list length encoding. -decodeStrictSeq :: Decoder s a -> Decoder s (SSeq.StrictSeq a) -decodeStrictSeq decoder = SSeq.fromList <$> decodeCollection decodeListLenOrIndef decoder -{-# INLINE decodeStrictSeq #-} - -decodeMapContents :: Decoder s a -> Decoder s [a] -decodeMapContents = decodeCollection decodeMapLenOrIndef -{-# INLINE decodeMapContents #-} - -decodeMapTraverse :: - (Ord a, Applicative t) => - Decoder s (t a) -> - Decoder s (t b) -> - Decoder s (t (Map.Map a b)) -decodeMapTraverse decodeKey decodeValue = - fmap Map.fromList <$> decodeMapContentsTraverse decodeKey decodeValue -{-# INLINE decodeMapTraverse #-} - -decodeMapContentsTraverse :: - Applicative t => - Decoder s (t a) -> - Decoder s (t b) -> - Decoder s (t [(a, b)]) -decodeMapContentsTraverse decodeKey decodeValue = - sequenceA <$> decodeMapContents decodeInlinedPair - where - decodeInlinedPair = getCompose $ (,) <$> Compose decodeKey <*> Compose decodeValue - {-# INLINE decodeInlinedPair #-} -{-# INLINE decodeMapContentsTraverse #-} - --------------------------------------------------------------------------------- --- Time --------------------------------------------------------------------------------- - --- | `Decoder` for `UTCTime`. Versions variance: --- --- * [>= 2] - Allows variable list length encoding, but still expects number of --- elements to be 3. --- --- * [< 2] - Expects exact list length encoding to be 3 -decodeUTCTime :: Decoder s UTCTime -decodeUTCTime = - ifDecoderVersionAtLeast - (natVersion @2) - (enforceSize "UTCTime" 3 >> timeDecoder) - (decodeRecordNamed "UTCTime" (const 3) timeDecoder) - where - timeDecoder = do - !year <- decodeInteger - !dayOfYear <- decodeInt - !timeOfDayPico <- decodeInteger - return $! - UTCTime - (fromOrdinalDate year dayOfYear) - (picosecondsToDiffTime timeOfDayPico) - {-# INLINE timeDecoder #-} -{-# INLINE decodeUTCTime #-} - --------------------------------------------------------------------------------- --- Network --------------------------------------------------------------------------------- - --- | Convert a `Get` monad from @binary@ package into a `Decoder` -binaryGetDecoder :: - -- | Flag to allow left over at the end or not - Bool -> - -- | Name of the function or type for error reporting - Text.Text -> - -- | Deserializer for the @binary@ package - Get a -> - Decoder s a -binaryGetDecoder allowLeftOver name getter = do - bs <- decodeBytes - case runGetOrFail getter (BSL.fromStrict bs) of - Left (_, _, err) -> cborError $ DecoderErrorCustom name (Text.pack err) - Right (leftOver, _, ha) - | allowLeftOver || BSL.null leftOver -> pure ha - | otherwise -> - cborError $ DecoderErrorLeftover name (BSL.toStrict leftOver) -{-# INLINE binaryGetDecoder #-} - -decodeIPv4 :: Decoder s IPv4 -decodeIPv4 = - fromHostAddress - <$> ifDecoderVersionAtLeast - (natVersion @9) - (binaryGetDecoder False "decodeIPv4" getWord32le) - (binaryGetDecoder True "decodeIPv4" getWord32le) -{-# INLINE decodeIPv4 #-} - -getHostAddress6 :: Get HostAddress6 -getHostAddress6 = do - !w1 <- getWord32le - !w2 <- getWord32le - !w3 <- getWord32le - !w4 <- getWord32le - return (w1, w2, w3, w4) -{-# INLINE getHostAddress6 #-} - -decodeIPv6 :: Decoder s IPv6 -decodeIPv6 = - fromHostAddress6 - <$> ifDecoderVersionAtLeast - (natVersion @9) - (binaryGetDecoder False "decodeIPv6" getHostAddress6) - (binaryGetDecoder True "decodeIPv6" getHostAddress6) -{-# INLINE decodeIPv6 #-} - --------------------------------------------------------------------------------- --- Wrapped CBORG decoders --------------------------------------------------------------------------------- - -decodeTagMaybe :: Decoder s (Maybe Word64) -decodeTagMaybe = - peekTokenType >>= \case - C.TypeTag -> Just . fromIntegral <$> decodeTag - C.TypeTag64 -> Just <$> decodeTag64 - _ -> pure Nothing -{-# INLINE decodeTagMaybe #-} - -allowTag :: Word -> Decoder s () -allowTag tagExpected = do - mTagReceived <- decodeTagMaybe - forM_ mTagReceived $ \tagReceived -> - unless (tagReceived == (fromIntegral tagExpected :: Word64)) $ - fail $ - "Expecteg tag " <> show tagExpected <> " but got tag " <> show tagReceived -{-# INLINE allowTag #-} - -assertTag :: Word -> Decoder s () -assertTag tagExpected = do - tagReceived <- - decodeTagMaybe >>= \case - Just tag -> pure tag - Nothing -> fail "Expected tag" - unless (tagReceived == (fromIntegral tagExpected :: Word64)) $ - fail $ - "Expecteg tag " <> show tagExpected <> " but got tag " <> show tagReceived -{-# INLINE assertTag #-} - --- | Enforces that the input size is the same as the decoded one, failing in --- case it's not -enforceSize :: Text.Text -> Int -> Decoder s () -enforceSize lbl requestedSize = decodeListLen >>= matchSize lbl requestedSize -{-# INLINE enforceSize #-} - --- | Compare two sizes, failing if they are not equal -matchSize :: Text.Text -> Int -> Int -> Decoder s () -matchSize lbl requestedSize actualSize = - when (actualSize /= requestedSize) $ - cborError $ - DecoderErrorSizeMismatch - lbl - requestedSize - actualSize -{-# INLINE matchSize #-} - -decodeBool :: Decoder s Bool -decodeBool = fromPlainDecoder C.decodeBool -{-# INLINE decodeBool #-} - -decodeBreakOr :: Decoder s Bool -decodeBreakOr = fromPlainDecoder C.decodeBreakOr -{-# INLINE decodeBreakOr #-} - -decodeByteArray :: Decoder s ByteArray -decodeByteArray = fromPlainDecoder C.decodeByteArray -{-# INLINE decodeByteArray #-} - -decodeByteArrayCanonical :: Decoder s ByteArray -decodeByteArrayCanonical = fromPlainDecoder C.decodeByteArrayCanonical -{-# INLINE decodeByteArrayCanonical #-} - -decodeBytes :: Decoder s BS.ByteString -decodeBytes = fromPlainDecoder C.decodeBytes -{-# INLINE decodeBytes #-} - -decodeBytesCanonical :: Decoder s BS.ByteString -decodeBytesCanonical = fromPlainDecoder C.decodeBytesCanonical -{-# INLINE decodeBytesCanonical #-} - -decodeBytesIndef :: Decoder s () -decodeBytesIndef = fromPlainDecoder C.decodeBytesIndef -{-# INLINE decodeBytesIndef #-} - -decodeDouble :: Decoder s Double -decodeDouble = fromPlainDecoder C.decodeDouble -{-# INLINE decodeDouble #-} - -decodeDoubleCanonical :: Decoder s Double -decodeDoubleCanonical = fromPlainDecoder C.decodeDoubleCanonical -{-# INLINE decodeDoubleCanonical #-} - -decodeFloat :: Decoder s Float -decodeFloat = fromPlainDecoder C.decodeFloat -{-# INLINE decodeFloat #-} - -decodeFloat16Canonical :: Decoder s Float -decodeFloat16Canonical = fromPlainDecoder C.decodeFloat16Canonical -{-# INLINE decodeFloat16Canonical #-} - -decodeFloatCanonical :: Decoder s Float -decodeFloatCanonical = fromPlainDecoder C.decodeFloatCanonical -{-# INLINE decodeFloatCanonical #-} - -decodeInt :: Decoder s Int -decodeInt = fromPlainDecoder C.decodeInt -{-# INLINE decodeInt #-} - -decodeInt16 :: Decoder s Int16 -decodeInt16 = fromPlainDecoder C.decodeInt16 -{-# INLINE decodeInt16 #-} - -decodeInt16Canonical :: Decoder s Int16 -decodeInt16Canonical = fromPlainDecoder C.decodeInt16Canonical -{-# INLINE decodeInt16Canonical #-} - -decodeInt32 :: Decoder s Int32 -decodeInt32 = fromPlainDecoder C.decodeInt32 -{-# INLINE decodeInt32 #-} - -decodeInt32Canonical :: Decoder s Int32 -decodeInt32Canonical = fromPlainDecoder C.decodeInt32Canonical -{-# INLINE decodeInt32Canonical #-} - -decodeInt64 :: Decoder s Int64 -decodeInt64 = fromPlainDecoder C.decodeInt64 -{-# INLINE decodeInt64 #-} - -decodeInt64Canonical :: Decoder s Int64 -decodeInt64Canonical = fromPlainDecoder C.decodeInt64Canonical -{-# INLINE decodeInt64Canonical #-} - -decodeInt8 :: Decoder s Int8 -decodeInt8 = fromPlainDecoder C.decodeInt8 -{-# INLINE decodeInt8 #-} - -decodeInt8Canonical :: Decoder s Int8 -decodeInt8Canonical = fromPlainDecoder C.decodeInt8Canonical -{-# INLINE decodeInt8Canonical #-} - -decodeIntCanonical :: Decoder s Int -decodeIntCanonical = fromPlainDecoder C.decodeIntCanonical -{-# INLINE decodeIntCanonical #-} - -decodeInteger :: Decoder s Integer -decodeInteger = fromPlainDecoder C.decodeInteger -{-# INLINE decodeInteger #-} - -decodeNatural :: Decoder s Natural -decodeNatural = do - !n <- decodeInteger - if n >= 0 - then return $! fromInteger n - else cborError $ DecoderErrorCustom "Natural" "got a negative number" -{-# INLINE decodeNatural #-} - -decodeIntegerCanonical :: Decoder s Integer -decodeIntegerCanonical = fromPlainDecoder C.decodeIntegerCanonical -{-# INLINE decodeIntegerCanonical #-} - -decodeListLen :: Decoder s Int -decodeListLen = fromPlainDecoder C.decodeListLen -{-# INLINE decodeListLen #-} - -decodeListLenCanonical :: Decoder s Int -decodeListLenCanonical = fromPlainDecoder C.decodeListLenCanonical -{-# INLINE decodeListLenCanonical #-} - -decodeListLenCanonicalOf :: Int -> Decoder s () -decodeListLenCanonicalOf = fromPlainDecoder . C.decodeListLenCanonicalOf -{-# INLINE decodeListLenCanonicalOf #-} - -decodeListLenIndef :: Decoder s () -decodeListLenIndef = fromPlainDecoder C.decodeListLenIndef -{-# INLINE decodeListLenIndef #-} - -decodeListLenOf :: Int -> Decoder s () -decodeListLenOf = fromPlainDecoder . C.decodeListLenOf -{-# INLINE decodeListLenOf #-} - -decodeListLenOrIndef :: Decoder s (Maybe Int) -decodeListLenOrIndef = fromPlainDecoder C.decodeListLenOrIndef -{-# INLINE decodeListLenOrIndef #-} - -decodeMapLen :: Decoder s Int -decodeMapLen = fromPlainDecoder C.decodeMapLen -{-# INLINE decodeMapLen #-} - -decodeMapLenCanonical :: Decoder s Int -decodeMapLenCanonical = fromPlainDecoder C.decodeMapLenCanonical -{-# INLINE decodeMapLenCanonical #-} - -decodeMapLenIndef :: Decoder s () -decodeMapLenIndef = fromPlainDecoder C.decodeMapLenIndef -{-# INLINE decodeMapLenIndef #-} - -decodeMapLenOrIndef :: Decoder s (Maybe Int) -decodeMapLenOrIndef = fromPlainDecoder C.decodeMapLenOrIndef -{-# INLINE decodeMapLenOrIndef #-} - -decodeNegWord :: Decoder s Word -decodeNegWord = fromPlainDecoder C.decodeNegWord -{-# INLINE decodeNegWord #-} - -decodeNegWord64 :: Decoder s Word64 -decodeNegWord64 = fromPlainDecoder C.decodeNegWord64 -{-# INLINE decodeNegWord64 #-} - -decodeNegWord64Canonical :: Decoder s Word64 -decodeNegWord64Canonical = fromPlainDecoder C.decodeNegWord64Canonical -{-# INLINE decodeNegWord64Canonical #-} - -decodeNegWordCanonical :: Decoder s Word -decodeNegWordCanonical = fromPlainDecoder C.decodeNegWordCanonical -{-# INLINE decodeNegWordCanonical #-} - -decodeNull :: Decoder s () -decodeNull = fromPlainDecoder C.decodeNull -{-# INLINE decodeNull #-} - -decodeSequenceLenIndef :: (r -> a -> r) -> r -> (r -> b) -> Decoder s a -> Decoder s b -decodeSequenceLenIndef a b c dec = withPlainDecoder dec $ C.decodeSequenceLenIndef a b c -{-# INLINE decodeSequenceLenIndef #-} - -decodeSequenceLenN :: (r -> a -> r) -> r -> (r -> b) -> Int -> Decoder s a -> Decoder s b -decodeSequenceLenN a b c n dec = withPlainDecoder dec $ C.decodeSequenceLenN a b c n -{-# INLINE decodeSequenceLenN #-} - -decodeSimple :: Decoder s Word8 -decodeSimple = fromPlainDecoder C.decodeSimple -{-# INLINE decodeSimple #-} - -decodeSimpleCanonical :: Decoder s Word8 -decodeSimpleCanonical = fromPlainDecoder C.decodeSimpleCanonical -{-# INLINE decodeSimpleCanonical #-} - -decodeString :: Decoder s Text.Text -decodeString = fromPlainDecoder C.decodeString -{-# INLINE decodeString #-} - -decodeStringCanonical :: Decoder s Text.Text -decodeStringCanonical = fromPlainDecoder C.decodeStringCanonical -{-# INLINE decodeStringCanonical #-} - -decodeStringIndef :: Decoder s () -decodeStringIndef = fromPlainDecoder C.decodeStringIndef -{-# INLINE decodeStringIndef #-} - -decodeTag :: Decoder s Word -decodeTag = fromPlainDecoder C.decodeTag -{-# INLINE decodeTag #-} - -decodeTag64 :: Decoder s Word64 -decodeTag64 = fromPlainDecoder C.decodeTag64 -{-# INLINE decodeTag64 #-} - -decodeTag64Canonical :: Decoder s Word64 -decodeTag64Canonical = fromPlainDecoder C.decodeTag64Canonical -{-# INLINE decodeTag64Canonical #-} - -decodeTagCanonical :: Decoder s Word -decodeTagCanonical = fromPlainDecoder C.decodeTagCanonical -{-# INLINE decodeTagCanonical #-} - -decodeUtf8ByteArray :: Decoder s ByteArray -decodeUtf8ByteArray = fromPlainDecoder C.decodeUtf8ByteArray -{-# INLINE decodeUtf8ByteArray #-} - -decodeUtf8ByteArrayCanonical :: Decoder s ByteArray -decodeUtf8ByteArrayCanonical = fromPlainDecoder C.decodeUtf8ByteArrayCanonical -{-# INLINE decodeUtf8ByteArrayCanonical #-} - -decodeWithByteSpan :: Decoder s a -> Decoder s (a, C.ByteOffset, C.ByteOffset) -decodeWithByteSpan d = withPlainDecoder d C.decodeWithByteSpan -{-# INLINE decodeWithByteSpan #-} - -decodeWord :: Decoder s Word -decodeWord = fromPlainDecoder C.decodeWord -{-# INLINE decodeWord #-} - -decodeWord16 :: Decoder s Word16 -decodeWord16 = fromPlainDecoder C.decodeWord16 -{-# INLINE decodeWord16 #-} - -decodeWord16Canonical :: Decoder s Word16 -decodeWord16Canonical = fromPlainDecoder C.decodeWord16Canonical -{-# INLINE decodeWord16Canonical #-} - -decodeWord32 :: Decoder s Word32 -decodeWord32 = fromPlainDecoder C.decodeWord32 -{-# INLINE decodeWord32 #-} - -decodeWord32Canonical :: Decoder s Word32 -decodeWord32Canonical = fromPlainDecoder C.decodeWord32Canonical -{-# INLINE decodeWord32Canonical #-} - -decodeWord64 :: Decoder s Word64 -decodeWord64 = fromPlainDecoder C.decodeWord64 -{-# INLINE decodeWord64 #-} - -decodeWord64Canonical :: Decoder s Word64 -decodeWord64Canonical = fromPlainDecoder C.decodeWord64Canonical -{-# INLINE decodeWord64Canonical #-} - -decodeWord8 :: Decoder s Word8 -decodeWord8 = fromPlainDecoder C.decodeWord8 -{-# INLINE decodeWord8 #-} - -decodeWord8Canonical :: Decoder s Word8 -decodeWord8Canonical = fromPlainDecoder C.decodeWord8Canonical -{-# INLINE decodeWord8Canonical #-} - -decodeWordCanonical :: Decoder s Word -decodeWordCanonical = fromPlainDecoder C.decodeWordCanonical -{-# INLINE decodeWordCanonical #-} - -decodeWordCanonicalOf :: Word -> Decoder s () -decodeWordCanonicalOf = fromPlainDecoder . C.decodeWordCanonicalOf -{-# INLINE decodeWordCanonicalOf #-} - -decodeWordOf :: Word -> Decoder s () -decodeWordOf = fromPlainDecoder . C.decodeWordOf -{-# INLINE decodeWordOf #-} - -decodeTerm :: Decoder s C.Term -decodeTerm = fromPlainDecoder C.decodeTerm -{-# INLINE decodeTerm #-} - -peekAvailable :: Decoder s Int -peekAvailable = fromPlainDecoder C.peekAvailable -{-# INLINE peekAvailable #-} - -peekByteOffset :: Decoder s C.ByteOffset -peekByteOffset = fromPlainDecoder C.peekByteOffset -{-# INLINE peekByteOffset #-} - -peekTokenType :: Decoder s C.TokenType -peekTokenType = fromPlainDecoder C.peekTokenType -{-# INLINE peekTokenType #-} diff --git a/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Decoding/Drop.hs b/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Decoding/Drop.hs deleted file mode 100644 index 4b0ca863292..00000000000 --- a/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Decoding/Drop.hs +++ /dev/null @@ -1,69 +0,0 @@ --- | /DEPRECATED/ - This module is deprecated and used in Byron era exclusively. For newer --- implementation of this functionality use `Cardano.Ledger.Binary.Decoding.DecCBOR.dropCBOR` --- --- A 'Dropper s' is a 'Decoder s ()', that is a decoder that returns nothing --- --- We use 'Dropper's when we don't care about the result of decoding, for --- example when we have deprecated some part of the serialised blockchain, but --- still need to decode old blocks. -module Cardano.Ledger.Binary.Decoding.Drop ( - Dropper, - dropBytes, - dropInt32, - dropList, - dropMap, - dropSet, - dropTuple, - dropTriple, - dropWord8, - dropWord64, -) -where - -import Cardano.Ledger.Binary.Decoding.Decoder -import Control.Monad (replicateM_) -import Data.Functor (void) - -type Dropper s = Decoder s () - -dropBytes :: Dropper s -dropBytes = void decodeBytes - -dropInt32 :: Dropper s -dropInt32 = void decodeInt32 - --- | Drop a list of values using the supplied `Dropper` for each element -dropList :: Dropper s -> Dropper s -dropList dropElems = do - decodeListLenIndef - decodeSequenceLenIndef const () id dropElems - -dropMap :: Dropper s -> Dropper s -> Dropper s -dropMap dropKey dropValue = do - n <- decodeMapLen - replicateM_ n $ dropKey >> dropValue - -dropSet :: Dropper s -> Dropper s -dropSet dropElem = do - void decodeTag - n <- decodeListLen - replicateM_ n dropElem - -dropTuple :: Dropper s -> Dropper s -> Dropper s -dropTuple dropA dropB = do - decodeListLenOf 2 - dropA - dropB - -dropTriple :: Dropper s -> Dropper s -> Dropper s -> Dropper s -dropTriple dropA dropB dropC = do - decodeListLenOf 3 - dropA - dropB - dropC - -dropWord8 :: Dropper s -dropWord8 = void decodeWord8 - -dropWord64 :: Dropper s -dropWord64 = void decodeWord64 diff --git a/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Decoding/Sharing.hs b/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Decoding/Sharing.hs deleted file mode 100644 index 8a4c502c566..00000000000 --- a/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Decoding/Sharing.hs +++ /dev/null @@ -1,204 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilies #-} - -module Cardano.Ledger.Binary.Decoding.Sharing ( - DecShareCBOR (..), - Interns (..), - Intern (..), - decShareLensCBOR, - decSharePlusLensCBOR, - decNoShareCBOR, - interns, - internsFromMap, - internsFromVMap, - toMemptyLens, - decShareMonadCBOR, -) -where - -import Cardano.Ledger.Binary.Decoding.DecCBOR -import Cardano.Ledger.Binary.Decoding.Decoder -import Control.Monad ((<$!>)) -import Control.Monad.Trans -import Control.Monad.Trans.State.Strict -import qualified Data.Foldable as F -import Data.Kind -import qualified Data.Map.Strict as Map (size) -import Data.Map.Strict.Internal (Map (..)) -import Data.Primitive.Types (Prim) -import Data.VMap (VB, VMap, VP) -import qualified Data.VMap as VMap -import Lens.Micro - --- ======================================= - --- | This is an abstract interface that does the interning. In other words it --- does the actual sharing by looking up the supplied value in some existing --- data structure and uses that value instead. Relying on this interface gives us --- the benefit of ignoring the type of underlying data structure and allows us --- to compose many `Intern`s with the monoidal interface provided by `Interns` --- wrapper. In order to create an `Intern` see the `internsFromMap` or --- `internsFromVMap` functions. -data Intern a = Intern - { internMaybe :: a -> Maybe a - -- ^ Function that will do the interning. If value is not available then - -- `Nothing` is returned. - , internWeight :: !Int - -- ^ Used for sorting. Normally set to the size of the underlying data - -- structure. Keeping interns sorted with respect to how many elements - -- is in the underlying data structure in theory gives a better chance of - -- successful intern hit sooner rather than later. - } - -newtype Interns a = Interns [Intern a] - deriving (Monoid) - -interns :: Interns k -> k -> k -interns (Interns []) !k = k -- optimize for common case when there are no interns -interns (Interns is) !k = go is - where - go [] = k - go (x : xs) = - case internMaybe x k of - Just kx -> kx - Nothing -> go xs -{-# INLINE interns #-} - -internsFromMap :: Ord k => Map k a -> Interns k -internsFromMap m = - Interns - [ Intern - { internMaybe = \k -> - let go Tip = Nothing - go (Bin _ kx _ l r) = - case compare k kx of - LT -> go l - GT -> go r - EQ -> Just kx - in go m - , internWeight = Map.size m - } - ] - -internsFromVMap :: Ord k => VMap VB kv k a -> Interns k -internsFromVMap m = - Interns - [ Intern - { internMaybe = \k -> VMap.internMaybe k m - , internWeight = VMap.size m - } - ] - -instance Semigroup (Interns a) where - (<>) is1 (Interns []) = is1 - (<>) (Interns []) is2 = is2 - (<>) (Interns is1) (Interns is2) = - Interns (F.foldr insertIntoSortedInterns is2 is1) - where - insertIntoSortedInterns i [] = [i] - insertIntoSortedInterns i (a : as) - | internWeight a > internWeight i = a : insertIntoSortedInterns i as - | otherwise = i : a : as - -class Monoid (Share a) => DecShareCBOR a where - {-# MINIMAL (decShareCBOR | decSharePlusCBOR) #-} - type Share a :: Type - type Share a = () - - -- | Whenever `fromShareCBOR` is being used for defining the instance this - -- function should return the state that can be added whenever user invokes - -- `decSharePlusCBOR`. `mempty` is returned by default. - getShare :: a -> Share a - getShare _ = mempty - - -- | Utilize sharing when decoding, but do not add anything to the state for - -- future sharing. - decShareCBOR :: Share a -> Decoder s a - decShareCBOR s = fst <$> runStateT decSharePlusCBOR s - - -- | Deserialize with sharing and add to the state that is used for sharing. Default - -- implementation will add value returned by `getShare` for adding to the - -- state. - decSharePlusCBOR :: StateT (Share a) (Decoder s) a - decSharePlusCBOR = do - s <- get - x <- lift $ decShareCBOR s - x <$ put (getShare x <> s) - -decShareLensCBOR :: - DecShareCBOR b => - SimpleGetter bs (Share b) -> - StateT bs (Decoder s) b -decShareLensCBOR l = do - s <- get - lift $ decShareCBOR (s ^. l) - --- | Using this function it is possible to compose two lenses. One will extract --- a value and another will used it for placing it into a empty monoid. Here is --- an example of how a second element of a tuple can be projected on the third --- element of a 3-tuple. --- --- > toMemptyLens _3 _2 == lens (\(_, b) -> (mempty, mempty, b)) (\(a, _) (_, _, b) -> (a, b)) --- --- Here is an example where we extract a second element of a tuple and insert it at --- third position of a three tuple while all other elements are set to `mempty`: --- --- >>> import Lens.Micro --- >>> ("foo","bar") ^. toMemptyLens _3 _2 :: (Maybe String, (), String) --- (Nothing,(),"bar") --- --- In the opposite direction of extracting the third element of a 3-tuple and --- replacing the second element of the tuple the setter is being applied to --- --- >>> ("foo","bar") & toMemptyLens _3 _2 .~ (Just "baz", (), "booyah") :: (String, String) --- ("foo","booyah") -toMemptyLens :: Monoid a => Lens' a b -> Lens' c b -> Lens' c a -toMemptyLens lto lfrom = - lens (\s -> mempty & lto .~ (s ^. lfrom)) (\s a -> s & lfrom .~ (a ^. lto)) - --- | Just like `decSharePlusCBOR`, except allows to transform the shared state --- with a lens. -decSharePlusLensCBOR :: - DecShareCBOR b => - Lens' bs (Share b) -> - StateT bs (Decoder s) b -decSharePlusLensCBOR l = do - s <- get - (x, k) <- lift $ runStateT decSharePlusCBOR (s ^. l) - x <$ put (s & l .~ k) - --- | Use `DecShareCBOR` class while ignoring sharing -decNoShareCBOR :: DecShareCBOR a => Decoder s a -decNoShareCBOR = decShareCBOR mempty - -instance (Ord k, DecCBOR k, DecCBOR v) => DecShareCBOR (Map k v) where - type Share (Map k v) = (Interns k, Interns v) - decShareCBOR (kis, vis) = do - decodeMap (interns kis <$> decCBOR) (interns vis <$> decCBOR) - getShare !m = (internsFromMap m, mempty) - -instance (Ord k, DecCBOR k, DecCBOR v) => DecShareCBOR (VMap VB VB k v) where - type Share (VMap VB VB k v) = (Interns k, Interns v) - decShareCBOR (kis, vis) = do - decodeVMap (interns kis <$> decCBOR) (interns vis <$> decCBOR) - getShare !m = (internsFromVMap m, mempty) - -instance (Ord k, DecCBOR k, DecCBOR v, Prim v) => DecShareCBOR (VMap VB VP k v) where - type Share (VMap VB VP k v) = Interns k - decShareCBOR kis = do - decodeVMap (interns kis <$> decCBOR) decCBOR - getShare !m = internsFromVMap m - --- | Share every item in a functor, have deserializing it -decShareMonadCBOR :: (DecCBOR (f b), Monad f) => Interns b -> Decoder s (f b) -decShareMonadCBOR kis = do - sm <- decCBOR - pure (interns kis <$!> sm) diff --git a/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Decoding/Sized.hs b/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Decoding/Sized.hs deleted file mode 100644 index 9b897023e78..00000000000 --- a/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Decoding/Sized.hs +++ /dev/null @@ -1,80 +0,0 @@ -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE RankNTypes #-} - -module Cardano.Ledger.Binary.Decoding.Sized ( - Sized (..), - mkSized, - decodeSized, - sizedDecoder, - toSizedL, -) -where - -import Cardano.Ledger.Binary.Decoding.Annotated (Annotated (..), ByteSpan (..), annotatedDecoder) -import Cardano.Ledger.Binary.Decoding.DecCBOR (DecCBOR (decCBOR)) -import Cardano.Ledger.Binary.Decoding.Decoder (Decoder) -import Cardano.Ledger.Binary.Encoding (serialize) -import Cardano.Ledger.Binary.Encoding.EncCBOR (EncCBOR (encCBOR)) -import Cardano.Ledger.Binary.Version (Version) -import Control.DeepSeq (NFData (..), deepseq) -import qualified Data.ByteString.Lazy as BSL -import Data.Int (Int64) -import GHC.Generics (Generic) -import Lens.Micro (Lens', lens, (&), (.~), (^.)) -import NoThunks.Class (NoThunks) - --- | A CBOR deserialized value together with its size. When deserializing use --- either `decodeSized` or its `DecCBOR` instance. --- --- Use `mkSized` to construct such value. -data Sized a = Sized - { sizedValue :: !a - , sizedSize :: Int64 - -- ^ Overhead in bytes. The field is lazy on purpose, because it might not - -- be needed, but it can be expensive to compute. - } - deriving (Eq, Show, Generic) - -instance NoThunks a => NoThunks (Sized a) - -instance NFData a => NFData (Sized a) where - rnf (Sized val sz) = val `deepseq` sz `seq` () - --- | Construct a `Sized` value by serializing it first and recording the amount --- of bytes it requires. Note, however, CBOR serialization is not canonical, --- therefore it is *NOT* a requirement that this property holds: --- --- > sizedSize (mkSized a) === sizedSize (unsafeDeserialize (serialize a) :: a) -mkSized :: EncCBOR a => Version -> a -> Sized a -mkSized version a = - Sized - { sizedValue = a - , sizedSize = BSL.length (serialize version a) - } - -decodeSized :: Decoder s a -> Decoder s (Sized a) -decodeSized decoder = do - Annotated v (ByteSpan start end) <- annotatedDecoder decoder - pure $! Sized v $! end - start -{-# INLINE decodeSized #-} - -sizedDecoder :: Decoder s a -> Decoder s (Sized a) -sizedDecoder = decodeSized -{-# DEPRECATED sizedDecoder "In favor of more consistently named `decodeSized`" #-} - -instance DecCBOR a => DecCBOR (Sized a) where - decCBOR = decodeSized decCBOR - {-# INLINE decCBOR #-} - --- | Discards the size. -instance EncCBOR a => EncCBOR (Sized a) where - -- Size is an auxiliary value and should not be transmitted over the wire, - -- therefore it is ignored. - encCBOR (Sized v _) = encCBOR v - --- | Take a lens that operates on a particular type and convert it into a lens --- that operates on the `Sized` version of the type. -toSizedL :: EncCBOR s => Version -> Lens' s a -> Lens' (Sized s) a -toSizedL version l = - lens (\sv -> sizedValue sv ^. l) (\sv a -> mkSized version (sizedValue sv & l .~ a)) -{-# INLINEABLE toSizedL #-} diff --git a/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Encoding.hs b/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Encoding.hs deleted file mode 100644 index 441b49afc0f..00000000000 --- a/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Encoding.hs +++ /dev/null @@ -1,123 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} - -module Cardano.Ledger.Binary.Encoding ( - -- * Running decoders - serialize, - serialize', - serializeBuilder, - - -- ** Hash - hashWithEncoder, - hashEncCBOR, - module Cardano.Ledger.Binary.Version, - module Cardano.Ledger.Binary.Encoding.Encoder, - module Cardano.Ledger.Binary.Encoding.EncCBOR, - - -- * Nested CBOR-in-CBOR - encodeNestedCbor, - encodeNestedCborBytes, - nestedCborSizeExpr, - nestedCborBytesSizeExpr, - - -- * Tools - runByteBuilder, - - -- * Deprecated - encCBORMaybe, -) -where - -import qualified Cardano.Crypto.Hash.Class as C -import Cardano.Ledger.Binary.Encoding.EncCBOR -import Cardano.Ledger.Binary.Encoding.Encoder -import Cardano.Ledger.Binary.Version -import qualified Data.ByteString as BS -import Data.ByteString.Builder (Builder) -import Data.ByteString.Builder.Extra (safeStrategy, toLazyByteStringWith) -import qualified Data.ByteString.Lazy as BSL - --- | Serialize a Haskell value with a 'EncCBOR' instance to an external binary --- representation. --- --- The output is represented as a lazy 'BSL.ByteString' and is constructed --- incrementally. -serialize :: EncCBOR a => Version -> a -> BSL.ByteString -serialize version = - toLazyByteStringWith strategy mempty . toBuilder version . encCBOR - where - -- 1024 is the size of the first buffer, 4096 is the size of subsequent - -- buffers. Chosen because they seem to give good performance. They are not - -- sacred. - strategy = safeStrategy 1024 4096 - --- | Serialize a Haskell value to an external binary representation. --- --- The output is represented as a strict 'ByteString'. -serialize' :: EncCBOR a => Version -> a -> BS.ByteString -serialize' version = BSL.toStrict . serialize version - --- | Serialize into a Builder. Useful if you want to throw other ByteStrings --- around it. -serializeBuilder :: EncCBOR a => Version -> a -> Builder -serializeBuilder version = toBuilder version . encCBOR - --------------------------------------------------------------------------------- --- Hashing --------------------------------------------------------------------------------- - -hashWithEncoder :: forall h a. C.HashAlgorithm h => Version -> (a -> Encoding) -> a -> C.Hash h a -hashWithEncoder version toEnc = C.hashWith (serialize' version . toEnc) - -hashEncCBOR :: forall h a. (C.HashAlgorithm h, EncCBOR a) => Version -> a -> C.Hash h a -hashEncCBOR version = hashWithEncoder version encCBOR - --------------------------------------------------------------------------------- --- Nested CBOR-in-CBOR --- https://tools.ietf.org/html/rfc7049#section-2.4.4.1 --------------------------------------------------------------------------------- - --- | Encode and serialise the given `a` and sorround it with the semantic tag 24 --- In CBOR diagnostic notation: --- >>> 24(h'DEADBEEF') -encodeNestedCbor :: EncCBOR a => a -> Encoding -encodeNestedCbor value = - encodeTag 24 - <> withCurrentEncodingVersion (\version -> encCBOR (serialize version value)) - --- | Like `encodeNestedCbor`, but assumes nothing about the shape of --- input object, so that it must be passed as a binary `ByteString` blob. It's --- the caller responsibility to ensure the input `ByteString` correspond --- indeed to valid, previously-serialised CBOR data. -encodeNestedCborBytes :: BSL.ByteString -> Encoding -encodeNestedCborBytes x = encodeTag 24 <> encCBOR x - -nestedCborSizeExpr :: Size -> Size -nestedCborSizeExpr x = 2 + apMono "withWordSize" withWordSize x + x - -nestedCborBytesSizeExpr :: Size -> Size -nestedCborBytesSizeExpr x = 2 + apMono "withWordSize" withWordSize x + x - --------------------------------------------------------------------------------- --- Tools --------------------------------------------------------------------------------- - --- | Run a ByteString 'Builder' using a strategy aimed at making smaller --- things efficiently. --- --- It takes a size hint and produces a strict 'ByteString'. This will be fast --- when the size hint is the same or slightly bigger than the true size. -runByteBuilder :: Int -> Builder -> BS.ByteString -runByteBuilder !sizeHint = - BSL.toStrict . toLazyByteStringWith (safeStrategy sizeHint (2 * sizeHint)) mempty -{-# NOINLINE runByteBuilder #-} - --------------------------------------------------------------------------------- --- Deprecations --------------------------------------------------------------------------------- - -encCBORMaybe :: (a -> Encoding) -> (Maybe a -> Encoding) -encCBORMaybe = encodeMaybe -{-# DEPRECATED encCBORMaybe "In favor of `encodeMaybe`" #-} diff --git a/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Encoding/Coders.hs b/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Encoding/Coders.hs deleted file mode 100644 index 192268d4fe0..00000000000 --- a/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Encoding/Coders.hs +++ /dev/null @@ -1,238 +0,0 @@ -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} - --- | Data.Coders provides tools for writing 'EncCBOR' and 'DecCBOR' instances (see module --- 'Cardano.Binary') in an intuitive way that mirrors the way one constructs values of a --- particular type. Advantages include: --- --- 1. Book-keeping details neccesary to write correct instances are hidden from the user. --- 2. Inverse 'EncCBOR' and 'DecCBOR' instances have visually similar definitions. --- 3. Advanced instances involving sparse-encoding, compact-representation, and 'Annotator' instances are also supported. --- --- A Guide to Visual inspection of Duality in Encode and Decode --- --- 1. @(Sum c)@ and @(SumD c)@ are duals --- 2. @(Rec c)@ and @(RecD c)@ are duals --- 3. @(Keyed c)@ and @(KeyedD c)@ are duals --- 4. @(OmitC x)@ and @(Emit x)@ are duals --- 5. @(Omit p ..)@ and @(Emit x)@ are duals if (p x) is True --- 6. @(To x)@ and @(From)@ are duals if (x::T) and (forall (y::T). isRight (roundTrip y)) --- 7. @(E enc x)@ and @(D dec)@ are duals if (forall x . isRight (roundTrip' enc dec x)) --- 6. @(ED d x)@ and @(DD f)@ are duals as long as d=(Dual enc dec) and (forall x . isRight (roundTrip' enc dec x)) --- 7. @(f !> x)@ and @(g ), - encode, - - -- * Index types for well-formed Coders. - - -- - -- $Indexes - runE, -- Used in testing - encodeDual, - - -- * Containers, Combinators, Annotators - - -- - -- $Combinators - encodeKeyedStrictMaybeWith, - encodeKeyedStrictMaybe, -) -where - -import Cardano.Ledger.Binary.Decoding.Coders (Density (Dense, Sparse), Wrapped (..)) -import Cardano.Ledger.Binary.Decoding.DecCBOR (DecCBOR (..)) -import Cardano.Ledger.Binary.Decoding.Decoder (Decoder) -import Cardano.Ledger.Binary.Encoding.EncCBOR (EncCBOR (encCBOR)) -import Cardano.Ledger.Binary.Encoding.Encoder ( - Encoding, - encodeListLen, - encodeMapLen, - encodeTag, - encodeWord, - ) -import Data.Maybe.Strict (StrictMaybe (SJust, SNothing)) - --- ==================================================================== - --- =============================================================================== --- Encode and Decode are typed data structures which specify encoders and decoders --- for Algebraic data structures written in Haskell. They exploit types and count --- the correct number fields in an encoding and decoding, which are automatically computed. --- They are somewhat dual, and are designed so that visual inspection of a Encode and --- its dual Decode can help the user conclude that the two are self-consistent. --- They are also reusable abstractions that can be defined once, and then used many places. --- --- (Encode t) is a data structure from which 3 things can be recovered --- Given: x :: Encode t --- 1. get a value of type t --- 2. get an Encoding for that value, which correctly encodes the number of "fields" --- written to the ByteString. Care must still be taken that the Keys are correct. --- 3. get a (MemoBytes t) --- --- The advantage of using Encode with a MemoBytes, is we don't have to make a EncCBOR --- instance. Instead the "instance" is spread amongst the pattern constuctors by using --- (memoBytes encoding) in the where clause of the pattern contructor. --- See some examples of this see the file Timelocks.hs --- - --- =========================================================== --- The coders and the decoders as GADT datatypes --- =========================================================== - --- Encoders - --- | A first-order domain specific langage for describing EncCBOR instances. Applying --- the interpreter 'encode' to a well-typed @(Encode w T)@ always produces a valid encoding for @T@. --- Constructing an Encode of type T is just like building a value of type T, applying a constructor --- of @T@ to the correctly typed arguments. For example --- --- @ --- data T = T Bool Word --- --- instance EncCBOR T where --- encCBOR (T b w) = encode (Rec T !> To b !> To w) --- @ --- --- Note the similarity of --- --- @(/T/ /b/ /w/)@ and @(/T/ $ /b/ $ /w/)@ and @(Rec /T/ !> To /b/ !> To /w/)@ --- --- Where ('!>') is the infx version of 'ApplyE' with the same infixity and precedence as ('$'). Note --- how the constructor and each (component, field, argument) is labeled with one of the constructors --- of 'Encode', and are combined with the application operator ('!>'). Using different constructors supports --- different styles of encoding. -data Encode (w :: Wrapped) t where - -- | Label the constructor of a Record-like datatype (one with exactly 1 constructor) as an Encode. - Rec :: t -> Encode ('Closed 'Dense) t - -- | Label one of the constructors of a sum datatype (one with multiple constructors) as an Encode - Sum :: t -> Word -> Encode 'Open t - -- | Label the constructor of a Record-like datatype as being encoded sparsely (storing only non-default values). - Keyed :: t -> Encode ('Closed 'Sparse) t - -- | Label an (component, field, argument) to be encoded using an existing EncCBOR instance. - To :: EncCBOR a => a -> Encode ('Closed 'Dense) a - -- | Label an (component, field, argument) to be encoded using an existing EncCBOR instance. - E :: (t -> Encoding) -> t -> Encode ('Closed 'Dense) t - -- | Lift one Encode to another with a different type. Used to make a Functor instance of (Encode w). - MapE :: (a -> b) -> Encode w a -> Encode w b - -- | Skip over the (component,field, argument), don't encode it at all (used in sparse encoding). - OmitC :: t -> Encode w t - -- | Precede the given encoding (in the produced bytes) with the given tag Word. - Tag :: Word -> Encode ('Closed x) t -> Encode ('Closed x) t - -- | Omit the (component,field, argument) if the function is True, otherwise encode with the given encoding. - Omit :: - (t -> Bool) -> - Encode ('Closed 'Sparse) t -> - Encode ('Closed 'Sparse) t - -- | Precede the encoding (in the produced bytes) with the key Word. Analagous to 'Tag', but lifts a 'Dense' encoding to a 'Sparse' encoding. - Key :: Word -> Encode ('Closed 'Dense) t -> Encode ('Closed 'Sparse) t - -- | Apply a functional encoding (arising from 'Rec' or 'Sum') to get (type wise) smaller encoding. A fully saturated chain of 'ApplyE' will be a complete encoding. See also '!>' which is infix 'ApplyE'. - ApplyE :: Encode w (a -> t) -> Encode ('Closed r) a -> Encode w t - --- The Wrapped index of ApplyE is determined by the index --- at the bottom of its left spine. The choices are 'Open (Sum c tag), --- ('Closed 'Dense) (Rec c), and ('Closed 'Sparse) (Keyed c). - -infixl 4 !> - --- | Infix operator version of @ApplyE@. Has the same infxity and operator precedence as '$' -(!>) :: Encode w (a -> t) -> Encode ('Closed r) a -> Encode w t -x !> y = ApplyE x y - -runE :: Encode w t -> t -runE (Sum cn _) = cn -runE (Rec cn) = cn -runE (ApplyE f x) = runE f (runE x) -runE (To x) = x -runE (E _ x) = x -runE (MapE f x) = f $ runE x -runE (OmitC x) = x -runE (Omit _ x) = runE x -runE (Tag _ x) = runE x -runE (Key _ x) = runE x -runE (Keyed cn) = cn - -gsize :: Encode w t -> Word -gsize (Sum _ _) = 0 -gsize (Rec _) = 0 -gsize (To _) = 1 -gsize (E _ _) = 1 -gsize (MapE _ x) = gsize x -gsize (ApplyE f x) = gsize f + gsize x -gsize (OmitC _) = 0 -gsize (Omit p x) = if p (runE x) then 0 else gsize x -gsize (Tag _ _) = 1 -gsize (Key _ x) = gsize x -gsize (Keyed _) = 0 - --- | Translate a first-order @(Encode w d) domain specific langage program, into an 'Encoding' . -encode :: Encode w t -> Encoding -encode = encodeCountPrefix 0 - where - encodeCountPrefix :: Word -> Encode w t -> Encoding - -- n is the number of fields we must write in the prefix. - encodeCountPrefix n (Sum _ tag) = encodeListLen (n + 1) <> encodeWord tag - encodeCountPrefix n (Keyed _) = encodeMapLen n - encodeCountPrefix n (Rec _) = encodeListLen n - encodeCountPrefix _ (To x) = encCBOR x - encodeCountPrefix _ (E enc x) = enc x - encodeCountPrefix n (MapE _ x) = encodeCountPrefix n x - encodeCountPrefix _ (OmitC _) = mempty - encodeCountPrefix n (Tag tag x) = encodeTag tag <> encodeCountPrefix n x - encodeCountPrefix n (Key tag x) = encodeWord tag <> encodeCountPrefix n x - encodeCountPrefix n (Omit p x) = - if p (runE x) then mempty else encodeCountPrefix n x - encodeCountPrefix n (ApplyE ff xx) = encodeCountPrefix (n + gsize xx) ff <> encodeClosed xx - where - encodeClosed :: Encode ('Closed d) t -> Encoding - encodeClosed (Rec _) = mempty - encodeClosed (To x) = encCBOR x - encodeClosed (E enc x) = enc x - encodeClosed (MapE _ x) = encodeClosed x - encodeClosed (ApplyE f x) = encodeClosed f <> encodeClosed x - encodeClosed (OmitC _) = mempty - encodeClosed (Omit p x) = - if p (runE x) then mempty else encodeClosed x - encodeClosed (Tag tag x) = encodeTag tag <> encodeClosed x - encodeClosed (Key tag x) = encodeWord tag <> encodeClosed x - encodeClosed (Keyed _) = mempty - -encodeKeyedStrictMaybeWith :: - Word -> - (a -> Encoding) -> - StrictMaybe a -> - Encode ('Closed 'Sparse) (StrictMaybe a) -encodeKeyedStrictMaybeWith _ _ SNothing = OmitC SNothing -encodeKeyedStrictMaybeWith key enc (SJust x) = Key key (MapE SJust $ E enc x) - -encodeKeyedStrictMaybe :: - EncCBOR a => - Word -> - StrictMaybe a -> - Encode ('Closed 'Sparse) (StrictMaybe a) -encodeKeyedStrictMaybe key = encodeKeyedStrictMaybeWith key encCBOR - --- | Use `encodeDual` and `Cardano.Ledger.Binary.Coders.decodeDual`, when you want to --- guarantee that a type has both `EncCBOR` and `FromCBR` instances. -encodeDual :: forall t. (EncCBOR t, DecCBOR t) => t -> Encode ('Closed 'Dense) t -encodeDual = E encCBOR - where - -- Enforce DecCBOR constraint on t - _decCBOR = decCBOR :: Decoder s t diff --git a/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Encoding/EncCBOR.hs b/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Encoding/EncCBOR.hs deleted file mode 100644 index 8a990ee9dcc..00000000000 --- a/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Encoding/EncCBOR.hs +++ /dev/null @@ -1,1163 +0,0 @@ -{-# LANGUAGE CPP #-} -{-# LANGUAGE DefaultSignatures #-} -{-# LANGUAGE DeriveFunctor #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE ExistentialQuantification #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiWayIf #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE NoStarIsType #-} - -module Cardano.Ledger.Binary.Encoding.EncCBOR ( - EncCBOR (..), - withWordSize, - PreEncoded (..), - toByronCBOR, - - -- * Size of expressions - Range (..), - szEval, - Size, - Case (..), - caseValue, - LengthOf (..), - SizeOverride (..), - isTodo, - szCases, - szLazy, - szGreedy, - szForce, - szWithCtx, - szSimplify, - apMono, - szBounds, - - -- ** Crypto - encodedVerKeyDSIGNSizeExpr, - encodedSignKeyDSIGNSizeExpr, - encodedSigDSIGNSizeExpr, - encodedSignedDSIGNSizeExpr, - encodedVerKeyKESSizeExpr, - encodedSignKeyKESSizeExpr, - encodedSigKESSizeExpr, - encodedVerKeyVRFSizeExpr, - encodedSignKeyVRFSizeExpr, - encodedCertVRFSizeExpr, -) -where - -import Cardano.Crypto.DSIGN.Class ( - DSIGNAlgorithm, - SeedSizeDSIGN, - SigDSIGN, - SignKeyDSIGN, - SignedDSIGN, - VerKeyDSIGN, - sizeSigDSIGN, - sizeSignKeyDSIGN, - sizeVerKeyDSIGN, - ) -import Cardano.Crypto.Hash.Class ( - Hash (..), - HashAlgorithm, - hashToBytes, - sizeHash, - ) -import Cardano.Crypto.KES.Class ( - KESAlgorithm, - OptimizedKESAlgorithm, - SigKES, - SignKeyKES, - VerKeyKES, - sizeSigKES, - sizeSignKeyKES, - sizeVerKeyKES, - ) -import Cardano.Crypto.KES.CompactSingle (CompactSingleKES) -import Cardano.Crypto.KES.CompactSum (CompactSumKES) -import Cardano.Crypto.KES.Mock (MockKES) -import Cardano.Crypto.KES.Simple (SimpleKES) -import Cardano.Crypto.KES.Single (SingleKES) -import Cardano.Crypto.KES.Sum (SumKES) -import Cardano.Crypto.VRF.Class ( - CertVRF, - CertifiedVRF (..), - OutputVRF (..), - SignKeyVRF, - VRFAlgorithm, - VerKeyVRF, - sizeCertVRF, - sizeOutputVRF, - sizeSignKeyVRF, - sizeVerKeyVRF, - ) -import Cardano.Crypto.VRF.Mock (MockVRF) -import qualified Cardano.Crypto.VRF.Praos as Praos -import Cardano.Crypto.VRF.Simple (SimpleVRF) -import Cardano.Ledger.Binary.Crypto -import Cardano.Ledger.Binary.Encoding.Encoder -import Cardano.Ledger.Binary.Version (Version, byronProtVer, getVersion64) -import Cardano.Slotting.Block (BlockNo (..)) -import Cardano.Slotting.Slot ( - EpochInterval (..), - EpochNo (..), - EpochSize (..), - SlotNo (..), - WithOrigin (..), - ) -import Cardano.Slotting.Time (SystemStart (..)) -import Codec.CBOR.ByteArray (ByteArray (..)) -import Codec.CBOR.ByteArray.Sliced (SlicedByteArray (SBA), fromByteArray) -import qualified Codec.CBOR.Encoding as C (Encoding (..)) -import Codec.CBOR.Term (Term (..)) -import qualified Codec.Serialise as Serialise (Serialise (encode)) -import Control.Category (Category ((.))) -import qualified Data.ByteString as BS -import qualified Data.ByteString.Lazy as BS.Lazy -import qualified Data.ByteString.Short as SBS (length) -#if MIN_VERSION_bytestring(0,11,1) -import Data.ByteString.Short (ShortByteString(SBS)) -#else -import Data.ByteString.Short.Internal (ShortByteString(SBS)) -#endif -import qualified Cardano.Binary as Plain (Encoding, ToCBOR (..)) -import Data.Fixed (Fixed (..)) -import Data.Foldable (toList) -import Data.Functor.Foldable (cata, project) -import Data.IP (IPv4, IPv6) -import Data.Int (Int16, Int32, Int64, Int8) -import Data.List.NonEmpty (NonEmpty) -import qualified Data.Map.Strict as Map -import qualified Data.Maybe.Strict as SMaybe -import qualified Data.Primitive.ByteArray as Prim (ByteArray (..)) -import Data.Ratio (Ratio) -import qualified Data.Sequence as Seq -import qualified Data.Sequence.Strict as SSeq -import qualified Data.Set as Set -import Data.Tagged (Tagged (..)) -import Data.Text (Text) -import qualified Data.Text as Text -import Data.Text.Lazy.Builder (Builder) -import Data.Time.Clock (UTCTime (..)) -import Data.Typeable (Proxy (..), TypeRep, Typeable, typeRep) -import qualified Data.VMap as VMap -import qualified Data.Vector as V -import qualified Data.Vector.Primitive as VP -import qualified Data.Vector.Storable as VS -import qualified Data.Vector.Unboxed as VU -import Data.Void (Void, absurd) -import Data.Word (Word16, Word32, Word64, Word8) -import Foreign.Storable (sizeOf) -import Formatting (bprint, build, shown, stext) -import qualified Formatting.Buildable as B (Buildable (..)) -import GHC.TypeNats (KnownNat, type (*)) -import Numeric.Natural (Natural) -import qualified PlutusLedgerApi.V1 as PV1 -import Prelude hiding (encodeFloat, (.)) - -#if MIN_VERSION_recursion_schemes(5,2,0) -import Data.Fix (Fix(..)) -#else -import Data.Functor.Foldable (Fix(..)) -#endif - -class Typeable a => EncCBOR a where - encCBOR :: a -> Encoding - default encCBOR :: Plain.ToCBOR a => a -> Encoding - encCBOR = fromPlainEncoding . Plain.toCBOR - - encodedSizeExpr :: (forall t. EncCBOR t => Proxy t -> Size) -> Proxy a -> Size - encodedSizeExpr = todo - - encodedListSizeExpr :: (forall t. EncCBOR t => Proxy t -> Size) -> Proxy [a] -> Size - encodedListSizeExpr = defaultEncodedListSizeExpr - --- | A type used to represent the length of a value in 'Size' computations. -newtype LengthOf xs = LengthOf xs - -instance Typeable xs => EncCBOR (LengthOf xs) where - encCBOR = error "The `LengthOf` type cannot be encoded!" - --- | Default size expression for a list type. -defaultEncodedListSizeExpr :: - forall a. - EncCBOR a => - (forall t. EncCBOR t => Proxy t -> Size) -> - Proxy [a] -> - Size -defaultEncodedListSizeExpr size _ = - 2 + size (Proxy @(LengthOf [a])) * size (Proxy @a) - -newtype PreEncoded = PreEncoded {unPreEncoded :: BS.ByteString} - -instance EncCBOR PreEncoded where - encCBOR = encodePreEncoded . unPreEncoded - -instance EncCBOR Version where - encCBOR = encodeVersion - encodedSizeExpr f px = f (getVersion64 <$> px) - --- | Convert a versioned `EncCBOR` instance to a plain `Plain.Encoding` using Byron --- protocol version. -toByronCBOR :: EncCBOR a => a -> Plain.Encoding -toByronCBOR = toPlainEncoding byronProtVer . encCBOR - --------------------------------------------------------------------------------- --- Size expressions --------------------------------------------------------------------------------- - -(.:) :: (c -> d) -> (a -> b -> c) -> (a -> b -> d) -f .: g = \x y -> f (g x y) - --- | Expressions describing the statically-computed size bounds on --- a type's possible values. -type Size = Fix SizeF - --- | The base functor for @Size@ expressions. -data SizeF t - = -- | Sum of two sizes. - AddF t t - | -- | Product of two sizes. - MulF t t - | -- | Difference of two sizes. - SubF t t - | -- | Absolute value of a size. - AbsF t - | -- | Negation of a size. - NegF t - | -- | Signum of a size. - SgnF t - | -- | Case-selection for sizes. Used for sum types. - CasesF [Case t] - | -- | A constant value. - ValueF Natural - | -- | Application of a monotonic function to a size. - ApF Text (Natural -> Natural) t - | -- | A suspended size calculation ("thunk"). This is used to delay the - -- computation of a size until some later point, which is useful for - -- progressively building more detailed size estimates for a type - -- from the outside in. For example, `szLazy` can be followed by - -- applications of `szForce` to reveal more detailed expressions - -- describing the size bounds on a type. - forall a. EncCBOR a => TodoF (forall x. EncCBOR x => Proxy x -> Size) (Proxy a) - -instance Functor SizeF where - fmap f = \case - AddF x y -> AddF (f x) (f y) - MulF x y -> MulF (f x) (f y) - SubF x y -> SubF (f x) (f y) - AbsF x -> AbsF (f x) - NegF x -> NegF (f x) - SgnF x -> SgnF (f x) - CasesF xs -> CasesF (map (fmap f) xs) - ValueF x -> ValueF x - ApF n g x -> ApF n g (f x) - TodoF g x -> TodoF g x - -instance Num (Fix SizeF) where - (+) = Fix .: AddF - (*) = Fix .: MulF - (-) = Fix .: SubF - negate = Fix . NegF - abs = Fix . AbsF - signum = Fix . SgnF - fromInteger = Fix . ValueF . fromInteger - -instance B.Buildable t => B.Buildable (SizeF t) where - build x_ = - let showp2 :: (B.Buildable a, B.Buildable b) => a -> Text -> b -> Builder - showp2 = bprint ("(" . build . " " . stext . " " . build . ")") - in case x_ of - AddF x y -> showp2 x "+" y - MulF x y -> showp2 x "*" y - SubF x y -> showp2 x "-" y - NegF x -> bprint ("-" . build) x - AbsF x -> bprint ("|" . build . "|") x - SgnF x -> bprint ("sgn(" . build . ")") x - CasesF xs -> - bprint ("{ " . build . "}") $ foldMap (bprint (build . " ")) xs - ValueF x -> bprint shown (toInteger x) - ApF n _ x -> bprint (stext . "(" . build . ")") n x - TodoF _ x -> bprint ("(_ :: " . shown . ")") (typeRep x) - -instance B.Buildable (Fix SizeF) where - build x = bprint build (project @(Fix _) x) - --- | Create a case expression from individual cases. -szCases :: [Case Size] -> Size -szCases = Fix . CasesF - --- | An individual labeled case. -data Case t - = Case Text t - deriving (Functor) - --- | Discard the label on a case. -caseValue :: Case t -> t -caseValue (Case _ x) = x - -instance B.Buildable t => B.Buildable (Case t) where - build (Case n x) = bprint (stext . "=" . build) n x - --- | A range of values. Should satisfy the invariant @forall x. lo x <= hi x@. -data Range b = Range - { lo :: b - , hi :: b - } - --- | The @Num@ instance for @Range@ uses interval arithmetic. Note that the --- @signum@ method is not lawful: if the interval @x@ includes 0 in its --- interior but is not symmetric about 0, then @abs x * signum x /= x@. -instance (Ord b, Num b) => Num (Range b) where - x + y = Range {lo = lo x + lo y, hi = hi x + hi y} - x * y = - let products = [u * v | u <- [lo x, hi x], v <- [lo y, hi y]] - in Range {lo = minimum products, hi = maximum products} - x - y = Range {lo = lo x - hi y, hi = hi x - lo y} - negate x = Range {lo = negate (hi x), hi = negate (lo x)} - abs x = - if - | lo x <= 0 && hi x >= 0 -> Range {lo = 0, hi = max (hi x) (negate $ lo x)} - | lo x <= 0 && hi x <= 0 -> Range {lo = negate (hi x), hi = negate (lo x)} - | otherwise -> x - signum x = Range {lo = signum (lo x), hi = signum (hi x)} - fromInteger n = Range {lo = fromInteger n, hi = fromInteger n} - -instance B.Buildable (Range Natural) where - build r = bprint (shown . ".." . shown) (toInteger $ lo r) (toInteger $ hi r) - --- | Fully evaluate a size expression by applying the given function to any --- suspended computations. @szEval g@ effectively turns each "thunk" --- of the form @TodoF f x@ into @g x@, then evaluates the result. -szEval :: - (forall t. EncCBOR t => (Proxy t -> Size) -> Proxy t -> Range Natural) -> - Size -> - Range Natural -szEval doit = cata $ \case - AddF x y -> x + y - MulF x y -> x * y - SubF x y -> x - y - NegF x -> negate x - AbsF x -> abs x - SgnF x -> signum x - CasesF xs -> - Range - { lo = minimum (map (lo . caseValue) xs) - , hi = maximum (map (hi . caseValue) xs) - } - ValueF x -> Range {lo = x, hi = x} - ApF _ f x -> Range {lo = f (lo x), hi = f (hi x)} - TodoF f x -> doit f x - --- | Evaluate the expression lazily, by immediately creating a thunk --- that will evaluate its contents lazily. --- --- > ghci> putStrLn $ pretty $ szLazy (Proxy @TxAux) --- > (_ :: TxAux) -szLazy :: EncCBOR a => (Proxy a -> Size) -szLazy = todo (encodedSizeExpr szLazy) - --- | Evaluate an expression greedily. There may still be thunks in the --- result, for types that did not provide a custom 'encodedSizeExpr' method --- in their 'EncCBOR' instance. --- --- > ghci> putStrLn $ pretty $ szGreedy (Proxy @TxAux) --- > (0 + { TxAux=(2 + ((0 + (((1 + (2 + ((_ :: LengthOf [TxIn]) * (2 + { TxInUtxo=(2 + ((1 + 34) + { minBound=1 maxBound=5 })) })))) + (2 + ((_ :: LengthOf [TxOut]) * (0 + { TxOut=(2 + ((0 + ((2 + ((2 + withWordSize((((1 + 30) + (_ :: Attributes AddrAttributes)) + 1))) + (((1 + 30) + (_ :: Attributes AddrAttributes)) + 1))) + { minBound=1 maxBound=5 })) + { minBound=1 maxBound=9 })) })))) + (_ :: Attributes ()))) + (_ :: Vector TxInWitness))) }) -szGreedy :: EncCBOR a => (Proxy a -> Size) -szGreedy = encodedSizeExpr szGreedy - --- | Is this expression a thunk? -isTodo :: Size -> Bool -isTodo (Fix (TodoF _ _)) = True -isTodo _ = False - --- | Create a "thunk" that will apply @f@ to @pxy@ when forced. -todo :: - forall a. - EncCBOR a => - (forall t. EncCBOR t => Proxy t -> Size) -> - Proxy a -> - Size -todo f pxy = Fix (TodoF f pxy) - --- | Apply a monotonically increasing function to the expression. --- There are three cases when applying @f@ to a @Size@ expression: --- * When applied to a value @x@, compute @f x@. --- * When applied to cases, apply to each case individually. --- * In all other cases, create a deferred application of @f@. -apMono :: Text -> (Natural -> Natural) -> Size -> Size -apMono n f = \case - Fix (ValueF x) -> Fix (ValueF (f x)) - Fix (CasesF cs) -> Fix (CasesF (map (fmap (apMono n f)) cs)) - x -> Fix (ApF n f x) - --- | Greedily compute the size bounds for a type, using the given context to --- override sizes for specific types. -szWithCtx :: EncCBOR a => Map.Map TypeRep SizeOverride -> Proxy a -> Size -szWithCtx ctx pxy = case Map.lookup (typeRep pxy) ctx of - Nothing -> normal - Just override -> case override of - SizeConstant sz -> sz - SizeExpression f -> f (szWithCtx ctx) - SelectCases names -> cata (selectCase names) normal - where - -- The non-override case - normal = encodedSizeExpr (szWithCtx ctx) pxy - - selectCase :: [Text] -> SizeF Size -> Size - selectCase names orig = case orig of - CasesF cs -> matchCase names cs (Fix orig) - _ -> Fix orig - - matchCase :: [Text] -> [Case Size] -> Size -> Size - matchCase names cs orig = - case filter (\(Case name _) -> name `elem` names) cs of - [] -> orig - [Case _ x] -> x - cs' -> Fix (CasesF cs') - --- | Override mechanisms to be used with 'szWithCtx'. -data SizeOverride - = -- | Replace with a fixed @Size@. - SizeConstant Size - | -- | Recursively compute the size. - SizeExpression ((forall a. EncCBOR a => Proxy a -> Size) -> Size) - | -- | Select only a specific case from a @CasesF@. - SelectCases [Text] - --- | Simplify the given @Size@, resulting in either the simplified @Size@ or, --- if it was fully simplified, an explicit upper and lower bound. -szSimplify :: Size -> Either Size (Range Natural) -szSimplify = cata $ \case - TodoF f pxy -> Left (todo f pxy) - ValueF x -> Right (Range {lo = x, hi = x}) - CasesF xs -> case mapM caseValue xs of - Right xs' -> - Right (Range {lo = minimum (map lo xs'), hi = maximum (map hi xs')}) - Left _ -> Left (szCases $ map (fmap toSize) xs) - AddF x y -> binOp (+) x y - MulF x y -> binOp (*) x y - SubF x y -> binOp (-) x y - NegF x -> unOp negate x - AbsF x -> unOp abs x - SgnF x -> unOp signum x - ApF _ f (Right x) -> Right (Range {lo = f (lo x), hi = f (hi x)}) - ApF n f (Left x) -> Left (apMono n f x) - where - binOp :: - (forall a. Num a => a -> a -> a) -> - Either Size (Range Natural) -> - Either Size (Range Natural) -> - Either Size (Range Natural) - binOp op (Right x) (Right y) = Right (op x y) - binOp op x y = Left (op (toSize x) (toSize y)) - - unOp :: - (forall a. Num a => a -> a) -> - Either Size (Range Natural) -> - Either Size (Range Natural) - unOp f = \case - Right x -> Right (f x) - Left x -> Left (f x) - - toSize :: Either Size (Range Natural) -> Size - toSize = \case - Left x -> x - Right r -> - if lo r == hi r - then fromIntegral (lo r) - else - szCases - [Case "lo" (fromIntegral $ lo r), Case "hi" (fromIntegral $ hi r)] - --- | Force any thunks in the given @Size@ expression. --- --- > ghci> putStrLn $ pretty $ szForce $ szLazy (Proxy @TxAux) --- > (0 + { TxAux=(2 + ((0 + (_ :: Tx)) + (_ :: Vector TxInWitness))) }) -szForce :: Size -> Size -szForce = cata $ \case - AddF x y -> x + y - MulF x y -> x * y - SubF x y -> x - y - NegF x -> negate x - AbsF x -> abs x - SgnF x -> signum x - CasesF xs -> Fix $ CasesF xs - ValueF x -> Fix (ValueF x) - ApF n f x -> apMono n f x - TodoF f x -> f x - -szBounds :: EncCBOR a => a -> Either Size (Range Natural) -szBounds = szSimplify . szGreedy . pure - --- | Compute encoded size of an integer -withWordSize :: (Integral s, Integral a) => s -> a -withWordSize x = - let s = fromIntegral x :: Integer - in if - | s <= 0x17 && s >= (-0x18) -> 1 - | s <= 0xff && s >= (-0x100) -> 2 - | s <= 0xffff && s >= (-0x10000) -> 3 - | s <= 0xffffffff && s >= (-0x100000000) -> 5 - | otherwise -> 9 - --------------------------------------------------------------------------------- --- Primitive types --------------------------------------------------------------------------------- - -instance EncCBOR () where - encCBOR = const encodeNull - encodedSizeExpr _ _ = 1 - -instance EncCBOR Bool where - encCBOR = encodeBool - encodedSizeExpr _ _ = 1 - --------------------------------------------------------------------------------- --- Numeric data --------------------------------------------------------------------------------- - -instance EncCBOR Integer where - encCBOR = encodeInteger - -encodedSizeRange :: forall a. (Integral a, Bounded a) => Proxy a -> Size -encodedSizeRange _ = - szCases - [ mkCase "minBound" 0 -- min, in absolute value - , mkCase "maxBound" maxBound - ] - where - mkCase :: Text -> a -> Case Size - mkCase n = Case n . fromInteger . withWordSize - -instance EncCBOR Word where - encCBOR = encodeWord - encodedSizeExpr _ = encodedSizeRange - -instance EncCBOR Word8 where - encCBOR = encodeWord8 - encodedSizeExpr _ = encodedSizeRange - -instance EncCBOR Word16 where - encCBOR = encodeWord16 - encodedSizeExpr _ = encodedSizeRange - -instance EncCBOR Word32 where - encCBOR = encodeWord32 - encodedSizeExpr _ = encodedSizeRange - -instance EncCBOR Word64 where - encCBOR = encodeWord64 - encodedSizeExpr _ = encodedSizeRange - -instance EncCBOR Int where - encCBOR = encodeInt - encodedSizeExpr _ = encodedSizeRange - -instance EncCBOR Int8 where - encCBOR = encodeInt8 - encodedSizeExpr _ = encodedSizeRange - -instance EncCBOR Int16 where - encCBOR = encodeInt16 - encodedSizeExpr _ = encodedSizeRange - -instance EncCBOR Int32 where - encCBOR = encodeInt32 - encodedSizeExpr _ = encodedSizeRange - -instance EncCBOR Int64 where - encCBOR = encodeInt64 - encodedSizeExpr _ = encodedSizeRange - -instance EncCBOR Float where - encCBOR = encodeFloat - encodedSizeExpr _ _ = 1 + fromIntegral (sizeOf (0 :: Float)) - -instance EncCBOR Double where - encCBOR = encodeDouble - encodedSizeExpr _ _ = 1 + fromIntegral (sizeOf (0 :: Float)) - -instance EncCBOR a => EncCBOR (Ratio a) where - encCBOR = encodeRatio encCBOR - encodedSizeExpr size _ = 1 + size (Proxy @a) + size (Proxy @a) - -deriving newtype instance Typeable p => EncCBOR (Fixed p) - -instance EncCBOR Natural where - encCBOR = encCBOR . toInteger - -instance EncCBOR Void where - encCBOR = absurd - -instance EncCBOR IPv4 where - encCBOR = encodeIPv4 - -instance EncCBOR IPv6 where - encCBOR = encodeIPv6 - --------------------------------------------------------------------------------- --- CBOR --------------------------------------------------------------------------------- - -instance EncCBOR Term where - encCBOR = encodeTerm - -instance EncCBOR Encoding where - encCBOR = id - -instance EncCBOR C.Encoding where - encCBOR = fromPlainEncoding - -instance EncCBOR (Tokens -> Tokens) where - encCBOR t = fromPlainEncoding (C.Encoding t) - --------------------------------------------------------------------------------- --- Tagged --------------------------------------------------------------------------------- - -instance (Typeable s, EncCBOR a) => EncCBOR (Tagged s a) where - encCBOR (Tagged a) = encCBOR a - - encodedSizeExpr size _ = encodedSizeExpr size (Proxy @a) - --------------------------------------------------------------------------------- --- Containers --------------------------------------------------------------------------------- - -instance (EncCBOR a, EncCBOR b) => EncCBOR (a, b) where - encCBOR (a, b) = encodeListLen 2 <> encCBOR a <> encCBOR b - - encodedSizeExpr size _ = 1 + size (Proxy @a) + size (Proxy @b) - -instance (EncCBOR a, EncCBOR b, EncCBOR c) => EncCBOR (a, b, c) where - encCBOR (a, b, c) = encodeListLen 3 <> encCBOR a <> encCBOR b <> encCBOR c - - encodedSizeExpr size _ = - 1 + size (Proxy @a) + size (Proxy @b) + size (Proxy @c) - -instance (EncCBOR a, EncCBOR b, EncCBOR c, EncCBOR d) => EncCBOR (a, b, c, d) where - encCBOR (a, b, c, d) = - encodeListLen 4 <> encCBOR a <> encCBOR b <> encCBOR c <> encCBOR d - - encodedSizeExpr size _ = - 1 + size (Proxy @a) + size (Proxy @b) + size (Proxy @c) + size (Proxy @d) - -instance - (EncCBOR a, EncCBOR b, EncCBOR c, EncCBOR d, EncCBOR e) => - EncCBOR (a, b, c, d, e) - where - encCBOR (a, b, c, d, e) = - encodeListLen 5 - <> encCBOR a - <> encCBOR b - <> encCBOR c - <> encCBOR d - <> encCBOR e - - encodedSizeExpr size _ = - 1 - + size (Proxy @a) - + size (Proxy @b) - + size (Proxy @c) - + size (Proxy @d) - + size (Proxy @e) - -instance - (EncCBOR a, EncCBOR b, EncCBOR c, EncCBOR d, EncCBOR e, EncCBOR f) => - EncCBOR (a, b, c, d, e, f) - where - encCBOR (a, b, c, d, e, f) = - encodeListLen 6 - <> encCBOR a - <> encCBOR b - <> encCBOR c - <> encCBOR d - <> encCBOR e - <> encCBOR f - - encodedSizeExpr size _ = - 1 - + size (Proxy @a) - + size (Proxy @b) - + size (Proxy @c) - + size (Proxy @d) - + size (Proxy @e) - + size (Proxy @f) - -instance - (EncCBOR a, EncCBOR b, EncCBOR c, EncCBOR d, EncCBOR e, EncCBOR f, EncCBOR g) => - EncCBOR (a, b, c, d, e, f, g) - where - encCBOR (a, b, c, d, e, f, g) = - encodeListLen 7 - <> encCBOR a - <> encCBOR b - <> encCBOR c - <> encCBOR d - <> encCBOR e - <> encCBOR f - <> encCBOR g - - encodedSizeExpr size _ = - 1 - + size (Proxy @a) - + size (Proxy @b) - + size (Proxy @c) - + size (Proxy @d) - + size (Proxy @e) - + size (Proxy @f) - + size (Proxy @g) - -instance EncCBOR BS.ByteString where - encCBOR = encodeBytes - encodedSizeExpr size _ = - let len = size (Proxy @(LengthOf BS.ByteString)) - in apMono "withWordSize@Int" (withWordSize @Int . fromIntegral) len + len - -instance EncCBOR Text.Text where - encCBOR = encodeString - encodedSizeExpr size _ = - let bsLength = - size (Proxy @(LengthOf Text)) - * szCases [Case "minChar" 1, Case "maxChar" 4] - in bsLength + apMono "withWordSize" withWordSize bsLength - -instance EncCBOR ByteArray where - encCBOR = encCBOR . unBA - {-# INLINE encCBOR #-} - -instance EncCBOR Prim.ByteArray where - encCBOR = encodeByteArray . fromByteArray - {-# INLINE encCBOR #-} - -instance EncCBOR SlicedByteArray where - encCBOR = encodeByteArray - {-# INLINE encCBOR #-} - -instance EncCBOR ShortByteString where - encCBOR sbs@(SBS ba) = - encodeByteArray $ SBA (Prim.ByteArray ba) 0 (SBS.length sbs) - - encodedSizeExpr size _ = - let len = size (Proxy @(LengthOf ShortByteString)) - in apMono "withWordSize@Int" (withWordSize @Int . fromIntegral) len + len - -instance EncCBOR BS.Lazy.ByteString where - encCBOR = encCBOR . BS.Lazy.toStrict - encodedSizeExpr size _ = - let len = size (Proxy @(LengthOf BS.Lazy.ByteString)) - in apMono "withWordSize@Int" (withWordSize @Int . fromIntegral) len + len - -instance EncCBOR a => EncCBOR [a] where - encCBOR = encodeList encCBOR - encodedSizeExpr size _ = encodedListSizeExpr size (Proxy @[a]) - -instance (EncCBOR a, EncCBOR b) => EncCBOR (Either a b) where - encCBOR (Left x) = encodeListLen 2 <> encodeWord 0 <> encCBOR x - encCBOR (Right x) = encodeListLen 2 <> encodeWord 1 <> encCBOR x - - encodedSizeExpr size _ = - szCases - [Case "Left" (2 + size (Proxy @a)), Case "Right" (2 + size (Proxy @b))] - -instance EncCBOR a => EncCBOR (NonEmpty a) where - encCBOR = encCBOR . toList - encodedSizeExpr size _ = size (Proxy @[a]) -- MN TODO make 0 count impossible - -instance EncCBOR a => EncCBOR (Maybe a) where - encCBOR = encodeMaybe encCBOR - - encodedSizeExpr size _ = - szCases [Case "Nothing" 1, Case "Just" (1 + size (Proxy @a))] - -instance EncCBOR a => EncCBOR (SMaybe.StrictMaybe a) where - encCBOR = encodeStrictMaybe encCBOR - - encodedSizeExpr size _ = - szCases [Case "SNothing" 1, Case "SJust" (1 + size (Proxy @a))] - -instance (Ord k, EncCBOR k, EncCBOR v) => EncCBOR (Map.Map k v) where - encCBOR = encodeMap encCBOR encCBOR - -instance (Ord a, EncCBOR a) => EncCBOR (Set.Set a) where - encCBOR = encodeSet encCBOR - -instance EncCBOR a => EncCBOR (Seq.Seq a) where - encCBOR = encodeSeq encCBOR - -instance EncCBOR a => EncCBOR (SSeq.StrictSeq a) where - encCBOR = encodeStrictSeq encCBOR - -instance - (Ord k, EncCBOR k, EncCBOR v, VMap.Vector kv k, VMap.Vector vv v, Typeable kv, Typeable vv) => - EncCBOR (VMap.VMap kv vv k v) - where - encCBOR = encodeVMap encCBOR encCBOR - -instance EncCBOR a => EncCBOR (V.Vector a) where - encCBOR = encodeVector encCBOR - {-# INLINE encCBOR #-} - encodedSizeExpr size _ = - 2 + size (Proxy @(LengthOf (V.Vector a))) * size (Proxy @a) - -instance (EncCBOR a, VP.Prim a) => EncCBOR (VP.Vector a) where - encCBOR = encodeVector encCBOR - {-# INLINE encCBOR #-} - encodedSizeExpr size _ = - 2 + size (Proxy @(LengthOf (VP.Vector a))) * size (Proxy @a) - -instance (EncCBOR a, VS.Storable a) => EncCBOR (VS.Vector a) where - encCBOR = encodeVector encCBOR - {-# INLINE encCBOR #-} - encodedSizeExpr size _ = - 2 + size (Proxy @(LengthOf (VS.Vector a))) * size (Proxy @a) - -instance (EncCBOR a, VU.Unbox a) => EncCBOR (VU.Vector a) where - encCBOR = encodeVector encCBOR - {-# INLINE encCBOR #-} - encodedSizeExpr size _ = - 2 + size (Proxy @(LengthOf (VU.Vector a))) * size (Proxy @a) - --------------------------------------------------------------------------------- --- Time --------------------------------------------------------------------------------- - -instance EncCBOR UTCTime where - encCBOR = encodeUTCTime - --------------------------------------------------------------------------------- --- Crypto --------------------------------------------------------------------------------- - --- | 'Size' expression for 'VerKeyDSIGN' which is using 'sizeVerKeyDSIGN' --- encoded as 'Size'. -encodedVerKeyDSIGNSizeExpr :: forall v. DSIGNAlgorithm v => Proxy (VerKeyDSIGN v) -> Size -encodedVerKeyDSIGNSizeExpr _proxy = - -- 'encodeBytes' envelope - fromIntegral ((withWordSize :: Word -> Integer) (sizeVerKeyDSIGN (Proxy :: Proxy v))) - -- payload - + fromIntegral (sizeVerKeyDSIGN (Proxy :: Proxy v)) - --- | 'Size' expression for 'SignKeyDSIGN' which is using 'sizeSignKeyDSIGN' --- encoded as 'Size'. -encodedSignKeyDSIGNSizeExpr :: forall v. DSIGNAlgorithm v => Proxy (SignKeyDSIGN v) -> Size -encodedSignKeyDSIGNSizeExpr _proxy = - -- 'encodeBytes' envelope - fromIntegral ((withWordSize :: Word -> Integer) (sizeSignKeyDSIGN (Proxy :: Proxy v))) - -- payload - + fromIntegral (sizeSignKeyDSIGN (Proxy :: Proxy v)) - --- | 'Size' expression for 'SigDSIGN' which is using 'sizeSigDSIGN' encoded as --- 'Size'. -encodedSigDSIGNSizeExpr :: forall v. DSIGNAlgorithm v => Proxy (SigDSIGN v) -> Size -encodedSigDSIGNSizeExpr _proxy = - -- 'encodeBytes' envelope - fromIntegral ((withWordSize :: Word -> Integer) (sizeSigDSIGN (Proxy :: Proxy v))) - -- payload - + fromIntegral (sizeSigDSIGN (Proxy :: Proxy v)) - --- | 'Size' expression for 'SignedDSIGN' which uses `encodedSigDSIGNSizeExpr` -encodedSignedDSIGNSizeExpr :: forall v a. DSIGNAlgorithm v => Proxy (SignedDSIGN v a) -> Size -encodedSignedDSIGNSizeExpr _proxy = encodedSigDSIGNSizeExpr (Proxy :: Proxy (SigDSIGN v)) - --------------------------------------------------------------------------------- --- DSIGN --------------------------------------------------------------------------------- - -instance DSIGNAlgorithm v => EncCBOR (VerKeyDSIGN v) where - encCBOR = encodeVerKeyDSIGN - encodedSizeExpr _ = encodedVerKeyDSIGNSizeExpr - -instance DSIGNAlgorithm v => EncCBOR (SignKeyDSIGN v) where - encCBOR = encodeSignKeyDSIGN - encodedSizeExpr _ = encodedSignKeyDSIGNSizeExpr - -instance DSIGNAlgorithm v => EncCBOR (SigDSIGN v) where - encCBOR = encodeSigDSIGN - encodedSizeExpr _ = encodedSigDSIGNSizeExpr - -instance (DSIGNAlgorithm v, Typeable a) => EncCBOR (SignedDSIGN v a) where - encCBOR = encodeSignedDSIGN - encodedSizeExpr _ = encodedSignedDSIGNSizeExpr - --------------------------------------------------------------------------------- --- Hash --------------------------------------------------------------------------------- - -instance (HashAlgorithm h, Typeable a) => EncCBOR (Hash h a) where - encCBOR (UnsafeHash h) = encCBOR h - - -- \| 'Size' expression for @Hash h a@, which is expressed using the 'EncCBOR' - -- instance for 'ByteString' (as is the above 'encCBOR' method). 'Size' - -- computation of length of the bytestring is passed as the first argument to - -- 'encodedSizeExpr'. The 'ByteString' instance will use it to calculate - -- @'size' ('Proxy' @('LengthOf' 'ByteString'))@. - encodedSizeExpr _size proxy = - encodedSizeExpr (const hashSize) (hashToBytes <$> proxy) - where - hashSize :: Size - hashSize = fromIntegral (sizeHash (Proxy :: Proxy h)) - --------------------------------------------------------------------------------- --- KES --------------------------------------------------------------------------------- - --- | 'Size' expression for 'VerKeyKES' which is using 'sizeVerKeyKES' encoded --- as 'Size'. -encodedVerKeyKESSizeExpr :: forall v. KESAlgorithm v => Proxy (VerKeyKES v) -> Size -encodedVerKeyKESSizeExpr _proxy = - -- 'encodeBytes' envelope - fromIntegral ((withWordSize :: Word -> Integer) (sizeVerKeyKES (Proxy :: Proxy v))) - -- payload - + fromIntegral (sizeVerKeyKES (Proxy :: Proxy v)) - --- | 'Size' expression for 'SignKeyKES' which is using 'sizeSignKeyKES' encoded --- as 'Size'. -encodedSignKeyKESSizeExpr :: forall v. KESAlgorithm v => Proxy (SignKeyKES v) -> Size -encodedSignKeyKESSizeExpr _proxy = - -- 'encodeBytes' envelope - fromIntegral ((withWordSize :: Word -> Integer) (sizeSignKeyKES (Proxy :: Proxy v))) - -- payload - + fromIntegral (sizeSignKeyKES (Proxy :: Proxy v)) - --- | 'Size' expression for 'SigKES' which is using 'sizeSigKES' encoded as --- 'Size'. -encodedSigKESSizeExpr :: forall v. KESAlgorithm v => Proxy (SigKES v) -> Size -encodedSigKESSizeExpr _proxy = - -- 'encodeBytes' envelope - fromIntegral ((withWordSize :: Word -> Integer) (sizeSigKES (Proxy :: Proxy v))) - -- payload - + fromIntegral (sizeSigKES (Proxy :: Proxy v)) - -instance - (DSIGNAlgorithm d, KnownNat t, KnownNat (SeedSizeDSIGN d * t)) => - EncCBOR (VerKeyKES (SimpleKES d t)) - where - encCBOR = encodeVerKeyKES - encodedSizeExpr _size = encodedVerKeyKESSizeExpr - -instance - (DSIGNAlgorithm d, KnownNat t, KnownNat (SeedSizeDSIGN d * t)) => - EncCBOR (SignKeyKES (SimpleKES d t)) - where - encCBOR = encodeSignKeyKES - encodedSizeExpr _size = encodedSignKeyKESSizeExpr - -instance - (DSIGNAlgorithm d, KnownNat t, KnownNat (SeedSizeDSIGN d * t)) => - EncCBOR (SigKES (SimpleKES d t)) - where - encCBOR = encodeSigKES - encodedSizeExpr _size = encodedSigKESSizeExpr - -instance - (KESAlgorithm d, HashAlgorithm h) => - EncCBOR (VerKeyKES (SumKES h d)) - where - encCBOR = encodeVerKeyKES - encodedSizeExpr _size = encodedVerKeyKESSizeExpr - -instance - (KESAlgorithm d, HashAlgorithm h) => - EncCBOR (SignKeyKES (SumKES h d)) - where - encCBOR = encodeSignKeyKES - encodedSizeExpr _size = encodedSignKeyKESSizeExpr - -instance - (KESAlgorithm d, HashAlgorithm h) => - EncCBOR (SigKES (SumKES h d)) - where - encCBOR = encodeSigKES - encodedSizeExpr _size = encodedSigKESSizeExpr - -instance DSIGNAlgorithm d => EncCBOR (VerKeyKES (CompactSingleKES d)) where - encCBOR = encodeVerKeyKES - encodedSizeExpr _size = encodedVerKeyKESSizeExpr - -instance DSIGNAlgorithm d => EncCBOR (SignKeyKES (CompactSingleKES d)) where - encCBOR = encodeSignKeyKES - encodedSizeExpr _size = encodedSignKeyKESSizeExpr - -instance DSIGNAlgorithm d => EncCBOR (SigKES (CompactSingleKES d)) where - encCBOR = encodeSigKES - encodedSizeExpr _size = encodedSigKESSizeExpr - -instance - (OptimizedKESAlgorithm d, HashAlgorithm h) => - EncCBOR (VerKeyKES (CompactSumKES h d)) - where - encCBOR = encodeVerKeyKES - encodedSizeExpr _size = encodedVerKeyKESSizeExpr - -instance - (OptimizedKESAlgorithm d, HashAlgorithm h) => - EncCBOR (SignKeyKES (CompactSumKES h d)) - where - encCBOR = encodeSignKeyKES - encodedSizeExpr _size = encodedSignKeyKESSizeExpr - -instance - (OptimizedKESAlgorithm d, HashAlgorithm h) => - EncCBOR (SigKES (CompactSumKES h d)) - where - encCBOR = encodeSigKES - encodedSizeExpr _size = encodedSigKESSizeExpr - -instance DSIGNAlgorithm d => EncCBOR (VerKeyKES (SingleKES d)) where - encCBOR = encodeVerKeyKES - encodedSizeExpr _size = encodedVerKeyKESSizeExpr - -instance DSIGNAlgorithm d => EncCBOR (SignKeyKES (SingleKES d)) where - encCBOR = encodeSignKeyKES - encodedSizeExpr _size = encodedSignKeyKESSizeExpr - -instance DSIGNAlgorithm d => EncCBOR (SigKES (SingleKES d)) where - encCBOR = encodeSigKES - encodedSizeExpr _size = encodedSigKESSizeExpr - -instance KnownNat t => EncCBOR (VerKeyKES (MockKES t)) where - encCBOR = encodeVerKeyKES - encodedSizeExpr _size = encodedVerKeyKESSizeExpr - -instance KnownNat t => EncCBOR (SignKeyKES (MockKES t)) where - encCBOR = encodeSignKeyKES - encodedSizeExpr _size = encodedSignKeyKESSizeExpr - -instance KnownNat t => EncCBOR (SigKES (MockKES t)) where - encCBOR = encodeSigKES - encodedSizeExpr _size = encodedSigKESSizeExpr - --------------------------------------------------------------------------------- --- VRF --------------------------------------------------------------------------------- - --- | 'Size' expression for 'VerKeyVRF' which is using 'sizeVerKeyVRF' encoded as --- 'Size'. -encodedVerKeyVRFSizeExpr :: forall v. VRFAlgorithm v => Proxy (VerKeyVRF v) -> Size -encodedVerKeyVRFSizeExpr _proxy = - -- 'encodeBytes' envelope - fromIntegral ((withWordSize :: Word -> Integer) (sizeVerKeyVRF (Proxy :: Proxy v))) - -- payload - + fromIntegral (sizeVerKeyVRF (Proxy :: Proxy v)) - --- | 'Size' expression for 'SignKeyVRF' which is using 'sizeSignKeyVRF' encoded --- as 'Size' -encodedSignKeyVRFSizeExpr :: forall v. VRFAlgorithm v => Proxy (SignKeyVRF v) -> Size -encodedSignKeyVRFSizeExpr _proxy = - -- 'encodeBytes' envelope - fromIntegral ((withWordSize :: Word -> Integer) (sizeSignKeyVRF (Proxy :: Proxy v))) - -- payload - + fromIntegral (sizeSignKeyVRF (Proxy :: Proxy v)) - --- | 'Size' expression for 'CertVRF' which is using 'sizeCertVRF' encoded as --- 'Size'. -encodedCertVRFSizeExpr :: forall v. VRFAlgorithm v => Proxy (CertVRF v) -> Size -encodedCertVRFSizeExpr _proxy = - -- 'encodeBytes' envelope - fromIntegral ((withWordSize :: Word -> Integer) (sizeCertVRF (Proxy :: Proxy v))) - -- payload - + fromIntegral (sizeCertVRF (Proxy :: Proxy v)) - -instance EncCBOR (VerKeyVRF SimpleVRF) where - encCBOR = encodeVerKeyVRF - encodedSizeExpr _size = encodedVerKeyVRFSizeExpr - -instance EncCBOR (SignKeyVRF SimpleVRF) where - encCBOR = encodeSignKeyVRF - encodedSizeExpr _size = encodedSignKeyVRFSizeExpr - -instance EncCBOR (CertVRF SimpleVRF) where - encCBOR = encodeCertVRF - encodedSizeExpr _size = encodedCertVRFSizeExpr - -instance EncCBOR (VerKeyVRF MockVRF) where - encCBOR = encodeVerKeyVRF - encodedSizeExpr _size = encodedVerKeyVRFSizeExpr - -instance EncCBOR (SignKeyVRF MockVRF) where - encCBOR = encodeSignKeyVRF - encodedSizeExpr _size = encodedSignKeyVRFSizeExpr - -instance EncCBOR (CertVRF MockVRF) where - encCBOR = encodeCertVRF - encodedSizeExpr _size = encodedCertVRFSizeExpr - -deriving instance Typeable v => EncCBOR (OutputVRF v) - -instance (VRFAlgorithm v, Typeable a) => EncCBOR (CertifiedVRF v a) where - encCBOR cvrf = - encodeListLen 2 - <> encCBOR (certifiedOutput cvrf) - <> encodeCertVRF (certifiedProof cvrf) - - encodedSizeExpr _size proxy = - 1 - + certifiedOutputSize (certifiedOutput <$> proxy) - + fromIntegral (sizeCertVRF (Proxy :: Proxy v)) - where - certifiedOutputSize :: Proxy (OutputVRF v) -> Size - certifiedOutputSize _proxy = - fromIntegral $ sizeOutputVRF (Proxy :: Proxy v) - -instance EncCBOR Praos.Proof where - encCBOR = encCBOR . Praos.proofBytes - encodedSizeExpr _ _ = - encodedSizeExpr (\_ -> fromIntegral Praos.certSizeVRF) (Proxy :: Proxy BS.ByteString) - -instance EncCBOR Praos.SignKey where - encCBOR = encCBOR . Praos.skBytes - encodedSizeExpr _ _ = - encodedSizeExpr (\_ -> fromIntegral Praos.signKeySizeVRF) (Proxy :: Proxy BS.ByteString) - -instance EncCBOR Praos.VerKey where - encCBOR = encCBOR . Praos.vkBytes - encodedSizeExpr _ _ = - encodedSizeExpr (\_ -> fromIntegral Praos.verKeySizeVRF) (Proxy :: Proxy BS.ByteString) - -deriving instance EncCBOR (VerKeyVRF Praos.PraosVRF) - -deriving instance EncCBOR (SignKeyVRF Praos.PraosVRF) - -deriving instance EncCBOR (CertVRF Praos.PraosVRF) - --------------------------------------------------------------------------------- --- Slotting --------------------------------------------------------------------------------- - --- TODO: Remove usage of 'serialise' package -instance EncCBOR SlotNo where - encCBOR = fromPlainEncoding . Serialise.encode - encodedSizeExpr size = encodedSizeExpr size . fmap unSlotNo - -instance (Serialise.Serialise t, Typeable t) => EncCBOR (WithOrigin t) where - encCBOR = fromPlainEncoding . Serialise.encode - -deriving instance EncCBOR EpochNo - -deriving instance EncCBOR EpochSize - -deriving instance EncCBOR SystemStart - -instance EncCBOR BlockNo where - encCBOR = fromPlainEncoding . Serialise.encode - encodedSizeExpr size = encodedSizeExpr size . fmap unBlockNo - -deriving instance EncCBOR EpochInterval - --------------------------------------------------------------------------------- --- Plutus --------------------------------------------------------------------------------- - -instance EncCBOR PV1.Data where - encCBOR = fromPlainEncoding . Serialise.encode diff --git a/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Encoding/Encoder.hs b/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Encoding/Encoder.hs deleted file mode 100644 index 827c83b2e62..00000000000 --- a/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Encoding/Encoder.hs +++ /dev/null @@ -1,577 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE TypeApplications #-} - -module Cardano.Ledger.Binary.Encoding.Encoder ( - -- * Decoders - Encoding, - toBuilder, - C.Tokens (..), - toPlainEncoding, - fromPlainEncoding, - fromPlainEncodingWithVersion, - withCurrentEncodingVersion, - enforceEncodingVersion, - ifEncodingVersionAtLeast, - - -- ** Custom - encodeVersion, - encodeMaybe, - encodeNullMaybe, - encodeStrictMaybe, - encodeNullStrictMaybe, - encodePair, - encodeTuple, - encodeRatio, - encodeRatioNoTag, - encodeRatioWithTag, - encodeEnum, - encodeWithOrigin, - - -- *** Containers - encodeList, - encodeSeq, - encodeStrictSeq, - encodeSet, - encodeMap, - encodeVMap, - encodeVector, - variableListLenEncoding, - - -- **** Helpers - encodeFoldableEncoder, - encodeFoldableAsDefLenList, - encodeFoldableAsIndefLenList, - encodeFoldableMapEncoder, - lengthThreshold, - - -- *** Time - encodeUTCTime, - - -- *** Network - encodeIPv4, - ipv4ToBytes, - encodeIPv6, - ipv6ToBytes, - - -- ** Original - encodeWord, - encodeWord8, - encodeWord16, - encodeWord32, - encodeWord64, - encodeInt, - encodeInt8, - encodeInt16, - encodeInt32, - encodeInt64, - encodeInteger, - encodeBytes, - encodeBytesIndef, - encodeByteArray, - encodeString, - encodeStringIndef, - encodeUtf8ByteArray, - encodeListLen, - encodeListLenIndef, - encodeMapLen, - encodeMapLenIndef, - encodeBreak, - encodeTag, - encodeTag64, - encodeBool, - encodeUndef, - encodeNull, - encodeSimple, - encodeFloat16, - encodeFloat, - encodeDouble, - encodePreEncoded, - encodeTerm, -) -where - -import qualified Cardano.Binary as C -import Cardano.Ledger.Binary.Decoding.Decoder (setTag) -import Cardano.Ledger.Binary.Version (Version, getVersion64, natVersion) -import Cardano.Slotting.Slot (WithOrigin, withOriginToMaybe) -import Codec.CBOR.ByteArray.Sliced (SlicedByteArray) -import qualified Codec.CBOR.Term as C (Term (..), encodeTerm) -import qualified Codec.CBOR.Write as CBOR (toBuilder) -import Data.Binary.Put (putWord32le, runPut) -import Data.ByteString (ByteString) -import qualified Data.ByteString as BS -import Data.ByteString.Builder (Builder) -import qualified Data.ByteString.Lazy as BSL -import Data.Foldable as F (foldMap', foldl') -import Data.IP (IPv4, IPv6, toHostAddress, toHostAddress6) -import Data.Int (Int16, Int32, Int64, Int8) -import qualified Data.Map.Strict as Map -import Data.Maybe.Strict (StrictMaybe (..)) -import Data.Monoid (Sum (..)) -import Data.Ratio (Ratio, denominator, numerator) -import qualified Data.Sequence as Seq -import qualified Data.Sequence.Strict as SSeq -import qualified Data.Set as Set -import Data.Text (Text) -import Data.Time.Calendar.OrdinalDate (toOrdinalDate) -import Data.Time.Clock (UTCTime (..), diffTimeToPicoseconds) -import qualified Data.VMap as VMap -import qualified Data.Vector.Generic as VG -import Data.Word (Word16, Word32, Word64, Word8) -import Prelude hiding (encodeFloat) - --------------------------------------------------------------------------------- --- Versioned Encoder --------------------------------------------------------------------------------- - -newtype Encoding = Encoding (Version -> C.Encoding) - deriving (Semigroup, Monoid) - -fromPlainEncoding :: C.Encoding -> Encoding -fromPlainEncoding enc = Encoding (const enc) - -fromPlainEncodingWithVersion :: (Version -> C.Encoding) -> Encoding -fromPlainEncodingWithVersion = Encoding - -toPlainEncoding :: Version -> Encoding -> C.Encoding -toPlainEncoding v (Encoding enc) = enc v - -toBuilder :: Version -> Encoding -> Builder -toBuilder version (Encoding enc) = CBOR.toBuilder $ enc version - --- | Get access to the current version being used in the encoder -withCurrentEncodingVersion :: (Version -> Encoding) -> Encoding -withCurrentEncodingVersion f = - Encoding $ \version -> toPlainEncoding version $ f version - --- | Ignore the current version of the encoder and enforce the supplied one instead. -enforceEncodingVersion :: Version -> Encoding -> Encoding -enforceEncodingVersion version encoding = fromPlainEncoding (toPlainEncoding version encoding) - --- | Conditionoly choose the encoder newer or older deceder, depending on the current --- version. Supplied version acts as a pivot. --- --- =====__Example__ -ifEncodingVersionAtLeast :: - Version -> - -- | Use this encoder if current encoder version is larger or equal to the supplied - -- `Version` - Encoding -> - -- | Use this encoder if current encoder version is lower than the supplied `Version` - Encoding -> - Encoding -ifEncodingVersionAtLeast atLeast (Encoding newerEncoding) (Encoding olderEncoding) = - Encoding $ \cur -> - if cur >= atLeast - then newerEncoding cur - else olderEncoding cur - --------------------------------------------------------------------------------- --- Wrapped CBORG encoders --------------------------------------------------------------------------------- - -encodeWord :: Word -> Encoding -encodeWord e = fromPlainEncoding (C.encodeWord e) - -encodeWord8 :: Word8 -> Encoding -encodeWord8 e = fromPlainEncoding (C.encodeWord8 e) - -encodeWord16 :: Word16 -> Encoding -encodeWord16 e = fromPlainEncoding (C.encodeWord16 e) - -encodeWord32 :: Word32 -> Encoding -encodeWord32 e = fromPlainEncoding (C.encodeWord32 e) - -encodeWord64 :: Word64 -> Encoding -encodeWord64 e = fromPlainEncoding (C.encodeWord64 e) - -encodeInt :: Int -> Encoding -encodeInt e = fromPlainEncoding (C.encodeInt e) - -encodeInt8 :: Int8 -> Encoding -encodeInt8 e = fromPlainEncoding (C.encodeInt8 e) - -encodeInt16 :: Int16 -> Encoding -encodeInt16 e = fromPlainEncoding (C.encodeInt16 e) - -encodeInt32 :: Int32 -> Encoding -encodeInt32 e = fromPlainEncoding (C.encodeInt32 e) - -encodeInt64 :: Int64 -> Encoding -encodeInt64 e = fromPlainEncoding (C.encodeInt64 e) - -encodeInteger :: Integer -> Encoding -encodeInteger e = fromPlainEncoding (C.encodeInteger e) - -encodeBytes :: ByteString -> Encoding -encodeBytes e = fromPlainEncoding (C.encodeBytes e) - -encodeBytesIndef :: Encoding -encodeBytesIndef = fromPlainEncoding C.encodeBytesIndef - -encodeByteArray :: SlicedByteArray -> Encoding -encodeByteArray e = fromPlainEncoding (C.encodeByteArray e) - -encodeString :: Text -> Encoding -encodeString e = fromPlainEncoding (C.encodeString e) - -encodeStringIndef :: Encoding -encodeStringIndef = fromPlainEncoding C.encodeStringIndef - -encodeUtf8ByteArray :: SlicedByteArray -> Encoding -encodeUtf8ByteArray e = fromPlainEncoding (C.encodeUtf8ByteArray e) - -encodeListLen :: Word -> Encoding -encodeListLen e = fromPlainEncoding (C.encodeListLen e) - -encodeListLenIndef :: Encoding -encodeListLenIndef = fromPlainEncoding C.encodeListLenIndef - -encodeMapLen :: Word -> Encoding -encodeMapLen e = fromPlainEncoding (C.encodeMapLen e) - -encodeMapLenIndef :: Encoding -encodeMapLenIndef = fromPlainEncoding C.encodeMapLenIndef - -encodeBreak :: Encoding -encodeBreak = fromPlainEncoding C.encodeBreak - -encodeTag :: Word -> Encoding -encodeTag e = fromPlainEncoding (C.encodeTag e) - -encodeTag64 :: Word64 -> Encoding -encodeTag64 e = fromPlainEncoding (C.encodeTag64 e) - -encodeBool :: Bool -> Encoding -encodeBool e = fromPlainEncoding (C.encodeBool e) - -encodeUndef :: Encoding -encodeUndef = fromPlainEncoding C.encodeUndef - -encodeNull :: Encoding -encodeNull = fromPlainEncoding C.encodeNull - -encodeSimple :: Word8 -> Encoding -encodeSimple e = fromPlainEncoding (C.encodeSimple e) - -encodeFloat16 :: Float -> Encoding -encodeFloat16 e = fromPlainEncoding (C.encodeFloat16 e) - -encodeFloat :: Float -> Encoding -encodeFloat e = fromPlainEncoding (C.encodeFloat e) - -encodeDouble :: Double -> Encoding -encodeDouble e = fromPlainEncoding (C.encodeDouble e) - -encodePreEncoded :: ByteString -> Encoding -encodePreEncoded e = fromPlainEncoding (C.encodePreEncoded e) - -encodeTerm :: C.Term -> Encoding -encodeTerm = fromPlainEncoding . C.encodeTerm - --------------------------------------------------------------------------------- --- Custom --------------------------------------------------------------------------------- - -encodeVersion :: Version -> Encoding -encodeVersion = encodeWord64 . getVersion64 - -encodeRatioNoTag :: (t -> Encoding) -> Ratio t -> Encoding -encodeRatioNoTag encodeNumeric r = - encodeListLen 2 - <> encodeNumeric (numerator r) - <> encodeNumeric (denominator r) - --- | Encode a rational number with tag 30, as per tag assignment: --- --- --- -encodeRatioWithTag :: (t -> Encoding) -> Ratio t -> Encoding -encodeRatioWithTag encodeNumeric r = - encodeTag 30 <> encodeRatioNoTag encodeNumeric r - -encodeRatio :: (t -> Encoding) -> Ratio t -> Encoding -encodeRatio encodeNumeric r = - ifEncodingVersionAtLeast - (natVersion @9) - (encodeRatioWithTag encodeNumeric r) - (encodeRatioNoTag encodeNumeric r) - -encodeEnum :: Enum a => a -> Encoding -encodeEnum = encodeInt . fromEnum - -encodeWithOrigin :: (a -> Encoding) -> WithOrigin a -> Encoding -encodeWithOrigin f = encodeMaybe f . withOriginToMaybe - --------------------------------------------------------------------------------- --- Containers --------------------------------------------------------------------------------- - -encodeMaybe :: (a -> Encoding) -> Maybe a -> Encoding -encodeMaybe encodeValue = \case - Nothing -> encodeListLen 0 - Just x -> encodeListLen 1 <> encodeValue x - --- | Alternative way to encode a Maybe type. --- --- /Note/ - this is not the default method for encoding `Maybe`, use `encodeMaybe` instead -encodeNullMaybe :: (a -> Encoding) -> Maybe a -> Encoding -encodeNullMaybe encodeValue = \case - Nothing -> encodeNull - Just x -> encodeValue x - -encodeStrictMaybe :: (a -> Encoding) -> StrictMaybe a -> Encoding -encodeStrictMaybe encodeValue = \case - SNothing -> encodeListLen 0 - SJust x -> encodeListLen 1 <> encodeValue x - --- | Alternative way to encode a Maybe type. --- --- /Note/ - this is not the default method for encoding `StrictMaybe`, use --- `encodeStrictMaybe` instead -encodeNullStrictMaybe :: (a -> Encoding) -> StrictMaybe a -> Encoding -encodeNullStrictMaybe encodeValue = \case - SNothing -> encodeNull - SJust x -> encodeValue x - -encodeTuple :: (a -> Encoding) -> (b -> Encoding) -> (a, b) -> Encoding -encodeTuple encodeFirst encodeSecond (x, y) = - encodeListLen 2 - <> encodeFirst x - <> encodeSecond y - -encodePair :: (a -> Encoding) -> (b -> Encoding) -> (a, b) -> Encoding -encodePair = encodeTuple -{-# DEPRECATED encodePair "In favor of `encodeTuple`" #-} - --- | Encode any Foldable with indefinite list length encoding -encodeFoldableAsIndefLenList :: Foldable f => (a -> Encoding) -> f a -> Encoding -encodeFoldableAsIndefLenList encodeValue xs = - encodeListLenIndef <> foldr (\x r -> encodeValue x <> r) encodeBreak xs - -encodeFoldableAsDefLenList :: Foldable f => (a -> Encoding) -> f a -> Encoding -encodeFoldableAsDefLenList encodeValue xs = - case foldMap' (\v -> (1, encodeValue v)) xs of - (Sum len, exactLenEncList) -> encodeListLen len <> exactLenEncList - --- | Encode any Foldable with the variable list length encoding, which will use indefinite --- encoding over 23 elements and definite otherwise. -encodeFoldableEncoder :: Foldable f => (a -> Encoding) -> f a -> Encoding -encodeFoldableEncoder encoder xs = variableListLenEncoding len contents - where - (len, contents) = foldl' go (0, mempty) xs - go (!l, !enc) next = (l + 1, enc <> encoder next) - --- | Encode a data structure as a Map with the 0-based index for a Key to a value. Uses --- variable map length encoding, which means an indefinite encoding for maps with over 23 --- elements and definite otherwise. -encodeFoldableMapEncoder :: - Foldable f => - -- | A function that accepts an index of the value in the foldable data strucure, the - -- actual value and optionally produces the encoding of the value and an index if that - -- value should be encoded. - (Word -> a -> Maybe Encoding) -> - f a -> - Encoding -encodeFoldableMapEncoder encode xs = variableMapLenEncoding len contents - where - (len, _, contents) = F.foldl' go (0, 0, mempty) xs - go (!l, !i, !enc) next = case encode i next of - Nothing -> (l, i + 1, enc) - Just e -> (l + 1, i + 1, enc <> e) - --------------------------------------------------------------------------------- --- Map --------------------------------------------------------------------------------- - --- | Encode a Map. Versions variance: --- --- * [>= 2] - Variable length encoding for Maps larger than 23 key value pairs, otherwise exact --- length encoding --- --- * [< 2] - Variable length encoding. -encodeMap :: - (k -> Encoding) -> - (v -> Encoding) -> - Map.Map k v -> - Encoding -encodeMap encodeKey encodeValue m = - let mapEncoding = Map.foldMapWithKey (\k v -> encodeKey k <> encodeValue v) m - in ifEncodingVersionAtLeast - (natVersion @2) - (variableMapLenEncoding (Map.size m) mapEncoding) - (exactMapLenEncoding (Map.size m) mapEncoding) -{-# INLINE encodeMap #-} - --- | Mimics `Map` encoder `encodeMap` identically. -encodeVMap :: - (VMap.Vector kv k, VMap.Vector vv v) => - (k -> Encoding) -> - (v -> Encoding) -> - VMap.VMap kv vv k v -> - Encoding -encodeVMap encodeKey encodeValue m = - let mapEncoding = VMap.foldMapWithKey (\k v -> encodeKey k <> encodeValue v) m - in ifEncodingVersionAtLeast - (natVersion @2) - (variableMapLenEncoding (VMap.size m) mapEncoding) - (exactMapLenEncoding (VMap.size m) mapEncoding) -{-# INLINE encodeVMap #-} - --- Usage of fromIntegral in `exactMapLenEncoding` is safe, since it is an internal function --- and is applied to Map's size. -exactMapLenEncoding :: Int -> Encoding -> Encoding -exactMapLenEncoding len contents = - encodeMapLen (fromIntegral len :: Word) <> contents -{-# INLINE exactMapLenEncoding #-} - --- | Conditionally use variable length encoding, but only for Maps larger than 23 -variableMapLenEncoding :: Int -> Encoding -> Encoding -variableMapLenEncoding len contents = - if len <= lengthThreshold - then exactMapLenEncoding len contents - else encodeMapLenIndef <> contents <> encodeBreak -{-# INLINE variableMapLenEncoding #-} - --- | This is the optimal maximum number for encoding exact length. Above that threashold --- using variable length encoding will result in less bytes on the wire. -lengthThreshold :: Int -lengthThreshold = 23 - --------------------------------------------------------------------------------- --- Set --------------------------------------------------------------------------------- - --- | Usage of fromIntegral in `exactListLenEncoding` is safe, since it is an internal function --- and is applied to List's size. -exactListLenEncoding :: Int -> Encoding -> Encoding -exactListLenEncoding len contents = - encodeListLen (fromIntegral len :: Word) <> contents -{-# INLINE exactListLenEncoding #-} - --- | Conditionally use variable length encoding for list like structures with length --- larger than 23, otherwise use exact list length encoding. -variableListLenEncoding :: - -- | Number of elements in the encoded data structure. - Int -> - -- | Encoding for the actual data structure - Encoding -> - Encoding -variableListLenEncoding len contents = - if len <= lengthThreshold - then exactListLenEncoding len contents - else encodeListLenIndef <> contents <> encodeBreak -{-# INLINE variableListLenEncoding #-} - --- | Encode a Set. Versions variance: --- --- * [>= 9] - Variable length encoding for Sets larger than 23 elements, otherwise exact --- length encoding. Prefixes with a special 258 `setTag`. --- --- * [>= 2] - Variable length encoding for Sets larger than 23 elements, otherwise exact --- length encoding --- --- * [< 2] - Variable length encoding. Prefixes with a special 258 `setTag`. -encodeSet :: (a -> Encoding) -> Set.Set a -> Encoding -encodeSet encodeValue f = - let foldableEncoding = foldMap' encodeValue f - varLenSetEncoding = variableListLenEncoding (Set.size f) foldableEncoding - in ifEncodingVersionAtLeast - (natVersion @2) - ( ifEncodingVersionAtLeast - (natVersion @9) - (encodeTag setTag <> varLenSetEncoding) - varLenSetEncoding - ) - (encodeTag setTag <> exactListLenEncoding (Set.size f) foldableEncoding) -{-# INLINE encodeSet #-} - --- | Encode a list. Versions variance: --- --- * [>= 2] - Variable length encoding for lists longer than 23 elements, otherwise exact --- length encoding --- --- * [< 2] - Variable length encoding -encodeList :: (a -> Encoding) -> [a] -> Encoding -encodeList encodeValue xs = - let varLenEncList = encodeFoldableAsIndefLenList encodeValue xs - -- we don't want to compute the length of the list, unless it is smaller than the - -- threshold - encListVer2 = - case drop lengthThreshold xs of - [] -> encodeFoldableAsDefLenList encodeValue xs - _ -> varLenEncList - in ifEncodingVersionAtLeast (natVersion @2) encListVer2 varLenEncList - --- | Encode a Seq. Variable length encoding for Sequences larger than 23 elements, --- otherwise exact length encoding -encodeSeq :: (a -> Encoding) -> Seq.Seq a -> Encoding -encodeSeq encodeValue f = variableListLenEncoding (Seq.length f) (foldMap' encodeValue f) -{-# INLINE encodeSeq #-} - -encodeStrictSeq :: (a -> Encoding) -> SSeq.StrictSeq a -> Encoding -encodeStrictSeq encodeValue = encodeSeq encodeValue . SSeq.fromStrict -{-# INLINE encodeStrictSeq #-} - --------------------------------------------------------------------------------- --- Vector --------------------------------------------------------------------------------- -encodeContainerSkel :: - (Word -> Encoding) -> - (container -> Int) -> - (accumFunc -> Encoding -> container -> Encoding) -> - accumFunc -> - container -> - Encoding -encodeContainerSkel encodeLen size foldFunction f c = - encodeLen (fromIntegral (size c)) <> foldFunction f mempty c -{-# INLINE encodeContainerSkel #-} - --- | Generic encoder for vectors. Its intended use is to allow easy --- definition of 'EncCBOR' instances for custom vector -encodeVector :: VG.Vector v a => (a -> Encoding) -> v a -> Encoding -encodeVector encodeValue = - encodeContainerSkel - encodeListLen - VG.length - VG.foldr - (\a b -> encodeValue a <> b) -{-# INLINE encodeVector #-} - --------------------------------------------------------------------------------- --- Time --------------------------------------------------------------------------------- - -encodeUTCTime :: UTCTime -> Encoding -encodeUTCTime (UTCTime day timeOfDay) = - encodeListLen 3 - <> encodeInteger year - <> encodeInt dayOfYear - <> encodeInteger timeOfDayPico - where - (year, dayOfYear) = toOrdinalDate day - timeOfDayPico = diffTimeToPicoseconds timeOfDay - --------------------------------------------------------------------------------- --- Network --------------------------------------------------------------------------------- - -ipv4ToBytes :: IPv4 -> BS.ByteString -ipv4ToBytes = BSL.toStrict . runPut . putWord32le . toHostAddress - -encodeIPv4 :: IPv4 -> Encoding -encodeIPv4 = encodeBytes . ipv4ToBytes - -ipv6ToBytes :: IPv6 -> BS.ByteString -ipv6ToBytes ipv6 = BSL.toStrict . runPut $ do - let (w1, w2, w3, w4) = toHostAddress6 ipv6 - putWord32le w1 - putWord32le w2 - putWord32le w3 - putWord32le w4 - -encodeIPv6 :: IPv6 -> Encoding -encodeIPv6 = encodeBytes . ipv6ToBytes diff --git a/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/FlatTerm.hs b/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/FlatTerm.hs deleted file mode 100644 index db834997d9d..00000000000 --- a/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/FlatTerm.hs +++ /dev/null @@ -1,20 +0,0 @@ -{-# LANGUAGE RankNTypes #-} - -module Cardano.Ledger.Binary.FlatTerm ( - C.FlatTerm, - C.TermToken (..), - toFlatTerm, - fromFlatTerm, - C.validFlatTerm, -) -where - -import Cardano.Ledger.Binary.Decoding -import Cardano.Ledger.Binary.Encoding -import qualified Codec.CBOR.FlatTerm as C - -toFlatTerm :: Version -> Encoding -> C.FlatTerm -toFlatTerm version = C.toFlatTerm . toPlainEncoding version - -fromFlatTerm :: Version -> (forall s. Decoder s a) -> C.FlatTerm -> Either String a -fromFlatTerm version decoder = C.fromFlatTerm (toPlainDecoder version decoder) diff --git a/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Group.hs b/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Group.hs deleted file mode 100644 index 96315a7dcef..00000000000 --- a/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Group.hs +++ /dev/null @@ -1,63 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} - -module Cardano.Ledger.Binary.Group ( - CBORGroup (..), - groupRecord, - EncCBORGroup (..), - listLenInt, - DecCBORGroup (..), -) -where - -import Cardano.Ledger.Binary.Decoding -import Cardano.Ledger.Binary.Encoding -import Data.Proxy -import Data.Typeable - --------------------------------------------------------------------------------- --- CBORGroup --------------------------------------------------------------------------------- - -newtype CBORGroup a = CBORGroup {unCBORGroup :: a} - deriving (Eq, Show) - -instance (DecCBORGroup a, EncCBORGroup a) => DecCBOR (CBORGroup a) where - decCBOR = CBORGroup <$> groupRecord - -instance EncCBORGroup a => EncCBOR (CBORGroup a) where - encCBOR (CBORGroup x) = encodeListLen (listLen x) <> encCBORGroup x - encodedSizeExpr size proxy = - fromInteger (withWordSize (listLenBound proxy')) - + encodedGroupSizeExpr size proxy' - where - proxy' = unCBORGroup <$> proxy - -groupRecord :: forall a s. (EncCBORGroup a, DecCBORGroup a) => Decoder s a -groupRecord = decodeRecordNamed "CBORGroup" (fromIntegral . toInteger . listLen) decCBORGroup - --------------------------------------------------------------------------------- --- EncCBORGroup --------------------------------------------------------------------------------- - -class Typeable a => EncCBORGroup a where - encCBORGroup :: a -> Encoding - encodedGroupSizeExpr :: - (forall x. EncCBOR x => Proxy x -> Size) -> - Proxy a -> - Size - - listLen :: a -> Word - - -- | an upper bound for 'listLen', used in 'Size' expressions. - listLenBound :: Proxy a -> Word - -listLenInt :: EncCBORGroup a => a -> Int -listLenInt x = fromIntegral (listLen x) - --------------------------------------------------------------------------------- --- DecCBORGroup --------------------------------------------------------------------------------- - -class Typeable a => DecCBORGroup a where - decCBORGroup :: Decoder s a diff --git a/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Plain.hs b/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Plain.hs deleted file mode 100644 index 7c29e045501..00000000000 --- a/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Plain.hs +++ /dev/null @@ -1,144 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - --- | Module that re-exports everythign from `cardano-binary` package. --- --- Everything that gets defined in this module should most likely be migrated to --- `cardano-binary` package. -module Cardano.Ledger.Binary.Plain ( - module Cardano.Binary, - module Codec.CBOR.Term, - showDecoderError, - invalidKey, - decodeRecordNamed, - decodeRecordNamedT, - decodeRecordSum, - decodeListLikeT, - serializeAsHexText, - decodeFullFromHexText, - encodeEnum, - decodeEnumBounded, - withHexText, - - -- * DSIGN - C.encodeVerKeyDSIGN, - C.decodeVerKeyDSIGN, - C.encodeSignKeyDSIGN, - C.decodeSignKeyDSIGN, - C.encodeSigDSIGN, - C.decodeSigDSIGN, - C.encodeSignedDSIGN, - C.decodeSignedDSIGN, - - -- * KES - C.encodeVerKeyKES, - C.decodeVerKeyKES, - C.encodeSignKeyKES, - C.decodeSignKeyKES, - C.encodeSigKES, - C.decodeSigKES, - C.encodeSignedKES, - C.decodeSignedKES, - - -- * VRF - C.encodeVerKeyVRF, - C.decodeVerKeyVRF, - C.encodeSignKeyVRF, - C.decodeSignKeyVRF, - C.encodeCertVRF, - C.decodeCertVRF, -) -where - -import Cardano.Binary hiding (encodedSizeExpr) -import qualified Cardano.Crypto.DSIGN.Class as C -import qualified Cardano.Crypto.KES.Class as C -import qualified Cardano.Crypto.VRF.Class as C -import Codec.CBOR.Term -import Control.Monad (unless) -import Control.Monad.Trans (MonadTrans (..)) -import Control.Monad.Trans.Identity (IdentityT (runIdentityT)) -import Data.ByteString (ByteString) -import Data.ByteString.Base16 as B16 -import qualified Data.Text as Text -import qualified Data.Text.Encoding as Text -import Data.Typeable -import Formatting (build, formatToString) -import qualified Formatting.Buildable as B (Buildable (..)) - -showDecoderError :: B.Buildable e => e -> String -showDecoderError = formatToString build - --- | Encode a type as CBOR and encode it as base16 -serializeAsHexText :: ToCBOR a => a -> Text.Text -serializeAsHexText = Text.decodeLatin1 . B16.encode . serialize' - -withHexText :: (ByteString -> Either DecoderError b) -> Text.Text -> Either DecoderError b -withHexText f txt = - case B16.decode (Text.encodeUtf8 txt) of - Left err -> Left $ DecoderErrorCustom "Invalid Hex encoding:" (Text.pack err) - Right bs -> f bs - --- | Try decoding base16 encode bytes and then try to decoding them as CBOR -decodeFullFromHexText :: FromCBOR a => Text.Text -> Either DecoderError a -decodeFullFromHexText = withHexText decodeFull' - --- | Report an error when a numeric key of the type constructor doesn't match. -invalidKey :: MonadFail m => Word -> m a -invalidKey k = cborError $ DecoderErrorCustom "Not a valid key:" (Text.pack $ show k) - -decodeRecordNamed :: Text.Text -> (a -> Int) -> Decoder s a -> Decoder s a -decodeRecordNamed name getRecordSize decoder = - runIdentityT $ decodeRecordNamedT name getRecordSize (lift decoder) -{-# INLINE decodeRecordNamed #-} - -decodeRecordNamedT :: - (MonadTrans m, Monad (m (Decoder s))) => - Text.Text -> - (a -> Int) -> - m (Decoder s) a -> - m (Decoder s) a -decodeRecordNamedT name getRecordSize decoder = - decodeListLikeT name decoder $ \result n -> - lift $ matchSize ("Record " <> name) n (getRecordSize result) -{-# INLINE decodeRecordNamedT #-} - -decodeRecordSum :: Text.Text -> (Word -> Decoder s (Int, a)) -> Decoder s a -decodeRecordSum name decoder = - runIdentityT $ - snd <$> do - decodeListLikeT name (lift (decodeWord >>= decoder)) $ \(size, _) n -> - lift $ matchSize (Text.pack "Sum " <> name) size n -{-# INLINE decodeRecordSum #-} - -decodeListLikeT :: - (MonadTrans m, Monad (m (Decoder s))) => - -- | Name for error reporting - Text.Text -> - -- | Decoder for the datastructure itself - m (Decoder s) a -> - -- | In case when length was provided, act upon it. - (a -> Int -> m (Decoder s) ()) -> - m (Decoder s) a -decodeListLikeT name decoder actOnLength = do - lenOrIndef <- lift decodeListLenOrIndef - result <- decoder - case lenOrIndef of - Just n -> actOnLength result n - Nothing -> lift $ do - isBreak <- decodeBreakOr - unless isBreak $ cborError $ DecoderErrorCustom name "Excess terms in array" - pure result -{-# INLINE decodeListLikeT #-} - -encodeEnum :: Enum a => a -> Encoding -encodeEnum = encodeInt . fromEnum - -decodeEnumBounded :: forall a s. (Enum a, Bounded a, Typeable a) => Decoder s a -decodeEnumBounded = do - n <- decodeInt - if fromEnum (minBound :: a) <= n && n <= fromEnum (maxBound :: a) - then pure $ toEnum n - else fail $ "Failed to decode an Enum: " <> show n <> " for TypeRep: " <> show (typeRep (Proxy @a)) -{-# INLINE decodeEnumBounded #-} diff --git a/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Version.hs b/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Version.hs deleted file mode 100644 index ff5ca9ac366..00000000000 --- a/libs/cardano-ledger-binary/src/Cardano/Ledger/Binary/Version.hs +++ /dev/null @@ -1,138 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE CPP #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# OPTIONS_GHC -fno-warn-redundant-constraints #-} - -module Cardano.Ledger.Binary.Version ( - -- * Versioning - Version, - getVersion, - MinVersion, - MaxVersion, - natVersion, - natVersionProxy, - succVersion, - mkVersion, - mkVersion64, - getVersion64, - allVersions, - - -- ** Concrete era versions - byronProtVer, - shelleyProtVer, -) -where - -import Cardano.Binary (FromCBOR (..), ToCBOR (..)) -import Control.DeepSeq (NFData) -import Control.Monad.Trans.Fail.String (errorFail) -import Data.Aeson (FromJSON (..), ToJSON (..)) -import Data.Proxy (Proxy (..)) -import Data.Word (Word64) -import GHC.TypeLits (KnownNat, natVal, type (<=)) -import NoThunks.Class (NoThunks) - --------------------------------------------------------------------------------- --- Version --------------------------------------------------------------------------------- - --- | Protocol version number that is used during encoding and decoding. All supported --- versions are in the range from `MinVersion` to `MaxVersion`. -newtype Version = Version Word64 - deriving (Eq, Ord, Show, NFData, NoThunks, ToCBOR, ToJSON) - --- | Minimum supported version -type MinVersion = 0 - --- | Maximum supported version. This is the major protocol version of the latest known --- protocol version that we want to support, including for development and testing. -type MaxVersion = 11 - -instance Enum Version where - toEnum = errorFail . mkVersion - fromEnum (Version v) = fromEnum v - -instance Bounded Version where - minBound = Version (fromInteger (natVal (Proxy @MinVersion))) - maxBound = Version (fromInteger (natVal (Proxy @MaxVersion))) - -instance FromCBOR Version where - fromCBOR = fromCBOR >>= mkVersion64 - {-# INLINE fromCBOR #-} - -instance FromJSON Version where - parseJSON v = parseJSON v >>= mkVersion64 - --- | Same as `natVersionProxy`, construct a version from a type level `Nat`, except it can be --- supplied through @TypeApplications@. -natVersion :: forall v. (KnownNat v, MinVersion <= v, v <= MaxVersion) => Version -natVersion = natVersionProxy (Proxy @v) -{-# INLINE natVersion #-} - --- | Safely construct a `Version` from a type level `Nat`, which is supplied as a `Proxy` -natVersionProxy :: (KnownNat v, MinVersion <= v, v <= MaxVersion) => Proxy v -> Version -natVersionProxy = Version . fromInteger . natVal -{-# INLINE natVersionProxy #-} - --- | Construct a `Version` and fail if the supplied value is not a supported version number. -mkVersion :: (Integral i, MonadFail m) => i -> m Version -mkVersion v - | vi < toInteger (minBound :: Word64) = fail $ "Version is too small: " ++ show vi - | vi > toInteger (maxBound :: Word64) = fail $ "Version is too big: " ++ show vi - | otherwise = mkVersion64 (fromIntegral v) - where - vi = toInteger v -{-# INLINE mkVersion #-} - --- | Construct a `Version` and fail if the supplied value is not supported version number. -mkVersion64 :: MonadFail m => Word64 -> m Version -mkVersion64 v - | minVersion <= v && v <= maxVersion = - pure (Version (fromIntegral v)) - | otherwise = - fail $ - "Unsupported version value: " - ++ show v - ++ ". Expected value in bounds: [" - ++ show minVersion - ++ ", " - ++ show maxVersion - ++ "]" - where - Version minVersion = minBound - Version maxVersion = maxBound -{-# INLINE mkVersion64 #-} - --- | Convert a `Version` to an `Integral` value. --- --- /Note/ - Version spans a fairly small range of non-negative numbers, so this should be --- safe even for smallest integral types. -getVersion :: Integral i => Version -> i -getVersion (Version w64) = fromIntegral w64 -{-# INLINE getVersion #-} - --- | Extract `Word64` representation of the `Version` -getVersion64 :: Version -> Word64 -getVersion64 (Version w64) = w64 -{-# INLINE getVersion64 #-} - --- | Increment version by 1. -succVersion :: MonadFail m => Version -> m Version -succVersion (Version v64) = mkVersion64 (v64 + 1) -{-# INLINE succVersion #-} - -allVersions :: [Version] -allVersions = [minBound .. maxBound] - -byronProtVer :: Version -byronProtVer = natVersion @1 -{-# INLINE byronProtVer #-} - -shelleyProtVer :: Version -shelleyProtVer = natVersion @2 -{-# INLINE shelleyProtVer #-} diff --git a/libs/cardano-ledger-binary/test/.ghcid b/libs/cardano-ledger-binary/test/.ghcid deleted file mode 100644 index 4dc61835723..00000000000 --- a/libs/cardano-ledger-binary/test/.ghcid +++ /dev/null @@ -1 +0,0 @@ ---command="cabal repl --repl-options='-isrc -fwarn-unused-binds -fwarn-unused-imports -fno-code -fobject-code -g2 -fno-break-on-exception -fno-break-on-error -ferror-spans -j -Wno-unused-packages'" --clear --no-height-limit --reverse-errors --reload=../../../ --outputfile=/tmp/cardano-ledger-binary-test-ghcid.txt \ No newline at end of file diff --git a/libs/cardano-ledger-binary/test/Main.hs b/libs/cardano-ledger-binary/test/Main.hs deleted file mode 100644 index f9ec4ff6fd5..00000000000 --- a/libs/cardano-ledger-binary/test/Main.hs +++ /dev/null @@ -1,35 +0,0 @@ -module Main where - -import System.IO (BufferMode (LineBuffering), hSetBuffering, hSetEncoding, stdout, utf8) -import qualified Test.Cardano.Ledger.Binary.Failure as Failure -import qualified Test.Cardano.Ledger.Binary.PlainSpec as PlainSpec -import qualified Test.Cardano.Ledger.Binary.RoundTripSpec as RoundTripSpec -import qualified Test.Cardano.Ledger.Binary.Success as Success -import qualified Test.Cardano.Ledger.Binary.Vintage.Coders as Vintage.Coders -import qualified Test.Cardano.Ledger.Binary.Vintage.Drop as Vintage.Drop -import qualified Test.Cardano.Ledger.Binary.Vintage.Failure as Vintage.Failure -import qualified Test.Cardano.Ledger.Binary.Vintage.RoundTrip as Vintage.RoundTrip -import qualified Test.Cardano.Ledger.Binary.Vintage.Serialization as Vintage.Serialization -import qualified Test.Cardano.Ledger.Binary.Vintage.SizeBounds as Vintage.SizeBounds -import Test.Hspec - -spec :: Spec -spec = do - describe "Vintage Test Suite" $ do - it "RoundTrip" $ Vintage.RoundTrip.tests `shouldReturn` True - it "SizeBounds" $ Vintage.SizeBounds.tests `shouldReturn` True - it "Serialization" $ Vintage.Serialization.tests `shouldReturn` True - it "Drop" $ Vintage.Drop.tests `shouldReturn` True - it "Failure" $ Vintage.Failure.tests `shouldReturn` True - Vintage.Coders.spec - PlainSpec.spec - describe "Versioned" $ do - RoundTripSpec.spec - Failure.spec - Success.spec - -main :: IO () -main = do - hSetBuffering stdout LineBuffering - hSetEncoding stdout utf8 - hspec spec diff --git a/libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/Failure.hs b/libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/Failure.hs deleted file mode 100644 index 6ea2f46dbdb..00000000000 --- a/libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/Failure.hs +++ /dev/null @@ -1,74 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Binary.Failure (spec) where - -import Cardano.Ledger.Binary -import Data.Map (Map) -import Data.Proxy (Proxy (Proxy)) -import Data.Set (Set) -import Test.Cardano.Ledger.Binary.RoundTrip (Trip (..), embedTripRangeFailureExpectation) -import Test.Hspec -import Test.Hspec.QuickCheck -import Test.QuickCheck - --- | Generate an association list with at least one duplicate key -genDuplicateAssocList :: Gen [(Int, Int)] -genDuplicateAssocList = do - xs <- getNonEmpty <$> arbitrary - (a, _) <- elements xs -- pick a key to duplicate - c <- arbitrary -- pick a value for duplicate key - shuffle ((a, c) : xs) - --- | Generate a CBOR encoded association list with at least one duplicate key -genDuplicateAssocListEncoding :: Gen Encoding -genDuplicateAssocListEncoding = do - xs <- genDuplicateAssocList - let flatXs = concat [[a, b] | (a, b) <- xs] - oneof - [ pure $ encodeMapLen (fromIntegral $ Prelude.length xs) <> foldMap encCBOR flatXs - , pure $ encodeMapLenIndef <> foldMap encCBOR flatXs <> encodeBreak - ] - --- | Generate a list with at least one duplicate -genDuplicateList :: Gen [Int] -genDuplicateList = do - xs <- getNonEmpty <$> arbitrary - a <- elements xs -- pick an element to duplicate - shuffle (a : xs) - --- | Generate a CBOR encoded list with at least one duplicate, with and with the set tag -genDuplicateListEncoding :: Gen Encoding -genDuplicateListEncoding = do - xs <- genDuplicateList - let definite = encodeListLen (fromIntegral $ Prelude.length xs) <> foldMap encCBOR xs - indefinite = encodeListLenIndef <> foldMap encCBOR xs <> encodeBreak - elements - [ definite - , encodeTag 258 <> definite - , indefinite - , encodeTag 258 <> indefinite - ] - --- | Starting in version 9, do not accept duplicates in CBOR maps -prop_shouldFailMapWithDupKeys :: Property -prop_shouldFailMapWithDupKeys = - forAllBlind genDuplicateAssocListEncoding $ - \mapEncoding -> - let trip = Trip id (decCBOR @(Map Int Int)) (dropCBOR (Proxy @(Map Int Int))) - in property $ embedTripRangeFailureExpectation trip (natVersion @9) maxBound mapEncoding - --- | Starting in version 9, do not accept duplicates in CBOR sets -prop_shouldFailSetWithDupKeys :: Property -prop_shouldFailSetWithDupKeys = - forAllBlind genDuplicateListEncoding $ - \setEncoding -> - let trip = Trip id (decCBOR @(Set Int)) (dropCBOR (Proxy @(Set Int))) - in property $ embedTripRangeFailureExpectation trip (natVersion @9) maxBound setEncoding - -spec :: Spec -spec = do - describe "Failures" $ do - prop "map duplicates are not allowed starting v9" prop_shouldFailMapWithDupKeys - prop "set duplicates are not allowed starting v9" prop_shouldFailSetWithDupKeys diff --git a/libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/PlainSpec.hs b/libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/PlainSpec.hs deleted file mode 100644 index 5459c29caa2..00000000000 --- a/libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/PlainSpec.hs +++ /dev/null @@ -1,16 +0,0 @@ -{-# LANGUAGE ScopedTypeVariables #-} - -module Test.Cardano.Ledger.Binary.PlainSpec (spec) where - -import Cardano.Ledger.Binary.Plain -import Test.Cardano.Ledger.Binary.Arbitrary () -import Test.Hspec -import Test.Hspec.QuickCheck - -spec :: Spec -spec = do - describe "Plain" $ do - prop "decodeFullFromHexText . serializeAsHexText" $ \(term :: Term) -> - case decodeFullFromHexText $ serializeAsHexText term of - Left err -> expectationFailure $ "Unexpected hex rountrip error: " ++ show err - Right (res :: Term) -> res `shouldBe` term diff --git a/libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/RoundTripSpec.hs b/libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/RoundTripSpec.hs deleted file mode 100644 index a89d82689ba..00000000000 --- a/libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/RoundTripSpec.hs +++ /dev/null @@ -1,333 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE NumericUnderscores #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Binary.RoundTripSpec (spec) where - -import Cardano.Crypto.DSIGN.Class (SigDSIGN, SignKeyDSIGN, SignedDSIGN, VerKeyDSIGN) -import Cardano.Crypto.DSIGN.EcdsaSecp256k1 (EcdsaSecp256k1DSIGN) -import Cardano.Crypto.DSIGN.Ed25519 (Ed25519DSIGN) -import Cardano.Crypto.DSIGN.Ed448 (Ed448DSIGN) -import Cardano.Crypto.DSIGN.Mock (MockDSIGN) -import Cardano.Crypto.DSIGN.SchnorrSecp256k1 (SchnorrSecp256k1DSIGN) -import Cardano.Crypto.Hash.Blake2b (Blake2b_224, Blake2b_256) -import Cardano.Crypto.Hash.Class (Hash) -import Cardano.Crypto.Hash.Keccak256 (Keccak256) -import Cardano.Crypto.Hash.SHA256 (SHA256) -import Cardano.Crypto.Hash.SHA3_256 (SHA3_256) -import Cardano.Crypto.Hash.Short (ShortHash) -import Cardano.Crypto.KES.Class (SigKES, SignKeyKES, VerKeyKES) -import Cardano.Crypto.KES.CompactSingle (CompactSingleKES) -import Cardano.Crypto.KES.CompactSum ( - CompactSum0KES, - CompactSum1KES, - CompactSum2KES, - CompactSum3KES, - CompactSum4KES, - CompactSum5KES, - CompactSum6KES, - CompactSum7KES, - ) -import Cardano.Crypto.KES.Mock (MockKES) -import Cardano.Crypto.KES.Simple (SimpleKES) -import Cardano.Crypto.KES.Sum ( - Sum0KES, - Sum1KES, - Sum2KES, - Sum3KES, - Sum4KES, - Sum5KES, - Sum6KES, - Sum7KES, - ) -import Cardano.Crypto.VRF.Class (CertVRF, CertifiedVRF, OutputVRF, SignKeyVRF, VerKeyVRF) -import Cardano.Crypto.VRF.Mock (MockVRF) -import Cardano.Crypto.VRF.Praos (PraosVRF) -import Cardano.Crypto.VRF.Simple (SimpleVRF) -import Cardano.Ledger.Binary -import Cardano.Slotting.Block (BlockNo) -import Cardano.Slotting.Slot (EpochNo, EpochSize, SlotNo, WithOrigin) -import Cardano.Slotting.Time (SystemStart) -import Codec.CBOR.ByteArray (ByteArray (..)) -import Codec.CBOR.ByteArray.Sliced (SlicedByteArray (..)) -import Control.Monad (when) -import Data.Fixed (Nano, Pico) -import Data.Foldable as F -import Data.IP (IPv4, IPv6) -import Data.Int -import qualified Data.Map.Strict as Map -import Data.Maybe -import Data.Maybe.Strict -import qualified Data.Primitive.ByteArray as Prim (ByteArray) -import Data.Ratio -import qualified Data.Sequence as Seq -import qualified Data.Sequence.Strict as SSeq -import qualified Data.Set as Set -import Data.Tagged (Tagged (Tagged)) -import Data.Time.Clock (UTCTime) -import qualified Data.VMap as VMap -import qualified Data.Vector as V -import qualified Data.Vector.Primitive as VP -import qualified Data.Vector.Storable as VS -import qualified Data.Vector.Unboxed as VU -import Data.Word -import Numeric.Natural -import Test.Cardano.Ledger.Binary.Arbitrary () -import Test.Cardano.Ledger.Binary.RoundTrip -import Test.Hspec - -spec :: Spec -spec = do - describe "RoundTrip" $ do - roundTripSpec @() cborTrip - roundTripSpec @Bool cborTrip - roundTripSpec @Integer cborTrip - roundTripSpec @Natural cborTrip - roundTripSpec @Word cborTrip - roundTripSpec @Word8 cborTrip - roundTripSpec @Word16 cborTrip - roundTripSpec @Word32 cborTrip - roundTripSpec @Word64 cborTrip - roundTripSpec @Int cborTrip - roundTripSpec @Int8 cborTrip - roundTripSpec @Int16 cborTrip - roundTripSpec @Int32 cborTrip - roundTripSpec @Int64 cborTrip - roundTripSpec @Float cborTrip - roundTripSpec @Double cborTrip - roundTripSpec @Rational cborTrip - roundTripSpec @Nano cborTrip - roundTripSpec @Pico cborTrip - roundTripSpec @UTCTime cborTrip - roundTripSpec @IPv4 cborTrip - roundTripSpec @IPv6 cborTrip - roundTripSpec @(Maybe Integer) cborTrip - roundTripSpec @(StrictMaybe Integer) cborTrip - roundTripSpec @[Integer] cborTrip - roundTripSpec @(V.Vector Integer) cborTrip - roundTripSpec @(VS.Vector Int16) cborTrip - roundTripSpec @(VP.Vector Int) cborTrip - roundTripSpec @(VU.Vector (Bool, Word)) cborTrip - roundTripSpec @(Set.Set Int) cborTrip - roundTripSpec @(Map.Map Integer Int) cborTrip - roundTripSpec @(Seq.Seq Int) cborTrip - roundTripSpec @(SSeq.StrictSeq Int) cborTrip - roundTripSpec @(VMap.VMap VMap.VB VMap.VS Integer Int) cborTrip - roundTripSpec @Prim.ByteArray cborTrip - roundTripSpec @ByteArray cborTrip - roundTripSpec @SlicedByteArray cborTrip - roundTripSpec @(Maybe Integer) $ - mkTrip (encodeNullMaybe encCBOR) (decodeNullMaybe decCBOR) - roundTripSpec @(StrictMaybe Integer) $ - mkTrip (encodeNullStrictMaybe encCBOR) (decodeNullStrictMaybe decCBOR) - describe "Slotting" $ - describe "Mock" $ do - roundTripSpec @BlockNo cborTrip - roundTripSpec @SlotNo cborTrip - roundTripSpec @(WithOrigin EpochNo) cborTrip - roundTripSpec @EpochSize cborTrip - roundTripSpec @SystemStart cborTrip - describe "Crypto" $ do - describe "DSIGN" $ do - describe "Ed25519" $ do - roundTripSpec @(SignKeyDSIGN Ed25519DSIGN) cborTrip - roundTripSpec @(VerKeyDSIGN Ed25519DSIGN) cborTrip - roundTripSpec @(SigDSIGN Ed25519DSIGN) cborTrip - roundTripSpec @(SignedDSIGN Ed25519DSIGN ()) cborTrip - describe "Ed448" $ do - roundTripSpec @(SignKeyDSIGN Ed448DSIGN) cborTrip - roundTripSpec @(VerKeyDSIGN Ed448DSIGN) cborTrip - roundTripSpec @(SigDSIGN Ed448DSIGN) cborTrip - roundTripSpec @(SignedDSIGN Ed448DSIGN ()) cborTrip - describe "EcdsaSecp256k1" $ do - roundTripSpec @(SignKeyDSIGN EcdsaSecp256k1DSIGN) cborTrip - roundTripSpec @(VerKeyDSIGN EcdsaSecp256k1DSIGN) cborTrip - roundTripSpec @(SigDSIGN EcdsaSecp256k1DSIGN) cborTrip - roundTripSpec @(SignedDSIGN EcdsaSecp256k1DSIGN ()) cborTrip - describe "SchnorrSecp256k1" $ do - roundTripSpec @(SignKeyDSIGN SchnorrSecp256k1DSIGN) cborTrip - roundTripSpec @(VerKeyDSIGN SchnorrSecp256k1DSIGN) cborTrip - roundTripSpec @(SigDSIGN SchnorrSecp256k1DSIGN) cborTrip - roundTripSpec @(SignedDSIGN SchnorrSecp256k1DSIGN ()) cborTrip - describe "Mock" $ do - roundTripSpec @(SignKeyDSIGN MockDSIGN) cborTrip - roundTripSpec @(VerKeyDSIGN MockDSIGN) cborTrip - roundTripSpec @(SigDSIGN MockDSIGN) cborTrip - roundTripSpec @(SignedDSIGN MockDSIGN ()) cborTrip - describe "VRF" $ do - describe "OutputVRF" $ do - roundTripSpec @(OutputVRF PraosVRF) cborTrip - roundTripSpec @(CertifiedVRF PraosVRF Bool) cborTrip - describe "Praos" $ do - roundTripSpec @(SignKeyVRF PraosVRF) cborTrip - roundTripSpec @(VerKeyVRF PraosVRF) cborTrip - roundTripSpec @(CertVRF PraosVRF) cborTrip - describe "Simple" $ do - roundTripSpec @(SignKeyVRF SimpleVRF) cborTrip - roundTripSpec @(VerKeyVRF SimpleVRF) cborTrip - roundTripSpec @(CertVRF SimpleVRF) cborTrip - describe "Mock" $ do - roundTripSpec @(SignKeyVRF MockVRF) cborTrip - roundTripSpec @(VerKeyVRF MockVRF) cborTrip - roundTripSpec @(CertVRF MockVRF) cborTrip - describe "KES" $ do - describe "CompactSingle" $ do - roundTripSpec @(SignKeyKES (CompactSingleKES Ed25519DSIGN)) cborTrip - roundTripSpec @(VerKeyKES (CompactSingleKES Ed25519DSIGN)) cborTrip - roundTripSpec @(SigKES (CompactSingleKES Ed25519DSIGN)) cborTrip - describe "CompactSum" $ do - roundTripSpec @(SignKeyKES (CompactSum0KES Ed25519DSIGN)) cborTrip - roundTripSpec @(VerKeyKES (CompactSum0KES Ed25519DSIGN)) cborTrip - roundTripSpec @(SigKES (CompactSum0KES Ed25519DSIGN)) cborTrip - roundTripSpec @(SignKeyKES (CompactSum1KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(VerKeyKES (CompactSum1KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(SigKES (CompactSum1KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(SignKeyKES (CompactSum2KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(VerKeyKES (CompactSum2KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(SigKES (CompactSum2KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(SignKeyKES (CompactSum3KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(VerKeyKES (CompactSum3KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(SigKES (CompactSum3KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(SignKeyKES (CompactSum4KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(VerKeyKES (CompactSum4KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(SigKES (CompactSum4KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(SignKeyKES (CompactSum5KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(VerKeyKES (CompactSum5KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(SigKES (CompactSum5KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(SignKeyKES (CompactSum6KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(VerKeyKES (CompactSum6KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(SigKES (CompactSum6KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(SignKeyKES (CompactSum7KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(VerKeyKES (CompactSum7KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(SigKES (CompactSum7KES Ed25519DSIGN Blake2b_256)) cborTrip - describe "Sum" $ do - roundTripSpec @(SignKeyKES (Sum0KES Ed25519DSIGN)) cborTrip - roundTripSpec @(VerKeyKES (Sum0KES Ed25519DSIGN)) cborTrip - roundTripSpec @(SigKES (Sum0KES Ed25519DSIGN)) cborTrip - roundTripSpec @(SignKeyKES (Sum1KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(VerKeyKES (Sum1KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(SigKES (Sum1KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(SignKeyKES (Sum2KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(VerKeyKES (Sum2KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(SigKES (Sum2KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(SignKeyKES (Sum3KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(VerKeyKES (Sum3KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(SigKES (Sum3KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(SignKeyKES (Sum4KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(VerKeyKES (Sum4KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(SigKES (Sum4KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(SignKeyKES (Sum5KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(VerKeyKES (Sum5KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(SigKES (Sum5KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(SignKeyKES (Sum6KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(VerKeyKES (Sum6KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(SigKES (Sum6KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(SignKeyKES (Sum7KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(VerKeyKES (Sum7KES Ed25519DSIGN Blake2b_256)) cborTrip - roundTripSpec @(SigKES (Sum7KES Ed25519DSIGN Blake2b_256)) cborTrip - -- below we also test some tuple roundtripping as well as KES - describe "Simple" $ do - roundTripSpec - @( SignKeyKES (SimpleKES Ed25519DSIGN 1) - , SignKeyKES (SimpleKES Ed25519DSIGN 2) - , SignKeyKES (SimpleKES Ed25519DSIGN 3) - , SignKeyKES (SimpleKES Ed25519DSIGN 4) - , SignKeyKES (SimpleKES Ed25519DSIGN 5) - , SignKeyKES (SimpleKES Ed25519DSIGN 6) - ) - cborTrip - roundTripSpec - @(SignKeyKES (SimpleKES Ed25519DSIGN 7)) - cborTrip - roundTripSpec - @( VerKeyKES (SimpleKES Ed25519DSIGN 1) - , VerKeyKES (SimpleKES Ed25519DSIGN 2) - , VerKeyKES (SimpleKES Ed25519DSIGN 3) - , VerKeyKES (SimpleKES Ed25519DSIGN 4) - , VerKeyKES (SimpleKES Ed25519DSIGN 5) - , VerKeyKES (SimpleKES Ed25519DSIGN 6) - , VerKeyKES (SimpleKES Ed25519DSIGN 7) - ) - cborTrip - roundTripSpec - @( SigKES (SimpleKES Ed25519DSIGN 1) - , SigKES (SimpleKES Ed25519DSIGN 2) - , SigKES (SimpleKES Ed25519DSIGN 3) - , SigKES (SimpleKES Ed25519DSIGN 4) - ) - cborTrip - roundTripSpec - @( SigKES (SimpleKES Ed25519DSIGN 5) - , SigKES (SimpleKES Ed25519DSIGN 6) - , SigKES (SimpleKES Ed25519DSIGN 7) - ) - cborTrip - describe "Mock" $ do - roundTripSpec @(SignKeyKES (MockKES 7)) cborTrip - roundTripSpec @(VerKeyKES (MockKES 7)) cborTrip - roundTripSpec @(SigKES (MockKES 7)) cborTrip - describe "Hash" $ do - roundTripSpec - @( Hash Blake2b_224 () - , Hash Blake2b_256 () - , Hash SHA256 () - , Hash SHA3_256 () - , Hash Keccak256 () - , Hash ShortHash () - ) - cborTrip - describe "EmbedTrip" $ do - forM_ [shelleyProtVer .. maxBound] $ \v -> - describe (show v) $ do - embedTripSpec v v (cborTrip @Word8 @Word16) $ - \n w -> n `shouldBe` fromIntegral w - embedTripSpec v v (cborTrip @Word16 @Word32) $ - \n w -> n `shouldBe` fromIntegral w - embedTripSpec v v (cborTrip @Word32 @Word64) $ - \n w -> n `shouldBe` fromIntegral w - embedTripSpec v v (cborTrip @Word @Natural) $ - \n w -> n `shouldBe` fromIntegral w - embedTripSpec v v (cborTrip @Int8 @Int16) $ - \n w -> n `shouldBe` fromIntegral w - embedTripSpec v v (cborTrip @Int16 @Int32) $ - \n w -> n `shouldBe` fromIntegral w - embedTripSpec v v (cborTrip @Int32 @Int64) $ - \n w -> n `shouldBe` fromIntegral w - embedTripSpec v v (cborTrip @Int @Integer) $ - \n w -> n `shouldBe` fromIntegral w - embedTripSpec v v (cborTrip @Int @(Tagged () Int)) $ - \(Tagged i') i -> i' `shouldBe` i - embedTripSpec v v (cborTrip @(Maybe Word) @[Word]) $ - \xs mx -> listToMaybe xs `shouldBe` mx - embedTripSpec v v (cborTrip @(StrictMaybe Word) @(Maybe Word)) $ - \m sm -> m `shouldBe` strictMaybeToMaybe sm - embedTripSpec v v (cborTrip @(Maybe Word) @(StrictMaybe Word)) $ - \sm m -> sm `shouldBe` maybeToStrictMaybe m - embedTripSpec v v (cborTrip @(Word, Word) @[Word]) $ - \xs (x, y) -> xs `shouldBe` [x, y] - embedTripSpec v v (cborTrip @(Word, Word, Word) @[Word]) $ - \xs (x, y, z) -> xs `shouldBe` [x, y, z] - embedTripSpec v v (cborTrip @(Word, Word, Word, Word) @[Word]) $ - \xs (a, b, c, d) -> xs `shouldBe` [a, b, c, d] - embedTripSpec v v (cborTrip @(Word, Word, Word, Word, Word) @[Word]) $ - \xs (a, b, c, d, e) -> xs `shouldBe` [a, b, c, d, e] - embedTripSpec v v (cborTrip @(Word, Word, Word, Word, Word, Word) @[Word]) $ - \xs (a, b, c, d, e, f) -> xs `shouldBe` [a, b, c, d, e, f] - embedTripSpec v v (cborTrip @(VP.Vector Word) @[Word]) $ - \xs sxs -> xs `shouldBe` VP.toList sxs - embedTripSpec v v (cborTrip @(Seq.Seq Word) @[Word]) $ - \xs sxs -> xs `shouldBe` F.toList sxs - embedTripSpec v v (cborTrip @(SSeq.StrictSeq Word) @[Word]) $ - \xs sxs -> xs `shouldBe` F.toList sxs - when (v < natVersion @9) $ do - -- Starting with version 9 Set is prefixed with tag 258, which prevents it from - -- being deserialized into a list. - embedTripSpec v v (cborTrip @(Set.Set Word) @[Word]) $ - \xs sxs -> xs `shouldBe` Set.toList sxs - embedTripSpec v v (cborTrip @(VMap.VMap VMap.VP VMap.VP Word Int) @(Map.Map Word Int)) $ - \xs sxs -> xs `shouldBe` VMap.toMap sxs - forM_ [minBound .. natVersion @8] $ \v -> - describe (show v) $ do - embedTripSpec v v (cborTrip @Rational @(Integer, Integer)) $ - \(x, y) r -> (x, y) `shouldBe` (numerator r, denominator r) diff --git a/libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/Success.hs b/libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/Success.hs deleted file mode 100644 index 828cd1bca89..00000000000 --- a/libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/Success.hs +++ /dev/null @@ -1,48 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Binary.Success (spec) where - -import Cardano.Ledger.Binary -import Control.Monad (forM_) -import Data.Proxy (Proxy (Proxy)) -import qualified Data.Set as Set -import Test.Cardano.Ledger.Binary.RoundTrip (Trip (..), embedTripExpectation) -import Test.Hspec -import Test.Hspec.QuickCheck -import Test.QuickCheck - --- | Generate a list with unique elements -genIntSet :: Gen (Set.Set Int) -genIntSet = Set.fromList <$> listOf chooseAny - --- | Generate a CBOR encoded list with no duplicates, with and with the set tag -genUniqueListEncoding :: Gen (Set.Set Int, Encoding) -genUniqueListEncoding = do - xsSet <- genIntSet - let xs = Set.toList xsSet - definite = encodeListLen (fromIntegral $ Prelude.length xs) <> foldMap encCBOR xs - indefinite = encodeListLenIndef <> foldMap encCBOR xs <> encodeBreak - (,) xsSet - <$> elements - [ definite - , encodeTag 258 <> definite - , indefinite - , encodeTag 258 <> indefinite - ] - --- | Starting in version 9, check set decoding with and without tag 258 -prop_setWithNoDuplicatesAndTag :: Property -prop_setWithNoDuplicatesAndTag = - forAllBlind genUniqueListEncoding $ - \(s, setEncoder) -> - let trip = Trip id (decCBOR @(Set.Set Int)) (dropCBOR (Proxy @(Set.Set Int))) - in property $ - forM_ [(natVersion @9) .. maxBound] $ - \v -> embedTripExpectation v v trip (\s' _ -> (s' `shouldBe` s)) setEncoder - -spec :: Spec -spec = do - describe "Successes" $ do - prop "encode Set, v9" prop_setWithNoDuplicatesAndTag diff --git a/libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/Vintage/Coders.hs b/libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/Vintage/Coders.hs deleted file mode 100644 index 3add0054ff8..00000000000 --- a/libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/Vintage/Coders.hs +++ /dev/null @@ -1,399 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Binary.Vintage.Coders (spec) where - -import Cardano.Ledger.Binary -import Cardano.Ledger.Binary.Coders -import Cardano.Ledger.Binary.FlatTerm (FlatTerm, toFlatTerm) -import Data.Sequence.Strict (StrictSeq, fromList) -import Data.Text (Text, pack) -import Data.Typeable -import Test.Cardano.Ledger.Binary.RoundTrip (Trip (..), cborTrip, mkTrip, roundTripExpectation) -import Test.Hspec - --- ========================================================================== - -data TT - = A Int - | B Int Bool - | G [Int] - | H (StrictSeq Bool) - deriving (Show, Eq) - -instance DecCBOR TT where - decCBOR = decodeRecordSum "TT" $ - \case - 0 -> (\i -> (2, A i)) <$> decCBOR -- Tag for A is 0 - 1 -> do - -- (,) 3 . B <$> decCBOR <*> decCBOR - i <- decCBOR - b <- decCBOR - pure (3, B i b) -- Tag for B is 1 - 2 -> do - l <- decodeList decCBOR - pure (2, G l) -- Tag for G is 2 - 3 -> do - i <- decodeStrictSeq decCBOR - pure (2, H i) -- Tag for H is 3 - k -> invalidKey k - --- ============================================================================================= --- JUST A NOTE about the (instance EncCBOR a => EncCBOR [a]). This uses the Begin .. End encoding, --- while encodeList uses the list-length encoding. --- encCBOR [5::Int,2] --> [TkListBegin,TkInt 5,TkInt 2,TkBreak]. --- encodeList [5::Int,2] --> [TkListLen 2,TkInt 5,TkInt 2] --- the (instance DecCBOR a => DecCBOR [a]) will ONLY RECOGNIZE THE BEGIN END ENCODING. --- but the decoder (decodeList decCBOR) will recognize both styles of encoding. So in a decoder --- or DecCBOR instance it is always preferable to use (decodeList decCBOR) over (decCBOR) --- For example in the instance above, we could write either of these 2 lines --- 2 -> do { l <- decodeList decCBOR; pure(2,G l) } --- 2 -> do { l <- decCBOR; pure(2,G l) } --- BUT THE FIRST IS MORE GENERAL. The following instance should be replaced --- instance DecCBOR a => DecCBOR [a] -- Defined in ‘cardano-binary-1.5.0:Cardano.Binary.DecCBOR’ - -instance EncCBOR TT where - encCBOR (A i) = encodeListLen 2 <> encodeWord 0 <> encCBOR i - encCBOR (B i b) = encodeListLen 3 <> encodeWord 1 <> encCBOR i <> encCBOR b - encCBOR (G is) = encodeListLen 2 <> encodeWord 2 <> encCBOR is - encCBOR (H bs) = encodeListLen 2 <> encodeWord 3 <> encCBOR bs - --- The Key is that in (G constr tag <@> ...) --- The 'tag' for 'constr' aligns with the Tag in the case match --- in the DecCBOR instance for TT above. - --- =============================================================== - --- =================================== --- Examples - -data Two = Two Int Bool - deriving (Show, Eq) - -decTwo :: Decode ('Closed 'Dense) Two -encTwo :: Two -> Encode ('Closed 'Dense) Two -decTwo = RecD Two To a !> To b - -instance EncCBOR Two where - encCBOR two = encode $ encTwo two - -instance DecCBOR Two where - decCBOR = decode decTwo - --- ============ - -data Test = Test Int Two Integer - deriving (Show, Eq) - -test1 :: Test -test1 = Test 3 (Two 9 True) 33 - -decTestWithGroupForTwo :: Decode ('Closed 'Dense) Test -encTestWithGroupForTwo :: Test -> Encode ('Closed 'Dense) Test -decTestWithGroupForTwo = RecD Test To a !> encTwo b !> To c - -instance EncCBOR Test where - encCBOR = encode . encTestWithGroupForTwo - -instance DecCBOR Test where - decCBOR = decode decTestWithGroupForTwo - --- =========== - -data Three = In Int | N Bool Integer | F Two - deriving (Show, Eq) - -three1, three2, three3 :: Three -three1 = In 7 -three2 = N True 22 -three3 = F (Two 1 False) - --- The following values 'decThree' and 'encThree' are meant to simulate the following instances -{- -instance EncCBOR Three where - encCBOR (In x) = encodeListLen 2 <> encodeWord 0 <> encCBOR x - encCBOR (N b i) = encodeListLen 3 <> encodeWord 1 <> encCBOR b <> encCBOR i - encCBOR (F (Two i b)) = encodeListLen 3 <> encodeWord 2 <> encCBOR i <> encCBOR b - -- even though F has only 1 argument, we inline the two parts of Two, - -- so it appears to have 2 arguments. This mimics CBORGROUP instances - -instance DecCBOR Three where - decCBOR = decodeRecordSum "Three" $ - \case - 0 -> do - x <- decCBOR - pure (2, In x) - 1 -> do - b <- decCBOR - i <- decCBOR - pure (3, N b i) - 2 -> do - i <- decCBOR - b <- decCBOR - pure (3,F (Two i b)) - k -> invalidKey k --} - -decThree :: Word -> Decode 'Open Three -decThree 0 = SumD In Encode 'Open Three -encThree (In x) = Sum In 0 !> To x -encThree (N b i) = Sum N 1 !> To b !> To i -encThree (F t) = Sum F 2 !> encTwo t - -instance DecCBOR Three where - decCBOR = decode (Summands "Three" decThree) - -instance EncCBOR Three where - encCBOR x = encode (encThree x) - --- ================================================================ --- In this test we nest many Records, and flatten out everything - -data Big = Big Int Bool Integer - deriving (Show, Eq) - -data Bigger = Bigger Test Two Big - deriving (Show, Eq) - -bigger :: Bigger -bigger = Bigger (Test 2 (Two 4 True) 99) (Two 7 False) (Big 5 False 102) - --- Note there are 9 individual items, each which fits in one CBOR Token --- So we expect the encoding to have 10 items, 1 prefix and 9 others - -biggerItems :: FlatTerm -biggerItems = toFlatTerm shelleyProtVer (encode (encBigger bigger)) - -decBigger :: Decode ('Closed 'Dense) Bigger -decBigger = - RecD Bigger - Encode ('Closed 'Dense) Bigger -encBigger (Bigger (Test a (Two b c) d) (Two e f) (Big g h i)) = - Rec Bigger - !> (Rec Test !> To a !> (Rec Two !> To b !> To c) !> To d) - !> (Rec Two !> To e !> To f) - !> (Rec Big !> To g !> To h !> To i) - -instance EncCBOR Bigger where - encCBOR = encode . encBigger - -instance DecCBOR Bigger where - decCBOR = decode decBigger - --- ====================================================================== --- There are two ways to write smart encoders and decoders that don't put --- fields with default values in the Encoding, and that reconstruct them --- on the decoding side. These techniques work on record datatypes, i.e. --- those with only one constructor. We will illustrate the two approaches --- in the datatype A - -data M = M Int [Bool] Text - deriving (Show, Eq) - -a0, a1, a2, a3 :: M -a0 = M 0 [] "ABC" -a1 = M 0 [True] "ABC" -a2 = M 9 [] "ABC" -a3 = M 9 [False] "ABC" - --- ========================================================================== --- The virtual constructor stategy pretends there are mutiple constructors --- Even though there is only one. We use invariants about the data to avoid --- encoding some of the values. - -encM :: M -> Encode 'Open M -encM (M 0 [] t) = Sum M 0 !> OmitC 0 !> OmitC [] !> To t -encM (M 0 bs t) = Sum M 1 !> OmitC 0 !> To bs !> To t -encM (M n [] t) = Sum M 2 !> To n !> OmitC [] !> To t -encM (M n bs t) = Sum M 3 !> To n !> To bs !> To t - -decM :: Word -> Decode 'Open M -decM 0 = SumD M Encode ('Closed 'Sparse) M -baz (M n xs t) = Keyed M !> Omit (== 0) (Key 0 (To n)) !> Omit null (Key 1 (To xs)) !> Key 2 (To t) - --- To write an Decoder we must pair a decoder for each field, with a function that updates only --- that field. We use the Field GADT to construct these pairs, and we must write a function, that --- for each field tag, picks out the correct pair. If the Encode and Decode don't agree on how the --- tags correspond to a particular field, things will fail. - -boxM :: Word -> Field M -boxM 0 = field update0 From - where - update0 n (M _ xs t) = M n xs t -boxM 1 = field update1 From - where - update1 xs (M n _ t) = M n xs t -boxM 2 = field update2 From - where - update2 t (M n xs _) = M n xs t -boxM n = invalidField n - --- Finally there is a new constructor for Decode, called SparseKeyed, that decodes field --- keyed sparse objects. The user supplies an initial value and pick function, and a list --- of tags of the required fields. The initial value should have default values and --- any well type value in required fields. If the encode function (baz above) is --- encoded properly the required fields in the initial value should always be over --- overwritten. If it is not written properly, or a bad encoding comes from somewhere --- else, the intial values in the required fields might survive decoding. The list --- of required fields is checked. - -decodeM :: Decode ('Closed 'Dense) M -- Only the field with Key 2 is required -decodeM = SparseKeyed "M" (M 0 [] (pack "a")) boxM [(2, "Stringpart")] - -dualM :: Trip M M -dualM = mkTrip (encode . baz) (decode decodeM) - -roundTripSpec :: (HasCallStack, Show t, Eq t, Typeable t) => String -> Trip t t -> t -> Spec -roundTripSpec name trip val = it name $ roundTripExpectation trip val - --- | Check that a value can be encoded using Coders and decoded using DecCBOR -encodeSpec :: (HasCallStack, Show t, Eq t, DecCBOR t) => String -> Encode w t -> t -> Spec -encodeSpec name enc = roundTripSpec name (mkTrip (const (encode enc)) decCBOR) - -newtype C = C Text - deriving (Show, Eq) - -instance EncCBOR C where - encCBOR (C t) = encCBOR t - -instance DecCBOR C where - decCBOR = C <$> decCBOR - -newtype BB = BB Text - deriving (Show, Eq) - -dualBB :: Trip BB BB -dualBB = mkTrip (\(BB t) -> encCBOR t) (BB <$> decCBOR) - --- Record Type - -data A = ACon Int BB C - deriving (Show, Eq) - -encodeA :: A -> Encode ('Closed 'Dense) A -encodeA (ACon i b c) = Rec ACon !> To i !> E (tripEncoder dualBB) b !> To c - -decodeA :: Decode ('Closed 'Dense) A -decodeA = RecD ACon Encode 'Open N -encodeN (N1 i) = Sum N1 0 !> To i -encodeN (N2 b tf) = Sum N2 1 !> E (tripEncoder dualBB) b !> To tf -encodeN (N3 a) = Sum N3 2 !> To a - -decodeN :: Decode ('Closed 'Dense) N -decodeN = Summands "N" decodeNx - where - decodeNx 0 = SumD N1 To 7) (A 7) - -- Tag for B is 1 - encodeSpec "sB" (Sum B 1 !> To 13 !> To True) (B 13 True) - -- Tag for G is 2 - encodeSpec "sG" (Sum G 2 !> To [3, 4, 5]) (G [3, 4, 5]) - encodeSpec "sGa" (Sum G 2 !> E encCBOR [2, 5]) (G [2, 5]) - -- Tag for H is 3 - let sseq = fromList [False, True] - encodeSpec "sH" (Sum H 3 !> E encCBOR sseq) (H sseq) - -spec :: Spec -spec = - describe "Coders" $ do - describe "Simple Coders" $ do - it "encode Bigger is compact" (length biggerItems `shouldBe` 10) - ttSpec - describe "Encode TT" $ do - encodeSpec "Three1" (encThree three1) three1 - encodeSpec "Three2" (encThree three2) three2 - encodeSpec "Three3" (encThree three3) three3 - encodeSpec "test1" (encTestWithGroupForTwo test1) test1 - encodeSpec "Bigger inlines" (encBigger bigger) bigger - recordTests - describe "Sparse tests" $ do - roundTripSpec "a0" dualM a0 - roundTripSpec "a1" dualM a1 - roundTripSpec "a2" dualM a2 - roundTripSpec "a3" dualM a3 - describe "Virtual Cosntructor tests" $ do - roundTripSpec "a0v" dualMvirtual a0 - roundTripSpec "a1v" dualMvirtual a1 - roundTripSpec "a2v" dualMvirtual a2 - roundTripSpec "a3v" dualMvirtual a3 - describe "Sum tests" $ do - roundTripSpec "N1" dualN (N1 4) - roundTripSpec "N2" dualN (N2 (BB "N2") True) - roundTripSpec "N3" dualN (N3 (ACon 6 (BB "N3") (C "Test"))) diff --git a/libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/Vintage/Drop.hs b/libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/Vintage/Drop.hs deleted file mode 100644 index 881edd294a5..00000000000 --- a/libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/Vintage/Drop.hs +++ /dev/null @@ -1,78 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TemplateHaskell #-} - -module Test.Cardano.Ledger.Binary.Vintage.Drop (tests) where - -import Cardano.Ledger.Binary -import Data.ByteString (ByteString) -import Data.Int (Int32) -import Data.Word (Word64, Word8) -import Hedgehog -import qualified Hedgehog.Gen as Gen -import qualified Hedgehog.Range as Range - -tests :: IO Bool -tests = checkParallel $$(discover) - ------------------------------------------------------------------------------- --- Properties testing whether dropping elements actully removes it or not - -genInt32 :: Gen Int32 -genInt32 = Gen.int32 Range.exponentialBounded - -genBytes :: Gen ByteString -genBytes = Gen.bytes (Range.linear 0 1000) - -genWord8 :: Gen Word8 -genWord8 = Gen.word8 Range.exponentialBounded - -genWord64 :: Gen Word64 -genWord64 = Gen.word64 Range.exponentialBounded - -prop_dropMap :: Property -prop_dropMap = property $ do - mp <- - forAll $ - Gen.map - (Range.constant 0 10) - ( (,) - <$> genInt32 - <*> Gen.list (Range.constant 0 10) genWord8 - ) - let encodedBs = serialize byronProtVer mp - decodeFull byronProtVer encodedBs === Right mp - decodeFullDecoder - byronProtVer - "Drop Test Failed" - (dropMap dropInt32 (dropList dropWord8)) - encodedBs - === Right () - -prop_dropTuple :: Property -prop_dropTuple = property $ do - (set, bs) <- - forAll $ - (,) - <$> Gen.set (Range.constant 0 10) genInt32 - <*> genBytes - let encodedBs = serialize byronProtVer (set, bs) - decodeFull byronProtVer encodedBs === Right (set, bs) - decodeFullDecoder - byronProtVer - "Drop Test Failed" - (dropTuple (dropSet dropInt32) dropBytes) - encodedBs - === Right () - -prop_dropTriple :: Property -prop_dropTriple = property $ do - tri <- forAll $ (,,) <$> genInt32 <*> genWord8 <*> genWord64 - let encodedBs = serialize byronProtVer tri - decodeFull byronProtVer encodedBs === Right tri - decodeFullDecoder - byronProtVer - "Drop Test Failed" - (dropTriple dropInt32 dropWord8 dropWord64) - encodedBs - === Right () diff --git a/libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/Vintage/Failure.hs b/libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/Vintage/Failure.hs deleted file mode 100644 index 558aed117fb..00000000000 --- a/libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/Vintage/Failure.hs +++ /dev/null @@ -1,101 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TemplateHaskell #-} - -module Test.Cardano.Ledger.Binary.Vintage.Failure (tests) where - -import Cardano.Ledger.Binary hiding (Range) -import Data.List.NonEmpty (NonEmpty) -import Data.Set (Set) -import GHC.Stack (HasCallStack, withFrozenCallStack) -import Hedgehog -import qualified Hedgehog.Gen as Gen -import Hedgehog.Internal.Property (failWith) -import qualified Hedgehog.Range as Range -import Numeric.Natural (Natural) - -{- HLINT ignore "Use record patterns" -} - -tests :: IO Bool -tests = checkParallel $$(discover) - ----------------------------------------------------------------------- -------------------------- Generators ----------------------------- - -data VEncoding = VEncoding Version Encoding - -mkByronEncoding :: Encoding -> VEncoding -mkByronEncoding = VEncoding byronProtVer - -instance Show VEncoding where - show (VEncoding v enc) = show (toPlainEncoding v enc) - -genInvalidNonEmptyCBOR :: Gen VEncoding -- NonEmpty Bool -genInvalidNonEmptyCBOR = pure (mkByronEncoding (encCBOR ([] :: [Bool]))) - -genInvalidEitherCBOR :: Gen VEncoding -- Either Bool Bool -genInvalidEitherCBOR = do - b <- Gen.bool - pure (mkByronEncoding (encodeListLen 2 <> encodeWord 3 <> encCBOR b)) - -genNegativeInteger :: Gen Integer -genNegativeInteger = - negate . toInteger <$> Gen.word64 (Range.exponential 1 maxBound) - ----------------------------------------------------------------------- -------------------------- Properties ----------------------------- - -prop_shouldFailNonEmpty :: Property -prop_shouldFailNonEmpty = property $ do - VEncoding v ne <- forAll genInvalidNonEmptyCBOR - assertIsLeft (decode v ne :: Either DecoderError (NonEmpty Bool)) - -prop_shouldFailEither :: Property -prop_shouldFailEither = property $ do - VEncoding v e <- forAll genInvalidEitherCBOR - assertIsLeft (decode v e :: Either DecoderError (Either Bool Bool)) - -prop_shouldFailMaybe :: Property -prop_shouldFailMaybe = property $ do - VEncoding v e <- forAll genInvalidEitherCBOR - assertIsLeft (decode v e :: Either DecoderError (Maybe Bool)) - -prop_shouldFailSetTag :: Property -prop_shouldFailSetTag = property $ do - VEncoding v set <- forAll genInvalidEitherCBOR - let wrongTag = encodeTag 266 - assertIsLeft (decode v (wrongTag <> set) :: Either DecoderError (Set Int)) - -prop_shouldFailSet :: Property -prop_shouldFailSet = property $ do - ls <- forAll $ Gen.list (Range.constant 0 20) (Gen.int Range.constantBounded) - let set = - encodeTag 258 - <> encodeListLen (fromIntegral (length ls + 2)) - <> mconcat (encCBOR <$> (4 : 3 : ls)) - assertIsLeft (decode byronProtVer set :: Either DecoderError (Set Int)) - -prop_shouldFailNegativeNatural :: Property -prop_shouldFailNegativeNatural = property $ do - n <- forAll genNegativeInteger - assertIsLeft (decode byronProtVer (encCBOR n) :: Either DecoderError Natural) - ---------------------------------------------------------------------- -------------------------------- helpers ----------------------------- - -assertIsLeft :: (HasCallStack, MonadTest m) => Either DecoderError b -> m () -assertIsLeft (Right _) = withFrozenCallStack $ failWith Nothing "This should have Left : failed" -assertIsLeft (Left !x) = case x of - DecoderErrorDeserialiseFailure _ (DeserialiseFailure _ str) | not (null str) -> success - DecoderErrorCanonicityViolation _ -> success - DecoderErrorCustom _ _ -> success - DecoderErrorEmptyList _ -> success - DecoderErrorLeftover _ _ -> success - DecoderErrorSizeMismatch _ _ _ -> success - DecoderErrorUnknownTag _ i | i > 0 -> success - _ -> success - -decode :: DecCBOR a => Version -> Encoding -> Either DecoderError a -decode version enc = - let encoded = serialize version enc - in decodeFull version encoded diff --git a/libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/Vintage/RoundTrip.hs b/libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/Vintage/RoundTrip.hs deleted file mode 100644 index fd9f2cb3efb..00000000000 --- a/libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/Vintage/RoundTrip.hs +++ /dev/null @@ -1,114 +0,0 @@ -{-# LANGUAGE NumDecimals #-} -{-# LANGUAGE NumericUnderscores #-} -{-# LANGUAGE TemplateHaskell #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Binary.Vintage.RoundTrip (tests) where - -import Data.Fixed (E9, Fixed (..)) -import Data.Ratio ((%)) -import Hedgehog (Property, Range, checkParallel) -import qualified Hedgehog.Gen as Gen -import qualified Hedgehog.Range as Range -import Test.Cardano.Ledger.Binary.Vintage.Helpers.GoldenRoundTrip ( - roundTripsCBORBuildable, - roundTripsCBORShow, - ) -import Test.Cardano.Prelude (discoverRoundTrip, eachOf) - -tests :: IO Bool -tests = checkParallel $$discoverRoundTrip - -roundTripUnitBi :: Property -roundTripUnitBi = eachOf 1 (pure ()) roundTripsCBORBuildable - -roundTripBoolBi :: Property -roundTripBoolBi = eachOf 10 Gen.bool roundTripsCBORBuildable - --- | Tests up to 'Integer's with multiple machine words using large upper bound -roundTripIntegerBi :: Property -roundTripIntegerBi = - eachOf - 1000 - (Gen.integral (Range.linearFrom 0 (-1e40) 1e40 :: Range Integer)) - roundTripsCBORBuildable - -roundTripWordBi :: Property -roundTripWordBi = - eachOf 1000 (Gen.word Range.constantBounded) roundTripsCBORBuildable - -roundTripWord8Bi :: Property -roundTripWord8Bi = - eachOf 1000 (Gen.word8 Range.constantBounded) roundTripsCBORBuildable - -roundTripWord16Bi :: Property -roundTripWord16Bi = - eachOf 1000 (Gen.word16 Range.constantBounded) roundTripsCBORBuildable - -roundTripWord32Bi :: Property -roundTripWord32Bi = - eachOf 1000 (Gen.word32 Range.constantBounded) roundTripsCBORBuildable - -roundTripWord64Bi :: Property -roundTripWord64Bi = - eachOf 1000 (Gen.word64 Range.constantBounded) roundTripsCBORBuildable - -roundTripIntBi :: Property -roundTripIntBi = - eachOf 1000 (Gen.int Range.constantBounded) roundTripsCBORBuildable - -roundTripFloatBi :: Property -roundTripFloatBi = - eachOf 1000 (Gen.float (Range.constant (-1e12) 1e12)) roundTripsCBORBuildable - -roundTripInt32Bi :: Property -roundTripInt32Bi = - eachOf 1000 (Gen.int32 Range.constantBounded) roundTripsCBORBuildable - -roundTripInt64Bi :: Property -roundTripInt64Bi = - eachOf 1000 (Gen.int64 Range.constantBounded) roundTripsCBORBuildable - -roundTripRatioBi :: Property -roundTripRatioBi = - let r :: Range.Range Integer - r = Range.constant (-1_000_000_000_000_0000_000) 1_000_000_000_000_0000_000 - in eachOf - 1000 - ((%) <$> Gen.integral r <*> Gen.integral r) - roundTripsCBORBuildable - -roundTripNanoBi :: Property -roundTripNanoBi = - eachOf - 1000 - ((MkFixed :: Integer -> Fixed E9) <$> Gen.integral (Range.constantFrom 0 (-1e12) 1e12)) - roundTripsCBORShow - -roundTripMapBi :: Property -roundTripMapBi = - eachOf - 100 - ( Gen.map - (Range.constant 0 50) - ((,) <$> Gen.int Range.constantBounded <*> Gen.int Range.constantBounded) - ) - roundTripsCBORShow - -roundTripSetBi :: Property -roundTripSetBi = - eachOf - 100 - (Gen.set (Range.constant 0 50) (Gen.int Range.constantBounded)) - roundTripsCBORShow - -roundTripByteStringBi :: Property -roundTripByteStringBi = - eachOf 100 (Gen.bytes $ Range.constant 0 100) roundTripsCBORShow - -roundTripTextBi :: Property -roundTripTextBi = - eachOf - 100 - (Gen.text (Range.constant 0 100) Gen.unicode) - roundTripsCBORBuildable diff --git a/libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/Vintage/Serialization.hs b/libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/Vintage/Serialization.hs deleted file mode 100644 index cad070c27a1..00000000000 --- a/libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/Vintage/Serialization.hs +++ /dev/null @@ -1,176 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE NumDecimals #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TemplateHaskell #-} - -module Test.Cardano.Ledger.Binary.Vintage.Serialization (tests) where - -import Cardano.Ledger.Binary hiding (Range) -import qualified Data.ByteString as BS -import qualified Data.ByteString.Lazy as BS.Lazy -import qualified Data.ByteString.Short as BS.Short -import Data.Int (Int32, Int64) -import Data.List.NonEmpty (NonEmpty) -import Data.Map (Map) -import Data.Set (Set) -import Data.Text (Text) -import qualified Data.Time as Time -import qualified Data.Vector as V -import Data.Word (Word16, Word32, Word64, Word8) -import Hedgehog -import qualified Hedgehog.Gen as Gen -import Hedgehog.Gen.QuickCheck (arbitrary) -import qualified Hedgehog.Range as Range -import Test.Cardano.Ledger.Binary.Arbitrary () - -{- HLINT ignore "Redundant <$>" -} - -tests :: IO Bool -tests = checkParallel $$(discover) - -data TestStruct = TestStruct - { tsUnit :: () - , tsBool :: !Bool - , tsInteger :: !Integer - , tsWord :: !Word - , tsWord8 :: !Word8 - , tsWord16 :: !Word16 - , tsWord32 :: !Word32 - , tsWord64 :: !Word64 - , tsInt :: !Int - , tsFloat :: !Float - , tsInt32 :: !Int32 - , tsInt64 :: !Int64 - , tsTupleBoolBool :: !(Bool, Bool) - , tsTupleBoolBoolBool :: !(Bool, Bool, Bool) - , tsTupleBoolBoolBoolBool :: !(Bool, Bool, Bool, Bool) - , tsByteString :: !BS.ByteString - , tsText :: !Text - , tsListBool :: ![Bool] - , tsEitherBoolBool :: !(Either Bool Bool) - , tsNonEmptyBool :: !(NonEmpty Bool) - , tsMaybeBool :: !(Maybe Bool) - , tsMapBoolBool :: !(Map Bool Bool) - , tsSetBool :: !(Set Bool) - , tsVectorBool :: !(V.Vector Bool) - , tsLByteString :: BS.Lazy.ByteString - , tsSByteString :: BS.Short.ShortByteString - , tsUTCTime :: Time.UTCTime - } - deriving (Show, Eq) - -genTestStruct :: Gen TestStruct -genTestStruct = - TestStruct - <$> pure () - <*> Gen.bool - <*> Gen.integral (Range.linearFrom 0 (-1e40) 1e40 :: Range Integer) - <*> Gen.word Range.constantBounded - <*> Gen.word8 Range.constantBounded - <*> Gen.word16 Range.constantBounded - <*> Gen.word32 Range.constantBounded - <*> Gen.word64 Range.constantBounded - <*> Gen.int Range.constantBounded - <*> Gen.float (Range.constant (-1e12) 1e12) - <*> Gen.int32 Range.constantBounded - <*> Gen.int64 Range.constantBounded - <*> ((,) <$> Gen.bool <*> Gen.bool) - <*> ((,,) <$> Gen.bool <*> Gen.bool <*> Gen.bool) - <*> ((,,,) <$> Gen.bool <*> Gen.bool <*> Gen.bool <*> Gen.bool) - <*> Gen.bytes (Range.linear 0 20) - <*> Gen.text (Range.linear 0 20) Gen.unicode - <*> Gen.list (Range.constant 0 10) Gen.bool - <*> Gen.choice [Right <$> Gen.bool, Left <$> Gen.bool] - <*> Gen.nonEmpty (Range.linear 1 20) Gen.bool - <*> Gen.maybe Gen.bool - <*> Gen.map (Range.constant 0 2) ((,) <$> Gen.bool <*> Gen.bool) - <*> Gen.set (Range.constant 0 2) Gen.bool - <*> (V.fromList <$> Gen.list (Range.constant 0 10) Gen.bool) - <*> (BS.Lazy.fromStrict <$> Gen.bytes (Range.linear 0 20)) - <*> (BS.Short.toShort <$> Gen.bytes (Range.linear 0 20)) - <*> arbitrary - -instance EncCBOR TestStruct where - encCBOR ts = - encodeListLen 1 - <> encCBOR (tsUnit ts) - <> encCBOR (tsBool ts) - <> encCBOR (tsInteger ts) - <> encCBOR (tsWord ts) - <> encCBOR (tsWord8 ts) - <> encCBOR (tsWord16 ts) - <> encCBOR (tsWord32 ts) - <> encCBOR (tsWord64 ts) - <> encCBOR (tsInt ts) - <> encCBOR (tsFloat ts) - <> encCBOR (tsInt32 ts) - <> encCBOR (tsInt64 ts) - <> encCBOR (tsTupleBoolBool ts) - <> encCBOR (tsTupleBoolBoolBool ts) - <> encCBOR (tsTupleBoolBoolBoolBool ts) - <> encCBOR (tsByteString ts) - <> encCBOR (tsText ts) - <> encCBOR (tsListBool ts) - <> encCBOR (tsEitherBoolBool ts) - <> encCBOR (tsNonEmptyBool ts) - <> encCBOR (tsMaybeBool ts) - <> encCBOR (tsMapBoolBool ts) - <> encCBOR (tsSetBool ts) - <> encCBOR (tsVectorBool ts) - <> encCBOR (tsLByteString ts) - <> encCBOR (tsSByteString ts) - <> encCBOR (tsUTCTime ts) - -instance DecCBOR TestStruct where - decCBOR = do - decodeListLenOf 1 - TestStruct - <$> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - <*> decCBOR - -prop_roundTripSerialize' :: Property -prop_roundTripSerialize' = property $ do - ts <- forAll genTestStruct - (unsafeDeserialize' byronProtVer . serialize' byronProtVer $ ts) === ts - -prop_roundTripEncodeNestedCbor :: Property -prop_roundTripEncodeNestedCbor = property $ do - ts <- forAll genTestStruct - let encoded = serialize byronProtVer . encodeNestedCbor $ ts - decodeFullDecoder byronProtVer "" decodeNestedCbor encoded === Right ts - -prop_decodeContainerSkelWithReplicate :: Property -prop_decodeContainerSkelWithReplicate = property $ - assert $ case decode vec of - Right _ -> True - _ -> False - where - decode :: Encoding -> Either DecoderError (V.Vector ()) - decode enc = decodeFull byronProtVer (serialize byronProtVer enc) - - vec = encodeListLen 4097 <> mconcat (replicate 4097 encodeNull) diff --git a/libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/Vintage/SizeBounds.hs b/libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/Vintage/SizeBounds.hs deleted file mode 100644 index afe09627f6e..00000000000 --- a/libs/cardano-ledger-binary/test/Test/Cardano/Ledger/Binary/Vintage/SizeBounds.hs +++ /dev/null @@ -1,192 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Binary.Vintage.SizeBounds (tests) where - -import Cardano.Ledger.Binary -import qualified Data.ByteString as BS -import qualified Data.ByteString.Lazy as LBS -import qualified Data.Map as M -import Data.Proxy (Proxy (Proxy)) -import Data.Tagged (Tagged (..)) -import qualified Data.Text as T -import Data.Typeable (typeRep) -import Data.Word (Word32, Word8) -import Hedgehog (Gen, Group (..), checkParallel) -import qualified Hedgehog.Gen as Gen -import qualified Hedgehog.Range as Range -import Test.Cardano.Ledger.Binary.Vintage.Helpers - -tests :: IO Bool -tests = - let listOf :: Gen a -> Gen [a] - listOf = Gen.list (Range.linear 0 300) - in checkParallel $ - Group - "Encoded size bounds for core types." - [ ("()", sizeTest $ scfg {gen = pure (), precise = True}) - , ("Bool", sizeTest $ cfg {gen = Gen.bool, precise = True}) - , ("Word", sizeTest $ cfg {gen = Gen.word Range.exponentialBounded}) - , ("Word8", sizeTest $ cfg {gen = Gen.word8 Range.exponentialBounded}) - , ("Word16", sizeTest $ cfg {gen = Gen.word16 Range.exponentialBounded}) - , ("Word32", sizeTest $ cfg {gen = Gen.word32 Range.exponentialBounded}) - , ("Word64", sizeTest $ cfg {gen = Gen.word64 Range.exponentialBounded}) - , ("Int", sizeTest $ cfg {gen = Gen.int Range.exponentialBounded}) - , - ( "Int (precision)" - , sizeTest $ - cfg - { gen = Gen.int Range.exponentialBounded - , computedCtx = \x -> - M.fromList - [ - ( typeRep (Proxy @Int) - , SizeConstant $ fromIntegral (withWordSize x :: Integer) - ) - ] - , precise = True - } - ) - , - ( "Float" - , sizeTest $ - cfg {gen = Gen.float (Range.exponentialFloat (-1000000) 1000000)} - ) - , ("Int32", sizeTest $ cfg {gen = Gen.int32 Range.exponentialBounded}) - , ("Int64", sizeTest $ cfg {gen = Gen.int64 Range.exponentialBounded}) - , - ( "Tagged () Word32" - , sizeTest $ - (scfg @(Tagged () Word32)) - { gen = Tagged <$> Gen.word32 Range.exponentialBounded - } - ) - , - ( "(Bool, Bool)" - , sizeTest $ - scfg {gen = (,) <$> Gen.bool <*> Gen.bool, precise = True} - ) - , - ( "(Bool, Bool, Bool)" - , sizeTest $ - scfg - { gen = (,,) <$> Gen.bool <*> Gen.bool <*> Gen.bool - , precise = True - } - ) - , - ( "(Bool, Bool, Bool, Bool)" - , sizeTest $ - scfg - { gen = (,,,) <$> Gen.bool <*> Gen.bool <*> Gen.bool <*> Gen.bool - , precise = True - } - ) - , - ( "ByteString" - , sizeTest $ - (scfg @BS.ByteString) - { debug = show . (BS.unpack :: BS.ByteString -> [Word8]) - , gen = Gen.bytes (Range.linear 0 1000) - , computedCtx = \bs -> - M.fromList - [ - ( typeRep (Proxy @(LengthOf BS.ByteString)) - , SizeConstant $ fromIntegral $ BS.length bs - ) - ] - , precise = True - } - ) - , - ( "Lazy.ByteString" - , sizeTest $ - (scfg @LBS.ByteString) - { debug = show . (LBS.unpack :: LBS.ByteString -> [Word8]) - , computedCtx = \bs -> - M.fromList - [ - ( typeRep (Proxy @(LengthOf LBS.ByteString)) - , SizeConstant $ fromIntegral $ LBS.length bs - ) - ] - , gen = LBS.fromStrict <$> Gen.bytes (Range.linear 0 1000) - , precise = True - } - ) - , - ( "Text" - , sizeTest $ - cfg - { gen = Gen.text (Range.linear 0 1000) Gen.latin1 - , computedCtx = \bs -> - M.fromList - [ - ( typeRep (Proxy @(LengthOf T.Text)) - , SizeConstant $ fromIntegral $ T.length bs - ) - ] - } - ) - , - ( "Text 2" - , sizeTest $ - cfg - { gen = Gen.text (Range.linear 0 1000) Gen.unicode - , computedCtx = \bs -> - M.fromList - [ - ( typeRep (Proxy @(LengthOf T.Text)) - , SizeConstant $ fromIntegral $ T.length bs - ) - ] - } - ) - , - ( "[Bool]" - , sizeTest $ - scfg - { gen = listOf Gen.bool - , computedCtx = \bs -> - M.fromList - [ - ( typeRep (Proxy @(LengthOf [Bool])) - , SizeConstant $ fromIntegral $ length bs - ) - ] - , precise = True - } - ) - , - ( "NonEmpty Bool" - , sizeTest $ - scfg - { gen = listOf Gen.bool - , computedCtx = \bs -> - M.fromList - [ - ( typeRep (Proxy @(LengthOf [Bool])) - , SizeConstant $ fromIntegral $ length bs - ) - ] - , precise = True - } - ) - , - ( "Either Bool Bool" - , sizeTest $ - (scfg @(Either Bool Bool)) - { gen = Left <$> Gen.bool - , precise = True - } - ) - , - ( "Either Bool Bool" - , sizeTest $ - (scfg @(Either Bool Bool)) - { gen = Right <$> Gen.bool - , precise = True - } - ) - , ("Maybe Bool", sizeTest $ cfg {gen = Gen.bool, precise = True}) - ] diff --git a/libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/Arbitrary.hs b/libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/Arbitrary.hs deleted file mode 100644 index 40530bd4cf1..00000000000 --- a/libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/Arbitrary.hs +++ /dev/null @@ -1,239 +0,0 @@ -{-# LANGUAGE CPP #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Binary.Arbitrary ( - genVersion, - genByteArray, - genByteString, - genLazyByteString, - genShortByteString, -) -where - -import Cardano.Crypto.DSIGN.Class hiding (Signable) -import Cardano.Crypto.Util -import Cardano.Crypto.VRF.Class -import Cardano.Ledger.Binary.Version -import Cardano.Slotting.Block (BlockNo (..)) -import Cardano.Slotting.Slot (EpochSize (..), WithOrigin (..)) -import Cardano.Slotting.Time (SystemStart (..)) -import Codec.CBOR.ByteArray (ByteArray (..)) -import Codec.CBOR.ByteArray.Sliced (SlicedByteArray (..)) -import Codec.CBOR.Term -import qualified Data.ByteString as BS (ByteString, pack, unpack) -import qualified Data.ByteString.Lazy as BSL (ByteString, fromChunks, fromStrict, toChunks) -import Numeric.Half -#if MIN_VERSION_bytestring(0,11,1) -import qualified Data.ByteString.Short as SBS -#else -import qualified Data.ByteString.Short.Internal as SBS -#endif -import qualified Data.Foldable as F -import Data.IP (IPv4, IPv6, toIPv4w, toIPv6w) -import Data.Maybe.Strict -import qualified Data.Primitive.ByteArray as Prim (ByteArray (..)) -import Data.Proxy (Proxy (..)) -import qualified Data.Sequence.Strict as SSeq -import qualified Data.Text as T -import qualified Data.Text.Lazy as TL -import qualified Data.VMap as VMap -import qualified Data.Vector.Primitive as VP -import Data.Word -import GHC.Stack -import System.Random.Stateful hiding (genByteString, genShortByteString) -import Test.Cardano.Ledger.Binary.Random (QC (QC)) -import Test.Cardano.Slotting.Arbitrary () -import Test.Crypto.Hash () -import Test.Crypto.KES () -import Test.Crypto.VRF () -import Test.QuickCheck -import Test.QuickCheck.Instances () - -firstUnreservedTag :: Word64 -firstUnreservedTag = 6 - --- | Simple values that are either unassigned or don't have a specialized type already -simple :: [Word8] -simple = [0 .. 19] ++ [23] ++ [32 ..] - -instance Arbitrary Term where - arbitrary = - oneof - [ TInt <$> choose (minBound, maxBound) - , TInteger - <$> oneof - [ choose (toInteger (maxBound :: Int) + 1, toInteger (maxBound :: Word64)) - , choose (negate (toInteger (maxBound :: Word64)), toInteger (minBound :: Int) - 1) - ] - , TBytes <$> (genByteString . getNonNegative =<< arbitrary) - , TBytesI <$> (genLazyByteString . getNonNegative =<< arbitrary) - , TString . T.pack <$> arbitrary - , TStringI . TL.pack <$> arbitrary - , TList <$> listOf smallerTerm - , TListI <$> listOf smallerTerm - , TMap <$> listOf smallerTerm - , TMapI <$> listOf smallerTerm - , TTagged <$> choose (firstUnreservedTag, maxBound :: Word64) <*> smallerTerm - , TBool <$> arbitrary - , pure TNull - , TSimple <$> elements simple - , THalf <$> genHalf - , TFloat <$> arbitrary - , TDouble <$> arbitrary - ] - where - smallerTerm :: Arbitrary a => Gen a - smallerTerm = scale (`div` 5) arbitrary - - -- Shrinker was shamelessly stolen from cbor package. - shrink (TInt n) = [TInt n' | n' <- shrink n] - shrink (TInteger n) = [TInteger n' | n' <- shrink n] - shrink (TBytes ws) = [TBytes (BS.pack ws') | ws' <- shrink (BS.unpack ws)] - shrink (TBytesI wss) = - [ TBytesI (BSL.fromChunks (map BS.pack wss')) - | wss' <- shrink (map BS.unpack (BSL.toChunks wss)) - ] - shrink (TString cs) = [TString (T.pack cs') | cs' <- shrink (T.unpack cs)] - shrink (TStringI css) = - [ TStringI (TL.fromChunks (map T.pack css')) - | css' <- shrink (map T.unpack (TL.toChunks css)) - ] - shrink (TList xs@[x]) = x : [TList xs' | xs' <- shrink xs] - shrink (TList xs) = [TList xs' | xs' <- shrink xs] - shrink (TListI xs@[x]) = x : [TListI xs' | xs' <- shrink xs] - shrink (TListI xs) = [TListI xs' | xs' <- shrink xs] - shrink (TMap xys@[(x, y)]) = x : y : [TMap xys' | xys' <- shrink xys] - shrink (TMap xys) = [TMap xys' | xys' <- shrink xys] - shrink (TMapI xys@[(x, y)]) = x : y : [TMapI xys' | xys' <- shrink xys] - shrink (TMapI xys) = [TMapI xys' | xys' <- shrink xys] - shrink (TTagged w t) = - t : [TTagged w' t' | (w', t') <- shrink (w, t), fromIntegral w' >= firstUnreservedTag] - shrink (TBool _) = [] - shrink TNull = [] - shrink (TSimple w) = [TSimple w' | w' <- shrink w, w `elem` simple] - shrink (THalf _f) = [] - shrink (TFloat f) = [TFloat f' | f' <- shrink f] - shrink (TDouble f) = [TDouble f' | f' <- shrink f] - -genHalf :: Gen Float -genHalf = do - half <- Half <$> arbitrary - if isInfinite half || isDenormalized half || isNaN half - then genHalf - else pure $ fromHalf half - -deriving instance Arbitrary ByteArray - -instance Arbitrary SlicedByteArray where - arbitrary = do - NonNegative off <- arbitrary - Positive count <- arbitrary - NonNegative slack <- arbitrary - let len = off + count + slack - ba <- genByteArray len - pure $ SBA ba off count - -instance Arbitrary IPv4 where - arbitrary = toIPv4w <$> arbitrary - -instance Arbitrary IPv6 where - arbitrary = do - t <- (,,,) <$> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary - pure $ toIPv6w t - -instance (VP.Prim e, Arbitrary e) => Arbitrary (VP.Vector e) where - arbitrary = VP.fromList <$> arbitrary - shrink = fmap VP.fromList . shrink . VP.toList - -instance Arbitrary e => Arbitrary (SSeq.StrictSeq e) where - arbitrary = SSeq.fromList <$> arbitrary - shrink = fmap SSeq.fromList . shrink . F.toList - -instance Arbitrary e => Arbitrary (StrictMaybe e) where - arbitrary = maybeToStrictMaybe <$> arbitrary - shrink = fmap maybeToStrictMaybe . shrink . strictMaybeToMaybe - -instance - (Ord k, VMap.Vector kv k, VMap.Vector vv v, Arbitrary k, Arbitrary v) => - Arbitrary (VMap.VMap kv vv k v) - where - arbitrary = VMap.fromMap <$> arbitrary - shrink = fmap VMap.fromList . shrink . VMap.toList - -instance DSIGNAlgorithm v => Arbitrary (VerKeyDSIGN v) where - arbitrary = deriveVerKeyDSIGN <$> arbitrary - -errorInvalidSize :: HasCallStack => Int -> Maybe a -> Gen a -errorInvalidSize n = maybe (error $ "Impossible: Invalid size " ++ show n) pure - -instance DSIGNAlgorithm v => Arbitrary (SignKeyDSIGN v) where - arbitrary = do - let n = fromIntegral (sizeSignKeyDSIGN (Proxy @v)) - bs <- genByteString n - errorInvalidSize n $ rawDeserialiseSignKeyDSIGN bs - -instance DSIGNAlgorithm v => Arbitrary (SigDSIGN v) where - arbitrary = do - let n = fromIntegral (sizeSigDSIGN (Proxy @v)) - bs <- genByteString n - errorInvalidSize n $ rawDeserialiseSigDSIGN bs - -instance DSIGNAlgorithm v => Arbitrary (SignedDSIGN v a) where - arbitrary = SignedDSIGN <$> arbitrary - -instance - (ContextVRF v ~ (), Signable v ~ SignableRepresentation, VRFAlgorithm v) => - Arbitrary (CertifiedVRF v a) - where - arbitrary = CertifiedVRF <$> arbitrary <*> genCertVRF - where - genCertVRF :: Gen (CertVRF v) - genCertVRF = arbitrary - -instance Arbitrary t => Arbitrary (WithOrigin t) where - arbitrary = frequency [(20, pure Origin), (80, At <$> arbitrary)] - shrink = \case - Origin -> [] - At x -> Origin : map At (shrink x) - -deriving instance Arbitrary EpochSize - -deriving instance Arbitrary SystemStart - -deriving instance Arbitrary BlockNo - -instance Arbitrary Version where - arbitrary = genVersion minBound maxBound - -genVersion :: HasCallStack => Version -> Version -> Gen Version -genVersion minVersion maxVersion = - genVersion64 (getVersion64 minVersion) (getVersion64 maxVersion) - where - genVersion64 minVersion64 maxVersion64 = do - v64 <- choose (minVersion64, maxVersion64) - case mkVersion64 v64 of - Nothing -> error $ "Impossible: Invalid version generated: " ++ show v64 - Just v -> pure v - -genByteString :: Int -> Gen BS.ByteString -genByteString n = uniformByteStringM (fromIntegral n) QC - -genLazyByteString :: Int -> Gen BSL.ByteString -genLazyByteString n = BSL.fromStrict <$> genByteString n - -genShortByteString :: Int -> Gen SBS.ShortByteString -genShortByteString n = uniformShortByteString (fromIntegral n) QC - -genByteArray :: Int -> Gen Prim.ByteArray -genByteArray n = do - sbs <- genShortByteString n - case sbs of - SBS.SBS ba -> pure (Prim.ByteArray ba) diff --git a/libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/Cddl.hs b/libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/Cddl.hs deleted file mode 100644 index aa854b6a4cb..00000000000 --- a/libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/Cddl.hs +++ /dev/null @@ -1,306 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Binary.Cddl ( - cddlRoundTripCborSpec, - cddlRoundTripExpectation, - cddlRoundTripAnnCborSpec, - cddlRoundTripAnnExpectation, - - -- * Helper functions and types - Cddl (..), - Cbor (..), - DiagCbor (..), - CddlData (..), - CddlVarFile (..), - beforeAllCddlFile, - withCddlVarFile, - genCddlDiagCbor, - diagCborToCbor, - validateCddlConformance, - readProcessNoFailure, - usingTempFile, -) where - -import Cardano.Ledger.Binary -import Control.Monad (forM_) -import qualified Data.ByteString.Lazy as BSL -import qualified Data.ByteString.Lazy.Char8 as BSL8 -import qualified Data.Text as T -import qualified Data.Text.Encoding as T -import Data.Typeable -import System.IO (hClose) -import System.Process.Typed ( - ExitCode (..), - ProcessConfig, - byteStringInput, - proc, - readProcess, - setStdin, - ) -import Test.Cardano.Ledger.Binary.RoundTrip -import Test.Hspec -import UnliftIO.Temporary (withTempFile) - --- | Contents of CDDL Spec -newtype Cddl = Cddl {unCddl :: BSL.ByteString} - --- | Binary form of CBOR data. -newtype Cbor = Cbor {unCbor :: BSL.ByteString} - --- | Human readable CBOR, which was randomly generated. -newtype DiagCbor = DiagCbor {unDiagCbor :: BSL.ByteString} - -data CddlVarFile = CddlVarFile - { cddlVarFilePath :: !FilePath - -- ^ File that contains the Cddl data included in this type - , cddlVarName :: !T.Text - -- ^ Name of the variable being tested - , cddlVarData :: !Cddl - -- ^ Full CDDL spec with @output=`cddlVarName`@ prefix - , cddlVarDiagCbor :: ![DiagCbor] - -- ^ Generated CBOR data from the above CDDL spec - } - -data CddlData = CddlData - { cddlData :: !Cddl - , cddlNumExamples :: !Int - -- ^ Number of random cases to generate - } - --- | Given an action that produces CDDL content, we combine it all into `CddlData` and --- make it available to every subsequent Spec. Important point about this is that the --- supplied action will only be executed once. -beforeAllCddlFile :: - HasCallStack => - -- | Number of random cases to generate - Int -> - -- | Action that produces a list of valid CDDL specs - IO [BSL.ByteString] -> - SpecWith CddlData -> - Spec -beforeAllCddlFile numExamples getCddlFiles = beforeAll $ do - cddls <- getCddlFiles - -- combine all files into one large strict bytestring, while converting it back to the - -- lazy one for later usage. This is done to reduce overhead of a lazy bytestring - let cddl = Cddl $ BSL.fromStrict $ BSL.toStrict $ mconcat cddls - pure $ - CddlData - { cddlData = cddl - , cddlNumExamples = numExamples - } - --- | Given a `CddlData` and a CDDL variable name present in the supplied data, generate a --- `CddlVarFile`, that contains random data for that variable. -withCddlVarFile :: - HasCallStack => - -- | Name of the variable that will be tested - T.Text -> - -- | CddlData that will be used for random data generation - CddlData -> - -- | Action that can use the random data for roundtrip and conformance testing - (CddlVarFile -> IO b) -> - IO b -withCddlVarFile varName CddlData {..} roundTripTest = do - let suffix = T.encodeUtf8 $ "output = " <> varName <> "\n" - varData = Cddl (BSL.fromStrict suffix <> unCddl cddlData) - diagCbor <- genCddlDiagCbor cddlNumExamples varData - usingTempFile (unCddl varData) $ \filePath -> - roundTripTest $ - CddlVarFile - { cddlVarFilePath = filePath - , cddlVarName = varName - , cddlVarData = varData - , cddlVarDiagCbor = diagCbor - } - --- | Using the supplied `CddlData` inside the `SpecWith` generate random data and run the --- `cddlRoundTripExpectation` for the supplied CDDL variable -cddlRoundTripCborSpec :: - forall a. - (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => - -- | Serialization version - Version -> - -- | Name of the CDDL variable to test - T.Text -> - SpecWith CddlData -cddlRoundTripCborSpec version varName = - let lbl = label $ Proxy @a - in it (T.unpack $ varName <> ": " <> lbl) $ \cddlData -> - withCddlVarFile varName cddlData $ - cddlRoundTripExpectation lbl version version (cborTrip @a) - --- | Verify that random data generated is: --- --- * Decoded successfully into a Haskell type using the decoder in `Trip` and the version --- supplied --- --- * When reencoded conforms to the CDDL spec and produces valid `FlatTerm` --- --- * When decoded again from the bytes produced by the encoder matches the type exactly --- when it was decoded from random bytes -cddlRoundTripExpectation :: - (HasCallStack, Show a, Eq a) => - T.Text -> - -- | Version to use for decoding - Version -> - -- | Version to use for encoding - Version -> - -- | Decode/encoder that needs tsting - Trip a a -> - -- | Randomly generated data and the CDDL spec - CddlVarFile -> - Expectation -cddlRoundTripExpectation lbl encVersion decVersion trip@Trip {tripDecoder} CddlVarFile {..} = do - forM_ cddlVarDiagCbor $ \diagCbor -> do - Cbor cbor <- diagCborToCbor diagCbor - let mkFailure encoding = - RoundTripFailure encVersion decVersion encoding cbor - case decodeFullDecoder decVersion lbl tripDecoder cbor of - Left decErr -> - cddlFailure diagCbor $ mkFailure mempty Nothing Nothing Nothing (Just decErr) - Right val -> - case embedTripLabelExtra lbl encVersion decVersion trip val of - Right (val', encoding, encodedBytes) -> - validateCddlConformance cddlVarFilePath encodedBytes >>= \case - Left confErr -> - cddlFailure diagCbor $ - mkFailure encoding (Just encodedBytes) (Just confErr) Nothing Nothing - Right _bsl -> val' `shouldBe` val - Left embedErr -> cddlFailure diagCbor embedErr - -cddlFailure :: HasCallStack => DiagCbor -> RoundTripFailure -> Expectation -cddlFailure diagCbor err = - expectationFailure $ - unlines - [ "Failed to Cddl RoundTrip verification:" - , show err - , "Generated diag: " <> BSL8.unpack (unDiagCbor diagCbor) - ] - --- | Similar to `cddlRoundTripCborSpec`, but for Annotator. -cddlRoundTripAnnCborSpec :: - forall a. - (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => - -- | Serialization version - Version -> - -- | Cddl variable name - T.Text -> - SpecWith CddlData -cddlRoundTripAnnCborSpec version varName = - let lbl = label (Proxy @(Annotator a)) - in it (T.unpack $ varName <> ": " <> lbl) $ \cddlData -> - withCddlVarFile varName cddlData $ - cddlRoundTripAnnExpectation lbl version version (cborTrip @a) - --- | Same as `cddlRoundTripExpectation`, but works for decoders that are wrapped into --- `Annotator` -cddlRoundTripAnnExpectation :: - forall a. - (HasCallStack, Show a, Eq a) => - T.Text -> - Version -> - Version -> - Trip a (Annotator a) -> - CddlVarFile -> - Expectation -cddlRoundTripAnnExpectation lbl encVersion decVersion Trip {..} CddlVarFile {..} = do - forM_ cddlVarDiagCbor $ \diagCbor -> do - Cbor cbor <- diagCborToCbor diagCbor - let mkFailure encoding = - RoundTripFailure encVersion decVersion encoding cbor - case decodeFullAnnotator decVersion lbl tripDecoder cbor of - Left decErr -> - cddlFailure diagCbor $ mkFailure mempty Nothing Nothing Nothing (Just decErr) - Right val -> - let encoding = toPlainEncoding encVersion $ tripEncoder val - in case decodeAnnExtra lbl encVersion decVersion tripDecoder encoding of - Right (val', encodedBytes) -> - validateCddlConformance cddlVarFilePath encodedBytes >>= \case - Left confErr -> - cddlFailure diagCbor $ - mkFailure encoding (Just encodedBytes) (Just confErr) Nothing Nothing - Right _bsl -> val' `shouldBe` val - Left embedErr -> cddlFailure diagCbor embedErr - -genCddlDiagCbor :: HasCallStack => Int -> Cddl -> IO [DiagCbor] -genCddlDiagCbor numCases = - fmap (either error (map DiagCbor . BSL8.lines)) - . readProcessNoFailure "generating examples" (proc "cddl" ["-", "generate", show numCases]) - . unCddl - --- | Convert randomly generated Cbor in special Diag (human readable) format to binary CBOR --- format -diagCborToCbor :: HasCallStack => DiagCbor -> IO Cbor -diagCborToCbor = - fmap (either error Cbor) - . readProcessNoFailure "converting cbor diagnostic notation to bytes" (proc "diag2cbor.rb" ["-"]) - . unDiagCbor - --- | Run a @cddl@ process and validate that encoded data is in confomrance with the --- supplied CDDL spec -validateCddlConformance :: - -- | File path to the file with CDDL spec - FilePath -> - -- | CBOR encoded data that should conform with CDDL spec - BSL8.ByteString -> - IO (Either String BSL.ByteString) -validateCddlConformance filePath = - readProcessNoFailure "validating cddl conformace" (proc "cddl" [filePath, "validate", "-"]) - --- | Run a process with `readProcess` and return `Left` on failure, which will contain the --- output produced on @stderr@. Accepts lazy bytestring as input for the spawned --- process. In case when a process exits successfuly, the output is returned on the --- `Right`. Upon a successful exit, @stderr@ output is ignored to avoid polluting test --- suite output with copious amounts of warnings. -readProcessNoFailure :: - String -> - ProcessConfig stdin stdout stderr -> - BSL.ByteString -> - IO (Either String BSL.ByteString) -readProcessNoFailure procDescr procConfig input = - readProcess (setStdin (byteStringInput input) procConfig) >>= \case - (ExitSuccess, stdOut, "") -> pure $ Right stdOut - (ExitSuccess, stdOut, _stdErr) -> do - -- Ideally we would only want to use relevant CDDL for particular test, which would - -- result in stdErr to be empty, but currently there are many warnings about unused - -- CDDL rules: - -- - -- putStrLn $ - -- unlines - -- [ "Process for " <> procDescr - -- , "received some output on stderr" - -- , show procConfig - -- , "StdErr output:" - -- , bslToString stdErr - -- ] - pure $ Right stdOut - (ExitFailure exitCode, _, stdErr) -> - pure $ - Left $ - unlines - [ "Process for " <> procDescr - , show procConfig - , "failed with an error code: " <> show exitCode - , "StdErr output:" - , bslToString stdErr - ] - where - bslToString = T.unpack . T.decodeUtf8 . BSL.toStrict - --- | Write binary data to a temporary file and apply an action to a temporary file name --- path that contains that data. File is guaranteed to be alive only until the supplied --- action is active, therefore make sure not to return the name for the temporary file --- name. -usingTempFile :: BSL.ByteString -> (FilePath -> IO a) -> IO a -usingTempFile bytes action = - withTempFile "." "tmp" $ \fileName h -> do - BSL.hPut h bytes - hClose h - action fileName diff --git a/libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/Plain/Golden.hs b/libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/Plain/Golden.hs deleted file mode 100644 index f6bfba53671..00000000000 --- a/libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/Plain/Golden.hs +++ /dev/null @@ -1,95 +0,0 @@ -{-# LANGUAGE GADTs #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} - -module Test.Cardano.Ledger.Binary.Plain.Golden ( - Enc (E, Ev, Em), - DiffView (..), - expectGoldenEncoding, - expectGoldenToCBOR, - expectGoldenEncBytes, - expectGoldenEncLazyBytes, - expectGoldenEncHexBytes, -) where - -import Cardano.Ledger.Binary (EncCBOR (encCBOR), Version, toPlainEncoding) -import Cardano.Ledger.Binary.Plain -import qualified Data.ByteString as BS -import Data.ByteString.Base16 as BS16 -import qualified Data.ByteString.Lazy as BSL -import Test.Cardano.Ledger.Binary.TreeDiff -import Test.Hspec - -data Enc where - E :: ToCBOR a => a -> Enc - Ev :: EncCBOR a => Version -> a -> Enc - Em :: [Enc] -> Enc - (:<>:) :: Enc -> Enc -> Enc - -instance ToCBOR Enc where - toCBOR (E s) = toCBOR s - toCBOR (Ev v s) = toPlainEncoding v $ encCBOR s - toCBOR (Em m) = foldMap toCBOR m - toCBOR (a :<>: b) = toCBOR a <> toCBOR b - -instance Semigroup Enc where - (<>) = (:<>:) - -instance Monoid Enc where - mempty = E (mempty :: Encoding) - --- | Indicator of the format in which the diff should be displayed. -data DiffView - = -- | TreeDiff bytes as CBOR Terms - DiffCBOR - | -- | TreeDiff bytes as Base64 encoded strings - DiffHex - | -- | TreeDiff will be shown on raw bytes. - DiffRaw - | -- | Let hspec handle the diffing - DiffAuto - -expectGoldenEncoding :: - HasCallStack => (a -> Encoding) -> (b -> Encoding) -> DiffView -> a -> b -> Expectation -expectGoldenEncoding encActual encExpected viewDiff actual expected = - expectGoldenEncBytes viewDiff (encActual actual) (serialize' (encExpected expected)) - -expectGoldenToCBOR :: - (HasCallStack, ToCBOR a, ToCBOR b) => DiffView -> a -> b -> Expectation -expectGoldenToCBOR = expectGoldenEncoding toCBOR toCBOR - -expectGoldenEncBytes :: - (HasCallStack, ToCBOR a) => DiffView -> a -> BS.ByteString -> Expectation -expectGoldenEncBytes viewDiff actual expectedBytes = do - diffAs $ expectExprEqualWithMessage "Encoding did not match expectation" - -- ensure that it is also valid CBOR - case decodeFull' actualBytes of - Left err -> error $ "Type was encoded sucessfully, but as invalid CBOR: " ++ show err - Right (_ :: Term) -> pure () - where - actualBytes = serialize' (toCBOR actual) - diffAs :: - HasCallStack => - (forall t. (HasCallStack, Eq t, ToExpr t) => t -> t -> Expectation) -> - Expectation - diffAs f = - case viewDiff of - DiffCBOR -> - f (CBORBytes actualBytes) (CBORBytes expectedBytes) - DiffHex -> - f (HexBytes actualBytes) (HexBytes expectedBytes) - DiffRaw -> f actualBytes expectedBytes - DiffAuto -> actualBytes `shouldBe` expectedBytes - -expectGoldenEncLazyBytes :: - (HasCallStack, ToCBOR a) => DiffView -> a -> BSL.ByteString -> Expectation -expectGoldenEncLazyBytes viewDiff actual = expectGoldenEncBytes viewDiff actual . BSL.toStrict - -expectGoldenEncHexBytes :: - (HasCallStack, ToCBOR a) => DiffView -> a -> BS.ByteString -> Expectation -expectGoldenEncHexBytes viewDiff actual hexBytes = do - case BS16.decode hexBytes of - Left err -> expectationFailure $ "Unexpected failure during Base16 decoding: " ++ err - Right expectedBytes -> - expectGoldenEncBytes viewDiff actual expectedBytes diff --git a/libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/Plain/RoundTrip.hs b/libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/Plain/RoundTrip.hs deleted file mode 100644 index e91bd34c439..00000000000 --- a/libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/Plain/RoundTrip.hs +++ /dev/null @@ -1,244 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - --- | Defines reusable abstractions for testing RoundTrip properties of plain encoders/decoders -module Test.Cardano.Ledger.Binary.Plain.RoundTrip ( - roundTripSpec, - roundTripFailureExpectation, - roundTripExpectation, - roundTripCborExpectation, - embedTripSpec, - embedTripExpectation, - RoundTripFailure (..), - showMaybeDecoderError, - showFailedTermsWithReSerialization, - Trip (..), - mkTrip, - cborTrip, - roundTrip, - embedTrip, - embedTripLabel, -) -where - -import Cardano.Ledger.Binary.Plain -import qualified Codec.CBOR.FlatTerm as CBOR -import qualified Data.ByteString.Lazy as BSL -import Data.Proxy -import qualified Data.Text as Text -import Data.Typeable -import qualified Formatting.Buildable as B (Buildable (..)) -import Test.Cardano.Ledger.Binary.TreeDiff (CBORBytes (..), diffExpr, showExpr, showHexBytesGrouped) -import Test.Hspec -import Test.Hspec.QuickCheck (prop) -import Test.QuickCheck hiding (label) - --- ===================================================================== - --- | Tests the roundtrip property using QuickCheck generators for all possible versions --- starting with `shelleyProtVer`. -roundTripSpec :: - forall t. - (Show t, Eq t, Typeable t, Arbitrary t) => - Trip t t -> - Spec -roundTripSpec trip = - prop (show (typeRep $ Proxy @t)) $ roundTripExpectation trip - --- | Tests the embedtrip property using QuickCheck generators -embedTripSpec :: - forall a b. - (Eq b, Show a, Typeable a, Typeable b, Arbitrary a, HasCallStack) => - Trip a b -> - (b -> a -> Expectation) -> - Spec -embedTripSpec trip f = - prop ("From: " ++ show (typeRep $ Proxy @a) ++ " To " ++ show (typeRep $ Proxy @b)) $ - embedTripExpectation trip f - --- Tests that a decoder error happens -roundTripFailureExpectation :: forall a. (Eq a, ToCBOR a, FromCBOR a) => a -> Expectation -roundTripFailureExpectation x = - case roundTrip (cborTrip @a) x of - Left _ -> pure () - Right _ -> - expectationFailure $ - "Should not have deserialized: " - ++ showExpr (CBORBytes (serialize' x)) - --- | Verify that round triping through the binary form holds -roundTripExpectation :: - (Show t, Eq t, Typeable t, HasCallStack) => - Trip t t -> - t -> - Expectation -roundTripExpectation trip t = - case roundTrip trip t of - Left err -> expectationFailure $ "Failed to deserialize encoded:\n" ++ show err - Right tDecoded -> tDecoded `shouldBe` t - -roundTripCborExpectation :: - forall t. - (Show t, Eq t, FromCBOR t, ToCBOR t, HasCallStack) => - t -> - Expectation -roundTripCborExpectation = roundTripExpectation (cborTrip @t) - -embedTripExpectation :: - forall a b. - (Typeable b, Eq b, HasCallStack) => - Trip a b -> - (b -> a -> Expectation) -> - a -> - Expectation -embedTripExpectation trip f t = - case embedTrip trip t of - Left err -> expectationFailure $ "Failed to deserialize encoded:\n" ++ show err - Right tDecoded -> f tDecoded t - --- ===================================================================== - -data RoundTripFailure = RoundTripFailure - { rtfEncoding :: Encoding - -- ^ Produced plain encoding - , rtfEncodedBytes :: BSL.ByteString - -- ^ Serialized encoding - , rtfReEncodedBytes :: Maybe BSL.ByteString - -- ^ Re-serialized bytes, if there was a mismatch between the binary form and the - -- reserialization of the data type. - , rtfFlatTermError :: Maybe String - -- ^ Roundtripping through FlatTerm - , rtfDecoderError :: Maybe DecoderError - -- ^ Error received while decoding the produced bytes. - } - -instance Show RoundTripFailure where - show RoundTripFailure {..} = - unlines $ - [ showMaybeDecoderError "Decoder" rtfDecoderError - , showMaybeDecoderError "FlatTerm" rtfFlatTermError - ] - ++ [ "Original did not match the reserialization (see below)." - | Just _ <- pure rtfReEncodedBytes - ] - ++ showFailedTermsWithReSerialization rtfEncodedBytes rtfReEncodedBytes - -showMaybeDecoderError :: B.Buildable b => String -> Maybe b -> String -showMaybeDecoderError name = \case - Nothing -> "No " ++ name ++ " error" - Just err -> name ++ " error: " ++ showDecoderError err - -showFailedTermsWithReSerialization :: - BSL.ByteString -> - Maybe BSL.ByteString -> - [String] -showFailedTermsWithReSerialization encodedBytes mReEncodedBytes = - case mReEncodedBytes of - Nothing -> - -- This is the usual case where re-serialization is successful - let (_, origHex, origStr) = termWithHex "Original" encodedBytes - in origStr ++ ["OriginalHex:"] ++ origHex - Just reBytes -> - -- On a rare occasion when re-serialization does not match we try to show the - -- diff of Hex as well as Terms - case (termWithHex "Original" encodedBytes, termWithHex "Reserialization" reBytes) of - ((Right origTerm, origHex, _), (Right reTerm, reHex, _)) -> - [diffExpr (origTerm, origHex) (reTerm, reHex)] - ((_, origHex, origStr), (_, reHex, reStr)) -> - diffExpr origHex reHex : origStr ++ reStr - where - termWithHex name lazyBytes = - let bytes = BSL.toStrict lazyBytes - decTerm = case decodeFullDecoder' "Term" decodeTerm bytes of - Left err -> Left $ "Could not decode as Term: " ++ show err - Right term -> Right term - hexLines = showHexBytesGrouped bytes - in (decTerm, hexLines, [name ++ ":", either id showExpr decTerm]) - --- | A definition of a CBOR trip through binary representation of one type to --- another. In this module this is called an embed. When a source and target type is the --- exact same one then it would be a dual and is expected to round trip. -data Trip a b = Trip - { tripEncoder :: a -> Encoding - , tripDecoder :: forall s. Decoder s b - } - -cborTrip :: forall a b. (ToCBOR a, FromCBOR b) => Trip a b -cborTrip = Trip toCBOR fromCBOR - --- | Construct a `Trip` using encoder and decoder, with dropper set to the decoder which --- drops the value -mkTrip :: forall a b. (a -> Encoding) -> (forall s. Decoder s b) -> Trip a b -mkTrip = Trip - -roundTrip :: forall t. (Eq t, Typeable t) => Trip t t -> t -> Either RoundTripFailure t -roundTrip trip val = do - (val', encoding, encodedBytes) <- embedTripLabelExtra (typeLabel @t) trip val - let reserialized = serialize (tripEncoder trip val') - if reserialized /= encodedBytes - then - Left $ - RoundTripFailure encoding encodedBytes (Just reserialized) Nothing Nothing - else Right val' - -embedTripLabel :: - forall a b. - Eq b => - Text.Text -> - Trip a b -> - a -> - Either RoundTripFailure b -embedTripLabel lbl trip s = - (\(val, _, _) -> val) <$> embedTripLabelExtra lbl trip s - -embedTripLabelExtra :: - forall a b. - Eq b => - Text.Text -> - Trip a b -> - a -> - Either RoundTripFailure (b, Encoding, BSL.ByteString) -embedTripLabelExtra lbl (Trip encoder decoder) s = - case decodeFullDecoder lbl decoder encodedBytes of - Right val -> - let flatTerm = CBOR.toFlatTerm encoding - in case CBOR.fromFlatTerm decoder flatTerm of - Left err -> Left $ mkFailure Nothing (Just err) Nothing - Right valFromFlatTerm - | val /= valFromFlatTerm -> - let errMsg = - "Deserializoing through FlatTerm produced a different " - ++ "value then the regular deserializer did" - in Left $ mkFailure Nothing (Just errMsg) Nothing - | not (CBOR.validFlatTerm flatTerm) -> - let errMsg = - "Despite successful deserialization the produced " - ++ "FlatTerm for the type is not valid" - in Left $ mkFailure Nothing (Just errMsg) Nothing - | otherwise -> Right (val, encoding, encodedBytes) - Left err -> - Left $ mkFailure Nothing Nothing (Just err) - where - mkFailure = RoundTripFailure encoding encodedBytes - encoding = encoder s - encodedBytes = serialize encoding - --- | Can we serialise a type, and then deserialise it as something else? -embedTrip :: - forall a b. - (Eq b, Typeable b) => - Trip a b -> - a -> - Either RoundTripFailure b -embedTrip = embedTripLabel (Text.pack (show (typeRep $ Proxy @b))) - -typeLabel :: forall t. Typeable t => Text.Text -typeLabel = Text.pack (show (typeRep $ Proxy @t)) diff --git a/libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/Random.hs b/libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/Random.hs deleted file mode 100644 index 6b276e28823..00000000000 --- a/libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/Random.hs +++ /dev/null @@ -1,51 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Binary.Random ( - QC (..), - mkDummyHash, - mkHashStdGen, -) -where - -import Cardano.Crypto.Hash.Class (Hash, HashAlgorithm, hashToBytesShort) -import Cardano.Crypto.Hash.Short (Blake2bPrefix) -import Cardano.Ledger.Binary (EncCBOR (encCBOR), hashWithEncoder, shelleyProtVer) -import Data.ByteString.Short.Internal (ShortByteString (SBS)) -import Data.Coerce (coerce) -import Data.Primitive.ByteArray (ByteArray (ByteArray), indexByteArray) -import System.Random.Stateful ( - StatefulGen (..), - StdGen, - mkStdGen, - runStateGen_, - ) -import Test.QuickCheck.Gen (Gen (MkGen)) - --- | This is a pseudo random number generator used by QuickCheck and allows to use --- @random@'s stateful interface to work dierctly in `Gen` monad. This comes from an --- unmerged QuickCheck PR: https://github.com/nick8325/quickcheck/pull/333 -data QC = QC - -instance StatefulGen QC Gen where - uniformWord32 QC = MkGen (\r _n -> runStateGen_ r uniformWord32) - {-# INLINE uniformWord32 #-} - uniformWord64 QC = MkGen (\r _n -> runStateGen_ r uniformWord64) - {-# INLINE uniformWord64 #-} - uniformShortByteString k QC = - MkGen (\r _n -> runStateGen_ r (uniformShortByteString k)) - {-# INLINE uniformShortByteString #-} - --- | It is possible to use a hash of a binary representation of any type as a source of --- randomness, since hash value by its definiteion is uniformly distributed. -mkDummyHash :: forall h a b. (HashAlgorithm h, EncCBOR a) => a -> Hash h b -mkDummyHash = coerce . hashWithEncoder @h shelleyProtVer encCBOR - --- | Use a hash of the binary representation of a type as a seed to construct `StdGen`, --- that can be further used to generate random values. -mkHashStdGen :: EncCBOR x => x -> StdGen -mkHashStdGen x = - case hashToBytesShort $ mkDummyHash @(Blake2bPrefix 8) x of - SBS ba -> mkStdGen (indexByteArray (ByteArray ba) 0) diff --git a/libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/RoundTrip.hs b/libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/RoundTrip.hs deleted file mode 100644 index 7681485498f..00000000000 --- a/libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/RoundTrip.hs +++ /dev/null @@ -1,585 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TupleSections #-} -{-# LANGUAGE TypeApplications #-} - --- | Defines reusable abstractions for testing RoundTrip properties of CBOR instances -module Test.Cardano.Ledger.Binary.RoundTrip ( - -- * Spec - roundTripSpec, - roundTripCborSpec, - roundTripAnnCborSpec, - roundTripRangeSpec, - - -- * Expectations - - -- ** Trip - roundTripExpectation, - roundTripRangeExpectation, - roundTripFailureExpectation, - roundTripRangeFailureExpectation, - - -- ** Enc/DecCBOR - roundTripCborExpectation, - roundTripCborRangeExpectation, - roundTripCborFailureExpectation, - roundTripCborRangeFailureExpectation, - roundTripAnnExpectation, - roundTripAnnRangeExpectation, - roundTripAnnFailureExpectation, - roundTripAnnRangeFailureExpectation, - - -- ** Embed - embedTripSpec, - embedTripExpectation, - embedTripAnnExpectation, - embedTripFailureExpectation, - embedTripRangeFailureExpectation, - roundTripTwiddledProperty, - roundTripAnnTwiddledProperty, - - -- * Tripping failure - RoundTripFailure (..), - - -- * Tripping definitions - Trip (..), - mkTrip, - cborTrip, - - -- * Tripping functions - roundTrip, - roundTripTwiddled, - roundTripAnn, - roundTripAnnTwiddled, - embedTrip, - embedTripAnn, - embedTripLabel, - embedTripLabelExtra, - decodeAnnExtra, -) -where - -import Cardano.Ledger.Binary -import qualified Cardano.Ledger.Binary.Plain as Plain -import qualified Codec.CBOR.FlatTerm as CBOR -import Control.Monad (forM_, guard) -import Data.Bifunctor (bimap) -import qualified Data.ByteString.Lazy as BSL -import Data.Functor -import Data.Proxy -import qualified Data.Text as T -import Data.Typeable -import Test.Cardano.Ledger.Binary.Plain.RoundTrip ( - showFailedTermsWithReSerialization, - showMaybeDecoderError, - ) -import Test.Cardano.Ledger.Binary.TreeDiff (CBORBytes (..), showExpr) -import Test.Cardano.Ledger.Binary.Twiddle (Twiddle (..)) -import Test.Hspec -import Test.Hspec.QuickCheck (prop) -import Test.QuickCheck hiding (label) - --- ===================================================================== - --- | Tests the roundtrip property using QuickCheck generators for all possible versions --- starting with `shelleyProtVer`. -roundTripSpec :: - forall t. - (Show t, Eq t, Typeable t, Arbitrary t) => - Trip t t -> - Spec -roundTripSpec trip = - prop (show (typeRep $ Proxy @t)) $ roundTripExpectation trip - --- | Tests the roundtrip property using QuickCheck generators for all possible versions --- starting with `shelleyProtVer`. -roundTripCborSpec :: - forall t. - (Show t, Eq t, Arbitrary t, EncCBOR t, DecCBOR t) => - Spec -roundTripCborSpec = roundTripSpec (cborTrip @t) - --- | Tests the roundtrip property using QuickCheck generators for all possible versions --- starting with `shelleyProtVer`. -roundTripAnnCborSpec :: - forall t. - (Show t, Eq t, Arbitrary t, ToCBOR t, DecCBOR (Annotator t)) => - Spec -roundTripAnnCborSpec = prop (show (typeRep $ Proxy @t)) (roundTripAnnExpectation @t) - --- | Tests the roundtrip property using QuickCheck generators for specific range of versions -roundTripRangeSpec :: - forall t. - (Show t, Eq t, Typeable t, Arbitrary t) => - Trip t t -> - Version -> - Version -> - Spec -roundTripRangeSpec trip fromVersion toVersion = - prop (show (typeRep $ Proxy @t)) $ roundTripRangeExpectation trip fromVersion toVersion - --- | Tests the embedtrip property using QuickCheck generators -embedTripSpec :: - forall a b. - (Show a, Typeable a, Typeable b, Arbitrary a, Eq b, HasCallStack) => - -- | Version for the encoder - Version -> - -- | Version for the decoder - Version -> - Trip a b -> - (b -> a -> Expectation) -> - Spec -embedTripSpec encVersion decVersion trip f = - prop ("From: " ++ show (typeRep $ Proxy @a) ++ " To " ++ show (typeRep $ Proxy @b)) $ - embedTripExpectation encVersion decVersion trip f - --- | Verify that round triping through the binary form holds for all versions starting --- with `shelleyProtVer`. -roundTripExpectation :: - (Show t, Eq t, Typeable t, HasCallStack) => - Trip t t -> - t -> - Expectation -roundTripExpectation trip = roundTripRangeExpectation trip minBound maxBound - -roundTripCborFailureExpectation :: - forall t. - (EncCBOR t, DecCBOR t, Eq t, HasCallStack) => - t -> - Expectation -roundTripCborFailureExpectation = roundTripFailureExpectation (cborTrip @t @t) - -roundTripCborRangeFailureExpectation :: - forall t. - (EncCBOR t, DecCBOR t, Eq t, HasCallStack) => - -- | From Version - Version -> - -- | To Version - Version -> - t -> - Expectation -roundTripCborRangeFailureExpectation = roundTripRangeFailureExpectation (cborTrip @t) - -roundTripFailureExpectation :: - (Typeable t, Eq t, HasCallStack) => - Trip t t -> - t -> - Expectation -roundTripFailureExpectation trip = roundTripRangeFailureExpectation trip minBound maxBound - -roundTripRangeFailureExpectation :: - forall t. - (Typeable t, Eq t, HasCallStack) => - Trip t t -> - -- | From Version - Version -> - -- | To Version - Version -> - t -> - Expectation -roundTripRangeFailureExpectation = embedTripRangeFailureExpectation - -embedTripFailureExpectation :: - (Typeable b, Eq b, HasCallStack) => - Trip a b -> - a -> - Expectation -embedTripFailureExpectation trip = embedTripRangeFailureExpectation trip minBound maxBound - -embedTripRangeFailureExpectation :: - forall a b. - (Typeable b, Eq b, HasCallStack) => - Trip a b -> - -- | From Version - Version -> - -- | To Version - Version -> - a -> - Expectation -embedTripRangeFailureExpectation trip fromVersion toVersion t = - forM_ [fromVersion .. toVersion] $ \version -> - case embedTripLabelExtra (typeLabel @b) version version trip t of - Left _ -> pure () - Right (_, _, bs) -> - expectationFailure $ - mconcat - [ "Should not have deserialized: " - , showExpr (CBORBytes (BSL.toStrict bs)) - ] - --- | Verify that round triping through the binary form holds for a range of versions. --- --- In other words check that: --- --- > deserialize version . serialize version === id --- > serialize version . deserialize version . serialize version === serialize version -roundTripRangeExpectation :: - forall t. - (Show t, Eq t, Typeable t, HasCallStack) => - Trip t t -> - -- | From Version - Version -> - -- | To Version - Version -> - t -> - Expectation -roundTripRangeExpectation trip fromVersion toVersion t = - forM_ [fromVersion .. toVersion] $ \version -> - case roundTrip version trip t of - Left err -> expectationFailure $ "Failed to deserialize encoded:\n" ++ show err - Right tDecoded -> tDecoded `shouldBe` t - -roundTripCborExpectation :: - forall t. - (Show t, Eq t, EncCBOR t, DecCBOR t, HasCallStack) => - t -> - Expectation -roundTripCborExpectation = roundTripExpectation (cborTrip @t @t) - -roundTripCborRangeExpectation :: - forall t. - (Show t, Eq t, EncCBOR t, DecCBOR t, HasCallStack) => - -- | From Version - Version -> - -- | To Version - Version -> - t -> - Expectation -roundTripCborRangeExpectation = roundTripRangeExpectation (cborTrip @t) - -roundTripAnnExpectation :: - (Show t, Eq t, ToCBOR t, DecCBOR (Annotator t), HasCallStack) => - t -> - Expectation -roundTripAnnExpectation = roundTripAnnRangeExpectation (natVersion @2) maxBound - -roundTripAnnRangeExpectation :: - (Show t, Eq t, ToCBOR t, DecCBOR (Annotator t), HasCallStack) => - Version -> - Version -> - t -> - Expectation -roundTripAnnRangeExpectation fromVersion toVersion t = - forM_ [fromVersion .. toVersion] $ \version -> - case roundTripAnn version t of - Left err -> expectationFailure $ "Failed to deserialize encoded:\n" ++ show err - Right tDecoded -> tDecoded `shouldBe` t - -roundTripAnnFailureExpectation :: - (ToCBOR t, DecCBOR (Annotator t), HasCallStack) => - t -> - Expectation -roundTripAnnFailureExpectation = roundTripAnnRangeFailureExpectation (natVersion @2) maxBound - -roundTripAnnRangeFailureExpectation :: - (ToCBOR t, DecCBOR (Annotator t), HasCallStack) => - Version -> - Version -> - t -> - Expectation -roundTripAnnRangeFailureExpectation fromVersion toVersion t = - forM_ [fromVersion .. toVersion] $ \version -> - case roundTripAnn version t of - Left _ -> pure () - Right _ -> - expectationFailure $ - mconcat - [ "Should not have deserialized: " - , showExpr (CBORBytes (Plain.serialize' t)) - ] - -roundTripTwiddledProperty :: - (Show t, Eq t, Twiddle t, DecCBOR t) => Version -> t -> Property -roundTripTwiddledProperty version t = property $ do - roundTripTwiddled version t >>= \case - Left err -> - pure $ counterexample ("Failed to deserialize twiddled encoding:\n" ++ show err) False - Right tDecoded -> - pure (tDecoded === t) - -roundTripAnnTwiddledProperty :: - forall t q. - (Twiddle t, DecCBOR (Annotator t), Testable q) => - (t -> t -> q) -> - Version -> - t -> - Property -roundTripAnnTwiddledProperty eqProp version t = property $ do - roundTripAnnTwiddled version t >>= \case - Left err -> - pure $ counterexample ("Failed to deserialize twiddled encoding:\n" ++ show err) False - Right tDecoded -> - pure $ property (tDecoded `eqProp` t) - -embedTripExpectation :: - forall a b. - (Typeable b, Eq b, HasCallStack) => - -- | Version for the encoder - Version -> - -- | Version for the decoder - Version -> - Trip a b -> - (b -> a -> Expectation) -> - a -> - Expectation -embedTripExpectation encVersion decVersion trip f t = - case embedTrip encVersion decVersion trip t of - Left err -> expectationFailure $ "Failed to deserialize encoded:\n" ++ show err - Right tDecoded -> f tDecoded t - --- | This is just like `roundTripAnnExpectation`, except it allows for source and target --- types to be different. This is very useful to test translation of the same type family --- from one era to another. -embedTripAnnExpectation :: - forall a b. - (ToCBOR a, DecCBOR (Annotator b), HasCallStack) => - -- | Version for the encoder - Version -> - -- | Version for the decoder - Version -> - (b -> a -> Expectation) -> - a -> - Expectation -embedTripAnnExpectation encVersion decVersion f a = - case embedTripAnn encVersion decVersion a of - Left err -> expectationFailure $ "Failed to deserialize encoded:\n" ++ show err - Right b -> b `f` a - --- ===================================================================== - -data RoundTripFailure = RoundTripFailure - { rtfEncoderVersion :: Version - -- ^ Version that was used during encoding - , rtfDecoderVersion :: Version - -- ^ Version that was used during decoding - , rtfEncoding :: Plain.Encoding - -- ^ Produced plain encoding - , rtfEncodedBytes :: BSL.ByteString - -- ^ Serialized encoding using the version in this failure - , rtfReEncodedBytes :: Maybe BSL.ByteString - -- ^ Re-serialized bytes, if there was a mismatch between the binary form and the - -- reserialization of the data type. - , rtfConformanceError :: Maybe String - -- ^ Roundtripping through FlatTerm - , rtfDropperError :: Maybe DecoderError - -- ^ Error received while decoding the produced bytes and dropping the value. Normally - -- it will be `Nothing`, unless the error produced did not match the - -- `rtfDecoderError`, in which case it will be `Just` the error. - , rtfDecoderError :: Maybe DecoderError - -- ^ Error received while decoding the produced bytes. It is possible for a dropper to - -- produce an error, while decoder going through successfully, which constitues a test - -- failure. In such a case this field will be `Nothing`, however `rtfDropperError` - -- will be set to `Just`. Whenever both `rtfDropperError` and `rtfDecoderError` are - -- `Nothing` it means that the decoding went though just fine, but there was a - -- mismatch in the binary format, i.e. reserialization produced a mismatched result, - -- in which case `rtfReEncodedBytes` will be set to `Just` - } - -instance Show RoundTripFailure where - show RoundTripFailure {..} = - unlines $ - [ "Encoder Version: " ++ show rtfEncoderVersion - , "Decoder Version: " ++ show rtfDecoderVersion - , showMaybeDecoderError "Decoder" rtfDecoderError - , showMaybeDecoderError "Dropper" rtfDropperError - , showMaybeDecoderError "Conformance" rtfConformanceError - ] - ++ [ "Original did not match the reserialization (see below)." - | Just _ <- pure rtfReEncodedBytes - ] - ++ showFailedTermsWithReSerialization rtfEncodedBytes rtfReEncodedBytes - --- | A definition of a CBOR trip through binary representation of one type to --- another. In this module this is called an embed. When a source and target type is the --- exact same one then it would be a dual and is expected to round trip. -data Trip a b = Trip - { tripEncoder :: a -> Encoding - , tripDecoder :: forall s. Decoder s b - , tripDropper :: forall s. Decoder s () - } - -cborTrip :: forall a b. (EncCBOR a, DecCBOR b) => Trip a b -cborTrip = Trip encCBOR decCBOR (dropCBOR (Proxy @b)) - --- | Construct a `Trip` using encoder and decoder, with dropper set to the decoder which --- drops the value -mkTrip :: forall a b. (a -> Encoding) -> (forall s. Decoder s b) -> Trip a b -mkTrip encoder decoder = Trip encoder decoder (() <$ decoder) - --- | Check that serialization followed by deserialization of the value produces the same --- value back. We also check that re-serialization is idempotent. In other words, we --- ensure that deserialization does not modify the decoded value in a way that its binary --- representation has changed. Dropper is checked as well. -roundTrip :: - forall t. - (Eq t, Typeable t) => - Version -> - Trip t t -> - t -> - Either RoundTripFailure t -roundTrip version trip val = do - (val', encoding, encodedBytes) <- embedTripLabelExtra (typeLabel @t) version version trip val - let reserialized = serialize version (tripEncoder trip val') - if reserialized /= encodedBytes - then - Left $ - RoundTripFailure version version encoding encodedBytes (Just reserialized) Nothing Nothing Nothing - else Right val' - -roundTripTwiddled :: - forall t. - (Twiddle t, DecCBOR t, Eq t) => - Version -> - t -> - Gen (Either RoundTripFailure t) -roundTripTwiddled version x = do - tw <- twiddle version x - pure (roundTrip version (Trip (const (encodeTerm tw)) decCBOR (dropCBOR (Proxy @t))) x) - -roundTripAnn :: (ToCBOR t, DecCBOR (Annotator t)) => Version -> t -> Either RoundTripFailure t -roundTripAnn v = embedTripAnn v v - -roundTripAnnTwiddled :: - (Twiddle t, DecCBOR (Annotator t)) => Version -> t -> Gen (Either RoundTripFailure t) -roundTripAnnTwiddled version x = do - tw <- twiddle version x - pure (decodeAnn version version (toPlainEncoding version (encodeTerm tw))) - -decodeAnn :: - forall t. - DecCBOR (Annotator t) => - -- | Version for the encoder - Version -> - -- | Version for the decoder - Version -> - Plain.Encoding -> - Either RoundTripFailure t -decodeAnn encVersion decVersion encoding = - fst <$> decodeAnnExtra (label (Proxy @(Annotator t))) encVersion decVersion decCBOR encoding - -decodeAnnExtra :: - forall t. - T.Text -> - -- | Version for the encoder - Version -> - -- | Version for the decoder - Version -> - (forall s. Decoder s (Annotator t)) -> - Plain.Encoding -> - Either RoundTripFailure (t, BSL.ByteString) -decodeAnnExtra lbl encVersion decVersion decoder encoding - | CBOR.validFlatTerm flatTerm = - bimap (mkRoundTripFailure Nothing Nothing Nothing . Just) (,encodedBytes) $ - decodeFullAnnotator decVersion lbl decoder encodedBytes - | otherwise = - Left $ mkRoundTripFailure (Just "FlatTerm encoding is invalid") Nothing Nothing Nothing - where - mkRoundTripFailure = RoundTripFailure encVersion decVersion encoding encodedBytes - encodedBytes = Plain.serialize encoding - flatTerm = CBOR.toFlatTerm encoding - -embedTripLabel :: - forall a b. - Eq b => - T.Text -> - -- | Version for the encoder - Version -> - -- | Version for the decoder - Version -> - Trip a b -> - a -> - Either RoundTripFailure b -embedTripLabel lbl encVersion decVersion trip s = - embedTripLabelExtra lbl encVersion decVersion trip s <&> \case - (res, _, _) -> res - -embedTripLabelExtra :: - forall a b. - Eq b => - T.Text -> - -- | Version for the encoder - Version -> - -- | Version for the decoder - Version -> - Trip a b -> - a -> - Either RoundTripFailure (b, Plain.Encoding, BSL.ByteString) -embedTripLabelExtra lbl encVersion decVersion (Trip encoder decoder dropper) s = result - where - mkFailure = RoundTripFailure encVersion decVersion encoding encodedBytes Nothing - result = - case decodeFullDecoder decVersion lbl decoder encodedBytes of - Right val - | Nothing <- mDropperError -> - let flatTerm = CBOR.toFlatTerm encoding - in case CBOR.fromFlatTerm (toPlainDecoder decVersion decoder) flatTerm of - Left _err -> - -- Until we switch to a release of cborg that includes a fix for this issue: - -- https://github.com/well-typed/cborg/issues/324 - -- We can't rely on FlatTerm decoding - -- Left $ mkFailure (Just $ "fromFlatTerm error:" <> err) Nothing Nothing - Right (val, encoding, encodedBytes) - Right valFromFlatTerm - | val /= valFromFlatTerm -> - let errMsg = - "Deserializing through FlatTerm produced a different " - ++ "value then the regular deserializer did" - in Left $ mkFailure (Just errMsg) Nothing Nothing - | not (CBOR.validFlatTerm flatTerm) -> - let errMsg = - "Despite successful deserialization the produced " - ++ "FlatTerm for the type is not valid" - in Left $ mkFailure (Just errMsg) Nothing Nothing - | otherwise -> Right (val, encoding, encodedBytes) - -- else Left $ mkFailure Nothing Nothing - | Just err <- mDropperError -> Left $ mkFailure Nothing (Just err) Nothing - Left err -> - -- In case of failure we only record dropper error if it differs from the - -- decoder failure: - let mErr = do - dropperError <- mDropperError - dropperError <$ guard (dropperError /= err) - in Left $ mkFailure Nothing mErr (Just err) - encoding = toPlainEncoding encVersion (encoder s) - encodedBytes = Plain.serialize encoding - mDropperError = - case decodeFullDecoder decVersion lbl dropper encodedBytes of - Left err -> Just err - Right () -> Nothing - --- | Can we serialise a type, and then deserialise it as something else? -embedTrip :: - forall a b. - (Eq b, Typeable b) => - -- | Version for the encoder - Version -> - -- | Version for the decoder - Version -> - Trip a b -> - a -> - Either RoundTripFailure b -embedTrip = embedTripLabel (T.pack (show (typeRep $ Proxy @b))) - -embedTripAnn :: - forall a b. - (ToCBOR a, DecCBOR (Annotator b)) => - -- | Encoder version for test failure reporting - Version -> - -- | Decoder version - Version -> - a -> - Either RoundTripFailure b -embedTripAnn encVersion decVersion = decodeAnn encVersion decVersion . toCBOR - -typeLabel :: forall t. Typeable t => T.Text -typeLabel = T.pack (show (typeRep $ Proxy @t)) diff --git a/libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/TreeDiff.hs b/libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/TreeDiff.hs deleted file mode 100644 index 89084833ebc..00000000000 --- a/libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/TreeDiff.hs +++ /dev/null @@ -1,198 +0,0 @@ -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Binary.TreeDiff ( - ToExpr (..), - CBORBytes (..), - HexBytes (..), - showExpr, - diffExpr, - diffExprCompact, - diffExprNoColor, - hexByteStringExpr, - showHexBytesGrouped, - expectExprEqual, - expectExprEqualWithMessage, - assertExprEqualWithMessage, - Expr (App, Rec, Lst), - defaultExprViaShow, - trimExprViaShow, -) -where - -import qualified Cardano.Binary as Plain -import qualified Cardano.Crypto.DSIGN as DSIGN -import qualified Cardano.Crypto.Hash as Hash -import Cardano.Crypto.Hash.Class () -import Cardano.Ledger.Binary -import qualified Codec.CBOR.Read as CBOR -import qualified Codec.CBOR.Term as CBOR -import Control.Monad (unless) -import Data.Bifunctor (bimap) -import qualified Data.ByteString as BS -import qualified Data.ByteString.Base16 as Base16 -import qualified Data.ByteString.Char8 as BS8 -import qualified Data.ByteString.Lazy as BSL -import Data.Foldable (toList) -import Data.IP (IPv4, IPv6) -import Data.Maybe.Strict (StrictMaybe) -import Data.Sequence.Strict (StrictSeq) -import Data.TreeDiff -import Test.Cardano.Slotting.TreeDiff () -import Test.Hspec (Expectation, HasCallStack, expectationFailure) -import Test.Tasty.HUnit (Assertion, assertFailure) - --- ===================================================== --- Cardano functions that deal with TreeDiff and ToExpr - -trimExprViaShow :: Show a => Int -> a -> Expr -trimExprViaShow _n x = defaultExprViaShow x -- App (take n (drop 1 (show x)) ++ "..") [] - --- =========================================================== --- Orphan instances from external imports - -instance ToExpr IPv4 - -instance ToExpr IPv6 - -instance ToExpr (Hash.Hash c index) where - toExpr = trimExprViaShow 10 - -instance DSIGN.DSIGNAlgorithm c => ToExpr (DSIGN.SignedDSIGN c index) where - toExpr = trimExprViaShow 10 - -instance ToExpr a => ToExpr (StrictSeq a) where - toExpr x = App "StrictSeqFromList" [listToExpr (toList x)] - -instance ToExpr a => ToExpr (StrictMaybe a) - -instance ToExpr Version where - toExpr v = App "Version" [toExpr (getVersion64 v)] - -instance ToExpr a => ToExpr (Sized a) - --------------------------------------------------------------------------------- --- Diffing and pretty showing CBOR --------------------------------------------------------------------------------- - -showExpr :: ToExpr a => a -> String -showExpr = show . ansiWlExpr . toExpr - -diffExpr :: ToExpr a => a -> a -> String -diffExpr x y = show (ansiWlEditExpr (ediff x y)) - -diffExprNoColor :: ToExpr a => a -> a -> String -diffExprNoColor x y = show (prettyEditExpr (ediff x y)) - -diffExprCompact :: ToExpr a => a -> a -> String -diffExprCompact x y = show (ansiWlEditExprCompact (ediff x y)) - --- | Wraps regular ByteString, but shows and diffs it as hex -newtype HexBytes = HexBytes {unHexBytes :: BS.ByteString} - deriving (Eq) - -instance Show HexBytes where - show = showExpr - -instance ToExpr HexBytes where - toExpr = App "HexBytes" . hexByteStringExpr . unHexBytes - -newtype CBORBytes = CBORBytes {unCBORBytes :: BS.ByteString} - deriving (Eq) - -instance Show CBORBytes where - show = showExpr - -instance ToExpr CBORBytes where - toExpr (CBORBytes bytes) = - case CBOR.deserialiseFromBytes CBOR.decodeTerm (BSL.fromStrict bytes) of - Left err -> - App - "CBORBytesError" - [ toExpr @String "Error decoding CBOR, showing as Hex:" - , toExpr (HexBytes bytes) - , toExpr $ show err - ] - Right (leftOver, term) - | BSL.null leftOver -> App "CBORBytes" [toExpr term] - | otherwise -> - case Plain.decodeFullDecoder "Term" CBOR.decodeTerm leftOver of - Right leftOverTerm -> - App - "CBORBytesError" - [ toExpr @String "Error decoding CBOR fully:" - , toExpr term - , toExpr @String "Leftover:" - , toExpr (leftOverTerm :: Term) - ] - Left err -> - App - "CBORBytesError" - [ toExpr @String "Error decoding CBOR fully:" - , toExpr term - , toExpr @String "Leftover as Hex, due to inabilty to decode as Term:" - , toExpr $ HexBytes $ BSL.toStrict leftOver - , toExpr $ showDecoderError err - ] - -instance ToExpr Term where - toExpr = - \case - TInt i -> App "TInt" [toExpr i] - TInteger i -> App "TInteger" [toExpr i] - TBytes bs -> App "TBytes" $ hexByteStringExpr bs - TBytesI bs -> App "TBytesI" $ hexByteStringExpr $ BSL.toStrict bs - TString s -> App "TString" [toExpr s] - TStringI s -> App "TStringI" [toExpr s] - TList xs -> App "TList" [Lst (map toExpr xs)] - TListI xs -> App "TListI" [Lst (map toExpr xs)] - TMap xs -> App "TMap" [Lst (map (toExpr . bimap toExpr toExpr) xs)] - TMapI xs -> App "TMapI" [Lst (map (toExpr . bimap toExpr toExpr) xs)] - TTagged 24 (TBytes x) -> App "CBOR-in-CBOR" [toExpr (CBORBytes x)] - TTagged t x -> App "TTagged" [toExpr t, toExpr x] - TBool x -> App "TBool" [toExpr x] - TNull -> App "TNull" [] - TSimple x -> App "TSimple" [toExpr x] - THalf x -> App "THalf" [toExpr x] - TFloat x -> App "TFloat" [toExpr x] - TDouble x -> App "TDouble" [toExpr x] - -hexByteStringExpr :: BS.ByteString -> [Expr] -hexByteStringExpr bs = - [ toExpr (BS.length bs) - , Lst (map toExpr $ showHexBytesGrouped bs) - ] - --- | Show a ByteString as hex groups of 8bytes each. This is a slightly more --- useful form for debugging, rather than bunch of escaped characters. -showHexBytesGrouped :: BS.ByteString -> [String] -showHexBytesGrouped bs - | BS.null bs = [] - | otherwise = - ("0x" <> BS8.unpack (BS.take 128 bs16)) - : [ " " <> BS8.unpack (BS.take 128 $ BS.drop i bs16) - | i <- [128, 256 .. BS.length bs16 - 1] - ] - where - bs16 = Base16.encode bs - --- | Check that two values are equal and if they are not raise an exception with the --- `ToExpr` diff -expectExprEqual :: (Eq a, ToExpr a) => a -> a -> Expectation -expectExprEqual = expectExprEqualWithMessage "Expected two values to be equal:" - --- | Use this with HSpec, but with Tasty use 'assertExprEqualWithMessage' below -expectExprEqualWithMessage :: (ToExpr a, Eq a, HasCallStack) => [Char] -> a -> a -> Expectation -expectExprEqualWithMessage message expected actual = - unless (actual == expected) (expectationFailure msg) - where - msg = (if null message then "" else message ++ "\n") ++ diffExpr expected actual - --- | Use this with Tasty, but with HSpec use 'expectExprEqualWithMessage' above -assertExprEqualWithMessage :: (ToExpr a, Eq a, HasCallStack) => [Char] -> a -> a -> Assertion -assertExprEqualWithMessage message expected actual = - unless (actual == expected) (assertFailure msg) - where - msg = (if null message then "" else message ++ "\n") ++ diffExpr expected actual diff --git a/libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/Twiddle.hs b/libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/Twiddle.hs deleted file mode 100644 index 45554b3f9d5..00000000000 --- a/libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/Twiddle.hs +++ /dev/null @@ -1,257 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE ConstrainedClassMethods #-} -{-# LANGUAGE DefaultSignatures #-} -{-# LANGUAGE EmptyCase #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} - -module Test.Cardano.Ledger.Binary.Twiddle ( - Twiddler (..), - Twiddle (..), - encodingToTerm, - toTwiddler, - toTerm, - twiddleInvariantProp, - emptyOrNothing, - twiddleStrictMaybe, -) -where - -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - Encoding, - Term (..), - Version, - decodeFull, - encodeTerm, - getDecoderVersion, - serialize, - ) -import Data.Bitraversable (bimapM) -import Data.ByteString (ByteString) -import Data.ByteString.Lazy (fromStrict, toStrict) -import Data.Foldable (toList) -import Data.Int (Int64) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Maybe.Strict (StrictMaybe (..)) -import Data.Sequence (Seq) -import Data.Sequence.Strict (StrictSeq) -import Data.Set (Set) -import Data.Text (Text) -import qualified Data.Text.Lazy as T -import Data.Typeable (Typeable) -import Data.Void (Void, absurd) -import GHC.Generics -import Test.Cardano.Ledger.Binary.Arbitrary () -import Test.QuickCheck (Arbitrary (..), Gen, Property, elements, oneof, shuffle, (===)) - -data Twiddler a = Twiddler - { twiddlerVersion :: !Version - , twiddlerType :: !a - , twiddlerTerm :: Term - } - -gTwiddleTList :: forall a p. (Generic a, TwiddleL (Rep a p)) => Version -> a -> Gen Term -gTwiddleTList v a = TList <$> twiddleL v (from @a @p a) - --- | Introducing random variations into the CBOR encoding of a value while --- preserving the round-trip properties. --- --- For any value `x :: a`, where `a` derives `Twiddle`, and for any version --- of the decoder, the following property must hold: --- >>> fmap ((== x) . encodingToTerm version . encCBOR) (twiddle x) -class Twiddle a where - -- | Given a value of type `a`, generates a CBOR `Term` that can contain - -- slight variations without changing the semantics. After encoding and - -- decoding the `Term`, we should get back the original value that was being - -- twiddled. - -- - -- In addition to varying the low-level CBOR tokens, `twiddle` can also - -- be used to introduce higher level variations. For example if the schema - -- of a value allows a field to be either an empty list or absent - -- entirely, and both are interpreted the same way, then `twiddle` - -- can be used to randomly pick either of these representations. - twiddle :: Version -> a -> Gen Term - default twiddle :: forall p. (Generic a, TwiddleL (Rep a p)) => Version -> a -> Gen Term - twiddle = gTwiddleTList @a @p - -instance Twiddle a => Twiddle [a] where - twiddle v l = do - f <- elements [TList, TListI] - l' <- traverse (twiddle v) l - pure $ f l' - -instance (Twiddle k, Twiddle v) => Twiddle (Map k v) where - twiddle v m = do - -- Elements of a map do not have to be in a specific order so we shuffle them - m' <- shuffle $ Map.toList m - m'' <- traverse (bimapM (twiddle v) (twiddle v)) m' - f <- elements [TMap, TMapI] - pure $ f m'' - -instance Twiddle ByteString where - twiddle _ bs = do - f <- elements [TBytes, TBytesI . fromStrict] - pure $ f bs - -instance Twiddle Text where - twiddle _ t = do - f <- elements [TString, TStringI . T.fromStrict] - pure $ f t - -instance Twiddle Int where - -- TODO: Put small ints into bigger words (e.g. a Word16 value into Word32) - -- - -- This is not possible with the CBOR AST provided by cborg - twiddle _ = pure . TInt - -instance (Twiddle a, Arbitrary a, EncCBOR a) => Arbitrary (Twiddler a) where - arbitrary = do - x <- arbitrary - v <- arbitrary - enc' <- twiddle v x - pure $ Twiddler v x enc' - -instance Twiddle a => Twiddle (Set a) where - twiddle v = twiddle v . toList - -instance Twiddle a => Twiddle (Seq a) where - twiddle v = twiddle v . toList - -instance Twiddle a => Twiddle (StrictSeq a) where - twiddle v = twiddle v . toList - -instance Typeable a => EncCBOR (Twiddler a) where - encCBOR (Twiddler _ _ x) = encodeTerm x - -instance (EncCBOR a, DecCBOR a) => DecCBOR (Twiddler a) where - decCBOR = do - v <- getDecoderVersion - (\x -> Twiddler v x $ toTerm v x) <$> decCBOR - -instance Show a => Show (Twiddler a) where - show (Twiddler v x _) = "Twiddler " <> show v <> ": " <> show x - -instance Eq a => Eq (Twiddler a) where - Twiddler v1 x1 _ == Twiddler v2 x2 _ = v1 == v2 && x1 == x2 - -class TwiddleL a where - twiddleL :: Version -> a -> Gen [Term] - -instance TwiddleL (V1 p) where - twiddleL _ v1 = case v1 of {} - -instance TwiddleL (U1 p) where - twiddleL _ U1 = pure [] - -instance (TwiddleL (l x), TwiddleL (r x)) => TwiddleL ((l :*: r) x) where - twiddleL v (lx :*: rx) = do - lx' <- twiddleL v lx - rx' <- twiddleL v rx - pure $ lx' <> rx' - -instance (TwiddleL (l x), TwiddleL (r x)) => TwiddleL ((l :+: r) x) where - twiddleL v (L1 lx) = twiddleL v lx - twiddleL v (R1 rx) = twiddleL v rx - -instance Twiddle c => TwiddleL (K1 i c p) where - twiddleL v (K1 c) = pure <$> twiddle v c - -instance TwiddleL (f p) => TwiddleL (M1 i c f p) where - twiddleL v (M1 fp) = twiddleL v fp - -instance Twiddle Integer where - twiddle _ = pure . TInteger - -instance Twiddle Void where - twiddle _ = absurd - -instance Twiddle Bool where - twiddle _ = pure . TBool - -instance Twiddle Float where - twiddle _ = pure . TFloat - -instance Twiddle Double where - twiddle _ = pure . TDouble - -instance Twiddle Int64 where - twiddle _ = pure . TInt . fromIntegral - -instance Twiddle Term where - twiddle v (TInt n) = twiddle v n - twiddle v (TInteger n) = twiddle v n - twiddle v (TBytes bs) = twiddle v bs - twiddle v (TBytesI bs) = twiddle v $ toStrict bs - twiddle v (TString txt) = twiddle v txt - twiddle v (TStringI txt) = twiddle v $ T.toStrict txt - twiddle v (TList tes) = twiddle v tes - twiddle v (TListI tes) = twiddle v tes - twiddle v (TMap x0) = twiddle v $ Map.fromList x0 - twiddle v (TMapI x0) = twiddle v $ Map.fromList x0 - twiddle v (TTagged wo te') = TTagged wo <$> twiddle v te' - twiddle v (TBool b) = twiddle v b - twiddle _ TNull = pure TNull - twiddle _ (TSimple wo) = pure $ TSimple wo - twiddle _ (THalf x) = pure $ THalf x - twiddle v (TFloat x) = twiddle v x - twiddle v (TDouble x) = twiddle v x - -encodingToTerm :: Version -> Encoding -> Term -encodingToTerm version enc = - case decodeFull version (serialize version enc) of - Right t -> t - Left err -> error $ show err - -toTerm :: EncCBOR a => Version -> a -> Term -toTerm version = encodingToTerm version . encCBOR - --- | Wraps an arbitrary value into a `Twiddler` -toTwiddler :: Twiddle a => Version -> a -> Gen (Twiddler a) -toTwiddler v x = Twiddler v x <$> twiddle v x - --- | Function for testing the invariant of a `Twiddle` instance. For a correct --- implementation, this property should always hold. -twiddleInvariantProp :: forall a. Twiddle a => Version -> a -> Gen Property -twiddleInvariantProp version x = do - t <- twiddle version x - let t' = encodingToTerm version $ encCBOR t - pure $ t === t' - --- | Optional containers have two "empty" representations. One of --- them is to return an empty container and the other is to omit the field. --- This utility function randomly picks one of these representations, where --- omission is represented by `Nothing` and empty container is returned with --- `Just`. These values can then be easily concatenated with `catMaybes`. -emptyOrNothing :: - forall t b. - ( Foldable t - , Twiddle (t Void) - , Monoid (t Void) - , Twiddle (t b) - ) => - Version -> - t b -> - Gen (Maybe Term) -emptyOrNothing v x = - if null x - then - oneof - [ Just <$> twiddle @(t Void) v mempty - , pure Nothing - ] - else Just <$> twiddle v x - --- | Utility function for twiddling optional fields. It works similarly to --- the twiddle method of StrictMaybe, but lifts the Maybe constructor out from --- the term so it can be easily concatenated with `catMaybes`. -twiddleStrictMaybe :: Twiddle a => Version -> StrictMaybe a -> Gen (Maybe Term) -twiddleStrictMaybe _ SNothing = pure Nothing -twiddleStrictMaybe v (SJust x) = Just <$> twiddle v x diff --git a/libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/Vintage/Helpers.hs b/libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/Vintage/Helpers.hs deleted file mode 100644 index 0f51eeac70f..00000000000 --- a/libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/Vintage/Helpers.hs +++ /dev/null @@ -1,263 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Binary.Vintage.Helpers ( - byronProtVer, - - -- * Binary test helpers - U, - U24, - extensionProperty, - cborFlatTermValid, - - -- * Static size estimates - SizeTestConfig (..), - cfg, - scfg, - sizeTest, -) -where - -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - Range (..), - Size, - SizeOverride (..), - byronProtVer, - decodeListLenOf, - decodeNestedCborBytes, - encodeListLen, - encodeNestedCborBytes, - serialize, - szSimplify, - szWithCtx, - unsafeDeserialize, - ) -import Cardano.Ledger.Binary.FlatTerm (toFlatTerm, validFlatTerm) -import qualified Data.ByteString as BS -import qualified Data.ByteString.Lazy as LBS -import qualified Data.Map as M -import Data.Text.Lazy (unpack) -import Data.Text.Lazy.Builder (toLazyText) -import Data.Typeable (TypeRep) -import Data.Word (Word8) -import Formatting (Buildable, bprint, build) -import Hedgehog (annotate, failure, forAllWith, success) -import qualified Hedgehog as HH -import qualified Hedgehog.Gen as HH.Gen -import Numeric.Natural (Natural) -import Test.Cardano.Ledger.Binary.Arbitrary () -import Test.Hspec () -import Test.Hspec.QuickCheck () -import Test.QuickCheck ( - Arbitrary (arbitrary), - Gen, - Property, - choose, - forAll, - property, - (===), - ) - --------------------------------------------------------------------------------- --- From/to tests --------------------------------------------------------------------------------- - --- | Machinery to test we perform "flat" encoding. -cborFlatTermValid :: EncCBOR a => a -> Property -cborFlatTermValid = property . validFlatTerm . toFlatTerm byronProtVer . encCBOR - --------------------------------------------------------------------------------- - --- Type to be used to simulate a breaking change in the serialisation --- schema, so we can test instances which uses the `UnknownXX` pattern --- for extensibility. --- Check the `extensionProperty` for more details. -data U = U Word8 BS.ByteString deriving (Show, Eq) - -instance EncCBOR U where - encCBOR (U word8 bs) = - encodeListLen 2 - <> encCBOR (word8 :: Word8) - <> encodeNestedCborBytes - (LBS.fromStrict bs) - -instance DecCBOR U where - decCBOR = do - decodeListLenOf 2 - U <$> decCBOR <*> decodeNestedCborBytes - -instance Arbitrary U where - arbitrary = U <$> choose (0, 255) <*> arbitrary - --- | Like `U`, but we expect to read back the Cbor Data Item when decoding. -data U24 = U24 Word8 BS.ByteString deriving (Show, Eq) - -instance DecCBOR U24 where - decCBOR = do - decodeListLenOf 2 - U24 <$> decCBOR <*> decodeNestedCborBytes - -instance EncCBOR U24 where - encCBOR (U24 word8 bs) = - encodeListLen 2 - <> encCBOR (word8 :: Word8) - <> encodeNestedCborBytes - (LBS.fromStrict bs) - --- | Given a data type which can be extended, verify we can indeed do so --- without breaking anything. This should work with every time which adopted --- the schema of having at least one constructor of the form: --- .... | Unknown Word8 ByteString -extensionProperty :: - forall a. (Arbitrary a, Eq a, Show a, DecCBOR a, EncCBOR a) => Property -extensionProperty = forAll @a (arbitrary :: Gen a) $ \input -> - {- This function works as follows: - - 1. When we call `serialized`, we are implicitly assuming (as contract of this - function) that the input type would be of a shape such as: - - data MyType = Constructor1 Int Bool - | Constructor2 String - | UnknownConstructor Word8 ByteString - - Such type will be encoded, roughly, like this: - - encode (Constructor1 a b) = encodeWord 0 <> encodeNestedCbor (a,b) - encode (Constructor2 a b) = encodeWord 1 <> encodeNestedCbor a - encode (UnknownConstructor tag bs) = encodeWord tag <> encodeNestedCborBytes bs - - In CBOR terms, we would produce something like this: - - - - 2. Now, when we call `unsafeDeserialize serialized`, we are effectively asking to produce as - output a value of type `U`. `U` is defined by only 1 constructor, it - being `U Word8 ByteString`, but this is still compatible with our `tag + cborDataItem` - format. So now we will have something like: - - U - - (The has been removed as part of the decoding process). - - 3. We now call `unsafeDeserialize (serialize u)`, which means: Can you produce a CBOR binary - from `U`, and finally try to decode it into a value of type `a`? This will work because - our intermediate encoding into `U` didn't touch the inital ``, so we will - be able to reconstruct the original object back. - More specifically, `serialize u` would produce once again: - - - - (The has been added as part of the encoding process). - - `unsafeDeserialize` would then consume the tag (to understand which type constructor this corresponds to), - remove the token and finally proceed to deserialise the rest. - - -} - let serialized = serialize byronProtVer input -- Step 1 - (u :: U) = unsafeDeserialize byronProtVer serialized -- Step 2 - (encoded :: a) = unsafeDeserialize byronProtVer (serialize byronProtVer u) -- Step 3 - in encoded === input - --------------------------------------------------------------------------------- --- Static size estimates --------------------------------------------------------------------------------- - -bshow :: Buildable a => a -> String -bshow = unpack . toLazyText . bprint build - --- | Configuration for a single test case. -data SizeTestConfig a = SizeTestConfig - { debug :: a -> String - -- ^ Pretty-print values - , gen :: HH.Gen a - -- ^ Generator - , precise :: Bool - -- ^ Must estimates be exact? - , addlCtx :: M.Map TypeRep SizeOverride - -- ^ Additional size overrides - , computedCtx :: a -> M.Map TypeRep SizeOverride - -- ^ Size overrides computed from a concrete instance. - } - --- | Default configuration, for @Buildable@ types. -cfg :: Buildable a => SizeTestConfig a -cfg = - SizeTestConfig - { debug = bshow - , gen = HH.Gen.discard - , precise = False - , addlCtx = M.empty - , computedCtx = const M.empty - } - --- | Default configuration, for @Show@able types. -scfg :: Show a => SizeTestConfig a -scfg = - SizeTestConfig - { debug = show - , gen = HH.Gen.discard - , precise = False - , addlCtx = M.empty - , computedCtx = const M.empty - } - --- | Create a test case from the given test configuration. -sizeTest :: forall a. EncCBOR a => SizeTestConfig a -> HH.Property -sizeTest SizeTestConfig {..} = HH.property $ do - x <- forAllWith debug gen - - let ctx = M.union (computedCtx x) addlCtx - - badBounds :: Natural -> Range Natural -> HH.PropertyT IO () - badBounds sz bounds = do - annotate ("Computed bounds: " <> bshow bounds) - annotate ("Actual size: " <> show sz) - annotate ("Value: " <> debug x) - - case szVerify ctx x of - Exact -> success - WithinBounds _ _ | not precise -> success - WithinBounds sz bounds -> do - badBounds sz bounds - annotate "Bounds were not exact." - failure - BoundsAreSymbolic bounds -> do - annotate ("Bounds are symbolic: " <> bshow bounds) - failure - OutOfBounds sz bounds -> do - badBounds sz bounds - annotate "Size fell outside of bounds." - failure - --- | The possible results from @szVerify@, describing various ways --- a size can or cannot be found within a certain range. -data ComparisonResult - = -- | Size matched the bounds, and the bounds were exact. - Exact - | -- | Size matched the bounds, but the bounds are not exact. - WithinBounds Natural (Range Natural) - | -- | The bounds could not be reduced to a numerical range. - BoundsAreSymbolic Size - | -- | The size fell outside of the bounds. - OutOfBounds Natural (Range Natural) - --- | For a given value @x :: a@ with @EncCBOR a@, check that the encoded size --- of @x@ falls within the statically-computed size range for @a@. -szVerify :: EncCBOR a => M.Map TypeRep SizeOverride -> a -> ComparisonResult -szVerify ctx x = case szSimplify (szWithCtx ctx (pure x)) of - Left bounds -> BoundsAreSymbolic bounds - Right range - | lo range <= sz && sz <= hi range -> - if lo range == hi range then Exact else WithinBounds sz range - Right range -> OutOfBounds sz range - where - sz :: Natural - sz = fromIntegral $ LBS.length $ serialize byronProtVer x diff --git a/libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/Vintage/Helpers/GoldenRoundTrip.hs b/libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/Vintage/Helpers/GoldenRoundTrip.hs deleted file mode 100644 index 040e44801bf..00000000000 --- a/libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/Vintage/Helpers/GoldenRoundTrip.hs +++ /dev/null @@ -1,183 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - --- | Golden and round-trip testing of 'DecCBOR' and 'EncCBOR' instances -module Test.Cardano.Ledger.Binary.Vintage.Helpers.GoldenRoundTrip ( - goldenTestCBOR, - goldenTestCBORExplicit, - goldenTestExplicit, - roundTripsCBORShow, - roundTripsCBORBuildable, - compareHexDump, - deprecatedGoldenDecode, -) -where - -import Cardano.Ledger.Binary ( - DecCBOR (..), - Decoder, - DecoderError, - EncCBOR (..), - Encoding, - Version, - decodeFull, - decodeFullDecoder, - natVersion, - serialize, - ) -import Control.Monad.IO.Class (MonadIO (liftIO)) -import qualified Data.ByteString.Lazy as BSL -import qualified Data.ByteString.Lazy.Char8 as BS -import Data.Proxy (Proxy (Proxy)) -import Data.Text (Text) -import Formatting.Buildable (Buildable (..)) -import GHC.Stack (HasCallStack, withFrozenCallStack) -import Hedgehog ( - MonadTest, - Property, - eval, - property, - success, - tripping, - withTests, - (===), - ) -import Hedgehog.Internal.Property (failWith) -import Hedgehog.Internal.Show ( - LineDiff, - lineDiff, - mkValue, - renderLineDiff, - showPretty, - ) -import Test.Cardano.Prelude ( - decodeBase16, - encodeWithIndex, - trippingBuildable, - ) -import Text.Show.Pretty (Value (..)) - -byronProtVer :: Version -byronProtVer = natVersion @1 - -type HexDump = BSL.ByteString - -type HexDumpDiff = [LineDiff] - -renderHexDumpDiff :: HexDumpDiff -> [Char] -renderHexDumpDiff = Prelude.unlines . fmap renderLineDiff - --- | Diff two 'HexDump's by comparing lines pairwise -hexDumpDiff :: HexDump -> HexDump -> Maybe HexDumpDiff -hexDumpDiff x y = do - xs <- sequence (mkValue <$> BS.lines x) - ys <- sequence (mkValue <$> BS.lines y) - pure $ - concatMap (uncurry lineDiff) $ - zipWithPadding - (String "") - (String "") - xs - ys - -zipWithPadding :: a -> b -> [a] -> [b] -> [(a, b)] -zipWithPadding a b (x : xs) (y : ys) = (x, y) : zipWithPadding a b xs ys -zipWithPadding a _ [] ys = zip (repeat a) ys -zipWithPadding _ b xs [] = zip xs (repeat b) - --- | A custom version of '(===)' for 'HexDump's to get prettier diffs -compareHexDump :: (MonadTest m, HasCallStack) => HexDump -> HexDump -> m () -compareHexDump x y = do - ok <- withFrozenCallStack $ eval (x == y) - if ok then success else withFrozenCallStack $ failHexDumpDiff x y - --- | Fail with a nice line diff of the two HexDumps -failHexDumpDiff :: (MonadTest m, HasCallStack) => HexDump -> HexDump -> m () -failHexDumpDiff x y = case hexDumpDiff x y of - Nothing -> - withFrozenCallStack $ - failWith Nothing $ - Prelude.unlines - ["━━━ Not Equal ━━━", showPretty x, showPretty y] - Just dif -> withFrozenCallStack $ failWith Nothing $ renderHexDumpDiff dif - --- | Check that the 'encode' and 'decode' function of the 'Bi' instances work as --- expected w.r.t. the give reference data, this is, given a value @x::a@, and --- a file path @fp@: --- --- - The encoded data should coincide with the contents of the @fp@. --- - Decoding @fp@ should give as a result @x@ -goldenTestCBOR :: - forall a. - (DecCBOR a, EncCBOR a, Eq a, Show a, HasCallStack) => - a -> - FilePath -> - Property -goldenTestCBOR = - withFrozenCallStack $ - goldenTestCBORExplicit (label $ Proxy @a) encCBOR decCBOR - --- | Variant of 'goldenTestBi' using custom encode and decode functions. --- --- This is required for the encode/decode golden-tests for types that do no --- have a 'Bi' instance. -goldenTestCBORExplicit :: - forall a. - (Eq a, Show a, HasCallStack) => - -- | Label for error reporting when decoding. - Text -> - (a -> Encoding) -> - (forall s. Decoder s a) -> - a -> - FilePath -> - Property -goldenTestCBORExplicit eLabel enc dec = - goldenTestExplicit (serialize byronProtVer . enc) fullDecoder - where - fullDecoder :: BSL.ByteString -> Either DecoderError a - fullDecoder = decodeFullDecoder byronProtVer eLabel dec - -goldenTestExplicit :: - forall a. - (Eq a, Show a, HasCallStack) => - (a -> BS.ByteString) -> - (BS.ByteString -> Either DecoderError a) -> - a -> - FilePath -> - Property -goldenTestExplicit encode decode x path = withFrozenCallStack $ do - let bs' = encodeWithIndex . encode $ x - withTests 1 . property $ do - bs <- liftIO $ BS.readFile path - let target = decodeBase16 bs - compareHexDump bs bs' - fmap decode target === Just (Right x) - --- | Round trip test a value (any instance of 'DecCBOR', 'EncCBOR', and 'Show' --- classes) by serializing it to a ByteString and back again and that also has --- a 'Show' instance. If the 'a' type has both 'Show' and 'Buildable' --- instances, it's best to use this version. -roundTripsCBORShow :: - (DecCBOR a, EncCBOR a, Eq a, MonadTest m, Show a, HasCallStack) => - a -> - m () -roundTripsCBORShow x = - withFrozenCallStack $ tripping x (serialize byronProtVer) (decodeFull byronProtVer) - --- | Round trip (via ByteString) any instance of the 'DecCBOR' and 'EncCBOR' --- class that also has a 'Buildable' instance. -roundTripsCBORBuildable :: - (DecCBOR a, EncCBOR a, Eq a, MonadTest m, Buildable a, HasCallStack) => - a -> - m () -roundTripsCBORBuildable a = - withFrozenCallStack $ trippingBuildable a (serialize byronProtVer) (decodeFull byronProtVer) - -deprecatedGoldenDecode :: - HasCallStack => Text -> (forall s. Decoder s ()) -> FilePath -> Property -deprecatedGoldenDecode lbl decoder path = - withFrozenCallStack $ withTests 1 . property $ do - bs <- decodeBase16 <$> liftIO (BS.readFile path) - fmap (decodeFullDecoder byronProtVer lbl decoder) bs === Just (Right ()) diff --git a/libs/cardano-ledger-conformance/Setup.hs b/libs/cardano-ledger-conformance/Setup.hs deleted file mode 100644 index e8ef27dbba9..00000000000 --- a/libs/cardano-ledger-conformance/Setup.hs +++ /dev/null @@ -1,3 +0,0 @@ -import Distribution.Simple - -main = defaultMain diff --git a/libs/cardano-ledger-conformance/cardano-ledger-conformance.cabal b/libs/cardano-ledger-conformance/cardano-ledger-conformance.cabal deleted file mode 100644 index af70b1ce977..00000000000 --- a/libs/cardano-ledger-conformance/cardano-ledger-conformance.cabal +++ /dev/null @@ -1,81 +0,0 @@ -cabal-version: 3.0 -name: cardano-ledger-conformance -version: 0.1.0.0 -license: Apache-2.0 -maintainer: operations@iohk.io -author: IOHK -bug-reports: https://github.com/intersectmbo/cardano-ledger/issues -synopsis: Testing utilities for conformance testing -description: Testing utilities for conformance testing -build-type: Simple - -source-repository head - type: git - location: https://github.com/intersectmbo/cardano-ledger - subdir: libs/cardano-ledger-conformance - -flag asserts - description: Enable assertions - default: False - -library - exposed-modules: - Test.Cardano.Ledger.Conformance - Test.Cardano.Ledger.Conformance.Spec.Conway - - hs-source-dirs: src - other-modules: - Test.Cardano.Ledger.Conformance.Orphans - Test.Cardano.Ledger.Conformance.SpecTranslate.Core - Test.Cardano.Ledger.Conformance.SpecTranslate.Conway - Test.Cardano.Ledger.Conformance.ExecSpecRule.Core - Test.Cardano.Ledger.Conformance.ExecSpecRule.Conway - - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wpartial-fields - -Wunused-packages - - build-depends: - base >=4.14 && <5, - cardano-data, - cardano-strict-containers, - microlens, - mtl, - cardano-ledger-binary, - cardano-ledger-core, - cardano-ledger-shelley:{cardano-ledger-shelley, testlib}, - cardano-ledger-alonzo, - cardano-ledger-babbage, - cardano-ledger-conway:{cardano-ledger-conway, testlib}, - cardano-ledger-executable-spec, - cardano-crypto-class, - cardano-ledger-core:testlib, - cardano-ledger-test, - containers, - constrained-generators, - deepseq, - small-steps >=1.1, - text - - if !impl(ghc >=9.2) - ghc-options: -Wno-incomplete-patterns - - if flag(asserts) - ghc-options: -fno-ignore-asserts - -test-suite tests - type: exitcode-stdio-1.0 - main-is: Main.hs - hs-source-dirs: test - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wpartial-fields - -Wunused-packages -threaded -rtsopts -with-rtsopts=-N - - build-depends: - base >=4.14 && <5, - cardano-ledger-conformance, - cardano-ledger-core:testlib diff --git a/libs/cardano-ledger-conformance/src/Test/Cardano/Ledger/Conformance.hs b/libs/cardano-ledger-conformance/src/Test/Cardano/Ledger/Conformance.hs deleted file mode 100644 index 56e31872b29..00000000000 --- a/libs/cardano-ledger-conformance/src/Test/Cardano/Ledger/Conformance.hs +++ /dev/null @@ -1,17 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilyDependencies #-} -{-# LANGUAGE UndecidableInstances #-} - -module Test.Cardano.Ledger.Conformance ( - module Test.Cardano.Ledger.Conformance.ExecSpecRule.Core, - module Test.Cardano.Ledger.Conformance.SpecTranslate.Core, -) where - -import Test.Cardano.Ledger.Conformance.ExecSpecRule.Core -import Test.Cardano.Ledger.Conformance.Orphans () -import Test.Cardano.Ledger.Conformance.SpecTranslate.Core diff --git a/libs/cardano-ledger-conformance/src/Test/Cardano/Ledger/Conformance/ExecSpecRule/Conway.hs b/libs/cardano-ledger-conformance/src/Test/Cardano/Ledger/Conformance/ExecSpecRule/Conway.hs deleted file mode 100644 index d070588392d..00000000000 --- a/libs/cardano-ledger-conformance/src/Test/Cardano/Ledger/Conformance/ExecSpecRule/Conway.hs +++ /dev/null @@ -1,143 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Conformance.ExecSpecRule.Conway () where - -import Cardano.Ledger.BaseTypes (Inject (..)) -import Cardano.Ledger.Conway (Conway) -import Cardano.Ledger.Conway.Core (Era (..), EraPParams) -import Cardano.Ledger.Conway.Governance (EnactState) -import Cardano.Ledger.Conway.Rules (ConwayGovPredFailure) -import Cardano.Ledger.Conway.Tx (AlonzoTx) -import Constrained -import Control.DeepSeq (NFData) -import Data.Bifunctor (Bifunctor (..)) -import qualified Data.List.NonEmpty as NE -import qualified Data.Text as T -import GHC.Generics (Generic) -import qualified Lib as Agda -import Test.Cardano.Ledger.Conformance ( - ExecSpecRule (..), - SpecTranslate (..), - computationResultToEither, - ) -import Test.Cardano.Ledger.Conformance.SpecTranslate.Conway ( - GovProceduresSpecTransCtx, - OpaqueErrorString (..), - ) -import Test.Cardano.Ledger.Constrained.Conway ( - IsConwayUniv, - govEnvSpec, - govProceduresSpec, - govProposalsSpec, - utxoEnvSpec, - utxoStateSpec, - utxoTxSpec, - ) - -data ConwayGovExecContext era - = ConwayGovExecContext - (GovProceduresSpecTransCtx (EraCrypto era)) - (EnactState era) - deriving (Generic) - -deriving instance EraPParams era => Eq (ConwayGovExecContext era) - -deriving instance EraPParams era => Show (ConwayGovExecContext era) - -instance HasSimpleRep (ConwayGovExecContext era) - -instance - ( IsConwayUniv fn - , EraPParams era - , HasSpec fn (EnactState era) - ) => - HasSpec fn (ConwayGovExecContext era) - -instance c ~ EraCrypto era => Inject (ConwayGovExecContext era) (GovProceduresSpecTransCtx c) where - inject (ConwayGovExecContext x _) = x - -instance Inject (ConwayGovExecContext era) (EnactState era) where - inject (ConwayGovExecContext _ x) = x - -instance - ( NFData (SpecRep (ConwayGovPredFailure Conway)) - , IsConwayUniv fn - ) => - ExecSpecRule fn "GOV" Conway - where - type ExecContext fn "GOV" Conway = ConwayGovExecContext Conway - - environmentSpec = govEnvSpec - - stateSpec = govProposalsSpec - - signalSpec = govProceduresSpec - - execContextSpec = TrueSpec - - runAgdaRule env st sig = - first (\e -> OpaqueErrorString (T.unpack e) NE.:| []) - . computationResultToEither - $ Agda.govStep env st sig - -instance - forall fn. - IsConwayUniv fn => - ExecSpecRule fn "UTXO" Conway - where - environmentSpec = utxoEnvSpec - - stateSpec = utxoStateSpec - - signalSpec env st = utxoTxSpec env st <> constrained agdaConstraints - where - agdaConstraints :: Term fn (AlonzoTx Conway) -> Pred fn - agdaConstraints tx = match @fn tx $ \txBody _ _ _ -> - match txBody $ - \_ctbSpendInputs - _ctbCollateralInputs - _ctbReferenceInputs - ctbOutputs - _ctbCollateralReturn - _ctbTotalCollateral - _ctbCerts - _ctbWithdrawals - _ctbTxfee - _ctbVldt - _ctbReqSignerHashes - _ctbMint - _ctbScriptIntegrityHash - _ctbAdHash - _ctbTxNetworkId - _ctbVotingProcedures - _ctbProposalProcedures - _ctbCurrentTreasuryValue - _ctbTreasuryDonation -> - match ctbOutputs $ - \outs -> forAll outs $ - \x -> match x $ - \txOut _ -> match txOut $ - \_ _ dat _ -> - caseOn - dat - (branch $ const True) - (branch $ const True) - (branch $ const False) - - runAgdaRule env st sig = - first (\e -> OpaqueErrorString (T.unpack e) NE.:| []) - . computationResultToEither - $ Agda.utxoStep env st sig diff --git a/libs/cardano-ledger-conformance/src/Test/Cardano/Ledger/Conformance/ExecSpecRule/Core.hs b/libs/cardano-ledger-conformance/src/Test/Cardano/Ledger/Conformance/ExecSpecRule/Core.hs deleted file mode 100644 index b82cbae363a..00000000000 --- a/libs/cardano-ledger-conformance/src/Test/Cardano/Ledger/Conformance/ExecSpecRule/Core.hs +++ /dev/null @@ -1,134 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DefaultSignatures #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} - -module Test.Cardano.Ledger.Conformance.ExecSpecRule.Core ( - ExecSpecRule (..), - conformsToImpl, - computationResultToEither, -) where - -import Cardano.Ledger.BaseTypes (Inject, ShelleyBase) -import Cardano.Ledger.Core (EraRule) -import qualified Constrained as CV2 -import Constrained.Base (Spec (..)) -import Control.State.Transition.Extended (STS (..)) -import Data.Bifunctor (Bifunctor (..)) -import Data.Bitraversable (bimapM) -import Data.Typeable (Typeable) -import GHC.Base (Constraint, NonEmpty, Symbol, Type) -import GHC.TypeLits (KnownSymbol) -import qualified Lib as Agda -import Test.Cardano.Ledger.Conformance.SpecTranslate.Core (SpecTranslate (..), runSpecTransM) -import Test.Cardano.Ledger.Imp.Common ( - MonadGen (..), - NFData, - ToExpr, - expectRightExpr, - shouldBeExpr, - ) -import Test.Cardano.Ledger.Shelley.ImpTest ( - ImpTestM, - impAnn, - logEntry, - logToExpr, - tryRunImpRule, - ) - -type ForAllRuleTypes (c :: Type -> Constraint) rule era = - ( c (Environment (EraRule rule era)) - , c (State (EraRule rule era)) - , c (Signal (EraRule rule era)) - ) - -class - ( ForAllRuleTypes (CV2.HasSpec fn) rule era - , ForAllRuleTypes (SpecTranslate (ExecContext fn rule era)) rule era - , ForAllRuleTypes ToExpr rule era - , ForAllRuleTypes NFData rule era - , CV2.HasSpec fn (ExecContext fn rule era) - , Inject (ExecContext fn rule era) (SpecTransContext (Environment (EraRule rule era))) - , Inject (ExecContext fn rule era) (SpecTransContext (State (EraRule rule era))) - , Inject (ExecContext fn rule era) (SpecTransContext (Signal (EraRule rule era))) - , Inject (ExecContext fn rule era) (SpecTransContext (PredicateFailure (EraRule rule era))) - , Eq (Event (EraRule rule era)) - , Typeable (Event (EraRule rule era)) - , KnownSymbol rule - , STS (EraRule rule era) - , BaseM (EraRule rule era) ~ ShelleyBase - , NFData (TestRep (PredicateFailure (EraRule rule era))) - , SpecTranslate (ExecContext fn rule era) (PredicateFailure (EraRule rule era)) - ) => - ExecSpecRule fn (rule :: Symbol) era - where - type ExecContext fn rule era - type ExecContext fn rule era = () - - environmentSpec :: - CV2.Spec fn (Environment (EraRule rule era)) - - stateSpec :: - Environment (EraRule rule era) -> - CV2.Spec fn (State (EraRule rule era)) - - signalSpec :: - Environment (EraRule rule era) -> - State (EraRule rule era) -> - CV2.Spec fn (Signal (EraRule rule era)) - - execContextSpec :: CV2.Spec fn (ExecContext fn rule era) - default execContextSpec :: - ExecContext fn rule era ~ () => - CV2.Spec fn (ExecContext fn rule era) - execContextSpec = TrueSpec - - runAgdaRule :: - SpecRep (Environment (EraRule rule era)) -> - SpecRep (State (EraRule rule era)) -> - SpecRep (Signal (EraRule rule era)) -> - Either - (NonEmpty (SpecRep (PredicateFailure (EraRule rule era)))) - (SpecRep (State (EraRule rule era))) - -conformsToImpl :: - forall (rule :: Symbol) fn era. - ( ExecSpecRule fn rule era - , NFData (SpecRep (PredicateFailure (EraRule rule era))) - , NFData (SpecRep (State (EraRule rule era))) - ) => - ImpTestM era () -conformsToImpl = impAnn "conformsToImpl" . resize 5 $ do - env <- liftGen . CV2.genFromSpec_ $ environmentSpec @fn @rule @era - logToExpr env - st <- liftGen . CV2.genFromSpec_ $ stateSpec @fn @rule @era env - logToExpr st - sig <- liftGen . CV2.genFromSpec_ $ signalSpec @fn @rule @era env st - logToExpr sig - logEntry . show $ signalSpec @fn @rule @era env st - (execContext :: ctx) <- liftGen . CV2.genFromSpec_ $ execContextSpec @fn @rule @era - agdaRes <- - impAnn "Translating spec values to SpecRep" . expectRightExpr . runSpecTransM execContext $ - runAgdaRule @fn @rule @era <$> toSpecRep env <*> toSpecRep st <*> toSpecRep sig - implRes <- fmap fst <$> tryRunImpRule @rule @era env st sig - implResTest <- - impAnn "Translating implementation values to SpecRep" . expectRightExpr . runSpecTransM execContext $ - bimapM (traverse toTestRep) toTestRep implRes - let - agdaResTest = - bimap - (fmap $ specToTestRep @ctx @(PredicateFailure (EraRule rule era))) - (specToTestRep @ctx @(State (EraRule rule era))) - agdaRes - agdaResTest `shouldBeExpr` implResTest - -computationResultToEither :: Agda.ComputationResult e a -> Either e a -computationResultToEither (Agda.Success x) = Right x -computationResultToEither (Agda.Failure e) = Left e diff --git a/libs/cardano-ledger-conformance/src/Test/Cardano/Ledger/Conformance/Orphans.hs b/libs/cardano-ledger-conformance/src/Test/Cardano/Ledger/Conformance/Orphans.hs deleted file mode 100644 index 98eba78d8d1..00000000000 --- a/libs/cardano-ledger-conformance/src/Test/Cardano/Ledger/Conformance/Orphans.hs +++ /dev/null @@ -1,117 +0,0 @@ -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Conformance.Orphans () where - -import GHC.Generics (Generic) -import Lib -import Test.Cardano.Ledger.Common (NFData, ToExpr) - -deriving instance Generic GovActionState - -deriving instance Generic Vote - -deriving instance Generic GovProposal - -deriving instance Generic GovAction - -deriving instance Generic GovVote - -deriving instance Generic GovSignal - -deriving instance Generic GovEnv - -deriving instance Generic EnactState - -deriving instance Eq AgdaEmpty - -deriving instance Eq TxBody - -deriving instance Eq Tag - -deriving instance Ord Tag - -deriving instance Ord Credential - -deriving instance Eq TxWitnesses - -deriving instance Eq Tx - -deriving instance Eq PParams - -deriving instance Eq UTxOState - -deriving instance Eq GovAction - -deriving instance Eq GovVote - -deriving instance Eq GovSignal - -deriving instance Eq GovProposal - -deriving instance Eq Vote - -deriving instance Eq GovActionState - -deriving instance Eq GovEnv - -deriving instance Eq EnactState - -deriving instance Eq UTxOEnv - -instance NFData GovAction - -instance NFData UTxOState - -instance NFData Vote - -instance NFData Credential - -instance NFData GovRole - -instance NFData GovActionState - -instance NFData AgdaEmpty - -instance NFData GovVote - -instance NFData GovProposal - -instance NFData GovSignal - -instance NFData PParams - -instance NFData EnactState - -instance NFData GovEnv - -instance NFData VDeleg - -instance NFData TxCert - -instance NFData TxBody - -instance NFData Tag - -instance NFData TxWitnesses - -instance NFData Tx - -instance NFData UTxOEnv - -instance ToExpr GovAction - -instance ToExpr Vote - -instance ToExpr GovActionState - -instance ToExpr GovProposal - -instance ToExpr GovVote - -instance ToExpr GovSignal - -instance ToExpr GovEnv - -instance ToExpr EnactState diff --git a/libs/cardano-ledger-conformance/src/Test/Cardano/Ledger/Conformance/Spec/Conway.hs b/libs/cardano-ledger-conformance/src/Test/Cardano/Ledger/Conformance/Spec/Conway.hs deleted file mode 100644 index b51c8166923..00000000000 --- a/libs/cardano-ledger-conformance/src/Test/Cardano/Ledger/Conformance/Spec/Conway.hs +++ /dev/null @@ -1,17 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Conformance.Spec.Conway (spec) where - -import Cardano.Ledger.Conway (Conway) -import Test.Cardano.Ledger.Conformance (conformsToImpl) -import Test.Cardano.Ledger.Conformance.ExecSpecRule.Conway () -import Test.Cardano.Ledger.Constrained.Conway -import Test.Cardano.Ledger.Conway.ImpTest (withImpState) -import Test.Cardano.Ledger.Imp.Common - -spec :: Spec -spec = describe "Conway conformance tests" $ do - withImpState @Conway $ do - xit "UTXO" . replicateM_ 100 $ conformsToImpl @"UTXO" @ConwayFn - xit "GOV" . replicateM_ 100 $ conformsToImpl @"GOV" @ConwayFn diff --git a/libs/cardano-ledger-conformance/src/Test/Cardano/Ledger/Conformance/SpecTranslate/Conway.hs b/libs/cardano-ledger-conformance/src/Test/Cardano/Ledger/Conformance/SpecTranslate/Conway.hs deleted file mode 100644 index ffbdd5cf991..00000000000 --- a/libs/cardano-ledger-conformance/src/Test/Cardano/Ledger/Conformance/SpecTranslate/Conway.hs +++ /dev/null @@ -1,877 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TupleSections #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Conformance.SpecTranslate.Conway ( - SpecTranslate (..), - SpecTranslationError, - OpaqueErrorString (..), - GovProceduresSpecTransCtx, -) where - -import Cardano.Crypto.DSIGN (DSIGNAlgorithm (..), SignedDSIGN (..)) -import Cardano.Crypto.Hash (Hash, hashToBytes) -import Cardano.Ledger.Address (Addr (..), RewardAccount (..), serialiseAddr) -import Cardano.Ledger.Alonzo (AlonzoTxAuxData) -import Cardano.Ledger.Alonzo.PParams (OrdExUnits (OrdExUnits)) -import Cardano.Ledger.Alonzo.Scripts (AlonzoPlutusPurpose (..)) -import Cardano.Ledger.Alonzo.Tx (AlonzoTx (..)) -import Cardano.Ledger.Alonzo.TxWits (AlonzoTxWits (..), Redeemers (..), TxDats (..)) -import Cardano.Ledger.Babbage.Rules (BabbageUtxoPredFailure) -import Cardano.Ledger.Babbage.TxOut (BabbageTxOut (..)) -import Cardano.Ledger.BaseTypes ( - Anchor, - BoundedRational (..), - EpochInterval (..), - EpochNo (..), - Inject, - Network, - ProtVer (..), - SlotNo (..), - StrictMaybe (..), - TxIx (..), - UnitInterval, - getVersion, - strictMaybeToMaybe, - ) -import Cardano.Ledger.Binary (Sized (..)) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Conway.Core -import Cardano.Ledger.Conway.Governance ( - Committee (Committee), - Constitution (..), - EnactState (..), - GovAction (..), - GovActionId (GovActionId), - GovActionIx (..), - GovActionState (..), - GovProcedures (..), - GovPurposeId (GovPurposeId), - GovRelation (..), - ProposalProcedure (..), - Proposals, - Vote (..), - Voter (..), - VotingProcedure (..), - VotingProcedures (..), - foldrVotingProcedures, - gasAction, - gasReturnAddr, - pPropsL, - ) -import Cardano.Ledger.Conway.PParams (ConwayPParams (..), THKD (..)) -import Cardano.Ledger.Conway.Rules (ConwayGovPredFailure, GovEnv (..)) -import Cardano.Ledger.Conway.Scripts (ConwayPlutusPurpose (..)) -import Cardano.Ledger.Conway.TxCert ( - ConwayDelegCert (..), - ConwayGovCert (..), - ConwayTxCert (..), - getStakePoolDelegatee, - getVoteDelegatee, - ) -import Cardano.Ledger.Credential (Credential (..)) -import Cardano.Ledger.Crypto (Crypto (..)) -import Cardano.Ledger.DRep (DRep (..)) -import Cardano.Ledger.HKD (HKD) -import Cardano.Ledger.Keys (KeyHash (..), VKey (..)) -import Cardano.Ledger.Keys.WitVKey (WitVKey (..)) -import Cardano.Ledger.Plutus (CostModels, ExUnits (..), Prices) -import Cardano.Ledger.Plutus.Data (Data, Datum (..)) -import Cardano.Ledger.PoolParams (PoolParams (..)) -import Cardano.Ledger.SafeHash (SafeHash, extractHash) -import Cardano.Ledger.Shelley.LedgerState (UTxOState (..)) -import Cardano.Ledger.Shelley.Rules (Identity, UtxoEnv (..)) -import Cardano.Ledger.Tools (byteStringToNum) -import Cardano.Ledger.TxIn (TxId (..), TxIn (..)) -import Cardano.Ledger.UTxO (UTxO (..)) -import Cardano.Ledger.Val (Val (..)) -import Constrained (HasSimpleRep, HasSpec) -import Control.DeepSeq (NFData) -import Control.Monad.Except (MonadError (..)) -import Control.State.Transition.Extended (STS (..)) -import Data.Bifunctor (Bifunctor (..)) -import Data.Bitraversable (bimapM) -import Data.Data (Typeable) -import Data.Foldable (Foldable (..)) -import qualified Data.List as L -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.OMap.Strict (OMap, assocList) -import Data.OSet.Strict (OSet) -import Data.Ratio (denominator, numerator) -import Data.Sequence.Strict (StrictSeq) -import Data.Set (Set) -import qualified Data.Set as Set -import Data.Traversable (forM) -import Data.Word (Word32, Word64) -import GHC.Generics (Generic) -import Lens.Micro -import Lens.Micro.Extras (view) -import qualified Lib as Agda -import Test.Cardano.Ledger.Conformance ( - SpecTransM, - SpecTranslate (..), - SpecTranslationError, - askTransCtx, - ) -import Test.Cardano.Ledger.Constrained.Conway.Instances (IsConwayUniv) -import Test.Cardano.Ledger.Conway.TreeDiff (ToExpr (..)) - --- | OpaqueErrorString behaves like unit in comparisons, but contains an --- error string that can be displayed. -newtype OpaqueErrorString = OpaqueErrorString String - deriving (Generic) - -instance Eq OpaqueErrorString where - _ == _ = True - -instance ToExpr OpaqueErrorString - -instance NFData OpaqueErrorString - -instance SpecTranslate ctx TxIx where - type SpecRep TxIx = Integer - - toSpecRep (TxIx x) = pure $ toInteger x - -instance SpecTranslate ctx (TxIn era) where - type SpecRep (TxIn era) = Agda.TxIn - - toSpecRep (TxIn txId txIx) = toSpecRep (txId, txIx) - -instance SpecTranslate ctx (Addr era) where - type SpecRep (Addr era) = Agda.Addr - - toSpecRep = pure . byteStringToNum . serialiseAddr - -instance SpecTranslate ctx (SafeHash c EraIndependentData) where - type SpecRep (SafeHash c EraIndependentData) = Agda.DataHash - - toSpecRep _ = pure () - -instance SpecTranslate ctx (SafeHash c EraIndependentScriptIntegrity) where - type SpecRep (SafeHash c EraIndependentScriptIntegrity) = Agda.Hash - - toSpecRep = toSpecRep . extractHash - -instance SpecTranslate ctx (SafeHash c EraIndependentTxBody) where - type SpecRep (SafeHash c EraIndependentTxBody) = Agda.Hash - - toSpecRep = toSpecRep . extractHash - -instance EraTxOut era => SpecTranslate ctx (BabbageTxOut era) where - type SpecRep (BabbageTxOut era) = Agda.TxOut - - toSpecRep (BabbageTxOut addr val datum _) = - let mkTxOut x = do - addr' <- toSpecRep addr - coin' <- toSpecRep $ coin val - pure (addr', (coin', x)) - in case datum of - NoDatum -> mkTxOut Nothing - DatumHash h -> mkTxOut . Just =<< toSpecRep h - Datum _ -> throwError "Inline datums not supported by spec" - -instance SpecTranslate ctx Integer where - type SpecRep Integer = Integer - - toSpecRep = pure - -deriving instance SpecTranslate ctx Coin - -instance - ( SpecTranslate ctx (TxOut era) - , SpecRep (TxOut era) ~ Agda.TxOut - ) => - SpecTranslate ctx (UTxO era) - where - type SpecRep (UTxO era) = SpecRep (Map (TxIn (EraCrypto era)) (TxOut era)) - toSpecRep (UTxO m) = toSpecRep m - specToTestRep = L.sortOn fst - -instance - ( SpecTranslate ctx (TxOut era) - , SpecRep (TxOut era) ~ Agda.TxOut - ) => - SpecTranslate ctx (UTxOState era) - where - type SpecRep (UTxOState era) = Agda.UTxOState - - toSpecRep x = - Agda.MkUTxOState - <$> toSpecRep (utxosUtxo x) - <*> toSpecRep (utxosFees x) - - specToTestRep x@(Agda.MkUTxOState _ _) = - let Agda.MkUTxOState {..} = x - in Agda.MkUTxOState (specToTestRep @ctx @(UTxO era) utxo) (specToTestRep @_ @Coin fees) - -deriving instance SpecTranslate ctx SlotNo - -deriving instance SpecTranslate ctx EpochNo - -deriving instance SpecTranslate ctx EpochInterval - -instance SpecTranslate ctx ProtVer where - type SpecRep ProtVer = (Integer, Integer) - - toSpecRep (ProtVer ver minor) = pure (getVersion ver, toInteger minor) - -data VotingThresholds - = VotingThresholds - DRepVotingThresholds - PoolVotingThresholds - -instance SpecTranslate ctx VotingThresholds where - type SpecRep VotingThresholds = () - - toSpecRep _ = pure () - -instance SpecTranslate ctx CostModels where - type SpecRep CostModels = Agda.AgdaEmpty - - toSpecRep _ = - pure $ - error "TODO change this to unit once it is fixed in the spec" - -instance SpecTranslate ctx Prices where - type SpecRep Prices = () - - toSpecRep _ = pure () - -instance SpecTranslate ctx ExUnits where - type SpecRep ExUnits = Agda.ExUnits - - toSpecRep (ExUnits a b) = pure (toInteger a, toInteger b) - -deriving instance SpecTranslate ctx OrdExUnits - -deriving instance SpecTranslate ctx CoinPerByte - -instance - ( SpecTranslate ctx (HKD f a) - , Eq (SpecRep (HKD f a)) - , ToExpr (SpecRep (HKD f a)) - , NFData (SpecRep (HKD f a)) - ) => - SpecTranslate ctx (THKD r f a) - where - type SpecRep (THKD r f a) = SpecRep (HKD f a) - - toSpecRep = toSpecRep . unTHKD - -instance SpecTranslate ctx (ConwayPParams Identity era) where - type SpecRep (ConwayPParams Identity era) = Agda.PParams - - toSpecRep x = - Agda.MkPParams - <$> toSpecRep (cppMinFeeA x) - <*> toSpecRep (cppMinFeeB x) - <*> pure (toInteger . unTHKD $ cppMaxBBSize x) - <*> pure (toInteger . unTHKD $ cppMaxTxSize x) - <*> pure (toInteger . unTHKD $ cppMaxBHSize x) - <*> pure (toInteger . unTHKD $ cppMaxValSize x) - <*> pure 0 -- minUTxOValue has been deprecated and is not supported in Conway - <*> toSpecRep (cppPoolDeposit x) - <*> toSpecRep (cppEMax x) - <*> toSpecRep (toInteger . unTHKD $ cppNOpt x) - <*> toSpecRep (cppProtocolVersion x) - <*> toSpecRep - ( VotingThresholds - (unTHKD $ cppDRepVotingThresholds x) - (unTHKD $ cppPoolVotingThresholds x) - ) - <*> toSpecRep (cppGovActionLifetime x) - <*> toSpecRep (cppGovActionDeposit x) - <*> toSpecRep (cppDRepDeposit x) - <*> toSpecRep (cppDRepActivity x) - <*> pure (toInteger . unTHKD $ cppCommitteeMinSize x) - <*> pure (toInteger . unEpochInterval . unTHKD $ cppCommitteeMaxTermLength x) - <*> toSpecRep (cppCostModels x) - <*> toSpecRep (cppPrices x) - <*> toSpecRep (cppMaxTxExUnits x) - <*> toSpecRep (cppMaxBlockExUnits x) - <*> toSpecRep (cppCoinsPerUTxOByte x) - <*> pure (toInteger . unTHKD $ cppMaxCollateralInputs x) - -instance - ( SpecTranslate ctx (PParamsHKD Identity era) - , Eq (SpecRep (PParamsHKD Identity era)) - , ToExpr (SpecRep (PParamsHKD Identity era)) - , NFData (SpecRep (PParamsHKD Identity era)) - ) => - SpecTranslate ctx (PParams era) - where - type SpecRep (PParams era) = SpecRep (PParamsHKD Identity era) - - toSpecRep (PParams x) = toSpecRep x - -instance - ( SpecRep (PParams era) ~ Agda.PParams - , SpecTranslate ctx (PParamsHKD Identity era) - ) => - SpecTranslate ctx (UtxoEnv era) - where - type SpecRep (UtxoEnv era) = Agda.UTxOEnv - - toSpecRep x = - Agda.MkUTxOEnv - <$> toSpecRep (ueSlot x) - <*> toSpecRep (uePParams x) - -instance (SpecTranslate ctx a, Ord (TestRep a)) => SpecTranslate ctx (Set a) where - type SpecRep (Set a) = [SpecRep a] - type TestRep (Set a) = [TestRep a] - - toSpecRep = traverse toSpecRep . Set.toList - specToTestRep = L.sort . fmap (specToTestRep @ctx @a) - -instance SpecTranslate ctx a => SpecTranslate ctx (StrictSeq a) where - type SpecRep (StrictSeq a) = [SpecRep a] - type TestRep (StrictSeq a) = [TestRep a] - - toSpecRep = traverse toSpecRep . toList - specToTestRep = fmap (specToTestRep @ctx @a) - -instance SpecTranslate ctx a => SpecTranslate ctx (Sized a) where - type SpecRep (Sized a) = SpecRep a - type TestRep (Sized a) = TestRep a - - toSpecRep (Sized x _) = toSpecRep x - specToTestRep = specToTestRep @ctx @a - -instance SpecTranslate ctx ValidityInterval where - type SpecRep ValidityInterval = (Maybe Integer, Maybe Integer) - - toSpecRep (ValidityInterval lo hi) = toSpecRep (lo, hi) - -instance SpecTranslate ctx (Hash a b) where - type SpecRep (Hash a b) = Agda.Hash - - toSpecRep = pure . byteStringToNum . hashToBytes - -deriving instance SpecTranslate ctx (KeyHash r c) - -instance Crypto c => SpecTranslate ctx (VKey k c) where - type SpecRep (VKey k c) = Integer - - toSpecRep (VKey x) = pure . byteStringToNum $ rawSerialiseVerKeyDSIGN x - -instance DSIGNAlgorithm v => SpecTranslate ctx (SignedDSIGN v a) where - type SpecRep (SignedDSIGN v a) = Integer - - toSpecRep (SignedDSIGN x) = - pure . byteStringToNum $ rawSerialiseSigDSIGN x - -instance (Crypto c, Typeable k) => SpecTranslate ctx (WitVKey k c) where - type SpecRep (WitVKey k c) = (Integer, Integer) - - toSpecRep (WitVKey vk sk) = toSpecRep (vk, sk) - -instance Era era => SpecTranslate ctx (TxDats era) where - type SpecRep (TxDats era) = [(Agda.DataHash, Agda.Datum)] - - toSpecRep (TxDats x) = toSpecRep x - -instance - ( SpecTranslate ctx k - , SpecTranslate ctx v - , Ord (TestRep k) - ) => - SpecTranslate ctx (Map k v) - where - type SpecRep (Map k v) = [(SpecRep k, SpecRep v)] - type TestRep (Map k v) = [(TestRep k, TestRep v)] - - toSpecRep = traverse (bimapM toSpecRep toSpecRep) . Map.toList - specToTestRep = L.sortOn fst . fmap (bimap (specToTestRep @ctx @k) (specToTestRep @ctx @v)) - -instance SpecTranslate ctx Word64 where - type SpecRep Word64 = Integer - - toSpecRep = pure . toInteger - -instance SpecTranslate ctx Word32 where - type SpecRep Word32 = Integer - - toSpecRep = pure . toInteger - -instance SpecTranslate ctx (AlonzoPlutusPurpose AsIx era) where - type SpecRep (AlonzoPlutusPurpose AsIx era) = Agda.RdmrPtr - - toSpecRep = \case - AlonzoSpending (AsIx i) -> pure (Agda.Spend, toInteger i) - AlonzoMinting (AsIx i) -> pure (Agda.Mint, toInteger i) - AlonzoCertifying (AsIx i) -> pure (Agda.Cert, toInteger i) - AlonzoRewarding (AsIx i) -> pure (Agda.Rewrd, toInteger i) - -instance SpecTranslate ctx (ConwayPlutusPurpose AsIx era) where - type SpecRep (ConwayPlutusPurpose AsIx era) = Agda.RdmrPtr - - toSpecRep = \case - ConwaySpending (AsIx i) -> pure (Agda.Spend, toInteger i) - ConwayMinting (AsIx i) -> pure (Agda.Mint, toInteger i) - ConwayCertifying (AsIx i) -> pure (Agda.Cert, toInteger i) - ConwayRewarding (AsIx i) -> pure (Agda.Rewrd, toInteger i) - ConwayVoting (AsIx i) -> pure (Agda.Vote, toInteger i) - ConwayProposing (AsIx i) -> pure (Agda.Propose, toInteger i) - -instance - ( SpecTranslate ctx a - , SpecTranslate ctx b - ) => - SpecTranslate ctx (a, b) - where - type SpecRep (a, b) = (SpecRep a, SpecRep b) - type TestRep (a, b) = (TestRep a, TestRep b) - - toSpecRep (x, y) = (,) <$> toSpecRep x <*> toSpecRep y - specToTestRep = bimap (specToTestRep @ctx @a) (specToTestRep @ctx @b) - -instance SpecTranslate ctx (Data era) where - type SpecRep (Data era) = () - - toSpecRep _ = pure () - -instance - ( AlonzoEraScript era - , Ord (TestRep (PlutusPurpose AsIx era)) - , SpecTranslate ctx (PlutusPurpose AsIx era) - ) => - SpecTranslate ctx (Redeemers era) - where - type - SpecRep (Redeemers era) = - [(SpecRep (PlutusPurpose AsIx era), (Agda.Redeemer, Agda.ExUnits))] - type - TestRep (Redeemers era) = - [(TestRep (PlutusPurpose AsIx era), (Agda.Redeemer, Agda.ExUnits))] - - toSpecRep (Redeemers x) = toSpecRep x - specToTestRep = fmap (first $ specToTestRep @ctx @(PlutusPurpose AsIx era)) - -instance - ( AlonzoEraScript era - , SpecTranslate ctx (PlutusPurpose AsIx era) - , SpecRep (PlutusPurpose AsIx era) ~ Agda.RdmrPtr - , Ord (TestRep (PlutusPurpose AsIx era)) - ) => - SpecTranslate ctx (AlonzoTxWits era) - where - type SpecRep (AlonzoTxWits era) = Agda.TxWitnesses - - toSpecRep x = - Agda.MkTxWitnesses - <$> toSpecRep (txwitsVKey x) - <*> pure [] - <*> toSpecRep (txdats x) - <*> toSpecRep (txrdmrs x) - -instance SpecTranslate ctx a => SpecTranslate ctx (StrictMaybe a) where - type SpecRep (StrictMaybe a) = Maybe (SpecRep a) - type TestRep (StrictMaybe a) = Maybe (TestRep a) - - toSpecRep = toSpecRep . strictMaybeToMaybe - specToTestRep = fmap (specToTestRep @ctx @a) - -instance SpecTranslate ctx a => SpecTranslate ctx (Maybe a) where - type SpecRep (Maybe a) = Maybe (SpecRep a) - type TestRep (Maybe a) = Maybe (TestRep a) - - toSpecRep = traverse toSpecRep - specToTestRep = fmap (specToTestRep @ctx @a) - -instance SpecTranslate ctx (AlonzoTxAuxData era) where - type SpecRep (AlonzoTxAuxData era) = Agda.AuxiliaryData - - toSpecRep _ = pure () - -deriving instance SpecTranslate ctx (ScriptHash c) - -instance SpecTranslate ctx (Credential k c) where - type SpecRep (Credential k c) = Agda.Credential - - toSpecRep (KeyHashObj h) = Agda.KeyHashObj <$> toSpecRep h - toSpecRep (ScriptHashObj h) = Agda.ScriptObj <$> toSpecRep h - -instance SpecTranslate ctx Network where - type SpecRep Network = () - - toSpecRep = pure . const () - -instance SpecTranslate ctx (RewardAccount c) where - type SpecRep (RewardAccount c) = Agda.RwdAddr - - toSpecRep (RewardAccount n c) = toSpecRep (n, c) - -instance SpecTranslate ctx (PoolParams era) where - type SpecRep (PoolParams era) = Agda.PoolParams - - toSpecRep PoolParams {..} = toSpecRep $ KeyHashObj ppId - -instance SpecTranslate ctx (DRep c) where - type SpecRep (DRep c) = Agda.VDeleg - - toSpecRep (DRepCredential c) = Agda.CredVoter Agda.DRep <$> toSpecRep c - toSpecRep DRepAlwaysAbstain = pure Agda.AbstainRep - toSpecRep DRepAlwaysNoConfidence = pure Agda.NoConfidenceRep - -instance SpecTranslate ctx (Anchor c) where - type SpecRep (Anchor c) = Agda.Anchor - toSpecRep _ = pure () - -instance SpecTranslate ctx (ConwayTxCert era) where - type SpecRep (ConwayTxCert era) = Agda.TxCert - - toSpecRep (ConwayTxCertDeleg (ConwayRegCert _ _)) = throwError "RegCert not supported" - toSpecRep (ConwayTxCertDeleg (ConwayUnRegCert _ _)) = throwError "UnRegCert not supported" - toSpecRep (ConwayTxCertDeleg (ConwayDelegCert c d)) = - Agda.Delegate - <$> toSpecRep c - <*> toSpecRep (getVoteDelegatee d) - <*> toSpecRep (KeyHashObj <$> getStakePoolDelegatee d) - <*> pure 0 - toSpecRep (ConwayTxCertDeleg (ConwayRegDelegCert s d c)) = - Agda.Delegate - <$> toSpecRep s - <*> toSpecRep (getVoteDelegatee d) - <*> toSpecRep (KeyHashObj <$> getStakePoolDelegatee d) - <*> toSpecRep c - toSpecRep (ConwayTxCertPool (RegPool p@PoolParams {ppId})) = - Agda.RegPool - <$> toSpecRep (KeyHashObj ppId) - <*> toSpecRep p - toSpecRep (ConwayTxCertPool (RetirePool kh e)) = - Agda.RetirePool - <$> toSpecRep (KeyHashObj kh) - <*> toSpecRep e - toSpecRep (ConwayTxCertGov (ConwayRegDRep c d _)) = - Agda.RegDRep - <$> toSpecRep c - <*> toSpecRep d - <*> pure () -- TODO Are the anchors supposed to be optional? - toSpecRep (ConwayTxCertGov (ConwayUnRegDRep c _)) = - Agda.DeRegDRep - <$> toSpecRep c - toSpecRep (ConwayTxCertGov (ConwayUpdateDRep c _)) = - Agda.RegDRep - <$> toSpecRep c - <*> pure 0 - <*> pure () -- TODO Are the anchors supposed to be optional? - toSpecRep (ConwayTxCertGov (ConwayAuthCommitteeHotKey c h)) = - Agda.CCRegHot - <$> toSpecRep c - <*> toSpecRep (SJust h) - toSpecRep (ConwayTxCertGov (ConwayResignCommitteeColdKey c _)) = - Agda.CCRegHot - <$> toSpecRep c - <*> toSpecRep (SNothing @(Credential _ _)) - -deriving instance SpecTranslate ctx (TxId era) - -toAgdaTxBody :: - ( SpecRep (TxOut era) ~ Agda.TxOut - , SpecRep (TxCert era) ~ Agda.TxCert - , EraTx era - , AlonzoEraTxBody era - , SpecTranslate ctx (TxOut era) - , SpecTranslate ctx (TxCert era) - ) => - Tx era -> - SpecTransM ctx Agda.TxBody -toAgdaTxBody tx = - Agda.MkTxBody - <$> toSpecRep (tx ^. bodyTxL . inputsTxBodyL) - <*> (zip [0 ..] <$> toSpecRep (tx ^. bodyTxL . outputsTxBodyL)) - <*> toSpecRep (tx ^. bodyTxL . feeTxBodyL) - <*> toSpecRep (tx ^. bodyTxL . vldtTxBodyL) - <*> pure (tx ^. sizeTxF) - <*> toSpecRep (txIdTx tx) - <*> toSpecRep (tx ^. bodyTxL . collateralInputsTxBodyL) - <*> toSpecRep (tx ^. bodyTxL . reqSignerHashesTxBodyL) - <*> toSpecRep (tx ^. bodyTxL . scriptIntegrityHashTxBodyL) - <*> toSpecRep (tx ^. bodyTxL . certsTxBodyL) - -instance - ( SpecTranslate ctx (TxWits era) - , SpecTranslate ctx (TxAuxData era) - , SpecTranslate ctx (TxOut era) - , SpecTranslate ctx (TxCert era) - , SpecRep (TxWits era) ~ Agda.TxWitnesses - , SpecRep (TxAuxData era) ~ Agda.AuxiliaryData - , SpecRep (TxOut era) ~ Agda.TxOut - , SpecRep (TxCert era) ~ Agda.TxCert - , Tx era ~ AlonzoTx era - , EraTx era - , AlonzoEraTxBody era - ) => - SpecTranslate ctx (AlonzoTx era) - where - type SpecRep (AlonzoTx era) = Agda.Tx - - toSpecRep tx = - Agda.MkTx - <$> toAgdaTxBody @era tx - <*> toSpecRep (wits tx) - <*> toSpecRep (auxiliaryData tx) - -instance - ( ToExpr (Value era) - , ToExpr (TxOut era) - , ToExpr (PredicateFailure (EraRule "UTXOS" era)) - ) => - SpecTranslate ctx (BabbageUtxoPredFailure era) - where - type SpecRep (BabbageUtxoPredFailure era) = OpaqueErrorString - - toSpecRep e = pure . OpaqueErrorString . show $ toExpr e - -instance - ( EraPParams era - , ToExpr (PParamsHKD StrictMaybe era) - ) => - SpecTranslate ctx (ConwayGovPredFailure era) - where - type SpecRep (ConwayGovPredFailure era) = OpaqueErrorString - - toSpecRep e = pure . OpaqueErrorString . show $ toExpr e - -instance SpecTranslate ctx (GovPurposeId r c) where - type SpecRep (GovPurposeId r c) = (Agda.TxId, Integer) - - toSpecRep (GovPurposeId gaId) = toSpecRep gaId - -instance SpecTranslate ctx UnitInterval where - type SpecRep UnitInterval = (Integer, Integer) - - toSpecRep x = pure (numerator r, denominator r) - where - r = unboundRational x - -instance SpecTranslate ctx (Committee era) where - type SpecRep (Committee era) = ([(Agda.Credential, Agda.Epoch)], Agda.Rational) - - toSpecRep (Committee members threshold) = toSpecRep (members, threshold) - -instance SpecTranslate ctx (Constitution era) where - type SpecRep (Constitution era) = (Agda.DataHash, Maybe Agda.ScriptHash) - - toSpecRep (Constitution anchor policy) = toSpecRep (anchor, policy) - -instance - ( EraPParams era - , SpecTranslate ctx (PParamsHKD Identity era) - , SpecRep (PParamsHKD Identity era) ~ Agda.PParams - ) => - SpecTranslate ctx (EnactState era) - where - type SpecRep (EnactState era) = Agda.EnactState - - toSpecRep EnactState {..} = - Agda.MkEnactState - <$> transHashProtected ensCommittee grCommittee - <*> transHashProtected ensConstitution grConstitution - <*> transHashProtected (ensCurPParams ^. ppProtocolVersionL) grHardFork - <*> transHashProtected ensCurPParams grPParamUpdate - <*> transWithdrawals ensWithdrawals - where - GovRelation {..} = ensPrevGovActionIds - transWithdrawals ws = forM (Map.toList ws) $ - \(cred, Coin amount) -> do - agdaCred <- toSpecRep cred - pure (((), agdaCred), amount) - transHashProtected x h = do - committee <- toSpecRep x - agdaLastId <- case h of - SJust lastId -> toSpecRep lastId - SNothing -> pure (0, 0) - pure (committee, agdaLastId) - -instance - ( SpecTranslate ctx (PParamsHKD Identity era) - , Inject ctx (EnactState era) - , EraPParams era - , SpecRep (PParamsHKD Identity era) ~ Agda.PParams - ) => - SpecTranslate ctx (GovEnv era) - where - type SpecRep (GovEnv era) = Agda.GovEnv - type SpecTransContext (GovEnv era) = EnactState era - - toSpecRep GovEnv {..} = do - enactState <- askTransCtx @(GovEnv era) - Agda.MkGovEnv - <$> toSpecRep geTxId - <*> toSpecRep geEpoch - <*> toSpecRep gePParams - <*> toSpecRep gePPolicy - <*> toSpecRep enactState - -instance SpecTranslate ctx (Voter era) where - type SpecRep (Voter era) = Agda.Voter - - toSpecRep (CommitteeVoter c) = (Agda.CC,) <$> toSpecRep c - toSpecRep (DRepVoter c) = (Agda.DRep,) <$> toSpecRep c - toSpecRep (StakePoolVoter kh) = (Agda.SPO,) <$> toSpecRep (KeyHashObj kh) - -instance SpecTranslate ctx Vote where - type SpecRep Vote = Agda.Vote - - toSpecRep VoteYes = pure Agda.VoteYes - toSpecRep VoteNo = pure Agda.VoteNo - toSpecRep Abstain = pure Agda.VoteAbstain - -instance SpecTranslate ctx (VotingProcedures era) where - type SpecRep (VotingProcedures era) = [Agda.GovSignal] - - toSpecRep = foldrVotingProcedures go (pure []) - where - go :: - Voter (EraCrypto era) -> - GovActionId (EraCrypto era) -> - VotingProcedure era -> - SpecTransM ctx [Agda.GovSignal] -> - SpecTransM ctx [Agda.GovSignal] - go voter gaId votingProcedure m = - (:) - <$> fmap - Agda.GovSignalVote - ( Agda.MkGovVote - <$> toSpecRep gaId - <*> toSpecRep voter - <*> toSpecRep (vProcVote votingProcedure) - <*> toSpecRep (vProcAnchor votingProcedure) - ) - <*> m - -instance SpecTranslate ctx (GovAction era) where - type SpecRep (GovAction era) = Agda.GovAction - - toSpecRep ParameterChange {} = pure $ Agda.ChangePParams () - toSpecRep (HardForkInitiation _ pv) = Agda.TriggerHF <$> toSpecRep pv - toSpecRep (TreasuryWithdrawals withdrawals _) = - Agda.TreasuryWdrl - <$> toSpecRep withdrawals - toSpecRep (NoConfidence _) = pure Agda.NoConfidence - toSpecRep (UpdateCommittee _ remove add threshold) = - Agda.NewCommittee - <$> toSpecRep add - <*> toSpecRep remove - <*> toSpecRep threshold - toSpecRep (NewConstitution _ (Constitution anchor policy)) = - Agda.NewConstitution - <$> toSpecRep anchor - <*> toSpecRep policy - toSpecRep InfoAction = pure Agda.Info - -toAgdaProposalProcedure :: - GovActionId (EraCrypto era) -> - StrictMaybe (ScriptHash (EraCrypto era)) -> - ProposalProcedure era -> - SpecTransM ctx Agda.GovSignal -toAgdaProposalProcedure gaId policy ProposalProcedure {..} = - fmap Agda.GovSignalProposal $ - Agda.MkGovProposal - <$> toSpecRep pProcGovAction - <*> toSpecRep gaId - <*> toSpecRep policy - <*> toSpecRep pProcDeposit - <*> toSpecRep pProcReturnAddr - <*> toSpecRep pProcAnchor - -instance SpecTranslate ctx a => SpecTranslate ctx (OSet a) where - type SpecRep (OSet a) = [SpecRep a] - type TestRep (OSet a) = [TestRep a] - - toSpecRep = traverse toSpecRep . toList - specToTestRep = fmap (specToTestRep @ctx @a) - -instance - ( SpecTranslate ctx k - , SpecTranslate ctx v - ) => - SpecTranslate ctx (OMap k v) - where - type SpecRep (OMap k v) = [(SpecRep k, SpecRep v)] - type TestRep (OMap k v) = [(TestRep k, TestRep v)] - - toSpecRep = traverse (bimapM toSpecRep toSpecRep) . assocList - specToTestRep = fmap (bimap (specToTestRep @ctx @k) (specToTestRep @ctx @v)) - -data GovProceduresSpecTransCtx c - = GovProceduresSpecTransCtx - (GovActionId c) - (StrictMaybe (ScriptHash c)) - deriving (Eq, Show, Generic) - -instance HasSimpleRep (GovProceduresSpecTransCtx c) - -instance (IsConwayUniv fn, Crypto c) => HasSpec fn (GovProceduresSpecTransCtx c) - -instance - Inject ctx (GovProceduresSpecTransCtx (EraCrypto era)) => - SpecTranslate ctx (GovProcedures era) - where - type SpecRep (GovProcedures era) = [Agda.GovSignal] - type SpecTransContext (GovProcedures era) = GovProceduresSpecTransCtx (EraCrypto era) - - toSpecRep GovProcedures {..} = do - GovProceduresSpecTransCtx gaId policy <- askTransCtx @(GovProcedures era) - (++) - <$> toSpecRep gpVotingProcedures - <*> traverse - (toAgdaProposalProcedure gaId policy) - (toList gpProposalProcedures) - -instance SpecTranslate ctx (GovActionState era) where - type SpecRep (GovActionState era) = Agda.GovActionState - - toSpecRep gas@GovActionState {..} = - Agda.MkGovActionState - <$> agdaVoteMap - <*> toSpecRep (gasReturnAddr gas) - <*> toSpecRep gasExpiresAfter - <*> toSpecRep (gasAction gas) - <*> toSpecRep gasId - where - agdaVoteMap = do - drepVotes <- toSpecRep gasDRepVotes - ccVotes <- toSpecRep gasCommitteeVotes - spoVotes <- toSpecRep gasStakePoolVotes - pure $ - mconcat - [ first (Agda.DRep,) <$> drepVotes - , first (Agda.CC,) <$> ccVotes - , first (\h -> (Agda.SPO, Agda.KeyHashObj h)) <$> spoVotes - ] - -instance SpecTranslate ctx GovActionIx where - type SpecRep GovActionIx = Integer - - toSpecRep = pure . fromIntegral . unGovActionIx - -instance SpecTranslate ctx (GovActionId c) where - type SpecRep (GovActionId c) = Agda.GovActionID - - toSpecRep (GovActionId txId gaIx) = toSpecRep (txId, gaIx) - -instance SpecTranslate ctx (Proposals era) where - type SpecRep (Proposals era) = Agda.GovState - - toSpecRep = toSpecRep . view pPropsL diff --git a/libs/cardano-ledger-conformance/src/Test/Cardano/Ledger/Conformance/SpecTranslate/Core.hs b/libs/cardano-ledger-conformance/src/Test/Cardano/Ledger/Conformance/SpecTranslate/Core.hs deleted file mode 100644 index e5257b7882b..00000000000 --- a/libs/cardano-ledger-conformance/src/Test/Cardano/Ledger/Conformance/SpecTranslate/Core.hs +++ /dev/null @@ -1,65 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DefaultSignatures #-} -{-# LANGUAGE DeriveFunctor #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} - -module Test.Cardano.Ledger.Conformance.SpecTranslate.Core ( - SpecTranslationError, - SpecTranslate (..), - SpecTransM, - runSpecTransM, - askTransCtx, -) where - -import Cardano.Ledger.BaseTypes (Inject (..)) -import Constrained.Base () -import Control.Monad.Except (ExceptT, MonadError, runExceptT) -import Control.Monad.Reader (MonadReader (..), Reader, asks, runReader) -import Data.Coerce (Coercible, coerce) -import Data.Kind (Type) -import Data.Text (Text) -import Test.Cardano.Ledger.Common (NFData) -import Test.Cardano.Ledger.TreeDiff (ToExpr) - -type SpecTranslationError = Text - -newtype SpecTransM ctx a - = SpecTransM (ExceptT SpecTranslationError (Reader ctx) a) - deriving (Functor, Applicative, Monad, MonadError SpecTranslationError, MonadReader ctx) - -runSpecTransM :: ctx -> SpecTransM ctx a -> Either SpecTranslationError a -runSpecTransM ctx (SpecTransM m) = runReader (runExceptT m) ctx - -class - ( Eq (TestRep a) - , ToExpr (TestRep a) - , NFData (TestRep a) - , Inject ctx (SpecTransContext a) - ) => - SpecTranslate ctx a - where - type SpecRep a :: Type - - type TestRep a :: Type - type TestRep a = SpecRep a - - type SpecTransContext a :: Type - type SpecTransContext a = () - - toSpecRep :: a -> SpecTransM ctx (SpecRep a) - - specToTestRep :: SpecRep a -> TestRep a - default specToTestRep :: Coercible (SpecRep a) (TestRep a) => SpecRep a -> TestRep a - specToTestRep = coerce - - toTestRep :: a -> SpecTransM ctx (TestRep a) - toTestRep x = specToTestRep @ctx @a <$> toSpecRep x - -askTransCtx :: forall a ctx. SpecTranslate ctx a => SpecTransM ctx (SpecTransContext a) -askTransCtx = asks inject diff --git a/libs/cardano-ledger-conformance/test/Main.hs b/libs/cardano-ledger-conformance/test/Main.hs deleted file mode 100644 index ee2cd830205..00000000000 --- a/libs/cardano-ledger-conformance/test/Main.hs +++ /dev/null @@ -1,10 +0,0 @@ -module Main (main) where - -import Test.Cardano.Ledger.Common -import qualified Test.Cardano.Ledger.Conformance.Spec.Conway as Conway - -main :: IO () -main = - ledgerTestMain $ - describe "Conformance" $ do - Conway.spec diff --git a/libs/cardano-ledger-core/.ghcid b/libs/cardano-ledger-core/.ghcid deleted file mode 100644 index b8e2c62eeea..00000000000 --- a/libs/cardano-ledger-core/.ghcid +++ /dev/null @@ -1 +0,0 @@ ---command="cabal repl --repl-options='-isrc -fwarn-unused-binds -fwarn-unused-imports -fno-code -fobject-code -g2 -fno-break-on-exception -fno-break-on-error -ferror-spans -j -Wno-unused-packages'" --clear --no-height-limit --reverse-errors --reload=../../ --outputfile=/tmp/cardano-ledger-core-ghcid.txt \ No newline at end of file diff --git a/libs/cardano-ledger-core/CHANGELOG.md b/libs/cardano-ledger-core/CHANGELOG.md deleted file mode 100644 index 795dc2df10e..00000000000 --- a/libs/cardano-ledger-core/CHANGELOG.md +++ /dev/null @@ -1,430 +0,0 @@ -# Version history for `cardano-ledger-core` - -## 1.11.1.0 - -* Add `fromDeltaCoin` -* Add trivial `Inject` instances for `()` and `Void` -* Add `byteStringToNum` -* Add functions `rdRewardCoin`, `rdDepositCoin` in UMap.hs -* Add function `mkCoinTxOut` in Core.hs - -## 1.11.0.0 - -* Add `shouldSatisfyExpr` -* Add `EraRuleEvent`, `InjectRuleEvent` -* Add `NFData` instance for `Obligations`, `PlutusWithContext`, `PlutusDatums` -* Add `Eq`, `Show`, `Generic` instances for `PlutusDatums` -* Add `CommitteeAuthorization` and use it to represent hot key credential in `CommitteeState` -* Change `applySTSValidateSuchThat` and `applySTSNonStatic` - to use `NonEmpty (PredicateFailure _)` instead of `[PredicateFailure _]` -* Added `boom` placeholder -* Add `EraRuleFailure` type family and `InjectRuleFailure` type class -* Add `VoidFailure` -* Fix `ToJSON`/`FromJSON` instances of `Prices` -* Update `FromJSON` instance of `BoundedRatio` -* Fix `ToJSON` instance of `BoundedRatio` to avoid precision loss -* Add `pwcScriptHash` field to `PlutusWithContext` -* Parameterize `PlutusWithContext c` on crypto. -* Extract `hashScript` outside of `EraScript` type class. -* Add `plutusLanguageTag` and `hashPlutusScript` -* Add `setMinFeeTxUtxo` -* Add `getMinFeeTxUtxo` to `EraUTxO` -* Change signature by adding `refScriptsSize` parameter for: - * `getMinFeeTx` in `EraTx` - * `setMinFeeTx` - * `estimateMinFeeTx` -* Add `originalBytesSize` and default implementation to `SafeToHash` typeclass -* Rename `RewardAccount` fields `getRwdNetwork` and `getRwdCred` to `raNetwork` and `raCredential` respectively -* Deprecate `ppRewardAcnt` in favor of `ppRewardAccount` -* Deprecate `fromCborRewardAcnt` in favor of `fromCborRewardAccount` -* Deprecate `decodeRewardAcnt` in favor of `decodeRewardAccount` -* Deprecate `putRewardAcnt` in favor of `putRewardAccount` -* Deprecate `deserialiseRewardAcnt` in favor of `deserialiseRewardAccount` -* Deprecate `serialiseRewardAcnt` in favor of `serialiseRewardAccount` -* Deprecate `RewardAcnt` in favor of `RewardAccount` -* Modify `Prices` and `Nonce` JSON instances to match `cardano-api` - -### `testlib` - -* Add `shouldContainExpr` -* Add `EraRuleProof`, `UnliftRules`, `roundTripAllPredicateFailures` -* Add `Test.Cardano.Ledger.Plutus.ScriptTestContext` -* Add `genByronVKeyAddr`, `genByronAddrFromVKey` -* Add `Uniform` instances for `ByronKeyPair` and `KeyPair` -* Add `mkKeyPairWithSeed` and `mkBootKeyPairWithSeed` -* Remove `epsilonMaybeEq` from `Utils` -* Add `PlutusArgs`, `ScriptTestContext` -* Add `txInAt` -* Add `mkScriptAddr` -* Deprecate `deserialiseRewardAcntOld` in favor of `deserialiseRewardAccountOld` -* Deprecate `mkVKeyRwdAcnt` in favor of `mkVKeyRewardAccount` -* Add `Stateful` random interface: `HasStatefulGen`, `HasGenEnv`, `HasSubState`, - `StatefulGen`, `StateGen`, `StateGenM`, `uniformM`, `uniformRM`, `uniformListM`, - `uniformListRM`, `uniformByteStringM`, `uniformShortByteStringM` -* Re-export the whole of `quickcheck-classes` from `Imp.Common` -* Re-export `replicateM_` and `replicateM` from `Imp.Common` - -## 1.10.0.0 - -* Add `umElemsL` -* Add `txIdTxBody` and `txIdTx`. Deprecated `txid`. -* Add `getGenesisKeyHashCountTxBody` to `EraTxBody` -* Add `calcMinFeeTx` and `calcMinFeeTxNativeScriptWits`, `estimateMinFeeTx`, - `addDummyWitsTx` and move `setMinFeeTx` to `Cardano.Ledger.Tools` -* Add `kindObject` -* Add `ToJSON` instance for `TxOutSource` and `PoolCert` -* Expose `txInToText` -* Add `getWitsVKeyNeeded` to `EraUTxO` -* Changed the type of the lenses `ppMaxBBSizeL`, `ppMaxTxSizeL`, `ppMaxBHSizeL`, - `ppuMaxBBSizeL`, `ppuMaxTxSizeL` and `ppuMaxBHSizeL` -* Add `txInsFilter` -* Fix `ToJSON`/`FromJSON` for `CostModels`. Make sure that `CostModels` can roundtrip - through JSON. Also report `CostModels` failures in JSON. -* Add `costModelParamsCount` -* Move Plutus related `Arbitrary` instances: `ExUnits`, `CostModels`, - `FlexibleCostModels`, `CostModel`, `Prices`, `Language` -* Add `Cardano.Ledger.Plutus` that re-exports all plutus related functionality -* Add `Semigroup` and `Monoid` instances for `CostModels` -* Add `mkCostModels` and expose `flattenCostModels` -* Stop exporting `CostModels` constructor in order to improve safety. -* Fix `Eq`/`Ord` and add `EncCBOR`/`DecCBOR` instances for `CostModelError` -* Re-export `Cardano.Ledger.Keys.Bootstrap` and `Cardano.Ledger.Keys.WitsVKey` from - `Cardano.Ledger.Keys` -* Add `unData`, `getCostModelEvaluationContext` -* Changes to `Cardano.Ledger.Plutus.Evaluate`: - * Make `PlutusWithContext` era agnostic, but Language aware. `pwcScript` can be either - in decoded or binary format. `pwcProtocolVersion` was added too. - * `debugPlutus`, `runPlutusScript`, `runPlutusScriptWithLogs` and - `explainPlutusEvaluationError` no longer accept `ProtVer` as argument, since major - protocol version has been added to `PlutusWithContext` - * Change constructor of `ScriptFailure` from `PlutusSF` to `ScriptFailure` and add - record names: `scriptFailureMessage` and `scriptFailurePlutus` - * Remove `PlutusDebugLang`, `PlutusDebug`, `PlutusData` and `PlutusError` - * Stop re-exporting removed: `EraPlutusContext`, `PlutusTxCert`, `unTxCertV1`, - `unTxCertV2` and `unTxCertV3` - * Add `evaluatePlutusWithContext` - * Remove `deserialiseAndEvaluateScript` in favor of `evaluatePlutusWithContext` -* Changes to `Cardano.Ledger.Plutus.Language`: - * Rename `BinaryPlutus` to `PlutusBinary` for consistency with names of other Plutus types. - * Add `Plutus` with helpers: `decodeWithPlutus`, `isValidPlutus` - * Add `PlutusRunnable` with helpers: `plutusFromRunnable` - * Add `asSLanguage` - * Add `plutusSLanguage` and `plutusLanguage` - * Deprecated `fromSLanguage` in favor of more general `plutusLanguage` - * Rename `IsLanguage` class to `PlutusLanguage` and add these functions to the class: - `decodePlutusRunnable`, `evaluatePlutusRunnable` and `evaluatePlutusRunnableBudget` -* Changes to `Cardano.Ledger.Plutus.TxInfo`: - * `NFData` instance for `TxOutSource` - * Remove: `transDataHash'`, `transHash` (use `hashToBytes` instead), `transTxOutAddr`, - `txInfoIn'`, `getWitVKeyHash`, `VersionedTxInfo`, `EraPlutusContext`, `PlutusTxCert`, - `unTxCertV1`, `unTxCertV2`, `unTxCertV3` and `txInfoId` (use `transTxId` instead) - * Add `transCoinToValue`, `transTxId` -* Add `fromNativeScript` -* Remove unused `mapMaybeValidation` and `runTestMaybe` -* Remove `InjectMaybe` type class in favor of more general `Inject` -* Move `decodeAddrShort` and `decodeAddrShortEither` to - `cardano-ledger-api:Cardano.Ledger.Api.Tx.Address` -* Remove deprecated `Cardano.Ledger.CompactAddress` and `Cardano.Ledger.UMapCompact` -* Add the newtype `EpochInterval` -* Change the type of `ppEMaxL` and `ppuEMaxL` -* Moved `ToExpr` instances out of the main library and into the testlib. - -### `testlib` - -* Add `integralToByteStringN` -* Add `ByronKeyPair` -* Add `Arbitrary` instances for Byron types: `Address`, `Attributes` and `AddrAttributes` -* Add `Test.Cardano.Ledger.Core.JSON` with `roundTripJsonSpec`, `roundTripJsonEraSpec` and - `roundTripJsonProperty` -* Add `zeroTestingCostModel` and `zeroTestingCostModels` -* Add `mkCostModelConst` -* Add `diffExprCompact` -* Add `expectLeftDeep_`, `expectRightDeep_` -* Two new modules `Test.Cardano.Ledger.Plutus` and `Test.Cardano.Ledger.Plutus.Examples` - -## 1.9.0.0 - -* Add `certsTotalDepositsTxBody` and `certsTotalRefundsTxBody` -* Add `getTotalDepositsTxBody` and `getTotalRefundsTxBody` to `EraTxBody`. Corresponding - functions have been removed from `ShelleyEraTxBody` in favor of the two above -* Add `getTotalDepositsTxCerts` and `getTotalRefundsTxCerts` to `EraTxCert` -* Deprecated `Cardano.Ledger.Ap`, since we no longer use this module -* Moved `Cardano.Ledger.Language` to `Cardano.Ledger.Plutus.Language` with deprecation. -* Move `ExUnits` and `Prices` from `Cardano.Ledger.Alonzo.Scripts` to new - `Cardano.Ledger.Plutus.ExUnits` module. -* Move `CostModels` from `Cardano.Ledger.Alonzo.Scripts` to new - `Cardano.Ledger.Plutus.CostModels` module. -* Move `Cardano.Ledger.Alonzo.Scritps.Data` to `Cardano.Ledger.Plutus.Data` -* Move some parts of `Cardano.Ledger.Alonzo.TxInfo` into - `Cardano.Ledger.Plutus.TxInfo` and `Cardano.Ledger.Plutus.Evaluate` -* Expose `decodeValidAndUnknownCostModels` in `CostModels` - -### `testlib` - -* Addition of `Test.Cardano.Ledger.Imp.Common` -* Re-export `ToExpr`, `showExpr`, `diffExpr`, `assertBool` and `assertFailure` -* Add `shouldBeExpr`, `shouldBeRight`, `shouldBeRightExpr`, `shouldBeLeft` and - `shouldBeLeftExpr` -* Add `expectRight`, `expectRightDeep`, `expectRightExpr`, `expectRightDeepExpr`, - `expectLeft`, `expectLeftExpr`, `expectLeftDeep` and `expectLeftDeepExpr` - -## 1.8.0.0 - -* Add `ToJSON`/`FromJSON` and `ToJSONKey`/`FromJSONKey` instances for `DRep` -* Add `parseCredential` -* Add `NoUpdate`, `HKDNoUpdate` -* Add `toNoUpdate` and `fromNoUpdate` methods to `HKDFunctor` -* Add `Updatable` instance for `NoUpdate` -* Change functions to methods of `EraPParams`: - * `ppProtocolVersionL` - * `ppuProtocolVersionL` -* Add `Generic` instance for `AuxiliaryDataHash` -* Add `ToExpr` instances for: - * `CompactAddr` - * `AuxiliaryDataHash` - * `CompactDeltaCoin` - * `VKey` -* Add `setMinFeeTx` -* Add `ScriptsProvided` -* Require new `EraUTxO` class method `getScriptsProvided` -* `EraTx` replaced `EraTxBody` superclass for `EraUTxO` - -### `testlib` - -* Add `testGlobals` and `mkDummySafeHash` -* Add `Test.Cardano.Ledger.Core.Rational` - -## 1.7.0.0 - -* Require `ToExpr` for `EraTx` class -* Add `upgradeTx` function to `EraTx` class -* Require `ToExpr` for `EraTxBody` class -* Add `upgradeTxBody` function to `EraTxBody` class -* Require `ToExpr` for `EraTxWits` class -* Add `upgradeTxWits` function to `EraTxWits` class -* Add `ToExpr` instance to: - * `CompactAddr` - * `Withdrawals` - * `AuxiliaryDataHash` - * `VKey` - * `ChainCode` - * `BootstrapWitness` - * `WitVKey` -* Add `Generic` instance to `AuxiliaryDataHash` -* Add `vsNumDormantEpochs` to `VState` to track the number of contiguous epochs in which there were no governance proposals to vote on. #3729 -* Add `fromEraShareCBOR` -* Remove redundant `DecCBOR` constraint in `eraDecoder` -* Add `FromJSON` instance to `Anchor` -* Change `ToJSON/FromJSON` implementation of `Credential` to use `keyHash` vs `key hash` - and `scriptHash` vs `script hash` JSON keys. -* Change `ToJSONKey/FromJSONKey` implementation of `Credential` to use `keyHash-` vs `keyhash-` - and `scriptHash-` vs `scripthash-` prefixes. - -### `testlib` - -* Added `BinaryUpgradeOpts` -* Add `Arbitrary` instance for `DRepDistr` -* Move `Arbitrary` instance for `SnapShot` and `SnapShots` from `cardano-ledger-shelley:testlib` -* Add `Test.Cardano.Ledger.Core.Binary.RoundTrip` with: - * `roundTripEraSpec` - * `roundTripAnnEraSpec` - * `roundTripEraTypeSpec` - * `roundTripAnnEraTypeSpec` - * `roundTripShareEraSpec` - * `roundTripShareEraTypeSpec` - * `roundTripEraExpectation` - * `roundTripEraTypeExpectation` - * `roundTripAnnEraExpectation` - * `roundTripAnnEraTypeExpectation` - * `roundTripShareEraExpectation` - * `roundTripShareEraTypeExpectation` - * `roundTripCoreEraTypesSpec` - -## 1.6.0.0 - -* Add `lookupRegStakeTxCert` and `lookupUnRegStakeTxCert` to `EraTxCert` typeclass #3700 -* Change `ToJSONKey`/`FromJSONKey` implementation of `Credential` to flat text -* Add one more parameter to `getConsumedValue` to lookup DRep deposits #3688 - * `Credential 'DRepRole (EraCrypto era) -> Maybe Coin` -* Add `Ap`, `hoistAp`, `runAp`, `runAp_` -* Add `eqBootstrapWitnessRaw` and `eqWitVKeyRaw` -* Add `eqRawType` -* Add `EqRaw` type class with `eqRaw`. -* Add `EqRaw` instance for `WitVKey` and `BootstrapWitness` -* Require `EqRaw` instance for `Script`, `TxWits`, `TxAuxData`, `TxBody` and `Tx` -* Add `ToExpr` instance for `PoolCert` -* Require `ToExpr` instance for `Script`, `TxAuxData` and `TxCert` -* Require an extra argument for `decodePositiveCoin` in order to improve error reporting #3694 - -## 1.5.0.0 - -* Add `drepDeposit` to the `DRepState` #3628 -* Introduce `CommitteeState` and `csCommitteeCredsL`. -* Change then name and the type of `vsCommitteeHotKeys` to `vsCommitteeState` and - `vsCommitteeHotKeysL` to `vsCommitteeStateL` -* Add `drepExpiryL` and `drepAnchorL` -* Add `eraName` -* Add `addrPtrNormalize` -* Add `upgradeTxOut` function to `EraTxOut` -* Add `upgradeScript` function to `EraScript` -* Add `upgradeTxAuxData` function to `EraTxAuxData` -* Add `upgradeTxCert` function and `TxCertUpgradeError` family to `EraTxCert` -* Add `Default` instance for `Anchor` -* Add `Anchor` and `AnchorDataHash` -* Add `DRepState` -* Change `vsDReps` to a map -* Rename key roles #3588 - * `Voting` to `DRepRole` - * `CommitteeHotKey` to `HotCommitteeRole` - * `CommitteeColdKey` to `ColdCommitteeRole` -* Change `VState` to allow committee cold keys to be script-hashes #3581 - * `vsCommitteeHotKeys :: Map (Credential 'CommitteeColdKey eracrypto) (Maybe (Credential 'CommitteeHotKey eracrypto))` -* Adopt `Default` instances #3556 - * Moved instances for `SafeHash`, `RewardAcnt` and `Credential` from Shelley.RewardProvenance -* Change `VState` to allow committee hot keys to be script-hashes #3552 - * `vsCommitteeHotKeys :: Map (KeyHash 'CommitteeColdKey eracrypto) (Maybe (Credential 'CommitteeHotKey eracrypto))` -* Added `withSLanguage` -* Move `BinaryPlutus` from `cardano-ledger-alonzo` and changed its `Show` instance to - display as base64 encoding. -* Added `Plutus` -* Changed `Phase2Script` constructor of the `PhaseScript` type. It now accepts new - `Plutus` type instead of `Language` and `ShortByteString` -* Remove default implementation for `spendableInputsTxBodyL` -* Add lenses: - * `dsUnifiedL` - * `dsGenDelegsL` - * `dsIRewardsL` - * `dsFutureGenDelegsL` - * `certDStateL` - * `certPStateL` - * `certVStateL` -* Add `getProducedValue` to `EraUTxO` - -## 1.4.1.0 - -* Add `spendableInputsTxBodyL` - -## 1.4.0.0 - -* Added `DRep`, `DRepCredential` -* Changed type `Credential 'Voting c` -> `DRep c` in: - * `UMElem` - * `umElemAsTuple` - * `umElemDRep` - * `UMap` - * `DRepUView` - * `dRepUView` - * `dRepMap` - * `unify` - -## 1.3.1.0 - -* Addition of `getPoolCertTxCert` - -## 1.3.0.0 - -* Add delegated representatives to the `UMap` and make its interface more coherent #3426 - * Additions - * Add `Credential 'Voting (EraCrypto era)` as the fourth element to the `UMap` n-tuple. - * `umElemPtrs :: UMElem c -> Maybe (Set Ptr)` - * `umElemDRep :: UMElem c -> Maybe (Credential 'Voting (EraCrypto era))` - * `UView (DRepUView)` constructor and `dRepUView` - * `invPtrMap :: UMap c -> Map (Credential 'Staking c) (Set Ptr)` - * `dRepMap :: UMap c -> Map (Credential 'Staking c) (Credential 'Voting c)` - * synonym `unionL = (∪)` - * synonym `unionR = (⨃)` - * synonym `domDelete = (⋪)` - * synonym `rngDelete = (⋫)` - * Renames - * `Trip` to `UMElem`, pattern `Triple` to `UMElem` - * `viewTrip` to `umElemAsTuple` - * `tripRewardActiveDelegation` to `umElemRDActive` - * `tripReward` to `umElemRDPair` - * `tripDelegation` to `umElemSPool` - * `View (RewardDeposits, Delegations, Ptrs)` to `UView (RewDepUView, SPoolUView, PtrUView)` - * `rdPairs` to `rewDepUView` - * `delegations` to `sPoolUView` - * `ptrs` to `ptrUView` - * `unView` to `unUView` - * `viewtoVMap` to `unUnifyToVMap` - * `rewView` to `rewardMap` - * `compactRewView` to `compactRewardMap` - * `depositView` to `depositMap` - * `rdPairView` to `rdPairMap` - * `delView` to `sPoolMap` - * `ptrView` to `ptrMap` - * `domRestrictedView` to `domRestrictedMap` - * `zero` to `nullUMElem` - * `zeroMaybe` to `nullUMElemMaybe` - * `sumRewardsView` to `sumRewardsUView` - * `sumDepositView` to `sumDepositUView` - * Reimplementations - * `unionRewAgg` NOTE: It does not require `assert (Map.valid result) result` any more - and has been tested for equivalence with the older version with - `--qc-max-success=10000 --qc-max-size=1000`. The test is added to `UMapSpec`. -* Add `certsTxBodyL` to `EraTxBody` -* Introduce `TxCert` type family and `EraTxCert` type class. -* Deprecate `Delegation` -* Add `toKeyHashWitness` -* Addition of `getVKeyWitnessTxCert` and `getScriptWitnessTxCert` to `EraTxCert` type class -* Add new key roles: `CommitteeColdKey` and `CommitteeHotKey` -* Remove `ConstitutionalDelegCert`. Instead it now lives in `cardano-ledger-shelley` as - `GenesisDelegCert` -* Add `StakeCredentials` and two helper functions: `toStakeCredentials` and - `domRestrictedStakeCredentials` - -### `testlib` - -* Add `genValidUMapWithCreds` and `uniformSubset` - -## 1.2.0.0 - -* Deprecate `Cardano.Ledger.UMapCompact` in favor of `Cardano.Ledger.UMap` and add tests for it. #3371 - * Add `Cardano.Ledger.UMap.rdPairView` to view the reward-deposits pair from the `UMap`. -* Replace `DPState c` with `CertState era` -* Add `VState` -* Add `certVState` -* Parametrize `DState` and `PState` by era -* Rename `Cardano.Ledger.DPState` module to `Cardano.Ledger.CertState` -* Rename: - * `lsDPState` -> `lsCertState` - * `dpsPState` -> `certPState` - * `dpsDState` -> `certDState` - * `obligationDPState` -> `obligationCertState` -* Add support for `PlutusV3` - -## 1.1.0.0 - -* Add `ToJSON (PParamsHKD f era)` superclass constraints for `EraPParams`. -* Add `ToJSON (TxOut era)` superclass constraints for `EraTxOut`. -* Add superclass constraints for `Val`: - * `NoThunks`, `EncCBOR`, `DecCBOR`, `ToJSON`, `NFData`, `Show` - * `EncCBOR (CompactForm t)`, `DecCBOR (CompactForm t)` -* Add `ToJSONKey`/`FromJSONKey` instances for `ScriptHash` -* Add `ToJSON`/`FromJSON` instances for `CompactForm Coin`, `SafeHash` and `TxId` -* Add `ToJSON` instances for: - * `Ptr`, `CertIx`, `TxIx` - * `Trip` and `UMap` - * `DeltaCoin` and `CompactForm DeltaCoin` - * `InstantaneousRewards`, `FutureGenDeleg`, `PState`, `DState` and `DPState`. - * `UTxO` and `TxIn` - * `Stake`, `SnapShot`, `SnapShots`, `PoolDistr` and `IndividualPoolStake` - * `Reward` and `RewardType` - * `AuxiliaryDataHash` - * `Credential` -* Make `getConsumedValue` accept a deposit lookup function instead of a `DPState` -* Add `lookupDepositDState` and `lookupRewardDState`. Former can be used with - `getConsumedValue` to regain previous behavior. -* Add `hashScriptTxWitsL` -* Remove custom `Fail` type, in favor of - [`FailT`](https://hackage.haskell.org/package/FailT) package -* Move `bBodySize` into `Cardano.Ledger.Core` -* Rename `TxId` field from `_unTxId` to `unTxId` - -### `testlib` - -* Remove `runFailError` in favor of `errorFail` from `FailT` package - -## 1.0.0.0 - -* First properly versioned release. diff --git a/libs/cardano-ledger-core/bench/Addr.hs b/libs/cardano-ledger-core/bench/Addr.hs deleted file mode 100644 index 0829d129628..00000000000 --- a/libs/cardano-ledger-core/bench/Addr.hs +++ /dev/null @@ -1,45 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} - -import Cardano.Ledger.Address (Addr, decodeAddrEither, serialiseAddr) -import Cardano.Ledger.Crypto (StandardCrypto) -import Control.Monad (replicateM) -import Criterion (Benchmark, bench, env, nf) -import Criterion.Main (defaultMain) -import Data.ByteString.Char8 (ByteString) -import Test.Cardano.Ledger.Core.Arbitrary () -import Test.QuickCheck (arbitrary) -import Test.QuickCheck.Gen (Gen (..)) -import Test.QuickCheck.Random (QCGen, mkQCGen) - -main :: IO () -main = do - defaultMain $ - map (\c -> env (generateAddrAsBytestring qcGen c) decodeAddrBench) [500, 1000] - where - qcGen = mkQCGen 2023 - decodeAddrBench :: [ByteString] -> Benchmark - decodeAddrBench xs = - bench ("decodeAddr (" ++ show (length xs) ++ ")") (nf tryDecodeAddr xs) - --- ------------------------------------------------------------------------------------------------- - -generateAddrAsBytestring :: QCGen -> Int -> IO [ByteString] -generateAddrAsBytestring qcGen count = - pure $ unGen (replicateM count (serialiseAddr <$> genAddr)) qcGen 30 - where - genAddr :: Gen (Addr StandardCrypto) - genAddr = arbitrary - -tryDecodeAddr :: [ByteString] -> [Addr StandardCrypto] -tryDecodeAddr xs = - case mapM decode xs of - Right addrs -> addrs - Left err -> error $ "tryDecodeAddr: " ++ show err - where - decode :: ByteString -> Either String (Addr StandardCrypto) - decode = decodeAddrEither diff --git a/libs/cardano-ledger-core/bench/UMap.hs b/libs/cardano-ledger-core/bench/UMap.hs deleted file mode 100644 index ae1838aa1c8..00000000000 --- a/libs/cardano-ledger-core/bench/UMap.hs +++ /dev/null @@ -1,56 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} - -import Cardano.Ledger.Crypto (StandardCrypto) -import Cardano.Ledger.UMap (UMap) -import qualified Cardano.Ledger.UMap as UMap - -import Control.Monad (replicateM) - -import Criterion (Benchmark, bench, env, nf) -import Criterion.Main (defaultMain) - -import qualified Data.Map.Strict as Map - -import Test.Cardano.Ledger.Core.Arbitrary () -import Test.QuickCheck (arbitrary, generate) - -main :: IO () -main = do - defaultMain $ - map (\c -> env (generateUMap c) umapSizeBench) (map (* 10000) [1 .. 2]) - where - umapSizeBench :: UMap StandardCrypto -> Benchmark - umapSizeBench umap = - bench ("compositeSize (" ++ show (compositeSize umap) ++ ")") (nf compositeSize umap) - --- ------------------------------------------------------------------------------------------------- - -compositeSize :: UMap StandardCrypto -> Int -compositeSize umap = - sum - [ UMap.size (UMap.RewDepUView umap) - , UMap.size (UMap.PtrUView umap) - , UMap.size (UMap.SPoolUView umap) - , UMap.size (UMap.DRepUView umap) - ] - --- Generate a UView of exactly the size specified. -generateUMap :: Int -> IO (UMap StandardCrypto) -generateUMap size = - generate $ do - ptrs <- replicateM size arbitrary - sPools <- replicateM size arbitrary - dReps <- replicateM size arbitrary - creds <- replicateM size arbitrary - rdPairs <- replicateM size arbitrary - pure $ - UMap.unify - (Map.fromList $ zip creds rdPairs) - (Map.fromList $ zip ptrs creds) - (Map.fromList $ zip creds sPools) - (Map.fromList $ zip creds dReps) diff --git a/libs/cardano-ledger-core/cardano-ledger-core.cabal b/libs/cardano-ledger-core/cardano-ledger-core.cabal deleted file mode 100644 index 7ccc0aebdfe..00000000000 --- a/libs/cardano-ledger-core/cardano-ledger-core.cabal +++ /dev/null @@ -1,274 +0,0 @@ -cabal-version: 3.0 -name: cardano-ledger-core -version: 1.11.1.0 -license: Apache-2.0 -maintainer: operations@iohk.io -author: IOHK -bug-reports: https://github.com/intersectmbo/cardano-ledger/issues -synopsis: - Core components of Cardano ledgers from the Shelley release on. - -description: - Cardano ledgers from the Shelley release onwards share a core basis rooted in - the Shelley ledger specification. This package abstracts a number of components - which we expect to be shared amongst all future ledgers implemented around this base. - -extra-source-files: CHANGELOG.md - -source-repository head - type: git - location: https://github.com/intersectmbo/cardano-ledger - subdir: libs/cardano-ledger-core - -flag asserts - description: Enable assertions - default: False - -library - exposed-modules: - Cardano.Ledger.Address - Cardano.Ledger.Ap - Cardano.Ledger.AuxiliaryData - Cardano.Ledger.BaseTypes - Cardano.Ledger.BHeaderView - Cardano.Ledger.Block - Cardano.Ledger.Coin - Cardano.Ledger.Compactible - Cardano.Ledger.Core - Cardano.Ledger.Credential - Cardano.Ledger.Crypto - Cardano.Ledger.CertState - Cardano.Ledger.DRep - Cardano.Ledger.EpochBoundary - Cardano.Ledger.Era - Cardano.Ledger.Hashes - Cardano.Ledger.HKD - Cardano.Ledger.Keys - Cardano.Ledger.Keys.Bootstrap - Cardano.Ledger.Keys.WitVKey - Cardano.Ledger.Language - Cardano.Ledger.MemoBytes - Cardano.Ledger.Orphans - Cardano.Ledger.PoolDistr - Cardano.Ledger.PoolParams - Cardano.Ledger.Plutus - Cardano.Ledger.Plutus.CostModels - Cardano.Ledger.Plutus.Data - Cardano.Ledger.Plutus.ExUnits - Cardano.Ledger.Plutus.Language - Cardano.Ledger.Plutus.TxInfo - Cardano.Ledger.Plutus.Evaluate - Cardano.Ledger.Plutus.ToPlutusData - Cardano.Ledger.Rewards - Cardano.Ledger.Rules.ValidationMode - Cardano.Ledger.SafeHash - Cardano.Ledger.Serialization - Cardano.Ledger.Slot - Cardano.Ledger.Tools - Cardano.Ledger.TxIn - Cardano.Ledger.UTxO - Cardano.Ledger.Val - Cardano.Ledger.UMap - - hs-source-dirs: src - other-modules: - Cardano.Ledger.Core.Era - Cardano.Ledger.Keys.Internal - Cardano.Ledger.Core.PParams - Cardano.Ledger.Core.Translation - Cardano.Ledger.Core.TxCert - - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wpartial-fields - -Wunused-packages - - build-depends: - base >=4.14 && <5, - aeson >=2, - base16-bytestring, - base64-bytestring, - base-deriving-via, - binary, - bytestring, - cardano-ledger-binary ^>=1.3, - cardano-crypto, - cardano-crypto-class, - cardano-crypto-praos, - cardano-crypto-wrapper, - cardano-data ^>=1.2, - cardano-ledger-byron, - cardano-prelude, - cardano-slotting, - containers, - data-default-class, - deepseq, - FailT, - groups, - heapwords, - iproute, - mtl, - measures, - microlens, - network, - nothunks, - partial-order, - plutus-ledger-api, - prettyprinter, - quiet, - serialise, - scientific, - set-algebra, - non-integral >=1.0, - primitive, - small-steps >=1.1, - cardano-strict-containers, - text, - time, - transformers, - utf8-string, - validation-selective, - vector-map ^>=1.1 - - if flag(asserts) - ghc-options: -fno-ignore-asserts - - if !impl(ghc >=9.2) - ghc-options: -Wno-name-shadowing - -library testlib - exposed-modules: - Test.Cardano.Ledger.Common - Test.Cardano.Ledger.Core.Address - Test.Cardano.Ledger.Core.Arbitrary - Test.Cardano.Ledger.Core.Binary - Test.Cardano.Ledger.Core.Binary.RoundTrip - Test.Cardano.Ledger.Core.JSON - Test.Cardano.Ledger.Core.KeyPair - Test.Cardano.Ledger.Core.Utils - Test.Cardano.Ledger.Core.Rational - Test.Cardano.Ledger.Imp.Common - Test.Cardano.Ledger.Plutus - Test.Cardano.Ledger.Plutus.Examples - Test.Cardano.Ledger.TreeDiff - Test.Cardano.Ledger.Plutus.ToPlutusData - Test.Cardano.Ledger.Plutus.ScriptTestContext - - visibility: public - hs-source-dirs: testlib - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wpartial-fields - -Wunused-packages - - build-depends: - aeson, - aeson-pretty, - base, - binary, - bytestring, - cardano-crypto-class, - cardano-crypto-test, - cardano-crypto-wrapper, - cardano-ledger-core, - cardano-ledger-binary:{cardano-ledger-binary, testlib} ^>=1.3, - cardano-ledger-byron, - cardano-ledger-byron-test, - containers, - data-default-class, - deepseq, - generic-random, - genvalidity, - hspec, - hedgehog-quickcheck, - HUnit, - mtl, - nothunks, - primitive, - QuickCheck, - quickcheck-transformer, - plutus-ledger-api:{plutus-ledger-api, plutus-ledger-api-testlib}, - random >=1.2, - text, - tree-diff, - vector-map:{vector-map, testlib}, - time, - cardano-slotting, - unliftio, - small-steps >=1.1 - - if !impl(ghc >=9.2) - ghc-options: -Wno-name-shadowing - -test-suite tests - type: exitcode-stdio-1.0 - main-is: Main.hs - hs-source-dirs: test - other-modules: - Test.Cardano.Ledger.AddressSpec - Test.Cardano.Ledger.BaseTypesSpec - Test.Cardano.Ledger.BinarySpec - Test.Cardano.Ledger.JsonSpec - Test.Cardano.Ledger.PlutusSpec - Test.Cardano.Ledger.UMapSpec - - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wpartial-fields - -Wunused-packages -threaded -rtsopts -with-rtsopts=-N - - build-depends: - base, - aeson, - base16-bytestring, - binary, - bytestring, - cardano-ledger-binary:{cardano-ledger-binary, testlib}, - cardano-ledger-byron, - cardano-ledger-core, - cardano-crypto-class, - containers, - FailT, - testlib, - genvalidity, - genvalidity-scientific, - scientific - -benchmark umap - type: exitcode-stdio-1.0 - main-is: UMap.hs - hs-source-dirs: bench - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wunused-packages - -threaded -rtsopts -O2 - - build-depends: - base, - cardano-ledger-core, - testlib, - containers, - criterion, - QuickCheck - -benchmark addr - type: exitcode-stdio-1.0 - main-is: Addr.hs - hs-source-dirs: bench - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wunused-packages - -threaded -rtsopts -O2 - - build-depends: - base, - bytestring, - cardano-ledger-core, - testlib, - criterion, - QuickCheck diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/Address.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/Address.hs deleted file mode 100644 index bc56d51e566..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/Address.hs +++ /dev/null @@ -1,981 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE BinaryLiterals #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE InstanceSigs #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeSynonymInstances #-} - -module Cardano.Ledger.Address ( - mkRwdAcnt, - serialiseAddr, - deserialiseAddr, - Addr (..), - addrPtrNormalize, - BootstrapAddress (..), - bootstrapAddressAttrsSize, - isBootstrapRedeemer, - getNetwork, - RewardAccount (.., RewardAcnt, getRwdNetwork, getRwdCred), - serialiseRewardAccount, - deserialiseRewardAccount, - bootstrapKeyHash, - -- internals exported for testing - putAddr, - putCredential, - putPtr, - putRewardAccount, - putVariableLengthWord64, - Word7 (..), - toWord7, - - -- * Compact Address - fromBoostrapCompactAddress, - compactAddr, - decompactAddr, - CompactAddr, - unCompactAddr, - isPayCredScriptCompactAddr, - isBootstrapCompactAddr, - decodeAddr, - decodeAddrEither, - decodeAddrStateT, - decodeAddrStateLenientT, - fromCborAddr, - fromCborBothAddr, - fromCborCompactAddr, - fromCborBackwardsBothAddr, - decodeRewardAccount, - fromCborRewardAccount, - Withdrawals (..), - - -- * Deprecations - RewardAcnt, - serialiseRewardAcnt, - deserialiseRewardAcnt, - putRewardAcnt, - decodeRewardAcnt, - fromCborRewardAcnt, -) -where - -import qualified Cardano.Chain.Common as Byron -import qualified Cardano.Crypto.Hash.Class as Hash -import qualified Cardano.Crypto.Hashing as Byron -import Cardano.Ledger.BaseTypes ( - CertIx (..), - Network (..), - SlotNo (..), - TxIx (..), - byronProtVer, - natVersion, - networkToWord8, - ) -import Cardano.Ledger.Binary ( - DecCBOR (..), - Decoder, - EncCBOR (..), - decodeFull', - ifDecoderVersionAtLeast, - serialize, - ) -import Cardano.Ledger.Coin (Coin) -import Cardano.Ledger.Credential ( - Credential (..), - PaymentCredential, - Ptr (..), - StakeReference (..), - normalizePtr, - ) -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Hashes (ScriptHash (..)) -import Cardano.Ledger.Keys (KeyHash (..), KeyRole (..)) -import Cardano.Prelude (unsafeShortByteStringIndex) -import Control.DeepSeq (NFData) -import Control.Monad (guard, unless, when) -import Control.Monad.Trans.Fail (runFail) -import Control.Monad.Trans.State.Strict (StateT, evalStateT, get, modify', state) -import Data.Aeson (FromJSON (..), FromJSONKey (..), ToJSON (..), ToJSONKey (..), (.:), (.=)) -import qualified Data.Aeson as Aeson -import qualified Data.Aeson.Encoding as Aeson -import qualified Data.Aeson.Key as Aeson (fromText) -import qualified Data.Aeson.Types as Aeson -import Data.Binary (Put) -import qualified Data.Binary as B -import qualified Data.Binary.Put as B -import Data.Bits (Bits (clearBit, setBit, shiftL, shiftR, testBit, (.&.), (.|.))) -import Data.ByteString (ByteString) -import qualified Data.ByteString as BS -import qualified Data.ByteString.Base16 as B16 -import qualified Data.ByteString.Lazy as BSL -import Data.ByteString.Short as SBS (ShortByteString, fromShort, index, length, toShort) -import qualified Data.ByteString.Unsafe as BS (unsafeDrop, unsafeIndex, unsafeTake) -import Data.Default.Class (Default (..)) -import Data.Function (fix) -import Data.Map.Strict (Map) -import Data.Maybe (fromMaybe) -import Data.Proxy (Proxy (..)) -import Data.Text (Text) -import qualified Data.Text.Encoding as Text -import Data.Word (Word16, Word32, Word64, Word8) -import GHC.Generics (Generic) -import GHC.Show (intToDigit) -import GHC.Stack (HasCallStack) -import NoThunks.Class (NoThunks (..)) -import Numeric (showIntAtBase) -import Quiet (Quiet (Quiet)) - -mkRwdAcnt :: - Network -> - Credential 'Staking c -> - RewardAcnt c -mkRwdAcnt network script@(ScriptHashObj _) = RewardAcnt network script -mkRwdAcnt network key@(KeyHashObj _) = RewardAcnt network key -{-# DEPRECATED mkRwdAcnt "In favor of `RewardAcnt`" #-} - --- | Serialise an address to the external format. -serialiseAddr :: Addr c -> ByteString -serialiseAddr = BSL.toStrict . B.runPut . putAddr -{-# INLINE serialiseAddr #-} - --- | Deserialise an address from the external format. This will fail if the --- input data is not in the right format (or if there is trailing data). -deserialiseAddr :: Crypto c => ByteString -> Maybe (Addr c) -deserialiseAddr = decodeAddr -{-# INLINE deserialiseAddr #-} -{-# DEPRECATED - deserialiseAddr - "In favor of `Cardano.Ledger.Api.Tx.Address.decodeAddr` or `Cardano.Ledger.Api.Tx.Address.decodeAddrLenient`. Please choose the appropriate variant carefully depending on your use case" - #-} - --- | Serialise a reward account to the external format. -serialiseRewardAccount :: RewardAcnt c -> ByteString -serialiseRewardAccount = BSL.toStrict . B.runPut . putRewardAcnt - -serialiseRewardAcnt :: RewardAcnt c -> ByteString -serialiseRewardAcnt = serialiseRewardAccount -{-# INLINE serialiseRewardAcnt #-} -{-# DEPRECATED serialiseRewardAcnt "Use `serialiseRewardAccount` instead" #-} - --- | Deserialise a reward account from the external format. This will fail if the --- input data is not in the right format (or if there is trailing data). -deserialiseRewardAccount :: Crypto c => ByteString -> Maybe (RewardAcnt c) -deserialiseRewardAccount = decodeRewardAcnt - -deserialiseRewardAcnt :: Crypto c => ByteString -> Maybe (RewardAcnt c) -deserialiseRewardAcnt = deserialiseRewardAccount -{-# INLINE deserialiseRewardAcnt #-} -{-# DEPRECATED deserialiseRewardAcnt "Use `deserialiseRewardAccount` instead" #-} - --- | An address for UTxO. --- --- Contents of Addr data type are intentionally left as lazy, otherwise --- operating on compact form of an address will result in redundant work. -data Addr c - = Addr Network (PaymentCredential c) (StakeReference c) - | AddrBootstrap (BootstrapAddress c) - deriving (Show, Eq, Generic, NFData, Ord) - --- | Lookup a Network Id for an Address -getNetwork :: Addr c -> Network -getNetwork (Addr n _ _) = n -getNetwork (AddrBootstrap (BootstrapAddress byronAddr)) = - case Byron.aaNetworkMagic . Byron.attrData . Byron.addrAttributes $ byronAddr of - Byron.NetworkMainOrStage -> Mainnet - Byron.NetworkTestnet _ -> Testnet - -instance NoThunks (Addr c) - --- | This function is implemented solely for the purpose of translating garbage pointers --- into knowingly invalid ones. Any pointer that contains a SlotNo, TxIx or CertIx that --- is too large to fit into Word32, Word16 and Word16 respectively, will have all of its --- values set to 0 using `normalizePtr`. --- --- There are two reasons why we can safely do that at the Babbage/Conway era boundary: --- --- * Invalid pointers are no longer allowed in transactions starting with Babbage era --- --- * There are only a handful of `Ptr`s on mainnet that are invalid. --- --- Once the transition is complete and we are officially in Conway era, this translation --- logic can be removed in favor of a fixed deserializer that does the same thing for all --- eras prior to Babbage. -addrPtrNormalize :: Addr c -> Addr c -addrPtrNormalize = \case - Addr n cred (StakeRefPtr ptr) -> Addr n cred (StakeRefPtr (normalizePtr ptr)) - addr -> addr - --- | An account based address for rewards -data RewardAccount c = RewardAccount - { raNetwork :: !Network - , raCredential :: !(Credential 'Staking c) - } - deriving (Show, Eq, Generic, Ord, NFData, ToJSONKey, FromJSONKey) - -pattern RewardAcnt :: Network -> Credential 'Staking c -> RewardAccount c -pattern RewardAcnt {getRwdNetwork, getRwdCred} = RewardAccount getRwdNetwork getRwdCred - -{-# DEPRECATED getRwdNetwork "In favor of `raNetwork`" #-} -{-# DEPRECATED getRwdCred "In favor of `raCredential`" #-} - -{-# COMPLETE RewardAcnt #-} - -type RewardAcnt = RewardAccount - -{-# DEPRECATED RewardAcnt "Use `RewardAccount` instead" #-} - -instance Crypto c => Default (RewardAcnt c) where - def = RewardAcnt def def - -instance Crypto c => ToJSON (RewardAcnt c) where - toJSON ra = - Aeson.object - [ "network" .= raNetwork ra - , "credential" .= raCredential ra - ] - -instance Crypto c => FromJSON (RewardAcnt c) where - parseJSON = - Aeson.withObject "RewardAcnt" $ \obj -> - RewardAcnt - <$> obj - .: "network" - <*> obj - .: "credential" - -instance NoThunks (RewardAcnt c) - -instance ToJSONKey (Addr c) where - toJSONKey = Aeson.ToJSONKeyText (Aeson.fromText . addrToText) (Aeson.text . addrToText) - -instance Crypto c => FromJSONKey (Addr c) where - fromJSONKey = Aeson.FromJSONKeyTextParser parseAddr - -instance ToJSON (Addr c) where - toJSON = toJSON . addrToText - -instance Crypto c => FromJSON (Addr c) where - parseJSON = Aeson.withText "address" parseAddr - -addrToText :: Addr c -> Text -addrToText = Text.decodeLatin1 . B16.encode . serialiseAddr - -parseAddr :: Crypto c => Text -> Aeson.Parser (Addr c) -parseAddr t = do - bytes <- either badHex return (B16.decode (Text.encodeUtf8 t)) - maybe badFormat return (deserialiseAddr bytes) - where - badHex h = fail $ "Addresses are expected in hex encoding for now: " ++ show h - badFormat = fail "Address is not in the right format" - -byron :: Int -byron = 7 - -notBaseAddr :: Int -notBaseAddr = 6 - -isEnterpriseAddr :: Int -isEnterpriseAddr = 5 - -stakeCredIsScript :: Int -stakeCredIsScript = 5 - -payCredIsScript :: Int -payCredIsScript = 4 - -putAddr :: Addr c -> Put -putAddr (AddrBootstrap (BootstrapAddress byronAddr)) = - B.putLazyByteString (serialize byronProtVer byronAddr) -putAddr (Addr network pc sr) = - let setPayCredBit = case pc of - ScriptHashObj _ -> flip setBit payCredIsScript - KeyHashObj _ -> id - netId = networkToWord8 network - in case sr of - StakeRefBase sc -> do - let setStakeCredBit = case sc of - ScriptHashObj _ -> flip setBit stakeCredIsScript - KeyHashObj _ -> id - header = setStakeCredBit . setPayCredBit $ netId - B.putWord8 header - putCredential pc - putCredential sc - StakeRefPtr ptr -> do - let header = setPayCredBit $ netId `setBit` notBaseAddr - B.putWord8 header - putCredential pc - putPtr ptr - StakeRefNull -> do - let header = setPayCredBit $ netId `setBit` isEnterpriseAddr `setBit` notBaseAddr - B.putWord8 header - putCredential pc -{-# INLINE putAddr #-} - -putRewardAccount :: RewardAcnt c -> Put -putRewardAccount (RewardAcnt network cred) = do - let setPayCredBit = case cred of - ScriptHashObj _ -> flip setBit payCredIsScript - KeyHashObj _ -> id - netId = networkToWord8 network - rewardAccountPrefix = 0xE0 -- 0b11100000 are always set for reward accounts - header = setPayCredBit (netId .|. rewardAccountPrefix) - B.putWord8 header - putCredential cred -putRewardAcnt :: RewardAcnt c -> Put -putRewardAcnt = putRewardAccount -{-# INLINE putRewardAcnt #-} -{-# DEPRECATED putRewardAcnt "Use `putRewardAccount` instead" #-} - -putHash :: Hash.Hash h a -> Put -putHash = B.putByteString . Hash.hashToBytes -{-# INLINE putHash #-} - -putCredential :: Credential kr c -> Put -putCredential (ScriptHashObj (ScriptHash h)) = putHash h -putCredential (KeyHashObj (KeyHash h)) = putHash h -{-# INLINE putCredential #-} - --- | The size of the extra attributes in a bootstrp (ie Byron) address. Used --- to help enforce that people do not post huge ones on the chain. -bootstrapAddressAttrsSize :: BootstrapAddress c -> Int -bootstrapAddressAttrsSize (BootstrapAddress addr) = - maybe 0 payloadLen derivationPath + Byron.unknownAttributesLength attrs - where - payloadLen = BS.length . Byron.getHDAddressPayload - derivationPath = Byron.aaVKDerivationPath (Byron.attrData attrs) - attrs = Byron.addrAttributes addr - --- | Return True if a given address is a redeemer address from the Byron Era -isBootstrapRedeemer :: BootstrapAddress c -> Bool -isBootstrapRedeemer (BootstrapAddress (Byron.Address _ _ Byron.ATRedeem)) = True -isBootstrapRedeemer _ = False - -putPtr :: Ptr -> Put -putPtr (Ptr (SlotNo slot) (TxIx txIx) (CertIx certIx)) = do - putVariableLengthWord64 slot - putVariableLengthWord64 txIx - putVariableLengthWord64 certIx - -newtype Word7 = Word7 Word8 - deriving (Eq, Show) - -toWord7 :: Word8 -> Word7 -toWord7 x = Word7 (x .&. 0x7F) -- 0x7F = 0b01111111 - -putWord7s :: [Word7] -> Put -putWord7s [] = pure () -putWord7s [Word7 x] = B.putWord8 x -putWord7s (Word7 x : xs) = B.putWord8 (x .|. 0x80) >> putWord7s xs - -word64ToWord7s :: Word64 -> [Word7] -word64ToWord7s = reverse . go - where - go :: Word64 -> [Word7] - go n - | n > 0x7F = (toWord7 . fromIntegral) n : go (shiftR n 7) - | otherwise = [Word7 . fromIntegral $ n] - -putVariableLengthWord64 :: Word64 -> Put -putVariableLengthWord64 = putWord7s . word64ToWord7s - -instance Crypto c => EncCBOR (Addr c) where - encCBOR = encCBOR . B.runPut . putAddr - {-# INLINE encCBOR #-} - -instance Crypto c => DecCBOR (Addr c) where - decCBOR = fromCborAddr - {-# INLINE decCBOR #-} - -instance Crypto c => EncCBOR (RewardAcnt c) where - encCBOR = encCBOR . B.runPut . putRewardAcnt - {-# INLINE encCBOR #-} - -instance Crypto c => DecCBOR (RewardAcnt c) where - decCBOR = fromCborRewardAcnt - {-# INLINE decCBOR #-} - -newtype BootstrapAddress c = BootstrapAddress - { unBootstrapAddress :: Byron.Address - } - deriving (Eq, Generic) - deriving newtype (NFData, Ord) - deriving (Show) via Quiet (BootstrapAddress c) - -instance NoThunks (BootstrapAddress c) - -bootstrapKeyHash :: - forall c. - Crypto c => - -- TODO: enforce this constraint - -- (HASH era ~ Hash.Blake2b_224) => - BootstrapAddress c -> - KeyHash 'Payment c -bootstrapKeyHash (BootstrapAddress byronAddress) = - let root = Byron.addrRoot byronAddress - bytes = Byron.abstractHashToBytes root - !hash = - fromMaybe (error "bootstrapKeyHash: incorrect hash length") $ - Hash.hashFromBytes bytes - in KeyHash hash - ------------------------------------------------------------------------------------------- --- Compact Address ----------------------------------------------------------------------- ------------------------------------------------------------------------------------------- - -newtype CompactAddr c = UnsafeCompactAddr ShortByteString - deriving stock (Eq, Generic, Ord) - deriving newtype (NoThunks, NFData) - -instance Crypto c => Show (CompactAddr c) where - show c = show (decompactAddr c) - --- | Unwrap the compact address and get to the address' binary representation. -unCompactAddr :: CompactAddr c -> ShortByteString -unCompactAddr (UnsafeCompactAddr sbs) = sbs -{-# INLINE unCompactAddr #-} - -compactAddr :: Addr c -> CompactAddr c -compactAddr = UnsafeCompactAddr . SBS.toShort . serialiseAddr -{-# INLINE compactAddr #-} - -decompactAddr :: forall c. (HasCallStack, Crypto c) => CompactAddr c -> Addr c -decompactAddr (UnsafeCompactAddr sbs) = - case runFail $ evalStateT (decodeAddrStateLenientT True True sbs) 0 of - Right addr -> addr - Left err -> - error $ - "Impossible: Malformed CompactAddr was allowed into the system. " - ++ " Decoder error: " - ++ err -{-# INLINE decompactAddr #-} - ------------------------------------------------------------------------------------------- --- Address Serializer -------------------------------------------------------------------- ------------------------------------------------------------------------------------------- - --- | Decoder for an `Addr`. Works in all eras -fromCborAddr :: forall c s. Crypto c => Decoder s (Addr c) -fromCborAddr = fst <$> fromCborBothAddr -{-# INLINE fromCborAddr #-} - --- | Returns the actual bytes that represent an addres, while ensuring that they can --- be decoded in any era as an `Addr` when need be. -fromCborCompactAddr :: forall c s. Crypto c => Decoder s (CompactAddr c) -fromCborCompactAddr = snd <$> fromCborBothAddr -{-# INLINE fromCborCompactAddr #-} - --- | This is the decoder for an address that returns both the actual `Addr` and the bytes, --- that it was encoded as. -fromCborBothAddr :: forall c s. Crypto c => Decoder s (Addr c, CompactAddr c) -fromCborBothAddr = do - ifDecoderVersionAtLeast (natVersion @7) decodeAddrRigorous fromCborBackwardsBothAddr - where - -- Starting with Babbage we no longer allow addresses with garbage in them. - decodeAddrRigorous = do - sbs <- decCBOR - flip evalStateT 0 $ do - addr <- decodeAddrStateLenientT False False sbs - pure (addr, UnsafeCompactAddr sbs) - {-# INLINE decodeAddrRigorous #-} -{-# INLINE fromCborBothAddr #-} - --- | Prior to Babbage era we did not check if a binary blob representing an address was --- fully consumed, so unfortunately we must preserve this behavior. However, we do not --- need to preserve the unconsumed bytes in memory, therefore we can to drop the --- garbage after we successfully decoded the malformed address. We also need to allow --- bogus pointer address to be deserializeable prior to Babbage era. -fromCborBackwardsBothAddr :: forall c s. Crypto c => Decoder s (Addr c, CompactAddr c) -fromCborBackwardsBothAddr = do - sbs <- decCBOR - flip evalStateT 0 $ do - addr <- decodeAddrStateLenientT True True sbs - bytesConsumed <- get - let sbsCropped = SBS.toShort $ BS.take bytesConsumed $ SBS.fromShort sbs - pure (addr, UnsafeCompactAddr sbsCropped) -{-# INLINE fromCborBackwardsBothAddr #-} - -class AddressBuffer b where - bufLength :: b -> Int - - bufUnsafeIndex :: b -> Int -> Word8 - - bufToByteString :: b -> BS.ByteString - - bufGetHash :: Hash.HashAlgorithm h => b -> Int -> Maybe (Hash.Hash h a) - -instance AddressBuffer ShortByteString where - bufLength = SBS.length - {-# INLINE bufLength #-} - bufUnsafeIndex = unsafeShortByteStringIndex - {-# INLINE bufUnsafeIndex #-} - bufToByteString = SBS.fromShort - {-# INLINE bufToByteString #-} - bufGetHash = Hash.hashFromOffsetBytesShort - {-# INLINE bufGetHash #-} - -instance AddressBuffer BS.ByteString where - bufLength = BS.length - {-# INLINE bufLength #-} - bufUnsafeIndex = BS.unsafeIndex - {-# INLINE bufUnsafeIndex #-} - bufToByteString = id - {-# INLINE bufToByteString #-} - bufGetHash :: forall h a. Hash.HashAlgorithm h => BS.ByteString -> Int -> Maybe (Hash.Hash h a) - bufGetHash bs offset = do - let size = fromIntegral (Hash.sizeHash (Proxy :: Proxy h)) - guard (offset >= 0 && offset + size <= BS.length bs) - Hash.hashFromBytes (BS.unsafeTake size (BS.unsafeDrop offset bs)) - {-# INLINE bufGetHash #-} - --- | Address header byte truth table: -newtype Header = Header Word8 - deriving newtype (Eq, Ord, Bits, Num) - -instance Show Header where - show (Header header) = ("0b" ++) . showIntAtBase 2 intToDigit header $ "" - --- | Every Byron address starts with @[TkListLen 2]@, which encodes as 130 (or 0x80) -headerByron :: Header -headerByron = 0b10000010 -- 0x80 - -isByronAddress :: Header -> Bool -isByronAddress = (== headerByron) -{-# INLINE isByronAddress #-} - -headerNonShelleyBits :: Header -headerNonShelleyBits = headerByron .|. 0b00001100 - -headerNetworkId :: Header -> Network -headerNetworkId header - | header `testBit` 0 = Mainnet - | otherwise = Testnet -{-# INLINE headerNetworkId #-} - -headerIsPaymentScript :: Header -> Bool -headerIsPaymentScript = (`testBit` 4) -{-# INLINE headerIsPaymentScript #-} - -headerIsEnterpriseAddr :: Header -> Bool -headerIsEnterpriseAddr = (`testBit` 5) -{-# INLINE headerIsEnterpriseAddr #-} - -headerIsStakingScript :: Header -> Bool -headerIsStakingScript = (`testBit` 5) -{-# INLINE headerIsStakingScript #-} - -headerIsBaseAddress :: Header -> Bool -headerIsBaseAddress = not . (`testBit` 6) -{-# INLINE headerIsBaseAddress #-} - --- | Same as `decodeAddr`, but produces an `Either` result -decodeAddrEither :: - forall c. - Crypto c => - BS.ByteString -> - Either String (Addr c) -decodeAddrEither bs = runFail $ evalStateT (decodeAddrStateT bs) 0 -{-# INLINE decodeAddrEither #-} - --- | Strict decoder for an address from a `ByteString`. This will not let you decode some --- of the buggy addresses that have been placed on chain. This decoder is intended for --- addresses that are to be placed on chian today. -decodeAddr :: - forall c m. - (Crypto c, MonadFail m) => - BS.ByteString -> - m (Addr c) -decodeAddr bs = evalStateT (decodeAddrStateT bs) 0 -{-# INLINE decodeAddr #-} - --- | Just like `decodeAddrStateLenientT`, but enforces the address to be well-formed. -decodeAddrStateT :: - (Crypto c, MonadFail m, AddressBuffer b) => - b -> - StateT Int m (Addr c) -decodeAddrStateT = decodeAddrStateLenientT False False -{-# INLINE decodeAddrStateT #-} - --- | This is the most general decoder for a Cardano address. This function is not meant to --- be used directly, but it is exported for convenice. `decodeAddr` and other should be --- used instead. --- --- While decoding an Addr the header (the first byte in the buffer) is expected to be in a --- certain format. Here are the meaning of all the bits: --- --- @@@ --- --- ┏━━━━━━━━━━━━━━━━┳━┯━┯━┯━┯━┯━┯━┯━┓ --- ┃ Byron Address ┃1┊0┊0┊0┊0┊0┊1┊0┃ --- ┣━━━━━━━━━━━━━━━━╋━┿━┿━┿━┿━┿━┿━┿━┫ --- ┃Shelley Address ┃0┊x┊x┊x┊0┊0┊0┊x┃ --- ┗━━━━━━━━━━━━━━━━╋━┿━┿━┿━┿━┿━┿━┿━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ --- ┃0┊0┊0┊0┊0┊0┊0┊0┃ Testnet PaymentKey StakingKey ┃ --- ┃0┊0┊0┊0┊0┊0┊0┊1┃ Mainnet PaymentKey StakingKey ┃ --- ┃0┊0┊0┊1┊0┊0┊0┊0┃ Testnet PaymentScript StakingKey ┃ --- ┃0┊0┊0┊1┊0┊0┊0┊1┃ Mainnet PaymentScript StakingKey ┃ --- ┃0┊0┊1┊0┊0┊0┊0┊0┃ Testnet PaymentKey StakingScript ┃ --- ┃0┊0┊1┊0┊0┊0┊0┊1┃ Mainnet PaymentKey StakingScript ┃ --- ┃0┊0┊1┊1┊0┊0┊0┊0┃ Testnet PaymentScript StakingScript ┃ --- ┃0┊0┊1┊1┊0┊0┊0┊1┃ Mainnet PaymentScript StakingScript ┃ --- ┃0┊1┊0┊0┊0┊0┊0┊0┃ Testnet PaymentKey StakingPtr ┃ --- ┃0┊1┊0┊0┊0┊0┊0┊1┃ Mainnet PaymentKey StakingPtr ┃ --- ┃0┊1┊0┊1┊0┊0┊0┊0┃ Testnet PaymentScript StakingPtr ┃ --- ┃0┊1┊0┊1┊0┊0┊0┊1┃ Mainnet PaymentScript StakingPtr ┃ --- ┃0┊1┊1┊0┊0┊0┊0┊0┃ Testnet PaymentKey StakingNull ┃ --- ┃0┊1┊1┊0┊0┊0┊0┊1┃ Mainnet PaymentKey StakingNull ┃ --- ┃0┊1┊1┊1┊0┊0┊0┊0┃ Testnet PaymentScript StakingNull ┃ --- ┃0┊1┊1┊1┊0┊0┊0┊1┃ Mainnet PaymentScript StakingNull ┃ --- ┗━┷━┷━┷━┷━┷━┷━┷━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ --- \ \ \ \ --- \ \ \ `Is Mainnet Address --- \ \ `Payment Credential is a Script --- \ `Staking Credential is a Script / No Staking Credential --- `Not a Base Address --- @@@ -decodeAddrStateLenientT :: - (Crypto c, MonadFail m, AddressBuffer b) => - -- | Enable lenient decoding for Ptrs, i.e. indicate whether junk can follow a Ptr. This - -- is necessary for backwards compatibility only. Setting this argument to True is only - -- needed for backwards compatibility. - Bool -> - -- | Indicate whether decoder should not enforce the full input to be consumed or not, - -- i.e. allow garbage at the end or not. Setting this argument to True is only needed - -- for backwards compatibility. - Bool -> - b -> - StateT Int m (Addr c) -decodeAddrStateLenientT isPtrLenient isLenient buf = do - guardLength "Header" 1 buf - let header = Header $ bufUnsafeIndex buf 0 - addr <- - if isByronAddress header - then AddrBootstrap <$> decodeBootstrapAddress buf - else do - -- Ensure there are no unexpected bytes in the header - unless (header .&. headerNonShelleyBits == 0) - $ failDecoding - "Shelley Address" - $ "Invalid header. Unused bits are not suppose to be set: " <> show header - -- Advance one byte for the consumed header - modify' (+ 1) - payment <- decodePaymentCredential header buf - staking <- decodeStakeReference isPtrLenient header buf - pure $ Addr (headerNetworkId header) payment staking - unless isLenient $ - ensureBufIsConsumed "Addr" buf - pure addr -{-# INLINE decodeAddrStateLenientT #-} - --- | Checks that the current offset is exactly at the end of the buffer. -ensureBufIsConsumed :: - forall m b. - (MonadFail m, AddressBuffer b) => - -- | Name for error reporting - String -> - -- | Buffer that should have been consumed. - b -> - StateT Int m () -ensureBufIsConsumed name buf = do - lastOffset <- get - let len = bufLength buf - unless (lastOffset == len) $ - failDecoding name $ - "Left over bytes: " ++ show (len - lastOffset) -{-# INLINE ensureBufIsConsumed #-} - --- | This decoder assumes the whole `ShortByteString` is occupied by the `BootstrapAddress` -decodeBootstrapAddress :: - forall c m b. - (MonadFail m, AddressBuffer b) => - b -> - StateT Int m (BootstrapAddress c) -decodeBootstrapAddress buf = - case decodeFull' byronProtVer $ bufToByteString buf of - Left e -> fail $ show e - Right addr -> BootstrapAddress addr <$ modify' (+ bufLength buf) -{-# INLINE decodeBootstrapAddress #-} - -decodePaymentCredential :: - (Crypto c, MonadFail m, AddressBuffer b) => - Header -> - b -> - StateT Int m (PaymentCredential c) -decodePaymentCredential header buf - | headerIsPaymentScript header = ScriptHashObj <$> decodeScriptHash buf - | otherwise = KeyHashObj <$> decodeKeyHash buf -{-# INLINE decodePaymentCredential #-} - -decodeStakeReference :: - (Crypto c, MonadFail m, AddressBuffer b) => - Bool -> - Header -> - b -> - StateT Int m (StakeReference c) -decodeStakeReference isLenientPtrDecoder header buf - | headerIsBaseAddress header = - if headerIsStakingScript header - then StakeRefBase . ScriptHashObj <$> decodeScriptHash buf - else StakeRefBase . KeyHashObj <$> decodeKeyHash buf - | otherwise = - if headerIsEnterpriseAddr header - then pure StakeRefNull - else StakeRefPtr <$> if isLenientPtrDecoder then decodePtrLenient buf else decodePtr buf -{-# INLINE decodeStakeReference #-} - -decodeKeyHash :: - (Crypto c, MonadFail m, AddressBuffer b) => - b -> - StateT Int m (KeyHash kr c) -decodeKeyHash buf = KeyHash <$> decodeHash buf -{-# INLINE decodeKeyHash #-} - -decodeScriptHash :: - (Crypto c, MonadFail m, AddressBuffer b) => - b -> - StateT Int m (ScriptHash c) -decodeScriptHash buf = ScriptHash <$> decodeHash buf -{-# INLINE decodeScriptHash #-} - -decodeHash :: - forall a h m b. - (Hash.HashAlgorithm h, MonadFail m, AddressBuffer b) => - b -> - StateT Int m (Hash.Hash h a) -decodeHash buf = do - offset <- get - case bufGetHash buf offset of - Just h -> h <$ modify' (+ hashLen) - Nothing - | offset >= 0 -> - failDecoding "Hash" $ - "Not enough bytes supplied: " - ++ show (bufLength buf - offset) - ++ ". Expected: " - ++ show hashLen - Nothing -> fail "Impossible: Negative offset" - where - hashLen :: Int - hashLen = fromIntegral (Hash.sizeHash (Proxy :: Proxy h)) -{-# INLINE decodeHash #-} - -decodePtr :: - (MonadFail m, AddressBuffer b) => - b -> - StateT Int m Ptr -decodePtr buf = - Ptr - <$> (SlotNo . (fromIntegral :: Word32 -> Word64) <$> decodeVariableLengthWord32 "SlotNo" buf) - <*> (TxIx . (fromIntegral :: Word16 -> Word64) <$> decodeVariableLengthWord16 "TxIx" buf) - <*> (CertIx . (fromIntegral :: Word16 -> Word64) <$> decodeVariableLengthWord16 "CertIx" buf) -{-# INLINE decodePtr #-} - -decodePtrLenient :: - (MonadFail m, AddressBuffer b) => - b -> - StateT Int m Ptr -decodePtrLenient buf = - Ptr - <$> (SlotNo <$> decodeVariableLengthWord64 "SlotNo" buf) - <*> (TxIx <$> decodeVariableLengthWord64 "TxIx" buf) - <*> (CertIx <$> decodeVariableLengthWord64 "CertIx" buf) -{-# INLINE decodePtrLenient #-} - -guardLength :: - (MonadFail m, AddressBuffer b) => - -- | Name for what is being decoded for the error message - String -> - Int -> - b -> - StateT Int m () -guardLength name expectedLength buf = do - offset <- get - when (offset > bufLength buf - expectedLength) $ - failDecoding name "Not enough bytes for decoding" -{-# INLINE guardLength #-} - --- | Decode a variable length integral value that is encoded with 7 bits of data --- and the most significant bit (MSB), the 8th bit is set whenever there are --- more bits following. Continuation style allows us to avoid --- rucursion. Removing loops is good for performance. -decode7BitVarLength :: - (Num a, Bits a, AddressBuffer b, MonadFail m) => - -- | Name of what is being decoded for error reporting - String -> - -- | Buffer that contains encoded number - b -> - -- | Continuation that will be invoked if MSB is set - (a -> StateT Int m a) -> - -- | Accumulator - a -> - StateT Int m a -decode7BitVarLength name buf cont !acc = do - guardLength name 1 buf - offset <- state (\off -> (off, off + 1)) - let b8 = bufUnsafeIndex buf offset - if b8 `testBit` 7 - then cont (acc `shiftL` 7 .|. fromIntegral (b8 `clearBit` 7)) - else pure (acc `shiftL` 7 .|. fromIntegral b8) -{-# INLINE decode7BitVarLength #-} - -failDecoding :: MonadFail m => String -> String -> m a -failDecoding name msg = fail $ "Decoding " ++ name ++ ": " ++ msg -{-# NOINLINE failDecoding #-} - -decodeVariableLengthWord16 :: - forall m b. - (MonadFail m, AddressBuffer b) => - String -> - b -> - StateT Int m Word16 -decodeVariableLengthWord16 name buf = do - off0 <- get - let d7 = decode7BitVarLength name buf - d7last :: Word16 -> StateT Int m Word16 - d7last acc = do - res <- decode7BitVarLength name buf (\_ -> failDecoding name "too many bytes.") acc - -- Only while decoding the last 7bits we check if there was too many - -- bits supplied at the beginning. - unless (bufUnsafeIndex buf off0 .&. 0b11111100 == 0b10000000) $ - failDecoding name "More than 16bits was supplied" - pure res - d7 (d7 d7last) 0 -{-# INLINE decodeVariableLengthWord16 #-} - -decodeVariableLengthWord32 :: - forall m b. - (MonadFail m, AddressBuffer b) => - String -> - b -> - StateT Int m Word32 -decodeVariableLengthWord32 name buf = do - off0 <- get - let d7 = decode7BitVarLength name buf - {-# INLINE d7 #-} - d7last :: Word32 -> StateT Int m Word32 - d7last acc = do - res <- decode7BitVarLength name buf (\_ -> failDecoding name "too many bytes.") acc - -- Only while decoding the last 7bits we check if there was too many - -- bits supplied at the beginning. - unless (bufUnsafeIndex buf off0 .&. 0b11110000 == 0b10000000) $ - failDecoding name "More than 32bits was supplied" - pure res - {-# INLINE d7last #-} - d7 (d7 (d7 (d7 d7last))) 0 -{-# INLINE decodeVariableLengthWord32 #-} - --- | This decoder is here only with the purpose of preserving old buggy behavior. Should --- not be used for anything else. -decodeVariableLengthWord64 :: - forall m b. - (MonadFail m, AddressBuffer b) => - String -> - b -> - StateT Int m Word64 -decodeVariableLengthWord64 name buf = fix (decode7BitVarLength name buf) 0 -{-# INLINE decodeVariableLengthWord64 #-} - ------------------------------------------------------------------------------------------- --- Reward Account Deserializer ----------------------------------------------------------- ------------------------------------------------------------------------------------------- - -decodeRewardAccount :: - forall c b m. - (Crypto c, AddressBuffer b, MonadFail m) => - b -> - m (RewardAcnt c) -decodeRewardAccount buf = evalStateT (decodeRewardAccountT buf) 0 -decodeRewardAcnt :: - forall c b m. - (Crypto c, AddressBuffer b, MonadFail m) => - b -> - m (RewardAcnt c) -decodeRewardAcnt = decodeRewardAccount -{-# INLINE decodeRewardAcnt #-} -{-# DEPRECATED decodeRewardAcnt "Use `decodeRewardAccount` instead" #-} - -fromCborRewardAccount :: forall c s. Crypto c => Decoder s (RewardAcnt c) -fromCborRewardAccount = do - sbs :: ShortByteString <- decCBOR - decodeRewardAcnt @c sbs -fromCborRewardAcnt :: forall c s. Crypto c => Decoder s (RewardAcnt c) -fromCborRewardAcnt = fromCborRewardAccount -{-# INLINE fromCborRewardAcnt #-} -{-# DEPRECATED fromCborRewardAcnt "Use `fromCborRewardAccount` instead" #-} - -headerIsRewardAccount :: Header -> Bool -headerIsRewardAccount header = header .&. 0b11101110 == 0b11100000 -{-# INLINE headerIsRewardAccount #-} - -headerRewardAccountIsScript :: Header -> Bool -headerRewardAccountIsScript = (`testBit` 4) -{-# INLINE headerRewardAccountIsScript #-} - --- | Reward Account Header. --- --- @@@ --- --- ┏━━━━━━━━━━━━━━━━┳━┯━┯━┯━┯━┯━┯━┯━┓ --- ┃ Reward Account ┃1┊1┊1┊x┊0┊0┊0┊x┃ --- ┗━━━━━━━━━━━━━━━━╋━┿━┿━┿━┿━┿━┿━┿━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ --- ┃1┊1┊1┊0┊0┊0┊0┊0┃ Testnet PaymentKey StakingKey ┃ --- ┃1┊1┊1┊0┊0┊0┊0┊1┃ Mainnet PaymentKey StakingKey ┃ --- ┃1┊1┊1┊1┊0┊0┊0┊0┃ Testnet PaymentScript StakingKey ┃ --- ┃1┊1┊1┊1┊0┊0┊0┊1┃ Mainnet PaymentScript StakingKey ┃ --- ┗━┷━┷━┷━┷━┷━┷━┷━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ --- \ \ --- \ `Is Mainnet Address --- `Account Credential is a Script --- @@@ -decodeRewardAccountT :: - (MonadFail m, Crypto c, AddressBuffer b) => - b -> - StateT Int m (RewardAcnt c) -decodeRewardAccountT buf = do - guardLength "Header" 1 buf - modify' (+ 1) - let header = Header $ bufUnsafeIndex buf 0 - unless (headerIsRewardAccount header) $ - fail $ - "Invalid header for the reward account: " <> show header - account <- - if headerRewardAccountIsScript header - then ScriptHashObj <$> decodeScriptHash buf - else KeyHashObj <$> decodeKeyHash buf - ensureBufIsConsumed "RewardsAcnt" buf - pure $! RewardAcnt (headerNetworkId header) account -{-# INLINE decodeRewardAccountT #-} - -instance Crypto c => EncCBOR (CompactAddr c) where - encCBOR (UnsafeCompactAddr bytes) = encCBOR bytes - {-# INLINE encCBOR #-} - -instance Crypto c => DecCBOR (CompactAddr c) where - decCBOR = fromCborCompactAddr - {-# INLINE decCBOR #-} - --- | Efficiently check whether compacted adddress is an address with a credential --- that is a payment script. -isPayCredScriptCompactAddr :: CompactAddr c -> Bool -isPayCredScriptCompactAddr (UnsafeCompactAddr bytes) = - testBit (SBS.index bytes 0) payCredIsScript - --- | Efficiently check whether compated adddress is a Byron address. -isBootstrapCompactAddr :: CompactAddr c -> Bool -isBootstrapCompactAddr (UnsafeCompactAddr bytes) = testBit (SBS.index bytes 0) byron - --- | Convert Byron's comapct address into `CompactAddr`. This is just an efficient type cast. -fromBoostrapCompactAddress :: Byron.CompactAddress -> CompactAddr c -fromBoostrapCompactAddress = UnsafeCompactAddr . Byron.unsafeGetCompactAddress - --- | This is called @wdrl@ in the spec. -newtype Withdrawals c = Withdrawals {unWithdrawals :: Map (RewardAcnt c) Coin} - deriving (Show, Eq, Generic) - deriving newtype (NoThunks, NFData, EncCBOR, DecCBOR) diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/Ap.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/Ap.hs deleted file mode 100644 index 1db2d8dba3f..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/Ap.hs +++ /dev/null @@ -1,116 +0,0 @@ -{-# LANGUAGE GADTs #-} -{-# LANGUAGE RankNTypes #-} - --- | This is taken from Edward Kmett's `free` library --- See: https://hackage.haskell.org/package/free-5.2 -module Cardano.Ledger.Ap - {-# DEPRECATED "Because it is no longer used in Ledger" #-} ( - Ap (..), - hoistAp, - runAp, - runAp_, -) where - --------------------------------------------------------------------------------- --- \| --- A faster free applicative. --- Based on . --------------------------------------------------------------------------------- -import Control.Applicative - --- | The free applicative is composed of a sequence of effects, --- and a pure function to apply that sequence to. --- The fast free applicative separates these from each other, --- so that the sequence may be built up independently, --- and so that 'fmap' can run in constant time by having immediate access to the pure function. -data ASeq f a where - ANil :: ASeq f () - ACons :: f a -> ASeq f u -> ASeq f (a, u) - --- | Interprets the sequence of effects using the semantics for --- `pure` and `<*>` given by the Applicative instance for 'f'. -reduceASeq :: Applicative f => ASeq f u -> f u -reduceASeq ANil = pure () -reduceASeq (ACons x xs) = (,) <$> x <*> reduceASeq xs - --- | Given a natural transformation from @f@ to @g@ this gives a natural transformation from @ASeq f@ to @ASeq g@. -hoistASeq :: (forall x. f x -> g x) -> ASeq f a -> ASeq g a -hoistASeq _ ANil = ANil -hoistASeq u (ACons x xs) = ACons (u x) (u `hoistASeq` xs) - --- | It may not be obvious, but this essentially acts like ++, --- traversing the first sequence and creating a new one by appending the second sequence. --- The difference is that this also has to modify the return functions and that the return type depends on the input types. --- --- See the source of 'hoistAp' as an example usage. -rebaseASeq :: - ASeq f u -> - (forall x. (x -> y) -> ASeq f x -> z) -> - (v -> u -> y) -> - ASeq f v -> - z -rebaseASeq ANil k f = k (`f` ()) -rebaseASeq (ACons x xs) k f = - rebaseASeq - xs - (\g s -> k (\(a, u) -> g u a) (ACons x s)) - (\v u a -> f v (a, u)) - --- | The faster free 'Applicative'. -newtype Ap f a = Ap - { unAp :: - forall u y z. - (forall x. (x -> y) -> ASeq f x -> z) -> - (u -> a -> y) -> - ASeq f u -> - z - } - --- | Given a natural transformation from @f@ to @g@, this gives a canonical monoidal natural transformation from @'Ap' f@ to @g@. --- --- prop> runAp t == retractApp . hoistApp t -runAp :: Applicative g => (forall x. f x -> g x) -> Ap f a -> g a -runAp u = retractAp . hoistAp u - --- | Perform a monoidal analysis over free applicative value. --- --- Example: --- --- @ --- count :: Ap f a -> Int --- count = getSum . runAp_ (\\_ -> Sum 1) --- @ -runAp_ :: Monoid m => (forall a. f a -> m) -> Ap f b -> m -runAp_ f = getConst . runAp (Const . f) - -instance Functor (Ap f) where - fmap g x = Ap (\k f -> unAp x k (\s -> f s . g)) - -instance Applicative (Ap f) where - pure a = Ap (\k f -> k (`f` a)) - x <*> y = Ap (\k f -> unAp y (unAp x k) (\s a g -> f s (g a))) - --- | Given a natural transformation from @f@ to @g@ this gives a monoidal natural transformation from @Ap f@ to @Ap g@. -hoistAp :: (forall x. f x -> g x) -> Ap f a -> Ap g a -hoistAp g x = - Ap - ( \k f s -> - unAp - x - ( \f' s' -> - rebaseASeq - (hoistASeq g s') - k - (\v u -> f v (f' u)) - s - ) - (const id) - ANil - ) - --- | Interprets the free applicative functor over f using the semantics for --- `pure` and `<*>` given by the Applicative instance for f. --- --- prop> retractApp == runAp id -retractAp :: Applicative f => Ap f a -> f a -retractAp x = unAp x (\f s -> f <$> reduceASeq s) (\() -> id) ANil diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/AuxiliaryData.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/AuxiliaryData.hs deleted file mode 100644 index 2c0c049ce3a..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/AuxiliaryData.hs +++ /dev/null @@ -1,40 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeFamilies #-} - -module Cardano.Ledger.AuxiliaryData ( - AuxiliaryDataHash (..), - - -- * Deprecations - ValidateAuxiliaryData, -) -where - -import Cardano.Ledger.Binary (DecCBOR, EncCBOR) -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Hashes (EraIndependentTxAuxData) -import Cardano.Ledger.SafeHash (SafeHash) -import Control.DeepSeq (NFData (..)) -import Data.Aeson (ToJSON) -import GHC.Generics (Generic) -import NoThunks.Class (NoThunks (..)) - -newtype AuxiliaryDataHash c = AuxiliaryDataHash - { unsafeAuxiliaryDataHash :: SafeHash c EraIndependentTxAuxData - } - deriving (Show, Eq, Ord, Generic, NoThunks, NFData) - -deriving instance Crypto c => EncCBOR (AuxiliaryDataHash c) - -deriving instance Crypto c => DecCBOR (AuxiliaryDataHash c) - -deriving newtype instance Crypto c => ToJSON (AuxiliaryDataHash c) - -type ValidateAuxiliaryData era c = () - -{-# DEPRECATED ValidateAuxiliaryData "Use `Cardano.Ledger.Core.EraTxAuxData` instead" #-} diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/BHeaderView.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/BHeaderView.hs deleted file mode 100644 index 7b010978874..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/BHeaderView.hs +++ /dev/null @@ -1,49 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE MultiParamTypeClasses #-} - -module Cardano.Ledger.BHeaderView where - -import Cardano.Ledger.BaseTypes (BoundedRational (..), UnitInterval) -import Cardano.Ledger.Hashes (EraIndependentBlockBody) -import Cardano.Ledger.Keys (Hash, KeyHash, KeyRole (..)) -import Cardano.Ledger.Slot (SlotNo (..), (-*)) -import Data.Word (Word32) - --- | 'BHeaderView' provides an interface between block headers --- from different Cardano protocols and packages that should be --- agnostic of Cardano protocol specific details, --- such as those in TPraos, Praos, Genesis, etc. --- --- In particular, the 'BBODY' rule comprises most of the ledger logic --- and should work independently of the protocol. The values in --- 'BHeaderView' provide 'BBODY' all the data that it needs from the --- block headers. -data BHeaderView c = BHeaderView - { bhviewID :: KeyHash 'BlockIssuer c - -- ^ The block issuer. In the TPraos protocol, this can be a - -- Genesis delegate, everywhere else it is the stake pool ID. - , bhviewBSize :: Word32 - -- ^ The purported size (in bytes) of the block body. - , bhviewHSize :: Int - -- ^ The purported size (in bytes) of the block header. - , bhviewBHash :: Hash c EraIndependentBlockBody - -- ^ The purported hash of the block body. - , bhviewSlot :: SlotNo - -- ^ The slot for which this block was submitted to the chain. - } - --- | Determine if the given slot is reserved for the overlay schedule. -isOverlaySlot :: - -- | The first slot of the given epoch. - SlotNo -> - -- | The decentralization parameter. - UnitInterval -> - -- | The slot to check. - SlotNo -> - Bool -isOverlaySlot firstSlotNo dval slot = step s < step (s + 1) - where - s = fromIntegral $ slot -* firstSlotNo - d = unboundRational dval - step :: Rational -> Integer - step x = ceiling (x * d) diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/BaseTypes.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/BaseTypes.hs deleted file mode 100644 index 406736f876b..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/BaseTypes.hs +++ /dev/null @@ -1,860 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DefaultSignatures #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE InstanceSigs #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE ViewPatterns #-} - -module Cardano.Ledger.BaseTypes ( - module Slotting, - ProtVer (..), - module Cardano.Ledger.Binary.Version, - FixedPoint, - (==>), - (⭒), - Network (..), - networkToWord8, - word8ToNetwork, - Nonce (..), - Seed (..), - UnitInterval, - PositiveUnitInterval, - PositiveInterval, - NonNegativeInterval, - BoundedRational (..), - fpPrecision, - promoteRatio, - invalidKey, - mkNonceFromOutputVRF, - mkNonceFromNumber, - Url, - urlToText, - textToUrl, - DnsName, - dnsToText, - textToDns, - Port (..), - ActiveSlotCoeff, - mkActiveSlotCoeff, - activeSlotVal, - activeSlotLog, - module Data.Maybe.Strict, - BlocksMade (..), - kindObject, - - -- * Indices - TxIx (..), - txIxToInt, - txIxFromIntegral, - mkTxIx, - mkTxIxPartial, - CertIx (..), - certIxToInt, - certIxFromIntegral, - mkCertIx, - mkCertIxPartial, - Anchor (..), - AnchorData (..), - hashAnchorData, - - -- * STS Base - Globals (..), - epochInfoPure, - ShelleyBase, - - -- * Injection - Inject (..), -) -where - -import Cardano.Crypto.Hash -import Cardano.Crypto.Util (SignableRepresentation (..)) -import qualified Cardano.Crypto.VRF as VRF -import Cardano.Ledger.Binary ( - CBORGroup (..), - DecCBOR (decCBOR), - DecCBORGroup (..), - Decoder, - DecoderError (..), - EncCBOR (encCBOR), - EncCBORGroup (..), - FromCBOR, - ToCBOR, - cborError, - decodeRationalWithTag, - encodeRatioWithTag, - encodedSizeExpr, - ifDecoderVersionAtLeast, - ) -import Cardano.Ledger.Binary.Coders ( - Decode (..), - Encode (..), - decode, - encode, - (!>), - ( fromCBOR - -instance NoThunks ProtVer - -instance ToJSON ProtVer where - toJSON (ProtVer major minor) = - object - [ "major" .= getVersion64 major - , "minor" .= minor - ] - -instance FromJSON ProtVer where - parseJSON = - withObject "ProtVer" $ \obj -> do - pvMajor <- mkVersion64 =<< obj .: "major" - pvMinor <- obj .: "minor" - pure ProtVer {..} - -instance EncCBORGroup ProtVer where - encCBORGroup (ProtVer x y) = encCBOR x <> encCBOR y - encodedGroupSizeExpr l proxy = - encodedSizeExpr l (pvMajor <$> proxy) - + encodedSizeExpr l (toWord . pvMinor <$> proxy) - where - toWord :: Natural -> Word - toWord = fromIntegral - - listLen _ = 2 - listLenBound _ = 2 - -instance DecCBORGroup ProtVer where - decCBORGroup = ProtVer <$> decCBOR <*> decCBOR - -data E34 - -instance FP.HasResolution E34 where - resolution _ = (10 :: Integer) ^ (34 :: Integer) - -type Digits34 = FP.Fixed E34 - -type FixedPoint = Digits34 - -fpPrecision :: FixedPoint -fpPrecision = (10 :: FixedPoint) ^ (34 :: Integer) - --- | This is an internal type for representing rational numbers that are bounded on some --- interval that is controlled by phantom type variable @b@ as well as by --- the bounds of underlying type @a@. -newtype BoundedRatio b a = BoundedRatio (Ratio a) - deriving (Eq, Generic) - deriving newtype (Show, NoThunks, NFData) - --- Deriving Ord instance can lead to integer overflow. We must go through Rational. -instance Integral a => Ord (BoundedRatio b a) where - compare (BoundedRatio a) (BoundedRatio b) = compare (promoteRatio a) (promoteRatio b) - -promoteRatio :: Integral a => Ratio a -> Rational -promoteRatio r = toInteger (numerator r) % toInteger (denominator r) - --- | Type clases that allows conversion between `Rational` and some form of bounded --- rational type. Bounds can be restricted by both the `Bounded` type class and underlyng --- representation. --- --- > maybe True (\br -> minBound <= br && br <= maxBound) . boundRational --- --- Roundtrip properties must hold: --- --- > \r -> maybe True ((r ==) . unboundRational) (boundRational r) --- > \br -> Just br == boundRational (unboundRational br) -class Bounded r => BoundedRational r where - -- | Returns `Nothing` when supplied value is not within bounds or when precision is - -- too high to be represented by the underlying type - -- - -- ===__Example__ - -- - -- >>> :set -XTypeApplications - -- >>> import Data.Ratio - -- >>> boundRational @UnitInterval $ 2 % 3 - -- Just (2 % 3) - -- >>> boundRational @UnitInterval (-0.5) - -- Nothing - -- >>> boundRational @UnitInterval (1.5) - -- Nothing - -- >>> boundRational @UnitInterval 0 - -- Just (0 % 1) - -- >>> boundRational @PositiveUnitInterval 0 - -- Nothing - boundRational :: Rational -> Maybe r - - -- | Promote bounded rational type into the unbounded `Rational`. - unboundRational :: r -> Rational - -instance - (Bounded (BoundedRatio b a), Bounded a, Integral a) => - BoundedRational (BoundedRatio b a) - where - boundRational = fromRationalBoundedRatio - unboundRational = toRationalBoundedRatio - -toRationalBoundedRatio :: Integral a => BoundedRatio b a -> Rational -toRationalBoundedRatio (BoundedRatio r) = promoteRatio r - -fromRationalBoundedRatio :: - forall b a. - (Bounded (BoundedRatio b a), Bounded a, Integral a) => - Rational -> - Maybe (BoundedRatio b a) -fromRationalBoundedRatio r - | n < minVal || d < minVal || n > maxVal || d > maxVal = Nothing -- protect against overflow - | otherwise = fromRatioBoundedRatio $ fromInteger n % fromInteger d - where - minVal = toInteger (minBound :: a) - maxVal = toInteger (maxBound :: a) - n = numerator r - d = denominator r - --- | Convert to `BoundedRatio`, while checking the bounds. This function doesn't guard --- against overflow, therefore use `fromRationalBoundedRatio . promoteRatio` instead --- when in doubt. -fromRatioBoundedRatio :: - forall b a. - (Bounded a, Bounded (BoundedRatio b a), Integral a) => - Ratio a -> - Maybe (BoundedRatio b a) -fromRatioBoundedRatio ratio - | r < unboundRational lowerBound - || r > unboundRational upperBound = - Nothing -- ensure valid range - | otherwise = Just $ BoundedRatio ratio - where - r = promoteRatio ratio - lowerBound = minBound :: BoundedRatio b a - upperBound = maxBound :: BoundedRatio b a - -instance (EncCBOR a, Integral a, Bounded a, Typeable b) => EncCBOR (BoundedRatio b a) where - encCBOR (BoundedRatio u) = encodeRatioWithTag encCBOR u - -instance - (DecCBOR a, Bounded (BoundedRatio b a), Bounded a, Integral a, Typeable b, Show a) => - DecCBOR (BoundedRatio b a) - where - decCBOR = do - r <- decodeRationalWithTag - case boundRational r of - Nothing -> - cborError $ DecoderErrorCustom "BoundedRatio" (Text.pack $ show r) - Just u -> pure u - -instance Bounded (BoundedRatio b Word64) => ToJSON (BoundedRatio b Word64) where - toJSON :: BoundedRatio b Word64 -> Value - toJSON br = case fromRationalRepetendLimited maxDecimalsWord64 r of - Right (s, Nothing) -> toJSON s - _ -> toJSON r - where - r = unboundRational br - -instance Bounded (BoundedRatio b Word64) => FromJSON (BoundedRatio b Word64) where - parseJSON = \case - rational@(Object _) -> parseWith fromRationalEither rational - sci -> parseWith fromScientificBoundedRatioWord64 sci - where - parseWith f = either fail pure . f <=< parseJSON - -fromScientificBoundedRatioWord64 :: - Bounded (BoundedRatio b Word64) => - Scientific -> - Either String (BoundedRatio b Word64) -fromScientificBoundedRatioWord64 (normalize -> sci) - | coeff < 0 = failWith "negative" sci - | exp10 <= 0 = do - when (exp10 < -maxDecimalsWord64) $ failWith "too precise" sci - fromRationalEither (coeff % (10 ^ negate exp10)) - | otherwise = do - when (maxDecimalsWord64 < exp10) $ failWith "too big" sci - fromRationalEither (coeff * 10 ^ exp10 % 1) - where - coeff = coefficient sci - exp10 = base10Exponent sci - -fromRationalEither :: - Bounded (BoundedRatio b Word64) => Rational -> Either String (BoundedRatio b Word64) -fromRationalEither r = maybe (failWith "outside of bounds" r) Right $ boundRational r - -failWith :: Show a => String -> a -> Either String b -failWith msg val = Left $ "Value is " <> msg <> ": " <> show val - --- | Type to represent a value in the interval [0; +∞) -newtype NonNegativeInterval - = NonNegativeInterval (BoundedRatio NonNegativeInterval Word64) - deriving (Ord, Eq, Generic) - deriving newtype - ( Show - , Bounded - , BoundedRational - , EncCBOR - , DecCBOR - , ToJSON - , FromJSON - , NoThunks - , NFData - ) - -instance Bounded (BoundedRatio NonNegativeInterval Word64) where - minBound = BoundedRatio (0 % 1) - maxBound = BoundedRatio (maxBound % 1) - --- | Type to represent a value in the interval (0; +∞) -newtype PositiveInterval - = PositiveInterval (BoundedRatio PositiveInterval Word64) - deriving (Ord, Eq, Generic) - deriving newtype - ( Show - , Bounded - , BoundedRational - , EncCBOR - , DecCBOR - , ToJSON - , FromJSON - , NoThunks - , NFData - ) - -instance Bounded (BoundedRatio PositiveInterval Word64) where - minBound = positiveIntervalEpsilon - maxBound = BoundedRatio (maxBound % 1) - --- | The smallest decimal value that can roundtrip JSON -positiveIntervalEpsilon :: BoundedRatio b Word64 -positiveIntervalEpsilon = BoundedRatio (1 % 10 ^ (maxDecimalsWord64 :: Int)) - --- | Type to represent a value in the unit interval (0; 1] -newtype PositiveUnitInterval - = PositiveUnitInterval (BoundedRatio PositiveUnitInterval Word64) - deriving (Ord, Eq, Generic) - deriving newtype - ( Show - , Bounded - , BoundedRational - , EncCBOR - , DecCBOR - , ToJSON - , FromJSON - , NoThunks - , NFData - ) - -instance Bounded (BoundedRatio PositiveUnitInterval Word64) where - minBound = positiveIntervalEpsilon - maxBound = BoundedRatio (1 % 1) - --- | Type to represent a value in the unit interval [0; 1] -newtype UnitInterval - = UnitInterval (BoundedRatio UnitInterval Word64) - deriving (Ord, Eq, Generic) - deriving newtype - ( Show - , Bounded - , BoundedRational - , EncCBOR - , DecCBOR - , ToJSON - , FromJSON - , NoThunks - , NFData - ) - -instance Integral a => Bounded (BoundedRatio UnitInterval a) where - minBound = BoundedRatio (0 % 1) - maxBound = BoundedRatio (1 % 1) - -instance Default UnitInterval where - def = minBound - --- | Evolving nonce type. -data Nonce - = Nonce !(Hash Blake2b_256 Nonce) - | -- | Identity element - NeutralNonce - deriving (Eq, Generic, Ord, Show, NFData) - -instance NoThunks Nonce - -instance EncCBOR Nonce - -instance DecCBOR Nonce - -instance ToCBOR Nonce where - toCBOR NeutralNonce = encodeListLen 1 <> toCBOR (0 :: Word8) - toCBOR (Nonce n) = encodeListLen 2 <> toCBOR (1 :: Word8) <> toCBOR n - -instance FromCBOR Nonce where - fromCBOR = decodeRecordSum "Nonce" $ - \case - 0 -> pure (1, NeutralNonce) - 1 -> do - x <- fromCBOR - pure (2, Nonce x) - k -> invalidKey k - -instance ToJSON Nonce where - toJSON NeutralNonce = Null - toJSON (Nonce n) = toJSON n - -instance FromJSON Nonce where - parseJSON Null = return NeutralNonce - parseJSON x = Nonce <$> parseJSON x - --- | Evolve the nonce -(⭒) :: Nonce -> Nonce -> Nonce -Nonce a ⭒ Nonce b = - Nonce . castHash $ - hashWith id (hashToBytes a <> hashToBytes b) -x ⭒ NeutralNonce = x -NeutralNonce ⭒ x = x - --- | Make a nonce from the VRF output bytes -mkNonceFromOutputVRF :: VRF.OutputVRF v -> Nonce -mkNonceFromOutputVRF = - Nonce - . (castHash :: Hash Blake2b_256 (VRF.OutputVRF v) -> Hash Blake2b_256 Nonce) - . hashWith VRF.getOutputVRFBytes - --- | Make a nonce from a number. -mkNonceFromNumber :: Word64 -> Nonce -mkNonceFromNumber = - Nonce - . (castHash :: Hash Blake2b_256 Word64 -> Hash Blake2b_256 Nonce) - . hashWith (BSL.toStrict . B.runPut . B.putWord64be) - --- | Seed to the verifiable random function. -newtype Seed = Seed (Hash Blake2b_256 Seed) - deriving (Eq, Ord, Show, Generic) - deriving newtype (NoThunks, EncCBOR) - -instance SignableRepresentation Seed where - getSignableRepresentation (Seed x) = hashToBytes x - -(==>) :: Bool -> Bool -> Bool -a ==> b = not a || b - -infix 1 ==> - --- --- Helper functions for text with byte-length bounds --- - -textSizeN :: MonadFail m => Int -> Text -> m Text -textSizeN n t = - if BS.length (encodeUtf8 t) <= n - then pure t - else fail $ "Text exceeds " ++ show n ++ " bytes:" ++ show t - -textDecCBOR :: Int -> Decoder s Text -textDecCBOR n = decCBOR >>= textSizeN n - --- | Turn a Text into a Url, fail if the Text has more than 'n' Bytes -textToUrl :: MonadFail m => Int -> Text -> m Url -textToUrl n t = Url <$> textSizeN n t - --- | Turn a Text into a DnsName, fail if the Text has more than 'n' Bytes -textToDns :: MonadFail m => Int -> Text -> m DnsName -textToDns n t = DnsName <$> textSizeN n t - --- --- Types used in the Stake Pool Relays --- - -newtype Url = Url {urlToText :: Text} - deriving (Eq, Ord, Generic, Show) - deriving newtype (EncCBOR, NFData, NoThunks, FromJSON, ToJSON) - -instance DecCBOR Url where - decCBOR = - Url - <$> ifDecoderVersionAtLeast - (natVersion @9) - (textDecCBOR 128) - (textDecCBOR 64) - -newtype DnsName = DnsName {dnsToText :: Text} - deriving (Eq, Ord, Generic, Show) - deriving newtype (EncCBOR, NoThunks, NFData, FromJSON, ToJSON) - -instance DecCBOR DnsName where - decCBOR = - DnsName - <$> ifDecoderVersionAtLeast - (natVersion @9) - (textDecCBOR 128) - (textDecCBOR 64) - -newtype Port = Port {portToWord16 :: Word16} - deriving (Eq, Ord, Generic, Show) - deriving newtype (Num, DecCBOR, EncCBOR, NFData, NoThunks, ToJSON, FromJSON) - --------------------------------------------------------------------------------- --- Active Slot Coefficent, named f in --- "Ouroboros Praos: An adaptively-secure, semi-synchronous proof-of-stake protocol" --------------------------------------------------------------------------------- - -data ActiveSlotCoeff = ActiveSlotCoeff - { unActiveSlotVal :: !PositiveUnitInterval - , unActiveSlotLog :: !Integer -- TODO mgudemann make this FixedPoint, - -- currently a problem because of - -- NoThunks instance for FixedPoint - } - deriving (Eq, Ord, Show, Generic) - -instance NoThunks ActiveSlotCoeff - -instance NFData ActiveSlotCoeff - -instance DecCBOR ActiveSlotCoeff where - decCBOR = mkActiveSlotCoeff <$> decCBOR - -instance EncCBOR ActiveSlotCoeff where - encCBOR - ActiveSlotCoeff - { unActiveSlotVal = slotVal - , unActiveSlotLog = _logVal - } = - encCBOR slotVal - -mkActiveSlotCoeff :: PositiveUnitInterval -> ActiveSlotCoeff -mkActiveSlotCoeff v = - ActiveSlotCoeff - { unActiveSlotVal = v - , unActiveSlotLog = - if v == maxBound - then -- If the active slot coefficient is equal to one, - -- then nearly every stake pool can produce a block every slot. - -- In this degenerate case, where ln (1-f) is not defined, - -- we set the unActiveSlotLog to zero. - 0 - else - floor - (fpPrecision * ln' ((1 :: FixedPoint) - fromRational (unboundRational v))) - } - -activeSlotVal :: ActiveSlotCoeff -> PositiveUnitInterval -activeSlotVal = unActiveSlotVal - -activeSlotLog :: ActiveSlotCoeff -> FixedPoint -activeSlotLog f = fromIntegral (unActiveSlotLog f) / fpPrecision - --------------------------------------------------------------------------------- --- Base monad for all STS systems --------------------------------------------------------------------------------- - -data Globals = Globals - { epochInfo :: !(EpochInfo (Either Text)) - , slotsPerKESPeriod :: !Word64 - , stabilityWindow :: !Word64 - -- ^ The window size in which our chosen chain growth property - -- guarantees at least k blocks. From the paper - -- "Ouroboros praos: An adaptively-secure, semi-synchronous proof-of-stake protocol". - -- The 'stabilityWindow' constant is used in a number of places; for example, - -- protocol updates must be submitted at least twice this many slots before an epoch boundary. - , randomnessStabilisationWindow :: !Word64 - -- ^ Number of slots before the end of the epoch at which we stop updating - -- the candidate nonce for the next epoch. - , securityParameter :: !Word64 - -- ^ Maximum number of blocks we are allowed to roll back - , maxKESEvo :: !Word64 - -- ^ Maximum number of KES iterations - , quorum :: !Word64 - -- ^ Quorum for update system votes and MIR certificates - , maxMajorPV :: !Version - -- ^ All blocks invalid after this protocol version - , maxLovelaceSupply :: !Word64 - -- ^ Maximum number of lovelace in the system - , activeSlotCoeff :: !ActiveSlotCoeff - -- ^ Active Slot Coefficient, named f in - -- "Ouroboros Praos: An adaptively-secure, semi-synchronous proof-of-stake protocol" - , networkId :: !Network - -- ^ The network ID - , systemStart :: !SystemStart - -- ^ System start time - } - deriving (Show, Generic) - -instance NoThunks Globals - -instance NFData Globals where - rnf (Globals {}) = () - -type ShelleyBase = ReaderT Globals Identity - --- | Pure epoch info via throw. Note that this should only be used when we can --- guarantee the validity of the translation; in particular, the `EpochInfo` --- used here should never be applied to user-supplied input. -epochInfoPure :: Globals -> EpochInfo Identity -epochInfoPure = hoistEpochInfo (either (throw . EpochErr) pure) . epochInfo - -newtype EpochErr = EpochErr Text - -deriving instance Show EpochErr - -instance Exception EpochErr - -data Network - = Testnet - | Mainnet - deriving (Eq, Ord, Enum, Bounded, Show, Generic, NFData, ToJSON, FromJSON, NoThunks) - -networkToWord8 :: Network -> Word8 -networkToWord8 = toEnum . fromEnum - -word8ToNetwork :: Word8 -> Maybe Network -word8ToNetwork e - | fromEnum e > fromEnum (maxBound :: Network) = Nothing - | fromEnum e < fromEnum (minBound :: Network) = Nothing - | otherwise = Just $ toEnum (fromEnum e) - -instance EncCBOR Network where - encCBOR = encCBOR . networkToWord8 - -instance DecCBOR Network where - decCBOR = - word8ToNetwork <$> decCBOR >>= \case - Nothing -> cborError $ DecoderErrorCustom "Network" "Unknown network id" - Just n -> pure n - {-# INLINE decCBOR #-} - --- | Blocks made -newtype BlocksMade c = BlocksMade - { unBlocksMade :: Map (KeyHash 'StakePool c) Natural - } - deriving (Eq, Generic) - deriving (Show) via Quiet (BlocksMade c) - deriving newtype (NoThunks, NFData, ToJSON, FromJSON, EncCBOR, DecCBOR) - --- TODO: It is unfeasable to have 65535 outputs in a transaction, --- but 255 is right on the border of a maximum TxIx on Mainnet at the moment, --- that is why `Word16` was chosen as the smallest upper bound. Use --- `txIxFromIntegral` in order to construct this index safely from anything --- other than `Word16`. There is also `mkTxIxPartial` that can be used for --- testing. - --- | Transaction index. -newtype TxIx = TxIx Word64 - deriving stock (Eq, Ord, Show, Generic) - deriving newtype (NFData, Enum, Bounded, NoThunks, EncCBOR, DecCBOR, ToCBOR, FromCBOR, ToJSON) - --- | Construct a `TxIx` from a 16 bit unsigned integer -mkTxIx :: Word16 -> TxIx -mkTxIx = TxIx . fromIntegral - -txIxToInt :: TxIx -> Int -txIxToInt (TxIx w16) = fromIntegral w16 - -txIxFromIntegral :: Integral a => a -> Maybe TxIx -txIxFromIntegral = fmap (TxIx . fromIntegral) . word16FromInteger . toInteger -{-# INLINE txIxFromIntegral #-} - --- | Construct a `TxIx` from an arbitrary precision `Integer`. Throws an error for --- values out of range. Make sure to use it only for testing. -mkTxIxPartial :: HasCallStack => Integer -> TxIx -mkTxIxPartial i = - fromMaybe (error $ "Value for TxIx is out of a valid range: " ++ show i) $ - txIxFromIntegral i - --- | Certificate index. Use `certIxFromIntegral` in order to construct this --- index safely from anything other than `Word16`. There is also --- `mkCertIxPartial` that can be used for testing. -newtype CertIx = CertIx Word64 - deriving stock (Eq, Ord, Show) - deriving newtype (NFData, Enum, Bounded, NoThunks, EncCBOR, DecCBOR, ToCBOR, FromCBOR, ToJSON) - --- | Construct a `CertIx` from a 16 bit unsigned integer -mkCertIx :: Word16 -> CertIx -mkCertIx = CertIx . fromIntegral - -certIxToInt :: CertIx -> Int -certIxToInt (CertIx w16) = fromIntegral w16 - -certIxFromIntegral :: Integral a => a -> Maybe CertIx -certIxFromIntegral = fmap (CertIx . fromIntegral) . word16FromInteger . toInteger -{-# INLINE certIxFromIntegral #-} - --- | Construct a `CertIx` from an arbitrary precision `Integer`. Throws an error for --- values out of range. Make sure to use it only for testing. -mkCertIxPartial :: HasCallStack => Integer -> CertIx -mkCertIxPartial i = - fromMaybe (error $ "Value for CertIx is out of a valid range: " ++ show i) $ - certIxFromIntegral i - -word16FromInteger :: Integer -> Maybe Word16 -word16FromInteger i - | i < fromIntegral (minBound :: Word16) || i > fromIntegral (maxBound :: Word16) = Nothing - | otherwise = Just (fromInteger i) -{-# INLINE word16FromInteger #-} - --- ================================= - -newtype AnchorData = AnchorData ByteString - deriving (Eq) - deriving newtype (SafeToHash) - -instance HashWithCrypto AnchorData AnchorData - --- | Hash `AnchorData` -hashAnchorData :: forall c. Crypto c => AnchorData -> SafeHash c AnchorData -hashAnchorData = hashWithCrypto (Proxy @c) - -data Anchor c = Anchor - { anchorUrl :: !Url - , anchorDataHash :: !(SafeHash c AnchorData) - } - deriving (Eq, Ord, Show, Generic) - -instance NoThunks (Anchor c) - -instance Crypto c => NFData (Anchor c) where - rnf = rwhnf - -instance Crypto c => DecCBOR (Anchor c) where - decCBOR = - decode $ - RecD Anchor - EncCBOR (Anchor c) where - encCBOR Anchor {..} = - encode $ - Rec Anchor - !> To anchorUrl - !> To anchorDataHash - -instance Crypto c => ToJSON (Anchor c) where - toJSON = object . toAnchorPairs - toEncoding = pairs . mconcat . toAnchorPairs - -instance Crypto c => FromJSON (Anchor c) where - parseJSON = withObject "Anchor" $ \o -> do - anchorUrl <- o .: "url" - anchorDataHash <- o .: "dataHash" - pure $ Anchor {..} - -instance Crypto c => Default (Anchor c) where - def = Anchor (Url "") def - -toAnchorPairs :: (KeyValue e a, Crypto c) => Anchor c -> [a] -toAnchorPairs vote@(Anchor _ _) = - let Anchor {..} = vote - in [ "url" .= anchorUrl - , "dataHash" .= anchorDataHash - ] - -instance Default Network where - def = Mainnet - -class Inject t s where - inject :: t -> s - default inject :: t ~ s => t -> s - inject = id - -instance Inject t () where - inject = const () - -instance Inject Void s where - inject = absurd - --- | Helper function for a common pattern of creating objects -kindObject :: Text -> [Pair] -> Value -kindObject name obj = object $ ("kind" .= name) : obj diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/Block.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/Block.hs deleted file mode 100644 index 2ee380f7b35..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/Block.hs +++ /dev/null @@ -1,171 +0,0 @@ -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} - -module Cardano.Ledger.Block ( - Block (Block, Block', UnserialisedBlock, UnsafeUnserialisedBlock), - bheader, - bbody, - neededTxInsForBlock, - txid, -) -where - -import Cardano.Ledger.Binary ( - Annotator (..), - DecCBOR (decCBOR), - EncCBOR (..), - EncCBORGroup (..), - annotatorSlice, - decodeRecordNamed, - encodeListLen, - serialize, - ) -import qualified Cardano.Ledger.Binary.Plain as Plain -import Cardano.Ledger.Core -import Cardano.Ledger.SafeHash (hashAnnotated) -import Cardano.Ledger.TxIn (TxId (..), TxIn (..)) -import qualified Data.ByteString.Lazy as BSL -import Data.Foldable (toList) -import Data.Set (Set) -import qualified Data.Set as Set -import Data.Typeable (Typeable) -import GHC.Generics (Generic) -import Lens.Micro ((^.)) -import NoThunks.Class (NoThunks (..)) - -data Block h era - = Block' !h !(TxSeq era) BSL.ByteString - deriving (Generic) - -deriving stock instance - (Era era, Show (TxSeq era), Show h) => - Show (Block h era) - -deriving stock instance - (Era era, Eq (TxSeq era), Eq h) => - Eq (Block h era) - -deriving anyclass instance - ( Era era - , NoThunks (TxSeq era) - , NoThunks h - ) => - NoThunks (Block h era) - -pattern Block :: - forall era h. - ( Era era - , EncCBORGroup (TxSeq era) - , EncCBOR h - ) => - h -> - TxSeq era -> - Block h era -pattern Block h txns <- - Block' h txns _ - where - Block h txns = - let bytes = - serialize (eraProtVerLow @era) $ - encodeListLen (1 + listLen txns) <> encCBOR h <> encCBORGroup txns - in Block' h txns bytes - -{-# COMPLETE Block #-} - --- | Access a block without its serialised bytes. This is often useful when --- we're using a 'BHeaderView' in place of the concrete header. -pattern UnserialisedBlock :: - h -> - TxSeq era -> - Block h era -pattern UnserialisedBlock h txns <- Block' h txns _ - -{-# COMPLETE UnserialisedBlock #-} - --- | Unsafely construct a block without the ability to serialise its bytes. --- --- Anyone calling this pattern must ensure that the resulting block is never --- serialised. Any uses of this pattern outside of testing code should be --- regarded with suspicion. -pattern UnsafeUnserialisedBlock :: - h -> - TxSeq era -> - Block h era -pattern UnsafeUnserialisedBlock h txns <- - Block' h txns _ - where - UnsafeUnserialisedBlock h txns = - let bytes = error "`UnsafeUnserialisedBlock` used to construct a block which was later serialised." - in Block' h txns bytes - -{-# COMPLETE UnsafeUnserialisedBlock #-} - -instance (EraTx era, Typeable h) => EncCBOR (Block h era) - -instance (EraTx era, Typeable h) => Plain.ToCBOR (Block h era) where - toCBOR (Block' _ _ blockBytes) = Plain.encodePreEncoded $ BSL.toStrict blockBytes - -instance - forall h era. - ( EraSegWits era - , DecCBOR (Annotator h) - , Typeable h - ) => - DecCBOR (Annotator (Block h era)) - where - decCBOR = annotatorSlice $ - decodeRecordNamed "Block" (const blockSize) $ do - header <- decCBOR - txns <- decCBOR - pure $ Block' <$> header <*> txns - where - blockSize = - 1 -- header - + fromIntegral (numSegComponents @era) - -bheader :: - Block h era -> - h -bheader (Block' bh _ _) = bh - -bbody :: Block h era -> TxSeq era -bbody (Block' _ txs _) = txs - --- | The validity of any individual block depends only on a subset --- of the UTxO stored in the ledger state. This function returns --- the transaction inputs corresponding to the required UTxO for a --- given Block. --- --- This function will be used by the consensus layer to enable storing --- the UTxO on disk. In particular, given a block, the consensus layer --- will use 'neededTxInsForBlock' to retrieve the needed UTxO from disk --- and present only those to the ledger. -neededTxInsForBlock :: - forall h era. - EraSegWits era => - Block h era -> - Set (TxIn (EraCrypto era)) -neededTxInsForBlock (Block' _ txsSeq _) = Set.filter isNotNewInput allTxIns - where - txBodies = map (^. bodyTxL) $ toList $ fromTxSeq txsSeq - allTxIns = Set.unions $ map (^. allInputsTxBodyF) txBodies - newTxIds = Set.fromList $ map txid txBodies - isNotNewInput (TxIn txID _) = txID `Set.notMember` newTxIds - --- | Compute the id of a transaction. -txid :: EraTxBody era => TxBody era -> TxId (EraCrypto era) -txid = TxId . hashAnnotated -{-# DEPRECATED txid "In favor of `Cardano.Ledger.Core.txIdTxBody` or `Cardano.Ledger.Core.txIdTx`" #-} diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/CertState.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/CertState.hs deleted file mode 100644 index 5797d8f3806..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/CertState.hs +++ /dev/null @@ -1,637 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} - -module Cardano.Ledger.CertState ( - CertState (..), - CommitteeAuthorization (..), - DState (..), - PState (..), - VState (..), - InstantaneousRewards (..), - FutureGenDeleg (..), - Anchor (..), - DRepState (..), - DRep (..), - CommitteeState (..), - AnchorData, - lookupDepositDState, - lookupRewardDState, - rewards, - delegations, - ptrsMap, - payPoolDeposit, - refundPoolDeposit, - obligationCertState, - Obligations (..), - sumObligation, - certsTotalDepositsTxBody, - certsTotalRefundsTxBody, - -- Lenses - certDStateL, - certPStateL, - certVStateL, - dsUnifiedL, - dsGenDelegsL, - dsIRewardsL, - dsFutureGenDelegsL, - psStakePoolParamsL, - psFutureStakePoolParamsL, - psRetiringL, - psDepositsL, - vsDRepsL, - vsCommitteeStateL, - vsNumDormantEpochsL, - csCommitteeCredsL, - lookupDepositVState, -) -where - -import Cardano.Ledger.BaseTypes (Anchor (..), AnchorData, StrictMaybe) -import Cardano.Ledger.Binary ( - DecCBOR (..), - DecShareCBOR (..), - EncCBOR (..), - Interns, - ToCBOR (..), - decNoShareCBOR, - decSharePlusCBOR, - decSharePlusLensCBOR, - decodeRecordNamed, - decodeRecordNamedT, - encodeListLen, - toMemptyLens, - ) -import Cardano.Ledger.Binary.Coders (Decode (..), Encode (..), decode, encode, (!>), ( EncCBOR (FutureGenDeleg c) where - encCBOR (FutureGenDeleg a b) = - encodeListLen 2 <> encCBOR a <> encCBOR b - -instance Crypto c => DecCBOR (FutureGenDeleg c) where - decCBOR = - decodeRecordNamed "FutureGenDeleg" (const 2) $ - FutureGenDeleg <$> decCBOR <*> decCBOR - -instance Crypto c => ToJSON (FutureGenDeleg c) where - toJSON fGenDeleg = - object - [ "fGenDelegSlot" .= fGenDelegSlot fGenDeleg - , "fGenDelegGenKeyHash" .= fGenDelegGenKeyHash fGenDeleg - ] - --- | InstantaneousRewards captures the pending changes to the ledger --- state caused by MIR certificates. It consists of two mappings, --- the rewards which will be paid out from the reserves and the rewards --- which will be paid out from the treasury. It also consists of --- two coin values which represent the transfer of coins from --- one pot to the other pot. --- NOTE that the following property should always hold: --- deltaReserves + deltaTreasury = 0 -data InstantaneousRewards c = InstantaneousRewards - { iRReserves :: !(Map (Credential 'Staking c) Coin) - , iRTreasury :: !(Map (Credential 'Staking c) Coin) - , deltaReserves :: !DeltaCoin - , deltaTreasury :: !DeltaCoin - } - deriving (Show, Eq, Generic) - -instance NoThunks (InstantaneousRewards c) - -instance NFData (InstantaneousRewards c) - -instance Crypto c => ToJSON (InstantaneousRewards c) where - toJSON = object . toInstantaneousRewardsPair - toEncoding = pairs . mconcat . toInstantaneousRewardsPair - -toInstantaneousRewardsPair :: (KeyValue e a, Crypto c) => InstantaneousRewards c -> [a] -toInstantaneousRewardsPair InstantaneousRewards {..} = - [ "iRReserves" .= iRReserves - , "iRTreasury" .= iRTreasury - , "deltaReserves" .= deltaReserves - , "deltaTreasury" .= deltaTreasury - ] - --- | The state used by the DELEG rule, which roughly tracks stake --- delegation and some governance features. -data DState era = DState - { dsUnified :: !(UMap (EraCrypto era)) - -- ^ Unified Reward Maps. This contains the reward map (which is the source - -- of truth regarding the registered stake credentials, the deposit map, - -- the delegation map, and the stake credential pointer map. - , dsFutureGenDelegs :: !(Map (FutureGenDeleg (EraCrypto era)) (GenDelegPair (EraCrypto era))) - -- ^ Future genesis key delegations - , dsGenDelegs :: !(GenDelegs (EraCrypto era)) - -- ^ Genesis key delegations - , dsIRewards :: !(InstantaneousRewards (EraCrypto era)) - -- ^ Instantaneous Rewards - } - deriving (Show, Eq, Generic) - -instance NoThunks (DState era) - -instance NFData (DState era) - -instance (Era era, EncCBOR (InstantaneousRewards (EraCrypto era))) => EncCBOR (DState era) where - encCBOR (DState unified fgs gs ir) = - encodeListLen 4 - <> encCBOR unified - <> encCBOR fgs - <> encCBOR gs - <> encCBOR ir - -instance (Era era, DecShareCBOR (InstantaneousRewards (EraCrypto era))) => DecShareCBOR (DState era) where - type - Share (DState era) = - (Interns (Credential 'Staking (EraCrypto era)), Interns (KeyHash 'StakePool (EraCrypto era))) - decSharePlusCBOR = - decodeRecordNamedT "DState" (const 4) $ do - unified <- decSharePlusCBOR - fgs <- lift decCBOR - gs <- lift decCBOR - ir <- decSharePlusLensCBOR _1 - pure $ DState unified fgs gs ir - -instance Era era => ToJSON (DState era) where - toJSON = object . toDStatePair - toEncoding = pairs . mconcat . toDStatePair - -toDStatePair :: (KeyValue e a, Era era) => DState era -> [a] -toDStatePair DState {..} = - [ "unified" .= dsUnified - , "fGenDelegs" .= Map.toList dsFutureGenDelegs - , "genDelegs" .= dsGenDelegs - , "irwd" .= dsIRewards - ] - --- | Function that looks up the deposit for currently delegated staking credential -lookupDepositDState :: DState era -> (StakeCredential (EraCrypto era) -> Maybe Coin) -lookupDepositDState dstate = - let currentRewardDeposits = RewDepUView $ dsUnified dstate - in \k -> do - RDPair _ deposit <- UM.lookup k currentRewardDeposits - Just $! fromCompact deposit - --- | Function that looks up curret reward for the delegated staking credential. -lookupRewardDState :: DState era -> (StakeCredential (EraCrypto era) -> Maybe Coin) -lookupRewardDState dstate = - let currentRewardDeposits = RewDepUView $ dsUnified dstate - in \k -> do - RDPair reward _ <- UM.lookup k currentRewardDeposits - Just $! fromCompact reward - --- | The state used by the POOL rule, which tracks stake pool information. -data PState era = PState - { psStakePoolParams :: !(Map (KeyHash 'StakePool (EraCrypto era)) (PoolParams (EraCrypto era))) - -- ^ The stake pool parameters. - , psFutureStakePoolParams :: !(Map (KeyHash 'StakePool (EraCrypto era)) (PoolParams (EraCrypto era))) - -- ^ The future stake pool parameters. - -- Changes to existing stake pool parameters are staged in order - -- to give delegators time to react to changes. - -- See section 11.2, "Example Illustration of the Reward Cycle", - -- of the Shelley Ledger Specification for a sequence diagram. - , psRetiring :: !(Map (KeyHash 'StakePool (EraCrypto era)) EpochNo) - -- ^ A map of retiring stake pools to the epoch when they retire. - , psDeposits :: !(Map (KeyHash 'StakePool (EraCrypto era)) Coin) - -- ^ A map of the deposits for each pool - } - deriving (Show, Eq, Generic) - -instance NoThunks (PState era) - -instance NFData (PState era) - -instance Era era => EncCBOR (PState era) where - encCBOR (PState a b c d) = - encodeListLen 4 <> encCBOR a <> encCBOR b <> encCBOR c <> encCBOR d - -instance Era era => DecShareCBOR (PState era) where - type Share (PState era) = Interns (KeyHash 'StakePool (EraCrypto era)) - decSharePlusCBOR = decodeRecordNamedT "PState" (const 4) $ do - psStakePoolParams <- decSharePlusLensCBOR (toMemptyLens _1 id) - psFutureStakePoolParams <- decSharePlusLensCBOR (toMemptyLens _1 id) - psRetiring <- decSharePlusLensCBOR (toMemptyLens _1 id) - psDeposits <- decSharePlusLensCBOR (toMemptyLens _1 id) - pure PState {psStakePoolParams, psFutureStakePoolParams, psRetiring, psDeposits} - -instance (Era era, DecShareCBOR (PState era)) => DecCBOR (PState era) where - decCBOR = decNoShareCBOR - -instance Era era => ToJSON (PState era) where - toJSON = object . toPStatePair - toEncoding = pairs . mconcat . toPStatePair - -toPStatePair :: (KeyValue e a, Era era) => PState era -> [a] -toPStatePair PState {..} = - [ "stakePoolParams" .= psStakePoolParams - , "futureStakePoolParams" .= psFutureStakePoolParams - , "retiring" .= psRetiring - , "deposits" .= psDeposits - ] - -data CommitteeAuthorization c - = -- | Member authorized with a Hot credential acting on behalf of their Cold credential - CommitteeHotCredential !(Credential 'HotCommitteeRole c) - | -- | Member resigned with a potential explanation in Anchor - CommitteeMemberResigned !(StrictMaybe (Anchor c)) - deriving (Eq, Ord, Show, Generic, ToJSON) - -instance NoThunks (CommitteeAuthorization c) -instance Crypto c => NFData (CommitteeAuthorization c) - -instance Crypto c => EncCBOR (CommitteeAuthorization c) where - encCBOR = - encode . \case - CommitteeHotCredential cred -> Sum CommitteeHotCredential 0 !> To cred - CommitteeMemberResigned anchor -> Sum CommitteeMemberResigned 1 !> To anchor - -instance Crypto c => DecCBOR (CommitteeAuthorization c) where - decCBOR = - decode $ Summands "CommitteeAuthorization" $ \case - 0 -> SumD CommitteeHotCredential SumD CommitteeMemberResigned Invalid k - -newtype CommitteeState era = CommitteeState - { csCommitteeCreds :: - Map - (Credential 'ColdCommitteeRole (EraCrypto era)) - (CommitteeAuthorization (EraCrypto era)) - } - deriving (Eq, Ord, Show, Generic) - -instance NoThunks (CommitteeState era) -instance Default (CommitteeState era) - -instance Era era => NFData (CommitteeState era) - -deriving newtype instance Era era => EncCBOR (CommitteeState era) - --- TODO: Implement sharing: https://github.com/intersectmbo/cardano-ledger/issues/3486 -instance Era era => DecShareCBOR (CommitteeState era) where - decShareCBOR _ = CommitteeState <$> decCBOR - -instance Era era => DecCBOR (CommitteeState era) where - decCBOR = decNoShareCBOR - -deriving newtype instance Era era => ToJSON (CommitteeState era) - -instance Era era => ToCBOR (CommitteeState era) where - toCBOR = toEraCBOR @era - --- | The state that tracks the voting entities (DReps and Constitutional Committee members) -data VState era = VState - { vsDReps :: - !( Map - (Credential 'DRepRole (EraCrypto era)) - (DRepState (EraCrypto era)) - ) - , vsCommitteeState :: !(CommitteeState era) - , vsNumDormantEpochs :: EpochNo - -- ^ Number of contiguous epochs in which there are exactly zero - -- active governance proposals to vote on. It is incremented in every - -- EPOCH rule if the number of active governance proposals to vote on - -- continues to be zero. It is reset to zero when a new governance - -- action is successfully proposed. We need this counter in order to - -- bump DRep expiries through dormant periods when DReps do not have - -- an opportunity to vote on anything. - } - deriving (Show, Eq, Generic) - --- | Function that looks up the deposit for currently registered DRep -lookupDepositVState :: VState era -> Credential 'DRepRole (EraCrypto era) -> Maybe Coin -lookupDepositVState vstate = fmap drepDeposit . flip Map.lookup (vstate ^. vsDRepsL) - -instance Default (VState era) where - def = VState def def (EpochNo 0) - -instance Typeable (EraCrypto era) => NoThunks (VState era) - -instance Era era => NFData (VState era) - --- TODO: Implement sharing: https://github.com/intersectmbo/cardano-ledger/issues/3486 -instance Era era => DecShareCBOR (VState era) where - decShareCBOR _ = - decode $ - RecD VState - DecCBOR (VState era) where - decCBOR = decNoShareCBOR - -instance Era era => EncCBOR (VState era) where - encCBOR VState {..} = - encode $ - Rec (VState @era) - !> To vsDReps - !> To vsCommitteeState - !> To vsNumDormantEpochs - --- | The state associated with the DELPL rule, which combines the DELEG rule --- and the POOL rule. -data CertState era = CertState - { certVState :: !(VState era) - , certPState :: !(PState era) - , certDState :: !(DState era) - } - deriving (Show, Eq, Generic) - -instance Typeable (EraCrypto era) => NoThunks (CertState era) - -instance Era era => NFData (CertState era) - -instance Crypto c => EncCBOR (InstantaneousRewards c) where - encCBOR (InstantaneousRewards irR irT dR dT) = - encodeListLen 4 <> encCBOR irR <> encCBOR irT <> encCBOR dR <> encCBOR dT - -instance Crypto c => DecShareCBOR (InstantaneousRewards c) where - type Share (InstantaneousRewards c) = Interns (Credential 'Staking c) - decSharePlusCBOR = - decodeRecordNamedT "InstantaneousRewards" (const 4) $ do - irR <- decSharePlusLensCBOR (toMemptyLens _1 id) - irT <- decSharePlusLensCBOR (toMemptyLens _1 id) - dR <- lift decCBOR - dT <- lift decCBOR - pure $ InstantaneousRewards irR irT dR dT - -instance Era era => EncCBOR (CertState era) where - encCBOR CertState {certPState, certDState, certVState} = - encodeListLen 3 - <> encCBOR certVState - <> encCBOR certPState - <> encCBOR certDState - -instance Era era => DecShareCBOR (CertState era) where - type - Share (CertState era) = - (Interns (Credential 'Staking (EraCrypto era)), Interns (KeyHash 'StakePool (EraCrypto era))) - decSharePlusCBOR = decodeRecordNamedT "CertState" (const 3) $ do - certVState <- lift decNoShareCBOR -- TODO: add sharing of DRep credentials - certPState <- decSharePlusLensCBOR _2 - certDState <- decSharePlusCBOR - pure CertState {certPState, certDState, certVState} - -instance Default (CertState era) where - def = CertState def def def - -instance Era era => ToJSON (CertState era) where - toJSON = object . toCertStatePairs - toEncoding = pairs . mconcat . toCertStatePairs - -toCertStatePairs :: (KeyValue e a, Era era) => CertState era -> [a] -toCertStatePairs CertState {..} = - [ "dstate" .= certDState - , "pstate" .= certPState - ] - -instance Default (InstantaneousRewards c) where - def = InstantaneousRewards Map.empty Map.empty mempty mempty - -instance Default (DState era) where - def = - DState - UM.empty - Map.empty - (GenDelegs Map.empty) - def - -instance Default (PState c) where - def = - PState Map.empty Map.empty Map.empty Map.empty - -rewards :: DState era -> UView (EraCrypto era) (Credential 'Staking (EraCrypto era)) RDPair -rewards = RewDepUView . dsUnified - -delegations :: - DState era -> - UView (EraCrypto era) (Credential 'Staking (EraCrypto era)) (KeyHash 'StakePool (EraCrypto era)) -delegations = SPoolUView . dsUnified - --- | get the actual ptrs map, we don't need a view -ptrsMap :: DState era -> Map Ptr (Credential 'Staking (EraCrypto era)) -ptrsMap (DState {dsUnified = UMap _ ptrmap}) = ptrmap - --- ========================================================== --- Functions that handle Deposits - --- | One only pays a deposit on the initial pool registration. So return the --- the Deposits unchanged if the keyhash already exists. There are legal --- situations where a pool may be registered multiple times. -payPoolDeposit :: - EraPParams era => - KeyHash 'StakePool (EraCrypto era) -> - PParams era -> - PState era -> - PState era -payPoolDeposit keyhash pp pstate = pstate {psDeposits = newpool} - where - pool = psDeposits pstate - !deposit = pp ^. ppPoolDepositL - newpool - | Map.notMember keyhash pool = Map.insert keyhash deposit pool - | otherwise = pool - -refundPoolDeposit :: KeyHash 'StakePool (EraCrypto era) -> PState era -> (Coin, PState era) -refundPoolDeposit keyhash pstate = (coin, pstate {psDeposits = newpool}) - where - pool = psDeposits pstate - (coin, newpool) = case Map.lookup keyhash pool of - Just c -> (c, Map.delete keyhash pool) - Nothing -> (mempty, pool) - --- | A composite of all the Deposits the system is obligated to eventually pay back. -data Obligations = Obligations - { oblStake :: !Coin - , oblPool :: !Coin - , oblDRep :: !Coin - , oblProposal :: !Coin - } - deriving (Eq, Ord, Generic) - -instance NFData Obligations - --- | Calculate total possible refunds in the system that are related to certificates --- --- There is an invariant that the sum of all the fields should be the same as the --- utxosDeposited field of the UTxOState. Note that this does not depend upon the current --- values of the Key and Pool deposits of the PParams. -obligationCertState :: CertState era -> Obligations -obligationCertState (CertState VState {vsDReps} PState {psDeposits} DState {dsUnified}) = - let accum ans drepState = ans <> drepDeposit drepState - in Obligations - { oblStake = UM.fromCompact (UM.sumDepositUView (RewDepUView dsUnified)) - , oblPool = foldl' (<>) (Coin 0) psDeposits - , oblDRep = foldl' accum (Coin 0) vsDReps - , oblProposal = Coin 0 - } - -sumObligation :: Obligations -> Coin -sumObligation x = oblStake x <> oblPool x <> oblDRep x <> oblProposal x - -instance Semigroup Obligations where - x <> y = - Obligations - { oblStake = oblStake x <> oblStake y - , oblPool = oblPool x <> oblPool y - , oblDRep = oblDRep x <> oblDRep y - , oblProposal = oblProposal x <> oblProposal y - } - -instance Monoid Obligations where - mempty = Obligations {oblStake = Coin 0, oblPool = Coin 0, oblDRep = Coin 0, oblProposal = Coin 0} - -instance Show Obligations where - show x = - unlines - [ "Total Obligations = " ++ show (sumObligation x) - , " Stake deposits = " ++ show (oblStake x) - , " Pool deposits = " ++ show (oblPool x) - , " DRep deposits = " ++ show (oblDRep x) - , " Proposal deposits = " ++ show (oblProposal x) - ] - --- | Compute the total deposits from the Certs of a TxBody. --- --- This is the contribution of a TxBody towards the deposit pot (utxosDeposit field of --- the UTxOState) of the system -certsTotalDepositsTxBody :: EraTxBody era => PParams era -> CertState era -> TxBody era -> Coin -certsTotalDepositsTxBody pp CertState {certPState} = - getTotalDepositsTxBody pp (`Map.member` psStakePoolParams certPState) - --- | Compute the total refunds from the Certs of a TxBody. --- --- This is the contribution of a TxBody towards the total 'Obligations' of the system --- See `Obligations` and `obligationCertState` for more information. -certsTotalRefundsTxBody :: EraTxBody era => PParams era -> CertState era -> TxBody era -> Coin -certsTotalRefundsTxBody pp CertState {certDState, certVState} = - getTotalRefundsTxBody pp (lookupDepositDState certDState) (lookupDepositVState certVState) - --- ======================================================= --- Lenses for CertState and its subsidiary types - --- ======================================== --- CertState - -certDStateL :: Lens' (CertState era) (DState era) -certDStateL = lens certDState (\ds u -> ds {certDState = u}) - -certPStateL :: Lens' (CertState era) (PState era) -certPStateL = lens certPState (\ds u -> ds {certPState = u}) - -certVStateL :: Lens' (CertState era) (VState era) -certVStateL = lens certVState (\ds u -> ds {certVState = u}) - --- =================================== --- DState - -dsUnifiedL :: Lens' (DState era) (UMap (EraCrypto era)) -dsUnifiedL = lens dsUnified (\ds u -> ds {dsUnified = u}) - -dsGenDelegsL :: Lens' (DState era) (GenDelegs (EraCrypto era)) -dsGenDelegsL = lens dsGenDelegs (\ds u -> ds {dsGenDelegs = u}) - -dsIRewardsL :: Lens' (DState era) (InstantaneousRewards (EraCrypto era)) -dsIRewardsL = lens dsIRewards (\ds u -> ds {dsIRewards = u}) - -dsFutureGenDelegsL :: - Lens' (DState era) (Map (FutureGenDeleg (EraCrypto era)) (GenDelegPair (EraCrypto era))) -dsFutureGenDelegsL = lens dsFutureGenDelegs (\ds u -> ds {dsFutureGenDelegs = u}) - --- =================================== --- PState - -psStakePoolParamsL :: - Lens' (PState era) (Map (KeyHash 'StakePool (EraCrypto era)) (PoolParams (EraCrypto era))) -psStakePoolParamsL = lens psStakePoolParams (\ds u -> ds {psStakePoolParams = u}) - -psFutureStakePoolParamsL :: - Lens' (PState era) (Map (KeyHash 'StakePool (EraCrypto era)) (PoolParams (EraCrypto era))) -psFutureStakePoolParamsL = lens psFutureStakePoolParams (\ds u -> ds {psFutureStakePoolParams = u}) - -psRetiringL :: Lens' (PState era) (Map (KeyHash 'StakePool (EraCrypto era)) EpochNo) -psRetiringL = lens psRetiring (\ds u -> ds {psRetiring = u}) - -psDepositsL :: Lens' (PState era) (Map (KeyHash 'StakePool (EraCrypto era)) Coin) -psDepositsL = lens psDeposits (\ds u -> ds {psDeposits = u}) - --- =================================== --- VState - -vsDRepsL :: - Lens' (VState era) (Map (Credential 'DRepRole (EraCrypto era)) (DRepState (EraCrypto era))) -vsDRepsL = lens vsDReps (\vs u -> vs {vsDReps = u}) - -vsCommitteeStateL :: Lens' (VState era) (CommitteeState era) -vsCommitteeStateL = lens vsCommitteeState (\vs u -> vs {vsCommitteeState = u}) - -vsNumDormantEpochsL :: Lens' (VState era) EpochNo -vsNumDormantEpochsL = lens vsNumDormantEpochs (\vs u -> vs {vsNumDormantEpochs = u}) - -csCommitteeCredsL :: - Lens' - (CommitteeState era) - ( Map - (Credential 'ColdCommitteeRole (EraCrypto era)) - (CommitteeAuthorization (EraCrypto era)) - ) -csCommitteeCredsL = lens csCommitteeCreds (\cs u -> cs {csCommitteeCreds = u}) diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/Coin.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/Coin.hs deleted file mode 100644 index 2b5a63150c2..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/Coin.hs +++ /dev/null @@ -1,166 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UnboxedTuples #-} - -module Cardano.Ledger.Coin ( - Coin (..), - CompactForm (..), - DeltaCoin (..), - word64ToCoin, - coinToRational, - rationalToCoinViaFloor, - rationalToCoinViaCeiling, - addDeltaCoin, - toDeltaCoin, - fromDeltaCoin, - integerToWord64, - decodePositiveCoin, - compactCoinOrError, -) -where - -import Cardano.HeapWords (HeapWords) -import Cardano.Ledger.BaseTypes (Inject (..)) -import Cardano.Ledger.Binary ( - DecCBOR (..), - Decoder, - EncCBOR (..), - FromCBOR (..), - ToCBOR, - decodeInteger, - decodeWord64, - ifDecoderVersionAtLeast, - natVersion, - ) -import qualified Cardano.Ledger.Binary.Plain as Plain -import Cardano.Ledger.Compactible -import Control.DeepSeq (NFData) -import Data.Aeson (FromJSON, ToJSON) -import Data.Coerce (coerce) -import Data.Group (Abelian, Group (..)) -import Data.Monoid (Sum (..)) -import Data.PartialOrd (PartialOrd) -import Data.Primitive.Types -import Data.Typeable (Typeable) -import Data.Word (Word64) -import GHC.Generics (Generic) -import GHC.Stack -import NoThunks.Class (NoThunks (..)) -import Quiet - --- | The amount of value held by a transaction output. -newtype Coin = Coin {unCoin :: Integer} - deriving - ( Eq - , Ord - , Enum - , NoThunks - , Generic - , ToJSON - , FromJSON - , NFData - ) - deriving (Show) via Quiet Coin - deriving (Semigroup, Monoid, Group, Abelian) via Sum Integer - deriving newtype (PartialOrd, ToCBOR, EncCBOR, HeapWords) - -instance Inject Coin Coin - -instance FromCBOR Coin where - fromCBOR = Coin . toInteger <$> Plain.decodeWord64 - -instance DecCBOR Coin where - decCBOR = - ifDecoderVersionAtLeast - (natVersion @9) - (Coin . fromIntegral <$> decodeWord64) - (Coin <$> decodeInteger) - -newtype DeltaCoin = DeltaCoin Integer - deriving (Eq, Ord, Generic, Enum, NoThunks, HeapWords) - deriving (Show) via Quiet DeltaCoin - deriving (Semigroup, Monoid, Group, Abelian) via Sum Integer - deriving newtype (PartialOrd, NFData, ToCBOR, DecCBOR, EncCBOR, ToJSON, FromJSON) - -instance Inject Coin DeltaCoin where - inject = coerce - -addDeltaCoin :: Coin -> DeltaCoin -> Coin -addDeltaCoin (Coin x) (DeltaCoin y) = Coin (x + y) - -toDeltaCoin :: Coin -> DeltaCoin -toDeltaCoin (Coin x) = DeltaCoin x - -fromDeltaCoin :: DeltaCoin -> Maybe Coin -fromDeltaCoin (DeltaCoin x) - | x < 0 = Nothing - | otherwise = Just $ Coin x - -word64ToCoin :: Word64 -> Coin -word64ToCoin = Coin . fromIntegral - -coinToRational :: Coin -> Rational -coinToRational (Coin c) = fromIntegral c - -rationalToCoinViaFloor :: Rational -> Coin -rationalToCoinViaFloor = Coin . floor - -rationalToCoinViaCeiling :: Rational -> Coin -rationalToCoinViaCeiling = Coin . ceiling - -instance Compactible Coin where - newtype CompactForm Coin = CompactCoin Word64 - deriving (Eq, Show, NoThunks, NFData, Typeable, HeapWords, Prim, Ord, ToCBOR, ToJSON, FromJSON) - deriving (Semigroup, Monoid, Group, Abelian) via Sum Word64 - - toCompact (Coin c) = CompactCoin <$> integerToWord64 c - fromCompact (CompactCoin c) = word64ToCoin c - -instance Compactible DeltaCoin where - newtype CompactForm DeltaCoin = CompactDeltaCoin Word64 - deriving (Eq, Show, NoThunks, NFData, Typeable, HeapWords, ToJSON, Prim) - - toCompact (DeltaCoin dc) = CompactDeltaCoin <$> integerToWord64 dc - fromCompact (CompactDeltaCoin cdc) = DeltaCoin (unCoin (word64ToCoin cdc)) - --- It's odd for this to live here. Where should it go? -integerToWord64 :: Integer -> Maybe Word64 -integerToWord64 c - | c < 0 = Nothing - | c > fromIntegral (maxBound :: Word64) = Nothing - | otherwise = Just $ fromIntegral c -{-# INLINE integerToWord64 #-} - -compactCoinOrError :: HasCallStack => Coin -> CompactForm Coin -compactCoinOrError c = - case toCompact c of - Nothing -> error $ "Invalid ADA value: " <> show c - Just compactCoin -> compactCoin - -instance EncCBOR (CompactForm Coin) where - encCBOR (CompactCoin c) = encCBOR c - -instance DecCBOR (CompactForm Coin) where - decCBOR = CompactCoin <$> decCBOR - -instance EncCBOR (CompactForm DeltaCoin) where - encCBOR (CompactDeltaCoin c) = encCBOR c - -instance DecCBOR (CompactForm DeltaCoin) where - decCBOR = CompactDeltaCoin <$> decCBOR - --- ================================ - -decodePositiveCoin :: String -> Decoder s Coin -decodePositiveCoin errorMessage = do - n <- decodeWord64 - if n == 0 - then fail $ errorMessage ++ ": Expected a positive Coin. Got 0 (zero)." - else pure $ Coin (toInteger n) diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/Compactible.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/Compactible.hs deleted file mode 100644 index 0ca252e928c..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/Compactible.hs +++ /dev/null @@ -1,33 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE TypeFamilies #-} - -module Cardano.Ledger.Compactible ( - -- * Compactible - Compactible (..), -) -where - -import Cardano.Ledger.Binary.Encoding (EncCBOR) -import Data.Kind (Type) -import NoThunks.Class (NoThunks) - --------------------------------------------------------------------------------- - --- * Compactible - --- --- Certain types may have a "presentation" form and a more compact --- representation that allows for more efficient memory usage. In this case, --- one should make instances of the 'Compactible' class for them. --------------------------------------------------------------------------------- -class - ( Show (CompactForm a) - , Eq (CompactForm a) - , EncCBOR (CompactForm a) - , NoThunks (CompactForm a) - ) => - Compactible a - where - data CompactForm a :: Type - toCompact :: a -> Maybe (CompactForm a) - fromCompact :: CompactForm a -> a diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/Core.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/Core.hs deleted file mode 100644 index 08f773bebef..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/Core.hs +++ /dev/null @@ -1,623 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilyDependencies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} -{-# OPTIONS_GHC -Wno-orphans #-} - --- | This module defines core type families which we know to vary from era to --- era. --- --- Families in this module should be indexed on era. --- --- It is intended for qualified import: --- > import qualified Cardano.Ledger.Core as Core -module Cardano.Ledger.Core ( - -- * Era-changing types - EraTx (..), - txIdTx, - EraTxOut (..), - bootAddrTxOutF, - coinTxOutL, - compactCoinTxOutL, - isAdaOnlyTxOutF, - EraTxBody (..), - txIdTxBody, - EraTxAuxData (..), - EraTxWits (..), - EraScript (..), - hashScript, - isNativeScript, - hashScriptTxWitsL, - Value, - EraPParams (..), - mkCoinTxOut, - - -- * Era - module Cardano.Ledger.Core.Era, - -- $segWit - EraSegWits (..), - bBodySize, - - -- * Rewards - RewardType (..), - Reward (..), - - -- * Re-exports - module Cardano.Ledger.Hashes, - module Cardano.Ledger.Core.TxCert, - module Cardano.Ledger.Core.PParams, - module Cardano.Ledger.Core.Translation, - - -- * Deprecations - hashAuxiliaryData, - validateAuxiliaryData, -) -where - -import qualified Cardano.Crypto.Hash as Hash -import Cardano.Ledger.Address ( - Addr (..), - BootstrapAddress, - CompactAddr, - Withdrawals, - compactAddr, - decompactAddr, - isBootstrapCompactAddr, - ) -import Cardano.Ledger.AuxiliaryData (AuxiliaryDataHash) -import Cardano.Ledger.BaseTypes (ProtVer (..)) -import Cardano.Ledger.Binary ( - Annotator, - DecCBOR, - DecShareCBOR (Share), - EncCBOR, - EncCBORGroup, - FromCBOR, - Interns, - Sized (sizedValue), - ToCBOR, - encCBORGroup, - mkSized, - serialize', - ) -import Cardano.Ledger.Coin (Coin) -import Cardano.Ledger.Compactible (Compactible (..)) -import Cardano.Ledger.Core.Era -import Cardano.Ledger.Core.PParams -import Cardano.Ledger.Core.Translation -import Cardano.Ledger.Core.TxCert -import Cardano.Ledger.Credential (Credential) -import qualified Cardano.Ledger.Crypto as CC -import Cardano.Ledger.Hashes -import Cardano.Ledger.Keys (KeyHash, KeyRole (..)) -import Cardano.Ledger.Keys.Bootstrap (BootstrapWitness) -import Cardano.Ledger.Keys.WitVKey (WitVKey) -import Cardano.Ledger.MemoBytes -import Cardano.Ledger.Rewards (Reward (..), RewardType (..)) -import Cardano.Ledger.SafeHash (HashAnnotated (..), SafeToHash (..)) -import Cardano.Ledger.TxIn (TxId (..), TxIn (..)) -import Cardano.Ledger.Val (Val (..), inject) -import Control.DeepSeq (NFData) -import Data.Aeson (ToJSON) -import qualified Data.ByteString as BS -import Data.Kind (Type) -import Data.Map (Map) -import qualified Data.Map.Strict as Map -import Data.Maybe (fromMaybe, isJust) -import Data.Maybe.Strict (StrictMaybe) -import Data.Sequence.Strict (StrictSeq) -import Data.Set (Set) -import Data.Void (Void) -import Data.Word (Word64) -import GHC.Stack (HasCallStack) -import Lens.Micro -import NoThunks.Class (NoThunks) - --- | A transaction. -class - ( EraTxBody era - , EraTxWits era - , EraTxAuxData era - , EraPParams era - , -- NFData (Tx era), TODO: Add NFData constraints to Crypto class - NoThunks (Tx era) - , DecCBOR (Annotator (Tx era)) - , EncCBOR (Tx era) - , ToCBOR (Tx era) - , Show (Tx era) - , Eq (Tx era) - , EqRaw (Tx era) - ) => - EraTx era - where - type Tx era = (r :: Type) | r -> era - - type TxUpgradeError era :: Type - type TxUpgradeError era = Void - - mkBasicTx :: TxBody era -> Tx era - - bodyTxL :: Lens' (Tx era) (TxBody era) - - witsTxL :: Lens' (Tx era) (TxWits era) - - auxDataTxL :: Lens' (Tx era) (StrictMaybe (AuxiliaryData era)) - - sizeTxF :: SimpleGetter (Tx era) Integer - - -- | Using information from the transaction validate the supplied native script. - validateNativeScript :: Tx era -> NativeScript era -> Bool - - -- | Minimum fee calculation excluding witnesses - getMinFeeTx :: - PParams era -> - Tx era -> - -- | Size in bytes of reference scripts present in this transaction - Int -> - Coin - - upgradeTx :: - EraTx (PreviousEra era) => - Tx (PreviousEra era) -> - Either (TxUpgradeError era) (Tx era) - -class - ( EraTxOut era - , EraTxCert era - , EraPParams era - , HashAnnotated (TxBody era) EraIndependentTxBody (EraCrypto era) - , DecCBOR (Annotator (TxBody era)) - , EncCBOR (TxBody era) - , ToCBOR (TxBody era) - , NoThunks (TxBody era) - , NFData (TxBody era) - , Show (TxBody era) - , Eq (TxBody era) - , EqRaw (TxBody era) - ) => - EraTxBody era - where - -- | The body of a transaction. - type TxBody era = (r :: Type) | r -> era - - type TxBodyUpgradeError era :: Type - type TxBodyUpgradeError era = Void - - mkBasicTxBody :: TxBody era - - inputsTxBodyL :: Lens' (TxBody era) (Set (TxIn (EraCrypto era))) - - outputsTxBodyL :: Lens' (TxBody era) (StrictSeq (TxOut era)) - - feeTxBodyL :: Lens' (TxBody era) Coin - - withdrawalsTxBodyL :: Lens' (TxBody era) (Withdrawals (EraCrypto era)) - - auxDataHashTxBodyL :: Lens' (TxBody era) (StrictMaybe (AuxiliaryDataHash (EraCrypto era))) - - -- | This getter will produce all inputs from the UTxO map that this transaction might - -- spend, which ones will depend on the validity of the transaction itself. Starting in - -- Alonzo this will include collateral inputs. - spendableInputsTxBodyF :: SimpleGetter (TxBody era) (Set (TxIn (EraCrypto era))) - - -- | This getter will produce all inputs from the UTxO map that this transaction is - -- referencing, even if some of them cannot be spent by the transaction. For example - -- starting with Babbage era it will also include reference inputs. - allInputsTxBodyF :: SimpleGetter (TxBody era) (Set (TxIn (EraCrypto era))) - - certsTxBodyL :: Lens' (TxBody era) (StrictSeq (TxCert era)) - - -- | Compute the total deposits from the certificates in a TxBody. - -- - -- This is the contribution of a TxBody towards the consumed amount by the transaction - getTotalDepositsTxBody :: - PParams era -> - -- | Check whether stake pool is registered or not - (KeyHash 'StakePool (EraCrypto era) -> Bool) -> - TxBody era -> - Coin - getTotalDepositsTxBody pp isPoolRegisted txBody = - getTotalDepositsTxCerts pp isPoolRegisted (txBody ^. certsTxBodyL) - - -- | Compute the total refunds from the Certs of a TxBody. - -- - -- This is the contribution of a TxBody towards produced amount by the transaction - getTotalRefundsTxBody :: - PParams era -> - -- | Lookup current deposit for Staking credential if one is registered - (Credential 'Staking (EraCrypto era) -> Maybe Coin) -> - -- | Lookup current deposit for DRep credential if one is registered - (Credential 'DRepRole (EraCrypto era) -> Maybe Coin) -> - TxBody era -> - Coin - getTotalRefundsTxBody pp lookupStakingDeposit lookupDRepDeposit txBody = - getTotalRefundsTxCerts pp lookupStakingDeposit lookupDRepDeposit (txBody ^. certsTxBodyL) - - -- | This function is not used in the ledger rules. It is only used by the downstream - -- tooling to figure out how many witnesses should be supplied for Genesis keys. - getGenesisKeyHashCountTxBody :: TxBody era -> Int - getGenesisKeyHashCountTxBody _ = 0 - - -- | Upgrade the transaction body from the previous era. - -- - -- This can fail where elements of the transaction body are deprecated. - -- Compare this to `translateEraThroughCBOR`: - -- - `upgradeTxBody` will use the Haskell representation, but will not - -- preserve the serialised form. However, it will be suitable for iterated - -- translation through eras. - -- - `translateEraThroughCBOR` will preserve the binary representation, but is - -- not guaranteed to work through multiple eras - that is, the serialised - -- representation from era n is guaranteed valid in era n + 1, but not - -- necessarily in era n + 2. - upgradeTxBody :: - EraTxBody (PreviousEra era) => - TxBody (PreviousEra era) -> - Either (TxBodyUpgradeError era) (TxBody era) - --- | Abstract interface into specific fields of a `TxOut` -class - ( Val (Value era) - , ToJSON (TxOut era) - , DecCBOR (Value era) - , DecCBOR (CompactForm (Value era)) - , EncCBOR (Value era) - , ToCBOR (TxOut era) - , FromCBOR (TxOut era) - , EncCBOR (TxOut era) - , DecCBOR (TxOut era) - , DecShareCBOR (TxOut era) - , Share (TxOut era) ~ Interns (Credential 'Staking (EraCrypto era)) - , NoThunks (TxOut era) - , NFData (TxOut era) - , Show (TxOut era) - , Eq (TxOut era) - , EraPParams era - ) => - EraTxOut era - where - -- | The output of a UTxO for a particular era - type TxOut era = (r :: Type) | r -> era - - {-# MINIMAL - mkBasicTxOut - , upgradeTxOut - , valueEitherTxOutL - , addrEitherTxOutL - , (getMinCoinSizedTxOut | getMinCoinTxOut) - #-} - - mkBasicTxOut :: HasCallStack => Addr (EraCrypto era) -> Value era -> TxOut era - - -- | Every era, except Shelley, must be able to upgrade a `TxOut` from a previous era. - upgradeTxOut :: EraTxOut (PreviousEra era) => TxOut (PreviousEra era) -> TxOut era - - valueTxOutL :: Lens' (TxOut era) (Value era) - valueTxOutL = - lens - ( \txOut -> case txOut ^. valueEitherTxOutL of - Left value -> value - Right cValue -> fromCompact cValue - ) - (\txOut value -> txOut & valueEitherTxOutL .~ Left value) - {-# INLINE valueTxOutL #-} - - compactValueTxOutL :: HasCallStack => Lens' (TxOut era) (CompactForm (Value era)) - compactValueTxOutL = - lens - ( \txOut -> case txOut ^. valueEitherTxOutL of - Left value -> toCompactPartial value - Right cValue -> cValue - ) - (\txOut cValue -> txOut & valueEitherTxOutL .~ Right cValue) - {-# INLINE compactValueTxOutL #-} - - -- | Lens for getting and setting in TxOut either an address or its compact - -- version by doing the least amount of work. - valueEitherTxOutL :: Lens' (TxOut era) (Either (Value era) (CompactForm (Value era))) - - addrTxOutL :: Lens' (TxOut era) (Addr (EraCrypto era)) - addrTxOutL = - lens - ( \txOut -> case txOut ^. addrEitherTxOutL of - Left addr -> addr - Right cAddr -> decompactAddr cAddr - ) - (\txOut addr -> txOut & addrEitherTxOutL .~ Left addr) - {-# INLINE addrTxOutL #-} - - compactAddrTxOutL :: Lens' (TxOut era) (CompactAddr (EraCrypto era)) - compactAddrTxOutL = - lens - ( \txOut -> case txOut ^. addrEitherTxOutL of - Left addr -> compactAddr addr - Right cAddr -> cAddr - ) - (\txOut cAddr -> txOut & addrEitherTxOutL .~ Right cAddr) - {-# INLINE compactAddrTxOutL #-} - - -- | Lens for getting and setting in TxOut either an address or its compact - -- version by doing the least amount of work. - -- - -- The utility of this function comes from the fact that TxOut usually stores - -- the address in either one of two forms: compacted or unpacked. In order to - -- avoid extroneous conversions in `getTxOutAddr` and `getTxOutCompactAddr` we - -- can define just this functionality. Also sometimes it is crucial to know at - -- the callsite which form of address we have readily available without any - -- conversions (eg. searching millions of TxOuts for a particular address) - addrEitherTxOutL :: Lens' (TxOut era) (Either (Addr (EraCrypto era)) (CompactAddr (EraCrypto era))) - - -- | Produce the minimum lovelace that a given transaction output must - -- contain. Information about the size of the TxOut is required in some eras. - -- Use `getMinCoinTxOut` if you don't have the size readily available to you. - getMinCoinSizedTxOut :: PParams era -> Sized (TxOut era) -> Coin - getMinCoinSizedTxOut pp = getMinCoinTxOut pp . sizedValue - - -- | Same as `getMinCoinSizedTxOut`, except information about the size of - -- TxOut will be computed by serializing the TxOut. If the size turns out to - -- be not needed, then serialization will have no overhead, since it is - -- computed lazily. - getMinCoinTxOut :: PParams era -> TxOut era -> Coin - getMinCoinTxOut pp txOut = - let ProtVer version _ = pp ^. ppProtocolVersionL - in getMinCoinSizedTxOut pp (mkSized version txOut) - -bootAddrTxOutF :: - EraTxOut era => SimpleGetter (TxOut era) (Maybe (BootstrapAddress (EraCrypto era))) -bootAddrTxOutF = to $ \txOut -> - case txOut ^. addrEitherTxOutL of - Left (AddrBootstrap bootstrapAddr) -> Just bootstrapAddr - Right cAddr - | isBootstrapCompactAddr cAddr -> do - AddrBootstrap bootstrapAddr <- Just (decompactAddr cAddr) - Just bootstrapAddr - _ -> Nothing -{-# INLINE bootAddrTxOutF #-} - -coinTxOutL :: (HasCallStack, EraTxOut era) => Lens' (TxOut era) Coin -coinTxOutL = - lens - ( \txOut -> - case txOut ^. valueEitherTxOutL of - Left val -> coin val - Right cVal -> fromCompact (coinCompact cVal) - ) - ( \txOut c -> - case txOut ^. valueEitherTxOutL of - Left val -> txOut & valueTxOutL .~ modifyCoin (const c) val - Right cVal -> - txOut & compactValueTxOutL .~ modifyCompactCoin (const (toCompactPartial c)) cVal - ) -{-# INLINE coinTxOutL #-} - -compactCoinTxOutL :: (HasCallStack, EraTxOut era) => Lens' (TxOut era) (CompactForm Coin) -compactCoinTxOutL = - lens - ( \txOut -> - case txOut ^. valueEitherTxOutL of - Left val -> toCompactPartial (coin val) - Right cVal -> coinCompact cVal - ) - ( \txOut cCoin -> - case txOut ^. valueEitherTxOutL of - Left val -> txOut & valueTxOutL .~ modifyCoin (const (fromCompact cCoin)) val - Right cVal -> - txOut & compactValueTxOutL .~ modifyCompactCoin (const cCoin) cVal - ) -{-# INLINE compactCoinTxOutL #-} - --- | This is a getter that implements an efficient way to check whether 'TxOut' --- contains ADA only. -isAdaOnlyTxOutF :: EraTxOut era => SimpleGetter (TxOut era) Bool -isAdaOnlyTxOutF = to $ \txOut -> - case txOut ^. valueEitherTxOutL of - Left val -> isAdaOnly val - Right cVal -> isAdaOnlyCompact cVal - -toCompactPartial :: (HasCallStack, Val a) => a -> CompactForm a -toCompactPartial v = - fromMaybe (error $ "Illegal value in TxOut: " <> show v) $ toCompact v - --- A version of mkBasicTxOut, which has only a Coin (no multiAssets) for every EraTxOut era. -mkCoinTxOut :: EraTxOut era => Addr (EraCrypto era) -> Coin -> TxOut era -mkCoinTxOut addr = mkBasicTxOut addr . inject - --- | A value is something which quantifies a transaction output. -type family Value era :: Type - --- | TxAuxData which may be attached to a transaction -class - ( Era era - , Eq (TxAuxData era) - , EqRaw (TxAuxData era) - , Show (TxAuxData era) - , NoThunks (TxAuxData era) - , ToCBOR (TxAuxData era) - , EncCBOR (TxAuxData era) - , DecCBOR (Annotator (TxAuxData era)) - , HashAnnotated (TxAuxData era) EraIndependentTxAuxData (EraCrypto era) - ) => - EraTxAuxData era - where - type TxAuxData era = (r :: Type) | r -> era - - -- | Every era, except Shelley, must be able to upgrade a `TxAuxData` from a previous - -- era. - -- - -- /Warning/ - Important to note that any memoized binary representation will not be - -- preserved. If you need to retain underlying bytes you can use `translateEraThroughCBOR` - upgradeTxAuxData :: EraTxAuxData (PreviousEra era) => TxAuxData (PreviousEra era) -> TxAuxData era - - hashTxAuxData :: TxAuxData era -> AuxiliaryDataHash (EraCrypto era) - - validateTxAuxData :: ProtVer -> TxAuxData era -> Bool - -type AuxiliaryData era = TxAuxData era - -{-# DEPRECATED AuxiliaryData "Use `TxAuxData` instead" #-} - -hashAuxiliaryData :: EraTxAuxData era => TxAuxData era -> AuxiliaryDataHash (EraCrypto era) -hashAuxiliaryData = hashTxAuxData -{-# DEPRECATED hashAuxiliaryData "Use `hashTxAuxData` instead" #-} - -validateAuxiliaryData :: EraTxAuxData era => ProtVer -> TxAuxData era -> Bool -validateAuxiliaryData = validateTxAuxData -{-# DEPRECATED validateAuxiliaryData "Use `validateTxAuxData` instead" #-} - --- | A collection of witnesses in a Tx -class - ( EraScript era - , Eq (TxWits era) - , EqRaw (TxWits era) - , Show (TxWits era) - , Monoid (TxWits era) - , NoThunks (TxWits era) - , ToCBOR (TxWits era) - , EncCBOR (TxWits era) - , DecCBOR (Annotator (TxWits era)) - ) => - EraTxWits era - where - type TxWits era = (r :: Type) | r -> era - - mkBasicTxWits :: TxWits era - mkBasicTxWits = mempty - - addrTxWitsL :: Lens' (TxWits era) (Set (WitVKey 'Witness (EraCrypto era))) - - bootAddrTxWitsL :: Lens' (TxWits era) (Set (BootstrapWitness (EraCrypto era))) - - scriptTxWitsL :: Lens' (TxWits era) (Map (ScriptHash (EraCrypto era)) (Script era)) - - upgradeTxWits :: EraTxWits (PreviousEra era) => TxWits (PreviousEra era) -> TxWits era - --- | This is a helper lens that will hash the scripts when adding as witnesses. -hashScriptTxWitsL :: - EraTxWits era => - Lens (TxWits era) (TxWits era) (Map (ScriptHash (EraCrypto era)) (Script era)) [Script era] -hashScriptTxWitsL = - lens - (\wits -> wits ^. scriptTxWitsL) - (\wits ss -> wits & scriptTxWitsL .~ Map.fromList [(hashScript s, s) | s <- ss]) -{-# INLINEABLE hashScriptTxWitsL #-} - ------------------------------------------------------------------------------ --- Script Validation ------------------------------------------------------------------------------ - --- | Typeclass for script data types. Allows for script validation and hashing. --- You must understand the role of SafeToHash and scriptPrefixTag to make new --- instances. 'scriptPrefixTag' is a magic number representing the tag of the --- script language. For each new script language defined, a new tag is chosen --- and the tag is included in the script hash for a script. The safeToHash --- constraint ensures that Scripts are never reserialised. -class - ( Era era - , Show (Script era) - , Eq (Script era) - , EqRaw (Script era) - , ToCBOR (Script era) - , EncCBOR (Script era) - , DecCBOR (Annotator (Script era)) - , NoThunks (Script era) - , SafeToHash (Script era) - , Eq (NativeScript era) - , Show (NativeScript era) - , NFData (NativeScript era) - , NoThunks (NativeScript era) - , EncCBOR (NativeScript era) - , DecCBOR (Annotator (NativeScript era)) - ) => - EraScript era - where - -- | Scripts which may lock transaction outputs in this era - type Script era = (r :: Type) | r -> era - - type NativeScript era = (r :: Type) | r -> era - - -- | Every era, except Shelley, must be able to upgrade a `Script` from a previous era. - -- - -- /Warning/ - Important to note that any memoized binary representation will not be - -- preserved, you need to retain underlying bytes you can use `translateEraThroughCBOR` - upgradeScript :: EraScript (PreviousEra era) => Script (PreviousEra era) -> Script era - - scriptPrefixTag :: Script era -> BS.ByteString - - getNativeScript :: Script era -> Maybe (NativeScript era) - - fromNativeScript :: NativeScript era -> Script era - -isNativeScript :: EraScript era => Script era -> Bool -isNativeScript = isJust . getNativeScript - --- | Compute `ScriptHash` of a `Script` for a particular era. -hashScript :: forall era. EraScript era => Script era -> ScriptHash (EraCrypto era) -hashScript = - ScriptHash - . Hash.castHash - . Hash.hashWith - (\x -> scriptPrefixTag @era x <> originalBytes x) - --------------------------------------------------------------------------------- --- Segregated Witness --------------------------------------------------------------------------------- - --- $segWit --- * Segregated Witness --- --- The idea of segregated witnessing is to alter the encoding of transactions in --- a block such that the witnesses (the information needed to verify the --- validity of the transactions) can be stored separately from the body (the --- information needed to update the ledger state). In this way, a node which --- only cares about replaying transactions need not even decode the witness --- information. --- --- In order to do this, we introduce two concepts: --- - A 'TxSeq`, which represents the decoded structure of a sequence of --- transactions as represented in the encoded block; that is, with witnessing, --- metadata and other non-body parts split separately. - --- | Indicates that an era supports segregated witnessing. --- --- This class embodies an isomorphism between 'TxSeq era' and 'StrictSeq --- (Tx era)', witnessed by 'fromTxSeq' and 'toTxSeq'. -class - ( EraTx era - , Eq (TxSeq era) - , Show (TxSeq era) - , EncCBORGroup (TxSeq era) - , DecCBOR (Annotator (TxSeq era)) - ) => - EraSegWits era - where - type TxSeq era = (r :: Type) | r -> era - - fromTxSeq :: TxSeq era -> StrictSeq (Tx era) - toTxSeq :: StrictSeq (Tx era) -> TxSeq era - - -- | Get the block body hash from the TxSeq. Note that this is not a regular - -- "hash the stored bytes" function since the block body hash forms a small - -- Merkle tree. - hashTxSeq :: - TxSeq era -> - Hash.Hash (CC.HASH (EraCrypto era)) EraIndependentBlockBody - - -- | The number of segregated components - numSegComponents :: Word64 - -bBodySize :: forall era. EraSegWits era => ProtVer -> TxSeq era -> Int -bBodySize (ProtVer v _) = BS.length . serialize' v . encCBORGroup - -txIdTx :: EraTx era => Tx era -> TxId (EraCrypto era) -txIdTx tx = txIdTxBody (tx ^. bodyTxL) - -txIdTxBody :: EraTxBody era => TxBody era -> TxId (EraCrypto era) -txIdTxBody = TxId . hashAnnotated diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/Core/Era.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/Core/Era.hs deleted file mode 100644 index 18ccd7c5889..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/Core/Era.hs +++ /dev/null @@ -1,299 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DefaultSignatures #-} -{-# LANGUAGE EmptyCase #-} -{-# LANGUAGE EmptyDataDeriving #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilyDependencies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} -{-# OPTIONS_GHC -Wno-redundant-constraints #-} - -module Cardano.Ledger.Core.Era ( - -- * Era - Era (..), - ByronEra, - - -- ** Rules - EraRule, - EraRuleFailure, - EraRuleEvent, - VoidEraRule, - absurdEraRule, - InjectRuleFailure (..), - InjectRuleEvent (..), - - -- ** Protocol Version - AtMostEra, - AtLeastEra, - ExactEra, - ProtVerAtMost, - ProtVerAtLeast, - ProtVerInBounds, - atLeastEra, - atMostEra, - notSupportedInThisEra, - notSupportedInThisEraL, - eraProtVerLow, - eraProtVerHigh, - toEraCBOR, - fromEraCBOR, - fromEraShareCBOR, - eraDecoder, -) -where - -import Cardano.Ledger.Binary -import qualified Cardano.Ledger.Binary.Plain as Plain -import Cardano.Ledger.Crypto -import Control.DeepSeq (NFData (..)) -import Control.State.Transition.Extended (PredicateFailure, STS (..)) -import Data.Kind (Constraint, Type) -import Data.Typeable (Typeable) -import GHC.Stack (HasCallStack) -import GHC.TypeLits -import Lens.Micro - --------------------------------------------------------------------------------- --- Era --------------------------------------------------------------------------------- - -class - ( Crypto (EraCrypto era) - , Typeable era - , KnownNat (ProtVerLow era) - , KnownNat (ProtVerHigh era) - , ProtVerLow era <= ProtVerHigh era - , MinVersion <= ProtVerLow era - , MinVersion <= ProtVerHigh era - , -- We need to make sure that there is never a case that MaxVersion equals to the highest - -- protocol version for the era, otherwise we can never upgrade to the next version: - CmpNat (ProtVerLow era) MaxVersion ~ 'LT - , CmpNat (ProtVerHigh era) MaxVersion ~ 'LT - , -- These two are redundant and can be removed once support for GHC-8.10 is dropped: - ProtVerLow era <= MaxVersion - , ProtVerHigh era <= MaxVersion - ) => - Era era - where - type EraCrypto era :: Type - - -- | Map an era to its predecessor. - -- - -- For example: - -- - -- > type instance PreviousEra (AllegraEra c) = ShelleyEra c - type PreviousEra era = (r :: Type) | r -> era - - -- | Lowest major protocol version for this era - type ProtVerLow era :: Nat - - -- | Highest major protocol version for this era. By default se to `ProtVerLow` - type ProtVerHigh era :: Nat - - type ProtVerHigh era = ProtVerLow era - - -- | Textual name of the current era. - -- - -- Designed to be used with @TypeApplications@: - -- - -- >>> eraName @(ByronEra StandardCrypto) - -- Byron - eraName :: String - --- | This is the era that preceded Shelley era. It cannot have any other class instances, --- except for `Era` type class. -data ByronEra c - --- | This is a non-existent era and is defined for satisfying the `PreviousEra` type family injectivity -data VoidEra c - -instance Crypto c => Era (ByronEra c) where - type EraCrypto (ByronEra c) = c - type PreviousEra (ByronEra c) = VoidEra c - type ProtVerLow (ByronEra c) = 0 - type ProtVerHigh (ByronEra c) = 1 - - eraName = "Byron" - ------------------------------ --- Rules -------------------- ------------------------------ - --- | Era STS map -type family EraRule (rule :: Symbol) era = (r :: Type) | r -> rule - --- | `EraRuleFailure` type family is needed for injectivity, which STS' `PredicateFailure` --- does not provide for us unfortunately. -type family EraRuleFailure (rule :: Symbol) era = (r :: Type) | r -> rule era - -type family EraRuleEvent (rule :: Symbol) era = (r :: Type) | r -> rule era - --- | This is a type with no inhabitans for the rules. It is used to indicate that a rule --- does not have a predicate failure as well as marking rules that have been disabled when --- comparing to prior eras. -data VoidEraRule (rule :: Symbol) era - deriving (Show, Eq, Ord) - -instance NFData (VoidEraRule (rule :: Symbol) era) where - rnf = absurdEraRule - -instance (KnownSymbol rule, Era era) => ToCBOR (VoidEraRule (rule :: Symbol) era) where - toCBOR = absurdEraRule - -instance (KnownSymbol rule, Era era) => EncCBOR (VoidEraRule (rule :: Symbol) era) - -instance (KnownSymbol rule, Era era) => FromCBOR (VoidEraRule (rule :: Symbol) era) where - fromCBOR = cborError DecoderErrorVoid - -instance (KnownSymbol rule, Era era) => DecCBOR (VoidEraRule (rule :: Symbol) era) - -absurdEraRule :: VoidEraRule rule era -> a -absurdEraRule a = case a of {} - --- Rules that should never have a predicate failures -type instance EraRuleFailure "EPOCH" era = VoidEraRule "EPOCH" era -type instance EraRuleFailure "NEWEPOCH" era = VoidEraRule "NEWEPOCH" era -type instance EraRuleFailure "MIR" era = VoidEraRule "MIR" era -type instance EraRuleFailure "NEWPP" era = VoidEraRule "NEWPP" era -type instance EraRuleFailure "SNAP" era = VoidEraRule "SNAP" era -type instance EraRuleFailure "TICK" era = VoidEraRule "TICK" era -type instance EraRuleFailure "TICKF" era = VoidEraRule "TICKF" era -type instance EraRuleFailure "UPEC" era = VoidEraRule "UPEC" era -type instance EraRuleFailure "RUPD" era = VoidEraRule "RUPD" era -type instance EraRuleFailure "POOLREAP" era = VoidEraRule "POOLREAP" era - -class - EraRuleFailure rule era ~ PredicateFailure (EraRule rule era) => - InjectRuleFailure (rule :: Symbol) t era - where - injectFailure :: t era -> EraRuleFailure rule era - default injectFailure :: t era ~ EraRuleFailure rule era => t era -> EraRuleFailure rule era - injectFailure = id - -class - EraRuleEvent rule era ~ Event (EraRule rule era) => - InjectRuleEvent (rule :: Symbol) t era - where - injectEvent :: t era -> EraRuleEvent rule era - default injectEvent :: t era ~ EraRuleEvent rule era => t era -> EraRuleEvent rule era - injectEvent = id - ------------------------------ --- Protocol version bounds -- ------------------------------ - -type family ProtVerIsInBounds (check :: Symbol) era (v :: Nat) (b :: Bool) :: Constraint where - ProtVerIsInBounds check era v 'True = () - ProtVerIsInBounds check era v 'False = - TypeError - ( 'ShowType era - ':<>: 'Text " protocol version bounds are: [" - ':<>: 'ShowType (ProtVerLow era) - ':<>: 'Text ", " - ':<>: 'ShowType (ProtVerHigh era) - ':<>: 'Text "], but required is " - ':<>: 'Text check - ':<>: 'Text " " - ':<>: 'ShowType v - ) - --- | Requirement for the era's highest protocol version to be higher or equal to --- the supplied value -type family ProtVerAtLeast era (l :: Nat) :: Constraint where - ProtVerAtLeast era l = ProtVerIsInBounds "at least" era l (l <=? ProtVerHigh era) - --- | Requirement for the era's lowest protocol version to be lower or equal to --- the supplied value -type family ProtVerAtMost era (h :: Nat) :: Constraint where - ProtVerAtMost era h = ProtVerIsInBounds "at most" era h (ProtVerLow era <=? h) - --- | Restrict a lower and upper bounds of the protocol version for the particular era -type ProtVerInBounds era l h = (ProtVerAtLeast era l, ProtVerAtMost era h) - --- | Restrict an era to the specific era through the protocol version. This is --- equivalent to @(inEra (Crypto era) ~ era)@ -type ExactEra (inEra :: Type -> Type) era = - ProtVerInBounds era (ProtVerLow (inEra (EraCrypto era))) (ProtVerHigh (inEra (EraCrypto era))) - --- | Restrict the @era@ to equal to @eraName@ or come after it -type AtLeastEra (eraName :: Type -> Type) era = - ProtVerAtLeast era (ProtVerLow (eraName (EraCrypto era))) - --- | Restrict the @era@ to equal to @eraName@ or come before it. -type AtMostEra (eraName :: Type -> Type) era = - ProtVerAtMost era (ProtVerHigh (eraName (EraCrypto era))) - --- | Get the value level `Version` of the lowest major protocol version for the supplied @era@. -eraProtVerLow :: forall era. Era era => Version -eraProtVerLow = natVersion @(ProtVerLow era) - --- | Get the value level `Version` of the highest major protocol version for the supplied @era@. -eraProtVerHigh :: forall era. Era era => Version -eraProtVerHigh = natVersion @(ProtVerHigh era) - --- | Enforce era to be at least the specified era at the type level. In other words --- compiler will produce type error when applied to eras prior to the specified era. --- This function should be used in order to avoid redundant constraints warning. --- --- For example these will type check --- --- >>> atLeastEra @BabbageEra @(ConwayEra StandardCrypto) --- >>> atLeastEra @BabbageEra @(BabbageEra StandardCrypto) --- --- However this will result in a type error --- --- >>> atLeastEra @BabbageEra @(AlonzoEra StandardCrypto) -atLeastEra :: AtLeastEra eraName era => () -atLeastEra = () - --- | Enforce era to be at most the specified era at the type level. In other words --- compiler will produce type error when applied to eras prior to the specified era. --- This function should be used in order to avoid redundant constraints warning. --- --- For example these will type check --- --- >>> atMostEra @BabbageEra @(ShelleyEra StandardCrypto) --- >>> atMostEra @AlonzoEra @(MaryEra StandardCrypto) --- --- However this will result in a type error --- --- >>> atMostEra @BabbageEra @(ConwayEra StandardCrypto) -atMostEra :: AtMostEra eraName era => () -atMostEra = () - -notSupportedInThisEra :: HasCallStack => a -notSupportedInThisEra = error "Impossible: Function is not supported in this era" - --- Without using `lens` we hit a ghc bug, which results in a redundant constraint warning -notSupportedInThisEraL :: HasCallStack => Lens' a b -notSupportedInThisEraL = lens notSupportedInThisEra notSupportedInThisEra - --- | Convert a type that implements `EncCBOR` to plain `Plain.Encoding` using the lowest --- protocol version for the supplied @era@ -toEraCBOR :: forall era t. (Era era, EncCBOR t) => t -> Plain.Encoding -toEraCBOR = toPlainEncoding (eraProtVerLow @era) . encCBOR -{-# INLINE toEraCBOR #-} - --- | Convert a type that implements `DecCBOR` to plain `Plain.Decoder` using the lowest --- protocol version for the supplied @era@ -fromEraCBOR :: forall era t s. (Era era, DecCBOR t) => Plain.Decoder s t -fromEraCBOR = eraDecoder @era decCBOR -{-# INLINE fromEraCBOR #-} - --- | Convert a type that implements `DecShareCBOR` to plain `Plain.Decoder` using the lowest --- protocol version for the supplied @era@ -fromEraShareCBOR :: forall era t s. (Era era, DecShareCBOR t) => Plain.Decoder s t -fromEraShareCBOR = eraDecoder @era decNoShareCBOR -{-# INLINE fromEraShareCBOR #-} - --- | Convert a versioned `Decoder` to plain a `Plain.Decoder` using the lowest protocol --- version for the supplied @era@ -eraDecoder :: forall era t s. Era era => Decoder s t -> Plain.Decoder s t -eraDecoder = toPlainDecoder (eraProtVerLow @era) -{-# INLINE eraDecoder #-} diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/Core/PParams.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/Core/PParams.hs deleted file mode 100644 index 9519405595d..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/Core/PParams.hs +++ /dev/null @@ -1,568 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DefaultSignatures #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE EmptyCase #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilyDependencies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} - -module Cardano.Ledger.Core.PParams ( - EraPParams (..), - PParams (..), - emptyPParams, - PParamsUpdate (..), - emptyPParamsUpdate, - genericApplyPPUpdates, - - -- * PParams lens - ppMinFeeAL, - ppMinFeeBL, - ppMaxBBSizeL, - ppMaxTxSizeL, - ppMaxBHSizeL, - ppKeyDepositL, - ppPoolDepositL, - ppEMaxL, - ppNOptL, - ppA0L, - ppRhoL, - ppTauL, - ppDL, - ppExtraEntropyL, - ppMinUTxOValueL, - ppMinPoolCostL, - - -- * PParamsUpdate lens - ppuMinFeeAL, - ppuMinFeeBL, - ppuMaxBBSizeL, - ppuMaxTxSizeL, - ppuMaxBHSizeL, - ppuKeyDepositL, - ppuPoolDepositL, - ppuEMaxL, - ppuNOptL, - ppuA0L, - ppuRhoL, - ppuTauL, - ppuDL, - ppuExtraEntropyL, - ppuMinUTxOValueL, - ppuMinPoolCostL, - - -- * Utility - ppLens, - ppuLens, - mapPParams, - mapPParamsUpdate, - upgradePParams, - downgradePParams, - upgradePParamsUpdate, - downgradePParamsUpdate, - - -- * PParamsUpdate to Data - PParam (..), - makePParamMap, -) -where - -import Cardano.Ledger.BaseTypes ( - EpochInterval (..), - NonNegativeInterval, - Nonce (..), - ProtVer, - StrictMaybe (..), - UnitInterval, - ) -import Cardano.Ledger.Binary (DecCBOR, EncCBOR, FromCBOR, ToCBOR) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Core.Era (Era (..), PreviousEra, ProtVerAtMost) -import Cardano.Ledger.HKD (HKD, HKDFunctor (..), NoUpdate (..)) -import Cardano.Ledger.Plutus.ToPlutusData (ToPlutusData (..)) -import Control.DeepSeq (NFData) -import Control.Monad.Identity (Identity) -import Data.Aeson (FromJSON, ToJSON) -import Data.Data (Typeable) -import Data.Default.Class (Default (..)) -import Data.Kind (Type) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Word (Word16, Word32) -import GHC.Generics (Generic (..), K1 (..), M1 (..), U1, V1, type (:*:) (..)) -import GHC.Natural (Natural) -import Lens.Micro (Lens', SimpleGetter, lens) -import NoThunks.Class (NoThunks) - --- | Protocol parameters -newtype PParams era = PParams (PParamsHKD Identity era) - -instance EraPParams era => Default (PParams era) where - def = emptyPParams - -deriving newtype instance - Eq (PParamsHKD Identity era) => Eq (PParams era) - -deriving newtype instance - Ord (PParamsHKD Identity era) => Ord (PParams era) - -deriving newtype instance - NFData (PParamsHKD Identity era) => NFData (PParams era) - -deriving newtype instance - NoThunks (PParamsHKD Identity era) => NoThunks (PParams era) - -deriving stock instance - Show (PParamsHKD Identity era) => Show (PParams era) - -deriving newtype instance - ToJSON (PParamsHKD Identity era) => ToJSON (PParams era) - -deriving newtype instance - FromJSON (PParamsHKD Identity era) => FromJSON (PParams era) - -deriving newtype instance - (Typeable era, EncCBOR (PParamsHKD Identity era)) => EncCBOR (PParams era) - -deriving newtype instance - (Typeable era, DecCBOR (PParamsHKD Identity era)) => DecCBOR (PParams era) - -deriving newtype instance - (Typeable era, ToCBOR (PParamsHKD Identity era)) => ToCBOR (PParams era) - -deriving newtype instance - (Typeable era, FromCBOR (PParamsHKD Identity era)) => FromCBOR (PParams era) - -deriving instance Generic (PParams era) - --- | The type of updates to Protocol parameters -newtype PParamsUpdate era = PParamsUpdate (PParamsHKD StrictMaybe era) - -instance EraPParams era => Default (PParamsUpdate era) where - def = emptyPParamsUpdate - -deriving newtype instance - Eq (PParamsHKD StrictMaybe era) => Eq (PParamsUpdate era) - -deriving newtype instance - Ord (PParamsHKD StrictMaybe era) => Ord (PParamsUpdate era) - -deriving newtype instance - NFData (PParamsHKD StrictMaybe era) => NFData (PParamsUpdate era) - -deriving newtype instance - NoThunks (PParamsHKD StrictMaybe era) => NoThunks (PParamsUpdate era) - -deriving stock instance - Show (PParamsHKD StrictMaybe era) => Show (PParamsUpdate era) - -deriving newtype instance - (Typeable era, EncCBOR (PParamsHKD StrictMaybe era)) => EncCBOR (PParamsUpdate era) - -deriving newtype instance - (Typeable era, DecCBOR (PParamsHKD StrictMaybe era)) => DecCBOR (PParamsUpdate era) - -deriving newtype instance - (Typeable era, ToCBOR (PParamsHKD StrictMaybe era)) => ToCBOR (PParamsUpdate era) - -deriving newtype instance - (Typeable era, FromCBOR (PParamsHKD StrictMaybe era)) => FromCBOR (PParamsUpdate era) - -deriving newtype instance - ToJSON (PParamsHKD StrictMaybe era) => ToJSON (PParamsUpdate era) - -deriving newtype instance - FromJSON (PParamsHKD StrictMaybe era) => FromJSON (PParamsUpdate era) - -deriving instance Generic (PParamsUpdate era) - --- Generic derivation of `applyPPUpdates` - -class Updatable a u where - applyUpdate :: a -> u -> a - -instance Updatable (U1 a) (U1 u) where - applyUpdate x _ = x - -instance Updatable (V1 a) (V1 u) where - applyUpdate x _ = case x of {} - -instance - (Updatable (a1 a) (u1 u), Updatable (a2 a) (u2 u)) => - Updatable ((a1 :*: a2) a) ((u1 :*: u2) u) - where - applyUpdate (x1 :*: x2) (u1 :*: u2) = applyUpdate x1 u1 :*: applyUpdate x2 u2 - -instance Updatable (a x) (a' x') => Updatable (M1 i c a x) (M1 i' c' a' x') where - applyUpdate (M1 x) (M1 y) = M1 $ applyUpdate x y - -instance Updatable (K1 t x a) (K1 t (StrictMaybe x) u) where - applyUpdate (K1 x') (K1 sm) = K1 $ case sm of - SJust x -> x - SNothing -> x' - -instance Updatable (K1 t x a) (K1 t (NoUpdate x) u) where - applyUpdate (K1 x) (K1 NoUpdate) = K1 x - -genericApplyPPUpdates :: - forall era a u. - ( Generic (PParamsHKD Identity era) - , Generic (PParamsHKD StrictMaybe era) - , Updatable (Rep (PParamsHKD Identity era) a) (Rep (PParamsHKD StrictMaybe era) u) - ) => - PParams era -> - PParamsUpdate era -> - PParams era -genericApplyPPUpdates (PParams a) (PParamsUpdate u) = - PParams . to $ applyUpdate (from @_ @a a) (from @_ @u u) - -class - ( Era era - , Eq (PParamsHKD Identity era) - , Ord (PParamsHKD Identity era) - , Show (PParamsHKD Identity era) - , NFData (PParamsHKD Identity era) - , EncCBOR (PParamsHKD Identity era) - , DecCBOR (PParamsHKD Identity era) - , ToCBOR (PParamsHKD Identity era) - , FromCBOR (PParamsHKD Identity era) - , NoThunks (PParamsHKD Identity era) - , ToJSON (PParamsHKD Identity era) - , FromJSON (PParamsHKD Identity era) - , Eq (PParamsHKD StrictMaybe era) - , Ord (PParamsHKD StrictMaybe era) - , Show (PParamsHKD StrictMaybe era) - , NFData (PParamsHKD StrictMaybe era) - , EncCBOR (PParamsHKD StrictMaybe era) - , DecCBOR (PParamsHKD StrictMaybe era) - , ToCBOR (PParamsHKD StrictMaybe era) - , FromCBOR (PParamsHKD StrictMaybe era) - , NoThunks (PParamsHKD StrictMaybe era) - , ToJSON (PParamsHKD StrictMaybe era) - ) => - EraPParams era - where - -- | Protocol parameters where the fields are represented with a HKD - type PParamsHKD (f :: Type -> Type) era = (r :: Type) | r -> era - - -- | Applies a protocol parameters update - applyPPUpdates :: - PParams era -> - PParamsUpdate era -> - PParams era - default applyPPUpdates :: - forall a u. - ( Generic (PParamsHKD Identity era) - , Generic (PParamsHKD StrictMaybe era) - , Updatable (Rep (PParamsHKD Identity era) a) (Rep (PParamsHKD StrictMaybe era) u) - ) => - PParams era -> - PParamsUpdate era -> - PParams era - applyPPUpdates = genericApplyPPUpdates @_ @a @u - - emptyPParamsIdentity :: PParamsHKD Identity era - emptyPParamsStrictMaybe :: PParamsHKD StrictMaybe era - - -- | - type UpgradePParams (f :: Type -> Type) era :: Type - - type DowngradePParams (f :: Type -> Type) era :: Type - - -- | Upgrade PParams from previous era to the current one - upgradePParamsHKD :: - (HKDFunctor f, EraPParams (PreviousEra era)) => - UpgradePParams f era -> - PParamsHKD f (PreviousEra era) -> - PParamsHKD f era - - -- | Downgrade PParams from the current era to the previous one - downgradePParamsHKD :: - (HKDFunctor f, EraPParams (PreviousEra era)) => - DowngradePParams f era -> - PParamsHKD f era -> - PParamsHKD f (PreviousEra era) - - -- HKD Versions of lenses - - -- | The linear factor for the minimum fee calculation - hkdMinFeeAL :: HKDFunctor f => Lens' (PParamsHKD f era) (HKD f Coin) - - -- | The constant factor for the minimum fee calculation - hkdMinFeeBL :: HKDFunctor f => Lens' (PParamsHKD f era) (HKD f Coin) - - -- | Maximal block body size - hkdMaxBBSizeL :: HKDFunctor f => Lens' (PParamsHKD f era) (HKD f Word32) - - -- | Maximal transaction size - hkdMaxTxSizeL :: HKDFunctor f => Lens' (PParamsHKD f era) (HKD f Word32) - - -- | Maximal block header size - hkdMaxBHSizeL :: HKDFunctor f => Lens' (PParamsHKD f era) (HKD f Word16) - - -- | The amount of a key registration deposit - hkdKeyDepositL :: HKDFunctor f => Lens' (PParamsHKD f era) (HKD f Coin) - - -- | The amount of a pool registration deposit - hkdPoolDepositL :: HKDFunctor f => Lens' (PParamsHKD f era) (HKD f Coin) - - -- | epoch bound on pool retirement - hkdEMaxL :: HKDFunctor f => Lens' (PParamsHKD f era) (HKD f EpochInterval) - - -- | Desired number of pools - hkdNOptL :: HKDFunctor f => Lens' (PParamsHKD f era) (HKD f Natural) - - -- | Pool influence - hkdA0L :: HKDFunctor f => Lens' (PParamsHKD f era) (HKD f NonNegativeInterval) - - -- | Monetary expansion - hkdRhoL :: HKDFunctor f => Lens' (PParamsHKD f era) (HKD f UnitInterval) - - -- | Treasury expansion - hkdTauL :: HKDFunctor f => Lens' (PParamsHKD f era) (HKD f UnitInterval) - - -- | Decentralization parameter - hkdDL :: (HKDFunctor f, ProtVerAtMost era 6) => Lens' (PParamsHKD f era) (HKD f UnitInterval) - - -- | Decentralization parameter getter - ppDG :: SimpleGetter (PParams era) UnitInterval - default ppDG :: ProtVerAtMost era 6 => SimpleGetter (PParams era) UnitInterval - ppDG = ppLens . hkdDL @era @Identity - - -- | Extra entropy - hkdExtraEntropyL :: (HKDFunctor f, ProtVerAtMost era 6) => Lens' (PParamsHKD f era) (HKD f Nonce) - - -- | Protocol version - hkdProtocolVersionL :: - (HKDFunctor f, ProtVerAtMost era 8) => Lens' (PParamsHKD f era) (HKD f ProtVer) - - ppProtocolVersionL :: Lens' (PParams era) ProtVer - default ppProtocolVersionL :: ProtVerAtMost era 8 => Lens' (PParams era) ProtVer - ppProtocolVersionL = ppLens . hkdProtocolVersionL @era @Identity - - -- | PParamsUpdate Protocol version - ppuProtocolVersionL :: ProtVerAtMost era 8 => Lens' (PParamsUpdate era) (StrictMaybe ProtVer) - ppuProtocolVersionL = ppuLens . hkdProtocolVersionL @era @StrictMaybe - - -- | Minimum UTxO value - hkdMinUTxOValueL :: HKDFunctor f => ProtVerAtMost era 4 => Lens' (PParamsHKD f era) (HKD f Coin) - - -- | Minimum Stake Pool Cost - hkdMinPoolCostL :: HKDFunctor f => Lens' (PParamsHKD f era) (HKD f Coin) - -emptyPParams :: EraPParams era => PParams era -emptyPParams = PParams emptyPParamsIdentity - -emptyPParamsUpdate :: EraPParams era => PParamsUpdate era -emptyPParamsUpdate = PParamsUpdate emptyPParamsStrictMaybe - -ppLens :: Lens' (PParams era) (PParamsHKD Identity era) -ppLens = lens (\(PParams x) -> x) (\_ pp -> PParams pp) - -ppuLens :: Lens' (PParamsUpdate era) (PParamsHKD StrictMaybe era) -ppuLens = lens (\(PParamsUpdate x) -> x) (\_ pp -> PParamsUpdate pp) - --- PParams versions of lenses - --- | The linear factor for the minimum fee calculation -ppMinFeeAL :: forall era. EraPParams era => Lens' (PParams era) Coin -ppMinFeeAL = ppLens . hkdMinFeeAL @era @Identity - --- | The constant factor for the minimum fee calculation -ppMinFeeBL :: forall era. EraPParams era => Lens' (PParams era) Coin -ppMinFeeBL = ppLens . hkdMinFeeBL @era @Identity - --- | Maximal block body size -ppMaxBBSizeL :: forall era. EraPParams era => Lens' (PParams era) Word32 -ppMaxBBSizeL = ppLens . hkdMaxBBSizeL @era @Identity - --- | Maximal transaction size -ppMaxTxSizeL :: forall era. EraPParams era => Lens' (PParams era) Word32 -ppMaxTxSizeL = ppLens . hkdMaxTxSizeL @era @Identity - --- | Maximal block header size -ppMaxBHSizeL :: forall era. EraPParams era => Lens' (PParams era) Word16 -ppMaxBHSizeL = ppLens . hkdMaxBHSizeL @era @Identity - --- | The amount of a key registration deposit -ppKeyDepositL :: forall era. EraPParams era => Lens' (PParams era) Coin -ppKeyDepositL = ppLens . hkdKeyDepositL @era @Identity - --- | The amount of a pool registration deposit -ppPoolDepositL :: forall era. EraPParams era => Lens' (PParams era) Coin -ppPoolDepositL = ppLens . hkdPoolDepositL @era @Identity - --- | epoch bound on pool retirement -ppEMaxL :: forall era. EraPParams era => Lens' (PParams era) EpochInterval -ppEMaxL = ppLens . hkdEMaxL @era @Identity - --- | Desired number of pools -ppNOptL :: forall era. EraPParams era => Lens' (PParams era) Natural -ppNOptL = ppLens . hkdNOptL @era @Identity - --- | Pool influence -ppA0L :: forall era. EraPParams era => Lens' (PParams era) NonNegativeInterval -ppA0L = ppLens . hkdA0L @era @Identity - --- | Monetary expansion -ppRhoL :: forall era. EraPParams era => Lens' (PParams era) UnitInterval -ppRhoL = ppLens . hkdRhoL @era @Identity - --- | Treasury expansion -ppTauL :: forall era. EraPParams era => Lens' (PParams era) UnitInterval -ppTauL = ppLens . hkdTauL @era @Identity - --- | Decentralization parameter -ppDL :: forall era. (EraPParams era, ProtVerAtMost era 6) => Lens' (PParams era) UnitInterval -ppDL = ppLens . hkdDL @era @Identity - --- | Extra entropy -ppExtraEntropyL :: forall era. (EraPParams era, ProtVerAtMost era 6) => Lens' (PParams era) Nonce -ppExtraEntropyL = ppLens . hkdExtraEntropyL @era @Identity - --- | Minimum UTxO value -ppMinUTxOValueL :: forall era. (EraPParams era, ProtVerAtMost era 4) => Lens' (PParams era) Coin -ppMinUTxOValueL = ppLens . hkdMinUTxOValueL @era @Identity - --- | Minimum Stake Pool Cost -ppMinPoolCostL :: forall era. EraPParams era => Lens' (PParams era) Coin -ppMinPoolCostL = ppLens . hkdMinPoolCostL @era @Identity - --- PParamsUpdate versions of lenses - --- | The linear factor for the minimum fee calculation -ppuMinFeeAL :: forall era. EraPParams era => Lens' (PParamsUpdate era) (StrictMaybe Coin) -ppuMinFeeAL = ppuLens . hkdMinFeeAL @era @StrictMaybe - --- | The constant factor for the minimum fee calculation -ppuMinFeeBL :: forall era. EraPParams era => Lens' (PParamsUpdate era) (StrictMaybe Coin) -ppuMinFeeBL = ppuLens . hkdMinFeeBL @era @StrictMaybe - --- | Maximal block body size -ppuMaxBBSizeL :: forall era. EraPParams era => Lens' (PParamsUpdate era) (StrictMaybe Word32) -ppuMaxBBSizeL = ppuLens . hkdMaxBBSizeL @era @StrictMaybe - --- | Maximal transaction size -ppuMaxTxSizeL :: forall era. EraPParams era => Lens' (PParamsUpdate era) (StrictMaybe Word32) -ppuMaxTxSizeL = ppuLens . hkdMaxTxSizeL @era @StrictMaybe - --- | Maximal block header size -ppuMaxBHSizeL :: forall era. EraPParams era => Lens' (PParamsUpdate era) (StrictMaybe Word16) -ppuMaxBHSizeL = ppuLens . hkdMaxBHSizeL @era @StrictMaybe - --- | The amount of a key registration deposit -ppuKeyDepositL :: forall era. EraPParams era => Lens' (PParamsUpdate era) (StrictMaybe Coin) -ppuKeyDepositL = ppuLens . hkdKeyDepositL @era @StrictMaybe - --- | The amount of a pool registration deposit -ppuPoolDepositL :: forall era. EraPParams era => Lens' (PParamsUpdate era) (StrictMaybe Coin) -ppuPoolDepositL = ppuLens . hkdPoolDepositL @era @StrictMaybe - --- | epoch bound on pool retirement -ppuEMaxL :: forall era. EraPParams era => Lens' (PParamsUpdate era) (StrictMaybe EpochInterval) -ppuEMaxL = ppuLens . hkdEMaxL @era @StrictMaybe - --- | Desired number of pools -ppuNOptL :: forall era. EraPParams era => Lens' (PParamsUpdate era) (StrictMaybe Natural) -ppuNOptL = ppuLens . hkdNOptL @era @StrictMaybe - --- | Pool influence -ppuA0L :: forall era. EraPParams era => Lens' (PParamsUpdate era) (StrictMaybe NonNegativeInterval) -ppuA0L = ppuLens . hkdA0L @era @StrictMaybe - --- | Monetary expansion -ppuRhoL :: forall era. EraPParams era => Lens' (PParamsUpdate era) (StrictMaybe UnitInterval) -ppuRhoL = ppuLens . hkdRhoL @era @StrictMaybe - --- | Treasury expansion -ppuTauL :: forall era. EraPParams era => Lens' (PParamsUpdate era) (StrictMaybe UnitInterval) -ppuTauL = ppuLens . hkdTauL @era @StrictMaybe - --- | Decentralization parameter -ppuDL :: - forall era. - (EraPParams era, ProtVerAtMost era 6) => - Lens' (PParamsUpdate era) (StrictMaybe UnitInterval) -ppuDL = ppuLens . hkdDL @era @StrictMaybe - --- | Extra entropy -ppuExtraEntropyL :: - forall era. - (EraPParams era, ProtVerAtMost era 6) => - Lens' (PParamsUpdate era) (StrictMaybe Nonce) -ppuExtraEntropyL = ppuLens . hkdExtraEntropyL @era @StrictMaybe - --- | Minimum UTxO value -ppuMinUTxOValueL :: - forall era. - (EraPParams era, ProtVerAtMost era 4) => - Lens' (PParamsUpdate era) (StrictMaybe Coin) -ppuMinUTxOValueL = ppuLens . hkdMinUTxOValueL @era @StrictMaybe - --- | Minimum Stake Pool Cost -ppuMinPoolCostL :: forall era. EraPParams era => Lens' (PParamsUpdate era) (StrictMaybe Coin) -ppuMinPoolCostL = ppuLens . hkdMinPoolCostL @era @StrictMaybe - -mapPParams :: (PParamsHKD Identity era1 -> PParamsHKD Identity era2) -> PParams era1 -> PParams era2 -mapPParams f (PParams pp) = PParams $ f pp - -mapPParamsUpdate :: - (PParamsHKD StrictMaybe era1 -> PParamsHKD StrictMaybe era2) -> - PParamsUpdate era1 -> - PParamsUpdate era2 -mapPParamsUpdate f (PParamsUpdate pp) = PParamsUpdate $ f pp - -upgradePParams :: - (EraPParams era, EraPParams (PreviousEra era)) => - UpgradePParams Identity era -> - PParams (PreviousEra era) -> - PParams era -upgradePParams args (PParams pphkd) = - PParams (upgradePParamsHKD @_ @Identity args pphkd) - -downgradePParams :: - (EraPParams era, EraPParams (PreviousEra era)) => - DowngradePParams Identity era -> - PParams era -> - PParams (PreviousEra era) -downgradePParams args (PParams pphkd) = - PParams (downgradePParamsHKD @_ @Identity args pphkd) - -upgradePParamsUpdate :: - (EraPParams era, EraPParams (PreviousEra era)) => - UpgradePParams StrictMaybe era -> - PParamsUpdate (PreviousEra era) -> - PParamsUpdate era -upgradePParamsUpdate args (PParamsUpdate pphkd) = - PParamsUpdate (upgradePParamsHKD @_ @StrictMaybe args pphkd) - -downgradePParamsUpdate :: - (EraPParams era, EraPParams (PreviousEra era)) => - DowngradePParams StrictMaybe era -> - PParamsUpdate era -> - PParamsUpdate (PreviousEra era) -downgradePParamsUpdate args (PParamsUpdate pphkd) = - PParamsUpdate (downgradePParamsHKD @_ @StrictMaybe args pphkd) - --- ===================================================================================== --- Tools for building ToPlutusData instances for (PParamUpdates era). - --- | Pair the tag, and exisitenially hide the type of the lens for the field with that Lens' -data PParam era where - PParam :: ToPlutusData t => Word -> Lens' (PParamsUpdate era) (StrictMaybe t) -> PParam era - --- | Turn a list into a Map, this assures we have no duplicates. -makePParamMap :: [PParam era] -> Map Word (PParam era) -makePParamMap xs = Map.fromList [(n, p) | p@(PParam n _) <- xs] diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/Core/Translation.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/Core/Translation.hs deleted file mode 100644 index 74b44716c3d..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/Core/Translation.hs +++ /dev/null @@ -1,123 +0,0 @@ -{-# LANGUAGE DefaultSignatures #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilyDependencies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableSuperClasses #-} - -module Cardano.Ledger.Core.Translation ( - PreviousEra, - TranslationContext, - TranslationError, - TranslateEra, - translateEra, - translateEraMaybe, - translateEra', - translateEraThroughCBOR, -) -where - -import Cardano.Ledger.Binary -import Cardano.Ledger.Core.Era -import Control.Monad.Except (Except, runExcept) -import Data.Coerce (Coercible, coerce) -import Data.Kind (Type) -import Data.Text (Text) -import Data.Void (Void, absurd) - --------------------------------------------------------------------------------- --- Era translation --------------------------------------------------------------------------------- - --- | Per-era context used for 'TranslateEra'. --- --- This context will be passed to the translation instances of /all/ types of --- that particular era. In practice, most instances won't need the context, but --- this approach makes the translation composable (as opposed to having a --- separate context per type). -type family TranslationContext era :: Type - --- | Translation of types between eras, e.g., from Shelley to Allegra. --- --- When @era@ is just a phantom type parameter, an empty standalone deriving can be used: --- --- > newtype Foo era = Foo Int --- > --- > instance TranslateEra (Allegra c) Foo --- --- Note that one could use @DerivingAnyClass@ (@deriving (TranslateEra (Allegra --- c))@), but this would introduce an undesired coupling between the --- era-parametric type and (a) particular era(s). The intention is to have a --- module with orphan instances per era. --- --- In most cases, the @era@ parameter won't be phantom, and a manual instance --- will have to be written: --- --- > newtype Bar era = Bar (TxBody era) --- > --- > instance CC.Crypto c => TranslateEra (Allegra c) Bar where --- > translateEra ctxt = Bar <$> translateEra ctxt --- > --- > -- With the following instance being in scope: --- > instance CC.Crypto c => TranslatEra (Allegra c) TxBody --- --- Note: we use 'PreviousEra' instead of @NextEra@ as an era definitely knows --- its predecessor, but not necessarily its successor. Moreover, one could argue --- that it makes more sense to define the translation from era A to era B where --- era B is defined, than where era A is defined. -class (Era era, Era (PreviousEra era)) => TranslateEra era f where - -- | Most translations should be infallible (default instance), but we leave - -- the door open for partial translations. - -- - -- For a partial translation, override the default type to be '()' or a - -- concrete error type. - type TranslationError era f :: Type - - type TranslationError era f = Void - - -- | Translate a type @f@ parameterised by the era from an era to the era - -- after it. - -- - -- The translation is a given the translation context of @era@. - -- - -- A default instance is provided for when the two types are 'Coercible'. - translateEra :: - TranslationContext era -> f (PreviousEra era) -> Except (TranslationError era f) (f era) - default translateEra :: - (Coercible (f (PreviousEra era)) (f era), TranslationContext era ~ ()) => - TranslationContext era -> - f (PreviousEra era) -> - Except (TranslationError era f) (f era) - translateEra () = return . coerce - --- | Variant of 'translateEra' for when 'TranslationError' is 'Void' and the --- translation thus cannot fail. -translateEra' :: - (TranslateEra era f, TranslationError era f ~ Void) => - TranslationContext era -> - f (PreviousEra era) -> - f era -translateEra' ctxt = either absurd id . runExcept . translateEra ctxt - --- | Variant of 'translateEra' for when 'TranslationError' is '()', converting --- the result to a 'Maybe'. -translateEraMaybe :: - (TranslateEra era f, TranslationError era f ~ ()) => - TranslationContext era -> - f (PreviousEra era) -> - Maybe (f era) -translateEraMaybe ctxt = - either (const Nothing) Just . runExcept . translateEra ctxt - --- | Translate a type through its binary representation from previous era to the current one. -translateEraThroughCBOR :: - forall era ti to. - (Era era, ToCBOR (ti (PreviousEra era)), DecCBOR (Annotator (to era))) => - -- | Label for error reporting - Text -> - ti (PreviousEra era) -> - Except DecoderError (to era) -translateEraThroughCBOR = - translateViaCBORAnnotator (eraProtVerLow @era) diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/Core/TxCert.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/Core/TxCert.hs deleted file mode 100644 index 9d6ebd95234..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/Core/TxCert.hs +++ /dev/null @@ -1,188 +0,0 @@ -{-# LANGUAGE ConstrainedClassMethods #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE KindSignatures #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE TypeFamilyDependencies #-} -{-# LANGUAGE UndecidableSuperClasses #-} -{-# LANGUAGE ViewPatterns #-} - -module Cardano.Ledger.Core.TxCert ( - EraTxCert (..), - pattern RegPoolTxCert, - pattern RetirePoolTxCert, - Delegation (..), - PoolCert (..), - getPoolCertTxCert, - poolCWitness, - poolCertKeyHashWitness, - isRegStakeTxCert, - isUnRegStakeTxCert, -) -where - -import Cardano.Ledger.BaseTypes (kindObject) -import Cardano.Ledger.Binary (DecCBOR (..), EncCBOR (..), FromCBOR, ToCBOR) -import Cardano.Ledger.Coin (Coin) -import Cardano.Ledger.Core.Era (Era (EraCrypto)) -import Cardano.Ledger.Core.PParams (PParams) -import Cardano.Ledger.Core.Translation -import Cardano.Ledger.Credential (Credential (..), StakeCredential) -import Cardano.Ledger.Crypto -import Cardano.Ledger.Hashes (ScriptHash) -import Cardano.Ledger.Keys (KeyHash (..), KeyRole (..), asWitness) -import Cardano.Ledger.PoolParams (PoolParams (ppId)) -import Cardano.Ledger.Slot (EpochNo (..)) -import Control.DeepSeq (NFData (..), rwhnf) -import Data.Aeson (ToJSON (..), (.=)) -import Data.Kind (Type) -import Data.Maybe (isJust) -import Data.Void (Void) -import GHC.Generics (Generic) -import NoThunks.Class (NoThunks (..)) - -class - ( Era era - , ToJSON (TxCert era) - , DecCBOR (TxCert era) - , EncCBOR (TxCert era) - , ToCBOR (TxCert era) - , FromCBOR (TxCert era) - , NoThunks (TxCert era) - , NFData (TxCert era) - , Show (TxCert era) - , Eq (TxCert era) - ) => - EraTxCert era - where - type TxCert era = (r :: Type) | r -> era - - type TxCertUpgradeError era :: Type - type TxCertUpgradeError era = Void - - -- | Every era, except Shelley, must be able to upgrade a `TxCert` from a previous - -- era. However, not all certificates can be upgraded, because some eras lose some of - -- the certificates, thus return type is an `Either`. Eg. from Babbage to Conway: MIR - -- and Genesis certificates were removed. - upgradeTxCert :: - EraTxCert (PreviousEra era) => - TxCert (PreviousEra era) -> - Either (TxCertUpgradeError era) (TxCert era) - - -- | Return a witness key whenever a certificate requires one - getVKeyWitnessTxCert :: TxCert era -> Maybe (KeyHash 'Witness (EraCrypto era)) - - -- | Return a ScriptHash for certificate types that require a witness - getScriptWitnessTxCert :: TxCert era -> Maybe (ScriptHash (EraCrypto era)) - - mkRegPoolTxCert :: PoolParams (EraCrypto era) -> TxCert era - getRegPoolTxCert :: TxCert era -> Maybe (PoolParams (EraCrypto era)) - - mkRetirePoolTxCert :: KeyHash 'StakePool (EraCrypto era) -> EpochNo -> TxCert era - getRetirePoolTxCert :: TxCert era -> Maybe (KeyHash 'StakePool (EraCrypto era), EpochNo) - - -- | Extract staking credential from any certificate that can register such credential - lookupRegStakeTxCert :: TxCert era -> Maybe (Credential 'Staking (EraCrypto era)) - - -- | Extract staking credential from any certificate that can unregister such credential - lookupUnRegStakeTxCert :: TxCert era -> Maybe (Credential 'Staking (EraCrypto era)) - - -- | Compute the total deposits from a list of certificates. - getTotalDepositsTxCerts :: - Foldable f => - PParams era -> - -- | Check whether stake pool is registered or not - (KeyHash 'StakePool (EraCrypto era) -> Bool) -> - f (TxCert era) -> - Coin - - -- | Compute the total refunds from a list of certificates. - getTotalRefundsTxCerts :: - Foldable f => - PParams era -> - -- | Lookup current deposit for Staking credential if one is registered - (Credential 'Staking (EraCrypto era) -> Maybe Coin) -> - -- | Lookup current deposit for DRep credential if one is registered - (Credential 'DRepRole (EraCrypto era) -> Maybe Coin) -> - f (TxCert era) -> - Coin - -pattern RegPoolTxCert :: EraTxCert era => PoolParams (EraCrypto era) -> TxCert era -pattern RegPoolTxCert d <- (getRegPoolTxCert -> Just d) - where - RegPoolTxCert d = mkRegPoolTxCert d - -pattern RetirePoolTxCert :: - EraTxCert era => - KeyHash 'StakePool (EraCrypto era) -> - EpochNo -> - TxCert era -pattern RetirePoolTxCert poolId epochNo <- (getRetirePoolTxCert -> Just (poolId, epochNo)) - where - RetirePoolTxCert poolId epochNo = mkRetirePoolTxCert poolId epochNo - -getPoolCertTxCert :: EraTxCert era => TxCert era -> Maybe (PoolCert (EraCrypto era)) -getPoolCertTxCert = \case - RegPoolTxCert poolParams -> Just $ RegPool poolParams - RetirePoolTxCert poolId epochNo -> Just $ RetirePool poolId epochNo - _ -> Nothing - --- | The delegation of one stake key to another. -data Delegation c = Delegation - { dDelegator :: !(StakeCredential c) - , dDelegatee :: !(KeyHash 'StakePool c) - } - deriving (Eq, Generic, Show) -{-# DEPRECATED Delegation "No longer used" #-} - -instance NFData (Delegation c) where - rnf = rwhnf - -instance NoThunks (Delegation c) - -data PoolCert c - = -- | A stake pool registration certificate. - RegPool !(PoolParams c) - | -- | A stake pool retirement certificate. - RetirePool !(KeyHash 'StakePool c) !EpochNo - deriving (Show, Generic, Eq, Ord) - -instance NoThunks (PoolCert c) - -instance NFData (PoolCert c) where - rnf = rwhnf - -instance Crypto c => ToJSON (PoolCert c) where - toJSON = \case - RegPool poolParams -> - kindObject "RegPool" ["poolParams" .= toJSON poolParams] - RetirePool poolId epochNo -> - kindObject "RetirePool" $ - [ "poolId" .= toJSON poolId - , "epochNo" .= toJSON epochNo - ] - -poolCertKeyHashWitness :: PoolCert c -> KeyHash 'Witness c -poolCertKeyHashWitness = \case - RegPool poolParams -> asWitness $ ppId poolParams - RetirePool poolId _ -> asWitness poolId - -poolCWitness :: PoolCert c -> Credential 'StakePool c -poolCWitness (RegPool pool) = KeyHashObj $ ppId pool -poolCWitness (RetirePool k _) = KeyHashObj k -{-# DEPRECATED poolCWitness "As useless. PoolIds have nothing to do with credentials" #-} - --- | Check if supplied TxCert is a stake registering certificate -isRegStakeTxCert :: EraTxCert era => TxCert era -> Bool -isRegStakeTxCert = isJust . lookupRegStakeTxCert - --- | Check if supplied TxCert is a stake un-registering certificate -isUnRegStakeTxCert :: EraTxCert era => TxCert era -> Bool -isUnRegStakeTxCert = isJust . lookupUnRegStakeTxCert - --- ================================================================= diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/Credential.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/Credential.hs deleted file mode 100644 index 93f2b01459c..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/Credential.hs +++ /dev/null @@ -1,337 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE KindSignatures #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE StandaloneDeriving #-} - -module Cardano.Ledger.Credential ( - Credential (KeyHashObj, ScriptHashObj), - GenesisCredential (..), - PaymentCredential, - credKeyHashWitness, - credScriptHash, - credToText, - parseCredential, - Ptr (Ptr), - ptrSlotNo, - ptrTxIx, - ptrCertIx, - StakeCredential, - StakeReference (..), - normalizePtr, -) -where - -import Cardano.Crypto.Hash (hashFromTextAsHex, hashToTextAsHex) -import Cardano.Ledger.BaseTypes (CertIx (..), SlotNo (..), TxIx (..)) -import Cardano.Ledger.Binary ( - CBORGroup (..), - DecCBOR (..), - DecCBORGroup (..), - EncCBOR (..), - EncCBORGroup (..), - FromCBOR (..), - ToCBOR (..), - ) -import qualified Cardano.Ledger.Binary.Plain as Plain -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Hashes (ScriptHash (..)) -import Cardano.Ledger.Keys ( - HasKeyRole (..), - KeyHash (..), - KeyRole (..), - asWitness, - ) -import Control.Applicative ((<|>)) -import Control.DeepSeq (NFData) -import Data.Aeson ( - FromJSON (..), - FromJSONKey (..), - FromJSONKeyFunction (..), - KeyValue, - ToJSON, - ToJSONKey (..), - object, - pairs, - (.:), - (.=), - ) -import qualified Data.Aeson as Aeson -import Data.Aeson.Types (toJSONKeyText) -import Data.Default.Class (Default (..)) -import Data.Foldable (asum) -import qualified Data.Text as T -import Data.Typeable (Typeable) -import Data.Word -import GHC.Generics (Generic) -import NoThunks.Class (NoThunks (..)) -import Quiet (Quiet (Quiet)) - --- | Script hash or key hash for a payment or a staking object. --- --- Note that credentials (unlike raw key hashes) do appear to vary from era to --- era, since they reference the hash of a script, which can change. This --- parameter is a phantom, however, so in actuality the instances will remain --- the same. -data Credential (kr :: KeyRole) c - = ScriptHashObj !(ScriptHash c) - | KeyHashObj !(KeyHash kr c) - deriving (Show, Eq, Generic, NFData, Ord) - -instance Crypto e => Default (Credential r e) where - def = KeyHashObj def - -instance HasKeyRole Credential where - coerceKeyRole (ScriptHashObj x) = ScriptHashObj x - coerceKeyRole (KeyHashObj x) = KeyHashObj $ coerceKeyRole x - -instance NoThunks (Credential kr c) - -instance Crypto c => ToJSON (Credential kr c) where - toJSON (ScriptHashObj hash) = - Aeson.object - [ "scriptHash" .= hash - ] - toJSON (KeyHashObj hash) = - Aeson.object - [ "keyHash" .= hash - ] - -instance Crypto c => FromJSON (Credential kr c) where - parseJSON = - Aeson.withObject "Credential" $ \obj -> - asum [parser1 obj, parser2 obj] - where - parser1 obj = ScriptHashObj <$> (obj .: "scriptHash" <|> obj .: "script hash") - parser2 obj = KeyHashObj <$> (obj .: "keyHash" <|> obj .: "key hash") - -instance Crypto c => ToJSONKey (Credential kr c) where - toJSONKey = toJSONKeyText credToText - -instance Crypto c => FromJSONKey (Credential kr c) where - fromJSONKey = FromJSONKeyTextParser parseCredential - -parseCredential :: - (MonadFail m, Crypto c) => - T.Text -> - m (Credential kr c) -parseCredential t = case T.splitOn "-" t of - ["scriptHash", hash] -> - maybe - (badHash hash) - (pure . ScriptHashObj . ScriptHash) - (hashFromTextAsHex hash) - ["keyHash", hash] -> - maybe - (badHash hash) - (pure . KeyHashObj . KeyHash) - (hashFromTextAsHex hash) - _ -> fail $ "Invalid credential: " <> show t - where - badHash h = fail $ "Invalid hash: " <> show h - -credToText :: Credential kr c -> T.Text -credToText (ScriptHashObj (ScriptHash hash)) = "scriptHash-" <> hashToTextAsHex hash -credToText (KeyHashObj (KeyHash has)) = "keyHash-" <> hashToTextAsHex has - -type PaymentCredential c = Credential 'Payment c - -type StakeCredential c = Credential 'Staking c - --- | Convert a KeyHash into a Witness KeyHash. Does nothing for Script credentials. -credKeyHashWitness :: Credential r c -> Maybe (KeyHash 'Witness c) -credKeyHashWitness = \case - KeyHashObj hk -> Just $ asWitness hk - ScriptHashObj _ -> Nothing - --- | Extract ScriptHash from a Credential. Returns Nothing for KeyHashes -credScriptHash :: Credential kr c -> Maybe (ScriptHash c) -credScriptHash = \case - ScriptHashObj hs -> Just hs - KeyHashObj _ -> Nothing - -data StakeReference c - = StakeRefBase !(StakeCredential c) - | StakeRefPtr !Ptr - | StakeRefNull - deriving (Show, Eq, Generic, NFData, Ord) - -instance NoThunks (StakeReference c) - -deriving instance Crypto c => ToJSON (StakeReference c) - --- TODO: implement this optimization: --- We expect that `SlotNo` will fit into `Word32` for a very long time, --- because we can assume that the rate at which it is incremented isn't going to --- increase in the near future. Therefore with current rate we should be fine for --- another 134 years. I suggest to remove this optimization in about a --- hundred years or thereabouts, so around a year 2122 would be good. --- --- Compaction works in a following manner. Total 8 bytes: first 4 bytes are for --- SlotNo (s0-s3), followed by 2 bytes for CertIx (c0-c1) and 2 more bytes for TxIx (t0-t1). --- --- @@@ --- --- ┏━━┯━━┯━━┯━━┯━━┯━━┯━━┯━━┓ --- ┃s3 s2 s1 s0┊c1 c0┊t1 t0┃ --- ┗━━┷━━┷━━┷━━┷━━┷━━┷━━┷━━┛ --- --- @@@ --- newtype Ptr = PtrCompact Word64 - --- | Pointer to a slot number, transaction index and an index in certificate --- list. -data Ptr = Ptr !SlotNo !TxIx !CertIx - deriving (Eq, Ord, Generic, NFData, NoThunks) - deriving (EncCBOR, DecCBOR) via CBORGroup Ptr - --- | Convert any invalid `Ptr` to a `Ptr` that contains all zeros for its fields. Any --- pointer that contains a `SlotNo`, `TxIx` or `CertIx` that is too large to fit into --- `Word32`, `Word16` and `Word16` respectively is considered to be an invalid --- `Ptr`. Valid `Ptr`s will be returned unmodified. --- --- /Note/ - This is in no way related to dangling pointers, with an exception that any --- invalid `Ptr` is guarateed to be a dangling `Ptr`. -normalizePtr :: Ptr -> Ptr -normalizePtr ptr@(Ptr (SlotNo slotNo) (TxIx txIx) (CertIx certIx)) - | slotNo > fromIntegral (maxBound :: Word32) - || txIx > fromIntegral (maxBound :: Word16) - || certIx > fromIntegral (maxBound :: Word16) = - Ptr (SlotNo 0) (TxIx 0) (CertIx 0) - | otherwise = ptr - -instance ToCBOR Ptr where - toCBOR (Ptr slotNo txIx certIx) = toCBOR (slotNo, txIx, certIx) - -instance FromCBOR Ptr where - fromCBOR = do - (slotNo, txIx, certIx) <- fromCBOR - pure $ Ptr slotNo txIx certIx - -instance ToJSON Ptr where - toJSON = object . toPtrPair - toEncoding = pairs . mconcat . toPtrPair - -instance ToJSONKey Ptr - -toPtrPair :: KeyValue e a => Ptr -> [a] -toPtrPair (Ptr slotNo txIndex certIndex) = - [ "slot" .= slotNo - , "txIndex" .= txIndex - , "certIndex" .= certIndex - ] - -instance Show Ptr where - showsPrec n (Ptr slotNo txIx certIx) - | n < 1 = inner - | otherwise = ('(' :) . inner . (")" ++) - where - inner = - ("Ptr (" ++) - . shows slotNo - . (") (" ++) - . shows txIx - . (") (" ++) - . shows certIx - . (')' :) - -{- TODO: Uncomment this once Mainnet is ready for Ptr optimization. - --- | With this pattern synonym we can recover actual values from compacted version of `Ptr`. -pattern Ptr :: SlotNo -> TxIx -> CertIx -> Ptr -pattern Ptr slotNo txIx certIx <- - (viewPtr -> (slotNo, txIx, certIx)) - -{-# COMPLETE Ptr #-} - --- | `Ptr` relies on compact representation for memory efficiency and therefore --- it will return `Nothing` if `SlotNo` takes up more than 32 bits, which is --- totally fine for at least another 100 years. -mkPtr :: SlotNo -> TxIx -> CertIx -> Maybe Ptr -mkPtr (SlotNo slotNo) (TxIx txIx) (CertIx certIx) - | slotNo > fromIntegral (maxBound :: Word32) = Nothing - | otherwise = - Just - $! PtrCompact - ( (slotNo `shiftL` 32) .|. (fromIntegral txIx `shiftL` 16) - .|. fromIntegral certIx - ) - -viewPtr :: Ptr -> (SlotNo, TxIx, CertIx) -viewPtr (PtrCompact ptr) = - (SlotNo (ptr `shiftR` 32), TxIx (fromIntegral (ptr `shiftR` 16)), CertIx (fromIntegral ptr)) --} - -ptrSlotNo :: Ptr -> SlotNo -ptrSlotNo (Ptr sn _ _) = sn - -ptrTxIx :: Ptr -> TxIx -ptrTxIx (Ptr _ txIx _) = txIx - -ptrCertIx :: Ptr -> CertIx -ptrCertIx (Ptr _ _ cIx) = cIx - --- NOTE: Credential serialization is unversioned, because it is needed for node-to-client --- communication. It would be ok to change it in the future, but that will require change --- in consensus -instance (Typeable kr, Crypto c) => EncCBOR (Credential kr c) - -instance (Typeable kr, Crypto c) => DecCBOR (Credential kr c) - -instance (Typeable kr, Crypto c) => ToCBOR (Credential kr c) where - toCBOR = \case - KeyHashObj kh -> Plain.encodeListLen 2 <> toCBOR (0 :: Word8) <> toCBOR kh - ScriptHashObj hs -> Plain.encodeListLen 2 <> toCBOR (1 :: Word8) <> toCBOR hs - -instance (Typeable kr, Crypto c) => FromCBOR (Credential kr c) where - fromCBOR = Plain.decodeRecordSum "Credential" $ - \case - 0 -> do - x <- fromCBOR - pure (2, KeyHashObj x) - 1 -> do - x <- fromCBOR - pure (2, ScriptHashObj x) - k -> Plain.invalidKey k - -instance EncCBORGroup Ptr where - encCBORGroup (Ptr sl txIx certIx) = - encCBOR sl - <> encCBOR txIx - <> encCBOR certIx - encodedGroupSizeExpr size_ proxy = - encodedSizeExpr size_ (ptrSlotNo <$> proxy) - + encodedSizeExpr size_ (ptrTxIx <$> proxy) - + encodedSizeExpr size_ (ptrCertIx <$> proxy) - - listLen _ = 3 - listLenBound _ = 3 - -instance DecCBORGroup Ptr where - decCBORGroup = do - slotNo <- decCBOR - txIx <- decCBOR - certIx <- decCBOR - pure $ Ptr slotNo txIx certIx - --- case mkPtr slotNo txIx certIx of --- Nothing -> fail $ "SlotNo is too far into the future: " ++ show slotNo --- Just ptr -> pure ptr - -newtype GenesisCredential c = GenesisCredential - { unGenesisCredential :: KeyHash 'Genesis c - } - deriving (Generic) - deriving newtype (ToCBOR, EncCBOR) - deriving (Show) via Quiet (GenesisCredential c) - -instance Ord (GenesisCredential c) where - compare (GenesisCredential gh) (GenesisCredential gh') = compare gh gh' - -instance Eq (GenesisCredential c) where - (==) (GenesisCredential gh) (GenesisCredential gh') = gh == gh' diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/Crypto.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/Crypto.hs deleted file mode 100644 index 53887b9f6ea..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/Crypto.hs +++ /dev/null @@ -1,45 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} - --- | Package all the crypto constraints into one place. -module Cardano.Ledger.Crypto where - -import Cardano.Crypto.DSIGN -import Cardano.Crypto.Hash -import Cardano.Crypto.KES -import Cardano.Crypto.VRF -import Cardano.Crypto.VRF.Praos -import Data.Kind (Type) -import Data.Typeable (Typeable) - -class - ( HashAlgorithm (HASH c) - , HashAlgorithm (ADDRHASH c) - , DSIGNAlgorithm (DSIGN c) - , KESAlgorithm (KES c) - , VRFAlgorithm (VRF c) - , ContextDSIGN (DSIGN c) ~ () - , ContextKES (KES c) ~ () - , ContextVRF (VRF c) ~ () - , Typeable c - ) => - Crypto c - where - type HASH c :: Type - type ADDRHASH c :: Type - type DSIGN c :: Type - type KES c :: Type - type VRF c :: Type - --- ================================ - --- | The same crypto used on the net -data StandardCrypto - -instance Crypto StandardCrypto where - type DSIGN StandardCrypto = Ed25519DSIGN - type KES StandardCrypto = Sum6KES Ed25519DSIGN Blake2b_256 - type VRF StandardCrypto = PraosVRF - type HASH StandardCrypto = Blake2b_256 - type ADDRHASH StandardCrypto = Blake2b_224 diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/DRep.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/DRep.hs deleted file mode 100644 index b6a51c1aaf8..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/DRep.hs +++ /dev/null @@ -1,175 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ViewPatterns #-} - -module Cardano.Ledger.DRep ( - DRep (DRepCredential, DRepAlwaysAbstain, DRepAlwaysNoConfidence), - DRepState (..), - drepExpiryL, - drepAnchorL, - drepDepositL, -) where - -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.Binary (DecCBOR (..), EncCBOR (..)) -import Cardano.Ledger.Binary.Coders (Decode (..), Encode (..), decode, encode, (!>), ( EncCBOR (DRep c) where - encCBOR (DRepKeyHash kh) = - encode $ - Sum DRepKeyHash 0 - !> To kh - encCBOR (DRepScriptHash sh) = - encode $ - Sum DRepScriptHash 1 - !> To sh - encCBOR DRepAlwaysAbstain = - encode $ - Sum DRepAlwaysAbstain 2 - encCBOR DRepAlwaysNoConfidence = - encode $ - Sum DRepAlwaysNoConfidence 3 - -instance Crypto c => DecCBOR (DRep c) where - decCBOR = decode $ - Summands "DRep" $ \case - 0 -> SumD DRepKeyHash SumD DRepScriptHash SumD DRepAlwaysAbstain - 3 -> SumD DRepAlwaysNoConfidence - k -> Invalid k - -dRepToCred :: DRep c -> Maybe (Credential 'DRepRole c) -dRepToCred (DRepKeyHash kh) = Just $ KeyHashObj kh -dRepToCred (DRepScriptHash sh) = Just $ ScriptHashObj sh -dRepToCred _ = Nothing - -instance Crypto c => ToJSON (DRep c) where - toJSON = String . dRepToText - -instance Crypto c => ToJSONKey (DRep c) where - toJSONKey = toJSONKeyText dRepToText - -dRepToText :: DRep c -> T.Text -dRepToText = \case - DRepAlwaysAbstain -> "drep-alwaysAbstain" - DRepAlwaysNoConfidence -> "drep-alwaysNoConfidence" - DRepCredential cred -> "drep-" <> credToText cred - -instance Crypto c => FromJSON (DRep c) where - parseJSON = withText "DRep" parseDRep - -instance Crypto c => FromJSONKey (DRep c) where - fromJSONKey = FromJSONKeyTextParser parseDRep - -parseDRep :: (MonadFail f, Crypto c) => T.Text -> f (DRep c) -parseDRep t = case T.span (/= '-') t of - ("drep", restWithDash) - | restWithDash == "-alwaysAbstain" -> pure DRepAlwaysAbstain - | restWithDash == "-alwaysNoConfidence" -> pure DRepAlwaysNoConfidence - | ("-", rest) <- T.span (== '-') restWithDash -> - DRepCredential <$> parseCredential rest - _ -> fail $ "Invalid DRep: " <> show t - -pattern DRepCredential :: Credential 'DRepRole c -> DRep c -pattern DRepCredential c <- (dRepToCred -> Just c) - where - DRepCredential c = case c of - ScriptHashObj sh -> DRepScriptHash sh - KeyHashObj kh -> DRepKeyHash kh - -{-# COMPLETE DRepCredential, DRepAlwaysAbstain, DRepAlwaysNoConfidence :: DRep #-} - -data DRepState c = DRepState - { drepExpiry :: !EpochNo - , drepAnchor :: !(StrictMaybe (Anchor c)) - , drepDeposit :: !Coin - } - deriving (Show, Eq, Ord, Generic) - -instance NoThunks (DRepState era) - -instance Crypto c => NFData (DRepState c) - -instance Crypto c => DecCBOR (DRepState c) where - decCBOR = - decode $ - RecD DRepState - EncCBOR (DRepState c) where - encCBOR DRepState {..} = - encode $ - Rec DRepState - !> To drepExpiry - !> To drepAnchor - !> To drepDeposit - -instance Crypto c => ToJSON (DRepState c) where - toJSON x@(DRepState _ _ _) = - let DRepState {..} = x - in toJSON $ - object $ - [ "expiry" .= toJSON drepExpiry - , "deposit" .= toJSON drepDeposit - ] - ++ ["anchor" .= toJSON anchor | SJust anchor <- [drepAnchor]] - -instance Crypto c => FromJSON (DRepState c) where - parseJSON = withObject "DRepState" $ \o -> - DRepState - <$> o .: "expiry" - <*> o .:? "anchor" .!= SNothing - <*> o .: "deposit" - -drepExpiryL :: Lens' (DRepState c) EpochNo -drepExpiryL = lens drepExpiry (\x y -> x {drepExpiry = y}) - -drepAnchorL :: Lens' (DRepState c) (StrictMaybe (Anchor c)) -drepAnchorL = lens drepAnchor (\x y -> x {drepAnchor = y}) - -drepDepositL :: Lens' (DRepState c) Coin -drepDepositL = lens drepDeposit (\x y -> x {drepDeposit = y}) diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/EpochBoundary.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/EpochBoundary.hs deleted file mode 100644 index dea57d4febc..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/EpochBoundary.hs +++ /dev/null @@ -1,345 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE DuplicateRecordFields #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} - --- | --- Module : EpochBoundary --- Description : Functions and definitions for rules at epoch boundary. --- --- This modules implements the necessary functions for the changes that can happen at epoch boundaries. -module Cardano.Ledger.EpochBoundary ( - Stake (..), - sumAllStake, - sumStakePerPool, - SnapShot (..), - SnapShots (..), - emptySnapShot, - emptySnapShots, - poolStake, - maxPool, - maxPool', - calculatePoolDistr, - calculatePoolDistr', - calculatePoolStake, - ssStakeMarkL, - ssStakeMarkPoolDistrL, - ssStakeSetL, - ssStakeGoL, - ssFeeL, - ssStakeL, - ssStakeDistrL, - ssDelegationsL, - ssPoolParamsL, -) -where - -import Cardano.Ledger.BaseTypes (BoundedRational (..), NonNegativeInterval) -import Cardano.Ledger.Binary ( - DecCBOR (decCBOR), - DecShareCBOR (..), - EncCBOR (encCBOR), - Interns, - decNoShareCBOR, - decSharePlusLensCBOR, - decodeRecordNamedT, - encodeListLen, - toMemptyLens, - ) -import Cardano.Ledger.Coin ( - Coin (..), - CompactForm (..), - coinToRational, - rationalToCoinViaFloor, - ) -import Cardano.Ledger.Compactible -import Cardano.Ledger.Core -import Cardano.Ledger.Credential (Credential) -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Keys (KeyHash, KeyRole (..)) -import Cardano.Ledger.PoolDistr (IndividualPoolStake (..), PoolDistr (..)) -import Cardano.Ledger.PoolParams (PoolParams (ppVrf)) -import Cardano.Ledger.Val ((<+>)) -import Control.DeepSeq (NFData) -import Control.Monad.Trans (lift) -import Data.Aeson (KeyValue, ToJSON (..), object, pairs, (.=)) -import Data.Default.Class (Default, def) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Ratio ((%)) -import Data.Typeable -import Data.VMap as VMap -import GHC.Generics (Generic) -import GHC.Word (Word64) -import Lens.Micro (Lens', lens, (^.), _1, _2) -import NoThunks.Class (AllowThunksIn (..), NoThunks (..)) -import Numeric.Natural (Natural) - --- | Type of stake as map from hash key to coins associated. -newtype Stake c = Stake - { unStake :: VMap VB VP (Credential 'Staking c) (CompactForm Coin) - } - deriving (Show, Eq, NFData, Generic, ToJSON) - -deriving newtype instance Typeable c => NoThunks (Stake c) - -deriving newtype instance - Crypto c => EncCBOR (Stake c) - -instance Crypto c => DecShareCBOR (Stake c) where - type Share (Stake c) = Share (VMap VB VP (Credential 'Staking c) (CompactForm Coin)) - getShare = getShare . unStake - decShareCBOR = fmap Stake . decShareCBOR - -sumAllStake :: Stake c -> Coin -sumAllStake = fromCompact . CompactCoin . VMap.foldl (\acc (CompactCoin c) -> acc + c) 0 . unStake -{-# INLINE sumAllStake #-} - --- | Get stake of one pool -poolStake :: - KeyHash 'StakePool c -> - VMap VB VB (Credential 'Staking c) (KeyHash 'StakePool c) -> - Stake c -> - Stake c -poolStake hk delegs (Stake stake) = - -- Stake $ (eval (dom (delegs ▷ setSingleton hk) ◁ stake)) - Stake $ VMap.filter (\cred _ -> VMap.lookup cred delegs == Just hk) stake - -sumStakePerPool :: - VMap VB VB (Credential 'Staking c) (KeyHash 'StakePool c) -> - Stake c -> - Map (KeyHash 'StakePool c) Coin -sumStakePerPool delegs (Stake stake) = VMap.foldlWithKey accum Map.empty stake - where - accum !acc cred compactCoin = - case VMap.lookup cred delegs of - Nothing -> acc - Just kh -> Map.insertWith (<+>) kh (fromCompact compactCoin) acc - --- | Calculate maximal pool reward -maxPool' :: - NonNegativeInterval -> - Natural -> - Coin -> - Rational -> - Rational -> - Coin -maxPool' a0 nOpt r sigma pR = rationalToCoinViaFloor $ factor1 * factor2 - where - z0 = 1 % fromIntegral nOpt - sigma' = min sigma z0 - p' = min pR z0 - factor1 = coinToRational r / (1 + unboundRational a0) - factor2 = sigma' + p' * unboundRational a0 * factor3 - factor3 = (sigma' - p' * factor4) / z0 - factor4 = (z0 - sigma') / z0 - --- | Version of `maxPool'` that extracts `ppA0L` and `ppNOptL` from a `PParams` -maxPool :: - EraPParams era => - PParams era -> - Coin -> - Rational -> - Rational -> - Coin -maxPool pp r sigma pR = maxPool' a0 nOpt r sigma pR - where - a0 = pp ^. ppA0L - nOpt = pp ^. ppNOptL - --- | Snapshot of the stake distribution. -data SnapShot c = SnapShot - { ssStake :: !(Stake c) - , ssDelegations :: !(VMap VB VB (Credential 'Staking c) (KeyHash 'StakePool c)) - , ssPoolParams :: !(VMap VB VB (KeyHash 'StakePool c) (PoolParams c)) - } - deriving (Show, Eq, Generic) - -instance Typeable c => NoThunks (SnapShot c) - -instance NFData (SnapShot c) - -instance - Crypto c => - EncCBOR (SnapShot c) - where - encCBOR - SnapShot - { ssStake = s - , ssDelegations = d - , ssPoolParams = p - } = - encodeListLen 3 - <> encCBOR s - <> encCBOR d - <> encCBOR p - -instance Crypto c => DecShareCBOR (SnapShot c) where - type - Share (SnapShot c) = - (Interns (Credential 'Staking c), Interns (KeyHash 'StakePool c)) - decSharePlusCBOR = decodeRecordNamedT "SnapShot" (const 3) $ do - ssStake <- decSharePlusLensCBOR _1 - ssDelegations <- decSharePlusCBOR - ssPoolParams <- decSharePlusLensCBOR (toMemptyLens _1 _2) - pure SnapShot {ssStake, ssDelegations, ssPoolParams} - -instance Crypto c => ToJSON (SnapShot c) where - toJSON = object . toSnapShotPair - toEncoding = pairs . mconcat . toSnapShotPair - -toSnapShotPair :: (KeyValue e a, Crypto c) => SnapShot c -> [a] -toSnapShotPair ss@(SnapShot _ _ _) = - let SnapShot {..} = ss - in [ "stake" .= ssStake - , "delegations" .= ssDelegations - , "poolParams" .= ssPoolParams - ] - --- | Snapshots of the stake distribution. --- --- Note that ssStakeMark and ssStakeMarkPoolDistr are lazy on --- purpose since we only want to force the thunk after one stability window --- when we know that they are stable (so that we do not compute them if we do not have to). --- See more info in the [Optimize TICKF ADR](https://github.com/intersectmbo/cardano-ledger/blob/master/docs/adr/2022-12-12_007-optimize-ledger-view.md) -data SnapShots c = SnapShots - { ssStakeMark :: SnapShot c -- Lazy on purpose - , ssStakeMarkPoolDistr :: PoolDistr c -- Lazy on purpose - , ssStakeSet :: !(SnapShot c) - , ssStakeGo :: !(SnapShot c) - , ssFee :: !Coin - } - deriving (Show, Eq, Generic) - -- TODO: switch `AllowThunksIn` to `OnlyCheckWhnfNamed` - deriving (NoThunks) via AllowThunksIn '["ssStakeMark", "ssStakeMarkPoolDistr"] (SnapShots c) - -instance NFData (SnapShots c) - -instance - Crypto c => - EncCBOR (SnapShots c) - where - encCBOR (SnapShots {ssStakeMark, ssStakeSet, ssStakeGo, ssFee}) = - encodeListLen 4 - <> encCBOR ssStakeMark - -- We intentionaly do not serialize the redundant ssStakeMarkPoolDistr - <> encCBOR ssStakeSet - <> encCBOR ssStakeGo - <> encCBOR ssFee - -instance Crypto c => DecCBOR (SnapShots c) where - decCBOR = decNoShareCBOR - -instance Crypto c => DecShareCBOR (SnapShots c) where - type Share (SnapShots c) = Share (SnapShot c) - decSharePlusCBOR = decodeRecordNamedT "SnapShots" (const 4) $ do - !ssStakeMark <- decSharePlusCBOR - ssStakeSet <- decSharePlusCBOR - ssStakeGo <- decSharePlusCBOR - ssFee <- lift decCBOR - let ssStakeMarkPoolDistr = calculatePoolDistr ssStakeMark - pure SnapShots {ssStakeMark, ssStakeMarkPoolDistr, ssStakeSet, ssStakeGo, ssFee} - -instance Default (SnapShots c) where - def = emptySnapShots - -instance Crypto c => ToJSON (SnapShots c) where - toJSON = object . toSnapShotsPair - toEncoding = pairs . mconcat . toSnapShotsPair - -toSnapShotsPair :: (KeyValue e a, Crypto crypto) => SnapShots crypto -> [a] -toSnapShotsPair ss@(SnapShots !_ _ _ _ _) = - -- ssStakeMarkPoolDistr is omitted on purpose - let SnapShots {ssStakeMark, ssStakeSet, ssStakeGo, ssFee} = ss - in [ "pstakeMark" .= ssStakeMark - , "pstakeSet" .= ssStakeSet - , "pstakeGo" .= ssStakeGo - , "feeSS" .= ssFee - ] - -emptySnapShot :: SnapShot c -emptySnapShot = SnapShot (Stake VMap.empty) VMap.empty VMap.empty - -emptySnapShots :: SnapShots c -emptySnapShots = - SnapShots emptySnapShot (calculatePoolDistr emptySnapShot) emptySnapShot emptySnapShot (Coin 0) - --- ======================================= - --- | Sum up the Coin (as CompactForm Coin = Word64) for each StakePool -calculatePoolStake :: - (KeyHash 'StakePool c -> Bool) -> - VMap VB VB (Credential 'Staking c) (KeyHash 'StakePool c) -> - Stake c -> - Map.Map (KeyHash 'StakePool c) Word64 -calculatePoolStake includeHash delegs stake = VMap.foldlWithKey accum Map.empty delegs - where - accum ans cred keyHash = - if includeHash keyHash - then case VMap.lookup cred (unStake stake) of - Nothing -> ans - Just (CompactCoin c) -> Map.insertWith (+) keyHash c ans - else ans - -calculatePoolDistr :: SnapShot c -> PoolDistr c -calculatePoolDistr = calculatePoolDistr' (const True) - -calculatePoolDistr' :: forall c. (KeyHash 'StakePool c -> Bool) -> SnapShot c -> PoolDistr c -calculatePoolDistr' includeHash (SnapShot stake delegs poolParams) = - let Coin total = sumAllStake stake - -- total could be zero (in particular when shrinking) - nonZeroTotal :: Integer - nonZeroTotal = if total == 0 then 1 else total - poolStakeMap :: Map.Map (KeyHash 'StakePool c) Word64 - poolStakeMap = calculatePoolStake includeHash delegs stake - in PoolDistr $ - Map.intersectionWith - (\word64 poolparam -> IndividualPoolStake (toInteger word64 % nonZeroTotal) (ppVrf poolparam)) - poolStakeMap - (VMap.toMap poolParams) - --- ====================================================== --- Lenses --- =============================================== - --- SnapShots - -ssStakeMarkL :: Lens' (SnapShots c) (SnapShot c) -ssStakeMarkL = lens ssStakeMark (\ds u -> ds {ssStakeMark = u}) - -ssStakeMarkPoolDistrL :: Lens' (SnapShots c) (PoolDistr c) -ssStakeMarkPoolDistrL = lens ssStakeMarkPoolDistr (\ds u -> ds {ssStakeMarkPoolDistr = u}) - -ssStakeSetL :: Lens' (SnapShots c) (SnapShot c) -ssStakeSetL = lens ssStakeSet (\ds u -> ds {ssStakeSet = u}) - -ssStakeGoL :: Lens' (SnapShots c) (SnapShot c) -ssStakeGoL = lens ssStakeGo (\ds u -> ds {ssStakeGo = u}) - -ssFeeL :: Lens' (SnapShots c) Coin -ssFeeL = lens ssFee (\ds u -> ds {ssFee = u}) - --- SnapShot - -ssStakeL :: Lens' (SnapShot c) (Stake c) -ssStakeL = lens ssStake (\ds u -> ds {ssStake = u}) - -ssStakeDistrL :: Lens' (SnapShot c) (VMap VB VP (Credential 'Staking c) (CompactForm Coin)) -ssStakeDistrL = lens (unStake . ssStake) (\ds u -> ds {ssStake = Stake u}) - -ssDelegationsL :: Lens' (SnapShot c) (VMap VB VB (Credential 'Staking c) (KeyHash 'StakePool c)) -ssDelegationsL = lens ssDelegations (\ds u -> ds {ssDelegations = u}) - -ssPoolParamsL :: Lens' (SnapShot c) (VMap VB VB (KeyHash 'StakePool c) (PoolParams c)) -ssPoolParamsL = lens ssPoolParams (\ds u -> ds {ssPoolParams = u}) diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/Era.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/Era.hs deleted file mode 100644 index 72dacde3232..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/Era.hs +++ /dev/null @@ -1,61 +0,0 @@ --- | Support for multiple (Shelley-based) eras in the ledger. -module Cardano.Ledger.Era ( - Era (..), - getTxOutAddr, - getTxOutCompactAddr, - getTxOutEitherAddr, - getTxOutBootstrapAddress, - getAllTxInputs, - TranslationContext, - TranslateEra (..), - translateEra', - translateEraMaybe, - -- $segWit - EraSegWits (..), -) -where - -import Cardano.Ledger.Address (Addr, BootstrapAddress, CompactAddr) -import Cardano.Ledger.Core -import Cardano.Ledger.TxIn (TxIn) -import Data.Set (Set) -import Lens.Micro - --- | The validity of any individual block depends only on a subset --- of the UTxO stored in the ledger state. The consensus layer makes --- use of this fact, and uses the function below to to retrieve the --- needed UTxO from disk and present only those to the ledger. --- It is therefore neccessary that this function account for all the --- different types of inputs inside a transaction. -getAllTxInputs :: EraTxBody era => TxBody era -> Set (TxIn (EraCrypto era)) -getAllTxInputs txBody = txBody ^. allInputsTxBodyF - -getTxOutEitherAddr :: - EraTxOut era => - TxOut era -> - Either (Addr (EraCrypto era)) (CompactAddr (EraCrypto era)) -getTxOutEitherAddr txOut = txOut ^. addrEitherTxOutL -{-# DEPRECATED getTxOutEitherAddr "In favor of `addrEitherTxOutL`" #-} - -getTxOutAddr :: - EraTxOut era => - TxOut era -> - Addr (EraCrypto era) -getTxOutAddr txOut = txOut ^. addrTxOutL -{-# DEPRECATED getTxOutAddr "In favor of `addrTxOutL`" #-} - -getTxOutCompactAddr :: - EraTxOut era => - TxOut era -> - CompactAddr (EraCrypto era) -getTxOutCompactAddr txOut = txOut ^. compactAddrTxOutL -{-# DEPRECATED getTxOutCompactAddr "In favor of `compactAddrTxOutL`" #-} - --- | Get the Bootsrap address from the TxOut. Returns `Nothing` if it is a --- Shelley address or newer -getTxOutBootstrapAddress :: - EraTxOut era => - TxOut era -> - Maybe (BootstrapAddress (EraCrypto era)) -getTxOutBootstrapAddress txOut = txOut ^. bootAddrTxOutF -{-# DEPRECATED getTxOutBootstrapAddress "In favor of `bootAddrTxOutF`" #-} diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/HKD.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/HKD.hs deleted file mode 100644 index e8b68200570..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/HKD.hs +++ /dev/null @@ -1,64 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} - --- | This module contains just the type of protocol parameters. -module Cardano.Ledger.HKD ( - HKD, - HKDNoUpdate, - HKDFunctor (..), - NoUpdate (..), -) -where - -import Control.DeepSeq (NFData) -import Data.Functor.Identity (Identity) -import Data.Maybe.Strict (StrictMaybe (..)) -import GHC.Generics (Generic) -import NoThunks.Class (NoThunks) - --- ==================================================================== - --- | Higher Kinded Data -type family HKD f a where - HKD Identity a = a - HKD f a = f a - -data NoUpdate a = NoUpdate - deriving (Eq, Ord, Show, Generic) - -instance NoThunks (NoUpdate a) - -instance NFData (NoUpdate a) - -type family HKDNoUpdate f a where - HKDNoUpdate Identity a = a - HKDNoUpdate StrictMaybe a = NoUpdate a - HKDNoUpdate Maybe a = NoUpdate a - HKDNoUpdate f a = f a - -class HKDFunctor f where - hkdMap :: proxy f -> (a -> b) -> HKD f a -> HKD f b - toNoUpdate :: HKD f a -> HKDNoUpdate f a - fromNoUpdate :: HKDNoUpdate f a -> HKD f a - -instance HKDFunctor Identity where - hkdMap _ f = f - toNoUpdate = id - fromNoUpdate = id - -instance HKDFunctor Maybe where - hkdMap _ = fmap - toNoUpdate _ = NoUpdate - fromNoUpdate _ = Nothing - -instance HKDFunctor StrictMaybe where - hkdMap _ = fmap - toNoUpdate _ = NoUpdate - fromNoUpdate _ = SNothing diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/Hashes.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/Hashes.hs deleted file mode 100644 index 6a4e9d84d3f..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/Hashes.hs +++ /dev/null @@ -1,91 +0,0 @@ -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE StandaloneDeriving #-} - --- | Various identifiers in the ledger are hashes of particular structures. --- While the structures may change from era to era, the hash will remain the --- same, and we can refer to the hash of, say, a transaction, without knowing --- the actual transaction type. As such, we define a number of these hashes --- here. -module Cardano.Ledger.Hashes ( - -- * Era-independent hash type identifiers. - -- $eraIndep - EraIndependentTxBody, - EraIndependentBlockHeader, - EraIndependentBlockBody, - EraIndependentMetadata, - EraIndependentScript, - EraIndependentData, - EraIndependentScriptData, - EraIndependentTxAuxData, - EraIndependentPParamView, - EraIndependentScriptIntegrity, - - -- * Script hashes - ScriptHash (..), - DataHash, -) -where - -import qualified Cardano.Crypto.Hash as Hash -import Cardano.Ledger.Binary (DecCBOR, EncCBOR) -import Cardano.Ledger.Binary.Plain (FromCBOR, ToCBOR) -import Cardano.Ledger.Crypto (ADDRHASH, Crypto) -import Cardano.Ledger.SafeHash (SafeHash) -import Control.DeepSeq (NFData) -import Data.Aeson (FromJSON, FromJSONKey, ToJSON, ToJSONKey) -import GHC.Generics (Generic) -import NoThunks.Class (NoThunks (..)) - --- $eraIndep --- --- Hashes carry around a phantom type parameter to identify the sort of thing --- they are hashing. This is useful to allow us to distinguish, say, a place --- where we expect the hash for a block from the hash for a script. However, --- the exact structure that makes up a "block" will differ from era to era. We --- still want to share the same namespace for the identifiers. Consequently we --- define some era-independent indices here. - -data EraIndependentTxBody - -data EraIndependentBlockHeader - -data EraIndependentBlockBody - -data EraIndependentMetadata - -data EraIndependentTxAuxData - -data EraIndependentScript - -data EraIndependentData - -type DataHash c = SafeHash c EraIndependentData - -data EraIndependentScriptData - -data EraIndependentPParamView - -data EraIndependentScriptIntegrity - -newtype ScriptHash c - = ScriptHash (Hash.Hash (ADDRHASH c) EraIndependentScript) - deriving (Show, Eq, Ord, Generic) - deriving newtype (NFData, NoThunks) - -deriving newtype instance Crypto c => ToCBOR (ScriptHash c) - -deriving newtype instance Crypto c => FromCBOR (ScriptHash c) - -deriving newtype instance Crypto c => EncCBOR (ScriptHash c) - -deriving newtype instance Crypto c => DecCBOR (ScriptHash c) - -deriving newtype instance Crypto c => ToJSON (ScriptHash c) - -deriving newtype instance Crypto c => FromJSON (ScriptHash c) - -deriving newtype instance Crypto c => ToJSONKey (ScriptHash c) - -deriving newtype instance Crypto c => FromJSONKey (ScriptHash c) diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/Keys.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/Keys.hs deleted file mode 100644 index 4f3d237795b..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/Keys.hs +++ /dev/null @@ -1,10 +0,0 @@ -module Cardano.Ledger.Keys ( - module Cardano.Ledger.Keys.Internal, - module Cardano.Ledger.Keys.WitVKey, - module Cardano.Ledger.Keys.Bootstrap, -) -where - -import Cardano.Ledger.Keys.Bootstrap -import Cardano.Ledger.Keys.Internal -import Cardano.Ledger.Keys.WitVKey diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/Keys/Bootstrap.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/Keys/Bootstrap.hs deleted file mode 100644 index 72edb3ada0b..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/Keys/Bootstrap.hs +++ /dev/null @@ -1,243 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} - -module Cardano.Ledger.Keys.Bootstrap ( - BootstrapWitness ( - BootstrapWitness, - bwKey, - bwSig, - bwChainCode, - bwAttributes - ), - ChainCode (..), - bootstrapWitKeyHash, - unpackByronVKey, - makeBootstrapWitness, - verifyBootstrapWit, - eqBootstrapWitnessRaw, -) -where - -import qualified Cardano.Chain.Common as Byron -import qualified Cardano.Crypto.DSIGN as DSIGN -import qualified Cardano.Crypto.Hash as Hash -import qualified Cardano.Crypto.Signing as Byron -import qualified Cardano.Crypto.Wallet as WC -import Cardano.Ledger.Binary ( - Annotator, - DecCBOR (..), - EncCBOR (..), - annotatorSlice, - byronProtVer, - decodeRecordNamed, - encodeListLen, - serialize, - serialize', - ) -import Cardano.Ledger.Binary.Crypto ( - decodeSignedDSIGN, - encodeSignedDSIGN, - ) -import qualified Cardano.Ledger.Binary.Plain as Plain -import Cardano.Ledger.Crypto (Crypto (ADDRHASH, DSIGN)) -import Cardano.Ledger.Hashes (EraIndependentTxBody) -import Cardano.Ledger.Keys.Internal ( - Hash, - KeyHash (..), - KeyRole (..), - SignedDSIGN, - VKey (..), - verifySignedDSIGN, - ) -import Cardano.Ledger.MemoBytes (EqRaw (..)) -import Control.DeepSeq (NFData) -import Data.ByteString (ByteString) -import qualified Data.ByteString.Lazy as LBS -import Data.Coerce (coerce) -import Data.Maybe (fromMaybe) -import Data.Ord (comparing) -import Data.Proxy (Proxy (..)) -import GHC.Generics (Generic) -import NoThunks.Class (AllowThunksIn (..), NoThunks (..)) -import Quiet - -newtype ChainCode = ChainCode {unChainCode :: ByteString} - deriving (Eq, Generic) - deriving (Show) via Quiet ChainCode - deriving newtype (NoThunks, EncCBOR, DecCBOR, NFData) - -data BootstrapWitness c = BootstrapWitness' - { bwKey' :: !(VKey 'Witness c) - , bwSig' :: !(SignedDSIGN c (Hash c EraIndependentTxBody)) - , bwChainCode' :: !ChainCode - , bwAttributes' :: !ByteString - , bwBytes :: LBS.ByteString - } - deriving (Generic) - -deriving instance Crypto c => Show (BootstrapWitness c) - -deriving instance Crypto c => Eq (BootstrapWitness c) - -instance - ( Crypto era - , NFData (DSIGN.VerKeyDSIGN (DSIGN era)) - , NFData (DSIGN.SigDSIGN (DSIGN era)) - ) => - NFData (BootstrapWitness era) - -deriving via - (AllowThunksIn '["bwBytes"] (BootstrapWitness c)) - instance - Crypto c => NoThunks (BootstrapWitness c) - -pattern BootstrapWitness :: - Crypto c => - VKey 'Witness c -> - SignedDSIGN c (Hash c EraIndependentTxBody) -> - ChainCode -> - ByteString -> - BootstrapWitness c -pattern BootstrapWitness {bwKey, bwSig, bwChainCode, bwAttributes} <- - BootstrapWitness' bwKey bwSig bwChainCode bwAttributes _ - where - BootstrapWitness key sig cc attributes = - let bytes = - serialize byronProtVer $ - encodeListLen 4 - <> encCBOR key - <> encodeSignedDSIGN sig - <> encCBOR cc - <> encCBOR attributes - in BootstrapWitness' key sig cc attributes bytes - -{-# COMPLETE BootstrapWitness #-} - -instance Crypto c => Ord (BootstrapWitness c) where - compare = comparing bootstrapWitKeyHash - -instance Crypto c => Plain.ToCBOR (BootstrapWitness c) where - toCBOR = Plain.encodePreEncoded . LBS.toStrict . bwBytes - --- | Encodes memoized bytes created upon construction. -instance Crypto c => EncCBOR (BootstrapWitness c) - -instance Crypto c => DecCBOR (Annotator (BootstrapWitness c)) where - decCBOR = annotatorSlice $ - decodeRecordNamed "BootstrapWitness" (const 4) $ - do - key <- decCBOR - sig <- decodeSignedDSIGN - cc <- decCBOR - attributes <- decCBOR - pure . pure $ BootstrapWitness' key sig cc attributes - --- | Rebuild the addrRoot of the corresponding address. -bootstrapWitKeyHash :: - forall c. - Crypto c => - BootstrapWitness c -> - KeyHash 'Witness c -bootstrapWitKeyHash (BootstrapWitness (VKey key) _ (ChainCode cc) attributes) = - KeyHash . hash_crypto . hash_SHA3_256 $ bytes - where - -- The payload hashed to create an addrRoot consists of the following: - -- 1: a token indicating a list of length 3 - -- 2: the addrType - -- 3: the key - -- 3a: token indicating list length 2 - -- 3b: token indicating address type (which will be a vkey address) - -- 3c: a token indicating a bytestring of length 64 - -- 3d: public key bytes (32) - -- 3e: chain code bytes (32) - -- 4: the addrAttributes - -- the prefix is constant, and hard coded here: - prefix :: ByteString - prefix = "\131\00\130\00\88\64" - -- Here we are reserializing a key which we have previously deserialized. - -- This is normally naughty. However, this is a blob of bytes -- serializing - -- it amounts to wrapping the underlying byte array in a ByteString - -- constructor. - keyBytes = DSIGN.rawSerialiseVerKeyDSIGN key - bytes = prefix <> keyBytes <> cc <> attributes - hash_SHA3_256 :: ByteString -> ByteString - hash_SHA3_256 = Hash.digest (Proxy :: Proxy Hash.SHA3_256) - hash_crypto :: ByteString -> Hash.Hash (ADDRHASH c) a - hash_crypto = Hash.castHash . Hash.hashWith @(ADDRHASH c) id - -unpackByronVKey :: - forall c. - DSIGN c ~ DSIGN.Ed25519DSIGN => - Byron.VerificationKey -> - (VKey 'Witness c, ChainCode) -unpackByronVKey - ( Byron.VerificationKey - (WC.XPub vkeyBytes (WC.ChainCode chainCodeBytes)) - ) = case DSIGN.rawDeserialiseVerKeyDSIGN vkeyBytes of - -- This maybe is produced by a check that the length of the public key - -- is the correct one. (32 bytes). If the XPub was constructed correctly, - -- we already know that it has this length. - Nothing -> error "unpackByronVKey: impossible!" - Just vk -> (VKey vk, ChainCode chainCodeBytes) - -verifyBootstrapWit :: - forall c. - ( Crypto c - , DSIGN.Signable (DSIGN c) (Hash c EraIndependentTxBody) - ) => - Hash c EraIndependentTxBody -> - BootstrapWitness c -> - Bool -verifyBootstrapWit txbodyHash witness = - verifySignedDSIGN - (bwKey witness) - txbodyHash - (coerce . bwSig $ witness) - -coerceSignature :: WC.XSignature -> DSIGN.SigDSIGN DSIGN.Ed25519DSIGN -coerceSignature sig = - fromMaybe (error "coerceSignature: impossible! signature size mismatch") $ - DSIGN.rawDeserialiseSigDSIGN (WC.unXSignature sig) - -makeBootstrapWitness :: - forall c. - ( DSIGN c ~ DSIGN.Ed25519DSIGN - , Crypto c - ) => - Hash c EraIndependentTxBody -> - Byron.SigningKey -> - Byron.Attributes Byron.AddrAttributes -> - BootstrapWitness c -makeBootstrapWitness txBodyHash byronSigningKey addrAttributes = - BootstrapWitness vk signature cc (serialize' byronProtVer addrAttributes) - where - (vk, cc) = unpackByronVKey $ Byron.toVerification byronSigningKey - signature = - DSIGN.SignedDSIGN . coerceSignature $ - WC.sign - (mempty :: ByteString) - (Byron.unSigningKey byronSigningKey) - (Hash.hashToBytes txBodyHash) - -eqBootstrapWitnessRaw :: Crypto c => BootstrapWitness c -> BootstrapWitness c -> Bool -eqBootstrapWitnessRaw bw1 bw2 = - bwKey bw1 == bwKey bw2 - && bwSig bw1 == bwSig bw2 - && bwChainCode bw1 == bwChainCode bw2 - && bwAttributes bw1 == bwAttributes bw2 - -instance Crypto c => EqRaw (BootstrapWitness c) where - eqRaw = eqBootstrapWitnessRaw diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/Keys/Internal.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/Keys/Internal.hs deleted file mode 100644 index 9d0916b50fb..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/Keys/Internal.hs +++ /dev/null @@ -1,369 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DefaultSignatures #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} - -module Cardano.Ledger.Keys.Internal ( - KeyRole (..), - HasKeyRole (..), - asWitness, - - -- * DSIGN - DSignable, - VKey (..), - KeyPair (..), -- deprecated - signedDSIGN, - verifySignedDSIGN, - hashSignature, - - -- * Key hashes - KeyHash (..), - hashKey, - - -- * Genesis delegations - GenDelegPair (..), - GenDelegs (..), - GKeys (..), - - -- * KES - KESignable, - - -- * VRF - VRFSignable, - - -- * Re-exports from cardano-crypto-class - decodeSignedDSIGN, - encodeSignedDSIGN, - Hash.hashWithSerialiser, - decodeSignedKES, - decodeVerKeyKES, - encodeSignedKES, - encodeVerKeyKES, - KES.signedKES, - KES.updateKES, - KES.verifyKES, - KES.verifySignedKES, - decodeVerKeyVRF, - encodeVerKeyVRF, - VRF.hashVerKeyVRF, - VRF.verifyVRF, - - -- * Re-parametrised types over `crypto` - CertifiedVRF, - Hash, - SignedDSIGN, - SignKeyDSIGN, - SignedKES, - SignKeyKES, - SignKeyVRF, - VerKeyKES, - VerKeyVRF, -) -where - -import qualified Cardano.Crypto.DSIGN as DSIGN -import qualified Cardano.Crypto.Hash as Hash -import qualified Cardano.Crypto.KES as KES -import qualified Cardano.Crypto.VRF as VRF -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - decodeRecordNamed, - encodeListLen, - ) -import Cardano.Ledger.Binary.Crypto -import Cardano.Ledger.Crypto (ADDRHASH, Crypto, DSIGN, HASH, KES, VRF) -import Cardano.Ledger.Orphans () -import Control.DeepSeq (NFData) -import Data.Aeson (FromJSON (..), FromJSONKey, ToJSON (..), ToJSONKey, (.:), (.=)) -import qualified Data.Aeson as Aeson -import Data.Coerce (Coercible, coerce) -import Data.Default.Class (Default (..)) -import Data.Kind (Type) -import Data.Map.Strict (Map) -import Data.Set (Set) -import Data.Typeable (Typeable) -import GHC.Generics (Generic) -import NoThunks.Class (NoThunks (..)) -import Quiet - --- | The role of a key. --- --- Note that a role is not _fixed_, nor is it unique. In particular, keys may --- variously be used as witnesses, and so in many case we will change the role --- of a key to the 'Witness' role. --- --- It is also perfectly allowable for a key to be used in many roles; there is --- nothing prohibiting somebody using the same underlying key as their payment --- and staking key, as well as the key for their stake pool. So these roles --- are more intended for two purposes: --- --- - To make explicit how we are using a key in the specifications --- - To provide a guide to downstream implementors, for whom the profusion of --- keys may be confusing. -data KeyRole - = Genesis - | GenesisDelegate - | Payment - | Staking - | StakePool - | BlockIssuer - | Witness - | DRepRole - | HotCommitteeRole - | ColdCommitteeRole - deriving (Show) - -class HasKeyRole (a :: KeyRole -> Type -> Type) where - -- | General coercion of key roles. - -- - -- The presence of this function is mostly to help the user realise where they - -- are converting key roles. - coerceKeyRole :: - a r c -> - a r' c - default coerceKeyRole :: - Coercible (a r c) (a r' c) => - a r c -> - a r' c - coerceKeyRole = coerce - --- | Use a key as a witness. --- --- This is the most common coercion between key roles, because most keys can --- be used as witnesses to some types of transaction. As such, we provide an --- explicit coercion for it. -asWitness :: - HasKeyRole a => - a r c -> - a 'Witness c -asWitness = coerceKeyRole - --------------------------------------------------------------------------------- --- Verification keys --------------------------------------------------------------------------------- - -type DSignable c = DSIGN.Signable (DSIGN c) - --- | Discriminated verification key --- --- We wrap the basic `VerKeyDSIGN` in order to add the key role. -newtype VKey (kd :: KeyRole) c = VKey {unVKey :: DSIGN.VerKeyDSIGN (DSIGN c)} - deriving (Generic) - -deriving via Quiet (VKey kd c) instance Crypto c => Show (VKey kd c) - -deriving instance Crypto c => Eq (VKey kd c) - -deriving instance - (Crypto c, NFData (DSIGN.VerKeyDSIGN (DSIGN c))) => - NFData (VKey kd c) - -deriving instance Crypto c => NoThunks (VKey kd c) - -instance HasKeyRole VKey - -instance (Crypto c, Typeable kd) => FromCBOR (VKey kd c) where - fromCBOR = VKey <$> DSIGN.decodeVerKeyDSIGN - {-# INLINE fromCBOR #-} - -instance (Crypto c, Typeable kd) => ToCBOR (VKey kd c) where - toCBOR = DSIGN.encodeVerKeyDSIGN . unVKey - -deriving instance (Crypto c, Typeable kd) => DecCBOR (VKey kd c) - -deriving instance (Crypto c, Typeable kd) => EncCBOR (VKey kd c) - -data KeyPair (kd :: KeyRole) c = KeyPair - { vKey :: !(VKey kd c) - , sKey :: !(DSIGN.SignKeyDSIGN (DSIGN c)) - } -{-# DEPRECATED KeyPair "Use `Test.Cardano.Ledger.Core.KeyPair (KeyPair)` instead" #-} - --- | Produce a digital signature -signedDSIGN :: - (Crypto c, DSIGN.Signable (DSIGN c) a) => - DSIGN.SignKeyDSIGN (DSIGN c) -> - a -> - SignedDSIGN c a -signedDSIGN key a = DSIGN.signedDSIGN () a key - --- | Verify a digital signature -verifySignedDSIGN :: - (Crypto c, DSIGN.Signable (DSIGN c) a) => - VKey kd c -> - a -> - SignedDSIGN c a -> - Bool -verifySignedDSIGN (VKey vk) vd sigDSIGN = - either (const False) (const True) $ DSIGN.verifySignedDSIGN () vk vd sigDSIGN -{-# INLINE verifySignedDSIGN #-} - --- | Hash a given signature -hashSignature :: - Crypto c => - SignedDSIGN c (Hash c h) -> - Hash c (SignedDSIGN c (Hash c h)) -hashSignature = Hash.hashWith (DSIGN.rawSerialiseSigDSIGN . coerce) -{-# INLINE hashSignature #-} - --------------------------------------------------------------------------------- --- Key Hashes --------------------------------------------------------------------------------- - --- | Discriminated hash of public Key -newtype KeyHash (discriminator :: KeyRole) c - = KeyHash (Hash.Hash (ADDRHASH c) (DSIGN.VerKeyDSIGN (DSIGN c))) - deriving (Show, Eq, Ord) - deriving newtype (NFData, NoThunks, Generic) - -deriving instance - (Crypto c, Typeable disc) => - ToCBOR (KeyHash disc c) - -deriving instance - (Crypto c, Typeable disc) => - FromCBOR (KeyHash disc c) - -deriving instance - (Crypto c, Typeable disc) => - EncCBOR (KeyHash disc c) - -deriving instance - (Crypto c, Typeable disc) => - DecCBOR (KeyHash disc c) - -deriving newtype instance - Crypto c => - ToJSONKey (KeyHash disc c) - -deriving newtype instance - Crypto c => - FromJSONKey (KeyHash disc c) - -deriving newtype instance - Crypto c => - ToJSON (KeyHash disc c) - -deriving newtype instance - Crypto c => - FromJSON (KeyHash disc c) - -instance Crypto b => Default (KeyHash a b) where - def = KeyHash def - -instance HasKeyRole KeyHash - --- | Hash a given public key -hashKey :: - Crypto c => - VKey kd c -> - KeyHash kd c -hashKey (VKey vk) = KeyHash $ DSIGN.hashVerKeyDSIGN vk - --------------------------------------------------------------------------------- --- KES --------------------------------------------------------------------------------- - -type KESignable c = KES.Signable (KES c) - --------------------------------------------------------------------------------- --- VRF --------------------------------------------------------------------------------- - -type VRFSignable c = VRF.Signable (VRF c) - --------------------------------------------------------------------------------- --- Genesis delegation --- --- TODO should this really live in here? --------------------------------------------------------------------------------- - -data GenDelegPair c = GenDelegPair - { genDelegKeyHash :: !(KeyHash 'GenesisDelegate c) - , genDelegVrfHash :: !(Hash c (VerKeyVRF c)) - } - deriving (Show, Eq, Ord, Generic) - -instance NoThunks (GenDelegPair c) - -instance NFData (GenDelegPair c) - -instance Crypto c => EncCBOR (GenDelegPair c) where - encCBOR (GenDelegPair hk vrf) = - encodeListLen 2 <> encCBOR hk <> encCBOR vrf - -instance Crypto c => DecCBOR (GenDelegPair c) where - decCBOR = do - decodeRecordNamed - "GenDelegPair" - (const 2) - (GenDelegPair <$> decCBOR <*> decCBOR) - {-# INLINE decCBOR #-} - -instance Crypto c => ToJSON (GenDelegPair c) where - toJSON (GenDelegPair d v) = - Aeson.object - [ "delegate" .= d - , "vrf" .= v - ] - -instance Crypto c => FromJSON (GenDelegPair c) where - parseJSON = - Aeson.withObject "GenDelegPair" $ \obj -> - GenDelegPair - <$> obj .: "delegate" - <*> obj .: "vrf" - -newtype GenDelegs c = GenDelegs - { unGenDelegs :: Map (KeyHash 'Genesis c) (GenDelegPair c) - } - deriving (Eq, EncCBOR, DecCBOR, NoThunks, NFData, Generic, FromJSON) - deriving (Show) via Quiet (GenDelegs c) - -deriving instance Crypto c => ToJSON (GenDelegs c) - -newtype GKeys c = GKeys {unGKeys :: Set (VKey 'Genesis c)} - deriving (Eq, NoThunks, Generic) - deriving (Show) via Quiet (GKeys c) - --------------------------------------------------------------------------------- --- crypto-parametrised types --- --- Within `cardano-ledger`, we parametrise everything on our `crypto` type --- "package". However, in `cardano-crypto-class`, things are parametrised on the --- original algorithm. In order to make using types from that module easier, we --- provide some type aliases which unwrap the crypto parameters. --------------------------------------------------------------------------------- - -type Hash c = Hash.Hash (HASH c) - -type SignedDSIGN c = DSIGN.SignedDSIGN (DSIGN c) - -type SignKeyDSIGN c = DSIGN.SignKeyDSIGN (DSIGN c) - -type SignedKES c = KES.SignedKES (KES c) - -type SignKeyKES c = KES.SignKeyKES (KES c) - -type VerKeyKES c = KES.VerKeyKES (KES c) - -type CertifiedVRF c = VRF.CertifiedVRF (VRF c) - -type SignKeyVRF c = VRF.SignKeyVRF (VRF c) - -type VerKeyVRF c = VRF.VerKeyVRF (VRF c) diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/Keys/WitVKey.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/Keys/WitVKey.hs deleted file mode 100644 index f5cc0d5e605..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/Keys/WitVKey.hs +++ /dev/null @@ -1,137 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} - -module Cardano.Ledger.Keys.WitVKey ( - WitVKey (WitVKey), - witVKeyBytes, - witVKeyHash, - eqWitVKeyRaw, -) -where - -import Cardano.Crypto.DSIGN.Class ( - decodeSignedDSIGN, - encodeSignedDSIGN, - ) -import Cardano.Ledger.Binary ( - Annotator (..), - DecCBOR (..), - EncCBOR (..), - ToCBOR (..), - annotatorSlice, - fromPlainDecoder, - ) -import qualified Cardano.Ledger.Binary.Plain as Plain -import Cardano.Ledger.Crypto -import Cardano.Ledger.Hashes (EraIndependentTxBody) -import Cardano.Ledger.Keys.Internal ( - Hash, - KeyHash (..), - KeyRole (..), - SignedDSIGN, - VKey, - asWitness, - hashKey, - hashSignature, - ) -import Cardano.Ledger.MemoBytes (EqRaw (..)) -import Control.DeepSeq -import qualified Data.ByteString.Lazy as BSL -import Data.Ord (comparing) -import Data.Typeable (Typeable) -import GHC.Generics (Generic) -import NoThunks.Class (AllowThunksIn (..), NoThunks (..)) - --- | Proof/Witness that a transaction is authorized by the given key holder. -data WitVKey kr c = WitVKeyInternal - { wvkKey :: !(VKey kr c) - , wvkSig :: !(SignedDSIGN c (Hash c EraIndependentTxBody)) - , wvkKeyHash :: KeyHash 'Witness c - -- ^ Hash of the witness vkey. We store this here to avoid repeated hashing - -- when used in ordering. - , wvkBytes :: BSL.ByteString - } - deriving (Generic) - -deriving instance Crypto c => Show (WitVKey kr c) - -deriving instance Crypto c => Eq (WitVKey kr c) - -deriving via - AllowThunksIn '["wvkBytes", "wvkKeyHash"] (WitVKey kr c) - instance - (Crypto c, Typeable kr) => NoThunks (WitVKey kr c) - -instance NFData (WitVKey kr c) where - rnf WitVKeyInternal {wvkKeyHash, wvkBytes} = wvkKeyHash `deepseq` rnf wvkBytes - -instance (Typeable kr, Crypto c) => Ord (WitVKey kr c) where - compare x y = - -- It is advised against comparison on keys and signatures directly, - -- therefore we use hashes of verification keys and signatures for - -- implementing this Ord instance. Note that we do not need to memoize the - -- hash of a signature, like it is done with the hash of a key, because Ord - -- instance is only used for Sets of WitVKeys and it would be a mistake to - -- have two WitVKeys in a same Set for different transactions. Therefore - -- comparison on signatures is unlikely to happen and is only needed for - -- compliance with Ord laws. - comparing wvkKeyHash x y <> comparing (hashSignature @c . wvkSig) x y - -instance (Typeable kr, Crypto c) => Plain.ToCBOR (WitVKey kr c) where - toCBOR = Plain.encodePreEncoded . BSL.toStrict . wvkBytes - --- | Encodes memoized bytes created upon construction. -instance (Typeable kr, Crypto c) => EncCBOR (WitVKey kr c) - -instance (Typeable kr, Crypto c) => DecCBOR (Annotator (WitVKey kr c)) where - decCBOR = - annotatorSlice $ - fromPlainDecoder $ - Plain.decodeRecordNamed "WitVKey" (const 2) $ - fmap pure $ - mkWitVKey <$> Plain.fromCBOR <*> decodeSignedDSIGN - where - mkWitVKey k sig = WitVKeyInternal k sig (asWitness $ hashKey k) - {-# INLINE mkWitVKey #-} - {-# INLINE decCBOR #-} - -instance (Crypto c, Typeable kr) => EqRaw (WitVKey kr c) where - eqRaw = eqWitVKeyRaw - -pattern WitVKey :: - (Typeable kr, Crypto c) => - VKey kr c -> - SignedDSIGN c (Hash c EraIndependentTxBody) -> - WitVKey kr c -pattern WitVKey k s <- - WitVKeyInternal k s _ _ - where - WitVKey k s = - let bytes = - Plain.serialize $ - Plain.encodeListLen 2 - <> Plain.toCBOR k - <> encodeSignedDSIGN s - hash = asWitness $ hashKey k - in WitVKeyInternal k s hash bytes - -{-# COMPLETE WitVKey #-} - --- | Access computed hash. Evaluated lazily -witVKeyHash :: WitVKey kr c -> KeyHash 'Witness c -witVKeyHash = wvkKeyHash - --- | Access CBOR encoded representation of the witness. Evaluated lazily -witVKeyBytes :: WitVKey kr c -> BSL.ByteString -witVKeyBytes = wvkBytes - -eqWitVKeyRaw :: (Crypto c, Typeable kr) => WitVKey kr c -> WitVKey kr c -> Bool -eqWitVKeyRaw (WitVKey k1 s1) (WitVKey k2 s2) = k1 == k2 && s1 == s2 diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/Language.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/Language.hs deleted file mode 100644 index 0e52db6463e..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/Language.hs +++ /dev/null @@ -1,5 +0,0 @@ -module Cardano.Ledger.Language - {-# DEPRECATED "Use \"Cardano.Ledger.Plutus.Language\" instead" #-} - (module Cardano.Ledger.Plutus.Language) where - -import Cardano.Ledger.Plutus.Language diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/MemoBytes.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/MemoBytes.hs deleted file mode 100644 index b2f8c5b972a..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/MemoBytes.hs +++ /dev/null @@ -1,269 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DefaultSignatures #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilyDependencies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} - --- | MemoBytes is an abstraction for a data type that encodes its own serialization. --- The idea is to use a newtype around a MemoBytes applied to a non-memoizing type. --- For example: newtype Foo = Foo (`MemoBytes` NonMemoizingFoo) --- This way all the instances for @Foo (`Eq`, `Show`, `EncCBOR`, `DecCBOR`, `NoThunks`, Generic`)@ --- can be derived for free. MemoBytes plays an important role in the 'SafeToHash' class --- introduced in the module 'Cardano.Ledger.SafeHash' -module Cardano.Ledger.MemoBytes ( - MemoBytes (Memo), - MemoHashIndex, - Mem, - mkMemoBytes, - getMemoBytesType, - getMemoBytesHash, - memoBytes, - shorten, - showMemo, - printMemo, - shortToLazy, - contentsEq, - - -- * Memoized - Memoized (RawType), - mkMemoized, - getMemoSafeHash, - getMemoRawType, - zipMemoRawType, - eqRawType, - getMemoRawBytes, - lensMemoRawType, - getterMemoRawType, - - -- * Raw equality - EqRaw (..), -) -where - -import Cardano.Crypto.Hash (HashAlgorithm (hashAlgorithmName)) -import Cardano.Ledger.Binary ( - Annotator (..), - DecCBOR (decCBOR), - EncCBOR, - serialize, - withSlice, - ) -import Cardano.Ledger.Binary.Coders (Encode, encode, runE) -import qualified Cardano.Ledger.Binary.Plain as Plain -import Cardano.Ledger.Core.Era (Era (EraCrypto), eraProtVerLow) -import Cardano.Ledger.Crypto (HASH) -import Cardano.Ledger.SafeHash (SafeHash, SafeToHash (..)) -import Control.DeepSeq (NFData (..)) -import Data.ByteString.Lazy (fromStrict, toStrict) -import qualified Data.ByteString.Lazy as BSL -import qualified Data.ByteString.Lazy as Lazy -import Data.ByteString.Short (ShortByteString, fromShort, toShort) -import qualified Data.ByteString.Short as SBS (length) -import Data.Coerce -import Data.Typeable -import GHC.Base (Type) -import GHC.Generics (Generic) -import Lens.Micro -import NoThunks.Class (AllowThunksIn (..), NoThunks (..)) -import Prelude hiding (span) - --- ======================================================================== - --- | Pair together a type @t@ and its serialization. Used to encode a type --- that is serialized over the network, and to remember the original bytes --- that were used to transmit it. Important since hashes are computed --- from the serialization of a type, and EncCBOR instances do not have unique --- serializations. -data MemoBytes t era = Memo' - { mbRawType :: !(t era) - , mbBytes :: ShortByteString - , mbHash :: SafeHash (EraCrypto era) (MemoHashIndex t) - } - deriving (Generic) - deriving (NoThunks) via AllowThunksIn '["mbBytes", "mbHash"] (MemoBytes t era) - -pattern Memo :: Era era => t era -> ShortByteString -> MemoBytes t era -pattern Memo memoType memoBytes <- - Memo' memoType memoBytes _ - where - Memo mt mb = mkMemoBytes mt (shortToLazy mb) - -{-# COMPLETE Memo #-} - -type family MemoHashIndex (t :: Type -> Type) :: Type - -deriving instance NFData (t era) => NFData (MemoBytes t era) - -instance (Typeable t, Typeable era) => Plain.ToCBOR (MemoBytes t era) where - toCBOR (Memo' _ bytes _hash) = Plain.encodePreEncoded (fromShort bytes) - -instance - ( Typeable t - , DecCBOR (Annotator (t era)) - , Era era - ) => - DecCBOR (Annotator (MemoBytes t era)) - where - decCBOR = do - (Annotator getT, Annotator getBytes) <- withSlice decCBOR - pure (Annotator (\fullbytes -> mkMemoBytes (getT fullbytes) (getBytes fullbytes))) - --- | Both binary representation and Haskell types are compared. -instance Eq (t era) => Eq (MemoBytes t era) where - x == y = mbBytes x == mbBytes y && mbRawType x == mbRawType y - -instance (Show (t era), HashAlgorithm (HASH (EraCrypto era))) => Show (MemoBytes t era) where - show (Memo' y _ h) = - show y - <> " (" - <> hashAlgorithmName (Proxy :: Proxy (HASH (EraCrypto era))) - <> ": " - <> show h - <> ")" - -instance SafeToHash (MemoBytes t era) where - originalBytes = fromShort . mbBytes - originalBytesSize = SBS.length . mbBytes - --- | Turn a lazy bytestring into a short bytestring. -shorten :: Lazy.ByteString -> ShortByteString -shorten x = toShort (toStrict x) - --- | Useful when deriving DecCBOR(Annotator T) --- deriving via (Mem T) instance (Era era) => DecCBOR (Annotator T) -type Mem t era = Annotator (MemoBytes t era) - --- | Smart constructor -mkMemoBytes :: forall era t. Era era => t era -> BSL.ByteString -> MemoBytes t era -mkMemoBytes t bsl = - Memo' - t - (toShort bs) - (makeHashWithExplicitProxys (Proxy @(EraCrypto era)) (Proxy @(MemoHashIndex t)) bs) - where - bs = toStrict bsl - --- | Turn a MemoBytes into a string, Showing both its internal structure and its original bytes. --- Useful since the Show instance of MemoBytes does not display the original bytes. -showMemo :: Show (t era) => MemoBytes t era -> String -showMemo (Memo' t b _) = "(Memo " ++ show t ++ " " ++ show b ++ ")" - -printMemo :: Show (t era) => MemoBytes t era -> IO () -printMemo x = putStrLn (showMemo x) - --- | Create MemoBytes from its CBOR encoding -memoBytes :: forall era w t. Era era => Encode w (t era) -> MemoBytes t era -memoBytes t = mkMemoBytes (runE t) (serialize (eraProtVerLow @era) (encode t)) - --- | Helper function. Converts a short bytestring to a lazy bytestring. -shortToLazy :: ShortByteString -> BSL.ByteString -shortToLazy = fromStrict . fromShort - --- | Returns true if the contents of the MemoBytes are equal -contentsEq :: Eq (t era) => MemoBytes t era -> MemoBytes t era -> Bool -contentsEq x y = mbRawType x == mbRawType y - --- | Extract the inner type of the MemoBytes -getMemoBytesType :: MemoBytes t era -> t era -getMemoBytesType = mbRawType - --- | Extract the hash value of the binary representation of the MemoBytes -getMemoBytesHash :: MemoBytes t era -> SafeHash (EraCrypto era) (MemoHashIndex t) -getMemoBytesHash = mbHash - --- | Class that relates the actual type with its raw and byte representations -class Memoized t where - type RawType t = (r :: Type -> Type) | r -> t - - -- | This is a coercion from the memoized type to the MemoBytes. This implementation - -- cannot be changed since `getMemoBytes` is not exported, therefore it will only work - -- on newtypes around `MemoBytes` - getMemoBytes :: t era -> MemoBytes (RawType t) era - default getMemoBytes :: - Coercible (t era) (MemoBytes (RawType t) era) => - t era -> - MemoBytes (RawType t) era - getMemoBytes = coerce - - -- | This is a coercion from the MemoBytes to the momoized type. This implementation - -- cannot be changed since `warpMemoBytes` is not exported, therefore it will only work - -- on newtypes around `MemoBytes` - wrapMemoBytes :: MemoBytes (RawType t) era -> t era - default wrapMemoBytes :: - Coercible (MemoBytes (RawType t) era) (t era) => - MemoBytes (RawType t) era -> - t era - wrapMemoBytes = coerce - --- | Construct memoized type from the raw type using its EncCBOR instance -mkMemoized :: forall era t. (Era era, EncCBOR (RawType t era), Memoized t) => RawType t era -> t era -mkMemoized rawType = wrapMemoBytes (mkMemoBytes rawType (serialize (eraProtVerLow @era) rawType)) - --- | Extract memoized SafeHash -getMemoSafeHash :: Memoized t => t era -> SafeHash (EraCrypto era) (MemoHashIndex (RawType t)) -getMemoSafeHash t = mbHash (getMemoBytes t) - --- | Extract the raw type from the memoized version -getMemoRawType :: Memoized t => t era -> RawType t era -getMemoRawType t = mbRawType (getMemoBytes t) - --- | Extract the raw bytes from the memoized version -getMemoRawBytes :: Memoized t => t era -> ShortByteString -getMemoRawBytes t = mbBytes (getMemoBytes t) - --- | This is a helper function that operates on raw types of two memoized types. -zipMemoRawType :: - (Memoized t1, Memoized t2) => - (RawType t1 era -> RawType t2 era -> a) -> - t1 era -> - t2 era -> - a -zipMemoRawType f x y = f (getMemoRawType x) (getMemoRawType y) - -eqRawType :: - forall t era. - (Memoized t, Eq (RawType t era)) => - t era -> - t era -> - Bool -eqRawType = zipMemoRawType @t (==) - --- | This is a helper Lens creator for any Memoized type. -lensMemoRawType :: - (Era era, EncCBOR (RawType t era), Memoized t) => - (RawType t era -> a) -> - (RawType t era -> b -> RawType t era) -> - Lens (t era) (t era) a b -lensMemoRawType getter setter = - lens (getter . getMemoRawType) (\t v -> mkMemoized $ setter (getMemoRawType t) v) -{-# INLINEABLE lensMemoRawType #-} - --- | This is a helper SimpleGetter creator for any Memoized type -getterMemoRawType :: - Memoized t => - (RawType t era -> a) -> - SimpleGetter (t era) a -getterMemoRawType getter = - to (getter . getMemoRawType) -{-# INLINEABLE getterMemoRawType #-} - --- | Type class that implements equality on the Haskell type, ignoring any of the --- potentially memoized binary representation of the type. -class EqRaw a where - eqRaw :: a -> a -> Bool - default eqRaw :: (a ~ t era, Memoized t, Eq (RawType t era)) => a -> a -> Bool - eqRaw = eqRawType diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/Orphans.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/Orphans.hs deleted file mode 100644 index a0189a246a9..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/Orphans.hs +++ /dev/null @@ -1,88 +0,0 @@ -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Cardano.Ledger.Orphans where - -import Cardano.Crypto.Hash (Hash (..)) -import qualified Cardano.Crypto.Hash as Hash -import qualified Cardano.Crypto.Hash.Class as HS -import Cardano.Crypto.Util (SignableRepresentation (..)) -import qualified Cardano.Crypto.Wallet as WC -import Control.DeepSeq (NFData) -import Data.Aeson -import qualified Data.ByteString as Long (ByteString, empty) -import qualified Data.ByteString.Lazy as Lazy (ByteString, empty) -import qualified Data.ByteString.Short as Short (ShortByteString, empty, pack) -import Data.Default.Class (Default (..)) -import Data.Fixed (Fixed (..)) -import Data.IP (IPv4, IPv6) -import Data.Proxy -import qualified Data.Sequence.Strict as SS -import qualified Data.Text as Text -import NoThunks.Class (NoThunks (..)) -import Text.Read (readEither) - -instance FromJSON IPv4 where - parseJSON = - withText "IPv4" $ \txt -> case readEither (Text.unpack txt) of - Right ipv4 -> return ipv4 - Left _ -> fail $ "failed to read as IPv4 " ++ show txt - -instance ToJSON IPv4 where - toJSON = toJSON . show - -instance FromJSON IPv6 where - parseJSON = - withText "IPv6" $ \txt -> case readEither (Text.unpack txt) of - Right ipv6 -> return ipv6 - Left _ -> fail $ "failed to read as IPv6 " ++ show txt - -instance ToJSON IPv6 where - toJSON = toJSON . show - -instance NoThunks IPv4 - -instance NoThunks IPv6 - -instance NFData IPv4 - -instance NFData IPv6 - -instance NoThunks WC.XSignature where - wNoThunks ctxt s = wNoThunks ctxt (WC.unXSignature s) - showTypeOf _proxy = "XSignature" - -instance SignableRepresentation (Hash.Hash a b) where - getSignableRepresentation = Hash.hashToBytes - --- | TODO: We should upstream instance --- HasResolution p => NoThunks (Fixed p) into the nothunks package. -deriving newtype instance NoThunks (Fixed p) - --- =============================================== --- Blank instance needed to compute Provenance - -instance Default (SS.StrictSeq t) where - def = SS.Empty - -instance Default Short.ShortByteString where - def = Short.empty - -instance Default Long.ByteString where - def = Long.empty - -instance Default Lazy.ByteString where - def = Lazy.empty - -instance HS.HashAlgorithm h => Default (Hash h b) where - def = - UnsafeHash $ - Short.pack $ - replicate (fromIntegral (Hash.sizeHash (Proxy :: Proxy h))) 0 - -instance Default Bool where - def = False diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/Plutus.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/Plutus.hs deleted file mode 100644 index ffb2f121911..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/Plutus.hs +++ /dev/null @@ -1,15 +0,0 @@ -module Cardano.Ledger.Plutus ( - module Cardano.Ledger.Plutus.CostModels, - module Cardano.Ledger.Plutus.Data, - module Cardano.Ledger.Plutus.ExUnits, - module Cardano.Ledger.Plutus.Language, - module Cardano.Ledger.Plutus.TxInfo, - module Cardano.Ledger.Plutus.Evaluate, -) where - -import Cardano.Ledger.Plutus.CostModels -import Cardano.Ledger.Plutus.Data -import Cardano.Ledger.Plutus.Evaluate -import Cardano.Ledger.Plutus.ExUnits -import Cardano.Ledger.Plutus.Language -import Cardano.Ledger.Plutus.TxInfo diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/Plutus/CostModels.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/Plutus/CostModels.hs deleted file mode 100644 index f2e564533c2..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/Plutus/CostModels.hs +++ /dev/null @@ -1,499 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveFunctor #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} - -module Cardano.Ledger.Plutus.CostModels ( - -- * Cost Model - CostModel, - CostModelError (..), - P.CostModelApplyError (..), - mkCostModel, - mkCostModelsLenient, - encodeCostModel, - getCostModelLanguage, - getCostModelParams, - getCostModelEvaluationContext, - getEvaluationContext, - costModelParamNames, - costModelToMap, - costModelFromMap, - costModelParamsCount, - decodeCostModelFailHard, - - -- * Cost Models - CostModels, - mkCostModels, - emptyCostModels, - updateCostModels, - decodeValidAndUnknownCostModels, - costModelsValid, - costModelsErrors, - costModelsUnknown, - flattenCostModels, -) -where - -import Cardano.Ledger.Binary ( - DecCBOR (decCBOR), - Decoder, - EncCBOR (encCBOR), - Encoding, - decodeMapByKey, - encodeFoldableAsDefLenList, - ifDecoderVersionAtLeast, - ) -import Cardano.Ledger.Binary.Coders ( - Decode (..), - Encode (..), - decode, - encode, - (!>), - ( show lang <> " " <> show cm - --- | Note that this Ord instance ignores the evaluation context, which is --- entirely dependent on the cost model parameters and is guarded by the --- smart constructor `mkCostModel`. -instance Ord CostModel where - compare (CostModel l1 x _) (CostModel l2 y _) = compare l1 l2 <> compare x y - -instance NoThunks CostModel - -instance NFData CostModel where - rnf (CostModel lang cm ectx) = lang `deepseq` cm `deepseq` rnf ectx - -instance FromJSON CostModels where - parseJSON = withObject "CostModels" $ \o -> do - cms <- mapM (parseCostModel o) nonNativeLanguages - let cmsMap = Map.fromList [(cmLanguage cm, cm) | Just cm <- cms] - unknown <- o .:? "Unknown" .!= mempty - pure $ mkCostModels cmsMap <> mkCostModelsLenient unknown - --- | The costmodel parameters in Alonzo Genesis are represented as a map. Plutus API does --- no longer require the map as a parameter to `mkEvaluationContext`, but the list of --- Integers representing the values of the map. The expectation on this list of Integers --- is that they are sorted in the order given by the `ParamName` enum, so even though we --- just have to pass the list to plutus, we still need to use the names of the parameters --- in order to sort the list. In new versions, we want to represent the costmodel --- parameters directly as a list, so we can avoid this reordering. -parseCostModel :: Object -> Language -> Parser (Maybe CostModel) -parseCostModel o lang = do - plutusCostModelValueMaybe <- o .:? fromString (show lang) - forM plutusCostModelValueMaybe $ \plutusCostModelValue -> - case plutusCostModelValue of - Object _ -> costModelFromMap lang =<< parseJSON plutusCostModelValue - Array _ -> validateCostModel lang =<< parseJSON plutusCostModelValue - _ -> fail $ "Expected either an Array or an Object, but got: " ++ show plutusCostModelValue - -costModelFromMap :: MonadFail m => Language -> Map Text Integer -> m CostModel -costModelFromMap lang cmMap = - mapM lookupFail paramNames >>= validateCostModel lang - where - paramNames = costModelParamNames lang - lookupFail paramName = - case Map.lookup paramName cmMap of - Nothing -> fail $ "Unrecognized cost model parameter name: " ++ show paramName - Just v -> pure v - -costModelToMap :: CostModel -> Map Text Integer -costModelToMap cm = - Map.fromList $ zip (costModelParamNames (cmLanguage cm)) (cmValues cm) - -costModelParamNames :: Language -> [Text] -costModelParamNames PlutusV1 = plutusV1ParamNames -costModelParamNames lang = plutusVXParamNames lang - --- | There is a difference in 6 parameter names between the ones appearing alonzo genesis --- files and the values returned by plutus via `P.showParamName` on the `ParamName` enum. --- This listed is sorted in the order given by `ParamName` enum, so we can use it to sort --- the costmodel param values before passing them to plutus `mkEvaluationContext`. -plutusV1ParamNames :: [Text] -plutusV1ParamNames = - map (\newName -> Map.findWithDefault newName newName oldNewMapping) newNames - where - newNames = plutusVXParamNames PlutusV1 - oldNewMapping = - Map.fromList - [ ("blake2b_256-cpu-arguments-intercept", "blake2b-cpu-arguments-intercept") - , ("blake2b_256-cpu-arguments-slope", "blake2b-cpu-arguments-slope") - , ("blake2b_256-memory-arguments", "blake2b-memory-arguments") - , ("verifyEd25519Signature-cpu-arguments-intercept", "verifySignature-cpu-arguments-intercept") - , ("verifyEd25519Signature-cpu-arguments-slope", "verifySignature-cpu-arguments-slope") - , ("verifyEd25519Signature-memory-arguments", "verifySignature-memory-arguments") - ] - -plutusVXParamNames :: Language -> [Text] -plutusVXParamNames PlutusV1 = P.showParamName <$> [minBound .. maxBound :: PV1.ParamName] -plutusVXParamNames PlutusV2 = P.showParamName <$> [minBound .. maxBound :: PV2.ParamName] -plutusVXParamNames PlutusV3 = P.showParamName <$> [minBound .. maxBound :: PV3.ParamName] - -validateCostModel :: MonadFail m => Language -> [Integer] -> m CostModel -validateCostModel lang cmps = - case mkCostModel lang cmps of - Left err -> fail $ show err - Right cm -> pure cm - --- | Convert cost model parameters to a cost model, making use of the --- conversion function mkEvaluationContext from the Plutus API. -mkCostModel :: Language -> [Integer] -> Either P.CostModelApplyError CostModel -mkCostModel lang cm = - case eCostModel of - Right (evalCtx, _) -> Right (CostModel lang cm evalCtx) - Left e -> Left e - where - mkEvaluationContext = - case lang of - PlutusV1 -> PV1.mkEvaluationContext - PlutusV2 -> PV2.mkEvaluationContext - PlutusV3 -> PV3.mkEvaluationContext - eCostModel :: Either P.CostModelApplyError (P.EvaluationContext, [P.CostModelApplyWarn]) - eCostModel = runWriterT (mkEvaluationContext cm) - -getCostModelLanguage :: CostModel -> Language -getCostModelLanguage (CostModel lang _ _) = lang - -getCostModelParams :: CostModel -> [Integer] -getCostModelParams (CostModel _ cm _) = cm - -getCostModelEvaluationContext :: CostModel -> P.EvaluationContext -getCostModelEvaluationContext = cmEvalCtx - -decodeCostModelsCollectingErrors :: Decoder s CostModels -decodeCostModelsCollectingErrors = mkCostModelsLenient <$> decCBOR -{-# INLINE decodeCostModelsCollectingErrors #-} - -decodeCostModelsFailingOnError :: Decoder s CostModels -decodeCostModelsFailingOnError = - CostModels <$> decodeMapByKey decCBOR legacyDecodeCostModel <*> pure mempty <*> pure mempty -{-# INLINE decodeCostModelsFailingOnError #-} - -decodeValidAndUnknownCostModels :: Decoder s CostModels -decodeValidAndUnknownCostModels = do - validAndUnkonwnCms <- decodeMapByKey decCBOR decodeValidOrUnknownCm - pure $ Map.foldrWithKey addValidOrUnknownCm emptyCostModels validAndUnkonwnCms - where - decodeValidOrUnknownCm :: Word8 -> Decoder s (Either [Integer] CostModel) - decodeValidOrUnknownCm langW8 = do - case mkLanguageEnum (fromIntegral langW8) of - Just lang -> Right <$> decodeCostModelFailHard lang - Nothing -> Left <$> decCBOR - - addValidOrUnknownCm :: Word8 -> Either [Integer] CostModel -> CostModels -> CostModels - addValidOrUnknownCm langW8 unknownOrCm (CostModels validCms errors invalidCms) = - case unknownOrCm of - Left cmIds -> CostModels validCms errors (Map.insert langW8 cmIds invalidCms) - Right cm -> CostModels (Map.insert (cmLanguage cm) cm validCms) errors invalidCms - -decodeCostModels :: Decoder s CostModels -decodeCostModels = - ifDecoderVersionAtLeast - (natVersion @9) - decodeCostModelsCollectingErrors - decodeCostModelsFailingOnError -{-# INLINEABLE decodeCostModels #-} - --- | Number of parameters in a CostModel for a specific language -costModelParamsCount :: Language -> Int -costModelParamsCount PlutusV1 = 166 -costModelParamsCount PlutusV2 = 175 -costModelParamsCount PlutusV3 = 233 - --- | Prior to version 9, each 'CostModel' was expected to be serialized as --- an array of integers of a specific length (depending on the version of Plutus). --- Starting in version 9, we allow the decoders to accept lists longer than what they --- require, so that new fields can be added in the future. --- For this reason, we must hard code the length expectation into the deserializers --- prior to version 9. --- --- Note that the number of elements in the V1 and V2 cost models --- may change in the future, they are only fixed prior to version 9. --- --- See https://github.com/intersectmbo/cardano-ledger/issues/2902 --- and https://github.com/intersectmbo/cardano-ledger/blob/master/docs/adr/2022-12-05_006-cost-model-serialization.md -legacyDecodeCostModel :: Language -> Decoder s CostModel -legacyDecodeCostModel lang = do - values <- decCBOR - let numValues = length values - expectedNumValues = costModelParamsCount lang - when (numValues /= expectedNumValues) $ - fail $ - "Expected array with " - <> show expectedNumValues - <> " entries, but encoded array has " - <> show numValues - <> " entries." - case mkCostModel lang values of - Left e -> fail $ show e - Right cm -> pure cm -{-# INLINEABLE legacyDecodeCostModel #-} - -decodeCostModelFailHard :: Language -> Decoder s CostModel -decodeCostModelFailHard lang = do - checked <- mkCostModel lang <$> decCBOR - case checked of - Left e -> fail $ show e - Right cm -> pure cm -{-# INLINEABLE decodeCostModelFailHard #-} - -getEvaluationContext :: CostModel -> P.EvaluationContext -getEvaluationContext (CostModel _ _ ec) = ec - --- | See 'CostModels' for an explanation of how 'CostModelError' is used. -newtype CostModelError = CostModelError P.CostModelApplyError - deriving stock (Eq, Show, Generic) - -instance Ord CostModelError where - compare (CostModelError x1) (CostModelError x2) = comp x1 x2 - where - comp (P.CMUnknownParamError err1) (P.CMUnknownParamError err2) = compare err1 err2 - comp P.CMInternalReadError P.CMInternalReadError = EQ - comp (P.CMInternalWriteError err1) (P.CMInternalWriteError err2) = compare err1 err2 - comp (P.CMTooFewParamsError e1 a1) (P.CMTooFewParamsError e2 a2) = compare e1 e2 <> compare a1 a2 - comp cme1 cme2 = compare (tagOf cme1) (tagOf cme2) - tagOf :: P.CostModelApplyError -> Int - tagOf = \case - P.CMUnknownParamError {} -> 0 - P.CMInternalReadError {} -> 1 - P.CMInternalWriteError {} -> 2 - P.CMTooFewParamsError {} -> 3 - -instance EncCBOR CostModelError where - encCBOR = - encode . \case - CostModelError (P.CMUnknownParamError err) -> - Sum (CostModelError . P.CMUnknownParamError) 0 !> To err - CostModelError P.CMInternalReadError -> - Sum (CostModelError P.CMInternalReadError) 1 - CostModelError (P.CMInternalWriteError err) -> - Sum (CostModelError . P.CMInternalWriteError . T.unpack) 2 !> To (T.pack err) - CostModelError (P.CMTooFewParamsError expected actual) -> - Sum (\e -> CostModelError . P.CMTooFewParamsError e) 3 !> To expected !> To actual - -instance DecCBOR CostModelError where - decCBOR = decode $ Summands "CostModelError" $ \case - 0 -> SumD (CostModelError . P.CMUnknownParamError) SumD (CostModelError P.CMInternalReadError) - 2 -> SumD (CostModelError . P.CMInternalWriteError . T.unpack) SumD (\e -> CostModelError . P.CMTooFewParamsError e) Invalid n - -instance ToJSON CostModelError where - toJSON = \case - CostModelError (P.CMUnknownParamError err) -> - object ["unknownParamError" .= toJSON err] - CostModelError P.CMInternalReadError -> "internalReadError" - CostModelError (P.CMInternalWriteError err) -> - object ["internalWriteError" .= toJSON err] - CostModelError (P.CMTooFewParamsError expected actual) -> - object ["tooFewParamsError" .= object ["expected" .= expected, "actual" .= actual]] - -instance NoThunks CostModelError - -instance NFData CostModelError - --- | For a known version of Plutus, attempting to construct a cost model with --- too few parameters (depending on the version) will result in an error. --- 'CostModelApplyError' exists to collect these errors in the 'CostModels' type. --- The 'CostModels' type itself needs to be flexible enough to accept any map --- of 'Word8' to '[Integer]', so that cost models can be placed in the protocol parameters --- ahead of changes to the Plutus evaluation context. In this way, serializing a cost model, --- updating software, and deserializing can result in errors going away. --- --- Additionally, 'CostModels' needs to be able to store cost models for future version --- of Plutus, which we cannot yet even validate. These are stored in --- 'costModelsUnknown`. -data CostModels = CostModels - { _costModelsValid :: !(Map Language CostModel) - , _costModelsErrors :: !(Map Language CostModelError) - , _costModelsUnknown :: !(Map Word8 [Integer]) - } - deriving stock (Eq, Ord, Show, Generic) - -instance Semigroup CostModels where - (<>) = updateCostModels - -instance Monoid CostModels where - mempty = emptyCostModels - -costModelsValid :: CostModels -> Map Language CostModel -costModelsValid = _costModelsValid - -costModelsErrors :: CostModels -> Map Language CostModelError -costModelsErrors = _costModelsErrors - -costModelsUnknown :: CostModels -> Map Word8 [Integer] -costModelsUnknown = _costModelsUnknown - -emptyCostModels :: CostModels -emptyCostModels = CostModels mempty mempty mempty - --- | Updates the first @`CostModels`@ with the second one, so that only the cost models --- that are present in the second one get updated while all the others stay --- unchanged. Language specific errors and unknown cost models are removed, whenever a --- valid `CostModel` for the language is supplied in the update. -updateCostModels :: - -- | Old CostModels that will be overwritten - CostModels -> - -- | New CostModels that will overwrite - CostModels -> - CostModels -updateCostModels (CostModels oldValid oldErrors oldUnk) (CostModels modValid modErrors modUnk) = - CostModels - newValid - (newErrors Map.\\ newValid) - (Map.union modUnk oldUnk Map.\\ Map.mapKeys languageToWord8 newValid) - where - newValid = Map.union modValid oldValid - newErrors = Map.union modErrors oldErrors - --- | Construct an all valid `CostModels` -mkCostModels :: Map Language CostModel -> CostModels -mkCostModels cms = CostModels cms mempty mempty - --- | This function attempts to convert a Map with potential cost models to into validated --- 'CostModels'. If it is a valid cost model for a known version of Plutus, it is added --- to 'costModelsValid'. If it is an invalid cost model for a known version of Plutus, the --- error is stored in 'costModelsErrors' and the cost model is stored in --- 'costModelsUnknown'. Lastly, if the Plutus version is unknown, the cost model is also --- stored in 'costModelsUnknown'. -mkCostModelsLenient :: Map Word8 [Integer] -> CostModels -mkCostModelsLenient = Map.foldrWithKey addRawCostModel (CostModels mempty mempty mempty) - where - addRawCostModel :: Word8 -> [Integer] -> CostModels -> CostModels - addRawCostModel langW8 cmIds (CostModels validCMs errs invalidCMs) = - case mkLanguageEnum (fromIntegral langW8) of - Just lang -> - case mkCostModel lang cmIds of - Right cm -> CostModels (Map.insert lang cm validCMs) errs invalidCMs - Left e -> CostModels validCMs (Map.insert lang (CostModelError e) errs) updatedInvalidCMs - Nothing -> CostModels validCMs errs updatedInvalidCMs - where - updatedInvalidCMs = Map.insert langW8 cmIds invalidCMs - --- | Turn a 'CostModels' into a mapping of potential language versions and --- cost model values, with no distinction between valid and invalid cost models. --- This is used for serialization, so that judgements about validity can be made --- upon deserialization. -flattenCostModels :: CostModels -> Map Word8 [Integer] -flattenCostModels (CostModels validCMs _ invalidCMs) = - Map.foldrWithKey (\lang cm -> Map.insert (languageToWord8 lang) (cmValues cm)) invalidCMs validCMs - -languageToWord8 :: Language -> Word8 -languageToWord8 lang - | 0 <= li && li <= fromIntegral (maxBound :: Word8) = fromIntegral li - | otherwise = - -- This should be impossible while we have under 256 versions of Plutus - error $ "Impossible: Overflow encountered during conversion of the language: " ++ show lang - where - li = fromEnum lang - -instance NoThunks CostModels - -instance NFData CostModels - -instance DecCBOR CostModels where - decCBOR = decodeCostModels - {-# INLINE decCBOR #-} - -instance EncCBOR CostModels where - encCBOR = encCBOR . flattenCostModels - -instance ToJSON CostModel where - toJSON = toJSON . getCostModelParams - -instance ToJSON CostModels where - toJSON cms = toJSON $ jsonValid <> jsonErrors <> jsonUnknown - where - jsonMap toKey = Map.mapKeys toKey . Map.map toJSON - jsonValid = jsonMap languageToText $ costModelsValid cms - jsonErrors - | null (costModelsErrors cms) = mempty - | otherwise = - Map.singleton "Errors" $ toJSON $ jsonMap languageToText $ costModelsErrors cms - jsonUnknown - | null (costModelsUnknown cms) = mempty - | otherwise = - Map.singleton "Unknown" $ toJSON $ jsonMap (T.pack . show) $ costModelsUnknown cms - --- | Encoding for the `CostModel`. Important to note that it differs from `Encoding` used --- by `Cardano.Ledger.Alonzo.PParams.getLanguageView` -encodeCostModel :: CostModel -> Encoding -encodeCostModel = encodeFoldableAsDefLenList encCBOR . getCostModelParams diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/Plutus/Data.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/Plutus/Data.hs deleted file mode 100644 index 694cc8ad6bc..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/Plutus/Data.hs +++ /dev/null @@ -1,256 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE EmptyDataDeriving #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE ViewPatterns #-} --- This is needed for the `HeapWords (StrictMaybe (DataHash c))` instance -{-# OPTIONS_GHC -fno-warn-orphans #-} - -module Cardano.Ledger.Plutus.Data ( - PlutusData (..), - Data (Data), - unData, - DataHash, - upgradeData, - hashData, - getPlutusData, - dataHashSize, - BinaryData, - hashBinaryData, - makeBinaryData, - binaryDataToData, - dataToBinaryData, - Datum (..), - datumDataHash, - translateDatum, -) -where - -import Cardano.Crypto.Hash.Class (HashAlgorithm) -import Cardano.HeapWords (HeapWords (..), heapWords0, heapWords1) -import Cardano.Ledger.BaseTypes (StrictMaybe (..)) -import Cardano.Ledger.Binary ( - Annotator (..), - DecCBOR (..), - DecoderError (..), - EncCBOR (..), - ToCBOR (..), - decodeFullAnnotator, - decodeNestedCborBytes, - encodeTag, - fromPlainDecoder, - fromPlainEncoding, - ) -import Cardano.Ledger.Binary.Coders -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto (Crypto (HASH)) -import Cardano.Ledger.MemoBytes ( - Mem, - MemoBytes (..), - MemoHashIndex, - Memoized (RawType), - getMemoRawType, - getMemoSafeHash, - mkMemoBytes, - mkMemoized, - shortToLazy, - ) -import Cardano.Ledger.SafeHash ( - HashAnnotated, - SafeToHash (..), - hashAnnotated, - ) -import qualified Codec.Serialise as Cborg (Serialise (..)) -import Control.DeepSeq (NFData) -import Data.Aeson (ToJSON (..), Value (Null)) -import Data.ByteString.Lazy (fromStrict) -import Data.ByteString.Short (ShortByteString, fromShort, toShort) -import Data.Coerce (coerce) -import Data.Typeable (Typeable) -import GHC.Generics (Generic) -import NoThunks.Class (NoThunks) -import qualified PlutusLedgerApi.V1 as PV1 - --- ============================================================================ --- the newtype Data is a wrapper around the type that Plutus expects as data. --- The newtype will memoize the serialized bytes. - --- | This is a wrapper with a phantom era for PV1.Data, since we need --- something with kind (* -> *) for MemoBytes -newtype PlutusData era = PlutusData PV1.Data - deriving newtype (Eq, Generic, Show, NFData, NoThunks, Cborg.Serialise) - -instance Typeable era => EncCBOR (PlutusData era) where - encCBOR (PlutusData d) = fromPlainEncoding $ Cborg.encode d - -instance Typeable era => DecCBOR (Annotator (PlutusData era)) where - decCBOR = pure <$> fromPlainDecoder Cborg.decode - -newtype Data era = DataConstr (MemoBytes PlutusData era) - deriving (Eq, Generic) - deriving newtype (SafeToHash, ToCBOR, NFData) - --- | Encodes memoized bytes created upon construction. -instance Typeable era => EncCBOR (Data era) - -instance Memoized Data where - type RawType Data = PlutusData - -deriving instance HashAlgorithm (HASH (EraCrypto era)) => Show (Data era) - -deriving via Mem PlutusData era instance Era era => DecCBOR (Annotator (Data era)) - -type instance MemoHashIndex PlutusData = EraIndependentData - -instance EraCrypto era ~ c => HashAnnotated (Data era) EraIndependentData c where - hashAnnotated = getMemoSafeHash - -instance Typeable era => NoThunks (Data era) - -pattern Data :: Era era => PV1.Data -> Data era -pattern Data p <- (getMemoRawType -> PlutusData p) - where - Data p = mkMemoized $ PlutusData p - -{-# COMPLETE Data #-} - -unData :: Data era -> PV1.Data -unData eraData = - case getMemoRawType eraData of - PlutusData plutusData -> plutusData - --- | Upgrade 'Data' from one era to another. While the underlying data will --- remain the same, the memoised serialisation may change to reflect the --- versioned serialisation of the new era. -upgradeData :: (Era era1, Era era2) => Data era1 -> Data era2 -upgradeData (Data d) = Data d - -getPlutusData :: Data era -> PV1.Data -getPlutusData (getMemoRawType -> PlutusData d) = d - --- | Inlined data must be stored in the most compact form because it contributes --- to the memory overhead of the ledger state. Constructor is intentionally not --- exported, in order to prevent invalid creation of data from arbitrary binary --- data. Use `makeBinaryData` for smart construction. -newtype BinaryData era = BinaryData ShortByteString - deriving newtype (Eq, NoThunks, Ord, Show, SafeToHash) - deriving (Generic) - -instance EraCrypto era ~ c => HashAnnotated (BinaryData era) EraIndependentData c - -instance Typeable era => EncCBOR (BinaryData era) where - encCBOR (BinaryData sbs) = encodeTag 24 <> encCBOR sbs - -instance Era era => DecCBOR (BinaryData era) where - decCBOR = do - bs <- decodeNestedCborBytes - either fail pure $! makeBinaryData (toShort bs) - --- | Construct `BinaryData` from a buffer of bytes, while ensuring that it can be later --- safely converted to `Data` with `binaryDataToData` -makeBinaryData :: Era era => ShortByteString -> Either String (BinaryData era) -makeBinaryData sbs = do - let binaryData = BinaryData sbs - -- We need to verify that binary data is indeed valid Plutus Data. - case decodeBinaryData binaryData of - Left e -> Left $ "Invalid CBOR for Data: " <> show e - Right _d -> Right binaryData - -decodeBinaryData :: forall era. Era era => BinaryData era -> Either DecoderError (Data era) -decodeBinaryData (BinaryData sbs) = do - plutusData <- decodeFullAnnotator (eraProtVerLow @era) "Data" decCBOR (fromStrict (fromShort sbs)) - pure (DataConstr (mkMemoBytes plutusData $ shortToLazy sbs)) - --- | It is safe to convert `BinaryData` to `Data` because the only way to --- construct `BinaryData` is through the smart constructor `makeBinaryData` that --- takes care of validation. -binaryDataToData :: Era era => BinaryData era -> Data era -binaryDataToData binaryData = - case decodeBinaryData binaryData of - Left errMsg -> - error $ "Impossible: incorrectly encoded data: " ++ show errMsg - Right d -> d - -dataToBinaryData :: Era era => Data era -> BinaryData era -dataToBinaryData (DataConstr (Memo _ sbs)) = BinaryData sbs - -hashBinaryData :: Era era => BinaryData era -> DataHash (EraCrypto era) -hashBinaryData = hashAnnotated - --- ============================================================================= - -hashData :: Era era => Data era -> DataHash (EraCrypto era) -hashData = hashAnnotated - --- Size of the datum hash attached to the output (could be Nothing) -dataHashSize :: StrictMaybe (DataHash c) -> Integer -dataHashSize SNothing = 0 -dataHashSize (SJust _) = 10 - -instance Crypto c => HeapWords (StrictMaybe (DataHash c)) where - heapWords SNothing = heapWords0 - heapWords (SJust a) = heapWords1 a - --- ============================================================================ --- Datum - --- | Datum can be described by a either a data hash or binary data, but not --- both. It can also be neither one of them. -data Datum era - = NoDatum - | DatumHash !(DataHash (EraCrypto era)) - | Datum !(BinaryData era) - deriving (Eq, Generic, NoThunks, Ord, Show) - -instance Era era => EncCBOR (Datum era) where - encCBOR d = encode $ case d of - DatumHash dh -> Sum DatumHash 0 !> To dh - Datum d' -> Sum Datum 1 !> To d' - NoDatum -> OmitC NoDatum - -instance Era era => DecCBOR (Datum era) where - decCBOR = decode (Summands "Datum" decodeDatum) - where - decodeDatum 0 = SumD DatumHash ToJSON (Datum era) where - toJSON d = - case datumDataHash d of - SNothing -> Null - SJust dh -> toJSON dh - toEncoding d = - case datumDataHash d of - SNothing -> toEncoding Null - SJust dh -> toEncoding dh - --- | Get the Hash of the datum. -datumDataHash :: Era era => Datum era -> StrictMaybe (DataHash (EraCrypto era)) -datumDataHash = \case - NoDatum -> SNothing - DatumHash dh -> SJust dh - Datum bd -> SJust (hashBinaryData bd) - -translateDatum :: - EraCrypto era1 ~ EraCrypto era2 => - Datum era1 -> - Datum era2 -translateDatum = \case - NoDatum -> NoDatum - DatumHash dh -> DatumHash dh - Datum bd -> Datum (coerce bd) diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/Plutus/Evaluate.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/Plutus/Evaluate.hs deleted file mode 100644 index e0eb63c3ff4..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/Plutus/Evaluate.hs +++ /dev/null @@ -1,316 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TupleSections #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} - -module Cardano.Ledger.Plutus.Evaluate ( - PlutusWithContext (..), - ScriptFailure (..), - ScriptResult (..), - scriptPass, - scriptFail, - PlutusDatums (..), - PlutusDebugInfo (..), - debugPlutus, - runPlutusScript, - runPlutusScriptWithLogs, - evaluatePlutusWithContext, - explainPlutusEvaluationError, -) -where - -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - FromCBOR (..), - ToCBOR (..), - Version, - toPlainDecoder, - toPlainEncoding, - ) -import qualified Cardano.Ledger.Binary.Plain as Plain -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Hashes (ScriptHash) -import Cardano.Ledger.Plutus.CostModels ( - CostModel, - decodeCostModelFailHard, - encodeCostModel, - getEvaluationContext, - ) -import Cardano.Ledger.Plutus.ExUnits (ExUnits) -import Cardano.Ledger.Plutus.Language ( - Language (..), - Plutus (..), - PlutusLanguage (..), - PlutusRunnable (..), - decodeWithPlutus, - hashPlutusScript, - plutusFromRunnable, - plutusLanguage, - ) -import Cardano.Ledger.Plutus.TxInfo -import Control.DeepSeq (NFData (..)) -import Control.Monad (unless) -import qualified Data.ByteString.Base64 as B64 -import qualified Data.ByteString.UTF8 as BSU -import Data.List.NonEmpty (NonEmpty (..)) -import Data.Text (Text, pack) -import GHC.Generics (Generic) -import PlutusLedgerApi.Common as P (EvaluationError (CodecError), ExBudget, VerboseMode) -import qualified PlutusLedgerApi.V1 as PV1 -import PlutusLedgerApi.V1.Contexts () -import qualified PlutusLedgerApi.V2 as PV2 -import qualified PlutusLedgerApi.V3 as PV3 -import Prettyprinter (Pretty (..)) - --- | This type contains all that is necessary from Ledger to evaluate a plutus script. -data PlutusWithContext c where - PlutusWithContext :: - PlutusLanguage l => - { pwcProtocolVersion :: !Version - -- ^ Mayjor protocol version that is necessary for [de]serialization - , pwcScript :: !(Either (Plutus l) (PlutusRunnable l)) - -- ^ Actual plutus script that will be evaluated. Script is allowed to be in two forms: - -- serialized and deserialized. This is necesary for implementing the opptimization - -- that preserves deserialized `PlutusRunnable` after verifying wellformedness of - -- plutus scripts during transaction validation (yet to be implemented). - , pwcScriptHash :: !(ScriptHash c) - , pwcDatums :: !PlutusDatums - -- ^ All of the arguments to the Plutus scripts, including the redeemer and the - -- Plutus context that was obtained from the transaction translation - , pwcExUnits :: !ExUnits - -- ^ Limit on the execution units - , pwcCostModel :: !CostModel - -- ^ `CostModel` to be used during script evaluation. It must match the language - -- version in the `pwcScript` - } -> - PlutusWithContext c - -deriving instance Show (PlutusWithContext c) - -instance NFData (PlutusWithContext c) where - rnf PlutusWithContext {..} = - rnf pwcProtocolVersion `seq` - rnf pwcScript `seq` - rnf pwcScriptHash `seq` - rnf pwcDatums `seq` - rnf pwcExUnits `seq` - rnf pwcCostModel - -instance Eq (PlutusWithContext c) where - pwc1@(PlutusWithContext {pwcScript = s1}) == pwc2@(PlutusWithContext {pwcScript = s2}) = - pwcProtocolVersion pwc1 == pwcProtocolVersion pwc2 - && pwcScriptHash pwc1 == pwcScriptHash pwc2 - && pwcDatums pwc1 == pwcDatums pwc2 - && pwcExUnits pwc1 == pwcExUnits pwc2 - && pwcCostModel pwc1 == pwcCostModel pwc2 - && eqScripts s1 s2 - where - eqScripts (Left p1) (Left p2) = - plutusLanguage p1 == plutusLanguage p2 && plutusBinary p1 == plutusBinary p2 - eqScripts (Right p1) (Right p2) = - plutusLanguage p1 == plutusLanguage p2 && plutusRunnable p1 == plutusRunnable p2 - eqScripts _ _ = False - -data ScriptFailure c = ScriptFailure - { scriptFailureMessage :: Text - , scriptFailurePlutus :: PlutusWithContext c - } - deriving (Show, Generic) - -data ScriptResult c - = Passes [PlutusWithContext c] - | Fails [PlutusWithContext c] (NonEmpty (ScriptFailure c)) - deriving (Generic) - -scriptPass :: PlutusWithContext c -> ScriptResult c -scriptPass pwc = Passes [pwc] - -scriptFail :: ScriptFailure c -> ScriptResult c -scriptFail sf = Fails [] (pure sf) - -withRunnablePlutusWithContext :: - PlutusWithContext c -> - -- | Handle the decoder failure - (P.EvaluationError -> a) -> - (forall l. PlutusLanguage l => PlutusRunnable l -> a) -> - a -withRunnablePlutusWithContext PlutusWithContext {pwcProtocolVersion, pwcScript} onError f = - case pwcScript of - Right pr -> f pr - Left plutus -> - case decodePlutusRunnable pwcProtocolVersion plutus of - Right pr -> f pr - Left err -> onError (P.CodecError err) - -instance Semigroup (ScriptResult c) where - Passes ps <> Passes qs = Passes (ps <> qs) - Passes ps <> Fails qs xs = Fails (ps <> qs) xs - Fails ps xs <> Passes qs = Fails (ps <> qs) xs - Fails ps xs <> Fails qs ys = Fails (ps <> qs) (xs <> ys) - -instance Monoid (ScriptResult c) where - mempty = Passes mempty - -newtype PlutusDatums = PlutusDatums {unPlutusDatums :: [PV1.Data]} - deriving (Eq, Show, Generic) - -instance NFData PlutusDatums - -instance EncCBOR PlutusDatums where - encCBOR (PlutusDatums d) = encCBOR d - -instance DecCBOR PlutusDatums where - decCBOR = PlutusDatums <$> decCBOR - -instance Crypto c => ToCBOR (PlutusWithContext c) where - toCBOR (PlutusWithContext {..}) = - Plain.encodeListLen 6 - <> toCBOR pwcProtocolVersion - <> toPlainEncoding pwcProtocolVersion (either encCBOR encCBOR pwcScript) - <> toPlainEncoding pwcProtocolVersion (encCBOR pwcScriptHash) - <> toPlainEncoding pwcProtocolVersion (encCBOR pwcDatums) - <> toPlainEncoding pwcProtocolVersion (encCBOR pwcExUnits) - <> toPlainEncoding pwcProtocolVersion (encodeCostModel pwcCostModel) - -instance Crypto c => FromCBOR (PlutusWithContext c) where - fromCBOR = Plain.decodeRecordNamed "PlutusWithContext" (const 6) $ do - pwcProtocolVersion <- fromCBOR - toPlainDecoder pwcProtocolVersion $ decodeWithPlutus $ \plutus -> do - let lang = plutusLanguage plutus - pwcScript = Left plutus - scriptHash = hashPlutusScript plutus - pwcScriptHash <- decCBOR - unless (pwcScriptHash == scriptHash) $ - fail $ - "ScriptHash mismatch. Encoded: " - <> show pwcScriptHash - <> " doesn't match the actual: " - <> show scriptHash - pwcDatums <- decCBOR - pwcExUnits <- decCBOR - pwcCostModel <- decodeCostModelFailHard lang - pure PlutusWithContext {..} - -data PlutusDebugInfo c - = DebugBadHex String - | DebugCannotDecode String - | DebugSuccess [Text] PV1.ExBudget - | DebugFailure [Text] P.EvaluationError (PlutusWithContext c) - deriving (Show) - -debugPlutus :: Crypto c => String -> PlutusDebugInfo c -debugPlutus db = - case B64.decode (BSU.fromString db) of - Left e -> DebugBadHex (show e) - Right bs -> - case Plain.decodeFull' bs of - Left e -> DebugCannotDecode $ show e - Right pwc@(PlutusWithContext {..}) -> - let cm = getEvaluationContext pwcCostModel - eu = transExUnits pwcExUnits - PlutusDatums d = pwcDatums - onDecoderError err = DebugFailure [] err pwc - toDebugInfo = \case - (logs, Left err) -> DebugFailure logs err pwc - (logs, Right ex) -> DebugSuccess logs ex - in withRunnablePlutusWithContext pwc onDecoderError $ \plutusRunnable -> - toDebugInfo $ - evaluatePlutusRunnable pwcProtocolVersion PV1.Verbose cm eu plutusRunnable d - -runPlutusScript :: PlutusWithContext c -> ScriptResult c -runPlutusScript = snd . runPlutusScriptWithLogs - -runPlutusScriptWithLogs :: - PlutusWithContext c -> - ([Text], ScriptResult c) -runPlutusScriptWithLogs pwc = toScriptResult <$> evaluatePlutusWithContext PV1.Quiet pwc - where - toScriptResult = \case - Left evalError -> explainPlutusEvaluationError pwc evalError - Right _ -> scriptPass pwc - -evaluatePlutusWithContext :: - P.VerboseMode -> - PlutusWithContext c -> - ([Text], Either P.EvaluationError P.ExBudget) -evaluatePlutusWithContext mode pwc@PlutusWithContext {..} = - withRunnablePlutusWithContext pwc (([],) . Left) $ \plutusRunnable -> - evaluatePlutusRunnable - pwcProtocolVersion - mode - (getEvaluationContext pwcCostModel) - (transExUnits pwcExUnits) - plutusRunnable - (unPlutusDatums pwcDatums) - --- | Explain why a script might fail. Scripts come in two flavors: --- --- (1) with 3 data arguments [data,redeemer,context] --- --- (2) with 2 data arguments [redeemer,context]. --- --- It pays to decode the context data into a real context because that provides --- way more information. But there is no guarantee the context data really can --- be decoded. -explainPlutusEvaluationError :: - PlutusWithContext c -> - P.EvaluationError -> - ScriptResult c -explainPlutusEvaluationError pwc@PlutusWithContext {pwcProtocolVersion, pwcScript, pwcDatums} e = - let lang = either plutusLanguage plutusLanguage pwcScript - Plutus binaryScript = either id plutusFromRunnable pwcScript - firstLines = - [ "The " ++ show lang ++ " script failed:" - , "Base64-encoded script bytes:" - ] - shLine = "The script hash is:" ++ show (pwcScriptHash pwc) - pvLine = "The protocol version is: " ++ show pwcProtocolVersion - plutusError = "The plutus evaluation error is: " ++ show e - - getCtxAsString :: PV1.Data -> Language -> Maybe String - getCtxAsString d = \case - PlutusV1 -> show . pretty <$> (PV1.fromData d :: Maybe PV1.ScriptContext) - PlutusV2 -> show . pretty <$> (PV2.fromData d :: Maybe PV2.ScriptContext) - PlutusV3 -> show . pretty <$> (PV3.fromData d :: Maybe PV3.ScriptContext) - - ctxMessage info = - case getCtxAsString info lang of - Nothing -> - concat - [ "The third data argument does not translate to a " - , show lang - , " script context\n" - , show info - ] - Just ctx -> "The script context is:\n" ++ ctx - dataLines = - case unPlutusDatums pwcDatums of - [dat, redeemer, info] -> - [ "The datum is: " ++ show dat - , "The redeemer is: " ++ show redeemer - , ctxMessage info - ] - [redeemer, info] -> - [ "The redeemer is: " ++ show redeemer - , ctxMessage info - ] - ds -> - [ "Received an unexpected number of Data" - , "The data is:\n" ++ show ds - ] - line = pack . unlines $ "" : firstLines ++ show binaryScript : shLine : plutusError : pvLine : dataLines - in scriptFail $ ScriptFailure line pwc diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/Plutus/ExUnits.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/Plutus/ExUnits.hs deleted file mode 100644 index 0a507ef37ed..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/Plutus/ExUnits.hs +++ /dev/null @@ -1,216 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveFunctor #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} - -module Cardano.Ledger.Plutus.ExUnits ( - txscriptfee, - pointWiseExUnits, - zipSemiExUnits, - ExUnits (ExUnits, exUnitsMem, exUnitsSteps, ..), - ExUnits' (..), - Prices (..), -) -where - -import Cardano.Ledger.BaseTypes ( - BoundedRational (unboundRational), - NonNegativeInterval, - ) -import Cardano.Ledger.Binary ( - DecCBOR (decCBOR), - Decoder, - DecoderError (..), - EncCBOR (encCBOR), - cborError, - ) -import Cardano.Ledger.Binary.Coders ( - Decode (D, From, RecD), - Encode (Rec, To), - decode, - encode, - (!>), - ()) -import Control.DeepSeq (NFData (..)) -import Control.Monad (when) -import Data.Aeson ( - FromJSON (..), - ToJSON (..), - object, - withObject, - (.:), - (.=), - ) -import Data.DerivingVia (InstantiatedAt (..)) -import Data.Int (Int64) -import Data.Measure (BoundedMeasure, Measure) -import Data.Semigroup (All (..)) -import Data.Word (Word64) -import GHC.Generics (Generic) -import NoThunks.Class (NoThunks (..)) -import Numeric.Natural (Natural) - --- | Arbitrary execution unit in which we measure the cost of scripts in terms --- of space in memory and execution time. --- --- The ledger itself uses 'ExUnits' Natural' exclusively, but the flexibility here --- allows the consensus layer to translate the execution units into something --- equivalent to 'ExUnits (Inf Natural)'. This is needed in order to provide --- a 'BoundedMeasure' instance, which itself is needed for the alonzo instance of --- 'TxLimits' (in consensus). -data ExUnits' a = ExUnits' - { exUnitsMem' :: !a - , exUnitsSteps' :: !a - } - deriving (Eq, Generic, Show, Functor) - -- It is deliberate that there is no Ord instance, use `pointWiseExUnits` instead. - deriving - (Measure, BoundedMeasure) - via (InstantiatedAt Generic (ExUnits' a)) - deriving - (Monoid, Semigroup) - via (InstantiatedAt Measure (ExUnits' a)) - -instance NoThunks a => NoThunks (ExUnits' a) - -instance NFData a => NFData (ExUnits' a) - -deriving instance ToJSON a => ToJSON (ExUnits' a) - -deriving instance FromJSON a => FromJSON (ExUnits' a) - --- | This newtype wrapper of ExUnits' is used to hide --- an implementation detail inside the ExUnits pattern. -newtype ExUnits = WrapExUnits {unWrapExUnits :: ExUnits' Natural} - deriving (Eq, Generic, Show) - deriving newtype (Monoid, Semigroup) - -instance NoThunks ExUnits - -instance NFData ExUnits - -instance ToJSON ExUnits where - toJSON exUnits@(ExUnits _ _) = - let ExUnits {exUnitsMem, exUnitsSteps} = exUnits - in object - [ "memory" .= toJSON exUnitsMem - , "steps" .= toJSON exUnitsSteps - ] - -instance FromJSON ExUnits where - parseJSON = withObject "exUnits" $ \o -> do - exUnitsMem <- checkWord64Bounds =<< (o .: "memory" <|> o .: "exUnitsMem") - exUnitsSteps <- checkWord64Bounds =<< (o .: "steps" <|> o .: "exUnitsSteps") - pure $ ExUnits {exUnitsMem, exUnitsSteps} - where - checkWord64Bounds n = - if n >= fromIntegral (minBound @Word64) - && n <= fromIntegral (maxBound @Word64) - then pure n - else fail ("Unit out of bounds for Word64: " <> show n) - --- | Arbitrary execution unit in which we measure the cost of scripts in terms --- of space in memory and execution time. --- --- This pattern hides the fact that ExUnits' is parametric in the underlying type. --- The ledger itself uses 'ExUnits' Natural' exclusively. --- --- We would have preferred to use a type alias for 'ExUnits' Natural', --- but this is not possible: https://gitlab.haskell.org/ghc/ghc/-/issues/19507. -pattern ExUnits :: Natural -> Natural -> ExUnits -pattern ExUnits {exUnitsMem, exUnitsSteps} <- - WrapExUnits (ExUnits' exUnitsMem exUnitsSteps) - where - ExUnits m s = WrapExUnits (ExUnits' m s) - -{-# COMPLETE ExUnits #-} - --- | It is deliberate that there is no `Ord` instance for `ExUnits`. Use this function to --- compare if one `ExUnit` is pointwise compareable to another. In case when `Ord` --- instance like comparison is necessary you can use @`zipSemiExUnits` `compare`@ -pointWiseExUnits :: (Natural -> Natural -> Bool) -> ExUnits -> ExUnits -> Bool -pointWiseExUnits f ex1 ex2 = getAll (zipSemiExUnits (\x y -> All (f x y)) ex1 ex2) - --- | Pointwise combine units into a semigroup and mappened the results. -zipSemiExUnits :: Semigroup a => (Natural -> Natural -> a) -> ExUnits -> ExUnits -> a -zipSemiExUnits f (ExUnits m1 s1) (ExUnits m2 s2) = (m1 `f` m2) <> (s1 `f` s2) - --- ================================== - --- | Prices per execution unit -data Prices = Prices - { prMem :: !NonNegativeInterval - , prSteps :: !NonNegativeInterval - } - deriving (Eq, Generic, Show, Ord) - -instance NoThunks Prices - -instance NFData Prices - -instance ToJSON Prices where - toJSON Prices {prSteps, prMem} = - object - [ "priceSteps" .= prSteps - , "priceMemory" .= prMem - ] - -instance FromJSON Prices where - parseJSON = - withObject "prices" $ \o -> do - prSteps <- o .: "priceSteps" <|> o .: "prSteps" - prMem <- o .: "priceMemory" <|> o .: "prMem" - return Prices {prSteps, prMem} - --- | Compute the cost of a script based upon prices and the number of execution --- units. -txscriptfee :: Prices -> ExUnits -> Coin -txscriptfee Prices {prMem, prSteps} ExUnits {exUnitsMem = m, exUnitsSteps = s} = - Coin $ - ceiling $ - (fromIntegral m * unboundRational prMem) - + (fromIntegral s * unboundRational prSteps) - -instance EncCBOR ExUnits where - encCBOR (ExUnits m s) = encode $ Rec ExUnits !> To m !> To s - -instance DecCBOR ExUnits where - decCBOR = decode $ RecD ExUnits fromIntegral (Prelude.maxBound :: Int64)) - ( cborError $ - DecoderErrorCustom "ExUnits field" "values must not exceed maxBound :: Int64" - ) - pure $ wordToNatural x - {-# INLINE decNat #-} - wordToNatural :: Word64 -> Natural - wordToNatural = fromIntegral - {-# INLINE wordToNatural #-} - {-# INLINE decCBOR #-} - -instance EncCBOR Prices where - encCBOR (Prices m s) = encode $ Rec Prices !> To m !> To s - -instance DecCBOR Prices where - decCBOR = decode $ RecD Prices P.MajorProtocolVersion -toMajorProtocolVersion = P.MajorProtocolVersion . getVersion - -instance PlutusLanguage l => DecCBOR (PlutusRunnable l) where - decCBOR = do - plutus <- decCBOR - pv <- getDecoderVersion - either (fail . show) pure $ decodePlutusRunnable pv plutus - -instance PlutusLanguage l => EncCBOR (PlutusRunnable l) where - encCBOR = encCBOR . plutusFromRunnable - --- | Serialized representation of a Plutus script that distinguishes the language version at the --- type level. When encoded in CBOR language version is also encoded. -newtype Plutus (l :: Language) = Plutus - { plutusBinary :: PlutusBinary - } - deriving stock (Show, Generic) - deriving newtype (Eq, Ord, SafeToHash, NoThunks, NFData) - -plutusSLanguage :: PlutusLanguage l => proxy l -> SLanguage l -plutusSLanguage _ = isLanguage - --- | Compute a `ScriptHash` of a `Plutus` script. This function is equivalent to --- `Cardano.Ledger.Core.hashScript`, except it is restricted to Plutus scripts -hashPlutusScript :: (PlutusLanguage l, Crypto c) => Plutus l -> ScriptHash c -hashPlutusScript plutusScript = - ScriptHash $ - Hash.castHash $ - Hash.hashWith id (BS.singleton (plutusLanguageTag plutusScript) <> originalBytes plutusScript) - -decodePlutus :: Decoder s (Language, PlutusBinary) -decodePlutus = decodeRecordNamed "Plutus" (const 2) $ (,) <$> decCBOR <*> decCBOR - --- | Plutus script decoder that will enforce the type level language equals the one --- included in the serialization -decodeWithPlutus :: (forall si l. PlutusLanguage l => Plutus l -> Decoder si a) -> Decoder so a -decodeWithPlutus decoderAction = do - (lang, binary) <- decodePlutus - withSLanguage lang $ \slang -> - decoderAction $ asSLanguage slang $ Plutus binary - -instance PlutusLanguage l => DecCBOR (Plutus l) where - decCBOR = do - (langDecoded, binary) <- decodePlutus - let plutus = Plutus binary - langExpected = plutusLanguage plutus - when (langDecoded /= langExpected) $ do - fail $ "Expected " <> show langExpected <> ", but got: " <> show langDecoded - pure plutus - -instance PlutusLanguage l => EncCBOR (Plutus l) where - encCBOR plutus@(Plutus binaryScript) = - encodeListLen 2 <> encodeEnum lang <> encCBOR binaryScript - where - lang = plutusLanguage plutus - --- | Verify that the binary version of the Plutus script is deserializable. -isValidPlutus :: PlutusLanguage l => Version -> Plutus l -> Bool -isValidPlutus v = isRight . decodePlutusRunnable v - --- | Serialize the runnable version of the plutus script --- --- prop> decodePlutusRunnable majVer (plutusFromRunnable pr) == Right pr -plutusFromRunnable :: PlutusRunnable l -> Plutus l -plutusFromRunnable = Plutus . PlutusBinary . P.serialisedScript . plutusRunnable - --- | Binary representation of a Plutus script. -newtype PlutusBinary = PlutusBinary {unPlutusBinary :: ShortByteString} - deriving stock (Eq, Ord, Generic) - deriving newtype (ToCBOR, FromCBOR, EncCBOR, DecCBOR, NFData, NoThunks) - -instance Show PlutusBinary where - show = show . B64.encode . fromShort . unPlutusBinary - -instance DecCBOR (Annotator PlutusBinary) where - decCBOR = pure <$> decCBOR - -instance SafeToHash PlutusBinary where - originalBytes (PlutusBinary binaryBlutus) = fromShort binaryBlutus - --- | Non-Native Plutus Script language. This is expected to be an open type. We will add --- new Constuctors to this type as additional Plutus language versions as are added. We --- use an enumerated type for two reasons. --- --- 1. We can write total functions by case analysis over the constructors --- --- 2. We use DataKinds to make some datatypes indexed by Language. --- --- Note that the the serialization of 'Language' depends on the ordering. -data Language - = PlutusV1 - | PlutusV2 - | PlutusV3 - deriving (Eq, Generic, Show, Ord, Enum, Bounded, Ix) - -instance NoThunks Language - -instance NFData Language - --- | Make a language from its `Enum` index. -mkLanguageEnum :: Int -> Maybe Language -mkLanguageEnum iLang - | minLang <= iLang && iLang <= maxLang = Just $ toEnum iLang - | otherwise = Nothing - where - minLang = fromEnum (minBound :: Language) - maxLang = fromEnum (maxBound :: Language) - -instance FromJSON Language where - parseJSON = withText "Language" languageFromText - -instance ToJSON Language where - toJSON = String . languageToText - -instance ToJSONKey Language where - toJSONKey = toJSONKeyText languageToText - -instance FromJSONKey Language where - fromJSONKey = FromJSONKeyTextParser languageFromText - -languageToText :: Language -> Text -languageToText PlutusV1 = "PlutusV1" -languageToText PlutusV2 = "PlutusV2" -languageToText PlutusV3 = "PlutusV3" - -languageFromText :: MonadFail m => Text -> m Language -languageFromText "PlutusV1" = pure PlutusV1 -languageFromText "PlutusV2" = pure PlutusV2 -languageFromText "PlutusV3" = pure PlutusV3 -languageFromText lang = fail $ "Error decoding Language: " ++ show lang - -instance ToCBOR Language where - toCBOR = Plain.encodeEnum - -instance FromCBOR Language where - fromCBOR = Plain.decodeEnumBounded - -instance EncCBOR Language - -instance DecCBOR Language - -nonNativeLanguages :: [Language] -nonNativeLanguages = [minBound .. maxBound] - --- | Singleton for '@Language@' -data SLanguage (l :: Language) where - SPlutusV1 :: SLanguage 'PlutusV1 - SPlutusV2 :: SLanguage 'PlutusV2 - SPlutusV3 :: SLanguage 'PlutusV3 - -deriving instance Eq (SLanguage l) - -deriving instance Show (SLanguage l) - -instance PlutusLanguage l => ToCBOR (SLanguage l) where - toCBOR = toCBOR . fromSLanguage - -instance PlutusLanguage l => FromCBOR (SLanguage l) where - fromCBOR = toSLanguage =<< fromCBOR @Language - -instance PlutusLanguage l => EncCBOR (SLanguage l) - -instance PlutusLanguage l => DecCBOR (SLanguage l) - --- | Reflection for '@SLanguage@' -fromSLanguage :: PlutusLanguage l => SLanguage l -> Language -fromSLanguage = plutusLanguage -{-# DEPRECATED fromSLanguage "In favor of `plutusLanguage`" #-} - --- | Construct value level laguage version from the type level -plutusLanguage :: forall l proxy. PlutusLanguage l => proxy l -> Language -plutusLanguage _ = case isLanguage @l of - SPlutusV1 -> PlutusV1 - SPlutusV2 -> PlutusV2 - SPlutusV3 -> PlutusV3 - --- | For implicit reflection on '@SLanguage@' --- See "Cardano.Ledger.Alonzo.Plutus.TxInfo" for example usage -class Typeable l => PlutusLanguage (l :: Language) where - isLanguage :: SLanguage l - - -- | Tag that will be used as a prefix to compute the `ScriptHash` - plutusLanguageTag :: Plutus l -> Word8 - - decodePlutusRunnable :: - -- | Which major protocol version to use for deserialization and further execution - Version -> - -- | Binary version of the script that will be deserialized - Plutus l -> - Either P.ScriptDecodeError (PlutusRunnable l) - - evaluatePlutusRunnable :: - -- | Which major protocol version to use for script execution - Version -> - -- | Whether to produce log output - P.VerboseMode -> - -- | Includes the cost model to use for tallying up the execution costs - P.EvaluationContext -> - -- | The resource budget which must not be exceeded during evaluation - P.ExBudget -> - -- | The script to evaluate - PlutusRunnable l -> - -- | The arguments to the script - [P.Data] -> - (P.LogOutput, Either P.EvaluationError P.ExBudget) - - -- | Similar to `evaluatePlutusRunnable`, except does not require `P.ExBudget` to be - -- provided as input and instead computes it as output. This function is meant to be - -- used for testing. - evaluatePlutusRunnableBudget :: - -- | Which major protocol version to use for script execution - Version -> - -- | Whether to produce log output - P.VerboseMode -> - -- | Includes the cost model to use for tallying up the execution costs - P.EvaluationContext -> - -- | The script to evaluate - PlutusRunnable l -> - -- | The arguments to the script - [P.Data] -> - (P.LogOutput, Either P.EvaluationError P.ExBudget) - -instance PlutusLanguage 'PlutusV1 where - isLanguage = SPlutusV1 - plutusLanguageTag _ = 0x01 - decodePlutusRunnable pv (Plutus (PlutusBinary bs)) = - PlutusRunnable <$> PV1.deserialiseScript (toMajorProtocolVersion pv) bs - evaluatePlutusRunnable pv vm ec exBudget (PlutusRunnable rs) = - PV1.evaluateScriptRestricting (toMajorProtocolVersion pv) vm ec exBudget rs - evaluatePlutusRunnableBudget pv vm ec (PlutusRunnable rs) = - PV1.evaluateScriptCounting (toMajorProtocolVersion pv) vm ec rs - -instance PlutusLanguage 'PlutusV2 where - isLanguage = SPlutusV2 - plutusLanguageTag _ = 0x02 - decodePlutusRunnable pv (Plutus (PlutusBinary bs)) = - PlutusRunnable <$> PV2.deserialiseScript (toMajorProtocolVersion pv) bs - evaluatePlutusRunnable pv vm ec exBudget (PlutusRunnable rs) = - PV2.evaluateScriptRestricting (toMajorProtocolVersion pv) vm ec exBudget rs - evaluatePlutusRunnableBudget pv vm ec (PlutusRunnable rs) = - PV2.evaluateScriptCounting (toMajorProtocolVersion pv) vm ec rs - -instance PlutusLanguage 'PlutusV3 where - isLanguage = SPlutusV3 - plutusLanguageTag _ = 0x03 - decodePlutusRunnable pv (Plutus (PlutusBinary bs)) = - PlutusRunnable <$> PV3.deserialiseScript (toMajorProtocolVersion pv) bs - evaluatePlutusRunnable pv vm ec exBudget (PlutusRunnable rs) = - PV3.evaluateScriptRestricting (toMajorProtocolVersion pv) vm ec exBudget rs - evaluatePlutusRunnableBudget pv vm ec (PlutusRunnable rs) = - PV3.evaluateScriptCounting (toMajorProtocolVersion pv) vm ec rs - -toSLanguage :: forall l m. (PlutusLanguage l, MonadFail m) => Language -> m (SLanguage l) -toSLanguage lang - | fromSLanguage thisLanguage == lang = pure thisLanguage - | otherwise = - fail $ - "Plutus language mismatch. Expected " - ++ show thisLanguage - ++ ", but got: " - ++ show lang - where - thisLanguage :: SLanguage l - thisLanguage = isLanguage - -asSLanguage :: SLanguage l -> proxy l -> proxy l -asSLanguage = flip const - -withSLanguage :: Language -> (forall l. PlutusLanguage l => SLanguage l -> a) -> a -withSLanguage l f = - case l of - PlutusV1 -> f SPlutusV1 - PlutusV2 -> f SPlutusV2 - PlutusV3 -> f SPlutusV3 - --- | Prevent decoding a version of Plutus until --- the appropriate protocol version. -guardPlutus :: Language -> Decoder s () -guardPlutus lang = - let v = case lang of - PlutusV1 -> natVersion @5 - PlutusV2 -> natVersion @7 - PlutusV3 -> natVersion @9 - in unlessDecoderVersionAtLeast v $ - fail (show lang <> " is not supported until " <> show v <> " major protocol version") diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/Plutus/ToPlutusData.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/Plutus/ToPlutusData.hs deleted file mode 100644 index 607576f5895..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/Plutus/ToPlutusData.hs +++ /dev/null @@ -1,127 +0,0 @@ -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} - -module Cardano.Ledger.Plutus.ToPlutusData where - -import Cardano.Ledger.BaseTypes ( - BoundedRational (boundRational, unboundRational), - EpochInterval (..), - NonNegativeInterval, - ProtVer (..), - UnitInterval, - ) -import Cardano.Ledger.Binary.Version (Version, getVersion, mkVersion) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Plutus.CostModels ( - CostModels, - flattenCostModels, - mkCostModelsLenient, - ) -import Cardano.Ledger.Plutus.ExUnits (ExUnits (..), Prices (..)) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Ratio ((%)) -import Data.Word -import GHC.Real (Ratio ((:%))) -import Numeric.Natural (Natural) -import PlutusLedgerApi.Common (Data (..)) - --- =============================================================== - --- ToPlutusData class, and instances for parameterized data types List, Map. - -class ToPlutusData x where - toPlutusData :: x -> Data - fromPlutusData :: Data -> Maybe x - fromPlutusData _ = Nothing - -instance ToPlutusData a => ToPlutusData [a] where - toPlutusData xs = List (map toPlutusData xs) - fromPlutusData (List xs) = mapM fromPlutusData xs - fromPlutusData _ = Nothing - -instance (Ord a, ToPlutusData a, ToPlutusData b) => ToPlutusData (Map a b) where - toPlutusData m = Map $ map (\(a, b) -> (toPlutusData a, toPlutusData b)) (Map.toAscList m) - fromPlutusData (Map pairs) = - Map.fromList - <$> mapM (\(k, v) -> (,) <$> fromPlutusData k <*> fromPlutusData v) pairs - fromPlutusData _ = Nothing - --- ========================================================== --- ToPlutusData instances for concrete types needed for PParamUpdates - -instance ToPlutusData Version where - toPlutusData v = I (getVersion @Integer v) - fromPlutusData (I n) = mkVersion @Integer n - fromPlutusData _ = Nothing - -instance ToPlutusData ProtVer where - toPlutusData pv = List [toPlutusData (pvMajor pv), toPlutusData (pvMinor pv)] - fromPlutusData (List [major, minor]) = ProtVer <$> fromPlutusData major <*> fromPlutusData minor - fromPlutusData _ = Nothing - -instance ToPlutusData UnitInterval where - toPlutusData x = List [I num, I denom] - where - (num :% denom) = unboundRational x - fromPlutusData (List [I num, I denom]) = boundRational (num % denom) - fromPlutusData _ = Nothing - -instance ToPlutusData NonNegativeInterval where - toPlutusData x = List [I num, I denom] - where - (num :% denom) = unboundRational x - fromPlutusData (List [I num, I denom]) = boundRational (num % denom) - fromPlutusData _ = Nothing - -instance ToPlutusData CostModels where - toPlutusData cmdls = toPlutusData (flattenCostModels cmdls) - fromPlutusData x = mkCostModelsLenient <$> fromPlutusData x - -instance ToPlutusData ExUnits where - toPlutusData (ExUnits a b) = List [toPlutusData a, toPlutusData b] - fromPlutusData (List [x, y]) = ExUnits <$> fromPlutusData x <*> fromPlutusData y - fromPlutusData _ = Nothing - -instance ToPlutusData Prices where - toPlutusData p = List [toPlutusData (prMem p), toPlutusData (prSteps p)] - fromPlutusData (List [x, y]) = Prices <$> fromPlutusData x <*> fromPlutusData y - fromPlutusData _ = Nothing - -deriving instance ToPlutusData Coin - -instance ToPlutusData Word32 where - toPlutusData w32 = I (toInteger @Word32 w32) - fromPlutusData (I n) - | n >= 0 && n <= toInteger (maxBound @Word32) = - Just $ fromInteger @Word32 n - fromPlutusData _ = Nothing - -instance ToPlutusData Word16 where - toPlutusData w16 = I (toInteger @Word16 w16) - fromPlutusData (I n) | n >= 0 && n <= toInteger (maxBound @Word16) = Just $ fromInteger @Word16 n - fromPlutusData _ = Nothing - -instance ToPlutusData Word8 where - toPlutusData w8 = I (toInteger @Word8 w8) - fromPlutusData (I n) | n >= 0 && n <= toInteger (maxBound @Word8) = Just $ fromInteger @Word8 n - fromPlutusData _ = Nothing - -deriving instance ToPlutusData EpochInterval - -instance ToPlutusData Natural where - toPlutusData nat = I (toInteger @Natural nat) - fromPlutusData (I n) | n >= 0 = Just $ fromInteger @Natural n - fromPlutusData _ = Nothing - -instance ToPlutusData Integer where - toPlutusData n = I n - fromPlutusData (I n) = Just n - fromPlutusData _ = Nothing - -instance ToPlutusData Word where - toPlutusData w = I (toInteger @Word w) - fromPlutusData (I n) | n >= 0 && n <= toInteger (maxBound @Word) = Just $ fromInteger @Word n - fromPlutusData _ = Nothing diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/Plutus/TxInfo.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/Plutus/TxInfo.hs deleted file mode 100644 index b698a3ea266..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/Plutus/TxInfo.hs +++ /dev/null @@ -1,212 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DefaultSignatures #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} - -module Cardano.Ledger.Plutus.TxInfo ( - TxOutSource (..), - txOutSourceToText, - transAddr, - transRewardAccount, - transDataHash, - transKeyHash, - transSafeHash, - transScriptHash, - transTxId, - transStakeReference, - transCred, - slotToPOSIXTime, - transTxIn, - transCoinToValue, - transCoinToLovelace, - transDataPair, - transExUnits, - exBudgetToExUnits, - transBoundedRational, - transEpochNo, - transEpochInterval, -) -where - -import Cardano.Crypto.Hash.Class (hashToBytes) -import Cardano.Ledger.Address (Addr (..), RewardAccount (..)) -import Cardano.Ledger.BaseTypes ( - BoundedRational (unboundRational), - EpochInterval (..), - EpochNo (..), - TxIx, - certIxToInt, - txIxToInt, - ) -import Cardano.Ledger.Binary (DecCBOR (..), EncCBOR (..)) -import Cardano.Ledger.Binary.Coders ( - Decode (..), - Encode (..), - decode, - encode, - (!>), - ( EncCBOR (TxOutSource c) where - encCBOR = \case - TxOutFromInput txIn -> encode $ Sum TxOutFromInput 0 !> To txIn - TxOutFromOutput txIx -> encode $ Sum TxOutFromOutput 1 !> To txIx - -instance Crypto c => DecCBOR (TxOutSource c) where - decCBOR = decode (Summands "TxOutSource" dec) - where - dec 0 = SumD TxOutFromInput Text -txOutSourceToText = \case - TxOutFromInput txIn -> "Input: " <> txInToText txIn - TxOutFromOutput txIx -> "Output: " <> T.pack (show txIx) - -transBoundedRational :: BoundedRational r => r -> PV3.Rational -transBoundedRational = PV3.fromGHC . unboundRational - -transDataHash :: DataHash c -> PV1.DatumHash -transDataHash safe = PV1.DatumHash (transSafeHash safe) - -transKeyHash :: KeyHash d c -> PV1.PubKeyHash -transKeyHash (KeyHash h) = PV1.PubKeyHash (PV1.toBuiltin (hashToBytes h)) - -transSafeHash :: SafeHash c i -> PV1.BuiltinByteString -transSafeHash = PV1.toBuiltin . hashToBytes . extractHash - -transScriptHash :: ScriptHash c -> PV1.ScriptHash -transScriptHash (ScriptHash h) = PV1.ScriptHash (PV1.toBuiltin (hashToBytes h)) - -transStakeReference :: StakeReference c -> Maybe PV1.StakingCredential -transStakeReference (StakeRefBase cred) = Just (PV1.StakingHash (transCred cred)) -transStakeReference (StakeRefPtr (Ptr (SlotNo slot) txIx certIx)) = - let !txIxInteger = toInteger (txIxToInt txIx) - !certIxInteger = toInteger (certIxToInt certIx) - in Just (PV1.StakingPtr (fromIntegral slot) txIxInteger certIxInteger) -transStakeReference StakeRefNull = Nothing - -transCred :: Credential kr c -> PV1.Credential -transCred (KeyHashObj (KeyHash kh)) = - PV1.PubKeyCredential (PV1.PubKeyHash (PV1.toBuiltin (hashToBytes kh))) -transCred (ScriptHashObj (ScriptHash sh)) = - PV1.ScriptCredential (PV1.ScriptHash (PV1.toBuiltin (hashToBytes sh))) - --- | Translate an address. `Cardano.Ledger.BaseTypes.NetworkId` is discarded and Byron --- Addresses will result in Nothing. -transAddr :: Addr c -> Maybe PV1.Address -transAddr = \case - AddrBootstrap {} -> Nothing - Addr _networkId paymentCred stakeReference -> - Just (PV1.Address (transCred paymentCred) (transStakeReference stakeReference)) - --- | Translate reward account by discarding `NetowrkId` and only translating the staking credential. --- --- /Note/ - This function is the right one to use starting with PlutusV3, prior to that an --- extra `PV1.StakingHash` wrapper is needed. -transRewardAccount :: RewardAccount c -> PV1.Credential -transRewardAccount (RewardAccount _networkId cred) = transCred cred - -slotToPOSIXTime :: - EpochInfo (Either Text) -> - SystemStart -> - SlotNo -> - Either Text PV1.POSIXTime -slotToPOSIXTime ei sysS s = do - PV1.POSIXTime . (truncate . (* 1000)) . nominalDiffTimeToSeconds . utcTimeToPOSIXSeconds - <$> epochInfoSlotToUTCTime ei sysS s - --- ======================================== --- translate TxIn and TxOut - -transTxId :: TxId c -> PV1.TxId -transTxId (TxId safe) = PV1.TxId (transSafeHash safe) - -transTxIn :: TxIn c -> PV1.TxOutRef -transTxIn (TxIn txid txIx) = PV1.TxOutRef (transTxId txid) (toInteger (txIxToInt txIx)) - -transCoinToValue :: Coin -> PV1.Value -transCoinToValue (Coin c) = PV1.singleton PV1.adaSymbol PV1.adaToken c - -transDataPair :: (DataHash c, Data era) -> (PV1.DatumHash, PV1.Datum) -transDataPair (x, y) = (transDataHash x, PV1.Datum (PV1.dataToBuiltinData (getPlutusData y))) - -transExUnits :: ExUnits -> PV1.ExBudget -transExUnits (ExUnits mem steps) = - PV1.ExBudget (PV1.ExCPU (fromIntegral steps)) (PV1.ExMemory (fromIntegral mem)) - -exBudgetToExUnits :: PV1.ExBudget -> Maybe ExUnits -exBudgetToExUnits (PV1.ExBudget (PV1.ExCPU steps) (PV1.ExMemory memory)) = - ExUnits - <$> safeFromSatInt memory - <*> safeFromSatInt steps - where - safeFromSatInt :: SatInt -> Maybe Natural - safeFromSatInt i - | i >= 0 = Just . fromInteger $ fromSatInt i - | otherwise = Nothing - -transCoinToLovelace :: Coin -> PV1.Lovelace -transCoinToLovelace (Coin c) = PV1.Lovelace c - -transEpochNo :: EpochNo -> Integer -transEpochNo = toInteger . unEpochNo - -transEpochInterval :: EpochInterval -> Integer -transEpochInterval = toInteger . unEpochInterval diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/PoolDistr.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/PoolDistr.hs deleted file mode 100644 index edb7a5a812f..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/PoolDistr.hs +++ /dev/null @@ -1,112 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE UndecidableInstances #-} - --- | The stake distribution, aggregated by stake pool (as opposed to stake credential), --- plays a primary role in Cardano's proof of stake network. --- Together with the VRF checks, the stake distribution determines leader election. --- The leader election is the precisely the part of the ledger that is --- determined by Ouroboros (Praos and Genesis), our consensus mechanism. --- See Section 16, "Leader Value Calculation", of the --- . -module Cardano.Ledger.PoolDistr ( - IndividualPoolStake (..), - PoolDistr (..), -) -where - -import Cardano.Ledger.Binary (DecCBOR (..), EncCBOR (..), decodeRecordNamed, encodeListLen) -import Cardano.Ledger.Crypto -import Cardano.Ledger.Keys (Hash, KeyHash, KeyRole (..), VerKeyVRF) -import Control.DeepSeq (NFData) -import Control.SetAlgebra (BaseRep (MapR), Embed (..), Exp (Base), HasExp (..)) -import Data.Aeson (KeyValue, ToJSON (..), object, pairs, (.=)) -import Data.Map.Strict (Map) -import GHC.Generics (Generic) -import NoThunks.Class (NoThunks (..)) - --- | The 'IndividualPoolStake' contains all the stake controlled --- by a single stake pool (the combination of owners and delegates) --- for a given epoch, and also the hash of the stake pool's --- registered VRF key. --- --- When a stake pool produces a block, the header contains the --- full VRF verification key and VRF value for leader election. --- We check the VRF key against the value in 'IndividualPoolStake' --- and we check the VRF value using the epoch nonce and --- the relative stake of the pool as given in 'IndividualPoolStake'. --- The stake is relative to the total amount of active stake --- in the network. Stake is active if it is both registered and --- delegated to a registered stake pool. -data IndividualPoolStake c = IndividualPoolStake - { individualPoolStake :: !Rational - , individualPoolStakeVrf :: !(Hash c (VerKeyVRF c)) - } - deriving stock (Show, Eq, Generic) - deriving anyclass (NFData, NoThunks) - -instance Crypto c => EncCBOR (IndividualPoolStake c) where - encCBOR (IndividualPoolStake stake vrf) = - mconcat - [ encodeListLen 2 - , encCBOR stake - , encCBOR vrf - ] - -instance Crypto c => DecCBOR (IndividualPoolStake c) where - decCBOR = - decodeRecordNamed "IndividualPoolStake" (const 2) $ - IndividualPoolStake - <$> decCBOR - <*> decCBOR - -instance Crypto c => ToJSON (IndividualPoolStake c) where - toJSON = object . toIndividualPoolStakePair - toEncoding = pairs . mconcat . toIndividualPoolStakePair - -toIndividualPoolStakePair :: (KeyValue e a, Crypto c) => IndividualPoolStake c -> [a] -toIndividualPoolStakePair indivPoolStake@(IndividualPoolStake _ _) = - let IndividualPoolStake {..} = indivPoolStake - in [ "individualPoolStake" .= individualPoolStake - , "individualPoolStakeVrf" .= individualPoolStakeVrf - ] - --- | A map of stake pool IDs (the hash of the stake pool operator's --- verification key) to 'IndividualPoolStake'. -newtype PoolDistr c = PoolDistr - { unPoolDistr :: Map (KeyHash 'StakePool c) (IndividualPoolStake c) - } - deriving stock (Show, Eq, Generic) - deriving newtype (EncCBOR, DecCBOR, NFData, NoThunks, ToJSON) - --- =============================== - -instance - HasExp - (PoolDistr c) - ( Map - (KeyHash 'StakePool c) - (IndividualPoolStake c) - ) - where - toExp (PoolDistr x) = Base MapR x - --- | We can Embed a Newtype around a Map (or other Iterable type) and then use it in a set expression. -instance - Embed - (PoolDistr c) - ( Map - (KeyHash 'StakePool c) - (IndividualPoolStake c) - ) - where - toBase (PoolDistr x) = x - fromBase = PoolDistr diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/PoolParams.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/PoolParams.hs deleted file mode 100644 index d8953584d3a..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/PoolParams.hs +++ /dev/null @@ -1,341 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} - -module Cardano.Ledger.PoolParams ( - PoolParams (..), - PoolMetadata (..), - StakePoolRelay (..), - SizeOfPoolRelays (..), - SizeOfPoolOwners (..), - - -- * Deprecations - ppRewardAcnt, -) -where - -import Cardano.Ledger.Address (RewardAccount (..)) -import Cardano.Ledger.BaseTypes ( - DnsName, - Port, - StrictMaybe (..), - UnitInterval, - Url, - invalidKey, - maybeToStrictMaybe, - strictMaybeToMaybe, - ) -import Cardano.Ledger.Binary ( - CBORGroup (..), - Case (..), - DecCBOR (decCBOR), - DecCBORGroup (..), - EncCBOR (..), - EncCBORGroup (..), - Size, - decodeNullMaybe, - decodeRecordNamed, - decodeRecordSum, - encodeListLen, - encodeNullMaybe, - szCases, - ) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Crypto -import Cardano.Ledger.Keys ( - Hash, - KeyHash (..), - KeyRole (..), - VerKeyVRF, - ) -import Cardano.Ledger.Orphans () -import Control.DeepSeq (NFData ()) -import Data.Aeson (FromJSON (..), ToJSON (..), Value, (.!=), (.:), (.:?), (.=)) -import qualified Data.Aeson as Aeson -import Data.Aeson.Types (Parser, explicitParseField) -import Data.ByteString (ByteString) -import qualified Data.ByteString.Base16 as B16 -import qualified Data.ByteString.Char8 as Char8 -import Data.Default.Class (Default (..)) -import Data.Foldable (asum) -import Data.IP (IPv4, IPv6) -import Data.Proxy (Proxy (..)) -import Data.Sequence.Strict (StrictSeq) -import Data.Set (Set) -import qualified Data.Text.Encoding as Text -import Data.Word (Word8) -import GHC.Generics (Generic) -import NoThunks.Class (NoThunks (..)) - --- ======================================================================== - -data PoolMetadata = PoolMetadata - { pmUrl :: !Url - , pmHash :: !ByteString - } - deriving (Eq, Ord, Generic, Show) - -deriving instance NFData PoolMetadata - -instance ToJSON PoolMetadata where - toJSON pmd = - Aeson.object - [ "url" .= pmUrl pmd - , "hash" .= Text.decodeLatin1 (B16.encode (pmHash pmd)) - ] - -instance FromJSON PoolMetadata where - parseJSON = - Aeson.withObject "PoolMetadata" $ \obj -> do - url <- obj .: "url" - hash <- explicitParseField parseJsonBase16 obj "hash" - return $ PoolMetadata url hash - -parseJsonBase16 :: Value -> Parser ByteString -parseJsonBase16 v = do - s <- parseJSON v - case B16.decode (Char8.pack s) of - Right bs -> return bs - Left msg -> fail msg - -instance NoThunks PoolMetadata - -data StakePoolRelay - = -- | One or both of IPv4 & IPv6 - SingleHostAddr !(StrictMaybe Port) !(StrictMaybe IPv4) !(StrictMaybe IPv6) - | -- | An @A@ or @AAAA@ DNS record - SingleHostName !(StrictMaybe Port) !DnsName - | -- | A @SRV@ DNS record - MultiHostName !DnsName - deriving (Eq, Ord, Generic, Show) - -instance FromJSON StakePoolRelay where - parseJSON = - Aeson.withObject "StakePoolRelay" $ \obj -> - asum - [ explicitParseField parser1 obj "single host address" - , explicitParseField parser2 obj "single host name" - , explicitParseField parser3 obj "multi host name" - ] - where - parser1 = Aeson.withObject "SingleHostAddr" $ \obj -> - SingleHostAddr - <$> obj .:? "port" .!= SNothing - <*> obj .:? "IPv4" .!= SNothing - <*> obj .:? "IPv6" .!= SNothing - parser2 = Aeson.withObject "SingleHostName" $ \obj -> - SingleHostName - <$> obj .:? "port" .!= SNothing - <*> obj .: "dnsName" - parser3 = Aeson.withObject "MultiHostName" $ \obj -> - MultiHostName - <$> obj .: "dnsName" - -instance ToJSON StakePoolRelay where - toJSON (SingleHostAddr port ipv4 ipv6) = - Aeson.object - [ "single host address" - .= Aeson.object - [ "port" .= port - , "IPv4" .= ipv4 - , "IPv6" .= ipv6 - ] - ] - toJSON (SingleHostName port dnsName) = - Aeson.object - [ "single host name" - .= Aeson.object - [ "port" .= port - , "dnsName" .= dnsName - ] - ] - toJSON (MultiHostName dnsName) = - Aeson.object - [ "multi host name" - .= Aeson.object - [ "dnsName" .= dnsName - ] - ] - -instance NoThunks StakePoolRelay - -instance NFData StakePoolRelay - -instance EncCBOR StakePoolRelay where - encCBOR (SingleHostAddr p ipv4 ipv6) = - encodeListLen 4 - <> encCBOR (0 :: Word8) - <> encodeNullMaybe encCBOR (strictMaybeToMaybe p) - <> encodeNullMaybe encCBOR (strictMaybeToMaybe ipv4) - <> encodeNullMaybe encCBOR (strictMaybeToMaybe ipv6) - encCBOR (SingleHostName p n) = - encodeListLen 3 - <> encCBOR (1 :: Word8) - <> encodeNullMaybe encCBOR (strictMaybeToMaybe p) - <> encCBOR n - encCBOR (MultiHostName n) = - encodeListLen 2 - <> encCBOR (2 :: Word8) - <> encCBOR n - -instance DecCBOR StakePoolRelay where - decCBOR = decodeRecordSum "StakePoolRelay" $ - \case - 0 -> - (\x y z -> (4, SingleHostAddr x y z)) - <$> (maybeToStrictMaybe <$> decodeNullMaybe decCBOR) - <*> (maybeToStrictMaybe <$> decodeNullMaybe decCBOR) - <*> (maybeToStrictMaybe <$> decodeNullMaybe decCBOR) - 1 -> - (\x y -> (3, SingleHostName x y)) - <$> (maybeToStrictMaybe <$> decodeNullMaybe decCBOR) - <*> decCBOR - 2 -> do - x <- decCBOR - pure (2, MultiHostName x) - k -> invalidKey k - --- | A stake pool. -data PoolParams c = PoolParams - { ppId :: !(KeyHash 'StakePool c) - , ppVrf :: !(Hash c (VerKeyVRF c)) - , ppPledge :: !Coin - , ppCost :: !Coin - , ppMargin :: !UnitInterval - , ppRewardAccount :: !(RewardAccount c) - , ppOwners :: !(Set (KeyHash 'Staking c)) - , ppRelays :: !(StrictSeq StakePoolRelay) - , ppMetadata :: !(StrictMaybe PoolMetadata) - } - deriving (Show, Generic, Eq, Ord) - deriving (EncCBOR) via CBORGroup (PoolParams c) - deriving (DecCBOR) via CBORGroup (PoolParams c) - -ppRewardAcnt :: PoolParams c -> RewardAccount c -ppRewardAcnt = ppRewardAccount -{-# DEPRECATED ppRewardAcnt "Use `ppRewardAccount` instead" #-} - -instance Crypto c => Default (PoolParams c) where - def = PoolParams def def (Coin 0) (Coin 0) def def def def def - -instance NoThunks (PoolParams c) - -deriving instance NFData (PoolParams c) - -instance Crypto c => ToJSON (PoolParams c) where - toJSON pp = - Aeson.object - [ "publicKey" .= ppId pp -- TODO publicKey is an unfortunate name, should be poolId - , "vrf" .= ppVrf pp - , "pledge" .= ppPledge pp - , "cost" .= ppCost pp - , "margin" .= ppMargin pp - , "rewardAccount" .= ppRewardAcnt pp - , "owners" .= ppOwners pp - , "relays" .= ppRelays pp - , "metadata" .= ppMetadata pp - ] - -instance Crypto c => FromJSON (PoolParams c) where - parseJSON = - Aeson.withObject "PoolParams" $ \obj -> - PoolParams - <$> obj .: "publicKey" -- TODO publicKey is an unfortunate name, should be poolId - <*> obj .: "vrf" - <*> obj .: "pledge" - <*> obj .: "cost" - <*> obj .: "margin" - <*> obj .: "rewardAccount" - <*> obj .: "owners" - <*> obj .: "relays" - <*> obj .: "metadata" - -instance EncCBOR PoolMetadata where - encCBOR (PoolMetadata u h) = - encodeListLen 2 - <> encCBOR u - <> encCBOR h - -instance DecCBOR PoolMetadata where - decCBOR = do - decodeRecordNamed "PoolMetadata" (const 2) (PoolMetadata <$> decCBOR <*> decCBOR) - --- | The size of the 'ppOwners' 'Set'. Only used to compute size of encoded --- 'PoolParams'. -data SizeOfPoolOwners = SizeOfPoolOwners - -instance EncCBOR SizeOfPoolOwners where - encCBOR = error "The `SizeOfPoolOwners` type cannot be encoded!" - --- | The size of the 'ppRelays' 'Set'. Only used to compute size of encoded --- 'PoolParams'. -data SizeOfPoolRelays = SizeOfPoolRelays - -instance EncCBOR SizeOfPoolRelays where - encCBOR = error "The `SizeOfPoolRelays` type cannot be encoded!" - -instance Crypto c => EncCBORGroup (PoolParams c) where - encCBORGroup poolParams = - encCBOR (ppId poolParams) - <> encCBOR (ppVrf poolParams) - <> encCBOR (ppPledge poolParams) - <> encCBOR (ppCost poolParams) - <> encCBOR (ppMargin poolParams) - <> encCBOR (ppRewardAcnt poolParams) - <> encCBOR (ppOwners poolParams) - <> encCBOR (ppRelays poolParams) - <> encodeNullMaybe encCBOR (strictMaybeToMaybe (ppMetadata poolParams)) - - encodedGroupSizeExpr size' proxy = - encodedSizeExpr size' (ppId <$> proxy) - + encodedSizeExpr size' (ppVrf <$> proxy) - + encodedSizeExpr size' (ppPledge <$> proxy) - + encodedSizeExpr size' (ppCost <$> proxy) - + encodedSizeExpr size' (ppMargin <$> proxy) - + encodedSizeExpr size' (ppRewardAcnt <$> proxy) - + 2 - + poolSize * encodedSizeExpr size' (elementProxy (ppOwners <$> proxy)) - + 2 - + relaySize * encodedSizeExpr size' (elementProxy (ppRelays <$> proxy)) - + szCases - [ Case "Nothing" 1 - , Case "Just" $ encodedSizeExpr size' (elementProxy (ppMetadata <$> proxy)) - ] - where - poolSize, relaySize :: Size - poolSize = size' (Proxy @SizeOfPoolOwners) - relaySize = size' (Proxy @SizeOfPoolRelays) - elementProxy :: Proxy (f a) -> Proxy a - elementProxy _ = Proxy - - listLen _ = 9 - listLenBound _ = 9 - -instance Crypto c => DecCBORGroup (PoolParams c) where - decCBORGroup = do - hk <- decCBOR - vrf <- decCBOR - pledge <- decCBOR - cost <- decCBOR - margin <- decCBOR - ra <- decCBOR - owners <- decCBOR - relays <- decCBOR - md <- decodeNullMaybe decCBOR - pure $ - PoolParams - { ppId = hk - , ppVrf = vrf - , ppPledge = pledge - , ppCost = cost - , ppMargin = margin - , ppRewardAccount = ra - , ppOwners = owners - , ppRelays = relays - , ppMetadata = maybeToStrictMaybe md - } diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/Rewards.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/Rewards.hs deleted file mode 100644 index 14363755544..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/Rewards.hs +++ /dev/null @@ -1,110 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE TypeApplications #-} - -module Cardano.Ledger.Rewards ( - RewardType (..), - Reward (..), -) -where - -import Cardano.Ledger.BaseTypes (invalidKey) -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - decodeWord, - encodeWord, - ) -import Cardano.Ledger.Binary.Coders (Decode (..), Encode (..), decode, encode, (!>), ( --- for more details. -data RewardType = MemberReward | LeaderReward - deriving (Eq, Show, Ord, Bounded, Enum, Generic) - -instance NoThunks RewardType - -instance NFData RewardType - -instance ToJSON RewardType - -instance EncCBOR RewardType where - encCBOR MemberReward = encodeWord 0 - encCBOR LeaderReward = encodeWord 1 - -instance DecCBOR RewardType where - decCBOR = - decodeWord >>= \case - 0 -> pure MemberReward - 1 -> pure LeaderReward - n -> invalidKey n - --- | The 'Reward' type captures: --- --- * if the reward is a member or leader reward --- --- * the stake pool ID associated with the reward --- --- * the number of Lovelace in the reward -data Reward c = Reward - { rewardType :: !RewardType - , rewardPool :: !(KeyHash 'StakePool c) - , rewardAmount :: !Coin - } - deriving (Eq, Show, Generic) - --- | Note that this Ord instance is chosen to align precisely --- with the Allegra reward aggregation, as given by the --- function 'aggregateRewards' so that 'Set.findMax' returns --- the expected value. -instance Ord (Reward c) where - compare (Reward MemberReward _ _) (Reward LeaderReward _ _) = GT - compare (Reward LeaderReward _ _) (Reward MemberReward _ _) = LT - compare (Reward _ pool1 _) (Reward _ pool2 _) = compare pool1 pool2 - -instance NoThunks (Reward c) - -instance NFData (Reward c) - -instance Crypto c => EncCBOR (Reward c) where - encCBOR (Reward rt pool c) = - encode $ Rec Reward !> To rt !> To pool !> To c - -instance Crypto c => DecCBOR (Reward c) where - decCBOR = - decode $ RecD Reward ToJSON (Reward c) where - toJSON = object . toRewardPair - toEncoding = pairs . mconcat . toRewardPair - -toRewardPair :: (KeyValue e a, Crypto c) => Reward c -> [a] -toRewardPair r@(Reward _ _ _) = - let Reward {..} = r - in [ "rewardType" .= rewardType - , "rewardPool" .= rewardPool - , "rewardAmount" .= rewardAmount - ] diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/Rules/ValidationMode.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/Rules/ValidationMode.hs deleted file mode 100644 index 1a364b62d09..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/Rules/ValidationMode.hs +++ /dev/null @@ -1,115 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DefaultSignatures #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FunctionalDependencies #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} - --- | Describes modes under which we might validate certain rules in the ledger. --- --- What does this mean? Sometimes, we will want to check only certain --- conditions specified in the rules. For example, when replaying a previously --- validated chain, we do not care about rerunning _any_ checks, only making --- the relevant changes to the ledger state. -module Cardano.Ledger.Rules.ValidationMode ( - -- $static - lblStatic, - (?!#), - (?!#:), - failBecauseS, - applySTSNonStatic, - applySTSValidateSuchThat, - - -- * Interface for independent Tests - Inject (..), - Test, - runTest, - runTestOnSignal, -) -where - -import Cardano.Ledger.BaseTypes (Inject (..)) -import Cardano.Ledger.Core -import Control.State.Transition.Extended -import Data.List.NonEmpty (NonEmpty) -import qualified Data.List.NonEmpty as NE -import Validation - -applySTSValidateSuchThat :: - forall s m rtype. - (STS s, RuleTypeRep rtype, m ~ BaseM s) => - ([Label] -> Bool) -> - RuleContext rtype s -> - m (Either (NonEmpty (PredicateFailure s)) (State s)) -applySTSValidateSuchThat cond = - applySTSOptsEither opts - where - opts = - ApplySTSOpts - { asoAssertions = AssertionsOff - , asoValidation = ValidateSuchThat cond - , asoEvents = EPDiscard - } - --------------------------------------------------------------------------------- --- Static checks --------------------------------------------------------------------------------- - --- * Static checks - --- - --- $static --- --- Static checks are used to indicate that a particular predicate depends only --- on the signal to the transition, rather than the state or environment. This --- is particularly relevant where the signal is something such as a transaction, --- which is fixed, whereas the state and environment depend upon the chain tip --- upon which we are trying to build a block. - --- | Indicates that this check depends only upon the signal to the transition, --- not the state or environment. -lblStatic :: Label -lblStatic = "static" - --- | Construct a static predicate check. --- --- The choice of '#' as a postfix here is made because often these are crypto --- checks. -(?!#) :: Bool -> PredicateFailure sts -> Rule sts ctx () -(?!#) = labeledPred $ lblStatic NE.:| [] - -infix 1 ?!# - --- | Construct a static predicate check with an explanation. --- --- The choice of '#' as a postfix here is made because often these are crypto --- checks. -(?!#:) :: Either e () -> (e -> PredicateFailure sts) -> Rule sts ctx () -(?!#:) = labeledPredE $ lblStatic NE.:| [] - -infix 1 ?!#: - --- | Fail, if static checks are enabled. -failBecauseS :: PredicateFailure sts -> Rule sts ctx () -failBecauseS = (False ?!#) - --- | Apply an STS system and do not validate any static checks. -applySTSNonStatic :: - forall s m rtype. - (STS s, RuleTypeRep rtype, m ~ BaseM s) => - RuleContext rtype s -> - m (Either (NonEmpty (PredicateFailure s)) (State s)) -applySTSNonStatic = applySTSValidateSuchThat (notElem lblStatic) - --- =========================================================== - -type Test failure = Validation (NonEmpty failure) () - -runTest :: InjectRuleFailure rule f era => Test (f era) -> Rule (EraRule rule era) ctx () -runTest = validateTrans injectFailure - -runTestOnSignal :: InjectRuleFailure rule f era => Test (f era) -> Rule (EraRule rule era) ctx () -runTestOnSignal = validateTransLabeled injectFailure $ lblStatic NE.:| [] diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/SafeHash.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/SafeHash.hs deleted file mode 100644 index 0894f809b5e..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/SafeHash.hs +++ /dev/null @@ -1,243 +0,0 @@ -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FunctionalDependencies #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} - --- | In cardano-ledger, hashing a type @X@ is based upon the serialization of @X@. Serialization is --- based upon the 'EncCBOR' and DecCBOR type classes, and the values produced by 'EncCBOR' instances for a --- particular type, are not necessarily unique. For this reason, when an @X@ object comes --- over the network in serialized form, we must preserve the original bytes that arrived over --- the network, otherwise when the system hashes that object, the hash in the ledger, and the hash of --- that object from the other side of the network may not agree. The module 'Cardano.Ledger.SafeHash' --- introduces the 'SafeToHash' type class that ensures that types with a @(SafeToHash X)@ instance store the --- original bytes that arrived over the network for the value of @X@. The recommended way to store the --- original bytes is to use the type 'MemoBytes', although there are --- a few types that store their original bytes in other ways. In order to encourage the use of 'MemoBytes' --- newtypes defined as a 'MemoBytes' get the to derive 'SafeToHash' instances for free. -module Cardano.Ledger.SafeHash ( - -- * SafeHash and SafeToHash - - -- - -- $SAFE - SafeHash, - SafeToHash (..), - - -- * Creating SafeHash - - -- - -- $MAKE - HashAnnotated, - hashAnnotated, - HashWithCrypto (..), - unsafeMakeSafeHash, - - -- * Other operations - - -- - -- $OTHER - castSafeHash, - extractHash, - indexProxy, - - -- * Safe hashing aggregates - - -- - -- $AGG - Safe (..), - hashSafeList, - - -- * Deprecated - HasAlgorithm, -) -where - -import qualified Cardano.Crypto.Hash as Hash -import Cardano.HeapWords (HeapWords (..)) -import Cardano.Ledger.Binary (DecCBOR (..), EncCBOR (..)) -import Cardano.Ledger.Binary.Plain (FromCBOR (..), ToCBOR (..)) -import Cardano.Ledger.Crypto -import Cardano.Ledger.Orphans () -import Control.DeepSeq (NFData) -import Data.Aeson (FromJSON, ToJSON) -import Data.ByteString (ByteString) -import qualified Data.ByteString as BS (length) -import Data.ByteString.Short (ShortByteString, fromShort) -import qualified Data.ByteString.Short as SBS (length) -import Data.Default.Class (Default (..)) -import Data.Foldable (fold) -import Data.Typeable -import NoThunks.Class (NoThunks (..)) - --- ========================================================== - --- SAFE - --- | A 'SafeHash' is a hash of something that is safe to hash. Such types store --- their own serialisation bytes. The prime example is @('MemoBytes' t)@, but other --- examples are things that consist of only ByteStrings (i.e. they are their own serialization) --- or for some other reason store their original bytes. --- --- We do NOT export the constructor 'SafeHash', but instead export other functions --- such as 'hashWithCrypto, 'hashAnnotated' and 'extractHash' which have constraints --- that limit their application to types which preserve their original serialization --- bytes. -newtype SafeHash c index = SafeHash (Hash.Hash (HASH c) index) - deriving (Show, Eq, Ord, NoThunks, NFData) - -deriving newtype instance - Hash.HashAlgorithm (HASH c) => - SafeToHash (SafeHash c index) - -deriving newtype instance HeapWords (SafeHash c i) - -deriving instance (Typeable index, Crypto c) => ToCBOR (SafeHash c index) - -deriving instance (Typeable index, Crypto c) => FromCBOR (SafeHash c index) - -deriving instance (Typeable index, Crypto c) => EncCBOR (SafeHash c index) - -deriving instance (Typeable index, Crypto c) => DecCBOR (SafeHash c index) - -deriving instance Crypto c => ToJSON (SafeHash c index) - -deriving instance Crypto c => FromJSON (SafeHash c index) - -instance Crypto c => Default (SafeHash c i) where - def = unsafeMakeSafeHash def - -{-# DEPRECATED HasAlgorithm "Use `Hash.HashAlgorithm (HASH c)` instead" #-} - -type HasAlgorithm c = Hash.HashAlgorithm (HASH c) - --- | Extract the hash out of a 'SafeHash' -extractHash :: SafeHash c i -> Hash.Hash (HASH c) i -extractHash (SafeHash h) = h - --- MAKE - --- | Don't use this except in Testing to make Arbitrary instances, etc. --- Defined here, only because the Constructor is in scope here. -unsafeMakeSafeHash :: Hash.Hash (HASH c) index -> SafeHash c index -unsafeMakeSafeHash = SafeHash - --- ===================================================================== - --- | Only Types that preserve their serialisation bytes are members of the --- class 'SafeToHash'. There are only a limited number of primitive direct --- instances of 'SafeToHash', all but two of them are present in this file. Instead --- of making explicit instances, we almost always use a newtype (around a type @S@) --- where their is already an instance @(SafeToHash S)@. In that case the newtype --- has its SafeToHash instance derived using newtype deriving. The prime example of @s@ is 'MemoBytes'. --- The only exceptions are the legacy Shelley types: @Metadata@ and @ShelleyTx@, that --- preserve their serialization bytes --- using a different mechanism than the use of 'MemoBytes'. 'SafeToHash' is a superclass --- requirement of the classes 'HashAnnotated' and 'HashWithCrypto' (below) which --- provide more convenient ways to construct SafeHashes than using 'makeHashWithExplicitProxys'. -class SafeToHash t where - -- | Extract the original bytes from 't' - originalBytes :: t -> ByteString - - originalBytesSize :: t -> Int - originalBytesSize = BS.length . originalBytes - - makeHashWithExplicitProxys :: - Hash.HashAlgorithm (HASH c) => - Proxy c -> - Proxy index -> - t -> - SafeHash c index - - -- | Build a @(SafeHash crypto index)@ value given to proxies (determining @i@ and @crypto@), and the - -- value to be hashed. - makeHashWithExplicitProxys _ _ x = SafeHash $ Hash.castHash (Hash.hashWith originalBytes x) - --- There are a limited number of direct instances. Everything else should come --- from newtype deriving. - -instance SafeToHash ShortByteString where - originalBytes = fromShort - originalBytesSize = SBS.length - -instance SafeToHash ByteString where - originalBytes x = x - --- If one looks at the deriving clause in the definitions of SafeHash, we see that we --- derive that it is SafeToHash. We can derive this instance because SafeHash is --- a newtype around (Hash.Hash c i) which is a primitive SafeToHash type. - -instance Hash.HashAlgorithm c => SafeToHash (Hash.Hash c i) where - originalBytes = Hash.hashToBytes - --- | Types that are 'SafeToHash', AND have both of the following two invariants, --- are made members of the HashAnnotated class. The preconditions are: --- --- 1. The type uniquely determines the 'index' type tag of (SafeHash crypto index) --- 2. The type uniquely determines the 'crypto' type of (SafeHash crytop index) --- --- The 'SafeToHash' and the 'HashAnnotated' classes are designed so that their --- instances can be easily derived (because their methods have default methods --- when the type is a newtype around a type that is 'SafeToHash'). For example, --- --- @ --- newtype T era = T S --- deriving Eq --- deriving newtype SafeToHash -- Uses {-# LANGUAGE DerivingStrategies #-} --- --- instance HashAnnotated (T era) Index (Crypto era) --- @ --- --- After these declarations. One specialization of 'hashAnnotated' is --- @(hashAnnotated :: Era e => T e -> SafeHash (Crypto e) Index)@ -class SafeToHash x => HashAnnotated x index c | x -> index c where - indexProxy :: x -> Proxy index - indexProxy _ = Proxy @index - - -- | Create a @('SafeHash' i crypto)@, - -- given @(Hash.HashAlgorithm (HASH crypto))@ - -- and @(HashAnnotated x i crypto)@ instances. - hashAnnotated :: Hash.HashAlgorithm (HASH c) => x -> SafeHash c index - hashAnnotated = makeHashWithExplicitProxys (Proxy @c) (Proxy @index) - {-# INLINE hashAnnotated #-} - --- ======================================================================== - --- | Create @('SafeHash' index crypto)@ values, used when the type being hashed: --- @x@ determines the @index@ tag but not the @crypto@ tag of @x@ -class SafeToHash x => HashWithCrypto x index | x -> index where - -- | Create a @('SafeHash' index crypto)@ value from @x@, the @proxy@ determines the crypto. - hashWithCrypto :: - forall c. - Hash.HashAlgorithm (HASH c) => - Proxy c -> - x -> - SafeHash c index - hashWithCrypto proxy = makeHashWithExplicitProxys proxy (Proxy @index) - {-# INLINE hashWithCrypto #-} - --- ====================================================================== - --- OTHER - --- | To change the index parameter of SafeHash (which is a phantom type) use castSafeHash -castSafeHash :: forall i j c. SafeHash c i -> SafeHash c j -castSafeHash (SafeHash h) = SafeHash (Hash.castHash h) - --- AGG - --- | Sometimes one wants to hash multiple things, simply by concatenating --- all the bytes. This abstraction allows one to do that safely. -data Safe where - Safe :: SafeToHash x => x -> Safe - -instance SafeToHash Safe where - originalBytes (Safe x) = originalBytes x - -hashSafeList :: Hash.HashAlgorithm (HASH c) => Proxy c -> Proxy index -> [Safe] -> SafeHash c index -hashSafeList pc pindex xs = makeHashWithExplicitProxys pc pindex (fold $ originalBytes <$> xs) diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/Serialization.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/Serialization.hs deleted file mode 100644 index 4bb9af6daf1..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/Serialization.hs +++ /dev/null @@ -1,188 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# OPTIONS_GHC -Wno-deprecations #-} - -module Cardano.Ledger.Serialization - {-# DEPRECATED "Use `Cardano.Ledger.Binary` from 'cardano-ledger-binary' package instead" #-} ( - EncCBORGroup (..), - DecCBORGroup (..), - CBORGroup (..), - decodeList, - decodeSeq, - decodeStrictSeq, - decodeSet, - decodeMap, - decodeMapContents, - decodeMapTraverse, - decodeMaybe, - decodeRecordNamed, - decodeRecordNamedT, - decodeRecordSum, - decodeNullMaybe, - encodeFoldable, - encodeFoldableEncoder, - encodeFoldableMapEncoder, - encodeNullMaybe, - encodeMap, - groupRecord, - ratioEncCBOR, - ratioDecCBOR, - mapEncCBOR, - mapDecCBOR, - translateViaCBORAnnotator, - -- IPv4 - ipv4ToBytes, - ipv4FromBytes, - ipv4EncCBOR, - ipv4DecCBOR, - -- IPv6 - ipv6ToBytes, - ipv6FromBytes, - ipv6EncCBOR, - ipv6DecCBOR, - -- Raw - listLenInt, - runByteBuilder, - -- UTC Time - utcTimeEncCBOR, - utcTimeDecCBOR, - -- This abstraction can/should be moved into cardano-binary - Sized (..), - mkSized, - sizedDecoder, - toSizedL, -) -where - -import Cardano.Ledger.Binary ( - CBORGroup (..), - DecCBOR (..), - DecCBORGroup (..), - Decoder, - DecoderError (..), - EncCBOR (..), - EncCBORGroup (..), - Encoding, - Sized (..), - assertTag, - cborError, - decodeIPv4, - decodeIPv6, - decodeList, - decodeMap, - decodeMapContents, - decodeMapTraverse, - decodeMaybe, - decodeNullMaybe, - decodeSeq, - decodeSet, - decodeStrictSeq, - decodeUTCTime, - encodeFoldableEncoder, - encodeFoldableMapEncoder, - encodeIPv4, - encodeIPv6, - encodeMap, - encodeNullMaybe, - encodeRatio, - encodeUTCTime, - enforceDecoderVersion, - groupRecord, - ipv4ToBytes, - ipv6ToBytes, - listLenInt, - mkSized, - natVersion, - runByteBuilder, - sizedDecoder, - toSizedL, - translateViaCBORAnnotator, - ) -import Cardano.Ledger.Binary.Coders ( - decodeRecordNamed, - decodeRecordNamedT, - decodeRecordSum, - ) -import Control.Monad (when) -import Data.Binary.Get (Get, getWord32le, runGetOrFail) -import qualified Data.ByteString as BS -import qualified Data.ByteString.Lazy as BSL -import Data.IP ( - IPv4, - IPv6, - fromHostAddress, - fromHostAddress6, - ) -import Data.Map.Strict (Map) -import Data.Ratio (Ratio, (%)) -import Data.Time (UTCTime (..)) -import Network.Socket (HostAddress6) - -mapEncCBOR :: (EncCBOR a, EncCBOR b) => Map a b -> Encoding -mapEncCBOR = encodeMap encCBOR encCBOR - -mapDecCBOR :: (Ord a, DecCBOR a, DecCBOR b) => Decoder s (Map a b) -mapDecCBOR = decodeMap decCBOR decCBOR - -ratioEncCBOR :: EncCBOR a => Ratio a -> Encoding -ratioEncCBOR = encodeRatio encCBOR - -ratioDecCBOR :: (Integral a, DecCBOR a) => Decoder s (Ratio a) -ratioDecCBOR = decodeFraction decCBOR - -decodeFraction :: Integral a => Decoder s a -> Decoder s (Ratio a) -decodeFraction decoder = do - assertTag 30 - values <- decodeList decoder - case values of - [n, d] -> do - when (d == 0) (fail "Denominator cannot be 0") - pure $! n % d - _ -> cborError $ DecoderErrorSizeMismatch "Rational" 2 (length values) - -ipv4FromBytes :: BS.ByteString -> Either String IPv4 -ipv4FromBytes b = - case runGetOrFail getWord32le (BSL.fromStrict b) of - Left (_, _, err) -> Left err - Right (_, _, ha) -> Right $ fromHostAddress ha - -ipv4EncCBOR :: IPv4 -> Encoding -ipv4EncCBOR = encodeIPv4 - -ipv4DecCBOR :: Decoder s IPv4 -ipv4DecCBOR = enforceDecoderVersion (natVersion @2) decodeIPv4 - -getHostAddress6 :: Get HostAddress6 -getHostAddress6 = do - w1 <- getWord32le - w2 <- getWord32le - w3 <- getWord32le - w4 <- getWord32le - return (w1, w2, w3, w4) - -ipv6FromBytes :: BS.ByteString -> Either String IPv6 -ipv6FromBytes b = - case runGetOrFail getHostAddress6 (BSL.fromStrict b) of - Left (_, _, err) -> Left err - Right (_, _, ha) -> Right $ fromHostAddress6 ha - -ipv6EncCBOR :: IPv6 -> Encoding -ipv6EncCBOR = encodeIPv6 - -ipv6DecCBOR :: Decoder s IPv6 -ipv6DecCBOR = enforceDecoderVersion (natVersion @2) decodeIPv6 - -utcTimeEncCBOR :: UTCTime -> Encoding -utcTimeEncCBOR = encodeUTCTime - -utcTimeDecCBOR :: Decoder s UTCTime -utcTimeDecCBOR = decodeUTCTime - -encodeFoldable :: (EncCBOR a, Foldable f) => f a -> Encoding -encodeFoldable = encodeFoldableEncoder encCBOR diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/Slot.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/Slot.hs deleted file mode 100644 index f5c04332238..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/Slot.hs +++ /dev/null @@ -1,76 +0,0 @@ -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} - -module Cardano.Ledger.Slot ( - SlotNo (..), - Duration (..), - (-*), - (+*), - (*-), - EpochNo (..), - EpochSize (..), - EpochInfo, - -- Block number - BlockNo (..), - epochInfoEpoch, - epochInfoFirst, - epochInfoSize, -) -where - -import Cardano.Ledger.BaseTypes (ShelleyBase) -import Cardano.Slotting.Block (BlockNo (..)) -import Cardano.Slotting.EpochInfo (EpochInfo) -import qualified Cardano.Slotting.EpochInfo as EI -import Cardano.Slotting.Slot (EpochNo (..), EpochSize (..), SlotNo (..)) -import Control.Monad.Trans (lift) -import Data.Functor.Identity (Identity) -import Data.Word (Word64) -import GHC.Generics (Generic) -import GHC.Stack (HasCallStack) -import NoThunks.Class (NoThunks (..)) -import Quiet - -newtype Duration = Duration {unDuration :: Word64} - deriving (Eq, Generic, Ord, NoThunks, Num, Integral, Real, Enum) - deriving (Show) via Quiet Duration - -instance Semigroup Duration where - (Duration x) <> (Duration y) = Duration $ x + y - -instance Monoid Duration where - mempty = Duration 0 - mappend = (<>) - -(-*) :: SlotNo -> SlotNo -> Duration -(SlotNo s) -* (SlotNo t) = Duration (if s > t then s - t else t - s) - -(+*) :: SlotNo -> Duration -> SlotNo -(SlotNo s) +* (Duration d) = SlotNo (s + d) - --- | Subtract a duration from a slot -(*-) :: SlotNo -> Duration -> SlotNo -(SlotNo s) *- (Duration d) = SlotNo (if s > d then s - d else 0) - -epochInfoEpoch :: - HasCallStack => - EpochInfo Identity -> - SlotNo -> - ShelleyBase EpochNo -epochInfoEpoch ei = lift . EI.epochInfoEpoch ei - -epochInfoFirst :: - HasCallStack => - EpochInfo Identity -> - EpochNo -> - ShelleyBase SlotNo -epochInfoFirst ei = lift . EI.epochInfoFirst ei - -epochInfoSize :: - HasCallStack => - EpochInfo Identity -> - EpochNo -> - ShelleyBase EpochSize -epochInfoSize ei = lift . EI.epochInfoSize ei diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/Tools.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/Tools.hs deleted file mode 100644 index c769773613f..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/Tools.hs +++ /dev/null @@ -1,267 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE ScopedTypeVariables #-} - --- | This is a module that contains functionality that is not necessary for ledger --- operation, but is useful for testing as well as for downstream users of ledger -module Cardano.Ledger.Tools ( - setMinFeeTx, - setMinFeeTxUtxo, - calcMinFeeTx, - calcMinFeeTxNativeScriptWits, - estimateMinFeeTx, - addDummyWitsTx, - integralToByteStringN, - byteStringToNum, - boom, -) -where - -import qualified Cardano.Chain.Common as Byron -import Cardano.Crypto.DSIGN.Class (sizeSigDSIGN, sizeVerKeyDSIGN) -import Cardano.Ledger.Address (BootstrapAddress (..), bootstrapKeyHash) -import Cardano.Ledger.BaseTypes (ProtVer (..)) -import Cardano.Ledger.Binary (byronProtVer, decodeFull', serialize') -import Cardano.Ledger.Coin (Coin) -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto -import Cardano.Ledger.Keys ( - BootstrapWitness (..), - ChainCode (..), - KeyHash, - KeyRole (Witness), - VKey, - WitVKey (..), - asWitness, - ) -import Cardano.Ledger.UTxO (EraUTxO (..), UTxO (..)) -import Data.Bits (Bits (..), shiftR) -import Data.ByteString (ByteString) -import qualified Data.ByteString as BS -import Data.Default.Class (def) -import qualified Data.Map.Strict as Map -import Data.Maybe (mapMaybe) -import Data.Proxy -import qualified Data.Set as Set -import GHC.Stack (HasCallStack) -import Lens.Micro - --- | Calculate and update the fee in the transaction until it has the smallest possible --- value according to the settings in the protocol parameters. --- --- This function potentially changes the `feeTxBodyL` field of the `TxBody`, as such it --- affects the hash of the body, which consequently invalidates all of the signature in --- the attached witnesses. -setMinFeeTx :: - EraTx era => - PParams era -> - Tx era -> - -- | Size in bytes of reference scripts present in this transaction - Int -> - Tx era -setMinFeeTx pp tx refScriptsSize = - setMinFeeTxInternal (\t -> getMinFeeTx pp t refScriptsSize) tx - -setMinFeeTxUtxo :: EraUTxO era => PParams era -> Tx era -> UTxO era -> Tx era -setMinFeeTxUtxo pp tx utxo = - setMinFeeTxInternal (\t -> getMinFeeTxUtxo pp t utxo) tx - -setMinFeeTxInternal :: - EraTx era => - (Tx era -> Coin) -> - Tx era -> - Tx era -setMinFeeTxInternal f tx = - let curMinFee = f tx - curFee = tx ^. bodyTxL . feeTxBodyL - modifiedTx = tx & bodyTxL . feeTxBodyL .~ curMinFee - in if curFee == curMinFee - then tx - else setMinFeeTxInternal f modifiedTx - --- | Same as `calcMinFeeTx`, except this function allows to specify hashes of key witnesses --- that will be supplied, instead of their count. That is only useful whenever there is a --- chance of some of the required witnesses being the same as the witnesses that will be --- supplied for native scripts. -calcMinFeeTxNativeScriptWits :: - forall era. - EraUTxO era => - -- | All TxOuts available for this transaction. In other words `TxIn`s produced by - -- `allInputsTxBodyF` should be present in this `UTxO` map, however this is not checked. - UTxO era -> - -- | The current protocol parameters. - PParams era -> - -- | The transaction. - Tx era -> - -- | KeyHash witnesses that will be supplied for satisfying native scripts. It is - -- impossible to know how many of these is required without knowing the actual witnesses - -- supplied and the time when the transaction will be submitted. Therefore we put this - -- burden on the user. - Set.Set (KeyHash 'Witness (EraCrypto era)) -> - -- | The required minimum fee. - Coin -calcMinFeeTxNativeScriptWits utxo pp tx nativeScriptsKeyWitsHashes = - calcMinFeeTxInternal utxo pp tx (Set.size nativeScriptsKeyWitsHashes) nativeScriptsKeyWitsHashes - --- | This is a more accurate version `estimateMinFeeTx` that looks into transaction and --- figures out how many and what kind of key witnesses this transaction needs. It requires --- access to the portion of the `UTxO` that is relevant for this transaction. The only --- type of witnesses that it cannot figure out reliably is the witnesses needed for --- satisfying native scripts included in the transaction. For this reason number of --- witnesses needed for native scripts must be supplied as an extra argument. --- --- ====__Example__ --- --- >>> let relevantUtxo = txInsFilter utxo (tx ^. bodyTxL . allInputsTxBodyF) --- >>> calcMinFeeTx relevantUtxo pp tx 5 -calcMinFeeTx :: - forall era. - EraUTxO era => - -- | All TxOuts available for this transaction. In other words `TxIn`s produced by - -- `allInputsTxBodyF` should be present in this `UTxO` map, however this is not checked. - UTxO era -> - -- | The current protocol parameters. - PParams era -> - -- | The transaction. - Tx era -> - -- | Number of extra KeyHash witnesses that will be supplied for satisfying native - -- scripts. It is impossible to know how many of these is required without knowing the - -- actual witnesses supplied and the time when the transaction will be - -- submitted. Therefore we put this burden on the user. - -- - -- This number can also be used to specify all of the redundant extra key witnesses that - -- will be supplied. - Int -> - -- | The required minimum fee. - Coin -calcMinFeeTx utxo pp tx extraKeyWitsCount = - calcMinFeeTxInternal utxo pp tx extraKeyWitsCount Set.empty - -calcMinFeeTxInternal :: - forall era. - EraUTxO era => - -- | All TxOuts available for this transaction. In other words `TxIn`s produced by - -- `allInputsTxBodyF` should be present in this `UTxO` map, however this is not checked. - UTxO era -> - -- | The current protocol parameters. - PParams era -> - -- | The transaction. - Tx era -> - -- | Number of KeyHash witnesses that will be supplied for native scripts - Int -> - -- | KeyHash witnesses that will be supplied for native scripts - Set.Set (KeyHash 'Witness (EraCrypto era)) -> - Coin -calcMinFeeTxInternal utxo pp tx extraKeyWitsCount nativeScriptsKeyWitsHashes = - setMinFeeTxUtxo pp tx' utxo ^. bodyTxL . feeTxBodyL - where - txBody = tx ^. bodyTxL - tx' = addDummyWitsTx pp tx numKeyWitsRequired $ Map.elems byronAttributes - inputs = Set.toList $ txBody ^. spendableInputsTxBodyF - getByronAttrs txIn = do - txOut <- Map.lookup txIn $ unUTxO utxo - ba@(BootstrapAddress bootAddr) <- txOut ^. bootAddrTxOutF - pure (asWitness (bootstrapKeyHash ba), Byron.addrAttributes bootAddr) - byronAttributes = Map.fromList $ mapMaybe getByronAttrs inputs - requiredKeyHashes = - getWitsVKeyNeeded def utxo txBody Set.\\ nativeScriptsKeyWitsHashes - numKeyWitsRequired = - getGenesisKeyHashCountTxBody txBody - + extraKeyWitsCount - + Set.size (requiredKeyHashes Set.\\ Map.keysSet byronAttributes) - --- | Estimate a minimum transaction fee for a transaction that does not yet have all of --- the `VKey` witnesses. This calculation is not very accurate in estimating Byron --- witnesses, but it should work for the most part. If you have access to UTxO necessary --- for the transaction that it is better and easier to use `calcMinFeeTx` instead. --- --- @since 1.8.0 -estimateMinFeeTx :: - forall era. - EraTx era => - -- | The current protocol parameters. - PParams era -> - -- | The transaction. - Tx era -> - -- | The number of key witnesses still to be added to the transaction. - Int -> - -- | The number of Byron key witnesses still to be added to the transaction. - Int -> - -- | The total size in bytes of reference scripts - Int -> - -- | The required minimum fee. - Coin -estimateMinFeeTx pp tx numKeyWits numByronKeyWits refScriptsSize = - setMinFeeTx pp tx' refScriptsSize ^. bodyTxL . feeTxBodyL - where - tx' = addDummyWitsTx pp tx numKeyWits $ replicate numByronKeyWits dummyByronAttributes - -- We assume testnet network magic here to avoid having to thread the actual network - -- ID into this function merely to calculate the fees of byron witnesses more - -- accurately. This will over-estimate min fees for byron witnesses in mainnet - -- transaction by 7 bytes per witness. - dummyByronAttributes = - Byron.mkAttributes - Byron.AddrAttributes - { Byron.aaVKDerivationPath = Nothing - , Byron.aaNetworkMagic = Byron.NetworkTestnet maxBound - } - -integralToByteStringN :: (Integral i, Bits i) => Int -> i -> ByteString -integralToByteStringN len = fst . BS.unfoldrN len (\n -> Just (fromIntegral n, n `shiftR` 8)) - -byteStringToNum :: (Bits i, Num i) => ByteString -> i -byteStringToNum = BS.foldr (\w i -> i `shiftL` 8 + fromIntegral w) 0 - --- | Create dummy witnesses and add them to the transaction -addDummyWitsTx :: - forall era. - EraTx era => - -- | The current protocol parameters. - PParams era -> - -- | The transaction. - Tx era -> - -- | The number of key witnesses still to be added to the transaction. - Int -> - -- | List of attributes from TxOuts with Byron addresses that are being spent - [Byron.Attributes Byron.AddrAttributes] -> - -- | The required minimum fee. - Tx era -addDummyWitsTx pp tx numKeyWits byronAttrs = - tx - & (witsTxL . addrTxWitsL <>~ dummyKeyWits) - & (witsTxL . bootAddrTxWitsL <>~ dummyByronKeyWits) - where - dsign :: Proxy (DSIGN (EraCrypto era)) - dsign = Proxy - version = pvMajor (pp ^. ppProtocolVersionL) - -- We need to make sure that dummies are unique, since they'll be placed into a Set - mkDummy name n = - either - (\err -> error ("Corrupt Dummy " ++ name ++ ": " ++ show err)) - id - . decodeFull' version - . serialize' version - . integralToByteStringN n - vKeySize = fromIntegral $ sizeVerKeyDSIGN dsign - dummyKeys = map (mkDummy "VKey" vKeySize) [0 :: Int ..] - - sigSize = fromIntegral $ sizeSigDSIGN dsign - dummySig = mkDummy "Signature" sigSize (0 :: Int) - dummyKeyWits = - Set.fromList [WitVKey key dummySig | key <- take numKeyWits dummyKeys] - - -- ChainCode is always 32 bytes long. - chainCode = ChainCode $ BS.replicate 32 0 - - mkDummyByronKeyWit :: - VKey 'Witness (EraCrypto era) -> - Byron.Attributes Byron.AddrAttributes -> - BootstrapWitness (EraCrypto era) - mkDummyByronKeyWit key = - BootstrapWitness key dummySig chainCode . serialize' byronProtVer - dummyByronKeyWits = - Set.fromList $ zipWith mkDummyByronKeyWit dummyKeys byronAttrs - --- | A helpful placeholder to use during development. -boom :: HasCallStack => a -boom = error "Unimplemented" -{-# WARNING boom "BOOM!" #-} diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/TxIn.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/TxIn.hs deleted file mode 100644 index 466017b45a8..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/TxIn.hs +++ /dev/null @@ -1,119 +0,0 @@ -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE ExistentialQuantification #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} - -module Cardano.Ledger.TxIn ( - TxId (..), - _unTxId, - TxIn (TxIn), - mkTxInPartial, - txInToText, - TxIx, -) -where - -import Cardano.Crypto.Hash.Class (hashToTextAsHex) -import Cardano.HeapWords (HeapWords (..)) -import qualified Cardano.HeapWords as HW -import Cardano.Ledger.BaseTypes (TxIx (..), mkTxIxPartial) -import Cardano.Ledger.Binary (DecCBOR (decCBOR), EncCBOR (..), decodeRecordNamed, encodeListLen) -import Cardano.Ledger.Crypto -import Cardano.Ledger.Hashes (EraIndependentTxBody) -import Cardano.Ledger.SafeHash (SafeHash, extractHash) -import Control.DeepSeq (NFData) -import Data.Aeson (FromJSON, ToJSON (..)) -import Data.Aeson.Types (ToJSONKey (..), toJSONKeyText) -import Data.Text (Text) -import qualified Data.Text as Text -import GHC.Generics (Generic) -import GHC.Stack (HasCallStack) -import NoThunks.Class (NoThunks (..)) - --- =================================================================================== --- Because we expect other Era's to import and use TxId, TxIn, TxOut, we use the weakest --- constraint possible when deriving their instances. A Stronger constraint, Gathering --- many constraints together, like: type Strong = (C1 x, C2 x, ..., Cn x) --- may make this file look systematic by having things like: --- derving instance (Strong x) => Foo x, for many Foo (Eq, Show, NfData, etc) BUT this --- forces unnecessary requirements on any new Era which tries to embed one of these --- types in their own datatypes, if they then try and derive (Foo TheirDataType). --- ==================================================================================== - --- | A unique ID of a transaction, which is computable from the transaction. -newtype TxId c = TxId {unTxId :: SafeHash c EraIndependentTxBody} - deriving (Show, Eq, Ord, Generic) - deriving newtype (NoThunks, ToJSON, FromJSON) - -_unTxId :: TxId c -> SafeHash c EraIndependentTxBody -_unTxId = unTxId -{-# DEPRECATED _unTxId "In favor of `unTxId`" #-} - -deriving newtype instance Crypto c => HeapWords (TxId c) - -deriving newtype instance Crypto c => EncCBOR (TxId c) - -deriving newtype instance Crypto c => DecCBOR (TxId c) - -deriving newtype instance Crypto c => NFData (TxId c) - -instance Crypto c => HeapWords (TxIn c) where - heapWords (TxIn txId _) = - 2 + HW.heapWords txId + 1 {- txIx -} - -instance Crypto c => ToJSON (TxIn c) where - toJSON = toJSON . txInToText - toEncoding = toEncoding . txInToText - -instance Crypto c => ToJSONKey (TxIn c) where - toJSONKey = toJSONKeyText txInToText - -txInToText :: TxIn c -> Text -txInToText (TxIn (TxId txidHash) ix) = - hashToTextAsHex (extractHash txidHash) - <> Text.pack "#" - <> Text.pack (show ix) - --- | The input of a UTxO. -data TxIn c = TxIn !(TxId c) {-# UNPACK #-} !TxIx - deriving (Generic) - --- | Construct `TxIn` while throwing an error for an out of range `TxIx`. Make --- sure to use it only for testing. -mkTxInPartial :: HasCallStack => TxId c -> Integer -> TxIn c -mkTxInPartial txId = TxIn txId . mkTxIxPartial - -deriving instance Eq (TxIn c) - -deriving instance Ord (TxIn c) - -deriving instance Show (TxIn c) - -deriving instance Crypto c => NFData (TxIn c) - -instance NoThunks (TxIn c) - -instance Crypto c => EncCBOR (TxIn c) where - encCBOR (TxIn txId index) = - encodeListLen 2 - <> encCBOR txId - <> encCBOR index - -instance Crypto c => DecCBOR (TxIn c) where - decCBOR = - decodeRecordNamed - "TxIn" - (const 2) - (TxIn <$> decCBOR <*> decCBOR) diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/UMap.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/UMap.hs deleted file mode 100644 index f34895fe1a3..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/UMap.hs +++ /dev/null @@ -1,1037 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE ViewPatterns #-} - --- | A 'UMap' (for Unified map) represents --- --- 1. 4 Maps with the same domain in one direction, as a single `Map` and --- 2. 1 other `Map` which is an inverse of one of the other 4 Maps. --- --- The advantage of using `UMap` is that it stores all the information --- compactly, by exploiting the large amount of sharing in Map #1. --- --- As for the other Map #2, we don't expect it to have much volume. -module Cardano.Ledger.UMap ( - -- * Constructing a `UMap` - RDPair (..), - rdRewardCoin, - rdDepositCoin, - UMElem (UMElem), - umElemRDPair, - umElemRDActive, - umElemPtrs, - umElemSPool, - umElemDRep, - umElemAsTuple, - nullUMElem, - nullUMElemMaybe, - UMap (..), - umElemsL, - empty, - umInvariant, - - -- * StakeCredentials - StakeCredentials (..), - toStakeCredentials, - domRestrictedStakeCredentials, - - -- * `UView` and its components - UView (..), - rewDepUView, - ptrUView, - sPoolUView, - dRepUView, - unUView, - unUnifyToVMap, - rdPairMap, - rewardMap, - compactRewardMap, - depositMap, - ptrMap, - invPtrMap, - sPoolMap, - dRepMap, - domRestrictedMap, - CompactForm (CompactCoin), - toCompact, - fromCompact, - addCompact, - sumCompactCoin, - sumRewardsUView, - sumDepositUView, - compactCoinOrError, - unify, - unUnify, - - -- * Set and Map operations on `UView`s - nullUView, - member, - notMember, - delete, - delete', - insertWith, - insertWith', - insert, - insert', - adjust, - lookup, - domain, - range, - (∪), - unionL, - (⨃), - unionR, - (∪+), - unionRewAgg, - unionKeyDeposits, - (⋪), - domDelete, - (⋫), - rngDelete, - (◁), - domRestrict, - - -- * Derived functions - findWithDefault, - size, - domDeleteAll, -) -where - -import Cardano.Ledger.Binary -import Cardano.Ledger.Coin (Coin (..), CompactForm (CompactCoin), compactCoinOrError) -import Cardano.Ledger.Compactible (Compactible (..)) -import Cardano.Ledger.Credential (Credential (..), Ptr) -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.DRep (DRep) -import Cardano.Ledger.Keys (KeyHash, KeyRole (..)) -import Control.DeepSeq (NFData (..)) -import Control.Monad.Trans.State.Strict (StateT (..)) -import Data.Aeson (ToJSON (..), object, (.=)) -import qualified Data.Aeson as Aeson -import Data.Foldable (Foldable (..)) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.MapExtras (intersectDomPLeft) -import Data.Maybe as Maybe (fromMaybe, isNothing, mapMaybe) -import Data.Maybe.Strict (StrictMaybe (..)) -import Data.Set (Set) -import qualified Data.Set as Set -import qualified Data.Set.Internal as SI (Set (Tip)) -import qualified Data.VMap as VMap -import GHC.Generics (Generic) -import Lens.Micro (Lens', lens) -import NoThunks.Class (NoThunks (..)) -import Prelude hiding (lookup, null) - --- | A Reward-Deposit Pair --- Used to represent the reward and the deposit for a given (Credential 'Staking c) -data RDPair = RDPair - { rdReward :: {-# UNPACK #-} !(CompactForm Coin) - , rdDeposit :: {-# UNPACK #-} !(CompactForm Coin) - } - deriving (Show, Eq, Ord, Generic, NoThunks, NFData) - --- rdReward and rdDeposit return a (CompactForm Coin), These return a Coin. - -rdRewardCoin :: RDPair -> Coin -rdRewardCoin rdp = fromCompact (rdReward rdp) - -rdDepositCoin :: RDPair -> Coin -rdDepositCoin rdp = fromCompact (rdDeposit rdp) - -instance EncCBOR RDPair where - encCBOR RDPair {rdReward, rdDeposit} = - encodeListLen 2 <> encCBOR rdReward <> encCBOR rdDeposit - -instance DecCBOR RDPair where - decCBOR = - decodeRecordNamed "RDPair" (const 2) $ RDPair <$> decCBOR <*> decCBOR - --- | A `UMElem` compactly represents the range of 4 `Map`s with the same domain --- as a single n-tuple. --- --- This space-compacting datatype, and the pattern `UMElem` are equivalent to: --- @ --- data Elem c = Elem --- { rdPairT :: !(StrictMaybe RDPair), --- ptrT :: !(Set Ptr), --- sPoolT :: !(StrictMaybe (KeyHash 'StakePool c)), -- the stake pool identity --- dRepT :: !(StrictMaybe (DRep c)), --- } --- deriving (Show, Eq, Generic, NoThunks, NFData) --- @ --- --- To name the constructors of `UMElem` we use the notation @Txxx@ where --- each @x@ is --- either @F@ for full, i.e. the component is present, --- or @E@ for empty, i.e. the component is not present. --- --- There are four components: --- 1) the reward-deposit pair as an `RDPair` (CompactForm Coin) (CompactForm Coin) as a pair of Word64s, the first @x@, --- 2) the set of pointers, the second @x@, --- 3) the stake pool id (KeyHash 'StakePool c), the third @x@, and --- 4) the voting delegatee id (DRep c), the fourth @x@. --- --- So, --- TEEEE means none of the components are present, --- TFEEE means only the reward-deposit pair is present, --- TEFEE means only the set of pointers is present, --- TEEFE means only the stake pool id is present. etc. --- TEEEF means only the voting delegatee id is present, and --- --- The pattern 'UMElem' will correctly use the optimal constructor. -data UMElem c - = TEEEE - | TEEEF !(DRep c) - | TEEFE !(KeyHash 'StakePool c) - | TEEFF !(KeyHash 'StakePool c) !(DRep c) - | TEFEE !(Set Ptr) - | TEFEF !(Set Ptr) !(DRep c) - | TEFFE !(Set Ptr) !(KeyHash 'StakePool c) - | TEFFF !(Set Ptr) !(KeyHash 'StakePool c) !(DRep c) - | TFEEE {-# UNPACK #-} !RDPair - | TFEEF {-# UNPACK #-} !RDPair !(DRep c) - | TFEFE {-# UNPACK #-} !RDPair !(KeyHash 'StakePool c) - | TFEFF {-# UNPACK #-} !RDPair !(KeyHash 'StakePool c) !(DRep c) - | TFFEE {-# UNPACK #-} !RDPair !(Set Ptr) - | TFFEF {-# UNPACK #-} !RDPair !(Set Ptr) !(DRep c) - | TFFFE {-# UNPACK #-} !RDPair !(Set Ptr) !(KeyHash 'StakePool c) - | TFFFF {-# UNPACK #-} !RDPair !(Set Ptr) !(KeyHash 'StakePool c) !(DRep c) - deriving (Eq, Ord, Generic, NoThunks, NFData) - -instance Crypto c => ToJSON (UMElem c) where - toJSON = object . toUMElemair - toEncoding = Aeson.pairs . mconcat . toUMElemair - -toUMElemair :: (Aeson.KeyValue e a, Crypto c) => UMElem c -> [a] -toUMElemair (UMElem !rd !ptr !spool !drep) = - [ "reward" .= fmap rdReward rd - , "deposit" .= fmap rdDeposit rd - , "ptr" .= ptr - , "spool" .= spool - , "drep" .= drep - ] - -instance Crypto c => EncCBOR (UMElem c) where - encCBOR (UMElem rd ptrSet sPool dRep) = - encodeListLen 4 <> encCBOR rd <> encCBOR ptrSet <> encCBOR sPool <> encCBOR dRep - -instance Crypto c => DecShareCBOR (UMElem c) where - type Share (UMElem c) = Interns (KeyHash 'StakePool c) - decShareCBOR is = - decodeRecordNamed "UMElem" (const 4) $ - UMElem - <$> decCBOR - <*> decCBOR - <*> decShareMonadCBOR is - <*> decCBOR - --- | A n-Tuple view of the `UMElem`. --- We can view all of the constructors as an `UMElem`. -umElemAsTuple :: - UMElem c -> - (StrictMaybe RDPair, Set Ptr, StrictMaybe (KeyHash 'StakePool c), StrictMaybe (DRep c)) -umElemAsTuple = \case - TEEEE -> (SNothing, Set.empty, SNothing, SNothing) - TEEEF v -> (SNothing, Set.empty, SNothing, SJust v) - TEEFE s -> (SNothing, Set.empty, SJust s, SNothing) - TEEFF s v -> (SNothing, Set.empty, SJust s, SJust v) - TEFEE p -> (SNothing, p, SNothing, SNothing) - TEFEF p v -> (SNothing, p, SNothing, SJust v) - TEFFE p s -> (SNothing, p, SJust s, SNothing) - TEFFF p s v -> (SNothing, p, SJust s, SJust v) - TFEEE r -> (SJust r, Set.empty, SNothing, SNothing) - TFEEF r v -> (SJust r, Set.empty, SNothing, SJust v) - TFEFE r s -> (SJust r, Set.empty, SJust s, SNothing) - TFEFF r s v -> (SJust r, Set.empty, SJust s, SJust v) - TFFEE r p -> (SJust r, p, SNothing, SNothing) - TFFEF r p v -> (SJust r, p, SNothing, SJust v) - TFFFE r p s -> (SJust r, p, SJust s, SNothing) - TFFFF r p s v -> (SJust r, p, SJust s, SJust v) -{-# INLINE umElemAsTuple #-} - --- | Extract a delegated reward-deposit pair if it is present. --- We can tell that the pair is present and active when Txxxx has --- an F in the 1st position (present) and 3rd position (delegated). --- --- This is equivalent to the pattern (ElemP (SJust r) _ (SJust _) _) -> Just r -umElemRDActive :: UMElem c -> Maybe RDPair -umElemRDActive = \case - TFEFE rdA _ -> Just rdA - TFEFF rdA _ _ -> Just rdA - TFFFE rdA _ _ -> Just rdA - TFFFF rdA _ _ _ -> Just rdA - _ -> Nothing -{-# INLINE umElemRDActive #-} - --- | Extract the reward-deposit pair if it is present. --- We can tell that the reward is present when Txxxx has an F in the first position --- --- This is equivalent to the pattern (ElemP (SJust r) _ _ _) -> Just r -umElemRDPair :: UMElem c -> Maybe RDPair -umElemRDPair = \case - TFEEE r -> Just r - TFEEF r _ -> Just r - TFEFE r _ -> Just r - TFEFF r _ _ -> Just r - TFFEE r _ -> Just r - TFFEF r _ _ -> Just r - TFFFE r _ _ -> Just r - TFFFF r _ _ _ -> Just r - _ -> Nothing -{-# INLINE umElemRDPair #-} - --- | Extract the set of pointers if it is non-empty. --- We can tell that the reward is present when Txxxx has an F in the second position --- --- This is equivalent to the pattern (ElemP _ ptrs _ _) | not (Set.null ptrs) -> Just ptrs -umElemPtrs :: UMElem c -> Maybe (Set.Set Ptr) -umElemPtrs = \case - TEFEE p | not (Set.null p) -> Just p - TEFEF p _ | not (Set.null p) -> Just p - TEFFE p _ | not (Set.null p) -> Just p - TEFFF p _ _ | not (Set.null p) -> Just p - TFFEE _ p | not (Set.null p) -> Just p - TFFEF _ p _ | not (Set.null p) -> Just p - TFFFE _ p _ | not (Set.null p) -> Just p - TFFFF _ p _ _ | not (Set.null p) -> Just p - _ -> Nothing -{-# INLINE umElemPtrs #-} - --- | Extract the stake delegatee pool id, if present. --- We can tell that the pool id is present when Txxxx has an F in the third position --- --- This is equivalent to the pattern (ElemP _ _ (SJust s) _) -> Just s -umElemSPool :: UMElem c -> Maybe (KeyHash 'StakePool c) -umElemSPool = \case - TEEFE s -> Just s - TEEFF s _ -> Just s - TEFFE _ s -> Just s - TEFFF _ s _ -> Just s - TFEFE _ s -> Just s - TFEFF _ s _ -> Just s - TFFFE _ _ s -> Just s - TFFFF _ _ s _ -> Just s - _ -> Nothing -{-# INLINE umElemSPool #-} - --- | Extract the voting delegatee id, if present. --- We can tell that the delegatee is present when Txxxx has an F in the fourth position --- --- This is equivalent to the pattern (ElemP _ _ _ (SJust v)) -> Just v -umElemDRep :: UMElem c -> Maybe (DRep c) -umElemDRep = \case - TEEEF d -> Just d - TEEFF _ d -> Just d - TEFEF _ d -> Just d - TEFFF _ _ d -> Just d - TFEEF _ d -> Just d - TFEFF _ _ d -> Just d - TFFEF _ _ d -> Just d - TFFFF _ _ _ d -> Just d - _ -> Nothing -{-# INLINE umElemDRep #-} - --- | A `UMElem` can be extracted and injected into the `TEEEE` ... `TFFFF` constructors. -pattern UMElem :: - StrictMaybe RDPair -> - Set Ptr -> - StrictMaybe (KeyHash 'StakePool c) -> - StrictMaybe (DRep c) -> - UMElem c -pattern UMElem i j k l <- (umElemAsTuple -> (i, j, k, l)) - where - UMElem i j k l = case (i, j, k, l) of - (SNothing, SI.Tip, SNothing, SNothing) -> TEEEE - (SNothing, SI.Tip, SNothing, SJust d) -> TEEEF d - (SNothing, SI.Tip, SJust s, SNothing) -> TEEFE s - (SNothing, SI.Tip, SJust s, SJust d) -> TEEFF s d - (SNothing, p, SNothing, SNothing) -> TEFEE p - (SNothing, p, SNothing, SJust d) -> TEFEF p d - (SNothing, p, SJust s, SNothing) -> TEFFE p s - (SNothing, p, SJust s, SJust d) -> TEFFF p s d - (SJust r, SI.Tip, SNothing, SNothing) -> TFEEE r - (SJust r, SI.Tip, SNothing, SJust d) -> TFEEF r d - (SJust r, SI.Tip, SJust s, SNothing) -> TFEFE r s - (SJust r, SI.Tip, SJust s, SJust d) -> TFEFF r s d - (SJust r, p, SNothing, SNothing) -> TFFEE r p - (SJust r, p, SNothing, SJust d) -> TFFEF r p d - (SJust r, p, SJust s, SNothing) -> TFFFE r p s - (SJust r, p, SJust s, SJust d) -> TFFFF r p s d - -{-# COMPLETE UMElem #-} - -instance Show (UMElem c) where - show (UMElem a b c d) = - unlines - [ "(UMElem (" - , show a <> ", " - , show b <> ", " - , show c <> ", " - , show d - , "))" - ] - --- | A unified map represents 4 Maps with domain @(Credential 'Staking c)@ --- --- 1) Map (Credential 'Staking c) RDPair -- (RDPair rewardCoin depositCoin) --- 2) Map (Credential 'Staking c) (Set Ptr) --- 3) Map (Credential 'Staking c) (StrictMaybe (KeyHash 'StakePool c)) --- 4) Map (Credential 'Staking c) (StrictMaybe (DRep c)) --- and one more map in the inverse direction with @Ptr@ for keys and @(Credential 'Staking c)@ for values. -data UMap c = UMap - { umElems :: !(Map (Credential 'Staking c) (UMElem c)) - , umPtrs :: !(Map Ptr (Credential 'Staking c)) - } - deriving (Show, Eq, Generic, NoThunks, NFData) - -umElemsL :: Lens' (UMap c) (Map (Credential 'Staking c) (UMElem c)) -umElemsL = lens umElems (\x y -> x {umElems = y}) - --- | All maps unrolled. It is important to note that all fields are lazy, because --- conversion from UMap can be expensive, thus only fields that are forced will incur that --- conversion overhead. -data StakeCredentials c = StakeCredentials - { scRewards :: Map (Credential 'Staking c) Coin - , scDeposits :: Map (Credential 'Staking c) Coin - , scSPools :: Map (Credential 'Staking c) (KeyHash 'StakePool c) - , scDReps :: Map (Credential 'Staking c) (DRep c) - , scPtrs :: Map Ptr (Credential 'Staking c) - , scPtrsInverse :: Map (Credential 'Staking c) (Set Ptr) - -- ^ There will be no empty sets in the range - } - deriving (Show, Eq, Generic, NoThunks, NFData) - -instance Crypto c => ToJSON (UMap c) where - toJSON = object . toUMapPair - toEncoding = Aeson.pairs . mconcat . toUMapPair - -toUMapPair :: (Aeson.KeyValue e a, Crypto c) => UMap c -> [a] -toUMapPair (UMap !m1 !m2) = - [ "credentials" .= m1 - , "pointers" .= m2 - ] - -instance Crypto c => EncCBOR (UMap c) where - encCBOR UMap {umElems, umPtrs} = - encodeListLen 2 <> encodeMap encCBOR encCBOR umElems <> encodeMap encCBOR encCBOR umPtrs - -instance Crypto c => DecShareCBOR (UMap c) where - type Share (UMap c) = (Interns (Credential 'Staking c), Interns (KeyHash 'StakePool c)) - decSharePlusCBOR = - StateT - ( \(a, b) -> - decodeRecordNamed "UMap" (const 2) $ do - umElems <- decodeMap (interns a <$> decCBOR) (decShareCBOR b) - let a' = internsFromMap umElems <> a - umPtrs <- decodeMap decCBOR (interns a' <$> decCBOR) - pure (UMap {umElems, umPtrs}, (a', b)) - ) - --- | It is worthwhile stating the invariant that holds on a Unified Map. --- The `umPtrs` and the `ptrT` field of the `umElems` are inverses. -umInvariant :: Credential 'Staking c -> Ptr -> UMap c -> Bool -umInvariant cred ptr UMap {umElems, umPtrs} = forwards && backwards - where - forwards = - case Map.lookup cred umElems of - Nothing -> cred `notElem` umPtrs - Just (UMElem _r ptrSet _s _) -> - not (Set.member ptr ptrSet) - || ( case Map.lookup ptr umPtrs of - Nothing -> False - Just cred2 -> cred == cred2 - ) - backwards = - case Map.lookup ptr umPtrs of - Nothing -> all (\(UMElem _ ptrSet _ _) -> Set.notMember ptr ptrSet) umElems - Just cred' -> - case Map.lookup cred' umElems of - Nothing -> False - Just (UMElem _ ptrSet _ _) -> Set.member ptr ptrSet - --- | A `UView` lets one view a `UMap` in @n@ different ways, --- one for each of the elements in a Unified Element `UMElem` @(4)@ --- A @(UView c key value)@ can be used like a @(Map key value)@. --- It acts like a map, supporting efficient insert, delete, and lookup operations. -data UView c k v where - RewDepUView :: - !(UMap c) -> - UView c (Credential 'Staking c) RDPair - PtrUView :: - !(UMap c) -> - UView c Ptr (Credential 'Staking c) - SPoolUView :: - !(UMap c) -> - UView c (Credential 'Staking c) (KeyHash 'StakePool c) - DRepUView :: - !(UMap c) -> - UView c (Credential 'Staking c) (DRep c) - --- | Construct a `RewDepUView` from the two maps that make up a `UMap` -rewDepUView :: - Map (Credential 'Staking c) (UMElem c) -> - Map Ptr (Credential 'Staking c) -> - UView c (Credential 'Staking c) RDPair -rewDepUView a b = RewDepUView (UMap a b) - --- | Construct a `PtrUView` from the two maps that make up a `UMap` -ptrUView :: - Map (Credential 'Staking c) (UMElem c) -> - Map Ptr (Credential 'Staking c) -> - UView c Ptr (Credential 'Staking c) -ptrUView a b = PtrUView (UMap a b) - --- | Construct a `SPoolUView` from the two maps that make up a `UMap` -sPoolUView :: - Map (Credential 'Staking c) (UMElem c) -> - Map Ptr (Credential 'Staking c) -> - UView c (Credential 'Staking c) (KeyHash 'StakePool c) -sPoolUView a b = SPoolUView (UMap a b) - --- | Construct a `DRepUView` from the two maps that make up a `UMap` -dRepUView :: - Map (Credential 'Staking c) (UMElem c) -> - Map Ptr (Credential 'Staking c) -> - UView c (Credential 'Staking c) (DRep c) -dRepUView a b = DRepUView (UMap a b) - --- | Extract the underlying `UMap` from a `UView` -unUView :: UView c k v -> UMap c -unUView = \case - RewDepUView um -> um - PtrUView um -> um - SPoolUView um -> um - DRepUView um -> um - --- | Materialize a real `Map` from a `View` --- This is expensive, use it wisely (like maybe once per epoch boundary to make a `SnapShot`) --- See also domRestrictedMap, which domain-restricts before computing a view. -unUnify :: UView c k v -> Map k v -unUnify = \case - RewDepUView UMap {umElems} -> Map.mapMaybe umElemRDPair umElems - PtrUView UMap {umPtrs} -> umPtrs - SPoolUView UMap {umElems} -> Map.mapMaybe umElemSPool umElems - DRepUView UMap {umElems} -> Map.mapMaybe umElemDRep umElems - --- | Materialize a real `VMap` (Vector Map) from a `UView` --- This is expensive, use it wisely (like maybe once per epoch boundary to make a `SnapShot`) -unUnifyToVMap :: UView c k v -> VMap.VMap VMap.VB VMap.VB k v -unUnifyToVMap uview = case uview of - RewDepUView UMap {umElems} -> - VMap.fromListN (size uview) . Maybe.mapMaybe toRDPair . Map.toList $ umElems - PtrUView UMap {umPtrs} -> VMap.fromMap umPtrs - SPoolUView UMap {umElems} -> - VMap.fromListN (size uview) . Maybe.mapMaybe toSPool . Map.toList $ umElems - DRepUView UMap {umElems} -> - VMap.fromListN (size uview) . Maybe.mapMaybe toDRep . Map.toList $ umElems - where - toRDPair (key, t) = (,) key <$> umElemRDPair t - toSPool (key, t) = (,) key <$> umElemSPool t - toDRep (key, t) = (,) key <$> umElemDRep t - --- | Extract a reward-deposit pairs `Map` from a 'UMap' -rdPairMap :: UMap c -> Map (Credential 'Staking c) RDPair -rdPairMap x = unUnify $ RewDepUView x - --- | Extract a rewards `Map` from a 'UMap' -rewardMap :: UMap c -> Map (Credential 'Staking c) Coin -rewardMap x = Map.map (fromCompact . rdReward) $ unUnify $ RewDepUView x - --- | Extract a compact rewards `Map` from a 'UMap' -compactRewardMap :: UMap c -> Map (Credential 'Staking c) (CompactForm Coin) -compactRewardMap x = Map.map rdReward $ unUnify $ RewDepUView x - --- | Extract a deposits `Map` from a 'UMap' -depositMap :: UMap c -> Map (Credential 'Staking c) Coin -depositMap x = Map.map (fromCompact . rdDeposit) $ unUnify $ RewDepUView x - --- | Extract a pointers `Map` from a 'UMap' -ptrMap :: UMap c -> Map Ptr (Credential 'Staking c) -ptrMap x = unUnify $ PtrUView x - --- | Extract a pointers `Map` from a 'UMap' -invPtrMap :: UMap c -> Map (Credential 'Staking c) (Set Ptr) -invPtrMap UMap {umElems} = - Map.foldlWithKey' - (\ans k (UMElem _ ptrSet _ _) -> if Set.null ptrSet then ans else Map.insert k ptrSet ans) - Map.empty - umElems - --- | Extract a stake pool delegations `Map` from a 'UMap' -sPoolMap :: UMap c -> Map (Credential 'Staking c) (KeyHash 'StakePool c) -sPoolMap x = unUnify $ SPoolUView x - --- | Extract a delegated-representatives `Map` from a 'UMap' -dRepMap :: UMap c -> Map (Credential 'Staking c) (DRep c) -dRepMap x = unUnify $ DRepUView x - --- | Extract a domain-restricted `Map` of a `UMap`. --- If `Set k` is small this should be efficient. -domRestrictedMap :: Set k -> UView c k v -> Map k v -domRestrictedMap setk = \case - RewDepUView UMap {umElems} -> Map.mapMaybe umElemRDPair (Map.restrictKeys umElems setk) - PtrUView UMap {umPtrs} -> Map.restrictKeys umPtrs setk - SPoolUView UMap {umElems} -> Map.mapMaybe umElemSPool (Map.restrictKeys umElems setk) - DRepUView UMap {umElems} -> Map.mapMaybe umElemDRep (Map.restrictKeys umElems setk) - -toStakeCredentials :: UMap c -> StakeCredentials c -toStakeCredentials umap = - StakeCredentials - { scRewards = rewardMap umap - , scDeposits = depositMap umap - , scSPools = sPoolMap umap - , scDReps = dRepMap umap - , scPtrs = ptrMap umap - , scPtrsInverse = invPtrMap umap - } - -domRestrictedStakeCredentials :: Set (Credential 'Staking c) -> UMap c -> StakeCredentials c -domRestrictedStakeCredentials setk UMap {umElems, umPtrs} = - let umElems' = Map.restrictKeys umElems setk - ptrs = Map.mapMaybe umElemPtrs umElems' - in StakeCredentials - { scRewards = Map.mapMaybe (\e -> fromCompact . rdReward <$> umElemRDPair e) umElems' - , scDeposits = Map.mapMaybe (\e -> fromCompact . rdDeposit <$> umElemRDPair e) umElems' - , scSPools = Map.mapMaybe umElemSPool umElems' - , scDReps = Map.mapMaybe umElemDRep umElems' - , scPtrs = umPtrs `Map.restrictKeys` fold ptrs - , scPtrsInverse = ptrs - } - --- | All `View`s are `Foldable` -instance Foldable (UView c k) where - foldMap f = \case - RewDepUView UMap {umElems} -> Map.foldlWithKey accum mempty umElems - where - accum ans _ (UMElem (SJust rd) _ _ _) = ans <> f rd - accum ans _ _ = ans - -- umInvariant` for `PtrUView` does not matter here. We just return a `Map` and not a `UMap`. - PtrUView UMap {umPtrs} -> foldMap f umPtrs - SPoolUView UMap {umElems} -> Map.foldlWithKey accum mempty umElems - where - accum ans _ (UMElem _ _ (SJust sd) _) = ans <> f sd - accum ans _ _ = ans - DRepUView UMap {umElems} -> Map.foldlWithKey accum mempty umElems - where - accum ans _ (UMElem _ _ _ (SJust vd)) = ans <> f vd - accum ans _ _ = ans - - foldr accum ans0 = \case - RewDepUView UMap {umElems} -> Map.foldr accum' ans0 umElems - where - accum' (UMElem (SJust rd) _ _ _) ans = accum rd ans - accum' _ ans = ans - -- umInvariant` for `PtrUView` does not matter here. We just return a `Map` and not a `UMap`. - PtrUView UMap {umPtrs} -> Map.foldr accum ans0 umPtrs - SPoolUView UMap {umElems} -> Map.foldr accum' ans0 umElems - where - accum' (UMElem _ _ (SJust sd) _) ans = accum sd ans - accum' _ ans = ans - DRepUView UMap {umElems} -> Map.foldr accum' ans0 umElems - where - accum' (UMElem _ _ _ (SJust vd)) ans = accum vd ans - accum' _ ans = ans - - foldl' accum ans0 = \case - RewDepUView UMap {umElems} -> Map.foldl' accum' ans0 umElems - where - accum' ans = maybe ans (accum ans) . umElemRDPair - -- umInvariant` for `PtrUView` does not matter here. We just return a `Map` and not a `UMap`. - PtrUView UMap {umPtrs} -> Map.foldl' accum ans0 umPtrs - SPoolUView UMap {umElems} -> Map.foldl' accum' ans0 umElems - where - accum' ans = maybe ans (accum ans) . umElemSPool - DRepUView UMap {umElems} -> Map.foldl' accum' ans0 umElems - where - accum' ans = maybe ans (accum ans) . umElemDRep - - length = size - --- | `null` for an `UMElem` -nullUMElem :: UMElem c -> Bool -nullUMElem = \case - UMElem SNothing ptrSet SNothing SNothing | Set.null ptrSet -> True - _ -> False - --- | `null` `Maybe` for an `UMElem` -nullUMElemMaybe :: UMElem c -> Maybe (UMElem c) -nullUMElemMaybe = \case - e | nullUMElem e -> Nothing - e -> Just e - --- | Construct an empty `UMap` -empty :: UMap c -empty = UMap Map.empty Map.empty - --- | Delete a key and its value from the map-like `UView`, returning a version of the same `UView`. --- --- In the case of a `PtrUView` we maintain the `umInvariant` and delete the pairs from both --- `umElems` as well as `umPtrs` of the `UMap`. -delete' :: k -> UView c k v -> UView c k v -delete' key = \case - RewDepUView UMap {umElems, umPtrs} -> rewDepUView (Map.update go key umElems) umPtrs - where - go (UMElem _ ptrSet sPool dRep) = nullUMElemMaybe $ UMElem SNothing ptrSet sPool dRep - PtrUView UMap {umElems, umPtrs} -> case Map.lookup key umPtrs of - Nothing -> PtrUView $ UMap umElems umPtrs - Just cred -> ptrUView (Map.update go cred umElems) (Map.delete key umPtrs) - where - go (UMElem rd ptrSet sPool dRep) = nullUMElemMaybe $ UMElem rd (Set.delete key ptrSet) sPool dRep - SPoolUView UMap {umElems, umPtrs} -> sPoolUView (Map.update go key umElems) umPtrs - where - go (UMElem rd ptrSet _ dRep) = nullUMElemMaybe $ UMElem rd ptrSet SNothing dRep - DRepUView UMap {umElems, umPtrs} -> dRepUView (Map.update go key umElems) umPtrs - where - go (UMElem rd ptrSet sPool _) = nullUMElemMaybe $ UMElem rd ptrSet sPool SNothing - -delete :: k -> UView c k v -> UMap c -delete k m = unUView $ delete' k m - --- | Insert with combination --- --- If `k` exists as a key in the (map-like) `UView`: --- --- 1. to keep the old value --- > insertWith' (\ old new -> old) k v view --- --- 2. to replace the old value with the new value --- > insertWith' (\ old new -> new) k v view --- --- 3. to combine the old and new values with summation --- > insertWith' (\ old new -> old + new) k v view --- --- If `k` does not exist as a key in the `UView`, --- the combining function is ignored, and --- the key `k` and the value `v` are inserted into the map-like `UView` --- > insertWith' ignoredCombiningFunction k v view -insertWith' :: (v -> v -> v) -> k -> v -> UView c k v -> UView c k v -insertWith' combine key val = \case - RewDepUView UMap {umElems, umPtrs} -> rewDepUView (Map.alter go key umElems) umPtrs - where - -- Here 'val' is (CompactForm Coin), but the UMap stores Word64, - -- so there is some implict coercion going on here using the UMElem pattern - go = \case - Nothing -> Just $ UMElem (SJust val) Set.empty SNothing SNothing - Just (UMElem SNothing ptrSet sPool dRep) -> nullUMElemMaybe $ UMElem (SJust val) ptrSet sPool dRep - Just (UMElem (SJust old) ptrSet sPool dRep) -> nullUMElemMaybe $ UMElem (SJust $ combine old val) ptrSet sPool dRep - -- Here `key` is a pointer, and `val` a stake credential. - -- We use the combining function to combine only the val, i.e. the stake credential. - -- We do not use the combining function to combine the key, i.e. the pointer. - -- We also maintain the `umInvariant`. - PtrUView UMap {umElems, umPtrs} -> - let - -- We consider what both the old and new stake credentials are - -- in order to be able to `retract` the pointer to the old credential later on. - (oldCred, newCred) = case Map.lookup key umPtrs of - Nothing -> (val, val) - Just oldVal -> (oldVal, combine oldVal val) - -- Delete the old pointer from the set in UMElem, but also delete the whole n-tuple if it goes null. - -- and, add the new pointer to the set in UMElem after retracting the old one. - newUmElem = Map.update addPtr newCred $ Map.update delPtr oldCred umElems - where - addPtr (UMElem rd ptrSet sPool dRep) = Just $ UMElem rd (Set.insert key ptrSet) sPool dRep - delPtr (UMElem rd ptrSet sPool dRep) = nullUMElemMaybe $ UMElem rd (Set.delete key ptrSet) sPool dRep - -- `newUmPtr` replaces the old one if one it exists. - newUmPtr = Map.insert key newCred umPtrs - in - PtrUView $ UMap newUmElem newUmPtr - SPoolUView UMap {umElems, umPtrs} -> sPoolUView (Map.alter go key umElems) umPtrs - where - go = \case - Nothing -> Just $ UMElem SNothing Set.empty (SJust val) SNothing - Just (UMElem rd ptrSet SNothing dRep) -> Just $ UMElem rd ptrSet (SJust val) dRep - Just (UMElem rd ptrSet (SJust old) dRep) -> Just $ UMElem rd ptrSet (SJust $ combine old val) dRep - DRepUView UMap {umElems, umPtrs} -> dRepUView (Map.alter go key umElems) umPtrs - where - go = \case - Nothing -> Just $ UMElem SNothing Set.empty SNothing $ SJust val - Just (UMElem rd ptrSet sPool SNothing) -> Just $ UMElem rd ptrSet sPool $ SJust val - Just (UMElem rd ptrSet sPool (SJust old)) -> Just $ UMElem rd ptrSet sPool $ SJust $ combine old val - -insertWith :: (v -> v -> v) -> k -> v -> UView c k v -> UMap c -insertWith combine k v uview = unUView $ insertWith' combine k v uview - -insert' :: k -> v -> UView c k v -> UView c k v -insert' = insertWith' $ \_old new -> new - -insert :: k -> v -> UView c k v -> UMap c -insert k v uview = unUView $ insert' k v uview - --- | Adjust a `UView`, just like `Map.adjust`. --- This is implemented only for reward-deposit pairs. -adjust :: (RDPair -> RDPair) -> k -> UView c k RDPair -> UMap c -adjust f k (RewDepUView UMap {umElems, umPtrs}) = UMap (Map.adjust go k umElems) umPtrs - where - go (UMElem (SJust rd) ptrSet sPool dRep) = UMElem (SJust (f rd)) ptrSet sPool dRep - go (UMElem SNothing ptrSet sPool dRep) = UMElem SNothing ptrSet sPool dRep - --- | Lookup a `UView`, just like `Map.lookup`. -lookup :: k -> UView c k v -> Maybe v -lookup key = \case - RewDepUView UMap {umElems} -> Map.lookup key umElems >>= umElemRDPair - PtrUView UMap {umPtrs} -> Map.lookup key umPtrs - SPoolUView UMap {umElems} -> Map.lookup key umElems >>= umElemSPool - DRepUView UMap {umElems} -> Map.lookup key umElems >>= umElemDRep - --- | `null` for a `UView`, just like `Map.null` -nullUView :: UView c k v -> Bool -nullUView = \case - RewDepUView UMap {umElems} -> all (isNothing . umElemRDPair) umElems - PtrUView UMap {umPtrs} -> Map.null umPtrs - SPoolUView UMap {umElems} -> all (isNothing . umElemSPool) umElems - DRepUView UMap {umElems} -> all (isNothing . umElemDRep) umElems - --- | Get the domain of the `Map`-like `UView` -domain :: UView c k v -> Set k -domain = \case - RewDepUView UMap {umElems} -> Map.foldlWithKey' accum Set.empty umElems - where - accum ans k (UMElem (SJust _) _ _ _) = Set.insert k ans - accum ans _ _ = ans - PtrUView UMap {umPtrs} -> Map.keysSet umPtrs - SPoolUView UMap {umElems} -> Map.foldlWithKey' accum Set.empty umElems - where - accum ans k (UMElem _ _ (SJust _) _) = Set.insert k ans - accum ans _ _ = ans - DRepUView UMap {umElems} -> Map.foldlWithKey' accum Set.empty umElems - where - accum ans k (UMElem _ _ _ (SJust _)) = Set.insert k ans - accum ans _ _ = ans - --- | Get the range of the `Map`-like `UView` -range :: UView c k v -> Set v -range = \case - RewDepUView UMap {umElems} -> Map.foldl' accum Set.empty umElems - where - accum ans (UMElem (SJust rd) _ _ _) = Set.insert rd ans - accum ans _ = ans - PtrUView UMap {umPtrs} -> Set.fromList $ Map.elems umPtrs - SPoolUView UMap {umElems} -> Map.foldl' accum Set.empty umElems - where - accum ans (UMElem _ _ (SJust sPool) _) = Set.insert sPool ans - accum ans _ = ans - DRepUView UMap {umElems} -> Map.foldl' accum Set.empty umElems - where - accum ans (UMElem _ _ _ (SJust dRep)) = Set.insert dRep ans - accum ans _ = ans - --- | Union with left preference. --- So if k, already exists, do nothing, if it doesn't exist insert it. --- --- Spec: --- evalUnified (RewDepUView u1 ∪ singleton hk mempty) --- evalUnified (Ptrs u2 ∪ singleton ptr hk) -unionL, (∪) :: UView c k v -> (k, v) -> UMap c -view ∪ (k, v) = insertWith const k v view -unionL = (∪) - --- | Union with right preference. --- So if k, already exists, then old v is overwritten with the new v. --- --- Special rules apply for the `RewDepUView`, where only the `rdReward` --- field of the `RDPair` is overwritten, and the old `rdDeposit` value persists. --- --- Note: In this case it is an invariant that the domain of the `Map` on the right side --- is a subset of the domain of the RewDepUView. See the single case in --- module Cardano.Ledger.Shelley.Rules.Delegs, in the dealing with Withdrawals's where --- it is used at this type. --- --- Spec: --- evalUnified (delegations ds ⨃ singleton hk dpool) --- evalUnified (rewards' ⨃ wdrls_') -unionR, (⨃) :: UView c k v -> Map k v -> UMap c -(RewDepUView UMap {umElems, umPtrs}) ⨃ rightUmap = UMap (Map.foldlWithKey' accum umElems rightUmap) umPtrs - where - accum !ans k (RDPair r _) = Map.adjust overwrite k ans - where - overwrite (UMElem (SJust (RDPair _ d)) ptrSet sPool dRep) = UMElem (SJust (RDPair r d)) ptrSet sPool dRep - overwrite x = x -view ⨃ mp = unUView $ Map.foldlWithKey' accum view mp - where - accum ans k v = insertWith' (\_old new -> new) k v ans -unionR = (⨃) - --- | Add the reward from the `Map` on the right side to the reward in the `UView` on the left. --- This is only implemented and is applicable to `RewDepUView`s. --- --- We presume that the domain of the `Map` on the right, is a subset of the domain of the `UView` on the left. --- --- Spec: --- evalUnified (rewards dState ∪+ registeredAggregated) --- evalUnified (rewards' ∪+ update) --- evalUnified (RewDepUView u0 ∪+ refunds) -unionRewAgg - , (∪+) :: - UView c (Credential 'Staking c) RDPair -> - Map (Credential 'Staking c) (CompactForm Coin) -> - UMap c -unionRewAgg view m = Map.foldlWithKey' accum (unUView view) m - where - accum umap key ccoin = adjust combine key (RewDepUView umap) - where - combine (RDPair r d) = RDPair (addCompact r ccoin) d -(∪+) = unionRewAgg - --- | Add the deposit from the `Map` on the right side to the deposit in the `UView` on the left. --- This is only implemented and is applicable to `RewDepUView`s. -unionKeyDeposits :: UView c k RDPair -> Map k (CompactForm Coin) -> UMap c -unionKeyDeposits view m = unUView $ Map.foldlWithKey' accum view m - where - accum vw key ccoin = insertWith' combine key (RDPair (CompactCoin 0) ccoin) vw - -- If the key isn't present in the `UMap` the combining function is ignored - -- and the new `RDPair` is inserted in the `UMap`. Ref: haddock for `insertWith'`. - combine (RDPair r d) (RDPair _ newD) = RDPair r (addCompact d newD) - --- | Delete all keys in the given `Set` from the domain of the given map-like `UView`. --- --- Spec: --- evalUnified (setSingleton hk ⋪ RewDepUView u0) --- evalUnified (setSingleton hk ⋪ SPoolUView u1) -domDelete, (⋪) :: Set k -> UView c k v -> UMap c -set ⋪ view = unUView (Set.foldl' (flip delete') view set) -domDelete = (⋪) - --- | Delete the stake credentials in the domain and all associated ranges from the `UMap` --- This can be expensive when there are many pointers associated with the credential. -domDeleteAll :: Set (Credential 'Staking c) -> UMap c -> UMap c -domDeleteAll ks UMap {umElems, umPtrs} = - UMap - { umElems = Map.withoutKeys umElems ks - , umPtrs = Map.filter (`Set.notMember` ks) umPtrs - } - --- | Delete all elements in the given `Set` from the range of the given map-like `UView`. --- This is slow for SPoolUView, RewDepUView, and DReps UViews, better hope the sets are small --- --- Spec: --- evalUnified (Ptrs u2 ⋫ setSingleton hk) --- evalUnified (SPoolUView u1 ⋫ retired) -rngDelete, (⋫) :: UView c k v -> Set v -> UMap c -RewDepUView UMap {umElems, umPtrs} ⋫ rdSet = UMap (Map.foldlWithKey' accum umElems umElems) umPtrs - where - accum ans key = \case - UMElem (SJust rd) _ _ _ - | Set.member rd rdSet -> - let go (UMElem _ ptrSet sPool dRep) = nullUMElemMaybe $ UMElem SNothing ptrSet sPool dRep - in Map.update go key ans - _ -> ans -PtrUView um ⋫ set = Set.foldl' rmCred um set - where - rmCred m@UMap {umElems, umPtrs} cred = case Map.lookup cred umElems of - Nothing -> m - Just (UMElem _ kset _ _) -> - let go (UMElem rd _ sPool dRep) = nullUMElemMaybe $ UMElem rd Set.empty sPool dRep - in UMap (Map.update go cred umElems) (foldr Map.delete umPtrs kset) -SPoolUView UMap {umElems, umPtrs} ⋫ sPoolSet = UMap (Map.foldlWithKey' accum umElems umElems) umPtrs - where - accum ans key = \case - UMElem _ _ (SJust sPool) _ - | Set.member sPool sPoolSet -> - let go (UMElem rd ptrSet _ dRep) = nullUMElemMaybe $ UMElem rd ptrSet SNothing dRep - in Map.update go key ans - _ -> ans -DRepUView UMap {umElems, umPtrs} ⋫ dRepSet = UMap (Map.foldlWithKey' accum umElems umElems) umPtrs - where - accum ans key = \case - UMElem _ _ _ (SJust dRep) - | Set.member dRep dRepSet -> - let go (UMElem rd ptrSet sPool _) = nullUMElemMaybe $ UMElem rd ptrSet sPool SNothing - in Map.update go key ans - _ -> ans -rngDelete = (⋫) - --- | Membership check for a `UView`, just like `Map.member` --- --- Spec: --- eval (k ∈ dom (rewards dState)) --- eval (k ∈ dom (rewards ds))) --- eval (hk ∈ dom (rewards ds)) --- eval (hk ∉ dom (rewards ds)) -member, notMember :: k -> UView c k v -> Bool -member k = \case - RewDepUView UMap {umElems} -> case Map.lookup k umElems of - Just (UMElem (SJust _) _ _ _) -> True - _ -> False - PtrUView UMap {umPtrs} -> Map.member k umPtrs - SPoolUView UMap {umElems} -> case Map.lookup k umElems of - Just (UMElem _ _ (SJust _) _) -> True - _ -> False - DRepUView UMap {umElems} -> case Map.lookup k umElems of - Just (UMElem _ _ _ (SJust _)) -> True - _ -> False -notMember k um = not $ member k um - --- | Domain restriction. --- --- Spec: --- eval (dom rewards' ◁ iRReserves (_irwd ds) :: RewardAccounts (Crypto era)) --- eval (dom rewards' ◁ iRTreasury (_irwd ds) :: RewardAccounts (Crypto era)) -(◁), domRestrict :: UView c k v -> Map k u -> Map k u -RewDepUView UMap {umElems} ◁ m = intersectDomPLeft p m umElems - where - p _ (UMElem (SJust _) _ _ _) = True - p _ _ = False -PtrUView UMap {umPtrs} ◁ m = Map.intersection m umPtrs -SPoolUView UMap {umElems} ◁ m = intersectDomPLeft p m umElems - where - p _ (UMElem _ _ (SJust _) _) = True - p _ _ = False -DRepUView UMap {umElems} ◁ m = intersectDomPLeft p m umElems - where - p _ (UMElem _ _ _ (SJust _)) = True - p _ _ = False -domRestrict = (◁) - --- | Find the value associated with a key from a `UView`, return the default if the key is not there. -findWithDefault :: v -> k -> UView c k v -> v -findWithDefault def k = fromMaybe def . lookup k - --- | A `UView` is a view, so the size of the view is NOT the same as the size of --- the underlying `UMElem` map. -size :: UView c k v -> Int -size = \case - PtrUView UMap {umPtrs} -> Map.size umPtrs - x -> foldl' (\count _v -> count + 1) 0 x - --- | Create a UMap from 4 separate maps. NOTE: For use in tests only. -unify :: - Map (Credential 'Staking c) RDPair -> - Map Ptr (Credential 'Staking c) -> - Map (Credential 'Staking c) (KeyHash 'StakePool c) -> - Map (Credential 'Staking c) (DRep c) -> - UMap c -unify rd ptr sPool dRep = um4 - where - um1 = unUView $ Map.foldlWithKey' (\um k v -> insert' k v um) (RewDepUView empty) rd - um2 = unUView $ Map.foldlWithKey' (\um k v -> insert' k v um) (SPoolUView um1) sPool - um3 = unUView $ Map.foldlWithKey' (\um k v -> insert' k v um) (DRepUView um2) dRep - um4 = unUView $ Map.foldlWithKey' (\um k v -> insert' k v um) (PtrUView um3) ptr - -addCompact :: CompactForm Coin -> CompactForm Coin -> CompactForm Coin -addCompact (CompactCoin x) (CompactCoin y) = CompactCoin (x + y) - -sumCompactCoin :: Foldable t => t (CompactForm Coin) -> CompactForm Coin -sumCompactCoin = foldl' addCompact (CompactCoin 0) - -sumRewardsUView :: UView c k RDPair -> CompactForm Coin -sumRewardsUView = foldl' accum (CompactCoin 0) - where - accum ans (RDPair r _) = addCompact ans r - -sumDepositUView :: UView c k RDPair -> CompactForm Coin -sumDepositUView = foldl' accum (CompactCoin 0) - where - accum ans (RDPair _ d) = addCompact ans d diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/UTxO.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/UTxO.hs deleted file mode 100644 index b9ea2ecc650..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/UTxO.hs +++ /dev/null @@ -1,271 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilyDependencies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} - -module Cardano.Ledger.UTxO ( - -- * Primitives - UTxO (..), - EraUTxO (..), - ScriptsProvided (..), - - -- * Functions - txins, - txinLookup, - txInsFilter, - txouts, - balance, - coinBalance, - sumAllValue, - sumAllCoin, - areAllAdaOnly, - verifyWitVKey, - getScriptHash, -) -where - -import Cardano.Ledger.Address (Addr (..)) -import Cardano.Ledger.Binary ( - DecCBOR (..), - DecShareCBOR (Share, decShareCBOR), - EncCBOR (..), - FromCBOR (..), - Interns, - ToCBOR (..), - decodeMap, - ) -import Cardano.Ledger.CertState (CertState) -import Cardano.Ledger.Coin (Coin, CompactForm (CompactCoin)) -import Cardano.Ledger.Compactible (Compactible (..)) -import Cardano.Ledger.Core -import Cardano.Ledger.Credential (Credential (..)) -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Keys ( - DSignable, - Hash, - KeyHash, - KeyRole (..), - verifySignedDSIGN, - ) -import Cardano.Ledger.Keys.WitVKey (WitVKey (..)) -import Cardano.Ledger.TxIn (TxIn (..)) -import Control.DeepSeq (NFData) -import Control.Monad ((<$!>)) -import Data.Aeson (ToJSON) -import Data.Coerce (coerce) -import Data.Default.Class (Default) -import Data.Foldable (foldMap', toList) -import Data.Kind (Type) -import qualified Data.Map.Strict as Map -import Data.Monoid (Sum (..)) -import Data.Set (Set) -import Data.Typeable (Typeable) -import GHC.Generics (Generic) -import Lens.Micro ((^.)) -import NoThunks.Class (NoThunks (..)) -import Quiet (Quiet (Quiet)) - --- =============================================== - --- | The unspent transaction outputs. -newtype UTxO era = UTxO {unUTxO :: Map.Map (TxIn (EraCrypto era)) (TxOut era)} - deriving (Default, Generic, Semigroup) - -instance (EncCBOR (TxOut era), Era era) => ToCBOR (UTxO era) where - toCBOR = toEraCBOR @era - -instance (DecCBOR (TxOut era), Era era) => FromCBOR (UTxO era) where - fromCBOR = fromEraCBOR @era - -deriving instance NoThunks (TxOut era) => NoThunks (UTxO era) - -deriving instance (Era era, NFData (TxOut era)) => NFData (UTxO era) - -deriving newtype instance (Era era, Eq (TxOut era)) => Eq (UTxO era) - -deriving newtype instance Era era => Monoid (UTxO era) - -deriving newtype instance (Era era, EncCBOR (TxOut era)) => EncCBOR (UTxO era) - -deriving newtype instance (Era era, DecCBOR (TxOut era)) => DecCBOR (UTxO era) - -instance - ( Crypto (EraCrypto era) - , DecShareCBOR (TxOut era) - , Share (TxOut era) ~ Interns (Credential 'Staking (EraCrypto era)) - ) => - DecShareCBOR (UTxO era) - where - type - Share (UTxO era) = - Interns (Credential 'Staking (EraCrypto era)) - decShareCBOR credsInterns = - UTxO <$!> decodeMap decCBOR (decShareCBOR credsInterns) - -deriving via - Quiet (UTxO era) - instance - (Show (TxOut era), Crypto (EraCrypto era)) => Show (UTxO era) - -deriving newtype instance (Era era, ToJSON (TxOut era)) => ToJSON (UTxO era) - --- | Compute the UTxO inputs of a transaction. --- txins has the same problems as txouts, see notes below. -txins :: - EraTxBody era => - TxBody era -> - Set (TxIn (EraCrypto era)) -txins = (^. inputsTxBodyL) - --- | Compute the transaction outputs of a transaction. -txouts :: - forall era. - EraTxBody era => - TxBody era -> - UTxO era -txouts txBody = - UTxO $ - Map.fromList - [ (TxIn transId idx, out) - | (out, idx) <- zip (toList $ txBody ^. outputsTxBodyL) [minBound ..] - ] - where - transId = txIdTxBody txBody - --- | Lookup a txin for a given UTxO collection -txinLookup :: - TxIn (EraCrypto era) -> - UTxO era -> - Maybe (TxOut era) -txinLookup txin (UTxO utxo') = Map.lookup txin utxo' - --- | Filter out TxIn's from the `UTxO` map -txInsFilter :: - -- | Source `UTxO` - UTxO era -> - -- | Which of the `TxIn`s you would like to keep. - Set (TxIn (EraCrypto era)) -> - UTxO era -txInsFilter (UTxO utxo') txIns = UTxO (utxo' `Map.restrictKeys` txIns) - --- | Verify a transaction body witness -verifyWitVKey :: - ( Typeable kr - , Crypto c - , DSignable c (Hash c EraIndependentTxBody) - ) => - Hash c EraIndependentTxBody -> - WitVKey kr c -> - Bool -verifyWitVKey txbodyHash (WitVKey vkey sig) = verifySignedDSIGN vkey txbodyHash (coerce sig) -{-# INLINE verifyWitVKey #-} - --- | Determine the total balance contained in the UTxO. -balance :: EraTxOut era => UTxO era -> Value era -balance = sumAllValue . unUTxO -{-# INLINE balance #-} - --- | Determine the total Ada only balance contained in the UTxO. This is --- equivalent to `coin . balance`, but it will be more efficient -coinBalance :: EraTxOut era => UTxO era -> Coin -coinBalance = sumAllCoin . unUTxO -{-# INLINE coinBalance #-} - --- | Sum all the value in any Foldable with 'TxOut's -sumAllValue :: (EraTxOut era, Foldable f) => f (TxOut era) -> Value era -sumAllValue = foldMap' (^. valueTxOutL) -{-# INLINE sumAllValue #-} - --- | Sum all the 'Coin's in any Foldable with with 'TxOut's. Care should be --- taken since it is susceptible to integer overflow, therefore make sure this --- function is not applied to unvalidated 'TxOut's -sumAllCoin :: (EraTxOut era, Foldable f) => f (TxOut era) -> Coin -sumAllCoin = fromCompact . CompactCoin . getSum . foldMap' getCoinWord64 - where - getCoinWord64 txOut = - case txOut ^. compactCoinTxOutL of - CompactCoin w64 -> Sum w64 -{-# INLINE sumAllCoin #-} - --- | Check whether any of the supplied 'TxOut's contain any MultiAssets. Returns --- True if non of them do. -areAllAdaOnly :: (EraTxOut era, Foldable f) => f (TxOut era) -> Bool -areAllAdaOnly = all (^. isAdaOnlyTxOutF) -{-# INLINE areAllAdaOnly #-} - --- | Extract script hash from value address with script. -getScriptHash :: Addr c -> Maybe (ScriptHash c) -getScriptHash (Addr _ (ScriptHashObj hs) _) = Just hs -getScriptHash _ = Nothing - --- | The only reason it is a newtype instead of just a Map is becuase for later eras is --- expensive to compute the actual map, so we want to use the type safety guidance to --- avoid redundant work. -newtype ScriptsProvided era = ScriptsProvided - { unScriptsProvided :: Map.Map (ScriptHash (EraCrypto era)) (Script era) - } - deriving (Generic) - -deriving instance (Era era, Eq (Script era)) => Eq (ScriptsProvided era) -deriving instance (Era era, Ord (Script era)) => Ord (ScriptsProvided era) -deriving instance (Era era, Show (Script era)) => Show (ScriptsProvided era) -deriving instance (Era era, NFData (Script era)) => NFData (ScriptsProvided era) - -class EraTx era => EraUTxO era where - -- | A customizable type on per era basis for the information required to find all - -- scripts needed for the transaction. - type ScriptsNeeded era = (r :: Type) | r -> era - - -- | Calculate all the value that is being consumed by the transaction. - getConsumedValue :: - PParams era -> - -- | Function that can lookup current delegation deposits - (Credential 'Staking (EraCrypto era) -> Maybe Coin) -> - -- | Function that can lookup current drep deposits - (Credential 'DRepRole (EraCrypto era) -> Maybe Coin) -> - UTxO era -> - TxBody era -> - Value era - - getProducedValue :: - PParams era -> - -- | Check whether a pool with a supplied PoolStakeId is already registered. - (KeyHash 'StakePool (EraCrypto era) -> Bool) -> - TxBody era -> - Value era - - -- | Initial eras will look into witness set to find all of the available scripts, but - -- starting with Babbage we can look for available scripts in the UTxO using reference - -- inputs. - getScriptsProvided :: - -- | For some era it is necessary to look into the UTxO to find all of the available - -- scripts for the transaction - UTxO era -> - Tx era -> - ScriptsProvided era - - -- | Produce all the information required for figuring out which scripts are required - -- for the transaction to be valid, once those scripts are evaluated - getScriptsNeeded :: UTxO era -> TxBody era -> ScriptsNeeded era - - -- | Extract the set of all script hashes that are needed for script validation. - getScriptsHashesNeeded :: ScriptsNeeded era -> Set (ScriptHash (EraCrypto era)) - - -- | Extract all of the KeyHash witnesses that are required for validating the transaction - getWitsVKeyNeeded :: - CertState era -> UTxO era -> TxBody era -> Set (KeyHash 'Witness (EraCrypto era)) - - -- | Minimum fee computation, excluding witnesses and including ref scripts size - getMinFeeTxUtxo :: PParams era -> Tx era -> UTxO era -> Coin diff --git a/libs/cardano-ledger-core/src/Cardano/Ledger/Val.hs b/libs/cardano-ledger-core/src/Cardano/Ledger/Val.hs deleted file mode 100644 index fe38f50eb8b..00000000000 --- a/libs/cardano-ledger-core/src/Cardano/Ledger/Val.hs +++ /dev/null @@ -1,140 +0,0 @@ -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeFamilies #-} - --- | This module defines a generalised notion of a "value" - that is, something --- with which we may quantify a transaction output. -module Cardano.Ledger.Val ( - Val (..), - inject, - scale, - invert, - sumVal, - adaOnly, -) -where - -import Cardano.Ledger.BaseTypes (Inject (..)) -import Cardano.Ledger.Binary (DecCBOR, EncCBOR) -import Cardano.Ledger.Coin (Coin (..), CompactForm (..), DeltaCoin (..)) -import Cardano.Ledger.Compactible (Compactible (..)) -import Control.DeepSeq (NFData) -import Data.Aeson (ToJSON) -import Data.Coerce -import Data.Foldable (foldl') -import Data.Group (Abelian) -import NoThunks.Class (NoThunks) - -class - ( Compactible t - , Inject Coin t - , EncCBOR (CompactForm t) - , DecCBOR (CompactForm t) - , Abelian t - , NoThunks t - , EncCBOR t - , DecCBOR t - , ToJSON t - , NFData t - , Show t - , Eq t - ) => - Val t - where - -- | the value with nothing in it - zero :: t - zero = mempty - - -- | add two value - (<+>) :: t -> t -> t - x <+> y = x <> y - - -- | scale a value by an Integral constant - (<×>) :: Integral i => i -> t -> t - - -- | subtract two values - (<->) :: t -> t -> t - x <-> y = x <+> ((-1 :: Integer) <×> y) - - -- | Is the argument zero? - isZero :: t -> Bool - isZero t = t == mempty - - -- | Get the ADA present in the value (since ADA is our "blessed" currency) - coin :: t -> Coin - - -- | modify the blessed Coin part of t - modifyCoin :: (Coin -> Coin) -> t -> t - - size :: t -> Integer -- compute size of Val instance - - -- | used to compare values pointwise. Rather than using: (v1 <= v2) use: pointwise (<=) v1 v2 - -- | If a quantity is stored in only one of 'v1' or 'v2', we use 0 for the missing quantity. - pointwise :: (Integer -> Integer -> Bool) -> t -> t -> Bool - - -- | Check if value contains only ADA. Must hold property: - -- - -- > inject (coin v) == v - isAdaOnly :: t -> Bool - - isAdaOnlyCompact :: CompactForm t -> Bool - - coinCompact :: CompactForm t -> CompactForm Coin - - injectCompact :: CompactForm Coin -> CompactForm t - - modifyCompactCoin :: (CompactForm Coin -> CompactForm Coin) -> CompactForm t -> CompactForm t - --- ============================================================= --- Synonyms with types fixed at (Val t). Makes calls easier --- to read, and gives better error messages, when a mistake is made - -infixl 6 <+> - -infixl 6 <-> - -infixl 7 <×> - -scale :: (Val t, Integral i) => i -> t -> t -scale i v = i <×> v - -sumVal :: (Foldable t, Val v) => t v -> v -sumVal = foldl' (<+>) mempty - -invert :: Val t => t -> t -invert x = (-1 :: Integer) <×> x - --- returns a Value containing only the coin (ada) tokens from the input Value -adaOnly :: Val v => v -> Bool -adaOnly v = (inject . coin) v == v -{-# DEPRECATED adaOnly "In favor of `isAdaOnly`" #-} - -instance Val Coin where - n <×> (Coin x) = Coin $ fromIntegral n * x - coin = id - size _ = 1 - modifyCoin f v = f v - pointwise p (Coin x) (Coin y) = p x y - isAdaOnly _ = True - isAdaOnlyCompact _ = True - coinCompact = id - injectCompact = id - modifyCompactCoin = ($) - -instance Val DeltaCoin where - n <×> (DeltaCoin x) = DeltaCoin $ fromIntegral n * x - coin = coerce - size _ = 1 - modifyCoin f v = coerce f v - pointwise p (DeltaCoin x) (DeltaCoin y) = p x y - isAdaOnly _ = True - isAdaOnlyCompact _ = True - coinCompact (CompactDeltaCoin cc) = CompactCoin cc - injectCompact (CompactCoin cc) = CompactDeltaCoin cc - modifyCompactCoin f (CompactDeltaCoin cc) = - case f (CompactCoin cc) of - CompactCoin cc' -> CompactDeltaCoin cc' diff --git a/libs/cardano-ledger-core/test/Main.hs b/libs/cardano-ledger-core/test/Main.hs deleted file mode 100644 index 42d27ccdc0f..00000000000 --- a/libs/cardano-ledger-core/test/Main.hs +++ /dev/null @@ -1,20 +0,0 @@ -module Main where - -import qualified Test.Cardano.Ledger.AddressSpec as AddressSpec -import qualified Test.Cardano.Ledger.BaseTypesSpec as BaseTypesSpec -import qualified Test.Cardano.Ledger.BinarySpec as BinarySpec -import Test.Cardano.Ledger.Common -import qualified Test.Cardano.Ledger.JsonSpec as JsonSpec -import qualified Test.Cardano.Ledger.PlutusSpec as PlutusSpec -import qualified Test.Cardano.Ledger.UMapSpec as UMapSpec - -main :: IO () -main = - ledgerTestMain $ - describe "Core" $ do - AddressSpec.spec - BaseTypesSpec.spec - BinarySpec.spec - JsonSpec.spec - UMapSpec.spec - PlutusSpec.spec diff --git a/libs/cardano-ledger-core/test/Test/Cardano/Ledger/AddressSpec.hs b/libs/cardano-ledger-core/test/Test/Cardano/Ledger/AddressSpec.hs deleted file mode 100644 index 3e103365429..00000000000 --- a/libs/cardano-ledger-core/test/Test/Cardano/Ledger/AddressSpec.hs +++ /dev/null @@ -1,270 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE BinaryLiterals #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Test.Cardano.Ledger.AddressSpec (spec) where - -import qualified Cardano.Chain.Common as Byron -import qualified Cardano.Crypto.Hash.Class as Hash -import Cardano.Ledger.Address -import Cardano.Ledger.Binary (Version, byronProtVer, decodeFull', natVersion, serialize') -import Cardano.Ledger.Credential -import Cardano.Ledger.Crypto (Crypto (ADDRHASH), StandardCrypto) -import Cardano.Ledger.Keys ( - BootstrapWitness (..), - bootstrapWitKeyHash, - coerceKeyRole, - unpackByronVKey, - ) -import Control.Monad.Trans.Fail.String (errorFail) -import qualified Data.Binary.Put as B -import Data.Bits -import qualified Data.ByteString as BS -import qualified Data.ByteString.Base16 as B16 -import qualified Data.ByteString.Lazy as BSL -import qualified Data.ByteString.Short as SBS -import Data.Either -import Data.Maybe (isNothing) -import Data.Proxy -import Data.Word -import Test.Cardano.Ledger.Binary.RoundTrip ( - cborTrip, - roundTripCborSpec, - roundTripRangeExpectation, - ) -import Test.Cardano.Ledger.Common hiding ((.&.)) -import Test.Cardano.Ledger.Core.Address -import Test.Cardano.Ledger.Core.Arbitrary (genAddrBadPtr, genCompactAddrBadPtr) -import Test.Cardano.Ledger.Core.KeyPair (genByronVKeyAddr) - -spec :: Spec -spec = - describe "Address" $ do - roundTripAddressSpec - prop "rebuild the 'addr root' using a bootstrap witness" $ do - (byronVKey, byronAddr) <- genByronVKeyAddr - sig <- arbitrary - let addr = BootstrapAddress byronAddr - (shelleyVKey, chainCode) = unpackByronVKey @StandardCrypto byronVKey - witness :: BootstrapWitness StandardCrypto - witness = - BootstrapWitness - { bwKey = shelleyVKey - , bwChainCode = chainCode - , bwSig = sig - , bwAttributes = serialize' byronProtVer $ Byron.addrAttributes byronAddr - } - pure $ - coerceKeyRole (bootstrapKeyHash @StandardCrypto addr) - === bootstrapWitKeyHash witness - -roundTripAddressSpec :: Spec -roundTripAddressSpec = do - describe "CompactAddr" $ do - roundTripCborSpec @(CompactAddr StandardCrypto) - prop "compactAddr/decompactAddr round trip" $ - forAll genAddrBadPtr $ - propCompactAddrRoundTrip @StandardCrypto - prop "Compact address binary representation" $ - forAll genAddrBadPtr $ - propCompactSerializationAgree @StandardCrypto - prop "Ensure Addr failures on incorrect binary data" $ - propDecompactErrors @StandardCrypto - prop "Ensure RewardAcnt failures on incorrect binary data" $ - propDeserializeRewardAccountErrors @StandardCrypto - prop "RoundTrip-invalid" $ - forAll genCompactAddrBadPtr $ - roundTripRangeExpectation @(CompactAddr StandardCrypto) - cborTrip - (natVersion @2) - (natVersion @6) - prop "Decompact addr with junk" $ - propDecompactAddrWithJunk @StandardCrypto - prop "Same as old decompactor" $ propSameAsOldDecompactAddr @StandardCrypto - it "fail on extraneous bytes" $ - decodeAddr @StandardCrypto addressWithExtraneousBytes `shouldBe` Nothing - describe "Addr" $ do - roundTripCborSpec @(Addr StandardCrypto) - prop "RoundTrip-invalid" $ - forAll genAddrBadPtr $ - roundTripRangeExpectation @(Addr StandardCrypto) cborTrip (natVersion @2) (natVersion @6) - prop "Deserializing an address matches old implementation" $ - propValidateNewDeserialize @StandardCrypto - describe "RewardAcnt" $ do - roundTripCborSpec @(RewardAccount StandardCrypto) - -propSameAsOldDecompactAddr :: forall c. Crypto c => CompactAddr c -> Expectation -propSameAsOldDecompactAddr cAddr = do - addr `shouldBe` decompactAddrOld @c cAddr - addr `shouldBe` decompactAddrOldLazy @c cAddr - where - addr = decompactAddr @c cAddr - -propDecompactAddrWithJunk :: - forall c. - (HasCallStack, Crypto c) => - Addr c -> - BS.ByteString -> - Expectation -propDecompactAddrWithJunk addr junk = do - -- Add garbage to the end of serialized non-Byron address - bs <- case addr of - AddrBootstrap _ -> pure $ serialiseAddr addr - _ -> do - let bs = serialiseAddr addr <> junk - -- ensure we fail decoding of compact addresses with junk at the end - when (BS.length junk > 0) $ do - forM_ [natVersion @7 .. maxBound] $ \version -> do - let cbor = serialize' version bs - forM_ (decodeFull' version cbor) $ \(cAddr :: CompactAddr c) -> - expectationFailure $ - unlines - [ "Decoding with version: " ++ show version - , "unexpectedly was able to parse an address with junk at the end: " - , show cbor - , "as: " - , show cAddr - ] - pure bs - -- Ensure we drop off the junk at the end all the way through Alonzo - forM_ [minBound .. natVersion @6] $ \version -> do - -- Encode with garbage - let cbor = serialize' version bs - -- Decode as compact address - cAddr :: CompactAddr c <- - either (error . show) pure $ decodeFull' version cbor - -- Ensure that garbage is gone (decodeAddr will fail otherwise) - decodeAddr (serialiseAddr (decompactAddr cAddr)) `shouldReturn` addr - -propValidateNewDeserialize :: forall c. (HasCallStack, Crypto c) => Addr c -> Property -propValidateNewDeserialize addr = property $ do - let bs = serialiseAddr addr - deserializedOld = errorFail $ deserialiseAddrOld @c bs - deserializedNew = errorFail $ decodeAddr @c bs - deserializedNew `shouldBe` addr - deserializedOld `shouldBe` deserializedNew - -propCompactAddrRoundTrip :: Crypto c => Addr c -> Property -propCompactAddrRoundTrip addr = - let compact = compactAddr addr - decompact = decompactAddr compact - in addr === decompact - -propCompactSerializationAgree :: Addr c -> Property -propCompactSerializationAgree addr = - let sbs = unCompactAddr $ compactAddr addr - in sbs === SBS.toShort (serialiseAddr addr) - -propDecompactErrors :: forall c. Crypto c => Addr c -> Gen Property -propDecompactErrors addr = do - let sbs = unCompactAddr $ compactAddr addr - hashLen = fromIntegral $ Hash.sizeHash (Proxy :: Proxy (ADDRHASH c)) - bs = SBS.fromShort sbs - flipHeaderBit b = - case BS.uncons bs of - Just (h, bsTail) -> BS.cons (complementBit h b) bsTail - Nothing -> error "Impossible: CompactAddr can't be empty" - mingleHeader = do - b <- elements $ case addr of - Addr {} -> [1, 2, 3, 7] - AddrBootstrap {} -> [0 .. 7] - pure ("Header", flipHeaderBit b) - mingleAddLength = do - NonEmpty xs <- arbitrary - pure ("Add Length", bs <> BS.pack xs) - mingleDropLength = do - n <- chooseInt (1, BS.length bs) - pure ("Drop Length", BS.take (BS.length bs - n) bs) - mingleStaking = do - let (prefix, suffix) = BS.splitAt (1 + hashLen) bs - genBad32 = - putVariableLengthWord64 - <$> choose (fromIntegral (maxBound :: Word32) + 1, maxBound :: Word64) - genBad16 = - putVariableLengthWord64 - <$> choose (fromIntegral (maxBound :: Word16) + 1, maxBound :: Word64) - genGood32 = - putVariableLengthWord64 . (fromIntegral :: Word32 -> Word64) <$> arbitrary - genGood16 = - putVariableLengthWord64 . (fromIntegral :: Word16 -> Word64) <$> arbitrary - serializeSuffix xs = BSL.toStrict . B.runPut . mconcat <$> sequence xs - case addr of - Addr _ _ StakeRefPtr {} -> do - newSuffix <- - oneof - [ serializeSuffix [genBad32, genGood16, genGood16] - , serializeSuffix [genGood32, genBad16, genGood16] - , serializeSuffix [genGood32, genGood16, genBad16] - , serializeSuffix [genGood32, genGood16, genGood16, genGood16] - , -- We need to reset the first bit, to indicate that no more bytes do - -- follow. Besides the fact that the original suffix is retained, this - -- is similar to: - -- - -- serializeSuffix [genGood8, genGood32, genGood16, genGood16] - (\x -> BS.singleton (x .&. 0b01111111) <> suffix) <$> arbitrary - ] - pure ("Mingle Ptr", prefix <> newSuffix) - Addr _ _ StakeRefNull {} -> do - NonEmpty xs <- arbitrary - pure ("Bogus Null Ptr", prefix <> BS.pack xs) - Addr _ _ StakeRefBase {} -> do - xs <- arbitrary - let xs' = if length xs == hashLen then 0 : xs else xs - pure ("Bogus Staking", prefix <> BS.pack xs') - AddrBootstrap {} -> pure ("Bogus Bootstrap", BS.singleton 0b10000000 <> bs) - (mingler, badAddr) <- - oneof - [ mingleHeader - , mingleAddLength - , mingleDropLength - , mingleStaking - ] - pure - $ counterexample - ("Mingled address with " ++ mingler ++ " was parsed: " ++ show badAddr) - $ isLeft - $ decodeAddrEither @c badAddr - -propDeserializeRewardAccountErrors :: - forall c. Crypto c => Version -> RewardAccount c -> Gen Property -propDeserializeRewardAccountErrors v acnt = do - let bs = serialize' v acnt - flipHeaderBit b = - case BS.uncons bs of - Just (h, bsTail) -> BS.cons (complementBit h b) bsTail - Nothing -> error "Impossible: CompactAddr can't be empty" - mingleHeader = do - b <- elements [1, 2, 3, 5, 6, 7] - pure ("Header", flipHeaderBit b) - mingleAddLength = do - NonEmpty xs <- arbitrary - pure ("Add Length", bs <> BS.pack xs) - mingleDropLength = do - n <- chooseInt (1, BS.length bs) - pure ("Drop Length", BS.take (BS.length bs - n) bs) - (mingler, badAddr) <- - oneof - [ mingleHeader - , mingleAddLength - , mingleDropLength - ] - pure - $ counterexample - ("Mingled address with " ++ mingler ++ " was parsed: " ++ show badAddr) - $ isNothing - $ decodeRewardAccount @c badAddr - -addressWithExtraneousBytes :: HasCallStack => BS.ByteString -addressWithExtraneousBytes = bs - where - bs = case B16.decode hs of - Left e -> error $ show e - Right x -> x - hs = - "01AA5C8B35A934ED83436ABB56CDB44878DAC627529D2DA0B59CDA794405931B9359\ - \46E9391CABDFFDED07EB727F94E9E0F23739FF85978905BD460158907C589B9F1A62" diff --git a/libs/cardano-ledger-core/test/Test/Cardano/Ledger/BaseTypesSpec.hs b/libs/cardano-ledger-core/test/Test/Cardano/Ledger/BaseTypesSpec.hs deleted file mode 100644 index 7ba339a706c..00000000000 --- a/libs/cardano-ledger-core/test/Test/Cardano/Ledger/BaseTypesSpec.hs +++ /dev/null @@ -1,92 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.BaseTypesSpec (spec) where - -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.Binary -import Data.Aeson -import Data.ByteString.Lazy (ByteString) -import Data.Either -import Data.GenValidity (GenValid (genValid)) -import Data.GenValidity.Scientific () -import Data.Scientific -import Data.Typeable -import Test.Cardano.Ledger.Binary.RoundTrip (roundTripCborExpectation) -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Core.Arbitrary () - -boundedRationalTests :: - forall a. - ( BoundedRational a - , ToJSON a - , FromJSON a - , EncCBOR a - , DecCBOR a - , Arbitrary a - , GenValid a - , Show a - , Ord a - ) => - [(String, ByteString)] -> - Spec -boundedRationalTests badJSONValues = do - describe (showsTypeRep (typeRep (Proxy :: Proxy a)) "") $ do - describe "Rational roundtrip" $ do - prop "(boundRational . unboundRational)" $ \(bi :: a) -> - Just bi === boundRational (unboundRational bi) - prop "(unboundRational . boundRational)" $ - forAll genValid $ \r -> - maybe - (property True) - ((r ===) . unboundRational) - (boundRational r :: Maybe a) - prop "bounding produces valid values within bounds" $ - forAll genValid $ \r -> - case boundRational r of - Nothing -> property True - Just (br :: a) -> - conjoin - [ minBound <= br - , br <= maxBound - , unboundRational (minBound :: a) <= r - , r <= unboundRational (maxBound :: a) - ] - describe "JSON" $ do - prop "ToJSON/FromJSON roundtrip" $ - forAll genValid $ \(br :: a) -> - within 500000 $ - case boundedFromJSON (encode br) of - Left err -> error err - Right (br' :: a) -> unboundRational br === unboundRational br' - prop "Roundtrip from valid Scientific and back exactly" $ - within 500000 $ - forAll genValid $ \(s :: Scientific) -> - case boundedFromJSON (encode s) of - Right (ui :: a) -> s === fromRational (unboundRational ui) - Left _ -> property True - describe "Bad Values" $ do - prop "Check divergence" $ - within 500000 $ - boundedFromJSON "10e1234567893456" `shouldSatisfy` isLeft - forM_ badJSONValues $ \(testName, invalidInput) -> - it testName $ - boundedFromJSON invalidInput `shouldSatisfy` isLeft - prop "CBOR roundtrip" $ - forAll genValid $ - \(br :: a) -> roundTripCborExpectation br - where - boundedFromJSON = eitherDecode :: ByteString -> Either String a - -spec :: Spec -spec = do - let badJSONValues = - [("Word64 denominator overflow", "3.14159265358979323e-7"), ("Negative value", "-1e-3")] - describe "BoundedRational" $ do - boundedRationalTests @UnitInterval $ badJSONValues ++ [("Too big", "1.01")] - boundedRationalTests @PositiveUnitInterval $ - badJSONValues ++ [("Zero", "0"), ("Too big", "1.01")] - boundedRationalTests @PositiveInterval $ badJSONValues ++ [("Zero", "0")] - boundedRationalTests @NonNegativeInterval badJSONValues diff --git a/libs/cardano-ledger-core/test/Test/Cardano/Ledger/BinarySpec.hs b/libs/cardano-ledger-core/test/Test/Cardano/Ledger/BinarySpec.hs deleted file mode 100644 index bbbb80ce76e..00000000000 --- a/libs/cardano-ledger-core/test/Test/Cardano/Ledger/BinarySpec.hs +++ /dev/null @@ -1,50 +0,0 @@ -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.BinarySpec (spec) where - -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.Binary -import Cardano.Ledger.Coin -import Cardano.Ledger.Compactible -import Cardano.Ledger.Crypto -import Cardano.Ledger.DRep (DRep (..), DRepState (..)) -import Cardano.Ledger.Hashes (EraIndependentData, ScriptHash) -import Cardano.Ledger.Keys -import Cardano.Ledger.Plutus.CostModels (CostModelError (..)) -import Cardano.Ledger.SafeHash (SafeHash) -import Cardano.Ledger.TxIn -import Cardano.Ledger.UMap (RDPair) -import Test.Cardano.Ledger.Binary.RoundTrip -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Core.Arbitrary () - -spec :: Spec -spec = do - describe "RoundTrip" $ do - roundTripCborSpec @Coin - roundTripCborSpec @(CompactForm Coin) - prop "Encode CompactCoin - Decode Coin" $ - roundTripExpectation @Coin (mkTrip (encCBOR . compactCoinOrError) decCBOR) - prop "Encode Coin - Decode CompactCoin" $ - roundTripExpectation @Coin (mkTrip encCBOR (fromCompact <$> decCBOR)) - roundTripCborSpec @ProtVer - roundTripCborSpec @Nonce - roundTripCborSpec @Url - roundTripCborSpec @DnsName - roundTripCborSpec @Port - roundTripCborSpec @ActiveSlotCoeff - roundTripCborSpec @Network - roundTripCborSpec @(BlocksMade StandardCrypto) - roundTripCborSpec @TxIx - roundTripCborSpec @CertIx - roundTripCborSpec @(Anchor StandardCrypto) - roundTripAnnCborSpec @(BootstrapWitness StandardCrypto) - roundTripCborSpec @(TxId StandardCrypto) - roundTripCborSpec @(GenDelegPair StandardCrypto) - roundTripCborSpec @(GenDelegs StandardCrypto) - roundTripCborSpec @(DRepState StandardCrypto) - roundTripCborSpec @(DRep StandardCrypto) - roundTripCborSpec @RDPair - roundTripCborSpec @(ScriptHash StandardCrypto) - roundTripCborSpec @(SafeHash StandardCrypto EraIndependentData) - roundTripCborSpec @CostModelError diff --git a/libs/cardano-ledger-core/test/Test/Cardano/Ledger/JsonSpec.hs b/libs/cardano-ledger-core/test/Test/Cardano/Ledger/JsonSpec.hs deleted file mode 100644 index 7b1e2a4be6f..00000000000 --- a/libs/cardano-ledger-core/test/Test/Cardano/Ledger/JsonSpec.hs +++ /dev/null @@ -1,40 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.JsonSpec (spec) where - -import Cardano.Ledger.Address -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.Coin -import Cardano.Ledger.Credential -import Cardano.Ledger.Crypto -import Cardano.Ledger.DRep (DRep (..)) -import Cardano.Ledger.Keys -import Cardano.Ledger.Plutus.CostModels (CostModels) -import Cardano.Ledger.PoolParams -import Cardano.Ledger.TxIn -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Core.Arbitrary () -import Test.Cardano.Ledger.Core.JSON - -spec :: Spec -spec = do - describe "RoundTrip JSON" $ do - roundTripJsonSpec @Coin - roundTripJsonSpec @ProtVer - roundTripJsonSpec @Nonce - roundTripJsonSpec @Url - roundTripJsonSpec @DnsName - roundTripJsonSpec @Port - roundTripJsonSpec @Network - roundTripJsonSpec @EpochInterval - roundTripJsonSpec @CostModels - roundTripJsonSpec @PoolMetadata - roundTripJsonSpec @StakePoolRelay - roundTripJsonSpec @(PoolParams StandardCrypto) - roundTripJsonSpec @(Addr StandardCrypto) - roundTripJsonSpec @(RewardAccount StandardCrypto) - roundTripJsonSpec @(Credential 'Witness StandardCrypto) - roundTripJsonSpec @(DRep StandardCrypto) - roundTripJsonSpec @(Anchor StandardCrypto) - roundTripJsonSpec @(TxId StandardCrypto) diff --git a/libs/cardano-ledger-core/test/Test/Cardano/Ledger/PlutusSpec.hs b/libs/cardano-ledger-core/test/Test/Cardano/Ledger/PlutusSpec.hs deleted file mode 100644 index 854f1b9b2a3..00000000000 --- a/libs/cardano-ledger-core/test/Test/Cardano/Ledger/PlutusSpec.hs +++ /dev/null @@ -1,58 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE BinaryLiterals #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Test.Cardano.Ledger.PlutusSpec (spec) where - -import Cardano.Ledger.BaseTypes ( - EpochInterval (..), - NonNegativeInterval, - ProtVer (..), - UnitInterval, - ) -import Cardano.Ledger.Binary.Version (Version) -import Cardano.Ledger.Coin (Coin) -import Cardano.Ledger.Plutus -import Data.Map.Strict (Map) -import Data.Word -import Numeric.Natural (Natural) -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Core.Arbitrary () -import Test.Cardano.Ledger.Plutus.ToPlutusData (roundTripPlutusDataSpec) - -spec :: Spec -spec = do - costModelsSpec - describe "roundtrip ToPlutusData" $ do - roundTripPlutusDataSpec @Version - roundTripPlutusDataSpec @Word - roundTripPlutusDataSpec @Word8 - roundTripPlutusDataSpec @Word16 - roundTripPlutusDataSpec @Word32 - roundTripPlutusDataSpec @[Word] - roundTripPlutusDataSpec @[Word8] - roundTripPlutusDataSpec @(Map Word Version) - roundTripPlutusDataSpec @Coin - roundTripPlutusDataSpec @ExUnits - roundTripPlutusDataSpec @Prices - roundTripPlutusDataSpec @Natural - roundTripPlutusDataSpec @UnitInterval - roundTripPlutusDataSpec @EpochInterval - roundTripPlutusDataSpec @NonNegativeInterval - roundTripPlutusDataSpec @ProtVer - roundTripPlutusDataSpec @CostModels - roundTripPlutusDataSpec @Integer - -costModelsSpec :: Spec -costModelsSpec = do - describe "CostModels" $ do - prop "flattenCostModels . mkCostModelsLenient" $ \valid unknown -> do - let cms1 = flattenCostModels valid <> unknown - cms2 = unknown <> flattenCostModels valid - flattenCostModels (mkCostModelsLenient cms1) `shouldBe` cms1 - flattenCostModels (mkCostModelsLenient cms2) `shouldBe` cms2 diff --git a/libs/cardano-ledger-core/test/Test/Cardano/Ledger/UMapSpec.hs b/libs/cardano-ledger-core/test/Test/Cardano/Ledger/UMapSpec.hs deleted file mode 100644 index 12fd85e49f7..00000000000 --- a/libs/cardano-ledger-core/test/Test/Cardano/Ledger/UMapSpec.hs +++ /dev/null @@ -1,576 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE ScopedTypeVariables #-} - -module Test.Cardano.Ledger.UMapSpec where - -import Cardano.Ledger.BaseTypes (StrictMaybe (SJust, SNothing)) -import Cardano.Ledger.Coin (Coin, CompactForm) -import Cardano.Ledger.Compactible (fromCompact) -import Cardano.Ledger.Credential (Credential, Ptr) -import Cardano.Ledger.Crypto (StandardCrypto) -import Cardano.Ledger.DRep (DRep) -import Cardano.Ledger.Keys (KeyHash, KeyRole (StakePool, Staking)) -import Cardano.Ledger.UMap ( - RDPair (RDPair, rdReward), - StakeCredentials (..), - UMElem (UMElem), - UMap (UMap, umElems, umPtrs), - UView (DRepUView, PtrUView, RewDepUView, SPoolUView), - addCompact, - compactRewardMap, - dRepMap, - delete, - delete', - depositMap, - domRestrict, - domRestrictedMap, - domRestrictedStakeCredentials, - domain, - empty, - insert, - insert', - invPtrMap, - member, - nullUView, - ptrMap, - range, - rdDeposit, - rdPairMap, - rewardMap, - sPoolMap, - size, - toStakeCredentials, - umInvariant, - unUView, - unUnify, - unify, - (∪), - (∪+), - (⋪), - (⋫), - (⨃), - ) -import qualified Cardano.Ledger.UMap as UMap (lookup) -import Control.Exception (assert) -import Data.Foldable (Foldable (fold)) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import qualified Data.Set as Set -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Core.Arbitrary ( - genInsertDeleteRoundtripDRep, - genInsertDeleteRoundtripPtr, - genInsertDeleteRoundtripRDPair, - genInsertDeleteRoundtripSPool, - genInvariantNonEmpty, - genRightPreferenceUMap, - genValidTuples, - genValidUMap, - genValidUMapWithCreds, - ) - -data Action - = InsertRDPair (Credential 'Staking StandardCrypto) RDPair - | InsertPtr Ptr (Credential 'Staking StandardCrypto) - | InsertSPool (Credential 'Staking StandardCrypto) (KeyHash 'StakePool StandardCrypto) - | InsertDRep (Credential 'Staking StandardCrypto) (DRep StandardCrypto) - | DeleteRDPair (Credential 'Staking StandardCrypto) - | DeletePtr Ptr - | DeleteSPool (Credential 'Staking StandardCrypto) - | DeleteDRep (Credential 'Staking StandardCrypto) - deriving (Show) - -instance Arbitrary Action where - arbitrary = - oneof - [ InsertRDPair <$> arbitrary <*> arbitrary - , InsertPtr <$> arbitrary <*> arbitrary - , InsertSPool <$> arbitrary <*> arbitrary - , DeleteRDPair <$> arbitrary - , DeletePtr <$> arbitrary - , DeleteSPool <$> arbitrary - , DeleteDRep <$> arbitrary - ] - -genRDPair :: Gen Action -genRDPair = InsertRDPair <$> arbitrary <*> arbitrary - -genPtr :: Gen Action -genPtr = InsertPtr <$> arbitrary <*> arbitrary - -genSPool :: Gen Action -genSPool = InsertSPool <$> arbitrary <*> arbitrary - -genDRep :: Gen Action -genDRep = InsertDRep <$> arbitrary <*> arbitrary - -reify :: Action -> UMap StandardCrypto -> UMap StandardCrypto -reify = \case - InsertRDPair k v -> insert k v . RewDepUView - InsertPtr k v -> insert k v . PtrUView - InsertSPool k v -> insert k v . SPoolUView - InsertDRep k v -> insert k v . DRepUView - DeleteRDPair k -> delete k . RewDepUView - DeletePtr k -> delete k . PtrUView - DeleteSPool k -> delete k . SPoolUView - DeleteDRep k -> delete k . DRepUView - -reifyRDPair :: Action -> UMap StandardCrypto -> UMap StandardCrypto -reifyRDPair = \case - InsertRDPair k v -> insert k v . RewDepUView - DeleteRDPair k -> delete k . RewDepUView - _ -> id - -reifyPtr :: Action -> UMap StandardCrypto -> UMap StandardCrypto -reifyPtr = \case - InsertPtr k v -> insert k v . PtrUView - DeletePtr k -> delete k . PtrUView - _ -> id - -reifySPool :: Action -> UMap StandardCrypto -> UMap StandardCrypto -reifySPool = \case - InsertSPool k v -> insert k v . SPoolUView - DeleteSPool k -> delete k . SPoolUView - _ -> id - -reifyDRep :: Action -> UMap StandardCrypto -> UMap StandardCrypto -reifyDRep = \case - InsertDRep k v -> insert k v . DRepUView - DeleteDRep k -> delete k . DRepUView - _ -> id - -runActions :: [Action] -> UMap StandardCrypto -> UMap StandardCrypto -runActions actions umap = foldr reify umap actions - -runRDPairs :: [Action] -> UMap StandardCrypto -> UMap StandardCrypto -runRDPairs actions umap = foldr reifyRDPair umap actions - -runPtrs :: [Action] -> UMap StandardCrypto -> UMap StandardCrypto -runPtrs actions umap = foldr reifyPtr umap actions - -runSPools :: [Action] -> UMap StandardCrypto -> UMap StandardCrypto -runSPools actions umap = foldr reifySPool umap actions - -runDReps :: [Action] -> UMap StandardCrypto -> UMap StandardCrypto -runDReps actions umap = foldr reifyDRep umap actions - -sizeTest :: - ( Map.Map (Credential 'Staking StandardCrypto) RDPair - , Map.Map Ptr (Credential 'Staking StandardCrypto) - , Map.Map (Credential 'Staking StandardCrypto) (KeyHash 'StakePool StandardCrypto) - , Map.Map (Credential 'Staking StandardCrypto) (DRep StandardCrypto) - ) -> - IO () -sizeTest (rdPairs, ptrs, sPools, dReps) = do - let - umap = unify rdPairs ptrs sPools dReps - rdPairsSize = size (RewDepUView umap) - ptrsSize = size (PtrUView umap) - sPoolSize = size (SPoolUView umap) - dRepSize = size (DRepUView umap) - Map.size rdPairs `shouldBe` rdPairsSize - Map.size ptrs `shouldBe` ptrsSize - Map.size sPools `shouldBe` sPoolSize - Map.size dReps `shouldBe` dRepSize - -unifyRoundTripTo :: - ( Map.Map (Credential 'Staking StandardCrypto) RDPair - , Map.Map Ptr (Credential 'Staking StandardCrypto) - , Map.Map (Credential 'Staking StandardCrypto) (KeyHash 'StakePool StandardCrypto) - , Map.Map (Credential 'Staking StandardCrypto) (DRep StandardCrypto) - ) -> - IO () -unifyRoundTripTo (rdPairs, ptrs, sPools, dReps) = do - let umap = unify rdPairs ptrs sPools dReps - rdPairMap umap `shouldBe` rdPairs - ptrMap umap `shouldBe` ptrs - sPoolMap umap `shouldBe` sPools - dRepMap umap `shouldBe` dReps - -unifyRoundTripFrom :: [Action] -> Property -unifyRoundTripFrom actions = - let - umap = runActions actions empty - rdPairs = rdPairMap umap - ptrs = ptrMap umap - sPools = sPoolMap umap - dReps = dRepMap umap - in - umap === unify rdPairs ptrs sPools dReps - -oldUnionRewAgg :: - UView c (Credential 'Staking c) RDPair -> - Map (Credential 'Staking c) (CompactForm Coin) -> - UMap c -(RewDepUView UMap {umElems, umPtrs}) `oldUnionRewAgg` aggRewMap = UMap newUmElem umPtrs - where - newUmElem = - let - result = Map.mergeWithKey f id (const Map.empty) umElems aggRewMap - f _k (UMElem p1 s deposit drep) delta = Just (UMElem (addC delta p1) s deposit drep) - in - -- We use Map.empty below because aggRewMap is a subset of umElems, we never add anything here. - assert (Map.valid result) result - addC :: CompactForm Coin -> StrictMaybe RDPair -> StrictMaybe RDPair - addC newR = \case - SNothing -> SNothing - SJust (RDPair r d) -> SJust $ RDPair (addCompact r newR) d - -spec :: Spec -spec = do - describe "UMap" $ do - describe "Invariant" $ do - prop "Empty" (\(cred :: Credential 'Staking StandardCrypto) ptr -> umInvariant cred ptr empty) - prop "Non-empty" $ - forAll - genInvariantNonEmpty - (\(cred, ptr, umap) -> umInvariant cred ptr umap) - xprop "Non-empty with insert and delete actions" $ - forAll - ((,) <$> genInvariantNonEmpty <*> arbitrary) - (\((cred, ptr, umap), actions) -> umInvariant cred ptr $ runActions actions umap) - describe "Unify roundtrip" $ do - prop "To" $ forAll genValidTuples unifyRoundTripTo - prop "From" unifyRoundTripFrom - describe "Insert-delete roundtrip" $ do - prop "RDPair" $ - forAll - genInsertDeleteRoundtripRDPair - (\(umap, k, v) -> umap === unUView (delete' k (insert' k v (RewDepUView umap)))) - prop "PtrUView" $ - forAll - genInsertDeleteRoundtripPtr - (\(umap, k, v) -> umap === unUView (delete' k (insert' k v (PtrUView umap)))) - prop "SPoolUView" $ - forAll - genInsertDeleteRoundtripSPool - (\(umap, k, v) -> umap === unUView (delete' k (insert' k v (SPoolUView umap)))) - prop "DRepUView" $ - forAll - genInsertDeleteRoundtripDRep - (\(umap, k, v) -> umap === unUView (delete' k (insert' k v (DRepUView umap)))) - prop "Size" $ forAll genValidTuples sizeTest - describe "Membership" $ do - prop - "RewDepUView" - ( \(umap :: UMap StandardCrypto, cred) -> - member cred (RewDepUView umap) === Map.member cred (rdPairMap umap) - ) - prop - "PtrUViews" - ( \(umap :: UMap StandardCrypto, ptr) -> - member ptr (PtrUView umap) === Map.member ptr (ptrMap umap) - ) - prop - "SPoolUView" - ( \(umap :: UMap StandardCrypto, cred) -> - member cred (SPoolUView umap) === Map.member cred (sPoolMap umap) - ) - prop - "DRepUView" - ( \(umap :: UMap StandardCrypto, cred) -> - member cred (DRepUView umap) === Map.member cred (dRepMap umap) - ) - describe "Bisimulation" $ do - prop - "RewDepUView" - ( \actions -> - rdPairMap (runRDPairs actions empty) - === rdPairMap (runActions actions empty) - ) - prop - "PtrUView" - ( \actions -> - ptrMap (runPtrs actions empty) - === ptrMap (runActions actions empty) - ) - prop - "SPoolUView" - ( \actions -> - sPoolMap (runSPools actions empty) - === sPoolMap (runActions actions empty) - ) - prop - "DRepUView" - ( \actions -> - dRepMap (runDReps actions empty) - === dRepMap (runActions actions empty) - ) - describe "Null" $ do - prop - "RewDepUView" - ( \actions -> - Map.null (rdPairMap (runRDPairs actions empty)) - === nullUView (RewDepUView $ runActions actions empty) - ) - prop - "PtrUView" - ( \actions -> - Map.null (ptrMap (runPtrs actions empty)) - === nullUView (PtrUView $ runActions actions empty) - ) - prop - "SPoolUView" - ( \actions -> - Map.null (sPoolMap (runSPools actions empty)) - === nullUView (SPoolUView $ runActions actions empty) - ) - prop - "DRepUView" - ( \actions -> - Map.null (dRepMap (runDReps actions empty)) - === nullUView (DRepUView $ runActions actions empty) - ) - describe "Lookup" $ do - prop - "RewDepUView" - ( \actions cred -> - Map.lookup cred (rdPairMap (runRDPairs actions empty)) - === UMap.lookup cred (RewDepUView $ runActions actions empty) - ) - prop - "PtruView" - ( \actions ptr -> - Map.lookup ptr (ptrMap (runPtrs actions empty)) - === UMap.lookup ptr (PtrUView $ runActions actions empty) - ) - prop - "SPoolUView" - ( \actions cred -> - Map.lookup cred (sPoolMap (runSPools actions empty)) - === UMap.lookup cred (SPoolUView $ runActions actions empty) - ) - prop - "DRepUView" - ( \actions cred -> - Map.lookup cred (dRepMap (runDReps actions empty)) - === UMap.lookup cred (DRepUView $ runActions actions empty) - ) - describe "Domain" $ do - prop - "RewDepUView" - ( \actions -> - Map.keysSet (rdPairMap (runRDPairs actions empty)) - === domain (RewDepUView $ runActions actions empty) - ) - prop - "PtrUView" - ( \actions -> - Map.keysSet (ptrMap (runPtrs actions empty)) - === domain (PtrUView $ runActions actions empty) - ) - prop - "SPoolUView" - ( \actions -> - Map.keysSet (sPoolMap (runSPools actions empty)) - === domain (SPoolUView $ runActions actions empty) - ) - prop - "DRepUView" - ( \actions -> - Map.keysSet (dRepMap (runDReps actions empty)) - === domain (DRepUView $ runActions actions empty) - ) - describe "Range" $ do - prop - "RewDepUView" - ( \actions -> - Set.fromList (Map.elems (rdPairMap (runRDPairs actions empty))) - === range (RewDepUView $ runActions actions empty) - ) - prop - "PtrUView" - ( \actions -> - Set.fromList (Map.elems (ptrMap (runPtrs actions empty))) - === range (PtrUView $ runActions actions empty) - ) - prop - "SPoolUView" - ( \actions -> - Set.fromList (Map.elems (sPoolMap (runSPools actions empty))) - === range (SPoolUView $ runActions actions empty) - ) - prop - "DRepUView" - ( \actions -> - Set.fromList (Map.elems (dRepMap (runDReps actions empty))) - === range (DRepUView $ runActions actions empty) - ) - describe "Union (left preference)" $ do - prop - "RewDepUView" - ( \actions cred rdPair -> - Map.unionWith const (rdPairMap (runRDPairs actions empty)) (Map.singleton cred rdPair) - === unUnify (RewDepUView (RewDepUView (runActions actions empty) ∪ (cred, rdPair))) - ) - prop - "PtrUView" - ( \actions cred ptr -> - Map.unionWith const (ptrMap (runPtrs actions empty)) (Map.singleton cred ptr) - === unUnify (PtrUView (PtrUView (runActions actions empty) ∪ (cred, ptr))) - ) - prop - "SPoolUView" - ( \actions cred pool -> - Map.unionWith const (sPoolMap (runSPools actions empty)) (Map.singleton cred pool) - === unUnify (SPoolUView (SPoolUView (runActions actions empty) ∪ (cred, pool))) - ) - prop - "DRepUView" - ( \actions cred pool -> - Map.unionWith const (dRepMap (runDReps actions empty)) (Map.singleton cred pool) - === unUnify (DRepUView (DRepUView (runActions actions empty) ∪ (cred, pool))) - ) - describe "Union (right preference)" $ do - prop - "RewDepUView (domain of map on the right has to be subset of RewDepUView View)" - $ forAll - genRightPreferenceUMap - ( \(umap, m) -> - Map.unionWith - (\(RDPair _ leftDep) (RDPair rightRD _) -> RDPair rightRD leftDep) - (rdPairMap umap) - m - === rdPairMap (RewDepUView umap ⨃ m) - ) - prop - "PtrUView" - ( \actions m -> - Map.unionWith (\_ x -> x) (ptrMap (runPtrs actions empty)) m - === unUnify (PtrUView (PtrUView (runActions actions empty) ⨃ m)) - ) - prop - "SPoolUView" - ( \actions m -> - Map.unionWith (\_ x -> x) (sPoolMap (runSPools actions empty)) m - === unUnify (SPoolUView (SPoolUView (runActions actions empty) ⨃ m)) - ) - prop - "DRepUView" - ( \actions m -> - Map.unionWith (\_ x -> x) (dRepMap (runDReps actions empty)) m - === unUnify (DRepUView (DRepUView (runActions actions empty) ⨃ m)) - ) - prop - "Monoidal Rewards (domain of map on the right has to be subset of RewDepUView View)" - $ forAll - genRightPreferenceUMap - ( \(umap, m) -> - Map.unionWith (<>) (compactRewardMap umap) (rdReward <$> m) - === compactRewardMap (RewDepUView umap ∪+ (rdReward <$> m)) - ) - describe "Domain exclusion" $ do - prop - "RewDepUView" - ( \actions dom -> - Map.withoutKeys (rdPairMap (runRDPairs actions empty)) dom - === unUnify (RewDepUView (dom ⋪ RewDepUView (runActions actions empty))) - ) - prop - "PtrUView" - ( \actions dom -> - Map.withoutKeys (ptrMap (runPtrs actions empty)) dom - === unUnify (PtrUView (dom ⋪ PtrUView (runActions actions empty))) - ) - prop - "SPoolUView" - ( \actions dom -> - Map.withoutKeys (sPoolMap (runSPools actions empty)) dom - === unUnify (SPoolUView (dom ⋪ SPoolUView (runActions actions empty))) - ) - prop - "DRepUView" - ( \actions dom -> - Map.withoutKeys (dRepMap (runDReps actions empty)) dom - === unUnify (DRepUView (dom ⋪ DRepUView (runActions actions empty))) - ) - describe "Range exclusion" $ do - prop - "RewDepUView" - ( \actions rng -> - Map.filter (not . flip Set.member rng) (rdPairMap (runRDPairs actions empty)) - === unUnify (RewDepUView (RewDepUView (runActions actions empty) ⋫ rng)) - ) - prop - "PtrUView" - ( \actions rng -> - Map.filter (not . flip Set.member rng) (ptrMap (runPtrs actions empty)) - === unUnify (PtrUView (PtrUView (runActions actions empty) ⋫ rng)) - ) - prop - "SPoolUView" - ( \actions rng -> - Map.filter (not . flip Set.member rng) (sPoolMap (runSPools actions empty)) - === unUnify (SPoolUView (SPoolUView (runActions actions empty) ⋫ rng)) - ) - prop - "DRepUView" - ( \actions rng -> - Map.filter (not . flip Set.member rng) (dRepMap (runDReps actions empty)) - === unUnify (DRepUView (DRepUView (runActions actions empty) ⋫ rng)) - ) - describe "Domain restriction" $ do - prop - "RewDepUView" - ( \actions (m :: Map.Map (Credential 'Staking StandardCrypto) RDPair) -> - Map.intersection m (rdPairMap (runRDPairs actions empty)) - === domRestrict (RewDepUView (runActions actions empty)) m - ) - prop - "PtrUView" - ( \actions (m :: Map.Map Ptr (Credential 'Staking StandardCrypto)) -> - Map.intersection m (ptrMap (runPtrs actions empty)) - === domRestrict (PtrUView (runActions actions empty)) m - ) - prop - "SPoolUView" - ( \actions (m :: Map.Map (Credential 'Staking StandardCrypto) (KeyHash 'StakePool StandardCrypto)) -> - Map.intersection m (sPoolMap (runSPools actions empty)) - === domRestrict (SPoolUView (runActions actions empty)) m - ) - prop - "DRepUView" - ( \actions (m :: Map.Map (Credential 'Staking StandardCrypto) (DRep StandardCrypto)) -> - Map.intersection m (dRepMap (runDReps actions empty)) - === domRestrict (DRepUView (runActions actions empty)) m - ) - describe "Old and new implementation is equivalent" $ do - prop - "unionRewAgg or ∪+ === oldUnionRewAgg" - $ forAll - genRightPreferenceUMap - ( \(umap, m) -> - RewDepUView umap ∪+ (rdReward <$> m) === RewDepUView umap `oldUnionRewAgg` (rdReward <$> m) - ) - describe "StakeCredentials" $ do - prop "toStakeCredentials as full domRestrictedStakeCredentials" $ - forAll genValidUMap $ \umap -> - toStakeCredentials umap - `shouldBe` domRestrictedStakeCredentials (Map.keysSet (umElems umap)) umap - - prop "domRestrictedStakeCredentials" $ forAll genValidUMapWithCreds $ \(umap, creds) -> - domRestrictedStakeCredentials creds umap - `shouldBe` StakeCredentials - { scRewards = rewardMap umap `Map.restrictKeys` creds - , scDeposits = depositMap umap `Map.restrictKeys` creds - , scSPools = sPoolMap umap `Map.restrictKeys` creds - , scDReps = dRepMap umap `Map.restrictKeys` creds - , scPtrs = Map.filter (`Set.member` creds) $ ptrMap umap - , scPtrsInverse = invPtrMap umap `Map.restrictKeys` creds - } - prop "domRestrictedStakeCredentials with domRestrictedMap" $ - forAll genValidUMapWithCreds $ \(umap, creds) -> - let rdmap = domRestrictedMap creds (RewDepUView umap) - ptrs = invPtrMap umap `Map.restrictKeys` creds - in domRestrictedStakeCredentials creds umap - `shouldBe` StakeCredentials - { scRewards = Map.map (fromCompact . rdReward) rdmap - , scDeposits = Map.map (fromCompact . rdDeposit) rdmap - , scSPools = domRestrictedMap creds (SPoolUView umap) - , scDReps = domRestrictedMap creds (DRepUView umap) - , scPtrs = domRestrictedMap (fold ptrs) (PtrUView umap) - , scPtrsInverse = ptrs - } diff --git a/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Common.hs b/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Common.hs deleted file mode 100644 index 51a615bce82..00000000000 --- a/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Common.hs +++ /dev/null @@ -1,143 +0,0 @@ -module Test.Cardano.Ledger.Common ( - module X, - ledgerTestMain, - ledgerTestMainWith, - ledgerHspecConfig, - NFData, - - -- * Expr - ToExpr (..), - showExpr, - diffExpr, - diffExprCompact, - - -- * Expectations - assertBool, - assertFailure, - - -- ** Non-standard expectations - shouldBeExpr, - shouldBeRight, - shouldBeLeft, - shouldBeRightExpr, - shouldBeLeftExpr, - expectRight, - expectRightDeep, - expectRightDeep_, - expectRightExpr, - expectRightDeepExpr, - expectLeft, - expectLeftExpr, - expectLeftDeep, - expectLeftDeep_, - expectLeftDeepExpr, -) -where - -import Control.DeepSeq (NFData) -import Control.Monad as X (forM_, replicateM, replicateM_, unless, void, when, (>=>)) -import System.IO ( - BufferMode (LineBuffering), - hSetBuffering, - hSetEncoding, - stdout, - utf8, - ) -import Test.Cardano.Ledger.Binary.TreeDiff ( - ToExpr (..), - diffExpr, - diffExprCompact, - expectExprEqualWithMessage, - showExpr, - ) -import Test.HUnit.Base (assertBool, assertFailure) -import Test.Hspec as X -import Test.Hspec.QuickCheck as X -import Test.Hspec.Runner -import Test.QuickCheck as X -import UnliftIO.Exception (evaluateDeep) - -infix 1 `shouldBeExpr` - , `shouldBeRight` - , `shouldBeRightExpr` - , `shouldBeLeft` - , `shouldBeLeftExpr` - -ledgerHspecConfig :: Config -ledgerHspecConfig = - defaultConfig - { configTimes = True - , configColorMode = ColorAlways - } - -ledgerTestMainWith :: Config -> Spec -> IO () -ledgerTestMainWith conf spec = do - hSetBuffering stdout LineBuffering - hSetEncoding stdout utf8 - hspecWith conf spec - -ledgerTestMain :: Spec -> IO () -ledgerTestMain = ledgerTestMainWith ledgerHspecConfig - -shouldBeExpr :: (HasCallStack, ToExpr a, Eq a) => a -> a -> IO () -shouldBeExpr = expectExprEqualWithMessage "" - --- | Return value on the `Right` and fail otherwise -expectRight :: (HasCallStack, Show a) => Either a b -> IO b -expectRight (Right r) = pure $! r -expectRight (Left l) = assertFailure $ "Expected Right, got Left:\n" <> show l - --- | Same as `expectRight`, but also evaluate the returned value to NF -expectRightDeep :: (HasCallStack, Show a, NFData b) => Either a b -> IO b -expectRightDeep = expectRight >=> evaluateDeep - --- | Same as `expectRightDeep`, but discards the result -expectRightDeep_ :: (HasCallStack, Show a, NFData b) => Either a b -> IO () -expectRightDeep_ = void . expectRightDeep - --- | Same as `expectRight`, but use `ToExpr` instead of `Show` -expectRightExpr :: (HasCallStack, ToExpr a) => Either a b -> IO b -expectRightExpr (Right r) = pure $! r -expectRightExpr (Left l) = assertFailure $ "Expected Right, got Left:\n" <> showExpr l - --- | Same as `expectRightDeep`, but use `ToExpr` instead of `Show` -expectRightDeepExpr :: (HasCallStack, ToExpr a, NFData b) => Either a b -> IO b -expectRightDeepExpr = expectRightExpr >=> evaluateDeep - --- | Same as `shouldBe`, except it checks that the value is `Right` -shouldBeRight :: (HasCallStack, Show a, Show b, Eq b) => Either a b -> b -> Expectation -shouldBeRight e x = expectRight e >>= (`shouldBe` x) - --- | Same as `shouldBeExpr`, except it checks that the value is `Right` -shouldBeRightExpr :: (HasCallStack, ToExpr a, Eq b, ToExpr b) => Either a b -> b -> Expectation -shouldBeRightExpr e x = expectRightExpr e >>= (`shouldBeExpr` x) - --- | Return value on the `Left` an fail otherwise -expectLeft :: (HasCallStack, Show b) => Either a b -> IO a -expectLeft (Left l) = pure $! l -expectLeft (Right r) = assertFailure $ "Expected Left, got Right:\n" <> show r - --- | Same as `expectLeft`, but also evaluate the returned value to NF -expectLeftDeep :: (HasCallStack, NFData a, Show b) => Either a b -> IO a -expectLeftDeep = expectLeft >=> evaluateDeep - --- | Same as `expectLeftDeep`, but discards the result -expectLeftDeep_ :: (HasCallStack, NFData a, Show b) => Either a b -> IO () -expectLeftDeep_ = void . expectLeftDeep - --- | Same as `expectLeft`, but use `ToExpr` instead of `Show` -expectLeftExpr :: (HasCallStack, ToExpr b) => Either a b -> IO a -expectLeftExpr (Left l) = pure $! l -expectLeftExpr (Right r) = assertFailure $ "Expected Left, got Right:\n" <> showExpr r - --- | Same as `expectLeftDeep`, but use `ToExpr` instead of `Show` -expectLeftDeepExpr :: (HasCallStack, ToExpr b, NFData a) => Either a b -> IO a -expectLeftDeepExpr = expectLeftExpr >=> evaluateDeep - --- | Same as `shouldBe`, except it checks that the value is `Left` -shouldBeLeft :: (HasCallStack, Show a, Eq a, Show b) => Either a b -> a -> Expectation -shouldBeLeft e x = expectLeft e >>= (`shouldBe` x) - --- | Same as `shouldBeExpr`, except it checks that the value is `Left` -shouldBeLeftExpr :: (HasCallStack, ToExpr a, ToExpr b, Eq a) => Either a b -> a -> Expectation -shouldBeLeftExpr e x = expectLeftExpr e >>= (`shouldBeExpr` x) diff --git a/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Core/Address.hs b/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Core/Address.hs deleted file mode 100644 index 9a7962bfa2e..00000000000 --- a/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Core/Address.hs +++ /dev/null @@ -1,369 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DeriveFunctor #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - --- | This module contains previous implementations for Addr and CoompactAddr --- deserialization. This is used as an alternative implementation for testing and as a --- perforance reference for benchmarking. -module Test.Cardano.Ledger.Core.Address ( - deserialiseAddrOld, - deserialiseRewardAccountOld, - decompactAddrOld, - decompactAddrOldLazy, - - -- * Deprecations - deserialiseRewardAcntOld, -) -where - -import qualified Cardano.Crypto.Hash.Class as Hash -import Cardano.Ledger.Address ( - Addr (..), - BootstrapAddress (BootstrapAddress), - CompactAddr, - RewardAccount (..), - Word7 (..), - toWord7, - unCompactAddr, - ) -import Cardano.Ledger.BaseTypes (CertIx (..), SlotNo (..), TxIx (..), word8ToNetwork) -import Cardano.Ledger.Binary (byronProtVer, decodeFull, decodeFull') -import Cardano.Ledger.Credential ( - Credential (..), - PaymentCredential, - Ptr (..), - StakeReference (..), - ) -import Cardano.Ledger.Crypto (ADDRHASH, Crypto) -import Cardano.Ledger.Hashes (ScriptHash (ScriptHash)) -import Cardano.Ledger.Keys (KeyHash (..)) -import Control.Monad (ap) -import qualified Control.Monad.Fail -import Data.Binary (Get) -import qualified Data.Binary.Get as B -import Data.Bits -import qualified Data.ByteString as BS -import qualified Data.ByteString.Lazy as BSL -import Data.ByteString.Short as SBS (ShortByteString, fromShort, index, length) -import Data.ByteString.Short.Internal as SBS (ShortByteString (SBS)) -import Data.Foldable (foldl') -import Data.Maybe (fromMaybe) -import qualified Data.Primitive.ByteArray as BA -import Data.String (fromString) -import Data.Text (Text, unpack) -import Data.Word (Word64, Word8) - ------------------------------------------------------------------------------------------- --- Old Address Deserializer -------------------------------------------------------------- ------------------------------------------------------------------------------------------- - --- | Deserialise an address from the external format. This will fail if the --- input data is not in the right format (or if there is trailing data). -deserialiseAddrOld :: forall c m. (Crypto c, MonadFail m) => BS.ByteString -> m (Addr c) -deserialiseAddrOld bs = case B.runGetOrFail getAddr (BSL.fromStrict bs) of - Left (_remaining, _offset, message) -> - fail $ "Old Addr decoder failed: " <> fromString message - Right (remaining, _offset, result) -> - if BSL.null remaining - then pure result - else fail $ "Old Addr decoder did not consume all input" - --- | Deserialise an reward account from the external format. This will fail if the --- input data is not in the right format (or if there is trailing data). -deserialiseRewardAccountOld :: - forall c m. (Crypto c, MonadFail m) => BS.ByteString -> m (RewardAccount c) -deserialiseRewardAccountOld bs = case B.runGetOrFail getRewardAccount (BSL.fromStrict bs) of - Left (_remaining, _offset, message) -> - fail $ "Old RewardAcnt decoder failed: " <> fromString message - Right (remaining, _offset, result) -> - if BSL.null remaining - then pure result - else fail $ "Old RewardAcnt decoder did not consume all input" - -deserialiseRewardAcntOld :: - forall c m. (Crypto c, MonadFail m) => BS.ByteString -> m (RewardAccount c) -deserialiseRewardAcntOld = deserialiseRewardAccountOld -{-# DEPRECATED deserialiseRewardAcntOld "Use `deserialiseRewardAccountOld` instead" #-} - -byron :: Int -byron = 7 - -notBaseAddr :: Int -notBaseAddr = 6 - -isEnterpriseAddr :: Int -isEnterpriseAddr = 5 - -stakeCredIsScript :: Int -stakeCredIsScript = 5 - -payCredIsScript :: Int -payCredIsScript = 4 - -rewardCredIsScript :: Int -rewardCredIsScript = 4 - -getAddr :: Crypto c => Get (Addr c) -getAddr = do - header <- B.lookAhead B.getWord8 - if testBit header byron - then getByron - else do - _ <- B.getWord8 -- read past the header byte - let addrNetId = header .&. 0x0F -- 0b00001111 is the mask for the network id - case word8ToNetwork addrNetId of - Just n -> Addr n <$> getPayCred header <*> getStakeReference header - Nothing -> - fail $ - concat - ["Address with unknown network Id. (", show addrNetId, ")"] - -getRewardAccount :: Crypto c => Get (RewardAccount c) -getRewardAccount = do - header <- B.getWord8 - let rewardAccountPrefix = 0xE0 -- 0b11100000 are always set for reward accounts - isRewardAccount = (header .&. rewardAccountPrefix) == rewardAccountPrefix - netId = header .&. 0x0F -- 0b00001111 is the mask for the network id - case (word8ToNetwork netId, isRewardAccount) of - (Nothing, _) -> - fail $ concat ["Reward account with unknown network Id. (", show netId, ")"] - (_, False) -> - fail $ concat ["Expected reward account. Got account with header: ", show header] - (Just network, True) -> do - cred <- case testBit header rewardCredIsScript of - True -> getScriptHash - False -> getKeyHash - pure $ RewardAccount network cred - -getHash :: forall h a. Hash.HashAlgorithm h => Get (Hash.Hash h a) -getHash = do - bytes <- B.getByteString . fromIntegral $ Hash.sizeHash ([] @h) - case Hash.hashFromBytes bytes of - Nothing -> fail "getHash: implausible hash length mismatch" - Just !h -> pure h - -getPayCred :: Crypto c => Word8 -> Get (PaymentCredential c) -getPayCred header = case testBit header payCredIsScript of - True -> getScriptHash - False -> getKeyHash - -getScriptHash :: Crypto c => Get (Credential kr c) -getScriptHash = ScriptHashObj . ScriptHash <$> getHash - -getKeyHash :: Crypto c => Get (Credential kr c) -getKeyHash = KeyHashObj . KeyHash <$> getHash - -getStakeReference :: Crypto c => Word8 -> Get (StakeReference c) -getStakeReference header = case testBit header notBaseAddr of - True -> case testBit header isEnterpriseAddr of - True -> pure StakeRefNull - False -> StakeRefPtr <$> getPtr - False -> case testBit header stakeCredIsScript of - True -> StakeRefBase <$> getScriptHash - False -> StakeRefBase <$> getKeyHash - -getByron :: Get (Addr c) -getByron = - decodeFull byronProtVer <$> B.getRemainingLazyByteString >>= \case - Left e -> fail (show e) - Right r -> pure $ AddrBootstrap $ BootstrapAddress r - -getPtr :: Get Ptr -getPtr = - Ptr - <$> (SlotNo <$> getVariableLengthWord64) - <*> (TxIx . fromIntegral <$> getVariableLengthWord64) - <*> (CertIx . fromIntegral <$> getVariableLengthWord64) - -getWord7s :: Get [Word7] -getWord7s = do - next <- B.getWord8 - -- is the high bit set? - if testBit next 7 - then -- if so, grab more words - (:) (toWord7 next) <$> getWord7s - else -- otherwise, this is the last one - pure [Word7 next] - --- invariant: length [Word7] < 8 -word7sToWord64 :: [Word7] -> Word64 -word7sToWord64 = foldl' f 0 - where - f n (Word7 r) = shiftL n 7 .|. fromIntegral r - -getVariableLengthWord64 :: Get Word64 -getVariableLengthWord64 = word7sToWord64 <$> getWord7s - ------------------------------------------------------------------------------------------- --- Old Compact Address Deserializer ------------------------------------------------------ ------------------------------------------------------------------------------------------- - -newtype GetShort a = GetShort {runGetShort :: Int -> ShortByteString -> Maybe (Int, a)} - deriving (Functor) - -instance Applicative GetShort where - pure a = GetShort $ \i _sbs -> Just (i, a) - (<*>) = ap - -instance Monad GetShort where - (GetShort g) >>= f = GetShort $ \i sbs -> - case g i sbs of - Nothing -> Nothing - Just (i', x) -> runGetShort (f x) i' sbs - -instance Control.Monad.Fail.MonadFail GetShort where - fail _ = GetShort $ \_ _ -> Nothing - -getShortBootstrapAddress :: GetShort (BootstrapAddress c) -getShortBootstrapAddress = do - bs <- getShortRemainingAsByteString - case decodeFull' byronProtVer bs of - Left e -> fail $ show e - Right r -> pure $ BootstrapAddress r - -getShortWord :: GetShort Word8 -getShortWord = GetShort $ \i sbs -> - if i < SBS.length sbs - then Just (i + 1, SBS.index sbs i) - else Nothing - -peekWord8 :: GetShort Word8 -peekWord8 = GetShort peek - where - peek i sbs = if i < SBS.length sbs then Just (i, SBS.index sbs i) else Nothing - -getShortRemainingAsByteString :: GetShort BS.ByteString -getShortRemainingAsByteString = GetShort $ \i sbs -> - let l = SBS.length sbs - in if i < l - then Just (l, SBS.fromShort $ substring sbs i l) - else Nothing - -getShortHash :: forall a h. Hash.HashAlgorithm h => GetShort (Hash.Hash h a) -getShortHash = GetShort $ \i sbs -> - let hashLen = Hash.sizeHash ([] @h) - offsetStop = i + fromIntegral hashLen - in if offsetStop <= SBS.length sbs - then do - hash <- Hash.hashFromBytesShort $ substring sbs i offsetStop - Just (offsetStop, hash) - else Nothing - --- start is the first index copied --- stop is the index after the last index copied -substring :: ShortByteString -> Int -> Int -> ShortByteString -substring (SBS ba) start stop = - case BA.cloneByteArray (BA.ByteArray ba) start (stop - start) of - BA.ByteArray ba' -> SBS ba' - -getShortWord7s :: GetShort [Word7] -getShortWord7s = do - next <- getShortWord - -- is the high bit set? - if testBit next 7 - then -- if so, grab more words - (:) (toWord7 next) <$> getShortWord7s - else -- otherwise, this is the last one - pure [Word7 next] - -getShortVariableLengthWord64 :: GetShort Word64 -getShortVariableLengthWord64 = word7sToWord64 <$> getShortWord7s - -getShortPtr :: GetShort Ptr -getShortPtr = - Ptr - <$> (SlotNo <$> getShortVariableLengthWord64) - <*> (TxIx . fromIntegral <$> getShortVariableLengthWord64) - <*> (CertIx . fromIntegral <$> getShortVariableLengthWord64) - -getShortKeyHash :: Crypto c => GetShort (Credential kr c) -getShortKeyHash = KeyHashObj . KeyHash <$> getShortHash - -getShortScriptHash :: Crypto c => GetShort (Credential kr c) -getShortScriptHash = ScriptHashObj . ScriptHash <$> getShortHash - -getShortStakeReference :: Crypto c => Word8 -> GetShort (StakeReference c) -getShortStakeReference header = case testBit header notBaseAddr of - True -> case testBit header isEnterpriseAddr of - True -> pure StakeRefNull - False -> StakeRefPtr <$> getShortPtr - False -> case testBit header stakeCredIsScript of - True -> StakeRefBase <$> getShortScriptHash - False -> StakeRefBase <$> getShortKeyHash - -getShortPayCred :: Crypto c => Word8 -> GetShort (PaymentCredential c) -getShortPayCred header = case testBit header payCredIsScript of - True -> getShortScriptHash - False -> getShortKeyHash - -getShortShortAddr :: Crypto c => GetShort (Addr c) -getShortShortAddr = do - header <- peekWord8 - if testBit header byron - then AddrBootstrap <$> getShortBootstrapAddress - else do - _ <- getShortWord -- read past the header byte - let addrNetId = header .&. 0x0F -- 0b00001111 is the mask for the network id - case word8ToNetwork addrNetId of - Just n -> do - c <- getShortPayCred header - h <- getShortStakeReference header - pure (Addr n c h) - Nothing -> - fail $ - concat - ["Address with unknown network Id. (", show addrNetId, ")"] - --- | This is an old decompacter that didn't guard against random junk at the end. -decompactAddrOld :: Crypto c => CompactAddr c -> Addr c -decompactAddrOld cAddr = - snd . unwrap "CompactAddr" $ runGetShort getShortShortAddr 0 (unCompactAddr cAddr) - where - -- The reason failure is impossible here is that the only way to call this code - -- is using a CompactAddr, which can only be constructed using compactAddr. - -- compactAddr serializes an Addr, so this is guaranteed to work. - unwrap :: forall a. Text -> Maybe a -> a - unwrap name = fromMaybe (error $ unpack $ "Impossible failure when decoding " <> name) - --- | This lazy deserializer is kept around purely for benchmarking, so we can --- verify that new deserializer `decodeAddrStateT` is doing the work lazily. -decompactAddrOldLazy :: forall c. Crypto c => CompactAddr c -> Addr c -decompactAddrOldLazy cAddr = - if testBit header byron - then AddrBootstrap $ run "byron address" 0 bytes getShortBootstrapAddress - else Addr addrNetId paycred stakecred - where - bytes = unCompactAddr cAddr - run :: forall a. Text -> Int -> ShortByteString -> GetShort a -> a - run name i sbs g = snd . unwrap name $ runGetShort g i sbs - -- The reason failure is impossible here is that the only way to call this code - -- is using a CompactAddr, which can only be constructed using compactAddr. - -- compactAddr serializes an Addr, so this is guaranteed to work. - unwrap :: forall a. Text -> Maybe a -> a - unwrap name = fromMaybe (error $ unpack $ "Impossible failure when decoding " <> name) - header = run "address header" 0 bytes getShortWord - addrNetId = - unwrap "address network id" $ - word8ToNetwork $ - header .&. 0x0F -- 0b00001111 is the mask for the network id - -- The address format is - -- header | pay cred | stake cred - -- where the header is 1 byte - -- the pay cred is (sizeHash (ADDRHASH crypto)) bytes - -- and the stake cred can vary - paycred = run "payment credential" 1 bytes (getShortPayCred header) - stakecred = run "staking credential" 1 bytes $ do - skipHash ([] @(ADDRHASH c)) - getShortStakeReference header - skipHash :: forall proxy h. Hash.HashAlgorithm h => proxy h -> GetShort () - skipHash p = skip . fromIntegral $ Hash.sizeHash p - skip :: Int -> GetShort () - skip n = GetShort $ \i sbs -> - let offsetStop = i + n - in if offsetStop <= SBS.length sbs - then Just (offsetStop, ()) - else Nothing -{-# INLINE decompactAddrOldLazy #-} diff --git a/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Core/Arbitrary.hs b/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Core/Arbitrary.hs deleted file mode 100644 index 461e7b31a47..00000000000 --- a/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Core/Arbitrary.hs +++ /dev/null @@ -1,893 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Core.Arbitrary ( - module Test.Cardano.Ledger.Binary.Arbitrary, - genAddrBadPtr, - genCompactAddrBadPtr, - genBadPtr, - genValidUMap, - genValidUMapNonEmpty, - genValidUMapWithCreds, - genValidTuples, - genValidTuplesNonEmpty, - genInvariantNonEmpty, - genRightPreferenceUMap, - genInsertDeleteRoundtripRDPair, - genInsertDeleteRoundtripPtr, - genInsertDeleteRoundtripSPool, - genInsertDeleteRoundtripDRep, - - -- * Plutus - FlexibleCostModels (..), - genValidAndUnknownCostModels, - genValidCostModel, - - -- * Utils - - -- | Will need to find a better home in the future - uniformSubset, -) -where - -import qualified Cardano.Chain.Common as Byron -import Cardano.Crypto.DSIGN.Class (DSIGNAlgorithm) -import Cardano.Crypto.Hash.Class -import Cardano.Ledger.Address -import Cardano.Ledger.AuxiliaryData (AuxiliaryDataHash (..)) -import Cardano.Ledger.BaseTypes ( - ActiveSlotCoeff, - BlocksMade (..), - CertIx (..), - DnsName, - EpochInterval (..), - Network (..), - NonNegativeInterval, - Nonce (..), - Port (..), - PositiveInterval, - PositiveUnitInterval, - ProtVer (..), - SlotNo (..), - StrictMaybe, - TxIx (..), - UnitInterval, - Url, - mkActiveSlotCoeff, - mkCertIxPartial, - mkNonceFromNumber, - mkTxIxPartial, - promoteRatio, - textToDns, - textToUrl, - ) -import Cardano.Ledger.Binary (DecCBOR, EncCBOR, Sized, mkSized) -import Cardano.Ledger.CertState ( - Anchor (..), - CertState (..), - CommitteeAuthorization (..), - CommitteeState (..), - DState (..), - FutureGenDeleg (..), - InstantaneousRewards (..), - PState (..), - VState (..), - ) -import Cardano.Ledger.Coin (Coin (..), CompactForm (..), DeltaCoin (..)) -import Cardano.Ledger.Core -import Cardano.Ledger.Credential (Credential (..), Ptr (..), StakeReference (..)) -import Cardano.Ledger.Crypto (Crypto (DSIGN), StandardCrypto) -import Cardano.Ledger.DRep (DRep (..), DRepState (..)) -import Cardano.Ledger.EpochBoundary -import Cardano.Ledger.Keys ( - GenDelegPair (..), - GenDelegs (..), - KeyHash (..), - KeyRole (StakePool, Staking), - VKey (..), - ) -import Cardano.Ledger.Keys.Bootstrap (BootstrapWitness (..), ChainCode (..)) -import Cardano.Ledger.Keys.WitVKey (WitVKey (..)) -import Cardano.Ledger.Plutus.CostModels ( - CostModel, - CostModelApplyError (..), - CostModelError (..), - CostModels, - costModelParamsCount, - mkCostModel, - mkCostModels, - mkCostModelsLenient, - updateCostModels, - ) -import Cardano.Ledger.Plutus.ExUnits (ExUnits (..), Prices (..)) -import Cardano.Ledger.Plutus.Language ( - Language (..), - nonNativeLanguages, - ) -import Cardano.Ledger.PoolDistr (IndividualPoolStake (..), PoolDistr (..)) -import Cardano.Ledger.PoolParams ( - PoolMetadata (..), - PoolParams (..), - SizeOfPoolOwners (..), - SizeOfPoolRelays (..), - StakePoolRelay (..), - ) -import Cardano.Ledger.SafeHash (SafeHash, unsafeMakeSafeHash) -import Cardano.Ledger.TxIn (TxId (..), TxIn (..)) -import Cardano.Ledger.UMap ( - RDPair (..), - UMElem (UMElem), - UMap (UMap, umElems, umPtrs), - UView (RewDepUView), - unUnify, - unify, - ) -import Cardano.Ledger.UTxO (UTxO (..)) -import Control.Monad (replicateM) -import Control.Monad.Identity (Identity) -import Data.GenValidity -import Data.Int (Int64) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Ratio ((%)) -import Data.Set (Set) -import qualified Data.Set as Set -import qualified Data.Text as T -import Data.Typeable -import qualified Data.VMap as VMap -import Data.Word (Word16, Word32, Word64, Word8) -import GHC.Stack -import Generic.Random (genericArbitraryU) -import System.Random.Stateful (StatefulGen, uniformRM) -import qualified Test.Cardano.Chain.Common.Gen as Byron -import Test.Cardano.Ledger.Binary.Arbitrary -import Test.Cardano.Ledger.Binary.Random (QC (..)) -import Test.Cardano.Ledger.Core.Utils (unsafeBoundRational) -import Test.QuickCheck -import Test.QuickCheck.Hedgehog (hedgehog) - -maxDecimalsWord64 :: Int -maxDecimalsWord64 = 19 - -instance (Era era, EncCBOR (f era), Arbitrary (f era)) => Arbitrary (Sized (f era)) where - arbitrary = mkSized (eraProtVerHigh @era) <$> arbitrary - ------------------------------------------------------------------------------------------- --- Cardano.Ledger.BaseTypes -------------------------------------------------------------- ------------------------------------------------------------------------------------------- - -instance Arbitrary ActiveSlotCoeff where - arbitrary = mkActiveSlotCoeff <$> arbitrary - -instance Validity ActiveSlotCoeff where - validate _ = mempty - -instance GenValid ActiveSlotCoeff where - genValid = mkActiveSlotCoeff <$> genValid - -instance Crypto c => Arbitrary (BlocksMade c) where - arbitrary = BlocksMade <$> arbitrary - -instance Arbitrary Network where - arbitrary = arbitraryBoundedEnum - -genDnsName :: Int -> Gen T.Text -genDnsName n = do - str <- vectorOf (n - 4) $ elements $ '.' : '-' : ['A' .. 'Z'] ++ ['a' .. 'z'] ++ ['0' .. '9'] - pure $ T.pack str <> ".com" - -guardLength :: HasCallStack => Int -> T.Text -> Maybe a -> a -guardLength n txt = \case - Nothing -> error $ "Unexpected! Generated length: (" ++ show n ++ ") " ++ show txt - Just t -> t - -instance Arbitrary DnsName where - arbitrary = do - n <- chooseInt (5, 64) - txt <- genDnsName n - pure $! guardLength n txt $ textToDns 64 txt - -instance Arbitrary Url where - arbitrary = do - let prefix = "https://" - n <- chooseInt (5, 64 - T.length prefix) - txt <- genDnsName n - pure $! guardLength n txt $ textToUrl 64 (prefix <> txt) - -instance Arbitrary Port where - arbitrary = fromIntegral @Word16 @Port <$> arbitrary - --- JSON instances can't roundtrip, unless these are decimal. - --- | Decimal numbers only -instance Arbitrary UnitInterval where - arbitrary = do - p <- chooseInt (0, maxDecimalsWord64) - let y = 10 ^ p :: Word64 - x <- choose (0, y) - pure $ unsafeBoundRational $ promoteRatio (x % y) - --- | Decimal numbers only -instance Arbitrary PositiveUnitInterval where - arbitrary = do - p <- chooseInt (0, maxDecimalsWord64) - let y = 10 ^ p :: Word64 - x <- choose (1, y) - pure $ unsafeBoundRational $ promoteRatio (x % y) - --- | Decimal numbers only -instance Arbitrary PositiveInterval where - arbitrary = do - p <- chooseInt (0, maxDecimalsWord64) - let y = 10 ^ p :: Word64 - x <- choose (1, 10 ^ (maxDecimalsWord64 :: Int)) - pure $ unsafeBoundRational $ promoteRatio (x % y) - --- | Decimal numbers only -instance Arbitrary NonNegativeInterval where - arbitrary = do - p <- chooseInt (0, maxDecimalsWord64) - let y = 10 ^ p :: Word64 - x <- choose (0, 10 ^ (maxDecimalsWord64 :: Int)) - pure $ unsafeBoundRational $ promoteRatio (x % y) - -instance Validity UnitInterval where - validate _ = mempty - -instance GenValid UnitInterval where - genValid = do - x :: Word64 <- genValid - Positive (y :: Word64) <- arbitrary - pure $ unsafeBoundRational $ promoteRatio (if x > y then y % x else x % y) - shrinkValid _ = [] - -instance Validity PositiveUnitInterval where - validate _ = mempty - -instance GenValid PositiveUnitInterval where - genValid = do - Positive (x :: Word64) <- arbitrary - Positive (y :: Word64) <- arbitrary - pure $ unsafeBoundRational $ promoteRatio (if x > y then y % x else x % y) - shrinkValid _ = [] - -instance Validity PositiveInterval where - validate _ = mempty - -instance GenValid PositiveInterval where - genValid = do - Positive (x :: Word64) <- arbitrary - Positive (y :: Word64) <- arbitrary - pure $ unsafeBoundRational $ promoteRatio (x % y) - shrinkValid _ = [] - -instance Validity NonNegativeInterval where - validate _ = mempty - -instance GenValid NonNegativeInterval where - genValid = do - x :: Word64 <- genValid - Positive (y :: Word64) <- arbitrary - pure $ unsafeBoundRational $ promoteRatio (x % y) - shrinkValid _ = [] - -instance Arbitrary TxIx where - arbitrary = TxIx <$> arbitrary - -instance Arbitrary CertIx where - arbitrary = CertIx <$> arbitrary - -instance Arbitrary ProtVer where - arbitrary = ProtVer <$> arbitrary <*> arbitrary - -instance Arbitrary Nonce where - arbitrary = - oneof - [ return NeutralNonce - , mkNonceFromNumber <$> arbitrary - ] - -instance Arbitrary EpochInterval where - arbitrary = EpochInterval <$> arbitrary - ------------------------------------------------------------------------------------------- --- Cardano.Ledger.TxIn ------------------------------------------------------------------- ------------------------------------------------------------------------------------------- - -instance Crypto c => Arbitrary (TxId c) where - arbitrary = TxId <$> arbitrary - -instance Crypto c => Arbitrary (TxIn c) where - arbitrary = TxIn <$> arbitrary <*> arbitrary - ------------------------------------------------------------------------------------------- --- Cardano.Ledger.Credential -------------------------------------------------------------- ------------------------------------------------------------------------------------------- - -instance Arbitrary Ptr where - arbitrary = genValidPtr - --- | Generate a Ptr that contains values that are allowed on the wire -genValidPtr :: Gen Ptr -genValidPtr = - Ptr - <$> (SlotNo . (fromIntegral :: Word32 -> Word64) <$> arbitrary) - <*> (mkTxIxPartial . toInteger <$> (arbitrary :: Gen Word16)) - <*> (mkCertIxPartial . toInteger <$> (arbitrary :: Gen Word16)) - --- | Generate a Ptr with full 64bit range for values. Not allowed starting in Babbage -genBadPtr :: Gen Ptr -genBadPtr = Ptr <$> arbitrary <*> arbitrary <*> arbitrary - -instance Crypto c => Arbitrary (Credential r c) where - arbitrary = - oneof - [ ScriptHashObj . ScriptHash <$> arbitrary - , KeyHashObj <$> arbitrary - ] - ------------------------------------------------------------------------------------------- --- Cardano.Ledger.Hashes ----------------------------------------------------------------- ------------------------------------------------------------------------------------------- - -genHash :: forall h a. HashAlgorithm h => Gen (Hash h a) -genHash = UnsafeHash <$> genShortByteString (fromIntegral (sizeHash (Proxy @h))) - -instance Crypto c => Arbitrary (SafeHash c i) where - arbitrary = unsafeMakeSafeHash <$> genHash - -instance Crypto c => Arbitrary (ScriptHash c) where - arbitrary = ScriptHash <$> genHash - ------------------------------------------------------------------------------------------- --- Cardano.Ledger.AuxiliaryDataHash ------------------------------------------------------ ------------------------------------------------------------------------------------------- - -instance Crypto c => Arbitrary (AuxiliaryDataHash c) where - arbitrary = AuxiliaryDataHash <$> arbitrary - ------------------------------------------------------------------------------------------- --- Cardano.Ledger.Keys ------------------------------------------------------------------- ------------------------------------------------------------------------------------------- - -instance Crypto c => Arbitrary (KeyHash a c) where - arbitrary = KeyHash <$> genHash - -instance DSIGNAlgorithm (DSIGN c) => Arbitrary (VKey kd c) where - arbitrary = VKey <$> arbitrary - -instance (Typeable kr, Crypto c) => Arbitrary (WitVKey kr c) where - arbitrary = WitVKey <$> arbitrary <*> arbitrary - -instance Arbitrary ChainCode where - arbitrary = ChainCode <$> arbitrary - -instance Crypto c => Arbitrary (BootstrapWitness c) where - arbitrary = do - bwKey <- arbitrary - bwSig <- arbitrary - bwChainCode <- arbitrary - bwAttributes <- arbitrary - pure $ BootstrapWitness {bwKey, bwSig, bwChainCode, bwAttributes} - -instance Crypto c => Arbitrary (GenDelegPair c) where - arbitrary = GenDelegPair <$> arbitrary <*> arbitrary - -deriving instance Crypto c => Arbitrary (GenDelegs c) - ------------------------------------------------------------------------------------------- --- Cardano.Ledger.Coin ------------------------------------------------------------------- ------------------------------------------------------------------------------------------- -deriving instance Arbitrary (CompactForm Coin) - -instance Arbitrary Coin where - -- Cannot be negative even though it is an 'Integer' - arbitrary = Coin <$> choose (0, 1000000) - shrink (Coin i) = Coin <$> shrink i - -instance Arbitrary DeltaCoin where - arbitrary = DeltaCoin <$> choose (-1000000, 1000000) - shrink (DeltaCoin i) = DeltaCoin <$> shrink i - ------------------------------------------------------------------------------------------- --- Cardano.Ledger.Address ---------------------------------------------------------------- ------------------------------------------------------------------------------------------- - -instance Arbitrary (BootstrapAddress c) where - arbitrary = BootstrapAddress <$> hedgehog Byron.genAddress - -instance Arbitrary Byron.Address where - arbitrary = hedgehog Byron.genAddress - -instance Arbitrary Byron.AddrAttributes where - arbitrary = hedgehog Byron.genAddrAttributes - -instance Arbitrary (Byron.Attributes Byron.AddrAttributes) where - arbitrary = hedgehog $ Byron.genAttributes Byron.genAddrAttributes - -instance Crypto c => Arbitrary (Addr c) where - arbitrary = genAddrWith arbitrary - shrink = genericShrink - -genAddrWith :: Crypto c => Gen Ptr -> Gen (Addr c) -genAddrWith genPtr = - frequency - [ (8, Addr <$> arbitrary <*> arbitrary <*> genStakeRefWith genPtr) - , (2, AddrBootstrap <$> arbitrary) - ] - -genAddrBadPtr :: Crypto c => Gen (Addr c) -genAddrBadPtr = genAddrWith genBadPtr - -genCompactAddrBadPtr :: Crypto c => Gen (CompactAddr c) -genCompactAddrBadPtr = compactAddr <$> genAddrBadPtr - -instance Crypto c => Arbitrary (CompactAddr c) where - arbitrary = compactAddr <$> arbitrary - -instance Crypto c => Arbitrary (StakeReference c) where - arbitrary = genStakeRefWith arbitrary - shrink = genericShrink - -genStakeRefWith :: Crypto c => Gen Ptr -> Gen (StakeReference c) -genStakeRefWith genPtr = - frequency - [ (80, StakeRefBase <$> arbitrary) - , (5, StakeRefPtr <$> genPtr) - , (15, pure StakeRefNull) - ] - -instance Crypto c => Arbitrary (RewardAccount c) where - arbitrary = RewardAccount <$> arbitrary <*> arbitrary - shrink = genericShrink - -instance Crypto c => Arbitrary (Withdrawals c) where - arbitrary = genericArbitraryU - shrink = genericShrink - ------------------------------------------------------------------------------------------- --- Cardano.Ledger.Reward ----------------------------------------------------------------- ------------------------------------------------------------------------------------------- - -instance Arbitrary RewardType where - arbitrary = arbitraryBoundedEnum - shrink = genericShrink - -instance Crypto c => Arbitrary (Reward c) where - arbitrary = Reward <$> arbitrary <*> arbitrary <*> arbitrary - shrink = genericShrink - ------------------------------------------------------------------------------------------- --- Cardano.Ledger.PoolParams ------------------------------------------------------------- ------------------------------------------------------------------------------------------- - -instance Crypto c => Arbitrary (PoolParams c) where - arbitrary = - PoolParams - <$> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - -instance Arbitrary PoolMetadata where - arbitrary = PoolMetadata <$> arbitrary <*> arbitrary - -instance Arbitrary StakePoolRelay where - arbitrary = genericArbitraryU - shrink = genericShrink - -instance Arbitrary SizeOfPoolRelays where - arbitrary = pure SizeOfPoolRelays - -instance Arbitrary SizeOfPoolOwners where - arbitrary = pure SizeOfPoolOwners - ------------------------------------------------------------------------------------------- --- Cardano.Ledger.PoolDistr -------------------------------------------------------------- ------------------------------------------------------------------------------------------- - -deriving instance Crypto c => Arbitrary (PoolDistr c) - -instance Crypto c => Arbitrary (IndividualPoolStake c) where - arbitrary = IndividualPoolStake <$> arbitrary <*> arbitrary - ------------------------------------------------------------------------------------------- --- Cardano.Ledger.DRepDistr -------------------------------------------------------------- ------------------------------------------------------------------------------------------- - -instance Crypto c => Arbitrary (DRepState c) where - arbitrary = DRepState <$> arbitrary <*> arbitrary <*> arbitrary - ------------------------------------------------------------------------------------------- --- Cardano.Ledger.UTxO ------------------------------------------------------------------- ------------------------------------------------------------------------------------------- - -deriving instance (EraTxOut era, Arbitrary (TxOut era)) => Arbitrary (UTxO era) - ------------------------------------------------------------------------------------------- --- Cardano.Ledger.Core.PParams ----------------------------------------------------------- ------------------------------------------------------------------------------------------- - -deriving instance (Era era, Arbitrary (PParamsHKD Identity era)) => Arbitrary (PParams era) - -deriving instance (Era era, Arbitrary (PParamsHKD StrictMaybe era)) => Arbitrary (PParamsUpdate era) - ------------------------------------------------------------------------------------------- --- Cardano.Ledger.UMap ------------------------------------------------------------------- ------------------------------------------------------------------------------------------- - -instance Arbitrary RDPair where - arbitrary = RDPair <$> arbitrary <*> arbitrary - shrink = genericShrink - -instance Crypto c => Arbitrary (UMElem c) where - arbitrary = UMElem <$> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary - shrink = genericShrink - -instance Crypto c => Arbitrary (UMap c) where - arbitrary = UMap <$> arbitrary <*> arbitrary - -instance Crypto c => Arbitrary (DRep c) where - arbitrary = - oneof - [ DRepCredential <$> arbitrary - , pure DRepAlwaysAbstain - , pure DRepAlwaysNoConfidence - ] - --- | Used for testing UMap operations -genValidTuples :: - Gen - ( Map (Credential 'Staking StandardCrypto) RDPair - , Map Ptr (Credential 'Staking StandardCrypto) - , Map (Credential 'Staking StandardCrypto) (KeyHash 'StakePool StandardCrypto) - , Map (Credential 'Staking StandardCrypto) (DRep StandardCrypto) - ) -genValidTuples = scale (* 2) $ do - creds :: [Credential 'Staking StandardCrypto] <- arbitrary - let nCreds = length creds - rdPairs :: [RDPair] <- vectorOf nCreds arbitrary - ptrs :: [Ptr] <- arbitrary - sPools :: [KeyHash 'StakePool StandardCrypto] <- vectorOf nCreds arbitrary - dReps :: [DRep StandardCrypto] <- vectorOf nCreds arbitrary - pure - ( Map.fromList $ zip creds rdPairs - , Map.fromList $ zip ptrs creds - , Map.fromList $ zip creds sPools - , Map.fromList $ zip creds dReps - ) - -genValidTuplesNonEmpty :: - Gen - ( Map (Credential 'Staking StandardCrypto) RDPair - , Map Ptr (Credential 'Staking StandardCrypto) - , Map (Credential 'Staking StandardCrypto) (KeyHash 'StakePool StandardCrypto) - , Map (Credential 'Staking StandardCrypto) (DRep StandardCrypto) - ) -genValidTuplesNonEmpty = scale (* 2) $ do - Positive nCreds <- arbitrary - nPtrs <- chooseInt (1, nCreds) - creds :: [Credential 'Staking StandardCrypto] <- vectorOf nCreds arbitrary - rdPairs :: [RDPair] <- vectorOf nCreds arbitrary - ptrs :: [Ptr] <- vectorOf nPtrs arbitrary - sPools :: [KeyHash 'StakePool StandardCrypto] <- vectorOf nCreds arbitrary - dReps :: [DRep StandardCrypto] <- vectorOf nCreds arbitrary - pure - ( Map.fromList $ zip creds rdPairs - , Map.fromList $ zip ptrs creds - , Map.fromList $ zip creds sPools - , Map.fromList $ zip creds dReps - ) - -genValidUMap :: Gen (UMap StandardCrypto) -genValidUMap = do - (rdPairs, ptrs, sPools, dReps) <- genValidTuples - pure $ unify rdPairs ptrs sPools dReps - -genValidUMapNonEmpty :: Gen (UMap StandardCrypto) -genValidUMapNonEmpty = do - (rdPairs, ptrs, sPools, dReps) <- genValidTuplesNonEmpty - pure $ unify rdPairs ptrs sPools dReps - -uniformSubset :: - (StatefulGen g m, Ord k) => - -- | Size of the subset. If supplied will be clamped to @[0, Set.size s]@ interval, - -- otherwise will be generated randomly. - Maybe Int -> - Set k -> - g -> - m (Set k) -uniformSubset mSubSetSize inputSet gen = do - subSetSize <- case mSubSetSize of - Nothing -> uniformRM (0, Set.size inputSet) gen - Just n -> pure $ max 0 $ min (Set.size inputSet) n - go inputSet Set.empty subSetSize - where - go !s !acc !i - | i <= 0 = pure acc - | otherwise = do - ix <- uniformRM (0, Set.size s - 1) gen - go (Set.insert (Set.elemAt ix s) acc) (Set.deleteAt ix s) (i - 1) - -genValidUMapWithCreds :: Gen (UMap StandardCrypto, Set (Credential 'Staking StandardCrypto)) -genValidUMapWithCreds = do - umap <- genValidUMap - creds <- uniformSubset Nothing (Map.keysSet $ umElems umap) QC - pure (umap, creds) - -genExcludingKey :: (Ord k, Arbitrary k) => Map k a -> Gen k -genExcludingKey ks = do - k <- arbitrary - if k `Map.member` ks - then genExcludingKey ks - else pure k - -genInsertDeleteRoundtripRDPair :: - Gen (UMap StandardCrypto, Credential 'Staking StandardCrypto, RDPair) -genInsertDeleteRoundtripRDPair = do - umap@UMap {umElems} <- genValidUMap - k <- genExcludingKey umElems - v <- arbitrary - pure (umap, k, v) - -genInsertDeleteRoundtripPtr :: Gen (UMap StandardCrypto, Ptr, Credential 'Staking StandardCrypto) -genInsertDeleteRoundtripPtr = do - umap@UMap {umPtrs} <- genValidUMap - k <- genExcludingKey umPtrs - v <- arbitrary - pure (umap, k, v) - -genInsertDeleteRoundtripSPool :: - Gen - ( UMap StandardCrypto - , Credential 'Staking StandardCrypto - , KeyHash 'StakePool StandardCrypto - ) -genInsertDeleteRoundtripSPool = do - umap@UMap {umElems} <- genValidUMap - k <- genExcludingKey umElems - v <- arbitrary - pure (umap, k, v) - -genInsertDeleteRoundtripDRep :: - Gen - ( UMap StandardCrypto - , Credential 'Staking StandardCrypto - , DRep StandardCrypto - ) -genInsertDeleteRoundtripDRep = do - umap@UMap {umElems} <- genValidUMap - k <- genExcludingKey umElems - v <- arbitrary - pure (umap, k, v) - -genInvariantNonEmpty :: Gen (Credential 'Staking StandardCrypto, Ptr, UMap StandardCrypto) -genInvariantNonEmpty = do - umap@(UMap tripmap ptrmap) <- genValidUMapNonEmpty - cred <- - oneof - [ elements $ Map.keys tripmap - , genExcludingKey tripmap - ] - ptr <- - oneof - [ elements $ Map.keys ptrmap - , genExcludingKey ptrmap - ] - pure (cred, ptr, umap) - -genRightPreferenceUMap :: Gen (UMap StandardCrypto, Map (Credential 'Staking StandardCrypto) RDPair) -genRightPreferenceUMap = do - umap <- genValidUMap - let rdMap = unUnify $ RewDepUView umap - subdomain <- sublistOf $ Map.keys rdMap - coins <- vectorOf (length subdomain) arbitrary - pure (umap, Map.fromList $ zip subdomain coins) - ------------------------------------------------------------------------------------------- --- Cardano.Ledger.CertState ------------------------------------------------------------------- ------------------------------------------------------------------------------------------- - -instance Era era => Arbitrary (CertState era) where - arbitrary = CertState <$> arbitrary <*> arbitrary <*> arbitrary - shrink = genericShrink - -instance Era era => Arbitrary (DState era) where - arbitrary = DState <$> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary - -instance Era era => Arbitrary (PState era) where - arbitrary = PState <$> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary - -instance Crypto c => Arbitrary (Anchor c) where - arbitrary = - Anchor - <$> arbitrary - <*> arbitrary - -instance Crypto c => Arbitrary (CommitteeAuthorization c) where - arbitrary = - oneof - [ CommitteeHotCredential <$> arbitrary - , CommitteeMemberResigned <$> arbitrary - ] - -deriving instance Era era => Arbitrary (CommitteeState era) - -instance Era era => Arbitrary (VState era) where - arbitrary = VState <$> arbitrary <*> arbitrary <*> arbitrary - -instance Crypto c => Arbitrary (InstantaneousRewards c) where - arbitrary = InstantaneousRewards <$> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary - shrink = genericShrink - -instance Crypto c => Arbitrary (FutureGenDeleg c) where - arbitrary = FutureGenDeleg <$> arbitrary <*> arbitrary - shrink = genericShrink - ------------------------------------------------------------------------------------------- --- Cardano.Ledger.EpochBoundary ---------------------------------------------------------- ------------------------------------------------------------------------------------------- - -instance Crypto c => Arbitrary (SnapShot c) where - arbitrary = - SnapShot - <$> arbitrary - <*> arbitrary - <*> arbitrary - -instance Crypto c => Arbitrary (SnapShots c) where - arbitrary = do - ssStakeMark <- arbitrary - ssStakeSet <- arbitrary - ssStakeGo <- arbitrary - ssFee <- arbitrary - let ssStakeMarkPoolDistr = calculatePoolDistr ssStakeMark - pure $ SnapShots {..} - --- | In the system, Stake never contains more than the sum of all Ada (which is constant). --- This makes it safe to store individual Coins (in CompactForm) as Word64. But we must --- be careful that we never generate Stake where the sum of all the coins exceeds (maxBound :: Word64) --- There will never be a real Stake in the system with that many Ada, because total Ada is constant. --- So using a restricted Arbitrary Generator is OK. -instance Crypto c => Arbitrary (Stake c) where - arbitrary = Stake <$> (VMap.fromMap <$> theMap) - where - genWord64 :: Int -> Gen Word64 - genWord64 n = - frequency - [ (3, choose (1, 100)) - , (2, choose (101, 10000)) - , (1, choose (1, maxBound `div` fromIntegral n)) - ] - theMap = do - n <- frequency [(3, chooseInt (1, 20)), (2, chooseInt (21, 150)), (1, chooseInt (151, 1000))] - let pair = (,) <$> arbitrary <*> (CompactCoin <$> genWord64 n) - list <- frequency [(1, pure []), (99, vectorOf n pair)] - pure (Map.fromList list) - ------------------------------------------------------------------------------------------- --- Cardano.Ledger.Core.TxCert ---------------------------------------------------------- ------------------------------------------------------------------------------------------- - -instance Crypto c => Arbitrary (PoolCert c) where - arbitrary = - oneof - [ RegPool <$> arbitrary - , RetirePool <$> arbitrary <*> arbitrary - ] - shrink = genericShrink - ------------------------------------------------------------------------------------------- --- Cardano.Ledger.Plutus ---------------------------------------------------------- ------------------------------------------------------------------------------------------- - -instance Arbitrary Language where - arbitrary = elements nonNativeLanguages - -instance Arbitrary CostModelError where - arbitrary = - CostModelError - <$> oneof - [ CMUnknownParamError <$> arbitrary - , pure CMInternalReadError - , CMInternalWriteError <$> arbitrary - , CMTooFewParamsError <$> arbitrary <*> arbitrary - ] - -instance Arbitrary ExUnits where - arbitrary = ExUnits <$> genUnit <*> genUnit - where - genUnit = fromIntegral <$> choose (0, maxBound :: Int64) - -instance Arbitrary Prices where - arbitrary = Prices <$> arbitrary <*> arbitrary - -instance Arbitrary CostModel where - arbitrary = elements nonNativeLanguages >>= genValidCostModel - -genValidCostModel :: Language -> Gen CostModel -genValidCostModel lang = do - newParamValues <- vectorOf (costModelParamsCount lang) (arbitrary :: Gen Integer) - either (\err -> error $ "Corrupt cost model: " ++ show err) pure $ - mkCostModel lang newParamValues - -genValidCostModels :: Set.Set Language -> Gen CostModels -genValidCostModels = fmap mkCostModels . sequence . Map.fromSet genValidCostModel - -genValidAndUnknownCostModels :: Gen CostModels -genValidAndUnknownCostModels = do - langs <- sublistOf nonNativeLanguages - validCms <- genValidCostModels $ Set.fromList langs - unknownCms <- mkCostModelsLenient <$> genUnknownCostModels - pure $ updateCostModels validCms unknownCms - --- | This Arbitrary instance assumes the inflexible deserialization --- scheme prior to version 9. -instance Arbitrary CostModels where - arbitrary = do - langs <- sublistOf nonNativeLanguages - genValidCostModels $ Set.fromList langs - --- | This Arbitrary instance assumes the flexible deserialization --- scheme of 'CostModels' starting at version 9. -newtype FlexibleCostModels = FlexibleCostModels {unFlexibleCostModels :: CostModels} - deriving stock (Show, Eq, Ord) - deriving newtype (EncCBOR, DecCBOR) - -instance Arbitrary FlexibleCostModels where - arbitrary = do - known <- genKnownCostModels - unknown <- genUnknownCostModels - let cms = known `Map.union` unknown - pure . FlexibleCostModels $ mkCostModelsLenient cms - -genUnknownCostModels :: Gen (Map Word8 [Integer]) -genUnknownCostModels = Map.fromList <$> listOf genUnknownCostModelValues - -genKnownCostModels :: Gen (Map Word8 [Integer]) -genKnownCostModels = do - langs <- sublistOf nonNativeLanguages - cms <- mapM genCostModelValues langs - return $ Map.fromList cms - -genUnknownCostModelValues :: Gen (Word8, [Integer]) -genUnknownCostModelValues = do - lang <- chooseInt (firstInvalid, fromIntegral (maxBound :: Word8)) - vs <- arbitrary - return (fromIntegral . fromEnum $ lang, vs) - where - firstInvalid = fromEnum (maxBound :: Language) + 1 - -genCostModelValues :: Language -> Gen (Word8, [Integer]) -genCostModelValues lang = do - Positive sub <- arbitrary - (,) lang' - <$> oneof - [ listAtLeast (costModelParamsCount lang) -- Valid Cost Model for known language - , take (tooFew sub) <$> arbitrary -- Invalid Cost Model for known language - ] - where - lang' = fromIntegral (fromEnum lang) - tooFew sub = costModelParamsCount lang - sub - listAtLeast :: Int -> Gen [Integer] - listAtLeast x = do - NonNegative y <- arbitrary - replicateM (x + y) arbitrary diff --git a/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Core/Binary.hs b/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Core/Binary.hs deleted file mode 100644 index c92307cd244..00000000000 --- a/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Core/Binary.hs +++ /dev/null @@ -1,218 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Test.Cardano.Ledger.Core.Binary where - -import Cardano.Ledger.Core -import Cardano.Ledger.MemoBytes (EqRaw (eqRaw)) -import Data.Default.Class (Default (def)) -import Test.Cardano.Ledger.Binary.RoundTrip -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.TreeDiff () - -data BinaryUpgradeOpts = BinaryUpgradeOpts - { isScriptUpgradeable :: Bool - , isTxUpgradeable :: Bool - } - -instance Default BinaryUpgradeOpts where - def = - BinaryUpgradeOpts - { isScriptUpgradeable = True - , isTxUpgradeable = True - } - -specTxOutUpgrade :: - forall era. - ( EraTxOut (PreviousEra era) - , EraTxOut era - , Arbitrary (TxOut (PreviousEra era)) - , HasCallStack - ) => - Spec -specTxOutUpgrade = - prop "upgradeTxOut is preserved through serialization" $ \prevTxOut -> do - case embedTrip (eraProtVerHigh @(PreviousEra era)) (eraProtVerLow @era) cborTrip prevTxOut of - Left err -> - expectationFailure $ - "Expected to deserialize: =======================================================\n" - ++ show err - Right (curTxOut :: TxOut era) -> - curTxOut `shouldBe` upgradeTxOut prevTxOut - -specTxCertUpgrade :: - forall era. - ( EraTxCert (PreviousEra era) - , EraTxCert era - , Arbitrary (TxCert (PreviousEra era)) - , HasCallStack - ) => - Spec -specTxCertUpgrade = - prop "upgradeTxCert is preserved through serialization" $ \prevTxCert -> do - case embedTrip (eraProtVerHigh @(PreviousEra era)) (eraProtVerLow @era) cborTrip prevTxCert of - Left err - | Right _ <- upgradeTxCert prevTxCert -> - -- We expect deserialization to succeed, when upgrade is possible - expectationFailure $ - "Expected to deserialize: =======================================================\n" - ++ show err - | otherwise -> pure () -- Both upgrade and deserializer fail successfully - Right (curTxCert :: TxCert era) - | Right upgradedTxCert <- upgradeTxCert prevTxCert -> - curTxCert `shouldBe` upgradedTxCert - | otherwise -> expectationFailure "Expected upgradeTxCert to succeed" - -specTxAuxDataUpgrade :: - forall era. - ( EraTxAuxData (PreviousEra era) - , EraTxAuxData era - , Arbitrary (TxAuxData (PreviousEra era)) - , HasCallStack - , ToExpr (TxAuxData era) - ) => - Spec -specTxAuxDataUpgrade = - prop "upgradeTxAuxData is preserved through serialization" $ \prevTxAuxData -> do - case embedTripAnn (eraProtVerHigh @(PreviousEra era)) (eraProtVerLow @era) prevTxAuxData of - Left err -> - expectationFailure $ - "Expected to deserialize: =======================================================\n" - ++ show err - Right (curTxAuxData :: TxAuxData era) -> do - let upgradedTxAuxData = upgradeTxAuxData prevTxAuxData - unless (eqRaw curTxAuxData upgradedTxAuxData) $ - expectationFailure $ - "Expected raw representation of TxAuxData to be equal: \n" - <> diffExpr curTxAuxData upgradedTxAuxData - -specScriptUpgrade :: - forall era. - ( EraScript (PreviousEra era) - , EraScript era - , Arbitrary (Script (PreviousEra era)) - , HasCallStack - ) => - Spec -specScriptUpgrade = - prop "upgradeScript is preserved through serialization" $ \prevScript -> do - case embedTripAnn (eraProtVerHigh @(PreviousEra era)) (eraProtVerLow @era) prevScript of - Left err -> - expectationFailure $ - "Expected to deserialize: =======================================================\n" - ++ show err - Right (curScript :: Script era) -> - curScript `shouldBe` upgradeScript prevScript - -specTxWitsUpgrade :: - forall era. - ( EraTxWits (PreviousEra era) - , EraTxWits era - , Arbitrary (TxWits (PreviousEra era)) - , HasCallStack - , ToExpr (TxWits era) - ) => - Spec -specTxWitsUpgrade = - prop "upgradeTxWits is preserved through serialization" $ \prevTxWits -> do - case embedTripAnn (eraProtVerHigh @(PreviousEra era)) (eraProtVerLow @era) prevTxWits of - Left err -> - expectationFailure $ - "Expected to deserialize: =======================================================\n" - ++ show err - Right (curTxWits :: TxWits era) -> do - let upgradedTxWits = upgradeTxWits prevTxWits - unless (eqRaw curTxWits upgradedTxWits) $ - expectationFailure $ - "Expected raw representation of TxWits to be equal: \n" - <> diffExpr curTxWits upgradedTxWits - -specTxBodyUpgrade :: - forall era. - ( EraTxBody (PreviousEra era) - , EraTxBody era - , Arbitrary (TxBody (PreviousEra era)) - , HasCallStack - , ToExpr (TxBody era) - ) => - Spec -specTxBodyUpgrade = - prop "upgradeTxBody is preserved through serialization" $ \prevTxBody -> do - case embedTripAnn (eraProtVerHigh @(PreviousEra era)) (eraProtVerLow @era) prevTxBody of - Left err - | Right _ <- upgradeTxBody prevTxBody -> - -- We expect deserialization to succeed, when upgrade is possible - expectationFailure $ - "Expected to deserialize: =======================================================\n" - ++ show err - | otherwise -> pure () -- Both upgrade and deserializer fail successfully - Right (curTxBody :: TxBody era) - | Right upgradedTxBody <- upgradeTxBody prevTxBody -> - unless (eqRaw curTxBody upgradedTxBody) $ - expectationFailure $ - "Expected raw representation of TxBody to be equal: \n" - <> diffExpr curTxBody upgradedTxBody - | otherwise -> expectationFailure "Expected upgradeTxBody to succeed" - -specTxUpgrade :: - forall era. - ( EraTx (PreviousEra era) - , EraTx era - , Arbitrary (Tx (PreviousEra era)) - , HasCallStack - , ToExpr (Tx era) - ) => - Spec -specTxUpgrade = - prop "upgradeTx is preserved through serialization" $ \prevTx -> do - case embedTripAnn (eraProtVerHigh @(PreviousEra era)) (eraProtVerLow @era) prevTx of - Left err - | Right _ <- upgradeTx prevTx -> - -- We expect deserialization to succeed, when upgrade is possible - expectationFailure $ - "Expected to deserialize: =======================================================\n" - ++ show err - | otherwise -> pure () -- Both upgrade and deserializer fail successfully - Right (curTx :: Tx era) - | Right upgradedTx <- upgradeTx prevTx -> - unless (eqRaw curTx upgradedTx) $ - expectationFailure $ - "Expected raw representation of Tx to be equal: \n" - <> diffExpr curTx upgradedTx - | otherwise -> expectationFailure "Expected upgradeTx to succeed" - -specUpgrade :: - forall era. - ( Arbitrary (TxOut (PreviousEra era)) - , Arbitrary (TxCert (PreviousEra era)) - , Arbitrary (TxAuxData (PreviousEra era)) - , Arbitrary (TxWits (PreviousEra era)) - , Arbitrary (TxBody (PreviousEra era)) - , EraTx (PreviousEra era) - , EraTx era - , Arbitrary (Tx (PreviousEra era)) - , Arbitrary (Script (PreviousEra era)) - , HasCallStack - , ToExpr (Tx era) - , ToExpr (TxBody era) - , ToExpr (TxWits era) - , ToExpr (TxAuxData era) - ) => - BinaryUpgradeOpts -> - Spec -specUpgrade BinaryUpgradeOpts {isScriptUpgradeable, isTxUpgradeable} = - describe ("Upgrade from " ++ eraName @(PreviousEra era) ++ " to " ++ eraName @era) $ do - specTxOutUpgrade @era - specTxCertUpgrade @era - specTxAuxDataUpgrade @era - specTxWitsUpgrade @era - specTxBodyUpgrade @era - when isTxUpgradeable $ - specTxUpgrade @era - when isScriptUpgradeable $ - specScriptUpgrade @era diff --git a/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Core/Binary/RoundTrip.hs b/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Core/Binary/RoundTrip.hs deleted file mode 100644 index a3063196e4c..00000000000 --- a/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Core/Binary/RoundTrip.hs +++ /dev/null @@ -1,264 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} - -module Test.Cardano.Ledger.Core.Binary.RoundTrip ( - RuleListEra (..), - EraRuleProof (..), - - -- * Spec - roundTripEraSpec, - roundTripAnnEraSpec, - roundTripEraTypeSpec, - roundTripAnnEraTypeSpec, - roundTripShareEraSpec, - roundTripShareEraTypeSpec, - - -- * Expectation - roundTripEraExpectation, - roundTripEraTypeExpectation, - roundTripAnnEraExpectation, - roundTripAnnEraTypeExpectation, - roundTripShareEraExpectation, - roundTripShareEraTypeExpectation, - roundTripCoreEraTypesSpec, - roundTripAllPredicateFailures, -) where - -import Cardano.Ledger.Binary -import Cardano.Ledger.CertState -import Cardano.Ledger.Compactible -import Cardano.Ledger.Core -import Cardano.Ledger.EpochBoundary -import Cardano.Ledger.Keys.Bootstrap -import Cardano.Ledger.UTxO -import Control.State.Transition.Extended (STS (..)) -import Data.Typeable -import GHC.TypeLits (Symbol) -import Test.Cardano.Ledger.Binary.RoundTrip -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Core.Arbitrary () - --- | QuickCheck property spec that uses `roundTripEraExpectation` -roundTripEraSpec :: - forall era t. - (Era era, Show t, Eq t, EncCBOR t, DecCBOR t, Arbitrary t) => - Spec -roundTripEraSpec = - prop (show (typeRep $ Proxy @t)) $ roundTripEraExpectation @era @t - --- | Roundtrip CBOR testing for types and type families that implement --- EncCBOR/DecCBOR. Requires TypeApplication of an @@era@ -roundTripEraExpectation :: - forall era t. - (Era era, Show t, Eq t, EncCBOR t, DecCBOR t) => - t -> - Expectation -roundTripEraExpectation = - roundTripCborRangeExpectation (eraProtVerLow @era) (eraProtVerHigh @era) - --- | QuickCheck property spec that uses `roundTripAnnEraExpectation` -roundTripAnnEraSpec :: - forall era t. - (Era era, Show t, Eq t, ToCBOR t, DecCBOR (Annotator t), Arbitrary t) => - Spec -roundTripAnnEraSpec = - prop (show (typeRep $ Proxy @t)) $ roundTripAnnEraExpectation @era @t - --- | Similar to `roundTripEraExpectation`, but for Annotator decoders. Note the --- constraint `ToCBOR` vs `EncCBOR`, this is due to the requirement for memoized types --- to be already fully encoded. -roundTripAnnEraExpectation :: - forall era t. - (Era era, Show t, Eq t, ToCBOR t, DecCBOR (Annotator t)) => - t -> - Expectation -roundTripAnnEraExpectation = - roundTripAnnRangeExpectation (eraProtVerLow @era) (eraProtVerHigh @era) - --- | QuickCheck property spec that uses `roundTripEraTypeExpectation` -roundTripEraTypeSpec :: - forall era t. - (Era era, Show (t era), Eq (t era), EncCBOR (t era), DecCBOR (t era), Arbitrary (t era)) => - Spec -roundTripEraTypeSpec = - prop (show (typeRep $ Proxy @(t era))) $ roundTripEraTypeExpectation @era @t - --- | Roundtrip CBOR testing for types that implement EncCBOR/DecCBOR. Unlike --- `roundTripEraExpectation`, this function can't be used with type families, but the --- types of this function are unambiguous. -roundTripEraTypeExpectation :: - forall era t. - (Era era, Show (t era), Eq (t era), EncCBOR (t era), DecCBOR (t era)) => - t era -> - Expectation -roundTripEraTypeExpectation = roundTripEraExpectation @era @(t era) - --- | QuickCheck property spec that uses `roundTripAnnEraTypeExpectation` -roundTripAnnEraTypeSpec :: - forall era t. - ( Era era - , Show (t era) - , Eq (t era) - , ToCBOR (t era) - , DecCBOR (Annotator (t era)) - , Arbitrary (t era) - ) => - Spec -roundTripAnnEraTypeSpec = - prop (show (typeRep $ Proxy @(t era))) $ roundTripAnnEraTypeExpectation @era @t - --- | Same as `roundTripAnnEraExpectation`, but is not suitable for type families. -roundTripAnnEraTypeExpectation :: - forall era t. - ( Era era - , Show (t era) - , Eq (t era) - , ToCBOR (t era) - , DecCBOR (Annotator (t era)) - ) => - t era -> - Expectation -roundTripAnnEraTypeExpectation = roundTripAnnEraExpectation @era @(t era) - --- | QuickCheck property spec that uses `roundTripShareEraExpectation` -roundTripShareEraSpec :: - forall era t. - (Era era, Show t, Eq t, EncCBOR t, DecShareCBOR t, Arbitrary t) => - Spec -roundTripShareEraSpec = - prop (show (typeRep $ Proxy @t)) $ roundTripShareEraExpectation @era @t - --- | Roundtrip CBOR testing for types and type families that implement --- EncCBOR/DecShareCBOR. Requires TypeApplication of an @@era@ -roundTripShareEraExpectation :: - forall era t. - (Era era, Show t, Eq t, EncCBOR t, DecShareCBOR t) => - t -> - Expectation -roundTripShareEraExpectation = - roundTripRangeExpectation - (mkTrip encCBOR decNoShareCBOR) - (eraProtVerLow @era) - (eraProtVerHigh @era) - --- | QuickCheck property spec that uses `roundTripShareEraTypeExpectation` -roundTripShareEraTypeSpec :: - forall era t. - (Era era, Show (t era), Eq (t era), EncCBOR (t era), DecShareCBOR (t era), Arbitrary (t era)) => - Spec -roundTripShareEraTypeSpec = - prop (show (typeRep $ Proxy @(t era))) $ roundTripShareEraTypeExpectation @era @t - --- | Roundtrip CBOR testing for types that implement EncCBOR/DecShareCBOR. Unlike --- `roundTripShareEraExpectation`, this function can't be used with type families, but the --- types of this function are unambiguous. -roundTripShareEraTypeExpectation :: - forall era t. - (Era era, Show (t era), Eq (t era), EncCBOR (t era), DecShareCBOR (t era)) => - t era -> - Expectation -roundTripShareEraTypeExpectation = roundTripShareEraExpectation @era @(t era) - --- | CBOR RoundTrip spec for all the core types and type families that are parametrized on era. -roundTripCoreEraTypesSpec :: - forall era. - ( EraTx era - , Arbitrary (Tx era) - , Arbitrary (TxBody era) - , Arbitrary (TxOut era) - , Arbitrary (TxCert era) - , Arbitrary (TxWits era) - , Arbitrary (TxAuxData era) - , Arbitrary (Value era) - , Arbitrary (CompactForm (Value era)) - , Arbitrary (Script era) - , Arbitrary (PParams era) - , Arbitrary (PParamsUpdate era) - ) => - Spec -roundTripCoreEraTypesSpec = do - describe "Core Type Families" $ do - roundTripEraSpec @era @(Value era) - roundTripEraSpec @era @(CompactForm (Value era)) - roundTripEraSpec @era @(TxOut era) - roundTripEraSpec @era @(TxCert era) - roundTripEraSpec @era @(PParams era) - roundTripEraSpec @era @(PParamsUpdate era) - roundTripAnnEraSpec @era @(BootstrapWitness (EraCrypto era)) - roundTripAnnEraSpec @era @(Script era) - roundTripAnnEraSpec @era @(TxAuxData era) - roundTripAnnEraSpec @era @(TxWits era) - roundTripAnnEraSpec @era @(TxBody era) - roundTripAnnEraSpec @era @(Tx era) - describe "Core State Types" $ do - roundTripShareEraSpec @era @(SnapShots (EraCrypto era)) - roundTripShareEraTypeSpec @era @DState - roundTripShareEraTypeSpec @era @PState - roundTripShareEraTypeSpec @era @CommitteeState - roundTripShareEraTypeSpec @era @VState - roundTripShareEraTypeSpec @era @CertState - roundTripShareEraTypeSpec @era @UTxO - -data EraRuleProof era (rs :: [Symbol]) where - EraRuleProofEmpty :: EraRuleProof era '[] - EraRuleProofHead :: - ( Show (EraRuleFailure r era) - , Eq (EraRuleFailure r era) - , EncCBOR (EraRuleFailure r era) - , DecCBOR (EraRuleFailure r era) - , Arbitrary (EraRuleFailure r era) - , EraRuleFailure r era ~ PredicateFailure (EraRule r era) - ) => - Proxy r -> - EraRuleProof era xs -> - EraRuleProof era (r ': xs) - -class UnliftRules era (rs :: [Symbol]) where - unliftEraRuleProofs :: EraRuleProof era rs - -instance UnliftRules era '[] where - unliftEraRuleProofs = EraRuleProofEmpty - -instance - ( Show (EraRuleFailure r era) - , Eq (EraRuleFailure r era) - , EncCBOR (EraRuleFailure r era) - , DecCBOR (EraRuleFailure r era) - , Arbitrary (EraRuleFailure r era) - , EraRuleFailure r era ~ PredicateFailure (EraRule r era) - , UnliftRules era rs - ) => - UnliftRules era (r ': rs) - where - unliftEraRuleProofs = EraRuleProofHead Proxy unliftEraRuleProofs - -class - UnliftRules era (EraRules era) => - RuleListEra era - where - type EraRules era :: [Symbol] - -roundTripAllPredicateFailures :: - forall era. - ( RuleListEra era - , Era era - ) => - Spec -roundTripAllPredicateFailures = - describe "Predicate Failures" . go $ unliftEraRuleProofs @era @(EraRules era) - where - go :: EraRuleProof era rs' -> Spec - go EraRuleProofEmpty = pure () - go (EraRuleProofHead (Proxy :: Proxy r) x) = do - roundTripEraSpec @era @(EraRuleFailure r era) - go x diff --git a/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Core/JSON.hs b/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Core/JSON.hs deleted file mode 100644 index 67216014129..00000000000 --- a/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Core/JSON.hs +++ /dev/null @@ -1,60 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Core.JSON ( - roundTripJsonSpec, - roundTripJsonEraSpec, - roundTripJsonProperty, -) where - -import Cardano.Ledger.Core -import Data.Aeson (FromJSON, ToJSON, eitherDecode, encode) -import Data.Aeson.Encode.Pretty (encodePretty) -import qualified Data.ByteString.Lazy as BSL -import Data.Function ((&)) -import qualified Data.Text as T -import qualified Data.Text.Encoding as T -import Data.Typeable (Proxy (..), Typeable, typeRep) -import GHC.Stack -import Test.Cardano.Ledger.Common - --- | QuickCheck property spec that uses `roundTripJsonProperty` -roundTripJsonSpec :: - forall t. - (HasCallStack, Typeable t, Show t, Eq t, ToJSON t, FromJSON t, Arbitrary t) => - Spec -roundTripJsonSpec = - prop (show (typeRep $ Proxy @t)) $ roundTripJsonProperty @t - --- | Roundtrip JSON testing for types that implement ToJSON/FromJSON. -roundTripJsonProperty :: - forall t. - (HasCallStack, Show t, Eq t, ToJSON t, FromJSON t) => - t -> - Property -roundTripJsonProperty original = do - let encoded = encode original - encodedString = - "Encoded: \n " <> T.unpack (T.decodeUtf8 (BSL.toStrict (encodePretty original))) - case eitherDecode encoded of - Left err -> - property False - & counterexample ("Failed decoding: \n " <> err <> "\n" <> encodedString) - Right result -> - property (result `shouldBe` original) - & counterexample encodedString - --- | Roundtrip JSON testing for core type families. -roundTripJsonEraSpec :: - forall era. - ( HasCallStack - , EraPParams era - , Arbitrary (PParams era) - ) => - Spec -roundTripJsonEraSpec = - describe (eraName @era) $ do - describe "RoundTrip JSON" $ do - roundTripJsonSpec @(PParams era) diff --git a/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Core/KeyPair.hs b/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Core/KeyPair.hs deleted file mode 100644 index 026d6536929..00000000000 --- a/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Core/KeyPair.hs +++ /dev/null @@ -1,244 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} - -module Test.Cardano.Ledger.Core.KeyPair ( - mkAddr, - mkScriptAddr, - mkCred, - KeyPair (..), - KeyPairs, - mkWitnessVKey, - mkWitnessesVKey, - makeWitnessesFromScriptKeys, - mkKeyHashWitFunPair, - mkVKeyRewardAccount, - mkKeyPair, - mkKeyPairWithSeed, - mkKeyHash, - ByronKeyPair (..), - mkBootKeyPairWithSeed, - genByronVKeyAddr, - genByronAddrFromVKey, - - -- * Deprecations - mkVKeyRwdAcnt, -) -where - -import qualified Cardano.Chain.Common as Byron -import qualified Cardano.Crypto.DSIGN as DSIGN -import Cardano.Crypto.Hash (hashToBytes) -import qualified Cardano.Crypto.Hash as Hash -import Cardano.Crypto.Seed (mkSeedFromBytes) -import qualified Cardano.Crypto.Signing as Byron ( - SigningKey, - VerificationKey (..), - deterministicKeyGen, - ) -import Cardano.Ledger.Address -import Cardano.Ledger.BaseTypes (Network (Testnet)) -import qualified Cardano.Ledger.Binary.Plain as Plain -import Cardano.Ledger.Core -import Cardano.Ledger.Credential ( - Credential (..), - StakeReference (..), - ) -import Cardano.Ledger.Crypto -import Cardano.Ledger.Keys ( - DSignable, - HasKeyRole, - Hash, - KeyHash (..), - KeyRole (..), - VKey (..), - asWitness, - hashKey, - signedDSIGN, - ) -import Cardano.Ledger.Keys.WitVKey -import Cardano.Ledger.SafeHash (SafeHash, extractHash) -import Control.DeepSeq (NFData) -import Control.Exception (assert) -import qualified Data.ByteString as BS -import Data.Coerce (coerce) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Proxy -import Data.Set (Set) -import qualified Data.Set as Set -import GHC.Generics (Generic) -import NoThunks.Class (NoThunks (..)) -import System.Random.Stateful -import qualified Test.Cardano.Chain.Common.Gen as Byron -import qualified Test.Cardano.Crypto.Gen as Byron -import Test.Cardano.Ledger.Binary.Random (QC (..)) -import Test.QuickCheck -import Test.QuickCheck.Hedgehog (hedgehog) - -data KeyPair (kd :: KeyRole) c = KeyPair - { vKey :: !(VKey kd c) - , sKey :: !(DSIGN.SignKeyDSIGN (DSIGN c)) - } - deriving (Generic, Show) - --- | Representation of a list of pairs of key pairs, e.g., pay and stake keys -type KeyPairs c = [(KeyPair 'Payment c, KeyPair 'Staking c)] - -instance - ( Crypto c - , NFData (DSIGN.VerKeyDSIGN (DSIGN c)) - , NFData (DSIGN.SignKeyDSIGN (DSIGN c)) - ) => - NFData (KeyPair kd c) - -instance Crypto c => NoThunks (KeyPair kd c) - -instance HasKeyRole KeyPair - -instance Crypto c => Arbitrary (KeyPair kd c) where - arbitrary = uniformM QC - -instance Crypto c => Uniform (KeyPair kd c) where - uniformM g = - mkKeyPairWithSeed - <$> uniformByteStringM (fromIntegral (DSIGN.seedSizeDSIGN (Proxy @(DSIGN c)))) g - -mkAddr :: - Crypto c => - (KeyPair 'Payment c, KeyPair 'Staking c) -> - Addr c -mkAddr (payKey, stakeKey) = Addr Testnet (mkCred payKey) (StakeRefBase $ mkCred stakeKey) - -mkScriptAddr :: - Crypto c => - ScriptHash c -> - KeyPair 'Staking c -> - Addr c -mkScriptAddr scriptHash stakeKey = - Addr Testnet (ScriptHashObj scriptHash) (StakeRefBase $ mkCred stakeKey) - -mkCred :: - Crypto c => - KeyPair kr c -> - Credential kr c -mkCred k = KeyHashObj . hashKey $ vKey k - --- | Create a witness for transaction -mkWitnessVKey :: - forall c kr. - ( Crypto c - , DSignable c (Hash.Hash (HASH c) EraIndependentTxBody) - ) => - SafeHash c EraIndependentTxBody -> - KeyPair kr c -> - WitVKey 'Witness c -mkWitnessVKey safe keys = - WitVKey (asWitness $ vKey keys) (coerce $ signedDSIGN @c (sKey keys) (extractHash safe)) - --- | Create witnesses for transaction -mkWitnessesVKey :: - forall c kr. - ( Crypto c - , DSignable c (Hash.Hash (HASH c) EraIndependentTxBody) - ) => - SafeHash c EraIndependentTxBody -> - [KeyPair kr c] -> - Set (WitVKey 'Witness c) -mkWitnessesVKey safe xs = Set.fromList (fmap (mkWitnessVKey safe) xs) - --- | From a list of key pairs and a set of key hashes required for a multi-sig --- scripts, return the set of required keys. -makeWitnessesFromScriptKeys :: - (Crypto c, DSignable c (Hash c EraIndependentTxBody)) => - SafeHash c EraIndependentTxBody -> - Map (KeyHash kr c) (KeyPair kr c) -> - Set (KeyHash kr c) -> - Set (WitVKey 'Witness c) -makeWitnessesFromScriptKeys txbodyHash hashKeyMap scriptHashes = - let witKeys = Map.restrictKeys hashKeyMap scriptHashes - in mkWitnessesVKey txbodyHash (Map.elems witKeys) - --- | When wrting a test which needs a KeyHash, and you will also later need a witness --- for that function, use 'keyHashWitFunPair'. Since one cannot make a witness until --- one has SafeHash of the TxBody that the KeyHash is embedded. The second part of the --- pair is a (SafeHash to WitVKey) function. Use it something like this --- do (key,witfun) <- keyHashWitFunPair --- txbody <- ... key ... --- let safehash = hashAnnotated txbody --- tx = ... txbody ... (witfun safehash) ... -mkKeyHashWitFunPair :: - forall kr. - Gen - ( KeyHash kr StandardCrypto - , SafeHash StandardCrypto EraIndependentTxBody -> WitVKey 'Witness StandardCrypto - ) -mkKeyHashWitFunPair = do - keyPair@(KeyPair vk _) <- arbitrary @(KeyPair kr StandardCrypto) - pure (hashKey vk, \safehash -> mkWitnessVKey safehash keyPair) - -mkVKeyRewardAccount :: - Crypto c => - Network -> - KeyPair 'Staking c -> - RewardAccount c -mkVKeyRewardAccount network keys = RewardAccount network $ KeyHashObj (hashKey $ vKey keys) - -mkVKeyRwdAcnt :: - Crypto c => - Network -> - KeyPair 'Staking c -> - RewardAccount c -mkVKeyRwdAcnt = mkVKeyRewardAccount -{-# DEPRECATED mkVKeyRwdAcnt "Use `mkVKeyRewardAccount` instead" #-} - -mkKeyHash :: Crypto c => Int -> KeyHash kd c -mkKeyHash = hashKey . vKey . mkKeyPair - -mkKeyPair :: Crypto c => Int -> KeyPair r c -mkKeyPair = mkKeyPairWithSeed . Plain.serialize' - -mkKeyPairWithSeed :: forall r c. Crypto c => BS.ByteString -> KeyPair r c -mkKeyPairWithSeed inputSeed = assert (seedSize == 32) $ KeyPair vk sk - where - seedSize = DSIGN.seedSizeDSIGN (Proxy @(DSIGN c)) - vk = VKey (DSIGN.deriveVerKeyDSIGN sk) - sk = DSIGN.genKeyDSIGN $ mkSeedFromBytes $ ensure32ByteSeed inputSeed - -data ByronKeyPair = ByronKeyPair - { bkpVerificationKey :: !Byron.VerificationKey - , bkpSigningKey :: !Byron.SigningKey - } - deriving (Generic, Show) - -instance Arbitrary ByronKeyPair where - arbitrary = uniformM QC - -instance Uniform ByronKeyPair where - uniformM g = mkBootKeyPairWithSeed <$> uniformByteStringM 32 g - -mkBootKeyPairWithSeed :: BS.ByteString -> ByronKeyPair -mkBootKeyPairWithSeed = uncurry ByronKeyPair . Byron.deterministicKeyGen . ensure32ByteSeed - -ensure32ByteSeed :: BS.ByteString -> BS.ByteString -ensure32ByteSeed inputSeed - | BS.length inputSeed /= seedSize = - hashToBytes $ Hash.hashWith @Hash.Blake2b_256 id inputSeed - | otherwise = inputSeed - where - seedSize = 32 - -genByronVKeyAddr :: Gen (Byron.VerificationKey, Byron.Address) -genByronVKeyAddr = do - vkey <- hedgehog Byron.genVerificationKey - addr <- genByronAddrFromVKey vkey - pure (vkey, addr) - -genByronAddrFromVKey :: Byron.VerificationKey -> Gen Byron.Address -genByronAddrFromVKey vkey = - Byron.makeAddress (Byron.VerKeyASD vkey) <$> hedgehog Byron.genAddrAttributes diff --git a/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Core/Rational.hs b/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Core/Rational.hs deleted file mode 100644 index 815476abe2c..00000000000 --- a/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Core/Rational.hs +++ /dev/null @@ -1,42 +0,0 @@ -{-# LANGUAGE DefaultSignatures #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE ScopedTypeVariables #-} - -module Test.Cardano.Ledger.Core.Rational where - -import Cardano.Ledger.BaseTypes ( - BoundedRational (..), - NonNegativeInterval, - PositiveInterval, - PositiveUnitInterval, - UnitInterval, - boundRational, - ) -import Data.Maybe (fromMaybe) -import Data.Proxy (Proxy (..)) -import qualified Data.Ratio -import Data.Typeable (Typeable, typeRep) -import GHC.Stack (HasCallStack) - -unsafeBoundRational :: forall r. (HasCallStack, Typeable r, BoundedRational r) => Rational -> r -unsafeBoundRational x = fromMaybe (error errMessage) $ boundRational x - where - errMessage = show (typeRep (Proxy :: Proxy r)) <> " is out of bounds: " <> show x - --- | polymorphic rationals that agree with the Show instances of UnitInterval --- and friends. -class IsRatio r where - (%!) :: HasCallStack => Integer -> Integer -> r - default (%!) :: (HasCallStack, Typeable r, BoundedRational r) => Integer -> Integer -> r - n %! d = unsafeBoundRational $ n Data.Ratio.% d - -instance IsRatio UnitInterval - -instance IsRatio Rational where - (%!) = (Data.Ratio.%) - -instance IsRatio NonNegativeInterval - -instance IsRatio PositiveInterval - -instance IsRatio PositiveUnitInterval diff --git a/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Core/Utils.hs b/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Core/Utils.hs deleted file mode 100644 index 3e1da11f6f9..00000000000 --- a/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Core/Utils.hs +++ /dev/null @@ -1,53 +0,0 @@ -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Core.Utils ( - unsafeBoundRational, - testGlobals, - mkDummySafeHash, - txInAt, -) -where - -import Cardano.Ledger.BaseTypes ( - EpochSize (..), - Globals (..), - Network (..), - mkActiveSlotCoeff, - ) -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto (Crypto (..)) -import Cardano.Ledger.SafeHash (SafeHash, unsafeMakeSafeHash) -import Cardano.Ledger.TxIn (TxIn, mkTxInPartial) -import Cardano.Slotting.EpochInfo (fixedEpochInfo) -import Cardano.Slotting.Time (SystemStart (..), mkSlotLength) -import Data.Data (Proxy) -import Data.Time.Clock.POSIX (posixSecondsToUTCTime) -import Test.Cardano.Ledger.Binary.Random (mkDummyHash) -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Core.Rational (unsafeBoundRational) - -testGlobals :: Globals -testGlobals = - Globals - { epochInfo = fixedEpochInfo (EpochSize 100) (mkSlotLength 1) - , slotsPerKESPeriod = 20 - , stabilityWindow = 33 - , randomnessStabilisationWindow = 33 - , securityParameter = 10 - , maxKESEvo = 10 - , quorum = 5 - , maxMajorPV = maxBound - , maxLovelaceSupply = 45 * 1000 * 1000 * 1000 * 1000 * 1000 - , activeSlotCoeff = mkActiveSlotCoeff . unsafeBoundRational $ 0.9 - , networkId = Testnet - , systemStart = SystemStart $ posixSecondsToUTCTime 0 - } - -mkDummySafeHash :: forall c a. Crypto c => Proxy c -> Int -> SafeHash c a -mkDummySafeHash _ = unsafeMakeSafeHash . mkDummyHash @(HASH c) - -txInAt :: (HasCallStack, Integral i, EraTx era) => i -> Tx era -> TxIn (EraCrypto era) -txInAt index tx = - let txid = txIdTx tx - in mkTxInPartial txid (toInteger index) diff --git a/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Imp/Common.hs b/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Imp/Common.hs deleted file mode 100644 index 59b3f2cabbd..00000000000 --- a/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Imp/Common.hs +++ /dev/null @@ -1,438 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE FunctionalDependencies #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Imp.Common ( - module X, - io, - - -- * Expectations - - -- ** Lifted expectations - assertBool, - assertFailure, - expectationFailure, - shouldBe, - shouldSatisfy, - shouldSatisfyExpr, - shouldStartWith, - shouldEndWith, - shouldContain, - shouldMatchList, - shouldReturn, - shouldNotBe, - shouldNotSatisfy, - shouldNotContain, - shouldNotReturn, - shouldThrow, - - -- ** Non-standard expectations - shouldBeExpr, - shouldBeRight, - shouldBeLeft, - shouldBeRightExpr, - shouldBeLeftExpr, - shouldContainExpr, - expectRight, - expectRightDeep_, - expectRightDeep, - expectRightExpr, - expectRightDeepExpr, - expectLeft, - expectLeftDeep_, - expectLeftExpr, - expectLeftDeep, - expectLeftDeepExpr, - expectJust, - expectNothingExpr, - - -- * MonadGen - module QuickCheckT, - arbitrary, - -- TODO: add here any other lifted functions from quickcheck - - -- * Random interface - HasStatefulGen (..), - HasGenEnv (..), - HasSubState (..), - R.StatefulGen, - StateGen (..), - StateGenM (..), - uniformM, - uniformRM, - uniformListM, - uniformListRM, - uniformByteStringM, - uniformShortByteStringM, -) -where - -import Control.Monad.IO.Class -import Test.Cardano.Ledger.Binary.TreeDiff (expectExprEqualWithMessage) -import Test.Cardano.Ledger.Common as X hiding ( - arbitrary, - assertBool, - assertFailure, - choose, - elements, - expectLeft, - expectLeftDeep, - expectLeftDeepExpr, - expectLeftDeep_, - expectLeftExpr, - expectRight, - expectRightDeep, - expectRightDeepExpr, - expectRightDeep_, - expectRightExpr, - expectationFailure, - frequency, - growingElements, - listOf, - listOf1, - oneof, - resize, - shouldBe, - shouldBeExpr, - shouldBeLeft, - shouldBeLeftExpr, - shouldBeRight, - shouldBeRightExpr, - shouldContain, - shouldEndWith, - shouldMatchList, - shouldNotBe, - shouldNotContain, - shouldNotReturn, - shouldNotSatisfy, - shouldReturn, - shouldSatisfy, - shouldStartWith, - shouldThrow, - sized, - suchThat, - suchThatMaybe, - variant, - vectorOf, - ) -import qualified Test.Cardano.Ledger.Common as H -import Test.QuickCheck.GenT as QuickCheckT -import UnliftIO (MonadUnliftIO (..)) -import UnliftIO.Exception (Exception, evaluateDeep) - --- Imports needed for Random interface. Separated from the rest, since they will migrate --- to `random` at a later point: - -import Control.Monad.Reader -import Control.Monad.State -import Data.ByteString (ByteString) -import Data.ByteString.Short (ShortByteString) -import Data.Kind -import Data.List (isInfixOf) -import Foreign.Storable -import qualified System.Random.Stateful as R - -instance MonadUnliftIO m => MonadUnliftIO (GenT m) where - withRunInIO inner = GenT $ \qc sz -> - withRunInIO $ \run -> inner $ \(GenT f) -> run (f qc sz) - -infix 1 `shouldBe` - , `shouldBeExpr` - , `shouldSatisfy` - , `shouldStartWith` - , `shouldEndWith` - , `shouldContain` - , `shouldMatchList` - , `shouldReturn` - , `shouldThrow` - , `shouldNotBe` - , `shouldNotSatisfy` - , `shouldNotContain` - , `shouldNotReturn` - , `shouldBeRight` - , `shouldBeRightExpr` - , `shouldBeLeft` - , `shouldBeLeftExpr` - --- | Enforce the type of expectation --- --- Useful with polymorphic expectations that are defined below. --- --- ===__Example__ --- --- Because `shouldBeExpr` is polymorphic in `m`, compiler will choke with a unification --- error. This is due to the fact that hspec's `it` expects a polymorphic `Example`. --- --- > it "MyTest" $ do --- > "foo" `shouldBeExpr` "bar" --- --- However, this is easily solved by `io`: --- --- > it "MyTest" $ io $ do --- > "foo" `shouldBeExpr` "bar" -io :: IO a -> IO a -io = id - --- | Just like `expectationFailure`, but does not force the return type to unit. Lifted --- version of `H.assertFailure` -assertFailure :: (HasCallStack, MonadIO m) => String -> m a -assertFailure = liftIO . H.assertFailure - --- | Just like `expectationBool`, but does not force the return type to unit. Lifted --- version of `H.assertBool` -assertBool :: (HasCallStack, MonadIO m) => String -> Bool -> m () -assertBool msg = liftIO . H.assertBool msg - --- | Lifted version of `expectationFailure`. -expectationFailure :: (HasCallStack, MonadIO m) => String -> m () -expectationFailure = liftIO . H.expectationFailure - --- | Lifted version of `H.shouldBe`. -shouldBe :: (HasCallStack, Show a, Eq a, MonadIO m) => a -> a -> m () -shouldBe x y = liftIO $ H.shouldBe x y - -shouldBeExpr :: (HasCallStack, ToExpr a, Eq a, MonadIO m) => a -> a -> m () -shouldBeExpr expected actual = liftIO $ expectExprEqualWithMessage "" expected actual - --- | Lifted version of `H.shouldSatisfy`. -shouldSatisfy :: (HasCallStack, Show a, MonadIO m) => a -> (a -> Bool) -> m () -shouldSatisfy x f = liftIO $ H.shouldSatisfy x f - -shouldSatisfyExpr :: (HasCallStack, MonadIO m, ToExpr a) => a -> (a -> Bool) -> m () -shouldSatisfyExpr x f - | f x = pure () - | otherwise = assertFailure $ "predicate failed on:\n" <> showExpr x - --- | Lifted version of `H.shouldStartWith`. -shouldStartWith :: (HasCallStack, Show a, Eq a, MonadIO m) => [a] -> [a] -> m () -shouldStartWith x y = liftIO $ H.shouldStartWith x y - --- | Lifted version of `H.shouldEndWith`. -shouldEndWith :: (HasCallStack, Show a, Eq a, MonadIO m) => [a] -> [a] -> m () -shouldEndWith x y = liftIO $ H.shouldEndWith x y - --- | Lifted version of `H.shouldContain`. -shouldContain :: (HasCallStack, Show a, Eq a, MonadIO m) => [a] -> [a] -> m () -shouldContain x y = liftIO $ H.shouldContain x y - -shouldContainExpr :: (HasCallStack, ToExpr a, Eq a, MonadIO m) => [a] -> [a] -> m () -shouldContainExpr x y - | y `isInfixOf` x = pure () - | otherwise = - assertFailure $ - "First list does not contain the second list:\n" - <> showExpr x - <> "\ndoes not contain\n" - <> showExpr y - --- | Lifted version of `H.shouldMatchList`. -shouldMatchList :: (HasCallStack, Show a, Eq a, MonadIO m) => [a] -> [a] -> m () -shouldMatchList x y = liftIO $ H.shouldMatchList x y - --- | Lifted version of `H.shouldReturn`. -shouldReturn :: (HasCallStack, Show a, Eq a, MonadUnliftIO m) => m a -> a -> m () -shouldReturn f a = withRunInIO $ \run -> H.shouldReturn (run f) a - --- | Lifted version of `H.shouldNotBe`. -shouldNotBe :: (HasCallStack, Show a, Eq a, MonadIO m) => a -> a -> m () -shouldNotBe x y = liftIO $ H.shouldNotBe x y - --- | Lifted version of `H.shouldNotSatisfy`. -shouldNotSatisfy :: (HasCallStack, Show a, MonadIO m) => a -> (a -> Bool) -> m () -shouldNotSatisfy a f = liftIO $ H.shouldNotSatisfy a f - --- | Lifted version of `H.shouldNotContain`. -shouldNotContain :: (HasCallStack, Show a, Eq a, MonadIO m) => [a] -> [a] -> m () -shouldNotContain x y = liftIO $ H.shouldNotContain x y - --- | Lifted version of `H.shouldNotReturn`. -shouldNotReturn :: (HasCallStack, Show a, Eq a, MonadUnliftIO m) => m a -> a -> m () -shouldNotReturn f a = withRunInIO $ \run -> H.shouldNotReturn (run f) a - --- | Lifted version of `shouldThrow`. -shouldThrow :: (HasCallStack, Exception e, MonadUnliftIO m) => m a -> Selector e -> m () -shouldThrow f s = withRunInIO $ \run -> H.shouldThrow (run f) s - --- | Return value on the `Right` and fail otherwise. Lifted version of `H.expectRight`. -expectRight :: (HasCallStack, Show a, MonadIO m) => Either a b -> m b -expectRight (Right r) = pure $! r -expectRight (Left l) = assertFailure $ "Expected Right, got Left:\n" <> show l - --- | Same as `expectRightDeep`, but discards the result -expectRightDeep_ :: (HasCallStack, Show a, NFData b, MonadIO m) => Either a b -> m () -expectRightDeep_ = void . expectRightDeep - --- | Same as `expectRight`, but also evaluate the returned value to NF -expectRightDeep :: (HasCallStack, Show a, NFData b, MonadIO m) => Either a b -> m b -expectRightDeep = expectRight >=> evaluateDeep - --- | Same as `expectRight`, but use `ToExpr` instead of `Show` -expectRightExpr :: (HasCallStack, ToExpr a, MonadIO m) => Either a b -> m b -expectRightExpr (Right r) = pure $! r -expectRightExpr (Left l) = assertFailure $ "Expected Right, got Left:\n" <> showExpr l - --- | Same as `expectRightDeep`, but use `ToExpr` instead of `Show` -expectRightDeepExpr :: (HasCallStack, ToExpr a, NFData b, MonadIO m) => Either a b -> m b -expectRightDeepExpr = expectRightExpr >=> evaluateDeep - --- | Same as `shouldBe`, except it checks that the value is `Right` -shouldBeRight :: (HasCallStack, Show a, Show b, Eq b, MonadIO m) => Either a b -> b -> m () -shouldBeRight e x = expectRight e >>= (`shouldBe` x) - --- | Same as `shouldBeExpr`, except it checks that the value is `Right` -shouldBeRightExpr :: (HasCallStack, ToExpr a, Eq b, ToExpr b, MonadIO m) => Either a b -> b -> m () -shouldBeRightExpr e x = expectRightExpr e >>= (`shouldBeExpr` x) - --- | Return value on the `Left` and fail otherwise -expectLeft :: (HasCallStack, Show b, MonadIO m) => Either a b -> m a -expectLeft (Left l) = pure $! l -expectLeft (Right r) = assertFailure $ "Expected Left, got Right:\n" <> show r - --- | Same as `expectLeftDeep`, but discards the result -expectLeftDeep_ :: (HasCallStack, MonadIO m, Show b, NFData a) => Either a b -> m () -expectLeftDeep_ = void . expectLeftDeep - --- | Same as `expectLeft`, but also evaluate the returned value to NF -expectLeftDeep :: (HasCallStack, NFData a, Show b, MonadIO m) => Either a b -> m a -expectLeftDeep = expectLeft >=> evaluateDeep - --- | Same as `expectLeft`, but use `ToExpr` instead of `Show` -expectLeftExpr :: (HasCallStack, ToExpr b, MonadIO m) => Either a b -> m a -expectLeftExpr (Left l) = pure $! l -expectLeftExpr (Right r) = assertFailure $ "Expected Left, got Right:\n" <> showExpr r - --- | Same as `expectLeftDeep`, but use `ToExpr` instead of `Show` -expectLeftDeepExpr :: (HasCallStack, ToExpr b, NFData a, MonadIO m) => Either a b -> m a -expectLeftDeepExpr = expectLeftExpr >=> evaluateDeep - --- | Same as `shouldBe`, except it checks that the value is `Left` -shouldBeLeft :: (HasCallStack, Show a, Eq a, Show b, MonadIO m) => Either a b -> a -> m () -shouldBeLeft e x = expectLeft e >>= (`shouldBe` x) - --- | Same as `shouldBeExpr`, except it checks that the value is `Left` -shouldBeLeftExpr :: (HasCallStack, ToExpr a, ToExpr b, Eq a, MonadIO m) => Either a b -> a -> m () -shouldBeLeftExpr e x = expectLeftExpr e >>= (`shouldBeExpr` x) - -expectJust :: (HasCallStack, MonadIO m) => Maybe a -> m a -expectJust (Just x) = pure x -expectJust Nothing = assertFailure "Expected Just, got Nothing" - -expectNothingExpr :: (HasCallStack, MonadIO m, ToExpr a) => Maybe a -> m () -expectNothingExpr (Just x) = - assertFailure $ - "Expected Nothing, got Just:\n" <> showExpr x -expectNothingExpr Nothing = pure () - ---------------------------- --- MonadGen alternatives -- ---------------------------- - -arbitrary :: (Arbitrary a, MonadGen m) => m a -arbitrary = liftGen H.arbitrary - ---------------------------------------------------------------------------- --- This interface will be defined in the next major version of `random` --- ---------------------------------------------------------------------------- - -class R.StatefulGen g m => HasStatefulGen g m | m -> g where - askStatefulGen :: m g - -class HasGenEnv env g | env -> g where - getGenEnv :: env -> g - -instance - (HasGenEnv env g, R.StatefulGen g (ReaderT env m), Monad m) => - HasStatefulGen g (ReaderT env m) - where - askStatefulGen = getGenEnv <$> ask - -class HasSubState s where - type SubState s :: Type - getSubState :: s -> SubState s - setSubState :: s -> SubState s -> s - -uniformM :: - ( HasStatefulGen g m - , R.Uniform a - ) => - m a -uniformM = askStatefulGen >>= R.uniformM -{-# INLINE uniformM #-} - -uniformRM :: - ( HasStatefulGen g m - , R.UniformRange a - ) => - (a, a) -> - m a -uniformRM r = askStatefulGen >>= R.uniformRM r -{-# INLINE uniformRM #-} - -uniformListM :: - ( HasStatefulGen g m - , R.Uniform a - ) => - Int -> - m [a] -uniformListM n = askStatefulGen >>= R.uniformListM n -{-# INLINE uniformListM #-} - -uniformListRM :: - ( HasStatefulGen g m - , R.UniformRange a - ) => - (a, a) -> - Int -> - m [a] -uniformListRM r n = askStatefulGen >>= replicateM n . R.uniformRM r -{-# INLINE uniformListRM #-} - -uniformByteStringM :: HasStatefulGen a m => Int -> m ByteString -uniformByteStringM n = askStatefulGen >>= R.uniformByteStringM n -{-# INLINE uniformByteStringM #-} - -uniformShortByteStringM :: HasStatefulGen a m => Int -> m ShortByteString -uniformShortByteStringM n = askStatefulGen >>= R.uniformShortByteString n -{-# INLINE uniformShortByteStringM #-} - -data StateGenM s = StateGenM - -newtype StateGen s = StateGen {unStateGen :: s} - deriving (Eq, Ord, Show, R.RandomGen, Storable, NFData) - -instance HasSubState (StateGen g) where - type SubState (StateGen g) = g - getSubState (StateGen g) = g - {-# INLINE getSubState #-} - setSubState _ g = (StateGen g) - {-# INLINE setSubState #-} - -subState :: (HasSubState s, MonadState s m) => (SubState s -> (a, SubState s)) -> m a -subState f = state $ \s -> - case f (getSubState s) of - (a, g) -> (a, setSubState s g) -{-# INLINE subState #-} - -instance - (HasSubState s, R.RandomGen (SubState s), MonadState s m) => - R.StatefulGen (StateGenM s) m - where - uniformWord32R r _ = subState (R.genWord32R r) - {-# INLINE uniformWord32R #-} - uniformWord64R r _ = subState (R.genWord64R r) - {-# INLINE uniformWord64R #-} - uniformWord8 _ = subState R.genWord8 - {-# INLINE uniformWord8 #-} - uniformWord16 _ = subState R.genWord16 - {-# INLINE uniformWord16 #-} - uniformWord32 _ = subState R.genWord32 - {-# INLINE uniformWord32 #-} - uniformWord64 _ = subState R.genWord64 - {-# INLINE uniformWord64 #-} - uniformShortByteString n _ = subState (R.genShortByteString n) - {-# INLINE uniformShortByteString #-} diff --git a/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Plutus.hs b/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Plutus.hs deleted file mode 100644 index 81df8a343e7..00000000000 --- a/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Plutus.hs +++ /dev/null @@ -1,122 +0,0 @@ -{-# LANGUAGE GADTs #-} -{-# LANGUAGE LambdaCase #-} - -module Test.Cardano.Ledger.Plutus ( - PlutusArgs (..), - ScriptTestContext (..), - - -- * Plutus - alwaysSucceedsPlutus, - alwaysFailsPlutus, - - -- * CostModel - mkCostModelConst, - zeroTestingCostModel, - zeroTestingCostModelV1, - zeroTestingCostModelV2, - zeroTestingCostModelV3, - testingCostModel, - testingCostModelV1, - testingCostModelV2, - testingCostModelV3, - testingEvaluationContext, - - -- * CostModels - testingCostModels, - zeroTestingCostModels, -) where - -import Cardano.Ledger.Plutus.CostModels ( - CostModel, - CostModels, - getCostModelEvaluationContext, - mkCostModel, - mkCostModels, - ) -import Cardano.Ledger.Plutus.Language ( - Language (..), - Plutus (..), - PlutusBinary (..), - ) -import qualified Data.Map.Strict as Map -import GHC.Stack -import Numeric.Natural (Natural) -import qualified PlutusLedgerApi.Test.Examples as P ( - alwaysFailingNAryFunction, - alwaysSucceedingNAryFunction, - ) -import qualified PlutusLedgerApi.Test.V1.EvaluationContext as PV1 -import qualified PlutusLedgerApi.Test.V2.EvaluationContext as PV2 -import qualified PlutusLedgerApi.Test.V3.EvaluationContext as PV3 -import PlutusLedgerApi.V1 as PV1 -import Test.Cardano.Ledger.Plutus.ScriptTestContext ( - PlutusArgs (..), - ScriptTestContext (..), - ) - --- | Construct a test cost model where all parameters are set to the same value -mkCostModelConst :: HasCallStack => Language -> Integer -> CostModel -mkCostModelConst lang x = - case lang of - PlutusV1 -> mkCostModel' lang (x <$ PV1.costModelParamsForTesting) - PlutusV2 -> mkCostModel' lang (x <$ PV2.costModelParamsForTesting) - PlutusV3 -> mkCostModel' lang (x <$ PV3.costModelParamsForTesting) - -mkCostModel' :: HasCallStack => Language -> [Integer] -> CostModel -mkCostModel' lang params = - case mkCostModel lang params of - Left err -> - error $ - "Number of CostModel parameters " - ++ show (length params) - ++ " is not well-formed for " - ++ show lang - ++ ": " - ++ show err - Right costModel -> costModel - --- | Test CostModels for all available languages with zero values for all parameters -zeroTestingCostModels :: HasCallStack => [Language] -> CostModels -zeroTestingCostModels = - foldMap $ \lang -> mkCostModels (Map.singleton lang (zeroTestingCostModel lang)) - -zeroTestingCostModel :: HasCallStack => Language -> CostModel -zeroTestingCostModel lang = mkCostModelConst lang 0 - -zeroTestingCostModelV1 :: HasCallStack => CostModel -zeroTestingCostModelV1 = zeroTestingCostModel PlutusV1 - -zeroTestingCostModelV2 :: HasCallStack => CostModel -zeroTestingCostModelV2 = zeroTestingCostModel PlutusV2 - -zeroTestingCostModelV3 :: HasCallStack => CostModel -zeroTestingCostModelV3 = zeroTestingCostModel PlutusV3 - --- | Test CostModels for all available languages -testingCostModels :: HasCallStack => [Language] -> CostModels -testingCostModels = - foldMap $ \lang -> mkCostModels (Map.singleton lang (testingCostModel lang)) - -testingCostModel :: HasCallStack => Language -> CostModel -testingCostModel = \case - PlutusV1 -> testingCostModelV1 - PlutusV2 -> testingCostModelV2 - PlutusV3 -> testingCostModelV3 - -testingCostModelV1 :: HasCallStack => CostModel -testingCostModelV1 = mkCostModel' PlutusV1 $ snd <$> PV1.costModelParamsForTesting - -testingCostModelV2 :: HasCallStack => CostModel -testingCostModelV2 = mkCostModel' PlutusV2 $ snd <$> PV2.costModelParamsForTesting - -testingCostModelV3 :: HasCallStack => CostModel -testingCostModelV3 = mkCostModel' PlutusV3 $ snd <$> PV3.costModelParamsForTesting - -testingEvaluationContext :: Language -> PV1.EvaluationContext -testingEvaluationContext = getCostModelEvaluationContext . testingCostModel - -alwaysSucceedsPlutus :: Natural -> Plutus l -alwaysSucceedsPlutus n = Plutus (PlutusBinary (P.alwaysSucceedingNAryFunction n)) - -alwaysFailsPlutus :: Natural -> Plutus l -alwaysFailsPlutus n = Plutus (PlutusBinary (P.alwaysFailingNAryFunction n)) diff --git a/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Plutus/Examples.hs b/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Plutus/Examples.hs deleted file mode 100644 index 7e693ffc9f1..00000000000 --- a/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Plutus/Examples.hs +++ /dev/null @@ -1,883 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE LambdaCase #-} - --- | This file is generated by "plutus-preprocessor:plutus-preprocessor" -module Test.Cardano.Ledger.Plutus.Examples where - -import Cardano.Ledger.Plutus.Language (Plutus (..), PlutusBinary (..), SLanguage (..)) -import Data.ByteString.Short (pack) - -{- Preproceesed Plutus Script -alwaysSucceeds'2_0 :: PlutusTx.Builtins.Internal.BuiltinData -> - PlutusTx.Builtins.Internal.BuiltinData -> () -alwaysSucceeds'2_0 _ _ = GHC.Tuple.Prim.() --} - -alwaysSucceeds2 :: SLanguage l -> Plutus l -alwaysSucceeds2 = - Plutus - . PlutusBinary - . pack - . ( \case - SPlutusV1 -> [71, 1, 0, 0, 34, 18, 0, 17] - SPlutusV2 -> [71, 1, 0, 0, 34, 18, 0, 17] - SPlutusV3 -> [70, 1, 1, 0, 34, 128, 1] - ) - -{- Preproceesed Plutus Script -alwaysSucceeds'3_0 :: PlutusTx.Builtins.Internal.BuiltinData -> - PlutusTx.Builtins.Internal.BuiltinData -> - PlutusTx.Builtins.Internal.BuiltinData -> () -alwaysSucceeds'3_0 _ _ _ = GHC.Tuple.Prim.() --} - -alwaysSucceeds3 :: SLanguage l -> Plutus l -alwaysSucceeds3 = - Plutus - . PlutusBinary - . pack - . ( \case - SPlutusV1 -> [72, 1, 0, 0, 34, 33, 32, 1, 1] - SPlutusV2 -> [72, 1, 0, 0, 34, 33, 32, 1, 1] - SPlutusV3 -> [71, 1, 1, 0, 34, 40, 0, 1] - ) - -{- Preproceesed Plutus Script -alwaysFails'2_0 :: PlutusTx.Builtins.Internal.BuiltinData -> - PlutusTx.Builtins.Internal.BuiltinData -> () -alwaysFails'2_0 _ _ = PlutusTx.Builtins.error GHC.Tuple.Prim.() --} - -alwaysFails2 :: SLanguage l -> Plutus l -alwaysFails2 = - Plutus - . PlutusBinary - . pack - . ( \case - SPlutusV1 -> [69, 1, 0, 0, 34, 97] - SPlutusV2 -> [69, 1, 0, 0, 34, 97] - SPlutusV3 -> [69, 1, 1, 0, 34, 97] - ) - -{- Preproceesed Plutus Script -alwaysFails'3_0 :: PlutusTx.Builtins.Internal.BuiltinData -> - PlutusTx.Builtins.Internal.BuiltinData -> - PlutusTx.Builtins.Internal.BuiltinData -> () -alwaysFails'3_0 _ _ _ = PlutusTx.Builtins.error GHC.Tuple.Prim.() --} - -alwaysFails3 :: SLanguage l -> Plutus l -alwaysFails3 = - Plutus - . PlutusBinary - . pack - . ( \case - SPlutusV1 -> [70, 1, 0, 0, 34, 38, 1] - SPlutusV2 -> [70, 1, 0, 0, 34, 38, 1] - SPlutusV3 -> [70, 1, 1, 0, 34, 38, 1] - ) - -{- Preproceesed Plutus Script -guessTheNumber'2_0 :: PlutusTx.Builtins.Internal.BuiltinData -> - PlutusTx.Builtins.Internal.BuiltinData -> () -guessTheNumber'2_0 d1_1 d2_2 = if d1_1 PlutusTx.Eq.== d2_2 - then GHC.Tuple.Prim.() - else PlutusTx.Builtins.error GHC.Tuple.Prim.() --} - -guessTheNumber2 :: SLanguage l -> Plutus l -guessTheNumber2 = - Plutus - . PlutusBinary - . pack - . ( \case - SPlutusV1 -> [82, 1, 0, 0, 34, 83, 51, 87, 52, 102, 235, 192, 8, 0, 68, 72, 0, 69, 129] - SPlutusV2 -> [82, 1, 0, 0, 34, 83, 51, 87, 52, 102, 235, 192, 8, 0, 68, 72, 0, 69, 129] - SPlutusV3 -> [81, 1, 1, 0, 34, 83, 51, 87, 52, 102, 235, 192, 8, 0, 70, 0, 2, 193] - ) - -{- Preproceesed Plutus Script -guessTheNumber'3_0 :: PlutusTx.Builtins.Internal.BuiltinData -> - PlutusTx.Builtins.Internal.BuiltinData -> - PlutusTx.Builtins.Internal.BuiltinData -> () -guessTheNumber'3_0 d1_1 d2_2 _d3_3 = if d1_1 PlutusTx.Eq.== d2_2 - then GHC.Tuple.Prim.() - else PlutusTx.Builtins.error GHC.Tuple.Prim.() --} - -guessTheNumber3 :: SLanguage l -> Plutus l -guessTheNumber3 = - Plutus - . PlutusBinary - . pack - . ( \case - SPlutusV1 -> [82, 1, 0, 0, 34, 37, 51, 53, 115, 70, 110, 188, 0, 192, 8, 68, 128, 4, 89] - SPlutusV2 -> [82, 1, 0, 0, 34, 37, 51, 53, 115, 70, 110, 188, 0, 192, 8, 68, 128, 4, 89] - SPlutusV3 -> [81, 1, 1, 0, 34, 37, 51, 53, 115, 70, 110, 188, 0, 192, 8, 96, 0, 45] - ) - -{- Preproceesed Plutus Script -evendata'_0 :: PlutusTx.Builtins.Internal.BuiltinData -> - PlutusTx.Builtins.Internal.BuiltinData -> - PlutusTx.Builtins.Internal.BuiltinData -> () -evendata'_0 d1_1 _d2_2 _d3_3 = let n_4 = PlutusTx.Builtins.unsafeDataAsI d1_1 - in if PlutusTx.Prelude.modulo n_4 2 PlutusTx.Eq.== 0 - then GHC.Tuple.Prim.() - else PlutusTx.Builtins.error GHC.Tuple.Prim.() --} - -evendata3 :: SLanguage l -> Plutus l -evendata3 = - Plutus - . PlutusBinary - . pack - . ( \case - SPlutusV1 -> - [ 88 - , 26 - , 1 - , 0 - , 0 - , 34 - , 37 - , 51 - , 53 - , 115 - , 70 - , 110 - , 29 - , 32 - , 0 - , 51 - , 112 - , 198 - , 235 - , 64 - , 13 - , 32 - , 4 - , 17 - , 32 - , 1 - , 22 - , 1 - ] - SPlutusV2 -> - [ 88 - , 26 - , 1 - , 0 - , 0 - , 34 - , 37 - , 51 - , 53 - , 115 - , 70 - , 110 - , 29 - , 32 - , 0 - , 51 - , 112 - , 198 - , 235 - , 64 - , 13 - , 32 - , 4 - , 17 - , 32 - , 1 - , 22 - , 1 - ] - SPlutusV3 -> - [ 88 - , 25 - , 1 - , 1 - , 0 - , 34 - , 37 - , 51 - , 53 - , 115 - , 70 - , 110 - , 29 - , 32 - , 0 - , 51 - , 112 - , 198 - , 235 - , 64 - , 13 - , 32 - , 4 - , 24 - , 0 - , 11 - , 1 - ] - ) - -{- Preproceesed Plutus Script -odddata'_0 :: PlutusTx.Builtins.Internal.BuiltinData -> - PlutusTx.Builtins.Internal.BuiltinData -> - PlutusTx.Builtins.Internal.BuiltinData -> () -odddata'_0 d1_1 _d2_2 _d3_3 = let n_4 = PlutusTx.Builtins.unsafeDataAsI d1_1 - in if PlutusTx.Prelude.modulo n_4 2 PlutusTx.Eq.== 1 - then GHC.Tuple.Prim.() - else PlutusTx.Builtins.error GHC.Tuple.Prim.() --} - -odddata3 :: SLanguage l -> Plutus l -odddata3 = - Plutus - . PlutusBinary - . pack - . ( \case - SPlutusV1 -> - [ 88 - , 26 - , 1 - , 0 - , 0 - , 34 - , 37 - , 51 - , 53 - , 115 - , 70 - , 110 - , 29 - , 32 - , 2 - , 51 - , 112 - , 198 - , 235 - , 64 - , 13 - , 32 - , 4 - , 17 - , 32 - , 1 - , 22 - , 1 - ] - SPlutusV2 -> - [ 88 - , 26 - , 1 - , 0 - , 0 - , 34 - , 37 - , 51 - , 53 - , 115 - , 70 - , 110 - , 29 - , 32 - , 2 - , 51 - , 112 - , 198 - , 235 - , 64 - , 13 - , 32 - , 4 - , 17 - , 32 - , 1 - , 22 - , 1 - ] - SPlutusV3 -> - [ 88 - , 25 - , 1 - , 1 - , 0 - , 34 - , 37 - , 51 - , 53 - , 115 - , 70 - , 110 - , 29 - , 32 - , 2 - , 51 - , 112 - , 198 - , 235 - , 64 - , 13 - , 32 - , 4 - , 24 - , 0 - , 11 - , 1 - ] - ) - -{- Preproceesed Plutus Script -evenRedeemer'_0 :: PlutusTx.Builtins.Internal.BuiltinData -> - PlutusTx.Builtins.Internal.BuiltinData -> - PlutusTx.Builtins.Internal.BuiltinData -> () -evenRedeemer'_0 _d1_1 d2_2 _d3_3 = let n_4 = PlutusTx.Builtins.unsafeDataAsI d2_2 - in if PlutusTx.Prelude.modulo n_4 2 PlutusTx.Eq.== 0 - then GHC.Tuple.Prim.() - else PlutusTx.Builtins.error GHC.Tuple.Prim.() --} - -evenRedeemer3 :: SLanguage l -> Plutus l -evenRedeemer3 = - Plutus - . PlutusBinary - . pack - . ( \case - SPlutusV1 -> - [ 88 - , 26 - , 1 - , 0 - , 0 - , 34 - , 37 - , 51 - , 53 - , 115 - , 70 - , 110 - , 29 - , 32 - , 0 - , 51 - , 112 - , 198 - , 235 - , 64 - , 9 - , 32 - , 4 - , 17 - , 32 - , 1 - , 22 - , 1 - ] - SPlutusV2 -> - [ 88 - , 26 - , 1 - , 0 - , 0 - , 34 - , 37 - , 51 - , 53 - , 115 - , 70 - , 110 - , 29 - , 32 - , 0 - , 51 - , 112 - , 198 - , 235 - , 64 - , 9 - , 32 - , 4 - , 17 - , 32 - , 1 - , 22 - , 1 - ] - SPlutusV3 -> - [ 88 - , 25 - , 1 - , 1 - , 0 - , 34 - , 37 - , 51 - , 53 - , 115 - , 70 - , 110 - , 29 - , 32 - , 0 - , 51 - , 112 - , 198 - , 235 - , 64 - , 9 - , 32 - , 4 - , 24 - , 0 - , 11 - , 1 - ] - ) - -{- Preproceesed Plutus Script -oddRedeemer'_0 :: PlutusTx.Builtins.Internal.BuiltinData -> - PlutusTx.Builtins.Internal.BuiltinData -> - PlutusTx.Builtins.Internal.BuiltinData -> () -oddRedeemer'_0 _d1_1 d2_2 _d3_3 = let n_4 = PlutusTx.Builtins.unsafeDataAsI d2_2 - in if PlutusTx.Prelude.modulo n_4 2 PlutusTx.Eq.== 1 - then GHC.Tuple.Prim.() - else PlutusTx.Builtins.error GHC.Tuple.Prim.() --} - -oddRedeemer3 :: SLanguage l -> Plutus l -oddRedeemer3 = - Plutus - . PlutusBinary - . pack - . ( \case - SPlutusV1 -> - [ 88 - , 26 - , 1 - , 0 - , 0 - , 34 - , 37 - , 51 - , 53 - , 115 - , 70 - , 110 - , 29 - , 32 - , 2 - , 51 - , 112 - , 198 - , 235 - , 64 - , 9 - , 32 - , 4 - , 17 - , 32 - , 1 - , 22 - , 1 - ] - SPlutusV2 -> - [ 88 - , 26 - , 1 - , 0 - , 0 - , 34 - , 37 - , 51 - , 53 - , 115 - , 70 - , 110 - , 29 - , 32 - , 2 - , 51 - , 112 - , 198 - , 235 - , 64 - , 9 - , 32 - , 4 - , 17 - , 32 - , 1 - , 22 - , 1 - ] - SPlutusV3 -> - [ 88 - , 25 - , 1 - , 1 - , 0 - , 34 - , 37 - , 51 - , 53 - , 115 - , 70 - , 110 - , 29 - , 32 - , 2 - , 51 - , 112 - , 198 - , 235 - , 64 - , 9 - , 32 - , 4 - , 24 - , 0 - , 11 - , 1 - ] - ) - -{- Preproceesed Plutus Script -sumsTo10'_0 :: PlutusTx.Builtins.Internal.BuiltinData -> - PlutusTx.Builtins.Internal.BuiltinData -> - PlutusTx.Builtins.Internal.BuiltinData -> () -sumsTo10'_0 d1_1 d2_2 _d3_3 = let {n_4 = PlutusTx.Builtins.unsafeDataAsI d1_1; - m_5 = PlutusTx.Builtins.unsafeDataAsI d2_2} - in if (m_5 PlutusTx.Numeric.+ n_4) PlutusTx.Eq.== 10 - then GHC.Tuple.Prim.() - else PlutusTx.Builtins.error GHC.Tuple.Prim.() --} - -sumsTo103 :: SLanguage l -> Plutus l -sumsTo103 = - Plutus - . PlutusBinary - . pack - . ( \case - SPlutusV1 -> - [ 88 - , 27 - , 1 - , 0 - , 0 - , 34 - , 37 - , 51 - , 53 - , 115 - , 70 - , 110 - , 29 - , 32 - , 20 - , 51 - , 112 - , 6 - , 235 - , 64 - , 8 - , 221 - , 104 - , 1 - , 136 - , 144 - , 0 - , 139 - , 1 - ] - SPlutusV2 -> - [ 88 - , 27 - , 1 - , 0 - , 0 - , 34 - , 37 - , 51 - , 53 - , 115 - , 70 - , 110 - , 29 - , 32 - , 20 - , 51 - , 112 - , 6 - , 235 - , 64 - , 8 - , 221 - , 104 - , 1 - , 136 - , 144 - , 0 - , 139 - , 1 - ] - SPlutusV3 -> - [ 88 - , 26 - , 1 - , 1 - , 0 - , 34 - , 37 - , 51 - , 53 - , 115 - , 70 - , 110 - , 29 - , 32 - , 20 - , 51 - , 112 - , 6 - , 235 - , 64 - , 8 - , 221 - , 104 - , 1 - , 140 - , 0 - , 5 - , 129 - ] - ) - -{- Preproceesed Plutus Script -oddRedeemer2'_0 :: PlutusTx.Builtins.Internal.BuiltinData -> - PlutusTx.Builtins.Internal.BuiltinData -> () -oddRedeemer2'_0 d1_1 _d3_2 = let n_3 = PlutusTx.Builtins.unsafeDataAsI d1_1 - in if PlutusTx.Prelude.modulo n_3 2 PlutusTx.Eq.== 1 - then GHC.Tuple.Prim.() - else PlutusTx.Builtins.error GHC.Tuple.Prim.() --} - -oddRedeemer2 :: SLanguage l -> Plutus l -oddRedeemer2 = - Plutus - . PlutusBinary - . pack - . ( \case - SPlutusV1 -> - [ 88 - , 25 - , 1 - , 0 - , 0 - , 34 - , 83 - , 51 - , 87 - , 52 - , 102 - , 225 - , 210 - , 0 - , 35 - , 55 - , 12 - , 110 - , 180 - , 0 - , 146 - , 0 - , 65 - , 18 - , 0 - , 17 - , 97 - ] - SPlutusV2 -> - [ 88 - , 25 - , 1 - , 0 - , 0 - , 34 - , 83 - , 51 - , 87 - , 52 - , 102 - , 225 - , 210 - , 0 - , 35 - , 55 - , 12 - , 110 - , 180 - , 0 - , 146 - , 0 - , 65 - , 18 - , 0 - , 17 - , 97 - ] - SPlutusV3 -> - [ 88 - , 24 - , 1 - , 1 - , 0 - , 34 - , 83 - , 51 - , 87 - , 52 - , 102 - , 225 - , 210 - , 0 - , 35 - , 55 - , 12 - , 110 - , 180 - , 0 - , 146 - , 0 - , 65 - , 128 - , 0 - , 177 - ] - ) - -{- Preproceesed Plutus Script -evenRedeemer2'_0 :: PlutusTx.Builtins.Internal.BuiltinData -> - PlutusTx.Builtins.Internal.BuiltinData -> () -evenRedeemer2'_0 d1_1 _d3_2 = let n_3 = PlutusTx.Builtins.unsafeDataAsI d1_1 - in if PlutusTx.Prelude.modulo n_3 2 PlutusTx.Eq.== 0 - then GHC.Tuple.Prim.() - else PlutusTx.Builtins.error GHC.Tuple.Prim.() --} - -evenRedeemer2 :: SLanguage l -> Plutus l -evenRedeemer2 = - Plutus - . PlutusBinary - . pack - . ( \case - SPlutusV1 -> - [ 88 - , 25 - , 1 - , 0 - , 0 - , 34 - , 83 - , 51 - , 87 - , 52 - , 102 - , 225 - , 210 - , 0 - , 3 - , 55 - , 12 - , 110 - , 180 - , 0 - , 146 - , 0 - , 65 - , 18 - , 0 - , 17 - , 97 - ] - SPlutusV2 -> - [ 88 - , 25 - , 1 - , 0 - , 0 - , 34 - , 83 - , 51 - , 87 - , 52 - , 102 - , 225 - , 210 - , 0 - , 3 - , 55 - , 12 - , 110 - , 180 - , 0 - , 146 - , 0 - , 65 - , 18 - , 0 - , 17 - , 97 - ] - SPlutusV3 -> - [ 88 - , 24 - , 1 - , 1 - , 0 - , 34 - , 83 - , 51 - , 87 - , 52 - , 102 - , 225 - , 210 - , 0 - , 3 - , 55 - , 12 - , 110 - , 180 - , 0 - , 146 - , 0 - , 65 - , 128 - , 0 - , 177 - ] - ) - -{- Preproceesed Plutus Script -redeemerIs102'_0 :: PlutusTx.Builtins.Internal.BuiltinData -> - PlutusTx.Builtins.Internal.BuiltinData -> () -redeemerIs102'_0 d1_1 _d3_2 = let n_3 = PlutusTx.Builtins.unsafeDataAsI d1_1 - in if n_3 PlutusTx.Eq.== 10 - then GHC.Tuple.Prim.() - else PlutusTx.Builtins.error GHC.Tuple.Prim.() --} - -redeemerIs102 :: SLanguage l -> Plutus l -redeemerIs102 = - Plutus - . PlutusBinary - . pack - . ( \case - SPlutusV1 -> [84, 1, 0, 0, 34, 83, 51, 87, 52, 102, 225, 210, 1, 67, 117, 160, 4, 34, 64, 2, 45] - SPlutusV2 -> [84, 1, 0, 0, 34, 83, 51, 87, 52, 102, 225, 210, 1, 67, 117, 160, 4, 34, 64, 2, 45] - SPlutusV3 -> [84, 1, 1, 0, 34, 83, 51, 87, 52, 102, 225, 210, 1, 67, 117, 160, 4, 48, 0, 22, 1] - ) diff --git a/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Plutus/ScriptTestContext.hs b/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Plutus/ScriptTestContext.hs deleted file mode 100644 index 415f6ac1aa1..00000000000 --- a/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Plutus/ScriptTestContext.hs +++ /dev/null @@ -1,31 +0,0 @@ -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE GADTs #-} - -module Test.Cardano.Ledger.Plutus.ScriptTestContext ( - PlutusArgs (..), - ScriptTestContext (..), -) -where - -import Cardano.Ledger.Plutus.Language (Plutus, PlutusLanguage) -import Control.DeepSeq (NFData (..)) -import GHC.Generics (Generic) -import PlutusLedgerApi.Common (Data) - -data PlutusArgs = PlutusArgs - { paData :: Data - , paSpendDatum :: Maybe Data - } - deriving (Generic) - -instance NFData PlutusArgs - -data ScriptTestContext = forall l. - PlutusLanguage l => - ScriptTestContext - { stcScript :: Plutus l - , stcArgs :: PlutusArgs - } - -instance NFData ScriptTestContext where - rnf (ScriptTestContext script args) = rnf script `seq` rnf args diff --git a/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Plutus/ToPlutusData.hs b/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Plutus/ToPlutusData.hs deleted file mode 100644 index b1af4acdad0..00000000000 --- a/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Plutus/ToPlutusData.hs +++ /dev/null @@ -1,22 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Plutus.ToPlutusData ( - roundTripPlutusDataSpec, -) where - -import Cardano.Ledger.Plutus.ToPlutusData -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Core.Arbitrary () -import Type.Reflection (Typeable, typeRep) - --- ================================================================================== - --- | Test the roundtrip property via 'fromPlutusData' and 'toPlutusData' for any type --- meeting all the constraints below. -roundTripPlutusDataSpec :: - forall x. (HasCallStack, Typeable x, Show x, Eq x, Arbitrary x, ToPlutusData x) => Spec -roundTripPlutusDataSpec = - prop (show (typeRep @x)) $ \y -> - fromPlutusData (toPlutusData y) `shouldBe` Just (y :: x) diff --git a/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/TreeDiff.hs b/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/TreeDiff.hs deleted file mode 100644 index 89513492dca..00000000000 --- a/libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/TreeDiff.hs +++ /dev/null @@ -1,253 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE DuplicateRecordFields #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.TreeDiff ( - module Test.Cardano.Ledger.Binary.TreeDiff, -) where - -import Cardano.Ledger.Address -import Cardano.Ledger.AuxiliaryData -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.CertState -import Cardano.Ledger.Coin -import Cardano.Ledger.Core -import Cardano.Ledger.Credential -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.EpochBoundary -import Cardano.Ledger.HKD -import Cardano.Ledger.Keys -import Cardano.Ledger.MemoBytes -import Cardano.Ledger.Plutus.CostModels -import Cardano.Ledger.Plutus.Data -import Cardano.Ledger.Plutus.ExUnits -import Cardano.Ledger.Plutus.Language -import Cardano.Ledger.Plutus.TxInfo -import Cardano.Ledger.PoolDistr -import Cardano.Ledger.PoolParams -import Cardano.Ledger.SafeHash -import Cardano.Ledger.TxIn -import Cardano.Ledger.UMap -import Cardano.Ledger.UTxO -import Data.Functor.Identity -import Data.TreeDiff.OMap -import Data.VMap hiding (fromList) -import GHC.TypeLits -import Test.Cardano.Ledger.Binary.TreeDiff -import Test.Data.VMap.TreeDiff () - --- Coin -instance ToExpr Coin - -instance ToExpr DeltaCoin - -instance ToExpr (CompactForm Coin) where - toExpr x = toExpr (fromCompact x) - -deriving newtype instance ToExpr (CompactForm DeltaCoin) - --- HKD -instance ToExpr (NoUpdate a) - --- Keys -instance Crypto c => ToExpr (VKey r c) where - toExpr vk = - Rec "VKey" $ fromList [("VKey (hashOf)", toExpr $ hashKey vk)] - -instance ToExpr (GenDelegs c) - -instance ToExpr (GenDelegPair c) - -instance ToExpr (KeyHash keyrole c) where - toExpr (KeyHash x) = App "KeyHash" [toExpr x] - --- PoolDist -instance ToExpr (PoolDistr c) - -instance ToExpr (IndividualPoolStake c) - --- SafeHash -instance ToExpr (SafeHash c index) where - toExpr x = App "SafeHash" [toExpr (extractHash x)] - --- Language -instance ToExpr (Plutus l) - -instance ToExpr PlutusBinary - -instance ToExpr Language - --- MemoBytes -instance ToExpr (t era) => ToExpr (MemoBytes t era) - --- Core - -instance ToExpr (VoidEraRule (rule :: Symbol) era) where - toExpr = absurdEraRule - -instance ToExpr (ScriptHash c) - -instance ToExpr CostModelError where - toExpr = toExpr . show - -instance ToExpr CostModel where - toExpr costModel = - App - "CostModel" - [ toExpr (getCostModelLanguage costModel) - , toExpr (getCostModelParams costModel) - ] - -instance ToExpr CostModels - --- Keys/WitVKey -instance Crypto c => ToExpr (WitVKey kr c) - --- Keys/Bootstrap -instance Crypto c => ToExpr (BootstrapWitness c) - -instance ToExpr ChainCode - --- TxIn -instance ToExpr TxIx - --- BaseTypes -instance ToExpr CertIx where - toExpr (CertIx x) = App "CertIx" [toExpr x] - -instance ToExpr UnitInterval where - toExpr = toExpr . unboundRational - -instance ToExpr NonNegativeInterval where - toExpr = toExpr . unboundRational - -instance ToExpr Network - -instance ToExpr Port - -instance ToExpr Url - -instance ToExpr Nonce where - toExpr NeutralNonce = App "NeutralNonce" [] - toExpr (Nonce x) = App "Nonce" [trimExprViaShow 10 x] - -instance ToExpr DnsName - -instance ToExpr (BlocksMade c) - -instance ToExpr ProtVer - -instance ToExpr (Anchor c) - -instance ToExpr EpochInterval - --- AuxiliaryData -instance ToExpr (AuxiliaryDataHash c) - --- Plutus/ExUnits -instance ToExpr Prices - -instance ToExpr ExUnits where - toExpr (WrapExUnits (ExUnits' x y)) = App "ExUnits" [defaultExprViaShow x, defaultExprViaShow y] - --- Credential -instance ToExpr (Credential keyrole c) - -instance ToExpr (StakeReference c) - -instance ToExpr Ptr - -deriving newtype instance - ToExpr (PParamsHKD Identity era) => ToExpr (PParams era) - -deriving newtype instance - ToExpr (PParamsHKD StrictMaybe era) => ToExpr (PParamsUpdate era) - -instance ToExpr (TxIn c) - -instance ToExpr (TxId c) - --- CertState -instance ToExpr (DRep c) - -instance ToExpr (DRepState c) - --- Address -instance ToExpr (Addr c) - -instance ToExpr (RewardAccount era) - -instance ToExpr (BootstrapAddress c) where - toExpr = defaultExprViaShow - -instance ToExpr (Withdrawals c) - -instance ToExpr (CompactAddr c) - --- PoolParams -instance ToExpr PoolMetadata - -instance ToExpr (PoolParams era) - -instance ToExpr StakePoolRelay - -instance ToExpr (PoolCert c) - --- UMap -instance ToExpr RDPair - -instance ToExpr (UMElem c) - -instance ToExpr (UMap c) - -instance ToExpr (PlutusData era) where - toExpr = trimExprViaShow 30 - -instance ToExpr (Data era) - -instance ToExpr (BinaryData era) where - toExpr _ = App "BinaryData" [] - -instance ToExpr (Datum era) where - toExpr NoDatum = App "NoDatum" [] - toExpr (DatumHash x) = App "DatumHash" [toExpr x] - toExpr (Datum bd) = App "Datum" [toExpr bd] - --- EpochBoundary -instance ToExpr (SnapShots c) - -instance ToExpr (SnapShot c) - -deriving newtype instance ToExpr (Stake c) - -instance ToExpr (CertState era) - -instance ToExpr (PState era) - -instance ToExpr (DState era) - -instance ToExpr (VState era) - -instance ToExpr (FutureGenDeleg c) - -instance ToExpr (InstantaneousRewards c) - -instance ToExpr (CommitteeAuthorization c) - -instance ToExpr (CommitteeState era) - --- UTxO -deriving instance (Era era, ToExpr (Script era)) => ToExpr (ScriptsProvided era) - -instance ToExpr (TxOut era) => ToExpr (UTxO era) - -instance ToExpr (TxOutSource era) diff --git a/libs/cardano-ledger-test/.ghcid b/libs/cardano-ledger-test/.ghcid deleted file mode 100644 index 5a0c25aa21f..00000000000 --- a/libs/cardano-ledger-test/.ghcid +++ /dev/null @@ -1 +0,0 @@ ---command="cabal repl --repl-options='-isrc -fwarn-unused-binds -fwarn-unused-imports -fno-code -fobject-code -g2 -fno-break-on-exception -fno-break-on-error -ferror-spans -j -Wno-unused-packages'" --clear --no-height-limit --reverse-errors --reload=../../ --outputfile=/tmp/cardano-ledger-test-ghcid.txt \ No newline at end of file diff --git a/libs/cardano-ledger-test/CHANGELOG.md b/libs/cardano-ledger-test/CHANGELOG.md deleted file mode 100644 index c7d3c9474ab..00000000000 --- a/libs/cardano-ledger-test/CHANGELOG.md +++ /dev/null @@ -1 +0,0 @@ -## This package is not versioned, so there's no need to update this changelog diff --git a/libs/cardano-ledger-test/Setup.hs b/libs/cardano-ledger-test/Setup.hs deleted file mode 100644 index e8ef27dbba9..00000000000 --- a/libs/cardano-ledger-test/Setup.hs +++ /dev/null @@ -1,3 +0,0 @@ -import Distribution.Simple - -main = defaultMain diff --git a/libs/cardano-ledger-test/bench/Bench/Cardano/Ledger/ApplyTx.hs b/libs/cardano-ledger-test/bench/Bench/Cardano/Ledger/ApplyTx.hs deleted file mode 100644 index 6ebec57a735..00000000000 --- a/libs/cardano-ledger-test/bench/Bench/Cardano/Ledger/ApplyTx.hs +++ /dev/null @@ -1,152 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StrictData #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# OPTIONS_GHC -Wno-orphans #-} - --- | Benchmarks for transaction application -module Bench.Cardano.Ledger.ApplyTx (applyTxBenchmarks, ShelleyBench) where - -import Bench.Cardano.Ledger.ApplyTx.Gen (ApplyTxEnv (..), generateApplyTxEnvForEra) -import Cardano.Ledger.Allegra (AllegraEra) -import Cardano.Ledger.Alonzo (AlonzoEra) -import Cardano.Ledger.Binary (decCBOR, decodeFullAnnotator) -import qualified Cardano.Ledger.Binary.Plain as Plain -import Cardano.Ledger.Mary (MaryEra) -import Cardano.Ledger.Shelley (ShelleyEra) -import Cardano.Ledger.Shelley.API ( - ApplyTx, - Globals, - LedgerEnv, - LedgerState, - applyTxsTransition, - ) -import Cardano.Ledger.Shelley.Core -import Control.DeepSeq (NFData (..)) -import Control.State.Transition (Environment, Signal, State) -import Criterion -import Data.Proxy (Proxy (..)) -import qualified Data.Sequence as Seq -import Data.Typeable (typeRep) -import Test.Cardano.Ledger.Alonzo.AlonzoEraGen () -import Test.Cardano.Ledger.Alonzo.Trace () -import Test.Cardano.Ledger.MaryEraGen () -import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes (C_Crypto) -import Test.Cardano.Ledger.Shelley.Generator.Core (GenEnv) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (EraGen) -import Test.Control.State.Transition.Trace.Generator.QuickCheck (BaseEnv, HasTrace) - -type ShelleyBench = ShelleyEra C_Crypto - -type AllegraBench = AllegraEra C_Crypto - -type MaryBench = MaryEra C_Crypto - -type AlonzoBench = AlonzoEra C_Crypto - --------------------------------------------------------------------------------- --- Applying a Shelley transaction in multiple eras. --- --- This benchmark starts by generating a fixed Shelley transaction from a fixed --- seed. --------------------------------------------------------------------------------- - --------------------------------------------------------------------------------- --- Fixed generators --------------------------------------------------------------------------------- - -benchmarkSeed :: Int -benchmarkSeed = 24601 - -benchWithGenState :: - ( NFData a - , EraGen era - , HasTrace (EraRule "LEDGER" era) (GenEnv era) - , BaseEnv (EraRule "LEDGER" era) ~ Globals - , Signal (EraRule "LEDGER" era) ~ Tx era - , Environment (EraRule "LEDGER" era) ~ LedgerEnv era - , State (EraRule "LEDGER" era) ~ LedgerState era - , EraGov era - ) => - Proxy era -> - (ApplyTxEnv era -> IO a) -> - (a -> Benchmarkable) -> - Benchmark -benchWithGenState px prepEnv mkBench = - env (prepEnv $ generateApplyTxEnvForEra px benchmarkSeed) $ bench (show $ typeRep px) . mkBench - -benchApplyTx :: - forall era. - ( EraGen era - , ApplyTx era - , HasTrace (EraRule "LEDGER" era) (GenEnv era) - , BaseEnv (EraRule "LEDGER" era) ~ Globals - , EraGov era - ) => - Proxy era -> - Benchmark -benchApplyTx px = - benchWithGenState px pure $ \applyTxEnv -> - let ApplyTxEnv {ateGlobals, ateMempoolEnv, ateState, ateTx} = applyTxEnv - in nf - ( either (error . show) id - . applyTxsTransition ateGlobals ateMempoolEnv (Seq.singleton ateTx) - ) - ateState - --------------------------------------------------------------------------------- --- Deserialising resources --------------------------------------------------------------------------------- - --- | Benchmark deserialising a shelley transaction as if it comes from the given --- era. -deserialiseTxEra :: - forall era. - ( EraGen era - , BaseEnv (EraRule "LEDGER" era) ~ Globals - , HasTrace (EraRule "LEDGER" era) (GenEnv era) - , State (EraRule "LEDGER" era) ~ LedgerState era - , Environment (EraRule "LEDGER" era) ~ LedgerEnv era - , Signal (EraRule "LEDGER" era) ~ Tx era - , NFData (Tx era) - , EraGov era - ) => - Proxy era -> - Benchmark -deserialiseTxEra px = - benchWithGenState px (pure . Plain.serialize . ateTx) $ - nf (either (error . show) (id @(Tx era)) . decodeFullAnnotator v "tx" decCBOR) - where - v = eraProtVerHigh @era - --------------------------------------------------------------------------------- --- Benchmark suite --------------------------------------------------------------------------------- - -applyTxBenchmarks :: Benchmark -applyTxBenchmarks = - bgroup - "applyTxBenchmarks" - [ bgroup - "ApplyTxInEra" - [ benchApplyTx (Proxy @ShelleyBench) - , benchApplyTx (Proxy @AllegraBench) - , benchApplyTx (Proxy @MaryBench) - , benchApplyTx (Proxy @AlonzoBench) - ] - , bgroup - "Deserialise Shelley Tx" - [ deserialiseTxEra (Proxy @ShelleyBench) - , deserialiseTxEra (Proxy @AllegraBench) - , deserialiseTxEra (Proxy @MaryBench) - , deserialiseTxEra (Proxy @AlonzoBench) - ] - ] diff --git a/libs/cardano-ledger-test/bench/Bench/Cardano/Ledger/ApplyTx/Gen.hs b/libs/cardano-ledger-test/bench/Bench/Cardano/Ledger/ApplyTx/Gen.hs deleted file mode 100644 index 2a664e8a23d..00000000000 --- a/libs/cardano-ledger-test/bench/Bench/Cardano/Ledger/ApplyTx/Gen.hs +++ /dev/null @@ -1,99 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeOperators #-} - --- | Generates fixed transaction/state pairs for benchmarking. -module Bench.Cardano.Ledger.ApplyTx.Gen (generateApplyTxEnvForEra, ApplyTxEnv (..)) where - -import Cardano.Ledger.Shelley.API ( - AccountState (..), - Coin (..), - Globals, - LedgerEnv (..), - MempoolEnv, - ) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState (LedgerState) -import Cardano.Ledger.Slot (SlotNo (SlotNo)) -import Control.DeepSeq (NFData (..)) -import Control.State.Transition (Environment, Signal, State) -import Data.Proxy (Proxy) -import GHC.Generics (Generic) -import Test.Cardano.Ledger.AllegraEraGen () -import Test.Cardano.Ledger.Shelley.Constants (defaultConstants) -import Test.Cardano.Ledger.Shelley.Generator.Core (GenEnv (..)) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (EraGen) -import Test.Cardano.Ledger.Shelley.Generator.Presets (genEnv) -import Test.Cardano.Ledger.Shelley.Generator.ShelleyEraGen () -import Test.Cardano.Ledger.Shelley.Generator.Trace.Ledger (mkGenesisLedgerState) -import Test.Cardano.Ledger.Shelley.Utils (testGlobals) -import Test.Control.State.Transition.Trace ( - SourceSignalTarget (signal, source), - Trace (..), - sourceSignalTargets, - ) -import Test.Control.State.Transition.Trace.Generator.QuickCheck ( - HasTrace (BaseEnv), - traceFromInitState, - ) -import Test.QuickCheck.Gen (unGen) -import Test.QuickCheck.Random (mkQCGen) - --- | Static mempool environment. We apply Txs in some future slot. The account --- state shouldn't matter much. -applyTxMempoolEnv :: PParams era -> MempoolEnv era -applyTxMempoolEnv pp = - LedgerEnv - { ledgerSlotNo = SlotNo 0 - , ledgerIx = minBound - , ledgerPp = pp - , ledgerAccount = AccountState (Coin 45000000000) (Coin 45000000000) - } - -data ApplyTxEnv era = ApplyTxEnv - { ateGlobals :: !Globals - , ateMempoolEnv :: !(MempoolEnv era) - , ateState :: !(LedgerState era) - , ateTx :: !(Tx era) - } - deriving (Generic) - -instance NFData (ApplyTxEnv era) where - rnf (ApplyTxEnv g me s t) = seq g (seq me (seq s (seq t ()))) - --- | Generate a ledger state and transaction in a given era, given a seed. -generateApplyTxEnvForEra :: - forall era. - ( EraGen era - , HasTrace (EraRule "LEDGER" era) (GenEnv era) - , BaseEnv (EraRule "LEDGER" era) ~ Globals - , Signal (EraRule "LEDGER" era) ~ Tx era - , Environment (EraRule "LEDGER" era) ~ LedgerEnv era - , State (EraRule "LEDGER" era) ~ LedgerState era - , EraGov era - ) => - Proxy era -> - Int -> - ApplyTxEnv era -generateApplyTxEnvForEra eraProxy seed = - let ge = genEnv eraProxy defaultConstants - qcSeed = mkQCGen seed - traceGen = - traceFromInitState - @(EraRule "LEDGER" era) - testGlobals - 20 - ge - (Just $ mkGenesisLedgerState ge) - tr = unGen traceGen qcSeed 30 - sst = last $ sourceSignalTargets tr - in ApplyTxEnv - { ateGlobals = testGlobals - , ateMempoolEnv = applyTxMempoolEnv (ledgerPp (_traceEnv tr)) - , ateState = source sst - , ateTx = signal sst - } diff --git a/libs/cardano-ledger-test/bench/Bench/Cardano/Ledger/EpochBoundary.hs b/libs/cardano-ledger-test/bench/Bench/Cardano/Ledger/EpochBoundary.hs deleted file mode 100644 index a2d249095bf..00000000000 --- a/libs/cardano-ledger-test/bench/Bench/Cardano/Ledger/EpochBoundary.hs +++ /dev/null @@ -1,208 +0,0 @@ -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} - --- | Benchmarks for things which happen on an epoch boundary. -module Bench.Cardano.Ledger.EpochBoundary where - -import Cardano.Crypto.DSIGN.Mock -import Cardano.Ledger.Address (Addr (Addr), compactAddr) -import Cardano.Ledger.BaseTypes (Network (Testnet)) -import Cardano.Ledger.Coin (Coin (Coin)) -import Cardano.Ledger.Compactible (Compactible (toCompact)) -import Cardano.Ledger.Core -import Cardano.Ledger.Credential ( - Credential (KeyHashObj), - PaymentCredential, - Ptr (..), - StakeCredential, - StakeReference (StakeRefBase, StakeRefNull, StakeRefPtr), - ) -import Cardano.Ledger.Keys (VKey (..), hashKey) -import Cardano.Ledger.Mary (MaryEra) -import Cardano.Ledger.SafeHash ( - SafeToHash (makeHashWithExplicitProxys), - castSafeHash, - ) -import Cardano.Ledger.Shelley.TxOut (ShelleyTxOut (..)) -import Cardano.Ledger.Slot (SlotNo (SlotNo)) -import Cardano.Ledger.TxIn (TxId (..), TxIn (..)) -import Cardano.Ledger.UTxO (UTxO (UTxO)) -import qualified Cardano.Ledger.Val as Val -import Control.DeepSeq (NFData (..), deepseq) -import Criterion -import Data.ByteString (ByteString) -import Data.Functor ((<&>)) -import Data.List (genericReplicate) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Maybe (fromJust) -import Data.Proxy -import Data.Word (Word64) -import Test.Cardano.Ledger.EraBuffet (TestCrypto) -import Test.Cardano.Ledger.Shelley.Rules.IncrementalStake (aggregateUtxoCoinByCredential) - -type TestEra = MaryEra TestCrypto - -payCred :: PaymentCredential TestCrypto -payCred = KeyHashObj (hashKey . VKey $ VerKeyMockDSIGN 0) - --- | Infinite list of transaction inputs -txIns :: [TxIn TestCrypto] -txIns = [minBound ..] <&> TxIn txId - where - txId = - TxId . castSafeHash $ - makeHashWithExplicitProxys - (Proxy @TestCrypto) - (Proxy @EraIndependentTxBody) - ("Galadriel" :: ByteString) - --- | Unstaked address -txOutUnstaked :: TxOut TestEra -txOutUnstaked = - TxOutCompact @TestEra - (compactAddr $ Addr Testnet payCred StakeRefNull) - (fromJust . toCompact . Val.inject $ Coin 1000) - --- | Generate TxOuts for each stake credential. -txOutsFromCreds :: [StakeCredential TestCrypto] -> [TxOut TestEra] -txOutsFromCreds creds = - [ TxOutCompact - (compactAddr $ Addr Testnet payCred (StakeRefBase cred)) - coinVal - | cred <- creds - ] - where - coinVal = fromJust . toCompact . Val.inject $ Coin 100 - -txOutsFromPtrs :: [Ptr] -> [TxOut TestEra] -txOutsFromPtrs ptrs = - [ TxOutCompact - (compactAddr $ Addr Testnet payCred (StakeRefPtr ptr)) - coinVal - | ptr <- ptrs - ] - where - coinVal = fromJust . toCompact . Val.inject $ Coin 200 - --- | Generate n stake credentials -stakeCreds :: Word64 -> [StakeCredential TestCrypto] -stakeCreds n = - [0 .. n] - <&> (\i -> KeyHashObj (hashKey . VKey $ VerKeyMockDSIGN i)) - --- | Generate pointers to a list of stake credentials -stakePtrs :: [StakeCredential c] -> Map Ptr (StakeCredential c) -stakePtrs creds = - Map.fromList - [ (Ptr (SlotNo i) minBound minBound, cred) - | (i, cred) <- zip [0 ..] creds - ] - --- | Create a UTxO set containing 'noUnstaked' unstaked TxOuts, 'noBase' --- base stake credentials and any pointer credentials passed in 'ptrMap'. For --- each credential, there will be 'dupFactor' entries in the UTxO. -utxo :: - -- | Number of unstaked outputs - Word64 -> - -- | Number of distinct base stake credentials - Word64 -> - Map Ptr c -> - Int -> - UTxO TestEra -utxo noUnstaked noBase ptrMap dupFactor = - UTxO . Map.fromList $ - txIns - `zip` ( genericReplicate noUnstaked txOutUnstaked - <> cycleTimes dupFactor stakedTxs - ) - where - txOutB = txOutsFromCreds $ stakeCreds noBase - txOutP = txOutsFromPtrs $ Map.keys ptrMap - stakedTxs = txOutP ++ txOutB - - cycleTimes _ [] = [] - cycleTimes 1 xs = xs - cycleTimes n xs = xs ++ cycleTimes (n - 1) xs - -data AggTestSetup = AggTestSetup - { atsPtrMap :: !(Map Ptr (StakeCredential TestCrypto)) - , atsUTxO :: !(UTxO TestEra) - } - -instance NFData AggTestSetup where - rnf (AggTestSetup p u) = deepseq p (rnf u) - --- | Construct the relevant UTxO and pointer map to test --- 'aggregateUtxoCoinByCredential'. --- --- There are three parameters to this: --- - The number of distinct 'StakeRefBase' outputs present in the UTxO. --- - The number of distinct 'StakeRefPtr' outputs present in the UTxO, and the --- corresponding size of the pointer map. --- - The "duplication factor". This represents the number of 'TxIn's pointing to --- outputs with a given stake address. Thus with a duplication factor of 1, --- there will be only one "coin" per credential, and little aggregation. With --- a factor of 10, there will be 10 coins that must be aggregated. --- --- Note that this corresponds to two situations in real usage: multiple --- transactions paying to the same address, and multiple addresses sharing the --- same stake credential. These scenarios are identical for benchmarking --- purposes, and hence we roll them into one. -sizedAggTestSetup :: - -- | Number of unstaked addresses - Word64 -> - -- | Number of distinct base stake credentials - Word64 -> - -- | Number of distinct pointer stake credentials - Word64 -> - -- | Duplication factor - Int -> - AggTestSetup -sizedAggTestSetup noUnstaked noBase noPtr dupFactor = AggTestSetup pm ut - where - pm = stakePtrs $ stakeCreds noPtr - ut = utxo noUnstaked noBase pm dupFactor - -aggregateUtxoBench :: Benchmark -aggregateUtxoBench = - bgroup - "aggregateUtxoCoinByCredential" - [ bgroup - "duplication" - [ env (pure $ sizedAggTestSetup 0 1000 0 1) $ bench "1000/0" . nf go - , env (pure $ sizedAggTestSetup 0 10 0 100) $ bench "10/0 * 100" . nf go - , env (pure $ sizedAggTestSetup 0 100 0 10) $ bench "100/0 * 10" . nf go - ] - , bgroup - "ptr" - [ env (pure $ sizedAggTestSetup 0 1000 0 1) $ bench "1000/0" . nf go - , env (pure $ sizedAggTestSetup 0 500 500 1) $ bench "500/500" . nf go - ] - , bgroup - "utxo" - [ env (pure $ sizedAggTestSetup 0 1000 0 1) $ bench "0 1000/0" . nf go - , env (pure $ sizedAggTestSetup 1000 1000 0 1) $ bench "1000 1000/0" . nf go - , env (pure $ sizedAggTestSetup 10000 1000 0 1) $ bench "10000 1000/0" . nf go - , env (pure $ sizedAggTestSetup 100000 1000 0 1) $ bench "100000 1000/0" . nf go - , env (pure $ sizedAggTestSetup 1000000 1000 0 1) $ bench "1000000 1000/0" . nf go - ] - , bgroup - "size" - [ env (pure $ sizedAggTestSetup 0 100 0 1) $ bench "100/0" . nf go - , env (pure $ sizedAggTestSetup 0 1000 0 1) $ bench "1000/0" . nf go - , env (pure $ sizedAggTestSetup 0 10000 0 1) $ bench "10000/0" . nf go - , env (pure $ sizedAggTestSetup 0 100000 0 1) $ bench "100000/0" . nf go - , env (pure $ sizedAggTestSetup 0 1000000 0 1) $ bench "1000000/0" . nf go - ] - , bgroup - "mainnet" - [ env (pure $ sizedAggTestSetup 4000000 100000 0 5) $ bench "current" . nf go - , env (pure $ sizedAggTestSetup 4000000 500000 0 1) $ bench "current no dup" . nf go - , env (pure $ sizedAggTestSetup 8000000 200000 0 5) $ bench "2x" . nf go - ] - ] - where - go AggTestSetup {atsPtrMap, atsUTxO} = - aggregateUtxoCoinByCredential atsPtrMap atsUTxO Map.empty diff --git a/libs/cardano-ledger-test/bench/Bench/Cardano/Ledger/Serialisation/Generators.hs b/libs/cardano-ledger-test/bench/Bench/Cardano/Ledger/Serialisation/Generators.hs deleted file mode 100644 index 5ca91d1c901..00000000000 --- a/libs/cardano-ledger-test/bench/Bench/Cardano/Ledger/Serialisation/Generators.hs +++ /dev/null @@ -1,32 +0,0 @@ --- | Benchmarks for the serialisation generators -module Bench.Cardano.Ledger.Serialisation.Generators ( - benchTxGeneration, -) -where - -import Cardano.Ledger.Core -import Criterion.Main -import Test.Cardano.Ledger.EraBuffet -import Test.Cardano.Ledger.Mary.Arbitrary () -import Test.Cardano.Ledger.ShelleyMA.Serialisation.Generators () -import Test.QuickCheck - -genTxShelley :: IO (Tx (ShelleyEra TestCrypto)) -genTxShelley = generate arbitrary - --- | Generate an arbitrary Allegra transaction -genTxAllegra :: IO (Tx (AllegraEra TestCrypto)) -genTxAllegra = generate arbitrary - --- | Generate an arbitrary Mary transaction -genTxMary :: IO (Tx (MaryEra TestCrypto)) -genTxMary = generate arbitrary - -benchTxGeneration :: Benchmark -benchTxGeneration = - bgroup - "txgen" - [ bench "genTxShelley" (whnfIO genTxShelley) - , bench "genTxAllegra" (whnfIO genTxAllegra) - , bench "genTxMary" (whnfIO genTxMary) - ] diff --git a/libs/cardano-ledger-test/bench/Bench/Cardano/Ledger/StakeDistr.hs b/libs/cardano-ledger-test/bench/Bench/Cardano/Ledger/StakeDistr.hs deleted file mode 100644 index 5eeb6be710d..00000000000 --- a/libs/cardano-ledger-test/bench/Bench/Cardano/Ledger/StakeDistr.hs +++ /dev/null @@ -1,357 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# OPTIONS_GHC -Wno-orphans #-} - --- | Benchmark the TickF rule. and its major sub-computations and rules, to discover where the time is spent -module Bench.Cardano.Ledger.StakeDistr ( - tickfRuleBench, -) -where - -import Cardano.Ledger.Alonzo (AlonzoEra) -import Cardano.Ledger.BaseTypes (BlocksMade (..), Globals (..), pvMajor) -import Cardano.Ledger.Binary.Plain as Plain (FromCBOR (..), decodeFullDecoder) -import Cardano.Ledger.Coin (DeltaCoin (..)) -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto (StandardCrypto) -import Cardano.Ledger.EpochBoundary ( - SnapShot (..), - SnapShots (..), - calculatePoolDistr, - calculatePoolStake, - ) -import Cardano.Ledger.PoolDistr (PoolDistr (..)) -import Cardano.Ledger.Shelley.Genesis ( - ShelleyGenesis (..), - fromNominalDiffTimeMicro, - mkShelleyGlobals, - ) -import Cardano.Ledger.Shelley.LedgerState ( - EpochState (..), - FilteredRewards (..), - NewEpochState (..), - PulsingRewUpdate (Complete, Pulsing), - RewardUpdate (..), - applyRUpdFiltered, - certDState, - curPParamsEpochStateL, - filterAllRewards, - lsCertState, - rewards, - ) -import Cardano.Ledger.Shelley.Rewards (aggregateCompactRewards, sumRewards) -import Cardano.Ledger.Shelley.Rules ( - ShelleyEPOCH, - ShelleyMIR, - ShelleyNEWEPOCH, - ShelleyTICKF, - adoptGenesisDelegs, - updateRewards, - validatingTickTransitionFORECAST, - ) -import Cardano.Ledger.Slot (EpochNo, SlotNo (..)) -import qualified Cardano.Ledger.UMap as UM -import Cardano.Slotting.EpochInfo (fixedEpochInfo) -import Cardano.Slotting.Slot (EpochNo (..), SlotNo) -import Cardano.Slotting.Time (mkSlotLength) -import Control.Monad.Reader (Reader, runReader) -import Control.State.Transition.Extended ( - Rule, - RuleContext, - RuleType (Transition), - STS (..), - TRC (TRC), - applySTS, - runRule, - ) -import Criterion (Benchmark, bench, bgroup, env, nf, whnf) -import qualified Data.Aeson as Aeson (eitherDecode) -import Data.ByteString.Lazy as Lazy (readFile) -import Data.Default.Class (Default (def)) -import qualified Data.Map.Strict as Map -import Data.Maybe.Strict (StrictMaybe (..)) -import Data.Text (pack) -import Lens.Micro -import System.Environment (lookupEnv) -import Test.Cardano.Ledger.Tickf (oldCalculatePoolDistr) -import Test.Cardano.Slotting.Numeric () - --- ====================================================================== - -type CurrentEra = AlonzoEra StandardCrypto - --- ============================== --- Data files --- We will need to deserialize a CBOR file that can be deserialized to a NewEpochState. --- We use the environment variable "BENCH_LEDGER_STATE_PATH" to indicate where to get this CBOR file. --- If the file does not exist at this path, the benchmark will run, but be meaningless. --- See the README.md file in ledger-state/libs/ledger-state/README.md for instructions for --- how one might obtain such a file. Get your own copy and adjust the path here. --- --- One way to run the benchmark would be like this --- BENCH_LEDGER_STATE_PATH='/home/sheard/Two/Data/71452796-NewEpochState.cbor' cabal bench bench --- Of course replace '/home/sheard/Two/Data/71452796-NewEpochState.cbor' with your own path. - --- ============================== --- Stored constants read from files. Globals and NewEpochState - -readGlobals :: IO Globals -readGlobals = pure $ mkGlobals shelleyGenesis pp - where - pp = def - -readNewEpochState :: IO (NewEpochState CurrentEra) -readNewEpochState = do - let ledgerVarName = "BENCH_LEDGER_STATE_PATH" - filePath <- lookupEnv ledgerVarName - case filePath of - Just ledgerStateFilePath -> do - lazyBytes <- Lazy.readFile ledgerStateFilePath - let lbl = "NewEpochState from " <> pack ledgerStateFilePath - case Plain.decodeFullDecoder lbl fromCBOR lazyBytes of - Left err -> error (show err) - Right (nes :: NewEpochState CurrentEra) -> pure nes - Nothing -> - bogusNewEpochState <$ do - putStrLn $ - unlines - [ "No path to the NewEpochState CBOR was provided" - , "The benchmark results are meaningless." - ] - -bogusNewEpochState :: NewEpochState CurrentEra -bogusNewEpochState = - NewEpochState - (EpochNo 0) - (BlocksMade Map.empty) - (BlocksMade Map.empty) - def - (SJust (Complete (RewardUpdate (DeltaCoin 0) (DeltaCoin 0) def (DeltaCoin 0) def))) - (PoolDistr Map.empty) - def - -mkGlobals :: ShelleyGenesis StandardCrypto -> PParams CurrentEra -> Globals -mkGlobals genesis pp = - mkShelleyGlobals genesis epochInfoE majorPParamsVer - where - majorPParamsVer = pvMajor $ pp ^. ppProtocolVersionL - epochInfoE = - fixedEpochInfo - (sgEpochLength genesis) - (mkSlotLength . fromNominalDiffTimeMicro . sgSlotLength $ genesis) - --- ========================================================= --- We would like to benchmark things that are used in the STS system. --- Two things come to mind --- 1) calls of applySTS --- 2) things of type (STS s => Rule s 'Transition t) --- To do this we need to lift them to values not embedded in STS things. - --- | usd to run an action made by applying 'runRule' to an 'Rule' and a 'RuleContext' -liftRule :: - (STS s, BaseM s ~ Reader r) => r -> RuleContext 'Transition s -> Rule s 'Transition p -> p -liftRule globals context rule = - case flip runReader globals (runRule context rule) of - (es, []) -> es - (_, fails) -> error (show fails) - --- | Used to run an 'action' which is an 'applySTS' call -liftApplySTS :: Show a => r -> Reader r (Either a p) -> p -liftApplySTS globals action = - case flip runReader globals action of - Left fails -> error (show fails) - Right x -> x - --- ======================================= - -updateRewardsX :: Globals -> NewEpochState CurrentEra -> EpochState CurrentEra -updateRewardsX globals newepochstate = - let epochNo = nesEL newepochstate - epochstate = nesEs newepochstate - context = (TRC ((), newepochstate, epochNo)) - rule = case nesRu newepochstate of - SNothing -> pure epochstate - SJust p -> updateRewards epochstate epochNo $ getComplete p - in liftRule globals context rule - -adoptGenesisDelegsR :: - Cardano.Slotting.Slot.SlotNo -> - NewEpochState era -> - EpochState era -adoptGenesisDelegsR slot nes = adoptGenesisDelegs (nesEs nes) slot - -tickfR2 :: - Globals -> - Cardano.Slotting.Slot.SlotNo -> - NewEpochState CurrentEra -> - NewEpochState CurrentEra -tickfR2 globals slot nes = liftRule globals (TRC ((), nes, slot)) (validatingTickTransitionFORECAST @ShelleyTICKF nes slot) - -mirR :: Globals -> EpochState CurrentEra -> EpochState CurrentEra -mirR globals es' = liftApplySTS globals (applySTS @(ShelleyMIR CurrentEra) (TRC ((), es', ()))) - -newEpochR :: Globals -> EpochNo -> NewEpochState CurrentEra -> NewEpochState CurrentEra -newEpochR globals epochNo nes = liftApplySTS globals (applySTS @(ShelleyNEWEPOCH CurrentEra) (TRC ((), nes, epochNo))) - -epochR :: Globals -> EpochNo -> EpochState CurrentEra -> EpochState CurrentEra -epochR globals epochNo es'' = liftApplySTS globals (applySTS @(ShelleyEPOCH CurrentEra) (TRC ((), es'', epochNo))) - --- ============================================================ - -tickfRuleBench :: Benchmark -tickfRuleBench = - env readGlobals $ \globals -> - env readNewEpochState $ \nes -> - let pv = nesEs nes ^. curPParamsEpochStateL . ppProtocolVersionL - in bgroup - "Tickf Benchmarks" - [ bench "validatingTickTransitionfunction" $ whnf (tickfR2 globals (SlotNo 156953303)) nes - , bgroup - "Tick subparts" - [ bench "adoptGenesisDelegs" $ whnf (adoptGenesisDelegsR (SlotNo 156953303)) nes - , bench "newEpoch" $ whnf (newEpochR globals (nesEL nes + 1)) nes - , bgroup - "NewEpoch sub parts" - [ bench "updateRewards" $ whnf (updateRewardsX globals) nes - , bgroup - "updateRewards subparts" - [ bench "sumRewards" $ whnf (sumRewards pv) (rs (getRewardUpdate nes)) - , bench "applyRUpdFiltered Incremental" $ - whnf (applyRUpdFiltered (getRewardUpdate nes)) (nesEs nes) - , bgroup - "applyRUpd subparts" - [ bench "filterAllRewards" $ - nf (filterAllRewards (rs (getRewardUpdate nes))) (nesEs nes) - , env - (pure (filterAllRewards (rs (getRewardUpdate nes)) (nesEs nes))) - (bench "aggregateRewards" . whnf (aggregateCompactRewards pv) . frRegistered) - , env - ( pure - ( aggregateCompactRewards - pv - ( frRegistered $ - filterAllRewards (rs (getRewardUpdate nes)) (nesEs nes) - ) - ) - ) - ( \registeredAggregated -> - bench "union+" $ - let dState = (certDState . lsCertState . esLState . nesEs) nes - in whnf (rewards dState UM.∪+) registeredAggregated - ) - ] - ] - , bench "mir rule" $ whnf (mirR globals) (nesEs nes) - , bench "epoch rule" $ whnf (epochR globals (nesEL nes + 1)) (nesEs nes) - , bench "calculatePoolDistr, improved (current) version" $ whnf calculatePoolDistr (getSnap nes) - , bgroup - "calculatePoolDistr subparts" - [ bench "poolStake" $ - whnf (calculatePoolStake (const True) (ssDelegations (getSnap nes))) (ssStake (getSnap nes)) - , bench "old calculatePoolDistr" $ - whnf (oldCalculatePoolDistr (const True)) (getSnap nes) - ] - ] - ] - ] - -getSnap :: NewEpochState (AlonzoEra StandardCrypto) -> SnapShot StandardCrypto -getSnap nes = (ssStakeSet . esSnapshots . nesEs) nes - -getRewardUpdate :: NewEpochState era -> RewardUpdate (EraCrypto era) -getRewardUpdate nes = - case nesRu nes of - SNothing -> error "No RewardUpdate in new epoch state" - SJust c -> getComplete c - -getComplete :: PulsingRewUpdate c -> RewardUpdate c -getComplete = \case - Pulsing _ _ -> error "RewardUpdate in new epoch state is pulsing" - Complete ru -> ru - --- ================================================================== - --- | The inital ShelleyGenesis structure, encoded in json format as a Haskell String -shelleyGenesis :: ShelleyGenesis StandardCrypto -shelleyGenesis = - either error id $ - Aeson.eitherDecode $ - "{\ - \ \"activeSlotsCoeff\": 0.05,\ - \ \"protocolParams\": {\ - \ \"protocolVersion\": {\ - \ \"minor\": 0,\ - \ \"major\": 2\ - \ },\ - \ \"decentralisationParam\": 1,\ - \ \"eMax\": 18,\ - \ \"extraEntropy\": {\ - \ \"tag\": \"NeutralNonce\"\ - \ },\ - \ \"maxTxSize\": 16384,\ - \ \"maxBlockBodySize\": 65536,\ - \ \"maxBlockHeaderSize\": 1100,\ - \ \"minFeeA\": 44,\ - \ \"minFeeB\": 155381,\ - \ \"minUTxOValue\": 1000000,\ - \ \"poolDeposit\": 500000000,\ - \ \"minPoolCost\": 340000000,\ - \ \"keyDeposit\": 2000000,\ - \ \"nOpt\": 150,\ - \ \"rho\": 0.003,\ - \ \"tau\": 0.20,\ - \ \"a0\": 0.3\ - \ },\ - \ \"genDelegs\": {\ - \ \"ad5463153dc3d24b9ff133e46136028bdc1edbb897f5a7cf1b37950c\": {\ - \ \"delegate\": \"d9e5c76ad5ee778960804094a389f0b546b5c2b140a62f8ec43ea54d\",\ - \ \"vrf\": \"64fa87e8b29a5b7bfbd6795677e3e878c505bc4a3649485d366b50abadec92d7\"\ - \ },\ - \ \"b9547b8a57656539a8d9bc42c008e38d9c8bd9c8adbb1e73ad529497\": {\ - \ \"delegate\": \"855d6fc1e54274e331e34478eeac8d060b0b90c1f9e8a2b01167c048\",\ - \ \"vrf\": \"66d5167a1f426bd1adcc8bbf4b88c280d38c148d135cb41e3f5a39f948ad7fcc\"\ - \ },\ - \ \"60baee25cbc90047e83fd01e1e57dc0b06d3d0cb150d0ab40bbfead1\": {\ - \ \"delegate\": \"7f72a1826ae3b279782ab2bc582d0d2958de65bd86b2c4f82d8ba956\",\ - \ \"vrf\": \"c0546d9aa5740afd569d3c2d9c412595cd60822bb6d9a4e8ce6c43d12bd0f674\"\ - \ },\ - \ \"f7b341c14cd58fca4195a9b278cce1ef402dc0e06deb77e543cd1757\": {\ - \ \"delegate\": \"69ae12f9e45c0c9122356c8e624b1fbbed6c22a2e3b4358cf0cb5011\",\ - \ \"vrf\": \"6394a632af51a32768a6f12dac3485d9c0712d0b54e3f389f355385762a478f2\"\ - \ },\ - \ \"162f94554ac8c225383a2248c245659eda870eaa82d0ef25fc7dcd82\": {\ - \ \"delegate\": \"4485708022839a7b9b8b639a939c85ec0ed6999b5b6dc651b03c43f6\",\ - \ \"vrf\": \"aba81e764b71006c515986bf7b37a72fbb5554f78e6775f08e384dbd572a4b32\"\ - \ },\ - \ \"2075a095b3c844a29c24317a94a643ab8e22d54a3a3a72a420260af6\": {\ - \ \"delegate\": \"6535db26347283990a252313a7903a45e3526ec25ddba381c071b25b\",\ - \ \"vrf\": \"fcaca997b8105bd860876348fc2c6e68b13607f9bbd23515cd2193b555d267af\"\ - \ },\ - \ \"268cfc0b89e910ead22e0ade91493d8212f53f3e2164b2e4bef0819b\": {\ - \ \"delegate\": \"1d4f2e1fda43070d71bb22a5522f86943c7c18aeb4fa47a362c27e23\",\ - \ \"vrf\": \"63ef48bc5355f3e7973100c371d6a095251c80ceb40559f4750aa7014a6fb6db\"\ - \ }\ - \ },\ - \ \"updateQuorum\": 5,\ - \ \"networkId\": \"Mainnet\",\ - \ \"initialFunds\": {},\ - \ \"maxLovelaceSupply\": 45000000000000000,\ - \ \"networkMagic\": 764824073,\ - \ \"epochLength\": 432000,\ - \ \"systemStart\": \"2017-09-23T21:44:51Z\",\ - \ \"slotsPerKESPeriod\": 129600,\ - \ \"slotLength\": 1,\ - \ \"maxKESEvolutions\": 62,\ - \ \"securityParam\": 2160\ - \}" diff --git a/libs/cardano-ledger-test/bench/Bench/Cardano/Ledger/SumStake.hs b/libs/cardano-ledger-test/bench/Bench/Cardano/Ledger/SumStake.hs deleted file mode 100644 index 5aa68961020..00000000000 --- a/libs/cardano-ledger-test/bench/Bench/Cardano/Ledger/SumStake.hs +++ /dev/null @@ -1,43 +0,0 @@ -{-# LANGUAGE ScopedTypeVariables #-} - -module Bench.Cardano.Ledger.SumStake (sumStakeBenchmarks) where - -import Cardano.Ledger.Coin -import Cardano.Ledger.Compactible -import Control.Monad -import Criterion -import Data.Foldable as F -import Data.Map.Strict as Map -import Data.VMap as VMap -import System.Random.Stateful - --------------------------------------------------------------------------------- --- Benchmark suite --------------------------------------------------------------------------------- - -sumStakeBenchmarks :: Benchmark -sumStakeBenchmarks = - let stdGen = mkStdGen 2021 - n = 100000 - stake :: [(Word, CompactForm Coin)] - stake = - runStateGen_ stdGen $ \gen -> - replicateM n $ do - cred <- uniformM gen -- Key is irrelevant for this benchmark - stakeAmount <- CompactCoin <$> uniformRM (0, 1000) gen - pure (cred, stakeAmount) - in bgroup - "sumAllStake" - [ env (pure (Map.fromList stake)) $ - bench "sum $ Map Word CompactCoin" . nf (Map.foldl' (\a (CompactCoin c) -> a + c) 0) - , env (pure (VMap.fromList stake :: VMap VB VP Word (CompactForm Coin))) $ - bench "sum $ VMap Word CompactCoin" . nf (VMap.foldl (\a (CompactCoin c) -> a + c) 0) - , env (pure (Map.fromList stake)) $ - bench "foldMap fromCompact $ Map Word CompactCoin" . nf (F.foldMap fromCompact) - , env (pure (VMap.fromList stake :: VMap VB VP Word (CompactForm Coin))) $ - bench "foldMap fromCompact $ VMap Word CompactCoin" . nf (VMap.foldMap fromCompact) - , env (pure (Map.fromList (fmap fromCompact <$> stake))) $ - bench "fold $ Map Word Coin" . nf F.fold - , env (pure (VMap.fromList (fmap fromCompact <$> stake) :: VMap VB VB Word Coin)) $ - bench "fold $ VMap Word Coin" . nf VMap.fold - ] diff --git a/libs/cardano-ledger-test/bench/Bench/Cardano/Ledger/TxOut.hs b/libs/cardano-ledger-test/bench/Bench/Cardano/Ledger/TxOut.hs deleted file mode 100644 index 8655320bea0..00000000000 --- a/libs/cardano-ledger-test/bench/Bench/Cardano/Ledger/TxOut.hs +++ /dev/null @@ -1,169 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} - -module Bench.Cardano.Ledger.TxOut (benchTxOut) where - -import Cardano.Crypto.Hash.Class -import Cardano.Ledger.Address -import Cardano.Ledger.Alonzo (Alonzo) -import Cardano.Ledger.Alonzo.TxBody -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.Binary (decodeFull, serialize) -import Cardano.Ledger.Coin -import Cardano.Ledger.Compactible -import Cardano.Ledger.Core -import Cardano.Ledger.Credential -import Cardano.Ledger.Crypto -import Cardano.Ledger.Keys -import Cardano.Ledger.Mary.Value -import Cardano.Ledger.SafeHash -import Cardano.Ledger.Val -import Control.DeepSeq -import Criterion.Main -import Data.Map.Strict (singleton) -import Data.Maybe -import qualified Data.Text as T -import Lens.Micro - -benchTxOut :: Benchmark -benchTxOut = - let ada :: MaryValue StandardCrypto - ada = inject (Coin 100) - key :: Int -> Credential 'Payment StandardCrypto - key = KeyHashObj . payAddr28 - stake :: StakeReference StandardCrypto - stake = StakeRefBase (KeyHashObj stakeAddr28) - addr :: Int -> Addr StandardCrypto - addr n = Addr Mainnet (key n) stake - value :: MaryValue StandardCrypto - value = - MaryValue (Coin 200) $ - MultiAsset (singleton (PolicyID policyId28) (singleton assName 217)) - txOutAddr :: Int -> TxOut Alonzo - txOutAddr n = - mkBasicTxOut (addr n) value & dataHashTxOutL .~ SJust dataHash32 - txOutAddrAdaOnly :: Int -> TxOut Alonzo - txOutAddrAdaOnly n = mkBasicTxOut (addr n) ada - txOutAddrAdaOnlyDataHash :: Int -> TxOut Alonzo - txOutAddrAdaOnlyDataHash n = - mkBasicTxOut (addr n) ada & dataHashTxOutL .~ SJust dataHash32 - count :: Int - count = 1000 - in bgroup - "TxOut" - [ bgroup - "construct" - [ constructTxOutAlonzoBench count "ValueDataHash" addr value (SJust dataHash32) - , constructTxOutAlonzoBench count "AdaOnlyDataHash" addr ada (SJust dataHash32) - , constructTxOutAlonzoBench count "AdaOnly" addr ada SNothing - ] - , bgroup - "access" - [ accessTxOutAlonzoBench count "ValueDataHash" txOutAddr - , accessTxOutAlonzoBench count "AdaOnlyDataHash" txOutAddrAdaOnlyDataHash - , accessTxOutAlonzoBench count "AdaOnly" txOutAddrAdaOnly - ] - , bgroup - "serialize" - [ serializeTxOutAlonzoBench count "ValueDataHash" txOutAddr - , serializeTxOutAlonzoBench count "AdaOnlyDataHash" txOutAddrAdaOnlyDataHash - , serializeTxOutAlonzoBench count "AdaOnly" txOutAddrAdaOnly - ] - ] - -constructTxOutAlonzoBench :: - Int -> - String -> - (Int -> Addr StandardCrypto) -> - MaryValue StandardCrypto -> - StrictMaybe (DataHash StandardCrypto) -> - Benchmark -constructTxOutAlonzoBench count name mkAddr value !mdh = - cvalue `seq` - bgroup - name - [ env (pure (mkAddr <$> [1 .. count])) $ - bench "TxOut" . nf (map (\addr -> AlonzoTxOut addr value mdh :: TxOut Alonzo)) - , env (pure (compactAddr . mkAddr <$> [1 .. count])) $ - bench "TxOutCompact" . nf (map (\caddr -> mkTxOutCompact caddr cvalue :: TxOut Alonzo)) - ] - where - cvalue = maybe (error "Uncompactible") id $ toCompact value - mkTxOutCompact :: - CompactAddr StandardCrypto -> CompactForm (MaryValue StandardCrypto) -> TxOut Alonzo - mkTxOutCompact = - case mdh of - SNothing -> TxOutCompact - SJust dh -> \a v -> TxOutCompactDH a v dh - -accessTxOutAlonzoBench :: Int -> String -> (Int -> TxOut Alonzo) -> Benchmark -accessTxOutAlonzoBench count name mkTxOuts = - bgroup - name - [ env (pure (mkTxOuts <$> [1 .. count])) $ \txOuts -> - bench "TxOut" $ - nf (map (\(AlonzoTxOut addr vl dh) -> addr `deepseq` vl `deepseq` dh)) txOuts - , env (pure (mkTxOuts <$> [1 .. count])) $ \txOuts -> - bench "TxOutCompact" $ - nf - ( map - ( \case - TxOutCompact addr vl -> addr `deepseq` vl - TxOutCompactDH addr vl dh -> addr `deepseq` dh `deepseq` vl - ) - ) - txOuts - , env (pure (mkTxOuts <$> [1 .. count])) $ \txOuts -> - bench "addrTxOutL" $ - nf (map (^. addrTxOutL)) txOuts - , env (pure (mkTxOuts <$> [1 .. count])) $ \txOuts -> - bench "valueTxOutL" $ nf (map (^. valueTxOutL)) txOuts - , env (pure (mkTxOuts <$> [1 .. count])) $ \txOuts -> - bench "coin . valueTxOutL" $ nf (map (coin . (^. valueTxOutL))) txOuts - , env (pure (mkTxOuts <$> [1 .. count])) $ \txOuts -> - bench "coinTxOutL" $ nf (map (^. coinTxOutL)) txOuts - ] - -serializeTxOutAlonzoBench :: Int -> String -> (Int -> TxOut Alonzo) -> Benchmark -serializeTxOutAlonzoBench count name mkTxOuts = - bgroup - name - [ env (pure (mkTxOuts <$> [1 .. count])) $ bench "EncCBOR" . nf (map (serialize v)) - , env (pure (serialize v . mkTxOuts <$> [1 .. count])) $ - bench "DecCBOR" . nf (map (either (error . show) (id @(TxOut Alonzo)) . decodeFull v)) - ] - where - v = eraProtVerHigh @Alonzo - -payAddr28 :: Int -> KeyHash 'Payment StandardCrypto -payAddr28 n = - let i = n `mod` 10 - prefix = T.pack (take 6 (cycle (show i))) - in KeyHash $ - fromJust $ - hashFromTextAsHex - (prefix <> "0405060708090a0b0c0d0e0f12131415161718191a1b1c1d1e") - -stakeAddr28 :: KeyHash 'Staking StandardCrypto -stakeAddr28 = - KeyHash $ - fromJust $ - hashFromTextAsHex "2122232425262728292a2b2c2d2e2f32333435363738393a3b3c3d3e" - -dataHash32 :: DataHash StandardCrypto -dataHash32 = - unsafeMakeSafeHash $ - fromJust $ - hashFromTextAsHex "404144434445464748494a4b4c4d4e4f505152555455565758595a5b5c5d5e5f" - -policyId28 :: ScriptHash StandardCrypto -policyId28 = - ScriptHash $ - fromJust $ - hashFromTextAsHex "6166636465666768696a6b6c6d6e6f72777475767778797a7b7c7d7e" - -assName :: AssetName -assName = AssetName "Booyah" diff --git a/libs/cardano-ledger-test/bench/Bench/Constrained/STS.hs b/libs/cardano-ledger-test/bench/Bench/Constrained/STS.hs deleted file mode 100644 index a19b7b31af7..00000000000 --- a/libs/cardano-ledger-test/bench/Bench/Constrained/STS.hs +++ /dev/null @@ -1,40 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE TypeApplications #-} - -module Bench.Constrained.STS where - -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.Conway -import Cardano.Ledger.Conway.Rules -import Cardano.Ledger.Crypto -import Constrained -import Constrained.Bench -import Criterion -import Test.Cardano.Ledger.Constrained.Conway - -govEnv :: GovEnv (ConwayEra StandardCrypto) -govEnv = genFromSpecWithSeed 10 30 (govEnvSpec @ConwayFn) - -singleProposalTreeSpec :: Spec ConwayFn ProposalTree -singleProposalTreeSpec = constrained $ \ppupTree -> - [ wellFormedChildren (lit SNothing) ppupTree - , allGASInTree ppupTree $ \gas -> - isCon @"ParameterChange" (pProcGovAction_ . gasProposalProcedure_ $ gas) - , forAll (snd_ ppupTree) (genHint $ (Just 2, 10)) - ] - -stsBenchmarks :: Benchmark -stsBenchmarks = - bgroup - "constrainedSTS" - [ benchSpec 10 30 "govEnvSpec" (govEnvSpec @ConwayFn) - , benchSpec 13 30 "govProposalsSpec" govPropSpec - , benchSpec 13 30 "singleProposalTreeSpec" singleProposalTreeSpec - , bench "theProposalSpec" (nf (show . govProposalsSpec @ConwayFn) govEnv) - ] - where - govPropSpec = govProposalsSpec @ConwayFn govEnv diff --git a/libs/cardano-ledger-test/bench/Main.hs b/libs/cardano-ledger-test/bench/Main.hs deleted file mode 100644 index 77042fc290a..00000000000 --- a/libs/cardano-ledger-test/bench/Main.hs +++ /dev/null @@ -1,26 +0,0 @@ -module Main where - -import qualified Bench.Cardano.Ledger.ApplyTx as ApplyTx - --- TODO: re-enable, once the benchmark is fixed --- import qualified Bench.Cardano.Ledger.Balance as Balance -import qualified Bench.Cardano.Ledger.EpochBoundary as Epoch -import qualified Bench.Cardano.Ledger.Serialisation.Generators as SerGen -import qualified Bench.Cardano.Ledger.StakeDistr as StakeDistr (tickfRuleBench) -import qualified Bench.Cardano.Ledger.SumStake as SumStake -import qualified Bench.Cardano.Ledger.TxOut as TxOut -import qualified Bench.Constrained.STS as ConstrainedSTS -import Criterion.Main (defaultMain) - -main :: IO () -main = - defaultMain - [ StakeDistr.tickfRuleBench - , TxOut.benchTxOut - , SerGen.benchTxGeneration - , ApplyTx.applyTxBenchmarks - , Epoch.aggregateUtxoBench - , SumStake.sumStakeBenchmarks - , ConstrainedSTS.stsBenchmarks - -- Balance.balanceBenchmarks - ] diff --git a/libs/cardano-ledger-test/bench/resources/0_ledgerstate.cbor b/libs/cardano-ledger-test/bench/resources/0_ledgerstate.cbor deleted file mode 100644 index 24091d9466ec07cae62b9ffcca43a34866d10992..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4869 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 J_)LW&{~tsPD<1#= diff --git a/libs/cardano-ledger-test/bench/resources/0_tx.cbor b/libs/cardano-ledger-test/bench/resources/0_tx.cbor deleted file mode 100644 index 755fc699535b01ac86019d7aeb6fde7af2494dfe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 529 zcmZo(%Fx#2C9s%1>W9dZi&^;$O4R)+hM6}UjRX$P#WaJvC{M91j)#H<; zGCEN4Eux;u>-b0s(CA3U(sF0FQRh{Fj@dEMVjToBbY)sT+{0CI5Is}kc@6ZO<#zIf%mD0sme@+m$V z2q=A2XID~%PHyX~eHPsz-whC*(zb|?1_4rtSoNA%pFcjUy7@wJqSqTF82inOkJJEV z)XAjcV+S-l2Kq-W_5bh>5-1G(#YckyB^htpSF$@^vMFMY?Q^|;Hc(IJX7iCy9hC1u zFJ zcscroExhab0g-)_Ctzv>D5E|qMT5$xB|LOrueEee9FVrNKg%?QQ=pUB8N`Q ze?(rdc-#}wvlkMW8VxGvon@!z52vj^>>rhAUi?;oXy;@LOpO6WWF0&8VdXd!_48=b z=OdMG5Lp)^!_-(%n#{cF^R3-JWv}m?4t5?PL}Xz*))YcbPyq~jzdS&+Ch=!cdwysS z2Si=B_QPUnfl}D(zA8G}U%|_NTK)554%ZMplKu-*+Mv2g-`a!5^#@L+M9i0+^Dl)O zti^g&r~|5O-x`y8#;bdi4mIm=?Bv^sI5(BVV(Efvv$`>T)Vm43TVfK; z{=LcYW3QLXdY7s`9;cm+sQwk_u~_3lsU>VUQYv>0vnzRRdQZ#!9U|{cz_;?K;v zU-lDI7NFRy4z3D0@igPMF(O=?zhKG|6q|{}=8Ya?HWh`)l^ydjWd(|zOx(;7T#m;x zVGW9%t6VI)ay>qoW`bhtK1-ahR+_sp1QB*6Z?P36pz^X?cEr6F%-|*y)#`-DnhlDb z09?N4XW=1OEGa0q?zy>2^(fcGlnrmi`a@NDD?%Eq5ginF7*n>O*zVxwDji>Dim5rg z71KwFXGTWbB_Jwfn+B%rKsjb+&!wtoui(0a)as3|I2Y8A(tE;HS1SFyA zOnHDZU8><}a-r@b7pup|#4b#Ef?_+3s|h04rWsRSpxDz8SJAXy2!7&Q3W}YDT&)UX zp5tG>WuVyk#eF*{HCYF?;&M>z8GxJ7)UFQv#ODpFvWJWetBr_N&~OzBjNRb;RqK|) zNE^hnQk`-Z74(}(z_HL%FL$_YXIlQ*%v8~pib1Cl9i3avN5AiY|GSa=7r`BnD^zal z|3$y=faR2_*xfD9F=*A<_Cvl+dWbSexy?ww2gp8L*{S=!&Y56r&DrG$fwwWM0&go!3L@4!ER9wf7_~G}D&Lu>SSs4A?rADHZMMH`uiBtFjO2VqsO#nG!pYKm?t4mVL(VG; sWRm>G)^Ks&$nlKij8y+?Y1yl@gK2_xN;dMb{%PWDYMfM-Z7Kk;d546v*)PfsFYz$yvwJd0#qOP2M_D zis`%7M4))VpU{mjY?j{0+Fa$m>|9wCRNO!zO~+!{+m)ie@(is{)ov8R)F7AX!2OQOhD6IcUC%F z3MSCxk=|jsuXJ&;6;4z1B`kJ0}y*MEA-N6#84ChDdfy@l``(8qJ I;p@Kv04_|b9RL6T diff --git a/libs/cardano-ledger-test/bench/resources/DESCRIPTION.md b/libs/cardano-ledger-test/bench/resources/DESCRIPTION.md deleted file mode 100644 index 99fdef9343f..00000000000 --- a/libs/cardano-ledger-test/bench/resources/DESCRIPTION.md +++ /dev/null @@ -1,76 +0,0 @@ -This directory contains sample encoded resources for benchmarking purposes. They -are indexed by number. - -# Example 0 - -Shelley era ledger state and transaction for benchmarking of transaction -application. - -## Generation -These examples were generated using the following script (executed in `cabal repl cardano-ledger-shelley-test`) - -``` -:set -XTypeApplications - -import Data.Proxy - -import Cardano.Binary -import Control.State.Transition.Trace -import Control.State.Transition.Trace.Generator.QuickCheck -import qualified Data.ByteString as BS -import Cardano.Ledger.Shelley.Rules.Ledger -import Cardano.Ledger.Shelley -import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes - -import Test.Cardano.Ledger.Shelley.Utils -import Test.Cardano.Ledger.Shelley.Generator.Presets -import Test.Cardano.Ledger.Shelley.Generator.Trace.Ledger () -import Test.Cardano.Ledger.Shelley.Generator.ShelleyEraGen () -import Cardano.Ledger.Shelley.PParams (PParams'(..)) - -import Test.QuickCheck (generate) - -import Test.Cardano.Ledger.Shelley.Generator.Trace.Ledger - -let ge = genEnv (Proxy @(ShelleyEra C_Crypto)) -initLs <- generate $ mkGenesisLedgerState @([LedgerPredicateFailure (ShelleyEra C_Crypto)]) ge undefined -tr <- generate $ traceFromInitState @(LEDGER (ShelleyEra C_Crypto)) testGlobals 20 ge (Just $ \_ -> pure initLs) - -let sst = last $ sourceSignalTargets tr -BS.writeFile "/tmp/0_ledgerstate.cbor" $ serialize' (source sst) -BS.writeFile "/tmp/0_tx.cbor" $ serialize' (signal sst) -``` -``` -:set -XTypeApplications - -import Data.Proxy - -import Cardano.Binary -import Control.State.Transition.Trace -import Control.State.Transition.Trace.Generator.QuickCheck -import qualified Data.ByteString as BS -import Cardano.Ledger.Shelley.Rules.Ledger -import Cardano.Ledger.Shelley -import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes - -import Test.Cardano.Ledger.Shelley.Utils -import Test.Cardano.Ledger.Shelley.Generator.Presets -import Test.Cardano.Ledger.Shelley.Generator.Trace.Ledger () -import Test.Cardano.Ledger.Shelley.Generator.ShelleyEraGen () -import Cardano.Ledger.Shelley.PParams (PParams'(..)) -import Test.QuickCheck (generate) - -import Test.Cardano.Ledger.Shelley.Generator.Trace.Ledger - -import Cardano.Ledger.Allegra -import Test.Cardano.Ledger.AllegraEraGen () - - -let ge = genEnv (Proxy @(AllegraEra C_Crypto)) -initLs <- generate $ mkGenesisLedgerState @([LedgerPredicateFailure (AllegraEra C_Crypto)]) ge undefined -tr <- generate $ traceFromInitState @(LEDGER (AllegraEra C_Crypto)) testGlobals 20 ge (Just $ \_ -> pure initLs) - -let sst = last $ sourceSignalTargets tr -BS.writeFile "/tmp/0_ledgerstate.cbor" $ serialize' (source sst) -BS.writeFile "/tmp/0_tx.cbor" $ serialize' (signal sst) -``` diff --git a/libs/cardano-ledger-test/benchProperty/Main.hs b/libs/cardano-ledger-test/benchProperty/Main.hs deleted file mode 100644 index 98c9eab6679..00000000000 --- a/libs/cardano-ledger-test/benchProperty/Main.hs +++ /dev/null @@ -1,73 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeApplications #-} --- Embed instances for (AlonzoEra TestCrypto) -{-# OPTIONS_GHC -fno-warn-orphans #-} - -{- -nix develop .#profiling --} --- Second set up the cabal.project.local (in the root of the cardano-ledger directory) as follows. -{- -ignore-project: False -profiling: True -profiling-detail: all-functions -package plutus-core - ghc-options: -fexternal-interpreter --} --- In the cardano-ledger-test directory (where the cardano-ledger-test.cabal file resides) --- This cabal file defines the benchProperty benchmark. Now build with profiling enabled --- cabal build benchProperty --enable-profiling --- Now run the build with the -- +RTS -p flags --- cabal run benchProperty -- +RTS -p --- --- When you are done be sure an reset the cabal.project.local, and rebuild things --- without profiling enabled. One way to do this is --- Reset the cabal.project.local file --- cabal configure --- Rebuild everything in the current project --- cabal build - --- | This benchmark file is for profiling Property tests. It appears as a benchmark --- but we do not use any of the criterion stuff. We just run main, which is profiled. --- First be sure and enter the `nix develop .#profiling` shell -module Main where - -import Cardano.Ledger.Alonzo (AlonzoEra) -import Cardano.Ledger.Alonzo.Rules (AlonzoBBODY, AlonzoUTXOW) -import Cardano.Ledger.Shelley.Rules ( - ShelleyLEDGER, - ShelleyLedgerEvent (UtxowEvent), - ShelleyLedgerPredFailure (UtxowFailure), - ) -import Control.State.Transition.Extended (Embed (..)) -import Test.Cardano.Ledger.Alonzo.AlonzoEraGen () -import Test.Cardano.Ledger.Alonzo.EraMapping () -import Test.Cardano.Ledger.EraBuffet (TestCrypto) -import Test.Cardano.Ledger.Shelley.Rules.Chain ( - CHAIN, - ChainEvent (..), - TestChainPredicateFailure (..), - ) -import Test.Cardano.Ledger.Shelley.Rules.ClassifyTraces (relevantCasesAreCovered) -import qualified Test.Tasty as T - --- =============================================================== - -instance Embed (AlonzoBBODY (AlonzoEra TestCrypto)) (CHAIN (AlonzoEra TestCrypto)) where - wrapFailed = BbodyFailure - wrapEvent = BbodyEvent - -instance Embed (AlonzoUTXOW (AlonzoEra TestCrypto)) (ShelleyLEDGER (AlonzoEra TestCrypto)) where - wrapFailed = UtxowFailure - wrapEvent = UtxowEvent - -profileCover :: IO () -profileCover = - T.defaultMain $ - relevantCasesAreCovered @(AlonzoEra TestCrypto) 1 - -main :: IO () -main = profileCover diff --git a/libs/cardano-ledger-test/cardano-ledger-test.cabal b/libs/cardano-ledger-test/cardano-ledger-test.cabal deleted file mode 100644 index 82c98dadc4b..00000000000 --- a/libs/cardano-ledger-test/cardano-ledger-test.cabal +++ /dev/null @@ -1,246 +0,0 @@ -cabal-version: 3.0 -name: cardano-ledger-test -version: 9.9.9.9 -license: Apache-2.0 -maintainer: operations@iohk.io -author: IOHK -synopsis: - Testing harness, tests and benchmarks for Shelley style cardano ledgers - -build-type: Simple -extra-source-files: CHANGELOG.md - -source-repository head - type: git - location: https://github.com/intersectmbo/cardano-ledger - subdir: libs/cardano-ledger-test - -library - exposed-modules: - Test.Cardano.Ledger.Alonzo.Tools - Test.Cardano.Ledger.Constrained.Ast - Test.Cardano.Ledger.Constrained.Utils - Test.Cardano.Ledger.Constrained.Classes - Test.Cardano.Ledger.Constrained.Combinators - Test.Cardano.Ledger.Constrained.Env - Test.Cardano.Ledger.Constrained.Examples - Test.Cardano.Ledger.Constrained.Lenses - Test.Cardano.Ledger.Constrained.Monad - Test.Cardano.Ledger.Constrained.Pairing - Test.Cardano.Ledger.Constrained.Stage - Test.Cardano.Ledger.Constrained.Preds.PParams - Test.Cardano.Ledger.Constrained.Preds.Universes - Test.Cardano.Ledger.Constrained.Preds.TxOut - Test.Cardano.Ledger.Constrained.Preds.Tx - Test.Cardano.Ledger.Constrained.Preds.CertState - Test.Cardano.Ledger.Constrained.Preds.Repl - Test.Cardano.Ledger.Constrained.Preds.Certs - Test.Cardano.Ledger.Constrained.Preds.LedgerState - Test.Cardano.Ledger.Constrained.Preds.NewEpochState - Test.Cardano.Ledger.Constrained.Preds.UTxO - Test.Cardano.Ledger.Constrained.Trace.TraceMonad - Test.Cardano.Ledger.Constrained.Trace.SimpleTx - Test.Cardano.Ledger.Constrained.Trace.Actions - Test.Cardano.Ledger.Constrained.Trace.Pipeline - Test.Cardano.Ledger.Constrained.Trace.Tests - Test.Cardano.Ledger.Constrained.Trace.DrepCertTx - Test.Cardano.Ledger.Constrained.Spec - Test.Cardano.Ledger.Constrained.SpecClass - Test.Cardano.Ledger.Constrained.Tests - Test.Cardano.Ledger.Constrained.TypeRep - Test.Cardano.Ledger.Constrained.Vars - Test.Cardano.Ledger.Constrained.Rewrite - Test.Cardano.Ledger.Constrained.Shrink - Test.Cardano.Ledger.Constrained.Scripts - Test.Cardano.Ledger.Constrained.Size - Test.Cardano.Ledger.Constrained.Solver - Test.Cardano.Ledger.Constrained.Conway - Test.Cardano.Ledger.Constrained.Conway.Instances - Test.Cardano.Ledger.Constrained.Conway.Cert - Test.Cardano.Ledger.Constrained.Conway.Ledger - Test.Cardano.Ledger.Constrained.Conway.Deleg - Test.Cardano.Ledger.Constrained.Conway.Pool - Test.Cardano.Ledger.Constrained.Conway.GovCert - Test.Cardano.Ledger.Constrained.Conway.PParams - Test.Cardano.Ledger.Constrained.Conway.Gov - Test.Cardano.Ledger.Constrained.Conway.Utxo - Test.Cardano.Ledger.Examples.BabbageFeatures - Test.Cardano.Ledger.Examples.AlonzoValidTxUTXOW - Test.Cardano.Ledger.Examples.AlonzoInvalidTxUTXOW - Test.Cardano.Ledger.Examples.AlonzoBBODY - Test.Cardano.Ledger.Examples.AlonzoCollectInputs - Test.Cardano.Ledger.Examples.AlonzoAPI - Test.Cardano.Ledger.Examples.STSTestUtils - Test.Cardano.Ledger.EraClass - Test.Cardano.Ledger.Generic.AggPropTests - Test.Cardano.Ledger.Generic.ApplyTx - Test.Cardano.Ledger.Generic.Indexed - Test.Cardano.Ledger.Generic.Fields - Test.Cardano.Ledger.Generic.Functions - Test.Cardano.Ledger.Generic.GenState - Test.Cardano.Ledger.Generic.TxGen - Test.Cardano.Ledger.Generic.Proof - Test.Cardano.Ledger.Generic.MockChain - Test.Cardano.Ledger.Generic.ModelState - Test.Cardano.Ledger.Generic.PrettyCore - Test.Cardano.Ledger.Generic.PrettyTest - Test.Cardano.Ledger.Generic.Properties - Test.Cardano.Ledger.Generic.Same - Test.Cardano.Ledger.Generic.Scriptic - Test.Cardano.Ledger.Generic.Trace - Test.Cardano.Ledger.Generic.Updaters - Test.Cardano.Ledger.NoThunks - Test.Cardano.Ledger.STS - Test.Cardano.Ledger.TestableEra - Test.Cardano.Ledger.ValueFromList - Test.Cardano.Ledger.Tickf - - hs-source-dirs: src - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints - -Wunused-packages - - build-depends: - cryptonite, - array, - base >=4.14 && <5, - bech32, - bytestring, - cardano-data, - cardano-crypto-class, - cardano-crypto-wrapper, - cardano-crypto, - cardano-ledger-allegra:{cardano-ledger-allegra, testlib}, - cardano-ledger-alonzo:{cardano-ledger-alonzo, testlib}, - cardano-ledger-alonzo-test, - cardano-ledger-api, - cardano-ledger-babbage:{cardano-ledger-babbage, testlib}, - cardano-ledger-babbage-test, - cardano-ledger-byron, - cardano-ledger-binary:{cardano-ledger-binary, testlib}, - cardano-ledger-conway:{cardano-ledger-conway, testlib}, - cardano-ledger-core:{cardano-ledger-core, testlib}, - cardano-ledger-mary, - cardano-ledger-shelley:{cardano-ledger-shelley, testlib}, - cardano-ledger-shelley-test, - cardano-ledger-shelley-ma-test, - cardano-protocol-tpraos:{cardano-protocol-tpraos, testlib}, - cardano-slotting:{cardano-slotting, testlib}, - deepseq, - containers, - formatting, - groups, - haskeline, - hashable, - vector-map, - data-default-class, - microlens, - mtl, - nothunks, - hspec, - plutus-ledger-api ^>=1.25.0, - prettyprinter, - QuickCheck, - small-steps:{small-steps, testlib} >=1.1, - set-algebra, - cardano-strict-containers, - tasty, - tasty-hunit, - tasty-quickcheck, - text, - time, - transformers, - unordered-containers, - vector, - constrained-generators, - random, - FailT - -test-suite cardano-ledger-test - type: exitcode-stdio-1.0 - main-is: Tests.hs - hs-source-dirs: test - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints - -Wunused-packages -rtsopts -threaded - - build-depends: - base, - cardano-ledger-test, - tasty, - data-default-class - -benchmark bench - type: exitcode-stdio-1.0 - main-is: Main.hs - hs-source-dirs: bench - other-modules: - Bench.Cardano.Ledger.ApplyTx - Bench.Cardano.Ledger.ApplyTx.Gen - Bench.Cardano.Ledger.EpochBoundary - Bench.Cardano.Ledger.Serialisation.Generators - Bench.Cardano.Ledger.SumStake - Bench.Cardano.Ledger.TxOut - Bench.Cardano.Ledger.StakeDistr - Bench.Constrained.STS - - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints - -Wunused-packages -threaded -rtsopts -O2 - - build-depends: - base, - aeson, - bytestring, - cardano-crypto-class, - cardano-ledger-allegra, - cardano-ledger-alonzo, - cardano-ledger-alonzo-test, - cardano-ledger-binary, - cardano-ledger-conway, - cardano-ledger-test, - cardano-ledger-core, - cardano-ledger-shelley-ma-test, - cardano-ledger-mary:{cardano-ledger-mary, testlib}, - vector-map, - containers, - criterion, - data-default-class, - deepseq, - QuickCheck, - cardano-ledger-shelley:{cardano-ledger-shelley, testlib}, - cardano-ledger-shelley-test, - cardano-slotting:{cardano-slotting, testlib}, - microlens, - mtl, - random, - small-steps:{small-steps, testlib} >=1.1, - cardano-strict-containers >=0.1.1, - text, - constrained-generators - -benchmark benchProperty - type: exitcode-stdio-1.0 - main-is: Main.hs - hs-source-dirs: benchProperty - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints - -Wunused-packages -threaded -rtsopts -O2 - - build-depends: - base, - cardano-ledger-alonzo, - cardano-ledger-alonzo-test, - cardano-ledger-shelley-ma-test, - small-steps >=1.1, - cardano-ledger-shelley, - cardano-ledger-shelley-test, - tasty diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Alonzo/Tools.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Alonzo/Tools.hs deleted file mode 100644 index 94af460f262..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Alonzo/Tools.hs +++ /dev/null @@ -1,317 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} - -module Test.Cardano.Ledger.Alonzo.Tools (tests) where - -import Cardano.Crypto.DSIGN -import qualified Cardano.Crypto.Hash as Crypto -import Cardano.Ledger.Alonzo.Core -import Cardano.Ledger.Alonzo.Plutus.Context (EraPlutusContext) -import Cardano.Ledger.Alonzo.Scripts (AlonzoPlutusPurpose (..)) -import Cardano.Ledger.Alonzo.TxWits -import Cardano.Ledger.Alonzo.UTxO (AlonzoScriptsNeeded) -import Cardano.Ledger.Api.Tx (TransactionScriptFailure (..), evalTxExUnits) -import Cardano.Ledger.BaseTypes (ProtVer (..), ShelleyBase, inject) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Crypto -import Cardano.Ledger.Plutus ( - Data (..), - ExUnits (..), - Language (..), - exBudgetToExUnits, - transExUnits, - ) -import Cardano.Ledger.SafeHash (hashAnnotated) -import Cardano.Ledger.Shelley.LedgerState (IncrementalStake (..), UTxOState (..)) -import Cardano.Ledger.Shelley.Rules (UtxoEnv (..)) -import Cardano.Ledger.Shelley.UTxO (EraUTxO (..), UTxO (..)) -import Cardano.Slotting.EpochInfo (EpochInfo, fixedEpochInfo) -import Cardano.Slotting.Slot (EpochSize (..), SlotNo (..)) -import Cardano.Slotting.Time (SystemStart (..), mkSlotLength) -import Control.State.Transition.Extended (STS (BaseM, Environment, Signal, State), TRC (TRC)) -import Data.Default.Class (Default (..)) -import Data.Map (Map) -import qualified Data.Map.Strict as Map -import qualified Data.Sequence.Strict as SSeq -import qualified Data.Set as Set -import Data.Text (Text) -import Data.Time.Clock.POSIX (posixSecondsToUTCTime) -import Lens.Micro -import qualified PlutusLedgerApi.V1 as PV1 -import Test.Cardano.Ledger.Alonzo.Serialisation.Generators () -import Test.Cardano.Ledger.Babbage.Serialisation.Generators () -import Test.Cardano.Ledger.Core.KeyPair (mkWitnessVKey) -import Test.Cardano.Ledger.Examples.STSTestUtils ( - initUTxO, - mkGenesisTxIn, - mkTxDats, - someAddr, - someKeys, - ) -import Test.Cardano.Ledger.Generic.Proof (Proof (Alonzo, Babbage)) -import Test.Cardano.Ledger.Generic.Scriptic (PostShelley, Scriptic, always) -import Test.Cardano.Ledger.Generic.Updaters -import Test.Cardano.Ledger.Plutus (zeroTestingCostModels) -import Test.Cardano.Ledger.Shelley.Utils (applySTSTest, runShelleyBase) -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.HUnit (assertFailure, testCase, (@=?)) -import Test.Tasty.QuickCheck (Gen, Property, arbitrary, counterexample, testProperty) - -tests :: TestTree -tests = - testGroup - "ExUnit tools" - [ testProperty "Plutus ExUnit translation round-trip" exUnitsTranslationRoundTrip - , testGroup - "Alonzo" - [ testCase "calculate ExUnits" (exampleExUnitCalc Alonzo) - , testCase "attempt calculate ExUnits with invalid tx" (exampleInvalidExUnitCalc Alonzo) - ] - , testGroup - "Babbage" - [ testCase "calculate ExUnits" (exampleExUnitCalc Babbage) - , testCase "attempt calculate ExUnits with invalid tx" (exampleInvalidExUnitCalc Babbage) - ] - ] - --- ExUnits should remain intact when translating to and from the plutus type -exUnitsTranslationRoundTrip :: Gen Property -exUnitsTranslationRoundTrip = do - e <- arbitrary - let result = exBudgetToExUnits (transExUnits e) - pure - $ counterexample - ( "Before: " - <> show e - <> "\n After: " - <> show result - ) - $ result == Just e - -testSystemStart :: SystemStart -testSystemStart = SystemStart $ posixSecondsToUTCTime 0 - --- checks plutus script validation against a tx which has had --- its ex units replaced by the output of evalTxExUnits -testExUnitCalculation :: - forall era m. - ( MonadFail m - , BaseM (EraRule "UTXOS" era) ~ ShelleyBase - , State (EraRule "UTXOS" era) ~ UTxOState era - , Environment (EraRule "UTXOS" era) ~ UtxoEnv era - , Signal (EraRule "UTXOS" era) ~ Tx era - , AlonzoEraTx era - , STS (EraRule "UTXOS" era) - , EraUTxO era - , ScriptsNeeded era ~ AlonzoScriptsNeeded era - , EraPlutusContext era - ) => - Tx era -> - UTxOState era -> - UtxoEnv era -> - EpochInfo (Either Text) -> - SystemStart -> - (forall a. String -> m a) -> - m () -testExUnitCalculation tx utxoState ue ei ss err = do - tx' <- updateTxExUnits tx utxo ei ss err - _ <- - failLeft err $ - runShelleyBase $ - applySTSTest @(EraRule "UTXOS" era) (TRC (ue, utxoState, tx')) - pure () - where - utxo = utxosUtxo utxoState - -exampleExUnitCalc :: - forall era. - ( BaseM (EraRule "UTXOS" era) ~ ShelleyBase - , State (EraRule "UTXOS" era) ~ UTxOState era - , Environment (EraRule "UTXOS" era) ~ UtxoEnv era - , Signable (DSIGN (EraCrypto era)) (Crypto.Hash (HASH (EraCrypto era)) EraIndependentTxBody) - , Signal (EraRule "UTXOS" era) ~ Tx era - , STS (EraRule "UTXOS" era) - , AlonzoEraTx era - , PostShelley era - , EraUTxO era - , ScriptsNeeded era ~ AlonzoScriptsNeeded era - , PlutusPurpose AsIx era ~ AlonzoPlutusPurpose AsIx era - , EraPlutusContext era - , EraGov era - ) => - Proof era -> - IO () -exampleExUnitCalc proof = - testExUnitCalculation - (exampleTx proof (AlonzoSpending (AsIx 0))) - (ustate proof) - uenv - exampleEpochInfo - testSystemStart - assertFailure - -exampleInvalidExUnitCalc :: - forall era. - ( PostShelley era - , AlonzoEraTx era - , EraUTxO era - , ScriptsNeeded era ~ AlonzoScriptsNeeded era - , PlutusPurpose AsIx era ~ AlonzoPlutusPurpose AsIx era - , Signable - (DSIGN (EraCrypto era)) - (Crypto.Hash (HASH (EraCrypto era)) EraIndependentTxBody) - , EraPlutusContext era - ) => - Proof era -> - IO () -exampleInvalidExUnitCalc proof = do - let result = - evalTxExUnits @era - testPParams - (exampleTx proof (AlonzoSpending (AsIx 1))) - (initUTxO proof) - exampleEpochInfo - testSystemStart - case result of - Left err -> - assertFailure $ - "evalTxExUnits should not have failed, but it did with: " ++ show err - Right report -> - case [(rdmrPtr, failure) | (rdmrPtr, Left failure) <- Map.toList report] of - [] -> - assertFailure "evalTxExUnits should have produced a failing report" - [(_, failure)] -> - RedeemerPointsToUnknownScriptHash (AlonzoSpending (AsIx 1)) - @=? failure - failures -> - assertFailure $ - "evalTxExUnits produce failing scripts with unexpected errors: " - ++ show failures - -exampleTx :: - ( Scriptic era - , AlonzoEraTx era - , PlutusPurpose AsIx era ~ AlonzoPlutusPurpose AsIx era - , Signable (DSIGN (EraCrypto era)) (Crypto.Hash (HASH (EraCrypto era)) EraIndependentTxBody) - ) => - Proof era -> - PlutusPurpose AsIx era -> - Tx era -exampleTx pf ptr = - mkBasicTx (validatingBody pf) - & witsTxL .~ wits - where - wits = - mkBasicTxWits - & addrTxWitsL - .~ Set.fromList [mkWitnessVKey (hashAnnotated (validatingBody pf)) (someKeys pf)] - & hashScriptTxWitsL .~ [always 3 pf] - & hashDataTxWitsL .~ [Data (PV1.I 123)] - & rdmrsTxWitsL - .~ Redeemers (Map.singleton ptr (Data (PV1.I 42), ExUnits 5000 5000)) - -validatingBody :: - forall era. - ( Scriptic era - , AlonzoEraTxBody era - , AlonzoEraScript era - , PlutusPurpose AsIx era ~ AlonzoPlutusPurpose AsIx era - ) => - Proof era -> - TxBody era -validatingBody pf = - mkBasicTxBody - & inputsTxBodyL .~ Set.fromList [mkGenesisTxIn 1] - & collateralInputsTxBodyL .~ Set.fromList [mkGenesisTxIn 11] - & outputsTxBodyL - .~ SSeq.fromList [mkBasicTxOut (someAddr pf) (inject $ Coin 4995)] - & feeTxBodyL .~ Coin 5 - & scriptIntegrityHashTxBodyL - .~ newScriptIntegrityHash pf testPParams [PlutusV1] redeemers (mkTxDats (Data (PV1.I 123))) - where - redeemers = - Redeemers $ - Map.singleton (AlonzoSpending @_ @era (AsIx 0)) (Data (PV1.I 42), ExUnits 5000 5000) - -exampleEpochInfo :: Monad m => EpochInfo m -exampleEpochInfo = fixedEpochInfo (EpochSize 100) (mkSlotLength 1) - -uenv :: AlonzoEraPParams era => UtxoEnv era -uenv = UtxoEnv (SlotNo 0) testPParams def - -ustate :: - ( EraTxOut era - , PostShelley era - , EraGov era - ) => - Proof era -> - UTxOState era -ustate pf = - UTxOState - { utxosUtxo = initUTxO pf - , utxosDeposited = Coin 0 - , utxosFees = Coin 0 - , utxosGovState = def - , utxosStakeDistr = IStake mempty mempty - , utxosDonation = mempty - } - -updateTxExUnits :: - forall era m. - ( MonadFail m - , AlonzoEraTx era - , EraUTxO era - , ScriptsNeeded era ~ AlonzoScriptsNeeded era - , EraPlutusContext era - ) => - Tx era -> - UTxO era -> - EpochInfo (Either Text) -> - SystemStart -> - (forall a. String -> m a) -> - m (Tx era) -updateTxExUnits tx utxo ei ss err = - let res = evalTxExUnits testPParams tx utxo ei ss - in case res of - Left e -> err (show e) - Right - ( rdmrs :: - Map - (PlutusPurpose AsIx era) - (Either (TransactionScriptFailure era) ExUnits) - ) -> - replaceRdmrs tx <$> traverse (failLeft err) rdmrs - -replaceRdmrs :: - forall era. - (AlonzoEraTxWits era, EraTx era) => - Tx era -> - Map (PlutusPurpose AsIx era) ExUnits -> - Tx era -replaceRdmrs tx rdmrs = tx & witsTxL . rdmrsTxWitsL .~ newRdmrs - where - newRdmrs = Map.foldrWithKey replaceRdmr (tx ^. witsTxL . rdmrsTxWitsL) rdmrs - - replaceRdmr :: PlutusPurpose AsIx era -> ExUnits -> Redeemers era -> Redeemers era - replaceRdmr ptr ex x@(Redeemers r) = - case Map.lookup ptr r of - Just (dat, _ex) -> Redeemers $ Map.insert ptr (dat, ex) r - Nothing -> x - -failLeft :: (Monad m, Show e) => (String -> m a) -> Either e a -> m a -failLeft _ (Right a) = pure a -failLeft err (Left e) = err (show e) - -testPParams :: forall era. AlonzoEraPParams era => PParams era -testPParams = - emptyPParams - & ppCostModelsL .~ zeroTestingCostModels [PlutusV1] - & ppMaxValSizeL .~ 1000000000 - & ppMaxTxExUnitsL .~ ExUnits 100000000 100000000 - & ppMaxBlockExUnitsL .~ ExUnits 100000000 100000000 - & ppProtocolVersionL .~ ProtVer (eraProtVerHigh @era) 0 diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Ast.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Ast.hs deleted file mode 100644 index a3453fd99bd..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Ast.hs +++ /dev/null @@ -1,1238 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE FunctionalDependencies #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE ViewPatterns #-} - --- | The types that make up the Abstract Syntax Trees of the Language -module Test.Cardano.Ledger.Constrained.Ast where - -import Cardano.Ledger.Coin (Coin (..), DeltaCoin (..)) -import Cardano.Ledger.Core (Era (EraCrypto), hashScript) -import Cardano.Ledger.Hashes (DataHash, ScriptHash (..)) -import Cardano.Ledger.Plutus.Data (Data (..), hashData) -import Data.Char (toLower) -import Data.HashSet (HashSet) -import qualified Data.HashSet as HashSet -import Data.Hashable (Hashable) -import qualified Data.List as List -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Set (Set) -import qualified Data.Set as Set -import Data.Text (Text, pack) -import qualified Data.Universe as Univ (Any (..)) -import Data.Void (Void) -import Data.Word (Word64) -import Lens.Micro -import Test.Cardano.Ledger.Constrained.Classes ( - Adds (..), - Count (..), - OrdCond (..), - ScriptF (..), - Sizeable (..), - ) -import Test.Cardano.Ledger.Constrained.Env ( - Access (..), - AnyF (..), - Env (..), - Field (..), - Name (..), - Payload (..), - V (..), - findVar, - storeVar, - ) -import Test.Cardano.Ledger.Constrained.Monad (HasConstraint (With), Typed (..), failT, monadTyped) -import Test.Cardano.Ledger.Constrained.Size (Size (..), runSize, seps) -import Test.Cardano.Ledger.Constrained.TypeRep ( - Rep (..), - format, - hasEq, - synopsis, - testEql, - (:~:) (Refl), - ) -import Test.Cardano.Ledger.Generic.PrettyCore (PDoc, ppRecord, ppString) -import Test.Cardano.Ledger.Generic.Proof (Reflect) -import Test.QuickCheck (Gen, oneof) -import Type.Reflection (TypeRep, Typeable, typeRep) - --- ========================================================= --- class FromList cannot be defined in Classes.hs because --- (Rep era t) for method tsRep is not in scope - -class (Eq a, Eq ts) => FromList ts a | ts -> a where - makeFromList :: [a] -> ts - getList :: ts -> [a] - tsRep :: Rep era ts -> Rep era a - -instance Eq a => FromList [a] a where - makeFromList xs = xs - getList xs = xs - tsRep (ListR z) = z - -instance Eq a => FromList (Maybe a) a where - makeFromList [] = Nothing - makeFromList (x : _) = Just x - getList Nothing = [] - getList (Just x) = [x] - tsRep (MaybeR z) = z - -instance (Ord k, Eq a) => FromList (Map k a) (k, a) where - makeFromList = Map.fromList - getList = Map.toList - tsRep (MapR k v) = PairR k v - --- | CAREFULL HERE, this instance may NOT be size preserving. -instance Ord a => FromList (Set a) a where - makeFromList = Set.fromList - getList = Set.toList - tsRep (SetR x) = x - --- ================================================ - -type Direct a = Either a a - -direct :: Direct a -> a -direct (Left a) = a -direct (Right a) = a - -data Term era t where - Lit :: Rep era t -> t -> Term era t - Var :: V era t -> Term era t - Dom :: Ord a => Term era (Map a b) -> Term era (Set a) - Rng :: (Ord a, Ord b) => Term era (Map a b) -> Term era (Set b) - Elems :: (Ord a, Eq b) => Term era (Map a b) -> Term era [b] - ProjM :: Ord a => Lens' b t -> Rep era t -> Term era (Map a b) -> Term era (Map a t) - ProjS :: (Ord b, Ord t) => Lens' b t -> Rep era t -> Term era (Set b) -> Term era (Set t) - Proj :: Lens' b t -> Rep era t -> Term era b -> Term era t - Delta :: Term era Coin -> Term era DeltaCoin - Negate :: Term era DeltaCoin -> Term era DeltaCoin - Restrict :: Ord a => Term era (Set a) -> Term era (Map a b) -> Term era (Map a b) - HashD :: Era era => Term era (Data era) -> Term era (DataHash (EraCrypto era)) - HashS :: Reflect era => Term era (ScriptF era) -> Term era (ScriptHash (EraCrypto era)) - Pair :: Term era a -> Term era b -> Term era (a, b) - -infix 4 :=: -infix 4 :<-: - -data Pred era where - MetaSize :: Size -> Term era Size -> Pred era - Sized :: Sizeable t => Term era Size -> Term era t -> Pred era - (:=:) :: Eq a => Term era a -> Term era a -> Pred era - Subset :: Ord a => Term era (Set a) -> Term era (Set a) -> Pred era - Disjoint :: Ord a => Term era (Set a) -> Term era (Set a) -> Pred era - SumsTo :: (Era era, Adds c) => (Direct c) -> Term era c -> OrdCond -> [Sum era c] -> Pred era - SumSplit :: (Era era, Adds c) => c -> Term era c -> OrdCond -> [Sum era c] -> Pred era - Random :: Term era t -> Pred era - Component :: Direct (Term era t) -> [AnyF era t] -> Pred era - CanFollow :: Count n => Term era n -> Term era n -> Pred era - Member :: Ord a => Direct (Term era a) -> Term era (Set a) -> Pred era - NotMember :: Ord a => Term era a -> Term era (Set a) -> Pred era - MapMember :: - (Ord k, Eq v, Ord v) => Term era k -> Term era v -> (Direct (Term era (Map k v))) -> Pred era - (:<-:) :: Term era t -> RootTarget era r t -> Pred era - GenFrom :: Term era t -> RootTarget era r (Gen t) -> Pred era - List :: FromList fs t => Term era fs -> [Term era t] -> Pred era - Choose :: - (Era era, Eq t) => Term era Size -> Term era [t] -> [(Int, Target era t, [Pred era])] -> Pred era - ForEach :: - (Era era, FromList fs t, Eq t) => - Term era Size -> - Term era fs -> - Pat era t -> - [Pred era] -> - Pred era - Maybe :: - forall r era t. - (Era era, Typeable r) => - Term era (Maybe t) -> - RootTarget era r t -> - [Pred era] -> - Pred era - Oneof :: (Eq t, Era era) => Term era t -> [(Int, RootTarget era t t, [Pred era])] -> Pred era - SubMap :: (Ord k, Eq v, Ord v) => Term era (Map k v) -> Term era (Map k v) -> Pred era - If :: RootTarget era r Bool -> Pred era -> Pred era -> Pred era - Before :: Term era a -> Term era b -> Pred era - ListWhere :: - (Era era, Eq t) => Term era Size -> Term era [t] -> RootTarget era t t -> [Pred era] -> Pred era - -data Sum era c where - SumMap :: Adds c => Term era (Map a c) -> Sum era c - SumList :: Adds c => Term era [c] -> Sum era c - One :: Term era c -> Sum era c - ProjOne :: forall x c era. Lens' x c -> Rep era c -> Term era x -> Sum era c - ProjMap :: forall x c a era. Adds c => Rep era c -> Lens' x c -> Term era (Map a x) -> Sum era c - --- ==================================================================== --- Special patterns for building literal Terms of type Size and Word64 - -infix 4 :⊆: -pattern (:⊆:) :: forall era. (forall a. Ord a => Term era (Set a) -> Term era (Set a) -> Pred era) -pattern x :⊆: y = Subset x y - -pattern ExactSize :: Era era => Int -> Term era Size -pattern ExactSize x <- (sameRng -> Just x) - where - ExactSize x = Lit SizeR (SzRng x x) - -pattern AtLeast :: Era era => Int -> Term era Size -pattern AtLeast n = Lit SizeR (SzLeast n) - -pattern Size :: Era era => Size -> Term era Size -pattern Size n = Lit SizeR n - -pattern AtMost :: Era era => Int -> Term era Size -pattern AtMost n = Lit SizeR (SzMost n) - -pattern Range :: Era era => Int -> Int -> Term era Size -pattern Range i j <- Lit SizeR (SzRng i j) - where - Range i j = - if i <= j - then Lit SizeR (SzRng i j) - else - error - ( "Bad call to " - ++ show (SzRng i j) - ++ ". It is not the case that (" - ++ show i - ++ " <= " - ++ show j - ++ ")." - ) - -sameRng :: Term era Size -> Maybe Int -sameRng (Lit SizeR (SzRng x y)) = if x == y then Just x else Nothing -sameRng _ = Nothing - -pattern Word64 :: Era era => Word64 -> Term era Word64 -pattern Word64 x = Lit Word64R x - -var :: Era era => String -> Rep era t -> Term era t -var s r = Var (V s r No) - -unVar :: Term era t -> V era t -unVar (Var v) = v -unVar x = error ("Non Var in unVar: " ++ show x) - -fieldToTerm :: Field era rec field -> Term era field -fieldToTerm (Field nm rep repx l) = Var (V nm rep (Yes repx l)) -fieldToTerm (FConst rep t _ _) = Lit rep t - --- | (select small big lens), 'big' is evaluated to a value, 'small' is a Var, constrain 'small' --- such that it is bound to the 'lens' component of 'big'. Computes a (:=:) Pred -select :: (Eq t, Era era) => Term era t -> Term era big -> Lens' big t -> Pred era -select small big lenz = Proj lenz (termRep small) big :=: small - --- | (select small big lens), 'big' is evaluated to a value, 'small' is a Var, constrain 'small' --- such that it is bound to the 'lens' component of 'big'. Computes a 'Component' Pred -select2 :: Era era => Term era t -> Term era big -> Lens' big t -> Pred era -select2 (Var (V nm t _)) big lenz = Component (Left big) [AnyF (Field nm t (termRep big) lenz)] -select2 t1 t2 _ = - error ("In (select " ++ show t1 ++ " " ++ show t2 ++ " lens) " ++ show t1 ++ " is not a Var term.") - --- ==================================================================== - -infixl 0 :$ - -data RootTarget era root t where - Simple :: Term era t -> RootTarget era Void t - (:$) :: RootTarget era r (a -> b) -> RootTarget era r a -> RootTarget era r b - Constr :: String -> (a -> b) -> RootTarget era Void (a -> b) - Invert :: String -> TypeRep root -> (a -> b) -> RootTarget era root (a -> b) - Lensed :: Term era t -> SimpleGetter root t -> RootTarget era root t - Partial :: - Term era t -> - (root -> Maybe t) -> - -- | Partial designed to be used in Pred 'Oneof' where the RootTarget getter may fail. - -- So use 'Partial' instead of 'Lensed' in 'Oneof' - RootTarget era root t - Shift :: RootTarget era root2 a -> Lens' root1 root2 -> RootTarget era root1 a - Mask :: RootTarget era r a -> RootTarget era Void a - Virtual :: - Term era t -> - PDoc -> - Lens' root t -> - -- | Just like Lensed but uses the String to name the field (instead of the Term) - RootTarget era root t - --- Treat a Target as if it's (RootTarget era Void t) - -type Target era t = RootTarget era Void t - -infixl 0 ^$ - --- | Version of (:$) That takes a Term on the right, rather than a Target -(^$) :: Target era (a -> t) -> Term era a -> Target era t -(^$) f x = f :$ Simple x - -constTarget :: t -> Target era t -constTarget t = Constr "constTarget" (const t) ^$ Lit UnitR () - -constRootTarget :: forall era t. Typeable t => t -> RootTarget era t t -constRootTarget t = Invert "constRootTarget" (typeRep @t) (\() -> t) :$ Lensed (Lit UnitR ()) (to (const ())) - -emptyTarget :: Target era () -emptyTarget = Simple (Lit UnitR ()) - -justTarget :: Term era t -> Target era (Maybe t) -justTarget x = Constr "Just" Just ^$ x - -idTarget :: Term era t -> Target era t -idTarget x = Constr "id" id ^$ x - --- | Usefull when using the Pred 'FromGen' --- E.g. (FromGen termMaybeT (maybeTarget ^$ termT)) -maybeTarget :: Target era (t -> Gen (Maybe t)) -maybeTarget = Constr "maybeTarget" genMaybe - where - genMaybe x = oneof [pure Nothing, pure (Just x)] - -listToSetTarget :: Ord x => Term era [x] -> Target era (Set.Set x) -listToSetTarget x = Constr "FromList" Set.fromList ^$ x - -setToListTarget :: Term era (Set x) -> Target era [x] -setToListTarget x = Constr "toList" Set.toList ^$ x - --- =================================== - -showL :: (t -> String) -> [Char] -> [t] -> [Char] -showL _f _sep [] = "" -showL f _sep [t] = f t -showL f sep (t : ts) = f t ++ sep ++ showL f sep ts - -instance Show (Term era t) where - show (Lit r k) = synopsis r k - show (Var (V nm _rep _)) = nm -- ++ "::" ++ show _rep - show (Dom x) = "(Dom " ++ show x ++ ")" - show (Rng x) = "(Rng " ++ show x ++ ")" - show (Elems x) = "(Elems " ++ show x ++ ")" - show (ProjM _ r t) = "(ProjM " ++ show r ++ " " ++ show t ++ ")" - show (ProjS _ r t) = "(ProjS " ++ show r ++ " " ++ show t ++ ")" - show (Proj _ r t) = "(Proj " ++ show r ++ " " ++ show t ++ ")" - show (Delta x) = "(Delta " ++ show x ++ ")" - show (Negate x) = "(Negate " ++ show x ++ ")" - show (Restrict r t) = "(Restrict " ++ show r ++ " " ++ show t ++ ")" - show (HashS r) = "(HashS " ++ show r ++ ")" - show (HashD r) = "(HashD " ++ show r ++ ")" - show (Pair r t) = "(Pair " ++ show r ++ " " ++ show t ++ ")" - showList xs ans = unlines (ans : map show xs) - -instance Show (Sum era c) where - show (SumMap t) = "sum " ++ show t - show (SumList t) = "sum " ++ show t - show (One t) = show t - show (ProjOne _ c t) = seps ["ProjOne", show c, show t] - show (ProjMap crep _lens t) = "ProjMap " ++ show crep ++ " " ++ show t - -instance Show (Pred era) where - show (MetaSize n t) = "MetaSize " ++ show n ++ " " ++ show t - show (Sized n t) = "Sized " ++ show n ++ " " ++ show t - show (x :=: y) = show x ++ " :=: " ++ show y - show (Subset x y) = show x ++ " ⊆ " ++ show y - show (Disjoint x y) = "Disjoint " ++ show x ++ " " ++ show y - show (SumsTo i c cond m) = "SumsTo (" ++ show i ++ ") " ++ show c ++ show cond ++ showL show " + " m - show (SumSplit i c cond m) = "SumSplit (" ++ show i ++ ") " ++ show c ++ show cond ++ showL show " + " m - show (Random x) = "Random " ++ show x - show (Component t ws) = "Component (" ++ show t ++ ") " ++ show ws - show (CanFollow x y) = "CanFollow " ++ show x ++ " " ++ show y - show (Member x y) = "Member (" ++ show x ++ ") " ++ show y - show (NotMember x y) = "NotMember " ++ show x ++ " " ++ show y - show (MapMember k v m) = "MapMember " ++ show k ++ " " ++ show v ++ " (" ++ show m ++ ")" - show (x :<-: y) = show x ++ " :<-: " ++ showT y - show (GenFrom x y) = "GenFrom " ++ show x ++ " " ++ showT y - show (List t xs) = "List " ++ show t ++ " [" ++ showL show ", " xs ++ "]" - show (Choose s term xs) = unlines (("Choose " ++ show s ++ " " ++ show term) : map showchoices xs) - where - showchoices (i, target, ps) = - "(" ++ show i ++ ", " ++ showAllTarget target ++ showT target ++ " | " ++ showL show ", " ps ++ ")" - show (Oneof term xs) = unlines (("Oneof " ++ " " ++ show term) : (map showchoices xs)) - where - showchoices (i, target, ps) = - "(" ++ show i ++ ", " ++ showAllTarget target ++ showT target ++ " | " ++ showL show ", " ps ++ ")" - show (ForEach s term pat ps) = - unlines - [ seps ["ForEach", show s, show term] - , "forall (" ++ show pat ++ " | " ++ showL show ", " ps - ] - show (Maybe term target ps) = "Maybe " ++ show term ++ showAllTarget target ++ " | " ++ showL show ", " ps - show (SubMap x y) = "SubMap " ++ show x ++ " " ++ show y - show (If t x y) = "If (" ++ show t ++ ") (" ++ show x ++ ") (" ++ show y ++ ")" - show (Before x y) = "Before " ++ show x ++ " " ++ show y - show (ListWhere sz t tar ps) = - "(ListWhere " ++ show sz ++ " " ++ show t ++ " " ++ show tar ++ " " ++ showL show ", " ps ++ ")" - showList xs ans = unlines (ans : (map show xs)) - -showAllTarget :: RootTarget era r t -> [Char] -showAllTarget tar = " forall " ++ showL show " " (HashSet.toList (varsOfTarget HashSet.empty tar)) ++ ". " - -instance Show (RootTarget era r t) where - show (Constr nm _f) = nm - show (Simple x) = show x - show (Lensed x _) = show x - show (Partial x _) = show x - show (f :$ x) = "(" ++ show f ++ " :$ " ++ showL pp " :$ " (args x) ++ ")" - where - pp :: Univ.Any (RootTarget era r) -> String - pp (Univ.Any spec) = show spec - show (Invert nm _ _) = nm - show (Shift x _) = "(Shift " ++ show x ++ " lens)" - show (Mask x) = show x - show (Virtual x y _) = "(Virtual " ++ show x ++ " " ++ show y ++ ")" - --- | "Print a Target as nested applications" -showT :: forall era t r. RootTarget era r t -> String -showT (Constr nm _f) = nm -showT (Simple x) = show x -showT (Lensed x _) = show x -showT (Partial x _) = show x -showT (f :$ x) = "(" ++ showT f ++ " " ++ showL pp " " (args x) ++ ")" - where - pp :: Univ.Any (RootTarget era r) -> String - pp (Univ.Any spec) = showT spec -showT (Invert nm _ _) = nm -showT (Shift x _) = "(Shift " ++ showT x ++ ")" -showT (Mask x) = showT x -showT (Virtual _ y _) = show y - -args :: RootTarget era r t -> [Univ.Any (RootTarget era r)] -args (x :$ xs) = Univ.Any x : args xs -args other = [Univ.Any other] - --- | Print a Target as a record showing the struture and names of all --- the variables involved. This documents what is in scope where --- the Target value was defined. -ppTarget :: RootTarget era r t -> PDoc -ppTarget x = targetRecord x [] - -targetRecord :: RootTarget era r t -> [(Text, PDoc)] -> PDoc -targetRecord (Constr n _) xs = ppRecord (pack n) xs -targetRecord (ts :$ t) xs = targetRecord ts (targetPair t : xs) -targetRecord (Simple e) [] = ppString (show e) -targetRecord (Lensed e _) [] = ppString (show e) -targetRecord (Partial e _) [] = ppString (show e) -targetRecord (Invert n _ _) xs = ppRecord (pack n) xs -targetRecord (Shift x _) xs = targetRecord x xs -targetRecord (Mask x) xs = targetRecord x xs -targetRecord (Virtual _ e _) [] = e -targetRecord other xs = ppRecord (nameOf other) xs - -nameOf :: RootTarget era r t -> Text -nameOf (Constr cs _) = pack (map toLower cs ++ "T") -nameOf (Simple (Var (V n _ _))) = pack n -nameOf (Lensed (Var (V n _ _)) _) = pack n -nameOf (Partial (Var (V n _ _)) _) = pack n -nameOf (Simple term) = pack (show term) -nameOf (Lensed term _) = pack (show term) -nameOf (Partial term _) = pack (show term) -nameOf (x :$ _) = nameOf x -nameOf (Invert cs _ _) = pack (map toLower cs ++ "T") -nameOf (Shift x _) = nameOf x -nameOf (Mask x) = nameOf x -nameOf (Virtual _ x _) = pack (show x) - -targetPair :: RootTarget era r t -> (Text, PDoc) -targetPair (Simple (Var (V n rep _))) = (pack n, ppString (show rep)) -targetPair (Lensed (Var (V n rep _)) _) = (pack n, ppString (show rep)) -targetPair (Partial (Var (V n rep _)) _) = (pack n, ppString (show rep)) -targetPair (Virtual (Var (V _ rep _)) newname _) = (pack (show newname), ppString (show rep)) -targetPair x = (nameOf x, targetRecord x []) - --- =================================================== --- Computing the variables (V era t) in a Term, Pred, RootTarget --- Their are no binders in any of these, so this is not so difficult --- But (V era t) may have different 't', so we hide 't' in 'Name' - -varsOfTerm :: HashSet (Name era) -> Term era t -> HashSet (Name era) -varsOfTerm ans s = case s of - Lit _ _ -> ans - Var v@(V _ _ _) -> HashSet.insert (Name v) ans - Dom x -> varsOfTerm ans x - Rng x -> varsOfTerm ans x - Elems x -> varsOfTerm ans x - (ProjM _ _ x) -> varsOfTerm ans x - (ProjS _ _ x) -> varsOfTerm ans x - (Proj _ _ x) -> varsOfTerm ans x - Delta x -> varsOfTerm ans x - Negate x -> varsOfTerm ans x - Restrict st mp -> varsOfTerm (varsOfTerm ans st) mp - HashS st -> varsOfTerm ans st - HashD st -> varsOfTerm ans st - Pair a b -> varsOfTerm (varsOfTerm ans a) b - -vars :: Term era t -> HashSet (Name era) -vars x = varsOfTerm HashSet.empty x - -varsOfTarget :: HashSet (Name era) -> RootTarget era r t -> HashSet (Name era) -varsOfTarget ans s = case s of - (a :$ b) -> varsOfTarget (varsOfTarget ans a) b - (Simple x) -> varsOfTerm ans x - (Lensed x _) -> varsOfTerm ans x - (Partial x _) -> varsOfTerm ans x - (Constr _ _) -> ans - (Invert _ _ _) -> ans - (Shift x _) -> varsOfTarget ans x - (Mask x) -> varsOfTarget ans x - (Virtual x _ _) -> varsOfTerm ans x - -varsOfPred :: forall era. HashSet (Name era) -> Pred era -> HashSet (Name era) -varsOfPred ans s = case s of - MetaSize _ term -> varsOfTerm ans term - Sized a b -> varsOfTerm (varsOfTerm ans a) b - a :=: b -> varsOfTerm (varsOfTerm ans a) b - Subset a b -> varsOfTerm (varsOfTerm ans a) b - Disjoint a b -> varsOfTerm (varsOfTerm ans a) b - SumsTo _ x _ xs -> List.foldl' varsOfSum (varsOfTerm ans x) xs - SumSplit _ x _ xs -> List.foldl' varsOfSum (varsOfTerm ans x) xs - Random x -> varsOfTerm ans x - Component t cs -> varsOfTerm (List.foldl' varsOfComponent ans cs) (direct t) - where - varsOfComponent :: forall z. HashSet (Name era) -> AnyF era z -> HashSet (Name era) - varsOfComponent l (AnyF (Field n r rx l2)) = HashSet.insert (Name $ V n r (Yes rx l2)) l - varsOfComponent l (AnyF (FConst _ _ _ _)) = l - CanFollow a b -> varsOfTerm (varsOfTerm ans a) b - Member a b -> varsOfTerm (varsOfTerm ans (direct a)) b - NotMember a b -> varsOfTerm (varsOfTerm ans a) b - MapMember k v m -> varsOfTerm (varsOfTerm (varsOfTerm ans k) v) (direct m) - a :<-: b -> varsOfTarget (varsOfTerm ans a) b - GenFrom a b -> varsOfTarget (varsOfTerm ans a) b - List a bs -> List.foldl' varsOfTerm (varsOfTerm ans a) bs - Choose sz term pairs -> varsOfTerm (varsOfTerm (varsOfTrips ans pairs) term) sz - Oneof term pairs -> varsOfTerm (varsOfTrips ans pairs) term - ForEach sz term pat ps -> varsOfTerm (varsOfTerm (varsOfPats ans [(pat, ps)]) term) sz - Maybe term target ps -> varsOfTerm (varsOfPairs ans [(target, ps)]) term - SubMap a b -> varsOfTerm (varsOfTerm ans a) b - If t x y -> varsOfTarget (varsOfPred (varsOfPred ans x) y) t - Before a b -> varsOfTerm (varsOfTerm ans a) b - ListWhere sz t tar ps -> HashSet.union vs others - where - vs = varsOfTerm (varsOfTerm ans t) sz - bound = varsOfTarget HashSet.empty tar - pvs = List.foldl' varsOfPred HashSet.empty ps - others = HashSet.difference pvs bound - -varsOfTrips :: - Era era => HashSet (Name era) -> [(Int, RootTarget era r t2, [Pred era])] -> HashSet (Name era) -varsOfTrips ans1 [] = ans1 -varsOfTrips ans1 ((_, t, ps) : more) = varsOfTrips (act ans1 t ps) more - where - act ans2 tar preds = - HashSet.union - ( HashSet.difference - (List.foldl' varsOfPred HashSet.empty preds) - (varsOfTarget HashSet.empty tar) - ) - ans2 - -varsOfPairs :: - Era era => HashSet (Name era) -> [(RootTarget era r t2, [Pred era])] -> HashSet (Name era) -varsOfPairs ans1 [] = ans1 -varsOfPairs ans1 ((t, ps) : more) = varsOfPairs (act ans1 t ps) more - where - act ans2 tar preds = - HashSet.union - ( HashSet.difference - (List.foldl' varsOfPred HashSet.empty preds) - (varsOfTarget HashSet.empty tar) - ) - ans2 - -varsOfPats :: Era era => HashSet (Name era) -> [(Pat era t2, [Pred era])] -> HashSet (Name era) -varsOfPats ans1 [] = ans1 -varsOfPats ans1 ((pat0, ps) : more) = varsOfPats (act ans1 pat0 ps) more - where - act ans2 pat preds = - HashSet.union - ( HashSet.difference - (List.foldl' varsOfPred HashSet.empty preds) - (varsOfPat HashSet.empty pat) - ) - ans2 - -varsOfSum :: HashSet (Name era) -> Sum era r -> HashSet (Name era) -varsOfSum ans (SumMap y) = varsOfTerm ans y -varsOfSum ans (SumList y) = varsOfTerm ans y -varsOfSum ans (One y) = varsOfTerm ans y -varsOfSum ans (ProjOne _ _ y) = varsOfTerm ans y -varsOfSum ans (ProjMap _ _ x) = varsOfTerm ans x - --- ===================================================================== - -expandSum :: Sum era c -> [Int] -> [Sum era c] -expandSum (One (Var (V n r a))) ns = map (\i -> One (Var (V (n ++ "." ++ show i) r a))) ns -expandSum (ProjOne l rep (Var (V n r a))) ns = map (\i -> ProjOne l rep (Var (V (n ++ "." ++ show i) r a))) ns -expandSum x _ = error ("Bad Sum in expandSum: " ++ show x) - --- ===================================================================== --- Subst, the type of Substitutions - -pad :: Int -> String -> String -pad n x = x ++ replicate (n - length x) ' ' - -data SubstElem era where - SubstElem :: Rep era t -> Term era t -> Access era s t -> SubstElem era - -instance Show (SubstElem era) where - show (SubstElem rep t _) = show t ++ " :: " ++ show rep - -newtype Subst era = Subst (Map String (SubstElem era)) - -extend :: V era t -> Term era t -> Subst era -> Subst era -extend (V nm rep access) term (Subst m) = Subst (Map.insert nm (SubstElem rep term access) m) - -instance Show (Subst era) where - show (Subst m) = unlines (map f (Map.toList m)) - where - f (nm, SubstElem _ t _) = nm ++ " -> " ++ show t - -emptySubst :: Subst era -emptySubst = Subst Map.empty - -substToEnv :: Subst era -> Env era -> Typed (Env era) -substToEnv (Subst m) env = Map.foldlWithKey' accum (pure env) m - where - accum ansM key (SubstElem r (Lit _ v) access) = do - Env ans <- ansM - pure $ Env $ Map.insert key (Payload r v access) ans - accum _ _ (SubstElem _ e _) = failT ["Not Literal expr in substToEnv: " ++ show e] - -envToSubst :: Env era -> Subst era -envToSubst (Env env) = Subst (Map.map f env) - where - f (Payload rep t access) = SubstElem rep (Lit rep t) access - -findV :: Subst era -> V era t -> Term era t -findV (Subst m) v@(V n1 rep1 _) = case Map.lookup n1 m of - Nothing -> Var v -- If its not in the Subst, return the Var - Just (SubstElem rep2 term _) -> case testEql rep1 rep2 of - Just Refl -> term - Nothing -> - error - ( "In findV, we found: " - ++ n1 - ++ ", but the types did not match. " - ++ show rep1 - ++ " =/= " - ++ show rep2 - ) - --- | Not really a composition, just adding 'sub1' to 'sub2', but if any thing --- is in both 'sub1' and 'sub2', the 'sub1' binding overrides the 'sub2' binding -composeSubst :: Subst era -> Subst era -> Subst era -composeSubst (Subst sub1) (Subst sub2) = Subst (Map.foldrWithKey' Map.insert sub2 sub1) - -singleSubst :: V era t -> Term era t -> Subst era -singleSubst (V n r access) expr = Subst (Map.insert n (SubstElem r expr access) Map.empty) - -substFromNames :: forall era. HashSet (Name era) -> Subst era -substFromNames names = Subst (HashSet.foldl' accum Map.empty names) - where - accum :: Map String (SubstElem era) -> Name era -> Map String (SubstElem era) - accum ans (Name v@(V n r access)) = Map.insert n (SubstElem r (Var v) access) ans - -data SubItem era where - SubItem :: V era t -> Term era t -> SubItem era - -instance Show (SubItem era) where - show (SubItem x y) = "(SubItem " ++ show x ++ " " ++ show y ++ ")" - -itemsToSubst :: [SubItem era] -> Subst era -itemsToSubst ss = Subst (List.foldr accum Map.empty ss) - where - accum :: SubItem era -> Map String (SubstElem era) -> Map String (SubstElem era) - accum (SubItem (V nm rep access) term) !ans = Map.insert nm (SubstElem rep term access) ans - --- ===================================================== --- Subtitution of (V era t) inside of (Spec era t) - -substTerm :: Subst era -> Term era t -> Term era t -substTerm sub (Var v) = findV sub v -substTerm _ (Lit r k) = Lit r k -substTerm sub (Dom x) = Dom (substTerm sub x) -substTerm sub (Rng x) = Rng (substTerm sub x) -substTerm sub (Elems x) = Elems (substTerm sub x) -substTerm sub (ProjM l r x) = ProjM l r (substTerm sub x) -substTerm sub (ProjS l r x) = ProjS l r (substTerm sub x) -substTerm sub (Proj l r x) = Proj l r (substTerm sub x) -substTerm sub (Delta x) = Delta (substTerm sub x) -substTerm sub (Negate x) = Negate (substTerm sub x) -substTerm sub (Restrict s m) = Restrict (substTerm sub s) (substTerm sub m) -substTerm sub (HashS s) = HashS (substTerm sub s) -substTerm sub (HashD s) = HashD (substTerm sub s) -substTerm sub (Pair a b) = Pair (substTerm sub a) (substTerm sub b) - -substPred :: Subst era -> Pred era -> Pred era -substPred sub (MetaSize a b) = MetaSize a (substTerm sub b) -substPred sub (Sized a b) = Sized (substTerm sub a) (substTerm sub b) -substPred sub (a :=: b) = substTerm sub a :=: substTerm sub b -substPred sub (a `Subset` b) = substTerm sub a `Subset` substTerm sub b -substPred sub (Disjoint a b) = Disjoint (substTerm sub a) (substTerm sub b) -substPred sub (SumsTo i a cond b) = SumsTo i (substTerm sub a) cond (map (substSum sub) b) -substPred sub (SumSplit i a cond b) = SumSplit i (substTerm sub a) cond (map (substSum sub) b) -substPred sub (Random x) = Random (substTerm sub x) -substPred sub (Component t cs) = case t of - Left x -> Component (Left (substTerm sub x)) (substComp <$> cs) - Right x -> Component (Right (substTerm sub x)) (substComp <$> cs) - where - substComp (AnyF w@(Field n r rx l)) = AnyF $ case findV sub (V n r (Yes rx l)) of - (Lit rep x) -> FConst rep x rx l - (Var (V n2 r2 _a2)) -> Field n2 r2 rx l - _ -> w - substComp x@(AnyF (FConst _ _ _ _)) = x -substPred sub (CanFollow a b) = CanFollow (substTerm sub a) (substTerm sub b) -substPred sub (Member dirA b) = case dirA of - Left a -> Member (Left (substTerm sub a)) (substTerm sub b) - Right a -> Member (Right (substTerm sub a)) (substTerm sub b) -substPred sub (NotMember a b) = NotMember (substTerm sub a) (substTerm sub b) -substPred sub (MapMember k v dirM) = case dirM of - Left m -> MapMember (substTerm sub k) (substTerm sub v) (Left (substTerm sub m)) - Right m -> MapMember (substTerm sub k) (substTerm sub v) (Right (substTerm sub m)) -substPred sub (a :<-: b) = substTerm sub a :<-: substTarget sub b -substPred sub (GenFrom a b) = GenFrom (substTerm sub a) (substTarget sub b) -substPred sub (List a b) = List (substTerm sub a) (map (substTerm sub) b) -substPred sub (Choose sz t pairs) = Choose (substTerm sub sz) (substTerm sub t) (map (subPair sub) pairs) - where - subPair sub0 (i, tar, ps) = (i, tar, map (substPred (composeSubst sub1 sub0)) ps) - where - sub1 = substFromTarget tar -substPred sub (Oneof t ps) = Oneof (substTerm sub t) (map (\(i, tr, p) -> (i, substTarget sub tr, map (substPred sub) p)) ps) -substPred sub (ForEach sz t pat ps) = - ForEach - (substTerm sub sz) - (substTerm sub t) - pat - (map (substPred sub1) ps) - where - sub1 = composeSubst (substFromPat pat) sub -substPred sub (Maybe term target ps) = Maybe (substTerm sub term) target (map (substPred (composeSubst sub1 sub)) ps) - where - sub1 = substFromTarget target -substPred sub (SubMap a b) = SubMap (substTerm sub a) (substTerm sub b) -substPred sub (If t x y) = If (substTarget sub t) (substPred sub x) (substPred sub y) -substPred sub (Before a b) = Before (substTerm sub a) (substTerm sub b) -substPred sub (ListWhere sz t tar ps) = - ListWhere (substTerm sub sz) (substTerm sub t) tar (map (substPred newsub) ps) - where - newsub = composeSubst (substFromTarget tar) sub - --- | Apply the Subst, and test if all variables are removed. -substPredWithVarTest :: Subst era -> Pred era -> Pred era -substPredWithVarTest sub oldpred = - let newpred = substPred sub oldpred - freevars = varsOfPred HashSet.empty newpred - in case HashSet.null freevars of - False -> newpred - True -> - error - ( unlines - [ "When solving: " ++ show oldpred ++ "," - , "we applied the Subst from earlier stages, and we obtain the pred:" - , " " ++ show newpred - , "with no free variables. This probably means an introductory pred like (Sized x)" - , "or (Random x), appears both in an earlier stage, and the current stage." - ] - ) - where - -substFromTarget :: RootTarget era r t -> Subst era -substFromTarget tar = substFromNames (varsOfTarget HashSet.empty tar) - -substFromPat :: Pat era t -> Subst era -substFromPat pat = substFromNames (varsOfPat HashSet.empty pat) - -substSum :: Subst era -> Sum era t -> Sum era t -substSum sub (SumMap x) = SumMap (substTerm sub x) -substSum sub (SumList x) = SumList (substTerm sub x) -substSum sub (One x) = One (substTerm sub x) -substSum sub (ProjOne l r x) = ProjOne l r (substTerm sub x) -substSum sub (ProjMap crep l x) = ProjMap crep l (substTerm sub x) - -substTarget :: Subst era -> RootTarget era r t -> RootTarget era r t -substTarget sub (Simple e) = Simple (substTerm sub e) -substTarget sub (Lensed e l) = Lensed (substTerm sub e) l -substTarget sub (Partial e l) = Partial (substTerm sub e) l -substTarget sub (a :$ b) = substTarget sub a :$ substTarget sub b -substTarget _ (Constr n f) = Constr n f -substTarget _ (Invert x l f) = Invert x l f -substTarget sub (Shift x l) = Shift (substTarget sub x) l -substTarget sub (Mask x) = Mask (substTarget sub x) -substTarget sub (Virtual x y l) = Virtual (substTerm sub x) y l - --- ====================================================== --- Symbolic evaluators - --- | Simplify Terms that only contain Literals (or constant) sub-Terms -simplify :: Term era t -> Typed t -simplify (Lit _ x) = pure x -simplify (Dom (Lit _ x)) = pure (Map.keysSet x) -simplify (Dom (ProjM _ _ t)) = simplify (Dom t) -simplify (Dom x) = do - m <- simplify x - pure (Map.keysSet m) -simplify (Rng (Lit _ x)) = pure (Set.fromList (Map.elems x)) -simplify (Rng (ProjM l _ (Lit _ m))) = pure (Set.fromList (Map.elems (Map.map (\x -> x ^. l) m))) -simplify (Rng x) = do - m <- simplify x - pure (Set.fromList (Map.elems m)) -simplify (Elems (Lit _ x)) = pure (Map.elems x) -simplify (Elems (ProjM l _ (Lit _ m))) = pure (Map.elems (Map.map (\x -> x ^. l) m)) -simplify (Elems x) = do - m <- simplify x - pure (Map.elems m) -simplify (ProjM l _ (Lit _ x)) = pure (Map.map (\z -> z ^. l) x) -simplify (ProjM l _ t) = do - m <- simplify t - pure (Map.map (\z -> z ^. l) m) -simplify (ProjS l _ (Lit _ x)) = pure (Set.map (\z -> z ^. l) x) -simplify (ProjS l _ t) = do - s <- simplify t - pure (Set.map (\z -> z ^. l) s) -simplify (Proj l _ (Lit _ x)) = pure (x ^. l) -simplify (Proj l _ t) = do - s <- simplify t - pure (s ^. l) -simplify (Delta (Lit CoinR (Coin n))) = pure (DeltaCoin n) -simplify (Negate (Lit DeltaCoinR (DeltaCoin n))) = pure (DeltaCoin (-n)) -simplify (Restrict s m) = do - sv <- simplify s - mv <- simplify m - pure (Map.restrictKeys mv sv) -simplify (HashS s) = do - ScriptF _ sv <- simplify s - pure (hashScript sv) -simplify (HashD s) = do - sv <- simplify s - pure (hashData sv) -simplify (Pair s m) = do - sv <- simplify s - mv <- simplify m - pure (sv, mv) -simplify x = failT ["Can't simplify term: " ++ show x ++ ", to a value."] - --- | Simplify constant Sum's -simplifySum :: Sum era c -> Typed c -simplifySum (One (Lit _ x)) = pure x -simplifySum (One (Delta (Lit CoinR (Coin n)))) = pure (DeltaCoin n) -simplifySum (One (Negate (Lit DeltaCoinR (DeltaCoin n)))) = pure (DeltaCoin (-n)) -simplifySum (ProjOne l _ (Lit _ x)) = pure (x ^. l) -simplifySum (SumMap (Lit _ m)) = pure (Map.foldl' add zero m) -simplifySum (SumList (Lit _ m)) = pure (List.foldl' add zero m) -simplifySum (ProjMap _ l (Lit _ m)) = pure (List.foldl' (\ans x -> add ans (x ^. l)) zero m) -simplifySum x = failT ["Can't simplify Sum: " ++ show x ++ ", to a value."] - -simplifyTarget :: forall era t root. RootTarget era root t -> Typed t -simplifyTarget (Invert _ _ f) = pure f -simplifyTarget (Shift x _) = simplifyTarget x -simplifyTarget (Mask x) = simplifyTarget x -simplifyTarget (Virtual x _ _) = simplify x -simplifyTarget (Simple t) = simplify t -simplifyTarget (Lensed t _) = simplify t -simplifyTarget (Partial t _) = simplify t -simplifyTarget (Constr _ f) = pure f -simplifyTarget (x :$ y) = do - f <- simplifyTarget x - z <- simplifyTarget y - pure (f z) - --- | Fully evaluate a `Term`, looking up the variables in the `Env`. -runTerm :: Env era -> Term era t -> Typed t -runTerm _ (Lit _ x) = pure x -runTerm env (Dom x) = Map.keysSet <$> runTerm env x -runTerm env (Rng x) = Set.fromList . Map.elems <$> runTerm env x -runTerm env (Elems x) = Map.elems <$> runTerm env x -runTerm env (Var v) = findVar v env -runTerm env (ProjM l _ x) = do - m <- runTerm env x - pure (Map.map (\z -> z ^. l) m) -runTerm env (ProjS l _ x) = do - m <- runTerm env x - pure (Set.map (\z -> z ^. l) m) -runTerm env (Proj l _ x) = do - m <- runTerm env x - pure (m ^. l) -runTerm env (Delta x) = do - Coin n <- runTerm env x - pure (DeltaCoin n) -runTerm env (Negate x) = do - DeltaCoin n <- runTerm env x - pure (DeltaCoin (-n)) -runTerm env (Restrict s m) = do - sv <- runTerm env s - mv <- runTerm env m - pure (Map.restrictKeys mv sv) -runTerm env (HashD x) = do - s <- runTerm env x - pure (hashData s) -runTerm env (HashS x) = do - ScriptF _ s <- runTerm env x - pure (hashScript s) -runTerm env (Pair s m) = - do - sv <- runTerm env s - mv <- runTerm env m - pure (sv, mv) - -runTarget :: Env era -> RootTarget era x t -> Typed t -runTarget _ (Invert _ _ f) = pure f -runTarget env (Simple t) = runTerm env t -runTarget env (Lensed t _) = runTerm env t -runTarget env (Partial t _) = runTerm env t -runTarget env (Shift x _) = runTarget env x -runTarget env (Mask x) = runTarget env x -runTarget env (Virtual x _ _) = runTerm env x -runTarget _ (Constr _ f) = pure f -runTarget env (x :$ y) = do - f <- runTarget env x - z <- runTarget env y - pure (f z) - --- | Overwrite the bindings for the Vars in the Env that appear in the RootTarget, by updating the Env with the values picked from the root --- When the target has type (RootTarget era Void x), the function is the identity on the Env. -getTarget :: forall era root t. root -> RootTarget era root t -> Env era -> Env era -getTarget root (Lensed (Var v) l) env = storeVar v (root ^. l) env -getTarget _ (Lensed _ _) env = env -getTarget root (Partial (Var v) f) env = - case f root of - Just val -> storeVar v val env - Nothing -> - error - ( "A Partial RootTarget returned Nothing: " - ++ show v - ++ "\n Maybe use 'targetMaybeEnv' instead of 'getTarget' " - ) -getTarget _ (Partial _ _) env = env -getTarget root (x :$ y) env = getTarget root x (getTarget root y env) -getTarget root (Shift x l) env = getTarget (root ^. l) x env -getTarget _ (Invert _ _ _) env = env -getTarget _ (Constr _ _) env = env -getTarget _ (Simple _) env = env -getTarget _ (Mask _) env = env -getTarget root (Virtual (Var v) _ l) env = storeVar v (root ^. l) env -getTarget _ (Virtual {}) env = env - -targetMaybeEnv :: forall era root t. root -> RootTarget era root t -> Env era -> Maybe (Env era) -targetMaybeEnv root (Lensed (Var v) l) env = Just (storeVar v (root ^. l) env) -targetMaybeEnv root (Virtual (Var v) _ l) env = Just (storeVar v (root ^. l) env) -targetMaybeEnv root (Shift x l) env = targetMaybeEnv (root ^. l) x env -targetMaybeEnv root (Partial (Var v) f) env = - case f root of - Just val -> Just (storeVar v val env) - Nothing -> Nothing -targetMaybeEnv root (x :$ y) env = - targetMaybeEnv root y env >>= targetMaybeEnv root x -targetMaybeEnv _ _ _ = Nothing - -runPred :: Env era -> Pred era -> Typed Bool -runPred env (MetaSize w x) = do - sz <- runTerm env x - case sz of - SzExact n -> pure $ runSize n w - _ -> pure $ False -runPred env (Sized szt tt) = do - sz <- runTerm env szt - t <- runTerm env tt - pure $ runSize (getSize t) sz -runPred env (x :=: y) = do - x2 <- runTerm env x - y2 <- runTerm env y - pure (x2 == y2) -runPred env (Disjoint x y) = do - x2 <- runTerm env x - y2 <- runTerm env y - pure (Set.disjoint x2 y2) -runPred env (Subset x y) = do - x2 <- runTerm env x - y2 <- runTerm env y - pure (Set.isSubsetOf x2 y2) -runPred env (SumsTo _ x cond ys) = do - x2 <- runTerm env x - is <- mapM (runSum env) ys - let y2 = List.foldl' add zero is - pure (runOrdCondition cond x2 y2) -runPred env (SumSplit _ x cond ys) = do - x2 <- runTerm env x - is <- mapM (runSum env) ys - let y2 = List.foldl' add zero is - pure (runOrdCondition cond x2 y2) -runPred _ (Random _) = pure True -runPred env (Component t cs) = do - t' <- runTerm env (direct t) - and <$> mapM (runComp env t') cs -runPred env (CanFollow x y) = do - x2 <- runTerm env x - y2 <- runTerm env y - pure (canFollow x2 y2) -runPred env (Member x y) = do - x2 <- runTerm env (direct x) - y2 <- runTerm env y - pure (Set.member x2 y2) -runPred env (NotMember x y) = do - x2 <- runTerm env x - y2 <- runTerm env y - pure (Set.notMember x2 y2) -runPred env (MapMember k v m) = do - k' <- runTerm env k - v' <- runTerm env v - m' <- runTerm env (direct m) - pure $ Map.isSubmapOf (Map.singleton k' v') m' -runPred env (x :<-: y) = do - _x2 <- runTerm env x - _y2 <- runTarget env y - pure True -runPred env (GenFrom x y) = do - _x2 <- runTerm env x - _y2 <- runTarget env y - pure True -runPred env (List x y) = do - x2 <- runTerm env x - y2 <- mapM (runTerm env) y - pure (x2 == makeFromList y2) -runPred env (Maybe x tar ps) = do - m <- runTerm env x - case m of - Nothing -> pure True - (Just y) -> do - ans <- mapM (runPred (bind tar y env)) ps - pure (and ans) --- choose should have been removed by the Rewrite phase. -runPred _ (Choose _ _ _) = pure True -- We can't really test this. failT ["Choose predicate in runPred", show p] -runPred env (ForEach _sz term pat ps) = do - -- size <- runTerm env _sz - ts <- getList <$> runTerm env term - bs <- mapM (\t -> runPreds (bindPat t env pat) (filter (not . extendableSumsTo pat) ps)) ts - pure (and bs) -runPred env (SubMap x y) = do - x2 <- runTerm env x - y2 <- runTerm env y - pure (Map.isSubmapOf x2 y2) -runPred env (If t x y) = do - b <- runTarget env t - if b - then runPred env x - else runPred env y -runPred _ (Before _ _) = pure True -runPred env (Oneof name triples) = do - root <- runTerm env name - let firstMatching [] = pure False - firstMatching ((_, tar, ps) : more) = case targetMaybeEnv root tar env of - Nothing -> firstMatching more - Just env2 -> do - qs <- mapM (runPred env2) ps - if and qs - then pure True - else firstMatching more - firstMatching triples -runPred env (ListWhere sz name target ps) = do - xs <- runTerm env name - size <- runTerm env sz - let sizeOK = runSize (length xs) size - let p x = do - let env2 = getTarget x target env - bs <- mapM (runPred env2) ps - pure (and bs) - bs <- mapM p xs - pure $ sizeOK && (and bs) - -hashSetToSet :: Ord a => HashSet a -> Set a -hashSetToSet x = Set.fromList (HashSet.toList x) - -hashSetDisjoint :: Hashable a => HashSet a -> HashSet a -> Bool -hashSetDisjoint x y = HashSet.null (HashSet.intersection x y) - --- | One type of Pred in ForEach is handled differently from others --- if valCoin is amongst the free variables of `pat` and --- 'balanceCoin' is not amongst the free variables of `pat` then --- SumsTo (Left (Coin 1)) balanceCoin EQL [One valCoin] expands to --- SumsTo (Left (Coin 1)) balanceCoin EQL [One valCoin.1,One valCoin.2,One valCoin.3] - --- SumSplit (Coin 1) balanceCoin EQL [One valCoin] expands to --- SumSplit (Coin 1) balanceCoin EQL [One valCoin.1,One valCoin.2,One valCoin.3] - --- other predicates P(x) would exapnd to 3 copies like P(x.1) P(x.2) P(x.3) --- This is called Sum extension, is implemented by `extendSum` -extendableSumsTo :: Pat era t -> Pred era -> Bool -extendableSumsTo pat (SumsTo _ t _ [One s]) = - HashSet.size boundS == 1 && HashSet.isSubsetOf boundS free && hashSetDisjoint boundT free - where - free = varsOfPat HashSet.empty pat - boundS = varsOfTerm HashSet.empty s - boundT = varsOfTerm HashSet.empty t -extendableSumsTo pat (SumSplit _ t _ [One s]) = - HashSet.size boundS == 1 && HashSet.isSubsetOf boundS free && hashSetDisjoint boundT free - where - free = varsOfPat HashSet.empty pat - boundS = varsOfTerm HashSet.empty s - boundT = varsOfTerm HashSet.empty t -extendableSumsTo _ _ = False - --- | run a bunch of Preds, and and together the results -runPreds :: Env era -> [Pred era] -> Typed Bool -runPreds env ps = do - bs <- mapM (runPred env) ps - pure (and bs) - -bind :: RootTarget era r t -> t -> Env era -> Env era -bind (Simple (Var v)) x env = storeVar v x env -bind (Lensed (Var v) _) x env = storeVar v x env -bind t _ _ = error ("Non simple Target in bind: " ++ show t) - -runComp :: Env era -> s -> AnyF era s -> Typed Bool -runComp env t (AnyF (Field n rt rx l)) = do - t' <- runTerm env $ Var (V n rt (Yes rx l)) - With _ <- hasEq rt rt - pure $ t ^. l == t' -runComp _ t (AnyF (FConst r v _ l)) = do - With _ <- hasEq r r - pure $ t ^. l == v - -termRep :: Era era => Term era t -> Rep era t -termRep (Lit r _) = r -termRep (Var (V _ r _)) = r -termRep (Dom (termRep -> MapR r _)) = SetR r -termRep (Rng (termRep -> MapR _ r)) = SetR r -termRep (Elems (termRep -> MapR _ r)) = ListR r -termRep (ProjM _ t (termRep -> MapR a _)) = MapR a t -termRep (ProjS _ t (termRep -> SetR _)) = SetR t -termRep (Proj _ t _) = t -termRep (Delta _) = DeltaCoinR -termRep (Negate _) = DeltaCoinR -termRep (Restrict _ m) = termRep m -termRep (HashD _) = DataHashR -termRep (HashS _) = ScriptHashR -termRep (Pair a b) = PairR (termRep a) (termRep b) - -runSum :: Env era -> Sum era c -> Typed c -runSum env (SumMap t) = Map.foldl' add zero <$> runTerm env t -runSum env (SumList t) = List.foldl' add zero <$> runTerm env t -runSum env (One t) = runTerm env t -runSum env (ProjOne l _ t) = do - x <- runTerm env t - pure (x ^. l) -runSum env (ProjMap _ l t) = Map.foldl' accum zero <$> runTerm env t - where - accum ans x = add ans (x ^. l) - -makeTest :: Env era -> Pred era -> Typed (String, Bool, Pred era) -makeTest env c = do - b <- runPred env c - pure (show c ++ " => " ++ show b, b, c) - -displayTerm :: Era era => Env era -> Term era a -> IO () -displayTerm env (Var v@(V nm rep _)) = do - x <- monadTyped (findVar v env) - putStrLn (nm ++ "\n" ++ format rep x) -displayTerm env term = do - x <- monadTyped (runTerm env term) - putStrLn (show term ++ "\n" ++ format (termRep term) x) - --- ======================================================================= --- Patterns are used to indicate bound variables in a ForEach constraint - -patToAnyF :: Pat era t -> [AnyF era t] -patToAnyF (Pat rep as) = concat (map (argToAnyF rep) as) - -argToAnyF :: Rep era t -> Arg era t -> [AnyF era t] -argToAnyF _ (Arg f) = [AnyF f] -argToAnyF rept (ArgPs f@(Field _ _ _ lensx) ps) = AnyF f : map (push rept lensx) (concat (map patToAnyF ps)) -argToAnyF rept (ArgPs f@(FConst _ _ _ lensx) ps) = AnyF f : map (push rept lensx) (concat (map patToAnyF ps)) - -push :: Rep era t -> Lens' t s -> AnyF era s -> AnyF era t -push rept l1 (AnyF (Field nm rep _ l2)) = AnyF (Field nm rep rept (l1 . l2)) -push rept l1 (AnyF (FConst rep x _ l2)) = AnyF (FConst rep x rept (l1 . l2)) - -data Pat era t where - Pat :: !(Rep era t) -> ![Arg era t] -> Pat era t - -data Arg era t where - ArgPs :: !(Field era t s) -> ![Pat era s] -> Arg era t - Arg :: !(Field era t s) -> Arg era t - --- | Succeds if 'term' is a variable with an embedded (Lens' t2 t1) -patt :: Rep era t1 -> Term era t2 -> Pat era t1 -patt rep term = Pat rep [arg rep term] - -instance Show (Pat era t) where - show (Pat r xs) = "Pat " ++ show r ++ " " ++ showL show ", " xs -instance Show (Arg era t) where - show (Arg (Field nm _ _ _)) = nm - show (Arg f@(FConst _ _ _ _)) = show f - show (ArgPs (Field nm _ _ _) qs) = nm ++ " [" ++ showL show ", " qs ++ "]" - show (ArgPs f@(FConst _ _ _ _) qs) = show f ++ " [" ++ showL show ", " qs ++ "]" - -varsOfField :: HashSet (Name era) -> Field era s t -> HashSet (Name era) -varsOfField l (Field n r rx l2) = HashSet.insert (Name $ V n r (Yes rx l2)) l -varsOfField l (FConst _ _ _ _) = l - -varsOfPat :: HashSet (Name era) -> Pat era t -> HashSet (Name era) -varsOfPat ans (Pat _ qs) = List.foldl' varsOfArg ans qs - -varsOfArg :: HashSet (Name era) -> Arg era t -> HashSet (Name era) -varsOfArg ans (ArgPs f qs) = List.foldl' varsOfPat (varsOfField ans f) qs -varsOfArg ans (Arg f) = varsOfField ans f - -substField :: Subst era -> Field era rec fld -> Field era rec fld -substField _ w@(FConst _ _ _ _) = w -substField sub w@(Field n r rx l) = case findV sub (V n r (Yes rx l)) of - (Lit rep x) -> FConst rep x rx l - (Var (V n2 r2 _a2)) -> Field n2 r2 rx l - _ -> w - -substPat :: Subst era -> Pat era t -> Pat era t -substPat sub (Pat r as) = Pat r (map (substArg sub) as) - -substArg :: Subst era -> Arg era t -> Arg era t -substArg sub (ArgPs r as) = ArgPs (substField sub r) (map (substPat sub) as) -substArg sub (Arg r) = Arg (substField sub r) - -bindPat :: t -> Env era -> Pat era t -> Env era -bindPat t env (Pat _ as) = List.foldl' (bindArg t) env as - -bindArg :: t -> Env era -> Arg era t -> Env era -bindArg _ env (Arg (FConst _ _ _ _)) = env -bindArg t env (Arg (Field n r rx l)) = storeVar (V n r (Yes rx l)) (t ^. l) env -bindArg t env (ArgPs (FConst _ _ _ l2) qs) = List.foldl' (bindPat (t ^. l2)) env qs -bindArg t env (ArgPs (Field n r rx l) qs) = - List.foldl' (bindPat (t ^. l)) (storeVar (V n r (Yes rx l)) (t ^. l) env) qs - --- | Construct a Arg with sub-patterns from --- 1) Rep era s, telling what type of Arg --- 2) A variable (Term era s) with a Yes Access, --- 3) A list of sub-patterns. --- Check that all the embedded Access have the right Lens'. --- If not throw an error. -argP :: Rep era s -> Term era t -> [Pat era t] -> Arg era s -argP repS1 (Var (V name rept (Yes repS2 ll))) qs = case testEql repS1 repS2 of - Just Refl -> ArgPs (Field name rept repS2 ll) qs - Nothing -> - error - ( unlines - [ "In 'argP' the given rep and lens target do not match: " - , "rep: " ++ show repS1 - , "lens target: " ++ show repS2 - ] - ) -argP _ t@(Var _) _ = error ("argP applied to variable term with No access." ++ show t) -argP _ term _ = error ("argP can only be applied to variable terms: " ++ show term) - --- | Construct an Arg from a variable (Term era s) with a Yes Access. --- Check that the Access has the right Lens'. If not throw an error. -arg :: Rep era s -> Term era t -> Arg era s -arg repS1 (Var (V name rept (Yes repS2 l))) = case testEql repS1 repS2 of - Just Refl -> Arg (Field name rept repS2 l) - Nothing -> - error - ( unlines - [ "In 'arg' the given rep and lens target do not match: " - , "rep: " ++ show repS1 - , "lens target: " ++ show repS2 - ] - ) -arg _ t@(Var (V _ _ No)) = error ("arg applied to variable term with No access." ++ show t) -arg _ term = error ("arg can only be applied to variable terms: " ++ show term) diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Classes.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Classes.hs deleted file mode 100644 index 5856a56a402..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Classes.hs +++ /dev/null @@ -1,1221 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE FunctionalDependencies #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Constrained.Classes where - -import Cardano.Ledger.Alonzo.Scripts (AsIx, AsIxItem, PlutusPurpose) -import Cardano.Ledger.Alonzo.TxOut (AlonzoTxOut (..)) -import Cardano.Ledger.AuxiliaryData (AuxiliaryDataHash (..)) -import Cardano.Ledger.Babbage.TxOut (BabbageTxOut (..)) -import Cardano.Ledger.BaseTypes (EpochNo (..), ProtVer (..), SlotNo (..)) -import Cardano.Ledger.Coin (Coin (..), DeltaCoin (..)) -import Cardano.Ledger.Conway.Governance hiding (GovState) -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Keys (KeyHash, KeyRole (..)) -import Cardano.Ledger.Mary.Value (MaryValue (..), MultiAsset (..)) -import Cardano.Ledger.Plutus (ExUnits (..)) -import Cardano.Ledger.PoolDistr (IndividualPoolStake (..)) -import Cardano.Ledger.Shelley.Governance (ShelleyGovState (..)) -import qualified Cardano.Ledger.Shelley.Governance as Gov (GovState (..)) -import Cardano.Ledger.Shelley.PParams (pvCanFollow) -import qualified Cardano.Ledger.Shelley.PParams as PP (ProposedPPUpdates (..)) -import Cardano.Ledger.Shelley.TxOut (ShelleyTxOut (..)) -import Cardano.Ledger.TxIn (TxIn) -import Cardano.Ledger.UTxO (ScriptsNeeded, UTxO (..)) -import Cardano.Ledger.Val (Val (coin, modifyCoin, (<+>))) -import Data.Default.Class (Default (def)) -import qualified Data.List as List -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Set (Set) -import qualified Data.Set as Set -import Data.Typeable -import Data.Word (Word64) -import GHC.Real (denominator, numerator, (%)) -import Lens.Micro -import Numeric.Natural (Natural) -import Test.Cardano.Ledger.Alonzo.Arbitrary () -import Test.Cardano.Ledger.Babbage.Arbitrary () -import Test.Cardano.Ledger.Constrained.Combinators (errorMess) -import Test.Cardano.Ledger.Constrained.Monad ( - LiftT (..), - Typed (..), - failT, - ) -import Test.Cardano.Ledger.Constrained.Pairing (pair, unpair) -import Test.Cardano.Ledger.Constrained.Scripts (genCoreScript) -import Test.Cardano.Ledger.Constrained.Size ( - Size (..), - genFromIntRange, - genFromNonNegIntRange, - genFromSize, - negateSize, - sepsP, - ) -import Test.Cardano.Ledger.Conway.Arbitrary () -import Test.Cardano.Ledger.Core.Arbitrary () -import Test.Cardano.Ledger.Generic.Functions (protocolVersion) -import Test.Cardano.Ledger.Generic.GenState (plutusPurposeTags) -import Test.Cardano.Ledger.Generic.PrettyCore ( - PDoc, - PrettyA, - pcScript, - pcScriptsNeeded, - pcTx, - pcTxBody, - pcTxCert, - pcTxOut, - pcVal, - pcWitnesses, - ppPlutusPurposeAsIx, - ppPlutusPurposeAsIxItem, - ppString, - ) -import Test.Cardano.Ledger.Generic.Proof ( - GoodCrypto, - Proof (..), - Reflect (..), - unReflect, - ) -import Test.Cardano.Ledger.Shelley.Constants (defaultConstants) -import Test.Cardano.Ledger.Shelley.Generator.Update (genShelleyPParamsUpdate) -import Test.QuickCheck ( - Arbitrary (..), - Gen, - choose, - chooseInt, - elements, - frequency, - oneof, - shuffle, - suchThat, - vectorOf, - ) - --- ===================================================================== --- Helper functions - -gauss :: Floating a => a -> a -> a -> a -gauss mean stdev x = (1 / (stdev * sqrt (2 * pi))) * exp (negate ((1 / 2) * ((x - mean) / stdev) ** 2)) - --- | The Adds class --- --- Some methods of 'Adds' like 'minus', 'genAdds', 'partition' and 'fromI' are partial. --- That is they might not be defined on all inputs. The `[string]` is a representation --- of a stack trace, that describes what the sytem was doing, so if the function is partial --- it can raise an appropriate error. The function --- Test.Cardano.Ledger.Constrained.Combinators(errorMess) is used to raise an error --- and properly report the stack trace. -class (Eq x, Show x, Typeable x) => Adds x where - -- | Additive identity - zero :: x - - -- | Just the unit of increment. - one :: x - - -- | Add two of these - add :: x -> x -> x - - -- | Subtract one from another - minus :: [String] -> x -> x -> x - - -- | Increase by unit of increment - increaseBy1 :: Int -> Int - increaseBy1 n = add n one - - -- | Decrease by unit of increment - decreaseBy1 :: Int -> Int - decreaseBy1 n = minus ["decreaseBy1"] n one - - -- | Generate a list of values - -- @ partition 7 trace 4 235 @ generate a list of length 4 that - -- adds up t0 235, where the smallest number is >= 7 - partition :: x -> [String] -> Int -> x -> Gen [x] - - -- | Generate a single value - -- @ genAdds trace spec @ generates an 'x' in the range specified by 'spec' - genAdds :: [String] -> AddsSpec x -> Gen x - - -- | Analogous to fromIntegral, translate an Int to an appropriate 'x' - fromI :: [String] -> Int -> x - - -- | translate an 'x' Int to an appropriate Int - toI :: x -> Int - - -- | Used in testing to get appropriate 'smallest' values to test - -- 'partition smallest trace count total'. The generator should choose from - -- several values appropriate for the type 'x'. choose [0,1,2] would be - -- appropriate for Natural, since there are no negative Natural numbers. - genSmall :: Gen Int - - runOrdCondition :: OrdCond -> x -> x -> Bool - - supportsNegative :: x -> Bool - - smallerOf :: x -> x -> x - -sumAdds :: (Foldable t, Adds c) => t c -> c -sumAdds = List.foldl' add zero - -lensAdds :: (Foldable t, Adds b) => Lens' a b -> t a -> b -lensAdds l = List.foldl' accum zero - where - accum ans x = add ans (x ^. l) - -genFromAddsSpec :: [String] -> AddsSpec c -> Gen Int -genFromAddsSpec _ AddsSpecAny = genFromIntRange SzAny -genFromAddsSpec _ (AddsSpecSize _ size) = genFromIntRange size -genFromAddsSpec msgs (AddsSpecNever _) = errorMess "genFromAddsSpec applied to AddsSpecNever" msgs - -genFromNonNegAddsSpec :: [String] -> AddsSpec c -> Gen Int -genFromNonNegAddsSpec _ AddsSpecAny = genFromNonNegIntRange SzAny -genFromNonNegAddsSpec _ (AddsSpecSize _ size) = genFromNonNegIntRange size -genFromNonNegAddsSpec msgs (AddsSpecNever _) = errorMess "genFromAddsSpec applied to AddsSpecNever" msgs - --- ================ --- Adds instances - -instance Adds ExUnits where - zero = ExUnits 0 0 - one = ExUnits 1 1 - add (ExUnits a b) (ExUnits c d) = ExUnits (a + c) (b + d) - minus msgs (ExUnits a b) (ExUnits c d) = - ExUnits - (minus ("Ex memory" : msgs) a c) - (minus ("Ex steps" : msgs) b d) - increaseBy1 n = let (i, j) = unpair n in pair (increaseBy1 @Natural i) (increaseBy1 @Natural j) - decreaseBy1 n = let (i, j) = unpair n in pair (decreaseBy1 @Natural i) (decreaseBy1 @Natural j) - partition (ExUnits smallestmemory smalleststeps) msgs count (ExUnits memory steps) = do - memG <- partition smallestmemory ("Ex memory" : msgs) count memory - stepsG <- partition smalleststeps ("Ex steps" : msgs) count steps - pure (zipWith ExUnits memG stepsG) - genAdds msgs = \case - AddsSpecAny -> errorMess "AddsSpecAny" ms - AddsSpecNever msgs' -> errorMess "AddsSpecNever" $ ms <> msgs' - AddsSpecSize msg sz -> case sz of - SzLeast n -> - let (i, j) = unpair n - in do - ig <- fromIntegral <$> genFromSize (SzLeast i) - jg <- fromIntegral <$> genFromSize (SzLeast j) - pure $ ExUnits ig jg - SzMost n -> - let (i, j) = unpair n - in do - ig <- fromIntegral <$> genFromSize (SzMost i) - jg <- fromIntegral <$> genFromSize (SzMost j) - pure $ ExUnits ig jg - SzExact n -> - let (i, j) = unpair n - in do - ig <- fromIntegral <$> genFromSize (SzExact i) - jg <- fromIntegral <$> genFromSize (SzExact j) - pure $ ExUnits ig jg - SzNever m -> errorMess "AddsSpecSize SzNever" $ ms <> [msg] <> m - _ -> errorMess "AddsSpecSize SzAny or SzRng" $ ms <> [msg] - where - ms = msgs ++ ["genAdds ExUnits"] - fromI msgs n = ExUnits mem step - where - (memInt, stepInt) = unpair n - mem = fromI ("Ex memory" : msgs) memInt - step = fromI ("Ex steps" : msgs) stepInt - toI (ExUnits mem step) = pair (toI mem) (toI step) - supportsNegative _ = False - genSmall = oneof [pure $ toI (ExUnits 1 1), pure $ toI (ExUnits 2 2), pure $ toI (ExUnits 3 1)] - - -- Some ExUnits are incomparable: i.e. x=(ExUnits 5 7) and y=(ExUnits 8 3) - -- neither x c && b > d - runOrdCondition GTE (ExUnits a b) (ExUnits m n) = runOrdCondition GTE a m && runOrdCondition GTE b n - smallerOf x y - | runOrdCondition LTE x y = x - | runOrdCondition GTE x y = y - | otherwise = errorMess "ExUnits are incomparable, can't choose the 'smallerOf'" [show x, show y] - --- ================ -instance Adds Word64 where - zero = 0 - one = 1 - add = (+) - minus msg x y = - if x < y - then errorMess ("(minus @Word64 " ++ show x ++ " " ++ show y ++ ") is not possible") msg - else x - y - partition = partitionWord64 - genAdds msgs spec = fromI ms <$> genFromNonNegAddsSpec ms spec - where - ms = msgs ++ ["genAdds Word64"] - fromI _ m | m >= 0 = fromIntegral m - fromI msgs m = errorMess ("can't convert " ++ show m ++ " into a Word64.") msgs - toI = fromIntegral - genSmall = elements [0, 1, 2] - runOrdCondition = runOrdCond - supportsNegative _ = False - smallerOf = min - -instance Adds Int where - zero = 0 - one = 1 - add = (+) - minus _ = (-) - partition = partitionInt - genAdds msgs spec = fromI ms <$> genFromAddsSpec ms spec - where - ms = msgs ++ ["genAdds Int"] - fromI _ n = n - toI n = n - genSmall = elements [-2, -1, 0, 1, 2] - runOrdCondition = runOrdCond - supportsNegative _ = True - smallerOf = min - -instance Adds Natural where - zero = 0 - one = 1 - add = (+) - minus msg x y = - if x < y - then errorMess ("(minus @Natural " ++ show x ++ " " ++ show y ++ ") is not possible") msg - else x - y - partition = partitionNatural - genAdds msgs spec = fromI ms <$> genFromNonNegAddsSpec ms spec - where - ms = msgs ++ ["genAdds Natural"] - fromI _ n | n >= 0 = fromIntegral n - fromI msgs m = errorMess ("can't convert " ++ show m ++ " into a Natural.") msgs - toI = fromIntegral - genSmall = elements [0, 1, 2] - runOrdCondition = runOrdCond - supportsNegative _ = False - smallerOf = min - -instance Adds Rational where - zero = 0 - one = 1 - add = (+) - minus _ = (-) - partition = partitionRational - genAdds msgs spec = fromI ms <$> genFromAddsSpec ms spec - where - ms = msgs ++ ["genAdds Rational"] - fromI _ n = (fromIntegral n `div` 1000) % 1 - toI r = round (r * 1000) - genSmall = elements [0, 1] - runOrdCondition = runOrdCond - supportsNegative _ = True - smallerOf = min - -instance Adds Coin where - zero = Coin 0 - one = Coin 1 - add = (<+>) - minus msg (Coin n) (Coin m) = - if n < m - then errorMess ("(minus @Coin " ++ show n ++ " " ++ show m ++ ") is not possible") msg - else Coin (n - m) - partition = partitionCoin - genAdds msgs spec = fromI ms <$> genFromNonNegAddsSpec ms spec - where - ms = msgs ++ ["genAdds Coin"] - fromI _ n | n >= 0 = Coin (fromIntegral n) - fromI msgs m = errorMess ("can't convert " ++ show m ++ " into a Coin.") msgs - toI (Coin n) = fromIntegral n - genSmall = elements [0, 1, 2] - runOrdCondition = runOrdCond - supportsNegative _ = False - smallerOf = min - -instance Adds DeltaCoin where - zero = DeltaCoin 0 - one = DeltaCoin 1 - add = (<+>) - minus _ (DeltaCoin n) (DeltaCoin m) = DeltaCoin (n - m) - partition = partitionDeltaCoin - genAdds msgs spec = fromI ms <$> genFromAddsSpec ms spec - where - ms = msgs ++ ["genAdds DeltaCoin"] - fromI _ n = DeltaCoin (fromIntegral n) - toI (DeltaCoin n) = fromIntegral n - genSmall = elements [-2, 0, 1, 2] - runOrdCondition = runOrdCond - supportsNegative _ = True - smallerOf = min - --- =========================================================================== --- The Sums class, for summing a projected c (where Adds c) from some richer type - -class (Show x, Adds x) => Sums t x | t -> x where - getSum :: t -> x - genT :: [String] -> x -> Gen t - -instance GoodCrypto c => Sums (IndividualPoolStake c) Rational where - getSum (IndividualPoolStake r _) = r - genT _ r = IndividualPoolStake r <$> arbitrary - -instance Reflect era => Sums (TxOutF era) Coin where - getSum (TxOutF _ txout) = coin (txout ^. valueTxOutL) - genT _ cn = genTxOutX reify cn - -genTxOutX :: Reflect era => Proof era -> Coin -> Gen (TxOutF era) -genTxOutX p coins = do - txout <- case p of - Shelley -> arbitrary - Allegra -> arbitrary - Mary -> arbitrary - Alonzo -> arbitrary - Babbage -> arbitrary - Conway -> arbitrary - pure $ TxOutF p (txout & coinTxOutL .~ coins) - -instance Reflect era => Sums (ValueF era) Coin where - getSum (ValueF _ v) = coin v - genT _ cn = genValueX reify cn - -genValueX :: Reflect era => Proof era -> Coin -> Gen (ValueF era) -genValueX proof cn = do - ValueF p v <- genValue proof - pure (ValueF p (modifyCoin (const cn) v)) - -instance Crypto c => Sums [Reward c] Coin where - getSum ss = List.foldl' accum (Coin 0) ss - where - accum ans (Reward _ _ c) = add ans c - genT _ (Coin 1) = (: []) <$> (updateRew (Coin 1) <$> arbitrary) - genT msgs (Coin n) | n > 1 = do - size <- chooseInt (1, fromIntegral n) - cs <- partition (Coin 1) msgs size (Coin n) - list <- vectorOf size (arbitrary :: Gen (Reward c)) - pure $ zipWith (updateRew @c) cs list - genT msgs c = errorMess ("Coin in genT must be positive: " ++ show c) msgs - -updateRew :: forall c. Coin -> Reward c -> Reward c -updateRew c (Reward a b _) = Reward a b c - --- =========================================================== --- Sizeable Class - -class Show t => Sizeable t where - -- | extract the 'size' of 't' - getSize :: t -> Int - -instance Sizeable Natural where - getSize n = fromIntegral n - -instance Sizeable Int where - getSize n = n - -instance Sizeable Word64 where - getSize n = fromIntegral n - -instance Sizeable EpochNo where - getSize (EpochNo n) = fromIntegral n - -instance Sizeable SlotNo where - getSize (SlotNo n) = fromIntegral n - -instance (Show dom, Show rng) => Sizeable (Map dom rng) where - getSize m = Map.size m - -instance Show t => Sizeable (Set t) where - getSize m = Set.size m - -instance Show t => Sizeable [t] where - getSize m = length m - -instance Sizeable Coin where - getSize (Coin n) = fromIntegral n - -instance Sizeable (MultiAsset c) where - getSize (MultiAsset m) = Map.size m - -instance EraPParams era => Sizeable (Proposals era) where - getSize = proposalsSize - --- =========================================================== --- The Count class 0,1,2,3,4 ... - -class Count t where - -- | 'canFollow x y', is 'x' an appropriate successor to 'y' - canFollow :: t -> t -> Bool - - -- | Generate the predecessor, given the successor - genPred :: t -> Gen t - - -- | Generate the successor, given the predecessor - genSucc :: t -> Gen t - -instance Count Int where - canFollow x y = x + 1 == y - genPred n | n <= 0 = error ("genPredFromSucc @Int is undefined on " ++ show n) - genPred n = pure (n - 1) - genSucc n = pure (n + 1) - -instance Count ProtVer where - canFollow succX predX = pvCanFollow predX succX - genPred succX@(ProtVer n 0) - | n == minBound = error ("genPredFromSucc @ProtVer is undefined on " ++ show succX) - genPred (ProtVer n 0) = ProtVer (pred n) <$> elements [0, 1, 2, 3] - genPred (ProtVer n m) = pure (ProtVer n (m - 1)) - genSucc (ProtVer n m) = frequency [(1, pure (ProtVer (succ n) 0)), (2, pure (ProtVer n (m + 1)))] - -instance Count EpochNo where - canFollow predX succX = predX + 1 == succX - genPred n | n == 0 = error ("genPredFromSucc @EpochNo is undefined on " ++ show n) - genPred n = pure (n - 1) - genSucc n = pure (n + 1) - -instance Count SlotNo where - canFollow predX succX = predX + 1 == succX - genPred n | n == 0 = error ("genPredFromSucc @SlotNo is undefined on " ++ show n) - genPred n = pure (n - 1) - genSucc n = pure (n + 1) - --- ============================================================================ --- Special accomodation for Type Families --- ============================================================================ - -data TxAuxDataF era where - TxAuxDataF :: Proof era -> TxAuxData era -> TxAuxDataF era - -hashTxAuxDataF :: Reflect era => TxAuxDataF era -> AuxiliaryDataHash (EraCrypto era) -hashTxAuxDataF (TxAuxDataF _ x) = hashTxAuxData x - -unTxAuxData :: TxAuxDataF era -> TxAuxData era -unTxAuxData (TxAuxDataF _ x) = x - -instance Show (TxAuxDataF era) where - show (TxAuxDataF p x) = show ((unReflect pcAuxData p x) :: PDoc) - -instance Eq (TxAuxDataF era) where - (TxAuxDataF Shelley x) == (TxAuxDataF Shelley y) = x == y - (TxAuxDataF Allegra x) == (TxAuxDataF Allegra y) = x == y - (TxAuxDataF Mary x) == (TxAuxDataF Mary y) = x == y - (TxAuxDataF Alonzo x) == (TxAuxDataF Alonzo y) = x == y - (TxAuxDataF Babbage x) == (TxAuxDataF Babbage y) = x == y - (TxAuxDataF Conway x) == (TxAuxDataF Conway y) = x == y - -pcAuxData :: Proof era -> TxAuxData era -> PDoc -pcAuxData p _x = ppString ("TxAuxData " ++ show p) -- TODO make this more accurate - -genTxAuxDataF :: Proof era -> Gen (TxAuxDataF era) -genTxAuxDataF p@Shelley = TxAuxDataF p <$> suchThat arbitrary (validateTxAuxData (protocolVersion p)) -genTxAuxDataF p@Allegra = TxAuxDataF p <$> suchThat arbitrary (validateTxAuxData (protocolVersion p)) -genTxAuxDataF p@Mary = TxAuxDataF p <$> suchThat arbitrary (validateTxAuxData (protocolVersion p)) -genTxAuxDataF p@Alonzo = TxAuxDataF p <$> suchThat arbitrary (validateTxAuxData (protocolVersion p)) -genTxAuxDataF p@Babbage = TxAuxDataF p <$> suchThat arbitrary (validateTxAuxData (protocolVersion p)) -genTxAuxDataF p@Conway = TxAuxDataF p <$> suchThat arbitrary (validateTxAuxData (protocolVersion p)) - --- ============== - -data TxF era where - TxF :: Proof era -> Tx era -> TxF era - -unTxF :: TxF era -> Tx era -unTxF (TxF _ x) = x - -instance PrettyA (PParamsUpdate era) => Show (TxF era) where - show (TxF p x) = show ((unReflect pcTx p x) :: PDoc) - -instance Eq (TxF era) where - (TxF Shelley x) == (TxF Shelley y) = x == y - (TxF Allegra x) == (TxF Allegra y) = x == y - (TxF Mary x) == (TxF Mary y) = x == y - (TxF Alonzo x) == (TxF Alonzo y) = x == y - (TxF Babbage x) == (TxF Babbage y) = x == y - (TxF Conway x) == (TxF Conway y) = x == y - --- ============== - -data TxWitsF era where - TxWitsF :: Proof era -> TxWits era -> TxWitsF era - -unTxWitsF :: TxWitsF era -> TxWits era -unTxWitsF (TxWitsF _ x) = x - -instance Show (TxWitsF era) where - show (TxWitsF p x) = show ((unReflect pcWitnesses p x) :: PDoc) - -instance Eq (TxWitsF era) where - (TxWitsF Shelley x) == (TxWitsF Shelley y) = x == y - (TxWitsF Allegra x) == (TxWitsF Allegra y) = x == y - (TxWitsF Mary x) == (TxWitsF Mary y) = x == y - (TxWitsF Alonzo x) == (TxWitsF Alonzo y) = x == y - (TxWitsF Babbage x) == (TxWitsF Babbage y) = x == y - (TxWitsF Conway x) == (TxWitsF Conway y) = x == y - --- ============================== - -data TxBodyF era where - TxBodyF :: Proof era -> TxBody era -> TxBodyF era - -unTxBodyF :: TxBodyF era -> TxBody era -unTxBodyF (TxBodyF _ x) = x - -instance PrettyA (PParamsUpdate era) => Show (TxBodyF era) where - show (TxBodyF p x) = show ((unReflect pcTxBody p x) :: PDoc) - -instance Eq (TxBodyF era) where - (TxBodyF Shelley x) == (TxBodyF Shelley y) = x == y - (TxBodyF Allegra x) == (TxBodyF Allegra y) = x == y - (TxBodyF Mary x) == (TxBodyF Mary y) = x == y - (TxBodyF Alonzo x) == (TxBodyF Alonzo y) = x == y - (TxBodyF Babbage x) == (TxBodyF Babbage y) = x == y - (TxBodyF Conway x) == (TxBodyF Conway y) = x == y - --- ================== -data TxCertF era where - TxCertF :: Proof era -> TxCert era -> TxCertF era - -unTxCertF :: TxCertF era -> TxCert era -unTxCertF (TxCertF _ x) = x - -instance Show (TxCertF era) where - show (TxCertF p x) = show (pcTxCert p x) - -instance Eq (TxCertF era) where - (TxCertF Shelley x) == (TxCertF Shelley y) = x == y - (TxCertF Allegra x) == (TxCertF Allegra y) = x == y - (TxCertF Mary x) == (TxCertF Mary y) = x == y - (TxCertF Alonzo x) == (TxCertF Alonzo y) = x == y - (TxCertF Babbage x) == (TxCertF Babbage y) = x == y - (TxCertF Conway x) == (TxCertF Conway y) = x == y - --- ================== -data PlutusPurposeF era where - PlutusPurposeF :: Proof era -> PlutusPurpose AsIxItem era -> PlutusPurposeF era - -unPlutusPurposeF :: PlutusPurposeF era -> PlutusPurpose AsIxItem era -unPlutusPurposeF (PlutusPurposeF _ pp) = pp - -data PlutusPointerF era where - PlutusPointerF :: Proof era -> PlutusPurpose AsIx era -> PlutusPointerF era - -unPlutusPointerF :: PlutusPointerF era -> PlutusPurpose AsIx era -unPlutusPointerF (PlutusPointerF _ pp) = pp - -instance Show (PlutusPurposeF era) where - show (PlutusPurposeF p x) = unReflect (\_ -> show (ppPlutusPurposeAsIxItem x)) p - -instance Show (PlutusPointerF era) where - show (PlutusPointerF p x) = unReflect (\_ -> show (ppPlutusPurposeAsIx x)) p - -instance Eq (PlutusPurposeF era) where - PlutusPurposeF Alonzo x == PlutusPurposeF Alonzo y = x == y - PlutusPurposeF Babbage x == PlutusPurposeF Babbage y = x == y - PlutusPurposeF Conway x == PlutusPurposeF Conway y = x == y - _ == _ = error "Unsupported" - -instance Eq (PlutusPointerF era) where - PlutusPointerF Alonzo x == PlutusPointerF Alonzo y = x == y - PlutusPointerF Babbage x == PlutusPointerF Babbage y = x == y - PlutusPointerF Conway x == PlutusPointerF Conway y = x == y - _ == _ = error "Unsupported" - -instance Ord (PlutusPointerF era) where - compare (PlutusPointerF Alonzo x) (PlutusPointerF Alonzo y) = compare x y - compare (PlutusPointerF Babbage x) (PlutusPointerF Babbage y) = compare x y - compare (PlutusPointerF Conway x) (PlutusPointerF Conway y) = compare x y - compare _ _ = error "Unsupported" - --- ========= -data TxOutF era where - TxOutF :: Proof era -> TxOut era -> TxOutF era - -unTxOut :: TxOutF era -> TxOut era -unTxOut (TxOutF _ x) = x - -instance Eq (TxOutF era) where - x1 == x2 = compare x1 x2 == EQ - -instance Ord (TxOutF era) where - compare (TxOutF Shelley (ShelleyTxOut a1 v1)) (TxOutF Shelley (ShelleyTxOut a2 v2)) = - compare a1 a2 <> compare v1 v2 - compare (TxOutF Allegra (ShelleyTxOut a1 v1)) (TxOutF Allegra (ShelleyTxOut a2 v2)) = - compare (a1, v1) (a2, v2) - compare (TxOutF Mary (ShelleyTxOut a1 v1)) (TxOutF Mary (ShelleyTxOut a2 v2)) = - compare (a1, v1) (a2, v2) - compare (TxOutF Alonzo (AlonzoTxOut a1 v1 d1)) (TxOutF Alonzo (AlonzoTxOut a2 v2 d2)) = - compare (a1, v1, d1) (a2, v2, d2) - compare (TxOutF Babbage (BabbageTxOut a1 v1 d1 x1)) (TxOutF Babbage (BabbageTxOut a2 v2 d2 x2)) = - compare (a1, v1, d1, fmap hashScript x1) (a2, v2, d2, fmap hashScript x2) - compare (TxOutF Conway (BabbageTxOut a1 v1 d1 x1)) (TxOutF Conway (BabbageTxOut a2 v2 d2 x2)) = - compare (a1, v1, d1, fmap hashScript x1) (a2, v2, d2, fmap hashScript x2) - --- ====== -data ValueF era where - ValueF :: Proof era -> Value era -> ValueF era - -unValue :: ValueF era -> Value era -unValue (ValueF _ v) = v - -instance Crypto c => Ord (MaryValue c) where - compare (MaryValue c1 m1) (MaryValue c2 m2) = compare (c1, m1) (c2, m2) - -instance Crypto c => Ord (MultiAsset c) where - compare (MultiAsset m1) (MultiAsset m2) = compare m1 m2 - -instance Eq (ValueF era) where - x == y = compare x y == EQ - -instance Ord (ValueF era) where - (ValueF Shelley x) `compare` (ValueF Shelley y) = compare x y - (ValueF Allegra x) `compare` (ValueF Allegra y) = compare x y - (ValueF Mary (MaryValue c1 m1)) `compare` (ValueF Mary (MaryValue c2 m2)) = compare c1 c2 <> compare m1 m2 - (ValueF Alonzo (MaryValue c1 m1)) `compare` (ValueF Alonzo (MaryValue c2 m2)) = compare c1 c2 <> compare m1 m2 - (ValueF Babbage (MaryValue c1 m1)) `compare` (ValueF Babbage (MaryValue c2 m2)) = compare c1 c2 <> compare m1 m2 - (ValueF Conway (MaryValue c1 m1)) `compare` (ValueF Conway (MaryValue c2 m2)) = compare c1 c2 <> compare m1 m2 - --- ====== -data PParamsF era where - PParamsF :: Proof era -> PParams era -> PParamsF era - -unPParams :: PParamsF era -> PParams era -unPParams (PParamsF _ p) = p - -pparamsWrapperL :: Lens' (PParamsF era) (PParams era) -pparamsWrapperL = lens unPParams (\(PParamsF p _) pp -> PParamsF p pp) - --- ======= - -data PParamsUpdateF era where - PParamsUpdateF :: Proof era -> PParamsUpdate era -> PParamsUpdateF era - -unPParamsUpdate :: PParamsUpdateF era -> PParamsUpdate era -unPParamsUpdate (PParamsUpdateF _ p) = p - -pparamsUpdateWrapperL :: Lens' (PParamsUpdateF era) (PParamsUpdate era) -pparamsUpdateWrapperL = lens unPParamsUpdate (\(PParamsUpdateF p _) pp -> PParamsUpdateF p pp) - --- ===================== - -data ProposedPPUpdatesF era where - ProposedPPUpdatesF :: Proof era -> PP.ProposedPPUpdates era -> ProposedPPUpdatesF era - -unProposedPPUpdates :: ProposedPPUpdatesF era -> PP.ProposedPPUpdates era -unProposedPPUpdates (ProposedPPUpdatesF _ x) = x - -proposedCoreL :: - Lens' (PP.ProposedPPUpdates era) (Map (KeyHash 'Genesis (EraCrypto era)) (PParamsUpdate era)) -proposedCoreL = lens (\(PP.ProposedPPUpdates m) -> m) (\(PP.ProposedPPUpdates _) m -> PP.ProposedPPUpdates m) - -proposedWrapperL :: Lens' (ProposedPPUpdatesF era) (PP.ProposedPPUpdates era) -proposedWrapperL = lens unProposedPPUpdates (\(ProposedPPUpdatesF p _) pp -> ProposedPPUpdatesF p pp) - -coreMapL :: - Proof era -> - Lens' - (Map (KeyHash 'Genesis (EraCrypto era)) (PParamsUpdate era)) - (Map (KeyHash 'Genesis (EraCrypto era)) (PParamsUpdateF era)) -coreMapL p = lens (fmap (PParamsUpdateF p)) (\_ b -> fmap unPParamsUpdate b) - -proposedMapL :: - Lens' (ProposedPPUpdatesF era) (Map (KeyHash 'Genesis (EraCrypto era)) (PParamsUpdateF era)) -proposedMapL = - lens - (\(ProposedPPUpdatesF p x) -> x ^. (proposedCoreL . coreMapL p)) - (\(ProposedPPUpdatesF p x) y -> ProposedPPUpdatesF p (x & (proposedCoreL . coreMapL p) .~ y)) - --- ==================== - -data GovState era = GovState (Proof era) (Gov.GovState era) - -unGovState :: GovState era -> Gov.GovState era -unGovState (GovState _ x) = x - -govProposedL :: Lens' (GovState era) (ShelleyGovState era) -govProposedL = - lens - (\(GovState p x) -> getPPUP p x) - (\(GovState p _) y -> GovState p (putPPUP p y)) - -getPPUP :: forall era. Proof era -> Gov.GovState era -> ShelleyGovState era -getPPUP Shelley x = x -getPPUP Allegra x = x -getPPUP Mary x = x -getPPUP Alonzo x = x -getPPUP Babbage x = x -getPPUP Conway _ = def @(ShelleyGovState era) - -putPPUP :: forall era. Proof era -> ShelleyGovState era -> Gov.GovState era -putPPUP Shelley x = x -putPPUP Allegra x = x -putPPUP Mary x = x -putPPUP Alonzo x = x -putPPUP Babbage x = x -putPPUP Conway _ = Gov.emptyGovState @era - --- ================ -liftUTxO :: Map (TxIn (EraCrypto era)) (TxOutF era) -> UTxO era -liftUTxO m = UTxO (Map.map unTxOut m) - -instance Show (TxOutF era) where - show (TxOutF p t) = show (unReflect pcTxOut p t :: PDoc) - -instance Show (ValueF era) where - show (ValueF p t) = show (pcVal p t) - -instance Show (PParamsF era) where - show (PParamsF _ _) = "PParamsF ..." - -instance Show (PParamsUpdateF era) where - show (PParamsUpdateF _ _) = "PParamsUpdateF ..." - -instance Show (ProposedPPUpdatesF era) where - show (ProposedPPUpdatesF _ _) = "ProposedPPUdatesF ..." - -genValue :: Proof era -> Gen (ValueF era) -genValue p = case p of - Shelley -> ValueF p <$> arbitrary - Allegra -> ValueF p <$> arbitrary - Mary -> ValueF p <$> arbitrary - Alonzo -> ValueF p <$> arbitrary - Babbage -> ValueF p <$> arbitrary - Conway -> ValueF p <$> arbitrary - -genTxOut :: Proof era -> Gen (TxOutF era) -genTxOut p = do - n <- frequency [(2, choose (1, 100)), (1, choose (101, 1000))] - unReflect genTxOutX p (Coin n) - -genPParams :: Proof era -> Gen (PParamsF era) -genPParams p = case p of - Shelley -> PParamsF p <$> arbitrary - Allegra -> PParamsF p <$> arbitrary - Mary -> PParamsF p <$> arbitrary - Alonzo -> PParamsF p <$> arbitrary - Babbage -> PParamsF p <$> arbitrary - Conway -> PParamsF p <$> arbitrary - -genPParamsUpdate :: Proof era -> Gen (PParamsUpdateF era) -genPParamsUpdate p = case p of - Shelley -> PParamsUpdateF p <$> genShelleyPParamsUpdate defaultConstants def - Allegra -> PParamsUpdateF p <$> genShelleyPParamsUpdate defaultConstants def - Mary -> PParamsUpdateF p <$> genShelleyPParamsUpdate defaultConstants def - Alonzo -> PParamsUpdateF p <$> arbitrary - Babbage -> PParamsUpdateF p <$> arbitrary - Conway -> PParamsUpdateF p <$> arbitrary - -genProposedPPUpdates :: Proof era -> Gen (ProposedPPUpdatesF era) -genProposedPPUpdates p = case p of - Shelley -> ProposedPPUpdatesF p . PP.ProposedPPUpdates <$> arbitrary - Allegra -> ProposedPPUpdatesF p . PP.ProposedPPUpdates <$> arbitrary - Mary -> ProposedPPUpdatesF p . PP.ProposedPPUpdates <$> arbitrary - Alonzo -> ProposedPPUpdatesF p . PP.ProposedPPUpdates <$> arbitrary - Babbage -> ProposedPPUpdatesF p . PP.ProposedPPUpdates <$> arbitrary - Conway -> ProposedPPUpdatesF p . PP.ProposedPPUpdates <$> arbitrary - -genGovState :: Proof era -> Gen (GovState era) -genGovState p = case p of - Shelley -> GovState p <$> arbitrary - Allegra -> GovState p <$> arbitrary - Mary -> GovState p <$> arbitrary - Alonzo -> GovState p <$> arbitrary - Babbage -> GovState p <$> arbitrary - Conway -> pure $ GovState p Gov.emptyGovState - -genUTxO :: Proof era -> Gen (UTxO era) -genUTxO p = case p of - Shelley -> arbitrary - Allegra -> arbitrary - Mary -> arbitrary - Alonzo -> arbitrary - Babbage -> arbitrary - Conway -> arbitrary - --- ======================== - -data ScriptsNeededF era where - ScriptsNeededF :: Proof era -> ScriptsNeeded era -> ScriptsNeededF era - -unScriptsNeededF :: ScriptsNeededF era -> ScriptsNeeded era -unScriptsNeededF (ScriptsNeededF _ v) = v - -instance Show (ScriptsNeededF era) where - show (ScriptsNeededF p t) = unReflect (\_ -> show (pcScriptsNeeded p t)) p - --- ======================== - -data ScriptF era where - ScriptF :: Proof era -> Script era -> ScriptF era - -unScriptF :: ScriptF era -> Script era -unScriptF (ScriptF _ v) = v - -instance Show (ScriptF era) where - show (ScriptF p t) = show ((unReflect pcScript p t) :: PDoc) - -instance Eq (ScriptF era) where - (ScriptF Shelley x) == (ScriptF Shelley y) = x == y - (ScriptF Allegra x) == (ScriptF Allegra y) = x == y - (ScriptF Mary x) == (ScriptF Mary y) = x == y - (ScriptF Alonzo x) == (ScriptF Alonzo y) = x == y - (ScriptF Babbage x) == (ScriptF Babbage y) = x == y - (ScriptF Conway x) == (ScriptF Conway y) = x == y - -genScriptF :: Era era => Proof era -> Gen (ScriptF era) -genScriptF proof = do - tag <- elements $ plutusPurposeTags proof - vi <- arbitrary - m <- Map.fromList <$> vectorOf 5 arbitrary - corescript <- genCoreScript proof tag m vi - pure (ScriptF proof corescript) - --- ========================================================================== --- A Single Partition function on Integer, we use to do all partitions by --- using wrapper functions. --- ========================================================================== - -zeroCount :: Show a => [Char] -> a -> [Char] -zeroCount fname total = - fname - ++ " called with count=(0) and total=(" - ++ show total - ++ ") \n" - ++ "Probably due to (SumsTo comparison " - ++ show total - ++ " [SumMap x]) where 'x' is the emptyset.\n" - ++ "Try adding (Sized (Range 1 m) (Dom x)) constraint to force 'x' to have at least 1 element" - -legalCallPartition :: [String] -> String -> Integer -> Int -> Integer -> Maybe [String] -legalCallPartition msgs typname smallest size total - | size == 0 && smallest > 0 = - Just - ( [ "partition at type " ++ typname - , "smallest=" - ++ show smallest - ++ ", size=" - ++ show size - ++ ", total=" - ++ show total - ] - ++ msgs - ) - | fromIntegral size > total && smallest > 0 = - Just $ - ( "Can't partition " - ++ show total - ++ " into " - ++ show size - ++ " positive pieces at type " - ++ typname - ++ " (smallest = " - ++ show smallest - ++ ")" - ) - : msgs - | size <= 0 = - Just $ - ( "Can only make a partition of a positive number of pieces: " - ++ show size - ++ ", total: " - ++ show total - ++ ", smallest: " - ++ show smallest - ) - : msgs - | smallest > 0 && smallest * (fromIntegral size) > total = - Just $ - ( "Can't partition " - ++ show total - ++ " into " - ++ show size - ++ " pieces, each (>= " - ++ show smallest - ++ ")" - ) - : msgs - | total < 1 && smallest > 0 = - Just $ - ( "Total (" - ++ show total - ++ ") must be positive when smallest(" - ++ show smallest - ++ ") is positive." - ) - : msgs - | True = Nothing - --- | Generate a list of length 'size' that sums to 'total', where the minimum element is (>= 'smallest') -integerPartition :: [String] -> String -> Integer -> Int -> Integer -> Gen [Integer] -integerPartition msgs typname smallest size total - | total == 0 && smallest <= 0 = pure (replicate size 0) - | True = case legalCallPartition msgs typname smallest size total of - Just (x : xs) -> errorMess x xs - Just [] -> errorMess "legalCallPartition returns []" [] - Nothing -> - let mean = total `div` fromIntegral (size + 1) - go 1 total1 - | total1 < 1 && smallest > 0 = - errorMess ("Ran out of choices(2), total went negative: " ++ show total1) msgs - | otherwise = pure [total1] - go 2 total1 = do - z <- choose (smallest, total1 - 1) - pure [z, total1 - z] - go size1 total1 = do - let hi = - min - (max 1 mean) - (total1 - (size1 - 1)) - x <- choose (smallest, hi) - xs <- go (size1 - 1) (total1 - x) - pure (x : xs) - in do - ws <- go (fromIntegral size) total - shuffle ws - -partitionRational :: Rational -> [String] -> Int -> Rational -> Gen [Rational] -partitionRational smallest msgs size total = do - let scale = lcm (denominator smallest) (denominator total) - iSmallest = numerator (smallest * (scale % 1)) - iTotal = numerator (total * (scale % 1)) - is <- integerPartition msgs ("Rational*" ++ show scale) iSmallest size iTotal - pure (map (\i -> i % scale) is) - -partitionCoin :: Coin -> [String] -> Int -> Coin -> Gen [Coin] -partitionCoin (Coin small) msgs n (Coin total) = - map Coin <$> integerPartition msgs "Coin" small n total - -partitionDeltaCoin :: DeltaCoin -> [String] -> Int -> DeltaCoin -> Gen [DeltaCoin] -partitionDeltaCoin (DeltaCoin small) msgs n (DeltaCoin total) = - map DeltaCoin <$> integerPartition msgs "DeltaCoin" small n total - -partitionInt :: Int -> [String] -> Int -> Int -> Gen [Int] -partitionInt small msgs n total = - map fromIntegral <$> integerPartition msgs "Int" (fromIntegral small) n (fromIntegral total) - -partitionWord64 :: Word64 -> [String] -> Int -> Word64 -> Gen [Word64] -partitionWord64 small msgs n total = - map fromIntegral <$> integerPartition msgs "Word64" (fromIntegral small) n (fromIntegral total) - -partitionNatural :: Natural -> [String] -> Int -> Natural -> Gen [Natural] -partitionNatural small msgs n total = - map fromIntegral <$> integerPartition msgs "Natural" (fromIntegral small) n (fromIntegral total) - --- ======================================================= - --- | Translate (s,cond,n), into a Size which --- specifies the Int range on which the OrdCond is True. --- The triple (s, EQL, 2) denotes s = 2 --- (s, LTH, 7) denotes s < 7 --- (s, GTH, 5) denotes s > 5 ... -ordCondToSize :: forall a. Adds a => (String, OrdCond, a) -> Size -ordCondToSize (_label, cond, n) = case cond of - EQL -> SzExact $ toI n - LTH -> SzMost $ decreaseBy1 @a $ toI n - LTE -> SzMost $ toI n - GTH -> SzLeast $ increaseBy1 @a $ toI n - GTE -> SzLeast $ toI n - --- Translate some thing like [SumsTo _ x <= 4 + 6 + 9] where the variable 'x' is on the left -varOnLeft :: Adds a => String -> OrdCond -> a -> AddsSpec c -varOnLeft x cond n = AddsSpecSize x (varOnLeftSize x cond n) - -varOnLeftSize :: Adds a => String -> OrdCond -> a -> Size -varOnLeftSize x cond n = ordCondToSize (x, cond, n) - --- Translate some thing like [SumsTo c 8 < 2 + x + 3] where the variable 'x' is on the right -varOnRight :: Adds a => [String] -> a -> OrdCond -> a -> String -> AddsSpec c -varOnRight _ lhs LTH rhs s - | toI rhs > toI lhs -- When this holds the only constraint on the var 's' is that its is (>= 0) - = - AddsSpecSize s (SzLeast 0) -varOnRight msgs lhs cond rhs s = - AddsSpecSize - s - ( varOnRightSize - ( ( "varOnRight @" - ++ show (typeOf lhs) - ++ " " - ++ show lhs - ++ " " - ++ show cond - ++ " " - ++ s - ++ " + " - ++ show rhs - ) - : msgs - ) - lhs - cond - rhs - s - ) - -varOnRightSize :: Adds a => [String] -> a -> OrdCond -> a -> String -> Size -varOnRightSize msgs n cond m s = - if not (supportsNegative n) && toI n <= toI m - then -- if the lhs 'n' is less than the rhs 'm', then the var 's' must be 0 or greater - SzLeast 0 - else - ordCondToSize - ( s - , reverseOrdCond cond - , minus - (("varOnRightSize " ++ show n ++ " " ++ show cond ++ " " ++ show m ++ " + " ++ s) : msgs) - n - m - ) - --- Translate some thing like [SumsTo (Negate x) <= 4 + 6 + 9] where the variable 'x' --- is on the left, and we want to produce its negation. -varOnLeftNeg :: Adds a => String -> OrdCond -> a -> AddsSpec c -varOnLeftNeg s cond n = AddsSpecSize s (negateSize (ordCondToSize (s, cond, n))) - --- Translate some thing like [SumsTo 8 < 2 + (Negate x) + 3] where the --- variable 'x' is on the right, and we want to produce its negation. -varOnRightNeg :: Adds a => a -> OrdCond -> a -> String -> AddsSpec c -varOnRightNeg n cond m s = - AddsSpecSize - s - (negateSize (ordCondToSize (s, reverseOrdCond cond, minus ["varOnRightNeg", s, show m] n m))) - --- | This function `reverseOrdCond` has been defined to handle the Pred SumsTo when the --- variable is on the right-hand-side (rhs) of the OrdCond operator. In order to do that --- we must multiply both sides of the inequality by (-1). For example consider --- [SumsTo (DeltaCoin 1) ▵₳ -2 > ∑ ▵₳ -1 + x] --- Note variable x on the rhs ^ --- To solve we subtract 'x' from both sides, and add '▵₳ -2' from bothsides --- getting (-x) > ∑ (▵₳ -1) + (▵₳ -2) --- reduced to (-x) > ∑ (▵₳ -3) --- to solve we must multiply both sides by (-1) --- x ?? ∑ (▵₳ 3) --- What operator do we replace ?? by to make the original (▵₳ -2 > ∑ ▵₳ -1 + x) True? --- The change in the operator is called "reversing" the operator. See --- https://www.mathsisfun.com/algebra/inequality-solving.html for one explantion. -reverseOrdCond :: OrdCond -> OrdCond -reverseOrdCond EQL = EQL -reverseOrdCond LTH = GTH -reverseOrdCond LTE = GTE -reverseOrdCond GTH = LTH -reverseOrdCond GTE = LTE - --- ========================================================================= --- OrdCond --- x <= y --- ^ paramerterize over the condition --- --- EQL = (==), LTH = (<), LTE = (<=), GTH = (>), GTE = (>=) --- ========================================================================= - --- | First order representation of the Ord comparisons -data OrdCond = EQL | LTH | LTE | GTH | GTE - deriving (Eq) - -instance Show OrdCond where - show EQL = " = ∑ " - show LTH = " < ∑ " - show LTE = " <= ∑ " - show GTH = " > ∑ " - show GTE = " >= ∑ " - -runOrdCond :: Ord c => OrdCond -> c -> c -> Bool -runOrdCond EQL x y = x == y -runOrdCond LTH x y = x < y -runOrdCond LTE x y = x <= y -runOrdCond GTH x y = x > y -runOrdCond GTE x y = x >= y - --- ========================================================================= - --- | A specification of summation. like: lhs = ∑ rhs --- The idea is that the 'rhs' can contain multiple terms: rhs = ∑ r1 + r2 + r3 --- Other example conditions: (lhs < ∑ rhs), and (lhs >= ∑ rhs) --- The invariant is that only a single variable appears in the summation. --- It can appear on either side. If it appears in the 'rhs' then there --- may be other, constant terms, in the rhs: 7 = ∑ 3 + v + 9 --- We always do the sums and solving at type Int, and cast back and forth to --- accommodate other types with (Adds c) instances, using the methods 'fromI" and 'toI' --- This allows the instance to deal with special conditions. --- There are two (non-failure) possibilities 1) Var on the left, 2) Var on the right --- We supply functions --- varOnLeft :: String -> OrdCond -> Integer -> AddsSpec c --- SumsTo _ x <= 4 + 6 + 9 ===> (varOnLeft x LTE 19) == (AddsSpecSize x (AtMost 19)) --- varOnRight :: Integer -> OrdCond -> Integer -> String -> AddsSpec c --- SumsTo _ 8 < 2 + x + 3 ===> (varOnRight 8 LTH 5 x) == (AddsSpecSize x (AtLeast 4)) --- But internally we store the information as a String and a Size (I.e. a range of Int) -data AddsSpec c where - AddsSpecSize :: - -- | name - String -> - -- | total (range like (4 .. 12)) - Size -> - AddsSpec c - AddsSpecAny :: AddsSpec c - AddsSpecNever :: [String] -> AddsSpec c - -instance LiftT (AddsSpec c) where - liftT (AddsSpecNever xs) = failT xs - liftT x = pure x - dropT (Typed (Left s)) = AddsSpecNever s - dropT (Typed (Right x)) = x - -instance Show (AddsSpec c) where show = showAddsSpec - -instance Semigroup (AddsSpec c) where (<>) = mergeAddsSpec -instance Monoid (AddsSpec c) where mempty = AddsSpecAny - -showAddsSpec :: AddsSpec c -> String -showAddsSpec AddsSpecAny = "AddsSpecAny" -showAddsSpec (AddsSpecSize s size) = sepsP ["AddsSpecSize", s, show size] -showAddsSpec (AddsSpecNever _) = "AddsSpecNever" - -mergeAddsSpec :: AddsSpec c -> AddsSpec c -> AddsSpec c -mergeAddsSpec (AddsSpecNever xs) (AddsSpecNever ys) = AddsSpecNever (xs ++ ys) -mergeAddsSpec x@(AddsSpecNever _) _ = x -mergeAddsSpec _ x@(AddsSpecNever _) = x -mergeAddsSpec AddsSpecAny x = x -mergeAddsSpec x AddsSpecAny = x -mergeAddsSpec a@(AddsSpecSize nam1 size1) b@(AddsSpecSize nam2 size2) = - if nam1 /= nam2 - then - AddsSpecNever - [ "vars " ++ nam1 ++ " and " ++ nam2 ++ " are not the same." - , show a ++ " " ++ show b ++ " are inconsistent." - ] - else case size1 <> size2 of - (SzNever xs) -> AddsSpecNever (xs ++ [show a ++ " " ++ show a ++ " are inconsistent."]) - size3 -> AddsSpecSize nam1 size3 - --- ======================================= --- Helper function to create AddsSpecSize - --- Translate some thing like [SumsTo _ x <= 4 + 6 + 9] where the variable 'x' is on the left -vLeft :: String -> OrdCond -> Int -> (AddsSpec c) -vLeft x cond n = AddsSpecSize x (vLeftSize x cond n) - -vLeftSize :: String -> OrdCond -> Int -> Size -vLeftSize x cond n = ordCondToSize (x, cond, n) - --- Translate some thing like [SumsTo c 8 < 2 + x + 3] where the variable 'x' is on the right -vRight :: Int -> OrdCond -> Int -> String -> AddsSpec c -vRight n cond m s = AddsSpecSize s (vRightSize n cond m s) - --- vRightSize :: Adds c => c -> OrdCond -> Int ->String - Size -vRightSize :: Int -> OrdCond -> Int -> String -> Size -vRightSize n cond m s = ordCondToSize (s, reverseOrdCond cond, n - m) - --- Translate some thing like [SumsTo (Negate x) <= 4 + 6 + 9] where the variable 'x' --- is on the left, and we want to produce its negation. -vLeftNeg :: String -> OrdCond -> Int -> (AddsSpec c) -vLeftNeg s cond n = AddsSpecSize s (negateSize (ordCondToSize (s, cond, n))) - --- Translate some thing like [SumsTo 8 < 2 + (Negate x) + 3] where the --- variable 'x' is on the right, and we want to produce its negation. -vRightNeg :: Int -> OrdCond -> Int -> String -> AddsSpec c -vRightNeg n cond m s = AddsSpecSize s (negateSize (ordCondToSize (s, reverseOrdCond cond, n - m))) diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Combinators.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Combinators.hs deleted file mode 100644 index f0b61d6649c..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Combinators.hs +++ /dev/null @@ -1,241 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeSynonymInstances #-} - -module Test.Cardano.Ledger.Constrained.Combinators where - -import Cardano.Ledger.Coin (Coin (..)) -import Data.Foldable (foldl') -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Set (Set) -import qualified Data.Set as Set -import GHC.Stack (HasCallStack) -import Test.Cardano.Ledger.Core.Arbitrary () -import Test.QuickCheck hiding (Fixed, total) - --- ========================================================================== --- Tracking Gen-time errors - --- | Report a Gen-time error from the current message 'extra' and the --- [messages] 'mess' describing the path to this call site. -errorMess :: HasCallStack => String -> [String] -> a -errorMess extra mess = error (unlines ("\nGen-time error" : reverse (extra : mess))) - --- | suchThat version that tracks Gen-time errors -suchThatErr :: [String] -> Gen a -> (a -> Bool) -> Gen a -suchThatErr msgs gen p = sized $ \n -> try (10 :: Int) n - where - try 0 _ = errorMess "SuchThat times out" msgs - try k sz = do - x <- resize sz $ suchThatMaybe gen p - case x of - Just y -> pure y - Nothing -> try (k - 1) (sz + 5) - --- ======================================================================= - --- | add items from 'source' to 'base' until size 'n' is reached. -addUntilSize :: Ord a => [String] -> Set a -> Set a -> Int -> Gen (Set a) -addUntilSize msgs base source n = do - let possible = Set.difference source base - p = Set.size possible - m = Set.size base - loop result _ | Set.size result >= n = pure result - loop _ extra - | Set.null extra = - errorMess - ( "There are not enough unused elements in 'source'(" - ++ show p - ++ ") to reach the size 'n'(" - ++ show n - ++ ")" - ) - msgs - loop result extra = do - i <- choose (0, Set.size extra - 1) - loop (Set.insert (Set.elemAt i extra) result) (Set.deleteAt i extra) - case compare m n of - EQ -> pure base - GT -> - errorMess - ("The size(" ++ show m ++ ") of the 'base' set exceeds the target size(" ++ show n ++ ")") - msgs - LT -> loop base possible - --- | Generate a random set of a fixed size 'size', use 'gen' to pick the elements. -setSized :: Ord a => [String] -> Int -> Gen a -> Gen (Set a) -setSized mess size gen = do - set <- Set.fromList <$> vectorOf size gen - fixSet (("setSized " ++ show size) : mess) 1000 size gen set - --- | Fix a a set 'source' that is supposed to have 'size' elements, but because of duplicates --- may not. Fix it by adding random elements using 'genA', not currently in the set. If after 'numTries' --- the set is still not fixed, report an error. -fixSet :: Ord a => [String] -> Int -> Int -> Gen a -> Set a -> Gen (Set a) -fixSet mess numTries size genA source - | Set.size source > size = subsetFromSetWithSize ("fixSet" : mess) source size - | otherwise = go numTries source genA - where - go n !set gen - | currentSize == size = pure set - | n < 0 = - errorMess - ( "Ran out of tries(" - ++ show numTries - ++ ") in fixSet: need " - ++ show size - ++ " elements, have " - ++ show currentSize - ) - mess - | otherwise = do - x <- gen - if x `Set.member` set - then go (n - 1) set $ scale (+ 5) gen - else go n (Set.insert x set) gen - where - currentSize = Set.size set - --- | Generate a random Map with a fixed size 'n'. use 'genA' to pick the --- domain of the map, and 'genB' to pick the range. -mapSized :: Ord a => [String] -> Int -> Gen a -> Gen b -> Gen (Map a b) -mapSized mess size genA genB = do - keys <- setSized (("mapSized " ++ show size) : mess) size genA - values <- vectorOf size genB - pure $ mapFromDomRange keys values - -coinSized :: Int -> Gen Coin -coinSized n = pure (Coin (fromIntegral n)) - --- | Generate a random subset of a set 'set' with a fixed size 'n' -subsetFromSetWithSize :: Ord a => [String] -> Set a -> Int -> Gen (Set a) -subsetFromSetWithSize mess set n - | Set.size set < n = - errorMess - ( "subsetFromSetWithSize: Can't make a subset of size " - ++ show n - ++ " from a smaller set of size " - ++ show (Set.size set) - ) - mess - -- It is faster to remove extra elements, when we need to drop more than a half - | Set.size set `div` 2 < n = fst <$> help (flip const) set Set.empty (Set.size set - n) - -- It is faster to pick out random elements when we only need under a half of the original set. - | otherwise = snd <$> help seq set Set.empty n - where - help optSeq !source target count - | count <= 0 = pure (source, target) - | otherwise = do - (item, source') <- itemFromSet (("subsetFromSetWithSize " ++ show n) : mess) source - -- To avoid a memory leak we only force the target when it is the set we want to keep. - let target' = Set.insert item target - target' `optSeq` help optSeq source' target' (count - 1) - --- | Generate a larger map, from a smaller map 'subset'. The new larger map, should have all the --- keys and values of the smaller map. -mapFromSubset :: Ord a => [String] -> Map a b -> Int -> Gen a -> Gen b -> Gen (Map a b) -mapFromSubset mess subset n genA genB = do - additions <- mapSized (("mapFromSubset " ++ show n) : mess) n genA genB - pure (Map.union subset additions) - --- | Generate a map, from a set. The new map, should have all the --- elements of 'set' in its keysSet. -mapFromSet :: Ord a => Set a -> Gen b -> Gen (Map a b) -mapFromSet set genB = addRange set - where - addRange s = Set.foldl' accum (pure Map.empty) s - accum ansGen dom = do ans <- ansGen; rng <- genB; pure (Map.insert dom rng ans) - --- | Generate a random element from a set. Also return the set with that element removed -itemFromSet :: [String] -> Set a -> Gen (a, Set a) -itemFromSet mess set - | Set.null set = errorMess "itemFromSet : Can't take an item from the empty set." mess -itemFromSet _ set = - (\ix -> (Set.elemAt ix set, Set.deleteAt ix set)) <$> chooseInt (0, Set.size set - 1) - --- Generate a map from a list 'bs'. The result should have the property (Map.elems result == bs) -mapFromRange :: forall a b. Ord a => [String] -> [b] -> Gen a -> Gen (Map a b) -mapFromRange msgs bs genA = do - keys <- setSized msgs (length bs) genA - pure $ mapFromDomRange keys bs - -mapFromProj :: Ord a => [b] -> Gen a -> (b -> Gen c) -> Gen (Map a c) -mapFromProj bs genA genC = do - cs <- mapM genC bs - mapFromRange ["mapFromProj"] cs genA - --- | Generate a Map from a set 'dom' and a list 'bs'. They should have the same size --- but this is not checked. The result should have the properties (Map.keysSet result == dom) --- and (Map.elems result == bs) -mapFromDomRange :: Ord a => Set a -> [b] -> Map a b -mapFromDomRange dom bs = Map.fromAscList $ zip (Set.toAscList dom) bs - --- | Generate an Int, that would be a valid size for a subset of a set 's' --- it should return 0 or the size of the set infrequently. -subsetSize :: Set a -> Gen Int -subsetSize s | Set.null s = pure 0 -subsetSize s = frequency [(1, pure 0), (20, choose (1, n - 1)), (1, pure n)] - where - n = Set.size s - --- | Generate a random subset of a set 'set' -subsetFromSet :: Ord a => [String] -> Set a -> Gen (Set a) -subsetFromSet mess set = do - n <- subsetSize set - subsetFromSetWithSize ("From subsetFromSet" : mess) set n - --- | Generate a random superset of a set 'set'. Use 'genA' to pick random additional elements -superSetFromSet :: Ord a => Gen a -> Set a -> Gen (Set a) -superSetFromSet genA setA = do - n <- choose (0, 4) - if n == 0 - then pure setA - else superSetFromSetWithSize ["supersetFromSet " ++ show n] (n + Set.size setA) genA setA - --- | Generate a random superset of a set 'set' with s fixed size 'n'. --- Use 'genA' to pick random additional elements. -superSetFromSetWithSize :: Ord a => [String] -> Int -> Gen a -> Set a -> Gen (Set a) -superSetFromSetWithSize mess n _ setA - | n < Set.size setA = - errorMess - ( "superSetFromSetWithSize: Size of the superset (" - ++ show n - ++ ") is smaller than " - ++ "the size of the given set (" - ++ show (Set.size setA) - ++ ")." - ) - mess -superSetFromSetWithSize msgs size genA setA = - let tries = 10 * (size - Set.size setA) -- at most 10 times per new element - in fixSet ("superSetFromSetWithSize" : msgs) tries size genA setA - --- | Generates things both in (Set a) and not in (Set a) with differing frequencies. -superItemFromSet :: Ord a => Gen a -> Set a -> Gen a -superItemFromSet genA set | Set.null set = genA -superItemFromSet genA set = - frequency - [ (3, fst <$> itemFromSet ["Not possible since set is not empty"] set) - , (1, suchThat genA (`Set.notMember` set)) - ] - --- | Pick a random (key,value) pair from a Map -genFromMap :: [String] -> Map k a -> Gen (k, a) -genFromMap msgs m - | n == 0 = errorMess "The map is empty in genFromMap" msgs - | otherwise = do - i <- choose (0, n - 1) - pure $ Map.elemAt i m - where - n = Map.size m - -subMapFromMapWithSize :: Ord k => Int -> Map k a -> Gen (Map k a) -subMapFromMapWithSize n m = do - let indexes = [0 .. Map.size m - 1] - accum ans i = let (k, v) = Map.elemAt i m in Map.insert k v ans - shuffled <- shuffle indexes - pure (foldl' accum Map.empty (take n shuffled)) diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway.hs deleted file mode 100644 index 5062f663cdd..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway.hs +++ /dev/null @@ -1,13 +0,0 @@ -module Test.Cardano.Ledger.Constrained.Conway ( - module X, -) where - -import Test.Cardano.Ledger.Constrained.Conway.Cert as X -import Test.Cardano.Ledger.Constrained.Conway.Deleg as X -import Test.Cardano.Ledger.Constrained.Conway.Gov as X -import Test.Cardano.Ledger.Constrained.Conway.GovCert as X -import Test.Cardano.Ledger.Constrained.Conway.Instances as X -import Test.Cardano.Ledger.Constrained.Conway.Ledger as X -import Test.Cardano.Ledger.Constrained.Conway.PParams as X -import Test.Cardano.Ledger.Constrained.Conway.Pool as X -import Test.Cardano.Ledger.Constrained.Conway.Utxo as X diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway/Cert.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway/Cert.hs deleted file mode 100644 index 355808835e4..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway/Cert.hs +++ /dev/null @@ -1,53 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE RecordWildCards #-} - --- | Specs necessary to generate, environment, state, and signal --- for the CERT rule -module Test.Cardano.Ledger.Constrained.Conway.Cert where - -import Cardano.Ledger.CertState -import Cardano.Ledger.Conway.Rules -import Cardano.Ledger.Conway.TxCert -import Cardano.Ledger.Shelley.API.Types - -import Constrained - -import Cardano.Ledger.Conway (ConwayEra) -import Cardano.Ledger.Crypto (StandardCrypto) -import Test.Cardano.Ledger.Constrained.Conway.Deleg -import Test.Cardano.Ledger.Constrained.Conway.GovCert -import Test.Cardano.Ledger.Constrained.Conway.Instances -import Test.Cardano.Ledger.Constrained.Conway.PParams -import Test.Cardano.Ledger.Constrained.Conway.Pool - -certEnvSpec :: - IsConwayUniv fn => - Spec fn (CertEnv (ConwayEra StandardCrypto)) -certEnvSpec = - constrained $ \ce -> - match ce $ \_ pp _ -> - satisfies pp pparamsSpec - -certStateSpec :: - IsConwayUniv fn => - Spec fn (CertState (ConwayEra StandardCrypto)) -certStateSpec = - constrained $ \cs -> - match cs $ \vState pState dState -> - [ satisfies vState vStateSpec - , satisfies pState pStateSpec - , satisfies dState dStateSpec - ] - -txCertSpec :: - IsConwayUniv fn => - CertEnv (ConwayEra StandardCrypto) -> - CertState (ConwayEra StandardCrypto) -> - Spec fn (ConwayTxCert (ConwayEra StandardCrypto)) -txCertSpec (CertEnv slot pp ce) CertState {..} = - constrained $ \txCert -> - caseOn - txCert - (branch $ \delegCert -> satisfies delegCert $ delegCertSpec pp certDState) - (branch $ \poolCert -> satisfies poolCert $ poolCertSpec (PoolEnv slot pp) certPState) - (branch $ \govCert -> satisfies govCert $ govCertSpec (ConwayGovCertEnv pp ce) certVState) diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway/Deleg.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway/Deleg.hs deleted file mode 100644 index 4d50906e5a5..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway/Deleg.hs +++ /dev/null @@ -1,63 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE RecordWildCards #-} - --- | Specs necessary to generate, environment, state, and signal --- for the DELEG rule -module Test.Cardano.Ledger.Constrained.Conway.Deleg where - -import Cardano.Ledger.CertState -import Cardano.Ledger.Conway.TxCert -import Cardano.Ledger.Shelley.API.Types -import Cardano.Ledger.UMap (RDPair (..), fromCompact, unUnify) -import qualified Data.Map as Map -import Lens.Micro - -import Constrained - -import Cardano.Ledger.Conway (ConwayEra) -import Cardano.Ledger.Core (PParams, ppKeyDepositL) -import Cardano.Ledger.Crypto (StandardCrypto) -import Test.Cardano.Ledger.Constrained.Conway.Instances - -dStateSpec :: - IsConwayUniv fn => - Spec fn (DState (ConwayEra StandardCrypto)) -dStateSpec = constrained $ \ds -> - match ds $ \rewardMap _futureGenDelegs _genDelegs _rewards -> - match rewardMap $ \rdMap ptrMap sPoolMap _dRepMap -> - [ assertExplain ["dom sPoolMap is a subset of dom rdMap"] $ dom_ sPoolMap `subset_` dom_ rdMap - , assertExplain ["dom ptrMap is empty"] $ dom_ ptrMap ==. mempty - ] - -delegCertSpec :: - IsConwayUniv fn => - PParams (ConwayEra StandardCrypto) -> - DState (ConwayEra StandardCrypto) -> - Spec fn (ConwayDelegCert StandardCrypto) -delegCertSpec pp ds = - let rewardMap = unUnify $ rewards ds - delegMap = unUnify $ delegations ds - zeroReward = (== 0) . fromCompact . rdReward - depositOf k = - case fromCompact . rdDeposit <$> Map.lookup k rewardMap of - Just d | d > 0 -> SJust d - _ -> SNothing - in constrained $ \dc -> - (caseOn dc) - -- ConwayRegCert !(StakeCredential c) !(StrictMaybe Coin) - (branch $ \_ mc -> mc ==. lit (SJust (pp ^. ppKeyDepositL))) - -- ConwayUnRegCert !(StakeCredential c) !(StrictMaybe Coin) - ( branch $ \sc mc -> - [ -- You can only unregister things with 0 reward - assert $ elem_ sc $ lit (Map.keys $ Map.filter zeroReward rewardMap) - , assert $ elem_ sc $ lit (Map.keys delegMap) - , -- The `StrictMaybe` needs to be precisely what is in the delegation map - reify sc depositOf (==. mc) - ] - ) - -- ConwayDelegCert !(StakeCredential c) !(Delegatee c) - (branch $ \sc _ -> member_ sc $ lit (Map.keysSet delegMap)) - -- ConwayRegDelegCert !(StakeCredential c) !(Delegatee c) !Coin - ( branch $ \_ _ c -> - c ==. lit (pp ^. ppKeyDepositL) - ) diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway/Gov.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway/Gov.hs deleted file mode 100644 index 9a8d3defc64..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway/Gov.hs +++ /dev/null @@ -1,444 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE ImportQualifiedPost #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE TypeApplications #-} - --- | Specs necessary to generate, environment, state, and signal --- for the GOV rule -module Test.Cardano.Ledger.Constrained.Conway.Gov where - -import Data.Foldable - -import Data.Coerce - -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.Conway.Governance -import Cardano.Ledger.Conway.PParams -import Cardano.Ledger.Conway.Rules -import Data.Map qualified as Map -import Data.Set qualified as Set -import Lens.Micro - -import Constrained - -import Cardano.Ledger.Conway (ConwayEra) -import Cardano.Ledger.Conway.Core -import Cardano.Ledger.Crypto (StandardCrypto) -import Test.Cardano.Ledger.Constrained.Conway.Instances -import Test.Cardano.Ledger.Constrained.Conway.PParams - -govEnvSpec :: - IsConwayUniv fn => - Spec fn (GovEnv (ConwayEra StandardCrypto)) -govEnvSpec = constrained $ \ge -> - match ge $ \_ _ pp _ _ _ -> - satisfies pp pparamsSpec - --- NOTE: it is probably OK not to check uniqueness of ids here, because a clash --- is never going to be generated, and the real representation of `Proposals` doesn't --- allow the id to appear twice. -govProposalsSpec :: - IsConwayUniv fn => - GovEnv (ConwayEra StandardCrypto) -> - Spec fn (Proposals (ConwayEra StandardCrypto)) -govProposalsSpec GovEnv {geEpoch, gePPolicy, gePrevGovActionIds} = - constrained $ \props -> - match props $ \ppupTree hardForkTree committeeTree constitutionTree unorderedProposals -> - [ -- Protocol parameter updates - wellFormedChildren (lit $ coerce grPParamUpdate) ppupTree - , allGASInTree ppupTree $ \gas -> - [ isCon @"ParameterChange" (pProcGovAction_ . gasProposalProcedure_ $ gas) - , onCon @"ParameterChange" (pProcGovAction_ . gasProposalProcedure_ $ gas) $ - \_ ppup policy -> - [ wfPParamsUpdate ppup - , assert $ policy ==. lit gePPolicy - ] - ] - , forAll (snd_ ppupTree) (genHint treeGenHint) - , genHint listSizeHint (snd_ ppupTree) - , -- Hard forks - wellFormedChildren (lit $ coerce grHardFork) hardForkTree - , allGASInTree hardForkTree $ \gas -> - isCon @"HardForkInitiation" (pProcGovAction_ . gasProposalProcedure_ $ gas) - , allGASAndChildInTree hardForkTree $ \gas gas' -> - [ onHardFork gas $ \_ pv -> - onHardFork gas' $ \_ pv' -> - match pv $ \majV minV -> - match pv' $ \majV' minV' -> - [ assert $ majV <=. majV' - , ifElse - (majV ==. lit maxBound) - (majV' ==. majV) - (majV' <=. succV_ majV) - , ifElse - (majV ==. majV') - (minV' ==. minV + 1) - (minV' ==. 0) - , minV' `dependsOn` majV' - ] - ] - , forAll (snd_ hardForkTree) (genHint treeGenHint) - , genHint listSizeHint (snd_ hardForkTree) - , -- Committee - wellFormedChildren (lit $ coerce grCommittee) committeeTree - , -- TODO: it would be nice to have a trick like `isCon` that can - -- do disjunction without having to write down all the cases. - allGASInTree committeeTree $ \gas -> - caseOn - (pProcGovAction_ . gasProposalProcedure_ $ gas) - (branch $ \_ _ _ -> False) - (branch $ \_ _ -> False) - (branch $ \_ _ -> False) - (branch $ \_ -> True) - -- UpdateCommittee - ( branch $ \_ _ added _ -> - forAll (rng_ added) $ \epoch -> - lit geEpoch <. epoch - ) - (branch $ \_ _ -> False) - (branch $ \_ -> False) - , forAll (snd_ committeeTree) (genHint treeGenHint) - , genHint listSizeHint (snd_ committeeTree) - , -- Constitution - wellFormedChildren (lit $ coerce grConstitution) constitutionTree - , allGASInTree constitutionTree $ \gas -> - isCon @"NewConstitution" (pProcGovAction_ . gasProposalProcedure_ $ gas) - , forAll (snd_ constitutionTree) (genHint treeGenHint) - , genHint listSizeHint (snd_ constitutionTree) - , -- Withdrawals and info - forAll unorderedProposals $ \gas -> - caseOn - (pProcGovAction_ . gasProposalProcedure_ $ gas) - (branch $ \_ _ _ -> False) - (branch $ \_ _ -> False) - -- Treasury Withdrawal - ( branch $ \withdrawMap policy -> - [ forAll (dom_ withdrawMap) $ \rewAcnt -> - match rewAcnt $ \net _ -> net ==. lit Testnet - , assert $ policy ==. lit gePPolicy - ] - ) - (branch $ \_ -> False) - (branch $ \_ _ _ _ -> False) - (branch $ \_ _ -> False) - -- Info - (branch $ \_ -> True) - , genHint listSizeHint unorderedProposals - ] - where - GovRelation {..} = gePrevGovActionIds - treeGenHint = (Just 2, 10) - listSizeHint = 5 - -allGASInTree :: - (IsConwayUniv fn, IsPred p fn) => - Term fn ProposalTree -> - (Term fn (GovActionState (ConwayEra StandardCrypto)) -> p) -> - Pred fn -allGASInTree t k = - forAll (snd_ t) $ \t' -> - forAll' t' $ \gas _ -> - k gas - -allGASAndChildInTree :: - (IsConwayUniv fn, IsPred p fn) => - Term fn ProposalTree -> - ( Term fn (GovActionState (ConwayEra StandardCrypto)) -> - Term fn (GovActionState (ConwayEra StandardCrypto)) -> - p - ) -> - Pred fn -allGASAndChildInTree t k = - forAll (snd_ t) $ \t' -> - forAll' t' $ \gas cs -> - forAll cs $ \t'' -> - k gas (roseRoot_ t'') - -wellFormedChildren :: - IsConwayUniv fn => - Term fn (StrictMaybe (GovActionId StandardCrypto)) -> - Term fn ProposalTree -> - Pred fn -wellFormedChildren root rootAndTrees = - match rootAndTrees $ \root' trees -> - [ assert $ root ==. root' -- The root matches the root given in the environment - , forAll trees $ \t -> - [ -- Every node just below the root has the root as its parent - withPrevActId (roseRoot_ t) (assert . (==. root)) - , -- Every node's children have the id of the node as its parent - forAll' t $ \gas children -> - [ forAll children $ \t' -> - [ withPrevActId (roseRoot_ t') (assert . (==. cSJust_ (gasId_ gas))) - -- TODO: figure out why this causes a crash! - -- , t' `dependsOn` gas - ] - , children `dependsOn` gas - ] - ] - ] - -withPrevActId :: - IsConwayUniv fn => - Term fn (GovActionState (ConwayEra StandardCrypto)) -> - (Term fn (StrictMaybe (GovActionId StandardCrypto)) -> Pred fn) -> - Pred fn -withPrevActId gas k = - caseOn - (pProcGovAction_ . gasProposalProcedure_ $ gas) - ( branch $ \mPrevActionId _ _ -> - caseOn - mPrevActionId - (branch $ \_ -> k cSNothing_) - (branch $ \i -> k (cSJust_ $ toGeneric_ i)) - ) - ( branch $ \mPrevActionId _ -> - caseOn - mPrevActionId - (branch $ \_ -> k cSNothing_) - (branch $ \i -> k (cSJust_ $ toGeneric_ i)) - ) - (branch $ \_ _ -> True) - -- NoConfidence - -- !(StrictMaybe (PrevGovActionId 'CommitteePurpose (EraCrypto era))) - ( branch $ \mPrevActionId -> - caseOn - mPrevActionId - (branch $ \_ -> k cSNothing_) - (branch $ \i -> k (cSJust_ $ toGeneric_ i)) - ) - -- UpdateCommittee - -- !(StrictMaybe (PrevGovActionId 'CommitteePurpose (EraCrypto era))) - -- !(Set (Credential 'ColdCommitteeRole (EraCrypto era))) - -- !(Map (Credential 'ColdCommitteeRole (EraCrypto era)) EpochNo) - -- !UnitInterval - ( branch $ \mPrevActionId _ _ _ -> - caseOn - mPrevActionId - (branch $ \_ -> k cSNothing_) - (branch $ \i -> k (cSJust_ $ toGeneric_ i)) - ) - -- NewConstitution - -- !(StrictMaybe (PrevGovActionId 'ConstitutionPurpose (EraCrypto era))) - -- !(Constitution era) - ( branch $ \mPrevActionId _ -> - caseOn - mPrevActionId - (branch $ \_ -> k cSNothing_) - (branch $ \i -> k (cSJust_ $ toGeneric_ i)) - ) - -- InfoAction - (branch $ \_ -> True) - -onHardFork :: - (IsConwayUniv fn, IsPred p fn) => - Term fn (GovActionState (ConwayEra StandardCrypto)) -> - ( Term fn (StrictMaybe (GovPurposeId 'HardForkPurpose (ConwayEra StandardCrypto))) -> - Term fn ProtVer -> - p - ) -> - Pred fn -onHardFork gas k = onCon @"HardForkInitiation" (pProcGovAction_ . gasProposalProcedure_ $ gas) k - -govProceduresSpec :: - IsConwayUniv fn => - GovEnv (ConwayEra StandardCrypto) -> - Proposals (ConwayEra StandardCrypto) -> - Spec fn (GovProcedures (ConwayEra StandardCrypto)) -govProceduresSpec ge@GovEnv {..} ps = - let actions f = - [ gid - | (gid, act) <- Map.toList $ proposalsActionsMap ps - , geEpoch <= act ^. gasExpiresAfterL - , f (gasAction act) - ] - committeeVotableActionIds = - actions (isCommitteeVotingAllowed geCommitteeState) - drepVotableActionIds = - actions isDRepVotingAllowed - stakepoolVotableActionIds = - actions isStakePoolVotingAllowed - in constrained $ \govProcs -> - match govProcs $ \votingProcs proposalProcs -> - [ match votingProcs $ \votingProcsMap -> - forAll votingProcsMap $ \kvp -> - match kvp $ \voter mapActVote -> - (caseOn voter) - ( branch $ \_c -> - subset_ (dom_ mapActVote) (lit $ Set.fromList committeeVotableActionIds) - ) - ( branch $ \_c -> - subset_ (dom_ mapActVote) (lit $ Set.fromList drepVotableActionIds) - ) - ( branch $ \_c -> - subset_ (dom_ mapActVote) (lit $ Set.fromList stakepoolVotableActionIds) - ) - , forAll proposalProcs $ \proc -> - match proc $ \deposit returnAddr govAction _ -> - [ assert $ deposit ==. lit (gePParams ^. ppGovActionDepositL) - , match returnAddr $ \net _cred -> - net ==. lit Testnet - , wfGovAction ge ps govAction - ] - ] - -wfGovAction :: - IsConwayUniv fn => - GovEnv (ConwayEra StandardCrypto) -> - Proposals (ConwayEra StandardCrypto) -> - Term fn (GovAction (ConwayEra StandardCrypto)) -> - Pred fn -wfGovAction GovEnv {gePPolicy, geEpoch, gePrevGovActionIds, gePParams} ps govAction = - caseOn - govAction - -- ParameterChange - ( branch $ \mPrevActionId ppUpdate policy -> - [ assert $ mPrevActionId `elem_` lit ppupIds - , wfPParamsUpdate ppUpdate - , assert $ policy ==. lit gePPolicy - ] - ) - -- HardForkInitiation - ( branch $ \mPrevActionId protVer -> - [ assert $ mPrevActionId `elem_` lit hardForkIds - , match protVer $ \majorVersion minorVersion -> - reify' mPrevActionId hfIdMajorVer $ \currentMajorVersion mSuccMajorVersion -> - reify mPrevActionId hfIdMinorVer $ \currentMinorVersion -> - caseOn - mSuccMajorVersion - ( branch $ \_ -> - [ majorVersion ==. currentMajorVersion - , minorVersion ==. currentMinorVersion + 1 - ] - ) - ( branch $ \majorVersion' -> - [ assert $ majorVersion `member_` (singleton_ currentMajorVersion <> singleton_ majorVersion') - , ifElse - (currentMajorVersion <. majorVersion) - (minorVersion ==. 0) - (minorVersion ==. currentMinorVersion + 1) - ] - ) - ] - ) - -- TreasuryWithdrawals - ( branch $ \withdrawMap policy -> - [ forAll (dom_ withdrawMap) $ \rewAcnt -> - match rewAcnt $ \net _ -> net ==. lit Testnet - , assert $ policy ==. lit gePPolicy - ] - ) - -- NoConfidence - ( branch $ \mPrevActionId -> mPrevActionId `elem_` lit committeeIds - ) - -- UpdateCommittee - ( branch $ \mPrevActionId _removed added _quorum -> - [ assert $ mPrevActionId `elem_` lit committeeIds - , forAll (rng_ added) $ \epoch -> - lit geEpoch <. epoch - ] - ) - -- NewConstitution - (branch $ \mPrevActionId _c -> mPrevActionId `elem_` lit constitutionIds) - -- InfoAction - (branch $ \_ -> True) - where - constitutionIds = - (gePrevGovActionIds ^. grConstitutionL) - : [ SJust $ coerce $ gasId gas - | gas <- actions - , NewConstitution {} <- [pProcGovAction $ gasProposalProcedure gas] - ] - committeeIds = - (gePrevGovActionIds ^. grCommitteeL) - : [ SJust $ coerce $ gasId gas - | gas <- actions - , isCommitteeAction (pProcGovAction $ gasProposalProcedure gas) - ] - ppupIds = - (gePrevGovActionIds ^. grPParamUpdateL) - : [ SJust $ coerce $ gasId gas - | gas <- actions - , ParameterChange {} <- [pProcGovAction $ gasProposalProcedure gas] - ] - hardForkIds = - (gePrevGovActionIds ^. grHardForkL) - : [ SJust $ coerce $ gasId gas - | gas <- actions - , HardForkInitiation {} <- [pProcGovAction $ gasProposalProcedure gas] - ] - isCommitteeAction UpdateCommittee {} = True - isCommitteeAction NoConfidence {} = True - isCommitteeAction _ = False - - findProtVer SNothing = gePParams ^. ppProtocolVersionL - findProtVer (SJust hid) = - case proposalsLookupId hid ps of - Just gas - | HardForkInitiation _ protVer <- pProcGovAction $ gasProposalProcedure gas -> protVer - _ -> gePParams ^. ppProtocolVersionL - - hfIdMajorVer mId = - let ProtVer currentMajorVersion _ = findProtVer (coerce mId) - in (currentMajorVersion, succVersion @Maybe currentMajorVersion) - - hfIdMinorVer mId = - let ProtVer _ currentMinorVersion = findProtVer (coerce mId) - in currentMinorVersion - - actions = toList $ proposalsActions ps - -wfPParamsUpdate :: - IsConwayUniv fn => - Term fn (PParamsUpdate (ConwayEra StandardCrypto)) -> - Pred fn -wfPParamsUpdate ppu = - toPred - [ assert $ ppu /=. lit emptyPParamsUpdate - , match ppu $ - \_cppMinFeeA - _cppMinFeeB - cppMaxBBSize - cppMaxTxSize - cppMaxBHSize - _cppKeyDeposit - cppPoolDeposit - _cppEMax - _cppNOpt - _cppA0 - _cppRho - _cppTau - _cppProtocolVersion - _cppMinPoolCost - _cppCoinsPerUTxOByte - cppCostModels - _cppPrices - _cppMaxTxExUnits - _cppMaxBlockExUnits - cppMaxValSize - cppCollateralPercentage - _cppMaxCollateralInputs - _cppPoolVotingThresholds - _cppDRepVotingThresholds - _cppCommitteeMinSize - cppCommitteeMaxTermLength - cppGovActionLifetime - cppGovActionDeposit - cppDRepDeposit - _cppDRepActivity - _cppMinFeeRefScriptCoinsPerByte -> - [ cppMaxBBSize /=. lit (THKD $ SJust 0) - , cppMaxTxSize /=. lit (THKD $ SJust 0) - , cppMaxBHSize /=. lit (THKD $ SJust 0) - , cppMaxValSize /=. lit (THKD $ SJust 0) - , cppCollateralPercentage /=. lit (THKD $ SJust 0) - , cppCommitteeMaxTermLength /=. lit (THKD $ SJust $ EpochInterval 0) - , cppGovActionLifetime /=. lit (THKD $ SJust $ EpochInterval 0) - , cppPoolDeposit /=. lit (THKD $ SJust mempty) - , cppGovActionDeposit /=. lit (THKD $ SJust mempty) - , cppDRepDeposit /=. lit (THKD $ SJust mempty) - , cppCostModels ==. lit (THKD SNothing) -- NOTE: this is because the cost - -- model generator is way too slow - ] - ] diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway/GovCert.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway/GovCert.hs deleted file mode 100644 index 95195e8bd6e..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway/GovCert.hs +++ /dev/null @@ -1,61 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE RecordWildCards #-} - --- | Specs necessary to generate, environment, state, and signal --- for the GOVCERT rule -module Test.Cardano.Ledger.Constrained.Conway.GovCert where - -import Cardano.Ledger.CertState -import Cardano.Ledger.Conway.PParams -import Cardano.Ledger.Conway.Rules -import Cardano.Ledger.Conway.TxCert -import qualified Data.Map as Map -import Lens.Micro - -import Constrained - -import Cardano.Ledger.Conway (ConwayEra) -import Cardano.Ledger.Crypto (StandardCrypto) -import Test.Cardano.Ledger.Constrained.Conway.Instances -import Test.Cardano.Ledger.Constrained.Conway.PParams - -vStateSpec :: Spec fn (VState (ConwayEra StandardCrypto)) -vStateSpec = TrueSpec - -govCertSpec :: - IsConwayUniv fn => - ConwayGovCertEnv (ConwayEra StandardCrypto) -> - VState (ConwayEra StandardCrypto) -> - Spec fn (ConwayGovCert StandardCrypto) -govCertSpec ConwayGovCertEnv {..} vs = - let reps = lit $ Map.keysSet $ vsDReps vs - deposits = lit [(k, drepDeposit dep) | (k, dep) <- Map.toList $ vsDReps vs] - in constrained $ \gc -> - caseOn - gc - -- ConwayRegDRep - ( branch $ \key coin _ -> - [ not_ $ member_ key reps - , coin ==. lit (cgcePParams ^. ppDRepDepositL) - ] - ) - -- ConwayUnRegDRep - ( branch $ \cred coin -> - elem_ (pair_ cred coin) deposits - ) - -- ConwayUpdateDRep - ( branch $ \key _ -> - member_ key reps - ) - -- ConwayAuthCommitteeHotKey - (branch $ \_ _ -> True) - -- ConwayResignCommitteeColdKey - (branch $ \_ _ -> True) - -govCertEnvSpec :: - IsConwayUniv fn => - Spec fn (ConwayGovCertEnv (ConwayEra StandardCrypto)) -govCertEnvSpec = - constrained $ \gce -> - match gce $ \pp _ -> - satisfies pp pparamsSpec diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway/Instances.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway/Instances.hs deleted file mode 100644 index bc157f2ddc7..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway/Instances.hs +++ /dev/null @@ -1,1305 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE CPP #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE ImportQualifiedPost #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - --- RecordWildCards cause name shadowing warnings in ghc-8.10. -#if __GLASGOW_HASKELL__ < 900 -{-# OPTIONS_GHC -Wno-name-shadowing #-} -#endif - --- | This module provides the necessary instances of `HasSpec` --- and `HasSimpleRep` to write specs for the environments, --- states, and signals in the conway STS rules. -module Test.Cardano.Ledger.Constrained.Conway.Instances ( - ConwayFn, - StringFn, - ProposalTree, - onJust', - onSized, - cKeyHashObj, - cScriptHashObj, - cSNothing_, - cSJust_, - succV_, - strLen_, - pProcGovAction_, - IsConwayUniv, - gasId_, - gasCommitteeVotes_, - gasDRepVotes_, - gasProposalProcedure_, -) where - -import Cardano.Chain.Common ( - AddrAttributes (..), - AddrType (..), - Address (..), - Address', - Attributes (..), - NetworkMagic (..), - UnparsedFields (..), - ) -import Cardano.Crypto.Hash hiding (Blake2b_224) -import Cardano.Crypto.Hashing (AbstractHash, abstractHashFromBytes) -import Cardano.Ledger.Address -import Cardano.Ledger.Allegra.Scripts -import Cardano.Ledger.Alonzo.PParams -import Cardano.Ledger.Alonzo.Scripts (AlonzoScript (..)) -import Cardano.Ledger.Alonzo.Tx -import Cardano.Ledger.Alonzo.TxOut -import Cardano.Ledger.Alonzo.TxWits -import Cardano.Ledger.Babbage.TxBody (BabbageTxOut (..)) -import Cardano.Ledger.BaseTypes hiding (inject) -import Cardano.Ledger.Binary (Sized (..)) -import Cardano.Ledger.CertState -import Cardano.Ledger.Coin -import Cardano.Ledger.Compactible -import Cardano.Ledger.Conway.Core -import Cardano.Ledger.Conway.Governance -import Cardano.Ledger.Conway.PParams -import Cardano.Ledger.Conway.Rules -import Cardano.Ledger.Conway.Scripts () -import Cardano.Ledger.Conway.TxBody -import Cardano.Ledger.Conway.TxCert -import Cardano.Ledger.Credential -import Cardano.Ledger.EpochBoundary -import Cardano.Ledger.HKD -import Cardano.Ledger.Keys ( - BootstrapWitness, - GenDelegPair (..), - GenDelegs (..), - KeyHash, - KeyRole (..), - WitVKey, - ) -import Cardano.Ledger.Mary.Value (AssetName (..), MaryValue (..), MultiAsset (..), PolicyID (..)) -import Cardano.Ledger.MemoBytes -import Cardano.Ledger.Plutus.CostModels -import Cardano.Ledger.Plutus.Data -import Cardano.Ledger.Plutus.ExUnits -import Cardano.Ledger.Plutus.Language -import Cardano.Ledger.PoolDistr -import Cardano.Ledger.PoolParams -import Cardano.Ledger.SafeHash -import Cardano.Ledger.Shelley.LedgerState hiding (ptrMap) -import Cardano.Ledger.Shelley.PoolRank -import Cardano.Ledger.Shelley.Rules -import Cardano.Ledger.TxIn (TxId (..), TxIn (..)) -import Cardano.Ledger.UMap -import Cardano.Ledger.UTxO -import Cardano.Ledger.Val (Val) -import Control.Monad.Trans.Fail.String -import Crypto.Hash (Blake2b_224) -import Data.ByteString qualified as BS -import Data.ByteString.Short (ShortByteString) -import Data.ByteString.Short qualified as SBS -import Data.Coerce -import Data.Foldable -import Data.Kind -import Data.Map (Map) -import Data.Map.Strict qualified as Map -import Data.Maybe -import Data.OMap.Strict qualified as OMap -import Data.OSet.Strict qualified as SOS -import Data.Sequence (Seq) -import Data.Sequence qualified as Seq -import Data.Sequence.Strict (StrictSeq) -import Data.Sequence.Strict qualified as StrictSeq -import Data.Set (Set) -import Data.Set qualified as Set -import Data.Text (Text) -import Data.Tree -import Data.Typeable -import Data.VMap (VMap) -import Data.VMap qualified as VMap -import Data.Word -import Numeric.Natural (Natural) -import PlutusLedgerApi.V1 qualified as PV1 -import System.Random -import Test.Cardano.Ledger.Allegra.Arbitrary () -import Test.Cardano.Ledger.Alonzo.Arbitrary () -import Test.Cardano.Ledger.Core.Utils -import Test.QuickCheck hiding (Args, Fun, forAll) - -import Cardano.Ledger.Alonzo.TxAuxData (AlonzoTxAuxData (..), AuxiliaryDataHash) -import Cardano.Ledger.Conway (ConwayEra) -import Cardano.Ledger.Crypto (Crypto, StandardCrypto) -import Cardano.Ledger.Shelley.TxAuxData (Metadatum) -import Constrained hiding (Value) -import Constrained qualified as C - -type ConwayUnivFns = StringFn : RoseTreeFn : BaseFns -type ConwayFn = Fix (OneofL ConwayUnivFns) - -type IsConwayUniv fn = - ( BaseUniverse fn - , Member (StringFn fn) fn - , Member (MapFn fn) fn - , Member (FunFn fn) fn - , Member (RoseTreeFn fn) fn - ) - --- TxBody HasSpec instance ------------------------------------------------ - --- NOTE: this is a representation of the `ConwayTxBody` type. You can't --- simply use the generics to derive the `SimpleRep` for `ConwayTxBody` --- because the type is memoized. So instead we say that the representation --- is the same as what you would get from using the `ConwayTxBody` pattern. -type ConwayTxBodyTypes c = - '[ Set (TxIn (EraCrypto (ConwayEra c))) - , Set (TxIn (EraCrypto (ConwayEra c))) - , Set (TxIn (EraCrypto (ConwayEra c))) - , StrictSeq (Sized (TxOut (ConwayEra c))) - , StrictMaybe (Sized (TxOut (ConwayEra c))) - , StrictMaybe Coin - , SOS.OSet (ConwayTxCert (ConwayEra c)) - , Withdrawals (EraCrypto (ConwayEra c)) - , Coin - , ValidityInterval - , Set (KeyHash 'Witness (EraCrypto (ConwayEra c))) - , MultiAsset (EraCrypto (ConwayEra c)) - , StrictMaybe (ScriptIntegrityHash (EraCrypto (ConwayEra c))) - , StrictMaybe (AuxiliaryDataHash (EraCrypto (ConwayEra c))) - , StrictMaybe Network - , VotingProcedures (ConwayEra c) - , SOS.OSet (ProposalProcedure (ConwayEra c)) - , StrictMaybe Coin - , Coin - ] -instance (IsConwayUniv fn, Crypto c) => HasSpec fn (ConwayTxBody (ConwayEra c)) - -instance Crypto c => HasSimpleRep (ConwayTxBody (ConwayEra c)) where - type SimpleRep (ConwayTxBody (ConwayEra c)) = SOP '["ConwayTxBody" ::: ConwayTxBodyTypes c] - toSimpleRep ConwayTxBody {..} = - inject @"ConwayTxBody" @'["ConwayTxBody" ::: ConwayTxBodyTypes c] - ctbSpendInputs - ctbCollateralInputs - ctbReferenceInputs - ctbOutputs - ctbCollateralReturn - ctbTotalCollateral - ctbCerts - ctbWithdrawals - ctbTxfee - ctbVldt - ctbReqSignerHashes - ctbMint - ctbScriptIntegrityHash - ctbAdHash - ctbTxNetworkId - ctbVotingProcedures - ctbProposalProcedures - ctbCurrentTreasuryValue - ctbTreasuryDonation - fromSimpleRep rep = - algebra @'["ConwayTxBody" ::: ConwayTxBodyTypes c] rep ConwayTxBody - -instance HasSimpleRep Coin where - type SimpleRep Coin = Word64 - toSimpleRep (Coin i) = case integerToWord64 i of - Nothing -> error "The impossible happened in toSimpleRep for `Coin`" - Just w -> w - fromSimpleRep = word64ToCoin -instance IsConwayUniv fn => HasSpec fn Coin -instance IsConwayUniv fn => OrdLike fn Coin -instance IsConwayUniv fn => NumLike fn Coin -instance IsConwayUniv fn => Foldy fn Coin where - genList s s' = map fromSimpleRep <$> genList @fn @Word64 (toSimpleRepSpec s) (toSimpleRepSpec s') - theAddFn = addFn - theZero = Coin 0 - --- TODO: This is hack to get around the need for `Num` in `NumLike`. We should possibly split --- this up so that `NumLike` has its own addition etc. instead? -deriving via Integer instance Num Coin - -instance HasSimpleRep DeltaCoin where - type SimpleRep DeltaCoin = Integer - fromSimpleRep = DeltaCoin - toSimpleRep (DeltaCoin c) = c -instance IsConwayUniv fn => HasSpec fn DeltaCoin - -instance HasSimpleRep (GovProcedures era) -instance - ( Era era - , EraPParams era - , IsConwayUniv fn - , HasSimpleRep (PParamsHKD StrictMaybe era) - , TypeSpec fn (SimpleRep (PParamsHKD StrictMaybe era)) ~ TypeSpec fn (PParamsHKD StrictMaybe era) - , HasSpec fn (SimpleRep (PParamsHKD StrictMaybe era)) - ) => - HasSpec fn (GovProcedures era) - -instance HasSimpleRep SlotNo -instance IsConwayUniv fn => OrdLike fn SlotNo -instance IsConwayUniv fn => HasSpec fn SlotNo - -instance HasSimpleRep EpochNo -instance IsConwayUniv fn => OrdLike fn EpochNo -instance IsConwayUniv fn => HasSpec fn EpochNo - -instance HasSimpleRep TxIx -instance IsConwayUniv fn => HasSpec fn TxIx - -instance (IsConwayUniv fn, Crypto c, Typeable index) => HasSpec fn (SafeHash c index) where - type TypeSpec fn (SafeHash c index) = () - emptySpec = () - combineSpec _ _ = TrueSpec - genFromTypeSpec _ = pureGen arbitrary - shrinkWithTypeSpec _ = shrink - conformsTo _ _ = True - toPreds _ _ = toPred True - -instance HasSimpleRep (TxId c) -instance (IsConwayUniv fn, Crypto c) => HasSpec fn (TxId c) - -instance HasSimpleRep (TxIn c) -instance (IsConwayUniv fn, Crypto c) => HasSpec fn (TxIn c) - -instance (IsConwayUniv fn, Typeable r, Crypto c) => HasSpec fn (KeyHash r c) where - type TypeSpec fn (KeyHash r c) = () - emptySpec = () - combineSpec _ _ = TrueSpec - genFromTypeSpec _ = pureGen arbitrary - shrinkWithTypeSpec _ = shrink - conformsTo _ _ = True - toPreds _ _ = toPred True - -instance HasSimpleRep (StrictSeq a) where - type SimpleRep (StrictSeq a) = [a] - toSimpleRep = toList - fromSimpleRep = StrictSeq.fromList -instance (IsConwayUniv fn, HasSpec fn a) => HasSpec fn (StrictSeq a) - -instance HasSimpleRep (Seq a) where - type SimpleRep (Seq a) = [a] - toSimpleRep = toList - fromSimpleRep = Seq.fromList -instance (IsConwayUniv fn, HasSpec fn a) => HasSpec fn (Seq a) - -instance HasSimpleRep (StrictMaybe a) -instance HasSpec fn a => HasSpec fn (StrictMaybe a) - -cSNothing_ :: HasSpec fn a => Term fn (StrictMaybe a) -cSNothing_ = con @"SNothing" (lit ()) - -cSJust_ :: HasSpec fn a => Term fn a -> Term fn (StrictMaybe a) -cSJust_ = con @"SJust" - -instance HasSimpleRep (Sized a) -instance (IsConwayUniv fn, HasSpec fn a) => HasSpec fn (Sized a) - -instance HasSimpleRep Addr28Extra -instance IsConwayUniv fn => HasSpec fn Addr28Extra - -instance HasSimpleRep DataHash32 -instance IsConwayUniv fn => HasSpec fn DataHash32 - -type BabbageTxOutTypes era = - '[ Addr (EraCrypto era) - , Value era - , Datum era - , StrictMaybe (Script era) - ] -instance (Era era, Val (Value era)) => HasSimpleRep (BabbageTxOut era) where - type SimpleRep (BabbageTxOut era) = SOP '["BabbageTxOut" ::: BabbageTxOutTypes era] - toSimpleRep (BabbageTxOut addr val dat msc) = - inject @"BabbageTxOut" @'["BabbageTxOut" ::: BabbageTxOutTypes era] - addr - val - dat - msc - fromSimpleRep rep = - algebra @'["BabbageTxOut" ::: BabbageTxOutTypes era] rep BabbageTxOut - -instance - ( IsConwayUniv fn - , HasSpec fn (Value era) - , Era era - , HasSpec fn (Data era) - , Val (Value era) - , Crypto (EraCrypto era) - , HasSpec fn (Script era) - ) => - HasSpec fn (BabbageTxOut era) - -instance (Typeable a, Show a, Compactible a) => HasSimpleRep (CompactForm a) where - type SimpleRep (CompactForm a) = a - toSimpleRep = fromCompact - fromSimpleRep rep = case toCompact rep of - Nothing -> error $ "toCompact @" ++ show (typeOf rep) ++ " " ++ show rep - Just c -> c -instance (IsConwayUniv fn, Compactible a, HasSpec fn a) => HasSpec fn (CompactForm a) - -instance HasSimpleRep (MaryValue c) where - type SimpleRep (MaryValue c) = SOP '["MaryValue" ::: '[Coin]] - toSimpleRep (MaryValue c _) = c - fromSimpleRep c = MaryValue c mempty -instance (IsConwayUniv fn, Crypto c) => HasSpec fn (MaryValue c) - -instance HasSimpleRep PV1.Data -instance IsConwayUniv fn => HasSpec fn PV1.Data where - type TypeSpec fn PV1.Data = () - emptySpec = () - combineSpec _ _ = TrueSpec - genFromTypeSpec _ = pureGen arbitrary - shrinkWithTypeSpec _ = shrink - conformsTo _ _ = True - toPreds _ _ = toPred True - -instance Era era => HasSimpleRep (Data era) where - type SimpleRep (Data era) = PV1.Data - toSimpleRep = getPlutusData - fromSimpleRep = mkMemoized . PlutusData -instance (IsConwayUniv fn, Era era) => HasSpec fn (Data era) - -instance Era era => HasSimpleRep (BinaryData era) where - type SimpleRep (BinaryData era) = Data era - toSimpleRep = binaryDataToData - fromSimpleRep = dataToBinaryData -instance - (IsConwayUniv fn, Era era, Crypto (EraCrypto era), HasSpec fn (Data era)) => - HasSpec fn (BinaryData era) - -instance HasSimpleRep (Datum era) -instance (IsConwayUniv fn, Era era, HasSpec fn (Data era), Crypto (EraCrypto era)) => HasSpec fn (Datum era) - --- TODO: here we are cheating to get out of having to deal with Plutus scripts -instance HasSimpleRep (AlonzoScript era) where - type SimpleRep (AlonzoScript era) = Timelock era - toSimpleRep (TimelockScript tl) = tl - toSimpleRep (PlutusScript _) = error "toSimpleRep for AlonzoScript on a PlutusScript" - fromSimpleRep = TimelockScript -instance (IsConwayUniv fn, EraScript era, Script era ~ AlonzoScript era) => HasSpec fn (AlonzoScript era) - -{- -NOTE: -You might think that you could do something like this for `Timelock`. -However, when you do that some questions arise: - (1) How are you going to write constraints over recursive types - that don't blow up to infinity? - (2) How are you going to generate recursive values? - -(2) you could imagine solving with some tricks for controlling how we generate -Sum and Prod things (with some global index of sizes: `TypeRep -> Int`). Potentially -you could solve this by having size constraints in the language. There the question is -how you design those constraints - their semantics could be `const True` while still -changing the `Spec` - thus giving you the ability to provide a generation time hint! - -Solving (1) is more tricky however. The best guess I have is that you would need -to push any constraint you have into functions `MyConstraint :: MyUniv fn '[Timelock era] Bool` -and implement everything "offline". This is highly non-satisfactory - but it's hard to see -how else you would do it. - -type TimelockTypes era = - '[ -- RequireSignature - '[KeyHash 'Witness (EraCrypto era)] - -- RequireAllOf - , '[StrictSeq (Timelock era)] - -- RequireAnyOf - , '[StrictSeq (Timelock era)] - -- RequireMOf - , '[Int, StrictSeq (Timelock era)] - -- RequireTimeExpire - , '[SlotNo] - -- RequireTimeStart - , '[SlotNo] - ] - -instance Era era => HasSimpleRep (Timelock era) where - type SimpleRep (Timelock era) = SOP (TimelockTypes era) - - toSimpleRep (RequireSignature h) = inject @0 @(TimelockTypes era) h - toSimpleRep (RequireAllOf ts) = inject @1 @(TimelockTypes era) ts - toSimpleRep (RequireAnyOf ts) = inject @2 @(TimelockTypes era) ts - toSimpleRep (RequireMOf m ts) = inject @3 @(TimelockTypes era) m ts - toSimpleRep (RequireTimeExpire s) = inject @4 @(TimelockTypes era) s - toSimpleRep (RequireTimeStart s) = inject @5 @(TimelockTypes era) s - - fromSimpleRep rep = - algebra @(TimelockTypes era) rep - RequireSignature - RequireAllOf - RequireAnyOf - RequireMOf - RequireTimeExpire - RequireTimeStart --} - -instance (IsConwayUniv fn, Crypto (EraCrypto era), Era era) => HasSpec fn (Timelock era) where - type TypeSpec fn (Timelock era) = () - emptySpec = () - combineSpec _ _ = TrueSpec - genFromTypeSpec _ = pureGen arbitrary - shrinkWithTypeSpec _ = shrink - conformsTo _ _ = True - toPreds _ _ = toPred True - -instance Crypto c => HasSimpleRep (CompactAddr c) where - type SimpleRep (CompactAddr c) = SimpleRep (Addr c) - toSimpleRep = toSimpleRep . decompactAddr - fromSimpleRep = compactAddr . fromSimpleRep -instance (IsConwayUniv fn, Crypto c) => HasSpec fn (CompactAddr c) - -instance HasSimpleRep (Addr c) -instance (IsConwayUniv fn, Crypto c) => HasSpec fn (Addr c) - -instance HasSimpleRep (BootstrapAddress c) where - type - TheSop (BootstrapAddress c) = - '[ "BootstrapAddress" - ::: '[ AbstractHash Blake2b_224 Address' - , NetworkMagic - , AddrType - ] - ] - toSimpleRep (BootstrapAddress (Address root (Attributes (AddrAttributes _ magic) _) typ)) = - inject @"BootstrapAddress" @(TheSop (BootstrapAddress c)) - root - magic - typ - fromSimpleRep rep = - algebra @(TheSop (BootstrapAddress c)) rep $ - \root magic typ -> - BootstrapAddress - (Address root (Attributes (AddrAttributes Nothing magic) (UnparsedFields mempty)) typ) -instance (IsConwayUniv fn, Crypto c) => HasSpec fn (BootstrapAddress c) - -instance HasSimpleRep NetworkMagic -instance IsConwayUniv fn => HasSpec fn NetworkMagic - -instance HasSimpleRep AddrType -instance IsConwayUniv fn => HasSpec fn AddrType - -instance (IsConwayUniv fn, Typeable b) => HasSpec fn (AbstractHash Blake2b_224 b) where - type TypeSpec fn (AbstractHash Blake2b_224 b) = () - emptySpec = () - combineSpec _ _ = TrueSpec - genFromTypeSpec _ = do - bytes <- pureGen $ vectorOf 28 arbitrary - pure $ fromJust $ abstractHashFromBytes (BS.pack bytes) - shrinkWithTypeSpec _ _ = [] - conformsTo _ _ = True - toPreds _ _ = toPred True - -instance HasSimpleRep (StakeReference c) -instance (IsConwayUniv fn, Crypto c) => HasSpec fn (StakeReference c) - -instance HasSimpleRep Ptr -instance IsConwayUniv fn => HasSpec fn Ptr - -instance HasSimpleRep CertIx where - type SimpleRep CertIx = Word16 - toSimpleRep (CertIx w) = fromIntegral w - fromSimpleRep = mkCertIx -instance IsConwayUniv fn => HasSpec fn CertIx - -instance HasSimpleRep (Credential r c) -instance (IsConwayUniv fn, Typeable r, Crypto c) => HasSpec fn (Credential r c) - -cKeyHashObj :: - (IsConwayUniv fn, Typeable r, Crypto c) => Term fn (KeyHash r c) -> Term fn (Credential r c) -cKeyHashObj = con @"KeyHashObj" - -cScriptHashObj :: - (IsConwayUniv fn, Typeable r, Crypto c) => Term fn (ScriptHash c) -> Term fn (Credential r c) -cScriptHashObj = con @"ScriptHashObj" - -instance HasSimpleRep (ScriptHash c) -instance (IsConwayUniv fn, Crypto c) => HasSpec fn (ScriptHash c) - -instance (IsConwayUniv fn, HashAlgorithm a, Typeable b) => HasSpec fn (Hash a b) where - type TypeSpec fn (Hash a b) = () - emptySpec = () - combineSpec _ _ = TrueSpec - genFromTypeSpec _ = pureGen arbitrary - shrinkWithTypeSpec _ = shrink - conformsTo _ _ = True - toPreds _ _ = toPred True - -instance HasSimpleRep (ConwayTxCert era) -instance (IsConwayUniv fn, Era era) => HasSpec fn (ConwayTxCert era) - -instance HasSimpleRep (ConwayDelegCert c) -instance (IsConwayUniv fn, Crypto c) => HasSpec fn (ConwayDelegCert c) - -instance HasSimpleRep (PoolCert c) -instance (IsConwayUniv fn, Crypto c) => HasSpec fn (PoolCert c) - -instance HasSimpleRep (PoolParams c) -instance (IsConwayUniv fn, Crypto c) => HasSpec fn (PoolParams c) - -instance HasSimpleRep PoolMetadata -instance IsConwayUniv fn => HasSpec fn PoolMetadata - -instance IsConwayUniv fn => HasSpec fn StakePoolRelay where - type TypeSpec fn StakePoolRelay = () - emptySpec = () - combineSpec _ _ = TrueSpec - genFromTypeSpec _ = pureGen arbitrary - shrinkWithTypeSpec _ = shrink - conformsTo _ _ = True - toPreds _ _ = toPred True - -instance HasSimpleRep Port -instance IsConwayUniv fn => HasSpec fn Port - --- TODO: once you start adding interesting functions on these to the --- function universe this instance has to become more complicated -instance IsConwayUniv fn => HasSpec fn UnitInterval where - type TypeSpec fn UnitInterval = () - emptySpec = () - combineSpec _ _ = TrueSpec - genFromTypeSpec _ = pureGen arbitrary - shrinkWithTypeSpec _ = shrink - conformsTo _ _ = True - toPreds _ _ = toPred True - --- TODO: once you start adding interesting functions on these to the --- function universe this instance has to become more complicated -instance IsConwayUniv fn => HasSpec fn NonNegativeInterval where - type TypeSpec fn NonNegativeInterval = () - emptySpec = () - combineSpec _ _ = TrueSpec - genFromTypeSpec _ = pureGen arbitrary - shrinkWithTypeSpec _ = shrink - conformsTo _ _ = True - toPreds _ _ = toPred True - -instance HasSimpleRep (ConwayGovCert c) -instance (IsConwayUniv fn, Crypto c) => HasSpec fn (ConwayGovCert c) - -instance HasSimpleRep (Anchor c) -instance (IsConwayUniv fn, Crypto c) => HasSpec fn (Anchor c) - -instance HasSimpleRep Url -instance IsConwayUniv fn => HasSpec fn Url - -instance IsConwayUniv fn => HasSpec fn Text where - type TypeSpec fn Text = () - emptySpec = () - combineSpec _ _ = TrueSpec - genFromTypeSpec _ = pureGen arbitrary - shrinkWithTypeSpec _ = shrink - conformsTo _ _ = True - toPreds _ _ = toPred True - -data StringSpec fn = StringSpec {strSpecLen :: Spec fn Int} - -deriving instance IsConwayUniv fn => Show (StringSpec fn) - -instance HasSpec fn Int => Semigroup (StringSpec fn) where - StringSpec len <> StringSpec len' = StringSpec (len <> len') - -instance HasSpec fn Int => Monoid (StringSpec fn) where - mempty = StringSpec TrueSpec - -instance IsConwayUniv fn => HasSpec fn ByteString where - type TypeSpec fn ByteString = StringSpec fn - emptySpec = mempty - combineSpec s s' = typeSpec $ s <> s' - genFromTypeSpec (StringSpec ls) = do - len <- genFromSpec ls - BS.pack <$> vectorOfT len (pureGen arbitrary) - shrinkWithTypeSpec _ = shrink - conformsTo bs (StringSpec ls) = BS.length bs `conformsToSpec` ls - toPreds str (StringSpec len) = satisfies (strLen_ str) len - -instance IsConwayUniv fn => HasSpec fn ShortByteString where - type TypeSpec fn ShortByteString = StringSpec fn - emptySpec = mempty - combineSpec s s' = typeSpec $ s <> s' - genFromTypeSpec (StringSpec ls) = do - len <- genFromSpec ls - SBS.pack <$> vectorOfT len (pureGen arbitrary) - shrinkWithTypeSpec _ = shrink - conformsTo bs (StringSpec ls) = SBS.length bs `conformsToSpec` ls - toPreds str (StringSpec len) = satisfies (strLen_ str) len - -instance StringLike ByteString where - lengthSpec = StringSpec - getLengthSpec (StringSpec len) = len - getLength = BS.length - -instance StringLike ShortByteString where - lengthSpec = StringSpec - getLengthSpec (StringSpec len) = len - getLength = SBS.length - -data StringFn (fn :: [Type] -> Type -> Type) as b where - LengthFn :: StringLike s => StringFn fn '[s] Int - -deriving instance IsConwayUniv fn => Show (StringFn fn as b) -deriving instance IsConwayUniv fn => Eq (StringFn fn as b) - -strLen_ :: - forall fn s. - (Member (StringFn fn) fn, StringLike s, HasSpec fn s) => - Term fn s -> - Term fn Int -strLen_ = app (injectFn $ LengthFn @_ @fn) - -instance FunctionLike (StringFn fn) where - sem LengthFn = getLength - -instance IsConwayUniv fn => Functions (StringFn fn) fn where - propagateSpecFun _ _ TrueSpec = TrueSpec - propagateSpecFun _ _ (ErrorSpec err) = ErrorSpec err - propagateSpecFun fn ctx spec = case fn of - _ - | SuspendedSpec {} <- spec - , ListCtx pre HOLE suf <- ctx -> - constrained $ \x' -> - let args = - appendList - (mapList (\(C.Value a) -> lit a) pre) - (x' :> mapList (\(C.Value a) -> lit a) suf) - in uncurryList (app @fn $ injectFn fn) args `satisfies` spec - LengthFn -> - -- No TypeAbstractions in ghc-8.10 - case fn of - (_ :: StringFn fn '[s] Int) - | NilCtx HOLE <- ctx -> typeSpec $ lengthSpec @s spec - - mapTypeSpec f@LengthFn ss = - -- No TypeAbstractions in ghc-8.10 - case f of - (_ :: StringFn fn '[s] Int) -> getLengthSpec @s ss - -class StringLike s where - lengthSpec :: IsConwayUniv fn => Spec fn Int -> TypeSpec fn s - getLengthSpec :: TypeSpec fn s -> Spec fn Int - getLength :: s -> Int - -instance HasSimpleRep (Delegatee c) -instance (IsConwayUniv fn, Crypto c) => HasSpec fn (Delegatee c) - -instance HasSimpleRep (DRep c) -instance (IsConwayUniv fn, Crypto c) => HasSpec fn (DRep c) - -instance HasSimpleRep (Withdrawals c) -instance (IsConwayUniv fn, Crypto c) => HasSpec fn (Withdrawals c) - -instance HasSimpleRep (RewardAccount c) -instance (IsConwayUniv fn, Crypto c) => HasSpec fn (RewardAccount c) - -instance HasSimpleRep Network -instance IsConwayUniv fn => HasSpec fn Network - -instance HasSimpleRep (MultiAsset c) -instance (IsConwayUniv fn, Crypto c) => HasSpec fn (MultiAsset c) where - emptySpec = flip (MapSpec mempty [] mempty) NoFold $ - constrained' $ \_ innerMap -> - forAll innerMap $ \kv' -> - lit 0 <=. snd_ kv' - -instance HasSimpleRep AssetName where - type SimpleRep AssetName = ShortByteString - toSimpleRep (AssetName sbs) = sbs - fromSimpleRep sbs = AssetName sbs -instance IsConwayUniv fn => HasSpec fn AssetName - -instance HasSimpleRep (PolicyID c) -instance (IsConwayUniv fn, Crypto c) => HasSpec fn (PolicyID c) - -instance HasSimpleRep (AuxiliaryDataHash c) -instance (IsConwayUniv fn, Crypto c) => HasSpec fn (AuxiliaryDataHash c) - -instance HasSimpleRep (VotingProcedures era) -instance (IsConwayUniv fn, Typeable era, Crypto (EraCrypto era)) => HasSpec fn (VotingProcedures era) - -instance HasSimpleRep (VotingProcedure era) -instance (IsConwayUniv fn, Typeable era, Crypto (EraCrypto era)) => HasSpec fn (VotingProcedure era) - -instance HasSimpleRep Vote -instance IsConwayUniv fn => HasSpec fn Vote - -instance HasSimpleRep (GovActionId c) -instance (IsConwayUniv fn, Crypto c) => HasSpec fn (GovActionId c) - -instance HasSimpleRep GovActionIx -instance IsConwayUniv fn => HasSpec fn GovActionIx - -instance HasSimpleRep ProtVer -instance IsConwayUniv fn => HasSpec fn ProtVer - --- We do this like this to get the right bounds for `VersionRep` --- while ensuring that we don't have to add instances for e.g. `Num` --- to version. -newtype VersionRep = VersionRep Word8 - deriving (Show, Eq, Ord, Num, Random, Arbitrary) via Word8 -instance BaseUniverse fn => HasSpec fn VersionRep where - type TypeSpec fn VersionRep = NumSpec VersionRep - emptySpec = emptyNumSpec - combineSpec = combineNumSpec - genFromTypeSpec = genFromNumSpec - shrinkWithTypeSpec = shrinkWithNumSpec - conformsTo = conformsToNumSpec - toPreds = toPredsNumSpec -instance Bounded VersionRep where - minBound = VersionRep $ getVersion minBound - maxBound = VersionRep $ getVersion maxBound -instance MaybeBounded VersionRep - -instance HasSimpleRep Version where - type SimpleRep Version = VersionRep - fromSimpleRep (VersionRep rep) = case runFail $ mkVersion rep of - Left err -> - error $ - unlines - [ "fromSimpleRep @Version:" - , show rep - , err - ] - Right a -> a - toSimpleRep = VersionRep . getVersion -instance BaseUniverse fn => HasSpec fn Version -instance BaseUniverse fn => OrdLike fn Version - -succV_ :: BaseUniverse fn => Term fn Version -> Term fn Version -succV_ = fromGeneric_ . (+ 1) . toGeneric_ - -instance HasSimpleRep (GovPurposeId p era) -instance (Typeable p, IsConwayUniv fn, Era era) => HasSpec fn (GovPurposeId p era) - -instance HasSimpleRep (GovAction era) -instance - ( IsConwayUniv fn - , EraPParams era - , HasSimpleRep (PParamsHKD StrictMaybe era) - , TypeSpec fn (SimpleRep (PParamsHKD StrictMaybe era)) ~ TypeSpec fn (PParamsHKD StrictMaybe era) - , HasSpec fn (SimpleRep (PParamsHKD StrictMaybe era)) - ) => - HasSpec fn (GovAction era) - -instance HasSimpleRep (Constitution era) -instance (IsConwayUniv fn, EraPParams era) => HasSpec fn (Constitution era) - -instance HasSimpleRep (PParamsHKD StrictMaybe era) => HasSimpleRep (PParamsUpdate era) where - type SimpleRep (PParamsUpdate era) = SimpleRep (PParamsHKD StrictMaybe era) - toSimpleRep (PParamsUpdate hkd) = toSimpleRep hkd - fromSimpleRep = PParamsUpdate . fromSimpleRep -instance - ( IsConwayUniv fn - , EraPParams era - , HasSimpleRep (PParamsHKD StrictMaybe era) - , TypeSpec fn (SimpleRep (PParamsHKD StrictMaybe era)) ~ TypeSpec fn (PParamsHKD StrictMaybe era) - , HasSpec fn (SimpleRep (PParamsHKD StrictMaybe era)) - , Show (TypeSpec fn (PParamsHKD StrictMaybe era)) - ) => - HasSpec fn (PParamsUpdate era) - -instance HasSimpleRep EpochInterval -instance IsConwayUniv fn => OrdLike fn EpochInterval -instance IsConwayUniv fn => HasSpec fn EpochInterval - -instance HasSimpleRep (ConwayPParams StrictMaybe c) -instance - ( IsConwayUniv fn - , Typeable c - ) => - HasSpec fn (ConwayPParams StrictMaybe c) - -instance HasSimpleRep (ConwayPParams Identity era) -instance (IsConwayUniv fn, Era era) => HasSpec fn (ConwayPParams Identity era) - -instance HasSimpleRep (PParams (ConwayEra StandardCrypto)) -instance IsConwayUniv fn => HasSpec fn (PParams (ConwayEra StandardCrypto)) - -instance HasSimpleRep ExUnits where - type SimpleRep ExUnits = SimpleRep (Natural, Natural) - fromSimpleRep = uncurry ExUnits . fromSimpleRep - toSimpleRep (ExUnits a b) = toSimpleRep (a, b) -instance IsConwayUniv fn => HasSpec fn ExUnits - -instance HasSimpleRep OrdExUnits where - type SimpleRep OrdExUnits = SimpleRep ExUnits - fromSimpleRep = OrdExUnits . fromSimpleRep - toSimpleRep = toSimpleRep . unOrdExUnits -instance IsConwayUniv fn => HasSpec fn OrdExUnits - -instance HasSimpleRep CoinPerByte where - -- TODO: consider `SimpleRep Coin` instead if this is annoying - type SimpleRep CoinPerByte = Coin - fromSimpleRep = CoinPerByte - toSimpleRep = unCoinPerByte -instance IsConwayUniv fn => HasSpec fn CoinPerByte - -instance HasSimpleRep CostModels -instance IsConwayUniv fn => HasSpec fn CostModels where - emptySpec = - Cartesian - (constrained $ \m -> size_ (dom_ m) <=. 3) - (constrained $ \p -> size_ (dom_ (fst_ $ fromGeneric_ p)) <=. 3) - -instance HasSimpleRep PoolVotingThresholds -instance IsConwayUniv fn => HasSpec fn PoolVotingThresholds - -instance HasSimpleRep DRepVotingThresholds -instance IsConwayUniv fn => HasSpec fn DRepVotingThresholds - -instance HasSimpleRep CostModelError -instance IsConwayUniv fn => HasSpec fn CostModelError - -instance HasSimpleRep CostModelApplyError -instance IsConwayUniv fn => HasSpec fn CostModelApplyError - -instance IsConwayUniv fn => HasSpec fn Char where - type TypeSpec fn Char = () - emptySpec = () - combineSpec _ _ = TrueSpec - genFromTypeSpec _ = pureGen arbitrary - shrinkWithTypeSpec _ = shrink - conformsTo _ _ = True - toPreds _ _ = toPred True - -instance IsConwayUniv fn => HasSpec fn CostModel where - type TypeSpec fn CostModel = () - emptySpec = () - combineSpec _ _ = TrueSpec - genFromTypeSpec _ = pureGen arbitrary - shrinkWithTypeSpec _ = shrink - conformsTo _ _ = True - toPreds _ _ = toPred True - -instance HasSimpleRep Language -instance IsConwayUniv fn => HasSpec fn Language - -instance HasSimpleRep Prices -instance IsConwayUniv fn => HasSpec fn Prices - -instance HasSimpleRep (NoUpdate a) -instance (IsConwayUniv fn, Typeable a) => HasSpec fn (NoUpdate a) - -instance HasSimpleRep (THKD tag StrictMaybe a) where - type SimpleRep (THKD tag StrictMaybe a) = SimpleRep (StrictMaybe a) - fromSimpleRep = THKD . fromSimpleRep - toSimpleRep (THKD sm) = toSimpleRep sm -instance (IsConwayUniv fn, Typeable tag, HasSpec fn a) => HasSpec fn (THKD tag StrictMaybe a) - -instance HasSimpleRep (THKD tag Identity a) where - type SimpleRep (THKD tag Identity a) = a - fromSimpleRep = THKD - toSimpleRep (THKD a) = a -instance (IsConwayUniv fn, Typeable tag, HasSpec fn a) => HasSpec fn (THKD tag Identity a) - -instance HasSimpleRep GovActionPurpose -instance IsConwayUniv fn => HasSpec fn GovActionPurpose - -instance HasSimpleRep (Voter c) -instance (IsConwayUniv fn, Crypto c) => HasSpec fn (Voter c) - --- TODO: this might be a problem considering duplicates in the list! This --- type might require having its own `HasSpec` at some point -instance Ord a => HasSimpleRep (SOS.OSet a) where - type SimpleRep (SOS.OSet a) = [a] - fromSimpleRep = SOS.fromStrictSeq . StrictSeq.fromList - toSimpleRep = toList . SOS.toStrictSeq -instance (IsConwayUniv fn, Ord a, HasSpec fn a) => HasSpec fn (SOS.OSet a) -instance Ord a => Forallable (SOS.OSet a) a - -instance HasSimpleRep (ProposalProcedure era) -instance - ( IsConwayUniv fn - , EraPParams era - , HasSimpleRep (PParamsHKD StrictMaybe era) - , TypeSpec fn (SimpleRep (PParamsHKD StrictMaybe era)) ~ TypeSpec fn (PParamsHKD StrictMaybe era) - , HasSpec fn (SimpleRep (PParamsHKD StrictMaybe era)) - ) => - HasSpec fn (ProposalProcedure era) - -pProcGovAction_ :: - IsConwayUniv fn => - Term fn (ProposalProcedure (ConwayEra StandardCrypto)) -> - Term fn (GovAction (ConwayEra StandardCrypto)) -pProcGovAction_ = sel @2 - -instance HasSimpleRep ValidityInterval -instance IsConwayUniv fn => HasSpec fn ValidityInterval - -instance HasSimpleRep (DRepState c) -instance (IsConwayUniv fn, Crypto c) => HasSpec fn (DRepState c) - -instance HasSimpleRep (CommitteeAuthorization c) -instance (IsConwayUniv fn, Crypto c) => HasSpec fn (CommitteeAuthorization c) - -instance HasSimpleRep (CommitteeState era) -instance (IsConwayUniv fn, Era era) => HasSpec fn (CommitteeState era) - -instance HasSimpleRep (VState era) -instance (IsConwayUniv fn, Era era) => HasSpec fn (VState era) - -instance HasSimpleRep (PState era) -instance (IsConwayUniv fn, Era era) => HasSpec fn (PState era) - -instance HasSimpleRep (DState era) -instance (IsConwayUniv fn, Era era) => HasSpec fn (DState era) - -instance HasSimpleRep (FutureGenDeleg c) -instance (IsConwayUniv fn, Crypto c) => HasSpec fn (FutureGenDeleg c) - -instance HasSimpleRep (GenDelegPair c) -instance (IsConwayUniv fn, Crypto c) => HasSpec fn (GenDelegPair c) - -instance HasSimpleRep (GenDelegs c) -instance (IsConwayUniv fn, Crypto c) => HasSpec fn (GenDelegs c) - -instance HasSimpleRep (InstantaneousRewards c) -instance (IsConwayUniv fn, Crypto c) => HasSpec fn (InstantaneousRewards c) - -type UMapTypes c = - '[ Map (Credential 'Staking c) RDPair - , Map Ptr (Credential 'Staking c) - , Map (Credential 'Staking c) (KeyHash 'StakePool c) - , Map (Credential 'Staking c) (DRep c) - ] -instance Crypto c => HasSimpleRep (UMap c) where - type SimpleRep (UMap c) = SOP '["UMap" ::: UMapTypes c] - toSimpleRep um = inject @"UMap" @'["UMap" ::: UMapTypes c] (rdPairMap um) (ptrMap um) (sPoolMap um) (dRepMap um) - fromSimpleRep rep = algebra @'["UMap" ::: UMapTypes c] rep unify -instance (IsConwayUniv fn, Crypto c) => HasSpec fn (UMap c) - -instance HasSimpleRep RDPair where - type SimpleRep RDPair = SOP '["RDPair" ::: '[Coin, Coin]] - toSimpleRep (RDPair rew dep) = inject @"RDPair" @'["RDPair" ::: '[Coin, Coin]] (toSimpleRep rew) (toSimpleRep dep) - fromSimpleRep rep = - algebra @'["RDPair" ::: '[Coin, Coin]] - rep - (\rew dep -> RDPair (fromSimpleRep rew) (fromSimpleRep dep)) -instance IsConwayUniv fn => HasSpec fn RDPair - -instance HasSimpleRep (CertState era) -instance (IsConwayUniv fn, Era era) => HasSpec fn (CertState era) - -instance HasSimpleRep (GovRelation StrictMaybe era) -instance (IsConwayUniv fn, Era era) => HasSpec fn (GovRelation StrictMaybe era) - -instance HasSimpleRep (GovEnv (ConwayEra StandardCrypto)) -instance IsConwayUniv fn => HasSpec fn (GovEnv (ConwayEra StandardCrypto)) - -instance HasSimpleRep (GovActionState (ConwayEra StandardCrypto)) -instance IsConwayUniv fn => HasSpec fn (GovActionState (ConwayEra StandardCrypto)) - -gasId_ :: - IsConwayUniv fn => - Term fn (GovActionState (ConwayEra StandardCrypto)) -> - Term fn (GovActionId StandardCrypto) -gasId_ = sel @0 - -gasCommitteeVotes_ :: - IsConwayUniv fn => - Term fn (GovActionState (ConwayEra StandardCrypto)) -> - Term fn (Map (Credential 'HotCommitteeRole StandardCrypto) Vote) -gasCommitteeVotes_ = sel @1 - -gasDRepVotes_ :: - IsConwayUniv fn => - Term fn (GovActionState (ConwayEra StandardCrypto)) -> - Term fn (Map (Credential 'DRepRole StandardCrypto) Vote) -gasDRepVotes_ = sel @2 - -gasProposalProcedure_ :: - IsConwayUniv fn => - Term fn (GovActionState (ConwayEra StandardCrypto)) -> - Term fn (ProposalProcedure (ConwayEra StandardCrypto)) -gasProposalProcedure_ = sel @4 - -type GAS = GovActionState (ConwayEra StandardCrypto) -type ProposalTree = (StrictMaybe (GovActionId StandardCrypto), [RoseTree GAS]) -type ProposalsType = - '[ ProposalTree -- PParamUpdate - , ProposalTree -- HardFork - , ProposalTree -- Committee - , ProposalTree -- Constitution - , [GAS] -- Everything else (TreasuryWithdrawals, Info) - -- TODO - in order to improve the distribution of orders in the OMap - -- one could try doing something like this as well to materialize the order: - -- , TotalOrder (GovActionId StandardCrypto) - -- However, (1) I have no clue how this would work in detail and (2) the approach - -- of DFS gives us a lot of testing already, and there are bigger fish to fry than - -- this right now. - ] -instance HasSimpleRep (Proposals (ConwayEra StandardCrypto)) where - type SimpleRep (Proposals (ConwayEra StandardCrypto)) = SOP '["Proposals" ::: ProposalsType] - toSimpleRep props = - inject @"Proposals" @'["Proposals" ::: ProposalsType] - (buildProposalTree $ coerce grPParamUpdate) - (buildProposalTree $ coerce grHardFork) - (buildProposalTree $ coerce grCommittee) - (buildProposalTree $ coerce grConstitution) - (Map.elems $ Map.withoutKeys idMap treeKeys) - where - GovRelation {..} = toGovRelationTree props - idMap = proposalsActionsMap props - - treeKeys = - foldMap - keys - [ coerce grPParamUpdate - , coerce grHardFork - , coerce grCommittee - , coerce grConstitution - ] - - buildProposalTree :: TreeMaybe (GovActionId StandardCrypto) -> ProposalTree - buildProposalTree (TreeMaybe (Node mId cs)) = (mId, map buildTree cs) - - buildTree :: Tree (StrictMaybe (GovActionId StandardCrypto)) -> RoseTree GAS - buildTree (Node (SJust gid) cs) | Just gas <- Map.lookup gid idMap = RoseNode gas (map buildTree cs) - buildTree _ = - error "toSimpleRep @Proposals: toGovRelationTree returned trees with Nothing nodes below the root" - - keys :: TreeMaybe (GovActionId StandardCrypto) -> Set (GovActionId StandardCrypto) - keys (TreeMaybe t) = foldMap (strictMaybe mempty Set.singleton) t - - fromSimpleRep rep = - algebra @'["Proposals" ::: ProposalsType] - rep - $ \(rPPUp, ppupTree) (rHF, hfTree) (rCom, comTree) (rCon, conTree) others -> - let root = GovRelation (coerce rPPUp) (coerce rHF) (coerce rCom) (coerce rCon) - -- TODO: note, this doesn't roundtrip and the distribution is a bit iffy. See the TODO - -- above for ideas on how to deal with this. - oMap = foldMap (foldMap mkOMap) [ppupTree, hfTree, comTree, conTree] <> OMap.fromFoldable others - in unsafeMkProposals root oMap - where - mkOMap (RoseNode a ts) = a OMap.<| foldMap mkOMap ts - -instance IsConwayUniv fn => HasSpec fn (Proposals (ConwayEra StandardCrypto)) - -instance HasSimpleRep (EnactSignal (ConwayEra StandardCrypto)) -instance IsConwayUniv fn => HasSpec fn (EnactSignal (ConwayEra StandardCrypto)) - -instance HasSimpleRep (EnactState (ConwayEra StandardCrypto)) -instance IsConwayUniv fn => HasSpec fn (EnactState (ConwayEra StandardCrypto)) - -instance HasSimpleRep (Committee (ConwayEra StandardCrypto)) -instance IsConwayUniv fn => HasSpec fn (Committee (ConwayEra StandardCrypto)) - -instance HasSimpleRep (RatifyEnv (ConwayEra StandardCrypto)) -instance IsConwayUniv fn => HasSpec fn (RatifyEnv (ConwayEra StandardCrypto)) - -instance HasSimpleRep (RatifyState (ConwayEra StandardCrypto)) -instance IsConwayUniv fn => HasSpec fn (RatifyState (ConwayEra StandardCrypto)) - -instance HasSimpleRep (RatifySignal (ConwayEra StandardCrypto)) -instance IsConwayUniv fn => HasSpec fn (RatifySignal (ConwayEra StandardCrypto)) - -instance Crypto c => HasSimpleRep (PoolDistr c) -instance (Crypto c, IsConwayUniv fn) => HasSpec fn (PoolDistr c) - -instance Crypto c => HasSimpleRep (IndividualPoolStake c) -instance (Crypto c, IsConwayUniv fn) => HasSpec fn (IndividualPoolStake c) - -instance HasSimpleRep (ConwayGovCertEnv (ConwayEra StandardCrypto)) -instance IsConwayUniv fn => HasSpec fn (ConwayGovCertEnv (ConwayEra StandardCrypto)) - -instance HasSimpleRep (PoolEnv (ConwayEra StandardCrypto)) -instance IsConwayUniv fn => HasSpec fn (PoolEnv (ConwayEra StandardCrypto)) - -instance HasSimpleRep (CertEnv (ConwayEra StandardCrypto)) -instance IsConwayUniv fn => HasSpec fn (CertEnv (ConwayEra StandardCrypto)) - -instance HasSimpleRep (EpochState (ConwayEra StandardCrypto)) -instance IsConwayUniv fn => HasSpec fn (EpochState (ConwayEra StandardCrypto)) - -instance HasSimpleRep (NonMyopic c) -instance (IsConwayUniv fn, Crypto c) => HasSpec fn (NonMyopic c) - -instance HasSimpleRep Likelihood -instance IsConwayUniv fn => HasSpec fn Likelihood - -instance HasSimpleRep LogWeight -instance IsConwayUniv fn => HasSpec fn LogWeight - -instance HasSimpleRep AccountState -instance IsConwayUniv fn => HasSpec fn AccountState - -instance HasSimpleRep (SnapShot c) -instance (IsConwayUniv fn, Crypto c) => HasSpec fn (SnapShot c) - -instance HasSimpleRep (Stake c) -instance (IsConwayUniv fn, Crypto c) => HasSpec fn (Stake c) - -instance (VMap.Vector vk k, VMap.Vector vv v) => HasSimpleRep (VMap vk vv k v) where - type SimpleRep (VMap vk vv k v) = Map k v - toSimpleRep = VMap.toMap - fromSimpleRep = VMap.fromMap -instance - ( IsConwayUniv fn - , VMap.Vector vk k - , VMap.Vector vv v - , Typeable vk - , Typeable vv - , Ord k - , Eq (vv v) - , Eq (vk k) - , HasSpec fn k - , HasSpec fn v - ) => - HasSpec fn (VMap vk vv k v) - -instance HasSimpleRep (SnapShots c) -instance (IsConwayUniv fn, Crypto c) => HasSpec fn (SnapShots c) - -instance HasSimpleRep (LedgerState (ConwayEra StandardCrypto)) -instance IsConwayUniv fn => HasSpec fn (LedgerState (ConwayEra StandardCrypto)) - -instance HasSimpleRep (UTxOState (ConwayEra StandardCrypto)) -instance IsConwayUniv fn => HasSpec fn (UTxOState (ConwayEra StandardCrypto)) - -instance HasSimpleRep (IncrementalStake c) -instance (IsConwayUniv fn, Crypto c) => HasSpec fn (IncrementalStake c) - -instance HasSimpleRep (UTxO (ConwayEra StandardCrypto)) -instance IsConwayUniv fn => HasSpec fn (UTxO (ConwayEra StandardCrypto)) - -instance HasSimpleRep (ConwayGovState (ConwayEra StandardCrypto)) -instance IsConwayUniv fn => HasSpec fn (ConwayGovState (ConwayEra StandardCrypto)) - -instance HasSimpleRep (DRepPulsingState (ConwayEra StandardCrypto)) -instance IsConwayUniv fn => HasSpec fn (DRepPulsingState (ConwayEra StandardCrypto)) - -instance HasSimpleRep (PulsingSnapshot (ConwayEra StandardCrypto)) -instance IsConwayUniv fn => HasSpec fn (PulsingSnapshot (ConwayEra StandardCrypto)) - -type DRepPulserTypes = - '[ Int - , UMap StandardCrypto - , Map (Credential 'Staking StandardCrypto) (CompactForm Coin) - , Map (Credential 'Staking StandardCrypto) (CompactForm Coin) - , PoolDistr StandardCrypto - , Map (DRep StandardCrypto) (CompactForm Coin) - , Map (Credential 'DRepRole StandardCrypto) (DRepState StandardCrypto) - , EpochNo - , CommitteeState (ConwayEra StandardCrypto) - , EnactState (ConwayEra StandardCrypto) - , StrictSeq (GovActionState (ConwayEra StandardCrypto)) - ] -instance - HasSimpleRep - (DRepPulser (ConwayEra StandardCrypto) Identity (RatifyState (ConwayEra StandardCrypto))) - where - type - SimpleRep (DRepPulser (ConwayEra StandardCrypto) Identity (RatifyState (ConwayEra StandardCrypto))) = - SOP '["DRepPulser" ::: DRepPulserTypes] - toSimpleRep DRepPulser {..} = - inject @"DRepPulser" @'["DRepPulser" ::: DRepPulserTypes] - dpPulseSize - dpUMap - dpBalance - dpStakeDistr - dpStakePoolDistr - dpDRepDistr - dpDRepState - dpCurrentEpoch - dpCommitteeState - dpEnactState - dpProposals - fromSimpleRep rep = - algebra @'["DRepPulser" ::: DRepPulserTypes] - rep - $ \ps um b sd spd dd ds ce cs es p -> - DRepPulser ps um b sd spd dd ds ce cs es p testGlobals -instance - IsConwayUniv fn => - HasSpec fn (DRepPulser (ConwayEra StandardCrypto) Identity (RatifyState (ConwayEra StandardCrypto))) - -instance HasSimpleRep (UtxoEnv (ConwayEra StandardCrypto)) -instance IsConwayUniv fn => HasSpec fn (UtxoEnv (ConwayEra StandardCrypto)) - -instance HasSimpleRep (AlonzoTx (ConwayEra StandardCrypto)) -instance IsConwayUniv fn => HasSpec fn (AlonzoTx (ConwayEra StandardCrypto)) - -instance HasSimpleRep IsValid -instance IsConwayUniv fn => HasSpec fn IsValid - --- NOTE: we don't generate or talk about plutus scripts (yet!) -type AlonzoTxAuxDataTypes = - '[ Map Word64 Metadatum - , StrictSeq (Timelock (ConwayEra StandardCrypto)) - ] -instance HasSimpleRep (AlonzoTxAuxData (ConwayEra StandardCrypto)) where - type - SimpleRep (AlonzoTxAuxData (ConwayEra StandardCrypto)) = - SOP '["AlonzoTxOutData" ::: AlonzoTxAuxDataTypes] - toSimpleRep (AlonzoTxAuxData metaMap tsSeq _) = - inject @"AlonzoTxAuxData" @'["AlonzoTxAuxData" ::: AlonzoTxAuxDataTypes] - metaMap - tsSeq - fromSimpleRep rep = - algebra @'["AlonzoTxAuxData" ::: AlonzoTxAuxDataTypes] rep $ - \metaMap tsSeq -> AlonzoTxAuxData metaMap tsSeq mempty -instance IsConwayUniv fn => HasSpec fn (AlonzoTxAuxData (ConwayEra StandardCrypto)) - -instance HasSimpleRep Metadatum -instance IsConwayUniv fn => HasSpec fn Metadatum - -type AlonzoTxWitsTypes = - '[ Set (WitVKey 'Witness StandardCrypto) - , Set (BootstrapWitness StandardCrypto) - ] -instance HasSimpleRep (AlonzoTxWits (ConwayEra StandardCrypto)) where - type - SimpleRep (AlonzoTxWits (ConwayEra StandardCrypto)) = - SOP '["AlonzoTxWits" ::: AlonzoTxWitsTypes] - toSimpleRep (AlonzoTxWits vkeyWits bootstrapWits _ _ _) = - inject @"AlonzoTxWits" @'["AlonzoTxWits" ::: AlonzoTxWitsTypes] - vkeyWits - bootstrapWits - fromSimpleRep rep = - algebra @'["AlonzoTxWits" ::: AlonzoTxWitsTypes] rep $ - \vkeyWits bootstrapWits -> AlonzoTxWits vkeyWits bootstrapWits mempty (TxDats mempty) (Redeemers mempty) -instance IsConwayUniv fn => HasSpec fn (AlonzoTxWits (ConwayEra StandardCrypto)) - -instance (IsConwayUniv fn, Crypto c, Typeable r) => HasSpec fn (WitVKey r c) where - type TypeSpec fn (WitVKey r c) = () - emptySpec = () - combineSpec _ _ = TrueSpec - genFromTypeSpec _ = pureGen arbitrary - shrinkWithTypeSpec _ = shrink - conformsTo _ _ = True - toPreds _ _ = toPred True - -instance (IsConwayUniv fn, Crypto c) => HasSpec fn (BootstrapWitness c) where - type TypeSpec fn (BootstrapWitness c) = () - emptySpec = () - combineSpec _ _ = TrueSpec - genFromTypeSpec _ = pureGen arbitrary - shrinkWithTypeSpec _ = shrink - conformsTo _ _ = True - toPreds _ _ = toPred True - -instance Era era => HasSimpleRep (LedgerEnv era) -instance (IsConwayUniv fn, HasSpec fn (PParams era), Era era) => HasSpec fn (LedgerEnv era) - -onJust' :: - ( HasSpec fn a - , IsNormalType a - , IsPred p fn - ) => - Term fn (StrictMaybe a) -> - (Term fn a -> p) -> - Pred fn -onJust' tm p = caseOn tm (branch $ const True) (branch p) - -onSized :: - (IsConwayUniv fn, HasSpec fn a, IsPred p fn) => - Term fn (Sized a) -> - (Term fn a -> p) -> - Pred fn -onSized sz p = match sz $ \a _ -> p a diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway/Ledger.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway/Ledger.hs deleted file mode 100644 index 097ebeda9f7..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway/Ledger.hs +++ /dev/null @@ -1,33 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE RecordWildCards #-} - -module Test.Cardano.Ledger.Constrained.Conway.Ledger where - -import Cardano.Ledger.Shelley.API.Types - -import Constrained - -import Cardano.Ledger.Conway (ConwayEra) -import Cardano.Ledger.Conway.Core -import Cardano.Ledger.Crypto (StandardCrypto) -import Test.Cardano.Ledger.Constrained.Conway.Instances -import Test.Cardano.Ledger.Constrained.Conway.Utxo - -ledgerTxSpec :: - IsConwayUniv fn => - LedgerEnv (ConwayEra StandardCrypto) -> - LedgerState (ConwayEra StandardCrypto) -> - Spec fn (Tx (ConwayEra StandardCrypto)) -ledgerTxSpec env st = - constrained $ \tx -> - [ satisfies tx (utxoTxSpec utxoEnv (lsUTxOState st)) - ] - where - utxoEnv = - UtxoEnv - { ueSlot = ledgerSlotNo env - , uePParams = ledgerPp env - , ueCertState = lsCertState st - } diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway/PParams.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway/PParams.hs deleted file mode 100644 index e55520fdacb..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway/PParams.hs +++ /dev/null @@ -1,64 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE RecordWildCards #-} - -module Test.Cardano.Ledger.Constrained.Conway.PParams where - -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.Conway.PParams - -import Constrained - -import Cardano.Ledger.Conway (ConwayEra) -import Cardano.Ledger.Conway.Core -import Cardano.Ledger.Crypto (StandardCrypto) -import Test.Cardano.Ledger.Constrained.Conway.Instances (IsConwayUniv) - -pparamsSpec :: IsConwayUniv fn => Spec fn (PParams (ConwayEra StandardCrypto)) -pparamsSpec = - constrained $ \pp -> - match pp $ \cpp -> - match cpp $ - \_cppMinFeeA - _cppMinFeeB - cppMaxBBSize - cppMaxTxSize - cppMaxBHSize - _cppKeyDeposit - cppPoolDeposit - cppEMax - _cppNOpt - _cppA0 - _cppRho - _cppTau - _cppProtocolVersion - _cppMinPoolCost - _cppCoinsPerUTxOByte - _cppCostModels - _cppPrices - _cppMaxTxExUnits - _cppMaxBlockExUnits - cppMaxValSize - cppCollateralPercentage - _cppMaxCollateralInputs - _cppPoolVotingThresholds - _cppDRepVotingThresholds - _cppCommitteeMinSize - cppCommitteeMaxTermLength - cppGovActionLifetime - cppGovActionDeposit - cppDRepDeposit - _cppDRepActivity - _cppMinFeeRefScriptCoinsPerByte -> - [ assert $ cppMaxBBSize /=. lit (THKD 0) - , assert $ cppMaxTxSize /=. lit (THKD 0) - , assert $ cppMaxBHSize /=. lit (THKD 0) - , assert $ cppMaxValSize /=. lit (THKD 0) - , assert $ cppCollateralPercentage /=. lit (THKD 0) - , assert $ cppCommitteeMaxTermLength /=. lit (THKD $ EpochInterval 0) - , assert $ cppGovActionLifetime /=. lit (THKD $ EpochInterval 0) - , assert $ cppPoolDeposit /=. lit (THKD mempty) - , assert $ cppGovActionDeposit /=. lit (THKD mempty) - , assert $ cppDRepDeposit /=. lit (THKD mempty) - , match cppEMax $ \epochInterval -> - lit (EpochInterval 0) <. epochInterval - ] diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway/Pool.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway/Pool.hs deleted file mode 100644 index 02f8ca37b10..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway/Pool.hs +++ /dev/null @@ -1,85 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE ImportQualifiedPost #-} -{-# LANGUAGE TypeApplications #-} - --- | Specs necessary to generate, environment, state, and signal --- for the POOL rule -module Test.Cardano.Ledger.Constrained.Conway.Pool where - -import Cardano.Crypto.Hash.Class qualified as Hash -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.CertState -import Cardano.Ledger.Conway.Core -import Cardano.Ledger.Shelley.API.Types -import Cardano.Slotting.EpochInfo qualified as EI -import Control.Monad.Identity -import Data.Map qualified as Map -import Lens.Micro - -import Constrained - -import Test.Cardano.Ledger.Constrained.Conway.Instances -import Test.Cardano.Ledger.Constrained.Conway.PParams - -import Cardano.Ledger.Conway (ConwayEra) -import Cardano.Ledger.Crypto (Crypto (..), StandardCrypto) -import Test.Cardano.Ledger.Core.Utils -import Test.Cardano.Slotting.Numeric () - -currentEpoch :: SlotNo -> EpochNo -currentEpoch = runIdentity . EI.epochInfoEpoch (epochInfoPure testGlobals) - -poolEnvSpec :: - IsConwayUniv fn => - Spec fn (PoolEnv (ConwayEra StandardCrypto)) -poolEnvSpec = - constrained $ \pe -> - match pe $ \_ pp -> - satisfies pp pparamsSpec - -pStateSpec :: - IsConwayUniv fn => - Spec fn (PState (ConwayEra StandardCrypto)) -pStateSpec = constrained $ \ps -> - match ps $ \stakePoolParams futureStakePoolParams retiring deposits -> - [ assertExplain ["dom of retiring is a subset of dom of stakePoolParams"] $ - dom_ retiring `subset_` dom_ stakePoolParams - , assertExplain ["dom of deposits is dom of stakePoolParams"] $ - dom_ deposits ==. dom_ stakePoolParams - , assertExplain ["no deposit is 0"] $ - not_ $ - lit (Coin 0) `elem_` rng_ deposits - , assertExplain ["dom of stakePoolParams is disjoint from futureStakePoolParams"] $ - dom_ stakePoolParams `disjoint_` dom_ futureStakePoolParams - ] - -poolCertSpec :: - IsConwayUniv fn => - PoolEnv (ConwayEra StandardCrypto) -> - PState (ConwayEra StandardCrypto) -> - Spec fn (PoolCert StandardCrypto) -poolCertSpec (PoolEnv s pp) ps = - constrained $ \pc -> - (caseOn pc) - -- RegPool !(PoolParams c) - ( branch $ \poolParams -> - match poolParams $ \_ _ _ cost _ rewAccnt _ _ mMetadata -> - [ match rewAccnt $ \net' _ -> - net' ==. lit Testnet - , onJust' mMetadata $ \metadata -> - match metadata $ \_ hash -> strLen_ hash <=. lit (maxMetaLen - 1) - , assert $ lit (pp ^. ppMinPoolCostL) <=. cost - ] - ) - -- RetirePool !(KeyHash 'StakePool c) !EpochNo - ( branch $ \keyHash epochNo -> - [ epochNo <=. lit (maxEpochNo - 1) - , lit (currentEpoch s) <. epochNo - , elem_ keyHash $ lit rpools - ] - ) - where - EpochInterval maxEp = pp ^. ppEMaxL - maxEpochNo = EpochNo (fromIntegral maxEp) - rpools = Map.keys $ psStakePoolParams ps - maxMetaLen = fromIntegral (Hash.sizeHash ([] @(HASH StandardCrypto))) diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway/Utxo.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway/Utxo.hs deleted file mode 100644 index 9c9739f14b3..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Conway/Utxo.hs +++ /dev/null @@ -1,186 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE ImportQualifiedPost #-} -{-# LANGUAGE RecordWildCards #-} - --- | Specs necessary to generate, environment, state, and signal --- for the UTXO rule -module Test.Cardano.Ledger.Constrained.Conway.Utxo where - -import Cardano.Ledger.Babbage.TxOut -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.Conway.PParams -import Cardano.Ledger.Mary.Value -import Cardano.Ledger.Shelley.API.Types -import Cardano.Ledger.UTxO -import Data.Foldable -import Data.Map qualified as Map -import Data.Maybe -import Data.Set qualified as Set -import Data.Word -import Lens.Micro - -import Constrained - -import Cardano.Ledger.Conway (ConwayEra) -import Cardano.Ledger.Conway.Core (EraTx (..), ppMaxCollateralInputsL) -import Cardano.Ledger.Crypto (StandardCrypto) -import Test.Cardano.Ledger.Constrained.Conway.Instances -import Test.Cardano.Ledger.Constrained.Conway.PParams - -utxoEnvSpec :: IsConwayUniv fn => Spec fn (UtxoEnv (ConwayEra StandardCrypto)) -utxoEnvSpec = - constrained $ \utxoEnv -> - match utxoEnv $ - \_ueSlot - uePParams - _ueCertState -> - [ satisfies uePParams pparamsSpec - , match uePParams $ \cpp -> - match cpp $ - \_cppMinFeeA - _cppMinFeeB - _cppMaxBBSize - cppMaxTxSize - _cppMaxBHSize - _cppKeyDeposit - _cppPoolDeposit - _cppEMax - _cppNOpt - _cppA0 - _cppRho - _cppTau - _cppProtocolVersion - _cppMinPoolCost - _cppCoinsPerUTxOByte - _cppCostModels - _cppPrices - _cppMaxTxExUnits - _cppMaxBlockExUnits - _cppMaxValSize - _cppCollateralPercentage - _cppMaxCollateralInputs - _cppPoolVotingThresholds - _cppDRepVotingThresholds - _cppCommitteeMinSize - _cppCommitteeMaxTermLength - _cppGovActionLifetime - _cppGovActionDeposit - _cppDRepDeposit - _cppDRepActivity - _cppMinFeeRefScriptCoinsPerByte -> - -- NOTE: this is for testing only! We should figure out a nicer way - -- of splitting generation and checking constraints here! - [ assert $ lit (THKD 3000) ==. cppMaxTxSize - ] - ] - -utxoStateSpec :: - IsConwayUniv fn => - UtxoEnv (ConwayEra StandardCrypto) -> - Spec fn (UTxOState (ConwayEra StandardCrypto)) -utxoStateSpec _env = - constrained $ \utxoState -> - match utxoState $ - \utxosUtxo - _utxosDeposited - _utxosFees - _utxosGovState - _utxosStakeDistr - _utxosDonation -> - [ assert $ utxosUtxo /=. lit mempty - , match utxosUtxo $ \utxoMap -> - forAll (rng_ utxoMap) correctAddrAndWFCoin - ] - -utxoTxSpec :: - IsConwayUniv fn => - UtxoEnv (ConwayEra StandardCrypto) -> - UTxOState (ConwayEra StandardCrypto) -> - Spec fn (Tx (ConwayEra StandardCrypto)) -utxoTxSpec env st = - constrained $ \tx -> - match tx $ \bdy _wits isValid _auxData -> - [ match isValid assert - , match bdy $ - \ctbSpendInputs - ctbCollateralInputs - _ctbReferenceInputs - ctbOutputs - ctbCollateralReturn - _ctbTotalCollateral - _ctbCerts - ctbWithdrawals - ctbTxfee - ctbVldt - _ctbReqSignerHashes - _ctbMint - _ctbScriptIntegrityHash - _ctbAdHash - ctbTxNetworkId - _ctbVotingProcedures - ctbProposalProcedures - _ctbCurrentTreasuryValue - ctbTreasuryDonation -> - [ assert $ ctbSpendInputs /=. lit mempty - , assert $ ctbSpendInputs `subset_` lit (Map.keysSet $ unUTxO $ utxosUtxo st) - , match ctbWithdrawals $ \withdrawalMap -> - forAll' (dom_ withdrawalMap) $ \net _ -> - net ==. lit Testnet - , -- TODO: we need to do this for collateral as well? - match ctbProposalProcedures $ \proposalsList -> - match ctbOutputs $ \outputList -> - [ (reify ctbSpendInputs) - ( \actualInputs -> - fold - [ c | i <- Set.toList actualInputs, BabbageTxOut _ (MaryValue c _) _ _ <- maybeToList . txinLookup i . utxosUtxo $ st - ] - ) - $ \totalValueConsumed -> - [ -- TODO: the yuck here needs to be the selector Fn for the - -- spending field in the outputs. Need to make selectors work! - let outputSum = - foldMap_ - ( composeFn toGenericFn $ - composeFn fstFn $ - composeFn sndFn $ - composeFn toGenericFn $ - composeFn fstFn $ - toGenericFn - ) - outputList - depositSum = - foldMap_ - (composeFn fstFn toGenericFn) - proposalsList - in outputSum + depositSum + ctbTxfee + ctbTreasuryDonation ==. totalValueConsumed - ] - , forAll outputList (flip onSized correctAddrAndWFCoin) - ] - , match ctbVldt $ \before after -> - [ onJust' before (<=. lit (ueSlot env)) - , onJust' after (lit (ueSlot env) <.) - ] - , onJust' ctbTxNetworkId (==. lit Testnet) - , onJust' ctbCollateralReturn $ flip onSized correctAddrAndWFCoin - , assert $ size_ ctbCollateralInputs <=. lit (fromIntegral $ uePParams env ^. ppMaxCollateralInputsL) - ] - ] - -correctAddrAndWFCoin :: - IsConwayUniv fn => - Term fn (TxOut (ConwayEra StandardCrypto)) -> - Pred fn -correctAddrAndWFCoin txOut = - match txOut $ \addr v _ _ -> - [ match v $ \c -> [0 <. c, c <=. fromIntegral (maxBound :: Word64)] - , (caseOn addr) - (branch $ \n _ _ -> n ==. lit Testnet) - ( branch $ \bootstrapAddr -> - match bootstrapAddr $ \_ nm _ -> - (caseOn nm) - (branch $ \_ -> False) - (branch $ \_ -> True) - ) - ] diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Env.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Env.hs deleted file mode 100644 index 45cf6fea038..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Env.hs +++ /dev/null @@ -1,253 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE KindSignatures #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - --- | Provides variables (V era t), and mappings of them to objects of type 't' -module Test.Cardano.Ledger.Constrained.Env ( - V (V, VRaw), - pV, - Field (..), - AnyF (..), - vToField, - fieldToV, - Env (..), - Payload (..), - emptyEnv, - findVar, - storeVar, - findName, - storeName, - restrictEnv, - P (..), - bulkStore, - Name (..), - Access (..), - otherFromEnv, - sameName, -) where - -import Cardano.Ledger.Era (Era) -import Data.Hashable -import Data.List (intercalate) -import qualified Data.List as List -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Universe (Shape (..), Shaped (..)) -import Lens.Micro -import Test.Cardano.Ledger.Constrained.Monad (Typed (..), failT) -import Test.Cardano.Ledger.Constrained.TypeRep -import Test.Cardano.Ledger.Generic.Proof (BabbageEra, ConwayEra, StandardCrypto) - --- ================================================================ --- V - --- | A proto variable. May or may not contain a Lens (encoded as Access) -data V era t where - VRaw :: Era era => String -> Rep era t -> Int -> Access era s t -> V era t - -data Access era s t where - Yes :: Rep era s -> Lens' s t -> Access era s t - No :: Access era s t - -instance Show (V era t) where - show (VRaw nm rep _ _) = nm ++ " :: " ++ show rep - --- | We make hashing of 'V' cheap by memoizing most of the hash computation in in the --- 3rd argument of 'VRaw', we provide this pattern to hide this from every other use. -pattern V :: () => Era era => String -> Rep era t -> Access era s t -> V era t -pattern V s r a <- VRaw s r _ a - where - V s r a = VRaw s r (0 `hashWithSalt` s `hashWithSalt` r) a - --- | Construct a V, dsicharging the (Era era) constraint, using the Proof -pV :: Proof era -> String -> Rep era t -> Access era s t -> V era t -pV Shelley = V -pV Allegra = V -pV Mary = V -pV Alonzo = V -pV Babbage = V -pV Conway = V - -{-# COMPLETE V #-} - --- =========================================================== --- Name - --- | An existentially quantified (V era t), hiding the 't' --- The Hashable instance is inherited from 'V' -data Name era where - Name :: V era t -> Name era - -instance Show (Name era) where - show (Name (VRaw n _ _ _)) = n - --- | Does not satisfy extensionality -instance Eq (Name era) where - Name (V n1 rep1 _) == Name (V n2 rep2 _) = case testEql rep1 rep2 of - Nothing -> False - Just Refl -> n1 == n2 - {-# INLINE (==) #-} - -instance Ord (Name era) where - {-# SPECIALIZE instance Ord (Name (BabbageEra StandardCrypto)) #-} - {-# SPECIALIZE instance Ord (Name (ConwayEra StandardCrypto)) #-} - compare (Name (V n1 rep1 _)) (Name (V n2 rep2 _)) = - case compare n1 n2 of - EQ -> cmpIndex rep1 rep2 - other -> other - {-# INLINE compare #-} - -sameName :: V era t -> V era s -> Maybe (t :~: s) -sameName (V x r1 _) (V y r2 _) | x == y = testEql r1 r2 -sameName _ _ = Nothing - --- ================================================================ --- Field - --- | Fields are like V, except they expose the type of the Lens -data Field era s t where - Field :: Era era => String -> Rep era t -> Rep era s -> Lens' s t -> Field era s t - FConst :: Rep era t -> t -> Rep era s -> Lens' s t -> Field era s t - --- SubField :: String -> Rep era t -> Access era s t -> Field era t r -> Field era s t - -instance Show (Field era s t) where - show (Field n t s _) = intercalate " " ["Field", show n, show s, show t] - show (FConst r t _ _) = "FConst " ++ synopsis r t - --- | Hide the type of 't' in a Field. -data AnyF era s where - AnyF :: -- Eq t => - Field era s t -> AnyF era s - -instance Show (AnyF era s) where - show (AnyF (Field n r t _)) = "Field " ++ n ++ " " ++ show t ++ " " ++ show r - show (AnyF (FConst r t _ _)) = "FConst " ++ synopsis r t - -vToField :: Era era => Rep era s -> V era t -> Typed (Field era s t) -vToField reps (V name rept (Yes reps' l)) = case testEql reps reps' of - Just Refl -> pure $ Field name rept reps l - Nothing -> - failT - [ "Given rep and lens target do not match: " - , "rep: " ++ show reps - , "lens target: " ++ show reps' - ] -vToField _ v@(V _ _ No) = failT ["Cannot convert a V with a No access to a Field", show v] - -fieldToV :: Era era => Field era s t -> Typed (V era t) -fieldToV (Field name rep repx l) = pure $ V name rep (Yes repx l) -fieldToV (FConst _ _ _ _) = failT ["Cannot convert a FieldConst to a V"] - --- =================================================== --- Env - -data Payload era where - Payload :: Rep era t -> t -> Access era s t -> Payload era - -newtype Env era = Env (Map String (Payload era)) - -instance Show (Env era) where - show (Env m) = unlines (map f (Map.toList m)) - where - f (nm, Payload rep t _) = nm ++ " -> " ++ synopsis rep t - -emptyEnv :: Env era -emptyEnv = Env Map.empty - -findVar :: V era t -> Env era -> Typed t -findVar (V name rep1 _) (Env m) = - case Map.lookup name m of - Nothing -> failT ["Cannot find " ++ name ++ " in env"] - Just (Payload rep2 t _) -> - case testEql rep1 rep2 of - Just Refl -> pure t - Nothing -> - failT - ["We found: " ++ name ++ ", but the types did not match. " ++ show rep1 ++ " =/= " ++ show rep2] - -storeVar :: V era t -> t -> Env era -> Env era -storeVar (V name rep access) t (Env m) = Env (Map.insert name (Payload rep t access) m) - --- | Untyped version of 'findVar'. -findName :: Name era -> Env era -> Maybe (Payload era) -findName (Name (V name _ _)) (Env env) = Map.lookup name env - --- | Untyped version of 'storeVar'. -storeName :: Name era -> Payload era -> Env era -> Env era -storeName (Name (V name _ _)) p (Env env) = Env $ Map.insert name p env - --- | Drop any names that are not in the given list from an environment. -restrictEnv :: [Name era] -> Env era -> Env era -restrictEnv names (Env env) = Env $ Map.filterWithKey (\x _ -> elem x xs) env - where - xs = [x | Name (V x _ _) <- names] - -otherFromEnv :: [String] -> Env era -> [String] -otherFromEnv known (Env m) = [n ++ " = " ++ synopsis r t | (n, Payload r t _) <- Map.toList m, not (elem n known)] - --- ============================================ --- Group a bunch of bindings into a list - -data P era where - P :: V era t -> t -> P era - -instance Show (P era) where - show (P (V nm rep _) t) = nm ++ " = " ++ synopsis rep t - showList xs ans = unlines (ans : (map show xs)) - -bulkStore :: [P era] -> Env era -> Env era -bulkStore ps env = List.foldl' accum env ps - where - accum e (P v t) = storeVar v t e - --- ========================================================================== --- Hashable instances so we can make HashSets of Name --- Something like 60% of all time consumed involves manipulating sets of Name --- If the set is Data.Set, then we need instance Ord (Name era). This is very expensive --- So instead we use Data.HashSet where we need instance Hashable(Name era). We can --- make this very cheap by memoizing most of the hash computation in 'V' in the --- constructor 'VRaw' and hiding 'VRaw' with pattern 'V' - --- | Inheriting the Hashable instancefor types that have Shapes, Works for types whose --- Shaped instances don't mention 'Esc', Like Evidence, Proof, Rep --- But we CANNOT use this strategy for (V era t) since its's Shape instance use Esc -instance Hashable (Shape a) where - hashWithSalt s (Nullary n) = s `hashWithSalt` (0 :: Int) `hashWithSalt` n - hashWithSalt s (Nary n xs) = s `hashWithSalt` (1 :: Int) `hashWithSalt` n `hashWithSalt` xs - hashWithSalt s (Esc _ _) = s `hashWithSalt` (2 :: Int) - {-# INLINE hashWithSalt #-} - -instance Hashable (Proof e) where - hashWithSalt s x = s `hashWithSalt` (shape x) - {-# INLINE hashWithSalt #-} - -instance Eq (Proof e) where - x == y = shape x == shape y - {-# INLINE (==) #-} - -instance Hashable (Rep e t) where - hashWithSalt s r = s `hashWithSalt` typeRepOf r - {-# INLINE hashWithSalt #-} - -instance Eq (Rep e t) where - x == y = typeRepOf x == typeRepOf y - {-# INLINE (==) #-} - -instance Hashable (V era t) where - hashWithSalt s (VRaw _ _ h _) = s `hashWithSalt` h - {-# INLINE hashWithSalt #-} - -instance Eq (V era t) where - (V n1 r1 _) == (V n2 r2 _) = n1 == n2 && r1 == r2 - {-# INLINE (==) #-} - -instance Era era => Hashable (Name era) where - hashWithSalt s (Name (VRaw _ _ h _)) = s `hashWithSalt` h - {-# INLINE hashWithSalt #-} diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Examples.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Examples.hs deleted file mode 100644 index 377f70d36fe..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Examples.hs +++ /dev/null @@ -1,925 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE FunctionalDependencies #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE TypeSynonymInstances #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Constrained.Examples where - -import Cardano.Ledger.Babbage (Babbage) -import Cardano.Ledger.BaseTypes (EpochNo (..)) -import Cardano.Ledger.CertState (FutureGenDeleg (..)) -import Cardano.Ledger.Coin (Coin (..), DeltaCoin (..)) -import Cardano.Ledger.Conway.Governance -import Cardano.Ledger.Era (Era (EraCrypto)) -import Cardano.Ledger.Keys (GenDelegPair) -import Control.DeepSeq (deepseq) -import Control.Exception (ErrorCall (..)) -import Control.Monad (when) -import Data.Default.Class (Default (..)) -import Data.Map (Map) -import Data.Ratio ((%)) -import Debug.Trace (trace) -import Test.Cardano.Ledger.Constrained.Ast -import Test.Cardano.Ledger.Constrained.Classes (OrdCond (..)) -import Test.Cardano.Ledger.Constrained.Env -import Test.Cardano.Ledger.Constrained.Lenses (fGenDelegGenKeyHashL) -import Test.Cardano.Ledger.Constrained.Monad -import Test.Cardano.Ledger.Constrained.Preds.Repl (ReplMode (..), modeRepl) -import Test.Cardano.Ledger.Constrained.Preds.Tx (genTxAndNewEpoch) -import Test.Cardano.Ledger.Constrained.Rewrite -import Test.Cardano.Ledger.Constrained.Solver -import Test.Cardano.Ledger.Constrained.Spec (TT) -import Test.Cardano.Ledger.Constrained.Tests (prop_shrinking, prop_soundness) -import Test.Cardano.Ledger.Constrained.TypeRep -import Test.Cardano.Ledger.Constrained.Utils (explainBad, testIO) -import Test.Cardano.Ledger.Constrained.Vars -import Test.Cardano.Ledger.Generic.PrettyCore (PrettyA (..)) -import Test.Cardano.Ledger.Generic.Proof (ConwayEra, Reflect (..), StandardCrypto) -import Test.Cardano.Ledger.Generic.Trace (testPropMax) -import Test.Hspec (shouldThrow) -import Test.QuickCheck hiding (Fixed, total) -import Test.Tasty (TestTree, defaultMain, testGroup) -import Test.Tasty.HUnit -import Test.Tasty.QuickCheck -import Type.Reflection (typeRep) - --- ======================================================= - --- =========================================== - -runCompile :: Era era => [Pred era] -> IO () -runCompile cs = case runTyped (compile standardOrderInfo cs) of - Right x -> print x - Left xs -> putStrLn (unlines xs) - -data Assembler era where - Assemble :: PrettyA t => RootTarget era x t -> Assembler era - Skip :: Assembler era - -stoi :: OrderInfo -stoi = standardOrderInfo - -genMaybeCounterExample :: - Reflect era => - Proof era -> - String -> - Bool -> - OrderInfo -> - [Pred era] -> - Assembler era -> - Gen (Maybe String) -genMaybeCounterExample proof _testname loud order cs target = do - let cs3 = removeEqual cs [] - let cs4 = removeSameVar cs3 [] - graph@(DependGraph _) <- monadTyped $ compile order cs - let messages1 = - if listEq cpeq cs4 cs - then ["Constraints", show cs, "Rewriting is idempotent"] - else - [ "Constraints" - , show cs - , "Substitute for Equality" - , show cs3 - , "Remove syntactic tautologies" - , show cs4 - , "Pick a variable ordering\n" - , show graph - , "Solve for each variable in the order computed. Note by the time we get" - , "to each variable, it is the only variable left in the constraint." - ] - result <- - if loud - then trace (unlines messages1) (genDependGraph loud proof graph) - else genDependGraph loud proof graph - subst <- case result of - Left msgs -> error (unlines msgs) - Right x -> pure x - !env <- monadTyped $ substToEnv subst emptyEnv - testTriples <- monadTyped (mapM (makeTest env) cs) - let messages2 = "\nSubstitution produced after solving\n" ++ show subst - !messages3 <- case target of - Skip -> pure [] - Assemble t -> do - !tval <- monadTyped (runTarget env t) - pure ["\nAssemble the pieces\n", show (prettyA tval)] - let bad = filter (\(_, b, _) -> not b) testTriples - ans = - if null bad - then Nothing -- Indicates success, nothing bad happened - else Just ("Some conditions fail\n" ++ explainBad bad subst) - if loud - then trace (unlines (messages2 : messages3)) (pure ans) - else pure ans - --- | Test that 'cs' :: [Pred] has a solution -testn :: - Reflect era => - Proof era -> - String -> - Bool -> - OrderInfo -> - [Pred era] -> - Assembler era -> - Gen Property -testn proof testname loud order cs target = do - result <- genMaybeCounterExample proof testname loud order cs target - case result of - Nothing -> pure $ counterexample "" True - Just xs -> pure $ counterexample xs False - --- | Test that 'cs' :: [Pred] does NOT have a solution. We expect a failure -failn :: - Reflect era => Proof era -> String -> Bool -> OrderInfo -> [Pred era] -> Assembler era -> IO () -failn proof message loud order cs target = do - shouldThrow - ( do - result <- generate (genMaybeCounterExample proof message loud order cs target) - case result of - Nothing -> putStrLn (message ++ " should have failed but it did not.") - Just counter -> - if loud - then putStrLn counter - else pure () - ) - ( \(ErrorCall msg) -> - trace - ( if loud - then ("Fails as expected\n" ++ msg ++ "\nOK") - else ("Fails as expected OK") - ) - True - ) - -testSpec :: String -> Gen Property -> IO () -testSpec name p = do - putStrLn ("testing: '" ++ name ++ "'") - quickCheck p - --- ====================================================== --- Now some tests --- ====================================================== - --- | Used to test cyclic dependencies -aCyclicPred :: Era era => [Pred era] -aCyclicPred = [a :⊆: b, b :⊆: c, Random c] - where - a = Var (V "a" (SetR IntR) No) - b = Var (V "b" (SetR IntR) No) - c = Var (V "c" (SetR IntR) No) - -cyclicPred :: Era era => [Pred era] -cyclicPred = [a :⊆: b, b :⊆: c, c :⊆: d, d :⊆: a, Random d] - where - a = Var (V "a" (SetR IntR) No) - b = Var (V "b" (SetR IntR) No) - c = Var (V "c" (SetR IntR) No) - d = Var (V "d" (SetR IntR) No) - -test1 :: IO () -test1 = do - putStrLn "testing: Detect cycles" - runCompile @Babbage aCyclicPred - putStrLn "+++ OK, passed 1 test." - --- =================================== -test3 :: Gen Property -test3 = testn Mary "Test 3. PState example" False stoi cs (Assemble pstateT) - where - cs = - [ Sized (ExactSize 10) poolHashUniv - , Sized (Range 1 7) (Dom mockPoolDistr) -- At least 1, but smaller than the poolHashUniv - , Dom mockPoolDistr :=: Dom regPools -- or mockPoolDistr can't sum to (1%1) if its empty - , Dom mockPoolDistr :=: Dom poolDeposits - , Dom mockPoolDistr :⊆: poolHashUniv - , Dom futureRegPools :⊆: poolHashUniv - , Dom retiring :⊆: Dom regPools - , SumsTo (Right (1 % 1000)) (Lit RationalR 1) EQL [SumMap mockPoolDistr] - ] - --- ============================== - -test4 :: IO () -test4 = failn Mary "Test 4. Inconsistent Size" False stoi cs Skip - where - cs = - [ Sized (ExactSize 5) rewards - , SumsTo (Right (Coin 1)) (Lit CoinR (Coin 5)) GTH [SumMap rewards] - ] - -test5 :: IO () -test5 = failn Mary "Test 5. Bad Sum, impossible partition." False stoi cs Skip - where - cs = - [ Sized (ExactSize 5) rewards - , SumsTo (Right (Coin 1)) (Lit CoinR (Coin 4)) EQL [SumMap rewards] - ] - --- =========================================================== --- Example list of Constraints for test4 and test5 - -constraints :: EraGov era => Proof era -> [Pred era] -constraints proof = - [ Sized (ExactSize 10) credsUniv - , Sized (ExactSize 10) poolHashUniv - , Sized (AtLeast 1) mockPoolDistr -- This is summed so it can't be empty. - , Sized (AtLeast 1) regPools -- This has the same domain, so it can't be empty either - , Dom rewards :⊆: credsUniv - , Rng delegations :⊆: poolHashUniv - , Dom poolDeposits :⊆: poolHashUniv - , Dom rewards :=: Dom stakeDeposits - , Dom stakeDeposits :⊆: credsUniv - , Dom delegations :⊆: credsUniv - , Dom delegations :⊆: Dom rewards - , Dom regPools :=: Dom mockPoolDistr - , Dom regPools :=: Dom poolDeposits - , Dom regPools :⊆: poolHashUniv - , Dom retiring :⊆: Dom regPools - , SumsTo (Right (Coin 1)) deposits EQL [SumMap stakeDeposits, SumMap poolDeposits] - , SumsTo (Right (1 % 1000)) (Lit RationalR 1) EQL [SumMap mockPoolDistr] - , SumsTo - (Right (Coin 1)) - totalAda - EQL - [ One utxoCoin - , One treasury - , One reserves - , One fees - , SumMap stakeDeposits - , SumMap poolDeposits - , SumMap rewards - ] - , Random treasury - , Random reserves - , Random fees - , Random utxoCoin - , Random $ pparams proof - ] - --- | Test that we can find a viable variable ordering -test6 :: Bool -> IO () -test6 loud = do - putStrLn "testing: find a viable order of variables" - when loud $ putStrLn "=======================================================" - case runTyped (compile standardOrderInfo $ constraints Shelley) of - Right x -> - if loud - then print x - else putStrLn "+++ OK, passed 1 test." - Left xs -> error (unlines xs) - --- | Test that we can compute a solution -test7 :: Bool -> IO () -test7 loud = do - putStrLn "testing: compute a solution" - when loud $ putStrLn "=======================================================" - let proof = Shelley - when loud $ putStrLn (show $ constraints proof) - graph <- monadTyped $ compile standardOrderInfo $ constraints proof - when loud $ putStrLn (show graph) - result <- generate (genDependGraph loud proof graph) - subst <- case result of - Left msgs -> error (unlines msgs) - Right x -> pure x - when loud $ putStrLn (show subst) - env <- monadTyped $ substToEnv subst emptyEnv - ss <- monadTyped (mapM (makeTest env) $ constraints proof) - let bad = filter (\(_, b, _) -> not b) ss - if not (null bad) - then error ("Some conditions fail\n" ++ unlines (map (\(s, _, _) -> s) bad)) - else putStrLn "+++ OK, passed 1 test." - --- ================================================ - -pstateConstraints :: Era era => [Pred era] -pstateConstraints = - [ Sized (ExactSize 20) poolHashUniv - , -- we have , retiring :⊆: regPools :⊆: poolsUinv AND - -- futureRegPools) :⊆: poolHashUniv - -- We need to adjust the sizes so that these constraints are possible - Sized (AtMost 3) (Dom futureRegPools) -- Small enough that its leaves some slack with poolHashUniv - , Sized (Range 5 6) (Dom retiring) -- Small enough that its leaves some slack with poolHashUniv - , Sized (AtLeast 9) (Dom regPools) -- Large enough that retiring is a strict subset - -- the disjoint set futureRegPools can be as big as three - -- the must set can be as big as 6 - -- so the may set can't be bigger than 6 - -- or we get an error like: Size inconsistency. We need 7. The most we can get from (sub-disj) is 6 - , (Dom regPools) :⊆: poolHashUniv - , (Dom poolDeposits) :⊆: poolHashUniv - , (Dom regPools) :=: (Dom poolDeposits) - , (Dom retiring) :⊆: (Dom regPools) - , (Dom futureRegPools) :⊆: poolHashUniv - , Disjoint (Dom futureRegPools) (Dom retiring) - ] - -test8 :: Gen Property -test8 = - testn - Alonzo - "Test 8. Pstate constraints" - False - -- (stoi{setBeforeSubset = False}) -- Both of these choices work - (stoi {setBeforeSubset = True}) -- But neither works without the Sized constraints - pstateConstraints - (Assemble pstateT) - --- ============================================================== --- Test the summation predicates - -sumPreds :: Reflect era => Proof era -> [Pred era] -sumPreds proof = - [ Random totalAda - , fees :=: (Lit CoinR (Coin 400)) - , deposits :=: (Lit CoinR (Coin 200)) - , SumsTo (Right (Coin 1)) totalAda LTE [One fees, One deposits, One utxoAmt] - , SumsTo (Right (1 % 1000)) (Lit RationalR 1) EQL [ProjMap RationalR individualPoolStakeL poolDistr] - , SumsTo (Right (Coin 1)) utxoAmt GTH [ProjMap CoinR outputCoinL (utxo proof)] - , Sized (AtLeast 1) (utxo proof) -- Any map that is summed, to a nonzero amount, can't be empty. - , Sized (AtLeast 1) poolDistr - ] - where - utxoAmt = Var (V "utxoAmt" CoinR No) - -test9 :: Gen Property -test9 = testn Alonzo "Test 9. Test of summing" False stoi (sumPreds Alonzo) Skip - -test10 :: Gen Property -test10 = - testn - proof - "Test 10. Test conditions EQL LTH LTE GTH GTE" - False - stoi - [ Random x - , Sized (AtLeast 2) y -- We Shouldn't need this, but without it breaks the LTH case ? < 2 can't be solved - , SumsTo (Right (Coin 1)) tsumLTH LTH [One x, One y] - , SumsTo (Right (Coin 1)) tsumLTE LTE [One x, One y] - , SumsTo (Right (Coin 1)) tsumGTH GTH [One x, One y] - , SumsTo (Right (Coin 1)) tsumGTE GTE [One x, One y] - , SumsTo (Right (Coin 1)) tsumEQL EQL [One x, One y] - ] - Skip - where - x = Var (V "x" rep No) - y = Var (V "y" rep No) - tsumLTH = Var (V "tsumLTH" rep No) - tsumLTE = Var (V "tsumLTE" rep No) - tsumGTH = Var (V "tsumGTH" rep No) - tsumGTE = Var (V "tsumGTE" rep No) - tsumEQL = Var (V "tsumEQL" rep No) - rep = CoinR - proof = Mary - -test11 :: Gen Property -test11 = - testn - proof - "Test 11. Instanaeous Sum Tests" - False - stoi - [ Sized (AtLeast 1) treasury - , Random instanTreasury - , Sized (AtLeast 1) instanReserves - , Negate (deltaReserves) :=: deltaTreasury - , SumsTo (Right (Coin 1)) instanReservesSum EQL [SumMap instanReserves] - , SumsTo (Right (DeltaCoin 1)) (Delta instanReservesSum) LTH [One (Delta reserves), One deltaReserves] - , SumsTo (Right (Coin 1)) instanTreasurySum EQL [SumMap instanTreasury] - , SumsTo (Right (DeltaCoin 1)) (Delta instanTreasurySum) LTH [One (Delta treasury), One deltaTreasury] - , Before reserves deltaReserves - ] - Skip - where - proof = Alonzo - --- ===================================================== - -test12 :: Gen Property -test12 = - testn - p - "Test 12. CanFollow tests" - False - stoi - [ Random (pparams p) - , Random (prevProtVer p) - , (protVer p) `CanFollow` (prevProtVer p) - , Component (Right (pparams p)) [field pp (protVer p)] - , Component (Right (prevPParams p)) [field pp (prevProtVer p)] - ] - Skip - where - pp = PParamsR p - p = Shelley - --- ============================================================== --- Test the Component Predicate - -componentPreds :: EraGov era => Proof era -> [Pred era] -componentPreds proof = - [ Random (minFeeA proof) - , Random size - , Sized size llx -- Note since size denotes a range, llx and mm could have different sizes - , Sized size mm - , SumsTo - (Right (Coin 1)) - (Lit CoinR (Coin 100)) - EQL - [ One (minFeeA proof) - , One (minFeeB proof) - ] - , Component (Right (pparams proof)) [field pp (minFeeA proof), field pp (minFeeB proof)] - ] - where - pp = PParamsR proof - llx = Var (V "llx" (SetR IntR) No) - size = Var (V "size" SizeR No) - mm = Var (V "mm" (MapR IntR IntR) No) - -test13 :: Gen Property -test13 = - testn - proof - "Test 13. Component tests" - False - stoi - (componentPreds proof) - Skip - where - proof = Shelley - --- ============================================== - -test14 :: IO () -test14 = - failn - Allegra - "Test 14. Catch unsolveable use of Sized" - False - stoi - [ Sized (ExactSize 6) credsUniv - , Sized (ExactSize 10) rewards - , Dom rewards :=: credsUniv - ] - Skip - --- ============================================== - -test15 :: Gen Property -test15 = - testn - proof - "Test 15. Summation on Natural" - False - stoi - [ Sized (AtLeast 1) (maxTxSize proof) - , Sized (AtLeast 1) (maxBHSize proof) - , -- if both maxTxSize and maxBHSize are Random it may be impossible to solve - -- because both might be 0, and maxBBSize <= 0, is inconsistent. - SumsTo (Right 1) (maxBBSize proof) LTE [One (maxBHSize proof), One (maxTxSize proof)] - , Component - (Right (pparams proof)) - [field pp (maxTxSize proof), field pp (maxBHSize proof), field pp (maxBBSize proof)] - ] - Skip - where - proof = Alonzo - pp = PParamsR proof - --- ============================================================ - -preds16 :: Era era => Proof era -> [Pred era] -preds16 _proof = - [ Sized (ExactSize 6) poolHashUniv - , Sized (Range 1 3) (Dom poolDistr) -- At least 1 but smaller than the poolHashUniv - , Dom poolDistr :⊆: poolHashUniv - , SumsTo (Right (1 % 1000)) (Lit RationalR 1) EQL [ProjMap RationalR individualPoolStakeL poolDistr] - , Sized (Range 1 4) (Dom foox) -- At least 1 but smaller than the poolHashUniv - , Dom foox :⊆: poolHashUniv - , SumsTo (Right (1 % 1000)) (Lit RationalR 1) EQL [SumMap foox] - ] - where - foox = Var (V "foo" (MapR PoolHashR RationalR) No) - -test16 :: Gen Property -test16 = - testn - proof - "Test 11C. Test NonEmpty subset" - False - stoi - (preds16 proof) - Skip - where - proof = Alonzo - --- ============================================== - -univPreds :: Era era => Proof era -> [Pred era] -univPreds p = - [ Sized (ExactSize 15) credsUniv - , Sized (ExactSize 20) poolHashUniv - , Sized (ExactSize 12) genesisHashUniv - , Sized (ExactSize 12) txinUniv - , Dom poolDistr :⊆: poolHashUniv - , Dom regPools :⊆: poolHashUniv - , Dom retiring :⊆: poolHashUniv - , Dom futureRegPools :⊆: poolHashUniv - , Dom poolDeposits :⊆: poolHashUniv - , Dom prevBlocksMade :⊆: poolHashUniv - , Dom currBlocksMade :⊆: poolHashUniv - , Dom markPools :⊆: poolHashUniv - , Dom markPoolDistr :⊆: poolHashUniv - , Dom setPools :⊆: poolHashUniv - , Dom goPools :⊆: poolHashUniv - , Dom stakeDeposits :⊆: credsUniv - , Dom delegations :⊆: credsUniv - , Dom rewards :⊆: credsUniv - , Dom markStake :⊆: credsUniv - , Dom markDelegs :⊆: credsUniv - , Dom setStake :⊆: credsUniv - , Dom setDelegs :⊆: credsUniv - , Dom goStake :⊆: credsUniv - , Dom goDelegs :⊆: credsUniv - , Dom instanReserves :⊆: credsUniv - , Dom instanTreasury :⊆: credsUniv - , Dom (pparamProposals p) :⊆: Dom genesisHashUniv - , Dom (futurePParamProposals p) :⊆: Dom genesisHashUniv - , Dom genDelegs :⊆: Dom genesisHashUniv - , Dom (utxo p) :⊆: txinUniv - ] - -pstatePreds :: Era era => Proof era -> [Pred era] -pstatePreds _p = - [ Sized (AtMost 3) (Dom futureRegPools) -- See comments in test8 why we need these Fixed predicates - , Sized (Range 5 6) (Dom retiring) -- we need retiring :⊆: regPools :⊆: poolsUinv - , Sized (AtLeast 9) (Dom regPools) -- AND we need futureRegPools :⊆: poolHashUniv - , Dom regPools :=: Dom poolDistr - , Dom regPools :=: Dom poolDeposits - , Dom retiring :⊆: Dom regPools - , -- , Dom futureRegPools :⊆: Dom poolDistr -- Don't think we want this - Disjoint (Dom futureRegPools) (Dom retiring) - ] - -dstatePreds :: Era era => Proof era -> [Pred era] -dstatePreds _p = - [ Sized (AtMost 8) rewards -- Small enough that its leaves some slack with credUniv - , Dom rewards :=: Dom stakeDeposits - , Dom delegations :⊆: Dom rewards - , Random currentDRepState - , Random drepDelegation - , Random currentDRepState - , Random committeeState - , Random numDormantEpochs - , Dom rewards :=: Rng ptrs - , -- This implies (Fixed (ExactSize 3) instanReserves) - -- But it also implies that the new introduced variable instanReservesDom also has size 3 - -- , Sized (ExactSize 3) (Dom instanReserves) - -- , Sized (ExactSize 2) (Dom instanTreasury) - - Sized (AtLeast 1) treasury - , Random instanTreasury - , Sized (AtLeast 1) instanReserves - , Negate (deltaReserves) :=: deltaTreasury - , SumsTo (Right (Coin 1)) instanReservesSum EQL [SumMap instanReserves] - , SumsTo (Right (DeltaCoin 1)) (Delta instanReservesSum) LTH [One (Delta reserves), One deltaReserves] - , SumsTo (Right (Coin 1)) instanTreasurySum EQL [SumMap instanTreasury] - , SumsTo (Right (DeltaCoin 1)) (Delta instanTreasurySum) LTH [One (Delta treasury), One deltaTreasury] - , -- , Before reserves deltaReserves -- XXX - -- , Before treasury deltaTreasury -- XXX - ProjS fGenDelegGenKeyHashL GenHashR (Dom futureGenDelegs) :=: Dom genDelegs - ] - -accountstatePreds :: Proof era -> [Pred era] -accountstatePreds _p = [] -- Constraints on reserves and treasury appear in dstatePreds - -utxostatePreds :: Reflect era => Proof era -> [Pred era] -utxostatePreds proof = - [ SumsTo (Right (Coin 1)) utxoCoin EQL [ProjMap CoinR outputCoinL (utxo proof)] - , SumsTo (Right (Coin 1)) deposits EQL [SumMap stakeDeposits, SumMap poolDeposits] - , SumsTo - (Right (Coin 1)) - totalAda - EQL - [One utxoCoin, One treasury, One reserves, One fees, One deposits, SumMap rewards] - , Random fees - , Random (pparamProposals proof) - , Random (futurePParamProposals proof) - ] - -epochstatePreds :: EraGov era => Proof era -> [Pred era] -epochstatePreds proof = - [ Random markStake - , Random markDelegs - , Random markPools - , Random setStake - , Random setDelegs - , Random setPools - , Random goStake - , Random goDelegs - , Random goPools - , Random snapShotFee - , Random (prevPParams proof) - , Random (currPParams proof) - , Random donation - , Sized (AtLeast 1) (maxBHSize proof) - , Sized (AtLeast 1) (maxTxSize proof) - , -- , Random (maxBBSize proof) -- This will cause underflow on Natural - SumsTo - (Right (1 % 1000)) - (Lit RationalR 1) - EQL - [ProjMap RationalR individualPoolStakeL markPoolDistr] - , SumsTo (Right 1) (maxBBSize proof) LTE [One (maxBHSize proof), One (maxTxSize proof)] - , Component - (Right (pparams proof)) - [field pp (maxTxSize proof), field pp (maxBHSize proof), field pp (maxBBSize proof)] - ] - where - pp = PParamsR proof - -newepochstatePreds :: Era era => Proof era -> [Pred era] -newepochstatePreds _proof = - [ Random currentEpoch - , Sized (ExactSize 8) (Dom prevBlocksMade) -- Both prevBlocksMade and prevBlocksMadeDom will have size 8 - , Sized (ExactSize 8) (Dom currBlocksMade) - , SumsTo (Right (1 % 1000)) (Lit RationalR 1) EQL [ProjMap RationalR individualPoolStakeL poolDistr] - ] - -newepochConstraints :: Reflect era => Proof era -> [Pred era] -newepochConstraints pr = - univPreds pr - ++ pstatePreds pr - ++ dstatePreds pr - ++ utxostatePreds pr - ++ accountstatePreds pr - ++ epochstatePreds pr - ++ newepochstatePreds pr - -test17 :: Gen Property -test17 = - testn - proof - "Test 17. Full NewEpochState" - False - (stoi {sumBeforeParts = False}) - (newepochConstraints proof) - (Assemble (newEpochStateT proof)) - where - proof = Alonzo - --- ========================================================== --- Tests of the Term projection function ProjS - -projPreds1 :: Era era => Proof era -> [Pred era] -projPreds1 _proof = - [ Sized (ExactSize 4) futureGenDelegs - , ProjS fGenDelegGenKeyHashL GenHashR (Dom futureGenDelegs) :=: Dom genDelegs - ] - -projPreds2 :: Era era => Proof era -> [Pred era] -projPreds2 _proof = - [ Dom genDelegs :⊆: Dom genesisHashUniv - , Sized (ExactSize 12) futGDUniv - , Sized (ExactSize 6) (Dom genesisHashUniv) - , ProjS fGenDelegGenKeyHashL GenHashR (Dom futureGenDelegs) :=: Dom genDelegs - ] - where - futGDUniv = (Var (V "futGDUniv" (SetR FutureGenDelegR) No)) - -test18a :: Gen Property -test18a = testn proof "Test 18a. Projection test" False stoi (projPreds1 proof) Skip - where - proof = Alonzo - -test18b :: Gen Property -test18b = - testn - proof - "Test 18b. Projection test with subset" - False - stoi - (projPreds2 proof) - (Assemble (Constr "Pair" (,) ^$ futureGenDelegs ^$ genDelegs)) - where - proof = Alonzo - --- =============================================== --- test of projOnDom - -help19 :: - forall era. - Era era => - Proof era -> - Gen (Map (FutureGenDeleg (EraCrypto era)) (GenDelegPair (EraCrypto era))) -help19 _proof = do - setA <- genRep @era (SetR GenHashR) - ans <- projOnDom @era setA (fGenDelegGenKeyHashL) FutureGenDelegR GenDelegPairR - pure ans - -test19 :: IO () -test19 = do - putStrLn "testing: Test 19. test of projOnDom function" - ans <- generate (help19 Mary) - putStrLn (synopsis (MapR (FutureGenDelegR @TT) GenDelegPairR) ans) -- (ppMap pcFutureGenDeleg pcGenDelegPair ans)) - putStrLn "+++ OK, passed 1 test" - --- =================================================== - -preds20 :: Era era => Proof era -> [Pred era] -preds20 proof = - [ Sized (ExactSize 10) intUniv - , Sized (AtMost 6) rewardsx - , Dom rewardsx :⊆: intUniv - , Dom rewardsx :=: Rng ptrsx - ] - where - rewardsx = Var (pV proof "rewards" (MapR IntR Word64R) No) - ptrsx = Var (pV proof "ptrs" (MapR PtrR IntR) No) - intUniv = Var (pV proof "intUniv" (SetR IntR) No) - -test20 :: Gen Property -test20 = - testn - proof - "Test 20. Test ptr rewards iso" - False - stoi - (preds20 proof) - Skip - where - proof = Alonzo - -test21 :: Int -> IO Bool -test21 seed = do - let proof = Babbage - w = Var (V "w" (ListR IntR) No) - a = Var (V "a" IntR No) - b = Var (V "b" IntR No) - c = Var (V "c" IntR No) - pred21 = - Oneof - w - [ - ( 1 - , Invert "three" (typeRep @[Int]) (\x y z -> [x, y, z]) - :$ Partial a (\case [x, _, _] -> Just x; _ -> Nothing) - :$ Partial b (\case [_, y, _] -> Just y; _ -> Nothing) - :$ Partial c (\case [_, _, z] -> Just z; _ -> Nothing) - , [Random a, Random b, Random c] - ) - , - ( 1 - , Invert "two" (typeRep @[Int]) (\x y -> [x, y]) - :$ Partial a (\case [x, _] -> Just x; _ -> Nothing) - :$ Partial b (\case [_, y] -> Just y; _ -> Nothing) - , [Random a, Random b] - ) - , - ( 1 - , Invert "one" (typeRep @[Int]) (\x -> [x]) - :$ Partial a (\case [x] -> Just x; _ -> Nothing) - , [Random a] - ) - ] - env <- - generateWithSeed - seed - ( pure emptySubst - >>= toolChainSub proof standardOrderInfo [pred21] - >>= (\subst -> monadTyped (substToEnv subst emptyEnv)) - ) - print env - monadTyped $ runPred env pred21 - --- =================================================== --- run all the tests - -testAll :: IO () -testAll = defaultMain allExampleTests - -allExampleTests :: TestTree -allExampleTests = - testGroup - "Example tests" - [ testCase "test 1A. Cyclic preds detected" $ - case runTyped (compile @Babbage standardOrderInfo cyclicPred) of - Right _ -> assertFailure ("Cyclic preds Not detected.") - Left _ -> pure () - , testCase "test 1B. ACyclic preds solved" $ - case runTyped (compile @Babbage standardOrderInfo aCyclicPred) of - Right _ -> pure () - Left xs -> assertFailure (unlines xs) - , testIO - "test 19 Test of projOnDom function" - (generate (help19 Mary)) - , testIO "Test 4. Inconsistent Size" test4 - , testIO "Test 5. Bad Sum, impossible partition." test5 - , testIO "Test6. Find a viable order of variables" (test6 False) - , testIO "Test7. Compute a solution" (test7 False) - , testIO "Test 14 Catch unsolveable use of Sized" test14 - , testPropMax 30 "Test 3. PState example" test3 - , testPropMax 30 "Test 8. Pstate constraints" test8 - , testPropMax 30 "Test 9. Test of summing" test9 - , testPropMax 30 "Test 10. Test conditions EQL LTH LTE GTH GTE" test10 - , testPropMax 100 "Test 11. Instanaeous Sum Tests" test11 - , testPropMax 30 "Test 12. CanFollow tests" test12 - , testPropMax 30 "Test 13. Component tests" test13 - , testPropMax 30 "Test 15. Summation on Natural" test15 - , testPropMax 30 "Test 16. Test NonEmpty subset" test16 - , testPropMax 30 "Test 17. Full NewEpochState" (fmap (withMaxSuccess 30) test17) - , testPropMax 30 "Test 18a. Projection test" test18a - , testPropMax 30 "Test 18b. Projection test" test18b - , testPropMax 30 "Test 20. ptr & rewards are inverses" test20 - , testPropMax 30 "Constraint soundness" $ within 1000000 $ prop_soundness - , testProperty "Shrinking soundness" $ withMaxSuccess 30 $ prop_shrinking - , testProperty "NewEpochState and Tx generation" $ do - (st, tx, _) <- genTxAndNewEpoch def $ Conway - (st, tx) `deepseq` pure True - , testPreds "ListWhereTest" Conway listWherePreds - ] - --- ============================== - --- | Use to generate a solution to 'preds', test that the --- solution meets the 'preds', and puts you in the Repl to --- inspect the value of each variable solved for. --- Companion function to 'testPreds' -demoPreds :: Reflect era => Proof era -> [Pred era] -> IO () -demoPreds proof preds = do - let tryPred env p = (p, errorTyped (runPred env p)) - env <- - generate - ( pure emptySubst - >>= toolChainSub proof standardOrderInfo preds - >>= (\subst -> monadTyped $ substToEnv subst emptyEnv) - ) - let pairs = map (tryPred env) preds - mapM_ (\(p, b) -> putStrLn (show p ++ " = " ++ show b)) pairs - modeRepl Interactive proof env "" - --- | Use this to generate a solution to 'preds', and make a TestTree --- that tests the solution meets the 'preds'. --- Companion function to 'demoPreds' -testPreds :: Reflect era => String -> Proof era -> [Pred era] -> TestTree -testPreds name proof preds = do - let tryPred env p = (p, errorTyped (runPred env p)) - testProperty name $ do - env <- - ( pure emptySubst - >>= toolChainSub proof standardOrderInfo preds - >>= (\subst -> monadTyped $ substToEnv subst emptyEnv) - ) - let pairs = map (tryPred env) preds - pure (property (and (map snd pairs))) - -listWherePreds :: [Pred (ConwayEra StandardCrypto)] -listWherePreds = - [ Sized (ExactSize 10) credsUniv - , Sized (ExactSize 10) voteUniv - , ListWhere - (Range 2 4) - ans - (pairT CredR VCredR) - [Member (Right (pair1 CredR)) credsUniv, Member (Right (pair2 VCredR)) voteUniv] - ] - where - ans = Var (V "ans" (ListR (PairR CredR VCredR)) No) - -mainListWhere :: IO () -mainListWhere = demoPreds Conway listWherePreds - -govPreds :: [Pred (ConwayEra StandardCrypto)] -govPreds = - [ ListWhere - (Range 2 4) - currGovStates - govActionStateTarget - [ Random hotCommitteeCredsUniv - , Random voteUniv - , Random poolHashUniv - , Lit CoinR (Coin 13) :=: depositV - , Lit EpochR (EpochNo 3) :=: currentEpoch - , Random idV - , Subset (Dom committeeVotesV) hotCommitteeCredsUniv - , Subset (Dom drepVotesV) voteUniv - , Subset (Dom stakePoolVotesV) poolHashUniv - , proposalDeposits :=: depositV - , Random returnAddrV - , Random actionV - , currentEpoch :=: proposedInV - , Random expiresAfterV - , Sized (Range 0 3) childrenV - ] - ] - -mainGov :: IO () -mainGov = demoPreds Conway govPreds diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Lenses.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Lenses.hs deleted file mode 100644 index de2bc7665ca..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Lenses.hs +++ /dev/null @@ -1,226 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE RankNTypes #-} - --- | Define Lenses that facilitate accessing the types in the Var Model. --- Note the types in the Model, are often wrapped in a newtype in the real state, --- or they are embedded in something like UMap to save space. So we need interesting --- Lenses to make this possible. --- Many other (more standard) Lenses are defined in Cardano.Ledger.Shelley.LedgerState -module Test.Cardano.Ledger.Constrained.Lenses where - -import Cardano.Ledger.BaseTypes (SlotNo) -import Cardano.Ledger.Coin (Coin (..), CompactForm, DeltaCoin) -import Cardano.Ledger.Compactible (Compactible (fromCompact)) -import Cardano.Ledger.Credential (Credential, Ptr) -import Cardano.Ledger.DRep (DRep) -import Cardano.Ledger.Era (Era (EraCrypto)) -import Cardano.Ledger.Keys (GenDelegPair (..), GenDelegs (..), KeyHash, KeyRole (..)) -import Cardano.Ledger.Shelley.LedgerState hiding (deltaReserves, deltaTreasury, rewards) -import qualified Cardano.Ledger.Shelley.LedgerState as LS (deltaReserves, deltaTreasury) -import Cardano.Ledger.Shelley.PoolRank (Likelihood (..), LogWeight (..), NonMyopic (..)) -import Cardano.Ledger.TxIn (TxIn (..)) -import Cardano.Ledger.UMap ( - RDPair (..), - UMap (..), - compactCoinOrError, - dRepMap, - depositMap, - invPtrMap, - rewardMap, - sPoolMap, - unify, - ) -import qualified Cardano.Ledger.UMap as UM -import Cardano.Ledger.UTxO (UTxO (..)) -import Data.Foldable (Foldable (..)) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Maybe.Strict (StrictMaybe (..)) -import Data.Sequence.Strict (StrictSeq, fromList) -import Data.Set (Set) -import Lens.Micro -import Test.Cardano.Ledger.Constrained.Classes (TxOutF (..), liftUTxO) -import Test.Cardano.Ledger.Generic.Proof (Proof) - --- ==================================================== --- Lenses -{- A lens for a record field name 'mm' looks like this. - Of course the types will change. This example makes a lens - for an Int field inside of NewEpoch state - -mmL :: Lens' (NewEpochState era) Int -mmL = lens mm (\ds u -> ds { mm = u }) - --} - --- =================================== --- InstantaneousRewards - -iRReservesL :: Lens' (InstantaneousRewards c) (Map (Credential 'Staking c) Coin) -iRReservesL = lens iRReserves (\ds u -> ds {iRReserves = u}) - -iRTreasuryL :: Lens' (InstantaneousRewards c) (Map (Credential 'Staking c) Coin) -iRTreasuryL = lens iRTreasury (\ds u -> ds {iRTreasury = u}) - -deltaReservesL :: Lens' (InstantaneousRewards c) DeltaCoin -deltaReservesL = lens LS.deltaReserves (\ds u -> ds {LS.deltaReserves = u}) - -deltaTreasuryL :: Lens' (InstantaneousRewards c) DeltaCoin -deltaTreasuryL = lens LS.deltaTreasury (\ds u -> ds {LS.deltaTreasury = u}) - -unGenDelegsL :: Lens' (GenDelegs c) (Map (KeyHash 'Genesis c) (GenDelegPair c)) -unGenDelegsL = lens unGenDelegs (\(GenDelegs _) new -> GenDelegs new) - --- Lenses for (FutureGenDeleg c) -fGenDelegSlotL :: Lens' (FutureGenDeleg c) SlotNo -fGenDelegSlotL = lens fGenDelegSlot (\ds u -> ds {fGenDelegSlot = u}) - -fGenDelegGenKeyHashL :: Lens' (FutureGenDeleg c) (KeyHash 'Genesis c) -fGenDelegGenKeyHashL = lens fGenDelegGenKeyHash (\ds u -> ds {fGenDelegGenKeyHash = u}) - --- IncrementalStake - -isCredMapL :: Lens' (IncrementalStake c) (Map (Credential 'Staking c) Coin) -isCredMapL = lens (fmap fromCompact . credMap) (\ds u -> ds {credMap = fmap compactCoinOrError u}) - -isPtrMapL :: Lens' (IncrementalStake c) (Map Ptr Coin) -isPtrMapL = lens (fmap fromCompact . ptrMap) (\ds u -> ds {ptrMap = fmap compactCoinOrError u}) - --- =============================================== --- NonMyopic - -nmLikelihoodsL :: Lens' (NonMyopic c) (Map (KeyHash 'StakePool c) [Float]) -nmLikelihoodsL = - lens - (fmap fromLikelihood . likelihoodsNM) - (\ds u -> ds {likelihoodsNM = fmap toLikelihood u}) - where - fromLikelihood (Likelihood ls) = fmap unLogWeight $ toList ls - toLikelihood = Likelihood . fromList . fmap LogWeight - -nmRewardPotL :: Lens' (NonMyopic c) Coin -nmRewardPotL = lens rewardPotNM (\ds u -> ds {rewardPotNM = u}) - --- ====================================================== --- (Virtual) UMap - -spRewL :: Lens' (Split c) (Map (Credential 'Staking c) Coin) -spRewL = lens spRew (\ds u -> ds {spRew = u}) - -spDepL :: Lens' (Split c) (Map (Credential 'Staking c) Coin) -spDepL = lens spDep (\ds u -> ds {spDep = u}) - -spDelL :: Lens' (Split c) (Map (Credential 'Staking c) (KeyHash 'StakePool c)) -spDelL = lens spDel (\ds u -> ds {spDel = u}) - -spRevPtrL :: Lens' (Split c) (Map (Credential 'Staking c) (Set Ptr)) -spRevPtrL = lens spRevPtr (\ds u -> ds {spRevPtr = u}) - -spPtrL :: Lens' (Split c) (Map Ptr (Credential 'Staking c)) -spPtrL = lens spPtr (\ds u -> ds {spPtr = u}) - -spDRepL :: Lens' (Split c) (Map (Credential 'Staking c) (DRep c)) -spDRepL = lens spDRep (\ds u -> ds {spDRep = u}) - --- ======================================================================================== --- Mapping the abstract names: rewards, delegations, ptrs, credDeposits through the UMap - --- | Abstract view of the UMap -data Split c = Split - { spRew :: Map (Credential 'Staking c) Coin - , spDep :: Map (Credential 'Staking c) Coin - , spDel :: Map (Credential 'Staking c) (KeyHash 'StakePool c) - , spDRep :: Map (Credential 'Staking c) (DRep c) - , spRevPtr :: Map (Credential 'Staking c) (Set Ptr) - , spPtr :: Map Ptr (Credential 'Staking c) - } - --- | The abstraction function, from concrete (UMap) to abstract (Split) -splitUMap :: UMap c -> Split c -splitUMap um = - Split (rewardMap um) (depositMap um) (sPoolMap um) (dRepMap um) (invPtrMap um) (UM.ptrMap um) - --- | The concretization function from abstract (Split) to concrete (UMap) -unSplitUMap :: Split c -> UMap c -unSplitUMap (Split rew dep deleg drep _revptr ptr) = unify (merge rew dep) ptr deleg drep - where - merge x y | Map.keysSet x /= Map.keysSet y = error "different domains" - merge x y = Map.intersectionWith rdpair x y - rdpair x y = RDPair (compactCoinOrError x) (compactCoinOrError y) - --- Lenses that reach through the concrete (UMap) using abstract inputs - -rewardsUMapL :: Lens' (UMap c) (Map (Credential 'Staking c) Coin) -rewardsUMapL = lens rewardMap delta - where - delta um new = unSplitUMap (split {spRew = new}) - where - split = splitUMap um - -stakeDepositsUMapL :: Lens' (UMap c) (Map (Credential 'Staking c) Coin) -stakeDepositsUMapL = lens depositMap delta - where - delta um new = unSplitUMap (split {spDep = new}) - where - split = splitUMap um - -ptrsUMapL :: Lens' (UMap c) (Map Ptr (Credential 'Staking c)) -ptrsUMapL = lens UM.ptrMap (\(UMap x _) p -> UMap x p) - -delegationsUMapL :: Lens' (UMap c) (Map (Credential 'Staking c) (KeyHash 'StakePool c)) -delegationsUMapL = lens sPoolMap delta - where - delta um new = unSplitUMap (split {spDel = new}) - where - split = splitUMap um - -drepUMapL :: Lens' (UMap c) (Map (Credential 'Staking c) (DRep c)) -drepUMapL = lens dRepMap delta - where - delta um new = unSplitUMap ((splitUMap um) {spDRep = new}) - --- Conversion Lenses - -strictMaybeToMaybeL :: Lens' (StrictMaybe x) (Maybe x) -strictMaybeToMaybeL = lens ff gg - where - ff (SJust x) = Just x - ff SNothing = Nothing - gg _ (Just x) = SJust x - gg _ Nothing = SNothing - -idLens :: Lens' a a -idLens = lens (\x -> x) (\_ y -> y) - -strictSeqListL :: Lens' (StrictSeq a) [a] -strictSeqListL = lens toList (\_ y -> fromList y) - -mapCompactFormCoinL :: Lens' (Map a (CompactForm Coin)) (Map a Coin) -mapCompactFormCoinL = lens (Map.map fromCompact) (\_ y -> Map.map compactCoinOrError y) - -pairL :: Lens' x y -> Lens' a b -> Lens' (x, a) (y, b) -pairL xy ab = lens getter setter - where - getter (x, a) = (x ^. xy, a ^. ab) - setter (x, a) (y, b) = (x & xy .~ y, a & ab .~ b) - --- | Lens to convert from the abstract type UtxO type of the Model, to the concrete UTxO type. --- The mode uses the type family abstraction TxOutF, and does not wrap the map --- with the UtxO constructor. Note the getter is 'liftUTxO' from Test.Cardano.Ledger.Constrained.Classes --- liftUTxO :: Map (TxIn (EraCrypto era)) (TxOutF era) -> UTxO era -utxoFL :: Proof era -> Lens' (Map (TxIn (EraCrypto era)) (TxOutF era)) (UTxO era) -utxoFL p = lens liftUTxO (\_ (UTxO new) -> (Map.map (TxOutF p) new)) - --- ====================================================================== --- Don't tell me that these have impementations in Lens.Micro( _1, _2 ) --- The problem with this, is that it needs special pragmas to work, and without --- these pragmas, causes ghci to hang. --- In addition there is NO documentation (only examples in Lens.Micro) --- and who remembers this any way? --- Way easier to remember these because they use the Cardano.Ledger Lens naming conventions - -fstL :: Lens' (a, b) a -fstL = lens fst (\(_, b) a -> (a, b)) - -sndL :: Lens' (a, b) b -sndL = lens snd (\(a, _) b -> (a, b)) diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Monad.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Monad.hs deleted file mode 100644 index b3e293a4ac6..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Monad.hs +++ /dev/null @@ -1,86 +0,0 @@ -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE TypeOperators #-} - -module Test.Cardano.Ledger.Constrained.Monad ( - Typed (..), - LiftT (..), - failT, - explain, - mergeExplain, - HasConstraint (..), - Id (..), - errorTyped, - monadTyped, - requireAll, - generateWithSeed, -) where - -import GHC.Stack -import Test.QuickCheck.Gen -import Test.QuickCheck.Random - -generateWithSeed :: Int -> Gen a -> IO a -generateWithSeed n (MkGen g) = - do - let r = mkQCGen n - return (g r 30) - --- ================================================= - -newtype Typed x = Typed {runTyped :: Either [String] x} - deriving (Functor, Applicative, Monad) - -instance MonadFail Typed where - fail err = failT [err] - -failT :: [String] -> Typed a -failT ss = Typed (Left ss) - -class LiftT x where - liftT :: x -> Typed x - dropT :: Typed x -> x - --- ================================== - -explain :: String -> Typed a -> Typed a -explain s (Typed (Left ss)) = Typed (Left (s : ss)) -explain _ (Typed (Right x)) = Typed (Right x) - -mergeExplain :: (Monoid x, LiftT x) => String -> x -> x -> x -mergeExplain message x y = dropT (explain message (liftT (x <> y))) - -requireAll :: [(Bool, [String])] -> Typed a -> Typed a -requireAll xs answer = if null bad then answer else failT (concat msgs) - where - bad = filter (not . fst) xs - msgs = map snd bad - --- ====================================================== --- converting from a (Typed t) to something else - --- The projection from (newtype Typed t = Typed {runTyped :: Either [String] x}) --- runTyped :: Typed t => Either [String] x - --- | Pushes the (Left msgs) into a call to 'error' -errorTyped :: HasCallStack => Typed t -> t -errorTyped t = case runTyped t of - Right x -> x - Left xs -> error (unlines ("\nSolver-time error" : xs)) - --- | Pushes the (Left msgs) into a call to 'error', then injects into a Monad -monadTyped :: (HasCallStack, Monad m) => Typed t -> m t -monadTyped t = pure $! errorTyped t - --- ================================================================ --- Computing runtime evidence of a constraint. - -newtype Id x = Id x - --- | runTime evidence that the index 'i' of an indexed type '(s i)' --- is constrained by the class 'c'. If one has an un-indexed type --- 't' one can always use (Id t) instead. Eg --- With (Id x) <- hasOrd repT (Id t) -data HasConstraint c t where - With :: c t => s t -> HasConstraint c (s t) diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Pairing.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Pairing.hs deleted file mode 100644 index 88a5cd3e462..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Pairing.hs +++ /dev/null @@ -1,51 +0,0 @@ --- | Szudzik's Elegant Pairing Function --- --- http://szudzik.com/ElegantPairing.pdf --- --- For all non-negative integers: --- --- @ --- uncurry pair . unpair = id --- unpair . uncurry pair = id --- @ --- Addapted from https://gist.github.com/klntsky/7026018c3341e6aa17bc237746ee0256#file-pairing-hs --- We use Int rather than Integer, and need accuracy in the range [0..10000] -module Test.Cardano.Ledger.Constrained.Pairing (pair, unpair) where - --- | Pack two integers into one. -pair :: Int -> Int -> Int -pair y x = - if y > x - then y * y + x - else x * x + x + y - --- | Unpack one integer into two. -unpair :: Int -> (Int, Int) -unpair z = - if l < q - then (q, l) - else (l - q, q) - where - q = squareRoot z - l = z - q ^ two - --- Adapted from https://wiki.haskell.org/Generic_number_type -squareRoot :: Int -> Int -squareRoot n | n < 0 = error ("squareRoot works only for positive Int: " ++ show n) -squareRoot 0 = 0 -squareRoot 1 = 1 -squareRoot n = - let twopows = iterate (^ two) two - (lowerRoot, lowerN) = - last $ takeWhile ((n >=) . snd) $ zip (1 : twopows) twopows - newtonStep x = div (x + div n x) two - iters = iterate newtonStep (squareRoot (div n lowerN) * lowerRoot) - isRoot r = r ^ two <= n && n < (r + 1) ^ two - in case dropWhile (not . isRoot) iters of - (r : _) -> r - [] -> error ("Not possible, every positive Int has an Integral square root: " ++ show n) - --- Defeat type defaulting without specifying the type every time. -two :: Int -two = 2 -{-# INLINE two #-} diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/CertState.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/CertState.hs deleted file mode 100644 index 38273e0602c..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/CertState.hs +++ /dev/null @@ -1,371 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Constrained.Preds.CertState where - -import Cardano.Ledger.BaseTypes (EpochNo (..)) -import Cardano.Ledger.Coin (Coin (..), DeltaCoin (..)) -import Cardano.Ledger.DRep (drepAnchorL, drepDepositL, drepExpiryL) -import Cardano.Ledger.Era (Era, EraCrypto) -import Cardano.Ledger.Keys (GenDelegPair (..), KeyHash, KeyRole (..), asWitness, coerceKeyRole) -import Cardano.Ledger.Shelley.LedgerState (availableAfterMIR) -import Cardano.Ledger.Shelley.TxCert (MIRPot (..)) -import Control.Monad (when) -import Data.Default.Class (Default (def)) -import Lens.Micro -import Test.Cardano.Ledger.Constrained.Ast -import Test.Cardano.Ledger.Constrained.Classes (OrdCond (..)) -import Test.Cardano.Ledger.Constrained.Env -import Test.Cardano.Ledger.Constrained.Lenses (fGenDelegGenKeyHashL, strictMaybeToMaybeL) -import Test.Cardano.Ledger.Constrained.Monad (generateWithSeed, monadTyped) -import Test.Cardano.Ledger.Constrained.Preds.PParams (pParamsStage) -import Test.Cardano.Ledger.Constrained.Preds.Repl (ReplMode (..), modeRepl) -import Test.Cardano.Ledger.Constrained.Preds.Universes hiding (demo, demoTest, main) -import Test.Cardano.Ledger.Constrained.Rewrite (standardOrderInfo) -import Test.Cardano.Ledger.Constrained.Size (Size (..), genFromSize) -import Test.Cardano.Ledger.Constrained.Solver -import Test.Cardano.Ledger.Constrained.TypeRep -import Test.Cardano.Ledger.Constrained.Utils (testIO) -import Test.Cardano.Ledger.Constrained.Vars -import Test.Cardano.Ledger.Generic.Functions (protocolVersion) -import Test.Cardano.Ledger.Generic.PrettyCore ( - pcCertState, - pcDState, - pcPState, - pcVState, - ) -import Test.Cardano.Ledger.Generic.Proof -import Test.QuickCheck -import Test.Tasty (TestTree, defaultMain, testGroup) - --- ========================================================= - --- | A good spread of Coins with at least one (Coin 0) -manyCoin :: Size -> Gen [Coin] -manyCoin size = do - n <- genFromSize size - (Coin 0 :) <$> vectorOf (n - 1) variedCoin - --- ====================================== - -vstatePreds :: Era era => Proof era -> [Pred era] -vstatePreds p = vstateGenPreds p ++ vstateCheckPreds p - -vstateGenPreds :: forall era. Era era => Proof era -> [Pred era] -vstateGenPreds p = case whichPParams p of - PParamsConwayToConway -> - [ MetaSize (SzRng 5 15) currentDRepStateSize - , Sized currentDRepStateSize currentDRepState - , Sized (Range 5 7) (Dom committeeState) - , Subset (Dom currentDRepState) voteUniv - , Subset (Dom committeeState) voteCredUniv - , Sized (Range 0 5) numDormantEpochs - , ForEach - currentDRepStateSize - drepStateList - (Pat DRepStateR [Arg expire, Arg anchor, Arg deposit]) - [ Random (fieldToTerm anchor) - , GenFrom - (fieldToTerm expire) - (Constr "+200To500" (\(EpochNo n) -> EpochNo <$> choose (n + 200, n + 500)) ^$ currentEpoch) - , drepDeposit p :=: (fieldToTerm deposit) - ] - , drepStateList :=: (Elems currentDRepState) - , SumsTo (Left (Coin 1)) totalDRepDeposit EQL [ProjMap CoinR drepDepositL currentDRepState] - ] - _ -> - [ Sized (Range 0 0) currentDRepState - , Sized (Range 0 0) committeeState - , Lit EpochR (EpochNo 0) :=: numDormantEpochs - , Random currentDRepState - ] - where - drepStateList = Var $ pV p "drepStateList" (ListR DRepStateR) No - deposit = Field @era "deposit" CoinR DRepStateR drepDepositL - anchor = Field @era "anchor" (MaybeR AnchorR) DRepStateR (drepAnchorL . strictMaybeToMaybeL) - expire = Field @era "expire" EpochR DRepStateR drepExpiryL - totalDRepDeposit = Var $ pV p "totalDRepDeposit" CoinR No - currentDRepStateSize = Var $ pV p "currentDRepStateSize" SizeR No - -vstateCheckPreds :: Proof era -> [Pred era] -vstateCheckPreds _p = [] - -vstateStage :: - Reflect era => - Proof era -> - Subst era -> - Gen (Subst era) -vstateStage proof = toolChainSub proof standardOrderInfo (vstatePreds proof) - -demoV :: ReplMode -> IO () -demoV mode = do - let proof = Conway - env <- - generate - ( pure emptySubst - >>= pParamsStage proof - >>= universeStage def proof - >>= vstateStage proof - >>= (\subst -> monadTyped $ substToEnv subst emptyEnv) - ) - vstate <- monadTyped $ runTarget env vstateT - when (mode == Interactive) $ putStrLn (show (pcVState vstate)) - modeRepl mode proof env "" - -demoTestV :: TestTree -demoTestV = testIO "Testing VState Stage" (demoV CI) - -mainV :: IO () -mainV = defaultMain $ testIO "Testing VState Stage" (demoV Interactive) - --- ========================================== - -pstateNames :: [String] -pstateNames = - [ "regPools" - , "futureRegPools" - , "retiring" - , "poolDeposits" - ] - -pstatePreds :: Era era => Proof era -> [Pred era] -pstatePreds p = pstateGenPreds p ++ pstateCheckPreds p - -pstateGenPreds :: Era era => Proof era -> [Pred era] -pstateGenPreds _ = - [ -- These Sized constraints are needd to be ensure that regPools is bigger than retiring - Sized (ExactSize 5) retiring - , Sized (AtLeast 20) regPools - , Subset (Dom regPools) poolHashUniv - , Sized (Range 10 15) futureRegPools - , Subset (Dom futureRegPools) poolHashUniv - , Subset (Dom poolDeposits) poolHashUniv - , Choose - (ExactSize 3) - epochs - [ (1, Constr "id" id ^$ e, [CanFollow e currentEpoch]) - , (1, Constr "(+1)" (+ 1) ^$ e, [CanFollow e currentEpoch]) - , (1, Constr "(+3)" (+ 3) ^$ e, [CanFollow e currentEpoch]) - , (1, Constr "(+5)" (+ 5) ^$ e, [CanFollow e currentEpoch]) - ] - ] - where - e = var "e" EpochR - epochs = var "epochs" (ListR EpochR) - -pstateCheckPreds :: Era era => Proof era -> [Pred era] -pstateCheckPreds _ = - [ Subset (Dom retiring) (Dom regPools) -- Note regPools must be bigger than retiring - , Dom regPools :=: Dom poolDeposits - , NotMember (Lit CoinR (Coin 0)) (Rng poolDeposits) - , Disjoint (Dom regPools) (Dom futureRegPools) - ] - -pstateStage :: - Reflect era => - Proof era -> - Subst era -> - Gen (Subst era) -pstateStage proof = toolChainSub proof standardOrderInfo (pstatePreds proof) - -demoP :: ReplMode -> IO () -demoP mode = do - let proof = Babbage - env <- - generate - ( pure emptySubst - >>= universeStage def proof - >>= pstateStage proof - >>= (\subst -> monadTyped $ substToEnv subst emptyEnv) - ) - pstate <- monadTyped $ runTarget env pstateT - when (mode == Interactive) $ do - putStrLn (show (pcPState pstate)) - modeRepl mode proof env "" - -demoTestP :: TestTree -demoTestP = testIO "Testing PState Stage" (demoP CI) - -mainP :: IO () -mainP = defaultMain $ testIO "Testing PState Stage" (demoP Interactive) - --- ================================================= --- A Field used to compute 'genDelegs' - --- | A field that selects the 'genDelegKeyHash' field from a 'GenDelegPair' --- It also silently casts the 'KeyRole. from 'Genesis to 'Witness -gdKeyHashField :: - Era era => - Field - era - (GenDelegPair (EraCrypto era)) - (KeyHash 'Witness (EraCrypto era)) -gdKeyHashField = - Field - "gdKeyHash1" - WitHashR - GenDelegPairR - ( lens - (\(GenDelegPair x _) -> asWitness x) - (\(GenDelegPair _ y) x -> GenDelegPair (coerceKeyRole x) y) - ) - --- | A Var Term that pairs the Field 'gdKeyHashField' -gdKeyHash :: Era era => Term era (KeyHash 'Witness (EraCrypto era)) -gdKeyHash = fieldToTerm gdKeyHashField - -gdkeyL :: Lens' (GenDelegPair c) (KeyHash 'Witness c) -gdkeyL = - ( lens - (\(GenDelegPair x _) -> asWitness x) - (\(GenDelegPair _ y) x -> GenDelegPair (coerceKeyRole x) y) - ) - --- ============================================================================ - -certStatePreds :: Era era => Proof era -> [Pred era] -certStatePreds p = certStateGenPreds p ++ certStateCheckPreds p - -certStateGenPreds :: Era era => Proof era -> [Pred era] -certStateGenPreds p = - [ MetaSize (SzExact (fromIntegral (quorumConstant + 2))) genDelegSize - , -- , GenFrom quorum (constTarget (pure (fromIntegral quorumConstant))) - - -- These really belong in the AccountState in the EpochState, But they are the only pieces of the EpochState we use. - -- and are necessary to compute the instantaneous rewards, which are in the DState. - GenFrom treasury (constTarget (Coin <$> choose (1000, 4000))) - , GenFrom reserves (constTarget (Coin <$> choose (4000, 5000))) - , GenFrom deltaTreasury (constTarget (DeltaCoin <$> choose (-200, 400))) - , Negate (deltaReserves) :=: deltaTreasury -- Means deltaReserves ranges from (-400,200) - , -- 'rewards' needs to be small enough that it leaves some slack with - -- credUniv (size about 30), but it also cannot be empty - MetaSize (SzRng 8 15) rewardSize - , Sized rewardSize rewards - , -- If 'instanReserves' or 'instanTreasury' have size zero, the SumsTo can't be solved - Sized (AtLeast 1) instanReserves - , Sized (AtLeast 1) instanTreasury - , Dom rewards :⊆: credsUniv - , GenFrom rewardRange (Constr "many" manyCoin ^$ rewardSize) - , rewardRange :=: Elems rewards - , NotMember (Lit CoinR (Coin 0)) (Rng stakeDeposits) - , Dom rewards :=: Dom stakeDeposits - , Sized (AtMost 8) delegations - , Dom delegations :⊆: Dom rewards - , Dom delegations :⊆: Dom incrementalStake - , Rng delegations :⊆: Dom regPools - , if protocolVersion p >= protocolVersion Conway - then Sized (ExactSize 0) ptrs - else Dom rewards :=: Rng ptrs - , Dom drepDelegation :⊆: credsUniv - , Rng drepDelegation :⊆: drepUniv - , -- Preds to compute genDelegs - -- First, a set of GenDelegPairs, where no keyHash is repeated. - Sized genDelegSize gdKeyHashSet - , ProjS gdkeyL WitHashR gdKeyHashSet `Subset` (Dom keymapUniv) - , gdKeyHashList :<-: setToListTarget gdKeyHashSet - , Sized genDelegSize genDelegs - , gdKeyHashList :=: Elems genDelegs - , Dom genDelegs :⊆: Dom genesisHashUniv - , Dom instanReserves :⊆: credsUniv - , SumsTo (Left (Coin 1)) instanReservesSum EQL [SumMap instanReserves] - , SumsTo - (Right (DeltaCoin 1)) - (Delta instanReservesSum) - LTH - [One (Delta reserves), One deltaReserves, One (Lit DeltaCoinR (DeltaCoin (-3000)))] - , Dom instanTreasury :⊆: credsUniv - , ProjS fGenDelegGenKeyHashL GenHashR (Dom futureGenDelegs) :=: Dom genDelegs - , NotMember (Lit CoinR (Coin 0)) (Rng instanTreasury) - , SumsTo (Right (Coin 1)) instanTreasurySum EQL [SumMap instanTreasury] - , SumsTo (Right (DeltaCoin 1)) (Delta instanTreasurySum) LTH [One (Delta treasury), One deltaTreasury] - , mirAvailTreasury - :<-: ( Constr "computeAvailTreasury" (availableAfterMIR TreasuryMIR) - :$ Mask accountStateT - :$ Mask instantaneousRewardsT - ) - , mirAvailReserves - :<-: ( Constr "computeAvailReserves" (availableAfterMIR ReservesMIR) - :$ Mask accountStateT - :$ Mask instantaneousRewardsT - ) - , Dom drepDelegation :⊆: credsUniv - , Rng drepDelegation :⊆: drepUniv - ] - where - rewardSize = var "rewardSize" SizeR - rewardRange = var "rewardRange" (ListR CoinR) - genDelegSize = var "genDelegSize" SizeR - gdKeyHashSet = var "gdKeyHashSet" (SetR GenDelegPairR) - gdKeyHashList = var "gdKeyHashList" (ListR GenDelegPairR) - -certStateCheckPreds :: Era era => Proof era -> [Pred era] -certStateCheckPreds p = - [ NotMember (Lit CoinR (Coin 0)) (Rng stakeDeposits) - , Dom rewards :=: Dom stakeDeposits - , Dom delegations :⊆: Dom rewards - , if protocolVersion p >= protocolVersion Conway - then Sized (ExactSize 0) ptrs - else Dom rewards :=: Rng ptrs - ] - -dstateStage :: - Reflect era => - Proof era -> - Subst era -> - Gen (Subst era) -dstateStage proof = toolChainSub proof standardOrderInfo (certStatePreds proof) - -demoD :: ReplMode -> Int -> IO () -demoD mode seed = do - let proof = Babbage - env <- - generateWithSeed - seed - ( pure emptySubst - >>= universeStage def proof - >>= dstateStage proof - >>= (\subst -> monadTyped $ substToEnv subst emptyEnv) - ) - dState <- monadTyped $ runTarget env dstateT - when (mode == Interactive) $ putStrLn (show (pcDState dState)) - modeRepl mode proof env "" - -demoTestD :: TestTree -demoTestD = testIO "Testing DState Stage" (demoD CI 99) - -mainD :: Int -> IO () -mainD seed = defaultMain $ testIO "Testing DState Stage" (demoD Interactive seed) - --- =============================================== - -demoC :: ReplMode -> IO () -demoC mode = do - let proof = Conway - env <- - generate - ( pure emptySubst - >>= pParamsStage proof - >>= universeStage def proof - >>= vstateStage proof - >>= pstateStage proof - >>= dstateStage proof - >>= (\subst -> monadTyped $ substToEnv subst emptyEnv) - ) - certState <- monadTyped $ runTarget env certstateT - when (mode == Interactive) $ putStrLn (show (pcCertState certState)) - modeRepl mode proof env "" - -demoTestC :: TestTree -demoTestC = testIO "Testing CertState Stage" (demoC CI) - -mainC :: IO () -mainC = defaultMain $ testIO "Testing CertState Stage" (demoC Interactive) - -demoTest :: TestTree -demoTest = - testGroup - "CertState tests" - [demoTestV, demoTestP, demoTestD, demoTestC] diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/Certs.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/Certs.hs deleted file mode 100644 index 0ade5a89624..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/Certs.hs +++ /dev/null @@ -1,662 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Constrained.Preds.Certs where - -import Cardano.Ledger.Shelley.HardForks as HardForks (allowMIRTransfer) -import Test.Cardano.Ledger.Generic.Functions (protocolVersion) - -import Cardano.Crypto.Hash.Class (Hash) -import Cardano.Crypto.VRF.Class (VerKeyVRF) -import Cardano.Ledger.Address (RewardAccount (..)) -import Cardano.Ledger.BaseTypes (EpochNo (..), maybeToStrictMaybe) -import Cardano.Ledger.Coin (Coin (..), DeltaCoin (..)) -import Cardano.Ledger.Conway.TxCert ( - ConwayDelegCert (..), - ConwayEraTxCert, - ConwayTxCert (..), - Delegatee (..), - pattern RegDepositDelegTxCert, - ) -import Cardano.Ledger.Credential (Credential (..), StakeCredential) -import Cardano.Ledger.Crypto (HASH, VRF) -import Cardano.Ledger.DRep (DRep (..)) -import Cardano.Ledger.Era (Era (EraCrypto)) -import Cardano.Ledger.Keys (KeyHash, KeyRole (..)) -import Cardano.Ledger.PoolParams (PoolMetadata, PoolParams (..)) -import Cardano.Ledger.Shelley.LedgerState (AccountState, InstantaneousRewards, availableAfterMIR) -import Cardano.Ledger.Shelley.TxCert ( - EraTxCert (..), - GenesisDelegCert (..), - MIRCert (..), - MIRPot (..), - MIRTarget (..), - PoolCert (..), - ShelleyDelegCert (..), - ShelleyTxCert (..), - ) -import Control.Monad (when) -import Data.Default.Class (Default (def)) -import Data.Map (Map) -import qualified Data.Map.Strict as Map -import Data.Maybe.Strict (StrictMaybe (..)) -import Lens.Micro (Lens', lens) -import Test.Cardano.Ledger.Constrained.Ast -import Test.Cardano.Ledger.Constrained.Classes -import Test.Cardano.Ledger.Constrained.Env -import Test.Cardano.Ledger.Constrained.Monad (generateWithSeed, monadTyped) -import Test.Cardano.Ledger.Constrained.Preds.CertState (dstateStage, pstateStage, vstateStage) -import Test.Cardano.Ledger.Constrained.Preds.PParams (pParamsStage) -import Test.Cardano.Ledger.Constrained.Preds.Repl (ReplMode (..), modeRepl) -import Test.Cardano.Ledger.Constrained.Preds.Universes (UnivSize (..), universeStage) -import Test.Cardano.Ledger.Constrained.Rewrite -import Test.Cardano.Ledger.Constrained.Solver (toolChainSub) -import Test.Cardano.Ledger.Constrained.TypeRep -import Test.Cardano.Ledger.Constrained.Utils (testIO) -import Test.Cardano.Ledger.Constrained.Vars -import Test.Cardano.Ledger.Generic.PrettyCore (pcTxCert, ppList) -import Test.Cardano.Ledger.Generic.Proof -import Test.QuickCheck -import Test.Tasty (TestTree, defaultMain) -import Type.Reflection (Typeable, typeRep) - --- ============================================= --- Shelley Cert Targets - -sRegKey :: - forall era. - Typeable era => - RootTarget era (ShelleyTxCert era) (StakeCredential (EraCrypto era) -> ShelleyTxCert era) -sRegKey = Invert "sRegKey" (typeRep @(ShelleyTxCert era)) (\x -> ShelleyTxCertDelegCert (ShelleyRegCert x)) - -sUnRegKey :: - forall era. - Typeable era => - RootTarget era (ShelleyTxCert era) (StakeCredential (EraCrypto era) -> ShelleyTxCert era) -sUnRegKey = - Invert "UnRegKey" (typeRep @(ShelleyTxCert era)) (\x -> ShelleyTxCertDelegCert (ShelleyUnRegCert x)) - -sDelegStake :: - forall era. - Typeable era => - RootTarget - era - (ShelleyTxCert era) - (StakeCredential (EraCrypto era) -> KeyHash 'StakePool (EraCrypto era) -> ShelleyTxCert era) -sDelegStake = - Invert - "sDelegStake" - (typeRep @(ShelleyTxCert era)) - (\x y -> ShelleyTxCertDelegCert (ShelleyDelegCert x y)) - -sRegPool :: Target era (PoolParams (EraCrypto era) -> ShelleyTxCert era) -sRegPool = Constr "sRegPool" (\x -> ShelleyTxCertPool (RegPool x)) - -sRetirePool :: Target era (KeyHash 'StakePool (EraCrypto era) -> EpochNo -> ShelleyTxCert era) -sRetirePool = Constr "sRetirePool" (\x e -> ShelleyTxCertPool (RetirePool x e)) - -sMirShift :: - forall era. - Era era => - RootTarget era (ShelleyTxCert era) (Coin -> MIRPot -> Coin -> ShelleyTxCert era) -sMirShift = - Invert - "sMirShift" - (typeRep @(ShelleyTxCert era)) - (\_avail x c -> ShelleyTxCertMir (MIRCert x (SendToOppositePotMIR c))) - -sGovern :: - Target - era - ( KeyHash 'Genesis (EraCrypto era) -> - KeyHash 'GenesisDelegate (EraCrypto era) -> - Hash (HASH (EraCrypto era)) (VerKeyVRF (VRF (EraCrypto era))) -> - ShelleyTxCert era - ) -sGovern = Constr "sGovern" (\a b c -> ShelleyTxCertGenesisDeleg (GenesisDelegCert a b c)) - --- ========================================== --- Conway Cert Targets - -cRegKey :: Target era (StakeCredential (EraCrypto era) -> Maybe Coin -> ConwayTxCert era) -cRegKey = Constr "cRegKey" (\x y -> ConwayTxCertDeleg (ConwayRegCert x (maybeToStrictMaybe y))) - -cUnRegKey :: Target era (StakeCredential (EraCrypto era) -> Maybe Coin -> ConwayTxCert era) -cUnRegKey = Constr "cUnRegKey" (\x y -> ConwayTxCertDeleg (ConwayUnRegCert x (maybeToStrictMaybe y))) - -cDelegStake :: - Target - era - (StakeCredential (EraCrypto era) -> KeyHash 'StakePool (EraCrypto era) -> ConwayTxCert era) -cDelegStake = Constr "cDelegStake" (\x y -> ConwayTxCertDeleg (ConwayDelegCert x (DelegStake y))) - -cDelegVote :: - Target era (StakeCredential (EraCrypto era) -> DRep (EraCrypto era) -> a -> ConwayTxCert era) -cDelegVote = Constr "cDelegVote" (\x y _ -> ConwayTxCertDeleg (ConwayDelegCert x (DelegVote y))) - -cDelegStakeVote :: - Target - era - ( StakeCredential (EraCrypto era) -> - KeyHash 'StakePool (EraCrypto era) -> - DRep (EraCrypto era) -> - a -> - ConwayTxCert era - ) -cDelegStakeVote = Constr "cDelegStakeVote" (\x y z _ -> ConwayTxCertDeleg (ConwayDelegCert x (DelegStakeVote y z))) - -cRegDeleg :: - forall era. - ConwayEraTxCert era => - Target era (StakeCredential (EraCrypto era) -> Delegatee (EraCrypto era) -> Coin -> TxCert era) -cRegDeleg = Constr "cRegDeleg" RegDepositDelegTxCert - -cDelegateeStake :: - forall era. - Era era => - RootTarget - era - (Delegatee (EraCrypto era)) - (KeyHash 'StakePool (EraCrypto era) -> Delegatee (EraCrypto era)) -cDelegateeStake = Invert "cDelegateeStake" (typeRep @(Delegatee (EraCrypto era))) DelegStake - -cDelegateeVote :: - forall era. - Era era => - RootTarget era (Delegatee (EraCrypto era)) (DRep (EraCrypto era) -> Delegatee (EraCrypto era)) -cDelegateeVote = Invert "cDelegateeVote" (typeRep @(Delegatee (EraCrypto era))) DelegVote - -cDelegateeStakeVote :: - forall era. - Era era => - RootTarget - era - (Delegatee (EraCrypto era)) - (KeyHash 'StakePool (EraCrypto era) -> DRep (EraCrypto era) -> Delegatee (EraCrypto era)) -cDelegateeStakeVote = Invert "cDelegateeVote" (typeRep @(Delegatee (EraCrypto era))) DelegStakeVote - -cRegPool :: Target era (PoolParams (EraCrypto era) -> ConwayTxCert era) -cRegPool = Constr "cRegPool" (\x -> ConwayTxCertPool (RegPool x)) - -cRetirePool :: Target era (KeyHash 'StakePool (EraCrypto era) -> EpochNo -> ConwayTxCert era) -cRetirePool = Constr "cRetirePool" (\x e -> ConwayTxCertPool (RetirePool x e)) - --- | Transform some SubMap of instanReserves (or instanTreasury) into a partB map --- with invariants: (partB ! key) <+> (instanReserves ! key) >= (Coin 0) --- Note in Era before Alonzo, Negative transfers are not allowed. -partBfromPartA :: Ord k => Proof era -> Map k Coin -> Map k DeltaCoin -partBfromPartA p mp = Map.fromList (fixer (Map.toList mp)) - where - fixer [] = [] - fixer [(k, Coin n)] = - case whichTxOut p of - TxOutShelleyToMary -> [(k, DeltaCoin 6)] - _ -> [(k, DeltaCoin (-(n - 1)))] - fixer ((k, Coin n) : (j, Coin _) : _) = - case whichTxOut p of - TxOutShelleyToMary -> [(k, DeltaCoin 5), (j, DeltaCoin 3)] - _ -> [(k, DeltaCoin (-(n - 1))), (j, DeltaCoin 8)] - --- | A user defined Predicate that Binds 'drep' to a random DRep --- The parameter 'vote' should be existentially bound --- in the surrounding context (inside a Choose Target perhaps) -makeDRepPred :: - forall era. - Era era => - Term era (DRep (EraCrypto era)) -> - Term era (Credential 'DRepRole (EraCrypto era)) -> - Pred era -makeDRepPred drep vote = - Oneof - drep - [ (1, constRootTarget DRepAlwaysAbstain, [Random vote]) - , (1, constRootTarget DRepAlwaysNoConfidence, [Random vote]) - , - ( 5 - , Invert "" (typeRep @(DRep (EraCrypto era))) DRepCredential - :$ Partial vote (\case DRepCredential x -> Just x; _ -> Nothing) - , [Member (Left vote) voteUniv] - ) - ] - --- ===================================== - -minusCoinDeltaCoin :: Coin -> DeltaCoin -> DeltaCoin -minusCoinDeltaCoin (Coin n) (DeltaCoin m) = DeltaCoin (n - m) - -availableForDistrC :: DeltaCoin -> MIRPot -> AccountState -> InstantaneousRewards c -> DeltaCoin -availableForDistrC sumb p act irew = minusCoinDeltaCoin (availableAfterMIR p act irew) sumb - -txCertMir :: - forall era any. - Era era => - RootTarget - era - (ShelleyTxCert era) - (MIRPot -> Map (Credential 'Staking (EraCrypto era)) DeltaCoin -> any -> ShelleyTxCert era) -txCertMir = - Invert - "txCertMir" - (typeRep @(ShelleyTxCert era)) - (\pot distr _ -> ShelleyTxCertMir (MIRCert pot (StakeAddressesMIR distr))) - -{- -The 'mirdistr' has type (Map (Credential 'Staking c) DeltaCoin) In Eras Alonzo and Babbage -The key invaraint is Sum(union <+> instanReserves mirdistr) <= available -This is the same as: (Sum instanReserves) <+> (Sum mirdistr) <= available -Their are two parts to the mirdistr - 1) The key is in (Dom instanReserves). We call this partB. - 2) The key is disjoint from (Dom instanReserves). We call this partC. -So now the invariant is: (Sum instanReserves) <+> (Sum partB) <+> (Sum partC) <= available -For partB we have the additional invariant: (partB ! key) <+> (instanReserves ! key) >= (Coin 0) -For partC we have the range must be positive: (partC ! key) >= (Coin 0) -The stateful action is to update instanReserves with (union <+> instanReserves mirdistr) -To maintain: (Sum instanReserves) <+> (Sum partB) <+> (Sum partC) <= available -We introduce sumB and availableC, -such that: (Sum instanReserves) <+> sumB <+> availableC <= available -And generate: partB suchthat: (Sum partB) = sumB and - (Subset (dom partB) (Dom instanReserves)) ans - ((partB ! key) <+> (instanReserves ! key) >= (Coin 0)) -And generate: partC suchthat: (Sum partC) = availableC - (Disjoint (dom partC) (Dom instanReserves)) - --} - -certsPreds :: forall era. Reflect era => UnivSize -> Proof era -> [Pred era] -certsPreds UnivSize {..} p = case whichTxCert p of - TxCertShelleyToBabbage -> - [ certs :<-: (Constr "TxCertF" (fmap (TxCertF p)) ^$ shelleycerts) - , Sized (Range 1 6) epochDelta -- Note that last Epoch is stored in 'maxEpoch' which was 100 on 7/7/23 see PParams.hs - , Choose - (Range 4 4) -- (Range 0 5) - shelleycerts - [ - ( 2 - , (Constr "RegUnRegOrDelegate" (\x -> x) ^$ shelleycert) - , - [ Oneof - shelleycert -- Can only have one of these at a time - [ - ( 1 - , sRegKey - :$ Partial stakeCred (\case (ShelleyTxCertDelegCert (ShelleyRegCert x)) -> Just x; _ -> Nothing) - , [NotMember stakeCred (Dom rewards)] - ) - , - ( 1 - , sUnRegKey - :$ Partial deregkey (\case (ShelleyTxCertDelegCert (ShelleyUnRegCert x)) -> Just x; _ -> Nothing) - , [MapMember deregkey (Lit CoinR (Coin 0)) (Left rewards)] - ) - , - ( 1 - , sDelegStake - :$ Partial stakeCred (\case (ShelleyTxCertDelegCert (ShelleyDelegCert x _)) -> Just x; _ -> Nothing) - :$ Partial poolHash (\case (ShelleyTxCertDelegCert (ShelleyDelegCert _ y)) -> Just y; _ -> Nothing) - , [Member (Left stakeCred) (Dom rewards), Member (Left poolHash) (Dom regPools)] - ) - ] - ] - ) - , - ( 1 - , sRetirePool ^$ poolHash ^$ epoch - , [Member (Left poolHash) (Dom regPools), epoch :<-: (Constr "+" (+) ^$ currentEpoch ^$ epochDelta)] - ) - , - ( 1 - , sRegPool ^$ poolParams - , - [ -- Pick a random PoolParams, except constrain the fields poolId, poolRewardAccount, poolOwners, and poolMetadata - -- by the additional Preds. Note that the (genRep (PoolMetadataR p)) function knows how to handle the - -- 'SoftForks.restrictPoolMetadataHash' issue on '(poolMetadata p)'. So using 'Random' which uses genRep - -- should produce the right PoolMetadata format, by obseriving the Proof 'p'. - Component - (Right poolParams) - [ field PoolParamsR poolId - , field PoolParamsR poolRewardAccount - , field PoolParamsR poolOwners - , field PoolParamsR (poolMetadata p) - ] - , Member (Left poolId) poolHashUniv - , poolRewardAccount :<-: (Constr "mkRewAcnt" RewardAccount ^$ network ^$ rewCred) - , Member (Right rewCred) credsUniv - , Subset poolOwners stakeHashUniv - , Maybe (poolMetadata p) (Simple localpool) [Random localpool] - ] - ) - , - ( 4 - , idTarget mircert - , - [ Oneof - mircert -- Either a StakeAddressesMIR or a SendToOppositePotMIR, choose just 1 - [ - ( 1 - , txCertMir - :$ Partial pot (\case (ShelleyTxCertMir (MIRCert pt (StakeAddressesMIR _))) -> Just pt; _ -> Nothing) - :$ Partial - mirdistr - (\case (ShelleyTxCertMir (MIRCert _ (StakeAddressesMIR distr))) -> Just distr; _ -> Nothing) - :$ Partial (Lit UnitR ()) (const (Just ())) - , - [ Random pot -- choose Treasury or Reserves - , If - (Constr "hardfork" HardForks.allowMIRTransfer ^$ (protVer p)) - ( available - :<-: (Constr "available" availableAfterMIR ^$ pot :$ Mask accountStateT :$ Mask instantaneousRewardsT) - ) - ( If - (Constr "potIsTreasury" (== TreasuryMIR) ^$ pot) - (treasury :=: available) - (reserves :=: available) - ) - , If - (Constr "potIsTreasury" (== TreasuryMIR) ^$ pot) - (instanTreasurySum :=: instanSum) - (instanReservesSum :=: instanSum) - , If - (Constr "potIsTreasury" (== TreasuryMIR) ^$ pot) - (SubMap mirdistrA instanTreasury) - (SubMap mirdistrA instanReserves) - , Sized (Range 1 2) mirdistrA -- Never more than 2 in partB - , mirdistrB :<-: (Constr "toPartB" (partBfromPartA p) ^$ mirdistrA) - , SumsTo (Right (DeltaCoin 1)) sumB EQL [SumMap mirdistrB] - , Sized (Range 1 3) mirdistrC - , Subset (Dom mirdistrC) credsUniv - , If - (Constr "potIsTreasury" (== TreasuryMIR) ^$ pot) - (Disjoint (Dom mirdistrC) (Dom instanTreasury)) - (Disjoint (Dom mirdistrC) (Dom instanReserves)) - , Before sumB mirdistrC - , SumsTo - (Left (DeltaCoin 1)) - (Delta available) - GTH - [One (Delta instanSum), One sumB, SumMap mirdistrC] - , If - (Constr "hardfork" HardForks.allowMIRTransfer ^$ (protVer p)) - (mirdistr :<-: (Constr "union" (Map.unionWith (<>)) ^$ mirdistrC ^$ mirdistrB)) - (mirdistr :<-: (Constr "union" Map.union ^$ mirdistrC ^$ mirdistrB)) - ] - ) - , - ( if (HardForks.allowMIRTransfer (protocolVersion p)) then 1 else 0 -- Not allowed before Alonzo, so make frequency 0 - , sMirShift - :$ Partial - available - (\case (ShelleyTxCertMir (MIRCert _ (SendToOppositePotMIR _))) -> Just (Coin 99); _ -> Nothing) - :$ Partial - pot - (\case (ShelleyTxCertMir (MIRCert pt (SendToOppositePotMIR _))) -> Just pt; _ -> Nothing) - :$ Partial - mircoin - (\case (ShelleyTxCertMir (MIRCert _ (SendToOppositePotMIR c))) -> Just c; _ -> Nothing) - , - [ Random pot - , available - :<-: (Constr "available" availableAfterMIR ^$ pot :$ Mask accountStateT :$ Mask instantaneousRewardsT) - , SumsTo (Left (Coin 1)) available GTE [One mircoin] - ] - ) - ] - ] - ) - ] - ] - TxCertConwayToConway -> - [ certs :<-: (Constr "TxCertF" (fmap (TxCertF p)) ^$ conwaycerts) - , Sized (Range 1 6) epochDelta - , Choose - (Range usMinCerts usMaxCerts) - conwaycerts - [ - ( 1 - , cDelegStake ^$ stakeCred ^$ poolHash - , - [ Member (Left stakeCred) (Dom rewards) - , Member (Left poolHash) (Dom regPools) - ] - ) - , - ( 1 - , cDelegVote ^$ stakeCred ^$ drep ^$ vote - , - [ Member (Left stakeCred) (Dom rewards) - , makeDRepPred drep vote - , Member (Left vote) voteUniv - ] - ) - , - ( 1 - , cRegDeleg ^$ stakeCred ^$ delegatee ^$ kd - , - [ Oneof - delegatee - [ - ( 3 - , cDelegateeStake :$ Partial poolHash (\case (DelegStake x) -> Just x; _ -> Nothing) - , - [ Member (Left poolHash) (Dom regPools) - ] - ) - , - ( 1 - , cDelegateeVote :$ Partial drep1 (\case (DelegVote x) -> Just x; _ -> Nothing) - , - [ makeDRepPred drep1 vote1 - , Member (Left vote1) voteUniv - ] - ) - , - ( 1 - , cDelegateeVote :$ Partial drep1a (\case (DelegVote x) -> Just x; _ -> Nothing) - , - [ drep1a :<-: constTarget DRepAlwaysAbstain - ] - ) - , - ( 1 - , cDelegateeVote :$ Partial drep1b (\case (DelegVote x) -> Just x; _ -> Nothing) - , - [ drep1b :<-: constTarget DRepAlwaysNoConfidence - ] - ) - , - ( 1 - , cDelegateeStakeVote - :$ Partial poolHash (\case (DelegStakeVote x _) -> Just x; _ -> Nothing) - :$ Partial drep2 (\case (DelegStakeVote _ x) -> Just x; _ -> Nothing) - , - [ Member (Left poolHash) (Dom regPools) - , makeDRepPred drep2 vote2 - , Member (Left vote2) voteUniv - ] - ) - , - ( 1 - , cDelegateeStakeVote - :$ Partial poolHash (\case (DelegStakeVote x _) -> Just x; _ -> Nothing) - :$ Partial drep2a (\case (DelegStakeVote _ x) -> Just x; _ -> Nothing) - , - [ Member (Left poolHash) (Dom regPools) - , drep2a :<-: constTarget DRepAlwaysAbstain - ] - ) - , - ( 1 - , cDelegateeStakeVote - :$ Partial poolHash (\case (DelegStakeVote x _) -> Just x; _ -> Nothing) - :$ Partial drep2b (\case (DelegStakeVote _ x) -> Just x; _ -> Nothing) - , - [ Member (Left poolHash) (Dom regPools) - , drep2b :<-: constTarget DRepAlwaysNoConfidence - ] - ) - ] - , Member (Left stakeCred) credsUniv - , NotMember stakeCred (Dom rewards) - , kd :=: keyDepAmt p - ] - ) - , - ( 1 - , cRegPool ^$ poolParams - , [ -- Pick a random PoolParams, except constrain the poolId and the poolRewardAccount, by the additional Preds - Component - (Right poolParams) - [ field PoolParamsR poolId - , field PoolParamsR poolRewardAccount - , field PoolParamsR poolOwners - , field PoolParamsR (poolMetadata p) - ] - , Member (Left poolId) poolHashUniv - , poolRewardAccount :<-: (Constr "mkRewAcnt" RewardAccount ^$ network ^$ rewCred) - , Member (Right rewCred) credsUniv - , Subset poolOwners stakeHashUniv - , Maybe (poolMetadata p) (Simple localpool) [Random localpool] - ] - ++ [NotMember poolId (Dom regPools) | not usAllowReRegisterPool] - ) - , - ( 1 - , cRetirePool ^$ poolHash ^$ epoch - , - [ Member (Left poolHash) (Dom regPools) - , epoch :<-: (Constr "+" (+) ^$ currentEpoch ^$ epochDelta) - ] - ) - , - ( usRegKeyFreq - , cRegKey ^$ stakeCred ^$ mkeydeposit - , - [ NotMember stakeCred (Dom rewards) - , Member (Left stakeCred) credsUniv - , Maybe mkeydeposit (idTarget kd) [kd :=: (keyDepAmt p)] - ] - ) - , - ( usUnRegKeyFreq - , cUnRegKey ^$ stakeCred ^$ mkeydeposit - , - [ MapMember stakeCred (Lit CoinR (Coin 0)) (Left rewards) - , Maybe mkeydeposit (idTarget kd) [MapMember stakeCred kd (Left stakeDeposits)] - ] - ) - ] - ] - where - delegatee = Var $ pV p "delegatee" DelegateeR No - stakeCred = Var $ pV p "stakeCred" CredR No - deregkey = Var $ pV p "destakeCred" CredR No - poolHash = Var $ pV p "poolHash" PoolHashR No - epoch = Var $ pV p "epoch" EpochR No - shelleycerts = Var $ pV p "shelleycerts" (ListR ShelleyTxCertR) No - shelleycert = Var $ pV p "shelleycert" ShelleyTxCertR No - conwaycerts = Var $ pV p "conwaycerts" (ListR ConwayTxCertR) No - poolParams = Var $ pV p "poolParams" PoolParamsR No - pot = Var $ pV p "pot" MIRPotR No - mirdistrA = Var $ pV p "mirdistrA" (MapR CredR CoinR) No - mirdistrB = Var $ pV p "mirdistrB" (MapR CredR DeltaCoinR) No - mirdistrC = Var $ pV p "mirdistrC" (MapR CredR DeltaCoinR) No - mirdistr = Var $ pV p "mirdistr" (MapR CredR DeltaCoinR) No - mkeydeposit = Var $ pV p "mkeyDeposit" (MaybeR CoinR) No - kd = Var $ pV p "kd" CoinR No - vote = Var $ pV p "vote" VCredR No - vote1 = Var $ pV p "vote1" VCredR No - vote2 = Var $ pV p "vote2" VCredR No - epochDelta = Var $ pV p "epochDelta" EpochR No - poolId = Var (pV p "poolId" PoolHashR (Yes PoolParamsR (lens ppId (\x i -> x {ppId = i})))) - poolOwners = - Var - (pV p "poolOwners" (SetR StakeHashR) (Yes PoolParamsR (lens ppOwners (\x i -> x {ppOwners = i})))) - poolRewardAccount = - Var - ( pV - p - "poolRewardAccount" - RewardAccountR - (Yes PoolParamsR (lens ppRewardAccount (\x r -> x {ppRewardAccount = r}))) - ) - localpool = Var (pV p "localpool" (PoolMetadataR p) No) - rewCred = Var (pV p "rewCred" CredR No) - available = Var (pV p "available" CoinR No) - sumB = Var $ pV p "sumB" DeltaCoinR No - instanSum = Var (pV p "instanSum" CoinR No) - mircoin = Var $ pV p "mircoin" CoinR No - mircert = Var (pV p "mircert" ShelleyTxCertR No) - drep = Var (pV p "drep" DRepR No) - drep1 = Var (pV p "drep1" DRepR No) - drep1a = Var (pV p "drep1a" DRepR No) - drep1b = Var (pV p "drep1b" DRepR No) - drep2 = Var (pV p "drep2" DRepR No) - drep2a = Var (pV p "drep2a" DRepR No) - drep2b = Var (pV p "drep2b" DRepR No) - -certsStage :: - Reflect era => - UnivSize -> - Proof era -> - Subst era -> - Gen (Subst era) -certsStage us proof subst0 = do - let preds = certsPreds us proof - toolChainSub proof standardOrderInfo preds subst0 - -demo :: ReplMode -> Int -> IO () -demo mode seed = do - let proof = - Conway - -- Babbage - env <- - generateWithSeed - seed - ( pure emptySubst - >>= pParamsStage proof - >>= universeStage def proof - >>= vstateStage proof - >>= pstateStage proof - >>= dstateStage proof - >>= certsStage def proof - >>= (\subst -> monadTyped (substToEnv subst emptyEnv)) - ) - certsv <- monadTyped (findVar (unVar certs) env) - when (mode == Interactive) $ putStrLn (show (ppList (\(TxCertF _ x) -> pcTxCert proof x) certsv)) - modeRepl mode proof env "" - -demoTest :: TestTree -demoTest = testIO "Testing Certs Stage" (demo CI 263662165) - -main :: Int -> IO () -main n = defaultMain $ testIO "Testing Certs Stage" (demo Interactive n) - --- ======================================== - -sMaybeL :: Lens' (StrictMaybe a) (Maybe a) -sMaybeL = lens getter setter - where - getter (SJust x) = Just x - getter SNothing = Nothing - setter _ Nothing = SNothing - setter _ (Just x) = SJust x - -maybeSL :: Lens' (Maybe a) (StrictMaybe a) -maybeSL = lens getter setter - where - getter (Just x) = SJust x - getter Nothing = SNothing - setter _ SNothing = Nothing - setter _ (SJust x) = Just x - -poolMetaL :: Lens' (PoolParams era) (StrictMaybe PoolMetadata) -poolMetaL = lens ppMetadata (\x r -> x {ppMetadata = r}) - -poolMetadata :: Era era => Proof era -> Term era (Maybe PoolMetadata) -poolMetadata p = Var (pV p "poolMetadata" (MaybeR (PoolMetadataR p)) (Yes PoolParamsR (poolMetaL . sMaybeL))) diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/LedgerState.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/LedgerState.hs deleted file mode 100644 index 5ce28040781..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/LedgerState.hs +++ /dev/null @@ -1,438 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Constrained.Preds.LedgerState where - -import Cardano.Ledger.Alonzo.PParams (ppuMaxValSizeL) -import Cardano.Ledger.Babbage.PParams (ppuCoinsPerUTxOByteL) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Conway.Governance ( - GovAction (..), - GovActionId (..), - GovActionPurpose (..), - GovActionState (..), - ProposalProcedure (..), - Proposals, - gasAction, - gasActionL, - gasDeposit, - gasIdL, - pPropsL, - proposalsActions, - ) -import Cardano.Ledger.Conway.PParams ( - ConwayEraPParams, - ppuDRepDepositL, - ppuMinFeeRefScriptCostPerByteL, - ) -import Cardano.Ledger.Core ( - Era (..), - PParamsUpdate, - ppuMaxTxSizeL, - ppuMinFeeAL, - ppuMinFeeBL, - ) -import Cardano.Ledger.DRep (drepDepositL) -import Control.Monad (when) -import Data.Default.Class (Default (def)) -import qualified Data.List as List -import qualified Data.Map.Strict as Map -import Data.Maybe.Strict (StrictMaybe (..)) -import qualified Data.OMap.Strict as OMap -import Data.Ratio ((%)) -import Data.Set (Set) -import qualified Data.Set as Set -import Lens.Micro -import Test.Cardano.Ledger.Constrained.Ast -import Test.Cardano.Ledger.Constrained.Classes (OrdCond (..), genPParamsUpdate) -import Test.Cardano.Ledger.Constrained.Combinators (itemFromSet) -import Test.Cardano.Ledger.Constrained.Env -import Test.Cardano.Ledger.Constrained.Monad (monadTyped) -import Test.Cardano.Ledger.Constrained.Preds.CertState (dstateStage, pstateStage, vstateStage) -import Test.Cardano.Ledger.Constrained.Preds.PParams (pParamsStage) -import Test.Cardano.Ledger.Constrained.Preds.Repl (ReplMode (..), modeRepl) -import Test.Cardano.Ledger.Constrained.Preds.UTxO (utxoStage) -import Test.Cardano.Ledger.Constrained.Preds.Universes (UnivSize (..), universeStage) -import Test.Cardano.Ledger.Constrained.Rewrite (standardOrderInfo) -import Test.Cardano.Ledger.Constrained.Size (Size (..)) -import Test.Cardano.Ledger.Constrained.Solver (toolChainSub) -import Test.Cardano.Ledger.Constrained.TypeRep -import Test.Cardano.Ledger.Constrained.Utils (testIO) -import Test.Cardano.Ledger.Constrained.Vars -import Test.Cardano.Ledger.Generic.PrettyCore (pcLedgerState) -import Test.Cardano.Ledger.Generic.Proof -import Test.QuickCheck -import Test.Tasty (TestTree, defaultMain) -import Type.Reflection (typeRep) - --- ========================================= - -prevGovActionIdsGenPreds :: Reflect era => Proof era -> [Pred era] -prevGovActionIdsGenPreds _ = - [ Random prevGovActionIds - , Random hardForkChildren - , Random committeeChildren - , Random constitutionChildren - ] - -prevGovActionIdsCheckPreds :: Proof era -> [Pred era] -prevGovActionIdsCheckPreds _ = [] - -enactStateGenPreds :: Reflect era => Proof era -> [Pred era] -enactStateGenPreds p = - [ Random committeeVar - , Random constitution - , prevPParams p :<-: (Constr "id" id ^$ pparams p) - , currPParams p :<-: (Constr "id" id ^$ pparams p) - , Random enactTreasury - , Random enactWithdrawals - , -- PrevGovActionsIds constraints - Subset (Dom prevDRepState) voteUniv - , Subset (Dom partialDRepDistr) drepUniv - ] - ++ prevGovActionIdsGenPreds p - -enactStateCheckPreds :: Proof era -> [Pred era] -enactStateCheckPreds _ = [] - -ledgerStatePreds :: forall era. Reflect era => UnivSize -> Proof era -> [Pred era] -ledgerStatePreds _usize p = - [ Subset (Dom enactWithdrawals) credsUniv - , Random enactTreasury - , Random constitution - , Random committeeVar - , Random ppUpdateChildren - , Random hardForkChildren - , Random committeeChildren - , Random constitutionChildren - , proposalDeposits - :<-: ( Constr "sumActionStateDeposits" (foldMap gasDeposit . proposalsActions) - :$ (Simple $ currProposals p) - ) - , -- TODO, introduce ProjList so we can write: SumsTo (Right (Coin 1)) proposalDeposits EQL [ProjList CoinR gasDepositL currProposals] - SumsTo - (Right (Coin 1)) - deposits - EQL - [ SumMap stakeDeposits - , SumMap poolDeposits - , One proposalDeposits - , ProjMap CoinR drepDepositL currentDRepState - ] - , -- Some things we might want in the future. - -- , SumsTo (Right (Coin 1)) utxoCoin EQL [ProjMap CoinR outputCoinL (utxo p)] - -- , SumsTo (Right (Coin 1)) totalAda EQL [One utxoCoin, One treasury, One reserves, One fees, One deposits, SumMap rewards] - Random fees - , ledgerState :<-: (ledgerStateT p) - , Sized (Range 1 10) donation - , prevPParams p :<-: (Constr "id" id ^$ (pparams p)) - , currPParams p :<-: (Constr "id" id ^$ (pparams p)) - , -- We need the poolDistr to generate a valid Pulser - Dom regPools :=: Dom poolDistr - , SumsTo (Left (1 % 1000)) (Lit RationalR 1) EQL [ProjMap RationalR individualPoolStakeL poolDistr] - ] - ++ ( case whichGovState p of - GovStateConwayToConway -> - [ Random randomProposals - , currProposals p :<-: (Constr "reasonable" reasonable ^$ randomProposals) - ] - ++ prevPulsingPreds p -- Constraints to generate a valid Pulser - GovStateShelleyToBabbage -> - [ Sized (Range 0 1) (pparamProposals p) - , Sized (Range 0 1) (futurePParamProposals p) - ] - ) - where - randomProposals = Var (pV p "randomProposals" (ProposalsR p) No) - -ledgerStateStage :: - Reflect era => - UnivSize -> - Proof era -> - Subst era -> - Gen (Subst era) -ledgerStateStage usize proof subst0 = do - let preds = ledgerStatePreds usize proof - subst <- toolChainSub proof standardOrderInfo preds subst0 - (_env, status) <- pure (undefined, Nothing) -- monadTyped $ checkForSoundness preds subst - case status of - Nothing -> pure subst - Just msg -> error msg - -demo :: Reflect era => Proof era -> ReplMode -> IO () -demo proof mode = do - env <- - generate - ( pure emptySubst - >>= pParamsStage proof - >>= universeStage def proof - >>= utxoStage def proof - >>= vstateStage proof - >>= pstateStage proof - >>= dstateStage proof - >>= ledgerStateStage def proof - >>= (\subst -> monadTyped $ substToEnv subst emptyEnv) - ) - lstate <- monadTyped $ runTarget env (ledgerStateT proof) - let env2 = getTarget lstate (ledgerStateT proof) env - when (mode == Interactive) $ putStrLn (show (pcLedgerState proof lstate)) - modeRepl mode proof env2 "" - -demoTest :: TestTree -demoTest = testIO "Testing LedgerState Stage" (demo Conway CI) - -main :: IO () -main = defaultMain $ testIO "Testing LedgerState Stage" (demo Conway Interactive) - --- ============================================= --- Contraint based approach to generating Proposals - --- | Generate the (parent,child) pairs in a Tree. --- Be sure the list of 'a' are unique, because each node should appear in the Tree only once. --- The first one will be the root of the tree --- and have parent Nothing. -genTree :: Ord a => [a] -> Gen [(Maybe a, a)] -genTree [] = pure [] -genTree (root : others) = genTreeHelp [root] [(Nothing, root)] (Set.fromList others) - where - genTreeHelp :: Ord a => [a] -> [(Maybe a, a)] -> Set a -> Gen [(Maybe a, a)] - genTreeHelp _ edges nodes | Set.null nodes = pure (reverse edges) - genTreeHelp roots edges nodes = do - (x, more) <- itemFromSet [] nodes - n <- choose (0, length roots - 1) - genTreeHelp (x : roots) ((Just (roots !! n), x) : edges) more - -{- -One might test genTree, something like this -go :: IO [(Maybe Int, Int)] -go = generate (genTree [1, 2, 3, 4, 5, 6, 7 :: Int]) --} - --- | Tie together GovActionState and GovAction using the (parent,child) links --- that describe the shape of the Tree -useTriples :: - [(Maybe (GovActionId (EraCrypto era)), GovActionId (EraCrypto era))] -> - [GovAction era] -> - [GovActionState era] -> - [GovActionState era] -useTriples pairs as gs = zipWith3 help pairs as gs - where - help (parent, idx) a g = - g - & gasIdL .~ idx - & gasActionL .~ setActionId a parent - --- | [Pred era] that generate a valid (Map GovActionId GovActionState) -govStatePreds :: forall era. (ConwayEraPParams era, Reflect era) => Proof era -> [Pred era] -govStatePreds p = - [ MetaSize (SzRng 2 5) numActions - , Sized numActions gaids - , Subset gaids govActionIdUniv - , GenFrom pairs (Constr "genTree" (genTree . Set.toList) ^$ gaids) - , ListWhere - numActions - preGovstates - govActionStateTarget - [ Member (Left idV) govActionIdUniv - , Subset (Dom committeeVotesV) hotCommitteeCredsUniv - , Sized (Range 0 3) (Dom committeeVotesV) - , Subset (Dom drepVotesV) voteUniv - , Sized (Range 0 3) (Dom drepVotesV) - , Subset (Dom stakePoolVotesV) poolHashUniv - , Sized (Range 0 3) (Dom stakePoolVotesV) - , proposalDeposit p :=: depositV - , Random returnAddrV - , Random anchorV - , Oneof - actionV - [ (1, noConfidenceT, [Random gaPrevId]) - , - ( 1 - , updateCommitteeT - , - [ Random gaPrevId - , Sized (Range 0 3) gaRemMember - , Subset gaRemMember coldCommitteeCredsUniv - , Sized (Range 0 3) (Dom gaAddMember) - , Subset (Dom gaAddMember) coldCommitteeCredsUniv - , Random gaThreshold - ] - ) - ] - , currentEpoch :=: proposedInV - , Random expiresAfterV - , Sized (Range 0 3) childrenV - , Subset childrenV govActionIdUniv - ] - , ListWhere - numActions - govActions - (Invert "GovAction" (typeRep @(GovAction era)) id :$ Partial govAction Just) - [ Oneof - govAction - [ (1, noConfidenceT, [Random gaPrevId]) - , - ( 1 - , updateCommitteeT - , - [ Random gaPrevId - , Sized (Range 0 3) gaRemMember - , Subset gaRemMember coldCommitteeCredsUniv - , Sized (Range 0 3) (Dom gaAddMember) - , Subset (Dom gaAddMember) coldCommitteeCredsUniv - , Random gaThreshold - ] - ) - ] - ] - , govActionStates :<-: (Constr "useTriples" useTriples ^$ pairs ^$ govActions ^$ preGovstates) - , govActionMap :<-: (Constr "toProposalMap" toProposalMap ^$ govActionStates) - ] - where - gaids = Var (pV p "gaids" (SetR GovActionIdR) No) - pairs = Var (pV p "pairs" (ListR (PairR (MaybeR GovActionIdR) GovActionIdR)) No) - numActions = Var (pV p "numActions" SizeR No) - preGovstates = Var (V "preGovstates" (ListR GovActionStateR) No) - govActionStates = Var (pV p "govActionStates" (ListR (GovActionStateR)) No) - govAction = Var (pV p "govAction" GovActionR No) - govActions = Var (pV p "govActions" (ListR GovActionR) No) - govActionMap = Var (pV p "govActionMap" (MapR GovActionIdR GovActionStateR) No) - -toProposalMap :: - forall era. [GovActionState era] -> Map.Map (GovActionId (EraCrypto era)) (GovActionState era) -toProposalMap xs = Map.fromList (map pairup xs) - where - pairup gas = (gasId gas, gas) - -demoGov :: (ConwayEraPParams era, Reflect era) => Proof era -> ReplMode -> IO () -demoGov proof mode = do - env <- - generate - ( pure emptySubst - >>= pParamsStage proof - >>= universeStage def proof - >>= toolChainSub proof standardOrderInfo (govStatePreds proof) - >>= (\subst -> monadTyped $ substToEnv subst emptyEnv) - ) - modeRepl mode proof env "" - -mainGov :: IO () -mainGov = demoGov Conway Interactive - -setActionId :: GovAction era -> Maybe (GovActionId (EraCrypto era)) -> GovAction era -setActionId (ParameterChange _ pp p) x = ParameterChange (liftId x) pp p -setActionId (HardForkInitiation _ y) x = HardForkInitiation (liftId x) y -setActionId (UpdateCommittee _ w y z) x = UpdateCommittee (liftId x) w y z -setActionId (NewConstitution _ y) x = NewConstitution (liftId x) y -setActionId InfoAction _ = InfoAction -setActionId (NoConfidence _) x = NoConfidence (liftId x) -setActionId x@(TreasuryWithdrawals _ _) _ = x - -actionIdL :: Lens' (GovAction era) (Maybe (GovActionId (EraCrypto era))) -actionIdL = lens getter setter - where - getter (ParameterChange x _ _) = dropId x - getter (HardForkInitiation x _) = dropId x - getter (UpdateCommittee x _ _ _) = dropId x - getter (NewConstitution x _) = dropId x - getter (NoConfidence x) = dropId x - getter (TreasuryWithdrawals _ _) = Nothing - getter InfoAction = Nothing - setter ga mid = setActionId ga mid - -children :: GovActionId c -> [(Maybe (GovActionId c), GovActionId c)] -> Set (GovActionId c) -children x ys = List.foldl' accum Set.empty ys - where - accum ans (Just y, z) | x == y = Set.insert z ans - accum ans _ = ans - -genGovActionStates :: - forall era. - Era era => - Proof era -> - Set (GovActionId (EraCrypto era)) -> - Gen (Map.Map (GovActionId (EraCrypto era)) (GovActionState era)) -genGovActionStates proof gaids = do - pairs <- genTree (Set.toList gaids) - let genGovState (parent, idx) = do - state <- - GovActionState - <$> pure idx - <*> pure Map.empty - <*> pure Map.empty - <*> pure Map.empty - <*> ( ProposalProcedure - <$> genRep @era CoinR - <*> arbitrary - <*> genGovAction proof CommitteePurpose parent - <*> arbitrary - ) - <*> arbitrary - <*> arbitrary - pure (state & gasActionL .~ setActionId (gasAction state) parent) - states <- mapM genGovState pairs - pure (Map.fromList (map (\x -> (gasId x, x)) states)) - -genGovAction :: - forall era. - Era era => - Proof era -> - GovActionPurpose -> - Maybe (GovActionId (EraCrypto era)) -> - Gen (GovAction era) -genGovAction proof purpose gaid = case purpose of - PParamUpdatePurpose -> ParameterChange (liftId gaid) <$> (unPParamsUpdate <$> genPParamsUpdate proof) <*> arbitrary - HardForkPurpose -> HardForkInitiation (liftId gaid) <$> arbitrary - CommitteePurpose -> - frequency - [ (1, pure (NoConfidence (liftId gaid))) - , - ( 1 - , UpdateCommittee (liftId gaid) - <$> genSizedRep @era 2 (SetR CommColdCredR) - <*> genSizedRep @era 3 (MapR CommColdCredR EpochR) - <*> arbitrary - ) - ] - ConstitutionPurpose -> NewConstitution (liftId gaid) <$> arbitrary - --- =========================================================================================== --- Make sure that any PParamsUpdate in a Proposal does not change certain crucial parameters --- We currently generate well formed, but unreasonable ParameterChange GovActions. --- depending on what kind of Tx you generate, you might want to ensure some PParam fields --- take on reasonable values for your Tx generator. - -mapOMap :: OMap.HasOKey k v => (v -> v) -> OMap.OMap k v -> OMap.OMap k v -mapOMap f x = foldr accum OMap.empty x - where - accum y ys = f y OMap.<| ys - -updateProposals :: (GovAction era -> GovAction era) -> Proposals era -> Proposals era -updateProposals f x = x & pPropsL %~ (mapOMap (\y -> y & gasActionL %~ f)) - -updateGovAction :: (PParamsUpdate era -> PParamsUpdate era) -> GovAction era -> GovAction era -updateGovAction g (ParameterChange x y z) = ParameterChange x (g y) z -updateGovAction _ x = x - --- | What is reasonable for a Tx generated in Conway by 'drepCertTx' --- Well parameters that affect the Fee, the Tx Size, TxOuts, and DRep Deposits -reasonable :: ConwayEraPParams era => Proposals era -> Proposals era -reasonable = - updateProposals - ( updateGovAction - ( \x -> - x - & ppuMaxTxSizeL .~ SNothing - & ppuMinFeeAL .~ SNothing - & ppuMinFeeBL .~ SNothing - & ppuMaxValSizeL .~ SNothing - & ppuCoinsPerUTxOByteL .~ SNothing - & ppuMinFeeRefScriptCostPerByteL .~ SNothing - & ppuDRepDepositL .~ SNothing - ) - ) diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/NewEpochState.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/NewEpochState.hs deleted file mode 100644 index a973b98b802..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/NewEpochState.hs +++ /dev/null @@ -1,153 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Constrained.Preds.NewEpochState where - -import Cardano.Ledger.EpochBoundary (SnapShot (..), Stake (..), calculatePoolDistr) -import Cardano.Ledger.Era (Era) -import Cardano.Ledger.PoolDistr (PoolDistr (..)) -import Cardano.Ledger.Shelley.Core (EraGov) -import qualified Cardano.Ledger.UMap as UMap -import Control.Monad (when) -import Data.Default.Class (Default (def)) -import qualified Data.Map.Strict as Map -import qualified Data.VMap as VMap -import Test.Cardano.Ledger.Constrained.Ast -import Test.Cardano.Ledger.Constrained.Env -import Test.Cardano.Ledger.Constrained.Monad (monadTyped) -import Test.Cardano.Ledger.Constrained.Preds.CertState (dstateStage, pstateStage, vstateStage) -import Test.Cardano.Ledger.Constrained.Preds.LedgerState (ledgerStateStage) -import Test.Cardano.Ledger.Constrained.Preds.PParams (pParamsStage) -import Test.Cardano.Ledger.Constrained.Preds.Repl (ReplMode (..), modeRepl) -import Test.Cardano.Ledger.Constrained.Preds.UTxO (utxoStage) -import Test.Cardano.Ledger.Constrained.Preds.Universes (universeStage) -import Test.Cardano.Ledger.Constrained.Rewrite (OrderInfo (..), standardOrderInfo) -import Test.Cardano.Ledger.Constrained.Solver (toolChainSub) -import Test.Cardano.Ledger.Constrained.TypeRep -import Test.Cardano.Ledger.Constrained.Utils (testIO) -import Test.Cardano.Ledger.Constrained.Vars -import Test.Cardano.Ledger.Generic.PrettyCore (pcEpochState, pcNewEpochState) -import Test.Cardano.Ledger.Generic.Proof -import Test.QuickCheck -import Test.Tasty (TestTree, defaultMain) - --- =========================================================== - -epochstatePreds :: EraGov era => Proof era -> [Pred era] -epochstatePreds _proof = - [ incrementalStake :=: markStake - , delegations :=: markDelegs - , regPools :=: markPools - , Dom setStake `Subset` credsUniv - , Dom setDelegs `Subset` credsUniv - , Rng setDelegs `Subset` poolHashUniv - , Sized (Range 1 2) setPools - , Dom setPools `Subset` poolHashUniv - , Dom goStake `Subset` credsUniv - , Dom goDelegs `Subset` credsUniv - , Rng goDelegs `Subset` poolHashUniv - , Sized (Range 1 2) goPools - , Dom goPools `Subset` poolHashUniv - , Random snapShotFee - , markPoolDistr - :<-: ( Constr - "calculatePoolDistr" - ( \stak del pl -> - unPoolDistr $ - calculatePoolDistr - ( SnapShot - (Stake (VMap.fromMap (Map.map UMap.compactCoinOrError stak))) - (VMap.fromMap del) - (VMap.fromMap pl) - ) - ) - ^$ markStake - ^$ markDelegs - ^$ markPools - ) - ] - -newEpochStatePreds :: Era era => Proof era -> [Pred era] -newEpochStatePreds _proof = - [ Sized (ExactSize 4) (Dom prevBlocksMade) -- Both prevBlocksMade and prevBlocksMadeDom will have size 4 - , Sized (ExactSize 4) (Dom currBlocksMade) - , Dom prevBlocksMade `Subset` poolHashUniv - , Dom currBlocksMade `Subset` poolHashUniv - ] - --- ======================== - -epochStateStage :: - Reflect era => - Proof era -> - Subst era -> - Gen (Subst era) -epochStateStage proof = toolChainSub proof standardOrderInfo (epochstatePreds proof) - -demoES :: Reflect era => Proof era -> ReplMode -> IO () -demoES proof mode = do - env <- - generate - ( pure emptySubst - >>= pParamsStage proof - >>= universeStage def proof - >>= utxoStage def proof - >>= vstateStage proof - >>= pstateStage proof - >>= dstateStage proof - >>= ledgerStateStage def proof - >>= epochStateStage proof - >>= (\subst -> monadTyped $ substToEnv subst emptyEnv) - ) - epochstate <- monadTyped $ runTarget env (epochStateT proof) - let env2 = getTarget epochstate (epochStateT proof) emptyEnv - when (mode == Interactive) $ print (pcEpochState proof epochstate) - modeRepl mode proof env2 "" - -demoESTest :: TestTree -demoESTest = testIO "Testing EpochState Stage" (demoES Conway CI) - -mainES :: IO () -mainES = defaultMain $ testIO "Testing EpochState Stage" (demoES Conway Interactive) - --- ==================================================== - -newEpochStateStage :: - Reflect era => - Proof era -> - Subst era -> - Gen (Subst era) -newEpochStateStage proof = toolChainSub proof (standardOrderInfo {sumBeforeParts = False}) (newEpochStatePreds proof) - -demoNES :: Reflect era => Proof era -> ReplMode -> IO () -demoNES proof mode = do - env <- - generate - ( pure emptySubst - >>= pParamsStage proof - >>= universeStage def proof - >>= vstateStage proof - >>= pstateStage proof - >>= dstateStage proof - >>= ledgerStateStage def proof - >>= epochStateStage proof - >>= newEpochStateStage proof - >>= (\subst -> monadTyped $ substToEnv subst emptyEnv) - ) - newepochstate <- monadTyped $ runTarget env (newEpochStateT proof) - let env2 = getTarget newepochstate (newEpochStateT proof) emptyEnv - when (mode == Interactive) $ putStrLn (show (pcNewEpochState proof newepochstate)) - modeRepl mode proof env2 "" - -demoNESTest :: TestTree -demoNESTest = testIO "Testing NewEpochState Stage" (demoNES Conway CI) - -mainNES :: IO () -mainNES = defaultMain $ testIO "Testing NewEpochState Stage" (demoNES Conway Interactive) - --- ========================== diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/PParams.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/PParams.hs deleted file mode 100644 index a6599aca0ad..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/PParams.hs +++ /dev/null @@ -1,160 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Constrained.Preds.PParams ( - pParamsPreds, - pParamsStage, - extract, - mainPParams, - demoTest, -) where - -import Cardano.Ledger.Alonzo.Scripts (ExUnits (..)) -import qualified Cardano.Ledger.Alonzo.Scripts as Script (Prices (..)) -import Cardano.Ledger.Api.Era -import Cardano.Ledger.BaseTypes ( - EpochInterval (..), - NonNegativeInterval, - boundRational, - ) -import Cardano.Ledger.Coin (Coin (..)) -import Control.Monad (when) -import GHC.Num (Natural) -import Lens.Micro ((^.)) -import Test.Cardano.Ledger.Constrained.Ast -import Test.Cardano.Ledger.Constrained.Classes (OrdCond (..)) -import Test.Cardano.Ledger.Constrained.Env (Access (..), V (..), emptyEnv) -import Test.Cardano.Ledger.Constrained.Monad (monadTyped) -import Test.Cardano.Ledger.Constrained.Preds.Repl (ReplMode (..), modeRepl) -import Test.Cardano.Ledger.Constrained.Rewrite (standardOrderInfo) -import Test.Cardano.Ledger.Constrained.Solver -import Test.Cardano.Ledger.Constrained.TypeRep -import Test.Cardano.Ledger.Constrained.Utils (testIO) -import Test.Cardano.Ledger.Constrained.Vars -import Test.Cardano.Ledger.Generic.Fields -import Test.Cardano.Ledger.Generic.Functions (protocolVersion) -import Test.Cardano.Ledger.Generic.Proof -import Test.Cardano.Ledger.Generic.Updaters (defaultCostModels, newPParams) -import Test.Tasty (TestTree, defaultMain) -import Test.Tasty.QuickCheck - -extract :: Era era => Term era t -> Term era s -> Pred era -extract term@(Var (V _ _ (Yes r1 lens))) record = - case testEql r1 (termRep record) of - Just Refl -> term :<-: (Constr "lookup" (\x -> x ^. lens) ^$ record) - Nothing -> error ("Term " ++ show term ++ " with bad Access in extract2") -extract term _ = error ("Non Var term " ++ show term ++ " in extract2") - --- ===================================================== - -nonNegativeInterval :: Rational -> NonNegativeInterval -nonNegativeInterval r = case (boundRational @NonNegativeInterval r) of - Just nn -> nn - Nothing -> error ("Can't make NonNegativeInterval from: " ++ show r) - -{- Preds we want to be True in pparams. This comment is meant as a statement of intent - The actual code acheives this algorithmically, but we want this declaration of what should be true - [ Sized (AtLeast 1) (maxBHSize proof) - , Sized (AtLeast 1) (maxTxSize proof) - , SumsTo (Right 1) (maxBBSize proof) LTE [One (maxBHSize proof), One (maxTxSize proof)] - , Component - (Right (pparams proof)) - [field pp (maxTxSize proof), field pp (maxBHSize proof), field pp (maxBBSize proof)] - ] --} - -genPParams :: Reflect era => Proof era -> Natural -> Natural -> Natural -> Gen (PParamsF era) -genPParams proof tx bb bh = do - maxTxExUnits2 <- - ExUnits - <$> (fromIntegral <$> choose (100 :: Int, 10000)) - <*> (fromIntegral <$> choose (100 :: Int, 10000)) - maxCollateralInputs <- elements [3 .. 5] - collateralPercentage2 <- fromIntegral <$> chooseInt (1, 200) - minfeeA <- Coin <$> choose (0, 100) - minfeeB <- Coin <$> choose (0, 10) - pure - ( PParamsF proof $ - newPParams - proof - [ MinfeeA minfeeA - , MinfeeB minfeeB - , Prices (Script.Prices (nonNegativeInterval 1.0) (nonNegativeInterval 1.0)) - , defaultCostModels proof - , MaxValSize 1000 - , MaxTxSize (fromIntegralBounded "TxSize" tx) -- In the Model these are Natural - , MaxBBSize (fromIntegralBounded "BlockBodySize" bb) -- But in the PParams, they are - , MaxBHSize (fromIntegralBounded "BlockHeaderSize" bh) -- Word32, Word32, and Word16 - , MaxTxExUnits maxTxExUnits2 - , MaxCollateralInputs maxCollateralInputs - , CollateralPercentage collateralPercentage2 - , ProtocolVersion $ protocolVersion proof - , PoolDeposit $ Coin 5 - , KeyDeposit $ Coin 2 - , DRepDeposit $ Coin 7 - , GovActionDeposit $ Coin 13 - , DRepActivity $ EpochInterval 8 - , EMax $ EpochInterval 100 - ] - ) - -pParamsPreds :: Reflect era => Proof era -> [Pred era] -pParamsPreds p = - [ GenFrom - (pparams p) - ( Constr "genPParams" (genPParams p) - ^$ (maxTxSize p) - ^$ (maxBBSize p) - ^$ (maxBHSize p) - ) - , extract (protVer p) (pparams p) - , extract (minFeeA p) (pparams p) - , extract (minFeeB p) (pparams p) - , extract (keyDepAmt p) (pparams p) - , extract (poolDepAmt p) (pparams p) - , extract (maxEpoch p) (pparams p) - , Sized (AtLeast 100) (maxBHSize p) - , Sized (AtLeast 40000) (maxTxSize p) - , SumsTo (Right 1) (maxBBSize p) LTE [One (maxBHSize p), One (maxTxSize p)] - , (protVer p) `CanFollow` (prevProtVer p) - ] - ++ ( case whichPParams p of - PParamsShelleyToMary -> [] - PParamsAlonzoToAlonzo -> - [ extract (maxTxExUnits p) (pparams p) - , extract (collateralPercentage p) (pparams p) - ] - PParamsBabbageToBabbage -> - [ extract (maxTxExUnits p) (pparams p) - , extract (collateralPercentage p) (pparams p) - ] - PParamsConwayToConway -> - [ extract (maxTxExUnits p) (pparams p) - , extract (collateralPercentage p) (pparams p) - , extract (drepActivity p) (pparams p) - , extract (drepDeposit p) (pparams p) - , extract (proposalDeposit p) (pparams p) - ] - ) - -pParamsStage :: - Reflect era => - Proof era -> - Subst era -> - Gen (Subst era) -pParamsStage proof = toolChainSub proof standardOrderInfo (pParamsPreds proof) - -demo :: ReplMode -> IO () -demo mode = do - let proof = Babbage - subst <- generate (pParamsStage proof emptySubst) - env <- monadTyped (substToEnv subst emptyEnv) - when (mode == Interactive) $ putStrLn "\n" >> putStrLn (show subst) - modeRepl mode proof env "" - -demoTest :: TestTree -demoTest = testIO "Testing TxOut Stage" (demo CI) - -mainPParams :: IO () -mainPParams = defaultMain $ testIO "Testing TxOut Stage" (demo Interactive) diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/Repl.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/Repl.hs deleted file mode 100644 index fb3219e89e5..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/Repl.hs +++ /dev/null @@ -1,79 +0,0 @@ -{-# LANGUAGE GADTs #-} -{-# LANGUAGE ScopedTypeVariables #-} - -module Test.Cardano.Ledger.Constrained.Preds.Repl (goRepl, repl, ReplMode (..), modeRepl) where - -import Data.Char (toLower) -import qualified Data.List as List -import qualified Data.Map as Map -import qualified Data.Set as Set -import System.Console.Haskeline ( - InputT, - defaultSettings, - getInputLine, - outputStrLn, - runInputT, - setComplete, - ) -import System.Console.Haskeline.Completion (completeWord, simpleCompletion) -import Test.Cardano.Ledger.Constrained.Env -import Test.Cardano.Ledger.Constrained.Size (seps) -import Test.Cardano.Ledger.Constrained.TypeRep - --- ===================================================== - -repl :: Proof era -> Env era -> IO () -repl proof env = runInputT defaultSettings (loop proof env) - -goRepl :: Proof era -> Env era -> String -> IO () -goRepl p env@(Env emap) str = runInputT (setComplete comp defaultSettings) (helpRepl p env str) - where - keys = Set.toList (Map.keysSet emap) - comp = completeWord Nothing [' '] (\s -> pure (map simpleCompletion (filter (List.isPrefixOf s) keys))) - -loop :: Proof era -> Env era -> InputT IO () -loop proof env@(Env emap) = do - minput <- getInputLine "prompt> " - case minput of - Nothing -> return () - Just ":q" -> return () - Just "help" -> helpRepl proof env [] - Just "?" -> helpRepl proof env [] - Just (':' : 'p' : more) -> helpRepl proof env more - Just str -> - case Map.lookup (filter (/= ' ') str) emap of - Nothing -> outputStrLn "Not found" >> loop proof env - Just (Payload rep t _) -> do - outputStrLn (str ++ " :: " ++ show rep) - outputStrLn (format rep t) - loop proof env - -helpRepl :: forall era. Proof era -> Env era -> [Char] -> InputT IO () -helpRepl proof env@(Env emap) more = do - let keys = Set.toList (Map.keysSet emap) - matches = filter (\k -> List.isInfixOf (map toLower more) (map toLower k)) keys - if more == "" - then - outputStrLn - ( unlines - [ "\nEnter one of these Strings at the 'prompt>' to see its value." - , "Type ':q' to exit." - , "Type ':pXXX' to see variables whose name contains the substring 'XXX' (case insensitive)." - , "Type 'help' or '?' to see these instructions.\n" - ] - ) - else pure () - outputStrLn (seps matches) - outputStrLn "" - loop proof env - --- ======================================== - -data ReplMode = Interactive | CI - deriving (Eq) - -modeRepl :: ReplMode -> Proof era -> Env era -> String -> IO () -modeRepl Interactive p e s = goRepl p e s -modeRepl CI _ (Env emap) _ = do - let keys = Set.toList (Map.keysSet emap) - putStrLn (seps keys) diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/Tx.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/Tx.hs deleted file mode 100644 index d8e656ce75c..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/Tx.hs +++ /dev/null @@ -1,1086 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeOperators #-} - --- ============================================== - -module Test.Cardano.Ledger.Constrained.Preds.Tx where - -import Cardano.Crypto.Signing (SigningKey) -import Cardano.Ledger.Address (Addr (..), BootstrapAddress, RewardAccount (..)) -import Cardano.Ledger.Alonzo.Scripts (AlonzoScript (..), ExUnits (..), plutusScriptLanguage, toAsIx) -import Cardano.Ledger.Alonzo.Tx (IsValid (..)) -import Cardano.Ledger.Alonzo.TxWits (TxDats (..)) -import Cardano.Ledger.Alonzo.UTxO (getInputDataHashesTxBody) -import Cardano.Ledger.Api (setMinFeeTxUtxo) -import Cardano.Ledger.Babbage.UTxO (getReferenceScripts) -import Cardano.Ledger.BaseTypes (Network (..), ProtVer (..), strictMaybeToMaybe) -import Cardano.Ledger.Binary.Decoding (mkSized, sizedSize) -import Cardano.Ledger.Binary.Encoding (EncCBOR) -import Cardano.Ledger.CertState (CertState, certDStateL, dsGenDelegsL) -import Cardano.Ledger.Coin (Coin (..), rationalToCoinViaCeiling) -import Cardano.Ledger.Conway.Core -import Cardano.Ledger.Keys ( - GenDelegPair (..), - GenDelegs (..), - Hash, - KeyHash, - KeyRole (..), - WitVKey (..), - asWitness, - coerceKeyRole, - ) -import Cardano.Ledger.Keys.Bootstrap (BootstrapWitness) -import Cardano.Ledger.Mary.Value (AssetName, MaryValue (..), MultiAsset (..), PolicyID (..)) -import Cardano.Ledger.Plutus.Data (Data (..)) -import Cardano.Ledger.Plutus.Language (Language (..)) -import Cardano.Ledger.SafeHash (SafeHash, extractHash, hashAnnotated) -import Cardano.Ledger.Shelley.AdaPots (consumedTxBody, producedTxBody) -import Cardano.Ledger.Shelley.LedgerState (LedgerState, NewEpochState) -import Cardano.Ledger.Shelley.Rules (LedgerEnv (..)) -import Cardano.Ledger.Shelley.TxCert (isInstantaneousRewards) -import Cardano.Ledger.TxIn (TxIn (..)) -import Cardano.Ledger.UTxO (EraUTxO (..), ScriptsProvided (..), UTxO (..)) -import Cardano.Ledger.Val (Val (..), inject) -import Control.Monad (when) -import Control.State.Transition.Extended (STS (..), TRC (..)) -import Data.Default.Class (Default (def)) -import Data.Foldable (foldl', toList) -import qualified Data.List as List -import Data.Map (Map) -import qualified Data.Map.Strict as Map -import Data.Ratio ((%)) -import Data.Set (Set) -import qualified Data.Set as Set -import Data.Text (Text, pack) -import Data.Word (Word64) -import GHC.Stack (HasCallStack) -import Lens.Micro -import Test.Cardano.Ledger.Constrained.Ast -import Test.Cardano.Ledger.Constrained.Classes -import Test.Cardano.Ledger.Constrained.Env -import Test.Cardano.Ledger.Constrained.Lenses (fstL, sndL) -import Test.Cardano.Ledger.Constrained.Monad ( - Typed, - errorTyped, - failT, - generateWithSeed, - monadTyped, - ) -import Test.Cardano.Ledger.Constrained.Preds.CertState (dstateStage, pstateStage, vstateStage) -import Test.Cardano.Ledger.Constrained.Preds.Certs (certsStage) -import Test.Cardano.Ledger.Constrained.Preds.LedgerState (ledgerStateStage) -import Test.Cardano.Ledger.Constrained.Preds.NewEpochState (epochStateStage, newEpochStateStage) -import Test.Cardano.Ledger.Constrained.Preds.PParams (pParamsStage) -import Test.Cardano.Ledger.Constrained.Preds.Repl (ReplMode (..), goRepl, modeRepl) -import Test.Cardano.Ledger.Constrained.Preds.TxOut (txOutPreds) -import Test.Cardano.Ledger.Constrained.Preds.UTxO (utxoStage) -import Test.Cardano.Ledger.Constrained.Preds.Universes hiding (demo, demoTest, main) -import Test.Cardano.Ledger.Constrained.Rewrite -import Test.Cardano.Ledger.Constrained.Scripts (sufficientScript) -import Test.Cardano.Ledger.Constrained.Size (Size (..)) -import Test.Cardano.Ledger.Constrained.Solver (toolChainSub) -import Test.Cardano.Ledger.Constrained.TypeRep -import Test.Cardano.Ledger.Constrained.Vars hiding (totalAda) -import Test.Cardano.Ledger.Core.KeyPair (KeyPair (..), mkWitnessVKey) -import Test.Cardano.Ledger.Generic.Fields ( - TxBodyField (..), - TxField (..), - abstractTx, - abstractTxBody, - ) -import Test.Cardano.Ledger.Generic.Functions (TotalAda (totalAda), protocolVersion) -import Test.Cardano.Ledger.Generic.GenState (mkRedeemers) -import Test.Cardano.Ledger.Generic.PrettyCore ( - PDoc, - PrettyA (..), - pcGenDelegPair, - pcKeyHash, - pcLedgerState, - pcScript, - pcScriptHash, - pcTx, - pcTxBody, - pcTxBodyField, - pcTxField, - pcTxIn, - pcTxOut, - ppMap, - ppRecord, - ppSafeHash, - ppString, - psNewEpochState, - putDoc, - ) -import Test.Cardano.Ledger.Generic.Proof -import Test.Cardano.Ledger.Generic.TxGen (applySTSByProof) -import Test.Cardano.Ledger.Generic.Updaters (newScriptIntegrityHash) -import Test.QuickCheck -import Test.Tasty (TestTree, defaultMain, testGroup) -import Test.Tasty.QuickCheck (testProperty) - -import Cardano.Ledger.DRep (drepDepositL) -import Cardano.Ledger.EpochBoundary (SnapShot (..), Stake (..), calculatePoolDistr) -import qualified Cardano.Ledger.UMap as UMap -import qualified Data.VMap as VMap -import qualified Test.Cardano.Ledger.Constrained.Preds.CertState as CertState -import qualified Test.Cardano.Ledger.Constrained.Preds.Certs as Certs -import qualified Test.Cardano.Ledger.Constrained.Preds.LedgerState as LedgerState -import qualified Test.Cardano.Ledger.Constrained.Preds.PParams as PParams -import qualified Test.Cardano.Ledger.Constrained.Preds.TxOut as TxOut -import qualified Test.Cardano.Ledger.Constrained.Preds.Universes as Universes -import Test.Cardano.Ledger.Constrained.Utils (checkForSoundness, testIO) - -predsTests :: TestTree -predsTests = - testGroup - "Testing all Stages in the Preds directory" - [ PParams.demoTest - , Universes.demoTest - , TxOut.demoTest - , CertState.demoTest - , Certs.demoTest - , LedgerState.demoTest - ] - --- =========================================================== - -txBodySize :: forall era. Reflect era => TxBody era -> Int -txBodySize txb = fromIntegral (sizedSize (mkSized (pvMajor (protocolVersion (reify @era))) txb)) - -byteSize :: forall era a. (EncCBOR a, Reflect era) => Proof era -> a -> Int -byteSize _ x = fromIntegral (sizedSize (mkSized (pvMajor (protocolVersion (reify @era))) x)) - -byteSizeT :: forall era a. (EncCBOR a, Reflect era) => Term era a -> Target era Int -byteSizeT x = Constr "byteSize" (byteSize (reify @era)) ^$ x - --- =============================================== --- Helpful Lenses - -txFL :: Lens' (TxF era) (Tx era) -txFL = lens (\(TxF _ x) -> x) (\(TxF p _) x -> TxF p x) - --- ================================================ --- Auxiliary functions and Targets - -computeFinalFee :: - EraUTxO era => - PParamsF era -> - TxF era -> - Map (TxIn (EraCrypto era)) (TxOutF era) -> - Coin -computeFinalFee (PParamsF _ ppV) (TxF _ txV) ut = newtx ^. (bodyTxL . feeTxBodyL) - where - newtx = setMinFeeTxUtxo ppV txV (liftUTxO ut) - -integrityHash :: - Era era1 => - Proof era1 -> - Term era2 (PParamsF era1) -> - Term era2 (Set Language) -> - Term era2 (Map (PlutusPointerF era1) (Data era1, ExUnits)) -> - Term era2 (Map (DataHash (EraCrypto era1)) (Data era1)) -> - Target era2 (Maybe (ScriptIntegrityHash (EraCrypto era1))) -integrityHash p pp langs rs ds = Constr "integrityHash" hashfun ^$ pp ^$ langs ^$ rs ^$ ds - where - hashfun (PParamsF _ ppp) ls r d = - let r' = [(ptr, de) | (PlutusPointerF _ ptr, de) <- Map.toList r] - in strictMaybeToMaybe $ - newScriptIntegrityHash p ppp (Set.toList ls) (mkRedeemers p r') (TxDats d) - --- | "Construct the Scripts Needed to compute the Script Witnesses from the UTxO and the partial TxBody -needT :: - forall era. - EraUTxO era => - Proof era -> - Target - era - ( TxBodyF era -> - Map (TxIn (EraCrypto era)) (TxOutF era) -> - ScriptsNeededF era - ) -needT proof = Constr "neededScripts" needed - where - needed :: TxBodyF era -> Map (TxIn (EraCrypto era)) (TxOutF era) -> ScriptsNeededF era - needed (TxBodyF _ txbodyV) ut = ScriptsNeededF proof (getScriptsNeeded (liftUTxO ut) txbodyV) - -rdmrPtrsT :: - AlonzoEraScript era => - Target - era - ( [((PlutusPurposeF era), (ScriptHash (EraCrypto era)))] -> - Map (ScriptHash (EraCrypto era)) any -> - Set (PlutusPointerF era) - ) -rdmrPtrsT = Constr "getRdmrPtrs" getRdmrPtrs - -getRdmrPtrs :: - AlonzoEraScript era => - [((PlutusPurposeF era), (ScriptHash (EraCrypto era)))] -> - Map (ScriptHash (EraCrypto era)) any -> - Set (PlutusPointerF era) -getRdmrPtrs xs allplutus = List.foldl' accum Set.empty xs - where - accum ans (PlutusPurposeF p sp, hash) - | Map.member hash allplutus = - let ptr = hoistPlutusPurpose toAsIx sp - in Set.insert (PlutusPointerF p ptr) ans - | otherwise = ans - -getPlutusDataHashes :: - (AlonzoEraTxOut era, EraTxBody era, EraScript era) => - Map (TxIn (EraCrypto era)) (TxOutF era) -> - TxBodyF era -> - Map (ScriptHash (EraCrypto era)) (ScriptF era) -> - Set (DataHash (EraCrypto era)) -getPlutusDataHashes ut (TxBodyF _ txbodyV) m = - fst $ getInputDataHashesTxBody (liftUTxO ut) txbodyV (ScriptsProvided (Map.map unScriptF m)) - -bootWitsT :: - forall era. - Reflect era => - Proof era -> - Map (TxIn (EraCrypto era)) (TxOutF era) -> - TxBodyF era -> - Map (KeyHash 'Payment (EraCrypto era)) (Addr (EraCrypto era), SigningKey) -> - Set (BootstrapWitness (EraCrypto era)) -bootWitsT proof spend (TxBodyF _ txb) byronUniv = bootWitness h boots byronUniv - where - boots :: [BootstrapAddress (EraCrypto era)] -- Not every Addr has a BootStrapAddress - boots = Map.foldl' accum [] spend -- Compute a list of them. - where - accum ans (TxOutF _ out) = case out ^. addrTxOutL of - AddrBootstrap b -> b : ans - _ -> ans - h = hashBody proof txb - -hashBody :: forall era. Proof era -> TxBody era -> Hash (EraCrypto era) EraIndependentTxBody -hashBody Shelley txb = extractHash @(EraCrypto era) (hashAnnotated txb) -hashBody Allegra txb = extractHash @(EraCrypto era) (hashAnnotated txb) -hashBody Mary txb = extractHash @(EraCrypto era) (hashAnnotated txb) -hashBody Alonzo txb = extractHash @(EraCrypto era) (hashAnnotated txb) -hashBody Babbage txb = extractHash @(EraCrypto era) (hashAnnotated txb) -hashBody Conway txb = extractHash @(EraCrypto era) (hashAnnotated txb) - --- ======================================= - --- | Get enough GenDeleg KeyHashes to satisfy the quorum constraint. -sufficientGenDelegs :: Map k (GenDelegPair c) -> Set (KeyHash 'Witness c) -sufficientGenDelegs gendel = - Set.fromList (take (fromIntegral quorumConstant) (asWitness . genDelegKeyHash <$> Map.elems gendel)) - -sufficientTxCert :: - forall era. - Reflect era => - [TxCertF era] -> - Map (KeyHash 'Genesis (EraCrypto era)) (GenDelegPair (EraCrypto era)) -> - Set (KeyHash 'Witness (EraCrypto era)) -sufficientTxCert cs gendel = case whichTxCert (reify @era) of - TxCertShelleyToBabbage -> foldl' accum Set.empty cs - where - accum ans (TxCertF _ cert) = - if isInstantaneousRewards cert - then Set.union ans (sufficientGenDelegs gendel) - else ans - TxCertConwayToConway -> foldl' accum Set.empty cs - where - accum ans (TxCertF _ _) = Set.union ans (sufficientGenDelegs gendel) - --- IS THIS RIGHT, DO WE need the isInstantaneousRewards TEST? - --- | Compute sufficient set of keys to make the scripts succeed. --- The script map is the map of all 'needed' scripts. Some of those --- scripts may NOT be in the 'scriptWits' (those which are reference scripts) --- but all needed scripts will need to have their KeyHashes added. -sufficientScriptKeys :: - Proof era -> - Map (ScriptHash (EraCrypto era)) (ScriptF era) -> - Set (KeyHash 'Witness (EraCrypto era)) -sufficientScriptKeys proof scriptmap = Map.foldl' accum Set.empty scriptmap - where - accum ans (ScriptF _ s) = Set.union ans (sufficientScript proof s) - -sufficientKeyHashes :: - Reflect era => - Proof era -> - Map (ScriptHash (EraCrypto era)) (ScriptF era) -> - [TxCertF era] -> - Map (KeyHash 'Genesis (EraCrypto era)) (GenDelegPair (EraCrypto era)) -> - Set (KeyHash 'Witness (EraCrypto era)) -sufficientKeyHashes p scriptmap cs gendel = - Set.union - (sufficientScriptKeys p scriptmap) - (sufficientTxCert cs gendel) - --- ======================================= - -pcUtxo :: Reflect era => Map (TxIn (EraCrypto era)) (TxOutF era) -> String -pcUtxo m = show (pcUtxoDoc m) - -pcUtxoDoc :: Reflect era => Map (TxIn (EraCrypto era)) (TxOutF era) -> PDoc -pcUtxoDoc m = ppMap pcTxIn (\(TxOutF p o) -> pcTxOut p o) m - -necessaryKeyHashTarget :: - forall era. - Reflect era => - Term era (TxBodyF era) -> - Term era (Set (KeyHash 'Witness (EraCrypto era))) -> - -- Target era (Set (WitVKey 'Witness (EraCrypto era))) - Target era (Set (KeyHash 'Witness (EraCrypto era))) -necessaryKeyHashTarget txbodyparam reqSignersparam = - ( Constr "keywits" necessaryKeyHashes - ^$ txbodyparam - ^$ (utxo reify) - ^$ genDelegs - -- ^$ keymapUniv - ^$ reqSignersparam - ) - --- | Compute the needed key witnesses from a transaction body. --- First find all the key hashes from every use of keys in the transaction --- Then find the KeyPair's associated with those hashes, then --- using the hash of the TxBody, turn the KeyPair into a witness. --- In Eras Shelley to Mary, 'reqsigners' should be empty. In Eras Alonzo to Conway --- we will need to add the witnesses for the required signer hashes, so they are --- passed in. To compute the witnsses we need the hash of the TxBody. We will call this function --- twice. Once when we have constructed the 'tempTxBody' used to estimate the fee, and a second time --- with 'txBodyTerm' where the fee is correct. --- The underlying function 'shelleyWitsVKeyNeeded' computes the necesary (but not sufficient) --- key witnesses. The missing ones have to do with MultiSig (and Timelock) scripts and Mir --- certificates (ones where 'isInstantaneousRewards' predicate is True). So we have to add these as well. --- A MultiSig (Timelock) scripts needs witnesses for enough Signature scripts to make it True. --- MIRCert needs enough witnesses from genDelegs to make the quorum constraint true. -necessaryKeyHashes :: - forall era. - Reflect era => - TxBodyF era -> - Map (TxIn (EraCrypto era)) (TxOutF era) -> - Map (KeyHash 'Genesis (EraCrypto era)) (GenDelegPair (EraCrypto era)) -> - Set (KeyHash 'Witness (EraCrypto era)) -> -- Only in Eras Alonzo To Conway, - Set (KeyHash 'Witness (EraCrypto era)) -necessaryKeyHashes (TxBodyF _ txb) u gd reqsigners = - case reify @era of - Shelley -> Set.union (getWitsVKeyNeeded certState (liftUTxO u) txb) reqsigners - Allegra -> Set.union (getWitsVKeyNeeded certState (liftUTxO u) txb) reqsigners - Mary -> Set.union (getWitsVKeyNeeded certState (liftUTxO u) txb) reqsigners - Alonzo -> Set.union (getWitsVKeyNeeded certState (liftUTxO u) txb) reqsigners - Babbage -> Set.union (getWitsVKeyNeeded certState (liftUTxO u) txb) reqsigners - Conway -> Set.union (getWitsVKeyNeeded def (liftUTxO u) txb) reqsigners - where - certState :: CertState era - certState = def & certDStateL . dsGenDelegsL .~ GenDelegs gd - --- ======================================================== - -makeKeyWitnessTarget :: - Reflect era => - Term era (TxBodyF era) -> - Term era (Set (KeyHash 'Witness (EraCrypto era))) -> - Term era (Set (KeyHash 'Witness (EraCrypto era))) -> - Term era (Map (ScriptHash (EraCrypto era)) (ScriptF era)) -> - Term era (Map (KeyHash 'Payment (EraCrypto era)) ((Addr (EraCrypto era)), SigningKey)) -> - Target era (Set (WitVKey 'Witness (EraCrypto era))) -makeKeyWitnessTarget txbparam necessary sufficient scripts byAdUniv = - Constr "makeKeyWitness" makeKeyWitness - ^$ txbparam - ^$ necessary - ^$ sufficient - ^$ keymapUniv - ^$ scripts - ^$ genDelegs - ^$ byAdUniv - -makeKeyWitness :: - forall era. - Reflect era => - TxBodyF era -> - Set (KeyHash 'Witness (EraCrypto era)) -> - Set (KeyHash 'Witness (EraCrypto era)) -> - Map (KeyHash 'Witness (EraCrypto era)) (KeyPair 'Witness (EraCrypto era)) -> - Map (ScriptHash (EraCrypto era)) (ScriptF era) -> - Map (KeyHash 'Genesis (EraCrypto era)) (GenDelegPair (EraCrypto era)) -> - Map (KeyHash 'Payment (EraCrypto era)) ((Addr (EraCrypto era)), SigningKey) -> - Set (WitVKey 'Witness (EraCrypto era)) -makeKeyWitness (TxBodyF proof txb) necessary sufficient keyUniv scripts gendel byronAdUniv = keywits - where - bodyhash :: SafeHash (EraCrypto era) EraIndependentTxBody - bodyhash = hashAnnotated txb - keywits = Set.foldl' accum Set.empty (Set.union necessary sufficient) - where - accum ans hash = case Map.lookup hash keyUniv of - Just keypair -> Set.insert (mkWitnessVKey bodyhash keypair) ans - Nothing -> case Map.lookup (coerceKeyRole hash) byronAdUniv of - Just (AddrBootstrap _, _) -> ans -- Bootstrap witnesses are handled in bootWitsT, so we can ignore them here. - _ -> - error - ( "hash not in keymapUniv or byronAddrUniv" - ++ show hash - ++ "\n member necessary = " - ++ show (Set.member hash necessary) - ++ "\n member sufficient = " - ++ show (Set.member hash sufficient) - ++ "\n scripts = " - ++ show (ppMap pcScriptHash (\(ScriptF p s) -> pcScript p s) scripts) - ++ "\n genDelegs = " - ++ show (ppMap pcKeyHash pcGenDelegPair gendel) - ++ "\nbyronAddrUniv\n" - ++ format @era (MapR PayHashR (PairR AddrR SigningKeyR)) byronAdUniv - ++ "\nTxBody =\n" - ++ show (pcTxBody proof txb) - ) - --- =============================================== - -allValid :: [IsValid] -> IsValid -allValid xs = IsValid (all valid xs) - where - valid (IsValid b) = b - -scriptWitsLangs :: Map k (ScriptF era) -> Set Language -scriptWitsLangs m = Map.foldl' accum Set.empty m - where - accum :: Set Language -> ScriptF era -> Set Language - accum ans (ScriptF Alonzo (PlutusScript ps)) = Set.insert (plutusScriptLanguage ps) ans - accum ans (ScriptF Babbage (PlutusScript ps)) = Set.insert (plutusScriptLanguage ps) ans - accum ans (ScriptF Conway (PlutusScript ps)) = Set.insert (plutusScriptLanguage ps) ans - accum ans _ = ans - --- | Starting in the Babbage era, we can adjust the script witnesses by not supplying --- those that appear as a reference script in the UTxO resolved 'spending' inputs. --- {- neededHashes − dom(refScripts tx utxo) = dom(txwitscripts txw) -} --- This function computes the exact set of hashes that must appear in the witnesses. -adjustNeededByRefScripts :: - Proof era -> - (Set (TxIn (EraCrypto era))) -> - (Set (TxIn (EraCrypto era))) -> - (Map (TxIn (EraCrypto era)) (TxOutF era)) -> - (Set (ScriptHash (EraCrypto era))) -> - (Set (ScriptHash (EraCrypto era))) -adjustNeededByRefScripts proof inps refinps ut neededhashes = case whichTxOut proof of - TxOutShelleyToMary -> neededhashes - TxOutAlonzoToAlonzo -> neededhashes - TxOutBabbageToConway -> - let spendUtxo = liftUTxO ut - in Set.difference - neededhashes - ( Set.union - (Map.keysSet (getReferenceScripts spendUtxo inps)) - (Map.keysSet (getReferenceScripts spendUtxo refinps)) - ) - --- ============================================================== - -getUtxoCoinT :: - Reflect era => - Term era (TxIn (EraCrypto era)) -> - Term era (Map (TxIn (EraCrypto era)) (TxOutF era)) -> - Target era Coin -getUtxoCoinT feeinput spending = Constr "getUtxoCoin" getUtxoCoin ^$ feeinput ^$ spending - where - getUtxoCoin input mp = case Map.lookup input mp of - Just (TxOutF _ txout) -> txout ^. coinTxOutL - Nothing -> error "feeinput not in spending" - -getNTxOut :: (HasCallStack, Reflect era) => Size -> TxOutF era -> [TxOutF era] -> [TxOutF era] -getNTxOut (SzExact n) feeoutput outputuniv = - (feeoutput & outputCoinL .~ (Coin 1000000)) : take (n - 1) outputuniv -getNTxOut x _ _ = - error - ( "Non (SzExact n): " - ++ show x - ++ " in getNTxOut. Use (MetaSize size x) to get a random (SzExact n)." - ) - --- | Compute the sum of all the Values in a List(Set,Map, ...) of TxOut -txoutSum :: forall era t. (Foldable t, Reflect era) => t (TxOutF era) -> Value era -txoutSum xs = foldl' accum mempty xs - where - accum ans (TxOutF _ txout) = txout ^. valueTxOutL <+> ans - -minusMultiValue :: - forall era. - Reflect era => - Proof era -> - Value era -> - Value era -> - Map (ScriptHash (EraCrypto era)) (Map AssetName Integer) -minusMultiValue p v1 v2 = case whichValue p of - ValueMaryToConway -> case v1 <-> v2 of MaryValue _ (MultiAsset m) -> Map.mapKeys (\(PolicyID x) -> x) m - ValueShelleyToAllegra -> mempty - --- ============================================================== --- Using constraints to generate a TxBody --- ============================================================== - -txBodyPreds :: forall era. (HasCallStack, Reflect era) => UnivSize -> Proof era -> [Pred era] -txBodyPreds sizes@UnivSize {..} p = - (txOutPreds sizes p balanceCoin (outputs p)) - ++ [ mint - :<-: ( Constr "sumAssets" (\out spend -> minusMultiValue p (txoutSum out) (txoutSum spend)) - ^$ (outputs p) - ^$ spending - ) - , networkID :<-: justTarget network - , -- inputs - Sized (Range usMinInputs usMaxInputs) inputs - , Member (Left feeTxIn) inputs - , Subset inputs (Dom (utxo p)) - , -- collateral - Disjoint inputs collateral - , Sized (Range (usMinCollaterals) (usMaxCollaterals)) collateral - , Subset collateral (Dom colUtxo) - , -- , Member (Left colInput) collateral - colRestriction :=: Restrict collateral colUtxo - , SumsTo (Right (Coin 1)) sumCol EQL [ProjMap CoinR outputCoinL colRestriction] - , tempTotalCol :=: sumCol - , -- withdrawals - Sized (Range 0 2) prewithdrawal - , Subset prewithdrawal (Dom nonZeroRewards) - , if usGenerateWithdrawals - then - withdrawals - :<-: ( Constr - "mkRwrdAcnt" - ( \s r -> - Map.fromList - ( map - (\x -> (RewardAccount Testnet x, r Map.! x)) - (Set.toList s) - ) - ) - ^$ prewithdrawal - ^$ rewards - ) - else Sized (ExactSize 0) withdrawals - , nonZeroRewards :<-: (Constr "filter (/=0)" (Map.filter (/= (Coin 0))) ^$ rewards) - , -- refInputs - Sized (Range 0 1) refInputs - , Subset refInputs (Dom (utxo p)) - , NotMember feeTxIn refInputs - , Disjoint refInputs inputs -- New constraint in Conway, added PR #4024 - , Sized (Range 1 2) reqSignerHashes - , Subset reqSignerHashes (Dom keymapUniv) - , ttl :<-: (Constr "(+5)" (\x -> x + 5) ^$ currentSlot) - , spending :=: Restrict inputs (utxo p) - , SumsTo - (Right (Coin 1)) - balanceCoin - EQL - [ProjMap CoinR outputCoinL spending, SumMap withdrawals, One txrefunds, One txdeposits] - , txrefunds - :<-: ( Constr "certsRefunds" certsRefunds - ^$ pparams p - ^$ stakeDeposits - ^$ drepDepositsView - ^$ certs - ) - , txdeposits :<-: (Constr "certsDeposits" certsDeposits ^$ pparams p ^$ regPools ^$ certs) - , scriptsNeeded :<-: (needT p ^$ tempTxBody ^$ utxo p) - , txisvalid :<-: (Constr "allValid" allValid ^$ valids) - , Maybe txauxdata (Simple oneAuxdata) [Random oneAuxdata] - , adHash :<-: (Constr "hashMaybe" (hashTxAuxDataF <$>) ^$ txauxdata) - , -- Construct a temporary 'Tx' with a size close to the size of the Tx we want. - -- We will use this to compute the 'txfee' using a fix-point approach. - Random randomWppHash - , tempWppHash :<-: justTarget randomWppHash - , tempTxFee :<-: constTarget (Coin (fromIntegral (maxBound :: Word64))) - , tempTxBody - :<-: txbodyTarget tempTxFee tempWppHash (Lit CoinR (Coin (fromIntegral (maxBound :: Word64)))) - , tempTx :<-: txTarget tempTxBody tempBootWits tempKeyWits - , -- Compute the real fee, and then recompute the TxBody and the Tx - txfee :<-: (Constr "finalFee" computeFinalFee ^$ pparams p ^$ tempTx ^$ utxo p) - , -- , txbodyterm :<-: txbodyTarget txfee wppHash totalCol - -- , txterm :<-: txTarget txbodyterm bootWits keyWits - ProjM drepDepositL CoinR currentDRepState :=: drepDepositsView - ] - ++ case whichUTxO p of - UTxOShelleyToMary -> - [ -- The following have no effect in ShelleyToMary, but they need to be defined. So we make them random - Random redeemers - , Random dataWits - , Random (collateralReturn p) - , Random extraCol - , Random totalCol - , Random wppHash - , Restrict (Proj smNeededL (SetR ScriptHashR) scriptsNeeded) (allScriptUniv p) :=: scriptWits - , Elems (ProjM fstL IsValidR (Restrict (Dom scriptWits) plutusUniv)) :=: valids - , tempBootWits :<-: (Constr "boots" (bootWitsT p) ^$ spending ^$ tempTxBody ^$ byronAddrUniv) - , necessaryHashes :<-: necessaryKeyHashTarget @era tempTxBody (Lit (SetR WitHashR) Set.empty) - , sufficientHashes - :<-: (Constr "sufficient" (sufficientKeyHashes p) ^$ scriptWits ^$ certs ^$ genDelegs) - , tempKeyWits - :<-: makeKeyWitnessTarget tempTxBody necessaryHashes sufficientHashes scriptWits byronAddrUniv - , bootWits :<-: (Constr "boots" (bootWitsT p) ^$ spending ^$ txbodyterm ^$ byronAddrUniv) - , keyWits - :<-: makeKeyWitnessTarget txbodyterm necessaryHashes sufficientHashes scriptWits byronAddrUniv - , txbodyterm :<-: txbodyTarget txfee tempWppHash (Lit CoinR (Coin 0)) -- The WppHash and totalCol play no role in ShelleyToMary - , txterm :<-: txTarget txbodyterm bootWits keyWits - ] - UTxOAlonzoToConway -> - [ Sized (ExactSize 0) txDonation - , Proj acNeededL (ListR (PairR (ScriptPurposeR p) ScriptHashR)) scriptsNeeded :=: acNeeded - , -- Hashes of scripts that will be run. Not all of these will be in the 'scriptWits' - neededHashSet :<-: (Constr "toSet" (\x -> Set.fromList (map snd x)) ^$ acNeeded) - , -- Only the refAdjusted scripts need to be in the 'scriptWits' but if the refscripts that are - -- excluded from 'scriptWits' are Timelock scripts, a sufficient set keys must be added to - -- the sufficient key hashes. - refAdjusted - :<-: (Constr "adjust" (adjustNeededByRefScripts p) ^$ inputs ^$ refInputs ^$ (utxo p) ^$ neededHashSet) - , -- , scriptWits :=: Restrict refAdjusted (allScriptUniv p) - Restrict refAdjusted (allScriptUniv p) :=: scriptWits - , Elems (ProjM fstL IsValidR (Restrict neededHashSet plutusUniv)) :=: valids - , rdmrPtrs :<-: (rdmrPtrsT ^$ acNeeded ^$ plutusUniv) - , rdmrPtrs :=: Dom redeemers - , If - (Constr "null" Set.null ^$ rdmrPtrs) - (Before (maxTxExUnits p) redeemers) - (SumsTo (Left (ExUnits 1 1)) (maxTxExUnits p) GTE [ProjMap ExUnitsR sndL redeemers]) - , plutusDataHashes - :<-: ( Constr "plutusDataHashes" getPlutusDataHashes - ^$ utxo p - ^$ tempTxBody - ^$ allScriptUniv p - ) - , Restrict plutusDataHashes dataUniv :=: dataWits - , tempBootWits :<-: (Constr "boots" (bootWitsT p) ^$ spending ^$ tempTxBody ^$ byronAddrUniv) - , necessaryHashes :<-: necessaryKeyHashTarget @era tempTxBody reqSignerHashes - , sufficientHashes - :<-: ( Constr "sufficient" (sufficientKeyHashes p) - ^$ (Restrict neededHashSet (allScriptUniv p)) - ^$ certs - ^$ genDelegs - ) - , tempKeyWits - :<-: makeKeyWitnessTarget tempTxBody necessaryHashes sufficientHashes scriptWits byronAddrUniv - , bootWits :<-: (Constr "boots" (bootWitsT p) ^$ spending ^$ txbodyterm ^$ byronAddrUniv) - , keyWits - :<-: makeKeyWitnessTarget txbodyterm necessaryHashes sufficientHashes scriptWits byronAddrUniv - , -- 'langs' is not computed from the 'scriptWits' because that does not include needed - -- scripts that are reference scripts, So get the scripts from the neededHashSet - langs :<-: (Constr "languages" scriptWitsLangs ^$ (Restrict neededHashSet (allScriptUniv p))) - , wppHash :<-: integrityHash p (pparams p) langs redeemers dataWits - , owed - :<-: ( Constr "owed" (\percent (Coin fee) -> rationalToCoinViaCeiling ((fromIntegral percent * fee) % 100)) - ^$ (collateralPercentage p) - ^$ txfee - ) - , -- we need to add 'extraCol' to the colUtxo, to pay the collateral fee. - -- we arrange this so adding the 'extraCol' will make the sum of the all the collateral inputs, one more than 'owed' - extraCol - :<-: (Constr "extraCol" (\(Coin suminputs) (Coin owe) -> (Coin (owe + 1 - suminputs))) ^$ sumCol ^$ owed) - , totalCol :<-: (Constr "(<+>)" (\x y -> x <+> y <-> Coin 1) ^$ extraCol ^$ sumCol) - , Member (Right colRetAddr) addrUniv - , -- This ( collateralReturn) depends on the Coin in the TxOut being (Coin 1). - -- The computation of 'owed' and 'extraCol" should ensure this. - collateralReturn p - :<-: (Constr "colReturn" (\ad -> TxOutF p (mkBasicTxOut ad (inject (Coin 1)))) ^$ colRetAddr) - , -- We compute this, so that we can test that the (Coin 1) invariant holds. - colRetCoin - :<-: (Constr "-" (\sumc extra owe -> (sumc <> extra) <-> owe) ^$ sumCol ^$ extraCol ^$ owed) - , txbodyterm :<-: txbodyTarget txfee wppHash totalCol - , txterm :<-: txTarget txbodyterm bootWits keyWits - ] - where - spending = Var (V "spending" (MapR TxInR (TxOutR p)) No) - colUtxo = Var (V "colUtxo" (MapR TxInR (TxOutR p)) No) - colRestriction = Var (V "colRestriction" (MapR TxInR (TxOutR p)) No) - nonZeroRewards = var "nonZeroRewards" (MapR CredR CoinR) - balanceCoin = Var (V "balanceCoin" CoinR No) - certsRefunds (PParamsF _ pp) stakingDepositsx drepDepositsx certsx = - getTotalRefundsTxCerts - pp - (`Map.lookup` stakingDepositsx) - (`Map.lookup` drepDepositsx) - (map unTxCertF certsx) - certsDeposits (PParamsF _ pp) regpools certsx = Coin (-n) - where - Coin n = getTotalDepositsTxCerts pp (`Map.member` regpools) (map unTxCertF certsx) - txrefunds = Var (pV p "txrefunds" CoinR No) - txdeposits = Var (pV p "txdeposits" CoinR No) - acNeeded :: Term era [(PlutusPurposeF era, ScriptHash (EraCrypto era))] - acNeeded = Var $ pV p "acNeeded" (ListR (PairR (ScriptPurposeR p) ScriptHashR)) No - neededHashSet = Var $ pV p "neededHashSet" (SetR ScriptHashR) No - rdmrPtrs = Var $ pV p "rdmrPtrs" (SetR (RdmrPtrR p)) No - plutusDataHashes = Var $ pV p "plutusDataHashes" (SetR DataHashR) No - oneAuxdata = Var $ pV p "oneAuxdata" (TxAuxDataR reify) No - tempTxFee = Var $ pV p "tempTxFee" CoinR No - tempTx = Var $ pV p "tempTx" (TxR p) No - tempTxBody = Var $ pV p "tempTxBody" (TxBodyR reify) No - tempWppHash = Var $ pV p "tempWppHash" (MaybeR ScriptIntegrityHashR) No - randomWppHash = Var $ pV p "randomWppHash" ScriptIntegrityHashR No - tempBootWits = Var $ pV p "tempBootWits" (SetR (BootstrapWitnessR @era)) No - tempKeyWits = Var $ pV p "tempKeyWits" (SetR (WitVKeyR reify)) No - langs = Var $ pV p "langs" (SetR LanguageR) No - tempTotalCol = Var $ pV p "tempTotalCol" CoinR No - prewithdrawal = Var $ pV p "preWithdrawal" (SetR CredR) No - refAdjusted = Var $ pV p "refAdjusted" (SetR ScriptHashR) No - necessaryHashes = Var $ pV p "necessaryHashes" (SetR WitHashR) No - sufficientHashes = Var $ pV p "sufficientHashes" (SetR WitHashR) No - -txBodyStage :: - Reflect era => - UnivSize -> - Proof era -> - Subst era -> - Gen (Subst era) -txBodyStage sizes proof subst0 = do - let preds = txBodyPreds sizes proof - toolChainSub proof standardOrderInfo preds subst0 - --- =============================================================== - -balanceMap :: Ord k => [(k, Coin)] -> Map k t -> Lens' t Coin -> Map k t -balanceMap pairs m0 l = List.foldl' accum m0 pairs - where - accum m (k, thecoin) = Map.adjust (\t -> t & l .~ (thecoin <> t ^. l)) k m - --- | Adjust the Coin part of the TxOut in the 'utxo' map for the TxIn 'feeTxIn' by adding 'txfee' -adjustFeeInput :: (HasCallStack, Reflect era) => Env era -> Typed (Env era) -adjustFeeInput env = case utxo reify of - u@(Var utxoV) -> do - feeinput <- runTerm env feeTxIn - feecoin <- runTerm env txfee - utxomap <- runTerm env u - pure (storeVar utxoV (balanceMap [(feeinput, feecoin)] utxomap outputCoinL) env) - other -> failT ["utxo does not match a Var Term: " ++ show other] - --- | Adjust UTxO image of 'collateral' to pay for the collateral fees. Do this by --- adding 'extraCol' to the TxOuts associated with col inputs -adjustColInput :: - (HasCallStack, Reflect era) => - -- Term era (TxIn (EraCrypto era)) -> - -- Term era Coin -> - -- Term era Coin -> - Env era -> - Typed (Gen (Env era)) -adjustColInput env = do - let utxoterm = utxo reify - utxoV = unVar utxoterm - extracoin <- runTerm env extraCol - utxomap <- runTerm env utxoterm - col <- runTerm env collateral - case adjustC (Set.toList col) utxomap extracoin outputCoinL of - Nothing -> pure discard - Just newutxo -> do - let env2 = storeVar utxoV newutxo env - (env5, body) <- updateTarget override txbodyterm (txbodyTarget txfee wppHash totalCol) env2 - (env6, _) <- - updateTarget override txterm (txTarget (Lit (TxBodyR reify) body) bootWits keyWits) env5 - pure (pure env6) - --- | Adjust the part of the UTxO that maps the 'collateral' inputs, to pay the collateral fee. --- This will adjust 1 or more of the TxOuts associated with the collateral , to make up the difference. --- It may happen on rare occaisions, there is not enough Coin to make the adjustment, so return Nothing -adjustC :: (Ord k, Show k) => [k] -> Map k v -> Coin -> Lens' v Coin -> Maybe (Map k v) -adjustC [] _ extra _ | extra < (Coin 0) = Nothing -adjustC [] m _ _ = Just m -adjustC (i : is) m extra@(Coin n) coinL = case compare n 0 of - EQ -> Just m - GT -> Just (Map.adjust addextra i m) - where - addextra outf = outf & coinL .~ ((outf ^. coinL) <+> extra) - LT -> - if ex >= 0 - then Just (Map.adjust subextra i m) - else adjustC is (Map.adjust subextra i m) amount coinL - where - amount@(Coin ex) = case Map.lookup i m of - Just outf -> (outf ^. coinL) <+> extra <-> (Coin 1) - Nothing -> error ("Collateral input: " ++ show i ++ " is not found in UTxO in 'adjust'") - subextra outf = outf & coinL .~ (Coin (max 1 (unCoin ((outf ^. coinL) <+> extra)))) - -updateVal :: (a -> b -> a) -> Term era a -> b -> Env era -> Typed (Env era) -updateVal adjust term@(Var v) delta env = do - varV <- runTerm env term - pure $ storeVar v (adjust varV delta) env -updateVal _ v _ _ = failT ["Non Var in updateVal: " ++ show v] - -updateTerm :: (a -> b -> a) -> Term era a -> Term era b -> Env era -> Typed (Env era) -updateTerm adjust term@(Var v) delta env = do - varV <- runTerm env term - deltaV <- runTerm env delta - pure $ storeVar v (adjust varV deltaV) env -updateTerm _ v _ _ = failT ["Non Var in updateTerm: " ++ show v] - -updateTarget :: (a -> b -> a) -> Term era a -> Target era b -> Env era -> Typed (Env era, b) -updateTarget adjust term@(Var v) delta env = do - varV <- runTerm env term - deltaV <- runTarget env delta - pure $ (storeVar v (adjust varV deltaV) env, deltaV) -updateTarget _ v _ _ = failT ["Non Var in updateTarget: " ++ show v] - -override :: x -> x -> x -override _ y = y - --- ======================================== - -genTxAndLedger :: Reflect era => UnivSize -> Proof era -> Gen (LedgerState era, Tx era, Env era) -genTxAndLedger sizes proof = do - subst <- - ( pure emptySubst - >>= pParamsStage proof - >>= universeStage sizes proof - >>= utxoStage sizes proof - >>= vstateStage proof - >>= pstateStage proof - >>= dstateStage proof - >>= certsStage sizes proof - >>= ledgerStateStage sizes proof - >>= txBodyStage sizes proof - ) - env0 <- monadTyped $ substToEnv subst emptyEnv - env1 <- monadTyped $ adjustFeeInput env0 - env2 <- errorTyped $ adjustColInput env1 - ledger <- monadTyped $ runTarget env2 (ledgerStateT proof) - (TxF _ tx) <- monadTyped (findVar (unVar txterm) env2) - pure (ledger, tx, env2) - -genTxAndNewEpoch :: Reflect era => UnivSize -> Proof era -> Gen (NewEpochState era, Tx era, Env era) -genTxAndNewEpoch sizes proof = do - subst <- - ( pure emptySubst - >>= pParamsStage proof - >>= universeStage sizes proof - >>= utxoStage sizes proof - >>= vstateStage proof - >>= pstateStage proof - >>= dstateStage proof - >>= certsStage sizes proof - >>= ledgerStateStage sizes proof - >>= txBodyStage sizes proof - >>= epochStateStage proof - >>= newEpochStateStage proof - ) - env0 <- monadTyped $ substToEnv subst emptyEnv - env1 <- monadTyped $ adjustFeeInput env0 - env2 <- errorTyped $ adjustColInput env1 - newepochst <- monadTyped $ runTarget env2 (newEpochStateT proof) - TxF _ tx <- monadTyped (findVar (unVar txterm) env2) - pure (newepochst, tx, env2) - -demoTxNes :: IO () -demoTxNes = do - let proof = Conway - (nes, _tx, env) <- generate $ genTxAndNewEpoch def proof - putStrLn (show (psNewEpochState proof nes)) - pools <- monadTyped $ runTerm env regPools - deleg <- monadTyped $ runTerm env delegations - stak <- monadTyped $ runTerm env incrementalStake - putDoc (ppString "\nPool " <> prettyA pools) - putDoc (ppString "\nDeleg " <> prettyA deleg) - putDoc (ppString "\nStake " <> prettyA stak) - let distr = - calculatePoolDistr - ( SnapShot - (Stake (VMap.fromMap (Map.map UMap.compactCoinOrError stak))) - (VMap.fromMap deleg) - (VMap.fromMap pools) - ) - putDoc (ppString "\nPoolDistr " <> prettyA distr) - goRepl proof env "" - -demoTx :: IO () -demoTx = do - let proof = Conway - (ls, tx, env) <- generate $ genTxAndLedger def proof - putStrLn (show (pcLedgerState proof ls)) - putStrLn (show (pcTx proof tx)) - goRepl proof env "" - --- ================================================================ - -gone :: Gen (IO ()) -gone = do - txIx <- arbitrary - let proof = Babbage - sizes = def - (ledgerstate, tx, env) <- genTxAndLedger sizes proof - slot <- monadTyped (findVar (unVar currentSlot) env) - (PParamsF _ pp) <- monadTyped (findVar (unVar (pparams proof)) env) - accntState <- monadTyped (runTarget env accountStateT) - utxo1 <- monadTyped (findVar (unVar (utxo proof)) env) - let lenv = LedgerEnv slot txIx pp accntState - -- putStrLn (show (pcTx Babbage tx)) - pure $ case applySTSByProof proof (TRC (lenv, ledgerstate, tx)) of - Right _ledgerState' -> do - -- putStrLn (show (pcTx Babbage tx)) - putStrLn "SUCCESS" - Left errs -> do - putStrLn "FAIL" - print $ pgenTx proof utxo1 tx - print $ prettyA errs - goRepl Babbage env "" - -test :: Maybe Int -> IO () -test (Just seed) = do x <- generateWithSeed seed gone; x -test Nothing = do - seed <- generate arbitrary - putStrLn ("SEED = " ++ show seed) - x <- generateWithSeed seed gone - x - -bad :: [Int] -bad = [] -- [3, 8, 13, 41, 50, 60, 65, 82, 99, 100, 109, 112] -go :: Int -> IO () -go n = sequence_ [print i >> test (Just i) | i <- [n .. 113], not (elem i bad)] - --- ======================================== - --- ============================== - --- | Pretty print the fields of a Randomly generated TxBody, except resolve the --- inputs with the given Ut map. -pgenTxBodyField :: - Reflect era => - Proof era -> - Map (TxIn (EraCrypto era)) (TxOutF era) -> - TxBodyField era -> - [(Text, PDoc)] -pgenTxBodyField proof ut x = case x of - Inputs s -> [(pack "spend inputs", pcUtxoDoc (Map.restrictKeys ut s))] - Collateral s -> [(pack "coll inputs", pcUtxoDoc (Map.restrictKeys ut s))] - RefInputs s -> [(pack "ref inputs", pcUtxoDoc (Map.restrictKeys ut s))] - other -> pcTxBodyField proof other - -pgenTxBody :: - Reflect era => Proof era -> TxBody era -> Map (TxIn (EraCrypto era)) (TxOutF era) -> PDoc -pgenTxBody proof txBody ut = ppRecord (pack "TxBody " <> pack (show proof)) pairs - where - fields = abstractTxBody proof txBody - pairs = concatMap (pgenTxBodyField proof ut) fields - -pgenTxField :: - forall era. - Reflect era => - Proof era -> - Map (TxIn (EraCrypto era)) (TxOutF era) -> - TxField era -> - [(Text, PDoc)] -pgenTxField proof ut x = case x of - Body b -> [(pack "txbody hash", ppSafeHash (hashAnnotated b)), (pack "body", pgenTxBody proof b ut)] - BodyI xs -> [(pack "body", ppRecord (pack "TxBody") (concat (map (pgenTxBodyField proof ut) xs)))] - _other -> pcTxField proof x - -pgenTx :: Reflect era => Proof era -> Map (TxIn (EraCrypto era)) (TxOutF era) -> Tx era -> PDoc -pgenTx proof ut tx = ppRecord (pack "Tx") pairs - where - fields = abstractTx proof tx - pairs = concatMap (pgenTxField proof ut) fields - -pcTxWithUTxO :: Reflect era => Proof era -> UTxO era -> Tx era -> PDoc -pcTxWithUTxO proof (UTxO ut) tx = ppRecord (pack "Tx") pairs - where - fields = abstractTx proof tx - pairs = concatMap (pgenTxField proof (fmap (TxOutF proof) ut)) fields - --- ================================================= --- Demos and Tests - -oneTest :: - ( Reflect era - , Environment (EraRule "LEDGER" era) ~ LedgerEnv era - , State (EraRule "LEDGER" era) ~ LedgerState era - , Signal (EraRule "LEDGER" era) ~ Tx era - , Show (PredicateFailure (EraRule "LEDGER" era)) - ) => - UnivSize -> - Proof era -> - Gen Property -oneTest sizes proof = do - subst <- - pure emptySubst - >>= pParamsStage proof - >>= universeStage sizes proof - >>= utxoStage sizes proof - >>= vstateStage proof - >>= pstateStage proof - >>= dstateStage proof - >>= certsStage sizes proof - >>= ledgerStateStage sizes proof - >>= txBodyStage sizes proof - env0 <- monadTyped $ substToEnv subst emptyEnv - env1 <- monadTyped $ adjustFeeInput env0 - env2 <- errorTyped $ adjustColInput env1 - ledgerstate <- monadTyped $ runTarget env2 (ledgerStateT proof) - (TxF _ tx) <- monadTyped (runTerm env2 txterm) - - slot <- monadTyped (runTerm env2 currentSlot) - (PParamsF _ pp) <- monadTyped (runTerm env2 (pparams proof)) - accntState <- monadTyped (runTarget env2 accountStateT) - txIx <- arbitrary - let lenv = LedgerEnv slot txIx pp accntState - case applySTSByProof proof (TRC (lenv, ledgerstate, tx)) of - Right ledgerState' -> pure (totalAda ledgerState' === totalAda ledgerstate) - Left errs -> do - let msg = unlines $ "" : "applySTS fails" : map show (toList errs) - pure $ - whenFail - (putStrLn msg >> goRepl proof env2 "") - (counterexample msg False) - -main1 :: IO () -main1 = quickCheck (withMaxSuccess 30 (oneTest def Babbage)) - -main2 :: IO () -main2 = quickCheck (withMaxSuccess 30 (oneTest def Shelley)) - -demo :: ReplMode -> IO () -demo mode = do - let proof = Babbage - -- Conway - -- Alonzo - -- Mary - -- Shelley - let sizes = def - subst <- - generate - ( pure emptySubst - >>= pParamsStage proof - >>= universeStage sizes proof - >>= utxoStage sizes proof - >>= vstateStage proof - >>= pstateStage proof - >>= dstateStage proof - >>= certsStage sizes proof - >>= ledgerStateStage sizes proof - >>= txBodyStage sizes proof - ) - -- rewritten <- snd <$> generate (rewriteGen (1, txBodyPreds sizes proof)) - -- putStrLn (show rewritten) - (_, status) <- monadTyped $ checkForSoundness (txBodyPreds sizes proof) subst - case status of - Nothing -> pure () - Just msg -> error msg - env0 <- monadTyped $ substToEnv subst emptyEnv - env1 <- monadTyped $ adjustFeeInput env0 - env2 <- generate $ errorTyped $ adjustColInput env1 - when (mode == Interactive) $ displayTerm env2 txfee - when (mode == Interactive) $ displayTerm env2 txterm - -- compute Produced and Consumed - (TxBodyF _ txb) <- monadTyped (findVar (unVar txbodyterm) env2) - certState <- monadTyped $ runTarget env1 certstateT - (PParamsF _ ppV) <- monadTyped (findVar (unVar (pparams proof)) env2) - utxoV <- monadTyped (findVar (unVar (utxo proof)) env2) - when (mode == Interactive) $ putStrLn (show (producedTxBody txb ppV certState)) - when (mode == Interactive) $ putStrLn (show (consumedTxBody txb ppV certState (liftUTxO utxoV))) - modeRepl mode proof env2 "" - -demoTest :: TestTree -demoTest = - testGroup - "Tests for Tx Stage" - [ testIO "Testing Tx Stage" (demo CI) - , testProperty "One Tx Test Babbage" $ withMaxSuccess 30 (oneTest def Babbage) - , testProperty "One Tx Test Shelley" $ withMaxSuccess 30 (oneTest def Shelley) - ] - -main :: IO () -main = defaultMain $ testIO "Testing Tx Stage" (demo Interactive) diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/TxOut.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/TxOut.hs deleted file mode 100644 index fe601b36c6d..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/TxOut.hs +++ /dev/null @@ -1,220 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# OPTIONS_GHC -Wno-unused-imports #-} - -module Test.Cardano.Ledger.Constrained.Preds.TxOut where - -import Cardano.Crypto.Hash.Class (Hash, HashAlgorithm, castHash, hashWith) -import Cardano.Ledger.Address (Addr (..)) -import Cardano.Ledger.Alonzo.TxOut (AlonzoEraTxOut (..), AlonzoTxOut (..)) -import Cardano.Ledger.Babbage.TxOut (BabbageEraTxOut (..), BabbageTxOut (..)) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Core ( - Era (EraCrypto), - EraScript (..), - EraTxOut (..), - Script, - TxOut, - addrTxOutL, - coinTxOutL, - hashScript, - valueTxOutL, - ) -import Cardano.Ledger.Hashes (DataHash, ScriptHash (..)) -import Cardano.Ledger.Mary.Value ( - AssetName (..), - MaryValue (..), - MultiAsset (..), - PolicyID (..), - multiAssetFromList, - ) -import Cardano.Ledger.Plutus.Data (Data (..), Datum (..), dataToBinaryData, hashData) -import Cardano.Ledger.Shelley.TxOut (ShelleyTxOut (..)) -import Control.Monad (when) -import Data.Default.Class (Default (def)) -import Data.Int (Int64) -import qualified Data.Map.Strict as Map -import Data.Maybe.Strict (StrictMaybe (..), maybeToStrictMaybe, strictMaybeToMaybe) -import Data.Set (Set) -import qualified Data.Set as Set -import Data.String (IsString (..)) -import Lens.Micro -import Test.Cardano.Ledger.Constrained.Ast -import Test.Cardano.Ledger.Constrained.Classes -import Test.Cardano.Ledger.Constrained.Combinators (genFromMap, itemFromSet) -import Test.Cardano.Ledger.Constrained.Env -import Test.Cardano.Ledger.Constrained.Monad (monadTyped) -import Test.Cardano.Ledger.Constrained.Preds.Repl -import Test.Cardano.Ledger.Constrained.Preds.Repl (ReplMode (..), modeRepl) -import Test.Cardano.Ledger.Constrained.Preds.Universes hiding (demo, demoTest, main) -import Test.Cardano.Ledger.Constrained.Rewrite (rewriteGen, standardOrderInfo) -import Test.Cardano.Ledger.Constrained.Size -import Test.Cardano.Ledger.Constrained.Solver (toolChain, toolChainSub) -import Test.Cardano.Ledger.Constrained.TypeRep -import Test.Cardano.Ledger.Constrained.Utils (testIO) -import Test.Cardano.Ledger.Constrained.Vars -import Test.Cardano.Ledger.Generic.Fields (TxBodyField (..), TxOutField (..)) -import Test.Cardano.Ledger.Generic.PrettyCore ( - pcData, - pcDataHash, - pcScript, - pcScriptHash, - pcTxOut, - ppList, - ppMap, - ) -import Test.Cardano.Ledger.Generic.Proof -import Test.Cardano.Ledger.Generic.Updaters (newTxBody, newTxOut) -import Test.QuickCheck -import Test.Tasty (TestTree, defaultMain) - --- ========================================================================= - -scriptFL :: Reflect era => Lens' (Script era) (ScriptF era) -scriptFL = lens (ScriptF reify) (\_ (ScriptF _ u) -> u) - -strictMaybeMaybeL :: Lens' (StrictMaybe a) (Maybe a) -strictMaybeMaybeL = lens strictMaybeToMaybe (const maybeToStrictMaybe) - -txoutRefScriptL :: (Reflect era, BabbageEraTxOut era) => Lens' (TxOutF era) (Maybe (ScriptF era)) -txoutRefScriptL = txOutFL . referenceScriptTxOutL . strictMaybeMaybeL . liftMaybeL scriptFL - -liftMaybeL :: Lens' a b -> Lens' (Maybe a) (Maybe b) -liftMaybeL l = lens getter setter - where - getter (Just x) = Just (x ^. l) - getter Nothing = Nothing - setter (Just a) (Just b) = Just (a & l .~ b) - setter (Just _a) Nothing = Nothing -- Type wise this Nothing could be (Just a), but that is wrong - setter Nothing _ = Nothing - -txoutScriptF :: (Reflect era, BabbageEraTxOut era) => Field era (TxOutF era) (Maybe (ScriptF era)) -txoutScriptF = Field "txoutScript" (MaybeR (ScriptR reify)) (TxOutR reify) txoutRefScriptL - -txoutScript :: (Reflect era, BabbageEraTxOut era) => Term era (Maybe (ScriptF era)) -txoutScript = fieldToTerm txoutScriptF - -txoutDatumF :: (Reflect era, BabbageEraTxOut era) => Field era (TxOutF era) (Datum era) -txoutDatumF = Field "txoutDatumF" DatumR (TxOutR reify) (txOutFL . datumTxOutL) - -txoutDatum :: (Reflect era, BabbageEraTxOut era) => Term era (Datum era) -txoutDatum = fieldToTerm txoutDatumF - -txoutDataHashF :: - (Reflect era, AlonzoEraTxOut era) => Field era (TxOutF era) (Maybe (DataHash (EraCrypto era))) -txoutDataHashF = - Field - "txoutDataHashF" - (MaybeR DataHashR) - (TxOutR reify) - (txOutFL . dataHashTxOutL . strictMaybeMaybeL) - -txoutDataHash :: (Reflect era, AlonzoEraTxOut era) => Term era (Maybe (DataHash (EraCrypto era))) -txoutDataHash = fieldToTerm txoutDataHashF - -isBootstrapAddr :: Addr c -> Bool -isBootstrapAddr (AddrBootstrap _) = True -isBootstrapAddr (Addr _ _ _) = False - --- ================================================================================ - -txOutPreds :: - Reflect era => UnivSize -> Proof era -> Term era Coin -> Term era [TxOutF era] -> [Pred era] -txOutPreds size@UnivSize {usDatumFreq} p balanceCoin outputS = - [ Choose - (Range 6 6) - datums - [ (1, Simple (Lit DatumR NoDatum), []) - , (1, Constr "DatumHash" DatumHash ^$ hash, [Member (Left hash) (Dom dataUniv)]) - , - ( usDatumFreq - , Constr "Datum" (Datum . dataToBinaryData) - ^$ dat - , [Member (Left (HashD dat)) (Dom dataUniv)] - ) - ] - , datumsSet :<-: listToSetTarget datums - , case whichTxOut p of - TxOutShelleyToMary -> - ForEach - (Range 3 5) - outputS - ( Pat - outR - [ Arg txoutAddressF - , ArgPs txoutAmountF [Pat (ValueR p) [Arg valCoinF], Pat (ValueR p) [Arg valueFMultiAssetF]] - ] - ) - [ Member (Left txoutAddress) addrUniv - , Component (Right txoutAmount) [field (ValueR p) valCoin, field (ValueR p) valueFMultiAsset] - , -- , SumsTo (Left (Coin 1)) balanceCoin EQL [One valCoin] - SumSplit (Coin 1) balanceCoin EQL [One valCoin] - , GenFrom valueFMultiAsset (Constr "multiAsset" (multiAsset size) ^$ (nonSpendScriptUniv p)) - ] - TxOutAlonzoToAlonzo -> - ForEach - (Range 3 5) - outputS - ( Pat -- analog to Haskell pattern (TxOut{txoutAddress, txoutAmount{valCoin}, txoutDataHash}) - (TxOutR p) - [ Arg txoutAddressF - , ArgPs txoutAmountF [Pat valueR [Arg valCoinF], Pat (ValueR p) [Arg valueFMultiAssetF]] - , Arg txoutDataHashF - ] - ) - [ Member (Left txoutAddress) addrUniv - , Component (Right txoutAmount) [field (ValueR p) valCoin] - , Maybe txoutDataHash (Simple hash) [Member (Left hash) (Dom dataUniv)] - , SumSplit (Coin 2) balanceCoin EQL [One valCoin] - , GenFrom valueFMultiAsset (Constr "multiAsset" (multiAsset size) ^$ (nonSpendScriptUniv p)) - ] - TxOutBabbageToConway -> - ForEach - (Range 3 5) - outputS - ( Pat - (TxOutR p) - [ Arg txoutAddressF - , argP outR txoutAmount [Pat (ValueR p) [Arg valCoinF], Pat (ValueR p) [Arg valueFMultiAssetF]] - , Arg txoutScriptF - , Arg txoutDatumF - ] - ) - [ Member (Left txoutAddress) addrUniv - , Component (Right txoutAmount) [field (ValueR p) valCoin] - , Maybe txoutScript (Simple script) [Member (Left (HashS script)) (Dom (spendscriptUniv p))] - , Member (Left txoutDatum) datumsSet - , SumSplit (Coin 2) balanceCoin EQL [One valCoin] - , GenFrom valueFMultiAsset (Constr "multiAsset" (multiAsset size) ^$ (nonSpendScriptUniv p)) - ] - ] - where - outR = TxOutR p - valueR = ValueR p - script = (var "x" (ScriptR p)) - datums = var "datums" (ListR DatumR) - datumsSet = var "datumsSet" (SetR DatumR) - hash = var "hash" DataHashR - dat = var "dat" DataR - -demo :: ReplMode -> IO () -demo mode = do - let proof = Conway - env <- - generate - ( pure emptySubst - >>= universeStage def proof - >>= toolChain proof standardOrderInfo (txOutPreds def proof (Lit CoinR (Coin 100)) (outputs proof)) - ) - when (mode == Interactive) (displayTerm env (outputs proof)) - modeRepl mode proof env "" - -demoTest :: TestTree -demoTest = testIO "Testing TxOut Stage" (demo CI) - -main :: IO () -main = defaultMain $ testIO "Testing TxOut Stage" (demo Interactive) diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/UTxO.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/UTxO.hs deleted file mode 100644 index bfe8d34c81e..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/UTxO.hs +++ /dev/null @@ -1,78 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Constrained.Preds.UTxO where - -import Control.Monad (when) -import Data.Default.Class (Default (def)) -import qualified Data.Map.Strict as Map -import Test.Cardano.Ledger.Constrained.Ast -import Test.Cardano.Ledger.Constrained.Env -import Test.Cardano.Ledger.Constrained.Monad (monadTyped) -import Test.Cardano.Ledger.Constrained.Preds.PParams (pParamsStage) -import Test.Cardano.Ledger.Constrained.Preds.Repl (ReplMode (..), modeRepl) -import Test.Cardano.Ledger.Constrained.Preds.Universes (UnivSize (..), universeStage) -import Test.Cardano.Ledger.Constrained.Rewrite (standardOrderInfo) -import Test.Cardano.Ledger.Constrained.Size (Size (..)) -import Test.Cardano.Ledger.Constrained.Solver (toolChainSub) -import Test.Cardano.Ledger.Constrained.TypeRep -import Test.Cardano.Ledger.Constrained.Vars -import Test.Cardano.Ledger.Generic.PrettyCore (pcUTxO) -import Test.Cardano.Ledger.Generic.Proof -import Test.QuickCheck - --- =========================================================== - -utxoPreds :: forall era. Reflect era => UnivSize -> Proof era -> [Pred era] -utxoPreds usize p = - [ MetaSize (SzExact (usNumPreUtxo usize)) utxoSize -- must be bigger than sum of (maxsize inputs 10) and (maxsize collateral 3) - , Sized utxoSize preUtxo - , Sized (AtLeast 6) colUtxo - , MapMember feeTxIn feeTxOut (Right preUtxo) - , Subset (Dom preUtxo) txinUniv - , Subset (Rng preUtxo) (txoutUniv p) - , utxo p :<-: (Constr "mapunion" Map.union ^$ preUtxo ^$ colUtxo) - , Disjoint (Dom preUtxo) (Dom colUtxo) - , Subset (Dom colUtxo) txinUniv - , Subset (Rng colUtxo) (colTxoutUniv p) - , NotMember feeTxIn (Dom colUtxo) - , NotMember feeTxOut (Rng colUtxo) - , incrementalStake :<-: incrementalStakeT p -- Computes incrementalStake from the Term 'utxo' and the proof 'p' - ] - where - colUtxo = Var (V "colUtxo" (MapR TxInR (TxOutR p)) No) - utxoSize = Var (V "utxoSize" SizeR No) - preUtxo = Var (V "preUtxo" (MapR TxInR (TxOutR p)) No) - -utxoStage :: - Reflect era => - UnivSize -> - Proof era -> - Subst era -> - Gen (Subst era) -utxoStage usize proof subst0 = do - let preds = utxoPreds usize proof - subst <- toolChainSub proof standardOrderInfo preds subst0 - (_env, status) <- pure (undefined, Nothing) -- monadTyped $ checkForSoundness preds subst - case status of - Nothing -> pure subst - Just msg -> error msg - -demoUTxO :: Reflect era => Proof era -> ReplMode -> IO () -demoUTxO proof mode = do - env <- - generate - ( pure emptySubst - >>= pParamsStage proof - >>= universeStage def proof - >>= utxoStage def proof - >>= (\subst -> monadTyped $ substToEnv subst emptyEnv) - ) - utx <- monadTyped $ runTerm env (utxo proof) - when (mode == Interactive) $ putStrLn (show (pcUTxO proof (liftUTxO utx))) - modeRepl mode proof env "" diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/Universes.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/Universes.hs deleted file mode 100644 index 07557b9381d..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Preds/Universes.hs +++ /dev/null @@ -1,693 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeOperators #-} - -module Test.Cardano.Ledger.Constrained.Preds.Universes -where - -import qualified Cardano.Chain.Common as Byron -import qualified Cardano.Crypto.DSIGN as DSIGN -import qualified Cardano.Crypto.Signing as Byron -import Cardano.Ledger.Address (Addr (..), BootstrapAddress (..), bootstrapKeyHash) -import Cardano.Ledger.Allegra.Scripts (ValidityInterval (..)) -import Cardano.Ledger.Alonzo.TxOut (AlonzoTxOut (..)) -import Cardano.Ledger.Babbage.TxOut (BabbageTxOut (..)) -import Cardano.Ledger.BaseTypes ( - Network (..), - SlotNo (..), - StrictMaybe (..), - TxIx (..), - inject, - mkCertIxPartial, - ) -import qualified Cardano.Ledger.BaseTypes as Utils (Globals (..)) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Core ( - EraScript, - EraTxOut (..), - TxOut, - Value, - hashScript, - isNativeScript, - ) -import Cardano.Ledger.Credential (Credential (..), Ptr (..), StakeReference (..)) -import Cardano.Ledger.Crypto (Crypto, DSIGN) -import Cardano.Ledger.DRep (DRep (..)) -import Cardano.Ledger.Era (Era (EraCrypto)) -import Cardano.Ledger.Hashes (DataHash, EraIndependentTxBody, ScriptHash) -import Cardano.Ledger.Keys (Hash, KeyHash, KeyRole (..), coerceKeyRole, hashKey) -import Cardano.Ledger.Keys.Bootstrap (BootstrapWitness, makeBootstrapWitness) -import Cardano.Ledger.Mary.Value ( - AssetName (..), - MaryValue (..), - MultiAsset (..), - PolicyID (..), - multiAssetFromList, - ) -import Cardano.Ledger.Plutus.Data (Data (..), Datum (..), dataToBinaryData, hashData) -import Cardano.Ledger.Shelley.TxOut (ShelleyTxOut (..)) -import Data.Default.Class (Default (def)) -import qualified Data.List as List -import Data.Map (Map) -import qualified Data.Map.Strict as Map -import Data.Set (Set) -import qualified Data.Set as Set -import Data.String (IsString (..)) -import Test.Cardano.Ledger.Constrained.Ast -import Test.Cardano.Ledger.Constrained.Classes hiding (genTxOut) -import Test.Cardano.Ledger.Constrained.Combinators (genFromMap, itemFromSet, setSized) -import Test.Cardano.Ledger.Constrained.Env -import Test.Cardano.Ledger.Constrained.Monad (monadTyped) -import Test.Cardano.Ledger.Constrained.Preds.Repl (ReplMode (..), modeRepl) -import Test.Cardano.Ledger.Constrained.Rewrite (standardOrderInfo) -import Test.Cardano.Ledger.Constrained.Scripts (allPlutusScripts, genCoreScript, spendPlutusScripts) -import Test.Cardano.Ledger.Constrained.Solver -import Test.Cardano.Ledger.Constrained.TypeRep -import Test.Cardano.Ledger.Constrained.Utils (testIO) -import Test.Cardano.Ledger.Constrained.Vars -import Test.Cardano.Ledger.Core.KeyPair (KeyPair (..)) -import Test.Cardano.Ledger.Generic.Functions (protocolVersion) -import Test.Cardano.Ledger.Generic.GenState (PlutusPurposeTag (..)) -import Test.Cardano.Ledger.Generic.Proof -import Test.Cardano.Ledger.Shelley.Utils (epochFromSlotNo) -import qualified Test.Cardano.Ledger.Shelley.Utils as Utils -import Test.Tasty (TestTree, defaultMain) -import Test.Tasty.QuickCheck - -import Cardano.Ledger.Conway.Governance (GovActionId (..), GovActionIx (..)) -import Cardano.Ledger.TxIn (TxIn (..)) - --- ========================================================== - -data UnivSize = UnivSize - { usNumTxOuts :: Int - , usMaxAssets :: Int -- per Policy Id - , usMaxPolicyID :: Int -- per MultiAsset - , usNumMultiAsset :: Int - , usNumPtr :: Int - , usNumAddr :: Int - , usNumKeys :: Int - , usNumPools :: Int - , usNumStakeKeys :: Int -- should be less than numKeys - , usNumGenesisKeys :: Int -- should be less than numKeys - , usNumVoteKeys :: Int -- should be less than numKeys - , usNumCredentials :: Int - , usNumDatums :: Int - , usNumTxIn :: Int - , usNumPreUtxo :: Int -- must be smaller than numTxIn - , usNumColUtxo :: Int -- max size of the UTxo = numPreUtxo + numColUtxo - , usNumDReps :: Int -- Should be less than the number of numCredentials - , usMinCerts :: Int - , usMaxCerts :: Int - , usDatumFreq :: Int - , usGenerateWithdrawals :: Bool - , usMinInputs :: Int - , usMaxInputs :: Int - , usMinCollaterals :: Int - , usMaxCollaterals :: Int - , usRegKeyFreq :: Int - , usUnRegKeyFreq :: Int - , usAllowReRegisterPool :: Bool - , usSpendScriptFreq :: Int - , usCredScriptFreq :: Int - } - -instance Default UnivSize where - def = - UnivSize - { usNumTxOuts = 100 - , usMaxAssets = 9 -- per Policy Id - , usMaxPolicyID = 2 -- per MultiAsset - , usNumMultiAsset = 10 - , usNumPtr = 30 - , usNumAddr = 200 - , usNumKeys = 50 - , usNumPools = 40 - , usNumStakeKeys = 10 -- less than numKeys - , usNumGenesisKeys = 20 -- less than numKeys - , usNumVoteKeys = 40 -- less than numKeys - , usNumCredentials = 40 - , usNumDatums = 30 - , usNumTxIn = 120 - , usNumPreUtxo = 100 -- must be smaller than numTxIn - , usNumColUtxo = 20 -- max size of the UTxo = numPreUtxo + numColUtxo - , usNumDReps = 20 -- -- Should be less than the number of numCredentials - , usMaxCerts = 6 - , usMinCerts = 4 - , usDatumFreq = 1 - , usGenerateWithdrawals = True - , usMinInputs = 2 - , usMaxInputs = 10 - , usMinCollaterals = 2 - , usMaxCollaterals = 2 - , usAllowReRegisterPool = True - , usRegKeyFreq = 1 - , usUnRegKeyFreq = 1 - , usSpendScriptFreq = 3 - , usCredScriptFreq = 1 - } - --- ============================================================ --- Coins - -variedCoin :: Gen Coin -variedCoin = - Coin - <$> frequency - [ (2, pure 0) - , (2, choose (1, 10)) - , (2, choose (11, 100)) - , (2, choose (101, 1000)) - , (2, choose (1001, 10000)) - , (8, choose (10001, 100000)) - , (12, choose (100001, 1000000)) - ] - -noZeroCoin :: Gen Coin -noZeroCoin = - Coin - <$> frequency - [ (1, choose (1, 10)) - , (1, choose (11, 1000)) - , (1, choose (1001, 100000)) - , (6, choose (100001, 600000)) - , (6, choose (600001, 2000000)) - , (6, choose (2000001, 4000000)) - ] - --- =============================================== --- Generating Byron address and their universe - --- | Generate a pair, A Byron address, and the key that can sign it. -genAddrPair :: Network -> Gen (BootstrapAddress c, Byron.SigningKey) -genAddrPair netwrk = do - signkey <- genSigningKey - let verificationKey = Byron.toVerification signkey - asd = Byron.VerKeyASD verificationKey - byronNetwork = case netwrk of - Mainnet -> Byron.NetworkMainOrStage - Testnet -> Byron.NetworkTestnet 0 - attrs = - Byron.AddrAttributes - (Just (Byron.HDAddressPayload "a compressed lenna.png")) - byronNetwork - pure (BootstrapAddress (Byron.makeAddress asd attrs), signkey) - --- | Generate a Map, that maps the Hash of a Byron address to a pair of --- the actual Byron address and the key that can sign it. -genByronUniv :: Crypto c => Network -> Gen (Map (KeyHash 'Payment c) (Addr c, Byron.SigningKey)) -genByronUniv netwrk = do - list <- vectorOf 50 (genAddrPair netwrk) - pure $ - Map.fromList - (List.map (\(addr, signkey) -> (bootstrapKeyHash addr, (AddrBootstrap addr, signkey))) list) - --- | Given a list of Byron addresses, compute BootStrap witnesses of all of those addresses --- Can only be used with StandardCrypto -bootWitness :: - (Crypto c, DSIGN c ~ DSIGN.Ed25519DSIGN) => - Hash c EraIndependentTxBody -> - [BootstrapAddress c] -> - Map (KeyHash 'Payment c) (Addr c, Byron.SigningKey) -> - Set (BootstrapWitness c) -bootWitness hash bootaddrs byronuniv = List.foldl' accum Set.empty bootaddrs - where - accum ans bootaddr@(BootstrapAddress a) = case Map.lookup (bootstrapKeyHash bootaddr) byronuniv of - Just (AddrBootstrap _, signkey) -> - Set.insert (makeBootstrapWitness hash signkey (Byron.addrAttributes a)) ans - _ -> ans - --- ================== --- Datums - --- | The universe of non-empty Datums. i.e. There are no NoDatum Datums in this list -genDatums :: - Era era => UnivSize -> Int -> Map (DataHash (EraCrypto era)) (Data era) -> Gen [Datum era] -genDatums sizes n datauniv = vectorOf n (genDatum sizes datauniv) - --- | Only generate non-empty Datums. I.e. There are no NoDatum Datums generated. -genDatum :: Era era => UnivSize -> Map (DataHash (EraCrypto era)) (Data era) -> Gen (Datum era) -genDatum UnivSize {usDatumFreq} datauniv = - frequency - [ (1, DatumHash . fst <$> genFromMap ["from genDatums DatumHash case"] datauniv) - , - ( usDatumFreq - , Datum . dataToBinaryData . snd - <$> genFromMap ["from genDatums Datum case"] datauniv - ) - ] - --- ============== --- TxOuts --- ============== - -genTxOut :: - Reflect era => - UnivSize -> - (Coin -> Map (ScriptHash (EraCrypto era)) (ScriptF era) -> Gen (Value era)) -> - Proof era -> - Coin -> - Set (Addr (EraCrypto era)) -> - Map (ScriptHash (EraCrypto era)) (ScriptF era) -> - Map (ScriptHash (EraCrypto era)) (ScriptF era) -> - Map (DataHash (EraCrypto era)) (Data era) -> - Gen (TxOut era) -genTxOut sizes genvalue p c addruniv scriptuniv spendscriptuniv datauniv = - case whichTxOut p of - TxOutShelleyToMary -> - ShelleyTxOut <$> pick1 ["genTxOut ShelleyToMary Addr"] addruniv <*> genvalue c scriptuniv - TxOutAlonzoToAlonzo -> do - addr <- pick1 ["genTxOut AlonzoToAlonzo Addr"] addruniv - v <- genvalue c scriptuniv - case addr of - AddrBootstrap _ -> pure (AlonzoTxOut addr v SNothing) - Addr _ paycred _ -> - if needsDatum paycred spendscriptuniv - then - AlonzoTxOut addr v . SJust . fst - <$> genFromMap ["from genTxOut, AlonzoToAlonzo, needsDatum case"] datauniv - else pure (AlonzoTxOut addr v SNothing) - TxOutBabbageToConway -> do - addr <- pick1 ["genTxOut BabbageToConway Addr"] addruniv - v <- genvalue c scriptuniv - (ScriptF _ refscript) <- snd <$> genFromMap ["genTxOut, BabbageToConway, refscript case"] scriptuniv - maybescript <- elements [SNothing, SJust refscript] - case addr of - AddrBootstrap _ -> pure $ BabbageTxOut addr v NoDatum maybescript - Addr _ paycred _ -> - if needsDatum paycred spendscriptuniv - then BabbageTxOut addr v <$> genDatum sizes datauniv <*> pure maybescript - else pure $ BabbageTxOut addr v NoDatum maybescript - -needsDatum :: - EraScript era => - Credential 'Payment (EraCrypto era) -> - Map (ScriptHash (EraCrypto era)) (ScriptF era) -> - Bool -needsDatum (ScriptHashObj hash) spendScriptUniv = case Map.lookup hash spendScriptUniv of - Nothing -> False - Just (ScriptF _ script) -> not (isNativeScript script) -needsDatum _ _ = False - -genTxOuts :: - Reflect era => - UnivSize -> - (Coin -> Map (ScriptHash (EraCrypto era)) (ScriptF era) -> Gen (Value era)) -> - Proof era -> - Int -> - Set (Addr (EraCrypto era)) -> - Map (ScriptHash (EraCrypto era)) (ScriptF era) -> - Map (ScriptHash (EraCrypto era)) (ScriptF era) -> - Map (DataHash (EraCrypto era)) (Data era) -> - Gen [TxOutF era] -genTxOuts sizes genvalue p ntxouts addruniv scriptuniv spendscriptuniv datauniv = do - let genOne = do - c <- noZeroCoin - genTxOut sizes genvalue p c addruniv scriptuniv spendscriptuniv datauniv - vectorOf ntxouts (TxOutF p <$> genOne) - --- ================================================================== --- MultiAssets - -genMultiAssetTriple :: - Map.Map (ScriptHash (EraCrypto era)) (ScriptF era) -> - Set AssetName -> - Gen Integer -> - Gen (PolicyID (EraCrypto era), AssetName, Integer) -genMultiAssetTriple scriptMap assetSet genAmount = - (,,) - <$> (PolicyID . fst <$> (genFromMap [] scriptMap)) - <*> (fst <$> (itemFromSet [] assetSet)) - <*> genAmount - --- =================================================================== --- Helper functions in the Gen monad. - -pick1 :: [String] -> Set t -> Gen t -pick1 msgs s = fst <$> itemFromSet ("from pick1" : msgs) s - -makeHashScriptMap :: - Reflect era => - Proof era -> - Int -> - PlutusPurposeTag -> - Map (KeyHash 'Witness (EraCrypto era)) (KeyPair 'Witness (EraCrypto era)) -> - ValidityInterval -> - Gen (Map (ScriptHash (EraCrypto era)) (ScriptF era)) -makeHashScriptMap p size tag m vi = do - let genOne Spending = - -- Make an effort to get as many plutus scripts as possible (in Eras that support plutus) - case whichScript p of - ScriptShelleyToShelley -> genCoreScript p Spending m vi - ScriptAllegraToMary -> genCoreScript p Spending m vi - ScriptAlonzoToConway -> - oneof - [ snd . snd <$> genFromMap [] (spendPlutusScripts p) - , genCoreScript p Spending m vi - ] - genOne t = genCoreScript p t m vi - scs <- vectorOf size (genOne tag) - pure $ Map.fromList $ map (\x -> (hashScript x, ScriptF p x)) scs - -genDataWits :: - Era era => - Proof era -> - Int -> - Gen (Map (DataHash (EraCrypto era)) (Data era)) -genDataWits _p size = do - scs <- vectorOf size arbitrary - pure $ Map.fromList $ map (\x -> (hashData x, x)) scs - --- This universe must not use Byron Addresses in Babbage and Conway, as Byron Addresses --- do not play well with plutusScripts in those eras. -genAddrWith :: - Proof era -> - Network -> - Set (Credential 'Payment (EraCrypto era)) -> - Set Ptr -> - Set (Credential 'Staking (EraCrypto era)) -> - Map (KeyHash 'Payment (EraCrypto era)) (Addr (EraCrypto era), Byron.SigningKey) -> -- The Byron Addresss Universe - Gen (Addr (EraCrypto era)) -genAddrWith proof net ps ptrss cs byronMap = - case whichTxOut proof of - TxOutBabbageToConway -> Addr net <$> pick1 ["from genPayCred ScriptHashObj"] ps <*> genStakeRefWith proof ptrss cs - _ -> - frequency - [ (8, Addr net <$> pick1 ["from genPayCred ScriptHashObj"] ps <*> genStakeRefWith proof ptrss cs) - , (2, fst . snd <$> genFromMap ["from byronAddrUniv"] byronMap) -- This generates a known Byron Address - ] - -genPtr :: SlotNo -> Gen Ptr -genPtr (SlotNo n) = - Ptr - <$> (SlotNo <$> choose (0, n)) - <*> (TxIx <$> choose (0, 10)) - <*> (mkCertIxPartial <$> choose (1, 20)) - -genStakeRefWith :: - forall era. - Proof era -> - Set Ptr -> - Set (Credential 'Staking (EraCrypto era)) -> - Gen (StakeReference (EraCrypto era)) -genStakeRefWith proof ps cs = - frequency - [ (80, StakeRefBase <$> pick1 ["from genStakeRefWith StakeRefBase"] cs) - , - ( if protocolVersion proof >= protocolVersion Conway then 0 else 5 - , StakeRefPtr <$> pick1 ["from genStakeRefWith StakeRefPtr"] ps - ) - , (15, pure StakeRefNull) - ] - -noScripts :: Proof era -> Addr (EraCrypto era) -> Bool -noScripts _ (Addr _ (ScriptHashObj _) _) = False -noScripts _ (Addr _ _ (StakeRefBase (ScriptHashObj _))) = False -noScripts _ (AddrBootstrap _) = False -noScripts _ _ = True - --- | Make some candidate DReps. The 'Always...' and one from each Credential. -genDReps :: Set (Credential 'Staking c) -> Gen [DRep c] -genDReps creds = - shuffle - ( map (DRepCredential . coerceKeyRole) (Set.toList creds) - ++ [DRepAlwaysAbstain, DRepAlwaysNoConfidence] - ) - -genDRepsT :: - UnivSize -> - Term era (Set (Credential 'Staking (EraCrypto era))) -> - Target era (Gen (Set (DRep (EraCrypto era)))) -genDRepsT sizes creds = Constr "listToSet" (\cs -> (Set.fromList . take (usNumDReps sizes)) <$> genDReps cs) ^$ creds - --- ====================================================================== --- Reusable Targets. First order representations of functions for use in --- building 'Target's. We will apply these to Term variables, --- (using (:$) and (^$)) to indicate how to construct a random values assigned --- to those variables. By convention we name these "functional" targets by --- post-fixing their names with a captial "T". These may be a bit more --- prescriptive rather than descriptive, but you do what you have to do. - -txOutT :: Reflect era => Proof era -> Addr (EraCrypto era) -> Coin -> TxOutF era -txOutT p x c = TxOutF p (mkBasicTxOut x (inject c)) - --- | The collateral consists only of VKey addresses --- and the collateral outputs in the UTxO do not contain any non-ADA part -colTxOutT :: EraTxOut era => Proof era -> Set (Addr (EraCrypto era)) -> Gen (TxOutF era) -colTxOutT p noScriptAddr = - TxOutF p - <$> (mkBasicTxOut <$> pick1 ["from colTxOutT noScriptAddr"] noScriptAddr <*> (inject <$> noZeroCoin)) - --- | The collateral consists only of VKey addresses --- and the collateral outputs in the UTxO do not contain any non-ADA part -colTxOutSetT :: EraTxOut era => Proof era -> Set (Addr (EraCrypto era)) -> Gen (Set (TxOutF era)) -colTxOutSetT p noScriptAddr = Set.foldl' accum (pure Set.empty) noScriptAddr - where - accum ansM addr = do - c <- noZeroCoin - Set.insert (TxOutF p (mkBasicTxOut addr (inject c))) <$> ansM - -scriptHashObjT :: Term era (ScriptHash (EraCrypto era)) -> Target era (Credential k (EraCrypto era)) -scriptHashObjT x = Constr "ScriptHashObj" ScriptHashObj ^$ x - -keyHashObjT :: - Term era (KeyHash 'Witness (EraCrypto era)) -> Target era (Credential k (EraCrypto era)) -keyHashObjT x = Constr "KeyHashObj" (KeyHashObj . coerceKeyRole) ^$ x - -makeValidityT :: - Term era SlotNo -> Term era SlotNo -> Term era SlotNo -> Target era ValidityInterval -makeValidityT begin current end = - Constr - "(-i)x(+j)" - (\beginD x endD -> ValidityInterval (SJust (x - beginD)) (SJust (x + endD))) - ^$ begin - ^$ current - ^$ end - -ptrUnivT :: Int -> Term era SlotNo -> Target era (Gen (Set Ptr)) -ptrUnivT nptrs x = Constr "" (setSized ["From init ptruniv"] nptrs) :$ (Constr "" genPtr ^$ x) - -addrUnivT :: - Proof era -> - Int -> - Term era Network -> - Term era (Set (Credential 'Payment (EraCrypto era))) -> - Term era (Set Ptr) -> - Term era (Set (Credential 'Staking (EraCrypto era))) -> - Term era (Map (KeyHash 'Payment (EraCrypto era)) (Addr (EraCrypto era), Byron.SigningKey)) -> - Target era (Gen (Set (Addr (EraCrypto era)))) -addrUnivT p naddr net ps pts cs byronAddrUnivT = - Constr "" (setSized ["From addrUnivT"] naddr) - :$ (Constr "genAddrWith" (genAddrWith p) ^$ net ^$ ps ^$ pts ^$ cs ^$ byronAddrUnivT) - -makeHashScriptMapT :: - Proof era -> - Int -> - PlutusPurposeTag -> - Term era (Map (KeyHash 'Witness (EraCrypto era)) (KeyPair 'Witness (EraCrypto era))) -> - Term era ValidityInterval -> - Target era (Gen (Map (ScriptHash (EraCrypto era)) (ScriptF era))) -makeHashScriptMapT p size tag m vi = - Constr - "makeHashScriptMap" - (unReflect makeHashScriptMap p size tag) - ^$ m - ^$ vi - -cast :: forall c k. Set (KeyHash 'Witness c) -> Set (KeyHash k c) -cast x = Set.map (\kh -> coerceKeyRole @KeyHash @'Witness kh) x - --- TODO make some Script Credentials in addition to Key credentials -castCredCold :: Set (KeyHash 'Witness c) -> Set (Credential 'ColdCommitteeRole c) -castCredCold = Set.map (coerceKeyRole . KeyHashObj) - -castCredHot :: Set (KeyHash 'Witness c) -> Set (Credential 'HotCommitteeRole c) -castCredHot = Set.map (coerceKeyRole . KeyHashObj) - -txinToGovactionId :: TxIn c -> GovActionId c -txinToGovactionId (TxIn idx (TxIx n)) = GovActionId idx (GovActionIx (fromIntegral n)) - --- ================================================================= --- Using constraints to generate the Universes - -universePreds :: Reflect era => UnivSize -> Proof era -> [Pred era] -universePreds size p = - [ Sized (Range 100 500) currentSlot - , Sized (Range 0 30) beginSlotDelta -- Note that (currentSlot - beginSlotDelta) is aways positive - , Sized (Range 900 1000) endSlotDelta -- Note each block may have spacing of 2-4 blocks, - -- So for a Trace of length at most 300, we need at least 900 slots on average - , Sized (ExactSize (usNumKeys size)) keypairs - , keymapUniv :<-: (Constr "xx" (\s -> Map.fromList (map (\x -> (hashKey (vKey x), x)) s)) ^$ keypairs) - , Sized (ExactSize (usNumPools size)) prePoolUniv - , Subset prePoolUniv (Dom keymapUniv) - , poolHashUniv :<-: (Constr "WitnessToStakePool" cast ^$ prePoolUniv) - , Sized (ExactSize (usNumStakeKeys size)) preStakeUniv - , Subset preStakeUniv (Dom keymapUniv) - , stakeHashUniv :<-: (Constr "WitnessToStaking" cast ^$ preStakeUniv) - , drepHashUniv :<-: (Constr "WitnessToDRepRole" cast ^$ preStakeUniv) - , Sized (ExactSize (usNumGenesisKeys size)) preGenesisUniv - , Subset preGenesisUniv (Dom keymapUniv) - , preGenesisDom :<-: (Constr "WitnessToGenesis" cast ^$ preGenesisUniv) - , preGenesisDom :=: (Dom genesisHashUniv) - , Sized (ExactSize (usNumVoteKeys size)) preVoteUniv - , Subset preVoteUniv (Dom keymapUniv) - , voteCredUniv :<-: (Constr "WitnessToStakePool" castCredCold ^$ preVoteUniv) - , Sized (ExactSize (usNumTxIn size)) txinUniv - , Member (Right feeTxIn) txinUniv - , govActionIdUniv :<-: (Constr "TxIn-to-GovActionId" (Set.map txinToGovactionId) ^$ txinUniv) - , validityInterval :<-: makeValidityT beginSlotDelta currentSlot endSlotDelta - , Choose - (ExactSize (usNumCredentials size)) - credList - [ - ( usCredScriptFreq size - , scriptHashObjT scripthash - , [Member (Left scripthash) (Dom (nonSpendScriptUniv p))] - ) - , (1, keyHashObjT keyhash, [Member (Left keyhash) (Dom keymapUniv)]) - ] - , credsUniv :<-: listToSetTarget credList - , GenFrom (spendscriptUniv p) (makeHashScriptMapT p 25 Spending keymapUniv validityInterval) - , GenFrom (nonSpendScriptUniv p) (makeHashScriptMapT p 25 Certifying keymapUniv validityInterval) - , allScriptUniv p :<-: (Constr "union" Map.union ^$ (spendscriptUniv p) ^$ (nonSpendScriptUniv p)) - , Choose - (ExactSize 70) - spendcredList - [ - ( usSpendScriptFreq size - , scriptHashObjT scripthash - , [Member (Left scripthash) (Dom (spendscriptUniv p))] - ) - , (2, keyHashObjT keyhash, [Member (Left keyhash) (Dom keymapUniv)]) - ] - , spendCredsUniv :<-: listToSetTarget spendcredList - , currentEpoch :<-: (Constr "epochFromSlotNo" epochFromSlotNo ^$ currentSlot) - , GenFrom dataUniv (Constr "dataWits" (genDataWits p) ^$ (Lit IntR 30)) - , GenFrom datumsUniv (Constr "genDatums" (genDatums size (usNumDatums size)) ^$ dataUniv) - , -- 'network' is set by testGlobals which contains 'Testnet' - network :<-: constTarget (Utils.networkId Utils.testGlobals) - , GenFrom ptrUniv (ptrUnivT (usNumPtr size) currentSlot) - , GenFrom byronAddrUniv (Constr "byronUniv" genByronUniv ^$ network) - , GenFrom - addrUniv - (addrUnivT p (usNumAddr size) network spendCredsUniv ptrUniv credsUniv byronAddrUniv) - , GenFrom - multiAssetUniv - (Constr "multiAsset" (vectorOf (usNumMultiAsset size) . multiAsset size) ^$ (nonSpendScriptUniv p)) - , GenFrom - preTxoutUniv - ( Constr "genTxOuts" (genTxOuts size (genValueF size p) p (usNumTxOuts size)) - ^$ addrUniv - ^$ (nonSpendScriptUniv p) - ^$ (spendscriptUniv p) - ^$ dataUniv - ) - , GenFrom - (colTxoutUniv p) - ( Constr - "colTxOutUniv" - (\x -> colTxOutSetT p (Set.filter (noScripts p) x)) - ^$ addrUniv - ) - , GenFrom drepUniv (genDRepsT size credsUniv) - , payUniv :=: spendCredsUniv - , voteUniv :<-: (Constr "coerce" (Set.map stakeToDRepRole) ^$ credsUniv) - , hotCommitteeCredsUniv :<-: (Constr "coerce" (Set.map stakeToHotCommittee) ^$ credsUniv) - , coldCommitteeCredsUniv :<-: (Constr "coerce" (Set.map stakeToColdCommittee) ^$ credsUniv) - , bigCoin :<-: constTarget (Coin 2000000) - , GenFrom - feeTxOut - ( Constr - "txout" - ( \a c -> - txOutT p - <$> pick1 ["from feeTxOut on (filter nocripts addrUniv)"] (Set.filter (noScripts p) a) - <*> pure c - ) - ^$ addrUniv - ^$ bigCoin - ) - , txoutUniv p - :<-: ( Constr - "insert" - (\x y _z -> Set.insert x {- (Set.union z -} (Set.fromList y)) -- ) - ^$ feeTxOut - ^$ preTxoutUniv - ^$ (colTxoutUniv p) - ) - , plutusUniv :<-: constTarget (Map.map (\(x, y) -> (x, ScriptF p y)) (allPlutusScripts p)) - , spendPlutusUniv :<-: constTarget (Map.map (\(x, y) -> (x, ScriptF p y)) (spendPlutusScripts p)) - ] - where - credList = Var (V "credList" (ListR CredR) No) - spendcredList = Var (V "spendcred.list" (ListR PCredR) No) - keyhash = Var (V "keyhash" WitHashR No) - scripthash = Var (V "scripthash" ScriptHashR No) - preTxoutUniv = Var (V "preTxoutUniv" (ListR (TxOutR p)) No) - keypairs = Var (V "keypairs" (ListR KeyPairR) No) - prePoolUniv = Var (V "prePoolUniv" (SetR WitHashR) No) - preStakeUniv = Var (V "preStakeUniv" (SetR WitHashR) No) - preGenesisUniv = Var (V "preGenesisUniv" (SetR WitHashR) No) - preGenesisDom = Var (V "preGenesisDom" (SetR GenHashR) No) - preVoteUniv = Var (V "preVoteUniv" (SetR WitHashR) No) - -multiAsset :: - UnivSize -> Map.Map (ScriptHash (EraCrypto era)) (ScriptF era) -> Gen (MultiAsset (EraCrypto era)) -multiAsset size scripts = do - let assets = - Set.fromList [AssetName (fromString (show (n :: Int) ++ "Asset")) | n <- [0 .. (usMaxAssets size)]] - n <- elements [0 .. (usMaxPolicyID size)] - if n == 0 - then pure mempty -- About 1/3 of the list will be the empty MA - else do - -- So lots of duplicates, but we want to choose the empty MA, 1/3 of the time. - xs <- vectorOf n (genMultiAssetTriple scripts assets (choose (1, 100))) - pure $ multiAssetFromList xs - -genValueF :: - UnivSize -> Proof era -> Coin -> Map (ScriptHash (EraCrypto era)) (ScriptF era) -> Gen (Value era) -genValueF size proof c scripts = case whichValue proof of - ValueShelleyToAllegra -> pure c - ValueMaryToConway -> MaryValue c <$> multiAsset size scripts - -stakeToDRepRole :: Credential 'Staking c -> Credential 'DRepRole c -stakeToDRepRole = coerceKeyRole - -stakeToHotCommittee :: Credential 'Staking c -> Credential 'HotCommitteeRole c -stakeToHotCommittee = coerceKeyRole - -stakeToColdCommittee :: Credential 'Staking c -> Credential 'ColdCommitteeRole c -stakeToColdCommittee = coerceKeyRole - -solveUniv :: Reflect era => UnivSize -> Proof era -> Gen (Subst era) -solveUniv size proof = do - toolChainSub proof standardOrderInfo (universePreds size proof) emptySubst - -universeStage :: - Reflect era => - UnivSize -> - Proof era -> - Subst era -> - Gen (Subst era) -universeStage size proof = toolChainSub proof standardOrderInfo (universePreds size proof) - -demo :: ReplMode -> IO () -demo mode = do - let proof = Shelley - subst <- generate (universeStage def proof emptySubst) - if mode == Interactive - then putStrLn "\n" >> putStrLn (show subst) - else pure () - env <- monadTyped (substToEnv subst emptyEnv) - modeRepl mode proof env "" - -demoTest :: TestTree -demoTest = testIO "Testing Universe Stage" (demo CI) - -main :: IO () -main = defaultMain $ testIO "Testing Universe Stage" (demo Interactive) diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Rewrite.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Rewrite.hs deleted file mode 100644 index 2e413a0ab5d..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Rewrite.hs +++ /dev/null @@ -1,798 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE PartialTypeSignatures #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# OPTIONS_GHC -Wno-unused-binds #-} -{-# OPTIONS_GHC -Wno-unused-imports #-} - -module Test.Cardano.Ledger.Constrained.Rewrite ( - rewrite, - rewriteGen, - rewritePred, - compile, - compileGenWithSubst, - removeSameVar, - removeEqual, - DependGraph (..), - accumdep, - OrderInfo (..), - standardOrderInfo, - initialOrder, - showGraph, - listEq, - mkDependGraph, - notBefore, - cpeq, - cteq, - mkNewVar, - addP, - addPred, - partitionE, - rename, -) where - -import Cardano.Ledger.Address (Addr (..)) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Conway.Governance (GovAction (..)) -import Cardano.Ledger.Core (EraTxOut (..), TxOut, coinTxOutL) -import Cardano.Ledger.Crypto (StandardCrypto) -import Cardano.Ledger.Era (Era (EraCrypto)) -import Cardano.Ledger.Val (Val (coin, modifyCoin)) -import qualified Data.Array as A -import Data.Foldable (toList) -import Data.Graph (Graph, SCC (AcyclicSCC, CyclicSCC), Vertex, graphFromEdges, stronglyConnComp) -import Data.HashSet (HashSet) -import qualified Data.HashSet as HashSet -import qualified Data.List as List -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Set (Set) -import qualified Data.Set as Set -import Data.Void (Void) -import Debug.Trace -import Lens.Micro (Lens', lens, (&), (.~), (^.)) -import Test.Cardano.Ledger.Constrained.Ast -import Test.Cardano.Ledger.Constrained.Combinators (setSized) -import Test.Cardano.Ledger.Constrained.Env ( - Access (..), - AnyF (..), - Env (..), - Field (..), - Name (..), - V (..), - pV, - sameName, - ) -import Test.Cardano.Ledger.Constrained.Monad (HasConstraint (With), Typed (..), failT, monadTyped) -import Test.Cardano.Ledger.Constrained.Size -import Test.Cardano.Ledger.Constrained.Size (genFromSize) -import Test.Cardano.Ledger.Constrained.TypeRep -import Test.Cardano.Ledger.Constrained.Vars -import Test.Cardano.Ledger.Generic.Fields -import Test.Cardano.Ledger.Generic.Proof -import Test.Cardano.Ledger.Generic.Updaters (newTxOut) -import Test.QuickCheck -import Type.Reflection (typeRep) - --- ============================================================ --- Conservative (approximate) Equality - --- | Test if two terms (of possibly different types) are equal -typedEq :: Era era => Term era a -> Term era b -> Bool -typedEq x y = case testEql (termRep x) (termRep y) of - Just Refl -> cteq x y - Nothing -> False - -cEq :: (Eq c, Era era) => Term era c -> Term era a -> c -> a -> Bool -cEq t1 t2 c1 c2 = case testEql (termRep t1) (termRep t2) of - Just Refl -> c1 == c2 - Nothing -> False - -listEq :: (a -> b -> Bool) -> [a] -> [b] -> Bool -listEq _ [] [] = True -listEq eqf (x : xs) (y : ys) = eqf x y && listEq eqf xs ys -listEq _ _ _ = False - --- | Conservative Sum equality -csumeq :: Era era => Sum era t -> Sum era t -> Bool -csumeq (One x) (One y) = cteq x y -csumeq (SumMap x) (SumMap y) = - case testEql (termRep x) (termRep y) of - Just Refl -> cteq x y - Nothing -> False -csumeq (SumList x) (SumList y) = cteq x y -csumeq _ _ = False - --- | Conservative (and unsound for Constr and Invert) Target equality -ctareq :: Era era => RootTarget era r t -> RootTarget era r t -> Bool -ctareq (Constr x _) (Constr y _) = x == y -ctareq (Invert x _ _) (Invert y _ _) = x == y -ctareq (Simple x) (Simple y) = cteq x y -ctareq (x :$ (Simple xs)) (y :$ (Simple ys)) = - case testEql (termRep xs) (termRep ys) of - Just Refl -> ctareq x y && cteq xs ys - Nothing -> False -ctareq _ _ = False - --- | Conservative Term equality -cteq :: Era era => Term era t -> Term era t -> Bool -cteq (Lit t1 x) (Lit t2 y) = case testEql t1 t2 of - Just Refl -> - case hasEq t1 t1 of - Typed (Right (With _)) -> x == y - _ -> False - Nothing -> False -cteq (Var x) (Var y) = Name x == Name y -cteq (Dom x) (Dom y) = typedEq x y -cteq (Rng x) (Rng y) = typedEq x y -cteq (Elems x) (Elems y) = typedEq x y -cteq (Delta x) (Delta y) = typedEq x y -cteq (Negate x) (Negate y) = typedEq x y -cteq (HashD x) (HashD y) = typedEq x y -cteq (HashS x) (HashS y) = typedEq x y -cteq (Pair x a) (Pair y b) = typedEq x y && typedEq a b -cteq _ _ = False - --- | Conservative Pred equality -cpeq :: Era era => Pred era -> Pred era -> Bool -cpeq (Sized x a) (Sized y b) = cteq x y && typedEq a b -cpeq (x :=: a) (y :=: b) = typedEq x y && typedEq a b -cpeq (x :⊆: a) (y :⊆: b) = typedEq x y && typedEq a b -cpeq (Disjoint x a) (Disjoint y b) = typedEq x y && typedEq a b -cpeq (Random x) (Random y) = typedEq x y -cpeq (CanFollow x a) (CanFollow y b) = typedEq x y && typedEq a b -cpeq (SumsTo (Right i) x c xs) (SumsTo (Right j) y d ys) = cEq x y i j && typedEq x y && listEq cseq xs ys && c == d -cpeq (SumsTo (Left i) x c xs) (SumsTo (Left j) y d ys) = cEq x y i j && typedEq x y && listEq cseq xs ys && c == d -cpeq (SumSplit i x c xs) (SumSplit j y d ys) = cEq x y i j && typedEq x y && listEq cseq xs ys && c == d -cpeq (Component (Left x) xs) (Component (Left y) ys) = typedEq x y && listEq anyWeq xs ys -cpeq (Component (Right x) xs) (Component (Right y) ys) = typedEq x y && listEq anyWeq xs ys -cpeq (Member (Right x) xs) (Member (Right y) ys) = typedEq x y && typedEq xs ys -cpeq (Member (Left x) xs) (Member (Left y) ys) = typedEq x y && typedEq xs ys -cpeq (SubMap x xs) (SubMap y ys) = typedEq x y && typedEq xs ys -cpeq (NotMember x xs) (NotMember y ys) = typedEq x y && typedEq xs ys -{- TODO FIX ME -cpeq (x :<-: xs) (y :<-: ys) = case testEql (termRep x) (termRep y) of - Just Refl -> typedEq x y && ctareq xs ys - Nothing -> False --} -cpeq x y = sumsEq x y - --- | Conservative SumsTo equality -sumsEq :: Era era => Pred era -> Pred era -> Bool -sumsEq (SumsTo (Left s1) x1 c1 ss1) (SumsTo (Left s2) x2 c2 ss2) = - case testEql (termRep x1) (termRep x2) of - Just Refl -> s1 == s2 && typedEq x1 x2 && c1 == c2 && listEq csumeq ss1 ss2 - Nothing -> False -sumsEq (SumsTo (Right s1) x1 c1 ss1) (SumsTo (Right s2) x2 c2 ss2) = - case testEql (termRep x1) (termRep x2) of - Just Refl -> s1 == s2 && typedEq x1 x2 && c1 == c2 && listEq csumeq ss1 ss2 - Nothing -> False -sumsEq _ _ = False - --- | Conservative Sum equality -cseq :: Era era => Sum era c -> Sum era d -> Bool -cseq (One x) (One y) = typedEq x y -cseq (SumMap x) (SumMap y) = typedEq x y -cseq (SumList x) (SumList y) = typedEq x y -cseq (ProjMap r1 _ x) (ProjMap r2 _ y) = case testEql r1 r2 of - Just Refl -> typedEq x y - Nothing -> False -cseq _ _ = False - -anyWeq :: Era era => AnyF era t -> AnyF era s -> Bool -anyWeq (AnyF (Field x y z l)) (AnyF (Field a b c m)) = Name (V x y (Yes z l)) == Name (V a b (Yes c m)) -anyWeq _ _ = False - --- ================================================================================== --- Rewriting by replacing (Dom x) by a new varariabl xDom, and adding additional --- [Pred], that relate xDom with other terms - -mkNewVar :: forall era d r. Term era (Map d r) -> Term era (Set d) -mkNewVar (Var (V nm (MapR d _) _)) = newVar - where - newstring = nm ++ "Dom" - newV = V newstring (SetR d) No - newVar = Var newV -mkNewVar other = error ("mkNewVar should only be applied to variables: " ++ show other) - -addP :: Era era => Pred era -> [Pred era] -> [Pred era] -addP p ps = List.nubBy cpeq (p : ps) - -addPred :: - Era era => HashSet (Name era) -> Pred era -> [Name era] -> [Pred era] -> [Pred era] -> [Pred era] -addPred bad orig names ans newps = - if any (\x -> HashSet.member x bad) names - then addP orig ans - else foldr addP ans newps - -removeSameVar :: Era era => [Pred era] -> [Pred era] -> [Pred era] -removeSameVar [] ans = reverse ans -removeSameVar ((Var v :=: Var u) : more) ans | Name v == Name u = removeSameVar more ans -removeSameVar ((Var v :⊆: Var u) : more) ans | Name v == Name u = removeSameVar more ans -removeSameVar (Disjoint (Var v@(V _ rep _)) (Var u) : more) ans | Name v == Name u = removeSameVar more ((Lit rep mempty :=: Var v) : ans) -removeSameVar (m : more) ans = removeSameVar more (m : ans) - -removeEqual :: Era era => [Pred era] -> [Pred era] -> [Pred era] -removeEqual [] ans = reverse ans -removeEqual ((Var v :=: Var u) : more) ans | Name v == Name u = removeEqual more ans -removeEqual ((Var v :=: expr@Lit {}) : more) ans = removeEqual (map sub more) ((Var v :=: expr) : map sub ans) - where - sub = substPred (singleSubst v expr) -removeEqual ((expr@Lit {} :=: Var v) : more) ans = removeEqual (map sub more) ((expr :=: Var v) : map sub ans) - where - sub = substPred (singleSubst v expr) -removeEqual (m : more) ans = removeEqual more (m : ans) - -removeTrivial :: Era era => [Pred era] -> [Pred era] -removeTrivial = filter (not . trivial) - where - trivial p | null (varsOfPred mempty p) = - case runTyped $ runPred (Env mempty) p of - Left {} -> False - Right validx -> validx - trivial (e1 :=: e2) = cteq e1 e2 - trivial _ = False - -rewrite :: Era era => [Pred era] -> [Pred era] -rewrite cs = removeTrivial $ removeSameVar (removeEqual cs []) [] - --- ========================================================= --- Expanding (Choose _ _ _) into several simpler [Pred era] - -type SubItems era = [SubItem era] - -fresh :: (Int, SubItems era) -> RootTarget era r t -> (Int, SubItems era) -fresh (n, sub) (Constr _ _) = (n, sub) -fresh (n, sub) (Invert _ _ _) = (n, sub) -fresh (n, sub) (Shift x _) = fresh (n, sub) x -fresh (n, sub) (Mask x) = fresh (n, sub) x -fresh (n, sub) (Simple (Var v@(V nm rep acc))) = (n + 1, SubItem v (Var (V (index nm n) rep acc)) : sub) -fresh (n, sub) (Simple expr) = mksub n (HashSet.toList (vars expr)) - where - mksub m names = (n + length names, sub2 ++ sub) - where - sub2 = zipWith (\(Name v@(V nm r _)) m1 -> SubItem v (Var (V (index nm m1) r No))) names [m ..] -fresh (n, sub) (Lensed (Var v@(V nm rep acc)) _) = (n + 1, SubItem v (Var (V (index nm n) rep acc)) : sub) -fresh (n, sub) (Lensed expr _) = mksub n (HashSet.toList (vars expr)) - where - mksub m names = (n + length names, sub2 ++ sub) - where - sub2 = zipWith (\(Name v@(V nm r _)) m1 -> SubItem v (Var (V (index nm m1) r No))) names [m ..] -fresh (n, sub) (Partial (Var v@(V nm rep acc)) _) = (n + 1, SubItem v (Var (V (index nm n) rep acc)) : sub) -fresh (n, sub) (Partial expr _) = mksub n (HashSet.toList (vars expr)) - where - mksub m names = (n + length names, sub2 ++ sub) - where - sub2 = zipWith (\(Name v@(V nm r _)) m1 -> SubItem v (Var (V (index nm m1) r No))) names [m ..] -fresh (n, sub) (f :$ x) = fresh (fresh (n, sub) f) x -fresh (n, sub) (Virtual x _ _) = fresh (n, sub) (Simple x) - -freshP :: (Int, SubItems era) -> Pat era t -> (Int, SubItems era) -freshP (n, sub) (Pat _ as) = List.foldl' freshA (n, sub) as - -freshA :: (Int, SubItems era) -> Arg era t -> (Int, SubItems era) -freshA (n, sub) (Arg (Field nm r a l)) = (n + 1, SubItem (V nm r (Yes a l)) (Var (V (index nm n) r (Yes a l))) : sub) -freshA pair (Arg (FConst _ _ _ _)) = pair -freshA (n, sub) (ArgPs (Field nm r a l) ps) = - List.foldl' freshP (n + 1, SubItem (V nm r (Yes a l)) (Var (V (index nm n) r (Yes a l))) : sub) ps -freshA pair (ArgPs (FConst _ _ _ _) ps) = List.foldl' freshP pair ps - -freshVars :: Int -> Int -> V era [t] -> ([Term era t], Int) -freshVars m count (V nm (ListR rep) _) = ([Var (V (index nm c) rep No) | c <- [m .. m + (count - 1)]], m + count) - -index :: String -> Int -> String -index nm c = nm ++ "." ++ show c - --- When we expect the variable to have a (FromList t a) constraint -freshVars2 :: FromList fs t => Int -> Int -> V era fs -> ([Term era t], Int) -freshVars2 m count (V nm lrep _) = - let arep = tsRep lrep - in ([Var (V (index nm c) arep No) | c <- [m .. m + (count - 1)]], m + count) - -freshPairs :: - ((Int, SubItems era), [(RootTarget era r t, [Pred era])]) -> - (RootTarget era r t, [Pred era]) -> - ((Int, SubItems era), [(RootTarget era r t, [Pred era])]) -freshPairs (xx, ans) (tar, ps) = (yy, (target2, ps2) : ans) - where - yy@(_, subitems) = fresh xx tar - subst = itemsToSubst subitems - target2 = substTarget subst tar - ps2 = map (substPred subst) ps - -freshPair :: - Int -> - (RootTarget era r t, [Pred era]) -> - (Int, SubItems era, RootTarget era r t, [Pred era]) -freshPair m0 (tar, ps) = (m1, subitems, target2, ps2) - where - (m1, subitems) = fresh (m0, []) tar - subst = itemsToSubst subitems - target2 = substTarget subst tar - ps2 = map (substPred subst) ps - --- | Used to rename targets and preds, where they are embeded in a Triple, where the first component is the frequency -freshTriples :: - ((Int, SubItems era), [(Int, RootTarget era r t, [Pred era])]) -> - (Int, RootTarget era r t, [Pred era]) -> - ((Int, SubItems era), [(Int, RootTarget era r t, [Pred era])]) -freshTriples (xx, ans) (i, tar, ps) = (yy, (i, target2, ps2) : ans) - where - yy@(_, subitems) = fresh xx tar - subst = itemsToSubst subitems - target2 = substTarget subst tar - ps2 = map (substPred subst) ps - -freshPats :: - ((Int, SubItems era), [(Pat era t, [Pred era])]) -> - (Pat era t, [Pred era]) -> - ((Int, SubItems era), [(Pat era t, [Pred era])]) -freshPats (xx, ans) (pat, ps) = (yy, (pat2, ps2) : ans) - where - yy@(_, sub) = freshP xx pat - subst = itemsToSubst sub - pat2 = substPat subst pat - ps2 = map (substPred subst) ps - --- | We have something like (SumsTo x total EQL [One x]) and we want --- something like: (SumsTo x total EQL [One x.1, One x.2, One x.3]) --- | Or something like (SumSplit x total EQL [One x]) which expands to --- something like: (SumSplitx total EQL [One x.1, One x.2, One x.3]) --- So we find all the bindings for 'x' in the SubItems, and cons them together. -extendSum :: SubItems era -> Sum era c -> [Sum era c] -extendSum sub (ProjOne l r (Var v2)) = foldr accum [] sub - where - accum (SubItem v1 term) ans | Just Refl <- sameName v1 v2 = ProjOne l r term : ans - accum _ ans = ans -extendSum sub (One (Var v2)) = foldr accum [] sub - where - accum (SubItem v1 term) ans | Just Refl <- sameName v1 v2 = One term : ans - accum _ ans = ans -extendSum _sub other = error ("None One or ProjOne in Sum list: " ++ show other) - -extendSums :: Era era => SubItems era -> [Pred era] -> [Pred era] -extendSums _ [] = [] -extendSums sub (SumsTo c t cond [s] : more) = SumsTo c t cond (extendSum sub s) : extendSums sub more -extendSums sub (SumSplit c t cond [s] : more) = SumSplit c t cond (extendSum sub s) : extendSums sub more -extendSums _ (m : _more) = error ("Non extendableSumsTo in extendSums: " ++ show m) - -rename :: Name era -> [Int] -> [Name era] -rename name@(Name (V nm r a)) ns = case takeWhile (/= '.') nm of - (_ : _) -> map (\n -> Name (V (index nm n) r a)) ns - _ -> [name] - -nUniqueFromM :: Int -> Int -> Gen [Int] -nUniqueFromM n m - | n == 0 = pure [] - | n > m = pure [0 .. m] - | otherwise = - Set.toList - <$> setSized ["from Choose", "nUniqueFromM " ++ show n ++ " " ++ show m] n (choose (0, m)) - -pickNunique :: Int -> [a] -> Gen [a] -pickNunique n xs = do - indexes <- nUniqueFromM n (length xs - 1) - pure [xs !! i | i <- indexes] - --- | Make a GenFrom frequency Pred, from the input and output terms -freq :: forall era t. Term era t -> Term era [(Int, t)] -> Pred era -freq outVar inVar = GenFrom outVar (Constr "frequency" (frequency . map h) :$ (Simple inVar)) - where - h (i, x) = (i, pure x) - --- | Where is an abstraction for ( term :<-: target : preds ) -type Where era t = (Term era t, RootTarget era t t, [Pred era]) - --- | Unfold (Where x tar ps) into (x :<-: tar' : ps'), renaming tar to tar' and ps to ps' -unfoldWhere :: forall era t. ([Where era t], Int) -> ([Pred era], Int) -unfoldWhere (ps0, m0) = List.foldl' accum ([], m0) ps0 - where - accum :: ([Pred era], Int) -> Where era t -> ([Pred era], Int) - accum (ans, mx) (t, tar, ps) = ((t :<-: tar2) : ps2 ++ ans, mx1) - where - (mx1, _, tar2, ps2) = freshPair mx (tar, ps) - -rewritePred :: Era era => Int -> Pred era -> Gen ([Pred era], Int) -{- -OneOf x [(i,t1,p1),(j,t2,p2)] rewrites to -[ Where x.1 t1 p1, Where x.2 t2 p2, List xlist.3 [(i,x.1),(j,x.2)], GenFrom x frequency xlist.3] -where each (Where xi ti pi) is unfolded by renaming 'ti' and 'pi' --} -rewritePred m0 (Oneof term@(Var (V nm rep _)) ps0) = do - let count = length ps0 - (vs, m1) = freshVars m0 count (V nm (ListR rep) No) - (vlist, m2) = (Var (V (index (nm ++ "Pairs") m1) (ListR (PairR IntR rep)) No), m1 + 1) - params = zipWith (\param (i, _, _) -> Pair (Lit IntR i) param) vs ps0 - wheres = zipWith (\v (_, tar, ps) -> (v, tar, ps)) vs ps0 - (unfolded, m3) = unfoldWhere (wheres, m2) - (expandedPred, m4) <- removeExpandablePred ([], m3) unfolded - pure (expandedPred ++ [List vlist params, freq term vlist], m4) -rewritePred m0 (Choose (Lit SizeR sz) (Var v) ps0) = do - let ps1 = filter (\(i, _, _) -> i > 0) ps0 - count <- genFromSize sz - ps2 <- - if count <= length ps1 - then take count <$> shuffle (map (\(_, t, p) -> (t, p)) ps1) - else vectorOf count (frequency (map (\(i, t, p) -> (i, pure (t, p))) ps1)) - let ((m1, _), ps3) = List.foldl' freshPairs ((m0, []), []) ps2 - (xs, m2) = freshVars m1 count v - renamedPred = map snd ps3 - (expandedPred, m3) <- removeExpandablePred ([], m2) (concat renamedPred) - let newps = expandedPred ++ zipWith (:<-:) xs (map fst ps3) ++ [List (Var v) xs] - pure (newps, m3) - -{- ListWhere (Range 2 2) w target{a,b} [Member a x, Member b y] rewrites to -[ Member a1 x -, Member b1 y -, Member a2 x -, Member b2 y -, w1 :<-: target{a1,b1} a1 b1 -, w2 :<-: target{a2,b2} a2 b2 -List w [w1,w2] -] -} -rewritePred m0 (ListWhere (Lit SizeR sz) (Var v) tar ps) = do - count <- genFromSize sz - (ps1, m1) <- pure (ps, m0) -- removeExpandablePred ([], m0) ps - let ((m2, subb), ps3) = List.foldl' freshPairs ((m1, []), []) (take count (repeat (tar, ps1))) - (vs, m3) = freshVars2 m2 count v -- [v.1, v.2, v.3 ...] - renamedPred = map snd ps3 - renamedTargets = map fst ps3 - (expandedPred, m4) <- removeExpandablePred ([], m3) (concat renamedPred) - let newps = expandedPred ++ zipWith (:<-:) vs renamedTargets ++ [List (Var v) vs] - pure (newps, m4) -rewritePred m0 (ForEach (Lit SizeR sz) (Var v) tar ps) = do - let (sumstoPred, otherPred) = List.partition (extendableSumsTo tar) ps - count <- genFromSize sz - let ((m1, subb), ps3) = List.foldl' freshPats ((m0, []), []) (take count (repeat (tar, otherPred))) - (xs, m2) = freshVars2 m1 count v - renamedPred = map snd ps3 - (expandedPred, m3) <- removeExpandablePred ([], m2) (concat renamedPred) - pure $ - ( expandedPred - ++ zipWith (Component) (map Right xs) (map (patToAnyF . fst) ps3) - ++ [List (Var v) xs] - ++ extendSums subb sumstoPred - , m3 - ) -rewritePred _ (ForEach sz t tar ps) = - error ("Not a valid ForEach predicate " ++ show (ForEach sz t tar ps)) -rewritePred m0 (Maybe (Var v) (target :: (RootTarget era r t)) preds) = do - count <- chooseInt (0, 1) -- 0 is Nothing, 1 is Just - if count == 0 - then pure ([Var v :<-: (Constr "(const Nothing)" (const Nothing) ^$ (Lit UnitR ()))], m0) - else do - let (m1, subs) = fresh (m0, []) target - subst = itemsToSubst subs - target2 = substTarget subst target - renamedPred = map (substPred subst) preds - (expandedPred, m2) <- removeExpandablePred ([], m1) renamedPred - pure (expandedPred ++ [Var v :<-: (Invert "Just" (typeRep @r) Just :$ target2)], m2) -rewritePred m0 p = pure ([p], m0) - -removeExpandablePred :: Era era => ([Pred era], Int) -> [Pred era] -> Gen ([Pred era], Int) -removeExpandablePred (ps, m) [] = pure (List.nubBy cpeq (reverse ps), m) -removeExpandablePred (ps, m) (p : more) = do - (ps2, m1) <- rewritePred m p - removeExpandablePred (ps2 ++ ps, m1) more - -removeMetaSize :: Era era => [Pred era] -> [Pred era] -> Gen [Pred era] -removeMetaSize [] ans = pure $ reverse ans -removeMetaSize ((MetaSize sz t@(Var v)) : more) ans = do - n <- genFromSize sz - let sub = substPred (singleSubst v (Lit SizeR (SzExact n))) - removeMetaSize (map sub more) ((t :<-: Simple (Lit SizeR (SzExact n))) : (map sub ans)) -removeMetaSize (m : more) ans = removeMetaSize more (m : ans) - -rewriteGen :: Era era => (Int, [Pred era]) -> Gen (Int, [Pred era]) -rewriteGen (m, cs0) = do - cs1 <- removeMetaSize cs0 [] - (cs2, m1) <- removeExpandablePred ([], m) cs1 - pure (m1, removeTrivial $ removeSameVar (removeEqual cs2 []) []) - -notBefore :: Pred era -> Bool -notBefore (Before _ _) = False -notBefore _ = True - --- | Construct the DependGraph -compileGenWithSubst :: Era era => OrderInfo -> Subst era -> [Pred era] -> Gen (Int, DependGraph era) -compileGenWithSubst info subst0 cs = do - (m, simple) <- rewriteGen (0, cs) - let instanSimple = fmap (substPredWithVarTest subst0) simple - graph <- monadTyped $ do - orderedNames <- initialOrder info instanSimple - mkDependGraph (length orderedNames) [] HashSet.empty orderedNames [] (filter notBefore instanSimple) - pure (m, graph) - --- ============================================================== --- Build a Dependency Graph that extracts an ordering on the --- variables in the [Pred] we are trying to solve. The idea is that --- solving for for a [Pred] will be easier if it contains only --- one variable, and all other Terms are constants (Fixed (Lit rep x)) - --- | An Ordering -newtype DependGraph era = DependGraph [([Name era], [Pred era])] - -instance Era era => Show (DependGraph era) where - show (DependGraph xs) = unlines (map f xs) - where - f (nm, cs) = pad n (showL shName " " nm) ++ " | " ++ showL show ", " cs - n = maximum (map (length . (showL shName " ") . fst) xs) + 2 - shName :: Name era -> String - shName (Name (V v _ _)) = v - --- ========================================================= --- Sketch of algorithm for creating a DependGraph --- --- for every pair (name,[cond]) the variables of [cond] only contain name, and names --- defined in previous pairs in the DependGraph. Can we find such an order? --- To compute this from a [Pred era] we implement this algorithm --- try prev choices constraints = --- (c,more) <- pick choices --- possible <- filter (only mentions (c:prev)) constraints --- if null possible --- then try prev (more ++ [(c,possible)]) constraints --- else possible ++ try (c:prev) more (constraints - possible) --- --- =================================================================== --- Find an order to solve the variables in - --- | Three possible cases --- 1) Many predicates that define the same Name --- 2) One predicate that defines many Names --- 3) Some other bad combination -splitMultiName :: - Era era => - Name era -> - [([Name era], Pred era)] -> - ([Pred era], Maybe ([Name era], Pred era), [String]) -> - ([Pred era], Maybe ([Name era], Pred era), [String]) -splitMultiName _ [] (unary, nary, bad) = (unary, nary, bad) -splitMultiName n@(Name vn) (([m@(Name vm)], p) : more) (unary, nary, bad) = - if n == m - then splitMultiName n more (p : unary, nary, bad) - else - splitMultiName - n - more - ( unary - , nary - , ( "A unary MultiName " - ++ show vm - ++ " does not match the search name " - ++ show vn - ++ " " - ++ show p - ) - : bad - ) -splitMultiName n ((ms, p) : more) (unary, Nothing, bad) = - if elem n ms - then splitMultiName n more (unary, Just (ms, p), bad) - else - splitMultiName - n - more - ( unary - , Nothing - , ("A set of nary Multinames " ++ show ms ++ " does not contain the search name " ++ show n) : bad - ) -splitMultiName n ((ms, p) : more) (unary, Just first, bad) = - splitMultiName - n - more - (unary, Just first, ("More than one Multiname: " ++ show first ++ " and " ++ show (ms, p)) : bad) - -mkDependGraph :: - forall era. - Era era => - Int -> - [([Name era], [Pred era])] -> - HashSet (Name era) -> - [Name era] -> - [Name era] -> - [Pred era] -> - Typed (DependGraph era) -mkDependGraph _ prev _ _ _ [] = pure (DependGraph (reverse prev)) -mkDependGraph count prev _ choices badchoices specs - | count <= 0 = - failT - [ "\nFailed to find an Ordering of variables to solve for.\nHandled Constraints\n" - , show (DependGraph (reverse prev)) - , "\n vars to be processed" - , show choices - , "\n vars bad " - , show badchoices - , "\n Still to be processed\n" - , unlines (map show specs) - ] -mkDependGraph count prev prevNames [] badchoices cs = mkDependGraph (count - 1) prev prevNames (reverse badchoices) [] cs -mkDependGraph count prev prevNames (n : more) badchoices cs = - case partitionE okE cs of - ([], _) -> mkDependGraph count prev prevNames more (n : badchoices) cs - (possible, notPossible) -> case splitMultiName n possible ([], Nothing, []) of - (ps, Nothing, []) -> - mkDependGraph - count - (([n], ps) : prev) - (HashSet.insert n prevNames) - (reverse badchoices ++ more) - [] - notPossible - ([], Just (ns, p), []) -> - mkDependGraph - count - ((ns, [p]) : prev) - (HashSet.union (HashSet.fromList ns) prevNames) - (reverse badchoices ++ more) - [] - notPossible - (unary, binary, bad) -> - error - ( "SOMETHING IS WRONG in partionE \nunary = " - ++ show unary - ++ "\nbinary = " - ++ show binary - ++ "\nbad = " - ++ unlines bad - ) - where - !defined = HashSet.insert n prevNames - (poss, notposs) = partitionE okE cs - okE :: Pred era -> Either ([Name era], Pred era) (Pred era) - okE p@(SumSplit _ t _ ns) = - let rhsNames = List.foldl' varsOfSum HashSet.empty ns - in if HashSet.isSubsetOf (varsOfTerm HashSet.empty t) prevNames - && hashSetDisjoint prevNames rhsNames - && HashSet.member n rhsNames - then Left (HashSet.toList rhsNames, p) - else Right p - okE constraint = - if HashSet.isSubsetOf (varsOfPred HashSet.empty constraint) defined - then Left ([n], constraint) - else Right constraint - -partitionE :: (a -> Either b a) -> [a] -> ([b], [a]) -partitionE _ [] = ([], []) -partitionE f (x : xs) = case (f x, partitionE f xs) of - (Left b, (bs, as)) -> (b : bs, as) - (Right a, (bs, as)) -> (bs, a : as) - -firstE :: (a -> Either b a) -> [a] -> (Maybe b, [a]) -firstE _ [] = (Nothing, []) -firstE f (x : xs) = case f x of - Left b -> (Just b, xs) - Right a -> case firstE f xs of - (Nothing, as) -> (Nothing, a : as) - (Just b, as) -> (Just b, a : as) - --- ============================================================ --- Create a Graph from which we can extract a DependGraph - --- | Add to the dependency map 'answer' constraints such that every Name in 'before' --- preceeds every Name in 'after' in the order in which Names are solved for. -mkDeps :: - HashSet (Name era) -> - HashSet (Name era) -> - Map (Name era) (HashSet (Name era)) -> - Map (Name era) (HashSet (Name era)) -mkDeps before after answer = HashSet.foldl' accum answer after - where - accum ans left = Map.insertWith (HashSet.union) left before ans - -data OrderInfo = OrderInfo - { sumBeforeParts :: Bool - , sizeBeforeArg :: Bool - , setBeforeSubset :: Bool - } - deriving (Show, Eq) - -standardOrderInfo :: OrderInfo -standardOrderInfo = - OrderInfo - { sumBeforeParts = False - , sizeBeforeArg = True - , setBeforeSubset = True - } - -accumdep :: - Era era => - OrderInfo -> - Map (Name era) (HashSet (Name era)) -> - Pred era -> - Map (Name era) (HashSet (Name era)) -accumdep info answer c = case c of - sub :⊆: set -> - if setBeforeSubset info - then mkDeps (vars set) (vars sub) answer - else mkDeps (vars sub) (vars set) answer - lhs :=: rhs -> mkDeps (vars lhs) (vars rhs) answer - Disjoint left right -> mkDeps (vars left) (vars right) answer - Sized size argx -> - if sizeBeforeArg info - then mkDeps (vars size) (vars argx) answer - else mkDeps (vars argx) (vars size) answer - SumsTo (Left _) sm _ parts -> mkDeps (vars sm) (List.foldl' varsOfSum HashSet.empty parts) answer - SumsTo (Right _) sm _ parts -> mkDeps (List.foldl' varsOfSum HashSet.empty parts) (vars sm) answer - SumSplit _ sm _ parts -> mkDeps (vars sm) (List.foldl' varsOfSum HashSet.empty parts) answer - Component (Right t) cs -> mkDeps (componentVars cs) (vars t) answer - Component (Left t) cs -> mkDeps (vars t) (componentVars cs) answer - Member (Left t) cs -> mkDeps (vars t) (vars cs) answer - Member (Right t) cs -> mkDeps (vars cs) (vars t) answer - NotMember t cs -> mkDeps (vars t) (vars cs) answer - MapMember k v (Left m) -> mkDeps (vars v) (vars k) (mkDeps (vars k) (vars m) answer) - MapMember k v (Right m) -> mkDeps (vars m) (vars k) (mkDeps (vars k) (vars v) answer) - t :<-: ts -> mkDeps (varsOfTarget HashSet.empty ts) (vars t) answer - GenFrom t ts -> mkDeps (varsOfTarget HashSet.empty ts) (vars t) answer - List t cs -> mkDeps (List.foldl' varsOfTerm HashSet.empty cs) (vars t) answer - Maybe t target ps -> mkDeps (vars t) (varsOfPairs HashSet.empty [(target, ps)]) answer - ForEach sz x pat ps -> - mkDeps - (vars sz) - (vars x) - (mkDeps (vars x) (varsOfPats HashSet.empty [(pat, ps)]) answer) - ListWhere sz x tar ps -> - mkDeps - (vars sz) - (vars x) - (mkDeps (vars x) (varsOfPairs HashSet.empty [(tar, ps)]) answer) - Choose sz x xs -> - mkDeps (vars sz) (vars x) (mkDeps (vars x) (varsOfTrips HashSet.empty xs) answer) - SubMap left right -> mkDeps (vars left) (vars right) answer - If t x y -> - ( mkDeps - (varsOfTarget HashSet.empty t) - (varsOfPred HashSet.empty x) - (mkDeps (varsOfTarget HashSet.empty t) (varsOfPred HashSet.empty y) answer) - ) - Before x y -> mkDeps (vars x) (vars y) answer - other -> HashSet.foldl' accum answer (varsOfPred HashSet.empty other) - where - accum ans v = Map.insertWith (HashSet.union) v HashSet.empty ans - -componentVars :: [AnyF era s] -> HashSet (Name era) -componentVars [] = HashSet.empty -componentVars (AnyF (Field n r a l) : cs) = HashSet.insert (Name $ V n r (Yes a l)) $ componentVars cs -componentVars (AnyF (FConst _ _ _ _) : cs) = componentVars cs - --- ========================================================================= --- Create an initial Ordering. Build a Graph, then extract the Ordering - -initialOrder :: forall era. Era era => OrderInfo -> [Pred era] -> Typed [Name era] -initialOrder info cs0 = do - mmm <- flatOrError (stronglyConnComp listDep) - pure $ map getname mmm - where - allvs = List.foldl' varsOfPred HashSet.empty cs0 - noDepMap = HashSet.foldl' (\ans n -> Map.insert n HashSet.empty ans) Map.empty allvs - mapDep = List.foldl' (accumdep info) noDepMap cs0 - listDep = zipWith (\(x, m) n -> (n, x, HashSet.toList m)) (Map.toList mapDep) [0 ..] - (_graph1, nodeFun, _keyf) = graphFromEdges listDep - getname :: Vertex -> Name era - getname x = n where (_node, n, _children) = nodeFun x - flatOrError [] = pure [] - flatOrError (AcyclicSCC x : more) = (x :) <$> flatOrError more - flatOrError (CyclicSCC xs : _) = failT [message, show info, unlines (map ((" " ++) . show) usesNames)] - where - names = map getname xs - namesSet = Set.fromList names - usesNames = - [pr | pr <- cs0, any (`Set.member` namesSet) (varsOfPred HashSet.empty pr)] - theCycle = case names of - [] -> map show names - (x : _) -> map show (names ++ [x]) - message = "Cycle in dependencies: " ++ List.intercalate " <= " theCycle - --- | Construct the DependGraph -compile :: Era era => OrderInfo -> [Pred era] -> Typed (DependGraph era) -compile info cs = do - let simple = rewrite cs - orderedNames <- initialOrder info simple - mkDependGraph (length orderedNames) [] HashSet.empty orderedNames [] (filter notBefore simple) - -showGraph :: (Vertex -> String) -> Graph -> String -showGraph nameof g = unlines (map show (zip names (toList zs))) - where - (lo, hi) = A.bounds g - names = map nameof [lo .. hi] - zs = fmap (map nameof) g diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Scripts.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Scripts.hs deleted file mode 100644 index d2534093aa6..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Scripts.hs +++ /dev/null @@ -1,253 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Constrained.Scripts where - -import Cardano.Ledger.Allegra.Scripts (ValidityInterval (..)) -import qualified Cardano.Ledger.Allegra.Scripts as Time (Timelock (..)) -import Cardano.Ledger.Alonzo.Scripts (AlonzoScript (..)) -import Cardano.Ledger.Alonzo.Tx (IsValid (..)) -import Cardano.Ledger.Core (Era (..), Script, hashScript) -import Cardano.Ledger.Hashes (ScriptHash) -import Cardano.Ledger.Keys ( - KeyHash (..), - KeyRole (..), - coerceKeyRole, - hashKey, - ) -import qualified Cardano.Ledger.Shelley.Scripts as Shelley (MultiSig (..)) -import Cardano.Slotting.Slot (SlotNo (..)) -import Control.Monad (replicateM) -import Data.Foldable (toList) -import qualified Data.List as List -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Maybe.Strict (StrictMaybe (..)) -import qualified Data.Sequence.Strict as Seq -import Data.Set (Set) -import qualified Data.Set as Set -import Numeric.Natural -import Test.Cardano.Ledger.Constrained.Combinators (genFromMap) -import Test.Cardano.Ledger.Core.KeyPair (KeyPair (..)) -import Test.Cardano.Ledger.Generic.Functions ( - alwaysFalse, - alwaysTrue, - primaryLanguage, - ) -import Test.Cardano.Ledger.Generic.GenState -import Test.Cardano.Ledger.Generic.Proof -import Test.QuickCheck - --- ====================================== - -type KeyMap era = Map (KeyHash 'Witness (EraCrypto era)) (KeyPair 'Witness (EraCrypto era)) - -genKeyMap :: Era era => Proof era -> Gen (KeyMap era) -genKeyMap _proof = do - keyPairs <- vectorOf 100 arbitrary - let keyHash keyPair = ((coerceKeyRole . hashKey . vKey) keyPair, keyPair) - pure (Map.fromList (map keyHash keyPairs)) - -genMultiSig :: forall era. Era era => KeyMap era -> Proof era -> Gen (Shelley.MultiSig era) -genMultiSig keymap _proof = do - let genNestedMultiSig :: Natural -> Gen (Shelley.MultiSig era) - genNestedMultiSig k - | k > 0 = - oneof $ - nonRecTimelocks ++ [requireAllOf k, requireAnyOf k, requireMOf k] - | otherwise = oneof nonRecTimelocks - nonRecTimelocks = [requireSignature] - requireSignature = - Shelley.RequireSignature @era . fst <$> genFromMap ["from requiresSignature in genMultiSig"] keymap - requireAllOf k = do - n <- nonNegativeSingleDigitInt - Shelley.RequireAllOf <$> replicateM n (genNestedMultiSig (k - 1)) - requireAnyOf k = do - n <- positiveSingleDigitInt - Shelley.RequireAnyOf <$> replicateM n (genNestedMultiSig (k - 1)) - requireMOf k = do - n <- nonNegativeSingleDigitInt - m <- choose (0, n) - Shelley.RequireMOf m <$> replicateM n (genNestedMultiSig (k - 1)) - genNestedMultiSig (2 :: Natural) - -genTimelock :: - forall era. Era era => KeyMap era -> ValidityInterval -> Proof era -> Gen (Time.Timelock era) -genTimelock keymap (ValidityInterval mBefore mAfter) _proof = do - -- We need to limit how deep these timelocks can go, otherwise this generator will - -- diverge. It also has to stay very shallow because it grows too fast. - let genNestedTimelock k - | k > 0 = - oneof $ - nonRecTimelocks ++ [requireAllOf k, requireAnyOf k, requireMOf k] - | otherwise = oneof nonRecTimelocks - nonRecTimelocks :: [Gen (Time.Timelock era)] - nonRecTimelocks = - [ r - | SJust r <- - [ requireTimeStart <$> mBefore - , requireTimeExpire <$> mAfter - , SJust requireSignature - ] - ] - requireSignature = Time.RequireSignature . fst <$> genFromMap ["from requiresSignature in genTimelock"] keymap - requireAllOf k = do - n <- nonNegativeSingleDigitInt - Time.RequireAllOf . Seq.fromList <$> replicateM n (genNestedTimelock (k - 1)) - requireAnyOf k = do - n <- positiveSingleDigitInt - Time.RequireAnyOf . Seq.fromList <$> replicateM n (genNestedTimelock (k - 1)) - requireMOf k = do - n <- nonNegativeSingleDigitInt - m <- choose (0, n) - Time.RequireMOf m . Seq.fromList <$> replicateM n (genNestedTimelock (k - 1)) - requireTimeStart (SlotNo validFrom) = do - minSlotNo <- choose (minBound, validFrom) - pure $ Time.RequireTimeStart (SlotNo minSlotNo) - requireTimeExpire (SlotNo validTill) = do - maxSlotNo <- choose (validTill, maxBound) - pure $ Time.RequireTimeExpire (SlotNo maxSlotNo) - genNestedTimelock (2 :: Natural) - -genPlutusScript :: - forall era. - PlutusPurposeTag -> - Proof era -> - Gen (Bool, Script era) -genPlutusScript tag proof = do - isValid <- frequency [(5, pure False), (95, pure True)] - -- Plutus scripts alwaysSucceeds needs at least numArgs, while - -- alwaysFails needs exactly numArgs to have the desired affect. - -- For reasons unknown, this number differs from Alonzo to Babbage - -- Perhaps because Babbage is using PlutusV2 scripts? - let numArgs = case (proof, tag) of - (Conway, Spending) -> 2 - (Conway, _) -> 1 - (Babbage, Spending) -> 2 - (Babbage, _) -> 1 - (_, Spending) -> 3 - (_, _) -> 2 - -- While using varying number of arguments for alwaysSucceeds we get - -- varying script hashes, which helps with the fuzziness - let mlanguage = primaryLanguage proof - if isValid - then (,) isValid <$> alwaysTrue proof mlanguage . (+ numArgs) <$> (elements [0, 1, 2, 3 :: Natural]) - else pure $ (isValid, alwaysFalse proof mlanguage numArgs) - -genCoreScript :: - forall era. - Proof era -> - PlutusPurposeTag -> - KeyMap era -> - ValidityInterval -> - Gen (Script era) -genCoreScript proof tag keymap vi = case proof of - Conway -> - frequency - [ (1, TimelockScript <$> genTimelock keymap vi proof) - -- TODO Add this once scripts are working in Conway - -- , (1, snd <$> genPlutusScript tag proof) - ] - Babbage -> - frequency - [ (1, TimelockScript <$> genTimelock keymap vi proof) - , (1, snd <$> genPlutusScript tag proof) - ] - Alonzo -> - frequency - [ (1, TimelockScript <$> genTimelock keymap vi proof) - , (1, snd <$> genPlutusScript tag proof) - ] - Mary -> genTimelock keymap vi proof - Allegra -> genTimelock keymap vi proof - Shelley -> genMultiSig keymap proof - --- | For any given Era, there are only a finite number of Plutus scripts. --- This function computes all of them. There will be two failing scripts --- One for the Spend Tag, and another for all other Tags (Mint, Cert, Rewrd). --- The non-failing Spend scripts have varying number of arguments (0, 1, 2, 3) --- The non-failing (Mint Cert Rewrd) scripts are identical. --- Any Plutus script generated by 'genCoreScript' will be in this Map. -allPlutusScripts :: - Reflect era => Proof era -> Map (ScriptHash (EraCrypto era)) (IsValid, Script era) -allPlutusScripts proof = - Map.fromList $ - map hash (concatMap (plutusByTag proof) (plutusPurposeTags proof)) - where - hash (b, s) = (hashScript s, (b, s)) - --- | There are only 5 plutus scripts that can be used in a Spend context -spendPlutusScripts :: - Reflect era => Proof era -> Map (ScriptHash (EraCrypto era)) (IsValid, Script era) -spendPlutusScripts proof = Map.fromList (map hash (plutusByTag proof Spending)) - where - hash (b, s) = (hashScript s, (b, s)) - -plutusByTag :: Proof era -> PlutusPurposeTag -> [(IsValid, Script era)] -plutusByTag proof tag = trueS ++ falseS - where - numArgs = case (proof, tag) of - (Conway, Spending) -> 2 - (Conway, _) -> 1 - (Babbage, Spending) -> 2 - (Babbage, _) -> 1 - (_, Spending) -> 3 - (_, _) -> 2 - trueS = [(IsValid True, alwaysTrue proof mlanguage (numArgs + n)) | n <- [0, 1, 2, 3 :: Natural]] - falseS = [(IsValid False, alwaysFalse proof mlanguage numArgs)] - mlanguage = primaryLanguage proof - --- =================================================== - --- The function 'witsVKeyNeededFromBody' computes the necesary (but not sufficient) --- key witnesses. Some of the missing ones have to do with MultiSig (and Timelock) scripts --- So we need to compute the smallest set possible for Scripts. A MultiSig (Timelock) scripts --- needs enough key witnesses, so that some subset of the Signature scripts to make it True. - -sufficientMultiSig :: Era era => Shelley.MultiSig era -> Set (KeyHash 'Witness (EraCrypto era)) -sufficientMultiSig x = case x of - Shelley.RequireSignature kh -> Set.singleton kh - Shelley.RequireAllOf xs -> Set.unions (map sufficientMultiSig xs) - Shelley.RequireAnyOf xs -> - case List.sortBy p (filter (not . Set.null) (map sufficientMultiSig (toList xs))) of - [] -> Set.empty - (s : _) -> s - Shelley.RequireMOf n xs -> Set.unions (take n (List.sortBy p (map sufficientMultiSig xs))) - where - p a b = compare (Set.size a) (Set.size b) - -smallest :: [Set x] -> Set x -smallest xs = help Set.empty xs - where - help small1 [] = small1 - help small1 (y : ys) = - if Set.size small1 < Set.size y - then help small1 ys - else help y ys - --- | Return sufficient KeyHash to make the Timelock succeed. Note that some Timelock --- scripts need no KeyHashes to succeed (RequireTimeExpire, RequireTimeStart) -sufficientTimelock :: Era era => Time.Timelock era -> Set (KeyHash 'Witness (EraCrypto era)) -sufficientTimelock x = case x of - Time.RequireSignature kh -> Set.singleton kh - Time.RequireAllOf xs -> Set.unions (fmap sufficientTimelock xs) - Time.RequireAnyOf xs -> - case List.sortBy p (filter (not . Set.null) (map sufficientTimelock (toList xs))) of - [] -> Set.empty - (s : _) -> s - Time.RequireMOf n xs -> Set.unions (take n (List.sortBy p (map sufficientTimelock (toList xs)))) - Time.RequireTimeExpire {} -> Set.empty - Time.RequireTimeStart {} -> Set.empty - where - p a b = compare (Set.size a) (Set.size b) - -sufficientScript :: Proof era -> Script era -> Set (KeyHash 'Witness (EraCrypto era)) -sufficientScript p s = case whichScript p of - ScriptShelleyToShelley -> sufficientMultiSig s - ScriptAllegraToMary -> sufficientTimelock s - ScriptAlonzoToConway -> case s of - TimelockScript tl -> sufficientTimelock tl - PlutusScript _ -> Set.empty diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Shrink.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Shrink.hs deleted file mode 100644 index 26d8a95d448..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Shrink.hs +++ /dev/null @@ -1,77 +0,0 @@ -{-# LANGUAGE GADTs #-} - -module Test.Cardano.Ledger.Constrained.Shrink ( - shrinkEnv, -) where - -import Control.Monad -import Data.Maybe - -import Test.Cardano.Ledger.Constrained.Ast -import Test.Cardano.Ledger.Constrained.Env -import Test.Cardano.Ledger.Constrained.Monad -import Test.Cardano.Ledger.Constrained.Rewrite -import Test.Cardano.Ledger.Constrained.TypeRep - -justOneName :: [([Name era], [Pred era])] -> [(Name era, [Pred era])] -justOneName xs = foldr accum [] xs -- FIXME throw away new style DependGraph elements - where - accum ([x], cs) ans = (x, cs) : ans - accum _ ans = ans - --- | Shrink an environment subject to the constraints in the given dependency graph. --- The strategy is --- * pick a variable --- * shrink its value to something that still satisfies the defining constraints for the variable --- * adjust the values for variables depending on the picked variables to fix constraint --- violations resulting from the changed value --- Note that the DependGraph tells us the dependency order of the variables: a variable only --- depends on the variables before it in the graph, so when shrinking the value of a variable we --- only need to adjust the values of later variables. -shrinkEnv :: DependGraph era -> Env era -> [Env era] -shrinkEnv (DependGraph vs) env = - [ env' - | (before, (x, cs), after) <- splits (justOneName vs) - , env' <- shrinkOneVar env (map fst before) x cs after - ] - where - splits :: [a] -> [([a], a, [a])] - splits [] = [] - splits (x : xs) = ([], x, xs) : [(x : ys, y, zs) | (ys, y, zs) <- splits xs] - -shrinkOneVar :: - Env era -> [Name era] -> Name era -> [Pred era] -> [(Name era, [Pred era])] -> [Env era] -shrinkOneVar originalEnv before x cs after = - [ env' - | val' <- shrinkVar x cs' val - , let fixup env (y, ycs) = do - p <- findName y originalEnv - p' <- fixupVar y (map (substPred $ envToSubst env) ycs) p - pure $ storeName y p' env - , env' <- maybeToList $ foldM fixup (storeName x val' beforeEnv) after - ] - where - beforeEnv = restrictEnv before originalEnv - beforeSubst = envToSubst beforeEnv - cs' = map (substPred beforeSubst) cs - val = case findName x originalEnv of - Just v -> v - Nothing -> error $ "shrinkOneVar: Failed to find: " ++ show x ++ " in env" - -shrinkVar :: Name era -> [Pred era] -> Payload era -> [Payload era] -shrinkVar v cs p = [p' | p' <- shrinkPayload p, validAssignment v p' cs] - -shrinkPayload :: Payload era -> [Payload era] -shrinkPayload (Payload rep t acc) = [Payload rep t' acc | t' <- shrinkRep rep t] - --- | Compute something satisfying the constraints that's as "close" to the original value as --- possible. TODO: more cleverness -fixupVar :: Name era -> [Pred era] -> Payload era -> Maybe (Payload era) -fixupVar v cs p = listToMaybe [p' | p' <- [p | validAssignment v p cs] ++ reverse (shrinkVar v cs p)] - --- | Assumes the variable is the only free variable in the constraints. -validAssignment :: Name era -> Payload era -> [Pred era] -> Bool -validAssignment v p cs = all (runPred_ $ storeName v p emptyEnv) cs - -runPred_ :: Env era -> Pred era -> Bool -runPred_ env p = either (const False) id $ runTyped $ runPred env p diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Size.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Size.hs deleted file mode 100644 index 9af607e7c07..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Size.hs +++ /dev/null @@ -1,145 +0,0 @@ -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE TypeSynonymInstances #-} -{-# LANGUAGE ViewPatterns #-} - -module Test.Cardano.Ledger.Constrained.Size ( - Size (.., SzExact), - seps, - sepsP, - sepn, - runSize, - atLeastDelta, - atMostAny, - genFromSize, - genFromIntRange, - genFromNonNegIntRange, - negateSize, - mergeSize, -) where - -import qualified Data.List as List -import Test.Cardano.Ledger.Constrained.Combinators (errorMess) -import Test.Cardano.Ledger.Constrained.Monad (LiftT (..), Typed (..), failT) -import Test.QuickCheck (Gen, chooseInt) - --- ============================================== - -seps :: [String] -> String -seps xs = List.intercalate " " xs - -sepsP :: [String] -> String -sepsP xs = "(" ++ List.intercalate " " xs ++ ")" - -sepn :: [String] -> String -sepn xs = List.intercalate "\n " xs - --- | Used in tests so things don't get too large -atLeastDelta :: Int -atLeastDelta = 5 - --- | Used in tests so things don't get too large --- If we can't find an era using things of size 10 --- using things of size 100, isn't going to help. -atMostAny :: Int -atMostAny = 10 - --- ======================================================================================= --- The type Size and AddsSpec are defined in their own file because its type must be known --- in many other modules, so to avoid recursive cycles this module depends on only Combinators --- They act like a Spec, so there are Spec like Monoid and Semigroup instances. - -data Size - = SzNever [String] - | SzAny - | SzLeast Int - | SzMost Int - | -- | Size is in the range from @i@ to @j@ inclusive: @SzRng i j = [i .. j]@. Invariant @i <= j@ - SzRng Int Int - deriving (Ord, Eq) - -instance LiftT Size where - liftT (SzNever xs) = failT xs - liftT x = pure x - dropT (Typed (Left s)) = SzNever s - dropT (Typed (Right x)) = x - -sameR :: Size -> Maybe Int -sameR (SzRng x y) = if x == y then Just x else Nothing -sameR _ = Nothing - -pattern SzExact :: Int -> Size -pattern SzExact x <- (sameR -> Just x) - where - SzExact x = (SzRng x x) - -instance Show Size where - show (SzNever _) = "NeverSize" - show SzAny = "AnySize" - show (SzLeast n) = "(AtLeast " ++ show n ++ ")" - show (SzMost n) = "(AtMost " ++ show n ++ ")" - show (SzRng i j) = "(Range " ++ show i ++ " " ++ show j ++ ")" - -negateSize :: Size -> Size -negateSize (SzLeast n) = SzMost (-n) -negateSize (SzMost n) = SzLeast (-n) -negateSize (SzRng i j) = SzRng (-j) (-i) -negateSize x = x - -mergeSize :: Size -> Size -> Size -mergeSize SzAny x = x -mergeSize x SzAny = x -mergeSize (SzNever xs) (SzNever ys) = SzNever (xs ++ ys) -mergeSize _ (SzNever xs) = SzNever xs -mergeSize (SzNever xs) _ = SzNever xs -mergeSize (SzLeast x) (SzLeast y) = SzLeast (max x y) -mergeSize (SzLeast x) (SzMost y) | x <= y = SzRng x y -mergeSize (SzLeast x) (SzRng i j) | x <= i = SzRng i j -mergeSize (SzLeast x) (SzRng i j) | x >= i && x <= j = SzRng x j -mergeSize (SzMost x) (SzMost y) = SzMost (min x y) -mergeSize (SzMost y) (SzLeast x) | x <= y = SzRng x y -mergeSize (SzMost x) (SzRng i j) | x >= j = SzRng i j -mergeSize (SzMost x) (SzRng i j) | x >= i && x <= j = SzRng i x -mergeSize (SzRng i j) (SzLeast x) | x <= i = SzRng i j -mergeSize (SzRng i j) (SzLeast x) | x >= i && x <= j = SzRng x j -mergeSize (SzRng i j) (SzMost x) | x >= j = SzRng i j -mergeSize (SzRng i j) (SzMost x) | x >= i && x <= j = SzRng i x -mergeSize (SzRng i j) (SzRng m n) | x <= y = SzRng x y - where - x = max i m - y = min j n -mergeSize a b = SzNever ["Size specifications " ++ show a ++ " and " ++ show b ++ " are inconsistent."] - -instance Monoid Size where mempty = SzAny - -instance Semigroup Size where - (<>) = mergeSize - -runSize :: Int -> Size -> Bool -runSize _ (SzNever xs) = errorMess "SzNever in runSizeSpec" xs -runSize _ SzAny = True -runSize n (SzLeast m) = n >= m -runSize n (SzMost m) = n <= m -runSize n (SzRng i j) = n >= i && n <= j - --- | Use to generate real sizes, where there are no negative numbers, --- and the smallest possible size is 0. --- Use this only where you know it is NOT SzNever -genFromSize :: Size -> Gen Int -genFromSize (SzNever _) = error "Bad call to (genFromSize(SzNever ..))." -genFromSize SzAny = chooseInt (0, atMostAny) -genFromSize (SzRng i j) = chooseInt (max i 0, max i $ min atMostAny j) -genFromSize (SzLeast i) = chooseInt (max i 0, max i 0 + atLeastDelta) -genFromSize (SzMost i) = chooseInt (0, min atMostAny i) - --- | Similar to genFromSize, but allows negative numbers (unlike size where the smallest Int is 0) -genFromIntRange :: Size -> Gen Int -genFromIntRange (SzNever _) = error "Bad call to (genFromIntRange(SzNever ..))." -genFromIntRange SzAny = chooseInt (-atMostAny, atMostAny) -genFromIntRange (SzRng i j) = chooseInt (i, j) -genFromIntRange (SzLeast i) = chooseInt (i, i + atLeastDelta) -genFromIntRange (SzMost i) = chooseInt (i - atMostAny, i) - -genFromNonNegIntRange :: Size -> Gen Int -genFromNonNegIntRange sz = max 0 <$> genFromIntRange sz diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Solver.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Solver.hs deleted file mode 100644 index c5d09c978fd..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Solver.hs +++ /dev/null @@ -1,1029 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeOperators #-} - -module Test.Cardano.Ledger.Constrained.Solver where - -import Cardano.Ledger.BaseTypes (EpochNo (EpochNo), SlotNo (..)) -import Cardano.Ledger.Coin (Coin (..), DeltaCoin (..)) -import Cardano.Ledger.Core (Era (..), hashScript) -import Cardano.Ledger.Plutus.Data (hashData) -import qualified Data.List as List -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Pulse (foldlM') -import Data.Set (Set) -import qualified Data.Set as Set -import Debug.Trace (trace) -import GHC.Stack (HasCallStack) -import Lens.Micro (Lens', (^.)) -import qualified Lens.Micro as Lens -import Numeric.Natural (Natural) -import Test.Cardano.Ledger.Constrained.Ast -import Test.Cardano.Ledger.Constrained.Classes ( - Adds (..), - AddsSpec (..), - Count (..), - OrdCond (..), - ScriptF (..), - Sizeable (getSize), - varOnLeft, - varOnRight, - varOnRightNeg, - varOnRightSize, - ) -import Test.Cardano.Ledger.Constrained.Combinators (errorMess, genFromMap, itemFromSet, suchThatErr) -import Test.Cardano.Ledger.Constrained.Env -import Test.Cardano.Ledger.Constrained.Monad -import Test.Cardano.Ledger.Constrained.Rewrite ( - DependGraph (..), - OrderInfo, - compileGenWithSubst, - cpeq, - ) -import Test.Cardano.Ledger.Constrained.Size ( - Size (..), - genFromIntRange, - genFromSize, - ) -import Test.Cardano.Ledger.Constrained.Spec ( - ElemSpec (..), - ListSpec (..), - MapSpec (..), - PairSide (..), - PairSpec (PairAny, PairSpec), - RelSpec (..), - RngSpec (..), - SetSpec (..), - genFromListSpec, - genFromMapSpec, - genFromSetSpec, - mapSpec, - relDisjoint, - relEqual, - relSubset, - relSuperset, - setSpec, - ) -import Test.Cardano.Ledger.Constrained.TypeRep ( - Rep (..), - genRep, - genSizedRep, - hasEq, - hasOrd, - synopsis, - testEql, - (:~:) (Refl), - ) -import Test.Cardano.Ledger.Core.Arbitrary () -import Test.Cardano.Ledger.Generic.Proof (Proof (..), Reflect (reify)) -import Test.Cardano.Ledger.Shelley.Serialisation.EraIndepGenerators () -import Test.QuickCheck hiding (Fixed, getSize, total) - --- =================================================================================== --- This is testing file, and sometimes it pays for solver to explain what it is doing --- especially if it fails on some known input. This way the solver can leave a trace --- of what it is doing, and why. - -ifTrace :: Bool -> String -> a -> a -ifTrace traceOn message a = case traceOn of - True -> trace message a - False -> a - --- ================================================== --- Computing if a type has instances - --- ============ Adds ============== - --- | Is there an Adds instance for 't' -hasAdds :: Rep era t -> (s t) -> Typed (HasConstraint Adds (s t)) -hasAdds ExUnitsR x = pure $ With x -hasAdds Word64R x = pure $ With x -hasAdds IntR x = pure $ With x -hasAdds NaturalR x = pure $ With x -hasAdds RationalR x = pure $ With x -hasAdds CoinR x = pure $ With x -hasAdds DeltaCoinR x = pure $ With x -hasAdds r _ = failT [show r ++ " does not have Adds instance."] - -isAddsType :: forall era t. Rep era t -> Bool -isAddsType rep = case hasAdds rep rep of - (Typed (Right (With _))) -> True - (Typed (Left _)) -> False - --- ============= Count ================ - --- | Is there an Count instance for 't' -hasCount :: Rep era t -> s t -> Typed (HasConstraint Count (s t)) -hasCount IntR x = pure $ With x -hasCount (ProtVerR _) x = pure $ With x -hasCount EpochR x = pure $ With x -hasCount SlotNoR x = pure $ With x -hasCount r _ = failT [show r ++ " does not have Count instance."] - -isCountType :: forall era t. Rep era t -> Bool -isCountType rep = case hasCount rep rep of - (Typed (Right (With _))) -> True - (Typed (Left _)) -> False - --- ================================================== --- Extras, simple helper functions - -sameRep :: Rep era i -> Rep era j -> Typed (i :~: j) -sameRep r1 r2 = case testEql r1 r2 of - Just x -> pure x - Nothing -> failT ["Type error in sameRep:\n " ++ show r1 ++ " =/=\n " ++ show r2] - --- | Simplify and return with evidence that 'expr' has type 's' -simplifyAtType :: Era era => Rep era s -> Term era t -> Typed s -simplifyAtType r1 term = do - t <- simplify term - Refl <- sameRep r1 (termRep term) - pure t - -simplifySet :: - (Ord rng, Era era) => Rep era rng -> Term era y -> Typed (HasConstraint Ord (Set rng)) -simplifySet r1 term = do - x <- simplify term - Refl <- sameRep (SetR r1) (termRep term) - pure (With x) - -simplifyList :: Era era => Rep era rng -> Term era y -> Typed (HasConstraint Eq [rng]) -simplifyList r1 term = do - x <- simplify term - Refl <- sameRep (ListR r1) (termRep term) - hasEq r1 x - --- | Is the Sum a variable (of a map). Only SumMap and Project store maps. -isMapVar :: Name era -> Sum era c -> Bool -isMapVar n1 (SumMap (Var v2)) = n1 == Name v2 -isMapVar n1 (ProjMap _ _ (Var v2)) = n1 == Name v2 -isMapVar n1 (SumList (Elems (Var v2))) = n1 == Name v2 -isMapVar _ _ = False - -exactlyOne :: (a -> Bool) -> [a] -> Bool -exactlyOne pp xs = 1 == length (filter pp xs) - --- | Make a generator for a Map type when there is a Projection from the domain of the map. --- This has been superceeded by the RelLens RelSpec -projOnDom :: - forall era a dom rng. - Ord dom => - Set a -> - Lens' dom a -> - Rep era dom -> - Rep era rng -> - Gen (Map dom rng) -projOnDom setA lensDomA repDom repRng = do - ds <- mapM genThenOverwriteA (Set.toList setA) - pairs <- mapM (\d -> do r <- genRep repRng; pure (d, r)) ds - pure (Map.fromList pairs) - where - genThenOverwriteA a = Lens.set lensDomA a <$> genRep repDom - -atLeast :: Adds c => Rep era c -> c -> Gen c -atLeast rep c = add c <$> genRep rep - --- ================================================================ --- Solver for variables of type (Map dom rng) -solveMap :: - forall dom rng era. Era era => V era (Map dom rng) -> Pred era -> Typed (MapSpec era dom rng) -solveMap v1@(V _ r@(MapR dom rng) _) predicate = explain msg $ case predicate of - (Before (Lit _ _) (Var v2)) | Name v1 == Name v2 -> pure mempty - (Sized (Lit SizeR sz) (Var v2)) - | Name v1 == Name v2 -> mapSpec sz RelAny PairAny RngAny - (Sized (Lit SizeR sz) (Dom (Var v2))) - | Name v1 == Name v2 -> mapSpec sz RelAny PairAny RngAny - (Var v2 :=: expr) | Name v1 == Name v2 -> do - m1 <- simplifyAtType r expr - With _ <- hasEq rng rng - mapSpec SzAny (relEqual dom (Map.keysSet m1)) PairAny (RngElem rng (Map.elems m1)) - (expr :=: v2@(Var _)) -> solveMap v1 (v2 :=: expr) - (Elems (Var v2@(V _ r2 _)) :=: expr) | Name v1 == Name v2 -> do - Refl <- sameRep r r2 - l <- simplifyAtType (ListR rng) expr - mapSpec (SzExact (length l)) RelAny PairAny (RngElem rng l) - (expr :=: Elems v2) -> solveMap v1 (Elems v2 :=: expr) - (expr1 :=: Restrict expr2 (Var v2@(V _ (MapR a _) _))) | Name v1 == Name v2 -> do - Refl <- sameRep a dom - val1 <- simplify expr1 - val2 <- simplify expr2 - mapSpec (SzLeast (Map.size val1)) (relSuperset dom val2) PairAny RngAny - (Restrict expr1 expr2 :=: expr3) -> solveMap v1 (expr3 :=: Restrict expr1 expr2) - (ProjS lensbt trep (Dom (Var v2@(V _ (MapR brep _) _))) :=: Lit (SetR drep) x) | Name v1 == Name v2 -> do - Refl <- sameRep dom brep - mapSpec (SzExact (Set.size x)) (RelLens lensbt dom trep (relEqual drep x)) PairAny RngAny - (ProjS lensbt trep (Dom (Var v2@(V _ (MapR brep _) _))) :=: Dom (Lit (MapR drep _) x)) - | Name v1 == Name v2 -> do - Refl <- sameRep dom brep - mapSpec - (SzExact (Map.size x)) - (RelLens lensbt dom trep (relEqual drep (Map.keysSet x))) - PairAny - RngAny - (ProjS lensbt trep (Dom (Var v2@(V _ (MapR brep _) _))) `Subset` Dom (Lit (MapR drep _) x)) - | Name v1 == Name v2 -> do - Refl <- sameRep dom brep - mapSpec - (SzMost (Map.size x)) - (RelLens lensbt dom trep (relSubset drep (Map.keysSet x))) - PairAny - RngAny - (Lit (SetR drep) x) :=: ProjS lensbt trep (Dom (Var v2@(V _ (MapR brep _) _))) | Name v1 == Name v2 -> do - Refl <- sameRep dom brep - mapSpec (SzExact (Set.size x)) (RelLens lensbt dom trep (relEqual drep x)) PairAny RngAny - (expr :=: Rng (Var v2)) - | Name v1 == Name v2 -> do - s <- simplify expr - let SetR a = termRep expr - Refl <- sameRep rng a - mapSpec (SzLeast (Set.size s)) RelAny PairAny (RngRel (relEqual rng s)) - (Rng (Var v2) :=: expr) - | Name v1 == Name v2 -> do - s <- simplify expr - let SetR a = termRep expr - Refl <- sameRep rng a - mapSpec (SzLeast (Set.size s)) RelAny PairAny (RngRel (relEqual rng s)) - (Rng (Var v2) `Subset` expr) - | Name v1 == Name v2 -> do - With _ <- hasOrd rng rng - With n <- simplifySet rng expr - mapSpec SzAny RelAny PairAny (RngRel (relSubset rng n)) - (expr `Subset` Rng (Var v2)) - | Name v1 == Name v2 -> do - With _ <- hasOrd rng rng - With n <- simplifySet rng expr - mapSpec SzAny RelAny PairAny (RngRel (relSuperset rng n)) - (Rng expr `Subset` (Var v2)) - | Name v1 == Name v2 -> do - With _ <- hasOrd rng rng - With n <- simplifySet rng expr - mapSpec SzAny RelAny PairAny (RngRel (relSuperset rng n)) - (expr :=: Dom (Var v2)) - | Name v1 == Name v2 -> do - let SetR a = termRep expr - Refl <- sameRep dom a - mm <- simplify expr - mapSpec (SzExact (Set.size mm)) (relSubset dom mm) PairAny RngAny - (Dom (Var v2) :=: expr) - | Name v1 == Name v2 -> do - let SetR a = termRep expr - Refl <- sameRep dom a - mm <- simplify expr - mapSpec (SzExact (Set.size mm)) (relSubset dom mm) PairAny RngAny - (Dom (Var v2) `Subset` expr) - | Name v1 == Name v2 -> do - With _ <- hasOrd dom dom - With n <- simplifySet dom expr - mapSpec (SzMost (Set.size n)) (relSubset dom n) PairAny RngAny - (expr `Subset` Dom (Var v2)) - | Name v1 == Name v2 -> do - With _ <- hasOrd dom dom - With n <- simplifySet dom expr - mapSpec (SzLeast (Set.size n)) (relSuperset dom n) PairAny RngAny - (SumsTo small expr cond xs) | exactlyOne (isMapVar (Name v1)) xs -> do - t <- simplify expr - rngspec <- solveMapSummands (direct small) t [msg] cond v1 zero xs - mapSpec SzAny RelAny PairAny rngspec - (Random (Var v2)) | Name v1 == Name v2 -> mapSpec SzAny RelAny PairAny RngAny - (Sized (Size sz) (Var v2)) | Name v1 == Name v2 -> mapSpec sz RelAny PairAny RngAny - (Disjoint expr (Dom (Var v2))) | Name v1 == Name v2 -> do - With set <- simplifySet dom expr - mapSpec SzAny (relDisjoint dom set) PairAny RngAny - (Disjoint (Dom (Var v2)) expr) | Name v1 == Name v2 -> do - With set <- simplifySet dom expr - mapSpec SzAny (relDisjoint dom set) PairAny RngAny - (Disjoint expr (Rng (Var v2))) | Name v1 == Name v2 -> do - With _ <- hasOrd rng rng - With set <- simplifySet rng expr - mapSpec SzAny RelAny PairAny (RngRel $ relDisjoint rng set) - (Disjoint (Rng (Var v2)) expr) | Name v1 == Name v2 -> do - With _ <- hasOrd rng rng - With set <- simplifySet rng expr - mapSpec SzAny RelAny PairAny (RngRel $ relDisjoint rng set) - (Member (Left (HashS expr)) (Dom (Var v2@(V _ (MapR a _) _)))) | Name v1 == Name v2 -> do - Refl <- sameRep dom a - ScriptF _ x <- simplifyAtType (ScriptR reify) expr - let hash = hashScript @era x - mapSpec (SzLeast 1) (relSuperset dom (Set.singleton hash)) PairAny RngAny - (Member (Right (HashS expr)) (Dom (Var v2@(V _ (MapR a _) _)))) | Name v1 == Name v2 -> do - Refl <- sameRep dom a - ScriptF _ x <- simplifyAtType (ScriptR reify) expr - let hash = hashScript @era x - mapSpec (SzLeast 1) (relSuperset dom (Set.singleton hash)) PairAny RngAny - (Member (Left (HashD expr)) (Dom (Var v2@(V _ (MapR a _) _)))) | Name v1 == Name v2 -> do - Refl <- sameRep dom a - x <- simplifyAtType DataR expr - let hash = hashData @era x - mapSpec (SzLeast 1) (relSuperset dom (Set.singleton hash)) PairAny RngAny - (Member (Right (HashD expr)) (Dom (Var v2@(V _ (MapR a _) _)))) | Name v1 == Name v2 -> do - Refl <- sameRep dom a - x <- simplifyAtType DataR expr - let hash = hashData @era x - mapSpec (SzLeast 1) (relSuperset dom (Set.singleton hash)) PairAny RngAny - (Member expr (Dom (Var v2@(V _ (MapR a _) _)))) | Name v1 == Name v2 -> do - Refl <- sameRep dom a - x <- simplify (direct expr) - mapSpec (SzLeast 1) (relSuperset dom (Set.singleton x)) PairAny RngAny - (Member expr (Rng (Var v2@(V _ (MapR _ b) _)))) | Name v1 == Name v2 -> do - Refl <- sameRep rng b - x <- simplify (direct expr) - mapSpec (SzLeast 1) RelAny PairAny (RngRel (relSuperset rng (Set.singleton x))) - (NotMember expr (Dom (Var v2@(V _ (MapR a _) _)))) | Name v1 == Name v2 -> do - Refl <- sameRep dom a - x <- simplify expr - mapSpec SzAny (relDisjoint dom (Set.singleton x)) PairAny RngAny - (NotMember expr (Rng (Var v2@(V _ (MapR _ b) _)))) | Name v1 == Name v2 -> do - Refl <- sameRep rng b - x <- simplify expr - mapSpec SzAny RelAny PairAny (RngRel (relDisjoint rng (Set.singleton x))) - (MapMember exprK exprV (Left (Var v2@(V _ (MapR dom2 rng2) _)))) | Name v1 == Name v2 -> do - Refl <- sameRep dom dom2 - Refl <- sameRep rng rng2 - k <- simplify exprK - v <- simplify exprV - mapSpec - (SzLeast 1) - (relSuperset dom (Set.singleton k)) - (PairSpec dom rng VarOnRight (Map.singleton k v)) - (RngRel (relSuperset rng (Set.singleton v))) - (MapMember exprK exprV (Right (Var v2@(V _ (MapR dom2 rng2) _)))) | Name v1 == Name v2 -> do - Refl <- sameRep dom dom2 - Refl <- sameRep rng rng2 - k <- simplify exprK - v <- simplify exprV - mapSpec - (SzLeast 1) - (relSuperset dom (Set.singleton k)) - (PairSpec dom rng VarOnRight (Map.singleton k v)) - (RngRel (relSuperset rng (Set.singleton v))) - (List (Var v2@(V _ _ _)) xs) - | Just Refl <- sameName v1 v2 - , null xs -> - mapSpec (SzExact 0) RelAny PairAny RngAny - (List (Var v2@(V _ _ _)) xs@(x : _)) - | Just Refl <- sameName v1 v2 - , Right (With _) <- runTyped $ hasOrd rng rng - , PairR dl rl <- termRep x -> do - Refl <- sameRep dom dl - Refl <- sameRep rng rl - ys <- mapM (simplifyAtType (PairR dl rl)) xs - let (ds, rs) = unzip ys - mapSpec - (SzExact (length ys)) - (relEqual dl (makeFromList @(Set dom) ds)) - (PairSpec dom rng VarOnRight (Map.fromList ys)) - (RngRel (relEqual rl (makeFromList @(Set rng) rs))) - (SubMap subMapExpr (Var v2@(V _ (MapR dom2 rng2) _))) | Name v1 == Name v2 -> do - Refl <- sameRep dom dom2 - Refl <- sameRep rng rng2 - m <- simplify subMapExpr - mapSpec - (SzLeast (Map.size m)) - (relSuperset dom (Map.keysSet m)) - (PairSpec dom rng VarOnRight m) - (RngRel (relSuperset rng (Set.fromList (Map.elems m)))) - (SubMap (Var v2@(V _ (MapR dom2 rng2) _)) subMapExpr) | Name v1 == Name v2 -> do - Refl <- sameRep dom dom2 - Refl <- sameRep rng rng2 - m <- simplify subMapExpr - mapSpec - (SzMost (Map.size m)) - (relSubset dom (Map.keysSet m)) - (PairSpec dom rng VarOnLeft m) - (RngRel (relSubset rng (Set.fromList (Map.elems m)))) - other -> failT ["Cannot solve map condition: " ++ show other] - where - msg = ("Solving for " ++ show v1 ++ "\nPredicate = " ++ show predicate) - --- | We are solving for a (V era (Map d r)). This must occurr exactly once in the [Sum era c] --- That can only happen in a (RngSum cond c) or a (RngProj cond rep c) constructor of 'Sum' --- Because we don't know if 'c' can have negative values, we do the summation as an Integer -solveMapSummands :: - (Era era, Adds c) => - c -> -- The smallest allowed - c -> -- the evaluated lhs - [String] -> -- path to here - OrdCond -> -- The condtion in the SumsTo - V era (Map dom rng) -> -- The name of the unique Var on the rhs - c -> -- The sum of the other expressions on the rhs - [Sum era c] -> - Typed (RngSpec era rng) -solveMapSummands small lhsC msgs cond (V _ (MapR _ r) _) c [SumList (Elems (Var (V name (MapR _ r1) _)))] = do - Refl <- sameRep r r1 - pure (RngSum small (varOnRightSize msgs lhsC cond c name)) -solveMapSummands small lhsC msgs cond (V _ (MapR _ r) _) c [ProjMap _crep l (Var (V name (MapR _ r1) _))] = do - Refl <- sameRep r r1 - pure (RngProj small r l (varOnRightSize msgs lhsC cond c name)) -solveMapSummands small lhsC msgs cond (V _ (MapR _ r) _) c [SumMap (Var (V name (MapR _ r1) _))] = do - Refl <- sameRep r r1 - pure (RngSum small (varOnRightSize msgs lhsC cond c name)) -solveMapSummands small lhsC msg cond v c (s : ss) - | isMapVar (Name v) s = - solveMapSummands small lhsC msg cond v c (ss ++ [s]) -solveMapSummands small lhsC msg cond v c (s : ss) = do - d <- summandAsInt s - solveMapSummands small lhsC msg cond v (add c $ fromI ["solveMapSummands"] d) ss -solveMapSummands _ _ msg _ v _ [] = failT (("Does not have exactly one summand with variable " ++ show (Name v)) : msg) - -solveMaps :: (Era era, Ord dom) => V era (Map dom rng) -> [Pred era] -> Typed (MapSpec era dom rng) -solveMaps v@(V _ (MapR _ _) _) cs = - foldlM' accum (MapSpec SzAny RelAny PairAny RngAny) cs - where - accum spec cond = do - condspec <- solveMap v cond - liftT (spec <> condspec) - --- =========================================================== --- Solving for variables with type Set - --- | Given a variable: 'v1', with a Set type, compute a SetSpec --- which describes the constraints implied by the Pred 'predicate' -solveSet :: forall era a. Era era => V era (Set a) -> Pred era -> Typed (SetSpec era a) -solveSet v1@(V _ (SetR r) _) predicate = case predicate of - (Sized (Size sz) (Var v2)) | Name v1 == Name v2 -> setSpec sz RelAny - (List (Var v2@(V _ (SetR _) _)) []) | Just Refl <- sameName v1 v2 -> setSpec (SzExact 0) RelAny - (List (Var v2@(V _ (SetR r2) _)) expr@(x : _)) | Just Refl <- sameName v1 v2 -> do - Refl <- sameRep (termRep x) r2 - xs <- mapM (simplifyAtType r2) expr - setSpec (SzMost (length xs)) (relEqual r (makeFromList @(Set a) @a xs)) - (Var v2 :=: expr) | Name v1 == Name v2 -> do - With set <- simplifySet r expr - setSpec (SzExact (Set.size set)) (relEqual r set) - (Var v2@(V _ (SetR r2) _) :<-: target) | (Name v1 == Name v2) -> do - Refl <- sameRep r r2 - x <- simplifyTarget @era @(Set a) target - setSpec (SzExact (Set.size x)) (relEqual r x) - (expr :=: v2@(Var _)) -> solveSet v1 (v2 :=: expr) - (expr1 :=: Restrict (Var v2@(V _ (SetR a) _)) expr2) | Name v1 == Name v2 -> do - Refl <- sameRep a r - val1 <- simplify expr1 - val2 <- simplify expr2 - setSpec (SzExact (Map.size val1)) (relEqual r (Map.keysSet val2)) - (Restrict expr1 expr2 :=: expr3) -> solveSet v1 (expr3 :=: Restrict expr1 expr2) - (Var v2 `Subset` expr) | Name v1 == Name v2 -> do - With set <- simplifySet r expr - setSpec (SzMost (Set.size set)) (relSubset r set) - (expr `Subset` Var v2) | Name v1 == Name v2 -> do - With set <- simplifySet r expr - setSpec (SzLeast (Set.size set)) (relSuperset r set) - (Disjoint (Var v2) expr) | Name v1 == Name v2 -> do - With set <- simplifySet r expr - setSpec SzAny (relDisjoint r set) - (Disjoint expr (Var v2)) -> solveSet v1 (Disjoint (Var v2) expr) - (Member (Left (HashS expr)) (Var v2@(V _ (SetR ScriptHashR) _))) | Name v1 == Name v2 -> do - Refl <- sameRep r ScriptHashR - ScriptF _ x <- simplifyAtType (ScriptR reify) expr - let hash = hashScript @era x - setSpec (SzLeast 1) (relSuperset r (Set.singleton hash)) - (Member (Right (HashS expr)) (Var v2@(V _ (SetR ScriptHashR) _))) | Name v1 == Name v2 -> do - Refl <- sameRep r ScriptHashR - ScriptF _ x <- simplifyAtType (ScriptR reify) expr - let hash = hashScript @era x - setSpec (SzLeast 1) (relSuperset r (Set.singleton hash)) - (Member (Left (HashD expr)) (Var v2@(V _ (SetR DataHashR) _))) | Name v1 == Name v2 -> do - Refl <- sameRep r DataHashR - x <- simplifyAtType DataR expr - let hash = hashData @era x - setSpec (SzLeast 1) (relSuperset r (Set.singleton hash)) - (Member (Right (HashD expr)) (Var v2@(V _ (SetR DataHashR) _))) | Name v1 == Name v2 -> do - Refl <- sameRep r DataHashR - x <- simplifyAtType DataR expr - let hash = hashData @era x - setSpec (SzLeast 1) (relSuperset r (Set.singleton hash)) - (Member expr (Var v2@(V _ (SetR a) _))) | Name v1 == Name v2 -> do - Refl <- sameRep a r - x <- simplify (direct expr) - setSpec (SzLeast 1) (relSuperset r (Set.singleton x)) - (NotMember expr (Var v2@(V _ (SetR a) _))) | Name v1 == Name v2 -> do - Refl <- sameRep a r - x <- simplify expr - setSpec SzAny (relDisjoint r (Set.singleton x)) - (List (Var v2@(V _ (SetR r2) _)) xs) | Name v1 == Name v2 -> do - Refl <- sameRep r r2 - ys <- mapM simplify xs - pure $ SetSpec (SzMost (length ys)) (relEqual r (makeFromList ys)) - (Random (Var v2)) | Name v1 == Name v2 -> setSpec SzAny RelAny - (ProjS lensbt trep (Var v2@(V _ (SetR brep) _)) :=: Dom (Lit (MapR drep _) x)) - | Name v1 == Name v2 -> do - Refl <- sameRep r brep - setSpec (SzExact (Map.size x)) (RelLens lensbt r trep (relEqual drep (Map.keysSet x))) - (ProjS lensbt trep (Var v2@(V _ (SetR brep) _)) `Subset` Dom (Lit (MapR drep _) x)) - | Name v1 == Name v2 -> do - Refl <- sameRep r brep - setSpec (SzMost (Map.size x)) (RelLens lensbt r trep (relSubset drep (Map.keysSet x))) - cond -> failT ["Can't solveSet " ++ show cond ++ " for variable " ++ show v1] - -solveSets :: Era era => V era (Set a) -> [Pred era] -> Typed (SetSpec era a) -solveSets v@(V nm (SetR _) _) cs = - explain ("\nSolving for " ++ nm ++ ", Set Predicates\n" ++ unlines (map ((" " ++) . show) cs)) $ - foldlM' accum mempty cs - where - accum spec cond = do - condspec <- solveSet v cond - liftT (spec <> condspec) - --- ======================================================== --- Solving for variables with an Adds instance - -solveSum :: forall era t. (Adds t, Era era) => V era t -> Pred era -> Typed (AddsSpec t) -solveSum v1@(V nam r _) predx = - case predx of - (Sized expr (Var v2@(V nm _ _))) | Name v1 == Name v2 -> do - sz <- simplify expr - pure $ AddsSpecSize nm sz - (Sized (Var v2) expr) | Name v1 == Name v2 -> do - n <- simplifyAtType r expr - pure $ varOnLeft nam EQL n - (expr :=: (Var v2)) | Name v1 == Name v2 -> do - n <- simplifyAtType r expr - pure $ varOnLeft nam EQL n - ((Var v2) :=: expr) | Name v1 == Name v2 -> do - n <- simplifyAtType r expr - pure $ varOnLeft nam EQL n - (expr :=: Delta (Var v2@(V _ CoinR _))) | Name v1 == Name v2 -> do - DeltaCoin n <- simplify expr - pure $ varOnLeft nam EQL (Coin n) - -- This is an EQL test (x :=: y), so whether the - -- variable is on the Left or the Right does not matter - (Delta (Var v2) :=: expr) -> solveSum v1 (expr :=: (Delta (Var v2))) - (expr :=: Negate (Var v2)) | Name v1 == Name v2 -> do - Refl <- sameRep r DeltaCoinR - DeltaCoin n <- simplifyAtType DeltaCoinR expr - pure $ varOnLeft nam EQL (DeltaCoin (-n)) - (Negate (Var v2) :=: expr) | Name v1 == Name v2 -> do - Refl <- sameRep r DeltaCoinR - DeltaCoin n <- simplifyAtType DeltaCoinR expr - pure $ varOnLeft nam EQL (DeltaCoin (-n)) - (Random (Var v2)) | Name v1 == Name v2 -> pure AddsSpecAny - (SumsTo x (Delta (Lit _ n@(Coin i))) cond xs@(_ : _)) -> do - (rhsTotal, needsNeg) <- intSumWithUniqueV v1 xs - case r of - CoinR -> - if needsNeg - then pure (varOnRightNeg n cond (fromI ["solveSum-SumsTo 1"] rhsTotal) nam) - else - if rhsTotal < 0 - then - pure - (varOnRight ["CASE1", show predx] (add n (Coin $ fromIntegral $ negate rhsTotal)) cond (Coin 0) nam) - else - pure - ( varOnRight - ["CASE2", show predx] - n - cond - (fromI ["solveSum-SumsTo 2", show n, show rhsTotal, show x, show v1] rhsTotal) - nam - ) - DeltaCoinR -> - if needsNeg - then pure (varOnRightNeg (DeltaCoin i) cond (fromI ["solveSum-SumsTo 3"] rhsTotal) nam) - else - pure - (varOnRight ["CASE3", show predx] (DeltaCoin i) cond (fromI ["solveSum-SumsTo 4"] rhsTotal) nam) - other -> failT [show predx, show other ++ " should be either Coin or DeltaCoin"] - (SumsTo _ (Lit r2 n) cond xs@(_ : _)) -> do - (rhsTotal, needsNeg) <- intSumWithUniqueV v1 xs - Refl <- sameRep r r2 - if needsNeg - then pure (varOnRightNeg n cond (fromI ["solveSum-SumsTo 5"] rhsTotal) nam) - else pure (varOnRight ["CASE4", show predx] n cond (fromI ["solveSum-SumsTo 6"] rhsTotal) nam) - (SumsTo _ (Var v2@(V _ r2 _)) cond xs@(_ : _)) | Name v1 == Name v2 -> do - rhsTotal <- summandsAsInt xs - Refl <- sameRep r r2 - pure $ varOnLeft nam cond rhsTotal - (SumsTo _ (Delta (Var v2)) cond xs@(_ : _)) | Name v1 == Name v2 -> do - rhsTotal <- summandsAsInt xs - case r of - CoinR -> pure $ varOnLeft nam cond rhsTotal - DeltaCoinR -> pure $ varOnLeft nam cond rhsTotal - other -> failT [show predx, show other ++ " should be either Coin or DeltaCoin"] - (Var v2@(V nm r2 _) :<-: tar) | Name v1 == Name v2 -> do - Refl <- sameRep r r2 - x <- simplifyTarget tar - pure (AddsSpecSize nm (SzExact (toI x))) - other -> failT ["Can't solveSum " ++ show (Name v1) ++ " = " ++ show other] - -solveSums :: (Adds t, Era era) => V era t -> [Pred era] -> Typed (AddsSpec t) -solveSums v@(V nm r _) cs = - explain - ( "\nGiven (Add " - ++ show r - ++ "), Solving for " - ++ nm - ++ " :: " - ++ show r - ++ ", with Predicates \n" - ++ unlines (map ((" " ++) . show) cs) - ) - $ foldlM' accum mempty cs - where - accum spec cond = do - sumVspec <- solveSum v cond - explain - ("Solving Sum constraint (" ++ show cond ++ ") for variable " ++ show nm) - (liftT (spec <> sumVspec)) - -summandAsInt :: Adds c => Sum era c -> Typed Int -summandAsInt (One (Lit _ x)) = pure (toI x) -summandAsInt (One (Delta (Lit CoinR (Coin n)))) = pure (toI (DeltaCoin n)) -summandAsInt (One (Negate (Lit DeltaCoinR (DeltaCoin n)))) = pure (toI ((DeltaCoin (-n)))) -summandAsInt (ProjOne l CoinR (Lit _ x)) = pure (toI (x ^. l)) -summandAsInt (SumMap (Lit _ m)) = pure (toI (Map.foldl' add zero m)) -summandAsInt (SumList (Lit _ m)) = pure (toI (List.foldl' add zero m)) -summandAsInt (ProjMap _ l (Lit _ m)) = pure (toI (List.foldl' (\ans x -> add ans (x ^. l)) zero m)) -summandAsInt x = failT ["Can't compute summandAsInt: " ++ show x ++ ", to an Int."] - -genSum :: Adds x => Sum era x -> Rep era x -> x -> Subst era -> Gen (Subst era) -genSum (One (Var v)) rep x sub = pure $ extend v (Lit rep x) sub -genSum (One (Delta (Var v))) DeltaCoinR d sub = pure $ extend v (Lit CoinR (fromI [] (toI d))) sub -genSum (One (Negate (Var v))) DeltaCoinR (DeltaCoin n) sub = pure $ extend v (Lit DeltaCoinR (DeltaCoin (-n))) sub -genSum other rep x _ = errorMess ("Can't genSum " ++ show other) [show rep, show x] - -summandsAsInt :: (Adds c, Era era) => [Sum era c] -> Typed Int -summandsAsInt [] = pure 0 -summandsAsInt (x : xs) = do - n <- summandAsInt x - m <- summandsAsInt xs - pure (m + n) - -sameV :: V era s -> V era t -> Typed (s :~: t) -sameV (V _ r1 _) (V _ r2 _) = sameRep r1 r2 - -unique2 :: - Adds c => V era t -> (Int, Bool, [Name era]) -> Sum era c -> Typed (Int, Bool, [Name era]) -unique2 v1 (c, b, ns) (One (Var v2)) = - if Name v1 == Name v2 - then pure (c, b, Name v2 : ns) - else failT ["Unexpected Name in 'unique' " ++ show v2] -unique2 v1 (c, b, ns) (One (Delta (Var v2@(V _ CoinR _)))) = - if Name v1 == Name v2 - then pure (c, b, Name v1 : ns) - else failT ["Unexpected Name in 'unique' " ++ show v2] -unique2 v1 (c, _, ns) (One (Negate (Var v2@(V _nam DeltaCoinR _)))) = - if Name v1 == Name v2 - then pure (c, True, Name v2 : ns) - else failT ["Unexpected Name in 'unique' " ++ show v2] -unique2 v1 (c, b, ns) (ProjOne _ _ (Var v2)) = - if Name v1 == Name v2 - then pure (c, b, Name v2 : ns) - else failT ["Unexpected Name in 'unique' " ++ show v2] -unique2 _ (c1, b, ns) sumexpr = do c2 <- summandAsInt sumexpr; pure (c1 + c2, b, ns) - --- | Check that there is exactly 1 occurence of 'v', --- and return the sum of the other terms in 'ss' --- which should all be constants. -intSumWithUniqueV :: Adds c => V era t -> [Sum era c] -> Typed (Int, Bool) -intSumWithUniqueV v@(V nam _ _) ss = do - (c, b, ns) <- foldlM' (unique2 v) (0, False, []) ss - case ns of - [_] -> pure (c, b) - [] -> failT ["Failed to find the unique name: " ++ nam ++ " in" ++ show ss] - (_ : _ : _) -> failT ["The expected unique name: " ++ nam ++ " occurs more than once in " ++ show ss] - --- =========================================================== --- Solving for variables with type List - --- | Given a variable: 'v1', with a List type, compute a ListSpec --- which describes the constraints implied by the Pred 'predicate' -solveList :: Era era => V era [a] -> Pred era -> Typed (ListSpec era a) -solveList v1@(V _ (ListR r) _) predicate = case predicate of - (Sized (Size sz) (Var v2)) | Name v1 == Name v2 -> pure $ ListSpec sz ElemAny - (Var v2 :=: expr) | Name v1 == Name v2 -> do - With xs <- simplifyList r expr - pure $ ListSpec (SzExact (length xs)) (ElemEqual r xs) - (expr :=: v2@(Var _)) -> solveList v1 (v2 :=: expr) - (Random (Var v2)) | Name v1 == Name v2 -> pure $ ListSpec SzAny ElemAny - (List (Var v2@(V _ r2 _)) xs) | Name v1 == Name v2 -> do - let r3 = tsRep r2 - Refl <- sameRep r r3 - ys <- mapM simplify xs - pure $ ListSpec (SzExact (length ys)) (ElemEqual r ys) - cond -> failT ["Can't solveList " ++ show cond ++ " for variable " ++ show v1] - -solveLists :: Era era => V era [a] -> [Pred era] -> Typed (ListSpec era a) -solveLists v@(V nm (ListR _) _) cs = - explain ("\nSolving for " ++ nm ++ ", List Predicates\n" ++ unlines (map ((" " ++) . show) cs)) $ - foldlM' accum mempty cs - where - accum spec cond = do - condspec <- solveList v cond - liftT (spec <> condspec) - --- =================================================== --- Helper functions for use in 'dispatch' - --- | Combine solving an generating for a variable with a 'Counts' instance -genCount :: Count t => V era t -> [Pred era] -> Typed (Gen t) -genCount v1@(V _ rep _) [Random (Var v2)] | Name v1 == Name v2 = pure (genRep rep) -genCount v1@(V _ r1 _) [Var v2@(V _ r2 _) :=: expr] | Name v1 == Name v2 = do - Refl <- sameRep r1 r2 - val <- simplify expr - pure (pure val) -genCount v1@(V _ r1 _) [expr :=: Var v2@(V _ r2 _)] | Name v1 == Name v2 = do - Refl <- sameRep r1 r2 - val <- simplify expr - pure (pure val) -genCount v1@(V _ r1 _) [CanFollow succExpr (Var v2@(V _ r2 _))] | Name v1 == Name v2 = do - Refl <- sameRep r1 r2 - succVal <- simplify succExpr - pure (genPred succVal) -genCount v1@(V _ r1 _) [CanFollow (Var v2@(V _ r2 _)) predExpr] | Name v1 == Name v2 = do - Refl <- sameRep r1 r2 - predVal <- simplify predExpr - pure (genSucc predVal) -genCount v1@(V _ r1 _) [Sized sz (Var v2@(V _ EpochR _))] | Name v1 == Name v2 = do - Refl <- sameRep r1 EpochR - size <- simplify sz - pure $ do - n <- genFromIntRange size - pure $ EpochNo $ fromIntegral n -genCount v1@(V _ r1 _) [Sized sz (Var v2@(V _ SlotNoR _))] | Name v1 == Name v2 = do - Refl <- sameRep r1 SlotNoR - size <- simplify sz - pure $ do - n <- genFromIntRange size - pure $ SlotNo $ fromIntegral n -genCount v@(V _ r _) cs = failT zs - where - zs = ("Cannot solve: genCount " ++ show v ++ " at type " ++ show r ++ " on Predicates") : map show cs - --- | Used in solving Projections -data Update t where - Update :: s -> Lens' t s -> Update t - -update :: t -> [Update t] -> t -update t [] = t -update t (Update s l : more) = update (Lens.set l s t) more - -anyToUpdate :: Rep era t1 -> (AnyF era t2) -> Typed (Update t1) -anyToUpdate rep1 (AnyF (FConst _ s rep2 l)) = do - Refl <- sameRep rep1 rep2 - pure (Update s l) -anyToUpdate _ x = failT ["component is not FConst: " ++ show x] - -intToNatural :: Int -> Natural -intToNatural n = fromIntegral n - -isIf :: Pred era -> Bool -isIf (If _ _ _) = True -isIf _ = False - --- ================================================================================== --- Given a variable ('v1' :: 't') and [Pred] that constrain it. Produce a (Gen t) - --- | Dispatch on the type of the variable 'v1' being solved. -dispatch :: forall t era. (HasCallStack, Era era) => V era t -> [Pred era] -> Typed (Gen t) -dispatch v1 preds | Just (If tar x y) <- List.find isIf preds = do - b <- simplifyTarget tar - let others = filter (not . isIf) preds - if b then dispatch v1 (x : others) else dispatch v1 (y : others) -dispatch v1@(V nam r1 _) preds = explain ("Solving for variable " ++ nam ++ "\n" ++ unlines (map show preds)) $ case preds of - [Var v2 :=: Lit r2 t] | Name v1 == Name v2 -> do - Refl <- sameRep r1 r2 - pure (pure t) - [Lit r2 t :=: Var v2] | Name v1 == Name v2 -> do - Refl <- sameRep r1 r2 - pure (pure t) - [expr :=: Var v2] | Name v1 == Name v2 -> do - Refl <- sameRep r1 (termRep expr) - t <- simplify expr - pure (pure t) - [Sized (Var v2@(V _ r2 _)) term] | Name v1 == Name v2 -> do - Refl <- sameRep r1 r2 - x <- simplify term - pure $ pure (SzExact (getSize x)) - [Sized sizeterm (Var v2@(V _ r2 _))] | Name v1 == Name v2 -> do - Refl <- sameRep r1 r2 - sz <- simplify sizeterm - pure $ do n <- genFromSize sz; genSizedRep n r2 - -- Here we solve for 'nm' by evaluating term, then use the 'lenz' to select the right component of 'x' - -- then return that value to bind to 'nm' - [cc@(Component (Left term) [AnyF (Field nm t _ lenz)])] | Name v1 == Name (V nm t No) -> explain ("Solving " ++ show cc) $ do - Refl <- sameV v1 (V nm t No) - x <- simplify term - pure (pure (x ^. lenz)) - [cc@(Component (Right (Var v2)) cs)] | Name v1 == Name v2 -> explain ("Solving " ++ show cc) $ do - pairs <- mapM (anyToUpdate r1) cs - pure $ do t <- genRep r1; pure (update t pairs) - [Component (Right (Var v2)) cs, Random (Var v3)] | Name v1 == Name v2 && Name v1 == Name v3 -> do - pairs <- mapM (anyToUpdate r1) cs - pure $ do - t <- genRep r1 - pure (update t pairs) - [Random (Var v3), Component (Right (Var v2)) cs] | Name v1 == Name v2 && Name v1 == Name v3 -> do - pairs <- mapM (anyToUpdate r1) cs - pure $ do - t <- genRep r1 - pure (update t pairs) - [Sized (Var v2) (Lit SizeR x)] | Name v1 == Name v2 -> do - Refl <- sameRep r1 SizeR - pure (pure (SzExact (getSize x))) - [Sized (Lit SizeR sz) (Var v2)] | isAddsType r1 && Name v1 == Name v2 -> do - With _ <- hasAdds r1 r1 - pure $ fromI ["dispatch " ++ show v1 ++ " " ++ show preds] <$> genFromIntRange sz - [GenFrom (Var v2@(V _ r2 _)) target] | Name v1 == Name v2 -> do - Refl <- sameRep r1 r2 - x <- simplifyTarget @era @(Gen t) target - pure x - [Var v2@(V _ r2 _) :<-: target] | Name v1 == Name v2 -> do - Refl <- sameRep r1 r2 - x <- simplifyTarget @era @t target - pure (pure x) - [pred1@(Member (Left (HashS (Var v2@(V _ (ScriptR p) _)))) (Dom expr))] | Name v1 == Name v2 -> do - Refl <- sameRep r1 (ScriptR p) - case termRep expr of - mt@(MapR ScriptHashR (ScriptR _)) -> do - m <- simplifyAtType mt expr - pure (snd <$> genFromMap ["dispatch " ++ show v1 ++ " " ++ show preds] m) - other -> - failT - ["The Pred: " ++ show pred1, "Can only be applied to a map whose range is 'Script'.", show other] - [pred1@(Member (Right (HashS (Var v2@(V _ (ScriptR p) _)))) (Dom expr))] | Name v1 == Name v2 -> do - Refl <- sameRep r1 (ScriptR p) - case termRep expr of - mt@(MapR ScriptHashR (ScriptR _)) -> do - m <- simplifyAtType mt expr - pure (snd <$> genFromMap ["dispatch " ++ show v1 ++ " " ++ show preds] m) - other -> - failT - ["The Pred: " ++ show pred1, "Can only be applied to a map whose range is 'Script'.", show other] - [pred1@(Member (Left (HashD (Var v2@(V _ DataR _)))) (Dom expr))] | Name v1 == Name v2 -> do - Refl <- sameRep r1 DataR - case termRep expr of - mt@(MapR DataHashR DataR) -> do - m <- simplifyAtType mt expr - pure (snd <$> genFromMap ["dispatch " ++ show v1 ++ " " ++ show preds] m) - other -> - failT - ["The Pred: " ++ show pred1, "Can only be applied to a map whose range is 'Data'.", show other] - [pred1@(Member (Right (HashD (Var v2@(V _ DataR _)))) (Dom expr))] | Name v1 == Name v2 -> do - Refl <- sameRep r1 DataR - case termRep expr of - mt@(MapR DataHashR DataR) -> do - m <- simplifyAtType mt expr - pure (snd <$> genFromMap ["dispatch " ++ show v1 ++ " " ++ show preds] m) - other -> - failT - ["The Pred: " ++ show pred1, "Can only be applied to a map whose range is 'Data'.", show other] - [Member (Left (Var v2@(V _ r2 _))) expr] | Name v1 == Name v2 -> do - Refl <- sameRep r1 r2 - set <- simplify expr - let msgs = ("Solving for variable " ++ nam) : map show preds - if Set.null set - then failT (("The set is empty " ++ synopsis (termRep expr) set ++ ", can't find an element.") : msgs) - else pure (fst <$> itemFromSet msgs set) - [Member (Right (Var v2@(V _ r2 _))) expr] | Name v1 == Name v2 -> do - Refl <- sameRep r1 r2 - set <- simplify expr - let msgs = ("Solving for variable " ++ nam) : map show preds - if Set.null set - then failT (("The set is empty " ++ synopsis (termRep expr) set ++ ", can't find an element.") : msgs) - else pure (fst <$> itemFromSet msgs set) - [NotMember (Var v2@(V _ r2 _)) expr] | Name v1 == Name v2 -> do - Refl <- sameRep r1 r2 - set <- simplify expr - let msgs = ("Solving for variable " ++ nam) : map show preds - pure $ suchThatErr msgs (genRep r2) (`Set.notMember` set) - [MapMember (Var v2@(V _ r2 _)) exprVal exprMap] | Name v1 == Name v2 -> do - Refl <- sameRep r1 r2 - m <- simplify (direct exprMap) - v <- simplify exprVal - let m2 = Map.filter (== v) m - let msgs = ("Solving for variable " ++ nam) : map show preds - if Map.null m2 - then failT (("The value: " ++ synopsis (termRep exprVal) v ++ " is not in the range of the map.") : msgs) - else pure (fst <$> itemFromSet msgs (Map.keysSet m2)) - [MapMember exprKey (Var v2@(V _ r2 _)) exprMap] | Name v1 == Name v2 -> do - Refl <- sameRep r1 r2 - m <- simplify (direct exprMap) - k <- simplify exprKey - let msgs = ("Solving for variable " ++ nam) : map show preds - case Map.lookup k m of - Just v -> pure (pure v) - Nothing -> failT (("The key: " ++ synopsis (termRep exprKey) k ++ " is not in the map.") : msgs) - [List (Var v2@(V _ (MaybeR r2) _)) expr] | Name v1 == Name v2 -> do - Refl <- sameRep r1 (MaybeR r2) - xs <- mapM simplify expr - pure $ pure (makeFromList xs) - [Random (Var v2)] | Name v1 == Name v2 -> pure $ genRep r1 - [p1@(Member (Left (Var v2)) y), p2@(NotMember (Var v3) z)] - | Just Refl <- sameName v1 v2 - , Just Refl <- sameName v1 v3 -> do - yval <- simplify y - zval <- simplify z - pure - ( fst - <$> itemFromSet - ["Solving (Member & NotMember), for variable " ++ nam, show p1, show p2] - (Set.difference yval zval) - ) - [nm@(NotMember {}), m@(Member {})] -> dispatch v1 [m, nm] - [x, Random (Var v2)] | Name v1 == Name v2 -> dispatch v1 [x] - [Random (Var v2), x] | Name v1 == Name v2 -> dispatch v1 [x] - cs -> case r1 of - MapR dom rng -> do - spec <- solveMaps v1 cs - pure $ genFromMapSpec nam (map show cs) (genRep dom) (genRep rng) spec - SetR r -> do - spec <- solveSets v1 cs - pure $ genFromSetSpec [] (genRep r) spec - ListR r -> do - spec <- solveLists v1 cs - pure $ genFromListSpec [] (genRep r) spec - _other - | isAddsType r1 -> do - With v2 <- hasAdds r1 v1 - sumv <- solveSums v2 cs - let msgs = ("Solving for variable " ++ nam) : map show preds - pure $ genAdds msgs sumv - | isCountType r1 -> do - With v2 <- hasCount r1 v1 - genCount v2 cs - | otherwise -> - failT - [ "No solution for " - ++ nam - ++ " at type " - ++ show r1 - ++ " for conditions:\n" - ++ show (List.nubBy cpeq cs) - ] - -genOrFail :: - Era era => - Bool -> - Either [String] (Subst era) -> - ([Name era], [Pred era]) -> - Gen (Either [String] (Subst era)) -genOrFail loud (Right subst) ([Name v@(V _ rep _)], conds) = - case runTyped $ - ifTrace - loud - (pad 20 (show (Name v)) ++ " | " ++ showL show "," (map (substPred subst) conds)) - (dispatch v (map (substPred subst) conds)) of - Right gen -> do - t <- gen - ifTrace - loud - (" " ++ synopsis rep t) - (pure (Right (extend v (Lit rep t) subst))) - Left msgs -> pure (Left msgs) -genOrFail _ (Right _) (names, _) = error ("Multiple names not handed yet " ++ show names) -genOrFail _ (Left msgs) _ = pure (Left msgs) - -genOrFailList :: - Era era => - Bool -> - Either [String] (Subst era) -> - [([Name era], [Pred era])] -> - Gen (Either [String] (Subst era)) -genOrFailList loud = foldlM' (genOrFail loud) - -genDependGraph :: Bool -> Proof era -> DependGraph era -> Gen (Either [String] (Subst era)) -genDependGraph loud Shelley (DependGraph pairs) = genOrFailList loud (Right emptySubst) pairs -genDependGraph loud Allegra (DependGraph pairs) = genOrFailList loud (Right emptySubst) pairs -genDependGraph loud Mary (DependGraph pairs) = genOrFailList loud (Right emptySubst) pairs -genDependGraph loud Alonzo (DependGraph pairs) = genOrFailList loud (Right emptySubst) pairs -genDependGraph loud Babbage (DependGraph pairs) = genOrFailList loud (Right emptySubst) pairs -genDependGraph loud Conway (DependGraph pairs) = genOrFailList loud (Right emptySubst) pairs - --- | Solve for one variable, and add its solution to the substitution -solveOneVar :: Era era => Subst era -> ([Name era], [Pred era]) -> Gen (Subst era) -solveOneVar subst ([Name (v@(V _ r _))], ps) = do - !genOneT <- monadTyped (dispatch v (map (substPred subst) ps)) -- Sub solution for previously solved variables - !t <- genOneT - pure (extend v (Lit r t) subst) -solveOneVar subst0 (names, preds) = case (names, map (substPred subst0) preds) of - (ns, [SumSplit small tot EQL suml]) | length ns == length suml -> do - !n <- monadTyped $ simplify tot - !zs <- - partition - small - ["Partition, while solving multiple SumsTo vars.", show ns, show preds] - (length ns) - n - let rep = termRep tot - foldlM' (\ !sub (!sumx, !x) -> genSum (substSum sub sumx) rep x sub) subst0 (zip suml zs) - (ns, ps) -> errorMess "Not yet. multiple vars in solveOneVar" [show ns, show ps] - -toolChainSub :: Era era => Proof era -> OrderInfo -> [Pred era] -> Subst era -> Gen (Subst era) -toolChainSub _proof order cs subst0 = do - (_count, DependGraph pairs) <- compileGenWithSubst order subst0 cs - Subst subst <- foldlM' solveOneVar subst0 pairs - let isTempV k = not (elem '.' k) - pure $ (Subst (Map.filterWithKey (\k _ -> isTempV k) subst)) - -toolChain :: Era era => Proof era -> OrderInfo -> [Pred era] -> Subst era -> Gen (Env era) -toolChain _proof order cs subst0 = do - (_count, DependGraph pairs) <- compileGenWithSubst order subst0 cs - subst <- foldlM' solveOneVar subst0 pairs - monadTyped $ substToEnv subst emptyEnv diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Spec.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Spec.hs deleted file mode 100644 index 472af69203a..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Spec.hs +++ /dev/null @@ -1,2354 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FunctionalDependencies #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# OPTIONS_GHC -Wno-orphans #-} - --- | A 'Spec' is a first order data structure that denotes a random generator --- For example --- (MapSpec era dom rng) denotes Gen(Map dom rng) --- (RngSpec era t) denotes Gen[t] where the [t] has some Summing properties --- (RelSep era t) denotes Gen(Set t) where the set meets some relational properties --- (Size) denotes Gen Int, the size of some Map, Set, List etc. --- (PairSpec era d r) denotes (([d],[r]) -> ([d],[r])) a transformer -module Test.Cardano.Ledger.Constrained.Spec where - -import Cardano.Ledger.Coin (Coin (..), DeltaCoin (..)) -import Cardano.Ledger.Core (Era (..)) -import qualified Data.List as List -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import qualified Data.Maybe as Maybe -import Data.Set (Set) -import qualified Data.Set as Set -import Data.Word (Word64) -import Debug.Trace (trace) -import Lens.Micro hiding (set) -import Test.Cardano.Ledger.Constrained.Ast (Pred (..), Sum (..), Term (..), runPred) -import Test.Cardano.Ledger.Constrained.Classes ( - Adds (..), - AddsSpec (..), - OrdCond (..), - genFromAddsSpec, - genFromNonNegAddsSpec, - lensAdds, - sumAdds, - varOnLeft, - varOnRight, - ) -import Test.Cardano.Ledger.Constrained.Combinators ( - addUntilSize, - errorMess, - fixSet, - mapFromSubset, - setSized, - subMapFromMapWithSize, - subsetFromSet, - suchThatErr, - superSetFromSet, - superSetFromSetWithSize, - ) -import Test.Cardano.Ledger.Constrained.Env (Access (No), V (..), emptyEnv, storeVar) -import Test.Cardano.Ledger.Constrained.Monad -import Test.Cardano.Ledger.Constrained.Size ( - Size (..), - atLeastDelta, - atMostAny, - genFromIntRange, - genFromNonNegIntRange, - genFromSize, - runSize, - seps, - sepsP, - ) -import Test.Cardano.Ledger.Constrained.TypeRep ( - Rep (..), - format, - genRep, - synopsis, - ) -import Test.Cardano.Ledger.Core.Arbitrary () -import Test.Cardano.Ledger.Generic.Proof (BabbageEra, Standard) -import Test.Cardano.Ledger.Shelley.Serialisation.EraIndepGenerators () -import Test.Tasty -import Test.Tasty.QuickCheck hiding (total) - -type TestEra = BabbageEra Standard - -data SomeLens era t where - SomeLens :: Adds c => (Lens' t c) -> SomeLens era t - --- =========================================================== -{- TODO, possible extensions and improvements, so we don't forget -1) Redo Size with: data Size = SzNever [String] | SzRange Int (Maybe Int) Move to own file -2) Add newtype Never = Never [String], then instead of (XXXNever xs) we use (XX (Never xs)) -3) class Specify -4) A better story about fields in constraints. Maybe add FieldSpec type. --} - --- ========================================================= - --- | used when we run tests, and we have to pick some concrete Era -type TT = BabbageEra Standard - --- ============================================================ --- Operators for Size (Defined in TypeRep.hs) - -maxSize :: Size -> Int -maxSize SzAny = atMostAny -maxSize (SzLeast i) = i + atLeastDelta -maxSize (SzMost n) = n -maxSize (SzRng _ j) = j -maxSize (SzNever xs) = errorMess "SzNever in maxSize" xs - -minSize :: Size -> Int -minSize SzAny = 0 -minSize (SzLeast n) = n -minSize (SzMost _) = 0 -minSize (SzRng i _) = i -minSize (SzNever xs) = errorMess "SzNever in minSize" xs - --- | Generate a Size with all positive numbers, This is used where --- we want Size to denote things that must be >= 0. Coin, Word64, Natural -genSize :: Gen Size -genSize = - frequency - [ (1, SzLeast <$> pos) - , (1, SzMost <$> chooseInt (0, atMostAny)) - , (1, (\x -> SzRng x x) <$> pos) - , (1, do lo <- chooseInt (0, atMostAny); hi <- choose (lo + 1, lo + 6); pure (SzRng lo hi)) - ] - --- | Generate a Size denoting an Int range, across both positive --- and negative numbers. DeltaCoin, Int, Rational. This is used --- when we use Size to denote OrdCond on types with negative values -genSizeRange :: Gen Size -genSizeRange = - frequency - [ (1, SzLeast <$> someInt) - , (1, SzMost <$> someInt) - , (1, (\x -> SzRng x x) <$> someInt) - , (1, do lo <- someInt; hi <- choose (lo + 1, lo + atMostAny); pure (SzRng lo hi)) - ] - where - someInt = chooseInt (-atMostAny, atMostAny) - -genBigSize :: Int -> Gen Size -genBigSize n = - frequency - [ (1, SzLeast <$> choose (n + 1, n + 30)) - , -- , (1, SzMost <$> choose (n+60,n+90)) -- Without context, it is impossible to tell how big is OK - (1, (\x -> SzRng x x) <$> choose (n + 1, n + 30)) - , (1, do lo <- choose (n + 1, n + 30); hi <- choose (lo + 1, lo + 30); pure (SzRng lo hi)) - ] - -testSoundSize :: Gen Bool -testSoundSize = do - spec <- genSize - ans <- genFromSize spec - pure $ runSize ans spec - -testNonNegSize :: Gen Bool -testNonNegSize = do - spec <- genSize - ans <- genFromSize spec - pure $ ans >= 0 - -testMergeSize :: Gen Bool -testMergeSize = do - spec1 <- genSize - spec2 <- genSize - case spec1 <> spec2 of - SzNever _xs -> pure True - SzAny -> pure True - spec -> do - ans <- genFromSize spec - pure $ runSize ans spec && runSize ans spec1 && runSize ans spec2 - --- ============== - -genSizeByRep :: forall t era. Adds t => Rep era t -> Gen Size -genSizeByRep IntR = genSizeRange -genSizeByRep DeltaCoinR = genSizeRange -genSizeByRep RationalR = genSizeRange -genSizeByRep Word64R = genSize -genSizeByRep CoinR = genSize -genSizeByRep NaturalR = genSize -genSizeByRep r = error ("genSizeByRep " ++ show r ++ " does not have an Adds instance." ++ seq (zero @t) "") - -genFromSizeByRep :: forall t era. Adds t => Rep era t -> Size -> Gen Int -genFromSizeByRep IntR = genFromIntRange -genFromSizeByRep DeltaCoinR = genFromIntRange -genFromSizeByRep RationalR = genFromIntRange -genFromSizeByRep Word64R = genFromNonNegIntRange -genFromSizeByRep CoinR = genFromNonNegIntRange -genFromSizeByRep NaturalR = genFromNonNegIntRange -genFromSizeByRep r = error ("genFromSizeByRep " ++ show r ++ ", does not have an Adds instance." ++ seq (zero @t) "") - -data SomeAdd era where Some :: Adds t => Rep era t -> SomeAdd era - -instance Show (SomeAdd era) where - show (Some x) = show x - -genAddsRep :: Gen (SomeAdd era) -genAddsRep = elements [Some IntR, Some DeltaCoinR, Some RationalR, Some Word64R, Some CoinR, Some NaturalR] - -testMergeSize2 :: Gen Property -testMergeSize2 = do - Some rep <- genAddsRep - spec1 <- genSizeByRep rep - spec2 <- genSizeByRep rep - case spec1 <> spec2 of - SzNever _xs -> pure $ property True - SzAny -> pure $ property True - spec -> do - ans <- genFromSizeByRep rep spec - pure $ - counterexample - ( "at type=" - ++ show rep - ++ ", spec1=" - ++ show spec1 - ++ ", spec2=" - ++ show spec2 - ++ ", spec1<>spec2=" - ++ show spec - ++ ", ans=" - ++ show ans - ) - (runSize ans spec && runSize ans spec1 && runSize ans spec2) - --- ===================================================== --- RelSpec - -data RelSpec era dom where - RelAny :: - -- | There is no restriction on the set. Denotes the universe. - RelSpec era dom - RelNever :: - -- | Something is inconsistent - [String] -> - RelSpec era dom - -- | Denotes things like: (x == y) equality, (x ⊆ y) subset, ( x ∩ y = ∅) disjointness, (x ⊇ y) superset. - -- Invariants of r@(RepOper must (Just may) cant) - -- 1) must is a subset of may - -- 2) must and may are disjoint from cant - -- 3) (sizeFromRel r) is realizable E.g. (SzRng 10 3) is NOT realizable - RelOper :: - Ord d => - Rep era d -> - -- | Must set - Set d -> - -- | May set, Nothing denotes the universe - Maybe (Set d) -> - -- | Can't set - Set d -> - RelSpec era d - -- RelLens :: Ord b => Lens' dom b -> Rep era dom -> Rep era b -> Set b -> RelSpec era dom - -- Try this - RelLens :: Ord b => Lens' dom b -> Rep era dom -> Rep era b -> (RelSpec era b) -> RelSpec era dom - -relSubset, relSuperset, relDisjoint, relEqual :: Ord t => Rep era t -> Set t -> RelSpec era t -relSubset r set = RelOper r Set.empty (Just set) Set.empty -relSuperset r set = RelOper r set Nothing Set.empty -relDisjoint r set = RelOper r Set.empty Nothing set -relEqual r set = RelOper r set (Just set) Set.empty - -instance Monoid (RelSpec era dom) where - mempty = RelAny - -instance Semigroup (RelSpec era dom) where - (<>) = mergeRelSpec - -instance Show (RelSpec era dom) where - show = showRelSpec - -instance LiftT (RelSpec era a) where - liftT (RelNever xs) = failT xs - liftT x = pure x - dropT (Typed (Left s)) = RelNever s - dropT (Typed (Right x)) = x - -showRelSpec :: RelSpec era dom -> String -showRelSpec RelAny = "RelAny" -showRelSpec (RelOper r x (Just s) y) | Set.null y && x == s = sepsP ["RelEqual", synopsis (SetR r) x] -showRelSpec (RelOper r x (Just s) y) | Set.null x && Set.null y = sepsP ["RelSubset", synopsis (SetR r) s] -showRelSpec (RelOper r x Nothing y) | Set.null y = sepsP ["RelSuperset", synopsis (SetR r) x] -showRelSpec (RelOper r x Nothing y) | Set.null x = sepsP ["RelDisjoint", synopsis (SetR r) y] -showRelSpec (RelOper r x Nothing y) = sepsP ["RelOper", synopsis (SetR r) x, "Univ", synopsis (SetR r) y] -showRelSpec (RelOper r x (Just y) z) = sepsP ["RelOper", synopsis (SetR r) x, synopsis (SetR r) y, synopsis (SetR r) z] -showRelSpec (RelLens _ repd repb relsp) = sepsP ["RelLens", "(Lens' " ++ show repd ++ " " ++ show repb ++ ")", show relsp] -showRelSpec (RelNever _) = "RelNever" - -mergeRelSpec :: RelSpec era d -> RelSpec era d -> RelSpec era d -mergeRelSpec (RelNever xs) (RelNever ys) = RelNever (xs ++ ys) -mergeRelSpec d@(RelNever _) _ = d -mergeRelSpec _ d@(RelNever _) = d -mergeRelSpec RelAny x = x -mergeRelSpec x RelAny = x -mergeRelSpec x y@RelLens {} = mergeRelSpec y x -mergeRelSpec a@RelLens {} b = - RelNever - [ "merging a=" ++ show a ++ "\n b=" ++ show b - , "RelLens is inconsistent with everything, and can't be merged." - ] -mergeRelSpec a@(RelOper r must1 may1 cant1) b@(RelOper _ must2 may2 cant2) = - dropT $ - explain ("merging a=" ++ show a ++ "\n b=" ++ show b) $ - requireAll - [ - ( Set.disjoint must1 cant2 - , - [ "The 'must' set of a(" - ++ synSet r must1 - ++ ") is not disjoint from the 'cant' set of b(" - ++ synSet r cant2 - ] - ) - , - ( Set.disjoint must2 cant1 - , - [ "The 'must' set of b(" - ++ synSet r must2 - ++ ") is not disjoint from the 'cant' set of a(" - ++ synSet r cant1 - ] - ) - ] - (relOper r must may cant) - where - must = Set.union must1 must2 - cant = Set.union cant1 cant2 - may = (`Set.difference` cant) <$> interSectM may1 may2 - --- ================== --- Helper functions for defining mergeRelSpec and --- for testing and maintaining RelSpec invariants - --- | The interpretation of (Just set) is set, and of Nothing is the universe (all possible sets) -interSectM :: Ord a => Maybe (Set a) -> Maybe (Set a) -> Maybe (Set a) -interSectM Nothing Nothing = Nothing -interSectM Nothing x = x -interSectM x Nothing = x -interSectM (Just x) (Just y) = Just (Set.intersection x y) - --- | Test if 's1' is a subset of 's2' --- Recall, if s2==Nothing, then it denotes the universe --- and every set is a subset of the universe. -univSubset :: Ord a => Set a -> Maybe (Set a) -> Bool -univSubset _ Nothing = True -univSubset s1 (Just s2) = Set.isSubsetOf s1 s2 - -okSize :: RelSpec era d -> Bool -okSize (RelOper _ must (Just may) cant) = - Set.size must <= Set.size (Set.difference may cant) -okSize _ = True - --- | Compute the Size that bounds the Size of a set generated from a RelSpec -sizeForRel :: RelSpec era dom -> Size -sizeForRel RelAny = SzAny -sizeForRel (RelNever _) = SzAny -sizeForRel (RelOper _ must Nothing _) = SzLeast (Set.size must) -sizeForRel (RelOper _ must (Just may) _) | Set.null must = SzMost (Set.size may) -sizeForRel (RelOper _ must (Just may) cant) = SzRng (Set.size must) (Set.size (Set.difference may cant)) -sizeForRel (RelLens _ _ _ spec) = sizeForRel spec - -maybeSynopsis :: Rep e t -> Maybe t -> String -maybeSynopsis r (Just x) = format r x -maybeSynopsis _ _ = "" - -synSet :: Ord t => Rep era t -> Set t -> String -synSet r s = synopsis (SetR r) s - --- | Check that RelSpec invariants on the constructor RelOper hold on: spec@(RelOper must may cant) --- 1) must ⊆ may, checked by 'univSubset must may' --- 2) (must ∩ cant = ∅), checked by 'Set.disjoint must cant' --- 3) Set.size must <= Set.size (Set.difference may cant), checked by 'okSize spec' -relOper :: Ord d => Rep era d -> Set d -> Maybe (Set d) -> Set d -> Typed (RelSpec era d) -relOper r must may cant = - let potential = RelOper r must may cant - in explain - ("Checking RelSpec self consistency\n " ++ show (RelOper r must may cant)) - ( requireAll - [ - ( univSubset must may - , - [ "'must' " - ++ format (SetR r) must - ++ " Is not a subset of: 'may' " - ++ maybeSynopsis (SetR r) may - ] - ) - , - ( Set.disjoint must cant - , - [ "'must' " - ++ synopsis (SetR r) must - ++ "Is not disjoint from: 'cant' " - ++ synopsis (SetR r) cant - ] - ) - , - ( maybe True (\may' -> Set.disjoint may' cant) may - , - [ "'may' " - ++ maybe "Nothing" (synopsis $ SetR r) may - ++ "Is not disjoint from: 'cant' " - ++ synopsis (SetR r) cant - ] - ) - , - ( okSize potential - , case potential of - rel@(RelOper _ _ (Just mayJ) _) -> - [ show potential ++ " has unrealizable size " ++ show (sizeForRel rel) - , "size must(" - ++ show (Set.size must) - ++ ") > size(mayJ - cant)(" - ++ show (Set.size (Set.difference mayJ cant)) - ++ ")" - ] - _ -> [] - ) - ] - (pure potential) - ) - --- ============================================== --- The standard operations on RelSpec --- runRelSpec, genFromRelSpec, genRelSpec - --- | test that a set 's' meets the RelSpec -runRelSpec :: Ord t => Set t -> RelSpec era t -> Bool -runRelSpec _ RelAny = True -runRelSpec _ (RelNever xs) = errorMess "RelNever in call to runRelSpec" xs -runRelSpec s (RelOper _ must Nothing cant) = Set.isSubsetOf must s && Set.disjoint s cant -runRelSpec s (RelOper _ must (Just may) cant) = Set.isSubsetOf must s && Set.isSubsetOf s may && Set.disjoint s cant -runRelSpec s (RelLens lensdb _ _ spec) = runRelSpec (Set.map (\x -> x ^. lensdb) s) spec - --- | return a generator that always generates things that meet the RelSpec -genFromRelSpec :: - forall era t. (Era era, Ord t) => [String] -> Gen t -> Int -> RelSpec era t -> Gen (Set t) -genFromRelSpec msgs g n spec = - let msg = "genFromRelSpec " ++ show n ++ " " ++ show spec - in case spec of - RelNever xs -> errorMess "RelNever in genFromSpec" (msgs ++ xs) - RelAny -> setSized (msg : msgs) n g - RelOper _ must (Just may) cant | must == may && Set.null cant -> pure must -- The is the (relEqual r s) case - RelOper _ must Nothing dis -> - -- add things (not in cant) to 'must' until you get to size 'n' - fixSet (msg : msgs) 1000 n (suchThatErr (msg : msgs) g (`Set.notMember` dis)) must - RelOper _ must (Just may) dis -> - let choices = Set.difference may dis - m = Set.size choices - in -- add things (from choices) to 'must' until you get to size 'n' - case compare m n of - EQ -> pure choices - LT -> - errorMess - ( "Size inconsistency. We need " - ++ show n - ++ ". The most we can get from (may-cant) is " - ++ show m - ) - (msg : msgs) - GT -> addUntilSize (msg : msgs) must choices n - RelLens lensDB repD repB specB -> do - -- This case supercedes the "projOnDom" function. - setB <- genFromRelSpec msgs (genRep repB) n specB - -- Generate (Set B), we will use these, to fixup a (Set D) - -- where we overwrite the B field of D - let accum ansG b = - do - ans <- ansG - d <- genRep repD -- Generate the D - pure $ Set.insert (d & lensDB .~ b) ans - -- Overwrite the B field of D, and insert the changed value D{B=b} - Set.foldl' accum (pure Set.empty) setB - --- | Generate a random RelSpec --- We deliberately do NOT generate RelLens, as it is inconsistent with everything. -genRelSpec :: Ord dom => [String] -> Gen dom -> Rep era dom -> Int -> Gen (RelSpec era dom) -genRelSpec _ _ r 0 = pure $ relEqual r Set.empty -genRelSpec msg genD r n = do - smaller <- choose (1, min 2 (n - 1)) - larger <- choose (n + 5, n + 7) - let msgs = - (sepsP ["genRelSpec ", show n, show r, " smaller=", show smaller, ", larger=", show larger]) : msg - frequency - [ - ( 1 - , do - must <- setSized ("must of RelOper Nothing" : msgs) smaller genD - dis <- - someSet - (suchThatErr (("dis of RelOper Nothing " ++ synSet r must) : msgs) genD (`Set.notMember` must)) - monadTyped (relOper r must Nothing dis) - ) - , - ( 2 - , do - must <- setSized ("must of RelOper Just" : msgs) smaller genD - may <- superSetFromSetWithSize ("may of RelOper Just" : msgs) larger genD must - dis <- - setSized - ("dis of RelOper Some" : msgs) - 3 - ( suchThatErr - (("dis of RelOper Some must=" ++ synSet r must ++ " may=" ++ synSet r may) : msgs) - genD - (`Set.notMember` may) - ) - monadTyped (relOper r must (Just may) dis) - ) - , (1, pure RelAny) - ] - --- | Generate another set which is disjoint from the input 'set' --- Note that the empty set is always a solution. --- These sets tend to be rather small (size <= atLeastDelta) -genDisjoint :: Ord a => Set a -> Gen a -> Gen (Set a) -genDisjoint set gen = help atLeastDelta Set.empty - where - help n !answer | n < 0 = pure answer - help n !answer = do - x <- gen - help (n - 1) (if Set.member x set then answer else Set.insert x answer) - --- | Generate another RelSpec, guaranteed to be consistent with the input --- Where (consistent a b) means: (a <> b) =/= (RelNever _) --- See the property test 'genConsistent' -genConsistentRelSpec :: [String] -> Gen dom -> RelSpec era dom -> Gen (RelSpec era dom) -genConsistentRelSpec msg g x = case x of - r@(RelLens {}) -> error ("Can't generate a consistent spec for " ++ show r) - RelOper r must Nothing cant -> - frequency - [ (1, pure RelAny) - , - ( 1 - , do - cant2 <- genDisjoint must g - must2 <- genDisjoint (cant <> cant2) g - pure $ RelOper r must2 Nothing cant2 - ) - , - ( 1 - , do - may2 <- (`Set.difference` cant) <$> superSetFromSet g must - must2 <- subsetFromSet ((show x ++ " gen may") : msgs) must - cant2 <- genDisjoint may2 g - pure $ RelOper r must2 (Just may2) cant2 - ) - ] - RelOper r must (Just may) cant -> - frequency - [ (1, pure RelAny) - , - ( 1 - , do - cant2 <- genDisjoint may g - must2 <- subsetFromSet ((show x ++ " gen must") : msgs) may - pure $ RelOper r must2 Nothing cant2 - ) - , - ( 1 - , do - may2 <- (`Set.difference` cant) <$> superSetFromSet g must - must2 <- subsetFromSet ((show x ++ " gen must") : msgs) must - cant2 <- genDisjoint (may <> may2) g - pure $ RelOper r must2 (Just (may <> may2)) cant2 - ) - ] - RelAny -> pure RelAny - RelNever _ -> error "RelNever in genConsistentRelSpec" - where - msgs = ("genConsistentRelSpec " ++ show x) : msg - --- ================== --- Actual property tests for Relpec - -testConsistentRel :: Gen Property -testConsistentRel = do - n <- chooseInt (3, 10) - s1 <- genRelSpec ["testConsistentRel " ++ show n] (choose (1, 10000)) IntR n - s2 <- genConsistentRelSpec ["testConsistentRel " ++ show n ++ " " ++ show s1] (choose (1, 1000)) s1 - case s1 <> s2 of - RelNever ms -> pure $ counterexample (unlines (["genConsistent fails", show s1, show s2] ++ ms)) False - _ -> pure $ property True - -testSoundRelSpec :: Gen Property -testSoundRelSpec = do - n <- chooseInt (3, 10) - s1 <- genRelSpec ["from testSoundRelSpec " ++ show n] (choose (1, 10000)) Word64R n - ans <- genFromRelSpec @TT ["from testSoundRelSpec " ++ show n] (choose (1, 100000)) n s1 - pure $ counterexample ("spec=" ++ show s1 ++ "\nans=" ++ show ans) (runRelSpec ans s1) - -testMergeRelSpec :: Gen Property -testMergeRelSpec = do - let msg = ["testMergeRelSpec"] - n <- chooseInt (0, 10) - s1 <- genRelSpec (("genRelSpec") : msg) (choose (1, 10000)) Word64R n - s2 <- genConsistentRelSpec (("genConsistentRepSpec " ++ show s1) : msg) (choose (1, 1000)) s1 - case s1 <> s2 of - RelNever _ -> pure (property True) -- This test is an implication (consistent (s1 <> s2) => ...) - s4 -> do - let size = sizeForRel s4 - m <- genFromSize size - ans <- genFromRelSpec @TT ["testMergeRelSpec " ++ show s1 ++ " " ++ show s2] (choose (1, 1000)) m s4 - pure $ - counterexample - ( "s1=" - ++ show s1 - ++ "\ns2=" - ++ show s2 - ++ "\ns1<>s2=" - ++ show s4 - ++ "\nans=" - ++ show ans - ++ "\nrun s1=" - ++ show (runRelSpec ans s1) - ++ "\nrun s2=" - ++ show (runRelSpec ans s2) - ++ "\nrun s4=" - ++ show (runRelSpec ans s4) - ) - (runRelSpec ans s4 && runRelSpec ans s2 && runRelSpec ans s1) - -consistent :: (LiftT a, Semigroup a) => a -> a -> Maybe a -consistent x y = case runTyped (liftT (x <> y)) of - Left _ -> Nothing - Right spec -> Just spec - -manyMergeRelSpec :: Gen (Int, Int, [String]) -manyMergeRelSpec = do - n <- chooseInt (3, 10) - xs <- vectorOf 60 (genRelSpec ["manyMergeRelSpec xs"] (choose (1, 100)) IntR n) - ys <- vectorOf 60 (genRelSpec ["manyMergeRelSpec ys"] (choose (1, 100)) IntR n) - let ok RelAny = False - ok _ = True - check (x, y, m) = do - let size = sizeForRel m - i <- genFromSize size - let wordsX = - [ "s1<>s2 Size = " ++ show (sizeForRel m) - , "s1<>s2 = " ++ show m - , "s2 Size = " ++ show (sizeForRel x) - , "s2 = " ++ show x - , "s1 Size = " ++ show (sizeForRel y) - , "s1 = " ++ show y - , "GenFromRelSpec " ++ show i ++ " n=" ++ show n - ] - z <- genFromRelSpec @TT wordsX (choose (1, 100)) i m - pure (x, runRelSpec z x, y, runRelSpec z y, z, runRelSpec z m, m) - showAns (s1, run1, s2, run2, v, run3, s3) = - unlines - [ "\ns1 = " ++ show s1 - , "s1 Size = " ++ show (sizeForRel s1) - , "s2 = " ++ show s2 - , "s2 Size = " ++ show (sizeForRel s2) - , "s1 <> s2 = " ++ show s3 - , "s1<>s2 Size = " ++ show (sizeForRel s3) - , "v = genFromRelSpec (s1 <> s2) = " ++ show v - , "runRelSpec v s1 = " ++ show run1 - , "runRelSpec v s2 = " ++ show run2 - , "runRelSpec v (s1 <> s2) = " ++ show run3 - ] - pr x@(_, a, _, b, _, c, _) = if not (a && b && c) then Just (showAns x) else Nothing - let trips = [(x, y, m) | x <- xs, y <- ys, ok x && ok y, Just m <- [consistent x y]] - ts <- mapM check trips - pure $ (n, length trips, Maybe.mapMaybe pr ts) - -reportManyMergeRelSpec :: IO () -reportManyMergeRelSpec = do - (n, passed, bad) <- generate manyMergeRelSpec - if null bad - then putStrLn ("passed " ++ show passed ++ " tests. Spec size " ++ show n) - else do mapM_ putStrLn bad; error "TestFails" - --- ========================================================== - --- | Indicates which constraints (if any) the range of a Map must adhere to --- There are 3 cases RngSum, RngProj, and RngRel. They are all mutually inconsistent. --- So while any Map may constrain its range, it can only choose ONE of the cases. -data RngSpec era rng where - -- | The set must have Adds instance and add up to 'rng' - RngSum :: - Adds rng => - rng -> -- the smallest element in the partition (usually 0 or 1) - Size -> -- the sum of all the elements must fall in the range denoted by the Size - RngSpec era rng - RngProj :: - Adds c => - c -> -- the smallest element in the partition (usually 0 or 1) - Rep era x -> - Lens' x c -> - Size -> -- the sum of all the elements must fall in the range denoted by the Size - RngSpec era x - -- | The range has exactly these elements - RngElem :: Eq r => Rep era r -> [r] -> RngSpec era r - -- | The range must hold on the relation specified - RngRel :: Ord x => RelSpec era x -> RngSpec era x - -- | There are no constraints on the range (random generator will do) - RngAny :: RngSpec era rng - -- | Something was inconsistent - RngNever :: [String] -> RngSpec era rng - -instance Show (RngSpec era t) where - show = showRngSpec - -instance Era era => Monoid (RngSpec era rng) where - mempty = RngAny - -instance Era era => Semigroup (RngSpec era rng) where - (<>) = mergeRngSpec - -instance LiftT (RngSpec era a) where - liftT (RngNever xs) = failT xs - liftT x = pure x - dropT (Typed (Left s)) = RngNever s - dropT (Typed (Right x)) = x - -showRngSpec :: RngSpec era t -> String -showRngSpec (RngSum small sz) = sepsP ["RngSum", show small, show sz] -showRngSpec (RngProj small xrep _l sz) = sepsP ["RngProj", show small, show xrep, show sz] -showRngSpec (RngElem r cs) = sepsP ["RngElem", show r, synopsis (ListR r) cs] -showRngSpec (RngRel x) = sepsP ["RngRel", show x] -showRngSpec RngAny = "RngAny" -showRngSpec (RngNever _) = "RngNever" - -mergeRngSpec :: forall r era. RngSpec era r -> RngSpec era r -> RngSpec era r -mergeRngSpec RngAny x = x -mergeRngSpec x RngAny = x -mergeRngSpec (RngRel RelAny) x = x -mergeRngSpec x (RngRel RelAny) = x -mergeRngSpec _ (RngNever xs) = RngNever xs -mergeRngSpec (RngNever xs) _ = RngNever xs -mergeRngSpec a@(RngElem _ xs) b - | runRngSpec xs b = a - | otherwise = RngNever ["The RngSpec's are inconsistent.\n " ++ show a ++ "\n " ++ show b] -mergeRngSpec a b@(RngElem _ xs) - | runRngSpec xs a = b - | otherwise = RngNever ["The RngSpec's are inconsistent.\n " ++ show a ++ "\n " ++ show b] -mergeRngSpec a@(RngSum small1 sz1) b@(RngSum small2 sz2) = - case sz1 <> sz2 of - SzNever xs -> RngNever (["The RngSpec's are inconsistent.\n " ++ show a ++ "\n " ++ show b] ++ xs) - sz3 -> RngSum (smallerOf small1 small2) sz3 -mergeRngSpec a@(RngRel r1) b@(RngRel r2) = - case r1 <> r2 of - RelNever xs -> RngNever (["The RngSpec's are inconsistent.\n " ++ show a ++ "\n " ++ show b] ++ xs) - r3 -> RngRel r3 -mergeRngSpec a b = RngNever ["The RngSpec's are inconsistent.\n " ++ show a ++ "\n " ++ show b] - --- =================================================================== - --- | Compute the Size that is appropriate for a RngSpec -sizeForRng :: forall dom era. RngSpec era dom -> Size -sizeForRng (RngRel x) = sizeForRel x -sizeForRng (RngSum small sz) = - if toI small > 0 && minSize sz > 0 && (minSize sz `div` toI small) > 0 - then SzRng 1 (minSize sz `div` toI small) - else SzLeast 1 -sizeForRng (RngProj small _ _l sz) = - if toI small > 0 && minSize sz > 0 && (minSize sz `div` toI small) > 0 - then SzRng 1 (minSize sz `div` toI small) - else SzLeast 1 -sizeForRng (RngElem _ xs) = SzExact (length xs) -sizeForRng RngAny = SzAny -sizeForRng (RngNever _) = SzAny - --- ------------------------------------------ --- generators for test functions. - --- | Generate an arbitrary size [r] for a particular size 'n' --- The generated list is consistent with the RngSpec given as input. -genFromRngSpec :: forall era r. Era era => [String] -> Gen r -> Int -> RngSpec era r -> Gen [r] -genFromRngSpec msgs genr n x = case x of - (RngNever xs) -> errorMess "RngNever in genFromRngSpec" (xs ++ (msg : msgs)) - RngAny -> vectorOf n genr - (RngSum small sz) -> do - tot <- genFromIntRange sz - partition small (msg : msgs) n (fromI (msg : msgs) tot) - (RngProj small xrep l sz) -> do - tot <- genFromIntRange sz - rs <- partition small (("partition " ++ show tot) : msg : msgs) n (fromI (msg : msgs) tot) - mapM (\r -> do ans <- genRep xrep; pure (ans & l .~ r)) rs - (RngRel relspec) -> Set.toList <$> genFromRelSpec (msg : msgs) genr n relspec - (RngElem _ xs) -> pure xs - where - msg = "genFromRngSpec " ++ show n ++ " " ++ show x - --- | Generate a random RngSpec, appropriate for a given size. In order to accomodate any OrdCond --- (EQL, LTH, LTE, GTE, GTH) in RngSum and RngProj, we make the total a bit larger than 'n' -genRngSpec :: - forall w era. - (Ord w, Adds w) => - Gen w -> - Rep era w -> - -- Rep era c -> - SomeLens era w -> - Int -> - Gen (RngSpec era w) -genRngSpec _ repw _ 0 = pure $ RngRel (relEqual repw Set.empty) -genRngSpec g repw (SomeLens (l :: Lens' w c)) n = do - frequency - [ - ( 3 - , do - smallest <- genSmall @w -- Chooses smallest appropriate for type 'w' - sz <- genBigSize (max 1 (smallest * n)) - pure (RngSum (fromI ["genRngSpec " ++ show n] smallest) sz) - ) - , - ( 2 - , do - smallest <- genSmall @c - sz <- genBigSize (max 1 (smallest * n)) - pure (RngProj (fromI ["genRngSpec " ++ show n] smallest) repw l sz) - ) - , (4, RngRel <$> genRelSpec @w ["genRngSpec "] g repw n) - , (1, pure RngAny) - , (2, RngElem repw <$> vectorOf n g) - ] - -runRngSpec :: [r] -> RngSpec era r -> Bool -runRngSpec _ (RngNever _) = False -runRngSpec _ RngAny = True -runRngSpec ll (RngElem _ xs) = ll == xs -runRngSpec ll (RngSum _ sz) = runSize (toI (sumAdds ll)) sz -runRngSpec ll (RngProj _ _ l sz) = runSize (toI (lensAdds l ll)) sz -runRngSpec ll (RngRel rspec) = runRelSpec (Set.fromList ll) rspec - --- ------------------------------------------ --- generators for RngSpec - -genConsistentRngSpec :: - forall era w c. - (Ord w, Adds w) => - Int -> - Gen w -> - Rep era w -> - Rep era c -> - SomeLens era w -> - Gen (RngSpec era w, RngSpec era w) -genConsistentRngSpec n g repw repc sl@(SomeLens l) = do - x1 <- genRngSpec g repw sl n - x2 <- case x1 of - RngAny -> genRngSpec g repw sl n - RngRel RelAny -> genRngSpec g repw sl n - RngRel x -> RngRel <$> genConsistentRelSpec msgs g x - RngSum sm sz -> do - sz2 <- suchThat genSize (Maybe.isJust . consistent sz) - pure $ RngSum (add sm (fromI msgs 2)) sz2 -- Make the smaller bigger - RngProj _sm _rep _l _sz -> pure RngAny - RngElem _ xs -> - frequency - [ (1, pure $ RngSum (fromI msgs 1) (SzExact (toI (sumAdds xs)))) - , (1, pure $ RngProj (fromI msgs 1) repw l (SzExact (toI (lensAdds l xs)))) - ] - RngNever xs -> errorMess "RngNever in genConsistentRngSpec" xs - pure (x1, x2) - where - msgs = [seps ["genConsistentRngSpec", show repw, show repc]] - -word64CoinL :: Lens' Word64 Coin -word64CoinL = lens (Coin . fromIntegral) (\_w (Coin n) -> fromIntegral n) - --- Tests - -testConsistentRng :: Gen Property -testConsistentRng = do - n <- chooseInt (3, 10) - (s1, s2) <- genConsistentRngSpec @TestEra n (choose (1, 1000)) Word64R CoinR (SomeLens word64CoinL) - case s1 <> s2 of - RngNever ms -> pure $ counterexample (unlines (["genConsistentRng fails", show s1, show s2] ++ ms)) False - _ -> pure $ counterexample "" True - -testSoundRngSpec :: Gen Property -testSoundRngSpec = do - n <- choose (2, 8) - spec <- genRngSpec (choose (1, 1000)) Word64R (SomeLens word64CoinL) n - let msgs = ["testSoundRngSpec " ++ show n ++ " " ++ show spec] - list <- genFromRngSpec @TT msgs (choose (1, 1000)) n spec - pure $ - counterexample - ("spec=" ++ show spec ++ "\nlist=" ++ show list) - (runRngSpec list spec) - -testMergeRngSpec :: Gen Property -testMergeRngSpec = do - (s1, s2) <- genConsistentRngSpec 3 (choose (1, 1000)) Word64R CoinR (SomeLens word64CoinL) - case s1 <> s2 of - RngNever _ -> trace ("inconsistent RngSpec " ++ show s1 ++ " " ++ show s2) (pure (counterexample "" True)) - s3 -> do - let size = sizeForRng s3 - n <- genFromSize size - let wordsX = - [ "s1=" ++ show s1 - , "s2=" ++ show s2 - , "s3=" ++ show s3 - , "size=" ++ show size - , "n=" ++ show n - , "testMergeRngSpec" - ] - list <- genFromRngSpec @TT wordsX (choose (1, 1000)) n s3 - pure $ - counterexample - ( "s1=" - ++ show s1 - ++ "\n s2=" - ++ show s2 - ++ "\n s3=" - ++ show s3 - ++ "\n size=" - ++ show size - ++ "\n n=" - ++ show n - ++ "\n list=" - ++ synopsis (ListR Word64R) list - ++ "\n run1=" - ++ show (runRngSpec list s1) - ++ "\n run2=" - ++ show (runRngSpec list s2) - ) - (runRngSpec list s1 && runRngSpec list s2) - -intDeltaCoinL :: Lens' Int DeltaCoin -intDeltaCoinL = lens (DeltaCoin . fromIntegral) (\_i (DeltaCoin d) -> fromIntegral d) - -manyMergeRngSpec :: Gen (Int, Int, [String]) -manyMergeRngSpec = do - n <- chooseInt (3, 10) - xs <- vectorOf 50 (genRngSpec (choose (1, 100)) IntR (SomeLens intDeltaCoinL) n) - ys <- vectorOf 50 (genRngSpec (choose (1, 100)) IntR (SomeLens intDeltaCoinL) n) - let check (x, y, m) = do - let size = sizeForRng m - i <- genFromSize size - let wordsX = - [ "s1<>s2 Size = " ++ show (sizeForRng m) - , "s1<>s2 = " ++ show m - , "s2 Size = " ++ show (sizeForRng x) - , "s2 = " ++ show x - , "s1 Size = " ++ show (sizeForRng y) - , "s1 = " ++ show y - , "GenFromRngSpec " ++ show i ++ " n=" ++ show n - ] - z <- genFromRngSpec @TT wordsX (choose (1, 100)) i m - pure (x, runRngSpec z x, y, runRngSpec z y, z, runRngSpec z m, m) - showAns (s1, run1, s2, run2, v, run3, s3) = - unlines - [ "\ns1 = " ++ show s1 - , "s1 Size = " ++ show (sizeForRng s1) - , "s2 = " ++ show s2 - , "s2 Size = " ++ show (sizeForRng s2) - , "s1 <> s2 = " ++ show s3 - , "s1<>s2 Size = " ++ show (sizeForRng s3) - , "v = genFromRngSpec (s1 <> s2) = " ++ show v - , "runRngSpec v s1 = " ++ show run1 - , "runRngSpec v s2 = " ++ show run2 - , "runRngSpec v (s1 <> s2) = " ++ show run3 - ] - pr x@(_, a, _, b, _, c, _) = if not (a && b && c) then Just (showAns x) else Nothing - let trips = [(x, y, m) | x <- xs, y <- ys, Just m <- [consistent x y]] - ts <- mapM check trips - pure $ (n, length trips, Maybe.mapMaybe pr ts) - -reportManyMergeRngSpec :: IO () -reportManyMergeRngSpec = do - (n, passed, bad) <- generate manyMergeRngSpec - if null bad - then putStrLn ("passed " ++ show passed ++ " tests. Spec size " ++ show n) - else do mapM_ putStrLn bad; error "TestFails" - --- ===================================================== - --- | Indicates which constraints (if any) a Map must adhere to -data MapSpec era dom rng where - -- | The map may be constrained 3 ways. 1) Its size(Size) 2) its domain(RelSpec) 3) its range(RngSpec) - MapSpec :: - Size -> - RelSpec era dom -> - PairSpec era dom rng -> - RngSpec era rng -> - MapSpec era dom rng - -- | Something is inconsistent - MapNever :: [String] -> MapSpec era dom rng - -instance Ord d => Show (MapSpec w d r) where - show = showMapSpec - -instance (Ord dom, Era era) => Semigroup (MapSpec era dom rng) where - (<>) = mergeMapSpec - -instance (Ord dom, Era era) => Monoid (MapSpec era dom rng) where - mempty = MapSpec SzAny RelAny PairAny RngAny - -instance LiftT (MapSpec era a b) where - liftT (MapNever xs) = failT xs - liftT x = pure x - dropT (Typed (Left s)) = MapNever s - dropT (Typed (Right x)) = x - -showMapSpec :: MapSpec era dom rng -> String -showMapSpec (MapSpec w d p r) = - "(" - ++ unlines - [ "MapSpec" - , " " ++ show w - , " " - ++ " " - ++ showRelSpec d - , " " ++ showPairSpec p - , " " ++ showRngSpec r - ] - ++ ")" -showMapSpec (MapNever _) = "MapNever" - -mergeMapSpec :: Ord dom => MapSpec era dom rng -> MapSpec era dom rng -> MapSpec era dom rng -mergeMapSpec spec1 spec2 = case (spec1, spec2) of - (MapNever s, MapNever t) -> MapNever (s ++ t) - (MapNever _, y) -> y - (x, MapNever _) -> x - (MapSpec SzAny RelAny PairAny RngAny, x) -> x - (x, MapSpec SzAny RelAny PairAny RngAny) -> x - (MapSpec s1 d1 p1 r1, MapSpec s2 d2 p2 r2) -> case mergeRngSpec r1 r2 of - RngNever msgs -> MapNever (["The MapSpec's are inconsistent.", " " ++ show spec1, " " ++ show spec2] ++ msgs) - r -> case mergeRelSpec d1 d2 of - RelNever msgs -> MapNever (["The MapSpec's are inconsistent.", " " ++ show spec1, " " ++ show spec2] ++ msgs) - d -> case mergePairSpec p1 p2 of - PairNever msgs -> MapNever (["The MapSpec's are inconsistent.", " " ++ show spec1, " " ++ show spec2] ++ msgs) - p -> - dropT - (explain ("While merging\n " ++ show spec1 ++ "\n " ++ show spec2) (mapSpec (s1 <> s2) d p r)) - --- | Use 'mapSpec' instead of 'MapSpec' to check size and PairSpec consistency at creation time. --- Runs in the type monad, so errors are caught and reported as Solver-time errors. --- This should avoid many Gen-time errors, as many of those are cause by size --- inconsistencies. We can also use this in mergeMapSpec, to catch size --- inconsistencies there as well as (\ a b c -> dropT (mapSpec a b c)) has the same --- type as MapSpec, but pushes the reports of inconsistencies into MapNever. -mapSpec :: - Ord d => Size -> RelSpec era d -> PairSpec era d r -> RngSpec era r -> Typed (MapSpec era d r) -mapSpec sz1 rel pair rng = - let sz2 = sizeForRel rel - sz3 = sizeForRng rng - sz4 = sizeForPairSpec pair - in case sz1 <> sz2 <> sz3 <> sz4 of - SzNever xs -> - failT - ( [ "Creating " ++ show (MapSpec sz1 rel pair rng) ++ " fails." - , "It has size inconsistencies." - , " " ++ show rel ++ " has size " ++ show sz2 - , " " ++ show pair ++ " has size " ++ show sz4 - , " " ++ show rng ++ " has size " ++ show sz3 - ] - ++ xs - ) - size -> - case (rel, pair, rng) of - (_, PairAny, _) -> pure (MapSpec size rel pair rng) - ((RelOper _ mustd _ _), PairSpec d r VarOnRight m, (RngRel (RelOper _ mustr _ _))) -> - explain - ("Creating " ++ show (MapSpec sz1 rel pair rng) ++ " fails.") - ( requireAll - [ - ( (Map.keysSet m `Set.isSubsetOf` mustd) - , - [ "sizes " ++ show (sz1, sz2, sz3, sz4) - , "It has PairSpec inconsistencies. The domain of" - , " " ++ synopsis (MapR d r) m ++ " is not a subset of the of the mustSet" - , " " ++ synopsis (SetR d) mustd - , " TEST " ++ show (Map.keysSet m `Set.isSubsetOf` mustd) - ] - ) - , - ( (Set.fromList (Map.elems m) `Set.isSubsetOf` mustr) - , - [ "It has PairSpec inconsistencies. The range of" - , " " ++ synopsis (MapR d r) m ++ " is not a subset of the of the mustSet" - , " " ++ synopsis (SetR r) mustr - , " TEST " ++ show (Map.keysSet m `Set.isSubsetOf` mustd) - ] - ) - ] - (pure (MapSpec size rel pair rng)) - ) - ((RelOper _ mustd _ _), PairSpec d r VarOnLeft m, (RngRel (RelOper _ mustr _ _))) -> - explain - ("Creating " ++ show (MapSpec sz1 rel pair rng) ++ " fails.") - ( requireAll - [ - ( (mustd `Set.isSubsetOf` Map.keysSet m) - , - [ "sizes " ++ show (sz1, sz2, sz3, sz4) - , "It has PairSpec inconsistencies. The domain of" - , " " ++ synopsis (MapR d r) m ++ " is not a subset of the of the mustSet" - , " " ++ synopsis (SetR d) mustd - , " TEST " ++ show (Map.keysSet m `Set.isSubsetOf` mustd) - ] - ) - , - ( (mustr `Set.isSubsetOf` Set.fromList (Map.elems m)) - , - [ "It has PairSpec inconsistencies. The range of" - , " " ++ synopsis (MapR d r) m ++ " is not a subset of the of the mustSet" - , " " ++ synopsis (SetR r) mustr - , " TEST " ++ show (Map.keysSet m `Set.isSubsetOf` mustd) - ] - ) - ] - (pure (MapSpec size rel pair rng)) - ) - (_, PairSpec _d _r _side _m, _) -> - failT - [ "Creating " ++ show (MapSpec sz1 rel pair rng) ++ " fails." - , "This spec has a non-PairAny PairSpec" - , " " ++ show pair - , "so to be consistent it must have both a RelOper RelSpec, and a RngRel RelSpec." - , "But it does not:" - , " RelSpec = " ++ show rel - , " RngSpec = " ++ show rng - ] - (_, p, _) | anyPairSpec p -> pure (MapSpec size rel pair rng) - (_, PairNever msgs, _) -> - failT - (("Creating " ++ show (MapSpec sz1 rel pair rng) ++ " fails.") : msgs) - --- ------------------------------------------ --- MapSpec test functions - --- | test a Map against a MapSpec -runMapSpec :: (Ord d, Eq r) => Map d r -> MapSpec era d r -> Bool -runMapSpec _ (MapNever xs) = errorMess "MapNever in runMapSpec" xs -runMapSpec _ (MapSpec SzAny RelAny PairAny RngAny) = True -runMapSpec m (MapSpec sz dom pair rng) = - runSize (Map.size m) sz - && runRelSpec (Map.keysSet m) dom - && runPairSpec m pair - && runRngSpec (Map.elems m) rng - --- | compute a Size that bounds a MapSpec -sizeForMapSpec :: MapSpec era d r -> Size -sizeForMapSpec (MapSpec sz _ _ _) = sz -sizeForMapSpec (MapNever _) = SzAny - --- ---------------------------------------- --- MapSpec generators - --- | Generate a random MapSpec -genMapSpec :: - forall era dom w. - (Ord dom, Era era, Ord w, Adds w) => - Gen dom -> - Rep era dom -> - Rep era w -> - -- Rep era c -> - -- (forall c. Adds c => Lens' w c) -> - SomeLens era w -> - Int -> - Gen (MapSpec era dom w) -genMapSpec genD repd repw l n = frequency [(1, pure mempty), (6, genmapspec)] - where - genmapspec = do - relspec <- genRelSpec ["genMapSpec " ++ show n ++ " " ++ show repd] genD repd n - rngspec <- genRngSpec (genRep @era repw) repw l n - pure (MapSpec (SzExact n) relspec PairAny rngspec) - --- | Generate a (Map d t) from a (MapSpec era d r) --- genFromMapSpec :: --- forall era w dom. --- (Era era, Ord dom) => --- (V era (Map dom w)) -> --- [String] -> --- Gen dom -> --- Gen w -> --- MapSpec era dom w -> --- Gen (Map dom w) --- genFromMapSpec nm _ _ _ (MapNever xs) = errorMess ("genFromMapSpec " ++ (show nm) ++ " (MapNever _) fails") xs --- genFromMapSpec nm msgs genD genR ms@(MapSpec size rel pair rng) = do --- n <- genFromSize size --- dom <- --- genFromRelSpec --- (("GenFromMapSpec " ++ (show nm) ++ "\n " ++ show ms) : msgs) --- genD --- n --- rel --- rangelist <- --- genFromRngSpec --- (("genFromMapSpec " ++ (show nm) ++ "\n " ++ show ms) : msgs) --- genR --- n --- rng --- pure (Map.fromList (zip (Set.toList dom) rangelist)) -genFromMapSpec :: - forall era w dom. - (Era era, Ord dom) => - String -> - [String] -> - Gen dom -> - Gen w -> - MapSpec era dom w -> - Gen (Map dom w) -genFromMapSpec nm msgs _ _ (MapSpec _size _ (PairNever xs) _) = - errorMess ("genFromMapSpec " ++ nm ++ " (PairNever _) fails") (msgs ++ xs) -genFromMapSpec nm _ _ _ (MapNever xs) = - errorMess ("genFromMapSpec " ++ nm ++ " (MapNever _) fails") xs -genFromMapSpec nm msgs genD genR ms@(MapSpec size rel PairAny rng) = do - n <- genFromSize size - dom <- - genFromRelSpec - (("GenFromMapSpec " ++ nm ++ "\n " ++ show ms) : msgs) - genD - n - rel - rangelist <- - genFromRngSpec - (("genFromMapSpec " ++ nm ++ "\n " ++ show ms) : msgs) - genR - n - rng - pure (Map.fromList (zip (Set.toList dom) rangelist)) -genFromMapSpec nm msgs genD genR ms@(MapSpec size rel (PairSpec dr rr varside m) rng) = do - n <- genFromSize size - dom <- - genFromRelSpec - (("GenFromMapSpec " ++ nm ++ "\n " ++ show ms) : msgs) - genD - n - rel - rangelist <- - genFromRngSpec - (("genFromMapSpec " ++ nm ++ "\n " ++ show ms) : msgs) - genR - n - rng - let domainlist = Set.toList dom - extraPairs = pairSpecTransform varside dr rr m (domainlist, rangelist) - case varside of - VarOnRight -> pure (Map.union m (Map.fromList extraPairs)) - VarOnLeft -> subMapFromMapWithSize n (Map.withoutKeys m (Set.fromList (map fst extraPairs))) - --- | Transform the domain and range lists by removing the (domain,range) pairs from 'm'. --- for each pair (domain,range) remove domain from 'dlist' and range from 'rlist', --- then zip together the two remaining lists. The pairs in this list are 'extra' --- pairs which might me useful. --- Strategy depends on which term to (SubMap t1 t2) are variables. --- (SubMap xvar yexp) Break value of yexp into (x + extra), then answer: xvar = x --- (SubMap xexp yvar) Break value of xexp into (x + extra), then answer: yvar == x + extra -pairSpecTransform :: - (Ord d, Eq r) => PairSide -> Rep era d -> Rep era r -> Map d r -> ([d], [r]) -> [(d, r)] -pairSpecTransform side drep rrep m (dlist, rlist) = zip doms rngs - where - accum (ds, rs) k v = (remove side "domain" drep k ds, remove side "range" rrep v rs) - (doms, rngs) = Map.foldlWithKey' accum (dlist, rlist) m - -remove :: Eq a => PairSide -> String -> Rep era a -> a -> [a] -> [a] -remove side part rep x (y : ys) = - if x == y then ys else y : (remove side part rep x ys) -remove VarOnLeft _part _rep _x [] = [] -remove VarOnRight part rep x [] = - errorMess - ( "In SubMap, when the variable is on the right (i.e. (SubMap map var) ) the " - ++ part - ++ "of map should contain " - ++ synopsis rep x - ++ " which appears in the " - ++ part - ++ " of the PairSpec." - ++ " But it does not." - ) - ["genFromMapSpec"] - -genMapSpecIsSound :: Gen Property -genMapSpecIsSound = do - n <- chooseInt (1, 15) - spec <- genMapSpec (chooseInt (1, 10000)) IntR Word64R (SomeLens word64CoinL) n - mp <- genFromMapSpec @TT "mapSpecIsSound" [] (choose (1, 10000)) (choose (1, 10000)) spec - pure $ counterexample ("spec = " ++ show spec ++ "\nmp = " ++ show mp) (runMapSpec mp spec) - -manyMergeMapSpec :: Gen (Int, Int, [String]) -manyMergeMapSpec = do - n <- chooseInt (1, 10) - xs <- vectorOf 50 (genMapSpec (choose (1, 100)) IntR Word64R (SomeLens word64CoinL) n) - ys <- vectorOf 50 (genMapSpec (choose (1, 100)) IntR Word64R (SomeLens word64CoinL) n) - let check (x, y, m) = do - let msize = sizeForMapSpec m - i <- genFromSize msize - let wordsX = - [ "s1<>s2 Size = " ++ show msize - , "s1<>s2 = " ++ show m - , "s2 Size = " ++ show (sizeForMapSpec x) - , "s2 = " ++ show x - , "s1 Size = " ++ show (sizeForMapSpec y) - , "s1 = " ++ show y - , "GenFromMapSpec " ++ show i ++ " n=" ++ show n - ] - z <- genFromMapSpec @TT "manyMergeMap" wordsX (choose (1, 100)) (choose (1, 100)) m - pure (x, runMapSpec z x, y, runMapSpec z y, z, runMapSpec z m, m) - showAns (s1, run1, s2, run2, v, run3, s3) = - unlines - [ "\ns1 = " ++ show s1 - , "s1 Size = " ++ show (sizeForMapSpec s1) - , "s2 = " ++ show s2 - , "s2 Size = " ++ show (sizeForMapSpec s2) - , "s1 <> s2 = " ++ show s3 - , "s1<>s2 Size = " ++ show (sizeForMapSpec s3) - , "v = genFromMapSpec (s1 <> s2) = " ++ show v - , "runMapSpec v s1 = " ++ show run1 - , "runMapSpec v s2 = " ++ show run2 - , "runMapSpec v (s1 <> s2) = " ++ show run3 - ] - pr x@(_, a, _, b, _, c, _) = if not (a && b && c) then Just (showAns x) else Nothing - let trips = [(x, y, m) | x <- xs, y <- ys, Just m <- [consistent x y]] - ts <- mapM check trips - pure $ (n, length trips, Maybe.catMaybes (map pr ts)) - -reportManyMergeMapSpec :: IO () -reportManyMergeMapSpec = do - (n, passed, bad) <- generate manyMergeMapSpec - if null bad - then putStrLn ("passed " ++ show passed ++ " tests. Spec size " ++ show n) - else do mapM_ putStrLn bad; error "TestFails" - --- =================================================================================== - -data SetSpec era a where - SetSpec :: Ord a => Size -> RelSpec era a -> SetSpec era a - SetNever :: [String] -> SetSpec era a - -instance Show (SetSpec era a) where show = showSetSpec - -instance Ord a => Semigroup (SetSpec era a) where - (<>) = mergeSetSpec - -instance Ord a => Monoid (SetSpec era a) where - mempty = SetSpec SzAny RelAny - -instance LiftT (SetSpec era t) where - liftT (SetNever xs) = failT xs - liftT x = pure x - dropT (Typed (Left s)) = SetNever s - dropT (Typed (Right x)) = x - -showSetSpec :: SetSpec era a -> String -showSetSpec (SetSpec s r) = sepsP ["SetSpec", show s, show r] -showSetSpec (SetNever _) = "SetNever" - -mergeSetSpec :: Ord a => SetSpec era a -> SetSpec era a -> SetSpec era a -mergeSetSpec s1 s2 = case (s1, s2) of - (SetNever xs, SetNever ys) -> SetNever (xs ++ ys) - (SetNever xs, _) -> SetNever xs - (_, SetNever ys) -> SetNever ys - (SetSpec SzAny RelAny, x) -> x - (x, SetSpec SzAny RelAny) -> x - (SetSpec s11 r1, SetSpec s22 r2) -> case r1 <> r2 of - RelNever xs -> SetNever (["The SetSpec's are inconsistent.", " " ++ show s1, " " ++ show s2] ++ xs) - r3 -> dropT (explain ("While merging\n " ++ show s1 ++ "\n " ++ show s2) $ setSpec (s11 <> s22) r3) - --- | Test the size consistency while building a SetSpec -setSpec :: Ord t => Size -> RelSpec era t -> Typed (SetSpec era t) -setSpec sz1 rel = case (sz1 <> sz2) of - SzNever xs -> - failT - ( [ "Creating " ++ show (SetSpec sz1 rel) ++ " fails." - , "It has size inconsistencies." - , " " ++ show rel ++ " has size " ++ show sz2 - , " " ++ "the expected size is " ++ show sz1 - ] - ++ xs - ) - size -> pure (SetSpec size rel) - where - sz2 = sizeForRel rel - -runSetSpec :: Set a -> SetSpec era a -> Bool -runSetSpec s (SetSpec sz rel) = runSize (Set.size s) sz && runRelSpec s rel -runSetSpec _ (SetNever msgs) = errorMess "runSetSpec applied to SetNever" msgs - -sizeForSetSpec :: SetSpec era a -> Size -sizeForSetSpec (SetSpec sz _) = sz -sizeForSetSpec (SetNever _) = SzAny - -genSetSpec :: Ord s => [String] -> Gen s -> Rep era s -> Int -> Gen (SetSpec era s) -genSetSpec msgs genS repS size = do - r <- genRelSpec ("from genSetSpec" : msgs) genS repS size - pure (SetSpec (SzExact size) r) - -genFromSetSpec :: forall era a. Era era => [String] -> Gen a -> SetSpec era a -> Gen (Set a) -genFromSetSpec msgs genS (SetSpec sz rp) = do - n <- genFromSize sz - genFromRelSpec ("genFromSetSpec" : msgs) genS n rp -genFromSetSpec _ _ (SetNever msgs) = errorMess "genFromSetSpec applied to SetNever" msgs - -genSetSpecIsSound :: Gen Property -genSetSpecIsSound = do - size <- chooseInt (0, 10) - spec <- genSetSpec msgs (chooseInt (1, 1000)) IntR size - mp <- genFromSetSpec @TT msgs (choose (1, 10000)) spec - pure $ counterexample ("spec = " ++ show spec ++ "\nmp = " ++ show mp) (runSetSpec mp spec) - where - msgs = ["genSetSpecIsSound"] - -manyMergeSetSpec :: Gen (Int, Int, [String]) -manyMergeSetSpec = do - n <- chooseInt (1, 10) - xs <- vectorOf 50 (genSetSpec [] (choose (1, 100)) IntR n) - ys <- vectorOf 50 (genSetSpec [] (choose (1, 100)) IntR n) - let check (x, y, m) = do - let msize = sizeForSetSpec m - i <- genFromSize msize - let wordsX = - [ "s1<>s2 Size = " ++ show msize - , "s1<>s2 = " ++ show m - , "s2 Size = " ++ show (sizeForSetSpec x) - , "s2 = " ++ show x - , "s1 Size = " ++ show (sizeForSetSpec y) - , "s1 = " ++ show y - , "GenFromSetSpec " ++ show i ++ " n=" ++ show n - ] - z <- genFromSetSpec @TT wordsX (choose (1, 100)) m - pure (x, runSetSpec z x, y, runSetSpec z y, z, runSetSpec z m, m) - showAns (s1, run1, s2, run2, v, run3, s3) = - unlines - [ "\ns1 = " ++ show s1 - , "s1 Size = " ++ show (sizeForSetSpec s1) - , "s2 = " ++ show s2 - , "s2 Size = " ++ show (sizeForSetSpec s2) - , "s1 <> s2 = " ++ show s3 - , "s1<>s2 Size = " ++ show (sizeForSetSpec s3) - , "v = genFromSetSpec (s1 <> s2) = " ++ show v - , "runSetSpec v s1 = " ++ show run1 - , "runSetSpec v s2 = " ++ show run2 - , "runSetSpec v (s1 <> s2) = " ++ show run3 - ] - pr x@(_, a, _, b, _, c, _) = if not (a && b && c) then Just (showAns x) else Nothing - let trips = [(x, y, m) | x <- xs, y <- ys, Just m <- [consistent x y]] - ts <- mapM check trips - pure $ (n, length trips, Maybe.catMaybes (map pr ts)) - -reportManyMergeSetSpec :: IO () -reportManyMergeSetSpec = do - (n, passed, bad) <- generate manyMergeSetSpec - if null bad - then putStrLn ("passed " ++ show passed ++ " tests. Spec size " ++ show n) - else do mapM_ putStrLn bad; error "TestFails" - --- ======================================================= --- Specifications for Lists - -data ElemSpec era t where - -- | The set must add up to 'tot', which is any number in the scope of Size - ElemSum :: - Adds t => - t -> -- The smallest allowed - Size -> - ElemSpec era t - -- | The range must sum upto 'c', which is any number in the scope of Size, - -- through the projection witnessed by the (Sums t c) class - ElemProj :: - Adds c => - c -> -- The smallest allowed - Rep era x -> - Lens' x c -> - Size -> - ElemSpec era x - -- | The range has exactly these elements - ElemEqual :: Eq t => Rep era t -> [t] -> ElemSpec era t - -- In the future we will want to add somethig like: - -- ElemOrd :: Ord t => Rep era t -> t -> OrdCond -> t -> ElemSpec era tS - ElemNever :: [String] -> ElemSpec era t - ElemAny :: ElemSpec era t - -instance Show (ElemSpec era a) where - show = showElemSpec - -instance Era era => Semigroup (ElemSpec era a) where - (<>) = mergeElemSpec - -instance Era era => Monoid (ElemSpec era a) where - mempty = ElemAny - -instance LiftT (ElemSpec era t) where - liftT (ElemNever xs) = failT xs - liftT x = pure x - dropT (Typed (Left s)) = ElemNever s - dropT (Typed (Right x)) = x - -showElemSpec :: ElemSpec era a -> String -showElemSpec (ElemSum small sz) = sepsP ["ElemSum", show small, show sz] -showElemSpec (ElemProj small r _l sz) = sepsP ["ElemProj", show small, show r, show sz] -showElemSpec (ElemEqual r xs) = sepsP ["ElemEqual", show r, synopsis (ListR r) xs] -showElemSpec (ElemNever _) = "ElemNever" -showElemSpec ElemAny = "ElemAny" - -mergeElemSpec :: Era era => ElemSpec era a -> ElemSpec era a -> ElemSpec era a -mergeElemSpec (ElemNever xs) (ElemNever ys) = ElemNever (xs ++ ys) -mergeElemSpec (ElemNever xs) _ = ElemNever xs -mergeElemSpec _ (ElemNever ys) = ElemNever ys -mergeElemSpec ElemAny x = x -mergeElemSpec x ElemAny = x -mergeElemSpec a@(ElemEqual r xs) b@(ElemEqual _ ys) = - if xs == ys - then ElemEqual r xs - else - ElemNever - [ "The ElemSpec's are inconsistent." - , " " ++ show a - , " " ++ show b - , synopsis (ListR r) xs ++ " =/= " ++ synopsis (ListR r) ys - ] -mergeElemSpec a@(ElemEqual _ xs) b@(ElemSum _ sz) = - let computed = sumAdds xs - in if runSize (toI computed) sz - then a - else - ElemNever - [ "The ElemSpec's are inconsistent." - , " " ++ show a - , " " ++ show b - , "The computed sum(" - ++ show computed - ++ ") is not in the allowed range of the Size(" - ++ show sz - ++ ")" - ] -mergeElemSpec b@(ElemSum _ _) a@(ElemEqual _ _) = mergeElemSpec a b -mergeElemSpec a@(ElemSum sm1 sz1) b@(ElemSum sm2 sz2) = - case sz1 <> sz2 of - SzNever xs -> ElemNever (sepsP ["The ElemSpec's are inconsistent.", show a, show b] : xs) - sz3 -> ElemSum (smallerOf sm1 sm2) sz3 -{- -mergeElemSpec a@(ElemProj sm1 r1 _l1 sz1) b@(ElemProj sm2 r2 _l2 sz2) = -- TODO FIXME ElemProj cannot be merged - case testEql r1 r2 of - Just Refl -> - case sz1 <> sz2 of - SzNever xs -> ElemNever ((sepsP ["The ElemSpec's are inconsistent.", show a, show b]) : xs) - sz3 -> ElemProj (smallerOf sm1 sm2) r1 sz3 - Nothing -> ElemNever ["The ElemSpec's are inconsistent.", " " ++ show a, " " ++ show b] --} -mergeElemSpec a b = ElemNever ["The ElemSpec's are inconsistent.", " " ++ show a, " " ++ show b] - -sizeForElemSpec :: forall a era. ElemSpec era a -> Size -sizeForElemSpec (ElemNever _) = SzAny -sizeForElemSpec ElemAny = SzAny -sizeForElemSpec (ElemEqual _ x) = SzExact (length x) -sizeForElemSpec (ElemSum smallest sz) = - if toI smallest > 0 - then SzRng 1 (minSize sz `div` toI smallest) - else SzLeast 1 -sizeForElemSpec (ElemProj smallest (_r :: (Rep era c)) _l sz) = - if toI smallest > 0 - then SzRng 1 (minSize sz `div` toI smallest) - else SzLeast 1 - -runElemSpec :: [a] -> ElemSpec era a -> Bool -runElemSpec xs spec = case spec of - ElemNever _ -> False -- ErrorMess "ElemNever in runElemSpec" [] - ElemAny -> True - ElemEqual _ ys -> xs == ys - ElemSum _ sz -> runSize (toI (sumAdds xs)) sz - ElemProj _ _ l sz -> runSize (toI (lensAdds l xs)) sz - -genElemSpec :: - forall w era. - Adds w => - Rep era w -> - -- Rep era c -> - SomeLens era w -> - Size -> - Gen (ElemSpec era w) -genElemSpec repw (SomeLens (l :: Lens' w c)) siz = do - let lo = minSize siz - hi = maxSize siz - if lo >= 1 - then - frequency -- Can't really generate Sums, when size (n) is 0. - [ - ( 2 - , do - smallest <- genSmall @w -- Chooses smallest appropriate for type 'w' - sz <- genBigSize (max 1 (smallest * hi)) - pure (ElemSum (fromI ["genRngSpec " ++ show siz] smallest) sz) - ) - , - ( 2 - , do - smallest <- genSmall @c - sz <- genBigSize (max 1 (smallest * hi)) - pure (ElemProj (fromI ["genRngSpec " ++ show siz] smallest) repw l sz) - ) - , (2, ElemEqual repw <$> do n <- genFromSize siz; vectorOf n (genRep repw)) - , (1, pure ElemAny) - ] - else - frequency - [ (3, ElemEqual repw <$> do n <- genFromSize siz; vectorOf n (genRep repw)) - , (1, pure ElemAny) - ] - -genFromElemSpec :: - forall era r. - [String] -> - Gen r -> - Int -> - ElemSpec era r -> - Gen [r] -genFromElemSpec msgs genr n x = case x of - (ElemNever xs) -> errorMess "RngNever in genFromElemSpec" xs - ElemAny -> vectorOf n genr - (ElemEqual _ xs) -> pure xs - (ElemSum small sz) -> do - tot <- genFromIntRange sz - partition small msgs n (fromI (msg : msgs) tot) - (ElemProj small xrep l sz) -> do - tot <- genFromIntRange sz - rs <- partition small msgs n (fromI (msg : msgs) tot) - mapM (\r -> do ans <- genRep xrep; pure (ans & l .~ r)) rs - where - msg = "genFromElemSpec " ++ show n ++ " " ++ show x - -manyMergeElemSpec :: Gen (Size, Int, [String]) -manyMergeElemSpec = do - size <- genSize - xs <- vectorOf 40 (genElemSpec Word64R (SomeLens word64CoinL) size) - ys <- vectorOf 40 (genElemSpec Word64R (SomeLens word64CoinL) size) - let check (x, y, m) = do - let msize = sizeForElemSpec m - i <- genFromSize msize - let wordsX = - [ "s1<>s2 Size = " ++ show msize - , "s1<>s2 = " ++ show m - , "s2 Size = " ++ show (sizeForElemSpec x) - , "s2 = " ++ show x - , "s1 Size = " ++ show (sizeForElemSpec y) - , "s1 = " ++ show y - , "GenFromElemSpec " ++ show i ++ " size=" ++ show size - ] - z <- genFromElemSpec @TT wordsX (choose (1, 100)) i m - pure (x, runElemSpec z x, y, runElemSpec z y, z, runElemSpec z m, m) - showAns (s1, run1, s2, run2, v, run3, s3) = - unlines - [ "\ns1 = " ++ show s1 - , "s1 Size = " ++ show (sizeForElemSpec s1) - , "s2 = " ++ show s2 - , "s2 Size = " ++ show (sizeForElemSpec s2) - , "s1 <> s2 = " ++ show s3 - , "s1<>s2 Size = " ++ show (sizeForElemSpec s3) - , "v = genFromElemSpec (s1 <> s2) = " ++ show v - , "runElemSpec v s1 = " ++ show run1 - , "runElemSpec v s2 = " ++ show run2 - , "runElemSpec v (s1 <> s2) = " ++ show run3 - ] - pr x@(_, a, _, b, _, c, _) = if not (a && b && c) then Just (showAns x) else Nothing - let trips = [(x, y, m) | x <- xs, y <- ys, Just m <- [consistent x y]] - ts <- mapM check trips - pure $ (size, length trips, Maybe.catMaybes (map pr ts)) - -reportManyMergeElemSpec :: IO () -reportManyMergeElemSpec = do - (size, passed, bad) <- generate manyMergeElemSpec - if null bad - then putStrLn ("passed " ++ show passed ++ " tests. Spec size " ++ show size) - else do mapM_ putStrLn bad; error "TestFails" - --- ======================================== - --- | Specs for lists have two parts, the Size, and the elements -data ListSpec era t where - ListSpec :: Size -> ElemSpec era t -> ListSpec era t - ListNever :: [String] -> ListSpec era t - -instance Show (ListSpec era a) where - show = showListSpec - -instance Era era => Semigroup (ListSpec era a) where - (<>) = mergeListSpec - -instance Era era => Monoid (ListSpec era a) where - mempty = ListSpec SzAny ElemAny - -instance LiftT (ListSpec era t) where - liftT (ListNever xs) = failT xs - liftT x = pure x - dropT (Typed (Left s)) = ListNever s - dropT (Typed (Right x)) = x - -showListSpec :: ListSpec era a -> String -showListSpec (ListSpec s xs) = sepsP ["ListSpec", show s, show xs] -showListSpec (ListNever _) = "ListNever" - -mergeListSpec :: Era era => ListSpec era a -> ListSpec era a -> ListSpec era a -mergeListSpec (ListNever xs) (ListNever ys) = ListNever (xs ++ ys) -mergeListSpec (ListNever xs) (ListSpec _ _) = ListNever xs -mergeListSpec (ListSpec _ _) (ListNever xs) = ListNever xs -mergeListSpec a@(ListSpec s1 e1) b@(ListSpec s2 e2) = - case e1 <> e2 of - ElemNever xs -> - ListNever (["The ListSpec's are inconsistent.", " " ++ show a, " " ++ show b] ++ xs) - e3 -> dropT (explain ("While merging\n " ++ show a ++ "\n " ++ show b) $ listSpec (s1 <> s2) e3) - --- | Test the size consistency while building a ListSpec -listSpec :: Size -> ElemSpec era t -> Typed (ListSpec era t) -listSpec sz1 el = case (sz1 <> sz2) of - SzNever xs -> - failT - ( [ "Creating " ++ show (ListSpec sz1 el) ++ " fails." - , "It has size inconsistencies." - , " " ++ show el ++ " has size " ++ show sz2 - , " " ++ "the expected size is " ++ show sz1 - ] - ++ xs - ) - size -> pure (ListSpec size el) - where - sz2 = sizeForElemSpec el - -sizeForListSpec :: ListSpec era t -> Size -sizeForListSpec (ListSpec sz _) = sz -sizeForListSpec (ListNever _) = SzAny - -runListSpec :: [a] -> ListSpec era a -> Bool -runListSpec xs spec = case spec of - ListNever _ -> False - ListSpec sx es -> runSize (length xs) sx && runElemSpec xs es - -genListSpec :: - forall w era. - Adds w => - Rep era w -> - -- Rep era c -> - SomeLens era w -> - Size -> - Gen (ListSpec era w) -genListSpec repw l size = do - e <- genElemSpec repw l size - pure (ListSpec size e) - -genFromListSpec :: - forall era r. - [String] -> - Gen r -> - ListSpec era r -> - Gen [r] -genFromListSpec _ _ (ListNever xs) = errorMess "ListNever in genFromListSpec" xs -genFromListSpec msgs genr (ListSpec size e) = do - n <- genFromSize size - genFromElemSpec ("genFromListSpec" : msgs) genr n e - --- List and Elem tests - -testSoundElemSpec :: Gen Property -testSoundElemSpec = do - size <- genSize - spec <- genElemSpec Word64R (SomeLens word64CoinL) size - n <- genFromSize size - list <- - genFromElemSpec @TT ["testSoundElemSpec " ++ show spec ++ " " ++ show n] (choose (1, 1000)) n spec - pure $ - counterexample - ("size=" ++ show size ++ "\nspec=" ++ show spec ++ "\nlist=" ++ synopsis (ListR Word64R) list) - (runElemSpec list spec) - -testSoundListSpec :: Gen Property -testSoundListSpec = do - size <- genSize - spec <- genListSpec Word64R (SomeLens word64CoinL) size - list <- genFromListSpec @TT ["testSoundListSpec"] (choose (1, 1000)) spec - pure $ - counterexample - ("spec=" ++ show spec ++ "\nlist=" ++ synopsis (ListR Word64R) list) - (runListSpec list spec) - -manyMergeListSpec :: Gen (Size, Int, [String]) -manyMergeListSpec = do - size <- genSize - xs <- vectorOf 40 (genListSpec Word64R (SomeLens word64CoinL) size) - ys <- vectorOf 40 (genListSpec Word64R (SomeLens word64CoinL) size) - let check (x, y, m) = do - let msize = sizeForListSpec m - i <- genFromSize msize - let wordsX = - [ "s1<>s2 Size = " ++ show msize - , "s1<>s2 = " ++ show m - , "s2 Size = " ++ show (sizeForListSpec x) - , "s2 = " ++ show x - , "s1 Size = " ++ show (sizeForListSpec y) - , "s1 = " ++ show y - , "GenFromListSpec " ++ show i ++ " size=" ++ show size - ] - z <- genFromListSpec @TT wordsX (choose (1, 100)) m - pure (x, runListSpec z x, y, runListSpec z y, z, runListSpec z m, m) - showAns (s1, run1, s2, run2, v, run3, s3) = - unlines - [ "\ns1 = " ++ show s1 - , "s1 Size = " ++ show (sizeForListSpec s1) - , "s2 = " ++ show s2 - , "s2 Size = " ++ show (sizeForListSpec s2) - , "s1 <> s2 = " ++ show s3 - , "s1<>s2 Size = " ++ show (sizeForListSpec s3) - , "v = genFromListSpec (s1 <> s2) = " ++ show v - , "runListSpec v s1 = " ++ show run1 - , "runListSpec v s2 = " ++ show run2 - , "runListSpec v (s1 <> s2) = " ++ show run3 - ] - pr x@(_, a, _, b, _, c, _) = if not (a && b && c) then Just (showAns x) else Nothing - let trips = [(x, y, m) | x <- xs, y <- ys, Just m <- [consistent x y]] - ts <- mapM check trips - pure $ (size, length trips, Maybe.catMaybes (map pr ts)) - -reportManyMergeListSpec :: IO () -reportManyMergeListSpec = do - (size, passed, bad) <- generate manyMergeListSpec - if null bad - then putStrLn ("passed " ++ show passed ++ " tests. Spec size " ++ show size) - else do mapM_ putStrLn bad; error "TestFails" - --- ================================================ --- Synthetic classes used to control the size of --- things in the tests. - -class (Arbitrary t, Adds t) => TestAdd t where - anyAdds :: Gen t - pos :: Gen t - -instance TestAdd Word64 where - anyAdds = choose (0, 12) - pos = choose (1, 12) - -instance TestAdd Coin where - anyAdds = Coin <$> choose (0, 8) - pos = Coin <$> choose (1, 8) - -instance TestAdd Int where - anyAdds = chooseInt (0, atMostAny) - pos = chooseInt (1, atMostAny) - --- ============================================= --- Some simple generators tied to TestAdd class - --- | Only the size of the set uses TestAdd -genSet :: Ord t => Int -> Gen t -> Gen (Set t) -genSet n gen = do - xs <- vectorOf 20 gen - pure (Set.fromList (take n (List.nub xs))) - -testSet :: (Ord t, TestAdd t) => Gen (Set t) -testSet = do - n <- pos @Int - Set.fromList <$> vectorOf n anyAdds - -someSet :: Ord t => Gen t -> Gen (Set t) -someSet g = do - n <- pos @Int - Set.fromList <$> vectorOf n g - -someMap :: forall era t d. (Ord d, TestAdd t) => Rep era d -> Gen (Map d t) -someMap r = do - n <- pos @Int - rs <- vectorOf n anyAdds - ds <- vectorOf n (genRep r) - pure $ Map.fromList (zip ds rs) - --- =================================== --- Some proto-tests, to be fixed soon - -aMap :: Era era => Gen (MapSpec era Int Word64) -aMap = genMapSpec (chooseInt (1, 1000)) IntR Word64R (SomeLens word64CoinL) 4 - -testm :: Gen (MapSpec TT Int Word64) -testm = do - a <- aMap @TT - b <- aMap - monadTyped (liftT (a <> b)) - -aList :: Gen (ListSpec era Word64) -aList = genSize >>= genListSpec Word64R (SomeLens word64CoinL) - -testl :: Gen (ListSpec TT Word64) -testl = do - a <- aList @TT - b <- aList - monadTyped (liftT (a <> b)) - --- ======================================================================= --- Operations on AddsSpec (defined in Classes.hs) - -testV :: Era era => V era DeltaCoin -testV = (V "x" DeltaCoinR No) - -genSumsTo :: Era era => Gen (Pred era) -genSumsTo = do - c <- genOrdCond - let v = Var testV - rhs <- (Lit DeltaCoinR . DeltaCoin) <$> choose (-10, 10) - lhs <- (Lit DeltaCoinR . DeltaCoin) <$> choose (-10, 10) - elements - [SumsTo (Left (DeltaCoin 1)) v c [One rhs], SumsTo (Left (DeltaCoin 1)) lhs c [One rhs, One v]] - -solveSumsTo :: Pred era -> AddsSpec DeltaCoin -solveSumsTo (SumsTo _ (Lit DeltaCoinR n) cond [One (Lit DeltaCoinR m), One (Var (V nam _ _))]) = - varOnRight @DeltaCoin ["solveSumsTo"] n cond m nam -solveSumsTo (SumsTo _ (Var (V nam DeltaCoinR _)) cond [One (Lit DeltaCoinR m)]) = - varOnLeft nam cond m -solveSumsTo x = AddsSpecNever ["solveSumsTo " ++ show x] - -condReverse :: Gen Property -condReverse = do - predicate <- genSumsTo - let addsSpec = solveSumsTo predicate - let msgs = ["condFlip", show predicate, show addsSpec] - n <- genFromAddsSpec msgs addsSpec - let env = storeVar testV (fromI (show n : msgs) n) emptyEnv - case runTyped (runPred @(BabbageEra Standard) env predicate) of - Right x -> pure (counterexample (unlines (show n : msgs)) x) - Left xs -> errorMess "runTyped in condFlip fails" (xs ++ (show n : msgs)) - -genAddsSpec :: forall c. Adds c => Gen (AddsSpec c) -genAddsSpec = do - v <- elements ["x", "y"] - c <- genOrdCond - rhs <- fromI @c ["genAddsSpec"] <$> choose @Int (-25, 25) - lhs <- fromI @c ["genAddsSpec"] <$> choose @Int (-25, 25) - elements [varOnLeft v c rhs, varOnRight ["genAddsSpec"] lhs c rhs v] - -genNonNegAddsSpec :: forall c. Adds c => Gen (AddsSpec c) -genNonNegAddsSpec = do - v <- elements ["x", "y"] - c <- genOrdCond - lhs <- choose @Int (10, 30) - rhs <- choose @Int (1, lhs - 1) - let lhs' = case c of - LTH -> lhs + 1 - _ -> lhs - fromX x = fromI @c ["genNonNegAddsSpec"] x - elements [varOnLeft v c $ fromX rhs, varOnRight ["genNonNegAddsSpec"] (fromX lhs') c (fromX rhs) v] - -genOrdCond :: Gen OrdCond -genOrdCond = elements [EQL, LTH, LTE, GTH, GTE] - -runAddsSpec :: forall c. Adds c => c -> AddsSpec c -> Bool -runAddsSpec c (AddsSpecSize _ size) = runSize (toI c) size -runAddsSpec _ AddsSpecAny = True -runAddsSpec _ (AddsSpecNever _) = False - --- | Not sure how to interpret this? As the possible totals that make the implicit OrdCond True? -sizeForAddsSpec :: AddsSpec c -> Size -sizeForAddsSpec (AddsSpecSize _ s) = s -sizeForAddsSpec AddsSpecAny = SzAny -sizeForAddsSpec (AddsSpecNever xs) = SzNever xs - -tryManyAddsSpec :: - Gen (AddsSpec Int) -> ([String] -> AddsSpec Int -> Gen Int) -> Gen (Int, [String]) -tryManyAddsSpec genSum genFromSum = do - xs <- vectorOf 25 genSum - ys <- vectorOf 25 genSum - let check (x, y, m) = do - z <- genFromSum ["test tryManyAddsSpec"] m - pure (x, runAddsSpec z x, y, runAddsSpec z y, z, runAddsSpec z m, m) - showAns :: (AddsSpec c, Bool, AddsSpec c, Bool, Int, Bool, AddsSpec c) -> String - showAns (s1, run1, s2, run2, v, run3, s3) = - unlines - [ "s1 = " ++ show s1 - , "s2 = " ++ show s2 - , "s1 <> s2 = " ++ show s3 - , "v = genFromAdsSpec (s1 <> s2) = " ++ show v - , "runAddsSpec s1 v = " ++ show run1 - , "runAddsSpec s2 v = " ++ show run2 - , "runAddsSpec (s1 <> s2) v = " ++ show run3 - ] - pr x@(_, a, _, b, _, c, _) = if not (a && b && c) then Just (showAns x) else Nothing - let trips = [(x, y, m) | x <- xs, y <- ys, Just m <- [consistent x y]] - ts <- mapM check trips - pure $ (length trips, Maybe.catMaybes (map pr ts)) - -reportManyAddsSpec :: IO () -reportManyAddsSpec = do - (passed, bad) <- generate (tryManyAddsSpec genAddsSpec genFromAddsSpec) - if null bad - then putStrLn ("passed " ++ show passed ++ " tests.") - else do mapM_ putStrLn bad; error "TestFails" - -reportManyNonNegAddsSpec :: IO () -reportManyNonNegAddsSpec = do - (passed, bad) <- generate (tryManyAddsSpec genNonNegAddsSpec genFromNonNegAddsSpec) - if null bad - then putStrLn ("passed " ++ show passed ++ " tests.") - else do mapM_ putStrLn bad; error "TestFails" - -testSoundNonNegAddsSpec :: Gen Property -testSoundNonNegAddsSpec = do - spec <- genNonNegAddsSpec @Int - c <- genFromNonNegAddsSpec ["testSoundAddsSpec " ++ show spec] spec - pure $ - counterexample - ("AddsSpec=" ++ show spec ++ "\ngenerated value " ++ show c) - (runAddsSpec c spec) - -testSoundAddsSpec :: Gen Property -testSoundAddsSpec = do - spec <- genAddsSpec @DeltaCoin - c <- genFromAddsSpec ["testSoundAddsSpec " ++ show spec] spec - pure $ - counterexample - ("AddsSpec=" ++ show spec ++ "\ngenerated value " ++ show c) - (runAddsSpec (fromI ["testSoundAddsSpec"] c) spec) - --- ======================================================== - -allSpecTests :: TestTree -allSpecTests = - testGroup - "Spec tests" - [ testProperty "reversing OrdCond" condReverse - , testGroup - "Size test" - [ testProperty "test Size sound" testSoundSize - , testProperty "test genFromSize is non-negative" testNonNegSize - , testProperty "test merging Size" testMergeSize - , testProperty "test alternate merge Size" testMergeSize2 - ] - , testGroup - "RelSpec tests" - [ testProperty "we generate consistent RelSpecs" testConsistentRel - , testProperty "test RelSpec sound" testSoundRelSpec - , testProperty "test mergeRelSpec" testMergeRelSpec - , testProperty "test More consistent RelSpec" reportManyMergeRelSpec - ] - , testGroup - "RngSpec tests" - [ testProperty "we generate consistent RngSpec" testConsistentRng - , testProperty "test RngSpec sound" testSoundRngSpec - , testProperty "test mergeRngSpec" testMergeRngSpec - , testProperty "test More consistent RngSpec" reportManyMergeRngSpec - ] - , testGroup - "MapSpec tests" - [ testProperty "test MapSpec sound" genMapSpecIsSound - , testProperty "test More consistent MapSpec" reportManyMergeMapSpec - ] - , testGroup - "SetSpec tests" - [ testProperty "test SetSpec sound" genSetSpecIsSound - , testProperty "test More consistent SetSpec" reportManyMergeSetSpec - ] - , testGroup - "ListSpec tests" - [ testProperty "test ElemSpec sound" testSoundElemSpec - , testProperty "test consistent ElemSpec" reportManyMergeElemSpec - , testProperty "test ListSpec sound" testSoundListSpec - , testProperty "test consistent ListSpec" reportManyMergeListSpec - ] - , testGroup - "AddsSpec tests" - [ testProperty "test Sound MergeAddsSpec" reportManyAddsSpec - , testProperty "test Sound non-negative MergeAddsSpec" reportManyNonNegAddsSpec - , testProperty "test Sound non-negative AddsSpec" testSoundNonNegAddsSpec - , testProperty "test Sound any AddsSpec" testSoundAddsSpec - ] - , testGroup - "PairSpec test" - [ testProperty "test sound PairSpec" testSoundPairSpec - , testProperty "test ConsistentPair" testConsistentPair - , testProperty "test merge PairSpec" testMergePairSpec - , testProperty "test More consistent PairSpec" reportManyMergePairSpec - ] - ] - -main :: IO () -main = defaultMain $ allSpecTests - --- :main --quickcheck-replay=740521 - -data PairSide = VarOnLeft | VarOnRight - deriving (Show, Eq) - --- | A map 'm1' meets the '(PairSpec _ _ m2)' specification if every --- (key,value) pair in 'm2' is in 'm1'. -data PairSpec era a b where - PairSpec :: (Ord a, Eq b) => Rep era a -> Rep era b -> PairSide -> Map a b -> PairSpec era a b - PairNever :: [String] -> PairSpec era a b - PairAny :: PairSpec era a b - --- TODO Add a second map to PairSpec --- PairSpec :: (Ord a, Eq b) => Rep era a -> Rep era b -> Map a b -> Maybe(Map a b) -> PairSpec era a b --- This way (PairSpec d r m1 (Just m2)) Implies m1 <= x <= m2, where (<=) is the Map.isSubmapOf relation --- This way (PairSpec d r empty (Just m2)) Implies x <= m2, --- This way (PairSpec d r m1 Nothing) Implies m1 <= x Note that Nothing denotes the Map that contains every pair --- This way we can get rid of the PairSide argument, and make chains like m1 <= x <= m2, - -anyPairSpec :: PairSpec era d r -> Bool -anyPairSpec PairAny = True -anyPairSpec (PairSpec _ _ _ m) = Map.null m -anyPairSpec _ = False - -instance Monoid (PairSpec era a b) where - mempty = PairAny - -instance Semigroup (PairSpec era dom rng) where - (<>) = mergePairSpec - -instance Show (PairSpec era dom rng) where - show = showPairSpec - -instance LiftT (PairSpec era dom rng) where - liftT (PairNever xs) = failT xs - liftT x = pure x - dropT (Typed (Left s)) = PairNever s - dropT (Typed (Right x)) = x - -showPairSpec :: PairSpec era dom rng -> String -showPairSpec (PairNever _) = "PairNever" -showPairSpec PairAny = "PairAny" -showPairSpec (PairSpec dom rng side mp) = sepsP ["PairSpec", show dom, show rng, show side, synopsis (MapR dom rng) mp] - -mergePairSpec :: PairSpec era a b -> PairSpec era a b -> PairSpec era a b -mergePairSpec (PairNever xs) (PairNever ys) = PairNever (xs ++ ys) -mergePairSpec d@(PairNever _) _ = d -mergePairSpec _ d@(PairNever _) = d -mergePairSpec PairAny x = x -mergePairSpec x PairAny = x -mergePairSpec (PairSpec d r VarOnRight m1) (PairSpec _ _ VarOnRight m2) = - let accum (Right zs) key v = - case Map.lookup key zs of - Nothing -> Right (Map.insert key v zs) - Just u -> - if u == v - then Right (zs) - else - Left - [ "The PairSpecs with VarOnRight" - , " " ++ format (MapR d r) m1 ++ " and" - , " " ++ format (MapR d r) m2 - , " are inconsistent." - , "The key " - ++ synopsis d key - ++ " has multiple values: " - ++ synopsis r v - ++ " and " - ++ synopsis r u - ] - accum (Left xs) _ _ = Left xs - in case Map.foldlWithKey' accum (Right m1) m2 of - Left xs -> PairNever xs - Right m3 -> PairSpec d r VarOnRight m3 -mergePairSpec (PairSpec d r VarOnLeft m1) (PairSpec _ _ VarOnLeft m2) = - let accum (Right zs) key v = - -- Testing that the instersection of the domains, map to the same range. - case Map.lookup key m1 of -- If that is True, we use this intersection as the new map - Nothing -> Right zs - Just u -> - if u == v - then Right (Map.insert key u zs) - else - Left - [ "The PairSpecs with VarOnLeft" - , " " ++ format (MapR d r) m1 ++ " and" - , " " ++ format (MapR d r) m2 - , "are inconsistent." - , "The key " - ++ synopsis d key - ++ " has multiple values: " - ++ synopsis r v - ++ " and " - ++ synopsis (MapR d r) m1 - ] - accum (Left xs) _ _ = Left xs - in case Map.foldlWithKey' accum (Right Map.empty) m2 of - Left xs -> PairNever xs - Right m3 -> PairSpec d r VarOnLeft m3 -mergePairSpec a b = - PairNever - [ "The PairSpecs" - , " " ++ show a ++ " and" - , " " ++ show b - , " are inconsistent." - , "They have the var on different sides." - ] - -sizeForPairSpec :: PairSpec era dom rng -> Size -sizeForPairSpec PairAny = SzAny -sizeForPairSpec (PairNever msgs) = SzNever (msgs ++ ["From sizeForPairSpec."]) -sizeForPairSpec (PairSpec _ _ VarOnRight m) = SzLeast (Map.size m) -sizeForPairSpec (PairSpec _ _ VarOnLeft m) = SzMost (Map.size m) - -runPairSpec :: (Ord dom, Eq rng) => Map dom rng -> PairSpec era dom rng -> Bool -runPairSpec _ PairAny = True -runPairSpec _ (PairNever xs) = errorMess "PairNever in call to runPairSpec" xs -runPairSpec m1 (PairSpec _ _ VarOnRight m2) = Map.isSubmapOf m2 m1 --- all pairs in m2 are in m1 --- So when we say (SubMap expr var) we store the pairs from expr in 'm2' --- and insist that when solving 'var' it contains the pairs from 'm2' and possibly more pairs -runPairSpec m1 (PairSpec _ _ VarOnLeft m2) = Map.isSubmapOf m1 m2 - -genPairSpec :: - forall era dom rng. (Ord dom, Eq rng) => Rep era dom -> Rep era rng -> Gen (PairSpec era dom rng) -genPairSpec domr rngr = - frequency - [ (1, pure PairAny) - , (1, pure (PairSpec domr rngr VarOnRight Map.empty)) - , (1, pure (PairSpec domr rngr VarOnLeft Map.empty)) - , (4, PairSpec domr rngr VarOnRight <$> (Map.singleton <$> genRep domr <*> genRep rngr)) - , (4, PairSpec domr rngr VarOnLeft <$> (Map.singleton <$> genRep domr <*> genRep rngr)) - , - ( 4 - , do - d1 <- genRep domr - d2 <- genRep domr - r1 <- genRep rngr - r2 <- genRep rngr - elements - [ PairSpec domr rngr VarOnRight (Map.fromList [(d1, r1), (d2, r2)]) - , PairSpec domr rngr VarOnRight (Map.fromList [(d1, r1), (d2, r2)]) - ] - ) - ] - -fixSide :: PairSide -> PairSpec era a b -> PairSpec era a b -fixSide _ (PairNever xs) = PairNever xs -fixSide _ PairAny = PairAny -fixSide side (PairSpec d r _ m) = PairSpec d r side m - -genConsistentPairSpec :: - (Ord dom, Eq rng) => - Rep era dom -> - Rep era rng -> - PairSpec era dom rng -> - Gen (PairSpec era dom rng) -genConsistentPairSpec _domr _rngr (PairNever xs) = errorMess "PairNever in genConsistentPairSpec" xs -genConsistentPairSpec domr rngr PairAny = genPairSpec domr rngr -genConsistentPairSpec domr rngr (PairSpec _d _r VarOnRight m) | Map.null m = fixSide VarOnRight <$> genPairSpec domr rngr -genConsistentPairSpec domr rngr (PairSpec _d _r VarOnLeft m) | Map.null m = fixSide VarOnLeft <$> genPairSpec domr rngr -genConsistentPairSpec _ _ (PairSpec d r VarOnRight m) = - frequency - [ (1, pure PairAny) - , (1, do n <- choose (0, Map.size m - 1); pure (PairSpec d r VarOnRight (Map.deleteAt n m))) - , - ( 1 - , do - d1 <- suchThatErr ["genConsistentPairSpec"] (genRep d) (not . (`Map.member` m)) - r1 <- genRep r - pure (PairSpec d r VarOnRight (Map.insert d1 r1 m)) - ) - ] -genConsistentPairSpec _ _ (PairSpec d r VarOnLeft m) = - frequency - [ (1, pure PairAny) - , (1, do n <- choose (0, Map.size m - 1); pure (PairSpec d r VarOnLeft (Map.deleteAt n m))) - , - ( 1 - , do - d1 <- suchThatErr ["genConsistentPairSpec"] (genRep d) (not . (`Map.member` m)) - r1 <- genRep r - pure (PairSpec d r VarOnLeft (Map.insert d1 r1 m)) - ) - ] - -genFromPairSpec :: - forall era dom rng. Ord dom => [String] -> PairSpec era dom rng -> Gen (Map dom rng) -genFromPairSpec msgs (PairNever xs) = errorMess "genFromPairSpec failed due to PairNever" (msgs ++ xs) -genFromPairSpec _msgs PairAny = pure $ Map.empty -genFromPairSpec msgs p@(PairSpec domr rngr VarOnRight mp) = do - n <- (+ (Map.size mp)) <$> choose (0, 10) - mapFromSubset (msgs ++ ["genFromPairSpec " ++ show p]) mp n (genRep domr) (genRep rngr) -genFromPairSpec msgs (PairSpec _domr _rngr VarOnLeft mp) = do - domset <- subsetFromSet (msgs ++ ["from genFromPairSpec VarOnLeft"]) (Map.keysSet mp) - pure (Map.restrictKeys mp domset) - --- ============================================ --- tests for Pair Spec - -testConsistentPair :: Gen Property -testConsistentPair = do - s1 <- genPairSpec @TT IntR IntR - s2 <- genConsistentPairSpec IntR IntR s1 - case s1 <> s2 of - PairNever ms -> - pure $ counterexample (unlines (["genConsistentPair fails", show s1, show s2] ++ ms)) False - _ -> pure $ property True - -testSoundPairSpec :: Gen Property -testSoundPairSpec = do - s1 <- genPairSpec IntR Word64R - ans <- genFromPairSpec @TT ["testSoundPairSpec"] s1 - pure $ counterexample ("spec=" ++ show s1 ++ "\nans=" ++ show ans) (runPairSpec ans s1) - -testMergePairSpec :: Gen Property -testMergePairSpec = do - -- let msg = ["testMergePairSpec"] - s1 <- genPairSpec Word64R IntR - s2 <- genConsistentPairSpec Word64R IntR s1 - case s1 <> s2 of - PairNever _ -> pure (property True) -- This test is an implication (consistent (s1 <> s2) => ...) - s4 -> do - ans <- genFromPairSpec @TT ["testMergePairSpec " ++ show s1 ++ " " ++ show s2] s4 - pure $ - counterexample - ( "s1=" - ++ show s1 - ++ "\ns2=" - ++ show s2 - ++ "\ns1<>s2=" - ++ show s4 - ++ "\nans=" - ++ show ans - ++ "\nrun s1=" - ++ show (runPairSpec ans s1) - ++ "\nrun s2=" - ++ show (runPairSpec ans s2) - ++ "\nrun s4=" - ++ show (runPairSpec ans s4) - ) - (runPairSpec ans s4 && runPairSpec ans s2 && runPairSpec ans s1) - -manyMergePairSpec :: Gen (Int, [String]) -manyMergePairSpec = do - xs <- vectorOf 60 (genPairSpec Word64R IntR) - ys <- vectorOf 60 (genPairSpec Word64R IntR) - let ok PairAny = False - ok _ = True - check (x, y, m) = do - let size = sizeForPairSpec m - i <- genFromSize size - let wordsX = - [ "s1<>s2 Size = " ++ show (sizeForPairSpec m) - , "s1<>s2 = " ++ show m - , "s2 Size = " ++ show (sizeForPairSpec x) - , "s2 = " ++ show x - , "s1 Size = " ++ show (sizeForPairSpec y) - , "s1 = " ++ show y - , "GenFromPairSpec " ++ show i - ] - z <- genFromPairSpec @TT wordsX m - pure (x, runPairSpec z x, y, runPairSpec z y, z, runPairSpec z m, m) - showAns (s1, run1, s2, run2, v, run3, s3) = - unlines - [ "\ns1 = " ++ show s1 - , "s1 Size = " ++ show (sizeForPairSpec s1) - , "s2 = " ++ show s2 - , "s2 Size = " ++ show (sizeForPairSpec s2) - , "s1 <> s2 = " ++ show s3 - , "s1<>s2 Size = " ++ show (sizeForPairSpec s3) - , "v = genFromPairSpec (s1 <> s2) = " ++ show v - , "runPairSpec v s1 = " ++ show run1 - , "runPairSpec v s2 = " ++ show run2 - , "runPairSpec v (s1 <> s2) = " ++ show run3 - ] - pr x@(_, a, _, b, _, c, _) = if not (a && b && c) then Just (showAns x) else Nothing - let trips = [(x, y, m) | x <- xs, y <- ys, ok x && ok y, Just m <- [consistent x y]] - ts <- mapM check trips - pure $ (length trips, Maybe.mapMaybe pr ts) - -reportManyMergePairSpec :: IO () -reportManyMergePairSpec = do - (passed, bad) <- generate manyMergePairSpec - if null bad - then putStrLn ("passed " ++ show passed ++ " tests") - else do mapM_ putStrLn bad; error "TestFails" diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/SpecClass.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/SpecClass.hs deleted file mode 100644 index 06cc33a7c3e..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/SpecClass.hs +++ /dev/null @@ -1,274 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FunctionalDependencies #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE QuantifiedConstraints #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} - --- | Code which defines a class that encapsulates what it means to be a Spec --- Eventually this will repace the most of the tests in Spec.hs -module Test.Cardano.Ledger.Constrained.SpecClass where - -import Cardano.Ledger.Coin (Coin, DeltaCoin) -import Cardano.Ledger.Era (Era) -import Data.Kind -import Data.Map.Strict (Map) -import Data.Set (Set) -import Data.Word (Word64) -import Test.Cardano.Ledger.Common (Arbitrary (arbitrary), Gen) -import Test.Cardano.Ledger.Constrained.Classes (Adds) -import Test.Cardano.Ledger.Constrained.Monad (LiftT) -import Test.Cardano.Ledger.Constrained.Size (Size (..), genFromSize, runSize) -import Test.Cardano.Ledger.Constrained.Spec ( - ElemSpec, - ListSpec, - MapSpec, - PairSpec, - RelSpec, - RngSpec, - SetSpec, - SomeLens (SomeLens), - TT, - genElemSpec, - genFromElemSpec, - genFromListSpec, - genFromMapSpec, - genFromPairSpec, - genFromRelSpec, - genFromRngSpec, - genFromSetSpec, - genListSpec, - genMapSpec, - genPairSpec, - genRelSpec, - genRngSpec, - genSetSpec, - genSize, - intDeltaCoinL, - runElemSpec, - runListSpec, - runMapSpec, - runPairSpec, - runRelSpec, - runRngSpec, - runSetSpec, - sizeForElemSpec, - sizeForListSpec, - sizeForMapSpec, - sizeForPairSpec, - sizeForRel, - sizeForRng, - sizeForSetSpec, - word64CoinL, - ) -import Test.Cardano.Ledger.Constrained.TypeRep (Rep (..)) -import Test.Tasty (defaultMain, testGroup) -import Test.Tasty.QuickCheck (testProperty) - --- import Lens.Micro (Lens') - -{- --- NOtes about current functions and their types for each Spec. This helps --- design what the SpecClass should provide. -class (Monoid spec, LiftT spec) => Specification spec t | spec -> t where - type Count :: Type -> Type - -- type Count Size = () - -- Count RelSpec = Int - -- Count RngSpec = Int - -- Count MapSpec = Int - -- Count SetSpec = Int - -- Count ElemSpec = Size - -- Count ListSpec = Size - -- Count AddsSpec = () -- This is not ready yet. TODO - type Generators spec :: Type - -- type Generators Size = () - -- type Generators (MapSpec era dom rng) = (Gen dom, Gen rng) - -- type Generators (RelSpec era dom) = Gen dom - -- ... - runS :: t -> spec -> Bool - genS :: [String] -> Count spec -> Generators spec -> Gen spec - sizeForS :: spec -> Size - genFromS :: [String] -> Int -> Generators spec -> spec -> Gen t - -Notes: - -genFromSize :: Size -> Gen Int -genFromRelSpec :: forall era t. Ord t => [String] -> Gen t -> Int -> RelSpec era t -> Gen (Set t) -genFromRngSpec :: forall era r. [String] -> Gen r -> Int -> RngSpec era r -> Gen [r] -genFromMapSpec :: String -> [String] -> Gen dom -> Gen w -> MapSpec era dom w -> Gen (Map dom w) -genFromSetSpec :: forall era a. [String] -> Gen a -> SetSpec era a -> Gen (Set a) -genFromElemSpec :: [String] -> Gen r -> Int -> ElemSpec era r -> Gen [r] -genFromListSpec :: [String] -> Gen r -> ListSpec era r -> Gen [r] -genFromAddsSpec :: [String] -> AddsSpec c -> Gen Int - -genConsistentSize -genConsistentRelSpec :: [String] -> Gen dom -> RelSpec era dom -> Gen (RelSpec era dom) -genConsistentRngSpec :: ( Adds w , Sums w c ) => Int -> Gen w -> Rep era w -> Rep era c -> Gen (RngSpec era w, RngSpec era w) -TODO -genConsisent*Spec for all the other Specs --} - -class Arbitrary t => HasRep t where - hasRep :: Rep era t - -instance HasRep Word64 where - hasRep = Word64R -instance HasRep Int where - hasRep = IntR -instance HasRep Coin where - hasRep = CoinR -instance HasRep DeltaCoin where - hasRep = DeltaCoinR - -class (Monoid spec, LiftT spec) => Specification spec t | spec -> t where - type Count spec :: Type - type Generators spec :: Type - type Reps spec :: Type - type Lenses spec :: Type - runS :: t -> spec -> Bool - genS :: [String] -> Count spec -> Generators spec -> Reps spec -> Lenses spec -> Gen spec - - -- genConsistentS :: [String] -> Count spec -> Generators spec -> Reps spec -> spec -> Gen spec - -- genConsistentS :: [String] -> Count spec -> Generators spec -> Reps spec -> gen (spec, spec) - sizeForS :: spec -> Size - genFromS :: [String] -> Int -> Generators spec -> spec -> Gen t - -instance Specification Size Int where - type Count Size = () - type Generators Size = () - type Reps Size = () - type Lenses Size = () - runS = runSize - genS _ _ _ _ _ = genSize - sizeForS = id - genFromS _ _ _ = genFromSize - -instance - (Era era, Ord dom {- HasRep dom, HasRep rng, HasRep c, -}, Ord rng, Adds rng) => - Specification (MapSpec era dom rng) (Map dom rng) - where - type Count (MapSpec era dom rng) = Int - type Generators (MapSpec era dom rng) = (Gen dom, Gen rng) - type Reps (MapSpec era dom rng) = (Rep era dom, Rep era rng) - type Lenses (MapSpec era dom rng) = SomeLens era rng - runS = runMapSpec - genS _ count (genD, _) (domRep, rngRep) sl = genMapSpec genD domRep rngRep sl count - sizeForS = sizeForMapSpec - genFromS msgs _count (genD, genR) spec = genFromMapSpec "genFromMapSpec" msgs genD genR spec - -instance - (Era era, Ord dom, Eq rng, HasRep dom, HasRep rng) => - Specification (PairSpec era dom rng) (Map dom rng) - where - type Count (PairSpec era dom rng) = Int - type Generators (PairSpec era dom rng) = () - type Reps (PairSpec era dom rng) = () - type Lenses (PairSpec era dom rng) = () - runS = runPairSpec - genS _msgs _count _g _ _ = genPairSpec hasRep hasRep - sizeForS = sizeForPairSpec - genFromS msgs _count () spec = genFromPairSpec msgs spec - -instance - (Era era, Ord dom, HasRep dom) => - Specification (RelSpec era dom) (Set dom) - where - type Count (RelSpec era dom) = Int - type Generators (RelSpec era dom) = Gen dom - type Reps (RelSpec era dom) = () - type Lenses (RelSpec era dom) = () - runS = runRelSpec - genS msgs count g _ _ = genRelSpec msgs g hasRep count - sizeForS = sizeForRel - genFromS msgs count g spec = genFromRelSpec msgs g count spec - -instance - (Era era, Adds rng, Ord rng) => - Specification (RngSpec era rng) [rng] - where - type Count (RngSpec era rng) = Int - type Generators (RngSpec era rng) = Gen rng - type Reps (RngSpec era rng) = Rep era rng - type Lenses (RngSpec era rng) = SomeLens era rng - runS = runRngSpec - genS _msgs count g r sl = genRngSpec g r sl count - sizeForS = sizeForRng - genFromS msgs count g spec = genFromRngSpec msgs g count spec - -instance - (Era era, Ord a, HasRep a) => - Specification (SetSpec era a) (Set a) - where - type Count (SetSpec era a) = Int - type Generators (SetSpec era a) = Gen a - type Reps (SetSpec era a) = () - type Lenses (SetSpec era a) = () - runS = runSetSpec - genS msgs count g _ _ = genSetSpec msgs g hasRep count - sizeForS = sizeForSetSpec - genFromS msgs _count g spec = genFromSetSpec msgs g spec - -instance - (Era era, HasRep a, Adds a) => - Specification (ElemSpec era a) [a] - where - type Count (ElemSpec era a) = Size - type Generators (ElemSpec era a) = Gen a - type Reps (ElemSpec era a) = () - type Lenses (ElemSpec era a) = SomeLens era a - runS = runElemSpec - genS _msgs count _g _ sl = genElemSpec hasRep sl count - sizeForS = sizeForElemSpec - genFromS msgs count g spec = genFromElemSpec msgs g count spec - -instance - (Era era, HasRep a, Adds a) => - Specification (ListSpec era a) [a] - where - type Count (ListSpec era a) = Size - type Generators (ListSpec era a) = Gen a - type Reps (ListSpec era a) = () - type Lenses (ListSpec era a) = SomeLens era a - runS = runListSpec - genS _msgs count _g _ sl = genListSpec hasRep sl count - sizeForS = sizeForListSpec - genFromS msgs _count g spec = genFromListSpec msgs g spec - -testSound :: - forall spec t. - Specification spec t => - Lenses spec -> - Reps spec -> - Count spec -> - Generators spec -> - Gen Bool -testSound l r c g = do - spec <- genS @spec ["testSound"] c g r l - ans <- genFromS @spec ["testSound"] 10 g spec - pure $ runS ans spec - -main :: IO () -main = - defaultMain $ - testGroup - "Generic Specification class tests" - [ testGroup - "Generic testSound" - [ testProperty "Size" $ testSound @Size @Int () - , testProperty "MapSpec" $ - testSound @(MapSpec TT Int Word64) (SomeLens word64CoinL) (IntR, Word64R) 10 (arbitrary, arbitrary) - , testProperty "PairSpec" $ testSound @(PairSpec TT Int Word64) () () 10 - , testProperty "RelSpec" $ testSound @(RelSpec TT Int) () () 10 arbitrary - , testProperty "RngSpec" $ - testSound @(RngSpec TT Int) (SomeLens intDeltaCoinL) IntR 10 arbitrary - , testProperty "ListSpec" $ - testSound @(ListSpec TT Int) (SomeLens intDeltaCoinL) () SzAny arbitrary - , testProperty "ElemSpec" $ - testSound @(ElemSpec TT Int) (SomeLens intDeltaCoinL) () SzAny arbitrary - ] - ] diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Stage.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Stage.hs deleted file mode 100644 index 9449fb557e2..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Stage.hs +++ /dev/null @@ -1,98 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeOperators #-} - -module Test.Cardano.Ledger.Constrained.Stage where - -import Cardano.Ledger.Core (Era (..)) -import Data.HashSet (HashSet) -import qualified Data.HashSet as HashSet -import qualified Data.Map.Strict as Map -import Data.Pulse (foldlM') -import Test.Cardano.Ledger.Constrained.Ast -import Test.Cardano.Ledger.Constrained.Env (Env, Name, emptyEnv) -import Test.Cardano.Ledger.Constrained.Monad (monadTyped) -import Test.Cardano.Ledger.Constrained.Preds.CertState (certStatePreds, pstatePreds, vstatePreds) -import Test.Cardano.Ledger.Constrained.Preds.LedgerState (ledgerStatePreds) -import Test.Cardano.Ledger.Constrained.Preds.PParams (pParamsPreds) -import Test.Cardano.Ledger.Constrained.Preds.Universes (UnivSize (..), universePreds) -import Test.Cardano.Ledger.Constrained.Rewrite ( - DependGraph (..), - OrderInfo, - initialOrder, - mkDependGraph, - notBefore, - rewriteGen, - standardOrderInfo, - ) -import Test.Cardano.Ledger.Constrained.Solver (solveOneVar) -import Test.Cardano.Ledger.Generic.Proof hiding (lift) -import Test.QuickCheck - --- ==================================== - --- | Group together some Preds and OrderInfo about how to decide the --- order in which to solve the variables appearing in the Preds -data Stage era = Stage OrderInfo [Pred era] - -type Pipeline era = [Stage era] - --- | A pipeline for specifying the LederState -ledgerPipeline :: Reflect era => UnivSize -> Proof era -> Pipeline era -ledgerPipeline sizes proof = - [ Stage standardOrderInfo (pParamsPreds proof) - , Stage standardOrderInfo (universePreds sizes proof) - ] - ++ ( case whichPParams proof of - PParamsConwayToConway -> [Stage standardOrderInfo (vstatePreds proof)] - _ -> [] - ) - ++ [ Stage standardOrderInfo (pstatePreds proof) - , Stage standardOrderInfo (certStatePreds proof) - , Stage standardOrderInfo (ledgerStatePreds sizes proof) - ] - --- | Translate a Stage into a DependGraph, given the set --- of variables that have aready been solved for. -stageToGraph :: Era era => Int -> Stage era -> HashSet (Name era) -> Gen (Int, DependGraph era) -stageToGraph n0 (Stage info ps) alreadyDefined = do - (n1, simple) <- rewriteGen (n0, ps) - orderedNames <- monadTyped $ initialOrder info simple - graph <- - monadTyped $ - mkDependGraph - (length orderedNames) - [] - alreadyDefined - orderedNames - [] - (Prelude.filter notBefore simple) - pure (n1, graph) - --- | Merge a Pipeline into an existing DependGraph, given the set of variables --- that have aready been solved for, to get a larger DependGraph -mergePipeline :: - Era era => - Int -> - Pipeline era -> - HashSet (Name era) -> - DependGraph era -> - Gen (Int, DependGraph era) -mergePipeline n [] _ graph = pure (n, graph) -mergePipeline n0 (pipe : more) defined (DependGraph xs) = do - (n1, DependGraph ys) <- stageToGraph n0 pipe defined - let names = concat (map fst ys) - mergePipeline n1 more (HashSet.union (HashSet.fromList names) defined) (DependGraph (xs ++ ys)) - --- | Solve a Pipeline to get a Env, Subst, and a DependGraph -solvePipeline :: Reflect era => Pipeline era -> Gen (Env era, Subst era, DependGraph era) -solvePipeline pipes = do - (_, gr@(DependGraph pairs)) <- mergePipeline 0 pipes HashSet.empty (DependGraph []) - Subst subst <- foldlM' solveOneVar emptySubst pairs - let isTempV k = not (elem '.' k) - let sub = Subst (Map.filterWithKey (\k _ -> isTempV k) subst) - env <- monadTyped (substToEnv sub emptyEnv) - pure (env, sub, gr) diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Tests.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Tests.hs deleted file mode 100644 index f0697f0fb71..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Tests.hs +++ /dev/null @@ -1,742 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE FunctionalDependencies #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE NumericUnderscores #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TupleSections #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE TypeSynonymInstances #-} --- Orphan Arbitrary instance for OrderInfo -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Constrained.Tests where - -import Control.Arrow (first) -import Control.Monad -import Data.Foldable (fold) -import Data.Group -import Data.List (intercalate, isPrefixOf) -import qualified Data.List as List -import Data.Map (Map) -import qualified Data.Map as Map -import Data.Set (Set) -import qualified Data.Set as Set -import Prelude hiding (subtract) - -import Test.Cardano.Ledger.Constrained.Ast - -import Cardano.Ledger.Coin -import Cardano.Ledger.Era (Era) -import Cardano.Ledger.Shelley -import Data.HashSet (HashSet) -import qualified Data.HashSet as HashSet -import Test.Cardano.Ledger.Constrained.Classes -import Test.Cardano.Ledger.Constrained.Combinators -import Test.Cardano.Ledger.Constrained.Env -import Test.Cardano.Ledger.Constrained.Monad -import Test.Cardano.Ledger.Constrained.Rewrite -import Test.Cardano.Ledger.Constrained.Shrink -import Test.Cardano.Ledger.Constrained.Size (Size (SzRng)) -import Test.Cardano.Ledger.Constrained.Solver -import Test.Cardano.Ledger.Constrained.TypeRep -import Test.Cardano.Ledger.Generic.Proof (Standard) -import Test.QuickCheck hiding (getSize, total) - -{- - -One property that we'd like to test is the soundness property for the constraint solver: if it -successfully generates a solution to a set of constraints, this solution *actually* satisfies the -constraints. - -In order to test this we need to generate random satisfiable constraints. The approach we take is to -generate constraints in a given fixed environment, and take care to only generate ones that hold in -this particular environment. - -To ensure we generate constraints that have a linear dependency graph we keep track of which -variables in the environment are solved by an already generated constraint and the "depth" at which -it was solved. When generating constraints between solved variables we require the depth to respect -the dependency order. For instance, a constraints S ⊆ T (assuming we solve supersets before subsets) -must have `depthOf T < depthOf S`. - -This doesn't always work, because the solver substitutes equalities in a way that does not respect -our dependencies (`Rewrite.removeEqual`) - -The soundness property discards cases where we fail to find a solution to the constraints, but it's -still interesting to know when this happens, since we try our best to generate solvable constraints. -There is a strict version of the property (`prop_soundness' True`) that fails instead. Currently it -fails in these cases: - - When the existence of a solution to a later variable depends on the value picked for an earlier - variable. For instance, [Sized 3 A, B ⊆ A, C ⊆ B, Sized 1 C]. Here B needs to be solved with a - non-empty set for C to have a solution. - -Current limitations of the tests - - Only CoinR and SetR CoinR types (and Word64R for size constraints) - - Only generates Sized, Subset, Disjoint, and SumsTo(SumSet) constraints - -Known limitations of the code that the tests avoid - - Can't solve `Sized n (Rng X)` (see TODO/sizedRng) - - Random X, N < Σ sum X can pick X = {} (N :: Coin) and then crash on the sum constraint - (TODO/negativeCoin) - --} - --- Generators --- - -data GenEnv era = GenEnv - { gOrder :: OrderInfo - , gEnv :: Env era - , gSolved :: Map (Name era) Depth - -- ^ Which variables in the environment have we "solved", i.e. generated - -- a constraint that allows solving them. Also track the "depth" of - -- the variable in the dependency order (depth = 1 + depth of - -- dependencies). - } - deriving (Show) - -type Depth = Int - -instance Arbitrary OrderInfo where - arbitrary = OrderInfo <$> arbitrary <*> arbitrary <*> arbitrary - shrink info = [standardOrderInfo | info /= standardOrderInfo] - -addVar :: V era t -> t -> GenEnv era -> GenEnv era -addVar vvar val env = env {gEnv = storeVar vvar val $ gEnv env} - -markSolved :: HashSet (Name era) -> Depth -> GenEnv era -> GenEnv era -markSolved solved d env = env {gSolved = Map.unionWith max new (gSolved env)} - where - new = Map.fromSet (const d) (hashSetToSet solved) - -addSolvedVar :: V era t -> t -> Depth -> GenEnv era -> GenEnv era -addSolvedVar vvar@(V _ _ _) val d = markSolved (HashSet.singleton $ Name vvar) d . addVar vvar val - -depthOfName :: GenEnv era -> Name era -> Depth -depthOfName env x = Map.findWithDefault 0 x (gSolved env) - -depthOf :: GenEnv era -> Term era t -> Depth -depthOf env t = maximum $ 0 : map (depthOfName env) (HashSet.toList $ vars t) - -depthOfSum :: GenEnv era -> Sum era c -> Depth -depthOfSum env = \case - SumMap t -> depthOf env t - SumList t -> depthOf env t - One t -> depthOf env t - ProjOne _ _ t -> depthOf env t - ProjMap _ _ t -> depthOf env t - -genLiteral :: forall era t. Era era => GenEnv era -> Rep era t -> Gen t -genLiteral env rep = - case rep of - SetR erep -> setLiteral erep - MapR _ _ -> unconstrained rep -- TODO: more clever generation for maps - _ -> unconstrained rep - where - unconstrained :: forall a. Rep era a -> Gen a - unconstrained r = genRep r - - setLiteral :: forall a. Ord a => Rep era a -> Gen (Set a) - setLiteral erep = do - let knownSets = [val | (_, val) <- envVarsOfType (gEnv env) (SetR erep)] - gen = oneof $ genRep (SetR erep) : map pure knownSets - set1 <- gen - set2 <- gen - op <- elements [const, const id, Set.union, Set.intersection, Set.difference, flip Set.difference] - pure $ op set1 set2 - -genFreshVarName :: GenEnv era -> Gen String -genFreshVarName = elements . varNames - where - allTheNames = [s ++ [c] | s <- "" : allTheNames, c <- ['A' .. 'Z']] - varNames env = take 10 $ filter (`Map.notMember` vmap) allTheNames - where - Env vmap = gEnv env - -envVarsOfType :: Era era => Env era -> Rep era t -> [(V era t, t)] -envVarsOfType (Env env) rep = concatMap wellTyped $ Map.toList env - where - wellTyped (name, Payload rep' val access) = - case testEql rep rep' of - Just Refl -> [(V name rep access, val)] - Nothing -> [] - -data VarSpec - = -- | Must contain a variable (either unsolved, or solved at least the given depth). - -- Requiring a minimum depth let's us avoid introducing cycles in - -- already solved variables. - VarTerm Depth - | -- | Can only use solved variables - KnownTerm - deriving (Eq, Show) - -genTerm :: Era era => GenEnv era -> Rep era t -> VarSpec -> Gen (Term era t, GenEnv era) -genTerm env rep vspec = genTerm' env rep (const True) (genLiteral env rep) vspec - -genTerm' :: - forall era t. - Era era => - GenEnv era -> - Rep era t -> - (t -> Bool) -> - Gen t -> - VarSpec -> - Gen (Term era t, GenEnv era) -genTerm' env rep valid genLit vspec = - frequency $ - [(5, genFixed) | vspec == KnownTerm] - ++ [(5, genExistingVar) | not $ null allowedVars] - ++ [(1, genFreshVar) | VarTerm {} <- [vspec]] - ++ [(2, genDom krep) | SetR krep <- [rep]] - ++ [(2, genRng vrep) | SetR vrep <- [rep]] - where - isValid (_, val) = valid val - existingVars = map fst $ filter isValid $ envVarsOfType (gEnv env) rep - allowedVars = case vspec of - VarTerm d -> filter ((>= d) . depthOfName env . Name) existingVars - KnownTerm -> filter ((`Map.member` gSolved env) . Name) existingVars - - genFixed = (,env) . Lit rep <$> genLit - genExistingVar = (,env) . Var <$> elements allowedVars - - genFreshVar = do - name <- genFreshVarName env - val <- genLit - let vvar = V name rep No - pure (Var vvar, addVar vvar val env) - - genDom :: forall k. (t ~ Set k, Ord k) => Rep era k -> Gen (Term era (Set k), GenEnv era) - genDom krep = do - TypeInEra vrep <- genValType - (m, env') <- - genTerm' - env - (MapR krep vrep) - (valid . Map.keysSet) - (genLit >>= genMapLiteralWithDom env vrep) - vspec - pure (Dom m, env') - - genRng :: forall v. (t ~ Set v, Ord v) => Rep era v -> Gen (Term era (Set v), GenEnv era) - genRng vrep = do - TypeInEra krep <- genKeyType - (m, env') <- - genTerm' - env - (MapR krep vrep) - (valid . Set.fromList . Map.elems) - (genLit >>= genMapLiteralWithRng env krep) - vspec - pure (Rng m, env') - -genMapLiteralWithDom :: Era era => GenEnv era -> Rep era v -> Set k -> Gen (Map k v) -genMapLiteralWithDom env vrep keys = do - let genVal = genLiteral env vrep - traverse (\_ -> genVal) (Map.fromSet (const ()) keys) - -genMapLiteralWithRng :: (Era era, Ord k) => GenEnv era -> Rep era k -> Set v -> Gen (Map k v) -genMapLiteralWithRng env krep vals = do - keys <- setSized [] (Set.size vals) (genLiteral env krep) - valsList <- shuffle $ Set.toList vals - pure $ Map.fromList $ zip (Set.toList keys) valsList - -data TypeInEra era where - TypeInEra :: (Show t, Ord t) => Rep era t -> TypeInEra era - -genKeyType :: Gen (TypeInEra era) -genKeyType = elements [TypeInEra IntR] - -genValType :: Gen (TypeInEra era) -genValType = elements [TypeInEra CoinR, TypeInEra DeltaCoinR] -- Possible future use , TypeInEra (PairR CoinR CoinR)] - -genBaseType :: Gen (TypeInEra era) -genBaseType = oneof [genKeyType, genValType] - -genType :: Gen (TypeInEra era) -genType = - oneof - [ genBaseType - , setR <$> genValType - , listR <$> genValType - , mapR <$> genKeyType <*> genValType - ] - where - setR (TypeInEra t) = TypeInEra (SetR t) - listR (TypeInEra t) = TypeInEra (ListR t) - mapR (TypeInEra s) (TypeInEra t) = TypeInEra (MapR s t) - --- | Unsatisfiable constraint returned if we fail during constraint generation. -errPred :: [String] -> Pred era -errPred errs = Lit (ListR stringR) ["Errors:"] :=: Lit (ListR stringR) errs - --- This is very ad hoc -setWithSum :: Int -> Gen (Set Int) -setWithSum n = fixUp <$> arbitrary - where - fixUp s - | missing == 0 = s - | otherwise = - if Set.notMember missing s - then Set.insert missing s - else Set.singleton n - where - missing = n - sum s - -listWithSum :: Coin -> Gen [Coin] -listWithSum n = fixUp <$> arbitrary - where - fixUp s - | missing == Coin 0 = s - | otherwise = missing : s - where - missing = n ~~ fold s - -mapWithSum :: Coin -> Gen (Map Coin Coin) -mapWithSum n = do - rng <- listWithSum n - dom <- Set.toList <$> setSized [] (length rng) arbitrary - pure $ Map.fromList $ zip dom rng - -genFromOrdCond :: (Arbitrary c, Adds c) => OrdCond -> Bool -> c -> Gen c -genFromOrdCond EQL _ n = pure n -genFromOrdCond cond canBeNegative n = - suchThatErr - ["genFromOrdCond " ++ show cond ++ " " ++ show n] - ( frequency $ - [(1, pure $ minus ["genFromOrdCond"] n (fromI [] 1)) | runOrdCondition GTH n zero || canBeNegative] - ++ [ (1, pure n) - , (1, pure $ add n (fromI [] 1)) - , (10, arbitrary) - ] - ) - (flip (runOrdCondition cond) n) - -genPredicate :: forall era. Era era => GenEnv era -> Gen (Pred era, GenEnv era) -genPredicate env = - frequency $ - [(1, fixedSizedC)] - ++ [(1, varSizedC)] - ++ [(1, eqC)] - ++ [(1, subsetC)] - ++ [(1, disjointC)] - ++ [(1, sumsToC)] - ++ [(1, hasDomC)] - where - withValue :: - forall t. - Gen (Term era t, GenEnv era) -> - (Term era t -> t -> GenEnv era -> Gen (Pred era, GenEnv era)) -> - Gen (Pred era, GenEnv era) - withValue genTm k = do - (tm, env') <- genTm - case runTyped $ runTerm (gEnv env') tm of - Left errs -> pure (errPred errs, env') - Right val -> k tm val env' - - goodSized (Sized _ Rng {}, _) = False -- TODO/sizedRng - goodSized _ = True - - -- Fixed size - fixedSizedC = flip suchThat goodSized $ do - TypeInEra rep <- genValType - withValue (genTerm env (SetR rep) (VarTerm 1)) $ \set val env' -> - let n = ExactSize (getSize val) - in pure (Sized n set, markSolved (vars set) 1 env') - - -- Fresh variable for size. - varSizedC = do - TypeInEra rep <- genValType - withValue (genTerm env (SetR rep) KnownTerm) $ \set val env' -> do - name <- genFreshVarName env' - let vvar = V name SizeR No - intn = getSize val - pure (Sized (Var vvar) set, addSolvedVar vvar (SzRng intn intn) (1 + depthOf env' set) env') - - eqC = do - TypeInEra rep <- genType - withValue (genTerm env rep KnownTerm) $ \lhs val env' -> do - let d = 1 + depthOf env' lhs - (rhs, env'') <- genTerm' env' rep (== val) (pure val) (VarTerm d) - pure (lhs :=: rhs, markSolved (vars rhs) d env'') - - subsetC - | setBeforeSubset (gOrder env) = do - -- Known superset - TypeInEra rep <- genValType - withValue (genTerm env (SetR rep) KnownTerm) $ \sup val env' -> do - let d = 1 + depthOf env' sup - (sub, env'') <- - genTerm' - env' - (SetR rep) - (`Set.isSubsetOf` val) - (subsetFromSet ["From genPredicate subsetC"] val) - (VarTerm d) - pure (sub `Subset` sup, markSolved (vars sub) d env'') - | otherwise = do - -- Known subset - TypeInEra rep <- genValType - withValue (genTerm env (SetR rep) KnownTerm) $ \sub val env' -> do - let d = 1 + depthOf env' sub - (sup, env'') <- - genTerm' - env' - (SetR rep) - (Set.isSubsetOf val) - (Set.union val <$> genRep (SetR rep)) - (VarTerm d) - pure (sub `Subset` sup, markSolved (vars sup) d env'') - - -- Disjoint, left KnownTerm and right VarTerm - disjointC = do - TypeInEra rep <- genValType - withValue (genTerm env (SetR rep) KnownTerm) $ \lhs val env' -> do - let d = 1 + depthOf env' lhs - (rhs, env'') <- - genTerm' - env' - (SetR rep) - (Set.disjoint val) - ((`Set.difference` val) <$> genRep (SetR rep)) - (VarTerm d) - pure (Disjoint lhs rhs, markSolved (vars rhs) d env'') - - -- SumsTo constraint, only Map Int Int at the moment. - sumsToC - | sumBeforeParts (gOrder env) = - -- Known sum - withValue (genTerm' env CoinR (> Coin 10) ((<> Coin 10) <$> arbitrary) KnownTerm) $ \sumTm val env' -> do - let d = 1 + depthOf env' sumTm - - genParts [] env0 = pure ([], env0) - genParts (n : ns) env0 = do - (t, env1) <- - genTerm' - env0 - (MapR CoinR CoinR) - ((== n) . fold) - (mapWithSum n) - (VarTerm d) - first (SumMap t :) <$> genParts ns env1 - -- TODO: It's unclear what the requirements are on the parts when solving sumBeforeParts. - -- The solver fails if you have multiple unknown variables. Generating only a single part - -- for now, since sumBeforeParts is anyway disabled due to TODO/SumSet. - -- count <- choose (1, min 3 val) - let count = 1 - small <- genSmall @Coin - partSums <- partition (fromI [] small) ["sumdToC in Tests.hs"] count val - (parts, env'') <- genParts partSums env' - -- At some point we should generate a random TestCond other than EQL - pure - ( SumsTo (Left (fromI [] small)) sumTm EQL parts - , markSolved (foldMap (varsOfSum mempty) parts) d env'' - ) - -- FIXME Left means that sumTm is known. Not sure if that is what is needed here. - | otherwise = - oneof - [ sumCKnownSets CoinR False - , sumCKnownSets DeltaCoinR True - ] - - -- Avoid constraints where the same variable appears in multiple parts, since we can't solve - -- these when the variable is unknown. - uniqueVars (SumsTo _ _ _ parts) = - and - [ hashSetDisjoint us vs - | us : vss <- List.tails $ map (varsOfSum mempty) parts - , vs <- vss - ] - uniqueVars _ = True - - sumCKnownSets :: - forall c. - (Adds c, Arbitrary c) => - Rep era c -> - Bool -> - Gen (Pred era, GenEnv era) - sumCKnownSets rep canBeNegative = flip suchThat (uniqueVars . fst) $ do - let genParts 0 env0 k = k [] zero env0 - genParts n env0 k = do - TypeInEra krep <- genKeyType - withValue (genTerm env0 (MapR krep rep) KnownTerm) $ \expr val env1 -> - genParts (n - 1) env1 $ \parts tot -> - k (SumMap expr : parts) (add (sumAdds val) tot) - count <- choose (1, 3 :: Int) - genParts count env $ \parts tot env' -> do - cmp <- elements $ [EQL, LTE, GTH, GTE] ++ [LTH | canBeNegative] -- TODO/negativeCoin - let d = 1 + maximum (0 : map (depthOfSum env') parts) - (sumTm, env'') <- - genTerm' - env' - rep - (flip (runOrdCondition cmp) tot) - (genFromOrdCond cmp canBeNegative tot) - (VarTerm d) - small <- genSmall @c - pure (SumsTo (Right (fromI [] small)) sumTm cmp parts, markSolved (vars sumTm) d env'') - -- FIXME Right means that the parts are all known. Not sure if that is what is needed here. - - hasDomC = - oneof - [ do - -- Known map - TypeInEra krep <- genKeyType - TypeInEra vrep <- genValType - withValue (genTerm env (MapR krep vrep) KnownTerm) $ \mapTm val env' -> do - let d = 1 + depthOf env' mapTm - (domTm, env'') <- - genTerm' - env' - (SetR krep) - (== Map.keysSet val) - (pure $ Map.keysSet val) - (VarTerm d) - pure (Dom mapTm :=: domTm, env'') - , do - -- Known domain - TypeInEra krep <- genKeyType - TypeInEra vrep <- genValType - withValue (genTerm env (SetR krep) KnownTerm) $ \domTm val env' -> do - let d = 1 + depthOf env' domTm - (mapTm, env'') <- - genTerm' - env' - (MapR krep vrep) - ((val ==) . Map.keysSet) - (genMapLiteralWithDom env vrep val) - (VarTerm d) - pure (domTm :=: Dom mapTm, env'') - ] - -genPreds :: Era era => GenEnv era -> Gen ([Pred era], GenEnv era) -genPreds = \env -> do - n <- choose (1, 40) - loop (n :: Int) env - where - loop n env - | n == 0 = pure ([], env) - | otherwise = do - (pr, env') <- genPredicate env - first (pr :) <$> loop (n - 1) env' - -withEq :: Rep era t -> (Eq t => a) -> Maybe a -withEq (SetR r) cont = withEq r cont -withEq (MapR kr vr) cont = join $ withEq kr (withEq vr cont) -withEq CoinR cont = Just cont -withEq _ _ = Nothing - --- We can't drop constraints due to dependency limitations. There needs to be at least one --- constraint to solve each variable. We can replace constraints by Random though! -shrinkPreds :: forall era. Era era => ([Pred era], GenEnv era) -> [([Pred era], GenEnv era)] -shrinkPreds (preds, env) = - [ (preds', env') - | preds' <- shrinkList shrinkPred preds - , let defined = foldMap def preds' - env' = env {gEnv = pruneEnv defined (gEnv env)} - , depCheck mempty preds' - ] - where - -- Shrink to a Random constraint defining the same variables. The makes sure we respect the - -- OrderInfo. - shrinkPred Random {} = [] - shrinkPred c = filter (checkDefs c) $ shrinkToValue c ++ shrinkToRandom c - - checkDefs orig shrunk = def orig == def shrunk && not (null $ def shrunk) - - shrinkToValue (Lit {} :=: Var {}) = [] - shrinkToValue c = - [ c' - | Name x@(V _ r _) <- HashSet.toList $ def c - , Right v <- [runTyped $ runTerm (gEnv env) (Var x)] - , Just c' <- [withEq r $ Lit r v :=: Var x] - ] - - shrinkToRandom c = [r | r@(Random Var {}) <- randoms c] - - randoms (Sized n t) = [Random n, Random t] - randoms (s `Subset` t) = [Random s, Random t] - randoms (s :=: t) = [Random s, Random t] - randoms (Disjoint s t) = [Random s, Random t] - randoms _ = [] - - pruneEnv defs (Env vmap) = Env $ Map.filterWithKey (\name _ -> HashSet.member name defNames) vmap - where - defNames = HashSet.map (\(Name (V name _ _)) -> name) defs - - depCheck :: HashSet (Name era) -> [Pred era] -> Bool - depCheck _ [] = True - depCheck solved preds' - | null rdy = False - | otherwise = depCheck (foldMap def rdy <> solved) rest - where - (rdy, rest) = List.partition canSolve preds' - canSolve c = HashSet.isSubsetOf (use c) solved - - deps c = accumdep (gOrder env) mempty c - def x = (HashSet.fromList . Set.toList . Map.keysSet . deps) x - use = fold . deps - --- Tests --- - -type TestEra = ShelleyEra Standard - -testProof :: Proof TestEra -testProof = Shelley - -testEnv :: Env TestEra -testEnv = Env $ Map.fromList [("A", Payload CoinR (Coin 5) No)] - -ensureRight :: Testable prop => Either [String] a -> (a -> prop) -> Property -ensureRight (Left errs) _ = counterexample (unlines errs) False -ensureRight (Right x) prop = property $ prop x - -ifRight :: Testable prop => Either [String] a -> (a -> prop) -> Property -ifRight Left {} _ = False ==> False -ifRight (Right x) prop = property $ prop x - -ensureTyped :: Testable prop => Typed a -> (a -> prop) -> Property -ensureTyped = ensureRight . runTyped - -ifTyped :: Testable prop => Typed a -> (a -> prop) -> Property -ifTyped = ifRight . runTyped - -initEnv :: OrderInfo -> GenEnv TestEra -initEnv info = - GenEnv - { gOrder = info - , gEnv = emptyEnv - , gSolved = mempty - } - -showVal :: Rep era t -> t -> String -showVal (SetR r) t = "{" ++ intercalate ", " (map (synopsis r) (Set.toList t)) ++ "}" -showVal (MapR kr vr) t = - "{" ++ intercalate ", " [synopsis kr k ++ " -> " ++ synopsis vr v | (k, v) <- Map.toList t] ++ "}" -showVal rep t = synopsis rep t - -showTerm :: Term era t -> String -showTerm (Lit rep t) = showVal rep t -showTerm (Dom t) = "(Dom " ++ showTerm t ++ ")" -showTerm (Rng t) = "(Rng " ++ showTerm t ++ ")" -showTerm t = show t - -showPred :: Pred era -> String -showPred (sub `Subset` sup) = showTerm sub ++ " ⊆ " ++ showTerm sup -showPred (sub :=: sup) = showTerm sub ++ " == " ++ showTerm sup -showPred (Disjoint s t) = "Disjoint " ++ showTerm s ++ " " ++ showTerm t -showPred pr = show pr - -showEnv :: Env era -> String -showEnv (Env vmap) = unlines $ map pr (Map.toList vmap) - where - pr (name, Payload rep t _) = name ++ " :: " ++ show rep ++ " -> " ++ showVal rep t - -predConstr :: Pred era -> String -predConstr MetaSize {} = "MetaSize" -predConstr Sized {} = "Sized" -predConstr (_ :=: _) = ":=:" -predConstr (_ `Subset` _) = "Subset" -predConstr Disjoint {} = "Disjoint" -predConstr SumsTo {} = "SumsTo" -predConstr SumSplit {} = "SumSplit" -predConstr Random {} = "Random" -predConstr Component {} = "Component" -predConstr CanFollow {} = "CanFollow" -predConstr Member {} = "Member" -predConstr NotMember {} = "NotMember" -predConstr MapMember {} = "MapMember" -predConstr (:<-:) {} = ":<-:" -predConstr List {} = "List" -predConstr Choose {} = "Choose" -predConstr Maybe {} = "Maybe" -predConstr GenFrom {} = "GenFrom" -predConstr ForEach {} = "ForEach" -predConstr SubMap {} = "SubMap" -predConstr If {} = "If" -predConstr Before {} = "Before" -predConstr Oneof {} = "Oneof" -predConstr ListWhere {} = "ListWhere" - -constraintProperty :: - Bool -> - [String] -> - OrderInfo -> - ([Pred TestEra] -> DependGraph TestEra -> Env TestEra -> Property) -> - Property -constraintProperty strict whitelist info prop = - forAllShrink (genPreds $ initEnv info) shrinkPreds $ \(preds, genenv) -> - counterexample ("\n-- Order --\n" ++ show info) $ - counterexample ("\n-- Constraints --\n" ++ unlines (map showPred preds)) $ - counterexample ("-- Model solution --\n" ++ showEnv (gEnv genenv)) $ - checkTyped (compile info preds) $ \graph -> - forAllBlind (genDependGraph False testProof graph) . flip checkRight $ \subst -> - let env = errorTyped $ substToEnv subst emptyEnv - n = let Env e = gEnv genenv in Map.size e - in tabulate "Var count" [show n] $ - tabulate "Constraint types" (map predConstr preds) $ - prop preds graph env - where - checkTyped - | strict = checkWhitelist . runTyped - | otherwise = ifTyped - checkRight - | strict = checkWhitelist - | otherwise = ifRight - - checkWhitelist :: Testable prop => Either [String] a -> (a -> prop) -> Property - checkWhitelist (Left errs) _ = - and - [ not $ isPrefixOf white err - | white <- whitelist - , err <- errs - ] - ==> counterexample (unlines errs) False - checkWhitelist (Right x) k = property $ k x - -checkPredicates :: [Pred era] -> Env era -> Property -checkPredicates preds env = - counterexample ("-- Solution --\n" ++ showEnv env) $ - conjoin $ - map checkPred preds - where - checkPred pr = counterexample ("Failed: " ++ showPred pr) $ ensureTyped (runPred env pr) id - -runPreds :: [Pred TestEra] -> IO () -runPreds ps = do - let info = standardOrderInfo - Right g <- pure $ runTyped $ compile info ps - subst <- generate $ genDependGraph True testProof g - print subst - --- | Generate a set of satisfiable constraints and check that we can generate a solution and that it --- actually satisfies the constraints. -prop_soundness :: OrderInfo -> Property -prop_soundness x = prop_soundness' False [] x - -defaultWhitelist :: [String] -defaultWhitelist = ["Size specifications", "The SetSpec's are inconsistent", "The MapSpec's are inconsistent"] - --- | If argument is True, fail property if constraints cannot be solved. Otherwise discard unsolved --- constraints. -prop_soundness' :: Bool -> [String] -> OrderInfo -> Property -prop_soundness' strict whitelist info = - constraintProperty strict whitelist info $ \preds _graph env -> - checkPredicates preds env - --- | Check that shrinking is sound, i.e. that all shrink steps preserves constraint satisfaction. -prop_shrinking :: OrderInfo -> Property -prop_shrinking = prop_shrinking' False [] - -prop_shrinking' :: Bool -> [String] -> OrderInfo -> Property -prop_shrinking' strict whitelist info = - constraintProperty strict whitelist info $ \preds graph env -> - counterexample ("-- Original solution --\n" ++ showEnv env) $ - let envs = shrinkEnv graph env - in tabulate "Shrinkings" [show $ length envs] $ - conjoin $ - map (checkPredicates preds) envs diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Trace/Actions.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Trace/Actions.hs deleted file mode 100644 index 674d5d8baf9..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Trace/Actions.hs +++ /dev/null @@ -1,63 +0,0 @@ -{-# LANGUAGE GADTs #-} - -module Test.Cardano.Ledger.Constrained.Trace.Actions where - -import Cardano.Ledger.BaseTypes (addEpochInterval) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Conway.TxCert (ConwayGovCert (..), ConwayTxCert (..)) -import Cardano.Ledger.Core (Era (..), TxBody, TxCert) -import Cardano.Ledger.DRep (DRepState (DRepState)) -import Cardano.Ledger.SafeHash (hashAnnotated) -import Cardano.Ledger.TxIn (TxId (..), TxIn (..), mkTxInPartial) -import Cardano.Ledger.Val (Val (..)) -import Control.Monad (forM_) -import qualified Data.Map.Strict as Map -import Data.Set (Set) -import Test.Cardano.Ledger.Constrained.Classes (TxOutF (..)) -import Test.Cardano.Ledger.Constrained.Trace.TraceMonad (TraceM, getTerm, updateVar) -import Test.Cardano.Ledger.Constrained.Vars -import Test.Cardano.Ledger.Generic.Proof hiding (lift) - --- ==================================================================== --- Some experiments with updating the state (Stored in the Env) --- Used as a means to track what applySTS does. - -inputsAction :: Era era => Proof era -> Set (TxIn (EraCrypto era)) -> TraceM era () -inputsAction proof is = updateVar (utxo proof) (\u -> Map.withoutKeys u is) - -outputsAction :: Reflect era => Proof era -> TxBody era -> [TxOutF era] -> TraceM era () -outputsAction proof txb outs = updateVar (utxo proof) (\u -> Map.union u (makemap outs)) - where - makemap outPuts = Map.fromList (fmap (\(out, n) -> (mkTxInPartial txid n, out)) (zip outPuts [0 ..])) - txid = TxId (hashAnnotated txb) - -feesAction :: Era era => Coin -> TraceM era () -feesAction feeCoin = updateVar fees (<+> feeCoin) - -certAction :: Era era => Proof era -> TxCert era -> TraceM era () -certAction p@Conway cert = - case cert of - ConwayTxCertGov (ConwayRegDRep cred _ manchor) -> do - epoch <- getTerm currentEpoch - activity <- getTerm (drepActivity p) - dep <- getTerm (drepDeposit p) - updateVar - currentDRepState - (Map.insert cred (DRepState (addEpochInterval epoch activity) manchor dep)) - ConwayTxCertGov (ConwayUnRegDRep cred dep) -> do - updateVar currentDRepState (Map.delete cred) - updateVar deposits (<-> dep) - ConwayTxCertGov (ConwayUpdateDRep cred mAnchor) -> do - epoch <- getTerm currentEpoch - activity <- getTerm (drepActivity p) - updateVar - currentDRepState - ( Map.adjust - (\(DRepState _ _ deposit) -> DRepState (addEpochInterval epoch activity) mAnchor deposit) - cred - ) - _ -> pure () -certAction _ _ = pure () - -certsAction :: (Foldable t, Era era) => Proof era -> t (TxCert era) -> TraceM era () -certsAction p xs = forM_ xs (certAction p) diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Trace/DrepCertTx.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Trace/DrepCertTx.hs deleted file mode 100644 index 05c4e63e043..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Trace/DrepCertTx.hs +++ /dev/null @@ -1,261 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - --- | Generate a Simple Tx with 1 inout, 1 output, and 1 DRep related Cert -module Test.Cardano.Ledger.Constrained.Trace.DrepCertTx where - -import Cardano.Crypto.Hash.Class (Hash) -import Cardano.Ledger.Coin (Coin (..), CompactForm) -import Cardano.Ledger.Conway.Governance ( - ConwayEraGov, - EraGov, - GovActionId, - GovActionState, - PulsingSnapshot (..), - computeDrepDistr, - curPParamsGovStateL, - finishDRepPulser, - newEpochStateDRepPulsingStateL, - proposalsActionsMap, - proposalsGovStateL, - ) -import Cardano.Ledger.Conway.TxCert (ConwayGovCert (..), ConwayTxCert (..)) -import Cardano.Ledger.Crypto (HASH) -import Cardano.Ledger.DRep hiding (drepDeposit) -import Cardano.Ledger.Hashes (EraIndependentTxBody) -import Cardano.Ledger.Shelley.LedgerState ( - CertState (..), - DState (..), - EpochState (..), - IncrementalStake (..), - LedgerState (..), - NewEpochState (..), - UTxOState (..), - VState (..), - allObligations, - esLStateL, - lsUTxOStateL, - nesEsL, - utxosGovStateL, - ) -import Data.Foldable (toList) -import qualified Data.Map.Strict as Map -import Data.Maybe.Strict (StrictMaybe (..)) -import qualified Data.Set as Set -import Debug.Trace (trace) -import Lens.Micro -import Test.Cardano.Ledger.Constrained.Ast (RootTarget (..), (^$)) -import Test.Cardano.Ledger.Constrained.Classes (TxF (..), TxOutF (..)) -import Test.Cardano.Ledger.Constrained.Combinators (itemFromSet) -import Test.Cardano.Ledger.Constrained.Preds.Tx (hashBody) -import Test.Cardano.Ledger.Constrained.Trace.Actions ( - certsAction, - feesAction, - inputsAction, - outputsAction, - ) -import Test.Cardano.Ledger.Constrained.Trace.SimpleTx ( - completeTxBody, - plutusFreeCredential, - simpleTxBody, - ) -import Test.Cardano.Ledger.Constrained.Trace.TraceMonad ( - TraceM, - epochProp, - getTarget, - getTerm, - liftGen, - mockChainProp, - setVar, - showPulserState, - stepProp, - ) -import Test.Cardano.Ledger.Constrained.Vars -import Test.Cardano.Ledger.EraClass -import Test.Cardano.Ledger.Generic.Fields (TxBodyField (..)) -import Test.Cardano.Ledger.Generic.MockChain (MockBlock (..), MockChainState (..)) -import Test.Cardano.Ledger.Generic.PrettyCore (pcNewEpochState, pcTxCert, ppList) -import Test.Cardano.Ledger.Generic.Proof ( - Proof (..), - Reflect (..), - TxCertWit (..), - whichTxCert, - ) -import Test.Cardano.Ledger.Generic.Updaters (newTxBody) -import Test.Tasty -import Test.Tasty.QuickCheck - --- ========================================================================= - --- | Fix the first Outputs field in a [TxBodyField], by applying the delta Coin to the first Output in that Outputs field --- This is used to compensate for certificates which make deposits, and this Coin must come from somewhere, so it is --- added (subtracted if the Coin is negative) from the first TxOut. --- In rare occurrences, it is possible that 'delta' might be too negative to subtract from the input --- in that case discard the trace. Note that in traces of length 150. this happens less than 1% of the time. -fixOutput :: EraTxOut era => Coin -> [TxBodyField era] -> TraceM era [TxBodyField era] -fixOutput _ [] = pure [] -fixOutput delta@(Coin n) (Outputs' (txout : more) : others) = - case txout ^. coinTxOutL of - Coin m -> - if n + m < 0 - then discard - else pure ((Outputs' ((txout & coinTxOutL <>~ delta) : more)) : others) -fixOutput delta (x : xs) = (x :) <$> fixOutput delta xs - --- | Compute a valid Cert, and the change in the stored Deposits from that Cert. -drepCert :: Reflect era => Proof era -> TraceM era (Coin, [TxBodyField era]) -drepCert proof = case whichTxCert proof of - TxCertShelleyToBabbage -> pure (mempty, []) - TxCertConwayToConway -> do - plutusmap <- getTerm plutusUniv - drepCreds <- Set.filter (plutusFreeCredential plutusmap) <$> getTerm voteUniv - (cred, _) <- liftGen (itemFromSet [] drepCreds) - mdrepstate <- getTarget (Constr "mapMember" (Map.lookup cred) ^$ currentDRepState) - deposit@(Coin m) <- getTerm (drepDeposit proof) - case mdrepstate of - Nothing -> pure (Coin (-m), [Certs' [ConwayTxCertGov $ ConwayRegDRep cred deposit SNothing]]) - Just (DRepState _expiry _manchor _dep) -> - liftGen $ - oneof - [ pure (deposit, [Certs' [ConwayTxCertGov $ ConwayUnRegDRep cred deposit]]) - , do - mAnchor <- arbitrary - pure (Coin 0, [Certs' [ConwayTxCertGov $ ConwayUpdateDRep cred mAnchor]]) - ] - -drepCertTx :: Reflect era => Coin -> Proof era -> TraceM era (TxF era) -drepCertTx maxFeeEstimate proof = do - simplefields <- simpleTxBody proof maxFeeEstimate - (deltadeposit, certfields) <- drepCert proof - txb <- do - fields2 <- fixOutput deltadeposit simplefields - pure (newTxBody proof (fields2 ++ certfields)) - tx <- completeTxBody proof maxFeeEstimate txb - setVar txterm (TxF proof tx) - pure (TxF proof tx) - --- ============================================ - --- | Update the internal Env by applying the Actions --- appropriate for a SimpleTx with DRepCerts. --- Changes to the Env are done by side effects in the TraceM mondad. -applyDRepCertActions :: Reflect era => Proof era -> Tx era -> TraceM era () -applyDRepCertActions proof tx = do - let txb = tx ^. bodyTxL - feeCoin = txb ^. feeTxBodyL - txbcerts = txb ^. certsTxBodyL - inputsAction proof (txb ^. inputsTxBodyL) - outputsAction proof txb (fmap (TxOutF proof) (toList (txb ^. outputsTxBodyL))) - feesAction feeCoin - certsAction proof txbcerts - --- ================================================ - --- | Generate a Tx that can be made into a Trace, because it applies the --- necessary Actions to update the Env. The Env must contain the Vars that --- are updated by 'applyDRepCertActions' . It is best to intialize the whole --- LedgerState to do this. -drepCertTxForTrace :: Reflect era => Coin -> Proof era -> TraceM era (Tx era) -drepCertTxForTrace maxFeeEstimate proof = do - TxF _ tx <- drepCertTx maxFeeEstimate proof - applyDRepCertActions proof tx - pure tx - --- ====================================== - -drepTree :: TestTree -drepTree = - testGroup - "DRep property traces" - [ testProperty - "All Tx are valid on traces of length 150." - $ withMaxSuccess 20 - $ mockChainProp Conway 150 (drepCertTxForTrace (Coin 100000)) - $ stepProp (allValidSignals Conway) - , testProperty - "Bruteforce = Pulsed, in every epoch, on traces of length 150" - $ withMaxSuccess 5 - $ mockChainProp Conway 150 (drepCertTxForTrace (Coin 60000)) - $ epochProp pulserWorks - ] - --- ================================================= --- Example functions that can be lifted to --- Trace (MOCKCHAIN era) -> Property --- using 'stepProp', 'deltaProp', 'preserveProp', and 'epochProp' --- this lifted value is then passed to 'mockChainProp' to make a Property - -getpp :: EraGov era => NewEpochState era -> PParams era -getpp nes = nes ^. (nesEsL . esLStateL . lsUTxOStateL . utxosGovStateL . curPParamsGovStateL) - -getProposals :: - ConwayEraGov era => NewEpochState era -> Map.Map (GovActionId (EraCrypto era)) (GovActionState era) -getProposals nes = - proposalsActionsMap - (nes ^. (nesEsL . esLStateL . lsUTxOStateL . utxosGovStateL . proposalsGovStateL)) - -allValidSignals :: - Reflect era => Proof era -> MockChainState era -> MockBlock era -> MockChainState era -> Property -allValidSignals p (MockChainState nes _ slot count) (MockBlock _ _ _txs) _stateN = - counterexample - ("\nCount " ++ show count ++ " Slot " ++ show slot ++ "\n" ++ show (pcNewEpochState p nes)) - (property True) - -pulserWorks :: ConwayEraGov era => MockChainState era -> MockChainState era -> Property -pulserWorks mcsfirst mcslast = - counterexample - ( "\nFirst " - ++ showPulserState mcsfirst - ++ "\nLast " - ++ showPulserState mcslast - ) - (bruteForceDRepDistr (mcsTickNes mcsfirst) === extractPulsingDRepDistr (mcsNes mcslast)) - -bruteForceDRepDistr :: NewEpochState era -> Map.Map (DRep (EraCrypto era)) (CompactForm Coin) -bruteForceDRepDistr nes = computeDrepDistr umap dreps incstk - where - ls = esLState (nesEs nes) - cs = lsCertState ls - IStake incstk _ = utxosStakeDistr (lsUTxOState ls) - umap = dsUnified (certDState cs) - dreps = vsDReps (certVState cs) - -extractPulsingDRepDistr :: - ConwayEraGov era => - NewEpochState era -> - Map.Map (DRep (EraCrypto era)) (CompactForm Coin) -extractPulsingDRepDistr nes = - (psDRepDistr . fst . finishDRepPulser) (nes ^. newEpochStateDRepPulsingStateL) - --- =============================================== --- helper functions - -showCerts :: Proof era -> [TxCert era] -> String -showCerts proof cs = show (ppList (pcTxCert proof) cs) - -certsOf :: EraTx era => Tx era -> [TxCert era] -certsOf tx = toList (tx ^. (bodyTxL . certsTxBodyL)) - -hashTx :: EraTx era => Proof era -> Tx era -> Hash (HASH (EraCrypto era)) EraIndependentTxBody -hashTx proof tx = hashBody proof (tx ^. bodyTxL) - -showMap :: (Show k, Show v) => String -> Map.Map k v -> String -showMap msg m = unlines (msg : map show (Map.toList m)) - -traceMap :: (Show k, Show v) => String -> Map.Map k v -> a -> a -traceMap s m x = trace (showMap s m) x - -showPotObl :: ConwayEraGov era => NewEpochState era -> String -showPotObl nes = - "\nPOT " - ++ show (utxosDeposited us) - ++ "\nAll " - ++ show (allObligations certSt (us ^. utxosGovStateL)) - where - es = nesEs nes - ls = esLState es - us = lsUTxOState ls - certSt = lsCertState ls diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Trace/Pipeline.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Trace/Pipeline.hs deleted file mode 100644 index 9fb42961266..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Trace/Pipeline.hs +++ /dev/null @@ -1,233 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE KindSignatures #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeOperators #-} - -module Test.Cardano.Ledger.Constrained.Trace.Pipeline where - -import Cardano.Ledger.Babbage (Babbage) -import Cardano.Ledger.BaseTypes (Globals) -import Cardano.Ledger.Core (Era, EraRule, Tx) -import Cardano.Ledger.Shelley.LedgerState (LedgerState) -import Cardano.Ledger.Shelley.Rules -import Control.Monad.Reader (Reader, runReader) -import Control.State.Transition.Extended ( - BaseM, - RuleType (Transition), - STS (..), - TRC (..), - applySTS, - ) -import Data.Default.Class (Default (def)) -import Data.HashSet (HashSet) -import qualified Data.HashSet as HashSet -import Data.List.NonEmpty (NonEmpty) -import qualified Data.Map.Strict as Map -import Data.Pulse (foldlM') -import GHC.TypeLits (Symbol) -import Test.Cardano.Ledger.Constrained.Ast -import Test.Cardano.Ledger.Constrained.Classes (TxF (..)) -import Test.Cardano.Ledger.Constrained.Env (Env, Name, emptyEnv, findVar) -import Test.Cardano.Ledger.Constrained.Monad (errorTyped, monadTyped) -import Test.Cardano.Ledger.Constrained.Preds.Repl (goRepl) -import Test.Cardano.Ledger.Constrained.Preds.Tx (adjustColInput, adjustFeeInput, txBodyPreds) -import Test.Cardano.Ledger.Constrained.Rewrite ( - DependGraph (..), - initialOrder, - mkDependGraph, - notBefore, - rewriteGen, - standardOrderInfo, - ) -import Test.Cardano.Ledger.Constrained.Solver (solveOneVar) -import Test.Cardano.Ledger.Constrained.Stage (Pipeline, Stage (..), ledgerPipeline, solvePipeline) -import Test.Cardano.Ledger.Constrained.Trace.TraceMonad -import Test.Cardano.Ledger.Constrained.Vars -import Test.Cardano.Ledger.Generic.Proof hiding (WitRule (..), lift) -import Test.Cardano.Ledger.Shelley.Utils (testGlobals) -import Test.QuickCheck - --- ============================================= - -data Rule (i :: Symbol) where - DELEG :: Rule "DELEG" - DELEGS :: Rule "DELEGS" - DELPL :: Rule "DELPL" - EPOCH :: Rule "EPOCH" - LEDGER :: Rule "LEDGER" - LEDGERS :: Rule "LEDGERS" - MIR :: Rule "MIR" - NEWEPOCH :: Rule "NEWSPOCH" - NEWPP :: Rule "NEWPP" - POOL :: Rule "POOL" - POOLREAP :: Rule "POOLREAP" - PPUP :: Rule "PPUP" - RUPD :: Rule "RUPD" - SNAP :: Rule "SNAP" - TICK :: Rule "TICK" - TICKF :: Rule "TICKF" - UPEC :: Rule "UPEC" - UTXO :: Rule "UTXO" - UTXOW :: Rule "UTXOW" - GOVCERT :: Rule "GOVCERT" - GOV :: Rule "GOV" - -trc :: - Proof era -> - Rule tag -> - Environment (EraRule tag era) -> - State (EraRule tag era) -> - Signal (EraRule tag era) -> - TRC (EraRule tag era) -trc _proof _rule env state sig = TRC (env, state, sig) - -sts :: - forall era tag. - ( BaseM (EraRule tag era) ~ Reader Globals - , STS (EraRule tag era) - ) => - Proof era -> - Rule tag -> - Environment (EraRule tag era) -> - State (EraRule tag era) -> - Signal (EraRule tag era) -> - Either (NonEmpty (PredicateFailure (EraRule tag era))) (State (EraRule tag era)) -sts proof rule env state sig = - runReader - ( applySTS @(EraRule tag era) @(Reader _) @'Transition - (trc proof rule env state sig) - ) - testGlobals - -stsWithContinuations :: - forall era tag ans. - ( BaseM (EraRule tag era) ~ Reader Globals - , STS (EraRule tag era) - ) => - Proof era -> - Rule tag -> - (NonEmpty (PredicateFailure (EraRule tag era)) -> ans) -> - (State (EraRule tag era) -> ans) -> - Environment (EraRule tag era) -> - State (EraRule tag era) -> - Signal (EraRule tag era) -> - ans -stsWithContinuations proof rule fails succeeds env state sig = - case sts proof rule env state sig of - Left xs -> fails xs - Right x -> succeeds x - --- ==================================== - --- | Translate a Pipe into a DependGraph, given the set --- of variables that have aready been solved for. -pipeToGraph :: Era era => Stage era -> HashSet (Name era) -> TraceM era (DependGraph era) -pipeToGraph (Stage info ps) alreadyDefined = do - simple <- liftCounter rewriteGen ps - orderedNames <- liftTyped $ initialOrder info simple - liftTyped $ - mkDependGraph - (length orderedNames) - [] - alreadyDefined - orderedNames - [] - (Prelude.filter notBefore simple) - --- | Merge a Pipeline into an existing DependGraph, given the set of variables --- that have aready been solved for, to get a larger DependGraph -mergePipeline :: - Era era => Pipeline era -> HashSet (Name era) -> DependGraph era -> TraceM era (DependGraph era) -mergePipeline [] _ graph = pure graph -mergePipeline (pipe : more) defined (DependGraph xs) = do - DependGraph ys <- pipeToGraph pipe defined - let names = concatMap fst ys - mergePipeline more (HashSet.union (HashSet.fromList names) defined) (DependGraph (xs ++ ys)) - --- | Solve a Pipeline to get both an Env and a DependGraph -solvePipeline2 :: Reflect era => Pipeline era -> TraceM era (Env era, DependGraph era) -solvePipeline2 pipes = do - gr@(DependGraph pairs) <- mergePipeline pipes HashSet.empty (DependGraph []) - Subst subst <- liftGen (foldlM' solveOneVar emptySubst pairs) - let isTempV k = notElem '.' k - let sub = Subst (Map.filterWithKey (\k _ -> isTempV k) subst) - env <- liftTyped (substToEnv sub emptyEnv) - pure (env, gr) - -main :: IO () -main = do - let proof = Babbage - ((env, DependGraph zs), _, _) <- - generate (runTraceM 0 emptyEnv (solvePipeline2 (ledgerPipeline def proof))) - let vs = varsOfTarget HashSet.empty dstateT - ok = any (`HashSet.member` vs) . fst - putStrLn (show (DependGraph (filter ok zs))) - goRepl proof env "" - --- ================================================= --- Staging and STS rules - -sts0 :: - (Show ctx, Show state, Show sig, Testable prop) => - Gen ctx -> - (ctx -> Gen state) -> - (ctx -> state -> Gen sig) -> - (ctx -> state -> sig -> state) -> - (state -> state -> prop) -> - Property -sts0 ctx state sig apply test = - forAll - ctx - ( \c -> - forAll - (state c) - ( \s -> - withMaxSuccess - 100 - (forAll (sig c s) (\tx -> test s (apply c s tx))) - ) - ) - --- | When we run a STS rule, the context (env) is a subset of the state, so --- it makes sense to generate state, and then extract the context. -sts1 :: - (Show ctx, Show state, Show sig, Testable prop) => - Gen state -> - (state -> Gen ctx) -> - (state -> ctx -> Gen sig) -> - ((ctx, state, sig) -> state) -> - (state -> state -> prop) -> - Property -sts1 state ctx sig apply test = - forAll - state - ( \s -> - forAll - (ctx s) - ( \c -> - withMaxSuccess - 100 - (forAll (sig s c) (\tx -> test s (apply (c, s, tx)))) - ) - ) - -proofx :: Proof (BabbageEra StandardCrypto) -proofx = Babbage - -genLedgerState :: Gen (Env Babbage, Subst Babbage, LedgerState Babbage) -genLedgerState = do - (env, sub, _graph) <- solvePipeline (ledgerPipeline def proofx) - ledgerstate <- monadTyped $ runTarget env (ledgerStateT proofx) - pure (env, sub, ledgerstate) - -genSig :: Reflect era => Proof era -> (a, Subst era, b) -> p -> Gen (Tx era) -genSig proof (_, sub, _) _ledgerEnv = do - let preds = fmap (substPred sub) (txBodyPreds def proof) - (env0, _sub, _graph) <- solvePipeline [Stage standardOrderInfo preds] - env1 <- monadTyped $ adjustFeeInput env0 - env2 <- errorTyped $ adjustColInput env1 - (TxF _ tx) <- monadTyped (findVar (unVar txterm) env2) - pure tx diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Trace/SimpleTx.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Trace/SimpleTx.hs deleted file mode 100644 index 80f0cb265fd..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Trace/SimpleTx.hs +++ /dev/null @@ -1,388 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Constrained.Trace.SimpleTx where - -import Cardano.Crypto.Signing (SigningKey) -import Cardano.Ledger.Address (Addr (..)) -import Cardano.Ledger.Alonzo.Tx (IsValid (..)) -import Cardano.Ledger.Alonzo.TxWits (TxDats (..)) -import Cardano.Ledger.Alonzo.UTxO (AlonzoScriptsNeeded (..)) -import Cardano.Ledger.BaseTypes (TxIx, inject) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Core ( - Era (..), - EraTx (..), - EraTxBody (..), - EraTxOut (..), - Script, - Tx, - TxBody, - Value, - coinTxOutL, - ) -import Cardano.Ledger.Credential (Credential (..), StakeReference (..)) -import Cardano.Ledger.Hashes (DataHash, ScriptHash) -import Cardano.Ledger.Keys (GenDelegs (..), KeyHash (..), KeyRole (..)) -import Cardano.Ledger.Mary.Value (MaryValue (..), MultiAsset (..), PolicyID (..)) -import Cardano.Ledger.Plutus (ExUnits (..)) -import Cardano.Ledger.Plutus.Data (Data (..)) -import Cardano.Ledger.Shelley.LedgerState (LedgerState (..)) -import Cardano.Ledger.Shelley.Rules (LedgerEnv (..)) -import Cardano.Ledger.Shelley.UTxO (ShelleyScriptsNeeded (..)) -import Cardano.Ledger.UTxO (EraUTxO (..), UTxO (..), getScriptsNeeded) -import Cardano.Ledger.Val (Val (..)) -import Data.Foldable (toList) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Sequence.Strict (StrictSeq (Empty, (:<|))) -import Data.Set (Set) -import qualified Data.Set as Set -import Debug.Trace -import Lens.Micro -import qualified PlutusLedgerApi.V1 as PV1 -import Test.Cardano.Ledger.Constrained.Ast (runTarget, runTerm) -import Test.Cardano.Ledger.Constrained.Classes ( - PParamsF (..), - PlutusPointerF (..), - PlutusPurposeF (..), - ScriptF (..), - TxBodyF (..), - TxCertF (..), - TxF (..), - TxOutF (..), - liftUTxO, - unScriptF, - ) -import Test.Cardano.Ledger.Constrained.Env (Env) -import Test.Cardano.Ledger.Constrained.Monad (Typed) -import Test.Cardano.Ledger.Constrained.Preds.Tx ( - adjustNeededByRefScripts, - allValid, - bootWitsT, - computeFinalFee, - getPlutusDataHashes, - getRdmrPtrs, - hashBody, - makeKeyWitness, - minusMultiValue, - necessaryKeyHashes, - sufficientKeyHashes, - ) -import Test.Cardano.Ledger.Constrained.Trace.TraceMonad ( - TraceM, - fromSetTerm, - getTerm, - liftGen, - reqSig, - ) -import qualified Test.Cardano.Ledger.Constrained.Trace.TraceMonad as TraceMonad (refInputs) -import Test.Cardano.Ledger.Constrained.Vars -import Test.Cardano.Ledger.Core.KeyPair (KeyPair (..)) -import Test.Cardano.Ledger.Generic.Fields (TxBodyField (..), TxField (..), WitnessesField (..)) -import Test.Cardano.Ledger.Generic.GenState (mkRedeemers) -import Test.Cardano.Ledger.Generic.Proof ( - Proof (..), - Reflect (..), - UTxOWit (..), - ValueWit (..), - whichUTxO, - whichValue, - ) -import Test.Cardano.Ledger.Generic.Updaters (merge, newTx, newTxBody, newWitnesses) -import Test.QuickCheck (discard, shuffle) - --- =================================================== - --- | Given an (Env era) construct the pair the the LendgerEnv and the LedgerState -getSTSLedgerEnv :: - Reflect era => Proof era -> TxIx -> Env era -> Typed (LedgerEnv era, LedgerState era) -getSTSLedgerEnv proof txIx env = do - ledgerstate <- runTarget env (ledgerStateT proof) - slot <- runTerm env currentSlot - (PParamsF _ pp) <- runTerm env (pparams proof) - accntState <- runTarget env accountStateT - pure $ (LedgerEnv slot txIx pp accntState, ledgerstate) - --- ==================================================================== --- Picking things that have no Plutus Scripts inside. To make very --- simple Transactions we need to avoid plutus scripts as they require --- Collateral inputs and hashes that ensure prootocl versions match. --- ==================================================================== - --- | Does a TxOut have only Non-Plutus Scripts. Non-Plutus status is measured by non-membership --- in the Map of script hashes of all Plutus scripts. -plutusFree :: forall era a. Reflect era => Map (ScriptHash (EraCrypto era)) a -> TxOut era -> Bool -plutusFree plutusmap txout = - plutusFreeAddr plutusmap (txout ^. addrTxOutL) - && plutusFreeValue (reify @era) plutusmap (txout ^. valueTxOutL) - -plutusFreeAddr :: Map (ScriptHash c) a -> Addr c -> Bool -plutusFreeAddr plutusmap addr = case addr of - Addr _ (ScriptHashObj h1) (StakeRefBase (ScriptHashObj h2)) -> Map.notMember h1 plutusmap && Map.notMember h2 plutusmap - Addr _ (ScriptHashObj h1) _ -> Map.notMember h1 plutusmap - Addr _ _ (StakeRefBase (ScriptHashObj h2)) -> Map.notMember h2 plutusmap - _ -> True - -plutusFreeValue :: Proof era -> Map (ScriptHash (EraCrypto era)) a -> Value era -> Bool -plutusFreeValue proof plutusmap v = case (whichValue proof, v) of - (ValueShelleyToAllegra, _) -> True - (ValueMaryToConway, MaryValue _ (MultiAsset m)) -> all (plutusFreePolicyID plutusmap) (Map.keysSet m) - -plutusFreePolicyID :: Map (ScriptHash c) a -> PolicyID c -> Bool -plutusFreePolicyID plutusmap (PolicyID h) = Map.notMember h plutusmap - -plutusFreeCredential :: Map (ScriptHash c) a -> Credential kr c -> Bool -plutusFreeCredential _ (KeyHashObj _) = True -plutusFreeCredential plutusmap (ScriptHashObj h) = Map.notMember h plutusmap - --- ==================================================================== --- Code to generate simple, but valid Transactions --- ==================================================================== - --- | Make a simple TxBody with 1 input and 1 output. We estimate that such a TxBody will lead to a fee --- of less than 'feeEstimate'. So only pick inputs from the utxo that have at least that much coin. Balance the --- Coin in the TxOut with the feeEstimate and the actual Coin in the UTxO output that corresponds to the input. --- Only works if the internal Env of the TraceM monad stores variables capable of creating the LedgerState --- See 'genLedgerStateEnv' for an example of how to do that. -simpleTxBody :: Reflect era => Proof era -> Coin -> TraceM era [TxBodyField era] -simpleTxBody proof feeEstimate = do - plutusmap <- getTerm plutusUniv - let ok (_, TxOutF _ v) = (v ^. coinTxOutL) >= feeEstimate && plutusFree plutusmap v - utxopairs <- (filter ok . Map.toList) <$> getTerm (utxo proof) - (input, TxOutF _ out) <- do - zs <- liftGen (shuffle utxopairs) - case zs of - [] -> - trace - ( "There are no entries in the UTxO that are big enough for the feeEstimate: " - ++ show feeEstimate - ++ " Discard" - ) - discard - (x : _) -> pure x - let inputCoin = out ^. coinTxOutL - addr <- fromSetTerm addrUniv - vldt <- getTerm validityInterval - let output = mkBasicTxOut addr (inject (inputCoin <-> feeEstimate)) - pure - [ Inputs' [input] - , Outputs' [output] - , Txfee feeEstimate - , Vldt vldt - , Mint (liftMultiAsset (minusMultiValue proof (output ^. valueTxOutL) (out ^. valueTxOutL))) - ] - --- | Generate a (Tx era) from a simple (TxBody era), with 1 input and 1 output. --- Apply the "finishing" function 'completeTxBody' to make the result a valid Tx. --- Only works if the internal Env of the TraceM monad stores variables capable of --- creating the LedgerState. The parameter 'maxFeeEstimate' has to be chosen by --- experience. The fee for most simpleTx as less than 60000. But in at least one --- case we have seen as high as 108407. If that case happens we will discard. --- A large fee is rare because it is caused by many scripts and fees that need large witnesses, -simpleTx :: Reflect era => Proof era -> Coin -> TraceM era (Tx era) -simpleTx proof maxFeeEstimate = do - fields <- simpleTxBody proof maxFeeEstimate - let txb = newTxBody proof fields - completeTxBody proof maxFeeEstimate txb - --- ==================================================================================== --- Once we have a TxBody, we need to make a complete Tx, By filling in Missing pieces. --- ==================================================================================== - --- | Complete a TxBody, by running a fix-point computation that --- 1) Adds the appropriate witnesses. --- 2) Adjusts the the first output to pay the estimated fee. --- Run the computation until both the fee and the hash of the TxBody reach a fixpoint. --- Only works if the internal Env of the TraceM monad stores variables capable of creating the LedgerState -completeTxBody :: Reflect era => Proof era -> Coin -> TxBody era -> TraceM era (Tx era) -completeTxBody proof maxFeeEstimate txBody = do - u <- getTerm (utxo proof) - scriptuniv <- getTerm (allScriptUniv proof) - plutusuniv <- getTerm plutusUniv - byronuniv <- getTerm byronAddrUniv - datauniv <- getTerm dataUniv - gd <- getTerm genDelegs - pp <- getTerm (pparams proof) - keymapuniv <- getTerm keymapUniv - -- compute the inital inputs to the fix-point computation - let hash1 = hashBody proof txBody - tx = - addWitnesses - proof - (fmap unScriptF scriptuniv) - plutusuniv - byronuniv - keymapuniv - datauniv - txBody - (liftUTxO u) - (GenDelegs gd) - initialfee = computeFinalFee pp (TxF proof tx) u - let loop _ _ fee _ | fee >= maxFeeEstimate = trace ("LOOP: fee >= maxFeeEstimate, Discard") $ discard - loop count txx fee hash = do - let adjustedtx = adjustTxForFee proof fee txx - txb = adjustedtx ^. bodyTxL - hash2 = hashBody proof txb - completedtx = - addWitnesses - proof - (fmap unScriptF scriptuniv) - plutusuniv - byronuniv - keymapuniv - datauniv - txb - (liftUTxO u) - (GenDelegs gd) - newfee = computeFinalFee pp (TxF proof completedtx) u - if (fee == newfee) && (hash == hash2) - then pure completedtx - else - if count > (0 :: Int) - then loop (count - 1) completedtx newfee hash2 - else trace ("LOOP: count <= 0, fee is osccilating, Discard") $ discard - loop 10 tx initialfee hash1 - --- ======================================================================================== - --- | Add witnesses to the TxBody to construct a Tx with the appropriate witnesses. --- This is a compilcated function, but it should be applicable to ANY Tx generated using --- the Universes. -addWitnesses :: - forall era. - Reflect era => - Proof era -> - Map (ScriptHash (EraCrypto era)) (Script era) -> - Map (ScriptHash (EraCrypto era)) (IsValid, ScriptF era) -> - Map (KeyHash 'Payment (EraCrypto era)) (Addr (EraCrypto era), SigningKey) -> - Map (KeyHash 'Witness (EraCrypto era)) (KeyPair 'Witness (EraCrypto era)) -> - Map (DataHash (EraCrypto era)) (Data era) -> - TxBody era -> - UTxO era -> - GenDelegs (EraCrypto era) -> - Tx era -addWitnesses proof scriptUniv plutusuniv byronuniv keymapuniv datauniv txb ut gd = tx - where - needed = getScriptsNeeded ut txb - neededWits, scriptwits :: Map (ScriptHash (EraCrypto era)) (Script era) - plutusValids :: [IsValid] - rptrs :: Set (PlutusPointerF era) - dataw :: Map (DataHash (EraCrypto era)) (Data era) - (scriptwits, neededWits, plutusValids, rptrs, dataw) = case whichUTxO proof of - UTxOShelleyToMary -> (witss, witss, [], Set.empty, Map.empty) - where - ShelleyScriptsNeeded setneed = needed - witss = Map.restrictKeys scriptUniv setneed - UTxOAlonzoToConway -> - let AlonzoScriptsNeeded xs = needed - xs' = [(PlutusPurposeF proof p, d) | (p, d) <- xs] - neededHashset = Set.fromList (fmap snd xs) - refAdjusted = - adjustNeededByRefScripts - proof - (txb ^. inputsTxBodyL) - (TraceMonad.refInputs proof txb) - (fmap (TxOutF proof) (unUTxO ut)) - neededHashset - validities = fmap fst (Map.elems (Map.restrictKeys plutusuniv neededHashset)) - in ( Map.restrictKeys scriptUniv refAdjusted - , Map.restrictKeys scriptUniv neededHashset - , validities - , getRdmrPtrs xs' plutusuniv - , Map.restrictKeys - datauniv - ( getPlutusDataHashes - (fmap (TxOutF proof) (unUTxO ut)) - (TxBodyF proof txb) - (Map.map (ScriptF proof) scriptUniv) - ) - ) - sufficient = - sufficientKeyHashes - proof - (fmap (ScriptF proof) neededWits) - (toList (fmap (TxCertF proof) (txb ^. certsTxBodyL))) - (unGenDelegs gd) - necessaryKH = - necessaryKeyHashes - (TxBodyF proof txb) - (fmap (TxOutF proof) (unUTxO ut)) - (unGenDelegs gd) - (reqSig proof txb) - keywits = - makeKeyWitness - (TxBodyF proof txb) - necessaryKH - sufficient - keymapuniv - (fmap (ScriptF proof) scriptwits) - (unGenDelegs gd) - byronuniv - bootwits = - bootWitsT - proof - (Map.restrictKeys (fmap (TxOutF proof) (unUTxO ut)) (txb ^. inputsTxBodyL)) - (TxBodyF proof txb) - byronuniv - redeem = - Set.foldl' - (\ans (PlutusPointerF _ x) -> (x, (Data @era (PV1.I 1), ExUnits 3 3)) : ans) - -- It doesn't actuallly matter what the Data is, and the ExUnits only need to be small - -- as maxTxExUnits is usually something big like (ExUnits mem=1217 data=3257) - [] - rptrs - wits = - newWitnesses - merge - proof - [ AddrWits keywits - , BootWits bootwits - , ScriptWits scriptwits - , DataWits (TxDats dataw) - , RdmrWits (mkRedeemers proof redeem) - ] - tx = - newTx - proof - [ Body txb - , TxWits wits - , -- , AuxData' (fixM auxs) - Valid (allValid plutusValids) - ] - --- ======================================================================= - --- | adjust a Tx for the fee, by setting the fee to the correct value then --- moving the excess to the outputs -adjustTxForFee :: EraTx era => Proof era -> Coin -> Tx era -> Tx era -adjustTxForFee _proof actualfee tx = - tx - & feeCoinL - .~ actualfee - & firstOutputCoinL - .~ (outputCoin <+> (currentfee <-> actualfee)) - where - currentfee = tx ^. feeCoinL - outputCoin = tx ^. firstOutputCoinL - -feeCoinL :: EraTx era => Lens' (Tx era) Coin -feeCoinL = bodyTxL . feeTxBodyL - -firstOutputCoinL :: EraTx era => Lens' (Tx era) Coin -firstOutputCoinL = bodyTxL . outputsTxBodyL . strictSeqHeadL . coinTxOutL - -strictSeqHeadL :: Lens' (StrictSeq a) a -strictSeqHeadL = - lens - gethead - ( \x h -> case x of - (_ :<| xs) -> h :<| xs - Empty -> h :<| Empty - ) - where - gethead (x :<| _) = x - gethead _ = error "Empty sequence in strictSeqHeadL" diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Trace/Tests.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Trace/Tests.hs deleted file mode 100644 index a8c97d75a79..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Trace/Tests.hs +++ /dev/null @@ -1,192 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE TypeOperators #-} - -module Test.Cardano.Ledger.Constrained.Trace.Tests -where - -import Cardano.Ledger.Babbage.TxOut () -import Cardano.Ledger.BaseTypes (TxIx) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Core (EraRule, EraTx (..), EraTxBody (..), Tx) -import Cardano.Ledger.Plutus.Data () -import Cardano.Ledger.Shelley.LedgerState (LedgerState (..)) -import Cardano.Ledger.Shelley.Rules (LedgerEnv (..)) -import Control.State.Transition.Extended (STS (..), TRC (..)) -import Data.Foldable (toList) -import Lens.Micro ((^.)) -import System.IO (hSetEncoding, stdout, utf8) -import Test.Cardano.Ledger.Constrained.Ast (runTarget) -import Test.Cardano.Ledger.Constrained.Classes (TxF (..), TxOutF (..)) -import Test.Cardano.Ledger.Constrained.Env (Env (..), emptyEnv) -import Test.Cardano.Ledger.Constrained.Monad (Typed) -import Test.Cardano.Ledger.Constrained.Preds.Repl (goRepl) -import Test.Cardano.Ledger.Constrained.Trace.Actions (feesAction, inputsAction, outputsAction) -import Test.Cardano.Ledger.Constrained.Trace.DrepCertTx (drepTree) -import Test.Cardano.Ledger.Constrained.Trace.SimpleTx (getSTSLedgerEnv, simpleTx) -import Test.Cardano.Ledger.Constrained.Trace.TraceMonad ( - TraceM, - TraceStep (..), - beforeAfterTrace, - fstTriple, - genLedgerStateEnv, - getEnv, - getTarget, - liftGen, - liftTyped, - runTraceM, - setVar, - toGen, - ) -import Test.Cardano.Ledger.Constrained.Vars hiding (drepDeposit) -import Test.Cardano.Ledger.Generic.PrettyCore (pcTx) -import Test.Cardano.Ledger.Generic.Proof hiding (LEDGER, lift) -import Test.Cardano.Ledger.Generic.TxGen (applySTSByProof) -import Test.QuickCheck ( - Arbitrary (..), - Property, - conjoin, - counterexample, - whenFail, - withMaxSuccess, - (===), - ) -import Test.Tasty -import Test.Tasty.QuickCheck (testProperty) - --- ======================================================================= --- Test that simpleTx and the 'actions' actually agree with the applySTS - --- | Construct and run one simpleTx, and run it through applySTS --- Check that the computed LedgerState is the same as the expected LedgerState --- Computed by using 'inputsAction' , 'outputsAction' , and 'feesAction' -genAndRunSimpleTx :: TraceM (ConwayEra StandardCrypto) Property -genAndRunSimpleTx = do - let proof = Conway - _ <- genLedgerStateEnv proof - - -- Compute the TRC before we make the Tx, because that adds things to the Env - txIx <- liftGen arbitrary - env0 <- getEnv - (lenv, ledgerstate) <- liftTyped $ getSTSLedgerEnv proof txIx env0 - - -- Now generate a simpleTx, and store it in the Env - -- apply the changes we expect this Tx to make, and save the result. - tx <- simpleTx proof (Coin 70000) - setVar txterm (TxF proof tx) - let txb = tx ^. bodyTxL - feeCoin = txb ^. feeTxBodyL - inputsAction proof (txb ^. inputsTxBodyL) - outputsAction proof txb (fmap (TxOutF proof) (toList (txb ^. outputsTxBodyL))) - feesAction feeCoin - expectedLedgerState <- getTarget (ledgerStateT proof) - env1 <- getEnv - -- Now compute the env we compute using the STS - pure $ ledgerStateEqProp proof env1 expectedLedgerState lenv ledgerstate tx - --- | Create a Property by testing that applying the STS "LEDGER" rule, succeeds and --- returns the expected LedgerState. If it fails, print out the failures and --- drop into the Repl, so that users can explore the inputs. -ledgerStateEqProp :: - ( Signal (EraRule "LEDGER" era) ~ Tx era - , Reflect era - , Show (State (EraRule "LEDGER" era)) - , Show (PredicateFailure (EraRule "LEDGER" era)) - , Eq (State (EraRule "LEDGER" era)) - ) => - Proof era -> - Env era -> - State (EraRule "LEDGER" era) -> - Environment (EraRule "LEDGER" era) -> - State (EraRule "LEDGER" era) -> - Signal (EraRule "LEDGER" era) -> - Property -ledgerStateEqProp proof env1 expectedLedgerState ledgerenv ledgerstate tx = - case applySTSByProof proof (TRC (ledgerenv, ledgerstate, tx)) of - Right ledgerState' -> - ledgerState' === {- `ediffEq` -} expectedLedgerState - Left errs -> - let errsLines = "" : "applySTS fails" : map show (toList errs) - in counterexample - (unlines (errsLines ++ ["Tx =", show (pcTx proof tx)])) - ( whenFail - (putStrLn (unlines errsLines) >> goRepl proof env1 "") - False - ) - -main1 :: IO () -main1 = do - hSetEncoding stdout utf8 - defaultMain $ testProperty "TraceMain" (withMaxSuccess 50 (toGen genAndRunSimpleTx)) - --- ================================================================= --- Show that each step in a trace computes the right LedgerState - -runOne :: - ( Environment (EraRule "LEDGER" era) ~ LedgerEnv era - , State (EraRule "LEDGER" era) ~ LedgerState era - , Signal (EraRule "LEDGER" era) ~ Tx era - , Show (PredicateFailure (EraRule "LEDGER" era)) - , Reflect era - ) => - Proof era -> - TxIx -> - TraceStep era (Signal (EraRule "LEDGER" era)) -> - Typed Property -runOne proof txIx (TraceStep beforeEnv afterEnv tx) = do - (lenv, ledgerstate) <- getSTSLedgerEnv proof txIx beforeEnv - expectedLedgerState <- runTarget afterEnv (ledgerStateT proof) - pure $ ledgerStateEqProp proof afterEnv expectedLedgerState lenv ledgerstate tx - -oneTx :: Reflect era => Proof era -> Int -> TraceM era (Tx era) -oneTx proof _n = do - !tx <- simpleTx proof (Coin 70000) - setVar txterm (TxF proof tx) - let !txb = tx ^. bodyTxL - !feeCoin = txb ^. feeTxBodyL - inputsAction proof (txb ^. inputsTxBodyL) - outputsAction proof txb (fmap (TxOutF proof) (toList (txb ^. outputsTxBodyL))) - feesAction feeCoin - pure tx - -testTrace :: - ( Environment (EraRule "LEDGER" era) ~ LedgerEnv era - , State (EraRule "LEDGER" era) ~ LedgerState era - , Signal (EraRule "LEDGER" era) ~ Tx era - , Reflect era - , Show (PredicateFailure (EraRule "LEDGER" era)) - ) => - Proof era -> - Int -> - TraceM era Property -testTrace proof tracelen = do - !_ <- genLedgerStateEnv proof - !txIx <- liftGen arbitrary - !pairs <- beforeAfterTrace tracelen (oneTx proof) - conjoin <$> mapM (\ !x -> liftTyped (runOne proof txIx x)) pairs - -conwayTrace :: TestTree -conwayTrace = - testProperty - ("Testing each Tx in a Conway trace of length=" ++ show tracelen ++ " passes applySTS.") - (withMaxSuccess n (fstTriple <$> (runTraceM 0 emptyEnv (testTrace Conway tracelen)))) - where - tracelen = 100 - n = 10 - -conwayTxwithDRepCertsTraceTests :: TestTree -conwayTxwithDRepCertsTraceTests = - testGroup - "Tx with DRep Certs trace tests" - [ conwayTrace - , drepTree - ] - -main :: IO () -main = do - hSetEncoding stdout utf8 - defaultMain conwayTxwithDRepCertsTraceTests diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Trace/TraceMonad.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Trace/TraceMonad.hs deleted file mode 100644 index df7933c85b4..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Trace/TraceMonad.hs +++ /dev/null @@ -1,562 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Test.Cardano.Ledger.Constrained.Trace.TraceMonad where - -import Cardano.Ledger.BaseTypes (Globals, SlotNo (..)) -import Cardano.Ledger.Conway.Core -import Cardano.Ledger.Conway.Governance ( - ConwayEraGov, - DRepPulser (..), - DRepPulsingState (..), - PulsingSnapshot (..), - newEpochStateDRepPulsingStateL, - ) -import Cardano.Ledger.Keys (KeyHash (..), KeyRole (..)) -import Cardano.Ledger.Shelley.LedgerState (NewEpochState (..)) -import Cardano.Ledger.Shelley.Rules (runIdentity) -import Cardano.Ledger.TxIn (TxIn) -import Control.Monad.Trans (lift) -import Control.Monad.Trans.Except -import Control.Monad.Trans.Reader (runReaderT) -import Control.Monad.Trans.State.Strict hiding (State) -import Control.State.Transition.Extended (IRC (..), STS, TRC (..)) -import Data.Default.Class (Default (def)) -import Data.Foldable (toList) -import qualified Data.Foldable as Fold (toList) -import Data.Function (on) -import qualified Data.HashSet as HashSet -import qualified Data.List.NonEmpty as NE -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Pulse (foldlM') -import Data.Sequence.Strict (StrictSeq) -import qualified Data.Sequence.Strict as SS (fromList) -import Data.Set (Set) -import qualified Data.Set as Set -import Data.Vector (Vector, fromList, (!)) -import qualified Data.Vector as Vector (length) -import Data.Word (Word64) -import Lens.Micro -import Test.Cardano.Ledger.Constrained.Ast ( - Pred (..), - RootTarget (..), - Subst (..), - Term (..), - emptySubst, - runTarget, - runTerm, - substPredWithVarTest, - substToEnv, - ) -import Test.Cardano.Ledger.Constrained.Combinators (genFromMap, itemFromSet, suchThatErr) -import Test.Cardano.Ledger.Constrained.Env -import Test.Cardano.Ledger.Constrained.Monad (Typed (..), runTyped) -import Test.Cardano.Ledger.Constrained.Preds.CertState ( - dstateStage, - pstateStage, - vstateStage, - ) -import Test.Cardano.Ledger.Constrained.Preds.LedgerState (ledgerStateStage) -import Test.Cardano.Ledger.Constrained.Preds.NewEpochState (epochStateStage, newEpochStateStage) -import Test.Cardano.Ledger.Constrained.Preds.PParams (pParamsStage) -import Test.Cardano.Ledger.Constrained.Preds.UTxO (utxoStage) -import Test.Cardano.Ledger.Constrained.Preds.Universes (universeStage) -import Test.Cardano.Ledger.Constrained.Rewrite ( - DependGraph (..), - OrderInfo, - initialOrder, - mkDependGraph, - notBefore, - rewriteGen, - ) -import Test.Cardano.Ledger.Constrained.Solver (solveOneVar) -import Test.Cardano.Ledger.Constrained.Vars (currentSlot, newEpochStateT) -import Test.Cardano.Ledger.Generic.MockChain (MOCKCHAIN, MockBlock (..), MockChainState (..)) -import Test.Cardano.Ledger.Generic.PrettyCore ( - pcSlotNo, - pcTx, - ppList, - ppPair, - ppStrictSeq, - summaryMapCompact, - ) -import Test.Cardano.Ledger.Generic.Proof hiding (lift) -import Test.Cardano.Ledger.Generic.Trace (chooseIssuer) -import Test.Cardano.Ledger.Shelley.Utils (applySTSTest, runShelleyBase, testGlobals) -import Test.Control.State.Transition.Trace ( - Trace (..), - TraceOrder (OldestFirst), - lastState, - traceInitState, - traceSignals, - traceStates, - ) -import Test.Control.State.Transition.Trace.Generator.QuickCheck ( - HasTrace (..), - shrinkTrace, - traceFromInitState, - ) -import Test.Tasty.QuickCheck - --- ================================ - -data TraceState era = TraceState !Int !(Env era) - -newtype TraceM era x = TraceM (StateT (TraceState era) (ExceptT [String] Gen) x) - deriving (Functor, Applicative, Monad) - -runTraceM :: Int -> Env era -> TraceM era a -> Gen (a, Int, Env era) -runTraceM n env (TraceM x) = do - y <- runExceptT (runStateT x (TraceState n env)) - case y of - Left xs -> error (unlines xs) - Right (z, TraceState i s) -> pure (z, i, s) - -fstTriple :: (a, b, c) -> a -fstTriple = (\(p, _, _) -> p) - -toGen :: TraceM era a -> Gen a -toGen ax = fstTriple <$> runTraceM 0 emptyEnv ax - -failTrace :: [String] -> TraceM era a -failTrace ss = TraceM (lift (throwE ss)) - -instance MonadFail (TraceM era) where - fail err = failTrace [err] - --- ============================== --- Lift a (Type era a) to (TraceM era a) - -liftTyped :: Typed a -> TraceM era a -liftTyped x = do - case runTyped x of - Left ss -> failTrace ss - Right a -> pure a - -liftGen :: Gen a -> TraceM era a -liftGen g = TraceM (lift (lift g)) - -getEnv :: TraceM era (Env era) -getEnv = TraceM (state (\s@(TraceState _ !e) -> (e, s))) - -getCount :: TraceM era Int -getCount = TraceM (state (\s@(TraceState !i _) -> (i, s))) - -putEnv :: Env era -> TraceM era (Env era) -putEnv env = TraceM (state (\(TraceState i _) -> (env, TraceState i env))) - -putCount :: Int -> TraceM era () -putCount i = TraceM (state (\(TraceState _ !e) -> ((), TraceState i e))) - -liftCounter :: ((Int, a) -> Gen (Int, b)) -> a -> TraceM era b -liftCounter f a = do - !i <- getCount - (!j, !b) <- liftGen (f (i, a)) - putCount j - pure b - --- ======================== - --- | Lookup the value of a Term in the Env internal to TraceM. -getTerm :: Term era a -> TraceM era a -getTerm term = do - env <- getEnv - case runTyped (runTerm env term) of - Right a -> pure a - Left ss -> failTrace (ss ++ ["in call to (getTerm " ++ show term ++ ")"]) - -getTarget :: RootTarget era r a -> TraceM era a -getTarget tar = do - env <- getEnv - case runTyped (runTarget env tar) of - Right a -> pure a - Left ss -> failTrace (ss ++ ["in call to (getTarget " ++ show tar ++ ")"]) - --- | Pick a random (key,value) pair from a Map -fromMapTerm :: Term era (Map k a) -> TraceM era (k, a) -fromMapTerm term = do - u <- getTerm term - liftGen $ genFromMap ["fromMapTerm " ++ show term] u - --- | Pick a random (key,value) pair from a Map such that the (key,value) pair meets predicate 'p' -fromMapTermSuchThat :: Term era (Map k a) -> ((k, a) -> Bool) -> TraceM era (k, a) -fromMapTermSuchThat term p = do - u <- getTerm term - let n = Map.size u - liftGen $ - suchThatErr - ["suchThatErr call (fromMapTermSuchThat " ++ show term ++ " size = " ++ show n] - (genFromMap ["fromMapTerm " ++ show term] u) - p - --- | Pick a random element from a Set -fromSetTerm :: Term era (Set b) -> TraceM era b -fromSetTerm term = do - u <- getTerm term - liftGen (fst <$> (itemFromSet ["fromSetTerm " ++ show term] u)) - --- | Update the Env internal to TraceM. -update :: (Env era -> TraceM era (Env era)) -> TraceM era () -update f = getEnv >>= f >>= putEnv >> pure () - --- | Update the value of one variable stored in the Env internal to TraceM. -updateVar :: Term era t -> (t -> t) -> TraceM era () -updateVar term@(Var v) adjust = TraceM $ do - TraceState i env <- get - case runTyped (runTerm env term) of - Right valA -> put (TraceState i (storeVar v (adjust valA) env)) - Left ss -> lift (throwE (ss ++ ["in call to 'updateVar'"])) -updateVar term _ = failTrace ["Non Var term in call to 'updateVar'", show term] - -setVar :: Term era t -> t -> TraceM era () -setVar (Var v) t = TraceM $ do - TraceState i env <- get - put (TraceState i (storeVar v t env)) -setVar term _ = failTrace ["Non Var term in call to 'setVar'", show term] - --- ============================================================================ --- A few helper functions that need to do different things in different Eras. - -refInputs :: Proof era -> TxBody era -> Set (TxIn (EraCrypto era)) -refInputs Shelley _ = Set.empty -refInputs Allegra _ = Set.empty -refInputs Mary _ = Set.empty -refInputs Alonzo _ = Set.empty -refInputs Babbage txb = txb ^. referenceInputsTxBodyL -refInputs Conway txb = txb ^. referenceInputsTxBodyL - -reqSig :: Proof era -> TxBody era -> Set (KeyHash 'Witness (EraCrypto era)) -reqSig Shelley _ = Set.empty -reqSig Allegra _ = Set.empty -reqSig Mary _ = Set.empty -reqSig Alonzo _ = Set.empty -reqSig Babbage txb = txb ^. reqSignerHashesTxBodyL -reqSig Conway txb = txb ^. reqSignerHashesTxBodyL - --- ======================================================================================= --- Code to run the standard [Pred era] found in the Preds directory in the TraceM monad --- First code to compile in the TraceM monad, and then use the compiled version to run --- the solver in the TraceM monad - --- | Compile [Pred era] in the TraceM monad --- First: Apply the Rewriter --- Second: appy the Subst --- Third: Construct the DependGraph -compileTraceWithSubst :: - Era era => OrderInfo -> Subst era -> [Pred era] -> TraceM era (DependGraph era) -compileTraceWithSubst info subst0 cs0 = do - simple <- liftCounter rewriteGen cs0 - graph <- liftTyped $ do - let instanPreds = fmap (substPredWithVarTest subst0) simple - orderedNames <- initialOrder info instanPreds - mkDependGraph (length orderedNames) [] HashSet.empty orderedNames [] $ - Prelude.filter notBefore instanPreds - pure graph - --- | Use the tool chain to generate a Subst from a list of Pred, in the TraceM monad. -toolChainTrace :: - Era era => Proof era -> OrderInfo -> [Pred era] -> Subst era -> TraceM era (Subst era) -toolChainTrace _proof order cs subst0 = do - (DependGraph pairs) <- compileTraceWithSubst order subst0 cs - Subst subst <- liftGen (foldlM' solveOneVar subst0 pairs) - let isTempV k = not (elem '.' k) - pure $ (Subst (Map.filterWithKey (\k _ -> isTempV k) subst)) - --- ===================================================================== --- Lift some [Pred era] into TraceM (monadic) (Subst era) transformers --- Create tool (TraceM era (Subst era)) functions that can be chained together - -universeTrace :: Reflect era => Proof era -> Subst era -> TraceM era (Subst era) -universeTrace proof subst = liftGen (universeStage def proof subst) - -pparamsTrace :: Reflect era => Proof era -> Subst era -> TraceM era (Subst era) -pparamsTrace proof subst = liftGen (pParamsStage proof subst) - -utxoTrace :: Reflect era => Proof era -> Subst era -> TraceM era (Subst era) -utxoTrace proof subst = liftGen (utxoStage def proof subst) - -pstateTrace :: Reflect era => Proof era -> Subst era -> TraceM era (Subst era) -pstateTrace proof subst = liftGen (pstateStage proof subst) - -vstateTrace :: Reflect era => Proof era -> Subst era -> TraceM era (Subst era) -vstateTrace proof subst = liftGen (vstateStage proof subst) - -dstateTrace :: Reflect era => Proof era -> Subst era -> TraceM era (Subst era) -dstateTrace proof subst = liftGen (dstateStage proof subst) - -ledgerStateTrace :: Reflect era => Proof era -> Subst era -> TraceM era (Subst era) -ledgerStateTrace proof subst = liftGen (ledgerStateStage def proof subst) - -epochStateTrace :: Reflect era => Proof era -> Subst era -> TraceM era (Subst era) -epochStateTrace proof subst = liftGen (epochStateStage proof subst) - -newEpochStateTrace :: Reflect era => Proof era -> Subst era -> TraceM era (Subst era) -newEpochStateTrace proof subst = liftGen (newEpochStateStage proof subst) - --- ============================================================== --- Code to make Traces - --- | Iterate a function 'make' to make a trace of length 'n'. Each call to 'make' gets the --- most recent value of the Env internal to TraceM. The function 'make' is --- supposed to compute 'a', and (possibly) update the Env internal to TraceM. -makeTrace :: Int -> TraceM era a -> TraceM era [(Env era, a)] -makeTrace 0 _ = pure [] -makeTrace n make = do - env0 <- getEnv - a <- make - xs <- makeTrace (n - 1) make - pure ((env0, a) : xs) - -data TraceStep era a = TraceStep {tsBefore :: !(Env era), tsAfter :: !(Env era), tsA :: !a} - -beforeAfterTrace :: Int -> (Int -> TraceM era a) -> TraceM era [TraceStep era a] -beforeAfterTrace 0 _ = pure [] -beforeAfterTrace !n make = do - !beforeEnv <- getEnv - !a <- make n - !afterEnv <- getEnv - xs <- beforeAfterTrace (n - 1) make - let !ans = TraceStep {tsBefore = beforeEnv, tsAfter = afterEnv, tsA = a} : xs - pure ans - --- ===================================================================== - --- | Generate an Env that contains the pieces of the LedgerState --- by chaining smaller pieces together. -genLedgerStateEnv :: Reflect era => Proof era -> TraceM era (Env era) -genLedgerStateEnv proof = do - subst <- - pure emptySubst - >>= pparamsTrace proof - >>= universeTrace proof - >>= utxoTrace proof - >>= vstateTrace proof - >>= pstateTrace proof - >>= dstateTrace proof - >>= ledgerStateTrace proof - env <- liftTyped (substToEnv subst emptyEnv) - putEnv env - --- | Generate an Env that contains the pieces of the NewEpochState --- by chaining smaller pieces together. -genNewEpochStateEnv :: Reflect era => Proof era -> TraceM era (Env era) -genNewEpochStateEnv proof = do - subst <- - pure emptySubst - >>= pparamsTrace proof - >>= universeTrace proof - >>= utxoTrace proof - >>= vstateTrace proof - >>= pstateTrace proof - >>= dstateTrace proof - >>= ledgerStateTrace proof - >>= epochStateTrace proof - >>= newEpochStateTrace proof - env <- liftTyped (substToEnv subst emptyEnv) - putEnv env - --- ====================================================================== --- Using traces by running the MOCKCHAIN STS instance --- ====================================================================== - --- | How we encode a trace, when we run STS of (MOCKCHAIN era) -data PredGen era = PredGen (Vector (StrictSeq (Tx era), SlotNo)) (Env era) - -instance Reflect era => Show (PredGen era) where - show (PredGen xs _) = show (ppList (ppPair (ppStrictSeq (pcTx reify)) (pcSlotNo)) (toList xs)) - -instance - ( STS (MOCKCHAIN era) - , Reflect era - ) => - HasTrace (MOCKCHAIN era) (PredGen era) - where - type BaseEnv (MOCKCHAIN era) = Globals - - interpretSTS globals act = runIdentity $ runReaderT act globals - - envGen _gstate = pure () - - sigGen (PredGen txss _) () mcs@(MockChainState newepoch _ (SlotNo lastSlot) count) = do - let NewEpochState epochnum _ _ _epochstate _ pooldistr _ = newepoch - issuerkey <- chooseIssuer epochnum lastSlot count pooldistr - let (txs, nextSlotNo) = txss ! count - -- Assmble it into a MockBlock - let mockblock = MockBlock issuerkey nextSlotNo txs - -- Run the STS Rules for MOCKCHAIN with generated signal - case runShelleyBase (applySTSTest (TRC @(MOCKCHAIN era) ((), mcs, mockblock))) of - Left pdfs -> - let _txsl = Fold.toList txs - in error . unlines $ "FAILS" : map show (toList pdfs) - Right mcs2 -> seq mcs2 (pure mockblock) - - shrinkSignal _ = [] - --- ================================================== --- Now to run a Property test we need two things --- 1) An initial (MockChainState newepochstate tickNes slot count) --- 2) A (PredGen blocks env) --- We need to generate these together so that the trace is valid, i.e. it passes all the STS rules - -genTraceParts :: - Reflect era => - Proof era -> - Int -> - (Proof era -> TraceM era (Tx era)) -> - TraceM - era - ( [TraceStep era (Tx era)] - , Maybe (IRC (MOCKCHAIN era) -> Gen (Either a (MockChainState era))) - , PredGen era - ) -genTraceParts proof len genTx = do - env0 <- genNewEpochStateEnv proof - newepochstate <- liftTyped $ runTarget env0 (newEpochStateT proof) - SlotNo currslot <- liftTyped $ runTerm env0 currentSlot - let initStateFun = - Just - ( \(IRC ()) -> - pure (Right (MockChainState newepochstate newepochstate (SlotNo currslot) 0)) - ) - steps <- beforeAfterTrace len (\_ -> genTx proof) - let getTx (TraceStep _ _ x) = x - zs <- traceStepToVector getTx steps (currslot + 1) [] - pure (steps, initStateFun, PredGen zs env0) - -traceStepToVector :: - (step -> Tx era) -> - [step] -> - Word64 -> - [([Tx era], SlotNo)] -> - TraceM era (Vector (StrictSeq (Tx era), SlotNo)) -traceStepToVector _ [] _ zs = pure (fromList (reverse (map (\(x, y) -> (SS.fromList x, y)) zs))) -traceStepToVector getTx steps m prev = do - n <- liftGen $ choose (1, 2) - let steplist = take n steps - nextslot <- liftGen ((+ m) <$> frequency [(2, pure 2), (1, pure 3), (1, pure 4)]) - -- Longtraces, with large inter block slot changes may exceed the Maximum validity of - -- the Validity interval in generated scripts, so try for an average slot difference - -- less than 3, that should suport Traces up to length 300 since Sized (Range 900 1000) - -- endSlotDelta, should always be at east 900 - traceStepToVector getTx (drop n steps) nextslot ((map getTx steplist, SlotNo m) : prev) - --- | Generate a Control.State.Transition.Trace(Trace) from a (TraceM era (Tx era)) -newStsTrace :: - ( Reflect era - , STS (MOCKCHAIN era) - ) => - Proof era -> - Int -> - (Proof era -> TraceM era (Tx era)) -> - Gen (Trace (MOCKCHAIN era)) -newStsTrace proof len genTx = do - (_, initfun, predgen@(PredGen zs _)) <- toGen $ genTraceParts proof len genTx - traceFromInitState testGlobals (fromIntegral (Vector.length zs - 1)) predgen initfun - --- | Create a testable Property from two things --- 1) A function that generates Tx --- 2) A function that creates a property from a (Trace (MOCKCHAIN era)) -mockChainProp :: - forall era. - (Reflect era, STS (MOCKCHAIN era)) => - Proof era -> - Int -> - (Proof era -> TraceM era (Tx era)) -> - (Trace (MOCKCHAIN era) -> Property) -> - Property -mockChainProp proof n genTxAndUpdateEnv propf = do - let genTrace = newStsTrace proof n genTxAndUpdateEnv - forAllShrinkBlind - genTrace - ( if False - then shrinkTrace @(MOCKCHAIN era) @(PredGen era) testGlobals - else (\_ -> []) - ) - propf - --- =========================================================================== - --- | Given trace [(sig0,state0),(sig1,state1),(sig2,state2),(sig3,state3)] --- conjoin [p pstate0 sig1 state1, p state0 sig2 state2, p state0 sig3 state3] --- test that 'p' holds between state0 and stateN for all N -stepProp :: - (MockChainState era -> MockBlock era -> MockChainState era -> Property) -> - (Trace (MOCKCHAIN era) -> Property) -stepProp p tr = case zipWith (p state0) sigs states of - [] -> property True - (_ : more) -> conjoin more - where - state0 = tr ^. traceInitState - states = traceStates OldestFirst tr - sigs = traceSignals OldestFirst tr - --- | Given trace [(sig0,state0),(sig1,state1),(sig2,state2),(sig3,state3)] --- conjoin [p pstate0 sig1 state1, p state1 sig2 state2, p state2 sig3 state3] --- test that 'p' holds bteween (state0 stateN sig(N+1) state(N+1) for all N -deltaProp :: - (MockChainState era -> MockBlock era -> MockChainState era -> Property) -> - Trace (MOCKCHAIN era) -> - Property -deltaProp p tr = case states of - [] -> property True - _ : more -> conjoin (zipWith3 p states sigs more) - where - states = traceStates OldestFirst tr - sigs = traceSignals OldestFirst tr - --- | Given trace [(sig0,state0),(sig1,state1),(sig2,state2),(sig3,state3)] --- test that (p state0 stateN), where stateN is the last state in the trace -preserveProp :: - (MockChainState era -> MockChainState era -> Property) -> (Trace (MOCKCHAIN era) -> Property) -preserveProp p tr = p state0 stateN - where - state0 = tr ^. traceInitState - stateN = lastState tr - --- | Apply '(preserveProp p)' to each full Epoch in a Trace. A partial epoch at the end of --- the trace is not tested. -epochProp :: - ConwayEraGov era => - (MockChainState era -> MockChainState era -> Property) -> - (Trace (MOCKCHAIN era) -> Property) -epochProp p tr = - counterexample message $ conjoin (map (\epoch -> (p (NE.head epoch) (NE.last epoch))) epochs) - where - states = traceStates OldestFirst tr - epochs = splitEpochs states - showEpoch epoch n = unlines (("EPOCH " ++ show n) : map showPulserState (NE.toList epoch)) - message = - unlines (("Trace length " ++ show (length states)) : zipWith showEpoch epochs [0 :: Int ..]) - -splitEpochs :: [MockChainState era] -> [NE.NonEmpty (MockChainState era)] -splitEpochs xs = - -- We only want full traces, so we drop the last potential trace - reverse $ drop 1 $ reverse (removeFirst $ NE.groupBy ((==) `on` (nesEL . mcsNes)) xs) - where - -- FIXME: It seems that initialization of DRep pulser is not implemented correctly for - -- the first trace. Needs investigation and a fix. - removeFirst = drop 1 - --- ===================== - -showPulserState :: ConwayEraGov era => MockChainState era -> String -showPulserState (MockChainState nes _ slot _) = - "Slot = " ++ show slot ++ " " ++ getPulserInfo (nes ^. newEpochStateDRepPulsingStateL) - where - getPulserInfo (DRPulsing x) = - "Balance = " - ++ show (summaryMapCompact (dpBalance x)) - ++ " DRepDistr = " - ++ show (summaryMapCompact (dpDRepDistr x)) - getPulserInfo (DRComplete psnap _) = - "Complete DRepDistr = " - ++ show (summaryMapCompact (psDRepDistr psnap)) diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/TypeRep.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/TypeRep.hs deleted file mode 100644 index af058274df9..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/TypeRep.hs +++ /dev/null @@ -1,1140 +0,0 @@ -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE QuantifiedConstraints #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE ViewPatterns #-} --- NOTE: This is here because of a bug in fourmolu --- c.f. https://github.com/fourmolu/fourmolu/issues/374 -{-# OPTIONS_GHC -Wno-redundant-constraints #-} - -module Test.Cardano.Ledger.Constrained.TypeRep ( - Rep (..), - (:~:) (Refl), - Singleton (..), - Eql, - typeRepOf, - synopsis, - genSizedRep, - genRep, - shrinkRep, - TxOutF (..), - unTxOut, - ValueF (..), - unValue, - PParamsF (..), - unPParams, - PParamsUpdateF (..), - unPParamsUpdate, - liftUTxO, - Proof (..), - stringR, - hasOrd, - hasEq, - format, - genSigningKey, -) -where - -import Cardano.Crypto.Hash.Class (sizeHash) -import Cardano.Crypto.Signing (SigningKey (..), shortVerificationKeyHexF, toVerification) -import qualified Cardano.Crypto.Wallet as Byron -import Cardano.Ledger.Address (Addr (..), RewardAccount (..)) -import Cardano.Ledger.Alonzo.Scripts (ExUnits (..)) -import Cardano.Ledger.Alonzo.Tx (IsValid (..)) -import Cardano.Ledger.Alonzo.UTxO (AlonzoScriptsNeeded (..)) -import Cardano.Ledger.AuxiliaryData (AuxiliaryDataHash (..)) -import Cardano.Ledger.BaseTypes ( - EpochInterval (..), - EpochNo (..), - Network (..), - ProtVer (..), - SlotNo (..), - StrictMaybe (..), - UnitInterval, - mkTxIxPartial, - ) -import Cardano.Ledger.Binary.Version (Version) -import Cardano.Ledger.CertState -import Cardano.Ledger.Coin (Coin (..), DeltaCoin (..)) -import Cardano.Ledger.Conway.Core -import Cardano.Ledger.Conway.Governance ( - Committee (..), - Constitution, - DRepPulser (..), - EnactState (..), - GovAction (..), - GovActionId (..), - GovActionIx (..), - GovActionPurpose (..), - GovActionState (..), - GovPurposeId (..), - GovRelation (..), - ProposalProcedure (..), - Proposals, - RatifyState (..), - RunConwayRatify (..), - Vote (..), - ) -import Cardano.Ledger.Conway.TxCert (ConwayTxCert (..), Delegatee (..)) -import qualified Cardano.Ledger.Core as Core -import Cardano.Ledger.Credential (Credential, Ptr) -import qualified Cardano.Ledger.Crypto as CC (Crypto (HASH)) -import Cardano.Ledger.EpochBoundary (SnapShots (..)) -import Cardano.Ledger.Keys (GenDelegPair (..), GenDelegs (..), KeyHash, KeyRole (..), WitVKey (..)) -import Cardano.Ledger.Keys.Bootstrap (BootstrapWitness (..)) -import Cardano.Ledger.Mary.Value (AssetName (..), MultiAsset (..), PolicyID (..)) -import Cardano.Ledger.Plutus.Data (Data (..), Datum (..), dataToBinaryData) -import Cardano.Ledger.Plutus.Language (Language (..)) -import Cardano.Ledger.PoolDistr (IndividualPoolStake (..)) -import Cardano.Ledger.PoolParams (PoolMetadata (..), PoolParams (ppId)) -import Cardano.Ledger.SafeHash (SafeHash, extractHash) -import Cardano.Ledger.Shelley.LedgerState -import qualified Cardano.Ledger.Shelley.SoftForks as SoftForks (restrictPoolMetadataHash) -import Cardano.Ledger.Shelley.TxCert (ShelleyTxCert (..)) -import Cardano.Ledger.Shelley.UTxO (ShelleyScriptsNeeded (..)) -import Cardano.Ledger.TxIn (TxId (..), TxIn (..)) -import qualified Cardano.Ledger.UMap as UM -import Cardano.Ledger.UTxO (UTxO (..)) -import Cardano.Ledger.Val (Val ((<+>))) -import Control.Monad.Identity (Identity) -import Data.ByteString (ByteString) -import qualified Data.ByteString as BS -import qualified Data.List as List -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Maybe -import qualified Data.Sequence.Strict as SS -import Data.Set (Set) -import qualified Data.Set as Set -import Data.Typeable -import Data.Universe (Eql, Singleton (..), cmpIndex) -import Data.Word (Word16, Word64) -import Formatting (formatToString) -import Lens.Micro -import Numeric.Natural (Natural) -import Prettyprinter (hsep) -import Test.Cardano.Ledger.Alonzo.Arbitrary (genAlonzoPlutusPurposePointer) -import Test.Cardano.Ledger.Binary.Arbitrary (genByteString) -import Test.Cardano.Ledger.Constrained.Classes ( - Adds (add, zero), - PParamsF (..), - PParamsUpdateF (..), - PlutusPointerF (..), - PlutusPurposeF (..), - ScriptF (..), - ScriptsNeededF (..), - TxAuxDataF (..), - TxBodyF (..), - TxCertF (..), - TxF (..), - TxOutF (..), - TxWitsF (..), - ValueF (..), - genPParams, - genPParamsUpdate, - genScriptF, - genTxAuxDataF, - genTxOut, - genUTxO, - genValue, - liftUTxO, - unPParams, - unPParamsUpdate, - unTxBodyF, - unTxF, - unTxOut, - unValue, - ) -import Test.Cardano.Ledger.Constrained.Combinators (mapSized, setSized) -import Test.Cardano.Ledger.Constrained.Monad (HasConstraint (With), Typed, failT) -import Test.Cardano.Ledger.Constrained.Size (Size (..)) -import Test.Cardano.Ledger.Conway.Arbitrary (genConwayPlutusPurposePointer, genProposals) -import Test.Cardano.Ledger.Core.Arbitrary () -import Test.Cardano.Ledger.Core.KeyPair (KeyPair (..)) -import Test.Cardano.Ledger.Generic.Fields (WitnessesField (..)) -import Test.Cardano.Ledger.Generic.Functions (protocolVersion) -import Test.Cardano.Ledger.Generic.PrettyCore ( - PDoc, - credSummary, - keyHashSummary, - pcAnchor, - pcCoin, - pcCommittee, - pcConstitution, - pcConwayTxCert, - pcDRep, - pcDRepPulser, - pcDRepState, - pcDState, - pcData, - pcDataHash, - pcDatum, - pcDelegatee, - pcEnactState, - pcFutureGenDeleg, - pcGenDelegPair, - pcGovAction, - pcGovActionId, - pcGovActionState, - pcIndividualPoolStake, - pcLedgerState, - pcMultiAsset, - pcPParams, - pcPrevGovActionIds, - pcProposals, - pcRatifyState, - pcReward, - pcRewardAccount, - pcScriptHash, - pcShelleyTxCert, - pcTx, - pcTxBody, - pcTxCert, - pcTxIn, - pcTxOut, - pcVal, - pcWitVKey, - pcWitnesses, - pcWitnessesField, - ppHash, - ppInteger, - ppList, - ppMap, - ppMaybe, - ppRecord', - ppSet, - ppString, - ppVKey, - ppValidityInterval, - ppWord32, - trim, - ) -import Test.Cardano.Ledger.Generic.Proof -import Test.Cardano.Ledger.Generic.Updaters (newTxBody) -import Test.Cardano.Ledger.Shelley.Serialisation.EraIndepGenerators () -import Test.Cardano.Ledger.Shelley.Serialisation.Generators () -import Test.Cardano.Ledger.Shelley.Utils (testGlobals) -import Test.Cardano.Ledger.ShelleyMA.Serialisation.Generators () -import Test.QuickCheck hiding (Fixed, total) - --- ======================================================================= --- Special functions for dealing with SoftForks properties that --- depend upon the ProtVer. Whiach can be computed from a (Proof era) - -restrictHash :: Proof era -> Bool -restrictHash p = SoftForks.restrictPoolMetadataHash $ protocolVersion p - -hashsize :: forall era. CC.Crypto (EraCrypto era) => Proof era -> Int -hashsize _p = fromIntegral $ sizeHash ([] @(CC.HASH (EraCrypto era))) - --- ======================================================================= -infixr 0 :-> - -data Rep era t where - RationalR :: Rep era Rational - CoinR :: Rep era Coin - EpochR :: Rep era EpochNo - EpochIntervalR :: Rep era EpochInterval - (:->) :: Rep era a -> Rep era b -> Rep era (a -> b) - MapR :: Ord a => Rep era a -> Rep era b -> Rep era (Map a b) - SetR :: Ord a => Rep era a -> Rep era (Set a) - ListR :: Rep era a -> Rep era [a] - AddrR :: Era era => Rep era (Addr (EraCrypto era)) - CredR :: Era era => Rep era (Credential 'Staking (EraCrypto era)) - VCredR :: Era era => Rep era (Credential 'DRepRole (EraCrypto era)) - PoolHashR :: Era era => Rep era (KeyHash 'StakePool (EraCrypto era)) - WitHashR :: Era era => Rep era (KeyHash 'Witness (EraCrypto era)) - GenHashR :: Era era => Rep era (KeyHash 'Genesis (EraCrypto era)) - GenDelegHashR :: Era era => Rep era (KeyHash 'GenesisDelegate (EraCrypto era)) - VHashR :: Era era => Rep era (KeyHash 'DRepRole (EraCrypto era)) - CommColdCredR :: Era era => Rep era (Credential 'ColdCommitteeRole (EraCrypto era)) - CommHotCredR :: Era era => Rep era (Credential 'HotCommitteeRole (EraCrypto era)) - PoolParamsR :: Era era => Rep era (PoolParams (EraCrypto era)) - NewEpochStateR :: Era era => Rep era (NewEpochState era) - IntR :: Rep era Int - FloatR :: Rep era Float - NaturalR :: Rep era Natural - Word64R :: Rep era Word64 - TxInR :: Era era => Rep era (TxIn (EraCrypto era)) - TxIdR :: Era era => Rep era (TxId (EraCrypto era)) - CharR :: Rep era Char - UnitR :: Rep era () - PairR :: Rep era a -> Rep era b -> Rep era (a, b) - ProtVerR :: Era era => Proof era -> Rep era ProtVer -- We need the Proof to get arbitrary instances correct - -- \^ Rep's for type families (or those that embed type families) - ValueR :: Era era => Proof era -> Rep era (ValueF era) - UTxOR :: Era era => Proof era -> Rep era (UTxO era) - TxOutR :: Era era => Proof era -> Rep era (TxOutF era) - PParamsR :: Era era => Proof era -> Rep era (PParamsF era) - PParamsUpdateR :: Era era => Proof era -> Rep era (PParamsUpdateF era) - -- - DeltaCoinR :: Rep era DeltaCoin - GenDelegPairR :: Era era => Rep era (GenDelegPair (EraCrypto era)) - FutureGenDelegR :: Era era => Rep era (FutureGenDeleg (EraCrypto era)) - PPUPStateR :: Era era => Proof era -> Rep era (ShelleyGovState era) - PtrR :: Rep era Ptr - IPoolStakeR :: Era era => Rep era (IndividualPoolStake (EraCrypto era)) - SnapShotsR :: Era era => Rep era (SnapShots (EraCrypto era)) - RewardR :: Era era => Rep era (Reward (EraCrypto era)) - MaybeR :: Rep era t -> Rep era (Maybe t) - SlotNoR :: Rep era SlotNo - SizeR :: Rep era Size - MultiAssetR :: Era era => Rep era (MultiAsset (EraCrypto era)) - PolicyIDR :: Era era => Rep era (PolicyID (EraCrypto era)) - WitnessesFieldR :: Era era => Proof era -> Rep era (WitnessesField era) - AssetNameR :: Rep era AssetName - TxCertR :: Era era => Proof era -> Rep era (TxCertF era) - RewardAccountR :: Era era => Rep era (RewardAccount (EraCrypto era)) - ValidityIntervalR :: Era era => Rep era ValidityInterval - KeyPairR :: Era era => Rep era (KeyPair 'Witness (EraCrypto era)) - GenR :: Rep era x -> Rep era (Gen x) - ScriptR :: Era era => Proof era -> Rep era (ScriptF era) - ScriptHashR :: Era era => Rep era (ScriptHash (EraCrypto era)) - NetworkR :: Rep era Network - RdmrPtrR :: Era era => Proof era -> Rep era (PlutusPointerF era) - DataR :: Era era => Rep era (Data era) - DatumR :: Era era => Rep era (Datum era) - ExUnitsR :: Rep era ExUnits - DataHashR :: Era era => Rep era (DataHash (EraCrypto era)) - PCredR :: Era era => Rep era (Credential 'Payment (EraCrypto era)) - ShelleyTxCertR :: Era era => Rep era (ShelleyTxCert era) - ConwayTxCertR :: Era era => Rep era (ConwayTxCert era) - MIRPotR :: Rep era MIRPot - IsValidR :: Rep era IsValid - IntegerR :: Rep era Integer - ScriptsNeededR :: Era era => Proof era -> Rep era (ScriptsNeededF era) - ScriptPurposeR :: Era era => Proof era -> Rep era (PlutusPurposeF era) - TxBodyR :: Era era => Proof era -> Rep era (TxBodyF era) - BootstrapWitnessR :: Era era => Rep era (BootstrapWitness (EraCrypto era)) - SigningKeyR :: Rep era SigningKey - TxWitsR :: Era era => Proof era -> Rep era (TxWitsF era) - PayHashR :: Era era => Rep era (KeyHash 'Payment (EraCrypto era)) - TxR :: Era era => Proof era -> Rep era (TxF era) - ScriptIntegrityHashR :: Era era => Rep era (SafeHash (EraCrypto era) EraIndependentScriptIntegrity) - AuxiliaryDataHashR :: Era era => Rep era (AuxiliaryDataHash (EraCrypto era)) - GovActionR :: Era era => Rep era (GovAction era) - WitVKeyR :: Era era => Proof era -> Rep era (WitVKey 'Witness (EraCrypto era)) - TxAuxDataR :: Era era => Proof era -> Rep era (TxAuxDataF era) - LanguageR :: Rep era Language - LedgerStateR :: Era era => Proof era -> Rep era (LedgerState era) - StakeHashR :: Era era => Rep era (KeyHash 'Staking (EraCrypto era)) - BoolR :: Rep era Bool - DRepR :: Era era => Rep era (DRep (EraCrypto era)) - PoolMetadataR :: Era era => Proof era -> Rep era PoolMetadata - DRepStateR :: Era era => Rep era (DRepState (EraCrypto era)) - DStateR :: Era era => Rep era (DState era) - GovActionIdR :: Era era => Rep era (GovActionId (EraCrypto era)) - GovActionIxR :: Rep era GovActionIx - GovActionStateR :: Era era => Rep era (GovActionState era) - ProposalsR :: Era era => Proof era -> Rep era (Proposals era) - UnitIntervalR :: Rep era UnitInterval - CommitteeR :: Era era => Rep era (Committee era) - ConstitutionR :: Era era => Rep era (Constitution era) - PrevGovActionIdsR :: Era era => Rep era (GovRelation StrictMaybe era) - PrevPParamUpdateR :: Era era => Rep era (GovPurposeId 'PParamUpdatePurpose era) - PrevHardForkR :: Era era => Rep era (GovPurposeId 'HardForkPurpose era) - PrevCommitteeR :: Era era => Rep era (GovPurposeId 'CommitteePurpose era) - PrevConstitutionR :: Era era => Rep era (GovPurposeId 'ConstitutionPurpose era) - RatifyStateR :: Reflect era => Rep era (RatifyState era) - NumDormantEpochsR :: Era era => Rep era EpochNo - DRepHashR :: Era era => Rep era (KeyHash 'DRepRole (EraCrypto era)) - AnchorR :: Era era => Rep era (Anchor (EraCrypto era)) - CommitteeStateR :: Era era => Rep era (CommitteeState era) - CommitteeAuthorizationR :: Era era => Rep era (CommitteeAuthorization (EraCrypto era)) - VStateR :: Era era => Rep era (VState era) - EnactStateR :: Reflect era => Rep era (EnactState era) - DRepPulserR :: - (RunConwayRatify era, Reflect era) => Rep era (DRepPulser era Identity (RatifyState era)) - DelegateeR :: Era era => Rep era (Delegatee (EraCrypto era)) - VoteR :: Rep era Vote - -stringR :: Rep era String -stringR = ListR CharR - --- =========================================================== --- Proof of Rep equality - -data Is c a where - Is :: c a => Is c a - Isn't :: Is c a - -data HasInstances a where - Type :: - Typeable a => - Is Eq a -> - Is Ord a -> - HasInstances a - -pattern IsOrd :: () => (Typeable a, Ord a) => HasInstances a -pattern IsOrd = Type Is Is - -pattern IsEq :: () => (Typeable a, Eq a) => HasInstances a -pattern IsEq <- Type Is _ - where - IsEq = Type Is Isn't - -{-# COMPLETE IsTypeable #-} -pattern IsTypeable :: () => Typeable a => HasInstances a -pattern IsTypeable <- Type _ _ - where - IsTypeable = Type Isn't Isn't - -typeRepOf :: Rep era t -> TypeRep -typeRepOf r@(repHasInstances -> IsTypeable) = typeRep r - -repHasInstances :: Rep era t -> HasInstances t -repHasInstances r = case r of - TxIdR -> IsOrd - VStateR -> IsEq - EnactStateR -> IsEq - RatifyStateR -> IsEq - DRepStateR -> IsOrd - CommColdCredR -> IsOrd - CommHotCredR -> IsOrd - GovActionR -> IsTypeable - PoolMetadataR {} -> IsOrd - StakeHashR {} -> IsOrd - BoolR {} -> IsOrd - DRepR {} -> IsOrd - WitVKeyR {} -> IsOrd - TxAuxDataR {} -> IsEq - LanguageR {} -> IsOrd - LedgerStateR {} -> IsTypeable - TxR {} -> IsEq - ScriptIntegrityHashR {} -> IsOrd - AuxiliaryDataHashR {} -> IsOrd - BootstrapWitnessR {} -> IsOrd - SigningKeyR {} -> IsEq - TxWitsR {} -> IsEq - PayHashR {} -> IsOrd - IntegerR {} -> IsOrd - ScriptsNeededR {} -> IsTypeable - ScriptPurposeR {} -> IsEq - {- - ScriptPurposeR Shelley -> IsEq - ScriptPurposeR Mary -> IsEq - ScriptPurposeR Allegra -> IsEq - ScriptPurposeR Alonzo -> IsEq - ScriptPurposeR Babbage -> IsEq - ScriptPurposeR Conway -> IsEq - -} - TxBodyR {} -> IsEq - ShelleyTxCertR {} -> IsEq - ConwayTxCertR {} -> IsEq - MIRPotR {} -> IsOrd - IsValidR {} -> IsEq - ExUnitsR {} -> IsEq - DataHashR {} -> IsOrd - PCredR {} -> IsOrd - NetworkR {} -> IsOrd - RdmrPtrR {} -> IsOrd - DataR {} -> IsEq - DatumR {} -> IsOrd - KeyPairR {} -> IsTypeable - ScriptR {} -> IsEq - ScriptHashR {} -> IsOrd - TxCertR {} -> IsEq - RewardAccountR {} -> IsOrd - ValidityIntervalR {} -> IsOrd - AssetNameR {} -> IsOrd - WitnessesFieldR {} -> IsTypeable - MultiAssetR {} -> IsOrd - PolicyIDR {} -> IsOrd - CharR {} -> IsOrd - RationalR {} -> IsOrd - CoinR {} -> IsOrd - EpochR {} -> IsOrd - EpochIntervalR {} -> IsOrd - AddrR {} -> IsOrd - CredR {} -> IsOrd - VCredR {} -> IsOrd - PoolHashR {} -> IsOrd - WitHashR {} -> IsOrd - GenHashR {} -> IsOrd - GenDelegHashR {} -> IsOrd - VHashR {} -> IsOrd - PoolParamsR {} -> IsOrd - NewEpochStateR {} -> IsTypeable - IntR {} -> IsOrd - FloatR {} -> IsOrd - NaturalR {} -> IsOrd - Word64R {} -> IsOrd - TxInR {} -> IsOrd - UnitR {} -> IsOrd - ProtVerR {} -> IsOrd - ValueR {} -> IsOrd - UTxOR {} -> IsTypeable - TxOutR {} -> IsOrd - PParamsR {} -> IsTypeable - PParamsUpdateR {} -> IsTypeable - DeltaCoinR {} -> IsOrd - GenDelegPairR {} -> IsOrd - FutureGenDelegR {} -> IsOrd - PPUPStateR {} -> IsTypeable - PtrR {} -> IsOrd - IPoolStakeR {} -> IsEq - SnapShotsR {} -> IsEq - RewardR {} -> IsOrd - SlotNoR {} -> IsOrd - SizeR {} -> IsOrd - DStateR {} -> IsEq - GovActionIdR {} -> IsOrd - GovActionIxR {} -> IsOrd - GovActionStateR {} -> IsTypeable - ProposalsR {} -> IsTypeable - CommitteeAuthorizationR {} -> IsOrd - CommitteeStateR {} -> IsOrd - UnitIntervalR {} -> IsOrd - CommitteeR {} -> IsEq - ConstitutionR {} -> IsEq - PrevGovActionIdsR {} -> IsEq - PrevPParamUpdateR {} -> IsEq - PrevHardForkR {} -> IsEq - PrevCommitteeR {} -> IsEq - PrevConstitutionR {} -> IsEq - (repHasInstances -> IsTypeable) :-> (repHasInstances -> IsTypeable) -> IsTypeable - MapR (repHasInstances -> IsTypeable) (repHasInstances -> ib) -> requireInstances ib - SetR (repHasInstances -> IsTypeable) -> IsOrd - ListR (repHasInstances -> ia) -> requireInstances ia - PairR (repHasInstances -> ia) (repHasInstances -> ib) -> lubInstances ia ib - MaybeR (repHasInstances -> ia) -> requireInstances ia - GenR (repHasInstances -> IsTypeable) -> IsTypeable - NumDormantEpochsR {} -> IsOrd - DRepHashR {} -> IsOrd - AnchorR {} -> IsEq - DRepPulserR {} -> IsEq - DelegateeR {} -> IsOrd - VoteR {} -> IsEq - --- NOTE: The extra `()` constraint needs to be there for fourmolu. --- c.f. https://github.com/fourmolu/fourmolu/issues/374 -lubIs :: ((c a, c b) => c (f a b), ()) => Is c a -> Is c b -> Is c (f a b) -lubIs Is Is = Is -lubIs _ _ = Isn't - -lubInstances :: - ( (Ord a, Ord b) => Ord (f a b) - , (Eq a, Eq b) => Eq (f a b) - , Typeable f - ) => - HasInstances a -> - HasInstances b -> - HasInstances (f a b) -lubInstances (Type eq_a ord_a) (Type eq_b ord_b) = - Type (lubIs eq_a eq_b) (lubIs ord_a ord_b) - --- NOTE: The extra `()` constraint needs to be there for fourmolu. --- c.f. https://github.com/fourmolu/fourmolu/issues/374 -requireIs :: (c a => c (f a), ()) => Is c a -> Is c (f a) -requireIs Is = Is -requireIs _ = Isn't - -requireInstances :: - ( Ord a => Ord (f a) - , Eq a => Eq (f a) - , Typeable f - ) => - HasInstances a -> - HasInstances (f a) -requireInstances (Type eq ord) = Type (requireIs eq) (requireIs ord) - -instance Singleton (Rep era) where - testEql - (repHasInstances -> IsTypeable :: HasInstances a) - (repHasInstances -> IsTypeable :: HasInstances b) = eqT @a @b - cmpIndex x y = compare (typeRepOf x) (typeRepOf y) - --- ============================================================ --- Show instances - -instance Show (Rep era t) where - showsPrec d (repHasInstances -> IsTypeable :: HasInstances t) = showsPrec d $ typeRep (Proxy @t) - -synopsis :: forall e t. Rep e t -> t -> String -synopsis TxIdR r = show r -synopsis RationalR r = show r -synopsis CoinR c = show (pcCoin c) -synopsis EpochR e = show e -synopsis EpochIntervalR e = show e -synopsis (a :-> b) _ = "(Arrow " ++ show a ++ " " ++ show b ++ ")" -synopsis Word64R w = show w -synopsis rep@(MapR a b) mp = case Map.toList mp of - [] -> "(empty::Map " ++ show a ++ " " ++ show b ++ ")" - ((d, r) : _) -> - "Map{" - ++ synopsis a d - ++ " -> " - ++ synopsis b r - ++ " | size = " - ++ show (Map.size mp) - ++ synSum rep mp - ++ "}" -synopsis (SetR IntR) x = "Set" ++ show (Set.toList x) -synopsis (SetR Word64R) x = "Set" ++ show (Set.toList x) -synopsis rep@(SetR a) t = case Set.elems t of - [] -> "(empty::Set " ++ show a ++ ")" - (h : _) -> "Set{" ++ synopsis a h ++ " | size = " ++ show (Set.size t) ++ synSum rep t ++ "}" -synopsis (ListR IntR) x = show x -synopsis (ListR Word64R) x = show x -synopsis rep@(ListR a) ll = case ll of - [] -> "(empty::" ++ show (ListR a) ++ "]" - (d : _) -> "[" ++ synopsis a d ++ " | size = " ++ show (length ll) ++ synSum rep ll ++ "]" -synopsis AddrR a = show a -synopsis CredR c = show (credSummary c) -synopsis PoolHashR k = "(KeyHash 'PoolStake " ++ show (keyHashSummary k) ++ ")" -synopsis GenHashR k = "(KeyHash 'Genesis " ++ show (keyHashSummary k) ++ ")" -synopsis WitHashR k = "(KeyHash 'Witness " ++ show (keyHashSummary k) ++ ")" -synopsis GenDelegHashR k = "(KeyHash 'GenesisDelegate " ++ show (keyHashSummary k) ++ ")" -synopsis PoolParamsR pp = "(PoolParams " ++ synopsis @e PoolHashR (ppId pp) ++ ")" -synopsis IntR n = show n -synopsis NaturalR n = show n -synopsis FloatR n = show n -synopsis TxInR txin = show (pcTxIn txin) -synopsis CharR s = show s -synopsis (ValueR p) (ValueF _ x) = show (pcVal p x) -synopsis (TxOutR p) (TxOutF _ x) = show ((unReflect pcTxOut p x) :: PDoc) -synopsis (UTxOR p) (UTxO mp) = "UTxO( " ++ synopsis (MapR TxInR (TxOutR p)) (Map.map (TxOutF p) mp) ++ " )" -synopsis (PParamsR _) (PParamsF p x) = show $ pcPParams p x -synopsis (PParamsUpdateR _) _ = "PParamsUpdate ..." -synopsis DeltaCoinR (DeltaCoin n) = show (hsep [ppString "▵₳", ppInteger n]) -synopsis GenDelegPairR x = show (pcGenDelegPair x) -synopsis FutureGenDelegR x = show (pcFutureGenDeleg x) -synopsis (PPUPStateR _) _ = "PPUPStateR ..." -synopsis PtrR p = show p -synopsis IPoolStakeR p = show (pcIndividualPoolStake p) -synopsis SnapShotsR _ = "SnapShots ..." -synopsis UnitR () = "()" -synopsis (PairR a b) (x, y) = "(" ++ synopsis a x ++ ", " ++ synopsis b y ++ ")" -synopsis RewardR x = show (pcReward x) -synopsis (MaybeR _) Nothing = "Nothing" -synopsis (MaybeR x) (Just y) = "(Just " ++ synopsis x y ++ ")" -synopsis NewEpochStateR _ = "NewEpochStateR ..." -synopsis (ProtVerR _) (ProtVer x y) = "(" ++ show x ++ " " ++ show y ++ ")" -synopsis SlotNoR x = show x -synopsis SizeR x = show x -synopsis VCredR x = show (credSummary x) -synopsis VHashR x = "(KeyHash 'Voting " ++ show (keyHashSummary x) ++ ")" -synopsis MultiAssetR x = "(MultiAsset " ++ show (pcMultiAsset x) ++ ")" -synopsis PolicyIDR (PolicyID x) = show (pcScriptHash x) -synopsis (WitnessesFieldR p) x = show $ ppRecord' mempty $ unReflect pcWitnessesField p x -synopsis AssetNameR (AssetName x) = take 10 (show x) -synopsis (TxCertR p) (TxCertF _ x) = show (pcTxCert p x) -synopsis RewardAccountR x = show (pcRewardAccount x) -synopsis ValidityIntervalR x = show (ppValidityInterval x) -synopsis KeyPairR _ = "(KeyPairR ...)" -synopsis (GenR x) _ = "(Gen " ++ show x ++ " ...)" -synopsis (ScriptR _) x = show x -- The Show instance uses pcScript -synopsis ScriptHashR x = show (pcScriptHash x) -synopsis NetworkR x = show x -synopsis (RdmrPtrR _) x = show x -synopsis DataR x = show (pcData x) -synopsis DatumR x = show (pcDatum x) -synopsis ExUnitsR (ExUnits m d) = "(ExUnits mem=" ++ show m ++ " data=" ++ show d ++ ")" -synopsis DataHashR x = show (pcDataHash x) -synopsis PCredR c = show (credSummary c) -synopsis ConwayTxCertR x = show (pcConwayTxCert x) -synopsis ShelleyTxCertR x = show (pcShelleyTxCert x) -synopsis MIRPotR x = show x -synopsis IsValidR x = show x -synopsis IntegerR x = show x -synopsis (ScriptsNeededR _) x = show x -synopsis (ScriptPurposeR _) x = show x -synopsis (TxBodyR p) x = show (pcTxBody p (unTxBodyF x)) -synopsis BootstrapWitnessR x = "(BootstrapWitness " ++ show (ppVKey (bwKey x)) ++ ")" -synopsis SigningKeyR key = "(publicKeyOfSecretKey " ++ formatToString shortVerificationKeyHexF (toVerification key) ++ ")" -synopsis (TxWitsR p) (TxWitsF _ x) = show ((unReflect pcWitnesses p x) :: PDoc) -synopsis PayHashR k = "(KeyHash 'Payment " ++ show (keyHashSummary k) ++ ")" -synopsis (TxR p) x = show (pcTx p (unTxF x)) -synopsis ScriptIntegrityHashR x = show (trim (ppHash (extractHash x))) -synopsis AuxiliaryDataHashR (AuxiliaryDataHash x) = show (trim (ppHash (extractHash x))) -synopsis GovActionR x = show (pcGovAction x) -synopsis (WitVKeyR p) x = show ((unReflect pcWitVKey p x) :: PDoc) -synopsis (TxAuxDataR _) x = show x -synopsis CommColdCredR x = show x -synopsis CommHotCredR x = show x -synopsis LanguageR x = show x -synopsis (LedgerStateR p) x = show ((unReflect pcLedgerState p x) :: PDoc) -synopsis StakeHashR k = "(KeyHash 'Staking " ++ show (keyHashSummary k) ++ ")" -synopsis BoolR x = show x -synopsis DRepR x = show (pcDRep x) -synopsis (PoolMetadataR _) x = show x -synopsis DRepStateR x = show (pcDRepState x) -synopsis DStateR x = show (pcDState x) -synopsis GovActionIdR x = show (pcGovActionId x) -synopsis GovActionIxR (GovActionIx a) = show (ppWord32 a) -synopsis GovActionStateR x = show (pcGovActionState x) -synopsis (ProposalsR _p) x = show (pcProposals x) -synopsis UnitIntervalR x = show x -synopsis CommitteeR x = show (pcCommittee x) -synopsis ConstitutionR x = show $ pcConstitution x -synopsis PrevGovActionIdsR x = show (pcPrevGovActionIds x) -synopsis PrevPParamUpdateR (GovPurposeId x) = synopsis @e GovActionIdR x -synopsis PrevHardForkR (GovPurposeId x) = synopsis @e GovActionIdR x -synopsis PrevCommitteeR (GovPurposeId x) = synopsis @e GovActionIdR x -synopsis PrevConstitutionR (GovPurposeId x) = synopsis @e GovActionIdR x -synopsis RatifyStateR dr = show (pcRatifyState reify dr) -synopsis NumDormantEpochsR x = show x -synopsis CommitteeAuthorizationR x = show x -synopsis CommitteeStateR x = show x -synopsis VStateR x = show x -synopsis DRepHashR k = "(KeyHash 'DRepRole " ++ show (keyHashSummary k) ++ ")" -synopsis AnchorR k = show (pcAnchor k) -synopsis EnactStateR x = show (pcEnactState reify x) -synopsis DRepPulserR x = show (pcDRepPulser x) -synopsis DelegateeR x = show (pcDelegatee x) -synopsis VoteR v = show v - -synSum :: Rep era a -> a -> String -synSum (MapR _ CoinR) m = ", sum = " ++ show (pcCoin (Map.foldl' (<>) mempty m)) -synSum (MapR _ RationalR) m = ", sum = " ++ show (Map.foldl' (+) 0 m) -synSum (MapR _ IntR) m = ", sum = " ++ show (Map.foldl' (+) 0 m) -synSum (MapR _ Word64R) m = ", sum = " ++ show (Map.foldl' (+) 0 m) -synSum (MapR _ IPoolStakeR) m = ", sum = " ++ show (Map.foldl' accum 0 m) - where - accum z (IndividualPoolStake rat _) = z + rat -synSum (MapR _ (TxOutR proof)) m = ", sum = " ++ show (Map.foldl' (accumTxOut proof) (Coin 0) m) -synSum (MapR _ ExUnitsR) m = ", sum = " ++ show (Map.foldl' add zero m) -synSum (SetR CoinR) m = ", sum = " ++ show (pcCoin (Set.foldl' (<>) mempty m)) -synSum (SetR RationalR) m = ", sum = " ++ show (Set.foldl' (+) 0 m) -synSum (ListR CoinR) m = ", sum = " ++ show (List.foldl' (<>) mempty m) -synSum (ListR RationalR) m = ", sum = " ++ show (List.foldl' (+) 0 m) -synSum (ListR IntR) m = ", sum = " ++ show (List.foldl' (+) 0 m) -synSum (ListR Word64R) m = ", sum = " ++ show (List.foldl' (+) 0 m) -synSum (ListR (TxOutR proof)) m = ", sum = " ++ show (List.foldl' (accumTxOut proof) (Coin 0) m) -synSum (ListR ExUnitsR) m = ", sum = " ++ show (List.foldl' add zero m) -synSum _ _ = "" - -accumTxOut :: Proof era -> Coin -> TxOutF era -> Coin -accumTxOut Shelley z (TxOutF _ out) = z <+> (out ^. Core.coinTxOutL) -accumTxOut Allegra z (TxOutF _ out) = z <+> (out ^. Core.coinTxOutL) -accumTxOut Mary z (TxOutF _ out) = z <+> (out ^. Core.coinTxOutL) -accumTxOut Alonzo z (TxOutF _ out) = z <+> (out ^. Core.coinTxOutL) -accumTxOut Babbage z (TxOutF _ out) = z <+> (out ^. Core.coinTxOutL) -accumTxOut Conway z (TxOutF _ out) = z <+> (out ^. Core.coinTxOutL) - --- ================================================== - -genSizedRep :: - forall era t. - Int -> - Rep era t -> - Gen t -genSizedRep _ TxIdR = arbitrary -genSizedRep n CoinR = - if n == 0 - then do Positive m <- arbitrary; pure (Coin m) - else pure (Coin (fromIntegral n)) -genSizedRep n (_a :-> b) = const <$> genSizedRep n b -genSizedRep n r@(MapR a b) = do - mapSized ["From genSizedRep " ++ show r] n (genRep a) (genRep b) -genSizedRep n r@(SetR a) = do - setSized ["From genSizedRep " ++ show r] n (genRep a) -genSizedRep n (ListR a) = vectorOf n (genSizedRep n a) -genSizedRep _ AddrR = arbitrary -genSizedRep _ CredR = arbitrary -genSizedRep _ PoolHashR = arbitrary -genSizedRep _ WitHashR = arbitrary -genSizedRep _ GenHashR = arbitrary -genSizedRep _ GenDelegHashR = arbitrary -genSizedRep _ PoolParamsR = arbitrary -genSizedRep n EpochR = pure $ EpochNo $ fromIntegral n -genSizedRep n EpochIntervalR = pure $ EpochInterval $ fromIntegral n -genSizedRep _ RationalR = arbitrary -genSizedRep _ Word64R = choose (0, 1000) -genSizedRep n IntR = pure n -genSizedRep n NaturalR = pure $ fromIntegral n -genSizedRep _ FloatR = arbitrary -genSizedRep n TxInR = - TxIn - <$> arbitrary - <*> (mkTxIxPartial . fromIntegral <$> choose (2, min n (fromIntegral (maxBound :: Word16)))) -genSizedRep _ CharR = arbitrary -genSizedRep _ (ValueR p) = genValue p -genSizedRep _ (TxOutR p) = genTxOut p -genSizedRep _n (UTxOR p) = genUTxO p -genSizedRep _ (PParamsR p) = genPParams p -genSizedRep _ (PParamsUpdateR p) = genPParamsUpdate p -genSizedRep _ DeltaCoinR = DeltaCoin <$> choose (-1000, 1000) -genSizedRep _ GenDelegPairR = arbitrary -genSizedRep _ FutureGenDelegR = arbitrary -genSizedRep _ r@(PPUPStateR _) = genpup r -genSizedRep _ PtrR = arbitrary -genSizedRep _ IPoolStakeR = arbitrary -genSizedRep _ SnapShotsR = arbitrary -genSizedRep _ UnitR = arbitrary -genSizedRep n (PairR a b) = (,) <$> genSizedRep n a <*> genSizedRep n b -genSizedRep _ RewardR = arbitrary -genSizedRep n (MaybeR x) = frequency [(1, pure Nothing), (5, Just <$> genSizedRep n x)] -genSizedRep _ NewEpochStateR = undefined -genSizedRep _ (ProtVerR proof) = genProtVer proof -genSizedRep n SlotNoR = pure $ SlotNo (fromIntegral n) -genSizedRep _ SizeR = do lo <- choose (1, 6); hi <- choose (6, 10); pure (SzRng lo hi) -genSizedRep _ VCredR = arbitrary -genSizedRep _ VHashR = arbitrary -genSizedRep n MultiAssetR = MultiAsset <$> genSizedRep n (MapR (PolicyIDR @era) (MapR AssetNameR IntegerR)) -genSizedRep _ PolicyIDR = arbitrary -genSizedRep _ (WitnessesFieldR _) = pure $ AddrWits Set.empty -genSizedRep _ AssetNameR = arbitrary -genSizedRep _ RewardAccountR = RewardAccount <$> pure Testnet <*> arbitrary -genSizedRep _ (TxCertR Shelley) = TxCertF Shelley <$> arbitrary -genSizedRep _ (TxCertR Allegra) = TxCertF Allegra <$> arbitrary -genSizedRep _ (TxCertR Mary) = TxCertF Mary <$> arbitrary -genSizedRep _ (TxCertR Alonzo) = TxCertF Alonzo <$> arbitrary -genSizedRep _ (TxCertR Babbage) = TxCertF Babbage <$> arbitrary -genSizedRep _ (TxCertR Conway) = TxCertF Conway <$> arbitrary -genSizedRep _ ValidityIntervalR = arbitrary -genSizedRep _ KeyPairR = arbitrary -genSizedRep n (GenR x) = pure (genSizedRep n x) -genSizedRep _ (ScriptR p) = genScriptF p -genSizedRep _ ScriptHashR = arbitrary -genSizedRep _ NetworkR = arbitrary -genSizedRep n (RdmrPtrR p) = - case p of - Shelley -> error "Redeemers are not supported in Shelley" - Allegra -> error "Redeemers are not supported in Allegra" - Mary -> error "Redeemers are not supported in Mary" - Alonzo -> do - i <- choose (0, fromIntegral n) - PlutusPointerF p <$> genAlonzoPlutusPurposePointer i - Babbage -> do - i <- choose (0, fromIntegral n) - PlutusPointerF p <$> genAlonzoPlutusPurposePointer i - Conway -> do - i <- choose (0, fromIntegral n) - PlutusPointerF p <$> genConwayPlutusPurposePointer i -genSizedRep _ DataR = arbitrary -genSizedRep n DatumR = - oneof - [ pure NoDatum - , DatumHash <$> genSizedRep @era n DataHashR - , Datum . dataToBinaryData <$> genSizedRep @era n DataR - ] -genSizedRep _ ExUnitsR = arbitrary -genSizedRep _ DataHashR = arbitrary -genSizedRep _ PCredR = arbitrary -genSizedRep _ ShelleyTxCertR = arbitrary -genSizedRep _ ConwayTxCertR = arbitrary -genSizedRep _ MIRPotR = arbitrary -genSizedRep _ IsValidR = frequency [(1, pure (IsValid False)), (9, pure (IsValid True))] -genSizedRep _ IntegerR = arbitrary -genSizedRep _ (ScriptsNeededR p) = case whichUTxO p of - UTxOShelleyToMary -> pure $ ScriptsNeededF p (ShelleyScriptsNeeded Set.empty) - UTxOAlonzoToConway -> pure $ ScriptsNeededF p (AlonzoScriptsNeeded []) -genSizedRep _ (ScriptPurposeR p) = - case p of - Shelley -> error "PlutusPurpose is not supported in Shelley" - Allegra -> error "PlutusPurpose is not supported in Allegra" - Mary -> error "PlutusPurpose is not supported in Mary" - Alonzo -> PlutusPurposeF p <$> arbitrary - Babbage -> PlutusPurposeF p <$> arbitrary - Conway -> PlutusPurposeF p <$> arbitrary -genSizedRep _ (TxBodyR p) = - case p of - Shelley -> pure (TxBodyF p (newTxBody p [])) - Allegra -> pure (TxBodyF p (newTxBody p [])) - Mary -> pure (TxBodyF p (newTxBody p [])) - Alonzo -> pure (TxBodyF p (newTxBody p [])) - Babbage -> pure (TxBodyF p (newTxBody p [])) - Conway -> pure (TxBodyF p (newTxBody p [])) -genSizedRep _ BootstrapWitnessR = arbitrary -genSizedRep _ SigningKeyR = genSigningKey -genSizedRep _ (TxWitsR p) = - case p of - Shelley -> TxWitsF p <$> arbitrary - Allegra -> TxWitsF p <$> arbitrary - Mary -> TxWitsF p <$> arbitrary - Alonzo -> TxWitsF p <$> arbitrary - Babbage -> TxWitsF p <$> arbitrary - Conway -> TxWitsF p <$> arbitrary -genSizedRep _ PayHashR = arbitrary -genSizedRep _ (TxR p) = - case p of - Shelley -> TxF p <$> arbitrary - Allegra -> TxF p <$> arbitrary - Mary -> TxF p <$> arbitrary - Alonzo -> TxF p <$> arbitrary - Babbage -> TxF p <$> arbitrary - Conway -> TxF p <$> arbitrary -genSizedRep _ ScriptIntegrityHashR = arbitrary -genSizedRep _ AuxiliaryDataHashR = arbitrary -genSizedRep _ GovActionR = NoConfidence <$> arbitrary -genSizedRep _ (WitVKeyR _) = arbitrary -genSizedRep _ (TxAuxDataR p) = genTxAuxDataF p -genSizedRep _ CommColdCredR = arbitrary -genSizedRep _ CommHotCredR = arbitrary -genSizedRep _ LanguageR = arbitrary -genSizedRep _ (LedgerStateR p) = case p of - Shelley -> arbitrary - Allegra -> arbitrary - Mary -> arbitrary - Alonzo -> arbitrary - Babbage -> arbitrary - Conway -> arbitrary -genSizedRep _ StakeHashR = arbitrary -genSizedRep _ BoolR = arbitrary -genSizedRep _ DRepR = arbitrary -genSizedRep _ (PoolMetadataR p) = - if restrictHash p - then PoolMetadata <$> arbitrary <*> (BS.take (hashsize p) <$> arbitrary) - else PoolMetadata <$> arbitrary <*> arbitrary -genSizedRep _ DRepStateR = arbitrary -genSizedRep _ DStateR = - pure - ( DState - UM.empty - Map.empty - (GenDelegs Map.empty) - (InstantaneousRewards Map.empty Map.empty mempty mempty) - ) -genSizedRep _ GovActionIdR = arbitrary -genSizedRep _ GovActionIxR = GovActionIx <$> choose (0, 100) -genSizedRep n (ProposalsR p) = case p of - Shelley -> arbitrary - Allegra -> arbitrary - Mary -> arbitrary - Alonzo -> arbitrary - Babbage -> arbitrary - Conway -> genProposals (5, min n 7) -genSizedRep _ GovActionStateR = - GovActionState - <$> arbitrary - <*> pure Map.empty - <*> pure Map.empty - <*> pure Map.empty - <*> (ProposalProcedure <$> genRep @era CoinR <*> arbitrary <*> genRep @era GovActionR <*> arbitrary) - <*> arbitrary - <*> arbitrary -genSizedRep _ UnitIntervalR = arbitrary -genSizedRep _ CommitteeR = arbitrary -genSizedRep _ ConstitutionR = arbitrary -genSizedRep _ PrevGovActionIdsR = arbitrary -genSizedRep _ PrevPParamUpdateR = arbitrary -genSizedRep _ PrevHardForkR = arbitrary -genSizedRep _ PrevCommitteeR = arbitrary -genSizedRep _ PrevConstitutionR = arbitrary -genSizedRep n RatifyStateR = - RatifyState - <$> genSizedRep n EnactStateR - <*> pure mempty - <*> pure mempty - <*> arbitrary -genSizedRep _ NumDormantEpochsR = arbitrary -genSizedRep _ CommitteeAuthorizationR = arbitrary -genSizedRep _ CommitteeStateR = arbitrary -genSizedRep _ VStateR = arbitrary -genSizedRep _ DRepHashR = arbitrary -genSizedRep _ AnchorR = arbitrary -genSizedRep _ EnactStateR = - EnactState - <$> arbitrary - <*> arbitrary - <*> (unPParams <$> (genPParams reify)) - <*> (unPParams <$> (genPParams reify)) - <*> arbitrary - <*> arbitrary - <*> arbitrary -genSizedRep _ DRepPulserR = - DRepPulser - <$> arbitrary -- pulsesize - <*> arbitrary -- umap - <*> arbitrary -- balance - <*> arbitrary -- stakedistr - <*> arbitrary -- poolDistr - <*> arbitrary -- partial drep distr - <*> arbitrary -- drepstate - <*> arbitrary -- epoch - <*> arbitrary -- committeestate - <*> genRep EnactStateR - <*> (SS.fromList . (: []) <$> genRep GovActionStateR) -- proposals - <*> pure testGlobals -genSizedRep n DelegateeR = - oneof - [ DelegStake <$> genSizedRep n (PoolHashR @era) - , DelegVote <$> genSizedRep n (DRepR @era) - , DelegStakeVote <$> genSizedRep n (PoolHashR @era) <*> genSizedRep n (DRepR @era) - ] -genSizedRep _ VoteR = arbitrary - -genRep :: - forall era b. - Rep era b -> - Gen b -genRep IntR = choose (0, 10000) -genRep x = do (NonNegative n) <- arbitrary; genSizedRep n x - --- | Turn a random bytestring into a SigningKey -genSigningKey :: Gen SigningKey -genSigningKey = do - seed <- genByteString 32 - pure (SigningKey $ Byron.generate seed (mempty :: ByteString)) - -genProtVer :: Era era => Proof era -> Gen ProtVer -genProtVer proof = frequency (zipWith pair [count, count - 1 .. 1] versions) - where - versions = protVerRange proof - count = length versions - pair n version = (n, ProtVer version <$> elements [0 .. 4]) - -protVerRange :: forall era. Era era => Proof era -> [Version] -protVerRange _ = [Core.eraProtVerLow @era .. Core.eraProtVerHigh @era] - -genpup :: Rep era (ShelleyGovState era) -> Gen (ShelleyGovState era) -genpup (PPUPStateR Shelley) = arbitrary -genpup (PPUPStateR Allegra) = arbitrary -genpup (PPUPStateR Mary) = arbitrary -genpup (PPUPStateR Alonzo) = arbitrary -genpup (PPUPStateR Babbage) = arbitrary -genpup (PPUPStateR Conway) = arbitrary -- FIXME when Conway is fully defined. - --- =========================== --- QuickCheck shrinking - --- Not all types in the universe have Arbitrary instances and thus don't shrink (the `[]` cases). --- TODO: add instances for these types. -shrinkRep :: Rep era t -> t -> [t] -shrinkRep TxIdR t = shrink t -shrinkRep CoinR t = shrink t -shrinkRep (_ :-> _) _ = [] -shrinkRep (MapR a b) t = shrinkMapBy Map.fromList Map.toList (shrinkRep $ ListR (PairR a b)) t -shrinkRep (SetR a) t = shrinkMapBy Set.fromList Set.toList (shrinkRep $ ListR a) t -shrinkRep (ListR a) t = shrinkList (shrinkRep a) t -shrinkRep CredR t = shrink t -shrinkRep PoolHashR t = shrink t -shrinkRep WitHashR t = shrink t -shrinkRep GenHashR t = shrink t -shrinkRep GenDelegHashR t = shrink t -shrinkRep PoolParamsR t = shrink t -shrinkRep EpochR t = shrink t -shrinkRep EpochIntervalR t = shrink t -shrinkRep RationalR t = shrink t -shrinkRep Word64R t = shrink t -shrinkRep IntR t = shrink t -shrinkRep NaturalR t = shrink t -shrinkRep FloatR t = shrink t -shrinkRep TxInR t = shrink t -shrinkRep (ValueR _) _ = [] -shrinkRep (TxOutR _) _ = [] -shrinkRep (UTxOR _) _ = [] -shrinkRep (PParamsR _) _ = [] -shrinkRep (PParamsUpdateR _) _ = [] -shrinkRep CharR t = shrink t -shrinkRep DeltaCoinR t = shrink t -shrinkRep GenDelegPairR t = shrink t -shrinkRep FutureGenDelegR t = shrink t -shrinkRep (PPUPStateR _) _ = [] -shrinkRep PtrR t = shrink t -shrinkRep IPoolStakeR t = shrink t -shrinkRep SnapShotsR t = shrink t -shrinkRep UnitR t = shrink t -shrinkRep (PairR a b) (x, y) = [(x', y) | x' <- shrinkRep a x] ++ [(x, y') | y' <- shrinkRep b y] -shrinkRep RewardR t = shrink t -shrinkRep (MaybeR a) t = shrinkMapBy listToMaybe maybeToList (shrinkRep $ ListR a) t -shrinkRep NewEpochStateR _ = [] -shrinkRep (ProtVerR _) t = shrink t -shrinkRep SlotNoR t = shrink t -shrinkRep SizeR _ = [] -shrinkRep MultiAssetR t = shrink t -shrinkRep PolicyIDR t = shrink t -shrinkRep (WitnessesFieldR _) _ = [] -shrinkRep AssetNameR t = shrink t -shrinkRep (TxCertR Shelley) (TxCertF p x) = map (TxCertF p) (shrink x) -shrinkRep (TxCertR Allegra) (TxCertF p x) = map (TxCertF p) (shrink x) -shrinkRep (TxCertR Mary) (TxCertF p x) = map (TxCertF p) (shrink x) -shrinkRep (TxCertR Alonzo) (TxCertF p x) = map (TxCertF p) (shrink x) -shrinkRep (TxCertR Babbage) (TxCertF p x) = map (TxCertF p) (shrink x) -shrinkRep (TxCertR Conway) (TxCertF p x) = map (TxCertF p) (shrink x) -shrinkRep RewardAccountR t = shrink t -shrinkRep ValidityIntervalR _ = [] -shrinkRep KeyPairR t = shrink t -shrinkRep (GenR _) _ = [] -shrinkRep (ScriptR _) _ = [] -shrinkRep ScriptHashR t = shrink t -shrinkRep VCredR t = shrink t -shrinkRep VHashR t = shrink t -shrinkRep NetworkR t = shrink t -shrinkRep (RdmrPtrR _) _ = [] -shrinkRep DataR t = shrink t -shrinkRep DatumR _ = [] -shrinkRep ExUnitsR t = shrink t -shrinkRep DataHashR t = shrink t -shrinkRep AddrR t = shrink t -shrinkRep PCredR t = shrink t -shrinkRep ShelleyTxCertR t = shrink t -shrinkRep ConwayTxCertR t = shrink t -shrinkRep MIRPotR t = shrink t -shrinkRep IsValidR _ = [] -shrinkRep IntegerR t = shrink t -shrinkRep (ScriptsNeededR _) _ = [] -shrinkRep (ScriptPurposeR _) _ = [] -shrinkRep (TxBodyR _) _ = [] -shrinkRep BootstrapWitnessR t = shrink t -shrinkRep SigningKeyR _ = [] -shrinkRep (TxWitsR _p) _ = [] -shrinkRep PayHashR t = shrink t -shrinkRep (TxR _) _ = [] -shrinkRep ScriptIntegrityHashR x = shrink x -shrinkRep AuxiliaryDataHashR x = shrink x -shrinkRep GovActionR _ = [] -shrinkRep (WitVKeyR _) x = shrink x -shrinkRep (TxAuxDataR _) _ = [] -shrinkRep CommColdCredR x = shrink x -shrinkRep CommHotCredR x = shrink x -shrinkRep LanguageR x = shrink x -shrinkRep (LedgerStateR _) _ = [] -shrinkRep StakeHashR x = shrink x -shrinkRep BoolR x = shrink x -shrinkRep DRepR x = shrink x -shrinkRep (PoolMetadataR _) _ = [] -shrinkRep DRepStateR x = shrink x -shrinkRep DStateR _ = [] -shrinkRep GovActionIdR x = shrink x -shrinkRep GovActionIxR (GovActionIx n) = map GovActionIx (shrink n) -shrinkRep GovActionStateR _ = [] -shrinkRep (ProposalsR _) _ = [] -shrinkRep UnitIntervalR x = shrink x -shrinkRep CommitteeR x = shrink x -shrinkRep ConstitutionR x = shrink x -shrinkRep PrevGovActionIdsR x = shrink x -shrinkRep PrevPParamUpdateR x = shrink x -shrinkRep PrevHardForkR x = shrink x -shrinkRep PrevCommitteeR x = shrink x -shrinkRep PrevConstitutionR x = shrink x -shrinkRep RatifyStateR _ = [] -shrinkRep CommitteeAuthorizationR _ = [] -shrinkRep CommitteeStateR _ = [] -shrinkRep VStateR x = shrink x -shrinkRep EnactStateR _ = [] -shrinkRep NumDormantEpochsR x = shrink x -shrinkRep DRepHashR x = shrink x -shrinkRep AnchorR x = shrink x -shrinkRep DRepPulserR _ = [] -shrinkRep DelegateeR _ = [] -shrinkRep VoteR x = shrink x - -hasOrd :: Rep era t -> s t -> Typed (HasConstraint Ord (s t)) -hasOrd rep x = case repHasInstances rep of - IsOrd -> pure $ With x - IsTypeable -> failT [show rep ++ " does not have an Ord instance."] - -hasEq :: Rep era t -> s t -> Typed (HasConstraint Eq (s t)) -hasEq rep x = case repHasInstances rep of - IsEq -> pure $ With x - IsTypeable -> failT [show rep ++ " does not have an Eq instance."] - -format :: Rep era t -> t -> String -format rep@(MapR d r) x = show (ppMap (syn d) (syn r) x) ++ synSum rep x ++ "\nsize=" ++ show (Map.size x) -format rep@(ListR d) x = show (ppList (syn d) x) ++ synSum rep x ++ synSum rep x ++ "\nsize=" ++ show (length x) -format rep@(SetR d) x = show (ppSet (syn d) x) ++ synSum rep x ++ synSum rep x ++ "\nsize=" ++ show (Set.size x) -format (MaybeR d) x = show (ppMaybe (syn d) x) -format r x = synopsis r x - -syn :: Rep era t -> t -> PDoc -syn d x = ppString (format d x) diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Utils.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Utils.hs deleted file mode 100644 index 5331720bf2f..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Utils.hs +++ /dev/null @@ -1,50 +0,0 @@ -{-# LANGUAGE BangPatterns #-} - -module Test.Cardano.Ledger.Constrained.Utils ( - testIO, - checkForSoundness, - explainBad, -) where - -import Cardano.Ledger.Conway.Core (Era) -import qualified Control.Exception as Exc -import Control.Monad (void) -import qualified Data.HashSet as HashSet -import qualified Data.List as List -import qualified Data.Map.Strict as Map -import Test.Cardano.Ledger.Constrained.Ast ( - Pred, - Subst (..), - SubstElem (..), - makeTest, - substToEnv, - varsOfPred, - ) -import Test.Cardano.Ledger.Constrained.Env (Env, Name (..), V (..), emptyEnv) -import Test.Cardano.Ledger.Constrained.Monad (Typed, monadTyped) -import Test.Tasty (TestTree) -import Test.Tasty.HUnit (assertFailure, testCase) - -testIO :: String -> IO a -> TestTree -testIO msg x = testCase msg (Exc.catch (void x) handler) - where - -- handler :: Exc.ErrorCall -> IO () - handler (Exc.SomeException zs) = assertFailure (unlines [msg, show zs]) - -checkForSoundness :: Era era => [Pred era] -> Subst era -> Typed (Env era, Maybe String) -checkForSoundness preds subst = do - !env <- monadTyped $ substToEnv subst emptyEnv - testTriples <- mapM (makeTest env) preds - let bad = filter (\(_, b, _) -> not b) testTriples - if null bad - then pure (env, Nothing) - else pure (env, Just ("Some conditions fail\n" ++ explainBad bad subst)) - -explainBad :: Era era => [(String, Bool, Pred era)] -> Subst era -> String -explainBad cs (Subst subst) = unlines (map getString cs) ++ "\n" ++ show restricted - where - names = List.foldl' varsOfPred HashSet.empty (map getPred cs) - restricted = Map.filterWithKey ok subst - ok key (SubstElem rep _term access) = HashSet.member (Name (V key rep access)) names - getString (s, _, _) = s - getPred (_, _, pr) = pr diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Vars.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Vars.hs deleted file mode 100644 index 7f5a5dfddb2..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Constrained/Vars.hs +++ /dev/null @@ -1,2333 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeOperators #-} - -module Test.Cardano.Ledger.Constrained.Vars where - -import Cardano.Crypto.Signing (SigningKey) -import Cardano.Ledger.Address (Addr (..), Withdrawals (..)) -import Cardano.Ledger.Allegra.Scripts (ValidityInterval (..)) -import Cardano.Ledger.Alonzo.PParams (AlonzoEraPParams, ppCollateralPercentageL, ppMaxTxExUnitsL) -import Cardano.Ledger.Alonzo.Tx (IsValid (..), ScriptIntegrityHash) -import Cardano.Ledger.Alonzo.TxWits (TxDats (..)) -import Cardano.Ledger.Alonzo.UTxO (AlonzoScriptsNeeded (..)) -import Cardano.Ledger.AuxiliaryData (AuxiliaryDataHash) -import Cardano.Ledger.BaseTypes ( - BlocksMade (..), - EpochNo, - Globals (..), - Network (..), - ProtVer (..), - SlotNo (..), - StrictMaybe (..), - UnitInterval, - ) -import qualified Cardano.Ledger.BaseTypes as Base (EpochInterval (..), Globals (..)) -import Cardano.Ledger.CertState ( - CommitteeAuthorization (..), - CommitteeState (..), - csCommitteeCredsL, - vsNumDormantEpochsL, - ) -import Cardano.Ledger.Coin (Coin (..), DeltaCoin) -import Cardano.Ledger.Conway.Governance hiding (GovState) -import Cardano.Ledger.Conway.PParams ( - ConwayEraPParams, - ppDRepActivityL, - ppDRepDepositL, - ppGovActionDepositL, - ) -import Cardano.Ledger.Core ( - PParams, - TxOut, - TxWits, - Value, - addrTxOutL, - coinTxOutL, - ppEMaxL, - ppKeyDepositL, - ppMaxBBSizeL, - ppMaxBHSizeL, - ppMaxTxSizeL, - ppMinFeeAL, - ppMinFeeBL, - ppPoolDepositL, - ppProtocolVersionL, - valueTxOutL, - ) -import Cardano.Ledger.Credential (Credential, Ptr) -import Cardano.Ledger.DRep (DRep (..), DRepState (..)) -import Cardano.Ledger.EpochBoundary (SnapShot (..), SnapShots (..), Stake (..)) -import Cardano.Ledger.Era (Era (EraCrypto)) -import Cardano.Ledger.Hashes (DataHash, EraIndependentScriptIntegrity, ScriptHash (..)) -import Cardano.Ledger.Keys (GenDelegPair, GenDelegs (..), KeyHash, KeyRole (..)) -import Cardano.Ledger.Keys.Bootstrap (BootstrapWitness) -import Cardano.Ledger.Keys.WitVKey (WitVKey (..)) -import Cardano.Ledger.Mary.Value (AssetName (..), MaryValue (..), MultiAsset (..), PolicyID (..)) -import Cardano.Ledger.Plutus (ExUnits (..)) -import Cardano.Ledger.Plutus.Data (Data (..), Datum (..)) -import Cardano.Ledger.PoolDistr (IndividualPoolStake (..), PoolDistr (..)) -import Cardano.Ledger.PoolParams (PoolParams) -import Cardano.Ledger.SafeHash (SafeHash) -import Cardano.Ledger.Shelley.Governance (futureProposalsL, proposalsL) -import qualified Cardano.Ledger.Shelley.Governance as Gov -import Cardano.Ledger.Shelley.HardForks as HardForks (allowMIRTransfer) -import Cardano.Ledger.Shelley.LedgerState hiding ( - credMapL, - delegations, - deltaReserves, - deltaTreasury, - ptrMap, - rewards, - ) -import Cardano.Ledger.Shelley.PParams (ProposedPPUpdates (..)) -import Cardano.Ledger.Shelley.PoolRank (NonMyopic (..)) -import qualified Cardano.Ledger.Shelley.RewardUpdate as RU -import Cardano.Ledger.Shelley.Rewards (Reward (..)) -import Cardano.Ledger.Shelley.TxBody (RewardAccount (..)) -import Cardano.Ledger.Shelley.UTxO (EraUTxO (..), ShelleyScriptsNeeded (..)) -import Cardano.Ledger.TxIn (TxIn (..)) -import Cardano.Ledger.UMap (compactCoinOrError, fromCompact, ptrMap, rdPairMap, sPoolMap, unify) -import Cardano.Ledger.UTxO (UTxO (..)) -import Cardano.Ledger.Val (Val (..)) -import Control.Arrow (first) -import Data.Default.Class (Default (def)) -import Data.Foldable (toList) -import qualified Data.Foldable as F -import Data.Functor.Identity (Identity) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Maybe.Strict (maybeToStrictMaybe, strictMaybeToMaybe) -import Data.Ratio ((%)) -import qualified Data.Sequence.Strict as SS -import Data.Set (Set) -import qualified Data.VMap as VMap -import Data.Word (Word16, Word32, Word64) -import GHC.Stack (HasCallStack) -import Lens.Micro -import Numeric.Natural (Natural) -import Test.Cardano.Ledger.Babbage.Serialisation.Generators () -import Test.Cardano.Ledger.Constrained.Ast -import Test.Cardano.Ledger.Constrained.Classes ( - GovState (..), - PParamsF (..), - PParamsUpdateF (..), - PlutusPointerF (..), - PlutusPurposeF (..), - ScriptF (..), - ScriptsNeededF (..), - TxAuxDataF (..), - TxBodyF (..), - TxCertF (..), - TxF (..), - TxOutF (..), - TxWitsF (..), - ValueF (..), - liftUTxO, - pparamsWrapperL, - unPParamsUpdate, - unPlutusPointerF, - unPlutusPurposeF, - unScriptF, - unTxCertF, - unTxOut, - unValue, - ) -import Test.Cardano.Ledger.Constrained.Env ( - Access (..), - AnyF (..), - Field (..), - Name (..), - V (..), - pV, - ) -import Test.Cardano.Ledger.Constrained.Lenses -import Test.Cardano.Ledger.Constrained.TypeRep (Rep (..), testEql, (:~:) (Refl)) -import Test.Cardano.Ledger.Core.KeyPair (KeyPair (..)) -import Test.Cardano.Ledger.Generic.Fields (TxBodyField (..), TxField (..), WitnessesField (..)) -import qualified Test.Cardano.Ledger.Generic.Fields as Fields -import Test.Cardano.Ledger.Generic.Functions (protocolVersion) -import Test.Cardano.Ledger.Generic.GenState (mkRedeemers) -import Test.Cardano.Ledger.Generic.PrettyCore (ppString, withEraPParams) -import Test.Cardano.Ledger.Generic.Proof -import Test.Cardano.Ledger.Generic.Updaters (merge, newPParams, newTx, newTxBody, newWitnesses) -import Test.Cardano.Ledger.Shelley.Utils (testGlobals) -import qualified Test.Cardano.Ledger.Shelley.Utils as Utils (testGlobals) -import Type.Reflection (Typeable, typeRep) - --- ======================= - --- | Used in Component constraints to turn a Var Term into a component (AnyF era s) --- E.g. (Component foo [ field fooRep fooPart1, field fooRep fooPart2]) --- Where fooPart1 :: Term era a, and fooPart2 :: Term era b --- And fooPart1 has an (Access foo a) --- And fooPart2 has an (Access foo b) -field :: Era era => Rep era s -> Term era t -> AnyF era s -field repS1 (Var (V name rept (Yes repS2 l))) = case testEql repS1 repS2 of - Just Refl -> AnyF (Field name rept repS2 l) - Nothing -> - error - ( unlines - [ "Given rep and lens target do not match: " - , "rep: " ++ show repS1 - , "lens target: " ++ show repS2 - ] - ) -field _ term = error ("field can only be applied to variable terms: " ++ show term) - -getName :: Term era t -> Name era -getName (Var v) = Name v -getName x = error ("nameOf can't find the name in: " ++ show x) - --- ============================================================== --- NewEpochState fields - -type NELens era t = Lens' (NewEpochState era) t - -currentEpoch :: Era era => Term era EpochNo -currentEpoch = Var (V "currentEpoch" EpochR (Yes NewEpochStateR nesELL)) - -prevBlocksMade :: Era era => Term era (Map (KeyHash 'StakePool (EraCrypto era)) Natural) -prevBlocksMade = Var $ V "prevBlocksMade" (MapR PoolHashR NaturalR) (Yes NewEpochStateR nesBprevL) - -currBlocksMade :: Era era => Term era (Map (KeyHash 'StakePool (EraCrypto era)) Natural) -currBlocksMade = Var $ V "currBlocksMade" (MapR PoolHashR NaturalR) (Yes NewEpochStateR nesBcurL) - -poolDistr :: - Era era => Term era (Map (KeyHash 'StakePool (EraCrypto era)) (IndividualPoolStake (EraCrypto era))) -poolDistr = Var $ V "poolDistr" (MapR PoolHashR IPoolStakeR) (Yes NewEpochStateR poolDistrL) - --- | For tests only, Like PoolDistr but has a Rational (rather than a IndividualPoolStake). -mockPoolDistr :: Era era => Term era (Map (KeyHash 'StakePool (EraCrypto era)) Rational) -mockPoolDistr = Var $ V "mockPoolDistr" (MapR PoolHashR RationalR) No - -poolDistrL :: - NELens era (Map (KeyHash 'StakePool (EraCrypto era)) (IndividualPoolStake (EraCrypto era))) -poolDistrL = nesPdL . unPoolDistrL - -unPoolDistrL :: Lens' (PoolDistr c) (Map (KeyHash 'StakePool c) (IndividualPoolStake c)) -unPoolDistrL = lens unPoolDistr (\(PoolDistr _) x -> PoolDistr x) - --- CertState - DState - -rewards :: Era era => Term era (Map (Credential 'Staking (EraCrypto era)) Coin) -rewards = Var $ V "rewards" (MapR CredR CoinR) (Yes NewEpochStateR rewardsL) - -rewardsL :: NELens era (Map (Credential 'Staking (EraCrypto era)) Coin) -rewardsL = nesEsL . esLStateL . lsCertStateL . certDStateL . dsUnifiedL . rewardsUMapL - -delegations :: - Era era => Term era (Map (Credential 'Staking (EraCrypto era)) (KeyHash 'StakePool (EraCrypto era))) -delegations = Var $ V "delegations" (MapR CredR PoolHashR) (Yes NewEpochStateR delegationsL) - -delegationsL :: - NELens era (Map (Credential 'Staking (EraCrypto era)) (KeyHash 'StakePool (EraCrypto era))) -delegationsL = nesEsL . esLStateL . lsCertStateL . certDStateL . dsUnifiedL . delegationsUMapL - -stakeDeposits :: Era era => Term era (Map (Credential 'Staking (EraCrypto era)) Coin) -stakeDeposits = Var $ V "stakeDeposits" (MapR CredR CoinR) (Yes NewEpochStateR stakeDepositsL) - -stakeDepositsL :: NELens era (Map (Credential 'Staking (EraCrypto era)) Coin) -stakeDepositsL = nesEsL . esLStateL . lsCertStateL . certDStateL . dsUnifiedL . stakeDepositsUMapL - -ptrs :: Era era => Term era (Map Ptr (Credential 'Staking (EraCrypto era))) -ptrs = Var $ V "ptrs" (MapR PtrR CredR) (Yes NewEpochStateR ptrsL) - -ptrsL :: NELens era (Map Ptr (Credential 'Staking (EraCrypto era))) -ptrsL = nesEsL . esLStateL . lsCertStateL . certDStateL . dsUnifiedL . ptrsUMapL - -currentDRepState :: - Era era => Term era (Map (Credential 'DRepRole (EraCrypto era)) (DRepState (EraCrypto era))) -currentDRepState = Var $ V "currentDRepState" (MapR VCredR DRepStateR) (Yes NewEpochStateR drepsL) - -drepsL :: NELens era (Map (Credential 'DRepRole (EraCrypto era)) (DRepState (EraCrypto era))) -drepsL = nesEsL . esLStateL . lsCertStateL . certVStateL . vsDRepsL - -drepDelegation :: - Era era => Term era (Map (Credential 'Staking (EraCrypto era)) (DRep (EraCrypto era))) -drepDelegation = Var $ V "drepDelegation" (MapR CredR DRepR) (Yes NewEpochStateR drepDelegationL) - -drepDelegationL :: NELens era (Map (Credential 'Staking (EraCrypto era)) (DRep (EraCrypto era))) -drepDelegationL = nesEsL . esLStateL . lsCertStateL . certDStateL . dsUnifiedL . drepUMapL - -futureGenDelegs :: - Era era => Term era (Map (FutureGenDeleg (EraCrypto era)) (GenDelegPair (EraCrypto era))) -futureGenDelegs = - Var $ - V - "futureGenDelegs" - (MapR FutureGenDelegR GenDelegPairR) - (Yes NewEpochStateR futureGenDelegsL) - -futureGenDelegsL :: NELens era (Map (FutureGenDeleg (EraCrypto era)) (GenDelegPair (EraCrypto era))) -futureGenDelegsL = nesEsL . esLStateL . lsCertStateL . certDStateL . dsFutureGenDelegsL - -genDelegs :: - Era era => Term era (Map (KeyHash 'Genesis (EraCrypto era)) (GenDelegPair (EraCrypto era))) -genDelegs = Var $ V "genDelegs" (MapR GenHashR GenDelegPairR) (Yes NewEpochStateR genDelegsL) - -genDelegsL :: NELens era (Map (KeyHash 'Genesis (EraCrypto era)) (GenDelegPair (EraCrypto era))) -genDelegsL = nesEsL . esLStateL . lsCertStateL . certDStateL . dsGenDelegsL . unGenDelegsL - --- DState - InstantaneousRewards - -instanReserves :: Era era => Term era (Map (Credential 'Staking (EraCrypto era)) Coin) -instanReserves = Var $ V "instanReserves" (MapR CredR CoinR) (Yes NewEpochStateR instanReservesL) - -instanReservesL :: NELens era (Map (Credential 'Staking (EraCrypto era)) Coin) -instanReservesL = nesEsL . esLStateL . lsCertStateL . certDStateL . dsIRewardsL . iRReservesL - -instanReservesSum :: Era era => Term era Coin -instanReservesSum = Var (V "instanReservesSum" CoinR No) - -instanTreasury :: Era era => Term era (Map (Credential 'Staking (EraCrypto era)) Coin) -instanTreasury = Var $ V "instanTreasury" (MapR CredR CoinR) (Yes NewEpochStateR instanTreasuryL) - -instanTreasuryL :: NELens era (Map (Credential 'Staking (EraCrypto era)) Coin) -instanTreasuryL = nesEsL . esLStateL . lsCertStateL . certDStateL . dsIRewardsL . iRTreasuryL - -instanTreasurySum :: Era era => Term era Coin -instanTreasurySum = Var (V "instanTreasurySum" CoinR No) - -deltaReserves :: Era era => Term era DeltaCoin -deltaReserves = Var $ V "deltaReserves" DeltaCoinR (Yes NewEpochStateR deltaReservesNEL) - -deltaReservesNEL :: NELens era DeltaCoin -deltaReservesNEL = nesEsL . esLStateL . lsCertStateL . certDStateL . dsIRewardsL . deltaReservesL - -deltaTreasury :: Era era => Term era DeltaCoin -deltaTreasury = Var $ V "deltaTreasury" DeltaCoinR (Yes NewEpochStateR deltaTreasuryNEL) - -deltaTreasuryNEL :: NELens era DeltaCoin -deltaTreasuryNEL = nesEsL . esLStateL . lsCertStateL . certDStateL . dsIRewardsL . deltaTreasuryL - --- CertState - PState - -regPools :: - Era era => Term era (Map (KeyHash 'StakePool (EraCrypto era)) (PoolParams (EraCrypto era))) -regPools = Var $ V "regPools" (MapR PoolHashR PoolParamsR) (Yes NewEpochStateR regPoolsL) - -regPoolsL :: NELens era (Map (KeyHash 'StakePool (EraCrypto era)) (PoolParams (EraCrypto era))) -regPoolsL = nesEsL . esLStateL . lsCertStateL . certPStateL . psStakePoolParamsL - -futureRegPools :: - Era era => Term era (Map (KeyHash 'StakePool (EraCrypto era)) (PoolParams (EraCrypto era))) -futureRegPools = Var $ V "futureRegPools" (MapR PoolHashR PoolParamsR) (Yes NewEpochStateR futureRegPoolsL) - -futureRegPoolsL :: - NELens era (Map (KeyHash 'StakePool (EraCrypto era)) (PoolParams (EraCrypto era))) -futureRegPoolsL = nesEsL . esLStateL . lsCertStateL . certPStateL . psFutureStakePoolParamsL - -retiring :: Era era => Term era (Map (KeyHash 'StakePool (EraCrypto era)) EpochNo) -retiring = Var $ V "retiring" (MapR PoolHashR EpochR) (Yes NewEpochStateR retiringL) - -retiringL :: NELens era (Map (KeyHash 'StakePool (EraCrypto era)) EpochNo) -retiringL = nesEsL . esLStateL . lsCertStateL . certPStateL . psRetiringL - -poolDeposits :: Era era => Term era (Map (KeyHash 'StakePool (EraCrypto era)) Coin) -poolDeposits = Var $ V "poolDeposits" (MapR PoolHashR CoinR) (Yes NewEpochStateR poolDepositsL) - -poolDepositsL :: NELens era (Map (KeyHash 'StakePool (EraCrypto era)) Coin) -poolDepositsL = nesEsL . esLStateL . lsCertStateL . certPStateL . psDepositsL - -committeeState :: - Era era => - Term - era - (Map (Credential 'ColdCommitteeRole (EraCrypto era)) (CommitteeAuthorization (EraCrypto era))) -committeeState = - Var $ - V "committeeState" (MapR CommColdCredR CommitteeAuthorizationR) (Yes NewEpochStateR committeeStateL) - -committeeStateL :: - NELens - era - (Map (Credential 'ColdCommitteeRole (EraCrypto era)) (CommitteeAuthorization (EraCrypto era))) -committeeStateL = nesEsL . esLStateL . lsCertStateL . certVStateL . vsCommitteeStateL . csCommitteeCredsL - -numDormantEpochs :: Era era => Term era EpochNo -numDormantEpochs = Var $ V "numDormantEpochs" EpochR (Yes NewEpochStateR numDormantEpochsL) - -numDormantEpochsL :: NELens era EpochNo -numDormantEpochsL = nesEsL . esLStateL . lsCertStateL . certVStateL . vsNumDormantEpochsL - --- UTxOState - -utxo :: Era era => Proof era -> Term era (Map (TxIn (EraCrypto era)) (TxOutF era)) -utxo p = Var $ pV p "utxo" (MapR TxInR (TxOutR p)) (Yes NewEpochStateR (utxoL p)) - -utxoL :: Proof era -> NELens era (Map (TxIn (EraCrypto era)) (TxOutF era)) -utxoL proof = nesEsL . esLStateL . lsUTxOStateL . utxosUtxoL . unUtxoL proof - -unUtxoL :: Proof era -> Lens' (UTxO era) (Map (TxIn (EraCrypto era)) (TxOutF era)) -unUtxoL p = lens (Map.map (TxOutF p) . unUTxO) (\(UTxO _) new -> liftUTxO new) - -deposits :: Era era => Term era Coin -deposits = Var $ V "deposits" CoinR (Yes NewEpochStateR depositsL) - -depositsL :: NELens era Coin -depositsL = nesEsL . esLStateL . lsUTxOStateL . utxosDepositedL - -fees :: Era era => Term era Coin -fees = Var $ V "fees" CoinR (Yes NewEpochStateR feesL) - -feesL :: NELens era Coin -feesL = nesEsL . esLStateL . lsUTxOStateL . utxosFeesL - -donation :: Era era => Term era Coin -donation = Var $ V "donation" CoinR (Yes NewEpochStateR donationL) - -donationL :: NELens era Coin -donationL = nesEsL . esLStateL . lsUTxOStateL . utxosDonationL - -ppup :: Era era => Proof era -> Term era (ShelleyGovState era) -ppup p = Var $ pV p "ppup" (PPUPStateR p) (Yes NewEpochStateR (ppupsL p)) - -ppupsL :: Proof era -> NELens era (ShelleyGovState era) -ppupsL Shelley = nesEsL . esLStateL . lsUTxOStateL . utxosGovStateL -ppupsL Allegra = nesEsL . esLStateL . lsUTxOStateL . utxosGovStateL -ppupsL Mary = nesEsL . esLStateL . lsUTxOStateL . utxosGovStateL -ppupsL Alonzo = nesEsL . esLStateL . lsUTxOStateL . utxosGovStateL -ppupsL Babbage = nesEsL . esLStateL . lsUTxOStateL . utxosGovStateL -ppupsL Conway = error "Conway era does not have a PPUPState, in ppupsL" - -pparamProposals :: - Era era => Proof era -> Term era (Map (KeyHash 'Genesis (EraCrypto era)) (PParamsUpdateF era)) -pparamProposals p = Var (pV p "pparamProposals" (MapR GenHashR (PParamsUpdateR p)) No) - -futurePParamProposals :: - Era era => Proof era -> Term era (Map (KeyHash 'Genesis (EraCrypto era)) (PParamsUpdateF era)) -futurePParamProposals p = Var (pV p "futurePParamProposals" (MapR GenHashR (PParamsUpdateR p)) No) - -currPParams :: Era era => Proof era -> Term era (PParamsF era) -currPParams p = Var (pV p "currPParams" (PParamsR p) No) - -prevPParams :: Gov.EraGov era => Proof era -> Term era (PParamsF era) -prevPParams p = - Var (V "prevPParams" (PParamsR p) (Yes NewEpochStateR (nesEsL . prevPParamsEpochStateL . ppFL p))) - -ppupStateT :: - forall era. - ( Gov.GovState era ~ ShelleyGovState era - , Gov.EraGov era - ) => - Proof era -> - RootTarget era (ShelleyGovState era) (ShelleyGovState era) -ppupStateT p = - Invert "PPUPState" (typeRep @(ShelleyGovState era)) ppupfun - :$ Lensed (pparamProposals p) (proposalsL . proposedMapL p) - :$ Lensed (futurePParamProposals p) (futureProposalsL . proposedMapL p) - :$ Lensed (currPParams p) (Gov.curPParamsGovStateL . pparamsFL p) - :$ Lensed (prevPParams p) (Gov.curPParamsGovStateL . pparamsFL p) - where - ppupfun x y (PParamsF _ pp) (PParamsF _ prev) = - ShelleyGovState - (ProposedPPUpdates (Map.map unPParamsUpdate x)) - (ProposedPPUpdates (Map.map unPParamsUpdate y)) - pp - prev - -govL :: Lens' (GovState era) (Gov.GovState era) -govL = lens f g - where - f :: GovState era -> Gov.GovState era - f (GovState Shelley x) = x - f (GovState Allegra x) = x - f (GovState Mary x) = x - f (GovState Alonzo x) = x - f (GovState Babbage x) = x - f (GovState Conway x) = x - g :: GovState era -> Gov.GovState era -> GovState era - g (GovState p@Shelley _) y = GovState p y - g (GovState p@Allegra _) y = GovState p y - g (GovState p@Mary _) y = GovState p y - g (GovState p@Alonzo _) y = GovState p y - g (GovState p@Babbage _) y = GovState p y - g (GovState p@Conway _) y = GovState p y - -govStateT :: forall era. Era era => Proof era -> RootTarget era (GovState era) (GovState era) -govStateT p@Shelley = Invert "GovState" (typeRep @(GovState era)) (GovState p) :$ Shift (ppupStateT p) govL -govStateT p@Allegra = Invert "GovState" (typeRep @(GovState era)) (GovState p) :$ Shift (ppupStateT p) govL -govStateT p@Mary = Invert "GovState" (typeRep @(GovState era)) (GovState p) :$ Shift (ppupStateT p) govL -govStateT p@Alonzo = Invert "GovState" (typeRep @(GovState era)) (GovState p) :$ Shift (ppupStateT p) govL -govStateT p@Babbage = Invert "GovState" (typeRep @(GovState era)) (GovState p) :$ Shift (ppupStateT p) govL -govStateT p@Conway = - Invert "GovState" (typeRep @(GovState era)) (GovState p) :$ Shift (unReflect conwayGovStateT p) govL - -individualPoolStakeL :: Lens' (IndividualPoolStake c) Rational -individualPoolStakeL = lens individualPoolStake (\ds u -> ds {individualPoolStake = u}) - --- Incremental Stake - -isPtrMapT :: Era era => Term era (Map Ptr Coin) -isPtrMapT = Var $ V "ptrMap" (MapR PtrR CoinR) (Yes NewEpochStateR ptrMapL) - -ptrMapL :: Lens' (NewEpochState era) (Map Ptr Coin) -ptrMapL = nesEsL . esLStateL . lsUTxOStateL . utxosStakeDistrL . isPtrMapL - -isCredMapT :: Era era => Term era (Map (Credential 'Staking (EraCrypto era)) Coin) -isCredMapT = Var $ V "credMap" (MapR CredR CoinR) (Yes NewEpochStateR credMapL) - -credMapL :: Lens' (NewEpochState era) (Map (Credential 'Staking (EraCrypto era)) Coin) -credMapL = nesEsL . esLStateL . lsUTxOStateL . utxosStakeDistrL . isCredMapL - --- | This variable is computed from the UTxO and the PParams, --- It represents the incremental stake that is computed by 'smartUTxO' --- in the UTxOState Target UTxOStateT --- The domain of this map is the complete set of credentials used to delegate Coin --- in the TxOuts in the UTxO. -incrementalStake :: Era era => Term era (Map (Credential 'Staking (EraCrypto era)) Coin) -incrementalStake = Var $ V "incrementalStake" (MapR CredR CoinR) No - -incrementalStakeT :: - Reflect era => Proof era -> Target era (Map (Credential 'Staking (EraCrypto era)) Coin) -incrementalStakeT proof = Constr "computeIncrementalStake" get ^$ (utxo proof) - where - get utxom = - let IStake stakeDistr _ = updateStakeDistribution (justProtocolVersion proof) mempty mempty (liftUTxO utxom) - in Map.map fromCompact stakeDistr - --- ========================== --- AccountState - -treasury :: Era era => Term era Coin -treasury = Var $ V "treasury" CoinR (Yes NewEpochStateR treasuryL) - -treasuryL :: NELens era Coin -treasuryL = nesEsL . esAccountStateL . asTreasuryL - -reserves :: Era era => Term era Coin -reserves = Var $ V "reserves" CoinR (Yes NewEpochStateR reservesL) - -reservesL :: NELens era Coin -reservesL = nesEsL . esAccountStateL . asReservesL - --- | The Coin availabe for a MIR transfer to/from the Treasury --- Computed from 'treasury' + 'deltaTreasury' - sum('instanTreasury') -mirAvailTreasury :: Era era => Term era Coin -mirAvailTreasury = Var (V "mirAvailTreasury" CoinR No) - --- | The Coin availabe for a MIR transfer to/from the Reserves --- Computed from 'reserves' + 'deltaReserves' - sum('instanReserves') -mirAvailReserves :: Era era => Term era Coin -mirAvailReserves = Var (V "mirAvailReserves" CoinR No) - --- EpochState - -snapshots :: Era era => Term era (SnapShots (EraCrypto era)) -snapshots = Var (V "snapshots" SnapShotsR (Yes NewEpochStateR snapshotsL)) - -snapshotsL :: NELens era (SnapShots (EraCrypto era)) -snapshotsL = nesEsL . esSnapshotsL - --- | Lens' from the Core PParams to the Model PParamsF which embeds a (Proof era) -ppFL :: Proof era -> Lens' (PParams era) (PParamsF era) -ppFL p = lens (\pp -> PParamsF p pp) (\_ (PParamsF _ qq) -> qq) - -pparamsVar :: Gov.EraGov era => Proof era -> V era (PParamsF era) -pparamsVar p = (V "pparams" (PParamsR p) (Yes NewEpochStateR (nesEsL . curPParamsEpochStateL . ppFL p))) - -pparams :: Gov.EraGov era => Proof era -> Term era (PParamsF era) -pparams p = Var $ pparamsVar p - -nmLikelihoodsT :: Era era => Term era (Map (KeyHash 'StakePool (EraCrypto era)) [Float]) -nmLikelihoodsT = - Var - ( V - "likelihoodsNM" - (MapR PoolHashR (ListR FloatR)) - (Yes NewEpochStateR (nesEsL . esNonMyopicL . nmLikelihoodsL)) - ) - -nmRewardPotT :: Era era => Term era Coin -nmRewardPotT = Var $ V "rewardPotNM" CoinR (Yes NewEpochStateR (nesEsL . esNonMyopicL . nmRewardPotL)) - --- ===== SnapShots - --- | Helper lens that deals with the Stake newtype, and the shift from Map to VMap -stakeL :: Lens' (Stake c) (Map (Credential 'Staking c) Coin) -stakeL = - lens - (Map.map fromCompact . VMap.toMap . unStake) - (\_ u -> Stake . VMap.fromMap . Map.map compactCoinOrError $ u) - --- | Helper lens that deals with the shift from Map to VMap -vmapL :: Lens' (VMap.VMap VMap.VB VMap.VB k v) (Map k v) -vmapL = lens VMap.toMap (\_ u -> VMap.fromMap u) - -markStakeL :: NELens era (Map (Credential 'Staking (EraCrypto era)) Coin) -markStakeL = nesEsL . esSnapshotsL . ssStakeMarkL . ssStakeL . stakeL - -markStake :: Era era => Term era (Map (Credential 'Staking (EraCrypto era)) Coin) -markStake = Var (V "markStake" (MapR CredR CoinR) (Yes NewEpochStateR markStakeL)) - -markDelegs :: - Era era => Term era (Map (Credential 'Staking (EraCrypto era)) (KeyHash 'StakePool (EraCrypto era))) -markDelegs = Var (V "markDelegs" (MapR CredR PoolHashR) (Yes NewEpochStateR markDelegsL)) - -markDelegsL :: - NELens era (Map (Credential 'Staking (EraCrypto era)) (KeyHash 'StakePool (EraCrypto era))) -markDelegsL = nesEsL . esSnapshotsL . ssStakeMarkL . ssDelegationsL . vmapL - -markPools :: - Era era => Term era (Map (KeyHash 'StakePool (EraCrypto era)) (PoolParams (EraCrypto era))) -markPools = Var (V "markPools" (MapR PoolHashR PoolParamsR) (Yes NewEpochStateR markPoolsL)) - -markPoolsL :: NELens era (Map (KeyHash 'StakePool (EraCrypto era)) (PoolParams (EraCrypto era))) -markPoolsL = nesEsL . esSnapshotsL . ssStakeMarkL . ssPoolParamsL . vmapL - -markSnapShotT :: - forall era. Era era => RootTarget era (SnapShot (EraCrypto era)) (SnapShot (EraCrypto era)) -markSnapShotT = - Invert "SnapShot" (typeRep @(SnapShot (EraCrypto era))) snapfun - :$ Lensed markStake (ssStakeL . stakeL) - :$ Lensed markDelegs (ssDelegationsL . vmapL) - :$ Lensed markPools (ssPoolParamsL . vmapL) - where - snapfun x y z = - SnapShot - (Stake (VMap.fromMap (Map.map compactCoinOrError x))) - (VMap.fromMap y) - (VMap.fromMap z) - -setStake :: Era era => Term era (Map (Credential 'Staking (EraCrypto era)) Coin) -setStake = Var (V "setStake" (MapR CredR CoinR) (Yes NewEpochStateR setStakeL)) - -setStakeL :: NELens era (Map (Credential 'Staking (EraCrypto era)) Coin) -setStakeL = nesEsL . esSnapshotsL . ssStakeSetL . ssStakeL . stakeL - -setDelegs :: - Era era => Term era (Map (Credential 'Staking (EraCrypto era)) (KeyHash 'StakePool (EraCrypto era))) -setDelegs = Var (V "setDelegs" (MapR CredR PoolHashR) (Yes NewEpochStateR setDelegsL)) - -setDelegsL :: - NELens era (Map (Credential 'Staking (EraCrypto era)) (KeyHash 'StakePool (EraCrypto era))) -setDelegsL = nesEsL . esSnapshotsL . ssStakeSetL . ssDelegationsL . vmapL - -setPools :: - Era era => Term era (Map (KeyHash 'StakePool (EraCrypto era)) (PoolParams (EraCrypto era))) -setPools = Var (V "setPools" (MapR PoolHashR PoolParamsR) (Yes NewEpochStateR setPoolsL)) - -setPoolsL :: NELens era (Map (KeyHash 'StakePool (EraCrypto era)) (PoolParams (EraCrypto era))) -setPoolsL = nesEsL . esSnapshotsL . ssStakeSetL . ssPoolParamsL . vmapL - -setSnapShotT :: - forall era. Era era => RootTarget era (SnapShot (EraCrypto era)) (SnapShot (EraCrypto era)) -setSnapShotT = - Invert "SnapShot" (typeRep @(SnapShot (EraCrypto era))) snapfun - :$ Lensed setStake (ssStakeL . stakeL) - :$ Lensed setDelegs (ssDelegationsL . vmapL) - :$ Lensed setPools (ssPoolParamsL . vmapL) - where - snapfun x y z = - SnapShot - (Stake (VMap.fromMap (Map.map compactCoinOrError x))) - (VMap.fromMap y) - (VMap.fromMap z) - -goStake :: Era era => Term era (Map (Credential 'Staking (EraCrypto era)) Coin) -goStake = Var (V "goStake" (MapR CredR CoinR) (Yes NewEpochStateR goStakeL)) - -goStakeL :: NELens era (Map (Credential 'Staking (EraCrypto era)) Coin) -goStakeL = nesEsL . esSnapshotsL . ssStakeGoL . ssStakeL . stakeL - -goDelegs :: - Era era => Term era (Map (Credential 'Staking (EraCrypto era)) (KeyHash 'StakePool (EraCrypto era))) -goDelegs = Var (V "goDelegs" (MapR CredR PoolHashR) (Yes NewEpochStateR goDelegsL)) - -goDelegsL :: - NELens era (Map (Credential 'Staking (EraCrypto era)) (KeyHash 'StakePool (EraCrypto era))) -goDelegsL = nesEsL . esSnapshotsL . ssStakeGoL . ssDelegationsL . vmapL - -goPools :: - Era era => Term era (Map (KeyHash 'StakePool (EraCrypto era)) (PoolParams (EraCrypto era))) -goPools = Var (V "goPools" (MapR PoolHashR PoolParamsR) (Yes NewEpochStateR goPoolsL)) - -goPoolsL :: NELens era (Map (KeyHash 'StakePool (EraCrypto era)) (PoolParams (EraCrypto era))) -goPoolsL = nesEsL . esSnapshotsL . ssStakeGoL . ssPoolParamsL . vmapL - -goSnapShotT :: - forall era. Era era => RootTarget era (SnapShot (EraCrypto era)) (SnapShot (EraCrypto era)) -goSnapShotT = - Invert "SnapShot" (typeRep @(SnapShot (EraCrypto era))) snapfun - :$ Lensed goStake (ssStakeL . stakeL) - :$ Lensed goDelegs (ssDelegationsL . vmapL) - :$ Lensed goPools (ssPoolParamsL . vmapL) - where - snapfun x y z = - SnapShot - (Stake (VMap.fromMap (Map.map compactCoinOrError x))) - (VMap.fromMap y) - (VMap.fromMap z) - -markPoolDistr :: - Era era => Term era (Map (KeyHash 'StakePool (EraCrypto era)) (IndividualPoolStake (EraCrypto era))) -markPoolDistr = Var (V "markPoolDistr" (MapR PoolHashR IPoolStakeR) No) - -markPoolDistrL :: - NELens era (Map (KeyHash 'StakePool (EraCrypto era)) (IndividualPoolStake (EraCrypto era))) -markPoolDistrL = nesEsL . esSnapshotsL . ssStakeMarkPoolDistrL . pooldistrHelpL - -pooldistrHelpL :: Lens' (PoolDistr c) (Map (KeyHash 'StakePool c) (IndividualPoolStake c)) -pooldistrHelpL = lens unPoolDistr (\_ u -> PoolDistr u) - -snapShotFee :: Era era => Term era Coin -snapShotFee = Var (V "snapShotFee" CoinR No) - -snapShotsT :: - forall era. Era era => RootTarget era (SnapShots (EraCrypto era)) (SnapShots (EraCrypto era)) -snapShotsT = - Invert "SnapShots" (typeRep @(SnapShots (EraCrypto era))) shotsfun - :$ Shift markSnapShotT ssStakeMarkL - :$ Lensed markPoolDistr (ssStakeMarkPoolDistrL . pooldistrHelpL) - :$ Shift setSnapShotT ssStakeSetL - :$ Shift goSnapShotT ssStakeGoL - :$ Lensed snapShotFee ssFeeL - where - shotsfun w x = SnapShots w (PoolDistr x) - --- ================================================================== --- RewardUpdate - -deltaT :: Era era => Term era (Maybe DeltaCoin) -deltaT = Var (V "deltaT" (MaybeR DeltaCoinR) (Yes NewEpochStateR deltaTL)) - -deltaTL :: NELens era (Maybe DeltaCoin) -deltaTL = nesRuL . help - where - help :: Lens' (StrictMaybe (PulsingRewUpdate c)) (Maybe DeltaCoin) - help = lens view update - where - view SNothing = Nothing - view (SJust (Complete x)) = Just (RU.deltaT x) - view (SJust _) = Nothing - update (SJust (Complete ru)) (Just change) = SJust (Complete (ru {RU.deltaT = change})) - update _ _ = SNothing - -deltaR :: Era era => Term era (Maybe DeltaCoin) -deltaR = Var (V "deltaR" (MaybeR DeltaCoinR) (Yes NewEpochStateR deltaRL)) - -deltaRL :: NELens era (Maybe DeltaCoin) -deltaRL = nesRuL . help - where - help :: Lens' (StrictMaybe (PulsingRewUpdate c)) (Maybe DeltaCoin) - help = lens view update - where - view SNothing = Nothing - view (SJust (Complete x)) = Just (RU.deltaR x) - view (SJust _) = Nothing - update (SJust (Complete ru)) (Just change) = SJust (Complete (ru {RU.deltaR = change})) - update _ _ = SNothing - -deltaF :: Era era => Term era (Maybe DeltaCoin) -deltaF = Var (V "deltaF" (MaybeR DeltaCoinR) (Yes NewEpochStateR deltaFL)) - -deltaFL :: NELens era (Maybe DeltaCoin) -deltaFL = nesRuL . help - where - help :: Lens' (StrictMaybe (PulsingRewUpdate c)) (Maybe DeltaCoin) - help = lens view update - where - view SNothing = Nothing - view (SJust (Complete x)) = Just (RU.deltaF x) - view (SJust _) = Nothing - update (SJust (Complete ru)) (Just change) = SJust (Complete (ru {RU.deltaF = change})) - update _ _ = SNothing - -rewardSet :: - Era era => Term era (Map (Credential 'Staking (EraCrypto era)) (Set (Reward (EraCrypto era)))) -rewardSet = Var (V "rewardSet" (MapR CredR (SetR RewardR)) No) - -rewardSetL :: - NELens era (Maybe (Map (Credential 'Staking (EraCrypto era)) (Set (Reward (EraCrypto era))))) -rewardSetL = nesRuL . help - where - help :: - Lens' (StrictMaybe (PulsingRewUpdate c)) (Maybe (Map (Credential 'Staking c) (Set (Reward c)))) - help = lens view update - where - view SNothing = Nothing - view (SJust (Complete x)) = Just (RU.rs x) - view (SJust _) = Nothing - update (SJust (Complete ru)) (Just change) = SJust (Complete (ru {RU.rs = change})) - update _ _ = SNothing - --- =================================================================== --- Non Access variables - -totalAda :: Era era => Term era Coin -totalAda = Var $ V "totalAda" CoinR No - -utxoCoin :: Era era => Term era Coin -utxoCoin = Var $ V "utxoCoin" CoinR No - --- | The universe of Staking Credentials. A credential is either KeyHash of a ScriptHash --- Any Plutus scripts in this Universe are NOT Spending scripts, so they do not need a Redeemer -credsUniv :: Era era => Term era (Set (Credential 'Staking (EraCrypto era))) -credsUniv = Var $ V "credsUniv" (SetR CredR) No - --- | The universe of Staking Credentials. A credential is either KeyHash of a ScriptHash --- All Plutus scripts in this Universe are SPENDING scripts, so they will need a Redeemer --- Use this ONLY in the Pay-part of an Address (Do not use this in the Stake-part of an Address) -spendCredsUniv :: Era era => Term era (Set (Credential 'Payment (EraCrypto era))) -spendCredsUniv = Var $ V "spendCredsUniv" (SetR PCredR) No - --- | The universe of Voting Credentials. A credential is either KeyHash of a ScriptHash -voteUniv :: Era era => Term era (Set (Credential 'DRepRole (EraCrypto era))) -voteUniv = Var $ V "voteUniv" (SetR VCredR) No - --- | The universe of DReps -drepUniv :: Era era => Term era (Set (DRep (EraCrypto era))) -drepUniv = Var $ V "drepUniv" (SetR DRepR) No - --- | The universe of Credentials used in voting for constitutional committee changes. -hotCommitteeCredsUniv :: Era era => Term era (Set (Credential 'HotCommitteeRole (EraCrypto era))) -hotCommitteeCredsUniv = Var $ V "hotCommitteeCredsUniv" (SetR CommHotCredR) No - --- | The universe of Credentials used in voting for constitutional committee changes. -coldCommitteeCredsUniv :: Era era => Term era (Set (Credential 'ColdCommitteeRole (EraCrypto era))) -coldCommitteeCredsUniv = Var $ V "coldCommitteeCredsUniv" (SetR CommColdCredR) No - --- | The universe of Payment Credentials. A credential is either KeyHash of a ScriptHash --- We only find payment credentials in the Payment part of an Addr. -payUniv :: Era era => Term era (Set (Credential 'Payment (EraCrypto era))) -payUniv = Var $ V "payUniv" (SetR PCredR) No - --- | The universe of Scripts (and their hashes) useable in spending contexts --- That means if they are Plutus scripts then they will be passed an additional --- argument (the TxInfo context) -spendscriptUniv :: Era era => Proof era -> Term era (Map (ScriptHash (EraCrypto era)) (ScriptF era)) -spendscriptUniv p = Var (pV p "spendscriptUniv" (MapR ScriptHashR (ScriptR p)) No) - --- | The universe of Scripts (and their hashes) useable in contexts other than Spending -nonSpendScriptUniv :: - Era era => Proof era -> Term era (Map (ScriptHash (EraCrypto era)) (ScriptF era)) -nonSpendScriptUniv p = Var (pV p "nonSpendScriptUniv" (MapR ScriptHashR (ScriptR p)) No) - --- | The union of 'spendscriptUniv' and 'nonSpendScriptUniv'. All possible scripts in any context -allScriptUniv :: Era era => Proof era -> Term era (Map (ScriptHash (EraCrypto era)) (ScriptF era)) -allScriptUniv p = Var (pV p "allScriptUniv" (MapR ScriptHashR (ScriptR p)) No) - --- | The universe of Data (and their hashes) -dataUniv :: Era era => Term era (Map (DataHash (EraCrypto era)) (Data era)) -dataUniv = Var (V "dataUniv" (MapR DataHashR DataR) No) - --- | The universe of StakePool key hashes. These hashes hash the cold key of the --- Pool operators. -poolHashUniv :: Era era => Term era (Set (KeyHash 'StakePool (EraCrypto era))) -poolHashUniv = Var $ V "poolHashUniv" (SetR PoolHashR) No - --- | The universe of StakePool key hashes. These hashes hash are hashes of the Owners of a PoolParam -stakeHashUniv :: Era era => Term era (Set (KeyHash 'Staking (EraCrypto era))) -stakeHashUniv = Var $ V "stakeHashUniv" (SetR StakeHashR) No - --- | The universe of DRep key hashes. These hashes hash are hashes of the DReps -drepHashUniv :: Era era => Term era (Set (KeyHash 'DRepRole (EraCrypto era))) -drepHashUniv = Var $ V "drepHashUniv" (SetR DRepHashR) No - --- | The universe of the Genesis key hashes and their signing and validating GenDelegPairs -genesisHashUniv :: - Era era => Term era (Map (KeyHash 'Genesis (EraCrypto era)) (GenDelegPair (EraCrypto era))) -genesisHashUniv = Var $ V "genesisHashUniv" (MapR GenHashR GenDelegPairR) No - -voteCredUniv :: Era era => Term era (Set (Credential 'ColdCommitteeRole (EraCrypto era))) -voteCredUniv = Var $ V "voteHashUniv" (SetR CommColdCredR) No - --- | The universe of TxIns. Pairs of TxId: hashes of previously run transaction bodies, --- and TxIx: indexes of one of the bodies outputs. -txinUniv :: Era era => Term era (Set (TxIn (EraCrypto era))) -txinUniv = Var $ V "txinUniv" (SetR TxInR) No - --- | The universe of GovActionId. Pairs of TxId: hashes of previously run transaction bodies, --- and GovActionIx: indexes of one of the bodies Proposals . -govActionIdUniv :: Era era => Term era (Set (GovActionId (EraCrypto era))) -govActionIdUniv = Var $ V "govActionIdUniv" (SetR GovActionIdR) No - --- | The universe of TxOuts. --- It contains 'colTxoutUniv' as a sublist and 'feeOutput' as an element --- See also 'feeOutput' which is defined by the universes, and is related. -txoutUniv :: Era era => Proof era -> Term era (Set (TxOutF era)) -txoutUniv p = Var (pV p "txoutUniv" (SetR (TxOutR p)) No) - --- | The universe of TxOuts useable for collateral --- The collateral TxOuts consists only of VKey addresses --- and The collateral TxOuts do not contain any non-ADA part -colTxoutUniv :: Era era => Proof era -> Term era (Set (TxOutF era)) -colTxoutUniv p = Var (pV p "colTxoutUniv" (SetR (TxOutR p)) No) - --- | A TxOut, guaranteed to have --- 1) no scripts in its Addr, and --- 2) It's Addr is in the addrUniv --- 3) 'bigCoin' is stored in the Addr Value, and --- 4) the Addr Value has empty MutiAssets --- 5) be a member of the txoutUniv -feeTxOut :: Reflect era => Term era (TxOutF era) -feeTxOut = Var (V "feeTxOut" (TxOutR reify) No) - --- | A TxIn, guaranteed to have --- 1) be a member of the txinUniv -feeTxIn :: Era era => Term era (TxIn (EraCrypto era)) -feeTxIn = Var (V "feeTxIn" TxInR No) - --- | A Coin large enough to pay almost any fee. --- See also 'feeOutput' which is related. -bigCoin :: Era era => Term era Coin -bigCoin = Var (V "bigCoin" CoinR No) - -datumsUniv :: Era era => Term era [Datum era] -datumsUniv = Var (V "datumsUniv" (ListR DatumR) No) - -multiAssetUniv :: Era era => Term era [MultiAsset (EraCrypto era)] -multiAssetUniv = Var (V "multiAssetUniv" (ListR MultiAssetR) No) - --- | The universe of key hashes, and the signing and validating key pairs they represent. -keymapUniv :: - Era era => Term era (Map (KeyHash 'Witness (EraCrypto era)) (KeyPair 'Witness (EraCrypto era))) -keymapUniv = Var (V "keymapUniv" (MapR WitHashR KeyPairR) No) - -currentSlot :: Era era => Term era SlotNo -currentSlot = Var (V "currentSlot" SlotNoR No) - -endSlotDelta :: Era era => Term era SlotNo -endSlotDelta = Var (V "endSlotDelta" SlotNoR No) - -beginSlotDelta :: Era era => Term era SlotNo -beginSlotDelta = Var (V "beginSlotDelta" SlotNoR No) - --- See also currentEpoch in NewEpochState fields - --- | From Globals -network :: Era era => Term era Network -network = Var (V "network" NetworkR No) - --- | This not really a variable, But a constant that is set by the 'testGlobals' --- we reflect this into a Term, so we can refer to it in the Preds. -quorumConstant :: Word64 -quorumConstant = Base.quorum Utils.testGlobals - --- | From Globals. Reflected here at type Int, This is set to 'quorumConstant' in CertState. --- because is is used to compare the Size of things, which are computed as Int -quorum :: Era era => Term era Int -quorum = Var (V "quorum" IntR No) - -addrUniv :: Era era => Term era (Set (Addr (EraCrypto era))) -addrUniv = Var $ V "addrUniv" (SetR AddrR) No - -ptrUniv :: Era era => Term era (Set Ptr) -ptrUniv = Var $ V "ptrUniv" (SetR PtrR) No - -plutusUniv :: Reflect era => Term era (Map (ScriptHash (EraCrypto era)) (IsValid, ScriptF era)) -plutusUniv = Var $ V "plutusUniv" (MapR ScriptHashR (PairR IsValidR (ScriptR reify))) No - -spendPlutusUniv :: Reflect era => Term era (Map (ScriptHash (EraCrypto era)) (IsValid, ScriptF era)) -spendPlutusUniv = Var $ V "spendPlutusUniv" (MapR ScriptHashR (PairR IsValidR (ScriptR reify))) No - --- | The universe of all Byron addresses. In Eras, Babbage, Conway we avoid these Adresses, --- as they do not play well with Plutus Scripts. -byronAddrUniv :: - Era era => Term era (Map (KeyHash 'Payment (EraCrypto era)) (Addr (EraCrypto era), SigningKey)) -byronAddrUniv = Var $ V "byronAddrUniv" (MapR PayHashR (PairR AddrR SigningKeyR)) No - --- ==================================================================== --- Targets for sub types of NewEpochState --- A Target assembles variables into data stuctures. The main concern --- is transforming the types used in the variable model into the real types --- stored in the data structures. 4 examples of such transformation --- 1) Wrapping and unwraping newtypes like StakeDistr --- 2) Transforming Coin into (CompactForm Coin) a Word64 --- 3) Transforming Data.Map into Data.VMap --- 4) Transforming the Models view of Data Families (TxOut, Value, PParams, PParamsUpdate) into --- the data structures view. --- --- The strategy we use is to define a "constructor function" which accepts the model types, --- and which converts the model types into the data structure types. We then wrap this --- "constructor function" in the "Constr" of Target. See 'newEpochStateConstr', --- 'utxofun' and 'dstate' for examples of how this is done. - --- | Abstract constuctor function for NewEpochState -newEpochStateConstr :: - Proof era -> - EpochNo -> - Map (KeyHash 'StakePool (EraCrypto era)) Natural -> - Map (KeyHash 'StakePool (EraCrypto era)) Natural -> - EpochState era -> - Map (KeyHash 'StakePool (EraCrypto era)) (IndividualPoolStake (EraCrypto era)) -> - NewEpochState era -newEpochStateConstr - proof - nesEL' - nesBprev' - nesBcur' - nesEs' - nesPd' = - NewEpochState - nesEL' - (BlocksMade nesBprev') - (BlocksMade nesBcur') - nesEs' - SNothing - (PoolDistr nesPd') - ( case proof of - Shelley -> UTxO Map.empty - Allegra -> () - Mary -> () - Alonzo -> () - Babbage -> () - Conway -> () - ) - --- | Target for NewEpochState -newEpochStateT :: - forall era. Gov.EraGov era => Proof era -> RootTarget era (NewEpochState era) (NewEpochState era) -newEpochStateT proof = - Invert "NewEpochState" (typeRep @(NewEpochState era)) (newEpochStateConstr proof) - :$ Lensed currentEpoch nesELL - :$ Lensed prevBlocksMade nesBprevL - :$ Lensed currBlocksMade nesBcurL - :$ Shift (epochStateT proof) nesEsL - :$ Lensed poolDistr (nesPdL . unPoolDistrL) - --- | Target for EpochState -epochStateT :: - forall era. Gov.EraGov era => Proof era -> RootTarget era (EpochState era) (EpochState era) -epochStateT proof = - Invert "EpochState" (typeRep @(EpochState era)) epochStateFun - :$ Shift accountStateT esAccountStateL - :$ Shift (ledgerStateT proof) esLStateL - :$ Shift snapShotsT esSnapshotsL - where - epochStateFun a s l = EpochState a s l (NonMyopic Map.empty (Coin 0)) - --- | Target for AccountState -accountStateT :: Era era => RootTarget era AccountState AccountState -accountStateT = - Invert "AccountState" (typeRep @AccountState) AccountState - :$ Lensed treasury asTreasuryL - :$ Lensed reserves asReservesL - --- | Target for LedgerState -ledgerStateT :: - forall era. Gov.EraGov era => Proof era -> RootTarget era (LedgerState era) (LedgerState era) -ledgerStateT proof = - Invert "LedgerState" (typeRep @(LedgerState era)) LedgerState - :$ Shift (utxoStateT proof) lsUTxOStateL - :$ Shift certstateT lsCertStateL - -ledgerState :: Reflect era => Term era (LedgerState era) -ledgerState = Var $ V "ledgerState" (LedgerStateR reify) No - --- | Target for UTxOState -utxoStateT :: - forall era. Gov.EraGov era => Proof era -> RootTarget era (UTxOState era) (UTxOState era) -utxoStateT p = - Invert "UTxOState" (typeRep @(UTxOState era)) (unReflect utxofun p) - :$ Lensed (utxo p) (utxosUtxoL . unUtxoL p) - :$ Lensed deposits utxosDepositedL - :$ Lensed fees utxosFeesL - :$ Shift (govStateT p) (utxosGovStateL . unGovL p) - :$ Lensed donation utxosDonationL - where - utxofun :: - Reflect era => - Proof era -> - Map (TxIn (EraCrypto era)) (TxOutF era) -> - Coin -> - Coin -> - GovState era -> - Coin -> - UTxOState era - utxofun proof u c1 c2 (GovState _ x) = smartUTxOState (justProtocolVersion proof) (liftUTxO u) c1 c2 x - -unGovL :: Proof era -> Lens' (Gov.GovState era) (GovState era) -unGovL p = lens (\x -> GovState p x) (\_ (GovState _ y) -> y) - -justProtocolVersion :: forall era. Reflect era => Proof era -> PParams era -justProtocolVersion proof = newPParams proof [Fields.ProtocolVersion $ protocolVersion proof] - --- | Target for CertState -certstateT :: forall era. Era era => RootTarget era (CertState era) (CertState era) -certstateT = - Invert "CertState" (typeRep @(CertState era)) CertState - :$ (Shift vstateT certVStateL) - :$ (Shift pstateT certPStateL) - :$ (Shift dstateT certDStateL) - --- | Target for VState -vstateT :: forall era. Era era => RootTarget era (VState era) (VState era) -vstateT = - Invert "VState" (typeRep @(VState era)) (\x y z -> VState x (CommitteeState y) z) - :$ Lensed currentDRepState vsDRepsL - :$ Lensed committeeState (vsCommitteeStateL . csCommitteeCredsL) - :$ Lensed numDormantEpochs vsNumDormantEpochsL - -committeeL :: - Lens' - ( Map - (Credential 'ColdCommitteeRole (EraCrypto era)) - (CommitteeAuthorization (EraCrypto era)) - ) - (CommitteeState era) -committeeL = lens CommitteeState (\_ (CommitteeState x) -> x) - --- | Target for PState -pstateT :: forall era. Era era => RootTarget era (PState era) (PState era) -pstateT = - Invert "PState" (typeRep @(PState era)) PState - :$ Lensed regPools psStakePoolParamsL - :$ Lensed futureRegPools psFutureStakePoolParamsL - :$ Lensed retiring psRetiringL - :$ Lensed poolDeposits psDepositsL - --- | Target for DState -dstateT :: forall era. Era era => RootTarget era (DState era) (DState era) -dstateT = - Invert "DState" (typeRep @(DState era)) dstate - :$ Lensed rewards (dsUnifiedL . rewardsUMapL) - :$ Lensed stakeDeposits (dsUnifiedL . stakeDepositsUMapL) - :$ Lensed delegations (dsUnifiedL . delegationsUMapL) - :$ Lensed drepDelegation (dsUnifiedL . drepUMapL) - :$ Lensed ptrs (dsUnifiedL . ptrsUMapL) - :$ Lensed futureGenDelegs dsFutureGenDelegsL - :$ Lensed genDelegs (dsGenDelegsL . unGenDelegsL) - :$ Shift instantaneousRewardsT dsIRewardsL - --- | Abstract construcor function for DState -dstate :: - Map (Credential 'Staking (EraCrypto era)) Coin -> - Map (Credential 'Staking (EraCrypto era)) Coin -> - Map (Credential 'Staking (EraCrypto era)) (KeyHash 'StakePool (EraCrypto era)) -> - Map (Credential 'Staking (EraCrypto era)) (DRep (EraCrypto era)) -> - Map Ptr (Credential 'Staking (EraCrypto era)) -> - Map (FutureGenDeleg (EraCrypto era)) (GenDelegPair (EraCrypto era)) -> - Map (KeyHash 'Genesis (EraCrypto era)) (GenDelegPair (EraCrypto era)) -> - InstantaneousRewards (EraCrypto era) -> - DState era -dstate rew dep deleg drepdeleg ptr fgen gen = - DState - (unSplitUMap (Split rew dep deleg drepdeleg (error "Not implemented") ptr)) - fgen - (GenDelegs gen) - -instantaneousRewardsT :: - forall era. - Era era => - RootTarget era (InstantaneousRewards (EraCrypto era)) (InstantaneousRewards (EraCrypto era)) -instantaneousRewardsT = - Invert "InstanRew" (typeRep @(InstantaneousRewards (EraCrypto era))) InstantaneousRewards - :$ Lensed instanReserves iRReservesL - :$ Lensed instanTreasury iRTreasuryL - :$ Lensed deltaReserves deltaReservesL - :$ Lensed deltaTreasury deltaTreasuryL - --- | A String that pretty prints the complete set of variables of the NewEpochState -allvars :: String -allvars = show (ppTarget (newEpochStateT Conway)) - -printTarget :: RootTarget era root t -> IO () -printTarget t = putStrLn (show (ppTarget t)) - --- ===================================================================== --- PParams fields - --- | ProtVer in pparams -protVer :: Era era => Proof era -> Term era ProtVer -protVer proof = - Var - ( pV - proof - "protVer" - (ProtVerR proof) - (Yes (PParamsR proof) $ withEraPParams proof (pparamsWrapperL . ppProtocolVersionL)) - ) - --- | ProtVer in prevPParams -prevProtVer :: Era era => Proof era -> Term era ProtVer -prevProtVer proof = - Var - ( pV - proof - "prevProtVer" - (ProtVerR proof) - (Yes (PParamsR proof) $ withEraPParams proof (pparamsWrapperL . ppProtocolVersionL)) - ) - -minFeeA :: Era era => Proof era -> Term era Coin -minFeeA proof = - Var - ( pV - proof - "minFeeA" - CoinR - (Yes (PParamsR proof) $ withEraPParams proof (pparamsWrapperL . ppMinFeeAL)) - ) - -minFeeB :: Era era => Proof era -> Term era Coin -minFeeB proof = - Var - ( pV - proof - "minFeeB" - CoinR - (Yes (PParamsR proof) $ withEraPParams proof (pparamsWrapperL . ppMinFeeBL)) - ) - --- | Max Block Body Size -maxBBSize :: Era era => Proof era -> Term era Natural -maxBBSize p = - Var - ( pV - p - "maxBBSize" - NaturalR - (Yes (PParamsR p) (withEraPParams p (pparamsWrapperL . ppMaxBBSizeL . word32NaturalL))) - ) - --- | Max Tx Size -maxTxSize :: Era era => Proof era -> Term era Natural -maxTxSize p = - Var - ( pV - p - "maxTxSize" - NaturalR - (Yes (PParamsR p) (withEraPParams p (pparamsWrapperL . ppMaxTxSizeL . word32NaturalL))) - ) - -fromIntegralBounded :: - forall a b. - (HasCallStack, Integral a, Show a, Integral b, Bounded b, Show b) => - String -> - a -> - b -fromIntegralBounded name x - | toInteger (minBound :: b) <= xi && xi <= toInteger (maxBound :: b) = fromIntegral x - | otherwise = - error $ - "While converting " - ++ name - ++ ", " - ++ show x <> " is out of bounds: " <> show (minBound :: b, maxBound :: b) - where - xi = toInteger x - -word32NaturalL :: Lens' Word32 Natural -word32NaturalL = lens fromIntegral (\_ y -> fromIntegralBounded "word32NaturaL" (toInteger y)) - -word16NaturalL :: Lens' Word16 Natural -word16NaturalL = lens fromIntegral (\_ y -> fromIntegralBounded "word16NaturalL" (toInteger y)) - --- | Max Block Header Size -maxBHSize :: Era era => Proof era -> Term era Natural -maxBHSize p = - Var - ( pV - p - "maxBHSize" - NaturalR - (Yes (PParamsR p) (withEraPParams p (pparamsWrapperL . ppMaxBHSizeL . word16NaturalL))) - ) - -poolDepAmt :: Era era => Proof era -> Term era Coin -poolDepAmt p = - Var $ - pV - p - "poolDepAmt" - CoinR - (Yes (PParamsR p) (withEraPParams p (pparamsWrapperL . ppPoolDepositL))) - -keyDepAmt :: Era era => Proof era -> Term era Coin -keyDepAmt p = - Var $ - pV - p - "keyDepAmt" - CoinR - (Yes (PParamsR p) (withEraPParams p (pparamsWrapperL . ppKeyDepositL))) - -proposalDeposit :: ConwayEraPParams era => Proof era -> Term era Coin -proposalDeposit p = - Var $ - pV - p - "proposalDeposit" - CoinR - (Yes (PParamsR p) (withEraPParams p (pparamsWrapperL . ppGovActionDepositL))) - -maxTxExUnits :: AlonzoEraPParams era => Proof era -> Term era ExUnits -maxTxExUnits p = - Var $ - pV - p - "maxTxExUnits" - ExUnitsR - (Yes (PParamsR p) (withEraPParams p (pparamsWrapperL . ppMaxTxExUnitsL))) - -collateralPercentage :: AlonzoEraPParams era => Proof era -> Term era Natural -collateralPercentage p = - Var $ - pV - p - "collateralPercentage" - NaturalR - (Yes (PParamsR p) (withEraPParams p (pparamsWrapperL . ppCollateralPercentageL))) - -drepDeposit :: ConwayEraPParams era => Proof era -> Term era Coin -drepDeposit p = - Var $ - pV p "drepDeposit" CoinR (Yes (PParamsR p) (withEraPParams p (pparamsWrapperL . ppDRepDepositL))) - -drepActivity :: ConwayEraPParams era => Proof era -> Term era Base.EpochInterval -drepActivity p = - Var $ - pV - p - "drepActivty" - EpochIntervalR - (Yes (PParamsR p) (withEraPParams p (pparamsWrapperL . ppDRepActivityL))) - -maxEpoch :: Era era => Proof era -> Term era Base.EpochInterval -maxEpoch p = - Var $ - pV - p - "maxEpoch" - EpochIntervalR - (Yes (PParamsR p) (withEraPParams p (pparamsWrapperL . ppEMaxL))) - --- ================================================================= --- TxBody vars - -txbodyterm :: Reflect era => Term era (TxBodyF era) -txbodyterm = Var $ V "txbodyterm" (TxBodyR reify) No - -inputs :: Era era => Term era (Set (TxIn (EraCrypto era))) -inputs = Var $ V "inputs" (SetR TxInR) No - -collateral :: Era era => Term era (Set (TxIn (EraCrypto era))) -collateral = Var $ V "collateral" (SetR TxInR) No - -refInputs :: Era era => Term era (Set (TxIn (EraCrypto era))) -refInputs = Var $ V "refInputs" (SetR TxInR) No - -outputs :: Era era => Proof era -> Term era [TxOutF era] -outputs p = Var $ pV p "outputs" (ListR (TxOutR p)) No - -collateralReturn :: Era era => Proof era -> Term era (TxOutF era) -collateralReturn p = Var $ pV p "collateralReturn" (TxOutR p) No - --- | The sum of all the 'collateral' inputs. The Tx is constucted --- by SNothing or wrapping 'SJust' around this value. -totalCol :: Era era => Term era Coin -totalCol = Var $ V "totalCol" CoinR No - -certs :: Reflect era => Term era [TxCertF era] -certs = Var $ V "certs" (ListR (TxCertR reify)) No - -withdrawals :: forall era. Era era => Term era (Map (RewardAccount (EraCrypto era)) Coin) -withdrawals = Var $ V "withdrawals" (MapR (RewardAccountR @era) CoinR) No - -txfee :: Era era => Term era Coin -txfee = Var $ V "txfee" CoinR No - -ttl :: Era era => Term era SlotNo -ttl = Var $ V "ttl" SlotNoR No - -validityInterval :: Era era => Term era ValidityInterval -validityInterval = Var $ V "validityInterval" ValidityIntervalR No - -mint :: Era era => Term era (Map (ScriptHash (EraCrypto era)) (Map AssetName Integer)) -mint = Var $ V "mint" (MapR ScriptHashR (MapR AssetNameR IntegerR)) No - -reqSignerHashes :: Era era => Term era (Set (KeyHash 'Witness (EraCrypto era))) -reqSignerHashes = Var $ V "reqSignerHashes" (SetR WitHashR) No - -networkID :: Era era => Term era (Maybe Network) -networkID = Var $ V "networkID" (MaybeR NetworkR) No - -adHash :: Era era => Term era (Maybe (AuxiliaryDataHash (EraCrypto era))) -adHash = Var $ V "adHash" (MaybeR AuxiliaryDataHashR) No - -wppHash :: Era era => Term era (Maybe (SafeHash (EraCrypto era) EraIndependentScriptIntegrity)) -wppHash = Var $ V "wppHash" (MaybeR ScriptIntegrityHashR) No - -txDonation :: Era era => Term era Coin -txDonation = Var $ V "txDonation" CoinR No - --- | lift the model type of 'mint' into a MultiAsset -liftMultiAsset :: Map (ScriptHash c) (Map AssetName Integer) -> MultiAsset c -liftMultiAsset m = MultiAsset (Map.mapKeys PolicyID m) - -scriptsNeeded :: Reflect era => Term era (ScriptsNeededF era) -scriptsNeeded = Var $ V "scriptsNeeded" (ScriptsNeededR reify) No - -smNeededL :: - ScriptsNeeded era ~ ShelleyScriptsNeeded era => - Lens' (ScriptsNeededF era) (Set (ScriptHash (EraCrypto era))) -smNeededL = - lens - (\(ScriptsNeededF _ (ShelleyScriptsNeeded s)) -> s) - (\(ScriptsNeededF p _) s -> ScriptsNeededF p (ShelleyScriptsNeeded s)) - -acNeededL :: - ScriptsNeeded era ~ AlonzoScriptsNeeded era => - Lens' (ScriptsNeededF era) [(PlutusPurposeF era, ScriptHash (EraCrypto era))] -acNeededL = - lens - (\(ScriptsNeededF p (AlonzoScriptsNeeded s)) -> map (first (PlutusPurposeF p)) s) - ( \(ScriptsNeededF p _) s -> - ScriptsNeededF p (AlonzoScriptsNeeded (map (first unPlutusPurposeF) s)) - ) - --- =============== --- Auxliary Vars to compute collateral - --- | A Coin that needs to be added to the range of the colInputs in the UtxO --- that will make sure the collateral is large enough to pay the fees if needed -extraCol :: Era era => Term era Coin -extraCol = Var $ V "extraCol" CoinR No - --- | The sum of all the 'collateral' inputs, total colateral of the Tx is computed by adding (SJust _) to this value. -sumCol :: Era era => Term era Coin -sumCol = Var $ V "sumCol" CoinR No - -colRetAddr :: Era era => Term era (Addr (EraCrypto era)) -colRetAddr = Var $ V "colRetAddr" AddrR No - --- | The Coin in the 'collateralReturn' TxOut -colRetCoin :: Era era => Term era Coin -colRetCoin = Var $ V "colRetCoin" CoinR No - --- | The amount that the collateral must cover if there is a two phase error. --- This is roughly the 'collateralPercentage' * 'txfee' . The calculation deals with rounding, --- but you don't need those details to understand what is going on. -owed :: Era era => Term era Coin -owed = Var $ V "owed" CoinR No - --- ============================================================== --- Tx Vars - -txbody :: Reflect era => Term era (TxBodyF era) -txbody = Var $ V "txbody" (TxBodyR reify) No - -txwits :: Reflect era => Term era (TxWitsF era) -txwits = Var $ V "txwits" (TxWitsR reify) No - -txauxdata :: Reflect era => Term era (Maybe (TxAuxDataF era)) -txauxdata = Var $ V "txauxdata" (MaybeR (TxAuxDataR reify)) No - -txisvalid :: Era era => Term era IsValid -txisvalid = Var $ V "txisvalid" IsValidR No - -valids :: Era era => Term era [IsValid] -valids = Var $ V "valids" (ListR IsValidR) No - -txterm :: Reflect era => Term era (TxF era) -txterm = Var $ V "txterm" (TxR reify) No - --- ============================================================== --- Terms and Fields for use in TxOut and TxBody - --- Lenses for use in TxBody - -getRwdCredL :: Lens' (RewardAccount c) (Credential 'Staking c) -getRwdCredL = lens raCredential (\r c -> r {raCredential = c}) - -txOutFL :: Lens' (TxOutF era) (TxOut era) -txOutFL = lens unTxOut (\(TxOutF p _) y -> TxOutF p y) - -valueFL :: Reflect era => Lens' (Value era) (ValueF era) -valueFL = lens (ValueF reify) (\_ (ValueF _ u) -> u) - -lensVC :: Val t => Lens' t Coin -lensVC = lens coin $ \t c -> modifyCoin (const c) t - -valueFCoinL :: (HasCallStack, Reflect era) => Lens' (ValueF era) Coin -valueFCoinL = - lens - (coin . unValue) - ( \(ValueF p v) c@(Coin i) -> - if i < 0 - then error ("Coin is less than 0 " ++ show i ++ " in valueFCoinL") - else (ValueF p (modifyCoin (const c) v)) - ) - -outputCoinL :: (HasCallStack, Reflect era) => Lens' (TxOutF era) Coin -outputCoinL = - lens - (\(TxOutF _ out) -> out ^. coinTxOutL) - (\(TxOutF p out) c -> TxOutF p (out & coinTxOutL .~ c)) - --- | a Field from (ValueF era) to Coin -valCoinF :: (HasCallStack, Reflect era) => Field era (ValueF era) Coin -valCoinF = Field "valCoin" CoinR (ValueR reify) valueFCoinL - -valCoin :: (HasCallStack, Reflect era) => Term era Coin -valCoin = fieldToTerm valCoinF - -maryValueMultiAssetL :: Lens' (MaryValue c) (MultiAsset c) -maryValueMultiAssetL = - lens - (\(MaryValue _ ma) -> ma) - (\(MaryValue c _) ma -> MaryValue c ma) - -valueFMultiAssetL :: Lens' (ValueF era) (MultiAsset (EraCrypto era)) -valueFMultiAssetL = lens get put - where - get :: ValueF era -> MultiAsset (EraCrypto era) - get (ValueF p x) = case whichValue p of - ValueShelleyToAllegra -> MultiAsset Map.empty - ValueMaryToConway -> x ^. maryValueMultiAssetL - - put :: ValueF era -> MultiAsset (EraCrypto era) -> ValueF era - put (ValueF p x) new = case whichValue p of - ValueShelleyToAllegra -> ValueF p x - ValueMaryToConway -> ValueF p (x & maryValueMultiAssetL .~ new) - --- | a Field from (ValueF era) to MultiAsset -valueFMultiAssetF :: Reflect era => Field era (ValueF era) (MultiAsset (EraCrypto era)) -valueFMultiAssetF = Field "valueFMultiAsset" MultiAssetR (ValueR reify) valueFMultiAssetL - -valueFMultiAsset :: Reflect era => Term era (MultiAsset (EraCrypto era)) -valueFMultiAsset = fieldToTerm valueFMultiAssetF - --- | a Field from (TxOut era) to (Addr era) -txoutAddressF :: Reflect era => Field era (TxOutF era) (Addr (EraCrypto era)) -txoutAddressF = Field "txoutAddress" AddrR (TxOutR reify) (txOutFL . addrTxOutL) - -txoutAddress :: Reflect era => Term era (Addr (EraCrypto era)) -txoutAddress = fieldToTerm txoutAddressF - --- | a Field from (TxOutF era) to Coin -txoutCoinF :: (HasCallStack, Reflect era) => Field era (TxOutF era) Coin -txoutCoinF = Field "txoutCoin" CoinR (TxOutR reify) outputCoinL - -txoutCoin :: (HasCallStack, Reflect era) => Term era Coin -txoutCoin = fieldToTerm txoutCoinF - --- | a Field from (TxOutF era) to (ValueF era) -txoutAmountF :: Reflect era => Field era (TxOutF era) (ValueF era) -txoutAmountF = Field "txoutAmount" (ValueR reify) (TxOutR reify) (txOutFL . valueTxOutL . valueFL) - -txoutAmount :: Reflect era => Term era (ValueF era) -txoutAmount = fieldToTerm txoutAmountF - --- ================================= --- Witnesses - -scriptWits :: Reflect era => Term era (Map (ScriptHash (EraCrypto era)) (ScriptF era)) -scriptWits = Var $ V "scriptWits" (MapR ScriptHashR (ScriptR reify)) No - -redeemers :: Reflect era => Term era (Map (PlutusPointerF era) (Data era, ExUnits)) -redeemers = Var $ V "redeemers" (MapR (RdmrPtrR reify) (PairR DataR ExUnitsR)) No - -bootWits :: forall era. Reflect era => Term era (Set (BootstrapWitness (EraCrypto era))) -bootWits = Var $ V "bootWits" (SetR (BootstrapWitnessR @era)) No - -dataWits :: Reflect era => Term era (Map (DataHash (EraCrypto era)) (Data era)) -dataWits = Var $ V "dataWits" (MapR DataHashR DataR) No - -keyWits :: Reflect era => Term era (Set (WitVKey 'Witness (EraCrypto era))) -keyWits = Var $ V "keyWits" (SetR (WitVKeyR reify)) No - --- ======================================================================================= --- Targets for building Transactions and their components. Since we compute these in two --- passes, the targets are parameterized by the things that change between the first and --- second passes. Here is an accounting of the things that change --- 1) witsTarget: The witnesses that depend on the hash of the TxBody 'bootWits' and 'keyWits' --- 2) txbodyTarget: 'txfee' , 'totaland 'wppHash' --- 3) txTarget: 'txbodyterm', 'bootWits', and 'keyWits', since a Tx has both a body and witnesses - -witsTarget :: - Reflect era => - Term era (Set (BootstrapWitness (EraCrypto era))) -> - Term era (Set (WitVKey 'Witness (EraCrypto era))) -> - Target era (TxWits era) -witsTarget bootWitsParam keyWitsParam = - Constr "TxWits" witsf ^$ scriptWits ^$ redeemers ^$ bootWitsParam ^$ dataWits ^$ keyWitsParam - where - proof = reify - witsf script redeem boot dataw key = - newWitnesses - merge - proof - [ AddrWits key - , BootWits boot - , ScriptWits (Map.map unScriptF script) - , DataWits (TxDats dataw) - , RdmrWits (mkRedeemers proof $ map (first unPlutusPointerF) $ Map.toList $ redeem) - ] - -txTarget :: - Reflect era => - Term era (TxBodyF era) -> - Term era (Set (BootstrapWitness (EraCrypto era))) -> - Term era (Set (WitVKey 'Witness (EraCrypto era))) -> - Target era (TxF era) -txTarget bodyparam bootWitsParam keyWitsParam = - Constr "tx" txf ^$ bodyparam :$ wits ^$ txauxdata ^$ txisvalid - where - wits = witsTarget bootWitsParam keyWitsParam - txf (TxBodyF proof txb) w auxs isvalid = - TxF proof (newTx proof [Body txb, TxWits w, AuxData' (fixM auxs), Valid isvalid]) - fixM Nothing = [] - fixM (Just (TxAuxDataF _ x)) = [x] - --- | Need to build the TxBody with different terms that control the fee and wppHash so we --- parameterise this target over those two terms -txbodyTarget :: - Reflect era => - Term era Coin -> - Term era (Maybe (ScriptIntegrityHash (EraCrypto era))) -> - Term era Coin -> - Target era (TxBodyF era) -txbodyTarget feeparam wpphashparam totalColParam = - Constr "txbody" txbodyf - ^$ inputs - ^$ collateral - ^$ refInputs - ^$ (outputs proof) - ^$ (collateralReturn proof) - -- \^$ updates - ^$ totalColParam - ^$ certs - ^$ withdrawals - ^$ ttl - ^$ validityInterval - ^$ mint - ^$ reqSignerHashes - ^$ networkID - ^$ adHash - ^$ wpphashparam - ^$ feeparam - ^$ txDonation - where - proof = reify - txbodyf - ins - col - refs - out - (TxOutF _ colret) - totcol - -- updates - cs - ws - tt - vi - mnt - req - net - adh - wpp - fee - donate = - TxBodyF - proof - ( newTxBody - proof - [ Inputs ins - , Collateral col - , RefInputs refs - , Outputs' (map unTxOut out) - , CollateralReturn (SJust colret) - , -- , Update upd - TotalCol (SJust totcol) - , Certs' (map unTxCertF cs) - , Withdrawals' (Withdrawals ws) - , Txfee fee - , TTL tt - , Vldt vi - , Fields.Mint (liftMultiAsset mnt) - , ReqSignerHashes req - , Txnetworkid (maybeToStrictMaybe net) - , AdHash (maybeToStrictMaybe adh) - , WppHash (maybeToStrictMaybe wpp) - , TreasuryDonation donate - ] - ) - --- ================================================== --- Hardforks - -allowMIRTransfer :: Proof era -> Term era Bool -allowMIRTransfer p = Lit BoolR (HardForks.allowMIRTransfer (protocolVersion p)) - --- ==================================== --- ConwayGovState variables - -constitution :: Era era => Term era (Constitution era) -constitution = Var $ V "constitution" ConstitutionR No - -enactTreasury :: Era era => Term era Coin -enactTreasury = Var $ V "enactTreasury" CoinR No - -enactWithdrawals :: forall era. Era era => Term era (Map (Credential 'Staking (EraCrypto era)) Coin) -enactWithdrawals = Var $ V "enactWithdrawals" (MapR CredR CoinR) No - -currentGovActionStates :: - Era era => Term era (Map (GovActionId (EraCrypto era)) (GovActionState era)) -currentGovActionStates = Var $ V "currentGovActionStates" (MapR GovActionIdR GovActionStateR) No - -currentProposalOrder :: Era era => Term era [GovActionId (EraCrypto era)] -currentProposalOrder = Var $ V "currentProposalOrder" (ListR GovActionIdR) No - -prevGovActionStates :: Era era => Term era (Map (GovActionId (EraCrypto era)) (GovActionState era)) -prevGovActionStates = Var $ V "prevGovActionStates" (MapR GovActionIdR GovActionStateR) No - -prevProposalOrder :: Era era => Term era [GovActionId (EraCrypto era)] -prevProposalOrder = Var $ V "prevProposalOrder" (ListR GovActionIdR) No - -previousCommitteeState :: - Era era => - Term - era - ( Map - (Credential 'ColdCommitteeRole (EraCrypto era)) - (Maybe (Credential 'HotCommitteeRole (EraCrypto era))) - ) -previousCommitteeState = Var $ V "previousCommitteeState" (MapR CommColdCredR (MaybeR CommHotCredR)) No - -commMembers :: Era era => Term era (Map (Credential 'ColdCommitteeRole (EraCrypto era)) EpochNo) -commMembers = Var $ V "commMembers" (MapR CommColdCredR EpochR) No - -commQuorum :: Era era => Term era UnitInterval -commQuorum = Var $ V "commQuorum" UnitIntervalR No - -committeeVar :: Era era => Term era (Maybe (Committee era)) -committeeVar = Var $ V "committeeVar" (MaybeR CommitteeR) No - --- ==================================== --- ConwayGovState Targets - --- ================ --- The DRepPulsingState has two forms --- 1. DRPulsing --- 2. DRComplete --- They both act as Snapshots, storing information from previous epochs --- DRPulsing stores each 'prevXXX' as a field, and --- DRComplete stores them in a dedicated datatype PulsingSnapshot - --- | There are 2 forms of DRepPulsingState. This is part of the first one where the pulsing is --- not complete, and the snapshots are stored as fields in the datatype 'DRepPulser'. --- Note that the function part of 'Invert' : 'initPulser' makes many transformations from the --- types used in the Model, and the types stored in the implementation types. --- In order to construct a valid DRepPulser we need the UTxO (to compute the IncrementalStake) --- But we cannot find a Lens that can recover the UTxO from a DRepPulser. So we introduce this --- type ' UtxoPulse' that pairs the two (which makes the recovery possible). W -type UtxoPulse era = - (Map (TxIn (EraCrypto era)) (TxOutF era), DRepPulser era Identity (RatifyState era)) - --- | We also introduce an intermediate variable 'utxoPulse' which can constrain this value --- by using the predicate [ utxoPulse p :<-: pulsingPair p ] -utxoPulse :: (RunConwayRatify era, Reflect era) => Proof era -> Term era (UtxoPulse era) -utxoPulse p = Var $ V "utxoPulse" (PairR (MapR TxInR (TxOutR p)) DRepPulserR) No - --- | an invertable RootTarget to compute a (UtxoPulse era) -pulsingPairT :: - forall era. - (RunConwayRatify era, Reflect era) => - Proof era -> - RootTarget era (UtxoPulse era) (UtxoPulse era) -pulsingPairT proof = - Invert - "DRepPulser" - (typeRep @(UtxoPulse era)) - (\utx a b c d e f g -> (utx, initPulser proof utx a b c d e f g)) - :$ Lensed (utxo proof) _1 - :$ Virtual drepDelegation (ppString "prevDRepDelegations") (_2 . prevDRepDelegationsL) - :$ Virtual poolDistr (ppString "prevPoolDistr") (_2 . prevPoolDistrL) - :$ Virtual currentDRepState (ppString "prevDRepState") (_2 . prevDRepStateL) - :$ Virtual currentEpoch (ppString "prevEpoch") (_2 . prevEpochL) - :$ Virtual committeeState (ppString "prevCommitteeState") (_2 . prevCommitteeStateL) - :$ Shift enactStateT (_2 . prevEnactStateL) - :$ Virtual currGovStates (ppString "prevProposals") (_2 . ratifyGovActionStatesL) - --- TODO access prevTreasury from the EnactState --- :$ Virtual treasury (ppString "prevTreasury") (_2 . prevTreasuryL) - -justPulser :: - forall era. - (Reflect era, RunConwayRatify era) => - Proof era -> - RootTarget - era - (DRepPulser era Identity (RatifyState era)) - (DRepPulser era Identity (RatifyState era)) -justPulser p = - Invert "DRepPulser" (typeRep @(DRepPulser era Identity (RatifyState era))) (initPulser p Map.empty) - :$ Virtual drepDelegation (ppString "prevDRepDelegations") prevDRepDelegationsL - :$ Virtual poolDistr (ppString "prevPoolDistr") prevPoolDistrL - :$ Virtual currentDRepState (ppString "prevDRepState") prevDRepStateL - :$ Virtual currentEpoch (ppString "prevEpoch") prevEpochL - :$ Virtual committeeState (ppString "prevCommitteeState") prevCommitteeStateL - :$ Shift enactStateT prevEnactStateL - :$ Virtual currGovStates (ppString "prevProposals") ratifyGovActionStatesL - --- TODO access prevTreasury from the EnactState --- :$ Virtual treasury (ppString "prevTreasury") (prevTreasuryL) - --- | Variable used to constrain the DRepPulser -drepPulser :: - (RunConwayRatify era, Reflect era) => Term era (DRepPulser era Identity (RatifyState era)) -drepPulser = Var $ V "drepPulser" DRepPulserR No - --- | Predicates that constrain the DRepPuser and all its 'prevXXX' snapshots --- These ensure we generate state just passing the epoch boundary -prevPulsingPreds :: (RunConwayRatify era, Reflect era) => Proof era -> [Pred era] -prevPulsingPreds p = - [ Sized (ExactSize 0) (Dom enactWithdrawals) - , Lit CoinR (Coin 0) :=: enactTreasury - , utxoPulse p :<-: pulsingPairT p - , prevGovActionIds - :<-: ( Constr "PrevGovActionIdsFromProposals" (\cp -> toPrevGovActionIds (cp ^. pRootsL)) - ^$ (currProposals p) - ) - , currGovStates :<-: (Constr "proposalsActions" (toList . proposalsActions) ^$ currProposals p) - , select drepPulser (utxoPulse p) _2 - , select partialDRepDistr drepPulser partialDRepDistrL - , select prevDRepDelegations drepPulser prevDRepDelegationsL - , select prevPoolDistr drepPulser prevPoolDistrL - , select prevDRepState drepPulser prevDRepStateL - , select prevEpoch drepPulser prevEpochL - , select prevCommitteeState drepPulser prevCommitteeStateL - , select prevEnactState drepPulser prevEnactStateL - , currProposals p :=: prevProposals p - -- TODO access prevTreasury from the EnactState - -- , select prevTreasury drepPulser prevTreasuryL - ] - --- | Target for assembling 'DRPulsing' form of (DRepPulsingState era) --- from 'drepPulser' :: forall era. Term era (DRepPulser era Identity (RatifyState era)) -pulsingPulsingStateT :: - forall era. - (RunConwayRatify era, Reflect era) => - RootTarget era (DRepPulsingState era) (DRepPulsingState era) -pulsingPulsingStateT = - Invert "DRPulsing" (typeRep @(DRepPulsingState era)) DRPulsing - :$ Virtual drepPulser (ppTarget (justPulser @era reify)) pulsingStatePulserL - --- | The Lens' used in pulsingPulsingStateT -pulsingStatePulserL :: Lens' (DRepPulsingState era) (DRepPulser era Identity (RatifyState era)) -pulsingStatePulserL = lens getter setter - where - getter (DRPulsing x) = x - getter (DRComplete _ _) = - error ("Can't turn a DRCompete into a DRPulsing in pulsingStatePulserL lens.") - {- There is a way we could do this, by partitioning the prev parts of 'DRPulsing' into - 3 parts RatifyState, RatifySignal, and RatifyEnv, and then making Store those 3 - instead of storing a single PulsingSnapshot. Then we could reassemble a DRPulsing - that was ready for completion. - -} - setter (DRPulsing _) x = DRPulsing x - setter (DRComplete _ _) x = DRPulsing x - --- | The abstract form of DRepPulser that transforms from the Model types --- used in the inputs, and the concrete types actually stored in 'DRepPulser' -initPulser :: - forall era. - (Reflect era, RunConwayRatify era) => - Proof era -> - Map (TxIn (EraCrypto era)) (TxOutF era) -> - Map (Credential 'Staking (EraCrypto era)) (DRep (EraCrypto era)) -> - Map (KeyHash 'StakePool (EraCrypto era)) (IndividualPoolStake (EraCrypto era)) -> - Map (Credential 'DRepRole (EraCrypto era)) (DRepState (EraCrypto era)) -> - EpochNo -> - Map (Credential 'ColdCommitteeRole (EraCrypto era)) (CommitteeAuthorization (EraCrypto era)) -> - EnactState era -> - [GovActionState era] -> - -- Coin -> - DRepPulser era Identity (RatifyState era) -initPulser proof utx credDRepMap poold credDRepStateMap epoch commstate enactstate govstates {- treas -} = - let stakeSize = Map.size stakeDistr - k = securityParameter testGlobals - pp :: PParams era - pp = def & ppProtocolVersionL .~ protocolVersion proof - IStake stakeDistr _ = updateStakeDistribution pp mempty mempty (utx ^. utxoFL proof) - in DRepPulser - (max 1 (ceiling (toInteger stakeSize % (8 * toInteger k)))) - (unify Map.empty Map.empty Map.empty credDRepMap) - stakeDistr - stakeDistr - (PoolDistr poold) - Map.empty - credDRepStateMap - epoch - (CommitteeState commstate) - enactstate - (SS.fromList govstates) - -- treas - testGlobals - -proposalsT :: forall era. Era era => Proof era -> RootTarget era (Proposals era) (Proposals era) -proposalsT proof = - Invert "Proposals" (typeRep @(Proposals era)) id - :$ Lensed (currProposals proof) (lens id $ const id) - --- ================================================== --- Second form of DRepPulsingState 'DRComplete' --- ================================================== - --- | The snapshot dedicated datatype (PulsingSnapshot era) stored inside 'DRComplete' --- Note this is used in 'dRepPulsingStateT', the second DRepPulsingState form. -pulsingSnapshotT :: - forall era. Era era => RootTarget era (PulsingSnapshot era) (PulsingSnapshot era) -pulsingSnapshotT = - Invert - "PulsingSnapshot" - (typeRep @(PulsingSnapshot era)) - (\x y -> PulsingSnapshot (SS.fromList x) (Map.map compactCoinOrError y)) - :$ Lensed currGovStates (psProposalsL . strictSeqListL) - :$ Lensed partialDRepDistr (psDRepDistrL . mapCompactFormCoinL) - :$ Lensed prevDRepState psDRepStateL - -pulsingSnapshotL :: Lens' (DRepPulsingState era) (PulsingSnapshot era) -pulsingSnapshotL = lens getter setter - where - getter (DRComplete x _) = x - getter other = fst (finishDRepPulser other) - setter (DRComplete _ y) x = DRComplete x y - setter other x = DRComplete x y - where - (_, y) = finishDRepPulser other - --- | There are 2 forms of DRepPulsingState. This is the second one --- where the pulsing is complete -completePulsingStateT :: - forall era. - Reflect era => - Proof era -> - RootTarget era (DRepPulsingState era) (DRepPulsingState era) -completePulsingStateT _p = - Invert "DRComplete" (typeRep @(DRepPulsingState era)) DRComplete - :$ Shift pulsingSnapshotT pulsingSnapshotL - :$ Lensed ratifyState ratifyStateL - -ratifyState :: Reflect era => Term era (RatifyState era) -ratifyState = Var $ V "ratifyState" RatifyStateR No - -ratifyStateL :: Lens' (DRepPulsingState era) (RatifyState era) -ratifyStateL = lens getter setter - where - getter (DRComplete _ y) = y - getter (x@(DRPulsing {})) = snd (finishDRepPulser x) - setter (DRComplete x _) y = DRComplete x y - setter (z@(DRPulsing {})) y = case finishDRepPulser z of - (x, _) -> DRComplete x y - -prevProposals :: Era era => Proof era -> Term era (Proposals era) -prevProposals p = Var $ V "prevProposals" (ProposalsR p) No - -ratifyGovActionStatesL :: Lens' (DRepPulser era Identity (RatifyState era)) [GovActionState era] -ratifyGovActionStatesL = - lens - (\x -> F.toList (dpProposals x)) - (\x y -> x {dpProposals = SS.fromList y}) - --- | Partially computed DRepDistr inside the pulser -partialDRepDistr :: Era era => Term era (Map (DRep (EraCrypto era)) Coin) -partialDRepDistr = Var $ V "partialDRepDistr" (MapR DRepR CoinR) No - -partialDRepDistrL :: - Lens' (DRepPulser era Identity (RatifyState era)) (Map (DRep (EraCrypto era)) Coin) -partialDRepDistrL = - lens - (\x -> Map.map fromCompact (dpDRepDistr x)) - (\x y -> x {dpDRepDistr = Map.map compactCoinOrError y}) - --- | Snapshot of 'dreps' from the start of the current epoch -prevDRepState :: - Era era => Term era (Map (Credential 'DRepRole (EraCrypto era)) (DRepState (EraCrypto era))) -prevDRepState = Var $ V "prevDRepState" (MapR VCredR DRepStateR) No - -prevDRepStateL :: - Lens' - (DRepPulser era Identity (RatifyState era)) - (Map (Credential 'DRepRole (EraCrypto era)) (DRepState (EraCrypto era))) -prevDRepStateL = lens dpDRepState (\x y -> x {dpDRepState = y}) - --- | snapshot of 'poolDistr' from the start of the current epoch -prevPoolDistr :: - Era era => Term era (Map (KeyHash 'StakePool (EraCrypto era)) (IndividualPoolStake (EraCrypto era))) -prevPoolDistr = Var $ V "prevPoolDistr" (MapR PoolHashR IPoolStakeR) No - -prevPoolDistrL :: - Lens' - (DRepPulser era Identity (RatifyState era)) - (Map (KeyHash 'StakePool (EraCrypto era)) (IndividualPoolStake (EraCrypto era))) -prevPoolDistrL = - lens - (\x -> unPoolDistr (dpStakePoolDistr x)) - (\x y -> x {dpStakePoolDistr = PoolDistr y}) - --- | Snapshot of the 'drepDelegation' from he start of the current epoch. -prevDRepDelegations :: - Era era => Term era (Map (Credential 'Staking (EraCrypto era)) (DRep (EraCrypto era))) -prevDRepDelegations = Var $ V "prevDRepDelegations" (MapR CredR DRepR) No - --- | Snapshot of 'drepDelegation' from the start of the current epoch -prevDRepDelegationsL :: - Lens' - (DRepPulser era Identity (RatifyState era)) - (Map (Credential 'Staking (EraCrypto era)) (DRep (EraCrypto era))) -prevDRepDelegationsL = - lens - (\x -> dpUMap x ^. drepUMapL) - ( \x y -> - x - { dpUMap = - unify - (rdPairMap (dpUMap x)) - (ptrMap (dpUMap x)) - (sPoolMap (dpUMap x)) - y - } - ) - --- | Snapshot of 'committeeState' from the start of the current epoch -prevCommitteeState :: - Era era => - Term - era - (Map (Credential 'ColdCommitteeRole (EraCrypto era)) (CommitteeAuthorization (EraCrypto era))) -prevCommitteeState = Var $ V "prevCommitteeState" (MapR CommColdCredR CommitteeAuthorizationR) No - -prevCommitteeStateL :: - Lens' - (DRepPulser era Identity (RatifyState era)) - (Map (Credential 'ColdCommitteeRole (EraCrypto era)) (CommitteeAuthorization (EraCrypto era))) -prevCommitteeStateL = - lens - (csCommitteeCreds . dpCommitteeState) - (\x y -> x {dpCommitteeState = CommitteeState y}) - --- | Snapshot of the enactState built by 'enactStateT' assembled from data at the start the current epoch -prevEnactState :: Reflect era => Term era (EnactState era) -prevEnactState = Var $ V "prevEnactState" EnactStateR No - -prevEnactStateL :: Lens' (DRepPulser era Identity (RatifyState era)) (EnactState era) -prevEnactStateL = lens dpEnactState (\x y -> x {dpEnactState = y}) - --- | Snapshot of 'currentEpoch' just before the start of the current epoch. (currenEpoch - 1) -prevEpoch :: Era era => Term era EpochNo -prevEpoch = Var $ V "prevEpoch" EpochR No - -prevEpochL :: Lens' (DRepPulser era Identity (RatifyState era)) EpochNo -prevEpochL = lens dpCurrentEpoch (\x y -> x {dpCurrentEpoch = y}) - -prevTreasury :: Era era => Term era Coin -prevTreasury = Var $ V "prevTreasury" CoinR No - -{- --- TODO access prevTreasury from the EnactState -prevTreasuryL :: Lens' (DRepPulser era Identity (RatifyState era)) Coin -prevTreasuryL = lens dpTreasury (\x y -> x {dpTreasury = y}) --} - --- ====================================== --- ConwayGovState - -conwayGovStateT :: - forall era. - (RunConwayRatify era, Reflect era) => - Proof era -> - RootTarget era (ConwayGovState era) (ConwayGovState era) -conwayGovStateT p = - Invert - "ConwayGovState" - (typeRep @(ConwayGovState era)) - ( \pr com con (PParamsF _ cpp) (PParamsF _ ppp) pu -> ConwayGovState pr (maybeToStrictMaybe com) con cpp ppp pu - ) - :$ Lensed (currProposals p) cgsProposalsL - :$ Lensed committeeVar (cgsCommitteeL . strictMaybeToMaybeL) -- see 'committeeT' to construct a binding for committeeVar - :$ Lensed constitution cgsConstitutionL - :$ Lensed (currPParams reify) (cgsCurPParamsL . pparamsFL reify) - :$ Lensed (prevPParams reify) (cgsPrevPParamsL . pparamsFL reify) - :$ Shift pulsingPulsingStateT cgsDRepPulsingStateL - --- | The sum of all the 'gasDeposit' fields of 'currProposals' -proposalDeposits :: Era era => Term era Coin -proposalDeposits = Var (V "proposalDeposits" CoinR No) - --- | A view of 'currentDRepState' (sum of the drepDeposit field of in the range of 'currentDRepState') -drepDepositsView :: Era era => Term era (Map (Credential 'DRepRole (EraCrypto era)) Coin) -drepDepositsView = Var (V "drepDepositsView" (MapR VCredR CoinR) No) - --- | The current set of proposals. Proposals has a serious set of invariants. --- We do not attempt to state these proposals (Yes I know that is cheating) --- We get random Proposals (that meets its invariants) by using (genSizedRep n (ProposalsR p)) -currProposals :: Era era => Proof era -> Term era (Proposals era) -currProposals p = Var $ V "currProposals" (ProposalsR p) No - --- | Part of the EnactState, it is computed by selecting from currProposals -prevGovActionIds :: forall era. Reflect era => Term era (GovRelation StrictMaybe era) -prevGovActionIds = Var $ V "prevGovActionIds" PrevGovActionIdsR No - --- | This is a view of currProposals, so will compute it once --- once currProposals is defined -currGovStates :: Era era => Term era [GovActionState era] -currGovStates = Var (V "currGovStates" (ListR GovActionStateR) No) - -enactStateT :: forall era. Reflect era => RootTarget era (EnactState era) (EnactState era) -enactStateT = - Invert - "EnactState" - (typeRep @(EnactState era)) - (\x y (PParamsF _ z) (PParamsF _ w) a b c -> EnactState (maybeToStrictMaybe x) y z w a b c) - :$ Lensed committeeVar (ensCommitteeL . strictMaybeToMaybeL) -- see 'committeeT' to construct a binding for committeeVar - :$ Lensed constitution ensConstitutionL - :$ Lensed (currPParams reify) (ensCurPParamsL . pparamsFL reify) - :$ Lensed (prevPParams reify) (ensPrevPParamsL . pparamsFL reify) - :$ Lensed enactTreasury ensTreasuryL - :$ Lensed enactWithdrawals ensWithdrawalsL - :$ Lensed prevGovActionIds ensPrevGovActionIdsL - --- | One can use this Target, to make a constraint for 'committeeVar' from the --- vars 'commMembers' and 'commQuorum' -committeeT :: forall era. Era era => RootTarget era (Committee era) (Committee era) -committeeT = - Invert "Committee" (typeRep @(Committee era)) Committee - :$ Lensed commMembers committeeMembersL - :$ Lensed commQuorum committeeThresholdL - -{- -prevGovActionIdsT = - Invert - "prevGovActionIds" - (typeRep @(PrevGovActionIds era)) - (\w x y z -> PrevGovActionIds $ PForest (maybeToStrictMaybe w) (maybeToStrictMaybe x) (maybeToStrictMaybe y) (maybeToStrictMaybe z)) - :$ Lensed prevPParamUpdate (prevGovActionIdsL . pfPParamUpdateL . strictMaybeToMaybeL) - :$ Lensed prevHardFork (prevGovActionIdsL . pfHardForkL . strictMaybeToMaybeL) - :$ Lensed prevCommittee (prevGovActionIdsL . pfCommitteeL . strictMaybeToMaybeL) - :$ Lensed prevConstitution (prevGovActionIdsL . pfConstitutionL . strictMaybeToMaybeL) - -prevPParamUpdate :: Era era => Term era (Maybe (GovPurposeId 'PParamUpdatePurpose era)) -prevPParamUpdate = Var $ V "prevPParamUpdate" (MaybeR PrevPParamUpdateR) No - -prevHardFork :: Era era => Term era (Maybe (GovPurposeId 'HardForkPurpose era)) -prevHardFork = Var $ V "prevHardFork" (MaybeR PrevHardForkR) No - --- | Snapshot of 'committeeState' from the start of the current epoch -prevCommittee :: Era era => Term era (Maybe (GovPurposeId 'CommitteePurpose era)) -prevCommittee = Var $ V "prevCommittee" (MaybeR PrevCommitteeR) No - -prevConstitution :: Era era => Term era (Maybe (GovPurposeId 'ConstitutionPurpose era)) -prevConstitution = Var $ V "prevConstitution" (MaybeR PrevConstitutionR) No - --} - -ppUpdateChildren :: Era era => Term era (Set (GovActionId (EraCrypto era))) -ppUpdateChildren = Var $ V "ppUpdateChildren" (SetR GovActionIdR) No - -hardForkChildren :: Era era => Term era (Set (GovActionId (EraCrypto era))) -hardForkChildren = Var $ V "hardForkChildren" (SetR GovActionIdR) No - -committeeChildren :: Era era => Term era (Set (GovActionId (EraCrypto era))) -committeeChildren = Var $ V "committeeChildren" (SetR GovActionIdR) No - -constitutionChildren :: Era era => Term era (Set (GovActionId (EraCrypto era))) -constitutionChildren = Var $ V "constitutionChildren" (SetR GovActionIdR) No - --- ================ --- Lenses - -pparamsFL :: Proof era -> Lens' (PParams era) (PParamsF era) -pparamsFL p = lens (PParamsF p) (\_ (PParamsF _ x) -> x) - -smCommL :: Lens' (StrictMaybe (Committee era)) (Committee era) -smCommL = lens getter (\_ t -> SJust t) - where - getter SNothing = Committee Map.empty maxBound - getter (SJust x) = x - -proposedMapL :: - Proof era -> - Lens' (ProposedPPUpdates era) (Map (KeyHash 'Genesis (EraCrypto era)) (PParamsUpdateF era)) -proposedMapL p = - lens - (\(ProposedPPUpdates x) -> Map.map (PParamsUpdateF p) x) - (\(ProposedPPUpdates _) y -> ProposedPPUpdates (Map.map unPParamsUpdate y)) - -pair1 :: Era era => Rep era a -> Term era a -pair1 rep = Var (V "pair1" rep No) - -pair2 :: Era era => Rep era b -> Term era b -pair2 rep = Var (V "pair2" rep No) - -pairT :: - forall era a b. - (Typeable a, Typeable b, Era era) => - Rep era a -> - Rep era b -> - RootTarget era (a, b) (a, b) -pairT repa repb = - Invert "(,)" (typeRep @(a, b)) (,) - :$ Lensed (pair1 repa) fstL - :$ Lensed (pair2 repb) sndL - --- ========================================== --- Targets for GovActionState --- The variables xxV align with the field selectors gasXx - -idV :: Era era => Term era (GovActionId (EraCrypto era)) -idV = Var (V "idV" GovActionIdR No) - -committeeVotesV :: Era era => Term era (Map (Credential 'HotCommitteeRole (EraCrypto era)) Vote) -committeeVotesV = Var (V "committeeVotesV" (MapR CommHotCredR VoteR) No) - -drepVotesV :: Era era => Term era (Map (Credential 'DRepRole (EraCrypto era)) Vote) -drepVotesV = Var (V "drepVotesV" (MapR VCredR VoteR) No) - -stakePoolVotesV :: Era era => Term era (Map (KeyHash 'StakePool (EraCrypto era)) Vote) -stakePoolVotesV = Var (V "stakePoolVotesV" (MapR PoolHashR VoteR) No) - -depositV :: Era era => Term era Coin -depositV = Var (V "depositV" CoinR No) - -returnAddrV :: Era era => Term era (RewardAccount (EraCrypto era)) -returnAddrV = Var (V "returnAddrV" RewardAccountR No) - -actionV :: Era era => Term era (GovAction era) -actionV = Var (V "actionV" GovActionR No) - -proposedInV :: Era era => Term era EpochNo -proposedInV = Var (V "proposedInV" EpochR No) - -expiresAfterV :: Era era => Term era EpochNo -expiresAfterV = Var (V "expiresAfterV" EpochR No) - -childrenV :: Era era => Term era (Set (GovActionId (EraCrypto era))) -childrenV = Var (V "childrenV" (SetR GovActionIdR) No) - -anchorV :: Era era => Term era (Anchor (EraCrypto era)) -anchorV = Var (V "anchorV" AnchorR No) - -govActionStateTarget :: - forall era. Era era => RootTarget era (GovActionState era) (GovActionState era) -govActionStateTarget = - Invert "GovActionState" (typeRep @(GovActionState era)) GovActionState - :$ Lensed idV gasIdL - :$ Lensed committeeVotesV gasCommitteeVotesL - :$ Lensed drepVotesV gasDRepVotesL - :$ Lensed stakePoolVotesV gasStakePoolVotesL - :$ Shift - ( Invert "ProposalProcedure" (typeRep @(ProposalProcedure era)) ProposalProcedure - :$ Lensed depositV pProcDepositL - :$ Lensed returnAddrV pProcReturnAddrL - :$ Lensed actionV pProcGovActionL - :$ Lensed anchorV pProcAnchorL - ) - gasProposalProcedureL - :$ Lensed proposedInV gasProposedInL - :$ Lensed expiresAfterV gasExpiresAfterL - --- ============================================================== --- Targets for GovAction, The model does not make the distinction --- the newtype (PrevGovActionId era) and (GovActionId era), The --- targets provide the coercions to produce the real data from the Model - --- | Lift the Model to the real type -liftId :: Maybe (GovActionId (EraCrypto era)) -> StrictMaybe (GovPurposeId p era) -liftId x = GovPurposeId <$> (maybeToStrictMaybe x) - --- | Drop the real type back to the Model -dropId :: StrictMaybe (GovPurposeId p era) -> Maybe (GovActionId (EraCrypto era)) -dropId x = unGovPurposeId <$> (strictMaybeToMaybe x) - --- ===================== --- Variables for the fields of GovAction - -gaPrevId :: Era era => Term era (Maybe (GovActionId (EraCrypto era))) -gaPrevId = Var (V "gaPrevId" (MaybeR GovActionIdR) No) - -gaPParamsUpdate :: Reflect era => Term era (PParamsUpdateF era) -gaPParamsUpdate = Var (V "gsPParamsUpdate" (PParamsUpdateR reify) No) - -gaProtVer :: Reflect era => Term era ProtVer -gaProtVer = Var (V "gaProtVer" (ProtVerR reify) No) - -gaRewardAccount :: Era era => Term era (Map (RewardAccount (EraCrypto era)) Coin) -gaRewardAccount = Var (V "gaRewardAccount" (MapR RewardAccountR CoinR) No) - -gaRemMember :: Era era => Term era (Set (Credential 'ColdCommitteeRole (EraCrypto era))) -gaRemMember = Var (V "gaRemMember" (SetR CommColdCredR) No) - -gaAddMember :: Era era => Term era (Map (Credential 'ColdCommitteeRole (EraCrypto era)) EpochNo) -gaAddMember = Var (V "gaAddMember" (MapR CommColdCredR EpochR) No) - -gaThreshold :: Era era => Term era UnitInterval -gaThreshold = Var (V "gaThreshold" UnitIntervalR No) - -gaPolicy :: Era era => Term era (Maybe (ScriptHash (EraCrypto era))) -gaPolicy = Var (V "gaPolicy" (MaybeR ScriptHashR) No) - -gaConstitutionAnchor :: Era era => Term era (Anchor (EraCrypto era)) -gaConstitutionAnchor = Var (V "gaConstitutionAnchor" AnchorR No) - -gaNewConstitution :: Era era => Term era (Constitution era) -gaNewConstitution = Var (V "gaNewConstitution" ConstitutionR No) - --- =================================== --- The partial Targets, one for each constructor of GovAction - -constitutionT :: forall era. Reflect era => RootTarget era (Constitution era) (Constitution era) -constitutionT = - Invert "Constitution" (typeRep @(Constitution era)) (\x y -> Constitution x $ maybeToStrictMaybe y) - :$ Lensed gaConstitutionAnchor constitutionAnchorL - :$ Lensed gaPolicy (constitutionScriptL . strictMaybeToMaybeL) - -parameterChangeT :: forall era. Reflect era => RootTarget era (GovAction era) (GovAction era) -parameterChangeT = - Invert - "ParameterChange" - (typeRep @(GovAction era)) - (\x y c -> ParameterChange (liftId x) (unPParamsUpdate y) (maybeToStrictMaybe c)) - :$ Partial gaPrevId (\case (ParameterChange x _ _) -> Just $ dropId x; _ -> Nothing) - :$ Partial - gaPParamsUpdate - (\case (ParameterChange _ y _) -> Just $ PParamsUpdateF reify y; _ -> Nothing) - :$ Partial gaPolicy (\case (ParameterChange _ _ x) -> Just $ strictMaybeToMaybe x; _ -> Nothing) - -hardForkInitiationT :: forall era. Reflect era => RootTarget era (GovAction era) (GovAction era) -hardForkInitiationT = - Invert "HardForkInitiation" (typeRep @(GovAction era)) (\x y -> HardForkInitiation (liftId x) y) - :$ Partial gaPrevId (\case (HardForkInitiation x _) -> Just $ dropId x; _ -> Nothing) - :$ Partial gaProtVer (\case (HardForkInitiation _ y) -> Just y; _ -> Nothing) - -treasuryWithdrawalsT :: forall era. Reflect era => RootTarget era (GovAction era) (GovAction era) -treasuryWithdrawalsT = - Invert - "TreasuryWithdrawals" - (typeRep @(GovAction era)) - (\x y -> TreasuryWithdrawals x $ maybeToStrictMaybe y) - :$ Partial gaRewardAccount (\case (TreasuryWithdrawals x _) -> Just x; _ -> Nothing) - :$ Partial gaPolicy (\case (TreasuryWithdrawals _ y) -> Just $ strictMaybeToMaybe y; _ -> Nothing) - -noConfidenceT :: forall era. Reflect era => RootTarget era (GovAction era) (GovAction era) -noConfidenceT = - Invert "NoConfidence" (typeRep @(GovAction era)) (\x -> NoConfidence (liftId x)) - :$ Partial gaPrevId (\case (NoConfidence x) -> Just $ dropId x; _ -> Nothing) - -updateCommitteeT :: forall era. Reflect era => RootTarget era (GovAction era) (GovAction era) -updateCommitteeT = - Invert "UpdateCommittee" (typeRep @(GovAction era)) (\w x y z -> UpdateCommittee (liftId w) x y z) - :$ Partial gaPrevId (\case (UpdateCommittee x _ _ _) -> Just $ dropId x; _ -> Nothing) - :$ Partial gaRemMember (\case (UpdateCommittee _ x _ _) -> Just x; _ -> Nothing) - :$ Partial gaAddMember (\case (UpdateCommittee _ _ x _) -> Just x; _ -> Nothing) - :$ Partial gaThreshold (\case (UpdateCommittee _ _ _ x) -> Just x; _ -> Nothing) - -newConstitutionT :: forall era. Reflect era => RootTarget era (GovAction era) (GovAction era) -newConstitutionT = - Invert "NewConstitution" (typeRep @(GovAction era)) (\x y -> NewConstitution (liftId x) y) - :$ Partial gaPrevId (\case (UpdateCommittee x _ _ _) -> Just $ dropId x; _ -> Nothing) - :$ Partial gaNewConstitution (\case (NewConstitution _ y) -> Just y; _ -> Nothing) - -infoActionT :: forall era. Reflect era => RootTarget era (GovAction era) (GovAction era) -infoActionT = - Invert "InfoAction" (typeRep @(GovAction era)) (\() -> InfoAction) - :$ Lensed (Lit UnitR ()) (to (const ())) diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/EraClass.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/EraClass.hs deleted file mode 100644 index 38c249cdf51..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/EraClass.hs +++ /dev/null @@ -1,183 +0,0 @@ --- | Everything you need to build Era polymorphic transactions, all in one place -module Test.Cardano.Ledger.EraClass ( - Era (EraCrypto), - -- Tx - EraTx (Tx, mkBasicTx, bodyTxL, witsTxL), - AlonzoEraTx (isValidTxL), - -- TxBody - EraTxBody ( - TxBody, - mkBasicTxBody, - inputsTxBodyL, - outputsTxBodyL, - feeTxBodyL, - withdrawalsTxBodyL, - auxDataHashTxBodyL, - certsTxBodyL - ), - AllegraEraTxBody (vldtTxBodyL), - MaryEraTxBody (mintTxBodyL, mintValueTxBodyF, mintedTxBodyF), - AlonzoEraTxBody ( - collateralInputsTxBodyL, - reqSignerHashesTxBodyL, - scriptIntegrityHashTxBodyL, - networkIdTxBodyL, - redeemerPointer, - redeemerPointerInverse - ), - ConwayEraTxBody ( - currentTreasuryValueTxBodyL, - votingProceduresTxBodyL, - proposalProceduresTxBodyL, - treasuryDonationTxBodyL - ), - -- TxOut - EraTxOut ( - TxOut, - mkBasicTxOut, - valueTxOutL, - compactValueTxOutL, - valueEitherTxOutL, - addrTxOutL, - compactAddrTxOutL, - addrEitherTxOutL - ), - AlonzoEraTxOut (dataHashTxOutL, datumTxOutF), - BabbageEraTxOut (referenceScriptTxOutL, dataTxOutL, datumTxOutL), - coinTxOutL, - -- TxWits - EraTxWits (TxWits, mkBasicTxWits, addrTxWitsL, bootAddrTxWitsL, scriptTxWitsL), - AlonzoEraTxWits (datsTxWitsL, rdmrsTxWitsL), - -- TxAuxData - EraTxAuxData (TxAuxData, hashTxAuxData, validateTxAuxData), - -- TxCerts - EraTxCert ( - TxCert, - getVKeyWitnessTxCert, - getScriptWitnessTxCert, - mkRegPoolTxCert, - getRegPoolTxCert, - mkRetirePoolTxCert, - getRetirePoolTxCert, - lookupRegStakeTxCert, - lookupUnRegStakeTxCert, - getTotalDepositsTxCerts, - getTotalRefundsTxCerts - ), - ConwayEraTxCert ( - mkRegDepositTxCert, - getRegDepositTxCert, - mkUnRegDepositTxCert, - getUnRegDepositTxCert, - mkDelegTxCert, - getDelegTxCert, - mkRegDepositDelegTxCert, - getRegDepositDelegTxCert, - mkAuthCommitteeHotKeyTxCert, - getAuthCommitteeHotKeyTxCert, - mkResignCommitteeColdTxCert, - getResignCommitteeColdTxCert, - mkRegDRepTxCert, - getRegDRepTxCert, - mkUnRegDRepTxCert, - getUnRegDRepTxCert, - mkUpdateDRepTxCert, - getUpdateDRepTxCert - ), - -- PParams - EraPParams (ppProtocolVersionL), - PParams, - emptyPParams, - ppMinFeeAL, - ppMinFeeBL, - ppMaxBBSizeL, - ppMaxTxSizeL, - ppMaxBHSizeL, - ppKeyDepositL, - ppPoolDepositL, - ppEMaxL, - ppNOptL, - ppA0L, - ppRhoL, - ppTauL, - ppDL, - -- PParamUpdate - PParamsUpdate, - emptyPParamsUpdate, - ppuMinFeeAL, - ppuMinFeeBL, - ppuMaxBBSizeL, - ppuMaxTxSizeL, - ppuMaxBHSizeL, - ppuKeyDepositL, - ppuPoolDepositL, - ppuEMaxL, - ppuNOptL, - ppuA0L, - ppuRhoL, - ppuTauL, - ppuDL, - -- Alonzo - AlonzoEraPParams, - ppCoinsPerUTxOWordL, - ppCostModelsL, - ppPricesL, - ppMaxTxExUnitsL, - ppMaxBlockExUnitsL, - ppMaxValSizeL, - ppCollateralPercentageL, - ppMaxCollateralInputsL, - ppuCoinsPerUTxOWordL, - ppuCostModelsL, - ppuPricesL, - ppuMaxTxExUnitsL, - ppuMaxBlockExUnitsL, - ppuMaxValSizeL, - ppuCollateralPercentageL, - ppuMaxCollateralInputsL, - -- Babbage - BabbageEraPParams (..), - ppCoinsPerUTxOByteL, - ppuCoinsPerUTxOByteL, - -- Conway - ConwayEraPParams, - ppPoolVotingThresholdsL, - ppDRepVotingThresholdsL, - ppCommitteeMinSizeL, - ppCommitteeMaxTermLengthL, - ppGovActionLifetimeL, - ppGovActionDepositL, - ppDRepDepositL, - ppDRepActivityL, - ppMinFeeRefScriptCostPerByteL, - ppuPoolVotingThresholdsL, - ppuDRepVotingThresholdsL, - ppuCommitteeMinSizeL, - ppuCommitteeMaxTermLengthL, - ppuGovActionLifetimeL, - ppuGovActionDepositL, - ppuDRepDepositL, - ppuDRepActivityL, - ppuMinFeeRefScriptCostPerByteL, - -- Scripts - EraScript (Script, NativeScript, getNativeScript, fromNativeScript), - hashScript, -) where - -import Cardano.Ledger.Allegra.TxBody (AllegraEraTxBody (..)) -import Cardano.Ledger.Alonzo.PParams -import Cardano.Ledger.Alonzo.Tx (AlonzoEraTx (..)) -import Cardano.Ledger.Alonzo.TxBody (AlonzoEraTxBody (..)) -import Cardano.Ledger.Alonzo.TxOut (AlonzoEraTxOut (..)) -import Cardano.Ledger.Alonzo.TxWits (AlonzoEraTxWits (..)) -import Cardano.Ledger.Babbage.PParams ( - BabbageEraPParams (..), - ppCoinsPerUTxOByteL, - ppuCoinsPerUTxOByteL, - ) -import Cardano.Ledger.Babbage.TxOut (BabbageEraTxOut (..)) -import Cardano.Ledger.Conway.PParams -import Cardano.Ledger.Conway.TxBody (ConwayEraTxBody (..)) -import Cardano.Ledger.Conway.TxCert (ConwayEraTxCert (..)) -import Cardano.Ledger.Core -import Cardano.Ledger.Mary.TxBody (MaryEraTxBody (..)) diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Examples/AlonzoAPI.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Examples/AlonzoAPI.hs deleted file mode 100644 index 9b5fe7d8e4f..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Examples/AlonzoAPI.hs +++ /dev/null @@ -1,115 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-deprecations #-} - -module Test.Cardano.Ledger.Examples.AlonzoAPI (tests) where - -import Cardano.Ledger.Alonzo.Tx (alonzoMinFeeTx) -import Cardano.Ledger.BaseTypes (ProtVer (..), inject, natVersion) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Plutus (ExUnits (..)) -import Cardano.Ledger.Plutus.Data (Data (..)) -import Cardano.Ledger.Plutus.Language (Language (..)) -import Cardano.Ledger.SafeHash (hashAnnotated) -import Cardano.Ledger.Tools (estimateMinFeeTx) -import qualified PlutusLedgerApi.V1 as PV1 -import Test.Cardano.Ledger.Core.KeyPair (mkWitnessVKey) -import Test.Cardano.Ledger.Examples.AlonzoValidTxUTXOW (mkSingleRedeemer) -import Test.Cardano.Ledger.Examples.STSTestUtils ( - mkGenesisTxIn, - mkTxDats, - someAddr, - someKeys, - ) -import Test.Cardano.Ledger.Generic.Fields ( - PParamsField (..), - TxBodyField (..), - TxField (..), - TxOutField (..), - WitnessesField (..), - ) -import Test.Cardano.Ledger.Generic.GenState (PlutusPurposeTag (..)) -import Test.Cardano.Ledger.Generic.PrettyCore () -import Test.Cardano.Ledger.Generic.Proof -import Test.Cardano.Ledger.Generic.Scriptic (Scriptic (..)) -import Test.Cardano.Ledger.Generic.Updaters -import Test.Cardano.Ledger.Plutus (zeroTestingCostModels) -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.HUnit (Assertion, testCase, (@?=)) - -tests :: TestTree -tests = - testGroup "Alonzo API" [testCase "estimateMinFee" testEstimateMinFee] - -type A = AlonzoEra StandardCrypto - -testEstimateMinFee :: Assertion -testEstimateMinFee = - estimateMinFeeTx @A - pparams - validatingTxNoWits - 1 - 0 - 0 - @?= alonzoMinFeeTx pparams validatingTx - where - pf = Alonzo - pparams = newPParams pf $ defaultPPs ++ [MinfeeA (Coin 1)] - validatingTxNoWits = - newTx - pf - [ Body validatingBody - , WitnessesI - [ ScriptWits' [always 3 pf] - , DataWits' [Data (PV1.I 123)] - , RdmrWits redeemers - ] - ] - validatingTx = - newTx - pf - [ Body validatingBody - , WitnessesI - [ AddrWits' [mkWitnessVKey (hashAnnotated validatingBody) (someKeys pf)] - , ScriptWits' [always 3 pf] - , DataWits' [Data (PV1.I 123)] - , RdmrWits redeemers - ] - ] - validatingBody = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 1] - , Collateral' [mkGenesisTxIn 11] - , Outputs' [newTxOut pf [Address (someAddr pf), Amount (inject $ Coin 4995)]] - , Txfee (Coin 316) - , WppHash - ( newScriptIntegrityHash - pf - (newPParams pf defaultPPs) - [PlutusV1] - redeemers - (mkTxDats (Data (PV1.I 123))) - ) - ] - redeemers = mkSingleRedeemer pf Spending (Data (PV1.I 42)) - -defaultPPs :: [PParamsField era] -defaultPPs = - [ Costmdls $ zeroTestingCostModels [PlutusV1] - , MaxValSize 1000000000 - , MaxTxExUnits $ ExUnits 1000000 1000000 - , MaxBlockExUnits $ ExUnits 1000000 1000000 - , ProtocolVersion $ ProtVer (natVersion @5) 0 - , CollateralPercentage 100 - ] diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Examples/AlonzoBBODY.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Examples/AlonzoBBODY.hs deleted file mode 100644 index 41d87db8b21..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Examples/AlonzoBBODY.hs +++ /dev/null @@ -1,756 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} - -module Test.Cardano.Ledger.Examples.AlonzoBBODY (tests) where - -import Cardano.Crypto.Hash.Class (sizeHash) -import Cardano.Ledger.Address (Addr (..), RewardAccount (..)) -import Cardano.Ledger.Alonzo.Rules (AlonzoBbodyPredFailure (..)) -import Cardano.Ledger.Alonzo.Scripts (ExUnits (..)) -import Cardano.Ledger.Alonzo.TxWits (Redeemers (..)) -import Cardano.Ledger.BHeaderView (BHeaderView (..)) -import Cardano.Ledger.BaseTypes ( - BlocksMade (..), - Network (..), - StrictMaybe (..), - natVersion, - textToUrl, - ) -import Cardano.Ledger.Block (Block (..)) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Credential ( - Credential (..), - StakeCredential, - StakeReference (..), - ) -import Cardano.Ledger.Crypto -import Cardano.Ledger.Keys ( - KeyRole (..), - coerceKeyRole, - hashKey, - hashVerKeyVRF, - ) -import Cardano.Ledger.Mary.Value (MaryValue (..), MultiAsset (..)) -import Cardano.Ledger.Plutus.Data (Data (..), hashData) -import Cardano.Ledger.Plutus.Language (Language (..)) -import Cardano.Ledger.PoolParams (PoolMetadata (..)) -import Cardano.Ledger.SafeHash (hashAnnotated) -import Cardano.Ledger.Shelley.API ( - CertState (..), - DState (..), - GenDelegs (..), - LedgerState (..), - PoolParams (..), - ProtVer (..), - UTxO (..), - ) -import Cardano.Ledger.Shelley.Core hiding (TranslationError) -import Cardano.Ledger.Shelley.LedgerState (smartUTxOState) -import Cardano.Ledger.Shelley.Rules ( - ShelleyBbodyPredFailure (..), - ShelleyBbodyState (..), - ShelleyDelegsPredFailure (..), - ShelleyDelplPredFailure (..), - ShelleyLedgerPredFailure (..), - ShelleyLedgersPredFailure (..), - ShelleyPoolPredFailure (..), - ) -import Cardano.Ledger.TxIn (TxIn (..)) -import Cardano.Ledger.UMap (UView (RewDepUView)) -import qualified Cardano.Ledger.UMap as UM -import Cardano.Ledger.Val (inject, (<->)) -import Cardano.Slotting.Slot (SlotNo (..)) -import Control.State.Transition.Extended (STS (..)) -import qualified Data.ByteString as BS (replicate) -import Data.Default.Class (Default (..)) -import qualified Data.Map.Strict as Map -import Data.Maybe (fromJust) -import qualified Data.Sequence.Strict as StrictSeq -import qualified PlutusLedgerApi.V1 as PV1 -import Test.Cardano.Ledger.Core.KeyPair (KeyPair (..), mkWitnessVKey) -import Test.Cardano.Ledger.Examples.AlonzoValidTxUTXOW (mkSingleRedeemer) -import Test.Cardano.Ledger.Examples.STSTestUtils ( - alwaysFailsHash, - alwaysSucceedsHash, - initUTxO, - mkGenesisTxIn, - mkTxDats, - someAddr, - someKeys, - someScriptAddr, - testBBODY, - trustMeP, - ) -import Test.Cardano.Ledger.Generic.Fields ( - PParamsField (..), - TxBodyField (..), - TxField (..), - TxOutField (..), - WitnessesField (..), - ) -import Test.Cardano.Ledger.Generic.GenState (PlutusPurposeTag (..)) -import Test.Cardano.Ledger.Generic.PrettyCore () -import Test.Cardano.Ledger.Generic.Proof -import Test.Cardano.Ledger.Generic.Scriptic ( - HasTokens (..), - PostShelley, - Scriptic (..), - after, - matchkey, - ) -import Test.Cardano.Ledger.Generic.Updaters -import Test.Cardano.Ledger.Plutus (zeroTestingCostModels) -import Test.Cardano.Ledger.Shelley.Utils ( - RawSeed (..), - mkKeyPair, - mkVRFKeyPair, - ) -import Test.Cardano.Protocol.TPraos.Create (VRFKeyPair (..)) -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.HUnit (testCase) - -tests :: TestTree -tests = - testGroup - "Generic Tests, testing Alonzo PredicateFailures, in postAlonzo eras." - [ alonzoBBODYexamplesP Alonzo - , alonzoBBODYexamplesP Babbage - -- alonzoBBODYexamplesP Conway TODO - ] - -alonzoBBODYexamplesP :: - forall era. - ( HasTokens era - , PostShelley era - , Value era ~ MaryValue (EraCrypto era) - , EraSegWits era - , Reflect era - , State (EraRule "LEDGERS" era) ~ LedgerState era - ) => - Proof era -> - TestTree -alonzoBBODYexamplesP proof = - testGroup - (show proof ++ " BBODY examples") - [ testCase "eight plutus scripts cases" $ - testBBODY - (BBODY proof) - (initialBBodyState proof (initUTxO proof)) - (testAlonzoBlock proof) - (Right (testBBodyState proof)) - (pp proof) - , testCase "block with bad pool md hash in tx" $ - testBBODY - (BBODY proof) - (initialBBodyState proof (initUTxO proof)) - (testAlonzoBadPMDHBlock proof) - (Left . pure $ makeTooBig proof) - (pp proof) - ] - -initialBBodyState :: - ( EraTxOut era - , PostShelley era - , EraGov era - , State (EraRule "LEDGERS" era) ~ LedgerState era - ) => - Proof era -> - UTxO era -> - ShelleyBbodyState era -initialBBodyState pf utxo = - BbodyState (LedgerState initialUtxoSt dpstate) (BlocksMade mempty) - where - initialUtxoSt = - smartUTxOState (pp pf) utxo (UM.fromCompact successDeposit) (Coin 0) def mempty - dpstate = - def - { certDState = - DState - { dsUnified = - UM.insert - (scriptStakeCredSuceed pf) - (UM.RDPair (UM.CompactCoin 1000) successDeposit) - (RewDepUView UM.empty) - , dsFutureGenDelegs = Map.empty - , dsGenDelegs = GenDelegs Map.empty - , dsIRewards = def - } - } - -testAlonzoBlock :: - ( GoodCrypto (EraCrypto era) - , HasTokens era - , Scriptic era - , EraSegWits era - , Value era ~ MaryValue (EraCrypto era) - , ShelleyEraTxCert era - ) => - Proof era -> - Block (BHeaderView (EraCrypto era)) era -testAlonzoBlock pf = - makeNaiveBlock - [ trustMeP pf True $ validatingTx pf - , trustMeP pf False $ notValidatingTx pf - , trustMeP pf True $ validatingTxWithWithdrawal pf - , trustMeP pf False $ notValidatingTxWithWithdrawal pf - , trustMeP pf True $ validatingTxWithCert pf - , trustMeP pf False $ notValidatingTxWithCert pf - , trustMeP pf True $ validatingTxWithMint pf - , trustMeP pf False $ notValidatingTxWithMint pf - ] - -testAlonzoBadPMDHBlock :: - GoodCrypto (EraCrypto era) => Proof era -> Block (BHeaderView (EraCrypto era)) era -testAlonzoBadPMDHBlock pf@Alonzo = makeNaiveBlock [trustMeP pf True $ poolMDHTooBigTx pf] -testAlonzoBadPMDHBlock pf@Babbage = makeNaiveBlock [trustMeP pf True $ poolMDHTooBigTx pf] -testAlonzoBadPMDHBlock pf@Conway = makeNaiveBlock [trustMeP pf True $ poolMDHTooBigTx pf] -testAlonzoBadPMDHBlock other = error ("testAlonzoBadPMDHBlock does not work in era " ++ show other) - --- ============================== DATA =============================== - -someDatum :: Era era => Data era -someDatum = Data (PV1.I 123) - -anotherDatum :: Era era => Data era -anotherDatum = Data (PV1.I 0) - -validatingTx :: - forall era. - ( Scriptic era - , EraTx era - , GoodCrypto (EraCrypto era) - ) => - Proof era -> - Tx era -validatingTx pf = - newTx - pf - [ Body (validatingBody pf) - , WitnessesI - [ AddrWits' [mkWitnessVKey (hashAnnotated (validatingBody pf)) (someKeys pf)] - , ScriptWits' [always 3 pf] - , DataWits' [someDatum] - , RdmrWits $ validatingRedeemers pf - ] - ] - -validatingBody :: (Scriptic era, EraTxBody era) => Proof era -> TxBody era -validatingBody pf = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 1] - , Collateral' [mkGenesisTxIn 11] - , Outputs' [validatingTxOut pf] - , Txfee (Coin 5) - , WppHash - ( newScriptIntegrityHash - pf - (pp pf) - [PlutusV1] - (validatingRedeemers pf) - (mkTxDats someDatum) - ) - ] - -validatingRedeemers :: Era era => Proof era -> Redeemers era -validatingRedeemers pf = mkSingleRedeemer pf Spending (Data (PV1.I 42)) - -validatingTxOut :: EraTxOut era => Proof era -> TxOut era -validatingTxOut pf = newTxOut pf [Address (someAddr pf), Amount (inject $ Coin 4995)] - -notValidatingTx :: - ( Scriptic era - , EraTx era - , GoodCrypto (EraCrypto era) - ) => - Proof era -> - Tx era -notValidatingTx pf = - newTx - pf - [ Body notValidatingBody - , WitnessesI - [ AddrWits' [mkWitnessVKey (hashAnnotated notValidatingBody) (someKeys pf)] - , ScriptWits' [never 0 pf] - , DataWits' [anotherDatum] - , RdmrWits notValidatingRedeemers - ] - ] - where - notValidatingBody = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 2] - , Collateral' [mkGenesisTxIn 12] - , Outputs' [newTxOut pf [Address (someAddr pf), Amount (inject $ Coin 2995)]] - , Txfee (Coin 5) - , WppHash - ( newScriptIntegrityHash - pf - (pp pf) - [PlutusV1] - notValidatingRedeemers - (mkTxDats anotherDatum) - ) - ] - notValidatingRedeemers = mkSingleRedeemer pf Spending (Data (PV1.I 1)) - -validatingTxWithWithdrawal :: - forall era. - ( Scriptic era - , EraTx era - , GoodCrypto (EraCrypto era) - ) => - Proof era -> - Tx era -validatingTxWithWithdrawal pf = - newTx - pf - [ Body (validatingBodyWithWithdrawal pf) - , WitnessesI - [ AddrWits' [mkWitnessVKey (hashAnnotated (validatingBodyWithWithdrawal pf)) (someKeys pf)] - , ScriptWits' [always 2 pf] - , RdmrWits $ validatingWithWithdrawalRedeemers pf - ] - ] - -validatingBodyWithWithdrawal :: (EraTxBody era, Scriptic era) => Proof era -> TxBody era -validatingBodyWithWithdrawal pf = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 5] - , Collateral' [mkGenesisTxIn 15] - , Outputs' [validatingTxWithWithdrawalOut pf] - , Txfee (Coin 5) - , Withdrawals' - ( Withdrawals $ - Map.singleton - (RewardAccount Testnet (scriptStakeCredSuceed pf)) - (Coin 1000) - ) - , WppHash - ( newScriptIntegrityHash - pf - (pp pf) - [PlutusV1] - (validatingWithWithdrawalRedeemers pf) - mempty - ) - ] - -validatingWithWithdrawalRedeemers :: Era era => Proof era -> Redeemers era -validatingWithWithdrawalRedeemers pf = mkSingleRedeemer pf Rewarding (Data (PV1.I 42)) - -validatingTxWithWithdrawalOut :: EraTxOut era => Proof era -> TxOut era -validatingTxWithWithdrawalOut pf = newTxOut pf [Address (someAddr pf), Amount (inject $ Coin 1995)] - -notValidatingTxWithWithdrawal :: - forall era. - ( Scriptic era - , EraTx era - , GoodCrypto (EraCrypto era) - ) => - Proof era -> - Tx era -notValidatingTxWithWithdrawal pf = - newTx - pf - [ Body notValidatingBodyWithWithdrawal - , WitnessesI - [ AddrWits' [mkWitnessVKey (hashAnnotated notValidatingBodyWithWithdrawal) (someKeys pf)] - , ScriptWits' [never 1 pf] - , RdmrWits notValidatingRedeemers - ] - ] - where - notValidatingBodyWithWithdrawal = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 6] - , Collateral' [mkGenesisTxIn 16] - , Outputs' [newTxOut pf [Address (someAddr pf), Amount (inject $ Coin 1995)]] - , Txfee (Coin 5) - , Withdrawals' - ( Withdrawals $ - Map.singleton - (RewardAccount Testnet (scriptStakeCredFail pf)) - (Coin 1000) - ) - , WppHash (newScriptIntegrityHash pf (pp pf) [PlutusV1] notValidatingRedeemers mempty) - ] - notValidatingRedeemers = mkSingleRedeemer pf Rewarding (Data (PV1.I 0)) - -validatingTxWithCert :: - forall era. - ( Scriptic era - , EraTx era - , GoodCrypto (EraCrypto era) - , ShelleyEraTxCert era - ) => - Proof era -> - Tx era -validatingTxWithCert pf = - newTx - pf - [ Body (validatingBodyWithCert pf) - , WitnessesI - [ AddrWits' [mkWitnessVKey (hashAnnotated (validatingBodyWithCert pf)) (someKeys pf)] - , ScriptWits' [always 2 pf] - , RdmrWits $ validatingRedeemrsWithCert pf - ] - ] - -validatingBodyWithCert :: - (Scriptic era, EraTxBody era, ShelleyEraTxCert era) => Proof era -> TxBody era -validatingBodyWithCert pf = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 3] - , Collateral' [mkGenesisTxIn 13] - , Outputs' [validatingTxWithCertOut pf] - , Certs' [UnRegTxCert (scriptStakeCredSuceed pf)] - , Txfee (Coin 5) - , WppHash (newScriptIntegrityHash pf (pp pf) [PlutusV1] (validatingRedeemrsWithCert pf) mempty) - ] - -validatingRedeemrsWithCert :: Era era => Proof era -> Redeemers era -validatingRedeemrsWithCert pf = mkSingleRedeemer pf Certifying (Data (PV1.I 42)) - -validatingTxWithCertOut :: EraTxOut era => Proof era -> TxOut era -validatingTxWithCertOut pf = - newTxOut - pf - [ Address (someAddr pf) - , Amount (inject $ Coin 995 <> UM.fromCompact successDeposit) - ] - -notValidatingTxWithCert :: - forall era. - ( Scriptic era - , EraTx era - , GoodCrypto (EraCrypto era) - , ShelleyEraTxCert era - ) => - Proof era -> - Tx era -notValidatingTxWithCert pf = - newTx - pf - [ Body notValidatingBodyWithCert - , WitnessesI - [ AddrWits' [mkWitnessVKey (hashAnnotated notValidatingBodyWithCert) (someKeys pf)] - , ScriptWits' [never 1 pf] - , RdmrWits notValidatingRedeemersWithCert - ] - ] - where - notValidatingBodyWithCert = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 4] - , Collateral' [mkGenesisTxIn 14] - , Outputs' [newTxOut pf [Address (someAddr pf), Amount (inject $ Coin 995)]] - , Certs' [UnRegTxCert (scriptStakeCredFail pf)] - , Txfee (Coin 5) - , WppHash (newScriptIntegrityHash pf (pp pf) [PlutusV1] notValidatingRedeemersWithCert mempty) - ] - notValidatingRedeemersWithCert = mkSingleRedeemer pf Certifying (Data (PV1.I 0)) - -validatingTxWithMint :: - forall era. - ( Scriptic era - , HasTokens era - , EraTx era - , GoodCrypto (EraCrypto era) - , Value era ~ MaryValue (EraCrypto era) - ) => - Proof era -> - Tx era -validatingTxWithMint pf = - newTx - pf - [ Body (validatingBodyWithMint pf) - , WitnessesI - [ AddrWits' [mkWitnessVKey (hashAnnotated (validatingBodyWithMint pf)) (someKeys pf)] - , ScriptWits' [always 2 pf] - , RdmrWits $ validatingRedeemersWithMint pf - ] - ] - -validatingBodyWithMint :: - (HasTokens era, EraTxBody era, Scriptic era, Value era ~ MaryValue (EraCrypto era)) => - Proof era -> - TxBody era -validatingBodyWithMint pf = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 7] - , Collateral' [mkGenesisTxIn 17] - , Outputs' [validatingTxWithMintOut pf] - , Txfee (Coin 5) - , Mint (multiAsset pf) - , WppHash (newScriptIntegrityHash pf (pp pf) [PlutusV1] (validatingRedeemersWithMint pf) mempty) - ] - -validatingRedeemersWithMint :: Era era => Proof era -> Redeemers era -validatingRedeemersWithMint pf = mkSingleRedeemer pf Minting (Data (PV1.I 42)) - -multiAsset :: forall era. (Scriptic era, HasTokens era) => Proof era -> MultiAsset (EraCrypto era) -multiAsset pf = forge @era 1 (always 2 pf) - -validatingTxWithMintOut :: - forall era. - ( HasTokens era - , EraTxOut era - , Scriptic era - , Value era ~ MaryValue (EraCrypto era) - ) => - Proof era -> - TxOut era -validatingTxWithMintOut pf = - newTxOut pf [Address (someAddr pf), Amount (MaryValue (Coin 995) (multiAsset pf))] - -notValidatingTxWithMint :: - forall era. - ( Scriptic era - , HasTokens era - , EraTx era - , GoodCrypto (EraCrypto era) - , Value era ~ MaryValue (EraCrypto era) - ) => - Proof era -> - Tx era -notValidatingTxWithMint pf = - newTx - pf - [ Body notValidatingBodyWithMint - , WitnessesI - [ AddrWits' [mkWitnessVKey (hashAnnotated notValidatingBodyWithMint) (someKeys pf)] - , ScriptWits' [never 1 pf] - , RdmrWits notValidatingRedeemersWithMint - ] - ] - where - notValidatingBodyWithMint = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 8] - , Collateral' [mkGenesisTxIn 18] - , Outputs' [newTxOut pf [Address (someAddr pf), Amount (MaryValue (Coin 995) ma)]] - , Txfee (Coin 5) - , Mint ma - , WppHash (newScriptIntegrityHash pf (pp pf) [PlutusV1] notValidatingRedeemersWithMint mempty) - ] - notValidatingRedeemersWithMint = mkSingleRedeemer pf Minting (Data (PV1.I 0)) - ma = forge @era 1 (never 1 pf) - -poolMDHTooBigTx :: - forall era. - ( Scriptic era - , EraTxBody era - , GoodCrypto (EraCrypto era) - ) => - Proof era -> - Tx era -poolMDHTooBigTx pf = - -- Note that the UTXOW rule will no trigger the expected predicate failure, - -- since it is checked in the POOL rule. BBODY will trigger it, however. - newTx - pf - [ Body poolMDHTooBigTxBody - , WitnessesI - [ AddrWits' [mkWitnessVKey (hashAnnotated poolMDHTooBigTxBody) (someKeys pf)] - ] - ] - where - poolMDHTooBigTxBody = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 3] - , Outputs' [newTxOut pf [Address $ someAddr pf, Amount (inject $ Coin 995 <-> poolDeposit)]] - , Certs' [RegPoolTxCert poolParams] - , Txfee (Coin 5) - ] - where - tooManyBytes = BS.replicate (hashsize @(EraCrypto era) + 1) 0 - poolParams = - PoolParams - { ppId = coerceKeyRole . hashKey . vKey $ someKeys pf - , ppVrf = hashVerKeyVRF . vrfVerKey . mkVRFKeyPair @(EraCrypto era) $ RawSeed 0 0 0 0 0 - , ppPledge = Coin 0 - , ppCost = Coin 0 - , ppMargin = minBound - , ppRewardAccount = RewardAccount Testnet (scriptStakeCredSuceed pf) - , ppOwners = mempty - , ppRelays = mempty - , ppMetadata = SJust $ PoolMetadata (fromJust $ textToUrl 64 "") tooManyBytes - } - --- ============================== Expected UTXO =============================== - -testBBodyState :: - forall era. - ( GoodCrypto (EraCrypto era) - , HasTokens era - , PostShelley era - , EraTxBody era - , Value era ~ MaryValue (EraCrypto era) - , EraGov era - , State (EraRule "LEDGERS" era) ~ LedgerState era - , ShelleyEraTxCert era - ) => - Proof era -> - ShelleyBbodyState era -testBBodyState pf = - let utxo = - UTxO $ - Map.fromList - [ (TxIn (txIdTxBody (validatingBody pf)) minBound, validatingTxOut pf) - , (TxIn (txIdTxBody (validatingBodyWithCert pf)) minBound, validatingTxWithCertOut pf) - , (TxIn (txIdTxBody (validatingBodyWithWithdrawal pf)) minBound, validatingTxWithWithdrawalOut pf) - , (TxIn (txIdTxBody (validatingBodyWithMint pf)) minBound, validatingTxWithMintOut pf) - , (mkGenesisTxIn 11, newTxOut pf [Address $ someAddr pf, Amount (inject $ Coin 5)]) - , (mkGenesisTxIn 2, alwaysFailsOutput) - , (mkGenesisTxIn 13, newTxOut pf [Address $ someAddr pf, Amount (inject $ Coin 5)]) - , (mkGenesisTxIn 4, newTxOut pf [Address $ someAddr pf, Amount (inject $ Coin 1000)]) - , (mkGenesisTxIn 15, newTxOut pf [Address $ someAddr pf, Amount (inject $ Coin 5)]) - , (mkGenesisTxIn 6, newTxOut pf [Address $ someAddr pf, Amount (inject $ Coin 1000)]) - , (mkGenesisTxIn 17, newTxOut pf [Address $ someAddr pf, Amount (inject $ Coin 5)]) - , (mkGenesisTxIn 8, newTxOut pf [Address $ someAddr pf, Amount (inject $ Coin 1000)]) - , (mkGenesisTxIn 100, timelockOut) - , (mkGenesisTxIn 101, unspendableOut) - , (mkGenesisTxIn 102, alwaysSucceedsOutputV1) - , (mkGenesisTxIn 103, nonScriptOutWithDatum) - ] - alwaysFailsOutput = - newTxOut - pf - [ Address (someScriptAddr (never 0 pf)) - , Amount (inject $ Coin 3000) - , DHash' [hashData $ anotherDatum @era] - ] - timelockOut = newTxOut pf [Address $ timelockAddr, Amount (inject $ Coin 1)] - timelockAddr = Addr Testnet pCred sCred - where - (_ssk, svk) = mkKeyPair @(EraCrypto era) (RawSeed 0 0 0 0 2) - pCred = ScriptHashObj timelockHash - sCred = StakeRefBase . KeyHashObj . hashKey $ svk - timelockHash = hashScript @era $ fromNativeScript $ allOf [matchkey 1, after 100] pf - -- This output is unspendable since it is locked by a plutus script, - -- but has no datum hash. - unspendableOut = - newTxOut - pf - [ Address (someScriptAddr (always 3 pf)) - , Amount (inject $ Coin 5000) - ] - alwaysSucceedsOutputV1 = - newTxOut - pf - [ Address (someScriptAddr (always 3 pf)) - , Amount (inject $ Coin 5000) - , DHash' [hashData $ someDatum @era] - ] - nonScriptOutWithDatum = - newTxOut - pf - [ Address (someAddr pf) - , Amount (inject $ Coin 1221) - , DHash' [hashData $ someDatum @era] - ] - poolID = hashKey . vKey . coerceKeyRole $ coldKeys - example1UtxoSt = - smartUTxOState (pp pf) utxo totalDeposits (Coin 40) def mempty - -- the default CertState 'def' means that the 'totalDeposits' must be 0 - totalDeposits = Coin 0 - in BbodyState - (LedgerState example1UtxoSt def) - (BlocksMade $ Map.singleton poolID 1) - --- ============================== Helper functions =============================== - -makeTooBig :: Proof era -> AlonzoBbodyPredFailure era -makeTooBig proof@Alonzo = - ShelleyInAlonzoBbodyPredFailure - . LedgersFailure - . LedgerFailure - . DelegsFailure - . DelplFailure - . PoolFailure - $ PoolMedataHashTooBig (coerceKeyRole . hashKey . vKey $ someKeys proof) (hashsize @Mock + 1) -makeTooBig proof@Babbage = - ShelleyInAlonzoBbodyPredFailure - . LedgersFailure - . LedgerFailure - . DelegsFailure - . DelplFailure - . PoolFailure - $ PoolMedataHashTooBig (coerceKeyRole . hashKey . vKey $ someKeys proof) (hashsize @Mock + 1) --- makeTooBig proof@Conway = --- ShelleyInAlonzoBbodyPredFailure . LedgersFailure . LedgerFailure . ConwayCertsFailure . CertFailure . PoolFailure $ ConwayPoolPredFailure -- FIXME: This needs fixing after POOL rules are implemented for Conway -makeTooBig proof = error ("makeTooBig does not work in era " ++ show proof) - -coldKeys :: Crypto c => KeyPair 'BlockIssuer c -coldKeys = KeyPair vk sk - where - (sk, vk) = mkKeyPair (RawSeed 1 2 3 2 1) - -makeNaiveBlock :: - forall era. EraSegWits era => [Tx era] -> Block (BHeaderView (EraCrypto era)) era -makeNaiveBlock txs = UnsafeUnserialisedBlock bhView txSeq - where - bhView = - BHeaderView - { bhviewID = hashKey (vKey coldKeys) - , bhviewBSize = fromIntegral $ bBodySize (ProtVer (eraProtVerLow @era) 0) txSeq - , bhviewHSize = 0 - , bhviewBHash = hashTxSeq txSeq - , bhviewSlot = SlotNo 0 - } - txSeq = toTxSeq $ StrictSeq.fromList txs - -scriptStakeCredFail :: forall era. Scriptic era => Proof era -> StakeCredential (EraCrypto era) -scriptStakeCredFail pf = ScriptHashObj (alwaysFailsHash 1 pf) - -scriptStakeCredSuceed :: forall era. Scriptic era => Proof era -> StakeCredential (EraCrypto era) -scriptStakeCredSuceed pf = ScriptHashObj (alwaysSucceedsHash 2 pf) - --- | The deposit made when 'scriptStakeCredSuceed' was registered. It is also --- The Refund when 'scriptStakeCredSuceed' is de-registered. -successDeposit :: UM.CompactForm Coin -successDeposit = UM.CompactCoin 7 - -hashsize :: forall c. Crypto c => Int -hashsize = fromIntegral $ sizeHash ([] @(HASH c)) - --- ============================== PParams =============================== - -defaultPPs :: [PParamsField era] -defaultPPs = - [ Costmdls $ zeroTestingCostModels [PlutusV1] - , MaxValSize 1000000000 - , MaxTxExUnits $ ExUnits 1000000 1000000 - , MaxBlockExUnits $ ExUnits 1000000 1000000 - , ProtocolVersion $ ProtVer (natVersion @5) 0 - , CollateralPercentage 100 - , KeyDeposit (Coin 2) - , PoolDeposit poolDeposit - ] - -poolDeposit :: Coin -poolDeposit = Coin 5 - -pp :: EraPParams era => Proof era -> PParams era -pp pf = newPParams pf defaultPPs diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Examples/AlonzoCollectInputs.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Examples/AlonzoCollectInputs.hs deleted file mode 100644 index 5ea5c48f63e..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Examples/AlonzoCollectInputs.hs +++ /dev/null @@ -1,204 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} - -module Test.Cardano.Ledger.Examples.AlonzoCollectInputs (tests) where - -import Cardano.Ledger.Alonzo (Alonzo) -import Cardano.Ledger.Alonzo.Plutus.Context (ContextError, mkPlutusScriptContext) -import Cardano.Ledger.Alonzo.Plutus.Evaluate (CollectError (..), collectPlutusScriptsWithContext) -import Cardano.Ledger.Alonzo.Scripts ( - AlonzoEraScript (..), - AlonzoScript (..), - AsIxItem (..), - ExUnits (..), - ) -import Cardano.Ledger.BaseTypes (ProtVer (..), natVersion) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Core -import Cardano.Ledger.Plutus.Data (Data (..), unData) -import Cardano.Ledger.Plutus.Evaluate ( - PlutusDatums (..), - PlutusWithContext (..), - ) -import Cardano.Ledger.Plutus.Language (Language (..), hashPlutusScript) -import Cardano.Ledger.SafeHash (hashAnnotated) -import Cardano.Ledger.UTxO (UTxO (..)) -import Cardano.Ledger.Val (inject) -import Cardano.Slotting.EpochInfo (EpochInfo, fixedEpochInfo) -import Cardano.Slotting.Slot (EpochSize (..)) -import Cardano.Slotting.Time (SystemStart (..), mkSlotLength) -import Data.Text (Text) -import Data.Time.Clock.POSIX (posixSecondsToUTCTime) -import Lens.Micro -import qualified PlutusLedgerApi.V1 as PV1 -import Test.Cardano.Ledger.Core.KeyPair (mkWitnessVKey) -import Test.Cardano.Ledger.Examples.AlonzoInvalidTxUTXOW (spendingPurpose1) -import Test.Cardano.Ledger.Examples.STSTestUtils ( - initUTxO, - mkGenesisTxIn, - mkTxDats, - someAddr, - someKeys, - ) -import Test.Cardano.Ledger.Generic.Fields ( - PParamsField (..), - TxBodyField (..), - TxField (..), - TxOutField (..), - WitnessesField (..), - ) -import Test.Cardano.Ledger.Generic.GenState (PlutusPurposeTag (..), mkRedeemersFromTags) -import Test.Cardano.Ledger.Generic.PrettyCore () -import Test.Cardano.Ledger.Generic.Proof -import Test.Cardano.Ledger.Generic.Scriptic (Scriptic (..)) -import Test.Cardano.Ledger.Generic.Updaters -import Test.Cardano.Ledger.Plutus (zeroTestingCostModel, zeroTestingCostModels) -import Test.Tasty (TestTree) -import Test.Tasty.HUnit (Assertion, testCase, (@?=)) - -tests :: TestTree -tests = - testCase - "collectTwoPhaseScriptInputs output order" - collectTwoPhaseScriptInputsOutputOrdering - --- Test for Plutus Data Ordering, using this strategy - --- | Never apply this to any Era but Alonzo or Babbage -collectTwoPhaseScriptInputsOutputOrdering :: - Assertion -collectTwoPhaseScriptInputsOutputOrdering = do - collectInputs apf testEpochInfo testSystemStart (pp apf) (validatingTx apf) (initUTxO apf) - @?= Right - [ withPlutusScript plutusScript $ \plutus -> - PlutusWithContext - { pwcProtocolVersion = pvMajor (pp apf ^. ppProtocolVersionL) - , pwcScript = Left plutus - , pwcScriptHash = hashPlutusScript plutus - , pwcDatums = PlutusDatums [unData @Alonzo datum, unData @Alonzo redeemer, context] - , pwcExUnits = ExUnits 5000 5000 - , pwcCostModel = zeroTestingCostModel PlutusV1 - } - ] - where - apf = Alonzo - plutusScript = case always 3 apf of - TimelockScript _ -> error "always was not a Plutus script" - PlutusScript ps -> ps - Data context = - either (\err -> error $ "Translation error: " ++ show err) id $ - mkPlutusScriptContext' - apf - plutusScript - (spendingPurpose1 apf) - (pp apf) - testEpochInfo - testSystemStart - (initUTxO apf) - (validatingTx apf) - --- ============================== DATA =============================== - -datum :: Era era => Data era -datum = Data (PV1.I 123) - -redeemer :: Era era => Data era -redeemer = Data (PV1.I 42) - -validatingTx :: - forall era. - ( Scriptic era - , EraTx era - , GoodCrypto (EraCrypto era) - ) => - Proof era -> - Tx era -validatingTx pf = - newTx - pf - [ Body validatingBody - , WitnessesI - [ AddrWits' [mkWitnessVKey (hashAnnotated validatingBody) (someKeys pf)] - , ScriptWits' [always 3 pf] - , DataWits' [datum] - , RdmrWits redeemers - ] - ] - where - validatingBody = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 1] - , Collateral' [mkGenesisTxIn 11] - , Outputs' [newTxOut pf [Address (someAddr pf), Amount (inject $ Coin 4995)]] - , Txfee (Coin 5) - , WppHash (newScriptIntegrityHash pf (pp pf) [PlutusV1] redeemers (mkTxDats datum)) - ] - redeemers = mkRedeemersFromTags pf [((Spending, 0), (redeemer, ExUnits 5000 5000))] - --- ============================== Helper functions =============================== - --- We have some tests that use plutus scripts, so they can only be run in --- Babbage and Alonzo. How do we do that? We identify functions that are --- only well typed in those Eras, and we make versions which are parameterized --- by a proof. But which raise an error in other Eras. - -collectInputs :: - forall era. - Proof era -> - EpochInfo (Either Text) -> - SystemStart -> - PParams era -> - Tx era -> - UTxO era -> - Either [CollectError era] [PlutusWithContext (EraCrypto era)] -collectInputs Alonzo = collectPlutusScriptsWithContext -collectInputs Babbage = collectPlutusScriptsWithContext -collectInputs Conway = collectPlutusScriptsWithContext -collectInputs x = error ("collectInputs Not defined in era " ++ show x) - -mkPlutusScriptContext' :: - Proof era -> - PlutusScript era -> - PlutusPurpose AsIxItem era -> - PParams era -> - EpochInfo (Either Text) -> - SystemStart -> - UTxO era -> - Tx era -> - Either (ContextError era) (Data era) -mkPlutusScriptContext' Alonzo = mkPlutusScriptContext -mkPlutusScriptContext' Babbage = mkPlutusScriptContext -mkPlutusScriptContext' Conway = mkPlutusScriptContext -mkPlutusScriptContext' era = error ("mkPlutusScriptContext is not defined in era " ++ show era) - -testEpochInfo :: EpochInfo (Either Text) -testEpochInfo = fixedEpochInfo (EpochSize 100) (mkSlotLength 1) - -testSystemStart :: SystemStart -testSystemStart = SystemStart $ posixSecondsToUTCTime 0 - --- ============================== PParams =============================== - -defaultPPs :: [PParamsField era] -defaultPPs = - [ Costmdls $ zeroTestingCostModels [PlutusV1] - , MaxValSize 1000000000 - , MaxTxExUnits $ ExUnits 1000000 1000000 - , MaxBlockExUnits $ ExUnits 1000000 1000000 - , ProtocolVersion $ ProtVer (natVersion @5) 0 - , CollateralPercentage 100 - ] - -pp :: EraPParams era => Proof era -> PParams era -pp pf = newPParams pf defaultPPs diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Examples/AlonzoInvalidTxUTXOW.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Examples/AlonzoInvalidTxUTXOW.hs deleted file mode 100644 index 424ddd603ac..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Examples/AlonzoInvalidTxUTXOW.hs +++ /dev/null @@ -1,1011 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedLists #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} - -module Test.Cardano.Ledger.Examples.AlonzoInvalidTxUTXOW (tests, spendingPurpose1) where - -import Cardano.Ledger.Address (RewardAccount (..)) -import Cardano.Ledger.Allegra.Scripts (ValidityInterval (..)) -import Cardano.Ledger.Alonzo.Plutus.Evaluate (CollectError (..)) -import Cardano.Ledger.Alonzo.Rules ( - AlonzoUtxoPredFailure (..), - AlonzoUtxosPredFailure (..), - AlonzoUtxowPredFailure (..), - FailureDescription (..), - TagMismatchDescription (..), - ) -import Cardano.Ledger.Alonzo.Scripts ( - AlonzoPlutusPurpose (..), - AsItem (..), - AsIxItem (..), - PlutusPurpose, - ) -import Cardano.Ledger.Alonzo.Tx (IsValid (..)) -import Cardano.Ledger.Alonzo.TxWits (Redeemers (..), TxDats (..)) -import Cardano.Ledger.BaseTypes ( - Network (..), - ProtVer (..), - StrictMaybe (..), - natVersion, - ) -import Cardano.Ledger.Coin (Coin (..), DeltaCoin (..)) -import Cardano.Ledger.Conway.Scripts (ConwayPlutusPurpose (..)) -import Cardano.Ledger.Credential ( - Credential (..), - StakeCredential, - ) -import Cardano.Ledger.Crypto -import Cardano.Ledger.Keys ( - KeyHash, - KeyRole (..), - asWitness, - hashKey, - ) -import Cardano.Ledger.Mary.Value (MaryValue (..)) -import Cardano.Ledger.Plutus (Data (..), ExUnits (..), Language (..), emptyCostModels, hashData) -import Cardano.Ledger.SafeHash (hashAnnotated) -import Cardano.Ledger.Shelley.Core hiding (TranslationError) -import Cardano.Ledger.Shelley.LedgerState (UTxOState (..)) -import Cardano.Ledger.Shelley.Rules as Shelley (ShelleyUtxowPredFailure (..)) -import Cardano.Ledger.Val (inject) -import Cardano.Slotting.Slot (SlotNo (..)) -import Control.State.Transition.Extended hiding (Assertion) -import Data.List.NonEmpty (NonEmpty (..)) -import qualified Data.Map.Strict as Map -import qualified Data.MapExtras as Map (fromElems) -import qualified Data.Set as Set -import GHC.Stack -import qualified PlutusLedgerApi.V1 as PV1 -import Test.Cardano.Ledger.Core.KeyPair (KeyPair (..), mkWitnessVKey) -import Test.Cardano.Ledger.Examples.STSTestUtils ( - alwaysSucceedsHash, - initUTxO, - mkGenesisTxIn, - mkTxDats, - someAddr, - someKeys, - testUTXOW, - testUTXOWsubset, - testUTXOspecialCase, - timelockHash, - timelockScript, - timelockStakeCred, - trustMeP, - ) -import Test.Cardano.Ledger.Generic.Fields ( - PParamsField (..), - TxBodyField (..), - TxField (..), - TxOutField (..), - WitnessesField (..), - ) -import Test.Cardano.Ledger.Generic.GenState ( - PlutusPurposeTag (..), - mkPlutusPurposePointer, - mkRedeemers, - mkRedeemersFromTags, - ) -import Test.Cardano.Ledger.Generic.Indexed (theKeyPair) -import Test.Cardano.Ledger.Generic.PrettyCore () -import Test.Cardano.Ledger.Generic.Proof -import Test.Cardano.Ledger.Generic.Scriptic (HasTokens (..), PostShelley, Scriptic (..)) -import Test.Cardano.Ledger.Generic.Updaters -import Test.Cardano.Ledger.Plutus (zeroTestingCostModels) -import Test.Cardano.Ledger.Shelley.Utils ( - RawSeed (..), - mkKeyPair, - ) -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.HUnit (Assertion, testCase) - -spendingPurpose1 :: Proof era -> PlutusPurpose AsIxItem era -spendingPurpose1 = \case - Shelley {} -> error "Unsupported" - Allegra {} -> error "Unsupported" - Mary {} -> error "Unsupported" - Alonzo {} -> AlonzoSpending (AsIxItem 1 (mkGenesisTxIn 1)) - Babbage {} -> AlonzoSpending (AsIxItem 1 (mkGenesisTxIn 1)) - Conway {} -> ConwaySpending (AsIxItem 1 (mkGenesisTxIn 1)) - -spendingPurposeAsItem1 :: Proof era -> PlutusPurpose AsItem era -spendingPurposeAsItem1 = \case - Shelley {} -> error "Unsupported" - Allegra {} -> error "Unsupported" - Mary {} -> error "Unsupported" - Alonzo {} -> AlonzoSpending (AsItem (mkGenesisTxIn 1)) - Babbage {} -> AlonzoSpending (AsItem (mkGenesisTxIn 1)) - Conway {} -> ConwaySpending (AsItem (mkGenesisTxIn 1)) - -tests :: TestTree -tests = - testGroup - "Generic Tests for invalid transactions, testing Alonzo UTXOW PredicateFailures, in postAlonzo eras." - [ alonzoUTXOWTests Alonzo - , alonzoUTXOWTests Babbage - , alonzoUTXOWTests Conway - ] - -alonzoUTXOWTests :: - forall era. - ( State (EraRule "UTXOW" era) ~ UTxOState era - , HasTokens era - , Reflect era - , PostShelley era -- MAYBE WE CAN REPLACE THIS BY GoodCrypto, - , Value era ~ MaryValue (EraCrypto era) - , InjectRuleFailure "UTXOW" ShelleyUtxowPredFailure era - , InjectRuleFailure "UTXOW" AlonzoUtxowPredFailure era - , InjectRuleFailure "UTXOW" AlonzoUtxosPredFailure era - , InjectRuleFailure "UTXOW" AlonzoUtxoPredFailure era - ) => - Proof era -> - TestTree -alonzoUTXOWTests pf = - testGroup - (show pf ++ " UTXOW examples") - [ testGroup - "invalid transactions" - [ testCase "wrong network ID" $ - testU - pf - (trustMeP pf True $ incorrectNetworkIDTx pf) - ( Left - [ injectFailure (WrongNetworkInTxBody Testnet Mainnet) - ] - ) - , testCase "missing required key witness" $ - testU - pf - (trustMeP pf True $ missingRequiredWitnessTx pf) - ( Left - [ injectFailure $ MissingVKeyWitnessesUTXOW $ Set.singleton extraneousKeyHash - ] - ) - , testCase "missing redeemer" $ - testU - pf - (trustMeP pf True $ missingRedeemerTx pf) - ( Left - [ injectFailure $ CollectErrors [NoRedeemer $ spendingPurposeAsItem1 pf] - , injectFailure $ - MissingRedeemers @era [(spendingPurposeAsItem1 pf, alwaysSucceedsHash 3 pf)] - ] - ) - , testCase "wrong wpp hash" $ - testU - pf - (trustMeP pf True $ wrongWppHashTx pf) - ( Left - [ injectFailure $ - PPViewHashesDontMatch - ( newScriptIntegrityHash - pf - (pp pf) - [PlutusV1] - (mkRedeemers pf []) - (mkTxDats (Data (PV1.I 123))) - ) - ( newScriptIntegrityHash - pf - (pp pf) - [PlutusV1] - (wrongWpphashRedeemers pf) - (mkTxDats (Data (PV1.I 123))) - ) - ] - ) - , testCase "missing 1-phase script witness" $ - testU - pf - (trustMeP pf True $ missing1phaseScriptWitnessTx pf) - ( Left - [ injectFailure . MissingScriptWitnessesUTXOW . Set.singleton $ - timelockHash 0 pf - ] - ) - , testCase "missing 2-phase script witness" $ - testU - pf - (trustMeP pf True $ missing2phaseScriptWitnessTx pf) - ( Left - [ -- these redeemers are associated with phase-1 scripts - injectFailure . ExtraRedeemers $ - [ mkPlutusPurposePointer pf Minting 0 - , mkPlutusPurposePointer pf Certifying 1 - , mkPlutusPurposePointer pf Rewarding 0 - ] - , injectFailure . MissingScriptWitnessesUTXOW . Set.singleton $ - alwaysSucceedsHash 2 pf - ] - ) - , testCase "redeemer with incorrect label" $ - testU - pf - (trustMeP pf True $ wrongRedeemerLabelTx pf) - ( Left - [ injectFailure (CollectErrors [NoRedeemer $ spendingPurposeAsItem1 pf]) - , -- now "wrong redeemer label" means there are both unredeemable - -- scripts and extra redeemers - injectFailure $ - MissingRedeemers [(spendingPurposeAsItem1 pf, alwaysSucceedsHash 3 pf)] - , injectFailure $ ExtraRedeemers [mkPlutusPurposePointer pf Minting 1] - ] - ) - , testCase "missing datum" $ - testU - pf - (trustMeP pf True $ missingDatumTx pf) - ( Left - [ injectFailure $ - MissingRequiredDatums - (Set.singleton $ hashData @era (Data (PV1.I 123))) - mempty - ] - ) - , testCase "phase 1 script failure" $ - testU - pf - (trustMeP pf True $ phase1FailureTx pf) - ( Left - [ injectFailure $ - ScriptWitnessNotValidatingUTXOW $ - Set.fromList - [ timelockHash 0 pf - , timelockHash 1 pf - , timelockHash 2 pf - ] - ] - ) - , testCase "valid transaction marked as invalid" $ - testU - pf - (trustMeP pf False $ validatingTx pf) - ( Left [injectFailure (ValidationTagMismatch (IsValid False) PassedUnexpectedly)] - ) - , testCase "invalid transaction marked as valid" $ - testUTXOspecialCase - (UTXOW pf) - (initUTxO pf) - (pp pf) - (trustMeP pf True $ notValidatingTx pf) - ( Left - [ injectFailure - ( ValidationTagMismatch - (IsValid True) - (FailedUnexpectedly (quietPlutusFailure :| [])) - ) - ] - ) - , testCase "too many execution units for tx" $ - testU - pf - (trustMeP pf True $ tooManyExUnitsTx pf) - ( Left - [ injectFailure $ - ExUnitsTooBigUTxO - (ExUnits {exUnitsMem = 1000000, exUnitsSteps = 1000000}) - (ExUnits {exUnitsMem = 1000001, exUnitsSteps = 5000}) - ] - ) - , testCase "missing signature for collateral input" $ - testU - pf - (trustMeP pf True $ missingCollateralSigTx pf) - ( Left - [ injectFailure - ( MissingVKeyWitnessesUTXOW - ( Set.fromList - [ asWitness $ - hashKey (vKey $ someKeys pf) - ] - ) - ) - ] - ) - , testCase "insufficient collateral" $ - testUTXOW - (UTXOW pf) - (initUTxO pf) - (newPParams pf $ defaultPPs ++ [CollateralPercentage 150]) - (trustMeP pf True $ validatingTx pf) - ( Left [injectFailure (InsufficientCollateral (DeltaCoin 5) (Coin 8))] - ) - , testCase "two-phase UTxO with no datum hash" $ - testU - pf - (trustMeP pf True $ plutusOutputWithNoDataTx pf) - ( Left - [ injectFailure $ UnspendableUTxONoDatumHash . Set.singleton $ mkGenesisTxIn 101 - ] - ) - , testCase "unacceptable supplimentary datum" $ - testUTXOWsubset - (UTXOW pf) -- Special rules apply here, use (expected `isSubset` computed) - (initUTxO pf) - (pp pf) - (trustMeP pf True $ notOkSupplimentaryDatumTx pf) - ( Left - [ injectFailure $ - NotAllowedSupplementalDatums - (Set.singleton $ hashData @era totallyIrrelevantDatum) - mempty - ] - ) - , testCase "unacceptable extra redeemer" $ - testU - pf - (trustMeP pf True $ extraRedeemersTx pf) - ( Left - [ injectFailure $ - ExtraRedeemers [mkPlutusPurposePointer pf Spending 7] - ] - ) - , testCase "multiple equal plutus-locked certs" $ - testU - pf - (trustMeP pf True $ multipleEqualCertsInvalidTx pf) - ( Left - [ injectFailure $ ExtraRedeemers [mkPlutusPurposePointer pf Certifying 1] - ] - ) - , testCase "no cost model" $ - let pp' = updatePParams pf (pp pf) (Costmdls emptyCostModels) - in testUTXOW - (UTXOW pf) - (initUTxO pf) - pp' - (trustMeP pf True $ noCostModelTx pf pp') - ( Left [injectFailure (CollectErrors [NoCostModel PlutusV1])] - ) - ] - ] - --- ========================================================================= --- ============================== DATA ======================================== - -incorrectNetworkIDTx :: (EraTx era, GoodCrypto (EraCrypto era)) => Proof era -> Tx era -incorrectNetworkIDTx pf = - newTx - pf - [ Body incorrectNetworkIDTxBody - , WitnessesI - [ AddrWits' [mkWitnessVKey (hashAnnotated incorrectNetworkIDTxBody) (someKeys pf)] - ] - ] - where - incorrectNetworkIDTxBody = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 3] - , Outputs' [newTxOut pf [Address (someAddr pf), Amount (inject $ Coin 995)]] - , Txfee (Coin 5) - , Txnetworkid (SJust Mainnet) - ] - -missingRequiredWitnessTx :: (EraTx era, GoodCrypto (EraCrypto era)) => Proof era -> Tx era -missingRequiredWitnessTx pf = - newTx - pf - [ Body missingRequiredWitnessTxBody - , WitnessesI - [ AddrWits' [mkWitnessVKey (hashAnnotated missingRequiredWitnessTxBody) (someKeys pf)] - ] - ] - where - missingRequiredWitnessTxBody = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 3] - , Outputs' [newTxOut pf [Address (someAddr pf), Amount (inject $ Coin 995)]] - , Txfee (Coin 5) - , ReqSignerHashes' [extraneousKeyHash] - ] - -missingRedeemerTx :: - (Scriptic era, EraTx era, GoodCrypto (EraCrypto era)) => - Proof era -> - Tx era -missingRedeemerTx pf = - newTx - pf - [ Body (missingRedeemerTxBody pf) - , WitnessesI - [ AddrWits' [mkWitnessVKey (hashAnnotated (missingRedeemerTxBody pf)) (someKeys pf)] - , ScriptWits' [always 3 pf] - , DataWits' [Data (PV1.I 123)] - ] - ] - -missingRedeemerTxBody :: EraTxBody era => Proof era -> TxBody era -missingRedeemerTxBody pf = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 1] - , Collateral' [mkGenesisTxIn 11] - , Outputs' [newTxOut pf [Address (someAddr pf), Amount (inject $ Coin 4995)]] - , Txfee (Coin 5) - , WppHash - ( newScriptIntegrityHash - pf - (pp pf) - [PlutusV1] - (mkRedeemers pf []) - (mkTxDats (Data (PV1.I 123))) - ) - ] - -wrongWppHashTx :: - (Scriptic era, EraTx era, GoodCrypto (EraCrypto era)) => - Proof era -> - Tx era -wrongWppHashTx pf = - newTx - pf - [ Body (missingRedeemerTxBody pf) - , WitnessesI - [ AddrWits' [mkWitnessVKey (hashAnnotated (missingRedeemerTxBody pf)) (someKeys pf)] - , ScriptWits' [always 3 pf] - , DataWits' [Data (PV1.I 123)] - , RdmrWits $ wrongWpphashRedeemers pf - ] - ] - -wrongWpphashRedeemers :: Era era => Proof era -> Redeemers era -wrongWpphashRedeemers pf = - mkRedeemersFromTags pf [((Spending, 0), (Data (PV1.I 42), ExUnits 5000 5000))] - -missing1phaseScriptWitnessTx :: - forall era. - ( PostShelley era - , HasTokens era - , EraTxBody era - , GoodCrypto (EraCrypto era) - , Value era ~ MaryValue (EraCrypto era) - , ShelleyEraTxCert era - ) => - Proof era -> - Tx era -missing1phaseScriptWitnessTx pf = - newTx - pf - [ Body (validatingManyScriptsBody pf) - , WitnessesI - [ AddrWits' $ - map - (mkWitnessVKey . hashAnnotated . validatingManyScriptsBody $ pf) - [someKeys pf, theKeyPair 1] - , ScriptWits' - [ always 2 pf - , always 3 pf - , -- intentionally missing -> timelockScript 0 pf, - timelockScript 1 pf - , timelockScript 2 pf - ] - , DataWits' [Data (PV1.I 123)] - , RdmrWits $ validatingManyScriptsRedeemers pf - ] - ] - -missing2phaseScriptWitnessTx :: - forall era. - ( PostShelley era - , HasTokens era - , EraTx era - , GoodCrypto (EraCrypto era) - , Value era ~ MaryValue (EraCrypto era) - , ShelleyEraTxCert era - ) => - Proof era -> - Tx era -missing2phaseScriptWitnessTx pf = - newTx - pf - [ Body (validatingManyScriptsBody pf) - , WitnessesI - [ AddrWits' $ - map - (mkWitnessVKey . hashAnnotated . validatingManyScriptsBody $ pf) - [someKeys pf, theKeyPair 1] - , ScriptWits' - [ -- intentionally missing -> always 2 pf, - always 3 pf - , timelockScript 0 pf - , timelockScript 1 pf - , timelockScript 2 pf - ] - , DataWits' [Data (PV1.I 123)] - , RdmrWits $ validatingManyScriptsRedeemers pf - ] - ] - -validatingManyScriptsBody :: - forall era. - ( HasTokens era - , EraTxBody era - , PostShelley era - , Value era ~ MaryValue (EraCrypto era) - , ShelleyEraTxCert era - ) => - Proof era -> - TxBody era -validatingManyScriptsBody pf = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 1, mkGenesisTxIn 100] - , Collateral' [mkGenesisTxIn 11] - , Outputs' [txOut] - , Txfee (Coin 5) - , Certs' - [ UnRegTxCert (timelockStakeCred pf) - , UnRegTxCert (scriptStakeCredSuceed pf) - ] - , Withdrawals' - ( Withdrawals $ - Map.fromList - [ (RewardAccount Testnet (scriptStakeCredSuceed pf), Coin 0) - , (RewardAccount Testnet (timelockStakeCred pf), Coin 0) - ] - ) - , Mint mint - , WppHash - ( newScriptIntegrityHash - pf - (pp pf) - [PlutusV1] - (validatingManyScriptsRedeemers pf) - (mkTxDats (Data (PV1.I 123))) - ) - , Vldt (ValidityInterval SNothing (SJust $ SlotNo 1)) - ] - where - txOut = - newTxOut - pf - [ Address (someAddr pf) - , Amount (MaryValue (Coin 4996) mint) - ] - mint = forge @era 1 (always 2 pf) <> forge @era 1 (timelockScript 1 pf) - -validatingManyScriptsRedeemers :: Era era => Proof era -> Redeemers era -validatingManyScriptsRedeemers pf = - mkRedeemersFromTags - pf - [ ((Spending, 0), (Data (PV1.I 101), ExUnits 5000 5000)) - , ((Certifying, 1), (Data (PV1.I 102), ExUnits 5000 5000)) - , ((Rewarding, 0), (Data (PV1.I 103), ExUnits 5000 5000)) - , ((Minting, 0), (Data (PV1.I 104), ExUnits 5000 5000)) - ] - -wrongRedeemerLabelTx :: - forall era. - ( Scriptic era - , EraTx era - , GoodCrypto (EraCrypto era) - ) => - Proof era -> - Tx era -wrongRedeemerLabelTx pf = - newTx - pf - [ Body wrongRedeemerLabelTxBody - , WitnessesI - [ AddrWits' [mkWitnessVKey (hashAnnotated wrongRedeemerLabelTxBody) (someKeys pf)] - , ScriptWits' [always 3 pf] - , DataWits' [Data (PV1.I 123)] - , RdmrWits misPurposedRedeemer - ] - ] - where - wrongRedeemerLabelTxBody = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 1] - , Collateral' [mkGenesisTxIn 11] - , Outputs' [newTxOut pf [Address (someAddr pf), Amount (inject $ Coin 4995)]] - , Txfee (Coin 5) - , WppHash - (newScriptIntegrityHash pf (pp pf) [PlutusV1] misPurposedRedeemer (mkTxDats (Data (PV1.I 123)))) - ] - misPurposedRedeemer = - -- The label *should* be Spend, not Mint - mkRedeemersFromTags pf [((Minting, 1), (Data (PV1.I 42), ExUnits 5000 5000))] - -missingDatumTx :: - forall era. - ( Scriptic era - , EraTx era - , GoodCrypto (EraCrypto era) - ) => - Proof era -> - Tx era -missingDatumTx pf = - newTx - pf - [ Body missingDatumTxBody - , WitnessesI - [ AddrWits' [mkWitnessVKey (hashAnnotated missingDatumTxBody) (someKeys pf)] - , ScriptWits' [always 3 pf] - , RdmrWits redeemers - ] - ] - where - missingDatumTxBody = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 1] - , Collateral' [mkGenesisTxIn 11] - , Outputs' [newTxOut pf [Address (someAddr pf), Amount (inject $ Coin 4995)]] - , Txfee (Coin 5) - , WppHash (newScriptIntegrityHash pf (pp pf) [PlutusV1] redeemers mempty) - ] - redeemers = mkRedeemersFromTags pf [((Spending, 0), (Data (PV1.I 42), ExUnits 5000 5000))] - -phase1FailureTx :: - forall era. - ( PostShelley era - , HasTokens era - , EraTx era - , GoodCrypto (EraCrypto era) - , Value era ~ MaryValue (EraCrypto era) - , ShelleyEraTxCert era - ) => - Proof era -> - Tx era -phase1FailureTx pf = - newTx - pf - [ Body (validatingManyScriptsBody pf) - , WitnessesI - [ AddrWits' - [ mkWitnessVKey - (hashAnnotated $ validatingManyScriptsBody pf) - (someKeys pf) - ] - , ScriptWits' - [ always 2 pf - , always 3 pf - , timelockScript 0 pf - , timelockScript 1 pf - , timelockScript 2 pf - ] - , DataWits' [Data (PV1.I 123)] - , RdmrWits $ validatingManyScriptsRedeemers pf - ] - ] - -validatingTx :: - forall era. - ( Scriptic era - , EraTx era - , GoodCrypto (EraCrypto era) - ) => - Proof era -> - Tx era -validatingTx pf = - newTx - pf - [ Body (validatingBody pf) - , WitnessesI - [ AddrWits' [mkWitnessVKey (hashAnnotated (validatingBody pf)) (someKeys pf)] - , ScriptWits' [always 3 pf] - , DataWits' [Data (PV1.I 123)] - , RdmrWits $ validatingRedeemers pf - ] - ] - -validatingBody :: (Scriptic era, EraTxBody era) => Proof era -> TxBody era -validatingBody pf = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 1] - , Collateral' [mkGenesisTxIn 11] - , Outputs' [newTxOut pf [Address (someAddr pf), Amount (inject $ Coin 4995)]] - , Txfee (Coin 5) - , WppHash - ( newScriptIntegrityHash - pf - (pp pf) - [PlutusV1] - (validatingRedeemers pf) - (mkTxDats (Data (PV1.I 123))) - ) - ] - -validatingRedeemers :: Era era => Proof era -> Redeemers era -validatingRedeemers pf = mkRedeemersFromTags pf [((Spending, 0), (Data (PV1.I 42), ExUnits 5000 5000))] - -notValidatingTx :: - ( Scriptic era - , EraTx era - , GoodCrypto (EraCrypto era) - ) => - Proof era -> - Tx era -notValidatingTx pf = - newTx - pf - [ Body body - , WitnessesI - [ AddrWits' [mkWitnessVKey (hashAnnotated body) (someKeys pf)] - , ScriptWits' [never 0 pf] - , DataWits' [Data (PV1.I 0)] - , RdmrWits redeemers - ] - ] - where - body = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 2] - , Collateral' [mkGenesisTxIn 12] - , Outputs' [newTxOut pf [Address (someAddr pf), Amount (inject $ Coin 2995)]] - , Txfee (Coin 5) - , WppHash (newScriptIntegrityHash pf (pp pf) [PlutusV1] redeemers (mkTxDats (Data (PV1.I 0)))) - ] - redeemers = mkRedeemersFromTags pf [((Spending, 0), (Data (PV1.I 1), ExUnits 5000 5000))] - -tooManyExUnitsTx :: - forall era. - ( Scriptic era - , EraTx era - , GoodCrypto (EraCrypto era) - ) => - Proof era -> - Tx era -tooManyExUnitsTx pf = - newTx - pf - [ Body tooManyExUnitsTxBody - , WitnessesI - [ AddrWits' [mkWitnessVKey (hashAnnotated tooManyExUnitsTxBody) (someKeys pf)] - , ScriptWits' [always 3 pf] - , DataWits' [Data (PV1.I 123)] - , RdmrWits redeemers - ] - ] - where - tooManyExUnitsTxBody = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 1] - , Collateral' [mkGenesisTxIn 11] - , Outputs' [newTxOut pf [Address (someAddr pf), Amount (inject $ Coin 4995)]] - , Txfee (Coin 5) - , WppHash (newScriptIntegrityHash pf (pp pf) [PlutusV1] redeemers (mkTxDats (Data (PV1.I 123)))) - ] - redeemers = mkRedeemersFromTags pf [((Spending, 0), (Data (PV1.I 42), ExUnits 1000001 5000))] - -missingCollateralSigTx :: - forall era. - (Scriptic era, EraTx era) => - Proof era -> - Tx era -missingCollateralSigTx pf = - newTx - pf - [ Body (validatingBody pf) - , WitnessesI - [ ScriptWits' [always 3 pf] - , DataWits' [Data (PV1.I 123)] - , RdmrWits $ mkRedeemersFromTags pf [((Spending, 0), (Data (PV1.I 42), ExUnits 5000 5000))] - ] - ] - -plutusOutputWithNoDataTx :: - forall era. - ( Scriptic era - , EraTx era - , GoodCrypto (EraCrypto era) - ) => - Proof era -> - Tx era -plutusOutputWithNoDataTx pf = - newTx - pf - [ Body plutusOutputWithNoDataTxBody - , WitnessesI - [ AddrWits' [mkWitnessVKey (hashAnnotated plutusOutputWithNoDataTxBody) (someKeys pf)] - , ScriptWits' [always 3 pf] - , RdmrWits redeemers - ] - ] - where - plutusOutputWithNoDataTxBody = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 101] - , Collateral' [mkGenesisTxIn 11] - , Outputs' [newTxOut pf [Address (someAddr pf), Amount (inject $ Coin 4995)]] - , Txfee (Coin 5) - , WppHash (newScriptIntegrityHash pf (pp pf) [PlutusV1] redeemers mempty) - ] - redeemers = mkRedeemersFromTags pf [((Spending, 0), (Data (PV1.I 42), ExUnits 5000 5000))] - -notOkSupplimentaryDatumTx :: - forall era. - ( Scriptic era - , EraTx era - , GoodCrypto (EraCrypto era) - ) => - Proof era -> - Tx era -notOkSupplimentaryDatumTx pf = - newTx - pf - [ Body notOkSupplimentaryDatumTxBody - , WitnessesI - [ AddrWits' [mkWitnessVKey (hashAnnotated notOkSupplimentaryDatumTxBody) (someKeys pf)] - , DataWits' [totallyIrrelevantDatum] - ] - ] - where - notOkSupplimentaryDatumTxBody = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 3] - , Outputs' [outputWithNoDatum] - , Txfee (Coin 5) - , WppHash (newScriptIntegrityHash pf (pp pf) [] (mkRedeemers pf []) totallyIrrelevantTxDats) - ] - totallyIrrelevantTxDats = TxDats $ Map.fromElems @[] hashData [totallyIrrelevantDatum] - outputWithNoDatum = newTxOut pf [Address $ someAddr pf, Amount (inject $ Coin 995)] - -totallyIrrelevantDatum :: Era era => Data era -totallyIrrelevantDatum = Data (PV1.I 1729) - -extraRedeemersTx :: - forall era. - ( Scriptic era - , EraTx era - , GoodCrypto (EraCrypto era) - ) => - Proof era -> - Tx era -extraRedeemersTx pf = - newTx - pf - [ Body extraRedeemersBody - , WitnessesI - [ AddrWits' [mkWitnessVKey (hashAnnotated extraRedeemersBody) (someKeys pf)] - , ScriptWits' [always 3 pf] - , DataWits' [Data (PV1.I 123)] - , RdmrWits extraRedeemersEx - ] - ] - where - extraRedeemersBody = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 1] - , Collateral' [mkGenesisTxIn 11] - , Outputs' [newTxOut pf [Address (someAddr pf), Amount (inject $ Coin 4995)]] - , Txfee (Coin 5) - , WppHash - (newScriptIntegrityHash pf (pp pf) [PlutusV1] extraRedeemersEx (mkTxDats (Data (PV1.I 123)))) - ] - extraRedeemersEx = - mkRedeemersFromTags pf $ - [ ((Spending, 7), (Data (PV1.I 42), ExUnits 432 444)) - , ((Spending, 0), (Data (PV1.I 42), ExUnits 5000 5000)) - ] - -multipleEqualCertsInvalidTx :: - forall era. - ( Scriptic era - , EraTx era - , GoodCrypto (EraCrypto era) - , ShelleyEraTxCert era - ) => - Proof era -> - Tx era -multipleEqualCertsInvalidTx pf = - newTx - pf - [ Body multipleEqualCertsInvalidBody - , WitnessesI - [ AddrWits' [mkWitnessVKey (hashAnnotated multipleEqualCertsInvalidBody) (someKeys pf)] - , ScriptWits' [always 2 pf] - , RdmrWits redeemers - ] - ] - where - multipleEqualCertsInvalidBody = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 3] - , Collateral' [mkGenesisTxIn 13] - , Outputs' [newTxOut pf [Address (someAddr pf), Amount (inject $ Coin 995)]] - , Certs' - [ UnRegTxCert (scriptStakeCredSuceed pf) - , UnRegTxCert (scriptStakeCredSuceed pf) -- not allowed by DELEG, but here is fine - ] - , Txfee (Coin 5) - , WppHash (newScriptIntegrityHash pf (pp pf) [PlutusV1] redeemers mempty) - ] - redeemers = - mkRedeemersFromTags - pf - [ ((Certifying, 0), (Data (PV1.I 42), ExUnits 5000 5000)) - , ((Certifying, 1), (Data (PV1.I 42), ExUnits 5000 5000)) - ] - -noCostModelTx :: - forall era. - ( Scriptic era - , GoodCrypto (EraCrypto era) - , EraTx era - ) => - Proof era -> - PParams era -> - Tx era -noCostModelTx pf pp' = - newTx - pf - [ Body noCostModelBody - , WitnessesI - [ AddrWits' [mkWitnessVKey (hashAnnotated noCostModelBody) (someKeys pf)] - , ScriptWits' [always 3 pf] - , DataWits' [Data (PV1.I 123)] - , RdmrWits redeemers - ] - ] - where - noCostModelBody = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 102] - , Collateral' [mkGenesisTxIn 11] - , Outputs' [newTxOut pf [Address (someAddr pf), Amount (inject $ Coin 4995)]] - , Txfee (Coin 5) - , WppHash (newScriptIntegrityHash pf pp' [PlutusV1] redeemers (mkTxDats (Data (PV1.I 123)))) - ] - redeemers = mkRedeemersFromTags pf [((Spending, 0), (Data (PV1.I 42), ExUnits 5000 5000))] - --- ============================== HELPER FUNCTIONS =============================== - -testU :: - forall era. - ( PostShelley era - , Reflect era - , HasCallStack - ) => - Proof era -> - Tx era -> - Either (NonEmpty (PredicateFailure (EraRule "UTXOW" era))) (State (EraRule "UTXOW" era)) -> - Assertion -testU pf = testUTXOW (UTXOW pf) (initUTxO pf) (pp pf) - -quietPlutusFailure :: FailureDescription -quietPlutusFailure = PlutusFailure "human" "debug" - -scriptStakeCredSuceed :: Scriptic era => Proof era -> StakeCredential (EraCrypto era) -scriptStakeCredSuceed pf = ScriptHashObj (alwaysSucceedsHash 2 pf) - -extraneousKeyHash :: Crypto c => KeyHash 'Witness c -extraneousKeyHash = hashKey . snd . mkKeyPair $ RawSeed 0 0 0 0 99 - --- ============================== PPARAMS =============================== - -defaultPPs :: [PParamsField era] -defaultPPs = - [ Costmdls $ zeroTestingCostModels [PlutusV1] - , MaxValSize 1000000000 - , MaxTxExUnits $ ExUnits 1000000 1000000 - , MaxBlockExUnits $ ExUnits 1000000 1000000 - , ProtocolVersion $ ProtVer (natVersion @7) 0 - , CollateralPercentage 100 - ] - -pp :: EraPParams era => Proof era -> PParams era -pp pf = newPParams pf defaultPPs diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Examples/AlonzoValidTxUTXOW.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Examples/AlonzoValidTxUTXOW.hs deleted file mode 100644 index 018d049775a..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Examples/AlonzoValidTxUTXOW.hs +++ /dev/null @@ -1,1026 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} - -module Test.Cardano.Ledger.Examples.AlonzoValidTxUTXOW (tests, mkSingleRedeemer) where - -import Cardano.Ledger.Address (RewardAccount (..)) -import Cardano.Ledger.Allegra.Scripts (ValidityInterval (..)) -import Cardano.Ledger.Alonzo.Scripts (ExUnits (..)) -import Cardano.Ledger.Alonzo.TxWits (Redeemers (..)) -import Cardano.Ledger.BaseTypes ( - Network (..), - StrictMaybe (..), - TxIx, - mkTxIxPartial, - natVersion, - ) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Credential ( - Credential (..), - StakeCredential, - ) -import Cardano.Ledger.Mary.Value (MaryValue (..), MultiAsset (..)) -import Cardano.Ledger.Plutus.Data (Data (..), hashData) -import Cardano.Ledger.Plutus.Language (Language (..)) -import Cardano.Ledger.SafeHash (hashAnnotated) -import Cardano.Ledger.Shelley.API ( - ProtVer (..), - UTxO (..), - ) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState ( - UTxOState (..), - smartUTxOState, - ) -import Cardano.Ledger.TxIn (TxIn (..)) -import Cardano.Ledger.Val (Val (..), inject, (<+>)) -import Cardano.Slotting.Slot (SlotNo (..)) -import Control.State.Transition.Extended hiding (Assertion) -import Data.Default.Class (Default (..)) -import Data.List.NonEmpty (NonEmpty) -import qualified Data.Map.Strict as Map -import GHC.Stack -import qualified PlutusLedgerApi.V1 as PV1 -import Test.Cardano.Ledger.Core.KeyPair (mkWitnessVKey) -import Test.Cardano.Ledger.Examples.STSTestUtils ( - alwaysFailsHash, - alwaysSucceedsHash, - initUTxO, - mkGenesisTxIn, - mkTxDats, - someAddr, - someKeys, - someScriptAddr, - testUTXOW, - timelockScript, - timelockStakeCred, - trustMeP, - ) -import Test.Cardano.Ledger.Generic.Fields ( - PParamsField (..), - TxBodyField (..), - TxField (..), - TxOutField (..), - WitnessesField (..), - ) -import Test.Cardano.Ledger.Generic.GenState ( - PlutusPurposeTag (..), - mkRedeemers, - mkRedeemersFromTags, - ) -import Test.Cardano.Ledger.Generic.Indexed (theKeyPair) -import Test.Cardano.Ledger.Generic.PrettyCore () -import Test.Cardano.Ledger.Generic.Proof -import Test.Cardano.Ledger.Generic.Scriptic (HasTokens (..), PostShelley, Scriptic (..)) -import Test.Cardano.Ledger.Generic.Updaters -import Test.Cardano.Ledger.Plutus (zeroTestingCostModels) -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.HUnit (Assertion, testCase) - -tests :: TestTree -tests = - testGroup - "Generic Tests for valid transactions, testing Alonzo UTXOW PredicateFailures, in postAlonzo eras." - [ alonzoUTXOWTests Alonzo - , alonzoUTXOWTests Babbage - -- alonzoUTXOWTests Conway TODO - ] - -alonzoUTXOWTests :: - forall era. - ( State (EraRule "UTXOW" era) ~ UTxOState era - , HasTokens era - , Reflect era - , PostShelley era -- MAYBE WE CAN REPLACE THIS BY GoodCrypto, - , Value era ~ MaryValue (EraCrypto era) - ) => - Proof era -> - TestTree -alonzoUTXOWTests pf = - testGroup - (show pf ++ " UTXOW examples") - [ testGroup - "valid transactions" - [ testCase "validating SPEND script" $ - testU - pf - (trustMeP pf True $ validatingTx pf) - (Right . validatingState $ pf) - , testCase "not validating SPEND script" $ - testU - pf - (trustMeP pf False $ notValidatingTx pf) - (Right . notValidatingState $ pf) - , testCase "validating CERT script" $ - testU - pf - (trustMeP pf True $ validatingWithCertTx pf) - (Right . validatingWithCertState $ pf) - , testCase "not validating CERT script" $ - testU - pf - (trustMeP pf False $ notValidatingWithCertTx pf) - (Right . notValidatingWithCertState $ pf) - , testCase "validating WITHDRAWAL script" $ - testU - pf - (trustMeP pf True $ validatingWithWithdrawalTx pf) - (Right . validatingWithWithdrawalState $ pf) - , testCase "not validating WITHDRAWAL script" $ - testU - pf - (trustMeP pf False $ notValidatingTxWithWithdrawal pf) - (Right . notValidatingWithWithdrawalState $ pf) - , testCase "validating MINT script" $ - testU - pf - (trustMeP pf True $ validatingWithMintTx pf) - (Right . validatingWithMintState $ pf) - , testCase "not validating MINT script" $ - testU - pf - (trustMeP pf False $ notValidatingWithMintTx pf) - (Right . notValidatingWithMintState $ pf) - , testCase "validating scripts everywhere" $ - testU - pf - (trustMeP pf True $ validatingManyScriptsTx pf) - (Right . validatingManyScriptsState $ pf) - , testCase "acceptable supplimentary datum" $ - testU - pf - (trustMeP pf True $ validatingSupplimentaryDatumTx pf) - (Right . validatingSupplimentaryDatumState $ pf) - , testCase "multiple identical certificates" $ - testU - pf - (trustMeP pf True $ validatingMultipleEqualCertsTx pf) - (Right . validatingMultipleEqualCertsState $ pf) - , testCase "non-script output with datum" $ - testU - pf - (trustMeP pf True $ validatingNonScriptOutWithDatumTx pf) - (Right . validatingNonScriptOutWithDatumState $ pf) - ] - ] - --- ========================================================================= --- ============================== DATA ======================================== - --- ========================================================================= --- Example 1: Process a SPEND transaction with a succeeding Plutus script. --- ========================================================================= - -validatingTx :: - forall era. - ( Scriptic era - , EraTx era - , GoodCrypto (EraCrypto era) - ) => - Proof era -> - Tx era -validatingTx pf = - newTx - pf - [ Body (validatingBody pf) - , WitnessesI - [ AddrWits' [mkWitnessVKey (hashAnnotated (validatingBody pf)) (someKeys pf)] - , ScriptWits' [always 3 pf] - , DataWits' [Data (PV1.I 123)] - , RdmrWits $ validatingRedeemers pf - ] - ] - -validatingBody :: (Scriptic era, EraTxBody era) => Proof era -> TxBody era -validatingBody pf = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 1] - , Collateral' [mkGenesisTxIn 11] - , Outputs' [validatingTxOut pf] - , Txfee (Coin 5) - , WppHash - ( newScriptIntegrityHash - pf - (pp pf) - [PlutusV1] - (validatingRedeemers pf) - (mkTxDats (Data (PV1.I 123))) - ) - ] - -validatingRedeemers :: Era era => Proof era -> Redeemers era -validatingRedeemers proof = mkSingleRedeemer proof Spending (Data (PV1.I 42)) - -validatingTxOut :: EraTxOut era => Proof era -> TxOut era -validatingTxOut pf = newTxOut pf [Address (someAddr pf), Amount (inject $ Coin 4995)] - -validatingState :: - forall era. - ( EraTxBody era - , PostShelley era - , EraGov era - ) => - Proof era -> - UTxOState era -validatingState pf = smartUTxOState (pp pf) utxo (Coin 0) (Coin 5) def mempty - where - utxo = expectedUTxO' pf (ExpectSuccess (validatingBody pf) (validatingTxOut pf)) 1 - --- ====================================================================== --- Example 2: Process a SPEND transaction with a failing Plutus script. --- ====================================================================== -datumExample2 :: Era era => Data era -datumExample2 = Data (PV1.I 0) - -notValidatingTx :: - ( Scriptic era - , EraTx era - , GoodCrypto (EraCrypto era) - ) => - Proof era -> - Tx era -notValidatingTx pf = - newTx - pf - [ Body body - , WitnessesI - [ AddrWits' [mkWitnessVKey (hashAnnotated body) (someKeys pf)] - , ScriptWits' [never 0 pf] - , DataWits' [datumExample2] - , RdmrWits redeemers - ] - ] - where - body = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 2] - , Collateral' [mkGenesisTxIn 12] - , Outputs' [newTxOut pf [Address (someAddr pf), Amount (inject $ Coin 2995)]] - , Txfee (Coin 5) - , WppHash (newScriptIntegrityHash pf (pp pf) [PlutusV1] redeemers (mkTxDats datumExample2)) - ] - redeemers = mkSingleRedeemer pf Spending (Data (PV1.I 1)) - -notValidatingState :: - ( EraTxBody era - , PostShelley era - , EraGov era - ) => - Proof era -> - UTxOState era -notValidatingState pf = smartUTxOState (pp pf) (expectedUTxO' pf ExpectFailure 2) (Coin 0) (Coin 5) def mempty - --- ========================================================================= --- Example 3: Process a CERT transaction with a succeeding Plutus script. --- ========================================================================= - -validatingWithCertTx :: - forall era. - ( Scriptic era - , EraTx era - , GoodCrypto (EraCrypto era) - , ShelleyEraTxCert era - ) => - Proof era -> - Tx era -validatingWithCertTx pf = - newTx - pf - [ Body (validatingWithCertBody pf) - , WitnessesI - [ AddrWits' [mkWitnessVKey (hashAnnotated (validatingWithCertBody pf)) (someKeys pf)] - , ScriptWits' [always 2 pf] - , RdmrWits $ validatingWithCertRedeemers pf - ] - ] - -validatingWithCertBody :: - (Scriptic era, EraTxBody era, ShelleyEraTxCert era) => Proof era -> TxBody era -validatingWithCertBody pf = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 3] - , Collateral' [mkGenesisTxIn 13] - , Outputs' [validatingWithCertTxOut pf] - , Certs' [UnRegTxCert (scriptStakeCredSuceed pf)] - , Txfee (Coin 5) - , WppHash (newScriptIntegrityHash pf (pp pf) [PlutusV1] (validatingWithCertRedeemers pf) mempty) - ] - -validatingWithCertTxOut :: EraTxOut era => Proof era -> TxOut era -validatingWithCertTxOut pf = newTxOut pf [Address (someAddr pf), Amount (inject $ Coin 995)] - -validatingWithCertRedeemers :: Era era => Proof era -> Redeemers era -validatingWithCertRedeemers proof = mkSingleRedeemer proof Certifying (Data (PV1.I 42)) - -validatingWithCertState :: - ( EraTxBody era - , PostShelley era - , EraGov era - , ShelleyEraTxCert era - ) => - Proof era -> - UTxOState era -validatingWithCertState pf = smartUTxOState (pp pf) utxo (Coin 0) (Coin 5) def mempty - where - utxo = expectedUTxO' pf (ExpectSuccess (validatingWithCertBody pf) (validatingWithCertTxOut pf)) 3 - --- ===================================================================== --- Example 4: Process a CERT transaction with a failing Plutus script. --- ===================================================================== - -notValidatingWithCertTx :: - forall era. - ( Scriptic era - , EraTx era - , GoodCrypto (EraCrypto era) - , ShelleyEraTxCert era - ) => - Proof era -> - Tx era -notValidatingWithCertTx pf = - newTx - pf - [ Body body - , WitnessesI - [ AddrWits' [mkWitnessVKey (hashAnnotated body) (someKeys pf)] - , ScriptWits' [never 1 pf] - , RdmrWits redeemers - ] - ] - where - body = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 4] - , Collateral' [mkGenesisTxIn 14] - , Outputs' [newTxOut pf [Address (someAddr pf), Amount (inject $ Coin 995)]] - , Certs' [UnRegTxCert (scriptStakeCredFail pf)] - , Txfee (Coin 5) - , WppHash (newScriptIntegrityHash pf (pp pf) [PlutusV1] redeemers mempty) - ] - redeemers = mkSingleRedeemer pf Certifying (Data (PV1.I 0)) - -notValidatingWithCertState :: - ( EraTxBody era - , PostShelley era - , EraGov era - ) => - Proof era -> - UTxOState era -notValidatingWithCertState pf = - smartUTxOState - (pp pf) - (expectedUTxO' pf ExpectFailure 4) - (Coin 0) - (Coin 5) - def - mempty - --- ============================================================================== --- Example 5: Process a WITHDRAWAL transaction with a succeeding Plutus script. --- ============================================================================== - -validatingWithWithdrawalTx :: - forall era. - ( Scriptic era - , EraTx era - , GoodCrypto (EraCrypto era) - ) => - Proof era -> - Tx era -validatingWithWithdrawalTx pf = - newTx - pf - [ Body (validatingWithWithdrawalBody pf) - , WitnessesI - [ AddrWits' [mkWitnessVKey (hashAnnotated (validatingWithWithdrawalBody pf)) (someKeys pf)] - , ScriptWits' [always 2 pf] - , RdmrWits $ validatingWithWithdrawalRedeemers pf - ] - ] - -validatingWithWithdrawalBody :: (EraTxBody era, Scriptic era) => Proof era -> TxBody era -validatingWithWithdrawalBody pf = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 5] - , Collateral' [mkGenesisTxIn 15] - , Outputs' [validatingWithWithdrawalTxOut pf] - , Txfee (Coin 5) - , Withdrawals' - ( Withdrawals $ - Map.singleton - (RewardAccount Testnet (scriptStakeCredSuceed pf)) - (Coin 1000) - ) - , WppHash - ( newScriptIntegrityHash - pf - (pp pf) - [PlutusV1] - (validatingWithWithdrawalRedeemers pf) - mempty - ) - ] - -validatingWithWithdrawalRedeemers :: Era era => Proof era -> Redeemers era -validatingWithWithdrawalRedeemers pf = mkSingleRedeemer pf Rewarding (Data (PV1.I 42)) - -validatingWithWithdrawalTxOut :: EraTxOut era => Proof era -> TxOut era -validatingWithWithdrawalTxOut pf = newTxOut pf [Address (someAddr pf), Amount (inject $ Coin 1995)] - -validatingWithWithdrawalState :: - (EraTxBody era, PostShelley era, EraGov era) => - Proof era -> - UTxOState era -validatingWithWithdrawalState pf = - smartUTxOState - (pp pf) - utxo - (Coin 0) - (Coin 5) - def - mempty - where - utxo = - expectedUTxO' - pf - (ExpectSuccess (validatingWithWithdrawalBody pf) (validatingWithWithdrawalTxOut pf)) - 5 - --- =========================================================================== --- Example 6: Process a WITHDRAWAL transaction with a failing Plutus script. --- =========================================================================== - -notValidatingTxWithWithdrawal :: - forall era. - ( Scriptic era - , EraTx era - , GoodCrypto (EraCrypto era) - ) => - Proof era -> - Tx era -notValidatingTxWithWithdrawal pf = - newTx - pf - [ Body body - , WitnessesI - [ AddrWits' [mkWitnessVKey (hashAnnotated body) (someKeys pf)] - , ScriptWits' [never 1 pf] - , RdmrWits redeemers - ] - ] - where - body = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 6] - , Collateral' [mkGenesisTxIn 16] - , Outputs' [newTxOut pf [Address (someAddr pf), Amount (inject $ Coin 1995)]] - , Txfee (Coin 5) - , Withdrawals' - ( Withdrawals $ - Map.singleton - (RewardAccount Testnet (scriptStakeCredFail pf)) - (Coin 1000) - ) - , WppHash (newScriptIntegrityHash pf (pp pf) [PlutusV1] redeemers mempty) - ] - redeemers = mkSingleRedeemer pf Rewarding (Data (PV1.I 0)) - -notValidatingWithWithdrawalState :: - (EraTxBody era, PostShelley era, EraGov era) => - Proof era -> - UTxOState era -notValidatingWithWithdrawalState pf = - smartUTxOState - (pp pf) - (expectedUTxO' pf ExpectFailure 6) - (Coin 0) - (Coin 5) - def - mempty - --- ============================================================================= --- Example 7: Process a MINT transaction with a succeeding Plutus script. --- ============================================================================= - -validatingWithMintTx :: - forall era. - ( Scriptic era - , HasTokens era - , EraTx era - , GoodCrypto (EraCrypto era) - , Value era ~ MaryValue (EraCrypto era) - ) => - Proof era -> - Tx era -validatingWithMintTx pf = - newTx - pf - [ Body (validatingWithMintBody pf) - , WitnessesI - [ AddrWits' [mkWitnessVKey (hashAnnotated (validatingWithMintBody pf)) (someKeys pf)] - , ScriptWits' [always 2 pf] - , RdmrWits $ validatingWithMintRedeemers pf - ] - ] - -validatingWithMintBody :: - (HasTokens era, EraTxBody era, Scriptic era, Value era ~ MaryValue (EraCrypto era)) => - Proof era -> - TxBody era -validatingWithMintBody pf = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 7] - , Collateral' [mkGenesisTxIn 17] - , Outputs' [validatingWithMintTxOut pf] - , Txfee (Coin 5) - , Mint (multiAsset pf) - , WppHash (newScriptIntegrityHash pf (pp pf) [PlutusV1] (validatingWithMintRedeemers pf) mempty) - ] - -validatingWithMintRedeemers :: Era era => Proof era -> Redeemers era -validatingWithMintRedeemers pf = mkSingleRedeemer pf Minting (Data (PV1.I 42)) - -multiAsset :: forall era. (Scriptic era, HasTokens era) => Proof era -> MultiAsset (EraCrypto era) -multiAsset pf = forge @era 1 (always 2 pf) - -validatingWithMintTxOut :: - ( HasTokens era - , EraTxOut era - , Scriptic era - , Value era ~ MaryValue (EraCrypto era) - ) => - Proof era -> - TxOut era -validatingWithMintTxOut pf = - newTxOut pf [Address (someAddr pf), Amount (MaryValue mempty (multiAsset pf) <+> inject (Coin 995))] - -validatingWithMintState :: - forall era. - (PostShelley era, EraTxBody era, HasTokens era, Value era ~ MaryValue (EraCrypto era), EraGov era) => - Proof era -> - UTxOState era -validatingWithMintState pf = - smartUTxOState - (pp pf) - utxo - (Coin 0) - (Coin 5) - def - mempty - where - utxo = expectedUTxO' pf (ExpectSuccess (validatingWithMintBody pf) (validatingWithMintTxOut pf)) 7 - --- ============================================================================== --- Example 8: Process a MINT transaction with a failing Plutus script. --- ============================================================================== - -notValidatingWithMintTx :: - forall era. - ( Scriptic era - , HasTokens era - , EraTx era - , GoodCrypto (EraCrypto era) - , Value era ~ MaryValue (EraCrypto era) - ) => - Proof era -> - Tx era -notValidatingWithMintTx pf = - newTx - pf - [ Body body - , WitnessesI - [ AddrWits' [mkWitnessVKey (hashAnnotated body) (someKeys pf)] - , ScriptWits' [never 1 pf] - , RdmrWits redeemers - ] - ] - where - body = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 8] - , Collateral' [mkGenesisTxIn 18] - , Outputs' [newTxOut pf [Address (someAddr pf), Amount (MaryValue mempty mint <+> inject (Coin 995))]] - , Txfee (Coin 5) - , Mint mint - , WppHash (newScriptIntegrityHash pf (pp pf) [PlutusV1] redeemers mempty) - ] - redeemers = mkSingleRedeemer pf Minting (Data (PV1.I 0)) - mint = forge @era 1 (never 1 pf) - -notValidatingWithMintState :: - (EraTxBody era, PostShelley era, EraGov era) => - Proof era -> - UTxOState era -notValidatingWithMintState pf = smartUTxOState (pp pf) utxo (Coin 0) (Coin 5) def zero - where - utxo = expectedUTxO' pf ExpectFailure 8 - --- ==================================================================================== --- Example 9: Process a transaction with a succeeding script in every place possible, --- and also with succeeding timelock scripts. --- ==================================================================================== - -validatingManyScriptsTx :: - forall era. - ( PostShelley era - , HasTokens era - , EraTxBody era - , GoodCrypto (EraCrypto era) - , Value era ~ MaryValue (EraCrypto era) - , ShelleyEraTxCert era - ) => - Proof era -> - Tx era -validatingManyScriptsTx pf = - newTx - pf - [ Body (validatingManyScriptsBody pf) - , WitnessesI - [ AddrWits' $ - map - (mkWitnessVKey . hashAnnotated . validatingManyScriptsBody $ pf) - [someKeys pf, theKeyPair 1] - , ScriptWits' - [ always 2 pf - , always 3 pf - , timelockScript 0 pf - , timelockScript 1 pf - , timelockScript 2 pf - ] - , DataWits' [Data (PV1.I 123)] - , RdmrWits $ validatingManyScriptsRedeemers pf - ] - ] - -validatingManyScriptsBody :: - ( HasTokens era - , EraTxBody era - , PostShelley era - , Value era ~ MaryValue (EraCrypto era) - , ShelleyEraTxCert era - ) => - Proof era -> - TxBody era -validatingManyScriptsBody pf = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 1, mkGenesisTxIn 100] - , Collateral' [mkGenesisTxIn 11] - , Outputs' [validatingManyScriptsTxOut pf] - , Txfee (Coin 5) - , Certs' - [ UnRegTxCert (timelockStakeCred pf) - , UnRegTxCert (scriptStakeCredSuceed pf) - ] - , Withdrawals' - ( Withdrawals $ - Map.fromList - [ (RewardAccount Testnet (scriptStakeCredSuceed pf), Coin 0) - , (RewardAccount Testnet (timelockStakeCred pf), Coin 0) - ] - ) - , Mint (validatingManyScriptsMint pf) - , WppHash - ( newScriptIntegrityHash - pf - (pp pf) - [PlutusV1] - (validatingManyScriptsRedeemers pf) - (mkTxDats (Data (PV1.I 123))) - ) - , Vldt (ValidityInterval SNothing (SJust $ SlotNo 1)) - ] - -validatingManyScriptsRedeemers :: Era era => Proof era -> Redeemers era -validatingManyScriptsRedeemers proof = - mkRedeemersFromTags - proof - [ ((Spending, 0), (Data (PV1.I 101), ExUnits 5000 5000)) - , ((Certifying, 1), (Data (PV1.I 102), ExUnits 5000 5000)) - , ((Rewarding, 0), (Data (PV1.I 103), ExUnits 5000 5000)) - , ((Minting, 0), (Data (PV1.I 104), ExUnits 5000 5000)) - ] - -validatingManyScriptsMint :: - forall era. (PostShelley era, HasTokens era) => Proof era -> MultiAsset (EraCrypto era) -validatingManyScriptsMint pf = forge @era 1 (always 2 pf) <> forge @era 1 (timelockScript 1 pf) - -validatingManyScriptsTxOut :: - (HasTokens era, EraTxOut era, PostShelley era, Value era ~ MaryValue (EraCrypto era)) => - Proof era -> - TxOut era -validatingManyScriptsTxOut pf = - newTxOut - pf - [ Address (someAddr pf) - , Amount (MaryValue mempty (validatingManyScriptsMint pf) <+> inject (Coin 4996)) - ] - -validatingManyScriptsState :: - forall era. - ( EraTxBody era - , PostShelley era - , HasTokens era - , Value era ~ MaryValue (EraCrypto era) - , EraGov era - , ShelleyEraTxCert era - ) => - Proof era -> - UTxOState era -validatingManyScriptsState pf = - smartUTxOState - (pp pf) - (UTxO utxo) - (Coin 0) - (Coin 5) - def - mempty - where - utxo = - Map.insert - (TxIn (txIdTxBody (validatingManyScriptsBody pf)) minBound) - (validatingManyScriptsTxOut pf) - $ Map.filterWithKey - (\k _ -> k /= mkGenesisTxIn 1 && k /= mkGenesisTxIn 100) - (unUTxO $ initUTxO pf) - --- ==================================================================================== --- Example 10: A transaction with an acceptable supplimentary datum --- ==================================================================================== - -validatingSupplimentaryDatumTx :: - forall era. - ( Scriptic era - , EraTx era - , GoodCrypto (EraCrypto era) - ) => - Proof era -> - Tx era -validatingSupplimentaryDatumTx pf = - newTx - pf - [ Body (validatingSupplimentaryDatumBody pf) - , WitnessesI - [ AddrWits' [mkWitnessVKey (hashAnnotated (validatingSupplimentaryDatumBody pf)) (someKeys pf)] - , DataWits' [Data (PV1.I 123)] - ] - ] - -validatingSupplimentaryDatumBody :: (EraTxBody era, Scriptic era) => Proof era -> TxBody era -validatingSupplimentaryDatumBody pf = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 3] - , Outputs' [validatingSupplimentaryDatumTxOut pf] - , Txfee (Coin 5) - , WppHash (newScriptIntegrityHash pf (pp pf) [] (mkRedeemers pf []) (mkTxDats (Data (PV1.I 123)))) - ] - -validatingSupplimentaryDatum :: Era era => Data era -validatingSupplimentaryDatum = Data (PV1.I 123) - -validatingSupplimentaryDatumTxOut :: - forall era. (EraTxBody era, Scriptic era) => Proof era -> TxOut era -validatingSupplimentaryDatumTxOut pf = - newTxOut - pf - [ Address (someScriptAddr (always 3 pf)) - , Amount (inject $ Coin 995) - , DHash' [hashData $ validatingSupplimentaryDatum @era] - ] - -validatingSupplimentaryDatumState :: - forall era. - (EraTxBody era, PostShelley era, EraGov era) => - Proof era -> - UTxOState era -validatingSupplimentaryDatumState pf = - smartUTxOState (pp pf) utxo (Coin 0) (Coin 5) def mempty - where - utxo = - expectedUTxO' - pf - (ExpectSuccess (validatingSupplimentaryDatumBody pf) (validatingSupplimentaryDatumTxOut pf)) - 3 - --- ==================================================================================== --- Example 11: A transaction with multiple identical certificates --- ==================================================================================== - -validatingMultipleEqualCertsTx :: - forall era. - ( Scriptic era - , EraTx era - , GoodCrypto (EraCrypto era) - , ShelleyEraTxCert era - ) => - Proof era -> - Tx era -validatingMultipleEqualCertsTx pf = - newTx - pf - [ Body (validatingMultipleEqualCertsBody pf) - , WitnessesI - [ AddrWits' [mkWitnessVKey (hashAnnotated (validatingMultipleEqualCertsBody pf)) (someKeys pf)] - , ScriptWits' [always 2 pf] - , RdmrWits $ validatingMultipleEqualCertsRedeemers pf - ] - ] - -validatingMultipleEqualCertsBody :: - (EraTxBody era, Scriptic era, ShelleyEraTxCert era) => Proof era -> TxBody era -validatingMultipleEqualCertsBody pf = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 3] - , Collateral' [mkGenesisTxIn 13] - , Outputs' [validatingMultipleEqualCertsOut pf] - , Certs' - [ UnRegTxCert (scriptStakeCredSuceed pf) - , UnRegTxCert (scriptStakeCredSuceed pf) -- not allowed by DELEG, but here is fine - ] - , Txfee (Coin 5) - , WppHash - ( newScriptIntegrityHash - pf - (pp pf) - [PlutusV1] - (validatingMultipleEqualCertsRedeemers pf) - mempty - ) - ] - -validatingMultipleEqualCertsRedeemers :: Era era => Proof era -> Redeemers era -validatingMultipleEqualCertsRedeemers pf = mkSingleRedeemer pf Certifying (Data (PV1.I 42)) - -validatingMultipleEqualCertsOut :: EraTxOut era => Proof era -> TxOut era -validatingMultipleEqualCertsOut pf = newTxOut pf [Address (someAddr pf), Amount (inject $ Coin 995)] - -validatingMultipleEqualCertsState :: - (EraTxBody era, PostShelley era, EraGov era, ShelleyEraTxCert era) => - Proof era -> - UTxOState era -validatingMultipleEqualCertsState pf = - smartUTxOState (pp pf) utxo (Coin 0) (Coin 5) def mempty - where - utxo = - expectedUTxO' - pf - (ExpectSuccess (validatingMultipleEqualCertsBody pf) (validatingMultipleEqualCertsOut pf)) - 3 - --- ==================================================================================== --- Example 12: Attaching a datum (hash) to a non-script output. --- --- Note that a when spending a non-script output with a datum hash, the datum cannot --- be supplied, because it is considered extraneous, --- as in the 'notOkSupplimentaryDatumTx' example. --- ==================================================================================== - -validatingNonScriptOutWithDatumTx :: - forall era. - ( Scriptic era - , EraTx era - , GoodCrypto (EraCrypto era) - ) => - Proof era -> - Tx era -validatingNonScriptOutWithDatumTx pf = - newTx - pf - [ Body (validatingNonScriptOutWithDatumTxBody pf) - , WitnessesI - [ AddrWits' [mkWitnessVKey (hashAnnotated (validatingNonScriptOutWithDatumTxBody pf)) (someKeys pf)] - ] - ] - -validatingNonScriptOutWithDatumTxBody :: EraTxBody era => Proof era -> TxBody era -validatingNonScriptOutWithDatumTxBody pf = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 103] - , Outputs' [validatingNonScriptOutWithDatumTxOut pf] - , Txfee (Coin 5) - ] - -validatingNonScriptOutWithDatumTxOut :: EraTxOut era => Proof era -> TxOut era -validatingNonScriptOutWithDatumTxOut pf = newTxOut pf [Address (someAddr pf), Amount (inject $ Coin 1216)] - -validatingNonScriptOutWithDatumState :: - ( PostShelley era - , EraTxBody era - , EraGov era - ) => - Proof era -> - UTxOState era -validatingNonScriptOutWithDatumState pf = - smartUTxOState (pp pf) utxo (Coin 0) (Coin 5) def mempty - where - utxo = - expectedUTxO' - pf - (ExpectSuccess (validatingNonScriptOutWithDatumTxBody pf) (validatingNonScriptOutWithDatumTxOut pf)) - 103 - --- ============================== HELPER FUNCTIONS =============================== - --- This is a helper type for the expectedUTxO function. --- ExpectSuccess indicates that we created a valid transaction --- where the IsValid flag is true. -data Expect era - = ExpectSuccess (TxBody era) (TxOut era) - | ExpectSuccessInvalid - | ExpectFailure - --- | In each of our main eight examples, the UTxO map obtained --- by applying the transaction is straightforward. This function --- captures the logic. --- --- Each example transaction (given a number i) will use --- (TxIn genesisId (10+i), someOutput) for its' single input, --- and (TxIn genesisId i, collateralOutput) for its' single collateral output. --- --- If we expect the transaction script to validate, then --- the UTxO for (TxIn genesisId i) will be consumed and a UTxO will be created. --- Otherwise, the UTxO for (TxIn genesisId (10+i)) will be consumed. -expectedUTxO :: - forall era. - (HasCallStack, EraTxBody era) => - UTxO era -> - Expect era -> - Integer -> - UTxO era -expectedUTxO initUtxo ex idx = UTxO utxo - where - utxo = case ex of - ExpectSuccess txb newOut -> - Map.insert (TxIn (txIdTxBody txb) minBound) newOut (filteredUTxO (mkTxIxPartial idx)) - ExpectSuccessInvalid -> filteredUTxO (mkTxIxPartial idx) - ExpectFailure -> filteredUTxO (mkTxIxPartial (10 + idx)) - filteredUTxO :: TxIx -> Map.Map (TxIn (EraCrypto era)) (TxOut era) - filteredUTxO x = Map.filterWithKey (\(TxIn _ i) _ -> i /= x) $ unUTxO initUtxo - -expectedUTxO' :: - (HasCallStack, EraTxBody era, PostShelley era) => - Proof era -> - Expect era -> - Integer -> - UTxO era -expectedUTxO' pf = expectedUTxO (initUTxO pf) - -testU :: - forall era. - ( PostShelley era - , Reflect era - , HasCallStack - ) => - Proof era -> - Tx era -> - Either (NonEmpty (PredicateFailure (EraRule "UTXOW" era))) (State (EraRule "UTXOW" era)) -> - Assertion -testU pf = testUTXOW (UTXOW pf) (initUTxO pf) (pp pf) - -scriptStakeCredFail :: Scriptic era => Proof era -> StakeCredential (EraCrypto era) -scriptStakeCredFail pf = ScriptHashObj (alwaysFailsHash 1 pf) - -scriptStakeCredSuceed :: Scriptic era => Proof era -> StakeCredential (EraCrypto era) -scriptStakeCredSuceed pf = ScriptHashObj (alwaysSucceedsHash 2 pf) - --- ============================== PPARAMS =============================== - -defaultPPs :: [PParamsField era] -defaultPPs = - [ Costmdls $ zeroTestingCostModels [PlutusV1] - , MaxValSize 1000000000 - , MaxTxExUnits $ ExUnits 1000000 1000000 - , MaxBlockExUnits $ ExUnits 1000000 1000000 - , ProtocolVersion $ ProtVer (natVersion @5) 0 - , CollateralPercentage 100 - ] - -pp :: EraPParams era => Proof era -> PParams era -pp pf = newPParams pf defaultPPs - -mkSingleRedeemer :: Proof era -> PlutusPurposeTag -> Data era -> Redeemers era -mkSingleRedeemer proof tag datum = - mkRedeemersFromTags proof [((tag, 0), (datum, ExUnits 5000 5000))] diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Examples/BabbageFeatures.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Examples/BabbageFeatures.hs deleted file mode 100644 index e767cd44386..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Examples/BabbageFeatures.hs +++ /dev/null @@ -1,1482 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} - -module Test.Cardano.Ledger.Examples.BabbageFeatures ( - InOut, - TestCaseData (..), - InitOutputs (..), - InitUtxo (..), - KeyPairRole (..), - txFromTestCaseData, - utxoFromTestCaseData, - babbageFeatures, -) where - -import qualified Cardano.Crypto.Hash as CH -import Cardano.Ledger.Address (Addr (..)) -import Cardano.Ledger.Alonzo.Plutus.Evaluate (CollectError (BadTranslation)) -import Cardano.Ledger.Alonzo.Plutus.TxInfo ( - TxOutSource (TxOutFromInput, TxOutFromOutput), - ) -import Cardano.Ledger.Alonzo.Rules ( - AlonzoUtxosPredFailure (CollectErrors), - AlonzoUtxowPredFailure (MissingRequiredDatums, NotAllowedSupplementalDatums), - ) -import Cardano.Ledger.Alonzo.Scripts (ExUnits (..)) -import Cardano.Ledger.Alonzo.TxWits (Redeemers (..), TxDats (..)) -import qualified Cardano.Ledger.Babbage.Collateral as Collateral (collAdaBalance) -import Cardano.Ledger.Babbage.Core -import Cardano.Ledger.Babbage.Rules (BabbageUtxoPredFailure (..), BabbageUtxowPredFailure (..)) -import Cardano.Ledger.Babbage.TxInfo ( - BabbageContextError ( - InlineDatumsNotSupported, - ReferenceInputsNotSupported, - ReferenceScriptsNotSupported - ), - ) -import Cardano.Ledger.BaseTypes ( - Network (..), - SlotNo (..), - StrictMaybe (..), - mkTxIx, - mkTxIxPartial, - ) -import Cardano.Ledger.Coin (Coin (..), DeltaCoin (..)) -import Cardano.Ledger.Conway.TxInfo (ConwayContextError (..)) -import Cardano.Ledger.Credential (Credential (..), StakeReference (..)) -import Cardano.Ledger.Crypto -import Cardano.Ledger.Keys ( - KeyHash, - KeyRole (..), - hashKey, - ) -import Cardano.Ledger.Plutus.Data (Data (..), Datum (..), dataToBinaryData, hashData) -import Cardano.Ledger.Plutus.Language ( - Language (..), - Plutus (..), - PlutusBinary (..), - PlutusLanguage, - ) -import Cardano.Ledger.SafeHash (hashAnnotated) -import Cardano.Ledger.Shelley.API (UTxO (..)) -import Cardano.Ledger.Shelley.LedgerState (UTxOState (..), smartUTxOState) -import qualified Cardano.Ledger.Shelley.Rules as Shelley -import Cardano.Ledger.TxIn (TxIn (..), mkTxInPartial) -import Cardano.Ledger.Val (inject) -import Control.State.Transition.Extended hiding (Assertion) -import qualified Data.ByteString as BS -import Data.ByteString.Short as SBS (ShortByteString, pack) -import Data.Default.Class (Default (..)) -import Data.Foldable (toList) -import Data.List.NonEmpty (NonEmpty ((:|))) -import qualified Data.Map.Strict as Map -import Data.Maybe (maybeToList) -import qualified Data.Sequence.Strict as StrictSeq -import qualified Data.Set as Set -import GHC.Stack -import Lens.Micro -import qualified PlutusLedgerApi.V1 as PV1 -import Test.Cardano.Ledger.Alonzo.Arbitrary (mkPlutusScript') -import Test.Cardano.Ledger.Core.KeyPair (KeyPair (..), mkWitnessVKey) -import Test.Cardano.Ledger.Examples.STSTestUtils ( - mkGenesisTxIn, - mkTxDats, - testUTXOW, - trustMeP, - ) -import Test.Cardano.Ledger.Generic.Fields ( - PParamsField (..), - TxBodyField (..), - TxField (..), - TxOutField (..), - WitnessesField (..), - ) -import Test.Cardano.Ledger.Generic.Functions -import Test.Cardano.Ledger.Generic.GenState ( - PlutusPurposeTag (..), - mkRedeemers, - mkRedeemersFromTags, - ) -import Test.Cardano.Ledger.Generic.Proof -import Test.Cardano.Ledger.Generic.Scriptic (PostShelley, Scriptic (..)) -import Test.Cardano.Ledger.Generic.Updaters -import Test.Cardano.Ledger.Plutus (zeroTestingCostModels) -import Test.Cardano.Ledger.Shelley.Utils (RawSeed (..), mkKeyPair) -import Test.Tasty -import Test.Tasty.HUnit (Assertion, assertEqual, assertFailure, testCase) - -someKeys :: forall era. Era era => Proof era -> KeyPair 'Payment (EraCrypto era) -someKeys _pf = KeyPair vk sk - where - (sk, vk) = mkKeyPair @(EraCrypto era) (RawSeed 1 1 1 1 1) - -someKeysPaymentKeyRole :: forall era. Era era => Proof era -> KeyPairRole era -someKeysPaymentKeyRole pf = KeyPairPayment (someKeys pf) - -keysForMultisig :: forall era. Era era => Proof era -> KeyPair 'Witness (EraCrypto era) -keysForMultisig _pf = KeyPair vk sk - where - (sk, vk) = mkKeyPair @(EraCrypto era) (RawSeed 0 0 0 0 99) - -keysForMultisigWitnessKeyRole :: forall era. Era era => Proof era -> KeyPairRole era -keysForMultisigWitnessKeyRole pf = KeyPairWitness (keysForMultisig pf) - -keyHashForMultisig :: forall era. Era era => Proof era -> KeyHash 'Witness (EraCrypto era) -keyHashForMultisig pf = hashKey . vKey $ keysForMultisig pf - -simpleScript :: forall era. Scriptic era => Proof era -> Script era -simpleScript pf = fromNativeScript $ allOf [require @era (keyHashForMultisig pf)] pf - -evenData3ArgsScript :: HasCallStack => Proof era -> Script era -evenData3ArgsScript proof = - case proof of - Shelley -> error unsupported - Mary -> error unsupported - Allegra -> error unsupported - Alonzo -> evenData3ArgsLang @'PlutusV1 - Babbage -> evenData3ArgsLang @'PlutusV2 - Conway -> evenData3ArgsLang @'PlutusV2 - where - unsupported = "Plutus scripts are not supported in:" ++ show proof - evenData3ArgsLang :: forall l era'. (PlutusLanguage l, AlonzoEraScript era') => Script era' - evenData3ArgsLang = - mkPlutusScript' . Plutus @l . PlutusBinary . SBS.pack $ - concat - [ [88, 65, 1, 0, 0, 51, 50, 34, 51, 34, 34, 37, 51, 83, 0] - , [99, 50, 35, 51, 87, 52, 102, 225, 192, 8, 0, 64, 40, 2, 76] - , [200, 140, 220, 48, 1, 0, 9, 186, 208, 3, 72, 1, 18, 0, 1] - , [0, 81, 50, 99, 83, 0, 64, 5, 73, 132, 128, 4, 128, 4, 72] - , [128, 8, 72, 128, 4, 128, 5] - ] - -plainAddr :: forall era. Era era => Proof era -> Addr (EraCrypto era) -plainAddr pf = Addr Testnet pCred sCred - where - (_ssk, svk) = mkKeyPair @(EraCrypto era) (RawSeed 0 0 0 0 2) - pCred = KeyHashObj . hashKey . vKey $ someKeys pf - sCred = StakeRefBase . KeyHashObj . hashKey $ svk - -scriptAddr :: forall era. Reflect era => Proof era -> Script era -> Addr (EraCrypto era) -scriptAddr _pf s = Addr Testnet pCred sCred - where - pCred = ScriptHashObj . hashScript @era $ s - (_ssk, svk) = mkKeyPair @(EraCrypto era) (RawSeed 0 0 0 0 0) - sCred = StakeRefBase . KeyHashObj . hashKey $ svk - -malformedScriptAddr :: forall era. EraScript era => Proof era -> Addr (EraCrypto era) -malformedScriptAddr pf = Addr Testnet pCred sCred - where - pCred = ScriptHashObj . hashScript @era $ malformedScript pf "malfoy" - (_ssk, svk) = mkKeyPair @(EraCrypto era) (RawSeed 0 0 0 0 0) - sCred = StakeRefBase . KeyHashObj . hashKey $ svk - -simpleScriptAddr :: forall era. (Reflect era, Scriptic era) => Proof era -> Addr (EraCrypto era) -simpleScriptAddr pf = scriptAddr pf (simpleScript pf) - -datumExampleEven :: Era era => Data era -datumExampleEven = Data (PV1.I 2) - -datumExampleOdd :: Era era => Data era -datumExampleOdd = Data (PV1.I 3) - -validatingRedeemers :: Era era => Proof era -> Redeemers era -validatingRedeemers proof = - mkRedeemersFromTags - proof - [((Spending, 0), (Data (PV1.I 42), ExUnits 5000 5000))] - --- We intentionally use a ByteString with length greater than 64 to serve as --- as reminder that our protection against contiguous data over 64 Bytes on --- the wire is done during deserialization using the Plutus library. -sixtyFiveBytes :: BS.ByteString -sixtyFiveBytes = BS.pack [1 .. 65] - -datumExampleSixtyFiveBytes :: Era era => Data era -datumExampleSixtyFiveBytes = Data (PV1.B sixtyFiveBytes) - -txDats :: Era era => TxDats era -txDats = mkTxDats datumExampleSixtyFiveBytes - -someTxIn :: (CH.HashAlgorithm (HASH c), HasCallStack) => TxIn c -someTxIn = mkGenesisTxIn 1 - -anotherTxIn :: (CH.HashAlgorithm (HASH c), HasCallStack) => TxIn c -anotherTxIn = mkGenesisTxIn 2 - -yetAnotherTxIn :: (CH.HashAlgorithm (HASH c), HasCallStack) => TxIn c -yetAnotherTxIn = mkGenesisTxIn 3 - -commonTxIn :: (CH.HashAlgorithm (HASH c), HasCallStack) => TxIn c -commonTxIn = mkGenesisTxIn 4 - -defaultPPs :: Proof era -> [PParamsField era] -defaultPPs p = - [ Costmdls $ zeroTestingCostModels [PlutusV1, PlutusV2] - , MaxValSize 1000000000 - , MaxTxExUnits $ ExUnits 1000000 1000000 - , MaxBlockExUnits $ ExUnits 1000000 1000000 - , ProtocolVersion $ protocolVersion p - , CollateralPercentage 1 - , CoinPerUTxOByte (CoinPerByte (Coin 5)) - ] - -pp :: EraPParams era => Proof era -> PParams era -pp pf = newPParams pf (defaultPPs pf) - --- ========================================================================= --- Spend a EUTxO with an inline datum (without and with a failing script) --- ========================================================================= - -inlineDatum :: forall era. (Scriptic era, Reflect era) => Proof era -> TestCaseData era -inlineDatum pf = - TestCaseData - { txBody = - newTxBody - pf - [ Inputs' [someTxIn] - , Collateral' [anotherTxIn] - , Outputs' [newTxOut pf [Address (plainAddr pf), Amount (inject $ Coin 4995)]] - , Txfee (Coin 5) - , WppHash (newScriptIntegrityHash pf (pp pf) [PlutusV2] (validatingRedeemers pf) mempty) - ] - , initOutputs = - InitOutputs - { ofInputs = - [ newTxOut - pf - [ Address (scriptAddr pf (evenData3ArgsScript pf)) - , Amount (inject $ Coin 5000) - , FDatum (Datum . dataToBinaryData $ datumExampleEven @era) - ] - ] - , ofRefInputs = [] - , ofCollateral = [newTxOut pf [Address $ plainAddr pf, Amount (inject $ Coin 2115)]] - } - , keysForAddrWits = [someKeysPaymentKeyRole pf] - , otherWitsFields = - [ ScriptWits' [evenData3ArgsScript pf] - , RdmrWits $ validatingRedeemers pf - ] - } - -inlineDatumFailingScript :: forall era. (Scriptic era, Reflect era) => Proof era -> TestCaseData era -inlineDatumFailingScript pf = - TestCaseData - { txBody = - newTxBody - pf - [ Inputs' [someTxIn] - , Collateral' [anotherTxIn] - , Outputs' [newTxOut pf [Address (plainAddr pf), Amount (inject $ Coin 4995)]] - , Txfee (Coin 5) - , WppHash (newScriptIntegrityHash pf (pp pf) [PlutusV2] (validatingRedeemers pf) mempty) - ] - , initOutputs = - InitOutputs - { ofInputs = - [ newTxOut - pf - [ Address (scriptAddr pf (evenData3ArgsScript pf)) - , Amount (inject $ Coin 5000) - , FDatum (Datum . dataToBinaryData $ datumExampleOdd @era) - ] - ] - , ofRefInputs = [] - , ofCollateral = [newTxOut pf [Address $ plainAddr pf, Amount (inject $ Coin 2115)]] - } - , keysForAddrWits = [someKeysPaymentKeyRole pf] - , otherWitsFields = - [ ScriptWits' [evenData3ArgsScript pf] - , RdmrWits $ validatingRedeemers pf - ] - } - --- ========================================================================= --- Valid: Use a reference script. --- ========================================================================= - -referenceScript :: forall era. (Scriptic era, Reflect era) => Proof era -> TestCaseData era -referenceScript pf = - TestCaseData - { txBody = - newTxBody - pf - [ Inputs' [someTxIn] - , RefInputs' [anotherTxIn] - , Collateral' [yetAnotherTxIn] - , Outputs' [newTxOut pf [Address (plainAddr pf), Amount (inject $ Coin 4995)]] - , Txfee (Coin 5) - , WppHash (newScriptIntegrityHash pf (pp pf) [PlutusV2] (validatingRedeemers pf) txDats) - ] - , initOutputs = - InitOutputs - { ofInputs = - [ newTxOut - pf - [ Address (scriptAddr pf (alwaysAlt 3 pf)) - , Amount (inject $ Coin 5000) - , DHash' [hashData $ datumExampleSixtyFiveBytes @era] - ] - ] - , ofRefInputs = - [ newTxOut - pf - [ Address (plainAddr pf) - , Amount (inject $ Coin 5000) - , RefScript (SJust $ alwaysAlt 3 pf) - ] - ] - , ofCollateral = [newTxOut pf [Address $ plainAddr pf, Amount (inject $ Coin 2115)]] - } - , keysForAddrWits = [someKeysPaymentKeyRole pf] - , otherWitsFields = - [ DataWits' [datumExampleSixtyFiveBytes] - , RdmrWits $ validatingRedeemers pf - ] - } - -commonReferenceScript :: forall era. (Scriptic era, Reflect era) => Proof era -> TestCaseData era -commonReferenceScript pf = - TestCaseData - { txBody = - newTxBody - pf - [ Inputs' [someTxIn, commonTxIn] - , RefInputs' [anotherTxIn, commonTxIn] - , Collateral' [yetAnotherTxIn] - , Outputs' [newTxOut pf [Address (plainAddr pf), Amount (inject $ Coin 4995)]] - , Txfee (Coin 5) - , WppHash (newScriptIntegrityHash pf (pp pf) [PlutusV2] (validatingRedeemers pf) txDats) - ] - , initOutputs = - InitOutputs - { ofInputs = - [ newTxOut - pf - [ Address (scriptAddr pf (alwaysAlt 3 pf)) - , Amount (inject $ Coin 2500) - , DHash' [hashData $ datumExampleSixtyFiveBytes @era] - ] - , newTxOut - pf - [ Address (plainAddr pf) - , Amount (inject $ Coin 2500) - ] - ] - , ofRefInputs = - [ newTxOut - pf - [ Address (plainAddr pf) - , Amount (inject $ Coin 5000) - , RefScript (SJust $ alwaysAlt 3 pf) - ] - ] - , ofCollateral = [newTxOut pf [Address $ plainAddr pf, Amount (inject $ Coin 2115)]] - } - , keysForAddrWits = [someKeysPaymentKeyRole pf] - , otherWitsFields = - [ DataWits' [datumExampleSixtyFiveBytes] - , RdmrWits $ validatingRedeemers pf - ] - } - --- ========================================================================= --- Valid: Spend a EUTxO with an inline datum, using a reference script. --- Notice that the reference input is not consumed. --- ========================================================================= - -inlineDatumAndRefScript :: - forall era. - (Scriptic era, Reflect era) => - Proof era -> - TestCaseData era -inlineDatumAndRefScript pf = - TestCaseData - { txBody = - newTxBody - pf - [ Inputs' [someTxIn] - , RefInputs' [anotherTxIn] - , Collateral' [yetAnotherTxIn] - , Outputs' [newTxOut pf [Address (plainAddr pf), Amount (inject $ Coin 4995)]] - , Txfee (Coin 5) - , WppHash (newScriptIntegrityHash pf (pp pf) [PlutusV2] (validatingRedeemers pf) mempty) - ] - , initOutputs = - InitOutputs - { ofInputs = - [ newTxOut - pf - [ Address (scriptAddr pf (evenData3ArgsScript pf)) - , Amount (inject $ Coin 5000) - , FDatum (Datum . dataToBinaryData $ datumExampleEven @era) - ] - ] - , ofRefInputs = - [ newTxOut - pf - [ Address (plainAddr pf) - , Amount (inject $ Coin 5000) - , RefScript (SJust $ evenData3ArgsScript pf) - ] - ] - , ofCollateral = [newTxOut pf [Address $ plainAddr pf, Amount (inject $ Coin 2115)]] - } - , keysForAddrWits = [someKeysPaymentKeyRole pf] - , otherWitsFields = - [ RdmrWits $ validatingRedeemers pf - ] - } - --- ========================================================================= --- Invalid: Spend a EUTxO with an inline datum, using a reference script, --- and also redundantly supply the script witness. --- ========================================================================= - -inlineDatumAndRefScriptWithRedundantWitScript :: - forall era. - (Scriptic era, Reflect era) => - Proof era -> - TestCaseData era -inlineDatumAndRefScriptWithRedundantWitScript pf = - TestCaseData - { txBody = - newTxBody - pf - [ Inputs' [someTxIn] - , RefInputs' [anotherTxIn] - , Collateral' [yetAnotherTxIn] - , Outputs' [newTxOut pf [Address (plainAddr pf), Amount (inject $ Coin 4995)]] - , Txfee (Coin 5) - , WppHash (newScriptIntegrityHash pf (pp pf) [PlutusV2] (validatingRedeemers pf) mempty) - ] - , initOutputs = - InitOutputs - { ofInputs = - [ newTxOut - pf - [ Address (scriptAddr pf (evenData3ArgsScript pf)) - , Amount (inject $ Coin 5000) - , FDatum (Datum . dataToBinaryData $ datumExampleEven @era) - ] - ] - , ofRefInputs = - [ newTxOut - pf - [ Address (plainAddr pf) - , Amount (inject $ Coin 5000) - , RefScript (SJust $ evenData3ArgsScript pf) - ] - ] - , ofCollateral = [newTxOut pf [Address $ plainAddr pf, Amount (inject $ Coin 2115)]] - } - , keysForAddrWits = [someKeysPaymentKeyRole pf] - , otherWitsFields = - [ ScriptWits' [alwaysAlt 3 pf] -- This is redundant with the reference script - , RdmrWits $ validatingRedeemers pf - ] - } - --- ==================================================================================== --- Valid: Use a reference input with a data hash in the correspending output and --- without supplying the correspending data witness. --- ==================================================================================== - -refInputWithDataHashNoWit :: - forall era. - (Scriptic era, EraTxBody era) => - Proof era -> - TestCaseData era -refInputWithDataHashNoWit pf = - TestCaseData - { txBody = - newTxBody - pf - [ Inputs' [someTxIn] - , RefInputs' [anotherTxIn] - , Outputs' [newTxOut pf [Address (plainAddr pf), Amount (inject $ Coin 1135)]] - , Txfee (Coin 5) - ] - , initOutputs = - InitOutputs - { ofInputs = [newTxOut pf [Address $ plainAddr pf, Amount (inject $ Coin 1140)]] - , ofRefInputs = - [ newTxOut - pf - [ Address (plainAddr pf) - , Amount (inject $ Coin 10) - , DHash' [hashData $ datumExampleSixtyFiveBytes @era] - ] - ] - , ofCollateral = [] - } - , keysForAddrWits = [someKeysPaymentKeyRole pf] - , otherWitsFields = [] - } - --- ======================================================================================= --- Valid: Use a reference input with a data hash in the correspending output and --- supplying the correspending data witness. --- ======================================================================================= - -refInputWithDataHashWithWit :: - forall era. - (Scriptic era, Reflect era) => - Proof era -> - TestCaseData era -refInputWithDataHashWithWit pf = - TestCaseData - { txBody = - newTxBody - pf - [ Inputs' [someTxIn] - , RefInputs' [anotherTxIn] - , WppHash (newScriptIntegrityHash pf (pp pf) [] (mkRedeemers pf []) txDats) - , Outputs' [newTxOut pf [Address (plainAddr pf), Amount (inject $ Coin 1135)]] - , Txfee (Coin 5) - ] - , initOutputs = - InitOutputs - { ofInputs = [newTxOut pf [Address $ plainAddr pf, Amount (inject $ Coin 1140)]] - , ofRefInputs = - [ newTxOut - pf - [ Address (plainAddr pf) - , Amount (inject $ Coin 10) - , DHash' [hashData $ datumExampleSixtyFiveBytes @era] - ] - ] - , ofCollateral = [] - } - , keysForAddrWits = [someKeysPaymentKeyRole pf] - , otherWitsFields = [DataWits' [datumExampleSixtyFiveBytes]] - } - --- ==================================================================================== --- Valid: Use a reference script for authorizing a delegation certificate --- ==================================================================================== - -certRedeemers :: Era era => Proof era -> Redeemers era -certRedeemers proof = - mkRedeemersFromTags - proof - [((Certifying, 0), (Data (PV1.I 42), ExUnits 5000 5000))] - -refscriptForDelegCert :: - forall era. - ( Scriptic era - , EraTxBody era - , ShelleyEraTxCert era - ) => - Proof era -> - TestCaseData era -refscriptForDelegCert pf = - TestCaseData - { txBody = - newTxBody - pf - [ Inputs' [someTxIn] - , RefInputs' [anotherTxIn] - , Collateral' [yetAnotherTxIn] - , Outputs' [newTxOut pf [Address (plainAddr pf), Amount (inject $ Coin 1135)]] - , Certs' - [ UnRegTxCert (ScriptHashObj (hashScript @era $ alwaysAlt 2 pf)) - ] - , Txfee (Coin 5) - , WppHash (newScriptIntegrityHash pf (pp pf) [PlutusV2] (certRedeemers pf) mempty) - ] - , initOutputs = - InitOutputs - { ofInputs = [newTxOut pf [Address $ plainAddr pf, Amount (inject $ Coin 1140)]] - , ofRefInputs = - [ newTxOut - pf - [ Address (plainAddr pf) - , Amount (inject $ Coin 5000) - , RefScript (SJust $ alwaysAlt 2 pf) - ] - ] - , ofCollateral = [newTxOut pf [Address $ plainAddr pf, Amount (inject $ Coin 2115)]] - } - , keysForAddrWits = [someKeysPaymentKeyRole pf] - , otherWitsFields = [RdmrWits $ certRedeemers pf] - } - --- ==================================================================================== --- Invalid: Use a collateral output --- ==================================================================================== - -useCollateralReturn :: forall era. (Scriptic era, Reflect era) => Proof era -> TestCaseData era -useCollateralReturn pf = - TestCaseData - { txBody = - newTxBody - pf - [ Inputs' [someTxIn] - , Collateral' [anotherTxIn] - , CollateralReturn' [newTxOut pf [Address $ plainAddr pf, Amount (inject $ Coin 2110)]] - , TotalCol (SJust $ Coin 5) - , Outputs' [newTxOut pf [Address (plainAddr pf), Amount (inject $ Coin 4995)]] - , Txfee (Coin 5) - , WppHash (newScriptIntegrityHash pf (pp pf) [PlutusV1] (validatingRedeemers pf) txDats) - ] - , initOutputs = - InitOutputs - { ofInputs = - [ newTxOut - pf - [ Address (scriptAddr pf (never 3 pf)) - , Amount (inject $ Coin 5000) - , DHash' [hashData $ datumExampleSixtyFiveBytes @era] - ] - ] - , ofRefInputs = [] - , ofCollateral = [newTxOut pf [Address $ plainAddr pf, Amount (inject $ Coin 2115)]] - } - , keysForAddrWits = [someKeysPaymentKeyRole pf] - , otherWitsFields = - [ ScriptWits' [never 3 pf] - , DataWits' [datumExampleSixtyFiveBytes] - , RdmrWits $ validatingRedeemers pf - ] - } - --- ==================================================================================== --- Invalid: Invalid collateral total --- ==================================================================================== - -incorrectCollateralTotal :: forall era. (Scriptic era, Reflect era) => Proof era -> TestCaseData era -incorrectCollateralTotal pf = - TestCaseData - { txBody = - newTxBody - pf - [ Inputs' [someTxIn] - , Collateral' [anotherTxIn] - , CollateralReturn' [newTxOut pf [Address $ plainAddr pf, Amount (inject $ Coin 2110)]] - , TotalCol (SJust $ Coin 6) - , Outputs' [newTxOut pf [Address (plainAddr pf), Amount (inject $ Coin 4995)]] - , Txfee (Coin 5) - , WppHash (newScriptIntegrityHash pf (pp pf) [PlutusV2] (validatingRedeemers pf) mempty) - ] - , initOutputs = - InitOutputs - { ofInputs = - [ newTxOut - pf - [ Address (scriptAddr pf (evenData3ArgsScript pf)) - , Amount (inject $ Coin 5000) - , FDatum (Datum . dataToBinaryData $ datumExampleEven @era) - ] - ] - , ofRefInputs = [] - , ofCollateral = [newTxOut pf [Address $ plainAddr pf, Amount (inject $ Coin 2115)]] - } - , keysForAddrWits = [someKeysPaymentKeyRole pf] - , otherWitsFields = - [ ScriptWits' [evenData3ArgsScript pf] - , RdmrWits $ validatingRedeemers pf - ] - } - --- ==================================================================================== --- Invalid: Inline datum used with redundant datum in witness set --- ==================================================================================== - -inlineDatumRedundantDatumWit :: - forall era. - (Scriptic era, Reflect era) => - Proof era -> - TestCaseData era -inlineDatumRedundantDatumWit pf = - TestCaseData - { txBody = - newTxBody - pf - [ Inputs' [someTxIn] - , Collateral' [anotherTxIn] - , Outputs' [newTxOut pf [Address (plainAddr pf), Amount (inject $ Coin 4995)]] - , Txfee (Coin 5) - , WppHash (newScriptIntegrityHash pf (pp pf) [PlutusV2] (validatingRedeemers pf) txDats) - ] - , initOutputs = - InitOutputs - { ofInputs = - [ newTxOut - pf - [ Address (scriptAddr pf (evenData3ArgsScript pf)) - , Amount (inject $ Coin 5000) - , FDatum (Datum . dataToBinaryData $ datumExampleEven @era) - ] - ] - , ofRefInputs = [] - , ofCollateral = [newTxOut pf [Address $ plainAddr pf, Amount (inject $ Coin 2115)]] - } - , keysForAddrWits = [someKeysPaymentKeyRole pf] - , otherWitsFields = - [ ScriptWits' [evenData3ArgsScript pf] - , DataWits' [datumExampleSixtyFiveBytes] - , RdmrWits (validatingRedeemers pf) - ] - } - --- ==================================================================================== --- Invalid: Using inline datums with Plutus V1 script --- ==================================================================================== - -inlineDatumWithPlutusV1Script :: - forall era. (Scriptic era, Reflect era) => Proof era -> TestCaseData era -inlineDatumWithPlutusV1Script pf = - TestCaseData - { txBody = - newTxBody - pf - [ Inputs' [someTxIn] - , Collateral' [anotherTxIn] - , Outputs' [newTxOut pf [Address (plainAddr pf), Amount (inject $ Coin 4995)]] - , Txfee (Coin 5) - , WppHash (newScriptIntegrityHash pf (pp pf) [PlutusV1] (validatingRedeemers pf) mempty) - ] - , initOutputs = - InitOutputs - { ofInputs = - [ newTxOut - pf - [ Address (scriptAddr pf (always 3 pf)) - , Amount (inject $ Coin 5000) - , FDatum (Datum . dataToBinaryData $ datumExampleSixtyFiveBytes @era) - ] - ] - , ofRefInputs = [] - , ofCollateral = [newTxOut pf [Address $ plainAddr pf, Amount (inject $ Coin 2115)]] - } - , keysForAddrWits = [someKeysPaymentKeyRole pf] - , otherWitsFields = - [ ScriptWits' [always 3 pf] - , RdmrWits (validatingRedeemers pf) - ] - } - --- ==================================================================================== --- Invalid: Using reference script with Plutus V1 script --- ==================================================================================== - -referenceScriptWithPlutusV1Script :: - forall era. (Scriptic era, Reflect era) => Proof era -> TestCaseData era -referenceScriptWithPlutusV1Script pf = - TestCaseData - { txBody = - newTxBody - pf - [ Inputs' [someTxIn] - , Collateral' [anotherTxIn] - , Outputs' - [ newTxOut - pf - [Address (plainAddr pf), Amount (inject $ Coin 4995), RefScript (SJust $ simpleScript pf)] - ] - , Txfee (Coin 5) - , WppHash (newScriptIntegrityHash pf (pp pf) [PlutusV1] (validatingRedeemers pf) txDats) - ] - , initOutputs = - InitOutputs - { ofInputs = - [ newTxOut - pf - [ Address (scriptAddr pf (always 3 pf)) - , Amount (inject $ Coin 5000) - , DHash' [hashData $ datumExampleSixtyFiveBytes @era] - ] - ] - , ofRefInputs = [] - , ofCollateral = [newTxOut pf [Address $ plainAddr pf, Amount (inject $ Coin 2115)]] - } - , keysForAddrWits = [someKeysPaymentKeyRole pf] - , otherWitsFields = - [ ScriptWits' [always 3 pf] - , DataWits' [datumExampleSixtyFiveBytes] - , RdmrWits (validatingRedeemers pf) - ] - } - --- ==================================================================================== --- Invalid: Using reference input with Plutus V1 script --- ==================================================================================== - -referenceInputWithPlutusV1Script :: - forall era. (Scriptic era, Reflect era) => Proof era -> TestCaseData era -referenceInputWithPlutusV1Script pf = - TestCaseData - { txBody = - newTxBody - pf - [ Inputs' [someTxIn] - , RefInputs' [anotherTxIn] - , Collateral' [yetAnotherTxIn] - , Outputs' [newTxOut pf [Address (plainAddr pf), Amount (inject $ Coin 4995)]] - , Txfee (Coin 5) - , WppHash (newScriptIntegrityHash pf (pp pf) [PlutusV1] (validatingRedeemers pf) txDats) - ] - , initOutputs = - InitOutputs - { ofInputs = - [ newTxOut - pf - [ Address (scriptAddr pf (always 3 pf)) - , Amount (inject $ Coin 5000) - , DHash' [hashData $ datumExampleSixtyFiveBytes @era] - ] - ] - , ofRefInputs = - [ newTxOut - pf - [ Address (scriptAddr pf (always 3 pf)) - , Amount (inject $ Coin 5000) - ] - ] - , ofCollateral = [newTxOut pf [Address $ plainAddr pf, Amount (inject $ Coin 2115)]] - } - , keysForAddrWits = [someKeysPaymentKeyRole pf] - , otherWitsFields = - [ ScriptWits' [always 3 pf] - , DataWits' [datumExampleSixtyFiveBytes] - , RdmrWits (validatingRedeemers pf) - ] - } - --- ==================================================================================== --- Invalid: Malformed plutus reference script creation --- ==================================================================================== - -malformedScript :: forall era. Proof era -> ShortByteString -> Script era -malformedScript pf s = case pf of - Conway {} -> bogusPlutus @'PlutusV3 - Babbage {} -> bogusPlutus @'PlutusV2 - Alonzo {} -> bogusPlutus @'PlutusV1 - x@Shelley {} -> er x - x@Mary {} -> er x - x@Allegra {} -> er x - where - bogusPlutus :: forall l era'. (PlutusLanguage l, AlonzoEraScript era') => Script era' - bogusPlutus = mkPlutusScript' (Plutus @l (PlutusBinary ("nonsense " <> s))) - er x = error $ "no malformedScript for " <> show x - -malformedPlutusRefScript :: - forall era. (Scriptic era, EraTxBody era) => Proof era -> TestCaseData era -malformedPlutusRefScript pf = - TestCaseData - { txBody = - newTxBody - pf - [ Inputs' [someTxIn] - , Outputs' - [ newTxOut - pf - [ Address (plainAddr pf) - , Amount (inject $ Coin 5000) - , RefScript' [malformedScript pf "rs"] - ] - ] - ] - , initOutputs = - InitOutputs - { ofInputs = [newTxOut pf [Address $ plainAddr pf, Amount (inject $ Coin 5000)]] - , ofRefInputs = [] - , ofCollateral = [] - } - , keysForAddrWits = [someKeysPaymentKeyRole pf] - , otherWitsFields = [] - } - --- ==================================================================================== --- Valid: Don't run reference scripts in output for validation --- ==================================================================================== - -refScriptInOutput :: forall era. (Scriptic era, EraTxBody era) => Proof era -> TestCaseData era -refScriptInOutput pf = - TestCaseData - { txBody = - newTxBody - pf - [ Inputs' [someTxIn] - , Outputs' [newTxOut pf [Address (plainAddr pf), Amount (inject $ Coin 4995)]] - , Txfee (Coin 5) - ] - , initOutputs = - InitOutputs - { ofInputs = - [ newTxOut - pf - [ Address (plainAddr pf) - , Amount (inject $ Coin 5000) - , RefScript (SJust $ simpleScript pf) - ] - ] - , ofRefInputs = [] - , ofCollateral = [] - } - , keysForAddrWits = [someKeysPaymentKeyRole pf] - , otherWitsFields = [] - } - --- ==================================================================================== --- Valid: Unlock Simple Scripts with a Reference Script --- ==================================================================================== - -simpleScriptOutWithRefScriptUTxOState :: - (Scriptic era, Reflect era) => Proof era -> TestCaseData era -simpleScriptOutWithRefScriptUTxOState pf = - TestCaseData - { txBody = - newTxBody - pf - [ Inputs' [someTxIn] - , RefInputs' [anotherTxIn] - , Outputs' [newTxOut pf [Address (plainAddr pf), Amount (inject $ Coin 4995)]] - , Txfee (Coin 5) - ] - , initOutputs = - InitOutputs - { ofInputs = - [ newTxOut - pf - [ Address (simpleScriptAddr pf) - , Amount (inject $ Coin 5000) - ] - ] - , ofRefInputs = - [ newTxOut - pf - [ Address (plainAddr pf) - , Amount (inject $ Coin 5000) - , RefScript (SJust $ simpleScript pf) - ] - ] - , ofCollateral = [] - } - , keysForAddrWits = [someKeysPaymentKeyRole pf, keysForMultisigWitnessKeyRole pf] - , otherWitsFields = [] - } - --- ======================================================================================== --- Invalid: TxOut too large for the included ADA, using a large inline datum --- ======================================================================================== - -largeDatum :: Era era => Data era -largeDatum = Data (PV1.B . BS.pack $ replicate 1500 0) - -largeOutput' :: forall era. EraTxOut era => Proof era -> TxOut era -largeOutput' pf = - newTxOut - pf - [ Address (plainAddr pf) - , Amount (inject $ Coin 1135) - , FDatum . Datum . dataToBinaryData $ largeDatum @era - ] - -largeOutput :: forall era. BabbageEraTxBody era => Proof era -> TestCaseData era -largeOutput pf = - TestCaseData - { txBody = - newTxBody - pf - [ Inputs' [someTxIn] - , Outputs' [largeOutput' pf] - , Txfee (Coin 5) - ] - , initOutputs = - InitOutputs - { ofInputs = [newTxOut pf [Address $ plainAddr pf, Amount (inject $ Coin 1140)]] - , ofRefInputs = [] - , ofCollateral = [] - } - , keysForAddrWits = [someKeysPaymentKeyRole pf] - , otherWitsFields = [] - } - --- ==================================================================================== --- Invalid: Malformed plutus script witness --- ==================================================================================== - -malformedScriptWit :: forall era. (Scriptic era, EraTxBody era) => Proof era -> TestCaseData era -malformedScriptWit pf = - TestCaseData - { txBody = - newTxBody - pf - [ Inputs' [someTxIn] - , Collateral' [anotherTxIn] - , Outputs' [newTxOut pf [Address (plainAddr pf), Amount (inject $ Coin 5000)]] - , WppHash (newScriptIntegrityHash pf (pp pf) [PlutusV2] (validatingRedeemers pf) mempty) - ] - , initOutputs = - InitOutputs - { ofInputs = - [ newTxOut - pf - [ Address (malformedScriptAddr pf) - , Amount (inject $ Coin 5000) - , FDatum (Datum . dataToBinaryData $ datumExampleSixtyFiveBytes @era) - ] - ] - , ofRefInputs = [] - , ofCollateral = [newTxOut pf [Address $ plainAddr pf, Amount (inject $ Coin 2115)]] - } - , keysForAddrWits = [someKeysPaymentKeyRole pf] - , otherWitsFields = - [ ScriptWits' [malformedScript pf "malfoy"] - , RdmrWits (validatingRedeemers pf) - ] - } - --- ============================================================================= --- Invalid: There is no such thing as a "reference datum". --- In other words, you cannot include a reference input that contains an --- inline datum and have it count for the datum witness where ever it is needed. --- ============================================================================= - -noSuchThingAsReferenceDatum :: - forall era. (Scriptic era, Reflect era) => Proof era -> TestCaseData era -noSuchThingAsReferenceDatum pf = - TestCaseData - { txBody = - newTxBody - pf - [ Inputs' [someTxIn] - , RefInputs' [anotherTxIn] -- Note that this reference input has the required datum - , Collateral' [yetAnotherTxIn] - , Outputs' [newTxOut pf [Address (plainAddr pf), Amount (inject $ Coin 4995)]] - , Txfee (Coin 5) - , WppHash (newScriptIntegrityHash pf (pp pf) [PlutusV2] (validatingRedeemers pf) (TxDats mempty)) - ] - , initOutputs = - InitOutputs - { ofInputs = - [ newTxOut - pf - [ Address (scriptAddr pf (alwaysAlt 3 pf)) - , Amount (inject $ Coin 5000) - , DHash' [hashData $ datumExampleSixtyFiveBytes @era] - ] - ] - , ofRefInputs = - [ newTxOut - pf - [ Address (plainAddr pf) - , Amount (inject $ Coin 5000) - , FDatum (Datum . dataToBinaryData $ datumExampleSixtyFiveBytes @era) - -- Note that this inline datum does not witness the datum for the plutus script - ] - ] - , ofCollateral = [newTxOut pf [Address $ plainAddr pf, Amount (inject $ Coin 2115)]] - } - , keysForAddrWits = [someKeysPaymentKeyRole pf] - , otherWitsFields = - [ ScriptWits' [alwaysAlt 3 pf] - , RdmrWits (validatingRedeemers pf) - ] - } - --- ==================================================================================== - -type InOut era = (TxIn (EraCrypto era), TxOut era) - -data TestCaseData era = TestCaseData - { txBody :: TxBody era - , initOutputs :: InitOutputs era - , keysForAddrWits :: [KeyPairRole era] - , otherWitsFields :: [WitnessesField era] - } - -data InitOutputs era = InitOutputs - { ofInputs :: [TxOut era] - , ofRefInputs :: [TxOut era] - , ofCollateral :: [TxOut era] - } - -data InitUtxo era = InitUtxo - { inputs :: [InOut era] - , refInputs :: [InOut era] - , collateral :: [InOut era] - } - -data KeyPairRole era - = KeyPairPayment (KeyPair 'Payment (EraCrypto era)) - | KeyPairWitness (KeyPair 'Witness (EraCrypto era)) - | KeyPairStakePool (KeyPair 'StakePool (EraCrypto era)) - | KeyPairDRep (KeyPair 'DRepRole (EraCrypto era)) - | KeyPairCommittee (KeyPair 'HotCommitteeRole (EraCrypto era)) - -initUtxoFromTestCaseData :: - BabbageEraTxBody era => - Proof era -> - TestCaseData era -> - InitUtxo era -initUtxoFromTestCaseData - pf - (TestCaseData txBody' (InitOutputs ofInputs' ofRefInputs' ofCollateral') _ _) = - let inputsIns = getInputs pf txBody' - refInputsIns = txBody' ^. referenceInputsTxBodyL - collateralIns = txBody' ^. collateralInputsTxBodyL - - inputs' = Set.toList inputsIns `zip` ofInputs' - refInputs' = Set.toList refInputsIns `zip` ofRefInputs' - collateral' = Set.toList collateralIns `zip` ofCollateral' - in InitUtxo inputs' refInputs' collateral' - -utxoFromTestCaseData :: - forall era. - BabbageEraTxBody era => - Proof era -> - TestCaseData era -> - (UTxO era, UTxO era) -utxoFromTestCaseData pf (TestCaseData txBody' (InitOutputs ofInputs' ofRefInputs' ofCollateral') _ _) = - let inputsIns = getInputs pf txBody' - refInputsIns = txBody' ^. referenceInputsTxBodyL - collateralIns = txBody' ^. collateralInputsTxBodyL - - inputs' = Set.toList inputsIns `zip` ofInputs' - refInputs' = Set.toList refInputsIns `zip` ofRefInputs' - collateral' = Set.toList collateralIns `zip` ofCollateral' - - newTxIns = fmap (TxIn (txIdTxBody txBody') . mkTxIx) [0 ..] :: [TxIn (EraCrypto era)] - newTxInOuts = newTxIns `zip` toList (getOutputs pf txBody') - - initUtxo = UTxO $ Map.fromList (inputs' ++ refInputs' ++ collateral') - expectedUtxo = UTxO $ Map.fromList (newTxInOuts ++ refInputs' ++ collateral') - in (initUtxo, expectedUtxo) - -txFromTestCaseData :: - forall era. - ( Scriptic era - , GoodCrypto (EraCrypto era) - , BabbageEraTxBody era - ) => - Proof era -> - TestCaseData era -> - Tx era -txFromTestCaseData - pf - testCaseData = - let addrWits = - fmap - ( \case - KeyPairPayment p -> mkWitnessVKey (hashAnnotated (txBody testCaseData)) p - KeyPairWitness w -> mkWitnessVKey (hashAnnotated (txBody testCaseData)) w - KeyPairStakePool s -> mkWitnessVKey (hashAnnotated (txBody testCaseData)) s - KeyPairDRep d -> mkWitnessVKey (hashAnnotated (txBody testCaseData)) d - KeyPairCommittee d -> mkWitnessVKey (hashAnnotated (txBody testCaseData)) d - ) - (keysForAddrWits testCaseData) - tx = - newTx - pf - ( Body (txBody testCaseData) - : [ WitnessesI - (AddrWits' addrWits : otherWitsFields testCaseData) - ] - ) - in tx - -testExpectSuccessValid :: - forall era. - ( State (EraRule "UTXOW" era) ~ UTxOState era - , PostShelley era - , Reflect era - , BabbageEraTxBody era - ) => - Proof era -> - TestCaseData era -> - Assertion -testExpectSuccessValid - pf - tc = - let txBody' = txBody tc - tx' = txFromTestCaseData pf tc - fees = txBody' ^. feeTxBodyL - (InitUtxo inputs' refInputs' collateral') = initUtxoFromTestCaseData pf tc - - newTxIn = TxIn (txIdTxBody txBody') minBound - newTxInOut = [newTxIn] `zip` (maybeToList . StrictSeq.lookup 0) (getOutputs pf txBody') - - initUtxo = (UTxO . Map.fromList) $ inputs' ++ refInputs' ++ collateral' - expectedUtxo = UTxO $ Map.fromList (newTxInOut ++ refInputs' ++ collateral') - expectedState = smartUTxOState (pp pf) expectedUtxo (Coin 0) fees def mempty - assumedValidTx = trustMeP pf True tx' - in testUTXOW (UTXOW pf) initUtxo (pp pf) assumedValidTx (Right expectedState) - -newColReturn :: - forall era. - BabbageEraTxBody era => - TxBody era -> - [InOut era] -newColReturn - txBody' = - let newColReturnTxIn = mkTxInPartial (txIdTxBody txBody') 1 - colReturnOut = case txBody' ^. collateralReturnTxBodyL of - SNothing -> [] - SJust rOut -> [rOut] - in [newColReturnTxIn] `zip` colReturnOut - -testExpectSuccessInvalid :: - forall era. - ( State (EraRule "UTXOW" era) ~ UTxOState era - , PostShelley era - , Reflect era - , BabbageEraTxBody era - ) => - Proof era -> - TestCaseData era -> - Assertion -testExpectSuccessInvalid - pf - tc = - let txBody' = txBody tc - tx' = txFromTestCaseData pf tc - (InitUtxo inputs' refInputs' collateral') = initUtxoFromTestCaseData pf tc - initUtxo = UTxO . Map.fromList $ inputs' ++ refInputs' ++ collateral' - DeltaCoin colBallance = Collateral.collAdaBalance txBody' (Map.fromList collateral') - expectedUtxo = UTxO $ Map.fromList (inputs' ++ refInputs' ++ newColReturn txBody') - expectedState = smartUTxOState (pp pf) expectedUtxo (Coin 0) (Coin colBallance) def mempty - assumedInvalidTx = trustMeP pf False tx' - in testUTXOW (UTXOW pf) initUtxo (pp pf) assumedInvalidTx (Right expectedState) - -testExpectFailure :: - forall era. - ( PostShelley era - , BabbageEraTxBody era - , Reflect era - ) => - Proof era -> - TestCaseData era -> - PredicateFailure (EraRule "UTXOW" era) -> - Assertion -testExpectFailure - pf - tc - predicateFailure = - let tx' = txFromTestCaseData pf tc - (InitUtxo inputs' refInputs' collateral') = initUtxoFromTestCaseData pf tc - utxo = (UTxO . Map.fromList) $ inputs' ++ refInputs' ++ collateral' - in testUTXOW (UTXOW pf) utxo (pp pf) (trustMeP pf True tx') (Left $ pure predicateFailure) - -genericBabbageFeatures :: - forall era. - ( State (EraRule "UTXOW" era) ~ UTxOState era - , BabbageEraTxBody era - , PostShelley era - , Reflect era - ) => - Proof era -> - TestTree -genericBabbageFeatures pf = - testGroup - (show pf ++ " UTXOW examples") - [ testGroup - "valid transactions" - [ testCase "inline datum" $ testExpectSuccessValid pf (inlineDatum pf) - , testCase "reference script" $ testExpectSuccessValid pf (referenceScript pf) - , testCase "inline datum and ref script" $ testExpectSuccessValid pf (inlineDatumAndRefScript pf) - , testCase "reference input with data hash, no data witness" $ - testExpectSuccessValid pf (refInputWithDataHashNoWit pf) - , testCase "reference input with data hash, with data witness" $ - testExpectSuccessValid pf (refInputWithDataHashWithWit pf) - , testCase "reference script to authorize delegation certificate" $ - testExpectSuccessValid pf (refscriptForDelegCert pf) - , testCase "reference script in output" $ testExpectSuccessValid pf (refScriptInOutput pf) - , testCase "spend simple script output with reference script" $ - testExpectSuccessValid pf (simpleScriptOutWithRefScriptUTxOState pf) - ] - ] - -badTranslation :: Proof era -> BabbageContextError era -> CollectError era -badTranslation proof x = - case proof of - Babbage -> BadTranslation x - Conway -> BadTranslation (BabbageContextError x) - _ -> error "No reference inputs before BabbageEra" - -plutusV1RefScriptFailures :: - forall era. - ( PostShelley era - , BabbageEraTxBody era - , Reflect era - , InjectRuleFailure "UTXOW" BabbageUtxowPredFailure era - , InjectRuleFailure "UTXOW" AlonzoUtxosPredFailure era - ) => - Proof era -> - TestTree -plutusV1RefScriptFailures pf = - testGroup - (show pf ++ " PlutusV1 reference script failure examples") - [ testCase "reference script with Plutus V1" $ - testExpectFailure - pf - (referenceScriptWithPlutusV1Script pf) - ( injectFailure - ( CollectErrors - [badTranslation pf $ ReferenceScriptsNotSupported (TxOutFromOutput (mkTxIxPartial 0))] - ) - ) - , testCase "reference input with Plutus V1" $ - testExpectFailure - pf - (referenceInputWithPlutusV1Script pf) - ( injectFailure - ( CollectErrors - [badTranslation pf $ ReferenceInputsNotSupported @era $ Set.singleton anotherTxIn] - ) - ) - ] - -genericBabbageFailures :: - forall era. - ( State (EraRule "UTXOW" era) ~ UTxOState era - , InjectRuleFailure "UTXOW" BabbageUtxowPredFailure era - , InjectRuleFailure "UTXOW" AlonzoUtxosPredFailure era - , InjectRuleFailure "UTXOW" Shelley.ShelleyUtxowPredFailure era - , InjectRuleFailure "UTXOW" BabbageUtxoPredFailure era - , InjectRuleFailure "UTXOW" AlonzoUtxowPredFailure era - , BabbageEraTxBody era - , PostShelley era - , Reflect era - ) => - Proof era -> - TestTree -genericBabbageFailures pf = - testGroup - (show pf ++ " UTXOW failure examples") - [ testGroup - "invalid transactions" - [ testCase "inline datum failing script" $ testExpectSuccessInvalid pf (inlineDatumFailingScript pf) - , testCase "use a collateral output" $ testExpectSuccessInvalid pf (useCollateralReturn pf) - , testCase "incorrect collateral total" $ - testExpectFailure - pf - (incorrectCollateralTotal pf) - (injectFailure (IncorrectTotalCollateralField (DeltaCoin 5) (Coin 6))) - , testCase "inline datum and ref script and redundant script witness" $ - testExpectFailure - pf - (inlineDatumAndRefScriptWithRedundantWitScript pf) - ( injectFailure - (Shelley.ExtraneousScriptWitnessesUTXOW (Set.singleton $ hashScript @era (alwaysAlt 3 pf))) - ) - , testCase "inline datum with redundant datum witness" $ - testExpectFailure - pf - (inlineDatumRedundantDatumWit pf) - ( injectFailure - ( NotAllowedSupplementalDatums - (Set.singleton $ hashData @era datumExampleSixtyFiveBytes) - mempty - ) - ) - , testCase "inline datum with Plutus V1" $ - testExpectFailure - pf - (inlineDatumWithPlutusV1Script pf) - ( injectFailure - ( CollectErrors - [badTranslation pf $ InlineDatumsNotSupported (TxOutFromInput someTxIn)] - ) - ) - , testCase "malformed reference script" $ - testExpectFailure - pf - (malformedPlutusRefScript pf) - ( injectFailure $ - MalformedReferenceScripts $ - Set.singleton (hashScript @era $ malformedScript pf "rs") - ) - , case pf of - Babbage -> - testCase "malformed script witness" $ - testExpectFailure - pf - (malformedScriptWit pf) - ( injectFailure $ - MalformedScriptWitnesses $ - Set.singleton - (hashScript @era $ malformedScript pf "malfoy") - ) - -- The current code does not construct the right witnesses for plutus version 3, so skip this test in Conway - Conway -> testCase "malformed script witness" $ pure () - _ -> error "Babbage features used before BabbageEra" - , testCase "min-utxo value with output too large" $ - testExpectFailure - pf - (largeOutput pf) - (injectFailure $ BabbageOutputTooSmallUTxO [(largeOutput' pf, Coin 8915)]) - , testCase "no such thing as a reference datum" $ - testExpectFailure - pf - (noSuchThingAsReferenceDatum pf) - ( injectFailure - ( MissingRequiredDatums - (Set.singleton (hashData $ datumExampleSixtyFiveBytes @era)) - mempty - ) - ) - ] - ] - -babbageFeatures :: TestTree -babbageFeatures = - testGroup - "Babbage Features" - [ genericBabbageFeatures Babbage - , genericBabbageFailures Babbage - , plutusV1RefScriptFailures Babbage - , genericBabbageFeatures Conway - , genericBabbageFailures Conway - , testCase "inputs and refinputs overlap in Babbage and don't Fail" $ - testExpectSuccessValid Babbage (commonReferenceScript Babbage) - , testCase "inputs and refinputs overlap in Conway and Fail" $ - testExpectUTXOFailure - Conway - (commonReferenceScript Conway) - (BabbageNonDisjointRefInputs (pure commonTxIn)) - ] - -testExpectUTXOFailure :: - forall era. - ( PostShelley era - , Reflect era - , BabbageEraTxBody era - ) => - Proof era -> - TestCaseData era -> - PredicateFailure (EraRule "UTXO" era) -> - Assertion -testExpectUTXOFailure pf@Conway tc failure = - let tx' = txFromTestCaseData pf tc - InitUtxo inputs' refInputs' collateral' = initUtxoFromTestCaseData pf tc - initUtxo = UTxO . Map.fromList $ inputs' ++ refInputs' ++ collateral' - pparams = newPParams pf (defaultPPs pf) - env = Shelley.UtxoEnv (SlotNo 0) pparams def - state = smartUTxOState pparams initUtxo (Coin 0) (Coin 0) def mempty - in goSTS - (UTXO pf) - env - state - tx' - ( \case - Left (predfail :| []) -> assertEqual "unexpected failure" predfail failure - Left _ -> assertFailure "not exactly one failure" - Right _ -> assertFailure "testExpectUTXOFailure succeeds" - ) -testExpectUTXOFailure _ _ _ = error "testExpectUTXOFailure is only good in Conway Era" diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Examples/STSTestUtils.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Examples/STSTestUtils.hs deleted file mode 100644 index 179f48f544c..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Examples/STSTestUtils.hs +++ /dev/null @@ -1,474 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE QuantifiedConstraints #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} - -module Test.Cardano.Ledger.Examples.STSTestUtils ( - initUTxO, - mkGenesisTxIn, - mkTxDats, - someAddr, - someKeys, - someScriptAddr, - testBBODY, - runLEDGER, - testUTXOW, - testUTXOWsubset, - testUTXOspecialCase, - trustMeP, - alwaysFailsHash, - alwaysSucceedsHash, - timelockScript, - timelockHash, - timelockStakeCred, -) -where - -import qualified Cardano.Crypto.Hash as CH -import Cardano.Ledger.Address (Addr (..)) -import Cardano.Ledger.Alonzo.Rules ( - AlonzoBBODY, - AlonzoUtxoPredFailure (..), - AlonzoUtxosPredFailure (..), - AlonzoUtxowPredFailure (..), - ) -import Cardano.Ledger.Alonzo.Tx ( - AlonzoTx (..), - IsValid (..), - ) -import Cardano.Ledger.Alonzo.TxWits (TxDats (..)) -import Cardano.Ledger.BHeaderView (BHeaderView (..)) -import Cardano.Ledger.Babbage.Rules (BabbageUtxoPredFailure (..)) -import Cardano.Ledger.Babbage.Rules as Babbage (BabbageUtxowPredFailure (..)) -import Cardano.Ledger.BaseTypes ( - Network (..), - mkTxIxPartial, - ) -import Cardano.Ledger.Coin (Coin (..)) -import qualified Cardano.Ledger.Conway.Rules as Conway -import Cardano.Ledger.Credential ( - Credential (..), - StakeCredential, - StakeReference (..), - ) -import Cardano.Ledger.Crypto -import Cardano.Ledger.Keys (KeyRole (..), hashKey) -import Cardano.Ledger.Plutus.Data (Data (..), hashData) -import Cardano.Ledger.Shelley.API ( - Block (..), - LedgerEnv (..), - LedgerState (..), - UTxO (..), - ) -import Cardano.Ledger.Shelley.Core hiding (TranslationError) -import Cardano.Ledger.Shelley.LedgerState (smartUTxOState) -import Cardano.Ledger.Shelley.Rules ( - BbodyEnv (..), - ShelleyBbodyState, - UtxoEnv (..), - ) -import Cardano.Ledger.Shelley.Rules as Shelley (ShelleyUtxowPredFailure (..)) -import Cardano.Ledger.TxIn (TxIn (..)) -import Cardano.Ledger.Val (inject) -import Cardano.Slotting.Slot (SlotNo (..)) -import Control.State.Transition.Extended hiding (Assertion) -import Data.Default.Class (Default (..)) -import Data.Foldable (toList) -import Data.List.NonEmpty (NonEmpty ((:|))) -import qualified Data.Map.Strict as Map -import GHC.Natural (Natural) -import GHC.Stack -import qualified PlutusLedgerApi.V1 as PV1 -import Test.Cardano.Ledger.Core.KeyPair (KeyPair (..)) -import Test.Cardano.Ledger.Generic.Fields ( - TxOutField (..), - ) -import Test.Cardano.Ledger.Generic.PrettyCore (PrettyA (..)) -import Test.Cardano.Ledger.Generic.Proof -import Test.Cardano.Ledger.Generic.Scriptic (PostShelley, Scriptic (..), after, matchkey) -import Test.Cardano.Ledger.Generic.Updaters -import Test.Cardano.Ledger.Shelley.Generator.EraGen (genesisId) -import Test.Cardano.Ledger.Shelley.Utils ( - RawSeed (..), - mkKeyPair, - ) -import Test.Tasty.HUnit (Assertion, assertFailure, (@?=)) - --- import Test.Cardano.Ledger.Generic.PrettyCore(pcTx) -import Test.Cardano.Ledger.Constrained.Preds.Tx (pcTxWithUTxO) - --- ================================================================= --- ========================= Shared data ========================= --- Data with specific semantics ("constants") --- ================================================================= - -alwaysFailsHash :: forall era. Scriptic era => Natural -> Proof era -> ScriptHash (EraCrypto era) -alwaysFailsHash n pf = hashScript @era $ never n pf - -alwaysSucceedsHash :: - forall era. - Scriptic era => - Natural -> - Proof era -> - ScriptHash (EraCrypto era) -alwaysSucceedsHash n pf = hashScript @era $ always n pf - -someKeys :: forall era. Era era => Proof era -> KeyPair 'Payment (EraCrypto era) -someKeys _pf = KeyPair vk sk - where - (sk, vk) = mkKeyPair @(EraCrypto era) (RawSeed 1 1 1 1 1) - -someAddr :: forall era. Era era => Proof era -> Addr (EraCrypto era) -someAddr pf = Addr Testnet pCred sCred - where - (_ssk, svk) = mkKeyPair @(EraCrypto era) (RawSeed 0 0 0 0 2) - pCred = KeyHashObj . hashKey . vKey $ someKeys pf - sCred = StakeRefBase . KeyHashObj . hashKey $ svk - --- Create an address with a given payment script. -someScriptAddr :: forall era. Scriptic era => Script era -> Addr (EraCrypto era) -someScriptAddr s = Addr Testnet pCred sCred - where - pCred = ScriptHashObj . hashScript @era $ s - (_ssk, svk) = mkKeyPair @(EraCrypto era) (RawSeed 0 0 0 0 0) - sCred = StakeRefBase . KeyHashObj . hashKey $ svk - -timelockScript :: PostShelley era => Int -> Proof era -> Script era -timelockScript s = fromNativeScript . allOf [matchkey 1, after (100 + s)] - -timelockHash :: - forall era. - PostShelley era => - Int -> - Proof era -> - ScriptHash (EraCrypto era) -timelockHash n pf = hashScript @era $ timelockScript n pf - -timelockStakeCred :: PostShelley era => Proof era -> StakeCredential (EraCrypto era) -timelockStakeCred pf = ScriptHashObj (timelockHash 2 pf) - --- ====================================================================== --- ========================= Initial Utxo =============================== --- ====================================================================== - -initUTxO :: forall era. (EraTxOut era, PostShelley era) => Proof era -> UTxO era -initUTxO pf = - UTxO $ - Map.fromList $ - [ (mkGenesisTxIn 1, alwaysSucceedsOutput) - , (mkGenesisTxIn 2, alwaysFailsOutput) - ] - ++ map (\i -> (mkGenesisTxIn i, someOutput)) [3 .. 8] - ++ map (\i -> (mkGenesisTxIn i, collateralOutput)) [11 .. 18] - ++ [ (mkGenesisTxIn 100, timelockOut) - , (mkGenesisTxIn 101, unspendableOut) - , (mkGenesisTxIn 102, alwaysSucceedsOutputV1) - , (mkGenesisTxIn 103, nonScriptOutWithDatum) - ] - where - alwaysSucceedsOutput = - newTxOut - pf - [ Address (someScriptAddr (always 3 pf)) - , Amount (inject $ Coin 5000) - , DHash' [hashData $ datumExample1 @era] - ] - alwaysFailsOutput = - newTxOut - pf - [ Address (someScriptAddr (never 0 pf)) - , Amount (inject $ Coin 3000) - , DHash' [hashData $ datumExample2 @era] - ] - someOutput = newTxOut pf [Address $ someAddr pf, Amount (inject $ Coin 1000)] - collateralOutput = newTxOut pf [Address $ someAddr pf, Amount (inject $ Coin 5)] - timelockOut = newTxOut pf [Address $ timelockAddr, Amount (inject $ Coin 1)] - timelockAddr = Addr Testnet pCred sCred - where - (_ssk, svk) = mkKeyPair @(EraCrypto era) (RawSeed 0 0 0 0 2) - pCred = ScriptHashObj tlh - sCred = StakeRefBase . KeyHashObj . hashKey $ svk - tlh = hashScript @era $ tls 0 - tls s = fromNativeScript $ allOf [matchkey 1, after (100 + s)] pf - -- This output is unspendable since it is locked by a plutus script, but has no datum hash. - unspendableOut = - newTxOut - pf - [ Address (someScriptAddr (always 3 pf)) - , Amount (inject $ Coin 5000) - ] - alwaysSucceedsOutputV1 = - newTxOut - pf - [ Address (someScriptAddr (always 3 pf)) - , Amount (inject $ Coin 5000) - , DHash' [hashData $ datumExample1 @era] - ] - nonScriptOutWithDatum = - newTxOut - pf - [ Address (someAddr pf) - , Amount (inject $ Coin 1221) - , DHash' [hashData $ datumExample1 @era] - ] - -datumExample1 :: Era era => Data era -datumExample1 = Data (PV1.I 123) - -datumExample2 :: Era era => Data era -datumExample2 = Data (PV1.I 0) - --- ====================================================================== --- ========================= Shared helper functions =================== --- ====================================================================== - -mkGenesisTxIn :: (CH.HashAlgorithm (HASH c), HasCallStack) => Integer -> TxIn c -mkGenesisTxIn = TxIn genesisId . mkTxIxPartial - -mkTxDats :: Era era => Data era -> TxDats era -mkTxDats d = TxDats $ Map.singleton (hashData d) d - -trustMeP :: Proof era -> Bool -> Tx era -> Tx era -trustMeP Alonzo iv' (AlonzoTx b w _ m) = AlonzoTx b w (IsValid iv') m -trustMeP Babbage iv' (AlonzoTx b w _ m) = AlonzoTx b w (IsValid iv') m -trustMeP Conway iv' (AlonzoTx b w _ m) = AlonzoTx b w (IsValid iv') m -trustMeP _ _ tx = tx - --- This implements a special rule to test that for ValidationTagMismatch. Rather than comparing the insides of --- ValidationTagMismatch (which are complicated and depend on Plutus) we just note that both the computed --- and expected are ValidationTagMismatch. Of course the 'path' to ValidationTagMismatch differs by Era. --- so we need to case over the Era proof, to get the path correctly. -testBBODY :: - (Reflect era, HasCallStack) => - WitRule "BBODY" era -> - ShelleyBbodyState era -> - Block (BHeaderView (EraCrypto era)) era -> - Either (NonEmpty (PredicateFailure (AlonzoBBODY era))) (ShelleyBbodyState era) -> - PParams era -> - Assertion -testBBODY wit@(BBODY proof) initialSt block expected pparams = - let env = BbodyEnv pparams def - in case proof of - Alonzo -> runSTS wit (TRC (env, initialSt, block)) (genericCont "" expected) - Babbage -> runSTS wit (TRC (env, initialSt, block)) (genericCont "" expected) - Conway -> runSTS wit (TRC (env, initialSt, block)) (genericCont "" expected) - other -> error ("We cannot testBBODY in era " ++ show other) - -testUTXOW :: - forall era. - ( Reflect era - , HasCallStack - ) => - WitRule "UTXOW" era -> - UTxO era -> - PParams era -> - Tx era -> - Either (NonEmpty (PredicateFailure (EraRule "UTXOW" era))) (State (EraRule "UTXOW" era)) -> - Assertion - --- | Use an equality test on the expected and computed [PredicateFailure] -testUTXOW wit@(UTXOW Alonzo) utxo p tx = - testUTXOWwith wit (genericCont (show (pcTxWithUTxO Alonzo utxo tx))) utxo p tx -testUTXOW wit@(UTXOW Babbage) utxo p tx = testUTXOWwith wit (genericCont (show tx)) utxo p tx -testUTXOW wit@(UTXOW Conway) utxo p tx = testUTXOWwith wit (genericCont (show tx)) utxo p tx -testUTXOW (UTXOW other) _ _ _ = error ("Cannot use testUTXOW in era " ++ show other) - -testUTXOWsubset - , testUTXOspecialCase :: - forall era. - ( Reflect era - , HasCallStack - ) => - WitRule "UTXOW" era -> - UTxO era -> - PParams era -> - Tx era -> - Either (NonEmpty (PredicateFailure (EraRule "UTXOW" era))) (State (EraRule "UTXOW" era)) -> - Assertion - --- | Use a subset test on the expected and computed [PredicateFailure] -testUTXOWsubset wit@(UTXOW Alonzo) utxo = testUTXOWwith wit subsetCont utxo -testUTXOWsubset wit@(UTXOW Babbage) utxo = testUTXOWwith wit subsetCont utxo -testUTXOWsubset wit@(UTXOW Conway) utxo = testUTXOWwith wit subsetCont utxo -testUTXOWsubset (UTXOW other) _ = error ("Cannot use testUTXOW in era " ++ show other) - --- | Use a test where any two (ValidationTagMismatch x y) failures match regardless of 'x' and 'y' -testUTXOspecialCase wit@(UTXOW proof) utxo pparam tx expected = - let env = UtxoEnv (SlotNo 0) pparam def - state = smartUTxOState pparam utxo (Coin 0) (Coin 0) def mempty - in case proof of - Alonzo -> runSTS wit (TRC (env, state, tx)) (specialCont proof expected) - Babbage -> runSTS wit (TRC (env, state, tx)) (specialCont proof expected) - Conway -> runSTS wit (TRC (env, state, tx)) (specialCont proof expected) - other -> error ("Cannot use specialCase in era " ++ show other) - --- | This type is what you get when you use runSTS in the UTXOW rule. It is also --- the type one uses for expected answers, to compare the 'computed' against 'expected' -type Result era = - Either (NonEmpty (PredicateFailure (EraRule "UTXOW" era))) (State (EraRule "UTXOW" era)) - -testUTXOWwith :: - forall era. - ( GoodCrypto (EraCrypto era) - , EraTx era - , EraGov era - ) => - WitRule "UTXOW" era -> - (Result era -> Result era -> Assertion) -> - UTxO era -> - PParams era -> - Tx era -> - Result era -> - Assertion -testUTXOWwith wit@(UTXOW proof) cont utxo pparams tx expected = - let env = UtxoEnv (SlotNo 0) pparams def - state = smartUTxOState pparams utxo (Coin 0) (Coin 0) def mempty - in case proof of - Conway -> runSTS wit (TRC (env, state, tx)) (cont expected) - Babbage -> runSTS wit (TRC (env, state, tx)) (cont expected) - Alonzo -> runSTS wit (TRC (env, state, tx)) (cont expected) - Mary -> runSTS wit (TRC (env, state, tx)) (cont expected) - Allegra -> runSTS wit (TRC (env, state, tx)) (cont expected) - Shelley -> runSTS wit (TRC (env, state, tx)) (cont expected) - -runLEDGER :: - forall era. - ( GoodCrypto (EraCrypto era) - , EraTx era - , EraGov era - ) => - WitRule "LEDGER" era -> - LedgerState era -> - PParams era -> - Tx era -> - Either (NonEmpty (PredicateFailure (EraRule "LEDGER" era))) (State (EraRule "LEDGER" era)) -runLEDGER wit@(LEDGER proof) state pparams tx = - let env = LedgerEnv (SlotNo 0) minBound pparams def - in case proof of - Conway -> runSTS' wit (TRC (env, state, tx)) - Babbage -> runSTS' wit (TRC (env, state, tx)) - Alonzo -> runSTS' wit (TRC (env, state, tx)) - Mary -> runSTS' wit (TRC (env, state, tx)) - Allegra -> runSTS' wit (TRC (env, state, tx)) - Shelley -> runSTS' wit (TRC (env, state, tx)) - --- ====================================================================== --- ========================= Internal helper functions ================ --- ====================================================================== - --- | A small example of what a continuation for 'runSTS' might look like -genericCont :: - ( Foldable t - , Eq (t x) - , Eq y - , PrettyA x - , PrettyA y - , HasCallStack - ) => - String -> - Either (t x) y -> - Either (t x) y -> - Assertion -genericCont cause expected computed = - case (computed, expected) of - (Left c, Left e) - | c /= e -> assertFailure $ causedBy ++ expectedToFail e ++ failedWith c - (Right c, Right e) - | c /= e -> assertFailure $ causedBy ++ expectedToPass e ++ passedWith c - (Left x, Right y) -> - assertFailure $ causedBy ++ expectedToPass y ++ failedWith x - (Right x, Left y) -> - assertFailure $ causedBy ++ expectedToFail y ++ passedWith x - _ -> pure () - where - causedBy - | null cause = "" - | otherwise = "Caused by:\n" ++ cause ++ "\n" - expectedToPass y = "Expected to pass with:\n" ++ show (prettyA y) ++ "\n" - expectedToFail x = "Expected to fail with:\n" ++ show (prettyA $ toList x) ++ "\n" - failedWith x = "But failed with:\n" ++ show (prettyA $ toList x) - passedWith y = "But passed with:\n" ++ show (prettyA y) - -subsetCont :: - ( Foldable t - , Eq (t x) - , Eq x - , Eq y - , PrettyA x - , PrettyA y - , Show (t x) - , Show y - ) => - Either (t x) y -> - Either (t x) y -> - Assertion -subsetCont expected computed = - case (computed, expected) of - (Left c, Left e) -> - -- It is OK if the expected is a subset of what's computed - if isSubset e c then e @?= e else c @?= e - (Right c, Right e) -> c @?= e - (Left x, Right y) -> - error $ - "expected to pass with " - ++ show (prettyA y) - ++ "\n\nBut failed with\n\n" - ++ show (prettyA $ toList x) - (Right y, Left x) -> - error $ - "expected to fail with " - ++ show (prettyA $ toList x) - ++ "\n\nBut passed with\n\n" - ++ show (prettyA y) - -specialCont :: - ( Eq (PredicateFailure (EraRule "UTXOW" era)) - , Eq a - , Show (PredicateFailure (EraRule "UTXOW" era)) - , Show a - , HasCallStack - ) => - Proof era -> - Either (NonEmpty (PredicateFailure (EraRule "UTXOW" era))) a -> - Either (NonEmpty (PredicateFailure (EraRule "UTXOW" era))) a -> - Assertion -specialCont proof expected computed = - case (computed, expected) of - (Left (x :| []), Left (y :| [])) -> - case (findMismatch proof x, findMismatch proof y) of - (Just _, Just _) -> y @?= y - (_, _) -> error "Not both ValidationTagMismatch case 1" - (Left _, Left _) -> error "Not both ValidationTagMismatch case 2" - (Right x, Right y) -> x @?= y - (Left _, Right _) -> error "expected to pass, but failed." - (Right _, Left _) -> error "expected to fail, but passed." - --- ======================================== --- This implements a special rule to test that for ValidationTagMismatch. Rather than comparing the insides of --- ValidationTagMismatch (which are complicated and depend on Plutus) we just note that both the computed --- and expected are ValidationTagMismatch. Of course the 'path' to ValidationTagMismatch differs by Era. --- so we need to case over the Era proof, to get the path correctly. -findMismatch :: - Proof era -> - PredicateFailure (EraRule "UTXOW" era) -> - Maybe (PredicateFailure (EraRule "UTXOS" era)) -findMismatch Alonzo (ShelleyInAlonzoUtxowPredFailure (Shelley.UtxoFailure (UtxosFailure x@(ValidationTagMismatch _ _)))) = Just $ injectFailure x -findMismatch Babbage (Babbage.UtxoFailure (AlonzoInBabbageUtxoPredFailure (UtxosFailure x@(ValidationTagMismatch _ _)))) = Just $ injectFailure x -findMismatch - Conway - ( Babbage.UtxoFailure - (AlonzoInBabbageUtxoPredFailure (UtxosFailure x@(Conway.ValidationTagMismatch _ _))) - ) = Just $ injectFailure x -findMismatch _ _ = Nothing - -isSubset :: (Foldable t, Eq a) => t a -> t a -> Bool -isSubset small big = all (`elem` big) small diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/AggPropTests.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/AggPropTests.hs deleted file mode 100644 index 775942d1478..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/AggPropTests.hs +++ /dev/null @@ -1,194 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Generic.AggPropTests where - -import Cardano.Ledger.Alonzo.Tx (IsValid (..)) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Core -import Cardano.Ledger.Shelley.LedgerState ( - CertState (..), - DState (..), - EpochState (..), - LedgerState (..), - NewEpochState (..), - PState (..), - UTxOState (..), - ) -import Cardano.Ledger.Shelley.Rules.Reports (synopsisCoinMap) -import Cardano.Ledger.UMap (UView (RewDepUView), depositMap, domain, fromCompact, sumDepositUView) -import Cardano.Ledger.UTxO (UTxO (..)) -import Cardano.Ledger.Val ((<+>)) -import Control.State.Transition (STS (..)) -import Data.Default.Class (Default (def)) -import Data.List (foldl') -import qualified Data.Map as Map -import qualified Data.Set as Set -import Test.Cardano.Ledger.Binary.TreeDiff (diffExpr) -import Test.Cardano.Ledger.Generic.Functions ( - getBody, - getCollateralInputs, - getCollateralOutputs, - getInputs, - getOutputs, - isValid', - ) -import Test.Cardano.Ledger.Generic.GenState (GenSize (..), initStableFields) -import Test.Cardano.Ledger.Generic.MockChain (MOCKCHAIN, MockBlock (..), MockChainState (..)) -import Test.Cardano.Ledger.Generic.Proof ( - Proof (..), - Reflect (..), - Some (..), - preBabbage, - unReflect, - ) -import Test.Cardano.Ledger.Generic.Trace (Gen1, genTrace, testPropMax) -import Test.Control.State.Transition.Trace ( - SourceSignalTarget (..), - Trace (..), - TraceOrder (..), - firstAndLastState, - sourceSignalTargets, - traceSignals, - ) -import Test.Control.State.Transition.Trace.Generator.QuickCheck (HasTrace (..)) -import Test.QuickCheck -import Test.Tasty -import Test.Tasty.QuickCheck (testProperty) - --- ============================================================ - -aggProp :: - agg -> (agg -> Signal sts -> agg) -> (State sts -> State sts -> agg -> prop) -> Trace sts -> prop -aggProp agg0 aggregate test trace = test firstState lastState (foldl' aggregate agg0 sigs) - where - sigs = traceSignals OldestFirst trace - (firstState, lastState) = firstAndLastState trace - --- | The aggregate sizes of (outputs - inputs) is consistent with the change in size of the UTxO. --- Be carefull to choose the correct outputs and inputs, depending on if the Tx validates. -consistentUtxoSizeProp :: EraTx era => Proof era -> Trace (MOCKCHAIN era) -> Property -consistentUtxoSizeProp proof trace = aggProp agg0 aggregate makeprop trace - where - agg0 = 0 - aggregate count (MockBlock _ _ txs) = foldl' aggTx count txs - aggTx count tx = - count - + ( if valid - then length (getOutputs proof body) - Set.size (getInputs proof body) - else length (getCollateralOutputs proof body) - Set.size (getCollateralInputs proof body) - ) - where - body = getBody proof tx - IsValid valid = isValid' proof tx - makeprop firstSt lastSt n = getUtxoSize firstSt === getUtxoSize lastSt - n - getUtxoSize :: MockChainState era -> Int - getUtxoSize state = (Map.size . unUTxO . utxosUtxo . lsUTxOState . esLState . nesEs . mcsNes) state - -aggUTxO :: - forall era. - ( HasTrace (MOCKCHAIN era) (Gen1 era) - , Reflect era - ) => - Proof era -> - Gen Property -aggUTxO proof = do - trace1 <- genTrace proof 100 (def {blocksizeMax = 4, slotDelta = (6, 12)}) initStableFields - pure $ consistentUtxoSizeProp proof trace1 - -aggTests :: TestTree -aggTests = - testGroup - "tests, aggregating Tx's over a Trace." - [ testPropMax 30 "UTxO size in Babbage" (aggUTxO Babbage) - , testPropMax 30 "UTxO size in Alonzo" (aggUTxO Alonzo) - , testPropMax 30 "UTxO size in Mary" (aggUTxO Mary) - ] - --- =============================================================== - --- TODO. An analog of Test.Cardano.Ledger.Shelley.Rules.TestChain(forAllChainTrace) --- We will add additional analogs (ledgerTraceFromBlock, poolTraceFromBlock) soon, --- and then redo the tests in that module in the Generic fashion -forAllChainTrace :: - (Testable prop, Reflect era) => Proof era -> Int -> (Trace (MOCKCHAIN era) -> prop) -> Property -forAllChainTrace p@Conway n propf = - property $ propf <$> genTrace p n (def {blocksizeMax = 4, slotDelta = (6, 12)}) initStableFields -forAllChainTrace p@Babbage n propf = - property $ propf <$> genTrace p n (def {blocksizeMax = 4, slotDelta = (6, 12)}) initStableFields -forAllChainTrace p@Alonzo n propf = - property $ propf <$> genTrace p n (def {blocksizeMax = 4, slotDelta = (6, 12)}) initStableFields -forAllChainTrace p@Mary n propf = - property $ propf <$> genTrace p n (def {blocksizeMax = 4, slotDelta = (6, 12)}) initStableFields -forAllChainTrace p@Allegra n propf = - property $ propf <$> genTrace p n (def {blocksizeMax = 4, slotDelta = (6, 12)}) initStableFields -forAllChainTrace p@Shelley n propf = - property $ propf <$> genTrace p n (def {blocksizeMax = 4, slotDelta = (6, 12)}) initStableFields - --- =========================================================== - --- | Check that the sum of Key Deposits and the Pool Depoits are equal to the utxosDeposits -depositInvariant :: - SourceSignalTarget (MOCKCHAIN era) -> - Property -depositInvariant SourceSignalTarget {source = mockChainSt} = - let LedgerState {lsUTxOState = utxost, lsCertState = CertState _vstate pstate dstate} = (esLState . nesEs . mcsNes) mockChainSt - -- TODO handle VState - allDeposits = utxosDeposited utxost - sumCoin m = Map.foldl' (<+>) (Coin 0) m - keyDeposits = fromCompact $ sumDepositUView (RewDepUView (dsUnified dstate)) - poolDeposits = sumCoin (psDeposits pstate) - in counterexample - ( unlines - [ "Deposit invariant fails" - , "All deposits = " ++ show allDeposits - , "Key deposits = " ++ synopsisCoinMap (Just (depositMap (dsUnified dstate))) - , "Pool deposits = " ++ synopsisCoinMap (Just (psDeposits pstate)) - ] - ) - (allDeposits === keyDeposits <+> poolDeposits) - -rewardDepositDomainInvariant :: - SourceSignalTarget (MOCKCHAIN era) -> - Property -rewardDepositDomainInvariant SourceSignalTarget {source = mockChainSt} = - let LedgerState {lsCertState = CertState _ _ dstate} = (esLState . nesEs . mcsNes) mockChainSt - -- TODO VState - rewardDomain = domain (RewDepUView (dsUnified dstate)) - depositDomain = Map.keysSet (depositMap (dsUnified dstate)) - in counterexample - ( unlines - [ "Reward-Deposit domain invariant fails" - , diffExpr rewardDomain depositDomain - ] - ) - (rewardDomain === depositDomain) - -itemPropToTraceProp :: - (SourceSignalTarget (MOCKCHAIN era) -> Property) -> Trace (MOCKCHAIN era) -> Property -itemPropToTraceProp f trace1 = conjoin (map f (sourceSignalTargets trace1)) - -depositEra :: forall era. Reflect era => Proof era -> TestTree -depositEra proof = - testGroup - (show proof) - [ testProperty - "Deposits = KeyDeposits + PoolDeposits" - (forAllChainTrace proof 10 (itemPropToTraceProp (depositInvariant @era))) - , testProperty - "Reward domain = Deposit domain" - (forAllChainTrace proof 10 (itemPropToTraceProp (rewardDepositDomainInvariant @era))) - ] - --- | Build a TestTree that tests 'f' at all the Eras listed in 'ps' -testEras :: String -> [Some Proof] -> (forall era. Reflect era => Proof era -> TestTree) -> TestTree -testEras message ps f = testGroup message (applyF ps) - where - applyF [] = [] - applyF (Some e : more) = unReflect f e : applyF more - -depositTests :: TestTree -depositTests = testEras "deposit invariants" preBabbage depositEra diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/ApplyTx.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/ApplyTx.hs deleted file mode 100644 index 721d54ffe71..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/ApplyTx.hs +++ /dev/null @@ -1,395 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} - -module Test.Cardano.Ledger.Generic.ApplyTx where - -import Cardano.Ledger.Address (RewardAccount (..), Withdrawals (..)) -import Cardano.Ledger.Alonzo.Scripts (ExUnits (ExUnits)) -import Cardano.Ledger.Alonzo.Tx (AlonzoTx (..), IsValid (..)) -import Cardano.Ledger.BaseTypes (ProtVer (..), TxIx, mkTxIxPartial, natVersion) -import Cardano.Ledger.Coin (Coin (..), addDeltaCoin) -import Cardano.Ledger.Core -import Cardano.Ledger.Plutus.Data (Data (..)) -import Cardano.Ledger.Plutus.Language (Language (PlutusV1)) -import Cardano.Ledger.PoolParams (PoolParams (..)) -import Cardano.Ledger.SafeHash (SafeHash, hashAnnotated) -import Cardano.Ledger.Shelley.API (Credential, KeyRole (Staking)) -import Cardano.Ledger.Shelley.Rewards (aggregateRewards) -import Cardano.Ledger.Shelley.TxCert (ShelleyDelegCert (..), ShelleyTxCert (..)) -import Cardano.Ledger.TxIn (TxId (..), TxIn (..)) -import Cardano.Ledger.UTxO (UTxO (..)) -import Cardano.Ledger.Val (Val ((<+>), (<->)), inject) -import Cardano.Slotting.Slot (EpochNo (..), SlotNo (..)) -import Control.Iterate.Exp (dom, (∈)) -import Control.Iterate.SetAlgebra (eval) -import Data.Foldable (fold, toList) -import qualified Data.List as List -import Data.Map (Map) -import qualified Data.Map.Strict as Map -import Data.Maybe.Strict (StrictMaybe (..)) -import Data.Set (Set) -import qualified Data.Set as Set -import GHC.Stack (HasCallStack) -import Lens.Micro -import qualified PlutusLedgerApi.V1 as PV1 -import Test.Cardano.Ledger.Core.KeyPair (mkWitnessVKey) -import Test.Cardano.Ledger.Examples.STSTestUtils ( - initUTxO, - mkGenesisTxIn, - mkTxDats, - someAddr, - someKeys, - ) -import Test.Cardano.Ledger.Generic.Fields ( - PParamsField (..), - TxBodyField (..), - TxField (..), - TxOutField (..), - WitnessesField (..), - abstractTx, - abstractTxBody, - ) -import Test.Cardano.Ledger.Generic.Functions ( - createRUpdNonPulsing', - getBody, - getOutputs, - txInBalance, - ) -import Test.Cardano.Ledger.Generic.GenState (PlutusPurposeTag (..), mkRedeemersFromTags) -import Test.Cardano.Ledger.Generic.ModelState ( - Model, - ModelNewEpochState (..), - mNewEpochStateZero, - pcModelNewEpochState, - ) -import Test.Cardano.Ledger.Generic.PrettyCore (pcCredential, pcTx) -import Test.Cardano.Ledger.Generic.Proof hiding (lift) -import Test.Cardano.Ledger.Generic.Scriptic (Scriptic (never)) -import Test.Cardano.Ledger.Generic.Updaters ( - newPParams, - newScriptIntegrityHash, - newTx, - newTxBody, - newTxOut, - ) -import Test.Cardano.Ledger.Plutus (zeroTestingCostModels) -import Test.Cardano.Ledger.Shelley.Rewards (RewardUpdateOld (deltaFOld), rsOld) -import Test.Cardano.Ledger.Shelley.Utils (epochFromSlotNo) - --- ======================================================================== - -defaultPPs :: [PParamsField era] -defaultPPs = - [ Costmdls $ zeroTestingCostModels [PlutusV1] - , MaxValSize 1000000000 - , MaxTxExUnits $ ExUnits 1000000 1000000 - , MaxBlockExUnits $ ExUnits 1000000 1000000 - , ProtocolVersion $ ProtVer (natVersion @5) 0 - , KeyDeposit (Coin 2) - , PoolDeposit (Coin 5) - , CollateralPercentage 100 - ] - -pparams :: EraPParams era => Proof era -> PParams era -pparams pf = newPParams pf defaultPPs - -hasValid :: [TxField era] -> Maybe Bool -hasValid [] = Nothing -hasValid (Valid (IsValid b) : _) = Just b -hasValid (_ : fs) = hasValid fs - -applyTx :: Reflect era => Proof era -> Int -> SlotNo -> Model era -> Tx era -> Model era -applyTx proof count slot model tx = ans - where - transactionEpoch = epochFromSlotNo slot - modelEpoch = mEL model - epochAccurateModel = epochBoundary proof transactionEpoch modelEpoch model - txbody = getBody proof tx - outputs = getOutputs proof txbody - fields = abstractTx proof tx - nextTxIx = mkTxIxPartial (fromIntegral (length outputs)) -- When IsValid is false, ColRet will get this TxIx - ans = case hasValid fields of - Nothing -> List.foldl' (applyTxSimple proof count) epochAccurateModel fields - Just True -> List.foldl' (applyTxSimple proof count) epochAccurateModel fields - Just False -> List.foldl' (applyTxFail proof count nextTxIx) epochAccurateModel fields - -epochBoundary :: forall era. Proof era -> EpochNo -> EpochNo -> Model era -> Model era -epochBoundary proof transactionEpoch modelEpoch model = - if transactionEpoch > modelEpoch - then - applyRUpd ru $ - model - { mEL = transactionEpoch - } - else model - where - ru = createRUpdNonPulsing' proof model - -applyTxSimple :: Reflect era => Proof era -> Int -> Model era -> TxField era -> Model era -applyTxSimple proof count model field = case field of - Body body1 -> applyTxBody proof count model body1 - BodyI fs -> List.foldl' (applyField proof count) model fs - TxWits _ -> model - WitnessesI _ -> model - AuxData _ -> model - Valid _ -> model - -applyTxBody :: Reflect era => Proof era -> Int -> Model era -> TxBody era -> Model era -applyTxBody proof count model tx = List.foldl' (applyField proof count) model (abstractTxBody proof tx) - -applyField :: Reflect era => Proof era -> Int -> Model era -> TxBodyField era -> Model era -applyField proof count model field = case field of - Inputs txins -> model {mUTxO = Map.withoutKeys (mUTxO model) txins} - Outputs seqo -> case Map.lookup count (mIndex model) of - Nothing -> error ("Output not found phase1: " ++ show (mIndex model)) - Just (TxId hash) -> model {mUTxO = Map.union newstuff (mUTxO model)} - where - newstuff = additions hash minBound (toList seqo) - Txfee coin -> model {mFees = coin <+> mFees model} - Certs seqc -> List.foldl' applyCert model (toList seqc) - Withdrawals' (Withdrawals m) -> Map.foldlWithKey' (applyWithdrawals proof) model m - _other -> model - -applyWithdrawals :: Proof era -> Model era -> RewardAccount (EraCrypto era) -> Coin -> Model era -applyWithdrawals _proof model (RewardAccount _network cred) coin = - model {mRewards = Map.adjust (<-> coin) cred (mRewards model)} - -applyCert :: forall era. Reflect era => Model era -> TxCert era -> Model era -applyCert = case reify @era of - Shelley -> applyShelleyCert - Mary -> applyShelleyCert - Allegra -> applyShelleyCert - Alonzo -> applyShelleyCert - Babbage -> applyShelleyCert - Conway -> undefined -- TODO once Conway era is done - -applyShelleyCert :: forall era. EraPParams era => Model era -> ShelleyTxCert era -> Model era -applyShelleyCert model dcert = case dcert of - ShelleyTxCertDelegCert (ShelleyRegCert x) -> - model - { mRewards = Map.insert x (Coin 0) (mRewards model) - , mKeyDeposits = Map.insert x (pp ^. ppKeyDepositL) (mKeyDeposits model) - , mDeposited = mDeposited model <+> pp ^. ppKeyDepositL - } - where - pp = mPParams model - ShelleyTxCertDelegCert (ShelleyUnRegCert x) -> case Map.lookup x (mRewards model) of - Nothing -> error ("DeRegKey not in rewards: " <> show (pcCredential x)) - Just (Coin 0) -> - model - { mRewards = Map.delete x (mRewards model) - , mKeyDeposits = Map.delete x (mKeyDeposits model) - , mDeposited = mDeposited model <-> keyDeposit - } - where - keyDeposit = Map.findWithDefault mempty x (mKeyDeposits model) - Just (Coin _n) -> error "DeRegKey with non-zero balance" - ShelleyTxCertDelegCert (ShelleyDelegCert cred hash) -> - model {mDelegations = Map.insert cred hash (mDelegations model)} - ShelleyTxCertPool (RegPool poolparams) -> - model - { mPoolParams = Map.insert hk poolparams (mPoolParams model) - , mDeposited = - if Map.member hk (mPoolDeposits model) - then mDeposited model - else mDeposited model <+> pp ^. ppPoolDepositL - , mPoolDeposits -- Only add if it isn't already there - = - if Map.member hk (mPoolDeposits model) - then mPoolDeposits model - else Map.insert hk (pp ^. ppPoolDepositL) (mPoolDeposits model) - } - where - hk = ppId poolparams - pp = mPParams model - ShelleyTxCertPool (RetirePool keyhash epoch) -> - model - { mRetiring = Map.insert keyhash epoch (mRetiring model) - , mDeposited = mDeposited model <-> pp ^. ppPoolDepositL - } - where - pp = mPParams model - ShelleyTxCertGenesisDeleg _ -> model - ShelleyTxCertMir _ -> model - --- ========================================================= --- What to do if the second phase does not validatate. --- Process and use Collateral to pay fees - -data CollInfo era = CollInfo - { ciBal :: Coin -- Balance of all the collateral inputs - , ciRet :: Coin -- Coin amount of the collateral return output - , ciDelset :: Set (TxIn (EraCrypto era)) -- The set of inputs to delete from the UTxO - , ciAddmap :: Map (TxIn (EraCrypto era)) (TxOut era) -- Things to Add to the UTxO - } - -emptyCollInfo :: CollInfo era -emptyCollInfo = CollInfo (Coin 0) (Coin 0) Set.empty Map.empty - --- | Collect information about how to process Collateral, in a second phase failure. -collInfo :: - (Reflect era, HasCallStack) => - Int -> - TxIx -> - Model era -> - CollInfo era -> - TxBodyField era -> - CollInfo era -collInfo count firstTxIx model info field = case field of - CollateralReturn SNothing -> info - CollateralReturn (SJust txout) -> - case Map.lookup count (mIndex model) of - Nothing -> error ("Output not found phase2: " ++ show (count, mIndex model)) - Just (TxId hash) -> - info - { ciRet = txout ^. coinTxOutL - , ciAddmap = newstuff - } - where - newstuff = additions hash firstTxIx [txout] - Collateral inputs -> - info - { ciDelset = inputs - , ciBal = txInBalance inputs (mUTxO model) - } - _ -> info - -updateInfo :: CollInfo era -> Model era -> Model era -updateInfo info m = - m - { mUTxO = Map.union (ciAddmap info) (Map.withoutKeys (mUTxO m) (ciDelset info)) - , mFees = mFees m <+> ciBal info <-> ciRet info - } - -applyTxFail :: Reflect era => Proof era -> Int -> TxIx -> Model era -> TxField era -> Model era -applyTxFail proof count nextTxIx model field = case field of - Body body2 -> updateInfo info model - where - info = List.foldl' (collInfo count nextTxIx model) emptyCollInfo (abstractTxBody proof body2) - BodyI fs -> updateInfo info model - where - info = List.foldl' (collInfo count nextTxIx model) emptyCollInfo fs - TxWits _ -> model - WitnessesI _ -> model - AuxData _ -> model - Valid _ -> model - --- ======================================= - -additions :: - SafeHash (EraCrypto era) EraIndependentTxBody -> - TxIx -> - [TxOut era] -> - Map (TxIn (EraCrypto era)) (TxOut era) -additions bodyhash firstTxIx outputs = - Map.fromList - [ (TxIn (TxId bodyhash) idx, out) - | (out, idx) <- zip outputs [firstTxIx ..] - ] - --- | This is a template of how we might create unit tests that run both the real STS rules --- and the model to see that they agree. 'collateralOutputTx' and 'initUTxO' are from --- the BabbageFeatures.hs unit test file. -go :: IO () -go = do - let proof = Babbage - tx = (notValidatingTx proof) {isValid = IsValid False} - allinputs = txbody ^. allInputsTxBodyF - txbody = body tx - doc = pcTx proof tx - model1 = - (mNewEpochStateZero @(BabbageEra StandardCrypto)) - { mUTxO = Map.restrictKeys (unUTxO (initUTxO proof)) allinputs - , mCount = 0 - , mFees = Coin 10 - , mIndex = Map.singleton 0 (TxId (hashAnnotated txbody)) - } - model2 = applyTx proof 0 (SlotNo 0) model1 tx - print (pcModelNewEpochState proof model1) - print doc - print (pcModelNewEpochState proof model2) - -filterRewards :: - EraPParams era => - PParams era -> - Map (Credential 'Staking (EraCrypto era)) (Set (Reward (EraCrypto era))) -> - ( Map (Credential 'Staking (EraCrypto era)) (Set (Reward (EraCrypto era))) - , Map (Credential 'Staking (EraCrypto era)) (Set (Reward (EraCrypto era))) - ) -filterRewards pp rewards = - if pvMajor (pp ^. ppProtocolVersionL) > natVersion @2 - then (rewards, Map.empty) - else - let mp = Map.map Set.deleteFindMin rewards - in (Map.map (Set.singleton . fst) mp, Map.filter (not . Set.null) $ Map.map snd mp) - -filterAllRewards :: - EraPParams era => - Map (Credential 'Staking (EraCrypto era)) (Set (Reward (EraCrypto era))) -> - Model era -> - ( Map (Credential 'Staking (EraCrypto era)) (Set (Reward (EraCrypto era))) - , Map (Credential 'Staking (EraCrypto era)) (Set (Reward (EraCrypto era))) - , Set (Credential 'Staking (EraCrypto era)) - , Coin - ) -filterAllRewards rs' m = - (registered, eraIgnored, unregistered, totalUnregistered) - where - pp = mPParams m - (regRU, unregRU) = - Map.partitionWithKey - (\k _ -> eval (k ∈ dom (mRewards m))) - rs' - totalUnregistered = fold $ aggregateRewards (pp ^. ppProtocolVersionL) unregRU - unregistered = Map.keysSet unregRU - - (registered, eraIgnored) = filterRewards pp regRU - -applyRUpd :: - forall era. - RewardUpdateOld (EraCrypto era) -> - Model era -> - Model era -applyRUpd ru m = - m - { mFees = mFees m `addDeltaCoin` deltaFOld @(EraCrypto era) ru - , mRewards = Map.unionWith (<>) (mRewards m) (rsOld ru) - } - -notValidatingTx :: - ( Scriptic era - , EraTx era - , GoodCrypto (EraCrypto era) - ) => - Proof era -> - Tx era -notValidatingTx pf = - newTx - pf - [ Body notValidatingBody - , WitnessesI - [ AddrWits' [mkWitnessVKey (hashAnnotated notValidatingBody) (someKeys pf)] - , ScriptWits' [never 0 pf] - , DataWits' [Data (PV1.I 0)] - , RdmrWits redeemers - ] - ] - where - notValidatingBody = - newTxBody - pf - [ Inputs' [mkGenesisTxIn 2] - , Collateral' [mkGenesisTxIn 12] - , Outputs' [newTxOut pf [Address (someAddr pf), Amount (inject $ Coin 2995)]] - , Txfee (Coin 5) - , WppHash (newScriptIntegrityHash pf (pparams pf) [PlutusV1] redeemers (mkTxDats (Data (PV1.I 0)))) - ] - redeemers = - mkRedeemersFromTags pf [((Spending, 0), (Data (PV1.I 1), ExUnits 5000 5000))] diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/Fields.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/Fields.hs deleted file mode 100644 index 078eea073b0..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/Fields.hs +++ /dev/null @@ -1,756 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE ViewPatterns #-} - -module Test.Cardano.Ledger.Generic.Fields ( - TxField (.., AuxData', Valid'), - TxBodyField ( - .., - Inputs', - Collateral', - RefInputs', - Outputs', - Certs', - CollateralReturn', - Update', - ReqSignerHashes', - WppHash', - AdHash', - Txnetworkid' - ), - WitnessesField (.., AddrWits', BootWits', ScriptWits', DataWits'), - PParamsField (..), - TxOutField (.., DHash', RefScript'), - initVI, - initWithdrawals, - initialTxBody, - initialWitnesses, - initialTx, - initialTxOut, - valid, - abstractTx, - abstractTxBody, - abstractTxOut, - abstractWitnesses, - abstractPParams, -) -where - -import Cardano.Ledger.Address (Addr (..)) -import Cardano.Ledger.Allegra.TxBody (AllegraTxBody (..)) -import Cardano.Ledger.Alonzo.PParams (AlonzoPParams (..), unOrdExUnits) -import Cardano.Ledger.Alonzo.Scripts (CostModels, ExUnits (..), Prices) -import Cardano.Ledger.Alonzo.Tx (AlonzoTx (..), IsValid (..)) -import Cardano.Ledger.Alonzo.TxAuxData (AuxiliaryDataHash) -import Cardano.Ledger.Alonzo.TxBody (AlonzoTxBody (..), AlonzoTxOut (..)) -import Cardano.Ledger.Alonzo.TxWits (AlonzoTxWits (..), Redeemers (..), TxDats (..)) -import Cardano.Ledger.Babbage.PParams (BabbagePParams (..)) -import Cardano.Ledger.Babbage.TxBody (BabbageTxBody (..), BabbageTxOut (..)) -import Cardano.Ledger.BaseTypes ( - EpochInterval (..), - Network (..), - NonNegativeInterval, - Nonce, - ProtVer (..), - StrictMaybe (..), - UnitInterval, - ) -import Cardano.Ledger.Binary (sizedValue) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Conway.Core -import Cardano.Ledger.Conway.Governance (GovProcedures (..)) -import Cardano.Ledger.Conway.PParams (ConwayPParams (..)) -import Cardano.Ledger.Conway.TxBody (ConwayTxBody (..)) -import Cardano.Ledger.Credential (Credential (..), StakeReference (..)) -import Cardano.Ledger.Keys (KeyHash, KeyRole (..), WitVKey (..), hashKey) -import Cardano.Ledger.Keys.Bootstrap (BootstrapWitness (..)) -import Cardano.Ledger.Mary.TxBody (MaryTxBody (..)) -import Cardano.Ledger.Mary.Value (MultiAsset (..)) -import Cardano.Ledger.Plutus.Data (Data (..), Datum (..), hashData) -import Cardano.Ledger.Shelley.PParams (ShelleyPParams (..)) -import qualified Cardano.Ledger.Shelley.PParams as PP (Update) -import Cardano.Ledger.Shelley.Tx (ShelleyTx (..)) -import Cardano.Ledger.Shelley.TxBody (ShelleyTxBody (..)) -import Cardano.Ledger.Shelley.TxOut (ShelleyTxOut (..)) -import Cardano.Ledger.Shelley.TxWits (pattern ShelleyTxWits) -import Cardano.Ledger.TxIn (TxIn (..)) -import Cardano.Slotting.Slot (SlotNo (..)) -import Data.Map (Map) -import qualified Data.Map.Strict as Map -import qualified Data.OSet.Strict as OSet -import Data.Sequence.Strict (StrictSeq (..)) -import qualified Data.Sequence.Strict as SSeq (fromList) -import Data.Set (Set) -import qualified Data.Set as Set -import Data.Word (Word16, Word32) -import Lens.Micro ((^.)) -import Numeric.Natural (Natural) -import Test.Cardano.Ledger.Core.KeyPair (KeyPair (..)) -import Test.Cardano.Ledger.Generic.Indexed (theKeyPair) -import Test.Cardano.Ledger.Generic.Proof - --- ======================================================= --- Fields are used to hold a single field of record. So the Field --- data type (Core.T era) holds the union of all fields of (Core.T era) --- across all eras Shelley, Allegra, Mary, Alonzo, Babbage. --- Pattern constructors (with primed names, like C') allow users to use [a], to stand --- for (Set a) (Maybe a) (StrictSeq a) (StrictMaybe a) (Map (hash a) a) --- and hide the conversion details from the user. This is very convenient when --- using Fields to construct (Core.Txx era) by hand in an era agnostic way. - -data TxField era - = Body (TxBody era) - | BodyI [TxBodyField era] -- Inlines TxBody Fields - | TxWits (TxWits era) - | WitnessesI [WitnessesField era] -- Inlines Witnesess Fields - | AuxData (StrictMaybe (TxAuxData era)) - | Valid IsValid - -pattern AuxData' :: [TxAuxData era] -> TxField era - -pattern Valid' :: Bool -> TxField era - --- ================= -data TxBodyField era - = Inputs (Set (TxIn (EraCrypto era))) - | Collateral (Set (TxIn (EraCrypto era))) - | RefInputs (Set (TxIn (EraCrypto era))) - | Outputs (StrictSeq (TxOut era)) - | CollateralReturn (StrictMaybe (TxOut era)) - | TotalCol (StrictMaybe Coin) - | Certs (StrictSeq (TxCert era)) - | Withdrawals' (Withdrawals (EraCrypto era)) - | Txfee Coin - | Vldt ValidityInterval - | TTL SlotNo - | Update (StrictMaybe (PP.Update era)) - | ReqSignerHashes (Set (KeyHash 'Witness (EraCrypto era))) - | Mint (MultiAsset (EraCrypto era)) - | WppHash (StrictMaybe (ScriptIntegrityHash (EraCrypto era))) - | AdHash (StrictMaybe (AuxiliaryDataHash (EraCrypto era))) - | Txnetworkid (StrictMaybe Network) - | GovProcs (GovProcedures era) - | CurrentTreasuryValue (StrictMaybe Coin) - | TreasuryDonation Coin - -pattern Inputs' :: [TxIn (EraCrypto era)] -> TxBodyField era -- Set - -pattern Collateral' :: [TxIn (EraCrypto era)] -> TxBodyField era -- Set - -pattern RefInputs' :: [TxIn (EraCrypto era)] -> TxBodyField era -- Set - -pattern Outputs' :: [TxOut era] -> TxBodyField era -- StrictSeq - -pattern Certs' :: [TxCert era] -> TxBodyField era -- StrictSeq - -pattern CollateralReturn' :: [TxOut era] -> TxBodyField era -- 0 or 1 element - -pattern Update' :: [PP.Update era] -> TxBodyField era -- 0 or 1 element - -pattern ReqSignerHashes' :: [KeyHash 'Witness (EraCrypto era)] -> TxBodyField era -- A set - -pattern WppHash' :: [ScriptIntegrityHash (EraCrypto era)] -> TxBodyField era -- 0 or 1 element - -pattern AdHash' :: [AuxiliaryDataHash (EraCrypto era)] -> TxBodyField era -- 0 or 1 element - -pattern Txnetworkid' :: [Network] -> TxBodyField era -- 0 or 1 element - --- ==================== -data WitnessesField era - = AddrWits (Set (WitVKey 'Witness (EraCrypto era))) - | BootWits (Set (BootstrapWitness (EraCrypto era))) - | ScriptWits (Map (ScriptHash (EraCrypto era)) (Script era)) - | DataWits (TxDats era) - | RdmrWits (Redeemers era) - -pattern AddrWits' :: Era era => [WitVKey 'Witness (EraCrypto era)] -> WitnessesField era -- Set - -pattern BootWits' :: Era era => [BootstrapWitness (EraCrypto era)] -> WitnessesField era -- Set - -pattern ScriptWits' :: forall era. EraScript era => [Script era] -> WitnessesField era -- Map - -pattern DataWits' :: Era era => [Data era] -> WitnessesField era -- Map - --- ================ -data TxOutField era - = Address (Addr (EraCrypto era)) - | Amount (Value era) - | DHash (StrictMaybe (DataHash (EraCrypto era))) - | FDatum (Datum era) - | RefScript (StrictMaybe (Script era)) - -pattern DHash' :: [DataHash (EraCrypto era)] -> TxOutField era -- 0 or 1 element - -pattern RefScript' :: [Script era] -> TxOutField era -- 0 or 1 element - --- ================================================================ --- PParam Fields - -data PParamsField era - = MinfeeA Coin - | -- | The constant factor for the minimum fee calculation - MinfeeB Coin - | -- | Maximal block body size - MaxBBSize Word32 - | -- | Maximal transaction size - MaxTxSize Word32 - | -- | Maximal block header size - MaxBHSize Word16 - | -- | The amount of a key registration deposit - KeyDeposit Coin - | -- | The amount of a pool registration deposit - PoolDeposit Coin - | -- | epoch bound on pool retirement - EMax EpochInterval - | -- | Desired number of pools - NOpt Natural - | -- | Pool influence - A0 NonNegativeInterval - | -- | Monetary expansion - Rho UnitInterval - | -- | Treasury expansion - Tau UnitInterval - | -- | Decentralization parameter - D UnitInterval -- Dropped in Babbage - | -- | Extra entropy - ExtraEntropy Nonce -- Dropped in Babbage - | -- | Protocol version - ProtocolVersion ProtVer - | -- | Minimum Stake Pool Cost - MinPoolCost Coin - | -- | Minimum Lovelace in a UTxO deprecated by AdaPerUTxOWord - MinUTxOValue Coin - | -- | Cost in ada per 8 bytes of UTxO storage instead of _minUTxOValue - CoinPerUTxOWord CoinPerWord -- Dropped in Babbage - | -- | Cost in ada per 1 byte of UTxO storage instead of _coinsPerUTxOWord - CoinPerUTxOByte CoinPerByte -- New in Babbage - | -- | Cost models for non-native script languages - Costmdls CostModels - | -- | Prices of execution units for non-native script languages - Prices Prices - | -- | Max total script execution resources units allowed per tx - MaxTxExUnits ExUnits - | -- | Max total script execution resources units allowed per block - MaxBlockExUnits ExUnits - | -- | Max size of a Value in an output - MaxValSize Natural - | -- | The scaling percentage of the collateral relative to the fee - CollateralPercentage Natural - | -- | Maximum number of collateral inputs allowed in a transaction - MaxCollateralInputs Natural - | -- | These are new to Conway - PoolVotingThreshold PoolVotingThresholds - | DRepVotingThreshold DRepVotingThresholds - | MinCommitteeSize Natural - | CommitteeTermLimit EpochInterval - | GovActionExpiration EpochInterval - | GovActionDeposit Coin - | DRepDeposit Coin - | DRepActivity EpochInterval - -abstractPParams :: Proof era -> PParams era -> [PParamsField era] -abstractPParams proof ppp = case (whichPParams proof, ppp) of - (PParamsShelleyToMary, PParams pp@(ShelleyPParams {})) -> - [ MinfeeA (sppMinFeeA pp) - , MinfeeB (sppMinFeeB pp) - , MaxBBSize (sppMaxBBSize pp) - , MaxTxSize (sppMaxTxSize pp) - , MaxBHSize (sppMaxBHSize pp) - , KeyDeposit (sppKeyDeposit pp) - , PoolDeposit (sppPoolDeposit pp) - , EMax (sppEMax pp) - , NOpt (sppNOpt pp) - , A0 (sppA0 pp) - , Rho (sppRho pp) - , Tau (sppTau pp) - , D (sppD pp) - , ExtraEntropy (sppExtraEntropy pp) - , ProtocolVersion (sppProtocolVersion pp) - , MinUTxOValue (sppMinUTxOValue pp) - , MinPoolCost (sppMinPoolCost pp) - ] - (PParamsAlonzoToAlonzo, PParams pp@(AlonzoPParams {})) -> - [ MinfeeA (appMinFeeA pp) - , MinfeeB (appMinFeeB pp) - , MaxBBSize (appMaxBBSize pp) - , MaxTxSize (appMaxTxSize pp) - , MaxBHSize (appMaxBHSize pp) - , KeyDeposit (appKeyDeposit pp) - , PoolDeposit (appPoolDeposit pp) - , EMax (appEMax pp) - , NOpt (appNOpt pp) - , A0 (appA0 pp) - , Rho (appRho pp) - , Tau (appTau pp) - , D (appD pp) - , ExtraEntropy (appExtraEntropy pp) - , ProtocolVersion (appProtocolVersion pp) - , MinPoolCost (appMinPoolCost pp) - , CoinPerUTxOWord (appCoinsPerUTxOWord pp) - , Costmdls (appCostModels pp) - , Prices (appPrices pp) - , MaxTxExUnits (unOrdExUnits (appMaxTxExUnits pp)) - , MaxBlockExUnits (unOrdExUnits (appMaxBlockExUnits pp)) - , MaxValSize (appMaxValSize pp) - , CollateralPercentage (appCollateralPercentage pp) - , MaxCollateralInputs (appMaxCollateralInputs pp) - ] - (PParamsBabbageToBabbage, PParams pp@(BabbagePParams {})) -> - [ MinfeeA (bppMinFeeA pp) - , MinfeeB (bppMinFeeB pp) - , MaxBBSize (bppMaxBBSize pp) - , MaxTxSize (bppMaxTxSize pp) - , MaxBHSize (bppMaxBHSize pp) - , KeyDeposit (bppKeyDeposit pp) - , PoolDeposit (bppPoolDeposit pp) - , EMax (bppEMax pp) - , NOpt (bppNOpt pp) - , A0 (bppA0 pp) - , Rho (bppRho pp) - , Tau (bppTau pp) - , ProtocolVersion (bppProtocolVersion pp) - , MinPoolCost (bppMinPoolCost pp) - , CoinPerUTxOByte (bppCoinsPerUTxOByte pp) - , Costmdls (bppCostModels pp) - , Prices (bppPrices pp) - , MaxTxExUnits (unOrdExUnits (bppMaxTxExUnits pp)) - , MaxBlockExUnits (unOrdExUnits (bppMaxBlockExUnits pp)) - , MaxValSize (bppMaxValSize pp) - , CollateralPercentage (bppCollateralPercentage pp) - , MaxCollateralInputs (bppMaxCollateralInputs pp) - ] - (PParamsConwayToConway, pp@(PParams (ConwayPParams {}))) -> - [ MinfeeA (pp ^. ppMinFeeAL) - , MinfeeB (pp ^. ppMinFeeBL) - , MaxBBSize (pp ^. ppMaxBBSizeL) - , MaxTxSize (pp ^. ppMaxTxSizeL) - , MaxBHSize (pp ^. ppMaxBHSizeL) - , KeyDeposit (pp ^. ppKeyDepositL) - , PoolDeposit (pp ^. ppPoolDepositL) - , EMax (pp ^. ppEMaxL) - , NOpt (pp ^. ppNOptL) - , A0 (pp ^. ppA0L) - , Rho (pp ^. ppRhoL) - , Tau (pp ^. ppTauL) - , ProtocolVersion (pp ^. ppProtocolVersionL) - , MinPoolCost (pp ^. ppMinPoolCostL) - , CoinPerUTxOByte (pp ^. ppCoinsPerUTxOByteL) - , Costmdls (pp ^. ppCostModelsL) - , Prices (pp ^. ppPricesL) - , MaxTxExUnits (pp ^. ppMaxTxExUnitsL) - , MaxBlockExUnits (pp ^. ppMaxBlockExUnitsL) - , MaxValSize (pp ^. ppMaxValSizeL) - , CollateralPercentage (pp ^. ppCollateralPercentageL) - , MaxCollateralInputs (pp ^. ppMaxCollateralInputsL) - , PoolVotingThreshold (pp ^. ppPoolVotingThresholdsL) - , DRepVotingThreshold (pp ^. ppDRepVotingThresholdsL) - , MinCommitteeSize (pp ^. ppCommitteeMinSizeL) - , CommitteeTermLimit (pp ^. ppCommitteeMaxTermLengthL) - , GovActionExpiration (pp ^. ppGovActionLifetimeL) - , GovActionDeposit (pp ^. ppGovActionDepositL) - , DRepDeposit (pp ^. ppDRepDepositL) - , DRepActivity (pp ^. ppDRepActivityL) - ] - --- ========================================================================= --- Era parametric "empty" or initial values. - -initVI :: ValidityInterval -initVI = ValidityInterval SNothing SNothing - -initWithdrawals :: Withdrawals c -initWithdrawals = Withdrawals Map.empty - -initialTxBody :: Era era => Proof era -> TxBody era -initialTxBody Shelley = mkBasicTxBody -initialTxBody Allegra = mkBasicTxBody -initialTxBody Mary = mkBasicTxBody -initialTxBody Alonzo = mkBasicTxBody -initialTxBody Babbage = mkBasicTxBody -initialTxBody Conway = mkBasicTxBody - -initialWitnesses :: Era era => Proof era -> TxWits era -initialWitnesses Shelley = mkBasicTxWits -initialWitnesses Allegra = mkBasicTxWits -initialWitnesses Mary = mkBasicTxWits -initialWitnesses Alonzo = mkBasicTxWits -initialWitnesses Babbage = mkBasicTxWits -initialWitnesses Conway = mkBasicTxWits - -initialTx :: forall era. Proof era -> Tx era -initialTx era@Shelley = mkBasicTx (initialTxBody era) -initialTx era@Allegra = mkBasicTx (initialTxBody era) -initialTx era@Mary = mkBasicTx (initialTxBody era) -initialTx era@Alonzo = mkBasicTx (initialTxBody era) -initialTx era@Babbage = mkBasicTx (initialTxBody era) -initialTx era@Conway = mkBasicTx (initialTxBody era) - --- | A Meaningless Addr. -initialAddr :: Era era => Proof era -> Addr (EraCrypto era) -initialAddr _wit = Addr Testnet pCred sCred - where - (KeyPair svk _ssk) = theKeyPair 0 - pCred = KeyHashObj . hashKey . vKey $ theKeyPair 1 - sCred = StakeRefBase . KeyHashObj . hashKey $ svk - -initialTxOut :: Era era => Proof era -> TxOut era -initialTxOut wit@Shelley = mkBasicTxOut (initialAddr wit) mempty -initialTxOut wit@Allegra = mkBasicTxOut (initialAddr wit) mempty -initialTxOut wit@Mary = mkBasicTxOut (initialAddr wit) mempty -initialTxOut wit@Alonzo = mkBasicTxOut (initialAddr wit) mempty -initialTxOut wit@Babbage = mkBasicTxOut (initialAddr wit) mempty -initialTxOut wit@Conway = mkBasicTxOut (initialAddr wit) mempty - --- ============================================================ - -abstractTx :: Proof era -> Tx era -> [TxField era] -abstractTx Conway (AlonzoTx txBody wit v auxdata) = - [Body txBody, TxWits wit, Valid v, AuxData auxdata] -abstractTx Babbage (AlonzoTx txBody wit v auxdata) = - [Body txBody, TxWits wit, Valid v, AuxData auxdata] -abstractTx Alonzo (AlonzoTx txBody wit v auxdata) = - [Body txBody, TxWits wit, Valid v, AuxData auxdata] -abstractTx Shelley (ShelleyTx txBody wit auxdata) = - [Body txBody, TxWits wit, AuxData auxdata] -abstractTx Mary (ShelleyTx txBody wit auxdata) = - [Body txBody, TxWits wit, AuxData auxdata] -abstractTx Allegra (ShelleyTx txBody wit auxdata) = - [Body txBody, TxWits wit, AuxData auxdata] - -abstractTxBody :: Proof era -> TxBody era -> [TxBodyField era] -abstractTxBody Alonzo (AlonzoTxBody inp col out cert wdrl fee vldt up req mnt sih adh net) = - [ Inputs inp - , Collateral col - , Outputs out - , Certs cert - , Withdrawals' wdrl - , Txfee fee - , Vldt vldt - , Update up - , ReqSignerHashes req - , Mint mnt - , WppHash sih - , AdHash adh - , Txnetworkid net - ] -abstractTxBody Conway (ConwayTxBody inp col ref out colret totcol cert wdrl fee vldt req mnt sih adh net vp pp ctv td) = - [ Inputs inp - , Collateral col - , RefInputs ref - , Outputs (sizedValue <$> out) - , CollateralReturn (sizedValue <$> colret) - , TotalCol totcol - , Certs $ OSet.toStrictSeq cert - , Withdrawals' wdrl - , Txfee fee - , Vldt vldt - , ReqSignerHashes req - , Mint mnt - , WppHash sih - , AdHash adh - , Txnetworkid net - , GovProcs $ GovProcedures vp pp - , CurrentTreasuryValue ctv - , TreasuryDonation td - ] -abstractTxBody Babbage (BabbageTxBody inp col ref out colret totcol cert wdrl fee vldt up req mnt sih adh net) = - [ Inputs inp - , Collateral col - , RefInputs ref - , Outputs (sizedValue <$> out) - , CollateralReturn (sizedValue <$> colret) - , TotalCol totcol - , Certs cert - , Withdrawals' wdrl - , Txfee fee - , Vldt vldt - , Update up - , ReqSignerHashes req - , Mint mnt - , WppHash sih - , AdHash adh - , Txnetworkid net - ] -abstractTxBody Shelley (ShelleyTxBody inp out cert wdrl fee ttlslot up adh) = - [ Inputs inp - , Outputs out - , Certs cert - , Withdrawals' wdrl - , Txfee fee - , TTL ttlslot - , Update up - , AdHash adh - ] -abstractTxBody Mary (MaryTxBody inp out cert wdrl fee vldt up adh mnt) = - [ Inputs inp - , Outputs out - , Certs cert - , Withdrawals' wdrl - , Txfee fee - , Vldt vldt - , Update up - , AdHash adh - , Mint mnt - ] -abstractTxBody Allegra (AllegraTxBody inp out cert wdrl fee vldt up adh) = - [ Inputs inp - , Outputs out - , Certs cert - , Withdrawals' wdrl - , Txfee fee - , Vldt vldt - , Update up - , AdHash adh - ] - -abstractWitnesses :: Proof era -> TxWits era -> [WitnessesField era] -abstractWitnesses Shelley (ShelleyTxWits keys scripts boot) = [AddrWits keys, ScriptWits scripts, BootWits boot] -abstractWitnesses Allegra (ShelleyTxWits keys scripts boot) = [AddrWits keys, ScriptWits scripts, BootWits boot] -abstractWitnesses Mary (ShelleyTxWits keys scripts boot) = [AddrWits keys, ScriptWits scripts, BootWits boot] -abstractWitnesses Alonzo (AlonzoTxWits key boot scripts dats red) = - [AddrWits key, ScriptWits scripts, BootWits boot, DataWits dats, RdmrWits red] -abstractWitnesses Babbage (AlonzoTxWits key boot scripts dats red) = - [AddrWits key, ScriptWits scripts, BootWits boot, DataWits dats, RdmrWits red] -abstractWitnesses Conway (AlonzoTxWits key boot scripts dats red) = - [AddrWits key, ScriptWits scripts, BootWits boot, DataWits dats, RdmrWits red] - -abstractTxOut :: Era era => Proof era -> TxOut era -> [TxOutField era] -abstractTxOut Shelley (ShelleyTxOut addr c) = [Address addr, Amount c] -abstractTxOut Allegra (ShelleyTxOut addr c) = [Address addr, Amount c] -abstractTxOut Mary (ShelleyTxOut addr val) = [Address addr, Amount val] -abstractTxOut Alonzo (AlonzoTxOut addr val d) = [Address addr, Amount val, DHash d] -abstractTxOut Babbage (BabbageTxOut addr val d refscr) = - [Address addr, Amount val, FDatum d, RefScript refscr] -abstractTxOut Conway (BabbageTxOut addr val d refscr) = - [Address addr, Amount val, FDatum d, RefScript refscr] - --- ================================================================= --- coercion functions for defining Primed Field constructor patterns - -valid :: IsValid -> Bool -valid (IsValid b) = b - -toSet :: Ord a => [a] -> Set a -toSet = Set.fromList - -fromSet :: Set a -> [a] -fromSet = Set.toList - -toStrictSeq :: [a] -> StrictSeq a -toStrictSeq = SSeq.fromList - -fromStrictSeq :: StrictSeq a -> [a] -fromStrictSeq s = foldr (:) [] s - -toStrictMaybe :: [a] -> StrictMaybe a -toStrictMaybe [] = SNothing -toStrictMaybe [x] = SJust x -toStrictMaybe _xs = error "toStrictMaybe applied to list with 2 or more elements" - -fromStrictMaybe :: StrictMaybe a -> [a] -fromStrictMaybe SNothing = [] -fromStrictMaybe (SJust x) = [x] - --- Coercing from [T era] to (Map (Hash (T era)) (T era)), for different version of T that are Hashable - -toMapDat :: Era era => [Data era] -> TxDats era -toMapDat ds = TxDats (Map.fromList (map (\d -> (hashData d, d)) ds)) - -fromMapScript :: forall era. Map (ScriptHash (EraCrypto era)) (Script era) -> [Script era] -fromMapScript m = Map.elems m - -toMapScript :: - forall era. EraScript era => [Script era] -> Map (ScriptHash (EraCrypto era)) (Script era) -toMapScript scripts = Map.fromList (map (\s -> (hashScript @era s, s)) scripts) - --- ============================================================================= --- Patterns (with primed names, like C') allow users to use [a], to stand --- for (Set a) (Maybe a) (StrictSeq a) (StrictMaybe a) (Map (hash a) a) --- The pattern signatures are just underneath the data declarations - --- ======================== --- TxBody patterns - -netview :: TxBodyField era -> Maybe [Network] -netview (Txnetworkid x) = Just (fromStrictMaybe x) -netview _ = Nothing - -pattern Txnetworkid' x <- - (netview -> Just x) - where - Txnetworkid' x = Txnetworkid (toStrictMaybe x) - -adhashview :: TxBodyField era -> Maybe [AuxiliaryDataHash (EraCrypto era)] -adhashview (AdHash x) = Just (fromStrictMaybe x) -adhashview _ = Nothing - -pattern AdHash' x <- - (adhashview -> Just x) - where - AdHash' x = AdHash (toStrictMaybe x) - -wppview :: TxBodyField era -> Maybe [ScriptIntegrityHash (EraCrypto era)] -wppview (WppHash x) = Just (fromStrictMaybe x) -wppview _ = Nothing - -pattern WppHash' x <- - (wppview -> Just x) - where - WppHash' x = WppHash (toStrictMaybe x) - -signview :: TxBodyField era -> Maybe [KeyHash 'Witness (EraCrypto era)] -signview (ReqSignerHashes x) = Just (fromSet x) -signview _ = Nothing - -pattern ReqSignerHashes' x <- - (signview -> Just x) - where - ReqSignerHashes' x = ReqSignerHashes (toSet x) - -updateview :: TxBodyField era -> Maybe [PP.Update era] -updateview (Update x) = Just (fromStrictMaybe x) -updateview _ = Nothing - -pattern Update' x <- - (updateview -> Just x) - where - Update' x = Update (toStrictMaybe x) - -certsview :: TxBodyField era -> Maybe [TxCert era] -certsview (Certs x) = Just (fromStrictSeq x) -certsview _ = Nothing - -pattern Certs' x <- - (certsview -> Just x) - where - Certs' x = Certs (toStrictSeq x) - -colretview :: TxBodyField era -> Maybe [TxOut era] -colretview (CollateralReturn x) = Just (fromStrictMaybe x) -colretview _ = Nothing - -pattern CollateralReturn' x <- - (colretview -> Just x) - where - CollateralReturn' x = CollateralReturn (toStrictMaybe x) - -outputview :: TxBodyField era -> Maybe [TxOut era] -outputview (Outputs x) = Just (fromStrictSeq x) -outputview _ = Nothing - -pattern Outputs' x <- - (outputview -> Just x) - where - Outputs' x = Outputs (toStrictSeq x) - -inputsview :: TxBodyField era -> Maybe [TxIn (EraCrypto era)] -inputsview (Inputs x) = Just (fromSet x) -inputsview _ = Nothing - -pattern Inputs' x <- - (inputsview -> Just x) - where - Inputs' x = Inputs (toSet x) - -colview :: TxBodyField era -> Maybe [TxIn (EraCrypto era)] -colview (Collateral x) = Just (fromSet x) -colview _ = Nothing - -pattern Collateral' x <- - (colview -> Just x) - where - Collateral' x = Collateral (toSet x) - -refview :: TxBodyField era -> Maybe [TxIn (EraCrypto era)] -refview (RefInputs x) = Just (fromSet x) -refview _ = Nothing - -pattern RefInputs' x <- - (refview -> Just x) - where - RefInputs' x = RefInputs (toSet x) - --- ============================= --- Tx patterns - -validview :: TxField era -> Maybe Bool -validview (Valid x) = Just (valid x) -validview _ = Nothing - -pattern Valid' x <- - (validview -> Just x) - where - Valid' x = Valid (IsValid x) - -auxdataview :: TxField era -> Maybe [TxAuxData era] -auxdataview (AuxData x) = Just (fromStrictMaybe x) -auxdataview _ = Nothing - -pattern AuxData' x <- - (auxdataview -> Just x) - where - AuxData' x = AuxData (toStrictMaybe x) - --- ======================= --- WitnessesField Patterns - -datawitsview :: forall era. Era era => WitnessesField era -> Maybe [Data era] -datawitsview (DataWits (TxDats x)) = Just (Map.elems x) -datawitsview _ = Nothing - -pattern DataWits' x <- - (datawitsview -> Just x) - where - DataWits' x = DataWits (toMapDat x) - -scriptview :: forall era. WitnessesField era -> Maybe [Script era] -scriptview (ScriptWits x) = Just (fromMapScript @era x) -scriptview _ = Nothing - -pattern ScriptWits' x <- - (scriptview -> Just x) - where - ScriptWits' x = ScriptWits (toMapScript @era x) - -addrview :: WitnessesField era -> Maybe [WitVKey 'Witness (EraCrypto era)] -addrview (AddrWits x) = Just (fromSet x) -addrview _ = Nothing - -pattern AddrWits' x <- - (addrview -> Just x) - where - AddrWits' x = AddrWits (toSet x) - -bootview :: WitnessesField era -> Maybe [BootstrapWitness (EraCrypto era)] -bootview (BootWits x) = Just (fromSet x) -bootview _ = Nothing - -pattern BootWits' x <- - (bootview -> Just x) - where - BootWits' x = BootWits (toSet x) - --- ======================================== --- TxOut patterns - -refscriptview :: TxOutField era -> Maybe [Script era] -refscriptview (RefScript x) = Just (fromStrictMaybe x) -refscriptview _ = Nothing - -pattern RefScript' x <- - (refscriptview -> Just x) - where - RefScript' x = RefScript (toStrictMaybe x) - -dhashview :: TxOutField era -> Maybe [DataHash (EraCrypto era)] -dhashview (DHash x) = Just (fromStrictMaybe x) -dhashview _ = Nothing - -pattern DHash' x <- - (dhashview -> Just x) - where - DHash' x = DHash (toStrictMaybe x) diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/Functions.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/Functions.hs deleted file mode 100644 index c18dc88d476..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/Functions.hs +++ /dev/null @@ -1,453 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - --- | Functions in this module take a (Proof era) as their first --- parameter and do something potentially different in each Era. -module Test.Cardano.Ledger.Generic.Functions where - -import Cardano.Ledger.Address (Addr (..)) -import Cardano.Ledger.Alonzo.Scripts (plutusScriptLanguage) -import Cardano.Ledger.Alonzo.Tx (AlonzoTx (..), IsValid (..)) -import Cardano.Ledger.Alonzo.TxBody (AlonzoTxOut (..), collateral') -import Cardano.Ledger.Babbage.TxBody ( - BabbageTxOut (..), - collateralInputs', - collateralReturn', - referenceInputs', - spendInputs', - ) -import Cardano.Ledger.Babbage.UTxO (getReferenceScripts) -import Cardano.Ledger.BaseTypes ( - BlocksMade (BlocksMade), - Globals (epochInfo), - ProtVer (..), - natVersion, - ) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Conway.Core -import Cardano.Ledger.Credential (Credential, StakeReference (..)) -import Cardano.Ledger.Keys (KeyRole (..)) -import Cardano.Ledger.Plutus.Data (Datum (..), binaryDataToData, hashData) -import Cardano.Ledger.Plutus.ExUnits (ExUnits (..)) -import Cardano.Ledger.Plutus.Language (Language (..)) -import Cardano.Ledger.Shelley.AdaPots (AdaPots (..), totalAdaPotsES) -import Cardano.Ledger.Shelley.LedgerState ( - AccountState (..), - CertState (..), - DState (..), - EpochState (..), - LedgerState (..), - NewEpochState (..), - PState (..), - UTxOState (..), - VState (..), - ) -import Cardano.Ledger.Shelley.TxOut (ShelleyTxOut (..)) -import Cardano.Ledger.TxIn (TxIn (..)) -import qualified Cardano.Ledger.UMap as UM -import Cardano.Ledger.UTxO (EraUTxO (..), UTxO (..), coinBalance, unScriptsProvided) -import Cardano.Ledger.Val (Val ((<+>), (<->)), inject) -import Cardano.Slotting.EpochInfo.API (epochInfoSize) -import Control.Monad.Reader (runReader) -import Data.Default.Class (Default (def)) -import qualified Data.Foldable as Fold (fold, toList) -import qualified Data.List as List -import Data.Map (Map, keysSet, restrictKeys) -import qualified Data.Map.Strict as Map -import Data.Maybe.Strict (StrictMaybe (..)) -import Data.Sequence.Strict (StrictSeq) -import Data.Set (Set) -import qualified Data.Set as Set -import Lens.Micro -import Numeric.Natural -import Test.Cardano.Ledger.Alonzo.Arbitrary (alwaysFailsLang, alwaysSucceedsLang) -import Test.Cardano.Ledger.Generic.Fields (TxOutField (..)) -import Test.Cardano.Ledger.Generic.ModelState (MUtxo, Model, ModelNewEpochState (..)) -import Test.Cardano.Ledger.Generic.Proof (Proof (..), Reflect (..)) -import Test.Cardano.Ledger.Generic.Scriptic (Scriptic (..)) -import Test.Cardano.Ledger.Shelley.Rewards (RewardUpdateOld, createRUpdOld_) -import Test.Cardano.Ledger.Shelley.Utils (testGlobals) - --- ==================================================================== --- Era agnostic actions on (PParams era) (TxOut era) and --- other XX types Mostly by pattern matching against Proof objects - -maxCollateralInputs' :: Proof era -> PParams era -> Natural -maxCollateralInputs' Alonzo pp = pp ^. ppMaxCollateralInputsL -maxCollateralInputs' Babbage pp = pp ^. ppMaxCollateralInputsL -maxCollateralInputs' Conway pp = pp ^. ppMaxCollateralInputsL -maxCollateralInputs' _proof _pp = 0 -{-# NOINLINE maxCollateralInputs' #-} - -maxTxExUnits' :: Proof era -> PParams era -> ExUnits -maxTxExUnits' Alonzo pp = pp ^. ppMaxTxExUnitsL -maxTxExUnits' Babbage pp = pp ^. ppMaxTxExUnitsL -maxTxExUnits' Conway pp = pp ^. ppMaxTxExUnitsL -maxTxExUnits' _proof _x = mempty -{-# NOINLINE maxTxExUnits' #-} - -collateralPercentage' :: Proof era -> PParams era -> Natural -collateralPercentage' Alonzo pp = pp ^. ppCollateralPercentageL -collateralPercentage' Babbage pp = pp ^. ppCollateralPercentageL -collateralPercentage' Conway pp = pp ^. ppCollateralPercentageL -collateralPercentage' _proof _pp = 0 -{-# NOINLINE collateralPercentage' #-} - -protocolVersion :: Proof era -> ProtVer -protocolVersion Conway = ProtVer (natVersion @9) 0 -protocolVersion Babbage = ProtVer (natVersion @7) 0 -protocolVersion Alonzo = ProtVer (natVersion @6) 0 -protocolVersion Mary = ProtVer (natVersion @4) 0 -protocolVersion Allegra = ProtVer (natVersion @3) 0 -protocolVersion Shelley = ProtVer (natVersion @2) 0 -{-# NOINLINE protocolVersion #-} - --- | Positive numbers are "deposits owed", negative amounts are "refunds gained" -depositsAndRefunds :: - (EraPParams era, ShelleyEraTxCert era) => - PParams era -> - [TxCert era] -> - Map (Credential 'Staking (EraCrypto era)) Coin -> - Coin -depositsAndRefunds pp certificates keydeposits = List.foldl' accum (Coin 0) certificates - where - accum ans (RegTxCert _) = pp ^. ppKeyDepositL <+> ans - accum ans (UnRegTxCert hk) = - case Map.lookup hk keydeposits of - Nothing -> ans - Just c -> ans <-> c - accum ans (RegPoolTxCert _) = pp ^. ppPoolDepositL <+> ans - accum ans (RetirePoolTxCert _ _) = ans -- The pool reward is refunded at the end of the epoch - accum ans _ = ans - --- | Compute the set of ScriptHashes for which there should be ScriptWitnesses. In Babbage --- Era and later, where inline Scripts are allowed, they should not appear in this set. -scriptWitsNeeded' :: Proof era -> MUtxo era -> TxBody era -> Set (ScriptHash (EraCrypto era)) -scriptWitsNeeded' Conway utxo txBody = regularScripts `Set.difference` inlineScripts - where - theUtxo = UTxO utxo - inputs = txBody ^. inputsTxBodyL - inlineScripts = keysSet $ getReferenceScripts theUtxo inputs - regularScripts = getScriptsHashesNeeded (getScriptsNeeded theUtxo txBody) -scriptWitsNeeded' Babbage utxo txBody = regularScripts `Set.difference` inlineScripts - where - theUtxo = UTxO utxo - inputs = spendInputs' txBody `Set.union` referenceInputs' txBody - inlineScripts = keysSet $ getReferenceScripts theUtxo inputs - regularScripts = getScriptsHashesNeeded (getScriptsNeeded theUtxo txBody) -scriptWitsNeeded' Alonzo utxo txBody = - getScriptsHashesNeeded (getScriptsNeeded (UTxO utxo) txBody) -scriptWitsNeeded' Mary utxo txBody = - getScriptsHashesNeeded (getScriptsNeeded (UTxO utxo) txBody) -scriptWitsNeeded' Allegra utxo txBody = - getScriptsHashesNeeded (getScriptsNeeded (UTxO utxo) txBody) -scriptWitsNeeded' Shelley utxo txBody = - getScriptsHashesNeeded (getScriptsNeeded (UTxO utxo) txBody) -{-# NOINLINE scriptWitsNeeded' #-} - -scriptsNeeded' :: Proof era -> MUtxo era -> TxBody era -> Set (ScriptHash (EraCrypto era)) -scriptsNeeded' Conway utxo txBody = - getScriptsHashesNeeded (getScriptsNeeded (UTxO utxo) txBody) -scriptsNeeded' Babbage utxo txBody = - getScriptsHashesNeeded (getScriptsNeeded (UTxO utxo) txBody) -scriptsNeeded' Alonzo utxo txBody = - getScriptsHashesNeeded (getScriptsNeeded (UTxO utxo) txBody) -scriptsNeeded' Mary utxo txBody = - getScriptsHashesNeeded (getScriptsNeeded (UTxO utxo) txBody) -scriptsNeeded' Allegra utxo txBody = - getScriptsHashesNeeded (getScriptsNeeded (UTxO utxo) txBody) -scriptsNeeded' Shelley utxo txBody = - getScriptsHashesNeeded (getScriptsNeeded (UTxO utxo) txBody) -{-# NOINLINE scriptsNeeded' #-} - -txInBalance :: - forall era. - EraTxOut era => - Set (TxIn (EraCrypto era)) -> - MUtxo era -> - Coin -txInBalance txinSet m = coinBalance (UTxO (restrictKeys m txinSet)) - --- | Break a TxOut into its mandatory and optional parts -txoutFields :: Proof era -> TxOut era -> (Addr (EraCrypto era), Value era, [TxOutField era]) -txoutFields Conway (BabbageTxOut addr val d h) = (addr, val, [FDatum d, RefScript h]) -txoutFields Babbage (BabbageTxOut addr val d h) = (addr, val, [FDatum d, RefScript h]) -txoutFields Alonzo (AlonzoTxOut addr val dh) = (addr, val, [DHash dh]) -txoutFields Mary (ShelleyTxOut addr val) = (addr, val, []) -txoutFields Allegra (ShelleyTxOut addr val) = (addr, val, []) -txoutFields Shelley (ShelleyTxOut addr val) = (addr, val, []) -{-# NOINLINE txoutFields #-} - -injectFee :: EraTxOut era => Proof era -> Coin -> TxOut era -> TxOut era -injectFee _ fee txOut = txOut & valueTxOutL %~ (<+> inject fee) - -getTxOutRefScript :: Proof era -> TxOut era -> StrictMaybe (Script era) -getTxOutRefScript Conway (BabbageTxOut _ _ _ ms) = ms -getTxOutRefScript Babbage (BabbageTxOut _ _ _ ms) = ms -getTxOutRefScript _ _ = SNothing -{-# NOINLINE getTxOutRefScript #-} - -emptyPPUPstate :: forall era. Proof era -> ShelleyGovState era -emptyPPUPstate Conway = def -emptyPPUPstate Babbage = def -emptyPPUPstate Alonzo = def -emptyPPUPstate Mary = def -emptyPPUPstate Allegra = def -emptyPPUPstate Shelley = def -{-# NOINLINE emptyPPUPstate #-} - -maxRefInputs :: Proof era -> Int -maxRefInputs Babbage = 3 -maxRefInputs _ = 0 - -isValid' :: Proof era -> Tx era -> IsValid -isValid' Conway x = isValid x -isValid' Babbage x = isValid x -isValid' Alonzo x = isValid x -isValid' _ _ = IsValid True -{-# NOINLINE isValid' #-} - --- | Does the TxOut have evidence of credentials and data. --- Evidence of data is either ScriptHash or (in Babbage) an inline Datum --- Evidence of credentials can come from the Addr -txoutEvidence :: - forall era. - Proof era -> - TxOut era -> - ([Credential 'Payment (EraCrypto era)], Maybe (DataHash (EraCrypto era))) -txoutEvidence Alonzo (AlonzoTxOut addr _ (SJust dh)) = - (addrCredentials addr, Just dh) -txoutEvidence Alonzo (AlonzoTxOut addr _ SNothing) = - (addrCredentials addr, Nothing) -txoutEvidence Conway (BabbageTxOut addr _ NoDatum _) = - (addrCredentials addr, Nothing) -txoutEvidence Conway (BabbageTxOut addr _ (DatumHash dh) _) = - (addrCredentials addr, Just dh) -txoutEvidence Conway (BabbageTxOut addr _ (Datum _d) _) = - (addrCredentials addr, Just (hashData @era (binaryDataToData _d))) -txoutEvidence Babbage (BabbageTxOut addr _ NoDatum _) = - (addrCredentials addr, Nothing) -txoutEvidence Babbage (BabbageTxOut addr _ (DatumHash dh) _) = - (addrCredentials addr, Just dh) -txoutEvidence Babbage (BabbageTxOut addr _ (Datum _d) _) = - (addrCredentials addr, Just (hashData @era (binaryDataToData _d))) -txoutEvidence Mary (ShelleyTxOut addr _) = - (addrCredentials addr, Nothing) -txoutEvidence Allegra (ShelleyTxOut addr _) = - (addrCredentials addr, Nothing) -txoutEvidence Shelley (ShelleyTxOut addr _) = - (addrCredentials addr, Nothing) -{-# NOINLINE txoutEvidence #-} - -addrCredentials :: Addr c -> [Credential 'Payment c] -addrCredentials addr = maybe [] (: []) (paymentCredAddr addr) - -paymentCredAddr :: Addr c -> Maybe (Credential 'Payment c) -paymentCredAddr (Addr _ cred _) = Just cred -paymentCredAddr _ = Nothing - -stakeCredAddr :: Addr c -> Maybe (Credential 'Staking c) -stakeCredAddr (Addr _ _ (StakeRefBase cred)) = Just cred -stakeCredAddr _ = Nothing - -getBody :: EraTx era => Proof era -> Tx era -> TxBody era -getBody _ tx = tx ^. bodyTxL - -getCollateralInputs :: Proof era -> TxBody era -> Set (TxIn (EraCrypto era)) -getCollateralInputs Conway tx = tx ^. collateralInputsTxBodyL -getCollateralInputs Babbage tx = collateralInputs' tx -getCollateralInputs Alonzo tx = collateral' tx -getCollateralInputs Mary _ = Set.empty -getCollateralInputs Allegra _ = Set.empty -getCollateralInputs Shelley _ = Set.empty -{-# NOINLINE getCollateralInputs #-} - -getCollateralOutputs :: Proof era -> TxBody era -> [TxOut era] -getCollateralOutputs Conway tx = case tx ^. collateralReturnTxBodyL of SNothing -> []; SJust x -> [x] -getCollateralOutputs Babbage tx = case collateralReturn' tx of SNothing -> []; SJust x -> [x] -getCollateralOutputs Alonzo _ = [] -getCollateralOutputs Mary _ = [] -getCollateralOutputs Allegra _ = [] -getCollateralOutputs Shelley _ = [] -{-# NOINLINE getCollateralOutputs #-} - -getInputs :: EraTxBody era => Proof era -> TxBody era -> Set (TxIn (EraCrypto era)) -getInputs _ tx = tx ^. inputsTxBodyL - -getOutputs :: EraTxBody era => Proof era -> TxBody era -> StrictSeq (TxOut era) -getOutputs _ tx = tx ^. outputsTxBodyL - -getScriptWits :: - EraTxWits era => Proof era -> TxWits era -> Map (ScriptHash (EraCrypto era)) (Script era) -getScriptWits _ tx = tx ^. scriptTxWitsL - -allInputs :: EraTxBody era => Proof era -> TxBody era -> Set (TxIn (EraCrypto era)) -allInputs _ txb = txb ^. allInputsTxBodyF - -getWitnesses :: EraTx era => Proof era -> Tx era -> TxWits era -getWitnesses _ tx = tx ^. witsTxL - -primaryLanguage :: Proof era -> Maybe Language -primaryLanguage Conway = Just PlutusV2 -primaryLanguage Babbage = Just PlutusV2 -primaryLanguage Alonzo = Just PlutusV1 -primaryLanguage _ = Nothing -{-# NOINLINE primaryLanguage #-} - -alwaysTrue :: forall era. Proof era -> Maybe Language -> Natural -> Script era -alwaysTrue Conway (Just l) n = alwaysSucceedsLang @era l n -alwaysTrue p@Conway Nothing _ = fromNativeScript $ allOf [] p -alwaysTrue Babbage (Just l) n = alwaysSucceedsLang @era l n -alwaysTrue p@Babbage Nothing _ = fromNativeScript $ allOf [] p -alwaysTrue Alonzo (Just l) n = alwaysSucceedsLang @era l n -alwaysTrue p@Alonzo Nothing _ = fromNativeScript $ allOf [] p -alwaysTrue p@Mary _ n = always n p -alwaysTrue p@Allegra _ n = always n p -alwaysTrue p@Shelley _ n = always n p -{-# NOINLINE alwaysTrue #-} - -alwaysFalse :: forall era. Proof era -> Maybe Language -> Natural -> Script era -alwaysFalse Conway (Just l) n = alwaysFailsLang @era l n -alwaysFalse p@Conway Nothing _ = fromNativeScript $ anyOf [] p -alwaysFalse Babbage (Just l) n = alwaysFailsLang @era l n -alwaysFalse p@Babbage Nothing _ = fromNativeScript $ anyOf [] p -alwaysFalse Alonzo (Just l) n = alwaysFailsLang @era l n -alwaysFalse p@Alonzo Nothing _ = fromNativeScript $ anyOf [] p -alwaysFalse p@Mary _ n = never n p -alwaysFalse p@Allegra _ n = never n p -alwaysFalse p@Shelley _ n = never n p -{-# NOINLINE alwaysFalse #-} - -certs :: (ShelleyEraTxBody era, EraTx era) => Proof era -> Tx era -> [TxCert era] -certs _ tx = Fold.toList $ tx ^. bodyTxL . certsTxBodyL - --- | Create an old style RewardUpdate to be used in tests, in any Era. -createRUpdNonPulsing' :: - forall era. - Proof era -> - Model era -> - RewardUpdateOld (EraCrypto era) -createRUpdNonPulsing' proof model = - let bm = BlocksMade $ mBcur model -- TODO or should this be mBprev? - ss = mSnapshots model - as = mAccountState model - reserves = asReserves as - pp = mPParams model - totalStake = Map.foldr (<+>) (Coin 0) $ mRewards model - rs = Map.keysSet $ mRewards model -- TODO or should we look at delegated keys instead? - en = mEL model - - -- We use testGlobals here, since this generic function is used only in tests. - slotsPerEpoch = case epochInfoSize (epochInfo testGlobals) en of - Left err -> error ("Failed to calculate slots per epoch:\n" ++ show err) - Right x -> x - in (`runReader` testGlobals) $ case proof of - Conway -> createRUpdOld_ @era slotsPerEpoch bm ss reserves pp totalStake rs def - Babbage -> createRUpdOld_ @era slotsPerEpoch bm ss reserves pp totalStake rs def - Alonzo -> createRUpdOld_ @era slotsPerEpoch bm ss reserves pp totalStake rs def - Mary -> createRUpdOld_ @era slotsPerEpoch bm ss reserves pp totalStake rs def - Allegra -> createRUpdOld_ @era slotsPerEpoch bm ss reserves pp totalStake rs def - Shelley -> createRUpdOld_ @era slotsPerEpoch bm ss reserves pp totalStake rs def -{-# NOINLINE createRUpdNonPulsing' #-} - -languagesUsed :: - forall era. - Proof era -> - Tx era -> - UTxO era -> - Set (ScriptHash (EraCrypto era)) -> - Set Language -languagesUsed proof tx utxo sNeeded = case proof of - Shelley -> Set.empty - Allegra -> Set.empty - Mary -> Set.empty - Alonzo -> languages tx utxo sNeeded - Babbage -> languages tx utxo sNeeded - Conway -> languages tx utxo sNeeded -{-# NOINLINE languagesUsed #-} - --- | Compute the Set of Languages in an era, where 'AlonzoScripts' are used -languages :: - forall era. - (EraUTxO era, AlonzoEraScript era) => - Tx era -> - UTxO era -> - Set (ScriptHash (EraCrypto era)) -> - Set Language -languages tx utxo sNeeded = Map.foldl' accum Set.empty allScripts - where - allScripts = Map.restrictKeys (unScriptsProvided $ getScriptsProvided utxo tx) sNeeded - accum ans script = - case toPlutusScript script of - Nothing -> ans - Just plutusScript -> Set.insert (plutusScriptLanguage plutusScript) ans - --- | Compute the total Ada from Ada pots within 't' -class TotalAda t where - totalAda :: t -> Coin - -instance TotalAda AccountState where - totalAda (AccountState treasury reserves) = treasury <+> reserves - -instance Reflect era => TotalAda (UTxOState era) where - totalAda (UTxOState utxo _deposits fees gs _ donations) = - totalAda utxo <+> fees <+> govStateTotalAda gs <+> donations - --- we don't add in the _deposits, because it is invariant that this --- is equal to the sum of the key deposit map and the pool deposit map --- So these are accounted for in the instance (TotalAda (CertState era)) - -instance Reflect era => TotalAda (UTxO era) where - totalAda (UTxO m) = foldl accum mempty m - where - accum ans txOut = (txOut ^. coinTxOutL) <+> ans - -instance TotalAda (DState era) where - totalAda dstate = - (UM.fromCompact $ UM.sumRewardsUView (UM.RewDepUView (dsUnified dstate))) - <> (UM.fromCompact $ UM.sumDepositUView (UM.RewDepUView (dsUnified dstate))) - -instance TotalAda (PState era) where - totalAda pstate = Fold.fold (psDeposits pstate) - -instance TotalAda (VState era) where - totalAda _ = mempty - -instance TotalAda (CertState era) where - totalAda (CertState ds ps vs) = totalAda ds <> totalAda ps <> totalAda vs - -instance TotalAda (ShelleyGovState era) where - totalAda _ = mempty - -govStateTotalAda :: forall era. Reflect era => GovState era -> Coin -govStateTotalAda = case reify @era of - Shelley -> totalAda - Mary -> totalAda - Allegra -> totalAda - Alonzo -> totalAda - Babbage -> totalAda - Conway -> mempty - -instance Reflect era => TotalAda (LedgerState era) where - totalAda (LedgerState utxos dps) = totalAda utxos <+> totalAda dps - -instance Reflect era => TotalAda (EpochState era) where - totalAda eps = totalAda (esLState eps) <+> totalAda (esAccountState eps) - -instance Reflect era => TotalAda (NewEpochState era) where - totalAda nes = totalAda (nesEs nes) - -adaPots :: Proof era -> EpochState era -> AdaPots -adaPots Conway es = totalAdaPotsES es -adaPots Babbage es = totalAdaPotsES es -adaPots Alonzo es = totalAdaPotsES es -adaPots Mary es = totalAdaPotsES es -adaPots Allegra es = totalAdaPotsES es -adaPots Shelley es = totalAdaPotsES es -{-# NOINLINE adaPots #-} diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/GenState.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/GenState.hs deleted file mode 100644 index 4286f3b1b69..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/GenState.hs +++ /dev/null @@ -1,1247 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} - --- | Strategy for Generic Tests --- Make the GenState include a Mode of the NewEpochState, modify --- the ModelNewEpochState to reflect what we generated. -module Test.Cardano.Ledger.Generic.GenState ( - GenEnv (..), - GenRS, - GenState (..), - GenSize (..), - PlutusPurposeTag (..), - plutusPurposeTags, - mkRedeemers, - mkRedeemersFromTags, - mkPlutusPurposePointer, - mkAlonzoPlutusPurposePointer, - mkConwayPlutusPurposePointer, - elementsT, -- TODO move to a utilities module - frequencyT, -- TODO move to a utilities module - positiveSingleDigitInt, - nonNegativeSingleDigitInt, - genSetElem, - genMapElem, - genMapElemWhere, - genRewardVal, - genPositiveVal, - genGenState, - genGenEnv, - genValidityInterval, - getBlocksizeMax, - getCertificateMax, - getOldUtxoPercent, - getRefInputsMax, - getReserves, - getSlot, - getSlotDelta, - getSpendInputsMax, - getTreasury, - getUtxoChoicesMax, - getUtxoElem, - getUtxoTest, - getCollInputsMax, - getNewPoolTest, - viewGenState, - initialLedgerState, - modifyModel, - runGenRS, - ioGenRS, - small, - genDatumWithHash, - genKeyHash, - genScript, - genFreshKeyHash, - genCredential, - genFreshCredential, - genFreshRegCred, - genPool, - genPoolParams, - genRewards, - genNewPool, - genRetirementHash, - initStableFields, - modifyGenStateInitialUtxo, - modifyGenStateInitialRewards, - modifyModelCount, - modifyModelIndex, - modifyModelUTxO, - modifyModelMutFee, -) where - -import Cardano.Ledger.Address (Addr (..), RewardAccount (..)) -import Cardano.Ledger.Allegra.Scripts (Timelock (..), ValidityInterval (..)) -import Cardano.Ledger.Alonzo.Scripts hiding (Script) -import Cardano.Ledger.Alonzo.Tx (IsValid (..)) -import Cardano.Ledger.Alonzo.TxWits (Redeemers (..)) -import Cardano.Ledger.BaseTypes (EpochInterval (..), Network (Testnet), inject) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Conway.Scripts (ConwayPlutusPurpose (..)) -import Cardano.Ledger.Credential (Credential (KeyHashObj, ScriptHashObj), StakeCredential) -import Cardano.Ledger.Keys ( - KeyHash (..), - KeyRole (..), - coerceKeyRole, - hashKey, - ) -import Cardano.Ledger.Plutus.Data (Data (..), hashData) -import Cardano.Ledger.PoolDistr (IndividualPoolStake (..)) -import Cardano.Ledger.PoolParams (PoolParams (..)) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState ( - CertState (..), - DState (..), - LedgerState (..), - PState (..), - RewardAccounts, - smartUTxOState, - totalObligation, - utxosGovStateL, - ) -import qualified Cardano.Ledger.Shelley.Scripts as Shelley (MultiSig (..)) -import Cardano.Ledger.TxIn (TxId, TxIn (..)) -import qualified Cardano.Ledger.UMap as UM -import Cardano.Ledger.UTxO (UTxO (..)) -import Cardano.Ledger.Val (Val (..)) -import Cardano.Slotting.Slot (SlotNo (..)) -import Control.Monad (join, replicateM, when, zipWithM_) -import Control.Monad.Trans.Class (MonadTrans (lift)) -import Control.Monad.Trans.RWS.Strict (RWST (..), ask, asks, get, gets, modify) -import Control.SetAlgebra (eval, (⨃)) -import Data.Default.Class (Default (def)) -import Data.Map (Map) -import qualified Data.Map.Strict as Map -import Data.Maybe.Strict (StrictMaybe (SJust, SNothing)) -import qualified Data.Sequence.Strict as Seq -import Data.Set (Set) -import qualified Data.Set as Set -import GHC.Word (Word32, Word64) -import Lens.Micro -import Numeric.Natural -import Test.Cardano.Ledger.Alonzo.Serialisation.Generators () -import Test.Cardano.Ledger.Babbage.Serialisation.Generators () -import Test.Cardano.Ledger.Core.KeyPair (KeyPair (..)) -import Test.Cardano.Ledger.Generic.Fields -import Test.Cardano.Ledger.Generic.Functions ( - alwaysFalse, - alwaysTrue, - primaryLanguage, - protocolVersion, - txoutFields, - ) -import Test.Cardano.Ledger.Generic.ModelState ( - ModelNewEpochState (..), - genDelegsZero, - instantaneousRewardsZero, - mKeyDeposits, - mNewEpochStateZero, - mPoolDeposits, - pcModelNewEpochState, - ) -import Test.Cardano.Ledger.Generic.PrettyCore ( - PDoc, - PrettyA (..), - pcCoin, - pcCredential, - pcIndividualPoolStake, - pcKeyHash, - pcPoolParams, - pcTxIn, - pcTxOut, - ppInt, - ppMap, - ppRecord, - ppSet, - ppString, - ppValidityInterval, - ) -import Test.Cardano.Ledger.Generic.Proof hiding (lift) -import Test.Cardano.Ledger.Generic.Updaters (defaultCostModels, newPParams) -import Test.Tasty.QuickCheck ( - Gen, - Positive (..), - arbitrary, - choose, - chooseInt, - elements, - frequency, - generate, - ) - --- ================================================= - --- | Constants that determine how big a GenState is generated. -data GenSize = GenSize - { treasury :: !Integer - , reserves :: !Integer - , startSlot :: !Word64 - , slotDelta :: !(Word64, Word64) - , blocksizeMax :: !Integer - , collInputsMax :: !Natural - , spendInputsMax :: !Int - , refInputsMax :: !Int - , utxoChoicesMax :: !Int - , certificateMax :: !Int - , withdrawalMax :: !Int - , oldUtxoPercent :: !Int -- between 0-100, 10 means pick an old UTxO 10% of the time - , maxStablePools :: !Int - } - deriving (Show) - -data GenEnv era = GenEnv - { gePParams :: !(PParams era) - , geSize :: !GenSize - } - -data GenState era = GenState - { gsValidityInterval :: !ValidityInterval - , gsKeys :: !(Map (KeyHash 'Witness (EraCrypto era)) (KeyPair 'Witness (EraCrypto era))) - , gsScripts :: !(Map (ScriptHash (EraCrypto era)) (Script era)) - , gsPlutusScripts :: !(Map (ScriptHash (EraCrypto era), PlutusPurposeTag) (IsValid, Script era)) - , gsDatums :: !(Map (DataHash (EraCrypto era)) (Data era)) - , gsVI :: !(Map ValidityInterval (Set (ScriptHash (EraCrypto era)))) - , gsModel :: !(ModelNewEpochState era) - , gsInitialUtxo :: !(Map (TxIn (EraCrypto era)) (TxOut era)) - , gsInitialRewards :: !(Map (Credential 'Staking (EraCrypto era)) Coin) - , gsInitialDelegations :: - !(Map (Credential 'Staking (EraCrypto era)) (KeyHash 'StakePool (EraCrypto era))) - , gsInitialPoolParams :: !(Map (KeyHash 'StakePool (EraCrypto era)) (PoolParams (EraCrypto era))) - , gsInitialPoolDistr :: - !(Map (KeyHash 'StakePool (EraCrypto era)) (IndividualPoolStake (EraCrypto era))) - , -- Stable fields are stable from initialization to the end of the generation process - gsStablePools :: !(Set (KeyHash 'StakePool (EraCrypto era))) - , gsStableDelegators :: !(Set (StakeCredential (EraCrypto era))) - , gsAvoidCred :: !(Set (Credential 'Staking (EraCrypto era))) - , gsAvoidKey :: !(Set (KeyHash 'StakePool (EraCrypto era))) - , gsProof :: !(Proof era) - , gsGenEnv :: !(GenEnv era) - , gsSeedIdx :: !Int - } - -emptyGenState :: Reflect era => Proof era -> GenEnv era -> GenState era -emptyGenState proof genv = - GenState - (ValidityInterval SNothing SNothing) - mempty - mempty - mempty - mempty - mempty - (mNewEpochStateZero {mPParams = gePParams genv}) - Map.empty - Map.empty - Map.empty - Map.empty - Map.empty - Set.empty - Set.empty - Set.empty - Set.empty - proof - genv - 0 -{-# NOINLINE emptyGenState #-} - -instance Default GenSize where - def = - GenSize - { treasury = 1000000 - , reserves = 1000000 - , startSlot = 0 - , slotDelta = (3, 7) - , blocksizeMax = 10 - , collInputsMax = 5 - , oldUtxoPercent = 15 - , spendInputsMax = 10 - , refInputsMax = 6 - , utxoChoicesMax = 30 - , certificateMax = 10 - , withdrawalMax = 10 - , maxStablePools = 5 - } - -small :: GenSize -small = - GenSize - { treasury = 1000000 - , reserves = 1000000 - , startSlot = 0 - , slotDelta = (2, 5) - , blocksizeMax = 3 - , collInputsMax = 2 - , oldUtxoPercent = 5 - , spendInputsMax = 3 - , refInputsMax = 1 - , utxoChoicesMax = 12 - , certificateMax = 2 - , withdrawalMax = 2 - , maxStablePools = 4 - } - -data PlutusPurposeTag - = Spending - | Minting - | Certifying - | Rewarding - | Voting - | Proposing - deriving (Eq, Ord, Show, Enum, Bounded) - -plutusPurposeTags :: Proof era -> [PlutusPurposeTag] -plutusPurposeTags = \case - Shelley {} -> [] - Allegra {} -> [] - Mary {} -> [] - Alonzo {} -> [Spending .. Rewarding] - Babbage {} -> [Spending .. Rewarding] - Conway {} -> [Spending .. Proposing] - -mkRedeemers :: - forall era. - Proof era -> - [(PlutusPurpose AsIx era, (Data era, ExUnits))] -> - Redeemers era -mkRedeemers proof redeemerMap = - -- Pattern match on proof is needed in order to avoid leacking Ord constraint. - case proof of - Shelley {} -> error "No Redeemers" - Allegra {} -> error "No Redeemers" - Mary {} -> error "No Redeemers" - Alonzo {} -> Redeemers $ Map.fromList redeemerMap - Babbage {} -> Redeemers $ Map.fromList redeemerMap - Conway {} -> Redeemers $ Map.fromList redeemerMap - -mkRedeemersFromTags :: - forall era. - Proof era -> - [((PlutusPurposeTag, Word32), (Data era, ExUnits))] -> - Redeemers era -mkRedeemersFromTags proof redeemerPointers = - case proof of - Shelley {} -> error "No Redeemers" - Allegra {} -> error "No Redeemers" - Mary {} -> error "No Redeemers" - Alonzo {} -> mkRedeemers proof redeemerAssocs - Babbage {} -> mkRedeemers proof redeemerAssocs - Conway {} -> mkRedeemers proof redeemerAssocs - where - redeemerAssocs :: [(PlutusPurpose AsIx era, (Data era, ExUnits))] - redeemerAssocs = - [ (mkPlutusPurposePointer proof tag i, redeemer) - | ((tag, i), redeemer) <- redeemerPointers - ] - -mkPlutusPurposePointer :: - Proof era -> - PlutusPurposeTag -> - Word32 -> - PlutusPurpose AsIx era -mkPlutusPurposePointer proof tag i = - case proof of - Shelley {} -> error "No PlutusPurpose" - Allegra {} -> error "No PlutusPurpose" - Mary {} -> error "No PlutusPurpose" - Alonzo {} -> mkAlonzoPlutusPurposePointer tag i - Babbage {} -> mkAlonzoPlutusPurposePointer tag i - Conway {} -> mkConwayPlutusPurposePointer tag i - -mkAlonzoPlutusPurposePointer :: - forall era. - Era era => - PlutusPurposeTag -> - Word32 -> - AlonzoPlutusPurpose AsIx era -mkAlonzoPlutusPurposePointer tag i = - case tag of - Spending -> AlonzoSpending (AsIx i) - Minting -> AlonzoMinting (AsIx i) - Certifying -> AlonzoCertifying (AsIx i) - Rewarding -> AlonzoRewarding (AsIx i) - _ -> error $ "Unsupported tag: " ++ show tag ++ " in era " ++ eraName @era - -mkConwayPlutusPurposePointer :: PlutusPurposeTag -> Word32 -> ConwayPlutusPurpose AsIx era -mkConwayPlutusPurposePointer tag i = - case tag of - Spending -> ConwaySpending (AsIx i) - Minting -> ConwayMinting (AsIx i) - Certifying -> ConwayCertifying (AsIx i) - Rewarding -> ConwayRewarding (AsIx i) - Voting -> ConwayVoting (AsIx i) - Proposing -> ConwayProposing (AsIx i) - --- ===================================================================== --- Accessing information - -getSlot :: GenState era -> SlotNo -getSlot = SlotNo . startSlot . geSize . gsGenEnv - -getSlotDelta :: GenState era -> (Word64, Word64) -getSlotDelta = slotDelta . geSize . gsGenEnv - -getBlocksizeMax :: GenState era -> Integer -getBlocksizeMax = blocksizeMax . geSize . gsGenEnv - -getSpendInputsMax :: GenState era -> Int -getSpendInputsMax = spendInputsMax . geSize . gsGenEnv - -getRefInputsMax :: GenState era -> Int -getRefInputsMax = refInputsMax . geSize . gsGenEnv - -getCertificateMax :: GenState era -> Int -getCertificateMax = certificateMax . geSize . gsGenEnv - -getUtxoChoicesMax :: GenState era -> Int -getUtxoChoicesMax = utxoChoicesMax . geSize . gsGenEnv - -getCollInputsMax :: GenState era -> Natural -getCollInputsMax = collInputsMax . geSize . gsGenEnv - -getOldUtxoPercent :: GenState era -> Int -getOldUtxoPercent x = max 0 (min 100 (oldUtxoPercent (geSize (gsGenEnv x)))) - -getTreasury :: GenState era -> Coin -getTreasury = Coin . treasury . geSize . gsGenEnv - -getReserves :: GenState era -> Coin -getReserves = Coin . reserves . geSize . gsGenEnv - --- ======================================================== --- Modifying fields of the GenState as side effects in GenRS - -setVi :: GenState era -> ValidityInterval -> GenState era -setVi gs vi = gs {gsValidityInterval = vi} -{-# NOINLINE setVi #-} - -modifyGenStateKeys :: - ( Map.Map (KeyHash 'Witness (EraCrypto era)) (KeyPair 'Witness (EraCrypto era)) -> - Map.Map (KeyHash 'Witness (EraCrypto era)) (KeyPair 'Witness (EraCrypto era)) - ) -> - GenRS era () -modifyGenStateKeys f = modify (\x -> x {gsKeys = f (gsKeys x)}) - -modifyGenStateDatums :: - (Map.Map (DataHash (EraCrypto era)) (Data era) -> Map.Map (DataHash (EraCrypto era)) (Data era)) -> - GenRS era () -modifyGenStateDatums f = modify (\x -> x {gsDatums = f (gsDatums x)}) - -modifyGenStateVI :: - ( Map ValidityInterval (Set (ScriptHash (EraCrypto era))) -> - Map ValidityInterval (Set (ScriptHash (EraCrypto era))) - ) -> - GenRS era () -modifyGenStateVI f = modify (\x -> x {gsVI = f (gsVI x)}) - -modifyGenStateInitialRewards :: - ( Map.Map (Credential 'Staking (EraCrypto era)) Coin -> - Map.Map (Credential 'Staking (EraCrypto era)) Coin - ) -> - GenRS era () -modifyGenStateInitialRewards f = modify $ \st -> st {gsInitialRewards = f (gsInitialRewards st)} - -modifyGenStateInitialUtxo :: - ( Map (TxIn (EraCrypto era)) (TxOut era) -> - Map (TxIn (EraCrypto era)) (TxOut era) - ) -> - GenRS era () -modifyGenStateInitialUtxo f = modify $ \st -> st {gsInitialUtxo = f (gsInitialUtxo st)} - -modifyGenStateAvoidCred :: - ( Set (Credential 'Staking (EraCrypto era)) -> - Set (Credential 'Staking (EraCrypto era)) - ) -> - GenRS era () -modifyGenStateAvoidCred f = modify (\st -> st {gsAvoidCred = f (gsAvoidCred st)}) - -modifyGenStateAvoidKey :: - (Set (KeyHash 'StakePool (EraCrypto era)) -> Set (KeyHash 'StakePool (EraCrypto era))) -> - GenRS era () -modifyGenStateAvoidKey f = modify (\s -> s {gsAvoidKey = f (gsAvoidKey s)}) - -modifyGenStateStablePools :: - (Set (KeyHash 'StakePool (EraCrypto era)) -> Set (KeyHash 'StakePool (EraCrypto era))) -> - GenRS era () -modifyGenStateStablePools f = modify (\gs -> gs {gsStablePools = f (gsStablePools gs)}) - -modifyGenStateInitialPoolParams :: - ( Map.Map (KeyHash 'StakePool (EraCrypto era)) (PoolParams (EraCrypto era)) -> - Map.Map (KeyHash 'StakePool (EraCrypto era)) (PoolParams (EraCrypto era)) - ) -> - GenRS era () -modifyGenStateInitialPoolParams f = modify (\gs -> gs {gsInitialPoolParams = f (gsInitialPoolParams gs)}) - -modifyGenStateInitialPoolDistr :: - ( Map.Map (KeyHash 'StakePool (EraCrypto era)) (IndividualPoolStake (EraCrypto era)) -> - Map.Map (KeyHash 'StakePool (EraCrypto era)) (IndividualPoolStake (EraCrypto era)) - ) -> - GenRS era () -modifyGenStateInitialPoolDistr f = modify (\gs -> gs {gsInitialPoolDistr = f (gsInitialPoolDistr gs)}) - -modifyGenStateStableDelegators :: - (Set (StakeCredential (EraCrypto era)) -> Set (StakeCredential (EraCrypto era))) -> - GenRS era () -modifyGenStateStableDelegators f = modify (\gs -> gs {gsStableDelegators = f (gsStableDelegators gs)}) - -modifyGenStateInitialDelegations :: - ( Map.Map (Credential 'Staking (EraCrypto era)) (KeyHash 'StakePool (EraCrypto era)) -> - Map.Map (Credential 'Staking (EraCrypto era)) (KeyHash 'StakePool (EraCrypto era)) - ) -> - GenRS era () -modifyGenStateInitialDelegations f = modify (\gs -> gs {gsInitialDelegations = f (gsInitialDelegations gs)}) - -modifyGenStateScripts :: - ( Map.Map (ScriptHash (EraCrypto era)) (Script era) -> - Map.Map (ScriptHash (EraCrypto era)) (Script era) - ) -> - GenRS era () -modifyGenStateScripts f = - modify $ \gs -> gs {gsScripts = f (gsScripts gs)} - -modifyPlutusScripts :: - ( Map.Map (ScriptHash (EraCrypto era), PlutusPurposeTag) (IsValid, Script era) -> - Map.Map (ScriptHash (EraCrypto era), PlutusPurposeTag) (IsValid, Script era) - ) -> - GenRS era () -modifyPlutusScripts f = modify (\gs -> gs {gsPlutusScripts = f (gsPlutusScripts gs)}) - --- =================================================== --- functions that modify individual fields of ModelState - -modifyModel :: (ModelNewEpochState era -> ModelNewEpochState era) -> GenRS era () -modifyModel f = modify (\gstate -> gstate {gsModel = f (gsModel gstate)}) - -modifyModelDelegations :: - ( Map.Map (Credential 'Staking (EraCrypto era)) (KeyHash 'StakePool (EraCrypto era)) -> - Map.Map (Credential 'Staking (EraCrypto era)) (KeyHash 'StakePool (EraCrypto era)) - ) -> - GenRS era () -modifyModelDelegations f = modifyModel (\ms -> ms {mDelegations = f (mDelegations ms)}) - -modifyModelRewards :: - ( Map.Map (Credential 'Staking (EraCrypto era)) Coin -> - Map.Map (Credential 'Staking (EraCrypto era)) Coin - ) -> - GenRS era () -modifyModelRewards f = modifyModel (\ms -> ms {mRewards = f (mRewards ms)}) - -modifyModelDeposited :: (Coin -> Coin) -> GenRS era () -modifyModelDeposited f = modifyModel (\ms -> ms {mDeposited = f (mDeposited ms)}) - -modifyKeyDeposits :: Credential 'Staking (EraCrypto era) -> Coin -> GenRS era () -modifyKeyDeposits cred c = - modifyModel (\ms -> ms {mKeyDeposits = Map.insert cred c (mKeyDeposits ms)}) - -modifyModelPoolParams :: - ( Map.Map (KeyHash 'StakePool (EraCrypto era)) (PoolParams (EraCrypto era)) -> - Map.Map (KeyHash 'StakePool (EraCrypto era)) (PoolParams (EraCrypto era)) - ) -> - GenRS era () -modifyModelPoolParams f = modifyModel (\ms -> ms {mPoolParams = f (mPoolParams ms)}) - -modifyModelPoolDistr :: - ( Map (KeyHash 'StakePool (EraCrypto era)) (IndividualPoolStake (EraCrypto era)) -> - Map (KeyHash 'StakePool (EraCrypto era)) (IndividualPoolStake (EraCrypto era)) - ) -> - GenRS era () -modifyModelPoolDistr f = modifyModel (\ms -> ms {mPoolDistr = f (mPoolDistr ms)}) - -modifyModelKeyDeposits :: KeyHash 'StakePool (EraCrypto era) -> Coin -> GenRS era () -modifyModelKeyDeposits kh pooldeposit = - modifyModel (\ms -> ms {mPoolDeposits = Map.insert kh pooldeposit (mPoolDeposits ms)}) - -modifyModelCount :: (Int -> Int) -> GenRS era () -modifyModelCount f = modifyModel (\ms -> ms {mCount = f (mCount ms)}) - -modifyModelIndex :: - (Map Int (TxId (EraCrypto era)) -> Map Int (TxId (EraCrypto era))) -> - GenRS era () -modifyModelIndex f = modifyModel (\ms -> ms {mIndex = f (mIndex ms)}) - -modifyModelUTxO :: - (Map (TxIn (EraCrypto era)) (TxOut era) -> Map (TxIn (EraCrypto era)) (TxOut era)) -> - GenRS era () -modifyModelUTxO f = modifyModel (\ms -> ms {mUTxO = f (mUTxO ms)}) - -modifyModelMutFee :: - ( Map (TxIn (EraCrypto era)) (TxOut era) -> - Map (TxIn (EraCrypto era)) (TxOut era) - ) -> - GenRS era () -modifyModelMutFee f = modifyModel (\m -> m {mMutFee = f (mMutFee m)}) - --- ============================================================== --- The Monad - -type GenRS era = RWST (GenEnv era) () (GenState era) Gen - -genMapElem :: Map k a -> Gen (Maybe (k, a)) -genMapElem m - | n == 0 = pure Nothing - | otherwise = do - i <- choose (0, n - 1) - pure $ Just $ Map.elemAt i m - where - n = Map.size m - -genSetElem :: Set a -> Gen (Maybe a) -genSetElem m - | n == 0 = pure Nothing - | otherwise = do - i <- choose (0, n - 1) - pure $ Just $ Set.elemAt i m - where - n = Set.size m - --- | Use up to 'tries' attempts to choose a random (k,a) pair from 'm', that meets predicate 'p' -genMapElemWhere :: Map k a -> Int -> (k -> a -> Bool) -> Gen (Maybe (k, a)) -genMapElemWhere m tries p - | tries <= 0 = pure Nothing - | n == 0 = pure Nothing - | otherwise = do - i <- choose (0, n - 1) - let (k, a) = Map.elemAt i m - if p k a - then pure $ Just $ (k, a) - else genMapElemWhere m (tries - 1) p - where - n = Map.size m - -elementsT :: (Monad (t Gen), MonadTrans t) => [t Gen b] -> t Gen b -elementsT = join . lift . elements - -frequencyT :: (Monad (t Gen), MonadTrans t) => [(Int, t Gen b)] -> t Gen b -frequencyT [] = error ("frequencyT called with empty list") -frequencyT choices = join . lift . frequency . map (pure <$>) $ choices - --- | Gen a positive single digit Int, on a skewed distribution that --- favors 2,3,4,5 but occasionally gets others -positiveSingleDigitInt :: Gen Int -positiveSingleDigitInt = - frequency (map f [(1, 1), (5, 2), (4, 3), (4, 4), (3, 5), (2, 6), (1, 7), (1, 8), (1, 9)]) - where - f (x, y) = (x, pure y) - --- | Gen a non-negative single digit Int, on a skewed distribution that --- favors 2,3,4,5 but occasionally gets others -nonNegativeSingleDigitInt :: Gen Int -nonNegativeSingleDigitInt = - frequency (map f [(1, 0), (2, 1), (5, 2), (4, 3), (3, 4), (2, 5), (2, 6), (1, 7), (1, 8), (1, 9)]) - where - f (x, y) = (x, pure y) - --- | Generate a non-zero value -genPositiveVal :: Val v => Gen v -genPositiveVal = inject . Coin . getPositive <$> arbitrary - --- | Generate a value (which is occaisionally 0) useful in generating Rewards, where we need a --- few 0's, because we cannot generate a DeReg certificates, without a 0 Reg value. --- Also used when generating the CollReturn, where an occasional 0 would be nice -genRewardVal :: Val v => Gen v -genRewardVal = frequency [(3, pure mempty), (97, genPositiveVal)] - --- | Test if the Payment part of the Address in the TxOut --- is valid in the current ValidityInterval. Using the simple rule allowing --- only (Key or Plutus or MutiSig) locking. Disallowing all Timelock scripts -validTxOut :: - Proof era -> - Map (ScriptHash (EraCrypto era)) (Script era) -> - TxIn (EraCrypto era) -> - TxOut era -> - Bool -validTxOut proof m _txin txout = case txoutFields proof txout of - (Addr _ (KeyHashObj _) _, _, _) -> True - (Addr _ (ScriptHashObj h) _, _, _) -> case (proof, Map.lookup h m) of - (Conway, Just (PlutusScript _)) -> True - (Babbage, Just (PlutusScript _)) -> True - (Alonzo, Just (PlutusScript _)) -> True - (Shelley, Just _msig) -> True - _ -> False - _bootstrap -> False - --- | Pick a UTxO element where we can use it in a new Tx. Most of the time we generate new --- elements for each Tx, but once in a while we choose an existing one. We must be carefull --- that that the Pay credential of the TxOut can run in the curent ValidityInterval --- A crude but simple way is to insist Pay credential is either Key locked, or locked --- with Plutus or MultiSig scripts, and return False for any Timelock scripts. -getUtxoElem :: Reflect era => GenRS era (Maybe (TxIn (EraCrypto era), TxOut era)) -getUtxoElem = do - x <- gets (mUTxO . gsModel) - scriptmap <- gets gsScripts - lift $ genMapElemWhere x 20 (validTxOut reify scriptmap) - -getUtxoTest :: GenRS era (TxIn (EraCrypto era) -> Bool) -getUtxoTest = do - x <- gets (mUTxO . gsModel) - pure (`Map.member` x) - --- | To compute deposits we need a function that tells if the KeyHash is a new Pool --- Compute this function before we do any generation, since such generation --- may actually add to the mPoolParams, and then the added thing won't appear new. -getNewPoolTest :: GenRS era (KeyHash 'StakePool (EraCrypto era) -> Bool) -getNewPoolTest = do - poolparams <- gets (mPoolParams . gsModel) - pure (`Map.member` poolparams) - --- ======================================================================== --- Tools to get started in the Monad - -runGenRS :: - Reflect era => - Proof era -> - GenSize -> - GenRS era a -> - Gen (a, GenState era) -runGenRS proof gsize action = do - genenv <- genGenEnv proof gsize - (ans, state, ()) <- runRWST action genenv (emptyGenState proof genenv) - pure (ans, state) - --- | Should not be used in tests, this is a helper function to be used in ghci only! -ioGenRS :: Reflect era => Proof era -> GenSize -> GenRS era ans -> IO (ans, GenState era) -ioGenRS proof gsize action = generate $ runGenRS proof gsize action - --- | Generate a random, well-formed, GenEnv -genGenEnv :: EraPParams era => Proof era -> GenSize -> Gen (GenEnv era) -genGenEnv proof gsize = do - maxTxExUnits <- arbitrary :: Gen ExUnits - maxCollateralInputs <- elements [1 .. collInputsMax gsize] - collateralPercentage <- fromIntegral <$> chooseInt (1, 10000) - minfeeA <- Coin <$> choose (0, 1000) - minfeeB <- Coin <$> choose (0, 10000) - let pp = - newPParams - proof - [ MinfeeA minfeeA - , MinfeeB minfeeB - , defaultCostModels proof - , MaxValSize 1000 - , MaxTxSize $ fromIntegral (maxBound :: Int) - , MaxTxExUnits maxTxExUnits - , MaxCollateralInputs maxCollateralInputs - , CollateralPercentage collateralPercentage - , ProtocolVersion $ protocolVersion proof - , PoolDeposit $ Coin 5 - , KeyDeposit $ Coin 2 - , EMax $ EpochInterval 5 - ] - pure $ - GenEnv - { gePParams = pp - , geSize = gsize - } - -genGenState :: Reflect era => Proof era -> GenSize -> Gen (GenState era) -genGenState proof gsize = do - let slotNo = startSlot gsize - minSlotNo <- frequency [(1, pure SNothing), (4, SJust <$> choose (minBound, slotNo))] - maxSlotNo <- frequency [(1, pure SNothing), (4, SJust <$> choose (slotNo + 1, maxBound))] - let vi = ValidityInterval (SlotNo <$> minSlotNo) (SlotNo <$> maxSlotNo) - env <- genGenEnv proof gsize - pure (setVi (emptyGenState proof env) vi) - --- | Generate a transaction body validity interval which is close in proximity --- (less than a stability window) from the current slot. -genValidityInterval :: SlotNo -> Gen ValidityInterval -genValidityInterval (SlotNo s) = do - let stabilityWindow = 29 -- < 3k/f many slots, where 10k is the epoch length - start <- frequency [(1, pure SNothing), (4, SJust <$> choose (minBound, s))] - end <- frequency [(1, pure SNothing), (4, SJust <$> choose (s + 1, s + stabilityWindow))] - pure $ ValidityInterval (SlotNo <$> start) (SlotNo <$> end) - --- ================================================================= - -pcGenState :: forall era. Reflect era => Proof era -> GenState era -> PDoc -pcGenState proof gs = - ppRecord - "GenState Summary" - [ ("ValidityInterval", ppValidityInterval (gsValidityInterval gs)) - , ("Keymap", ppInt (Map.size (gsKeys gs))) - , ("Scriptmap", ppInt (Map.size (gsScripts gs))) - , ("PlutusScripts", ppInt (Map.size (gsPlutusScripts gs))) - , ("Datums", ppInt (Map.size (gsDatums gs))) - , ("VI-ScriptMap", ppInt (Map.size (gsVI gs))) - , ("Model", pcModelNewEpochState @era proof (gsModel gs)) - , ("Initial Utxo", ppMap pcTxIn (pcTxOut @era proof) (gsInitialUtxo gs)) - , ("Initial Rewards", ppMap pcCredential pcCoin (gsInitialRewards gs)) - , ("Initial SPoolUView", ppMap pcCredential pcKeyHash (gsInitialDelegations gs)) - , ("Initial PoolParams", ppMap pcKeyHash pcPoolParams (gsInitialPoolParams gs)) - , ("Initial PoolDistr", ppMap pcKeyHash pcIndividualPoolStake (gsInitialPoolDistr gs)) - , ("Stable PoolParams", ppSet pcKeyHash (gsStablePools gs)) - , ("Stable Delegators", ppSet pcCredential (gsStableDelegators gs)) - , ("Previous RegKey", ppSet pcCredential (gsAvoidCred gs)) - , ("GenEnv", ppString "GenEnv ...") - , ("Proof", ppString (show (gsProof gs))) - ] - --- | Helper function for development and debugging in ghci -viewGenState :: Reflect era => Proof era -> GenSize -> Bool -> IO () -viewGenState proof gsize verbose = do - st <- generate (genGenState proof gsize) - when verbose $ print (pcGenState proof st) - -instance Reflect era => PrettyA (GenState era) where prettyA = pcGenState reify - -instance Reflect era => Show (GenState era) where - show x = show (pcGenState reify x) - --- ===================================================================== --- Build an Initial LedgerState for a Trace from a GenState, after --- generating a coherent Trace (a sequence of Transactions that can --- logically be applied one after another) - -initialLedgerState :: forall era. Reflect era => GenState era -> LedgerState era -initialLedgerState gstate = LedgerState utxostate dpstate - where - umap = - UM.unify - (Map.map rdpair (gsInitialRewards gstate)) - Map.empty - (gsInitialDelegations gstate) - Map.empty - utxostate = smartUTxOState pp (UTxO (gsInitialUtxo gstate)) deposited (Coin 0) emptyGovState mempty - dpstate = CertState def pstate dstate - dstate = - DState - umap - Map.empty - genDelegsZero - instantaneousRewardsZero - pstate = PState pools Map.empty Map.empty (fmap (const poolDeposit) pools) - -- In a wellformed LedgerState the deposited equals the obligation - deposited = totalObligation dpstate (utxostate ^. utxosGovStateL) - pools = gsInitialPoolParams gstate - pp = mPParams (gsModel gstate) - keyDeposit = pp ^. ppKeyDepositL - !poolDeposit = pp ^. ppPoolDepositL - rdpair rew = UM.RDPair (UM.compactCoinOrError rew) (UM.compactCoinOrError keyDeposit) - --- ============================================= --- Generators of inter-related items - --- Adds to the gsKeys -genKeyHash :: Reflect era => GenRS era (KeyHash kr (EraCrypto era)) -genKeyHash = do - keyPair <- lift arbitrary - let keyHash = hashKey $ vKey keyPair - modifyGenStateKeys (Map.insert keyHash keyPair) - pure $ coerceKeyRole keyHash - --- Adds to the gsDatums -genDatumWithHash :: Era era => GenRS era (DataHash (EraCrypto era), Data era) -genDatumWithHash = do - datum <- lift arbitrary - let datumHash = hashData datum - modifyGenStateDatums (Map.insert datumHash datum) - pure (datumHash, datum) - -genFreshKeyHash :: Reflect era => GenRS era (KeyHash kr (EraCrypto era)) -genFreshKeyHash = go (100 :: Int) -- avoid unlikely chance of generated hash collisions. - where - go n - | n <= 0 = error "Something very unlikely happened" - | otherwise = do - avoidKeys <- gets gsAvoidKey - kh <- genKeyHash - if coerceKeyRole kh `Set.member` avoidKeys - then go $ n - 1 - else return kh - --- =========================================================== --- Generate Era agnostic Scripts - --- Adds to gsScripts and gsPlutusScripts -genScript :: Reflect era => Proof era -> PlutusPurposeTag -> GenRS era (ScriptHash (EraCrypto era)) -genScript proof tag = case proof of - Conway -> elementsT [genTimelockScript proof, genPlutusScript proof tag] - Babbage -> elementsT [genTimelockScript proof, genPlutusScript proof tag] - Alonzo -> elementsT [genTimelockScript proof, genPlutusScript proof tag] - Mary -> genTimelockScript proof - Allegra -> genTimelockScript proof - Shelley -> genMultiSigScript proof - --- Adds to gsScripts -genTimelockScript :: forall era. Reflect era => Proof era -> GenRS era (ScriptHash (EraCrypto era)) -genTimelockScript proof = do - vi@(ValidityInterval mBefore mAfter) <- gets gsValidityInterval - -- We need to limit how deep these timelocks can go, otherwise this generator will - -- diverge. It also has to stay very shallow because it grows too fast. - let genNestedTimelock k - | k > 0 = - elementsT $ - nonRecTimelocks ++ [requireAllOf k, requireAnyOf k, requireMOf k] - | otherwise = elementsT nonRecTimelocks - nonRecTimelocks :: [GenRS era (Timelock era)] - nonRecTimelocks = - [ r - | SJust r <- - [ requireTimeStart <$> mBefore - , requireTimeExpire <$> mAfter - , SJust requireSignature - ] - ] - requireSignature = RequireSignature <$> genKeyHash - requireAllOf k = do - n <- lift nonNegativeSingleDigitInt - RequireAllOf . Seq.fromList <$> replicateM n (genNestedTimelock (k - 1)) - requireAnyOf k = do - n <- lift positiveSingleDigitInt - RequireAnyOf . Seq.fromList <$> replicateM n (genNestedTimelock (k - 1)) - requireMOf k = do - n <- lift nonNegativeSingleDigitInt - m <- lift $ choose (0, n) - RequireMOf m . Seq.fromList <$> replicateM n (genNestedTimelock (k - 1)) - requireTimeStart (SlotNo validFrom) = do - minSlotNo <- lift $ choose (minBound, validFrom) - pure $ RequireTimeStart (SlotNo minSlotNo) - requireTimeExpire (SlotNo validTill) = do - maxSlotNo <- lift $ choose (validTill, maxBound) - pure $ RequireTimeExpire (SlotNo maxSlotNo) - tlscript <- genNestedTimelock (2 :: Natural) - let corescript :: Script era - corescript = case proof of - Conway -> TimelockScript tlscript - Babbage -> TimelockScript tlscript - Alonzo -> TimelockScript tlscript - Mary -> tlscript - Allegra -> tlscript - Shelley -> error "Shelley does not have TimeLock scripts" - - let scriptHash = hashScript @era corescript - insertOrCreate x Nothing = Just (Set.singleton x) - insertOrCreate x (Just s) = Just (Set.insert x s) - modifyGenStateScripts (Map.insert scriptHash corescript) - modifyGenStateVI (Map.alter (insertOrCreate scriptHash) vi) - pure scriptHash - --- Adds to gsScripts -genMultiSigScript :: forall era. Reflect era => Proof era -> GenRS era (ScriptHash (EraCrypto era)) -genMultiSigScript proof = do - let genNestedMultiSig k - | k > 0 = - elementsT $ - nonRecTimelocks ++ [requireAllOf k, requireAnyOf k, requireMOf k] - | otherwise = elementsT nonRecTimelocks - nonRecTimelocks = [requireSignature] - requireSignature = Shelley.RequireSignature @era <$> genKeyHash - requireAllOf k = do - n <- lift nonNegativeSingleDigitInt - Shelley.RequireAllOf <$> replicateM n (genNestedMultiSig (k - 1)) - requireAnyOf k = do - n <- lift positiveSingleDigitInt - Shelley.RequireAnyOf <$> replicateM n (genNestedMultiSig (k - 1)) - requireMOf k = do - n <- lift nonNegativeSingleDigitInt - m <- lift $ choose (0, n) - Shelley.RequireMOf m <$> replicateM n (genNestedMultiSig (k - 1)) - msscript <- genNestedMultiSig (2 :: Natural) - let corescript :: Script era - corescript = case proof of - Shelley -> msscript - _ -> error (show proof ++ " does not have MultiSig scripts") - let scriptHash = hashScript @era corescript - modifyGenStateScripts (Map.insert scriptHash corescript) - pure scriptHash - --- Adds to gsPlutusScripts -genPlutusScript :: - forall era. - Reflect era => - Proof era -> - PlutusPurposeTag -> - GenRS era (ScriptHash (EraCrypto era)) -genPlutusScript proof tag = do - isValid <- lift $ frequency [(5, pure False), (95, pure True)] - -- Plutus scripts alwaysSucceeds needs at least numArgs, while - -- alwaysFails needs exactly numArgs to have the desired affect. - -- For reasons unknown, this number differs from Alonzo to Babbage - -- Perhaps because Babbage is using PlutusV2 scripts? - let numArgs = case (proof, tag) of - (Conway, Spending) -> 2 - (Conway, _) -> 1 - (Babbage, Spending) -> 2 - (Babbage, _) -> 1 - (_, Spending) -> 3 - (_, _) -> 2 - -- While using varying number of arguments for alwaysSucceeds we get - -- varying script hashes, which helps with the fuzziness - let mlanguage = primaryLanguage proof - script <- - if isValid - then alwaysTrue proof mlanguage . (+ numArgs) <$> lift (elements [0, 1, 2, 3 :: Natural]) - else pure $ alwaysFalse proof mlanguage numArgs - - let corescript :: Script era - corescript = case proof of - Alonzo -> script - Babbage -> script - Conway -> script - _ -> - error - ( "PlutusScripts are available starting in the Alonzo era. " - ++ show proof - ++ " does not support PlutusScripts." - ) - scriptHash = hashScript @era corescript - modifyPlutusScripts (Map.insert (scriptHash, tag) (IsValid isValid, corescript)) - pure scriptHash - --- ====================================================================== --- Generators of Transaction components --- ======================================================================= - --- | Generate a credential that can be used for supplied purpose (in case of --- plutus scripts), while occasionally picking out randomly from previously --- generated set. Returns the credential --- Adds to both gsKeys and gsScripts and gsPlutusScript --- via genKeyHash and genScript -genCredential :: - forall era kr. Reflect era => PlutusPurposeTag -> GenRS era (Credential kr (EraCrypto era)) -genCredential tag = - frequencyT - [ (35, KeyHashObj <$> genKeyHash') - , (35, ScriptHashObj <$> genScript') - , (10, pickExistingKeyHash) - , (20, pickExistingScript) - ] - where - genKeyHash' = do - kh <- genFreshKeyHash -- We need to avoid some key credentials - case tag of - Rewarding -> modifyGenStateInitialRewards (Map.insert (KeyHashObj kh) (Coin 0)) - _ -> pure () - return $ coerceKeyRole kh - genScript' = f (100 :: Int) - where - f n - | n <= 0 = error "Failed to generate a fresh script hash" - | otherwise = do - sh <- genScript @era reify tag - initialRewards <- gets gsInitialRewards - avoidCredentials <- gets gsAvoidCred - let newcred = ScriptHashObj sh - if Map.notMember newcred initialRewards && Set.notMember newcred avoidCredentials - then do - case tag of - Rewarding -> modifyGenStateInitialRewards (Map.insert newcred (Coin 0)) - _ -> pure () - return sh - else f $ n - 1 - pickExistingKeyHash = - KeyHashObj <$> do - keysMap <- gsKeys <$> get - lift (genMapElem keysMap) >>= \case - Just (k, _) -> pure $ coerceKeyRole k - Nothing -> genKeyHash' - pickExistingScript = - ScriptHashObj - <$> elementsT [pickExistingPlutusScript, pickExistingTimelockScript] - pickExistingPlutusScript = do - plutusScriptsMap <- - Map.filterWithKey (\(_, t) _ -> t == tag) . gsPlutusScripts <$> get - lift (genMapElem plutusScriptsMap) >>= \case - Just ((h, _), _) -> pure h - Nothing -> genScript reify tag - pickExistingTimelockScript = do - -- Only pick one if it matches the - vi <- gets gsValidityInterval -- current ValidityInterval - vimap <- gets gsVI - case Map.lookup vi vimap of - Nothing -> genScript @era reify tag - Just s -> - lift (genSetElem s) >>= \case - Nothing -> genScript reify tag - Just hash -> pure hash - --- Return a fresh credential, one that is not a member of the set 'old'. --- One gets 'tries' chances to generate a fresh one, before an error is raised. --- This avoids silent infinite loops. -genFreshCredential :: - forall era kr. - Reflect era => - Int -> - PlutusPurposeTag -> - Set (Credential kr (EraCrypto era)) -> - GenRS era (Credential kr (EraCrypto era)) -genFreshCredential 0 _tag _old = error "Ran out of tries in genFreshCredential." -genFreshCredential tries0 tag old = go tries0 - where - go tries = do - c <- genCredential tag - if Set.member c old - then go (tries - 1) - else pure c - -genFreshRegCred :: - Reflect era => PlutusPurposeTag -> GenRS era (Credential 'Staking (EraCrypto era)) -genFreshRegCred tag = do - old <- gets (Map.keysSet . gsInitialRewards) - avoid <- gets gsAvoidCred - rewards <- gets $ Map.keysSet . mRewards . gsModel - cred <- genFreshCredential 100 tag $ old <> avoid <> rewards - modifyGenStateAvoidCred (Set.insert cred) - pure cred - -genPoolParams :: - Reflect era => - KeyHash 'StakePool (EraCrypto era) -> - GenRS era (PoolParams (EraCrypto era)) -genPoolParams ppId = do - ppVrf <- lift arbitrary - ppPledge <- lift genPositiveVal - ppCost <- lift genPositiveVal - ppMargin <- lift arbitrary - ppRewardAccount <- RewardAccount Testnet <$> genFreshRegCred Rewarding - let ppOwners = mempty - let ppRelays = mempty - let ppMetadata = SNothing - pure PoolParams {..} - --- | Generate a 'n' fresh credentials (ones not in the set 'old'). We get 'tries' chances, --- if it doesn't work in 'tries' attempts then quit with an error. Better to raise an error --- than go into an infinite loop. -genFreshCredentials :: - forall era kr. - Reflect era => - Int -> - Int -> - PlutusPurposeTag -> - Set (Credential kr (EraCrypto era)) -> - [Credential kr (EraCrypto era)] -> - GenRS era [Credential kr (EraCrypto era)] -genFreshCredentials _n 0 _tag _old _ans = error "Ran out of tries in genFreshCredentials." -genFreshCredentials n0 tries tag old0 ans0 = go n0 old0 ans0 - where - go 0 _ ans = pure ans - go n old ans = do - c <- genFreshCredential tries tag old - go (n - 1) (Set.insert c old) (c : ans) - --- | Use this function to get a new pool that should not be used in the future transactions -genNewPool :: - forall era. - Reflect era => - GenRS - era - ( KeyHash 'StakePool (EraCrypto era) - , PoolParams (EraCrypto era) - , IndividualPoolStake (EraCrypto era) - ) -genNewPool = do - poolId <- genFreshKeyHash - poolParam <- genPoolParams poolId - percent <- lift $ choose (0, 1 :: Float) - let stake = IndividualPoolStake @(EraCrypto era) (toRational percent) (ppVrf poolParam) - modifyGenStateAvoidKey (Set.insert (coerceKeyRole poolId)) - pure (poolId, poolParam, stake) - --- | Initialize (or overwrite if they are not empty) the Stable fields. It is --- intended that this be called just once at the beginning of a trace generation. -initStableFields :: forall era. Reflect era => GenRS era () -initStableFields = do - GenEnv {geSize} <- ask - hashes <- replicateM (maxStablePools geSize) $ do - pp <- asks gePParams - (kh, poolParams, ips) <- genNewPool - modifyGenStateStablePools (Set.insert kh) - modifyGenStateInitialPoolParams (Map.insert kh poolParams) - modifyGenStateInitialPoolDistr (Map.insert kh ips) - modifyModelPoolParams (Map.insert kh poolParams) - modifyModelKeyDeposits kh (pp ^. ppPoolDepositL) - return kh - - -- This incantation gets a list of fresh (not previously generated) Credential - credentials <- replicateM (maxStablePools geSize) $ do - old' <- gets (Map.keysSet . gsInitialRewards) - prev <- gets gsAvoidCred - cred <- genFreshCredential 100 Rewarding (Set.union old' prev) - modifyGenStateStableDelegators (Set.insert cred) - modifyGenStateInitialRewards (Map.insert cred (Coin 0)) - return cred - let f :: Credential 'Staking (EraCrypto era) -> KeyHash 'StakePool (EraCrypto era) -> GenRS era () - f cred kh = do - pp <- asks gePParams - let keyDeposit = pp ^. ppKeyDepositL - modifyModelDelegations (Map.insert cred kh) - modifyModelRewards (Map.insert cred (Coin 0)) - modifyModelDeposited (<+> keyDeposit) - modifyKeyDeposits cred keyDeposit - modifyGenStateInitialDelegations (Map.insert cred kh) - zipWithM_ f credentials hashes - --- ============================================= --- Generators of inter-related items - --- Adds to the rewards of the ModelNewEpochState. This used exclusively to generate Withdrawals, so --- we mark these as ones to avoid in the future. Especialy when generating DeRegKey. -genRewards :: Reflect era => GenRS era (RewardAccounts (EraCrypto era)) -genRewards = do - wmax <- gets (withdrawalMax . geSize . gsGenEnv) - n <- lift $ choose (1, wmax) - -- we need a fresh credential, one that was not previously - -- generated here, or one that arose from gsAvoidCred (i.e. prev) - old <- gets (Map.keysSet . gsInitialRewards) - prev <- gets gsAvoidCred - credentials <- genFreshCredentials n 100 Rewarding (Set.union old prev) [] - newRewards <- Map.fromList <$> mapM (\x -> (,) x <$> lift genRewardVal) credentials - modifyModelRewards (\rewards -> eval (rewards ⨃ newRewards)) -- Prefers coins in newrewards - pp <- asks gePParams - sequence_ (map (\cred -> modifyKeyDeposits cred (pp ^. ppKeyDepositL)) credentials) - modifyGenStateInitialRewards (\rewards -> eval (rewards ⨃ newRewards)) - modifyGenStateAvoidCred (Set.union (Set.fromList credentials)) - pure newRewards - -genRetirementHash :: forall era. Reflect era => GenRS era (KeyHash 'StakePool (EraCrypto era)) -genRetirementHash = do - m <- gets (mPoolParams . gsModel) - honestKhs <- gets gsStablePools - avoidKey <- gets gsAvoidKey - res <- lift . genMapElemWhere m 10 $ \kh _ -> - kh `Set.notMember` honestKhs && kh `Set.notMember` avoidKey - case res of - Just x -> do - modifyGenStateAvoidKey (Set.insert (fst x)) - -- if it is retiring, we should probably avoid it in the future - pure $ fst x - Nothing -> do - (poolid, poolparams, stake) <- genNewPool - - -- add the Pool to the initial state - modifyGenStateInitialPoolParams (Map.insert poolid poolparams) - modifyGenStateInitialPoolDistr (Map.insert poolid stake) - - -- add the Pool to the Model - modifyModelPoolParams (Map.insert poolid poolparams) - modifyModelPoolDistr (Map.insert poolid stake) - pure poolid - --- Adds to the mPoolParams and the mPoolDistr of the Model, and the initial set of objects for Traces -genPool :: - forall era. - Reflect era => - GenRS era (KeyHash 'StakePool (EraCrypto era), PoolParams (EraCrypto era)) -genPool = frequencyT [(10, genNew), (90, pickExisting)] - where - genNew = do - (kh, pp, ips) <- genNewPool - -- add pool to initial state - modifyGenStateInitialPoolParams (Map.insert kh pp) - modifyGenStateInitialPoolDistr (Map.insert kh ips) - -- update the model - modifyModelPoolParams (Map.insert kh pp) - return (kh, pp) - pickExisting = do - psStakePoolParams <- gets (mPoolParams . gsModel) - avoidKey <- gets gsAvoidKey - lift (genMapElemWhere psStakePoolParams 10 (\kh _ -> kh `Set.notMember` avoidKey)) >>= \case - Nothing -> genNew - Just (kh, pp) -> pure (kh, pp) diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/Indexed.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/Indexed.hs deleted file mode 100644 index bbfbc3bec9c..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/Indexed.hs +++ /dev/null @@ -1,69 +0,0 @@ -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE KindSignatures #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} -{-# OPTIONS_GHC -fno-warn-orphans #-} - --- | Tools for building unique Key (and related types) by just supplying an Int --- Each Int returns a different Key (or related type) --- Useful when writing unit tests -module Test.Cardano.Ledger.Generic.Indexed where - -import Cardano.Crypto.DSIGN.Class () -import Cardano.Ledger.Core -import Cardano.Ledger.Credential (Credential (..), StakeReference (..)) -import Cardano.Ledger.Crypto (Crypto) -import qualified Cardano.Ledger.Crypto as CC (Crypto) -import Cardano.Ledger.Keys (KeyHash, KeyRole (Witness), SignKeyDSIGN, VKey, WitVKey (..), hashKey) -import Cardano.Ledger.SafeHash (SafeHash) -import Test.Cardano.Ledger.Core.KeyPair (KeyPair (..), mkWitnessVKey) -import Test.Cardano.Ledger.Generic.Proof (GoodCrypto, Proof (..)) -import Test.Cardano.Ledger.Shelley.Utils (RawSeed (..), mkKeyPair) - --- ======================================================= --- Keys and KeyHashes - --- | A signing key -newtype SKey (kr :: KeyRole) c = SKey (SignKeyDSIGN c) - --- By changing the parameter 'n', we get a different keyPair -theKeyPair :: Crypto c => Int -> KeyPair kr c -theKeyPair n = KeyPair a b - where - (b, a) = mkKeyPair (RawSeed 0 0 0 0 (fromIntegral n)) - -theVKey :: CC.Crypto c => Int -> VKey kr c -theVKey n = vKey (theKeyPair n) - -theSKey :: forall c kr. CC.Crypto c => Int -> SKey kr c -theSKey n = SKey (sKey (theKeyPair @c n)) - -theKeyHash :: CC.Crypto c => Int -> KeyHash kr c -theKeyHash n = hashKey (theVKey n) - -theWitVKey :: - GoodCrypto c => - Int -> - SafeHash c EraIndependentTxBody -> - WitVKey 'Witness c -theWitVKey n hash = mkWitnessVKey hash (theKeyPair n) - -theKeyHashObj :: CC.Crypto c => Int -> Credential kr c -theKeyHashObj n = KeyHashObj . hashKey . vKey $ theKeyPair n - -aScriptHashObj :: - forall era kr. EraScript era => Proof era -> Script era -> Credential kr (EraCrypto era) -aScriptHashObj _wit s = ScriptHashObj . hashScript @era $ s - -theStakeReference :: CC.Crypto c => Int -> StakeReference c -theStakeReference n = (StakeRefBase . KeyHashObj . hashKey) (theVKey n) diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/MockChain.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/MockChain.hs deleted file mode 100644 index 6b2f9a0ceba..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/MockChain.hs +++ /dev/null @@ -1,264 +0,0 @@ -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} - -module Test.Cardano.Ledger.Generic.MockChain where - -import Cardano.Ledger.BaseTypes (BlocksMade (..), ShelleyBase) -import Cardano.Ledger.Keys (KeyHash, KeyRole (..)) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState ( - EpochState (..), - LedgerState (..), - NewEpochState (..), - StashedAVVMAddresses, - curPParamsEpochStateL, - ) -import Cardano.Ledger.Shelley.RewardUpdate (PulsingRewUpdate) -import Cardano.Ledger.Shelley.Rules ( - LedgerEnv, - RupdEnv, - ShelleyLEDGERS, - ShelleyLedgersEnv (..), - ShelleyLedgersEvent, - ShelleyLedgersPredFailure, - ShelleyTICK, - ShelleyTickEvent, - ShelleyTickPredFailure, - ) -import Cardano.Slotting.Slot (EpochNo, SlotNo) -import Control.State.Transition ( - Embed (..), - STS (..), - TRC (..), - judgmentContext, - trans, - (?!), - ) -import qualified Data.Map.Strict as Map -import Data.Maybe.Strict (StrictMaybe) -import Data.Sequence.Internal (Seq) -import Data.Sequence.Strict (StrictSeq (..), fromStrict) -import GHC.Generics (Generic) -import Lens.Micro ((^.)) -import NoThunks.Class (NoThunks, ThunkInfo, noThunks) -import Test.Cardano.Ledger.Generic.Functions (TotalAda (..)) -import Test.Cardano.Ledger.Generic.PrettyCore ( - PDoc, - PrettyA (..), - pcKeyHash, - pcNewEpochState, - pcSlotNo, - ppInt, - ppRecord, - ppShelleyLedgersPredFailure, - ppTickPredicateFailure, - ) -import Test.Cardano.Ledger.Generic.Proof (Proof (..), Reflect (reify)) - --- ================================================ - -data MOCKCHAIN era -- This is a Testing only STS instance - -type instance EraRule "MOCKCHAIN" era = MOCKCHAIN era - -data MockChainFailure era - = MockChainFromTickFailure !(ShelleyTickPredFailure era) - | MockChainFromLedgersFailure !(ShelleyLedgersPredFailure era) - | BlocksOutOfOrder - !SlotNo -- The last applied block SlotNo - !SlotNo -- The candidate block SlotNo - -data MockChainEvent era - = MockChainFromTickEvent !(ShelleyTickEvent era) - | MockChainFromLedgersEvent !(ShelleyLedgersEvent era) - -data MockBlock era = MockBlock - { mbIssuer :: !(KeyHash 'StakePool (EraCrypto era)) - , mbSlot :: !SlotNo - , mbTrans :: !(StrictSeq (Tx era)) - } - -data MockChainState era = MockChainState - { mcsNes :: !(NewEpochState era) - , mcsTickNes :: !(NewEpochState era) - , mcsLastBlock :: !SlotNo - , mcsCount :: !Int -- Counts the blocks made - } - -deriving instance - ( EraTxOut era - , Eq (StashedAVVMAddresses era) - , Eq (GovState era) - ) => - Eq (MockChainState era) - -instance Show (MockChainState era) where - show (MockChainState nes _ slot count) = - show count ++ " " ++ show slot ++ "\n " ++ show (nesBcur nes) - -instance Show (MockBlock era) where - show (MockBlock is sl _) = show is ++ " " ++ show sl - -instance Reflect era => TotalAda (MockChainState era) where - totalAda (MockChainState nes _ _ _) = totalAda nes - -deriving instance Generic (MockChainState era) - -instance (Era era, NoThunks (NewEpochState era)) => NoThunks (MockChainState era) - --- ====================================================================== - -instance - ( EraGov era - , STS (ShelleyTICK era) - , State (EraRule "TICK" era) ~ NewEpochState era - , Signal (EraRule "TICK" era) ~ SlotNo - , Environment (EraRule "TICK" era) ~ () - , Embed (EraRule "TICK" era) (MOCKCHAIN era) - , Signal (EraRule "LEDGERS" era) ~ Seq (Tx era) - , Environment (EraRule "LEDGERS" era) ~ ShelleyLedgersEnv era - , State (EraRule "LEDGERS" era) ~ LedgerState era - , Embed (EraRule "LEDGERS" era) (MOCKCHAIN era) - , Signal (EraRule "LEDGER" era) ~ Tx era - , Environment (EraRule "LEDGER" era) ~ LedgerEnv era - , State (EraRule "LEDGER" era) ~ LedgerState era - , Eq (PredicateFailure (EraRule "LEDGER" era)) - , Show (PredicateFailure (EraRule "LEDGER" era)) - ) => - STS (MOCKCHAIN era) - where - type State (MOCKCHAIN era) = MockChainState era - type Signal (MOCKCHAIN era) = (MockBlock era) - type Environment (MOCKCHAIN era) = () - type BaseM (MOCKCHAIN era) = ShelleyBase - type PredicateFailure (MOCKCHAIN era) = MockChainFailure era - type Event (MOCKCHAIN era) = MockChainEvent era - initialRules = [error "INITIAL RULE CALLED IN MOCKCHAIN"] - transitionRules = [chainTransition] - where - chainTransition = do - TRC (_, MockChainState nes _ lastSlot count, MockBlock issuer slot txs) <- judgmentContext - lastSlot < slot ?! BlocksOutOfOrder lastSlot slot - - nes' <- trans @(EraRule "TICK" era) $ TRC ((), nes, slot) - - let NewEpochState _ _ (BlocksMade current) epochState _ _ _ = nes' - EpochState account ledgerState _ _ = epochState - pparams = epochState ^. curPParamsEpochStateL - - let newblocksmade = BlocksMade (Map.unionWith (+) current (Map.singleton issuer 1)) - - newledgerState <- - trans @(EraRule "LEDGERS" era) $ TRC (LedgersEnv slot pparams account, ledgerState, fromStrict txs) - - let newEpochstate = epochState {esLState = newledgerState} - newNewEpochState = nes' {nesEs = newEpochstate, nesBcur = newblocksmade} - - pure (MockChainState newNewEpochState nes' slot (count + 1)) - --- =========================== --- Embed instances - -instance - ( STS (ShelleyTICK era) - , Signal (EraRule "RUPD" era) ~ SlotNo - , State (EraRule "RUPD" era) ~ StrictMaybe (PulsingRewUpdate (EraCrypto era)) - , Environment (EraRule "RUPD" era) ~ RupdEnv era - , State (EraRule "NEWEPOCH" era) ~ NewEpochState era - , Signal (EraRule "NEWEPOCH" era) ~ EpochNo - , State (EraRule "NEWEPOCH" era) ~ NewEpochState era - , Environment (EraRule "NEWEPOCH" era) ~ () - ) => - Embed (ShelleyTICK era) (MOCKCHAIN era) - where - wrapFailed = MockChainFromTickFailure - wrapEvent = MockChainFromTickEvent - -instance - ( STS (ShelleyLEDGERS era) - , State (EraRule "LEDGER" era) ~ LedgerState era - , Environment (EraRule "LEDGER" era) ~ LedgerEnv era - , Signal (EraRule "LEDGER" era) ~ Tx era - ) => - Embed (ShelleyLEDGERS era) (MOCKCHAIN era) - where - wrapFailed = MockChainFromLedgersFailure - wrapEvent = MockChainFromLedgersEvent - --- ================================================================ - -deriving instance - (Show (ShelleyTickEvent era), Show (ShelleyLedgersEvent era)) => Show (MockChainEvent era) - -deriving instance - (Eq (ShelleyTickEvent era), Eq (ShelleyLedgersEvent era)) => Eq (MockChainEvent era) - -deriving instance - (Show (ShelleyTickPredFailure era), Show (ShelleyLedgersPredFailure era)) => - Show (MockChainFailure era) - -deriving instance - (Eq (ShelleyTickPredFailure era), Eq (ShelleyLedgersPredFailure era)) => Eq (MockChainFailure era) - -ppMockChainState :: - Reflect era => - MockChainState era -> - PDoc -ppMockChainState (MockChainState nes _ sl count) = - ppRecord - "MockChainState" - [ ("NewEpochState", pcNewEpochState reify nes) - , ("LastBlock", pcSlotNo sl) - , ("Count", ppInt count) - ] - -instance Reflect era => PrettyA (MockChainState era) where - prettyA = ppMockChainState - -ppMockBlock :: MockBlock era -> PDoc -ppMockBlock (MockBlock iss sl txs) = - ppRecord - "MockBock" - [ ("Issuer", pcKeyHash iss) - , ("Slot", pcSlotNo sl) - , ("Transactions", ppInt (length txs)) - ] - -instance PrettyA (MockBlock era) where prettyA = ppMockBlock - -ppMockChainFailure :: Reflect era => Proof era -> MockChainFailure era -> PDoc -ppMockChainFailure proof x = case proof of - Conway -> help x - Babbage -> help x - Alonzo -> help x - Mary -> help x - Allegra -> help x - Shelley -> help x - where - help (MockChainFromTickFailure y) = ppTickPredicateFailure y - help (MockChainFromLedgersFailure y) = ppShelleyLedgersPredFailure proof y - help (BlocksOutOfOrder lastslot cand) = - ppRecord - "BlocksOutOfOrder" - [ ("Last applied block", pcSlotNo lastslot) - , ("Candidate block", pcSlotNo cand) - ] - -noThunksGen :: Proof era -> MockChainState era -> IO (Maybe ThunkInfo) -noThunksGen Conway = noThunks [] -noThunksGen Babbage = noThunks [] -noThunksGen Alonzo = noThunks [] -noThunksGen Mary = noThunks [] -noThunksGen Allegra = noThunks [] -noThunksGen Shelley = noThunks [] diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/ModelState.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/ModelState.hs deleted file mode 100644 index 6d6fbb58079..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/ModelState.hs +++ /dev/null @@ -1,451 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE FunctionalDependencies #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE ViewPatterns #-} - --- | The data types in this file constitute a Model of the NewEpochState --- sufficient for generating transactions that can run in the --- MockChain STS instance. This is a model so we drop some details of the --- real NewEpochState, and add some additional details specific to Tx generation. --- Dropped details include --- 1) Efficiency concerns --- a) Pulsing Reward updates --- b) Inverse of the Rewards Map --- c) esNonMyopic field --- d) _stakeDistro, Incremental Stake distribution --- 2) Transaction features that make changes to the Protocol Parameters --- 3) Using Hashes of the TxBody as the Ix, instead we maintain an index of --- an arbitrary Hash to the sequence (Count) in which the TxBody was generated. --- Additional details --- 1) Utxo entries to pay fees. It is incredibly hard to generate Txs with the --- correct fees. So we keep a small set of UtxoEntrys, where it is allowed to --- mutate the value field of the TxOut. We have to be sure these entries are carefully --- managed, as they do not follow the rules of the real world. --- Additional comments --- 1) We include data in the Model for Epoch boundary computations, but we do not --- do anything with them at this time. -module Test.Cardano.Ledger.Generic.ModelState where - -import Cardano.Ledger.BaseTypes (BlocksMade (..)) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Credential (Credential (..)) -import Cardano.Ledger.EpochBoundary (SnapShots, emptySnapShots) -import Cardano.Ledger.Keys ( - GenDelegs (..), - KeyHash (..), - KeyRole (..), - ) -import Cardano.Ledger.PoolDistr (IndividualPoolStake (..), PoolDistr (..)) -import Cardano.Ledger.PoolParams (PoolParams (..)) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState ( - AccountState (..), - CertState (..), - DState (..), - EpochState (..), - IncrementalStake (..), - InstantaneousRewards (..), - LedgerState (..), - NewEpochState (..), - PState (..), - StashedAVVMAddresses, - UTxOState (..), - VState (..), - completeRupd, - curPParamsEpochStateL, - prevPParamsEpochStateL, - smartUTxOState, - ) -import Cardano.Ledger.Shelley.PoolRank (NonMyopic (..)) -import Cardano.Ledger.Shelley.RewardUpdate (PulsingRewUpdate (..), RewardUpdate (..)) -import Cardano.Ledger.Slot (EpochNo (..)) -import Cardano.Ledger.TxIn (TxId (..), TxIn (..)) -import qualified Cardano.Ledger.UMap as UM -import Cardano.Ledger.UTxO (UTxO (..)) -import Control.Monad.Trans () -import Data.Default.Class (Default (def)) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import qualified Data.Maybe as Maybe -import Data.Maybe.Strict (StrictMaybe (..)) -import Data.Text (Text) -import GHC.Natural (Natural) -import Lens.Micro ((&), (.~)) -import Lens.Micro.Extras (view) -import Test.Cardano.Ledger.Generic.PrettyCore ( - PDoc, - PrettyA (..), - credSummary, - keyHashSummary, - pcAccountState, - pcCoin, - pcCredential, - pcIndividualPoolStake, - pcKeyHash, - pcPoolParams, - pcTxId, - pcTxIn, - pcTxOut, - ppEpochNo, - ppInt, - ppMap, - ppNatural, - ppRecord, - ppString, - ) -import Test.Cardano.Ledger.Generic.Proof ( - BabbageEra, - Proof (..), - Reflect (..), - StandardCrypto, - ) -import Test.Cardano.Ledger.Shelley.Utils (runShelleyBase) - --- ============================================= - --- | MUtxo = Model UTxO. In the Model we represent the --- UTxO as a Map (not a newtype around a Map) -type MUtxo era = Map (TxIn (EraCrypto era)) (TxOut era) - -pcMUtxo :: Reflect era => Proof era -> MUtxo era -> PDoc -pcMUtxo proof m = ppMap pcTxIn (pcTxOut proof) m - --- =========================================================== - -data ModelNewEpochState era = ModelNewEpochState - { -- PState fields - mPoolParams :: !(Map (KeyHash 'StakePool (EraCrypto era)) (PoolParams (EraCrypto era))) - , mPoolDeposits :: !(Map (KeyHash 'StakePool (EraCrypto era)) Coin) - , -- DState state fields - mRewards :: !(Map (Credential 'Staking (EraCrypto era)) Coin) - , mDelegations :: !(Map (Credential 'Staking (EraCrypto era)) (KeyHash 'StakePool (EraCrypto era))) - , mKeyDeposits :: !(Map (Credential 'Staking (EraCrypto era)) Coin) - , -- _fGenDelegs, _genDelegs, and _irwd, are for - -- changing the PParams and are abstracted away - - -- UTxO state fields (and extra stuff) - mUTxO :: !(Map (TxIn (EraCrypto era)) (TxOut era)) - , mMutFee :: !(Map (TxIn (EraCrypto era)) (TxOut era)) - -- ^ The current UTxO - , -- _ppups is for changing PParams, and _stakeDistro is for efficiency - -- and are abstracted away. - - -- EpochState fields - mAccountState :: !AccountState - , -- esPrevPp and esPp are for changing PParams - -- esNonMyopic is for efficiency, and all are abstracted away - - -- Model NewEpochState fields - mPoolDistr :: !(Map (KeyHash 'StakePool (EraCrypto era)) (IndividualPoolStake (EraCrypto era))) - , mPParams :: !(PParams era) - , mDeposited :: !Coin - , mFees :: !Coin - , mCount :: !Int - , mIndex :: !(Map Int (TxId (EraCrypto era))) - , -- below here NO EFFECT until we model EpochBoundary - mFPoolParams :: !(Map (KeyHash 'StakePool (EraCrypto era)) (PoolParams (EraCrypto era))) - , mRetiring :: !(Map (KeyHash 'StakePool (EraCrypto era)) EpochNo) - , mSnapshots :: !(SnapShots (EraCrypto era)) - , mEL :: !EpochNo -- The current epoch, - , mBprev :: !(Map (KeyHash 'StakePool (EraCrypto era)) Natural) -- Blocks made before current epoch, NO EFFECT until we model EpochBoundar - , mBcur :: !(Map (KeyHash 'StakePool (EraCrypto era)) Natural) - , mRu :: !(StrictMaybe (RewardUpdate (EraCrypto era))) -- Possible reward update - } - -type UtxoEntry era = (TxIn (EraCrypto era), TxOut era) - -type Model era = ModelNewEpochState era - --- ====================================================================== --- Empty or default values, these are usefull for many things, not the --- least of, for making Model instances. - -blocksMadeZero :: BlocksMade c -blocksMadeZero = BlocksMade Map.empty - -poolDistrZero :: PoolDistr c -poolDistrZero = PoolDistr Map.empty - -accountStateZero :: AccountState -accountStateZero = AccountState (Coin 0) (Coin 0) - -utxoZero :: UTxO era -utxoZero = UTxO Map.empty - -genDelegsZero :: GenDelegs c -genDelegsZero = GenDelegs Map.empty - -instantaneousRewardsZero :: InstantaneousRewards c -instantaneousRewardsZero = InstantaneousRewards Map.empty Map.empty mempty mempty - -dStateZero :: DState c -dStateZero = - DState - { dsUnified = UM.empty - , dsFutureGenDelegs = Map.empty - , dsGenDelegs = genDelegsZero - , dsIRewards = instantaneousRewardsZero - } - -pStateZero :: PState c -pStateZero = - PState - { psStakePoolParams = Map.empty - , psFutureStakePoolParams = Map.empty - , psRetiring = Map.empty - , psDeposits = Map.empty - } - -dPStateZero :: CertState era -dPStateZero = CertState def pStateZero dStateZero - -incrementalStakeZero :: IncrementalStake c -incrementalStakeZero = IStake Map.empty Map.empty - -nonMyopicZero :: NonMyopic c -nonMyopicZero = NonMyopic Map.empty mempty - -pParamsZeroByProof :: Proof era -> PParams era -pParamsZeroByProof Conway = def -pParamsZeroByProof Babbage = def -pParamsZeroByProof Alonzo = def -pParamsZeroByProof Mary = def -pParamsZeroByProof Allegra = def -pParamsZeroByProof Shelley = def - -uTxOStateZero :: forall era. Reflect era => UTxOState era -uTxOStateZero = - smartUTxOState - pParamsZero - utxoZero - mempty - mempty - emptyGovState - mempty - -pParamsZero :: Reflect era => PParams era -pParamsZero = lift pParamsZeroByProof - -ledgerStateZero :: forall era. Reflect era => LedgerState era -ledgerStateZero = LedgerState uTxOStateZero dPStateZero - -epochStateZero :: Reflect era => EpochState era -epochStateZero = - EpochState - accountStateZero - ledgerStateZero - emptySnapShots - nonMyopicZero - & curPParamsEpochStateL .~ pParamsZero - & prevPParamsEpochStateL .~ pParamsZero - -newEpochStateZero :: forall era. Reflect era => NewEpochState era -newEpochStateZero = - NewEpochState - (EpochNo 0) - blocksMadeZero - blocksMadeZero - epochStateZero - SNothing - poolDistrZero - (stashedAVVMAddressesZero (reify :: Proof era)) - -stashedAVVMAddressesZero :: Proof era -> StashedAVVMAddresses era -stashedAVVMAddressesZero Shelley = utxoZero -stashedAVVMAddressesZero Conway = () -stashedAVVMAddressesZero Babbage = () -stashedAVVMAddressesZero Alonzo = () -stashedAVVMAddressesZero Mary = () -stashedAVVMAddressesZero Allegra = () - -mNewEpochStateZero :: Reflect era => ModelNewEpochState era -mNewEpochStateZero = - ModelNewEpochState - { mPoolParams = Map.empty - , mPoolDeposits = Map.empty - , mRewards = Map.empty - , mDelegations = Map.empty - , mKeyDeposits = Map.empty - , mUTxO = Map.empty - , mMutFee = Map.empty - , mAccountState = accountStateZero - , mPoolDistr = Map.empty - , mPParams = pParamsZero - , mDeposited = Coin 0 - , mFees = Coin 0 - , mCount = 0 - , mIndex = Map.empty - , -- below here NO EFFECT until we model EpochBoundary - mFPoolParams = Map.empty - , mRetiring = Map.empty - , mSnapshots = emptySnapShots - , mEL = EpochNo 0 - , mBprev = Map.empty - , mBcur = Map.empty - , mRu = SNothing - } - -testNES :: NewEpochState (BabbageEra StandardCrypto) -testNES = newEpochStateZero - -testMNES :: ModelNewEpochState (BabbageEra StandardCrypto) -testMNES = mNewEpochStateZero - --- ====================================================================== - -class Extract t era where - extract :: ModelNewEpochState era -> t - -instance Extract (DState era) era where - extract x = - DState - (UM.unify (makeRewards x) Map.empty (mDelegations x) Map.empty) - Map.empty - genDelegsZero - instantaneousRewardsZero - -makeRewards :: ModelNewEpochState era -> Map.Map (Credential 'Staking (EraCrypto era)) UM.RDPair -makeRewards mnes = Map.mapWithKey f credRewMap - where - credRewMap = mRewards mnes - credDepMap = mKeyDeposits mnes - f cred rew = case Map.lookup cred credDepMap of - Just dep -> UM.RDPair (UM.compactCoinOrError rew) (UM.compactCoinOrError dep) - Nothing -> error ("In makeRewards the reward and deposit maps are not in synch " ++ show cred) - -instance Extract (PState era) era where - extract x = PState (mPoolParams x) (mFPoolParams x) (mRetiring x) Map.empty - -instance Extract (VState era) era where - extract _ = VState def def (EpochNo 0) - -instance Extract (CertState era) era where - extract x = CertState (extract x) (extract x) (extract x) - -instance Reflect era => Extract (UTxOState era) era where - extract x = - smartUTxOState - (mPParams x) - (UTxO (mUTxO x)) - (mDeposited x) - (mFees x) - emptyGovState - mempty - -instance Reflect era => Extract (LedgerState era) era where - extract x = LedgerState (extract x) (extract x) - -instance Reflect era => Extract (EpochState era) era where - extract x = - EpochState - (mAccountState x) - (extract x) - (mSnapshots x) - nonMyopicZero - & curPParamsEpochStateL .~ mPParams x - & prevPParamsEpochStateL .~ mPParams x - -instance forall era. Reflect era => Extract (NewEpochState era) era where - extract x = - NewEpochState - (mEL x) - (BlocksMade (mBprev x)) - (BlocksMade (mBcur x)) - (extract x) - (Complete <$> mRu x) - (PoolDistr (mPoolDistr x)) - (stashedAVVMAddressesZero (reify :: Proof era)) - -abstract :: EraGov era => NewEpochState era -> ModelNewEpochState era -abstract x = - ModelNewEpochState - { mPoolParams = (psStakePoolParams . certPState . lsCertState . esLState . nesEs) x - , mPoolDeposits = (psDeposits . certPState . lsCertState . esLState . nesEs) x - , mRewards = (UM.rewardMap . dsUnified . certDState . lsCertState . esLState . nesEs) x - , mDelegations = (UM.sPoolMap . dsUnified . certDState . lsCertState . esLState . nesEs) x - , mKeyDeposits = (UM.depositMap . dsUnified . certDState . lsCertState . esLState . nesEs) x - , mUTxO = (unUTxO . utxosUtxo . lsUTxOState . esLState . nesEs) x - , mMutFee = Map.empty - , mAccountState = (esAccountState . nesEs) x - , mPoolDistr = (unPoolDistr . nesPd) x - , mPParams = (view curPParamsEpochStateL . nesEs) x - , mDeposited = (utxosDeposited . lsUTxOState . esLState . nesEs) x - , mFees = (utxosFees . lsUTxOState . esLState . nesEs) x - , mCount = 0 - , mIndex = Map.empty - , -- below here NO EFFECT until we model EpochBoundary - mFPoolParams = (psFutureStakePoolParams . certPState . lsCertState . esLState . nesEs) x - , mRetiring = (psRetiring . certPState . lsCertState . esLState . nesEs) x - , mSnapshots = (esSnapshots . nesEs) x - , mEL = nesEL x - , mBprev = unBlocksMade (nesBprev x) - , mBcur = unBlocksMade (nesBcur x) - , mRu = case nesRu x of - SNothing -> SNothing -- <- There is no way to complete (nesRu x) to get a RewardUpdate - SJust pru -> SJust (complete pru) - } - -complete :: PulsingRewUpdate c -> RewardUpdate c -complete (Complete r) = r -complete (Pulsing rewsnap pulser) = fst $ runShelleyBase (completeRupd (Pulsing rewsnap pulser)) - --- ===================================================================== - -pcModelNewEpochState :: Reflect era => Proof era -> ModelNewEpochState era -> PDoc -pcModelNewEpochState proof x = - ppRecord "ModelNewEpochState" $ - [ ("poolparams", ppMap keyHashSummary pcPoolParams (mPoolParams x)) - , ("pool deposits", ppMap keyHashSummary pcCoin (mPoolDeposits x)) - , ("rewards", ppMap credSummary pcCoin (mRewards x)) - , ("delegations", ppMap pcCredential pcKeyHash (mDelegations x)) - , ("key deposits", ppMap credSummary pcCoin (mKeyDeposits x)) - , ("utxo", ppMap pcTxIn (pcTxOut proof) (mUTxO x)) - , ("mutFees", ppMap pcTxIn (pcTxOut proof) (mMutFee x)) - , ("account", pcAccountState (mAccountState x)) - , ("pool distr", ppMap pcKeyHash pcIndividualPoolStake (mPoolDistr x)) - , ("protocol params", ppString "PParams ...") - , ("deposited", pcCoin (mDeposited x)) - , ("fees", pcCoin (mFees x)) - , ("count", ppInt (mCount x)) - , ("index", ppMap ppInt pcTxId (mIndex x)) - -- Add additional EpochBoundary fields here - ] - ++ Maybe.catMaybes (epochBoundaryPDoc proof x) - -epochBoundaryPDoc :: Proof era -> ModelNewEpochState era -> [Maybe (Text, PDoc)] -epochBoundaryPDoc _proof x = - [ if Map.null futurepp - then Nothing - else Just ("future pparams", ppMap pcKeyHash pcPoolParams futurepp) - , if Map.null retiring then Nothing else Just ("retiring", ppMap pcKeyHash ppEpochNo retiring) - , if lastepoch == EpochNo 0 then Nothing else Just ("last epoch", ppEpochNo lastepoch) - , if Map.null prevBlocks then Nothing else Just ("prev blocks", ppMap pcKeyHash ppNatural prevBlocks) - , if Map.null curBlocks then Nothing else Just ("current blocks", ppMap pcKeyHash ppNatural curBlocks) - ] - where - futurepp = mFPoolParams x - retiring = mRetiring x - lastepoch = mEL x - prevBlocks = (mBprev x) - curBlocks = (mBcur x) - --- SnapShots and PulsingRewUdate delberately ommitted from pretty printer - -instance Reflect era => PrettyA (ModelNewEpochState era) where prettyA = pcModelNewEpochState reify - -instance Reflect era => Show (ModelNewEpochState era) where - show x = show (prettyA x) diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/PrettyCore.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/PrettyCore.hs deleted file mode 100644 index 02f73c1f6fe..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/PrettyCore.hs +++ /dev/null @@ -1,3394 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE QuantifiedConstraints #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Generic.PrettyCore where - -import qualified Cardano.Crypto.Hash as Hash -import Cardano.Ledger.Address (Addr (..), RewardAccount (..)) -import Cardano.Ledger.Allegra.Rules as Allegra (AllegraUtxoPredFailure (..)) -import Cardano.Ledger.Allegra.Scripts (Timelock (..), ValidityInterval (..)) -import Cardano.Ledger.Allegra.TxAuxData (AllegraTxAuxData (..)) -import Cardano.Ledger.Allegra.TxBody (AllegraTxBody (..)) -import Cardano.Ledger.Alonzo.Core (CoinPerWord (..)) -import Cardano.Ledger.Alonzo.Plutus.Context (ContextError) -import Cardano.Ledger.Alonzo.Plutus.Evaluate (CollectError (..)) -import Cardano.Ledger.Alonzo.Rules as Alonzo ( - AlonzoBbodyPredFailure (..), - AlonzoUtxoPredFailure (..), - AlonzoUtxosPredFailure (..), - AlonzoUtxowPredFailure (..), - FailureDescription (..), - TagMismatchDescription (..), - ) -import Cardano.Ledger.Alonzo.Scripts ( - AlonzoEraScript (..), - AlonzoPlutusPurpose (..), - AlonzoScript (..), - AsItem (..), - AsIx (..), - AsIxItem (..), - ExUnits (..), - PlutusPurpose, - plutusScriptLanguage, - ) -import Cardano.Ledger.Alonzo.Tx (AlonzoTx (..), IsValid (..)) -import Cardano.Ledger.Alonzo.TxAuxData ( - AlonzoTxAuxData, - atadMetadata', - getAlonzoTxAuxDataScripts, - ) -import Cardano.Ledger.Alonzo.TxBody (AlonzoTxBody (..), AlonzoTxOut (..)) -import Cardano.Ledger.Alonzo.TxWits (AlonzoTxWits (..), TxDats (..), unRedeemers, unTxDats) -import Cardano.Ledger.Alonzo.UTxO (AlonzoScriptsNeeded (..)) -import Cardano.Ledger.AuxiliaryData (AuxiliaryDataHash (..)) -import Cardano.Ledger.Babbage.Core (CoinPerByte (..)) -import Cardano.Ledger.Babbage.Rules (BabbageUtxoPredFailure (..), BabbageUtxowPredFailure (..)) -import Cardano.Ledger.Babbage.TxBody (BabbageTxOut (..)) -import Cardano.Ledger.BaseTypes ( - Anchor (..), - BlocksMade (..), - EpochInterval (..), - EpochNo (..), - FixedPoint, - Network (..), - Nonce (..), - ProtVer (..), - SlotNo (..), - TxIx (..), - UnitInterval, - Version, - certIxToInt, - getVersion64, - txIxToInt, - unboundRational, - ) -import Cardano.Ledger.CertState (CommitteeAuthorization (..), CommitteeState (..)) -import qualified Cardano.Ledger.CertState as DP -import Cardano.Ledger.Coin (Coin (..), CompactForm (..), DeltaCoin (..)) -import Cardano.Ledger.Conway.Governance ( - Committee (..), - Constitution (..), - ConwayGovState (..), - DRepPulser (..), - DRepPulsingState (..), - EnactState (..), - GovAction (..), - GovActionId (..), - GovActionIx (..), - GovActionState (..), - GovProcedures (..), - GovPurposeId (..), - GovRelation (..), - PEdges (..), - PGraph (..), - ProposalProcedure (..), - Proposals, - PulsingSnapshot (..), - RatifyEnv (..), - RatifySignal (..), - RatifyState (..), - Vote (..), - Voter (..), - VotingProcedure (..), - VotingProcedures (..), - pGraphL, - pRootsL, - proposalsActionsMap, - toPrevGovActionIds, - unPGraph, - ) -import Cardano.Ledger.Conway.Rules ( - CertEnv (..), - ConwayCertsPredFailure (..), - ConwayDelegPredFailure (..), - ConwayGovCertEnv (..), - ConwayGovCertPredFailure (..), - ConwayGovPredFailure (..), - ConwayLedgerPredFailure (..), - ConwayNewEpochPredFailure, - ConwayUtxosPredFailure, - EnactSignal (..), - GovEnv (..), - ) -import qualified Cardano.Ledger.Conway.Rules as ConwayRules -import Cardano.Ledger.Conway.Scripts (ConwayPlutusPurpose (..)) -import Cardano.Ledger.Conway.TxCert ( - ConwayDelegCert (..), - ConwayGovCert (..), - ConwayTxCert (..), - Delegatee (..), - ) -import Cardano.Ledger.Core -import qualified Cardano.Ledger.Core as Core -import Cardano.Ledger.Credential ( - Credential ( - KeyHashObj, - ScriptHashObj - ), - Ptr (..), - StakeReference (..), - ) -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.DRep (DRep (..), DRepState (..)) -import Cardano.Ledger.EpochBoundary ( - SnapShot (..), - SnapShots (..), - Stake (..), - ) -import Cardano.Ledger.Keys ( - GenDelegPair (..), - GenDelegs (..), - HasKeyRole (coerceKeyRole), - KeyHash (..), - KeyRole (..), - VKey (..), - WitVKey (..), - hashKey, - ) -import Cardano.Ledger.Keys.Bootstrap (BootstrapWitness (..), ChainCode (..)) -import Cardano.Ledger.Mary.TxBody (MaryTxBody (..)) -import Cardano.Ledger.Mary.Value ( - AssetName (..), - MaryValue (..), - MultiAsset (..), - PolicyID (..), - flattenMultiAsset, - ) -import Cardano.Ledger.MemoBytes (MemoBytes (..)) -import Cardano.Ledger.Plutus.Data ( - Data (..), - Datum (..), - binaryDataToData, - hashData, - ) -import qualified Cardano.Ledger.Plutus.ExUnits as ExUnits (Prices (..)) -import Cardano.Ledger.Plutus.Language (Language (..)) -import Cardano.Ledger.PoolDistr (IndividualPoolStake (..), PoolDistr (..)) -import Cardano.Ledger.PoolParams (PoolParams (..)) -import Cardano.Ledger.SafeHash (SafeHash, extractHash, hashAnnotated) -import Cardano.Ledger.Shelley.AdaPots ( - AdaPots (..), - totalAdaES, - totalAdaPotsES, - ) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState ( - AccountState (..), - CertState (..), - DState (..), - EpochState (..), - FutureGenDeleg (..), - IncrementalStake (IStake), - InstantaneousRewards (..), - LedgerState (..), - NewEpochState (..), - PState (..), - RewardUpdate (..), - UTxOState (..), - VState (..), - ) -import Cardano.Ledger.Shelley.PParams (ProposedPPUpdates (..)) -import qualified Cardano.Ledger.Shelley.PParams as PParams (Update (..)) -import Cardano.Ledger.Shelley.PoolRank (Likelihood (..), LogWeight (..), NonMyopic (..)) -import Cardano.Ledger.Shelley.Rules ( - LedgerEnv (..), - PoolEnv (..), - ShelleyLedgerPredFailure (..), - UpecPredFailure, - UtxoEnv (..), - ) -import Cardano.Ledger.Shelley.Rules as Shelley ( - ShelleyBbodyPredFailure (..), - ShelleyBbodyState (..), - ShelleyDelegPredFailure (..), - ShelleyDelegsPredFailure (..), - ShelleyDelplPredFailure (..), - ShelleyEpochPredFailure (..), - ShelleyLedgersPredFailure (..), - ShelleyNewEpochPredFailure (..), - ShelleyNewppPredFailure (..), - ShelleyPoolPredFailure (..), - ShelleyPoolreapPredFailure, - ShelleyPpupPredFailure (..), - ShelleySnapPredFailure, - ShelleyTickPredFailure (..), - ShelleyUpecPredFailure (..), - ShelleyUtxoPredFailure (..), - ShelleyUtxowPredFailure (..), - ) -import qualified Cardano.Ledger.Shelley.Scripts as SS (MultiSig (..)) -import Cardano.Ledger.Shelley.Tx (ShelleyTx (..)) -import Cardano.Ledger.Shelley.TxAuxData (Metadatum (..), ShelleyTxAuxData (..)) -import Cardano.Ledger.Shelley.TxBody (ShelleyTxBody (..), ShelleyTxBodyRaw (..)) -import Cardano.Ledger.Shelley.TxCert (ShelleyDelegCert (..), ShelleyTxCert (..)) -import Cardano.Ledger.Shelley.TxOut (ShelleyTxOut (..)) -import Cardano.Ledger.Shelley.TxWits (ShelleyTxWits (..)) -import Cardano.Ledger.Shelley.UTxO (ShelleyScriptsNeeded (..)) -import Cardano.Ledger.TxIn (TxId (..), TxIn (..)) -import Cardano.Ledger.UMap ( - dRepMap, - depositMap, - fromCompact, - ptrMap, - rewardMap, - sPoolMap, - ) -import qualified Cardano.Ledger.UMap as UM (UMap, UView (..), size) -import Cardano.Ledger.UTxO (ScriptsNeeded, UTxO (..)) -import qualified Cardano.Ledger.Val as Val -import Codec.Binary.Bech32 -import Control.Monad.Identity (Identity) -import Control.State.Transition.Extended (STS (..)) -import qualified Data.ByteString as Long (ByteString) -import qualified Data.ByteString.Lazy as Lazy (ByteString, toStrict) -import Data.Foldable (toList) -import Data.List.NonEmpty (NonEmpty) -import Data.Map (Map) -import qualified Data.Map.Strict as Map -import Data.Maybe.Strict (StrictMaybe (..)) -import Data.OSet.Strict (OSet) -import Data.Sequence (Seq) -import Data.Sequence.Strict (StrictSeq) -import Data.Set (Set) -import qualified Data.Set as Set -import Data.Text (Text, pack) -import Data.Typeable (Typeable) -import qualified Data.VMap as VMap -import Data.Void (Void, absurd) -import Data.Word (Word16, Word32, Word64, Word8) -import GHC.Natural (Natural) -import Lens.Micro ((^.)) -import qualified PlutusLedgerApi.V1 as PV1 (Data (..)) -import Prettyprinter ( - Pretty (pretty), - align, - brackets, - comma, - encloseSep, - fillSep, - flatAlt, - group, - hang, - hsep, - lbrace, - lparen, - parens, - punctuate, - rbrace, - reAnnotate, - rparen, - sep, - space, - vcat, - viaShow, - vsep, - (<+>), - ) -import Prettyprinter.Internal (Doc (Empty)) -import Prettyprinter.Util (putDocW) -import Test.Cardano.Ledger.Core.KeyPair (KeyPair (..)) -import Test.Cardano.Ledger.Generic.Fields ( - PParamsField (..), - TxBodyField (..), - TxField (..), - WitnessesField (..), - abstractPParams, - abstractTx, - abstractTxBody, - abstractWitnesses, - ) -import qualified Test.Cardano.Ledger.Generic.Fields as Fields -import Test.Cardano.Ledger.Generic.Proof ( - AllegraEra, - GovStateWit (..), - MaryEra, - Proof (..), - Reflect (..), - ShelleyEra, - unReflect, - whichGovState, - ) - --- ================================================ - -class PrettyA t where - prettyA :: t -> PDoc - -instance PrettyA () where - prettyA = ppString . show - -instance PrettyA Void where - prettyA = absurd - -instance PrettyA Bool where - prettyA = ppBool - -instance PrettyA Int where - prettyA = ppInt - -instance PrettyA x => PrettyA [x] where - prettyA = ppList prettyA - -instance PrettyA x => PrettyA (NonEmpty x) where - prettyA = prettyA . toList - -instance (PrettyA a, PrettyA b) => PrettyA (Map a b) where - prettyA = ppMap prettyA prettyA - -instance (PrettyA a, PrettyA b) => PrettyA (a, b) where - prettyA (x, y) = encloseSep lparen rparen comma [prettyA x, prettyA y] - -instance PrettyA Word32 where - prettyA = ppString . show - -instance PrettyA Word64 where - prettyA = ppString . show - --- ===================================== --- Operations for pretty printing --- ===================================== - -isEmpty :: Doc ann -> Bool -isEmpty Empty = True -isEmpty _ = False - -putDoc :: Doc ann -> IO () -putDoc = putDocW 80 - -newtype PrettyAnn = Width Int - -type Ann = [PrettyAnn] - -type PDoc = Doc Ann - -text :: Text -> Doc ann -text = pretty - -trim :: PDoc -> PDoc -trim x = ppString (take 10 (show x)) - --- ================================================ --- Named pretty printers for simple Haskell types --- ================================================ - -ppString :: String -> Doc a -ppString = pretty - -ppDouble :: Double -> Doc a -ppDouble = viaShow - -ppInteger :: Integer -> Doc a -ppInteger = viaShow - -ppRational :: Rational -> Doc a -ppRational = viaShow - -ppFloat :: Float -> Doc a -ppFloat = viaShow - -ppNatural :: Natural -> Doc a -ppNatural = viaShow - -ppWord64 :: Word64 -> Doc a -ppWord64 = viaShow - -ppWord32 :: Word32 -> Doc a -ppWord32 = viaShow - -ppWord8 :: Word8 -> Doc a -ppWord8 = viaShow - -ppWord16 :: Word16 -> Doc a -ppWord16 = viaShow - -ppFixedPoint :: FixedPoint -> Doc a -ppFixedPoint = viaShow - -ppPair :: (t1 -> PDoc) -> (t2 -> PDoc) -> (t1, t2) -> PDoc -ppPair pp1 pp2 (x, y) = ppSexp' mempty [pp1 x, pp2 y] - --- ppSignedDSIGN :: SignedDSIGN a b -> Doc ann -ppSignedDSIGN :: Show a => a -> PDoc -ppSignedDSIGN x = reAnnotate (Width 5 :) (viaShow x) - -ppBool :: Bool -> Doc a -ppBool = viaShow - -ppInt :: Int -> Doc a -ppInt = viaShow - --- ====================== --- Byte Strings in Bech32 format - -long_bech32 :: Long.ByteString -> Text -long_bech32 x = - case humanReadablePartFromText "*" of - Right human -> - case encode human (dataPartFromBytes x) of - Right ans -> ans - Left _ -> "bech32Error" - Left _ -> "bech32Error" - -lazy_bech32 :: Lazy.ByteString -> Text -lazy_bech32 x = - case humanReadablePartFromText "*" of - Right human -> - case encode human (dataPartFromBytes (Lazy.toStrict x)) of - Right ans -> ans - Left _ -> "bech32Error" - Left _ -> "bech32Error" - -ppLong :: Long.ByteString -> PDoc -ppLong x = text (long_bech32 x) - -ppLazy :: Lazy.ByteString -> PDoc -ppLazy x = text (lazy_bech32 x) - -instance PrettyA Long.ByteString where - prettyA = ppLong - -instance PrettyA Lazy.ByteString where - prettyA = ppLazy - --- ============================================ --- Combinators for common patterns of layout --- ============================================ - --- | x == y -equate :: Doc a -> Doc a -> Doc a -equate x y = group (flatAlt (hang 2 (sep [x <+> text "=", y])) (hsep [x, text "=", y])) - --- | x -> y -arrow :: (Doc a, Doc a) -> Doc a -arrow (x, y) = group (flatAlt (hang 2 (sep [x <+> text "->", y])) (hsep [x, text "->", y])) - --- | ppSexp x [w,y,z] --> (x w y z) -ppSexp :: Text -> [PDoc] -> PDoc -ppSexp con = ppSexp' (text con) - -ppSexp' :: PDoc -> [PDoc] -> PDoc -ppSexp' con fields = - group $ - flatAlt - (hang 2 (encloseSep lparen rparen space docs)) - (encloseSep lparen rparen space docs) - where - docs = if isEmpty con then fields else con : fields - --- | ppRecord name [("a",x),("b",y),("c",z)] --> name { a = x, b = y, c = z } -ppRecord :: Text -> [(Text, PDoc)] -> PDoc -ppRecord con = ppRecord' (text con) - -ppRecord' :: PDoc -> [(Text, PDoc)] -> PDoc -ppRecord' con fields = - group $ - flatAlt - (hang 1 (vcat [con, puncLeft lbrace (map (\(x, y) -> equate (text x) y) fields) comma rbrace])) - ( con - <> encloseSep - (lbrace <> space) - (space <> rbrace) - (comma <> space) - (map (\(x, y) -> equate (text x) y) fields) - ) - --- | Vertical layout with commas aligned on the left hand side -puncLeft :: Doc ann -> [Doc ann] -> Doc ann -> Doc ann -> Doc ann -puncLeft open [] _ close = hsep [open, close] -puncLeft open [x] _ close = hsep [open, x, close] -puncLeft open (x : xs) coma close = align (sep ((open <+> x) : help xs)) - where - help [] = mempty - help [y] = [hsep [coma, y, close]] - help (y : ys) = (coma <+> y) : help ys - -ppSet :: (x -> Doc ann) -> Set x -> Doc ann -ppSet p xs = encloseSep lbrace rbrace comma (map p (toList xs)) - -ppSeq :: (a -> Doc ann) -> Seq a -> Doc ann -ppSeq p xs = ppList p (foldr (:) [] xs) - -ppList :: (x -> Doc ann) -> [x] -> Doc ann -ppList p xs = brackets $ fillSep $ punctuate comma $ map p xs - -ppStrictSeq :: (a -> Doc ann) -> StrictSeq a -> Doc ann -ppStrictSeq p xs = ppList p (foldr (:) [] xs) - -ppOSet :: (a -> Doc ann) -> OSet a -> Doc ann -ppOSet p xs = ppList p (foldr (:) [] xs) - -ppStrictMaybe :: (x -> Doc ann) -> StrictMaybe x -> Doc ann -ppStrictMaybe _ SNothing = text "?-" -ppStrictMaybe p (SJust x) = text "?" <> p x - -ppMaybe :: (x -> Doc ann) -> Maybe x -> Doc ann -ppMaybe _ Nothing = text "?-" -ppMaybe p (Just x) = text "?" <> p x - -ppAssocList :: PDoc -> (k -> PDoc) -> (v -> PDoc) -> [(k, v)] -> PDoc -ppAssocList name kf vf xs = - let docs = fmap (\(k, v) -> arrow (kf k, vf v)) xs - vertical = - if isEmpty name - then hang 1 (puncLeft lbrace docs comma rbrace) - else hang 1 (vcat [name, puncLeft lbrace docs comma rbrace]) - in group $ - flatAlt - vertical - (name <> encloseSep (lbrace <> space) (space <> rbrace) (comma <> space) docs) - -ppMap' :: PDoc -> (k -> PDoc) -> (v -> PDoc) -> Map.Map k v -> PDoc -ppMap' name kf vf = ppAssocList name kf vf . Map.toList - -ppMap :: (k -> PDoc) -> (v -> PDoc) -> Map.Map k v -> PDoc -ppMap = ppMap' (text "Map") - -ppVMap :: - (VMap.Vector kv k, VMap.Vector vv v) => - (k -> PDoc) -> - (v -> PDoc) -> - VMap.VMap kv vv k v -> - PDoc -ppVMap pk pv = ppAssocList (text "VMap") pk pv . VMap.toList - --- ===================================================================================================== --- Pretty printers Cardano.Ledger types --- ===================================================================================================== - -ppPolicyID :: PolicyID c -> PDoc -ppPolicyID (PolicyID sh) = pcScriptHash sh - -ppLogWeight :: LogWeight -> PDoc -ppLogWeight (LogWeight n) = ppSexp "LogWeight" [ppFloat n] - -instance PrettyA LogWeight where - prettyA = ppLogWeight - -ppPrices :: ExUnits.Prices -> PDoc -ppPrices (ExUnits.Prices prMem prSteps) = - ppRecord - "Prices" - [ ("prMem", ppRational $ unboundRational prMem) - , ("prSteps", ppRational $ unboundRational prSteps) - ] - -instance PrettyA ExUnits.Prices where - prettyA = ppPrices - -ppRewardType :: RewardType -> PDoc -ppRewardType MemberReward = text "MemberReward" -ppRewardType LeaderReward = text "LeaderReward" - -ppLikelihood :: Likelihood -> PDoc -ppLikelihood (Likelihood ns) = ppSexp "Likelihood" [ppStrictSeq ppLogWeight ns] - -ppNonMyopic :: NonMyopic c -> PDoc -ppNonMyopic (NonMyopic m c) = - ppRecord - "NonMyopic" - [ ("likelihood", ppMap' "" pcKeyHash ppLikelihood m) - , ("rewardPot", pcCoin c) - ] - -ppRewardUpdate :: RewardUpdate c -> PDoc -ppRewardUpdate (RewardUpdate dt dr rss df nonmyop) = - ppRecord - "RewardUpdate" - [ ("deltaT", pcDeltaCoin dt) - , ("deltaR", pcDeltaCoin dr) - , ("rs", ppMap' mempty pcCredential (ppSet pcReward) rss) - , ("deltaF", pcDeltaCoin df) - , ("nonMyopic", ppNonMyopic nonmyop) - ] - -instance PrettyA (RewardUpdate c) where - prettyA = ppRewardUpdate - -ppLanguage :: Language -> PDoc -ppLanguage = ppString . show - -ppTxWitness :: - forall era. - Reflect era => - AlonzoTxWits era -> - PDoc -ppTxWitness (AlonzoTxWits' vk wb sc da rd) = - ppRecord - "AlonzoTxWits" - [ ("keys", ppSet (pcWitVKey @era reify) vk) - , ("bootstrap witnesses", ppSet ppBootstrapWitness wb) - , ("scripts map", ppMap pcScriptHash (pcScript reify) sc) - , ("Data map", ppMap ppSafeHash pcData (unTxDats da)) - , ("Redeemer map", ppMap ppPlutusPurposeAsIx (ppPair pcData pcExUnits) (unRedeemers rd)) - ] - -instance Reflect era => PrettyA (AlonzoTxWits era) where - prettyA = ppTxWitness - -ppIsValid :: IsValid -> PDoc -ppIsValid (IsValid True) = ppString "True" -ppIsValid (IsValid False) = ppString "False" - -ppVersion :: Version -> PDoc -ppVersion = ppWord64 . getVersion64 - -ppNetwork :: Network -> PDoc -ppNetwork Testnet = text "Testnet" -ppNetwork Mainnet = text "Mainnet" - -ppValidityInterval :: ValidityInterval -> PDoc -ppValidityInterval (ValidityInterval b a) = - ppRecord - "ValidityInterval" - [ ("invalidBefore", ppStrictMaybe pcSlotNo b) - , ("invalidHereafter", ppStrictMaybe pcSlotNo a) - ] - -instance PrettyA ValidityInterval where - prettyA = ppValidityInterval - -ppAuxiliaryDataHash :: AuxiliaryDataHash c -> PDoc -ppAuxiliaryDataHash (AuxiliaryDataHash h) = ppSexp "AuxiliaryDataHash" [ppSafeHash h] - -instance PrettyA (AuxiliaryDataHash c) where - prettyA = ppAuxiliaryDataHash - -ppSafeHash :: SafeHash c index -> PDoc -ppSafeHash x = ppHash (extractHash x) - -instance PrettyA (SafeHash x y) where - prettyA = ppSafeHash - -ppEpochNo :: EpochNo -> Doc ann -ppEpochNo (EpochNo x) = text "EpochNo" <+> pretty x - -instance PrettyA EpochNo where - prettyA = ppEpochNo - -ppEpochInterval :: EpochInterval -> Doc ann -ppEpochInterval (EpochInterval x) = text "EpochInterval" <+> pretty x - -instance PrettyA EpochInterval where - prettyA = ppEpochInterval - -ppHash :: Hash.Hash a b -> PDoc -ppHash x = text "#" <> reAnnotate (Width 5 :) (viaShow x) - -ppUnitInterval :: UnitInterval -> PDoc -ppUnitInterval = viaShow - -instance PrettyA UnitInterval where - prettyA = ppUnitInterval - -ppNonce :: Nonce -> PDoc -ppNonce (Nonce h) = text "Nonce" <+> ppHash h -ppNonce NeutralNonce = text "NeutralNonce" - -ppPtr :: Ptr -> PDoc -ppPtr (Ptr slot txIx certIx) = - ppSexp "Ptr" [pcSlotNo slot, pretty (txIxToInt txIx), pretty (certIxToInt certIx)] - -instance PrettyA Ptr where - prettyA = ppPtr - -ppProtVer :: ProtVer -> PDoc -ppProtVer (ProtVer maj mi) = ppRecord "ProtVer" [("major", ppVersion maj), ("minor", ppNatural mi)] - -instance PrettyA ProtVer where - prettyA = ppProtVer - -ppVKey :: Crypto c => VKey r c -> PDoc -ppVKey vk@(VKey x) = vsep [reAnnotate (Width 5 :) (viaShow x), "hash = " <+> pcKeyHash (hashKey vk)] - -instance Crypto c => PrettyA (VKey r c) where - prettyA = ppVKey - -ppBootstrapWitness :: Crypto c => BootstrapWitness c -> PDoc -ppBootstrapWitness (BootstrapWitness key sig (ChainCode code) attr) = - ppRecord - "BootstrapWitness" - [ ("key", ppVKey key) - , ("signature", ppSignedDSIGN sig) - , ("chaincode", ppLong code) - , ("attributes", ppLong attr) - ] - -instance Crypto c => PrettyA (BootstrapWitness c) where - prettyA = ppBootstrapWitness - -ppWitnessSetHKD :: forall era. Reflect era => ShelleyTxWits era -> PDoc -ppWitnessSetHKD (ShelleyTxWits addr scr boot) = - ppRecord - "ShelleyTxWits" - [ ("addrWits", ppSet (pcWitVKey @era reify) addr) - , ("scriptWits", ppMap pcScriptHash (pcScript reify) scr) - , ("bootWits", ppSet ppBootstrapWitness boot) - ] - -instance Reflect era => PrettyA (ShelleyTxWits era) where - prettyA = ppWitnessSetHKD - --- TODO Redo this with Fields? -ppPParamsUpdate :: - (ProtVerAtMost era 4, ProtVerAtMost era 6, ProtVerAtMost era 8, EraPParams era) => - PParamsUpdate era -> - PDoc -ppPParamsUpdate pp = - ppRecord - "PParamsUdate" - [ ("minfeeA", ppStrictMaybe pcCoin $ pp ^. ppuMinFeeAL) - , ("minfeeB", ppStrictMaybe pcCoin $ pp ^. ppuMinFeeBL) - , ("maxBBSize", ppStrictMaybe ppWord32 $ pp ^. ppuMaxBBSizeL) - , ("maxTxSize", ppStrictMaybe ppWord32 $ pp ^. ppuMaxTxSizeL) - , ("maxBHSize", ppStrictMaybe ppWord16 $ pp ^. ppuMaxBHSizeL) - , ("keyDeposit", ppStrictMaybe pcCoin $ pp ^. ppuKeyDepositL) - , ("poolDeposit", ppStrictMaybe pcCoin $ pp ^. ppuPoolDepositL) - , ("eMax", ppStrictMaybe ppEpochInterval $ pp ^. ppuEMaxL) - , ("nOpt", ppStrictMaybe ppNatural $ pp ^. ppuNOptL) - , ("a0", ppStrictMaybe (ppRational . unboundRational) $ pp ^. ppuA0L) - , ("rho", ppStrictMaybe ppUnitInterval $ pp ^. ppuRhoL) - , ("tau", ppStrictMaybe ppUnitInterval $ pp ^. ppuTauL) - , ("d", ppStrictMaybe ppUnitInterval $ pp ^. ppuDL) - , ("extraEntropy", ppStrictMaybe ppNonce $ pp ^. ppuExtraEntropyL) - , ("protocolVersion", ppStrictMaybe ppProtVer $ pp ^. ppuProtocolVersionL) - , ("minUTxOValue", ppStrictMaybe pcCoin $ pp ^. ppuMinUTxOValueL) - , ("minPoolCost", ppStrictMaybe pcCoin $ pp ^. ppuMinPoolCostL) - ] - --- TODO Do we need all these instances? --- Does this resolve the constraints (ProtVerAtMost era 4, ProtVerAtMost era 6, ProtVerAtMost era 8) -instance Crypto c => PrettyA (PParamsUpdate (ShelleyEra c)) where - prettyA = ppPParamsUpdate - -instance Crypto c => PrettyA (PParamsUpdate (AllegraEra c)) where - prettyA = ppPParamsUpdate - -instance Crypto c => PrettyA (PParamsUpdate (MaryEra c)) where - prettyA = ppPParamsUpdate - -ppUpdate :: PrettyA (PParamsUpdate era) => PParams.Update era -> PDoc -ppUpdate (PParams.Update prop epn) = ppSexp "Update" [ppProposedPPUpdates prop, ppEpochNo epn] - -instance PrettyA (PParamsUpdate e) => PrettyA (PParams.Update e) where - prettyA = ppUpdate - -ppProposedPPUpdates :: PrettyA (PParamsUpdate era) => ProposedPPUpdates era -> PDoc -ppProposedPPUpdates (ProposedPPUpdates m) = ppMap pcKeyHash prettyA m - -instance PrettyA (PParamsUpdate e) => PrettyA (ProposedPPUpdates e) where - prettyA = ppProposedPPUpdates - -ppMetadatum :: Metadatum -> PDoc -ppMetadatum (Map m) = - let pairs = fmap (\(k, v) -> arrow (ppMetadatum k, ppMetadatum v)) m - in ppSexp - "Map" - [ group $ - flatAlt - (hang 1 (puncLeft lbrace pairs comma rbrace)) - (encloseSep (lbrace <> space) (space <> rbrace) (comma <> space) pairs) - ] -ppMetadatum (List ds) = ppSexp "List" [ppList ppMetadatum ds] -ppMetadatum (I n) = ppSexp "I" [ppInteger n] -ppMetadatum (B bs) = ppSexp "B" [ppLong bs] -ppMetadatum (S txt) = ppSexp "S" [text txt] - -instance PrettyA Metadatum where - prettyA = ppMetadatum - -ppShelleyTxAuxData :: Era era => ShelleyTxAuxData era -> PDoc -ppShelleyTxAuxData (ShelleyTxAuxData m) = ppMap' (text "ShelleyTxAuxData") ppWord64 ppMetadatum m - -instance Era era => PrettyA (ShelleyTxAuxData era) where - prettyA = ppShelleyTxAuxData - -ppAllegraTxAuxData :: Reflect era => AllegraTxAuxData era -> PDoc -ppAllegraTxAuxData (AllegraTxAuxData m sp) = - ppRecord - "AllegraTxAuxData" - [ ("metadata", ppMap' (text "Metadata") ppWord64 ppMetadatum m) - , ("auxiliaryScripts", ppStrictSeq prettyA sp) - ] - -instance Reflect era => PrettyA (AllegraTxAuxData era) where - prettyA = ppAllegraTxAuxData - -ppAlonzoTxAuxData :: - Reflect era => - AlonzoTxAuxData era -> - PDoc -ppAlonzoTxAuxData auxData = - ppSexp - "AuxiliaryData" - [ ppMap ppWord64 ppMetadatum (atadMetadata' auxData) - , ppStrictSeq (pcScript reify) (extractAlonzoTxAuxDataScripts auxData) - ] - -extractAlonzoTxAuxDataScripts :: - forall era. - Reflect era => - AlonzoTxAuxData era -> - StrictSeq (Script era) -extractAlonzoTxAuxDataScripts auxData = - case reify @era of - Shelley -> error "Unsuported" - Allegra -> error "Unsuported" - Mary -> error "Unsuported" - Alonzo -> getAlonzoTxAuxDataScripts auxData - Babbage -> getAlonzoTxAuxDataScripts auxData - Conway -> getAlonzoTxAuxDataScripts auxData - -instance - (Reflect era, Script era ~ AlonzoScript era) => - PrettyA (AlonzoTxAuxData era) - where - prettyA = ppAlonzoTxAuxData - -pcAuxData :: Proof era -> TxAuxData era -> PDoc -pcAuxData Shelley x = ppShelleyTxAuxData x -pcAuxData Allegra x = ppAllegraTxAuxData x -pcAuxData Mary x = ppAllegraTxAuxData x -pcAuxData Alonzo x = ppAlonzoTxAuxData x -pcAuxData Babbage x = ppAlonzoTxAuxData x -pcAuxData Conway x = ppAlonzoTxAuxData x - -ppWithdrawals :: Withdrawals c -> PDoc -ppWithdrawals (Withdrawals m) = ppSexp "Withdrawals" [ppMap' (text "Wdr") pcRewardAccount pcCoin m] - -instance PrettyA (Withdrawals c) where - prettyA = ppWithdrawals - -ppWitHashes :: Set (KeyHash 'Witness c) -> PDoc -ppWitHashes hs = ppSexp "WitHashes" [ppSet pcKeyHash hs] - --- ================================================ --- Pretty printers for Tx and TxBody --- ================================================ - -ppShelleyTx :: - Reflect era => - Tx era -> - PDoc -ppShelleyTx tx = - ppRecord - "Tx" - [ ("body", pcTxBody reify $ tx ^. bodyTxL) - , ("witnessSet", ppCoreWitnesses reify $ tx ^. witsTxL) - , ("metadata", ppStrictMaybe (pcAuxData reify) $ tx ^. auxDataTxL) - ] - -instance - ( Reflect era - , Tx era ~ ShelleyTx era - ) => - PrettyA (ShelleyTx era) - where - prettyA = ppShelleyTx - -ppAlonzoTx :: - forall era. - (Reflect era, Tx era ~ AlonzoTx era) => - AlonzoTx era -> - PDoc -ppAlonzoTx tx = ppRecord "AlonzoTx" pairs - where - fields = abstractTx reify tx - pairs = concatMap (pcTxField @era (reify @era)) fields - -instance - (Reflect era, Tx era ~ AlonzoTx era) => - PrettyA (AlonzoTx era) - where - prettyA = ppAlonzoTx - -ppShelleyTxBody :: - ( Reflect era - , PrettyA (PParamsUpdate era) - ) => - ShelleyTxBody era -> - PDoc -ppShelleyTxBody (TxBodyConstr (Memo (ShelleyTxBodyRaw ins outs cs withdrawals fee ttl upd mdh) _)) = - ppRecord - "TxBody" - [ ("inputs", ppSet pcTxIn ins) - , ("outputs", ppStrictSeq (pcTxOut reify) outs) - , ("cert", ppStrictSeq (pcTxCert reify) cs) - , ("withdrawals", ppWithdrawals withdrawals) - , ("fee", pcCoin fee) - , ("timetolive", pcSlotNo ttl) - , ("update", ppStrictMaybe ppUpdate upd) - , ("metadatahash", ppStrictMaybe ppAuxiliaryDataHash mdh) - ] - -instance - ( EraTxOut era - , PrettyA (PParamsUpdate era) - , Reflect era - ) => - PrettyA (ShelleyTxBody era) - where - prettyA = ppShelleyTxBody - -ppAllegraTxBody :: - forall era. (TxBody era ~ AllegraTxBody era, Reflect era) => AllegraTxBody era -> PDoc -ppAllegraTxBody txbody = ppRecord ("TxBody " <> pack (show (reify @era))) pairs - where - fields = abstractTxBody reify txbody - pairs = concatMap (pcTxBodyField reify) fields - -instance (TxBody era ~ AllegraTxBody era, Reflect era) => PrettyA (AllegraTxBody era) where - prettyA = ppAllegraTxBody - -ppAlonzoTxBody :: - forall era. (TxBody era ~ AlonzoTxBody era, Reflect era) => AlonzoTxBody era -> PDoc -ppAlonzoTxBody txbody = ppRecord ("TxBody " <> pack (show (reify @era))) pairs - where - fields = abstractTxBody reify txbody - pairs = concatMap (pcTxBodyField reify) fields - -instance (TxBody era ~ AlonzoTxBody era, Reflect era) => PrettyA (AlonzoTxBody era) where - prettyA = ppAlonzoTxBody - -ppMaryTxBody :: forall era. (TxBody era ~ MaryTxBody era, Reflect era) => MaryTxBody era -> PDoc -ppMaryTxBody txbody = ppRecord ("TxBody " <> pack (show (reify @era))) pairs - where - fields = abstractTxBody reify txbody - pairs = concatMap (pcTxBodyField reify) fields - -instance (TxBody era ~ MaryTxBody era, Reflect era) => PrettyA (MaryTxBody era) where - prettyA = ppMaryTxBody - --- ============================================================= --- Pretty Printers for Type families must have a (Proof era) as --- an argument. Because they are type families, they cannot --- have a PrettyA instance. As one cannot write an instance for --- any type family. --- ============================================================== - -ppCoreWitnesses :: Proof era -> TxWits era -> PDoc -ppCoreWitnesses Conway x = ppTxWitness x -ppCoreWitnesses Babbage x = ppTxWitness x -ppCoreWitnesses Alonzo x = ppTxWitness x -ppCoreWitnesses Mary x = ppWitnessSetHKD x -ppCoreWitnesses Allegra x = ppWitnessSetHKD x -ppCoreWitnesses Shelley x = ppWitnessSetHKD x - -pcTxOut :: Reflect era => Proof era -> TxOut era -> PDoc -pcTxOut p@Conway (BabbageTxOut addr v d s) = - ppSexp "TxOut" [pcAddr addr, pcValue v, pcDatum d, ppStrictMaybe (pcScript p) s] -pcTxOut p@Babbage (BabbageTxOut addr v d s) = - ppSexp "TxOut" [pcAddr addr, pcValue v, pcDatum d, ppStrictMaybe (pcScript p) s] -pcTxOut Alonzo (AlonzoTxOut addr v md) = - ppSexp "TxOut" [pcAddr addr, pcValue v, ppStrictMaybe pcDataHash md] -pcTxOut p@Mary (ShelleyTxOut addr v) = - ppSexp "TxOut" [pcAddr addr, pcCoreValue p v] -pcTxOut p@Allegra (ShelleyTxOut addr v) = - ppSexp "TxOut" [pcAddr addr, pcCoreValue p v] -pcTxOut p@Shelley (ShelleyTxOut addr v) = - ppSexp "TxOut" [pcAddr addr, pcCoreValue p v] - -pcScript :: forall era. Reflect era => Proof era -> Script era -> PDoc -pcScript Conway (TimelockScript t) = pcTimelock @era t -pcScript p@Conway s@(PlutusScript v) = - parens (hsep [ppString ("PlutusScript " <> show (plutusScriptLanguage v) <> " "), pcHashScript p s]) -pcScript Babbage (TimelockScript t) = pcTimelock @era t -pcScript p@Babbage s@(PlutusScript v) = - parens (hsep [ppString ("PlutusScript " <> show (plutusScriptLanguage v) <> " "), pcHashScript p s]) -pcScript Alonzo (TimelockScript t) = pcTimelock @era t -pcScript p@Alonzo s@(PlutusScript v) = - parens (hsep [ppString ("PlutusScript " <> show (plutusScriptLanguage v) <> " "), pcHashScript p s]) -pcScript Mary s = pcTimelock @era s -pcScript Allegra s = pcTimelock @era s -pcScript p@Shelley s = pcMultiSig @era (pcHashScript @era p s) s - -pcWitnesses :: - Reflect era => - Proof era -> - TxWits era -> - PDoc -pcWitnesses proof txwits = ppRecord "Witnesses" pairs - where - fields = abstractWitnesses proof txwits - pairs = concat (map (pcWitnessesField proof) fields) - -pcTx :: Proof era -> Tx era -> PDoc -pcTx proof tx = ppRecord "Tx" pairs - where - fields = abstractTx proof tx - pairs = concatMap (unReflect pcTxField proof) fields - -pcTxBody :: Proof era -> TxBody era -> PDoc -pcTxBody proof txbody = ppRecord ("TxBody " <> pack (show proof)) pairs - where - fields = abstractTxBody proof txbody - pairs = concatMap (pcTxBodyField proof) fields - -pcPParams :: Proof era -> PParams era -> PDoc -pcPParams proof pp = ppRecord ("TxBody " <> pack (show proof)) pairs - where - fields = abstractPParams proof pp - pairs = concatMap pcPParamsField fields - --- | Unike other type families, PParams CAN have a PrettyA instance, as they --- are a newtype wrapped around a type family. -instance Reflect era => PrettyA (PParams era) where - prettyA = pcPParams reify - --- ================================= --- Type families that have Fields, can be pretty printed (for all eras) by using --- function that can pretty print each field. --- ================================= - -pcTxBodyField :: - Proof era -> - TxBodyField era -> - [(Text, PDoc)] -pcTxBodyField proof x = case x of - Inputs s -> [("spend inputs", ppSet pcTxIn s)] - Collateral s -> [("coll inputs", ppSet pcTxIn s)] - RefInputs s -> [("ref inputs", ppSet pcTxIn s)] - Outputs s -> [("outputs", ppList (unReflect pcTxOut proof) (toList s))] - CollateralReturn SNothing -> [] - CollateralReturn (SJust txout) -> [("coll return", unReflect pcTxOut proof txout)] - TotalCol SNothing -> [] - TotalCol (SJust c) -> [("total coll", pcCoin c)] - Certs xs -> [("certs", ppList (pcTxCert proof) (toList xs))] - Withdrawals' (Withdrawals m) -> [("withdrawal", ppMap pcRewardAccount pcCoin m)] - Txfee c -> [("fee", pcCoin c)] - Vldt v -> [("validity interval", ppValidityInterval v)] - TTL slot -> [("time to live", pcSlotNo slot)] - Update SNothing -> [] - Update (SJust _) -> [("update", ppString "UPDATE")] - ReqSignerHashes s -> [("required hashes", ppSet pcKeyHash s)] - Fields.Mint (MultiAsset m) -> [("minted", ppSet pcPolicyID (Map.keysSet m))] - WppHash SNothing -> [] - WppHash (SJust h) -> [("integrity hash", trim (ppSafeHash h))] - AdHash SNothing -> [] - AdHash (SJust (AuxiliaryDataHash h)) -> [("aux data hash", trim (ppSafeHash h))] - Txnetworkid SNothing -> [("network id", ppString "Nothing")] - Txnetworkid (SJust nid) -> [("network id", pcNetwork nid)] - GovProcs ga -> [("gov procedures", pcGovProcedures ga)] - CurrentTreasuryValue ctv -> [("current treasury value", ppStrictMaybe pcCoin ctv)] - TreasuryDonation td -> [("treasury donation", pcCoin td)] - -pcTxField :: - forall era. - Reflect era => - Proof era -> - TxField era -> - [(Text, PDoc)] -pcTxField proof x = case x of - Body b -> [("txbody hash", ppSafeHash (hashAnnotated b)), ("body", pcTxBody proof b)] - BodyI xs -> [("body", ppRecord "TxBody" (concat (map (pcTxBodyField proof) xs)))] - TxWits w -> [("witnesses", pcWitnesses proof w)] - WitnessesI ws -> [("witnesses", ppRecord "Witnesses" (concat (map (pcWitnessesField proof) ws)))] - AuxData SNothing -> [] - AuxData (SJust auxdata) -> [("aux data", pcAuxData proof auxdata)] - Valid (IsValid v) -> [("is valid", ppString (show v))] - -pcWitnessesField :: - forall era. - Reflect era => - Proof era -> - WitnessesField era -> - [(Text, PDoc)] -pcWitnessesField proof x = case x of - AddrWits set -> [("key wits", ppSet (pcWitVKey proof) set)] - BootWits bwits -> [("boot wits", ppSet (\z -> ppVKey (bwKey z)) bwits)] - ScriptWits mp -> [("script wits", ppMap pcScriptHash (pcScript proof) mp)] - DataWits (TxDats m) -> [("data wits", ppMap pcDataHash pcData m)] - RdmrWits m -> - [("redeemer wits", ppMap ppPlutusPurposeAsIx (pcPair pcData pcExUnits) (unRedeemers m))] - -pcPParamsField :: - PParamsField era -> - [(Text, PDoc)] -pcPParamsField x = case x of - MinfeeA coin -> [("minfeeA", pcCoin coin)] - MinfeeB coin -> [("minfeeB", pcCoin coin)] - MaxBBSize natural -> [("maxBBsize", ppWord32 natural)] - MaxTxSize natural -> [("maxTxsize", ppWord32 natural)] - MaxBHSize natural -> [("maxBHsize", ppWord16 natural)] - KeyDeposit coin -> [("keydeposit", pcCoin coin)] - PoolDeposit coin -> [("pooldeposit", pcCoin coin)] - EMax n -> [("emax", ppEpochInterval n)] - NOpt natural -> [("NOpt", ppNatural natural)] - A0 i -> [("A0", viaShow i)] - Rho u -> [("Rho", ppUnitInterval u)] - Tau u -> [("Tau", ppUnitInterval u)] - D u -> [("D", ppUnitInterval u)] - ExtraEntropy n -> [("extraEntropy", ppNonce n)] - ProtocolVersion protVer -> [("ProtocolVersion", ppProtVer protVer)] - MinPoolCost coin -> [("minPoolCost", pcCoin coin)] - MinUTxOValue coin -> [("minUTxOValue", pcCoin coin)] - CoinPerUTxOWord (CoinPerWord c) -> [("coinPerUTxOWord", pcCoin c)] - CoinPerUTxOByte (CoinPerByte c) -> [("coinPerUTxOByte", pcCoin c)] - Costmdls _ -> [("costmodels", ppString "?")] - Fields.Prices prices -> [("prices", ppPrices prices)] - MaxTxExUnits e -> [("maxTxExUnits", pcExUnits e)] - MaxBlockExUnits e -> [("maxBlockExUnits", pcExUnits e)] - MaxValSize n -> [("maxValSize", ppNatural n)] - CollateralPercentage n -> [("Collateral%", ppNatural n)] - MaxCollateralInputs n -> [("maxCollateralInputs", ppNatural n)] - PoolVotingThreshold _ -> [("PoolVotingThresholds", ppString "?")] - DRepVotingThreshold _ -> [("DRepVotingThresholds", ppString "?")] - MinCommitteeSize n -> [("minCommitteeSize", ppNatural n)] - CommitteeTermLimit n -> [("committeeTermLimit", ppEpochInterval n)] - GovActionExpiration epochNo -> [("govActionExpire", ppEpochInterval epochNo)] - GovActionDeposit coin -> [("govActiondDeposit", pcCoin coin)] - DRepDeposit coin -> [("drepdeposit", pcCoin coin)] - DRepActivity epochNo -> [("drepActivity", ppEpochInterval epochNo)] - --- ======================================================= --- @@ --- Pretty printers for PredicateFailures can be difficult because they often have componenents like --- PredicateFailure (EraRule "LEDGER" era) --- where both PredicateFailure and (EraRule "LEDGER" era) are type families. --- Note that field can be different for every era. For example look at the type of the constructor --- LedgerFailure :: PredicateFailure (EraRule "LEDGER" era) -> ShelleyLedgersPredFailure era --- So we must resort to case analysis over Proofs --- So for some EraRule "XXX", we write ppXXX :: Proof era -> PredicateFailure (EraRule "XXX") -> PDoc --- Complicated because some Eras do NOT have type instances for all (EraRule "XXX") - -ppUTXOW :: Reflect era => Proof era -> PredicateFailure (EraRule "UTXOW" era) -> PDoc -ppUTXOW Shelley x = ppShelleyUtxowPredFailure x -ppUTXOW Allegra x = ppShelleyUtxowPredFailure x -ppUTXOW Mary x = ppShelleyUtxowPredFailure x -ppUTXOW Alonzo x = ppAlonzoUtxowPredFailure x -ppUTXOW p@Babbage x = ppBabbageUtxowPredFailure p x -ppUTXOW p@Conway x = ppBabbageUtxowPredFailure p x - -ppUTXOS :: Proof era -> PredicateFailure (EraRule "UTXOS" era) -> PDoc -ppUTXOS Alonzo x = ppUtxosPredicateFailure x -ppUTXOS Babbage x = ppUtxosPredicateFailure x -ppUTXOS Conway x = prettyA x -ppUTXOS proof _ = - error - ( "Only the AlonzoEra, BabbageEra, and ConwayEra have a (PredicateFailure (EraRule \"UTXOS\" era))." - ++ "This Era is " - ++ show proof - ) - -ppDELEGS :: Proof era -> PredicateFailure (EraRule "DELEGS" era) -> PDoc -ppDELEGS p@Shelley x = ppShelleyDelegsPredFailure p x -ppDELEGS p@Allegra x = ppShelleyDelegsPredFailure p x -ppDELEGS p@Mary x = ppShelleyDelegsPredFailure p x -ppDELEGS p@Alonzo x = ppShelleyDelegsPredFailure p x -ppDELEGS p@Babbage x = ppShelleyDelegsPredFailure p x -ppDELEGS p@Conway _ = - error - ( "Only the Shelley, Allegra, Mary, Alonzo, and Babbage era have a (PredicateFailure (EraRule \"DELEGS\" era))." - ++ "This Era is " - ++ show p - ) - -ppDELEG :: Proof era -> PredicateFailure (EraRule "DELEG" era) -> PDoc -ppDELEG Shelley x = ppShelleyDelegPredFailure x -ppDELEG Allegra x = ppShelleyDelegPredFailure x -ppDELEG Mary x = ppShelleyDelegPredFailure x -ppDELEG Alonzo x = ppShelleyDelegPredFailure x -ppDELEG Babbage x = ppShelleyDelegPredFailure x -ppDELEG Conway x = ppConwayDelegPredFailure x - -ppPOOL :: Proof era -> PredicateFailure (EraRule "POOL" era) -> PDoc -ppPOOL Shelley x = ppShelleyPoolPredFailure x -ppPOOL Allegra x = ppShelleyPoolPredFailure x -ppPOOL Mary x = ppShelleyPoolPredFailure x -ppPOOL Alonzo x = ppShelleyPoolPredFailure x -ppPOOL Babbage x = ppShelleyPoolPredFailure x -ppPOOL Conway x = ppShelleyPoolPredFailure x - -ppLEDGER :: Reflect era => Proof era -> PredicateFailure (EraRule "LEDGER" era) -> PDoc -ppLEDGER p@Shelley x = ppShelleyLedgerPredFailure p x -ppLEDGER p@Allegra x = ppShelleyLedgerPredFailure p x -ppLEDGER p@Mary x = ppShelleyLedgerPredFailure p x -ppLEDGER p@Alonzo x = ppShelleyLedgerPredFailure p x -ppLEDGER p@Babbage x = ppShelleyLedgerPredFailure p x -ppLEDGER p@Conway x = ppConwayLedgerPredFailure p x - -ppUTXO :: Proof era -> PredicateFailure (EraRule "UTXO" era) -> PDoc -ppUTXO Shelley x = ppShelleyUtxoPredFailure x -ppUTXO Allegra x = ppAllegraUtxoPredFailure x -ppUTXO Mary x = ppAllegraUtxoPredFailure x -ppUTXO Alonzo x = ppAlonzoUtxoPredFailure x -ppUTXO Babbage x = ppBabbageUtxoPredFailure x -ppUTXO Conway x = ppBabbageUtxoPredFailure x - -ppLEDGERS :: Proof era -> PredicateFailure (EraRule "LEDGERS" era) -> PDoc -ppLEDGERS p@Shelley x = unReflect ppShelleyLedgersPredFailure p x -ppLEDGERS p@Allegra x = unReflect ppShelleyLedgersPredFailure p x -ppLEDGERS p@Mary x = unReflect ppShelleyLedgersPredFailure p x -ppLEDGERS p@Alonzo x = unReflect ppShelleyLedgersPredFailure p x -ppLEDGERS p@Babbage x = unReflect ppShelleyLedgersPredFailure p x -ppLEDGERS p@Conway x = unReflect ppShelleyLedgersPredFailure p x - -ppDELPL :: Proof era -> PredicateFailure (EraRule "DELPL" era) -> PDoc -ppDELPL p@Shelley x = ppShelleyDelplPredFailure p x -ppDELPL p@Allegra x = ppShelleyDelplPredFailure p x -ppDELPL p@Mary x = ppShelleyDelplPredFailure p x -ppDELPL p@Alonzo x = ppShelleyDelplPredFailure p x -ppDELPL p@Babbage x = ppShelleyDelplPredFailure p x -ppDELPL p@Conway _ = - error - ( "Only the Shelley, Allegra, Mary, Alonzo, and Babbage era have a (PredicateFailure (EraRule \"DELPL\" era))." - ++ "This Era is " - ++ show p - ) - -ppNEWEPOCH :: Proof era -> PredicateFailure (EraRule "NEWEPOCH" era) -> PDoc -ppNEWEPOCH Shelley x = ppShelleyNewEpochPredicateFailure x -ppNEWEPOCH Allegra x = ppShelleyNewEpochPredicateFailure x -ppNEWEPOCH Mary x = ppShelleyNewEpochPredicateFailure x -ppNEWEPOCH Alonzo x = ppShelleyNewEpochPredicateFailure x -ppNEWEPOCH Babbage x = ppShelleyNewEpochPredicateFailure x -ppNEWEPOCH Conway x = ppConwayNewEpochPredFailure x - -ppEPOCH :: Proof era -> PredicateFailure (EraRule "EPOCH" era) -> PDoc -ppEPOCH Shelley x = ppShelleyEpochPredFailure x -ppEPOCH Allegra x = ppShelleyEpochPredFailure x -ppEPOCH Mary x = ppShelleyEpochPredFailure x -ppEPOCH Alonzo x = ppShelleyEpochPredFailure x -ppEPOCH Babbage x = ppShelleyEpochPredFailure x -ppEPOCH Conway _ = ppString "PredicateFailure (ConwayEPOCH era) = Void, and can never Fail" - --- | A bit different since it is NOT of the form: PredicateFailure (EraRule "UPEC" era) --- but instead, the type family UpecPredFailurePV pv era --- where, type UpecPredFailure era = UpecPredFailurePV (ProtVerLow era) era --- But the effect is still the same. The Proof era, fixes the type family result. -ppUPEC :: Proof era -> UpecPredFailure era -> PDoc -ppUPEC Shelley x = ppUpecPredicateFailure x -ppUPEC Mary x = ppUpecPredicateFailure x -ppUPEC Alonzo x = ppUpecPredicateFailure x -ppUPEC Allegra x = ppUpecPredicateFailure x -ppUPEC Babbage x = ppUpecPredicateFailure x -ppUPEC Conway x = absurd x - --- | A bit different since it is NOT of the form: PredicateFailure (EraRule "LEDGERS" era) --- but instead: State (EraRule "LEDGERS" era) --- But the effect is still the same. The Proof era, fixes the type family result. -ppStateLEDGERS :: Proof era -> State (EraRule "LEDGERS" era) -> PDoc -ppStateLEDGERS p@Shelley = pcLedgerState p -ppStateLEDGERS p@Allegra = pcLedgerState p -ppStateLEDGERS p@Mary = pcLedgerState p -ppStateLEDGERS p@Alonzo = pcLedgerState p -ppStateLEDGERS p@Babbage = pcLedgerState p -ppStateLEDGERS p@Conway = pcLedgerState p - --- ============================================================================ --- pretty printers for concrete types that are the target of PredicateFailure type instances - -ppShelleyDelegsPredFailure :: forall era. Proof era -> ShelleyDelegsPredFailure era -> PDoc -ppShelleyDelegsPredFailure _ (Shelley.DelegateeNotRegisteredDELEG x) = pcKeyHash x -ppShelleyDelegsPredFailure _ (WithdrawalsNotInRewardsDELEGS x) = ppMap pcRewardAccount pcCoin x -ppShelleyDelegsPredFailure p (DelplFailure x) = ppDELPL p x - -instance Reflect era => PrettyA (ShelleyDelegsPredFailure era) where - prettyA = ppShelleyDelegsPredFailure reify - -ppBabbageUtxoPredFailure :: Reflect era => BabbageUtxoPredFailure era -> PDoc -ppBabbageUtxoPredFailure (AlonzoInBabbageUtxoPredFailure x) = ppAlonzoUtxoPredFailure x -ppBabbageUtxoPredFailure (IncorrectTotalCollateralField c1 c2) = - ppRecord - "IncorrectTotalCollateralField" - [("collateral provided", prettyA c1), ("collateral declared", prettyA c2)] -ppBabbageUtxoPredFailure (BabbageOutputTooSmallUTxO xs) = - ppSexp "BabbageOutputTooSmallUTxO" [ppList (ppPair (pcTxOut reify) pcCoin) xs] -ppBabbageUtxoPredFailure (BabbageNonDisjointRefInputs xs) = - ppSexp "BabbageNonDisjointRefInputs" [ppList pcTxIn (toList xs)] - -instance Reflect era => PrettyA (BabbageUtxoPredFailure era) where - prettyA = ppBabbageUtxoPredFailure - -ppShelleyLedgersPredFailure :: Reflect era => Proof era -> ShelleyLedgersPredFailure era -> PDoc -ppShelleyLedgersPredFailure p (LedgerFailure x) = ppLEDGER p x - -instance Reflect era => PrettyA (ShelleyLedgersPredFailure era) where - prettyA = ppShelleyLedgersPredFailure reify - -ppConwayLedgerPredFailure :: Reflect era => Proof era -> ConwayLedgerPredFailure era -> PDoc -ppConwayLedgerPredFailure proof x = case x of - ConwayWdrlNotDelegatedToDRep s -> ppSexp "ConwayWdrlNotDelegatedToDRep" [ppSet pcCredential s] - ConwayTreasuryValueMismatch c1 c2 -> ppSexp "ConwayTreasuryValueMismatch" [pcCoin c1, pcCoin c2] - ConwayGovFailure y -> case proof of - Conway -> ppSexp "ConwayGovFailure" [ppConwayGovPredFailure y] - _ -> - error - ("Only the ConwayEra has a (PredicateFailure (EraRule \"GOV\" era)). This Era is " ++ show proof) - ConwayUtxowFailure y -> ppUTXOW proof y - {- case proof of -- (PredicateFailure (EraRule "UTXOW" era)) - Shelley -> ppShelleyUtxowPredFailure y - Allegra -> ppShelleyUtxowPredFailure y - Mary -> ppShelleyUtxowPredFailure y - Alonzo -> ppAlonzoUtxowPredFailure y - Babbage -> ppBabbageUtxowPredFailure proof y - Conway -> ppBabbageUtxowPredFailure proof y -} - ConwayCertsFailure pf -> case proof of - Conway -> ppConwayCertsPredFailure proof pf - _ -> - error - ("Only the ConwayEra has a (PredicateFailure (EraRule \"CERTS\" era)). This Era is " ++ show proof) - -instance Reflect era => PrettyA (ConwayLedgerPredFailure era) where - prettyA = ppConwayLedgerPredFailure reify - -ppConwayCertPredFailure :: Proof era -> ConwayRules.ConwayCertPredFailure era -> PDoc -ppConwayCertPredFailure proof x = case x of - ConwayRules.DelegFailure pf -> ppSexp "DelegFailure" [ppDELEG proof pf] -- (PredicateFailure (EraRule "DELEG" era)) - ConwayRules.PoolFailure pf -> ppSexp ".PoolFailure" [ppPOOL proof pf] -- (PredicateFailure (EraRule "POOL" era)) - ConwayRules.GovCertFailure pf -> case proof of - Conway -> ppSexp "GovCertFailure" [ppConwayGovCertPredFailure pf] -- (PredicateFailure (EraRule "GOVCERT" era)) - _ -> - error - ( "Only the ConwayEra has a (PredicateFailure (EraRule \"GOVCERT\" era)). This Era is " ++ show proof - ) - -instance Reflect era => PrettyA (ConwayRules.ConwayCertPredFailure era) where - prettyA = ppConwayCertPredFailure reify - -ppConwayGovCertPredFailure :: ConwayGovCertPredFailure era -> PDoc -ppConwayGovCertPredFailure z = case z of - ConwayDRepAlreadyRegistered x -> ppSexp "ConwayDRepAlreadyRegistered" [pcCredential x] - ConwayDRepNotRegistered x -> ppSexp "ConwayDRepNotRegistered" [pcCredential x] - ConwayDRepIncorrectDeposit c1 c2 -> ppSexp "ConwayDRepIncorrectDeposit" [pcCoin c1, pcCoin c2] - ConwayCommitteeHasPreviouslyResigned x -> ppSexp "ConwayCommitteeHasPreviouslyResigned" [pcCredential x] - ConwayDRepIncorrectRefund c1 c2 -> ppSexp "ConwayDRepIncorrectRefund" [pcCoin c1, pcCoin c2] - -instance PrettyA (ConwayGovCertPredFailure era) where - prettyA = ppConwayGovCertPredFailure - -ppConwayCertsPredFailure :: Proof era -> ConwayCertsPredFailure era -> PDoc -ppConwayCertsPredFailure proof x = case x of - ConwayRules.DelegateeNotRegisteredDELEG kh -> ppSexp "DelegateeNotRegisteredDELEG" [pcKeyHash kh] - WithdrawalsNotInRewardsCERTS m -> ppSexp "WithdrawalsNotInRewardsCERTS" [ppMap pcRewardAccount pcCoin m] - CertFailure pf -> case proof of - Conway -> ppSexp " CertFailure" [ppConwayCertPredFailure proof pf] -- !(PredicateFailure (EraRule "CERT" era)) - _ -> - error - ("Only the ConwayEra has a (PredicateFailure (EraRule \"CERT\" era)). This Era is " ++ show proof) - -instance Reflect era => PrettyA (ConwayCertsPredFailure era) where - prettyA = ppConwayCertsPredFailure reify - -ppConwayGovPredFailure :: ConwayGovPredFailure era -> PDoc -ppConwayGovPredFailure x = case x of - GovActionsDoNotExist c -> ppSexp "GovActionsDoNotExist" [prettyA c] - MalformedProposal ga -> ppSexp " MalformedProposal" [pcGovAction ga] -- (GovAction era) - ProposalProcedureNetworkIdMismatch racnt nw -> - ppSexp "ProposalProcedureNetworkIdMismatch" [pcRewardAccount racnt, pcNetwork nw] - TreasuryWithdrawalsNetworkIdMismatch sr nw -> - ppSexp "TreasuryWithdrawalsNetworkIdMismatch" [ppSet pcRewardAccount sr, pcNetwork nw] - ProposalDepositIncorrect c1 c2 -> ppSexp "ProposalDepositIncorrect" [pcCoin c1, pcCoin c2] - DisallowedVoters m -> ppSexp "DisallowedVoters" [prettyA m] - ConflictingCommitteeUpdate s -> - ppSexp "ConflictingCommitteeUpdate" [ppSet pcCredential s] - ExpirationEpochTooSmall m -> ppSexp " ExpirationEpochTooSmall" [ppMap pcCredential ppEpochNo m] - InvalidPrevGovActionId p -> ppSexp "InvalidPrevGovActionId" [pcProposalProcedure p] - VotingOnExpiredGovAction m -> - ppSexp "VotingOnExpiredGovAction" [prettyA m] - ProposalCantFollow s1 p1 p2 -> - ppSexp "ProposalCantFollow" [ppStrictMaybe pcGovPurposeId s1, ppProtVer p1, ppProtVer p2] - InvalidPolicyHash a b -> - ppSexp "InvalidPolicyHash" [ppStrictMaybe prettyA a, ppStrictMaybe prettyA b] - -instance PrettyA (ConwayGovPredFailure era) where - prettyA = ppConwayGovPredFailure - --- Note there is both: ppShelleyLedgerPredFailure and ppShelleyLedgersPredFailure (Ledger vs Ledgers) -ppShelleyLedgerPredFailure :: Reflect era => Proof era -> ShelleyLedgerPredFailure era -> PDoc -ppShelleyLedgerPredFailure proof (UtxowFailure x) = ppUTXOW proof x -ppShelleyLedgerPredFailure proof (DelegsFailure x) = ppDELEGS proof x - -instance Reflect era => PrettyA (ShelleyLedgerPredFailure era) where - prettyA = ppShelleyLedgerPredFailure reify - -ppBabbageUtxowPredFailure :: - Reflect era => - Proof era -> - BabbageUtxowPredFailure era -> - PDoc -ppBabbageUtxowPredFailure proof failure = case failure of - AlonzoInBabbageUtxowPredFailure x -> ppSexp "AlonzoInBabbageUtxowPredFailure" [ppAlonzoUtxowPredFailure x] - Cardano.Ledger.Babbage.Rules.UtxoFailure x -> ppSexp "UtxoFailure" [ppUTXO proof x] - MalformedScriptWitnesses x -> ppSexp "MalformedScriptWitnesses" [ppSet pcScriptHash x] - MalformedReferenceScripts x -> ppSexp "MalformedReferenceScripts" [ppSet pcScriptHash x] -- !(Set (ScriptHash (EraCrypto era))) - -instance - Reflect era => - PrettyA (BabbageUtxowPredFailure era) - where - prettyA = ppBabbageUtxowPredFailure reify - --- ================ - -ppBbodyPredicateFailure :: forall era. Reflect era => ShelleyBbodyPredFailure era -> PDoc -ppBbodyPredicateFailure (WrongBlockBodySizeBBODY x y) = - ppRecord - "WrongBlockBodySizeBBODY" - [ ("actual computed BBody size", ppInt x) - , ("claimed BBody Size in Header", ppInt y) - ] -ppBbodyPredicateFailure (InvalidBodyHashBBODY h1 h2) = - ppRecord - "(InvalidBodyHashBBODY" - [ ("actual hash", ppHash h1) - , ("claimed hash", ppHash h2) - ] -ppBbodyPredicateFailure (LedgersFailure x) = - ppSexp "LedgersFailure" [ppLEDGERS @era reify x] - -instance Reflect era => PrettyA (ShelleyBbodyPredFailure era) where - prettyA = ppBbodyPredicateFailure - --- ================ - -ppAlonzoBbodyPredFail :: Reflect era => AlonzoBbodyPredFailure era -> PDoc -ppAlonzoBbodyPredFail (ShelleyInAlonzoBbodyPredFailure x) = - ppSexp "ShelleyInAlonzoPredFail" [ppBbodyPredicateFailure x] -ppAlonzoBbodyPredFail (TooManyExUnits e1 e2) = - ppRecord - "TooManyExUnits" - [ ("Computed Sum of ExUnits for all plutus scripts", pcExUnits e1) - , ("Maximum allowed by protocal parameters", pcExUnits e2) - ] - -instance Reflect era => PrettyA (AlonzoBbodyPredFailure era) where - prettyA = ppAlonzoBbodyPredFail - --- =============== -ppTickPredicateFailure :: - forall era. - Reflect era => - ShelleyTickPredFailure era -> - PDoc -ppTickPredicateFailure (NewEpochFailure x) = ppNEWEPOCH @era reify x -ppTickPredicateFailure (RupdFailure _) = - ppString "RupdPredicateFailure has no constructors" - -instance Reflect era => PrettyA (ShelleyTickPredFailure era) where - prettyA = ppTickPredicateFailure - -ppShelleyNewEpochPredicateFailure :: - forall era. Reflect era => ShelleyNewEpochPredFailure era -> PDoc -ppShelleyNewEpochPredicateFailure (EpochFailure x) = ppEPOCH @era reify x -ppShelleyNewEpochPredicateFailure (CorruptRewardUpdate x) = - ppSexp "CorruptRewardUpdate" [ppRewardUpdate x] -ppShelleyNewEpochPredicateFailure (MirFailure _) = - error "In the Conway era, there is no (EraRule MIR) type instance." - -instance Reflect era => PrettyA (ShelleyNewEpochPredFailure era) where - prettyA = ppShelleyNewEpochPredicateFailure - -ppConwayNewEpochPredFailure :: ConwayNewEpochPredFailure era -> PDoc -ppConwayNewEpochPredFailure (ConwayRules.CorruptRewardUpdate x) = - ppSexp "CorruptRewardUpdate" [ppRewardUpdate x] - -instance PrettyA (ConwayNewEpochPredFailure era) where - prettyA = ppConwayNewEpochPredFailure - --- =============== - -ppShelleyEpochPredFailure :: forall era. Reflect era => ShelleyEpochPredFailure era -> PDoc -ppShelleyEpochPredFailure (PoolReapFailure _) = - ppString "PoolreapPredicateFailure has no constructors" -ppShelleyEpochPredFailure (SnapFailure _) = - ppString "SnapPredicateFailure has no constructors" -ppShelleyEpochPredFailure (UpecFailure x) = ppUPEC @era reify x - -instance Reflect era => PrettyA (ShelleyEpochPredFailure era) where - prettyA = ppShelleyEpochPredFailure - --- This type has no constructors, so the show instance is fine. -instance PrettyA (ShelleyPoolreapPredFailure era) where - prettyA = viaShow - --- This type has no constructors, so the show instance is fine. -instance PrettyA (ShelleySnapPredFailure era) where - prettyA = viaShow - --- =============== - -ppUpecPredicateFailure :: ShelleyUpecPredFailure era -> PDoc -ppUpecPredicateFailure (NewPpFailure x) = ppNewppPredicateFailure x - -instance PrettyA (ShelleyUpecPredFailure era) where - prettyA = ppUpecPredicateFailure - --- =============== -ppNewppPredicateFailure :: ShelleyNewppPredFailure era -> PDoc -ppNewppPredicateFailure (UnexpectedDepositPot c1 c2) = - ppRecord - "UnexpectedDepositPot" - [ ("The total outstanding deposits", pcCoin c1) - , ("The deposit pot", pcCoin c2) - ] - -instance PrettyA (ShelleyNewppPredFailure era) where prettyA = ppNewppPredicateFailure - --- ========================================= --- Predicate Failure for Alonzo UTXOW - -ppAlonzoUtxowPredFailure :: - Reflect era => - AlonzoUtxowPredFailure era -> - PDoc -ppAlonzoUtxowPredFailure (ShelleyInAlonzoUtxowPredFailure x) = prettyA x -ppAlonzoUtxowPredFailure (MissingRedeemers xs) = - ppSexp "MissingRedeemers" [ppList (ppPair ppPlutusPurposeAsItem prettyA) xs] -ppAlonzoUtxowPredFailure (MissingRequiredDatums s1 s2) = - ppRecord - "MissingRequiredDatums" - [ ("missing data hashes", ppSet ppSafeHash s1) - , ("received data hashes", ppSet ppSafeHash s2) - ] -ppAlonzoUtxowPredFailure (NotAllowedSupplementalDatums s1 s2) = - ppRecord - "NotAllowedSupplementalDatums" - [ ("unallowed data hashes", ppSet ppSafeHash s1) - , ("acceptable data hashes", ppSet ppSafeHash s2) - ] -ppAlonzoUtxowPredFailure (PPViewHashesDontMatch h1 h2) = - ppRecord - "PPViewHashesDontMatch" - [ ("PPHash in the TxBody", ppStrictMaybe ppSafeHash h1) - , ("PPHash Computed from the current Protocol Parameters", ppStrictMaybe ppSafeHash h2) - ] -ppAlonzoUtxowPredFailure (MissingRequiredSigners x) = - ppSexp "MissingRequiredSigners" [ppSet pcKeyHash x] -ppAlonzoUtxowPredFailure (UnspendableUTxONoDatumHash x) = - ppSexp "UnspendableUTxONoDatumHash" [ppSet pcTxIn x] -ppAlonzoUtxowPredFailure (ExtraRedeemers x) = - ppSexp "ExtraRedeemers" [ppList ppPlutusPurposeAsIx x] - -instance - Reflect era => - PrettyA (AlonzoUtxowPredFailure era) - where - prettyA = ppAlonzoUtxowPredFailure - --- ==================================================== --- Predicate Failure for Shelley UTXOW - -ppShelleyUtxowPredFailure :: forall era. Reflect era => ShelleyUtxowPredFailure era -> PDoc -ppShelleyUtxowPredFailure (InvalidWitnessesUTXOW vkeyws) = - ppSexp "InvalidWitnessesUTXOW" [ppList ppVKey vkeyws] -ppShelleyUtxowPredFailure (MissingVKeyWitnessesUTXOW whs) = - ppSexp "MissingVKeyWitnessesUTXOW" [ppWitHashes whs] -ppShelleyUtxowPredFailure (MissingScriptWitnessesUTXOW m) = - ppSexp "MissingScriptWitnessesUTXOW" [ppSet pcScriptHash m] -ppShelleyUtxowPredFailure (ScriptWitnessNotValidatingUTXOW m) = - ppSexp "ScriptWitnessNotValidatingUTXOW" [ppSet pcScriptHash m] -ppShelleyUtxowPredFailure (Shelley.UtxoFailure m) = ppSexp "UtxoFailure" [ppUTXO (reify @era) m] -ppShelleyUtxowPredFailure (MIRInsufficientGenesisSigsUTXOW m) = - ppSexp "MIRInsufficientGenesisSigsUTXOW" [ppSet pcKeyHash m] -ppShelleyUtxowPredFailure (MissingTxBodyMetadataHash m) = - ppSexp " MissingTxMetadata" [ppAuxiliaryDataHash m] -ppShelleyUtxowPredFailure (MissingTxMetadata m) = - ppSexp " MissingTxMetadata" [ppAuxiliaryDataHash m] -ppShelleyUtxowPredFailure (ConflictingMetadataHash h1 h2) = - ppRecord - "ConflictingMetadataHash" - [("Hash in the body", ppAuxiliaryDataHash h1), ("Hash of full metadata", ppAuxiliaryDataHash h2)] -ppShelleyUtxowPredFailure InvalidMetadata = - ppSexp "InvalidMetadata" [] -ppShelleyUtxowPredFailure (ExtraneousScriptWitnessesUTXOW m) = - ppSexp "ExtraneousScriptWitnessesUTXOW" [ppSet pcScriptHash m] - -instance Reflect era => PrettyA (ShelleyUtxowPredFailure era) where - prettyA = ppShelleyUtxowPredFailure - --- ======================================================== --- Predicate Failure for Alonzo UTXO - -ppAlonzoUtxoPredFailure :: forall era. Reflect era => AlonzoUtxoPredFailure era -> PDoc -ppAlonzoUtxoPredFailure x = case x of - Alonzo.BadInputsUTxO txins -> ppSexp "BadInputsUTxO" [ppSet pcTxIn txins] - Alonzo.OutsideValidityIntervalUTxO vi slot -> - ppRecord - "OutsideValidityIntervalUTxO" - [ ("provided interval", ppValidityInterval vi) - , ("current slot", pcSlotNo slot) - ] - Alonzo.MaxTxSizeUTxO actual maxs -> - ppRecord "MaxTxSizeUTxO" [("Actual", ppInteger actual), ("max transaction size", ppInteger maxs)] - Alonzo.InputSetEmptyUTxO -> ppString "InputSetEmptyUTxO" - Alonzo.FeeTooSmallUTxO computed supplied -> - ppRecord - "FeeTooSmallUTxO" - [ ("min fee for this transaction", pcCoin computed) - , ("fee supplied by this transaction", pcCoin supplied) - ] - Alonzo.ValueNotConservedUTxO consumed produced -> - ppRecord - "ValueNotConservedUTxO" - [("coin consumed", pcVal @era reify consumed), ("coin produced", pcVal @era reify produced)] - Alonzo.WrongNetwork n add -> - ppRecord - "WrongNetwork" - [ ("expected network id", ppNetwork n) - , ("set of addresses with wrong network id", ppSet pcAddr add) - ] - Alonzo.WrongNetworkWithdrawal n accnt -> - ppRecord - "WrongNetworkWithdrawal" - [ ("expected network id", ppNetwork n) - , ("set reward address with wrong network id", ppSet pcRewardAccount accnt) - ] - Alonzo.OutputTooSmallUTxO xs -> - ppRecord - "OutputTooSmallUTxO" - [("list of supplied transaction outputs that are too small", ppList (pcTxOut reify) xs)] - Alonzo.UtxosFailure yy -> ppSexp "UtxosFailure" [ppUTXOS @era reify yy] - Alonzo.OutputBootAddrAttrsTooBig xs -> - ppRecord - "OutputBootAddrAttrsTooBig" - [("list of supplied bad transaction outputs", ppList (pcTxOut reify) xs)] - Alonzo.TriesToForgeADA -> ppString "TriesToForgeADA" - Alonzo.OutputTooBigUTxO xs -> - ppSexp - "OutputTooBigUTxO" - [ ppList - ( \(a, b, c) -> - ppRecord' - "" - [("actual size", ppInteger a), ("PParam max value", ppInteger b), ("TxOut", pcTxOut reify c)] - ) - xs - ] - InsufficientCollateral c1 c2 -> - ppRecord - "InsufficientCollateral" - [ ("balance computed", prettyA c1) - , ("the required collateral for the given fee", pcCoin c2) - ] - ScriptsNotPaidUTxO u -> ppSexp "ScriptsNotPaidUTxO" [pcUTxO reify u] - ExUnitsTooBigUTxO e1 e2 -> - ppRecord - "ExUnitsTooBigUTxO" - [ ("Max EXUnits from the protocol parameters", pcExUnits e1) - , ("EXUnits supplied", pcExUnits e2) - ] - CollateralContainsNonADA v -> ppSexp "CollateralContainsNonADA" [pcVal (reify @era) v] - WrongNetworkInTxBody n1 n2 -> - ppRecord - "WrongNetworkInTxBody" - [ ("Actual Network ID", ppNetwork n1) - , ("Network ID in transaction body", ppNetwork n2) - ] - OutsideForecast slot -> ppRecord "OutsideForecast" [("slot number outside consensus forecast range", pcSlotNo slot)] - TooManyCollateralInputs n1 n2 -> - ppRecord - "TooManyCollateralInputs" - [ ("Max allowed collateral inputs", ppNatural n1) - , ("Number of collateral inputs", ppNatural n2) - ] - NoCollateralInputs -> ppSexp " NoCollateralInputs" [] - -instance Reflect era => PrettyA (AlonzoUtxoPredFailure era) where - prettyA = ppAlonzoUtxoPredFailure - --- ================================= - -ppShelleyDelegPredFailure :: ShelleyDelegPredFailure era -> PDoc -ppShelleyDelegPredFailure x = case x of - StakeKeyAlreadyRegisteredDELEG cred -> ppSexp "StakeKeyAlreadyRegisteredDELEG" [pcCredential cred] - StakeKeyInRewardsDELEG cred -> ppSexp "StakeKeyInRewardsDELEG" [pcCredential cred] - Shelley.StakeKeyNotRegisteredDELEG cred -> ppSexp "StakeKeyNotRegisteredDELEG" [pcCredential cred] - StakeKeyNonZeroAccountBalanceDELEG mcoin -> ppSexp " StakeKeyNonZeroAccountBalanceDELEG" [ppMaybe pcCoin mcoin] - StakeDelegationImpossibleDELEG cred -> ppSexp "StakeDelegationImpossibleDELEG" [pcCredential cred] - WrongCertificateTypeDELEG -> ppSexp "WrongCertificateTypeDELEG" [] - GenesisKeyNotInMappingDELEG kh -> ppSexp "GenesisKeyNotInMappingDELEG" [pcKeyHash kh] - DuplicateGenesisDelegateDELEG kh -> ppSexp "DuplicateGenesisDelegateDELEG" [pcKeyHash kh] - InsufficientForInstantaneousRewardsDELEG pot c1 c2 -> - ppSexp - "InsufficientForInstantaneousRewardsDELEG" - [ppString (show pot), pcCoin c1, pcCoin c2] - MIRCertificateTooLateinEpochDELEG s1 s2 -> - ppSexp "MIRCertificateTooLateinEpochDELEG" [pcSlotNo s1, pcSlotNo s2] - DuplicateGenesisVRFDELEG hash -> ppSexp "DuplicateGenesisVRFDELEG" [ppHash hash] - MIRTransferNotCurrentlyAllowed -> ppString "MIRTransferNotCurrentlyAllowed" - MIRNegativesNotCurrentlyAllowed -> ppString " MIRNegativesNotCurrentlyAllowed" - InsufficientForTransferDELEG pot c1 c2 -> - ppSexp "InsufficientForTransferDELEG" [ppString (show pot), pcCoin c1, pcCoin c2] - MIRProducesNegativeUpdate -> ppString "MIRProducesNegativeUpdate" - MIRNegativeTransfer pot c1 -> ppSexp " MIRNegativeTransfer" [ppString (show pot), pcCoin c1] - -instance PrettyA (ShelleyDelegPredFailure era) where - prettyA = ppShelleyDelegPredFailure - -ppShelleyDelplPredFailure :: Proof era -> ShelleyDelplPredFailure era -> PDoc -ppShelleyDelplPredFailure p (PoolFailure x) = ppPOOL p x -ppShelleyDelplPredFailure p (DelegFailure x) = ppDELEG p x - -instance Reflect era => PrettyA (ShelleyDelplPredFailure era) where - prettyA = ppShelleyDelplPredFailure reify - -ppConwayDelegPredFailure :: ConwayDelegPredFailure era -> PDoc -ppConwayDelegPredFailure x = case x of - IncorrectDepositDELEG c -> ppSexp "IncorrectDepositDELEG" [pcCoin c] - StakeKeyRegisteredDELEG cred -> ppSexp "StakeKeyRegisteredDELEG" [pcCredential cred] - ConwayRules.StakeKeyNotRegisteredDELEG cred -> - ppSexp "StakeKeyNotRegisteredDELEG" [pcCredential cred] - StakeKeyHasNonZeroRewardAccountBalanceDELEG c -> - ppSexp "StakeKeyHasNonZeroRewardAccountBalanceDELEG" [pcCoin c] - DRepAlreadyRegisteredForStakeKeyDELEG cred -> - ppSexp "DRepAlreadyRegisteredForStakeKeyDELEG" [pcCredential cred] - -instance PrettyA (ConwayDelegPredFailure era) where - prettyA = ppConwayDelegPredFailure - -ppShelleyPoolPredFailure :: ShelleyPoolPredFailure era -> PDoc -ppShelleyPoolPredFailure (StakePoolNotRegisteredOnKeyPOOL kh) = - ppRecord - "StakePoolNotRegisteredOnKeyPOOL" - [ ("KeyHash", pcKeyHash kh) - ] -ppShelleyPoolPredFailure - ( StakePoolRetirementWrongEpochPOOL - curEpoch - poolRetEpoch - firstTooFarEpoch - ) = - ppRecord - "StakePoolRetirementWrongEpochPOOL" - [ ("Current Epoch", ppEpochNo curEpoch) - , ("Pool Retirement Epoch", ppEpochNo poolRetEpoch) - , ("First Epoch Too Far", ppEpochNo firstTooFarEpoch) - ] -ppShelleyPoolPredFailure - ( StakePoolCostTooLowPOOL - prcStakePoolCost - ppStakePoolCost - ) = - ppRecord - "StakePoolCostTooLowPOOL" - [ ("PRC Stake Pool Cost", pcCoin prcStakePoolCost) - , ("PP Stake Pool Cost", pcCoin ppStakePoolCost) - ] -ppShelleyPoolPredFailure - ( WrongNetworkPOOL - nwId - regCertNwId - stakePoolId - ) = - ppRecord - "WrongNetworkPOOL" - [ ("Network ID", ppNetwork nwId) - , ("Registration Certificate Network ID", ppNetwork regCertNwId) - , ("Stake Pool ID", pcKeyHash stakePoolId) - ] -ppShelleyPoolPredFailure - ( PoolMedataHashTooBig - stakePoolId - metadataHashSize - ) = - ppRecord - "PoolMedataHashTooBig" - [ ("Stake Pool ID", pcKeyHash stakePoolId) - , ("Metadata Hash Size", ppInt metadataHashSize) - ] - -instance PrettyA (ShelleyPoolPredFailure era) where - prettyA = ppShelleyPoolPredFailure - --- ========================================= --- Predicate Failure for Alonzo UTXOS - -ppUtxosPredicateFailure :: - forall era. - Reflect era => - AlonzoUtxosPredFailure era -> - PDoc -ppUtxosPredicateFailure (ValidationTagMismatch isvalid tag) = - ppRecord - "ValidationTagMismatch" - [ ("isValid tag", ppIsValid isvalid) - , ("mismatch description", ppTagMismatchDescription tag) - ] -ppUtxosPredicateFailure (CollectErrors es) = - ppRecord' - mempty - [ - ( "When collecting inputs for twophase scripts, these went wrong." - , ppList ppCollectError es - ) - ] -ppUtxosPredicateFailure (Alonzo.UpdateFailure p) = ppPPUPPredFailure p - -instance Reflect era => PrettyA (AlonzoUtxosPredFailure era) where - prettyA = ppUtxosPredicateFailure - -instance Reflect era => PrettyA (ConwayUtxosPredFailure era) where - prettyA = \case - ConwayRules.ValidationTagMismatch isvalid tag -> - ppRecord - "ValidationTagMismatch" - [ ("isValid tag", ppIsValid isvalid) - , ("mismatch description", ppTagMismatchDescription tag) - ] - ConwayRules.CollectErrors es -> - ppRecord' - mempty - [ - ( "When collecting inputs for twophase scripts, these went wrong." - , ppList ppCollectError es - ) - ] - -ppCollectError :: - Reflect era => - CollectError era -> - PDoc -ppCollectError (NoRedeemer sp) = ppSexp "NoRedeemer" [ppPlutusPurposeAsItem sp] -ppCollectError (NoWitness sh) = ppSexp "NoWitness" [prettyA sh] -ppCollectError (NoCostModel l) = ppSexp "NoCostModel" [ppLanguage l] -ppCollectError (BadTranslation x) = ppSexp "BadTranslation" [ppContextError x] - -ppContextError :: forall era. Reflect era => ContextError era -> PDoc -ppContextError e = - case reify @era of - Shelley -> error "Unsuported" - Allegra -> error "Unsuported" - Mary -> error "Unsuported" - Alonzo -> ppString (show e) - Babbage -> ppString (show e) - Conway -> ppString (show e) - -ppPlutusPurposeAsIx :: Reflect era => PlutusPurpose AsIx era -> PDoc -ppPlutusPurposeAsIx = ppPlutusPurpose @AsIx - -ppPlutusPurposeAsItem :: Reflect era => PlutusPurpose AsItem era -> PDoc -ppPlutusPurposeAsItem = ppPlutusPurpose @AsItem - -ppPlutusPurposeAsIxItem :: Reflect era => PlutusPurpose AsIxItem era -> PDoc -ppPlutusPurposeAsIxItem = ppPlutusPurpose @AsIxItem - -ppPlutusPurpose :: - forall f era. - (Reflect era, forall ix it. (PrettyA ix, PrettyA it) => PrettyA (f ix it)) => - PlutusPurpose f era -> - PDoc -ppPlutusPurpose p = - case reify @era of - Shelley -> error "Unsuported" - Allegra -> error "Unsuported" - Mary -> error "Unsuported" - Alonzo -> prettyA p - Babbage -> prettyA p - Conway -> prettyA p - -instance Reflect era => PrettyA (CollectError era) where - prettyA = ppCollectError - -ppTagMismatchDescription :: TagMismatchDescription -> PDoc -ppTagMismatchDescription PassedUnexpectedly = ppSexp "PassedUnexpectedly" [] -ppTagMismatchDescription (FailedUnexpectedly xs) = - ppSexp "FailedUnexpectedly" [ppList ppFailureDescription (toList xs)] - -instance PrettyA TagMismatchDescription where - prettyA = ppTagMismatchDescription - -ppFailureDescription :: FailureDescription -> PDoc -ppFailureDescription (PlutusFailure txt bytes) = - ppRecord "PlutusFailure" [("reason", text txt), ("script", ppLong bytes)] - -instance PrettyA FailureDescription where - prettyA = ppFailureDescription - --- ======================================= --- Predicate Failure for Shelley UTxO - -ppShelleyUtxoPredFailure :: forall era. Reflect era => ShelleyUtxoPredFailure era -> PDoc -ppShelleyUtxoPredFailure (Shelley.BadInputsUTxO x) = - ppSexp "BadInputsUTxO" [ppSet pcTxIn x] -ppShelleyUtxoPredFailure (Shelley.ExpiredUTxO ttl slot) = - ppRecord "ExpiredUTxO" [("transaction time to live", pcSlotNo ttl), ("current slot", pcSlotNo slot)] -ppShelleyUtxoPredFailure (Shelley.MaxTxSizeUTxO actual maxs) = - ppRecord - "MaxTxSizeUTxO" - [ ("Actual", ppInteger actual) - , ("max transaction size", ppInteger maxs) - ] -ppShelleyUtxoPredFailure (Shelley.InputSetEmptyUTxO) = - ppSexp "InputSetEmptyUTxO" [] -ppShelleyUtxoPredFailure (Shelley.FeeTooSmallUTxO computed supplied) = - ppRecord - "FeeTooSmallUTxO" - [ ("min fee for this transaction", pcCoin computed) - , ("fee supplied by this transaction", pcCoin supplied) - ] -ppShelleyUtxoPredFailure (Shelley.ValueNotConservedUTxO consumed produced) = - ppRecord - "ValueNotConservedUTxO" - [ ("coin consumed", pcVal @era reify consumed) - , ("coin produced", pcVal @era reify produced) - ] -ppShelleyUtxoPredFailure (Shelley.WrongNetwork n add) = - ppRecord - "WrongNetwork" - [ ("expected network id", ppNetwork n) - , ("set of addresses with wrong network id", ppSet pcAddr add) - ] -ppShelleyUtxoPredFailure (Shelley.WrongNetworkWithdrawal n accnt) = - ppRecord - "WrongNetworkWithdrawal" - [ ("expected network id", ppNetwork n) - , ("set of reward address with wrong network id", ppSet pcRewardAccount accnt) - ] -ppShelleyUtxoPredFailure (Shelley.OutputTooSmallUTxO xs) = - ppRecord - "OutputTooSmallUTxO" - [("list of supplied transaction outputs that are too small", ppList (pcTxOut reify) xs)] -ppShelleyUtxoPredFailure (Shelley.UpdateFailure x) = - ppSexp "UpdateFailure" [ppPPUPPredFailure x] -ppShelleyUtxoPredFailure (Shelley.OutputBootAddrAttrsTooBig xs) = - ppRecord - "OutputBootAddrAttrsTooBig" - [("list of supplied bad transaction outputs", ppList (pcTxOut reify) xs)] - -instance Reflect era => PrettyA (ShelleyUtxoPredFailure era) where - prettyA = ppShelleyUtxoPredFailure - --- ======================================= --- Predicate Failure for Shelley PPUP - -ppPpupPredicateFailure :: ShelleyPpupPredFailure era -> PDoc -ppPpupPredicateFailure (NonGenesisUpdatePPUP x y) = - ppRecord - "NonGenesisUpdatePPUP" - [ ("KeyHashes which are voting", ppSet pcKeyHash x) - , ("KeyHashes which should be voting", ppSet pcKeyHash y) - ] -ppPpupPredicateFailure (PPUpdateWrongEpoch x y z) = - ppRecord - "PPUpdateWrongEpoch" - [ ("current epoch", ppEpochNo x) - , ("intended epoch of update", ppEpochNo y) - , ("voting period within the epoch", ppString (show z)) - ] -ppPpupPredicateFailure (PVCannotFollowPPUP x) = - ppRecord "PVCannotFollowPPUP" [("the first bad protocol version", ppProtVer x)] - -instance PrettyA (ShelleyPpupPredFailure era) where - prettyA = ppPpupPredicateFailure - --- ===================================================== --- Predicate failure for Mary UTXO - -ppPPUPPredFailure :: a -> PDoc -ppPPUPPredFailure _ = ppString "PPUPPredFailure" -- TODO FIXME - -ppAllegraUtxoPredFailure :: - forall era. - Reflect era => - AllegraUtxoPredFailure era -> - PDoc -ppAllegraUtxoPredFailure (Allegra.BadInputsUTxO txins) = - ppSexp "BadInputsUTxO" [ppSet pcTxIn txins] -ppAllegraUtxoPredFailure (Allegra.OutsideValidityIntervalUTxO vi slot) = - ppRecord - "OutsideValidityIntervalUTxO" - [ ("provided interval", ppValidityInterval vi) - , ("current slot", pcSlotNo slot) - ] -ppAllegraUtxoPredFailure (Allegra.MaxTxSizeUTxO actual maxs) = - ppRecord - "MaxTxSizeUTxO" - [ ("Actual", ppInteger actual) - , ("max transaction size", ppInteger maxs) - ] -ppAllegraUtxoPredFailure (Allegra.InputSetEmptyUTxO) = ppSexp "InputSetEmptyUTxO" [] -ppAllegraUtxoPredFailure (Allegra.FeeTooSmallUTxO computed supplied) = - ppRecord - "FeeTooSmallUTxO" - [ ("min fee for this transaction", pcCoin computed) - , ("fee supplied by this transaction", pcCoin supplied) - ] -ppAllegraUtxoPredFailure (Allegra.ValueNotConservedUTxO consumed produced) = - ppRecord - "ValueNotConservedUTxO" - [ ("coin consumed", pcVal @era reify consumed) - , ("coin produced", pcVal @era reify produced) - ] -ppAllegraUtxoPredFailure (Allegra.WrongNetwork n add) = - ppRecord - "WrongNetwork" - [ ("expected network id", ppNetwork n) - , ("set of addresses with wrong network id", ppSet pcAddr add) - ] -ppAllegraUtxoPredFailure (Allegra.WrongNetworkWithdrawal n accnt) = - ppRecord - "WrongNetworkWithdrawal" - [ ("expected network id", ppNetwork n) - , ("set reward address with wrong network id", ppSet pcRewardAccount accnt) - ] -ppAllegraUtxoPredFailure (Allegra.OutputTooSmallUTxO xs) = - ppRecord - "OutputTooSmallUTxO" - [("list of supplied transaction outputs that are too small", ppList (pcTxOut reify) xs)] -ppAllegraUtxoPredFailure (Allegra.UpdateFailure x) = - ppSexp "UpdateFailure" [ppPPUPPredFailure x] -ppAllegraUtxoPredFailure (Allegra.OutputBootAddrAttrsTooBig xs) = - ppRecord - "OutputBootAddrAttrsTooBig" - [("list of supplied bad transaction outputs", ppList (pcTxOut reify) xs)] -ppAllegraUtxoPredFailure (Allegra.TriesToForgeADA) = ppSexp "TriesToForgeADA" [] -ppAllegraUtxoPredFailure (Allegra.OutputTooBigUTxO outs) = - ppRecord "OutputTooBigUTxO" [("list of TxOuts which are too big", ppList (pcTxOut reify) outs)] - -instance Reflect era => PrettyA (AllegraUtxoPredFailure era) where - prettyA = ppAllegraUtxoPredFailure - --- ========================================== --- LedgerState objects --- ========================================== - -ppBbodyState :: forall era. Reflect era => ShelleyBbodyState era -> PDoc -ppBbodyState (BbodyState ls (BlocksMade mp)) = - ppRecord - "BbodyState" - [ ("ledger state", ppStateLEDGERS @era reify ls) - , ("blocks made", ppMap pcKeyHash ppNatural mp) - ] - -instance Reflect era => PrettyA (ShelleyBbodyState era) where - prettyA = ppBbodyState - --- ======================================================= --- Summaries. A Summary prints just some information --- For examplle, just the size of a Map or List. - -txBodyFieldSummary :: EraTxBody era => TxBodyField era -> [(Text, PDoc)] -txBodyFieldSummary txb = case txb of - (Inputs s) -> [("Inputs", ppInt (Set.size s))] - (Collateral s) -> [("Collateral", ppInt (Set.size s))] - (RefInputs s) -> [("RefInputs", ppInt (Set.size s))] - (Outputs xs) -> [("Outputs", ppInt (length xs))] - (CollateralReturn (SJust _)) -> [("Collateral Return", ppString "?")] - (TotalCol (SJust c)) -> [("TotalCollateral", pcCoin c)] - (Certs xs) -> [("Certs", ppInt (length xs))] - (Withdrawals' x) -> [("Withdrawals", ppInt (Map.size (unWithdrawals x)))] - (Vldt x) -> [("Validity interval", ppValidityInterval x)] - (Txfee c) -> [("Fee", pcCoin c)] - (Update (SJust _)) -> [("Collateral Return", ppString "?")] - (ReqSignerHashes x) -> [("Required Signer hashes", ppInt (Set.size x))] - (Fields.Mint ma) -> [("Mint", ppInteger (Val.size (MaryValue mempty ma)) <> ppString " bytes")] - (WppHash (SJust _)) -> [("WppHash", ppString "?")] - (AdHash (SJust _)) -> [("AdHash", ppString "?")] - (Txnetworkid (SJust x)) -> [("Network id", ppNetwork x)] - _ -> [] - -bodySummary :: EraTxBody era => Proof era -> TxBody era -> PDoc -bodySummary proof txbody = - ppRecord - "TxBody" - (concat (map txBodyFieldSummary (abstractTxBody proof txbody))) - -witnessFieldSummary :: WitnessesField era -> (Text, PDoc) -witnessFieldSummary wit = case wit of - (AddrWits s) -> ("Address Witnesses", ppInt (Set.size s)) - (BootWits s) -> ("BootStrap Witnesses", ppInt (Set.size s)) - (ScriptWits s) -> ("Script Witnesses", ppInt (Map.size s)) - (DataWits m) -> ("Data Witnesses", ppInt (Map.size (unTxDats m))) - (RdmrWits redeemers) -> ("Redeemer Witnesses", ppInt (Map.size (unRedeemers redeemers))) - -witnessSummary :: Proof era -> TxWits era -> PDoc -witnessSummary proof txwits = - ppRecord - "Witnesses" - (map witnessFieldSummary (abstractWitnesses proof txwits)) - -txFieldSummary :: EraTxBody era => Proof era -> TxField era -> [PDoc] -txFieldSummary proof tx = case tx of - (Body b) -> [bodySummary proof b] - (BodyI xs) -> [ppRecord "TxBody" (concat (map txBodyFieldSummary xs))] - (TxWits ws) -> [witnessSummary proof ws] - (WitnessesI ws) -> [ppRecord "Witnesses" (map witnessFieldSummary ws)] - (AuxData (SJust _)) -> [ppSexp "AuxData" [ppString "?"]] - (Valid (IsValid b)) -> [ppSexp "IsValid" [ppBool b]] - _ -> [] - -txSummary :: EraTx era => Proof era -> Tx era -> PDoc -txSummary proof tx = - ppSexp "Tx" (concat (map (txFieldSummary proof) (abstractTx proof tx))) - --- ================================= --- Summary version of UTxO - -txInSummary :: TxIn era -> PDoc -txInSummary (TxIn (TxId h) n) = ppSexp "TxIn" [trim (ppSafeHash h), ppInt (txIxToInt n)] - -txOutSummary :: Proof era -> TxOut era -> PDoc -txOutSummary p@Conway (BabbageTxOut addr v d s) = - ppSexp - "TxOut" - [addrSummary addr, pcCoreValue p v, datumSummary d, ppStrictMaybe (scriptSummary p) s] -txOutSummary p@Babbage (BabbageTxOut addr v d s) = - ppSexp - "TxOut" - [addrSummary addr, pcCoreValue p v, datumSummary d, ppStrictMaybe (scriptSummary p) s] -txOutSummary p@Alonzo (AlonzoTxOut addr v md) = - ppSexp "TxOut" [addrSummary addr, pcCoreValue p v, ppStrictMaybe dataHashSummary md] -txOutSummary p@Mary (ShelleyTxOut addr v) = ppSexp "TxOut" [addrSummary addr, pcCoreValue p v] -txOutSummary p@Allegra (ShelleyTxOut addr v) = ppSexp "TxOut" [addrSummary addr, pcCoreValue p v] -txOutSummary p@Shelley (ShelleyTxOut addr v) = ppSexp "TxOut" [addrSummary addr, pcCoreValue p v] - -datumSummary :: Era era => Datum era -> PDoc -datumSummary NoDatum = ppString "NoDatum" -datumSummary (DatumHash h) = ppSexp "DHash" [trim (ppSafeHash h)] -datumSummary (Datum b) = dataSummary (binaryDataToData b) - -dataSummary :: Era era => Data era -> PDoc -dataSummary (Data x) = plutusDataSummary x - -plutusDataSummary :: PV1.Data -> PDoc -plutusDataSummary (PV1.Constr n ds) = (ppString (show n)) <> ppList plutusDataSummary ds -plutusDataSummary (PV1.Map ds) = ppString "Map" <> ppList (ppPair plutusDataSummary plutusDataSummary) ds -plutusDataSummary (PV1.List xs) = ppList plutusDataSummary xs -plutusDataSummary (PV1.I n) = ppInteger n -plutusDataSummary (PV1.B bs) = trim (ppLong bs) - -multiAssetSummary :: MultiAsset c -> PDoc -multiAssetSummary (MultiAsset m) = ppString ("num tokens = " ++ show (Map.size m)) - -vSummary :: MaryValue c -> PDoc -vSummary (MaryValue n ma) = - ppSexp "Value" [pcCoin n, multiAssetSummary ma] - -scriptSummary :: forall era. Proof era -> Script era -> PDoc -scriptSummary p@Conway script = plutusSummary p script -scriptSummary p@Babbage script = plutusSummary p script -scriptSummary p@Alonzo script = plutusSummary p script -scriptSummary Mary script = timelockSummary script -scriptSummary Allegra script = timelockSummary script -scriptSummary Shelley script = multiSigSummary script - -networkSummary :: Network -> PDoc -networkSummary Testnet = ppString "Test" -networkSummary Mainnet = ppString "Main" - -addrSummary :: Addr c -> PDoc -addrSummary (Addr nw pay stk) = - ppSexp "Addr" [networkSummary nw, credSummary pay, stakeSummary stk] -addrSummary (AddrBootstrap _) = ppString "Bootstrap" - -credSummary :: Credential keyrole c -> PDoc -credSummary (ScriptHashObj (ScriptHash h)) = ppSexp "Script" [trim (ppHash h)] -credSummary (KeyHashObj (KeyHash kh)) = ppSexp "Key" [trim (ppHash kh)] - -stakeSummary :: StakeReference c -> PDoc -stakeSummary StakeRefNull = ppString "Null" -stakeSummary (StakeRefPtr _) = ppString "Ptr" -stakeSummary (StakeRefBase x) = ppSexp "Stake" [credSummary (coerceKeyRole x)] - -utxoSummary :: Proof era -> UTxO era -> PDoc -utxoSummary proof = ppMap txInSummary (txOutSummary proof) . unUTxO - -utxoString :: Proof era -> UTxO era -> String -utxoString proof = show . ppMap txInSummary (txOutSummary proof) . unUTxO - -scriptHashSummary :: ScriptHash c -> PDoc -scriptHashSummary (ScriptHash h) = trim (ppHash h) - -keyHashSummary :: KeyHash keyrole c -> PDoc -keyHashSummary (KeyHash h) = trim (ppHash h) - -dataHashSummary :: DataHash era -> PDoc -dataHashSummary dh = trim (ppSafeHash dh) - -keyPairSummary :: Crypto c => KeyPair r c -> PDoc -keyPairSummary (KeyPair x y) = - ppRecord "KeyPair" [("vKey", vKeySummary x), ("sKey", viaShow y)] - -vKeySummary :: Crypto c => VKey r c -> PDoc -vKeySummary vk@(VKey x) = viaShow x <> " (hash " <> keyHashSummary (hashKey vk) <> ")" - -timelockSummary :: Era era => Timelock era -> PDoc -timelockSummary (RequireSignature akh) = - ppSexp "Signature" [keyHashSummary akh] -timelockSummary (RequireAllOf ms) = - ppSexp "AllOf" (foldr (:) [] (fmap timelockSummary ms)) -timelockSummary (RequireAnyOf ms) = - ppSexp "AnyOf" (foldr (:) [] (fmap timelockSummary ms)) -timelockSummary (RequireMOf m ms) = - ppSexp "MOfN" (ppInteger (fromIntegral m) : foldr (:) [] (fmap timelockSummary ms)) -timelockSummary (RequireTimeExpire mslot) = - ppSexp "Expires" [pcSlotNo mslot] -timelockSummary (RequireTimeStart mslot) = - ppSexp "Starts" [pcSlotNo mslot] - -multiSigSummary :: Era era => SS.MultiSig era -> PDoc -multiSigSummary (SS.RequireSignature hk) = ppSexp "ReqSig" [keyHashSummary hk] -multiSigSummary (SS.RequireAllOf ps) = ppSexp "AllOf" (map multiSigSummary ps) -multiSigSummary (SS.RequireAnyOf ps) = ppSexp "AnyOf" (map multiSigSummary ps) -multiSigSummary (SS.RequireMOf m ps) = ppSexp "MOf" (ppInt m : map multiSigSummary ps) - -plutusSummary :: forall era. Proof era -> AlonzoScript era -> PDoc -plutusSummary Conway s@(PlutusScript plutusScript) = - ppString (show (plutusScriptLanguage plutusScript) ++ " ") <> scriptHashSummary (hashScript @era s) -plutusSummary Conway (TimelockScript x) = timelockSummary x -plutusSummary Babbage s@(PlutusScript plutusScript) = - ppString (show (plutusScriptLanguage plutusScript) ++ " ") <> scriptHashSummary (hashScript @era s) -plutusSummary Babbage (TimelockScript x) = timelockSummary x -plutusSummary Alonzo s@(PlutusScript plutusScript) = - ppString (show (plutusScriptLanguage plutusScript) ++ " ") <> scriptHashSummary (hashScript @era s) -plutusSummary Alonzo (TimelockScript x) = timelockSummary x -plutusSummary other _ = ppString ("Plutus script in era " ++ show other ++ "???") - -dStateSummary :: DState c -> PDoc -dStateSummary (DState umap future (GenDelegs current) irwd) = - ppRecord - "DState" - [ ("Unified Reward Map", uMapSummary umap) - , ("Future genesis key delegations", ppInt (Map.size future)) - , ("Genesis key delegations", ppInt (Map.size current)) - , ("Instantaneous Rewards", instantSummary irwd) - ] - -instantSummary :: InstantaneousRewards c -> PDoc -instantSummary (InstantaneousRewards reserves treasury dreserves dtreasury) = - ppRecord - "InstantaneousRewards" - [ ("Rewards from reserves", ppInt (Map.size reserves)) - , ("Rewards from treasury", ppInt (Map.size treasury)) - , ("Treasury to reserves", pcDeltaCoin dreserves) - , ("Reserves to treasury", pcDeltaCoin dtreasury) - ] - -uMapSummary :: UM.UMap c -> PDoc -uMapSummary umap = - ppRecord - "UMap" - [ ("Reward-Deposit Map", ppInt (UM.size (UM.RewDepUView umap))) - , ("Ptrs Map", ppInt (UM.size (UM.PtrUView umap))) - , ("SPoolUView Map", ppInt (UM.size (UM.SPoolUView umap))) - , ("DRepUView Map", ppInt (UM.size (UM.DRepUView umap))) - ] - -pStateSummary :: PState c -> PDoc -pStateSummary (PState pp fpp retire deposit) = - ppRecord - "PState" - [ ("Pool parameters", ppInt (Map.size pp)) - , ("Future pool parameters", ppInt (Map.size fpp)) - , ("Retiring stake pools", ppInt (Map.size retire)) - , ("Deposits", ppInt (Map.size deposit)) - ] - -dpStateSummary :: CertState era -> PDoc -dpStateSummary (CertState v p d) = vsep [pcVState v, pStateSummary p, dStateSummary d] - --- ============================================= --- Pretty printers for more Ledger specific types - -pcTxId :: TxId c -> PDoc -pcTxId (TxId safehash) = trim (ppSafeHash safehash) - -instance PrettyA (TxId c) where prettyA = pcTxId - -pcTxIn :: TxIn c -> PDoc -pcTxIn (TxIn (TxId h) (TxIx i)) = parens (hsep [ppString "TxIn", trim (ppSafeHash h), ppWord64 i]) - -instance PrettyA (TxIn c) where prettyA = pcTxIn - -pcNetwork :: Network -> PDoc -pcNetwork Testnet = ppString "TestNet" -pcNetwork Mainnet = ppString "Mainnet" - -instance PrettyA Network where prettyA = pcNetwork - -pcKeyHash :: KeyHash discriminator c -> PDoc -pcKeyHash (KeyHash h) = trim (ppHash h) - -instance PrettyA (KeyHash d c) where prettyA = pcKeyHash - -pcCredential :: Credential keyrole c -> PDoc -pcCredential (ScriptHashObj (ScriptHash h)) = hsep [ppString "(Script", trim (ppHash h) <> ppString ")"] -pcCredential (KeyHashObj (KeyHash h)) = hsep [ppString "(Key", trim (ppHash h) <> ppString ")"] - -instance PrettyA (Credential keyrole c) where prettyA = pcCredential - -pcStakeReference :: StakeReference c -> PDoc -pcStakeReference StakeRefNull = ppString "Null" -pcStakeReference (StakeRefBase cred) = pcCredential cred -pcStakeReference (StakeRefPtr _) = ppString "Ptr" - -instance PrettyA (StakeReference c) where prettyA = pcStakeReference - -pcAddr :: Addr c -> PDoc -pcAddr (Addr nw pay stk) = - parens $ - hsep - [ ppString "Addr" - , pcNetwork nw - , pcCredential pay - , pcStakeReference stk - ] -pcAddr (AddrBootstrap _) = ppString "Bootstrap" - -instance PrettyA (Addr c) where prettyA = pcAddr - --- | Value is a type family, so it has no PrettyA instance. -pcCoreValue :: Proof era -> Value era -> PDoc -pcCoreValue Conway v = vSummary v -pcCoreValue Babbage v = vSummary v -pcCoreValue Alonzo v = vSummary v -pcCoreValue Mary v = vSummary v -pcCoreValue Allegra (Coin n) = hsep [ppString "₳", ppInteger n] -pcCoreValue Shelley (Coin n) = hsep [ppString "₳", ppInteger n] - -pcCoin :: Coin -> PDoc -pcCoin (Coin n) = hsep [ppString "₳", ppInteger n] - -instance PrettyA Coin where prettyA = pcCoin - -pcValue :: MaryValue c -> PDoc -pcValue (MaryValue n (MultiAsset m)) = - ppSexp - "Value" - [ pcCoin n - , -- , ppString ("num tokens = " ++ show (Map.size m)) - ppSet pcPolicyID (Map.keysSet m) - ] - -instance PrettyA (MaryValue c) where - prettyA = pcValue - -pcVal :: Proof era -> Value era -> PDoc -pcVal Shelley v = pcCoin v -pcVal Allegra v = pcCoin v -pcVal Mary v = pcValue v -pcVal Alonzo v = pcValue v -pcVal Babbage v = pcValue v -pcVal Conway v = pcValue v - -pcDatum :: Era era => Datum era -> PDoc -pcDatum NoDatum = ppString "NoDatum" -pcDatum (DatumHash h) = ppSexp "DHash" [trim (ppSafeHash h)] -pcDatum (Datum b) = pcData (binaryDataToData b) - -instance Era era => PrettyA (Datum era) where prettyA = pcDatum - -pcData :: forall era. Era era => Data era -> PDoc -pcData d@(Data (PV1.Constr n _)) = - ppSexp (pack ("Constr" ++ show n)) [ppString "Hash", trim $ ppSafeHash (hashData d)] -pcData d@(Data (PV1.Map _)) = - ppSexp "Map" [ppString "Hash", trim $ ppSafeHash (hashData d)] -pcData d@(Data (PV1.List _)) = - ppSexp "List" [ppString "Hash", trim $ ppSafeHash (hashData d)] -pcData d@(Data (PV1.I n)) = - ppSexp "I" [ppInteger n, ppString "Hash", trim $ ppSafeHash (hashData d)] -pcData d@(Data (PV1.B bytes)) = - ppSexp "B" [trim (viaShow bytes), ppString "Hash", trim $ ppSafeHash (hashData d)] - -instance Era era => PrettyA (Data era) where prettyA = pcData - -pcTimelock :: forall era. Reflect era => Timelock era -> PDoc -pcTimelock (RequireSignature akh) = ppSexp "Sign" [pcKeyHash akh] -pcTimelock (RequireAllOf ts) = ppSexp "AllOf" [ppList pcTimelock (toList ts)] -pcTimelock (RequireAnyOf ts) = ppSexp "AnyOf" [ppList pcTimelock (toList ts)] -pcTimelock (RequireMOf m ts) = ppSexp "MOfN" (ppInteger (fromIntegral m) : [ppList pcTimelock (toList ts)]) -pcTimelock (RequireTimeExpire mslot) = ppSexp "Expires" [pcSlotNo mslot] -pcTimelock (RequireTimeStart mslot) = ppSexp "Starts" [pcSlotNo mslot] - -instance Reflect era => PrettyA (Timelock era) where - prettyA = pcTimelock - -pcMultiSig :: Reflect era => PDoc -> SS.MultiSig era -> PDoc -pcMultiSig h (SS.RequireSignature hk) = ppSexp "ReqSig" [keyHashSummary hk, h] -pcMultiSig h (SS.RequireAllOf _) = ppSexp "AllOf" [h] -pcMultiSig h (SS.RequireAnyOf _) = ppSexp "AnyOf" [h] -pcMultiSig h (SS.RequireMOf m _) = ppSexp "MOf" [ppInt m, h] - -instance Reflect era => PrettyA (SS.MultiSig era) where - prettyA = pcMultiSig mempty - -pcScriptHash :: ScriptHash era -> PDoc -pcScriptHash (ScriptHash h) = trim (ppHash h) - -instance PrettyA (ScriptHash era) where - prettyA = pcScriptHash - -pcHashScript :: forall era. Reflect era => Proof era -> Script era -> PDoc -pcHashScript Conway s = ppString "Hash " <> pcScriptHash (hashScript @era s) -pcHashScript Babbage s = ppString "Hash " <> pcScriptHash (hashScript @era s) -pcHashScript Alonzo s = ppString "Hash " <> pcScriptHash (hashScript @era s) -pcHashScript Mary s = ppString "Hash " <> pcScriptHash (hashScript @era s) -pcHashScript Allegra s = ppString "Hash " <> pcScriptHash (hashScript @era s) -pcHashScript Shelley s = ppString "Hash " <> pcScriptHash (hashScript @era s) - -instance (Script era ~ AlonzoScript era, Reflect era) => PrettyA (AlonzoScript era) where - prettyA = pcScript reify - -pcDataHash :: DataHash era -> PDoc -pcDataHash dh = trim (ppSafeHash dh) - -instance PrettyA (DataHash era) where - prettyA = pcDataHash - -pcUTxO :: Proof era -> UTxO era -> PDoc -pcUTxO proof = ppMap pcTxIn (unReflect pcTxOut proof) . unUTxO - -instance Reflect era => PrettyA (UTxO era) where prettyA = pcUTxO reify - -pcPoolParams :: PoolParams era -> PDoc -pcPoolParams x = - ppRecord - "PoolParams" - [ ("Id", keyHashSummary (ppId x)) - , ("reward accnt", pcCredential (raCredential (ppRewardAccount x))) - ] - -instance PrettyA (PoolParams era) where prettyA = pcPoolParams - -pcDelegCert :: ShelleyDelegCert c -> PDoc -pcDelegCert (ShelleyRegCert cred) = ppSexp "ShelleyRegCert" [pcCredential cred] -pcDelegCert (ShelleyUnRegCert cred) = ppSexp "ShelleyUnRegCert" [pcCredential cred] -pcDelegCert (ShelleyDelegCert x y) = ppSexp "ShelleyDelegCert" [pcCredential x, pcKeyHash y] - -instance PrettyA (ShelleyDelegCert c) where prettyA = pcDelegCert - -pcPoolCert :: PoolCert c -> PDoc -pcPoolCert (RegPool poolp) = ppSexp "RegPool" [pcPoolParams poolp] -pcPoolCert (RetirePool keyhash epoch) = ppSexp "RetirePool" [pcKeyHash keyhash, ppEpochNo epoch] - -instance PrettyA (PoolCert c) where - prettyA = pcPoolCert - -pcShelleyTxCert :: ShelleyTxCert c -> PDoc -pcShelleyTxCert (ShelleyTxCertDelegCert x) = pcDelegCert x -pcShelleyTxCert (ShelleyTxCertPool x) = pcPoolCert x -pcShelleyTxCert (ShelleyTxCertGenesisDeleg _) = ppString "GenesisCert" -pcShelleyTxCert (ShelleyTxCertMir (MIRCert x (StakeAddressesMIR m))) = - ppRecord - "MIRStakeAdresses" - [ ("pot", ppString (show x)) - , ("Addresses", ppMap pcCredential pcDeltaCoin m) - ] -pcShelleyTxCert (ShelleyTxCertMir (MIRCert x (SendToOppositePotMIR c))) = - ppRecord - "MIROppositePot" - [ ("pot", ppString (show x)) - , ("Amount", pcCoin c) - ] - -instance PrettyA (ShelleyTxCert c) where - prettyA = pcShelleyTxCert - -pcConwayTxCert :: ConwayTxCert c -> PDoc -pcConwayTxCert (ConwayTxCertDeleg dc) = pcConwayDelegCert dc -pcConwayTxCert (ConwayTxCertPool poolc) = pcPoolCert poolc -pcConwayTxCert (ConwayTxCertGov x) = pcConwayGovCert x - -instance PrettyA (ConwayTxCert c) where - prettyA = pcConwayTxCert - -pcConwayGovCert :: ConwayGovCert c -> PDoc -pcConwayGovCert (ConwayRegDRep cred c smA) = - ppSexp "ConwayRegDRep" [pcCredential cred, pcCoin c, ppStrictMaybe pcAnchor smA] -pcConwayGovCert (ConwayUnRegDRep cred c) = - ppSexp "ConwayUnRegDRep" [pcCredential cred, pcCoin c] -pcConwayGovCert (ConwayUpdateDRep cred smA) = - ppSexp "ConwayUpdateDRep" [pcCredential cred, ppStrictMaybe pcAnchor smA] -pcConwayGovCert (ConwayAuthCommitteeHotKey cred1 cred2) = - ppSexp "ConwayAuthCommitteeHotKey" [pcCredential cred1, pcCredential cred2] -pcConwayGovCert (ConwayResignCommitteeColdKey cred anch) = - ppRecord - "ConwayResignCommitteeColdKey" - [("cred", pcCredential cred), ("anchor", ppStrictMaybe pcAnchor anch)] - -instance PrettyA (ConwayGovCert c) where - prettyA = pcConwayGovCert - -pcConwayDelegCert :: ConwayDelegCert c -> PDoc -pcConwayDelegCert (ConwayRegCert cred mcoin) = - ppSexp "RegCert" [pcCredential cred, ppStrictMaybe pcCoin mcoin] -pcConwayDelegCert (ConwayUnRegCert cred mcoin) = - ppSexp "UnRegCert" [pcCredential cred, ppStrictMaybe pcCoin mcoin] -pcConwayDelegCert (ConwayDelegCert cred d) = - ppSexp "DelegCert" [pcCredential cred, pcDelegatee d] -pcConwayDelegCert (ConwayRegDelegCert cred d c) = - ppSexp "RegDelegCert" [pcCredential cred, pcDelegatee d, pcCoin c] - -instance PrettyA (ConwayDelegCert c) where - prettyA = pcConwayDelegCert - -pcDelegatee :: Delegatee c -> PDoc -pcDelegatee (DelegStake kh) = ppSexp "DelegStake" [pcKeyHash kh] -pcDelegatee (DelegVote cred) = ppSexp "DelegVote" [pcDRep cred] -pcDelegatee (DelegStakeVote kh cred) = ppSexp "DelegStakeVote" [pcKeyHash kh, pcDRep cred] - -instance PrettyA (Delegatee c) where - prettyA = pcDelegatee - -pcTxCert :: Proof era -> TxCert era -> PDoc -pcTxCert Shelley x = pcShelleyTxCert x -pcTxCert Allegra x = pcShelleyTxCert x -pcTxCert Mary x = pcShelleyTxCert x -pcTxCert Alonzo x = pcShelleyTxCert x -pcTxCert Babbage x = pcShelleyTxCert x -pcTxCert Conway x = pcConwayTxCert x - -pcGovProcedures :: forall era. GovProcedures era -> PDoc -pcGovProcedures (GovProcedures vote proposal) = - ppRecord - "GovProcedure" - [ ("voting", pcVotingProcedures vote) - , ("proposal", ppList (pcProposalProcedure @era) (toList proposal)) - ] - -instance PrettyA (GovProcedures era) where - prettyA = pcGovProcedures - -pcVotingProcedures :: VotingProcedures era -> PDoc -pcVotingProcedures (VotingProcedures m) = - ppSexp "VotingProcedures" [ppMap pcVoter (ppMap pcGovActionId pcVotingProcedure) m] - -instance PrettyA (VotingProcedures era) where - prettyA = pcVotingProcedures - -pcProposalProcedure :: ProposalProcedure era -> PDoc -pcProposalProcedure (ProposalProcedure c rewacnt govact anch) = - ppRecord - "ProposalProcedure" - [ ("Deposit", pcCoin c) - , ("ReturnAddr", pcRewardAccount rewacnt) - , ("GovAction", pcGovAction govact) - , ("Anchor", pcAnchor anch) - ] - -instance PrettyA (ProposalProcedure era) where - prettyA = pcProposalProcedure - -pcVoter :: Voter c -> PDoc -pcVoter (CommitteeVoter cred) = ppSexp "CommitteeVoter" [pcCredential cred] -pcVoter (DRepVoter cred) = ppSexp "DRepVoter" [pcCredential cred] -pcVoter (StakePoolVoter keyhash) = ppSexp "StakePoolVoter" [pcKeyHash keyhash] - -instance PrettyA (Voter c) where - prettyA = pcVoter - -pcVotingProcedure :: VotingProcedure era -> PDoc -pcVotingProcedure (VotingProcedure v smA) = - ppRecord "VotingProcedure" [("vote", pcVote v), ("anchor", ppStrictMaybe pcAnchor smA)] - -instance PrettyA (VotingProcedure era) where - prettyA = pcVotingProcedure - --- ============================================================ - -pcRewardAccount :: RewardAccount c -> PDoc -pcRewardAccount (RewardAccount net cred) = ppSexp "RewardAccount" [pcNetwork net, pcCredential cred] - -instance PrettyA (RewardAccount c) where prettyA = pcRewardAccount - -pcExUnits :: ExUnits -> PDoc -pcExUnits (ExUnits mem step) = - ppSexp "ExUnits" [ppNatural mem, ppNatural step] - -instance PrettyA ExUnits where prettyA = pcExUnits - -pcPair :: (t1 -> PDoc) -> (t2 -> PDoc) -> (t1, t2) -> PDoc -pcPair pp1 pp2 (x, y) = parens (hsep [pp1 x, ppString ",", pp2 y]) - -pcWitVKey :: - forall era keyrole. - (Reflect era, Typeable keyrole) => - Proof era -> - WitVKey keyrole (EraCrypto era) -> - PDoc -pcWitVKey _p (WitVKey vk@(VKey x) sig) = - ppSexp - "WitVKey" - [ ppString (" VerKey=" ++ (take 10 (drop 19 keystring))) - , ppString (" SignKey=" ++ (take 10 (drop 29 sigstring))) - , " VerKeyHash=" <> hash - ] - where - keystring = show x - hash = pcKeyHash (hashKey vk) - sigstring = show sig - -instance - forall era c keyrole. - ( Reflect era - , c ~ EraCrypto era - , Typeable keyrole - ) => - PrettyA (WitVKey keyrole c) - where - prettyA = pcWitVKey @era reify - --- ===================================== --- Governance Actions etc - --- | GovState is a type family, No PrettyA instance -pcGovState :: Proof era -> GovState era -> PDoc -pcGovState p x = case whichGovState p of - (GovStateShelleyToBabbage) -> pcShelleyGovState p x - (GovStateConwayToConway) -> unReflect pcConwayGovState p x - -pcShelleyGovState :: Proof era -> ShelleyGovState era -> PDoc -pcShelleyGovState p (ShelleyGovState _proposal _futproposal pp prevpp) = - ppRecord - "ShelleyGovState" - [ ("proposals", ppString "(Proposals ...)") - , ("futureProposals", ppString "(Proposals ...)") - , ("pparams", pcPParamsSynopsis p pp) - , ("prevParams", pcPParamsSynopsis p prevpp) - ] - -instance Reflect era => PrettyA (ShelleyGovState era) where - prettyA = pcShelleyGovState reify - -pcEnactState :: Proof era -> EnactState era -> PDoc -pcEnactState p ens@(EnactState _ _ _ _ _ _ _) = - let EnactState {..} = ens - in ppRecord - "EnactState" - [ ("Constitutional Committee", ppStrictMaybe pcCommittee ensCommittee) - , ("Constitution", pcConstitution ensConstitution) - , ("CurPParams", pcPParamsSynopsis p ensCurPParams) - , ("PrevPParams", pcPParamsSynopsis p ensPrevPParams) - , ("Treasury", pcCoin ensTreasury) - , ("Withdrawals", ppMap pcCredential pcCoin ensWithdrawals) - , ("PrevGovActionIds", pcPrevGovActionIds ensPrevGovActionIds) - ] - -instance Reflect era => PrettyA (EnactState era) where - prettyA = pcEnactState reify - -pcGovActionId :: GovActionId c -> PDoc -pcGovActionId (GovActionId txid (GovActionIx a)) = ppSexp "GovActId" [pcTxId txid, ppWord32 a] - -instance PrettyA (GovActionId c) where - prettyA = pcGovActionId - -pcGovPurposeId :: GovPurposeId p era -> PDoc -pcGovPurposeId (GovPurposeId x) = pcGovActionId x - -pcPrevGovActionIds :: GovRelation StrictMaybe era -> PDoc -pcPrevGovActionIds GovRelation {grPParamUpdate, grHardFork, grCommittee, grConstitution} = - ppRecord - "PrevGovActionIds" - [ ("LastPParamUpdate", ppStrictMaybe pcGovPurposeId grPParamUpdate) - , ("LastHardFork", ppStrictMaybe pcGovPurposeId grHardFork) - , ("LastCommittee", ppStrictMaybe pcGovPurposeId grCommittee) - , ("LastConstitution", ppStrictMaybe pcGovPurposeId grConstitution) - ] - -instance PrettyA (GovRelation StrictMaybe era) where - prettyA = pcPrevGovActionIds - -pcConwayGovState :: Reflect era => Proof era -> ConwayGovState era -> PDoc -pcConwayGovState p (ConwayGovState ss cmt con cpp ppp dr) = - ppRecord - "ConwayGovState" - [ ("proposals", pcProposals ss) - , ("drepPulsingState", pcDRepPulsingState p dr) - , ("committee", ppStrictMaybe prettyA cmt) - , ("constitution", prettyA con) - , ("currentPParams", prettyA cpp) - , ("prevPParams", prettyA ppp) - ] - -instance Reflect era => PrettyA (ConwayGovState era) where - prettyA = pcConwayGovState reify - -pcPulsingSnapshot :: PulsingSnapshot era -> PDoc -pcPulsingSnapshot (PulsingSnapshot x y z) = - ppRecord - "Snapshot" - [ ("proposals", ppStrictSeq pcGovActionState x) - , ("drepDistr", ppMap pcDRep (pcCoin . fromCompact) y) - , ("drepState", ppMap pcCredential pcDRepState z) - ] - -instance PrettyA (PulsingSnapshot era) where - prettyA = pcPulsingSnapshot - -pcDRepPulsingState :: Proof era -> DRepPulsingState era -> PDoc -pcDRepPulsingState p (DRComplete x y) = - ppRecord - "DRComplete" - [ ("pulsingSnapshot", pcPulsingSnapshot x) - , ("ratifyState", pcRatifyState p y) - ] -pcDRepPulsingState _ (DRPulsing x) = ppSexp "DRPulsing" [pcDRepPulser x] - -instance Reflect era => PrettyA (DRepPulsingState era) where - prettyA = pcDRepPulsingState reify - -pcRatifyState :: Proof era -> RatifyState era -> PDoc -pcRatifyState p (RatifyState enactedState enactedPs expiredPs delayedPs) = - ppRecord - "RatifyState" - [ ("enactstate", pcEnactState p enactedState) - , ("enacted", ppSeq pcGovActionState enactedPs) - , ("expired", ppSet pcGovActionId expiredPs) - , ("delayed", ppBool delayedPs) - ] - -instance Reflect era => PrettyA (RatifyState era) where - prettyA = pcRatifyState reify - -pcProposals :: Proposals era -> PDoc -pcProposals p = - ppRecord - "Proposals" - [ ("pProps", ppMap pcGovActionId pcGovActionState (proposalsActionsMap p)) - , ("pRoots", pcPrevGovActionIds (toPrevGovActionIds (p ^. pRootsL))) - , ("pGraph", pcForest (p ^. pGraphL)) - ] - -pcPEdges :: PEdges (GovPurposeId purpose era) -> PDoc -pcPEdges (PEdges x y) = - ppRecord - "PEdges" - [ ("parent edge", ppStrictMaybe pcGovPurposeId x) - , ("children", ppSet pcGovPurposeId y) - ] - -pcForest :: GovRelation PGraph era -> PDoc -pcForest (GovRelation a b c d) = - ppRecord - "Forest PGraph" - [ ("pparamupdate", ppMap pcGovPurposeId pcPEdges (unPGraph a)) - , ("hardfork", ppMap pcGovPurposeId pcPEdges (unPGraph b)) - , ("committee", ppMap pcGovPurposeId pcPEdges (unPGraph c)) - , ("constitution", ppMap pcGovPurposeId pcPEdges (unPGraph d)) - ] - -instance Reflect era => PrettyA (Proposals era) where - prettyA = pcProposals - -pcGovActionState :: GovActionState era -> PDoc -pcGovActionState gas@(GovActionState _ _ _ _ _ _ _) = - let GovActionState {..} = gas - in ppRecord - "GovActionState" - [ ("Id", pcGovActionId gasId) - , ("CommitteVotes", ppMap pcCredential pcVote gasCommitteeVotes) - , ("DRepVotes", ppMap pcCredential pcVote gasDRepVotes) - , ("StakePoolVotes", ppMap pcKeyHash pcVote gasStakePoolVotes) - , ("Procedure", pcProposalProcedure gasProposalProcedure) - , ("Proposed In", ppEpochNo gasProposedIn) - , ("Expires After", ppEpochNo gasExpiresAfter) - ] - -instance PrettyA (GovActionState era) where - prettyA = pcGovActionState - -pcVote :: Vote -> PDoc -pcVote x = ppString (show x) - -instance PrettyA Vote where - prettyA = pcVote - -pcCommittee :: Committee era -> PDoc -pcCommittee (Committee mem quor) = - ppRecord - "Committee" - [ ("members", ppMap pcCredential ppEpochNo mem) - , ("quorum", ppUnitInterval quor) - ] - -instance PrettyA (Committee era) where - prettyA = pcCommittee - -pcGovAction :: GovAction era -> PDoc -pcGovAction x = case x of - (ParameterChange pgaid _ppup policy) -> - ppRecord - "ParameterChange" - [ ("PrevGovActId", ppStrictMaybe pcGovPurposeId pgaid) - , ("PPUpdate", ppString "(PParamsUpdate ...)") - , ("Policy", ppStrictMaybe prettyA policy) - ] - (HardForkInitiation pgaid pv) -> - ppRecord - "HardForkInitiation" - [ ("PrevGovActId", ppStrictMaybe pcGovPurposeId pgaid) - , ("ProtVer", ppString (showProtver pv)) - ] - (TreasuryWithdrawals ws policy) -> - ppRecord - "TreasuryWithdrawals" - [ ("Withdrawals", ppMap pcRewardAccount pcCoin ws) - , ("Policy", ppStrictMaybe prettyA policy) - ] - (NoConfidence pgaid) -> - ppRecord "NoConfidence" [("PrevGovActId", ppStrictMaybe pcGovPurposeId pgaid)] - (UpdateCommittee pgaid toRemove toAdd quor) -> - ppRecord - "NewCommittee" - [ ("PrevGovActId", ppStrictMaybe pcGovPurposeId pgaid) - , ("membersToRemove", ppSet pcCredential toRemove) - , ("membersToAdd", ppMap pcCredential ppEpochNo toAdd) - , ("quorum", ppUnitInterval quor) - ] - (NewConstitution pgaid c) -> - ppRecord - "NewConstitution" - [ ("PrevGovActId", ppStrictMaybe pcGovPurposeId pgaid) - , ("Constitution", pcConstitution c) - ] - InfoAction -> ppString "InfoAction" - -instance PrettyA (GovAction era) where - prettyA = pcGovAction - -pcConstitution :: Constitution c -> PDoc -pcConstitution (Constitution x y) = - ppRecord - "Constitution" - [("anchor", pcAnchor x), ("scripthash", ppStrictMaybe pcScriptHash y)] - -instance PrettyA (Constitution c) where - prettyA = pcConstitution - -ppCommitteeAuthorization :: CommitteeAuthorization c -> PDoc -ppCommitteeAuthorization = - \case - CommitteeHotCredential hk -> ppSexp "CommitteeHotCredential" [pcCredential hk] - CommitteeMemberResigned anchor -> ppSexp "CommitteeMemberResigned" [ppStrictMaybe pcAnchor anchor] - -instance PrettyA (CommitteeAuthorization c) where - prettyA = ppCommitteeAuthorization - -pcCommitteeState :: CommitteeState era -> PDoc -pcCommitteeState x = ppMap pcCredential ppCommitteeAuthorization (csCommitteeCreds x) - -instance (PrettyA (CommitteeState era)) where - prettyA = pcCommitteeState - --- =================================================== - -pcReward :: Reward c -> PDoc -pcReward (Reward ty pl c) = - ppRecord - "Reward" - [ ("type", ppRewardType ty) - , ("pool", pcKeyHash pl) - , ("amount", pcCoin c) - ] - -instance PrettyA (Reward c) where - prettyA = pcReward - -pcFutureGenDeleg :: FutureGenDeleg c -> PDoc -pcFutureGenDeleg (FutureGenDeleg (SlotNo x) y) = - ppRecord - "FutGenDeleg" - [ ("slot", ppWord64 x) - , ("keyHash", pcKeyHash y) - ] - -instance PrettyA (FutureGenDeleg c) where - prettyA = pcFutureGenDeleg - -instance PrettyA (GenDelegPair c) where - prettyA = pcGenDelegPair - -pcCertState :: CertState era -> PDoc -pcCertState (CertState vst pst dst) = - ppRecord - "CertState" - [ ("pstate", pcPState pst) - , ("vstate", pcVState vst) - , ("dstate", pcDState dst) - ] - -pcVState :: VState era -> PDoc -pcVState (VState dreps committeeState numDormantEpochs) = - ppRecord - "VState" - [ ("DReps", ppMap pcCredential pcDRepState dreps) - , ("CC Hot Keys", pcCommitteeState committeeState) - , ("Number of dormant epochs", ppEpochNo numDormantEpochs) - ] - -instance PrettyA (VState era) where - prettyA st = pcVState st - -pcAnchor :: Anchor c -> PDoc -pcAnchor (Anchor u h) = - ppRecord - "Anchor" - [ ("url", ppString (show u)) - , ("datahash", trim $ ppSafeHash h) - ] - -instance PrettyA (Anchor c) where - prettyA = pcAnchor - -pcDRepState :: DRepState c -> PDoc -pcDRepState (DRepState expire anchor deposit) = - ppRecord - "DRepState" - [ ("expire", ppEpochNo expire) - , ("anchor", ppStrictMaybe pcAnchor anchor) - , ("deposit", pcCoin deposit) - ] - -instance PrettyA (DRepState c) where - prettyA = pcDRepState - -pcDRep :: DRep c -> PDoc -pcDRep (DRepCredential cred) = ppSexp "DRepCred" [pcCredential cred] -pcDRep DRepAlwaysAbstain = ppSexp "DRep" [ppString "Abstain"] -pcDRep DRepAlwaysNoConfidence = ppSexp "DRep" [ppString "NoConfidence"] - -instance PrettyA (DRep c) where - prettyA = pcDRep - -pcSnapShotL :: Text -> SnapShot c -> [(Text, PDoc)] -pcSnapShotL prefix ss = - [ (prefix <> "Stake", ppMap pcCredential (pcCoin . fromCompact) (VMap.toMap (unStake (ssStake ss)))) - , (prefix <> "Delegs", ppMap pcCredential pcKeyHash (VMap.toMap (ssDelegations ss))) - , (prefix <> "Pools", ppMap pcKeyHash pcPoolParams (VMap.toMap (ssPoolParams ss))) - ] - -pcIndividualPoolStake :: IndividualPoolStake c -> PDoc -pcIndividualPoolStake x = - ppRecord - "IPS" - [ ("ratio", ppRational (individualPoolStake x)) - , ("vrf", trim (ppHash (individualPoolStakeVrf x))) - ] - -instance PrettyA (IndividualPoolStake c) where prettyA = pcIndividualPoolStake - -pcSnapShots :: SnapShots c -> PDoc -pcSnapShots sss = - ppRecord' "" $ - pcSnapShotL "mark" (ssStakeMark sss) - ++ [("markPoolDistr", pcPoolDistr (ssStakeMarkPoolDistr sss))] - ++ pcSnapShotL "set" (ssStakeSet sss) - ++ pcSnapShotL "go" (ssStakeGo sss) - ++ [("fee", pcCoin (ssFee sss))] - -instance PrettyA (SnapShots c) where prettyA = pcSnapShots - -pcPoolDistr :: PoolDistr c -> PDoc -pcPoolDistr (PoolDistr pdistr) = - ppMap pcKeyHash pcIndividualPoolStake pdistr - <> ppString " total = " - <> ppRational (Map.foldl' (+) 0 (fmap individualPoolStake pdistr)) - -instance PrettyA (PoolDistr c) where prettyA = pcPoolDistr - -withEraPParams :: forall era a. Proof era -> (Core.EraPParams era => a) -> a -withEraPParams Shelley x = x -withEraPParams Mary x = x -withEraPParams Allegra x = x -withEraPParams Alonzo x = x -withEraPParams Babbage x = x -withEraPParams Conway x = x - --- | Print just a few of the PParams fields -pcPParamsSynopsis :: forall era. Proof era -> Core.PParams era -> PDoc -pcPParamsSynopsis p x = withEraPParams p help - where - help :: Core.EraPParams era => PDoc - help = - ppRecord - "PParams (synopsis)" - [ ("maxBBSize", ppWord32 (x ^. Core.ppMaxBBSizeL)) - , ("maxBHSize", ppWord16 (x ^. Core.ppMaxBHSizeL)) - , ("maxTxSize", ppWord32 (x ^. Core.ppMaxTxSizeL)) - , ("poolDeposit", pcCoin (x ^. Core.ppPoolDepositL)) - , ("keyDeposit", pcCoin (x ^. Core.ppKeyDepositL)) - , ("protVer", ppString (showProtver (x ^. Core.ppProtocolVersionL))) - ] - -showProtver :: ProtVer -> String -showProtver (ProtVer x y) = "(" ++ show x ++ " " ++ show y ++ ")" - -pcEpochState :: Reflect era => Proof era -> EpochState era -> PDoc -pcEpochState proof es@(EpochState (AccountState tre res) ls sss _) = - ppRecord - "EpochState" - [ ("AccountState", ppRecord' "" [("treasury", pcCoin tre), ("reserves", pcCoin res)]) - , ("LedgerState", pcLedgerState proof ls) - , ("SnapShots", pcSnapShots sss) - , ("AdaPots", pcAdaPot es) - ] - -instance Reflect era => PrettyA (EpochState era) where - prettyA = pcEpochState reify - -pcAccountState :: AccountState -> PDoc -pcAccountState (AccountState tr re) = ppRecord' "" [("treasury", pcCoin tr), ("reserves", pcCoin re)] - -instance PrettyA AccountState where - prettyA = pcAccountState - --- | Like pcEpochState.but it only prints a summary of the UTxO -psEpochState :: Reflect era => Proof era -> EpochState era -> PDoc -psEpochState proof es@(EpochState (AccountState tre res) ls sss _) = - ppRecord - "EpochState" - [ ("AccountState", ppRecord' "" [("treasury", pcCoin tre), ("reserves", pcCoin res)]) - , ("LedgerState", psLedgerState proof ls) - , ("SnapShots", pcSnapShots sss) - , ("AdaPots", pcAdaPot es) - ] - -pcNewEpochState :: Reflect era => Proof era -> NewEpochState era -> PDoc -pcNewEpochState proof (NewEpochState en (BlocksMade pbm) (BlocksMade cbm) es _ (PoolDistr pd) _) = - ppRecord - "NewEpochState" - [ ("EpochState", pcEpochState proof es) - , ("PoolDistr", ppMap pcKeyHash pcIndividualPoolStake pd) - , ("Prev Blocks", ppMap pcKeyHash ppNatural pbm) - , ("Current Blocks", ppMap pcKeyHash ppNatural cbm) - , ("EpochNo", ppEpochNo en) - ] - -instance Reflect era => PrettyA (NewEpochState era) where prettyA = pcNewEpochState reify - --- | Like pcEpochState.but it only prints a summary of the UTxO -psNewEpochState :: Reflect era => Proof era -> NewEpochState era -> PDoc -psNewEpochState proof (NewEpochState en (BlocksMade pbm) (BlocksMade cbm) es _ (PoolDistr pd) _) = - ppRecord - "NewEpochState" - [ ("EpochState", psEpochState proof es) - , ("PoolDistr", ppMap pcKeyHash pcIndividualPoolStake pd) - , ("Prev Blocks", ppMap pcKeyHash ppNatural pbm) - , ("Current Blocks", ppMap pcKeyHash ppNatural cbm) - , ("EpochNo", ppEpochNo en) - ] - -pcUTxOState :: Proof era -> UTxOState era -> PDoc -pcUTxOState proof (UTxOState u dep fs gs (IStake m _) don) = - ppRecord - "UTxOState" - [ ("utxo", pcUTxO proof u) - , ("deposited", pcCoin dep) - , ("fees", pcCoin fs) - , ("govState", pcGovState proof gs) - , ("incremental stake distr", ppString ("size = " ++ show (Map.size m))) -- This is not part of the model - , ("donation", pcCoin don) - ] - -instance Reflect era => PrettyA (UTxOState era) where - prettyA = pcUTxOState reify - --- | Like pcUTxOState, except it prints only a summary of the UTxO -psUTxOState :: forall era. Reflect era => Proof era -> UTxOState era -> PDoc -psUTxOState proof (UTxOState (UTxO u) dep fs gs (IStake m _) don) = - ppRecord - "UTxOState" - [ ("utxo", summaryMapCompact (Map.map (\x -> x ^. compactCoinTxOutL) u)) - , ("deposited", pcCoin dep) - , ("fees", pcCoin fs) - , ("govState", pcGovState proof gs) - , ("incremental stake distr", ppString ("size = " ++ show (Map.size m))) -- This is not part of the model - , ("donation", pcCoin don) - ] - -pcLedgerState :: Proof era -> LedgerState era -> PDoc -pcLedgerState proof ls = - ppRecord - "LedgerState" - [ ("utxoState", pcUTxOState proof (lsUTxOState ls)) - , ("certState", pcCertState (lsCertState ls)) - ] - -instance Reflect era => PrettyA (LedgerState era) where - prettyA = pcLedgerState reify - --- | Like pcLedgerState, except it prints only a summary of the UTxO -psLedgerState :: Reflect era => Proof era -> LedgerState era -> PDoc -psLedgerState proof ls = - ppRecord - "LedgerState" - [ ("utxoState", psUTxOState proof (lsUTxOState ls)) - , ("certState", pcCertState (lsCertState ls)) - ] - -pcPState :: PState era -> PDoc -pcPState (PState regP fregP ret dep) = - ppRecord - "PState" - [ ("regPools", ppMap pcKeyHash pcPoolParams regP) - , ("futureRegPools", ppMap pcKeyHash pcPoolParams fregP) - , ("retiring", ppMap pcKeyHash ppEpochNo ret) - , ("poolDeposits", ppMap pcKeyHash pcCoin dep) - ] - -instance PrettyA (PState era) where - prettyA = pcPState - -pcDState :: DState c -> PDoc -pcDState ds = - ppRecord - "DState" - [ ("rewards", ppMap pcCredential pcCoin (rewardMap (dsUnified ds))) - , ("deposits", ppMap pcCredential pcCoin (depositMap (dsUnified ds))) - , ("delegate", ppMap pcCredential pcKeyHash (sPoolMap (dsUnified ds))) - , ("drepDeleg", ppMap pcCredential pcDRep (dRepMap (dsUnified ds))) - , ("ptrs", ppMap ppPtr pcCredential (ptrMap (dsUnified ds))) - , ("fGenDel", ppMap pcFutureGenDeleg pcGenDelegPair (dsFutureGenDelegs ds)) - , ("GenDel", ppMap pcKeyHash pcGenDelegPair (unGenDelegs (dsGenDelegs ds))) - , ("iRewards", pcIRewards (dsIRewards ds)) - ] - -instance PrettyA (DState era) where - prettyA = pcDState - -pcGenDelegPair :: GenDelegPair c -> PDoc -pcGenDelegPair x = - ppRecord - "GDPair" - [ ("keyhash", pcKeyHash (genDelegKeyHash x)) - , ("vrfhash", trim (ppHash (genDelegVrfHash x))) - ] - -pcIRewards :: InstantaneousRewards c -> PDoc -pcIRewards xs = - ppRecord - "IReward" - [ ("reserves", ppMap pcCredential pcCoin (DP.iRReserves xs)) - , ("treasury", ppMap pcCredential pcCoin (DP.iRTreasury xs)) - , ("deltaR", pcDeltaCoin (DP.deltaReserves xs)) - , ("deltaT", pcDeltaCoin (DP.deltaTreasury xs)) - ] - -pcDeltaCoin :: DeltaCoin -> PDoc -pcDeltaCoin (DeltaCoin n) = hsep [ppString "▵₳", ppInteger n] - -instance PrettyA DeltaCoin where - prettyA = pcDeltaCoin - -pcSlotNo :: SlotNo -> PDoc -pcSlotNo (SlotNo n) = ppWord64 n - -instance PrettyA SlotNo where - prettyA = pcSlotNo - -instance PrettyA DP.Obligations where - prettyA = viaShow - -pcAdaPot :: - ( EraTxOut era - , EraGov era - ) => - EpochState era -> - PDoc -pcAdaPot es = - let x = totalAdaPotsES es - in ppRecord - "AdaPot" - [ ("treasury", pcCoin (treasuryAdaPot x)) - , ("rewards", pcCoin (rewardsAdaPot x)) - , ("utxo", pcCoin (utxoAdaPot x)) - , ("fees", pcCoin (feesAdaPot x)) - , ("obligations", prettyA (obligationsPot x)) - , ("totalAda", pcCoin (totalAdaES es)) - ] - --- ======================== - -pcPolicyID :: PolicyID c -> PDoc -pcPolicyID (PolicyID sh) = pcScriptHash sh - -instance PrettyA (PolicyID c) where - prettyA = pcPolicyID - -pcAssetName :: AssetName -> PDoc -pcAssetName x = trim (viaShow x) - -instance PrettyA AssetName where - prettyA = pcAssetName - -pcMultiAsset :: MultiAsset c -> PDoc -pcMultiAsset m = ppList pptriple (flattenMultiAsset m) - where - pptriple (i, asset, num) = hsep ["(", pcPolicyID i, pcAssetName asset, ppInteger num, ")"] - -instance PrettyA (MultiAsset c) where - prettyA = pcMultiAsset - -instance PrettyA ix => PrettyA (AsIx ix it) where - prettyA (AsIx ix) = ppSexp "AsIx" [prettyA ix] - -instance PrettyA it => PrettyA (AsItem ix it) where - prettyA (AsItem it) = ppSexp "AsItem" [prettyA it] - -instance (PrettyA ix, PrettyA it) => PrettyA (AsIxItem ix it) where - prettyA (AsIxItem ix it) = ppSexp "AsIxItem" [prettyA ix, prettyA it] - -instance - ( forall ix it. (PrettyA ix, PrettyA it) => PrettyA (f ix it) - , Reflect era - , PrettyA (TxCert era) - ) => - PrettyA (AlonzoPlutusPurpose f era) - where - prettyA = \case - AlonzoMinting i -> ppSexp "AlonzoMinting" [prettyA i] - AlonzoSpending i -> ppSexp "AlonzoSpending" [prettyA i] - AlonzoRewarding i -> ppSexp "AlonzoRewarding" [prettyA i] - AlonzoCertifying i -> ppSexp "AlonzoCertifying" [prettyA i] - -instance - ( forall ix it. (PrettyA ix, PrettyA it) => PrettyA (f ix it) - , Reflect era - , PrettyA (TxCert era) - ) => - PrettyA (ConwayPlutusPurpose f era) - where - prettyA = \case - ConwayMinting i -> ppSexp "ConwayMinting" [prettyA i] - ConwaySpending i -> ppSexp "ConwaySpending" [prettyA i] - ConwayRewarding i -> ppSexp "ConwayRewarding" [prettyA i] - ConwayCertifying i -> ppSexp "ConwayCertifying" [prettyA i] - ConwayVoting i -> ppSexp "ConwayVoting" [prettyA i] - ConwayProposing i -> ppSexp "ConwayProposing" [prettyA i] - --- ScriptsNeeded is a type family so it doesn't have PrettyA instance, use pcScriptsNeeded --- instead of prettyA -pcScriptsNeeded :: Reflect era => Proof era -> ScriptsNeeded era -> PDoc -pcScriptsNeeded Shelley (ShelleyScriptsNeeded ss) = ppSexp "ScriptsNeeded" [ppSet pcScriptHash ss] -pcScriptsNeeded Allegra (ShelleyScriptsNeeded ss) = ppSexp "ScriptsNeeded" [ppSet pcScriptHash ss] -pcScriptsNeeded Mary (ShelleyScriptsNeeded ss) = ppSexp "ScriptsNeeded" [ppSet pcScriptHash ss] -pcScriptsNeeded Alonzo (AlonzoScriptsNeeded pl) = - ppSexp "ScriptsNeeded" [ppList (ppPair prettyA pcScriptHash) pl] -pcScriptsNeeded Babbage (AlonzoScriptsNeeded pl) = - ppSexp "ScriptsNeeded" [ppList (ppPair prettyA pcScriptHash) pl] -pcScriptsNeeded Conway (AlonzoScriptsNeeded pl) = - ppSexp "ScriptsNeeded" [ppList (ppPair prettyA pcScriptHash) pl] - -pcDRepPulser :: DRepPulser era Identity (RatifyState era) -> PDoc -pcDRepPulser x = - ppRecord - "DRepPulser" - [ ("pulseSize", ppInt (dpPulseSize x)) - , ("DRepUView Map", ppMap pcCredential pcDRep (dRepMap (dpUMap x))) - , ("balance", ppMap pcCredential (pcCoin . fromCompact) (dpBalance x)) - , ("stakeDistr", summaryMapCompact (dpStakeDistr x)) - , ("poolDistr", pcPoolDistr (dpStakePoolDistr x)) - , ("partialDrepDistr", summaryMapCompact (dpDRepDistr x)) - , ("drepState", ppMap pcCredential pcDRepState (dpDRepState x)) - , ("epoch", ppEpochNo (dpCurrentEpoch x)) - , ("committeeState", pcCommitteeState (dpCommitteeState x)) - , ("proposals", ppStrictSeq pcGovActionState (dpProposals x)) - , ("globals", ppString "...") - ] - -summaryMapCompact :: Map a (CompactForm Coin) -> PDoc -summaryMapCompact x = ppString ("Count " ++ show (Map.size x) ++ ", Total " ++ show (Map.foldl' (<>) mempty x)) - --- ======================== - -pcConwayGovCertEnv :: forall era. Reflect era => ConwayGovCertEnv era -> PDoc -pcConwayGovCertEnv (ConwayGovCertEnv pp ce) = ppSexp "ConwayGovCertEnv" [pcPParams @era reify pp, ppEpochNo ce] - -instance Reflect era => PrettyA (ConwayGovCertEnv era) where - prettyA = pcConwayGovCertEnv - -pcPoolEnv :: Reflect era => PoolEnv era -> PDoc -pcPoolEnv (PoolEnv sn pp) = ppSexp "PoolEnv" [pcSlotNo sn, pcPParams reify pp] - -instance forall era. Reflect era => PrettyA (PoolEnv era) where - prettyA = pcPoolEnv - -pcEnactSignal :: EnactSignal era -> PDoc -pcEnactSignal EnactSignal {..} = - ppRecord - "EnactSignal" - [ ("Gov Action Id", pcGovActionId esGovActionId) - , ("Gov Action", pcGovAction esGovAction) - ] - -instance PrettyA (EnactSignal era) where - prettyA = pcEnactSignal - -pcRatifySignal :: RatifySignal era -> PDoc -pcRatifySignal (RatifySignal s) = ppStrictSeq pcGovActionState s - -instance PrettyA (RatifySignal era) where - prettyA = pcRatifySignal - -pcRatifyEnv :: RatifyEnv era -> PDoc -pcRatifyEnv rs@(RatifyEnv {}) = - let RatifyEnv {..} = rs - in ppRecord - "RatifyEnv" - [ ("StakeDistr", ppMap pcCredential (pcCoin . fromCompact) reStakeDistr) - , ("StakePoolDistr", pcPoolDistr reStakePoolDistr) - , ("DRepDistr", ppMap pcDRep (pcCoin . fromCompact) reDRepDistr) - , ("DRepState", ppMap pcCredential pcDRepState reDRepState) - , ("CurrentEpoch", ppEpochNo reCurrentEpoch) - , ("CommitteeState", pcCommitteeState reCommitteeState) - ] - -instance PrettyA (RatifyEnv era) where - prettyA = pcRatifyEnv - -pcGovEnv :: Reflect era => GovEnv era -> PDoc -pcGovEnv GovEnv {..} = - ppRecord - "GovEnv" - [ ("TxId", pcTxId geTxId) - , ("Epoch", ppEpochNo geEpoch) - , ("PParams", pcPParams reify gePParams) - , ("PrevGovActionId", pcPrevGovActionIds gePrevGovActionIds) - ] - -instance Reflect era => PrettyA (GovEnv era) where - prettyA = pcGovEnv - -instance Reflect era => PrettyA (LedgerEnv era) where - prettyA LedgerEnv {..} = - ppRecord - "LedgerEnv" - [ ("slot no", prettyA ledgerSlotNo) - , ("ix", prettyA (txIxToInt ledgerIx)) - , ("pparams", prettyA ledgerPp) - , ("account", prettyA ledgerAccount) - ] - -instance Reflect era => PrettyA (UtxoEnv era) where - prettyA UtxoEnv {..} = - ppRecord - "UtxoEnv" - [ ("slot no", prettyA ueSlot) - , ("pparams", prettyA uePParams) - , ("certState", prettyA ueCertState) - ] - -instance Reflect era => PrettyA (CertEnv era) where - prettyA CertEnv {..} = - ppRecord - "CertEnv" - [ ("slot no", prettyA ceSlotNo) - , ("pparams", prettyA cePParams) - , ("currentEpoch", prettyA ceCurrentEpoch) - ] - -instance Reflect era => PrettyA (CertState era) where - prettyA CertState {..} = - ppRecord - "CertState" - [ ("vState", prettyA certVState) - , ("pState", prettyA certPState) - , ("dState", prettyA certDState) - ] diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/PrettyTest.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/PrettyTest.hs deleted file mode 100644 index 98ba481b152..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/PrettyTest.hs +++ /dev/null @@ -1,59 +0,0 @@ -module Test.Cardano.Ledger.Generic.PrettyTest (testwidth, prettyTest) where - -import Cardano.Ledger.Core (Tx, TxBody) -import Cardano.Ledger.Shelley (Shelley) -import Cardano.Ledger.Shelley.LedgerState (LedgerState) -import Cardano.Ledger.UTxO (UTxO) -import Prettyprinter (defaultLayoutOptions, layoutPretty) -import Prettyprinter.Render.Text (renderStrict) -import Prettyprinter.Util (putDocW) -import Test.Cardano.Ledger.Generic.PrettyCore -import Test.Cardano.Ledger.Generic.Proof (Proof (Shelley)) -import Test.Cardano.Ledger.Shelley.Arbitrary () -import Test.Cardano.Ledger.Shelley.Serialisation.Generators () -import Test.Tasty -import Test.Tasty.QuickCheck (Arbitrary (..), Gen, generate, testProperty, withMaxSuccess, (===)) - --- ==================================================== --- a few generators to generate random UTxO, TxBody, Tx and LedgerState - -txbody :: Gen (TxBody Shelley) -txbody = arbitrary - -tx :: Gen (Tx Shelley) -tx = arbitrary - -utxo :: Gen (UTxO Shelley) -utxo = arbitrary - -ls :: Gen (LedgerState Shelley) -ls = arbitrary - --- | Used to test pretty printing things with different widths --- for example: testwidth 120 ls ppLedgerState --- prints a random LedgerState with a max width of 120 columns --- one can use this to observe the how "pretty" a printer is at different widths -testwidth :: Int -> Gen a -> (a -> PDoc) -> IO () -testwidth n gen pp = do - b <- generate gen - let doc = pp b - putDocW n doc - putStrLn "" - --- | The idea is to see that the pretty printer actually produces some output -testPP :: String -> (t -> PDoc) -> Gen t -> TestTree -testPP name ppT gen = testProperty name (do t <- gen; pure (withMaxSuccess 25 (toText (ppT t) === toText (ppT t)))) - where - toText doc = renderStrict (layoutPretty defaultLayoutOptions doc) - -prettyTest :: TestTree -prettyTest = - testGroup - "Pretty printer tests" - [ testPP "UTxO" (pcUTxO proof) utxo - , testPP "TxBody" (pcTxBody proof) txbody - , testPP "Tx" (pcTx proof) tx - , testPP "LedgerState" (pcLedgerState proof) ls - ] - where - proof = Shelley diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/Proof.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/Proof.hs deleted file mode 100644 index f11b81e1f6d..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/Proof.hs +++ /dev/null @@ -1,530 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE KindSignatures #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeOperators #-} --- Used for Reflect classes -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} - -module Test.Cardano.Ledger.Generic.Proof ( - Mock, - Standard, - GoodCrypto, - Proof (..), - Reflect (..), - Some (..), - WitRule (..), - ruleProof, - runSTS, - goSTS, - preShelley, - preAllegra, - preMary, - preAlonzo, - preBabbage, - preConway, - postShelley, - postAllegra, - postMary, - postAlonzo, - postBabbage, - postConway, - ShelleyEra, - AllegraEra, - MaryEra, - AlonzoEra, - BabbageEra, - ConwayEra, - StandardCrypto, - C_Crypto, - specialize, - unReflect, - runSTS', - ValueWit (..), - TxOutWit (..), - TxCertWit (..), - PParamsWit (..), - UTxOWit (..), - ScriptWit (..), - GovStateWit (..), - whichValue, - whichTxOut, - whichTxCert, - whichPParams, - whichUTxO, - whichScript, - whichGovState, -) where - -import Cardano.Ledger.Allegra (AllegraEra) -import Cardano.Ledger.Allegra.Scripts (Timelock) -import Cardano.Ledger.Alonzo (AlonzoEra) -import Cardano.Ledger.Alonzo.Core (AlonzoEraPParams, AlonzoEraTxBody) -import Cardano.Ledger.Alonzo.PParams (AlonzoPParams (..)) -import Cardano.Ledger.Alonzo.Scripts (AlonzoEraScript, AlonzoScript (..)) -import Cardano.Ledger.Alonzo.TxOut (AlonzoEraTxOut (..), AlonzoTxOut (..)) -import Cardano.Ledger.Alonzo.TxWits (AlonzoTxWits (..)) -import Cardano.Ledger.Alonzo.UTxO (AlonzoScriptsNeeded) -import Cardano.Ledger.Babbage (BabbageEra) -import Cardano.Ledger.Babbage.Core (BabbageEraPParams) -import Cardano.Ledger.Babbage.PParams (BabbagePParams (..)) -import Cardano.Ledger.Babbage.TxOut (BabbageEraTxOut (..), BabbageTxOut (..)) -import Cardano.Ledger.BaseTypes (ShelleyBase) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Conway (ConwayEra) -import Cardano.Ledger.Conway.Governance (ConwayGovState (..), RunConwayRatify (..)) -import Cardano.Ledger.Conway.PParams (ConwayEraPParams (..), ConwayPParams (..)) -import Cardano.Ledger.Conway.TxCert (ConwayEraTxCert, ConwayTxCert (..)) -import Cardano.Ledger.Core ( - Era (EraCrypto), - EraPParams, - EraRule, - EraScript, - EraTx, - EraTxAuxData, - EraTxOut, - PParamsHKD, - ProtVerAtMost, - Script, - TxCert, - TxOut, - TxWits, - Value, - ) -import Cardano.Ledger.Crypto (StandardCrypto) -import Cardano.Ledger.Mary (MaryEra) -import Cardano.Ledger.Mary.Value (MaryValue) -import Cardano.Ledger.Shelley (ShelleyEra) -import Cardano.Ledger.Shelley.Core (EraGov, ShelleyEraTxCert) -import Cardano.Ledger.Shelley.Governance (EraGov (..), ShelleyGovState (..)) -import Cardano.Ledger.Shelley.PParams (ShelleyPParams (..)) -import Cardano.Ledger.Shelley.Scripts (MultiSig) -import Cardano.Ledger.Shelley.TxCert (ShelleyTxCert) -import Cardano.Ledger.Shelley.TxOut (ShelleyTxOut (..)) -import Cardano.Ledger.Shelley.TxWits (ShelleyTxWits (..)) -import Cardano.Ledger.Shelley.UTxO (ShelleyScriptsNeeded) -import Cardano.Ledger.UTxO (EraUTxO (..), ScriptsNeeded) -import Control.State.Transition.Extended hiding (Assertion) -import Data.Functor.Identity (Identity) -import Data.Kind (Type) -import Data.List.NonEmpty (NonEmpty) -import Data.Universe (Shape (..), Shaped (..), Singleton (..), Some (..), (:~:) (Refl)) -import GHC.TypeLits (Symbol) -import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes (C_Crypto) -import Test.Cardano.Ledger.Shelley.Utils (applySTSTest, runShelleyBase) - -import Cardano.Crypto.DSIGN.Class (Signable) -import Cardano.Crypto.Hash.Class (Hash) -import Cardano.Ledger.Core (EraIndependentTxBody) -import Cardano.Ledger.Crypto (Crypto, DSIGN, HASH) - --- ================================================= --- GADTs for witnessing Crypto and Era - -type Mock = C_Crypto - -type Standard = StandardCrypto - -type GoodCrypto c = (Crypto c, Signable (DSIGN c) (Hash (HASH c) EraIndependentTxBody)) - --- =================================================== - --- | Proof of a valid (predefined) era -data Proof era where - Shelley :: Proof (ShelleyEra StandardCrypto) - Mary :: Proof (MaryEra StandardCrypto) - Allegra :: Proof (AllegraEra StandardCrypto) - Alonzo :: Proof (AlonzoEra StandardCrypto) - Babbage :: Proof (BabbageEra StandardCrypto) - Conway :: Proof (ConwayEra StandardCrypto) - -instance Show (Proof e) where - show Shelley = "Shelley" - show Allegra = "Allegra" - show Mary = "Mary" - show Alonzo = "Alonzo" - show Babbage = "Babbage" - show Conway = "Conway" - --- ================================== --- Reflection over Crypto and Era - -class - ( EraGov era - , EraTx era - , EraUTxO era - , EraTxAuxData era - , ShelleyEraTxCert era - , -- , GoodCrypto (EraCrypto era) - EraCrypto era ~ StandardCrypto - ) => - Reflect era - where - reify :: Proof era - lift :: forall a. (Proof era -> a) -> a - lift f = f (reify @era) - -instance Reflect (ConwayEra StandardCrypto) where - reify = Conway - -instance Reflect (BabbageEra StandardCrypto) where - reify = Babbage - -instance Reflect (AlonzoEra StandardCrypto) where - reify = Alonzo - -instance Reflect (MaryEra StandardCrypto) where - reify = Mary - -instance Reflect (AllegraEra StandardCrypto) where - reify = Allegra - -instance Reflect (ShelleyEra StandardCrypto) where - reify = Shelley - --- =================================================== --- Tools for building TestTrees for multiple Eras - -instance Show (Some Proof) where - show (Some Shelley) = show Shelley - show (Some Allegra) = show Allegra - show (Some Mary) = show Mary - show (Some Alonzo) = show Alonzo - show (Some Babbage) = show Babbage - show (Some Conway) = show Conway - --- =============================================================== --- Proofs or witnesses to EraRule Tags - -data WitRule (s :: Symbol) (e :: Type) where - UTXO :: Proof era -> WitRule "UTXO" era - UTXOW :: Proof era -> WitRule "UTXOW" era - LEDGER :: Proof era -> WitRule "LEDGER" era - BBODY :: Proof era -> WitRule "BBODY" era - LEDGERS :: Proof era -> WitRule "LEDGERS" era - MOCKCHAIN :: Proof era -> WitRule "MOCKCHAIN" era - RATIFY :: Proof era -> WitRule "RATIFY" era - ENACT :: Proof era -> WitRule "ENACT" era - TALLY :: Proof era -> WitRule "TALLY" era - EPOCH :: Proof era -> WitRule "EPOCH" era - -ruleProof :: WitRule s e -> Proof e -ruleProof (UTXO p) = p -ruleProof (UTXOW p) = p -ruleProof (LEDGER p) = p -ruleProof (BBODY p) = p -ruleProof (LEDGERS p) = p -ruleProof (MOCKCHAIN p) = p -ruleProof (RATIFY p) = p -ruleProof (ENACT p) = p -ruleProof (TALLY p) = p -ruleProof (EPOCH p) = p - -runSTS :: - forall s e ans. - ( BaseM (EraRule s e) ~ ShelleyBase - , STS (EraRule s e) - ) => - WitRule s e -> - TRC (EraRule s e) -> - (Either (NonEmpty (PredicateFailure (EraRule s e))) (State (EraRule s e)) -> ans) -> - ans -runSTS (UTXO _proof) x cont = cont (runShelleyBase (applySTSTest x)) -runSTS (UTXOW _proof) x cont = cont (runShelleyBase (applySTSTest x)) -runSTS (LEDGER _proof) x cont = cont (runShelleyBase (applySTSTest x)) -runSTS (BBODY _proof) x cont = cont (runShelleyBase (applySTSTest x)) -runSTS (LEDGERS _proof) x cont = cont (runShelleyBase (applySTSTest x)) -runSTS (MOCKCHAIN _proof) x cont = cont (runShelleyBase (applySTSTest x)) -runSTS (RATIFY _proof) x cont = cont (runShelleyBase (applySTSTest x)) -runSTS (ENACT _proof) x cont = cont (runShelleyBase (applySTSTest x)) -runSTS (TALLY _proof) x cont = cont (runShelleyBase (applySTSTest x)) -runSTS (_proof) x cont = cont (runShelleyBase (applySTSTest x)) - -runSTS' :: - forall s e. - ( BaseM (EraRule s e) ~ ShelleyBase - , STS (EraRule s e) - ) => - WitRule s e -> - TRC (EraRule s e) -> - Either (NonEmpty (PredicateFailure (EraRule s e))) (State (EraRule s e)) -runSTS' (UTXO _proof) x = runShelleyBase (applySTSTest x) -runSTS' (UTXOW _proof) x = runShelleyBase (applySTSTest x) -runSTS' (LEDGER _proof) x = runShelleyBase (applySTSTest x) -runSTS' (BBODY _proof) x = runShelleyBase (applySTSTest x) -runSTS' (LEDGERS _proof) x = runShelleyBase (applySTSTest x) -runSTS' (MOCKCHAIN _proof) x = runShelleyBase (applySTSTest x) -runSTS' (RATIFY _proof) x = runShelleyBase (applySTSTest x) -runSTS' (ENACT _proof) x = runShelleyBase (applySTSTest x) -runSTS' (TALLY _proof) x = runShelleyBase (applySTSTest x) -runSTS' (EPOCH _proof) x = runShelleyBase (applySTSTest x) - --- | Like runSTS, but makes the components of the TRC triple explicit. --- in case you can't remember, in ghci type --- @@@ --- :t goSTS (UTXOW Babbage) --- goSTS (LEDGER Babbage) --- :: LedgerEnv (BabbageEra StandardCrypto) --- -> (UTxOState (BabbageEra StandardCrypto), CertState StandardCrypto) --- -> Cardano.Ledger.Alonzo.Tx.AlonzoTx (BabbageEra StandardCrypto) --- -> (Either --- [LedgerPredicateFailure (BabbageEra StandardCrypto)] --- (UTxOState (BabbageEra StandardCrypto), CertState StandardCrypto) --- -> ans) --- -> ans --- @@@ --- it will tell you what type 'env' 'state' and 'sig' are for Babbage -goSTS :: - forall s e ans env state sig. - ( BaseM (EraRule s e) ~ ShelleyBase - , STS (EraRule s e) - , env ~ Environment (EraRule s e) - , state ~ State (EraRule s e) - , sig ~ Signal (EraRule s e) - ) => - WitRule s e -> - env -> - state -> - sig -> - (Either (NonEmpty (PredicateFailure (EraRule s e))) (State (EraRule s e)) -> ans) -> - ans -goSTS (UTXO _proof) env state sig cont = - cont (runShelleyBase (applySTSTest (TRC @(EraRule s e) (env, state, sig)))) -goSTS (UTXOW _proof) env state sig cont = - cont (runShelleyBase (applySTSTest (TRC @(EraRule s e) (env, state, sig)))) -goSTS (LEDGER _proof) env state sig cont = - cont (runShelleyBase (applySTSTest (TRC @(EraRule s e) (env, state, sig)))) -goSTS (BBODY _proof) env state sig cont = - cont (runShelleyBase (applySTSTest (TRC @(EraRule s e) (env, state, sig)))) -goSTS (LEDGERS _proof) env state sig cont = - cont (runShelleyBase (applySTSTest (TRC @(EraRule s e) (env, state, sig)))) -goSTS (MOCKCHAIN _proof) env state sig cont = - cont (runShelleyBase (applySTSTest (TRC @(EraRule s e) (env, state, sig)))) -goSTS (RATIFY _proof) env state sig cont = - cont (runShelleyBase (applySTSTest (TRC @(EraRule s e) (env, state, sig)))) -goSTS (ENACT _proof) env state sig cont = - cont (runShelleyBase (applySTSTest (TRC @(EraRule s e) (env, state, sig)))) -goSTS (TALLY _proof) env state sig cont = - cont (runShelleyBase (applySTSTest (TRC @(EraRule s e) (env, state, sig)))) -goSTS (EPOCH _proof) env state sig cont = - cont (runShelleyBase (applySTSTest (TRC @(EraRule s e) (env, state, sig)))) - --- ================================================================ --- Crypto agnostic operations on (Proof era) via (Some Proof) - -preShelley, preAllegra, preMary, preAlonzo, preBabbage, preConway :: [Some Proof] -preShelley = [Some Shelley] -preAllegra = [Some Allegra, Some Shelley] -preMary = [Some Mary, Some Allegra, Some Shelley] -preAlonzo = [Some Alonzo, Some Mary, Some Allegra, Some Shelley] -preBabbage = [Some Babbage, Some Alonzo, Some Mary, Some Allegra, Some Shelley] -preConway = [Some Conway, Some Babbage, Some Alonzo, Some Mary, Some Allegra, Some Shelley] - -postShelley, postAllegra, postMary, postAlonzo, postBabbage, postConway :: [Some Proof] -postShelley = - [ Some Conway - , Some Babbage - , Some Alonzo - , Some Mary - , Some Allegra - , Some Shelley - ] -postAllegra = [Some Conway, Some Babbage, Some Alonzo, Some Mary, Some Allegra] -postMary = [Some Conway, Some Babbage, Some Alonzo, Some Mary] -postAlonzo = [Some Conway, Some Babbage, Some Alonzo] -postBabbage = [Some Conway, Some Babbage] -postConway = [Some Conway] - --- ============================================ - --- | Specialize ('action' :: (constraint era => t)) to all known 'era', because --- we know (constraint era) holds for all known era. In order for this to work --- it is best to type apply 'specialize' to a concrete constraint. So a call site --- looks like '(specialize @EraSegWits proof action). This way the constraint does --- not percolate upwards, past the call site of 'action' -specialize :: - forall constraint era t. - ( constraint (ShelleyEra (EraCrypto era)) - , constraint (AllegraEra (EraCrypto era)) - , constraint (MaryEra (EraCrypto era)) - , constraint (AlonzoEra (EraCrypto era)) - , constraint (BabbageEra (EraCrypto era)) - , constraint (ConwayEra (EraCrypto era)) - ) => - Proof era -> - (constraint era => t) -> - t -specialize proof action = - case proof of - Shelley -> action - Allegra -> action - Mary -> action - Alonzo -> action - Babbage -> action - Conway -> action -{-# NOINLINE specialize #-} - --- ================================================= - --- | lift a function (Proof era -> a) that has a (Reflect era) constraint --- to one that does not. This is possible because every inhabited --- term of type (Proof era) packs a (Reflect era) instance. --- so instead of writing: f proof arg1 .. argn --- one writes: unReflect f proof arg1 .. argn --- which will not require a (Reflect era) instance -unReflect :: (Reflect era => Proof era -> a) -> Proof era -> a -unReflect f Shelley = f Shelley -unReflect f Allegra = f Allegra -unReflect f Mary = f Mary -unReflect f Alonzo = f Alonzo -unReflect f Babbage = f Babbage -unReflect f Conway = f Conway - --- ====================================================== - -instance Singleton Proof where - testEql Shelley Shelley = Just Refl - testEql Allegra Allegra = Just Refl - testEql Mary Mary = Just Refl - testEql Alonzo Alonzo = Just Refl - testEql Babbage Babbage = Just Refl - testEql Conway Conway = Just Refl - testEql _ _ = Nothing - cmpIndex x y = compare (shape x) (shape y) - -instance Shaped Proof any where - shape Shelley = Nary 0 [] - shape Allegra = Nary 1 [] - shape Mary = Nary 2 [] - shape Alonzo = Nary 3 [] - shape Babbage = Nary 4 [] - shape Conway = Nary 5 [] - --- ====================================================== --- GADT's that witness the special properties that hold --- for some type families - -data TxOutWit era where - TxOutShelleyToMary :: - (TxOut era ~ ShelleyTxOut era, EraTxOut era, ProtVerAtMost era 8) => TxOutWit era - TxOutAlonzoToAlonzo :: - (TxOut era ~ AlonzoTxOut era, AlonzoEraTxOut era, ProtVerAtMost era 8) => TxOutWit era - TxOutBabbageToConway :: (TxOut era ~ BabbageTxOut era, BabbageEraTxOut era) => TxOutWit era - -whichTxOut :: Proof era -> TxOutWit era -whichTxOut Shelley = TxOutShelleyToMary -whichTxOut Allegra = TxOutShelleyToMary -whichTxOut Mary = TxOutShelleyToMary -whichTxOut Alonzo = TxOutAlonzoToAlonzo -whichTxOut Babbage = TxOutBabbageToConway -whichTxOut Conway = TxOutBabbageToConway - -data TxCertWit era where - TxCertShelleyToBabbage :: - (TxCert era ~ ShelleyTxCert era, ShelleyEraTxCert era, ProtVerAtMost era 8) => TxCertWit era - TxCertConwayToConway :: - (TxCert era ~ ConwayTxCert era, ConwayEraTxCert era, ConwayEraPParams era) => TxCertWit era - -whichTxCert :: Proof era -> TxCertWit era -whichTxCert Shelley = TxCertShelleyToBabbage -whichTxCert Allegra = TxCertShelleyToBabbage -whichTxCert Mary = TxCertShelleyToBabbage -whichTxCert Alonzo = TxCertShelleyToBabbage -whichTxCert Babbage = TxCertShelleyToBabbage -whichTxCert Conway = TxCertConwayToConway - -data ValueWit era where - ValueShelleyToAllegra :: Value era ~ Coin => ValueWit era - ValueMaryToConway :: Value era ~ MaryValue (EraCrypto era) => ValueWit era - -whichValue :: Proof era -> ValueWit era -whichValue Shelley = ValueShelleyToAllegra -whichValue Allegra = ValueShelleyToAllegra -whichValue Mary = ValueMaryToConway -whichValue Alonzo = ValueMaryToConway -whichValue Babbage = ValueMaryToConway -whichValue Conway = ValueMaryToConway - -data PParamsWit era where - PParamsShelleyToMary :: - (PParamsHKD Identity era ~ ShelleyPParams Identity era, EraPParams era) => PParamsWit era - PParamsAlonzoToAlonzo :: - (PParamsHKD Identity era ~ AlonzoPParams Identity era, AlonzoEraPParams era) => PParamsWit era - PParamsBabbageToBabbage :: - (PParamsHKD Identity era ~ BabbagePParams Identity era, BabbageEraPParams era) => PParamsWit era - PParamsConwayToConway :: - (PParamsHKD Identity era ~ ConwayPParams Identity era, ConwayEraPParams era) => PParamsWit era - -whichPParams :: Proof era -> PParamsWit era -whichPParams Shelley = PParamsShelleyToMary -whichPParams Allegra = PParamsShelleyToMary -whichPParams Mary = PParamsShelleyToMary -whichPParams Alonzo = PParamsAlonzoToAlonzo -whichPParams Babbage = PParamsBabbageToBabbage -whichPParams Conway = PParamsConwayToConway - -data UTxOWit era where - UTxOShelleyToMary :: - ( EraUTxO era - , ScriptsNeeded era ~ ShelleyScriptsNeeded era - , TxWits era ~ ShelleyTxWits era - ) => - UTxOWit era - UTxOAlonzoToConway :: - ( EraUTxO era - , AlonzoEraScript era - , AlonzoEraTxBody era - , AlonzoEraPParams era - , AlonzoEraTxOut era - , ScriptsNeeded era ~ AlonzoScriptsNeeded era - , Script era ~ AlonzoScript era - , TxWits era ~ AlonzoTxWits era - ) => - UTxOWit era - -whichUTxO :: Proof era -> UTxOWit era -whichUTxO Shelley = UTxOShelleyToMary -whichUTxO Allegra = UTxOShelleyToMary -whichUTxO Mary = UTxOShelleyToMary -whichUTxO Alonzo = UTxOAlonzoToConway -whichUTxO Babbage = UTxOAlonzoToConway -whichUTxO Conway = UTxOAlonzoToConway - -data ScriptWit era where - ScriptShelleyToShelley :: (Script era ~ MultiSig era, EraScript era) => ScriptWit era - ScriptAllegraToMary :: (Script era ~ Timelock era, EraScript era) => ScriptWit era - ScriptAlonzoToConway :: (Script era ~ AlonzoScript era, EraScript era) => ScriptWit era - -whichScript :: Proof era -> ScriptWit era -whichScript Shelley = ScriptShelleyToShelley -whichScript Allegra = ScriptAllegraToMary -whichScript Mary = ScriptAllegraToMary -whichScript Alonzo = ScriptAlonzoToConway -whichScript Babbage = ScriptAlonzoToConway -whichScript Conway = ScriptAlonzoToConway - -data GovStateWit era where - GovStateShelleyToBabbage :: (EraGov era, GovState era ~ ShelleyGovState era) => GovStateWit era - GovStateConwayToConway :: - ( ConwayEraPParams era - , RunConwayRatify era - , EraGov era - , GovState era ~ ConwayGovState era - ) => - GovStateWit era - -whichGovState :: Proof era -> GovStateWit era -whichGovState Shelley = GovStateShelleyToBabbage -whichGovState Allegra = GovStateShelleyToBabbage -whichGovState Mary = GovStateShelleyToBabbage -whichGovState Alonzo = GovStateShelleyToBabbage -whichGovState Babbage = GovStateShelleyToBabbage -whichGovState Conway = GovStateConwayToConway diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/Properties.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/Properties.hs deleted file mode 100644 index 0d38a1418f4..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/Properties.hs +++ /dev/null @@ -1,423 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} - -module Test.Cardano.Ledger.Generic.Properties where - -import Cardano.Ledger.Alonzo.Tx (AlonzoTxBody (..), IsValid (..)) -import Cardano.Ledger.Babbage.TxBody (BabbageTxBody (..)) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Core -import Cardano.Ledger.Shelley.LedgerState ( - AccountState (..), - EpochState (..), - LedgerState (..), - NewEpochState (..), - UTxOState (..), - updateStakeDistribution, - ) -import Cardano.Ledger.Shelley.Rules (LedgerEnv (..), UtxoEnv (..)) -import Cardano.Ledger.UTxO (UTxO (..)) -import Cardano.Slotting.Slot (SlotNo (..)) -import Control.Monad.Trans.RWS.Strict (gets) -import Control.State.Transition.Extended hiding (Assertion) -import Data.Coerce (coerce) -import Data.Default.Class (Default (def)) -import qualified Data.Map.Strict as Map -import Test.Cardano.Ledger.Alonzo.Serialisation.Generators () -import Test.Cardano.Ledger.Babbage.Arbitrary () -import Test.Cardano.Ledger.Binary.Arbitrary () -import Test.Cardano.Ledger.Binary.Twiddle (Twiddle, twiddleInvariantProp) -import Test.Cardano.Ledger.Conway.Arbitrary () -import Test.Cardano.Ledger.Generic.Fields ( - abstractTx, - abstractTxBody, - abstractTxOut, - abstractWitnesses, - ) -import Test.Cardano.Ledger.Generic.Functions (TotalAda (totalAda), isValid') -import Test.Cardano.Ledger.Generic.GenState ( - GenEnv (..), - GenRS, - GenSize (..), - GenState (..), - blocksizeMax, - initStableFields, - modifyModel, - runGenRS, - ) -import Test.Cardano.Ledger.Generic.MockChain (MOCKCHAIN, MockChainState (..)) -import Test.Cardano.Ledger.Generic.ModelState -import Test.Cardano.Ledger.Generic.PrettyCore (PrettyA (..), pcLedgerState, pcTx) -import Test.Cardano.Ledger.Generic.Proof hiding (lift) -import Test.Cardano.Ledger.Generic.Trace ( - Gen1, - forEachEpochTrace, - testPropMax, - testTraces, - traceProp, - ) -import Test.Cardano.Ledger.Generic.TxGen ( - Box (..), - applySTSByProof, - assembleWits, - coreTx, - coreTxBody, - coreTxOut, - genAlonzoTx, - genUTxO, - ) -import Test.Cardano.Ledger.Shelley.Serialisation.EraIndepGenerators () -import Test.Control.State.Transition.Trace (Trace (..), lastState) -import Test.Control.State.Transition.Trace.Generator.QuickCheck (HasTrace (..)) -import Test.QuickCheck -import Test.Tasty (TestTree, defaultMain, testGroup) - --- ===================================== --- Top level generators of TRC - -genTxAndUTXOState :: - Reflect era => Proof era -> GenSize -> Gen (TRC (EraRule "UTXOW" era), GenState era) -genTxAndUTXOState proof@Conway gsize = do - (Box _ (TRC (LedgerEnv slotNo _ pp _, ledgerState, vtx)) genState) <- - genTxAndLEDGERState proof gsize - pure (TRC (UtxoEnv slotNo pp def, lsUTxOState ledgerState, vtx), genState) -genTxAndUTXOState proof@Babbage gsize = do - (Box _ (TRC (LedgerEnv slotNo _ pp _, ledgerState, vtx)) genState) <- - genTxAndLEDGERState proof gsize - pure (TRC (UtxoEnv slotNo pp def, lsUTxOState ledgerState, vtx), genState) -genTxAndUTXOState proof@Alonzo gsize = do - (Box _ (TRC (LedgerEnv slotNo _ pp _, ledgerState, vtx)) genState) <- - genTxAndLEDGERState proof gsize - pure (TRC (UtxoEnv slotNo pp def, lsUTxOState ledgerState, vtx), genState) -genTxAndUTXOState proof@Mary gsize = do - (Box _ (TRC (LedgerEnv slotNo _ pp _, ledgerState, vtx)) genState) <- - genTxAndLEDGERState proof gsize - pure (TRC (UtxoEnv slotNo pp def, lsUTxOState ledgerState, vtx), genState) -genTxAndUTXOState proof@Allegra gsize = do - (Box _ (TRC (LedgerEnv slotNo _ pp _, ledgerState, vtx)) genState) <- - genTxAndLEDGERState proof gsize - pure (TRC (UtxoEnv slotNo pp def, lsUTxOState ledgerState, vtx), genState) -genTxAndUTXOState proof@Shelley gsize = do - (Box _ (TRC (LedgerEnv slotNo _ pp _, ledgerState, vtx)) genState) <- - genTxAndLEDGERState proof gsize - pure (TRC (UtxoEnv slotNo pp def, lsUTxOState ledgerState, vtx), genState) - -genTxAndLEDGERState :: - forall era. - ( Reflect era - , Signal (EraRule "LEDGER" era) ~ Tx era - , State (EraRule "LEDGER" era) ~ LedgerState era - , Environment (EraRule "LEDGER" era) ~ LedgerEnv era - ) => - Proof era -> - GenSize -> - Gen (Box era) -genTxAndLEDGERState proof sizes = do - let slotNo = SlotNo (startSlot sizes) - txIx <- arbitrary - let genT = do - (initial, _) <- genUTxO -- Generate a random UTxO, so mUTxO is not empty - modifyModel (\m -> m {mUTxO = initial}) - (_utxo, tx) <- genAlonzoTx proof slotNo - model <- gets gsModel - pp <- gets (gePParams . gsGenEnv) - let ledgerState = extract @(LedgerState era) model - ledgerEnv = LedgerEnv slotNo txIx pp (AccountState (Coin 0) (Coin 0)) - pure $ TRC (ledgerEnv, ledgerState, tx) - (trc, genstate) <- runGenRS proof sizes (initStableFields >> genT) - pure (Box proof trc genstate) - --- ============================================= --- Now a test - -testTxValidForLEDGER :: - ( Reflect era - , Signal (EraRule "LEDGER" era) ~ Tx era - , State (EraRule "LEDGER" era) ~ LedgerState era - , PrettyA (PredicateFailure (EraRule "LEDGER" era)) - ) => - Proof era -> - Box era -> - Property -testTxValidForLEDGER proof (Box _ trc@(TRC (_, ledgerState, vtx)) _genstate) = - -- trc encodes the initial (generated) state, vtx is the transaction - case applySTSByProof proof trc of - Right ledgerState' -> - -- UTxOState and CertState after applying the transaction $$$ - classify (coerce (isValid' proof vtx)) "TxValid" $ - totalAda ledgerState' === totalAda ledgerState - Left errs -> - counterexample - ( show (pcLedgerState proof ledgerState) - ++ "\n\n" - ++ show (pcTx proof vtx) - ++ "\n\n" - ++ show (prettyA errs) - ) - (property False) - --- ============================================= --- Make some property tests - --- ========================================================================= --- The generic types make a roundtrip without adding or losing information - -txOutRoundTrip :: - EraTxOut era => Proof era -> TxOut era -> Property -txOutRoundTrip proof x = coreTxOut proof (abstractTxOut proof x) === x - -txRoundTrip :: - EraTx era => Proof era -> Tx era -> Property -txRoundTrip proof x = coreTx proof (abstractTx proof x) === x - -txBodyRoundTrip :: - EraTxBody era => Proof era -> TxBody era -> Property -txBodyRoundTrip proof x = coreTxBody proof (abstractTxBody proof x) === x - -txWitRoundTrip :: - EraTxWits era => Proof era -> TxWits era -> Property -txWitRoundTrip proof x = assembleWits proof (abstractWitnesses proof x) === x - -coreTypesRoundTrip :: TestTree -coreTypesRoundTrip = - testGroup - "Core types make generic roundtrips" - [ testGroup - "TxWits roundtrip" - [ testPropMax 30 "Babbage era" $ txWitRoundTrip Babbage - , testPropMax 30 "Alonzo era" $ txWitRoundTrip Alonzo - , testPropMax 30 "Mary era" $ txWitRoundTrip Mary - , testPropMax 30 "Allegra era" $ txWitRoundTrip Allegra - , testPropMax 30 "Shelley era" $ txWitRoundTrip Shelley - ] - , testGroup - "TxBody roundtrips" - [ testPropMax 30 "Babbage era" $ txBodyRoundTrip Babbage - , testPropMax 30 "Alonzo era" $ txBodyRoundTrip Alonzo - , testPropMax 30 "Mary era" $ txBodyRoundTrip Mary - , testPropMax 30 "Allegra era" $ txBodyRoundTrip Allegra - , testPropMax 30 "Shelley era" $ txBodyRoundTrip Shelley - ] - , testGroup - "TxOut roundtrips" - [ testPropMax 30 "Babbage era" $ txOutRoundTrip Babbage - , testPropMax 30 "Alonzo era" $ txOutRoundTrip Alonzo - , testPropMax 30 "Mary era" $ txOutRoundTrip Mary - , testPropMax 30 "Allegra era" $ txOutRoundTrip Allegra - , testPropMax 30 "Shelley era" $ txOutRoundTrip Shelley - ] - , testGroup - "Tx roundtrips" - [ testPropMax 30 "Babbage era" $ txRoundTrip Babbage - , testPropMax 30 "Alonzo era" $ txRoundTrip Alonzo - , testPropMax 30 "Mary era" $ txRoundTrip Mary - , testPropMax 30 "Allegra era" $ txRoundTrip Allegra - , testPropMax 30 "Shelley era" $ txRoundTrip Shelley - ] - ] - --- | A single Tx preserves Ada -txPreserveAda :: GenSize -> TestTree -txPreserveAda genSize = - testGroup - "Individual Tx's preserve Ada" - [ testPropMax 30 "Shelley Tx preserves ADA" $ - forAll (genTxAndLEDGERState Shelley genSize) (testTxValidForLEDGER Shelley) - , testPropMax 30 "Allegra Tx preserves ADA" $ - forAll (genTxAndLEDGERState Allegra genSize) (testTxValidForLEDGER Allegra) - , testPropMax 30 "Mary Tx preserves ADA" $ - forAll (genTxAndLEDGERState Mary genSize) (testTxValidForLEDGER Mary) - , testPropMax 30 "Alonzo ValidTx preserves ADA" $ - forAll (genTxAndLEDGERState Alonzo genSize) (testTxValidForLEDGER Alonzo) - , testPropMax 30 "Babbage ValidTx preserves ADA" $ - forAll (genTxAndLEDGERState Babbage genSize) (testTxValidForLEDGER Babbage) - -- TODO - -- testPropMax 30 "Conway ValidTx preserves ADA" $ - -- forAll (genTxAndLEDGERState Conway genSize) (testTxValidForLEDGER Conway) - ] - --- | Ada is preserved over a trace of length 100 -adaIsPreserved :: - ( Reflect era - , HasTrace (MOCKCHAIN era) (Gen1 era) - ) => - Proof era -> - Int -> - GenSize -> - TestTree -adaIsPreserved proof numTx gensize = - testPropMax 30 (show proof ++ " era. Trace length = " ++ show numTx) $ - traceProp - proof - numTx - gensize - (\firstSt lastSt -> totalAda (mcsNes firstSt) === totalAda (mcsNes lastSt)) - -tracePreserveAda :: Int -> GenSize -> TestTree -tracePreserveAda numTx gensize = - testGroup - ("Total Ada is preserved over traces of length " ++ show numTx) - [ adaIsPreservedBabbage numTx gensize - , adaIsPreserved Alonzo numTx gensize - , adaIsPreserved Mary numTx gensize - , adaIsPreserved Allegra numTx gensize - , adaIsPreserved Shelley numTx gensize - ] - -adaIsPreservedBabbage :: Int -> GenSize -> TestTree -adaIsPreservedBabbage numTx gensize = adaIsPreserved Babbage numTx gensize - --- | The incremental Stake invaraint is preserved over a trace of length 100= -stakeInvariant :: EraTxOut era => MockChainState era -> MockChainState era -> Property -stakeInvariant (MockChainState _ _ _ _) (MockChainState nes _ _ _) = - case (lsUTxOState . esLState . nesEs) nes of - (UTxOState utxo _ _ _ istake _) -> istake === updateStakeDistribution def mempty mempty utxo - -incrementStakeInvariant :: - ( Reflect era - , HasTrace (MOCKCHAIN era) (Gen1 era) - ) => - Proof era -> - GenSize -> - TestTree -incrementStakeInvariant proof gensize = - testPropMax 30 (show proof ++ " era. Trace length = 100") $ - traceProp proof 100 gensize stakeInvariant - -incrementalStake :: GenSize -> TestTree -incrementalStake genSize = - testGroup - "Incremental Stake invariant holds" - [ -- TODO re-enable this once we have added all the new rules to Conway - -- incrementStakeInvariant Conway genSize, - incrementStakeInvariant Babbage genSize - , incrementStakeInvariant Alonzo genSize - , incrementStakeInvariant Mary genSize - , incrementStakeInvariant Allegra genSize - , incrementStakeInvariant Shelley genSize - ] - -genericProperties :: GenSize -> TestTree -genericProperties genSize = - testGroup - "Generic Property tests" - [ coreTypesRoundTrip - , txPreserveAda genSize - , tracePreserveAda 45 genSize - , incrementalStake genSize - , testTraces 45 - , epochPreserveAda genSize - , twiddleInvariantHoldsEras - ] - -epochPreserveAda :: GenSize -> TestTree -epochPreserveAda genSize = - testGroup - "Ada is preserved in each epoch" - [ adaIsPreservedInEachEpoch Babbage genSize - , adaIsPreservedInEachEpoch Alonzo genSize - , adaIsPreservedInEachEpoch Mary genSize - , adaIsPreservedInEachEpoch Allegra genSize - , adaIsPreservedInEachEpoch Shelley genSize - ] - -adaIsPreservedInEachEpoch :: - forall era. - Reflect era => - Proof era -> - GenSize -> - TestTree -adaIsPreservedInEachEpoch proof genSize = - testPropMax 30 (show proof) $ - forEachEpochTrace proof 200 genSize withTrace - where - withTrace :: Trace (MOCKCHAIN era) -> Property - withTrace trc = totalAda (mcsNes trcInit) === totalAda (mcsNes trcLast) - where - trcInit = _traceInitState trc - trcLast = lastState trc - -twiddleInvariantHolds :: - forall a. - ( Arbitrary a - , Show a - , Twiddle a - ) => - String -> - TestTree -twiddleInvariantHolds name = - testPropMax 30 name $ twiddleInvariantProp @a - -twiddleInvariantHoldsEras :: TestTree -twiddleInvariantHoldsEras = - testGroup - "Twiddle invariant holds for TxBody" - [ twiddleInvariantHolds @(AlonzoTxBody (AlonzoEra StandardCrypto)) "Alonzo" - , twiddleInvariantHolds @(BabbageTxBody (BabbageEra StandardCrypto)) "Babbage" - ] - --- ============================================================== --- Infrastrucure for running individual tests, with easy replay. --- In ghci just type --- :main --quickcheck-replay=205148 - -main :: IO () -main = defaultMain $ adaIsPreservedBabbage 100 (def {blocksizeMax = 4}) - -main8 :: IO () -main8 = test 100 Babbage - -test :: Int -> Proof era -> IO () -test n proof = defaultMain $ - case proof of - -- TODO - -- Conway -> - -- testPropMax 30 "Conway ValidTx preserves ADA" $ - -- withMaxSuccess n (forAll (genTxAndLEDGERState proof def) (testTxValidForLEDGER proof)) - Babbage -> - testPropMax 30 "Babbage ValidTx preserves ADA" $ - withMaxSuccess n (forAll (genTxAndLEDGERState proof def) (testTxValidForLEDGER proof)) - Alonzo -> - testPropMax 30 "Alonzo ValidTx preserves ADA" $ - withMaxSuccess n (forAll (genTxAndLEDGERState proof def) (testTxValidForLEDGER proof)) - Shelley -> - testPropMax 30 "Shelley ValidTx preserves ADA" $ - withMaxSuccess n (forAll (genTxAndLEDGERState proof def) (testTxValidForLEDGER proof)) - other -> error ("NO Test in era " ++ show other) - --- =============================================================== --- Tools for generating other things from a GenEnv. This way one can --- test individual functions in this file. These are intended for use --- when developng and debugging. - --- | Construct a random (Gen b) -makeGen :: Reflect era => Proof era -> (Proof era -> GenRS era b) -> Gen b -makeGen proof computeWith = fst <$> runGenRS proof def (computeWith proof) - -runTest :: - (Reflect era, PrettyA a) => - (Proof era -> GenRS era a) -> - (a -> IO ()) -> - Proof era -> - IO () -runTest computeWith action proof = do - ans <- generate (makeGen proof computeWith) - print (prettyA ans) - action ans - -main2 :: IO () -main2 = runTest (\x -> fst <$> genAlonzoTx x (SlotNo 0)) (const (pure ())) Babbage - -main3 :: IO () -main3 = runTest (\_x -> UTxO . fst <$> genUTxO) action Alonzo - where - action (UTxO x) = putStrLn ("Size = " ++ show (Map.size x)) diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/Same.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/Same.hs deleted file mode 100644 index 3747fe01774..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/Same.hs +++ /dev/null @@ -1,631 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - --- | A Proof parameterized equality test, that records the 'sameness' of --- individual record fields, this way it is possible to know where the --- equality failed. -module Test.Cardano.Ledger.Generic.Same where - -import Cardano.Ledger.Allegra.TxBody (AllegraTxBody (..)) -import Cardano.Ledger.Alonzo.Tx (AlonzoTx (..)) -import Cardano.Ledger.Alonzo.TxBody (AlonzoTxBody (..)) -import Cardano.Ledger.Alonzo.TxSeq (AlonzoTxSeq (..)) -import Cardano.Ledger.Alonzo.TxWits (AlonzoTxWits (..), Redeemers (..), TxDats (..)) -import Cardano.Ledger.AuxiliaryData (AuxiliaryDataHash (..)) -import Cardano.Ledger.Babbage.TxBody (BabbageTxBody (..)) -import Cardano.Ledger.Binary (sizedValue) -import Cardano.Ledger.Block (Block (..)) -import Cardano.Ledger.Conway.Core -import Cardano.Ledger.Conway.Governance (VotingProcedures (..)) -import Cardano.Ledger.Conway.TxBody (ConwayTxBody (..)) -import Cardano.Ledger.Keys (KeyHash, KeyRole (Genesis)) -import Cardano.Ledger.Mary.TxBody (MaryTxBody (..)) -import Cardano.Ledger.SafeHash (SafeToHash) -import Cardano.Ledger.Shelley.API.Mempool (ApplyTxError) -import Cardano.Ledger.Shelley.BlockChain (ShelleyTxSeq (..)) -import Cardano.Ledger.Shelley.LedgerState ( - CertState (..), - DState (..), - EpochState (..), - LedgerState (..), - NewEpochState (..), - PState (..), - StashedAVVMAddresses, - UTxOState (..), - VState (..), - curPParamsEpochStateL, - prevPParamsEpochStateL, - ) -import Cardano.Ledger.Shelley.PParams (ProposedPPUpdates (..)) -import Cardano.Ledger.Shelley.Translation () -import Cardano.Ledger.Shelley.Tx (ShelleyTx (..)) -import Cardano.Ledger.Shelley.TxBody (ShelleyTxBody (..)) -import Cardano.Ledger.Shelley.TxWits (ShelleyTxWits (..)) -import Cardano.Ledger.UTxO (UTxO (..)) -import Data.Foldable (toList) -import Lens.Micro ((^.)) -import Prettyprinter (Doc, indent, viaShow, vsep) -import Test.Cardano.Ledger.Generic.PrettyCore -import Test.Cardano.Ledger.Generic.Proof -import Test.Cardano.Ledger.Shelley.Examples.Consensus ( - ShelleyLedgerExamples (..), - ShelleyResultExamples (..), - ) -import Test.Cardano.Ledger.TerseTools - --- =========================== - -instance Terse (KeyHash 'Genesis c) where - terse x = show (pcKeyHash x) - -instance Terse (PParamsUpdate (ShelleyEra c)) where - terse x = show x - -instance Terse (PParamsUpdate (AllegraEra c)) where - terse x = show x - -instance Terse (PParamsUpdate (MaryEra c)) where - terse x = show x - -instance Terse (PParamsUpdate (AlonzoEra c)) where - terse x = show x - -instance Terse (PParamsUpdate (BabbageEra c)) where - terse x = show x - -instance Terse (PParamsUpdate (ConwayEra c)) where - terse x = show x - --- ======================================== --- Helper functions - --- | Relabel by appending 's' to the front of the path -extendLabel :: String -> [(String, Maybe x)] -> [(String, Maybe x)] -extendLabel _ [] = [] -extendLabel s ((n, x) : xs) = (s ++ n, x) : extendLabel s xs - --- | Dispays a difference vertically as --- x --- =/= --- y -notEq :: Doc a -> Doc a -> Doc a -notEq x y = vsep [x, indent 3 (text "=/="), y] - --- | Compare for equality, and display difference using 'show' -eqByShow :: (Eq t, Show t) => t -> t -> Maybe PDoc -eqByShow x y = if x == y then Nothing else Just (notEq (ppString (show x)) (ppString (show y))) - --- | Compare for equality, and display differences using 'pcf' -eqVia :: Eq t => (t -> PDoc) -> t -> t -> Maybe PDoc -eqVia pcf x y = if x == y then Nothing else Just (notEq (pcf x) (pcf y)) - --- ========================================== - --- | The Same class is similar to Eq but returns descriptions (paths and --- non-matching components) for each difference in a large structure. -class Same era t where - same :: Proof era -> t -> t -> [(String, Maybe PDoc)] - -instance Same era (CertState era) where - same proof (CertState d1 p1 v1) (CertState d2 p2 v2) = - extendLabel "DState " (same proof d1 d2) - ++ extendLabel "PState " (same proof p1 p2) - ++ extendLabel "VState " (same proof v1 v2) - -instance Same era (PState era) where - same _proof (PState pp1 fpp1 ret1 d1) (PState pp2 fpp2 ret2 d2) = - [ ("PoolParams", eqByShow pp1 pp2) - , ("FuturePoolParams", eqByShow fpp1 fpp2) - , ("Retiring", eqByShow ret1 ret2) - , ("Deposits", eqByShow d1 d2) - ] - -instance Same era (DState era) where - same _proof (DState u1 fgd1 gd1 ir1) (DState u2 fgd2 gd2 ir2) = - [ ("Unified", eqByShow u1 u2) - , ("FutureGenDelegs", eqByShow fgd1 fgd2) - , ("GenDelegs", eqByShow gd1 gd2) - , ("InstantaneousRewards", eqByShow ir1 ir2) - ] - -instance Same era (VState era) where - same _proof (VState dr1 cchk1 numDE1) (VState dr2 cchk2 numDE2) = - [ ("DReps", eqByShow dr1 dr2) - , ("CC Hot Keys", eqByShow cchk1 cchk2) - , ("Num Dormant Epochs", eqByShow numDE1 numDE2) - ] - -sameUTxO :: Proof era -> UTxO era -> UTxO era -> Maybe PDoc -sameUTxO Shelley x y = eqByShow x y -sameUTxO Allegra x y = eqByShow x y -sameUTxO Mary x y = eqByShow x y -sameUTxO Alonzo x y = eqByShow x y -sameUTxO Babbage x y = eqByShow x y -sameUTxO Conway x y = eqByShow x y -{-# NOINLINE sameUTxO #-} - -samePPUP :: Proof era -> ShelleyGovState era -> ShelleyGovState era -> Maybe PDoc -samePPUP Shelley x y = eqByShow x y -samePPUP Allegra x y = eqByShow x y -samePPUP Mary x y = eqByShow x y -samePPUP Alonzo x y = eqByShow x y -samePPUP Babbage x y = eqByShow x y -samePPUP Conway x y = eqByShow x y -{-# NOINLINE samePPUP #-} - -instance Reflect era => Same era (UTxOState era) where - same proof u1 u2 = - [ ("UTxO", sameUTxO proof (utxosUtxo u1) (utxosUtxo u2)) - , ("Deposited", eqByShow (utxosDeposited u1) (utxosDeposited u2)) - , ("Fees", eqByShow (utxosFees u1) (utxosFees u2)) - ] - ++ ppu - ++ [("StakeDistr", eqByShow (utxosStakeDistr u1) (utxosStakeDistr u2))] - where - ppuPretty :: GovState era ~ ShelleyGovState era => [(String, Maybe PDoc)] - ppuPretty = [("ShelleyGovState", samePPUP proof (utxosGovState u1) (utxosGovState u2))] - ppu = case reify @era of - Shelley -> ppuPretty - Mary -> ppuPretty - Allegra -> ppuPretty - Alonzo -> ppuPretty - Babbage -> ppuPretty - Conway -> [] - -instance Reflect era => Same era (LedgerState era) where - same proof x1 x2 = - extendLabel "UTxOState " (same proof (lsUTxOState x1) (lsUTxOState x2)) - ++ extendLabel "CertState " (same proof (lsCertState x1) (lsCertState x2)) - -instance Reflect era => Same era (EpochState era) where - same proof e1 e2 = - [ ("AccountState", eqByShow (esAccountState e1) (esAccountState e2)) - , ("SnapShots", eqByShow (esSnapshots e1) (esSnapshots e2)) - , ("PrevPP", samePParams proof (e1 ^. prevPParamsEpochStateL) (e2 ^. prevPParamsEpochStateL)) - , ("CurPP", samePParams proof (e1 ^. curPParamsEpochStateL) (e2 ^. curPParamsEpochStateL)) - , ("NonMyopic", eqByShow (esNonMyopic e1) (esNonMyopic e2)) - ] - ++ extendLabel "LedgerState " (same proof (esLState e1) (esLState e2)) - -sameStashedAVVMAddresses :: - Proof era -> StashedAVVMAddresses era -> StashedAVVMAddresses era -> Maybe PDoc -sameStashedAVVMAddresses proof x y = - case proof of - Shelley -> if x == y then Nothing else Just (viaShow x) - Allegra -> if x == y then Nothing else Just (viaShow x) - Mary -> if x == y then Nothing else Just (viaShow x) - Alonzo -> if x == y then Nothing else Just (viaShow x) - Babbage -> if x == y then Nothing else Just (viaShow x) - Conway -> if x == y then Nothing else Just (viaShow x) - -instance - Reflect era => - Same era (NewEpochState era) - where - same proof n1 n2 = - [ ("nesEL", eqByShow (nesEL n1) (nesEL n2)) - , ("nesBprev", eqByShow (nesBprev n1) (nesBprev n2)) - , ("nesBcur", eqByShow (nesBcur n1) (nesBcur n2)) - , ("nesRU", eqByShow (nesRu n1) (nesRu n2)) - , ("nesPd", eqByShow (nesPd n1) (nesPd n2)) - , ("nesStashAVVM", sameStashedAVVMAddresses proof (stashedAVVMAddresses n1) (stashedAVVMAddresses n2)) - ] - ++ extendLabel "EpochState " (same proof (nesEs n1) (nesEs n2)) - -data SomeDepend where - SomeD :: String -> (x -> x -> Maybe PDoc) -> x -> x -> SomeDepend - SomeM :: String -> (x -> x -> [(String, Maybe PDoc)]) -> x -> x -> SomeDepend - --- | If x occurs in y then a difference in x forces a difference in y, --- so only return the information on x if it has differences. -sameWithDependency :: [SomeDepend] -> [(String, Maybe PDoc)] -sameWithDependency [] = [] -sameWithDependency (SomeD labx actx x1 x2 : more) = - case actx x1 x2 of - Nothing -> sameWithDependency more - ansx -> (labx, ansx) : sameWithDependency more -sameWithDependency (SomeM labx actx x1 x2 : more) = - case actx x1 x2 of - [] -> sameWithDependency more - ansx -> extendLabel (labx ++ " ") ansx ++ sameWithDependency more - -instance - Reflect era => - Same era (ShelleyLedgerExamples era) - where - same proof x1 x2 = case (sleBlock x1, sleBlock x2) of - (Block' h1 a1 _, Block' h2 a2 _) -> - sameWithDependency - [ SomeM "Tx" (sameTx proof) (sleTx x1) (sleTx x2) - , SomeM "TxSeq" (sameTxSeq proof) a1 a2 - ] - ++ [ ("BlockHeader", if h1 == h2 then Nothing else Just ("UnequalBlockHeader")) - , - ( "HashHeader" - , if (sleHashHeader x1) == (sleHashHeader x2) - then Nothing - else Just ("UnequalHashHeader") - ) - , ("ApplyTxError", sameLedgerFail proof (sleApplyTxError x1) (sleApplyTxError x2)) - , ("RewardsCredentials", eqByShow (sleRewardsCredentials x1) (sleRewardsCredentials x2)) - ] - ++ extendLabel "Result " (same proof (sleResultExamples x1) (sleResultExamples x2)) - ++ extendLabel "NewEpochState " (same proof (sleNewEpochState x1) (sleNewEpochState x2)) - ++ [ ("ChainDepState", eqByShow (sleChainDepState x1) (sleChainDepState x2)) - , ("TranslationContext", sameTransCtx proof (sleTranslationContext x1) (sleTranslationContext x2)) - ] - -instance Era era => Same era (ShelleyResultExamples era) where - same proof r1 r2 = - [ ("PParams", samePParams proof (srePParams r1) (srePParams r2)) - , - ( "ProposedPPUpdates" - , case proof of - Shelley -> sameProposedPPUpdates (sreProposedPPUpdates r1) (sreProposedPPUpdates r2) - Allegra -> sameProposedPPUpdates (sreProposedPPUpdates r1) (sreProposedPPUpdates r2) - Mary -> sameProposedPPUpdates (sreProposedPPUpdates r1) (sreProposedPPUpdates r2) - Alonzo -> sameProposedPPUpdates (sreProposedPPUpdates r1) (sreProposedPPUpdates r2) - Babbage -> sameProposedPPUpdates (sreProposedPPUpdates r1) (sreProposedPPUpdates r2) - Conway -> sameProposedPPUpdates (sreProposedPPUpdates r1) (sreProposedPPUpdates r2) - ) - , ("poolDistr", eqByShow (srePoolDistr r1) (srePoolDistr r2)) - , ("NonMyopicRewards", eqByShow (sreNonMyopicRewards r1) (sreNonMyopicRewards r2)) - , ("ShelleyGenesis", eqByShow (sreShelleyGenesis r1) (sreShelleyGenesis r2)) - ] - where - getmap (ProposedPPUpdates x) = x - sameProposedPPUpdates x y = ppDiff $ mapdiffs (getmap x) (getmap y) - where - ppDiff [] = Nothing - ppDiff xs = Just (ppString (show xs)) - --- ========================================================================= --- Functions like 'same' from the 'Same' class, but which apply to type families --- We cannot make them Same instances because they are type families. --- We also can avoid all extra constraints by pattern matching against all current Proofs. - -samePParams :: Proof era -> PParams era -> PParams era -> Maybe PDoc -samePParams Shelley x y = eqByShow x y -samePParams Allegra x y = eqByShow x y -samePParams Mary x y = eqByShow x y -samePParams Alonzo x y = eqByShow x y -samePParams Babbage x y = eqByShow x y -samePParams Conway x y = eqByShow x y -{-# NOINLINE samePParams #-} - -samePParamsUpdate :: Proof era -> PParamsUpdate era -> PParamsUpdate era -> Maybe PDoc -samePParamsUpdate Shelley x y = eqByShow x y -samePParamsUpdate Allegra x y = eqByShow x y -samePParamsUpdate Mary x y = eqByShow x y -samePParamsUpdate Alonzo x y = eqByShow x y -samePParamsUpdate Babbage x y = eqByShow x y -samePParamsUpdate Conway x y = eqByShow x y -{-# NOINLINE samePParamsUpdate #-} - -sameTxOut :: Proof era -> TxOut era -> TxOut era -> Maybe PDoc -sameTxOut Shelley x y = eqByShow x y -sameTxOut Allegra x y = eqByShow x y -sameTxOut Mary x y = eqByShow x y -sameTxOut Alonzo x y = eqByShow x y -sameTxOut Babbage x y = eqByShow x y -sameTxOut Conway x y = eqByShow x y -{-# NOINLINE sameTxOut #-} - -sameLedgerFail :: - Proof era -> - ApplyTxError era -> - ApplyTxError era -> - Maybe PDoc -sameLedgerFail Shelley x y = eqByShow x y -sameLedgerFail Allegra x y = eqByShow x y -sameLedgerFail Mary x y = eqByShow x y -sameLedgerFail Alonzo x y = eqByShow x y -sameLedgerFail Babbage x y = eqByShow x y -sameLedgerFail Conway x y = eqByShow x y -{-# NOINLINE sameLedgerFail #-} - -sameTransCtx :: - Proof era -> - TranslationContext era -> - TranslationContext era -> - Maybe PDoc -sameTransCtx Shelley x y = eqByShow x y -sameTransCtx Allegra x y = eqByShow x y -sameTransCtx Mary x y = eqByShow x y -sameTransCtx Alonzo x y = eqByShow x y -sameTransCtx Babbage x y = eqByShow x y -sameTransCtx Conway x y = eqByShow x y -{-# NOINLINE sameTransCtx #-} - --- ========================== --- Comparing witnesses for Sameness - -sameShelleyTxWits :: - forall era. - Reflect era => - Proof era -> - ShelleyTxWits era -> - ShelleyTxWits era -> - [(String, Maybe PDoc)] -sameShelleyTxWits proof (ShelleyTxWits vk1 sh1 boot1) (ShelleyTxWits vk2 sh2 boot2) = - [ ("VKeyWits", eqVia (ppSet (pcWitVKey proof)) vk1 vk2) - , ("ScriptWits", eqVia (ppMap pcScriptHash (pcScript proof)) sh1 sh2) - , ("BootWits", eqVia (\_ -> ppString "BOOTWITS") boot1 boot2) - ] - -sameAlonzoTxWits :: - forall era. - (Reflect era, AlonzoEraScript era) => - Proof era -> - AlonzoTxWits era -> - AlonzoTxWits era -> - [(String, Maybe PDoc)] -sameAlonzoTxWits - proof - (AlonzoTxWits vk1 boot1 sh1 (TxDats d1) (Redeemers r1)) - (AlonzoTxWits vk2 boot2 sh2 (TxDats d2) (Redeemers r2)) = - [ ("VKeyWits", eqVia (ppSet (pcWitVKey proof)) vk1 vk2) - , ("BootWits", eqVia (\_ -> ppString "BOOTWITS") boot1 boot2) - , ("ScriptWits", eqVia (ppMap pcScriptHash (pcScript proof)) sh1 sh2) - , ("DataWits", eqVia (ppMap pcDataHash pcData) d1 d2) - , ("RedeemerWits", eqVia (ppMap ppPlutusPurposeAsIx (pcPair pcData pcExUnits)) r1 r2) - ] - -sameTxWits :: Reflect era => Proof era -> TxWits era -> TxWits era -> [(String, Maybe PDoc)] -sameTxWits proof@Shelley x y = sameShelleyTxWits proof x y -sameTxWits proof@Allegra x y = sameShelleyTxWits proof x y -sameTxWits proof@Mary x y = sameShelleyTxWits proof x y -sameTxWits proof@Alonzo x y = sameAlonzoTxWits proof x y -sameTxWits proof@Babbage x y = sameAlonzoTxWits proof x y -sameTxWits proof@Conway x y = sameAlonzoTxWits proof x y - --- ======================= --- Comparing TxBody for Sameness - -sameShelleyTxBody :: - Reflect era => - Proof era -> - ShelleyTxBody era -> - ShelleyTxBody era -> - [(String, Maybe PDoc)] -sameShelleyTxBody proof (ShelleyTxBody i1 o1 c1 (Withdrawals w1) f1 s1 pu1 d1) (ShelleyTxBody i2 o2 c2 (Withdrawals w2) f2 s2 pu2 d2) = - [ ("Inputs", eqVia (ppSet pcTxIn) i1 i2) - , ("Outputs", eqVia (ppList (pcTxOut proof) . toList) o1 o2) - , ("TxCert", eqVia (ppList (pcTxCert proof) . toList) c1 c2) - , ("WDRL", eqVia (ppMap pcRewardAccount pcCoin) w1 w2) - , ("Fee", eqVia pcCoin f1 f2) - , ("TimeToLive", eqVia pcSlotNo s1 s2) - , ("PPupdate", eqVia (\_ -> ppString "Update") pu1 pu2) - , ("AuxDataHash", eqVia (ppStrictMaybe (\(AuxiliaryDataHash h) -> trim (ppSafeHash h))) d1 d2) - ] - -sameAllegraTxBody :: - Reflect era => - Proof era -> - AllegraTxBody era -> - AllegraTxBody era -> - [(String, Maybe PDoc)] -sameAllegraTxBody proof (AllegraTxBody i1 o1 c1 (Withdrawals w1) f1 v1 pu1 d1) (AllegraTxBody i2 o2 c2 (Withdrawals w2) f2 v2 pu2 d2) = - [ ("Inputs", eqVia (ppSet pcTxIn) i1 i2) - , ("Outputs", eqVia (ppList (pcTxOut proof) . toList) o1 o2) - , ("TxCert", eqVia (ppList (pcTxCert proof) . toList) c1 c2) - , ("WDRL", eqVia (ppMap pcRewardAccount pcCoin) w1 w2) - , ("Fee", eqVia pcCoin f1 f2) - , ("ValidityInterval", eqVia ppValidityInterval v1 v2) - , ("PPupdate", eqVia (\_ -> ppString "Update") pu1 pu2) - , ("AuxDataHash", eqVia (ppStrictMaybe (\(AuxiliaryDataHash h) -> trim (ppSafeHash h))) d1 d2) - ] - -sameMaryTxBody :: - Reflect era => - Proof era -> - MaryTxBody era -> - MaryTxBody era -> - [(String, Maybe PDoc)] -sameMaryTxBody proof (MaryTxBody i1 o1 c1 (Withdrawals w1) f1 v1 pu1 d1 m1) (MaryTxBody i2 o2 c2 (Withdrawals w2) f2 v2 pu2 d2 m2) = - [ ("Inputs", eqVia (ppSet pcTxIn) i1 i2) - , ("Outputs", eqVia (ppList (pcTxOut proof) . toList) o1 o2) - , ("TxCert", eqVia (ppList (pcTxCert proof) . toList) c1 c2) - , ("WDRL", eqVia (ppMap pcRewardAccount pcCoin) w1 w2) - , ("Fee", eqVia pcCoin f1 f2) - , ("ValidityInterval", eqVia ppValidityInterval v1 v2) - , ("PPupdate", eqVia (\_ -> ppString "Update") pu1 pu2) - , ("AuxDataHash", eqVia (ppStrictMaybe (\(AuxiliaryDataHash h) -> trim (ppSafeHash h))) d1 d2) - , ("Mint", eqVia multiAssetSummary m1 m2) - ] - -sameAlonzoTxBody :: - Reflect era => - Proof era -> - AlonzoTxBody era -> - AlonzoTxBody era -> - [(String, Maybe PDoc)] -sameAlonzoTxBody - proof - (AlonzoTxBody i1 cl1 o1 c1 (Withdrawals w1) f1 v1 pu1 r1 m1 s1 d1 n1) - (AlonzoTxBody i2 cl2 o2 c2 (Withdrawals w2) f2 v2 pu2 r2 m2 s2 d2 n2) = - [ ("Inputs", eqVia (ppSet pcTxIn) i1 i2) - , ("Collateral", eqVia (ppSet pcTxIn) cl1 cl2) - , ("Outputs", eqVia (ppList (pcTxOut proof) . toList) o1 o2) - , ("Certs", eqVia (ppList (pcTxCert proof) . toList) c1 c2) - , ("WDRL", eqVia (ppMap pcRewardAccount pcCoin) w1 w2) - , ("Fee", eqVia pcCoin f1 f2) - , ("ValidityInterval", eqVia ppValidityInterval v1 v2) - , ("PPupdate", eqVia (\_ -> ppString "Update") pu1 pu2) - , ("ReqSignerHashes", eqVia (ppSet pcKeyHash) r1 r2) - , ("Mint", eqVia multiAssetSummary m1 m2) - , ("ScriptIntegrityHash", eqVia (ppStrictMaybe (trim . ppSafeHash)) s1 s2) - , ("AuxDataHash", eqVia (ppStrictMaybe (\(AuxiliaryDataHash h) -> trim (ppSafeHash h))) d1 d2) - , ("NetworkId", eqVia (ppStrictMaybe pcNetwork) n1 n2) - ] - -sameBabbageTxBody :: - ( Reflect era - , BabbageEraTxBody era - ) => - Proof era -> - BabbageTxBody era -> - BabbageTxBody era -> - [(String, Maybe PDoc)] -sameBabbageTxBody - proof - (BabbageTxBody i1 cl1 ri1 o1 cr1 tc1 c1 (Withdrawals w1) f1 v1 pu1 r1 m1 s1 d1 n1) - (BabbageTxBody i2 cl2 ri2 o2 cr2 tc2 c2 (Withdrawals w2) f2 v2 pu2 r2 m2 s2 d2 n2) = - [ ("SpendInputs", eqVia (ppSet pcTxIn) i1 i2) - , ("ColInputs", eqVia (ppSet pcTxIn) cl1 cl2) - , ("RefInputs", eqVia (ppSet pcTxIn) ri1 ri2) - , ("Outputs", eqVia (ppList (pcTxOut proof . sizedValue) . toList) o1 o2) - , ("ColReturn", eqVia (ppStrictMaybe (pcTxOut proof . sizedValue)) cr1 cr2) - , ("TotalCol", eqVia (ppStrictMaybe pcCoin) tc1 tc2) - , ("Certs", eqVia (ppList (pcTxCert proof) . toList) c1 c2) - , ("WDRL", eqVia (ppMap pcRewardAccount pcCoin) w1 w2) - , ("Fee", eqVia pcCoin f1 f2) - , ("ValidityInterval", eqVia ppValidityInterval v1 v2) - , ("PPupdate", eqVia (\_ -> ppString "Update") pu1 pu2) - , ("ReqSignerHashes", eqVia (ppSet pcKeyHash) r1 r2) - , ("Mint", eqVia multiAssetSummary m1 m2) - , ("ScriptIntegrityHash", eqVia (ppStrictMaybe (trim . ppSafeHash)) s1 s2) - , ("AuxDataHash", eqVia (ppStrictMaybe (\(AuxiliaryDataHash h) -> trim (ppSafeHash h))) d1 d2) - , ("NetworkId", eqVia (ppStrictMaybe pcNetwork) n1 n2) - ] - -sameConwayTxBody :: - ( ConwayEraTxBody era - , Reflect era - ) => - Proof era -> - ConwayTxBody era -> - ConwayTxBody era -> - [(String, Maybe PDoc)] -sameConwayTxBody - proof - (ConwayTxBody i1 cl1 ri1 o1 cr1 tc1 c1 (Withdrawals w1) f1 v1 r1 m1 s1 d1 n1 vp1 pp1 ctv1 td1) - (ConwayTxBody i2 cl2 ri2 o2 cr2 tc2 c2 (Withdrawals w2) f2 v2 r2 m2 s2 d2 n2 vp2 pp2 ctv2 td2) = - [ ("SpendInputs", eqVia (ppSet pcTxIn) i1 i2) - , ("ColInputs", eqVia (ppSet pcTxIn) cl1 cl2) - , ("RefInputs", eqVia (ppSet pcTxIn) ri1 ri2) - , ("Outputs", eqVia (ppList (pcTxOut proof . sizedValue) . toList) o1 o2) - , ("ColReturn", eqVia (ppStrictMaybe (pcTxOut proof . sizedValue)) cr1 cr2) - , ("TotalCol", eqVia (ppStrictMaybe pcCoin) tc1 tc2) - , ("Certs", eqVia (ppList pcConwayTxCert . toList) c1 c2) - , ("WDRL", eqVia (ppMap pcRewardAccount pcCoin) w1 w2) - , ("Fee", eqVia pcCoin f1 f2) - , ("ValidityInterval", eqVia ppValidityInterval v1 v2) - , ("ReqSignerHashes", eqVia (ppSet pcKeyHash) r1 r2) - , ("Mint", eqVia multiAssetSummary m1 m2) - , ("ScriptIntegrityHash", eqVia (ppStrictMaybe (trim . ppSafeHash)) s1 s2) - , ("AuxDataHash", eqVia (ppStrictMaybe (\(AuxiliaryDataHash h) -> trim (ppSafeHash h))) d1 d2) - , ("NetworkId", eqVia (ppStrictMaybe pcNetwork) n1 n2) - , - ( "VotingProcedures" - , eqVia - (ppMap pcVoter (ppMap pcGovActionId pcVotingProcedure)) - (unVotingProcedures vp1) - (unVotingProcedures vp2) - ) - , ("ProposalProcedures", eqVia (ppOSet pcProposalProcedure) pp1 pp2) - , ("CurrentTreasuryValue", eqVia (ppStrictMaybe pcCoin) ctv1 ctv2) - , ("TreasuryDonation", eqVia pcCoin td1 td2) - ] - -sameTxBody :: Reflect era => Proof era -> TxBody era -> TxBody era -> [(String, Maybe PDoc)] -sameTxBody proof@Shelley x y = sameShelleyTxBody proof x y -sameTxBody proof@Allegra x y = sameAllegraTxBody proof x y -sameTxBody proof@Mary x y = sameMaryTxBody proof x y -sameTxBody proof@Alonzo x y = sameAlonzoTxBody proof x y -sameTxBody proof@Babbage x y = sameBabbageTxBody proof x y -sameTxBody proof@Conway x y = sameConwayTxBody proof x y - --- ======================= --- Comparing Tx for Sameness - -sameShelleyTx :: - (Reflect era, TxWits era ~ ShelleyTxWits era) => - Proof era -> - ShelleyTx era -> - ShelleyTx era -> - [(String, Maybe PDoc)] -sameShelleyTx proof (ShelleyTx b1 w1 aux1) (ShelleyTx b2 w2 aux2) = - extendLabel "TxBody " (sameTxBody proof b1 b2) - ++ extendLabel "TxWits " (sameShelleyTxWits proof w1 w2) - ++ [ ("AuxData", eqByShow aux1 aux2) - ] - -sameAlonzoTx :: - ( Reflect era - , AlonzoEraScript era - , TxWits era ~ AlonzoTxWits era - ) => - Proof era -> - AlonzoTx era -> - AlonzoTx era -> - [(String, Maybe PDoc)] -sameAlonzoTx proof (AlonzoTx b1 w1 v1 aux1) (AlonzoTx b2 w2 v2 aux2) = - extendLabel "TxBody " (sameTxBody proof b1 b2) - ++ extendLabel "TxWits " (sameAlonzoTxWits proof w1 w2) - ++ [ ("AuxData", eqByShow aux1 aux2) - , ("IsValid", eqByShow v1 v2) - ] -{-# NOINLINE sameAlonzoTx #-} - -sameTx :: Reflect era => Proof era -> Tx era -> Tx era -> [(String, Maybe PDoc)] -sameTx proof@Shelley x y = sameShelleyTx proof x y -sameTx proof@Allegra x y = sameShelleyTx proof x y -sameTx proof@Mary x y = sameShelleyTx proof x y -sameTx proof@Alonzo x y = sameAlonzoTx proof x y -sameTx proof@Babbage x y = sameAlonzoTx proof x y -sameTx proof@Conway x y = sameAlonzoTx proof x y -{-# NOINLINE sameTx #-} - --- ========================== --- Comparing TxSeq for Sameness - -ints :: [Int] -ints = [0 ..] - -sameShelleyTxSeq :: - ( Reflect era - , Tx era ~ ShelleyTx era - , SafeToHash (TxWits era) - ) => - Proof era -> - ShelleyTxSeq era -> - ShelleyTxSeq era -> - [(String, Maybe PDoc)] -sameShelleyTxSeq proof (ShelleyTxSeq ss1) (ShelleyTxSeq ss2) = - sameWithDependency (zipWith3 f ints (toList ss1) (toList ss2)) - where - f n t1 t2 = SomeM (show n) (sameTx proof) t1 t2 - -sameAlonzoTxSeq :: - ( Reflect era - , AlonzoEraTx era - , SafeToHash (TxWits era) - ) => - Proof era -> - AlonzoTxSeq era -> - AlonzoTxSeq era -> - [(String, Maybe PDoc)] -sameAlonzoTxSeq proof (AlonzoTxSeq ss1) (AlonzoTxSeq ss2) = - sameWithDependency (zipWith3 f ints (toList ss1) (toList ss2)) - where - f n t1 t2 = SomeM (show n) (sameTx proof) t1 t2 - -sameTxSeq :: Reflect era => Proof era -> TxSeq era -> TxSeq era -> [(String, Maybe PDoc)] -sameTxSeq proof@Shelley x y = sameShelleyTxSeq proof x y -sameTxSeq proof@Allegra x y = sameShelleyTxSeq proof x y -sameTxSeq proof@Mary x y = sameShelleyTxSeq proof x y -sameTxSeq proof@Alonzo x y = sameAlonzoTxSeq proof x y -sameTxSeq proof@Babbage x y = sameAlonzoTxSeq proof x y -sameTxSeq proof@Conway x y = sameAlonzoTxSeq proof x y -{-# NOINLINE sameTxSeq #-} diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/Scriptic.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/Scriptic.hs deleted file mode 100644 index 3b425ddcc1d..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/Scriptic.hs +++ /dev/null @@ -1,168 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableSuperClasses #-} - -module Test.Cardano.Ledger.Generic.Scriptic where - -import Cardano.Ledger.Allegra.Scripts (Timelock (..)) -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Keys (KeyHash, KeyRole (..)) -import Cardano.Ledger.Mary.Value (AssetName (..), MultiAsset (..), PolicyID (..)) -import Cardano.Ledger.Plutus.Language (Language (..)) -import qualified Cardano.Ledger.Shelley.Scripts as Multi -import Cardano.Slotting.Slot (SlotNo (..)) -import qualified Data.Map.Strict as Map -import qualified Data.Sequence.Strict as Seq (fromList) -import Numeric.Natural (Natural) -import Test.Cardano.Ledger.Alonzo.Arbitrary (alwaysFails, alwaysSucceeds) -import Test.Cardano.Ledger.Generic.Indexed (theKeyHash) -import Test.Cardano.Ledger.Generic.Proof - --- ============================================= --- Making era parameterized Scripts - -theSlot :: Int -> SlotNo -theSlot n = SlotNo (fromIntegral n) - -class (EraScript era, Show (Script era)) => Scriptic era where - always :: Natural -> Proof era -> Script era - alwaysAlt :: Natural -> Proof era -> Script era - never :: Natural -> Proof era -> Script era - require :: KeyHash 'Witness (EraCrypto era) -> Proof era -> NativeScript era - allOf :: [Proof era -> NativeScript era] -> Proof era -> NativeScript era - anyOf :: [Proof era -> NativeScript era] -> Proof era -> NativeScript era - mOf :: Int -> [Proof era -> NativeScript era] -> Proof era -> NativeScript era - -class Scriptic era => PostShelley era where - before :: Int -> Proof era -> NativeScript era - after :: Int -> Proof era -> NativeScript era - -class HasTokens era where - forge :: Integer -> Script era -> MultiAsset (EraCrypto era) - -instance Crypto c => Scriptic (ShelleyEra c) where - never _ Shelley = Multi.RequireAnyOf mempty -- always False - always _ Shelley = Multi.RequireAllOf mempty -- always True - alwaysAlt _ Shelley = Multi.RequireAllOf mempty -- always True - require key Shelley = Multi.RequireSignature key - allOf xs Shelley = Multi.RequireAllOf (map ($ Shelley) xs) - anyOf xs Shelley = Multi.RequireAnyOf (map ($ Shelley) xs) - mOf n xs Shelley = Multi.RequireMOf n (map ($ Shelley) xs) - --- Make Scripts in AllegraEra - -instance Crypto c => Scriptic (AllegraEra c) where - never _ Allegra = RequireAnyOf mempty -- always False - always _ Allegra = RequireAllOf mempty -- always True - alwaysAlt _ Allegra = RequireAllOf mempty -- always True - require key Allegra = RequireSignature key - allOf xs proof = RequireAllOf (Seq.fromList (map ($ proof) xs)) - anyOf xs proof = RequireAnyOf (Seq.fromList (map ($ proof) xs)) - mOf n xs proof = RequireMOf n (Seq.fromList (map ($ proof) xs)) - -instance Crypto c => PostShelley (AllegraEra c) where - before n Allegra = RequireTimeStart (theSlot n) - after n Allegra = RequireTimeExpire (theSlot n) - --- Make Scripts in Mary era - -instance Crypto c => Scriptic (MaryEra c) where - never _ Mary = RequireAnyOf mempty -- always False - always _ Mary = RequireAllOf mempty -- always True - alwaysAlt _ Mary = RequireAllOf mempty -- always True - require key Mary = RequireSignature key - allOf xs proof = RequireAllOf (Seq.fromList (map ($ proof) xs)) - anyOf xs proof = RequireAnyOf (Seq.fromList (map ($ proof) xs)) - mOf n xs proof = RequireMOf n (Seq.fromList (map ($ proof) xs)) - -instance Crypto c => PostShelley (MaryEra c) where - before n Mary = RequireTimeStart (theSlot n) - after n Mary = RequireTimeExpire (theSlot n) - -instance forall c. Crypto c => HasTokens (MaryEra c) where - forge n s = MultiAsset $ Map.singleton pid (Map.singleton an n) - where - pid = PolicyID (hashScript @(MaryEra c) s) - an = AssetName "an" - -instance forall c. Crypto c => HasTokens (AlonzoEra c) where - forge n s = MultiAsset $ Map.singleton pid (Map.singleton an n) - where - pid = PolicyID (hashScript @(AlonzoEra c) s) - an = AssetName "an" - -instance forall c. Crypto c => HasTokens (BabbageEra c) where - forge n s = MultiAsset $ Map.singleton pid (Map.singleton an n) - where - pid = PolicyID (hashScript @(BabbageEra c) s) - an = AssetName "an" - -instance forall c. Crypto c => HasTokens (ConwayEra c) where - forge n s = MultiAsset $ Map.singleton pid (Map.singleton an n) - where - pid = PolicyID (hashScript @(ConwayEra c) s) - an = AssetName "an" - --- ================================= --- Make Scripts in Alonzo era - -instance Crypto c => Scriptic (AlonzoEra c) where - never n Alonzo = alwaysFails @'PlutusV1 n -- always False - always n Alonzo = alwaysSucceeds @'PlutusV1 n -- always True - alwaysAlt n Alonzo = alwaysSucceeds @'PlutusV1 n -- always True - require key Alonzo = RequireSignature key - allOf xs proof = RequireAllOf (Seq.fromList (($ proof) <$> xs)) - anyOf xs proof = RequireAnyOf (Seq.fromList (($ proof) <$> xs)) - mOf n xs proof = RequireMOf n (Seq.fromList (($ proof) <$> xs)) - -instance Crypto c => PostShelley (AlonzoEra c) where - before n Alonzo = RequireTimeStart (theSlot n) - after n Alonzo = RequireTimeExpire (theSlot n) - --- ================================= - -instance Crypto c => Scriptic (BabbageEra c) where - never n Babbage = alwaysFails @'PlutusV1 n -- always False - always n Babbage = alwaysSucceeds @'PlutusV1 n -- always True - alwaysAlt n Babbage = alwaysSucceeds @'PlutusV2 n -- always True - require key Babbage = RequireSignature key - allOf xs proof = RequireAllOf (Seq.fromList (($ proof) <$> xs)) - anyOf xs proof = RequireAnyOf (Seq.fromList (($ proof) <$> xs)) - mOf n xs proof = RequireMOf n (Seq.fromList (($ proof) <$> xs)) - -instance Crypto c => PostShelley (BabbageEra c) where - before n Babbage = RequireTimeStart (theSlot n) - after n Babbage = RequireTimeExpire (theSlot n) - --- ================================= - -instance Crypto c => Scriptic (ConwayEra c) where - never n Conway = alwaysFails @'PlutusV1 n -- always False - always n Conway = alwaysSucceeds @'PlutusV1 n -- always True - alwaysAlt n Conway = alwaysSucceeds @'PlutusV2 n -- always True - require key Conway = RequireSignature key - allOf xs proof = RequireAllOf (Seq.fromList (($ proof) <$> xs)) - anyOf xs proof = RequireAnyOf (Seq.fromList (($ proof) <$> xs)) - mOf n xs proof = RequireMOf n (Seq.fromList (($ proof) <$> xs)) - -instance Crypto c => PostShelley (ConwayEra c) where - before n Conway = RequireTimeStart (theSlot n) - after n Conway = RequireTimeExpire (theSlot n) - --- ======================================= --- Some examples that work in multiple Eras -matchkey :: Scriptic era => Int -> Proof era -> NativeScript era -matchkey n era = require (theKeyHash n) era - -test21 :: Scriptic era => Proof era -> Script era -test21 wit = fromNativeScript $ allOf [matchkey 1, anyOf [matchkey 2, matchkey 3]] wit - -test22 :: PostShelley era => Proof era -> Script era -test22 wit = fromNativeScript $ mOf 2 [matchkey 1, before 100, anyOf [matchkey 2, matchkey 3]] wit diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/Trace.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/Trace.hs deleted file mode 100644 index 2deb14778f3..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/Trace.hs +++ /dev/null @@ -1,655 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} - -module Test.Cardano.Ledger.Generic.Trace where - --- ========================================================================= - -import Cardano.Ledger.Address (Addr (..)) -import Cardano.Ledger.Alonzo.Rules (AlonzoUtxowPredFailure (..)) -import Cardano.Ledger.Alonzo.Tx (AlonzoTx (body)) -import Cardano.Ledger.Babbage.Rules (BabbageUtxowPredFailure (..)) -import Cardano.Ledger.Babbage.TxBody (certs') -import Cardano.Ledger.BaseTypes (BlocksMade (..), Globals) -import Cardano.Ledger.EpochBoundary (SnapShots (..), calculatePoolDistr) -import Cardano.Ledger.Keys (KeyHash, KeyRole (..)) -import Cardano.Ledger.PoolDistr (IndividualPoolStake (..), PoolDistr (..)) -import Cardano.Ledger.SafeHash (hashAnnotated) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.LedgerState ( - AccountState (..), - CertState (..), - DState (dsUnified), - EpochState (..), - LedgerState (..), - NewEpochState (..), - PState (..), - StashedAVVMAddresses, - UTxOState (..), - curPParamsEpochStateL, - prevPParamsEpochStateL, - ) -import Cardano.Ledger.Shelley.Rules ( - ShelleyLedgerPredFailure (..), - ShelleyLedgersPredFailure (..), - ShelleyUtxowPredFailure (ScriptWitnessNotValidatingUTXOW), - ) -import qualified Cardano.Ledger.UMap as UM -import Cardano.Ledger.UTxO (UTxO (..)) -import Cardano.Slotting.Slot (EpochNo (..), SlotNo (..)) -import Control.Monad (forM) -import Control.Monad.Trans.Class (MonadTrans (lift)) -import Control.Monad.Trans.RWS.Strict (get, gets) -import Control.Monad.Trans.Reader (ReaderT (..)) -import qualified Control.State.Transition as STS -import Control.State.Transition.Extended (IRC (), STS (..), TRC (..)) -import Data.Default.Class (Default (def)) -import qualified Data.Foldable as Fold -import Data.Functor.Identity (Identity (runIdentity)) -import Data.IORef (IORef, newIORef, readIORef, writeIORef) -import Data.List.NonEmpty (NonEmpty) -import qualified Data.Map.Strict as Map -import Data.Maybe.Strict (StrictMaybe (..)) -import Data.Sequence.Strict (StrictSeq (..)) -import qualified Data.Sequence.Strict as SS -import qualified Data.Set as Set -import Data.Vector (Vector, (!)) -import qualified Data.Vector as Vector -import Debug.Trace -import GHC.Word (Word64) -import Lens.Micro ((&), (.~), (^.)) -import Prettyprinter (hsep, parens, vsep) -import System.IO.Unsafe (unsafePerformIO) -import Test.Cardano.Ledger.Generic.ApplyTx (applyTx) -import Test.Cardano.Ledger.Generic.Fields (TxBodyField (..), abstractTxBody) -import Test.Cardano.Ledger.Generic.Functions ( - adaPots, - allInputs, - getBody, - getScriptWits, - getWitnesses, - isValid', - totalAda, - txoutFields, - ) -import Test.Cardano.Ledger.Generic.GenState ( - GenEnv (..), - GenRS, - GenSize (..), - GenState (..), - getBlocksizeMax, - getReserves, - getSlot, - getSlotDelta, - getTreasury, - gsModel, - initStableFields, - initialLedgerState, - modifyModel, - runGenRS, - ) -import Test.Cardano.Ledger.Generic.MockChain -import Test.Cardano.Ledger.Generic.ModelState (MUtxo, stashedAVVMAddressesZero) -import Test.Cardano.Ledger.Generic.PrettyCore ( - PDoc, - PrettyA (..), - pcCoin, - pcCredential, - pcKeyHash, - pcPoolParams, - pcScript, - pcScriptHash, - pcSlotNo, - pcTxBodyField, - pcTxIn, - ppInt, - ppList, - ppMap, - ppRecord, - ppSafeHash, - ppSet, - ppString, - ppWord64, - scriptSummary, - ) -import Test.Cardano.Ledger.Generic.Proof hiding (lift) -import Test.Cardano.Ledger.Generic.TxGen (genAlonzoTx) -import Test.Cardano.Ledger.Shelley.Rules.IncrementalStake (stakeDistr) -import Test.Cardano.Ledger.Shelley.Utils (applySTSTest, runShelleyBase, testGlobals) -import Test.Control.State.Transition.Trace (Trace (..), lastState, splitTrace) -import Test.Control.State.Transition.Trace.Generator.QuickCheck (HasTrace (..), traceFromInitState) -import Test.QuickCheck -import Test.Tasty (TestTree, defaultMain, testGroup) -import Test.Tasty.QuickCheck (testProperty) - --- =========================================== - --- | Generate a Tx and an internal Model of the state after the tx --- has been applied. That model can be used to generate the next Tx -genRsTxAndModel :: forall era. Reflect era => Proof era -> Int -> SlotNo -> GenRS era (Tx era) -genRsTxAndModel proof n slot = do - (_, tx) <- genAlonzoTx proof slot - modifyModel (\model -> applyTx proof n slot model tx) - pure tx - --- | Generate a Vector of (StrictSeq (Tx era)) representing a (Vector Block) -genRsTxSeq :: - forall era. - Reflect era => - Proof era -> - Int -> - Int -> - [(StrictSeq (Tx era), SlotNo)] -> - SlotNo -> - GenRS era (Vector (StrictSeq (Tx era), SlotNo)) -genRsTxSeq proof this lastN ans _slot | this >= lastN = do - seq - (unsafePerformIO (writeIORef theVector (TT proof (reverse ans)))) - (pure (Vector.fromList (reverse ans))) -genRsTxSeq proof this lastN ans slot = do - maxBlockSize <- getBlocksizeMax <$> get - n <- lift $ choose (2 :: Int, fromIntegral maxBlockSize) - txs <- forM [0 .. n - 1] (\i -> genRsTxAndModel proof (this + i) slot) - newSlotRange <- gets getSlotDelta - nextSlotNo <- lift $ SlotNo . (+ (unSlotNo slot)) <$> choose newSlotRange - genRsTxSeq proof (this + n) lastN ((SS.fromList txs, slot) : ans) nextSlotNo - --- | Generate a Vector of Blocks, and an initial LedgerState -genTxSeq :: - forall era. - Reflect era => - Proof era -> -- Proof of the Era we want to generate the sequence in - GenSize -> -- Size of things the generated code should adhere to - Int -> -- The number of Tx in the sequence - GenRS era () -> -- An arbitrary 'initialization action', to run before we generate the sequence - -- use (pure ()) if you don't want or need initialization - Gen (Vector (StrictSeq (Tx era), SlotNo), GenState era) -genTxSeq proof gensize numTx initialize = do - runGenRS proof gensize (initialize >> genRsTxSeq proof 0 numTx [] (SlotNo $ 1)) - -runTest :: IO () -runTest = do - (v, _) <- generate $ genTxSeq Babbage def 20 (pure ()) - print (Vector.length v) - --- ================================================================== --- Constructing the "real", initial NewEpochState, from the GenState - -initialMockChainState :: - Reflect era => - Proof era -> - GenState era -> - MockChainState era -initialMockChainState proof gstate = - MockChainState newepochstate newepochstate (getSlot gstate) 0 - where - ledgerstate = initialLedgerState gstate - newepochstate = - NewEpochState - { nesEL = EpochNo 0 - , nesBprev = BlocksMade Map.empty - , nesBcur = BlocksMade Map.empty - , nesEs = makeEpochState gstate ledgerstate - , nesRu = SNothing - , nesPd = PoolDistr (gsInitialPoolDistr gstate) - , stashedAVVMAddresses = stashedAVVMAddressesZero proof - } - -makeEpochState :: Reflect era => GenState era -> LedgerState era -> EpochState era -makeEpochState gstate ledgerstate = - EpochState - { esAccountState = AccountState (getTreasury gstate) (getReserves gstate) - , esSnapshots = snaps ledgerstate - , esLState = ledgerstate - , esNonMyopic = def - } - & prevPParamsEpochStateL .~ gePParams (gsGenEnv gstate) - & curPParamsEpochStateL .~ gePParams (gsGenEnv gstate) - -snaps :: EraTxOut era => LedgerState era -> SnapShots (EraCrypto era) -snaps (LedgerState UTxOState {utxosUtxo = u, utxosFees = f} (CertState _ pstate dstate)) = - SnapShots snap (calculatePoolDistr snap) snap snap f - where - snap = stakeDistr u dstate pstate - --- ============================================================================== - --- | Turn a UTxO into a smaller UTxO, with only entries mentioned in --- the inputs of 'txs' , then pretty print it. -pcSmallUTxO :: EraTx era => Proof era -> MUtxo era -> [Tx era] -> PDoc -pcSmallUTxO proof u txs = ppMap pcTxIn (shortTxOut proof) m - where - keys = Set.unions (map f txs) - f tx = allInputs proof (getBody proof tx) - m = Map.restrictKeys u keys - -raiseMockError :: - forall era. - Reflect era => - Word64 -> - SlotNo -> - EpochState era -> - NonEmpty (MockChainFailure era) -> - [Tx era] -> - GenState era -> - String -raiseMockError slot (SlotNo next) epochstate pdfs txs GenState {..} = - let utxo = unUTxO $ (utxosUtxo . lsUTxOState . esLState) epochstate - _ssPoolParams = (psStakePoolParams . certPState . lsCertState . esLState) epochstate - _pooldeposits = (psDeposits . certPState . lsCertState . esLState) epochstate - _keydeposits = (UM.depositMap . dsUnified . certDState . lsCertState . esLState) epochstate - in show $ - vsep - [ ppString "===================================" - , ppString "UTxO\n" <> pcSmallUTxO reify utxo txs - , ppString "===================================" - , ppString "Stable Pools\n" <> ppSet pcKeyHash gsStablePools - , ppString "===================================" - , ppString "Stable Delegators\n" <> ppSet pcCredential gsStableDelegators - , -- You never know what is NEEDED to debug a failure, and what is a DISTRACTION - -- These things certainly fall in that category. I leave them commented out so if - -- they are not a distraction in the current error, they are easy to turn back on. - -- ppString "===================================", - -- ppString "PoolDeposits\n" <> ppMap pcKeyHash pcCoin _pooldeposits, - -- ppString "===================================", - -- ppString "KeyDeposits\n" <> ppMap pcCredential pcCoin _keydeposits, - -- ppString "Model KeyDeposits\n" <> ppMap pcCredential pcCoin (mKeyDeposits gsModel), - -- ppString "Initial Pool Distr\n" <> ppMap pcKeyHash pcIndividualPoolStake gsInitialPoolDistr, - -- ppString "===================================", - -- ppString "Initial Pool Params\n" <> ppMap pcKeyHash pcPoolParams gsInitialPoolParams, - -- ppString "===================================", - -- ppString "Initial Rewards\n" <> ppMap pcCredential pcCoin gsInitialRewards, - ppString "===================================" - , showBlock utxo txs - , ppString "===================================" - , ppString (show (adaPots reify epochstate)) - , ppString "===================================" - , ppList (ppMockChainFailure reify) (Fold.toList pdfs) - , ppString "===================================" - , ppString "Last Slot " <> ppWord64 slot - , ppString "Current Slot " <> ppWord64 next - , ppString "===================================" - , ppString "Script TxWits\n" - <> ppMap - pcScriptHash - (scriptSummary @era reify) - (Map.restrictKeys gsScripts . badScripts reify $ Fold.toList pdfs) - , -- ppString "===================================", - -- ppString "Real Pool Params\n" <> ppMap pcKeyHash pcPoolParams poolParams, - ppString "=====================================" - , ppString ("Protocol Parameters\n" ++ show (epochstate ^. curPParamsEpochStateL)) - ] - -badScripts :: Proof era -> [MockChainFailure era] -> Set.Set (ScriptHash (EraCrypto era)) -badScripts proof xs = Fold.foldl' (\s mcf -> Set.union s (getw proof mcf)) Set.empty xs - where - getw :: Proof era -> MockChainFailure era -> Set.Set (ScriptHash (EraCrypto era)) - getw - Babbage - ( MockChainFromLedgersFailure - ( LedgerFailure - ( UtxowFailure - ( AlonzoInBabbageUtxowPredFailure - ( ShelleyInAlonzoUtxowPredFailure - (ScriptWitnessNotValidatingUTXOW set) - ) - ) - ) - ) - ) = set - getw - Alonzo - ( MockChainFromLedgersFailure - ( LedgerFailure - ( UtxowFailure - ( ShelleyInAlonzoUtxowPredFailure - (ScriptWitnessNotValidatingUTXOW set) - ) - ) - ) - ) = set - getw - Mary - ( MockChainFromLedgersFailure - ( LedgerFailure - ( UtxowFailure - (ScriptWitnessNotValidatingUTXOW set) - ) - ) - ) = set - getw - Allegra - ( MockChainFromLedgersFailure - ( LedgerFailure - ( UtxowFailure - (ScriptWitnessNotValidatingUTXOW set) - ) - ) - ) = set - getw _ _ = Set.empty - -showBlock :: forall era. Reflect era => MUtxo era -> [Tx era] -> PDoc -showBlock u txs = ppList pppair (zip txs [0 ..]) - where - pppair (tx, n) = - let body = getBody reify tx - in vsep - [ ppString "\n###########" - , ppInt n - , ppSafeHash (hashAnnotated body) - , smartTxBody reify u body - , ppString (show (isValid' reify tx)) - , ppMap pcScriptHash (pcScript @era reify) (getScriptWits reify (getWitnesses reify tx)) - , ppString "\n" - ] - -shortTxOut :: EraTxOut era => Proof era -> TxOut era -> PDoc -shortTxOut proof out = case txoutFields proof out of - (Addr _ pay _, _, _) -> - hsep ["Out", parens $ hsep ["Addr", pcCredential pay], pcCoin (out ^. coinTxOutL)] - _ -> error "Bootstrap Address in shortTxOut" - -smartTxBody :: Reflect era => Proof era -> MUtxo era -> TxBody era -> PDoc -smartTxBody proof u txbody = ppRecord "TxBody" pairs - where - fields = abstractTxBody proof txbody - pairs = concat (map help fields) - help (Inputs s) = [("spend inputs", ppSet pcIn s)] - help (Collateral s) = [("coll inputs", ppSet pcIn s)] - help x = pcTxBodyField proof x - pcIn x = - hsep - [ pcTxIn x - , " -> " - , case Map.lookup x u of Just out -> shortTxOut proof out; Nothing -> "?" - ] - --- ===================================================================== --- HasTrace instance of MOCKCHAIN depends on STS(MOCKCHAIN era) instance --- We show the type family instances here for reference. -{- -instance STS (MOCKCHAIN era) - where - type State (MOCKCHAIN era) = MockChainState era - type Signal (MOCKCHAIN era) = (MockBlock era) - type Environment (MOCKCHAIN era) = () --} --- ============================================================== - -data Gen1 era = Gen1 (Vector (StrictSeq (Tx era), SlotNo)) (GenState era) - -instance - ( STS (MOCKCHAIN era) - , Reflect era - ) => - HasTrace (MOCKCHAIN era) (Gen1 era) - where - type BaseEnv (MOCKCHAIN era) = Globals - - interpretSTS globals act = runIdentity $ runReaderT act globals - - envGen _gstate = pure () - - sigGen (Gen1 txss gs) () mcs@(MockChainState newepoch _ (SlotNo lastSlot) count) = do - let NewEpochState epochnum _ _ epochstate _ pooldistr _ = newepoch - issuerkey <- chooseIssuer epochnum lastSlot count pooldistr - let (txs, nextSlotNo) = txss ! count - -- Assmble it into a MockBlock - let mockblock = MockBlock issuerkey nextSlotNo txs - -- Run the STS Rules for MOCKCHAIN with generated signal - - case runShelleyBase (applySTSTest (TRC @(MOCKCHAIN era) ((), mcs, mockblock))) of - Left pdfs -> - let txsl = Fold.toList txs - in trace - (raiseMockError lastSlot nextSlotNo epochstate pdfs txsl gs) - ( error . unlines $ - "sigGen in (HasTrace (MOCKCHAIN era) (Gen1 era)) FAILS" : map show (Fold.toList pdfs) - ) - Right mcs2 -> seq mcs2 (pure mockblock) - - shrinkSignal _ = [] - --- TODO, perhaps we might add shrinking like this. Just a thought. Failure is usually caused by just one Tx --- in the Block. If the first or last Tx, is independent of the failing Tx, we can probably throw them away. --- shrinkSignal (MockBlock _ _ xs) | SS.null xs = [] --- shrinkSignal (MockBlock i s xs) = [MockBlock i s (SS.drop 1 xs), MockBlock i s (SS.take (SS.length xs - 1) xs)] - -mapProportion :: EpochNo -> Word64 -> Int -> Map.Map k Int -> Gen k -mapProportion epochnum lastSlot count m = - case pairs of - [] -> - -- TODO, we need to figure out why this occurs. It always occurs near SlotNo 300, So I am assuming that - -- sometimes as we move into the 3rd epoch, however stakeDistr is computed becomes empty. This is probably - -- because there is no action in Test.Cardano.Ledger.Constrained.Trace.Actions for the epoch boundary. - -- This temporary fix is good enough for now. But the annoying trace message reminds us to fix this. - trace - ( "There are no stakepools to choose an issuer from" - ++ ", epoch=" - ++ show epochnum - ++ ", last slot=" - ++ show lastSlot - ++ ", index of Tx=" - ++ show count - ) - discard - (w : _) -> - if all (\(n, _k) -> n == 0) pairs - then snd w -- All stakepools have zero Stake, choose issuer arbitrarily. possible, but rare. - else frequency pairs - where - pairs = [(n, pure k) | (k, n) <- Map.toList m] - -chooseIssuer :: EpochNo -> Word64 -> Int -> PoolDistr c -> Gen (KeyHash 'StakePool c) -chooseIssuer epochnum lastSlot count (PoolDistr m) = mapProportion epochnum lastSlot count (getInt <$> m) - where - getInt x = floor (individualPoolStake x * 1000) - --- =================================================================================== - --- Generating Traces, and making properties out of a Trace --- ========================================================================= - -genTrace :: - forall era. - ( Reflect era - , HasTrace (MOCKCHAIN era) (Gen1 era) - ) => - Proof era -> - Int -> - GenSize -> - GenRS era () -> -- An arbitrary 'initialization action', to run before we generate the sequence - -- use (pure ()) if you don't want or need initialization - Gen (Trace (MOCKCHAIN era)) -genTrace proof numTxInTrace gsize initialize = do - (vs, genstate) <- genTxSeq proof gsize numTxInTrace initialize - let initState = initialMockChainState proof genstate - traceFromInitState @(MOCKCHAIN era) - testGlobals - (fromIntegral (length vs)) - (Gen1 vs genstate) - (Just (\_ -> pure $ Right initState)) - -traceProp :: - forall era prop. - ( Reflect era - , HasTrace (MOCKCHAIN era) (Gen1 era) - ) => - Proof era -> - Int -> - GenSize -> - (MockChainState era -> MockChainState era -> prop) -> - Gen prop -traceProp proof numTxInTrace gsize f = do - trace1 <- genTrace proof numTxInTrace gsize initStableFields - pure (f (_traceInitState trace1) (lastState trace1)) - -forEachEpochTrace :: - forall era prop. - ( Testable prop - , Reflect era - ) => - Proof era -> - Int -> - GenSize -> - (Trace (MOCKCHAIN era) -> prop) -> - Gen Property -forEachEpochTrace proof tracelen genSize f = do - let newEpoch tr1 tr2 = nesEL (mcsNes tr1) /= nesEL (mcsNes tr2) - trc <- case proof of - Conway -> genTrace proof tracelen genSize initStableFields - Babbage -> genTrace proof tracelen genSize initStableFields - Alonzo -> genTrace proof tracelen genSize initStableFields - Allegra -> genTrace proof tracelen genSize initStableFields - Mary -> genTrace proof tracelen genSize initStableFields - Shelley -> genTrace proof tracelen genSize initStableFields - let propf (subtrace, index) = counterexample ("Subtrace of EpochNo " ++ show index ++ " fails.") (f subtrace) - -- The very last sub-trace may not be a full epoch, so we throw it away. - case reverse (splitTrace newEpoch trc) of - [] -> pure (property True) - _ : revSplits -> pure (conjoin (propf <$> zip (reverse revSplits) [0 :: Int ..])) - --- | Check a property on the 'sts' traces. --- --- Takes an optional generator for initial state of the STS. -forAllTraceFromInitState :: - forall sts traceGenEnv prop. - ( HasTrace sts traceGenEnv - , Testable prop - , Show (Environment sts) - ) => - BaseEnv sts -> - -- | Maximum trace length. - Word64 -> - traceGenEnv -> - -- | Optional generator of STS initial state - Maybe (IRC sts -> Gen (Either (NonEmpty (STS.PredicateFailure sts)) (State sts))) -> - (Trace sts -> prop) -> - Property -forAllTraceFromInitState baseEnv maxTraceLength traceGenEnv genSt0 = - forAllShrinkBlind - (traceFromInitState @sts @traceGenEnv baseEnv maxTraceLength traceGenEnv genSt0) - (const []) - --- ========================================================================= --- Test for just making a trace - --- | We are making 'smoke' tests, testing for smoke rather than fire. --- Under the assumption that shorter tests have advantages --- like not getting turned off because the tests take too long. A glaring failure is --- likely to be caught in 'n' tests, rather than the standard '100' -testPropMax :: Testable prop => Int -> String -> prop -> TestTree -testPropMax n name x = testProperty name (withMaxSuccess n x) - -chainTest :: - forall era. - ( Reflect era - , HasTrace (MOCKCHAIN era) (Gen1 era) - , Eq (StashedAVVMAddresses era) - ) => - Proof era -> - Int -> - GenSize -> - TestTree -chainTest proof n gsize = testPropMax 30 message action - where - message = show proof ++ " era." - action = do - (vs, genstate) <- genTxSeq proof gsize n initStableFields - let initState = initialMockChainState proof genstate - trace1 <- - traceFromInitState @(MOCKCHAIN era) - testGlobals - (fromIntegral (length vs)) - (Gen1 vs genstate) - (Just (\_ -> pure $ Right initState)) - -- Here is where we can add some properties for traces: - pure (_traceInitState trace1 === initState) - -testTraces :: Int -> TestTree -testTraces n = - testGroup - "MockChainTrace" - [ chainTest Babbage n def - , chainTest Alonzo n def - , chainTest Mary n def - , chainTest Allegra n def - , multiEpochTest Babbage 225 def - , multiEpochTest Shelley 225 def - ] - --- | Show that Ada is preserved across multiple Epochs -multiEpochTest :: - ( Reflect era - , HasTrace (MOCKCHAIN era) (Gen1 era) - ) => - Proof era -> - Int -> - GenSize -> - TestTree -multiEpochTest proof numTx gsize = - let gensize = gsize {blocksizeMax = 4, slotDelta = (6, 12)} - getEpoch mockchainstate = nesEL (mcsNes mockchainstate) - propf firstSt lastSt = - collect (getEpoch lastSt) (totalAda firstSt === totalAda lastSt) - in testPropMax - 30 - ("Multi epoch. Ada is preserved. " ++ show proof ++ " era. Trace length = " ++ show numTx) - (traceProp proof numTx gensize propf) - --- =========================================================== --- Debugging tools for replaying failures. We store the trace in --- the IORef TT, and then we can use 'main3' to display what we --- need to see from the trace. - -main :: IO () -main = defaultMain $ multiEpochTest Shelley 200 def - -data TT where - TT :: Proof era -> [(StrictSeq (Tx era), SlotNo)] -> TT - -theVector :: IORef TT -theVector = unsafePerformIO (newIORef (TT Babbage [])) - -showVector :: (forall era. Proof era -> [Tx era] -> SlotNo -> PDoc) -> IO () -showVector pretty = do - xs <- readIORef theVector - case xs of - TT _ [] -> print ("NONE" :: String) - TT proof ys -> mapM_ (\(ss, slot) -> print (pretty proof (Fold.toList ss) slot)) ys - -main3 :: IO () -main3 = showVector pretty - where - pretty :: Proof era -> [Tx era] -> SlotNo -> PDoc - pretty Babbage xs slot = - vsep - [ pcSlotNo slot - , vsep (map (ppList prettyA . Fold.toList . certs' . body) xs) - ] - pretty p _ _ = ppString ("main3 does not work in era " ++ show p) - -main2 :: IO () -main2 = defaultMain (chainTest Babbage 100 def) - --- | display information about stable fields if the only action is to 'initStableFields' -displayStableInfo :: IO () -displayStableInfo = do - let proof = Babbage - ((), gstate) <- generate $ runGenRS proof def initStableFields - let mcst = initialMockChainState proof gstate - let del = gsInitialPoolParams gstate - print (ppMockChainState mcst) - print (ppMap pcKeyHash pcPoolParams del) diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/TxGen.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/TxGen.hs deleted file mode 100644 index 4df72f8dcda..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/TxGen.hs +++ /dev/null @@ -1,1150 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TupleSections #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} - -module Test.Cardano.Ledger.Generic.TxGen ( - genAlonzoTx, - Box (..), - applySTSByProof, - assembleWits, - coreTx, - coreTxBody, - coreTxOut, - genUTxO, -) -where - -import Cardano.Ledger.Allegra.Scripts (Timelock (..), ValidityInterval (..)) -import Cardano.Ledger.Alonzo.Scripts hiding (Script) -import Cardano.Ledger.Alonzo.Tx (IsValid (..)) -import Cardano.Ledger.Alonzo.TxBody (AlonzoTxOut (..)) -import Cardano.Ledger.Alonzo.TxWits ( - Redeemers (..), - TxDats (..), - unRedeemers, - ) -import Cardano.Ledger.Babbage.TxBody (BabbageTxOut (..)) -import Cardano.Ledger.BaseTypes (EpochInterval (..), Network (..), mkTxIxPartial) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Conway.TxCert (ConwayDelegCert (..), ConwayTxCert (..)) -import Cardano.Ledger.Core -import Cardano.Ledger.Keys ( - KeyHash, - KeyRole (..), - coerceKeyRole, - ) -import Cardano.Ledger.Plutus.Data (Data, Datum (..), dataToBinaryData, hashData) -import Cardano.Ledger.SafeHash (SafeHash, hashAnnotated) -import Cardano.Ledger.Shelley.API ( - Addr (..), - Credential (..), - PoolParams (..), - RewardAccount (..), - ShelleyDelegCert (..), - StakeReference (..), - Withdrawals (..), - ) -import Cardano.Ledger.Shelley.LedgerState (RewardAccounts) -import qualified Cardano.Ledger.Shelley.Scripts as Shelley (MultiSig (..)) -import Cardano.Ledger.Shelley.TxCert ( - ShelleyTxCert (..), - pattern DelegStakeTxCert, - pattern RegTxCert, - pattern UnRegTxCert, - ) -import Cardano.Ledger.Slot (EpochNo (EpochNo)) -import Cardano.Ledger.TxIn (TxId (..), TxIn (..)) -import Cardano.Ledger.UTxO (EraUTxO (..), UTxO (..)) -import Cardano.Ledger.Val -import Cardano.Slotting.Slot (SlotNo (..)) -import Control.Monad (forM, replicateM) -import Control.Monad.Trans.Class (MonadTrans (lift)) -import Control.Monad.Trans.RWS.Strict (asks, get, gets, modify) -import Control.State.Transition.Extended hiding (Assertion) -import Data.Bifunctor (first) -import qualified Data.Foldable as F -import Data.Functor ((<&>)) -import qualified Data.List as List -import Data.List.NonEmpty (NonEmpty) -import Data.Map (Map) -import qualified Data.Map.Strict as Map -import Data.Maybe (catMaybes) -import Data.Maybe.Strict (StrictMaybe (..)) -import Data.Monoid (All (..)) -import Data.Ratio ((%)) -import Data.Set (Set) -import qualified Data.Set as Set -import Data.Word (Word16) -import GHC.Stack -import Lens.Micro ((^.)) -import Lens.Micro.Extras (view) -import Test.Cardano.Ledger.Alonzo.Serialisation.Generators () -import Test.Cardano.Ledger.Babbage.Serialisation.Generators () -import Test.Cardano.Ledger.Core.KeyPair (mkWitnessVKey) -import Test.Cardano.Ledger.Generic.Fields hiding (Mint) -import qualified Test.Cardano.Ledger.Generic.Fields as Generic (TxBodyField (Mint)) -import Test.Cardano.Ledger.Generic.Functions -import Test.Cardano.Ledger.Generic.GenState ( - GenEnv (..), - GenRS, - GenState (..), - PlutusPurposeTag (..), - elementsT, - frequencyT, - genCredential, - genDatumWithHash, - genFreshRegCred, - genKeyHash, - genNewPool, - genPool, - genPositiveVal, - genRetirementHash, - genRewards, - genScript, - genValidityInterval, - getCertificateMax, - getOldUtxoPercent, - getRefInputsMax, - getSpendInputsMax, - getUtxoChoicesMax, - getUtxoElem, - getUtxoTest, - mkRedeemers, - mkRedeemersFromTags, - modifyGenStateInitialRewards, - modifyGenStateInitialUtxo, - modifyModelCount, - modifyModelIndex, - modifyModelMutFee, - modifyModelUTxO, - ) -import Test.Cardano.Ledger.Generic.ModelState ( - MUtxo, - ModelNewEpochState (..), - UtxoEntry, - ) -import Test.Cardano.Ledger.Generic.PrettyCore (PrettyA (..), ppRecord) -import Test.Cardano.Ledger.Generic.Proof hiding (lift) -import Test.Cardano.Ledger.Generic.Updaters hiding (first) -import Test.Cardano.Ledger.Shelley.Generator.Core (genNatural) -import Test.Cardano.Ledger.Shelley.Serialisation.EraIndepGenerators () -import Test.Cardano.Ledger.Shelley.Utils (epochFromSlotNo, runShelleyBase) -import Test.QuickCheck - --- =================================================== --- Assembing lists of Fields in to (XX era) - --- | This uses merging semantics, it expects duplicate fields, and merges them together -assembleWits :: Era era => Proof era -> [WitnessesField era] -> TxWits era -assembleWits era = List.foldl' (updateWitnesses merge era) (initialWitnesses era) - -coreTxOut :: Era era => Proof era -> [TxOutField era] -> TxOut era -coreTxOut era = List.foldl' (updateTxOut era) (initialTxOut era) - -coreTxBody :: EraTxBody era => Proof era -> [TxBodyField era] -> TxBody era -coreTxBody era = List.foldl' (updateTxBody era) (initialTxBody era) - -overrideTxBody :: EraTxBody era => Proof era -> TxBody era -> [TxBodyField era] -> TxBody era -overrideTxBody era = List.foldl' (updateTxBody era) - -coreTx :: Proof era -> [TxField era] -> Tx era -coreTx era = List.foldl' (updateTx era) (initialTx era) - --- ==================================================================== - -lookupByKeyM :: - (Ord k, Show k, HasCallStack) => String -> k -> (GenState era -> Map.Map k v) -> GenRS era v -lookupByKeyM name k getMap = do - m <- gets getMap - case Map.lookup k m of - Nothing -> - error $ - "Can't find " ++ name ++ " in the test enviroment: " ++ show k - Just val -> pure val - --- | Generate a list of specified length with randomish `ExUnit`s where the sum --- of all values produced will not exceed the maxTxExUnits. -genExUnits :: Proof era -> Int -> GenRS era [ExUnits] -genExUnits era n = do - GenEnv {gePParams} <- gets gsGenEnv - let ExUnits maxMemUnits maxStepUnits = maxTxExUnits' era gePParams - memUnits <- lift $ genSequenceSum maxMemUnits - stepUnits <- lift $ genSequenceSum maxStepUnits - pure $ zipWith ExUnits memUnits stepUnits - where - un = fromIntegral n - genUpTo maxVal (!totalLeft, !acc) _ - | totalLeft == 0 = pure (0, 0 : acc) - | otherwise = do - x <- min totalLeft . round . (% un) <$> genNatural 0 maxVal - pure (totalLeft - x, x : acc) - genSequenceSum maxVal - | maxVal == 0 = pure $ replicate n 0 - | otherwise = snd <$> F.foldlM (genUpTo maxVal) (maxVal, []) [1 .. n] - -lookupScript :: - forall era. - ScriptHash (EraCrypto era) -> - Maybe PlutusPurposeTag -> - GenRS era (Maybe (Script era)) -lookupScript scriptHash mTag = do - m <- gsScripts <$> get - case Map.lookup scriptHash m of - Just script -> pure $ Just script - Nothing - | Just tag <- mTag -> - Just . snd <$> lookupByKeyM "plutusScript" (scriptHash, tag) gsPlutusScripts - _ -> pure Nothing - --- ===================================== - -genGenericScriptWitness :: - Reflect era => - Proof era -> - Maybe PlutusPurposeTag -> - Script era -> - GenRS era (SafeHash (EraCrypto era) EraIndependentTxBody -> [WitnessesField era]) -genGenericScriptWitness proof mTag script = - case proof of - Shelley -> mkMultiSigWit proof mTag script - Allegra -> mkTimelockWit proof mTag script - Mary -> mkTimelockWit proof mTag script - Alonzo -> case script of - TimelockScript timelock -> mkTimelockWit proof mTag timelock - PlutusScript _ -> pure (const []) - Babbage -> case script of - TimelockScript timelock -> mkTimelockWit proof mTag timelock - PlutusScript _ -> pure (const []) - Conway -> case script of - TimelockScript timelock -> mkTimelockWit proof mTag timelock - PlutusScript _ -> pure (const []) - --- | Generate a TxWits producing function. We handle TxWits come from Keys and Scripts --- Because scripts vary be Era, we need some Era specific code here: genGenericScriptWitness -mkWitVKey :: - forall era kr. - Reflect era => - Proof era -> - Maybe PlutusPurposeTag -> - Credential kr (EraCrypto era) -> - GenRS era (SafeHash (EraCrypto era) EraIndependentTxBody -> [WitnessesField era]) -mkWitVKey _ _mTag (KeyHashObj keyHash) = do - keyPair <- lookupByKeyM "credential" (coerceKeyRole keyHash) gsKeys - pure $ \bodyHash -> [AddrWits' [mkWitnessVKey bodyHash keyPair]] -mkWitVKey era mTag (ScriptHashObj scriptHash) = - lookupScript @era scriptHash mTag >>= \case - Nothing -> - error $ "Impossible: Cannot find script with hash " ++ show scriptHash - Just script -> do - let scriptWit = ScriptWits' [script] - otherWit <- genGenericScriptWitness era mTag script - pure (\hash -> scriptWit : otherWit hash) - --- ======================================================================== --- Generating TxWits, here we are not adding anything to the GenState --- only looking up things already added, and assembling the right pieces to --- make TxWits. - --- | Used in Shelley Eras -mkMultiSigWit :: - forall era. - Reflect era => - Proof era -> - Maybe PlutusPurposeTag -> - Shelley.MultiSig era -> - GenRS era (SafeHash (EraCrypto era) EraIndependentTxBody -> [WitnessesField era]) -mkMultiSigWit era mTag (Shelley.RequireSignature keyHash) = mkWitVKey era mTag (KeyHashObj keyHash) -mkMultiSigWit era mTag (Shelley.RequireAllOf timelocks) = F.fold <$> mapM (mkMultiSigWit era mTag) timelocks -mkMultiSigWit era mTag (Shelley.RequireAnyOf timelocks) - | F.null timelocks = pure (const []) - | otherwise = mkMultiSigWit era mTag =<< lift (elements (F.toList timelocks)) -mkMultiSigWit era mTag (Shelley.RequireMOf m timelocks) = do - ts <- take m <$> lift (shuffle (F.toList timelocks)) - F.fold <$> mapM (mkMultiSigWit era mTag) ts - --- | Timeock scripts are used in Mary and subsequent Eras. -mkTimelockWit :: - forall era. - Reflect era => - Proof era -> - Maybe PlutusPurposeTag -> - Timelock era -> - GenRS era (SafeHash (EraCrypto era) EraIndependentTxBody -> [WitnessesField era]) -mkTimelockWit era mTag = - \case - RequireSignature keyHash -> mkWitVKey era mTag (KeyHashObj keyHash) - RequireAllOf timelocks -> F.fold <$> mapM (mkTimelockWit era mTag) timelocks - RequireAnyOf timelocks - | F.null timelocks -> pure (const []) - | otherwise -> mkTimelockWit era mTag =<< lift (elements (F.toList timelocks)) - RequireMOf m timelocks -> do - ts <- take m <$> lift (shuffle (F.toList timelocks)) - F.fold <$> mapM (mkTimelockWit era mTag) ts - RequireTimeStart _ -> pure (const []) - RequireTimeExpire _ -> pure (const []) - --- | Same as `genCredKeyWit`, but for `TxOuts` -genTxOutKeyWitness :: - forall era. - Reflect era => - Proof era -> - Maybe PlutusPurposeTag -> - TxOut era -> - GenRS era (SafeHash (EraCrypto era) EraIndependentTxBody -> [WitnessesField era]) -genTxOutKeyWitness era mTag txOut = - case txOut ^. addrTxOutL of - AddrBootstrap baddr -> - error $ "Can't authorize bootstrap address: " ++ show baddr - Addr _ payCred _ -> - case getTxOutRefScript reify txOut of - SNothing -> mkWitVKey era mTag payCred - SJust script -> do - f1 <- mkWitVKey era mTag payCred - f2 <- genGenericScriptWitness reify (Just Spending) script - pure (\safehash -> f1 safehash ++ f2 safehash) - -genCredKeyWit :: - forall era k. - Reflect era => - Proof era -> - Maybe PlutusPurposeTag -> - Credential k (EraCrypto era) -> - GenRS era (SafeHash (EraCrypto era) EraIndependentTxBody -> [WitnessesField era]) -genCredKeyWit era mTag cred = mkWitVKey era mTag cred - -makeDatumWitness :: Proof era -> TxOut era -> GenRS era [WitnessesField era] -makeDatumWitness proof txout = case (proof, txout) of - (Babbage, BabbageTxOut _ _ (DatumHash h) _) -> mkDatumWit (SJust h) - (Babbage, BabbageTxOut _ _ (Datum _) _) -> pure [] - (Babbage, BabbageTxOut _ _ NoDatum _) -> pure [] - (Conway, BabbageTxOut _ _ (DatumHash h) _) -> mkDatumWit (SJust h) - (Conway, BabbageTxOut _ _ (Datum _) _) -> pure [] - (Conway, BabbageTxOut _ _ NoDatum _) -> pure [] - (Alonzo, AlonzoTxOut _ _ mDatum) -> mkDatumWit mDatum - _ -> pure [] -- No other era has data witnesses - where - mkDatumWit SNothing = pure [] - mkDatumWit (SJust datumHash) = do - datum <- lookupByKeyM "datum" datumHash gsDatums - pure [DataWits' [datum]] - --- | Does the current Credential point to a PlutusScript? If so return its IsValid and Hash -lookupPlutusScript :: - Credential k (EraCrypto era) -> - PlutusPurposeTag -> - GenRS era (Maybe (IsValid, ScriptHash (EraCrypto era))) -lookupPlutusScript (KeyHashObj _) _ = pure Nothing -lookupPlutusScript (ScriptHashObj scriptHash) tag = - fmap (Map.lookup (scriptHash, tag) . gsPlutusScripts) get <&> \case - Nothing -> Nothing - Just (isValid, _) -> Just (isValid, scriptHash) - --- | Make RdmrWits WitnessesField only if the Credential is for a Plutus Script --- And it is in the spending inputs, not the reference inputs -redeemerWitnessMaker :: - Proof era -> - PlutusPurposeTag -> - [Maybe (GenRS era (Data era), Credential k (EraCrypto era))] -> - GenRS era (IsValid, [ExUnits -> [WitnessesField era]]) -redeemerWitnessMaker proof tag listWithCred = - let creds = - [ (ix, genDat, cred) - | (ix, mCred) <- zip [0 ..] listWithCred - , Just (genDat, cred) <- [mCred] - ] - allValid :: [IsValid] -> IsValid - allValid = IsValid . getAll . foldMap (\(IsValid v) -> All v) - in fmap (first allValid . unzip . catMaybes) $ - forM creds $ \(ix, genDat, cred) -> - lookupPlutusScript cred tag >>= \case - Nothing -> pure Nothing - Just (isValid, _) -> do - datum <- genDat - let mkWit3 exUnits = - [RdmrWits (mkRedeemersFromTags proof [((tag, ix), (datum, exUnits))])] - -- we should not add this if the tx turns out to be in the reference inputs. - -- we accomplish this by not calling this function on referenceInputs - pure $ Just (isValid, mkWit3) - --- =================================================================================== --- Now we start actual generators that create things and enter them into --- the GenState, and sometimes into the Model. - --- | Collaterals can't have scripts, this is where this generator is needed. --- As we generate this we add to the gsKeys field of the GenState. -genNoScriptRecipient :: Reflect era => GenRS era (Addr (EraCrypto era)) -genNoScriptRecipient = do - paymentCred <- KeyHashObj <$> genKeyHash - stakeCred <- StakeRefBase . KeyHashObj <$> genKeyHash - pure (Addr Testnet paymentCred stakeCred) - --- | Sometimes generates new Credentials, and some times reuses old ones -genRecipient :: Reflect era => GenRS era (Addr (EraCrypto era)) -genRecipient = do - paymentCred <- genCredential Spending - stakeCred <- genCredential Certifying - pure (Addr Testnet paymentCred (StakeRefBase stakeCred)) - -genDatum :: Era era => GenRS era (Data era) -genDatum = snd <$> genDatumWithHash - --- | Generate a Babbage Datum witness to use as a redeemer for a Plutus Script. --- TxWits can be a ScriptHash, or an inline Datum -genBabbageDatum :: forall era. Era era => GenRS era (Datum era) -genBabbageDatum = - frequencyT - [ (1, DatumHash . fst <$> genDatumWithHash) - , (4, Datum . dataToBinaryData . snd <$> genDatumWithHash) - ] - -genRefScript :: Reflect era => Proof era -> GenRS era (StrictMaybe (Script era)) -genRefScript proof = do - scripthash <- genScript proof Spending - mscript <- lookupScript scripthash (Just Spending) - case mscript of - Nothing -> pure SNothing - Just script -> pure (SJust script) - --- | Gen the Datum and RefScript fields of a TxOut by Analyzing the payment credential's script -genDataHashField :: Reflect era => Proof era -> Maybe (Script era) -> GenRS era [TxOutField era] -genDataHashField proof maybeCoreScript = - case proof of - Conway -> case maybeCoreScript of - Just (PlutusScript _) -> do - datum <- genBabbageDatum - script <- genRefScript proof - pure [FDatum datum, RefScript script] - _ -> pure [] - Babbage -> case maybeCoreScript of - Just (PlutusScript _) -> do - datum <- genBabbageDatum - script <- genRefScript proof - pure [FDatum datum, RefScript script] - _ -> pure [] - Alonzo -> case maybeCoreScript of - Just (PlutusScript _) -> do - (datahash, _data) <- genDatumWithHash - pure [DHash (SJust datahash)] - _ -> pure [] - _ -> pure [] -- No other Era has any datum in the TxOut - --- | Generate the list of TxOutField that constitute a TxOut -genTxOut :: Reflect era => Proof era -> Value era -> GenRS era [TxOutField era] -genTxOut proof val = do - addr <- genRecipient - cred <- maybe (error "BootstrapAddress encountered") pure $ paymentCredAddr addr - dataHashFields <- - case cred of - KeyHashObj _ -> pure [] - ScriptHashObj scriptHash -> do - maybeCoreScript <- lookupScript scriptHash (Just Spending) - genDataHashField proof maybeCoreScript - pure $ [Address addr, Amount val] ++ dataHashFields - --- ================================================================================ - --- | Generate a TxIn whose TxIx will never clash with an Input created from a TxOut -genTxIn :: forall era. Reflect era => Proof era -> Int -> Gen (TxIn (EraCrypto era)) -genTxIn _proof numChoices = do - txId <- resize 40 arbitrary - -- The TxIx for Inputs created from outputs of a TxBody, will only range from (1..numChoices) - -- TxIx for these arbitrary Inputs range from (n+1..n+100). This makes the TxIx ranges - -- incommensurate. - txIx <- (mkTxIxPartial . fromIntegral) <$> choose (numChoices + 1, numChoices + 100) - pure (TxIn txId txIx) - --- | Generate a non-empty List of fresh TxIn. By fresh we mean TxIn's that --- we have not generated previously. We use the current InitialUtxo to test this. -genFreshTxIn :: forall era. Reflect era => Int -> GenRS era [TxIn (EraCrypto era)] -genFreshTxIn tries | tries <= 0 = error "Could not generate a fresh TxIn after many tries." -genFreshTxIn tries = do - entriesInUse <- gets gsInitialUtxo - -- Max number of choices. So the UTxO will never be larger than this - numChoicesMax <- gets getUtxoChoicesMax - n <- lift $ choose (1, numChoicesMax + 3) - ins <- lift $ vectorOf n (genTxIn @era reify numChoicesMax) - case filter (`Map.notMember` entriesInUse) ins of - [] -> genFreshTxIn (tries - 1) - freshTxIns -> pure (take numChoicesMax freshTxIns) - --- ==================================================================== --- Generating UTxO and associated Inputs (Set (TxIn era)) - --- | Generate a somewhat arbitrary MUtxo. Occasionally add a bit of --- the MUtxo in the Model to the one generated. This way the Tx we generate may --- spend some of the old UTxo. The result has at most 1 entry from the --- old MUtxo, and If it has only one entry, that entry is not from the old MUtxo -genUTxO :: Reflect era => GenRS era (MUtxo era, Maybe (UtxoEntry era)) -genUTxO = do - ins <- genFreshTxIn 100 - pairs <- sequence (map (\x -> (x,) <$> genOut) ins) - percent <- gets getOldUtxoPercent - -- Choose a pair from the oldUTxO - maybepair <- frequencyT [(percent, getUtxoElem), (100 - percent, pure Nothing)] - pure (Map.fromList (maybeCons maybepair pairs), maybepair) - where - -- Note: Never add an old pair unless there are more than 1 new pairs - maybeCons (Just pair) xs | length xs > 1 = pair : xs - maybeCons _ xs = xs - genOut = do - val <- lift genPositiveVal - fields <- genTxOut reify val - pure (coreTxOut reify fields) - --- | Generate both the spending and reference inputs and a key from the spending --- inputs we can use to pay the fee. That key is never from the oldUTxO -genSpendReferenceInputs :: - Map (TxIn (EraCrypto era)) (TxOut era) -> - GenRS - era - ( UtxoEntry era -- The fee key, used to pay the fee. - , Map (TxIn (EraCrypto era)) (TxOut era) - , Map (TxIn (EraCrypto era)) (TxOut era) - , Map (TxIn (EraCrypto era)) (TxOut era) - ) -genSpendReferenceInputs newUTxO = do - let pairs = Map.toList newUTxO - maxInputs <- gets getSpendInputsMax - maxRef <- gets getRefInputsMax - numInputs <- lift $ choose (1, min (Map.size newUTxO) maxInputs) - numRefInputs <- lift $ choose (0, maxRef) - badTest <- getUtxoTest - (feepair@(txin, txout), inputPairs) <- lift $ chooseGood (badTest . fst) numInputs pairs - refInputPairs <- take numRefInputs <$> lift (shuffle pairs) - let inputs = Map.fromList inputPairs - refInputs = Map.fromList refInputPairs - -- The feepair is added to the mMutFee field - modifyModelMutFee (Map.insert txin txout) - let filtered = Map.restrictKeys newUTxO (Set.union (Map.keysSet inputs) (Map.keysSet refInputs)) - pure (feepair, inputs, refInputs, filtered) - --- | The invariant is: --- --- * 'xs' is a non empty list. --- * 'xs' has at most one 'bad' element --- * if 'xs' has length 1, then the element is guaranteed to be good. --- * 'n' is a positive `Int`, ranging between (1 .. length xs). --- Return a pair (good,ys) where --- > (bad good)==False, --- > (good `elem` ys), --- > (length ys) == n, and --- > all (`elem` xs) ys. --- --- This is used to generate the spending inputs, which always contain on --- Input we can use to pay the fee, that does not come from the oldUTxO. -chooseGood :: (a -> Bool) -> Int -> [a] -> Gen (a, [a]) -chooseGood bad n xs = do - let (good, others) = - case xs of - [] -> - error $ - "empty list in chooseGood, should never happen. n = " - ++ show n - ++ ", length xs = " - ++ show (length xs) - [x] -> (x, []) - (x : y : more) -> if bad x then (y, x : more) else (x, y : more) - tailx <- take (n - 1) <$> shuffle others - result <- shuffle (good : tailx) - pure (good, result) - --- ================================================== --- Generating Certificates, May add to the Model - -genShelleyDelegCert :: forall era. Reflect era => GenRS era (TxCert era) -genShelleyDelegCert = - frequencyT - [ (75, genShelleyRegCert) - , (25, genShelleyUnRegCert) - , (50, genDelegation) - ] - where - genShelleyRegCert = RegTxCert <$> genFreshRegCred @era Certifying - genShelleyUnRegCert = UnRegTxCert <$> genCredential Certifying - genDelegation = do - rewardAccount <- genFreshRegCred Certifying - (poolId, _) <- genPool - pure $ DelegStakeTxCert rewardAccount poolId - -genTxCertDeleg :: forall era. Reflect era => GenRS era (TxCert era) -genTxCertDeleg = case reify @era of - Shelley -> genShelleyDelegCert - Mary -> genShelleyDelegCert - Allegra -> genShelleyDelegCert - Alonzo -> genShelleyDelegCert - Babbage -> genShelleyDelegCert - Conway -> genShelleyDelegCert - -genTxCert :: forall era. Reflect era => SlotNo -> GenRS era (TxCert era) -genTxCert slot = - elementsT - [ genTxCertDeleg - , frequencyT - [ (75, RegPoolTxCert <$> genFreshPool) - , (25, RetirePoolTxCert <$> genRetirementHash <*> genEpoch) - ] - ] - where - genFreshPool = do - (_kh, pp, _) <- genNewPool - return pp - genEpoch = do - let EpochNo txEpoch = epochFromSlotNo slot - EpochNo curEpoch <- gets $ mEL . gsModel - EpochInterval maxEpoch <- asks $ view ppEMaxL . gePParams - let nextEpoch = 1 + (txEpoch - curEpoch) -- This will be either 1 or 2. It is 2 if the Tx is at the epoch boundary - delta <- lift $ choose (nextEpoch, fromIntegral maxEpoch) - return . EpochNo $ (curEpoch + delta) - --- getShelleyTxCertDelegG :: forall era. Reflect era => TxCert era -> Maybe (ShelleyDelegCert (EraCrypto era)) --- getShelleyTxCertDelegG = case reify @era of --- Shelley -> getShelleyTxCertDeleg --- Mary -> getShelleyTxCertDeleg --- Allegra -> getShelleyTxCertDeleg --- Alonzo -> getShelleyTxCertDeleg --- Babbage -> getShelleyTxCertDeleg --- Conway -> getShelleyTxCertDeleg -- TODO write a generator for Conwayerts - --- mkShelleyTxCertDelegG :: forall era. Reflect era => ShelleyDelegCert (EraCrypto era) -> TxCert era --- mkShelleyTxCertDelegG = case reify @era of --- Shelley -> mkShelleyTxCertDeleg --- Mary -> mkShelleyTxCertDeleg --- Allegra -> mkShelleyTxCertDeleg --- Alonzo -> mkShelleyTxCertDeleg --- Babbage -> mkShelleyTxCertDeleg --- Conway -> mkShelleyTxCertDeleg -- TODO write a generator for Conwayerts - -genTxCerts :: forall era. Reflect era => SlotNo -> GenRS era [TxCert era] -genTxCerts slot = do - let genUniqueScript (!dcs, !ss, !regCreds) _ = do - honest <- gets gsStableDelegators - dc <- genTxCert slot - -- Workaround a misfeature where duplicate plutus scripts in TxCert are ignored - -- so if a duplicate might be generated, we don't do that generation - let insertIfNotPresent dcs' regCreds' mKey mScriptHash - | Just (_, scriptHash) <- mScriptHash = - if (scriptHash, mKey) `Set.member` ss - then (dcs, ss, regCreds) - else (dc : dcs', Set.insert (scriptHash, mKey) ss, regCreds') - | otherwise = (dc : dcs', ss, regCreds') - -- Generate registration and de-registration delegation certificates, - -- while ensuring the proper registered/unregistered state in DState - case dc of - RegPoolTxCert _ -> pure (dc : dcs, ss, regCreds) - RetirePoolTxCert kh _ -> do - -- We need to make sure that the pool is registered before - -- we try to retire it - modelPools <- gets $ mPoolParams . gsModel - case Map.lookup kh modelPools of - Just _ -> pure (dc : dcs, ss, regCreds) - Nothing -> pure (dcs, ss, regCreds) - RegTxCert regCred -> - if regCred `Map.member` regCreds -- Can't register if it is already registered - then pure (dcs, ss, regCreds) - else pure (dc : dcs, ss, Map.insert regCred (Coin 99) regCreds) -- 99 is a NonZero Value - UnRegTxCert deregCred -> - -- We can't make ShelleyUnRegCert certificate if deregCred is not already registered - -- or if the Rewards balance for deregCred is not 0, - -- or if the credential is one of the StableDelegators (which are never de-registered) - case Map.lookup deregCred regCreds of - Nothing -> pure (dcs, ss, regCreds) - -- No credential, skip making certificate - Just (Coin 0) -> - -- Ok to make certificate, rewards balance is 0 - if Set.member deregCred honest - then pure (dcs, ss, regCreds) - else - insertIfNotPresent dcs (Map.delete deregCred regCreds) Nothing - <$> lookupPlutusScript deregCred Certifying - Just (Coin _) -> pure (dcs, ss, regCreds) - DelegStakeTxCert delegCred delegKey -> - let (dcs', regCreds') = - if delegCred `Map.member` regCreds - then (dcs, regCreds) - else -- In order to Delegate, the delegCred must exist in rewards. - -- so if it is not there, we put it there, otherwise we may - -- never generate a valid delegation. - - ( (RegTxCert delegCred) : dcs - , Map.insert delegCred (Coin 99) regCreds - ) - in insertIfNotPresent dcs' regCreds' (Just delegKey) - <$> lookupPlutusScript delegCred Certifying - _ -> pure (dc : dcs, ss, regCreds) - maxcert <- gets getCertificateMax - n <- lift $ choose (0, maxcert) - reward <- gets (mRewards . gsModel) - let initSets :: - ( [TxCert era] - , Set (ScriptHash (EraCrypto era), Maybe (KeyHash 'StakePool (EraCrypto era))) - , Map (Credential 'Staking (EraCrypto era)) Coin - ) - initSets = ([], Set.empty, reward) - (dcs, _, _) <- F.foldlM genUniqueScript initSets [1 :: Int .. n] - pure $ reverse dcs - -spendOnly :: EraTxOut era => TxOut era -> Bool -spendOnly txOut = case txOut ^. addrTxOutL of - Addr _ (ScriptHashObj _) _ -> False - _ -> True - --- | Generate a set of Collateral inputs sufficient to pay the minimum fee ('minCollTotal') computed --- from the fee and the collateralPercentage from the PParams. Return the new UTxO, the inputs, --- and coin of the excess amount included in the inputs, above what is needed to pay the minimum fee. -genCollateralUTxO :: - forall era. - (HasCallStack, Reflect era) => - [Addr (EraCrypto era)] -> - Coin -> - MUtxo era -> - GenRS era (MUtxo era, Map.Map (TxIn (EraCrypto era)) (TxOut era), Coin) -genCollateralUTxO collateralAddresses (Coin fee) utxo = do - GenEnv {gePParams} <- gets gsGenEnv - let collPerc = collateralPercentage' reify gePParams - minCollTotal = Coin (ceiling ((fee * toInteger collPerc) % 100)) - -- Generate a collateral that is neither in UTxO map nor has already been generated - genNewCollateral addr coll um c = do - -- The size of the Gen computation is driven down when we generate scripts, so it can be 0 here - -- that is really bad, because if the happens we get the same TxIn every time, and 'coll' never grows, - -- so this function doesn't terminate. We want many choices of TxIn, so resize just this arbitrary by 30. - entriesInUse <- gets gsInitialUtxo - txIn <- lift (resize 30 (arbitrary :: Gen (TxIn (EraCrypto era)))) - if Map.member txIn utxo || Map.member txIn coll || txIn `Map.member` entriesInUse - then genNewCollateral addr coll um c - else pure (um, Map.insert txIn (coreTxOut reify [Address addr, Amount (inject c)]) coll, c) - -- Either pick a collateral from a map or generate a completely new one - genCollateral addr coll um - | Map.null um = genNewCollateral addr coll um =<< lift genPositiveVal - | otherwise = do - i <- lift $ chooseInt (0, Map.size um - 1) - let (txIn, txOut) = Map.elemAt i um - pure (Map.deleteAt i um, Map.insert txIn txOut coll, txOut ^. coinTxOutL) - -- Recursively either pick existing key spend only outputs or generate new ones that - -- will be later added to the UTxO map - go :: - [Addr (EraCrypto era)] -> - Map (TxIn (EraCrypto era)) (TxOut era) -> - Coin -> - Map (TxIn (EraCrypto era)) (TxOut era) -> - GenRS era (Map (TxIn (EraCrypto era)) (TxOut era), Coin) - go ecs !coll !curCollTotal !um - | curCollTotal >= minCollTotal = pure (coll, curCollTotal <-> minCollTotal) - | [] <- ecs = error "Impossible: supplied less addresses than `maxCollateralInputs`" - | ec : ecs' <- ecs = do - (um', coll', c) <- - if null ecs' - then -- This is the last input, so most of the time, put something (val > 0) - -- extra in it or we will always have a ColReturn with zero in it. - do - excess <- lift genPositiveVal - genNewCollateral ec coll um ((minCollTotal <-> curCollTotal) <+> excess) - else elementsT [genCollateral ec coll Map.empty, genCollateral ec coll um] - go ecs' coll' (curCollTotal <+> c) um' - (collaterals, excessColCoin) <- - go collateralAddresses Map.empty (Coin 0) $ Map.filter spendOnly utxo - pure (Map.union collaterals utxo, collaterals, excessColCoin) - --- | This function is used to generate the Outputs of a TxBody, It is computed by taking the --- Outputs of the range of the (UTxO resticted by the Inputs of the TxBody), --- as input to the function, and then making new Outputs, where the sum of the Coin is the same. --- This way we generate a 'balanced' TxBody (modulo fees, deposits, refunds etc. which are --- handled separately). The idea is to make sum(txOuts) == sum(genRecipientsFrom txouts), the --- sum will be the same, but the size may be different. -genRecipientsFrom :: Reflect era => [TxOut era] -> GenRS era [TxOut era] -genRecipientsFrom txOuts = do - let outCount = length txOuts - approxCount <- lift $ choose (1, outCount) - let extra = outCount - approxCount - avgExtra = ceiling (toInteger extra % toInteger approxCount) - genExtra e - | e <= 0 || avgExtra == 0 = pure 0 - | otherwise = lift $ chooseInt (0, avgExtra) - let goNew _ [] !rs = pure rs - goNew e (tx : txs) !rs = do - leftToAdd <- genExtra e - goExtra (e - leftToAdd) leftToAdd (inject (Coin 0)) tx txs rs - goExtra _ _ s tx [] !rs = genWithChange s tx rs - goExtra e 0 s tx txs !rs = goNew e txs =<< genWithChange s tx rs - goExtra e n !s txOut (tx : txs) !rs = goExtra e (n - 1) (s <+> v) tx txs rs - where - v = txOut ^. valueTxOutL - -- Potentially split 'txout' into two TxOuts. If the two piece path is used - -- one of two TxOuts uses the same 'addr' as 'txout' and holds the 'change' - -- (i.e. difference between the original and the second, non-change, TxOut). - -- In either case whether it adds 1 or 2 TxOuts to 'rs', the coin value of - -- the new TxOut(s), is the same as the coin value of 'txout'. - genWithChange s txout rs = do - let !(!addr, !v, !ds) = txoutFields reify txout - vCoin = unCoin (coin v) - if vCoin == 0 -- If the coin balance is 0, don't add any TxOuts to 'rs' - then pure rs - else do - c <- Coin <$> lift (choose (1, vCoin)) - fields <- genTxOut reify (s <+> inject c) - pure $ - if c < coin v - then - let !change = coreTxOut reify (Address addr : Amount (v <-> inject c) : ds) - in coreTxOut reify fields : change : rs - else coreTxOut reify fields : rs - goNew extra txOuts [] - -getTxCertCredential :: - forall era. Reflect era => TxCert era -> Maybe (Credential 'Staking (EraCrypto era)) -getTxCertCredential = case reify @era of - Shelley -> getShelleyTxCertCredential - Mary -> getShelleyTxCertCredential - Allegra -> getShelleyTxCertCredential - Alonzo -> getShelleyTxCertCredential - Babbage -> getShelleyTxCertCredential - Conway -> getConwayTxCertCredential - -getShelleyTxCertCredential :: ShelleyTxCert era -> Maybe (Credential 'Staking (EraCrypto era)) -getShelleyTxCertCredential = \case - ShelleyTxCertDelegCert d -> - case d of - ShelleyRegCert _rk -> Nothing -- we don't require witnesses for ShelleyRegCert - ShelleyUnRegCert drk -> Just drk - ShelleyDelegCert dk _ -> Just dk - ShelleyTxCertPool pc -> - case pc of - RegPool PoolParams {..} -> Just . coerceKeyRole $ KeyHashObj ppId - RetirePool kh _ -> Just . coerceKeyRole $ KeyHashObj kh - ShelleyTxCertGenesisDeleg _g -> Nothing - ShelleyTxCertMir _m -> Nothing - -getConwayTxCertCredential :: ConwayTxCert era -> Maybe (Credential 'Staking (EraCrypto era)) -getConwayTxCertCredential (ConwayTxCertPool (RegPool PoolParams {..})) = Just . coerceKeyRole $ KeyHashObj ppId -getConwayTxCertCredential (ConwayTxCertPool (RetirePool kh _)) = Just . coerceKeyRole $ KeyHashObj kh -getConwayTxCertCredential (ConwayTxCertDeleg (ConwayRegCert _ _)) = Nothing -getConwayTxCertCredential (ConwayTxCertDeleg (ConwayUnRegCert cred _)) = Just cred -getConwayTxCertCredential (ConwayTxCertDeleg (ConwayDelegCert cred _)) = Just cred -getConwayTxCertCredential (ConwayTxCertDeleg (ConwayRegDelegCert cred _ _)) = Just cred -getConwayTxCertCredential (ConwayTxCertGov _) = Nothing - -genWithdrawals :: - Reflect era => SlotNo -> GenRS era (Withdrawals (EraCrypto era), RewardAccounts (EraCrypto era)) -genWithdrawals slot = - if epochFromSlotNo slot == EpochNo 0 - then do - let networkId = Testnet - newRewards <- genRewards - pure (Withdrawals $ Map.mapKeys (RewardAccount networkId) newRewards, newRewards) - else pure (Withdrawals Map.empty, Map.empty) - -timeToLive :: ValidityInterval -> SlotNo -timeToLive (ValidityInterval _ (SJust n)) = n -timeToLive (ValidityInterval _ SNothing) = SlotNo maxBound - --- ============================================================================ - -minus :: MUtxo era -> Maybe (UtxoEntry era) -> MUtxo era -minus m Nothing = m -minus m (Just (txin, _)) = Map.delete txin m - -genAlonzoTx :: forall era. Reflect era => Proof era -> SlotNo -> GenRS era (UTxO era, Tx era) -genAlonzoTx proof slot = do - (utxo, tx, _fee, _old) <- genAlonzoTxAndInfo proof slot - pure (utxo, tx) - -genAlonzoTxAndInfo :: - forall era. - Reflect era => - Proof era -> - SlotNo -> - GenRS - era - ( UTxO era - , Tx era - , UtxoEntry era -- The fee key - , Maybe (UtxoEntry era) -- from oldUtxO - ) -genAlonzoTxAndInfo proof slot = do - GenEnv {gePParams} <- gets gsGenEnv - validityInterval <- lift $ genValidityInterval slot - modify (\gs -> gs {gsValidityInterval = validityInterval}) - - -- 1. Produce utxos that will be spent - (utxoChoices, maybeoldpair) <- genUTxO - - -- 2. Generate UTxO for spending and reference inputs - -- Note the spending inputs and the reference inputs may overlap. - -- feeKey is one of the inputs from the spending inputs, safe to pay the fee with. - ( feepair@(feeKey, _) -- One of the spending inputs, to be used to pay the fee - , toSpendNoCollateral -- All of the spending inputs - , refInputsUtxo -- All the reference inputs - , utxoNoCollateral -- Union of all the above - ) <- - genSpendReferenceInputs utxoChoices - - -- 3. Check if all Plutus scripts are valid - let toSpendNoCollateralTxOuts :: [TxOut era] - toSpendNoCollateralTxOuts = Map.elems toSpendNoCollateral - -- We use maxBound to ensure the serialized size overestimation - maxCoin = Coin (toInteger (maxBound :: Int)) - -- 4. Generate all recipients and witnesses needed for spending Plutus scripts - recipients <- genRecipientsFrom toSpendNoCollateralTxOuts - - -- mkPaymentWits :: ExUnits -> [WitnessesField era] - (IsValid v1, mkPaymentWits) <- - redeemerWitnessMaker - proof - Spending - [ (\dh cred -> (lookupByKeyM "datum" dh gsDatums, cred)) - <$> mDatumHash - <*> Just credential - | (_, coretxout) <- Map.toAscList toSpendNoCollateral - , let (credentials, mDatumHash) = txoutEvidence proof coretxout - , credential <- credentials - ] - - -- generate Withdrawals before TxCerts, as Rewards are populated in the Model here, - -- and we need to avoid certain TxCerts if they conflict with existing Rewards - (withdrawals@(Withdrawals wdrlMap), newRewards) <- genWithdrawals slot - let withdrawalAmount = F.fold wdrlMap - - rewardsWithdrawalTxOut <- - if withdrawalAmount == Coin 0 - then pure Nothing - else Just . coreTxOut proof <$> genTxOut proof (inject withdrawalAmount) - let wdrlCreds = map (raCredential . fst) $ Map.toAscList wdrlMap - (IsValid v2, mkWithdrawalsWits) <- - redeemerWitnessMaker proof Rewarding $ map (Just . (,) genDatum) wdrlCreds - - dcerts <- genTxCerts slot - let dcertCreds = map getTxCertCredential dcerts - (IsValid v3, mkCertsWits) <- - redeemerWitnessMaker proof Certifying $ map ((,) genDatum <$>) dcertCreds - - let isValid = IsValid (v1 && v2 && v3) - mkWits :: [ExUnits -> [WitnessesField era]] - mkWits = mkPaymentWits ++ mkCertsWits ++ mkWithdrawalsWits - exUnits <- genExUnits proof (length mkWits) - - let redeemerWitsList :: [WitnessesField era] - redeemerWitsList = concat (zipWith ($) mkWits exUnits) - datumWitsList <- concat <$> mapM (makeDatumWitness proof) (Map.elems toSpendNoCollateral) - keyWitsMakers <- - mapM - (genTxOutKeyWitness proof (Just Spending)) - (toSpendNoCollateralTxOuts ++ Map.elems refInputsUtxo) - dcertWitsMakers <- mapM (genCredKeyWit proof (Just Certifying)) $ catMaybes dcertCreds - rwdrsWitsMakers <- mapM (genCredKeyWit proof (Just Rewarding)) wdrlCreds - - -- 5. Estimate inputs that will be used as collateral - maxCollateralCount <- - lift $ chooseInt (1, fromIntegral (maxCollateralInputs' proof gePParams)) - bogusCollateralTxId <- lift (arbitrary :: Gen (TxId (EraCrypto era))) - let bogusCollateralTxIns = - Set.fromList - [ TxIn bogusCollateralTxId (mkTxIxPartial (fromIntegral i)) - | i <- [maxBound, maxBound - 1 .. maxBound - fromIntegral maxCollateralCount - 1] :: [Word16] - ] - collateralAddresses <- replicateM maxCollateralCount genNoScriptRecipient - bogusCollateralKeyWitsMakers <- forM collateralAddresses $ \a -> - genTxOutKeyWitness proof Nothing (coreTxOut proof [Address a, Amount (inject maxCoin)]) - networkId <- lift $ elements [SNothing, SJust Testnet] - - -- 6. Generate bogus collateral fields, and functions for updating them when we know their real values - -- Add a stub for the TotalCol field - bogusTotalCol <- frequencyT [(1, pure SNothing), (9, pure (SJust (Coin 0)))] -- generate a bogus Coin, fill it in later - let updateTotalColl SNothing _ = SNothing - updateTotalColl (SJust (Coin n)) (Coin m) = SJust (Coin (n + m)) - -- If Babbage era, or greater, add a stub for a CollateralReturn TxOut - bogusCollReturn <- - if Some proof >= Some Babbage - then - frequencyT - [ (1, pure SNothing) - , (9, SJust . coreTxOut proof <$> genTxOut proof (inject (Coin 0))) - ] - else pure SNothing - let updateCollReturn SNothing _ = SNothing - updateCollReturn (SJust txout) v = SJust (injectFee proof v txout) - - -- 7. Estimate the fee - let redeemerDatumWits = redeemerWitsList ++ datumWitsList - bogusIntegrityHash = newScriptIntegrityHash proof gePParams mempty (mkRedeemers proof []) mempty - inputSet = Map.keysSet toSpendNoCollateral - outputList = maybe recipients (: recipients) rewardsWithdrawalTxOut - txBodyNoFee = - coreTxBody - proof - [ Inputs inputSet - , Collateral bogusCollateralTxIns - , RefInputs (Map.keysSet refInputsUtxo) - , TotalCol bogusTotalCol - , Outputs' outputList - , CollateralReturn bogusCollReturn - , Certs' dcerts - , Withdrawals' withdrawals - , Txfee maxCoin - , if Some proof >= Some Allegra - then Vldt validityInterval - else TTL (timeToLive validityInterval) - , Update' [] - , ReqSignerHashes' [] - , Generic.Mint mempty - , WppHash bogusIntegrityHash - , AdHash' [] - , Txnetworkid networkId - ] - txBodyNoFeeHash = hashAnnotated txBodyNoFee - witsMakers :: [SafeHash (EraCrypto era) EraIndependentTxBody -> [WitnessesField era]] - witsMakers = keyWitsMakers ++ dcertWitsMakers ++ rwdrsWitsMakers - bogusNeededScripts = scriptWitsNeeded' proof utxoNoCollateral txBodyNoFee - noFeeWits :: [WitnessesField era] - noFeeWits = - onlyNecessaryScripts proof bogusNeededScripts $ - redeemerDatumWits - <> foldMap ($ txBodyNoFeeHash) (witsMakers ++ bogusCollateralKeyWitsMakers) - bogusTxForFeeCalc = - coreTx - proof - [ Body txBodyNoFee - , TxWits (assembleWits proof noFeeWits) - , Valid isValid - , AuxData' [] - ] - fee = getMinFeeTxUtxo gePParams bogusTxForFeeCalc (UTxO refInputsUtxo) - - keyDeposits <- gets (mKeyDeposits . gsModel) - let deposits = case proof of - Shelley -> depositsAndRefunds gePParams dcerts keyDeposits - Mary -> depositsAndRefunds gePParams dcerts keyDeposits - Allegra -> depositsAndRefunds gePParams dcerts keyDeposits - Alonzo -> depositsAndRefunds gePParams dcerts keyDeposits - Babbage -> depositsAndRefunds gePParams dcerts keyDeposits - Conway -> depositsAndRefunds gePParams dcerts keyDeposits - - -- 8. Crank up the amount in one of outputs to account for the fee and deposits. Note - -- this is a hack that is not possible in a real life, but in the end it does produce - -- real life like setup. We use the entry with TxIn feeKey, which we can safely overwrite. - let utxoFeeAdjusted = Map.adjust (injectFee proof (fee <+> deposits)) feeKey utxoNoCollateral - - -- 9. Generate utxos that will be used as collateral - (utxo, collMap, excessColCoin) <- genCollateralUTxO collateralAddresses fee utxoFeeAdjusted - collateralKeyWitsMakers <- - mapM (genTxOutKeyWitness proof Nothing) $ Map.elems collMap - - -- 10. Construct the correct Tx with valid fee and collaterals - let sNeeded = scriptsNeeded' proof utxo txBodyNoFee - langs = Set.toList $ languagesUsed proof bogusTxForFeeCalc (UTxO utxoNoCollateral) sNeeded - mIntegrityHash = - newScriptIntegrityHash - proof - gePParams - langs - (mkTxrdmrs proof redeemerDatumWits) - (mkTxdats redeemerDatumWits) - balance = - case bogusCollReturn of - SNothing -> txInBalance (Map.keysSet collMap) utxo - SJust _ -> txInBalance (Map.keysSet collMap) utxo <-> excessColCoin - txBody = - overrideTxBody - proof - txBodyNoFee - [ Txfee fee - , Collateral (Map.keysSet collMap) - , CollateralReturn (updateCollReturn bogusCollReturn excessColCoin) - , TotalCol (updateTotalColl bogusTotalCol balance) - , WppHash mIntegrityHash - ] - txBodyHash = hashAnnotated txBody - neededScripts = scriptWitsNeeded' proof utxo txBody - wits = - onlyNecessaryScripts proof neededScripts $ - redeemerDatumWits - <> foldMap ($ txBodyHash) (witsMakers ++ collateralKeyWitsMakers) - validTx = - coreTx - proof - [ Body txBody - , TxWits (assembleWits proof wits) - , Valid isValid - , AuxData' [] - ] - count <- gets (mCount . gsModel) - modifyGenStateInitialRewards (`Map.union` newRewards) - modifyGenStateInitialUtxo (`Map.union` minus utxo maybeoldpair) - modifyModelCount (const (count + 1)) - modifyModelIndex (Map.insert count (TxId txBodyHash)) - modifyModelUTxO (const utxo) - - pure (UTxO utxo, validTx, feepair, maybeoldpair) - --- | Keep only Script witnesses that are neccessary in 'era', -onlyNecessaryScripts :: - Proof era -> Set (ScriptHash (EraCrypto era)) -> [WitnessesField era] -> [WitnessesField era] -onlyNecessaryScripts _ _ [] = [] -onlyNecessaryScripts proof hashes (ScriptWits m : xs) = - ScriptWits (Map.restrictKeys m hashes) : onlyNecessaryScripts proof hashes xs -onlyNecessaryScripts proof hashes (x : xs) = x : onlyNecessaryScripts proof hashes xs - --- | Scan though the fields unioning all the RdrmWits fields into one Redeemer map -mkTxrdmrs :: Proof era -> [WitnessesField era] -> Redeemers era -mkTxrdmrs proof fields = mkRedeemers proof $ List.foldl' accum [] fields - where - accum m1 (RdmrWits r2) = m1 ++ Map.toList (unRedeemers r2) - accum m1 _ = m1 - --- | Scan though the fields unioning all the DataWits fields into one TxDat -mkTxdats :: forall era. Era era => [WitnessesField era] -> TxDats era -mkTxdats fields = TxDats (List.foldl' accum Map.empty fields) - where - accum m (DataWits' ds) = List.foldl' accum2 m ds - where - accum2 m2 d = Map.insert (hashData @era d) d m2 - accum m _ = m - --- ======================================================= --- An encapsulation of the Top level types we generate, --- but that has its own Show instance that we can control. - -data Box era = Box (Proof era) (TRC (EraRule "LEDGER" era)) (GenState era) - -instance - ( Era era - , PrettyA (State (EraRule "LEDGER" era)) - , PrettyA (Script era) - , PrettyA (Signal (EraRule "LEDGER" era)) - , Signal (EraRule "LEDGER" era) ~ Tx era - ) => - Show (Box era) - where - show (Box _proof (TRC (_env, _state, _sig)) _gs) = - show $ - ppRecord - "Box" - [] - --- ============================================================================== --- How we take the generated stuff and put it through the STS rule mechanism --- in a way that is Era Agnostic - -applySTSByProof :: - forall era. - Era era => - Proof era -> - RuleContext 'Transition (EraRule "LEDGER" era) -> - Either (NonEmpty (PredicateFailure (EraRule "LEDGER" era))) (State (EraRule "LEDGER" era)) -applySTSByProof Conway trc = runShelleyBase $ applySTS trc -applySTSByProof Babbage trc = runShelleyBase $ applySTS trc -applySTSByProof Alonzo trc = runShelleyBase $ applySTS trc -applySTSByProof Mary trc = runShelleyBase $ applySTS trc -applySTSByProof Allegra trc = runShelleyBase $ applySTS trc -applySTSByProof Shelley trc = runShelleyBase $ applySTS trc diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/Updaters.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/Updaters.hs deleted file mode 100644 index b52dc57d4fd..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Generic/Updaters.hs +++ /dev/null @@ -1,445 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} - -module Test.Cardano.Ledger.Generic.Updaters where - -import Cardano.Crypto.DSIGN.Class () -import Cardano.Ledger.Alonzo.Scripts (emptyCostModels) -import Cardano.Ledger.Alonzo.Tx (AlonzoTx (..), hashScriptIntegrity) -import qualified Cardano.Ledger.Alonzo.Tx as Alonzo -import Cardano.Ledger.Alonzo.TxBody (AlonzoTxOut (..)) -import Cardano.Ledger.Alonzo.TxWits (AlonzoTxWits (..), Redeemers (..), TxDats (..)) -import Cardano.Ledger.Babbage.Core -import Cardano.Ledger.Babbage.TxBody (BabbageTxOut (..)) -import Cardano.Ledger.Conway.Governance (GovProcedures (..)) -import Cardano.Ledger.Conway.PParams ( - ppCommitteeMaxTermLengthL, - ppCommitteeMinSizeL, - ppDRepActivityL, - ppDRepDepositL, - ppDRepVotingThresholdsL, - ppGovActionDepositL, - ppGovActionLifetimeL, - ppPoolVotingThresholdsL, - ) -import Cardano.Ledger.Conway.TxBody (ConwayEraTxBody (..)) -import Cardano.Ledger.Plutus.Data (Datum (..)) -import Cardano.Ledger.Plutus.Language (Language (..)) -import Cardano.Ledger.Shelley.Tx as Shelley ( - ShelleyTx (..), - ) -import Cardano.Ledger.Shelley.TxOut as Shelley (ShelleyTxOut (..)) -import Cardano.Ledger.Shelley.TxWits as Shelley ( - addrWits, - bootWits, - scriptWits, - ) -import qualified Data.List as List -import Data.Map (Map) -import qualified Data.Map.Strict as Map -import Data.Maybe.Strict (StrictMaybe (..)) -import Data.Set (Set) -import qualified Data.Set as Set -import Lens.Micro -import Test.Cardano.Ledger.Generic.Fields -import Test.Cardano.Ledger.Generic.Proof -import Test.Cardano.Ledger.Plutus (zeroTestingCostModels) - --- =========================================================================== --- Upaters and the use of Policy to specify Merge Semantics and use of [t] as inputs. --- When using the Updaters, one will usually consruct the fields by hand. --- So if a Field consists of (Set t), (StrictSeq t), [t], (Maybe t), (StrictMaybe t), or (Map key t) --- we will use a list, and convert to the appropriate type for each Field and Era. --- Several of these: (Map key t), (Maybe t) and (StrictMaybe t) can be problematic --- since they only have a well defined Merge semantics when (SemiGroup t) . --- So we define specialized functions applyMap, applyMaybe and applySMaybe that raise --- an error if a Merge semantics finds more than one copy of the elements being combined. --- Users may choose what merge semantics they want by passing the right Policy --- ============================================================================= - --- ======================================================================= --- A Policy lets you choose to keep the old (first) or the new (override) --- or combine (merge) of two values. We only use this for elements in the --- WitnessesField data type. That is because we assemble witnesses in small --- pieces and we combine the pieces together. Every field in ShelleyTxWits and --- AlonzoTxWits has clear way of being merged. We don't use Policies in the other --- xxxField types because most of those parts cannot be safely combined. --- (The only execeptions are Coin and Value, but they both have Monoid --- instances, where we can easliy use (<>) instead.). - -class Merge t where - first :: t -> t -> t - first x _ = x - override :: t -> t -> t - override _ y = y - merge :: t -> t -> t - -type Policy = (forall t. Merge t => t -> t -> t) - --- We need just these 4 instances to merge components of TxWitnesses - -instance Ord a => Merge (Set a) where - merge = Set.union - -instance Era era => Merge (TxDats era) where - merge (TxDats x) (TxDats y) = TxDats (Map.union x y) - -instance AlonzoEraScript era => Merge (Redeemers era) where - merge (Redeemers x) (Redeemers y) = Redeemers (Map.union x y) - -instance Merge (Map (ScriptHash c) v) where - merge = Map.union - --- ==================================================================== --- Building Era parametric Records --- ==================================================================== - --- Updaters for Tx - -updateTx :: Proof era -> Tx era -> TxField era -> Tx era -updateTx wit@Shelley tx@(ShelleyTx b w d) dt = - case dt of - Body fbody -> ShelleyTx fbody w d - BodyI bfields -> ShelleyTx (newTxBody wit bfields) w d - TxWits fwit -> ShelleyTx b fwit d - WitnessesI wfields -> ShelleyTx b (newWitnesses override wit wfields) d - AuxData faux -> ShelleyTx b w faux - Valid _ -> tx -updateTx wit@Allegra tx@(ShelleyTx b w d) dt = - case dt of - Body fbody -> ShelleyTx fbody w d - BodyI bfields -> ShelleyTx (newTxBody wit bfields) w d - TxWits fwit -> ShelleyTx b fwit d - WitnessesI wfields -> ShelleyTx b (newWitnesses override wit wfields) d - AuxData faux -> ShelleyTx b w faux - Valid _ -> tx -updateTx wit@Mary tx@(ShelleyTx b w d) dt = - case dt of - Body fbody -> ShelleyTx fbody w d - BodyI bfields -> ShelleyTx (newTxBody wit bfields) w d - TxWits fwit -> ShelleyTx b fwit d - WitnessesI wfields -> ShelleyTx b (newWitnesses override wit wfields) d - AuxData faux -> ShelleyTx b w faux - Valid _ -> tx -updateTx wit@Alonzo (Alonzo.AlonzoTx b w iv d) dt = - case dt of - Body fbody -> Alonzo.AlonzoTx fbody w iv d - BodyI bfields -> Alonzo.AlonzoTx (newTxBody wit bfields) w iv d - TxWits fwit -> Alonzo.AlonzoTx b fwit iv d - WitnessesI wfields -> Alonzo.AlonzoTx b (newWitnesses override wit wfields) iv d - AuxData faux -> Alonzo.AlonzoTx b w iv faux - Valid iv' -> Alonzo.AlonzoTx b w iv' d -updateTx wit@Babbage (AlonzoTx b w iv d) dt = - case dt of - Body fbody -> AlonzoTx fbody w iv d - BodyI bfields -> AlonzoTx (newTxBody wit bfields) w iv d - TxWits fwit -> AlonzoTx b fwit iv d - WitnessesI wfields -> AlonzoTx b (newWitnesses override wit wfields) iv d - AuxData faux -> AlonzoTx b w iv faux - Valid iv' -> AlonzoTx b w iv' d -updateTx wit@Conway (AlonzoTx b w iv d) dt = - case dt of - Body fbody -> AlonzoTx fbody w iv d - BodyI bfields -> AlonzoTx (newTxBody wit bfields) w iv d - TxWits fwit -> AlonzoTx b fwit iv d - WitnessesI wfields -> AlonzoTx b (newWitnesses override wit wfields) iv d - AuxData faux -> AlonzoTx b w iv faux - Valid iv' -> AlonzoTx b w iv' d -{-# NOINLINE updateTx #-} - -newTx :: Proof era -> [TxField era] -> Tx era -newTx era = List.foldl' (updateTx era) (initialTx era) - --------------------------------------------------------------------- --- Updaters for TxBody - -updateTxBody :: EraTxBody era => Proof era -> TxBody era -> TxBodyField era -> TxBody era -updateTxBody pf txBody dt = - case pf of - _ | Inputs ins <- dt -> txBody & inputsTxBodyL .~ ins - _ | Outputs outs <- dt -> txBody & outputsTxBodyL .~ outs - _ | Txfee fee <- dt -> txBody & feeTxBodyL .~ fee - _ | AdHash auxDataHash <- dt -> txBody & auxDataHashTxBodyL .~ auxDataHash - Shelley -> case dt of - Certs certs -> txBody & certsTxBodyL .~ certs - Withdrawals' withdrawals -> txBody & withdrawalsTxBodyL .~ withdrawals - TTL ttl -> txBody & ttlTxBodyL .~ ttl - Update update -> txBody & updateTxBodyL .~ update - _ -> txBody - Allegra -> case dt of - Certs certs -> txBody & certsTxBodyL .~ certs - Withdrawals' withdrawals -> txBody & withdrawalsTxBodyL .~ withdrawals - Vldt vldt -> txBody & vldtTxBodyL .~ vldt - Update update -> txBody & updateTxBodyL .~ update - _ -> txBody - Mary -> case dt of - Certs certs -> txBody & certsTxBodyL .~ certs - Withdrawals' withdrawals -> txBody & withdrawalsTxBodyL .~ withdrawals - Vldt vldt -> txBody & vldtTxBodyL .~ vldt - Update update -> txBody & updateTxBodyL .~ update - Mint mint -> txBody & mintTxBodyL .~ mint - _ -> txBody - Alonzo -> case dt of - Certs certs -> txBody & certsTxBodyL .~ certs - Withdrawals' withdrawals -> txBody & withdrawalsTxBodyL .~ withdrawals - Vldt vldt -> txBody & vldtTxBodyL .~ vldt - Update update -> txBody & updateTxBodyL .~ update - Mint mint -> txBody & mintTxBodyL .~ mint - Collateral collateral -> txBody & collateralInputsTxBodyL .~ collateral - ReqSignerHashes reqSignerHashes -> txBody & reqSignerHashesTxBodyL .~ reqSignerHashes - WppHash scriptIntegrityHash -> txBody & scriptIntegrityHashTxBodyL .~ scriptIntegrityHash - Txnetworkid networkId -> txBody & networkIdTxBodyL .~ networkId - _ -> txBody - Babbage -> case dt of - Certs certs -> txBody & certsTxBodyL .~ certs - Withdrawals' withdrawals -> txBody & withdrawalsTxBodyL .~ withdrawals - Vldt vldt -> txBody & vldtTxBodyL .~ vldt - Update update -> txBody & updateTxBodyL .~ update - Mint mint -> txBody & mintTxBodyL .~ mint - Collateral collateral -> txBody & collateralInputsTxBodyL .~ collateral - ReqSignerHashes reqSignerHashes -> txBody & reqSignerHashesTxBodyL .~ reqSignerHashes - WppHash scriptIntegrityHash -> txBody & scriptIntegrityHashTxBodyL .~ scriptIntegrityHash - Txnetworkid networkId -> txBody & networkIdTxBodyL .~ networkId - RefInputs refInputs -> txBody & referenceInputsTxBodyL .~ refInputs - TotalCol totalCol -> txBody & totalCollateralTxBodyL .~ totalCol - CollateralReturn collateralReturn -> txBody & collateralReturnTxBodyL .~ collateralReturn - _ -> txBody - Conway -> case dt of - Certs certs -> txBody & certsTxBodyL .~ certs - Withdrawals' withdrawals -> txBody & withdrawalsTxBodyL .~ withdrawals - Vldt vldt -> txBody & vldtTxBodyL .~ vldt - Mint mint -> txBody & mintTxBodyL .~ mint - Collateral collateral -> txBody & collateralInputsTxBodyL .~ collateral - ReqSignerHashes reqSignerHashes -> txBody & reqSignerHashesTxBodyL .~ reqSignerHashes - WppHash scriptIntegrityHash -> txBody & scriptIntegrityHashTxBodyL .~ scriptIntegrityHash - Txnetworkid networkId -> txBody & networkIdTxBodyL .~ networkId - RefInputs refInputs -> txBody & referenceInputsTxBodyL .~ refInputs - TotalCol totalCol -> txBody & totalCollateralTxBodyL .~ totalCol - CollateralReturn collateralReturn -> txBody & collateralReturnTxBodyL .~ collateralReturn - GovProcs (GovProcedures vp pp) -> txBody & votingProceduresTxBodyL .~ vp & proposalProceduresTxBodyL .~ pp - _ -> txBody -{-# NOINLINE updateTxBody #-} - -newTxBody :: EraTxBody era => Proof era -> [TxBodyField era] -> TxBody era -newTxBody era = List.foldl' (updateTxBody era) (initialTxBody era) - --------------------------------------------------------------------- --- Updaters for TxWits - -updateWitnesses :: forall era. Policy -> Proof era -> TxWits era -> WitnessesField era -> TxWits era -updateWitnesses p Shelley w dw = case dw of - (AddrWits ks) -> w {Shelley.addrWits = p (Shelley.addrWits w) ks} - (BootWits boots) -> w {Shelley.bootWits = p (Shelley.bootWits w) boots} - (ScriptWits ss) -> w {Shelley.scriptWits = p (Shelley.scriptWits w) ss} - _ -> w -updateWitnesses p Allegra w dw = case dw of - (AddrWits ks) -> w {Shelley.addrWits = p (Shelley.addrWits w) ks} - (BootWits boots) -> w {Shelley.bootWits = p (Shelley.bootWits w) boots} - (ScriptWits ss) -> w {Shelley.scriptWits = p (Shelley.scriptWits w) ss} - _ -> w -updateWitnesses p Mary w dw = case dw of - (AddrWits ks) -> w {Shelley.addrWits = p (Shelley.addrWits w) ks} - (BootWits boots) -> w {Shelley.bootWits = p (Shelley.bootWits w) boots} - (ScriptWits ss) -> w {Shelley.scriptWits = p (Shelley.scriptWits w) ss} - _ -> w -updateWitnesses p Alonzo w dw = case dw of - (AddrWits ks) -> w {txwitsVKey = p (txwitsVKey w) ks} - (BootWits boots) -> w {txwitsBoot = p (txwitsBoot w) boots} - (ScriptWits ss) -> w {txscripts = p (txscripts w) ss} - (DataWits ds) -> w {txdats = p (txdats w) ds} - (RdmrWits r) -> w {txrdmrs = p (txrdmrs w) r} -updateWitnesses p Babbage w dw = case dw of - (AddrWits ks) -> w {txwitsVKey = p (txwitsVKey w) ks} - (BootWits boots) -> w {txwitsBoot = p (txwitsBoot w) boots} - (ScriptWits ss) -> w {txscripts = p (txscripts w) ss} - (DataWits ds) -> w {txdats = p (txdats w) ds} - (RdmrWits r) -> w {txrdmrs = p (txrdmrs w) r} -updateWitnesses p Conway w dw = case dw of - (AddrWits ks) -> w {txwitsVKey = p (txwitsVKey w) ks} - (BootWits boots) -> w {txwitsBoot = p (txwitsBoot w) boots} - (ScriptWits ss) -> w {txscripts = p (txscripts w) ss} - (DataWits ds) -> w {txdats = p (txdats w) ds} - (RdmrWits r) -> w {txrdmrs = p (txrdmrs w) r} -{-# NOINLINE updateWitnesses #-} - -newWitnesses :: Era era => Policy -> Proof era -> [WitnessesField era] -> TxWits era -newWitnesses p era = List.foldl' (updateWitnesses p era) (initialWitnesses era) - --------------------------------------------------------------------- --- Updaters for TxOut - -notAddress :: TxOutField era -> Bool -notAddress (Address _) = False -notAddress _ = True - -updateTxOut :: Proof era -> TxOut era -> TxOutField era -> TxOut era -updateTxOut Shelley (out@(ShelleyTxOut a v)) txoutd = case txoutd of - Address addr -> ShelleyTxOut addr v - Amount val -> ShelleyTxOut a val - _ -> out -updateTxOut Allegra (out@(ShelleyTxOut a v)) txoutd = case txoutd of - Address addr -> ShelleyTxOut addr v - Amount val -> ShelleyTxOut a val - _ -> out -updateTxOut Mary (out@(ShelleyTxOut a v)) txoutd = case txoutd of - Address addr -> ShelleyTxOut addr v - Amount val -> ShelleyTxOut a val - _ -> out -updateTxOut Alonzo (out@(AlonzoTxOut a v h)) txoutd = case txoutd of - Address addr -> AlonzoTxOut addr v h - Amount val -> AlonzoTxOut a val h - DHash mdh -> AlonzoTxOut a v mdh - FDatum d -> error ("This feature is only available from Babbage onward " ++ show d) - _ -> out -updateTxOut Babbage (BabbageTxOut a v h refscript) txoutd = case txoutd of - Address addr -> BabbageTxOut addr v h refscript - Amount val -> BabbageTxOut a val h refscript - DHash SNothing -> BabbageTxOut a v NoDatum refscript - DHash (SJust dh) -> BabbageTxOut a v (DatumHash dh) refscript - FDatum d -> BabbageTxOut a v d refscript - RefScript s -> BabbageTxOut a v h s -updateTxOut Conway (BabbageTxOut a v h refscript) txoutd = case txoutd of - Address addr -> BabbageTxOut addr v h refscript - Amount val -> BabbageTxOut a val h refscript - DHash SNothing -> BabbageTxOut a v NoDatum refscript - DHash (SJust dh) -> BabbageTxOut a v (DatumHash dh) refscript - FDatum d -> BabbageTxOut a v d refscript - RefScript s -> BabbageTxOut a v h s -{-# NOINLINE updateTxOut #-} - -newTxOut :: Era era => Proof era -> [TxOutField era] -> TxOut era -newTxOut _ dts | all notAddress dts = error ("A call to newTxOut must have an (Address x) field.") --- This is because we don't have a good story about an initial Address, so the user MUST supply one -newTxOut era dts = List.foldl' (updateTxOut era) (initialTxOut era) dts - --- ===================================================== - --- | updatePParams uses the Override policy exclusively -updatePParams :: EraPParams era => Proof era -> PParams era -> PParamsField era -> PParams era -updatePParams proof pp' ppf = - -- update all of the common fields first - let pp = case ppf of - MinfeeA minFeeA -> pp' & ppMinFeeAL .~ minFeeA - MinfeeB minFeeB -> pp' & ppMinFeeBL .~ minFeeB - MaxBBSize maxBBSize -> pp' & ppMaxBBSizeL .~ maxBBSize - MaxTxSize maxTxSize -> pp' & ppMaxTxSizeL .~ maxTxSize - MaxBHSize maxBHSize -> pp' & ppMaxBHSizeL .~ maxBHSize - KeyDeposit keyDeposit -> pp' & ppKeyDepositL .~ keyDeposit - PoolDeposit poolDeposit -> pp' & ppPoolDepositL .~ poolDeposit - EMax e -> pp' & ppEMaxL .~ e - NOpt nat -> pp' & ppNOptL .~ nat - A0 a0 -> pp' & ppA0L .~ a0 - Rho rho -> pp' & ppRhoL .~ rho - Tau tau -> pp' & ppTauL .~ tau - ProtocolVersion pv -> pp' & ppProtocolVersionL .~ pv - MinPoolCost coin -> pp' & ppMinPoolCostL .~ coin - _ -> pp' - in case proof of - Shelley -> - case ppf of - D d -> pp & ppDL .~ d - ExtraEntropy nonce -> pp & ppExtraEntropyL .~ nonce - MinUTxOValue mu -> pp & ppMinUTxOValueL .~ mu - _ -> pp - Allegra -> - case ppf of - D d -> pp & ppDL .~ d - ExtraEntropy nonce -> pp & ppExtraEntropyL .~ nonce - MinUTxOValue mu -> pp & ppMinUTxOValueL .~ mu - _ -> pp - Mary -> - case ppf of - D d -> pp & ppDL .~ d - ExtraEntropy nonce -> pp & ppExtraEntropyL .~ nonce - MinUTxOValue mu -> pp & ppMinUTxOValueL .~ mu - _ -> pp - Alonzo -> - case ppf of - D d -> pp & ppDL .~ d - ExtraEntropy nonce -> pp & ppExtraEntropyL .~ nonce - CoinPerUTxOWord coinPerWord -> pp & ppCoinsPerUTxOWordL .~ coinPerWord - Costmdls costModels -> pp & ppCostModelsL .~ costModels - Prices prices -> pp & ppPricesL .~ prices - MaxTxExUnits maxTxExUnits -> pp & ppMaxTxExUnitsL .~ maxTxExUnits - MaxBlockExUnits maxBlockExUnits -> pp & ppMaxBlockExUnitsL .~ maxBlockExUnits - MaxValSize maxValSize -> pp & ppMaxValSizeL .~ maxValSize - CollateralPercentage colPerc -> pp & ppCollateralPercentageL .~ colPerc - MaxCollateralInputs maxColInputs -> pp & ppMaxCollateralInputsL .~ maxColInputs - _ -> pp - Babbage -> - case ppf of - CoinPerUTxOByte coinPerByte -> pp & ppCoinsPerUTxOByteL .~ coinPerByte - Costmdls costModels -> pp & ppCostModelsL .~ costModels - Prices prices -> pp & ppPricesL .~ prices - MaxTxExUnits maxTxExUnits -> pp & ppMaxTxExUnitsL .~ maxTxExUnits - MaxBlockExUnits maxBlockExUnits -> pp & ppMaxBlockExUnitsL .~ maxBlockExUnits - MaxValSize maxValSize -> pp & ppMaxValSizeL .~ maxValSize - CollateralPercentage colPerc -> pp & ppCollateralPercentageL .~ colPerc - MaxCollateralInputs maxColInputs -> pp & ppMaxCollateralInputsL .~ maxColInputs - _ -> pp - Conway -> - case ppf of - CoinPerUTxOByte coinPerByte -> pp & ppCoinsPerUTxOByteL .~ coinPerByte - Costmdls costModels -> pp & ppCostModelsL .~ costModels - Prices prices -> pp & ppPricesL .~ prices - MaxTxExUnits maxTxExUnits -> pp & ppMaxTxExUnitsL .~ maxTxExUnits - MaxBlockExUnits maxBlockExUnits -> pp & ppMaxBlockExUnitsL .~ maxBlockExUnits - MaxValSize maxValSize -> pp & ppMaxValSizeL .~ maxValSize - CollateralPercentage colPerc -> pp & ppCollateralPercentageL .~ colPerc - MaxCollateralInputs maxColInputs -> pp & ppMaxCollateralInputsL .~ maxColInputs - GovActionDeposit c -> pp & ppGovActionDepositL .~ c - DRepDeposit c -> pp & ppDRepDepositL .~ c - DRepActivity c -> pp & ppDRepActivityL .~ c - PoolVotingThreshold c -> pp & ppPoolVotingThresholdsL .~ c - DRepVotingThreshold c -> pp & ppDRepVotingThresholdsL .~ c - MinCommitteeSize c -> pp & ppCommitteeMinSizeL .~ c - CommitteeTermLimit c -> pp & ppCommitteeMaxTermLengthL .~ c - GovActionExpiration c -> pp & ppGovActionLifetimeL .~ c - _ -> pp - -newPParams :: EraPParams era => Proof era -> [PParamsField era] -> PParams era -newPParams era = List.foldl' (updatePParams era) emptyPParams - --- ==================================== - --- | This only make sense in the Alonzo era and forward, all other Eras return Nothing -newScriptIntegrityHash :: - Proof era -> - PParams era -> - [Language] -> - Redeemers era -> - TxDats era -> - StrictMaybe (Alonzo.ScriptIntegrityHash (EraCrypto era)) -newScriptIntegrityHash Conway pp ls rds dats = - hashScriptIntegrity (Set.map (Alonzo.getLanguageView pp) (Set.fromList ls)) rds dats -newScriptIntegrityHash Babbage pp ls rds dats = - hashScriptIntegrity (Set.map (Alonzo.getLanguageView pp) (Set.fromList ls)) rds dats -newScriptIntegrityHash Alonzo pp ls rds dats = - hashScriptIntegrity (Set.map (Alonzo.getLanguageView pp) (Set.fromList ls)) rds dats -newScriptIntegrityHash _wit _pp _ls _rds _dats = SNothing - -defaultCostModels :: Proof era -> PParamsField era -defaultCostModels Shelley = Costmdls emptyCostModels -defaultCostModels Allegra = Costmdls emptyCostModels -defaultCostModels Mary = Costmdls emptyCostModels -defaultCostModels Alonzo = Costmdls $ zeroTestingCostModels [PlutusV1] -defaultCostModels Babbage = Costmdls $ zeroTestingCostModels [PlutusV1, PlutusV2] -defaultCostModels Conway = Costmdls $ zeroTestingCostModels [PlutusV1, PlutusV2] - -languages :: Proof era -> [Language] -languages Shelley = [] -languages Allegra = [] -languages Mary = [] -languages Alonzo = [PlutusV1] -languages Babbage = [PlutusV1, PlutusV2] -languages Conway = [PlutusV1, PlutusV2] diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/NoThunks.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/NoThunks.hs deleted file mode 100644 index 46580f2f7db..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/NoThunks.hs +++ /dev/null @@ -1,56 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE RankNTypes #-} - -module Test.Cardano.Ledger.NoThunks ( - test, -) where - -import Control.State.Transition.Extended (STS) -import Data.Default.Class (def) -import Test.Cardano.Ledger.Generic.GenState (GenSize) -import Test.Cardano.Ledger.Generic.MockChain (MOCKCHAIN, noThunksGen) -import Test.Cardano.Ledger.Generic.Proof (Proof (..), Reflect) -import Test.Cardano.Ledger.Generic.Trace (traceProp) -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.QuickCheck (testProperty) - -test :: TestTree -test = - testGroup - "There are no unexpected thunks in MockChainState" - [ f $ Babbage - , f $ Alonzo - , f $ Allegra - , f $ Mary - , f $ Shelley - ] - where - f proof = testThunks proof 100 def - -testThunks :: - forall era. - ( Reflect era - , STS (MOCKCHAIN era) - ) => - Proof era -> - Int -> - GenSize -> - TestTree -testThunks proof numTx gensize = - testProperty (show proof ++ " era. Trace length = " ++ show numTx) $ - traceProp - proof - numTx - gensize - ( \_ !trc -> do - nt <- noThunksGen proof trc - case nt of - Just x -> error $ "Thunks present: " <> show x - Nothing -> return () - ) - --- main :: IO () --- main = defaultMain test diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/STS.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/STS.hs deleted file mode 100644 index ead9a6131f9..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/STS.hs +++ /dev/null @@ -1,304 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeOperators #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.STS where - -import Cardano.Ledger.Api -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.Conway.Core -import Cardano.Ledger.Shelley.Rules hiding (epochNo, slotNo) -import Control.Monad.Reader -import Control.State.Transition.Extended - -import Constrained - -import Test.Cardano.Ledger.Constrained.Conway.Cert -import Test.Cardano.Ledger.Constrained.Conway.Deleg -import Test.Cardano.Ledger.Constrained.Conway.Gov -import Test.Cardano.Ledger.Constrained.Conway.GovCert -import Test.Cardano.Ledger.Constrained.Conway.Instances -import Test.Cardano.Ledger.Constrained.Conway.Ledger -import Test.Cardano.Ledger.Constrained.Conway.PParams -import Test.Cardano.Ledger.Constrained.Conway.Pool -import Test.Cardano.Ledger.Constrained.Conway.Utxo - -import Test.Cardano.Ledger.Generic.PrettyCore -import Test.Cardano.Ledger.Shelley.Utils - -import Test.QuickCheck -import Test.Tasty -import Test.Tasty.QuickCheck - ------------------------------------------------------------------------- --- Properties ------------------------------------------------------------------------- - -type GenShrink a = (Gen a, a -> [a]) - -genShrinkFromSpec :: forall fn a. HasSpec fn a => Spec fn a -> GenShrink a -genShrinkFromSpec spec = (genFromSpec_ @fn spec, shrinkWithSpec @fn spec) - -stsPropertyV2 :: - forall r fn era env st sig fail p. - ( era ~ ConwayEra StandardCrypto - , Environment (EraRule r era) ~ env - , State (EraRule r era) ~ st - , Signal (EraRule r era) ~ sig - , PredicateFailure (EraRule r era) ~ fail - , STS (EraRule r era) - , BaseM (EraRule r era) ~ ReaderT Globals Identity - , PrettyA st - , PrettyA sig - , PrettyA env - , PrettyA fail - , Testable p - , HasSpec fn env - , HasSpec fn st - , HasSpec fn sig - ) => - Spec fn env -> - (env -> Spec fn st) -> - (env -> st -> Spec fn sig) -> - (env -> st -> sig -> st -> p) -> - Property -stsPropertyV2 specEnv specState specSig prop = - uncurry forAllShrinkBlind (genShrinkFromSpec specEnv) $ \env -> - counterexample (show $ ppString "env = " <> prettyA env) $ - uncurry forAllShrinkBlind (genShrinkFromSpec $ specState env) $ \st -> - counterexample (show $ ppString "st = " <> prettyA st) $ - uncurry forAllShrinkBlind (genShrinkFromSpec $ specSig env st) $ \sig -> - counterexample (show $ ppString "sig = " <> prettyA sig) $ - runShelleyBase $ do - res <- applySTS @(EraRule r era) $ TRC (env, st, sig) - pure $ case res of - Left pfailures -> counterexample (show $ prettyA pfailures) $ property False - Right st' -> - counterexample (show $ ppString "st' = " <> prettyA st') $ - conformsToSpec @fn st' (specState env) - .&&. prop env st sig st' - --- STS properties --------------------------------------------------------- - -prop_GOV :: Property -prop_GOV = - stsPropertyV2 @"GOV" @ConwayFn - govEnvSpec - govProposalsSpec - govProceduresSpec - -- TODO: we should probably check more things here - $ \_env _st _sig _st' -> True - --- prop_NEWEPOCH :: Property --- prop_NEWEPOCH = --- stsPropertyV2 @"NEWEPOCH" @ConwayFn --- TrueSpec --- (\_env -> TrueSpec) --- (\_env _st -> TrueSpec) --- $ \_env _st _sig _st' -> True - -prop_EPOCH :: Property -prop_EPOCH = - stsPropertyV2 @"EPOCH" @ConwayFn - TrueSpec - (\_env -> TrueSpec) - (\_env _st -> TrueSpec) - $ \_env _st _sig _st' -> True - -prop_ENACT :: Property -prop_ENACT = - stsPropertyV2 @"ENACT" @ConwayFn - TrueSpec - (\_env -> TrueSpec) - -- TODO: this is a bit suspect, there are preconditions on these signals in the spec so we - -- shouldn't expect this to go through so easily. - (\_env _st -> TrueSpec) - $ \_env _st _sig _st' -> True - -prop_UTXOS :: Property -prop_UTXOS = - stsPropertyV2 @"UTXOS" @ConwayFn - TrueSpec - (\_env -> TrueSpec) - (\_env _st -> TrueSpec) - $ \_env _st _sig _st' -> True - -prop_LEDGER :: Property -prop_LEDGER = - stsPropertyV2 @"LEDGER" @ConwayFn - TrueSpec - (\_env -> TrueSpec) - -- TODO: the `GenDelegs` don't appear to be used (?!) so we just give an - -- empty map here. One could consider generating them instead - ledgerTxSpec - $ \_env _st _sig _st' -> True - --- prop_TICKF :: Property --- prop_TICKF = --- stsPropertyV2 @"TICKF" @ConwayFn --- TrueSpec --- (\_env -> TrueSpec) --- (\_env _st -> TrueSpec) --- $ \_env _st _sig _st' -> True - -prop_RATIFY :: Property -prop_RATIFY = - stsPropertyV2 @"RATIFY" @ConwayFn - TrueSpec - (\_env -> TrueSpec) - (\_env _st -> TrueSpec) - -- TODO: we should probably check more things here - $ \_env _st _sig _st' -> True - --- prop_CERTS :: Property --- prop_CERTS = --- stsPropertyV2 @"CERTS" @ConwayFn --- TrueSpec --- (\_env -> TrueSpec) --- (\_env _st -> TrueSpec) --- -- TODO: we should probably check more things here --- $ \_env _st _sig _st' -> True - -prop_CERT :: Property -prop_CERT = - stsPropertyV2 @"CERT" @ConwayFn - certEnvSpec - (\_env -> certStateSpec) - (\env st -> txCertSpec env st) - -- TODO: we should probably check more things here - $ \_env _st _sig _st' -> True - -prop_DELEG :: Property -prop_DELEG = - stsPropertyV2 @"DELEG" @ConwayFn - pparamsSpec - (\_env -> dStateSpec) - delegCertSpec - $ \_env _st _sig _st' -> True - -prop_POOL :: Property -prop_POOL = - stsPropertyV2 @"POOL" @ConwayFn - poolEnvSpec - (\_env -> pStateSpec) - (\env st -> poolCertSpec env st) - $ \_env _st _sig _st' -> True - -prop_GOVCERT :: Property -prop_GOVCERT = - stsPropertyV2 @"GOVCERT" @ConwayFn - govCertEnvSpec - (\_env -> vStateSpec) - (\env st -> govCertSpec env st) - $ \_env _st _sig _st' -> True - -prop_UTXOW :: Property -prop_UTXOW = - stsPropertyV2 @"UTXOW" @ConwayFn - TrueSpec - (\_env -> TrueSpec) - (\_env _st -> TrueSpec) - $ \_env _st _sig _st' -> True - -prop_UTXO :: Property -prop_UTXO = - stsPropertyV2 @"UTXO" @ConwayFn - utxoEnvSpec - utxoStateSpec - utxoTxSpec - $ \_env _st _sig _st' -> True - --- prop_BBODY :: Property --- prop_BBODY = --- stsPropertyV2 @"BBODY" @ConwayFn --- TrueSpec --- (\_env -> TrueSpec) --- (\_env _st -> TrueSpec) --- $ \_env _st _sig _st' -> True - --- prop_LEDGERS :: Property --- prop_LEDGERS = --- stsPropertyV2 @"LEDGERS" @ConwayFn --- TrueSpec --- (\_env -> TrueSpec) --- (\_env _st -> TrueSpec) --- $ \_env _st _sig _st' -> True - --- prop_RUPD :: Property --- prop_RUPD = --- stsPropertyV2 @"RUPD" @ConwayFn --- TrueSpec --- (\_env -> TrueSpec) --- (\_env _st -> TrueSpec) --- $ \_env _st _sig _st' -> True - --- prop_SNAP :: Property --- prop_SNAP = --- stsPropertyV2 @"SNAP" @ConwayFn --- TrueSpec --- (\_env -> TrueSpec) --- (\_env _st -> TrueSpec) --- $ \_env _st _sig _st' -> True - --- prop_TICK :: Property --- prop_TICK = --- stsPropertyV2 @"TICK" @ConwayFn --- TrueSpec --- (\_env -> TrueSpec) --- (\_env _st -> TrueSpec) --- $ \_env _st _sig _st' -> True - ------------------------------------------------------------------------- --- Test Tree ------------------------------------------------------------------------- - -tests_STS :: TestTree -tests_STS = - testGroup - "STS property tests" - [ govTests - -- , utxoTests - -- TODO: this is probably one of the last things we want to - -- get passing as it depends on being able to generate a complete - -- `EpochState era` - -- , testProperty "prop_EPOCH" prop_EPOCH - -- , testProperty "prop_LEDGER" prop_LEDGER - ] - -govTests :: TestTree -govTests = - testGroup - "GOV tests" - [ testProperty "prop_GOVCERT" prop_GOVCERT - , testProperty "prop_POOL" prop_POOL - , testProperty "prop_DELEG" prop_DELEG - , testProperty "prop_ENACT" prop_ENACT - , testProperty "prop_RATIFY" prop_RATIFY - , testProperty "prop_CERT" prop_CERT - , testProperty "prop_GOV" prop_GOV - ] - -utxoTests :: TestTree -utxoTests = - testGroup - "UTXO* rules" - [ testProperty "prop_UTXO" prop_UTXO - , testProperty "prop_UTXOW" prop_UTXOW - , testProperty "prop_UTXOS" prop_UTXOS - ] - -epoch :: TestTree -epoch = - testGroup - "STS property tests" - [ govTests - , testProperty "prop_EPOCH" prop_EPOCH - ] diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/TestableEra.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/TestableEra.hs deleted file mode 100644 index f8fb0134c43..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/TestableEra.hs +++ /dev/null @@ -1,14 +0,0 @@ -{-# LANGUAGE UndecidableSuperClasses #-} - --- | Defines the requirements on an era to be testable -module Test.Cardano.Ledger.TestableEra where - -import Cardano.Ledger.Shelley.API -import Cardano.Protocol.TPraos.API - -class - ( ApplyBlock era - , ApplyTx era - , GetLedgerView era - ) => - TestableEra era diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Tickf.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Tickf.hs deleted file mode 100644 index ac3492db4b6..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/Tickf.hs +++ /dev/null @@ -1,63 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - --- | Test that modifications to the calculatePoolDistr function --- made when building the Tickf benchmarks behave the same as --- the code that was replaced. -module Test.Cardano.Ledger.Tickf (oldCalculatePoolDistr, calcPoolDistOldEqualsNew) where - -import Cardano.Ledger.Coin (Coin (Coin)) -import Cardano.Ledger.Compactible (fromCompact) -import Cardano.Ledger.Crypto (StandardCrypto) -import Cardano.Ledger.EpochBoundary (SnapShot (..), Stake (..), sumAllStake) -import Cardano.Ledger.Keys (KeyHash, KeyRole (StakePool)) -import Cardano.Ledger.PoolDistr (IndividualPoolStake (..), PoolDistr (..)) -import Cardano.Ledger.PoolParams (PoolParams (ppVrf)) -import Cardano.Ledger.Shelley.Rules (calculatePoolDistr) -import qualified Data.Map.Strict as Map -import Data.Ratio ((%)) -import qualified Data.VMap as VMap -import Test.Cardano.Ledger.Shelley.Arbitrary () -import Test.Cardano.Ledger.Shelley.Serialisation.EraIndepGenerators () -import Test.Tasty -import Test.Tasty.QuickCheck - --- ===================================== - -calcPoolDistOldEqualsNew :: TestTree -calcPoolDistOldEqualsNew = - testGroup - "calculatePoolDistr" - [ testProperty - "old==new" - ( withMaxSuccess - 500 - ( \snap -> - counterexample - "BAD" - (oldCalculatePoolDistr @StandardCrypto (const True) snap === calculatePoolDistr snap) - ) - ) - ] - --- | The original version of calculatePoolDistr -oldCalculatePoolDistr :: forall c. (KeyHash 'StakePool c -> Bool) -> SnapShot c -> PoolDistr c -oldCalculatePoolDistr includeHash (SnapShot stake delegs poolParams) = - let Coin totalc = sumAllStake stake - -- totalc could be zero (in particular when shrinking) - nonZeroTotal = if totalc == 0 then 1 else totalc - sd = - Map.fromListWith (+) $ - [ (d, c % nonZeroTotal) - | (hk, compactCoin) <- VMap.toAscList (unStake stake) - , let Coin c = fromCompact compactCoin - , Just d <- [VMap.lookup hk delegs] - , includeHash d - ] - in PoolDistr $ - Map.intersectionWith - IndividualPoolStake - sd - (VMap.toMap (VMap.map ppVrf poolParams)) diff --git a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/ValueFromList.hs b/libs/cardano-ledger-test/src/Test/Cardano/Ledger/ValueFromList.hs deleted file mode 100644 index 67990f212e7..00000000000 --- a/libs/cardano-ledger-test/src/Test/Cardano/Ledger/ValueFromList.hs +++ /dev/null @@ -1,39 +0,0 @@ -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE FunctionalDependencies #-} - --- | abstract the 'Core.Value` type family into a type class that can be --- interacted with somewhat generically. -module Test.Cardano.Ledger.ValueFromList where - -import Cardano.Ledger.Coin -import Cardano.Ledger.Crypto -import Cardano.Ledger.Mary.Value as Mary ( - AssetName, - MaryValue (..), - MultiAsset (..), - PolicyID (..), - insertMultiAsset, - multiAssetFromList, - ) -import Cardano.Ledger.Val as Val -import Data.Map.Strict as Map - -class Val.Val val => ValueFromList val c | val -> c where - valueFromList :: Integer -> [(PolicyID c, AssetName, Integer)] -> val - - insert :: (Integer -> Integer -> Integer) -> PolicyID c -> AssetName -> Integer -> val -> val - - gettriples :: val -> (Integer, [(PolicyID c, AssetName, Integer)]) - -instance Crypto c => ValueFromList (MaryValue c) c where - valueFromList c triples = MaryValue (Coin c) (Mary.multiAssetFromList triples) - - insert combine pid an new (MaryValue c ma) = MaryValue c $ Mary.insertMultiAsset combine pid an new ma - - gettriples (MaryValue (Coin c) (MultiAsset m1)) = (c, triples) - where - triples = - [ (policyId, aname, amount) - | (policyId, m2) <- Map.toList m1 - , (aname, amount) <- Map.toList m2 - ] diff --git a/libs/cardano-ledger-test/test/Tests.hs b/libs/cardano-ledger-test/test/Tests.hs deleted file mode 100644 index 198e32f47d7..00000000000 --- a/libs/cardano-ledger-test/test/Tests.hs +++ /dev/null @@ -1,67 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE ScopedTypeVariables #-} - -module Main where - -import Data.Default.Class (Default (def)) -import System.Environment (lookupEnv) -import System.IO (hSetEncoding, stdout, utf8) -import qualified Test.Cardano.Ledger.Alonzo.Tools as Tools -import Test.Cardano.Ledger.Constrained.Examples (allExampleTests) -import Test.Cardano.Ledger.Constrained.Preds.Tx (predsTests) -import Test.Cardano.Ledger.Constrained.Spec (allSpecTests) -import Test.Cardano.Ledger.Constrained.Trace.Tests (conwayTrace, conwayTxwithDRepCertsTraceTests) -import qualified Test.Cardano.Ledger.Examples.AlonzoAPI as AlonzoAPI (tests) -import qualified Test.Cardano.Ledger.Examples.AlonzoBBODY as AlonzoBBODY (tests) -import qualified Test.Cardano.Ledger.Examples.AlonzoCollectInputs as AlonzoCollectInputs (tests) -import qualified Test.Cardano.Ledger.Examples.AlonzoInvalidTxUTXOW as AlonzoInvalidTxUTXOW (tests) -import qualified Test.Cardano.Ledger.Examples.AlonzoValidTxUTXOW as AlonzoValidTxUTXOW (tests) -import Test.Cardano.Ledger.Examples.BabbageFeatures (babbageFeatures) -import Test.Cardano.Ledger.Generic.AggPropTests (aggTests, depositTests) -import qualified Test.Cardano.Ledger.Generic.PrettyTest as Pretty -import Test.Cardano.Ledger.Generic.Properties (genericProperties) -import qualified Test.Cardano.Ledger.NoThunks as NoThunks -import qualified Test.Cardano.Ledger.STS as ConstraintSTS -import Test.Cardano.Ledger.Tickf (calcPoolDistOldEqualsNew) -import Test.Tasty (TestTree, defaultMain, testGroup) - -main :: IO () -main = do - hSetEncoding stdout utf8 - nightly <- lookupEnv "NIGHTLY" - defaultMain $ case nightly of - Nothing -> testGroup "cardano-core" defaultTests - Just _ -> testGroup "cardano-core - nightly" nightlyTests - -defaultTests :: [TestTree] -defaultTests = - [ Pretty.prettyTest - , allSpecTests - , allExampleTests - , conwayTrace - , predsTests - , depositTests - , calcPoolDistOldEqualsNew - , Tools.tests - , testGroup - "STS Tests" - [ babbageFeatures - , AlonzoValidTxUTXOW.tests - , AlonzoInvalidTxUTXOW.tests - , AlonzoBBODY.tests - , AlonzoAPI.tests - , AlonzoCollectInputs.tests - ] - , genericProperties def - , aggTests - , ConstraintSTS.tests_STS - , conwayTxwithDRepCertsTraceTests - ] - -nightlyTests :: [TestTree] -nightlyTests = - defaultTests <> [NoThunks.test] diff --git a/libs/cardano-protocol-tpraos/.ghcid b/libs/cardano-protocol-tpraos/.ghcid deleted file mode 100644 index 3235d6f7cf5..00000000000 --- a/libs/cardano-protocol-tpraos/.ghcid +++ /dev/null @@ -1 +0,0 @@ ---command="cabal repl --repl-options='-isrc -fwarn-unused-binds -fwarn-unused-imports -fno-code -fobject-code -g2 -fno-break-on-exception -fno-break-on-error -ferror-spans -j -Wno-unused-packages'" --clear --no-height-limit --reverse-errors --reload=../../ --outputfile=/tmp/cardano-protocol-tpraos-ghcid.txt \ No newline at end of file diff --git a/libs/cardano-protocol-tpraos/CHANGELOG.md b/libs/cardano-protocol-tpraos/CHANGELOG.md deleted file mode 100644 index 58be6b9299f..00000000000 --- a/libs/cardano-protocol-tpraos/CHANGELOG.md +++ /dev/null @@ -1,74 +0,0 @@ -# Version history for `cardano-protocol-tpraos` - -## 1.2.0.1 - -* - -## 1.2.0.0 -* Change `FutureLedgerViewError` and `ChainTransitionError` - to use `NonEmpty (PredicateFailure _)` instead of `[PredicateFailure _]` - -## 1.1.0.0 -* Change the type of `bsize` and `hBbsize` to `Word32` - -## 1.0.3.7 - -* Add a test suite - -## 1.0.3.6 - -* - -## 1.0.3.5 - -* - -## 1.0.3.4 - -* Compatibility patch for `cardano-ledger-shelley-1.5.0.0` - -## 1.0.3.3 - -* - -## 1.0.3.2 - -* Changed upper bound on cardano-ledger-shelley and base - -## 1.0.3.1 - -* upper bounds on cardano-ledger-core and cardano-ledger-shelley - -## 1.0.3.0 - -* lower bound on cardano-crypto-class - -## 1.0.2.0 - -* Add a `testlib` and move `Arbitrary` instances from - `Test.Cardano.Ledger.Shelley.Serialisation.EraIndepGenerators` over. - -## 1.0.1.0 - -* Add `ToCBOR`/`FromCBOR` instaces for `OCert` and `KESPeriod` -* Make fields for `OCertEnv` strict. - -### `testlib` - -* Add a `testlib` and move `Arbitrary` instances from - `Test.Cardano.Ledger.Shelley.Serialisation.EraIndepGenerators` over. -* Create `VRFKeyPair` and `KESKeyPair`. Dtart using them everywhere instead of tuples. -* Add `mkBHeader` -* Move from `cardano-ledger-shelley-test`: `mkOCert`, `mkBHBody`, `mkBlock` -* Move `AllIssuerKeys` from `cardano-ledegr-shelley-test`. Rename its fields: - * `cold` - > `aikCold` - * `hot` - > `aikHot` - * `vrf` - > `aikVrf` - * `hk` - > `aikColdKeyHash` -* Bring back `genBlock` -* Move `genCoherentBlock` from `cardano-ledegr-shelley-test` and change it to accept - `AllIssuerKeys` as an argument. - -## 1.0.0.0 - -* First properly versioned release. diff --git a/libs/cardano-protocol-tpraos/Setup.hs b/libs/cardano-protocol-tpraos/Setup.hs deleted file mode 100644 index e8ef27dbba9..00000000000 --- a/libs/cardano-protocol-tpraos/Setup.hs +++ /dev/null @@ -1,3 +0,0 @@ -import Distribution.Simple - -main = defaultMain diff --git a/libs/cardano-protocol-tpraos/cardano-protocol-tpraos.cabal b/libs/cardano-protocol-tpraos/cardano-protocol-tpraos.cabal deleted file mode 100644 index 8f4e0ee1690..00000000000 --- a/libs/cardano-protocol-tpraos/cardano-protocol-tpraos.cabal +++ /dev/null @@ -1,102 +0,0 @@ -cabal-version: 3.0 -name: cardano-protocol-tpraos -version: 1.2.0.0 -license: Apache-2.0 -maintainer: operations@iohk.io -author: IOHK -bug-reports: https://github.com/intersectmbo/cardano-ledger/issues -synopsis: Cardano Protocol: Transitional Praos - -source-repository head - type: git - location: https://github.com/intersectmbo/cardano-ledger - subdir: libs/cardano-protocol-tpraos - -library - exposed-modules: - Cardano.Protocol.TPraos.API - Cardano.Protocol.TPraos.BHeader - Cardano.Protocol.TPraos.OCert - Cardano.Protocol.TPraos.Rules.OCert - Cardano.Protocol.TPraos.Rules.Overlay - Cardano.Protocol.TPraos.Rules.Prtcl - Cardano.Protocol.TPraos.Rules.Tickn - Cardano.Protocol.TPraos.Rules.Updn - - hs-source-dirs: src - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wpartial-fields - -Wunused-packages - - build-depends: - base >=4.14 && <5, - bytestring, - cardano-crypto-class, - cardano-ledger-allegra >=1.1, - cardano-ledger-alonzo >=1.2, - cardano-ledger-babbage >=1.1, - cardano-ledger-binary >=1.0, - cardano-ledger-conway >=1.1, - cardano-ledger-core >=1.10, - cardano-ledger-mary >=1.1, - cardano-ledger-shelley >=1.9, - cardano-slotting, - containers, - deepseq, - nothunks, - microlens, - mtl, - quiet, - non-integral, - set-algebra, - small-steps >=1.1, - transformers - -library testlib - exposed-modules: - Test.Cardano.Protocol.Crypto.KES - Test.Cardano.Protocol.Crypto.VRF - Test.Cardano.Protocol.Crypto.VRF.Fake - Test.Cardano.Protocol.TPraos.Arbitrary - Test.Cardano.Protocol.TPraos.Create - - visibility: public - hs-source-dirs: testlib - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wpartial-fields - -Wunused-packages - - build-depends: - base, - bytestring, - cardano-protocol-tpraos, - cardano-ledger-binary:{cardano-ledger-binary, testlib}, - cardano-ledger-shelley:testlib, - cardano-ledger-core:{cardano-ledger-core, testlib}, - cardano-crypto-class >=2.1.1, - cardano-strict-containers, - generic-random, - nothunks - -test-suite tests - type: exitcode-stdio-1.0 - main-is: Main.hs - hs-source-dirs: test - other-modules: Test.Cardano.Protocol.Binary.CddlSpec - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wpartial-fields - -Wunused-packages -threaded -rtsopts -with-rtsopts=-N - - build-depends: - base, - bytestring, - cardano-ledger-binary:{cardano-ledger-binary, testlib}, - cardano-ledger-core:{cardano-ledger-core, testlib}, - cardano-ledger-shelley:{cardano-ledger-shelley, testlib} >=1.7.1, - cardano-protocol-tpraos diff --git a/libs/cardano-protocol-tpraos/src/Cardano/Protocol/TPraos/API.hs b/libs/cardano-protocol-tpraos/src/Cardano/Protocol/TPraos/API.hs deleted file mode 100644 index d916a05810c..00000000000 --- a/libs/cardano-protocol-tpraos/src/Cardano/Protocol/TPraos/API.hs +++ /dev/null @@ -1,598 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DefaultSignatures #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE StrictData #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE UndecidableSuperClasses #-} - --- | Integration between the Shelley ledger and its corresponding (Transitional --- Praos) protocol. --- --- In particular, this code supports extracting the components of the ledger --- state needed for protocol execution, both now and in a 2k-slot window. -module Cardano.Protocol.TPraos.API ( - PraosCrypto, - GetLedgerView (..), - LedgerView (..), - mkInitialShelleyLedgerView, - FutureLedgerViewError (..), - -- $chainstate - ChainDepState (..), - ChainTransitionError (..), - tickChainDepState, - updateChainDepState, - reupdateChainDepState, - initialChainDepState, - -- Leader Schedule - checkLeaderValue, - getLeaderSchedule, -) -where - -import qualified Cardano.Crypto.VRF as VRF -import Cardano.Ledger.Allegra (AllegraEra) -import Cardano.Ledger.Alonzo (AlonzoEra) -import Cardano.Ledger.BHeaderView (isOverlaySlot) -import Cardano.Ledger.Babbage (BabbageEra) -import Cardano.Ledger.BaseTypes ( - Globals (..), - Nonce (NeutralNonce), - Seed, - ShelleyBase, - UnitInterval, - epochInfoPure, - ) -import Cardano.Ledger.Binary (DecCBOR, EncCBOR) -import Cardano.Ledger.Binary.Plain (FromCBOR (..), ToCBOR (..), decodeRecordNamed, encodeListLen) -import Cardano.Ledger.Chain (ChainChecksPParams, pparamsToChainChecksPParams) -import Cardano.Ledger.Conway (ConwayEra) -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto (Crypto, StandardCrypto, VRF) -import Cardano.Ledger.Keys ( - DSignable, - GenDelegPair (..), - GenDelegs (..), - KESignable, - KeyHash, - KeyRole (..), - SignKeyVRF, - VRFSignable, - coerceKeyRole, - ) -import Cardano.Ledger.Mary (MaryEra) -import Cardano.Ledger.PoolDistr (PoolDistr (..), individualPoolStake) -import Cardano.Ledger.Shelley (ShelleyEra) -import Cardano.Ledger.Shelley.Core (EraGov) -import Cardano.Ledger.Shelley.LedgerState ( - EpochState (..), - NewEpochState (..), - certDState, - curPParamsEpochStateL, - dsGenDelegs, - lsCertState, - ) -import Cardano.Ledger.Shelley.Translation (FromByronTranslationContext (..)) -import Cardano.Ledger.Slot (SlotNo) -import Cardano.Protocol.TPraos.BHeader ( - BHBody, - BHeader, - bhbody, - bheaderPrev, - checkLeaderValue, - mkSeed, - prevHashToNonce, - seedL, - ) -import Cardano.Protocol.TPraos.OCert (OCertSignable) -import qualified Cardano.Protocol.TPraos.Rules.Prtcl as STS.Prtcl -import Cardano.Protocol.TPraos.Rules.Tickn as STS.Tickn -import Cardano.Slotting.EpochInfo (epochInfoRange) -import Control.Arrow (left, right) -import Control.Monad.Except -import Control.Monad.Trans.Reader (runReader) -import Control.State.Transition.Extended ( - BaseM, - Environment, - STS, - Signal, - State, - TRC (..), - applySTS, - reapplySTS, - ) -import Data.Either (fromRight) -import Data.Functor.Identity (runIdentity) -import Data.List.NonEmpty (NonEmpty) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Set (Set) -import qualified Data.Set as Set -import GHC.Generics (Generic) -import Lens.Micro ((^.)) -import NoThunks.Class (NoThunks (..)) - --- ======================================================= - -class - ( Crypto c - , DSignable c (OCertSignable c) - , KESignable c (BHBody c) - , VRFSignable c Seed - ) => - PraosCrypto c - -instance PraosCrypto StandardCrypto - -class - ( Eq (ChainTransitionError (EraCrypto era)) - , Show (ChainTransitionError (EraCrypto era)) - , Show (LedgerView (EraCrypto era)) - , Show (FutureLedgerViewError era) - , STS (EraRule "TICKF" era) - , BaseM (EraRule "TICKF" era) ~ ShelleyBase - , Environment (EraRule "TICKF" era) ~ () - , State (EraRule "TICKF" era) ~ NewEpochState era - , Signal (EraRule "TICKF" era) ~ SlotNo - , EraGov era - ) => - GetLedgerView era - where - currentLedgerView :: - NewEpochState era -> - LedgerView (EraCrypto era) - default currentLedgerView :: - ProtVerAtMost era 6 => - NewEpochState era -> - LedgerView (EraCrypto era) - currentLedgerView = view - - -- $timetravel - futureLedgerView :: - MonadError (FutureLedgerViewError era) m => - Globals -> - NewEpochState era -> - SlotNo -> - m (LedgerView (EraCrypto era)) - default futureLedgerView :: - ( MonadError (FutureLedgerViewError era) m - , ProtVerAtMost era 6 - ) => - Globals -> - NewEpochState era -> - SlotNo -> - m (LedgerView (EraCrypto era)) - futureLedgerView = futureView - -instance Crypto c => GetLedgerView (ShelleyEra c) - -instance Crypto c => GetLedgerView (AllegraEra c) - -instance Crypto c => GetLedgerView (MaryEra c) - -instance Crypto c => GetLedgerView (AlonzoEra c) - --- Note that although we do not use TPraos in the Babbage era, we include this --- because it makes it simpler to get the ledger view for Praos. -instance Crypto c => GetLedgerView (BabbageEra c) where - currentLedgerView - NewEpochState {nesPd = pd, nesEs = es} = - LedgerView - { lvD = es ^. curPParamsEpochStateL . ppDG - , lvExtraEntropy = error "Extra entropy is not set in the Babbage era" - , lvPoolDistr = pd - , lvGenDelegs = - dsGenDelegs - . certDState - . lsCertState - $ esLState es - , lvChainChecks = pparamsToChainChecksPParams $ es ^. curPParamsEpochStateL - } - - futureLedgerView globals ss slot = - liftEither - . right (currentLedgerView @(BabbageEra c)) - . left FutureLedgerViewError - $ res - where - res = - flip runReader globals - . applySTS @(EraRule "TICKF" (BabbageEra c)) - $ TRC ((), ss, slot) - --- Note that although we do not use TPraos in the Conway era, we include this --- because it makes it simpler to get the ledger view for Praos. -instance Crypto c => GetLedgerView (ConwayEra c) where - currentLedgerView - NewEpochState {nesPd = pd, nesEs = es} = - LedgerView - { lvD = es ^. curPParamsEpochStateL . ppDG - , lvExtraEntropy = error "Extra entropy is not set in the Conway era" - , lvPoolDistr = pd - , lvGenDelegs = - dsGenDelegs - . certDState - . lsCertState - $ esLState es - , lvChainChecks = pparamsToChainChecksPParams $ es ^. curPParamsEpochStateL - } - - futureLedgerView globals ss slot = - liftEither - . right currentLedgerView - . left FutureLedgerViewError - $ res - where - res = - flip runReader globals - . applySTS @(EraRule "TICKF" (ConwayEra c)) - $ TRC ((), ss, slot) - --- | Data required by the Transitional Praos protocol from the Shelley ledger. -data LedgerView c = LedgerView - { lvD :: UnitInterval - , -- Note that this field is not present in Babbage, but we require this view - -- in order to construct the Babbage ledger view. We allow this to be lazy - -- so that we may set it to an error. Note that `LedgerView` is never - -- serialised, so this should not be forced except as a result of a - -- programmer error. - lvExtraEntropy :: ~Nonce - , lvPoolDistr :: PoolDistr c - , lvGenDelegs :: GenDelegs c - , lvChainChecks :: ChainChecksPParams - } - deriving (Eq, Show, Generic) - -instance NoThunks (LedgerView c) - --- | Construct a protocol environment from the ledger view, along with the --- current slot and a marker indicating whether this is the first block in a new --- epoch. -mkPrtclEnv :: - LedgerView c -> - -- | Epoch nonce - Nonce -> - STS.Prtcl.PrtclEnv c -mkPrtclEnv - LedgerView - { lvD - , lvPoolDistr - , lvGenDelegs - } = - STS.Prtcl.PrtclEnv - lvD - lvPoolDistr - lvGenDelegs - -view :: - (ProtVerAtMost era 6, EraGov era) => - NewEpochState era -> - LedgerView (EraCrypto era) -view - NewEpochState - { nesPd = pd - , nesEs = es - } = - let !ee = es ^. curPParamsEpochStateL . ppExtraEntropyL - in LedgerView - { lvD = es ^. curPParamsEpochStateL . ppDG - , lvExtraEntropy = ee - , lvPoolDistr = pd - , lvGenDelegs = - dsGenDelegs - . certDState - . lsCertState - $ esLState es - , lvChainChecks = pparamsToChainChecksPParams $ es ^. curPParamsEpochStateL - } - --- $timetravel --- --- Time Travel (or the anachronistic ledger view) --- --- The ledger needs to expose access to the 'LedgerView' for a window of slots --- around the current tip of the chain. We call this period the stability --- window, and it corresponds to the number of slots needed to "guarantee" the --- presence of k blocks (where k is the security parameter). This functionality --- allows the protocol layer to validate headers without downloading --- corresponding blocks. --- --- The ability to travel backwards in time is obviously always possible by --- keeping a record of past ledger states (or, more conservatively, ledger --- views). We do not therefore deal explicitly with it in this module, though --- see later for discussion on when snapshots should be taken. --- --- In order to achieve forward time travel, we need a few things: --- - Transition rules which process the body of a block should not have any --- effect on the @LedgerView@ during the stability window after they are --- received. This property should be guaranteed by the design of the ledger. --- - The effect of transition rules which process the header of a block should --- be predictable for the stability window. --- --- We make the following claim: --- --- A future ledger view (within the stability window) is equal to the --- application of the TICK rule at the target slot to the curernt ledger state. - -newtype FutureLedgerViewError era - = FutureLedgerViewError (NonEmpty (PredicateFailure (EraRule "TICKF" era))) - -deriving stock instance - Eq (PredicateFailure (EraRule "TICKF" era)) => - Eq (FutureLedgerViewError era) - -deriving stock instance - Show (PredicateFailure (EraRule "TICKF" era)) => - Show (FutureLedgerViewError era) - --- | Anachronistic ledger view --- --- Given a slot within the future stability window from our current slot (the --- slot corresponding to the passed-in 'NewEpochState'), return a 'LedgerView' --- appropriate to that slot. -futureView :: - forall era m. - ( MonadError (FutureLedgerViewError era) m - , STS (EraRule "TICKF" era) - , BaseM (EraRule "TICKF" era) ~ ShelleyBase - , Environment (EraRule "TICKF" era) ~ () - , State (EraRule "TICKF" era) ~ NewEpochState era - , Signal (EraRule "TICKF" era) ~ SlotNo - , ProtVerAtMost era 6 - , EraGov era - ) => - Globals -> - NewEpochState era -> - SlotNo -> - m (LedgerView (EraCrypto era)) -futureView globals ss slot = - liftEither - . right view - . left FutureLedgerViewError - $ res - where - res = - flip runReader globals - . applySTS @(EraRule "TICKF" era) - $ TRC ((), ss, slot) - --- $chainstate --- --- Chain state operations --- --- The chain state is an amalgam of the protocol state and the ticked nonce. - -data ChainDepState c = ChainDepState - { csProtocol :: !(STS.Prtcl.PrtclState c) - , csTickn :: !STS.Tickn.TicknState - , csLabNonce :: !Nonce - -- ^ Nonce constructed from the hash of the last applied block header. - } - deriving (Eq, Show, Generic) - --- | Construct an initial chain state given an initial nonce and a set of --- genesis delegates. -initialChainDepState :: - Nonce -> - Map (KeyHash 'Genesis c) (GenDelegPair c) -> - ChainDepState c -initialChainDepState initNonce genDelegs = - ChainDepState - { csProtocol = - STS.Prtcl.PrtclState - ocertIssueNos - initNonce - initNonce - , csTickn = - STS.Tickn.TicknState - initNonce - NeutralNonce - , csLabNonce = - NeutralNonce - } - where - ocertIssueNos = - Map.fromList - ( fmap - (\(GenDelegPair hk _) -> (coerceKeyRole hk, 0)) - (Map.elems genDelegs) - ) - -instance Crypto c => NoThunks (ChainDepState c) - -instance Crypto c => DecCBOR (ChainDepState c) - -instance Crypto c => FromCBOR (ChainDepState c) where - fromCBOR = - decodeRecordNamed - "ChainDepState" - (const 3) - ( ChainDepState - <$> fromCBOR - <*> fromCBOR - <*> fromCBOR - ) - -instance Crypto c => EncCBOR (ChainDepState c) - -instance Crypto c => ToCBOR (ChainDepState c) where - toCBOR - ChainDepState - { csProtocol - , csTickn - , csLabNonce - } = - mconcat - [ encodeListLen 3 - , toCBOR csProtocol - , toCBOR csTickn - , toCBOR csLabNonce - ] - -newtype ChainTransitionError c - = ChainTransitionError (NonEmpty (PredicateFailure (STS.Prtcl.PRTCL c))) - deriving (Generic) - -instance Crypto c => NoThunks (ChainTransitionError c) - -deriving instance Crypto c => Eq (ChainTransitionError c) - -deriving instance Crypto c => Show (ChainTransitionError c) - --- | Tick the chain state to a new epoch. -tickChainDepState :: - Globals -> - LedgerView c -> - -- | Are we in a new epoch? - Bool -> - ChainDepState c -> - ChainDepState c -tickChainDepState - globals - LedgerView {lvExtraEntropy} - isNewEpoch - cs@ChainDepState {csProtocol, csTickn, csLabNonce} = cs {csTickn = newTickState} - where - STS.Prtcl.PrtclState _ _ candidateNonce = csProtocol - err = error "Panic! tickChainDepState failed." - newTickState = - fromRight err - . flip runReader globals - . applySTS @STS.Tickn.TICKN - $ TRC - ( STS.Tickn.TicknEnv - lvExtraEntropy - candidateNonce - csLabNonce - , csTickn - , isNewEpoch - ) - --- | Update the chain state based upon a new block header. --- --- This also updates the last applied block hash. -updateChainDepState :: - forall c m. - ( PraosCrypto c - , MonadError (ChainTransitionError c) m - ) => - Globals -> - LedgerView c -> - BHeader c -> - ChainDepState c -> - m (ChainDepState c) -updateChainDepState - globals - lv - bh - cs@ChainDepState {csProtocol, csTickn} = - liftEither - . right - ( \newPrtclState -> - cs - { csProtocol = newPrtclState - , csLabNonce = prevHashToNonce (bheaderPrev . bhbody $ bh) - } - ) - . left ChainTransitionError - $ res - where - res = - flip runReader globals - . applySTS @(STS.Prtcl.PRTCL c) - $ TRC - ( mkPrtclEnv lv epochNonce - , csProtocol - , bh - ) - epochNonce = STS.Tickn.ticknStateEpochNonce csTickn - --- | Re-update the chain state based upon a new block header. --- --- This function does no validation of whether the header is internally valid --- or consistent with the chain it is being applied to; the caller must ensure --- that this is valid through having previously applied it. -reupdateChainDepState :: - forall c. - PraosCrypto c => - Globals -> - LedgerView c -> - BHeader c -> - ChainDepState c -> - ChainDepState c -reupdateChainDepState - globals - lv - bh - cs@ChainDepState {csProtocol, csTickn} = - cs - { csProtocol = res - , csLabNonce = prevHashToNonce (bheaderPrev . bhbody $ bh) - } - where - res = - flip runReader globals - . reapplySTS @(STS.Prtcl.PRTCL c) - $ TRC - ( mkPrtclEnv lv epochNonce - , csProtocol - , bh - ) - epochNonce = STS.Tickn.ticknStateEpochNonce csTickn - --- | Get the (private) leader schedule for this epoch. --- --- Given a private VRF key, returns the set of slots in which this node is --- eligible to lead. -getLeaderSchedule :: - ( EraPParams era - , VRF.Signable (VRF (EraCrypto era)) Seed - ) => - Globals -> - NewEpochState era -> - ChainDepState (EraCrypto era) -> - KeyHash 'StakePool (EraCrypto era) -> - SignKeyVRF (EraCrypto era) -> - PParams era -> - Set SlotNo -getLeaderSchedule globals ss cds poolHash key pp = Set.filter isLeader epochSlots - where - isLeader slotNo = - let y = VRF.evalCertified () (mkSeed seedL slotNo epochNonce) key - in not (isOverlaySlot a (pp ^. ppDG) slotNo) - && checkLeaderValue (VRF.certifiedOutput y) stake f - stake = maybe 0 individualPoolStake $ Map.lookup poolHash poolDistr - poolDistr = unPoolDistr $ nesPd ss - STS.Tickn.TicknState epochNonce _ = csTickn cds - currentEpoch = nesEL ss - ei = epochInfoPure globals - f = activeSlotCoeff globals - epochSlots = Set.fromList [a .. b] - (a, b) = runIdentity $ epochInfoRange ei currentEpoch - --- | We construct a 'LedgerView' using the Shelley genesis config in the same --- way as 'translateToShelleyLedgerState'. -mkInitialShelleyLedgerView :: - Crypto c => - FromByronTranslationContext c -> - LedgerView c -mkInitialShelleyLedgerView transCtxt = - let !ee = fbtcProtocolParams transCtxt ^. ppExtraEntropyL - in LedgerView - { lvD = fbtcProtocolParams transCtxt ^. ppDG - , lvExtraEntropy = ee - , lvPoolDistr = PoolDistr Map.empty - , lvGenDelegs = GenDelegs $ fbtcGenDelegs transCtxt - , lvChainChecks = pparamsToChainChecksPParams . fbtcProtocolParams $ transCtxt - } diff --git a/libs/cardano-protocol-tpraos/src/Cardano/Protocol/TPraos/BHeader.hs b/libs/cardano-protocol-tpraos/src/Cardano/Protocol/TPraos/BHeader.hs deleted file mode 100644 index f8aafcf9000..00000000000 --- a/libs/cardano-protocol-tpraos/src/Cardano/Protocol/TPraos/BHeader.hs +++ /dev/null @@ -1,527 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} - -module Cardano.Protocol.TPraos.BHeader ( - HashHeader (..), - PrevHash (..), - BHeader (BHeader), - BHBody (..), - LastAppliedBlock (..), - BoundedNatural (bvValue, bvMaxValue), - assertBoundedNatural, - lastAppliedHash, - issuerIDfromBHBody, - checkLeaderValue, - checkLeaderNatValue, - bhHash, - hashHeaderToNonce, - prevHashToNonce, - bHeaderSize, - bhbody, - hBbsize, - seedEta, - seedL, - mkSeed, - bnonce, - makeHeaderView, -) -where - -import qualified Cardano.Crypto.Hash.Class as Hash -import qualified Cardano.Crypto.KES as KES -import Cardano.Crypto.Util (SignableRepresentation (..)) -import qualified Cardano.Crypto.VRF as VRF -import Cardano.Ledger.BHeaderView (BHeaderView (..)) -import Cardano.Ledger.BaseTypes ( - ActiveSlotCoeff, - FixedPoint, - Nonce (..), - ProtVer (..), - Seed (..), - activeSlotLog, - activeSlotVal, - mkNonceFromNumber, - mkNonceFromOutputVRF, - ) -import Cardano.Ledger.Binary ( - Annotator (..), - Case (..), - DecCBOR (decCBOR), - DecCBORGroup (..), - EncCBOR (..), - EncCBORGroup (..), - TokenType (TypeNull), - annotatorSlice, - decodeNull, - decodeRecordNamed, - encodeListLen, - encodeNull, - encodedSigKESSizeExpr, - encodedVerKeyVRFSizeExpr, - hashEncCBOR, - listLenInt, - peekTokenType, - runByteBuilder, - serialize', - szCases, - withWordSize, - ) -import qualified Cardano.Ledger.Binary.Plain as Plain -import Cardano.Ledger.Crypto (Crypto) -import Cardano.Ledger.Hashes ( - EraIndependentBlockBody, - EraIndependentBlockHeader, - ) -import Cardano.Ledger.Keys ( - CertifiedVRF, - Hash, - KeyHash, - KeyRole (..), - SignedKES, - VKey, - VerKeyVRF, - decodeSignedKES, - decodeVerKeyVRF, - encodeSignedKES, - encodeVerKeyVRF, - hashKey, - ) -import Cardano.Ledger.NonIntegral (CompareResult (..), taylorExpCmp) -import Cardano.Ledger.Slot (BlockNo (..), SlotNo (..)) -import Cardano.Protocol.TPraos.OCert (OCert (..)) -import Cardano.Slotting.Slot (WithOrigin (..)) -import Control.DeepSeq (NFData) -import qualified Data.ByteString as BS -import qualified Data.ByteString.Builder as BS -import qualified Data.ByteString.Builder.Extra as BS -import qualified Data.ByteString.Lazy as BSL -import Data.Ratio ((%)) -import Data.Typeable -import Data.Word (Word32, Word64) -import GHC.Generics (Generic) -import NoThunks.Class (AllowThunksIn (..), NoThunks (..)) -import Numeric.Natural (Natural) - --- | The hash of a Block Header -newtype HashHeader c = HashHeader {unHashHeader :: Hash c EraIndependentBlockHeader} - deriving stock (Show, Eq, Generic, Ord) - deriving newtype (NFData, NoThunks) - -deriving newtype instance Crypto c => EncCBOR (HashHeader c) - --- | The previous hash of a block -data PrevHash c = GenesisHash | BlockHash !(HashHeader c) - deriving (Show, Eq, Generic, Ord) - -instance Crypto c => NoThunks (PrevHash c) - -instance - Crypto c => - EncCBOR (PrevHash c) - where - encCBOR GenesisHash = encodeNull - encCBOR (BlockHash h) = encCBOR h - encodedSizeExpr size _ = - szCases - [ Case "GenesisHash" 1 - , Case "BlockHash" (encodedSizeExpr size p) - ] - where - p = Proxy :: Proxy (HashHeader c) - -instance - Crypto c => - DecCBOR (PrevHash c) - where - decCBOR = do - peekTokenType >>= \case - TypeNull -> do - decodeNull - pure GenesisHash - _ -> BlockHash <$> decCBOR - -deriving newtype instance Crypto c => DecCBOR (HashHeader c) - -data BHBody c = BHBody - { bheaderBlockNo :: !BlockNo - -- ^ block number - , bheaderSlotNo :: !SlotNo - -- ^ block slot - , bheaderPrev :: !(PrevHash c) - -- ^ Hash of the previous block header - , bheaderVk :: !(VKey 'BlockIssuer c) - -- ^ verification key of block issuer - , bheaderVrfVk :: !(VerKeyVRF c) - -- ^ VRF verification key for block issuer - , bheaderEta :: !(CertifiedVRF c Nonce) - -- ^ block nonce - , bheaderL :: !(CertifiedVRF c Natural) - -- ^ leader election value - , bsize :: !Word32 - -- ^ Size of the block body - , bhash :: !(Hash c EraIndependentBlockBody) - -- ^ Hash of block body - , bheaderOCert :: !(OCert c) - -- ^ operational certificate - , bprotver :: !ProtVer - -- ^ protocol version - } - deriving (Generic) - -deriving instance Crypto c => Show (BHBody c) - -deriving instance Crypto c => Eq (BHBody c) - -instance - Crypto c => - SignableRepresentation (BHBody c) - where - getSignableRepresentation bh = serialize' (pvMajor (bprotver bh)) bh - -instance - Crypto c => - NoThunks (BHBody c) - -instance - Crypto c => - EncCBOR (BHBody c) - where - encCBOR bhBody = - encodeListLen (9 + listLen oc + listLen pv) - <> encCBOR (bheaderBlockNo bhBody) - <> encCBOR (bheaderSlotNo bhBody) - <> encCBOR (bheaderPrev bhBody) - <> encCBOR (bheaderVk bhBody) - <> encodeVerKeyVRF (bheaderVrfVk bhBody) - <> encCBOR (bheaderEta bhBody) - <> encCBOR (bheaderL bhBody) - <> encCBOR (bsize bhBody) - <> encCBOR (bhash bhBody) - <> encCBORGroup oc - <> encCBORGroup pv - where - oc = bheaderOCert bhBody - pv = bprotver bhBody - - encodedSizeExpr size proxy = - fromInteger (withWordSize $ 9 + listLenBound oc + listLenBound pv) - + encodedSizeExpr size (bheaderBlockNo <$> proxy) - + encodedSizeExpr size (bheaderSlotNo <$> proxy) - + encodedSizeExpr size (bheaderPrev <$> proxy) - + encodedSizeExpr size (bheaderVk <$> proxy) - + encodedVerKeyVRFSizeExpr (bheaderVrfVk <$> proxy) - + encodedSizeExpr size (bheaderEta <$> proxy) - + encodedSizeExpr size (bheaderL <$> proxy) - + encodedSizeExpr size (toWord64 . bsize <$> proxy) - + encodedSizeExpr size (bhash <$> proxy) - + encodedSizeExpr size (bheaderOCert <$> proxy) - + encodedSizeExpr size (bprotver <$> proxy) - where - oc = bheaderOCert <$> proxy - pv = bprotver <$> proxy - toWord64 :: Word32 -> Word64 - toWord64 = fromIntegral - -instance - Crypto c => - DecCBOR (BHBody c) - where - decCBOR = decodeRecordNamed "BHBody" bhBodySize $ do - bheaderBlockNo <- decCBOR - bheaderSlotNo <- decCBOR - bheaderPrev <- decCBOR - bheaderVk <- decCBOR - bheaderVrfVk <- decodeVerKeyVRF - bheaderEta <- decCBOR - bheaderL <- decCBOR - bsize <- decCBOR - bhash <- decCBOR - bheaderOCert <- decCBORGroup - bprotver <- decCBORGroup - pure $ - BHBody - { bheaderBlockNo - , bheaderSlotNo - , bheaderPrev - , bheaderVk - , bheaderVrfVk - , bheaderEta - , bheaderL - , bsize - , bhash - , bheaderOCert - , bprotver - } - where - bhBodySize body = 9 + listLenInt (bheaderOCert body) + listLenInt (bprotver body) - -data BHeader c = BHeader' - { bHeaderBody' :: !(BHBody c) - , bHeaderSig' :: !(SignedKES c (BHBody c)) - , bHeaderBytes :: BS.ByteString -- Lazy on purpose. Constructed on demand - } - deriving (Generic) - -deriving via - AllowThunksIn '["bHeaderBytes"] (BHeader c) - instance - Crypto c => NoThunks (BHeader c) - -deriving instance Crypto c => Eq (BHeader c) - -deriving instance Crypto c => Show (BHeader c) - -pattern BHeader :: - Crypto c => - BHBody c -> - SignedKES c (BHBody c) -> - BHeader c -pattern BHeader bHeaderBody' bHeaderSig' <- - BHeader' {bHeaderBody', bHeaderSig'} - where - BHeader body sig = - let mkBytes bhBody kESig = - serialize' (pvMajor (bprotver bhBody)) $ - encodeListLen 2 - <> encCBOR bhBody - <> encodeSignedKES kESig - in BHeader' body sig (mkBytes body sig) - -{-# COMPLETE BHeader #-} - -instance Crypto c => Plain.ToCBOR (BHeader c) where - toCBOR (BHeader' _ _ bytes) = Plain.encodePreEncoded bytes - -instance Crypto c => EncCBOR (BHeader c) where - encodedSizeExpr size proxy = - 1 - + encodedSizeExpr size (bHeaderBody' <$> proxy) - + encodedSigKESSizeExpr (KES.getSig . bHeaderSig' <$> proxy) - -instance Crypto c => DecCBOR (Annotator (BHeader c)) where - decCBOR = annotatorSlice $ - decodeRecordNamed "Header" (const 2) $ do - bhb <- decCBOR - sig <- decodeSignedKES - pure $ pure $ BHeader' bhb sig . BSL.toStrict - --- | Hash a given block header -bhHash :: - Crypto c => - BHeader c -> - HashHeader c -bhHash bh = HashHeader . Hash.castHash . hashEncCBOR version $ bh - where - version = pvMajor (bprotver (bHeaderBody' bh)) - --- | HashHeader to Nonce --- What is going on here? --- This is here because the surrounding code is parametrized in the hash algorithm used, --- but the nonce is hard-coded to Blake2b_256. --- We require the nonce to have the right length (the size of a Blake2b_256 hash), so --- if the hash size differs, we pad or remove bytes accordingly. -hashHeaderToNonce :: HashHeader c -> Nonce -hashHeaderToNonce (HashHeader h) = case Hash.hashFromBytes bytes of - Nothing -> Nonce (Hash.castHash (Hash.hashWith id bytes)) - Just hash -> Nonce $! hash - where - bytes = Hash.hashToBytes h - -prevHashToNonce :: - PrevHash c -> - Nonce -prevHashToNonce = \case - GenesisHash -> NeutralNonce -- This case can only happen when starting Shelley from genesis, - -- setting the intial chain state to some epoch e, - -- and having the first block be in epoch e+1. - -- In this edge case there is no need to add any extra - -- entropy via the previous header hash to the next epoch nonce, - -- so using the neutral nonce is appropriate. - BlockHash ph -> hashHeaderToNonce ph - --- | Retrieve the issuer id (the hash of the cold key) from the body of the block header. --- This corresponds to either a genesis/core node or a stake pool. -issuerIDfromBHBody :: Crypto c => BHBody c -> KeyHash 'BlockIssuer c -issuerIDfromBHBody = hashKey . bheaderVk - -bHeaderSize :: forall c. BHeader c -> Int -bHeaderSize = BS.length . bHeaderBytes - -bhbody :: - Crypto c => - BHeader c -> - BHBody c -bhbody (BHeader b _) = b - -hBbsize :: BHBody c -> Word32 -hBbsize = bsize - --- | Natural value with some additional bound. It must always be the base that --- 'bvValue <= bvMaxValue'. The creator is responsible for checking this value. -data BoundedNatural = UnsafeBoundedNatural - { bvMaxValue :: Natural - , bvValue :: Natural - } - --- | Assert that a natural is bounded by a certain value. Throws an error when --- this is not the case. -assertBoundedNatural :: - -- | Maximum bound - Natural -> - -- | Value - Natural -> - BoundedNatural -assertBoundedNatural maxVal val = - if val <= maxVal - then UnsafeBoundedNatural maxVal val - else error $ show val <> " is greater than max value " <> show maxVal - --- | Check that the certified VRF output, when used as a natural, is valid for --- being slot leader. -checkLeaderValue :: - forall v. - VRF.VRFAlgorithm v => - VRF.OutputVRF v -> - Rational -> - ActiveSlotCoeff -> - Bool -checkLeaderValue certVRF σ f = - checkLeaderNatValue (assertBoundedNatural certNatMax (VRF.getOutputVRFNatural certVRF)) σ f - where - certNatMax :: Natural - certNatMax = (2 :: Natural) ^ (8 * VRF.sizeOutputVRF certVRF) - --- | Check that the certified input natural is valid for being slot leader. This --- means we check that --- --- p < 1 - (1 - f)^σ --- --- where p = certNat / certNatMax. --- --- The calculation is done using the following optimization: --- --- let q = 1 - p and c = ln(1 - f) --- --- then p < 1 - (1 - f)^σ --- <=> 1 / (1 - p) < exp(-σ * c) --- <=> 1 / q < exp(-σ * c) --- --- This can be efficiently be computed by `taylorExpCmp` which returns `ABOVE` --- in case the reference value `1 / (1 - p)` is above the exponential function --- at `-σ * c`, `BELOW` if it is below or `MaxReached` if it couldn't --- conclusively compute this within the given iteration bounds. --- --- Note that 1 1 1 certNatMax --- --- = ----- = ---------------------------- = ---------------------- --- q 1 - p 1 - (certNat / certNatMax) (certNatMax - certNat) -checkLeaderNatValue :: - -- | Certified nat value - BoundedNatural -> - -- | Stake proportion - Rational -> - ActiveSlotCoeff -> - Bool -checkLeaderNatValue bn σ f = - if activeSlotVal f == maxBound - then -- If the active slot coefficient is equal to one, - -- then nearly every stake pool can produce a block every slot. - -- In this degenerate case, where ln (1-f) is not defined, - -- we let the VRF leader check always succeed. - -- This is a testing convenience, the active slot coefficient should not - -- bet set above one half otherwise. - True - else case taylorExpCmp 3 recip_q x of - ABOVE _ _ -> False - BELOW _ _ -> True - MaxReached _ -> False - where - c, recip_q, x :: FixedPoint - c = activeSlotLog f - recip_q = fromRational (toInteger certNatMax % toInteger (certNatMax - certNat)) - x = -fromRational σ * c - certNatMax = bvMaxValue bn - certNat = bvValue bn - -seedEta :: Nonce -seedEta = mkNonceFromNumber 0 - -seedL :: Nonce -seedL = mkNonceFromNumber 1 - --- | Construct a seed to use in the VRF computation. -mkSeed :: - -- | Universal constant - Nonce -> - SlotNo -> - -- | Epoch nonce - Nonce -> - Seed -mkSeed ucNonce (SlotNo slot) eNonce = - Seed - . ( case ucNonce of - NeutralNonce -> id - Nonce h -> Hash.xor (Hash.castHash h) - ) - . Hash.castHash - . Hash.hashWith id - . runByteBuilder (8 + 32) - $ BS.word64BE slot - <> ( case eNonce of - NeutralNonce -> mempty - Nonce h -> BS.byteStringCopy (Hash.hashToBytes h) - ) - -data LastAppliedBlock c = LastAppliedBlock - { labBlockNo :: !BlockNo - , labSlotNo :: !SlotNo - , labHash :: !(HashHeader c) - } - deriving (Show, Eq, Generic) - -instance Crypto c => NoThunks (LastAppliedBlock c) - -instance NFData (LastAppliedBlock c) - -instance Crypto c => EncCBOR (LastAppliedBlock c) where - encCBOR (LastAppliedBlock b s h) = - encodeListLen 3 <> encCBOR b <> encCBOR s <> encCBOR h - -instance Crypto c => DecCBOR (LastAppliedBlock c) where - decCBOR = - decodeRecordNamed - "lastAppliedBlock" - (const 3) - ( LastAppliedBlock - <$> decCBOR - <*> decCBOR - <*> decCBOR - ) - -lastAppliedHash :: WithOrigin (LastAppliedBlock c) -> PrevHash c -lastAppliedHash Origin = GenesisHash -lastAppliedHash (At lab) = BlockHash $ labHash lab - --- | Retrieve the new nonce from the block header body. -bnonce :: BHBody c -> Nonce -bnonce = mkNonceFromOutputVRF . VRF.certifiedOutput . bheaderEta - -makeHeaderView :: Crypto c => BHeader c -> BHeaderView c -makeHeaderView bh = - BHeaderView - (hashKey . bheaderVk $ bhb) - (bsize $ bhb) - (bHeaderSize bh) - (bhash bhb) - (bheaderSlotNo bhb) - where - bhb = bHeaderBody' bh diff --git a/libs/cardano-protocol-tpraos/src/Cardano/Protocol/TPraos/OCert.hs b/libs/cardano-protocol-tpraos/src/Cardano/Protocol/TPraos/OCert.hs deleted file mode 100644 index 487ffc62ba7..00000000000 --- a/libs/cardano-protocol-tpraos/src/Cardano/Protocol/TPraos/OCert.hs +++ /dev/null @@ -1,174 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} - -module Cardano.Protocol.TPraos.OCert ( - OCert (..), - OCertEnv (..), - OCertSignable (..), - ocertToSignable, - currentIssueNo, - KESPeriod (..), - slotsPerKESPeriod, - kesPeriod, -) -where - -import qualified Cardano.Crypto.DSIGN as DSIGN -import qualified Cardano.Crypto.KES as KES -import Cardano.Crypto.Util (SignableRepresentation (..)) -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.Binary ( - CBORGroup (..), - DecCBOR (..), - DecCBORGroup (..), - EncCBOR (..), - EncCBORGroup (..), - FromCBOR (..), - ToCBOR (..), - encodedSigDSIGNSizeExpr, - encodedVerKeyKESSizeExpr, - fromPlainDecoder, - fromPlainEncoding, - runByteBuilder, - ) -import qualified Cardano.Ledger.Binary.Plain as Plain -import Cardano.Ledger.Crypto (Crypto, KES) -import Cardano.Ledger.Keys ( - KeyHash, - KeyRole (..), - SignedDSIGN, - VerKeyKES, - coerceKeyRole, - ) -import Control.Monad.Trans.Reader (asks) -import qualified Data.ByteString.Builder as BS -import qualified Data.ByteString.Builder.Extra as BS -import Data.Functor ((<&>)) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Proxy (Proxy (..)) -import Data.Set (Set) -import qualified Data.Set as Set -import Data.Word (Word64) -import GHC.Generics (Generic) -import NoThunks.Class (NoThunks (..)) -import Quiet - -data OCertEnv c = OCertEnv - { ocertEnvStPools :: !(Set (KeyHash 'StakePool c)) - , ocertEnvGenDelegs :: !(Set (KeyHash 'GenesisDelegate c)) - } - deriving (Show, Eq) - -currentIssueNo :: - OCertEnv c -> - Map (KeyHash 'BlockIssuer c) Word64 -> - -- | Pool hash - KeyHash 'BlockIssuer c -> - Maybe Word64 -currentIssueNo (OCertEnv stPools genDelegs) cs hk - | Map.member hk cs = Map.lookup hk cs - | Set.member (coerceKeyRole hk) stPools = Just 0 - | Set.member (coerceKeyRole hk) genDelegs = Just 0 - | otherwise = Nothing - -newtype KESPeriod = KESPeriod {unKESPeriod :: Word} - deriving (Eq, Generic, Ord, NoThunks, DecCBOR, EncCBOR, ToCBOR, FromCBOR) - deriving (Show) via Quiet KESPeriod - -data OCert c = OCert - { ocertVkHot :: !(VerKeyKES c) - -- ^ The operational hot key - , ocertN :: !Word64 - -- ^ counter - , ocertKESPeriod :: !KESPeriod - -- ^ Start of key evolving signature period - , ocertSigma :: !(SignedDSIGN c (OCertSignable c)) - -- ^ Signature of block operational certificate content - } - deriving (Generic) - deriving (EncCBOR) via (CBORGroup (OCert c)) - -deriving instance Crypto c => Eq (OCert c) - -deriving instance Crypto c => Show (OCert c) - -instance Crypto c => NoThunks (OCert c) - --- Serialization of OCerts cannot be versioned, unless it gets parameterized by era. --- Therefore we use plain encoding for defining the versioned one, instead of the oppoit --- approach how it is done for types with versioned serialization - -instance Crypto c => EncCBORGroup (OCert c) where - encCBORGroup = fromPlainEncoding . encodeOCertFields - encodedGroupSizeExpr size proxy = - encodedVerKeyKESSizeExpr (ocertVkHot <$> proxy) - + encodedSizeExpr size (toWord . ocertN <$> proxy) - + encodedSizeExpr size ((\(KESPeriod p) -> p) . ocertKESPeriod <$> proxy) - + encodedSigDSIGNSizeExpr ((\(DSIGN.SignedDSIGN sig) -> sig) . ocertSigma <$> proxy) - where - toWord :: Word64 -> Word - toWord = fromIntegral - - listLen _ = 4 - listLenBound _ = 4 - -instance Crypto c => DecCBORGroup (OCert c) where - decCBORGroup = fromPlainDecoder decodeOCertFields - -instance Crypto c => ToCBOR (OCert c) where - toCBOR ocert = Plain.encodeListLen (listLen ocert) <> encodeOCertFields ocert - -instance Crypto c => FromCBOR (OCert c) where - fromCBOR = - Plain.decodeRecordNamed "OCert" (fromIntegral . listLen) decodeOCertFields - -encodeOCertFields :: Crypto c => OCert c -> Plain.Encoding -encodeOCertFields ocert = - KES.encodeVerKeyKES (ocertVkHot ocert) - <> Plain.toCBOR (ocertN ocert) - <> Plain.toCBOR (ocertKESPeriod ocert) - <> DSIGN.encodeSignedDSIGN (ocertSigma ocert) - -decodeOCertFields :: Crypto c => Plain.Decoder s (OCert c) -decodeOCertFields = - OCert - <$> KES.decodeVerKeyKES - <*> Plain.fromCBOR - <*> Plain.fromCBOR - <*> DSIGN.decodeSignedDSIGN - -kesPeriod :: SlotNo -> ShelleyBase KESPeriod -kesPeriod (SlotNo s) = - asks slotsPerKESPeriod <&> \spkp -> - if spkp == 0 - then error "kesPeriod: slots per KES period was set to zero" - else KESPeriod . fromIntegral $ s `div` spkp - --- | Signable part of an operational certificate -data OCertSignable c - = OCertSignable !(VerKeyKES c) !Word64 !KESPeriod - -instance Crypto c => SignableRepresentation (OCertSignable c) where - getSignableRepresentation (OCertSignable vk counter period) = - runByteBuilder - ( fromIntegral $ - KES.sizeVerKeyKES (Proxy @(KES c)) - + 8 - + 8 - ) - $ BS.byteStringCopy (KES.rawSerialiseVerKeyKES vk) - <> BS.word64BE counter - <> BS.word64BE (fromIntegral $ unKESPeriod period) - --- | Extract the signable part of an operational certificate (for verification) -ocertToSignable :: OCert c -> OCertSignable c -ocertToSignable OCert {ocertVkHot, ocertN, ocertKESPeriod} = - OCertSignable ocertVkHot ocertN ocertKESPeriod diff --git a/libs/cardano-protocol-tpraos/src/Cardano/Protocol/TPraos/Rules/OCert.hs b/libs/cardano-protocol-tpraos/src/Cardano/Protocol/TPraos/Rules/OCert.hs deleted file mode 100644 index a8c284bec46..00000000000 --- a/libs/cardano-protocol-tpraos/src/Cardano/Protocol/TPraos/Rules/OCert.hs +++ /dev/null @@ -1,114 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} - -module Cardano.Protocol.TPraos.Rules.OCert ( - OCERT, - PredicateFailure, - OCertEnv (..), - OcertPredicateFailure (..), -) -where - -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.Crypto -import Cardano.Ledger.Keys -import Cardano.Protocol.TPraos.BHeader -import Cardano.Protocol.TPraos.OCert -import Control.Monad.Trans.Reader (asks) -import Control.SetAlgebra (eval, singleton, (⨃)) -import Control.State.Transition -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Word (Word64) -import GHC.Generics (Generic) -import NoThunks.Class (NoThunks (..)) - -data OCERT c - -data OcertPredicateFailure c - = KESBeforeStartOCERT - !KESPeriod -- OCert Start KES Period - !KESPeriod -- Current KES Period - | KESAfterEndOCERT - !KESPeriod -- Current KES Period - !KESPeriod -- OCert Start KES Period - !Word64 -- Max KES Key Evolutions - | CounterTooSmallOCERT - !Word64 -- last KES counter used - !Word64 -- current KES counter - | InvalidSignatureOCERT - !Word64 -- OCert counter - !KESPeriod -- OCert KES period - | InvalidKesSignatureOCERT - !Word -- current KES Period - !Word -- KES start period - !Word -- expected KES evolutions - !String -- error message given by Consensus Layer - | NoCounterForKeyHashOCERT - !(KeyHash 'BlockIssuer c) -- stake pool key hash - deriving (Show, Eq, Generic) - -instance NoThunks (OcertPredicateFailure c) - -instance - ( Crypto c - , DSignable c (OCertSignable c) - , KESignable c (BHBody c) - ) => - STS (OCERT c) - where - type - State (OCERT c) = - Map (KeyHash 'BlockIssuer c) Word64 - type - Signal (OCERT c) = - BHeader c - type Environment (OCERT c) = OCertEnv c - type BaseM (OCERT c) = ShelleyBase - type PredicateFailure (OCERT c) = OcertPredicateFailure c - - initialRules = [pure Map.empty] - transitionRules = [ocertTransition] - -ocertTransition :: - ( Crypto c - , DSignable c (OCertSignable c) - , KESignable c (BHBody c) - ) => - TransitionRule (OCERT c) -ocertTransition = - judgmentContext >>= \(TRC (env, cs, BHeader bhb sigma)) -> do - let OCert vk_hot n c0@(KESPeriod c0_) tau = bheaderOCert bhb - vkcold = bheaderVk bhb - hk = hashKey vkcold - s = bheaderSlotNo bhb - kp@(KESPeriod kp_) <- liftSTS $ kesPeriod s - - maxKESiterations <- liftSTS $ asks maxKESEvo - - c0 <= kp ?! KESBeforeStartOCERT c0 kp - kp_ - < c0_ - + fromIntegral maxKESiterations - ?! KESAfterEndOCERT kp c0 maxKESiterations - - let t = if kp_ >= c0_ then kp_ - c0_ else 0 -- this is required to prevent an - -- arithmetic underflow, in the - -- case of kp_ < c0_ we get the - -- above `KESBeforeStartOCERT` - -- predicate failure in the - -- transition. - verifySignedDSIGN vkcold (ocertToSignable $ bheaderOCert bhb) tau ?! InvalidSignatureOCERT n c0 - verifySignedKES () vk_hot t bhb sigma ?!: InvalidKesSignatureOCERT kp_ c0_ t - - case currentIssueNo env cs hk of - Nothing -> do - failBecause $ NoCounterForKeyHashOCERT hk - pure cs - Just m -> do - m <= n ?! CounterTooSmallOCERT m n - pure (eval (cs ⨃ singleton hk n)) diff --git a/libs/cardano-protocol-tpraos/src/Cardano/Protocol/TPraos/Rules/Overlay.hs b/libs/cardano-protocol-tpraos/src/Cardano/Protocol/TPraos/Rules/Overlay.hs deleted file mode 100644 index c3e6ebdc8cf..00000000000 --- a/libs/cardano-protocol-tpraos/src/Cardano/Protocol/TPraos/Rules/Overlay.hs +++ /dev/null @@ -1,380 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} - -module Cardano.Protocol.TPraos.Rules.Overlay ( - OVERLAY, - PredicateFailure, - OverlayEnv (..), - OverlayPredicateFailure (..), - OBftSlot (..), - classifyOverlaySlot, - lookupInOverlaySchedule, - overlaySlots, -) -where - -import qualified Cardano.Crypto.VRF as VRF -import Cardano.Ledger.BHeaderView (isOverlaySlot) -import Cardano.Ledger.BaseTypes ( - ActiveSlotCoeff, - BoundedRational (..), - Nonce, - Seed, - ShelleyBase, - UnitInterval, - activeSlotCoeff, - activeSlotVal, - epochInfoPure, - ) -import Cardano.Ledger.Binary ( - DecCBOR (..), - EncCBOR (..), - TokenType (TypeNull), - decodeNull, - encodeNull, - peekTokenType, - ) -import Cardano.Ledger.Crypto -import Cardano.Ledger.Keys ( - DSignable, - GenDelegPair (..), - GenDelegs (..), - Hash, - KESignable, - KeyHash (..), - KeyRole (..), - VerKeyVRF, - coerceKeyRole, - hashKey, - hashVerKeyVRF, - ) -import Cardano.Ledger.PoolDistr ( - IndividualPoolStake (..), - PoolDistr (..), - ) -import Cardano.Ledger.Slot (epochInfoEpoch, epochInfoFirst, (-*)) -import Cardano.Protocol.TPraos.BHeader ( - BHBody (..), - BHeader (BHeader), - checkLeaderValue, - issuerIDfromBHBody, - mkSeed, - seedEta, - seedL, - ) -import Cardano.Protocol.TPraos.OCert (OCertSignable) -import Cardano.Protocol.TPraos.Rules.OCert (OCERT, OCertEnv (..)) -import Cardano.Slotting.Slot -import Control.DeepSeq (NFData) -import Control.Monad (unless) -import Control.Monad.Except (throwError) -import Control.Monad.Trans.Reader (asks) -import Control.SetAlgebra (dom, eval, range) -import Control.State.Transition -import Data.Coerce (coerce) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Set (Set) -import qualified Data.Set as Set -import Data.Word (Word64) -import GHC.Generics (Generic) -import NoThunks.Class (NoThunks (..)) - -data OVERLAY c - -data OverlayEnv c - = OverlayEnv - UnitInterval -- the decentralization paramater @d@ from the protocal parameters - (PoolDistr c) - (GenDelegs c) - Nonce - deriving (Generic) - -instance NoThunks (OverlayEnv c) - -data OverlayPredicateFailure c - = VRFKeyUnknown - !(KeyHash 'StakePool c) -- unknown VRF keyhash (not registered) - | VRFKeyWrongVRFKey - !(KeyHash 'StakePool c) -- KeyHash of block issuer - !(Hash c (VerKeyVRF c)) -- VRF KeyHash registered with stake pool - !(Hash c (VerKeyVRF c)) -- VRF KeyHash from Header - | VRFKeyBadNonce - !Nonce -- Nonce constant to distinguish VRF nonce values - !SlotNo -- Slot used for VRF calculation - !Nonce -- Epoch nonce used for VRF calculation - !(VRF.CertifiedVRF (VRF c) Nonce) -- VRF calculated nonce value - | VRFKeyBadLeaderValue - !Nonce -- Leader constant to distinguish VRF leader values - !SlotNo -- Slot used for VRF calculation - !Nonce -- Epoch nonce used for VRF calculation - !(VRF.CertifiedVRF (VRF c) Nonce) -- VRF calculated leader value - | VRFLeaderValueTooBig - !(VRF.OutputVRF (VRF c)) -- VRF Leader value - !Rational -- stake pool's relative stake - !ActiveSlotCoeff -- Praos active slot coefficient value - | NotActiveSlotOVERLAY - !SlotNo -- Slot which is supposed to be silent - | WrongGenesisColdKeyOVERLAY - !(KeyHash 'BlockIssuer c) -- KeyHash of block issuer - !(KeyHash 'GenesisDelegate c) -- KeyHash genesis delegate keyhash assigned to this slot - | WrongGenesisVRFKeyOVERLAY - !(KeyHash 'BlockIssuer c) -- KeyHash of block issuer - !(Hash c (VerKeyVRF c)) -- VRF KeyHash registered with genesis delegation - !(Hash c (VerKeyVRF c)) -- VRF KeyHash from Header - | UnknownGenesisKeyOVERLAY - !(KeyHash 'Genesis c) -- KeyHash which does not correspond to o genesis node - | OcertFailure (PredicateFailure (OCERT c)) -- Subtransition Failures - deriving (Generic) - -instance - ( Crypto c - , DSignable c (OCertSignable c) - , KESignable c (BHBody c) - , VRF.Signable (VRF c) Seed - ) => - STS (OVERLAY c) - where - type - State (OVERLAY c) = - Map (KeyHash 'BlockIssuer c) Word64 - - type - Signal (OVERLAY c) = - BHeader c - - type Environment (OVERLAY c) = OverlayEnv c - type BaseM (OVERLAY c) = ShelleyBase - type PredicateFailure (OVERLAY c) = OverlayPredicateFailure c - - initialRules = [] - - transitionRules = [overlayTransition] - -deriving instance - VRF.VRFAlgorithm (VRF c) => - Show (OverlayPredicateFailure c) - -deriving instance - VRF.VRFAlgorithm (VRF c) => - Eq (OverlayPredicateFailure c) - -vrfChecks :: - forall c. - ( Crypto c - , VRF.Signable (VRF c) Seed - ) => - Nonce -> - BHBody c -> - Either (PredicateFailure (OVERLAY c)) () -vrfChecks eta0 bhb = do - unless - ( VRF.verifyCertified - () - vrfK - (mkSeed seedEta slot eta0) - (coerce $ bheaderEta bhb) - ) - (throwError $ VRFKeyBadNonce seedEta slot eta0 (coerce $ bheaderEta bhb)) - unless - ( VRF.verifyCertified - () - vrfK - (mkSeed seedL slot eta0) - (coerce $ bheaderL bhb) - ) - (throwError $ VRFKeyBadLeaderValue seedL slot eta0 (coerce $ bheaderL bhb)) - where - vrfK = bheaderVrfVk bhb - slot = bheaderSlotNo bhb - -praosVrfChecks :: - forall c. - ( Crypto c - , VRF.Signable (VRF c) Seed - ) => - Nonce -> - PoolDistr c -> - ActiveSlotCoeff -> - BHBody c -> - Either (PredicateFailure (OVERLAY c)) () -praosVrfChecks eta0 (PoolDistr pd) f bhb = do - let sigma' = Map.lookup hk pd - case sigma' of - Nothing -> throwError $ VRFKeyUnknown hk - Just (IndividualPoolStake sigma vrfHK) -> do - unless - (vrfHK == hashVerKeyVRF vrfK) - (throwError $ VRFKeyWrongVRFKey hk vrfHK (hashVerKeyVRF vrfK)) - vrfChecks eta0 bhb - unless - (checkLeaderValue (VRF.certifiedOutput $ bheaderL bhb) sigma f) - (throwError $ VRFLeaderValueTooBig (VRF.certifiedOutput $ bheaderL bhb) sigma f) - where - hk = coerceKeyRole . issuerIDfromBHBody $ bhb - vrfK = bheaderVrfVk bhb - -pbftVrfChecks :: - forall c. - ( Crypto c - , VRF.Signable (VRF c) Seed - ) => - Hash c (VerKeyVRF c) -> - Nonce -> - BHBody c -> - Either (PredicateFailure (OVERLAY c)) () -pbftVrfChecks vrfHK eta0 bhb = do - unless - (vrfHK == hashVerKeyVRF vrfK) - (throwError $ WrongGenesisVRFKeyOVERLAY hk vrfHK (hashVerKeyVRF vrfK)) - vrfChecks eta0 bhb - pure () - where - hk = issuerIDfromBHBody bhb - vrfK = bheaderVrfVk bhb - -overlayTransition :: - forall c. - ( Crypto c - , DSignable c (OCertSignable c) - , KESignable c (BHBody c) - , VRF.Signable (VRF c) Seed - ) => - TransitionRule (OVERLAY c) -overlayTransition = - judgmentContext - >>= \( TRC - ( OverlayEnv dval pd (GenDelegs genDelegs) eta0 - , cs - , bh@(BHeader bhb _) - ) - ) -> do - let vk = bheaderVk bhb - vkh = hashKey vk - slot = bheaderSlotNo bhb - gkeys = Map.keysSet genDelegs - - asc <- liftSTS $ asks activeSlotCoeff - firstSlotNo <- liftSTS $ do - ei <- asks epochInfoPure - e <- epochInfoEpoch ei slot - epochInfoFirst ei e - - case (lookupInOverlaySchedule firstSlotNo gkeys dval asc slot :: Maybe (OBftSlot c)) of - Nothing -> - praosVrfChecks eta0 pd asc bhb ?!: id - Just NonActiveSlot -> - failBecause $ NotActiveSlotOVERLAY (bheaderSlotNo bhb) - Just (ActiveSlot gkey) -> - case Map.lookup gkey genDelegs of - Nothing -> - failBecause $ UnknownGenesisKeyOVERLAY gkey - Just (GenDelegPair genDelegsKey genesisVrfKH) -> do - vkh == coerceKeyRole genDelegsKey ?! WrongGenesisColdKeyOVERLAY vkh genDelegsKey - pbftVrfChecks genesisVrfKH eta0 bhb ?!: id - - let oce = - OCertEnv - { ocertEnvStPools = eval (dom pd) - , ocertEnvGenDelegs = Set.map genDelegKeyHash $ range genDelegs - } - - trans @(OCERT c) $ TRC (oce, cs, bh) - -instance - VRF.VRFAlgorithm (VRF c) => - NoThunks (OverlayPredicateFailure c) - -instance - ( Crypto c - , DSignable c (OCertSignable c) - , KESignable c (BHBody c) - , VRF.Signable (VRF c) Seed - ) => - Embed (OCERT c) (OVERLAY c) - where - wrapFailed = OcertFailure - -data OBftSlot c - = NonActiveSlot - | ActiveSlot !(KeyHash 'Genesis c) - deriving (Show, Eq, Ord, Generic) - -instance - Crypto c => - EncCBOR (OBftSlot c) - where - encCBOR NonActiveSlot = encodeNull - encCBOR (ActiveSlot k) = encCBOR k - -instance - Crypto c => - DecCBOR (OBftSlot c) - where - decCBOR = do - peekTokenType >>= \case - TypeNull -> do - decodeNull - pure NonActiveSlot - _ -> ActiveSlot <$> decCBOR - -instance NoThunks (OBftSlot c) - -instance NFData (OBftSlot c) - -classifyOverlaySlot :: - SlotNo -> -- first slot of the epoch - Set (KeyHash 'Genesis c) -> -- genesis Nodes - UnitInterval -> -- decentralization parameter - ActiveSlotCoeff -> -- active slot coefficent - SlotNo -> -- overlay slot to classify - OBftSlot c -classifyOverlaySlot firstSlotNo gkeys dval ascValue slot = - if isActive - then - let genesisIdx = (position `div` ascInv) `mod` fromIntegral (length gkeys) - in gkeys `getAtIndex` genesisIdx - else NonActiveSlot - where - d = unboundRational dval - position = ceiling (fromIntegral (slot -* firstSlotNo) * d) - isActive = position `mod` ascInv == 0 - getAtIndex gs i = if i < length gs then ActiveSlot (Set.elemAt i gs) else NonActiveSlot - ascInv = floor (1 / unboundRational (activeSlotVal ascValue)) - -lookupInOverlaySchedule :: - SlotNo -> -- first slot of the epoch - Set (KeyHash 'Genesis c) -> -- genesis Nodes - UnitInterval -> -- decentralization parameter - ActiveSlotCoeff -> -- active slot coefficent - SlotNo -> -- slot to lookup - Maybe (OBftSlot c) -lookupInOverlaySchedule firstSlotNo gkeys dval ascValue slot = - if isOverlaySlot firstSlotNo dval slot - then Just $ classifyOverlaySlot firstSlotNo gkeys dval ascValue slot - else Nothing - --- | Return the list of overlaySlots for a given epoch. --- Note that this linear in the size of the epoch, and should probably --- only be used for testing. --- If something more performant is needed, we could probably use --- [start + floor(x/d) | x <- [0 .. (spe -1)], floor(x/d) < spe] --- but we would need to make sure that this is equivalent. -overlaySlots :: - SlotNo -> -- starting slot - UnitInterval -> -- decentralization parameter - EpochSize -> - [SlotNo] -overlaySlots start d (EpochSize spe) = - [SlotNo x | x <- [unSlotNo start .. end], isOverlaySlot start d (SlotNo x)] - where - end = unSlotNo start + spe - 1 diff --git a/libs/cardano-protocol-tpraos/src/Cardano/Protocol/TPraos/Rules/Prtcl.hs b/libs/cardano-protocol-tpraos/src/Cardano/Protocol/TPraos/Rules/Prtcl.hs deleted file mode 100644 index 05370ba3159..00000000000 --- a/libs/cardano-protocol-tpraos/src/Cardano/Protocol/TPraos/Rules/Prtcl.hs +++ /dev/null @@ -1,261 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} - -module Cardano.Protocol.TPraos.Rules.Prtcl ( - PRTCL, - State, - PrtclEnv (..), - PrtclState (..), - PrtclPredicateFailure (..), - PredicateFailure, - PrtlSeqFailure (..), - prtlSeqChecks, -) -where - -import qualified Cardano.Crypto.VRF as VRF -import Cardano.Ledger.BaseTypes ( - Nonce, - Seed, - ShelleyBase, - UnitInterval, - ) -import Cardano.Ledger.Binary (DecCBOR, EncCBOR) -import Cardano.Ledger.Binary.Plain ( - FromCBOR (..), - ToCBOR (..), - decodeRecordNamed, - encodeListLen, - ) -import Cardano.Ledger.Crypto (Crypto, VRF) -import Cardano.Ledger.Keys ( - DSignable, - GenDelegs (..), - KESignable, - KeyHash, - KeyRole (..), - VRFSignable, - ) -import Cardano.Ledger.PoolDistr (PoolDistr) -import Cardano.Ledger.Slot (BlockNo, SlotNo) -import Cardano.Protocol.TPraos.BHeader ( - BHBody (..), - BHeader (..), - LastAppliedBlock (..), - PrevHash, - bhbody, - bnonce, - lastAppliedHash, - ) -import Cardano.Protocol.TPraos.OCert (OCertSignable) -import Cardano.Protocol.TPraos.Rules.Overlay (OVERLAY, OverlayEnv (..)) -import Cardano.Protocol.TPraos.Rules.Updn (UPDN, UpdnEnv (..), UpdnState (..)) -import Cardano.Slotting.Slot (WithOrigin (..)) -import Control.Monad (unless) -import Control.Monad.Except (MonadError, throwError) -import Control.State.Transition -import Data.Map.Strict (Map) -import Data.Void (Void) -import Data.Word (Word64) -import GHC.Generics (Generic) -import NoThunks.Class (NoThunks (..)) - -data PRTCL c - -data PrtclState c - = PrtclState - -- | Operation Certificate counters - !(Map (KeyHash 'BlockIssuer c) Word64) - -- | Evolving nonce - !Nonce - -- | Candidate nonce - !Nonce - deriving (Generic, Show, Eq) - -instance Crypto c => EncCBOR (PrtclState c) - -instance Crypto c => ToCBOR (PrtclState c) where - toCBOR (PrtclState m n1 n2) = - mconcat - [ encodeListLen 3 - , toCBOR m - , toCBOR n1 - , toCBOR n2 - ] - -instance Crypto c => DecCBOR (PrtclState c) - -instance Crypto c => FromCBOR (PrtclState c) where - fromCBOR = - decodeRecordNamed - "PrtclState" - (const 3) - ( PrtclState - <$> fromCBOR - <*> fromCBOR - <*> fromCBOR - ) - -instance Crypto c => NoThunks (PrtclState c) - -data PrtclEnv c - = PrtclEnv - UnitInterval -- the decentralization paramater @d@ from the protocal parameters - (PoolDistr c) - (GenDelegs c) - Nonce - deriving (Generic) - -instance NoThunks (PrtclEnv c) - -data PrtclPredicateFailure c - = OverlayFailure (PredicateFailure (OVERLAY c)) -- Subtransition Failures - | UpdnFailure (PredicateFailure (UPDN c)) -- Subtransition Failures - deriving (Generic) - -data PrtclEvent c - = UpdnEvent (Event (UPDN c)) -- Subtransition Failures - | NoEvent Void - -deriving instance - VRF.VRFAlgorithm (VRF c) => - Show (PrtclPredicateFailure c) - -deriving instance - VRF.VRFAlgorithm (VRF c) => - Eq (PrtclPredicateFailure c) - -instance - ( Crypto c - , DSignable c (OCertSignable c) - , KESignable c (BHBody c) - , VRFSignable c Seed - ) => - STS (PRTCL c) - where - type - State (PRTCL c) = - PrtclState c - - type - Signal (PRTCL c) = - BHeader c - - type - Environment (PRTCL c) = - PrtclEnv c - - type BaseM (PRTCL c) = ShelleyBase - type PredicateFailure (PRTCL c) = PrtclPredicateFailure c - type Event (PRTCL c) = PrtclEvent c - - initialRules = [] - - transitionRules = [prtclTransition] - -prtclTransition :: - forall c. - ( Crypto c - , DSignable c (OCertSignable c) - , KESignable c (BHBody c) - , VRFSignable c Seed - ) => - TransitionRule (PRTCL c) -prtclTransition = do - TRC - ( PrtclEnv dval pd dms eta0 - , PrtclState cs etaV etaC - , bh - ) <- - judgmentContext - let bhb = bhbody bh - slot = bheaderSlotNo bhb - eta = bnonce bhb - - UpdnState etaV' etaC' <- - trans @(UPDN c) $ - TRC - ( UpdnEnv eta - , UpdnState etaV etaC - , slot - ) - cs' <- - trans @(OVERLAY c) $ - TRC (OverlayEnv dval pd dms eta0, cs, bh) - - pure $ - PrtclState - cs' - etaV' - etaC' - -instance Crypto c => NoThunks (PrtclPredicateFailure c) - -instance - ( Crypto c - , DSignable c (OCertSignable c) - , KESignable c (BHBody c) - , VRFSignable c Seed - ) => - Embed (OVERLAY c) (PRTCL c) - where - wrapFailed = OverlayFailure - wrapEvent = NoEvent - -instance - ( Crypto c - , DSignable c (OCertSignable c) - , KESignable c (BHBody c) - , VRFSignable c Seed - ) => - Embed (UPDN c) (PRTCL c) - where - wrapFailed = UpdnFailure - wrapEvent = UpdnEvent - -data PrtlSeqFailure c - = WrongSlotIntervalPrtclSeq - -- | Last slot number. - SlotNo - -- | Current slot number. - SlotNo - | WrongBlockNoPrtclSeq - -- | Last applied block. - (WithOrigin (LastAppliedBlock c)) - -- | Current block number. - BlockNo - | WrongBlockSequencePrtclSeq - -- | Last applied hash - (PrevHash c) - -- | Current block's previous hash - (PrevHash c) - deriving (Show, Eq, Generic) - -instance Crypto c => NoThunks (PrtlSeqFailure c) - -prtlSeqChecks :: - (MonadError (PrtlSeqFailure c) m, Crypto c) => - WithOrigin (LastAppliedBlock c) -> - BHeader c -> - m () -prtlSeqChecks lab bh = - case lab of - Origin -> pure () - At (LastAppliedBlock bL sL _) -> do - unless (sL < slot) . throwError $ WrongSlotIntervalPrtclSeq sL slot - unless (bL + 1 == bn) . throwError $ WrongBlockNoPrtclSeq lab bn - unless (ph == bheaderPrev bhb) . throwError $ WrongBlockSequencePrtclSeq ph (bheaderPrev bhb) - where - bhb = bhbody bh - bn = bheaderBlockNo bhb - slot = bheaderSlotNo bhb - ph = lastAppliedHash lab diff --git a/libs/cardano-protocol-tpraos/src/Cardano/Protocol/TPraos/Rules/Tickn.hs b/libs/cardano-protocol-tpraos/src/Cardano/Protocol/TPraos/Rules/Tickn.hs deleted file mode 100644 index 06d1d1a0fd8..00000000000 --- a/libs/cardano-protocol-tpraos/src/Cardano/Protocol/TPraos/Rules/Tickn.hs +++ /dev/null @@ -1,99 +0,0 @@ -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE EmptyDataDeriving #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeFamilies #-} - -module Cardano.Protocol.TPraos.Rules.Tickn ( - TICKN, - TicknEnv (..), - TicknState (..), - TicknPredicateFailure, - PredicateFailure, -) -where - -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.Binary (DecCBOR, EncCBOR) -import Cardano.Ledger.Binary.Plain (FromCBOR (..), ToCBOR (..), decodeRecordNamed, encodeListLen) -import Control.State.Transition -import GHC.Generics (Generic) -import NoThunks.Class (NoThunks (..)) - -data TICKN - -data TicknEnv = TicknEnv - { ticknEnvExtraEntropy :: Nonce - , ticknEnvCandidateNonce :: Nonce - , ticknEnvHashHeaderNonce :: Nonce - -- ^ Hash of the last header of the previous epoch as a nonce. - } - -data TicknState = TicknState - { ticknStateEpochNonce :: !Nonce - , ticknStatePrevHashNonce :: !Nonce - } - deriving (Show, Eq, Generic) - -instance NoThunks TicknState - -instance DecCBOR TicknState - -instance FromCBOR TicknState where - fromCBOR = - decodeRecordNamed - "TicknState" - (const 2) - ( TicknState - <$> fromCBOR - <*> fromCBOR - ) - -instance EncCBOR TicknState - -instance ToCBOR TicknState where - toCBOR - ( TicknState - ηv - ηc - ) = - mconcat - [ encodeListLen 2 - , toCBOR ηv - , toCBOR ηc - ] - -data TicknPredicateFailure -- No predicate failures - deriving (Generic, Show, Eq) - -instance NoThunks TicknPredicateFailure - -instance STS TICKN where - type State TICKN = TicknState - type Signal TICKN = Bool -- Marker indicating whether we are in a new epoch - type Environment TICKN = TicknEnv - type BaseM TICKN = ShelleyBase - type PredicateFailure TICKN = TicknPredicateFailure - - initialRules = - [ pure - ( TicknState - initialNonce - initialNonce - ) - ] - where - initialNonce = mkNonceFromNumber 0 - transitionRules = [tickTransition] - -tickTransition :: TransitionRule TICKN -tickTransition = do - TRC (TicknEnv extraEntropy ηc ηph, st@(TicknState _ ηh), newEpoch) <- judgmentContext - pure $ - if newEpoch - then - TicknState - { ticknStateEpochNonce = ηc ⭒ ηh ⭒ extraEntropy - , ticknStatePrevHashNonce = ηph - } - else st diff --git a/libs/cardano-protocol-tpraos/src/Cardano/Protocol/TPraos/Rules/Updn.hs b/libs/cardano-protocol-tpraos/src/Cardano/Protocol/TPraos/Rules/Updn.hs deleted file mode 100644 index 78cac38a33d..00000000000 --- a/libs/cardano-protocol-tpraos/src/Cardano/Protocol/TPraos/Rules/Updn.hs +++ /dev/null @@ -1,76 +0,0 @@ -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE EmptyDataDeriving #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE TypeFamilies #-} - -module Cardano.Protocol.TPraos.Rules.Updn ( - UPDN, - UpdnEnv (..), - UpdnState (..), - PredicateFailure, - UpdnPredicateFailure, -) -where - -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.Crypto -import Cardano.Ledger.Slot -import Control.Monad.Trans.Reader (asks) -import Control.State.Transition -import GHC.Generics (Generic) -import NoThunks.Class (NoThunks (..)) - -data UPDN c - -newtype UpdnEnv - = -- | New nonce - UpdnEnv - Nonce - -data UpdnState = UpdnState Nonce Nonce - deriving (Show, Eq) - -data UpdnPredicateFailure c -- No predicate failures - deriving (Generic, Show, Eq) - -instance NoThunks (UpdnPredicateFailure c) - -newtype UpdnEvent c = NewEpoch EpochNo - -instance - Crypto c => - STS (UPDN c) - where - type State (UPDN c) = UpdnState - type Signal (UPDN c) = SlotNo - type Environment (UPDN c) = UpdnEnv - type BaseM (UPDN c) = ShelleyBase - type PredicateFailure (UPDN c) = UpdnPredicateFailure c - type Event (UPDN c) = UpdnEvent c - initialRules = - [ pure - ( UpdnState - initialNonce - initialNonce - ) - ] - where - initialNonce = mkNonceFromNumber 0 - transitionRules = [updTransition] - -updTransition :: Crypto c => TransitionRule (UPDN c) -updTransition = do - TRC (UpdnEnv eta, UpdnState eta_v eta_c, s) <- judgmentContext - ei <- liftSTS $ asks epochInfoPure - sp <- liftSTS $ asks stabilityWindow - EpochNo e <- liftSTS $ epochInfoEpoch ei s - let newEpochNo = EpochNo (e + 1) - firstSlotNextEpoch <- liftSTS $ epochInfoFirst ei newEpochNo - tellEvent $ NewEpoch newEpochNo - pure $ - UpdnState - (eta_v ⭒ eta) - ( if s +* Duration sp < firstSlotNextEpoch - then eta_v ⭒ eta - else eta_c - ) diff --git a/libs/cardano-protocol-tpraos/test/Main.hs b/libs/cardano-protocol-tpraos/test/Main.hs deleted file mode 100644 index dd17f62b0cc..00000000000 --- a/libs/cardano-protocol-tpraos/test/Main.hs +++ /dev/null @@ -1,10 +0,0 @@ -module Main where - -import Test.Cardano.Ledger.Common -import qualified Test.Cardano.Protocol.Binary.CddlSpec as Cddl - -main :: IO () -main = - ledgerTestMain $ - describe "TPraos" $ do - Cddl.spec diff --git a/libs/cardano-protocol-tpraos/test/Test/Cardano/Protocol/Binary/CddlSpec.hs b/libs/cardano-protocol-tpraos/test/Test/Cardano/Protocol/Binary/CddlSpec.hs deleted file mode 100644 index 6ff191aa17f..00000000000 --- a/libs/cardano-protocol-tpraos/test/Test/Cardano/Protocol/Binary/CddlSpec.hs +++ /dev/null @@ -1,36 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Protocol.Binary.CddlSpec (spec) where - -import Cardano.Ledger.Binary.Group (CBORGroup) -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto -import Cardano.Ledger.Shelley -import Cardano.Protocol.TPraos.BHeader (BHBody, BHeader) -import Cardano.Protocol.TPraos.OCert (OCert) -import qualified Data.ByteString.Lazy as BSL -import Test.Cardano.Ledger.Binary.Cddl ( - beforeAllCddlFile, - cddlRoundTripAnnCborSpec, - cddlRoundTripCborSpec, - ) -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Shelley.Binary.Cddl (readShelleyCddlFiles) - -spec :: Spec -spec = - describe "CDDL" $ do - let n = 3 - specForEra @Shelley readShelleyCddlFiles n - -specForEra :: forall era. Era era => IO [BSL.ByteString] -> Int -> Spec -specForEra readCddlFiles n = do - describe (eraName @era) $ - beforeAllCddlFile n readCddlFiles $ do - let v = eraProtVerLow @era - cddlRoundTripAnnCborSpec @(BHeader StandardCrypto) v "header" - cddlRoundTripCborSpec @(BHBody StandardCrypto) v "header_body" - cddlRoundTripCborSpec @(CBORGroup (OCert StandardCrypto)) v "[ operational_cert ]" diff --git a/libs/cardano-protocol-tpraos/testlib/Test/Cardano/Protocol/Crypto/KES.hs b/libs/cardano-protocol-tpraos/testlib/Test/Cardano/Protocol/Crypto/KES.hs deleted file mode 100644 index 91073f34c90..00000000000 --- a/libs/cardano-protocol-tpraos/testlib/Test/Cardano/Protocol/Crypto/KES.hs +++ /dev/null @@ -1,23 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE UndecidableInstances #-} - -module Test.Cardano.Protocol.Crypto.KES ( - KESKeyPair (..), -) where - -import qualified Cardano.Crypto.KES.Class as KES -import Cardano.Ledger.Crypto -import Cardano.Ledger.Keys ( - SignKeyKES, - VerKeyKES, - ) - -data KESKeyPair c = KESKeyPair - { kesSignKey :: !(SignKeyKES c) - , kesVerKey :: !(VerKeyKES c) - } - -deriving instance - (Show (KES.SignKeyKES (KES c)), Show (KES.VerKeyKES (KES c))) => Show (KESKeyPair c) diff --git a/libs/cardano-protocol-tpraos/testlib/Test/Cardano/Protocol/Crypto/VRF.hs b/libs/cardano-protocol-tpraos/testlib/Test/Cardano/Protocol/Crypto/VRF.hs deleted file mode 100644 index 0b40dd8a0e6..00000000000 --- a/libs/cardano-protocol-tpraos/testlib/Test/Cardano/Protocol/Crypto/VRF.hs +++ /dev/null @@ -1,23 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE UndecidableInstances #-} - -module Test.Cardano.Protocol.Crypto.VRF ( - VRFKeyPair (..), -) where - -import qualified Cardano.Crypto.VRF.Class as VRF -import Cardano.Ledger.Crypto -import Cardano.Ledger.Keys ( - SignKeyVRF, - VerKeyVRF, - ) - -data VRFKeyPair c = VRFKeyPair - { vrfSignKey :: !(SignKeyVRF c) - , vrfVerKey :: !(VerKeyVRF c) - } - -deriving instance - (Show (VRF.SignKeyVRF (VRF c)), Show (VRF.VerKeyVRF (VRF c))) => Show (VRFKeyPair c) diff --git a/libs/cardano-protocol-tpraos/testlib/Test/Cardano/Protocol/Crypto/VRF/Fake.hs b/libs/cardano-protocol-tpraos/testlib/Test/Cardano/Protocol/Crypto/VRF/Fake.hs deleted file mode 100644 index 51dd7e7bbb2..00000000000 --- a/libs/cardano-protocol-tpraos/testlib/Test/Cardano/Protocol/Crypto/VRF/Fake.hs +++ /dev/null @@ -1,201 +0,0 @@ -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternGuards #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - --- | Fake implementation of VRF, where the random value isn't random but given --- by the creator. -module Test.Cardano.Protocol.Crypto.VRF.Fake ( - NatNonce (..), - FakeVRF, - VerKeyVRF (..), - SignKeyVRF (..), - WithResult (..), -) -where - -import Cardano.Crypto.Hash -import Cardano.Crypto.Seed (runMonadRandomWithSeed) -import Cardano.Crypto.Util -import Cardano.Crypto.VRF.Class hiding ( - decodeCertVRF, - decodeSignKeyVRF, - decodeVerKeyVRF, - encodeCertVRF, - encodeSignKeyVRF, - encodeVerKeyVRF, - ) -import Cardano.Ledger.BaseTypes (Seed, shelleyProtVer) -import Cardano.Ledger.Binary (DecCBOR (..), EncCBOR (..), hashWithEncoder) -import Cardano.Ledger.Binary.Crypto ( - decodeCertVRF, - decodeSignKeyVRF, - decodeVerKeyVRF, - encodeCertVRF, - encodeSignKeyVRF, - encodeVerKeyVRF, - ) -import Data.Bits -import qualified Data.ByteString as BS -import qualified Data.ByteString.Builder as BS -import qualified Data.ByteString.Lazy as LBS -import Data.Proxy (Proxy (..)) -import Data.Word (Word16, Word64) -import GHC.Generics (Generic) -import NoThunks.Class (NoThunks (..)) -import Numeric.Natural - --- | We provide our own nonces to 'mkBlock', which we then wish to recover as --- the output of the VRF functions. In general, however, we just derive them --- from a natural. Since the nonce is a hash, we do not want to recover it to --- find a preimage. In testing, therefore, we just wrap the raw natural, which --- we then encode into the fake VRF implementation. -newtype NatNonce = NatNonce Natural - -data FakeVRF - --- | A class for seeds which sneakily contain the certified output we wish to --- "randomly" derive from them. -class EncCBOR (Payload a) => SneakilyContainResult a where - type Payload a - sneakilyExtractResult :: a -> SignKeyVRF FakeVRF -> OutputVRF FakeVRF - unsneakilyExtractPayload :: a -> Payload a - -data WithResult a = WithResult !a !Word64 - deriving (Eq, Show) - -instance EncCBOR a => SneakilyContainResult (WithResult a) where - type Payload (WithResult a) = a - - -- Note that this instance completely ignores the key. - sneakilyExtractResult (WithResult _ nat) _ = - -- Fill in the word64 as the low 8 bytes of a 16 byte string - OutputVRF (toBytes (BS.word64BE 0 <> BS.word64BE nat)) - where - toBytes = LBS.toStrict . BS.toLazyByteString - - unsneakilyExtractPayload (WithResult p _) = p - --- | An instance to allow this to be used in the way of `Mock` where no result --- has been provided. -instance SneakilyContainResult Seed where - type Payload Seed = Seed - sneakilyExtractResult s sk = - OutputVRF - . hashToBytes - . hashWithEncoder @Blake2b_224 shelleyProtVer id - $ encCBOR s <> encCBOR sk - unsneakilyExtractPayload = id - -instance VRFAlgorithm FakeVRF where - algorithmNameVRF _ = "fakeVRF" - seedSizeVRF _ = 8 - - type Signable FakeVRF = SneakilyContainResult - - newtype VerKeyVRF FakeVRF = VerKeyFakeVRF Word64 - deriving stock (Show, Generic) - deriving newtype (Eq, Ord, NoThunks) - newtype SignKeyVRF FakeVRF = SignKeyFakeVRF Word64 - deriving stock (Show, Generic) - deriving newtype (Eq, Ord, NoThunks) - - data CertVRF FakeVRF = CertFakeVRF !Word64 !Word16 !(OutputVRF FakeVRF) - deriving stock (Show, Eq, Ord, Generic) - deriving anyclass (NoThunks) - - genKeyVRF seed = SignKeyFakeVRF $ runMonadRandomWithSeed seed getRandomWord64 - deriveVerKeyVRF (SignKeyFakeVRF n) = VerKeyFakeVRF n - evalVRF () a sk = evalFakeVRF a sk - - -- This implementation of 'verifyVRF' checks the real proof, which is contained - -- in the certificate, but ignores the produced value, and insteads returns - -- the output which is stored in the 'CertFakeVRF'. - verifyVRF () (VerKeyFakeVRF n) a (CertFakeVRF _ proof o) - | proof == recomputedProof = Just o - | otherwise = Nothing - where - (OutputVRF recomputedProofBytes, _) = evalFakeVRF a (SignKeyFakeVRF n) - recomputedProof = fromIntegral . bytesToNatural $ recomputedProofBytes - - sizeVerKeyVRF _ = 8 - sizeSignKeyVRF _ = 8 - sizeCertVRF _ = 26 - sizeOutputVRF _ = sizeHash (Proxy :: Proxy Blake2b_224) - - rawSerialiseVerKeyVRF (VerKeyFakeVRF k) = writeBinaryWord64 k - rawSerialiseSignKeyVRF (SignKeyFakeVRF k) = writeBinaryWord64 k - rawSerialiseCertVRF (CertFakeVRF k s (OutputVRF b)) = - writeBinaryWord64 k <> writeBinaryWord16 s <> b - - rawDeserialiseVerKeyVRF bs - | [kb] <- splitsAt [8] bs - , let k = readBinaryWord64 kb = - Just $! VerKeyFakeVRF k - | otherwise = - Nothing - - rawDeserialiseSignKeyVRF bs - | [kb] <- splitsAt [8] bs - , let k = readBinaryWord64 kb = - Just $! SignKeyFakeVRF k - | otherwise = - Nothing - - rawDeserialiseCertVRF bs - | [kb, smb, xs] <- splitsAt [8, 2, 16] bs - , let k = readBinaryWord64 kb - , let s = readBinaryWord16 smb = - Just $! CertFakeVRF k s (OutputVRF xs) - | otherwise = - Nothing - -evalFakeVRF :: - SneakilyContainResult a => - a -> - SignKeyVRF FakeVRF -> - (OutputVRF FakeVRF, CertVRF FakeVRF) -evalFakeVRF a sk@(SignKeyFakeVRF n) = - let y = sneakilyExtractResult a sk - p = unsneakilyExtractPayload a - proof = - fromIntegral - . bytesToNatural - . hashToBytes - . hashWithEncoder @Blake2b_224 shelleyProtVer id - $ encCBOR p <> encCBOR sk - in (y, CertFakeVRF n proof y) - -instance DecCBOR (VerKeyVRF FakeVRF) where - decCBOR = decodeVerKeyVRF - -instance EncCBOR (VerKeyVRF FakeVRF) where - encCBOR = encodeVerKeyVRF - -instance DecCBOR (SignKeyVRF FakeVRF) where - decCBOR = decodeSignKeyVRF - -instance EncCBOR (SignKeyVRF FakeVRF) where - encCBOR = encodeSignKeyVRF - -instance DecCBOR (CertVRF FakeVRF) where - decCBOR = decodeCertVRF - -instance EncCBOR (CertVRF FakeVRF) where - encCBOR = encodeCertVRF - -readBinaryWord16 :: ByteString -> Word16 -readBinaryWord16 = - BS.foldl' (\acc w8 -> unsafeShiftL acc 8 + fromIntegral w8) 0 - -writeBinaryWord16 :: Word16 -> ByteString -writeBinaryWord16 = - BS.reverse - . fst - . BS.unfoldrN 2 (\w -> Just (fromIntegral w, unsafeShiftR w 8)) diff --git a/libs/cardano-protocol-tpraos/testlib/Test/Cardano/Protocol/TPraos/Arbitrary.hs b/libs/cardano-protocol-tpraos/testlib/Test/Cardano/Protocol/TPraos/Arbitrary.hs deleted file mode 100644 index d32c740cdc3..00000000000 --- a/libs/cardano-protocol-tpraos/testlib/Test/Cardano/Protocol/TPraos/Arbitrary.hs +++ /dev/null @@ -1,197 +0,0 @@ -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE DisambiguateRecordFields #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Protocol.TPraos.Arbitrary ( - genBHeader, - genBlock, - genCoherentBlock, -) where - -import qualified Cardano.Crypto.DSIGN.Class as DSIGN (Signable) -import qualified Cardano.Crypto.KES as KES -import Cardano.Crypto.Util (SignableRepresentation) -import qualified Cardano.Crypto.VRF as VRF -import Cardano.Ledger.BaseTypes (BlockNo (..), Nonce, Seed, SlotNo (..)) -import Cardano.Ledger.Block (Block (Block)) -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto (Crypto (KES, VRF), DSIGN) -import Cardano.Ledger.Keys (signedKES) -import Cardano.Protocol.TPraos.API (PraosCrypto) -import Cardano.Protocol.TPraos.BHeader ( - BHBody (BHBody), - BHeader (BHeader), - HashHeader (HashHeader), - PrevHash (BlockHash, GenesisHash), - ) -import Cardano.Protocol.TPraos.OCert (KESPeriod (KESPeriod), OCert (..), OCertSignable (..)) -import Cardano.Protocol.TPraos.Rules.Overlay (OBftSlot) -import Cardano.Protocol.TPraos.Rules.Prtcl (PrtclState) -import Cardano.Protocol.TPraos.Rules.Tickn (TicknState) -import Generic.Random (genericArbitraryU) -import Test.Cardano.Ledger.Binary.Arbitrary () -import Test.Cardano.Ledger.Common -import Test.Cardano.Ledger.Core.Arbitrary () -import Test.Cardano.Ledger.Shelley.Arbitrary () -import Test.Cardano.Protocol.TPraos.Create (AllIssuerKeys, mkBHBody, mkBHeader, mkBlock, mkOCert) - -instance Crypto c => Arbitrary (HashHeader c) where - arbitrary = HashHeader <$> arbitrary - -instance Arbitrary TicknState where - arbitrary = genericArbitraryU - shrink = genericShrink - -instance Crypto c => Arbitrary (PrtclState c) where - arbitrary = genericArbitraryU - shrink = genericShrink - -instance Crypto c => Arbitrary (OBftSlot c) where - arbitrary = genericArbitraryU - shrink = genericShrink - -instance - ( Crypto c - , VRF.Signable (VRF c) ~ SignableRepresentation - , KES.Signable (KES c) ~ SignableRepresentation - ) => - Arbitrary (BHeader c) - where - arbitrary = do - bhBody <- arbitrary - hotKey <- arbitrary - let sig = signedKES () 1 bhBody hotKey - pure $ BHeader bhBody sig - -genBHeader :: - ( DSIGN.Signable (DSIGN c) (OCertSignable c) - , VRF.Signable (VRF c) Seed - , KES.Signable (KES c) (BHBody c) - , Crypto c - ) => - [AllIssuerKeys c r] -> - Gen (BHeader c) -genBHeader aiks = do - prevHash <- arbitrary - allPoolKeys <- elements aiks - slotNo <- arbitrary - blockNo <- arbitrary - epochNonce <- arbitrary - bodySize <- arbitrary - bodyHash <- arbitrary - protVer <- arbitrary - let kesPeriod = 1 - keyRegKesPeriod = 1 - oCert = mkOCert allPoolKeys 1 (KESPeriod kesPeriod) - bhBody = - mkBHBody protVer prevHash allPoolKeys slotNo blockNo epochNonce oCert bodySize bodyHash - return $ mkBHeader allPoolKeys kesPeriod keyRegKesPeriod bhBody - -instance - ( Crypto c - , VRF.Signable (VRF c) ~ SignableRepresentation - ) => - Arbitrary (BHBody c) - where - arbitrary = - BHBody - <$> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - -instance Crypto c => Arbitrary (PrevHash c) where - arbitrary = do - hash <- arbitrary - frequency [(1, pure GenesisHash), (9999, pure (BlockHash hash))] - -instance Crypto c => Arbitrary (OCert c) where - arbitrary = - OCert - <$> arbitrary - <*> arbitrary - <*> arbitrary - <*> arbitrary - -deriving newtype instance Arbitrary KESPeriod - -instance - ( Era era - , c ~ EraCrypto era - , EraSegWits era - , KES.Signable (KES c) ~ SignableRepresentation - , VRF.Signable (VRF c) ~ SignableRepresentation - , Arbitrary (Tx era) - ) => - Arbitrary (Block (BHeader c) era) - where - arbitrary = Block <$> arbitrary <*> (toTxSeq <$> arbitrary) - --- | Use supplied keys to generate a Block. -genBlock :: - ( DSIGN.Signable (DSIGN c) (OCertSignable c) - , VRF.Signable (VRF c) Seed - , KES.Signable (KES c) (BHBody c) - , EraSegWits era - , Arbitrary (Tx era) - , c ~ EraCrypto era - ) => - [AllIssuerKeys c r] -> - Gen (Block (BHeader c) era) -genBlock aiks = Block <$> genBHeader aiks <*> (toTxSeq <$> arbitrary) - --- | For some purposes, a totally random block generator may not be suitable. --- There are tests in the ouroboros-network repository, for instance, that --- perform some integrity checks on the generated blocks. --- --- For other purposes, such as the serialization tests in this repository, --- 'genBlock' is more appropriate. --- --- This generator uses 'mkBlock' provide more coherent blocks. -genCoherentBlock :: - forall era r. - ( EraSegWits era - , Arbitrary (Tx era) - , KES.Signable (KES (EraCrypto era)) ~ SignableRepresentation - , DSIGN.Signable (DSIGN (EraCrypto era)) ~ SignableRepresentation - , PraosCrypto (EraCrypto era) - ) => - [AllIssuerKeys (EraCrypto era) r] -> - Gen (Block (BHeader (EraCrypto era)) era) -genCoherentBlock aiks = do - prevHash <- arbitrary :: Gen (HashHeader (EraCrypto era)) - allPoolKeys <- elements aiks - txs <- arbitrary - curSlotNo <- SlotNo <$> choose (0, 10) - curBlockNo <- BlockNo <$> choose (0, 100) - epochNonce <- arbitrary :: Gen Nonce - let kesPeriod = 1 - keyRegKesPeriod = 1 - ocert = mkOCert allPoolKeys 1 (KESPeriod kesPeriod) - return $ - mkBlock - prevHash - allPoolKeys - txs - curSlotNo - curBlockNo - epochNonce - kesPeriod - keyRegKesPeriod - ocert diff --git a/libs/cardano-protocol-tpraos/testlib/Test/Cardano/Protocol/TPraos/Create.hs b/libs/cardano-protocol-tpraos/testlib/Test/Cardano/Protocol/TPraos/Create.hs deleted file mode 100644 index e6c7b9ae3e7..00000000000 --- a/libs/cardano-protocol-tpraos/testlib/Test/Cardano/Protocol/TPraos/Create.hs +++ /dev/null @@ -1,295 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE KindSignatures #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} - -module Test.Cardano.Protocol.TPraos.Create ( - AllIssuerKeys (..), - KESKeyPair (..), - VRFKeyPair (..), - mkOCert, - mkBHBody, - mkBHBodyFakeVRF, - mkBHeader, - mkBlock, - mkBlockFakeVRF, - evolveKESUntil, -) where - -import Cardano.Crypto.DSIGN (Signable) -import qualified Cardano.Crypto.KES.Class as KES -import qualified Cardano.Crypto.VRF.Class as VRF -import Cardano.Ledger.BaseTypes ( - BlockNo, - Nonce, - ProtVer (..), - Seed, - SlotNo, - UnitInterval, - unboundRational, - ) -import Cardano.Ledger.Block -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto -import Cardano.Ledger.Keys ( - HasKeyRole (coerceKeyRole), - Hash, - KeyHash, - KeyRole (..), - signedDSIGN, - signedKES, - ) -import Cardano.Protocol.TPraos.BHeader ( - BHBody (..), - BHeader (..), - HashHeader, - PrevHash (BlockHash), - mkSeed, - seedEta, - seedL, - ) -import Cardano.Protocol.TPraos.OCert ( - KESPeriod (..), - OCert (..), - OCertSignable (..), - ) -import Data.Coerce -import Data.List.NonEmpty as NE -import Data.Ratio (denominator, numerator, (%)) -import Data.Sequence.Strict as StrictSeq -import Data.Word -import Numeric.Natural -import Test.Cardano.Ledger.Core.KeyPair (KeyPair (..)) -import Test.Cardano.Protocol.Crypto.KES (KESKeyPair (..)) -import Test.Cardano.Protocol.Crypto.VRF (VRFKeyPair (..)) -import Test.Cardano.Protocol.Crypto.VRF.Fake (NatNonce (..), WithResult (..)) - -data AllIssuerKeys v (r :: KeyRole) = AllIssuerKeys - { aikCold :: KeyPair r v - , aikVrf :: VRFKeyPair v - , aikHot :: NonEmpty (KESPeriod, KESKeyPair v) - , aikColdKeyHash :: KeyHash r v - } - deriving (Show) - -mkOCert :: - forall c r. - (Crypto c, Signable (DSIGN c) (OCertSignable c)) => - AllIssuerKeys c r -> - Word64 -> - KESPeriod -> - OCert c -mkOCert pKeys kesPeriod keyRegKesPeriod = - let vKeyHot = kesVerKey $ snd $ NE.head $ aikHot pKeys - sKeyCold = sKey $ aikCold pKeys - in OCert - { ocertVkHot = vKeyHot - , ocertN = kesPeriod - , ocertKESPeriod = keyRegKesPeriod - , ocertSigma = signedDSIGN @c sKeyCold (OCertSignable vKeyHot kesPeriod keyRegKesPeriod) - } - -mkBHBody :: - ( VRF.ContextVRF (VRF v) ~ () - , VRF.Signable (VRF v) Seed - , VRF.VRFAlgorithm (VRF v) - ) => - ProtVer -> - HashHeader v -> - AllIssuerKeys v r -> - SlotNo -> - BlockNo -> - Nonce -> - OCert v -> - Word32 -> - Hash v EraIndependentBlockBody -> - BHBody v -mkBHBody = mkBHBodyWithVRF (VRF.evalCertified ()) (VRF.evalCertified ()) - -mkBHBodyFakeVRF :: - ( VRF.ContextVRF (VRF v) ~ () - , VRF.Signable (VRF v) (WithResult Seed) - , VRF.VRFAlgorithm (VRF v) - ) => - NatNonce -> - UnitInterval -> - ProtVer -> - HashHeader v -> - AllIssuerKeys v r -> - SlotNo -> - BlockNo -> - Nonce -> - OCert v -> - Word32 -> - Hash v EraIndependentBlockBody -> - BHBody v -mkBHBodyFakeVRF (NatNonce bnonce) l = - mkBHBodyWithVRF - (\nonce -> VRF.evalCertified () (WithResult nonce (fromIntegral bnonce))) - (\nonce -> VRF.evalCertified () (WithResult nonce (unitIntervalToWord64 l))) - --- | Try to map the unit interval to a 64bit natural number. We don't care whether --- this is surjective. But it should be right inverse to `fromNatural` - that --- is, one should be able to recover the `UnitInterval` value used here. -unitIntervalToWord64 :: UnitInterval -> Word64 -unitIntervalToWord64 ui = - toWord64 ((toInteger (maxBound :: Word64) % 1) * unboundRational ui) - where - toWord64 r = fromInteger (numerator r `quot` denominator r) - -mkBHBodyWithVRF :: - ( Coercible a (VRF.CertifiedVRF (VRF c) Nonce) - , Coercible b (VRF.CertifiedVRF (VRF c) Natural) - ) => - (Seed -> VRF.SignKeyVRF (VRF c) -> a) -> - (Seed -> VRF.SignKeyVRF (VRF c) -> b) -> - ProtVer -> - HashHeader c -> - AllIssuerKeys c r -> - SlotNo -> - BlockNo -> - Nonce -> - OCert c -> - Word32 -> - Hash c EraIndependentBlockBody -> - BHBody c -mkBHBodyWithVRF mkVrfEta mkVrfL protVer prev pKeys slotNo blockNo enonce oCert bodySize bodyHash = - let nonceNonce = mkSeed seedEta slotNo enonce - leaderNonce = mkSeed seedL slotNo enonce - vKeyCold = vKey $ aikCold pKeys - in BHBody - { bheaderBlockNo = blockNo - , bheaderSlotNo = slotNo - , bheaderPrev = BlockHash prev - , bheaderVk = coerceKeyRole vKeyCold - , bheaderVrfVk = vrfVerKey $ aikVrf pKeys - , bheaderEta = coerce $ mkVrfEta nonceNonce (vrfSignKey $ aikVrf pKeys) - , bheaderL = coerce $ mkVrfL leaderNonce (vrfSignKey $ aikVrf pKeys) - , bsize = bodySize - , bhash = bodyHash - , bheaderOCert = oCert - , bprotver = protVer - } - -mkBHeader :: - (Crypto c, KES.Signable (KES c) (BHBody c)) => - AllIssuerKeys c r -> - Word -> - -- | KES period of key registration - Word -> - BHBody c -> - BHeader c -mkBHeader pKeys kesPeriod keyRegKesPeriod bhBody = - let sHot = kesSignKey $ snd $ NE.head $ aikHot pKeys - kpDiff = kesPeriod - keyRegKesPeriod - hotKey = case evolveKESUntil sHot (KESPeriod 0) (KESPeriod kpDiff) of - Nothing -> - error $ - mconcat - [ "Could not evolve key to iteration. " - , "keyRegKesPeriod: " ++ show keyRegKesPeriod - , "kesPeriod: " ++ show kesPeriod - , "kpDiff: " ++ show kpDiff - ] - Just hKey -> hKey - sig = signedKES () kpDiff bhBody hotKey - in BHeader bhBody sig - --- | Try to evolve KES key until specific KES period is reached, given the --- current KES period. -evolveKESUntil :: - (KES.KESAlgorithm v, KES.ContextKES v ~ ()) => - KES.SignKeyKES v -> - -- | Current KES period - KESPeriod -> - -- | Target KES period - KESPeriod -> - Maybe (KES.SignKeyKES v) -evolveKESUntil sk1 (KESPeriod current) (KESPeriod target) = go sk1 current target - where - go !_ c t | t < c = Nothing - go !sk c t | c == t = Just sk - go !sk c t = case KES.updateKES () sk c of - Nothing -> Nothing - Just sk' -> go sk' (c + 1) t - -mkBlock :: - forall era r. - ( EraSegWits era - , VRF.Signable (VRF (EraCrypto era)) Seed - , KES.Signable (KES (EraCrypto era)) (BHBody (EraCrypto era)) - ) => - -- | Hash of previous block - HashHeader (EraCrypto era) -> - -- | All keys in the stake pool - AllIssuerKeys (EraCrypto era) r -> - -- | Transactions to record - [Tx era] -> - -- | Current slot - SlotNo -> - -- | Block number/chain length/chain "difficulty" - BlockNo -> - -- | EpochNo nonce - Nonce -> - -- | Period of KES (key evolving signature scheme) - Word -> - -- | KES period of key registration - Word -> - -- | Operational certificate - OCert (EraCrypto era) -> - Block (BHeader (EraCrypto era)) era -mkBlock prev pKeys txns slotNo blockNo enonce kesPeriod keyRegKesPeriod oCert = - let protVer = ProtVer (eraProtVerHigh @era) 0 - txseq = toTxSeq @era (StrictSeq.fromList txns) - bodySize = fromIntegral $ bBodySize protVer txseq - bodyHash = hashTxSeq @era txseq - bhBody = mkBHBody protVer prev pKeys slotNo blockNo enonce oCert bodySize bodyHash - bHeader = mkBHeader pKeys kesPeriod keyRegKesPeriod bhBody - in Block bHeader txseq - --- | Create a block with a faked VRF result. -mkBlockFakeVRF :: - forall era r. - ( EraSegWits era - , VRF.Signable (VRF (EraCrypto era)) (WithResult Seed) - , KES.Signable (KES (EraCrypto era)) (BHBody (EraCrypto era)) - ) => - -- | Hash of previous block - HashHeader (EraCrypto era) -> - -- | All keys in the stake pool - AllIssuerKeys (EraCrypto era) r -> - -- | Transactions to record - [Tx era] -> - -- | Current slot - SlotNo -> - -- | Block number\/chain length\/chain "difficulty" - BlockNo -> - -- | EpochNo nonce - Nonce -> - -- | Block nonce - NatNonce -> - -- | Praos leader value - UnitInterval -> - -- | Period of KES (key evolving signature scheme) - Word -> - -- | KES period of key registration - Word -> - -- | Operational certificate - OCert (EraCrypto era) -> - Block (BHeader (EraCrypto era)) era -mkBlockFakeVRF prev pKeys txns slotNo blockNo enonce bnonce l kesPeriod keyRegKesPeriod oCert = - let protVer = ProtVer (eraProtVerHigh @era) 0 - txSeq = toTxSeq @era (StrictSeq.fromList txns) - bodySize = fromIntegral $ bBodySize protVer txSeq - bodyHash = hashTxSeq txSeq - bhBody = - mkBHBodyFakeVRF bnonce l protVer prev pKeys slotNo blockNo enonce oCert bodySize bodyHash - bHeader = mkBHeader pKeys kesPeriod keyRegKesPeriod bhBody - in Block bHeader txSeq diff --git a/libs/constrained-generators/bench/Main.hs b/libs/constrained-generators/bench/Main.hs deleted file mode 100644 index 169711002aa..00000000000 --- a/libs/constrained-generators/bench/Main.hs +++ /dev/null @@ -1,7 +0,0 @@ -module Main where - -import Constrained.Bench -import Criterion.Main (defaultMain) - -main :: IO () -main = defaultMain [benchmarks] diff --git a/libs/constrained-generators/constrained-generators.cabal b/libs/constrained-generators/constrained-generators.cabal deleted file mode 100644 index 81bb18307d8..00000000000 --- a/libs/constrained-generators/constrained-generators.cabal +++ /dev/null @@ -1,87 +0,0 @@ -cabal-version: 3.0 -name: constrained-generators -version: 0.2.0.0 -license: Apache-2.0 -maintainer: operations@iohk.io -author: IOHK -synopsis: - Framework for generating constrained random data using - a subset of first order logic - -build-type: Simple -extra-source-files: CHANGELOG.md - -source-repository head - type: git - location: https://github.com/input-output-hk/cardano-ledger - subdir: libs/constrained-generators - -library - exposed-modules: - Constrained - Constrained.Base - Constrained.Core - Constrained.Env - Constrained.Instances - Constrained.Spec - Constrained.List - Constrained.GenT - Constrained.Univ - Constrained.Graph - Constrained.Spec.Generics - Constrained.Spec.Pairs - Constrained.Spec.Maps - Constrained.Spec.Tree - Constrained.Test - Constrained.Internals - Constrained.Bench - - hs-source-dirs: src - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints - -Wunused-packages - - build-depends: - base >=4.14 && <4.20, - containers, - mtl, - prettyprinter, - QuickCheck, - random, - tasty, - tasty-quickcheck, - ghc-prim, - deepseq, - criterion - -test-suite constrained - type: exitcode-stdio-1.0 - main-is: Tests.hs - hs-source-dirs: test - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints - -Wunused-packages -rtsopts -threaded - - build-depends: - base, - constrained-generators, - tasty - -benchmark bench - type: exitcode-stdio-1.0 - main-is: Main.hs - hs-source-dirs: bench - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints - -Wunused-packages -threaded -rtsopts -O2 - - build-depends: - base, - criterion, - constrained-generators diff --git a/libs/constrained-generators/src/Constrained.hs b/libs/constrained-generators/src/Constrained.hs deleted file mode 100644 index 4c810e1ae63..00000000000 --- a/libs/constrained-generators/src/Constrained.hs +++ /dev/null @@ -1,125 +0,0 @@ -{-# LANGUAGE ImportQualifiedPost #-} -{-# LANGUAGE PatternSynonyms #-} - --- | This module exports the user-facing interface for the library. --- It is supposed to contain everything you need to write constraints --- and implement `HasSpec` and `HasSimpleRep` instances. -module Constrained ( - Spec (..), -- TODO: it would be nice not to expose this whole thing - Pred (..), -- TODO: it would be nice not to expose this whole thing - Term, - Binder (..), -- TODO: it would be nice not to expose this whole thing - HasSpec (..), - HasSimpleRep (..), - NumLike (..), - OrdLike (..), - Forallable (..), - Foldy (..), - MaybeBounded (..), - FunctionLike (..), - Functions (..), - HOLE (..), - BaseUniverse, - Member, - BaseFn, - BaseFns, - Fix, - OneofL, - IsPred, - IsNormalType, - Value (..), - SOP, - (:::), - MapFn, - FunFn, - -- TODO: it would be nice not to have to expose these - PairSpec (..), - NumSpec (..), - MapSpec (..), - FoldSpec (..), - genFromSpec, - genFromSpec_, - genFromSpecWithSeed, - shrinkWithSpec, - conformsToSpec, - conformsToSpecProp, - giveHint, - typeSpec, - con, - isCon, - onCon, - sel, - caseBoolSpec, - constrained, - constrained', - satisfies, - letBind, - match, - assert, - assertExplain, - caseOn, - branch, - ifElse, - onJust, - isJust, - reify, - reify', - genHint, - dependsOn, - forAll, - forAll', - exists, - unsafeExists, - fst_, - snd_, - pair_, - (<=.), - (<.), - (==.), - (/=.), - (||.), - member_, - subset_, - disjoint_, - singleton_, - elem_, - not_, - foldMap_, - sum_, - size_, - rng_, - dom_, - left_, - right_, - toGeneric_, - fromGeneric_, - injectFn, - app, - lit, - -- Working with number-like types - emptyNumSpec, - combineNumSpec, - genFromNumSpec, - shrinkWithNumSpec, - conformsToNumSpec, - toPredsNumSpec, - -- TODO: this is super yucky, it would be good to implement - -- the linear lambda thing to get rid of this. - composeFn, - fstFn, - sndFn, - addFn, - toGenericFn, - toSimpleRepSpec, - fromSimpleRepSpec, - algebra, - inject, - toPred, - module X, -) -where - -import Constrained.GenT as X -import Constrained.Internals -import Constrained.List as X -import Constrained.Spec.Tree as X diff --git a/libs/constrained-generators/src/Constrained/Base.hs b/libs/constrained-generators/src/Constrained/Base.hs deleted file mode 100644 index 0d05c02d890..00000000000 --- a/libs/constrained-generators/src/Constrained/Base.hs +++ /dev/null @@ -1,4236 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE CPP #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DefaultSignatures #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE FunctionalDependencies #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE ImportQualifiedPost #-} -{-# LANGUAGE ImpredicativeTypes #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE QuantifiedConstraints #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TupleSections #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE ViewPatterns #-} -{-# OPTIONS_GHC -Wno-name-shadowing #-} -{-# OPTIONS_GHC -Wno-orphans #-} -{-# OPTIONS_GHC -Wno-redundant-constraints #-} - --- The pattern completeness checker is much weaker before ghc-9.0. Rather than introducing redundant --- cases and turning off the overlap check in newer ghc versions we disable the check for old --- versions. -#if __GLASGOW_HASKELL__ < 900 -{-# OPTIONS_GHC -Wno-incomplete-patterns #-} -#endif - --- | This module contains most of the implementation --- of the framework. --- --- NOTE: This is a very big module. Splitting it up would --- be a nice thing to do but it's not very easy. The problem --- is that a lot of the things in here depend on each other --- via a cycle like `Pred` depends on `Term` which depend on --- `HasSpec` which depends on `Spec` and `Generic` and `Spec` --- depends in turn on `Pred` and so on. -module Constrained.Base where - -import Control.Applicative -import Control.Arrow (first) -import Control.Monad -import Control.Monad.Identity -import Control.Monad.Writer (Writer, runWriter, tell) -import Data.Foldable -import Data.Kind -import Data.List (intersect, nub, partition, (\\)) -import Data.Map (Map) -import Data.Map qualified as Map -import Data.Maybe -import Data.Monoid qualified as Monoid -import Data.Semigroup (Any (..), Max (..), getAll, getMax) -import Data.Semigroup qualified as Semigroup -import Data.Set (Set) -import Data.Set qualified as Set -import Data.String -import Data.Typeable -import Data.Word -import GHC.Generics -import GHC.Int -import GHC.Natural -import GHC.Real -import GHC.Stack -import GHC.TypeLits -import Prettyprinter -import System.Random -import System.Random.Stateful -import Test.QuickCheck hiding (Args, Fun, forAll) -import Test.QuickCheck.Gen -import Test.QuickCheck.Random - -import Constrained.Core -import Constrained.Env -import Constrained.GenT -import Constrained.Graph hiding (dependency, irreflexiveDependencyOn, noDependencies) -import Constrained.Graph qualified as Graph -import Constrained.List -import Constrained.Univ - -{- NOTE [High level overview of generation from predicates]: - --- The overall strategy --------------------------------------------------- - -The strategy for generating things from `Pred`s is relatively straightforward -and relies on one key fact: any constraint that has only one free variable `x` -and where `x` occurs only once can be turned into a `Spec` for `x`. - -We say that such constraints _define_ `x` and given a set of constraints `ps` -and a variable `x` we can split `ps` into the constraints that define `x` and -any constraints that don't. We can then generate a value from `x` by computing -a spec for each defining constraint in `ps` and using the `Semigroup` structure -of `Spec`s to combine them and give them to `genFromSpec`. Once we obtain a -value for `x` we can substitute this value in all other constraints and pick -another variable to solve. - -For example, given the following constraints on integers `x` and `y` - - x < 10 - 3 <= x - y < x - -we see that `x < 10` and `3 <= x` are defining constraints for `x` and there -are no definining constraints for `y`. We compute a `Spec` for `x` for each -constraint, in this case `x < 10` turns into something like `(-∞,10)` and -`3 <= x` turns into `[3, ∞)`. We combine the specs to form `[3, 10)` from which we -can generate a value, e.g. 4 (chosen by fair dice roll). We then substitute -`[x := 4]` in the remaining constraints and obtain `y < 4`, giving us a defining -constraint for `y`. - --- How to pick the variable order ----------------------------------------- - -At this point it should be relatively clear that the order we pick for the -variables matters a great deal. If we choose to generate `y` before `x` in our -example we will have no defining constraints for `y` and so we pick a value for -it freely. But that renders `x` unsolveable if `y > 9` - which will result in -the generator failing to generate a value (one could consider backtracking, but -that is very computationally expensive so _relying_ on it would probably not be -wise). - -Computing a good choice of variable order that leaves the least room for error -is obviously undecidable and difficult and we choose instead an explicit -syntax-directed variable order. Specifically, variable dependency in terms is -_left-to-right_, meaning that the variables in `x + y < z` will be solved in -the order `z -> y -> x`. On top of that there is a constraint `dependsOn y x` -that allows you to overwrite the order of two variables. Consequently, the -following constraints will be solved in the order `z -> x -> y`: - - x + y < z - y `dependsOn` x - -A consequence of this is that it is possible to form dependency loops by -specifying multiple constraints, e.g. in: - - x < y - y < x + 10 - -However, this situation can be addressed by the introduction of `dependsOn` to -settle the order. It is worth noting that the choice of order in `dependsOn` -is important as it affects the solveability of the constraints (as we saw -above). We leave the choice of `dependsOn` in the example below as an exercise -for the reader. - - x < y - y < x + 10 - 0 < x - ? `dependsOn` ? - --- The total definition requirement --------------------------------------- - -For the sake of efficiency we require that all constraints are dispatched as -definining constraints for a variable before we begin solving. We call this the -total definition requirement. This requirement is necessary because a set of -constraints with left over constraints are unlikely to be solveable. - -Consider the following example for `p :: (Int, Int)` - -fst p < snd p - -in which there is no defining constraint for `p`, which would lead us to -compute the spec `mempty` for `p` during solving - meaning we would pick an -arbitrary `p` that is irrespective of the constraints. This is problematic as -the probability of picking `p = (x, y)` such that `x < y` is roughly `1/2`, as -you add more constraints things get much worse. - -The principal problem above is that information that is present in the -constraints is lost, which would force us to rely on a `suchThat` approach to -generation - which will become very slow as constraint systems grow. - --- Let binders ------------------------------------------------------------ - -A solution to the total definition requirement is to introduce more variables. -We can rewrite the problematic `fst p < snd p` example below as: - -fst p = x -snd p = y -x < y - -The dependency graph for these constraints will be the following: - -x `dependsOn` y -p `dependsOn` x - -This configuration is solveable, one picks `y` first, then picks `x < y` -and finally constructs `p = (x, y)`. - -Note that (1) we introduced more variables than were initially in the -constraints - these need to be bound somewhere - and (2) the order of -`fst p = x` is important - `p` depends on `x` and not the other way -around. - -To do both of these things at the same time we introduce the `letBind` construct -to the language: - -letBind tm $ \ x -> preds - -Which is semantically equivalent to: - -exists $ \ x -> - tm == x - preds - --- Reify ---------------------------------------------------------------- - -Sometimes it's important to be able to perform complex calculations on data -to obtain values that further constrain later variables. For this purpose -the language contains the the `reify` construct: - -reify :: IsPred p fn - => Term fn a - -> (a -> b) - -> (Term fn b -> p) - -> Pred fn - -The important thing about `reify` is that because everything in the term -being reified needs to be solved before the body can be solved, all -variables in the body depend on the term being reified. - --} - ------------------------------------------------------------------------- --- Terms and Predicates ------------------------------------------------------------------------- - --- | Typed first order terms with function symbols from `fn`. -data Term (fn :: [Type] -> Type -> Type) a where - App :: - ( Typeable as - , TypeList as - , All (HasSpec fn) as - , HasSpec fn b - , BaseUniverse fn - ) => - fn as b -> - List (Term fn) as -> - Term fn b - Lit :: - Show a => - a -> - Term fn a - V :: - HasSpec fn a => - Var a -> - Term fn a - -instance HasSpec fn a => Eq (Term fn a) where - V x == V x' = x == x' - Lit a == Lit b = a == b - App (f :: fn as b) ts == App (f' :: fn as' b') ts' - | Just Refl <- eqT @as @as' - , f == f' = - mapListC @(HasSpec fn) (WithHasSpec @fn) ts - == mapListC @(HasSpec fn) (WithHasSpec @fn) ts' - _ == _ = False - --- NOTE: Fourmolu made me do this - it happily breaks the code unless you --- make this a standalone type synonym. -type HasSpecImpliesEq fn a f = HasSpec fn a => Eq (f a) :: Constraint -deriving instance HasSpecImpliesEq fn a f => Eq (WithHasSpec fn f a) - -instance (Ord a, HasSpec fn (Set a)) => Semigroup (Term fn (Set a)) where - (<>) = app unionFn - -instance (Ord a, HasSpec fn (Set a)) => Monoid (Term fn (Set a)) where - mempty = Lit mempty - -data Binder fn a where - (:->) :: - HasSpec fn a => - Var a -> - Pred fn -> - Binder fn a - -deriving instance Show (Binder fn a) - -data Pred (fn :: [Type] -> Type -> Type) where - Block :: - [Pred fn] -> - Pred fn - Exists :: - -- | Constructive recovery function for checking - -- existential quantification - ((forall b. Term fn b -> b) -> GE a) -> - Binder fn a -> - Pred fn - Subst :: - HasSpec fn a => - Var a -> - Term fn a -> - Pred fn -> - Pred fn - Let :: - Term fn a -> - Binder fn a -> - Pred fn - Assert :: - BaseUniverse fn => - [String] -> - Term fn Bool -> - Pred fn - Reify :: - ( HasSpec fn a - , HasSpec fn b - ) => - Term fn a -> - -- | Recover a useable value from the `a` term. - (a -> b) -> - -- | Everything in here depends on the `a` term. - Binder fn b -> - Pred fn - DependsOn :: - ( HasSpec fn a - , HasSpec fn b - ) => - Term fn a -> - Term fn b -> - Pred fn - ForAll :: - ( Forallable t a - , HasSpec fn t - , HasSpec fn a - ) => - Term fn t -> - Binder fn a -> - Pred fn - Case :: - HasSpec fn (SumOver as) => - Term fn (SumOver as) -> - -- | Each branch of the type is bound with - -- only one variable because `as` are types. - -- Constructors with multiple arguments are - -- encoded with `ProdOver` (c.f. `Constrained.Univ`). - List (Binder fn) as -> - Pred fn - GenHint :: - HasGenHint fn a => - Hint a -> - Term fn a -> - Pred fn - TruePred :: Pred fn - FalsePred :: [String] -> Pred fn - -instance BaseUniverse fn => Semigroup (Pred fn) where - FalsePred es <> _ = FalsePred es - _ <> FalsePred es = FalsePred es - TruePred <> p = p - p <> TruePred = p - p <> p' = Block (unpackPred p ++ unpackPred p') - where - unpackPred (Block ps) = ps - unpackPred p = [p] - -instance BaseUniverse fn => Monoid (Pred fn) where - mempty = TruePred - --- | Contexts for Terms, basically a term with a _single_ HOLE --- instead of a variable. This is used to traverse the defining --- constraints for a variable and turn them into a spec. Each --- subterm `f vs Ctx vs'` for lists of values `vs` and `vs'` --- gets given to the `propagateSpecFun` for `f` as --- `f vs HOLE vs'`. -data Ctx (fn :: [Type] -> Type -> Type) v a where - -- | A single hole of type `v` - CtxHOLE :: - HasSpec fn v => - Ctx fn v v - -- | The application `f vs Ctx vs'` - CtxApp :: - ( HasSpec fn b - , TypeList as - , Typeable as - , All (HasSpec fn) as - ) => - fn as b -> - -- This is basically a `List` where - -- everything is `Value` except for - -- one entry which is `Ctx fn v`. - ListCtx Value as (Ctx fn v) -> - Ctx fn v b - --- | This is used together with `ListCtx` to form --- just the arguments to `f vs Ctx vs'` - replacing --- `Ctx` with `HOLE` - to provide to `propagateSpecFun`. -data HOLE a b where - HOLE :: HOLE a a - -toCtx :: - forall m fn v a. - ( BaseUniverse fn - , Typeable v - , MonadGenError m - , HasCallStack - ) => - Var v -> - Term fn a -> - m (Ctx fn v a) -toCtx v = go -- . simplifyTerm - where - go :: forall b. Term fn b -> m (Ctx fn v b) - go (Lit i) = fatalError ["toCtx (Lit " ++ show i ++ ")"] - go (App f as) = CtxApp f <$> toCtxList v as - go (V v') - | Just Refl <- eqVar v v' = pure $ CtxHOLE - | otherwise = fatalError ["toCtx " ++ show v ++ " (V " ++ show v' ++ ")"] - -toCtxList :: - forall m fn v as. - (BaseUniverse fn, Typeable v, MonadGenError m, HasCallStack) => - Var v -> - List (Term fn) as -> - m (ListCtx Value as (Ctx fn v)) -toCtxList v = prefix - where - prefix :: forall as'. HasCallStack => List (Term fn) as' -> m (ListCtx Value as' (Ctx fn v)) - prefix Nil = fatalError ["toCtxList without hole"] - prefix (Lit l :> ts) = do - ctx <- prefix ts - pure $ Value l :! ctx - prefix (t :> ts) = do - hole <- toCtx v t - suf <- suffix ts - pure $ hole :? suf - - suffix :: forall as'. List (Term fn) as' -> m (List Value as') - suffix Nil = pure Nil - suffix (Lit l :> ts) = (Value l :>) <$> suffix ts - suffix (_ :> _) = fatalError ["toCtxList with too many holes"] - ------------------------------------------------------------------------- --- Semantics of `Term` and `Pred` ------------------------------------------------------------------------- - -runTerm :: MonadGenError m => Env -> Term fn a -> m a -runTerm env = \case - Lit a -> pure a - V v -> findEnv env v - App f ts -> do - vs <- mapMList (fmap Identity . runTerm env) ts - pure $ uncurryList_ runIdentity (sem f) vs - -checkPred :: forall fn m. (FunctionLike fn, MonadGenError m) => Env -> Pred fn -> m Bool -checkPred env = \case - Subst x t p -> checkPred env $ substitutePred x t p - Assert [] t -> runTerm env t - Assert es t -> explain ("assert:" : map (" " ++) es) $ runTerm env t - GenHint {} -> pure True - Reify t f (x :-> p) -> do - val <- runTerm env t - checkPred (extendEnv x (f val) env) p - ForAll t (x :-> p) -> do - set <- runTerm env t - and - <$> sequence - [ checkPred env' p - | v <- forAllToList set - , let env' = extendEnv x v env - ] - Case t bs -> do - v <- runTerm env t - runCaseOn v bs (\x val ps -> checkPred (extendEnv x val env) ps) - TruePred -> pure True - FalsePred es -> explain es $ pure False - DependsOn {} -> pure True - Block ps -> checkPreds env ps - Let t (x :-> p) -> do - val <- runTerm env t - checkPred (extendEnv x val env) p - Exists k (x :-> p) -> do - a <- runGE $ k (errorGE . explain ["checkPred: Exists"] . runTerm env) - checkPred (extendEnv x a env) p - -checkPreds :: (MonadGenError m, Traversable t, FunctionLike fn) => Env -> t (Pred fn) -> m Bool -checkPreds env ps = and <$> mapM (checkPred env) ps - -checkPredPure :: FunctionLike fn => Env -> Pred fn -> Bool -checkPredPure env p = fromGE (const False) $ checkPred env p - -runCaseOn :: - SumOver as -> - List (Binder fn) as -> - (forall a. HasSpec fn a => Var a -> a -> Pred fn -> r) -> - r -runCaseOn _ Nil _ = error "The impossible happened in runCaseOn" -runCaseOn a ((x :-> ps) :> Nil) f = f x a ps -runCaseOn s ((x :-> ps) :> bs@(_ :> _)) f = case s of - SumLeft a -> f x a ps - SumRight a -> runCaseOn a bs f - ------------------------------------------------------------------------- --- Specs ------------------------------------------------------------------------- - --- NOTE: in the future one might consider using sets when a type --- has `Ord` here. Beware, this means that one needs to have a check --- for instances of Ord at runtime! -type OrdSet a = [a] - --- | A `Spec fn a` denotes a set of `a`s -data Spec fn a where - -- | Elements of a known set - MemberSpec :: - -- | It must be an element of this set - OrdSet a -> - Spec fn a - -- | The empty set - ErrorSpec :: - [String] -> - Spec fn a - -- | The set described by some predicates - -- over the bound variable. - -- - -- TODO: possibly we want to use a `Binder` here - SuspendedSpec :: - HasSpec fn a => - -- | This variable ranges over values denoted by - -- the spec - Var a -> - -- | And the variable is subject to these constraints - Pred fn -> - Spec fn a - -- | A type-specific spec - TypeSpec :: - HasSpec fn a => - TypeSpec fn a -> - -- | It can't be any of the elements of this set - OrdSet a -> - Spec fn a - -- | Anything - TrueSpec :: Spec fn a - -instance HasSpec fn a => Semigroup (Spec fn a) where - TrueSpec <> s = s - s <> TrueSpec = s - ErrorSpec e <> ErrorSpec e' = ErrorSpec (e ++ "" : (replicate 20 '-') : "" : e') - ErrorSpec e <> _ = ErrorSpec e - _ <> ErrorSpec e = ErrorSpec e - MemberSpec [a] <> spec - | a `conformsToSpec` spec = MemberSpec [a] - | otherwise = ErrorSpec [show a, "does not conform to", show spec] - spec <> MemberSpec [a] = MemberSpec [a] <> spec - MemberSpec as <> MemberSpec as' = MemberSpec $ intersect as as' - MemberSpec as <> TypeSpec s cant = - MemberSpec $ - filter - (flip (conformsTo @fn) s) - (filter (`notElem` cant) as) - TypeSpec s cant <> MemberSpec as = MemberSpec as <> TypeSpec s cant - SuspendedSpec v p <> SuspendedSpec v' p' = SuspendedSpec v (p <> rename v' v p') - SuspendedSpec v ps <> s = SuspendedSpec v (ps <> satisfies (V v) s) - s <> SuspendedSpec v ps = SuspendedSpec v (ps <> satisfies (V v) s) - TypeSpec s cant <> TypeSpec s' cant' = case combineSpec s s' of - -- NOTE: This might look like an unnecessary case, but doing - -- it like this avoids looping. - TypeSpec s'' cant'' -> TypeSpec s'' (cant <> cant' <> cant'') - s'' -> s'' <> notMemberSpec (cant <> cant') - -instance HasSpec fn a => Monoid (Spec fn a) where - mempty = TrueSpec - -equalSpec :: a -> Spec fn a -equalSpec = MemberSpec . pure - -notEqualSpec :: forall fn a. HasSpec fn a => a -> Spec fn a -notEqualSpec = TypeSpec (emptySpec @fn @a) . pure - -notMemberSpec :: forall fn a f. (HasSpec fn a, Foldable f) => f a -> Spec fn a -notMemberSpec = typeSpecOpt (emptySpec @fn @a) . toList - -typeSpec :: HasSpec fn a => TypeSpec fn a -> Spec fn a -typeSpec ts = TypeSpec ts mempty - --- The HasSpec Class ------------------------------------------------------ - --- | This class provides the interface that allows you to extend the language --- to handle a new type. In the case of types that have a generic representation --- (via `HasSimpleRep`) that already has an instance of `HasSpec` it is sufficient --- to provide an empty instance. However, for types that are used together with --- specific functions in the function universe `fn` it may be necessary to provide --- a specific implementation of `HasSpec`. This is typically necessary when the `TypeSpec` --- for the generic representation does not permit an implementation of `propagateSpecFun` --- for some function. --- --- The basic types provided in the language, `Set`, `[]`, `Map`, `Int`, `Word64`, --- `(,)`, `Either`, etc. have instances of this class (technically `(,)` and `Either` have --- instances derived from the instances for their generic `Prod` and `Sum` implementations). -class - ( Typeable a - , Eq a - , Show a - , Show (TypeSpec fn a) - , BaseUniverse fn - ) => - HasSpec fn a - where - -- | The `TypeSpec fn a` is the type-specific `Spec fn a`. - type TypeSpec (fn :: [Type] -> Type -> Type) a - - type TypeSpec fn a = TypeSpec fn (SimpleRep a) - - -- `TypeSpec` behaves sort-of like a monoid with a neutral - -- enement `emptySpec` and a `combineSpec` for combining - -- two `TypeSpec fn a`. However, in order to provide flexibilty - -- `combineSpec` takes two `TypeSpec` and provide a `Spec`. This - -- avoids e.g. having to have a separate implementation of `ErrorSpec` - -- and `MemberSpec` in `TypeSpec`. - - emptySpec :: TypeSpec fn a - combineSpec :: TypeSpec fn a -> TypeSpec fn a -> Spec fn a - - -- | Generate a value that satisfies the `TypeSpec`. - -- The key property for this generator is soundness: - -- ∀ a ∈ genFromTypeSpec spec. a `conformsTo` spec - genFromTypeSpec :: (HasCallStack, MonadGenError m) => TypeSpec fn a -> GenT m a - - -- | Check conformance to the spec. - conformsTo :: HasCallStack => a -> TypeSpec fn a -> Bool - - -- | Shrink an `a` with the aide of a `TypeSpec` - shrinkWithTypeSpec :: TypeSpec fn a -> a -> [a] - - -- | Convert a spec to predicates: - -- The key property here is: - -- ∀ a. a `conformsTo` spec == a `conformsTo` constrained (\t -> toPreds t spec) - toPreds :: Term fn a -> TypeSpec fn a -> Pred fn - - -- | Compute an upper and lower bound on the number of solutions genFromTypeSpec might return - cardinalTypeSpec :: TypeSpec fn a -> Spec fn Integer - cardinalTypeSpec _ = TrueSpec - - -- | A bound on the number of solutions `genFromTypeSpec TrueSpec` can produce. - -- For a type with finite elements, we can get a much more accurate - -- answer than TrueSpec - cardinalTrueSpec :: Spec fn Integer - cardinalTrueSpec = TrueSpec - - -- | For some types (especially finite ones) there may be much better ways to construct - -- a Spec than the default method of just adding a large 'bad' list to TypSpec. This - -- function allows each HasSpec instance to decide. - typeSpecOpt :: TypeSpec fn a -> [a] -> Spec fn a - typeSpecOpt tySpec bad = TypeSpec tySpec bad - - -- | Prerequisites for the instance that are sometimes necessary - -- when working with e.g. `Spec`s or functions in the universe. - type Prerequisites fn a :: Constraint - - type Prerequisites fn a = () - - -- | Materialize the `Prerequisites` dictionary. It should not be necessary to - -- implement this function manually. - prerequisites :: Evidence (Prerequisites fn a) - default prerequisites :: Prerequisites fn a => Evidence (Prerequisites fn a) - prerequisites = Evidence - - {- NOTE: Below follows default implementations for the the functions in this - class. They are meant to provide an implementation of `HasSpec fn a` when - `HasSimpleRep a` and `HasSpec fn (SimpleRep a)`. For example, for a - newtype wrapper like `newtype Foo = Foo Word64` we can define `SimpleRep - Foo = Word64` with the requisite instance for `HasSimpleRep` (all of which - is derived from `Generic Foo`) and the instance for `HasSpec fn Foo` is - essentially the same as the instance for `Word64`. This is achieved by - ensuring that `TypeSpec fn Foo = TypeSpec fn Word64` (c.f. the default - implementation of `TypeSpec` above). To this end, the implementations - below simply convert the relevant things between `SimpleRep a` and `a`. - For example, in the implementation of `combineSpec s s'` we treat `s` and - `s'` (which have type `TypeSpec fn a`) as `TypeSpec fn (SimpleRep a)`, - combine them, and go from the resulting `Spec fn (SimpleRep a)` to `Spec - fn a` using `fromSimpleRepSpec`. - -} - - default emptySpec :: - (HasSpec fn (SimpleRep a), TypeSpec fn a ~ TypeSpec fn (SimpleRep a)) => TypeSpec fn a - emptySpec = emptySpec @fn @(SimpleRep a) - - default combineSpec :: - ( HasSimpleRep a - , HasSpec fn (SimpleRep a) - , TypeSpec fn a ~ TypeSpec fn (SimpleRep a) - ) => - TypeSpec fn a -> - TypeSpec fn a -> - Spec fn a - combineSpec s s' = fromSimpleRepSpec $ combineSpec @fn @(SimpleRep a) s s' - - default genFromTypeSpec :: - ( HasSimpleRep a - , HasSpec fn (SimpleRep a) - , TypeSpec fn a ~ TypeSpec fn (SimpleRep a) - ) => - (HasCallStack, MonadGenError m) => - TypeSpec fn a -> - GenT m a - genFromTypeSpec s = fromSimpleRep <$> genFromTypeSpec @fn s - - default conformsTo :: - ( HasSimpleRep a - , HasSpec fn (SimpleRep a) - , TypeSpec fn a ~ TypeSpec fn (SimpleRep a) - ) => - HasCallStack => - a -> - TypeSpec fn a -> - Bool - a `conformsTo` s = conformsTo @fn (toSimpleRep a) s - - default toPreds :: - ( HasSpec fn (SimpleRep a) - , TypeSpec fn a ~ TypeSpec fn (SimpleRep a) - , HasSimpleRep a - ) => - Term fn a -> - TypeSpec fn a -> - Pred fn - toPreds v s = toPreds (toGeneric_ v) s - - default shrinkWithTypeSpec :: - ( HasSpec fn (SimpleRep a) - , TypeSpec fn a ~ TypeSpec fn (SimpleRep a) - , HasSimpleRep a - ) => - TypeSpec fn a -> - a -> - [a] - shrinkWithTypeSpec spec a = map fromSimpleRep $ shrinkWithTypeSpec @fn spec (toSimpleRep a) - -data WithHasSpec fn f a where - WithHasSpec :: HasSpec fn a => f a -> WithHasSpec fn f a - --- The Forallable class --------------------------------------------------- - -class Forallable t e | t -> e where - forAllSpec :: (HasSpec fn t, HasSpec fn e, BaseUniverse fn) => Spec fn e -> Spec fn t - default forAllSpec :: - ( HasSpec fn t - , HasSpec fn e - , HasSimpleRep t - , TypeSpec fn t ~ TypeSpec fn (SimpleRep t) - , Forallable (SimpleRep t) e - , HasSpec fn (SimpleRep t) - ) => - Spec fn e -> - Spec fn t - forAllSpec es = fromSimpleRepSpec $ forAllSpec @(SimpleRep t) @e es - - forAllToList :: t -> [e] - default forAllToList :: - ( HasSimpleRep t - , Forallable (SimpleRep t) e - ) => - t -> - [e] - forAllToList t = forAllToList (toSimpleRep t) - --- The HasGenHint class --------------------------------------------------- - --- | Hints are things that only affect generation, and not validation. For instance, parameters to --- control distribution of generated values. -class (HasSpec fn a, Show (Hint a)) => HasGenHint fn a where - type Hint a - giveHint :: Hint a -> Spec fn a - --- Semantics of specs ----------------------------------------------------- - -conformsToSpecM :: - forall fn a m. (HasSpec fn a, MonadGenError m, Alternative m) => a -> Spec fn a -> m () -conformsToSpecM _ TrueSpec = pure () -conformsToSpecM a (MemberSpec as) = explain [show a ++ " not an element of " ++ show as] $ guard $ elem a as -conformsToSpecM a (TypeSpec s cant) = guard $ notElem a cant && conformsTo @fn a s -conformsToSpecM a (SuspendedSpec v ps) = guard =<< checkPred (singletonEnv v a) ps -conformsToSpecM _ (ErrorSpec es) = explain es $ guard False - -conformsToSpecProp :: forall fn a. HasSpec fn a => a -> Spec fn a -> Property -conformsToSpecProp a s = fromGEProp $ conformsToSpecM a s - -conformsToSpec :: forall fn a. HasSpec fn a => a -> Spec fn a -> Bool -conformsToSpec a s = isOk $ conformsToSpecM a s - -satisfies :: forall fn a. HasSpec fn a => Term fn a -> Spec fn a -> Pred fn -satisfies _ TrueSpec = TruePred -satisfies e (MemberSpec as) = Assert [show e ++ " `elem` " ++ show as] $ elem_ e (Lit as) -satisfies t (SuspendedSpec x p) = Subst x t p -satisfies e (TypeSpec s cant) - | null cant = toPreds e s - | otherwise = - Assert [show e ++ " `notElem` " ++ show cant] (not_ (elem_ e $ Lit cant)) <> toPreds e s -satisfies _ (ErrorSpec e) = FalsePred e - ------------------------------------------------------------------------- --- Generating things ------------------------------------------------------------------------- - --- Generating things from specs ------------------------------------------- - --- | Generate a value that satisfies the spec. This function can fail if the --- spec is inconsistent, there is a dependency error, or if the underlying --- generators are not flexible enough. -genFromSpec :: forall fn a m. (HasCallStack, HasSpec fn a, MonadGenError m) => Spec fn a -> GenT m a -genFromSpec TrueSpec = genFromSpec @fn (typeSpec $ emptySpec @fn @a) -genFromSpec spec@(MemberSpec as) - | null as = genError ["MemberSpec {}"] - | otherwise = explain ["genFromSpec " ++ show spec] $ pureGen (elements as) -genFromSpec (SuspendedSpec x p) = do - env <- genFromPreds p - findEnv env x -genFromSpec ts@(TypeSpec s cant) = - explain ["", "genFromSpec", " " ++ show (typeRep cant), " " ++ show ts] $ - -- TODO: we could consider giving `cant` as an argument to `genFromTypeSpec` if this - -- starts giving us trouble. - genFromTypeSpec @fn s `suchThatT` (`notElem` cant) -genFromSpec (ErrorSpec e) = genError e - -shrinkWithSpec :: forall fn a. HasSpec fn a => Spec fn a -> a -> [a] --- TODO: possibly allow for ignoring the `conformsToSpec` check in the `TypeSpec` --- case when you know what you're doing -shrinkWithSpec spec a = filter (`conformsToSpec` spec) $ case spec of - -- TODO: filter on can't if we have a known to be sound shrinker - TypeSpec s _ -> shrinkWithTypeSpec @fn s a - -- TODO: The better way of doing this is to compute the dependency graph, - -- shrink one variable at a time, and fixup the rest of the variables - SuspendedSpec {} -> shr a - MemberSpec {} -> shr a - TrueSpec -> shr a - ErrorSpec {} -> [] - where - shr = shrinkWithTypeSpec @fn (emptySpec @fn @a) - --- | A version of `genFromSpec` that simply errors if the generator fails -genFromSpec_ :: forall fn a. (HasCallStack, HasSpec fn a) => Spec fn a -> Gen a -genFromSpec_ spec = do - res <- strictGen $ genFromSpec spec - errorGE $ fmap pure res - --- | A version of `genFromSpec` that takes a seed and a size and gives you a result -genFromSpecWithSeed :: forall fn a. (HasCallStack, HasSpec fn a) => Int -> Int -> Spec fn a -> a -genFromSpecWithSeed seed size spec = unGen (genFromSpec_ spec) (mkQCGen seed) size - -genInverse :: - ( MonadGenError m - , HasSpec fn a - , Show b - , Functions fn fn - ) => - fn '[a] b -> - Spec fn a -> - b -> - GenT m a -genInverse f argS x = - let argSpec' = argS <> propagateSpecFun f (NilCtx HOLE) (equalSpec x) - in explain - [ "genInverse" - , " f = " ++ show f - , show $ " argS =" <+> pretty argS - , " x = " ++ show x - , show $ " argSpec' =" <+> pretty argSpec' - ] - $ genFromSpec argSpec' - --- Generating things from predicates -------------------------------------- - --- | Flatten nested `Let`, `Exists`, and `Block` in a `Pred fn`. `Let` and --- `Exists` bound variables become free in the result. -flattenPred :: forall fn. BaseUniverse fn => Pred fn -> [Pred fn] -flattenPred pIn = go (freeVarNames pIn) [pIn] - where - go _ [] = [] - go fvs (p : ps) = case p of - Block ps' -> go fvs (ps' ++ ps) - -- NOTE: the order of the arguments to `==.` here are important. - -- The whole point of `Let` is that it allows us to solve all of `t` - -- before we solve the variables in `t`. - Let t b -> goBinder fvs b ps (\x -> (assert (t ==. V x) :)) - Exists _ b -> goBinder fvs b ps (const id) - _ -> p : go fvs ps - - goBinder :: - Set Int -> - Binder fn a -> - [Pred fn] -> - (HasSpec fn a => Var a -> [Pred fn] -> [Pred fn]) -> - [Pred fn] - goBinder fvs (x :-> p) ps k = k x' $ go (Set.insert (nameOf x') fvs) (p' : ps) - where - (x', p') = freshen x p fvs - -computeDependencies :: Pred fn -> DependGraph fn -computeDependencies = \case - Subst x t p -> computeDependencies (substitutePred x t p) - Assert _ t -> computeTermDependencies t - Reify t _ b -> - let innerG = computeBinderDependencies b - in innerG <> nodes innerG `irreflexiveDependencyOn` t - ForAll set b -> - let innerG = computeBinderDependencies b - in innerG <> set `irreflexiveDependencyOn` nodes innerG - x `DependsOn` y -> x `irreflexiveDependencyOn` y - Case t bs -> - let innerG = foldMapList (computeBinderDependencies) bs - in innerG <> t `irreflexiveDependencyOn` nodes innerG - TruePred -> mempty - FalsePred {} -> mempty - Block ps -> foldMap computeDependencies ps - Exists _ b -> computeBinderDependencies b - Let t b -> noDependencies t <> computeBinderDependencies b - GenHint _ t -> noDependencies t - --- | Linearize a predicate, turning it into a list of variables to solve and --- their defining constraints such that each variable can be solved independently. -prepareLinearization :: BaseUniverse fn => Pred fn -> GE [(Name fn, [Pred fn])] -prepareLinearization p = do - let preds = flattenPred p - hints = computeHints preds - graph = transitiveClosure $ hints <> respecting hints (foldMap computeDependencies preds) - linearize preds graph - --- | Generate a satisfying `Env` for a `p : Pred fn`. The `Env` contains values for --- all the free variables in `flattenPred p`. -genFromPreds :: (MonadGenError m, BaseUniverse fn) => Pred fn -> GenT m Env -genFromPreds (optimisePred -> preds) = do - -- NOTE: this is just lazy enough that the work of flattening, computing dependencies, - -- and linearizing is memoized in properties that use `genFromPreds`. - linear <- runGE $ prepareLinearization preds - go mempty linear - where - go :: (MonadGenError m, BaseUniverse fn) => Env -> [(Name fn, [Pred fn])] -> GenT m Env - go env [] = pure env - go env ((Name v, ps) : nps) = do - let spec = foldMap (computeSpec v) (substPred env <$> ps) - val <- genFromSpec spec - go (extendEnv v val env) nps - --- TODO: here we can compute both the explicit hints (i.e. constraints that --- define the order of two variables) and any whole-program smarts. -computeHints :: forall fn. [Pred fn] -> Hints fn -computeHints ps = - transitiveClosure $ fold [x `irreflexiveDependencyOn` y | DependsOn x y <- ps] - -computeBinderDependencies :: Binder fn a -> DependGraph fn -computeBinderDependencies (x :-> p) = - deleteNode (Name x) $ computeDependencies p - -computeTermDependencies :: Term fn a -> DependGraph fn -computeTermDependencies = fst . computeTermDependencies' - -computeTermDependencies' :: Term fn a -> (DependGraph fn, Set (Name fn)) -computeTermDependencies' (App _ args) = go args - where - go :: List (Term fn) as -> (DependGraph fn, Set (Name fn)) - go Nil = (mempty, mempty) - go (t :> ts) = - let (gr, ngr) = go ts - (tgr, ntgr) = computeTermDependencies' t - in (ntgr `irreflexiveDependencyOn` ngr <> tgr <> gr, ngr <> ntgr) -computeTermDependencies' Lit {} = (mempty, mempty) -computeTermDependencies' (V x) = (noDependencies (Name x), Set.singleton (Name x)) - --- Consider: A + B = C + D --- We want to fail if A and B are independent. --- Consider: A + B = A + C, A <- B --- Here we want to consider this constraint defining for A -linearize :: - (MonadGenError m, BaseUniverse fn) => [Pred fn] -> DependGraph fn -> m [(Name fn, [Pred fn])] -linearize preds graph = do - sorted <- case topsort graph of - Left cycle -> fatalError ["dependency cycle in graph", show cycle, show graph] - Right sorted -> pure sorted - go sorted [(freeVarSet ps, ps) | ps <- filter isRelevantPred preds] - where - isRelevantPred TruePred = False - isRelevantPred DependsOn {} = False - isRelevantPred (Assert _ (Lit True)) = False - isRelevantPred _ = True - - go [] [] = pure [] - go [] ps - | null $ foldMap fst ps = do - res <- checkPreds mempty (map snd ps) - if res - then pure [] - else genError ["Linearize const False"] - | otherwise = - fatalError $ "Dependency error in `linearize`: " : show graph : map (mappend " " . show) ps - go (n : ns) ps = do - let (nps, ops) = partition (isLastVariable n . fst) ps - ((n, map snd nps) :) <$> go ns ops - - isLastVariable n set = n `Set.member` set && solvableFrom n (Set.delete n set) graph - ------------------------------------------------------------------------- --- Computing specs ------------------------------------------------------------------------- - --- | Precondition: the `Pred fn` defines the `Var a` -computeSpecSimplified :: forall fn a. (HasSpec fn a, HasCallStack) => Var a -> Pred fn -> Spec fn a -computeSpecSimplified x p = fromGE ErrorSpec $ case p of - GenHint h t -> propagateSpec (giveHint h) <$> toCtx x t -- NOTE: this implies you do need to actually propagate hints, e.g. propagate depth control in a `tail` or `cdr` like function - Subst x' t p' -> pure $ computeSpec x (substitutePred x' t p') -- NOTE: this is impossible as it should have gone away already - TruePred -> pure mempty - FalsePred es -> genError es - Block ps -> pure $ foldMap (computeSpecSimplified x) ps - Let t b -> pure $ SuspendedSpec x (Let t b) - Exists k b -> pure $ SuspendedSpec x (Exists k b) - Assert _ (Lit True) -> pure mempty - Assert es (Lit False) -> genError (es ++ ["Assert False"]) - Assert es t -> explain es $ propagateSpec (equalSpec True) <$> toCtx x t - ForAll (Lit s) b -> pure $ foldMap (\val -> computeSpec x $ unBind val b) (forAllToList s) - ForAll t b -> propagateSpec (forAllSpec $ computeSpecBinderSimplified b) <$> toCtx x t - Case (Lit val) bs -> pure $ runCaseOn val bs $ \va vaVal psa -> computeSpec x (substPred (singletonEnv va vaVal) psa) - Case t branches -> - let branchSpecs = mapList computeSpecBinderSimplified branches - in propagateSpec (caseSpec branchSpecs) <$> toCtx x t - Reify (Lit val) f (x' :-> p) -> - pure $ computeSpec x (substPred (singletonEnv x' (f val)) p) - -- Impossible cases that should be ruled out by the dependency analysis and linearizer - DependsOn {} -> fatalError ["The impossible happened in computeSpec: DependsOn"] - Reify {} -> fatalError ["The impossible happened in computeSpec: Reify", show x, show p] - --- | Precondition: the `Pred fn` defines the `Var a` -computeSpec :: forall fn a. (HasSpec fn a, HasCallStack) => Var a -> Pred fn -> Spec fn a -computeSpec x p = computeSpecSimplified x (simplifyPred p) - -computeSpecBinder :: Binder fn a -> Spec fn a -computeSpecBinder (x :-> p) = computeSpec x p - -computeSpecBinderSimplified :: Binder fn a -> Spec fn a -computeSpecBinderSimplified (x :-> p) = computeSpecSimplified x p - -caseSpec :: - forall fn as. - HasSpec fn (SumOver as) => - List (Spec fn) as -> - Spec fn (SumOver as) -caseSpec Nil = error "The impossible happened in caseSpec" -caseSpec (s :> Nil) = s -caseSpec (s :> ss@(_ :> _)) - | Evidence <- prerequisites @fn @(SumOver as) = typeSpec $ SumSpec s (caseSpec ss) - -propagateSpec :: - forall fn v a. - HasSpec fn v => - Spec fn a -> - Ctx fn v a -> - Spec fn v -propagateSpec spec = \case - CtxHOLE -> spec - CtxApp f (ListCtx pre c suf) - | Evidence <- ctxHasSpec c -> propagateSpec (propagateSpecFun f (ListCtx pre HOLE suf) spec) c - -ctxHasSpec :: Ctx fn v a -> Evidence (HasSpec fn a) -ctxHasSpec CtxHOLE = Evidence -ctxHasSpec CtxApp {} = Evidence - -class - ( forall as b. Show (f as b) - , forall as b. Eq (f as b) - , Typeable f - , FunctionLike f - ) => - Functions f fn - where - propagateSpecFun :: - ( TypeList as - , Typeable as - , HasSpec fn a - , All (HasSpec fn) as - ) => - f as b -> - ListCtx Value as (HOLE a) -> - Spec fn b -> - Spec fn a - - rewriteRules :: - ( TypeList as - , Typeable as - , HasSpec fn b - , All (HasSpec fn) as - ) => - f as b -> - List (Term fn) as -> - Maybe (Term fn b) - rewriteRules _ _ = Nothing - - mapTypeSpec :: - ( HasSpec fn a - , HasSpec fn b - ) => - f '[a] b -> - TypeSpec fn a -> - Spec fn b - -mapSpec :: - forall fn a b. - ( HasSpec fn a - , HasSpec fn b - ) => - fn '[a] b -> - Spec fn a -> - Spec fn b -mapSpec f TrueSpec = mapTypeSpec f (emptySpec @fn @a) -mapSpec _ (ErrorSpec err) = ErrorSpec err -mapSpec f (MemberSpec as) = MemberSpec $ map (sem f) as -mapSpec f (SuspendedSpec x p) = - constrained $ \x' -> - Exists (\_ -> fatalError ["mapSpec"]) (x :-> fold [assert $ x' ==. app f (V x), p]) -mapSpec f (TypeSpec ts cant) = mapTypeSpec f ts <> notMemberSpec (map (sem f) cant) - --- | If the `Spec fn Bool` doesn't constrain the boolean you will get a `TrueSpec` out. -caseBoolSpec :: HasSpec fn a => Spec fn Bool -> (Bool -> Spec fn a) -> Spec fn a -caseBoolSpec spec cont = case possibleValues spec of - [] -> ErrorSpec ["No possible values in caseBoolSpec"] - [b] -> cont b - _ -> mempty - where - possibleValues s = filter (flip conformsToSpec s) [True, False] - -isErrorLike :: Spec fn a -> Bool -isErrorLike ErrorSpec {} = True -isErrorLike (MemberSpec []) = True -isErrorLike _ = False - ------------------------------------------------------------------------- --- Dependency Graphs ------------------------------------------------------------------------- - -type DependGraph fn = Graph.Graph (Name fn) - -dependency :: HasVariables fn t => Name fn -> t -> DependGraph fn -dependency x (freeVarSet -> xs) = Graph.dependency x xs - -irreflexiveDependencyOn :: - forall fn t t'. (HasVariables fn t, HasVariables fn t') => t -> t' -> DependGraph fn -irreflexiveDependencyOn (freeVarSet -> xs) (freeVarSet -> ys) = Graph.irreflexiveDependencyOn xs ys - -noDependencies :: HasVariables fn t => t -> DependGraph fn -noDependencies (freeVarSet -> xs) = Graph.noDependencies xs - -type Hints fn = DependGraph fn - -respecting :: Hints f -> DependGraph f -> DependGraph f -respecting hints g = g `subtractGraph` opGraph hints - -solvableFrom :: Name f -> Set (Name f) -> DependGraph f -> Bool -solvableFrom x s g = - let less = dependencies x g - in s `Set.isSubsetOf` less && not (x `Set.member` less) - ------------------------------------------------------------------------- --- Free variables and variable names ------------------------------------------------------------------------- - -freeVarNames :: forall fn t. HasVariables fn t => t -> Set Int -freeVarNames = Set.mapMonotonic (\(Name v) -> nameOf v) . freeVarSet - -data Name fn where - Name :: HasSpec fn a => Var a -> Name fn - -deriving instance Show (Name fn) - -instance Eq (Name fn) where - Name (Var i) == Name (Var j) = i == j - -instance Ord (Name fn) where - compare (Name (Var i)) (Name (Var j)) = compare i j - -newtype FreeVars fn = FreeVars {unFreeVars :: Map (Name fn) Int} - deriving (Show) - -restrictedTo :: FreeVars fn -> Set (Name fn) -> FreeVars fn -restrictedTo (FreeVars m) nms = FreeVars $ Map.restrictKeys m nms - -memberOf :: Name fn -> FreeVars fn -> Bool -memberOf n (FreeVars m) = Map.member n m - -count :: Name fn -> FreeVars fn -> Int -count n (FreeVars m) = fromMaybe 0 $ Map.lookup n m - -instance Semigroup (FreeVars fn) where - FreeVars fv <> FreeVars fv' = FreeVars $ Map.unionWith (+) fv fv' - -instance Monoid (FreeVars fn) where - mempty = FreeVars mempty - -freeVar :: Name fn -> FreeVars fn -freeVar n = singleton n 1 - -singleton :: Name fn -> Int -> FreeVars fn -singleton n k = FreeVars $ Map.singleton n k - -without :: Foldable t => FreeVars fn -> t (Name fn) -> FreeVars fn -without (FreeVars m) remove = FreeVars $ foldr Map.delete m (toList remove) - -class HasVariables fn a | a -> fn where - freeVars :: a -> FreeVars fn - freeVarSet :: a -> Set (Name fn) - freeVarSet = Map.keysSet . unFreeVars . freeVars - countOf :: Name fn -> a -> Int - countOf n = count n . freeVars - appearsIn :: Name fn -> a -> Bool - appearsIn n = (> 0) . count n . freeVars - -instance (HasVariables f a, HasVariables f b) => HasVariables f (a, b) where - freeVars (a, b) = freeVars a <> freeVars b - freeVarSet (a, b) = freeVarSet a <> freeVarSet b - countOf n (a, b) = countOf n a + countOf n b - appearsIn n (a, b) = appearsIn n a || appearsIn n b - -instance HasVariables fn (List (Term fn) as) where - freeVars Nil = mempty - freeVars (x :> xs) = freeVars x <> freeVars xs - freeVarSet Nil = mempty - freeVarSet (x :> xs) = freeVarSet x <> freeVarSet xs - countOf _ Nil = 0 - countOf n (x :> xs) = countOf n x + countOf n xs - appearsIn _ Nil = False - appearsIn n (x :> xs) = appearsIn n x || appearsIn n xs - -instance HasVariables f (Name f) where - freeVars = freeVar - freeVarSet = Set.singleton - countOf n n' - | n == n' = 1 - | otherwise = 0 - appearsIn n n' = n == n' - -instance HasVariables fn (Term fn a) where - freeVars = \case - Lit {} -> mempty - V x -> freeVar (Name x) - App _ ts -> freeVars ts - freeVarSet = \case - Lit {} -> mempty - V x -> freeVarSet (Name x) - App _ ts -> freeVarSet ts - countOf n = \case - Lit {} -> 0 - V x -> countOf n (Name x) - App _ ts -> countOf n ts - appearsIn n = \case - Lit {} -> False - V x -> appearsIn n (Name x) - App _ ts -> appearsIn n ts - -instance HasVariables fn (Pred fn) where - freeVars = \case - GenHint _ t -> freeVars t - Subst x t p -> freeVars t <> freeVars p `without` [Name x] - Block ps -> foldMap freeVars ps - Let t b -> freeVars t <> freeVars b - Exists _ b -> freeVars b - Assert _ t -> freeVars t - Reify tm _ b -> freeVars tm <> freeVars b - DependsOn x y -> freeVars x <> freeVars y - ForAll set b -> freeVars set <> freeVars b - Case t bs -> freeVars t <> freeVars bs - TruePred -> mempty - FalsePred _ -> mempty - freeVarSet = \case - GenHint _ t -> freeVarSet t - Subst x t p -> freeVarSet t <> Set.delete (Name x) (freeVarSet p) - Block ps -> foldMap freeVarSet ps - Let t b -> freeVarSet t <> freeVarSet b - Exists _ b -> freeVarSet b - Assert _ t -> freeVarSet t - Reify tm _ b -> freeVarSet tm <> freeVarSet b - DependsOn x y -> freeVarSet x <> freeVarSet y - ForAll set b -> freeVarSet set <> freeVarSet b - Case t bs -> freeVarSet t <> freeVarSet bs - TruePred -> mempty - FalsePred _ -> mempty - countOf n = \case - GenHint _ t -> countOf n t - Subst x t p - | n == Name x -> countOf n t - | otherwise -> countOf n t + countOf n p - Block ps -> sum $ map (countOf n) ps - Let t b -> countOf n t + countOf n b - Exists _ b -> countOf n b - Assert _ t -> countOf n t - Reify tm _ b -> countOf n tm + countOf n b - DependsOn x y -> countOf n x + countOf n y - ForAll set b -> countOf n set + countOf n b - Case t bs -> countOf n t + countOf n bs - TruePred -> 0 - FalsePred _ -> 0 - appearsIn n = \case - GenHint _ t -> appearsIn n t - Subst x t p - | n == Name x -> appearsIn n t - | otherwise -> appearsIn n t || appearsIn n p - Block ps -> any (appearsIn n) ps - Let t b -> appearsIn n t || appearsIn n b - Exists _ b -> appearsIn n b - Assert _ t -> appearsIn n t - Reify tm _ b -> appearsIn n tm || appearsIn n b - DependsOn x y -> appearsIn n x || appearsIn n y - ForAll set b -> appearsIn n set || appearsIn n b - Case t bs -> appearsIn n t || appearsIn n bs - TruePred -> False - FalsePred _ -> False - -instance HasVariables fn (Binder fn a) where - freeVars (x :-> p) = freeVars p `without` [Name x] - freeVarSet (x :-> p) = Set.delete (Name x) (freeVarSet p) - countOf n (x :-> p) - | Name x == n = 0 - | otherwise = countOf n p - appearsIn n (x :-> p) - | Name x == n = False - | otherwise = appearsIn n p - -instance HasVariables fn (List (Binder fn) as) where - freeVars Nil = mempty - freeVars (a :> as) = freeVars a <> freeVars as - freeVarSet Nil = mempty - freeVarSet (a :> as) = freeVarSet a <> freeVarSet as - countOf _ Nil = 0 - countOf n (x :> xs) = countOf n x + countOf n xs - appearsIn _ Nil = False - appearsIn n (x :> xs) = appearsIn n x || appearsIn n xs - -instance {-# OVERLAPPABLE #-} (Foldable t, HasVariables f a) => HasVariables f (t a) where - freeVars = foldMap freeVars - freeVarSet = foldMap freeVarSet - countOf n = Monoid.getSum . foldMap (Monoid.Sum . countOf n) - appearsIn n = any (appearsIn n) - -instance HasVariables f a => HasVariables f (Set a) where - freeVars = foldMap freeVars - freeVarSet = foldMap freeVarSet - countOf n = sum . Set.map (countOf n) - appearsIn n = any (appearsIn n) - ------------------------------------------------------------------------- --- Substitutions ------------------------------------------------------------------------- - -type Subst fn = [SubstEntry fn] - -data SubstEntry fn where - (:=) :: HasSpec fn a => Var a -> Term fn a -> SubstEntry fn - -backwardsSubstitution :: forall fn a. HasSpec fn a => Subst fn -> Term fn a -> Term fn a -backwardsSubstitution sub t = - case findMatch sub t of - -- TODO: what about multiple matches?? - Just x -> V x - Nothing -> case t of - Lit a -> Lit a - V x -> V x - App f ts -> App f (mapListC @(HasSpec fn) (backwardsSubstitution sub) ts) - where - findMatch :: Subst fn -> Term fn a -> Maybe (Var a) - findMatch [] _ = Nothing - findMatch (x := t' : sub) t - | fastInequality t t' = findMatch sub t - | Just (x', t'') <- cast (x, t') - , t == t'' = - Just x' - | otherwise = findMatch sub t - --- | Sound but not complete inequality on terms -fastInequality :: Term fn a -> Term fn b -> Bool -fastInequality (V (Var i)) (V (Var j)) = i /= j -fastInequality Lit {} Lit {} = False -fastInequality (App _ as) (App _ bs) = go as bs - where - go :: List (Term fn) as -> List (Term fn) bs -> Bool - go Nil Nil = False - go (a :> as) (b :> bs) = fastInequality a b || go as bs - go _ _ = True -fastInequality _ _ = True - -substituteTerm :: forall fn a. Subst fn -> Term fn a -> Term fn a -substituteTerm sub = \case - Lit a -> Lit a - V x -> substVar sub x - App f (mapList (substituteTerm sub) -> ts) -> - case fromLits ts of - Just vs -> Lit (uncurryList_ unValue (sem f) vs) - _ -> App f ts - where - substVar :: HasSpec fn a => Subst fn -> Var a -> Term fn a - substVar [] x = V x - substVar (y := t : sub) x - | Just Refl <- eqVar x y = t - | otherwise = substVar sub x - -substituteTerm' :: forall fn a. Subst fn -> Term fn a -> Writer Any (Term fn a) -substituteTerm' sub = \case - Lit a -> pure $ Lit a - V x -> substVar sub x - App f ts -> - App f <$> mapMList (substituteTerm' sub) ts - where - substVar :: HasSpec fn a => Subst fn -> Var a -> Writer Any (Term fn a) - substVar [] x = pure $ V x - substVar (y := t : sub) x - | Just Refl <- eqVar x y = t <$ tell (Any True) - | otherwise = substVar sub x - -substituteBinder :: HasSpec fn a => Var a -> Term fn a -> Binder fn b -> Binder fn b -substituteBinder x tm (y :-> p) = y' :-> substitutePred x tm p' - where - (y', p') = - freshen y p (Set.singleton (nameOf x) <> freeVarNames tm <> Set.delete (nameOf y) (freeVarNames p)) - -substitutePred :: HasSpec fn a => Var a -> Term fn a -> Pred fn -> Pred fn -substitutePred x tm = \case - GenHint h t -> GenHint h (substituteTerm [x := tm] t) - Subst x' t p -> substitutePred x tm $ substitutePred x' t p - Assert es t -> Assert es (substituteTerm [x := tm] t) - Block ps -> fold (substitutePred x tm <$> ps) - Exists k b -> Exists (\eval -> k (eval . substituteTerm [x := tm])) (substituteBinder x tm b) - Let t b -> Let (substituteTerm [x := tm] t) (substituteBinder x tm b) - ForAll t b -> ForAll (substituteTerm [x := tm] t) (substituteBinder x tm b) - Case t bs -> Case (substituteTerm [x := tm] t) (mapList (substituteBinder x tm) bs) - Reify t f b -> Reify (substituteTerm [x := tm] t) f (substituteBinder x tm b) - DependsOn t t' -> DependsOn (substituteTerm [x := tm] t) (substituteTerm [x := tm] t') - TruePred -> TruePred - FalsePred es -> FalsePred es - -instance Rename (Name f) where - rename v v' (Name v'') = Name $ rename v v' v'' - -instance Rename (Term fn a) where - rename v v' - | v == v' = id - | otherwise = \case - Lit l -> Lit l - V v'' -> V (rename v v' v'') - App f a -> App f (rename v v' a) - -instance Rename (Pred fn) where - rename v v' - | v == v' = id - | otherwise = \case - GenHint h t -> GenHint h (rename v v' t) - Subst x t p -> rename v v' $ substitutePred x t p - Block ps -> Block (rename v v' ps) - Exists k b -> Exists (\eval -> k $ eval . rename v v') (rename v v' b) - Let t b -> Let (rename v v' t) (rename v v' b) - Reify t f b -> Reify (rename v v' t) f (rename v v' b) - Assert es t -> Assert es (rename v v' t) - DependsOn x y -> DependsOn (rename v v' x) (rename v v' y) - ForAll set b -> ForAll (rename v v' set) (rename v v' b) - Case t bs -> Case (rename v v' t) (rename v v' bs) - TruePred -> TruePred - FalsePred es -> FalsePred es - -instance Rename (Binder fn a) where - rename v v' (va :-> psa) = va' :-> rename v v' psa' - where - (va', psa') = freshen va psa (Set.fromList [nameOf v, nameOf v'] <> Set.delete (nameOf va) (freeVarNames psa)) - -substTerm :: Env -> Term fn a -> Term fn a -substTerm env = \case - Lit a -> Lit a - V v - | Just a <- lookupEnv env v -> Lit a - | otherwise -> V v - App f (mapList (substTerm env) -> ts) -> - case fromLits ts of - Just vs -> Lit (uncurryList_ unValue (sem f) vs) - _ -> App f ts - -substBinder :: Env -> Binder fn a -> Binder fn a -substBinder env (x :-> p) = x :-> substPred (removeVar x env) p - -substPred :: BaseUniverse fn => Env -> Pred fn -> Pred fn -substPred env = \case - GenHint h t -> GenHint h (substTerm env t) - Subst x t p -> substPred env $ substitutePred x t p - Assert es t -> assertExplain es (substTerm env t) - Reify t f b -> Reify (substTerm env t) f (substBinder env b) - ForAll set b -> ForAll (substTerm env set) (substBinder env b) - Case t bs -> Case (substTerm env t) (mapList (substBinder env) bs) - DependsOn x y -> DependsOn (substTerm env x) (substTerm env y) - TruePred -> TruePred - FalsePred es -> FalsePred es - Block ps -> fold (substPred env <$> ps) - Exists k b -> Exists (\eval -> k $ eval . substTerm env) (substBinder env b) - Let t b -> Let (substTerm env t) (substBinder env b) - -unBind :: a -> Binder fn a -> Pred fn -unBind a (x :-> p) = substPred (singletonEnv x a) p - ------------------------------------------------------------------------- --- Rewrite rules and simplification ------------------------------------------------------------------------- - --- Simplification for preds and terms ------------------------------------- - -simplifyTerm :: forall fn a. BaseUniverse fn => Term fn a -> Term fn a -simplifyTerm = \case - V v -> V v - Lit l -> Lit l - App f (mapList simplifyTerm -> ts) - | Just vs <- fromLits ts -> Lit $ uncurryList_ unValue (sem f) vs - | Just t <- rewriteRules f ts -> simplifyTerm t - | otherwise -> App f ts - -fromLits :: List (Term fn) as -> Maybe (List Value as) -fromLits = mapMList fromLit - -fromLit :: Term fn a -> Maybe (Value a) -fromLit (Lit l) = pure $ Value l -fromLit _ = Nothing - -isLit :: Term fn a -> Bool -isLit = isJust . fromLit - -simplifyPred :: BaseUniverse fn => Pred fn -> Pred fn -simplifyPred = \case - -- If the term simplifies away to a literal, that means there is no - -- more generation to do so we can get rid of `GenHint` - GenHint h t -> case simplifyTerm t of - Lit {} -> TruePred - t' -> GenHint h t' - Subst x t p -> simplifyPred $ substitutePred x t p - Assert es t -> assertExplain es (simplifyTerm t) - Reify tm f b -> mkReify (simplifyTerm tm) f (simplifyBinder b) - ForAll set b -> case simplifyTerm set of - Lit as -> foldMap (`unBind` b) (forAllToList as) - set' -> ForAll set' (simplifyBinder b) - DependsOn x y -> DependsOn x y - Case t bs -> mkCase (simplifyTerm t) (mapList simplifyBinder bs) - TruePred -> TruePred - FalsePred es -> FalsePred es - Block ps -> fold (simplifyPreds ps) - Let t b -> case simplifyTerm t of - t'@App {} -> Let t' (simplifyBinder b) - -- Variable or literal - t' | x :-> p <- b -> simplifyPred $ substitutePred x t' p - Exists k b -> Exists k (simplifyBinder b) - -simplifyPreds :: BaseUniverse fn => [Pred fn] -> [Pred fn] -simplifyPreds = go [] . map simplifyPred - where - go acc [] = reverse acc - go _ (FalsePred err : _) = [FalsePred err] - go acc (TruePred : ps) = go acc ps - go acc (p : ps) = go (p : acc) ps - -simplifyBinder :: Binder fn a -> Binder fn a -simplifyBinder (x :-> p) = x :-> simplifyPred p - --- Arcane magic ----------------------------------------------------------- - --- TODO: it might be necessary to run aggressiveInlining again after the let floating etc. -optimisePred :: BaseUniverse fn => Pred fn -> Pred fn -optimisePred p = - simplifyPred - . letSubexpressionElimination - . letFloating - . aggressiveInlining - . simplifyPred - $ p - --- Common subexpression elimination but only on terms that are already let-bound. -letSubexpressionElimination :: BaseUniverse fn => Pred fn -> Pred fn -letSubexpressionElimination = go [] - where - adjustSub x sub = - [ x' := t | x' := t <- sub, isNothing $ eqVar x x', - -- TODO: possibly freshen the binder where - -- `x` appears instead? - not $ Name x `appearsIn` t - ] - - goBinder :: Subst fn -> Binder fn a -> Binder fn a - goBinder sub (x :-> p) = x :-> go (adjustSub x sub) p - - go sub = \case - GenHint h t -> GenHint h (backwardsSubstitution sub t) - Block ps -> Block (go sub <$> ps) - Let t (x :-> p) -> Let t' (x :-> go (x := t' : sub') p) - where - t' = backwardsSubstitution sub t - sub' = adjustSub x sub - Exists k b -> Exists k (goBinder sub b) - Subst x t p -> go sub (substitutePred x t p) - Assert es t -> Assert es (backwardsSubstitution sub t) - Reify t k b -> Reify (backwardsSubstitution sub t) k (goBinder sub b) - -- TODO: this is almost certainly not the right thing to do! - DependsOn t t' -> - DependsOn t t' - <> DependsOn (backwardsSubstitution sub t) (backwardsSubstitution sub t') - ForAll t b -> ForAll (backwardsSubstitution sub t) (goBinder sub b) - Case t bs -> Case (backwardsSubstitution sub t) (mapList (goBinder sub) bs) - TruePred -> TruePred - FalsePred es -> FalsePred es - --- TODO: this can probably be cleaned up and generalized along with generalizing --- to make sure we float lets in some missing cases. -letFloating :: BaseUniverse fn => Pred fn -> Pred fn -letFloating = fold . go [] - where - goBlock ctx ps = goBlock' (freeVarNames ctx <> freeVarNames ps) ctx ps - - goBlock' _ ctx [] = ctx - goBlock' fvs ctx (Let t (x :-> p) : ps) = - -- We can do `goBlock'` here because we've already done let floating - -- on the inner `p` - [Let t (x' :-> fold (goBlock' (Set.insert (nameOf x') fvs) ctx (p' : ps)))] - where - (x', p') = freshen x p fvs - goBlock' fvs ctx (Block ps : ps') = goBlock' fvs ctx (ps ++ ps') - goBlock' fvs ctx (p : ps) = goBlock' fvs (p : ctx) ps - - goExists :: - HasSpec fn a => - [Pred fn] -> - (Binder fn a -> Pred fn) -> - Var a -> - Pred fn -> - [Pred fn] - goExists ctx ex x (Let t (y :-> p)) - | not $ Name x `appearsIn` t = - let (y', p') = freshen y p (Set.insert (nameOf x) $ freeVarNames p <> freeVarNames t) - in go ctx (Let t (y' :-> ex (x :-> p'))) - goExists ctx ex x p = ex (x :-> p) : ctx - - go ctx = \case - Block ps0 -> goBlock ctx (map letFloating ps0) - Let t (x :-> p) -> goBlock ctx [Let t (x :-> letFloating p)] - Exists k (x :-> p) -> goExists ctx (Exists k) x (letFloating p) - Subst x t p -> go ctx (substitutePred x t p) - -- TODO: float let through reify if possible - Reify t k (x :-> p) -> Reify t k (x :-> letFloating p) : ctx - -- TODO: float let through forall if possible - ForAll t (x :-> p) -> ForAll t (x :-> letFloating p) : ctx - -- TODO: float let through the cases if possible - Case t bs -> Case t (mapList (\(x :-> p) -> x :-> letFloating p) bs) : ctx - -- Boring cases - Assert es t -> Assert es t : ctx - GenHint h t -> GenHint h t : ctx - DependsOn t t' -> DependsOn t t' : ctx - TruePred -> TruePred : ctx - FalsePred es -> FalsePred es : ctx - -aggressiveInlining :: BaseUniverse fn => Pred fn -> Pred fn -aggressiveInlining p - | inlined = aggressiveInlining pInlined - | otherwise = p - where - (pInlined, Any inlined) = runWriter $ go (freeVars p) [] p - - underBinder fvs x p = fvs `without` [Name x] <> singleton (Name x) (countOf (Name x) p) - - underBinderSub sub x = - [ x' := t - | x' := t <- sub - , isNothing $ eqVar x x' - ] - - -- NOTE: this is safe because we only use the `Subst` when it results in a literal so there - -- is no risk of variable capture. - goBinder :: FreeVars fn -> Subst fn -> Binder fn a -> Writer Any (Binder fn a) - goBinder fvs sub (x :-> p) = (x :->) <$> go (underBinder fvs x p) (underBinderSub sub x) p - - go fvs sub p = case p of - Subst x t p -> go fvs sub (substitutePred x t p) - Reify tm f b - | not (isLit tm) - , Lit a <- substituteAndSimplifyTerm sub tm -> do - tell $ Any True - pure $ mkReify (Lit a) f b - | otherwise -> Reify tm f <$> goBinder fvs sub b - ForAll set b - | not (isLit set) - , Lit a <- substituteAndSimplifyTerm sub set -> do - tell $ Any True - pure $ foldMap (`unBind` b) (forAllToList a) - | otherwise -> ForAll set <$> goBinder fvs sub b - Case t bs - | not (isLit t) - , Lit a <- substituteAndSimplifyTerm sub t -> do - tell $ Any True - pure $ runCaseOn a bs $ \x v p -> substPred (singletonEnv x v) p - | (x :-> p :> Nil) <- bs -> do - let t' = substituteAndSimplifyTerm sub t - p' <- go (underBinder fvs x p) (x := t' : sub) p - pure $ Case t (x :-> p' :> Nil) - | otherwise -> Case t <$> mapMList (goBinder fvs sub) bs - Let t (x :-> p) - | all (\n -> count n fvs <= 1) (freeVarSet t) -> do - tell $ Any True - pure $ substitutePred x t p - | not $ Name x `appearsIn` p -> do - tell $ Any True - pure p - | not (isLit t) - , Lit a <- substituteAndSimplifyTerm sub t -> do - tell $ Any True - pure $ unBind a (x :-> p) - | otherwise -> Let t . (x :->) <$> go (underBinder fvs x p) (x := t : sub) p - Exists k b -> Exists k <$> goBinder fvs sub b - Block ps -> fold <$> mapM (go fvs sub) ps - Assert es t - | not (isLit t) - , Lit b <- substituteAndSimplifyTerm sub t -> do - tell $ Any True - pure $ assertExplain es b - | otherwise -> pure p - -- If the term turns into a literal, there is no more generation to do here - -- so we can ignore the `GenHint` - GenHint _ t - | not (isLit t) - , Lit {} <- substituteAndSimplifyTerm sub t -> do - tell $ Any True - pure TruePred - | otherwise -> pure p - DependsOn t t' - | not (isLit t) - , Lit {} <- substituteAndSimplifyTerm sub t -> do - tell $ Any True - pure $ TruePred - | not (isLit t') - , Lit {} <- substituteAndSimplifyTerm sub t' -> do - tell $ Any True - pure $ TruePred - | otherwise -> pure p - TruePred -> pure p - FalsePred {} -> pure p - --- | Apply a substitution and simplify the resulting term if the substitution changed the --- term. -substituteAndSimplifyTerm :: BaseUniverse fn => Subst fn -> Term fn a -> Term fn a -substituteAndSimplifyTerm sub t = - case runWriter $ substituteTerm' sub t of - (t', Any b) - | b -> simplifyTerm t' - | otherwise -> t' - ------------------------------------------------------------------------- --- Generics ------------------------------------------------------------------------- - -{- -`HasSimpleRep` and `GenericsFn` are meant to allow you to express that a -type is isomorphic to some other type that has a `HasSpec` instance. - -The trick is that the default instance of `HasSpec fn a` assumes -`HasSimpleRep a` and defines `TypeSpec fn a = TypeSpec fn (SimpleRep a)`. - -From this it's possible to work with things of type `a` in constraints by -treating them like things of type `SimpleRep a`. This allows us to do case -matching etc. on `a` when `SimpleRep a` is a `Sum` type, for example. - -Or alternatively it allows us to treat `a` as a newtype over `SimpleRep a` -when using `match`. - --} - -class HasSimpleRep a where - type SimpleRep a - type TheSop a :: [Type] - toSimpleRep :: a -> SimpleRep a - fromSimpleRep :: SimpleRep a -> a - - type TheSop a = SOPOf (Rep a) - type SimpleRep a = SOP (TheSop a) - - default toSimpleRep :: - ( Generic a - , SimpleGeneric (Rep a) - , SimpleRep a ~ SimplifyRep (Rep a) - ) => - a -> - SimpleRep a - toSimpleRep = toSimpleRep' . from - - default fromSimpleRep :: - ( Generic a - , SimpleGeneric (Rep a) - , SimpleRep a ~ SimplifyRep (Rep a) - ) => - SimpleRep a -> - a - fromSimpleRep = to . fromSimpleRep' - -type family SimplifyRep f where - SimplifyRep f = SOP (SOPOf f) - -toGenericFn :: - forall fn a. - ( HasSpec fn (SimpleRep a) - , TypeSpec fn a ~ TypeSpec fn (SimpleRep a) - , HasSimpleRep a - ) => - fn '[a] (SimpleRep a) -toGenericFn = injectFn $ ToGeneric @fn - -fromGenericFn :: - forall fn a. - ( HasSpec fn (SimpleRep a) - , TypeSpec fn a ~ TypeSpec fn (SimpleRep a) - , HasSimpleRep a - ) => - fn '[SimpleRep a] a -fromGenericFn = injectFn $ FromGeneric @fn - -data GenericsFn fn args res where - ToGeneric :: - ( HasSpec fn (SimpleRep a) - , TypeSpec fn a ~ TypeSpec fn (SimpleRep a) - , HasSimpleRep a - ) => - GenericsFn fn '[a] (SimpleRep a) - FromGeneric :: - ( HasSpec fn (SimpleRep a) - , TypeSpec fn a ~ TypeSpec fn (SimpleRep a) - , HasSimpleRep a - ) => - GenericsFn fn '[SimpleRep a] a - -deriving instance Show (GenericsFn fn as b) -deriving instance Eq (GenericsFn fn args res) - -fromSimpleRepSpec :: - forall a fn. - (HasSpec fn a, HasSimpleRep a, TypeSpec fn a ~ TypeSpec fn (SimpleRep a)) => - Spec fn (SimpleRep a) -> - Spec fn a -fromSimpleRepSpec = \case - TrueSpec -> TrueSpec - ErrorSpec e -> ErrorSpec e - TypeSpec s'' cant -> TypeSpec s'' $ map fromSimpleRep cant - MemberSpec elems -> MemberSpec (map fromSimpleRep elems) - SuspendedSpec x p -> - constrained $ \x' -> - Let (toGeneric_ x') (x :-> p) - -toSimpleRepSpec :: - forall a fn. - (HasSpec fn a, HasSpec fn (SimpleRep a), HasSimpleRep a, TypeSpec fn a ~ TypeSpec fn (SimpleRep a)) => - Spec fn a -> - Spec fn (SimpleRep a) -toSimpleRepSpec = \case - TrueSpec -> TrueSpec - ErrorSpec e -> ErrorSpec e - TypeSpec s'' cant -> TypeSpec s'' $ map toSimpleRep cant - MemberSpec elems -> MemberSpec (map toSimpleRep elems) - SuspendedSpec x p -> - constrained $ \x' -> - Let (fromGeneric_ x') (x :-> p) - -{- This part of the code base is responsible for implementing the conversion - from a `Generic` type to a `Sum` over `Prod` representation that automatically - gives you an instance of `HasSpec`. The user has three options for building their - own instances of `HasSpec`, either they hand-roll an instance, they go with the - entirely `Generic` instance, or they provide their own `SimpleRep` for their type. - - The latter may be appropriate when the type is an optimized representation: - - ``` - newtype Foo = Foo { unFoo :: MemoBytes ActualFoo } - - instance HasSimpleRep Foo where - type SimpleRep Foo = ActualFoo - toSimpleRep = unMemoBytes . unFoo - fromSimpleRep = Foo . memoBytes - ``` - - This would then allow for `Foo` to be treated as a simple `newtype` over `ActualFoo` - in constraints: - - ``` - fooSpec :: Spec fn Foo - fooSpec = constrained $ \ foo -> - match foo $ \ actualFoo -> ... - ``` --} - --- Building a SOP type (Sum Of Prod) -------------------------------------- - --- | A constructor name with the types of its arguments -data (c :: Symbol) ::: (ts :: [Type]) - --- | Turn a `Rep` into a list that flattens the sum --- structre and gives the constructors names: --- Maybe Int -> '["Nothing" ::: '[()], "Just" ::: '[Int]] --- Either Int Bool -> '["Left" ::: '[Int], "Right" ::: '[Bool]] --- data Foo = Foo Int Bool | Bar Double -> '["Foo" ::: '[Int, Bool], "Bar" ::: '[Double]] -type family SOPOf f where - SOPOf (D1 _ f) = SOPOf f - SOPOf (f :+: g) = Append (SOPOf f) (SOPOf g) - SOPOf (C1 ('MetaCons constr _ _) f) = '[constr ::: Constr f] - --- | Flatten a single constructor -type family Constr f where - -- TODO: Here we should put in the selector names - -- so that they can be re-used to create selectors more - -- easily than the current disgusting `Fst . Snd . Snd . Snd ...` - -- method. - Constr (S1 _ f) = Constr f - Constr (K1 _ k) = '[k] - Constr U1 = '[()] - Constr (f :*: g) = Append (Constr f) (Constr g) - --- | Turn a list from `SOPOf` into a `Sum` over --- `Prod` representation. -type family SOP constrs where - SOP '[c ::: prod] = ProdOver prod - SOP ((c ::: prod) : constrs) = Sum (ProdOver prod) (SOP constrs) - --- Constructing a SOP ----------------------------------------------------- - -type family ConstrOf c sop where - ConstrOf c (c ::: constr : sop) = constr - ConstrOf c (_ : sop) = ConstrOf c sop - -class Inject c constrs r where - inject' :: (SOP constrs -> r) -> FunTy (ConstrOf c constrs) r - -instance TypeList prod => Inject c '[c ::: prod] r where - inject' k = curryList_ @prod Identity (listToProd k) - -instance TypeList prod => Inject c ((c ::: prod) : prod' : constrs) r where - inject' k = curryList_ @prod Identity (listToProd (k . SumLeft @_ @(SOP (prod' : constrs)))) - -instance - {-# OVERLAPPABLE #-} - ( FunTy (ConstrOf c ((c' ::: prod) : con : constrs)) r ~ FunTy (ConstrOf c (con : constrs)) r - , -- \^ An unfortunately roundabout way of saying `c !~ c'` - Inject c (con : constrs) r - ) => - Inject c ((c' ::: prod) : con : constrs) r - where - inject' k = inject' @c @(con : constrs) (k . SumRight) - -inject :: - forall c constrs. Inject c constrs (SOP constrs) => FunTy (ConstrOf c constrs) (SOP constrs) -inject = inject' @c @constrs id - --- Deconstructing a SOP --------------------------------------------------- - --- | An `ALG constrs r` is a function that takes a way to turn every --- constructor into an `r`: --- ``` --- ALG (SOPOf (Rep (Either Int Bool))) r = (Int -> r) -> (Bool -> r) -> r --- ``` -type family ALG constrs r where - ALG '[c ::: prod] r = FunTy prod r -> r - ALG ((c ::: prod) : constrs) r = FunTy prod r -> ALG constrs r - -class SOPLike constrs r where - -- | Run a `SOP` - algebra :: SOP constrs -> ALG constrs r - - -- | Ignore everything in the `SOP` - consts :: r -> ALG constrs r - -instance TypeList prod => SOPLike '[c ::: prod] r where - algebra prod f = uncurryList_ @prod runIdentity f $ prodToList prod - consts r _ = r - -instance (TypeList prod, SOPLike (con : cases) r) => SOPLike ((c ::: prod) : con : cases) r where - algebra (SumLeft prod) f = consts @(con : cases) @r (algebra @'[c ::: prod] prod f) - algebra (SumRight rest) _ = algebra @(con : cases) @r rest - - consts r _ = consts @(con : cases) r - --- The individual constructor level --------------------------------------- - -class SimpleConstructor rep where - toSimpleCon' :: rep p -> ProdOver (Constr rep) - fromSimpleCon' :: ProdOver (Constr rep) -> rep p - -instance - ( SimpleConstructor f - , SimpleConstructor g - , TypeList (Constr f) - , TypeList (Constr g) - ) => - SimpleConstructor (f :*: g) - where - toSimpleCon' (a :*: b) = appendProd @(Constr f) @(Constr g) (toSimpleCon' a) (toSimpleCon' b) - fromSimpleCon' constr = - let Prod a b = splitProd @(Constr f) @(Constr g) constr - in (fromSimpleCon' a :*: fromSimpleCon' b) - -instance SimpleConstructor f => SimpleConstructor (S1 s f) where - toSimpleCon' (M1 f) = toSimpleCon' f - fromSimpleCon' a = M1 (fromSimpleCon' a) - -instance SimpleConstructor (K1 i k) where - toSimpleCon' (K1 k) = k - fromSimpleCon' k = K1 k - -instance SimpleConstructor U1 where - toSimpleCon' U1 = () - fromSimpleCon' _ = U1 - --- The sum type level ----------------------------------------------------- - --- | Construct and deconstruct cases in a `SOP` -class SopList xs ys where - injectSOPLeft :: SOP xs -> SOP (Append xs ys) - injectSOPRight :: SOP ys -> SOP (Append xs ys) - caseSOP :: SOP (Append xs ys) -> Sum (SOP xs) (SOP ys) - -instance SopList '[c ::: x] (y : ys) where - injectSOPLeft = SumLeft - injectSOPRight = SumRight - caseSOP = id - -instance SopList (x' : xs) (y : ys) => SopList (c ::: x : x' : xs) (y : ys) where - injectSOPLeft (SumLeft a) = SumLeft a - injectSOPLeft (SumRight b) = SumRight (injectSOPLeft @(x' : xs) @(y : ys) b) - - injectSOPRight a = SumRight (injectSOPRight @(x' : xs) @(y : ys) a) - - caseSOP (SumLeft a) = SumLeft (SumLeft a) - caseSOP (SumRight b) = case caseSOP @(x' : xs) @(y : ys) b of - SumLeft b' -> SumLeft (SumRight b') - SumRight b' -> SumRight b' - -class SimpleGeneric rep where - toSimpleRep' :: rep p -> SimplifyRep rep - fromSimpleRep' :: SimplifyRep rep -> rep p - -instance SimpleGeneric f => SimpleGeneric (D1 d f) where - toSimpleRep' (M1 f) = toSimpleRep' f - fromSimpleRep' a = M1 (fromSimpleRep' a) - -instance - ( SimpleGeneric f - , SimpleGeneric g - , SopList (SOPOf f) (SOPOf g) - ) => - SimpleGeneric (f :+: g) - where - toSimpleRep' (L1 f) = injectSOPLeft @(SOPOf f) @(SOPOf g) $ toSimpleRep' f - toSimpleRep' (R1 g) = injectSOPRight @(SOPOf f) @(SOPOf g) $ toSimpleRep' g - fromSimpleRep' sop = - case caseSOP @(SOPOf f) @(SOPOf g) sop of - SumLeft l -> L1 (fromSimpleRep' l) - SumRight r -> R1 (fromSimpleRep' r) - -instance SimpleConstructor f => SimpleGeneric (C1 ('MetaCons c a b) f) where - toSimpleRep' (M1 f) = toSimpleCon' f - fromSimpleRep' a = M1 (fromSimpleCon' a) - ------------------------------------------------------------------------- --- Sums and folds ------------------------------------------------------------------------- - -class HasSpec fn a => Foldy fn a where - genList :: (BaseUniverse fn, MonadGenError m) => Spec fn a -> Spec fn a -> GenT m [a] - theAddFn :: fn '[a, a] a - theZero :: a - -adds :: forall fn a. Foldy fn a => [a] -> a -adds = foldr (sem $ theAddFn @fn) (theZero @fn) - -data FoldSpec (fn :: [Type] -> Type -> Type) a where - NoFold :: FoldSpec fn a - FoldSpec :: - forall b fn a. - ( HasSpec fn a - , HasSpec fn b - , Foldy fn b - , Member (ListFn fn) fn - , BaseUniverse fn - ) => - fn '[a] b -> - Spec fn b -> - FoldSpec fn a - -combineFoldSpec :: MonadGenError m => FoldSpec fn a -> FoldSpec fn a -> m (FoldSpec fn a) -combineFoldSpec NoFold s = pure s -combineFoldSpec s NoFold = pure s -combineFoldSpec (FoldSpec (f :: fn as b) s) (FoldSpec (f' :: fn' as' b') s') - | Just Refl <- eqT @b @b' - , Just Refl <- eqT @fn @fn' - , f == f' = - pure $ FoldSpec f (s <> s') - | otherwise = - genError ["Can't combine fold specs on different functions", " " ++ show f, " " ++ show f'] - -conformsToFoldSpec :: forall fn a. [a] -> FoldSpec fn a -> Bool -conformsToFoldSpec _ NoFold = True -conformsToFoldSpec xs (FoldSpec f s) = adds @fn (map (sem f) xs) `conformsToSpec` s - -toPredsFoldSpec :: forall fn a. BaseUniverse fn => Term fn [a] -> FoldSpec fn a -> Pred fn -toPredsFoldSpec _ NoFold = TruePred -toPredsFoldSpec x (FoldSpec fn sspec) = - satisfies (app (foldMapFn fn) x) sspec - --- | Note: potentially infinite list -enumerateInterval :: (Enum a, Num a, Ord a, MaybeBounded a) => NumSpec a -> [a] -enumerateInterval (NumSpecInterval lo hi) = - case (lo <|> lowerBound, hi <|> upperBound) of - (Nothing, Nothing) -> interleave [0 ..] [-1, -2 ..] - (Nothing, Just b) -> [b, b - 1 ..] - (Just a, Nothing) -> [a ..] - (Just a, Just b) -> [a .. b] - where - interleave [] ys = ys - interleave (x : xs) ys = x : interleave ys xs - -isEmptyNumSpec :: - (TypeSpec fn a ~ NumSpec a, Ord a, Enum a, Num a, MaybeBounded a) => Spec fn a -> Bool -isEmptyNumSpec = \case - ErrorSpec {} -> True - TrueSpec -> False - MemberSpec as -> null as - SuspendedSpec {} -> False - TypeSpec i cant -> null $ enumerateInterval i \\ cant - -knownUpperBound :: - (TypeSpec fn a ~ NumSpec a, Ord a, Enum a, Num a, MaybeBounded a) => Spec fn a -> Maybe a -knownUpperBound TrueSpec = upperBound -knownUpperBound (MemberSpec []) = Nothing -knownUpperBound (MemberSpec as) = Just $ maximum as -knownUpperBound ErrorSpec {} = Nothing -knownUpperBound SuspendedSpec {} = upperBound -knownUpperBound (TypeSpec (NumSpecInterval lo hi) cant) = upper (lo <|> lowerBound) (hi <|> upperBound) - where - upper _ Nothing = Nothing - upper Nothing (Just b) = listToMaybe $ [b, b - 1 ..] \\ cant - upper (Just a) (Just b) - | a == b = a <$ guard (a `notElem` cant) - | otherwise = listToMaybe $ [b, b - 1 .. a] \\ cant - -knownLowerBound :: - (TypeSpec fn a ~ NumSpec a, Ord a, Enum a, Num a, MaybeBounded a) => Spec fn a -> Maybe a -knownLowerBound TrueSpec = lowerBound -knownLowerBound (MemberSpec []) = Nothing -knownLowerBound (MemberSpec as) = Just $ minimum as -knownLowerBound ErrorSpec {} = Nothing -knownLowerBound SuspendedSpec {} = lowerBound -knownLowerBound (TypeSpec (NumSpecInterval lo hi) cant) = - lower (lo <|> lowerBound) (hi <|> upperBound) - where - lower Nothing _ = Nothing - lower (Just a) Nothing = listToMaybe $ [a, a + 1 ..] \\ cant - lower (Just a) (Just b) - | a == b = a <$ guard (a `notElem` cant) - | otherwise = listToMaybe $ [a, a + 1 .. b] \\ cant - -narrowByFuelAndSize :: - forall a fn. - ( BaseUniverse fn - , TypeSpec fn a ~ NumSpec a - , HasSpec fn a - , Arbitrary a - , Integral a - , Ord a - , Random a - , MaybeBounded a - ) => - -- | Fuel - a -> - -- | Integer - Int -> - (Spec fn a, Spec fn a) -> - (Spec fn a, Spec fn a) -narrowByFuelAndSize fuel size specs = - loop (1000 :: Int) (narrowFoldSpecs specs) - where - loop 0 specs = - error $ - unlines - [ "narrowByFuelAndSize loops:" - , " fuel = " ++ show fuel - , " size = " ++ show size - , " specs = " ++ show specs - , " narrowFoldSpecs spec = " ++ show (narrowFoldSpecs specs) - , " go (narrowFoldSpecs specs) = " ++ show (go (narrowFoldSpecs specs)) - ] - loop n specs = case go specs of - Nothing -> specs - Just specs' -> loop (n - 1) (narrowFoldSpecs specs') - - canReach _ 0 s = s == 0 - canReach e fuel s - -- You can reach it in one step - | s <= e = 0 < fuel - | otherwise = canReach e (fuel - 1) (s - e) - - -- Precondition: - -- a is negative - -- the type has more negative numbers than positive ones - safeNegate a - | Just u <- upperBound - , a < negate u = - u - | otherwise = negate a - - divCeil a b - | b * d < a = d + 1 - | otherwise = d - where - d = a `div` b - - go (elemS, foldS) - -- There is nothing we can do - | fuel == 0 = Nothing - | size == 0 - , 0 `conformsToSpec` elemS = - Just (elemS <> notEqualSpec 0, foldS) - -- The lower bound on the number of elements is too low - | Just e <- knownLowerBound elemS - , e > 0 - , Just s <- knownLowerBound foldS - , s > 0 - , let c = divCeil s fuel - , e < c = - Just (elemS <> geqSpec @fn c, foldS) - -- The upper bound on the number of elements is too high - | Just e <- knownUpperBound elemS - , e < 0 - , Just s <- knownUpperBound foldS - , s < 0 - , let c = divCeil (safeNegate s) fuel - , negate c < e = - Just (elemS <> leqSpec @fn c, foldS) - -- It's time to stop generating negative numbers - | Just s <- knownLowerBound foldS - , s > 0 - , Just e <- knownUpperBound elemS - , e > 0 - , not $ canReach e (fuel `div` 2) s - , maybe True (<= 0) (knownLowerBound elemS) = - Just (elemS <> gtSpec @fn 0, foldS) - -- It's time to stop generating positive numbers - | Just s <- knownUpperBound foldS - , s < 0 - , Just e <- knownLowerBound elemS - , e < 0 - , not $ canReach (safeNegate e) (fuel `div` 2) (safeNegate s) - , maybe True (<= 0) (knownLowerBound elemS) = - Just (elemS <> gtSpec @fn 0, foldS) - -- We HAVE to set the lower bound to the lower - -- bound on the sum - | Just s <- knownLowerBound foldS - , fuel == 1 - , s `conformsToSpec` elemS - , maybe True (< s) (knownLowerBound elemS) = - Just (elemS <> geqSpec @fn s, foldS) - -- There is nothing we need to do - | otherwise = Nothing - -narrowFoldSpecs :: - forall a fn. - ( BaseUniverse fn - , TypeSpec fn a ~ NumSpec a - , HasSpec fn a - , Arbitrary a - , Integral a - , Ord a - , Random a - , MaybeBounded a - ) => - (Spec fn a, Spec fn a) -> - (Spec fn a, Spec fn a) -narrowFoldSpecs specs = maybe specs narrowFoldSpecs (go specs) - where - -- Note: make sure there is some progress when returning Just or this will loop forever - go (elemS, foldS) = case (elemS, foldS) of - -- Empty foldSpec - (_, ErrorSpec {}) -> Nothing - _ | isEmptyNumSpec foldS -> Just (elemS, ErrorSpec ["Empty foldSpec:", show foldS]) - -- Empty elemSpec - (ErrorSpec {}, MemberSpec [0]) -> Nothing - (ErrorSpec {}, _) - | 0 `conformsToSpec` foldS -> Just (elemS, MemberSpec [0]) - | otherwise -> - Just - ( elemS - , ErrorSpec - [ "Empty elemSpec and non-zero foldSpec" - , show $ indent 2 $ "elemSpec =" /> pretty elemS - , show $ indent 2 $ "foldSpec =" /> pretty foldS - ] - ) - -- We can reduce the size of the `elemS` interval when it is - -- `[l, u]` or `[l, ∞)` given that `0 <= l` and we have - -- an upper bound on the sum - we can't pick things bigger than the - -- upper bound. - _ - | Just lo <- knownLowerBound elemS - , 0 <= lo - , Just hi <- knownUpperBound foldS - , -- Check that we will actually be making the set smaller - fromMaybe True ((hi <) <$> knownUpperBound elemS) -> - Just (elemS <> typeSpec (NumSpecInterval (Just lo) (Just hi)), foldS) - -- We can reduce the size of the foldS set by bumping the lower bound when - -- there is a positive lower bound on the elemS, we can't generate things smaller - -- than the lower bound on `elemS`. - _ - | Just lo <- knownLowerBound elemS - , 0 <= lo - , not $ 0 `conformsToSpec` foldS - , -- Check that we will actually be making the set smaller - fromMaybe True ((lo >) <$> knownLowerBound foldS) -> - Just (elemS, foldS <> typeSpec (NumSpecInterval (Just lo) Nothing)) - -- NOTE: this is far from sufficient, but it's good enough of an approximation - -- to avoid the worst failures. - _ - | Just lo <- knownLowerBound elemS - , Just loS <- knownLowerBound foldS - , Just hi <- knownUpperBound elemS - , Just hiS <- knownUpperBound foldS - , hi < loS - , lo > hiS - lo -> - Just - (ErrorSpec ["Can't solve diophantine equation"], ErrorSpec ["Can't solve diophantine equation"]) - _ -> Nothing - -genNumList :: - forall a fn m. - ( BaseUniverse fn - , MonadGenError m - , TypeSpec fn a ~ NumSpec a - , HasSpec fn a - , Arbitrary a - , Integral a - , Ord a - , Random a - , MaybeBounded a - , Foldy fn a - ) => - Spec fn a -> - Spec fn a -> - GenT m [a] -genNumList elemSIn foldSIn = do - normElemS <- normalize elemSIn - normFoldS <- normalize foldSIn - explain - [ "Can't generate list of ints with fold constraint" - , show $ " elemSpec =" <+> pretty elemSIn - , show $ " normElemSpec =" <+> pretty normElemS - , show $ " foldSpec =" <+> pretty foldSIn - ] - $ gen (narrowFoldSpecs (normElemS, normFoldS)) 50 [] >>= pureGen . shuffle - where - normalize spec@SuspendedSpec {} = do - sz <- sizeT - spec' <- buildMemberSpec sz (100 :: Int) mempty spec - normalize $ spec' - normalize spec = - pure $ - maybe mempty (geqSpec @fn) lowerBound - <> maybe mempty (leqSpec @fn) upperBound - <> spec - - buildMemberSpec _ 0 es _ = pure (MemberSpec $ Set.toList es) - buildMemberSpec sz fuel es spec = do - me <- scaleT (const sz) $ tryGen (genFromSpec spec) - let sz' - | sz > 100 = sz - | isNothing me = 2 * sz + 1 - | otherwise = sz - buildMemberSpec - sz' - (fuel - 1) - (maybe es (flip Set.insert es) me) - (spec <> maybe mempty notEqualSpec me) - - gen :: forall m'. MonadGenError m' => (Spec fn a, Spec fn a) -> Int -> [a] -> GenT m' [a] - gen (elemS, foldS) fuel lst - | fuel <= 0 - , not $ 0 `conformsToSpec` foldS = - genError - [ "Ran out of fuel in genNumList" - , " " ++ show ("elemSpec =" <+> pretty elemSIn) - , " foldSpec = " ++ show foldSIn - , " lst = " ++ show lst - ] - | ErrorSpec err <- foldS = genError err - | ErrorSpec {} <- elemS = pure lst -- At this point we know that foldS admits 0 (also this should be redundant) - | 0 `conformsToSpec` foldS = oneofT [pure lst, nonemptyList @GE] -- TODO: distribution - | otherwise = nonemptyList - where - isUnsat (elemS, foldS) = isEmptyNumSpec foldS || not (0 `conformsToSpec` foldS) && isEmptyNumSpec elemS - nonemptyList :: forall m''. MonadGenError m'' => GenT m'' [a] - nonemptyList = do - (x, specs') <- - explain - [ "Generating an element:" - , " elemS = " ++ show elemS - , " foldS = " ++ show foldS - , " fuel = " ++ show fuel - , " lst = " ++ show lst - ] - $ do - sz <- sizeT - x <- genFromSpec elemS - let foldS' = propagateSpecFun (theAddFn @fn) (HOLE :? Value x :> Nil) foldS - specs' = narrowByFuelAndSize (fromIntegral $ fuel - 1) sz (elemS, foldS') - pure (x, specs') - `suchThatT` not - . isUnsat - . snd - gen specs' (fuel - 1) (x : lst) - -instance BaseUniverse fn => Foldy fn Int where - genList = genNumList - theAddFn = injectFn (Add @fn) - theZero = 0 - -instance BaseUniverse fn => Foldy fn Integer where - genList = genNumList - theAddFn = injectFn (Add @fn) - theZero = 0 - -instance BaseUniverse fn => Foldy fn Int8 where - genList = genNumList - theAddFn = injectFn (Add @fn) - theZero = 0 - -instance BaseUniverse fn => Foldy fn Int16 where - genList = genNumList - theAddFn = injectFn (Add @fn) - theZero = 0 - -instance BaseUniverse fn => Foldy fn Int32 where - genList = genNumList - theAddFn = injectFn (Add @fn) - theZero = 0 - -instance BaseUniverse fn => Foldy fn Int64 where - genList = genNumList - theAddFn = injectFn (Add @fn) - theZero = 0 - -instance BaseUniverse fn => Foldy fn Word8 where - genList = genNumList - theAddFn = injectFn (Add @fn) - theZero = 0 - -instance BaseUniverse fn => Foldy fn Word16 where - genList = genNumList - theAddFn = injectFn (Add @fn) - theZero = 0 - -instance BaseUniverse fn => Foldy fn Word32 where - genList = genNumList - theAddFn = injectFn (Add @fn) - theZero = 0 - -instance BaseUniverse fn => Foldy fn Word64 where - genList = genNumList - theAddFn = injectFn (Add @fn) - theZero = 0 - -instance BaseUniverse fn => Foldy fn Natural where - genList = genNumList - theAddFn = injectFn (Add @fn) - theZero = 0 - -genFromFold :: - forall m fn a b. - ( MonadGenError m - , Foldy fn b - , HasSpec fn a - ) => - [a] -> - Spec fn Integer -> - Spec fn a -> - fn '[a] b -> - Spec fn b -> - GenT m [a] -genFromFold must size elemS fn foldS = do - let elemS' = mapSpec fn elemS - mustVal = adds @fn (map (sem fn) must) - foldS' = propagateSpecFun (theAddFn @fn) (HOLE :? Value mustVal :> Nil) foldS - results <- genList elemS' foldS' `suchThatT` (\xs -> sizeOf xs `conformsToSpec` size) - explain - [ "genInverse" - , " fn = " ++ show fn - , " results = " ++ show results - , show $ " elemS =" <+> pretty elemS - ] - $ mapM (genInverse fn elemS) results - ------------------------------------------------------------------------- --- Instances of HasSpec ------------------------------------------------------------------------- - --- () --------------------------------------------------------------------- - -instance BaseUniverse fn => HasSpec fn () where - type TypeSpec fn () = () - emptySpec = () - combineSpec _ _ = typeSpec () - _ `conformsTo` _ = True - shrinkWithTypeSpec _ _ = [] - genFromTypeSpec _ = pure () - toPreds _ _ = TruePred - cardinalTypeSpec _ = MemberSpec [1] - cardinalTrueSpec = exactSizeSpec 1 -- there is exactly one, () - typeSpecOpt _ [] = TrueSpec - typeSpecOpt _ (_ : _) = MemberSpec [] - --- Bool ------------------------------------------------------------------- - -instance HasSimpleRep Bool -instance (BaseUniverse fn, HasSpec fn ()) => HasSpec fn Bool where - shrinkWithTypeSpec _ = shrink - --- Sum -------------------------------------------------------------------- - -guardSumSpec :: (HasSpec fn a, HasSpec fn b) => SumSpec fn a b -> Spec fn (Sum a b) -guardSumSpec s@(SumSpec sa sb) - | isErrorLike sa, isErrorLike sb = ErrorSpec ["empty SumSpec"] - | otherwise = typeSpec s - -data SumSpec fn a b = SumSpec (Spec fn a) (Spec fn b) - -instance (HasSpec fn a, HasSpec fn b) => Semigroup (SumSpec fn a b) where - SumSpec sa sb <> SumSpec sa' sb' = SumSpec (sa <> sa') (sb <> sb') - -instance (HasSpec fn a, HasSpec fn b) => Monoid (SumSpec fn a b) where - mempty = SumSpec mempty mempty - -instance (HasSpec fn a, HasSpec fn b) => HasSpec fn (Sum a b) where - type TypeSpec fn (Sum a b) = SumSpec fn a b - - type Prerequisites fn (Sum a b) = (HasSpec fn a, HasSpec fn b) - - emptySpec = mempty - - combineSpec s s' = guardSumSpec $ s <> s' - - conformsTo (SumLeft a) (SumSpec sa _) = conformsToSpec a sa - conformsTo (SumRight b) (SumSpec _ sb) = conformsToSpec b sb - - genFromTypeSpec (SumSpec sa sb) - | emptyA, emptyB = genError ["genFromTypeSpec @SumSpec: empty"] - | emptyA = SumRight <$> genFromSpec sb - | emptyB = SumLeft <$> genFromSpec sa - | otherwise = - oneofT - [ SumLeft <$> genFromSpec sa - , SumRight <$> genFromSpec sb - ] - where - emptyA = isErrorLike sa - emptyB = isErrorLike sb - - shrinkWithTypeSpec (SumSpec sa _) (SumLeft a) = SumLeft <$> shrinkWithSpec sa a - shrinkWithTypeSpec (SumSpec _ sb) (SumRight b) = SumRight <$> shrinkWithSpec sb b - - toPreds ct (SumSpec sa sb) = - Case - ct - ( (bind $ \a -> satisfies a sa) - :> (bind $ \b -> satisfies b sb) - :> Nil - ) - - cardinalTypeSpec (SumSpec leftspec rightspec) = addSpecInt (cardinality leftspec) (cardinality rightspec) - -deriving instance (HasSpec fn a, HasSpec fn b) => Show (SumSpec fn a b) - --- Sets ------------------------------------------------------------------- - -data SetSpec fn a = SetSpec (Set a) (Spec fn a) (Spec fn Integer) - -instance (Ord a, HasSpec fn a) => Semigroup (SetSpec fn a) where - SetSpec must es size <> SetSpec must' es' size' = - SetSpec (must <> must') (es <> es') (size <> size') - -instance (Ord a, HasSpec fn a) => Monoid (SetSpec fn a) where - mempty = SetSpec mempty mempty TrueSpec - -instance (Ord a, HasSpec fn a) => HasSpec fn (Set a) where - type TypeSpec fn (Set a) = SetSpec fn a - - type Prerequisites fn (Set a) = HasSpec fn a - - emptySpec = mempty - - -- TODO: we need to check conformsTo for musts and elem specs - combineSpec s s' = typeSpec $ s <> s' - - conformsTo s (SetSpec must es size) = - and - [ sizeOf s `conformsToSpec` size - , must `Set.isSubsetOf` s - , all (`conformsToSpec` es) s - ] - - genFromTypeSpec (SetSpec must e TrueSpec) = (must <>) . Set.fromList <$> listOfT (genFromSpec e) - genFromTypeSpec (SetSpec must elemS szSpec) = do - n <- - explain ["Choose a possible size Bounds for the Sets to be generated"] $ - genFromSizeSpec (szSpec <> geqSpec @fn (sizeOf must) <> maxSpec (cardinality elemS)) - go (n - sizeOf must) must - where - go 0 s = pure s - go n s = do - e <- - explain ["generate set member"] $ - withMode Strict $ - genFromSpec elemS `suchThatT` (`Set.notMember` s) - go (n - 1) (Set.insert e s) - - shrinkWithTypeSpec (SetSpec _ es _) as = map Set.fromList $ shrinkList (shrinkWithSpec es) (Set.toList as) - - toPreds s (SetSpec m es size) = - (Assert ["Subset of " ++ show m] $ subset_ (Lit m) s) - <> forAll s (\e -> satisfies e es) - <> satisfies (size_ s) size - -instance Ord a => Forallable (Set a) a where - forAllSpec (e :: Spec fn a) - | Evidence <- prerequisites @fn @(Set a) = typeSpec $ SetSpec mempty e TrueSpec - forAllToList = Set.toList - -deriving instance HasSpec fn a => Show (SetSpec fn a) - -instance BaseUniverse fn => Functions (SetFn fn) fn where - propagateSpecFun _ _ TrueSpec = TrueSpec - propagateSpecFun _ _ (ErrorSpec err) = ErrorSpec err - propagateSpecFun fn ctx spec = case fn of - _ - | SuspendedSpec x p <- spec - , ListCtx pre HOLE suf <- ctx -> - constrained $ \x' -> - let args = - appendList - (mapList (\(Value a) -> Lit a) pre) - (x' :> mapList (\(Value a) -> Lit a) suf) - in Let (App (injectFn fn) args) (x :-> p) - Singleton - | NilCtx HOLE <- ctx -> - let singletons = filter ((1 ==) . Set.size) - in case spec of - TypeSpec (SetSpec must es size) cant - | [a] <- Set.toList must - , a `conformsToSpec` es - , 1 `conformsToSpec` size - , Set.singleton a `notElem` cant -> - equalSpec a - | null must -> es <> notMemberSpec (Set.toList $ fold $ singletons cant) - | otherwise -> ErrorSpec ["propagateSpecFun Singleton with `must` of size > 1"] - MemberSpec es -> MemberSpec (Set.toList $ fold $ singletons es) - Union - | Value s :! NilCtx HOLE <- ctx -> - propagateSpecFun @(SetFn fn) @fn Union (HOLE :? Value s :> Nil) spec - | HOLE :? Value (s :: Set a) :> Nil <- ctx - , Evidence <- prerequisites @fn @(Set a) -> - case spec of - TypeSpec (SetSpec must es size) cant - | not $ all (`conformsToSpec` es) s -> - ErrorSpec - [ "Elements in union argument does not conform to elem spec" - , " spec: " ++ show es - , " elems: " ++ show (filter (not . (`conformsToSpec` es)) (Set.toList s)) - ] - | not $ null cant -> ErrorSpec ["propagateSpecFun Union TypeSpec, not (null cant)"] - | TrueSpec <- size -> typeSpec $ SetSpec (Set.difference must s) es TrueSpec - | otherwise -> constrained $ \x -> - exists (\eval -> pure $ Set.intersection (eval x) s) $ \overlap -> - exists (\eval -> pure $ Set.difference (eval x) s) $ \disjoint -> - [ assert $ overlap `subset_` Lit s - , assert $ disjoint `disjoint_` Lit s - , satisfies (size_ disjoint + Lit (sizeOf s)) size - , assert $ x ==. overlap <> disjoint - ] - -- TODO: shortcut more cases? - -- Lower bound and |s| >= bound: mempty - -- Upper bound and |s| == bound: X `subset` s - MemberSpec [e] -> typeSpec (SetSpec (Set.difference e s) (MemberSpec $ Set.toList e) mempty) - -- This risks blowing up too much, don't build sets of sets - MemberSpec {} -> ErrorSpec ["propagateSpecFun Union MemberSpec"] - Subset - | HOLE :? Value (s :: Set a) :> Nil <- ctx - , Evidence <- prerequisites @fn @(Set a) -> caseBoolSpec spec $ \case - True -> - if Set.null s - then MemberSpec [Set.empty] - else typeSpec $ SetSpec mempty (MemberSpec $ Set.toList s) mempty - False -> constrained $ \set -> - exists (\eval -> headGE $ Set.difference (eval set) s) $ \e -> - [ set `DependsOn` e - , assert $ not_ $ member_ e (Lit s) - , assert $ member_ e set - ] - | Value (s :: Set a) :! NilCtx HOLE <- ctx - , Evidence <- prerequisites @fn @(Set a) -> caseBoolSpec spec $ \case - True -> typeSpec $ SetSpec s TrueSpec mempty - False -> constrained $ \set -> - exists (\eval -> headGE $ Set.difference (eval set) s) $ \e -> - [ set `DependsOn` e - , assert $ member_ e (Lit s) - , assert $ not_ $ member_ e set - ] - Member - | HOLE :? Value s :> Nil <- ctx -> caseBoolSpec spec $ \case - True -> MemberSpec $ Set.toList s - False -> notMemberSpec s - | Value e :! NilCtx HOLE <- ctx -> caseBoolSpec spec $ \case - True -> typeSpec $ SetSpec (Set.singleton e) mempty mempty - False -> typeSpec $ SetSpec mempty (notEqualSpec e) mempty - Elem - | HOLE :? Value es :> Nil <- ctx -> caseBoolSpec spec $ \case - True -> MemberSpec es - False -> notMemberSpec es - | Value e :! NilCtx HOLE <- ctx -> caseBoolSpec spec $ \case - True -> typeSpec $ ListSpec Nothing [e] mempty mempty NoFold - False -> typeSpec $ ListSpec Nothing mempty mempty (notEqualSpec e) NoFold - Disjoint - | HOLE :? Value (s :: Set a) :> Nil <- ctx -> - propagateSpecFun @(SetFn fn) @fn Disjoint (Value s :! NilCtx HOLE) spec - | Value (s :: Set a) :! NilCtx HOLE <- ctx - , Evidence <- prerequisites @fn @(Set a) -> caseBoolSpec spec $ \case - True -> typeSpec $ SetSpec mempty (notMemberSpec s) mempty - False -> constrained $ \set -> - exists (\eval -> headGE (Set.intersection (eval set) s)) $ \e -> - [ set `DependsOn` e - , assert $ member_ e (Lit s) - , assert $ member_ e set - ] - - rewriteRules Elem (_ :> Lit [] :> Nil) = Just $ Lit False - rewriteRules Member (_ :> Lit s :> Nil) | null s = Just $ Lit False - rewriteRules Union (x :> Lit s :> Nil) | null s = Just x - rewriteRules Union (Lit s :> x :> Nil) | null s = Just x - rewriteRules _ _ = Nothing - - -- NOTE: this function over-approximates and returns a liberal spec. - mapTypeSpec f ts = case f of - Singleton -> - constrained $ \x -> - unsafeExists $ \x' -> - assert (x ==. singleton_ x') <> toPreds x' ts - --- List ------------------------------------------------------------------- - -data ListSpec fn a = ListSpec (Maybe Integer) [a] (Spec fn Integer) (Spec fn a) (FoldSpec fn a) - -deriving instance Show (FoldSpec fn a) -deriving instance HasSpec fn a => Show (ListSpec fn a) - -instance HasSpec fn a => HasSpec fn [a] where - type TypeSpec fn [a] = ListSpec fn a - emptySpec = ListSpec Nothing [] mempty mempty NoFold - combineSpec (ListSpec msz must size elemS foldS) (ListSpec msz' must' size' elemS' foldS') = fromGE ErrorSpec $ do - let must'' = nub $ must <> must' - elemS'' = elemS <> elemS' - size'' = size <> size' - unless (all (`conformsToSpec` elemS'') must'') $ - genError ["combineSpec ListSpec failed with "] - typeSpec . ListSpec (unionWithMaybe min msz msz') must'' size'' elemS'' - <$> combineFoldSpec foldS foldS' - - genFromTypeSpec (ListSpec msz must TrueSpec elemS NoFold) = do - lst <- case msz of - Nothing -> listOfT $ genFromSpec elemS - Just szHint -> do - sz <- genFromSizeSpec (leqSpec @fn szHint) - listOfUntilLenT (genFromSpec elemS) (fromIntegral sz) (const True) - pureGen $ shuffle (must ++ lst) - genFromTypeSpec (ListSpec msz must szSpec elemS NoFold) = do - sz0 <- genFromSizeSpec (szSpec <> geqSpec @fn (sizeOf must) <> maybe TrueSpec leqSpec msz) - let sz = fromIntegral (sz0 - sizeOf must) - lst <- - listOfUntilLenT - (genFromSpec elemS) - sz - ((`conformsToSpec` szSpec) . (+ sizeOf must) . fromIntegral) - pureGen $ shuffle (must ++ lst) - genFromTypeSpec (ListSpec msz must size elemS (FoldSpec f foldS)) = do - genFromFold must (size <> maybe TrueSpec leqSpec msz) elemS f foldS - - shrinkWithTypeSpec (ListSpec _ _ _ es _) as = - shrinkList (shrinkWithSpec es) as - - conformsTo xs (ListSpec _ must size elemS foldS) = - sizeOf xs `conformsToSpec` size - && all (`elem` xs) must - && all (`conformsToSpec` elemS) xs - && xs `conformsToFoldSpec` foldS - - toPreds x (ListSpec msz must size elemS foldS) = - (forAll x $ \x' -> satisfies x' elemS) - <> (forAll (lit must) $ \x' -> assert (elem_ x' x)) - <> toPredsFoldSpec x foldS - <> satisfies (sizeOf_ x) size - <> maybe TruePred (flip genHint x) msz - -instance HasSpec fn a => HasGenHint fn [a] where - type Hint [a] = Integer - giveHint szHint = typeSpec $ ListSpec (Just szHint) [] mempty mempty NoFold - -instance Forallable [a] a where - forAllSpec es = typeSpec (ListSpec Nothing [] mempty es NoFold) - forAllToList = id - --- Numbers ---------------------------------------------------------------- - -class MaybeBounded a where - lowerBound :: Maybe a - upperBound :: Maybe a - - default lowerBound :: Bounded a => Maybe a - lowerBound = Just minBound - - default upperBound :: Bounded a => Maybe a - upperBound = Just maxBound - -instance MaybeBounded Int -instance MaybeBounded Int64 -instance MaybeBounded Int32 -instance MaybeBounded Int16 -instance MaybeBounded Int8 -instance MaybeBounded Word64 -instance MaybeBounded Word32 -instance MaybeBounded Word16 -instance MaybeBounded Word8 - -instance MaybeBounded Integer where - lowerBound = Nothing - upperBound = Nothing - -instance MaybeBounded (Ratio Integer) where - lowerBound = Nothing - upperBound = Nothing - -instance MaybeBounded Natural where - lowerBound = Just 0 - upperBound = Nothing - -instance MaybeBounded Float where - lowerBound = Nothing - upperBound = Nothing - -data NumSpec n = NumSpecInterval (Maybe n) (Maybe n) - deriving (Ord, Eq) - -instance Show n => Show (NumSpec n) where - show (NumSpecInterval ml mu) = lb ++ ".." ++ ub - where - lb = "[" ++ maybe "" show ml - ub = maybe "" show mu ++ "]" - -instance Ord n => Semigroup (NumSpec n) where - NumSpecInterval ml mu <> NumSpecInterval ml' mu' = - NumSpecInterval - (unionWithMaybe max ml ml') - (unionWithMaybe min mu mu') - -instance Ord n => Monoid (NumSpec n) where - mempty = NumSpecInterval Nothing Nothing - -instance Arbitrary Natural where - arbitrary = wordToNatural . abs <$> arbitrary - shrink n = [wordToNatural w | w <- shrink (naturalToWord n)] - -instance Uniform Natural where - uniformM g = wordToNatural . abs <$> uniformM g -instance Random Natural where - randomR (lo, hi) g = first fromIntegral $ randomR (toInteger lo, toInteger hi) g - -instance Random (Ratio Integer) where - randomR (lo, hi) g = - let (r, g') = random g - in (lo + (hi - lo) * r, g') - random g = - let (d, g') = first ((+ 1) . abs) $ random g - (n, g'') = randomR (0, d) g' - in (n % d, g'') - -emptyNumSpec :: Ord a => NumSpec a -emptyNumSpec = mempty - -combineNumSpec :: - (HasSpec fn n, Ord n, TypeSpec fn n ~ NumSpec n) => NumSpec n -> NumSpec n -> Spec fn n -combineNumSpec s s' = case s <> s' of - s''@(NumSpecInterval (Just a) (Just b)) | a > b -> ErrorSpec [show s''] - s'' -> typeSpec s'' - -genFromNumSpec :: - (MonadGenError m, Show n, Random n, Ord n, Num n, MaybeBounded n) => - NumSpec n -> - GenT m n -genFromNumSpec (NumSpecInterval ml mu) = do - n <- sizeT - pureGen . choose =<< constrainInterval (ml <|> lowerBound) (mu <|> upperBound) (fromIntegral n) - --- TODO: fixme (?) -shrinkWithNumSpec :: Arbitrary n => NumSpec n -> n -> [n] -shrinkWithNumSpec _ = shrink - -constrainInterval :: - (MonadGenError m, Ord a, Num a, Show a) => Maybe a -> Maybe a -> Integer -> m (a, a) -constrainInterval ml mu r = - case (ml, mu) of - (Nothing, Nothing) -> pure (-r', r') - (Just l, Nothing) - | l < 0 -> pure (max l (negate r'), r') - | otherwise -> pure (l, l + 2 * r') - (Nothing, Just u) - | u > 0 -> pure (negate r', min u r') - | otherwise -> pure (u - r' - r', u) - (Just l, Just u) - | l > u -> genError ["bad interval: " ++ show l ++ " " ++ show u] - | u < 0 -> pure (safeSub l (safeSub l u r') r', u) - | l >= 0 -> pure (l, safeAdd u (safeAdd u l r') r') - -- TODO: this is a bit suspect if the bounds are lopsided - | otherwise -> pure (max l (-r'), min u r') - where - r' = abs $ fromInteger r - safeSub l a b - | a - b > a = l - | otherwise = max l (a - b) - safeAdd u a b - | a + b < a = u - | otherwise = min u (a + b) - -conformsToNumSpec :: Ord n => n -> NumSpec n -> Bool -conformsToNumSpec i (NumSpecInterval ml mu) = maybe True (<= i) ml && maybe True (i <=) mu - -toPredsNumSpec :: - ( Ord n - , OrdLike fn n - ) => - Term fn n -> - NumSpec n -> - Pred fn -toPredsNumSpec v (NumSpecInterval ml mu) = - fold $ - [assert $ Lit l <=. v | l <- maybeToList ml] - ++ [assert $ v <=. Lit u | u <- maybeToList mu] - -instance BaseUniverse fn => HasSpec fn Int where - type TypeSpec fn Int = NumSpec Int - emptySpec = emptyNumSpec - combineSpec = combineNumSpec - genFromTypeSpec = genFromNumSpec - shrinkWithTypeSpec = shrinkWithNumSpec - conformsTo = conformsToNumSpec - toPreds = toPredsNumSpec - -instance BaseUniverse fn => HasSpec fn Integer where - type TypeSpec fn Integer = NumSpec Integer - emptySpec = emptyNumSpec - combineSpec = combineNumSpec - genFromTypeSpec = genFromNumSpec - shrinkWithTypeSpec = shrinkWithNumSpec - conformsTo = conformsToNumSpec - toPreds = toPredsNumSpec - cardinalTypeSpec = cardinalSizeSpec - -instance BaseUniverse fn => HasSpec fn (Ratio Integer) where - type TypeSpec fn (Ratio Integer) = NumSpec (Ratio Integer) - emptySpec = emptyNumSpec - combineSpec = combineNumSpec - genFromTypeSpec = genFromNumSpec - shrinkWithTypeSpec = shrinkWithNumSpec - conformsTo = conformsToNumSpec - toPreds = toPredsNumSpec - -instance BaseUniverse fn => HasSpec fn Natural where - type TypeSpec fn Natural = NumSpec Natural - emptySpec = emptyNumSpec - combineSpec = combineNumSpec - genFromTypeSpec = genFromNumSpec - shrinkWithTypeSpec = shrinkWithNumSpec - conformsTo = conformsToNumSpec - toPreds = toPredsNumSpec - cardinalTypeSpec (NumSpecInterval (Just lo) (Just hi)) = - if hi >= lo then MemberSpec [fromIntegral @Natural @Integer (hi - lo + 1)] else MemberSpec [0] - cardinalTypeSpec (NumSpecInterval Nothing (Just hi)) = - MemberSpec [fromIntegral @Natural @Integer hi + 1] - cardinalTypeSpec _ = TrueSpec - -instance BaseUniverse fn => HasSpec fn Word8 where - type TypeSpec fn Word8 = NumSpec Word8 - emptySpec = emptyNumSpec - combineSpec = combineNumSpec - genFromTypeSpec = genFromNumSpec - shrinkWithTypeSpec = shrinkWithNumSpec - conformsTo = conformsToNumSpec - toPreds = toPredsNumSpec - cardinalTypeSpec = cardinalSizeSpec - typeSpecOpt = notInNumSpec - -instance BaseUniverse fn => HasSpec fn Word16 where - type TypeSpec fn Word16 = NumSpec Word16 - emptySpec = emptyNumSpec - combineSpec = combineNumSpec - genFromTypeSpec = genFromNumSpec - shrinkWithTypeSpec = shrinkWithNumSpec - conformsTo = conformsToNumSpec - toPreds = toPredsNumSpec - cardinalTypeSpec = cardinalSizeSpec - -instance BaseUniverse fn => HasSpec fn Word32 where - type TypeSpec fn Word32 = NumSpec Word32 - emptySpec = emptyNumSpec - combineSpec = combineNumSpec - genFromTypeSpec = genFromNumSpec - shrinkWithTypeSpec = shrinkWithNumSpec - conformsTo = conformsToNumSpec - toPreds = toPredsNumSpec - cardinalTypeSpec = cardinalSizeSpec - -instance BaseUniverse fn => HasSpec fn Word64 where - type TypeSpec fn Word64 = NumSpec Word64 - emptySpec = emptyNumSpec - combineSpec = combineNumSpec - genFromTypeSpec = genFromNumSpec - shrinkWithTypeSpec = shrinkWithNumSpec - conformsTo = conformsToNumSpec - toPreds = toPredsNumSpec - -instance BaseUniverse fn => HasSpec fn Int8 where - type TypeSpec fn Int8 = NumSpec Int8 - emptySpec = emptyNumSpec - combineSpec = combineNumSpec - genFromTypeSpec = genFromNumSpec - shrinkWithTypeSpec = shrinkWithNumSpec - conformsTo = conformsToNumSpec - toPreds = toPredsNumSpec - cardinalTypeSpec = cardinalSizeSpec - -instance BaseUniverse fn => HasSpec fn Int16 where - type TypeSpec fn Int16 = NumSpec Int16 - emptySpec = emptyNumSpec - combineSpec = combineNumSpec - genFromTypeSpec = genFromNumSpec - shrinkWithTypeSpec = shrinkWithNumSpec - conformsTo = conformsToNumSpec - toPreds = toPredsNumSpec - cardinalTypeSpec = cardinalSizeSpec - -instance BaseUniverse fn => HasSpec fn Int32 where - type TypeSpec fn Int32 = NumSpec Int32 - emptySpec = emptyNumSpec - combineSpec = combineNumSpec - genFromTypeSpec = genFromNumSpec - shrinkWithTypeSpec = shrinkWithNumSpec - conformsTo = conformsToNumSpec - toPreds = toPredsNumSpec - cardinalTypeSpec = cardinalSizeSpec - -instance BaseUniverse fn => HasSpec fn Int64 where - type TypeSpec fn Int64 = NumSpec Int64 - emptySpec = emptyNumSpec - combineSpec = combineNumSpec - genFromTypeSpec = genFromNumSpec - shrinkWithTypeSpec = shrinkWithNumSpec - conformsTo = conformsToNumSpec - toPreds = toPredsNumSpec - cardinalTypeSpec = cardinalSizeSpec - -instance BaseUniverse fn => HasSpec fn Float where - type TypeSpec fn Float = NumSpec Float - emptySpec = emptyNumSpec - combineSpec = combineNumSpec - genFromTypeSpec = genFromNumSpec - shrinkWithTypeSpec = shrinkWithNumSpec - conformsTo = conformsToNumSpec - toPreds = toPredsNumSpec - ------------------------------------------------------------------------------------ --- The Base Function universe defines operations on TypeSpec defined in the Base. --- See module Test.Cardano.Ledger.Constrained.V2.Conway for a Universe --- that is an extension of the Base Universe. ------------------------------------------------------------------------------------ - -type BaseFns = - '[EqFn, SetFn, BoolFn, PairFn, IntFn, OrdFn, GenericsFn, ListFn, SumFn, MapFn, FunFn, SizeFn] -type BaseFn = Fix (OneofL BaseFns) - --- | A minimal Universe contains functions for a bunch of different things. -type BaseUniverse fn = - ( Functions fn fn - , Member (EqFn fn) fn - , Member (SetFn fn) fn - , Member (BoolFn fn) fn - , Member (PairFn fn) fn - , Member (IntFn fn) fn - , Member (OrdFn fn) fn - , Member (GenericsFn fn) fn - , Member (ListFn fn) fn - , Member (SumFn fn) fn - , Member (MapFn fn) fn - , Member (FunFn fn) fn - , Member (SizeFn fn) fn - ) - --- Higher order functions ------------------------------------------------- - -idFn :: forall fn a. Member (FunFn fn) fn => fn '[a] a -idFn = injectFn $ Id @fn - -composeFn :: - ( Member (FunFn fn) fn - , HasSpec fn b - , Show (fn '[a] b) - , Show (fn '[b] c) - , Eq (fn '[a] b) - , Eq (fn '[b] c) - ) => - fn '[b] c -> - fn '[a] b -> - fn '[a] c -composeFn f g = injectFn $ Compose f g - -data FunFn fn args res where - Id :: FunFn fn '[a] a - Compose :: - ( Typeable b - , HasSpec fn b - , Show (fn '[a] b) - , Show (fn '[b] c) - , Eq (fn '[a] b) - , Eq (fn '[b] c) - ) => - fn '[b] c -> - fn '[a] b -> - FunFn fn '[a] c - --- TODO: Doing this opens up a few issues: --- 1. You need the functions to be linear --- 2. You will need to track free variables --- in functions --- 3. You will need to sort out dependencies --- in functions (just do it the normal way, --- left depends on right) --- 4. You need to turn `mapSpec` into something that --- takes a whole context instead of just a `fn` --- Another option to avoid (2) and (3) is to simply --- require that lambdas are closed. This might be a --- workeable first step that we can get quite far on. --- Lam :: (HasSpec fn a, HasSpec fn b) --- => Var a -> Term fn b -> FunFn fn '[a] b - -deriving instance Show (FunFn fn args res) - -instance Typeable fn => Eq (FunFn fn args res) where - Compose (f :: fn '[b] c) f' == Compose (g :: fn '[b'] c') g' - | Just Refl <- eqT @b @b' = f == g && f' == g' - Compose {} == _ = False - Id == Id = True - Id == _ = False - -instance FunctionLike fn => FunctionLike (FunFn fn) where - sem = \case - Id -> id - Compose f g -> sem f . sem g - --- Lam x t -> \ a -> errorGE $ runTerm (singletonEnv x a) t - -instance (BaseUniverse fn, Member (FunFn fn) fn) => Functions (FunFn fn) fn where - propagateSpecFun _ _ (ErrorSpec err) = ErrorSpec err - propagateSpecFun fn ctx spec = case fn of - Id | NilCtx HOLE <- ctx -> spec - Compose f g | NilCtx HOLE <- ctx -> propagateSpecFun g (NilCtx HOLE) $ propagateSpecFun f (NilCtx HOLE) spec - - -- Lam x t | NilCtx HOLE <- ctx -> fromGE ErrorSpec $ propagateSpec spec <$> toCtx x t - - -- NOTE: this function over-approximates and returns a liberal spec. - mapTypeSpec f ts = case f of - Id -> typeSpec ts - Compose g h -> mapSpec g . mapSpec h $ typeSpec ts - - rewriteRules Id (x :> Nil) = Just x - rewriteRules (Compose f g) (x :> Nil) = Just $ app f (app g x) - --- TODO: to solve this problem we need to generalize mapSpec to work on contexts, which means --- we need to generalize mapTypeSpec to work on contexts too --- Lam x t -> _ - --- Ord functions ---------------------------------------------------------- - -lessOrEqualFn :: forall fn a. (Ord a, OrdLike fn a) => fn '[a, a] Bool -lessOrEqualFn = injectFn (LessOrEqual @_ @fn) - -lessFn :: forall fn a. (Ord a, OrdLike fn a) => fn '[a, a] Bool -lessFn = injectFn (Less @_ @fn) - -data OrdFn (fn :: [Type] -> Type -> Type) as b where - LessOrEqual :: (Ord a, OrdLike fn a) => OrdFn fn '[a, a] Bool - Less :: (Ord a, OrdLike fn a) => OrdFn fn '[a, a] Bool - -class HasSpec fn a => OrdLike fn a where - leqSpec :: a -> Spec fn a - default leqSpec :: - ( TypeSpec fn a ~ TypeSpec fn (SimpleRep a) - , HasSimpleRep a - , OrdLike fn (SimpleRep a) - ) => - a -> - Spec fn a - leqSpec = fromSimpleRepSpec . leqSpec @fn . toSimpleRep - - ltSpec :: a -> Spec fn a - default ltSpec :: - ( TypeSpec fn a ~ TypeSpec fn (SimpleRep a) - , HasSimpleRep a - , OrdLike fn (SimpleRep a) - ) => - a -> - Spec fn a - ltSpec = fromSimpleRepSpec . ltSpec @fn . toSimpleRep - - geqSpec :: a -> Spec fn a - default geqSpec :: - ( TypeSpec fn a ~ TypeSpec fn (SimpleRep a) - , HasSimpleRep a - , OrdLike fn (SimpleRep a) - ) => - a -> - Spec fn a - geqSpec = fromSimpleRepSpec . geqSpec @fn . toSimpleRep - - gtSpec :: a -> Spec fn a - default gtSpec :: - ( TypeSpec fn a ~ TypeSpec fn (SimpleRep a) - , HasSimpleRep a - , OrdLike fn (SimpleRep a) - ) => - a -> - Spec fn a - gtSpec = fromSimpleRepSpec . gtSpec @fn . toSimpleRep - -instance {-# OVERLAPPABLE #-} (HasSpec fn a, MaybeBounded a, Num a, TypeSpec fn a ~ NumSpec a) => OrdLike fn a where - leqSpec l = typeSpec $ NumSpecInterval Nothing (Just l) - ltSpec l - | Just b <- lowerBound - , l == b = - ErrorSpec ["ltSpec @" ++ show (typeOf l) ++ " " ++ show l] - | otherwise = typeSpec $ NumSpecInterval Nothing (Just (l - 1)) - geqSpec l = typeSpec $ NumSpecInterval (Just l) Nothing - gtSpec l - | Just b <- upperBound - , l == b = - ErrorSpec ["gtSpec @" ++ show (typeOf l) ++ " " ++ show l] - | otherwise = typeSpec $ NumSpecInterval (Just (l + 1)) Nothing - -deriving instance Eq (OrdFn fn as b) -deriving instance Show (OrdFn fn as b) - -instance FunctionLike (OrdFn fn) where - sem LessOrEqual = (<=) - sem Less = (<) - -instance BaseUniverse fn => Functions (OrdFn fn) fn where - propagateSpecFun _ _ TrueSpec = TrueSpec - propagateSpecFun _ _ (ErrorSpec err) = ErrorSpec err - propagateSpecFun fn (ListCtx pre HOLE suf) (SuspendedSpec x p) = - constrained $ \x' -> - let args = appendList (mapList (\(Value a) -> Lit a) pre) (x' :> mapList (\(Value a) -> Lit a) suf) - in Let (App (injectFn fn) args) (x :-> p) - propagateSpecFun LessOrEqual ctx spec - | HOLE :? Value l :> Nil <- ctx = caseBoolSpec spec $ \case - True -> leqSpec @fn l - False -> gtSpec @fn l - | Value l :! NilCtx HOLE <- ctx = caseBoolSpec spec $ \case - True -> geqSpec @fn l - False -> ltSpec @fn l - propagateSpecFun Less ctx spec - | HOLE :? Value l :> Nil <- ctx = caseBoolSpec spec $ \case - True -> ltSpec @fn l - False -> geqSpec @fn l - | Value l :! NilCtx HOLE <- ctx = caseBoolSpec spec $ \case - True -> gtSpec @fn l - False -> leqSpec @fn l - - mapTypeSpec = error "No cases" - --- List functions --------------------------------------------------------- - -data ListFn fn args res where - FoldMap :: - ( HasSpec fn a - , Foldy fn b - , Show (fn '[a] b) - , Eq (fn '[a] b) - ) => - fn '[a] b -> - ListFn fn '[[a]] b - -{- TODO add these? - AppendFn :: ListFn fn '[[a],[a]] [a] - ConsFn :: ListFn fn '[a.[a]] [a] --} - -deriving instance Show (ListFn fn args res) - -instance Typeable fn => Eq (ListFn fn args res) where - FoldMap f == FoldMap g = cast f == Just g - -instance FunctionLike fn => FunctionLike (ListFn fn) where - sem = \case - FoldMap f -> adds @fn . map (sem f) - -instance BaseUniverse fn => Functions (ListFn fn) fn where - propagateSpecFun _ _ (ErrorSpec err) = ErrorSpec err - propagateSpecFun fn ctx spec = case fn of - _ - | SuspendedSpec x p <- spec - , ListCtx pre HOLE suf <- ctx -> - constrained $ \v' -> - let args = appendList (mapList (\(Value a) -> Lit a) pre) (v' :> mapList (\(Value a) -> Lit a) suf) - in Let (App (injectFn fn) args) (x :-> p) - FoldMap f | NilCtx HOLE <- ctx -> typeSpec (ListSpec Nothing [] TrueSpec TrueSpec $ FoldSpec f spec) - - -- NOTE: this function over-approximates and returns a liberal spec. - mapTypeSpec f ts = case f of - FoldMap g -> - constrained $ \x -> - unsafeExists $ \x' -> - assert (x ==. app (foldMapFn g) x') <> toPreds x' ts - -foldMapFn :: - forall fn a b. - ( HasSpec fn a - , Foldy fn b - , Show (fn '[a] b) - , Eq (fn '[a] b) - ) => - fn '[a] b -> - fn '[[a]] b -foldMapFn f = injectFn $ FoldMap @fn f - --- Number functions ------------------------------------------------------- - -addFn :: forall fn a. NumLike fn a => fn '[a, a] a -addFn = injectFn (Add @fn) - -negateFn :: forall fn a. NumLike fn a => fn '[a] a -negateFn = injectFn (Negate @fn) - -data IntFn (fn :: [Type] -> Type -> Type) as b where - Add :: NumLike fn a => IntFn fn '[a, a] a - Negate :: NumLike fn a => IntFn fn '[a] a - -deriving instance Eq (IntFn fn as b) -deriving instance Show (IntFn fn as b) - -instance FunctionLike (IntFn fn) where - sem Add = (+) - sem Negate = negate - -class (Num a, HasSpec fn a) => NumLike fn a where - subtractSpec :: a -> TypeSpec fn a -> Spec fn a - default subtractSpec :: - ( TypeSpec fn a ~ TypeSpec fn (SimpleRep a) - , HasSimpleRep a - , NumLike fn (SimpleRep a) - ) => - a -> - TypeSpec fn a -> - Spec fn a - subtractSpec a ts = fromSimpleRepSpec $ subtractSpec @fn (toSimpleRep a) ts - - negateSpec :: TypeSpec fn a -> Spec fn a - default negateSpec :: - ( TypeSpec fn a ~ TypeSpec fn (SimpleRep a) - , HasSimpleRep a - , NumLike fn (SimpleRep a) - ) => - TypeSpec fn a -> - Spec fn a - negateSpec = fromSimpleRepSpec . negateSpec @fn @(SimpleRep a) - - safeSubtract :: a -> a -> Maybe a - default safeSubtract :: - (HasSimpleRep a, NumLike fn (SimpleRep a)) => - a -> - a -> - Maybe a - safeSubtract a b = fromSimpleRep <$> safeSubtract @fn @(SimpleRep a) (toSimpleRep a) (toSimpleRep b) - -instance NumLike fn a => Num (Term fn a) where - (+) = app addFn - negate = app negateFn - fromInteger = Lit . fromInteger - (*) = error "(*) not implemented for Term Fn Int" - abs = error "abs not implemented for Term Fn Int" - signum = error "signum not implemented for Term Fn Int" - -instance {-# OVERLAPPABLE #-} (HasSpec fn a, Ord a, Num a, TypeSpec fn a ~ NumSpec a, MaybeBounded a) => NumLike fn a where - subtractSpec a ts@(NumSpecInterval ml mu) - | Just u <- mu - , a > 0 - , Nothing <- safeSubtract @fn a u = - ErrorSpec - [ "Underflow in subtractSpec (" ++ show (typeOf a) ++ "):" - , " a = " ++ show a - , " ts = " ++ show ts - ] - | Just l <- ml - , a < 0 - , Nothing <- safeSubtract @fn a l = - ErrorSpec - [ "Overflow in subtractSpec (" ++ show (typeOf a) ++ "):" - , " a = " ++ show a - , " ts = " ++ show ts - ] - | otherwise = typeSpec $ NumSpecInterval (safeSub a <$> ml) (safeSub a <$> mu) - where - safeSub :: a -> a -> a - safeSub a x - | Just r <- safeSubtract @fn a x = r - | a < 0 = fromJust upperBound - | otherwise = fromJust lowerBound - negateSpec (NumSpecInterval ml mu) = typeSpec $ NumSpecInterval (negate <$> mu) (negate <$> ml) - - safeSubtract a x - | a > 0 - , Just lb <- lowerBound - , lb + a > x = - Nothing - | a < 0 - , Just ub <- upperBound - , ub + a < x = - Nothing - | otherwise = Just $ x - a - -instance BaseUniverse fn => Functions (IntFn fn) fn where - propagateSpecFun _ _ TrueSpec = TrueSpec - propagateSpecFun _ _ (ErrorSpec err) = ErrorSpec err - propagateSpecFun fn (ListCtx pre HOLE suf) (SuspendedSpec x p) = - constrained $ \x' -> - let args = appendList (mapList (\(Value a) -> Lit a) pre) (x' :> mapList (\(Value a) -> Lit a) suf) - in Let (App (injectFn fn) args) (x :-> p) - propagateSpecFun Add ctx spec - | Value i :! NilCtx HOLE <- ctx = propagateSpecFun @(IntFn fn) @fn Add (HOLE :? Value i :> Nil) spec - | HOLE :? Value i :> Nil <- ctx = - case spec of - TypeSpec ts cant -> - subtractSpec @fn i ts <> notMemberSpec (catMaybes $ map (safeSubtract @fn i) cant) - MemberSpec es -> MemberSpec $ catMaybes (map (safeSubtract @fn i) es) - propagateSpecFun Negate (NilCtx HOLE) spec = case spec of - TypeSpec ts (cant :: OrdSet a) -> - negateSpec @fn @a ts <> notMemberSpec (map negate cant) - MemberSpec es -> MemberSpec $ map negate es - - mapTypeSpec Negate (ts :: TypeSpec fn a) = - negateSpec @fn @a ts - ------------------------------------------------------------------------- --- Syntax ------------------------------------------------------------------------- - --- Functions on terms ----------------------------------------------------- - -toGeneric_ :: - forall a fn. - ( HasSpec fn a - , HasSpec fn (SimpleRep a) - , HasSimpleRep a - , TypeSpec fn a ~ TypeSpec fn (SimpleRep a) - ) => - Term fn a -> - Term fn (SimpleRep a) -toGeneric_ = app toGenericFn - -fromGeneric_ :: - forall a fn. - ( HasSpec fn a - , HasSpec fn (SimpleRep a) - , HasSimpleRep a - , TypeSpec fn a ~ TypeSpec fn (SimpleRep a) - ) => - Term fn (SimpleRep a) -> - Term fn a -fromGeneric_ = app fromGenericFn - -not_ :: - BaseUniverse fn => - Term fn Bool -> - Term fn Bool -not_ = app notFn - -infixr 2 ||. -(||.) :: - BaseUniverse fn => - Term fn Bool -> - Term fn Bool -> - Term fn Bool -(||.) = app orFn - -elem_ :: - forall a fn. - HasSpec fn a => - Term fn a -> - Term fn [a] -> - Term fn Bool -elem_ = app elemFn - -member_ :: - forall a fn. - ( HasSpec fn a - , Ord a - ) => - Term fn a -> - Term fn (Set a) -> - Term fn Bool -member_ = app memberFn - -subset_ :: - ( HasSpec fn a - , Ord a - ) => - Term fn (Set a) -> - Term fn (Set a) -> - Term fn Bool -subset_ = app subsetFn - -disjoint_ :: - ( HasSpec fn a - , Ord a - ) => - Term fn (Set a) -> - Term fn (Set a) -> - Term fn Bool -disjoint_ = app disjointFn - -singleton_ :: - ( HasSpec fn a - , Ord a - ) => - Term fn a -> - Term fn (Set a) -singleton_ = app singletonFn - -union_ :: - forall a fn. - ( HasSpec fn a - , Ord a - ) => - Term fn (Set a) -> - Term fn (Set a) -> - Term fn (Set a) -union_ = app unionFn - -sizeOf_ :: - forall a fn. - (HasSpec fn a, Sized a) => - Term fn a -> - Term fn Integer -sizeOf_ = app sizeOfFn - --- | special instance of sizeOf (for Sets) for backward compatibility -size_ :: - forall a fn. - (HasSpec fn (Set a), Ord a) => - Term fn (Set a) -> - Term fn Integer -size_ = app sizeOfFn - --- | special instance of sizeOf (for Lists) for backward compatibility -length_ :: - forall a fn. - HasSpec fn [a] => - Term fn [a] -> - Term fn Integer -length_ = app sizeOfFn - -null_ :: (HasSpec fn a, Sized a) => Term fn a -> Term fn Bool -null_ xs = sizeOf_ xs ==. 0 - --- ##### - -infix 4 <=., <., ==., /=. - -(<=.) :: - ( Ord a - , OrdLike fn a - ) => - Term fn a -> - Term fn a -> - Term fn Bool -(<=.) = app lessOrEqualFn - -(<.) :: - ( Ord a - , OrdLike fn a - ) => - Term fn a -> - Term fn a -> - Term fn Bool -(<.) = app lessFn - -(==.) :: - HasSpec fn a => - Term fn a -> - Term fn a -> - Term fn Bool -(==.) = app equalFn - -(/=.) :: - HasSpec fn a => - Term fn a -> - Term fn a -> - Term fn Bool -a /=. b = not_ (a ==. b) - -sum_ :: - ( BaseUniverse fn - , Member (FunFn fn) fn - , Foldy fn a - ) => - Term fn [a] -> - Term fn a -sum_ = app (foldMapFn idFn) - -foldMap_ :: - ( BaseUniverse fn - , Foldy fn b - , HasSpec fn a - ) => - fn '[a] b -> - Term fn [a] -> - Term fn b -foldMap_ fn = app (foldMapFn fn) - --- Language constructs ---------------------------------------------------- - -constrained :: - forall a fn p. - (IsPred p fn, HasSpec fn a) => - (Term fn a -> p) -> - Spec fn a -constrained body = - let x :-> p = bind body - in computeSpecSimplified x (optimisePred p) - -assertExplain :: - (BaseUniverse fn, IsPred p fn) => - [String] -> - p -> - Pred fn -assertExplain = toPredExplain - -assert :: - (BaseUniverse fn, IsPred p fn) => - p -> - Pred fn -assert = toPred - -forAll :: - ( Forallable t a - , HasSpec fn t - , HasSpec fn a - , IsPred p fn - ) => - Term fn t -> - (Term fn a -> p) -> - Pred fn -forAll tm body = ForAll tm (bind body) - -exists :: - forall a p fn. - (HasSpec fn a, IsPred p fn) => - ((forall b. Term fn b -> b) -> GE a) -> - (Term fn a -> p) -> - Pred fn -exists sem k = - Exists sem $ bind k - -unsafeExists :: - forall a p fn. - (HasSpec fn a, IsPred p fn) => - (Term fn a -> p) -> - Pred fn -unsafeExists = exists (\_ -> fatalError ["unsafeExists"]) - -letBind :: - ( HasSpec fn a - , IsPred p fn - ) => - Term fn a -> - (Term fn a -> p) -> - Pred fn -letBind tm@V {} body = toPred $ body tm -letBind tm body = Let tm (bind body) - -reify :: - ( HasSpec fn a - , HasSpec fn b - , IsPred p fn - ) => - Term fn a -> - (a -> b) -> - (Term fn b -> p) -> - Pred fn -reify tm f body = - mkReify tm f (bind body) - -dependsOn :: (HasSpec fn a, HasSpec fn b) => Term fn a -> Term fn b -> Pred fn -dependsOn = DependsOn - -lit :: Show a => a -> Term fn a -lit = Lit - -genHint :: forall fn t. HasGenHint fn t => Hint t -> Term fn t -> Pred fn -genHint = GenHint - --- Internals -------------------------------------------------------------- - -app :: - ( HasSpec fn b - , Typeable as - , TypeList as - , All (HasSpec fn) as - ) => - fn as b -> - FunTy (MapList (Term fn) as) (Term fn b) -app fn = curryList (App fn) - -bind :: (HasSpec fn a, IsPred p fn) => (Term fn a -> p) -> Binder fn a -bind body = x :-> p - where - p = toPred $ body (V x) - x = Var (nextVar p) - - nextVar p = 1 + bound p - - boundBinder :: Binder fn a -> Int - boundBinder (x :-> p) = max (nameOf x) (bound p) - - bound (Subst _ _ p) = bound p - bound (Block ps) = maximum $ map bound ps - bound (Exists _ b) = boundBinder b - bound (Let _ b) = boundBinder b - bound (ForAll _ b) = boundBinder b - bound (Case _ cs) = getMax $ foldMapList (Max . boundBinder) cs - bound (Reify _ _ b) = boundBinder b - bound GenHint {} = -1 - bound Assert {} = -1 - bound DependsOn {} = -1 - bound TruePred = -1 - bound FalsePred {} = -1 - -mkReify :: (HasSpec fn a, HasSpec fn b) => Term fn a -> (a -> b) -> Binder fn b -> Pred fn -mkReify (Lit a) f b = unBind (f a) b -mkReify t f b = Reify t f b - -mkCase :: HasSpec fn (SumOver as) => Term fn (SumOver as) -> List (Binder fn) as -> Pred fn -mkCase tm cs - | x :-> p :> Nil <- cs = Subst x tm p - | getAll $ foldMapList isTrueBinder cs = TruePred - | getAll $ foldMapList isFalseBinder cs = FalsePred ["mkCase on all False"] - | Lit a <- tm = runCaseOn a cs (\x val p -> substPred (singletonEnv x val) p) - | otherwise = Case tm cs - where - isTrueBinder (_ :-> TruePred) = Semigroup.All True - isTrueBinder _ = Semigroup.All False - - isFalseBinder (_ :-> FalsePred {}) = Semigroup.All True - isFalseBinder _ = Semigroup.All False - --- Liberal syntax for what is a predicate --------------------------------- - -type IsPred p fn = (PredLike p, UnivConstr p fn) - -class PredLike p where - type UnivConstr p (fn :: [Type] -> Type -> Type) :: Constraint - toPredExplain :: (BaseUniverse fn, UnivConstr p fn) => [String] -> p -> Pred fn - -toPred :: (BaseUniverse fn, IsPred p fn) => p -> Pred fn -toPred = toPredExplain [] - -instance PredLike (Pred fn) where - type UnivConstr (Pred fn) fn' = fn ~ fn' - toPredExplain _ = id - -instance PredLike p => PredLike [p] where - type UnivConstr [p] fn = UnivConstr p fn - toPredExplain _ = fold . map toPred - -instance PredLike Bool where - type UnivConstr Bool fn = () - toPredExplain _ True = TruePred - toPredExplain es False = FalsePred es - -instance BaseUniverse fn => PredLike (Term fn Bool) where - type UnivConstr (Term fn Bool) fn' = fn ~ fn' - toPredExplain es (Lit b) = toPredExplain es b - toPredExplain es tm = Assert es tm - ------------------------------------------------------------------------- --- Pretty printing ------------------------------------------------------------------------- - -data WithPrec a = WithPrec Int a - -parensIf :: Bool -> Doc ann -> Doc ann -parensIf True = parens -parensIf False = id - -prettyPrec :: Pretty (WithPrec a) => Int -> a -> Doc ann -prettyPrec p = pretty . WithPrec p - -ppList :: - forall fn f as ann. - All (HasSpec fn) as => - (forall a. HasSpec fn a => f a -> Doc ann) -> - List f as -> - [Doc ann] -ppList _ Nil = [] -ppList pp (a :> as) = pp a : ppList @fn pp as - -ppList_ :: forall f as ann. (forall a. f a -> Doc ann) -> List f as -> [Doc ann] -ppList_ _ Nil = [] -ppList_ pp (a :> as) = pp a : ppList_ pp as - -instance HasSpec fn a => Pretty (WithPrec (Term fn a)) where - pretty (WithPrec p t) = case t of - Lit n -> fromString $ showsPrec p n "" - V x -> viaShow x - App f Nil -> viaShow f - App f as -> parensIf (p > 10) $ viaShow f <+> align (fillSep (ppList @fn (prettyPrec 11) as)) - -instance HasSpec fn a => Pretty (Term fn a) where - pretty = prettyPrec 0 - -vsep' :: [Doc ann] -> Doc ann -vsep' = align . mconcat . punctuate hardline - -(/>) :: Doc ann -> Doc ann -> Doc ann -h /> cont = hang 2 $ sep [h, align cont] - -infixl 5 /> - -instance Pretty (Pred fn) where - pretty = \case - Exists _ (x :-> p) -> align $ sep ["exists" <+> viaShow x <+> "in", pretty p] - Let t (x :-> p) -> align $ sep ["let" <+> viaShow x <+> "=" /> pretty t <+> "in", pretty p] - Block ps -> braces $ vsep' $ map pretty ps - Assert _err t -> "assert $" <+> pretty t - Reify t _ b -> "reify" <+> pretty (WithPrec 11 t) <+> "$ \\" <+> pretty b - DependsOn a b -> pretty a <+> "<-" /> pretty b - ForAll t (x :-> p) -> "forall" <+> viaShow x <+> "in" <+> pretty t <+> "$" /> pretty p - Case t bs -> "case" <+> pretty t <+> "of" /> vsep' (ppList_ pretty bs) - Subst x t p -> "[" <> pretty t <> "/" <> viaShow x <> "]" <> pretty p - GenHint h t -> "genHint" <+> fromString (showsPrec 11 h "") <+> "$" <+> pretty t - TruePred -> "True" - FalsePred {} -> "False" - -instance Pretty (Binder fn a) where - pretty (x :-> p) = viaShow x <+> "->" <+> pretty p - -instance HasSpec fn a => Show (Term fn a) where - showsPrec p t = shows $ pretty (WithPrec p t) - -instance Show (Pred fn) where - show = show . pretty - -instance HasSpec fn a => Pretty (WithPrec (Spec fn a)) where - pretty (WithPrec d s) = case s of - ErrorSpec es -> "ErrorSpec" /> vsep' (map fromString es) - TrueSpec -> "TrueSpec" - MemberSpec xs -> parensIf (d > 10) $ "MemberSpec" <+> viaShow xs - SuspendedSpec x p -> parensIf (d > 10) $ "constrained $ \\" <+> viaShow x <+> "->" /> pretty p - -- TODO: require pretty for `TypeSpec` to make this much nicer - TypeSpec ts cant -> - parensIf (d > 10) $ - "TypeSpec" - <+> fromString (showsPrec 11 ts "") - <+> viaShow cant - -instance HasSpec fn a => Pretty (Spec fn a) where - pretty = pretty . WithPrec 0 - -instance HasSpec fn a => Show (Spec fn a) where - showsPrec d = shows . pretty . WithPrec d - --- ====================================================================== --- Size and its 'generic' operations over Sized types. --- ====================================================================== - --- type Size = Integer - --- | Because Sizes should always be >= 0, We provide this alternate generator --- that can be used to replace (genFromSpec @Integer), to ensure this important property -genFromSizeSpec :: (BaseUniverse fn, MonadGenError m) => Spec fn Integer -> GenT m Integer -genFromSizeSpec integerSpec = genFromSpec (integerSpec <> geqSpec 0) - -data SizeFn (fn :: [Type] -> Type -> Type) as b where - SizeOf :: forall fn a. (Sized a, HasSpec fn a) => SizeFn fn '[a] Integer - -deriving instance Eq (SizeFn fn as b) -deriving instance Show (SizeFn fn as b) - -instance FunctionLike (SizeFn fn) where - sem SizeOf = sizeOf -- From the Sized class - -sizeOfFn :: forall fn a. (HasSpec fn a, Member (SizeFn fn) fn, Sized a) => fn '[a] Integer -sizeOfFn = injectFn $ SizeOf @fn @a - --- Operations on Size (specified in SizeFn) by the Functions instance - -instance (BaseUniverse fn, HasSpec fn Integer) => Functions (SizeFn fn) fn where - propagateSpecFun _ _ TrueSpec = TrueSpec - propagateSpecFun _ _ (ErrorSpec err) = ErrorSpec err - propagateSpecFun fn (ListCtx pre HOLE suf) (SuspendedSpec x p) = - constrained $ \x' -> - let args = appendList (mapList (\(Value a) -> Lit a) pre) (x' :> mapList (\(Value a) -> Lit a) suf) - in Let (App (injectFn fn) args) (x :-> p) - propagateSpecFun SizeOf (NilCtx HOLE) (TypeSpec x _) = liftSizeSpec x - propagateSpecFun SizeOf (NilCtx HOLE) (MemberSpec xs) = liftMemberSpec xs - - mapTypeSpec f ts = mapTypeSpecSize f ts - -mapTypeSpecSize :: forall fn a b f. f ~ SizeFn fn => f '[a] b -> TypeSpec fn a -> Spec fn b -mapTypeSpecSize f ts = case f of - SizeOf -> - constrained $ \x -> - unsafeExists $ \x' -> - assert (x ==. sizeOf_ x') <> toPreds @fn @a x' ts - --- ====================================== -type SizeSpec = NumSpec Integer - --- Operations that build SizeSpec from Integer, but raise an error if called on a negative numbers -exactSize :: Integer -> SizeSpec -exactSize a - | a >= 0 = rangeSize a a - | otherwise = error ("Negative Int in call to exactSize: " ++ show a) - -rangeSize :: Integer -> Integer -> SizeSpec -rangeSize a b | a < 0 || b < 0 = error ("Negative Int in call to rangeSize: " ++ show a ++ " " ++ show b) -rangeSize a b = NumSpecInterval (Just a) (Just b) - -atLeastSize :: Integer -> SizeSpec -atLeastSize a - | a < 0 = error ("Negative Int in call to atLeastSize: " ++ show a) - | otherwise = NumSpecInterval (Just a) Nothing - -atMostSize :: Integer -> SizeSpec -atMostSize a - | a < 0 = error ("Negative Int in call to atMostSize: " ++ show a) - | otherwise = NumSpecInterval Nothing (Just a) - -exactSizeSpec :: BaseUniverse fn => Integer -> Spec fn Integer -exactSizeSpec a = MemberSpec [a] - --- | The widest interval whose largest element is admitted by the original spec -maxSpec :: BaseUniverse fn => Spec fn Integer -> Spec fn Integer -maxSpec TrueSpec = TrueSpec -maxSpec s@(SuspendedSpec _ _) = - constrained $ \x -> unsafeExists $ \y -> [y `satisfies` s, Assert ["maxSpec on SuspendedSpec"] (x <=. y)] -maxSpec (ErrorSpec xs) = ErrorSpec xs -maxSpec (MemberSpec []) = ErrorSpec ["empty MemberSec in maxSpec."] -maxSpec (MemberSpec xs) = typeSpec (atMostSize (maximum xs)) -maxSpec (TypeSpec (NumSpecInterval _ hi) bad) = TypeSpec (NumSpecInterval Nothing hi) bad - --- ================ --- Sized --- ================ - -class Sized t where - sizeOf :: t -> Integer - liftSizeSpec :: HasSpec fn t => SizeSpec -> Spec fn t - liftMemberSpec :: HasSpec fn t => OrdSet Integer -> Spec fn t - sizeOfTypeSpec :: HasSpec fn t => TypeSpec fn t -> Spec fn Integer - -instance Ord a => Sized (Set.Set a) where - sizeOf = toInteger . Set.size - liftSizeSpec spec = typeSpec (SetSpec mempty TrueSpec (typeSpec spec)) - liftMemberSpec xs = typeSpec (SetSpec mempty TrueSpec (MemberSpec xs)) - sizeOfTypeSpec (SetSpec must _ sz) = sz <> (TypeSpec (atLeastSize (sizeOf must)) []) - -instance Sized [a] where - sizeOf = toInteger . length - liftSizeSpec spec = typeSpec (ListSpec Nothing mempty (typeSpec spec) TrueSpec NoFold) - liftMemberSpec xs = typeSpec (ListSpec Nothing mempty (MemberSpec xs) TrueSpec NoFold) - sizeOfTypeSpec (ListSpec _ _ _ ErrorSpec {} _) = equalSpec 0 - sizeOfTypeSpec (ListSpec _ must sizespec _ _) = sizespec <> (TypeSpec (atLeastSize (sizeOf must)) []) - --- How to constrain the size of any type, with a Sized instance -hasSize :: (HasSpec fn t, Sized t) => SizeSpec -> Spec fn t -hasSize sz = liftSizeSpec sz - --- ================================================================================== --- (NumSpec Integer) can support interval arithmetic, so we can make a (Num (NumSpec fn Integer)) instance --- Given operator ☉, then (a,b) ☉ (c,d) = (minimum s, maximum s) where s = [a ☉ c, a ☉ d, b ☉ c, b ☉ d] --- There are simpler rules for (+) and (-), but for (*) we need to use the general rule. - -addNumSpec :: NumSpec Integer -> NumSpec Integer -> NumSpec Integer -addNumSpec (NumSpecInterval x y) (NumSpecInterval a b) = NumSpecInterval ((+) <$> x <*> a) ((+) <$> y <*> b) - -subNumSpec :: NumSpec Integer -> NumSpec Integer -> NumSpec Integer -subNumSpec (NumSpecInterval x y) (NumSpecInterval a b) = NumSpecInterval ((-) <$> x <*> b) ((-) <$> y <*> a) - -multNumSpec :: NumSpec Integer -> NumSpec Integer -> NumSpec Integer -multNumSpec (NumSpecInterval a b) (NumSpecInterval c d) = NumSpecInterval (unT (minimum s)) (unT (maximum s)) - where - s = [multT (neg a) (neg c), multT (neg a) (pos d), multT (pos b) (neg c), multT (pos b) (pos d)] - -negNumSpec :: NumSpec Integer -> NumSpec Integer -negNumSpec (NumSpecInterval lo hi) = NumSpecInterval (negate <$> hi) (negate <$> lo) - -instance Num (NumSpec Integer) where - (+) = addNumSpec - (-) = subNumSpec - (*) = multNumSpec - negate = negNumSpec - fromInteger n = NumSpecInterval (Just (fromInteger n)) (Just (fromInteger n)) - abs = error "No abs in the Num (NumSpec Integer) instance" - signum = error "No signum in the Num (NumSpec Integer) instance" - --- ======================================================================== --- To implement the (HasSpec fn t) method: cardinalTypeSpec :: HasSpec fn a => TypeSpec fn a -> Spec fn Integer --- We are going to need some arithmetic-like operations on (Spec fn Integer) --- We will instance equations like these in some HasSpec instances --- --- cardinalTypeSpec (Cartesian x y) = 'multSpecInt' (cardinality x) (cardinality y) --- --- cardinalTypeSpec (SumSpec leftspec rightspec) = 'addSpecInt' (cardinality leftspec) (cardinality rightspec) --- --- To get those functions, we are going to have to lift opertions on (TypeSpec fn Integer) to (Spec fn Integer) - -addSpecInt :: BaseUniverse fn => Spec fn Integer -> Spec fn Integer -> Spec fn Integer -addSpecInt x y = operateSpec (+) (+) x y - -subSpecInt :: BaseUniverse fn => Spec fn Integer -> Spec fn Integer -> Spec fn Integer -subSpecInt x y = operateSpec (-) (-) x y - -multSpecInt :: BaseUniverse fn => Spec fn Integer -> Spec fn Integer -> Spec fn Integer -multSpecInt x y = operateSpec (*) (*) x y - --- | let 'n' be some numeric type, and 'f' and 'ft' be operations on 'n' and (TypeSpec fn n) --- Then lift these operations from (TypeSpec fn n) to (Spec fn n) --- Normally 'f' will be a (Num n) instance method (+,-,*) on n, --- and 'ft' will be a a (Num (TypeSpec fn n)) instance method (+,-,*) on (TypeSpec fn n) --- But this will work for any operations 'f' and 'ft' with the right types -operateSpec :: - (TypeSpec fn n ~ NumSpec n, Enum n, Ord n) => - (n -> n -> n) -> - (TypeSpec fn n -> TypeSpec fn n -> TypeSpec fn n) -> - Spec fn n -> - Spec fn n -> - Spec fn n -operateSpec f ft x y = case (x, y) of - (ErrorSpec xs, ErrorSpec ys) -> ErrorSpec (xs ++ ys) - (ErrorSpec xs, _) -> ErrorSpec xs - (_, ErrorSpec ys) -> ErrorSpec ys - (TrueSpec, _) -> TrueSpec - (_, TrueSpec) -> TrueSpec - (_, SuspendedSpec _ _) -> TrueSpec - (SuspendedSpec _ _, _) -> TrueSpec - (TypeSpec x bad1, TypeSpec y bad2) -> TypeSpec (ft x y) [f b1 b2 | b1 <- bad1, b2 <- bad2] - (MemberSpec [], _) -> ErrorSpec ["Null MemberSpec"] - (_, MemberSpec []) -> ErrorSpec ["Null MemberSpec"] - (MemberSpec xs, MemberSpec ys) -> MemberSpec [f x y | x <- xs, y <- ys] - -- This block is all (MemberSpec{}, TypeSpec{}) with MemberSpec on the left - (MemberSpec xs, TypeSpec (NumSpecInterval (Just i) (Just j)) bad) -> - MemberSpec [f x y | x <- xs, y <- [i .. j], not (elem y bad)] - -- Somewhat loose spec here, but more accurate then TrueSpec, it is exact if 'xs' has one element (i.e. 'xs' = [i]) - (MemberSpec xs, TypeSpec (NumSpecInterval lo hi) bads) -> - -- We use the specialized version of 'TypeSpec' 'typeSpecOpt' - typeSpecOpt - (NumSpecInterval (f (minimum xs) <$> lo) (f (maximum xs) <$> hi)) - [f x b | x <- xs, b <- bads] - -- we flip the arguments, so we need to flip the functions as well - (x, y) -> operateSpec (\a b -> f b a) (\u v -> ft v u) y x - --- ================================= --- Cardinality - --- | Put some (admittedly loose bounds) on the number of solutions that --- 'genFromTypeSpec' might return. For lots of types, there is no way to be very accurate. --- Here we lift the HasSpec methods 'cardinalTrueSpec' and 'cardinalTypeSpec' --- from (TypeSpec fn Integer) to (Spec fn Integer) -cardinality :: forall fn a. (Eq a, BaseUniverse fn, HasSpec fn a) => Spec fn a -> Spec fn Integer -cardinality TrueSpec = cardinalTrueSpec @fn @a -cardinality (MemberSpec es) = exactSizeSpec (sizeOf (nub es)) -cardinality ErrorSpec {} = equalSpec 0 -cardinality (TypeSpec s cant) = - subSpecInt - (cardinalTypeSpec @fn @a s) - (exactSizeSpec (sizeOf (filter (\c -> conformsTo @fn @a c s) cant))) -cardinality SuspendedSpec {} = cardinalTrueSpec @fn @a - --- | A generic function to use as an instance for the HasSpec method --- cardinalTypeSpec :: HasSpec fn a => TypeSpec fn a -> Spec fn Integer --- for types 'n' such that (TypeSpec n ~ NumSpec n) -cardinalSizeSpec :: forall n fn. (Integral n, Num n, MaybeBounded n) => NumSpec n -> Spec fn Integer -cardinalSizeSpec (NumSpecInterval (Just lo) (Just hi)) = - if hi >= lo then MemberSpec [toInteger (hi - lo)] else MemberSpec [0] -cardinalSizeSpec (NumSpecInterval Nothing (Just hi)) = - case lowerBound @n of - Just lo -> MemberSpec [toInteger (hi - lo)] - Nothing -> TrueSpec -cardinalSizeSpec (NumSpecInterval (Just lo) Nothing) = - case upperBound @n of - Just hi -> MemberSpec [toInteger (hi - lo)] - Nothing -> TrueSpec -cardinalSizeSpec (NumSpecInterval Nothing Nothing) = TrueSpec - -lowBound :: Bounded n => Maybe n -> n -lowBound Nothing = minBound -lowBound (Just n) = n - -highBound :: Bounded n => Maybe n -> n -highBound Nothing = maxBound -highBound (Just n) = n - --- | The exact count of the number elements in a Bounded NumSpec -countSpec :: forall n. (Bounded n, Integral n) => NumSpec n -> Integer -countSpec (NumSpecInterval lo hi) = if lo > hi then 0 else toInteger high - toInteger low + 1 - where - high = highBound hi - low = lowBound lo - --- | The exact number of elements in a Bounded Integral type. -finiteSize :: forall n. (Integral n, Bounded n) => Integer -finiteSize = toInteger (maxBound @n) - toInteger (minBound @n) + 1 - --- | This is an optimizing version of TypeSpec :: TypeSpec fn n -> [n] -> Spec fn n --- for Bounded NumSpecs. --- notInNumSpec :: Bounded n => TypeSpec fn n -> [n] -> Spec fn n --- We use this function to specialize the (HasSpec fn t) method 'typeSpecOpt' for Bounded n. --- So given (TypeSpec interval badlist) we might want to transform it to (MemberSpec goodlist) --- There are 2 opportunities where this can payoff big time. --- 1) Suppose the total count of the elements in the interval is < length badlist --- we can then return (MemberSpec (filter elements (`notElem` badlist))) --- this must be smaller than (TypeSpec interval badlist) because the filtered list must be smaller than badlist --- 2) Suppose the type 't' is finite with size N. If the length of the badlist > (N/2), then the number of possible --- good things must be smaller than (length badlist), because (possible good + bad == N), so regardless of the --- count of the interval (MemberSpec (filter elements (`notElem` badlist))) is better. Sometimes much better. --- Example, let 'n' be the finite set {0,1,2,3,4,5,6,7,8,9} and the bad list be [0,1,3,4,5,6,8,9] --- (TypeSpec [0..9] [0,1,3,4,5,6,8,9]) = filter {0,1,2,3,4,5,6,7,8,9} (`notElem` [0,1,3,4,5,6,8,9]) = [2,7] --- So (MemberSpec [2,7]) is better than (TypeSpec [0..9] [0,1,3,4,5,6,8,9]). This works no matter what --- the count of interval is. We only need the (length badlist > (N/2)). -notInNumSpec :: - forall fn n. - ( Functions fn fn - , BaseUniverse fn - , HasSpec fn n - , TypeSpec fn n ~ NumSpec n - , Bounded n - , Integral n - ) => - NumSpec n -> - [n] -> - Spec fn n -notInNumSpec ns@(NumSpecInterval a b) bad - | toInteger (length bad) > (finiteSize @n `div` 2) || countSpec ns < toInteger (length bad) = - MemberSpec [x | x <- [lowBound a .. highBound b], notElem x bad] - | otherwise = TypeSpec @fn @n ns bad - --- ======================================================================== --- Helper functions for interval multiplication --- (a,b) * (c,d) = (minimum s, maximum s) where s = [a * c, a * d, b * c, b * d] - --- | T is a sort of special version of Maybe, with two Nothings. --- Given:: NumSpecInterval (Maybe n) (Maybe n) -> Numspec --- We can't distinguish between the two Nothings in (NumSpecInterval Nothing Nothing) --- But using (NumSpecInterval NegInf PosInf) we can, In fact we can make a total ordering on 'T' --- So an ascending Sorted [T x] would all the NegInf on the left and all the PosInf on the right, with --- the Ok's sorted in between. I.e. [NegInf, NegInf, Ok 3, Ok 6, Ok 12, Pos Inf] -data T x = NegInf | Ok x | PosInf - deriving (Show) - -instance Ord x => Eq (T x) where - x == y = compare x y == EQ - -instance Ord x => Ord (T x) where - compare NegInf NegInf = EQ - compare NegInf _ = LT - compare (Ok _) NegInf = GT - compare (Ok x) (Ok y) = compare x y - compare (Ok _) PosInf = LT - compare PosInf PosInf = EQ - compare PosInf _ = GT - --- | Conversion between (T x) and (Maybe x) -unT :: T x -> Maybe x -unT (Ok x) = Just x -unT _ = Nothing - --- | Use this on the lower bound. I.e. lo from pair (lo,hi) -neg :: Maybe x -> T x -neg Nothing = NegInf -neg (Just x) = Ok x - --- | Use this on the upper bound. I.e. hi from pair (lo,hi) -pos :: Maybe x -> T x -pos Nothing = PosInf -pos (Just x) = Ok x - --- | multiply two (T x), correctly handling the infinities NegInf and PosInf -multT :: Num x => T x -> T x -> T x -multT NegInf NegInf = PosInf -multT NegInf PosInf = NegInf -multT NegInf (Ok _) = NegInf -multT (Ok _) NegInf = NegInf -multT (Ok x) (Ok y) = Ok (x * y) -multT (Ok _) PosInf = PosInf -multT PosInf PosInf = PosInf -multT PosInf NegInf = NegInf -multT PosInf (Ok _) = PosInf - --- | Add information to a Spec, if it is an ErrorSpec, otherwise just return the Spec -explainSpec :: String -> Spec fn t -> Spec fn t -explainSpec msg (ErrorSpec xs) = ErrorSpec (msg : xs) -explainSpec _ spec = spec - --- ==================================================================================== --- Generally useful functions - --- | sizeOfSpec generalizes the method 'sizeOfTypeSpec' --- From (sizeOfTypeSpec :: TypeSpec fn t -> Spec fn Integer) --- To (sizeOfSpec :: Spec fn t -> Spec fn Integer) --- It is not unusual for instances (HasSpec fn t) to define sizeOfTypeSpec with calls to sizeOfSpec, --- Because many (TypeSpec fn t)'s contain (Spec fn s), for types 's' different from 't' -sizeOfSpec :: forall fn t. (BaseUniverse fn, Sized t) => Spec fn t -> Spec fn Integer -sizeOfSpec TrueSpec = TrueSpec -sizeOfSpec (MemberSpec xs) = MemberSpec (map sizeOf xs) -sizeOfSpec (ErrorSpec xs) = ErrorSpec xs -sizeOfSpec (SuspendedSpec x p) = - constrained $ \len -> - Exists - (\_ -> fatalError ["sizeOfSpec: Exists"]) - (x :-> (Assert [] (len ==. sizeOf_ (V x)) <> p)) -sizeOfSpec (TypeSpec x _) = sizeOfTypeSpec @t @fn x - --- | Turn a Size spec into an ErrorSpec if it has negative numbers. -checkForNegativeSize :: Spec fn Integer -> Spec fn Integer -checkForNegativeSize spec@(TypeSpec (NumSpecInterval x y) _) = - case (x, y) of - (Just lo, _) | lo < 0 -> ErrorSpec ["Negative low bound in conversion to SizeSpec: " ++ show spec] - (_, Just hi) | hi < 0 -> ErrorSpec ["Negative high bound in conversion to SizeSpec: " ++ show spec] - (Just lo, Just hi) | lo > hi -> ErrorSpec ["lo(" ++ show lo ++ ") > hi(" ++ show hi ++ ") in conversion to SizeSpec"] - (_, _) -> spec -checkForNegativeSize (MemberSpec xs) | any (< 0) xs = ErrorSpec ["Negative Size in MemberSpec " ++ show xs] -checkForNegativeSize spec = spec diff --git a/libs/constrained-generators/src/Constrained/Bench.hs b/libs/constrained-generators/src/Constrained/Bench.hs deleted file mode 100644 index 44579a1a8c8..00000000000 --- a/libs/constrained-generators/src/Constrained/Bench.hs +++ /dev/null @@ -1,38 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} - -module Constrained.Bench where - -import Constrained -import Constrained.Test -import Control.DeepSeq -import Criterion -import Data.Map (Map) -import Data.Set (Set) - -benchmarks :: Benchmark -benchmarks = - bgroup - "constrained" - [ benchSpec 10 30 "TrueSpec@Map" (TrueSpec :: Spec BaseFn (Map Int Int)) - , benchSpec 10 30 "TrueSpec@[]" (TrueSpec :: Spec BaseFn [Int]) - , benchSpec 10 30 "TrueSpec@Set" (TrueSpec :: Spec BaseFn (Set Int)) - , benchSpec - 10 - 30 - "TrueSpec@RoseTree" - (giveHint (Nothing, 30) <> TrueSpec :: Spec RoseFn (RoseTree Int)) - , benchSpec 10 30 "roseTreeMaybe" roseTreeMaybe - , benchSpec 10 30 "listSumPair" (listSumPair @Int) - ] - -benchSpec :: (HasSpec fn a, NFData a) => Int -> Int -> String -> Spec fn a -> Benchmark -benchSpec seed size nm spec = - bench (unlines [nm, show (genFromSpecWithSeed seed size spec)]) $ - nf (genFromSpecWithSeed seed size) spec diff --git a/libs/constrained-generators/src/Constrained/Core.hs b/libs/constrained-generators/src/Constrained/Core.hs deleted file mode 100644 index d7e9ff159b8..00000000000 --- a/libs/constrained-generators/src/Constrained/Core.hs +++ /dev/null @@ -1,90 +0,0 @@ -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE ImportQualifiedPost #-} -{-# LANGUAGE QuantifiedConstraints #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeOperators #-} - -module Constrained.Core where - -import Control.Applicative -import Data.Set (Set) -import Data.Set qualified as Set -import Data.Typeable - -import Constrained.List - --- Variables -------------------------------------------------------------- - -newtype Var a = Var {nameOf :: Int} - deriving (Ord, Eq) - -instance Show (Var a) where - show v = "v" ++ show (nameOf v) - -eqVar :: forall a a'. (Typeable a, Typeable a') => Var a -> Var a' -> Maybe (a :~: a') -eqVar v v' | nameOf v == nameOf v' = eqT @a @a' -eqVar _ _ = Nothing - --- Variable renaming ------------------------------------------------------ - -class Rename a where - rename :: Typeable x => Var x -> Var x -> a -> a - -instance Typeable a => Rename (Var a) where - rename v v' v'' - | Just Refl <- eqVar v v'' = v' - | otherwise = v'' - -instance Rename () where - rename _ _ _ = () - -instance (Rename a, Rename b) => Rename (a, b) where - rename x x' (a, b) = (rename x x' a, rename x x' b) - -instance {-# OVERLAPPABLE #-} (Functor t, Rename a) => Rename (t a) where - rename v v' - | v == v' = id - | otherwise = fmap (rename v v') - -instance (Ord a, Rename a) => Rename (Set a) where - rename v v' - | v == v' = id - | otherwise = Set.map (rename v v') - -instance (forall a. Rename (f a)) => Rename (List f as) where - rename v v' = mapList (rename v v') - -freshVar :: Var a -> Set Int -> Var a -freshVar (Var n) ns - | Set.member n ns = Var $ 1 + Set.findMax ns - | otherwise = Var n - -freshen :: (Typeable a, Rename t) => Var a -> t -> Set Int -> (Var a, t) -freshen v t nms - | nameOf v `Set.member` nms = let v' = freshVar v nms in (v', rename v v' t) - | otherwise = (v, t) - --- Values ----------------------------------------------------------------- - -data Value a where - Value :: Show a => !a -> Value a - -deriving instance Eq a => Eq (Value a) -deriving instance Ord a => Ord (Value a) -instance Show (Value a) where - showsPrec p (Value a) = showsPrec p a - -unValue :: Value a -> a -unValue (Value v) = v - --- Cruft ------------------------------------------------------------------ - -data Evidence c where - Evidence :: c => Evidence c - -unionWithMaybe :: (a -> a -> a) -> Maybe a -> Maybe a -> Maybe a -unionWithMaybe f ma ma' = (f <$> ma <*> ma') <|> ma <|> ma' diff --git a/libs/constrained-generators/src/Constrained/Env.hs b/libs/constrained-generators/src/Constrained/Env.hs deleted file mode 100644 index 425df61640d..00000000000 --- a/libs/constrained-generators/src/Constrained/Env.hs +++ /dev/null @@ -1,56 +0,0 @@ -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE ImportQualifiedPost #-} -{-# LANGUAGE StandaloneDeriving #-} - -module Constrained.Env where - -import Data.Map (Map) -import Data.Map qualified as Map -import Data.Typeable - -import Constrained.Core -import Constrained.GenT - --- | Typed environments for mapping `Var a` to `a` -newtype Env = Env {unEnv :: Map EnvKey EnvValue} - deriving newtype (Semigroup, Monoid) - deriving stock (Show) - -data EnvValue where - EnvValue :: (Typeable a, Show a) => !a -> EnvValue - -deriving instance Show EnvValue - -data EnvKey where - EnvKey :: !(Var a) -> EnvKey - -instance Eq EnvKey where - EnvKey v == EnvKey v' = nameOf v == nameOf v' - -instance Ord EnvKey where - compare (EnvKey v) (EnvKey v') = compare (nameOf v) (nameOf v') - -instance Show EnvKey where - show (EnvKey var) = show var - -extendEnv :: (Typeable a, Show a) => Var a -> a -> Env -> Env -extendEnv v a (Env m) = Env $ Map.insert (EnvKey v) (EnvValue a) m - -removeVar :: Var a -> Env -> Env -removeVar v (Env m) = Env $ Map.delete (EnvKey v) m - -singletonEnv :: (Typeable a, Show a) => Var a -> a -> Env -singletonEnv v a = Env $ Map.singleton (EnvKey v) (EnvValue a) - -lookupEnv :: Typeable a => Env -> Var a -> Maybe a -lookupEnv (Env m) v = do - EnvValue val <- Map.lookup (EnvKey v) m - cast val - -findEnv :: (Typeable a, MonadGenError m) => Env -> Var a -> m a -findEnv env var = do - case lookupEnv env var of - Just a -> pure a - Nothing -> genError ["Couldn't find " ++ show var ++ " in " ++ show env] diff --git a/libs/constrained-generators/src/Constrained/GenT.hs b/libs/constrained-generators/src/Constrained/GenT.hs deleted file mode 100644 index 80d932e7696..00000000000 --- a/libs/constrained-generators/src/Constrained/GenT.hs +++ /dev/null @@ -1,248 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DefaultSignatures #-} -{-# LANGUAGE DeriveFunctor #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE EmptyCase #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE FunctionalDependencies #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE ImportQualifiedPost #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE QuantifiedConstraints #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TupleSections #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE ViewPatterns #-} - -module Constrained.GenT where - -import Control.Applicative -import Control.Monad -import Data.Foldable -import GHC.Stack -import System.Random -import Test.QuickCheck hiding (Args, Fun) -import Test.QuickCheck.Gen -import Test.QuickCheck.Random - ------------------------------------------------------------------------- --- The Gen Error monad ------------------------------------------------------------------------- - --- | A class for different types of errors with a stack of `explain` calls to --- narrow down problems. -class Monad m => MonadGenError m where - genError :: HasCallStack => [String] -> m a - fatalError :: HasCallStack => [String] -> m a - explain :: HasCallStack => [String] -> m a -> m a - --- | The Gen Error monad, distinguishes between fatal errors --- and non-fatal errors. -data GE a - = FatalError [[String]] [String] - | GenError [[String]] [String] - | Result [[String]] a - deriving (Ord, Eq, Show, Functor) - -instance Applicative GE where - pure = Result [] - (<*>) = ap - -instance Monad GE where - FatalError es err >>= _ = FatalError es err - GenError es err >>= _ = GenError es err - Result _ a >>= k = k a - -instance Alternative GE where - empty = GenError [] [] - m@FatalError {} <|> _ = m - GenError {} <|> m = m - Result es x <|> _ = Result es x - -instance MonadGenError GE where - genError = GenError [] - fatalError = FatalError [] - explain es (GenError es' err) = GenError (es : es') err - explain es (FatalError es' err) = FatalError (es : es') err - explain es (Result es' a) = Result (es : es') a - -instance MonadGenError m => MonadGenError (GenT m) where - genError es = GenT $ \_ -> pure $ genError es - fatalError es = GenT $ \_ -> pure $ fatalError es - explain es gen = GenT $ \mode -> fmap (explain es) (runGenT gen mode) - -instance MonadGenError m => MonadFail (GenT m) where - fail = genError . (: []) - -catGEs :: MonadGenError m => [GE a] -> m [a] -catGEs [] = pure [] -catGEs (Result _ a : ges) = (a :) <$> catGEs ges -catGEs (GenError {} : ges) = catGEs ges -catGEs (FatalError es e : _) = - runGE $ FatalError es e - -fromGE :: ([String] -> a) -> GE a -> a -fromGE _ (Result _ a) = a -fromGE a (GenError es e) = a $ concat es ++ e -fromGE _ (FatalError es e) = - error . unlines $ concat es ++ e - -errorGE :: GE a -> a -errorGE = fromGE (error . unlines) - -isOk :: GE a -> Bool -isOk GenError {} = False -isOk FatalError {} = False -isOk Result {} = True - -runGE :: MonadGenError m => GE r -> m r -runGE (GenError es err) = foldr explain (genError err) es -runGE (FatalError es err) = foldr explain (fatalError err) es -runGE (Result es a) = foldr explain (pure a) es - -fromGEProp :: Testable p => GE p -> Property -fromGEProp (GenError es err) = foldr (counterexample . unlines) (counterexample (unlines err) False) es -fromGEProp (FatalError es err) = foldr (counterexample . unlines) (counterexample (unlines $ "Fatal error: " : err) False) es -fromGEProp (Result es p) = foldr (counterexample . unlines) (property p) es - -fromGEDiscard :: Testable p => GE p -> Property -fromGEDiscard (Result es p) = foldr (counterexample . unlines) (property p) es -fromGEDiscard _ = discard - -headGE :: Foldable t => t a -> GE a -headGE t - | x : _ <- toList t = pure x - | otherwise = fatalError ["head of empty structure"] - ------------------------------------------------------------------------- --- GenT ------------------------------------------------------------------------- - --- | Generation mode - how strict are we about requiring the generator to --- succeed. This is necessary because sometimes failing to find a value means --- there is an actual problem (a generator _should_ be satisfiable but for --- whatever buggy reason it isn't) and sometimes failing to find a value just --- means there are no values. The latter case is very relevant when you're --- generating e.g. lists or sets of values that can be empty. -data GenMode - = Loose - | Strict - deriving (Ord, Eq, Show) - --- TODO: put a global suchThat fuel parameter in here? To avoid exponential blowup of nested such --- thats? -newtype GenT m a = GenT {runGenT :: GenMode -> Gen (m a)} - deriving (Functor) - -instance Monad m => Applicative (GenT m) where - pure x = GenT $ \_ -> pure (pure x) - (<*>) = ap - -instance Monad m => Monad (GenT m) where - GenT m >>= k = GenT $ \mode -> MkGen $ \r n -> do - a <- unGen (m mode) (left r) n - unGen (runGenT (k a) mode) (right r) n - -strictGen :: GenT m a -> Gen (m a) -strictGen gen = runGenT gen Strict - -genFromGenT :: GenT GE a -> Gen a -genFromGenT genT = errorGE <$> runGenT genT Strict - -resizeT :: (Int -> Int) -> GenT m a -> GenT m a -resizeT f (GenT gm) = GenT $ \mode -> sized $ \sz -> resize (f sz) (gm mode) - -pureGen :: Applicative m => Gen a -> GenT m a -pureGen gen = GenT $ \_ -> pure <$> gen - -listOfT :: MonadGenError m => GenT GE a -> GenT m [a] -listOfT gen = do - lst <- pureGen . listOf $ runGenT gen Loose - catGEs lst - --- | Generate a list of elements of length at most `goalLen`, but accepting failure --- to get that many elements so long as `validLen` is true. --- TODO: possibly one could return "more, fewer, ok" in the `validLen` instead --- of `Bool` -listOfUntilLenT :: MonadGenError m => GenT GE a -> Int -> (Int -> Bool) -> GenT m [a] -listOfUntilLenT gen goalLen validLen = - genList `suchThatT` validLen . length - where - genList = do - res <- pureGen . vectorOf goalLen $ runGenT gen Loose - catGEs res - -vectorOfT :: MonadGenError m => Int -> GenT GE a -> GenT m [a] -vectorOfT i gen = GenT $ \mode -> do - res <- fmap sequence . vectorOf i $ runGenT gen Strict - case mode of - Strict -> pure $ runGE res - Loose -> case res of - FatalError es e -> pure $ runGE (GenError es e) - _ -> pure $ runGE res - -infixl 2 `suchThatT` -suchThatT :: MonadGenError m => GenT m a -> (a -> Bool) -> GenT m a -suchThatT g p = do - mode <- getMode - let (n, cont) = case mode of - Strict -> (100, fatalError) - Loose -> (1 :: Int, genError) -- TODO: Maybe 1 is not the right number here! - go n cont - where - go 0 cont = cont ["Ran out of tries on suchThatT"] - go n cont = do - a <- g - if p a then pure a else scaleT (+ 1) $ go (n - 1) cont - -scaleT :: (Int -> Int) -> GenT m a -> GenT m a -scaleT sc (GenT gen) = GenT $ \mode -> scale sc $ gen mode - -getMode :: Applicative m => GenT m GenMode -getMode = GenT $ \mode -> pure (pure mode) - -withMode :: GenMode -> GenT m a -> GenT m a -withMode mode gen = GenT $ \_ -> runGenT gen mode - -oneofT :: MonadGenError m => [GenT GE a] -> GenT m a -oneofT gs = do - mode <- getMode - r <- explain ["suchThatT in oneofT"] $ pureGen (oneof [runGenT g mode | g <- gs]) `suchThatT` isOk - runGE r - -frequencyT :: MonadGenError m => [(Int, GenT GE a)] -> GenT m a -frequencyT gs = do - mode <- getMode - r <- - explain ["suchThatT in oneofT"] $ - pureGen (frequency [(f, runGenT g mode) | (f, g) <- gs]) `suchThatT` isOk - runGE r - -chooseT :: (Random a, Ord a, Show a, MonadGenError m) => (a, a) -> GenT m a -chooseT (a, b) - | b < a = genError ["chooseT (" ++ show a ++ ", " ++ show b ++ ")"] - | otherwise = pureGen $ choose (a, b) - -sizeT :: Monad m => GenT m Int -sizeT = GenT $ \mode -> sized $ \n -> runGenT (pure n) mode - -tryGen :: MonadGenError m => GenT GE a -> GenT m (Maybe a) -tryGen g = do - r <- pureGen $ runGenT g Loose - case r of - FatalError es err -> foldr explain (fatalError err) es - GenError _ _ -> pure Nothing - Result _ a -> pure $ Just a diff --git a/libs/constrained-generators/src/Constrained/Graph.hs b/libs/constrained-generators/src/Constrained/Graph.hs deleted file mode 100644 index 8e5e01e747d..00000000000 --- a/libs/constrained-generators/src/Constrained/Graph.hs +++ /dev/null @@ -1,116 +0,0 @@ -{-# LANGUAGE ImportQualifiedPost #-} -{-# LANGUAGE TupleSections #-} -{-# LANGUAGE ViewPatterns #-} - -module Constrained.Graph where - -import Control.Monad -import Data.Map (Map) -import Data.Map qualified as Map -import Data.Maybe -import Data.Set (Set) -import Data.Set qualified as Set - -data Graph node = Graph - { edges :: !(Map node (Set node)) - , opEdges :: !(Map node (Set node)) - } - deriving (Show) - -instance Ord node => Semigroup (Graph node) where - Graph e o <> Graph e' o' = - Graph - (Map.unionWith (<>) e e') - (Map.unionWith (<>) o o') - -instance Ord node => Monoid (Graph node) where - mempty = Graph mempty mempty - -nodes :: Graph node -> Set node -nodes (Graph e _) = Map.keysSet e - -opGraph :: Graph node -> Graph node -opGraph (Graph e o) = Graph o e - -subtractGraph :: Ord node => Graph node -> Graph node -> Graph node -subtractGraph (Graph e o) (Graph e' o') = - Graph - (Map.differenceWith del e e') - (Map.differenceWith del o o') - where - del x y = Just $ Set.difference x y - -dependency :: Ord node => node -> Set node -> Graph node -dependency x xs = - Graph - (Map.singleton x xs) - ( Map.unionWith - (<>) - (Map.singleton x mempty) - (Map.fromList [(y, Set.singleton x) | y <- Set.toList xs]) - ) - -irreflexiveDependencyOn :: Ord node => Set node -> Set node -> Graph node -irreflexiveDependencyOn xs ys = - deps <> noDependencies ys - where - diff = Set.difference ys xs - deps = - Graph - (Map.fromDistinctAscList [(x, diff) | x <- Set.toList xs]) - ( Map.fromDistinctAscList [(a, xs) | a <- Set.toList diff] - <> Map.fromDistinctAscList [(a, mempty) | a <- Set.toList xs] - ) - -transitiveDependencies :: Ord node => node -> Graph node -> Set node -transitiveDependencies x (Graph e _) = go (Set.singleton x) x - where - go seen y = ys <> foldMap (go $ Set.insert y seen) (Set.difference ys seen) - where - ys = fromMaybe mempty (Map.lookup y e) - -transitiveClosure :: Ord node => Graph node -> Graph node -transitiveClosure g = foldMap (\x -> dependency x (transitiveDependencies x g)) (nodes g) - -noDependencies :: Ord node => Set node -> Graph node -noDependencies ns = Graph nodeMap nodeMap - where - nodeMap = Map.fromList ((,mempty) <$> Set.toList ns) - --- | Topsort the graph, returning a cycle --- (`Left cycle`) on failure. -topsort :: Ord node => Graph node -> Either [node] [node] -topsort gr@(Graph e _) = go [] e - where - go order g - | null g = pure $ reverse order - | otherwise = do - let noDeps = Map.keysSet . Map.filter null $ g - removeNode n ds = Set.difference ds noDeps <$ guard (not $ n `Set.member` noDeps) - if not $ null noDeps - then go (Set.toList noDeps ++ order) (Map.mapMaybeWithKey removeNode g) - else Left . concat . take 1 . filter (not . null) . map (findCycle gr) $ Map.keys e - --- | Simple DFS cycle finding -findCycle :: Ord node => Graph node -> node -> [node] -findCycle (Graph e _) node = concat . take 1 $ go mempty node - where - go seen n - | n `Set.member` seen = [[]] - | otherwise = do - n' <- neighbours - (n :) <$> go (Set.insert n seen) n' - where - neighbours = maybe [] Set.toList $ Map.lookup n e - -dependencies :: Ord node => node -> Graph node -> Set node -dependencies x (Graph e _) = fromMaybe mempty (Map.lookup x e) - -dependsOn :: Ord node => node -> node -> Graph node -> Bool -dependsOn x y g = y `Set.member` dependencies x g - -deleteNode :: Ord node => node -> Graph node -> Graph node -deleteNode x (Graph e o) = - Graph - (Map.delete x $ fmap (Set.delete x) e) - (Map.delete x $ fmap (Set.delete x) o) diff --git a/libs/constrained-generators/src/Constrained/Instances.hs b/libs/constrained-generators/src/Constrained/Instances.hs deleted file mode 100644 index e67958dbd66..00000000000 --- a/libs/constrained-generators/src/Constrained/Instances.hs +++ /dev/null @@ -1,90 +0,0 @@ -{-# LANGUAGE EmptyCase #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE FunctionalDependencies #-} -{-# LANGUAGE ImportQualifiedPost #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -fno-warn-orphans #-} - --- | This module provides some necessary instances --- of `Functions` that aren't needed in `Constrained.Base` --- (which is already big enough) but which are necessary --- to use the framework. -module Constrained.Instances where - -import Data.Typeable - -import Constrained.Base -import Constrained.Core -import Constrained.List -import Constrained.Spec.Generics () -import Constrained.Univ - -instance - ( Typeable fn - , Functions (fn (Fix fn)) (Fix fn) - ) => - Functions (Fix fn) (Fix fn) - where - propagateSpecFun (Fix fn) ctx spec = propagateSpecFun fn ctx spec - rewriteRules (Fix fn) = rewriteRules fn - mapTypeSpec (Fix fn) = mapTypeSpec fn - -instance - ( Typeable fn - , Typeable fn' - , Typeable fnU - , Functions (fn fnU) fnU - , Functions (fn' fnU) fnU - ) => - Functions (Oneof fn fn' fnU) fnU - where - propagateSpecFun (OneofLeft fn) = propagateSpecFun fn - propagateSpecFun (OneofRight fn) = propagateSpecFun fn - - rewriteRules (OneofLeft fn) = rewriteRules fn - rewriteRules (OneofRight fn) = rewriteRules fn - - mapTypeSpec (OneofLeft fn) = mapTypeSpec fn - mapTypeSpec (OneofRight fn) = mapTypeSpec fn - -instance BaseUniverse fn => Functions (EqFn fn) fn where - propagateSpecFun _ _ (ErrorSpec err) = ErrorSpec err - propagateSpecFun fn (ListCtx pre HOLE suf) (SuspendedSpec v ps) = - constrained $ \v' -> - let args = appendList (mapList (\(Value a) -> Lit a) pre) (v' :> mapList (\(Value a) -> Lit a) suf) - in Let (App (injectFn fn) args) (v :-> ps) - propagateSpecFun Equal ctx spec - | HOLE :? Value a :> Nil <- ctx = - propagateSpecFun @(EqFn fn) @fn Equal (Value a :! NilCtx HOLE) spec - | Value a :! NilCtx HOLE <- ctx = caseBoolSpec spec $ \case - True -> equalSpec a - False -> notEqualSpec a - - mapTypeSpec f _ = case f of {} - -instance BaseUniverse fn => Functions (BoolFn fn) fn where - propagateSpecFun _ _ (ErrorSpec err) = ErrorSpec err - propagateSpecFun fn (ListCtx pre HOLE suf) (SuspendedSpec v ps) = - constrained $ \v' -> - let args = appendList (mapList (\(Value a) -> Lit a) pre) (v' :> mapList (\(Value a) -> Lit a) suf) - in Let (App (injectFn fn) args) (v :-> ps) - propagateSpecFun Not (NilCtx HOLE) spec = caseBoolSpec spec (equalSpec . not) - propagateSpecFun Or (HOLE :? Value (s :: Bool) :> Nil) spec = caseBoolSpec spec (okOr s) - propagateSpecFun Or (Value (s :: Bool) :! NilCtx HOLE) spec = caseBoolSpec spec (okOr s) - - mapTypeSpec Not (SumSpec a b) = typeSpec $ SumSpec b a - --- | We have something like ('constant' ||. HOLE) must evaluate to 'need'. Return a (Spec fn Bool) for HOLE, that makes that True. -okOr :: Bool -> Bool -> Spec fn Bool -okOr constant need = case (constant, need) of - (True, True) -> TrueSpec - (True, False) -> ErrorSpec ["(" ++ show constant ++ "||. HOLE) must equal False. That cannot be the case."] - (False, False) -> MemberSpec [False] - (False, True) -> MemberSpec [True] diff --git a/libs/constrained-generators/src/Constrained/Internals.hs b/libs/constrained-generators/src/Constrained/Internals.hs deleted file mode 100644 index deb76afb4d6..00000000000 --- a/libs/constrained-generators/src/Constrained/Internals.hs +++ /dev/null @@ -1,9 +0,0 @@ -module Constrained.Internals (module X) where - -import Constrained.Base as X -import Constrained.Core as X -import Constrained.Env as X -import Constrained.GenT as X -import Constrained.Instances () -import Constrained.Spec as X -import Constrained.Univ as X diff --git a/libs/constrained-generators/src/Constrained/List.hs b/libs/constrained-generators/src/Constrained/List.hs deleted file mode 100644 index 10d425e9388..00000000000 --- a/libs/constrained-generators/src/Constrained/List.hs +++ /dev/null @@ -1,155 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE QuantifiedConstraints #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE ViewPatterns #-} - -module Constrained.List where - -import Data.Functor.Const -import Data.Kind - --- | A heterogeneous list / an inductive tuple. --- We use this heavily to represent arguments to --- functions in terms. A term application (c.f. `Constrained.Base`) --- is represented as `App :: fn as b -> List (Term fn) as -> Term fn b` --- for example. -data List (f :: k -> Type) (as :: [k]) where - Nil :: List f '[] - (:>) :: f a -> List f as -> List f (a : as) - -infixr 5 :> - -deriving instance (forall a. Show (f a)) => Show (List f as) -deriving instance (forall a. Eq (f a)) => Eq (List f as) - -mapList :: (forall a. f a -> g a) -> List f as -> List g as -mapList _ Nil = Nil -mapList f (x :> xs) = f x :> mapList f xs - -mapListC :: forall c as f g. All c as => (forall a. c a => f a -> g a) -> List f as -> List g as -mapListC _ Nil = Nil -mapListC f (x :> xs) = f x :> mapListC @c f xs - -mapMList :: Applicative m => (forall a. f a -> m (g a)) -> List f as -> m (List g as) -mapMList _ Nil = pure Nil -mapMList f (x :> xs) = (:>) <$> f x <*> mapMList f xs - -foldMapList :: Monoid b => (forall a. f a -> b) -> List f as -> b -foldMapList _ Nil = mempty -foldMapList f (a :> as) = f a <> foldMapList f as - -foldMapListC :: - forall c as b f. (All c as, Monoid b) => (forall a. c a => f a -> b) -> List f as -> b -foldMapListC _ Nil = mempty -foldMapListC f (a :> as) = f a <> foldMapListC @c f as - -appendList :: List f as -> List f bs -> List f (Append as bs) -appendList Nil bs = bs -appendList (a :> as) bs = a :> appendList as bs - --- | Append two type-level lists -type family Append as as' where - Append '[] as' = as' - Append (a : as) as' = a : Append as as' - --- | Map a type functor over a list -type family MapList (f :: k -> j) as where - MapList f '[] = '[] - MapList f (a : as) = f a : MapList f as - --- | A List with a hole in it, can be seen as a zipper --- over type-level lists. --- --- We use this to represent contexts over terms in `Constrained.Base`. --- For example, an application of `f` to a single variable of type `a` --- would be the pair `(fn as b, ListCtx Value as (HOLE a))` where --- `HOLE` (c.f. `Constrained.Base`) is isomorphic to `:~:`. -data ListCtx f (as :: [Type]) c where - (:?) :: c a -> List f as -> ListCtx f (a : as) c - (:!) :: f a -> ListCtx f as c -> ListCtx f (a : as) c - -infixr 5 :?, :! - --- | A Convenient pattern for singleton contexts -pattern NilCtx :: c a -> ListCtx f '[a] c -pattern NilCtx c = ListCtx Nil c Nil - -{-# COMPLETE NilCtx #-} - --- | A view of a `ListCtx` where you see the whole context at the same time. -pattern ListCtx :: - () => as'' ~ Append as (a : as') => List f as -> c a -> List f as' -> ListCtx f as'' c -pattern ListCtx as c as' <- (toWholeCtx -> ListCtxWhole as c as') - where - ListCtx as c as' = fromWholeCtx $ ListCtxWhole as c as' - -{-# COMPLETE ListCtx #-} - --- | Internals for the `ListCtx` pattern -data ListCtxWhole f as c where - ListCtxWhole :: - List f as -> - c a -> - List f as' -> - ListCtxWhole f (Append as (a : as')) c - -toWholeCtx :: ListCtx f as c -> ListCtxWhole f as c -toWholeCtx (hole :? suf) = ListCtxWhole Nil hole suf -toWholeCtx (x :! xs) - | ListCtxWhole pre hole suf <- toWholeCtx xs = - ListCtxWhole (x :> pre) hole suf - -fromWholeCtx :: ListCtxWhole f as c -> ListCtx f as c -fromWholeCtx (ListCtxWhole Nil hole suf) = hole :? suf -fromWholeCtx (ListCtxWhole (x :> pre) hole suf) = x :! fromWholeCtx (ListCtxWhole pre hole suf) - --- | A function type from `ts` to `res`: --- FunTy '[Int, Bool] Double = Int -> Bool -> Double -type family FunTy ts res where - FunTy '[] a = a - FunTy (a : as) r = a -> FunTy as r - --- | Materialize the shape of the type list `as`, this is very useful --- for avoiding having to write type classes that recurse over `as`. -listShape :: forall as. TypeList as => List (Const ()) as -listShape = unfoldList (\_ -> Const ()) - --- | Higher-order functions for working on `List`s -class TypeList ts where - uncurryList :: FunTy (MapList f ts) r -> List f ts -> r - uncurryList_ :: (forall a. f a -> a) -> FunTy ts r -> List f ts -> r - curryList :: (List f ts -> r) -> FunTy (MapList f ts) r - curryList_ :: (forall a. a -> f a) -> (List f ts -> r) -> FunTy ts r - unfoldList :: (forall a as. List f as -> f a) -> List f ts - --- | NOTE: the two instances for `TypeList` are `TypeList '[]` and --- `TypeList '(a : as)`. That way its basically just a structurally --- recursive function on type-level lists that computes the `TypeList` --- dictionary. -instance TypeList '[] where - uncurryList a Nil = a - uncurryList_ _ a Nil = a - curryList f = f Nil - curryList_ _ f = f Nil - unfoldList _ = Nil - -instance TypeList as => TypeList (a : as) where - uncurryList f (a :> as) = uncurryList (f a) as - uncurryList_ k f (a :> as) = uncurryList_ k (f $ k a) as - curryList f a = curryList (\xs -> f (a :> xs)) - curryList_ p f a = curryList_ p (\xs -> f (p a :> xs)) - unfoldList f = let xs = unfoldList f in f xs :> xs - -type family All (c :: k -> Constraint) (as :: [k]) :: Constraint where - All c '[] = () - All c (a : as) = (c a, All c as) diff --git a/libs/constrained-generators/src/Constrained/Spec.hs b/libs/constrained-generators/src/Constrained/Spec.hs deleted file mode 100644 index 80af24eb322..00000000000 --- a/libs/constrained-generators/src/Constrained/Spec.hs +++ /dev/null @@ -1,22 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE FunctionalDependencies #-} -{-# LANGUAGE ImportQualifiedPost #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Constrained.Spec ( - module X, -) where - -import Constrained.Base as X -import Constrained.Instances () -import Constrained.Spec.Generics as X -import Constrained.Spec.Maps as X -import Constrained.Spec.Pairs as X -import Constrained.Spec.Tree as X -import Constrained.Univ () diff --git a/libs/constrained-generators/src/Constrained/Spec/Generics.hs b/libs/constrained-generators/src/Constrained/Spec/Generics.hs deleted file mode 100644 index 5bd52fe26a8..00000000000 --- a/libs/constrained-generators/src/Constrained/Spec/Generics.hs +++ /dev/null @@ -1,569 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE CPP #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE FunctionalDependencies #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE ViewPatterns #-} -{-# OPTIONS_GHC -Wno-orphans #-} -{-# OPTIONS_GHC -Wno-redundant-constraints #-} - --- The pattern completeness checker is much weaker before ghc-9.0. Rather than introducing redundant --- cases and turning off the overlap check in newer ghc versions we disable the check for old --- versions. -#if __GLASGOW_HASKELL__ < 900 -{-# OPTIONS_GHC -Wno-incomplete-patterns #-} -#endif - -module Constrained.Spec.Generics ( - GenericsFn, - IsNormalType, - fst_, - snd_, - pair_, - left_, - right_, - caseOn, - branch, - forAll', - constrained', - reify', - con, - onCon, - isCon, - sel, - match, - onJust, - isJust, - ifElse, -) where - -import Data.Typeable -import GHC.TypeNats -import GHC.Types (Symbol) - -import Constrained.Base -import Constrained.Core -import Constrained.List -import Constrained.Spec.Pairs () -import Constrained.Univ - ------------------------------------------------------------------------- --- Generics ------------------------------------------------------------------------- - -instance FunctionLike (GenericsFn fn) where - sem = \case - ToGeneric -> toSimpleRep - FromGeneric -> fromSimpleRep - -instance BaseUniverse fn => Functions (GenericsFn fn) fn where - propagateSpecFun _ _ TrueSpec = TrueSpec - propagateSpecFun _ _ (ErrorSpec err) = ErrorSpec err - propagateSpecFun fn ctx spec = case fn of - _ - | SuspendedSpec v ps <- spec - , ListCtx pre HOLE suf <- ctx -> - constrained $ \v' -> - let args = appendList (mapList (\(Value a) -> Lit a) pre) (v' :> mapList (\(Value a) -> Lit a) suf) - in Let (App (injectFn fn) args) (v :-> ps) - ToGeneric | NilCtx HOLE <- ctx -> case spec of - TypeSpec s cant -> TypeSpec s (fromSimpleRep <$> cant) - MemberSpec es -> MemberSpec (fromSimpleRep <$> es) - FromGeneric | NilCtx HOLE <- ctx -> case spec of - TypeSpec s cant -> TypeSpec s (toSimpleRep <$> cant) - MemberSpec es -> MemberSpec (toSimpleRep <$> es) - - rewriteRules FromGeneric (App (extractFn @(GenericsFn fn) @fn -> Just ToGeneric) (x :> Nil) :> _) = cast x - rewriteRules ToGeneric (App (extractFn @(GenericsFn fn) @fn -> Just FromGeneric) (x :> Nil) :> _) = Just x - rewriteRules _ _ = Nothing - - mapTypeSpec f ts = case f of - ToGeneric -> typeSpec ts - FromGeneric -> typeSpec ts - --- HasSpec for various generic types -------------------------------------- - -instance HasSimpleRep (a, b) -instance HasSimpleRep (a, b, c) -instance HasSimpleRep (a, b, c, d) -instance HasSimpleRep (a, b, c, d, e) -instance HasSimpleRep (a, b, c, d, e, g) -instance HasSimpleRep (a, b, c, d, e, g, h) -instance HasSimpleRep (Maybe a) -instance HasSimpleRep (Either a b) - -instance - ( HasSpec fn a - , HasSpec fn b - ) => - HasSpec fn (a, b) -instance - ( HasSpec fn a - , HasSpec fn b - , HasSpec fn c - ) => - HasSpec fn (a, b, c) -instance - ( HasSpec fn a - , HasSpec fn b - , HasSpec fn c - , HasSpec fn d - ) => - HasSpec fn (a, b, c, d) -instance - ( HasSpec fn a - , HasSpec fn b - , HasSpec fn c - , HasSpec fn d - , HasSpec fn e - ) => - HasSpec fn (a, b, c, d, e) -instance - ( HasSpec fn a - , HasSpec fn b - , HasSpec fn c - , HasSpec fn d - , HasSpec fn e - , HasSpec fn g - ) => - HasSpec fn (a, b, c, d, e, g) -instance - ( HasSpec fn a - , HasSpec fn b - , HasSpec fn c - , HasSpec fn d - , HasSpec fn e - , HasSpec fn g - , HasSpec fn h - ) => - HasSpec fn (a, b, c, d, e, g, h) -instance - HasSpec fn a => - HasSpec fn (Maybe a) -instance - ( HasSpec fn a - , HasSpec fn b - ) => - HasSpec fn (Either a b) - ------------------------------------------------------------------------- --- Sums ------------------------------------------------------------------------- - -instance BaseUniverse fn => Functions (SumFn fn) fn where - propagateSpecFun _ _ TrueSpec = TrueSpec - propagateSpecFun _ _ (ErrorSpec err) = ErrorSpec err - propagateSpecFun fn ctx spec = case fn of - _ - | SuspendedSpec v ps <- spec - , ListCtx pre HOLE suf <- ctx -> - constrained $ \v' -> - let args = appendList (mapList (\(Value a) -> Lit a) pre) (v' :> mapList (\(Value a) -> Lit a) suf) - in Let (App (injectFn fn) args) (v :-> ps) - InjLeft | NilCtx HOLE <- ctx -> case spec of - TypeSpec (SumSpec sl _) cant -> sl <> foldMap notEqualSpec [a | SumLeft a <- cant] - MemberSpec es -> MemberSpec [a | SumLeft a <- es] - InjRight | NilCtx HOLE <- ctx -> case spec of - TypeSpec (SumSpec _ sr) cant -> sr <> foldMap notEqualSpec [a | SumRight a <- cant] - MemberSpec es -> MemberSpec [a | SumRight a <- es] - - -- NOTE: this function over-approximates and returns a liberal spec. - mapTypeSpec f ts = case f of - InjLeft -> typeSpec $ SumSpec (typeSpec ts) (ErrorSpec ["mapTypeSpec InjLeft"]) - InjRight -> typeSpec $ SumSpec (ErrorSpec ["mapTypeSpec InjRight"]) (typeSpec ts) - ------------------------------------------------------------------------- --- Syntax ------------------------------------------------------------------------- - -fst_ :: - forall fn a b. - ( HasSpec fn a - , HasSpec fn b - ) => - Term fn (a, b) -> - Term fn a -fst_ = sel @0 - -snd_ :: - forall fn a b. - ( HasSpec fn a - , HasSpec fn b - ) => - Term fn (a, b) -> - Term fn b -snd_ = sel @1 - -pair_ :: - forall fn a b. - ( HasSpec fn a - , HasSpec fn b - ) => - Term fn a -> - Term fn b -> - Term fn (a, b) -pair_ a b = fromGeneric_ $ app pairFn a b - -left_ :: - ( HasSpec fn a - , HasSpec fn b - ) => - Term fn a -> - Term fn (Either a b) -left_ = fromGeneric_ . app injLeftFn - -right_ :: - ( HasSpec fn a - , HasSpec fn b - ) => - Term fn b -> - Term fn (Either a b) -right_ = fromGeneric_ . app injRightFn - -caseOn :: - forall fn a. - ( HasSpec fn a - , HasSpec fn (SimpleRep a) - , HasSimpleRep a - , TypeSpec fn a ~ TypeSpec fn (SimpleRep a) - , SimpleRep a ~ SumOver (Cases (SimpleRep a)) - , TypeList (Cases (SimpleRep a)) - ) => - Term fn a -> - FunTy (MapList (Binder fn) (Cases (SimpleRep a))) (Pred fn) -caseOn tm = curryList @(Cases (SimpleRep a)) (mkCase (toGeneric_ tm)) - -branch :: - forall fn p a. - ( HasSpec fn a - , All (HasSpec fn) (Args a) - , IsPred p fn - , IsProd a - ) => - FunTy (MapList (Term fn) (Args a)) p -> - Binder fn a -branch body = - -- NOTE: It's not sufficient to simply apply `body` to all the arguments - -- with `uncurryList` because that will mean that `var` is repeated in the - -- body. For example, consider `branch $ \ i j -> i <=. j`. If we don't - -- build the lets this will boil down to `p :-> fst p <=. snd p` which - -- will blow up at generation time. If we instead do: `p :-> Let x (fst p) (Let y (snd p) (x <=. y))` - -- the solver will solve `x` and `y` separately (`y` before `x` in this case) and things - -- will work just fine. - bind (buildBranch @p @fn body . toArgs @a @fn) - -match :: - forall fn p a. - ( HasSpec fn a - , HasSpec fn (SimpleRep a) - , HasSimpleRep a - , Cases (SimpleRep a) ~ '[SimpleRep a] - , SimpleRep a ~ SumOver (Cases (SimpleRep a)) - , TypeSpec fn a ~ TypeSpec fn (SimpleRep a) - , IsProd (SimpleRep a) - , All (HasSpec fn) (Args (SimpleRep a)) - , IsPred p fn - ) => - Term fn a -> - FunTy (MapList (Term fn) (Args (SimpleRep a))) p -> - Pred fn -match p m = caseOn p (branch @fn @p m) - -buildBranch :: - forall p fn as. - ( All (HasSpec fn) as - , IsPred p fn - , BaseUniverse fn - ) => - FunTy (MapList (Term fn) as) p -> - List (Term fn) as -> - Pred fn -buildBranch bd Nil = toPred bd -buildBranch bd (t :> args) = - letBind t $ \x -> buildBranch @p @fn (bd x) args - -type family Args t where - Args (Prod a b) = a : Args b - Args a = '[a] - -class IsProd p where - toArgs :: - ( HasSpec fn p - , BaseUniverse fn - ) => - Term fn p -> - List (Term fn) (Args p) - -instance {-# OVERLAPPABLE #-} Args a ~ '[a] => IsProd a where - toArgs = (:> Nil) - -instance IsProd b => IsProd (Prod a b) where - toArgs (p :: Term fn (Prod a b)) - | Evidence <- prerequisites @fn @(Prod a b) = (app fstFn p) :> toArgs (app sndFn p) - -type family ResultType t where - ResultType (a -> b) = ResultType b - ResultType a = a - --- NOTE: `ResultType r ~ Term fn a` is NOT a redundant constraint, --- removing it causes type inference to break elsewhere -con :: - forall c a r fn. - ( SimpleRep a ~ SOP (TheSop a) - , TypeSpec fn a ~ TypeSpec fn (SOP (TheSop a)) - , TypeList (ConstrOf c (TheSop a)) - , HasSpec fn a - , HasSimpleRep a - , r ~ FunTy (MapList (Term fn) (ConstrOf c (TheSop a))) (Term fn a) - , ResultType r ~ Term fn a - , SOPTerm c fn (TheSop a) - , ConstrTerm fn (ConstrOf c (TheSop a)) - ) => - r -con = - curryList @(ConstrOf c (TheSop a)) @(Term fn) - (app (fromGenericFn @_ @a) . inj_ @c @fn @(TheSop a) . prod_) - -sel :: - forall n fn a c as. - ( SimpleRep a ~ ProdOver as - , TheSop a ~ '[c ::: as] - , TypeSpec fn a ~ TypeSpec fn (ProdOver as) - , Select fn n as - , HasSpec fn a - , HasSpec fn (ProdOver as) - , HasSimpleRep a - ) => - Term fn a -> - Term fn (At n as) -sel = select_ @fn @n @as . toGeneric_ - -type family Cases t where - Cases (Sum a b) = a : Cases b - Cases a = '[a] - --- | Like `forAll` but pattern matches on the `Term fn a` -forAll' :: - forall fn t a p. - ( Forallable t a - , Cases (SimpleRep a) ~ '[SimpleRep a] - , TypeSpec fn a ~ TypeSpec fn (SimpleRep a) - , HasSpec fn t - , HasSpec fn (SimpleRep a) - , HasSimpleRep a - , All (HasSpec fn) (Args (SimpleRep a)) - , IsPred p fn - , IsProd (SimpleRep a) - , HasSpec fn a - ) => - Term fn t -> - FunTy (MapList (Term fn) (Args (SimpleRep a))) p -> - Pred fn -forAll' xs f = forAll xs $ \x -> match @fn @p x f - --- | Like `constrained` but pattern matches on the bound `Term fn a` -constrained' :: - forall fn a p. - ( Cases (SimpleRep a) ~ '[SimpleRep a] - , TypeSpec fn a ~ TypeSpec fn (SimpleRep a) - , HasSpec fn (SimpleRep a) - , HasSimpleRep a - , All (HasSpec fn) (Args (SimpleRep a)) - , IsProd (SimpleRep a) - , HasSpec fn a - , IsPred p fn - ) => - FunTy (MapList (Term fn) (Args (SimpleRep a))) p -> - Spec fn a -constrained' f = constrained $ \x -> match @fn @p x f - --- | Like `reify` but pattern matches on the bound `Term fn b` -reify' :: - forall fn a b p. - ( Cases (SimpleRep b) ~ '[SimpleRep b] - , TypeSpec fn b ~ TypeSpec fn (SimpleRep b) - , HasSpec fn (SimpleRep b) - , HasSimpleRep b - , All (HasSpec fn) (Args (SimpleRep b)) - , IsProd (SimpleRep b) - , HasSpec fn a - , HasSpec fn b - , IsPred p fn - ) => - Term fn a -> - (a -> b) -> - FunTy (MapList (Term fn) (Args (SimpleRep b))) p -> - Pred fn -reify' a r f = reify a r $ \x -> match @fn @p x f - -class (BaseUniverse fn, HasSpec fn (SOP sop)) => SOPTerm c fn sop where - inj_ :: Term fn (ProdOver (ConstrOf c sop)) -> Term fn (SOP sop) - -instance HasSpec fn (ProdOver constr) => SOPTerm c fn (c ::: constr : '[]) where - inj_ = id - -instance - ( HasSpec fn (SOP (con : sop)) - , HasSpec fn (ProdOver constr) - ) => - SOPTerm c fn (c ::: constr : con : sop) - where - inj_ = app injLeftFn - -instance - {-# OVERLAPPABLE #-} - ( HasSpec fn (ProdOver con) - , SOPTerm c fn (con' : sop) - , ConstrOf c (con' : sop) ~ ConstrOf c ((c' ::: con) : con' : sop) - ) => - SOPTerm c fn ((c' ::: con) : con' : sop) - where - inj_ = app injRightFn . inj_ @c @fn @(con' : sop) - -class (BaseUniverse fn, HasSpec fn (ProdOver constr)) => ConstrTerm fn constr where - prod_ :: List (Term fn) constr -> Term fn (ProdOver constr) - -instance HasSpec fn a => ConstrTerm fn '[a] where - prod_ (a :> Nil) = a - -instance - ( HasSpec fn a - , HasSpec fn (ProdOver (a : b : as)) - , ConstrTerm fn (b : as) - ) => - ConstrTerm fn (a : b : as) - where - prod_ (a :> as) = app pairFn a (prod_ as) - -type family At n as where - At 0 (a : as) = a - At n (a : as) = At (n - 1) as - -class Select fn n as where - select_ :: Term fn (ProdOver as) -> Term fn (At n as) - -instance Select fn 0 (a : '[]) where - select_ = id - -instance (HasSpec fn a, HasSpec fn (ProdOver (a' : as))) => Select fn 0 (a : a' : as) where - select_ = app fstFn - -instance - {-# OVERLAPPABLE #-} - ( HasSpec fn a - , HasSpec fn (ProdOver (a' : as)) - , At (n - 1) (a' : as) ~ At n (a : a' : as) - , Select fn (n - 1) (a' : as) - ) => - Select fn n (a : a' : as) - where - select_ = select_ @fn @(n - 1) @(a' : as) . app sndFn - -class IsConstrOf (c :: Symbol) b sop where - mkCases :: - (HasSpec fn b, All (HasSpec fn) (Cases (SOP sop))) => - (forall a. Term fn a -> Pred fn) -> - (Term fn b -> Pred fn) -> - List (Binder fn) (Cases (SOP sop)) - -instance - ( b ~ ProdOver as - , TypeList (Cases (SOP (con : sop))) - ) => - IsConstrOf c b ((c ::: as) : con : sop) - where - mkCases r (k :: Term fn b -> Pred fn) = bind k :> mapListC @(HasSpec fn) (\_ -> bind r) (listShape @(Cases (SOP (con : sop)))) - -instance - ( b ~ ProdOver as - , IsNormalType b - ) => - IsConstrOf c b '[c ::: as] - where - mkCases _ (k :: Term fn b -> Pred fn) = bind k :> Nil - -instance - {-# OVERLAPPABLE #-} - ( Cases (SOP ((c' ::: as) : cs)) ~ (ProdOver as : Cases (SOP cs)) - , IsConstrOf c b cs - ) => - IsConstrOf c b ((c' ::: as) : cs) - where - mkCases r k = bind (r @(ProdOver as)) :> mkCases @c @_ @cs r k - --- TODO: the constraints around this are horrible!! We should figure out a way to make these things nicer. -onCon :: - forall c a fn p. - ( IsConstrOf c (ProdOver (ConstrOf c (TheSop a))) (TheSop a) - , TypeSpec fn a ~ TypeSpec fn (SimpleRep a) - , HasSimpleRep a - , HasSpec fn a - , HasSpec fn (SimpleRep a) - , SumOver (Cases (SOP (TheSop a))) ~ SimpleRep a - , All (HasSpec fn) (Cases (SOP (TheSop a))) - , HasSpec fn (ProdOver (ConstrOf c (TheSop a))) - , IsPred p fn - , Args (ProdOver (ConstrOf c (TheSop a))) ~ ConstrOf c (TheSop a) - , All (HasSpec fn) (ConstrOf c (TheSop a)) - , IsProd (ProdOver (ConstrOf c (TheSop a))) - ) => - Term fn a -> - FunTy (MapList (Term fn) (ConstrOf c (TheSop a))) p -> - Pred fn -onCon tm p = - Case - (toGeneric_ tm) - ( mkCases @c @(ProdOver (ConstrOf c (TheSop a))) @(TheSop a) - (const $ assert True) - (buildBranch @p p . toArgs) - ) - -isCon :: - forall c a fn. - ( IsConstrOf c (ProdOver (ConstrOf c (TheSop a))) (TheSop a) - , TypeSpec fn a ~ TypeSpec fn (SimpleRep a) - , HasSimpleRep a - , HasSpec fn a - , HasSpec fn (SimpleRep a) - , SumOver (Cases (SOP (TheSop a))) ~ SimpleRep a - , All (HasSpec fn) (Cases (SOP (TheSop a))) - , HasSpec fn (ProdOver (ConstrOf c (TheSop a))) - ) => - Term fn a -> - Pred fn -isCon tm = - Case - (toGeneric_ tm) - ( mkCases @c @(ProdOver (ConstrOf c (TheSop a))) @(TheSop a) - (const $ assert False) - (const $ assert True) - ) - -type IsNormalType a = (Cases a ~ '[a], Args a ~ '[a], IsProd a) - -onJust :: - forall fn a p. - (BaseUniverse fn, HasSpec fn a, IsNormalType a, IsPred p fn) => - Term fn (Maybe a) -> - (Term fn a -> p) -> - Pred fn -onJust = onCon @"Just" - -isJust :: - forall fn a. - (BaseUniverse fn, HasSpec fn a, IsNormalType a) => - Term fn (Maybe a) -> - Pred fn -isJust = isCon @"Just" - -ifElse :: (BaseUniverse fn, IsPred p fn, IsPred q fn) => Term fn Bool -> p -> q -> Pred fn -ifElse b p q = caseOn b (branch $ \_ -> q) (branch $ \_ -> p) diff --git a/libs/constrained-generators/src/Constrained/Spec/Maps.hs b/libs/constrained-generators/src/Constrained/Spec/Maps.hs deleted file mode 100644 index 81e27e19182..00000000000 --- a/libs/constrained-generators/src/Constrained/Spec/Maps.hs +++ /dev/null @@ -1,233 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE FunctionalDependencies #-} -{-# LANGUAGE ImportQualifiedPost #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Constrained.Spec.Maps (MapSpec (..), dom_, rng_) where - -import Constrained.Base -import Constrained.Core -import Constrained.GenT -import Constrained.Instances () -import Constrained.List -import Constrained.Spec.Generics -import Constrained.Univ -import Control.Monad -import Data.List (nub) -import Data.Map (Map) -import Data.Map qualified as Map -import Data.Set (Set) -import Data.Set qualified as Set -import Prettyprinter -import Test.QuickCheck (shrinkList) - ------------------------------------------------------------------------- --- HasSpec ------------------------------------------------------------------------- - -instance Ord a => Sized (Map.Map a b) where - sizeOf = toInteger . Map.size - liftSizeSpec sz = TypeSpec (MapSpec mempty mempty (typeSpec sz) TrueSpec NoFold) [] - liftMemberSpec xs = typeSpec (MapSpec mempty mempty (MemberSpec xs) TrueSpec NoFold) - sizeOfTypeSpec (MapSpec mustk mustv size _ _) = - typeSpec (atLeastSize (sizeOf mustk)) - <> typeSpec (atLeastSize (sizeOf mustv)) - <> size - -data MapSpec fn k v = MapSpec - { mapSpecMustKeys :: Set k - , mapSpecMustValues :: [v] - , mapSpecSize :: Spec fn Integer - , mapSpecElem :: Spec fn (k, v) - , mapSpecFold :: FoldSpec fn v - } - -deriving instance - ( HasSpec fn (k, v) - , HasSpec fn k - , HasSpec fn v - , HasSpec fn [v] - ) => - Show (MapSpec fn k v) -instance Ord k => Forallable (Map k v) (k, v) where - forAllSpec kvs = typeSpec $ MapSpec mempty [] TrueSpec kvs NoFold - forAllToList = Map.toList - -instance - (Ord k, HasSpec fn (Prod k v), HasSpec fn k, HasSpec fn v, HasSpec fn [v]) => - HasSpec fn (Map k v) - where - type TypeSpec fn (Map k v) = MapSpec fn k v - type Prerequisites fn (Map k v) = (HasSpec fn k, HasSpec fn v) - - emptySpec = MapSpec mempty mempty mempty mempty NoFold - - combineSpec - (MapSpec mustKeys mustVals size kvs foldSpec) - (MapSpec mustKeys' mustVals' size' kvs' foldSpec') = fromGE ErrorSpec $ do - typeSpec - . MapSpec - (mustKeys <> mustKeys') - (nub $ mustVals <> mustVals') - (size <> size') - (kvs <> kvs') - <$> combineFoldSpec foldSpec foldSpec' - - conformsTo m (MapSpec mustKeys mustVals size kvs foldSpec) = - and - [ mustKeys `Set.isSubsetOf` Map.keysSet m - , all (`elem` Map.elems m) mustVals - , sizeOf m `conformsToSpec` size - , all (`conformsToSpec` kvs) (Map.toList m) - , Map.elems m `conformsToFoldSpec` foldSpec - ] - - genFromTypeSpec (MapSpec mustKeys mustVals size kvs foldSpec) = do - mustMap <- explain ["Make the mustMap"] $ forM (Set.toList mustKeys) $ \k -> do - let vSpec = constrained $ \v -> satisfies (app (fromGenericFn @fn) $ app (pairFn @fn) (Lit k) v) kvs - v <- explain [show $ "vSpec =" <+> pretty vSpec] $ genFromSpec vSpec - pure (k, v) - let haveVals = map snd mustMap - mustVals' = filter (`notElem` haveVals) mustVals - size' = constrained $ \sz -> - -- TODO, we should make sure size' is greater than or equal to 0 - satisfies - (sz + Lit (sizeOf mustMap)) - (size <> cardinality (mapSpec fstFn $ mapSpec toGenericFn kvs)) - foldSpec' = case foldSpec of - NoFold -> NoFold - FoldSpec fn sumSpec -> FoldSpec fn $ propagateSpecFun (theAddFn @fn) (HOLE :? Value mustSum :> Nil) sumSpec - where - mustSum = adds @fn (map (sem fn) haveVals) - let valsSpec = - ListSpec - Nothing - mustVals' - size' - (constrained $ \v -> unsafeExists $ \p -> p `satisfies` kvs <> assert (v ==. snd_ p)) - foldSpec' - - restVals <- - explain ["Make the restVals"] $ - explain [show $ "size' = " <> pretty size'] $ - genFromTypeSpec $ - valsSpec - let go m [] = pure m - go m (v : restVals') = do - let keySpec = notMemberSpec (Map.keysSet m) <> constrained (\k -> pair_ k (lit v) `satisfies` kvs) - k <- - explain - [ "Make a key" - , show $ indent 4 $ "keySpec =" <+> pretty keySpec - ] - $ genFromSpec keySpec - go (Map.insert k v m) restVals' - go (Map.fromList mustMap) restVals - - shrinkWithTypeSpec (MapSpec _ _ _ kvs _) m = map Map.fromList $ shrinkList (shrinkWithSpec kvs) (Map.toList m) - - toPreds m (MapSpec mustKeys mustVals size kvs foldSpec) = - toPred - [ assert $ app (subsetFn @fn) (app (domFn @fn) m) (Lit mustKeys) - , forAll (Lit mustVals) $ \val -> - app (elemFn @fn) val (app (rngFn @fn) m) - , -- TODO: make nice - satisfies (app (injectFn $ SizeOf @fn) $ app (rngFn @fn) m) size - , forAll m $ \kv -> satisfies kv kvs - , toPredsFoldSpec (app (rngFn @fn) m) foldSpec - ] - ------------------------------------------------------------------------- --- Functions ------------------------------------------------------------------------- - -instance BaseUniverse fn => Functions (MapFn fn) fn where - propagateSpecFun _ _ TrueSpec = TrueSpec - propagateSpecFun _ _ (ErrorSpec err) = ErrorSpec err - propagateSpecFun fn ctx spec = case fn of - _ - | SuspendedSpec v ps <- spec - , ListCtx pre HOLE suf <- ctx -> - constrained $ \v' -> - let args = appendList (mapList (\(Value a) -> Lit a) pre) (v' :> mapList (\(Value a) -> Lit a) suf) - in Let (App (injectFn fn) args) (v :-> ps) - Dom -> - -- No TypeAbstractions in ghc-8.10 - case fn of - (_ :: MapFn fn '[Map k v] (Set k)) - | NilCtx HOLE <- ctx - , Evidence <- prerequisites @fn @(Map k v) -> - case spec of - MemberSpec [s] -> - typeSpec $ - MapSpec s [] (exactSizeSpec $ sizeOf s) TrueSpec NoFold - TypeSpec (SetSpec must elemspec size) [] -> - typeSpec $ - MapSpec - must - [] - size - (constrained $ \kv -> satisfies (app (fstFn @fn) (app (toGenericFn @fn) kv)) elemspec) - NoFold - _ -> ErrorSpec ["Dom on bad map spec", show spec] - Rng -> - -- No TypeAbstractions in ghc-8.10 - case fn of - (_ :: MapFn fn '[Map k v] [v]) - | NilCtx HOLE <- ctx - , Evidence <- prerequisites @fn @(Map k v) -> - case spec of - MemberSpec [r] -> - typeSpec $ MapSpec Set.empty r (equalSpec $ sizeOf r) TrueSpec NoFold - TypeSpec (ListSpec Nothing must size elemspec foldspec) [] -> - typeSpec $ - MapSpec - Set.empty - must - size - (constrained $ \kv -> satisfies (app (sndFn @fn) (app (toGenericFn @fn) kv)) elemspec) - foldspec - _ -> ErrorSpec ["Rng on bad map spec", show spec] - - -- NOTE: this function over-approximates and returns a liberal spec. - mapTypeSpec f ts = case f of - -- TODO: consider checking against singleton member-specs in the other component - -- interacting with cant - Dom -> - -- No TypeAbstractions in ghc-8.10 - case f of - (_ :: MapFn fn '[Map k v] (Set k)) - | MapSpec mustSet _ sz kvSpec _ <- ts - , Evidence <- prerequisites @fn @(Map k v) -> - typeSpec $ SetSpec mustSet (mapSpec (fstFn @fn) $ toSimpleRepSpec kvSpec) sz - Rng -> - -- No TypeAbstractions in ghc-8.10 - case f of - (_ :: MapFn fn '[Map k v] [v]) - | MapSpec _ mustList sz kvSpec foldSpec <- ts - , Evidence <- prerequisites @fn @(Map k v) -> - typeSpec $ ListSpec Nothing mustList sz (mapSpec (sndFn @fn) $ toSimpleRepSpec kvSpec) foldSpec - ------------------------------------------------------------------------- --- Syntax ------------------------------------------------------------------------- - -dom_ :: - (HasSpec fn (Map k v), HasSpec fn k, Ord k) => - Term fn (Map k v) -> - Term fn (Set k) -dom_ = app domFn - -rng_ :: - (HasSpec fn k, HasSpec fn v, Ord k) => - Term fn (Map k v) -> - Term fn [v] -rng_ = app rngFn diff --git a/libs/constrained-generators/src/Constrained/Spec/Pairs.hs b/libs/constrained-generators/src/Constrained/Spec/Pairs.hs deleted file mode 100644 index 28799c72384..00000000000 --- a/libs/constrained-generators/src/Constrained/Spec/Pairs.hs +++ /dev/null @@ -1,113 +0,0 @@ -{-# LANGUAGE CPP #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE FunctionalDependencies #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE ViewPatterns #-} -{-# OPTIONS_GHC -Wno-orphans #-} - --- The pattern completeness checker is much weaker before ghc-9.0. Rather than introducing redundant --- cases and turning off the overlap check in newer ghc versions we disable the check for old --- versions. -#if __GLASGOW_HASKELL__ < 900 -{-# OPTIONS_GHC -Wno-incomplete-patterns #-} -#endif - -module Constrained.Spec.Pairs where - -import Constrained.Base -import Constrained.Core -import Constrained.List -import Constrained.Univ - --- HasSpec ---------------------------------------------------------------- - -cartesian :: (HasSpec fn a, HasSpec fn b) => Spec fn a -> Spec fn b -> Spec fn (Prod a b) -cartesian (MemberSpec []) _ = MemberSpec [] -cartesian _ (MemberSpec []) = MemberSpec [] -cartesian (ErrorSpec es) _ = ErrorSpec es -cartesian _ (ErrorSpec es) = ErrorSpec es -cartesian s s' = typeSpec $ Cartesian s s' - -data PairSpec fn a b = Cartesian (Spec fn a) (Spec fn b) - -instance (HasSpec fn a, HasSpec fn b) => HasSpec fn (Prod a b) where - type TypeSpec fn (Prod a b) = PairSpec fn a b - - type Prerequisites fn (Prod a b) = (HasSpec fn a, HasSpec fn b) - - emptySpec = Cartesian mempty mempty - - combineSpec (Cartesian a b) (Cartesian a' b') = cartesian (a <> a') (b <> b') - - conformsTo (Prod a b) (Cartesian sa sb) = conformsToSpec a sa && conformsToSpec b sb - - genFromTypeSpec (Cartesian sa sb) = Prod <$> genFromSpec sa <*> genFromSpec sb - - shrinkWithTypeSpec (Cartesian sa sb) (Prod a b) = - [Prod a' b | a' <- shrinkWithSpec sa a] - ++ [Prod a b' | b' <- shrinkWithSpec sb b] - - toPreds x (Cartesian sf ss) = - satisfies (app fstFn x) sf - <> satisfies (app sndFn x) ss - - cardinalTypeSpec (Cartesian x y) = multSpecInt (cardinality x) (cardinality y) - -deriving instance (HasSpec fn a, HasSpec fn b) => Show (PairSpec fn a b) - --- Functions for working on pairs ----------------------------------------- - -instance BaseUniverse fn => Functions (PairFn fn) fn where - propagateSpecFun _ _ TrueSpec = TrueSpec - propagateSpecFun _ _ (ErrorSpec err) = ErrorSpec err - propagateSpecFun fn ctx spec = case fn of - Fst -> - -- No TypeAbstractions in ghc-8.10 - case fn of - (_ :: PairFn fn '[Prod a b] a) - | NilCtx HOLE <- ctx - , Evidence <- prerequisites @fn @(Prod a b) -> - cartesian spec TrueSpec - Snd -> - -- No TypeAbstractions in ghc-8.10 - case fn of - (_ :: PairFn fn '[Prod a b] b) - | NilCtx HOLE <- ctx - , Evidence <- prerequisites @fn @(Prod a b) -> - cartesian TrueSpec spec - _ - | SuspendedSpec v ps <- spec - , ListCtx pre HOLE suf <- ctx -> - constrained $ \v' -> - let args = appendList (mapList (\(Value a) -> Lit a) pre) (v' :> mapList (\(Value a) -> Lit a) suf) - in Let (App (injectFn fn) args) (v :-> ps) - Pair - | HOLE :? Value b :> Nil <- ctx -> - let sameSnd ps = [a | Prod a b' <- ps, b == b'] - in case spec of - TypeSpec (Cartesian sa _) cant -> sa <> foldMap notEqualSpec (sameSnd cant) - MemberSpec es -> MemberSpec (sameSnd es) - | Value a :! NilCtx HOLE <- ctx -> - let sameFst ps = [b | Prod a' b <- ps, a == a'] - in case spec of - TypeSpec (Cartesian _ sb) cant -> sb <> foldMap notEqualSpec (sameFst cant) - MemberSpec es -> MemberSpec (sameFst es) - - rewriteRules Fst ((pairView -> Just (x, _)) :> Nil) = Just x - rewriteRules Snd ((pairView -> Just (_, y)) :> Nil) = Just y - rewriteRules _ _ = Nothing - - mapTypeSpec f ts = case f of - Fst | Cartesian s _ <- ts -> s - Snd | Cartesian _ s <- ts -> s - -pairView :: - forall fn a b. Member (PairFn fn) fn => Term fn (Prod a b) -> Maybe (Term fn a, Term fn b) -pairView (App (extractFn @(PairFn fn) @fn -> Just Pair) (x :> y :> Nil)) = Just (x, y) -pairView _ = Nothing diff --git a/libs/constrained-generators/src/Constrained/Spec/Tree.hs b/libs/constrained-generators/src/Constrained/Spec/Tree.hs deleted file mode 100644 index 5a7c854cf97..00000000000 --- a/libs/constrained-generators/src/Constrained/Spec/Tree.hs +++ /dev/null @@ -1,229 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE FunctionalDependencies #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE ImportQualifiedPost #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} - -module Constrained.Spec.Tree (BinTree (..), RoseTree (..), RoseTreeFn, roseRoot_, RoseTreeSpec (..)) where - -import Control.DeepSeq -import Data.Kind -import GHC.Generics -import Test.QuickCheck (shrinkList) - -import Constrained.Base -import Constrained.Core -import Constrained.GenT -import Constrained.List -import Constrained.Spec.Generics -import Constrained.Spec.Pairs -import Constrained.Univ - ------------------------------------------------------------------------- --- The types ------------------------------------------------------------------------- - -data BinTree a - = BinTip - | BinNode (BinTree a) a (BinTree a) - deriving (Ord, Eq, Show) - -data RoseTree a = RoseNode a [RoseTree a] - deriving (Ord, Eq, Show, Generic) - -instance NFData a => NFData (RoseTree a) - ------------------------------------------------------------------------- --- HasSpec for BinTree ------------------------------------------------------------------------- - -data BinTreeSpec fn a = BinTreeSpec Integer (Spec fn (BinTree a, a, BinTree a)) - deriving (Show) - -instance Forallable (BinTree a) (BinTree a, a, BinTree a) where - forAllSpec = typeSpec . BinTreeSpec 1000 - forAllToList BinTip = [] - forAllToList (BinNode left a right) = (left, a, right) : forAllToList left ++ forAllToList right - -instance HasSpec fn a => HasSpec fn (BinTree a) where - type TypeSpec fn (BinTree a) = BinTreeSpec fn a - - emptySpec = BinTreeSpec 1000 TrueSpec - - combineSpec (BinTreeSpec sz s) (BinTreeSpec sz' s') = - typeSpec $ BinTreeSpec (min sz sz') (s <> s') - - conformsTo BinTip _ = True - conformsTo (BinNode left a right) s@(BinTreeSpec _ es) = - and - [ (left, a, right) `conformsToSpec` es - , left `conformsTo` s - , right `conformsTo` s - ] - - genFromTypeSpec (BinTreeSpec sz s) - | sz <= 0 = pure BinTip - | otherwise = do - let sz' = sz `div` 2 - oneofT - [ do - (left, a, right) <- genFromSpec @fn @(BinTree a, a, BinTree a) $ - constrained $ \ctx -> - [ match ctx $ \left _ right -> - [ forAll left (`satisfies` s) - , genHint sz' left - , forAll right (`satisfies` s) - , genHint sz' right - ] - , ctx `satisfies` s - ] - pure $ BinNode left a right - , pure BinTip - ] - - shrinkWithTypeSpec _ BinTip = [] - shrinkWithTypeSpec s (BinNode left a right) = - BinTip - : left - : right - : (BinNode left a <$> shrinkWithTypeSpec s right) - ++ ((\l -> BinNode l a right) <$> shrinkWithTypeSpec s left) - - toPreds t (BinTreeSpec sz s) = - (forAll t $ \n -> n `satisfies` s) - <> genHint sz t - -instance HasSpec fn a => HasGenHint fn (BinTree a) where - type Hint (BinTree a) = Integer - giveHint h = typeSpec $ BinTreeSpec h TrueSpec - ------------------------------------------------------------------------- --- HasSpec for RoseTree ------------------------------------------------------------------------- - -data RoseTreeSpec fn a = RoseTreeSpec - { roseTreeAvgLength :: Maybe Integer - , roseTreeMaxSize :: Integer - , roseTreeRootSpec :: Spec fn a - , roseTreeCtxSpec :: Spec fn (a, [RoseTree a]) - } - -deriving instance (HasSpec fn a, Member (RoseTreeFn fn) fn) => Show (RoseTreeSpec fn a) - -instance Forallable (RoseTree a) (a, [RoseTree a]) where - forAllSpec = guardRoseSpec . RoseTreeSpec Nothing 8000 TrueSpec - forAllToList (RoseNode a children) = (a, children) : concatMap forAllToList children - --- TODO: get rid of this when we implement `cardinality` --- in `HasSpec` -guardRoseSpec :: HasSpec fn (RoseTree a) => RoseTreeSpec fn a -> Spec fn (RoseTree a) -guardRoseSpec spec@(RoseTreeSpec _ _ rs s) - | isErrorLike rs = ErrorSpec ["guardRoseSpec: rootSpec is error"] - | isErrorLike s = ErrorSpec ["guardRoseSpec: ctxSpec is error"] - | otherwise = TypeSpec spec [] - -instance (HasSpec fn a, Member (RoseTreeFn fn) fn) => HasSpec fn (RoseTree a) where - type TypeSpec fn (RoseTree a) = RoseTreeSpec fn a - - emptySpec = RoseTreeSpec Nothing 8000 TrueSpec TrueSpec - - combineSpec (RoseTreeSpec mal sz rs s) (RoseTreeSpec mal' sz' rs' s') - | isErrorLike (typeSpec (Cartesian rs'' TrueSpec) <> s'') = ErrorSpec [] - | otherwise = - guardRoseSpec $ - RoseTreeSpec - (unionWithMaybe max mal mal') - (min sz sz') - rs'' - s'' - where - rs'' = rs <> rs' - s'' = s <> s' - - conformsTo (RoseNode a children) (RoseTreeSpec _ _ rs s) = - and - [ (a, children) `conformsToSpec` s - , all (\(RoseNode a' children') -> (a', children') `conformsToSpec` s) children - , a `conformsToSpec` rs - ] - - genFromTypeSpec (RoseTreeSpec mal sz rs s) = do - let sz' = maybe (sz `div` 4) (sz `div`) mal - childrenSpec = - typeSpec $ - ListSpec - (Just sz') - [] - TrueSpec - (typeSpec $ RoseTreeSpec mal sz' TrueSpec s) - NoFold - innerSpec = s <> typeSpec (Cartesian rs childrenSpec) - fmap (uncurry RoseNode) $ - genFromSpec @fn @(a, [RoseTree a]) innerSpec - - shrinkWithTypeSpec (RoseTreeSpec _ _ rs ctxSpec) (RoseNode a ts) = - [RoseNode a [] | not $ null ts] - ++ ts - ++ [RoseNode a' ts | a' <- shrinkWithSpec rs a] - ++ [RoseNode a [t] | t <- ts] - ++ [ RoseNode a ts' - | ts' <- shrinkList (shrinkWithTypeSpec (RoseTreeSpec Nothing 8000 TrueSpec ctxSpec)) ts - ] - - toPreds t (RoseTreeSpec mal sz rs s) = - (forAll t $ \n -> n `satisfies` s) - <> roseRoot_ t `satisfies` rs - <> genHint (mal, sz) t - -instance (Member (RoseTreeFn fn) fn, HasSpec fn a) => HasGenHint fn (RoseTree a) where - type Hint (RoseTree a) = (Maybe Integer, Integer) - giveHint (avgLen, sz) = typeSpec $ RoseTreeSpec avgLen sz TrueSpec TrueSpec - -data RoseTreeFn (fn :: [Type] -> Type -> Type) args res where - RoseRoot :: RoseTreeFn fn '[RoseTree a] a - -deriving instance Eq (RoseTreeFn fn args res) -deriving instance Show (RoseTreeFn fn args res) - -instance FunctionLike (RoseTreeFn fn) where - sem RoseRoot = \(RoseNode a _) -> a - -instance (Member (RoseTreeFn fn) fn, BaseUniverse fn) => Functions (RoseTreeFn fn) fn where - propagateSpecFun _ _ TrueSpec = TrueSpec - propagateSpecFun _ _ (ErrorSpec err) = ErrorSpec err - propagateSpecFun _ _ (MemberSpec []) = MemberSpec [] - propagateSpecFun fn ctx spec = case fn of - _ - | SuspendedSpec v ps <- spec - , ListCtx pre HOLE suf <- ctx -> - constrained $ \v' -> - let args = appendList (mapList (\(Value a) -> Lit a) pre) (v' :> mapList (\(Value a) -> Lit a) suf) - in Let (App (injectFn fn) args) (v :-> ps) - RoseRoot -> - -- No TypeAbstractions in ghc-8.10 - case fn of - (_ :: RoseTreeFn fn '[RoseTree a] a) - | NilCtx HOLE <- ctx -> typeSpec $ RoseTreeSpec Nothing 8000 spec TrueSpec - - -- NOTE: this function over-approximates and returns a liberal spec. - mapTypeSpec f ts = case f of - RoseRoot -> - -- No TypeAbstractions in ghc-8.10 - case f of - (_ :: RoseTreeFn fn '[RoseTree a] a) - | RoseTreeSpec _ _ rs _ <- ts -> rs - -roseRoot_ :: - forall fn a. - (Member (RoseTreeFn fn) fn, HasSpec fn a) => - Term fn (RoseTree a) -> - Term fn a -roseRoot_ = app (injectFn $ RoseRoot @fn) diff --git a/libs/constrained-generators/src/Constrained/Test.hs b/libs/constrained-generators/src/Constrained/Test.hs deleted file mode 100644 index 555de3716cc..00000000000 --- a/libs/constrained-generators/src/Constrained/Test.hs +++ /dev/null @@ -1,874 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE FunctionalDependencies #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE ImportQualifiedPost #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE NumericUnderscores #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Constrained.Test where - -import Data.Int -import Data.Map (Map) -import Data.Set (Set) -import Data.Set qualified as Set -import Data.Typeable -import Data.Word -import GHC.Generics -import GHC.Natural -import Test.QuickCheck hiding (Args, Fun, forAll) -import Test.QuickCheck qualified as QC -import Test.Tasty -import Test.Tasty.QuickCheck (testProperty) - -import Constrained.Internals - --- Properties ------------------------------------------------------------- - -prop_conformEmpty :: - forall fn a. - HasSpec fn a => - a -> - Property -prop_conformEmpty a = property $ conformsTo @fn a (emptySpec @fn @a) - -prop_propagateSpec :: - (HasSpec fn a, HasSpec fn b) => - Var b -> - Term fn a -> - Spec fn a -> - Property -prop_propagateSpec var tm spec = - let spec' = errorGE $ do - ctx <- toCtx var tm - pure $ propagateSpec spec ctx - in QC.forAll (strictGen $ genFromSpec spec') $ \geval -> fromGE (\err -> counterexample (unlines err) False) $ do - val <- geval - res <- runTerm (singletonEnv var val) tm - pure $ property $ conformsToSpec res spec - -prop_mapSpec :: - ( HasSpec fn a - , HasSpec fn b - ) => - fn '[a] b -> - Spec fn a -> - Property -prop_mapSpec fn spec = - QC.forAll (strictGen $ genFromSpec spec) $ \ma -> fromGEDiscard $ do - a <- ma - pure $ conformsToSpec (sem fn a) (mapSpec fn spec) - -prop_genInverse :: - ( HasSpec fn a - , HasSpec fn b - ) => - fn '[a] b -> - Spec fn a -> - b -> - Property -prop_genInverse fn spec b = - QC.forAll (strictGen $ genInverse fn spec b) $ \ma -> fromGEDiscard $ do - a <- ma - pure $ conformsToSpec a spec && sem fn a == b - -prop_sound :: - HasSpec fn a => - Spec fn a -> - Property -prop_sound spec = - QC.forAllBlind (strictGen $ genFromSpec spec) $ \ma -> - case ma of - Result _ a -> cover 80 True "successful" $ counterexample (show a) $ conformsToSpecProp a spec - _ -> cover 80 False "successful" True - --- | `prop_complete ps` assumes that `ps` is satisfiable -prop_complete :: HasSpec fn a => Spec fn a -> Property -prop_complete s = - QC.forAllBlind (strictGen $ genFromSpec s) $ \ma -> fromGEProp $ do - a <- ma - -- Force the value to make sure we don't crash with `error` somewhere - -- or fall into an inifinite loop - pure $ length (show a) > 0 - -prop_shrink_sound :: HasSpec fn a => Spec fn a -> Property -prop_shrink_sound s = - QC.forAll (strictGen $ genFromSpec s) $ \ma -> fromGEDiscard $ do - a <- ma - let shrinks = shrinkWithSpec s a - pure $ - cover 40 (not $ null shrinks) "non-null shrinks" $ - if null shrinks - then property True - else QC.forAll (QC.elements shrinks) $ \a' -> - conformsToSpecProp a' s - --- Test suite ------------------------------------------------------------- - -genTest :: HasSpec BaseFn a => Spec BaseFn a -> IO a -genTest = fmap errorGE . generate . strictGen . genFromSpec - -testAll :: IO () -testAll = defaultMain tests - -tests :: TestTree -tests = - testGroup "constrained" $ - [ testSpec "setSpec" setSpec - , testSpec "leqPair" leqPair - , testSpec "setPair" setPair - , testSpecNoShrink "listEmpty" listEmpty - , testSpec "compositionalSpec" compositionalSpec - , testSpec "simplePairSpec" simplePairSpec - , testSpec "trickyCompositional" trickyCompositional - , testSpec "emptyListSpec" emptyListSpec - , testSpec "eitherSpec" eitherSpec - , testSpec "maybeSpec" maybeSpec - , testSpec "eitherSetSpec" eitherSetSpec - , testSpec "fooSpec" fooSpec - , -- TODO: this spec needs double shrinking to shrink properly - -- so we need to figure something out about double-shrinking - testSpecNoShrink "intSpec" intSpec - , testSpec "mapElemSpec" mapElemSpec - , testSpec "mapElemKeySpec" mapElemKeySpec - , testSpec "mapPairSpec" mapPairSpec - , testSpecNoShrink "mapEmptyDomainSpec" mapEmptyDomainSpec - , -- TODO: this _can_ be shrunk, but it's incredibly expensive to do - -- so and it's not obvious if there is a faster way without implementing - -- more detailed shrinking of `SuspendedSpec`s - testSpecNoShrink "setPairSpec" setPairSpec - , testSpec "fixedSetSpec" fixedSetSpec - , testSpec "setOfPairLetSpec" setOfPairLetSpec - , testSpecNoShrink "emptyEitherSpec" emptyEitherSpec - , testSpecNoShrink "emptyEitherMemberSpec" emptyEitherMemberSpec - , testSpec "setSingletonSpec" setSingletonSpec - , testSpec "pairSingletonSpec" pairSingletonSpec - , testSpec "eitherSimpleSetSpec" eitherSimpleSetSpec - , testSpecNoShrink "emptySetSpec" emptySetSpec - , testSpec "forAllAnySpec" forAllAnySpec - , testSpec "notSubsetSpec" notSubsetSpec - , testSpec "maybeJustSetSpec" maybeJustSetSpec - , testSpec "weirdSetPairSpec" weirdSetPairSpec - , testSpec "knownDomainMap" knownDomainMap - , -- TODO: figure out double-shrinking - testSpecNoShrink "testRewriteSpec" testRewriteSpec - , testSpec "parallelLet" parallelLet - , testSpec "letExists" letExists - , testSpec "letExistsLet" letExistsLet - , testSpec "notSubset" notSubset - , testSpec "unionSized" unionSized - , -- TODO: figure out double-shrinking - testSpecNoShrink "dependencyWeirdness" dependencyWeirdness - , testSpec "foldTrueCases" foldTrueCases - , testSpec "foldSingleCase" foldSingleCase - , testSpec "listSumPair" (listSumPair @Int) - , -- TODO: figure out double-shrinking - testSpecNoShrink "parallelLetPair" parallelLetPair - , testSpec "mapSizeConstrained" mapSizeConstrained - , testSpec "allZeroTree" allZeroTree - , testSpec "noChildrenSameTree" noChildrenSameTree - , testSpec "isBST" isBST - , testSpecNoShrink "pairListError" pairListError - , testSpecNoShrink "listMustSizeIssue" listMustSizeIssue - , testSpec "successiveChildren" successiveChildren - , testSpec "successiveChildren8" successiveChildren8 - , testSpecNoShrink "roseTreeList" roseTreeList - , testSpec "orPair" orPair - , testSpec "roseTreePairs" roseTreePairs - , testSpec "roseTreeMaybe" roseTreeMaybe - , testSpec "badTreeInteraction" badTreeInteraction - , numberyTests - , sizeTests - , numNumSpecTree - ] - ++ [ testSpec ("intRangeSpec " ++ show i) (intRangeSpec i) - | i <- [-1000, -100, -10, 0, 10, 100, 1000] - ] - ++ [ testGroup - "prop_conformEmpty" - [ testProperty "Int" $ prop_conformEmpty @BaseFn @Int - , testProperty "Set Int" $ prop_conformEmpty @BaseFn @(Set Int) - , testProperty "Map Int Int" $ prop_conformEmpty @BaseFn @(Map Int Int) - , testProperty "[Int]" $ prop_conformEmpty @BaseFn @[Int] - , testProperty "[(Int, Int)]" $ prop_conformEmpty @BaseFn @[(Int, Int)] - ] - ] - -numberyTests :: TestTree -numberyTests = - testGroup - "numbery tests" - [ testNumberyListSpec "listSum" listSum - , testNumberyListSpecNoShrink "listSumForall" listSumForall - , testNumberyListSpec "listSumRange" listSumRange - , testNumberyListSpec "listSumRangeUpper" listSumRangeUpper - , testNumberyListSpec "listSumRangeRange" listSumRangeRange - , testNumberyListSpec "listSumElemRange" listSumElemRange - ] - -sizeTests :: TestTree -sizeTests = - testGroup "SizeTests" $ - [ testSpecNoShrink "sizeAddOrSub1" sizeAddOrSub1 - , testSpecNoShrink "sizeAddOrSub2" sizeAddOrSub2 - , testSpecNoShrink "sizeAddOrSub3" sizeAddOrSub3 - , testSpecNoShrink "sizeAddOrSub4 returns Negative Size" sizeAddOrSub4 - , testSpecNoShrink "sizeAddOrSub5" sizeAddOrSub5 - , testSpecNoShrink "sizeAddOrSub5" sizeAddOrSub5 - , testSpec "listSubSize" listSubSize - , testSpec "listSubSize" setSubSize - , testSpec "listSubSize" mapSubSize - , testSpec "hasSizeList" hasSizeList - , testSpec "hasSizeSet" hasSizeSet - , testSpec "hasSizeMap" hasSizeMap - ] - -type Numbery a = - ( Foldy BaseFn a - , OrdLike BaseFn a - , NumLike BaseFn a - , Ord a - , Enum a - ) - -data NumberyType where - N :: (Typeable a, Numbery a) => Proxy a -> NumberyType - -testNumberyListSpec :: String -> (forall a. Numbery a => Spec BaseFn [a]) -> TestTree -testNumberyListSpec = testNumberyListSpec' True - -testNumberyListSpecNoShrink :: String -> (forall a. Numbery a => Spec BaseFn [a]) -> TestTree -testNumberyListSpecNoShrink = testNumberyListSpec' False - -testNumberyListSpec' :: Bool -> String -> (forall a. Numbery a => Spec BaseFn [a]) -> TestTree -testNumberyListSpec' withShrink n p = - testGroup - n - [ testSpec' withShrink (show $ typeRep proxy) (p @a) - | N (proxy :: Proxy a) <- numberyTypes - ] - where - numberyTypes = - [ N @Int Proxy - , N @Integer Proxy - , N @Natural Proxy - , N @Word64 Proxy - , N @Word32 Proxy - , N @Word16 Proxy - , N @Word8 Proxy - , N @Int64 Proxy - , N @Int32 Proxy - , N @Int16 Proxy - , N @Int8 Proxy - ] - -testSpec :: HasSpec fn a => String -> Spec fn a -> TestTree -testSpec = testSpec' True - -testSpecNoShrink :: HasSpec fn a => String -> Spec fn a -> TestTree -testSpecNoShrink = testSpec' False - -testSpec' :: HasSpec fn a => Bool -> String -> Spec fn a -> TestTree -testSpec' withShrink n s = do - sequentialTestGroup - n - AllSucceed - $ [testProperty "prop_sound" $ within 10_000_000 $ checkCoverage $ prop_sound s] - ++ [ testProperty "prop_shrink_sound" $ within 10_000_000 $ checkCoverage $ prop_shrink_sound s - | withShrink - ] - --- Examples --------------------------------------------------------------- - -leqPair :: Spec BaseFn (Int, Int) -leqPair = constrained $ \p -> - match p $ \x y -> - x <=. y - -setPair :: Spec BaseFn (Set (Int, Int)) -setPair = constrained $ \s -> - [ forAll s $ \p -> - p `satisfies` leqPair - , assert $ lit (0, 1) `member_` s - ] - -setSpec :: Spec BaseFn (Set Int) -setSpec = constrained $ \ss -> - forAll ss $ \s -> - s <=. 10 - -compositionalSpec :: Spec BaseFn (Set Int) -compositionalSpec = constrained $ \x -> - [ satisfies x setSpec - , assert $ 0 `member_` x - ] - -simplePairSpec :: Spec BaseFn (Int, Int) -simplePairSpec = constrained $ \p -> - match p $ \x y -> - [ x /=. 0 - , y /=. 0 - ] - -trickyCompositional :: Spec BaseFn (Int, Int) -trickyCompositional = constrained $ \p -> - satisfies p simplePairSpec <> assert (fst_ p ==. 1000) - -newtype NotASet a = NotASet (Set a) - deriving (Generic, Show, Eq) -instance Ord a => HasSimpleRep (NotASet a) where - type SimpleRep (NotASet a) = [a] - fromSimpleRep = NotASet . Set.fromList - toSimpleRep (NotASet s) = Set.toList s -instance (Ord a, HasSpec fn a) => HasSpec fn (NotASet a) -instance Ord a => Forallable (NotASet a) a - -emptyListSpec :: Spec BaseFn ([Int], NotASet (Either Int Int, Int)) -emptyListSpec = constrained' $ \is ls -> - [ forAll is $ \i -> i <=. 0 - , forAll' ls $ \l _ -> - caseOn l (branch $ \_ -> False) (branch $ \_ -> False) - ] - -eitherSpec :: Spec BaseFn (Either Int Int) -eitherSpec = constrained $ \e -> - (caseOn e) - (branch $ \i -> i <=. 0) - (branch $ \i -> 0 <=. i) - -maybeSpec :: Spec BaseFn (Set (Maybe Int)) -maybeSpec = constrained $ \ms -> - forAll ms $ \m -> - (caseOn m) - (branch $ \_ -> False) - (branch $ \y -> 0 <=. y) - -eitherSetSpec :: Spec BaseFn (Set (Either Int Int), Set (Either Int Int), Set (Either Int Int)) -eitherSetSpec = constrained' $ \es as bs -> - [ assert $ es ==. (as <> bs) - , forAll as $ \a -> - (caseOn a) - (branch $ \a' -> a' <=. 0) - (branch $ \b' -> 1 <=. b') - , forAll bs $ \b -> - (caseOn b) - (branch $ \_ -> False) - (branch $ \b' -> 1 <=. b') - ] - -data Foo = Foo Int | Bar Int Int - deriving (Show, Eq, Ord, Generic) - -instance HasSimpleRep Foo -instance BaseUniverse fn => HasSpec fn Foo - -fooSpec :: Spec BaseFn Foo -fooSpec = constrained $ \foo -> - (caseOn foo) - (branch $ \i -> 0 <=. i) - (branch $ \i j -> i <=. j) - -intSpec :: Spec BaseFn (Int, Int) -intSpec = constrained' $ \a b -> - reify a (`mod` 10) $ \a' -> b ==. a' - -mapElemSpec :: Spec BaseFn (Map Int (Bool, Int)) -mapElemSpec = constrained $ \m -> - [ assert $ m /=. lit mempty - , forAll' (rng_ m) $ \_ b -> - [0 <. b, b <. 10] - ] - -mapElemKeySpec :: Spec BaseFn Int -mapElemKeySpec = constrained $ \n -> - letBind (pair_ n $ lit (False, 4)) $ \(p :: Term BaseFn (Int, (Bool, Int))) -> - letBind (snd_ (snd_ p)) $ \x -> - [x <. 10, 0 <. x, not_ $ elem_ n $ lit []] - -intRangeSpec :: Int -> Spec BaseFn Int -intRangeSpec a = constrained $ \n -> n <. lit a - -testRewriteSpec :: Spec BaseFn ((Int, Int), (Int, Int)) -testRewriteSpec = constrained' $ \x y -> - x ==. fromGeneric_ (toGeneric_ y) - -mapPairSpec :: Spec BaseFn (Map Int Int, Set Int) -mapPairSpec = constrained' $ \m s -> - subset_ (dom_ m) s - -mapEmptyDomainSpec :: Spec BaseFn (Map Int Int) -mapEmptyDomainSpec = constrained $ \m -> - subset_ (dom_ m) mempty -- mempty in the Monoid instance (Term fn (Set a)) - -setPairSpec :: Spec BaseFn (Set Int, Set Int) -setPairSpec = constrained' $ \s s' -> - forAll s $ \x -> - forAll s' $ \y -> - x <=. y - -fixedSetSpec :: Spec BaseFn (Set Int) -fixedSetSpec = constrained $ \s -> - forAll s $ \x -> - [x <=. lit (i :: Int) | i <- [1 .. 3]] - -setOfPairLetSpec :: Spec BaseFn (Set (Int, Int)) -setOfPairLetSpec = constrained $ \ps -> - forAll' ps $ \x y -> - x <=. y - -setSingletonSpec :: Spec BaseFn (Set (Int, Int)) -setSingletonSpec = constrained $ \ps -> - forAll ps $ \p -> - forAll (singleton_ (fst_ p)) $ \x -> - x <=. 10 - -pairSingletonSpec :: Spec BaseFn (Int, Int) -pairSingletonSpec = constrained $ \q -> - forAll (singleton_ q) $ \p -> - letBind (fst_ p) $ \x -> - letBind (snd_ p) $ \y -> - x <=. y - -eitherSimpleSetSpec :: Spec BaseFn (Set (Either Int Int)) -eitherSimpleSetSpec = constrained $ \ss -> - forAll ss $ \s -> - (caseOn s) - (branch $ \a -> a <=. 0) - (branch $ \b -> 0 <=. b) - -forAllAnySpec :: Spec BaseFn (Set Int) -forAllAnySpec = constrained $ \as -> - forAll as $ \_ -> True - -weirdSetPairSpec :: Spec BaseFn ([Int], Set (Either Int Int)) -weirdSetPairSpec = constrained' $ \as as' -> - [ as' `dependsOn` as - , forAll as $ \a -> - member_ (left_ a) as' - , forAll as' $ \a' -> - (caseOn a') - (branch $ \x -> elem_ x as) - (branch $ \_ -> False) - ] - -maybeJustSetSpec :: Spec BaseFn (Set (Maybe Int)) -maybeJustSetSpec = constrained $ \ms -> - forAll ms $ \m -> - (caseOn m) - (branch $ \_ -> False) - (branch $ \y -> 0 <=. y) - -notSubsetSpec :: Spec BaseFn (Set Int, Set Int) -notSubsetSpec = constrained' $ \s s' -> not_ $ subset_ s s' - -emptySetSpec :: Spec BaseFn (Set Int) -emptySetSpec = constrained $ \s -> - forAll s $ \x -> member_ x mempty - -emptyEitherMemberSpec :: Spec BaseFn (Set (Either Int Int)) -emptyEitherMemberSpec = constrained $ \s -> - forAll s $ \x -> - (caseOn x) - (branch $ \l -> member_ l mempty) - (branch $ \r -> member_ r mempty) - -emptyEitherSpec :: Spec BaseFn (Set (Either Int Int)) -emptyEitherSpec = constrained $ \s -> - forAll s $ \x -> - (caseOn x) - (branch $ \_ -> False) - (branch $ \_ -> False) - -knownDomainMap :: Spec BaseFn (Map Int Int) -knownDomainMap = constrained $ \m -> - [ dom_ m ==. lit (Set.fromList [1, 2]) - , not_ $ 0 `elem_` rng_ m - ] - -parallelLet :: Spec BaseFn (Int, Int) -parallelLet = constrained $ \p -> - [ letBind (fst_ p) $ \x -> 0 <. x - , letBind (snd_ p) $ \x -> x <. 0 - ] - -letExists :: Spec BaseFn (Int, Int) -letExists = constrained $ \p -> - [ letBind (fst_ p) $ \x -> 0 <. x - , exists (\eval -> pure $ snd (eval p)) $ - \x -> - [ x <. 0 - , snd_ p ==. x - ] - ] - -letExistsLet :: Spec BaseFn (Int, Int) -letExistsLet = constrained $ \p -> - [ letBind (fst_ p) $ \x -> 0 <. x - , exists (\eval -> pure $ snd (eval p)) $ - \x -> - [ assert $ x <. 0 - , letBind (snd_ p) $ \y -> - [ x ==. y - , y <. -1 - ] - ] - ] - -notSubset :: Spec BaseFn (Set Int) -notSubset = constrained $ \s -> - not_ $ s `subset_` lit (Set.fromList [1, 2, 3]) - -unionSized :: Spec BaseFn (Set Int) -unionSized = constrained $ \s -> - 10 ==. size_ (s <> lit (Set.fromList [1 .. 8])) - -listSum :: Numbery a => Spec BaseFn [a] -listSum = constrained $ \as -> - 10 <=. sum_ as - -listSumForall :: Numbery a => Spec BaseFn [a] -listSumForall = constrained $ \xs -> - [ forAll xs $ \x -> 1 <. x - , assert $ sum_ xs ==. 20 - ] - -listSumRange :: Numbery a => Spec BaseFn [a] -listSumRange = constrained $ \xs -> - let n = sum_ xs - in [ forAll xs $ \x -> 1 <. x - , assert $ n <. 20 - , assert $ 10 <. n - ] - -listSumRangeUpper :: Numbery a => Spec BaseFn [a] -listSumRangeUpper = constrained $ \xs -> - let n = sum_ xs - in -- All it takes is one big negative number, - -- then we can't get enough small ones to exceed 10 - -- in the number of tries allowed. - -- So we make x relatively large ( <. 12), If its is - -- relatively small ( <. 5), we can get unlucky. - [ forAll xs $ \x -> [x <. 12] - , assert $ n <. 20 - , assert $ 10 <. n - ] - -listSumRangeRange :: Numbery a => Spec BaseFn [a] -listSumRangeRange = constrained $ \xs -> - let n = sum_ xs - in [ forAll xs $ \x -> [1 <. x, x <. 5] - , assert $ n <. 20 - , assert $ 10 <. n - ] - -listSumElemRange :: Numbery a => Spec BaseFn [a] -listSumElemRange = constrained $ \xs -> - let n = sum_ xs - in [ forAll xs $ \x -> [1 <. x, x <. 5] - , assert $ n `elem_` lit [10, 12 .. 20] - ] - -listSumPair :: Numbery a => Spec BaseFn [(a, Int)] -listSumPair = constrained $ \xs -> - [ assert $ foldMap_ (composeFn fstFn toGenericFn) xs ==. 100 - , forAll' xs $ \x y -> [20 <. x, x <. 30, y <. 100] - ] - -listEmpty :: Spec BaseFn [Int] -listEmpty = constrained $ \xs -> - [ forAll xs $ \_ -> False - , assert $ length_ xs <=. 10 - ] - -dependencyWeirdness :: Spec BaseFn (Int, Int, Int) -dependencyWeirdness = constrained' $ \x y z -> - reify (x + y) id $ \zv -> z ==. zv - -foldTrueCases :: Spec BaseFn (Either Int Int) -foldTrueCases = constrained $ \x -> - [ assert $ not_ $ member_ x (lit (Set.fromList [Left 10])) - , letBind (pair_ x (lit (0 :: Int))) $ \p -> - caseOn - (fst_ p) - (branch $ \_ -> True) - (branch $ \_ -> True) - ] - -foldSingleCase :: Spec BaseFn Int -foldSingleCase = constrained $ \x -> - [ assert $ not_ $ member_ x (lit (Set.fromList [10])) - , letBind (pair_ x $ lit [(10, 20) :: (Int, Int)]) $ \p -> - match p $ \_ p1 -> forAll p1 $ \p2 -> - assert (0 <=. snd_ p2) - ] - -parallelLetPair :: Spec BaseFn (Int, Int) -parallelLetPair = constrained $ \p -> - [ match p $ \x y -> - [ assert $ x <=. y - , y `dependsOn` x - ] - , match p $ \x y -> y <=. x - ] - -data Three = One | Two | Three - deriving (Ord, Eq, Show, Generic) - -instance HasSimpleRep Three -instance BaseUniverse fn => HasSpec fn Three - -mapSizeConstrained :: Spec BaseFn (Map Three Int) -mapSizeConstrained = constrained $ \m -> size_ (dom_ m) <=. 3 - -orPair :: Spec BaseFn [(Int, Int)] -orPair = constrained $ \ps -> - forAll' ps $ \x y -> - x <=. 5 ||. y <=. 5 - -allZeroTree :: Spec BaseFn (BinTree Int) -allZeroTree = constrained $ \t -> - [ forAll' t $ \_ a _ -> a ==. 0 - , genHint 10 t - ] - -isBST :: Spec BaseFn (BinTree Int) -isBST = constrained $ \t -> - [ forAll' t $ \left a right -> - -- TODO: if there was a `binTreeRoot` function on trees - -- this wouldn't need to be quadratic as we would - -- only check agains the head of the left and right - -- subtrees, not _every element_ - [ forAll' left $ \_ l _ -> l <. a - , forAll' right $ \_ h _ -> a <. h - ] - , genHint 10 t - ] - -noChildrenSameTree :: Spec BaseFn (BinTree Int) -noChildrenSameTree = constrained $ \t -> - [ forAll' t $ \left a right -> - [ forAll' left $ \_ l _ -> l /=. a - , forAll' right $ \_ r _ -> r /=. a - ] - , genHint 8 t - ] - -type RoseFn = Fix (OneofL (RoseTreeFn : BaseFns)) - -allZeroRoseTree :: Spec RoseFn (RoseTree Int) -allZeroRoseTree = constrained $ \t -> - [ forAll' t $ \a cs -> - [ a ==. 0 - , length_ cs <=. 4 - ] - , genHint (Just 2, 30) t - ] - -noSameChildrenRoseTree :: Spec RoseFn (RoseTree Int) -noSameChildrenRoseTree = constrained $ \t -> - [ forAll' t $ \a cs -> - [ assert $ a `elem_` lit [1 .. 8] - , forAll cs $ \t' -> - forAll' t' $ \b _ -> - b /=. a - ] - , genHint (Just 2, 30) t - ] - -successiveChildren :: Spec RoseFn (RoseTree Int) -successiveChildren = constrained $ \t -> - [ forAll' t $ \a cs -> - [ forAll cs $ \t' -> - roseRoot_ t' ==. a + 1 - ] - , genHint (Just 2, 10) t - ] - -successiveChildren8 :: Spec RoseFn (RoseTree Int) -successiveChildren8 = constrained $ \t -> - [ t `satisfies` successiveChildren - , forAll' t $ \a _ -> a `elem_` lit [1 .. 5] - ] - -roseTreeList :: Spec RoseFn [RoseTree Int] -roseTreeList = constrained $ \ts -> - [ assert $ length_ ts <=. 10 - , forAll ts $ \t -> - [ forAll t $ \_ -> False - ] - ] - -pairListError :: Spec BaseFn [(Int, Int)] -pairListError = constrained $ \ps -> - [ assert $ length_ ps <=. 10 - , forAll' ps $ \a b -> - [ a `elem_` lit [1 .. 8] - , a ==. 9 - , b ==. a - ] - ] - -listMustSizeIssue :: Spec BaseFn [Int] -listMustSizeIssue = constrained $ \xs -> - [ 1 `elem_` xs - , length_ xs ==. 1 - ] - -roseTreePairs :: Spec RoseFn (RoseTree ([Int], [Int])) -roseTreePairs = constrained $ \t -> - [ assert $ roseRoot_ t ==. lit ([1 .. 10], [1 .. 10]) - , forAll' t $ \p ts -> - forAll ts $ \t' -> - fst_ (roseRoot_ t') ==. snd_ p - , genHint (Nothing, 10) t - ] - -roseTreeMaybe :: Spec RoseFn (RoseTree (Maybe (Int, Int))) -roseTreeMaybe = constrained $ \t -> - [ forAll' t $ \mp ts -> - forAll ts $ \t' -> - onJust mp $ \p -> - onJust (roseRoot_ t') $ \p' -> - fst_ p' ==. snd_ p - , forAll' t $ \mp _ -> isJust mp - , genHint (Nothing, 10) t - ] - -badTreeInteraction :: Spec RoseFn (RoseTree (Either Int Int)) -badTreeInteraction = constrained $ \t -> - [ forAll' t $ \n ts' -> - [ isCon @"Right" n - , forAll ts' $ \_ -> True - ] - , forAll' t $ \n ts' -> - forAll ts' $ \t' -> - [ genHint (Just 4, 10) t' - , assert $ roseRoot_ t' ==. n - ] - , genHint (Just 4, 10) t - ] - -sizeAddOrSub1 :: Spec BaseFn Integer -sizeAddOrSub1 = constrained $ \s -> - 4 ==. s + 2 - -sizeAddOrSub2 :: Spec BaseFn Integer -sizeAddOrSub2 = constrained $ \s -> - 4 ==. 2 + s - -sizeAddOrSub3 :: Spec BaseFn Integer -sizeAddOrSub3 = constrained $ \s -> - 4 ==. s - 2 - --- | We expect a negative Integer, so ltSpec tests for that. -sizeAddOrSub4 :: Spec BaseFn Integer -sizeAddOrSub4 = ltSpec 0 <> (constrained $ \s -> 4 ==. 2 - s) - -sizeAddOrSub5 :: Spec BaseFn Integer -sizeAddOrSub5 = constrained $ \s -> - 2 ==. 12 - s - -listSubSize :: Spec BaseFn [Int] -listSubSize = constrained $ \s -> - 2 ==. 12 - (sizeOf_ s) - -setSubSize :: Spec BaseFn (Set Int) -setSubSize = constrained $ \s -> - 2 ==. 12 - (sizeOf_ s) - -mapSubSize :: Spec BaseFn (Map Int Int) -mapSubSize = constrained $ \s -> - 2 ==. 12 - (sizeOf_ s) - -hasSizeList :: Spec BaseFn [Int] -hasSizeList = hasSize (rangeSize 0 4) - -hasSizeSet :: Spec BaseFn (Set Int) -hasSizeSet = hasSize (rangeSize 1 3) - -hasSizeMap :: Spec BaseFn (Map Int Int) -hasSizeMap = hasSize (rangeSize 1 3) - --- ======================================================== --- Test properties of the instance Num(NumSpec Integer) - -instance Arbitrary (NumSpec Integer) where - arbitrary = do - lo <- arbitrary - hi <- next lo - pure $ NumSpecInterval lo hi - where - next Nothing = arbitrary - next (Just n) = frequency [(1, pure Nothing), (3, Just <$> suchThat arbitrary (> n))] - --- | When we multiply intervals, we get a bounding box, around the possible values. --- When the intervals have infinities, the bounding box can be very loose. In fact the --- order in which we multiply intervals with infinities can affect how loose the bounding box is. --- So ((NegInf, n) * (a, b)) * (c,d) AND (NegInf, n) * ((a, b) * (c,d)) may have different bounding boxes --- To test the associative laws we must have no infinities, and then the associative law will hold. -noInfinity :: Gen (NumSpec Integer) -noInfinity = do - lo <- arbitrary - hi <- suchThat arbitrary (> lo) - pure $ NumSpecInterval (Just lo) (Just hi) - -plusNegate :: NumSpec Integer -> NumSpec Integer -> Property -plusNegate x y = x - y === x + negate y - -commutesNumSpec :: NumSpec Integer -> NumSpec Integer -> Property -commutesNumSpec x y = x + y === y + x - -assocNumSpec :: NumSpec Integer -> NumSpec Integer -> NumSpec Integer -> Property -assocNumSpec x y z = x + (y + z) === (x + y) + z - -commuteTimes :: (NumSpec Integer) -> (NumSpec Integer) -> Property -commuteTimes x y = x * y === y * x - -assocNumSpecTimes :: Gen Property -assocNumSpecTimes = do - x <- noInfinity - y <- noInfinity - z <- noInfinity - pure (x * (y * z) === (x * y) * z) - -negNegate :: NumSpec Integer -> Property -negNegate x = x === negate (negate x) - -scaleNumSpec :: NumSpec Integer -> Property -scaleNumSpec y = y + y === 2 * y - -scaleOne :: NumSpec Integer -> Property -scaleOne y = y === 1 * y - -numNumSpecTree :: TestTree -numNumSpecTree = - testGroup - "Num (NumSpec Integer) properties" - [ testProperty "plusNegate(x - y == x + negate y)" plusNegate - , testProperty "scaleNumSpec(y + y = 2 * y)" scaleNumSpec - , testProperty "scaleOne(y = 1 * y)" scaleOne - , testProperty "negNagate(x = x == negate (negate x))" negNegate - , testProperty "commutesNumSpec(x+y = y+x)" commutesNumSpec - , testProperty "assocNumSpec(x+(y+z) == (x+y)+z)" assocNumSpec - , testProperty "assocNumSpecTimes(x*(y*z) == (x*y)*z)" assocNumSpecTimes - , testProperty "commuteTimes" commuteTimes - ] - --- ========================================================== - -runTestSpec :: HasSpec BaseFn t => Spec BaseFn t -> IO () -runTestSpec spec = defaultMain (testSpec "interactive test with runTestSpec" spec) - -generateSpec :: forall fn a. HasSpec fn a => Spec fn a -> IO a -generateSpec spec = generate (genFromSpec_ @fn spec) diff --git a/libs/constrained-generators/src/Constrained/Univ.hs b/libs/constrained-generators/src/Constrained/Univ.hs deleted file mode 100644 index 964ee5177a1..00000000000 --- a/libs/constrained-generators/src/Constrained/Univ.hs +++ /dev/null @@ -1,389 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE FunctionalDependencies #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE ImportQualifiedPost #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} - -module Constrained.Univ where - -import Constrained.List -import Control.Monad.Identity -import Data.Functor.Const -import Data.Kind -import Data.Map (Map) -import Data.Map qualified as Map -import Data.Set (Set) -import Data.Set qualified as Set - -class FunctionLike fn where - -- | The semantics of a function is given by `sem` - sem :: fn as b -> FunTy as b - --- | Evidence that `fn` exists somewhere in `fnU`. To make it possible --- for `fnU` to consist of a balanced tree of functions we need the `path` --- to help GHC disambiguate instances of this class during solving. -class IsMember (fn :: [Type] -> Type -> Type) fnU (path :: [PathElem]) where - -- | Inject a specific function symbol into a function - -- universe. - injectFn0 :: fn as b -> fnU as b - - extractFn0 :: fnU as b -> Maybe (fn as b) - -type Member fn univ = IsMember fn univ (Path fn univ) - -injectFn :: forall fn fnU as b. Member fn fnU => fn as b -> fnU as b -injectFn = injectFn0 @fn @fnU @(Path fn fnU) - -extractFn :: forall fn fnU as b. Member fn fnU => fnU as b -> Maybe (fn as b) -extractFn = extractFn0 @fn @fnU @(Path fn fnU) - -data PathElem = PFix | PLeft | PRight - ------------------------------------------------------------------------- --- Fixpoints ------------------------------------------------------------------------- - -{- -On the most basic level what we are after is a first order representation of -typed functions. Furthermore, we need the representation to be compositional so -that you can plug-in your own functions into the universe. - -That might sound like it's no problem, but the issue is with higher-order -functions. Consider: - -data ListFn where - MapFn :: _ '[a] b -> ListFn '[[a]] [b] - -What should go in place of `_`? It turns out that you need to specify the global -function universe and make sure the global universe is the same everywhere. - -data ListFn fn where - MapFn :: fn '[a] b -> ListFn fn '[[a]] [b] - --} - -newtype Fix (fn :: Univ -> Univ) (as :: [Type]) b = Fix (fn (Fix fn) as b) - -deriving via (fn (Fix fn)) instance FunctionLike (fn (Fix fn)) => FunctionLike (Fix fn) -deriving via (fn (Fix fn) as b) instance Eq (fn (Fix fn) as b) => Eq (Fix fn as b) -deriving via (fn (Fix fn) as b) instance Show (fn (Fix fn) as b) => Show (Fix fn as b) - ------------------------------------------------------------------------- --- Universes ------------------------------------------------------------------------- - -type Univ = [Type] -> Type -> Type - --- TODO: there are faster implementation of this -data - Oneof - fn - fn' - -- NOTE: everything needs to be quantified over the - -- universe because otherwise it would be impossible - -- to write higher-order functions (like `foldMap`). - (fnU :: [Type] -> Type -> Type) - (as :: [Type]) - b - = OneofLeft !(fn fnU as b) - | OneofRight !(fn' fnU as b) - --- | Build a balanced tree of `Oneof` from a list of function universes. --- NOTE: it is important that this is a balanced tree as that reduces the amount of --- overhead in `injectFn` and `extractFn` from `O(n)` to `O(log(n))`. Surprisingly, --- we've observed this making more than 10% difference in runtime on some generation --- tasks even though the list `as` is typically small (< 20 elements). -type family OneofL as where - OneofL '[t] = t - OneofL (t : ts) = Insert t (OneofL ts) - -type family Insert a t where - Insert a (Oneof fn fn') = Oneof fn' (Insert a fn) - Insert a t = Oneof a t - --- | Compute the path to look up `fn` in `fnU` -type family MPath fn fnU :: Maybe [PathElem] where - MPath fn fn = 'Just '[] - MPath fn (Oneof fn' fn'' fnU) = Resolve (MPath fn (fn' fnU)) (MPath fn (fn'' fnU)) - MPath fn (Fix fn') = AddFix (MPath fn (fn' (Fix fn'))) - MPath _ _ = 'Nothing - -type family AddFix mpath where - AddFix ('Just path) = 'Just ('PFix ': path) - AddFix 'Nothing = 'Nothing - -type family Resolve a b where - Resolve ('Just as) _ = 'Just ('PLeft ': as) - Resolve _ ('Just bs) = 'Just ('PRight ': bs) - Resolve _ _ = 'Nothing - -type family FromJust m where - FromJust ('Just a) = a - -type family Path fn fn' where - Path fn fn' = FromJust (MPath fn fn') - -instance IsMember fn fn '[] where - injectFn0 = id - extractFn0 = Just - -instance IsMember fn (fn' (Fix fn')) path => IsMember fn (Fix fn') ('PFix : path) where - injectFn0 fn = Fix (injectFn0 @_ @_ @path fn) - extractFn0 (Fix fn) = extractFn0 @_ @_ @path fn - -instance IsMember fn (fn' fnU) path => IsMember fn (Oneof fn' fn'' fnU) ('PLeft : path) where - injectFn0 fn = OneofLeft (injectFn0 @_ @_ @path fn) - extractFn0 (OneofLeft fn) = extractFn0 @_ @_ @path fn - extractFn0 _ = Nothing - -instance IsMember fn (fn'' fnU) path => IsMember fn (Oneof fn' fn'' fnU) ('PRight : path) where - injectFn0 fn = OneofRight (injectFn0 @_ @_ @path fn) - extractFn0 (OneofRight fn) = extractFn0 @_ @_ @path fn - extractFn0 _ = Nothing - -instance (FunctionLike (fn fnU), FunctionLike (fn' fnU)) => FunctionLike (Oneof fn fn' fnU) where - sem (OneofLeft f) = sem f - sem (OneofRight f) = sem f - -instance (Show (fn fnU as b), Show (fn' fnU as b)) => Show (Oneof fn fn' fnU as b) where - show (OneofLeft fn) = show fn - show (OneofRight fn') = show fn' - -instance (Eq (fn fnU as b), Eq (fn' fnU as b)) => Eq (Oneof fn fn' fnU as b) where - OneofLeft fn == OneofLeft fn' = fn == fn' - OneofRight fn == OneofRight fn' = fn == fn' - _ == _ = False - ------------------------------------------------------------------------- --- Equality ------------------------------------------------------------------------- - -equalFn :: forall fn a. (Eq a, Member (EqFn fn) fn) => fn '[a, a] Bool -equalFn = injectFn (Equal @_ @fn) - -data EqFn (fn :: [Type] -> Type -> Type) as b where - Equal :: Eq a => EqFn fn '[a, a] Bool - -deriving instance Eq (EqFn fn as b) -deriving instance Show (EqFn fn as b) - -instance FunctionLike (EqFn fn) where - sem Equal = (==) - ------------------------------------------------------------------------- --- Booleans ------------------------------------------------------------------------- - -notFn :: forall fn. Member (BoolFn fn) fn => fn '[Bool] Bool -notFn = injectFn $ Not @fn - -orFn :: forall fn. Member (BoolFn fn) fn => fn '[Bool, Bool] Bool -orFn = injectFn $ Or @fn - --- | Operations on Bool. --- One might expect And :: BoolFn fn '[Bool, Bool] Bool --- But this is problematic because a Term like ( p x &&. q y ) has to solve for --- x or y first, choose x, so once x is fixed, it might be impossible to solve for y --- Luckily we can get conjuction by using Preds, in fact using Preds, the x and y --- can even be the same variable. --- Or can be problematic too (by using a form of DeMorgan's laws: x && y = not(not x || not y)) --- but while that is possible, there are many scenarios which can only be specified using Or. --- If one inadvertantly uses a form of DeMorgan's laws, the worst that can happen is an ErrorSpec --- is returned, and the user can reformulate using Preds. So Or is incomplete, but sound, when it works. -data BoolFn (fn :: [Type] -> Type -> Type) as b where - Not :: BoolFn fn '[Bool] Bool - Or :: BoolFn fn '[Bool, Bool] Bool - -deriving instance Eq (BoolFn fn as b) -deriving instance Show (BoolFn fn as b) - -instance FunctionLike (BoolFn fn) where - sem Not = not - sem Or = (||) - ------------------------------------------------------------------------- --- Pairs ------------------------------------------------------------------------- - -data Prod a b = Prod {prodFst :: a, prodSnd :: b} - deriving (Eq, Ord, Show) - -fstFn :: forall fn a b. Member (PairFn fn) fn => fn '[Prod a b] a -fstFn = injectFn $ Fst @fn - -sndFn :: forall fn a b. Member (PairFn fn) fn => fn '[Prod a b] b -sndFn = injectFn $ Snd @fn - -pairFn :: forall fn a b. Member (PairFn fn) fn => fn '[a, b] (Prod a b) -pairFn = injectFn $ Pair @fn - -data PairFn (fn :: [Type] -> Type -> Type) args res where - Pair :: PairFn fn '[a, b] (Prod a b) - Fst :: PairFn fn '[Prod a b] a - Snd :: PairFn fn '[Prod a b] b - -deriving instance Show (PairFn fn args res) -deriving instance Eq (PairFn fn args res) - -instance FunctionLike (PairFn fn) where - sem = \case - Pair -> Prod - Fst -> prodFst - Snd -> prodSnd - -type family ProdOver as where - ProdOver '[] = () - ProdOver '[a] = a - ProdOver (a : as) = Prod a (ProdOver as) - -listToProd :: (ProdOver as -> r) -> List Identity as -> r -listToProd k Nil = k () -listToProd k (Identity a :> Nil) = k a -listToProd k (Identity a :> b :> as) = k (Prod a (listToProd id (b :> as))) - -prodToList :: forall as. TypeList as => ProdOver as -> List Identity as -prodToList = go (listShape @as) - where - go :: - forall ts. - List (Const ()) ts -> - ProdOver ts -> - List Identity ts - go Nil _ = Nil - go (_ :> Nil) a = Identity a :> Nil - go (_ :> ix :> ixs) (Prod a as) = Identity a :> go (ix :> ixs) as - -appendProd :: - forall xs ys. - (TypeList xs, TypeList ys) => - ProdOver xs -> - ProdOver ys -> - ProdOver (Append xs ys) -appendProd xs ys = listToProd id (appendList @Identity @xs @ys (prodToList xs) (prodToList ys)) - -splitProd :: - forall xs ys. - (TypeList xs, TypeList ys) => - ProdOver (Append xs ys) -> - Prod (ProdOver xs) (ProdOver ys) -splitProd = go (listShape @xs) (listShape @ys) - where - go :: - List (Const ()) as -> - List (Const ()) bs -> - ProdOver (Append as bs) -> - Prod (ProdOver as) (ProdOver bs) - go Nil _ p = Prod () p - go (_ :> Nil) Nil p = Prod p () - go (_ :> Nil) (_ :> _) p = p - go (_ :> a :> as) bs (Prod x xs) = Prod (Prod x p0) p1 - where - Prod p0 p1 = go (a :> as) bs xs - ------------------------------------------------------------------------- --- Sums ------------------------------------------------------------------------- - -data Sum a b - = SumLeft a - | SumRight b - deriving (Ord, Eq, Show) - -injLeftFn :: forall fn a b. Member (SumFn fn) fn => fn '[a] (Sum a b) -injLeftFn = injectFn @(SumFn fn) @fn InjLeft - -injRightFn :: forall fn a b. Member (SumFn fn) fn => fn '[b] (Sum a b) -injRightFn = injectFn @(SumFn fn) @fn InjRight - -data SumFn (fn :: [Type] -> Type -> Type) args res where - InjLeft :: SumFn fn '[a] (Sum a b) - InjRight :: SumFn fn '[b] (Sum a b) - -deriving instance Show (SumFn fn args res) -deriving instance Eq (SumFn fn args res) - -instance FunctionLike (SumFn fn) where - sem = \case - InjLeft -> SumLeft - InjRight -> SumRight - -type family SumOver as where - SumOver '[a] = a - SumOver (a : as) = Sum a (SumOver as) - ------------------------------------------------------------------------- --- Sets ------------------------------------------------------------------------- - -singletonFn :: forall fn a. (Member (SetFn fn) fn, Ord a) => fn '[a] (Set a) -singletonFn = injectFn $ Singleton @_ @fn - -unionFn :: forall fn a. (Member (SetFn fn) fn, Ord a) => fn '[Set a, Set a] (Set a) -unionFn = injectFn $ Union @_ @fn - -subsetFn :: forall fn a. (Member (SetFn fn) fn, Ord a) => fn '[Set a, Set a] Bool -subsetFn = injectFn $ Subset @_ @fn - -memberFn :: forall fn a. (Member (SetFn fn) fn, Ord a) => fn '[a, Set a] Bool -memberFn = injectFn $ Member @_ @fn - -elemFn :: forall fn a. (Member (SetFn fn) fn, Eq a) => fn '[a, [a]] Bool -elemFn = injectFn $ Elem @_ @fn - -disjointFn :: forall fn a. (Member (SetFn fn) fn, Ord a) => fn '[Set a, Set a] Bool -disjointFn = injectFn $ Disjoint @_ @fn - -data SetFn (fn :: [Type] -> Type -> Type) args res where - Subset :: Ord a => SetFn fn '[Set a, Set a] Bool - Disjoint :: Ord a => SetFn fn '[Set a, Set a] Bool - Member :: Ord a => SetFn fn '[a, Set a] Bool - Singleton :: Ord a => SetFn fn '[a] (Set a) - Union :: Ord a => SetFn fn '[Set a, Set a] (Set a) - Elem :: Eq a => SetFn fn '[a, [a]] Bool - -deriving instance Show (SetFn fn args res) -deriving instance Eq (SetFn fn args res) - -instance FunctionLike (SetFn fn) where - sem = \case - Subset -> Set.isSubsetOf - Disjoint -> Set.disjoint - Member -> Set.member - Singleton -> Set.singleton - Union -> (<>) - Elem -> elem - ------------------------------------------------------------------------- --- Maps ------------------------------------------------------------------------- - -data MapFn (fn :: [Type] -> Type -> Type) args res where - Dom :: Ord k => MapFn fn '[Map k v] (Set k) - Rng :: MapFn fn '[Map k v] [v] - -deriving instance Show (MapFn fn args res) -deriving instance Eq (MapFn fn args res) - -instance FunctionLike (MapFn fn) where - sem = \case - Dom -> Map.keysSet - Rng -> Map.elems - -domFn :: forall fn k v. (Member (MapFn fn) fn, Ord k) => fn '[Map k v] (Set k) -domFn = injectFn $ Dom @_ @fn - -rngFn :: forall fn k v. Member (MapFn fn) fn => fn '[Map k v] [v] -rngFn = injectFn $ Rng @fn diff --git a/libs/constrained-generators/test/Tests.hs b/libs/constrained-generators/test/Tests.hs deleted file mode 100644 index 0f687446362..00000000000 --- a/libs/constrained-generators/test/Tests.hs +++ /dev/null @@ -1,8 +0,0 @@ -module Main where - -import Constrained.Test - -import Test.Tasty - -main :: IO () -main = defaultMain tests diff --git a/libs/ledger-state/.ghcid b/libs/ledger-state/.ghcid deleted file mode 100644 index aa09b65ee8f..00000000000 --- a/libs/ledger-state/.ghcid +++ /dev/null @@ -1 +0,0 @@ ---command="cabal repl --repl-options='-isrc -fwarn-unused-binds -fwarn-unused-imports -fno-code -fobject-code -g2 -fno-break-on-exception -fno-break-on-error -ferror-spans -j -Wno-unused-packages'" --clear --no-height-limit --reverse-errors --reload=../../ --outputfile=/tmp/ledger-state-ghcid.txt \ No newline at end of file diff --git a/libs/ledger-state/ChangeLog.md b/libs/ledger-state/ChangeLog.md deleted file mode 100644 index 63d1016f00b..00000000000 --- a/libs/ledger-state/ChangeLog.md +++ /dev/null @@ -1,3 +0,0 @@ -# Changelog for ledegr-state - -## Unreleased changes diff --git a/libs/ledger-state/README.md b/libs/ledger-state/README.md deleted file mode 100644 index 85d777579ce..00000000000 --- a/libs/ledger-state/README.md +++ /dev/null @@ -1,72 +0,0 @@ -# ledger-state - -This tool allows loading the ledger state from binary encoded CBOR format into -sqlite database in order to perform various analysis. In particular benchmark -the memory overhead. - -## Dumping LedgerState - -In order to be able to use the tool we need to get ahold of current ledger -state. For this we need to start a cardano node and wait for it to sync. - -```haskell -$ export CARDANO_DATA="${HOME}/iohk/chain/mainnet" -$ mkdir -p "${CARDANO_DATA}"/db -$ cd "${CARDANO_DATA}" -``` - -Download all the [mainnet related config files](https://developers.cardano.org/docs/get-started/running-cardano/#mainnet--production): -``` -curl -O -J https://hydra.iohk.io/build/7370192/download/1/mainnet-config.json -curl -O -J https://hydra.iohk.io/build/7370192/download/1/mainnet-byron-genesis.json -curl -O -J https://hydra.iohk.io/build/7370192/download/1/mainnet-shelley-genesis.json -curl -O -J https://hydra.iohk.io/build/7370192/download/1/mainnet-alonzo-genesis.json -curl -O -J https://hydra.iohk.io/build/7370192/download/1/mainnet-topology.json -``` - -Start the node and wait for it to fully sync - -``` -$ export CARDANO_NODE_SOCKET_PATH="${CARDANO_DATA}/db/node.socket" -$ cardano-node run - --topology "${CARDANO_DATA}/mainnet-topology.json" \ - --database-path "${CARDANO_DATA}/db" \ - --socket-path "${CARDANO_NODE_SOCKET_PATH}" \ - --host-addr 127.0.0.1 \ - --port 3001 \ - --config "${CARDANO_DATA}/mainnet-config.json" & -``` - -Dump the ledger state and focus back onto the node: - -```shell -$ cardano-cli query ledger-state --mainnet --out-file "${CARDANO_DATA}/ledger-state.bin" -$ fg -``` -Hit Ctr-C to stop the node - -## Populate sqlite db - -```shell -$ cabal run -- ledger-state:ledger-state --new-epoch-state-cbor="${CARDANO_DATA}/ledger-state.bin" --sqlite-db="${CARDANO_DATA}/ledger-state.sqlite" -``` - -## Create NewEpochState from sqlite db - -```shell -$ cabal run -- ledger-state:ledger-state --epoch-state-cbor="${CARDANO_DATA}/ledger-state.bin" --sqlite-db="${CARDANO_DATA}/ledger-state.sqlite" -``` - -## Running benchmarks - -### Memory - -```shell -$ cabal bench ledger-state:memory --benchmark-options="--new-epoch-state-cbor=\"${CARDANO_DATA}/ledger-state.bin\" --new-epoch-state-sqlite=\"${CARDANO_DATA}/ledger-state.sqlite\"" -``` -### Performance - -Performance benchmarks need an actual mainnet ledger state and genesis config -file to run properly. It is not possible to add extra arguments to criterion cli -menu, therefore paths to those files must be supplied as environment variables. - diff --git a/libs/ledger-state/Setup.hs b/libs/ledger-state/Setup.hs deleted file mode 100644 index e8ef27dbba9..00000000000 --- a/libs/ledger-state/Setup.hs +++ /dev/null @@ -1,3 +0,0 @@ -import Distribution.Simple - -main = defaultMain diff --git a/libs/ledger-state/app/Main.hs b/libs/ledger-state/app/Main.hs deleted file mode 100644 index ebcf671fede..00000000000 --- a/libs/ledger-state/app/Main.hs +++ /dev/null @@ -1,101 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE OverloadedStrings #-} - -module Main where - -import Cardano.Ledger.Shelley.LedgerState -import Cardano.Ledger.State.Query -import Cardano.Ledger.State.UTxO -import Control.Monad -import Data.Text as T (pack) -import Options.Applicative -import System.IO - --- | Insight into options: --- --- * `optsNewEpochStateBinaryFile` is for reading a previously serialized --- * `NewEpochState` produced by cadano-cli` and is used to populate sqlite --- * database --- --- * `optsEpochStateBinaryFile` is used for grabbing data from sqlite, --- * constructing `EpochState` (in a new format) and writing it into the cbor --- * serialized file -data Opts = Opts - { optsNewEpochStateBinaryFile :: Maybe FilePath - -- ^ Path to the CBOR encoded NewEpochState data type, which will be used to - -- load into sqlite database - , optsEpochStateBinaryFile :: Maybe FilePath - -- ^ Path to the CBOR encoded EpochState data type, which will have data - -- from sqlite database written into. - , optsSqliteDbFile :: Maybe FilePath - -- ^ Path to Sqlite database file. - } - deriving (Show) - -optsParser :: Parser Opts -optsParser = - Opts - <$> option - (Just <$> str) - ( long "new-epoch-state-cbor" - <> value Nothing - <> help - ( "Path to the CBOR encoded NewEpochState data type. " - <> "Can be produced by `cardano-cli query ledger-state` command. " - <> "When --sqlite-db is supplied then db will be populated by this file " - <> "otherwise stats about the state will be printed to stdout" - ) - ) - <*> option - (Just <$> str) - ( long "epoch-state-cbor" - <> value Nothing - <> help - ( "Path to the CBOR encoded EpochState data type. " - <> "This file will be populated from the sqlite.db" - <> "Requires --sqlite-db" - ) - ) - <*> option - (Just <$> str) - ( long "sqlite-db" - <> value Nothing - <> help - ( "Path to Sqlite database file. When supplied then new-epoch-state " - <> "will be loaded into the databse. Requires --new-epoch-state-cbor" - ) - ) - -main :: IO () -main = do - hSetBuffering stdout LineBuffering - opts <- - execParser $ - info - ( optsParser - <* abortOption - (ShowHelpText Nothing) - (long "help" <> short 'h' <> help "Display this message.") - ) - (header "ledger-state - Tool for analyzing ledger state") - forM_ (optsNewEpochStateBinaryFile opts) $ \binFp -> do - nes <- readNewEpochState binFp - case optsSqliteDbFile opts of - Nothing -> printNewEpochStateStats $ countNewEpochStateStats nes - Just dbFpStr -> do - let dbFp = T.pack dbFpStr - storeEpochState dbFp $ nesEs nes - putStrLn "Loaded NewEpochState into the database" - forM_ (optsEpochStateBinaryFile opts) $ \binFp -> do - forM_ (optsSqliteDbFile opts) $ \dbFpStr -> do - let dbFp = T.pack dbFpStr - epochState <- loadEpochState dbFp - putStrLn "Loaded EpochState from the database" - writeEpochState binFp epochState - putStrLn $ "Written EpochState into: " ++ dbFpStr - --- forM_ (optsSqliteDbFile opts) $ \dbFpStr -> do --- let dbFp = T.pack dbFpStr --- km <- loadDbUTxO txIdSharingKeyMap dbFp --- m <- loadDbUTxO noSharing dbFp --- testKeyMap km m diff --git a/libs/ledger-state/bench/Address.hs b/libs/ledger-state/bench/Address.hs deleted file mode 100644 index e5657264a87..00000000000 --- a/libs/ledger-state/bench/Address.hs +++ /dev/null @@ -1,192 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} - -module Main where - -import Cardano.Crypto.Hash -import Cardano.Ledger.Address -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.Binary -import Cardano.Ledger.Credential -import Cardano.Ledger.Crypto -import Cardano.Ledger.Keys -import Control.DeepSeq (NFData, deepseq) -import Criterion.Main -import Data.Foldable (foldMap') -import Data.Maybe (fromMaybe) -import qualified Data.Text as T -import Data.Unit.Strict -import Test.Cardano.Ledger.Core.Address (decompactAddrOldLazy) - -main :: IO () -main = do - let mkPayment :: Int -> Credential 'Payment StandardCrypto - mkPayment = KeyHashObj . payAddr28 - stakeRefBase :: Int -> StakeReference StandardCrypto - stakeRefBase = StakeRefBase . KeyHashObj . stakeAddr28 - mkAddr :: (Int -> StakeReference StandardCrypto) -> Int -> Addr StandardCrypto - mkAddr mkStake n = Addr Mainnet (mkPayment n) (mkStake n) - mkPtr n = - let ni = toInteger n - in Ptr (SlotNo (fromIntegral n)) (mkTxIxPartial ni) (mkCertIxPartial (ni + 1)) - count :: Int - count = 10000 - seqUnit :: a -> StrictUnit - seqUnit x = x `seq` mempty - forcePaymentCred :: Addr StandardCrypto -> StrictUnit - forcePaymentCred = \case - Addr _ p _ -> p `seq` mempty - _ -> mempty - forceStakingCred :: Addr StandardCrypto -> StrictUnit - forceStakingCred = \case - Addr _ _ s -> s `deepseq` mempty - _ -> mempty - addrs :: (Int -> StakeReference StandardCrypto) -> [Addr StandardCrypto] - addrs mkStake = mkAddr mkStake <$> [1 .. count] - partialDeserializeAddr :: ByteString -> Addr StandardCrypto - partialDeserializeAddr = - either (error . show) id . decodeFullDecoder' version "Addr" fromCborAddr - version = maxBound :: Version - defaultMain - [ bgroup - "encode" - [ bgroup "StakeRefNull" $ - [ env (pure (addrs (const StakeRefNull))) $ - bench "old" . whnf (foldMap' (seqUnit . compactAddr)) - ] - , bgroup "StakeRefBase" $ - [ env (pure (addrs stakeRefBase)) $ - bench "old" . whnf (foldMap' (seqUnit . compactAddr)) - ] - , bgroup "StakeRefPtr" $ - [ env (pure (addrs (StakeRefPtr . mkPtr))) $ - bench "old" . whnf (foldMap' (seqUnit . compactAddr)) - ] - ] - , bgroup - "decode" - [ bgroup - "fromCompact" - [ bgroup - "NormalForm" - [ benchDecode - "StakeRefNull" - deepseqUnit - (compactAddr <$> addrs (const StakeRefNull)) - decompactAddrOldLazy - decompactAddr - , benchDecode - "StakeRefBase" - deepseqUnit - (compactAddr <$> addrs stakeRefBase) - decompactAddrOldLazy - decompactAddr - , benchDecode - "StakeRefPtr" - deepseqUnit - (compactAddr <$> addrs (StakeRefPtr . mkPtr)) - decompactAddrOldLazy - decompactAddr - ] - , bgroup - "PaymentCredential" - [ benchDecode - "StakeRefNull" - forcePaymentCred - (compactAddr <$> addrs (const StakeRefNull)) - decompactAddrOldLazy - decompactAddr - , benchDecode - "StakeRefBase" - forcePaymentCred - (compactAddr <$> addrs stakeRefBase) - decompactAddrOldLazy - decompactAddr - , benchDecode - "StakeRefPtr" - forcePaymentCred - (compactAddr <$> addrs (StakeRefPtr . mkPtr)) - decompactAddrOldLazy - decompactAddr - ] - , bgroup - "StakingCredential" - [ benchDecode - "StakeRefNull" - forceStakingCred - (compactAddr <$> addrs (const StakeRefNull)) - decompactAddrOldLazy - decompactAddr - , benchDecode - "StakeRefBase" - forceStakingCred - (compactAddr <$> addrs stakeRefBase) - decompactAddrOldLazy - decompactAddr - , benchDecode - "StakeRefPtr" - forceStakingCred - (compactAddr <$> addrs (StakeRefPtr . mkPtr)) - decompactAddrOldLazy - decompactAddr - ] - ] - , bgroup - "decCBOR-Addr" - [ benchDecode - "StakeRefNull" - forcePaymentCred - (serialize' version <$> addrs (const StakeRefNull)) - (unsafeDeserialize' version) - partialDeserializeAddr - , benchDecode - "StakeRefBase" - forcePaymentCred - (serialize' version <$> addrs stakeRefBase) - (unsafeDeserialize' version) - partialDeserializeAddr - , benchDecode - "StakeRefPtr" - forcePaymentCred - (serialize' version <$> addrs (StakeRefPtr . mkPtr)) - (unsafeDeserialize' version) - partialDeserializeAddr - ] - ] - ] - -benchDecode :: - NFData a => - String -> - (b -> StrictUnit) -> - [a] -> - (a -> b) -> - (a -> b) -> - Benchmark -benchDecode benchName forceResult as oldDecode newDecode = - env (pure as) $ \cas -> - bgroup benchName $ - [ bench "old" $ whnf (foldMap' (forceResult . oldDecode)) cas - , bench "new" $ whnf (foldMap' (forceResult . newDecode)) cas - ] - -deepseqUnit :: NFData a => a -> StrictUnit -deepseqUnit x = x `deepseq` mempty - -textDigits :: Int -> T.Text -textDigits n = let i = n `mod` 10 in T.pack (take 6 (cycle (show i))) - -payAddr28 :: Int -> KeyHash 'Payment StandardCrypto -payAddr28 n = - KeyHash $ - fromMaybe "Unexpected PayAddr28" $ - hashFromTextAsHex $ - textDigits n <> "0405060708090a0b0c0d0e0f12131415161718191a1b1c1d1e" - -stakeAddr28 :: Int -> KeyHash 'Staking StandardCrypto -stakeAddr28 n = - KeyHash $ - fromMaybe "Unexpected StakeAddr28" $ - hashFromTextAsHex $ - textDigits n <> "2122232425262728292a2b2c2d2e2f32333435363738393a3b" diff --git a/libs/ledger-state/bench/Memory.hs b/libs/ledger-state/bench/Memory.hs deleted file mode 100644 index e888ab7a5ba..00000000000 --- a/libs/ledger-state/bench/Memory.hs +++ /dev/null @@ -1,107 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE OverloadedStrings #-} - -module Main where - -import Cardano.Ledger.State.Query -import Cardano.Ledger.State.UTxO -import Control.Monad -import qualified Data.Text as T -import Options.Applicative as O -import Weigh - -data Opts = Opts - { optsNewEpochStateBinaryFile :: Maybe FilePath - -- ^ Path to the CBOR encoded NewEpochState data type, which will be used to - -- benchmarking deserialization of NewEpochState - , optsEpochStateBinaryFile :: Maybe FilePath - -- ^ Path to the CBOR encoded EpochState data type that will be used for - -- benchmarking deserialization of EpochState - , optsSqliteDbFile :: Maybe FilePath - -- ^ Path to Sqlite database file. - } - deriving (Show) - -optsParser :: Parser Opts -optsParser = - Opts - <$> option - (Just <$> str) - ( long "new-epoch-state-cbor" - <> O.value Nothing - <> help - ("Benchmark loading CBOR encoded NewEpochState into memory.") - ) - <*> option - (Just <$> str) - ( long "epoch-state-cbor" - <> O.value Nothing - <> help - ("Benchmark loading CBOR encoded EpochState into memory.") - ) - <*> option - (Just <$> str) - ( long "sqlite-db" - <> O.value Nothing - <> help - ("Run various benchmarks on LedgerState representations") - ) - -main :: IO () -main = do - opts <- - execParser $ - info - ( optsParser - <* abortOption - (ShowHelpText Nothing) - (long "help" <> short 'h' <> help "Display this message.") - ) - (header "ledger-state:memory - Tool for analyzing memory consumption of ledger state") - let cols = [Case, Max, MaxOS, Live, Allocated, GCs] - mainWith $ do - setColumns cols - forM_ (optsNewEpochStateBinaryFile opts) $ \binFp -> do - io "NewEpochState" readNewEpochState binFp - forM_ (optsEpochStateBinaryFile opts) $ \binFp -> do - io "EpochState (DecCBOR)" readEpochState binFp - forM_ (optsSqliteDbFile opts) $ \dbFpStr -> do - let dbFp = T.pack dbFpStr - io "EpochState (with-sharing)" loadEpochStateWithSharing dbFp - io "EpochState (no-sharing)" loadEpochState dbFp - --- forM_ mEpochStateEntity $ \_ese -> --- -- wgroup "EpochState" $ do --- -- io "SnapShots - no sharing" (loadSnapShotsNoSharingM dbFp) _ese --- -- io "SnapShots - with sharing" (loadSnapShotsWithSharingM dbFp) _ese --- -- io "SnapShots (Vector) - no sharing" (loadSnapShotsNoSharing dbFp) _ese --- -- io "SnapShots (Vector) - with sharing" (loadSnapShotsWithSharing dbFp) _ese --- wgroup "DState+UTxO" $ do --- io "IntMap (KeyMap TxId TxOut)" getLedgerStateNoSharingKeyMap dbFp --- io "IntMap (KeyMap TxId TxOut) (sharing)" getLedgerStateWithSharingKeyMap dbFp - --- io "KeyMap TxId (IntMap TxOut)" getLedgerStateDStateTxIdSharingKeyMap dbFp --- io "IntMap (Map TxId TxOut)" getLedgerStateDStateTxIxSharing dbFp --- io "Map TxIn TxOut" getLedgerStateDStateSharing dbFp - --- wgroup "Baseline" $ do --- io "DState" loadDStateNoSharing dbFp --- io "UTxO" loadUTxONoSharing dbFp --- io "LedgerState" getLedgerStateNoSharing dbFp --- wgroup "UTxO (No TxOut)" $ do --- io "IntMap (KeyMap TxId ())" (loadDbUTxO txIxSharingKeyMap_) dbFp --- io "KeyMap TxId (IntMap TxId ())" (loadDbUTxO txIdSharingKeyMap_) dbFp --- io "IntMap (Map TxId ())" (loadDbUTxO txIxSharing_) dbFp --- io "Map TxIn ()" (loadDbUTxO noSharing_) dbFp --- wgroup "LedgerState" $ do --- wgroup "UTxO (Share DState)" $ do --- io "IntMap (KeyMap TxId TxOut)" getLedgerStateDStateTxIxSharingKeyMap dbFp --- io "KeyMap TxId (IntMap TxOut)" getLedgerStateDStateTxIdSharingKeyMap dbFp --- io "IntMap (Map TxId TxOut)" getLedgerStateDStateTxIxSharing dbFp --- io "Map TxIn TxOut" getLedgerStateDStateSharing dbFp - --- wgroup "Share TxOut StakeCredential" $ do --- io "Map TxIn TxOut'" getLedgerStateDStateTxOutSharing dbFp --- wgroup "Share TxOut StakeCredential" $ do --- io "Map TxIn TxOut'" getLedgerStateTxOutSharing dbFp --- wgroup "No Sharing" $ do diff --git a/libs/ledger-state/bench/Performance.hs b/libs/ledger-state/bench/Performance.hs deleted file mode 100644 index 283ab7eacc1..00000000000 --- a/libs/ledger-state/bench/Performance.hs +++ /dev/null @@ -1,268 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TypeApplications #-} - -module Main where - -import Cardano.Ledger.Address -import Cardano.Ledger.Api.Era -import Cardano.Ledger.Api.State.Query (queryStakePoolDelegsAndRewards) -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.Binary -import Cardano.Ledger.Core -import Cardano.Ledger.Shelley.API.Mempool -import Cardano.Ledger.Shelley.API.Wallet (getFilteredUTxO, getUTxO) -import Cardano.Ledger.Shelley.Genesis ( - ShelleyGenesis (..), - fromNominalDiffTimeMicro, - mkShelleyGlobals, - ) -import Cardano.Ledger.Shelley.LedgerState -import Cardano.Ledger.State.UTxO (CurrentEra, readNewEpochState) -import Cardano.Ledger.UMap -import Cardano.Ledger.UTxO -import Cardano.Ledger.Val -import Cardano.Slotting.EpochInfo (fixedEpochInfo) -import Cardano.Slotting.Time (mkSlotLength) -import Control.DeepSeq -import Criterion.Main -import Data.Aeson -import Data.Bifunctor (first) -import Data.ByteString.Base16.Lazy as BSL16 -import Data.ByteString.Lazy (ByteString) -import Data.Default.Class (def) -import Data.Foldable as F -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.MapExtras (extractKeys, extractKeysSmallSet) -import Data.Set (Set) -import qualified Data.Set as Set -import Lens.Micro ((^.)) -import System.Environment (getEnv) -import System.Random.Stateful -import Test.Cardano.Ledger.Api.State.Query (getFilteredDelegationsAndRewardAccounts) -import Test.Cardano.Ledger.Core.Arbitrary (uniformSubset) - -main :: IO () -main = do - let ledgerVarName = "BENCH_LEDGER_STATE_PATH" - genesisVarName = "BENCH_GENESIS_PATH" - ledgerStateFilePath <- getEnv ledgerVarName - genesisFilePath <- getEnv genesisVarName - genesis <- either error id <$> eitherDecodeFileStrict' genesisFilePath - - let toMempoolState :: NewEpochState CurrentEra -> MempoolState CurrentEra - toMempoolState NewEpochState {nesEs = EpochState {esLState}} = esLState - pp :: PParams CurrentEra - pp = def - !globals = mkGlobals genesis pp - !slotNo = SlotNo 55733343 - applyTx' mempoolEnv mempoolState = - either (error . show) seqTuple - . applyTx globals mempoolEnv mempoolState - reapplyTx' mempoolEnv mempoolState tx = - case reapplyTx globals mempoolEnv mempoolState tx of - Left err -> error (show err) - Right st -> st - putStrLn $ "Importing NewEpochState from: " ++ show ledgerStateFilePath - es <- readNewEpochState ledgerStateFilePath - putStrLn "Done importing NewEpochState" - let largeKeysNum = 100000 - stdGen = mkStdGen 2022 - largeKeys <- selectRandomMapKeys 100000 stdGen (unUTxO (getUTxO es)) - defaultMain - [ env (pure (mkMempoolEnv es slotNo, toMempoolState es)) $ \ ~(mempoolEnv, mempoolState) -> - bgroup - "reapplyTx" - [ env (pure validatedTx1) $ - bench "Tx1" . whnf (reapplyTx' mempoolEnv mempoolState) - , env (pure validatedTx2) $ - bench "Tx2" . whnf (reapplyTx' mempoolEnv mempoolState) - , env (pure validatedTx3) $ - bench "Tx3" . whnf (reapplyTx' mempoolEnv mempoolState) - , env - (pure [validatedTx1, validatedTx2, validatedTx3]) - $ bench "Tx1+Tx2+Tx3" . whnf (F.foldl' (reapplyTx' mempoolEnv) mempoolState) - ] - , env (pure (mkMempoolEnv es slotNo, toMempoolState es)) $ \ ~(mempoolEnv, mempoolState) -> - bgroup - "applyTx" - [ env (pure (extractTx validatedTx1)) $ - bench "Tx1" . whnf (applyTx' mempoolEnv mempoolState) - , env (pure (extractTx validatedTx2)) $ - bench "Tx2" . whnf (applyTx' mempoolEnv mempoolState) - , env (pure (extractTx validatedTx3)) $ - bench "Tx3" . whnf (applyTx' mempoolEnv mempoolState) - ] - , env (pure (getUTxO es)) $ \utxo -> - bgroup - "UTxO" - [ bench "balance" $ nf balance utxo - , bench "coinBalance" $ nf coinBalance utxo - , -- We need to filter out all multi-assets to prevent `areAllAdaOnly` - -- from short circuiting and producing results that are way better - -- than the worst case - env (pure $ Map.filter (\txOut -> isAdaOnly (txOut ^. valueTxOutL)) $ unUTxO utxo) $ - bench "areAllAdaOnly" . nf areAllAdaOnly - ] - , env (pure es) $ \newEpochState -> - let utxo = getUTxO es - (_, minTxOut) = Map.findMin $ unUTxO utxo - (_, maxTxOut) = Map.findMax $ unUTxO utxo - setAddr = - Set.fromList [minTxOut ^. addrTxOutL, maxTxOut ^. addrTxOutL] - in bgroup - "MinMaxTxId" - [ env (pure setAddr) $ - bench "getFilteredNewUTxO" . nf (getFilteredUTxO newEpochState) - , env (pure setAddr) $ - bench "getFilteredOldUTxO" . nf (getFilteredOldUTxO newEpochState) - ] - , env (pure es) $ \newEpochState -> - let umap = dsUnified . certDState . lsCertState . esLState $ nesEs newEpochState - elems = umElems umap - creds = runStateGen_ stdGen (uniformSubset (Just 10) (Map.keysSet elems)) - in bgroup - ( "GetFilteredDelegationsAndRewardAccounts (" - ++ show (Set.size creds) - ++ "/" - ++ show (Map.size elems) - ++ ")" - ) - [ env (pure creds) $ - bench "getFilteredDelegationsAndRewardAccounts" - . nf (getFilteredDelegationsAndRewardAccounts umap) - , env (pure creds) $ - bench "queryStakePoolDelegsAndRewards" - . nf (queryStakePoolDelegsAndRewards newEpochState) - ] - , bgroup - "DeleteTxOuts" - [ extractKeysBench (unUTxO (getUTxO es)) largeKeysNum largeKeys - , extractKeysBench (unUTxO (getUTxO es)) 9 (Set.take 9 largeKeys) - , extractKeysBench (unUTxO (getUTxO es)) 5 (Set.take 5 largeKeys) - , extractKeysBench (unUTxO (getUTxO es)) 2 (Set.take 2 largeKeys) - ] - ] - -extractKeysBench :: - (NFData k, NFData a, Ord k) => - Map k a -> - Int -> - Set k -> - Benchmark -extractKeysBench utxo n ks = - bgroup - (show n) - [ env (pure utxo) $ \m -> - bench "extractKeys" $ whnf (seqTuple . extractKeys m) ks - , env (pure utxo) $ \m -> - bench "extractKeysSmallSet" $ whnf (seqTuple . extractKeysSmallSet m) ks - , env (pure utxo) $ \m -> - bench "extractKeysNaive" $ whnf (seqTuple . extractKeysNaive m) ks - ] - --- | Pick out randomly n unique keys from the Map -selectRandomMapKeys :: (Monad m, Ord k) => Int -> StdGen -> Map k v -> m (Set k) -selectRandomMapKeys n gen m = runStateGenT_ gen $ \g -> - let go !ixs !ks - | Set.size ixs < n = do - ix <- uniformRM (0, Map.size m - 1) g - if ix `Set.member` ixs - then go ixs ks - else go (Set.insert ix ixs) (Set.insert (fst $ Map.elemAt ix m) ks) - | otherwise = pure ks - in go Set.empty Set.empty - -extractKeysNaive :: Ord k => Map k a -> Set.Set k -> (Map k a, Map k a) -extractKeysNaive sm s = (Map.withoutKeys sm s, Map.restrictKeys sm s) - -decodeTx :: ByteString -> Tx CurrentEra -decodeTx hex = either error id $ do - bsl <- BSL16.decode hex - first show $ decodeFullAnnotator (eraProtVerHigh @CurrentEra) "Tx" decCBOR bsl - --- | Most basic ada-only transaction: --- --- * One input with Shelley address without staking --- * One destination and change back to the address from original input. -validatedTx1 :: Validated (Tx CurrentEra) -validatedTx1 = - unsafeMakeValidated $ - decodeTx - "84a500818258201a42ba3e89f7ac4e526a61836b29847cb143c504e1429caa75c9ee06\ - \312f7ef7000d80018282581d61780648b89ea2f11fa9bbdd67552db5dd020eda1c9a54\ - \142dd9f1b1361a001440b3825839011e9c9362752648dda1dfa9382c70aad2bedbb683\ - \c213c6cdf4c4ef14800525c22102c1a6e05589b0209ccc06f57cb332960920d45080ba\ - \c31a000f4240021a0002a2ad0e81581c780648b89ea2f11fa9bbdd67552db5dd020eda\ - \1c9a54142dd9f1b136a10081825820cf2477066091b565f87f0445817c4df726900b29\ - \af3f05d229309afdbf94296d5840028182010e2204fae981f24df1be5e890122d2d854\ - \dde86c57635fa88de1df834b4321e2aaade0353947b682f265cc546abc4db86853f435\ - \842a808e500e4201f5f6" - --- | Slightly less basic ada-only transaction: --- --- * One input with Shelley address /with/ staking address --- * One destination and change back to the address from original input. -validatedTx2 :: Validated (Tx CurrentEra) -validatedTx2 = - unsafeMakeValidated $ - decodeTx - "84a500818258204c94b067b71c219d178e81d5aa87d2bc8c567855056f646fd244979d\ - \7b989f83000d80018282583901780648b89ea2f11fa9bbdd67552db5dd020eda1c9a54\ - \142dd9f1b13693d02e102e7e1917f14280d263c6878f9a7f238c2a24e702e9ea6ccf1a\ - \0011cae3825839011e9c9362752648dda1dfa9382c70aad2bedbb683c213c6cdf4c4ef\ - \14800525c22102c1a6e05589b0209ccc06f57cb332960920d45080bac31a000f424002\ - \1a0002a77d0e81581c780648b89ea2f11fa9bbdd67552db5dd020eda1c9a54142dd9f1\ - \b136a10081825820cf2477066091b565f87f0445817c4df726900b29af3f05d229309a\ - \fdbf94296d5840634a53d6826e3c63a0fd451e142c565beea8e08ff47bb302b7365a97\ - \5a723618c48ffafe2048ae9181a388bdea5f61ca7f085d1073e91d64722a2e76509c7b\ - \0ef5f6" - --- | Transaction with non-ADA value --- --- * One input with Shelley address /with/ staking address and some tokens --- * One destination and change back to the address from original input. -validatedTx3 :: Validated (Tx CurrentEra) -validatedTx3 = - unsafeMakeValidated $ - decodeTx - "84a500818258200e5d59af740d8682656ade4af6c069f926b9ec51689ee962260b4127\ - \8d21538e000d80018282583901780648b89ea2f11fa9bbdd67552db5dd020eda1c9a54\ - \142dd9f1b13693d02e102e7e1917f14280d263c6878f9a7f238c2a24e702e9ea6ccf1a\ - \002a26f282583901780648b89ea2f11fa9bbdd67552db5dd020eda1c9a54142dd9f1b1\ - \3693d02e102e7e1917f14280d263c6878f9a7f238c2a24e702e9ea6ccf821a00150bd0\ - \a1581ca89568bb399d0cdc38367e47831c95186f5c79e58174e08a18232396a14a4554\ - \424643546f6b656e1a006cc9f2021a0002afe90e81581c780648b89ea2f11fa9bbdd67\ - \552db5dd020eda1c9a54142dd9f1b136a10081825820cf2477066091b565f87f044581\ - \7c4df726900b29af3f05d229309afdbf94296d584088444a5845b198a2d255175770be\ - \7120c2d3482751b14f06dd41d7ff023eeae6e63933b097c023c1ed19df6a061173c45aa\ - \54cceb568ff1886e2716e84e6260df5f6" - -mkGlobals :: ShelleyGenesis StandardCrypto -> PParams CurrentEra -> Globals -mkGlobals genesis pp = - mkShelleyGlobals genesis epochInfoE majorPParamsVer - where - majorPParamsVer = pvMajor $ pp ^. ppProtocolVersionL - epochInfoE = - fixedEpochInfo - (sgEpochLength genesis) - (mkSlotLength . fromNominalDiffTimeMicro . sgSlotLength $ genesis) - -getFilteredOldUTxO :: - EraTxOut era => - NewEpochState era -> - Set (Addr (EraCrypto era)) -> - UTxO era -getFilteredOldUTxO ss addrs = - UTxO $ - Map.filter (\txOut -> (txOut ^. compactAddrTxOutL) `Set.member` addrSBSs) fullUTxO - where - UTxO fullUTxO = getUTxO ss - addrSBSs = Set.map compactAddr addrs - -seqTuple :: (a, b) -> (a, b) -seqTuple (x, y) = x `seq` y `seq` (x, y) -{-# INLINE seqTuple #-} diff --git a/libs/ledger-state/ledger-state.cabal b/libs/ledger-state/ledger-state.cabal deleted file mode 100644 index f3c679eca28..00000000000 --- a/libs/ledger-state/ledger-state.cabal +++ /dev/null @@ -1,138 +0,0 @@ -cabal-version: 3.0 -name: ledger-state -version: 9.9.9.9 -license: Apache-2.0 -maintainer: operations@iohk.io -author: IOHK -description: - This is a tool that helps us experiment with the Ledger State - -build-type: Simple -extra-source-files: - README.md - ChangeLog.md - -source-repository head - type: git - location: https://github.com/intersectmbo/cardano-ledger.git - subdir: libs/ledger-state - -library - exposed-modules: - Cardano.Ledger.State - Cardano.Ledger.State.UTxO - Cardano.Ledger.State.Orphans - Cardano.Ledger.State.Schema - Cardano.Ledger.State.Transform - Cardano.Ledger.State.Query - Cardano.Ledger.State.Vector - - hs-source-dirs: src - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wunused-packages - - build-depends: - base >=4.14 && <5, - bytestring, - cardano-crypto-class, - cardano-ledger-alonzo, - cardano-ledger-babbage, - cardano-ledger-binary, - cardano-ledger-core, - cardano-ledger-mary, - cardano-ledger-shelley, - conduit, - containers, - data-default-class, - vector-map, - deepseq, - foldl, - vector, - microlens, - persistent <2.15, - persistent-sqlite, - prettyprinter, - set-algebra, - text, - transformers - -executable ledger-state - main-is: Main.hs - hs-source-dirs: app - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wunused-packages - -O2 -threaded -rtsopts - - build-depends: - base, - cardano-ledger-shelley, - ledger-state, - optparse-applicative, - text - -benchmark memory - type: exitcode-stdio-1.0 - main-is: Memory.hs - hs-source-dirs: bench - default-language: Haskell2010 - ghc-options: -Wall -O2 -rtsopts - build-depends: - base, - deepseq, - weigh, - ledger-state, - optparse-applicative, - text - -benchmark performance - type: exitcode-stdio-1.0 - main-is: Performance.hs - hs-source-dirs: bench - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wunused-packages - -threaded -rtsopts -O2 - - build-depends: - base, - aeson >=2, - bytestring, - base16-bytestring, - cardano-data, - cardano-ledger-api:{cardano-ledger-api, testlib}, - cardano-ledger-binary, - cardano-ledger-core:{cardano-ledger-core, testlib}, - cardano-ledger-shelley, - cardano-slotting, - containers, - criterion, - data-default-class, - deepseq, - ledger-state, - microlens, - random - -benchmark address - type: exitcode-stdio-1.0 - main-is: Address.hs - hs-source-dirs: bench - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wunused-packages - -threaded -rtsopts -O2 - - build-depends: - base, - cardano-ledger-binary, - cardano-crypto-class, - cardano-ledger-core:{cardano-ledger-core, testlib}, - criterion, - deepseq, - cardano-strict-containers, - text diff --git a/libs/ledger-state/src/Cardano/Ledger/State.hs b/libs/ledger-state/src/Cardano/Ledger/State.hs deleted file mode 100644 index bde998eb052..00000000000 --- a/libs/ledger-state/src/Cardano/Ledger/State.hs +++ /dev/null @@ -1 +0,0 @@ -module Cardano.Ledger.State where diff --git a/libs/ledger-state/src/Cardano/Ledger/State/Orphans.hs b/libs/ledger-state/src/Cardano/Ledger/State/Orphans.hs deleted file mode 100644 index 7cfa6d1e558..00000000000 --- a/libs/ledger-state/src/Cardano/Ledger/State/Orphans.hs +++ /dev/null @@ -1,157 +0,0 @@ -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# OPTIONS_GHC -fno-warn-orphans #-} - -module Cardano.Ledger.State.Orphans where - -import Cardano.Crypto.Hash.Class -import Cardano.Ledger.Alonzo.TxBody -import Cardano.Ledger.Babbage.TxBody -import Cardano.Ledger.BaseTypes (TxIx (..)) -import Cardano.Ledger.Binary -import Cardano.Ledger.Coin -import Cardano.Ledger.Core -import Cardano.Ledger.Credential -import Cardano.Ledger.Keys -import Cardano.Ledger.PoolParams (PoolParams (..)) -import Cardano.Ledger.SafeHash -import Cardano.Ledger.Shelley.LedgerState -import Cardano.Ledger.Shelley.PoolRank -import Cardano.Ledger.State.UTxO -import Cardano.Ledger.TxIn -import Data.ByteString.Short -import qualified Data.Text as T -import Data.Typeable -import Database.Persist -import Database.Persist.Sqlite - -data SnapShotType - = SnapShotMark - | SnapShotSet - | SnapShotGo - deriving (Show, Eq, Enum, Bounded) - -instance PersistField SnapShotType where - toPersistValue = PersistInt64 . fromIntegral . fromEnum - fromPersistValue (PersistInt64 i64) = Right $ toEnum $ fromIntegral i64 - fromPersistValue _ = Left "Unexpected type" - -instance PersistFieldSql SnapShotType where - sqlType _ = SqlInt32 - -instance PersistField ShortByteString where - toPersistValue = PersistByteString . fromShort - fromPersistValue (PersistByteString bs) = Right $ toShort bs - fromPersistValue _ = Left "Unexpected type" - -instance PersistFieldSql ShortByteString where - sqlType _ = SqlBlob - -instance PersistField (TxId C) where - toPersistValue = PersistByteString . hashToBytes . extractHash . unTxId - fromPersistValue (PersistByteString bs) = - case hashFromBytes bs of - Nothing -> Left "Invalid number of bytes for the hash" - Just h -> Right $ TxId $ unsafeMakeSafeHash h - fromPersistValue _ = Left "Unexpected type" - -instance PersistFieldSql (TxId C) where - sqlType _ = SqlBlob - -deriving instance PersistField (CompactForm Coin) - -deriving instance PersistFieldSql (CompactForm Coin) - -deriving instance PersistField TxIx - -deriving instance PersistFieldSql TxIx - -instance PersistField Coin where - toPersistValue = PersistInt64 . fromIntegral . unCoin - fromPersistValue (PersistInt64 i64) = Right $ Coin $ fromIntegral i64 - fromPersistValue _ = Left "Unexpected type" - -instance PersistFieldSql Coin where - sqlType _ = SqlInt64 - -instance PersistField DeltaCoin where - toPersistValue (DeltaCoin dc) = PersistInt64 $ fromIntegral dc - fromPersistValue (PersistInt64 i64) = Right $ DeltaCoin $ fromIntegral i64 - fromPersistValue _ = Left "Unexpected type" - -instance PersistFieldSql DeltaCoin where - sqlType _ = SqlInt64 - -newtype Enc a = Enc {unEnc :: a} - -instance (EncCBOR a, DecCBOR a) => PersistField (Enc a) where - toPersistValue = PersistByteString . serialize' (eraProtVerHigh @CurrentEra) . unEnc - fromPersistValue = fmap Enc . decodePersistValue - -instance (EncCBOR a, DecCBOR a) => PersistFieldSql (Enc a) where - sqlType _ = SqlBlob - -decodePersistValue :: DecCBOR b => PersistValue -> Either T.Text b -decodePersistValue (PersistByteString bs) = - case decodeFull' (eraProtVerHigh @CurrentEra) bs of - Left err -> Left $ "Could not decode: " <> T.pack (show err) - Right v -> Right v -decodePersistValue _ = Left "Unexpected type" - -deriving via Enc (KeyHash r C) instance Typeable r => PersistField (KeyHash r C) - -deriving via Enc (KeyHash r C) instance Typeable r => PersistFieldSql (KeyHash r C) - -deriving via Enc (Credential r C) instance Typeable r => PersistField (Credential r C) - -deriving via Enc (Credential r C) instance Typeable r => PersistFieldSql (Credential r C) - -deriving via Enc Ptr instance PersistField Ptr - -deriving via Enc Ptr instance PersistFieldSql Ptr - -deriving via Enc (ShelleyGovState CurrentEra) instance PersistField (ShelleyGovState CurrentEra) - -deriving via Enc (ShelleyGovState CurrentEra) instance PersistFieldSql (ShelleyGovState CurrentEra) - -deriving via Enc (AlonzoTxOut CurrentEra) instance PersistField (AlonzoTxOut CurrentEra) - -deriving via Enc (AlonzoTxOut CurrentEra) instance PersistFieldSql (AlonzoTxOut CurrentEra) - -deriving via Enc (BabbageTxOut CurrentEra) instance PersistField (BabbageTxOut CurrentEra) - -deriving via Enc (BabbageTxOut CurrentEra) instance PersistFieldSql (BabbageTxOut CurrentEra) - -instance DecCBOR (DState CurrentEra) where - decCBOR = decNoShareCBOR - -deriving via Enc (DState CurrentEra) instance PersistField (DState CurrentEra) - -deriving via Enc (DState CurrentEra) instance PersistFieldSql (DState CurrentEra) - -deriving via Enc (PState CurrentEra) instance PersistField (PState CurrentEra) - -deriving via Enc (PState CurrentEra) instance PersistFieldSql (PState CurrentEra) - -deriving via Enc (GenDelegs C) instance PersistField (GenDelegs C) - -deriving via Enc (GenDelegs C) instance PersistFieldSql (GenDelegs C) - -deriving via Enc (PoolParams C) instance PersistField (PoolParams C) - -deriving via Enc (PoolParams C) instance PersistFieldSql (PoolParams C) - -instance DecCBOR (NonMyopic C) where - decCBOR = decNoShareCBOR - -deriving via Enc (NonMyopic C) instance PersistField (NonMyopic C) - -deriving via Enc (NonMyopic C) instance PersistFieldSql (NonMyopic C) - -deriving via Enc (PParams CurrentEra) instance PersistField (PParams CurrentEra) - -deriving via Enc (PParams CurrentEra) instance PersistFieldSql (PParams CurrentEra) diff --git a/libs/ledger-state/src/Cardano/Ledger/State/Query.hs b/libs/ledger-state/src/Cardano/Ledger/State/Query.hs deleted file mode 100644 index 8f43db7d7ca..00000000000 --- a/libs/ledger-state/src/Cardano/Ledger/State/Query.hs +++ /dev/null @@ -1,786 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} - -module Cardano.Ledger.State.Query where - -import Cardano.Ledger.Babbage.TxOut (internBabbageTxOut) -import Cardano.Ledger.Binary -import Cardano.Ledger.Core (TxOut, emptyPParams) -import qualified Cardano.Ledger.Credential as Credential -import qualified Cardano.Ledger.EpochBoundary as EpochBoundary -import qualified Cardano.Ledger.Keys as Keys -import Cardano.Ledger.Shelley.LedgerState (curPParamsEpochStateL, prevPParamsEpochStateL) -import qualified Cardano.Ledger.Shelley.LedgerState as Shelley -import Cardano.Ledger.State.Orphans -import Cardano.Ledger.State.Schema -import Cardano.Ledger.State.Transform -import Cardano.Ledger.State.UTxO -import Cardano.Ledger.State.Vector -import qualified Cardano.Ledger.TxIn as TxIn -import Cardano.Ledger.UMap (ptrMap, rewardMap, sPoolMap, unify) -import qualified Cardano.Ledger.UMap as UM -import qualified Cardano.Ledger.UTxO as Shelley -import Conduit -import Control.Foldl (Fold (..)) -import Control.Monad -import Control.Monad.Trans.Reader -import Data.Conduit.Internal (zipSources) -import Data.Conduit.List (sourceList) -import Data.Default.Class (def) -import Data.Functor -import qualified Data.IntMap.Strict as IntMap -import qualified Data.Map.Strict as Map -import qualified Data.Text as T -import qualified Data.VMap as VMap -import qualified Data.Vector.Generic as VG -import qualified Data.Vector.Generic.Mutable as VGM -import Database.Persist.Sqlite -import Lens.Micro ((&), (.~), (^.)) - --- Populate database - -insertGetKey :: - ( MonadIO m - , PersistUniqueWrite backend - , PersistRecordBackend record backend - , AtLeastOneUniqueKey record - , SafeToInsert record - ) => - record -> - ReaderT backend m (Key record) -insertGetKey = fmap (either entityKey id) . insertBy - -insertUTxOState :: - MonadIO m => - Shelley.UTxOState CurrentEra -> - ReaderT SqlBackend m (Key UtxoState) -insertUTxOState Shelley.UTxOState {..} = do - insert $ - UtxoState - { utxoStateDeposited = utxosDeposited - , utxoStateFees = utxosFees - , utxoStatePpups = utxosGovState - , utxoStateDonation = utxosDonation - } - -insertUTxO :: - MonadIO m => - Shelley.UTxO CurrentEra -> - Key UtxoState -> - ReaderT SqlBackend m () -insertUTxO utxo stateKey = do - mapM_ insertTxOut $ Map.toList (Shelley.unUTxO utxo) - where - insertTxOut (TxIn.TxIn txId txIx, out) = do - txKey <- - insert $ Tx {txInIx = txIx, txInId = txId, txOut = out} - txsKey <- - insert $ - Txs - { txsInIx = txIx - , txsInId = txId - , txsOut = out - , txsStakeCredential = Nothing - } - insert_ $ - UtxoEntry - { utxoEntryTxId = txKey - , utxoEntryTxsId = txsKey - , utxoEntryStateId = stateKey - } - -insertDState :: MonadIO m => Shelley.DState CurrentEra -> ReaderT SqlBackend m DStateId -insertDState Shelley.DState {..} = do - let irDeltaReserves = Shelley.deltaReserves dsIRewards - let irDeltaTreasury = Shelley.deltaTreasury dsIRewards - dstateId <- insert $ DState (Enc dsFutureGenDelegs) dsGenDelegs irDeltaReserves irDeltaTreasury - forM_ (Map.toList (rewardMap dsUnified)) $ \(cred, c) -> do - credId <- insertGetKey (Credential (Keys.asWitness cred)) - insert_ (Reward dstateId credId c) - forM_ (Map.toList (sPoolMap dsUnified)) $ \(cred, spKeyHash) -> do - credId <- insertGetKey (Credential (Keys.asWitness cred)) - keyHashId <- insertGetKey (KeyHash (Keys.asWitness spKeyHash)) - insert_ (Delegation dstateId credId keyHashId) - forM_ (Map.toList (ptrMap dsUnified)) $ \(ptr, cred) -> do - credId <- insertGetKey (Credential (Keys.asWitness cred)) - insert_ (Ptr dstateId credId ptr) - forM_ (Map.toList (Shelley.iRReserves dsIRewards)) $ \(cred, c) -> do - credId <- insertGetKey (Credential (Keys.asWitness cred)) - insert_ (IRReserves dstateId credId c) - forM_ (Map.toList (Shelley.iRTreasury dsIRewards)) $ \(cred, c) -> do - credId <- insertGetKey (Credential (Keys.asWitness cred)) - insert_ (IRTreasury dstateId credId c) - pure dstateId - -insertLedgerState :: - MonadIO m => EpochStateId -> Shelley.LedgerState CurrentEra -> ReaderT SqlBackend m () -insertLedgerState epochStateKey Shelley.LedgerState {..} = do - stateKey <- insertUTxOState lsUTxOState - insertUTxO (Shelley.utxosUtxo lsUTxOState) stateKey - dstateKey <- insertDState $ Shelley.certDState lsCertState - insert_ - LedgerState - { ledgerStateUtxoId = stateKey - , ledgerStateDstateId = dstateKey - , ledgerStatePstateBin = Shelley.certPState lsCertState - , ledgerStateEpochStateId = epochStateKey - } - -insertSnapShot :: - MonadIO m => - Key EpochState -> - SnapShotType -> - EpochBoundary.SnapShot C -> - ReaderT SqlBackend m () -insertSnapShot snapShotEpochStateId snapShotType EpochBoundary.SnapShot {..} = do - snapShotId <- insert $ SnapShot {snapShotType, snapShotEpochStateId} - VG.forM_ (VMap.unVMap (EpochBoundary.unStake ssStake)) $ \(cred, c) -> do - credId <- insertGetKey (Credential (Keys.asWitness cred)) - insert_ (SnapShotStake snapShotId credId c) - VG.forM_ (VMap.unVMap ssDelegations) $ \(cred, spKeyHash) -> do - credId <- insertGetKey (Credential (Keys.asWitness cred)) - keyHashId <- insertGetKey (KeyHash (Keys.asWitness spKeyHash)) - insert_ (SnapShotDelegation snapShotId credId keyHashId) - VG.forM_ (VMap.unVMap ssPoolParams) $ \(keyHash, pps) -> do - keyHashId <- insertGetKey (KeyHash (Keys.asWitness keyHash)) - insert_ (SnapShotPool snapShotId keyHashId pps) - -insertSnapShots :: - MonadIO m => - Key EpochState -> - EpochBoundary.SnapShots C -> - ReaderT SqlBackend m () -insertSnapShots epochStateKey EpochBoundary.SnapShots {..} = do - mapM_ - (uncurry (insertSnapShot epochStateKey)) - [ (SnapShotMark, ssStakeMark) - , (SnapShotSet, ssStakeSet) - , (SnapShotGo, ssStakeGo) - ] - -insertEpochState :: - MonadIO m => Shelley.EpochState CurrentEra -> ReaderT SqlBackend m () -insertEpochState es@Shelley.EpochState {..} = do - epochStateKey <- - insert - EpochState - { epochStateTreasury = Shelley.asTreasury esAccountState - , epochStateReserves = Shelley.asReserves esAccountState - , epochStatePrevPp = es ^. prevPParamsEpochStateL - , epochStatePp = es ^. curPParamsEpochStateL - , epochStateNonMyopic = esNonMyopic - , epochStateSnapShotsFee = EpochBoundary.ssFee esSnapshots - } - insertSnapShots epochStateKey esSnapshots - insertLedgerState epochStateKey esLState - --- Query database - --- Into vector - -selectVMap :: - ( Ord k - , PersistEntity record - , PersistEntityBackend record ~ SqlBackend - , VMap.Vector kv k - , VMap.Vector vv v - , MonadResource m - ) => - [Filter record] -> - (record -> ReaderT SqlBackend m (k, v)) -> - ReaderT SqlBackend m (VMap.VMap kv vv k v) -selectVMap fs f = do - n <- count fs - mv <- liftIO $ VGM.unsafeNew n - runConduit $ - zipSources (sourceList [0 ..]) (selectSource fs []) - .| mapM_C (\(i, Entity _ a) -> liftIO . VGM.write mv i =<< f a) - VMap.VMap <$> liftIO (VG.unsafeFreeze =<< VMap.normalizeM mv) -{-# INLINEABLE selectVMap #-} - -getSnapShotNoSharingM :: - MonadResource m => - Key EpochState -> - SnapShotType -> - ReaderT SqlBackend m (SnapShotM C) -getSnapShotNoSharingM epochStateId snapShotType = do - snapShotId <- - selectFirst - [SnapShotType ==. snapShotType, SnapShotEpochStateId ==. epochStateId] - [] - <&> \case - Nothing -> error $ "Missing a snapshot: " ++ show snapShotType - Just (Entity snapShotId _) -> snapShotId - stake <- - selectMap [SnapShotStakeSnapShotId ==. snapShotId] $ \SnapShotStake {..} -> do - Credential credential <- getJust snapShotStakeCredentialId - pure (Keys.coerceKeyRole credential, snapShotStakeCoin) - delegations <- - selectMap [SnapShotDelegationSnapShotId ==. snapShotId] $ \SnapShotDelegation {..} -> do - Credential credential <- getJust snapShotDelegationCredentialId - KeyHash keyHash <- getJust snapShotDelegationKeyHash - -- TODO ^ rename snapShotDelegationKeyHashId - pure (Keys.coerceKeyRole credential, Keys.coerceKeyRole keyHash) - poolParams <- - selectMap [SnapShotPoolSnapShotId ==. snapShotId] $ \SnapShotPool {..} -> do - KeyHash keyHash <- getJust snapShotPoolKeyHashId - pure (Keys.coerceKeyRole keyHash, snapShotPoolParams) - pure - SnapShotM - { ssStake = stake - , ssDelegations = delegations - , ssPoolParams = poolParams - } -{-# INLINEABLE getSnapShotNoSharingM #-} - -getSnapShotWithSharingM :: - MonadResource m => - [SnapShotM C] -> - Key EpochState -> - SnapShotType -> - ReaderT SqlBackend m (SnapShotM C) -getSnapShotWithSharingM otherSnapShots epochStateId snapShotType = do - let internOtherStakes = - interns - (foldMap (internsFromMap . ssStake) otherSnapShots) - . Keys.coerceKeyRole - let internOtherPoolParams = - interns (foldMap (internsFromMap . ssPoolParams) otherSnapShots) - . Keys.coerceKeyRole - let internOtherDelegations = - interns (foldMap (internsFromMap . ssDelegations) otherSnapShots) - . Keys.coerceKeyRole - snapShotId <- - selectFirst - [SnapShotType ==. snapShotType, SnapShotEpochStateId ==. epochStateId] - [] - <&> \case - Nothing -> error $ "Missing a snapshot: " ++ show snapShotType - Just (Entity snapShotId _) -> snapShotId - stake <- - selectMap [SnapShotStakeSnapShotId ==. snapShotId] $ \SnapShotStake {..} -> do - Credential credential <- getJust snapShotStakeCredentialId - pure (internOtherStakes credential, snapShotStakeCoin) - poolParams <- - selectMap [SnapShotPoolSnapShotId ==. snapShotId] $ \SnapShotPool {..} -> do - KeyHash keyHash <- getJust snapShotPoolKeyHashId - pure (internOtherPoolParams keyHash, snapShotPoolParams) - let internPoolParams = interns (internsFromMap poolParams) . Keys.coerceKeyRole - delegations <- - selectMap [SnapShotDelegationSnapShotId ==. snapShotId] $ \SnapShotDelegation {..} -> do - Credential credential <- getJust snapShotDelegationCredentialId - KeyHash keyHash <- getJust snapShotDelegationKeyHash - pure (internOtherDelegations credential, internPoolParams keyHash) - pure - SnapShotM - { ssStake = stake - , ssDelegations = delegations - , ssPoolParams = poolParams - } -{-# INLINEABLE getSnapShotWithSharingM #-} - -getSnapShotsWithSharingM :: - MonadResource m => - Entity EpochState -> - ReaderT SqlBackend m (SnapShotsM C) -getSnapShotsWithSharingM (Entity epochStateId EpochState {epochStateSnapShotsFee}) = do - mark <- getSnapShotWithSharingM [] epochStateId SnapShotMark - set <- getSnapShotWithSharingM [mark] epochStateId SnapShotSet - go <- getSnapShotWithSharingM [mark, set] epochStateId SnapShotGo - pure $ - SnapShotsM - { ssPstakeMark = mark - , ssPstakeSet = set - , ssPstakeGo = go - , ssFeeSS = epochStateSnapShotsFee - } -{-# INLINEABLE getSnapShotsWithSharingM #-} - --- Into a Map structure - -selectMap :: - ( MonadResource m - , Ord k - , PersistEntity record - , PersistEntityBackend record ~ SqlBackend - ) => - [Filter record] -> - (record -> ReaderT SqlBackend m (k, a)) -> - ReaderT SqlBackend m (Map.Map k a) -selectMap fs f = do - runConduit $ - selectSource fs [] - .| mapMC (\(Entity _ a) -> f a) - .| foldlC (\m (k, v) -> Map.insert k v m) mempty -{-# INLINEABLE selectMap #-} - -getSnapShotNoSharing :: - MonadResource m => - Key EpochState -> - SnapShotType -> - ReaderT SqlBackend m (EpochBoundary.SnapShot C) -getSnapShotNoSharing epochStateId snapShotType = do - snapShotId <- - selectFirst - [SnapShotType ==. snapShotType, SnapShotEpochStateId ==. epochStateId] - [] - <&> \case - Nothing -> error $ "Missing a snapshot: " ++ show snapShotType - Just (Entity snapShotId _) -> snapShotId - stake <- - selectVMap [SnapShotStakeSnapShotId ==. snapShotId] $ \SnapShotStake {..} -> do - Credential credential <- getJust snapShotStakeCredentialId - pure (Keys.coerceKeyRole credential, snapShotStakeCoin) - delegations <- - selectVMap [SnapShotDelegationSnapShotId ==. snapShotId] $ \SnapShotDelegation {..} -> do - Credential credential <- getJust snapShotDelegationCredentialId - KeyHash keyHash <- getJust snapShotDelegationKeyHash - -- TODO ^ rename snapShotDelegationKeyHashId - pure (Keys.coerceKeyRole credential, Keys.coerceKeyRole keyHash) - poolParams <- - selectVMap [SnapShotPoolSnapShotId ==. snapShotId] $ \SnapShotPool {..} -> do - KeyHash keyHash <- getJust snapShotPoolKeyHashId - pure (Keys.coerceKeyRole keyHash, snapShotPoolParams) - pure - EpochBoundary.SnapShot - { ssStake = EpochBoundary.Stake stake - , ssDelegations = delegations - , ssPoolParams = poolParams - } -{-# INLINEABLE getSnapShotNoSharing #-} - -getSnapShotsNoSharing :: - MonadResource m => - Entity EpochState -> - ReaderT SqlBackend m (EpochBoundary.SnapShots C) -getSnapShotsNoSharing (Entity epochStateId EpochState {epochStateSnapShotsFee}) = do - mark <- getSnapShotNoSharing epochStateId SnapShotMark - set <- getSnapShotNoSharing epochStateId SnapShotSet - go <- getSnapShotNoSharing epochStateId SnapShotGo - pure $ - EpochBoundary.SnapShots - { ssStakeMark = mark - , ssStakeMarkPoolDistr = EpochBoundary.calculatePoolDistr mark - , ssStakeSet = set - , ssStakeGo = go - , ssFee = epochStateSnapShotsFee - } -{-# INLINEABLE getSnapShotsNoSharing #-} - -getSnapShotsNoSharingM :: - MonadResource m => - Entity EpochState -> - ReaderT SqlBackend m (SnapShotsM C) -getSnapShotsNoSharingM (Entity epochStateId EpochState {epochStateSnapShotsFee}) = do - mark <- getSnapShotNoSharingM epochStateId SnapShotMark - set <- getSnapShotNoSharingM epochStateId SnapShotSet - go <- getSnapShotNoSharingM epochStateId SnapShotGo - pure $ - SnapShotsM - { ssPstakeMark = mark - , ssPstakeSet = set - , ssPstakeGo = go - , ssFeeSS = epochStateSnapShotsFee - } -{-# INLINEABLE getSnapShotsNoSharingM #-} - -getSnapShotWithSharing :: - MonadResource m => - [EpochBoundary.SnapShot C] -> - Key EpochState -> - SnapShotType -> - ReaderT SqlBackend m (EpochBoundary.SnapShot C) -getSnapShotWithSharing otherSnapShots epochStateId snapShotType = do - let internOtherStakes = - interns - (foldMap (internsFromVMap . EpochBoundary.unStake . EpochBoundary.ssStake) otherSnapShots) - . Keys.coerceKeyRole - let internOtherPoolParams = - interns (foldMap (internsFromVMap . EpochBoundary.ssPoolParams) otherSnapShots) - . Keys.coerceKeyRole - let internOtherDelegations = - interns (foldMap (internsFromVMap . EpochBoundary.ssDelegations) otherSnapShots) - . Keys.coerceKeyRole - snapShotId <- - selectFirst - [SnapShotType ==. snapShotType, SnapShotEpochStateId ==. epochStateId] - [] - <&> \case - Nothing -> error $ "Missing a snapshot: " ++ show snapShotType - Just (Entity snapShotId _) -> snapShotId - stake <- - selectVMap [SnapShotStakeSnapShotId ==. snapShotId] $ \SnapShotStake {..} -> do - Credential credential <- getJust snapShotStakeCredentialId - pure (internOtherStakes credential, snapShotStakeCoin) - poolParams <- - selectVMap [SnapShotPoolSnapShotId ==. snapShotId] $ \SnapShotPool {..} -> do - KeyHash keyHash <- getJust snapShotPoolKeyHashId - pure (internOtherPoolParams keyHash, snapShotPoolParams) - let internPoolParams = interns (internsFromVMap poolParams) . Keys.coerceKeyRole - delegations <- - selectVMap [SnapShotDelegationSnapShotId ==. snapShotId] $ \SnapShotDelegation {..} -> do - Credential credential <- getJust snapShotDelegationCredentialId - KeyHash keyHash <- getJust snapShotDelegationKeyHash - pure (internOtherDelegations credential, internPoolParams keyHash) - pure - EpochBoundary.SnapShot - { ssStake = EpochBoundary.Stake stake - , ssDelegations = delegations - , ssPoolParams = poolParams - } -{-# INLINEABLE getSnapShotWithSharing #-} - -getSnapShotsWithSharing :: - MonadResource m => - Entity EpochState -> - ReaderT SqlBackend m (EpochBoundary.SnapShots C) -getSnapShotsWithSharing (Entity epochStateId EpochState {epochStateSnapShotsFee}) = do - mark <- getSnapShotWithSharing [] epochStateId SnapShotMark - set <- getSnapShotWithSharing [mark] epochStateId SnapShotSet - go <- getSnapShotWithSharing [mark, set] epochStateId SnapShotGo - pure $ - EpochBoundary.SnapShots - { ssStakeMark = mark - , ssStakeMarkPoolDistr = EpochBoundary.calculatePoolDistr mark - , ssStakeSet = set - , ssStakeGo = go - , ssFee = epochStateSnapShotsFee - } -{-# INLINEABLE getSnapShotsWithSharing #-} - -sourceUTxO :: - MonadResource m => - ConduitM () (TxIn.TxIn C, TxOut CurrentEra) (ReaderT SqlBackend m) () -sourceUTxO = - selectSource [] [] - .| mapC (\(Entity _ Tx {..}) -> (TxIn.TxIn txInId txInIx, txOut)) - -sourceWithSharingUTxO :: - MonadResource m => - Map.Map (Credential.StakeCredential C) a -> - ConduitM () (TxIn.TxIn C, TxOut CurrentEra) (ReaderT SqlBackend m) () -sourceWithSharingUTxO stakeCredentials = - sourceUTxO .| mapC (fmap (internBabbageTxOut (`intern` stakeCredentials))) - -foldDbUTxO :: - MonadUnliftIO m => - -- | Folding function - (a -> (TxIn.TxIn C, TxOut CurrentEra) -> a) -> - -- | Empty acc - a -> - -- | Path to Sqlite db - T.Text -> - m a -foldDbUTxO f m fp = runSqlite fp (runConduit (sourceUTxO .| foldlC f m)) - --- sourceUTxOr :: --- MonadResource m --- => Int64 -> Int64 -> ConduitM () (TxIn.TxIn C, TxOut CurrentEra) (ReaderT SqlBackend m) () --- sourceUTxOr b t = --- selectSource [TxId >. TxKey (SqlBackendKey b) , TxId <. TxKey (SqlBackendKey t)] [] .| --- mapC (\(Entity _ Tx {..}) -> (TxIn.TxIn txInId (fromIntegral txInIx), txOut)) - --- foldDbUTxOr :: --- MonadUnliftIO m --- => Int64 --- -> Int64 --- -> (a -> (TxIn.TxIn C, TxOut CurrentEra) -> a) -- ^ Folding function --- -> a -- ^ Empty acc --- -> T.Text -- ^ Path to Sqlite db --- -> m a --- foldDbUTxOr b t f m fp = runSqlite fp (runConduit (sourceUTxOr b t .| foldlC f m)) - -lsId :: Key LedgerState -lsId = LedgerStateKey (SqlBackendKey 1) - -getLedgerState :: - MonadIO m => - Shelley.UTxO CurrentEra -> - LedgerState -> - Shelley.DState CurrentEra -> - ReaderT SqlBackend m (Shelley.LedgerState CurrentEra) -getLedgerState utxo LedgerState {..} dstate = do - UtxoState {..} <- getJust ledgerStateUtxoId - pure - Shelley.LedgerState - { Shelley.lsUTxOState = - Shelley.smartUTxOState - emptyPParams - utxo - utxoStateDeposited - utxoStateFees - utxoStatePpups -- Maintain invariant - utxoStateDonation - , Shelley.lsCertState = - Shelley.CertState - { Shelley.certDState = dstate - , Shelley.certPState = ledgerStatePstateBin - , Shelley.certVState = def - } - } - -getDStateNoSharing :: - MonadIO m => Key DState -> ReaderT SqlBackend m (Shelley.DState CurrentEra) -getDStateNoSharing dstateId = do - DState {..} <- getJust dstateId - rewards <- - Map.fromList <$> do - rws <- selectList [RewardDstateId ==. dstateId] [] - forM rws $ \(Entity _ Reward {..}) -> do - Credential credential <- getJust rewardCredentialId - pure - (Keys.coerceKeyRole credential, UM.RDPair (UM.compactCoinOrError rewardCoin) (UM.CompactCoin 0)) - -- FIXME the deposit is not accounted for ^ - -- The PR ts-keydeposit-intoUMap breaks this tool since it changes the CertState data type. - -- https://github.com/intersectmbo/cardano-ledger/pull/3217 - -- All the FIXME-s in this file will have to be addressed in a follow on PR - delegations <- - Map.fromList <$> do - ds <- selectList [DelegationDstateId ==. dstateId] [] - forM ds $ \(Entity _ Delegation {..}) -> do - Credential credential <- getJust delegationCredentialId - KeyHash keyHash <- getJust delegationStakePoolId - pure (Keys.coerceKeyRole credential, Keys.coerceKeyRole keyHash) - dreps <- pure mempty - -- Map.fromList <$> do - -- ds <- selectList [DRepDstateId ==. dstateId] [] - -- forM ds $ \(Entity _ DRep {..}) -> do - -- Credential credential <- getJust dRepCredentialId - -- Credential dRepCredential <- getJust dRepDRepCredentialId - -- pure (Keys.coerceKeyRole credential, Keys.coerceKeyRole dRepCredential) - ptrs <- - Map.fromList <$> do - ps <- selectList [PtrDstateId ==. dstateId] [] - forM ps $ \(Entity _ Ptr {..}) -> do - Credential credential <- getJust ptrCredentialId - pure (ptrPtr, Keys.coerceKeyRole credential) - iRReserves <- - Map.fromList <$> do - ds <- selectList [IRReservesDstateId ==. dstateId] [] - forM ds $ \(Entity _ IRReserves {..}) -> do - Credential credential <- getJust iRReservesCredentialId - pure (Keys.coerceKeyRole credential, iRReservesCoin) - iRTreasury <- - Map.fromList <$> do - ds <- selectList [IRTreasuryDstateId ==. dstateId] [] - forM ds $ \(Entity _ IRTreasury {..}) -> do - Credential credential <- getJust iRTreasuryCredentialId - pure (Keys.coerceKeyRole credential, iRTreasuryCoin) - pure - Shelley.DState - { dsUnified = unify rewards ptrs delegations dreps - , dsFutureGenDelegs = unEnc dStateFGenDelegs - , dsGenDelegs = dStateGenDelegs - , dsIRewards = - Shelley.InstantaneousRewards - { iRReserves = iRReserves - , iRTreasury = iRTreasury - , deltaReserves = dStateIrDeltaReserves - , deltaTreasury = dStateIrDeltaTreasury - } - } - -getDStateWithSharing :: - MonadIO m => Key DState -> ReaderT SqlBackend m (Shelley.DState CurrentEra) -getDStateWithSharing dstateId = do - DState {..} <- getJust dstateId - rewards <- - Map.fromList <$> do - rws <- selectList [RewardDstateId ==. dstateId] [] - forM rws $ \(Entity _ Reward {..}) -> do - Credential credential <- getJust rewardCredentialId - pure - (Keys.coerceKeyRole credential, UM.RDPair (UM.compactCoinOrError rewardCoin) (UM.CompactCoin 0)) - -- FIXME the deposit is not accounted for ^ - delegations <- - Map.fromList <$> do - ds <- selectList [DelegationDstateId ==. dstateId] [] - forM ds $ \(Entity _ Delegation {..}) -> do - Credential credential <- getJust delegationCredentialId - let !cred = intern (Keys.coerceKeyRole credential) rewards - KeyHash keyHash <- getJust delegationStakePoolId - pure (cred, Keys.coerceKeyRole keyHash) - dreps <- pure mempty - -- Map.fromList <$> do - -- ds <- selectList [DRepDstateId ==. dstateId] [] - -- forM ds $ \(Entity _ DRep {..}) -> do - -- Credential credential <- getJust dRepCredentialId - -- let !cred = intern (Keys.coerceKeyRole credential) rewards - -- Credential dRepCredential <- getJust dRepDRepCredentialId - -- pure (cred, Keys.coerceKeyRole dRepCredential) - ptrs <- - Map.fromList <$> do - ps <- selectList [PtrDstateId ==. dstateId] [] - forM ps $ \(Entity _ Ptr {..}) -> do - Credential credential <- getJust ptrCredentialId - let !cred = intern (Keys.coerceKeyRole credential) rewards - pure (ptrPtr, cred) - iRReserves <- - Map.fromList <$> do - ds <- selectList [IRReservesDstateId ==. dstateId] [] - forM ds $ \(Entity _ IRReserves {..}) -> do - Credential credential <- getJust iRReservesCredentialId - let !cred = intern (Keys.coerceKeyRole credential) rewards - pure (cred, iRReservesCoin) - iRTreasury <- - Map.fromList <$> do - ds <- selectList [IRTreasuryDstateId ==. dstateId] [] - forM ds $ \(Entity _ IRTreasury {..}) -> do - Credential credential <- getJust iRTreasuryCredentialId - let !cred = intern (Keys.coerceKeyRole credential) rewards - pure (cred, iRTreasuryCoin) - pure - Shelley.DState - { dsUnified = unify rewards ptrs delegations dreps - , dsFutureGenDelegs = unEnc dStateFGenDelegs - , dsGenDelegs = dStateGenDelegs - , dsIRewards = - Shelley.InstantaneousRewards - { iRReserves = iRReserves - , iRTreasury = iRTreasury - , deltaReserves = dStateIrDeltaReserves - , deltaTreasury = dStateIrDeltaTreasury - } - } - -loadDStateNoSharing :: MonadUnliftIO m => T.Text -> m (Shelley.DState CurrentEra) -loadDStateNoSharing fp = - runSqlite fp $ getDStateNoSharing (DStateKey (SqlBackendKey 1)) - -loadUTxONoSharing :: - MonadUnliftIO m => T.Text -> m (Shelley.UTxO CurrentEra) -loadUTxONoSharing fp = - runSqlite fp (Shelley.UTxO <$> runConduitFold sourceUTxO noSharingMap) - -loadLedgerStateNoSharing :: - MonadUnliftIO m => T.Text -> m (Shelley.LedgerState CurrentEra) -loadLedgerStateNoSharing fp = - runSqlite fp $ do - ledgerState@LedgerState {..} <- getJust lsId - dstate <- getDStateNoSharing ledgerStateDstateId - m <- runConduitFold sourceUTxO noSharingMap - getLedgerState (Shelley.UTxO m) ledgerState dstate - -loadLedgerStateDStateSharing :: - MonadUnliftIO m => T.Text -> m (Shelley.LedgerState CurrentEra) -loadLedgerStateDStateSharing fp = - runSqlite fp $ do - ese <- getJustEntity esId - getLedgerStateWithSharing ese - -loadLedgerStateDStateTxIxSharing :: - MonadUnliftIO m => - T.Text -> - m - ( Shelley.LedgerState CurrentEra - , IntMap.IntMap (Map.Map (TxIn.TxId C) (TxOut CurrentEra)) - ) -loadLedgerStateDStateTxIxSharing fp = - runSqlite fp $ do - ledgerState@LedgerState {..} <- getJust lsId - dstate <- getDStateWithSharing ledgerStateDstateId - ls <- getLedgerState (Shelley.UTxO mempty) ledgerState dstate - m <- runConduitFold sourceUTxO txIxSharing - pure (ls, m) - -storeEpochState :: - MonadUnliftIO m => T.Text -> Shelley.EpochState CurrentEra -> m () -storeEpochState fp es = - runSqlite fp $ do - runMigration migrateAll - insertEpochState es - -loadDbUTxO :: UTxOFold a -> T.Text -> IO a -loadDbUTxO (Fold f e g) fp = runSqlite fp (g <$> runConduit (sourceUTxO .| foldlC f e)) - -esId :: Key EpochState -esId = EpochStateKey (SqlBackendKey 1) - -loadEpochStateEntity :: MonadUnliftIO m => T.Text -> m (Entity EpochState) -loadEpochStateEntity fp = runSqlite fp (getJustEntity esId) - -getLedgerStateWithSharing :: - (MonadUnliftIO m, MonadResource m) => - Entity EpochState -> - ReaderT SqlBackend m (Shelley.LedgerState CurrentEra) -getLedgerStateWithSharing ese = do - ledgerState@LedgerState {..} <- - maybe (error "Impossible") (pure . entityVal) - =<< selectFirst [LedgerStateEpochStateId ==. entityKey ese] [] - dstate <- getDStateWithSharing ledgerStateDstateId - m <- runConduitFold sourceUTxO noSharingMap - getLedgerState (Shelley.UTxO m) ledgerState dstate - -getLedgerStateNoSharing :: - (MonadUnliftIO m, MonadResource m) => - Entity EpochState -> - ReaderT SqlBackend m (Shelley.LedgerState CurrentEra) -getLedgerStateNoSharing ese = do - ledgerState@LedgerState {..} <- - maybe (error "Impossible") (pure . entityVal) - =<< selectFirst [LedgerStateEpochStateId ==. entityKey ese] [] - dstate <- getDStateNoSharing ledgerStateDstateId - m <- runConduitFold sourceUTxO noSharingMap - getLedgerState (Shelley.UTxO m) ledgerState dstate - -loadEpochState :: MonadUnliftIO m => T.Text -> m (Shelley.EpochState CurrentEra) -loadEpochState fp = runSqlite fp $ do - ese@(Entity _ EpochState {..}) <- getJustEntity esId - snapshots <- getSnapShotsNoSharing ese - ledgerState <- getLedgerStateNoSharing ese - pure $ - Shelley.EpochState - { esAccountState = - Shelley.AccountState - { asTreasury = epochStateTreasury - , asReserves = epochStateReserves - } - , esLState = ledgerState - , esSnapshots = snapshots - , esNonMyopic = epochStateNonMyopic - } - & curPParamsEpochStateL .~ epochStatePp - & prevPParamsEpochStateL .~ epochStatePrevPp - -loadEpochStateWithSharing :: MonadUnliftIO m => T.Text -> m (Shelley.EpochState CurrentEra) -loadEpochStateWithSharing fp = runSqlite fp $ do - ese@(Entity _ EpochState {..}) <- getJustEntity esId - snapshots <- getSnapShotsWithSharing ese - ledgerState <- getLedgerStateWithSharing ese - pure $ - Shelley.EpochState - { esAccountState = - Shelley.AccountState - { asTreasury = epochStateTreasury - , asReserves = epochStateReserves - } - , esLState = ledgerState - , esSnapshots = snapshots - , esNonMyopic = epochStateNonMyopic - } - & prevPParamsEpochStateL .~ epochStatePrevPp - & curPParamsEpochStateL .~ epochStatePp - -loadSnapShotsNoSharing :: - MonadUnliftIO m => T.Text -> Entity EpochState -> m (EpochBoundary.SnapShots C) -loadSnapShotsNoSharing fp = runSqlite fp . getSnapShotsNoSharing -{-# INLINEABLE loadSnapShotsNoSharing #-} - -loadSnapShotsWithSharing :: - MonadUnliftIO m => T.Text -> Entity EpochState -> m (EpochBoundary.SnapShots C) -loadSnapShotsWithSharing fp = runSqlite fp . getSnapShotsWithSharing -{-# INLINEABLE loadSnapShotsWithSharing #-} - -loadSnapShotsNoSharingM :: T.Text -> Entity EpochState -> IO (SnapShotsM C) -loadSnapShotsNoSharingM fp = runSqlite fp . getSnapShotsNoSharingM -{-# INLINEABLE loadSnapShotsNoSharingM #-} - -loadSnapShotsWithSharingM :: T.Text -> Entity EpochState -> IO (SnapShotsM C) -loadSnapShotsWithSharingM fp = runSqlite fp . getSnapShotsWithSharingM -{-# INLINEABLE loadSnapShotsWithSharingM #-} diff --git a/libs/ledger-state/src/Cardano/Ledger/State/Schema.hs b/libs/ledger-state/src/Cardano/Ledger/State/Schema.hs deleted file mode 100644 index 25f57ff6b08..00000000000 --- a/libs/ledger-state/src/Cardano/Ledger/State/Schema.hs +++ /dev/null @@ -1,141 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE QuasiQuotes #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TemplateHaskell #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-name-shadowing #-} - -module Cardano.Ledger.State.Schema where - -import Cardano.Ledger.Babbage.TxOut (BabbageTxOut) -import Cardano.Ledger.BaseTypes (TxIx (..)) -import Cardano.Ledger.Coin -import Cardano.Ledger.Core (PParams) -import qualified Cardano.Ledger.Credential as Credential -import qualified Cardano.Ledger.Keys as Keys -import qualified Cardano.Ledger.PoolParams as Shelley -import qualified Cardano.Ledger.Shelley.LedgerState as Shelley -import qualified Cardano.Ledger.Shelley.PoolRank as Shelley -import Cardano.Ledger.State.Orphans (Enc, SnapShotType (..)) -import Cardano.Ledger.State.UTxO -import qualified Cardano.Ledger.TxIn as TxIn -import qualified Data.Map.Strict as Map -import Database.Persist.Sqlite -import Database.Persist.TH - -type FGenDelegs = (Enc (Map.Map (Shelley.FutureGenDeleg C) (Keys.GenDelegPair C))) - -type CredentialWitness = Credential.Credential 'Keys.Witness C - -type KeyHashWitness = Keys.KeyHash 'Keys.Witness C - -share - [mkPersist sqlSettings, mkMigrate "migrateAll"] - [persistLowerCase| -EpochState - treasury Coin - reserves Coin - prevPp (PParams CurrentEra) - pp (PParams CurrentEra) - nonMyopic (Shelley.NonMyopic C) - snapShotsFee Coin - -SnapShot - type SnapShotType - epochStateId EpochStateId - -- UniqueSnapShot type epochStateId -SnapShotStake - snapShotId SnapShotId - credentialId CredentialId - coin (CompactForm Coin) - UniqueSnapShotStake snapShotId credentialId -SnapShotDelegation - snapShotId SnapShotId - credentialId CredentialId - keyHash KeyHashId - UniqueSnapShotDelegation snapShotId credentialId -SnapShotPool - snapShotId SnapShotId - keyHashId KeyHashId - params (Shelley.PoolParams C) - UniqueSnapShotPool snapShotId keyHashId - -LedgerState - utxoId UtxoStateId - dstateId DStateId - epochStateId EpochStateId - pstateBin (Shelley.PState CurrentEra) - UniqueLedgerStateUtxoId utxoId - UniqueLedgerStateDStateId dstateId - UniqueLedgerStateEpochStateId epochStateId -UtxoState - deposited Coin - fees Coin - ppups (Shelley.ShelleyGovState CurrentEra) - donation Coin -DState - fGenDelegs FGenDelegs - genDelegs (Keys.GenDelegs C) - irDeltaReserves DeltaCoin - irDeltaTreasury DeltaCoin - -Credential - witness CredentialWitness - UniqueCredential witness -KeyHash - witness KeyHashWitness - UniqueKeyHash witness -Tx - inIx TxIx - inId (TxIn.TxId C) - out (BabbageTxOut CurrentEra) - UniqueTx inIx inId -Txs - inIx TxIx - inId (TxIn.TxId C) - out (BabbageTxOut CurrentEra) - stakeCredential CredentialId Maybe - UniqueTxs inIx inId -UtxoEntry - txId TxId - txsId TxsId - stateId UtxoStateId -Reward - dstateId DStateId - credentialId CredentialId - coin Coin - UniqueReward dstateId credentialId coin -Delegation - dstateId DStateId - credentialId CredentialId - stakePoolId KeyHashId - UniqueDelegation dstateId credentialId -DRep - dstateId DStateId - credentialId CredentialId - dRepCredentialId CredentialId - UniqueDRep dstateId credentialId -Ptr - dstateId DStateId - credentialId CredentialId - ptr Credential.Ptr - UniquePtrPtr dstateId ptr - UniquePtrCredential dstateId credentialId -IRReserves - dstateId DStateId - credentialId CredentialId - coin Coin - UniqueIRReserves dstateId credentialId -IRTreasury - dstateId DStateId - credentialId CredentialId - coin Coin - UniqueIRTreasury dstateId credentialId -|] diff --git a/libs/ledger-state/src/Cardano/Ledger/State/Transform.hs b/libs/ledger-state/src/Cardano/Ledger/State/Transform.hs deleted file mode 100644 index 080a4667c87..00000000000 --- a/libs/ledger-state/src/Cardano/Ledger/State/Transform.hs +++ /dev/null @@ -1,51 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE TypeFamilies #-} - -module Cardano.Ledger.State.Transform where - -import Data.Map.Strict.Internal - -intern :: Ord k => k -> Map k a -> k -intern !k m = - case internMaybe k m of - Just kx -> kx - Nothing -> k - -internMaybe :: Ord k => k -> Map k a -> Maybe k -internMaybe !k = go - where - go Tip = Nothing - go (Bin _ kx _ l r) = - case compare k kx of - LT -> go l - GT -> go r - EQ -> Just kx - -internVal :: (Eq a, Ord k) => k -> a -> Map k a -> a -internVal !k !a m = - case internValMaybe k a m of - Just ax -> ax - Nothing -> a - -internsVal :: (Eq a, Ord k) => k -> a -> [Map k a] -> a -internsVal !k !a = go - where - go [] = a - go (m : ms) = - case internValMaybe k a m of - Just ax -> ax - Nothing -> go ms - -internValMaybe :: (Eq a, Ord k) => k -> a -> Map k a -> Maybe a -internValMaybe !k !a = go - where - go Tip = Nothing - go (Bin _ kx ax l r) = - case compare k kx of - LT -> go l - GT -> go r - EQ - | a == ax -> Just ax - | otherwise -> Nothing diff --git a/libs/ledger-state/src/Cardano/Ledger/State/UTxO.hs b/libs/ledger-state/src/Cardano/Ledger/State/UTxO.hs deleted file mode 100644 index 2e0bd566ad0..00000000000 --- a/libs/ledger-state/src/Cardano/Ledger/State/UTxO.hs +++ /dev/null @@ -1,787 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilies #-} -{-# OPTIONS_GHC -fno-warn-orphans -funbox-strict-fields #-} - -module Cardano.Ledger.State.UTxO where - -import Cardano.Ledger.Address -import Cardano.Ledger.Alonzo.TxBody -import Cardano.Ledger.Babbage -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.Binary.Plain as Plain -import Cardano.Ledger.Core -import Cardano.Ledger.Credential -import Cardano.Ledger.Crypto -import Cardano.Ledger.Mary.Value -import Cardano.Ledger.PoolDistr (individualPoolStakeVrf) -import Cardano.Ledger.Shelley.API -import Cardano.Ledger.Shelley.LedgerState -import Cardano.Ledger.Shelley.PoolRank -import Cardano.Ledger.UMap (rewardMap, sPoolMap) -import qualified Cardano.Ledger.UMap as UM (ptrMap) -import Conduit -import Control.Exception (throwIO) -import Control.Foldl (Fold (..)) -import Control.SetAlgebra (range) -import qualified Data.ByteString.Lazy as LBS -import Data.Foldable as F -import qualified Data.IntMap.Strict as IntMap -import qualified Data.Map.Strict as Map -import qualified Data.Set as Set -import Data.Typeable -import qualified Data.VMap as VMap -import Lens.Micro -import Prettyprinter -import Text.Printf - -type C = StandardCrypto - -type CurrentEra = Babbage - ---- Loading -readNewEpochState :: - FilePath -> - IO (NewEpochState CurrentEra) -readNewEpochState = readDecCBOR - -readEpochState :: - FilePath -> - IO (EpochState CurrentEra) -readEpochState = readDecCBOR - -readDecCBOR :: FromCBOR a => FilePath -> IO a -readDecCBOR fp = - LBS.readFile fp <&> Plain.decodeFull >>= \case - Left exc -> throwIO exc - Right res -> pure res - -writeEpochState :: FilePath -> EpochState CurrentEra -> IO () -writeEpochState fp = LBS.writeFile fp . Plain.serialize - -loadLedgerState :: - FilePath -> - IO (LedgerState CurrentEra) -loadLedgerState fp = esLState . nesEs <$> readNewEpochState fp - -runConduitFold :: Monad m => ConduitT () a m () -> Fold a b -> m b -runConduitFold source (Fold f e g) = (g <$> runConduit (source .| foldlC f e)) - -type UTxOFold b = Fold (TxIn C, TxOut CurrentEra) b - -noSharing :: Fold (TxIn C, a) (Map.Map (TxIn C) a) -noSharing = Fold (\ !m !(!k, !v) -> Map.insert k v m) mempty id - -noSharing_ :: UTxOFold (Map.Map (TxIn C) ()) -noSharing_ = Fold (\ !m !(!k, _) -> Map.insert k () m) mempty id - -noSharingMap :: Fold (TxIn C, a) (Map.Map (TxIn C) a) -noSharingMap = Fold (\ !m !(!k, !v) -> Map.insert k v m) mempty id - -noSharingMap_ :: UTxOFold (Map.Map (TxIn C) ()) -noSharingMap_ = Fold (\ !m !(!k, _) -> Map.insert k () m) mempty id - -txIdSharing :: - UTxOFold (Map.Map (TxId C) (IntMap.IntMap (TxOut CurrentEra))) -txIdSharing = Fold txIdNestedInsert mempty id - -txIdSharing_ :: UTxOFold (Map.Map (TxId C) (IntMap.IntMap ())) -txIdSharing_ = Fold (\a v -> txIdNestedInsert a (() <$ v)) mempty id - -txIdNestedInsert :: - Map.Map (TxId C) (IntMap.IntMap a) -> - (TxIn C, a) -> - Map.Map (TxId C) (IntMap.IntMap a) -txIdNestedInsert !m (TxIn !txId !txIx, !v) = - let !e = IntMap.singleton (txIxToInt txIx) v - in Map.insertWith (<>) txId e m - -txIxSharing :: Fold (TxIn C, a) (IntMap.IntMap (Map.Map (TxId C) a)) -txIxSharing = Fold txIxNestedInsert mempty id - -txIxSharing_ :: UTxOFold (IntMap.IntMap (Map.Map (TxId C) ())) -txIxSharing_ = Fold (\a v -> txIxNestedInsert a (() <$ v)) mempty id - -txIxNestedInsert :: - IntMap.IntMap (Map.Map (TxId C) a) -> - (TxIn C, a) -> - IntMap.IntMap (Map.Map (TxId C) a) -txIxNestedInsert !im (TxIn !txId !txIx, !v) = - let f = - \case - Nothing -> Just $! Map.singleton txId v - Just !m -> Just $! Map.insert txId v m - in IntMap.alter f (txIxToInt txIx) im - -totalADA :: Map.Map (TxIn C) (TxOut CurrentEra) -> MaryValue C -totalADA = foldMap (^. valueTxOutL) - -readBinUTxO :: - FilePath -> - IO (UTxO CurrentEra) -readBinUTxO fp = do - ls <- readNewEpochState fp - pure $! utxosUtxo $ lsUTxOState $ esLState $ nesEs ls - -newtype Count = Count Int - deriving (Eq, Ord, Enum, Real, Integral, Num, Pretty) - -data Stat k = Stat - { statUnique :: !(Set.Set k) - , statCount :: !Count - } - -instance Ord k => Semigroup (Stat k) where - (<>) s1 s2 = Stat (statUnique s1 <> statUnique s2) (statCount s1 + statCount s2) - -instance Ord k => Monoid (Stat k) where - mempty = Stat mempty 0 - -instance Pretty (Stat k) where - pretty Stat {..} = - pretty n - <+> "/" - <+> pretty statCount - <+> "(" - <> pretty (intPercent n statCount) - <> " unique)" - where - n = Set.size statUnique - -data Percent = Percent Int Int - -instance Pretty Percent where - pretty (Percent x y) = pretty (printf "%d.%02d%%" x y :: String) - -intPercent :: Integral i => Int -> i -> Percent -intPercent x y - | y == 0 = Percent 0 0 - | otherwise = uncurry Percent (((10000 * x) `div` fromIntegral y) `quotRem` 100) - -statSingleton :: a -> Stat a -statSingleton a = Stat (Set.singleton a) 1 - -statSet :: Set.Set a -> Stat a -statSet s = Stat s (Count (Set.size s)) - -statMapKeys :: Map.Map k v -> Stat k -statMapKeys = statSet . Map.keysSet - -statFoldable :: (Ord a, Foldable t) => t a -> Stat a -statFoldable m = Stat (Set.fromList (F.toList m)) (Count (F.length m)) - -prettyRecord :: Doc ann -> [Doc ann] -> Doc ann -prettyRecord h content = h <> ":" <+> line <> indent 2 (vsep content) - -(<:>) :: (Typeable a, Pretty a) => Doc ann -> a -> Doc ann -(<:>) x y = - "[" <> x <> "]:" <+> pretty y <+> "<" <> pretty (showsTypeRep (typeOf y) ">") - -infixr 6 <:> - -data SnapShotStats = SnapShotStats - { sssStake :: !(Stat (Credential 'Staking C)) - , sssDelegationCredential :: !(Stat (Credential 'Staking C)) - , sssDelegationStakePool :: !(Stat (KeyHash 'StakePool C)) - , sssPoolParams :: !(Stat (KeyHash 'StakePool C)) - , sssPoolParamsStats :: !PoolParamsStats - } - -instance Semigroup SnapShotStats where - (<>) (SnapShotStats x1 x2 x3 x4 x5) (SnapShotStats y1 y2 y3 y4 y5) = - SnapShotStats - (x1 <> y1) - (x2 <> y2) - (x3 <> y3) - (x4 <> y4) - (x5 <> y5) - -instance Monoid SnapShotStats where - mempty = SnapShotStats mempty mempty mempty mempty mempty - -instance Pretty SnapShotStats where - pretty SnapShotStats {..} = - prettyRecord - "SnapShot" - [ "Stake" <:> sssStake - , "DelegationCredential" <:> sssDelegationCredential - , "DelegationStakePool" <:> sssDelegationStakePool - , "PoolParams" <:> sssPoolParams - , pretty sssPoolParamsStats - ] - -instance AggregateStat SnapShotStats where - aggregateStat SnapShotStats {..} = - (aggregateStat sssPoolParamsStats) - { gsCredentialStaking = sssStake <> sssDelegationCredential - , gsKeyHashStakePool = sssDelegationStakePool <> sssPoolParams - } - -countSnapShotStat :: SnapShot C -> SnapShotStats -countSnapShotStat SnapShot {..} = - SnapShotStats - { sssStake = statMapKeys (VMap.toMap (unStake ssStake)) - , sssDelegationCredential = statMapKeys (VMap.toMap ssDelegations) - , sssDelegationStakePool = statFoldable (VMap.toMap ssDelegations) - , sssPoolParams = statMapKeys (VMap.toMap ssPoolParams) - , sssPoolParamsStats = VMap.foldMap countPoolParamsStats ssPoolParams - } - -data PoolParamsStats = PoolParamsStats - { ppsPoolId :: !(Stat (KeyHash 'StakePool C)) - , ppsRewardAccount :: !(Stat (Credential 'Staking C)) - , ppsOwners :: !(Stat (KeyHash 'Staking C)) - } - -instance Semigroup PoolParamsStats where - (<>) (PoolParamsStats x1 x2 x3) (PoolParamsStats y1 y2 y3) = - PoolParamsStats - (x1 <> y1) - (x2 <> y2) - (x3 <> y3) - -instance Monoid PoolParamsStats where - mempty = PoolParamsStats mempty mempty mempty - -instance Pretty PoolParamsStats where - pretty PoolParamsStats {..} = - prettyRecord - "PoolParamsStats" - [ "PoolId" <:> ppsPoolId - , "RewardAccount" <:> ppsRewardAccount - , "Owners" <:> ppsOwners - ] - -instance AggregateStat PoolParamsStats where - aggregateStat PoolParamsStats {..} = - mempty {gsCredentialStaking = ppsRewardAccount, gsKeyHashStakePool = ppsPoolId} - -countPoolParamsStats :: PoolParams C -> PoolParamsStats -countPoolParamsStats PoolParams {..} = - PoolParamsStats - { ppsPoolId = statSingleton ppId - , ppsRewardAccount = statSingleton (raCredential ppRewardAccount) - , ppsOwners = statSet ppOwners - } - -data RewardUpdateStats = RewardUpdateStats - -instance Pretty RewardUpdateStats where - pretty RewardUpdateStats {} = - prettyRecord "RewardUpdateStats" [] - -instance AggregateStat RewardUpdateStats where - aggregateStat RewardUpdateStats = mempty - -data PoolDistrStats = PoolDistrStats - { pdsStakePoolKeyHash :: !(Stat (KeyHash 'StakePool C)) - , pdsStakePoolStakeVrf :: !(Stat (Hash C (VerKeyVRF C))) - } - -instance Pretty PoolDistrStats where - pretty PoolDistrStats {..} = - prettyRecord - "PoolDistrStats" - [ "StakePoolKeyHash" <:> pdsStakePoolKeyHash - , "StakePoolStakeVrf" <:> pdsStakePoolStakeVrf - ] - -instance AggregateStat PoolDistrStats where - aggregateStat PoolDistrStats {..} = - mempty - { gsKeyHashStakePool = pdsStakePoolKeyHash - , gsVerKeyVRF = pdsStakePoolStakeVrf - } - -calcPoolDistrStats :: PoolDistr C -> PoolDistrStats -calcPoolDistrStats (PoolDistr pd) = - PoolDistrStats - { pdsStakePoolKeyHash = statMapKeys pd - , pdsStakePoolStakeVrf = statFoldable (individualPoolStakeVrf <$> Map.elems pd) - } - -data NewEpochStateStats = NewEpochStateStats - { nessPrevBlocksMade :: !(Stat (KeyHash 'StakePool C)) - , nessCurBlocksMade :: !(Stat (KeyHash 'StakePool C)) - , nessBlocksMade :: !(Stat (KeyHash 'StakePool C)) - , nessEpochStateStats :: !EpochStateStats - , nessRewardUpdate :: !RewardUpdateStats - , nessPoolDistrStats :: !PoolDistrStats - , nessAggregateStats :: !AggregateStats - } - -instance Pretty NewEpochStateStats where - pretty NewEpochStateStats {..} = - prettyRecord - "NewEpochStateStats" - [ "PrevBlocksMade" <:> statCount nessPrevBlocksMade - , "CurBlocksMade" <:> statCount nessCurBlocksMade - , "BlocksMade" <:> nessBlocksMade - , pretty nessEpochStateStats - , pretty nessRewardUpdate <> "TODO" - , pretty nessPoolDistrStats - , pretty nessAggregateStats - ] - -countNewEpochStateStats :: NewEpochState CurrentEra -> NewEpochStateStats -countNewEpochStateStats NewEpochState {..} = - let ness = - NewEpochStateStats - { nessPrevBlocksMade = statMapKeys (unBlocksMade nesBprev) - , nessCurBlocksMade = statMapKeys (unBlocksMade nesBcur) - , nessBlocksMade = mempty - , nessEpochStateStats = countEpochStateStats nesEs - , nessRewardUpdate = RewardUpdateStats - , nessPoolDistrStats = calcPoolDistrStats nesPd - , nessAggregateStats = mempty - } - in ness - { nessBlocksMade = nessPrevBlocksMade ness <> nessCurBlocksMade ness - , nessAggregateStats = - mconcat - [ aggregateStat (nessPrevBlocksMade ness) - , aggregateStat (nessCurBlocksMade ness) - , aggregateStat (nessRewardUpdate ness) - , essAggregateStats (nessEpochStateStats ness) - , aggregateStat (nessPoolDistrStats ness) - ] - } - -printNewEpochStateStats :: NewEpochStateStats -> IO () -printNewEpochStateStats = putStrLn . show . pretty - -data EpochStateStats = EpochStateStats - { essMarkSnapShotStats :: !SnapShotStats - , essSetSnapShotStats :: !SnapShotStats - , essGoSnapShotStats :: !SnapShotStats - , essSnapShotsStats :: !SnapShotStats - , essLedgerStateStats :: !LedgerStateStats - , essNonMyopic :: !(Stat (KeyHash 'StakePool C)) - , essAggregateStats :: !AggregateStats - } - -instance Pretty EpochStateStats where - pretty EpochStateStats {..} = - prettyRecord - "EpochStateStats" - [ "mark" <:> statCount (sssStake essMarkSnapShotStats) - , "set" <:> statCount (sssStake essSetSnapShotStats) - , "go" <:> statCount (sssStake essGoSnapShotStats) - , "mark+set+go =" <+> pretty essSnapShotsStats - , pretty essLedgerStateStats - , "NonMyopic" <:> essNonMyopic - , pretty essAggregateStats - ] - -countEpochStateStats :: EpochState CurrentEra -> EpochStateStats -countEpochStateStats EpochState {..} = - let markSnap = countSnapShotStat (ssStakeMark esSnapshots) - setSnap = countSnapShotStat (ssStakeSet esSnapshots) - goSnap = countSnapShotStat (ssStakeGo esSnapshots) - stats = - EpochStateStats - { essMarkSnapShotStats = markSnap - , essSetSnapShotStats = setSnap - , essGoSnapShotStats = goSnap - , essSnapShotsStats = markSnap <> setSnap <> goSnap - , essLedgerStateStats = countLedgerStateStats esLState - , essNonMyopic = statMapKeys (likelihoodsNM esNonMyopic) - , essAggregateStats = mempty - } - in stats - { essAggregateStats = - mconcat - [ aggregateStat (essSnapShotsStats stats) - , aggregateStat (essLedgerStateStats stats) - , aggregateStat (essNonMyopic stats) - ] - } - -data DStateStats = DStateStats - { dssCredentialStaking :: !(Stat (Credential 'Staking C)) - , dssDelegations :: !(Stat (KeyHash 'StakePool C)) - , dssKeyHashGenesis :: !(Stat (KeyHash 'Genesis C)) - , dssKeyHashGenesisDelegate :: !(Stat (KeyHash 'GenesisDelegate C)) - , dssHashVerKeyVRF :: !(Stat (Hash C (VerKeyVRF C))) - } - -instance Pretty DStateStats where - pretty DStateStats {..} = - prettyRecord - "DStateStats" - [ "CredentialStaking" <:> dssCredentialStaking - , "SPoolUView" <:> dssDelegations - , "KeyHashGenesis" <:> dssKeyHashGenesis - , "KeyHashGenesisDelegate" <:> dssKeyHashGenesisDelegate - , "HashVerKeyVRF" <:> dssHashVerKeyVRF - ] - -instance AggregateStat DStateStats where - aggregateStat DStateStats {..} = - mempty - { gsCredentialStaking = dssCredentialStaking - , gsKeyHashStakePool = dssDelegations - , gsKeyHashGenesis = dssKeyHashGenesis - , gsKeyHashGenesisDelegate = dssKeyHashGenesisDelegate - , gsVerKeyVRF = dssHashVerKeyVRF - } - -countDStateStats :: DState CurrentEra -> DStateStats -countDStateStats DState {..} = - DStateStats - { dssCredentialStaking = - statMapKeys (rewardMap dsUnified) - <> statMapKeys (sPoolMap dsUnified) - <> statSet (range (UM.ptrMap dsUnified)) - , dssDelegations = statFoldable (sPoolMap dsUnified) - , dssKeyHashGenesis = - statFoldable (fGenDelegGenKeyHash <$> Map.keys dsFutureGenDelegs) - <> statMapKeys (unGenDelegs dsGenDelegs) - , dssKeyHashGenesisDelegate = - statFoldable (genDelegKeyHash <$> Map.elems dsFutureGenDelegs) - <> statFoldable - (genDelegKeyHash <$> Map.elems (unGenDelegs dsGenDelegs)) - , dssHashVerKeyVRF = - statFoldable (genDelegVrfHash <$> Map.elems dsFutureGenDelegs) - <> statFoldable - (genDelegVrfHash <$> Map.elems (unGenDelegs dsGenDelegs)) - } - -data PStateStats = PStateStats - { pssKeyHashStakePool :: !(Stat (KeyHash 'StakePool C)) - , pssPoolParamsStats :: !PoolParamsStats - } - -instance Pretty PStateStats where - pretty PStateStats {..} = - prettyRecord - "PStateStats" - [ "KeyHashStakePool" <:> pssKeyHashStakePool - , pretty pssPoolParamsStats - ] - -instance AggregateStat PStateStats where - aggregateStat PStateStats {..} = - (aggregateStat pssPoolParamsStats) {gsKeyHashStakePool = pssKeyHashStakePool} - -countPStateStats :: PState CurrentEra -> PStateStats -countPStateStats PState {..} = - PStateStats - { pssKeyHashStakePool = - statMapKeys psStakePoolParams - <> statMapKeys psFutureStakePoolParams - <> statMapKeys psRetiring - , pssPoolParamsStats = - foldMap countPoolParamsStats psStakePoolParams - <> foldMap countPoolParamsStats psFutureStakePoolParams - } - -data LedgerStateStats = LedgerStateStats - { lssUTxOStats :: !UTxOStats - , lssDStateStats :: !DStateStats - , lssPStateStats :: !PStateStats - } - -instance Pretty LedgerStateStats where - pretty LedgerStateStats {..} = - prettyRecord - "LedgerStateStats" - [ pretty lssUTxOStats - , pretty lssDStateStats - , pretty lssPStateStats - ] - -instance AggregateStat LedgerStateStats where - aggregateStat LedgerStateStats {..} = - mconcat - [ aggregateStat lssUTxOStats - , aggregateStat lssDStateStats - , aggregateStat lssPStateStats - ] - -countLedgerStateStats :: LedgerState CurrentEra -> LedgerStateStats -countLedgerStateStats LedgerState {..} = - LedgerStateStats - { lssUTxOStats = countUTxOStats (utxosUtxo lsUTxOState) - , lssDStateStats = countDStateStats (certDState lsCertState) - , lssPStateStats = countPStateStats (certPState lsCertState) - } - -data TxInStats = TxInStats - { tisTxId :: !(Stat (TxId C)) - , tisTxIx :: !(Stat TxIx) - } - -instance Pretty TxInStats where - pretty TxInStats {..} = - prettyRecord "TxInStats" ["TxId" <:> tisTxId, "TxIx" <:> tisTxIx] - -countTxInStats :: [TxIn C] -> TxInStats -countTxInStats txIns = - case unzip (fmap (\(TxIn txId txIx) -> (txId, txIx)) txIns) of - (txIds, txIxs) -> - TxInStats - { tisTxId = statFoldable txIds - , tisTxIx = statFoldable txIxs - } - -data TxOutStats = TxOutStats - { tosBootstrap :: !(Stat (BootstrapAddress C)) - , tosPaymentCredential :: !(Stat (Credential 'Payment C)) - , tosStakingCredential :: !(Stat (Credential 'Staking C)) - , tosStakingPtr :: !(Stat Ptr) - , tosNetwork :: !(Stat Network) - , tosValue :: !(Stat Integer) - , tosPolicyId :: !(Stat (PolicyID C)) - , tosAssetName :: !(Stat AssetName) - , tosAssetValue :: !(Stat Integer) - , tosDataHash :: !(Stat (DataHash C)) - } - -instance Semigroup TxOutStats where - (<>) (TxOutStats x0 x1 x2 x3 x4 x5 x6 x7 x8 x9) (TxOutStats y0 y1 y2 y3 y4 y5 y6 y7 y8 y9) = - TxOutStats - (x0 <> y0) - (x1 <> y1) - (x2 <> y2) - (x3 <> y3) - (x4 <> y4) - (x5 <> y5) - (x6 <> y6) - (x7 <> y7) - (x8 <> y8) - (x9 <> y9) - -instance Monoid TxOutStats where - mempty = TxOutStats mempty mempty mempty mempty mempty mempty mempty mempty mempty mempty - -instance Pretty TxOutStats where - pretty TxOutStats {..} = - prettyRecord - "TxOutStats" - [ "Bootstrap" <:> tosBootstrap - , "PaymentCredential" <:> tosPaymentCredential - , "StakingCredential" <:> tosStakingCredential - , "StakingPtr" <:> tosStakingPtr - , "Network" <:> tosNetwork - , "Value" <:> tosValue - , "PolicyId" <:> tosPolicyId - , "AssetName" <:> tosAssetName - , "AssetValue" <:> tosAssetValue - , "DataHash" <:> tosDataHash - ] - -instance AggregateStat TxOutStats where - aggregateStat TxOutStats {..} = aggregateStat tosStakingCredential - -countTxOutStats :: [TxOut CurrentEra] -> TxOutStats -countTxOutStats = foldMap countTxOutStat - where - countTxOutStat :: TxOut CurrentEra -> TxOutStats - countTxOutStat txOut = - let addr = txOut ^. addrTxOutL - MaryValue (Coin v) (MultiAsset m) = txOut ^. valueTxOutL - !dataStat = - strictMaybe - mempty - (\d -> mempty {tosDataHash = statSingleton d}) - (txOut ^. dataHashTxOutL) - !vmElems = Map.elems m - !valueStat = - dataStat - { tosValue = statSingleton v - , tosPolicyId = statMapKeys m - , tosAssetName = foldMap statMapKeys vmElems - , tosAssetValue = foldMap statFoldable vmElems - } - !networkStat = valueStat {tosNetwork = statSingleton (getNetwork addr)} - in case addr of - AddrBootstrap addrBootstrap -> - networkStat {tosBootstrap = statSingleton addrBootstrap} - Addr _ pc sr -> - let stakeStat = - case sr of - StakeRefNull -> networkStat - StakeRefPtr ptr -> - networkStat {tosStakingPtr = statSingleton ptr} - StakeRefBase cred -> - networkStat {tosStakingCredential = statSingleton cred} - in stakeStat {tosPaymentCredential = statSingleton pc} - -data UTxOStats = UTxOStats - { usTxInStats :: !TxInStats - , usTxOutStats :: !TxOutStats - } - -instance Pretty UTxOStats where - pretty UTxOStats {..} = - prettyRecord - "UTxOStats" - [pretty usTxInStats, pretty usTxOutStats] - -instance AggregateStat UTxOStats where - aggregateStat = aggregateStat . usTxOutStats - -countUTxOStats :: UTxO CurrentEra -> UTxOStats -countUTxOStats (UTxO m) = - UTxOStats - { usTxInStats = countTxInStats (Map.keys m) - , usTxOutStats = countTxOutStats (Map.elems m) - } - -data AggregateStats = AggregateStats - { gsCredentialStaking :: !(Stat (Credential 'Staking C)) - , gsKeyHashStakePool :: !(Stat (KeyHash 'StakePool C)) - , gsKeyHashGenesis :: !(Stat (KeyHash 'Genesis C)) - , gsKeyHashGenesisDelegate :: !(Stat (KeyHash 'GenesisDelegate C)) - , gsVerKeyVRF :: !(Stat (Hash C (VerKeyVRF C))) - , gsScriptHash :: !(Stat (ScriptHash C)) - } - -instance Semigroup AggregateStats where - (<>) (AggregateStats x1 x2 x3 x4 x5 x6) (AggregateStats y1 y2 y3 y4 y5 y6) = - AggregateStats - (x1 <> y1) - (x2 <> y2) - (x3 <> y3) - (x4 <> y4) - (x5 <> y5) - (x6 <> y6) - -instance Monoid AggregateStats where - mempty = AggregateStats mempty mempty mempty mempty mempty mempty - -instance Pretty AggregateStats where - pretty AggregateStats {..} = - prettyRecord - "AggregateStats" - [ "StakingCredential" <:> gsCredentialStaking - , "KeyHashStakePool" <:> gsKeyHashStakePool - , "ScriptHash" <:> gsScriptHash - ] - -class AggregateStat s where - aggregateStat :: s -> AggregateStats - -instance AggregateStat (Stat (Credential 'Staking C)) where - aggregateStat s = mempty {gsCredentialStaking = s} - -instance AggregateStat (Stat (KeyHash 'StakePool C)) where - aggregateStat s = mempty {gsKeyHashStakePool = s} - -instance AggregateStat (Stat (ScriptHash C)) where - aggregateStat s = mempty {gsScriptHash = s} - --- Initial attempt at UTxO stats, which was mostly superseded by the above --- approach that works for the whole state - -data UTxOUniques = UTxOUniques - { paymentKeys :: !(Set.Set (KeyHash 'Payment C)) - , paymentScripts :: !(Set.Set (ScriptHash C)) - , stakeKeys :: !(Set.Set (KeyHash 'Staking C)) - , stakeScripts :: !(Set.Set (ScriptHash C)) - , stakePtrs :: !(Set.Set Ptr) - , scripts :: !(Set.Set (ScriptHash C)) - , txIds :: !(Set.Set (TxId C)) - , txIxs :: !(Set.Set TxIx) - } - -emptyUniques :: UTxOUniques -emptyUniques = UTxOUniques mempty mempty mempty mempty mempty mempty mempty mempty - -data UTxOStats' = UTxOStats' - { statsTotalTxOuts :: !Int - , statsByronTxOuts :: !Int - , statsTotalPaymentKeys :: !Int - , statsTotalPaymentScripts :: !Int - , statsTotalStakeKeys :: !Int - , statsTotalStakeScripts :: !Int - , statsTotalStakePtrs :: !Int - , stateTotalStakeNulls :: !Int - } - deriving (Show) - -initStats :: UTxOStats' -initStats = UTxOStats' 0 0 0 0 0 0 0 0 - -collectStats :: ConduitT (TxIn C, TxOut CurrentEra) Void IO () -collectStats = do - (uniques, stats) <- foldlC collect (emptyUniques, initStats) - lift $ reportStats uniques stats - where - collect :: - (UTxOUniques, UTxOStats') -> - (TxIn C, TxOut CurrentEra) -> - (UTxOUniques, UTxOStats') - collect (u@UTxOUniques {..}, s@UTxOStats' {..}) (TxIn txId txIx, txOut) = - let u' = u {txIds = Set.insert txId txIds, txIxs = Set.insert txIx txIxs} - s' = s {statsTotalTxOuts = statsTotalTxOuts + 1} - addr = txOut ^. addrTxOutL - updateStakingStats sr (su, ss) = - case sr of - StakeRefNull -> - (su, ss {stateTotalStakeNulls = stateTotalStakeNulls + 1}) - StakeRefPtr ptr -> - ( su {stakePtrs = Set.insert ptr stakePtrs} - , ss {statsTotalStakePtrs = statsTotalStakePtrs + 1} - ) - StakeRefBase a - | KeyHashObj kh <- a -> - ( su {stakeKeys = Set.insert kh stakeKeys} - , ss {statsTotalStakeKeys = statsTotalStakeKeys + 1} - ) - | ScriptHashObj sh <- a -> - ( su {stakeScripts = Set.insert sh stakeScripts} - , ss {statsTotalStakeScripts = statsTotalStakeScripts + 1} - ) - in case addr of - AddrBootstrap _ -> - (u', s' {statsByronTxOuts = statsByronTxOuts + 1}) - Addr _ni pc sr - | KeyHashObj kh <- pc -> - updateStakingStats - sr - ( u' {paymentKeys = Set.insert kh paymentKeys} - , s' {statsTotalPaymentKeys = statsTotalPaymentKeys + 1} - ) - | ScriptHashObj kh <- pc -> - updateStakingStats - sr - ( u' {paymentScripts = Set.insert kh paymentScripts} - , s' {statsTotalPaymentScripts = statsTotalPaymentScripts + 1} - ) - -reportStats :: UTxOUniques -> UTxOStats' -> IO () -reportStats UTxOUniques {..} UTxOStats' {..} = do - let showPercent x y - | y == 0 = "0" - | otherwise = - case ((1000 * x) `div` y) `quotRem` 10 of - (q, r) -> - show x <> ", " <> show q <> "." <> show r <> "% of total" - putStrLn $ - unlines - [ "Total TxOuts = " <> show statsTotalTxOuts - , "Byron TxOuts = " <> showPercent statsByronTxOuts statsTotalTxOuts - , "Unique TxIds = " <> showPercent (Set.size txIds) statsTotalTxOuts - , "Unique TxIxs = " <> showPercent (Set.size txIxs) statsTotalTxOuts - , "Shelley Total Payment Keys = " <> show statsTotalPaymentKeys - , "Shelley Unique Payment Keys = " <> showPercent (Set.size paymentKeys) statsTotalPaymentKeys - , "Shelley Total Payment Scripts = " <> show statsTotalPaymentScripts - , "Shelley Unique Payment Scripts = " - <> showPercent (Set.size paymentScripts) statsTotalPaymentScripts - , "Shelley Total Stake Keys = " <> show statsTotalStakeKeys - , "Shelley Unique Stake Keys = " <> showPercent (Set.size stakeKeys) statsTotalStakeKeys - , "Shelley Total Stake Scripts = " <> show statsTotalStakeScripts - , "Shelley Unique Stake Scripts = " - <> showPercent (Set.size stakeScripts) statsTotalStakeScripts - , "Shelley Total Stake Ptrs = " <> show statsTotalStakePtrs - , "Shelley Unique Stake Ptrs = " <> showPercent (Set.size stakePtrs) statsTotalStakePtrs - ] diff --git a/libs/ledger-state/src/Cardano/Ledger/State/Vector.hs b/libs/ledger-state/src/Cardano/Ledger/State/Vector.hs deleted file mode 100644 index 0f6ad24e87a..00000000000 --- a/libs/ledger-state/src/Cardano/Ledger/State/Vector.hs +++ /dev/null @@ -1,41 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Cardano.Ledger.State.Vector where - -import Cardano.Ledger.Coin -import Cardano.Ledger.Credential -import Cardano.Ledger.Keys as Keys -import Cardano.Ledger.PoolParams -import Cardano.Ledger.State.UTxO -import Control.DeepSeq -import Data.Map.Strict as Map - -data SnapShotM c = SnapShotM - { ssStake :: !(Map (Credential 'Staking c) (CompactForm Coin)) - , ssDelegations :: !(Map (Credential 'Staking c) (KeyHash 'StakePool c)) - , ssPoolParams :: !(Map (KeyHash 'StakePool c) (PoolParams c)) - } - -instance NFData (SnapShotM C) where - rnf (SnapShotM s d p) = s `deepseq` d `deepseq` rnf p - -data SnapShotsM c = SnapShotsM - { ssPstakeMark :: !(SnapShotM c) - , ssPstakeSet :: !(SnapShotM c) - , ssPstakeGo :: !(SnapShotM c) - , ssFeeSS :: !Coin - } - -instance NFData (SnapShotsM C) where - rnf (SnapShotsM r s g f) = r `deepseq` s `deepseq` g `deepseq` rnf f diff --git a/libs/non-integral/.ghcid b/libs/non-integral/.ghcid deleted file mode 100644 index fc7a221eb05..00000000000 --- a/libs/non-integral/.ghcid +++ /dev/null @@ -1 +0,0 @@ ---command="cabal repl --repl-options='-isrc -fwarn-unused-binds -fwarn-unused-imports -fno-code -fobject-code -g2 -fno-break-on-exception -fno-break-on-error -ferror-spans -j -Wno-unused-packages'" --clear --no-height-limit --reverse-errors --reload=../../ --outputfile=/tmp/non-integral-ghcid.txt \ No newline at end of file diff --git a/libs/non-integral/CHANGELOG.md b/libs/non-integral/CHANGELOG.md deleted file mode 100644 index 62d96fe0952..00000000000 --- a/libs/non-integral/CHANGELOG.md +++ /dev/null @@ -1,9 +0,0 @@ -# Changelog for `non-integer` - -## 1.0.0.1 - -* - -## 1.0.0.0 - -First properly versioned release diff --git a/libs/non-integral/README.md b/libs/non-integral/README.md deleted file mode 100644 index 5fb74184eb2..00000000000 --- a/libs/non-integral/README.md +++ /dev/null @@ -1 +0,0 @@ -# non-integer diff --git a/libs/non-integral/Setup.hs b/libs/non-integral/Setup.hs deleted file mode 100644 index e8ef27dbba9..00000000000 --- a/libs/non-integral/Setup.hs +++ /dev/null @@ -1,3 +0,0 @@ -import Distribution.Simple - -main = defaultMain diff --git a/libs/non-integral/non-integral.cabal b/libs/non-integral/non-integral.cabal deleted file mode 100644 index ec375be92aa..00000000000 --- a/libs/non-integral/non-integral.cabal +++ /dev/null @@ -1,42 +0,0 @@ -cabal-version: 3.0 -name: non-integral -version: 1.0.0.0 -license: Apache-2.0 -maintainer: operations@iohk.io -author: IOHK -description: Implementation decision for non-integer calculations -build-type: Simple -extra-source-files: - README.md - CHANGELOG.md - -source-repository head - type: git - location: https://github.com/intersectmbo/cardano-ledger.git - subdir: libs/non-integral - -library - exposed-modules: Cardano.Ledger.NonIntegral - hs-source-dirs: src - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wunused-packages - - build-depends: base >=4.14 && <5 - -test-suite non-integral-test - type: exitcode-stdio-1.0 - main-is: Tests.hs - hs-source-dirs: test - other-modules: Tests.Cardano.Ledger.NonIntegral - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wunused-packages - -O2 -threaded -rtsopts -with-rtsopts=-N - - build-depends: - base, - non-integral, - QuickCheck diff --git a/libs/non-integral/reference/Makefile b/libs/non-integral/reference/Makefile deleted file mode 100644 index fe98b33b232..00000000000 --- a/libs/non-integral/reference/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -OBJ = non_integral.o -CFLAGS = -O2 -OFLAGS = -fPIC -LFLAGS = -lgmp -lgmpxx - -all: non_integral_test libnon_integral - -non_integral_test: non_integral.o non_integral.hpp non_integral_test.cpp - $(CXX) $(CFLAGS) -o non_integral_test non_integral_test.cpp $(OBJ) $(LFLAGS) - -non_integral.o: non_integral.c non_integral.h - $(CC) $(CFLAGS) $(OFLAGS) -c non_integral.c - -libnon_integral: non_integral.o - $(CC) -shared -o libnon_integral.so non_integral.o - -.PHONY: clean -clean: - rm non_integral_test libnon_integral.so $(OBJ) diff --git a/libs/non-integral/reference/golden_tests.txt b/libs/non-integral/reference/golden_tests.txt deleted file mode 100644 index bf1c5a61ee7..00000000000 --- a/libs/non-integral/reference/golden_tests.txt +++ /dev/null @@ -1,100000 +0,0 @@ -316062503231783982496461919898042368 5865013193009163321692591692447744 1895918630561931913234392819957760 -788858521635035361229313417110618112 3469289594734842860931212755599360 1941637206932163065064020789690368 -346375384009021534438123116272025600 2970019332732870318277074213666816 769818620130679594594149265833984 -668753953044223813395032979573571584 8677271236248044603360417218035712 3043649473686915778435234815541248 -270018487960679520600611821199556608 5391896232022564580921137814306816 119059440605424547569407941935104 -622358416329986313041563732001423360 4746451371228010059242019978477568 2823422611344872566917494848094208 -564540754603753219987060207464218624 6533867075188185994319174547013632 8255028622790388812075567115403264 -534024791377795428283070595060465664 7268588295993218968870149446172672 8470712858301226127861705179398144 -364749942496825219064242860170674176 7773176502527812996947402024812544 7490684030931140017338124089688064 -665406932270559944942949545856204800 9765628659251632393024827906064384 6056432753351760296952951157555200 -46183718070784495806824488978350080 1903294113202730082079001527975936 9397668502041919238035312849453056 -907421620116860990681577013316157440 7374907522241959636617119097946112 8414214801462125419168592994238464 -139036245359163573406287137681178624 6444582494844060433616615491239936 5008398370871257126264363936645120 -702343422223447855548612110412939264 2536537557773481516023507142574080 8845530119388400751045957222662144 -296138744732861544526397159375896576 2541199842796871106639949675364352 8857221369473485293972515245260800 -64155092378112961561442451602800640 1327370222545288579614469729026048 4598156012738508992359244471730176 -415691287911063690933935812114382848 1539461556827866775548254855626752 6791736850195824588901594574094336 -783493762580789133716884279923834880 7165481084819681270223014964756480 3305375434855352854170830544830464 -984816389395290232148120408978096128 4829265091193707745337415710015488 9073748138549773441762865077813248 -420975728860681840645325464100929536 1275151483029559500788354498166784 3042726184966947816378259256377344 -746135596545536397898256743105822720 1429326326195362003931282395889664 981959283656200424278556615376896 -399708939631940764546149128775663616 1753953654132442997794625921482752 5205868598591458284335260072148992 -813648675633196020064596968091942912 8772533715761639088025963287543808 4753300333154307785397501457072128 -456300838196927721902842956631506944 5540882647081085082466686794203136 4815156215450743380322354104107008 -88579269286420422334574243329605632 6489868069608912641139299038789632 8851454934531726460946159180447744 -611340456340623063941332788114882560 9975719937381579501193522556436480 2926915640840454434550048259833856 -513024877860166311346180693325512704 307299584513568883500183885709312 7643180307965280317262090660216832 -33470843546181105647480051265961984 167349895077910939228400879927296 4202103210173171129105590899441664 -104027224973518113389156841845424128 8564837114069999164848951800102912 6219855203133953848963640858771456 -653736898072715313940007943223115776 3510936830346007161796150188572672 5530728413433644949372930046820352 -523478690817348458973351749200379904 3167440028502980343327619123511296 1524838413212495449825058050015232 -90129633711365524913986653816619008 6085983592637520542135453680140288 595587514489622555262516304281600 -176439214046025596089531285953839104 6224497932956627718395063840014336 3273869995812852282930954395189248 -247726894538553289559943562590683136 220664874343909832806841456787456 5441490271873078617478733940916224 -893268869300243315869236275483508736 1443466612431846852380794678149120 1402848313167195604656518619725824 -765891532716891794694896562055675904 2974768034161491634856236005982208 1564233475391125172801001291251712 -66289387431822179078066279462993920 1909240380857050113443071262720000 2498740541563463889774198288023552 -652286790695119499237664483667083264 8894315934335394346006738710298624 8204911972013356063399107587211264 -167172616715029411821013029567332352 9001867964208226045711393230946304 3919499894713580039779529678389248 -893731371904925215487019868741435392 4602342667411566002793432016224256 1465945758161584389353292762710016 -397858371164157524573579825599479808 664991716893932978691511771201536 1151895736726698370380046098497536 -536508751230869792422451691246321664 1635036559924807721093749610119168 87899989559051034978347116396544 -274076550494385782762947806018666496 1772371593613302462183119884648448 8056198383850155866868226577137664 -364834599413552977373473837840072704 2870795194355389632085307330396160 8173760965374667741205706538221568 -296422644300038841696876011278303232 1354679956145786583178140786360320 8882323794938142001128205738573824 -475975167328969219021584988463169536 6921474203853387580338638239563776 8403503697376813310539589409046528 -838813374089783014726019312206741504 8215588549467521802061710572388352 1131622680305455420023179183128576 -832525620741011243524267748796399616 1972609357141128896893033425928192 9814369074662343322870423769579520 -769034882007241500784492034224291840 5773117968059432303423802163855360 5716865589017212749051304102330368 -17357405086220591769646804498382848 3471743957552105457200532889272320 9476981278767252200406843446525952 -529874725713028982197834562865725440 3342990662734710501388651379818496 9821663641039016478695796441612288 -188591024086339961318649358507311104 1743693525657339014022260917796864 2612327668575249897051824532226048 -880009244391970771554726255196635136 298941183633452483552138317791232 6168770900295530283747092065157120 -602654699115412205062470610175655936 5683578249390541304774821851168768 1600733812480667765047588661755904 -286197196313814793011816150304030720 8811912200738658734634050965733376 3084779213173035419883359032049664 -702560495515801055108571971400499200 4686594255583402122644337184473088 8783121875094308181494641343856640 -782849451249854828973626348357550080 5392228145040407257552607047057408 7623692132731112916504386314698752 -286797552569219642335450262017146880 4475282305399204040050189929545728 4016312013428491784208551579222016 -604737388011934324652985894528090112 6135549668216361432458005279932416 563970381074239357214259436060672 -504434954834651071663254069365964800 4381755877181215739983136634699776 2280771335928801781121561055461376 -150356181999578642200666065808130048 4297888598413194313910964465958912 1784771898847523895587276234686464 -701165875349100092508664479535333376 4397536881021032920927393330233344 5575159765106456744619827429113856 -221616164506913466581921242615382016 694995097567736758802048893321216 3663844949617833044190516106756096 -517583829217848602450667570104107008 9567915228330169755865672994258944 5386274642648506682951232521240576 -43496694944366300107209714916392960 7991688472941943673933570443837440 330118353930497006092053899116544 -467324679884938319229588260238917632 634169017389843692382938193723392 1847842266865146944743981086408704 -440786899366138002816455447194632192 1582589215664252267410721020575744 2686137046642036867736146764890112 -94105267079618427078183048326414336 8028892320545546903965019859320832 7190968653175865279556474055426048 -102587694499330000831222563634937856 379728442847856810767041970569216 7588032873939997644929838782349312 -553235118729115824726806275962175488 6027391943670401294720170496884736 9702210999923227224323796020232192 -778265130574372644101982909030727680 1998848630914280719390949731467264 5031153343018299629262499211116544 -337484525445165854627591493838176256 7777599601596322164064422488702976 3117495539762504937544846084669440 -868961058548698234017923742660820992 165741608744910940770387355500544 2935547987693862792531810317238272 -896620513663147360854486500480385024 3895872745388351226052669505273856 3626676907384740537812049526259712 -225843863841709185131087107926786048 8827579694330214519113254457835520 1412551979515153102533526865051648 -260068845576688793356630595708387328 5402849556921468548616249468256256 3810163933464397741501441598554112 -590551779812148109578043845605588992 2433587480346466738351789152665600 9791423730034237206658709159149568 -606566764802928089104236414723162112 5185122988120151587736990246764544 6550345518376425975788764871524352 -96527435839921045552331192356831232 4697483661940168667592820187463680 7597425829527573869056603088486400 -319763743843476790719036376014127104 8741448864216832445870912378503168 3620655902090336690932111175057408 -733728568830338633996877905679876096 8035308173408064343182350974189568 6943737912602998322388150995910656 -502051167993371638293118545437917184 6911405697366809359891268139745280 4925161562788739712156738988802048 -816841145847457388981628968384856064 3636761895824180957412811748671488 2166731728889203263669220633739264 -526692981458166698951655433722396672 7146574648076112063344765210460160 3369149826103748061474268813197312 -659616088696204995423435850107584512 5975769849663053424855653151670272 6199351133389107928083416645369856 -492079904849342862513356563097321472 2104563723611118898436929518305280 1794451985039358835235681420181504 -219497641185073370200248954990362624 5369439120589789547867258025410560 1917486427351817934166233039503360 -653909113962920400544186863640903680 7718020714686981803296092770533376 2905610339989363553347743659327488 -433306798288343908746048954146226176 7137933715624089140280021544337408 3972540318592613980716049257988096 -550025206775830442898677616374448128 2384877359403721319925106815795200 6008316220087592975444228272291840 -52796533506590944997965790764335104 6856214021272354951681653107326976 2722755674196462892216624080748544 -767990844451501651983102619324252160 5824576652999255805542301106700288 9979110254728239212455846358286336 -353063602748251841151151865287671808 6208362613328637496312679685423104 5507239198761950045107843212771328 -405000358288132381897224876604784640 2157865056128233985183347694895104 8976646454628327468210113522696192 -164697635518404225891249552896294912 2743909203303624529431613270917120 6364275305350948070234984835710976 -116528826628869064820503173169938432 8282150329524168571670902196928512 5976276951867143133718014196711424 -953572589969954459214656873649143808 322878081250071008928279398711296 6468883151910472096592847379103744 -868379194500119162895729631197921280 3403914176466316906017760676413440 4604457402041012527238002677645312 -60952959862419734869261005759709184 4749166823867626022585735921532928 965822791299030927977947068366848 -344041183055000926658932494561181696 2943428833285664641017179440939008 3176327364781198280554191934980096 -414790183668739308378789458789531648 6706501645383063496102500726996992 1930321590060141819625025172406272 -205950174310294332437238747865546752 8899266323193468930512684247416832 646127393126190719532664637882368 -618167406522062439822017888427966464 7836619530260018212202363324727296 3260760966961933546376950028697600 -695289954359727554795484013786038272 7723832447811448259169235540901888 3424309939752309950947469561954304 -317071529868348913759038378994565120 9158820083194970060742817149353984 2957887057311082354465355983749120 -365917407951455123961008418814164992 358108670348361522134413547143168 6690965258569975636586765570015232 -675467123058035376015706841484886016 4839040865581346647972767395217408 3952329832904886572635221156429824 -319828096534927695212299346868436992 1540676710270546179824139047534592 7280652205792884236743083158405120 -453050224547120522789637845464121344 5541387960881508752812671999410176 4361337652817071285440714943496192 -965417358571630228892135584039960576 2240503857079894210428598034104320 5687611758487541355286431671517184 -745502075119370409237465084614148096 9846033199415350575685122832465920 9198375623988394711394807961354240 -459258656583594859162815476172587008 4071048477092942416012876529532928 2165645946024322508196309555478528 -860297700964352220109174706343510016 2633968741633369921804554414850048 6234388622260759435710470549405696 -773469934822412325025542649642221568 2550304622428091515796611787653120 3044600281426901682675194443857920 -313247228180584904581598372685676544 163764121128829903089439204179968 1933663453093126742182107289747456 -614579960648166847661682363262304256 7436028151998371352460771043835904 3142729566251879115123552612777984 -670822416625563393813874547988889600 4873628476397884757238653105733632 6796543851805637061592485919195136 -716110251487476136198552287442894848 4131321575098069031519366466764800 227472859238615874965060316037120 -317248922951902443913165857129234432 2206346415717171965057511672774656 3505950746628234472952386283372544 -72733376077580568999268743754285056 5182942635688825196493704574009344 1111056414405290279545584247373824 -720582635448932503541200552097480704 8668115236168431710495288969920512 9699574808781960199162345142878208 -868626645462380490537326271128403968 1045006238888120766423225644089344 7664696485153287094813844819673088 -801236250358074294434866146096185344 3048957300575614149822183999799296 3540271874939711250758213537103872 -974787540559835003579923068096610304 2025236455887751021543754838310912 2117733164870306041418657422114816 -303394799866548542027811888151134208 9952111753762070138899175401586688 5151453654023893072764942969470976 -360000045955231513266003977491709952 5876592662785842911373368286511104 5243094069128886675500726875062272 -230268018326101541966444521892872192 247138041138608450615877679710208 773880968428619339349491468730368 -998657419213746303874114154454319104 4457648979985625577558960613883904 5762114059753508614750300215967744 -308275926899752927807649292321030144 7318291701468536792026532949262336 248197027960369451549824871563264 -743735196526195618393510947328098304 9184074464640241815677288004452352 491237006021663168811597566050304 -596202216561800118118721524967931904 4925138938996781803176742614990848 8060830041268942895258698556375040 -242093970228637306223297545560391680 5129459910786133316517520318922752 6014246541476852563341848931729408 -976592415394357254716873363219808256 121794763111931235945282753527808 7079624217545855738495000368906240 -314723724983698885297079113595486208 2221464991928721513321479821852672 7719816114568290402442496454950912 -868751105584086918975522041290031104 1189538110652080144613072282058752 3987148436970362737665686894542848 -798826438924219958028185472042270720 8078408311620230682387636381810688 8954858845900003947238621269983232 -190005284923519736026485054597234688 7286904944335377460703282199527424 7905987858224560529309556430340096 -898632455820899977090201422787510272 1679636034864919957985829211602944 7469284299100733681175787661688832 -131337902900374309330038841984155648 6936010029954768552277715181371392 9652397293981817963901190624247808 -864842302630669464620473581815463936 7748453736679837931684500040843264 8757789850131517210846984769896448 -768449371536763627520809619521798144 7764077992112766869507406345273344 3801933516964313501405046550560768 -759049288042287638052498873824313344 8119882731287197772132409162072064 6240014356258276672928898579693568 -942836344881547473985902257597579264 7351095558884596120647721998614528 8387283485679872977071417830932480 -996576734941915516063944941571670016 3284346531446096910388703719849984 4619563384564806049489551120924672 -803417149811945268274808988350021632 817745048033579291743071496044544 6316019956243162558398182729973760 -980818559117635193772317161912532992 9630743852914181080076405941731328 7567919725109020227315231155552256 -856889179860267927709731793678630912 6820267251193961367962939174158336 13265143269842903586911371132928 -488386342774706731609643162192052224 9540061087394080862778618432978944 273988684805440912646583433035776 -196076568424442223516378997704359936 7424939658580649729155229743579136 7977860759439385007428405905326080 -465487090433092282738486834360221696 9903476910803822202372707638575104 5767177370969052130516374476816384 -343724457234869966609572095437307904 4489745496930340293281874387664896 6685633162280783740733376107118592 -147841850461806791205105627981414400 224939535775326037563961965019136 2082953259687138019855965758685184 -166149408618467188800298849702772736 6413345629010821157341243461599232 3364814606416520777798014795251712 -346848068324085044262147791041593344 5804586283154701032963391549865984 5587290152375206279272848347365376 -660072243258888951139791128659755008 9488075887844582353642670828552192 8865446305751138321002026399432704 -206907166781491093618346419439009792 1915523552006023614159822883127296 3189534163374882213631318309208064 -733859578345501488973607529210707968 7385032721690337213536973185089536 6618263364528392856874282622386176 -226299285223950882853474490057228288 9304344594741099120137088110952448 5752568039868784693519451378679808 -894298132686576218421449434041679872 6305871545112032301450398575624192 4445206081343180741599724298043392 -505311539790326749941857657808748544 9592719172905448724157416054194176 6417153704756024435112086714974208 -46747808827746658981970986796056576 3337783572826444472051402106994688 5859356415387295709918070048817152 -189970995069689087065265529860128768 9467886733395594977885822283415552 2307245764596601177942885050351616 -198749609147509827624322244366303232 3708185230597656701082396314828800 5988757352087425537242718906875904 -430836603392311778840747655733182464 3487619129908058050173711765471232 2342888010247679602178340809605120 -424279496304107259513871590450266112 7666756430236038586966834438733824 1723781800188435340311387611070464 -364390951698504379345755967972179968 3292831449229571231628058817462272 3595633408897934454529685473722368 -299602088257715331078479888294871040 4322850175637855065261689261785088 9672315308585576030891348120829952 -470267114062611959935008627406929920 9617795910643518974617793171816448 3599704915423219658006370407415808 -233193752225215980578041424752148480 7164821535441145450565688176410624 7128383104416038880156570764705792 -156909882817708408125576726869704704 7606525572583818211645749683290112 5454717354749201967114172655206400 -323371060414453141622272180743045120 5508245595803818025956899389702144 6142538408455265128018842019168256 -599998467401849701956440870143131648 7949322448273152835934739243204608 7642005122987033527250788015931392 -972474997176342012446642479657123840 9415916012634479647237033171091456 9093158874421784083396952592482304 -693705615988307361130987878336167936 3450280207430185848884732517941248 315831023963710456882394524811264 -724704154942554274307214548525907968 4430018814081896363353532950118400 7695169202385958448166642512822272 -614747009309986220159666699678777344 1740982969849984870816481661681664 8247458756526973139482477842137088 -600947660345269448783180420012310528 7340019596190197855781519066398720 2904293606765313071385308924215296 -19518909541451882804967055124594688 505899054278903566877760581271552 1839727827499920300733257001992192 -689355749463776583383201076314374144 8670741322031412737311972402397184 3109674549368292164758332977971200 -235208530954085503626358973232316416 4807527913920034215885359357624320 4869533860991632558672951164010496 -56568804864062054666309512955166720 6096743373662333023883096116690944 1920428179115259064751885553500160 -809883394867528102279808349299015680 5715428635733683583782868335198208 6910951967831532970222881484046336 -713801547132122240266066214567018496 8651034463094018003329152584777728 4184787532457640172125303942938624 -996394567062994833836193163941773312 9198245183483207805574481321132032 8221959076519625725414890423713792 -699909798768251397021504878485176320 7318371724332926652836105968156672 5017089433925605029148730910048256 -646349783888405781576335115128143872 7320244944259413337110908915154944 3392830825477772346127872602144768 -293921542665122522726114128587390976 6628678815375265217162873512394752 9278024186734610340286198422962176 -140018612363239171646002414324023296 8062760301107718933321724796600320 2852764104734823965999158215573504 -166465268457273791604018850947923968 5633413744556267959975460953128960 9790052399209200395347143616888832 -911493463702459177331038249776316416 1825120301669581107832717486063616 1452936058726443273680325143691264 -546741503566117127980397152947929088 8241298562414957287106681549881344 3129159187788473955956561429921792 -144537802076315907076283748002562048 9345094211044406185086079960350720 3155100829578011057977554894848000 -296796859356008086638634516132921344 4206950623894871074330056016789504 5206048999276140194996188864315392 -719193679679246943627770101724348416 4420142176784958054140061767696384 1731675696929300443126098640764928 -354399037291628166916217825497448448 4915699081059514262713766894370816 1911859061559620045582676445364224 -446355079626652057379858086136643584 7641768046206817348001144495931392 1205774991590978748903742928584704 -146929038952730247900661570865201152 2592215512893379734058825242640384 3329338149179836789944212434976768 -261049571248752668670162110613815296 5052483785146735847491459600089088 5891374092958235888382024991375360 -347412042840210425969789232190849024 8394605385391671087382309300600832 5423648259127944240732051150471168 -202564832802969182301343091448086528 4419262925978799371370880475070464 6026237414500378823146701682900992 -412381606723968028937315124544274432 2748849967315810867465161390686208 9919409812316433962450442419961856 -537730753414320493461600592606527488 1230520494794137780873585416470528 3183840353846130522265589179744256 -744925478589840878071500861268295680 7107957215480714564689919702204416 3821722725909977167084716799557632 -897183029328279395058140305632002048 2776233552865686774554298668810240 4781399210785179655039521392689152 -330724364118188959675247668844560384 1349892907285974804408939925471232 5951055348642692989560073157083136 -95587179077769308069121427559677952 2400510934173604175896580399824896 4438978519414763376216787797409792 -260742996618660453121883320887541760 774929048612712212042452245151744 6032468218495282798521732355325952 -207700397250226774301191442245091328 3771558279383523138009153570603008 4260032138368723801825895895793664 -866131262975018049856068358563168256 6259301537963969647469793185366016 9921114225836078709739170620768256 -130891949063188685766573280070729728 7029888023088277805271500965543936 9787230296480706823751446942449664 -487715804729606955877102599154958336 9392608792053008389067199932792832 6820929574416242681690870276685824 -16531933868985859958127238188105728 6720880850454633932119161004097536 1759551116901136353176142112358400 -992680527011698997576777697608073216 3699401922516941183956906617602048 8913423071464138172395980108857344 -93689945634334456925081151761022976 3125506825859497727075807972556800 9264670609926218944396551664959488 -748938027676492264734428702030430208 862646947383579300339455891603456 2229291718903721259355812508205056 -330056343976842892293111674621132800 27534924408791293375099221049344 4643135933236636392492193506394112 -922151835899404188652304484081336320 1854929042362411768129026432958464 3800197194048287390985669367037952 -869260659612228129210960569859833856 5613475807882626945225688359108608 6553177218323107088986265136136192 -619587077034264091887603739604811776 9909214121205007239762017523859456 4978262537214559707162382675476480 -990014597726478344549645546053173248 4282451909333266844437770322051072 161692293125568764475970433318912 -138452521601873222278305774141702144 801985094498856666524847217573888 9845033487609409012338498423750656 -467247755935286894733675271647395840 2378451239997324907970000345628672 7162696290275104191197565398548480 -787307191852910609580899806128111616 4464070101206185991798859933679616 3207267212701109975443663717662720 -441305306759737571174251692925386752 278366318320820443972428816711680 5545273497511744635366799646392320 -145868867142573311703932479649873920 1392612501638964808862300872114176 3966327804872912013505128967438336 -435457810645853402798994197990866944 7139351003196087659205264079323136 2384532855750534182195552554319872 -304423275482160009856850776779915264 6564385537303433123084342757687296 8660576639207608173472043581308928 -182475275616288218053449938689327104 2526240044336178019672516779311104 6398357060418448208757094998867968 -319283491102306119863087006341922816 6024128901540724322833705111388160 1013221745175679403946479273902080 -495654909361235907732121608161067008 2723716215844940172495136059555840 5934700467329794150795413328756736 -180590272523370652269168555362091008 5851116658027380264861559399907328 4930233144936722717101061503451136 -463790306063918778015779338487595008 6434558654155428119292230710067200 7319317050402270701338667562041344 -593873056470106460777506086022283264 8333271635037571130599730292195328 9795634014013997937537779580796928 -629231509318120229894587201307541504 4939410170746141602196715321950208 8223122811463377066216298918182912 -308936022382590459621977817612288000 9863061619149546262866339790061568 5919641964285047640176671605129216 -727660952916566949014485466288750592 8336490666881140104529747541753856 6848265852358119112325763772186624 -210147318853919271526458636604801024 381842720015999061256045986840576 7815184464334257291987382416965632 -683053298166324827355939447997726720 1748220413431259352482445766164480 6696738407823575693421175191371776 -936501021775434076030901594783481856 4512094811568562405832775543291904 5204628913285105312661825954775040 -823679161355715670861301201841946624 391327104008496027627013019795456 1607457688195343310381960111587328 -91741078738572845703352850862571520 6113308974703166695301600503660544 4549436907043663402099465208725504 -301101912943448010522736664508366848 8635171202890479998580192968704000 4740123614111787831398381333250048 -870608737334261158202684724029161472 3660873821361449829660743778172928 4890651236329578220562685645291520 -533835056917966765369758173452304384 7245867577252702564234462129815552 8042649876969905271100689363238912 -670707903277493322559895413165391872 138957370425489618596160404979712 9045299772893731671415142161055744 -504056807809510738387305199132737536 3955631349842829696298026274914304 847895957526692669772474718617600 -263737867664619487437400584839233536 9153350913367659298079540682686464 8213034978506733568208232698085376 -79510669831308968495588742080233472 5662644570610959542294802274975744 4534582691796871231280994194554880 -542781918571527904884561521122738176 5519921346323708260369959086981120 6242790322659734643816856220073984 -91485485655911682739858647516446720 6728536093876007649285553728258048 8543108582306959861986742958555136 -336363187456929113265769111214882816 5432634424314880590973027231989760 2215026966630725075465634448408576 -414343790478406321177595582286397440 3768281684149513061256198661079040 7821407918424157635264421679857664 -911309028196830790023003036354347008 5271846973026095975379637941305344 5861400480221832720474283517673472 -17626835656252296856096725065007104 86977904404364446137869112705024 5551551549202630731532217413009408 -654410009991851592131005766569033728 1644207086339185473570376389754880 6095586845828458927375013220712448 -204700100884008663818689421451984896 5456283158184792479368963363438592 4301080462687861585783851893915648 -492792062867755764313323234775793664 5164934065454228526361809023664128 5761039051492605288758128347709440 -20943967648614778684365963224154112 5969738502650686201630372516593664 9829007453775524533167674896678912 -750650921460014755660702209496055808 4552221307091370243836716188172288 6631335812828907577100066225127424 -417233436610212985728619355712782336 246813114209014501026876385918976 6336070434591251178403301615992832 -310440969511132774971762896137093120 9116612969914924206568045312737280 7539977681820560080153466927841280 -307383860814299763856521533824434176 8962190124860774772513817466241024 6520913178367524971279004850978816 -324064746155965355173425325411401728 7543700047271166533161692793143296 9314741308612901896156737110540288 -969505448977666727757631263669747712 4947847761002936911879961183256576 7698405964241635940544182581460992 -84900031902821919511710550173155328 8356468357102413930585451317428224 9466114820025857946772112630874112 -997733760289354885576256869015486464 4843485736483636258464663445962752 8970737034644204847954657867202560 -712559598030863671486398252531580928 8282750504137507302894219961565184 1085281032305304185852146764218368 -993086254240931939596017489747640320 249360765956531888891206796574720 4836513218786822825275930039025664 -631895040935758756069313820617605120 3583381398505676317060234542579712 3560552929068774283380504519507968 -529302530560964707679340768507461632 6710428783720628186873247205163008 1920493336403421291240848294412288 -418544612574144829111559095876321280 4628388684349097251613504811565056 5869894857084974341600656270295040 -68430702217673569326769296059138048 227963461019378599525538087305216 6117730999187671083017846103474176 -764169634971656424506225889996963840 146298568979646392874443057659904 5429155602911200755157873184473088 -24015966145819330593659646552047616 7424012328039010418631653720064000 995796694126318878912658140037120 -960420162739097770853763450002210816 200639419053330130642303134466048 992711458417652504940955425570816 -730653692361903654841948081265573888 8338081930916865246256339517177856 9093286565658518670328200192589824 -591496600663117890966299057821057024 9902954936918679423518057747709952 1114314050038405619961764327194624 -873955999944688772399393815467655168 6569014749358501526896121449807872 6858553955866334165163007084068864 -616587940011469725379696186714226688 830997404220741487411580683419648 9167099718427182730007601118969856 -482061661592438468046041613464502272 7285475967236791667349474481537024 7895512926758294407194461083795456 -932615090486506679260313449631055872 1624551022673196969228005644697600 5312630485023998912702495447842816 -921569519002576276224369790652776448 3915045095060663876818832029908992 8216821670810201204220720383524864 -766611869650611083743415413877243904 4324427588769334231797066100637696 9983516638456622096715491447930880 -826149548248116008360372125986455552 7292706722529729031289800595865600 7462154842655522494784817254629376 -647200598973499971466655997592862720 4542710569099005297224135819132928 9115631565250450315730052848812032 -507950197573855447711583708196634624 4981370250867642290400191303385088 1529044352914061204136904091500544 -519169047530890581377959651646111744 1221041250178405952715966742790144 1568748226938592966570798661763072 -686633595647207267146851305721430016 52285715888670763813546777116672 635498454812465341688748429017088 -434638299177609301597869200598106112 3009904795589314107923676190998528 6922004735709442490023419001700352 -73019217094211351877837406919983104 3068321963085021570091237666455552 606164005818582597862899991969792 -849370572952463353593178727613726720 3286854128793657772283983038513152 8239470100326766576906952413020160 -816744850054294591328200916423671808 415305541972211868092091263352832 6393650189427806720479627772428288 -974674636963949212637620784190193664 7182657231423722711549859887841280 9074552318579209240596487665090560 -470787040112563217178378809678757888 1706978003289413764566597146509312 6799147349213388971597522819612672 -967058743295602300439138037617655808 8672900304834855280384080179363840 2279865760354678979010595966156800 -864443390861852895078071115991482368 2799835745150253172742206487789568 9665527802971433167941537353433088 -201312130447172123953659808604749824 7775871793605451305009070320123904 1362235491072562275702534867779584 -947982685433535806327204099668312064 7432014277932785643282159827419136 2924138272979164584091720657928192 -640688129530740132382694032619339776 5806460642077836671573693294444544 6230612500405905619667648579108864 -676557041188585035083271434707927040 5246516263587612828482693708644352 7969195989024671970362104746082304 -52763982675687493877351592566456320 5919716605228171494655681881964544 1465944878575704489495321238306816 -537077054128936672907477360469606400 3816242383929403137512901735088128 7319033580936664314121853928996864 -231382694049924478555805548739035136 5065463236212080760817082680999936 8390956787403129989441534631608320 -739481789886184208956270197071675392 639006189142955029804985750650880 3506626443374777880756506385711104 -731284891715759025936851752179466240 4870368834391891289857171763757056 9648785929003112990148362258874368 -706473219703295225760282648885854208 5447841216096763808933291199823872 3632100289283721527900611136192512 -420601096226689852852966569302556672 7213543293707483686908064291618816 8040816310841677854567991519215616 -877193110869338172836777140179435520 7725500881037122029790578685771776 4111581733784489653709695642238976 -448657061142102533499403803230732288 4596290584760279876207604622426112 7717896069070398880604374165356544 -287760969608077462254885175285514240 2860082108472491562866211226124288 6142937416064890198975003425243136 -546966387731213467356396542828216320 6901362373599130704310582237986816 5010402207830593044539220888125440 -175402446034278535566893160115208192 370731862217087574641719054958592 6205729019503457095806619578531840 -40222409134377446182424617429237760 2357941373915660902526140136030208 6583667911164804221676935249395712 -169224205801231338745291194704592896 2496332026430563906777666337898496 1510041681525446338142297946849280 -34564021650821526145583621412487168 8743018370232628361349054135795712 420214559301823342362273968553984 -302474920630133477410168698088456192 7783235141623997851407112086749184 3683295408357360192120340174864384 -807629244266236003145227275977359360 4599297016431900793319074499133440 9877973264148887843446086684377088 -737384105683547982344401055872188416 296404705643397447371519074238464 3259865664036515729136191165956096 -582565446025924888900595232551206912 4047689824198690147859885314801664 1544716238330191340464662789488640 -392207631232119922358212956153446400 1862439447925110331693715186253824 7070130606256755858676277040906240 -359093676343993108981665259623284736 2281392821862206774174515957071872 5773246393034504802268754676285440 -253093413010847340163006121929342976 1283620956503246255517357731479552 225741380951857272285936490643456 -358366914072480934133604255359041536 4247812815605154190919675766898688 3184243282005173517239591284768768 -446956198202838117875868069045207040 7894107938126553202944632684544000 4826468697714677629018204580872192 -703597990273167074935213040859086848 3845233233431269440748089457508352 5379822173898857011698083104292864 -785848505151903151039456139559305216 333181955943899071120806799998976 7037620131794861845336240678764544 -819990057094023522615510128547332096 3093062225557841646558431521275904 2529136608427722129113913992675328 -353916705855174499722364831978749952 3774627000855013256107586666627072 2230029243332215882054075326398464 -679206323405521676432058703283224576 3865979238399448680477567083347968 8771217955768017766735152194519040 -552973138964350838014912500582055936 6504307005553408316413225497264128 1032769582213513220140749515915264 -504207748597244409869271871260721152 670685838036446451665382668238848 9171444019563473317087948071501824 -294017874033447498460938813285859328 1134232040066871808807089232412672 8211707304912484710179678990630912 -551034447183887925840990520205115392 752509705877570591292631455629312 6860891497299589210578539178360832 -350359905403086752374048612243472384 6522730695428907124097469015654400 7059405055667377222353377824866304 -29682203302483910432097347542450176 6725306612856074244609364404994048 9782510805778806932761401354092544 -544762237835195037822881472148668416 6546060673284239434117910922002432 8898718793615431042241314527641600 -588818882065466939435262792249114624 6179733684274105010093735194656768 1246151232755843339892501803696128 -55882348791109331848087645771005952 6348944248635502102666280087584768 7565227505675035671962874359578624 -285246423223745318912813604647469056 1082551825458404946542647465476096 7477509290633793882554009504448512 -851964981833166982164022501643911168 2562179188232532099549685860007936 4518877804085877204254895187689472 -330240818282836735023099806140596224 5757172411498829313239873054834688 914281007194546713496389966364672 -625705355828103612545838634307158016 3466964702244751304107187207405568 7172908467996005023736785327357952 -470835774428407346730232682410672128 2009214664978486476671756772835328 3263851672131592922355326703894528 -350994341270968760798073350682312704 4138938719737581400530780552167424 5904582331400891481651453542531072 -443419047471383378052559525751291904 888545417031336526380141624950784 8885067650840269446592537095569408 -670528110681158337633045762185101312 2372318611003497171539885566197760 1323431466802805129652748043681792 -406149242285303392660716750899249152 3288701320147891708837154961489920 4968232174003809780545858907930624 -69124875772724965830568063916834816 2094815534260344188084610979069952 529817775183546321960720505241600 -822174888517065437215690746503364608 8435703832604108069705141805121536 414034859139673219248114093785088 -3347526397656172529767753113927680 9026004109995408433130990328610816 7923780724359234703895064123277312 -340770244784796294596591465239937024 2768916519306035044062277713002496 3893370132412774568285419664834560 -746364222368375241232803336497922048 9673690501652210874036204389531648 2093312907919529134590254118862848 -519220484381642202248987300247633920 3868769031129863486600480710197248 5606117306097548972926908562931712 -223288887042894187520669896014823424 7558374187260890368514554454867968 9917469189236815820078644815986688 -821926549333160029742409893850120192 9738236116577359324816196742676480 1722777352659839839793298760794112 -268970622256571508027463039178506240 1198768608879687045388031175426048 2061948129827927726910296341610496 -143735463985324219504521107629670400 3705518930673324069728524823429120 2975273567535329324701283700965376 -162617966139212896162818532264902656 409766156758883003544996889493504 8381101886603245637277598407983104 -162105445499080062194750101716467712 7821078575094695690270978659581952 7696160350116162445011457482424320 -38916324948236002687473461911093248 4787278076890570015241545462054912 6306782510316449197189682421563392 -919020540448181220456439367057014784 3128242768541115332889721073303552 5069749088267224333084089577897984 -588958339178227319473867767637082112 1476407148889154810523672144510976 7198132671588952204542947207675904 -858915134026905909937460983030087680 3785819263059468821497436111372288 9275607879653452212705751071719424 -444521891712530982238417265981652992 1701212157842652642444628373536768 8014091373561579715775532728582144 -622155585073120389215102065977589760 2890234705015693775415770232127488 8623719226299999127834278261424128 -512883993652082507496086870966665216 8115908012117009874538952438841344 5718650140568673616544429609320448 -243680960684697220016622248621244416 8372314197459393979363763437961216 6766746415299759574331428358324224 -854994726247535269975306173262331904 6928104696993261234992168432566272 9184339660696909553231503604842496 -258438545659848152530454601562849280 1794611865001921645494713819594752 4371344647736087468333703643529216 -830742798509783586565015768747999232 9364520317500330199947902323785728 7947516336752296304346540017713152 -518173612404921112435985372424437760 9322796155243719507399714824781824 4315823878565704321943664225943552 -440791109822303032344603896752111616 7067794056524393678216949170962432 5109577439089705930249236010500096 -892901127577263166957559314460442624 2074416068394145163470798741045248 6244980258495394477231758597160960 -339933698115520582351650052670226432 9501452287943679322100718421147648 752531635768545911567763852230656 -229842232543430965362419694869413888 5918309745309656949130925430538240 9500406751424465092576001352794112 -159598197943755998340415911473709056 4322507954634578611591663960719360 1236431012333353974703006853103616 -813078773108166850691980829374021632 4322171528519907870432503604969472 9130631220060562475403082289119232 -717093781060178681966442022510264320 2878825073184106904959498909122560 9738635366731488938826868465860608 -959198397177331872267789163841978368 132497137355284561271119495036928 2425942589404495473282077100605440 -709580379250733966975560255574900736 8423905171064102690056285884252160 914602550866723003068913874370560 -441698620227043781816733222108659712 5969559161131956354539220379893760 680659870497954643529624297930752 -758112684602053693495468613972262912 6800790768538795112391143902412800 5462928312745533617596544160104448 -589559569085106956507422841781616640 7419438587065982808355298791653376 1579142991297125279872113396678656 -966238598632643503000383270108004352 4314157463922559405515791403057152 4589042159367253078865869287718912 -629590192489108322814660624229859328 9954975597940610800366335861719040 440801411940952752477903804956672 -942450725741211588182558944197083136 8010061599329100566359032211701760 3983717240893271901427606178758656 -968689842488390206152349885617143808 2100338287016657603354990049492992 1327951486708315898445113619120128 -795962601928555874041891350466527232 8764738710893923336416479955386368 9533387463553981992330373145559040 -646675168477878476655065608384151552 7587057492894781063148539301855232 3846078628380188439043374483243008 -828977438412700410969563917075873792 3411344454758636695747133601480704 4167185017281149729868441899237376 -556958790416824250462029341188423680 5109892363542803781801634137374720 7934060435662757996026804022804480 -716147726634933824237332760698552320 8342693947199411344720629717794816 9600747756128536555461256138457088 -231467009304420523385798476861276160 2044961195185422504728479028740096 3409062762038029899114463811862528 -216690325452736877736284629558624256 5783741347924228914411864038834176 6992803356296877271313627559755776 -870916948546481568779261376232161280 5437815438104511326773176986238976 61198171921357877155133898358784 -971665787494391508928031865866027008 4329654104897037929337332965572608 1702345196112539859010792588312576 -313631611451833820892983848937193472 4545767123663925989161234505662464 3224485887509894640700129017856 -867683337282551369427562010251362304 1184509201743017577104739951181824 1644096314597938473164568445059072 -589065680512960566352139775415156736 8345658100128985664564009893888000 9445039436391489699263099053277184 -596626959546819802618541344617922560 176757065386490385473710025867264 6398346537516212322916879350890496 -175563939030028256712537907683917824 5117648750807120652761836587843584 4725202592915886253690168996265984 -939814899313720853933984477461086208 8011196912539873261990730889428992 2318855449010547370664219966963712 -82290988553612250260613485868089344 9923749219672875735459068121186304 1028206632710726253731458070872064 -467172366126964800804333234291736576 2238986428127281884343703019978752 8758901147247741730200348784590848 -262096597496544343555475802695925760 6303913304135318029268558549090304 9900105511616502855491942180978688 -823665231392508663984822229537914880 2716045514299929256959034936786944 3411954532099100467430222762868736 -577379545950921107669223485986570240 6862489927003634486454666825564160 108676384243943501211615123996672 -896660555784622763481217843144425472 6362394856791705990164179513769984 1314231332112420114159205672288256 -356635318450651371291062878481678336 8421271265625161660863588616634368 7669662009759799749712275509870592 -543427324995580274629662603760107520 3692707174645876879149337642270720 8548579109100135558544521693233152 -219999013987513412979765372136718336 7557953958923339613931834869547008 6271315151395093024162989951942656 -858035236641412454277909544408449024 4399718057782833190601444445650944 3836333879146437936061792739393536 -777453242892646744616692038215139328 4282123328974047897236960398278656 3152244834207334908304584150614016 -408922866393233876678719422985142272 6631336408428728706063499022827520 2534869689467511416433897560342528 -732166299622258066369714387595296768 6603828930919285017455204291837952 2044344793373376700519260442591232 -552799625249565032990616361155690496 2392933926817158373801343060017152 7319206992480683807126955986255872 -698145915462211066718748673728053248 6374591528135616987219809441677312 8791945369608673445365220665982976 -661615909844258218439298140308766720 273454553170967869944433515429888 4163584548178671574819846385303552 -197215538158195371858220318516576256 5222366848682154954169641206808576 6453330956970844323555825233690624 -911193485546211802394921151691227136 9605924267582779455406557764780032 8182736934691183855967111554793472 -248450727923371721451249558282567680 6635103385870087415820275175915520 1418187478101274273805811901792256 -132935999633753955197388530183569408 3510405609245583015255789117898752 8537392572715027314190401136492544 -175427395318984014843179073592623104 6717268810045409785715673092063232 9444482208241688074200022217916416 -259084475937797713754904741852217344 1082892190592959045386486012706816 1077618888731205401146176512720896 -507752087741821743947589436183674880 4210650116904188486710592016482304 317731196542299364514850098118656 -902817775011736802839626536997355520 7571844321385908926543811372384256 361307743337104150298279630864384 -472390078027478478927574584730320896 225230150990575329671455029854208 3501155531241970676878799219458048 -62336535707294539079234194105171968 6651941129218484066095270134284288 6045964956873698003977196854575104 -595541896877312000467801880223809536 8368230174024634905191908594679808 1695749232656225868620254582669312 -719378731354349100304889723263909888 3849108403768253383461367973937152 4437459260616932801388121595838464 -5314667123543883240113827901079552 8027518243504469338678709954019328 4170337918606128469559377372643328 -162949168931576052926308245754085376 3423119654362357341476545426882560 6792850669454049599920525520404480 -438922430685358794611351733080686592 7002530102293897254861476932354048 3972745458348745209660688450977792 -315978347013824937692932799023022080 6113994914866510578557750951804928 6288261199598141051683927398285312 -758327214075517250612755184798924800 6464591792005194877006105850937344 6411306491688660830781280549339136 -807708264241347467367333838549155840 9947748528361616057608600750653440 1338063708733503117281550133100544 -21327313642227821197567896911347712 7059065910964367585011571540099072 626589974440713821333533753344 -725047771801780315860695260524969984 9617516194356912101354133759459328 1481123075149365504779886495006720 -37265498899279750796237871066906624 2760777974858323450117722061406208 6670254638295943938718230988718080 -24169382506802064057961906706579456 4580151795939347758145100367003648 8679365723379992875467796432027648 -292189016956339519950176185493749760 1361752283690772218586143299469312 5347305758700816450824419791601664 -536775682912264656373255258589102080 3355669339499328204269835830427648 2063884661935293935059965967335424 -368851856590194386857933286653558784 8249645025119156938303131315339264 1974680603358420267784682843668480 -595394633801951233597887535491579904 9715328407164985351535373823508480 9665129727150684182738475786698752 -561594280801030572513807078898270208 6124095714484905935358648660262912 1912211059361153898723301253971968 -519225666485133472570642312351186944 5862990299751971409007408888938496 4644312261868142894614893251526656 -209679019356275875809805646275018752 6299186148862237700893531286011904 5359148034425854633672438601220096 -601116045632034958229746746115751936 725627766884641887609666251259904 5027312960327429150933207587225600 -19316731874421462627760982712123392 6755605803377298692640731146747904 1674377962396151483223835844542464 -275718122304583013771084546426535936 8302054258388201325409328737288192 3008484034167760052938653734797312 -724087453260987574218423806935957504 1649406721936458957783891443712000 5453283778618266359256025407684608 -362949263548298483972748879798992896 4385108702107275460726757590564864 2770692471445028976424491635703808 -665926826115228528795593055053807616 1093736932755979021188735399100416 2787284156313523722834842342129664 -671973036420458334300787500317147136 4994718243047614136657963661656064 9611052961764722346989326610464768 -776065184539436351384925600628080640 8713461432153525827041539397779456 7131891847313686376997593494323200 -485333641745485937801259065108594688 2591064804523402219400123352350720 6354923928499607824926382319730688 -850409622246279246226070512227844096 8438372854169190009234489295765504 2923579281000990672154545560223744 -581583011851276598441269531527610368 3015097096699634370027188830339072 3244160530728604441219742558060544 -398493076468878946733089849228656640 1200370972947003047675493724717056 167838169714795061275962485243904 -946577337157300018468477328565469184 3213633205133509412148732579807232 409253291950505241771350291382272 -661076727276824084510288444915712000 8116870595319105379644877960118272 2742032402069182984078457523142656 -646648014436767169424960520863088640 7664740443236399483335916944097280 5177573590375859982572173658161152 -962178947062392653916013519829991424 3287461248053692551948012147965952 4576895395999843206598722410512384 -703757865701905525913393371883241472 5023256377686191473961682904023040 6634208769136625541138505034366976 -365671222608491841348802324818034688 1860231983180288548050881925349376 3500815807805405574918081699905536 -722341885505705970599804285155803136 8448196376759870528757237704294400 4371579297623049880210739065520128 -20698187463640262113849721648840704 3165996540487682117962934930898944 1481507054468952983283640234409984 -511263524268041636077435229441097728 1073060733258892264092899481747456 8225708921152896238549140181614592 -529351939326960734318023883419025408 2995215642727603666567148160942080 4225609232225338925415627778686976 -74069339080060787272273591013474304 6844174525116521968132596535656448 3194673604533100100441975627448320 -281095162319873836515111297693515776 9266554681234969536924985893847040 693072273569486535159226696728576 -388902763640756830963681338756956160 3286767032301294962973201322213376 6726953682558691332113465132187648 -683460903509513851882775204134387712 8478686601378823663222656442826752 8325654309213786252093442842689536 -414003088240640625617922332188213248 738589355904186935209172966309888 3052720362124166269797770060627968 -488053808572476565656463238632570880 1915210930121515117077690715209728 5295464251908518705282998792617984 -257729503774613636489638517508407296 9135291357520146888226309450760192 790593818959316613180854594699264 -618337867134231108874424551942914048 9122956776097992851047422244159488 5766165429292109338126462775984128 -472241055839006226847700290495315968 8128558689273226215477494824304640 9909047999653971140887288670584832 -19753262021735966603778549438480384 1051983645708169085373644330237952 2782321225970683821834458531627008 -197063409191635045956019497008627712 9032203188830615119784580059496448 4205413573724697641651220829437952 -659373359158776109205235488702595072 9420174319490111756356462491729920 6127502278948947931253096461631488 -187102103251400661517328824724881408 8573535381181810441269300481228800 548940895362291395749561682100224 -663851597218804082996562190770634752 5356850036280044507301590232727552 7545704151350295557986566908411904 -901757950544086270848545007882731520 8959518740815082664085833507667968 7114782867423098439306416085794816 -209747992572023531771821889461157888 3431532376566425856354831231352832 2150246975043234196182183163461632 -23373673399873730307671113540304896 3075386919202124845437819690156032 6143337548857310701297229046480896 -326246893898957109293539878951190528 5786721557629674279424224695156736 2260030210926618408955122401935360 -662306115854976247070417504648036352 3282355900640606405507606200188928 305919571392955708600130427944960 -751823499392491788380170981249908736 3140070412077189388660360553168896 1481115421339623854915867056799744 -788389915585126793360324982195879936 2552609156909870759816400662953984 6981231405243835554612813724909568 -969628445803432286633233644450217984 8228942526877611176754243698688000 9474208924353863089764424021442560 -455475859543115516474414175675744256 3090573850274356572737353210134528 8789124447318381326562794288447488 -648025841239200488086606139787051008 2812278131075987064800323735388160 5687911336932014397106601796304896 -98212415106750530463881118802247680 7821904830862651391397385620946944 4401307935620792924240624396271616 -541870967846230326912447183031631872 9398723050940937226567482188234752 3494452145569297350475377230741504 -23294215291359211729489962385539072 9956348985737317975875560851636224 8785505701754554109858770671632384 -2749945367746695683321988273668096 907074621051476705816706361065472 59118478243967706317259200790528 -748788479949182939702661854345035776 2388969469534236385326754175123456 5890693447176436492157472949141504 -863016400355390794223853209751912448 3256276832257630968464041733783552 9349768081188395866487601777082368 -583113411723300710265616490490232832 1854053096587173227616149105016832 697676843250067887567162541342720 -111003818727982730711412792675532800 5867257764834950994460814002356224 7711570559267355950578529273380864 -408528709329599885916053491194789888 6160044527721117513227092065517568 2072591537616810300118744084512768 -146890674203624346142516503031840768 3378333845710440698462399973294080 4565540882194977661465190853509120 -696517190172004982673175602456952832 5320482483705836150180513843249152 4660091689168684580930099009814528 -79475802753046417404792138721394688 6775053383867093739317217305034752 1674204748902667569984743348895744 -333017416512649753003263505117216768 9625981374307185819860824890540032 4570353712425925445973733359484928 -314759123425749353629315162422902784 4585974656723108805868657131388928 2951201941994933806967188136919040 -349595230315909573342718979318218752 6507191890879806533020405129543680 9199385654541209703992079130034176 -268773161569425889617054022009618432 5380193079098292153468927868928000 9019975305043718354369380561715200 -975001054995982524777220371887685632 219122313271189746742056202534912 733731451564568907859259669086208 -533627644547041815429473476882202624 2863652456582250358075267473211392 564455986273366285727410214141952 -528034477276524511494374473313812480 3912328288507598003259462316457984 7299457997596370593062969189335040 -520390239703299829959985288880062464 743633607769460585807577484361728 9565891808542413952770688843513856 -949747070048216788027246158135951360 6353150656559810125821120593526784 3397704471927087495663537631526912 -663386862562576840847332531553435648 1014898871458369370512386120744960 1449277019270567273443015174127616 -704181286022276427694810455221469184 9340179716544775639124100341825536 961973360891627754357665256439808 -578935200745107668936910628284530688 4935873085946214080333961827975168 9545811305898571410340035912794112 -465622369904842244531254030181072896 3106775117788453876893431636164608 4937312079335149098377040086695936 -893517508746267303770347210671128576 9875045737867887713693624715706368 2973958047033798099246886730858496 -947455170257420434144579691086872576 6268074504326723517632197508988928 5542173850635743119942936508235776 -805757548371968708369673474717777920 4308471977529242236301934235484160 5280086050298879184166581526593536 -210088310351857249176438155159535616 9959094643856962676982693417189376 8468844843768350039266765251280896 -586201273963015195167989876865892352 9009461626992778180926763891163136 6145953305211980952494184241037312 -48258821066345750128525721817055232 1172775143332909108088511217532928 1697390989506832170734790956285952 -340035150241715386306435838719819776 3686724312627301326100245623341056 7892736894339988456824197456330752 -943278443885097301751333336261853184 8036092023056891128155716081156096 4502519300023469853032606452416512 -79181135361161034173257499512143872 909751767701457443616728176132096 7903066000903299624000292124622848 -672159691557598068884614168465899520 7215863884965135993709466709131264 7400382609025399720345262727626752 -959803545558281138414266409698721792 5503423874465315871664398254735360 8907564824382028660567659763466240 -110837059288251376297009508452925440 9727345196645750241042120291909632 5410661934089363169145425621942272 -670824747587768465201163683628056576 6232192326616787336449208147247104 9754654538801789284001551287844864 -920388458812147926814350946127052800 2042283844380080607375581008363520 7688488457371506965705481550561280 -112893914818434844256325841696325632 4614804947779480984819065927237632 6782638772666794243979252730953728 -647768869361348430976091879798472704 4647464687261352431086582852747264 5291672800911305167391718079725568 -138440441382415061111765259551506432 3069160077198194174842162733121536 7578775602640361008768205564411904 -535029338731227927960573611163516928 4788774877662663051214842748731392 6111478375812604118452471349641216 -583161681075797824627914578805653504 6778408328729257932983459804872704 661061935142111489502677078900736 -534712275068357435033896711364804608 2686127496970231295489059365847040 4407327722087850926019341807779840 -570548670090457419646294119440973824 8527648931797810613455628168855552 4290198037762731677036448824950784 -917618630037430847711844381495394304 9552405480951222244517959595720704 6799613256416670980874820755914752 -717625514202349661865352678789349376 1889393668432965871138457711017984 7514562606843690712280536618893312 -316508699675865234206000271409020928 1083011418951543278469213985964032 1328272947497382579416076101091328 -244643359765972175236649524400226304 8710309424228279357256505424347136 3628485329183209323021499994472448 -714606739429343754750793061157044224 4133912322209081834203745599094784 2550208300243323760920538757726208 -445866974452365298273806601565503488 1345809514787766516059996176777216 8456072162805604922428515028041728 -876821226470638030336515772505915392 4916416186119464827278532238376960 6159465891554292835831657422389248 -190976529090230164504171422200889344 8219937713703541439439070327472128 2503810696072126105869575761428480 -48923342156844600433421938499518464 8222709004294367728735814793822208 3342387124782629429881470464294912 -501481933323411694656569846133686272 28303363480361421692390244089856 931885548662592079631845284642816 -284860036547549278645643377530372096 2683391385469978872332422611992576 9933267636050272336583055533670400 -760443532801211039275357738020896768 6898989789765606203652443494940672 8141411844456841256388304788520960 -804706327457925799050441083326562304 3610063475257756217365339293351936 9375460419379127701590751410388992 -596947211873196986887401742274658304 9194781658937572193736027761803264 8569040547047614261022467601465344 -153434006835019630779773193149218816 9544749476163807028263506614943744 4294083238203916061565423250833408 -156539839417538663503037458636865536 1063095587248322784320323598680064 874823042749962581492597979611136 -705509555612594495443842150860587008 8597386373505709315981450915348480 6073274378860435090623854599471104 -211311484154089093160840987160870912 1676084015419503816253944016928768 375107038159097682103108053762048 -396942144944724007235163036380561408 8158617987728935338809337625706496 7478597442084107936754226404786176 -471141693013592725947907973811535872 1603956585293584516896274541182976 6155897425492745881188115312279552 -757985717006751627757211097134792704 6769477979970653180732083166773248 7898365687771507422487075243425792 -402145086510906175702297297268244480 1581748375253715849713531679145984 6217464812510035504006591831605248 -98429653100332275466031123929235456 5615731548809264590605857679474688 7960366699621702723362917388910592 -540622082598771386501108300836241408 5430849062246797638636313954484224 1073774540996947891395355358527488 -119458992120855601498705757544120320 5489532337669370541930830022836224 3342346106309482905554630112968704 -916228806441221676419433187480961024 2124683549968994934486589050454016 5006753774160060521131054930591744 -843874287124239787868920859429175296 4933116917289974644303277145980928 9739215886394737828840588296847360 -249805156142474107730255254350987264 905960826368542564136291475128320 85170365244188801039786227793920 -59024691629102031072253174939123712 2669558761321309762636281383223296 6529004792837843967556002957492224 -408462905762242144009339889610915840 2012582372347040072541261873020928 7701481865195298562840081324834816 -712540790991750094522341214293852160 8870382106914218029949469514006528 3423445700369923196286174373085184 -692443140145061086597351696154755072 2032978074272800795680957653843968 7845613306366927018341174018572288 -147873211428943752549802365274816512 6424816256640848132997194742497280 1069389453170576247291339983552512 -299562170352163210786418570712580096 3062222407059514444005034424270848 6580613115771643329455779611672576 -801116306634925650170224356712513536 2592898367599217782788110367588352 2972627051542365163999764406075392 -633322444110100404067544188223225856 1182499021841636066134361068535808 6689484132286533126916102705643520 -582822950952504966086021318321373184 950933269584586895590058463592448 2657967935154682831637758150180864 -498020136664857276659480972979339264 3193486679429475384036818449072128 4820179381674194259487128666767360 -136743488476937648140774747586691072 3433448744059403420768870835683328 8817437721233891920072979630784512 -522215712590393773928910951521714176 1142025953484318846053533047848960 5633195920520244450270965372289024 -36853377622728352877727258985365504 6341838852778807767611768947343360 9286531613142614581728468696825856 -890542224390379953405600216609980416 4166943669948610605606369876770816 844936331507798928619903716950016 -134168473824741803832205368811847680 3577378448650995716744643057025024 8364530220501596393737106504024064 -636529511677442258162164130201468928 1289268649623639863664580218585088 3927811792397491811005389718159360 -373802575768627838554933599712313344 3516131386478535385475964899164160 8495778824487733972520191584632832 -835629737615990956711486849130954752 1061950870213287369076932589125632 6791742226012268618324992568852480 -578306672186072641844483645683793920 9988003482592023687921270909829120 94385663310713564573927091470336 -395289772029468414459049700336074752 1185284246219816065726437111365632 3138681797939908752702342183256064 -317295061923521548292435059331301376 4015382570659773782217100812615680 1879795063424959039080269820723200 -881941750681529025296789573367496704 6786426972440280136067159903174656 8219108449256366094328313963085824 -475442464994543264141068407154933760 7978778586407387190085335063199744 6945328490446766945095001946718208 -390609934441649970113893561886834688 6513021900465623203470480609640448 2576269870397254705667871575375872 -354103925331516504425619939741663232 1549142817353080038161260983877632 3445459126185475804456797998153728 -460840207309485703541212727226662912 5284957295878443231260173265797120 8371718694000072713191246723547136 -230483815264062472033438279254671360 3000288090647615354243016831270912 5351852745072282065223947101667328 -662184848392111503695711986195103744 9260846416044913164357843281772544 6555520207694474967293161352724480 -252671957760253669882938604296077312 1807490905962660740479479783096320 4693047915532695204745856803667968 -809082156314602020215238687090278400 9629165064346374428283450859454464 9220243373800948223328041411018752 -199519617079109615763270369835745280 3215756767906076197652299773902848 3499900458485436938250851780132864 -339709598191006431412476648901050368 9883874451589713637448987818590208 6299014171062363855948300534415360 -582740777279176792457126861778976768 7340445656201297792939233703362560 4718933077673034713312957627891712 -671336907230033694146638034254168064 9403021808297600624067683620487168 5901073668333940875576152955027456 -350901544688912562106053963081056256 3874528615069475531999777547878400 5207922756494629268971379243352064 -683649036047568369650881516114280448 8339983669273292554350343682523136 2843173842780928308890946223734784 -12702850790771889005720576796393472 8271959542954025703580270816395264 674768420018033087516302873985024 -779288516097133635020750874658996224 7061721674172615995702563531915264 7629342582828987219068820008206336 -527134596788188887653882607268003840 9838574424215970619482234679197696 9523013646698757396894673161682944 -24384261777843563282271764366753792 3408119655654163867098349840629760 8676735962564510032602117294784512 -167988522856552170134170871628038144 8952733074203397644539192538038272 3996803954513581792773916655091712 -192375081226102141651292984606457856 6082848947855213634841090069626880 820922975468478550217719229186048 -253556430884467540556160001625817088 565811759225390337492808217133056 7545799224027600009829719763582976 -377765198525533041546192398990704640 6970452233336313620369751234576384 9822263611496996212094059138777088 -911105516664861866565748204198952960 333167652234961813535338497310720 6196768373224476420143499343560704 -846757993902176428612834085841141760 6666858229864966566864137165471744 7805034418356031648225997352861696 -976716952346662730044271911409549312 7303677074382521063450429391634432 174793840037791620933464369397760 -440451391956833763140812703405178880 7377698834652042417237304740413440 5377681384673653921679842004172800 -786966539760476568691827176154071040 3495188968543770135592445694443520 3780722134375827707722407012728832 -664994618532444633500885003857297408 95624499711302761255599217836032 4447664882083187575249920929562624 -482842750191158207579978738278858752 7778805326639448267620474440122368 1281578876518708499847828369047552 -230958374628138381046228367139930112 6807717211268805554892527531720704 3769640789760161707143384428183552 -59618519656302528010342928597647360 8319740858169431359122725111070720 501023452211492014548924453879808 -437292090893085013036680353889124352 1587172487838621745649582765768704 4681314041359270377793271883628544 -944250058709701837495158727111606272 6009918410679662393806752334217216 9955392255731648651925802551607296 -519692827179150373517840189449306112 1215971008130021208515308402245632 3931620518997923392088376457822208 -498280455777557535958101099974492160 5502157021590061774394586619183104 5093409812516047354686898878545920 -507449747493154161986046406657310720 2502572168232886369276973327319040 6793832995145959924299527132020736 -729653573841335446624291825706336256 3215326575481168945510924142247936 4945080159178467114523151610937344 -864047251863459971032354516784644096 8818768973083678309658028427706368 707629708790842315797024112377856 -848668881421572484237452141419036672 4913438116268802317369153972862976 5966064493212592212894828701155328 -378668985677776015774606937917751296 7587654364081401150820125941694464 5036786895143562190961160811970560 -227539030643871309005865744997548032 8727604211300110692963708854861824 2595325321907275056189610899013632 -688150475014284156143740118238232576 7433117907425414701571693669777408 1428171219895982395909337518178304 -98447166149940496816063815111147520 5646833807990979470309703555219456 5975531920924662662304650361831424 -696953288171127412477498372315414528 7630808479719441244611840994967552 4908309383697715033478434484387840 -587150075243548022555933315881238528 851982605905241091082947221520384 9574131000982624573873961322938368 -730031481019587921467438679893999616 6221842162039356985013838867857408 4329776125569831793120810062839808 -986448588126143651134804866593980416 7810014782359280722323454027628544 610952532916508843865284838162432 -971391903556363179527411716899995648 5601961216064662145375986385944576 9050645888905800901037956593090560 -92901898954030001823410931695091712 8525204895280458101239899807023104 5578372866975316517385299206078464 -479017383930618851531902463336513536 7883778771651224103643929024397312 1755835542540655873366604965216256 -282240999039378887637653914866679808 4672267569618267194433462276718592 5101017014591081377642333694066688 -110842224976373879002632039987937280 6998718494391319701767808392101888 8507812034561124992395427098656768 -213047156356133716485875108094672896 4159000554475616208932141470318592 7400748764688328266666336923418624 -40081461125600639270831067448213504 1275157918011954873205588769112064 894958322574863616984186848542720 -600763432016050868017143553720320000 7445281384528749934452395384766464 2892346404786428287832902590267392 -145545547448345594500235059410239488 88215632488420975479838560223232 2992436084256751758849499331559424 -859270197605939226113131556529766400 5161467149942150445829650789695488 8513022840863447065621700485840896 -576069431960016601486071638769270784 4173239784788244576869376703070208 6970862459197369249693387165007872 -803869160784101028417298685524705280 6943883293858502454283425573502976 2428363385007191084282075666186240 -207702442055287363349777486895382528 6172725054249632711723537005543424 6519831492579721009239148015386624 -411169777970876274600637563874050048 9152255069718460066398482156486656 9020819785070029813559848828141568 -484909188287490387904764885786951680 6819866809840191801868411069267968 5407729308268952575870109887758336 -329101162449029484506501395244908544 7777370109556589531434038501310464 7349364943317451897597236210565120 -215163926245136723236091779417636864 509943534426217073486585357402112 8037133774112789192934016067567616 -427099851932807019060920708090560512 9925226497528570277501361020993536 5453445657244680794449671889092608 -11430355178365349537985959473184768 4930469251538923029975672968708096 9552635711385904699759451405549568 -40705166428876552012449870705065984 8385152847831121447474623191973888 7500706144732329182739828683309056 -502421024147056777006750382038188032 4672927347727455763558121710026752 5731525541913638534727045102960640 -413131339570629990225679512810553344 1511459308338911955232294503972864 4770554077177699998057091565617152 -110803774506774033812025277035839488 4439928756130220173753335295246336 1241270701571854109266000545316864 -141572754021089214519775692993855488 8527273049935415896089996120031232 6987608876942633220563695707357184 -679208417746042166727102108237037568 5697201444760294842072324015915008 7200157147490243894607354909425664 -307475730839541695114516344189485056 8993860417476382705928664801869824 906944839110541723035448870174720 -916302291450320074261648218420936704 7107101787375182983203851786518528 6274147970419745285976380470722560 -950594962841700127672502719308890112 371765125975531957617716308738048 6719217776179139103037446594494464 -376308612760128597076601350465257472 3086076633740875300176036836147200 6292574191594482738833708772491264 -110656039102852048488483613726212096 678477333717879027968240844275712 3911812170871294123396818930761728 -739457755043194933910658100636942336 325384143499910171688971962155008 7329466875358872259391228299182080 -985709385567696836032644733690970112 2625751649506968919411077763039232 1217169134618812260095299300622336 -540360235939824394199702730532978688 3421216093869737854323893026684928 8730211745872920311355686399246336 -685846800176291048294069673520005120 2503106953775000000781541787566080 51248134031521817751175764639744 -945188439812968998090346123652759552 4703273208815304331240271027109888 340520408282014442905998748286976 -735117738836712493025003270819545088 7357106693736193307243408724590592 4702243865606278736973242927415296 -737783261279004258730229115931066368 5818410449081835014157741806583808 265320306903282880244255748521984 -104321936380848015237931920785408000 8075659581856932228571192316919808 1122117955170911012558962622988288 -896175974661510593847884245398192128 4053888172347972216896361720709120 1312021699885114194082043889975296 -702748104504894534810561961281978368 4747774708253088569236591499804672 3486657269682860228308648161443840 -52793678995424955448396812138840064 5697533555828672233778674355142656 9950660857533947812791197523509248 -234957102322268881251600806344392704 685549607455670437541056023101440 7223015323504315515736560158900224 -214343452644916213413033719470489600 4863660648583919563117185248264192 3103376151878747221205421039550464 -169165837554162578992573345850982400 718170913570828662835568942514176 8603016011186379389333950385094656 -6524317195625269714597898549723136 394116519108302585868953688473600 1896748644165497021398723850141696 -610546802468913353396482714317619200 9810435231170170950113123159244800 3553715847010573341734474832936960 -908406267632873852224748069920440320 6975460101097521082696261682855936 9288047428771008807811311122513920 -939751540959528920772916799978078208 7489879563863233306234875795210240 4598679669017128550921459160055808 -497574962013434178668466836072300544 6545316072175360874464857032753152 7344722106036378703147240349761536 -515497453558799050789627159367385088 6061611343300551712598589007986688 2986584456393722990884313980993536 -791699065713370543954786370174582784 9181680150414491675945054387568640 6069051883480136258525325164544000 -165052058392831658898598125723713536 1528836480755741014804698207617024 5402872360293498621308050973130752 -522043365584246063717233403835187200 5998379509623851916815906816131072 4864941967881917993800501058076672 -380281216180892675221858806535290880 7972843603021342526036908171067392 1004863153954052845399200755613696 -954705145261268724709698071284416512 374698215362073989902534166183936 1677662423304290006733245122609152 -87093531594972717170753429330460672 4450552558119592915046960314974208 2216595678996163129292829239541760 -732557140276322800275690365208494080 9746204086289227569786702926970880 5338718125191736544781111547396096 -178995956553035229876016166582878208 9352763474188656083100393046802432 541459281454151782052987764998144 -635031194142835289865667116928073728 8801283471236908156422670782562304 9124277802845458530959990219341824 -400796892082840922179386832605675520 4689879999731531819111195942584320 1254660983255313646155834054410240 -444124887807881607634531620359241728 1117285915085539176010704700309504 8163739510137732660570892231770112 -6689852271495573575860784275128320 3144067280711765184876131404218368 7939683728953169672285446282936320 -828232699813172991734922375268925440 5230292283293620265230369701232640 5407702730195045990643981992591360 -511224136041337662234734303786303488 8027839919210335822608322801958912 9159009336598060795958249320873984 -255319846001957725902756726282649600 8239443238266799491404028880879616 9750616135924939266496715609341952 -89830568311894398949023582137614336 4638190923247416249402476034260992 6040976725592117255036456061108224 -475474090953572246289853192222015488 3944047713919813768787554774024192 237516643520010765732414748622848 -330952167205016460138200683258052608 2690784822196927551315988480786432 3541575242348525996559958376710144 -875636910141194143951470270187831296 5398484914643132754228068164304896 121898032995805163024521046786048 -821668582813112405164609835907416064 7980134293342566432902564747935744 800216972697261668174797442383872 -954852792794561137693276073644523520 5529730047832127514787212607619072 2158371621040320439654192852762624 -105305601209504165877067753050865664 9598126582515867470540122236125184 5305164356867200300722767387426816 -256531546094178823420111098164019200 7476364981909481362877123208937472 188340728937209467812972643483648 -490609215064412406214319748100915200 8593578882598888667883454374871040 4717766014727273859621301948252160 -13841679283360634453533736577269760 7509888659921415705027627337121792 9440338894529044171821797223694336 -880706087361838793225062987977457664 9804076915518603975057897714352128 7925427445663148269109149886840832 -49083291351238571779299123201572864 7230437418403917912047401469739008 9263982158382311915843915763154944 -676260540003124093800661417109487616 4161606045890607256713637239193600 4209856815884717301001194538270720 -254930864751668266163287854868856832 2662460164263767182235205762023424 8702015790796066352803468655198208 -643322122469591305196101229988544512 1901094604724172711709683165954048 2493775182723171316770018905030656 -645720728715466069992449406966693888 3364613556028442290213939954319360 2021911816254990550356635798208512 -361651820336126349007114854010454016 9958593000352428911988301006635008 6755811855003624166393595511701504 -583442318213812919311885116026912768 846805964021507189642120281456640 5552412571093822322000686793883648 -386319404906830288082667091957645312 9497637503991461409115004785917952 8199883076918145721823517156048896 -327320460473457809212703772468314112 661664628845041597435424387629056 755525269597047337270928604135424 -979257969432059608347289294813003776 6713416578166557098504867394093056 9938289049206787698782061008519168 -350857618288526386216855942807420928 9318074434094903100632635528970240 4820854039173462832980328353628160 -462701174789282425473084135305117696 331080754500109214917403839823872 9076181721234149612535018455826432 -121661266662925478430222679554392064 3556593985740811954358081137147904 1267211692506163484435602827378688 -877956761869045452572431360624427008 1278944769976817443671025345626112 2495696181532815634712037051858944 -61585936574372168589089077809119232 7340338680684806609491933532258304 6542862952760733839713769292300288 -102425710464837939296212386628763648 7909146654187517372153678320893952 309667507954510094942465387659264 -650702994422581557958647793634508800 8351373445051839844843287467786240 2956971278157512958959320725192704 -880910088857482205724444119235821568 9835665381604093572889104378494976 7175948709426697757402463240978432 -782411314575558992290937898516086784 9096025718122309694105458424414208 9326693553271589623100218288373760 -299447945311373213885156345289637888 2546459909272878430948025759170560 7873685641260621094925415900774400 -125263463856035784513040364305645568 4589805563468045167044904930508800 9342076023829354049289005037518848 -99026964533142670768289574262145024 2130867683397275654901965602684928 240765104059515343370700724371456 -355012332237924439955060987671871488 5184085447704556806464252860694528 7204583731169747097074741379334144 -260469466313285414799321275425619968 1734426043069230291241186881437696 9121771528731230697809417739436032 -395543312636918318102004336255041536 7122844253442298750725302045900800 3501189663376242774331735108747264 -234151638133136207604142120598765568 5706611115687998501977968303144960 5754322801959969247265301750349824 -673838166971095813421851963480342528 1357502634555424919169542473646080 4915821815551969385612844967395328 -133535327196481623124319078168133632 873279869211156710926174895734784 8714508542159602833359468119457792 -957962077812734914545923522383839232 8467334268870295777492887989649408 5165401464709477805265785148407808 -550500936218424098988708845339017216 5683056161942172612308415906054144 4063423459070275242329508971282432 -350641694069698416709385314644262912 6151384872107878528862841091391488 3541520793647495525912438072410112 -804351508780600022618691160686723072 5438559104372103388680300965920768 7224240694340293306994692192206848 -856499375873966940631228606190714880 4339811930613871422800028598534144 5443831072239087090152386376761344 -703416083246127026419432219463385088 7686123367686329468688789506359296 2009457948010445134756113842962432 -518608580040699009848443324998877184 5264870264607656487944198174015488 9365835834949448131105707706548224 -877713427507108885553329850871185408 4732103378599424238663424664403968 9972132324430040009161841760534528 -109312850571823615894200138265001984 8567991046933226957396060888104960 4289704626801494738294610935676928 -305737261941813342618863129547767808 8459120716610292526033974211903488 9835371874325261538862600338538496 -890917398818318077063693968691167232 643783728324303308287138684993536 9120883121301926613871585797341184 -90475579542920676755956564941078528 6055155417567611593169428929314816 4407145482400711171955243217846272 -707534775828658429509876680461647872 1212019365556482790526477370654720 2423036673691681659589978201522176 -868108830778190207735687086780448768 8140650078255557849319461642829824 8008240743504268095516725563359232 -703522029225623775441983583312412672 8421730020973973600196271643033600 4752407010422277312346023790641152 -378638980655637992951397266153799680 5714302018632338649010068036517888 5701696268133050217185561597181952 -359888387278587034806691592627290112 985224144869655560351138269102080 5677443491303370365453815372578816 -332508089751102627455805909786165248 8421827694019777394530654552588288 4803470040329779584501638393495552 -564969557913878643801113435404500992 2403634333076776361188361838264320 7576059402448555339923607036887040 -543197253511913500279628274740494336 8569265401665854992683570630230016 7177626624703131657309281081884672 -793601739962042242074016933476302848 3116385481392305798394568463351808 4962789559279313926631757902249984 -622553677941000904905027529937518592 1458403497009697535571637754134528 887158095447273478847763920715776 -493481237730725179715141734483623936 3296450153351843067570549417836544 8216450652047541301759624171487232 -362208582818805316879511224250793984 245316261233928053375821244530688 2062217866609127980857686864429056 -601193529475941204573458715776122880 1380936907728054196992965416583168 7273545979500892316968384917929984 -80289691079712104631082719025037312 616668844964966028568567107026944 5508785967422561561533480238579712 -785555785339358408016115565716307968 1955069897787161641869350071697408 6947505019025635661587681411858432 -941463374920159445152487348394524672 4748640014510453745383162448445440 950718541767509016739706973454336 -795514626441438010276278428793569280 2226344003433041328298828306055168 6733487072229079080004758102081536 -672521512941825008169549586149408768 5770617447392254802022561612824576 155960767102177775045482028990464 -692890546382834001045782313503293440 9864223791367869867400608895467520 1354400269091083066411152647913472 -334729072886822026143518975548456960 5725768998937565089948369743249408 3465389958551029295077424176824320 -189672246187445530654998549709717504 3792431317024184032824493116227584 1160033373960826621407462957252608 -608879169560587878441880577753743360 4496456886415659425852775162970112 8211025357420231013173849189515264 -236888704905205007652613275487567872 1393811771781017878396698085031936 7701289598456371661256878412791808 -648869882263991770592890989720895488 6817412232106129402640440569626624 7365002694995109302458614634512384 -47793658401937518834284150277537792 6683173065935147465512827981135872 6019750165813640892503559870873600 -699449515024949054511785976625364992 8511990100583153566989289143664640 2565284732798929624109345430044672 -450266411523853524175143112831664128 1477015878420994972353914558480384 8656304945013860447306990678441984 -439180849138847058509611198262018048 5992554799076195102859346472599552 8388086819855956169510845895671808 -238856731557925229590943322272169984 3559434271286108785560067617325056 2059857290020778548368685943226368 -150701056968211578746333240605278208 6267177368503672716199195112898560 7470292987949748481979257588809728 -189258556109210756898511251971244032 1919276004716818386548921041158144 8093861887911330816975264230146048 -146206088574477155463773556179992576 2764995961798405551925210980024320 2532144843765072097460203825397760 -606333555876154110983114264594612224 7837870952639338698276821905965056 9227994796611961001722832140369920 -790298090909588818528736171161288704 830762415092313274406483921993728 1253069026922805829161882107248640 -620316015836650937667987496255881216 3911279221279224176307700225802240 2393439664346357367314455036166144 -525414836018914420159931508603224064 8540714375539610200194586828079104 9188495013939045751032881585586176 -660974102456780157135801081923633152 9179337365198485101306222452146176 7618502682242821744940608544309248 -155839405691118775533937557910847488 8156093091807066486627656756363264 5914483331742870846762760211005440 -114267655380626489511469330982764544 5483032142239555099449951445319680 9465388363344639407338902511419392 -445647124554513090411068002008039424 7705178559785583647036763073937408 1692105892264291264024095095783424 -422694711214325369820367090282921984 630438014137628650124423542603776 5574036420751716454231572840710144 -571405520375137789561202509975912448 1462748244845853392913807001518080 5281114520026848584865059759456256 -908354222122539335320678990694318080 3813463407244521141632260334682112 6106952789749142692459582687543296 -5879147553517140799994043666792448 433294452600104120186006566600704 9533630032766279679529505391640576 -713068662095330687827615661351239680 7613779056074700668209558070493184 4065420656891852611021622384525312 -250387711811122451518866528810303488 3634697950361313497554754681700352 8543722660027540754296404174700544 -487410005145266026383110732572000256 6534604516733571008415875939172352 8073221549040161525535557608800256 -662038706629940889333142249434775552 1984016772339651045159448713625600 2579581369893018031173913322455040 -5575145722393815017684837532172288 1510801917285621830271402233561088 7613520844502079978849252474355712 -636553337498822103597556059552612352 998221936808996448455486827659264 765879023191458187124209409327104 -806016095486327444619815391592448000 7658169832921819068016350415814656 156292832072388685940829368352768 -784009613735464990589376329422995456 7859799721221421686043678534008832 3339762695289621364920312414601216 -856031845131928128563892734696357888 4576793363413779693596414094344192 4474475337712172106480289962786816 -561074296325724701948161356327813120 8297300558773743434654207491178496 813602402042428059984818868322304 -196092055684106743785170942749048832 8985368278769182229112567950737408 1779780714142127218246382906245120 -55129093738472044443717753297174528 7545016711425959200109743774367744 3726093990984080592534270455578624 -753173484673755822003691072648118272 4236782296941008995609039972859904 4473998302849595505352578032467968 -435569176730530026442662244226433024 3342654215097163338109071157886976 2454352320590876445630887545012224 -257840104473565587003029026181742592 1541979612509029357006095644622848 6065743140961854492127623079002112 -384081048117467660008284523751014400 6775958371550422346841001004367872 7473193704373779441506181250547712 -234354708466758421056607923854114816 3667058835979811083947536239558656 7415704278782846038573411341434880 -270971678968775436441585988717772800 9140106405988359164247023921659904 1773685431721356619699575905583104 -403914385621855639320000316617785344 7470202083022979560827363266658304 3077468722054179683863837909450752 -424628138845618726344075058654216192 2881506912510987150423076598972416 3483487370635896780648866820128768 -202583254164406499498805529843597312 2067989738727561147484820966735872 6891977782588541500793461393063936 -976636193653560101490956278740025344 6388082658914520966566447107014656 8959273417677718441457210097664000 -906279355138790844103475970736914432 1440568261540838203127594464837632 9163399147781448396851203274702848 -585560778360415132727812996026335232 5965592189416059655853811364265984 8948090361246988862991538816286720 -252583001281404288611744346626064384 1302869901288564990063079631880192 151279935445230362040797900046336 -776627426932653461473048658960187392 4151627956189375577012549239963648 1423838440915859520271364663541760 -841960582658715946438534652460269568 3388842837189308961640960474742784 4899199160784992837436682704781312 -269518005674695893525741173357936640 2152024330246259489206706825592832 8915257061321142065017309330669568 -724767270384914628823161511662845952 8324082056981949582640556722356224 1261656338056685310191274423222272 -902064468128827785601299754650697728 1445594060417103346194605032865792 2834026474398096696106983207469056 -417411699510166162147503808840728576 3050977728550409632209064972779520 3641601090816434140589643106615296 -470481693071535160044335526603390976 8711652365604654174191624011120640 717222931877579826875323515928576 -660806524725984686760504792753111040 9289731356905263823327245075742720 7661773519515494693100780951437312 -269075901456067011788394609915199488 6997871172900221340770389232451584 2348506724424417252039619021635584 -235020370350759828686851595684544512 6023557960625196387833446771195904 5161935174029123057272226379202560 -320455413760007811271773863746207744 1244543067695095180616179210256384 3482642557472946541269084616523776 -353831345043019995989080933736120320 9825651584833513493967593178923008 6756957635861226726438303755665408 -981967173212771043365365280984268800 7842408889846057660065519142699008 3388740291886534504737533090332672 -764984677891862318585853002087661568 8755815745772853544952137852649472 2960011160428063094583645286957056 -932798101191623720375404340730396672 9175373531143085523126412495552512 2450625247045319642625552582443008 -779368450979156940228025282048557056 8443088074318765802290601774809088 6151026643479311615779362823995392 -284364365402226624319567835573518336 3081569252017090673606096328851456 2326108765131010264241837269057536 -339281486196014053064631553565392896 8665638994058987039989511156137984 2518943770990736350109934794309632 -946545847834228424590481622069936128 3969461217014020129189589359263744 5548452993776894471706879971033088 -95361273729886845099902188539346944 7801375263732727947441982337449984 9773841103195101842236932907597824 -832820004430823622366556782193541120 5457403298862185363926303692029952 5819703086380638699693862826278912 -864354050695203030671641457897504768 7108462561565454885829167768666112 1260171450885218802149403219984384 -527170009495472863629530645024210944 1664420522398316668676270045790208 2349439048495279208429118526849024 -73435201484421232156582335209275392 2385188495341089424204120121671680 4296841959682273447193374099505152 -219843916419085834287528038908297216 6626150999762109459427074020212736 2971978411853910838937609658433536 -209085491286257584525384355082665984 9067737579379319578411002606125056 9680480282207238927821173468168192 -800733367339564930975735709966532608 9828461457691004683598497954398208 6816659602609313014559887226568704 -810143888646419747144837036406472704 2606182398347283300563445400731648 1708678424137967749144252396863488 -413833211287727009811105110420357120 251493311876998500444802683764736 6606471547885707676259302753959936 -505087769733465584895975602027233280 1262681386138096369531417580797952 9206570251984233315721989433851904 -422727170034588055199713309942087680 1122114906498346054022842040713216 8703586010631521221554202174554112 -448754336702354899682799456014565376 9318943120557271669721572764024832 7249257232982694319972551753728000 -186437902208268673170337167663169536 6503583947547658027128466853330944 4416852399972395739174872700420096 -146681087291700243646851221559443456 9604523036786650828728791103176704 5193679567243438008247600365436928 -919281876283137138893175224952422400 2168339800305403026823019564630016 6021364682973673518558862626521088 -823541356775256911860437721076989952 7316888485822407757540577574387712 6908162175101120469942977070891008 -30995101569038012179633124413538304 1951177120314519492175862914088960 3130720350750158120023974985334784 -108813076321278047548523207697891328 6017876807748636272356980202405888 9154408797977711428035199400673280 -445031598326803117434552947526598656 7569094965342673038753739881578496 4952552860456177449524821829353472 -261710725479414407917674833167515648 1397311838487914843637678675591168 439821600682018867691979234344960 -682094773848610628759364612741136384 8507977511361757070708186426638336 5390988716092408893138604008669184 -7981098952732703361708478997463040 6737202316505332921000068292542464 1756992142496201367416039354138624 -374891679443188596893745470263787520 696936391421260577860034299428864 1548834995603871670797950253006848 -171427897938857731266477754840776704 8519798400592646893962010384400384 4504426974459431797962834658197504 -164764077800491963654461513476866048 2905202562544439842899392603357184 8001696292191434311718076889956352 -181210576001519338279113726208507904 3602664673475804890552723031719936 451833396633560534872049917624320 -117166810312926115475965143626547200 8285460034511439270067384929484800 6067016029666020228561998654210048 -370021844088589294963500137102442496 1498072434488160263150311080722432 4598613403412434251567944553201664 -583226160133307677256837687991599104 6045042045784338073628412139798528 7262915756342977005651019830394880 -591635486536657065441016613018009600 9915590005603090911793262484258816 4842675463765684182638459514519552 -795989854110195415108017923691642880 7547166623541778091989849308397568 540172171924159189268239730343936 -932401814517243214649531106802532352 6904140459936693148121161422340096 4985307644987650336921888569163776 -798332970850363250183385608330674176 6790854756476662597047425213399040 8431446557286722131138124581961728 -539818755225340095313619748843945984 3297897864373085150896707438903296 9992142588716776448169020284207104 -477557195903436821280151105198620672 9028467253409411050486847714099200 4946431290052384760548480379781120 -80212762990049293043052638894030848 522550133831269316331650806710272 9545128118056093716730308395532288 -162414033194145977729334880470302720 3738726267354280576611281081991168 3346274547961705701654236403597312 -614590812813365213659493343426510848 3886624070448768230725356284280832 1632005984781559191122754433712128 -769581406809256248810035368553349120 7223426685309606228638350996144128 1302237886348100693110863576432640 -181189680446836779392346828579012608 9458986527152586584055157081767936 3985576022024718415924012599214080 -907644057078915560213130542581809152 5831937121163871057825441337311232 712017327916454622686757332713472 -225565896118510890857723235869392896 2397465708370926661642120704557056 3865771112935185448800264797552640 -795885055824219946717716147907592192 1848793455288154751449475449880576 2695977663651662344494975532662784 -245511771936228906691338329300926464 4047273846494785109030737991958528 7523190066022074538940751385985024 -716947712598467941993703074797977600 3431700703989087601668077731708928 429904967292943924694006932439040 -308057473432204976914150098479349760 2442060799195489175218887294189568 2161191104929851252704455042269184 -604770560692586337326186418799640576 4416896680430708408595672677220352 9386543679775536294963578954317824 -265292206694176349005096561078697984 6022707506130209358263317642084352 2437937780526724341611065331679232 -212369900076337452553284940042600448 7324184624081745650219102880399360 5695637273119386998795294933516288 -651176445503373432078772618792009728 8928688993862513589952674550251520 6328616909279447034173887264849920 -717122708624311430760961607280361472 8337004024487552013291221195685888 6736670640996015993360881215864832 -717482980221972062031020356488134656 5368034537216359386039223511416832 1856354430444018648331991459561472 -97873372301305170025479459389308928 6745115570396376435851532401901568 9682826094572932885954201512837120 -146005963077721871169833435419115520 1146537702457389549206898066063360 3424114127042158709836520601157632 -21837850967598072221937213064085504 2191844950480715840038703265218560 8430444237403255443845523317981184 -425648587201663237015341980050259968 2648436593557090905403976872624128 6912346960091603331963800189403136 -883439152699351845781653270715957248 610741493865784934939076914577408 6788046182277212990361958912884736 -536681133507243527302293136116547584 6747401997235438265024479158599680 9430254209994340905295934574821376 -570905974771190605811883557888458752 6078551673393277624077792063782912 6704467751843654698765837655867392 -775840311719306321938038355031752704 2937844653449098854346672478093312 9913181809792977915398866799165440 -927974676700554423732743016992997376 1281606361806199004451847360479232 6977519725409271486812087075733504 -93407964201222905508712502557409280 8930409738986848270415147195957248 3971008705599117763941753625247744 -324814685408905443516525739736301568 1649466623232216477863187994116096 5158972634423768278582779550105600 -978979548395416836013690813014867968 9105246086496342033040143026225152 5139223245042583097848337256153088 -620692592375168156595682756282810368 3621676034869021505273796684152832 9797861310236567567114295863934976 -206026319379119218753236383618301952 5212410583017698750817052502523904 7528064972740291490799922674925568 -733506878543828003041489351016972288 759778268257282733426017619148800 5980552756951820023364051317817344 -844586080004773679107432285936287744 6737228216096306462818192750280704 7888768668460015391486960748986368 -386913403765146549526655501841989632 9206879964938892830079836760309760 4387209211688346180529422336000 -932553234068361477062066345147891712 8458412820376482395611483225456640 7405214512420467434226395738275840 -357046932898546868921965250674163712 1078319625401521409551562698653696 5766947071465110130878242002829312 -11206898878724120378266765276217344 4480501434836960635428335278620672 8230442740139023680002417829609472 -214337848518454641288684416620560384 8506323042603554612429062169165824 9521983337968328999871520524206080 -367649460721804490776389129965928448 7885729791704209914406018083717120 6149842020944274524462214694305792 -596899049101510105632203583030034432 5491961275223226724435946427645952 8914457560154754124375253021884416 -870237566025818552828550897639358464 7326081368908949447756055108911104 8045057782689133484468115450363904 -939922733372136119759980599669948416 7865624296682974434885806046838784 1670659282659486498476696375656448 -696903358166565496914950340776820736 5492038656277564744296517892833280 6548713309593424611907871512199168 -260090495477065942644771917007945728 1774073505065609614952425362292736 4995059788620372570598834022907904 -731982730097953962520343277213843456 9284170832398903269110651191033856 6518265633888725628478655832260608 -724987895633454128579467180240797696 4699641359899420268385162554769408 3723321768604381676248939970428928 -362149628762346022547654557495721984 2406402427699280161417810390548480 4750031281219226450963025367138304 -903207853810215851647256228932878336 6125249689496662082269465389563904 966520164630606757827291241250816 -443094351437036198534439349772091392 7380997395113757471124870343426048 6453772315444186524630299378188288 -195008384999955602758088835848994816 2787462629007811592897856735805440 9889130563783771420819803925905408 -724703494757635921757285442694152192 7908805064120791416076187962703872 9449797208507734667034263088529408 -911364695288995970983298606678671360 8650650612755709154268153108234240 4955265355015363267927973113626624 -549167527769927775292068956496461824 6761771210591950922151137258766336 6458550183105560591740452770676736 -95716402489617021523591765872869376 2014548666286981024876484351754240 6534939436982423262821932737757184 -400259116680805195896215805781606400 1551387367655991288809063427604480 3999599526714550172037449322070016 -245744467439264059531359423268126720 9217344780365436760402587790868480 1348084350401402530545808929980416 -291966293532204388453663124523843584 2631947718058752733993488340746240 7764690583886206504322820244242432 -571266112797837200088590452634157056 5596130211725539892133867397578752 5498272923360583450597733187977216 -314785514231271284595251351440588800 5973188272989039546309359251226624 5171042113433800956717341756882944 -903680983158701139134257625202425856 6461071287459290149347047203930112 479252879594296080644753915379712 -759069789479011901008104580825743360 8138495307696617206153727788974080 7939654341698788224359611928412160 -693386709176770841419086913265991680 9820466598291468071793722107363328 6893453563735656286050920890892288 -196311208136938539544040307939082240 9559177094107498601606132470382592 8791768126503168766772508689956864 -70914896542297402159728220967010304 8860241854600513144160196306665472 3918084349447076232686460932718592 -248310949383240760618801299883819008 2412313852452080418740310999302144 6193794452653885736640799028805632 -28406260164565778730550300485091328 5118337031928195976953194424041472 8099101246376120231023763534118912 -99355540546129826902474338928164864 7205324737156821884366026312777728 8679564179504399762075329000112128 -169766647427947986002698508020219904 8874975419954227025755365556879360 1373335059946585187267123364233216 -393422673344110094304781415424720896 774061396741004116608835225911296 6933332585504877394111165043310592 -762664109703873931254606263285186560 5878040600933537398383790719500288 2787680070756614583736006258720768 -278190720853408003987969182934237184 8509882200089586436444999236190208 3090452827407282738964015815327744 -212586804832386633184497342680662016 3307448240745656649420394702307328 5319751463328994859029057125744640 -874924926644296068326405157546885120 4289442229163861058306506496147456 1506804365511500791719848883257344 -911067206971230925865256127324749824 6333875996420200050369037290438656 8640126772566875462348990071177216 -120572414950350678621051732661108736 7995222831444507671080435814760448 9511369226841690755150341998641152 -999621484627360418979407559238090752 6479215500540271603143293129457664 1471578469090109714119676571680768 -479381562192186759402907590587318272 1458257546177877533716850552078336 4313598269393223382772115650379776 -481058928102656335009895097108004864 7108271205092524765574883312664576 8436889786081503394760991271026688 -217608750138429336156110051417784320 4765982721656370197931059415351296 6471336351155797175031161868517376 -737597478108399614851220651510857728 8615414612504245891527865161220096 7579462912135208670992512598409216 -249769239366541729090794663041826816 3210491248835340959221318988857344 5491314912079857935992018224283648 -657567530777236229469866459981152256 4798959074245627379017505801502720 8837906799177260190597391153364992 -309307537968595822776416802640494592 9577486337289247439914067732463616 6776211654006464853500483204022272 -351341361495585392669438355661914112 1315638769160291219671685884018688 9947686410432793238878695861518336 -551699078995208331781499499514429440 862379344352334592325924205625344 93201601038768449763891728089088 -623980748647941815593535205801984000 8562335901106040861677796263460864 4667646049762081662259515996766208 -990739252467304612614163244993478656 3654229030617466082475680760594432 5899719273870656738673796327669760 -59360784542860928614963106719727616 1619823985619956482774770407964672 3656120049625321406055399494254592 -165807377730842124636997647119417344 6664423933360931442819392025395200 9548359321462845180440567571546112 -575504132324171171248126823791329280 4071636484799714603378621401792512 192245846791666186440851939393536 -447469443583130915418920773295800320 1156912672123114748450086443810816 5866966920889048952885988292558848 -184801224804155092531556590741880832 379969707297286182312364491145216 8631447732175753614082502217957376 -675098219841495928008909741566722048 971420389153828060243519938232320 6300667645067260731435381283618816 -152523088924876774770433967305785344 6815380759355148360543954725240832 7187338727749748438028412736503808 -633904696756622895777144596754071552 6284857458128423982694106818150400 4749176282947294475394258183389184 -250580167981234866379494874765328384 8618025046849666915597361998725120 4503155666429627122906596114432 -92780823487533392255498744135417856 7754760438834351387261694145200128 6053018344736466276422468853825536 -409579651596389370700066506185637888 262479935422464118921635766992896 5249428270384741996923553415430144 -821375942591174607870951329611382784 4531639957645761345364319428149248 5001827451995327647172494924709888 -518904951185285381784978656468140032 8043973682217728355781264562716672 8904805617814664494673697494269952 -367282945512820851845893356064342016 7168152582428598139341250370732032 5595952782935139343539928632918016 -565920187467971941758820511589072896 3681229342958388835800413867343872 5954421680574920829554256924114944 -735062580723338689074179298111258624 3001705339830472939624822544007168 3240822235189722586153835569348608 -747051062899260117450150888322629632 5923619682977221639932978307006464 4898603273590239256805801184985088 -904285075086637980318190019092152320 5924207171862455141882916329488384 5602880455253934130433119286722560 -123010857521294970475628476223193088 9212862418646746352253552520331264 4906975859959455017972562053300224 -847423406584199333832058354502991872 5296190786816236095541872034840576 1773059515574234900102748217278464 -883179166214311954707969717359869952 7481878498211950468600496425795584 1276757684763184971413600927219712 -502497054050112576405157464925798400 4772357009596500569613644895092736 5161135950743966722470773319008256 -226894480236180567062651086523334656 850120212785724131073933751353344 9451963932660640667499730791563264 -444654887607400218769827015474282496 7714490422581378294572087014064128 2049249960827026970417173677211648 -302173597568917265128211722075635712 2806583882556395308166766808530944 837782370826617329660174501150720 -498341801676647928385375669860696064 7014137178630318035406458841989120 6195379904934739501512004495998976 -93683385810719719528531518029824000 4982000758338089772428868630609920 5009568083336098484663529487990784 -205995101643022483050787191048372224 4148921350163343579012410411843584 1184035098781380194026384537944064 -40084075789878636648703495633895424 5014229447332051065278210569666560 1618873741195474480244228412669952 -370580196073008412725448005738561536 6431016554303400664752005413076992 1980027239796227663915243903385600 -784333514633876569013738848731004928 3386548381962312762805028084776960 7440303458180191397635875982540800 -131503385680777443752428097832484864 2363638067798970130816885743157248 2007184619866826799884968273117184 -559622760007606283087964998876528640 2839827899537129374941569909522432 3755733276019039340702796341051392 -196808201946909718334101554273976320 95694010434898352006484813938688 408678892603474414484716200656896 -212282934277465120355964381290299392 4006140382905581336395833646514176 2206512976259046976278563716595712 -326413428527165681725351014871072768 5283739514439562050240208282058752 4694300328008709362914955983060992 -423740141060357996265158450811502592 7504978457496988561423762211209216 8710240225118446358761694522507264 -580199158434216027352503323165982720 7147105460865812449627493111955456 4609232102809984387963628826918912 -646816986607991083244648868912037888 9741857103349542709509344758595584 878756494797673543687461238996992 -70403194658424330130418859996348416 21247703729121068060966798753792 888963345852712517825879521361920 -274181370860421527291520251844362240 608883067393855352134661207752704 6052456212045380796761598502895616 -562255544372510000987041251012378624 1582725903862739050439927289348096 4288468588819940571956569482199040 -309861775647502109960461476071211008 1308447064356766213055285274083328 1139958176459967641759746820669440 -77879874125842616179486045767729152 9861585276135140524412986013515776 5885357104910213673551675650998272 -372890803992258614716328441345474560 5752972363382832403009887967117312 572612193112142684540132892082176 -304937561670227922872749288985722880 2327511035174412284078643587579904 9704525991290395239392623011561472 -474566626554151745949463321740574720 5264692866497372244360454037569536 8730064812653431554169876944781312 -143023097410497690869524960028655616 40479825715913681320382925111296 9669594168515754832976844718866432 -48809652780113464993953837144342528 1706888036256345211917976624693248 3698478087347732678692025774637056 -846630530823184666447302049568653312 5758101716129030532281051706818560 5616566803143169374848777722003456 -597960563521823801556228027524841472 1556752214538302937646884271947776 333773891909116477168613968576512 -393384630487570446988461805796327424 486295798362023629833720093999104 7441946905133298819760843195940864 -499628683325713591070043117600112640 7101232862386056867622779025883136 284308619327553818707841167392768 -926050867515508018835413862629507072 5783613948382579456290654269734912 9569345267647120330625096651636736 -662166613811963450800568131009904640 394027933616386449746431712428032 9463310172480652852697670203998208 -708988682374543233294738003939295232 7204420033459551471276029036724224 3118625986821132982739931158806528 -246109744324089278690555985408294912 8399001617743600105377498715389952 2635461784569850380205789963878400 -453460503750073611531268988214444032 3063916613947299880062853171904512 9199836516588190185854704747020288 -20745035385505661795238954057859072 9610923999497649764286995879690240 9683361887078005565667555982442496 -15578062280850968623038878439178240 8574830144521544035399721612738560 53495088256595672704991392432128 -874172249425962648613312451175251968 9184843427189960508984356843290624 4102309345206880957283167067176960 -327356378324457946965683125564211200 987889965809805550073984225116160 4522383367881469893985776628137984 -818195584801654073511186516982890496 8161310609368818218747649023016960 6323244962745661501286579825541120 -488806897848817668408960704292323328 2444612683106188142206645157494784 6340128117839993993863126757408768 -839281580501717968598233893904056320 9222668837505254634380900928847872 6287395259351814389491239133118464 -123417443831833426529770054212386816 5265768266202734242726489815515136 2098002636788853993164370702499840 -803828032459402235971054224365584384 4385385920827170405820356917985280 9846729866636290495528048602906624 -26220838792121836390335349258190848 1876541770465839050024186267303936 4530530207836912422907848897331200 -809316704626329591403564347395407872 3949337740278931705277569424162816 1079892166276029913517895062650880 -887862904175890973249102429544251392 1597676648502073574099127201955840 9652731396005022352008912851435520 -438492774423815168059825599924928512 45106170282688960550970293485568 7594796527777596870908657474207744 -953969534069245713797885103242739712 1223057614808652799824698930102272 4660564835766158179450976192167936 -239355625561912951494311939741319168 7414596842304022664034783640682496 9534657134766950258728913699078144 -739896969175495601900178868443021312 3036759964562625938170994430574592 7963520802907762796732056845942784 -83425052680991960802005352565440512 7061416716859285053701651521601536 4847265501006676392684722866618368 -988183551843137705840090344429977600 5657040017348029015219436582338560 7808583752945636475469389772095488 -920425055863183231297628408729567232 2820216071835486594344131447750656 7747272637144935809261154739421184 -631563157868292636568519088415965184 7487565255635607939428445937729536 9683875424264487908758577857167360 -134273464572280932103330061006929920 2526816640397596556062932779139072 433769570233725900582330562510848 -754133363091269465180739669447409664 7857415932950317844144490635329536 1671589605014084112095742514954240 -973630536377648187835946552415748096 9658101919556101889048439676731392 4159118883329642592322101299904512 -247562572946773319266185783793418240 7976228886845436294494170373947392 993995749609932585921637414600704 -721095357440524041507303405823983616 815425482209351322702104504565760 6339587572746004306707171648733184 -801334119092931767396353625133416448 3563030778397610753525527898750976 6274313748072701799528200088322048 -827513851625334795799795311562457088 4405231191798082353919223908007936 8379142440613035584199458203631616 -638831056599752808315858979485908992 3103960530731184307520353830174720 3715194103166634695428609427898368 -911561220369172720714233952784613376 9244306585613775558236213696528384 4543085204506349429392686977122304 -390305155269963355598650707405701120 8278711607014412351615855010775040 2025954920965976643765476368842752 -177928819296079153486553561440452608 4315519665752152096990052426448896 2080697359099105440022847547244544 -552758667146110177839151001563561984 1262741158452576268974276399333376 3397056306566201451576808219607040 -655587446145377864098944892803219456 6723271985578328688280501028388864 7778643226991407440874994418057216 -167048620946797839319860162391441408 1604461757903079551147276802981888 4925364538114798946042136640880640 -417887870456042644762068654839824384 4642766008976656192847719184728064 4286460280205333122837059031007232 -560802410882500632838131356421586944 432986291609429735521852382511104 1771570528273277583755290804748288 -623378144390818455983428427917033472 6993042715727004422853176191877120 1761738707122454276110314949836800 -78784810351610765120157596390522880 9462154542703122360332139414683648 9758138898735718495685882291421184 -517685358479578717388353311992709120 2105915565252284797511643827273728 3885698887470936403838004845608960 -104810611719288313028072432308584448 7024900745118446681900518360481792 6922438173253248493531975785644032 -609802262765773077200069778818990080 4611116309204837892684991279661056 7816798195552958702537613462470656 -577488829810175414901663329719156736 5434395851723309144815682401075200 998590950802980010886230769139712 -788820698374939515710646765844692992 5355261909904822250688120350572544 1865375526072197444835005610065920 -650467395947988337999723380508459008 5223322378330945019606520666521600 9363844975413304876757277541924864 -1874142967713139325099400744665088 9477085781292324630865608806760448 5004456383823725277370758012600320 -361199132779266466435394156420399104 8642259392213212376075124925792256 2697547616367324106695691888230400 -552787716631354389604213118700879872 34547155659895772154498998337536 7471935905319882754623097991593984 -562071313283283890315406569392570368 3795720404592376534473349571543040 6757513474760849072656624675454976 -122447050466405756349495363088941056 158880628811998980622437119426560 6211092678238538628092661807972352 -131412587898461474296790857749102592 4277984471498625115715399908851712 9506693793972276796246194613387264 -667608776814572788620306287337406464 1108149979870938645128806953648128 1467578046775282643999908264148992 -470201567672319267423339581678813184 1558924303746215332936292340072448 977323452382052141294771383566336 -664449251244237409946814525072211968 9990106908377905416863563426824192 5491073515596737073052914081071104 -869955377111361115243927460590387200 5157071273697949578657718532571136 2585306176947954535019057048977408 -640917858726719999370758697257009152 4127159568904324796391076489330688 6523095345226018913047696564551680 -167887365777396523700418209143324672 32415756445103860362351690645504 9284936414743617993014601440034816 -516983105064557138873004103053606912 4756018788368320839357649752424448 1118699645924875720808743556874240 -163540360054178484024030374328795136 3511469793751928326011694262255616 4475391910516097922485391428943872 -407144176407568105364220880030269440 8524968124009177115005214879907840 2559235712634059673186063987245056 -495742730101402366872226861223510016 3706306527396324932983365583241216 9413249511607197853590184379023360 -951890776371763113734762305454866432 7029562178183659959833344713162752 6219977116348347234807040469630976 -444777442929883098694848368896638976 2701975705912642913612420398186496 1235300965876424773001936602398720 -880273867961352667317726267689664512 5114526300559085605881658124271616 9925209530486701298081957477875712 -222422927290758353669318731345428480 6893600670430390041894599998308352 6057719454571029345652848136814592 -173063067116777804750491659616124928 188321032545564245841841693392896 852554685817418989225020890284032 -769530552542691995858054694750388224 2744184337424144946692445502963712 4151021810159769958020143772598272 -1038997173689011408384056792973312 8127800418444373037206594555740160 6405591427699452127099950114799616 -349241294035277069346594524802056192 2292150711681567532466869494611968 3054667194507940473531248953786368 -674795986478574990822116408598462464 1800255170954352524260407859216384 7672072868902843891479854131970048 -339611130311915820802544944392699904 3847711810393618387135139181232128 1564771803852051002458228819755008 -491861680493588693163036417286209536 4394250484413475151826075156217856 266095127306041574931136723812352 -807724759028436670604726156688097280 616668324539228870867137010335744 9501841130362999309665998783643648 -875301306581237779112558566884507648 8910373076206276833432893604757504 3407669292510043688471170226585600 -191302836401441985571762505254961152 8196467022694316662267343250915328 2575675860594101919596229737578496 -998589887823751179228004627523829760 3681357307419743694335614109351936 2538603422069503998280832301137920 -440982211732356334816056451847421952 2986108296460413802456418361540608 5265017649183624155471489743716352 -108470736121380299774032818911313920 1542663953162007798538499631611904 5314576219852677237018999346167808 -66436612172012896696220812503416832 1385777993925759103625085673537536 3849750551614705824780826059997184 -636632388299212586938054829792034816 3161613621747994956076316310372352 4935056542563873333125687350919168 -540814295086920543229353611373838336 2471544166258859570829259102486528 3794365086049244399115649119420416 -208691015250324463248216514893971456 6247219035432578166871372872024064 2878297135591725325633517330104320 -9661922353676390814548550521716736 9591008655935849777046272727842816 7344589531781234954356362189996032 -634549846003610363701153713212096512 8369052737973820243621036771246080 5306236850695126610661109911257088 -513488313616745297322703256262017024 2114205790851790821847958965714944 8227924136404421074244731978907648 -896333328816615684211037458269208576 5883793961755141588834228595851264 3729258047596056358328470660448256 -523539714374259957941037419091460096 1807170470607017100232260044455936 9594892958320689404511190440214528 -717645635786348693811351415062265856 7244277117628772918758274750218240 2042624772830139472619965643751424 -177293489076665551019230918839631872 7227645648532528479571045930500096 3393483195374136814509238349987840 -80565029568462874208823972808622080 2530996972203271303293306828488704 150110520780300937217635468181504 -691975769964239598900785540646305792 6075328602780450595977765937217536 9219212712015203240395966292951040 -545909789042495274443884228708925440 9119266640814769425667761891180544 4564024906905190806772408750440448 -175495361312242882995410647304372224 6056501739148992685350675319619584 6460225002163051022520947658719232 -633750342028664040428931955852050432 6011531141040231632971756696764416 6092446361663579361893916971368448 -278773168256306270090425179943469056 4755572947478266302304926809718784 2894197736263495320824482308816896 -623499194247115358659280924521267200 5417703692337566710972759857430528 9029520677125628995966934410330112 -105510049728445409371945910870736896 3707859097050368750513050729054208 2183453404510606927802236401614848 -410217852277142176588844911898394624 3231882388962306718168242936872960 2649782115383287259110716970369024 -272771044447484364984192590583693312 9216414918524556498862917770280960 8800452788307650752431239532118016 -281733270989985996566458203979644928 1791136606435731813551827383746560 9966164912826076449488463642755072 -485732891501718525825508737843986432 3819402595166044229975323562737664 9833645058035285850606461608001536 -601691995166811922269163238191005696 3773070684126795360296425867968512 580630798434022729101297523359744 -8736405100577413652685745610031104 5042209085842899770201352219656192 7480442165103534454555514123583488 -297626085726087233575199285505425408 8688072651264502544117941347024896 5162128014844994089237689919340544 -694501366655608753995805699765960704 2023676525567264496164739894738944 1050476606019900952067303184269312 -178526493106761121678389810164662272 4194647555768026087828294062833664 2659122135844678433719315937099776 -717045633468533252085519994987741184 2583474778302210390229559271227392 1438595910249109765968140483690496 -902429451956489697657798687482445824 1939185596435766658441123586899968 4625572790924758588457984819462144 -634562810609637684615143337601531904 6635230357182335307964243232423936 6511502597173824530044442107707392 -686878527790906795133226644368523264 4922149824369933733557759478071296 7791093886901994116407951506800640 -511591617217373146380232307033243648 785276853761948715294726236930048 5876138624689220916697192967700480 -64750480766714618317187581464281088 70344519527379269639881810247680 6282100703029602724129011797065728 -52982533673891381003778837859794944 7025302606402512984771501616005120 2718227840819816980259170934587392 -657489389668678496249131902361927680 4199325589005938236302166895624192 1278808382630654519420127063048192 -639653400338842927449464145581178880 6569326775643188318554068516601856 6384255044834868784876610471854080 -386208344604287009530119579559264256 8812980272061895252404772110598144 6047931672938214798387606326345728 -448973090592280766771437434935705600 2613907540884298905292320026918912 3629614058511631219879918125973504 -553849044415055380617425981060153344 9948185528742912641450177449689088 4290724549319992813296553595764736 -501127521184078320092100167611711488 1497067363732040622955186391875584 7382818835776972571640023704666112 -914370722452670238630208740339482624 1106047083668034100892907371233280 6023968682336697296713680206954496 -281364887022136587065190526432051200 7200609693534902654882118163759104 5436476306766741238079982328086528 -895261601555705537590540315813478400 2012994067288970142093118950866944 259979233571016738127704236228608 -970445979942124386164198725193302016 687014767555375706831977799745536 7719628984153715705064020504477696 -891174338490887755931386734958346240 8047523352996389292735828630437888 3048530631150841290113858892988416 -941171881011739200431767669918662656 2391245527027630674519251000229888 6291579619165307250449155216113664 -874486462252482985338391767805853696 1967211271524275979356297433710592 4312877045733317296810866983829504 -776597691812550378459353857904345088 5197446847141322651948009648029696 2259512971159930086179997174726656 -970641681516158298003718908344795136 3061820607135681904075945032024064 9200113782854467676763772568993792 -175109924813184929742501046703357952 3658975176171556155160984798887936 4551677222130979923442436688314368 -656772716021839452869385423557754880 2765860190419353807295920084090880 6143915512646030076799348033716224 -401822208319961137449180904386723840 8570960983989966761077463014440960 7833325046956704451871252634664960 -314717597308276422680566078323556352 6064010780036802839409124217716736 4324439157023669234698376125087744 -738479193947167518602241344337346560 1129032212523887892268867032973312 6238895113637226239592605750919168 -47126012593301484299978943305351168 4240009630397133763727500104433664 6845392736389005060912871465025536 -788897020565027053404953599226675200 2827378995745891510670973495934976 6204315736968187608205352008417280 -189833409170865964770261980149710848 4621052387283814928746502135218176 3263570290317773780807119450144768 -48910388285911494759635834946715648 210222653477422076263281379508224 7626651720360864138846451659702272 -364116943544552656930001351667089408 3359244212915566511810692639621120 6348081869778449037067822259240960 -616231729043851023730591728769433600 5733493909691515803834824743976960 9617431523309590687363189090287616 -397113989872099054520899082513285120 4009530367115599961625834297491456 9411927944515318219062894294728704 -870008768906668160659659030569943040 5022656829352787294408231048183808 9101218680849296182350948331421696 -244007600158373883235120319796609024 7528650843644694693820029047144448 1600553508492947833036151271194624 -143183449612744956146914657851932672 9480831441308794525424830772150272 2087832977302091871342287659204608 -61365190784724998485155895092183040 1597285964027883889985966212907008 763857158420102609459360936493056 -151361947282048964069556308624277504 5477368769973897613150810867236864 6885991176548205163759485308633088 -155492270605669191711470661910134784 6081056321817649376843786092544000 9005553402157937332154154419748864 -922151519992048704563144979145293824 8713347553431894552375813201723392 9565801436251035510621779043287040 -196646429694034413400724548874141696 6122048272497776520313651278643200 9988413780574749273634377574645760 -935554159489283284071706592418988032 5164583636482945539316992958267392 8313949791614625415134993042112512 -763173228358619902964101161097887744 423659159583293298262678691643392 6974975366327036404936722842910720 -371838981478911375723727481804423168 2955585287515810162778277419155456 9735279476266598595202605364805632 -358942541409755711678891438190362624 7053761781999262706150570494787584 4878648213265749351862524654387200 -916138689238944675540381111987208192 8436870490291556728053498992656384 2557692985795119505227027425787904 -289812611759878278457551952610852864 4992246781154792366612151044931584 2008128272699932510417859073015808 -429444704470699005220638355278004224 8159168133093525285402935608475648 167643419223008457455441387978752 -773374989614492649615994366552178688 6555460182074051881390018056421376 7298347164046279314158958246100992 -181368048852532540485276891248328704 853930221177933504255282389188608 2426906142784607997684539283472384 -771716341652763092169467801230114816 6449883811576281190706584613814272 5642136365399894741516582389809152 -486597502979006054533838212341694464 1203697839974267893264559491776512 7426070326660904742362900661796864 -488636993295828384611283855055257600 3034843753678629437452559826550784 4703800145549553739181025923170304 -718901913108783860257056263021527040 1251309169948825460779154321440768 9382763695679083294165961650733056 -123597768257152205260226136660508672 6509325503675250989598524473081856 2190878822755607790997050442645504 -172815220656554305544470479136358400 4476029754077697819485634796978176 9266194257496212017929062243631104 -913054191564255362427427247913697280 4094300475241703435834227192496128 6686957229991789174188070167117824 -864880298872016482191611970623373312 5183053313785522359625108097597440 5012542280183721581145269425143808 -916721856632119377319935483437907968 887521696839871559403612823093248 2265480068097718569948641937588224 -649596616470232603802110191321743360 5928319352962809013745789289103360 4763926652629070260580795105148928 -715517245586415007346983968427737088 2753855970051055515614958019674112 603285285302373785171910107070464 -189401097454802965825284730043498496 8171303366595743394155218497175552 2549589844512020598579876159553536 -648944823203816797840139728462020608 8932599349394897410938491650441216 4381526093446397402081962512875520 -496425287790470393582923759493316608 587459253452053869018000660627456 8887395002507930845121681299603456 -599424299365180874039416617680502784 2799165418115327782229053508943872 8388739951118362136980271900131328 -597125276951830926955528940557434880 1647968778556236408651191230136320 2025009208108787274738334533943296 -37137967429971074751476034527297536 7176095016366247927693140662681600 5679591782385947393489754579271680 -238859377047481983221104907764367360 4113445973615489806231061483487232 5492859778773577500289523356008448 -371372812667082217190312407979786240 3303625666293392387442784413417472 3455285141686253459148442064388096 -110245598568549863655100065370865664 8035201707555869656418073677135872 2143856856005471946270982109396992 -925011486669099148156222791972028416 4083043640587468273628261719736320 9296296789453936077219799322591232 -998286727438820005811299362772353024 4277452277167771232042662892666880 7599380731740840129057609845047296 -461537786524739703417836054729719808 7033279330531631188628465365549056 559963583689036432068934683852800 -288691973366797504320124475347566592 975615276370182905736578534998016 9203643834019764682373327027699712 -289129057888351768026902383273443328 1887049906934116841531410546163712 2834658302049464489044528089530368 -990084870756682421776161912827936768 7895976741653176683644997427265536 6223978498079750519089750140256256 -550645010630277953155510807698604032 7420580715942170617141945337643008 5627499618081395047275588281696256 -543169087803366141435549796295245824 7700056237621601586800702175313920 2868752251651235911520071096205312 -690809214811314603376297076053770240 7684910389435161711684237547012096 5802013223010042175103438593982464 -39474114278392671850618147175399424 9428363540989390026250051341254656 8608101392035612760035112024801280 -399193280168696924960705822035279872 2995322163835203798297879236313088 4810024864040694202577328585834496 -154406801703104735278314067341606912 5947638941363547344094976771358720 287304400719862511874448390356992 -315748017438285022643037181677928448 955828942621838335244030760189952 9409076540467965525978763975720960 -810103876275155309375073960270495744 4323844695864036673594123716919296 7557208429077998839283025031725056 -296416293802969336835641879702798336 5131220533782768679952780105875456 8552814921145086658744451992649728 -464134455217324047213175698924503040 5098974507825356733891342883618816 3476278812353729284685571024748544 -286471169197540232504989837491699712 8776780448258112487954660926160896 1758230493807782234593428244529152 -744673591894696102164669595702525952 7338765700819457463797021067444224 8471404742253133888173340289400832 -380833942263725913666978700737904640 4725689679405539142293244398796800 9239322172079826471913648239411200 -64505446647411991750787875318267904 5817346496358553441322751680839680 96215038717315629421460444938240 -804179245200134547155812257661714432 5747553434668659815942151578058752 7439722886313945745266275533193216 -394427872602438209241467501699661824 1138659870201422137707042772615168 262446346685018549804073194881024 -743134073505062257199824095550636032 5777955756935239390489851436466176 1005530106888799846296101788319744 -849130994513502908856500852558397440 5785649535076902379703963616280576 2541056421816078530826980812652544 -522325479818239825065738996753104896 6391550688847959437938597291884544 1897981169908355871055053167001600 -427109520989581225218906022578487296 8739114173405608220377372063432704 1296864627342418901387178472898560 -858311269975435681628903878000902144 173223159688618067037865029664768 6124128049058275570169947768225792 -590032350320954234088490649717309440 3852604872300932129122483414499328 388888917635156690501236443578368 -501524134500908386796755874490613760 7163573206228359174546227084656640 4572062547002048766298816495222784 -605045655964569430185806443812225024 8388592819848336358876572125495296 5287678273234459082728897706459136 -655573396106258869746192618409164800 9680496986785926711387962757611520 6265799702445616814222794819633152 -161708485609875141644500637841358848 882673188615490902556209284382720 8976932490729904175072123297988608 -5031943315159268292644606283087872 3173944505246556653650759984873472 4234069196020561819569612895813632 -60683081498958549276010857338241024 2740410937210042744668108745605120 2676983412095443402840980448083968 -580407388326073450659906851031744512 3963636139597193206354671952723968 5156745210824119212425072630300672 -719809728075914079037138128382984192 410208731007159340691169220755456 4525708911675399693217502494457856 -187917875821909641091551844257234944 1010948516781435333215100162015232 4300366332574605101121915861336064 -121050116972612863823589200143319040 8495618903083614052117369258508288 4332070017481324090247324819783680 -685029725946126282641541742379139072 9638381572083007928246408361017344 3269131476440799984704938299097088 -840834377254599469274072473998983168 6929726366007761625149076884422656 846926118064139911078448388374528 -625163926638954622602690738148868096 9350591309806661878276803415506944 7536485740198560039685715675578368 -566711383096609541475904578945810432 2074410686472875698375722178445312 5668149323182956020658416713203712 -140580746795642283674226635921424384 8333258335239178185774575652962304 3076404641953821556751418664157184 -724359512760530795855373190685523968 1465048640808999309817504010862592 9846809051356356990162687720685568 -825508126393637795005915256045174784 5331475354944598907677653113765888 8540165300102411969382856192425984 -903732540085364747481558575893970944 8476292477494584762953566345232384 7833962322546186807082418549293056 -786703683889165159523230326634577920 7115553296001279431466619091550208 8729296600708313554817273064062976 -91089528383988526152782733801160704 5744843076911839523120124973285376 8320724992183682068973197285392384 -378408523799231001567536630588243968 142596533909648827625685106294784 2121150140121569516903207412957184 -416842812182712438249161934541684736 8755152830003166125939622450036736 5764810549739817268036590121254912 -500450259384266774987385484389384192 8877716862776952497434266488012800 639691510735388269348572104753152 -898582980654463011506146499404759040 7295812136666635554353934852161536 9294479749772534923212599777558528 -164960694891309691264221685781364736 3943679063742586012132259777216512 5716777342766761909653685200224256 -375913177496903082687628969286565888 9271744467912313359435421492183040 6711172099985317533628792595021824 -43976455266790837950878636922896384 9039209875446644120490379462049792 419156757574879091625919766331392 -47238023217659280131085567327731712 3557056512739089417771508180189184 3806040655384863853416092362866688 -220268668454259861778379920451305472 6869948875678260594236929238630400 8453019978542381871989175529504768 -302619776377885356929715535318351872 8040222618757113150467298471968768 5983086560847504874448946255101952 -632998009087893636750561440052543488 4286564600097920095287427672834048 2698927568127704851719341184385024 -723830424642720748364689355028037632 3008491747889521076079162923417600 5503884295341341808663886032797696 -689869578663584065087057104209969152 1417409371138059609521568790609920 5622827091089415623877629543710720 -290656601564270110286229273214713856 4305813917857233365576868673093632 9170074521636068913507873759166464 -293600962316291754271255318381985792 269247813714219358741917224402944 3623900116652808112032574139793408 -795288410096343056010302802609831936 7639405655191302670829746747604992 3698967081909102955094911639093248 -761386562494046219191163914719068160 8848135850295483047585371721302016 6847721791973020237730752636125184 -860480839720467574323635167705432064 1913708639969752426299615531237376 4660246173396125556046124871057408 -844831331120772190034356943305310208 3956318987817702498631987425705984 1384269090659742834037810972852224 -669662540906969541747947212571148288 3994209739657840619083693079658496 951787253184534041495292837101568 -244596105306114242254928522692788224 2625113594080980207905766402686976 6824477489075554230922321365827584 -840333679512183261472969295948414976 3354517484423675953820888341676032 1506511607389057367825414902251520 -131107386543545222211545009976508416 2995935722734247158113238209527808 8999682301977301875144758640246784 -895047653751621367767948429572964352 6571544830755304321959561401466880 2438250101558909268145265665114112 -451581211829623635306883454259429376 3967665682046606312007248237297664 1621907520016068398433504786907136 -108280243175845751600949250641362944 7453996508171616994516230838681600 8889362889853412091739347823362048 -468824332199291801406445443245670400 8256673916454979859058450927452160 9910162463662597866625179928494080 -826244479655997812881002447922790400 3826214720183583332543153198596096 5613368385666267609212804376035328 -210872963791993142277798611086475264 193129409591703843502341092278272 8214520091356439675536033034797056 -767905145651931277341924103846625280 5595881428552472503493394041929728 119579555569432361848422851936256 -472679320259364407683966312141291520 4838300628669340294145794126118912 4907408047995800024291207876182016 -1925106575095109461148010824073216 3070130260558825942398345995616256 9983482486403670464160690104958976 -996303194206382369797551926552821760 5305530139556134455415310559215616 6805837672975562561993649879515136 -174975067829600611359016990051139584 4818793311201793419618858611769344 9924740381216930949430308459511808 -921105909494614180453696137169207296 1472189114402691604052595489898496 6867085768290469409597808367894528 -231644660784783347653019978875011072 6442589609016363120080720507174912 4051859941663480090634979261808640 -664072584845215137195701584030334976 5096401094625380137200962840297472 8305395944893527378551197310910464 -711739827860874307226387232801685504 1487824337833521640424847655829504 941518092410948781226243171287040 -801375678025559457201365968899538944 5476824238313643175416213679374336 542670199681236601139229068623872 -984186015232517912458568723588972544 1777339844517178930027814849609728 4971589092954534153347447125966848 -739162060033700008492102180373790720 8790342451383089244917661045882880 1976913937014101882308831299502080 -644689904197600401922294845972414464 4094038541170200113991714307309568 6681126701584435547704444747513856 -795029525604440239169897675739889664 640743760118230269764661109850112 3609303853567866999636129145159680 -441800581332030257928895785127116800 9178233476295086412078409033187328 5453308373446371729535528215773184 -14357388282064114725174362473758720 5698575581713390339483242913071104 6005322461934424686880524091785216 -750412037706067045548343163803926528 2225571570086180681458947285057536 3165893066448446022524503901339648 -247713416203851100632084588743622656 8461928276137758744207788460736512 6152266772433117716339532255723520 -769927663638023910395505740550766592 7180401188040561438069066651664384 3483178419047277612457575143440384 -196497199559020675291589586437799936 6051463807098687715429116557656064 6230216547573674978144552447115264 -19089352960699600032942054736658432 5039341754000955237851747986702336 6973061212414709691955195383119872 -185755544795591554450667783365591040 6550298117123876662060116667793408 1724775496084143358443432775254016 -870185462395065686695903455925501952 9741849494033769446473073772462080 1551298235714834537421042129829888 -635521947261750437348662298699366400 2228143101237943996431932432842752 8239489721544326242349011827687424 -985277595860331479285771016121352192 3345363475298886598592618160979968 1144170191983785017525969174396928 -32669750214171095031807409609768960 5794363217266595704410171749957632 2086307536827808822326295512743936 -123436390427171460351707499699634176 7976123217696013628368560085532672 1123732420127950623253274732527616 -573799062298621415254553336806899712 2407272049002936669404558293729280 1569388644845188676440608821215232 -815432421356294371819507416752455680 2405717397801932194799449943310336 825271748260040812257907757285376 -341512983814451842001076685876756480 7455834300358199833924737188233216 9870182350253426908362492847587328 -705602621486813474692863527739195392 9150211945830034989259877165039616 7767696475213412890358815708413952 -528932783748097553339335560820424704 8062709274053249542221113008848896 8941939383670139226212763682471936 -278207797004940514893799744943947776 2085775910469072480442635949965312 9794377971079448332534800086728704 -547104497788869676289564853810495488 4179069094368253511173285789827072 3041064461552487873833350119555072 -92477654822579702908976328238694400 4674053541100023645781538327494656 8556771908854952512916110239072256 -488811138055193589007101125539659776 2114001932887438682038374353600512 2299652935299761651126549987983360 -652451977193155956983079456299024384 7741611387867793207877465775538176 3544860263519756280403698307301376 -603168612350774080767638164163526656 6513642846054612512526456491868160 4270625139278247252853423798747136 -972626380077230374557750470897565696 7055335738147452000970688975339520 9179461527330259283671988656144384 -953941634122722110585389214771183616 1434618748767616538092582060687360 9243943747191418025514800601104384 -162232798467122308073345777680777216 8300655070749891845802796154617856 7470316623361278791017323640651776 -742979108127644692293722677186658304 8413471126037294050832446555947008 272568033894701026214997259190272 -384405757181721067821548487231668224 8429464958779711461601830965870592 2913027293908001258295702795059200 -60341021631254033722307045912215552 122682710027518796466070013083648 9910945013049183875791542934306816 -15429141763045915352687229655842816 4545914715447668254653181943873536 905176464003004402916243072352256 -783698719613326209700460376132419584 298615889834689578006284567838720 7816107731531348831923938109947904 -680311188381793706216408176446668800 7364785038329506508661814745628672 7075471116273516513816342085763072 -444407089912504683068583842292957184 116876688908548210315050138730496 2045528045128699946658490149240832 -436421086908742502695755162276855808 6964652733135261111375735040245760 4801258530710873446325989232607232 -901363451353025077426099588446552064 370106127254236779272695896342528 987533755763766914723223976280064 -469665191155659285282237482602070016 3761721139275863609302934794272768 5331728935200553131740356319117312 -875931846360047030697022308235608064 1552201993809377071170761894395904 4890799302440888767030058419224576 -41377595473162019204304944609886208 4228315274935865292324092063514624 495126618206101152060616499789824 -532248762831859578353760237810352128 4439079680123972770815871390056448 7869126220862794100736041624272896 -793165851289465284612682623997706240 2726106130537089314232939214536704 8640165522203964537355359892799488 -645981619372323725161677837125550080 2272700176163756211607162568310784 9105263587777798378481085503766528 -833097236518508134579635088378560512 2275086732173777806062266999635968 2107898244448124817429262420148224 -154238729563687327589262020522803200 7811344967334092725648493188743168 4879672897530404317196842715578368 -675123061470323451958065111605706752 3465666719809619894157862821167104 57616083686217939982089174646784 -791392686609785966754066227093569536 7362835611682058974569536669351936 2540700087445375482573878424764416 -987235812680308701256465504597442560 8137600225792826356925554770313216 9949419195086619061842816886898688 -341331187668493063046470840698798080 3041282330082479482135218000756736 3500630786565495698250136601755648 -331796529047306201079304082191024128 2991279227942851369310257711939584 5318075555873649584642866611748864 -688234654082435525507683704417288192 1637652373139083763040226816032768 1774393295670851252250308637622272 -857249604044058967431653631994101760 5295242874192243921674505755295744 9505381647570925833905494575546368 -686571237615485223244597464555061248 7593413449118154045905481383280640 3893159027345205346007885157498880 -612410627524819683633149393919541248 5222884320231909897169442969747456 9135782932531338701400816826187776 -865799050810030660842732746864328704 191323213583539122940566136946688 3388004020017914173525772820545536 -930522294094871542347503111409500160 3272727619735546867470890015129600 21732223582805812257466078986240 -596156878551068160099031672418205696 8196814611805010210984515139010560 7642257446026499819747328852492288 -479556733959289097702188265615917056 3576400046560918340062330641973248 4317862613681967476839177143713792 -657290294084344638069944813352910848 6142874702536246251281665738407936 1271199763677737198100016760094720 -49760814468126387350478790433177600 7776779406232570124362600134213632 9034349574893887477856548088184832 -528315707733821050987014953348628480 6402902629912027498372997228527616 4566491973921024065981946118799360 -763527202524809697290385506403614720 9868930855752434160055554318270464 39799361118386740547508718534656 -482034328440188622125803686638649344 9627296690653355165186405276057600 8837498665624607752865030636306432 -548088921408167847154960494581776384 1082860703321152515524707492036608 7807762536805074458662732191236096 -574143695430490587608850780173369344 380062472749390233678976932380672 2274223730089200600786773332721664 -444606988447601648706150217468084224 9830928808692898443084830959730688 2940914982139980195623598836154368 -169685946245391621212424651245879296 9750860421419230729979743747178496 4297476900418852102984020407615488 -791298575177908196560360553322643456 9840532582309574130141008672849920 391312353599692851261376080904192 -449583898460102166110827498868572160 872139772731349117574612116307968 9486286103271804997452317744693248 -811709131366510283653279078340886528 1933079746618794381299737851592704 3524504088015176253116045447921664 -949616644657504438583159267031777280 7802667305431710504014670559444992 9782334658780185185072141018595328 -733123807972265176898240784780754944 8374156671561437394799675349925888 1017714597512288038336150800171008 -494403697131323596770164578839429120 551057188060549926711384812290048 6420925368769456784515175947436032 -261879113221251367643582533883396096 1359809424059410971844128813350912 5495347550748214510770917461721088 -776593731778108243634226869215166464 8700920102151650144877956109959168 1960283648356062354679386597228544 -190828250512358204575119699106332672 8097120780760931927229785540919296 8140811302974332416286629960876032 -902223041592974481555383175608270848 880927076535567971131825972051968 6471220533682333360476935189168128 -130338647601123039132889611233132544 3154602612376649706766721607532544 8050639389784904092282500006543360 -526254528571579704381920659839647744 6393412850184410498298874605600768 6251254168615235104905997517324288 -779912024959093896508656612066459648 7766872750744700446091511957815296 4145032361206430311901179620098048 -808676107962934429454459462978895872 5468468029491300700377102124318720 8611242950784495951995478531375104 -578557794570560171693162808702140416 8591335804429265728221216969326592 9823036149249844330807802210549760 -162445665138385767124273766225412096 5488529974740147551632875205951488 1676478534507590827329801905242112 -182815771287516266323637723088289792 1528153019688642761360641896742912 4760458871344962920856338412077056 -524877859892826069444260777890414592 5221422043038550513326706999164928 1542699998024609770949401196363776 -634303912317696996885820249577881600 175232019409079267099376357474304 8826799789806098833339255323885568 -798085732584527084042888125538631680 1592832386254726289962328788041728 5988811679516203159902231749197824 -82559495326837307746514003860389888 4198510637424938302284396685688832 8311156910374290615497494049587200 -738616547364317207089443296677724160 8286925848518785992851853703905280 2031910970075168291140557734936576 -716851662172208283945201554052612096 3414387861477534172318032042393600 1743018664002707695709116191211520 -148138832255851854252785663203082240 95201271851767327647511902945280 3698155198919345785332870554845184 -148637163765836781530995071335268352 2343127314422399579369178753138688 1506358764113537503425044670316544 -797158234166800970683230444180209664 4849635806846902408211111711080448 2215545695396967085340470125002752 -198008338468614646626108310829400064 1669239130651605942503036692725760 9596609959423265030371035930689536 -725495290910509944460266726737575936 5770209217142640385640709694160896 4923229301233697601941002472390656 -212256328625382841703284838332628992 4914345541606820309252370337890304 1023063318549469529953914727694336 -612342736982156208097786132829306880 8974868184502692042007387735851008 5133253848588619130366770425102336 -962049982047354160787660910557659136 5023525592593440612887803444854784 2575667973397095321337098592583680 -305808036440917886625319969026473984 8734623844659212593821226595516416 5559578889023081848396320497205248 -123334519342950001019569826365964288 8635380020651526337870419453804544 1545838535728631591548002464956416 -577418196087039849172297471156551680 3718390792151890660515825139580928 4984283663781216978491080792080384 -901692401698721869803117555608453120 4323757728352951917265343960055808 1559894812534460675687795042287616 -546302355529321356203479900316762112 2313581898499463891812909657882624 3778292593513123461877606402490368 -139934388509511834761856988712271872 8897327097073055848440389359894528 6788916704689626685018226661785600 -605341252368340448120358703177138176 1063523648975687064248491601559552 8301951531901153782550275685351424 -577664723252494291711514759502233600 9019010334785725269790816332677120 9252902749466065160856802074558464 -789884588687710994401109923581657088 370271201848971325633035040194560 1133430509556515938220224213417984 -616694700912150901205029858752593920 4793274445915313111080447988727808 2873858751874823382343905817133056 -739229787560074820057818793122988032 4656100085839737312518800169500672 703981284277549531163444841021440 -912359473294990733800686183530889216 3235327127382292736442979395305472 6068326951135199910129799184515072 -624809289222902755514158588710879232 4176460694023414057128257482915840 4120780514561425047217960394948608 -220952132000085386483212601645858816 4791836745079594816771881940549632 7845234019724239768076916533231616 -263375544666815485087529545957900288 1305863281811124093997088361152512 6622533365567225304041184642990080 -89718582527604648969458401708867584 6351549643353530595337532151431168 6751400043255806254962194843172864 -868074708995468014735697287455965184 6488424948462783948192219605762048 2722976206059385645891674898956288 -266601407928304347962677349956190208 7940554278993285801194564769284096 6860163375091156673478524307243008 -706835643456958358673289692886073344 7416951234163508057422123939921920 5906886862830257719605026982199296 -705282246324516773042132012664619008 2872426655586200714004565801828352 4760654189808868075272253493739520 -745642750771040752273226094436417536 1432756013354221635580420270587904 1783813449507447212826654303846400 -935686552549520505753109950724308992 7763505440925434417032063155699712 2829899968065927991616717472137216 -890597092511533949105116373795733504 9041924892147832159941354588209152 4916036085907742197874095395176448 -712739163665540614458035263569395712 4144983124003836449065953205944320 594505544715760398788873045409792 -239762974193232637167573462635511808 8056472481775815320575482284474368 9414844817464594920244129122222080 -351793652944610833743757189014618112 1930017401821880464009929433284608 6306826658741071672253393458429952 -29680156042351792705507615014125568 7747250432425138430447120709320704 4590204855063727855974100456439808 -905022587242808808002203057729306624 9709871299838256254929193563848704 3064368432358445011174085474910208 -637316864587541885476891516278407168 4661149369623376560139198053482496 9140642559257774211324047672737792 -176044551228803321190509304812142592 4622071058690650507853960994357248 2698156516321997414039093126365184 -434084139404369894203522361820446720 947050258148763646076584728723456 8503978519738664083733954747695104 -912098637388671738701925419101192192 8226452631914455822592884158234624 5605629530363524541625243638169600 -770970449069567394749701687697473536 6131685693159716948096001157103616 2359382375125686563702478783643648 -422099536902152381264102993290067968 8276667060143280125707964798468096 8267199896498594676698339445047296 -874358987218652827778211000656855040 5543251961220417656576119110893568 8288873816846797009545744414146560 -485855170022147235348651060628553728 6157048434715046101703620581916672 51411116317856009788004738531328 -899357116081741304965914752383451136 6835947736022558727651985608146944 8245327104006238221374031151497216 -679128892017342086327246169541967872 9217614943927824767122568216838144 5626631370609865390532974237188096 -796165392700116682334785487109095424 6183079690482335746925064391491584 4707476076873214603460548658987008 -648932168375257668164624802084028416 5392712879810893088233650493849600 3199637640140059356471072019972096 -930286123771184957572178396661678080 2229882392995837598160955753103360 5031983259924903623468467294830592 -396641548468867197128971416927993856 7802217527125972955060337658298368 8748145051936869563792288137609216 -176089045948143615609759342889271296 7885674234686649100276202823745536 2376338657588298066089433330876416 -442329794740831309974280260233986048 1471440471472141119472188832874496 3565087997182999297423381698183168 -50117037245906971119585162453581824 5758729937897153171262480031154176 3246550747877277787518921932275712 -87769057901996209264118664429305856 9395027447800922009655344562700288 6723300942999105918603016223588352 -811557416303157153178240393817358336 5113852679254678572402787265544192 8676259506435490049014821206097920 -352858446964004329094806753521958912 2724250318247510291046178930819072 7146944916234170118929891857530880 -433168797266569567666762683942699008 7658651253504145450012067439312896 9183186771030597837933552431267840 -869163148650035205292439769899335680 6624993156403926386246774176088064 838649835409228056387991891869696 -147095437554853388400011698839224320 7998892099055119692899451255390208 6505223051826772547851534829879296 -86337270825042538463333344853622784 6990133091329156311501533855350784 4992438593484827063557280254394368 -505876638844845340136471107775496192 1451077690562333294830083257663488 1827200400605282167969998738292736 -812369400905666967994526987475484672 6429177320663644089985871743287296 4547442413996571983081315445506048 -824387352134731238297984726443491328 5909124597467754433558633861087232 1890794317443124297748840791932928 -608530340847659306561871407770238976 3130553828597425195267864370610176 1850792094562904702577711576514560 -814605546343540912296887841776992256 7159786011969617364540949505507328 5633361463337722202223021473660928 -205053498900834352022403597341818880 6463737642639029378588877080494080 9277271248676446041354847203098624 -531586208030882397959075828806451200 7491450635656866217051482404945920 3365206492851791507359003616215040 -172659196226376453578928422794559488 1996109100819882816827005262102528 5069728283559047038248406761865216 -877831753053373805250089162926718976 8988512812464760653897268375584768 4101687533845862389034892725846016 -691527721176661491810460355734274048 1707228625464938420149487996502016 1752103877671774172620548818862080 -975800245213708955974296442723368960 4696573944794999820529923948281856 4059131459071208218721210041630720 -970689469489939703347405026513387520 7885446443510856375177211912650752 6721134783765904742090786690039808 -195423516438747271075988822068035584 1016672496453485529024015313666048 6522890357422256260640507158331392 -742340487413797508807561769822191616 7657841736047407708219988286373888 1261522922604803027431425788870656 -213585545937767361719795048779874304 3596296674670526894536788679852032 8837551614564644595970373647859712 -264561708284936656222707689120071680 4189361720130534205584985773047808 5656839898748825460466956973899776 -944468509722178301215828398921744384 4309259907388881879746088932474880 5109891577601470836914305516961792 -563956327416231797083008098545696768 2039912945992445604260846346698752 8301669052532241067428102650462208 -232705686926362288433509030388826112 2675982926557822648254146071756800 4231292402236216099493545922002944 -498721377337374970660361734369312768 6965735582495003744168102126944256 2773806647708210086908325651283968 -403539252754290464095969150542807040 8061993470703756737202139244265472 3000139349105785058664232207253504 -955201249164655425686697545230712832 4593327959219401618159252476526592 9317549494420304395382674178441216 -359407046649253203339150050918924288 2914417397044834140201550855798784 9829924964473149564754545556324352 -167783372592319644102045095679754240 1253155354340101646160232917762048 674525496146217603934051459137536 -847426245915323844337235090842058752 3047401163427468994183580635627520 3190610806482881502897843390644224 -191785411824794990524254974906466304 8595548972763583996025303868637184 5584196954295448615204071407616000 -500617665818750844102289089559003136 4708262502315249285125875456540672 2763935191229592656957706034216960 -208942896425453957982923265289486336 231875970220394979531288150540288 3190599290431540956509404770861056 -898128284172640834486980978036178944 6177786501887426361826420801404928 723519055874453392797728952549376 -668005295200495196240671387240366080 9752945888462349461624923889860608 7597053955754325512536803715842048 -711610391592342022716532739966763008 746094790908752944117821837672448 2814454289733274107500311460446208 -597575753927333694562025803056414720 2288609827604472340500897398259712 1029004439117999001937859491921920 -573233191728490822185489394934218752 8337008235127857026179040706297856 7153653336877621183730394192674816 -795774001506887549198299031035445248 6948670803232030432210497946255360 5582042093144374887825038540537856 -994047128231031907240505876183777280 7463282786042613752598915979411456 2560426364893181238613840578478080 -524302256320551449509787760899129344 815122915004333848543808154763264 8346363672271330018395815055196160 -550613232694990352872494340763549696 2642122237592834358810882571501568 7135881390618548257532384389365760 -222512806796282719194701135014264832 8423316322160592689297510916685824 4804606111854180484924805740494848 -838868672979125612486493528735612928 1130487971851742871553559609999360 2302944038398070577363413633073152 -168546642969169939553853729486667776 8827492238677709111761119389679616 7300560813519967154516085190950912 -351849318961708181803557702713999360 2678065277463317799210385504468992 6227688893070125373992968290041856 -123740393638298568380638182600867840 844749399143760675698565783224320 6803345569088367690636428801212416 -307535067973929313329095529937764352 9388770670489169578603632037724160 2909717156034714200920813922680832 -817494904633263360610617618092523520 9419408833842357858180499037487104 5103707370447318949635261542170624 -67984839781256607592291052382322688 8135906223060403953918057214115840 5206822571619649507941192531181568 -303127657013409025387655809504116736 2365298687553509334733893620727808 5490371372809977274379755023499264 -76901844858798920887699426097758208 4142151823210640942618568258748416 7165793232376619756947464886681600 -703387054621198882968079451763507200 6790944152485200890071128997888000 9740636402219374622935261152018432 -246694706710474092322604854005465088 6892897267374729593819439288025088 1651839796560736383582704815308800 -776781048480170058827293403440480256 1389413135506924463662843792719872 1754489245534566226984626938707968 -734169607096188219443348555729731584 8343357091699753242582734675640320 1249464554387798988572379861483520 -138197458663255879412154137917259776 9632619168201481367935314372329472 7863707766476189794643730570936320 -896627745016646631602868868360437760 1445039600006221779530453943844864 789684405718884486847293701488640 -945674782809200551774118960420618240 8347816871068042275434811195654144 9423225983327597504979183817719808 -587245138537503724342954964547534848 9637431054433904501190409116975104 5705217885652101810710336537362432 -259188127300383285852314071289823232 3059409741887812903097440145506304 8609560172408328390105629460529152 -242241997919590992949250811945287680 6263598757170500789727389716316160 8253034874243073804261708349308928 -104310286929578308558396875861917696 8382752769396881323780966954565632 5956081687863373816624062744494080 -720407890310007066616111591810138112 2751490006884824130872725322334208 5517020200066077694925734693306368 -478183568166457867403792332919668736 7199856422340099575761453006716928 5964242280421899419844038212190208 -274592558680139828400325729942765568 7064414160726392504683432884830208 8328031538177828435175609345245184 -244246829569888005400118989533741056 7181066483157121808020978568003584 2836476442338371934461532699623424 -998692237061484959557733543386808320 5230562617278841705693885103079424 7039853480712608201961090161049600 -527316579570760371519300034581495808 404278960723750909662164072529920 493092898141939154821674029809664 -981281211243504150564526620168683520 5025919843854758949738084179116032 9897940643332317480470404321509376 -774468930954722695409311830281027584 3666232081308997961889444792369152 9965123379739392058426157913079808 -691528484412251052542069991333167104 242332054200779870839796651786240 8200768744236234487458283302944768 -288512984186420968458242958955642880 4866577750263847284383495810449408 2369553845987203518214128583835648 -333593766295272490291966731840651264 5213780196112529413791951102148608 9101307418293581543529266435588096 -827514365819205337461646836214267904 7897790175451329801392318897455104 6463100193574300871798336906067968 -588782048087810789766042421150351360 4559081926259938593627499988516864 2071694246788979357233957224579072 -866697264661091118958678338028175360 1266127911357547359963521266745344 7730221559886251460871650585608192 -896294422883435695159205972326481920 6885436184950148948909634569109504 864426505405818098427410220318720 -310123167308064484474671908901617664 6878511994189930867844952210014208 7885230767038639772648188613230592 -368549921804451742798056918811148288 3551079683497011056668883906723840 7879932778308429681369971282673664 -354708500018172782687475064023023616 5059141748312033679381238923657216 4770954744209710748704617638395904 -884396821610576133106996794210910208 6186438330215678409438406532661248 8104371121934700740904573531586560 -19663568992564656627249772297715712 6988798456221950928834517970976768 3222463581330134309892051936739328 -333088887846902512967588550113492992 337550882588411261433257150906368 873536940182928100167913461252096 -547036502350335590865228127514132480 1971029633732035747354148434083840 7075738553538539266438177478410240 -922177479564186544287581670721191936 2060642964858211671388419327524864 4685419994685005636931387578646528 -994281849219074755322487570411028480 9788649472205746077678396002795520 6012064600296600382586907489468416 -447269812494997549991992336473653248 7785142383173946319662695669825536 2209838544628268797770310250135552 -353166971628508736587713388629458944 1065884018356261610542460502540288 3619381017774732047398960801775616 -449912620769073157419114064301260800 290629470186224606591501224378368 2673000725897551439761918134321152 -598634996115732827579852355830546432 4047827857153388111136475198783488 1975877632292118034021084112617472 -699110896087673213115930806302277632 5744450823607399261141531392737280 6149504715243723883445082814152704 -525748332818316668383026669911277568 7682401206391086625191637135917056 3638248944373305733871768677908480 -625851123562500172229741619129090048 3179977666686090274479942053920768 3601786635392165464291579504099328 -674789964308894891518720098353283072 4233580038745383890877938856361984 5412495375892927325697285933760512 -912370780618833090246489151132139520 4810113206988106444163686586122240 5569392263289721219490452514799616 -646770197111480017878531061944680448 9034542707404842485710544852484096 576067890372790999338351018901504 -155357275911059799730655059737837568 7889021553366773790100900471111680 6774226061224163651930800707862528 -375377478800274613004490514309840896 7980114547800341201636658587369472 3597999703596606003060420785471488 -278969996053673050528531983196225536 1660229735311452919719173810028544 8294376404988721492850117311463424 -7524690743122916866540817843486720 6343950899500031124423136004538368 9447677993065774999473007255093248 -327640624929205568715553098851942400 1073269627798222055737068445761536 6077469946163921163580163728867328 -574225106943296885832678068065402880 8086202426140626305466305194491904 2937596361469865987486898324504576 -397057932497050755968094456418140160 7028684209169278348586584939429888 2243456223785918124272417018740736 -631417504994728899708509478648283136 2672888997792139790107503503605760 6120823102764747314887744242581504 -13155378556546138223148925540368384 7098301937429586181878856367996928 6976578838710883471282420727152640 -488304981102295971536671906289680384 2579354447541667283103060154384384 366257206511131975832881944592384 -671829928745788115516714530631581696 6612431305679930450759789888667648 8796718173067365264660117831286784 -580729791428449482299381078074327040 3973606587698334972226226104565760 723038034445612473436939170611200 -945749871890208612988577624562335744 8753170282841016588609468948807680 4947168898968189914092125160472576 -665268999029230344655322139206877184 2331516877799650905758429886808064 896271810680013762312371596951552 -333394822992133145405827028319469568 7285896537868222814393539676340224 8879630189306392037688436917796864 -836676055683667958135867601735122944 8992866967177591083995840783581184 5558964444433333153051311431745536 -580193923890581098528679461128241152 5199805709051878077475430607093760 2709886756984473499861206144385024 -699040960274753511777487472786669568 7095267913012074714568854241017856 9887176277089004095501838510456832 -77960748594586370999068633621069824 9621650053646499461621239401938944 3726207338518534913171287787438080 -646119626684244768645933911636967424 8851895104857841427772616227160064 3519134284388583410863798166224896 -360582247381354443617532414435262464 6287384134744931939015912119599104 8787641101349460800405683801423872 -811600249905237194110187197991747584 1163041259295271856989541138169856 9958230660832931682502333914152960 -457752979339553821563940462431043584 989601158209923381605410946416640 4324740348792360088290222686601216 -734158407428223855218164278986014720 620861619954242903169691339980800 1230203983040326079516738343403520 -695229020823580814353406201646022656 2952033119170438450575157873344512 549010008536601707519001684344832 -947419366657381107536933421290881024 8209430114527265749401857328939008 5468138967095487690746120063942656 -612175582349398614171262159096381440 6079134277655903924228040507260928 8892725193777819223932604191342592 -328893176383811841829499756452249600 1534227178078447060856996754358272 4715044435666612596438970748895232 -95790434507740812117641949679190016 3881355465920527445997886327750656 1527885048184029472183129900843008 -3486911124764683014245826410053632 439105950889092751208108313804800 2968057676214422131602261148696576 -206067822341464003769731593631956992 7965480390088902350596308448837632 6829761797324352357213610839113728 -396611558016898687788453879970004992 6705579511077795474829765263753216 1594595319528975059940344424562688 -96385443653489526243501506209775616 591356395121568368652756514242560 5213254568797761817469477676122112 -188493036510897632655204189130981376 3177504520795591378943496406695936 1147446751881065581534633862889472 -755044557803466307124517188833116160 3236624098197852899255738710360064 7746619062235076712904993420607488 -776700828981265519575376104947449856 3681405414782927332803611881111552 1707496492563565102144266396762112 -755180600205869786916125726956584960 3659647851873238768064091966668800 8778917316933895348112052113637376 -420466392904303997182769542897598464 2448062293783145399511178394206208 6959314811277347774462038307241984 -398801260690895996145272345069617152 6685395468377870586860632226660352 9321308597030297081336230414647296 -685474893232334771540114723515138048 6555883953330414257664644406575104 1947068967221984598731660443254784 -177977004917958285515189891150905344 2471856237037514461084578469642240 6473844990803044436151696279732224 -564226238289911468215452291968270336 6125120533835663236425142641885184 7645600778140360911914889027518464 -323155381867464354452496377091981312 6861077436514520497108644926586880 6535901719332195485610302576263168 -552488732202493863641266579975438336 7462505859517601405799071620268032 968554659874661831568689526210560 -959905713229804892881032964225368064 2739877537865694233020576158449664 86799058736081499899180334710784 -583742614732487413083943830755999744 2784472901914877882892423845117952 5989514058742639760115213342343168 -452925545133906261499581115398094848 4538496052956063707797578324115456 3210263021721122616072596474560512 -619439959179819714672921686914891776 2969589233952512326949350699696128 8522555952394240173165772414124032 -366921242214630012725407598795292672 1404003018864876945645200977428480 3225208387491601545394063715336192 -230110653130966368874388195129688064 6848163105952394916668606783684608 8280612967740231051540916028309504 -923100357922811579826468254941970432 4470721167271170897524148710408192 5327583346547024038526973013655552 -176897033561045131205794522942406656 7474241614135040033377111657938944 1028186707588428714638558703386624 -616827097037332064459680799873040384 6599841424667416848319968907886592 9495318169950297033879764737196032 -399835241827245313082097612745605120 794895994910125922433927970029568 4073544721102968654426248493137920 -889538345501888395994819752322138112 6844772705722624443883216948953088 4006566553427493316407960446959616 -559463138530729751738225528024334336 9858128020805680635443079645495296 6731066982737017505513732952817664 -169149503633226669071742742156017664 5169998090489431571861227349999616 7368695049963810744324722610143232 -910668916282031247611549703357857792 7414729714359078130228882806145024 2527125903599977505862366223400960 -862638408371452651720502130010750976 850986820753545193268851293290496 5221832004832222295171651229188096 -609990735746315100622852819741835264 7329022586432802347629040233349120 9653283412656386792798943493226496 -454034860252971474542690877428465664 2257493507258323881574965081800704 572637292947934514302700650233856 -293626975258964489113360768023134208 3569621708331361683414765822541824 1604669069798307115454023579205632 -555309723176043763866006696467890176 5211784078979782260172291120824320 5272519274149582697949641245196288 -486355164799527971234689373656055808 880900592106210214373785967001600 4601830949308863697385971395854336 -328190217548683230439279865620332544 8756084271435734599944182691790848 4225543915275782917395220753547264 -992595609548026648288344057000755200 1990169621203274887904280354750464 9789607370439969441842581284585472 -845147034233436757486423805679108096 9894041064008110281826890057515008 2158562305135144969784785501159424 -445851389357108697582225906370347008 2240647908997236995603725687980032 6902373848657529844258310797131776 -87991295967663635757443587386638336 4870323792567537697809063833763840 5998538838480561120248126414782464 -184269850044520636460684757874769920 5525747697823287049733303514955776 7048037618090528724162823453671424 -136503042981585160831914007704109056 4067873160787980711089668783865856 3880564987895381187193116070772736 -88012949542856516936463898741047296 3079948674452856115508465876598784 8461946566412961328832651146035200 -296362844962311775091827003860451328 3474155561194926010172402508496896 7897240154411405420622567660584960 -928996775599024668129927791336488960 6693881483716436752291696195141632 8726558639444168247731394248179712 -422849534740706529377252092715991040 6804668812468898669199605115125760 7424096130261892161437469859905536 -254361478875581199412329057672495104 8281546375552335652608332097650688 4095811027168666597591904323371008 -948767192882623704073046237319790592 4637394272703056822839402291003392 2508399274993680069135194837221376 -69960678686723808086435830561767424 757669477416397491963546254180352 5268545492873095168859458322300928 -5333451167788737661260044718571520 355614689069568234118556038463488 7920605969921565681550007566598144 -296840699105509008692894638318551040 5418496743103505842790643307380736 7090373659905118138193892108926976 -433199519214040490422192768943128576 6529318879146614994168953362710528 6316810334518933544256869998002176 -153503817661884333402796033092616192 5672660161890028789561358668529664 1374058114899922470485666572533760 -922946549898941834689649515385847808 9766405539678475718983479428382720 5809903524629102640865252212736000 -481856926001544595567411411057377280 272212721905007508216263913504768 6559408590290127453228868655120384 -462468410430734625153932826320568320 485083371216708110561694214782976 6449092186845460772572321061797888 -141089069094708169764241450815455232 9636566004534894508764021550743552 586940084090771880437833181167616 -740998679218223532249007803951218688 6958151776339406475649805419806720 5202328230283487042336622479671296 -212378755591931033754775001424199680 6857535557684118281198748563406848 4334750218908695078139957709111296 -758140316026545937383807802304102400 7616192048967700500026183605288960 4468288204761906725053944190468096 -327571335501166385931609057433485312 9483964029119426456835516507619328 465473922861936839751771508178944 -260613022696193364498178841180635136 9456368571031116122091362807971840 5909879377580788140807489555791872 -886197897742005068809411400606679040 2907216870203016037580089191301120 9696489302901087712574409828990976 -10297654666135140568334752645382144 3165372228507539480169513524133888 8768943514651253430689418786635776 -288299734292552663026573597762125824 2491950662707275529169302636724224 4299803562842141958814575089418240 -253069711100454697436027776944570368 1465184134755430252392876945178624 3397025066495513248964387912286208 -169053814044575132704574009111478272 5885921239317564648904503974690816 7806832473861245611290837173403648 -663166537271219583638183472860758016 3058073086593877743993133402685440 7280962500533514815859442520686592 -473542631296740321245064048215588864 7056795155561545870148429135478784 7815147377171967190968968849391616 -116675470469812139194829600679002112 4851714028391004691401786343292928 8787139239875712208773792527286272 -458374487556574525895147411719847936 5569862084937596870035417189056512 8884757422116485694036979113525248 -491723208828192646167784850112643072 5067929894917190259768986880180224 8523907835476961164771643587821568 -759493060583131935921816682138435584 1534496583327207727476636966191104 4586996780456619463690209921597440 -839778001692464176871608812384026624 529013716426362722596759038590976 1921182044305684656435172185473024 -725565870348302818915052274118033408 3587002147389969375239284365197312 4316882237503327615178509796769792 -480778049737749653833811783596376064 1674130987545425921206713810157568 7737855786735058492236540197994496 -944563961148881602368321579785388032 1435239341301289261239635462324224 969580022622248110928754114560000 -923202637390224953413643550089805824 7397866381585255041848124893036544 7267134199140161954767096592203776 -200457103220973059956135128203264000 9806689809041592534989503994003456 4869989087235485246361657401147392 -59197261922092162028728814770585600 7879210415651876370455480728813568 4231390657067990382125688563957760 -945603868609195009965018786327166976 2143571429317568738420335107375104 3162121876762583107018344611446784 -449019648216990446901802083706470400 8263036986143680825295066489683968 9854645690215718200782052745281536 -427261846397457170093017780944109568 1334121677192002593329819605270528 3634840045056358885635296663175168 -730247476853935846998708453887705088 1956725461048045532347353129811968 1930312533186369962020200601616384 -364793233857297297008518174888427520 8154200413376824330435068749152256 1889953311266367798157400143298560 -226684971534859423982940080419373056 8059793484845216926869675504041984 612324244424565756202534167379968 -452777733204321161339140525099319296 5055072077736793601471884503810048 3694588131265216839502354515492864 -308927708356006897766478025379020800 1429564667901091031510706630426624 5968064604620633357312391383089152 -489321475409109007055013350008160256 1634291958815928584979943417446400 8533903311292223506979602080727040 -200755121987717931010800320556040192 1654249252639749452918349849690112 9796631602831422310125943161618432 -101651315870618727576320009828302848 5703531096134379781824833933803520 6677585343179769480689661950033920 -176228279469125237022892753483202560 1800964606786510164282036314963968 6807686864597847892803751814103040 -146053551080048411255260332911755264 357674515932480460810505934602240 8749567856516242765848544672743424 -888853771987839139392219049696952320 431259731677809807446649337806848 1222204822408348344191894379560960 -162525409243785146349316163325919232 8880342874914063222078410953064448 4319123029970626864715002806272000 -385292639173806926565245002272735232 8214455861200538165338253402570752 4669609595881782379528054334554112 -398920204091574677364124003298443264 9079009324103753932299464477769728 8911117067901483046996089327583232 -265451634794680907808267498535518208 1807208710579806796251845474910208 1478055271652897949465118655905792 -153094107548016821317550344702525440 8172658381234137223516514768912384 413173999962290433989937494753280 -874656894189508374860372631741267968 1700119863217091909279035938570240 2455199709547034293472255287492608 -977654710685373376132636802228944896 4706048630215736436816103648264192 9234655547434853815427384236572672 -469712160533440384358309712850059264 3520275648846318732108802081947648 610428082987532000112875487100928 -528445668931318027835320233688563712 890882428881615107665221163941888 6267043876273506404624651696209920 -953303342041200744324715896224350208 651151535632482900744149823127552 2889331332260785054828988112830464 -794753176667997422888559540831256576 3041035046670404568115417331007488 1673615236778290420840170577199104 -175347471942186502906278102708518912 6904971560333913618799248300572672 998829800568808071669371161804800 -756620158745329019751972923315847168 767429403840139428486513105567744 2600818794867607789704609253031936 -658381800336630718967750144726925312 7250437308688374900376727151706112 3603569788536210052353935850602496 -308832162768527358762539526677069824 8597253186784478197421866091544576 3635109668274332937740554980032512 -899549283334701781369218486859988992 4969610455580365193666052845731840 1488788359436377874822185061711872 -310818654942805708429290383874195456 4687879110091186970025565261660160 9163544381741195286445678672216064 -985696850654790505640046996534329344 9768736475706501237662301896572928 7939122365337148014402869168963584 -684939901030881093845365712217964544 3323255927065367599234265192071168 5729400490141520079736400521461760 -12375573982369045612069256989507584 7047925329722025314174078170431488 2334153973102086970734111438667776 -517988607649947480662862675325222912 4062373831578809655043416228102144 9433174876115958399756828678291456 -124378647834262847225336421163204608 6397986099963604739716034938798080 6237852439949693701333237597470720 -157796518833019023352066050392850432 1556617199576053916126596493737984 952101780088345623274327348609024 -832370085039180748826536379806646272 3270219971789192471306559828262912 617290932603017730371821450035200 -79531396544751539507816182902161408 2324151753743079759991051963596800 6100861185333286339567234523856896 -269602219868396801953317950484119552 3694522025321915745219531889442816 8662576759772887471397124115005440 -687346516131078013297677144508334080 332381604423534010656697937297408 6464249062941821119514621302013952 -329057138517987344714259212955287552 6991560820368495785561210876854272 3797019186782690953514923340070912 -12768365745913728270348832556974080 6885135208098258474737190676987904 1415060172462534516931486677991424 -458697571848861611576743389944610816 2608428829094207775375950658666496 3675482928387678157269994051731456 -493096115454082865972336290439364608 8778993565096411002230307955933184 2196293353540378861162296147705856 -182884277694717542282293393838047232 9336484176369193378015420205760512 1290734620239967073683901689888768 -330687664016482520797265971313115136 8558071005711444313705426576211968 7688978300838642566338401221476352 -966587511541385583288083784214249472 2448079182598516681026423421403136 6519512882412683995268672705789952 -464114236712541247510133829485461504 6145491723816427909656520888942592 4955942242961550086580463418212352 -881719134143140095853168439926456320 593535132624476602341297517232128 5531796695017068206483394040692736 -870185137437555896509200036515545088 1608088250921196813837843520552960 173377412132994547628238474051584 -801843402448906542802455699019268096 3752419361839674848549760541917184 4083076051939122657830195989315584 -433202520021190379709467806318723072 2032031992942242124913895129743360 3836820712330150088162780953706496 -658709109350316009779513234666029056 9235545336405312549676729900204032 8412775261623949281456857148293120 -678207743936425994487561327537553408 13255659614882813576136582234112 6769375575858809377536271787753472 -143195174514610110783550236525592576 2264955042487597826491656028815360 267082963900498444609697345437696 -708050072464418112528210968149229568 2660525454292594306065688977997824 761350084550692487792479453577216 -521233306481016456173545578970480640 9032106111384632454413629947641856 2522719366315025987512579265658880 -180552451413410398764515722507845632 2998600501374710892726017148846080 3199976740349100318754753700954112 -643843226573147114755154737960583168 5842450369381209319507748062232576 3301059236129252772736552537161728 -4581068996494683571532043447697408 515970594019995831470104002953216 2944448654450587673750723182460928 -751174106104052963264952276753580032 863462830753453302497692878897152 8272519478930727149074655192547328 -960389555652459744709203034894237696 6228308509320956795093311069093888 6724913750137960483619408051175424 -530149127214807616205393228080349184 6086265586917424171148606080811008 7249331253750705023228108565643264 -111193545677920298927753352276082688 3528554498137199609407762037997568 169111110621954101301704858271744 -379986886776423356589031558511329280 8387261785967762490086012978462720 1620183488331276127077804151930880 -477992551671962391845056884808613888 3311072362125926742626311707033600 9725044811444042535198633215655936 -348224744368053214505272533923659776 6707245311650654405088120099831808 9093364112479075907391894509846528 -90783762689869948607876225285750784 8909424148910301271053875273531392 4387613264596121428290837088829440 -8951877385964521325846577413095424 976975774283422395382854894747648 5266994429084868685161372126806016 -346215197117875121429389033695346688 1804193510677086144279373422788608 1146049455448208545959330558509056 -605719276862497159173252159612387328 5545265361665408634842231919869952 3484979950006246304443758511390720 -877603299441654638948192723100762112 8749342656551710076811761357422592 4582323343198644988345589637840896 -805640445969820535709008358186942464 8180512831384518521244905019277312 9062499114314263010729157105549312 -270930596039524918342008838098518016 4173263526053974441603699704856576 4082679873428649678832597282586624 -461234815536428838604516482279800832 1672794163432857385911564172787712 7740276502507057500701192773173248 -206779767808128487927546846342283264 1213536794509094684265808157212672 9351747289587093932872408187797504 -352514307935821125108473069345701888 1682769973536591099388962495528960 7306510855876163410184105164275712 -339115453951514370758970949591105536 9776732983766986759250113235779584 3506098429004111552039889645076480 -661557135669068957817395896834326528 1485780833262075813742212536074240 1827408501494254818539161115426816 -236697766316376522564040104286879744 7173133910505041102906574352941056 7407812440617854816273565661265920 -289119999946231797500835431765245952 164320549523447077908385898692608 9067471488318719801628569576144896 -636122193566465216833133194906697728 6146955310429270834499795239829504 2170209854943686697574858894606336 -994020656149963591794201892849975296 5884939914483788801753738259726336 7702855329770291064200693779791872 -651676754342910250346677501316562944 2847988998707541062851738181042176 1353928539371492045679010573713408 -162349358000256659541733569980268544 9382626588408433098667031521132544 1240864012524785962999285494579200 -157291747880267499566813046173073408 1848056380611938981540002665594880 6792637372328705948330898734710784 -350624918645479827837973683591184384 2309602561826461034278652064301056 9717447882017712344191900019851264 -917020549688756514546216036072423424 33009219799016612132846137507840 7619035472173495604655273751347200 -183380025975575396910804449376600064 7291034622060576920231199333416960 257112472753601924971061456142336 -99727415589739620572423498831495168 3706851800503944793468671394578432 4901653631060656488106832628285440 -48642636163317079631250070775529472 9478384919590368930112696643223552 9648841243476170414145171808583680 -244321186850457758040849402013155328 8497012403291716567770857472000000 3793844206666782475999125725773824 -654338803344554902471720844597919744 9382652107316388773244887367680000 9511654262085134137705620484128768 -559611965497630740244702795682283520 811467162108913709817469264199680 8579121760785177015167398826737664 -467577604932786538968995074632843264 6326791890360692096259229600448512 4269104782925323680911544119459840 -674322966775843509080581050023804928 1893613591072467218537855525584896 573651486594671325453976493621248 -697329297915370431391077901667401728 5210945708508251589397421154631680 5954124197491261391318192282927104 -575164900122105502206339472076832768 8951427365836853187184497220648960 3354228396597122147047671003611136 -154072219165674863117408331280416768 6713976844227484606352726423502848 943471376643382868799973291458560 -300180847678341772818408701220093952 2252696933301997111666816730529792 7693601323508232138047354864402432 -972658723731723899232529842853380096 1333298032553987039828237996785664 4856683941769679268543309107167232 -529714119093724381898438861610024960 5706315790929583317286457421332480 3173704525641318080270014798102528 -623871466473627131579221825934065664 5251941495250490161265011201146880 2123736759475388932913961522692096 -974540017982053646127550987497373696 1815950651788670825608599098621952 2736290915010849566005040567549952 -842116530113618155229878782280073216 6200657296164545166536937968762880 3149944818927210029175293421289472 -738122511726055173145587592506376192 3553734826530144586754165523349504 563390533789093751481222198984704 -156328246500919390487250903192567808 4064482157249364480807603957399552 9922771873696338857432197684527104 -557674579211898681807273419513790464 6010005160221532323498033227497472 4129945439481119603330824273920000 -712807121683712714265312800079347712 1122792067669152711933720759631872 9639725917971623307362470069272576 -891844978976786359232166061817200640 7578109563024023074690498044100608 5531879973761798776715248117219328 -292566486466384309713953410085027840 6597681444058254851698473731883008 8834260331886264370712833326841856 -618623279067613429418995683497607168 4229929422174316821047455382503424 6507056683971847943866538660986880 -720539568595047275527213534643486720 3614608054654644717190362441973760 580442711655283742762185076506624 -65878315243068546301113160876163072 1667423885478695686223139251945472 7675492386214784223197698839281664 -272871836388761000856490007897047040 6880473193247075284967356895330304 7695286048345258021280451219423232 -292787167845466308280501946894254080 818586522433079068983823140126720 1676084064570084978470223834251264 -353535696808977331230920116191363072 9828398031946900975494132131692544 54536618290867255859465290776576 -536970406099212653955142306324545536 8175412647923487013262076770516992 3545593792224747999015801194545152 -961349536815708405761211278487977984 547453937405301937289318941851648 7539296600100334489418430978981888 -458800684787380773860016706277081088 2692737567689146444790995890470912 4625397848939630892282767751512064 -891143223195589847797176306210177024 6367168034828594852713685149810688 5734790994070303609641597023551488 -418599049622174180017348900422680576 148073815008006522914864187310080 8254271678247281956845965272940544 -671810831714454730301349676871319552 7719642772093526995069521241309184 3744560955803145681713675144003584 -867925167863241877563526306403975168 6430037809919444048529851995389952 595396408270222038941548586991616 -864924644535365245510465729220050944 6210356549165047566989328866344960 2423800948221115205889091365240832 -639354599321391829056772903631060992 2256170758124040430858703405580288 6962393584375915909418091785748480 -54692238023775537994094673815142400 2484121861894339754592788939800576 2067227258706616769530752996999168 -560669198456131388508363641705201664 1453615287630359515655389774348288 426797173809164883036040389984256 -908414283692150985057938599105789952 3567112930545597062883206993281024 3878780473128862060381863759839232 -45345647225141988748253324938051584 9457890311977607638641347796140032 878508193661201514513852702654464 -80915513573700394117987641937887232 4011402164059380073592104327053312 5282037621457720907598492600369152 -170987099214959961520040827540209664 4315980541037069662166861603667968 7660378419797025006341289366519808 -74094538176616771414767162559037440 9548633800071524807231101103767552 9384635222450653546521109108621312 -81459204564605737566410054857392128 3495035079916149712979100327477248 4487874461352602256864416918142976 -654095854210681993094938640315842560 653318654282262741377518009319424 24681403477748885334817840824320 -686506726047757097214037158027853824 6250328030877438398092355322249216 6236212869052035528167986479235072 -228671516309541099960561816867700736 2788120009299662353877034466279424 4415408032371216461030712376557568 -281570967983194749176713897446473728 6971328154536261868004864805568512 6347894552074776970983546680246272 -377404948093124890257492766707679232 9131426384657781797393413322047488 1095139181276503754213993396305920 -385025345884672298339334473576873984 4445209212898854155815901699506176 8982099885398356708827239058243584 -172988408803958124236062170302906368 7822885830268815392735088806461440 2428833383182724739551125429026816 -447957024903520815087016526986870784 6337376710929912024625569779941376 4216184295119707346543477631483904 -905413275920615218921852532827357184 4039057104371287974710344536817664 1159311689787203183366838171992064 -882199148112490372241929375987007488 8522001923265172890314702321614848 5264054085042070825935432262352896 -782522273352111645260527821819740160 4343682676841963498180360592687104 6207858681069366170435198988058624 -663166025837356719455882353213177856 7457781395205156962893087245336576 6716012659652459702772616111587328 -837033002896672564204282359563943936 6333556769130463755932452406689792 5540220988527883289177324546686976 -277921160547437829934288099877060608 4904219335195483972354106393100288 7382014486928902531924429767704576 -997528148591914516853947297630781440 973671752069742282671183269724160 1252648577563628106566576677847040 -941565210734154769135996682287185920 4120664222760392375227556076453888 1954512167682088436886868708032512 -151638229352854983290099722772021248 4978040439573799958148867004825600 2951991135175888547031440680812544 -111092898957559868243247489909522432 7577773112334063193575078538248192 6849190775925181884735587937681408 -902624085427608831872893581086687232 4206375673441986135813450859806720 5499028632210079372842344831254528 -187936879462598283475292964155031552 5512782885207719096426283210375168 7465758383401654402542724267900928 -822069085463673000229827150048395264 1521106775971317912714109551378432 5726990805331854260933422842118144 -363566858201392976258550470467911680 2691253141031397432943688881799168 1095110822507959361884433751736320 -319960683741668937862415033831522304 2652175071038975001469141603319808 4367652504631774264511911356792832 -886148807033500118273901609042837504 5025523032959523101095179478630400 9971774445804376964151446689808384 -903348066183478728924611623365115904 7595602602064897687494160547840000 5396644040051453051133645803225088 -836256014338232036924371998768889856 9580874350463119180305314252587008 7576782769015654692980668164472832 -885939903766558630780163895622369280 4857197920999415547659502670053376 2756852405351005590217518202486784 -996246650702734871221737578469261312 3754797883356933755366439255015424 6743487361993492192597211097333760 -123846440983526478091629917032677376 8332734207685401911151270305988608 9403582223258482261234896242475008 -899934985900719606773455265569177600 9763285198605106645735336423981056 6876090744178343340437256093564928 -532206206031833634036716169435545600 1039730548522256017736001778614272 5555440008576568543319312180445184 -968706468391421811636311946510204928 3705820656681604018724167229636608 2885100929764804124594728203190272 -397680648373210565654398586536853504 5014547448085416309619580016263168 8774396715242415820404183716069376 -587871739142186909416001066646896640 3659360004396908381434020041326592 8695176616429465101869925072371712 -962019450106375705888129399289544704 2827033584879121174139468517474304 6734582659519921398583376335601664 -357480041130549455274427949630095360 9455001662710771408790427858370560 8571186045815982667163974215139328 -268441331102363096427130169059180544 7922077532719349672464900752932864 3417946870063611290553863213416448 -322617655535692671300359798281732096 3152640235933714248843876695539712 5449980100302663381909065728786432 -563572389178404695328087491213262848 5159164600310371897848426779377664 4927369202457020307662093712097280 -304259457654092510174601700496637952 8874195142456114642509826185232384 1394010848080534745693546449207296 -142967758340786149435460023381655552 4003082598751875147145423328641024 4059159354273622973481118511136768 -882129096058733972446329317495930880 1028348655284101397192153166249984 2376395835639104779288681042149376 -594677903719633611781641747740753920 9121139355733572676878449481089024 9563577230142583914499907145170944 -829195605113231978526264170431643648 6699422512934100093908631823581184 2382876971718649203680385270022144 -598203279869086976138023309206880256 1281767066099234972565704823275520 1983585807787264371100179043975168 -567636072093681887676520262067552256 3935203425458711438754135630938112 6973447135142743926887861729624064 -511159967676104424190495951853453312 7433630997912031197940140946227200 6340036769265773096746001727750144 -462868365767333876968267062846685184 5826289414229624791399912722923520 3063813274994166696817350366199808 -833555789213969890796378074369753088 6560371555779444630122644841168896 8188294068231098482725486944321536 -602936907349922499560231344195764224 3098459362519555408070931476643840 9693540826064366570659741521936384 -781291611179574816900006768627679232 7673558015485079021653688380817408 803359449421167278803641130024960 -48248626165798594306576223968428032 4666503573935402126774873234604032 8520979973006906078229514577510400 -848957338482484951048029827168731136 484022619118360505145838685650944 9944591463942713121463057350918144 -933494368782259204729968782909374464 1558069924045195874577534236491776 705149899187295586606387700957184 -373136068908294848958218470191792128 2433399577804412619055419164196864 1663152198993972876821704694824960 -156893512856414609581879167824166912 774255874008170448825403681275904 1059794810153543584703654263783424 -368518168709232206813325969179279360 9803026802938130454584288943800320 7059385792161746053517643800903680 -857024484942217817755487564969541632 2369348938014138044803037471440896 1440972408527227331433193661267968 -81891887243498969520642953198960640 8300955605558529536871572965425152 643406335939479346392504775737344 -564022451335892545137486958449131520 2482735406082305389791957391245312 2772187680415781199207284655259648 -529072071249486302909626905748570112 4561833893433112899660139921932288 5407440611886857441470756459380736 -380797901881742227477920228682235904 8455081527792112445945571430105088 9222617118153999829824355728097280 -638888093132018663720070914649358336 8955247106533354022966894203502592 5468942803226843904256833415544832 -60330617404161636141670009053118464 1696364490815009943105443005988864 2808940329783350719968698322386944 -992249117012382238661027654853984256 6451987116089911224582374275678208 6838999303163085956389729353072640 -37284580750571403324479469034405888 8246096424267888870051939201581056 367868315838457405598680955748352 -510546510483650834627875135637422080 8098364012038510391352470313893888 358351687864725618011970738323456 -232414706441680832100402260655210496 2495769540684159247134488140972032 3069609907706926756770119342358528 -308903977610211344593859998916804608 1373077074052203664847182674001920 9362767816536180772832289501478912 -942854519801013597317014223637708800 9164923096203763599779764929298432 2993825972476785414257449329754112 -732251163570718998042460416481689600 5729226984952950172996141739671552 9134007468533765420061958214778880 -401476188112878352103861442427486208 8141328129773681032881452984827904 181556000219224888827199512117248 -749185693180377786649535960347312128 4892942352793125254296280158437376 9666638972710579403635215338307584 -11584346613644542997647078727876608 7893670167065990145698685301817344 6151835308977871315505568886554624 -5394768391735744489330391195320320 314166196621279966719722951540736 4659494263823797015674355678445568 -307180254816618670495517532791767040 7001800874821347092115006389485568 5796513264468519814326214721536000 -704929793879622240239787712524058624 6028205128370615071106498553708544 4141645410250923352915549039362048 -850730384931451756924642152260042752 425933375021817746792106814341120 6486220490948971454093597758980096 -757482254003802795369417619636486144 4588141869017437186739737055985664 6394109644782429854722991012708352 -414178415658817313942313679139635200 3508322136209703421387067843674112 9534926653578936550729933813448704 -16261266964671633941416793604096000 5146615941926367852785767341359104 9350975639129153224853640351580160 -94361726448539990020085942847537152 7962658308883285777581783944003584 7849254717164267524786727025639424 -987369585305869105314705673031778304 831940475267877430222652130197504 3441780898398053327221697084915712 -682528527085490116287480285806723072 9998403209799661477387186043092992 5086056149255411022111129645088768 -742170349609002964140868412467314688 9243754209802267942944077399457792 1788034016897350563175388581724160 -394352080701071014142522089095036928 4512705498322699676527227477950464 9121511389168217120772702351654912 -37367228902596415091131173130207232 2226645216724609180471847037173760 1951747474787466181102463218614272 -456521197378507349507821447101284352 9520293774606863782758422820159488 3798067041288544947497895362297856 -303254504837735109488920170128736256 4344495944425286306707497772122112 4324094958879418154674908911632384 -991077952375190832651106063755509760 5297519680842028838611705701335040 366728839533761522318690882682880 -82678385822176721378818894944272384 6639046009958997503821103824371712 5039814986533950009888521272164352 -357207394441611860318564545476952064 9632473381687668499461255123173376 6012995901986450574936622776713216 -478715815502499536538507103526977536 9702984001242206277643882949771264 1824127273495365616205456612524032 -580853853597122067532882048559611904 9470049837851406336651004970270720 5586862044549674131424992114507776 -733445854377044344821290799695134720 9489292066720683645720793156943872 8737495576034760430008270504067072 -778589623412061939275704610907488256 2001640351635088413190273149960192 7747873490241207583892475941486592 -347265217433057270392268222216798208 7512290040066111282424065940258816 9290770151484932088948048636411904 -85334122822181272108440694596567040 4811235972609290117011525332893696 8961140015332712816954543372763136 -697327915750299792745714927137718272 5907882093823687292756470825746432 4872203433662568681489863758839808 -828209835208961279149206038906929152 3092042037523748504946530716745728 4281361036242200599758315905351680 -448319891235534090916218180779114496 9230851970972626808597054434050048 8253725459536935369941886556962816 -421050437318833249617331868376498176 5701397885544832496911164584755200 6808589970232963506840516769611776 -715653654651377785150865513042149376 1010028172328045146050759286063104 385124416237631829469437636902912 -591205876280433688021229934737358848 3180576335433613977714670081933312 2528357133737206625717967894085632 -112263527930692357451142735811575808 4732299022490942968274659185786880 4258442793166153970728948163674112 -835228840077340164866917138775932928 2080534930971038032015832649826304 2511849683977608251709582557052928 -492879989883796413827760123612758016 6053681343389265609879554896166912 4961888880537452079967601044750336 -715016259536718909660604618072129536 4959738480280210807681883289157632 2218554170226407725983926384066560 -159143956460318273087748864192020480 9644050367711488531019901607870464 8263760536947464829222087961870336 -459065518148503594253058469829541888 9428369325116558968852587112038400 2307430127272256681613563709620224 -43013664827564913791103175038599168 2468416361717260087180240179167232 6309808371259919923879256870879232 -43094983719858462265218303201902592 7098980022680240694129890835824640 9672917156435154541236217438011392 -203500499256231009734934836440727552 6567301690328223129478298041581568 9589666522023684327118902627663872 -781840919021911982598758236585721856 345109215934221587984514696609792 2012626046444093113708042967318528 -463600117985709557415975866423312384 3918403538347671593579608994217984 5052467815910586898082195759431680 -415109554063618820073030268678569984 1768063042592117153789301988786176 8094514329929365241746100712374272 -37349581206906669723702952915369984 2051335223714784110163913387016192 8437700999745567980465555983302656 -21264347255858970111901102690533376 5401302608680785444939559614808064 8701062932189232061273014326525952 -723343226095323240527012269291208704 9068646251172389308412804468834304 7258751332413217156657639606714368 -952724238503270880571790627205808128 8026294639549278281512772377247744 6270567765681030471148745663709184 -43853255404626841178650926842380288 937980921675498212350148588077056 4342277293713351480181581303250944 -990182934857787791489529714355208192 2184138299321851693997292473286656 9875075769872669723416914774982656 -585006948134309523183306036278722560 7821033470305910871801670150389760 6946000802331693319877095942258688 -553223692099493123398504179923156992 6400490337024838861467051907612672 1470306639551896329485453803651072 -484065847162790857101226202575667200 2458444263350971371585591515807744 6415123400233596280308523245502464 -912561767668053274746143151820374016 5830090740326256323812095667732480 2859006622831605508680517827952640 -778503701790844264135387967192563712 1706939926030431144375047587627008 954210879490580504969853500653568 -585312134004248244268019311613837312 4380234252850364007802251591548928 1511967439028835405041604514283520 -880617092547819335031992808051310592 123091747741343246388415269175296 2704049970122383226260371921698816 -842189709950455441020462455651827712 8295185308375172672011926174171136 5672473599447572786893464778309632 -208254182385820115338311237330010112 5639840382784202480885621969649664 5957995052781953137500165389680640 -545428766470652445292539715510075392 9451552910096816476301941673033728 1296907414144565684780488938487808 -559345782176719733236095846159745024 5533845609137485356053204157071360 6283759740140038691902280955854848 -677827769712793023542343876760043520 2782812874707747090103009481326592 9559318246252233439868254651678720 -184964647439196426488661272353046528 1314338772799243442687046389334016 1958393484358796349849499479310336 -818152893660482449607016420493754368 5933131625983077755755840426475520 3097178812296623105008918117482496 -604162098357139449069801330473697280 8293942628203448967637558808805376 8669523221269741687386109636509696 -998657369068414427842584649815556096 2396837784402713722451280323936256 419971577122188254825848732909568 -660331395967887084571584662373138432 4144397481830084842591674871840768 779869410419000513720421915295744 -646863981595972036786733379791880192 1846195092756542097135642156728320 8415028208788164779968318217912320 -764629509721894509040953551516336128 2735522416027260077922058676207616 6346300690722966357523068541206528 -754439681009492341875444225931214848 6046380121008569969509174033252352 9781767260783467718842284836388864 -248736799271540530591046737502142464 6947911909175653690723314142543872 5817949411083109796692144454369280 -864876599384518938345687644872114176 5298140168969714954576025507332096 3154051728617108208179758892056576 -753435624999737985512401974337732608 7565236330765742062264527001485312 5486394856078886337683909215518720 -251004922776416497562920866474360832 6754090205718118140273882977796096 3004552639091721328438894909194240 -499756471201955586294040986222854144 7459128496623042681986222171095040 8437198383010606784181796840931328 -358226027714261833417401793941340160 6794909715032243962956687375073280 2913707838336224459330351311880192 -781205406771092459259562172939763712 8944483556911489311435099337654272 3396063085685088620800127270912 -377977668013894373773176056349458432 825616393104157450773573417304064 7156298901163032029419957408235520 -359788200771690128307343762835636224 5943167495439765019134296716214272 8407327874391856308537537746436096 -406229931352761731141127994899169280 8212991408815667134224185199427584 2795056035434007391471539406766080 -977003069395215819370016547046162432 6523517972829119271367916600164352 4051685057986171133722807559520256 -630934251446408487139237661276897280 4452855925977019329326518896689152 5993378568038875069263270220136448 -268876427399011687552399457841577984 8223824805350180429727095169482752 8928824256025878200533747100549120 -411582891594810751927833809223942144 1272215283610220116119808915800064 9411856742085019379093057187086336 -657440840449183786420541264461037568 7417485738771975347637616805675008 241629111658837351304764363636736 -402328204406705461603048409192726528 2984861491583907411631632195518464 2837264319995018274314320598794240 -535221055125815302796007815673544704 8321270497074366243840170418765824 5035161294818201918731311755821056 -43571343902095585674466812185542656 4049566043647162357836785937022976 7023813275203476083101134967799808 -410093664207606353761154125694763008 1268033272463481739363273580478464 4844100592436522584824649571368960 -147473506674326694312310144742981632 8756910422797700235123342236975104 1992378114433932141876319491194880 -406337652700479471009339381112635392 8430593605225023173397935367913472 7627039294802257695554983568605184 -385740242783286549027133874933596160 2450545422231464208660484518313984 8268454602385959459369434428211200 -205892146505713115232685775373991936 9977714419667232420921086234853376 5058067401667797155991796626489344 -867973969959530747907039042690088960 8777445161588702946069565413523456 6689293340733308983536561025974272 -216933405092679845639682958068547584 2818881596389673840287055240757248 700145591211165266201117504569344 -53285787449466937540598399137480704 820161801814603121930905369706496 9544215702241264932125879377592320 -647719470415638279241750558174871552 4670235459825910219072762921615360 4716583286450100633134529698070528 -861720257727806833796957923461562368 6626317612506977774239492861853696 7192576040004309445934352498163712 -710303992573912923421231117710131200 2664605764385708324802102080569344 7476175766895532714126632466513920 -113238312708622905323271282688524288 7006387369143525951087106066481152 6717806327989713242298936698339328 -483388503012365205296113110669590528 7017208747671426255591044433313792 7861262571043511675294399474958336 -141753821286876698147512394058825728 429306924825358087778470557908992 1723091876511238559621305912524800 -725338351573420362190021267835322368 7257373666355161254681239313448960 3665169711229820201658945688829952 -702747329459143211862786890719559680 3328224242381889106704812545671168 2375459425252603375835208772222976 -266575261109681791648868784490414080 5811350532592120234984138432577536 7967014479126231767577235086639104 -886628913318427378380767517179117568 4714188224672161364362165800140800 2417794357146461524140161935343616 -388990403119649159399639934102929408 1271983588751273978425994261823488 1469988227435394318820235752243200 -62072821059613732395480146870534144 2084736329948072134625632224018432 4313104113932210609286739067404288 -822177503181343466875365303680761856 2174775357268591469466228430471168 1137950273103670802716466027167744 -772164290454613637503454859837308928 8011739279770058010509095750074368 7011461559369034656438157739819008 -979558211505131558568624931947413504 6067249268779924633630849080754176 8341237501679599990531384192008192 -18597409978017937409756310710255616 6875861414852417207174155674320896 5587474691578522093510621308911616 -502773812894427409924910245872664576 2535357150535361636521957585321984 2390988122919219640397070042398720 -615227929136094105223027860921384960 710184903837287581288704887488512 7897784696833099510569255540097024 -826507041555337639174644198568624128 7571651445233308525949245687070720 7409458845651388924574583712907264 -184214272812860878258688342756425728 7330253058256402974462797083049984 7735428677422220500922502899302400 -82566416758191901651890967492427776 4390630578330121405744628268793856 6277784479728212349816970032447488 -413715962124399383668588239057321984 9779501517380332642360022647439360 5640969046095779280565495631183872 -593758505861934403756563117501317120 7052992139362410623652429985480704 537783070801045282555427857367040 -681219667673853314150398838697885696 4883299287746733589105487160279040 1742300194267869298098863295430656 -182771555665041924776906060944375808 8806656584395047383741336970592256 1569569588926697547782475158126592 -111508716656665232757630300690841600 4673980209576382755842314127540224 3985895120333177233839347826950144 -666355885062155643030166196707131392 421338984345392406671101230317568 4684040514199780455047324334292992 -109270426267743672755828056922259456 51338120983268383284987688910848 9128894401294090508966355296845824 -884242615023800606873899258062307328 4203278312268306004672322903998464 7955060717840286478129311963414528 -676248800836025449967357923216588800 1916145997356005109606095299543040 8435567254916433329530347699830784 -39039169492806942201250033373806592 7939805619196470228730388852768768 8296654080462947233893950393679872 -690542092353295924123725940679245824 7974724109888403345370758858670080 7946988990103122213904331416010752 -389945907454837023613356846411153408 6394398123195310162484845577502720 1795674764664076302201229706002432 -726778366956463430052915800010915840 4750856902998216630818048888012800 6844865363716327729079375752069120 -739825563166616095554683164969402368 7793471736041148297792066867429376 8357023583535951212878074786873344 -723519701207021135696676909469401088 6875612521168538928600774762037248 8639712173351711779534764882526208 -653072055859781897903920626261819392 8850264787280292363807764070268928 9199822011776303765976259143663616 -280275179598136017719460711576371200 2659314582163676922553571676782592 9104707768796854990903877734236160 -351648610415569837495844358250823680 2891121585056304103401583357722624 233505168719973255168220242903040 -182740080142008128000852020764344320 9023821038975743145705058726838272 4303808865122964896497382369263616 -114000077619287186632422912258211840 8017899937448204797491235900096512 1425572596349401206026037173944320 -435436545973539874259684034743369728 8585635002707438901363821821034496 4236228013057785145438597820710912 -242160171283833254580211919045525504 3925010687771098915083606359539712 1843984164923605294336248121393152 -620836505150736927278196240869752832 8923075733728716802727824393764864 9845979688608020473540876328501248 -419694894991495910369137722723926016 1100514411318333439582749161684992 3470947515819720974385183247564800 -382720957956421358215631308222103552 3040906021438897876688124503916544 6498654415600755193971075536912384 -355961473960944846784657450468376576 9883215640606128793324273459527680 7951727101164453057715723556618240 -221088393693996588446217657416417280 6073220539573075813144687854747648 3706154949046318493373528369266688 -255528319880714523862287877700321280 4313983782206332358742575987818496 3624820519414017614920712684830720 -896702332018882251252314915462971392 2557658942648781587356203075239936 7478703871151359729915125898936320 -766993557286971333499621652578697216 6091607693392139279558835213172736 9277932709179110813726319130443776 -211636638251764426211034261817917440 830845254846204211716074428694528 510201815068095649918868745355264 -547585605471334363407834475535532032 4560935127419579775032444133048320 5637923370540822625291869750296576 -777088801629062463445749546642046976 7519141544053091917650741321269248 9221236744269042954495143287193600 -497876602362009713779358519523278848 8609682466305743101953811503120384 8184134857403978469631230360944640 -155619806214989185673059313578409984 3504140218707513008407491943333888 1274728130845359384061947401994240 -678123569618158337488944377714704384 277877891731568069646590595301376 6874668008668229682777640222588928 -791535235770205313110579860469710848 7291664836387726901397067778752512 9553451794254527230197221308760064 -432298635643227447417289251252862976 6500852645339946769501930905403392 43521709702728276808751164424192 -580568122226245237973732012765216768 2013850523880338058599521197228032 8506065795104124353772110059929600 -279351522053748327480914186382344192 6991284984793952377797679683469312 6072834699728154645578096754819072 -413152963090675679347522527245107200 4221521899259032889716601725648896 9111376055209650765472161849147392 -989782005274114326104328687014903808 1126270654237353497918735139209216 4540090881433477469797249233977344 -172764366085054120540185954294431744 8681409528803763713850244144824320 7528476861076143788268505645711360 -514163280799645481034835167977406464 5974467199126314961848357785436160 9760043678055683251479003327889408 -786580580177653251020783428648828928 1297545794998167395020367435137024 2058190215365166598660399478865920 -359261458186254665686641197623279616 9621888782140076115568253091184640 9204054699974607809875511145922560 -262816632483205502745014402956656640 2657949925813126876532347211087872 7093531166367273857443102589976576 -261377749308706000046396149313044480 5478852212639778965035908149018624 2871545212722267601923292230844416 -951272151950923957639899494913933312 7792166130476391254758541519486976 7968139298666672510326141693722624 -234620919852940695917080381201842176 7867353274350609400365347034365952 4901145452824352510094687185403904 -198135142277496184440016121158959104 2915535903090871822293267382272 7299209536798504638242728292909056 -59090046793158250817647137135788032 8792743217457499412605333965635584 9512842729995507631736803901308928 -765233824936673955437124774646513664 2264663506244913541995034574848000 8404060173317810437100619232706560 -998949550456892724158301063134314496 8882741029858535547984267733630976 3928060336078467950887944344043520 -203415275240293488294165751248453632 8024045526998959533503255903469568 7961481439907363015001352876064768 -240488321019323703972537910090006528 3395159285461965241060816368697344 5280333493372349032639331087417344 -864419676066230435873503394903621632 7466196122177903114838418003066880 9001275865529203077045024987283456 -100012897453702052561738427837448192 6120506664736806924509752667930624 3617742776215234068032352000409600 -140975220071567875045796660782301184 3261509586921393507401908858388480 2359579871833514642073684623228928 -202989594193233669302971623018594304 970618428809870710241909201174528 3237305362550563371538419074203648 -884720434666903273933136431893446656 7494278387426424666135282019467264 3160595275768772952164176890953728 -757934509107534157514148614665928704 2603045744139687421965386230267904 5006146994141491110249522933006336 -812421775818458649569952649818669056 878714064103257216960417144766464 4971471069609444115893950496112640 -782340561546643007892096616677507072 9327905131511141907812437461041152 4581547218033017149342567500873728 -140081273112151043341242901832138752 6832633382852356476074131225313280 5407462356092935450592781308788736 -530580809571230875890463958412296192 2829741030653677460558361783173120 2427026775811422928406328698208256 -258631787915742194428690016487079936 9766558582452745264584887183081472 7019354659407129179766082519433216 -477097486159363214239917438857641984 3398391313199191159662593290797056 2237254530768360589770795713036288 -79569683388190487689287121244258304 1869927226643437403751439826681856 8918938145835418492003071377276928 -267516668020426462957854322770051072 9722446160269758046371353678839808 8956722939883462111815720499150848 -213491154638891996059796825423478784 4216509022550552083305802649042944 5614369701639188254362835066290176 -912293054938162950584198934074228736 158305719800669584996951564222464 8342473244913656886684300833980416 -726879124237385942255145169637605376 5076951948357748095186011829567488 6338601001077060753732752988176384 -548102651704855847038507802410614784 4461031161485948711835964385787904 8394199741696701337600748247056384 -154947784173891918511989156525113344 7301246162740101819506205751508992 6882460664869189941379426276081664 -19254352372510988245100099872489472 3789350985856804683984721586159616 3952977855470643346613523240189952 -381440002326383522097138621537583104 8237264021779709913121155025207296 5263530101731637922855582204690432 -624607324717493052888040378732642304 2869237135321677024441972742422528 4573034859456023160285139153453056 -90338535903239327081181900288557056 3623552935852837747112283117453312 8637506914478516507021577723838464 -645060175474236501165792371132071936 6488008312194624248135429692325888 3233168753992522539460729784762368 -921342557057005068708771656814821376 777362807824746819884254939316224 3020686950152554174142057883369472 -863892811415007319825632770440298496 5200534589573937089984657237213184 3548155730814937124236266420830208 -369919860438346905958572876267257856 5151259818454716458007435921063936 9673901585196903097732566727262208 -817450553144963199599894756191109120 1292193136545302026809865094037504 8067931558017770651831635890143232 -498729144354933231997746742283993088 8514843966860487666692872795586560 8999832592430705231099743464062976 -146371611070053836612932462595538944 1315121804222422937822829228326912 9326045630455209274989503800410112 -131773547281115904746709455743221760 6752901624244521038473952720060416 8061828735350486046414822415794176 -887795111468819467456063476347174912 2894393493718240540508225187872768 3401980671508638081362287159934976 -734931632858733134464471141533614080 7281861142222382374663291563671552 8984470918872093471213397336915968 -925512928022115795682101130839457792 9632107055601906519396645951504384 7865819438619219566965002977935360 -390226239725526753830559140007641088 8890283419991701031208677005066240 2528661305109202605218918222004224 -160536718298311702187923937934966784 4998471415682895892064717514997760 8398952305366921838934705372659712 -279091372552419698650607689847013376 3480163478555326303193006516207616 5286084470190467208531464933081088 -742889383968258560273706357306163200 6219967872185478584957168573743104 3417122003545836597654469077893120 -849836017168809034156140233972776960 4895452357115261501383806728273920 3336910384028685761264607530319872 -146908132967889544176575556259676160 9510223980223679019891686509641728 5960051752745803572442964642758656 -235241820180510257489484515775610880 3248723165565216764069864875753472 4903938281861692276758562469838848 -775223069623797214042823516403793920 1688134338382307532875106596421632 8156763435708257541485331298123776 -246032991975685408868268416371261440 5517722086494481733417958065045504 369302605789054849033181482450944 -596124611727173682313455078490505216 956202742937269801460854239002624 8737752702261938993598719758172160 -32921726930080666357734680345706496 9431485845389881355803706282475520 2631380134377138244840900763058176 -898649316355740497715514457204981760 6235570647479712208215237122326528 623098626958226132074955343396864 -88130428732786181947673213990338560 4663991782813802492797048271667200 9745602089539693777200975410364416 -592104544054810820343411164491808768 8064193312318950870148138481483776 3295862242342032858854295947182080 -781497347397874547583242805809512448 4064644220112463566871210783408128 7703801458647230263170591736463360 -499623888135225675395810169670598656 8186031064939177571624785943724032 2628709952292528623012625394958336 -894789489859867108963666411156144128 8408599163585654873865909950218240 1425631682471923577642838436872192 -518347300480961965146016599314006016 6700874767732285393851170989015040 7967381182842602355810787406118912 -356438121070458168913359518931353600 7106576623626544015644713004564480 587435863637441757619006702878720 -306661477535256563678380142628962304 2580608031298647334631297144324096 6668828020625553290584211241041920 -580685616291280477647145829826297856 5689985839029645612729403816542208 6557763528408601297088404468531200 -581780490173535155398784202450141184 8818032130190530601125112937709568 573183487082989223061946774847488 -886356117573498252324507833545523200 2655359998375974888659826004459520 7592680744743636782184896242122752 -313651974872596746157560832607649792 3897148909891533748246677771255808 9511972665044397130172192228638720 -587386240817350894965931394272854016 7425671139471210389998695641776128 4112365451399626244325971809271808 -521404312417270654951987973262934016 1941320386617002155819683157114880 407669967314780578356008562196480 -577049763048926433433483493014241280 9697808443099714156189844118700032 4285455220210651693702144275251200 -102757034408180842649494163994705920 2920749320307392705874884407853056 1211759295062727316734521888473088 -856979036210664294876812912938188800 2581088828653448712258849874116608 9435085840164788924033867246993408 -207180591276187541427582709482389504 1049869591165853211931571898023936 4377930068371489496546674368053248 -623244874919098400177672227985031168 6222192290158317266201851553906688 6277303094482614183528850547277824 -431773011001102448145820597253832704 1032623008154168069802609944297472 2202918655100493137262388690550784 -595920645196820399323422140795977728 9577955392914469680673569239990272 3474830381408002235954390370353152 -720110739979658187553868909044039680 6714435194317986656185120171491328 3588340699994181117009806271447040 -232733587643017571133267239931740160 3779799674642946111254352109764608 4234414811042694612690686762287104 -794584431923627741180900071786414080 2868324521456311795380405707735040 4185076121381333675663075278061568 -919354069452865920709332316924674048 3031003418534139775556479786942464 5988094044873277140013330380881920 -661911032539464031606495288917753856 3893702089924585343514261197946880 8119514825609745273759900555542528 -218755634870664407141749455581085696 3718062477308266203464221056827392 4266753326175177332448568348246016 -774268690131938674835823201047543808 7149437110713499227421916555902976 7991266803151220336914728145125376 -24196675638942237508313557975957504 7800455390554493899877979816722432 8711765208131426214686030592737280 -627315424515191378787061707065786368 1291138922231137784593166108721152 9669354241113510139648218633338880 -695166360684541157250910816697319424 6812915801513978769123443602358272 7167314402298581013872533137522688 -21784279130761394462839466897702912 4590397163244210138318836384923648 1525022505715944552649127958151168 -304831168972369404034213265581015040 8829138210825232049230502032310272 3920310460574830192929294795145216 -413918170006836486161761928252227584 7713979181858655835054386406490112 9342403345523870387027872327925760 -21770669680116909357189174126444544 1895097996207338367112861909516288 8842426984848991329514384187719680 -434745909804505476607095787329945600 167571209829752406745466238140416 166674012646470004098391116611584 -368582330784318742452594516804239360 3297323262318904887591621852397568 253841205789654772977916805382144 -802853012439790558364829601404813312 6530089567135566770188940551913472 6617698797235026099003800462295040 -584506242416806694611201410702770176 1884400603283556546093613871792128 9635063861678887619134864788291584 -336583290696771155291411984351756288 4638832885408971667799202724839424 4035710894007695357750198755393536 -982153871290287380655589000545828864 1078319619296695685649507979100160 3136191307376933998959806755373056 -93823935561526677396150122457333760 101317705931206839641606878920704 4653148400669057430536566995943424 -344821442322626356822609058278146048 8117995602148645796942593409417216 8830541128671449366313236401487872 -308308474360776680546780756905558016 7731766065815629810726991042707456 4812997271036442923715187756236800 -223727169708237613730507042521612288 6883231380485844151652264202731520 8375882009613298759937818171015168 -562707479123938799705864756751499264 3302269474269205787898791004733440 2801096982716973721212958309089280 -845088635161089310656707075929800704 1300939773483477993435637724741632 6542449564663890220546018242461696 -965956694190390518707966838573105152 5841032929856841647584303437053952 1481596605482272282450256937877504 -114864101137048607194343824152330240 4079930933405163909215658065264640 6266831673650844185233903711158272 -776474663856570126667472450351005696 3786034021556662861242794153869312 3188121620682776073615434219257856 -929470635207685052790085386802036736 3488354809229268817336373914632192 3632863874568785549113767839662080 -723721812473610513165575758794457088 2526868728222218932977141758820352 2935373384950199888678338057732096 -755857201515826789164190421374468096 8442406730135359015702951572275200 2690171323209903276546743106273280 -514131593190058829584147441766105088 6379317720939703771910037630353408 1049681380062449452402147122479104 -943528364595656385917116829461905408 9018356607923498173357957530517504 7298262201303870465514966532227072 -274330321433373749560619105410613248 137360787432927913534753827979264 3323360586199419940467130945765376 -884843838335597424982739939764469760 1731019406483517186035763738836992 8125052568266953906787369711828992 -718209086143641099561292537196969984 7403423840552786126105581239402496 2891996104796422777309336180883456 -951550090694042818969604831838208000 1353473580247432464540321500364800 6565337055810667568604064077840384 -903170400437882655268395164356313088 3736637745533771450758301789192192 7158807276742900054747818546429952 -819666941366585701284866830253424640 6608799539647157725888499752632320 5856321396216477506894519806722048 -463208353534838159768549421739933696 8435555863189757772505003522523136 2966474486664800956840599946788864 -935822119253482967252516031254495232 2554956492007647716125549220855808 1871348645025044909489908185300992 -539110290404277961167631303770636288 3022528205427253473859005765910528 8259528929437989847473784784683008 -992774147870030045688867896007065600 3498040042506895613401596753346560 2303919008080150104590488357044224 -629402225262154546634745485239255040 8368204318927626579667394920185856 8717751527133290486528876363120640 -294271825013965314351219154951864320 7235083470123777011618897675157504 3868378730391106405176060678242304 -589771362438376842216427087934259200 30541025996185445571552574701568 4726761431786103488245392119693312 -267371245638660420167775258373259264 6019821211634956362934782764515328 5711823639720525570619404026118144 -476785504309320608506718016075988992 9168342814618658281937357668089856 8887013876862784598532749409648640 -757457742387304521557155419307114496 6012191352035434255231813056200704 9053097863218953545781866968121344 -235870088962732225516018566833373184 2900357050789630120420802469822464 501126468789423187513442496937984 -447768695154018998859736957077946368 8755857917056502546583911583973376 5022105406853033339911119063482368 -468857204922761497745513062793740288 8119287401303122657539266707456000 439384841241026120833874429739008 -358655225142345737630056949605203968 6789742547490243256425083723317248 7001356011818333049970557695557632 -249350257843997737532513871705669632 229312531869212983373383029751808 5559138448524761057184007002783744 -752550939788971297058035038395826176 8994601549392321098983855500558336 1189041973393479969385722421444608 -836778303555670743797852810401284096 3789694121782689829681068253380608 202926906662543216246590172823552 -933158774417133631593131700316536832 2692893599223961287421658325319680 307448860294987121561259747573760 -340315093304589684257671543494017024 5211322850639546956165054856167424 9724119233969338741640826279952384 -108466677481214368145366611581206528 6186026345182864133320332160270336 2677067217370737287021883568422912 -865695027874742853280879514291798016 7227878402557428410216894150213632 1241508676408414613234136551260160 -248590897356257996022207901301997568 7090691206249591177897187852943360 3890189980635784517935792943792128 -381996765418934649222047873208680448 1154743046749384970254328396775424 9742938758457230366539006965972992 -80838990032154263106110827635146752 6980662418498189416567540256079872 4988026183084772999483598290550784 -822102733842766178769182721589641216 5434026490778836305645139532972032 6540413677117241708972143999451136 -119676476091212553124574806769926144 9118258335701187515783409072865280 3160602742289416945092020548927488 -744560078564159877436736003899392000 9351161799365710902935579640463360 7111495695635646224608355376168960 -711528626446882359627671053732413440 3352764958884235080906007155572736 6410079040909920998848536634195968 -236552181993389353556904268821168128 5719006229342460556828687003025408 8060454048895736135038654344069120 -354815304003907268184665378225389568 2666939641627899476998472251473920 9608837791007167339273364023803904 -724146298746760969492285787459289088 1689896301478540148247714026487808 9524161667160513473302428358017024 -823721788086321947984017952182632448 1097358449111138437666771742752768 1896341781643182867667822615461888 -759234532788825835223883177720283136 3430669750508256337004460175785984 2343845406526630233501616956243968 -461946238529200228277174911773966336 7751489726028673154004586944528384 9621280496255687641472865233010688 -271407437905413941076590200201674752 2539956829488507757385139917684736 8462441408065932350720025663897600 -290963071763687537167469362605457408 2623345334140869147181384892153856 7066183562715567543422161690558464 -167761500945363174789213292444254208 7446681964469650257818018560081920 1728500369862899662451552506871808 -262906948276933493249062349205143552 8012118357600772046407886044135424 7978655270128964461192258774892544 -311516414199589520505034606232207360 4172063376326041183980954815823872 1741298494559515185568963192946688 -562632685555165532766933243949744128 8161870778732784900867521257668608 9705491785878861625941200379838464 -806109009384288248456462855632322560 9397806059064847998092656861249536 6651284863347992543034579747864576 -721316865085756813699234542525612032 1147447981469850214156817039097856 4807754268299266269245630465441792 -407889940169633330582009185780629504 5798870965859550439858469320261632 9967625593561483685904044739526656 -127938004830210238111260688169041920 2966718753688627563117542895517696 8819727147594937545565767152435200 -207609009823444833673346217469280256 9102128915367789036933871155806208 662369840223043151557996039897088 -553249490500541479499658274082390016 3311660893310849526105266339184640 5073967431315036891557844867874816 -303842448101344722455617602861400064 464477930502466199857831635582976 9054425305030136360046496443269120 -187033794055646684017846411904155648 8485425955135814212646344834678784 8695224505823433913700423980548096 -696898100612478686402474426375340032 406600594281088750997693127458816 4497304639188573223584779925979136 -801783566765885544841771442954567680 3272420214006087465359206950895616 5350889517119783692477556661944320 -807486410938548098655322340707008512 2289960117281652749593948375220224 5099416825715276878511015301480448 -727782725988343527814504475275558912 858379385603637880351747452436480 1539097907888887734444006293110784 -499185536614369749280795397822873600 4185247412989249848667060398194688 5368101886562296041840278530686976 -748454942969411618678767456951992320 124784829446330873179566550024192 7001826065249274744279446602121216 -68479845221645738876777415594475520 5431980022022135474811013490016256 9530593615188046349996690595905536 -394024663421635498070651132029435904 6044551094000670976591692906364928 5657498530152337564419113898475520 -649518724098457846918365451353325568 9055852435417238528542387562610688 983034024797309634914394788855808 -189884628415049560474995869807017984 1671931655594527132022232840142848 818321961813586054219624362278912 -112139377891390273664654399214977024 629436182395583766776682196762624 2545869450097562471562285183664128 -664629928227141775982042170366361600 8290098269707752238020211190530048 2151949678541698864819367374225408 -210034738675280096263775867061141504 1042268969920755972876885662105600 6976921801161523618320897741422592 -246643628242259179747056765911433216 8401516072198131461189258918756352 3806987848084368756035426795388928 -58840882723105631757597781448982528 7930291722020728857188028041396224 8954746221342447886303218158796800 -816434198539051051203732204830064640 8165997938972592320662760549515264 437182545104872903958654839947264 -876612320908884686585162418951815168 6855823786550444120357282152185856 1425535939020713016767933552001024 -969433751451887199496986278192218112 3647249985897908794184693425635328 7769080267692516974477592775098368 -219132034897790875689231367475822592 4900242228969398495288010962108416 3387174976592365219966849996816384 -469334087273955820481102691373678592 923856386705948495478717813882880 3844761147603947675119304860237824 -237783242889091557035429853084516352 8352597399009932464239299027533824 9510082542488687947255718885720064 -399367136781041649025531917597933568 6540193857469781598011882834231296 8775059733813890653737869088129024 -333016038327330667620618929424039936 3476696570752272851194090476273664 9353446141605398780736511605211136 -757206329705661288298352737146372096 6613061016447605912149800207253504 7347624176373856114125303961354240 -837812459358211520088062933027782656 2481278064110348759630594929852416 9479659065511022598113234587222016 -466547631826075640874812481873117184 5513117776224669723717925645320192 6812235188016496023692154421379072 -23056567871694186262245094883065856 2588730210409137378482689073479680 1654068162710697728941088445562880 -607013440780525758805558243199287296 6557716973009402283910941573644288 4665559965596263650148226279931904 -298486457606870779576972335671934976 9033734410379652087724259479126016 5968031106475322745905572810326016 -206756421215328833283729363564494848 6343801388883137007066058143563776 6610038864189167177276759981686784 -447734744362672164387371548458090496 9847315273974566222706324937900032 2982825031408530024032029892411392 -389599944598040871115865278449188864 9071622567956118030738670556807168 2870069310302901698060082181308416 -313034628041476880649515295186092032 5372037397185878146361433698336768 1206256142001097577131346594103296 -420153222105303057542073649664622592 7427526741500599791541951559368704 5098203511275055317638300907339776 -636408972179940534342070286296285184 5834143604969237611111528003534848 8051977027466508294948205153484800 -545106511204523626248436005086429184 6416370874435794102269281176649728 9651532792136248860465776574857216 -743057641974156808918866928093626368 9192036535057517164493443344367616 8838779883569032294201452134400000 -854811602671461514709074433298923520 1055834882833713739834209230389248 2113025639972025837836216639160320 -412504645415042578979748384627228672 4413954065947652177805441746599936 4480331500194906514015090909380608 -614927023652900746472135717109628928 6942871175653900792478300328951808 3730456333746241479670281994764288 -142943572291670009529854860988514304 6191649084315007179073313122025472 7269071032099852021695074204123136 -974979768693221432904379275226906624 2473401644075650574070191075885056 6192867240332083097504877362806784 -618054319049571695235430722228453376 4735155017861619694408382233444352 3136060340341182049808174161068032 -593032700667579251367221720330010624 4751714236123051729346583374856192 2381993623835412286326268976168960 -274729682680559655718092193537196032 5741012242288576000637109425668096 2975897013743443856223911255474176 -967040498445555622941424505097027584 9552390554014759694333950847614976 9698125387739538325415019283480576 -285734890615644112226949374259757056 2057879989693794987479928477319168 3111739807303054154070510798897152 -690709738024795692418918680463671296 8594122926117722454594696251441152 2946409437487981972699995594293248 -26042346780374804641295553261469696 1906459493048039164848284723314688 666350481658915189437191814119424 -921084227854150068316298465408712704 4339891347117002808277087341772800 9213598886961701629217877966979072 -981138037778264709365736954413449216 1175351622071714454162088419917824 2386919841594157400180590779564032 -705761510858315654736106453632811008 1727126455535629172993278473142272 5639286292294901435092658013863936 -914473961757248312155654047584485376 7657761688607726978071899207106560 9915741115730352200256343716659200 -18013549584770179564241794889678848 4512166875114276288454498986229760 1992721948761427272009149684121600 -893051366924641580188302588046737408 6515003242614278112825838539898880 2711040230040957202161489890246656 -398691401452409004023107621058772992 991050209330763005099292762308608 4929262137245617647574865101717504 -940653776335329552100678439077412864 6469234689570015954091636686848 9244801992186450251155321777029120 -365610731650695612757800596661075968 8012797901170863076057307877998592 2388270467460390171989923432759296 -583645733595129643818894693830230016 3502263822731382505476130080817152 5811271599573797589833032090517504 -231961228498768581184904626301829120 7667793264540997314117965346504704 1132105609806012286031898668433408 -485343689579917468281379998861885440 3437925848181489929646676289519616 196918068274707930836857775980544 -150575656954848740973409328376578048 6428569241987030790315892057047040 7242173542942935907575124033798144 -455929087369241247461051969229029376 245249921903362262899466044440576 3188918991151621042044282899267584 -671343927267111826601137184593412096 8455252612192253444524148378304512 6205980917365933387240253379575808 -444929113672855824617202946924347392 4560304044267988393299190248112128 365920223185782336290418296094720 -676710486529647109257511861447819264 5271462258363970239179111056539648 4602348123058706922982552153096192 -178167146990847109409301318663667712 4765601091003538788895755258036224 4677063620096442791767648564674560 -66707253466127369704011381858107392 614259422618482342366926174420992 4000753477151015449609749990998016 -493238695439780936299336952130306048 5522762958154750261691739386413056 1918132125826108355093096994701312 -78802092299549317615187597866303488 5750449728587997524536940040290304 8282148462894005988171872448020480 -851123675243629674060917217681211392 348232143562237273387987590184960 2296540903547975306443101273325568 -422714714102416142349403284710621184 563961695726249447127600800464896 544262183641447717077160208367616 -597432389235857909724169569736589312 6502354455059314878941773730676736 3879440116151946564392090362445824 -293552188895146126564680234256302080 9475269116189118214270008518770688 1893084973392954267633435338080256 -20173731680288917387211348809613312 1927005061698427056084710101876736 4932217922545788770208248712134656 -552066627036880354733375191588536320 1718853327407482553111139888136192 2680019542635206396564921840041984 -744263864915847331019580574630150144 1169782303154764679345164976652288 7809971811320450440981687824285696 -231155881930476407840889720614682624 5479458766980108920746699088986112 48246855550517733361040117202944 -342115870393644431824258125055131648 7459501514049556515224941678821376 6782390463821297442157213924720640 -526874937860406980905191586104606720 4051117827359873230479142462423040 7495155209735130388670291587891200 -356060317247812944984661487807102976 7429328593230570724486803760349184 3992534085508438963503351270998016 -12330793715756418883256972499484672 7457680837804794478712183251271680 1130663139515110599360270038990848 -287983714502400968891573056800030720 2097269215542263040722721453375488 4704613274994360917679395594829824 -584526406171050760456799319574446080 6938671257967394883743840554975232 1534746080319935222311206690750464 -122728750187320236805302232429887488 8550359460772732218283422988107776 6671456447446264028953845151301632 -85698509030290592221730195210502144 6359627750817682625285472053624832 1684992434287132959999812106715136 -771027376726210865641292874303668224 2869170128269618455259254118940672 6285321058106506456185992795652096 -114915555783172889761411376953163776 5396640326709809148619708669362176 4749559492624295070514387353600 -414518359876072834783686105189318656 2472067733549543508657481493512192 8306463856555368961868969564700672 -535946245835636604182296447944753152 3008367025494654556918313763471360 4422708028215542204227382409166848 -205221274148013126696153290318544896 5388943258955279885901795340320768 8497061081679431618785276587933696 -475946247274727343563108381186064384 3824719237988210838156407537139712 9375990843776782133335454686117888 -803112651887260124859122033375576064 8387053023462123325144497181949952 599003141932262060606249358065664 -275480874217955481169182925579616256 9528657755458783714358079715803136 1095178402188748536475137345585152 -196465835831876165594550960107028480 1959319803280864701466886583353344 9724772437353415818421227625644032 -571235228604209108383335303268532224 7658581966854588626375282987630592 7675688948081326092053350921011200 -614105572580402450589749401635258368 7687659400132105642098628751261696 2557426999140505470936199536312320 -850792332895042005099314875813855232 4036892105657611598193281363607552 2520897669293456279737994825433088 -676569814103180264923236021500379136 1577006732035014477574204223913984 9535918209619864307832381952229376 -15180613647715676927347076731240448 1805027136268720977380371123404800 94383353033099563556020428996608 -152789595823293899246665797122129920 6280629909306884860835421061382144 7101117615937124465614973690707968 -600112395245465096896608743265927168 7938618706302497536590093416923136 5574589607079845001445792301449216 -734322695739653577475117360017833984 9473468028877602651170560465174528 36104834010588008556172157124608 -321846405444859137477507736517214208 1586125275030757325010484074643456 1980314637520279197756525794820096 -34292925358322605982980596398292992 3074968893683786442997026164572160 4670921424564545548128181733556224 -303926468758414027421411964694298624 6125154828683744715549123616440320 5403697521558770584392569920159744 -281418776451268588880817107486375936 3205150497878275530349059556507648 4922299072523648960905232299065344 -565654157808259323676524297475588096 2478308664345610192728075628707840 7204495010591727976701697141506048 -202587702317323943019694766711373824 9711291992190549612596070749044736 3017592301462385774129640378466304 -664688123188023210269055546124402688 9432309608247735886535951462170624 4293983279455789153566048248659968 -565969719069887411992398449080270848 7225776903313727196898240373981184 9095885856926592963177037130891264 -196007272401320184914232416424427520 7420343715940239763743689282682880 8154846271512508532893376988577792 -86511826422671144287017759183732736 6232582693372390667973677256015872 7882454952589549801836928456196096 -561307041974091804606688249771982848 5528182683571692563555133570416640 9980639169052075491688609212268544 -418055168014904403151327806290395136 1359509512478299149834644751384576 8582893948276760537144450122514432 -415208948499523476756057665908506624 8036965495840709186297801687957504 9139384611303924548043115428052992 -294761144587150667809053656127373312 7982690412468860705655905878802432 1973026087053836993072347001913344 -561612241949004365526111484718874624 2864097790860419963359302218940416 6728146705007447118512368081960960 -533395609999056510159203072722599936 5530173159372405232827455839928320 9571435016004001659494795988434944 -875138437855240533544075060492369920 4591060798938384828579383634558976 2603794740125555068915467671306240 -827858688563733937964027815623917568 8513533690141708546922527970033664 7971555349838088852046476314935296 -172225111902099956800400818232623104 3956631824619011375133522263015424 9785721557532697687544900194664448 -244600777355746450240569470231773184 2965176812791019187124330347626496 9057226564661310550341568872579072 -847434864039100980491776363371429888 1738032566471082348587046158729216 2714050941422141523635915334877184 -629233440337415644552334190433009664 5072995993790331063192843127357440 6790098950930205849074826775363584 -208618887566228602859590793761390592 9537458824231726360784296074018816 5021752466501186631109065241001984 -824924046548622813200998856646459392 3424798661089059955746402784509952 4703291193581569417007165905829888 -165363110316180400273382643058343936 5003122115585687121278337674117120 5750474547490142004204115672956928 -924701023780344421615318188704137216 4561778014040348922327835292467200 872863434045946749623114586390528 -579016403541240949218167516580282368 3352722153611624593228116107722752 5456592920290032579482338203795456 -324451554550195506936568960302186496 8990598951885983534514259567312896 6815679510416734229636767820021760 -657412915502332561781522271626592256 7914019156983572809577946249428992 1740438102000676052752969735602176 -719973338872248183994943268934647808 4072619777617227499836063480807424 5385688962085614719394269668311040 -9764542263577304644045712817913856 5374763070271205790983989070135296 6603106063255045967633589167194112 -935956183556202950354143068752445440 9991228406021160929472396809732096 1100037514594273765520497421844480 -168430047860873299323604862192582656 6461423850180528249980157878599680 369411836327754714632724104085504 -78539189347849752627379942008553472 6517648030115599355282361717620736 9994089683563732424215865734463488 -162455643347173136658698827275960320 344086682285786535891884352471040 2129776113352814103681807924854784 -856687962335338280179523146437623808 8009921277619667924503115558027264 6386638179198330452706310993477632 -6577536009680823718600954890682368 939130182487477564785861121277952 2234170389562375359767595647500288 -760272047331440385611643719344193536 7835179755586364465812368569401344 1573601113173697766946648568627200 -661034832651592380054997124048224256 7815624623898931453680244165181440 1606224784821876429017439950340096 -620272081621437771923001910354771968 5678023172822295889292601302450176 9449347201471343792151845238996992 -363142886427049325687389144265785344 8336162428815799243947274013769728 7176781618146259766473525288763392 -420787315685498084817152428883312640 8240991914999126089786467154919424 2864911152088293185621596122906624 -116078866446984664079265473914470400 341713429126569595291457313308672 7161748706131140039743614752915456 -899609947738944929447650422591324160 8137616434521067708014241947582464 8779824458285856298482986662232064 -901879303887704662357902398190518272 5010558409788240167991913692004352 4781424972237638719750382949498880 -997101328436292123467041615453880320 3875190913716465399928440286609408 8773243016507693239393911216013312 -574721280777264214763255403330404352 9611514383498879302452536464637952 8552681318404108304315496412479488 -513405519168736422711833640835219456 3789624350044126225778272381173760 1896129416306712707757910303703040 -978187092362560355919596126759550976 6038006060901864975113027590291456 6006920478671133138880111052849152 -836158872044057148492725843283410944 1056295907018586010791124303609856 9784798902801693517377051165720576 -609967933707469185537344304412884992 2766786328157149361188057672318976 7704619810351912548771841383071744 -950061279809793478326983071304253440 9927873335896734142640855864836096 1502762940141577895491605371027456 -580446585936413018755125206038085632 7703925571628423859780830426562560 3757903909959927071738527871926272 -221348692716512348237926313788178432 1820641977115948984531375162916864 6759828656469527174267090579226624 -211404811185125117789483087760982016 1471278956662482922399555523706880 9683270546212809297083673146818560 -769571098427879905989782887347519488 9764952041477653704601203262881792 9019504975335745400002956639600640 -264496445901652927822704210807357440 9826375674377512259647773134028800 5386764492220467719255830759997440 -161002791569360857917094786257387520 4997965343568844016927263640518656 4446176187925527759765272398921728 -641041751749216480209975622800244736 826053973823210997938634191011840 1900439149370301832340699791491072 -254140668370432796591498862042021888 9700968143223843497612710504300544 793121860250711393741830916931584 -562811856766947657459294854614876160 8583659946641224802760780341575680 9861597588889250209136330124820480 -375073113371535452320731472657907712 432118724225031594472865022345216 5033858876064526040723426801352704 -975597047134024250794300477987094528 6322586712025168417496196119003136 5696388513366022955109587754156032 -379733720661942886124820670372118528 13518453353589231607929538347008 8804736293300238601012865079967744 -604278597619720006869549531550187520 9692167441320070960064851209093120 781400430865089328173440565248000 -167480707081206229221030353447157760 95938285167750523565392449765376 1186205150936298733801049019121664 -621843272440616816964259004995862528 3426512510717283785209710026686464 4271040595108202041352429594738688 -511470554170910605854951025544265728 5530035198539378955322593600602112 186319716124030995465274767966208 -906298881863244850905351237538938880 5742519240535290770794550617178112 2142775332931475924750289600512000 -616335280725645335058848257132199936 6219144833908723812631110454607872 5638090482188550090418229988032512 -274195292238669827931461190030458880 3291984907574976921081775889842176 7104434307012647169674453087944704 -915552761800316218678611188771717120 1849248747548853401007854612119552 1137578879762814865807077875384320 -844260975442557989049279339649040384 7012522412820955430624967201390592 3922813729062247641166843335409664 -445734020117869010176459438079082496 2401162700761120580938261942239232 2619530983074664134409563576205312 -684683429546861412359879836374663168 9189665024203795944531506625511424 5822080128055583514070229700313088 -433347777701727803270380431737880576 90886912128124188896478218944512 3460253004198083684224736251871232 -883374351909535406519606732642058240 1102613830619272179881226828513280 6327279454230328289516578836316160 -959520740314090226758368387796041728 1774098767615208376427840916160512 920066553689566265323585282244608 -908771449281855074418980552435564544 7820029127183302843157443350888448 4929155735806069441588320951861248 -434239414094060198061045187516301312 3037826047983449330297687578247168 9260317885905121444522011278704640 -985074923479743035251023717704138752 33004381274574945388237810565120 941416661529532697550174675795968 -645430444760996934458395139130785792 2305088672998609205404561565548544 6852704214552143480573450812129280 -952954452447846440884483138101706752 6970746013839766502460960219856896 5697425254026433574368571151089664 -689500262313969322501289072893362176 9494230184266203349804175295774720 5157993426473681304215034578075648 -687029892286550354742525923688448000 1261832178098158339891300508106752 9003845088007551313645689456558080 -232958776675439164295570431179489280 4012375824321977789200897580990464 274021926592395043296525940686848 -244297852982628178278942971183235072 457857666965543100566599102365696 9474172724486480399440985689423872 -880285599763236628271612310973317120 7629318127743596671679648334086144 6901979301941738957777721412812800 -154211215294840002590104805603016704 9786547695080810952676129764278272 6259146772802883195755820184764416 -334388762007007133502897248169623552 8928874957652735745821296358850560 5944311883994772123733895940145152 -909948053344279507111061302244540416 9688064148274855281385583774007296 1361352005050808287167770307592192 -678321577619265077789307587983835136 4296219870440022120182991902736384 8228693577938324570910647490969600 -674516991442703114084151217090461696 1015778986432357399036361867001856 3130379127552601119903337083305984 -414005811170668659176775871977488384 960707257172762123104735603982336 2431443162016303820228818959859712 -275343496265673844903440044070535168 2655736403716517896295658599481344 2217592624667385268253972286668800 -920508147813302639921896227495477248 2986641634444529127622809388843008 9439911663236979782456825534742528 -683454765098997201696174758590152704 2067541107127496604938476753780736 9440747014267845392427732372029440 -247705952208418691373710446757412864 4539198584134869461008762007453696 325100967177601501507749324783616 -788723401344498995748005177030868992 125226832670076248139280274161664 1354953673388425575571742517100544 -679740015022387474735974154435035136 9302050782660303137315543192698880 1131197852935553409784239309717504 -508899481147912186103420292085841920 870754276335892119858226537693184 1159090091049302872897640049147904 -262557252812549032210103049947971584 6097222192271958564683010245918720 6966464272675553823057194451468288 -968190090317905079965640288477642752 2688362358014607242425978941603840 6344718982463872800175994836090880 -445787840691488548980396541211574272 3729777055691743787248561395073024 3303158498821210305224237127827456 -948522368699738506187963062179332096 4935198658781797449169658412269568 9421109913255165351064292271587328 -790740057722128706295007629799325696 7948440555656939429912794879754240 4801930188688158799960100457938944 -517695908697718953527184040596078592 3560888555428260862525910886121472 1149117806998116413804319611027456 -879421959933275561717718283536302080 6754039310697338943530360129978368 5924308591982433014498774891888640 -453860489911951661103066547893567488 5220062834626114453118351262613504 8523644674869085639912410658635776 -165066747146680612214360611695362048 4585442683413881313747753655861248 4182027189946038616810177553235968 -158715366616749413560896008818262016 7532730679410240431581016813993984 4146835282863790654784889954500608 -951657314102999375237712176585113600 4116742645924164701577672864563200 3840908728435999348584956444016640 -25864531978787107650962446224457728 5811194700556057091167146582474752 161590249778066517995895409082368 -618882241770119242568843233155088384 2212075388918445383193102609547264 7128941548340772479563524648992768 -825483709242852023138795551365005312 3777234771867501405421643656855552 2258921316128358517018107335147520 -174690322981155726382786534581469184 5963702631780054143969071583985664 6226740900615438615202889082077184 -660293118014342996039884493702561792 906179640501259601820239578267648 9691818840589805587750361946390528 -28754075364858712821852407009902592 1591214333884907247209113765019648 5059461213489660876792674304131072 -627423985158966083682311333254004736 5765817109495489442409920652640256 3136218717490339667610694590660608 -325013524891242122094651476933607424 6248082720656698596870015976210432 2590855670491981034882847582715904 -142747205622574899921955043909042176 4141850678988332058381437888364544 1678201041856100619417442249080832 -799259596691682334946641089044414464 5885145775768604188964963712237568 7928237657762107133365560987877376 -656703794491686995019935179733991424 325080917730638900994161476894720 3867961685812223521322389899051008 -65989566466912245663795426654945280 2972390386125286615765097946021888 4879485995846481792824947106643968 -143452561980609226347026055587430400 5062216606966008749530377967632384 6408999577860010076973975918870528 -198844883452950477398506227600719872 9675191843148833832329291233230848 4391443170482926194542610508414976 -367056372165193138704677814132539392 2371001289888650189147260227420160 128419622628791882264978269405184 -494290792460370341862248712499101696 3077722194851732853525711324971008 4204741882014883265171075691970560 -990790899414732905700095758597881856 9537381338771401733740991013191680 8449183326059420384057590298968064 -345858517351834263145564803895918592 805785530248170232134036780744704 8403051476759769854842402504704000 -809622646366643116553493512881963008 9312973730208133137911684500815872 3297003880024387298781747897958400 -243865636342149619170692213642362880 3660574344270551830108972571951104 8992962721390241297082836360101888 -368066598325550997423112419473883136 8024364393524351154733162292051968 9777290357764329795796704379797504 -766395477708428642927767480807981056 7887589314283021851653133127647232 4683856245168673347499169337573376 -895131377516452039718440437563785216 3021133375880991340867627538972672 2599680647901072244338449572691968 -849701277501129099556355369244557312 7530496608963810493150333375610880 4508305985515139079771240945156096 -588778565901945043886202823951515648 8955639412040788741458359188717568 2109319777997157717871426610921472 -957097108257846646487906485836709888 8242070320331298473065526872506368 5966960385633006299888094097178624 -65581039011856337410960293843959808 9162963206566101570736394017439744 2804955368644574142515230000807936 -688820300578998480215689726584160256 3737033729046120703134601763094528 2947710582158903678336444313632768 -51704046717083708316650906044071936 2932077355787725785806866451791872 2045604709310964277797997506461696 -942520681484056158112699866438172672 4535871291930616055508669963436032 2052103722698373598246895278358528 -52047420519801611833503902622285824 8861564870854592295499860512079872 2504867306599427522218312064827392 -630160149299480478609762253482754048 8304549909850819729155859490537472 2684124875785829080940336373563392 -300264357976615825141468115515736064 4943837904183729952447177460547584 2650926339620289247942221303382016 -869014531314615658074742961079320576 8907078537647557051674576832954368 7502690035046487825152040656437248 -598509777668580034116634878647730176 8521971372438851618714853109137408 5069774011575355996394751109627904 -579210239276676288201215640730599424 8431467695131539359084625942020096 5893784952101278877228099006627840 -143595848156546027482903793952096256 8549610016482796649445441805484032 8439840953878859269223197859381248 -474427499309044351804149694340268032 1255559456125548693459968657981440 21017390411327536044435040108544 -362071129110992245264131736823922688 8965800243384431466912574154473472 5584917058877382976088677516574720 -635578817102911749318396005790515200 5858770242026366572954330547093504 3439264816805452366051082772676608 -527305449063244623719037971313197056 8673087829746303673815268537139200 3862528897036566805555920521658368 -164606617064576732417928740082810880 9853761934021757234939927130537984 5275657839481307529261845554659328 -218906951066175750681229197634961408 1943067276929230809524767530418176 3896866005345632761443854611120128 -504911999736938458507484465930960896 7568583368512221275491277509492736 961609369658770194289516070567936 -664563699411610565612542434933211136 1887252484710890526219384962154496 5718634226587930112101619546980352 -647117247391243731126608921586827264 1710805047792750076296921157206016 2741757719305140324237602799484928 -495752072050531264616471232728006656 9124921441295664716931850836115456 5532742377194139252887708185395200 -91132236855337027424546117038112768 6642003672650766250479589447958528 1247339949315545515613181423124480 -364441727449529445681573336014913536 5473211834087661637970207988252672 5628126538139062232554234240303104 -475654384553612282603078172645785600 8372664778383045542946029290127360 7621305764010186384912072298201088 -248084364225450990113515143635664896 4730715527432385447576534784147456 6063728314481741341413376551550976 -482271186243932889561243662038335488 4798650670710449099817187641655296 2676197456324364514992923772715008 -369659967039015493622815878962741248 5097973101260301275145756269871104 1462876929231694658005910635413504 -575311901735713254750841094629490688 7046581886390377476167674296795136 3184605174824805476463736082399232 -38108788803579669513158379989630976 2430633561676456758065554532597760 1147715432548726777978463165874176 -354283792303379270429771731233144832 9776242610716875703293057540554752 5007538506447181076719735452729344 -592184115178958769261564792116609024 2135434315561590651160563780943872 9760015983956219388394329069322240 -531609718715038549473035016550219776 5374200311300180571506482079596544 555379281424631209775392868007936 -150998713517344489379890442755112960 3435367179285490425131908275896320 9512407820318410434938920562065408 -662075667278591845403350315065933824 1387452283400272061468811475288064 9282397193589935461127032401821696 -750102013560587541839398067404537856 3105648133817941139085283488169984 9813203754022078333932446486102016 -306477286931335605433801137809522688 9231478218652188691982384736763904 8163487678292100889855050597269504 -442670652629671281772087887416786944 5152723079639944654733886225383424 4811717495993403913328412325838848 -824348349280767629063062697011052544 3312167485850639279520090689634304 5033688381159381311897356386435072 -851146548127864050150403294864867328 6163284261471077520593126768508928 5979906347710282214078930277629952 -426943047241798790175688096407879680 1556598680570200023186281922035712 9694267330291966502986915529097216 -780847000097222420221623192520753152 5263379700767422524046185217392640 2167501079830970217357323312037888 -805157887571708531412037545372942336 5135034611624351691738391869652992 1168025507063000717302667212226560 -651550994711683406483261753443483648 7537656409027565470872735609520128 346790643449351669264173129269248 -392564535665007113913586775438131200 6872986280300776030950049955446784 506764457233230145213070628093952 -692979789323763759814495365782044672 641619758096462906502439652818944 1180980892883215283327359281790976 -246163721623850779059169932573933568 3009962012029262907587865331367936 8970033887946900160060432842752000 -506755989831185654530420643509305344 6583546097699784379397361717215232 2713925617322626710457697899118592 -421411385051585401192346323628589056 3976490119111282702156999663026176 6114690608857024220032814597275648 -243594083831522071698831522928787456 6291445305657080354740437944107008 9299374096524040760401214027333632 -351615093152418987416082234625490944 9914764439079506753365445045125120 2813454327673802796105182237163520 -173374516223028617608988287007981568 6995317416254536083994179962667008 8072283499149950806958448457023488 -164342188861442641173088681532063744 8812264901598414771138938361872384 2436274612606680251715698804391936 -780774349329361232308351471903047680 8753502878998403066424839922253824 4496972271761838342315236990648320 -292664476496898125550228101492899840 1740759854484827574303593896869888 3231647840428918772098854130024448 -838289101252645603777408779616780288 5235482353957023435096096329695232 1663853319399722640837336444698624 -143978216982817460408440299802591232 7345386417161069683754685628940288 6958689702594434845412206802108416 -634347352124288372891002667507122176 161800106786386592718733231259648 6319989907562368706448337787682816 -207496229978286946565636962803253248 5465444024416550599131457518567424 2215041225845694234453730450735104 -183282377462616808949237101279313920 7635321185056675444092308092354560 2351693283556099231747312745185280 -595388315815100371073172075448369152 5568320681331990883742592073203712 390713199763161431011914139303936 -876569468901559695577454313180495872 9506897830068487863023684850548736 1270013332820358280159517309140992 -325670360399988864808324914737053696 624659561189257979020600481415168 6061055413808793976323959861280768 -660161152962286330005007315545096192 8454908753289467733283178276716544 4757082355751968599029702232899584 -343339181906901349405992502576545792 8528343793748822865662922660511744 6293043153575154565858053555486720 -149723043041469039531012929393524736 2639836117710922400548674672263168 5518771330250513276863429092573184 -526442075300243355529494827146149888 193957192748352327803247358115840 6363612791787157822886919427588096 -708665816298696073777531634155782144 8393457561376249380266366977703936 3983520524021949891120169633185792 -155643594006135476534689530418036736 5352107229489405329100880981524480 2019687186417763631067637129150464 -156638463412899021084900904618950656 7750848508366893570351398947651584 2087007352470688973651424854409216 -148364744808689276952488102386991104 5740383050342437495280649046589440 1747313729540603612815800355782656 -79403790699915188454530629681283072 6279007761308201973162675149996032 1269987245940285784368524388466688 -450855871598615424320121546666409984 7044269213009848649096349955915776 9967437313388821534899483906670592 -660017400282739283832257666588082176 6958878145480904648705555809959936 7051919112899094987632607546572800 -670048970363282775167229493717762048 4723513158535696783716064037961728 5040651605542743780098433473314816 -698958678945547345927974325386739712 9632489687112870676277929095200768 2466336674144695505136431380037632 -671285049576055905510501120672268288 7653689213508623371699488934592512 5666512002650893321911312452681728 -875080916879315322695908751719792640 9431399657715302379308319667912704 6302172716771791527204669913825280 -743512836699676433631833668739661824 9079773182613437072195069216292864 9552653475130543393974512743612416 -856550271235708615943242280482111488 5887685724555799197094559094931456 793664555960922291176166425362432 -371446982091295167776134359976771584 3206907487363963305575352048287744 1466119932675845727229523309625344 -305840399720400495413445668345217024 9573835048340073915268763995865088 8456358036193373977001736628338688 -113936771560562500155969673311027200 4818905307875212277258318367424512 7393544570603033552989874051612672 -374625958935489160634633076422475776 5535684749132693822927190316023808 7408786939024775898057292816318464 -464944296713985666484057912264097792 6468399393422828720880019161743360 9335884010913091647378115686039552 -13773631709619069304533997250936832 6664148602794073773962985402793984 5200363907379694415992034890350592 -968760244644660576952683468955844608 73536273291233462830442779508736 7851103121241021294308689017044992 -860198008866077177136606339361931264 5838600057939711712248902537183232 4415175350467989369078096408346624 -601053228156981032736109046026731520 8673408645784967487145766100664320 6821670130651036598580732114239488 -864744644297424706606659261077389312 1785182668105405909131097406439424 9122344270260074389747904448299008 -885305728910816886983323995315634176 3852603496864604643864905171075072 2352413896198132049374882708848640 -200037005905254197062634244065460224 1233973534826680458027893212053504 1921147784794333987092174114652160 -870375758129152973303301913685524480 6110295217701830133126893760675840 3299952215670178363449552503046144 -394277919251944831901654174299848704 6970847662690397701004903730642944 9081199028156348874871947229396992 -563356289523253919021363013800165376 6095013745139469755091411642875904 4537038611234732092920509025484800 -98844159014559696457325978293633024 4661690891000209855184872998436864 5749852126715449936944478558355456 -58653569551183044404135457332396032 4449443858319456173270491677589504 1266049851820278602537955577823232 -805274432534673369397733202866470912 5440291809195233473800204456034304 2757032006280503338864693005516800 -277916593393676084263668027867791360 524179436736835063842444949848064 7112062244726599519529682358763520 -256978070095517911880689392191275008 35769620618437748884148211154944 3104125106423059487393969464147968 -312254188122449552821181250021621760 9830852637308668114817962582474752 5989530523829236871384836205445120 -570426800563092451589308973129400320 2407160868950965908741117179854848 5607091583482845969001811391021056 -85613166623380817203278714050183168 3710389701925319835846691226910720 5085472269305833662570890553982976 -613657084279417625647643125878882304 1602839350493626456075499011571712 5433072815550554493599418865942528 -583908366949730237942979477437939712 1131272171503474389291136368771072 8515066541881228990978405389303808 -144037744733569521263990203618426880 7045228056846795857375546625228800 9427002909594246817272410383843328 -309033093526440586062461086013063168 5819446316261191745691184550379520 7390422668408440548022173711728640 -284637942787989781567852539954593792 4975238283490479627190549184774144 2473438700557823793617657711820800 -266201512092127321010184825839026176 967717058478200314834071603642368 7317611146278872785858289133944832 -41117997120869879681731531554947072 9439983273978001229762791204716544 4712439685698985818486678996647936 -329154346602731049732252442900299776 984420543573776667288307675168768 8285689066037455991770273556725760 -162112362790423342794986268647227392 6174797582258702018828736397312000 4384276046693655917540039641268224 -742353696006724019906238280668020736 5182029225120688523254222834106368 5793479949214056542512906053353472 -121854781885798235690523884615892992 3655357095276807305974025430237184 6191496093743733242906281378840576 -53824781390412460800228797009887232 248703783213965848447120866017280 3432733554780194296076405844213760 -519495001514385154100260924492349440 2825758548611147954068868357423104 486112089594008642907865939443712 -447467739525493837864291603465633792 2927732988634590678008727332716544 5512634565790464931153061731106816 -137349204262032498790629509747965952 3565390825402985307151145099067392 830669414804731037900860267954176 -53549505162091372202950776124866560 4595011766081404938608683574624256 3382585777495698105477777456103424 -953265453760667614133011901893836800 8384220457743415258597707671928832 702884958591756381167402254073856 -445213388647810793845194868752646144 4883734473700863775343162425344000 1697587270439727121840615140098048 -788893864716674825771128181682601984 9303831366115965840818368719880192 1379366047798809235990298344030208 -770132479589656149836663299642490880 438660037877366888671627916083200 3697509663158862440234042471219200 -327962947670843085818547379533512704 4838244476051956045209536854753280 2765535862141994100822958080524288 -139846182236345693693408210591940608 8781850960478704353577868397117440 5687275332372872343509528226037760 -535132675871397897441366931463471104 8885222463547738444121978590724096 7755029168652594898843307872354304 -519998270836026155676158312394522624 6494518107895036491289437323395072 9419318014851111263466005425291264 -129759692044117021153818154746511360 135289883509514971535012486184960 4525796651313965600846433199587328 -622487065437669395867733131175919616 9868805537757745935470520057200640 590254271494756211849257394634752 -289876354411742669538927174853066752 3331072068173700233007181651247104 2764895060499964058882150053707776 -93328577563552032593868491237359616 5748809778455531550341182148050944 3761377380122453171008047681634304 -282832262547633157160622321148362752 8644189332729202003996767204409344 3691262733318827298832638350983168 -17799177912516352348522866737676288 761467655091090666390970613891072 5868290993256668602881094476365824 -901839673214364783518062933383839744 5338083485307481747768773225480192 1561036748016725680096963391913984 -426670667389952783751902338853371904 5445596456981877614537764654546944 5201333106748459100046760729378816 -455271637071024574118069325810106368 6939113829163256341326352464478208 6363975228003615878100873314828288 -689349699084148804410384846845640704 9550637540333898746856466653642752 6487015267154144821545904166141952 -233074098189351175618915452432941056 4873804852127159254395246086193152 9364558841459179819783531087790080 -7866068345848597359095528770502656 9302327066538911584663212610551808 3816281073654471398090901047738368 -679705654162908844536027628202622976 1545594594132419136927131259371520 8384255237680503517987700067008512 -526502109269779411062871102926618624 1024933830649057979064478968315904 8945361321770509619013794830221312 -610718687881593663789738879508021248 99223292525129698369098068525056 4512661121167425028456936099545088 -357673104115045327567316643351625728 1006464021312789667362582206349312 5416188149933791027111613163372544 -614808569910960437775665769849290752 8326788587833897753493880925323264 9140035699408507909676793533038592 -907685784242911004853193166886535168 2597145780182821689604118159556608 707350020131938453246967740891136 -426460058075498331391711813927174144 471202255969420597980993119322112 4699572119348031889128818636488704 -406017065451629914683974180006789120 2340494382213886557926600520761344 3175395439863821066223679292047360 -756906633261610762961868534409330688 197483241929334461076546894430208 8910723187458974332580146245009408 -10359104386028203915309307282849792 8006619946366621247302289531600896 2660707795333307949476681879650304 -701604025518497314625644828204990464 8839697873250840976225664860422144 6880696603359729563434993319936000 -558432359248052837779988837929320448 9494585385745085185236466667618304 867411148377393340165047174823936 -61069468175154607989925158164889600 1139571381855080585460548433346560 221225066678965164984716532645888 -671928837823224919622601200172531712 9626825542719732038678637568851968 1534211170453156313213167636316160 -245344218435629415148790970841038848 2557317671904843770802353588928512 6064529504146432650356180832485376 -216676019776816192963012441451528192 5283131560087615469315579948564480 2904234253522995863836233587228672 -438451884566000653561024984242978816 960084091898293932871183643967488 3301838451408999221654971362574336 -879484227334360687841851385520848896 2714224699916652743339013608308736 8298890769748341948482701378977792 -578743869113388425669766143727894528 9220885418845614979708586437902336 3658719390043976284659763946455040 -85380552700828294490578518500442112 46825900735041324358502201688064 8484810173498880694969451258314752 -575918480437188853114481998626291712 7204494023547445869521391220424704 3157784055102656135067792306077696 -737563930019970040800971499570724864 8824117288862551208812195759521792 7450324996300234933950747108179968 -788548684270844605313852840054095872 3131274493442452469408305738940416 2362478222724523579557260988252160 -426710566280387831609177620827078656 2775731085030678554668388512169984 246481207295997656383852929613824 -147073131304633194027801922532016128 5629477447991354639949234075336704 3766965755337258652004920825217024 -992445823658769161828877951972671488 1358394730751084053895428551213056 9748834967630896239164052582957056 -490851021109970745210814230570205184 4124079770372334197172032570916864 584496187316136280782663053213696 -684468604866099177486810702342520832 5576287171201544459812034115010560 7031865555198325680541925753487360 -394895074856828058622727964803989504 3560272029291550933644726312632320 7748372020660530486033766925991936 -519615725498364212178081416636006400 9170524645288098419837886946869248 2616469275319127303305473275461632 -983293753010685061587833879273668608 8331772306018649861446178292367360 5740748524470021433279385127878656 -918115755733476034448761396817559552 2340862848154429663711935172968448 6396397364174707831169697676525568 -824477832934624185911872584318713856 8222440936092792172678435244605440 983886745075943269466600149876736 -389449640535161215944852955094581248 1793509873408800691854620170911744 8880325966180015287765061989302272 -818385351771701304974041315285139456 260483024639358166902306326446080 7806400290481512515669594260635648 -509664836815128333711335089600724992 5284133617507898654912557745176576 9070539534359690747076343125508096 -360418603304669832368505544184430592 9233143514217363036255119608905728 2286067384302978698497833517973504 -444197456225128467486476047778578432 4805277731442323175633223233306624 4023534809402750864118018903900160 -763163058763336392854698987198873600 4947793183320629541171943526367232 1469635581831044880203306741268480 -704733435185613769849633416679522304 6339830703825595252945207387226112 6521297849983894404474178182840320 -397594073772029589928356405701509120 9244679371257222194789504365101056 7119383215701937720687827093553152 -626379975973433545465555719475429376 6055326557223160919018221172948992 7175043856829474367914616979193856 -17873577668267241573538984668168192 3092178667414415972251939316432896 8783780121158189354587622140280832 -701587136613449704776626877180674048 4045712493191590281960933220679680 3950301792561903956454725306548224 -245485977370255802715812664837144576 7659126341905864306257284388880384 611539831460233556310276630904832 -649092929265632890429820415017746432 9734844390061844834832517695537152 2566034737351955800360152658345984 -189761092250409426693464448613482496 2552494426230062307775929831653376 8700988696504422707980311755489280 -747900066270839385139176499776061440 1064615011812373729273617259167744 785266903488445164244752469590016 -491869239869541548097417197714931712 9284823751796919845614256899751936 912532686190584408991333192040448 -894415812923028341783740068367695872 6133159431149010280439217362305024 7097431511714134465872080020701184 -391831364471071189816897573490786304 6878333788615437257253459586973696 9689086258194514722080711195492352 -286733241743077692115530023046217728 60063782790433594309944763482112 3141434442147801424247205289525248 -592036175358634544195110744423923712 9607715063775125176429714402705408 4369976988811140908156799128961024 -787794777008375650694159547257323520 167557187054461274276291416162304 8248495144132066019911034151632896 -913839175016720616346145315807559680 8246631063962459072460360291188736 2848569129978746304170442599956480 -508145441084561058445078202993868800 1708962877595441796323275756797952 5305729710101897121176816650813440 -127980899007780152338103524281810944 15031920315226904085362439618560 6346869801793278061392188755935232 -776733070499896406988637596054192128 9891611685859213688270877622272000 2940929999668578712324668114599936 -378843341303949830127008426410115072 1217614947881163498204043050745856 5731235982811929164814241713094656 -130671763167796383627299262696521728 3686426669882248106332736697925632 1569311544724497286099489102233600 -944145293238881127961120210994331648 3703374830312375401782301190782976 7752791409439808468472689539940352 -378358912301772690445460921930219520 353053373706902888287156461109248 101459056126476555108196752031744 -295579051983485105637935020318392320 6689201445709846390290026105667584 3179005492370633239904643813736448 -821713116027882149166532646204866560 9104723745742030298228640679198720 6571507293840735656382733951696896 -917797073588785995582362610909052928 2723188086306848737305199638478848 3667655776235690139555011240132608 -833874368612924911787817213483810816 5479534516239763118708004321492992 7300244108372231351745067238817792 -203950173280970965030957592126423040 5550341501404188379372370161303552 7705883434974530676715231912132608 -176563868924107798920582644593852416 7512362125134703316548466159648768 1340374705825380023856235940937728 -988472255955893230621626204612984832 9693279559714354910630884472258560 7219311231462646559469427719405568 -743311050390596698775685649148149760 1562278209361104115830862121009152 6634913087114895834161491717652480 -587443670392507545442202790211354624 4771267521098999963699286573580288 1459728904820299932733303305535488 -689665644338513455487750839589666816 800235835601194569977268946337792 6828495801063887059785570597208064 -86921287334560190854732191824347136 5417906334163104754523009187840 5065133278812335711957883191033856 -466575177225137824810945386951737344 1668233108187935004908588986531840 2728349698452332674240847860989952 -34386086003190116074854706940215296 1964882281957107917329593794560000 2011612643395300509623152313106432 -289554105435760626686769563575517184 7395802494430208627096122405421056 744037578228191132928339288784896 -123663390098040364175739789848346624 7659413899291309333399634412830720 7826474000431031621422251757273088 -212476519430918155081706047189024768 1411585710599114976245010340511744 5105995263314843654122094769209344 -345315520131133646026992819562872832 2550573829626316314419866286161920 7670681612955507955808320387809280 -794192560121814320258646934703570944 4848564120483183735898260763574272 7203779371560238558068561357570048 -80814391154898816014070806011183104 2429048075663073393887562849845248 9971267704364631928495764139933696 -698371931835851045046000636978528256 5349040862789496139681823732006912 9630898083835680165768840007909376 -420453189221520312855799486438440960 8077653625151743930109423591096320 8292370977676258862819784054013952 -679934296401116529273582997001469952 4512806731153580180437286411829248 5436653712586051263118473265414144 -91181376634106002644346282906222592 3953752941388995774844872658255872 7141194648579100138534451470663680 -679855393276713848974169745997692928 639581345355401329542347270127616 9774895715058552786572559735848960 -984775408601902683351454465979842560 7930178253214020535641498640711680 5826531492248089109739850373791744 -430405902648177268032008577148256256 2191473504936866167192384088047616 4682976073335079384110483504103424 -280720522785863023958757864575598592 5474278270563802768927328223363072 6893642609930971846840944890478592 -235856870709779101493332670406459392 7753234052757342188287681397522432 9652641745242328644587341614153728 -940954689328413931761566150058573824 6135206952966836586249936886038528 1382652775938806880649742980743168 -771758062221675791671792327930675200 4799802126632616319976772116414464 1426450588334872187906740168163328 -622128484707480278089851061751775232 4236374025249838622004902734331904 7402865898583324394848408035131392 -826211623347896884157967308943261696 8686449201555363049820908463063040 1025190849417836064714850736013312 -123629940920270426747613339040350208 8043605316026559946481260596035584 4622117084506871183403526347816960 -389924345120153256358458303088427008 7314215882949370956932877282967552 2873026926896504306181136485187584 -749510119007753836051420382645714944 4165941270234446451087294167252992 7340667830620342291343384535629824 -272032103045854410794212444306669568 3274521149934283047586186183835648 7020410801711686597889567448104960 -904709257262594419624000798431641600 4830100293324618649528216651300864 2619805957533791346599703827447808 -990766893551823100491630344715370496 2092565820005377434288102381191168 1221606867480485323612015023882240 -394917320836494440879554076178644992 6245939971156785968382102223192064 8827959132925272075297218640216064 -367017871390001971034768401739284480 9066778247400951719108450625519616 2106237136552164386028146927861760 -993612086219726302537722077936353280 1060747638080259841841657053970432 3670203334338658987181629912383488 -53943595825284331786524530896273408 6967266602941093279197061156175872 7975175280496732891005686959308800 -228688597676152701731796011074977792 833170417508502025271520652165120 1570847679972060873830498316582912 -25231158693804651019470703291269120 2518067863604639319601246592040960 6885426102642952321198810344718336 -307824189359771575121951634187354112 3318969857041011506172768645283840 6412127988762869477107389876404224 -47364645460330782858658979466182656 7577981276187467358795817646292992 8186624413125666149167083575836672 -939434611942739855018229042237145088 5531439916998910876422051731603456 8393410278343540196689886952030208 -763887595578385896522075728269803520 213588419041730414408446712479744 2236327475055541608403864412749824 -10624004147592077392951835384348672 2841288747642956174343342091403264 6212428727171214158942949668290560 -164326948653621105088278616082481152 5717491320927650394238923749457920 4066555170347442297561071679963136 -459192957912107505784146455280222208 5883609646625867189827137672577024 9757333102329652743705496286920704 -692498923782999008747572284750823424 5571629953433249258385934789902336 8151309307984833282557878653157376 -638210916442829197943210224467836928 7050048898599415229506314718674944 8055556899068582023743516809625600 -114004442811718235073192343044620288 208561407442945186171066943275008 6567450975266878944586139451785216 -928987817337696142840454377998647296 6462018753383413017727325064658944 6470654141200359976329708600033280 -925295465826883206588942974325882880 7826141481051929316536763642019840 3613124802330273451846904072634368 -852685643419460166240429069255573504 730222099253247767891686090342400 9729580475158086372361933978337280 -705039296420512221071575634730287104 2827715325163599120259137843232768 687180015625356044483721013755904 -653797284294900563557250088071856128 82969710059957055168192456949760 93975600163466434215809281687552 -177883508740746267172728187866054656 3879112459872576192107376566861824 7679201286100779667099151820128256 -490154605378152005528110978476015616 3451217078330405757339085513424896 3822552022641469162988736025198592 -462308755368571766141132216987549696 2796176027211446146709526142779392 9196330911351043268283794896977920 -348134016051121977994302095450177536 5928273928851235479292087604609024 4568071167747141760196695086333952 -42803850649046376119319559845969920 5474821526537104994350430156750848 4138801951708397726735852141281280 -194888597232817425038302306522628096 4298371857997978539309851287224320 385928993816352673097325194772480 -952954718209870048942113138398986240 8051516311842985664224344867340288 4589678533847976806255634598068224 -715169960369906114863857957450285056 5811763500012603554663611209089024 2254429246680668524412856310956032 -274191594436112091771104065239384064 8668583290935519474026554580795392 3591949027061763090281613959888896 -628227439203392181270787579778695168 5681552055759043466373747206782976 1746209507500565566937920696221696 -523257104351640531219465308280455168 9221177688826638040810041259327488 3351447445823678242649426974736384 -260735198165951197881033960969994240 9780124731805381706579478273064960 7924352572488346702388401635590144 -575532592774821681773958279924285440 8890422478379820305826752722108416 2342956613757691759940095065456640 -370565976887713387765387981240664064 590692710276812588233523485212672 980703518602884730959189583593472 -78550698937958885929289991548043264 1597190410918183415652700240478208 9209730183891427547987275444912128 -650155585394257207313892936565915648 5052334243849723119281177897205760 3846089794428624540897977602932736 -257165789500496913708895888258105344 1841507978069567509948804844486656 4808473163211093514997285789892608 -474632249470107590191519441876942848 9045537026201605567158494617927680 3538662626137721023264726682959872 -620164850237394594883893118082482176 553330121707295934624104695463936 4203253098869288405413187167453184 -518864893113636590042291829076918272 854603599937837291716335613509632 5276206333132538154079577975029760 -791323768754449019434566088810037248 6760457272734522356379726704017408 1543258133387993730123300293574656 -622065214994049375395080481775026176 3636854148559573200187176666529792 1117940771787175488004475613872128 -844138753662543900695404619107401728 5150978108160869294045813033402368 3258208608723665145492262222823424 -860376610828514131150856761188024320 7553240230825729361120143668674560 5280167729533242583292432231694336 -382719537600857238933387559930167296 7192234017051567707339208303575040 3910126792126628371937244412379136 -873048010616303505933576862642995200 4143409645235627576596347041611776 1777614025325948568797384286404608 -442682654333590403896417685923168256 586686133913236270812814387445760 1959252424703024112708407986749440 -752468379972771337588516396493438976 3620472342222276625959145030287360 6453912156721226602760616735145984 -274706546024177374415359020636307456 5422079241253568976277264704471040 3332784886263675009614315278827520 -32843602381568518398956636303523840 6185456095115903475115713147961344 186329213592842723689040084729856 -112643355393145764234043989499576320 7618709159046137219756379944779776 6720584566279643686186213366038528 -821287817593555017303567009193132032 4607293067031080815972220548415488 6537916948018206960910503705051136 -766236124288387797254202534901317632 3878927011851477121514960807002112 4070451148445017405867376903192576 -207583739416304779442497166858256384 5144853780779597928264893439410176 2737706385103269545951294688067584 -252630695559605055964991027312328704 420163681147308152638609811308544 1199034449686758371158652073541632 -567415135992606142420315954338594816 202597199516327158831158099181568 5315401775614822896156230700498944 -6343303300372712333410579934871552 8445161122753572411212419339124736 22416034652808212997782483501056 -525802762661391041111589200584507392 2156040233655814857712383662489600 2638604655790628101620277224407040 -726387618313039637132276501177171968 2053302275968353267290604535021568 1677753242295535736756610279669760 -468194205858493960920697221427494912 4985781591340306944535015133806592 5826705250742599752982196343799808 -631231650208604226018725573559320576 2901699424193887972027595906613248 7113762541250488514744243166642176 -438607701819768662091080546035695616 6781469628174072156751421543284736 1918716044164828089328653666615296 -259565360493679352789173121396506624 83375131129098698520565016166400 2153844565895979961747064615862272 -93054206116920738217439712619003904 8505097149893627147301540912431104 4456295517311214644105942308749312 -592344505571699404495370821444829184 8121394325513848486036845992345600 3684861652387989962504522306682880 -280123655151147219204928302863089664 5145018901472499549911386396033024 4722004067980582857192613557043200 -527383541406474208967553784538464256 1158043760879731502297916393914368 9838988791648069411454040242388992 -842536904841263163310330841390907392 53968778250896529144381525983232 4240073708600666697387829949890560 -644859619514229081818776179644039168 8145009730057084003907934900715520 1611417739839837712268935359889408 -799136745856964439385163699767476224 5632705776200785567320490018603008 6313848938566841936443334090293248 -39559288919130171991188749041008640 7226186390779831850689263875129344 9480645311752350846510076897787904 -512341573800490315005110818911027200 3560025046731798725481729022230528 1420918761838522691838895722594304 -175612984343084969794868536126996480 5407688090297055505651103558533120 9559289489934403642456459846877184 -806962455083833857122413780001619968 5082191179445459802035577407143936 9039045867726887058866593584906240 -150330006200876689836687112628338688 9299878320478397215088732555706368 3942039893446627547152151937548288 -87324835112651098206652723546292224 4010002245735147129289963026251776 3229542818185083742807902132371456 -181816112980411692971603942361268224 7314122400625193216845200733765632 6662057191962393471105329811947520 -348513154043641556550847414877028352 8109285906525214916972018141233152 5248756512658083099725616111419392 -312105977020086401631484539442298880 437828507646544722406013206003712 6669222415388973871145093928321024 -174059435089708427998901057477410816 9419218406105888800000465923211264 4040624106715546526346747641331712 -29528456768912217517025722514800640 6966249213326036500994280726200320 269506439702389604319504747200512 -971172340120591312268703764532166656 2234105213803748852533300020903936 7571492276037994256969974979493888 -516755303052797471310546145265057792 6045882637545543647908284141142016 2701182388026907216480005963907072 -819971083973677709043440333344473088 4090790152752366573606809634865152 7486330312156735781750035588317184 -884012501979760884089802343036485632 2011205088576203536509703030833152 8385490821253164326766163211059200 -762971311238534103742056871401357312 3284979508855552733413085787717632 5250364272460521657732025578160128 -574728553691136581519652946893078528 4229312684173218077661202816696320 3914306228928371368169777183850496 -721116653708247715249945886523916288 7499459542406983749800038565412864 1783480805803679630347695594405888 -534192441494242644849892793390202880 1041765923352191279565747739688960 9335146503350862112563622127337472 -190248653480614679280696142004748288 1171709560419145644404391926562816 9830649342659821894330428665364480 -54682349675493508207620436277592064 2811874149855817441928223542738944 1395185613986617258543996777529344 -364401073298591605437642455644110848 1969397758085674604814449770496000 2104835996348172014097816948310016 -194724011724213063926766725771558912 4919299213972939766815704580358144 805685152427879911664937917743104 -412332189373013369849070270352982016 1471883363439005682704498030542848 470768846053316308149346693545984 -722141711083363110332616348908126208 30438445356681502945432733483008 8267411374540159443525909583233024 -663218860193480135048739284802600960 1500664992973927898524256969949184 8603344717474461942298666074112000 -127330628232791176706870985401303040 6935739963089342524207226157006848 2996785782732362221012911841607680 -991664321317101968463457014329114624 178750896816915254090709350744064 4376594895972281724179271051640832 -319705580317746276548511057420746752 7044933462774308172604910585511936 3360712011772912489481845520465920 -267129034130177217056590409058222080 3479807712156739643807476974878720 415943090786314206676833668169728 -872680511339959483379967325286432768 1401613211631127993617099157143552 773434605664614407851438923317248 -313123387918751196501025471196037120 787192435313594631858129903550464 244467398540281512737023211864064 -52232097557257831280604996435968000 8095958663798015497044227124101120 8490587573386125891096680838725632 -799452702921491000252647717151440896 9766751108602439491263360458031104 1317862450342378694706072364515328 -366912156977370564515201902790574080 2073978658097924473588520639791104 8854443740597227196175096743985152 -956474574878288136173552772604493824 4568958723218269531450910848319488 2758035718466560869916384862142464 -721555617258566374130065375431229440 2537535154299931670066417524277248 4879824988597122277168551301218304 -830665907070350656831668862012358656 3185254236637835931831453974790144 4317462701911172789608032759709696 -192509804638672644402354071311220736 7409578847741654510625342791614464 9121981203107065836941415618183168 -147778047844324649187859107812474880 3517745421601973949101095518208000 4254017612550681840693495281483776 -475516461742440790259281735553384448 9876866392589770445782201759956992 3364173838507020335163992983994368 -352580466050640286291549654322511872 9463555662988437791233989305958400 1178127106436578506735061999550464 -838258647057074471539337515942019072 4022474431882597563768198404243456 6354989636893622505320653254557696 -980008382088628969405440968854863872 8558488573768476640750802508447744 254362036021535966223724609273856 -42142720648580588034439657438576640 7529643306899206514415556358045696 8088423040179684541219238207029248 -245697677637817062112937765261803520 7194652502376650200026827171299328 6458894425743781499743549194764288 -158180147758573367708821176683855872 3711074395633615439748769997914112 4303024336991207373959023038562304 -153565264621769806892254532846223360 2621640587484585619703342754168832 7746814483500768128720573864869888 -23809477571700947549419030076981248 5382269731812142994103041454505984 2309222805512816549045243698216960 -670837839779598720714445882438713344 6227287340347409287815792125018112 2247783069738918504449252813438976 -308341136377697360950989892924473344 1728199264029732288218611262160896 7657122044432810171211922863554560 -566815020193961605929901919454625792 4589591795067544799394187486167040 5605051023177976187829554044207104 -305863842929047985762002433250164736 6726791916047290438478803654148096 603839535453067747805189891948544 -342943353761044597073198247682506752 1904323930739324245551831115104256 6531524993030402179505357502545920 -842811297758082869720422587972976640 7805063957562778790385519977037824 4524216260183380213033140068810752 -407397825280768160480307088237527040 945574493867914236933270642098176 1576550954685307606597932882591744 -430072230412452286796635861428469760 7152325376244902566353719384866816 1122224792548886998323059513884672 -767777869514487967672066763653120000 2153655367748295824419590829506560 7118140957654788993697518266089472 -895754015486944895828070438191235072 1338890411201321494596394023911424 3184900818906006494835878622396416 -240537579189064877429788250797506560 4812890444419905869587241177710592 6145523275500880199720092177530880 -795851035872424495820428525812318208 6948946480749380404225653088452608 7268000727277286270311480067883008 -540960667950760826446926037840297984 3491180873948736846632948911308800 7261459580995371475847630752317440 -278680716561684951537735684992270336 501550863273310784329015254581248 5381517033246069367468856660983808 -331977721909020916461950453097168896 45341096446684704141369321455616 8408914752707831092935372325257216 -853225916635064916899652457174401024 6132560139173963590448958102568960 1910224903263347930753072669655040 -495699240454415305142235821628194816 2974305126480194574820283441479680 1164418236108958810340737274609664 -115275973676817208631619337251192832 6771703492446173294175644947578880 9872348914744940280218020873240576 -766080301514604655125975047614758912 2273006900357870717166131366330368 415557722216548169904264392474624 -200619880546201560685282984665808896 6311937322058582763071083802263552 6719605069686887183148031364038656 -505556890282180589585631265213644800 6987298689660403119387413831483392 6837435126865565049493792753713152 -967165327684892762777746508942934016 4106960279945149795175046135676928 7702624812297135390846567049068544 -137065429680910311016035593675079680 7273182932266560416960000024379392 9987920546141172357229257835937792 -322110304883953228918036356738842624 8358348999055578815033734835732480 4554199216832026150815331820503040 -733527494536449046088220139776376832 4361349678532710057894433347600384 5959517268056012935025575713570816 -459232321138483784413347981733920768 9213802749582666544415993944342528 5739462765801065816701669465915392 -362298978203140068645800500950728704 529102415481505060561413220597760 7239067557781499124886073040175104 -93911034931412751438917356318883840 932813916847305734568085414739968 4468151315460470779731760621027328 -511029648866202381640485284658282496 104682490556060397789988354260992 3033469056462439297403548759752704 -674117326708195903560613972355842048 7785748843869728167481339098955776 3078982560541599283593238422749184 -570181055038472224709557442626715648 6941382136149950172539476118601728 6660688811508759870358077520740352 -49002577748648165616510470920863744 2591119613988775345641689089835008 8352588380525304422481672796110848 -163150307940966845881746914006794240 9934603674221508215221252702339072 5300754681921747338411739094974464 -916632850473133756771705748904214528 8322089496581862961996219660894208 2381569614691157854155287522443264 -969197356156418386291296270339276800 7276888029822973455309762056945664 7499194106858224187027151931834368 -262086995770602312958362204810248192 5589062672106201785719072275562496 9926375190368431655802431873220608 -287636798098587114008686460401614848 8249836726938377863011591451049984 3451303384224823711065135699197952 -304317027090409531114313281014071296 833155951085757691858016477904896 4691770073136662145654398681874432 -998297233031643720877701396745420800 9456148651634279008802761743532032 4558673006765953211007810851045376 -217087329052450246500890129303863296 5052289703980641971843602950651904 2256653899488985390796550503923712 -268642453856644568214309501545742336 8395335699657875747951407236382720 1398304707000736553733495264903168 -137420124752184835238419856697065472 6869548724415373505326361518014464 6716290675075125515583377840799744 -38397948219655661123844896991477760 4221819024630761525503331762438144 743234445155055661630007766155264 -537852158588210531794566541094158336 4603882887526556089074890640982016 4538630217564335897726189700120576 -57184253956236781223528869581029376 7880098646553523890821108340883456 7300762220015773792923417189548032 -623989674703987815066234535742013440 8033124807640903514953551471181824 454959517177483541548782151794688 -380217648195219522132939554728968192 4216101727142223588209128336523264 4772592396274213611240224513327104 -620146677307803989929723319526883328 5316391994608565830926794328375296 2529217199264231837555573678669824 -877891600546556565426938853954945024 2352958992778093040444974976466944 7496407051186613134292969423110144 -790749508707139471893134042082574336 1165479718893231177488894204575744 4162731755778366975071853758906368 -892150520774190227652553080790056960 1716767521122898164453086481874944 3357857144637446794853787489009664 -342973877422000462255936312967168000 424014066314675845897212189999104 9815586566010339720863419155349504 -849815204269676661596028185742409728 4889037102904977908965747695026176 3267887829143471978869873556062208 -912145810877919293042558772369686528 5435897093470559712466447772942336 4358407822363282031895671086252032 -546443986412949246203691286954770432 5686473178634991756784875065049088 7037440131711879066399702861742080 -358788834141745170892184998591332352 6471068536260163508397374114365440 6045253351954855881738171644379136 -516987643543175678800174670321549312 7582630037338425471660185018695680 7025570098922945217585056910934016 -329196355478923602226364994486796288 3553247466815870850086385175494656 3114319898029930233887071202705408 -832843945417972776080468148924448768 1380071179346113755231959778328576 110097487959375228483808257900544 -599143901303922216555402807367172096 4834998836902576553095968132694016 959067397632432836001978621362176 -290994898159367058222495543542677504 4201103484553378348632541122002944 2553938991881777165686099717128192 -260401404779246506949357328792551424 2742727420629176876442109318529024 1873258287444742174344555844861952 -134130882436447343549291875742515200 521535719162905897455759308881920 2365925517019040553495479048994816 -982254640381371655073983805136044032 4288861701791584080995030650585088 7292459927259074768293355237408768 -375606702547602127908502980635131904 6485056353799322941627739270021120 8363548545664915525591752985542656 -760673418418396825095330953395437568 7186656873902044001836235053072384 9498337956675718646625852245147648 -865752972413901540438824018857951232 9381411649882556956114311515734016 1259331203022090939694995468189696 -585543448257020886660982310940180480 4193375213513100318141071468003328 8014444920274686052831605433565184 -365901289647211241214183490130542592 3829894945030657665390552264212480 9006755103849856944449691095924736 -958336888338121196310365788463693824 5003293161596686609852725496643584 2210815290348373212597097282404352 -62210189656804973714050636335546368 2650100050119806253352037340151808 1460663500779633785661369534644224 -718330648813804668265733208531795968 5374510154684332240281359326642176 4484231867064644121025240509710336 -272005640014940327658476080608575488 6688358027901902018348182992322560 9306364827717769146520413440835584 -193148070644798814590426260803944448 5847262581041245451497409943175168 3219021056490799719510579926269952 -471545177151250132026334143842353152 5401771168455560100299454403313664 5969626228096035161689557208924160 -475815534346866968188448375943725056 2370705160718441237587601660051456 1302805737149509441734972924755968 -556389223889335359833389357382762496 362360574505916062551376064937984 3765343808441522620782143000805376 -66384665267402102808714657080016896 7083892163061231346438518599581696 3006935596927524703314134190522368 -121688149117061798357572737182990336 5298228275477448665240304061775872 1418946296983567764606933383774208 -872462602891560945692759274087776256 6832881466019613822725428973928448 3479473505727548072056268848627712 -574964735215112843045606510011875328 5525849183960110595988458850746368 4393585539299818649947246436548608 -956657207720555907377836629489090560 4032941505383760444120833879703552 5656959266850126678167837218963456 -784290110402447407983441210958151680 4684077165423643208633749388394496 3107714919141399190192489339289600 -582090377683057492197869104792600576 1216858417753606703594881400438784 5494484949265337013680567073374208 -453965466699193435144011986713444352 6023542465716616295860360569683968 7584345770463075819584786662424576 -932204011542410762664128720089907200 4282822070032924998543571786137600 864865175970939725942066125996032 -695531611959166743305023982720253952 3648789159056598264700484834033664 6197119279575743288303341545717760 -140565996856431353151287457709293568 1646771777250242806049897608904704 8879075676692516014511414424109056 -185977528444201498348034113214087168 3829271201022632569386208310853632 6770293094265462496420898461974528 -690733876993523713398801183937658880 3552390414624680651695045524586496 6499864518654603567558128870359040 -817428733328278192643230774039937024 4808042465778500523948785587453952 2810054181325891805320139826528256 -437115287149061448215480714569711616 3808044045644333348507622412648448 643920499405899988148282531512320 -440561651443166380938311572387790848 5612400002918952751516354089058304 8747363707563779335522225309614080 -56123225824781971577960250101202944 5069815918791624609312346961084416 4188823167595569554770461571678208 -694639746150104450451435590776782848 2220554478080782951462925787725824 9251904016995377617392727572348928 -91933444582984348625140603512946688 5913327071028792162647703692509184 6228961477869552804430939684864000 -427868665860628902661718170551713792 2857776396604921566276358275858432 9415702288727945648801431116840960 -851140277686596869518928226677686272 4869442561567991670850601344827392 9942123065984521628514818646343680 -856681176625132724985701496973688832 592764829975158495369059897442304 3091894504047826708099885554466816 -48884219387228450169999751779450880 4942880601549327717246424976457728 8581439504473212372804153355796480 -34379311028078951365305278553653248 4801417112015393520718078550212608 4206399314958340727601690872643584 -367886012743415413120708571528429568 7538437791789796632686235259764736 2070672760096844632676617945088000 -343400635156933617534141175185801216 2577236676605294356965647076818944 2290316666569157041957581887635456 -96208923916474814853502992048455680 6508113509415950316095429937201152 3528167078700587923533271503208448 -468083413468109956226769822576279552 643406176278085276630684339798016 913012402856556868583125172617216 -654514886488429909256797375464210432 8326064330919478271906005278261248 4472002985472029631442910523162624 -676948302485616084478213910888972288 8805874110182547507564797803626496 2047263218286638315221406298669056 -835865877884530091175217235025199104 6605233805987799155171772029992960 3658905439769721343426538768433152 -545707237652627093657667701946974208 9120534597349944261565474785984512 1438115696284477204808782657355776 -936455339487139175763465846499835904 4404138223346203658577168614555648 775080081961691201073095605485568 -32373840053179894485890302795055104 5239362418073855615420343794008064 3183643796636202869950349221822464 -403691742863395065092735495305166848 6300771008595683054637143239426048 8959581779771340763435242937647104 -339177864278703587558862934455091200 9557927974296766893541187544678400 3936585606061808930232502704930816 -7690246823985985630679102295900160 9601284207197862167019996288385024 6469673761969307973293954272591872 -617376971064070606837248463531409408 8770896450484983563627569715609600 7890188958606411577489387939692544 -70302937145879368605367733871181824 5041753081366741648462321073258496 6470647207315105885944097160560640 -66388686792142423594483294691917824 8525677140769174224860880991944704 3310840375571896052583211525472256 -23951789500563309141815074685452288 3153001539258350514776267263311872 5619800381240180725879525894782976 -227644593240503654519438149137989632 5591836563065526264585542189449216 6061187332552097511105291624644608 -126233710155347940031950933591064576 4037282665807136581173724061892608 5894569105654842815276363687133184 -580530632508618036452259404703596544 7025763831690334418021393989894144 6951250003611587536417748437434368 -577186395095795699929859278734622720 6704607973803713797057928230862848 6414924947161604417379839175032832 -167390387147466906965097536787841024 2903368919637927100515307294294016 9022569183710408030034450916048896 -601042563382944016506153235665387520 3635476821742981514071768878284800 1278926676147951678296172823314432 -226037419244951144319396065040138240 2048840608447027822892463765323776 775949832246625473811469316390912 -265596400056472207580271713143750656 8196265078906507634159623820279808 8583091814906170577538723853893632 -718599034436049831587889072970924032 7651022408576606730820749782679552 9276839140470796772880418915483648 -613990764185293258708225290665984000 7688033591891996645380444594896896 2377845201426119478687296212959232 -599694654502150975388968538303627264 3070249766798643943049498355302400 7841431543869516170352630278651904 -793491891763585664722148650129555456 8991109382092082756266867797524480 646774757127693264628888358617088 -133498011535173518789533632821198848 7836520828728377506386893781073920 2511186144980394387177022102175744 -147641901011246436069444090482130944 7134698343018587467982723570728960 1258922529125022385620091704180736 -566199790858490376649153661072572416 3664596558337837725783977313173504 5053339656899721134325015133552640 -840144773918253381855887849919873024 8650559360878449082879014873333760 8810300825895739751467768606621696 -840890341239003098782229661069869056 9519618358793964698630745250332672 6128632667699755507802879259836416 -852969535011550805746418326213492736 7182278231819506373555228109701120 1784160470646023219754748738535424 -395275509598860522698895446614474752 3014817432616021376815648519225344 5594735388284103771274920041906176 -247671122550517756965091558993952768 881837914362908024363304546729984 4384828563696092457157535033458688 -96177070225655705433873624357404672 7323060355647158514297009074077696 7436833821027362279545984839057408 -456770108106570226638686897756438528 4817177768608337752839813112791040 9299445883792719924200888634179584 -138370566144985214621473884264726528 5419101753188875801744141564510208 7561618668943156625547291493662720 -551471283273595366624011346033770496 9252155650790472367190678886678528 1300201492189568114459429591580672 -128034424374100828918817327113306112 7394069450365612020272217196593152 9188660923625692458941790143119360 -221268001498918491530477546214785024 1634840369584048448274609804935168 586999514111373044744009262563328 -426565709922763940411070491842838528 9887987848465001789498747040825344 8773687423653602128386762853056512 -883223912895638060082908089418776576 2364915524855369376745406219681792 2252153531481152033608319729926144 -967205592932951361062431683464134656 7954865479207080520322128237559808 6910812473504985195251312646684672 -368165911790845054104123283750256640 5417515473525136017067083674157056 2770931086375379140298996967276544 -925007518049698307094557769164914688 2594337146071352997872538260340736 1853542396208867028556179820249088 -58408980609978810232451694889795584 328456242123991469297090326167552 8948428020002858395760602390724608 -320608745010368705215895089084104704 7686530233261056628485906176671744 1836470161186688799422070369812480 -615138632984888823997442900541571072 8664332571872782476440719469838336 623552353441087353949305425625088 -734946271306990894428139494030966784 9593034035998312812767920317792256 7007984586125051970455195948679168 -133980624683824220050460258783461376 4781211173157022047089470876942336 7026314098327177212602999434641408 -384628077902938865108968996683644928 8042024200314874800261780404699136 8585500013768695138847454216060928 -406813886981853467504862516635238400 8913773759846191366839828054278144 2036077900728876204198882833334272 -254731851517948625364963616800899072 7427894297175148421841376969228288 505140671335037495566221650690048 -808449741181844142241800502231695360 4699096094500827342276108151160832 9550295531195009378309252434624512 -724589249931597209827463008010371072 2147171548417142160704718969503744 8109814326154192288110428767125504 -39422312289761962019472940136923136 5524376717001155259416325776211968 8753698037800914439309310719688704 -199199909001750091426462498912468992 3189853448972438400252453165465600 7535749956471360935958063020507136 -543905286489719642186021372874981376 8173961087026285166715530037428224 2637016035169157452468764249423872 -84454000159969360818314932478017536 8782240151296729016354668330090496 3655227506729796136376562666700800 -54989329463574508244333152134234112 2783563616051522743181856299024384 6096740539906567291844873596960768 -217850559248931321577946937349373952 9504128783738431612473408674070528 4443575760713217230416775946960896 -941405993340199300054660523197726720 4202343300289222321801500553117696 599492290050200682868900938907648 -399236916881799482905316909759070208 9386734104459593788229277391519744 2393273016264759683872934049349632 -182933380518320482234177650757206016 1418002928136521689659709765713920 264483775434212178571579698970624 -129883158438436471491634849581629440 632667017328966216977396835287040 4081430719885388947921618444746752 -922952079344939693684392826685620224 4347904234328560808854111620431872 964583944137003051861703762378752 -31196732531979264499370065137762304 132459686376239284981204814659584 4157020116488132068773271124836352 -245683811780239174817703108714430464 9726140668907091831084612503732224 6614072006416997118910012739026944 -641229733386080138957369014698901504 4504917454967942755399215536406528 391531253667932863901071235350528 -909006837659771105654166036691288064 7712655666701720992165294625521664 10187070177083871619511192911872 -563432918570542708494261732482482176 1716532570383611605567366921977856 5966849514142385755918460073803776 -150760085865394272463242001937072128 4566552231324512619188261343985664 8622690652166039661188552612380672 -919680574585397347062562129014947840 3358510217592032870138663520960512 9909521204559264631592715825446912 -888914340241430162307382025914417152 1316044253193865458539545743065088 9107467838083835698154299178614784 -429359040026546600836295151933456384 3953058255965641815592039406895104 5122709031820562337815618545254400 -877027288416579193800229402749960192 756641506591286376887880962277376 9024330049251545630681211806416896 -694770562898767455240621414923894784 7003836116169376905231130842628096 114883307230402230515637866725376 -166727525024092874930815362127626240 7806338131111134892638908658483200 7427778759031129738102029196197888 -466985995157093624353897868037193728 2398348460654342450032804200710144 8735376236268136349544672531578880 -642896793675180901649701855341576192 588723753003940130237147879833600 9751097771424065451451082998808576 -43304788238350543810317159344635904 6469639348901389822782318940520448 5527395869737611350891029843673088 -453162115865697881504524972500975616 6806319311527102617705361159749632 2591146528251734581814474812948480 -124550630937858531075921745752883200 1600751382831383366654795651743744 5775573433088402113346747899052032 -368770827995056597134173898761306112 4414879373250148994055887627747328 588395019088153125406948391387136 -65890854295986429806524652958253056 6362839997675952791070736063135744 2232051028272874568953201657118720 -98954215464493894804943591685750784 8076257880682871375709467087732736 4818457941200662600654387930988544 -641330994895910537164672230100041728 9385258097634238394879572229226496 7066195626820347249419316916912128 -849949920782228228902630291870318592 6485098781441326550518944080330752 2771426267269814378047363990159360 -522264021048192349552442103811801088 6558123226118045532703865400459264 862691823441713531069252893671424 -852740914403790831916346480504340480 3407070758848622897429370422427648 1124321359623597022874674458001408 -683906463533677166907615647587368960 5575120911063381062430724011851776 8010705233122693688711985311514624 -551897423763987067206589333186281472 5898929598653108512640123950596096 7487680976412110928254685822320640 -814146727581119357715793972515831808 478353008316643600988345544474624 6074211039500465377434703228829696 -510945396032395685599657618751619072 8070442759644376321899963533492224 8020038542324658086730626915893248 -319359000521344675194672760269832192 5531087122494606732025016824627200 2734357247339363089060778876076032 -512844105801677579261202850304229376 2354842529847252808187356450390016 749533697655191365084632078876672 -806644917872657642769643061668478976 2609482619679596982655899024752640 3690050912534771623987413468053504 -18425537755503421663253556935786496 3417654027453857047583671118200832 3050566355983680996477440354156544 -185233335473695503998244005804507136 8586473954964938331054194609356800 7976858266080673321477934988394496 -484285659800541005410024673597456384 9553466833306003321940215060234240 1672482801817249826461809809293312 -631729884492869305913635407810002944 235648240595087317476366455144448 6343190382806211020387213033603072 -325421299075671134496026689877835776 460719862483136653690575018524672 9119750457610232693565140081049600 -101951724490118680287370947669786624 4647267457673318900417274935508992 2461504759988189003734336132874240 -12229160938159611195035281172463616 2905790817452329060477803006263296 4427946026662056848849301678325760 -617339372310561685035846404367450112 5984385494990187870027969810399232 3094064470267222200861208946409472 -131924658595029371788782785638957056 6211638599148972344672014911406080 9631360954732035485122919376355328 -276738478345050688298199085423263744 6308785533706750312785112318607360 3723581097650773744902819891118080 -832638150309122906000926985926213632 9251371916309071841612138067001344 5310489259860368475252265834250240 -558500020069050298732683874720022528 5945928094309721181708854184902656 9138288531215048514822234366279680 -798146329208325343755708608039354368 2715667675215240024802578732679168 3650655164164185381991729202200576 -705546981689788140351588176102424576 3378703309456703257797122024538112 9277409433583511428247382267002880 -915065493627274346981053419527077888 1918098914719270385338161039409152 9503749355904814861423039790186496 -482821790691106160027181406790615040 2112979537377519836435263820660736 1878139444908668550714308377444352 -805284275487507023380447724461621248 7520885018823584062789467290730496 8538445690922312372498538453532672 -235382685838672773233238919977369600 1509621602087850001109308105818112 8781914361647518345265222766297088 -587663639756399433954749220751671296 5148636130409072086414729584574464 2368032894034457376156935348289536 -198290308091564251358870787973971968 2979889185044508666424287549194240 227738876573345781920518606159872 -676112954730261214223594057971531776 5267210328182913177946801806770176 8320324398877543349880467090309120 -576909232473495773087495184483090432 7193606753993047732457794414051328 8101927674912343921980599399612416 -721539779896387919750028052958019584 497561811162282272653418954752000 7442411648764642158285630881136640 -365632865529536554522378558632886272 3692396419391529812644730616414208 8121039650565530541014355967737856 -661653138244808891239888732427386880 7334549772455246071970259829522432 2691160243545602898989611348918272 -63113238718462687932722124213452800 7077982231964597551604259805462528 2484094484065250160274411662344192 -764763915847105947217496962716663808 6974537180850921845918454509469696 6653459195212472613674754810839040 -318826387437551799352501715641303040 9140944741123159313471287135830016 1884435334070063931497702601261056 -104764277526097815948197687562600448 4072532269761728788892561614831616 6804541098261073558712909687685120 -56438715775826026698967070059528192 8564468298126549885147524737531904 4345512167415991696321928667070464 -187804563537896003841908087497687040 1266589393003724121048785098899456 4309027197857951777079869923393536 -42522926278819233673939943799390208 9818271051803883141512649005596672 9376137351819282042379861711912960 -245561321478193579565719098356662272 8891558778634873955717252714070016 9538205689520051611981922189705216 -716761263417993843020801580594102272 2607578655532866222403768668913664 9874158424941263909033166967406592 -903499509659857148798056383639453696 6234146914163877944084729245466624 1728118188104214934819811700506624 -561721560773548949841852111691710464 89344822330560476619211943182336 1605660209819484177922587141079040 -847072788398076152632608087057891328 3671577861132015117026353699880960 1142251161157876307738746633060352 -126242192413299312062733227491590144 7322194806845288218635175504904192 1573122705927207263088326133940224 -863092108831075975934928862209638400 4429590429979330073144380184592384 9506966898748829860022970438647808 -96379597690264060800573955962306560 237520442797178075547663161360384 6651175746372517582240476649488384 -528058546009736156935816001525645312 248535676812930999088866171813888 8291213872713027918093601246019584 -250002327142335997515612896712720384 8559494111143140798079238794117120 323322629586908606073708017090560 -34337819105764410486723827390742528 3617416460035461235915361999650816 4980734152663950975989465615433728 -959546784691913734143009304925437952 4520168599329810328552007125696512 782925212775118868883294727962624 -558128208056001976210924711043923968 7020415023113428957146468436672512 2093877166651546252227681491877888 -479201003905190726571618781976592384 8579625952455216819061654493855744 7210558509544979376729880166137856 -975737487544013298075268748339576832 2328101523581631311730679285284864 7512158813619590855255658376200192 -63606682722382937179522496855015424 8650508066704184279385376708100096 9922936856250722543206913919680512 -809718407570814756518413981433462784 1165244318401666054044760762482688 9180069622873135365382728388182016 -211362995540627978450432068495081472 3468894943613065367267889775640576 3666185871256091482548414487461888 -747293552589800850087644054329229312 5059606277026576638486623939461120 2922272720676269902116234062725120 -446045898612304586356138922311942144 3301943643178441465430069334769664 3179977448716877177224700100608000 -178724718104563764786022045366353920 1179082278373438057952983006576640 1322762463001212767884301903593472 -634973236878706490932323412994949120 9817169545299770121060071384285184 684418333014156516655306601660416 -932117981655443157411609388601311232 7505075272479790030942098069389312 5416395188604397455123278842560512 -916105604428922272100632396084281344 8761943072676110436435155121864704 583869024713964768622288891281408 -911858289728911221135388987111768064 6405610029588417646254459174518784 8420535161126961469098771735379968 -536955613219625083832317929280503808 474161002402433646642058179379200 7390143458733718606527202496348160 -278866655848559582196348849110384640 8356136984428987514411713407483904 4545316375180171997371117246349312 -537506511333833746866489889933754368 9107310939172792403469774658469888 5260919200767675552186911439192064 -97314517467981857424280357804441600 1204059504063246526560619341021184 8879987483093673605947489882472448 -468453295536930844565229643428265984 2066089188518364244172971568005120 8563450263761091392225783995957248 -512257800195263957329810189254131712 6365003188067287629194824066793472 503847057753391210946697325707264 -348288614765980171101154212485005312 5459610115804193003244713509126144 6551492369161416792850826642063360 -748489872613040041056748176182083584 6588390012996640801527292370092032 9039882104448459733749407424708608 -837175011643149355180419306225664000 7793287770914775461015049927131136 3038439740364395256522906542276608 -291840045012370703981175397077221376 4859461742516983172137033635201024 6344666171662350434177914725466112 -675502564440462631521780678820626432 8218315622564467224819607944560640 1141837028561254403869259599970304 -943773118847961029635598438121865216 1413870003688221115368910184513536 2410353681880772048407864492949504 -708516871245758985106604706083373056 4649514411898392818421485346488320 1750631978684937242528621652869120 -459938026219028279996865463176921088 6667579749720584600906290908102656 346250721582885401209313479884800 -980054622121043099506661879795679232 5804524997265377297658246600851456 3898992629000414223905394916327424 -365980384607722498192152484967874560 2269563245679126478878183016890368 3480059263068725937925371470020608 -713196893624990732655279491229155328 1526795691720220501777741277822976 3154067642597851136161816650973184 -349999338293191474402415301372149760 4226745471120158812364233907372032 9511383552073506740699239381204992 -610247576508225050634702516329119744 4557273466072327721953108091207680 6656149922594490475861185721794560 -667062780471662348154443498522673152 2611736688974196924079841935884288 1561203076775535224014843506851840 -824527098774515826726891636998012928 686218193789300453198786914680832 5233097636949460836965666302984192 -823724634622401289092469372718415872 9894614933772164428810289479155712 6697914182296814717959718244974592 -570684413145550742356282634271719424 3162694922196163952031730893848576 6202148025770998347638073777455104 -770418142105020331916683120419536896 3218932897780072705254934574006272 1976110667250662576573751016554496 -376503662429266819869962168606654464 2616470590843434550595433313337344 2084710741970859221494144927006720 -631533400202933493088106999866982400 5395245836405012960871579857715200 367486629930219254560230337413120 -752423660586584636110740474092847104 6344730318935141182852628324810752 6082094143166889058253718314549248 -727671408668994978356078878595743744 2769753723153210291023532020203520 3051916964983649545094132202995712 -536492557010834843410776274746998784 2015606041232736658149120195690496 9390476124860290082447101190471680 -86029518446281757991907301594759168 2175782564827079805776615467646976 2112192419638701470696260520378368 -960909870605290539059724102368493568 7973399483362520829477514410721280 4239459059855555545453251996418048 -314844008074267165422414427878064128 2903377370150439329866112982581248 6433423981038445227682089433825280 -51582014943561765000653469317595136 7744708683024627665379296957956096 2673537838583543853923387855339520 -693175945896182031186793654472671232 9455993640876275296198439141900288 8259755910097160487729187925262336 -671041452677298933987349601143750656 7918344811736929202445659538456576 1769702773151168820255621239537664 -211579495443624454219466985718153216 5073401717315995974357869412745216 3034152330240440470372181593817088 -477044419931438339624331054233419776 4297322760089488407347894568353792 6272265495568949146718110329339904 -747638941752304604996323859421462528 521454026114689840051602476498944 6691751562739759199646341815861248 -883089571790864201727307200635863040 2278804162402980352467614748901376 4055179719800708110313263760146432 -58450685998849947680035647610945536 5270904473003489571617542852575232 3378198712528352987941824775585792 -230712231150484126494341299865387008 6693849852201287571462402764439552 3364610071417449984245830858571776 -812113725167455415790193123925164032 2907141543067936817002842496696320 2143879260224016700443044448567296 -884888195038976603071890139025244160 4327391796954313420146147751624704 5612342893937403853331490131673088 -695607280254482483280418924901957632 1699604952198481850252751750037504 1915204640986662453180663435624448 -822172649260565264080969996347375616 6206582619367971639023112994947072 996684062308349713806638501068800 -932894066042065920595974872593596416 8478534066664652574364212542832640 1807770134107846674489407732449280 -869825524949746080036480515867410432 8467515733377541662420996347396096 4126062976098736666347571752468480 -687354870338030869314905057341210624 1888376350939579914016276470562816 854939874100139744568422334201856 -398056150518666156978746163032227840 7517416032525983248011719633534976 5947272240699589473697263735799808 -691298752761199550807223214987542528 5344743726466078064790302447632384 4975779302912041054086443449712640 -702481524001081400978010680573558784 6137442415715860827204224737607680 4319168622900835216511428143874048 -271889865187583690700943859937968128 4648872485073566192193108497661952 2963542979922360935720422163349504 -163598619120688927211823623586185216 4860450888530921673289890632040448 4968106243543035339113622589669376 -760490275217333801248312148973584384 4753138159780395503557977860734976 5207467207875575147462440546992128 -604989304457289991629809131783716864 88925591798728455009939377618944 9450372803711021896730580860534784 -35158578558193346080658629748326400 6905718548498690910846445504430080 6026301782794797116294753429749760 -658980264373105424588149448316551168 1956585748752284660120542339137536 6647735940121521888041650568036352 -484765043030248072733985361572659200 3829526396207004374542903882547200 2108951307400002124927936745177088 -635319016019157099339815096047108096 7565681935216118644855922801770496 7942002696125160479877815448109056 -857471999140804619583352576795475968 5368263145013598478731976154021888 9018065441602394697962899361497088 -67480445311350431967721548182192128 2568051479612810390946699538333696 1526925421458161748622067743326208 -958226248838803716588046066854658048 3420240743504638730474292781252608 6256056477548147349357392608362496 -123028155724342825692173739755569152 1539383452796630207755693018054656 3958531594991702786842354671157248 -844769672989142045408801858537914368 1141158270932494157379345248681984 7326415117876837249954854855507968 -381476717303195517190580747171266560 3121178130142601004205216295288832 293649364370044535549845080899584 -759294261281164440824954623283429376 58378285825928901648503692853248 1594227195882310617234098471567360 -507669878028135755482804319128911872 9316065632682263089792366856372224 9218094760343172067314878958796800 -217137055715677644540556390827032576 1055547457481958762933760070516736 1728672149612237062939645241720832 -691482545412086850314548157226156032 4045784917501646531946325945090048 2022491698876864948258022877036544 -630602281118184917657504002137391104 2381375947940613462667118761738240 4440954361422310419707157897281536 -927424886564693642178003583513919488 4563192114801267429148942040825856 9566385076708523350786356314898432 -616440927052895736693058714715815936 9851395846530861437295352294146048 4674189953021478015831704973869056 -124519413506697893446473067607883776 1852640027364503485420839819542528 4018044884017841086531577921404928 -893088253197764902755161102843117568 5457977719732094270658020521279488 5573644970254873648563324836642816 -110781926014945821111911790143340544 6402349440531486233322938483867648 1620311535675741458905694275108864 -504064814208761553444391522089828352 2924348670331899135846837364195328 9122101309603316877253403685683200 -769787204983049470167013755661058048 8559771122655261721668934556450816 8207355356071278773598119622868992 -754015151795965282842337145853575168 5868587450906903847471911767375872 1234857605686816643889940257570816 -36771315585030038326819145199386624 9737420667697701162728305673109504 6694314689477177864957833353625600 -833253735732319061106515459520331776 6440446451205726731335173584977920 4535709835428778327081338930200576 -527492852560868141458084962443984896 7337244693611303859160740991598592 1332481191371735728138247120879616 -653370448959236645009091979334647808 9577018787529843109446917478678528 6260026504041437324554362291224576 -584612083195496791012011016049393664 5344606054275723045338134148546560 5828714775132141482288593057611776 -711322357324531537195911666034802688 854004512118151473048576407371776 7965626506686941281423842351251456 -76616843298484586377430295128309760 9198470595312126426812571111653376 1719065537739171706878139280916480 -576968880910032054458807566657912832 8891697566850786253027967376556032 3060583876857344053664227075817472 -325684577900344008295841443436560384 1203471877039495088738904597069824 8714373858729793110936554500521984 -490983059157551390476706494155849728 3089678045393665157964556757106688 5599939794940760273058625530888192 -746099160055718417785748996489216000 4456763194447696105311273985507328 3266130244057963651140900570005504 -421418061116036855492796756044808192 964466539362824666927087757557760 6995122946696396253808298687463424 -526593795273739607924145145409175552 166963075897733517993844697726976 7076870566375006036353984315260928 -495826284720057008215411119110488064 1358346231943441166592814566342656 88199856646195028606436520230912 -649568162149469386126963542113386496 9524823703344322721839229146497024 6824234354943550566848446343413760 -857783892510345604404539899454160896 8361136294219281692986588377645056 6346554122078965299344913547132928 -567209002896340622793809058619981824 1794178137367229417807306679123968 6129334460483611438402955120738304 -781554290234559764997015303490633728 4209598744054813740374229289795584 2984283672038530254751463890747392 -417867402604605004617429265672044544 9331360897841048974373761834811392 2814915281633829727663963672412160 -575548400386789097510051041031225344 6746211403284136015320500236451840 6244285523921460508684150135324672 -822224481304342976890165744782802944 5610131734321402159689676470878208 8973673175755722322826020415078400 -366002200894268111288515593624354816 9546068751448538689914878342201344 6632427402792046645809456294658048 -242629160251410441629732696217354240 8713065427118298423162562647425024 6081477013721329913111344928784384 -419530608365006032691239990071394304 7509419535226936225714494379130880 3011051936465189131551955256082432 -632064481905404605162793056006569984 1561402544519511340146308084137984 2455065621717046564703902921392128 -347675737397706640912911440254337024 6400561275387755006879701921693696 9936952373994173581036641115439104 -560099459252327073412115034301005824 8700889488360897070396154014859264 4666091117627431134595708203565056 -25026952781758994165491169222459392 3720211568146027393513914252656640 9574324379090497995539812295114752 -231796224337073681215761746401165312 4448627334855792655321073440522240 3700674458165789181560855105372160 -880516733829802899073947414369927168 7075841092736488287669926294978560 3841944914938143643181287756267520 -682287281544058537030368781322420224 9498249444909672740618275198599168 5953415655058834868280960720306176 -916517130701252117765314666611867648 1497193960466094065917931343052800 7245903437878619885775403349966848 -776994706757230315407488533867266048 7350442240333093937394000972480512 2185896501530059013961998881783808 -841872865739352338073884102817218560 5735520086456749707273634735718400 4210444304769953108794141774446592 -325288155199878199764715717529698304 4841897430528340685217883825897472 1990671032924743762056253139845120 -573801253864861568465455578546700288 9152471476876600710083866477461504 8577103560204885330721712277291008 -332642485911351336188595347270926336 3722529063184731619502975289917440 4207599522994093877408985734184960 -312071267438097528486115248607068160 6147961246957418292735337629220864 4046290371044787331025651497959424 -971491706985331799037525175117545472 8088021446015413650741281328988160 1630175774283044298193906815729664 -814973120300348906234520402617434112 1677421352248783583680588874252288 5064253277401573452930475423170560 -586789335152401277383923088115105792 9235425493976443051000424319418368 5847618738884289630335298787344384 -858232357191006609766410125930659840 8677062269587045287672341747204096 4145842345281711129674689611300864 -886081611945981093743607645806264320 5267439635985960006785720842715136 2788717618881233993541985838825472 -344238574276761812124674710120169472 1455322154222747516056053456306176 8243102313059403995579312540483584 -738490521971066533807468663992745984 1895822956179979455604247840686080 2132519789674870826586214909345792 -921397141781022001294718096082206720 4587214237623475170359357653123072 3912483288504164369494703440134144 -97665171084591063141989878522183680 1482013536497928964461795511107584 3498394780419644784845287357153280 -647907304681450399041755608648777728 1374310528531523864808139484299264 9286757198446779354545932747145216 -107934422475022120972418686744788992 2636852662886575978326123649957888 3433161114552286131394040863653888 -56590098676714462597051356138176512 6203888023639526850567198969167872 4431814820324465743675460123885568 -448040581672310900870262013609115648 9250927943653379080920008499396608 3237139916430047021775102071013376 -479051570733778550565858490240204800 3688907303816268569838950476152832 9151284772794601232309038232895488 -373793420295852014806286928445440000 5564046930166571640458375115833344 1563314966887779534743238625722368 -500219360254445535846145942651666432 3697024018122379828224080568385536 9882892112083952095943560838250496 -944321621284463822064069982396874752 5850930569912493696090595452256256 9799335373653477356956593025974272 -886794953538013755244405863516995584 5964518220402429434790303001214976 9401162133766421839665375700058112 -396562976592121230782160274156683264 9162665841702282262652497554309120 4088825027040977643873381075910656 -749984575465835206954501384095924224 8590236476169074767032801650802688 6728165643085465288613534969626624 -497615803410856883075722180009394176 8831038487809808969168774940852224 4641542976045996548228202952130560 -817999137466884351293806239117475840 8551138712837421560805219616423936 7267646749282364496520821759541248 -433027430299766179164793541515804672 1420396625239572837156209960157184 1056788551957168242710806343450624 -19757719529743844271171334983122944 5002843526086077754546067620233216 637962130861855843974204971024384 -263919881577405738006073333763801088 7849373509584424266322278409568256 6478702624970453756811991612129280 -707002837499953456593815023889940480 2119805058890412997786611042222080 2000027653558834671897027041820672 -950358358524622327578450313401597952 3396734406786295281798770243665920 7110239282779516098734188748865536 -106901586272186536315501118096408576 5672318343092652966320297182494720 6060671627883130455119188925087744 -710225642748682246044902455332831232 2775681402732418614432903429357568 5164486333358722842314549485371392 -349962416139969746553951123446693888 2684296241119616132577612764545024 8901675908253760052830331241234432 -819419334592990466489921931340414976 9631495084003576577040171696914432 904641686169915832290481033707520 -589689197654943417556838958806073344 2727611039527815340017201186865152 8517752960321782974608970975543296 -819492559520340020787892769374863360 8002299711923675253073089627422720 3731297111192345806255142301859840 -79882673535789511218581459320176640 6523844787911750677338095693594624 1217537577588264986440374201352192 -73700825681209023017676329896116224 6578596566904712119707463231471616 3617618257975729429000319425052672 -819840726973282185856548892387049472 216233251037017954022491242364928 2673155739707969023123584626720768 -360303064489125986185587646959452160 4090243855815525171102333920083968 1299414391317014260143443247366144 -426943165632770933072906050118615040 5662580566133298640189268307214336 4665602413156945641219791937077248 -396864694076231929301999323770257408 9579760552727771167867555475881984 6287456773971790297802964423671808 -736984634020476517167223314141151232 2948195350661919108324273975984128 6606516578948623345477576902574080 -606934953244269860257945445625495552 7316939703218388388104332881428480 4749480041351955648631300887150592 -723103326838864189781563255560339456 5272081348084238922791157095202816 1460928698440502733689781823209472 -795288367155966305729953161520611328 6624640563002570827681964266356736 1740845709022767194148914270830592 -617285665378031019485658387618725888 4292596327793306915135233829371904 6930257528800368185347897196281856 -74960915201839351500810608149790720 107366951774316533966005531049984 7336068306671976311931986667110400 -137306432615446114553121718885416960 2461460468768437258562197767847936 9553373725560020319264137768075264 -70105183096634409582864830952374272 9219734363525144585430383724593152 9346341944657373637985117468098560 -734570951192941002614736454066110464 1402917084047627037174087808974848 3157124880302315629282817078198272 -642982423924174892905447333612748800 7456870410082062261434194855985152 5394934540806250210369993812475904 -735875681119023596586614869085650944 9908567538488223278897522223874048 2128669986293472828991837845848064 -502384880409466135051148266271932416 5073051630638590497470637439713280 2925026295068836584248871865024512 -160443332681661691576209447072038912 781041298075350925317534333796352 5778123894016391049261459024379904 -535934026830085315157000446694916096 3292933340624705243844255735087104 5379057016731129983014030677114880 -23415168692067941897619187752239104 4782410622879145839183792462364672 2061013263696386320214116754522112 -485507939556177298083897894733086720 3114168094001683762645740627689472 8323209433103895695807000315166720 -602754189092096975230206675165118464 1604946395976603114948452696457216 2878374536564739998292192731856896 -430355323803663383635619878900072448 6415936968669242947613968411131904 2740540983218359413200236799066112 -723784307446226357006268446019682304 3022216021085372093531178041081856 2695601982892217942343825391353856 -171451879876507674161938826147135488 8880341967700480311506836387790848 7820436152419423784486004305428480 -947953690393893916751936175611052032 1244042518693241839014349069352960 883411704744878678441052478636032 -134070610465222868183894666774577152 6217083791270877017521898144137216 1495501535721160394283384230117376 -973205472270193780807611005955735552 6795745601750911616844913411358720 1135692111388605113865743328346112 -232335876473061651266753534720212992 3821493660651433151918051170451456 2902057708077862635920537166020608 -360973443353012165606669254255443968 4378460696924506384880946531794944 6169022326882851012041139814400000 -722330117663464047236074991683371008 4649307678736722159885530563608576 4234207938138306825421391631745024 -228912409598323005518461535835389952 7547217532376409658781302131785728 1566549865165710620222102049914880 -354872241015641235480521362278187008 5711981708308332971728117365211136 5264802855349699594175524949196800 -795766860479089153495269109040939008 4582812944121276045923998991646720 8200290524278841640536136648491008 -751820274688627134628144233203105792 4940596328378900536763638282715136 7853970491472109642505491589365760 -963135368904240331892258505224093696 3650435845023781884824716148998144 4069684786263796325669281208467456 -375931561903174383063919572442677248 1690240763690172481676487574945792 656806928660785306099139599138816 -92012870791152356449199854001848320 9586669067395136071003525965938688 1704703614375643885033735143292928 -862030169162588885335094578703761408 6109415861041473047582960124952576 6025444778149988887258129969971200 -444664926086741400419635741457383424 2253793830012321241863716434083840 4161217723897023994504222745821184 -222535089891374712294424816107126784 5023836894297028799061068057935872 8217797447956490674916295897513984 -983748763714923099478032441713623040 7329867901551024455158603116969984 200099695237399946756611312189440 -212724475841831613446426000917266432 8868434889190811165974557582426112 3693168353835530444479541786181632 -95225713316071399600115165379428352 109836665256817219759243297554432 356909570629141165767610930823168 -31929758809935201385104705675329536 9729213175841895808086453468004352 3986286719729977627591463244136448 -336979490880525927417096759832215552 2249780008149727683354967408640000 8411783123797051612517401580535808 -237507102669322053844567297124990976 42179561976710186617473446445056 2326984947345926470985665587707904 -226535786795293960220472428522897408 5580863517199684476198526614765568 1744754980813908082226438655180800 -774114960318671999795423179117166592 3428605559448472192716805811208192 9005808617260988095951963141701632 -114514727100034782289460029034594304 1091150836880309768945626821689344 4527052272123939075543849548906496 -734645294673472810579572610553610240 3257526561482036175540349432758272 6519453065604235276652501207613440 -729422176162880938417411655909507072 7949544840661409855133379725361152 7458866537976249067265945528958976 -186262396128565974493111980939804672 9944122581792737032282930103189504 1304640841427872572274789490622464 -756966633645860121897302197517942784 6321252419211841121447516630417408 1264376725917704603677116178890752 -147115621704218125612497887597428736 929789531089535460239162984103936 210963314118204329718133722972160 -506052725053664288494795221456912384 9602135088474037237593091472359424 8893058360959737114294396508962816 -462887327542713454398201008603791360 1944114449899739618724649134718976 3444086593399358235927780775690240 -828954314641547835463955678020763648 8607614250290551544161821326835712 8359608512787267779496141146554368 -533748027783597103758920062272012288 5036431461881616041147202118090752 789346168229459633574506968121344 -567273995377589079342904339452657664 3237992956031468075275007924633600 6228644709757386351699473456955392 -569688265699455157521026102903963648 6105535471497025562681136310648832 2429202604384483332292089466585088 -79547674800340615043014056705261568 26978810680349352086872839421952 6955023839764116509413321404841984 -89630364139340518484635158233219072 2036248582923119742882633635332096 6400724372841515287174569342795776 -105620226559227693268837340777807872 7805297373204343217791088554147840 9155900903020493823776170363060224 -703614107197407155835750914459697152 6427313317272321315465080741036032 9304528372578372282365296209035264 -845758058327822121891403541539454976 9802988157707030292603661931511808 738347787550020842934515099762688 -519917097019972271445071811812786176 946475567106648194383071072485376 2458119509896623105201603235282944 -65564817496681846151541874864685056 1936237679862137276860785932369920 1503953661469957852394518019571712 -582099867468433750111436582592446464 3610261744093064005884815322644480 5534896016465457876094194649399296 -2858931259694739914149232344301568 7637136433282001300511806334173184 5588188738808667816649491308609536 -507203251762850455095876438380773376 6647648567352126089291076925915136 4407303620057778693921349524520960 -730796832546792589749516017321639936 8796820574126797502941594533232640 962713696104796000271633932615680 -114647893521083814380976436294975488 9848111588329872998322740853211136 1808195016733154994385929839312896 -772326668141868708703269600177946624 4607386642999807240412796911878144 9056444319179462847171610047152128 -341062724750452957826201138522750976 3727419641339186379828941717241856 1935305837827870824053339322318848 -860673926935159646810201676652216320 1864820832274050641545366662545408 3316873709006229551095641800704 -577690380877573927789994904679088128 7370682813281009376625325215055872 3146663808897533635866454719987712 -265372365312654861548885092079763456 1416212758224112537919052098568192 1653257713465086783699670970400768 -507389151639487544867000097808842752 2695114761316459835704812551274496 3718490830730716765123931497562112 -325406314969846925586230565916377088 823781070856580934748138746413056 3325756593580085935658267748335616 -207495261251227608338525065549185024 5533317002219409463287489295810560 8532793263683463443580662847635456 -91389240778212274584525757879418880 6883268817651038120743760966975488 2698670836397399407720852034158592 -651029601386039578840627193277579264 5431258394708119268671791474671616 6735686029601781978856135208206336 -841282912940908418981181554551685120 7183090318964627152828342688808960 5794414867548590964570076286550016 -226551060893337866701111925749579776 4698222445189350991179561304064000 4929070725517281505893374563975168 -80732932561704260513940306378358784 1869742100997540919900761132892160 6071261827321205977823261776412672 -631158046503597421185595411097714688 2497921423836128194387485474684928 6288531937237473188786168452349952 -497129105097032415095764775872757760 237793404778601653043229544677376 1471829507285384199645323543445504 -681338201776532063596372437481029632 9744377484726371701571315757481984 5210947740904633390099573755609088 -78348412235046683214393219263496192 48472901368400488761828118102016 5803071617284395413428138613407744 -999304807107361785680331139637575680 6140209708978981560788731826274304 6563522783868187625917294885994496 -203157078838320587153365061299339264 7784648153987061514622523209154560 5893770679072458501113577635577856 -979438510388878597790288153289949184 923066559536030828216467194904576 7340779997716592853344122356891648 -753790655153744604940225291254497280 2918298870330523405090162779095040 9909213514843746458586494034509824 -398515881267732391724196179885424640 3654874518831568034680544956514304 9635509688755090939061162362273792 -763992280688468165306610592864272384 6275136394904996746558889690923008 5560701409047348836814561946370048 -490638850968919570065450596504174592 6056893369225908231191480758173696 2370809168997266140199452382593024 -27751972614719936424458728415166464 5066416790168110877796300492898304 4896626952598511445181850535854080 -820165649664351954892923773718102016 4312809539778399000853454660829184 8730593543896170706916429338247168 -469313408250773453860134496063455232 9746270993591911442484090864926720 4688118535538158642282906060324864 -64206336927560313659188107467030528 9408655093303067773373318843858944 9823978925549483147548936921677824 -302892542982475456020590949340020736 8545622195564753980866225370038272 6445118388702708155598368879411200 -133442353798098871126991007362580480 765274815913684387444364045975552 5147347651547577804332052063977472 -993905752214074212640992819282968576 6232848412907207272258845706027008 7290503089346389839161191888322560 -513832511840414462077181475036332032 208677080673066205642590636736512 554025735867111172123971402334208 -798395518423382235867508437711585280 5923902650487553853157002046341120 6466324229708530702654487570415616 -697059101044805945728632646572965888 852963158611538525122135429480448 1325379823522861236193534924554240 -605735286291118878768385224253374464 2959676950946458804996597876785152 3341380082990360887234958582611968 -139780156007600429776722952345092096 3253005717246052104777970718081024 9795532423471186631178386042519552 -1473763762944339068720307654098944 5826629754788888597365987513204736 87033472183365921286091595317248 -196385486131837536761809535844220928 7260883164514024814938643731841024 43911614340412631448481748221952 -502722849287045541534184417347502080 8942312671268858883837339637907456 7411962029651498724270511807791104 -979123867708978082350460836557881344 4046914156494368384252280771182592 3789494640224862208192802155659264 -205319689426700300314749673318383616 2787405294348023816003004024225792 4956654374410954369847033065373696 -824179677531921852799442018556182528 9653784348446088193113927316406272 7625856379235985947440907083055104 -972368806905009809145707051540807680 8106921602781369788381902414020608 8437017216303270310813900275187712 -880055965642841274907250433739194368 8961084894253578197335212019417088 6842266899831142914800905057468416 -549627454815633180298387351389863936 6673317776743214852967857918050304 1063843025165378785041122760589312 -350045556855417229363461391768354816 965399348522694844734479441854464 2176953451625297469527748899766272 -862034792141957123976677373067132928 7019423648256775438921150572265472 2089054011568900179257565961519104 -242302033269130702754961553132355584 1040709036547856441431655282900992 4594287360267030174779949728137216 -662583840056470840339635928347705344 454460007422904457797120122945536 4526009162497978613391740578562048 -481128267371091240412135907611639808 9443010121965754063632671575113728 4804526962470842782458516464467968 -959425138756327635391960165665210368 9781063628997155097760543784566784 3620451990318791189978467683794944 -825431773073335269247424216537497600 9729040214050157185482774506635264 6905636703498108294517471947259904 -694771308194307665757475629281837056 4239202168463855743462566258540544 7689996726648560884555510479585280 -938571406716042827118362240934215680 3219102361146968957685583677751296 1207971729278204063614236639625216 -571909019723380700878583825797480448 6243559113338407531327619032154112 4532473461965144483398814273634304 -975058609862130327382144996951982080 1401368801812172405462105031966720 1849949782019079973894957196902400 -602010077702073444987040802787033088 7868656277942667908046078701731840 1309171896952328729656609023721472 -760187083702187934915327857449238528 7218915074475052308435258092552192 2972656127182983677395952386179072 -954949661046689459415617308658237440 9296736325791084369853368321966080 8501078457222276451198023069859840 -414283784879077797589781992142012416 3175355813693265385655929533366272 5016239862068911770193917196107776 -366410012194122845213252818544099328 7673558528201790542015559752482816 5494926409092255409944944743284736 -499311623497918460949459089754161152 5521608533390715550222508774916096 5272168522803097700623840417153024 -665359673670690532635391084061523968 1842031890706542540461579066933248 7973913045124294041907052345819136 -201248613986834464275116379424686080 26074759442508979704372140179456 4231611172064648047916970122674176 -917589430421127345732867223090888704 5913543779039256088650643696254976 1284807543969606237153462182739968 -88048279899526127957296495879782400 2083909762566356381273340405350400 9477638468717594027765886871404544 -589393580085920067214880172192825344 860675541694576436677270208249856 9110920337771963556002756409950208 -45091010609765725884453994673209344 3174663774736578636814014566367232 132390892524717022663413136883712 -77343564314559754067104601280086016 1478797032901187359020904519565312 695952552154506994079498860756992 -114966107637483265419453329162895360 4880259741665237257349325033308160 5930108136677455351472420296851456 -271521400714319465526106266888306688 1182594194268315935038784988512256 382624830411742843426760057421824 -474327806135701697292015155248365568 1829435003687102873634042850312192 9028801487466305632951658881220608 -751173968393027815880644436395294720 1511609927272341027757685748006912 668128983567614785906396847144960 -149282321453106506980499663093760000 6788746579706064206445600290373632 33941761839092278267136918421504 -782650241109623895555408998237732864 3752818424704704788011623422885888 9336758983457901027219369371893760 -831809090325212185979095856491528192 5675531441909097715406920461844480 7321882528858857577493695662391296 -970193650363693498395380851377438720 8678080133529670346850547512901632 6020055084737826289275016631549952 -925129012634481092274571283649265664 7204874892834236355929387424546816 9230084233355078243141380495900672 -191051140322661726092878252594954240 7732206894705996556477329162895360 7690898762356284782810408087977984 -255733928048015535617784723009437696 8976152596967223529824196428300288 9237399739526035064759878028361728 -135515129201334733996141764465917952 9199215047521050857146271408324608 1180970013873250670203134172725248 -973162892619975585717128767115100160 8942880282578176960164282559889408 4083441258946912912818162603393024 -678605363705613095727763087981281280 2157496918667718037120300221464576 9147474108890552942154835881361408 -660721643142410595179724225598455808 179973803818710356197597325033472 6285060717440541987474043196932096 -100270706942671340800700021678800896 3280884561916860947519633535008768 4302857252971181766624761234849792 -445896276509467701607998818629976064 4367805136042906179098342051545088 3001168102819814959639506077089792 -678248431672650383755482230903799808 8224277205547294319753830294618112 520761099863096256975464577368064 -189421901608716853659692272581607424 4500916753323669401543063715708928 61588649187773116426026349494272 -941383057425403452816984449786839040 811277194886162147832000344489984 7738448754238525743774055398375424 -835077919379791288039767116624166912 1926729342739523720920655005220864 1407858350015086108048545063895040 -877429750761578630627572095272353792 5984628471064995792510459567931392 6881161810557203836566124862898176 -578061577026084597462414248372076544 4735880868181578605587573470396416 7663328503853139100816707845881856 -682256954789613927574035680670515200 7383403148612564560776412025323520 2759412116546692070418293612085248 -529629304680722945643780571417018368 6010973168390654749625893471125504 2253181692647773235225623934271488 -984658980954842229149458000410312704 9100147181774674302283144709013504 35857440087699759148866268561408 -981577543892660999131412884579418112 9944036985061367274053573376212992 3343802250976970977426319955984384 -309339823502671108903082254365884416 9433213455330214041019663524036608 9140769165149066672485438930812928 -556585454227409179243500610315616256 7006439722483743971072025494028288 5511327264018381044207050823827456 -87218285078778532337903269515886592 4598527613287140536039605023014912 2621380073343376728794275805921280 -893230655452328310025292275150487552 8412018531997642229185905671798784 8665478480107459861380599923081216 -145192744900937090693157234422054912 2764449386980329661276370499534848 8737933924224680335472317798809600 -88966793530915788703395824508338176 2303326494985575634151799162667008 4977923437005519321339453297917952 -277457493994125144048554845692493824 669883932947895699551730316345344 1892616316921218210084801451393024 -530513001074245759470635992062361600 8088232027604832853366358379855872 5648729880440077965953340127838208 -891162696709768627290084844263964672 9400662648587133481137041655726080 1266515468932675108212343536877568 -269247430941281990378536294372343808 9707202068012984117295589403656192 47441464402761987974533702746112 -960273217256032480226016548261724160 9950830673956162380513026018115584 1542492986981705200729833951199232 -122444379366649222040297791803097088 7259085451302686632649131093393408 520517632594453236251523314352128 -867028340172587199388203033296896000 3865941896483003741522038366404608 9440608873854747527671817305063424 -179289170774201836426136203235950592 5977563493425014942121953071202304 6082476743997736910124806830030848 -267419328514804534321451941289263104 3477645986189668488135711815368704 6488179718969965527612734492901376 -98662876597275803963333556282851328 3739697904377735797946944193560576 7464258315987782157856559838789632 -633798469064929223367984042718789632 9745632535960026135775081813508096 7172929085415086102788173121716224 -919712346695733771014638377159884800 1037056234023839513269629643390976 8776622282973343108196456185462784 -363947668046267106552950876327116800 2340370978395740292121926834323456 5661537501001305123713027030384640 -528639157468923263749810764879233024 6013106303806117054471243588173824 9760753080155311292193845568077824 -647978415483031080057516159240503296 2668021936829375785128187253489664 1051418014592237920890418376998912 -646535766725529137300370064670720000 8820351917036385105833101545701376 3687754180762689312072502230384640 -82031683258483450122539831113285632 3823482510762286282041281168277504 4741350813188783813847592472674304 -208421049481429498866821359829254144 5632043563489319755211484900098048 7740708423423608247548316825419776 -862125198261385952632589617782063104 7556901075551533317223461068734464 2755434044799202061213816733040640 -770044763585100522096365040211853312 6731470928620457759756731000291328 6768258767840039069488086161293312 -40953778274824894981131270560415744 7894059078554567371817597114777600 3881736715890338105489160356757504 -546571033133662288875743516792193024 647403689663064012544514147221504 8893728348753197712485804679364608 -987782158210925132102709528047386624 3167424588849806849242491307163648 9731783589519889761378497353220096 -206176012792540090579383634672746496 5399364954443034793877408147570688 9441576165151795976848237289013248 -734237917671946146363070613309882368 2377600159222400156195867638890496 6862684904621873926305016562319360 -761371636348380802381708566185639936 4948810112421967526143467079073792 8952894156127042364937181224501248 -555292995747021532799087046480101376 8169301440760535275673002077847552 8444583559566551014513186720186368 -371007828534484262401045181851762688 1494656252887254072855955752615936 7077237504926853080344290937274368 -673354260908007552553907899668103168 7662301911516767324143331626188800 9927026392036244389812379852996608 -189717696299003002953912846500495360 7526825077173750626865241101697024 6925423903018478953668180512342016 -140811146606698574262563228528672768 2113484398373251936156619708039168 2517288502477350018047432699412480 -735357149204564297333010683366735872 8691518210962552028830613177892864 87179983278278313979157281767424 -769240406604183902867123970892627968 2351890239919512490812668020523008 1172706024053772856244234381950976 -623189090511028761646701170898501632 1368162528953780737537656794120192 1385105767976355631741144691376128 -721695079891341666405913391798419456 3618743198788422443276481190690816 5869822251590647311502647092051968 -262581417086540680455788803662020608 2085895278570373409913140043317248 8190990590501723786805039710863360 -584548741866545858506464995403890688 2176892435908181576221093460443136 3222586486245420560691655771947008 -10254507451511520227547277156155392 1866869442489732367422534115655680 771584514537770218542252314066944 -823232336017190501113791095427301376 5467055296457684473819579121926144 6638818447513856951728693254815744 -384428917763363322117750444966019072 5832669916130522558680830098538496 6467706706663325810101047688953856 -162289501151983366067130934086336512 9710622776524569012783308920061952 6116118113822319973018800366813184 -678265417498481908935495904770654208 6616861915763051709402026310893568 7443430314066651148799906565586944 -46335528674917785883432025535283200 8374986883215539235651520548569088 4478683526331118657314502597410816 -391926380989574704730500414276894720 4125994088602666602382407225049088 7170041222089581088442324894089216 -918867174232530344576922537831694336 8032914496223690136714330868023296 2728322541644868895013551820767232 -905134015892851376720031514674331648 3489188508546775105531415189520384 2311865988847156692085727532417024 -150664357941572935875358452279672832 6106111226361706573908898366881792 8381218580610174904471700417544192 -498739342625360095424551010600747008 5544138592611695699992734137843712 8868254166130927821493396331036672 -388371240435003113725390550097461248 8827000846299001603673504125812736 2049622735709035684140630564405248 -296733268520142719669765241279873024 5996692560444737259320464535191552 4235213601441835164974485986082816 -655364081856377532113545202325520384 6718124692559834148300567013752832 4583711461485478038904001288732672 -694246277031723815996867094832480256 5877771355346170801525970943606784 7638575696843142719401493344026624 -127713534712997432193001551833333760 6308347299080056320932821078114304 3511159565028143996995383976787968 -269286749542341711041820978776637440 6761118550604702823664306519801856 5725444483371108591230360414584832 -610011465989896954814916691801145344 3198174943874537136619364491984896 3325071133849135769049221203755008 -713036751664096883451742396579053568 7952624367416992554801242052755456 8420926451962411646157080062066688 -525766695289203772397207687652179968 9593514960730192762285535229116416 6604823088932911309910446111195136 -601837090296256207934458800786898944 1449667097383497329302157280673792 4928601358278297483525731288875008 -597322147994510463513265530776584192 882768540622242070481309880287232 3969810565296474630544208903012352 -783004588533456028179609626991394816 9446528908781454948798072493178880 5362142323766197570421842432229376 -766406831952399524277567372849577984 3630919292550606243337683500793856 2008056118562082949509451251449856 -251595453714100557663969815507763200 321226595147587439229211741519872 2441721886275545869871381393440768 -764595902903174500296589450495918080 5891234151931823419609386162585600 3731495231127698312533760131727360 -486210278691692967605661388467339264 3808972937307197743672260378492928 9592952731342144151053668869734400 -51966461550308093735904829690085376 1018103550442420933446971781283840 4507278287914647371608399840018432 -724950213919458719464224946447712256 6460489634904215434826497929510912 7943461135652211548304272145776640 -230270691575993520715703321913982976 8408444751479883855139354823360512 4810461290345047232497396960198656 -139002575509882111960477114143080448 2024280233942178424954703482716160 3215914814971006023719088639967232 -874183356008218534100570171867398144 3831762606508217744537322015162368 6821306065692309745146360491933696 -977279388116251923359427945394339840 9939042282012448691437784736464896 2451289240451424847105058284765184 -884012824177263218157884241956831232 2252699039424249214541508298932224 2244403728099184808499893218836480 -283208492963387995239790602583277568 1028820239156150141749652476657664 3325204182431850104658533912936448 -11421895160734034440483816402321408 3468317533982611739967670569664512 9439644110804528464597156641112064 -48934366388486120965864218574192640 47743168888163695395506785091584 4250650341120556168716730998194176 -396384738532236044874585043493715968 7388906825152345040607985155440640 4454365607475341321194494658347008 -413916117836561324914222875249999872 5582144185642456909412708151984128 8285084201799628597221794215100416 -192628747429479240155669142947495936 7172436939379362877067244402114560 9538787038170388020506067283738624 -289274335354137759042422628277026816 5191775848693624508885819610628096 5091146001759918229499953998200832 -411839653071050020303698616075157504 4886226322833902079381011444006912 6709498984844182034058539280891904 -647630146199161730164300089969868800 3701710242462035728031984119709696 2252271794318332743358982786121728 -632745859390732635117745399840899072 1328870075042358715498974578475008 5975364216729524480207687396622336 -495253002610220699020360618589814784 9372297567780646563771346776489984 8946945186750648237043858668519424 -952870692947593701682963583541968896 552438475263915652687008651804672 6961894444542919508265438027972608 -650122933807494671747002917523030016 9994214441295327735545064736161792 1904994042857449544875957576269824 -730362936849004685193623636570800128 3485385274378426761780174086209536 3211741258993392219356326130614272 -159208910911333119722850211384524800 3226878905316650420308926259003392 2269962606344067559282514600132608 -292500867690439760330294012940386304 4655238218095196574420650086629376 5304174386522787344678392644501504 -112143570407506026765023722369712128 4814903646814361556317720576786432 6095758390742316989802590135910400 -924556929583242036887396754179227648 7578382442122336683296532811743232 6675731871847921898438109054369792 -190399470052424957747528346793672704 6680869705786745679766511593455616 3558345163471628929189739424120832 -622321709328261160080051938407743488 2223961238991160757801067221090304 5763825778684190624921904436215808 -152437679347394325979116135474266112 4751727789227387140056082112577536 131628589031431568167754239311872 -945941696245609948990422518387965952 7453334392157109702292203301240832 7939157883669187249325473993326592 -923411358930696857916181315114237952 4568817729130730434780173931905024 5746541735536220413685245587488768 -712869933333815537214986576216457216 6075098736162524378857287299629056 8220851598599247546575482009944064 -199794113816731988481376082741690368 4296119503381170875465231427960832 6573837198330513851587639715561472 -929318456865924604130593676564889600 6552757835838904329111721645965312 629305328923058091524775846346752 -43697381715380217318607908683907072 5955871732553892047972613119541248 758740069277435308538270704467968 -117534317099161251173290616700272640 3388680453555209364000941725974528 5041717874648465348069362623315968 -222164971810741254542279556324130816 6704568002286867312036002792472576 5211190736898119118301672056553472 -114710688611141162749158141112352768 7446814517201917008027724550242304 5275273206254080182531613651894272 -197627625849460363715007478851698688 6934098510143472510476460901793792 3608958999911775705603115535302656 -279524289863121799629331377439113216 1236536242491937728482293950971904 3038281238890573225818043973632000 -8890460481226146506923501424738304 9527557644309676561343441184751616 7016823819696699909293430808772608 -478467033130371384174660990621712384 7450395283807922776051253635973120 2197112540336973524484897321779200 -179040483172722044272760142180646912 2062062582626503131958283165761536 2101731133317119386090871644487680 -532612295173742604424760100739088384 953681147389709036722886348374016 9776556528207014794867045809782784 -857808279910920411414691337606266880 5731192468376268752257400296177664 9091713671728693003992193044578304 -283876682411169539677007491712942080 9833349185223430929845481816195072 9533102483565945784123805348659200 -665559691206631947996640884054556672 8292821660143167757431356843360256 3013637700808419228812877750075392 -987011621820221368445474183835549696 705957625187955724967756336988160 6541643151135122882256513450115072 -778145212461423780516377105440702464 3888573177773427048833241185255424 6721081076512237964811718098944000 -38731921487630639408206965955887104 310456444777108678509015037116416 1770339273560758171021925377114112 -716721772750491115396838185955753984 179223917485523625551814914473984 1777168603508056867753632901103616 -458617445435665698636705237179564032 7975997400798465100548079821520896 928754016965496611651335403601920 -306152537076840965567225056813121536 1824718062754907926175047992999936 9111537996800498156469265820024832 -348544351384617676226640548689084416 1296148352717768227385609442820096 9786728338309997406391568873553920 -371958785035963237857279319121854464 7482901911446268014624483659743232 9766027212452365835803667912982528 -793599268528804419609845847312826368 4513701435426763574418020889526272 6881280464838844948072908739051520 -292726873328985661767923008175865856 3375996284358509576709516245860352 653596758692864463152648187543552 -833955625854660883193749769050652672 6480217831185175636804975871393792 5245178753283086909476674591522816 -461645706463908469804531459117023232 8917236903708806805595003788722176 3828010153797422107457095401996288 -192506136746585540907667242365222912 5654983757979218991327533359693824 4559079037248767993083575993892864 -654087035345318312194875826039160832 5034820355606703689505212580495360 3719172676869396572782866986958848 -877020799903548720182848022034513920 3865951298703066980041790920327168 6503929364519256105174659613327360 -652082389561502472741509499191296000 8953127323119276813616560916660224 9149757485608836864278138701479936 -346989479306332868371009041506238464 5688361763040566378615734292971520 4844812370830610282182296737939456 -93059023082533016424383553260748800 9243059375478958124989633645248512 7677456193349453764266080379863040 -914396558579016549294214022743195648 4562826038969035197132837683724288 1134236324433046979752259634593792 -836099886392187340022655384884871168 5087064018430565584563493949931520 5177023927047865251330252418842624 -242387039373564266977133028341448704 2671738805191287090107264572325888 5153353719144082331119652492541952 -512769908312193508397467980158468096 3528887828032924575597590227189760 7548619753269231957553709391544320 -473636488166884012557815980383797248 3752019159977994801830894256521216 6561812168597426354373591924998144 -664682911029384415848829910329065472 1938526044004818120947957514633216 7133202573784742908404847595225088 -347464822606054738620416085110816768 7222898976447876245858197455241216 6103824645966075245954681286950912 -654515656014166172393376815370993664 3961080216917235608736152908988416 545184996429646259742107781562368 -835283995125770174818446118345506816 7228291115223755162576994867085312 1867762082082219039290110041391104 -950430598614479634298604329814196224 8427941928332416515613925354504192 4900103205918007436377532783394816 -278774430810660521120520732739108864 4691143153078994383915000419844096 658778136299252301764939569168384 -878475657076184065532292676722884608 9806119499062613944660275989839872 6594716508239762034185861129568256 -800847808606919077410028344412471296 1994938812673898999875143911604224 8246700524087262047676519002669056 -303202351671522711044696842302390272 7330208642711986239927564275548160 1661195579050502486096664057610240 -477213089385472333417312387392864256 63438605228513564879953298718720 6161089580755523002425856732692480 -312975320352364221452624230088704000 7845933675705724984949096983822336 8153066939168510631128044476039168 -313594919020277960053235305634856960 2799991316171349798602364348792832 5125168552485056442713847023796224 -243527303562018260113540134308151296 9850432147303206348487871195774976 3275494027307961689064994708127744 -103788211483632079577676214125461504 9247758459021965982111043501948928 3120544391367104258553526274228224 -394693504774312657767051091330990080 7693491927203313199359877466554368 7553745074955195508266601841426432 -66714745366571480462641407755026432 4775039882065828484334207522308096 9604499751378027846528322068545536 -830596813778690976499891169317093376 6685414604506423472036680220803072 4209023397500858218786357313011712 -279273574321562788167677046673113088 3588850173836115689513807815639040 6498285089993008264665120993443840 -830433316768122009039436936871149568 5290584509718272831536656224878592 7041866566491425833704726525378560 -102782557692115020501777165571850240 2443591947018655552755651594682368 4193140416330382969806246079627264 -272281395776777852694281652168294400 8496645803981334892563047961853952 8039372735286655227600581473337344 -505551802034529440595676982813917184 9384031590854024367121780682260480 9686005342188751590646588345679872 -991560850910854373656961607054393344 9884229223234992408199464637956096 993666800777344913441659105050624 -760164028016416438082051954597429248 5775733437375630489429627044364288 1380773543154499080765823921422336 -119552288021676711850139946856742912 7154409219202363257554380095750144 5354921223999267640267869880582144 -619262540791002298998573926606438400 8891657303638855792117508714004480 303421017105315307039265216528384 -836133008622571581505510700897796096 9992221953016914530054712229625856 4070953422886102244915056560046080 -136559532809761776897523525554798592 4350149051751266318973435834793984 6495263588589796680182719647318016 -958015455808003941498784541533274112 8871583381824948448320535528472576 4086274389585328109161199496593408 -584383863605714306811976373478883328 5425132377224343612346303372066816 8733012842790288002283475260407808 -743029107452914633835477919583961088 5228167398891920220304411597996032 7434359362664967125173161527607296 -118018954047879803097122494543298560 2227155026755595827461754105888768 837584493435768789975314684968960 -931139215838077348947047512365072384 8227077630086556708788303499886592 1678741642205498057382860349767680 -416082062164687412107563686418186240 6582799663693273412012816598040576 4216421528508904589488726151790592 -98837612381110652250437350575833088 3348765502090811390003115689246720 9916786538686340516169304730763264 -645437003509543783614217495108386816 7817838981087452811638284304252928 1934804100678788086475670945792000 -59416923963587466379466548443086848 107177276246649686459408724262912 8048823949613871262302808439783424 -940678618734288571069655393092239360 3816093452046063331853230502051840 7588251751037146629610927843966976 -224220555896675556481497345971716096 5348899920904952652445462827106304 7088560794079080256392638878449664 -456873805169540189602508125868392448 5700727699700837183644875307876352 6308516443124164433839829309980672 -330402736526759850844554392720375808 2759472925056033077529917031186432 1495960364795844653401239285923840 -654865453149217781513312557378568192 3943732414888521756284309693530112 6001164905873076713397972354727936 -130720062880376769673031088647176192 5425722075033617784413607539245056 4241783702092116777768020426620928 -819708740755973408775194071495868416 8572957704431561978036807201193984 1345859890987009045000345236799488 -821577949732025239405579771897184256 5538250721835530244541766116048896 1921193155098714736862569223421952 -574879217371880039866972295086997504 6979149841883870812023209628532736 8683068028622199597766135085268992 -252221283108107819488821866416570368 3446628135592094403030948658544640 1012493325167337022940688383213568 -434130624033555668889848220001239040 81852320255217465786947233382400 4648303024000351773172409693110272 -409295777639411817315135492657774592 3794783297252479824479174040485888 7481898406467985657998199975051264 -452268360597713343788181061952864256 2313130253563564335820299311251456 5277572538394658954633993426829312 -663115428587597737409779763691651072 382507477840558410601857191772160 5900026122389436521826235719876608 -741227928880686870564824549366431744 9124254944218021283919478025879552 6811950944819209292313626213875712 -955534897940316365831000683244945408 2548204140908788426438082409005056 8966733499244166914981788133621760 -704598115998690113756143980615041024 14034687605532774242482930057216 2912049685468280878573208891031552 -17141487767411576153379230621630464 35722621571786939885439703580672 6995167818097916988573623945003008 -156628466493930787869154764642058240 280176537680191944025095198998528 8173657006246425441962016391561216 -714883468523447549626601280737640448 7712728049570221284928402030067712 6243976047406477795866125344440320 -820825886228094323249670836126220288 6732455412637613490601790978129920 8698439523473035702798948413472768 -17268215515825610520609040386490368 2647426474016340292072713406644224 2511551040374423437017599252103168 -579825970995856149353697399124525056 9964574878379135652153678691827712 9866921088818389040616151894196224 -84760230207562738960032122850508800 8364784749412689485593669594513408 4916655829535650173251867293777920 -945192663459299517893970768418570240 7019058728287455519742057361965056 1185997739291696328893783481516032 -665639958860992107033382571319754752 1484751166229636701832557077987328 5470266335250046140872703669698560 -519244024511073275887146461223190528 4620325238305812128778863209611264 1745873208762973109438446370291712 -995262714896975818745383302903889920 6682403891521039381239938846556160 3216673162578143374919871766724608 -329678672345207792831014000618635264 3917605222276099898731987409567744 614608812342491936252702582898688 -812045660568473009088839363506208768 4707797755631494381686753094270976 2789856786624580092473733048958976 -91294175189444734986632542789042176 205553081513459899826062921564160 9048576034991101238596526223130624 -808431592482449737481308518901350400 7861807801105378115078113250508800 6374328232441637397246143681789952 -470107768312721692299676835729375232 6655179711606157426973656328699904 6370320928444548387410626125758464 -48489748871310416374143652810719232 7906896642132641495027334082723840 6817272186673728020842058931503104 -869190592683366320773852672942931968 6027730333112192562802585879183360 6897476758742395970930791468236800 -425055438839693691135996953349849088 7449961391855223991443870846025728 9232254382206959193911100606251008 -535341594318380983883333366282452992 2461017659684682592161826147926016 6324494739516446948335346805374976 -652527181905128926337063438176485376 4360679388282726408063153564811264 6521130354600731742585691622604800 -982768803733520013814523052504907776 2792226502969810991169119966986240 7500061003468716651389951489867776 -862278088313400357932850698734534656 7020656645274788122334809030656000 3106011013681853476107477296611328 -458616720840182220666251669713977344 9932636012554266423774327236198400 9746199975398299559227223315578880 -386618877149230006221631290727202816 1901076421907371181485650270486528 5943148193544991763833621263155200 -616984332961724273905948466740199424 3008387441810785897215971953737728 2354718105252296853508223689293824 -385868930226139229159833279915884544 6749263747208752847291284019216384 6714895757989140133910778367442944 -104666599262928152449197630679941120 232634414524493660863216337551360 5363037474739246811125151508201472 -538725078877002310132063291112947712 5952518381097269589740695423287296 1631118332613469152988671118409728 -773326231373388657751136151244111872 9168951568725787295493483080450048 6922075555852518505283900837724160 -630680866955228459595423282798526464 9166886203332625404701980076539904 2108812645112953721611503999647744 -702995944065099209252588603442200576 729397765370862112843395718184960 6275497917803046455529590445047808 -624166633184277601714239967095422976 2517709883625401808783204906172416 7210791045600664480738229522268160 -578661465863070870636686758798950400 8444480137730309952048379398717440 9161035471921739895096278599598080 -530505570054227629303274549383528448 6241954036787581383178514866372608 876656426245706701744720243064832 -237774333698027001090014592922288128 7550790100171647623398310608371712 3423317881756110902155993046581248 -112277144746551354803827797378727936 7158266406221295063014287087763456 5738558108201965577374369633533952 -989417506965179528605302889579020288 2571809457040005051460806193971200 6469420524007234141692596676722688 -329670163867184536208915060622360576 5656153837313227576301294456930304 3505480014714362041078503153074176 -49291237236087058645153194216259584 351082535990017926702018420801536 7459189209883635811883382149742592 -964974497712494716028358219698012160 6966537614960633788747757039648768 6883215033619087170534809517686784 -9405615875821561523045667082076160 2416565655256060349234438826098688 5645237498223038667356197451988992 -786302685449978825297970199762305024 1381759201505033134575484842016768 4592116466915373965727443227508736 -272293329700252086452999997444063232 1885438163617827691934079042715648 5557715059107006378376408361598976 -465598669679389446383331033575587840 8549849819560376929871725751959552 6454601041151147107987897259655168 -580165317288622998625603952241016832 8667742835864616004801174429499392 4984263073989839486614048342016000 -242253331463505178646138204513632256 2814924076044419812955421686104064 9184675383753358111026401373061120 -606464141828083563437041987170074624 193723394819566733012986381729792 5186319749934055094501869745078272 -261939509103463119504369622055911424 5554777812731366666172571714584576 6375122448383719004364119436427264 -29543319579080217290929168499867648 1974183067692403236665811519143936 4400154663667257807772565647654912 -498689291774754549791955503319875584 2722497473385281855068409176260608 2604816408001961726506928011476992 -350592831092983519657743810866184192 1489475051808525103658877914710016 6615951041150769050797546085023744 -769372992430921565031881487287320576 9517254963867902826395272321433600 4500202366852056580239439693873152 -400066990988217815500927246987689984 486356094154653476871442331074560 8954755683474529056947579704573952 -101934919620625077058038974837161984 7936678620514880630997178638139392 9687848734265818721787670121414656 -330263892213593698590875718367838208 9815469307083703323873069762609152 5966216363257684934236208352985088 -220711814090535944454108878441807872 7155178556330277841194552798478336 4196224075499773560918521705136128 -42735245941057512110589627137523712 121757388911170024498859874451456 9856747848023673498867596808683520 -188890865911566138290698260993540096 8557170302394291021242001354915840 2037640257942616208720129723203584 -24413466914162235752908995684204544 2831515937440572852320233632825344 9229557508485217649705693592158208 -425448482404964740608034727310393344 221983002922965353544883845988352 4196875602595199293663036821209088 -152253669089939296453402613644263424 453838085551072549657740935430144 6602298794715689022363876607393792 -545394636407907441214827585687519232 4122525912821687295987495034945536 3454619140459058187996428276596736 -181101072080625518707550601500164096 2857020830550554914140173960740864 146794830562911557464887360749568 -656879229870677644510737216001015808 8262482192596159325520096856637440 4418474038306782130164595737755648 -391929721934276056939683887299166208 1169938529687702672136373840904192 7422515963205344730090344946860032 -484178505856969108299607835622244352 4096879981130196309517188579983360 2372109010353532334580426654875648 -354069823638978810932541611040571392 6458166592178021373617732870733824 5379751321471464345644338407014400 -438749353258776725246185578491281408 6715609808271700880728496864755712 2397420310438842324697370251493376 -893249572907327335328589524735361024 9568944829345763482366407830667264 3328126469586710615885098950590464 -339269692133700337343305982544969728 9890211061424345842768634450018304 950997218806841776268386349613056 -674567122493787838485917968187260928 1397793592206880582283461939691520 2858545113557725304536086727360512 -331843516060200570743875292964585472 2734193231910580822442998501474304 4883824835230805447583743051038720 -660877107838593219319193035350212608 8944925220893770164289045895577600 8333938333218160843601318885982208 -508259667200418851353347337622650880 4855481134813640301219059848970240 3185659825077397930803552036323328 -242314195839203191982829360920920064 1595419068572978085315788083822592 8671278749383580803838927781756928 -350822461378303657789965405823959040 9634685233600453300715992983273472 9983652890716680379391204596383744 -622034936234801049956263067350204416 8321307524324634953969461173944320 4920074439634009323780394346086400 -229234550003618854164719281528373248 5684062856783948851796179268141056 346098641277606300816161168687104 -88324276888255442399399654534938624 5257940116245026771462119604879360 4018329735024600971138400669138944 -323234970626725573959148985242353664 916677929497821833059412362657792 7287105592517557623701402439122944 -622729734704544488417293901357907968 6740654363388768343532767750914048 9003432946365755973832010083860480 -349364854735049298480619464840708096 1126615656793400074192606948491264 8256570390212751036489405403496448 -643267337003987754077656954135642112 1163376279293498663765740546424832 4819910257359079357695811746004992 -41910470483903357047255983670165504 1176204902613439993163812509319168 3545291263408871746631317818703872 -215076471557657624216675535929999360 4729745912043872374730933581905920 4135122965607346468248530255347712 -975358109864865270640206410250452992 1412102727739977714606738400870400 196792736466168164866224975511552 -810347351717996565362641417464184832 745562042419632591667244660948992 4377173334088570533578319981445120 -811718431145394073710947982408417280 7652307450373489523368529791811584 2272376900947522268341170197233664 -163497435051329772039724215063019520 9648216454116045048158228871905280 4239162186185569606228550128500736 -386165124554399066237804001890402304 9684772220846072188487578534543360 3383364229805204438907324702130176 -388949803558990422097939132401582080 2982759524117463929469983954829312 9153853356627374342783925565259776 -617489251285527650233239065447104512 9691736677870633448298558840111104 435100714625114406300687238430720 -278266100231571989973480250732969984 9711033625613148205323228385640448 591218943952840533385956173021184 -920512402284912252630889374767120384 2117367326925965000607779713449984 2994476059723237757427405358628864 -65831976299994595110328811707695104 4245898716948235228747611299119104 7106080797981705910255881063235584 -310365791179491376464541663381946368 6158706322067396921693814072016896 1407781472520221743272703270322176 -189236388950019456416664149976678400 2847847907923040563992262166446080 6719499042825532561651581864378368 -521642556686356671273842265177456640 6938761037711364914765156841422848 2020300083700140188280266531274752 -896497691198636702090666617486704640 3881483513264991336673895692369920 1788868657160969937709542940868608 -963853214779732972617676975452979200 9836162453703981110553512603811840 7187902131471177678067889252335616 -391135150860842649152050328550506496 7079471638337717127499936471973888 3468714636572932717420613101158400 -92831971886328600743231366776225792 3552823852168488961046611522224128 1873068174374448192069256085504000 -971553888505663277027006405247238144 2018676650857264628945498299957248 88515210932893134594481720393728 -651654705269755050029280059736457216 6567164900776161304180692854243328 364399461574546641062834162630656 -934063293064879019236458787286024192 1084125339563342611180603471560704 5502045979676605490838408406237184 -859385674465989434048354514152456192 5359108575625719669012384534495232 9495000373352294822588716482035712 -471873512707477178241483642484293632 425863517347730735587999663259648 3187243251066697060026540380651520 -88872417412082021991626322550456320 6331008927041437290332799614582784 3109285059146157744638253019955200 -151616336235710157283837172701462528 664184503609984072461638355124224 3026905320121096193266489285935104 -453523153458955382050862288120840192 264720540600665567406764920406016 1678503101001019348602398592466944 -130095125077893590432623200282083328 3879719239891145602988908564447232 7994041239111571834014827685085184 -895189450411545673004333164394446848 8218961899772311380983126224273408 8491867288517145239976590366998528 -619956519284741924493608996963352576 8299799174421615113169972257357824 8384953719328612717738288788537344 -931242862290520057379262239996903424 7049816365596143996255309253312512 3345669728217845829242377058910208 -960169701149400531446597389731758080 749276615921981044206743200989184 8682435611475836687997588276772864 -105360567326509577766681362932170752 702462898960773132290695444299776 2541541145825125573987062022930432 -816549935641110102533294711447224320 3659875082785938003446495314968576 5273397533254849092223370616897536 -171203374001497501893250860906971136 7962214816659986733536758279962624 2575205041140506815501877664284672 -607835241955537804331749199006662656 6292473466823701844588118300164096 9474082685331738431638380612681728 -466028734773737626207658230335668224 3039809405662219799549924243144704 8953710900612332850899185305649152 -625574015225543379383815605088944128 7568188576199513128120338524143616 1909443713895039285086675064061952 -847545932156471248900111441397284864 6099491665883003784484483435069440 7423026095611533387361236778221568 -448904899017367363362375097011666944 5316402118357314957095390052089856 2160731431606015309436226000388096 -983173015226668501555976900167335936 2525669766641514927215047029555200 6015351769031637573606119701479424 -813082928203921134684125026609790976 3277408475967784519310142372577280 5760414621292623097273291066310656 -460802611011048268912640190094245888 9075335755260700354614816692764672 6508100802164964629476364204900352 -386806672309740517186450687550029824 8113409454776955782364728431476736 5247211285200018862221432484528128 -470019418198643240123443926293020672 8772560332224688912638537218654208 3453270591483173874334739766181888 -100810758411696882115697369918996480 1247973155455652935183391529107456 8722372409948100085438609132355584 -792467874121177515318340791656513536 6329695474273016657748905087205376 4993292681490761681336376678678528 -377879254725083087466403315025182720 4043763276240136044893972725760 3629212204936591274924433974755328 -106255906576219224008125214929977344 4057338231328996243167290092158976 6892107131643463151015262337105920 -833458555519026589566789595726610432 221728348083008187550053743722496 1442051632085048157471340253675520 -410880417813213655234081173431910400 433202706476597097410705997430784 2643232180795607238566335905529856 -929302923905876061930271307036884992 6085296831196113768902120162983936 7350256093910385170595477838626816 -995513118671190604082786704306470912 3026909400331909628198031179382784 6800785431111494322354191943598080 -804183631702494395161774848223477760 9760975337457465399199557826379776 8147163264922412561167173948538880 -179769819318270832259742849011023872 8081460554191272472090021246009344 1802533566353064960091520485031936 -839426285958151148349580692483473408 5927978496634422122503508450082816 1733761613724697739329692665643008 -443433069445231252127398881996570624 9008647535078982646890365875912704 5207832017334080717944112380116992 -538454617929353618269185615071281152 5775277061373688042271826711150592 6456125955094868572437097272573952 -654187828056726701341411859262078976 4014256507716696901489209508888576 7200507261795354111590446833598464 -107814923785295512625170650794819584 9682048382106591629492294657245184 7560777478529716051546642803851264 -39782150054290349414917244966666240 5307843855236349105251137689223168 4667650981931071986335426373746688 -289958378114271110082144177187979264 759126099463868003798381475397632 4677502488712101728430570942234624 -976178213272387236164643179888377856 17591995327668904083010455863296 4275500250151825508380659368853504 -777060561544987618672274107038433280 6189471350722644987527342692761600 1072151292390756694700171320098816 -361647734866016428874851340282494976 6994660384361389998226521802670080 3514725019358055707514975882838016 -465027331923690675299987013301698560 6158723421142954942548801948221440 1475362089749922732731724302647296 -352357527779944917788757681669931008 3029169872324587858900381272637440 4631902445351258551889343234965504 -713764137775233331920144668351791104 9907943375408035346884206713110528 1508198648608522093272945674682368 -955548508161092452025250983821967360 6558881185333135776445119294603264 6235830340342857632686368698138624 -793423602658016186729577707932221440 5464248856008190557183159734108160 6012615095664094197253588668907520 -581374282640654115900498612274069504 4798099641103365613285958314098688 1380731884587562752417426168610816 -382236612074990336763137860269244416 6313607348689797116205247143870464 7266112313294542776381146602143744 -495629193920673965157831393792753664 1265186433715951855550081940848640 3314775820178633059925822223155200 -554314330220319255036655295006769152 3012926189534126367387504657563648 5391214973774678967849383714881536 -165873348599176532337214210787246080 5663301283181319217921076473364480 9646445239147917713250626593357824 -54076013885849516159216357191188480 9281216127787563514471225619382272 5575695378031458990003633677926400 -960344500268732985848379842096005120 9249736092485588899649867208458240 4899143246055500644396780536987648 -894669993625212098469712339495026688 2030684283714883252592465663754240 8485754647610046701406139761819648 -596240487455065935438654010516570112 9748066441019603740367467650744320 4937862141816629436369076643430400 -794840695766041868689429130467344384 343380307335845662498456107745280 8512808102284931984517455593603072 -842240560381944257379373962663821312 2251404604564542778133374346199040 6131679123091219095831402889871360 -636483048518444858616013092565286912 2661849138268164542758256715497472 8762547972250667199612736608665600 -948655883843297670544437791785222144 225570473079374602690617801703424 6578242082297904261226612119306240 -48591787416768070957905764723720192 783677146922738134478391905091584 7535640996104869344702574136131584 -691053229288094539110977870040662016 8629592317435459275402036715192320 8377007126953651220089945783795712 -328699508574808362522686209220673536 9991518958271976689315680081674240 5418327328887189599654769414111232 -102127911759732506793694180413538304 8235325124139322547619266557902848 4798148991869185389732940782501888 -176376377860790899148292875486232576 1557163548715889775143943613186048 1608174394101807979966233986465792 -335545721258941385441676775923908608 3704354991574213154641308958064640 9012298200800630302476376863670272 -726978247551511340623631933297917952 3165171646342204414349937754505216 8866700848924695451384333207601152 -933221564292111962882886067774554112 5822439839578877813890611394117632 3323012536575008174979454483824640 -356473552792859032856352855200628736 2862915862338430898886283957895168 1460415362356968976430984945729536 -333061729970715990505343180316082176 9892210790545164162476841860333568 5513021354290527272356521929867264 -928316193859504619882174870118727680 7537969078458454784388079361720320 2710017252745069885873252686888960 -913800909643470153985313640267382784 9208238141813080413892771185688576 1009552858248087122865177430589440 -582281441257941049788839064403705856 7958808508554299344901741557579776 4970315663905953885837597138223104 -495096222759280460646437229372112896 2034075348613732669355672050073600 858838096458483306354127012888576 -547259603332383801965827339726094336 7472296038967752031827538223300608 4310923626414779576468268260524032 -464011261485047306398144648349483008 5413035893359214578600390304989184 1610417813117096345963660585205760 -295779260600986415927208829058547712 2444922592507184619929690722795520 8684271038129398946514628088168448 -381969251615282905637152464935321600 3129945769839490277778245531205632 1122412629074096020440885032386560 -739104690568837963491114262789619712 2443870651685691467113122087567360 874721978737715309658193864425472 -940658100577259571552225207064199168 7759255027371631459539682030780416 5361065594722675378257164337414144 -809762241495364391561269442571665408 5276877980348383855501598508711936 1439877129797734364857254063112192 -78745881873174752495096970373758976 7325658460372201306994878720245760 6741244036622753952104565071413248 -793737908570244854618630990937980928 1322192988114145978815673123471360 3523446642395961882585205313634304 -822661024641823227090233529437519872 6737090259919894401853742634762240 8503653373235657087423410476154880 -418073847773151014461884268564971520 358338401880185259407528188444672 9543367806673220134903190376153088 -721029826230272652795957902141554688 6164023968800108419095964013297664 5071749649427542312677809231757312 -459017112769921029511555299858710528 413672713014099226485189425233920 3085659820945057307164785682415616 -682158883323294022555203018210410496 3364573369594794849311859543113728 310795059897141095115631368339456 -211163959456716160665645954799501312 3780812884297815910961764567613440 730746116296210270278322363564032 -184150040502258040867955114707517440 5213896498675002314455198415716352 1979274053088733386257703798571008 -73963590616947407111779888954081280 5144167479851911677645073709793280 9714785226365766953259086515273728 -478661297178923542897932472730779648 3992169615291399914725681156587520 6802019588649035264527530582867968 -658933974500295608762119915709661184 3965116011716559349373507125379072 2247464189399673360249911842439168 -731723074700311302058000539868725248 2704359405195809981856111392718848 6595916429237042542341273373638656 -589845541217680067845584952863227904 6241380478637289017803257212305408 4467622608793022496323724287934464 -841770590107014253505825384783937536 3331397928496369064894079201968128 8962904004720500932666496380829696 -53649903145669011017907557936136192 6818626588846036786277657752895488 2924300323476624825081673166094336 -287606734651094625437153838015447040 638871323080661506698338285649920 6217046538342367699300361724493824 -847397763994484811097276224488079360 7721232633065223946667941146132480 60839350745381886411317266350080 -196638430194802644468561648751214592 6883999173358798738535144222621696 511728222667982207762023852277760 -713608229425632731963986192183066624 7587870961581054186890158388805632 8523563810807955083406046027317248 -879123082085225342648847968719863808 5403532858327173308759237646614528 9729729456192007340237885028696064 -993206904924450975710054603166842880 8764421597435463773387828834074624 2299661961493416915490803778846720 -572765165197826123384158121032155136 6381168060715877363484660821131264 6973891305848972555576377010552832 -243350081309580568252287607237509120 861966174224703061607098578108416 559915815567318666786592289456128 -973375831821567350351089665893728256 2645082569722361992357238913630208 8370310297535625105285448997011456 -494657688597146675767965039563112448 1089784295429134155716732404105216 1103211570630334388696139287232512 -350015789530031768106945096991113216 1250144420333091596157222230425600 6544036955696574219462714979254272 -882640217813491283633257704811659264 8275746778654321164964824501714944 1451870432766925092257921134231552 -308004009251246295987357061597888512 8692903624474899129715061178761216 4737574123361812456015693048971264 -63945612046999101396249136055975936 8775094262049236216565833314336768 5535096802786153669121082396770304 -779967990018565211343356266085875712 2987520502963467291525644623544320 8599741546649911708333450800922624 -474962170388063602118288158180245504 6877449295630724508740285169139712 1552775601110250886992675517497344 -445915832374260661588282060205719552 223184755213678211879095238656000 343626077173076956828752760799232 -284917017109532044793897441845837824 9373954308427320342128285454434304 6720356709087006440369430288400384 -414645445702087412503947693839613952 7924740285068257042047205659115520 5428862884626112654472280138579968 -558118649415113218392179607903141888 9951085252017834905203612015656960 3251270858754289100350164075282432 -524753922245012846171686273202257920 2246251017754581069485624776458240 5861229544721645851215060162052096 -527988804038383917324482639504080896 8796551449811683754071782219317248 13434232058545476951873649901568 -888149234691000571521815216618733568 4575965125848239184801419220746240 8733728144184508939152668344975360 -131739892002003901443359345882431488 3109313688086909834851114098360320 8450886078708465350219925871919104 -847582086324219998799544526720466944 4637680773974964233630071853678592 1132554359625915229348154149175296 -518877902344980653389639032611274752 5397057839511437760080887733551104 6785598728769914768061238765158400 -984775788149691724054340553735667712 1278529498383546729581227590811648 8411607991470413253339793296719872 -101431250051138468253551515672772608 1727563152012189468451084053774336 1777006950559881599500351325601792 -124636370527670414471573484389531648 7582700171289546120822430436950016 9247220224205588548576339635994624 -517295099494893370777072018965659648 3185892201471688100358952501379072 3717974602583599113024619038113792 -177898207459557710124571689329098752 5874032053533811674108536163401728 7361385137578512778767121936023552 -943111603779691463854658107220164608 4335805963663968388217900160253952 8736882446969319558413973779906560 -461417878071817378969263341882572800 6545939391006397698788550860865536 8566419023432042460949755109310464 -587484140217227829917573493918007296 6070062672346578879453312699072512 4141995714897541927058022965706752 -44725841685754532455272379832074240 9160675431918417572862481271881728 2913319519395055644339033012699136 -713582051171859218640201422133526528 6012971273425816181811086056488960 7748325204246366107820974648852480 -170580906252248324823982929912791040 1072762381350792001750201704382464 649467711904215789447642148241408 -356922074213934438026561799405436928 3654943372595110228721180178644992 8812864537471541046452106857283584 -365242050180735484775693978678853632 1580426866469655530910039263936512 2497737555406719065642216846262272 -859429072872467344960735638296985600 6961667334902471391488785231380480 4203071758686706933387420948758528 -174663567502950421609889128167505920 3320229972477347035270286321647616 8189866449444213781621127327514624 -441869286795878160267041354406690816 8652919995774617831091813463621632 419647433081512983050064960159744 -315244182397438059781888741335891968 7787565571937365234037387662721024 3290266428234286395643182186496000 -873695719327417888896470165854617600 2121330678944767057592903712899072 2678431700246040605002981470896128 -200580306918212345747479415398334464 8430941814510827567495551507234816 7638879112953924076637942741729280 -866174167887682225439974899786448896 3561305977637752354548524813123584 2937787222092349675263080668332032 -736041234134942940526748436810170368 3958255671877437283319106838200320 7045156522884058582999463813447680 -259939636430074476865107804066676736 5250148267508275879868082037981184 9309242599578840532569424199155712 -20242473329171226234556708668047360 5316544220761386703091431137869824 2232161201361887434329361368481792 -151431365066022871620519687792623616 110969645218885246702399409618944 8372351304540361886101785548947456 -901407046200818422842950912353239040 8377508735121455616455236049174528 5785663180221586128983293935222784 -791571327372588339296781419598053376 8253839947672241296540480133136384 4085301961963928608701557157920768 -942340975073410716479317790932598784 114140594274561577603724514164736 2832979482611858667019718057000960 -461081876253891054405912250768424960 4094361044258953770648684185255936 5807061011689302011722071309025280 -527483961165176302548941827609722880 5204419007126204129765903843721216 4946265341976595966174630393151488 -467668861083366557115521117013934080 1375036572245406445055937372749824 9059896375220138729054836570980352 -460200912305746401457389049256869888 7231399835839794199950204138946560 8933760694230334995666908332687360 -568334248928488221241935989854699520 4628725217922168470712742653722624 8229385922403948242149777961123840 -712819775902399537114362255350169600 2031922773164981190950502820478976 1648611730814485787372934670581760 -20503688943538696954761659587493888 2358392079353660032462784600997888 693433796467535955899551299141632 -456555326061248551739246521840828416 903187121094116693459621791137792 7880851363590061798200626020089856 -25278532924638551803126805929394176 6655379220791687482714773163868160 2420272986311804350579330760310784 -454335625265132156003677365554118656 8780687049007296449204255572623360 9616567253247087627691699273203712 -851641847700484358331570491429486592 4778179125880484629672158358929408 8972511144728329371999367315062784 -899663607286151544019811929381928960 5660861698400561583751897674678272 7120496833857210687110019222077440 -625339878971823491234894704071933952 8672818851278731336428970531880960 3689963757734589498952834082668544 -157043893140021281516789903742992384 2458963234661717636284561357799424 2649253193799038019822525664460800 -552824469333464191686553842902630400 1464069667694390232358394099924992 4008662027603723119234893278609408 -432716648278452617407196853113454592 865282217497409603729521469554688 879951522015106102462280686895104 -612431804486763307641197925534531584 3854802853390793149466397594615808 5848837126684431592530787260432384 -326418997688337013659887681899855872 2987736013669464676851545070895104 4288094203666126764297275442200576 -802739482549209006629356527958360064 1188881930717110227413842226315264 143742254855229618478901838741504 -33552749467609502594073741764853760 6120177809548770242225683386335232 316378186672581118579168698695680 -809339621221072360367174239320539136 2094532823108366005659266015297536 1307880294244186238351748599119872 -255932360992359664754677626412466176 3934500323255374849457282906849280 8067129768096646303227995901394944 -927324265454532844598581117264592896 958194208834674269330372120543232 8504037294247424673742614243049472 -182790618196280632769976011820367872 9046104011230986209511810113994752 2634127863282304527272118144991232 -401796304413170233567469348105224192 3069011343365390237178877213409280 3093864790658858134915804831940608 -790909435821472936516439635373588480 7035069822819240909498227036782592 9932263469455323177354042277888000 -557398224145568794036179362195177472 9995006107467702957980109001195520 7983238362723262352180067692445696 -380990832065356000519136420946771968 3808469798698283991215350495576064 4328241919916861438849278873174016 -363550368934318759045377488146399232 7806867915415001826205063746420736 7969349239006716690388920672714752 -92869416513443515310572736465600512 2264633928649022872218689763016704 3123757316708305161903784507473920 -653657210242534845342762825752248320 595225465061010180861112847695872 2441244860570208575172691921731584 -34309533626241051558908119023091712 4696091768951457951578577539432448 1941020736050858869379666146230272 -584515884018181792169834098796265472 4406371157848399089890449449549824 9461406318844736441142961225334784 -484531030992451503813222633056501760 6140051014111235572784886454419456 8485323592465525213751314168676352 -406457623718767592958119914992828416 6493947541557702140779273633398784 8798261956019844201892339460866048 -645878740295481835425981320665235456 3823465803131186933560157201760256 5165512236450723076289336182833152 -571384381603687719977011046961381376 9376438110701958842836311347298304 74667185520191500385446516490240 -184692672745339130766333146090700800 897471274215989924454623157944320 2308108316928899530429588683358208 -206315370529445068114163365186633728 520549669367913099214640440672256 8468776604075093254934895712534528 -899602321192419271613194775524540416 3832628245902221700873206900981760 7677196925663293729171837412179968 -285595541463697877822195825282908160 1928875019639749036417434181959680 1228064434165346409641642656006144 -685409649864167968000944691134595072 6123391043451317903505234889539584 9723547652960019849697505931427840 -370860599959218246540402034842009600 1495095588121455797269932816728064 9034216942330924989802624562757632 -937086846163391324710990988231835648 9085826875536528869177486066319360 8421450146630173291184236179488768 -659900372721314270748971686409797632 1291380023966760224425640833581056 4674543246428641310542681276940288 -764327598861411801081057821088284672 5121229030719919871197038323433472 6163120141636308070331860494843904 -680505131612847185143932225041989632 7611199069753812348497235869171712 1580969204467936634701356698959872 -62284080128828346351420476378578944 4642030889918537762480139991515136 2157208073385668196940840897085440 -757529391917887839587261013395767296 513489455078290061402329881509888 1986286353409095878209870934048768 -329654463140963470099666816720699392 337277633568515690804154491469824 4499454534438128180502620807364608 -956884975842093278331441450338746368 6720492313544249137568839234486272 9259880222302957712294636775538688 -143822805191974205312610662598311936 8533513492590062217367611095646208 7770962481528343137014515106840576 -187744286351592400717619098913079296 2492980767282342046063638689611776 2987088707975781879824683246813184 -624331259948318794740093545718218752 7650036096318433961706115305570304 403150978947518574189440449642496 -388423982780485735906863392583843840 2425063925040919189508058450493440 5809693587790085152959135473467392 -232465919860913325261172226360606720 2446736351732954483406469301534720 999844430153972158195041480736768 -525510014478638987503614825620045824 3539877408054618984425603205169152 2771909069393293680972337824923648 -491707080093790507903176362195681280 9601402778596393669925218738503680 9936668654275038022232074971250688 -226077828494181555499870736808411136 2348511168451986348631421783900160 7213045137866355522178372564156416 -155427069568007016093625536607158272 4032572740039107004531466899030016 9567150815662219138385911564206080 -821655557631595247849212326998704128 8714832087548043465702445393379328 3349779726417664001761427895353344 -317233050319497743504035752957706240 197654083784971781291741980655616 7494437148311015174856919557865472 -965443072632188443407115038163468288 9752899997732232274729039063678976 4548032444942486664720190460133376 -714557336343622418838519458799026176 2318282161032461982596323367452672 696606913005696873595167662145536 -199484746630967375514363069718331392 3805142529465121109270706278891520 3947511958389934922491783270105088 -378023278991605139388652067584212992 9680757131005551046200576448659456 9851145885972003007854438711820288 -650838769378021289965665803728584704 2432115377204267928131045402083328 6751010976762448310930746262945792 -623045046154322136430564652877873152 5130200265917979800496661766078464 7943615363521297916160866928033792 -761282450308124926762595523856695296 3332137798539205886303447711481856 4092973154702772893096852875902976 -138425831144105091497981268535017472 2311415832910810246732075331747840 3918343724591636169260029083385856 -902455724675975565352773363504775168 535795213839298037959519476121600 6460579199731385662889163849990144 -792371096034490659087067005145055232 9061376078520871784113205000798208 3018343095009156460182110904254464 -765245364437253666064472898902425600 213012418580132970952666491387904 6569283783081479885709625536806912 -282283801671503645207606689651490816 1275760212561399806733784987992064 4500898458391854906220798120296448 -326401311657477509576918810918649856 3636061862212085979450183543422976 94438223858705191731584366018560 -194043779477335011898675185066180608 3612175767575899140910065165271040 9251634519706268323972879627583488 -342194147528287172702339995300528128 2149476369937392605224509703716864 3599874094804057716003233087881216 -132675400654055952858523263926534144 9344250644336505377981874040733696 7190367962793401157213941028356096 -990104397641395985706274766689665024 882549833947925078391875035987968 4616853362997039560535686950944768 -362679285969241536014259405256130560 885486193028658676937429130149888 2970570776755503577198367581667328 -45884422644711404760145268251295744 9343450139259572548118751765069824 4524904687151997525168764517089280 -822044061338244103121745068284706816 4714108803512416915266199539941376 8648026542422844840269853017243648 -111268448587511458006591125443313664 7782755334365891010565328410247168 1092526333851682341626134967353344 -873919890707192438731205128394637312 5622480143676711072043578683293696 8039653656586759034682045670359040 -785416969396399640134046987323441152 9249117051915901954714853290541056 1194341486459971098780119284580352 -863463591441667133785331442768674816 2067563446933395743023934400888832 9308444242065714609881774204911616 -392244106522303468573138063124856832 8011366742775940199760489359605760 5465569145964903301503174299353088 -510823407809122605699662520271241216 6528594933845959600032228696915968 9779095680291440088200983397531648 -651595616567214033377529071570780160 8584043333413405023058445174046720 7553331617789093497623714734276608 -957151973779252595623086119916142592 3909406368221906447989749734965248 7932550903064390709938934157148160 -111970138273202888761536628779909120 2210037700758483132293633059848192 9606427984925249825403883489329152 -655775073539716072515767299767009280 8084189819345992324160010896539648 1355730068726260391882125708623872 -974861708299107888225760787199688704 6667006748780968972186515408945152 1782562674930941735767747621552128 -623028692913333295809620457373564928 4336156420262955538897823873368064 4076238994456211432601177756270592 -470337508708991457399299233252638720 5229569906823214584267949171802112 2152334115322590977566657948418048 -574845298320620205137351384347181056 8831681013286869442196423871299584 3112378679350490386091088497606656 -281039695969295347874289858792914944 2815617937137300470238241798225920 8381275990444048237895624664547328 -228399969623864691926153197525139456 2518903432604719179748899989487616 4346336556553784237488553576103936 -111742415547113829048087265889222656 7114141390350550377636453119164416 894134994207223485170406828015616 -536044410997536999617615958210772992 2733528851716629144517407951290368 3344591571535002271768001619427328 -753212501937629387593067649826816000 8925831615346483020645874154864640 8099146458623306680354654136565760 -199640237547221828904916304437182464 7546633185808288646798879898992640 7426964771523319658326860169740288 -267205185794084922297302437253349376 8208242315942584839428150283730944 1508899139681921129018358411296768 -54383163125042617206121227012276224 9365832311949314315133409485127680 4350231820831699239600762430423040 -733976893139138485254698330230882304 4640683682646451334769243508965376 8866953199591864178133724781608960 -229740803572364196659423340648202240 7501931794897752104812839622934528 1685267453240227694326572354895872 -393173343962956715209796813039075328 1637084117079363395533571279028224 3580766428092338434289855665012736 -864343620552974782009084031384158208 5020982980473315035845777428578304 7314092899807588161150619538685952 -243537263830756519240882732341919744 3406251478407479549753869434093568 4855240159006883772993500103049216 -238791543855105214320545835509612544 972287132207752611092118007447552 216494277894937932947865334710272 -618411909582513210326490516111228928 9928076962078019950456140092932096 1662140062318907222501622716301312 -891753847652001745779334778529513472 6366514983396886928931485894311936 4509943253844207322005473801011200 -406809642635466141367860930138865664 7405983576323763475644872709373952 4798041205836071544981300537458688 -470899410194525535758715977124020224 7811127230837793041085971157745664 9125315034699702519078168211488768 -653625971806381303306936691451756544 339731568156377513729767329759232 9704655632040400865502957179764736 -486576510503539690996540034126970880 3461420354182315450186017638711296 6967538553302944672807339975245824 -736146993943022584499494098879643648 8542709758934021747743551110774784 5187577888229415420785193205628928 -535879180484056032478332582702874624 240712546563936596178469319081984 6873519271334401935261453980270592 -734635155133336603207812175831760896 3281222876184570117837491202424832 9136699031007695083508988349775872 -295431394020034474030061606144049152 2595856217580085627534652529967104 1795267272809411996660861761486848 -986216049044314417126692323363651584 4606912010455194113779929322618880 7850501515935947327018330016972800 -967089642059399905627085321789243392 7387162874450079657024747189829632 2283990634892165879214228530790400 -353070373583351766342536791811162112 1533426849529172523948335718989824 2033940654422485024102924649758720 -356006406813688130996377819145043968 917405238137218414558495572492288 3527650640293281802711959284482048 -269887789602988621815155803344076800 4714596479497067226543286082600960 4227415237891993019003808537116672 -163582029402691751295491445408923648 7169821153792789845834370237071360 5744561019667502938303515083145216 -457250172686447978919983218811731968 4806455750176332238918234576781312 4373845747136820434353855429345280 -697652233456602250065974778222608384 1328590394092480634403665007869952 3064427550765284610044901902516224 -509665121592268977310262978087485440 295397051385043372424948495679488 6009346906448627674793314843885568 -363437614089488456470703190424158208 3885210744867743016579487464685568 2606590545713789261265240500207616 -327134342380380793277190504598994944 6386594162807399324921193503391744 5788718024765325301116967873150976 -474741729770677774650287254400925696 4022286794856137934621034256793600 4518635227164552582679511533879296 -132441073783971603621887571132416000 1143949528087171493033077112832000 8505347121213925228954545186406400 -526109230405736943926511620524605440 3896682244374623534177911165681664 7602207105021657798587239628800000 -505847020880387526500095680613187584 5287500580376676992499276455084032 3047708698138205296355761052450816 -338327965785460935658812655511011328 3629888765850964172598536606580736 3621383767940412314929685753495552 -142909061606068297869458250171154432 4883515077782176681707018817372160 7668703623384154581603230309941248 -488229257141633148144599239137165312 6683192883599043806089709482934272 4268013538308475993117082033061888 -714396019699003780264386030045495296 7414960221070796457213928058912768 5047634650642417036094488256184320 -503178570626469481803728409363218432 7837811094389337481202878908465152 45328987847935359315769234030592 -842799660726847305870494743958388736 3627359941670649885562011327135744 3193715606549502039792459660132352 -143615873894828976998401864007417856 2936649885642435061819004151660544 8148631361579670256241547835080704 -229725497573973733307801758481776640 8938876929810625638121314151563264 6618862002595800831559568325607424 -198219925560282780204442794902683648 1567940103388647855472759093067776 924143974771510115861638617759744 -27707314108959164809405186531393536 105177230855456053149790782881792 5356481763733424205893733776883712 -957100267636337825260175007846236160 973263119614228677012248294588416 2897419307115331027225340356329472 -17463558707322712607557257627959296 865885732478400584026818785312768 7799518713048198525183361927872512 -46046431214335460190556558700052480 1529059648323891903139328921960448 4887839974221905446244015740551168 -329808224549640696171768777713647616 2188427244543527746937039949398016 780501106036677391724937478144000 -537162142583984602084464276296171520 8269157167297293082505147416838144 9688833443961213907803471156871168 -836588966888616366960997601409761280 9730439911352762008850825356509184 5819993196588201676433479016906752 -668751168768574005693092202259939328 6140650866349377481873990187220992 2833253853762138392330926406238208 -798759044940313642885710312820965376 5338591660491374737327336294711296 8749237388003985389489037437304832 -915078576929210001098981880599937024 5605636301534972132643571509493760 266851500824617305844693373812736 -490969925405347965168432824824365056 6025951585606577290710100079542272 4908193847157898424904411854667776 -871266266452952913320646376828174336 581249759173012639155401223307264 1420819271313138917373643640012800 -738667899569642569854551717109039104 220501322481257708161870522744832 6739538628349802469102288755490816 -184045386827326729093396454696812544 8598044464564807465318885730811904 536989825036981055021958953959424 -482284189955261671736466350402437120 3556570325753993081824508238626816 9147574023144712904478343190020096 -935229260723473524922288643340500992 8152279304056366528486757680283648 6168079272701979436537897247834112 -820914468984105729468454782573215744 988637624748488086461805003538432 279648153387944121659771813101568 -225320549766668493646298941132636160 6841287130013763257855008896450560 4724001563602071943287947975983104 -845129582064254415270567292312748032 2177441268800877281590946840969216 4975069903864825154746688190021632 -972489939111921113669863136181616640 9353467594116390508126994016763904 7515532685798334719732481678901248 -662801409137449557698709717551939584 4797338307788096259352512094535680 3674007219362235634245014501982208 -378921106699793590303044588873449472 8991920234991804974607763228327936 7397268457337508326278440165572608 -880222370535111136258314439730659328 1467673933021622763213616628891648 9642668951526844680004681770991616 -221538107128974047736241770373054464 6863380273184769957359494644105216 1674983997914943906440324541579264 -261170576784669093006354205884022784 8516246028091916183933835771117568 7441530729378859642317567070044160 -572815704022230492107985170255052800 7718828915015210222632886742286336 9890711619583438634914675125387264 -749886535594925594712953628764667904 2701724747548065607082871720247296 1575136972144227788777113553731584 -848745677320225079125161495880531968 1440238499139215439737812949139456 9363347685344204818298379666718720 -817586229799615362003582578036047872 7828202087751347611292482832171008 4110192892520757190528165163827200 -40676174454178424154674810794803200 1404826258244581168494612548943872 7565488808809989072673604605313024 -527985095195796098435222400820838400 2604080673425344361456307477151744 6424917299130218550365614763933696 -346058460207311707122791580405071872 5480736383697903101128168456585216 5016063738041379393138600081096704 -344209084363302459161621442896855040 7020662438559195218444862653202432 751473395050761163218017625047040 -478011551172639776263889429133787136 5974505792154420667316113393057792 1611924980182442186468935457570816 -79581667761932603318815117035962368 8634908668562543060616092072280064 6365924263206603586897782874570752 -94248294088614309953936662869311488 8850805776021736332771959100145664 4540575213998064975892338079432704 -417863792062804460183594035885113344 683623102400092097486431098765312 6978176708151835833902713114984448 -233645553100694810251209224990228480 55535254064591775838934841425920 4728631555493646126933119810404352 -631951325272465391725236266008051712 2468633696007662888308688367386624 8941668429509805787447299422552064 -620124639579615099541438022230736896 1920014929156930499152149708013568 6202221108645307529468852182188032 -125111213128623608108766818618834944 3770636961699703790173189052563456 5430813000517929425420138523394048 -479267327491370186471124127002394624 3319559544088846026027982120812544 9290143088632135057100223046221824 -206661315446192091757828396422266880 6543587852821354690237537017921536 8520830611289966090191790309113856 -774477201431057126371020215479697408 8454208176280547235791493285281792 8785576730709604492406224305782784 -348286610751160850999368432769564672 8811696909606076521728717615005696 7903809106907798772651580844933120 -472591346162935676137294911804276736 1096387324804394448462603851137024 2469924973288191804418229352267776 -192089873404186202584306681234063360 8426766249107924791829093437931520 3554110865001519214893897965633536 -128217633365732743139159500832899072 5295869444247008391801573124079616 176217680812025822572094448205824 -355403695975754464492194817351090176 8126577208986054523171864779423744 312941192654471563764007601963008 -215421332421316665587400529986715648 5922320357390078819058586235174912 7639103160107955441291297283899392 -675503749089150150336130986639622144 8485779629225999986283608176328704 2960697117457672065723564994592768 -633131648752312089280986340617355264 2098208643921213097702119677362176 9038413298628154996099844686217216 -662063029010078264096303754845880320 5201169548780979450059884127584256 3214556226733683114734186368335872 -67611025743264824610453640102019072 9139369351230820911826783529074688 2447234545963226175752983216652288 -801984941321893418030354112039616512 6680490118291735147184698425344000 9214962384396924915183995091681280 -298491991192880007217088664801640448 5453634038770916834801127033667584 2401223398759648680504344742723584 -725758272842944295925243568711532544 7301872873985794637497879911989248 8330011027510173131079867502166016 -905022747033894342205246010386546688 2199862508846295629122170869776384 820822247645283785214784866091008 -958955001630033604742672067491528704 9955775399959322023325947853275136 4484204592037341941028033201700864 -854597310894750371584528649782558720 3550131271970160308948328534507520 4866821592110684466058284027084800 -82612019760816055719737568056573952 884347321481022940819518161682432 1002109034560458712687369099673600 -982182669423417940717475665132126208 861447525289158086613173119483904 5086859841143427322842901527920640 -980325373670783611299407663114223616 8092942212783632637407647422742528 5637309532312333558200879567339520 -334760751911449971357668667641823232 328738727597730340666882308177920 5032227190759677002338000112189440 -871660146409596838522617574360875008 7087324309397658513949765916426240 8328311160819887200547121246765056 -824768148019308161936158468603904000 7412283878832611359779498915528704 3448682737142718516553803144101888 -467742227091620800381957902488829952 9620717164655932969508877878951936 6182952848151366484223850597842944 -513423439526468836096873339463663616 4776372862407261250928766256939008 3099948969995624146259585443823616 -724217046865534127119420614911197184 8304238076960054588953886013259776 8404294809390922208311981589397504 -793686188627292508514707097067192320 8924713296805282891607934364549120 893275472077025666359302815744000 -159947630101188172473878069079179264 1733523227525000324922519979032576 6288875321812688313208704004521984 -225436534995638066912433204617019392 3431575077433049736849988683563008 4165419704660027432490277445566464 -844261702027917354331556548790190080 1632773206629983230150341564563456 8037874371789137914124658618138624 -459968815642008048385138708111687680 6268040187955765039927044364828672 2522565579040980030706880513835008 -13728226223378251816942929484709888 9206031463009591863367642696908800 9739100027479720362907085511327744 -457890072819630930750500043587846144 4166636953463521016811019424497664 850020074457525059362753618116608 -225837311688245007326026554715144192 1730119725547374792920994280374272 541470562670014503590385361616896 -219969553824265172447632961117880320 7307478656837510661886557235970048 2315770667710772913100214803365888 -610930802967170136131866554548617216 2951819686958990733871098256949248 1519192468502424006794320982048768 -178042933311111579689550841504595968 455968494669170897441638701858816 4613809540258393118713160843395072 -897697223200770361249421993181184000 6779160654321336015067608967544832 3111586036895272708687829003141120 -50510514034438045261806259805356032 3147559164025945909620084987396096 8243900177774496203624699706474496 -554832602053029268024157518790918144 7618361916885933668354947362586624 8991966205552620205190874803470336 -281490623498235284996352400219439104 6742048213599775880180843767922688 7118548242301677260121349583536128 -717035066995283731671918078037327872 5090275939861221598692686216298496 3647630819847969911963587484581888 -463910153636415223330175873519190016 4607396129707180433317179124875264 8481188795282237484980934725861376 -611111134292507831860037543864041472 3926045145781599138513436947775488 409588443982423107595767094706176 -830133529228238966063826114596306944 2376319857648797831860043164680192 4237208323219578756999216090841088 -576984910733774463867572984894980096 4182735933481412572758129506254848 4723042062805068690181920038846464 -221431428273971157239467098236780544 4407610364170570716969550714241024 5192457148383064926258354423070720 -540282428373735600124067395470884864 5947523601270066834195023925346304 9692559223349355658903858737840128 -10935522719227551714981978761592832 6954967340196241110239820220727296 1407355421666360824313634940256256 -402172657054972540456460307784531968 82647182395912889460676708270080 4391151884493771946324870020726784 -152471663724027561901518977413152768 8367477897583136255941782339059712 2399003946688329346181606051676160 -790495310369842555299127232686981120 5283595371930083875008772401266688 8487358492967890465223377883758592 -367612766140113333070531947604738048 878442460691895820665877631598592 2925780801957251172815279524675584 -96782106810715352459942129592958976 7003295546500096348736659673579520 3158139433109195110533040311369728 -307372274393591454538200190289969152 6845297304551556281646108347727872 532555002709355950918309584568320 -707227326167087513724925430963634176 2708669654028523632866987687804928 5355149323736408276217658668482560 -866029931534607318843092461196148736 4072278681796748783375111608598528 5271251971522047730278406513754112 -345914794788521889570051973871304704 9960369611055675776195900609658880 4986647187688555750787051073568768 -616341348130513967113233553762025472 2692852345915335425034302154342400 7374797260165012591658847847841792 -158977902135757908815447968565952512 7617006047236947926170434109702144 9098851870381500972083254667509760 -663545903140205775070104081148149760 1089624845300172968987633798610944 9933795590508917274410549461909504 -252296284318486603511222048961593344 5245561957422781671765942705586176 9687686907842399896028399651520512 -129251554231528321747577398414540800 9721623270892956250443144545435648 3269783620658923268533306079051776 -313977846970672627573028840030601216 2679981198256429516901850510524416 6618603018895700143820616388050944 -592200181043059067293197165704249344 8710569557686467498621542244286464 4583075748621421114116965549473792 -287354059415096882893838571125342208 1304170781892106018754974319640576 6746992451461516024891914898636800 -195363671095699844658735917517766656 2913737839660891316964951349788672 1474176111697236250106982624657408 -519079608453581135689639513548652544 5354179316903435378076688949706752 6238610888910404941880915035947008 -374823092980185070492307030963912704 7958987516936388105960570543407104 726833659298187698267097363644416 -923039252785417395391229465504776192 4324483592486762622031712869154816 33296612866455312038801507876864 -12101054859750102686036576453001216 1514046402020299940448850101141504 4521652593101544710803164904816640 -199108619570819751456155463927726080 4749779183858000190097977891618816 7103364702195889154437025345044480 -212471214186571177071459034694942720 842225863240167457634593403830272 644950711439366622694725881167872 -334765195619420040393904740802494464 4818262165275453676686064469671936 5292828516624357986194649578995712 -370309804285808411074468838010519552 2245079566036658005320500871430144 193731423207502760000634887340032 -290488954977962103112267211284152320 9740281460151262418441249356775424 411150108899380004504089785270272 -1283840981563263142624063366627328 4391244936984347774652236624297984 6712437522168837547753067601985536 -43291681781286762206878897895636992 7013207892470582250032117682536448 5439227755118379164539824625418240 -497002623790589180295730862921613312 3460988832419249733628256600457216 2214644161644515343465729348337664 -87720854645003972667680017579245568 1254331377462672090576845614874624 8043103184380605530463512874188800 -479961213509273418693769227900289024 2282880895844754303126839477927936 9244414580458864346735578043121664 -947206195118792431593189778797887488 9449042872042150629907628887638016 7103612951129366871212950552576000 -754490141158098040641846677172387840 6400556894324617713169852042051584 2166365943147856102910462026317824 -969915093605901392202321876058374144 8294946143943168670632923971452928 6549105386370206004471251549028352 -478557887653101901012589538109816832 6012150410340571903834855563067392 4250764313486736704196109311934464 -783362177991329636583198069411020800 2008695084254067577652552612708352 4715219405279443879788543161139200 -627647524884289296253941167819849728 1668425700354475481687111338295296 5442147828692589400794629821956096 -344881501902362119248045025014054912 1294755715229281532512640025231360 3669862210890476107085570392457216 -253073838901069134809151755492786176 2813126078847024012692874927800320 9423230634562941775996394751918080 -993089243398179550008388384381206528 1552248965228325049599852455919616 3107489303157117535904078357331968 -444854426684892716998395068355182592 641440187847080670231925060796416 7579117126690242444127903756058624 -779242876749215632607617357140983808 7968530173482373145672070050349056 5157915124391908580195710875467776 -878930173066863902015038303703662592 9242149251471278466182627591192576 1016664013656657801801451370971136 -122854849956098525143882342240092160 5401923373085505126804423650050048 411058697360725575122754962718720 -913589372697133601290603481480036352 1370348360003338284295134279368704 5024161316218937766347682179186688 -928013948991357668064079216130392064 6797734709824320852932147328057344 4005390818947594418274417841799168 -846123499608940102014438986456498176 3313037137834411804286657069318144 1060690909781732125546387452461056 -973711488447122604468389981385129984 7770895013962567503982796516360192 3359188112501177295848059076345856 -867669101537211017459962504110145536 7990581632062941428358375540785152 5530725102297898218523442907447296 -999634688615080293613098498669936640 2165002055872373625662420769832960 4725023622922937849714024529264640 -416988753973428150459984303206957056 419493450809343804026225741004800 7545182111448307105492620244156416 -595249399886414189008717960427077632 56123317026770723222224684187648 8539766036134432291167263707365376 -722420850120406836859859185082302464 7266679990620705373425881690669056 38012750991053915576558749220864 -247554366271131780685512683959615488 2079644670725423158166148630970368 5937721815176438542339553565343744 -843008122490506114413651430020743168 5502075575742961306051214558887936 7818885691940045364127602315362304 -258241731662519206087777612044697600 4351291524525533136622239313035264 6566205558036352639744545575141376 -16924115592943943888327724236800000 2097688169797062505237766320685056 7937227800358067774834652083126272 -877951708121488611869890506917937152 2329018777920902312518871169368064 9331865339764616796934265406226432 -507498495609036310000770830219345920 2266145272622143549844245627011072 853576897090653183958171078623232 -681795986326261284735846743810244608 2340780054498706738437220972101632 8977665509770595938236689490640896 -25931579390318435208949314055307264 7279111803045410421835484725510144 8837227559511906314022868893040640 -549599502573642404188253319220690944 9562556196255140472336821031796736 1959074182343588184974289864228864 -749017290258499264868887685652021248 1522974683045794388060100448223232 3256569487578286689806929593630720 -690657893095788089345157261086949376 3675371009940756997534692811997184 1133884710366946449876316162359296 -680948079427804031468903928187322368 7545451260338711723700948618444800 3474611310916929293974318505525248 -525062788122136475700020105743171584 4759871809240916306987861837611008 4239132650031234605444114484822016 -42319122459818719494737950826037248 7506904311697339895202936331960320 4802175442756265784035092417478656 -350089606701595303247972295405207552 5412369994933806145308794183221248 2573373085284082763522760062795776 -326883072159645977046164530123505664 808473423874424812240442461519872 2139149341868630818439879714668544 -297933832584832862001709329560895488 7717888597893141247596870686998528 3004358359875091008333900243009536 -611585409184379029326203594301505536 4037588709914120291615006554849280 6475070441469719118175550455152640 -443288417199073373471995107003596800 3571794241186726919360533053308928 7209117368592236875050577322573824 -398565113827273968969851271894794240 2726822193297352903111697162567680 8243126913992335954451998523260928 -652711147537267324109883823118876672 2382292471593958981147068865708032 9746333509070020675102547445284864 -364254057884946129578175461614157824 4412906790175354801362885566005248 4679419639093998366974595276210176 -741480628041944512314632306251792384 5543227437065769870633315986309120 193572312320007086169221469569024 -775320574295843583130327101732814848 3576704532599090836619895083368448 4246773664917754315711101228023808 -871901678718044874903504314169294848 9175630918385232910516704952451072 7332265623609480998546806061137920 -748141513773601458711953834678157312 3754147200510660283233050428440576 5045981270282069421421059624665088 -564521265909533062906851832526536704 92902372597200645111091520602112 1368760608206309035711006743986176 -457948914470328815644316562482003968 3684103481308512057179705027067904 8228887410455087314910810648608768 -934688019085745368088257209206571008 4133192123982598212505487372451840 4891688198011615231373502582882304 -158101615292064905356011391183486976 6878642628089041730964261653446656 9496316452668704859863920750362624 -339380101141220086102207011364012032 361212165652113383087249901486080 6587603014925873785071723691900928 -229336721205282150065739299226124288 2128161689837329585518652680044544 3630842117255830449388996853235712 -94411421981552473782544293083217920 5835598007331229818229539450388480 25684576923591488000165001822208 -740614458193131821780935539484000256 1643029393032790273711060637712384 7821727609280023711385845814525952 -375614651596566088756832525080330240 2346916375311301378800100715790336 7911590305365236647667221340880896 -116934589128328289762323894426927104 4800828161758307901230152360656896 473467362331179741199041797554176 -134034947641152335385898640799170560 6717937474605535625780117513437184 1131366384513576746995926242951168 -124912330096038056891266706320654336 5526500012653927785448371199672320 6867805955755513379083975902887936 -733918318630468305412704046069841920 150121094281329168376600358551552 4139843104112061368254127742648320 -202780475774795717602745967523659776 1782334219086070066690940158869504 2472272520250356422310941295640576 -599893852062088208849341100454838272 509834567954898461292349070770176 6879330395045192586280224763674624 -555234448533490756854255211977375744 1286033855751696394174766921023488 4321051301906991506516257959575552 -262720901799376617804788964261888000 6305241628584792884766246529138688 9333051178074588168438299798536192 -525995154725874336390973230782873600 6932597573905159441683663336505344 5748704423972282230738048304283648 -334347318240148530615475457268645888 3228796086378662210941640614346752 9128282603171010176953769122594816 -55852220628115684346634305309507584 5900453329106211194774195955302400 2807287282559642461945335931469824 -393435586729737927647675363065069568 4348672060934044995043777855881216 3623453213544387640652730650853376 -850629337963245479203873260407095296 1934796075343264993496643837886464 4188664288491138915896655855222784 -756783883487688114483271738385760256 5382043515571427723693042461310976 2567120735133637223482842557710336 -905843889564251615516961387019501568 8044161021444278573368216918163456 6556975613967013216553743373303808 -861595418828442859675697649519951872 4448812372961966466951283191316480 2871548904541033929395304891678720 -261428683165877014260618153567453184 4887712282985172012234272747290624 4314486880977890499760268783910912 -574001676253855467327953979440103424 9982018084617593543776425073442816 3872975951770883606577944891228160 -613403107078828091186742801503092736 525448685825227127877828320690176 8345826188059555584658585361055744 -64978504685313218372805829377130496 4900352234687991509447603436650496 7874245916478786756280792781946880 -619899930080710071944870897624547328 7842034538424771722330754407989248 8845474118723384502186397434642432 -422571975240440592230688255413059584 5276334730479909371593184356859904 6825473552108484040420029756342272 -37097119132529494851679949569392640 5159704379381707598758166417899520 9585251122863082660172956769976320 -651254286349812732445629683553271808 9794211074348520670367090214961152 1007863093783671734652785894883328 -938590112854620714127776272978280448 5879092612428487847306682886520832 9012519474110917325980631698505728 -140182616972595861843593778979405824 4534859030930885700055869694148608 3892860228737239236942612781858816 -227544096811461960496620472841011200 3192732999923947391737015516004352 9594691786660360374782117350998016 -154224048479988970758476762489815040 5800784868070132150434959397486592 9484539177622847839809259681349632 -542294694718866585313640448050331648 549670247159507556665443198435328 326586118416449407070114938880000 -530367880029665576606559855538339840 6750474252468500698385796560846848 4456685443471776988118763083661312 -41124233366978504222342303419727872 3395861739862486821342117193842688 1349125340091259672696800963198976 -695639409367351961255640268147785728 9588363912928496056726369547059200 3215318889387112086005522601345024 -457700422090420471531778265099272192 911934890924115602288462348156928 5992194557969923041871819540791296 -944036158130682235309332058607714304 6052390964165082027294822928220160 4543298995877940320598852248797184 -553071455332378430351618403578413056 3727280300569205797795633989419008 567581875034223969216158595284992 -214772797139115650733797070681931776 517904016094564687236045903757312 6525441202085680393317344606158848 -827222465677728733606415206916816896 7215505198875263581691323151810560 7788309569737395730350757346541568 -516535589485966756559780920659279872 7810970935235596656819626236182528 9782102666121329059357362269192192 -520731120907527652392236966884671488 8878432412820505718872657671225344 5551085947508287374034391890132992 -454249511952482463576311979080417280 6550299467984912701518426547421184 3184361111956341326776362021683200 -878715181999932945079330350380875776 4723489845499368484958982748766208 258977156232055098292771554852864 -696400830305389564410743179794448384 8535622102246676390487089855070208 8498610251209791931809977690226688 -598720607044673961922460537130582016 5670103491657882062902709343748096 4986658998487394720282119111704576 -196592248282806752915454658040823808 4060197926227465078227772601532416 179762537641534043587124989526016 -759298958170864713108881088125599744 1428847102327423403096941319421952 1498047508127614152621553354801152 -338743328486181829959952918495887360 4286527824549393505259412783104000 5159797903147440143146623680118784 -763698716974659673217293617956126720 1801547416808697825653041120935936 5557193206494114141666756719017984 -420340133344440082407426111882395648 3106507167806717874527467961581568 5463258736763821165976422184910848 -248272260446756674374238838873653248 6380048824199655824584560380739584 638577677663312113260809827647488 -848935561301240799212899782486917120 3699259158496202635358135960731648 2058334135248818901248062041096192 -797241181200940401319915738391117824 4618162362580651790098756257447936 2919773121036529410716754962808832 -933949077684115524578741505186856960 8191298360047938850576983643914240 3111646206759038013212922981908480 -781077602029869094295256529377427456 9917606314977930296322907831271424 2149957492719808422738510328365056 -844414103191324808342281207911809024 8634375390490446244035062340255744 7975564829026686050388812282986496 -22562046874964516490491529109962752 4601030981523931527840979641958400 1878170447091467291503758946598912 -452692888736172643707769380243767296 9860167164232666397674721125597184 4651479553027832734603655203782656 -437600458221575447286349853209133056 4015704384504157625557738078601216 6329802924117077275093135200878592 -734056881231437460492797235397918720 7290506452685129873602045825515520 4836288970529844027711855106457600 -167096693697719888262474169046794240 1439351023498783982788567025844224 9385192911114173388354690517827584 -441220473331619246952248104219312128 6652530559907965131612557137674240 6578196576907420311032912634970112 -529307068429711014567022159506440192 6906284268602558993100356437671936 8654361153593625420654885566676992 -146720153015965766901725660159410176 1092872017943073382107156815282176 5814964924720516050995676727738368 -455336559926628814381236512811384832 2391624311715046344864103957266432 3074588911691902790823252892581888 -852189830423101254139089701044224000 9938146133233679997185088261455872 3239519240754903384902126360592384 -501107971914368105249555023640133632 4056978083867273442993415278034944 4251379326048603517790948134223872 -374065316779106277325684484501143552 4997430343109929141312164055744512 681378502946600116967913065283584 -327698722969303087671570751767445504 8616881631525087242287129506611200 4227229139015666221560001594392576 -387192841684304685700559891276496896 2231099264168722862543130735935488 895336861665362458784254432116736 -307854792001462152994882590750015488 4137521955643731171875738563379200 4814912513346622174459401628286976 -58466938949175349832570086900105216 1943325932149304339541432289198080 6561290125643024031122301369974784 -226768109955495087428322856026505216 8448629304639380035582771614187520 6368593880371507808312067769761792 -181951827665297631309982361232343040 1711117628235703769078272612106240 8797426706342553634189831542145024 -844158810531041543127181715935592448 7668336032372881194360721182294016 262587402132790544725575519436800 -286269827761623160905438721369702400 75918004590665139092120282333184 8122252618055262104571331055976448 -19964365439876325074171584785154048 2957687925756158601050173082697728 4148483247570339781517208111284224 -780439205517672791793591920818651136 3174115772279181957316229044633600 3832548253717946415691571600031744 -212383373966092266996490750182555648 5929142411158242744712960558497792 9119847579550182881072710189842432 -585115379507341375113231444828225536 5305282730215193629788594910527488 778997208665522613077240576999424 -93547483879348990813804930430664704 1803097191096118862300573631250432 9100668240737209542032977840570368 -687778134542131968784158178077048832 5553709409875690561074100258734080 8704762528000339770278481812783104 -260344035314384240587440526693761024 6396255625587392323294669762985984 771066329168355745809106485641216 -430099079281302334401157001704898560 4186752200707723602924067211968512 1045864410157281681084891321597952 -996987356737491850048219221353037824 8924995922021738171135126314942464 5123033203488939827671470941667328 -12552003088746749296069672634941440 4632481337876439565926465867350016 9651484213497909658858192751296512 -541053938241382008545371651682861056 2810274280302799929399041415184384 7016462137137255265869781163573248 -938001958884461974545755914459152384 3892930339717269362549410372780032 6597091514465915788788749939245056 -755903880291516142097370839183785984 6089785343911139769767534446772224 1405545949859178417272301820051456 -317003451774264494434094213622661120 2813517725790204069956697322422272 595326324917895500509106340364288 -221856801083825959499270433502396416 9365502072167709111780482591227904 9066258573031982694584465892573184 -725279720019399370872038498458664960 975331661057033954114745986449408 4798397352917676648067850993401856 -743739063474929274480711379965706240 2605024921858270912722254923038720 3490202482620097969241222581059584 -584970219052523688255153951033262080 2160405032543133156948050725306368 9734340645091669724739332019847168 -630589714465191587522161767100710912 8763286954998598339709386792894464 4694316561312240430420654613856256 -963928878935037675989092226576678912 6048577308448073416432517398921216 1627475620105672039918831138766848 -103079758167795794042293426686263296 541457955168405459011689338896384 1463962389721374267888965406162944 -165675907697279481381412813202784256 5090596766661324487774522168049664 9237527822207229476986494145003520 -82431144186460718506258125717241856 918000592696582236762332949643264 5905169560875358811427625808953344 -148026317867781698490634778924023808 6223908806171883805952676410163200 9556578553444027308554769703895040 -584599521757582404168119823533867008 6195673754507450775078349538590720 6533591483606359501662924721618944 -156968847914198006547265392031563776 7014508565866350698371989563768832 2842935602428773458888792452628480 -276122187036551974243710344418557952 3691464864395735425028414320410624 6775859243237592447101060799004672 -702720743592309316197274230250799104 9482300428313370043187009964474368 3825065175385545065097713862836224 -748594109785016295307248913197563904 4625660284966406658735813620137984 976984293865192151517668185210880 -241610893031447828651584457327771648 6753021782943767688220316799074304 8757303317800130646906561452048384 -437599777946472521442532981915779072 933241729925340035770064532668416 864874202164595278536696068571136 -615844799963836688345173762938765312 2288345831904684726150689093320704 9626150317248346499857112732008448 -779747466745629234442188660326531072 5995095114732559066945794311454720 5168366352981586924041424649322496 -186726980653734110895867335985332224 9419018041909767984357636713742336 5961141864470827165112854195994624 -231449931467948131007424419053174784 3207555956629585926276228730322944 8359132346749133731857319262683136 -6211723925992302606363487799083008 7757531820017313066614746838466560 1883774513661188674917411923689472 -576776396369712439694009861838733312 3670319702917975255641164785647616 1823222902934736865608534790766592 -364159903512691535317143851915804672 5875838668614139266708079695101952 571910532361978461506620767600640 -59727816240527030028530303390187520 3722227461501117236331179629608960 9812974961988154590369733498896384 -460178593940428273009037028722999296 662160265596582276565764619108352 6946469099643284473541367263395840 -782196895822917221393565011685670912 2492160472169214733415733346172928 9965629352104068660617528798609408 -193473309853096079394520938825383936 5716176118144706962525099418189824 2683857254284119948066283726045184 -691650204883624194350753678811463680 4126520176431151839014632921497600 4616951725287213744647154775883776 -834905535418477634793894028536446976 1552852381908154137810154364600320 3719498862619677826943579370553344 -704639417914512311294349355585110016 4523859721657314131729716489486336 845176598151509278961403066056704 -89468042117432438467777774315634688 3285946990494110692670392380686336 4735899924479435176458651625848832 -19942969956556672217046911876595712 4782787243136490955621284637048832 7193307694370112799592678835617792 -191172274374772358537350977836548096 2924886527517669114134102689185792 528918187891952829371632974823424 -694700053551814692080675021083639808 5178347517378885074287663431811072 4109926936546259173017155750854656 -522499648502864891774560609813659648 2554980819715959979855034865156096 3405401244934118911735573845639168 -527411169461086763697782276111728640 1450421984954932667412595068633088 2152338126464146309253439936266240 -828626854116799526378966786569666560 7809316876392317151659698774081536 8350972965308928192283817933799424 -783058398371981342519971172432478208 521451986009283122585831529775104 556239492799198913960423530168320 -994220547175169536521772700855697408 3237568048830870038961474364243968 627719832148236300113792116719616 -662357752372246801147400522886545408 227194813135833649057712901718016 1952354601756526742221239128948736 -222036234832428894524051675552940032 2975794245814842661985582097367040 595609739128095289837961588244480 -6472158509397723837144589947371520 7595294637520558320640165578539008 4195833435519551687172356864737280 -468799213768410328416339927083515904 3112588128048087222973849925582848 7184929073620202383000143505915904 -905939733423973847636906326580264960 4033694501749744635236735072075776 8837276176539387602095394145697792 -803853209170961689104951984913383424 2636328998898931214769914464174080 1298126835087155604463338500653056 -97313751167448908521745350676971520 3461310905674402631446421139619840 325813379560652414293770718150656 -623558965984766757273470304469909504 4375555201888055176520135119732736 4824525159600385644711195871019008 -514074813369662571287926771778846720 6616621698269922233046430627397632 1044660894038195238839888983883776 -661364349791563298659154527046860800 3899535809799633775103186831409152 8537192669032624715318076500869120 -389505904476747161787143046888947712 2802135388904596032295737243992064 2455383418315049352455703479975936 -275637466517474923327478000192061440 6769593752950150626071194456031232 823253839374833824276694811279360 -361765387342133474691997349756010496 9214653267042087682711085169770496 5563372611908767859286920237416448 -432873755076778533279647303416676352 2914155085342723363111599429648384 3278486037050806371360332710936576 -946422574511344885619721093624365056 9353904880087945632185425372119040 9390866407128580000822426819624960 -662090524103549236233598452740653056 610851562548810184326186499309568 8375029584082162539685925697355776 -649736239969161558329401396323942400 2130274365890905111752119509057536 2683380371373911347015269279072256 -906551347162825072533629604875730944 526417372477279354821960294989824 8514233131206396266679067268349952 -299786705184877221751458609397497856 2558119381995271805101023738986496 9412864070915758834009194775969792 -175330139383720585199177158495305728 8555865183522743410100564874231808 7132677767748035896216548024516608 -775237311049412330523808829936762880 9351218610547348083717222592151552 4721649161249200597788456210399232 -243606483023279363379873945917325312 6373496986196874362163037888053248 7905536976258901088805817663094784 -489629329923732627702142084921163776 4516398517960480638831904308592640 5857938397129369691071952671735808 -696831634565390440540310899473252352 1845657401336992488973004290654208 4361815056153017188308347563016192 -351610005979835597539646714012499968 4942253099705691196591523892297728 4835027178804856001656946593628160 -635250493966718550784948528704651264 6349880694358731433596973744128000 57183407508451517028151387488256 -826234698963593692304798569549791232 8006257620660976387864252414689280 4423131477096703723142528603521024 -593597308683355593406190109407051776 8886407849053017380310255210070016 9033148531766221950327901699178496 -39411639235702166993596928269221888 6809643030132426367121094900449280 653930837744978760050486814965760 -618168595615697333121021359954067456 1257862348051205760405093291655168 944634248867516515323418003898368 -574050755922330150667119920016261120 6294642771426430534746712121016320 3521659146577922663738692820008960 -464587244605110745674574868581974016 3167686266562954987364820809940992 7391830642748313178543912900362240 -50495287626654297055565823816499200 9514122026054364721068494175600640 7469220314541749431868357630492672 -801458025145334697891643222692724736 8407883748628206870463456204554240 4660195811010735108923329634893824 -264233741236468346620612279827169280 944551465973232377569666039545856 948267708055205527999175553187840 -747671523103550691237796608363986944 6957513742436296492107923139330048 6071148108260968484688979864584192 -347118126263880432970140917107261440 5549204396737339233231465573515264 4265638754708150705231351907352576 -941433714785456228681631274442424320 8885675698836766441252322153594880 4799606791302447230598592382107648 -396112521696678776207422229118451712 1660163098180976600789899230052352 5236893115954493929736369808080896 -723420254475649527476940253056466944 3284387348816295425344071377354752 3906694133073487954681868813598720 -871755052977410504957986084155817984 2590426704603445985758191995060224 8808453467171085675467653295112192 -564468247371868282002060251156709376 6475755609505583003053054561878016 7813407459134135578805565799792640 -679261568169780623537356131822206976 1566288658727719198160863205785600 8735383647533373744584557804388352 -51647358602392117688697700170596352 2298823974757322594399564742000640 5581344113451538709145735105871872 -795181413649044689271360687481815040 6780542724413620887230811574632448 4636039188995403449081465355108352 -491923275594657440427377800664580096 9633397209147851799732141468680192 5146271013096190425762929892655104 -536979918269585415207189484557828096 5022332161833961066231267325902848 8324569499579334080831403103092736 -239514131245614648402319465210970112 4804759173098913734810794077454336 3542658579849689280375680774701056 -484750754219308757701020948405157888 1997898220723578634966156428967936 7720931025276782974902962311135232 -304242356662491861183509326345535488 4267895829629561031568318758125568 7019014467747820656040865928577024 -983477800383565849530397560498290688 6544514635309553111770139524595712 1603682542623331661076977219010560 -617140759484947337721558340588273664 1974797655077281778580000216186880 9288323898334514278081711935848448 -601647619448316003786620330093576192 7246205153125460182558955064524800 5046786385152792294461364424933376 -53988897795658493417067796643184640 2411494059294225838933314791014400 5233146292366084211503132984737792 -131228343619069651988751096406343680 9660398298272868191515180737232896 3553701736695558888526484726611968 -349467691641646006742764219025850368 9876462824336938799708146860294144 4824701684229615424108647050903552 -979619522294255335882020602033209344 6295132554981545897412013586382848 6282606010725200958803318434430976 -743833558899543459861956305199562752 6629458016841160448954866969083904 4089679904040657347914893101105152 -983049752333942996742071046440484864 6848426820718536766190491797553152 760794199552902994230410683088896 -198097175481424125886565853001940992 5437122494986653808734774434463744 9994040211525660376241628107505664 -704451872260916345473317655227138048 3354071138525935101400288524763136 9905820620099677928388388005609472 -598194705295558823303320854035693568 6236656519332526855039883587616768 3591269681542206775707073232502784 -711769395214804940118132454322077696 5590590257091879024074697419522048 4378867316902316860248465904500736 -628472581283508824343830196368965632 5102218573487871719829443042082816 2000401228196026971173485614727168 -569793089900566375536155862939729920 5465069992318055683224095172853760 7117470989780005048304214032252928 -28890436434625206608218265397231616 3048086868755335845222224477814784 7845163147378168143382058685693952 -258245141157797052362858564530733056 4755784537634843457769977344425984 1034374224274126986984021584510976 -768048837755988487113265868284362752 6092787449775031143978617435848704 1579571298621406532460254848876544 -680740003502080818459650544512270336 6118999338010066437781905056202752 1059034869140865795105239016144896 -927085230959654201528628212741963776 1133733007692275020903384505909248 4425665798365712581747450126008320 -850696776572468167844824524582289408 950889342181591388538933270806528 4698412390889224834007917674889216 -51772397168274656081031869558161408 8773440350501713953706705032314880 7511437195462813955545458819465216 -178614166170939851564385838829666304 6887071572835203390518412307333120 7630251662932778403485245826400256 -859953905748536137148652153030574080 4972120657953037308749965128892416 404930793328112916285548350406656 -709184677005740304663003226722795520 8267291179055972206019176915009536 4094941907820283398906817858764800 -473388430229979854823162142722621440 858169708175389591038346062200832 2703852801894582305611453260890112 -401143427558862008300076581003460608 1242827601690240677430168171577344 6163390423418535054282504492023808 -397088237941566621199466618423345152 7320770077327934846738348462047232 9871897757950460798788013534478336 -727514655198386015681013059147530240 9092692870521541248391667861422080 1807883751814509413585666877423616 -392334187379286464309578595133554688 9099705054226264820665863507017728 167527030725014059017124800626688 -986147365820786680096448337957355520 6954985919114114952917376846266368 8449724455991793853807896727388160 -956993523760897871451291877159993344 4364589812884368044063354418888704 4304707760117775497646327814160384 -641943610337235526953472694633365504 7886559687087936910030813997826048 1480492890054119168341065475293184 -764592453227527322966292229991170048 2364243334242695273490567382695936 4824213108740407983714732743852032 -903426022500623232728803829126004736 5990217153236951144418071568973824 2114718715572187524552531086671872 -579039976485826855499566232060821504 7496107944017296808533889956970496 7237942489591728403410977548140544 -642981509177522609048517075854688256 108577630509310194366320652320768 3746839604507800006968379564883968 -43848892972203359536967458802892800 6639586739289671841847019277647872 6719406831531693970256493052690432 -810073026581621894892113713789140992 5039637557743550037755334810927104 3722223392051742300690223820963840 -18253387960803192072346995060113408 5994229309572334164024529663295488 6958871762701501859303747957555200 -367517482479582260679059461761925120 8603878221224798214050436863754240 2793068597544422910827008544997376 -780757795651721889674654027947704320 2346970010443296470307441662230528 8434028635916010183677208376115200 -848421864292443109934250784941146112 4519909432997225335726163076579328 2111556255418165059106990362460160 -926017619079324497025600437601959936 3095672260749775334495556131094528 3147056938735442232788685147865088 -211652337597981764260971745474772992 2203587812458653556660224395313152 5756723343960336846800788024983552 -981771185786528655026422152721072128 7825583847643817801973397528248320 5796445480632369336067446846521344 -41549625801822312196829652782678016 4915002347821727516310039743692800 2442483492815435495408780254904320 -296466467794430590156829387374198784 6528000231746023418117286508101632 239102275380936586229034289987584 -526073057222871158485780647011942400 1428000000409737332216327739277312 5846124748740883829114479010906112 -458524704823892478520179278168981504 6872310944318576143431103741427712 5198754069082709648128298413195264 -40950009321942659695714309045747712 702463715582221085151526010224640 4048048278505497669035609246662656 -539250730814267008448599574123118592 9028043021639329304520212183252992 75299220379333918309245031284736 -676647109930470078296825648780410880 2135029655858490002493093212848128 3422119571030634335014913348468736 -834842035213249222496633640284323840 9841281200664833745382899269500928 7116420714485725028463321693552640 -338154113008191426826126842224705536 608040123913479909686589771481088 6348359455367512938118274042822656 -715221642587560875339812137267625984 1663634796962090011387485793288192 3377993557354171349009196587679744 -201946590080054437562451302560038912 3791729656274019449503010802106368 8705481372313372328839581662183424 -748211340550639439770467717091426304 4604905857113418776829885650305024 8067001006932521153436385561018368 -776095698540365898791559459684483072 9610216058769869805884875682611200 4099425714044558530867062823190528 -893792778844701117963684498341101568 7113447411037830166662217132408832 8813087355036788066713654374957056 -448321537782624978494781869552304128 5668552237528147798505993449504768 4468395547147568017379601424580608 -536454519209114951192551594771087360 7512375022727197936787666197544960 4937106273305739156132268412502016 -449876818244101663711962851130212352 4862740849131556970647226301808640 1771968482821774873891849516351488 -842533484610891203252138773470773248 9395784496750016624989184607649792 4282374695649348964024142245396480 -856709673421077314441120791429906432 8011025571781377656152722862243840 2989708169963069099159324167503872 -50718469579313006701089163579490304 3891139795226665761627529600303104 2755634935525886767266447289745408 -442091329639974175613016661110554624 2984884024783730507016072645836800 7950832570366514662392858731872256 -942801444683194121306074101275688960 3756296911523531742202435572072448 5298810551260048095898641478189056 -22515878153134331962103599695134720 8607810417660219716964761001263104 9968241700626031355237010059034624 -629109977473235237586680968611102720 3783264029623881037195249679597568 9339974119327340640627052769181696 -440335464238410453637720215815979008 2578890299510146226463209873735680 75925506448038122346697386360832 -719882358448654650923753790242816000 9043458780082214144011560835612672 390179671437535442843131896135680 -66841292158647562903230396707635200 5704747856796452138661468298018816 971869789828958874526354677694464 -79845959938981400981774720462487552 5586064321025512577087220953907200 9946922275646074227239537680056320 -595234571126728066030335330577547264 9755396923277602545003996838363136 4637212799038571631482271474647040 -960200252265755726589616965925470208 5560883877465139610963736270995456 7983573697387664955436940834897920 -811297648804689126010625801907601408 1527971828406016571575733877473280 3407092363311984930739559531020288 -448321351306271904499184169314680832 8202021784596385272462573534445568 5281366534504965813589298112364544 -733623435621890793550071326446714880 5264860380350998034072768876642304 6818593554266858262398687644745728 -164197583695672936783639786586898432 6228577633636069391041618776162304 7674193209527598990407174180569088 -755647786510086173394454410495524864 1358412040086831119933168490119168 323798126299350898317384965160960 -751780321817785069294175459152494592 5026627453050096438508692548091904 774669351092951562224592014540800 -872467526133047174466361792279871488 7477000657988596546982285752139776 2422934966533231721782989325074432 -819788576262141532839572118525968384 9778835359544154578130146949070848 2942762956383134359228260095623168 -940139337561130898591523510991978496 2799398626549117035209213914120192 3828419929906197442840060539961344 -254724877951386341903209801692741632 8598073755122225781673724076883968 4263864032157940540800192705724416 -391704658497781621745314071054385152 6089390364309336559533805046595584 9738265040265609838135687239434240 -154326412592828602451571285807857664 9442082380060978275015623098499072 753831446444696089168919648010240 -635316331119362841715652153283969024 5204550310351007576942689659125760 4656388071454585058559896512888832 -25880936905371058762438290970771456 1296805505883167305256463140651008 8544111737282339503461448053424128 -995252168818846914358437444711350272 7065831835086240091128145633083392 7231766120484000222792527990751232 -524729368763205581192593193570402304 5286291172672022138517977391169536 5735099030736311779963558120390656 -643060034744012357317796765292822528 7210341181359401146581982090625024 9756027708629281632873277414178816 -572930650128364610012888237067993088 7070307626736431494091078029541376 7674683908005324198020301618937856 -813091448187170184576597403111522304 3107929016021926427335117810696192 2945575081210421369060379961851904 -479322485299807800115227216737992704 6359583015950478327687350677667840 6165063403473567641659829582299136 -977653287264865462851098060798296064 9649731451518792560864241333043200 4540618686992169431226894176485376 -454617106609347042486392597136801792 259939476970970308266008296554496 9007812299215539837549769505374208 -114761239085447736560913038239072256 2984300290681694558959347863388160 7441127822742693645924737134624768 -397409985608907717506433196637552640 5278683468641713365109000378515456 7644333105591245423372467162841088 -659214983676208501878052089002721280 9020440911394678234250627422093312 1753368894596984297244534547415040 -531771690634432492464462212234215424 3644957185436685211421218185412608 8584710349312584259182863316942848 -360284932349776687071706260757807104 4606559292729172989391272666988544 3237494588325951096040248204853248 -55109860681053503997052997234327552 4561886797879182797089615239970816 9415551559283704533421627709325312 -105222535479456383589699548446982144 4408240259174931982151025984274432 5043100528130920477852640892420096 -684832886338597481732852472229134336 9849277747114461353435652037804032 3206419829849777851504350694735872 -983303201845560456532875357659856896 6287299941077591523836232070070272 6755544815287885521817302596583424 -417609458774490295045758675650084864 3342153144221359025601159110852608 1217420862058456558937278884347904 -210441927355254579925292407981080576 509531273116369015295184641982464 3687156984148455072744843847401472 -754642402925540281328279263041814528 8788794646527617341399199798788096 6153660628748949535737782233726976 -844440182534438740384175497957867520 33786328956511894925295887581184 1826022431021853978670891060428800 -93435841457813907309728176170598400 2949954526100555300730227874856960 62563833786653023072503742857216 -453926155608024772284211016897658880 1331049963907554460366292545175552 9876865176814838471438324711030784 -6049623650663514944080475253112832 6442479669314615203099672502599680 7980079345738675659019598440693760 -934187486654430049449297793821704192 8832509035935608418650511468658688 8345743336096013055429697339392000 -612565937949931685806818291993280512 7282379098861145250850609353981952 8466222561839148305020327179583488 -580032599270875544035639405496500224 7935059788308554079028313562546176 9090392069300084000835800815108096 -281150922497747496213333424069410816 5720934604080613189411864429199360 7087200999224062373649872802807808 -712488883802312958042069151694979072 7690994080630507648465415151026176 7019744197175643839858621758308352 -8158434525740022787183393151909888 7993249236750143960633125592104960 8165393568981011012809315087024128 -149659708917473122096182330040254464 518168602737560943391531792859136 6296664151108776449841787656208384 -328217860173465224865224197161353216 9825176820255207290673875132612608 8720434149349088653200934175768576 -766632599894192864148502991098347520 193579946211070786198444288507904 3655304364305983560123924371996672 -86151439194046029152547387559903232 2987837582689397255247509529296896 5310443992357776004494169150062592 -879340319003739365430967359479218176 566603812185612033373937330028544 4115785575072828510140844612780032 -554477564694067817993059517677436928 1219253269271358944797126297649152 1185126437042776277943370286891008 -630136030725873295017464693281259520 1222909198694437520593114504364032 936727842926204187959412320632832 -142447966166784713663792956934455296 742730353234390842451458936274944 1772096858646266786981274514882560 -208449522047177998809027281317527552 4650654466936645175126703185330176 9140453488487167781195507612778496 -478467636574875189342298789048745984 3495507498880111411718703468773376 889323586958983425891901846323200 -169115086033333454596016761099780096 6937440367071630844440359844446208 5068591487453545226497547747459072 -215963832778323858219387234639937536 9353954691367484201863664717791232 9988064082289390904206674834227200 -842371248469736716029701040279388160 2675013079386243531644620637208576 6533792988403330770345825568555008 -60234210585241138662768495766274048 4099594477405647047151545533595648 862043492314607981549024477970432 -110316484863543713187316392408383488 4001396377206271236509750481911808 8628380488942378972023569638227968 -707083121409423047479280489178595328 1349960413240893100366352248471552 4984202463531034347498810636238848 -146498710856365879243837746878349312 4913752921053847090255860567375872 9456982921976317862465728969441280 -503412538343885424810878146868936704 566387738164110313993055022088192 7951331387824310782646784637272064 -271339474367226560097188148521467904 9777613310605362017012088139939840 4379205201336424118806013626286080 -10998341269349187899435247149776896 1637942225384091786737343694635008 8786000896462839411812058456391680 -993225199614893338932576757353545728 8630364657137770373197889466793984 5637043496507138649924148012253184 -580677969349634129999057829163433984 3508370863747997905235509866659840 3649077952135654801288577360592896 -330926733476651477844007806495096832 7035873313604306318554764708675584 5754948734973354325363641787875328 -720198388508705117235276598216753152 9691831500294408728553959184138240 5474900305998860446563275389272064 -770409821483354024923445230582104064 6370145611881225377363057497341952 7813514842961353981275012960616448 -72801004693295568698793955130605568 873211525111913463526759837204480 2913342766414538269456817528504320 -350583823296195277589253774320336896 1827556889980766798826766348582912 8190906705395731282476157538140160 -63354846172570009634104625363681280 942127742970224511906366277812224 9914761345912973696231952162488320 -940313851903322709394378074869465088 6288594664579968353605931507908608 3106320192396925047983033385222144 -42015293000074619802865953069334528 5274227899913731650987752582807552 9887554372532051393682239614091264 -288458324621680654933988498821087232 596265291178927787568466174672896 7637546433464816321743196600139776 -67385063350031743856058689816363008 2748754259201329675219358650990592 3642434862255611538095659722735616 -443014010482215869959961694106025984 6359362619173659062665980386738176 9329935242639646105317018127302656 -67820094016371038629730343779827712 6266842365371712006113081495126016 7870124914944339557735174697385984 -439866992064451744133923044144971776 491039713469197186741990424838144 6027899647579135262374633693773824 -404320836371504373983151209274408960 9432766555274207440397163925864448 1010110284448423895348699599994880 -444886439556925422729483391787335680 9685728795846961947446304674152448 2253901568499055134873273549979648 -674713864170322569007919450527105024 5512090276674715036472974860353536 3421185761012632562283047284637696 -36833340844415186894431540643627008 385729828528899824778514343657472 9501709543152135362212417331265536 -880478774238685781804236272666935296 3556094145902006664137756379185152 9920796704066896539374390937124864 -831492741292862736727023729795661824 2677932058457771182779042426257408 5897256899531722554782250606526464 -60829301471732049267558574628798464 1000724657242973151817249926938624 7185143881267977008501029062311936 -612862359849722019240419714693857280 4753049471486693033978196484161536 2520337458487935658008470332899328 -155027103191377515529691522802909184 7122297546590532665719372625477632 2876398060568230315834200708612096 -873423386090764143282984154929561600 8863494485942965465922421833859072 1422130722365294918956708649762816 -988767885174819081199418018482880512 5760039972071426595056809932750848 5875178156766613362130467652894720 -211958504310077702308706941161963520 2894740531723080482398584275206144 3253972245572858709083262212374528 -95303627928166192664552973254262784 8805064015596455223397627952365568 9703364202807503372855966408114176 -848353051332976846290700406701948928 9877554418956689779114939839938560 3076911130087623550062004812120064 -826398127888781876240825645145260032 6040539138768238848660469022982144 7374594387640739042712363254939648 -583274935239393112648979973077467136 2100532271485789788583731449036800 7339736171218560143622830037139456 -243711073057777192327682317946454016 2782579264068058936076142171389952 997140462885581012690321832673280 -83897612170259899911638604855640064 6059333560367926646536183046209536 5895882160873979339814715736981504 -80380740358818395861866854991527936 321756291911729899135046938263552 9306490503424389326476286913150976 -135032652078769317093723556773101568 6344866083053781120347995375665152 5924227284273850482027179553062912 -672323040892179454664911766190817280 320527675956851627127476842397696 6060119927502140859556207567831040 -507902330619339329677704698750042112 7858882456120712762425652868546560 8889300405055420317052590478065664 -494757068462881892755276596825292800 6581972428590065996846868943863808 9966540957402276513299874652880896 -819480311839645747380076147898318848 6733437382221791052471517004693504 324564305848087781514979605217280 -322182485473388421456813102999797760 5021187698104869558024101173395456 5271894275977484117597231117238272 -878651264826553949183982453615755264 4433336897460008758250598333153280 4150716974118692440467991527686144 -142672006125681150560583210196008960 1991939367090526629662156879036416 9153445473328251076639317559345152 -827801903528258441228450923762679808 4281680969642571218934250357129216 7515020350572931980937406877532160 -480918598413488778800935331398942720 4162692171049366098804884713242624 8208433463603541745316967548452864 -645909847775952458556499004433104896 1827019258473237428631746688057344 9922228132634026392978570510073856 -153633123729282417651361957900451840 9423960790771955306660125850206208 9867253861503435540768241018208256 -38223101105127070278499348076560384 8922059885316206150524992755859456 7530389608872024981600003323592704 -975559110393099162937098622235312128 7256355962073926518269964011438080 6513804942650240621436097230012416 -258210309814956273375184328387985408 5836912339685529774210653198745600 6748096544520274864866287991914496 -199541598066883848088799917469859840 6136032293812181289507013267554304 273735606504759889799150609367040 -380182273518169395878958408837103616 251241896051116523642920152072192 8039275169699253064127780657037312 -525794363524185547502188004986847232 3008390984729597518907878718570496 3357285875241890837440113514905600 -418586573599817693873151109729615872 3028671699617194606286920285683712 2875391123181949533291927029415936 -405659116536151838871387415292936192 2991225856878237242977846948790272 8456798587202507963989966893088768 -640470359708174722704146111991382016 4535715446080699388722243530915840 300545847216943861466131878379520 -407726303297903697510209589402927104 9790676448726162413748703073402880 6850072986259982508037352636547072 -263378845896343216782967073574748160 5227309922971956428128202086416384 2435894650533473540570405620678656 -823370380589213677938963593312600064 8591858619511146896929649258921984 2559296003770076672777660821143552 -646872327057706334291280492094291968 9725387976445844793043610884898816 248695269737021780185565276143616 -892304433388994318584648107741413376 1065728591578507059189065248145408 251832470393858490221905882120192 -84824864916146830933601461701967872 8283008746390246603107729399611392 7996451588590317173256374219440128 -354091966872910175314408075620777984 8445322737312606457691887940665344 2842546881281705742850767248687104 -895561301224959266480604509072523264 6320839129416156367947811394682880 6215888143878333325136258293301248 -113340696606711086024229351881441280 5893555899052387462787047423475712 620154004654078609633117682532352 -772499679168009617762135061781544960 6795269893174081915219252210565120 4762080818240698375618363933065216 -451939017818997546656735041255636992 9495924610727401075978799622914048 8284599373384594658648603257470976 -4466783845410370001823243685593088 9001083518959578131774595326279680 7992349680138665403959945969270784 -610091735024261137058874318663974912 336238091436657071164122004979712 9541203728986980191927136350633984 -901489835898943732662446481100242944 2232933482756379504631792602710016 1665943387079392109230676653375488 -301575065142125438102711788986433536 3424508988424123519300338733547520 8991420978543167636164504918687744 -915855305245641537410600102724108288 7062083002072540248669708642942976 4376052269331329650565635828088832 -484164210306270488737398323775799296 1219205702252589981519791014281216 4600067613828716602822001157996544 -519149530001267440065135300392779776 4542025784798574879726501124636672 4905899748038630953352488925790208 -254403862694355860996436946248007680 2360323610222778101522160095854592 231006480950429206333584471752704 -320862078281149208295125643394285568 8280933000889977520123685772460032 1205890965673423483038386532384768 -95594130869207081424211760279191552 9407571052743682882654086161760256 5114693158900871181584426566942720 -386697403020655575862750388946993152 318217850145939388932830200332288 6538837617899211876191668627570688 -365806316678956562046466877026205696 227755501321335774001660279390208 2656924143993378337624063368757248 -907784307482412360999129123716595712 5163276310135570206571713687191552 1235249378558862036299925327708160 -573426184477470318939937113393594368 1266410498184860553025771788042240 1436956234945464409159403466391552 -80366941206617637818724889888030720 2267659384334183997638351085633536 9917858048522400895527694437974016 -148674946235691228975652941699481600 4703901430583427546682451654868992 7970504357671733702332639109709824 -224926233216884900732893907724009472 5195381917686586955666990550745088 1091770916697270971730808851660800 -156956047094591213557625474150039552 445967325318876948242491689140224 1499632908205474613901392024174592 -956551700484334381187244772508565504 3698677037718385075533839918432256 7984754247420916122659550782291968 -403293904412572142679233066711384064 5928925477469539363539279497134080 925863203268590116123430835191808 -909744639342966584450338779524235264 978739926385017298692467622674432 4861996937267047647849752721096704 -489900435106126430572945971743817728 6492005616767628544704693663694848 3337257913227360801396418123137024 -75184629288417722438639972436148224 9276681085696840588898130945114112 9579992132419291622627298145992704 -266759587274492342157229958675562496 3250821720542339626035131665350656 5730740040551451275056309826748416 -960790202609128232296466286997667840 7536424239392435348500415753748480 3467096538104945230286957544734720 -815333607049505817243626356804157440 7728410972053511487741394950291456 3734047873352025484312986664304640 -344904893890610011345041670912606208 3756145627921022572777723169603584 1302198601023210438878303010947072 -396655435186761410992332454846529536 3147356142601719960736503712186368 399025519571649332543337323823104 -326609455058709273071110175175213056 5792306597133443313154599245840384 7552705954947914243911231144460288 -540354272660694508079587840942407680 1592154020070425724652594877431808 4369800481048174487260860298297344 -847875069748652979227430166963683328 8835051606614180920774013682188288 1768917475944343152483326396203008 -547113374004519916250479267246243840 2904424692020903997767605089730560 8072736775880533608389572732911616 -52751747110091089982072957333143552 8850679190049121677330176385482752 7308246375984594946596898288435200 -472622771540637818242748331860164608 8818411679296399047241984676724736 4393543219116215518996119112646656 -541653981044502860952675780491476992 1908952301597654259509827408494592 6646105771443925800474647396876288 -262265757524124911856120021550891008 9793694063312485097059297632714752 8547821384720524076403031315316736 -390941244584955039471745525518172160 2063288119228700140419538051137536 5883322083135595574091604473937920 -991173152610039744080756199775010816 2119443141495490745684702487642112 9515704903990223537761261306511360 -204202038810863260956429740767444992 6127528352015169930493604392861696 6663642054748252695606285656129536 -839602735154713515255346232924569600 73783404750940187622361616351232 6270648577539166571142238890360832 -881328166818080629333181062619070464 9668376238176917216794516928856064 4709064534780878176784025762398208 -687647023356301781259011374700298240 8136228828950945024896197061509120 4586448159428312861055800685101056 -583986174210882915498870224365551616 7289586786714669847541946869874688 2966217744173055860630020104912896 -600208794699170966836325027072180224 5804720503018379820779961311035392 8723966659691955500515607290314752 -333151920168516823041457751561601024 94351228719916884257246283825152 8042789260785639850296341430272000 -859593530025136907518275586459959296 3296444702361316363921841404772352 7908951495385008305112216737153024 -282983404991761501586415414912483328 6233244358030415591091708857679872 2556383338408691401957277765206016 -76337763456927171106469394033672192 9015219995157457099060679073071104 2434131700392959970938996876378112 -800642222054482889505748878465433600 470908308095547576442840745508864 2786184623897970881517610439016448 -574920457332208746731435320131190784 6543716638560770709367663418671104 6611519480808308578578381544620032 -203097627613231714921690379310858240 3806779067108265310348578113191936 5611673827171378535759586502115328 -215150019902253646620313298650791936 8603556023644980903329930185539584 9166696583060364560608190842011648 -860749676506022103307357739921965056 106765876052217517596624289792000 8359133108115174078023874912452608 -577836782416557564324969425563287552 9943748175116045073120959286738944 976840093047893795871306180198400 -910256149695666947289791989716877312 6566669044451206893781666284699648 3666073094746166845075561589506048 -34316203865741361810220461640908800 4584155736597696157079011682418688 3196935920184850391087907642277888 -21892642258152758166147541860614144 29475733173306954065587231260672 5728826311816114563137689402474496 -876081798635472796497269463525097472 3089258437231225248762281423011840 6899043985160692479033362790481920 -782674925402437298687374642812813312 333962951918284408006567943733248 8269760203294101132941043045498880 -244741686564157801730210102115303424 4871596110247172021697018064797696 4066326648485724954844967443890176 -242456784875055679087838379343085568 3331368211157761554614770194186240 5536642587454898102045261999112192 -406804591342981009199078482978537472 5032946989832675017286143021416448 4566716960572954992000138087497728 -12513104825717425904505691041693696 6680169669122240289811053317980160 170673776397043349739239326613504 -830481025921428406395120340497858560 6499970496365377603299050856120320 4857663295567308807316072994701312 -899257535779355585965849946670235648 5731270589273771272624859848376320 7186430450453555862843837101637632 -57366698637211578512927456720060416 4616039447610901166532245569142784 2666651474828780950844759454253056 -8932175225187699654266929113202688 777563497448481931298343967784960 3176620893582909042544125054812160 -767375062586989914799091356291563520 2230658269512135746668165156831232 663831635379808184740183722164224 -763954689300173778810673394633146368 3219293665416906350809253639356416 9562096710220403338926272376995840 -836363979207653367116264391082770432 9056486416737240393709340204204032 5735457303858848521026665598418944 -29556099393694281118260330466639872 8035341762145510344645477773869056 4764396678432307214793824060571648 -745209330466757823276767877982584832 437515538811544786856260973625344 1437189269904008951712070370328576 -756759708478602278667498574399406080 9139679160882443557755626863984640 5853064075249537674728637309386752 -254460013155112638287168128394723328 2416746055940741683434615314841600 4699742043228646934790724617502720 -351498770706165038261874937881952256 8360134569935637287578924518211584 3572078424471992836310690751840256 -209837491454691134374287591006535680 8982141014382316428929996179898368 9139054501951809193264209241047040 -580673476876336208138508190961631232 904169876619627920792616817393664 1805838104335869455116090841497600 -841553225747373707941967831001726976 9070165339547387025958687997952000 2461987727877888100323185123131392 -716297233572001622067882311515373568 1063117856380763617493141183004672 2327229931241826477753296492691456 -429366964380118982990869885312040960 1415268443774340024783431727579136 6172682190669200602478839074914304 -846796648178306428080816646583746560 5361160028754403551053035448827904 3959153566014115713082825600139264 -952410842427551522194008557895024640 6362864466575194555586333105979392 4542817952926221970311326069686272 -305191029892026117217666163164577792 4381499418675529414667095519526912 9159329374404420328159926581985280 -452687995549833201162974537361391616 4715610263228879427250702258274304 3830603842122600543659022237040640 -424891380859802068927248683210113024 1024784174184619135574561053999104 5331007868149628685935464956297216 -512876871944336968706194245943296000 995921170924268713643910002376704 969953979546660784956370669535232 -197543647362636203329276731874869248 972808822106836619052229171609600 4631306836037738306481321874030592 -110499977557248548786555840247103488 4283704045532248013167077575622656 7381741982408784813651498863951872 -406757372153349248459473968131211264 8916470153135539194398131164807168 6336809383606652142732413281239040 -778497307743525849741291313097080832 1837959647390505842544221481861120 9493578001658938555971618390147072 -990890070724054661873074503323484160 4424900704162419085327607491723264 7973420375610420796533666169749504 -502961052765890252015750296908070912 8186499753695229703505930388242432 5412476049422864353979599027175424 -31431806847739305586409348444192768 829638383097403516484964954669056 8763159649101496989480324534632448 -358483768347718511070721320184446976 9279361162799547740349173998813184 4796627074395036733149999160885248 -680572846109315768414505050289733632 5330998138897752102898077033037824 7299498302249858164117217778597888 -979487062673317101618173784329551872 6912551588735220504025874726649856 483468501001357457445588219985920 -524297440734942917808898754211741696 4023294335551265627581487534571520 8884706956929308409053766211338240 -884781861231668002268730356922318848 6566632031014789400778800898244608 7727293596062622484982627263578112 -224227442972612143236550850051571712 9518434519147844952061324940017664 240592056332251403939468479037440 -147936638638648167169303594389209088 1622060050073626711903417321652224 7591760483173356780082869095628800 -289831813992018021146753385520693248 1160436512380057508642712518131712 3609583634267119777216769401290752 -626540662488280986653449191897956352 9936997042844533357916970324852736 2701229875214978856646054877593600 -242912204267421489498402119797964800 7231243710660430096505889586413568 6944152051304447247196385431257088 -946332742391144866220270379266473984 1992733131676128173517145911590912 8467114311084316577739345496113152 -329788087015468459577255293809065984 2110695829126796615214586841268224 311394084752394642527076445323264 -232209629638167811373321155652878336 1310519208630402917471743708758016 9828038576781961282933181516873728 -341170803565899204004610910516674560 4155234782047750974228656281354240 9200302271839104195055305199976448 -429905545348248713459534717717053440 1472873832686277789062814169563136 2661527241540670514355305720053760 -64510250117922506365186306086010880 8409350161287787440047197060595712 308837455961802684140410814595072 -776764710724158786100369927792754688 5318217256071825311895962309885952 3828157731767312579361865168060416 -887392388576875439649518120886861824 1054792933727279374713959303086080 7104410138965728687476411727872000 -235113418894801912121535612105785344 7907401925252950013284629266563072 7155808459043663734909270262546432 -536688309195396157355855548055027712 6451223081052568062350051386589184 6213103401536747243859166311219200 -16909636165640248472153841771479040 961128607640697752945501258383360 3083666623503595906177739717083136 -773381921010809825391172714223370240 5685893513982329014986849180975104 6168003755225388976497507033939968 -672752461446846406961568164035428352 1696743600930039476875991554457600 1668401328152195695821005697056768 -76356209658432497261985128603713536 7694352405697673505691767027007488 970943305140670873360280494014464 -189869074450008021634575675575762944 697088104857370650238740116537344 6560212042686050775820464897916928 -991904666521791072644140219125202944 5422704093578127298067665130618880 8629182678016990080298829551239168 -459019280105965277676684905726083072 8759222307184483975932250976944128 1595306135454072672377706337271808 -812877136930146553623700440726110208 1671732264628835188820651121049600 7652816945738301094453703505608704 -172080546451503817584465647564226560 4495442356579869315236495150284800 9462753605947519183158827546574848 -50133748564496458856496551459553280 9393742491939563849387974477217792 8719942927393214578856853887778816 -976688899043876633064280991148802048 4755915220684536059566318908604416 5799238725689458067982949797593088 -325793835074330997096655424103383040 4798838562491064719822971545321472 8173713227933066929451905113391104 -901950255203135704329435699744866304 5129656486466525826038845465952256 3376133297984609934934041954353152 -433804762670573901257491328012386304 1552711304937504279616351415304192 3031203007550367874984823371071488 -440507061809006400219729794219114496 8648769761990571055454402398650368 1990554176204006266112610651865088 -632948594496946359993961811512655872 901865283830029649279406424719360 769294523257019769096226622930944 -222682745399753893622956855669030912 2540292712206350096711481970130944 6669029071013629472325276868280320 -724544694636767226580757675090378752 7884443790490750907695296711491584 2186460680431378952603327960973312 -565947129117594351581523619782590464 2475854577805380585898547420856320 8591823828812620138249070779039744 -537577268502761210591168631859576832 713832454869525901735991202283520 1284577404127058739622714372259840 -227343234299189147636339952253403136 8015710560427423199436388517806080 5468571396072135741414703364046848 -737208551143453326001678007727554560 6937643672481917870061489060052992 3151516908445239046339391366627328 -421867369088089524455106796993904640 4745113670581974053694361948913664 5534801619218669138137187520348160 -599757984791071566911194413123239936 4668894230074914385420375799365632 371528165810955346564390619971584 -240794289749840700967325674195910656 5050712401359974271701885971857408 3514521724709208910566689662304256 -919355583199074856610176093917282304 3270629597393812755126350837186560 463386834785574154592197938249728 -155610151888643994785771499827494912 4151588985530660686915098181107712 3026348739774110153679716652941312 -399449469330647302446140741746950144 8694539043040072182177042758893568 711044450542775692977572656709632 -824116723260650908119801357997703168 2195845965342951609516441238241280 5575327014892702145617964388319232 -663910166207459276814337139114246144 4062878044771726457518844064825344 7234798413357455477560942413217792 -301835552630870269882306229528690688 3215350289119195223070891799740416 4164630285800834966637540754325504 -769264016198999930810878817992704000 410128655939774230735190379986944 5287659812536423064360500045283328 -240196989052124548575386855263961088 8789267539819146744653475972382720 6723653657672715478077338202144768 -141990557024832998561135057145167872 9656278094889401926896486891651072 9311943716225203740455913585115136 -960229659058469035110592471459954688 5858280701015756906265044005683200 9077967786360456477618251231133696 -98016187528684314746343976035418112 9070092970492737950322005962129408 174332396780756622053968795664384 -834478711122843909655103475948716032 2615970609813699759588997156831232 9961581428787317580283781601820672 -367133443790832144880747437445087232 8916885366420988286921122036842496 3320985116407138133561659795439616 -776162731076791637852283770421379072 8986040954470864842015675118518272 6007020808945044948759007545262080 -817822771086131986097350167068934144 7227218814789749351173121325924352 4541493289615397137275456122257408 -750152537044690459338853628816392192 2351216781328912244931456881655808 5961981852923188134817555812450304 -806326472654588522876163479094427648 3834527393047388396444251167129600 76982130789191413347404654575616 -696337915909551871160062346539302912 2884803637022656502282559384715264 6300693018127672688686713607815168 -901181273814077560913409540720951296 8661069270332339332380488328282112 8273401746125135292508198813040640 -767613069769195455019788857811927040 7700757272091827583227052456673280 7747290265803470438361783246782464 -633627002000403372206078735962603520 1981559873566534434255127065919488 9478669805933857030427116929286144 -315909710100553529420684709207212032 9999856967411253122707741785194496 5537616065085010359645658534641664 -644253809568357882637011657387147264 2306735601510297368583303197622272 3124919559600088656617762510077952 -39277069789266100513300888697176064 872991886648722691527234367258624 484809276343461374690277791367168 -199962162496085133718429667340320768 5348141521094820844731808295682048 8069901425556640395560088217059328 -403191827981557096308218658606284800 7821914455708540214330535341719552 3287388854423752606972814051770368 -571663830867812018506074991003435008 5285104451723758725780884493959168 5628149815838661739142965687746560 -33499909126275242861574562068299776 6292759631906556027971377731469312 3391030300033549465606575737536512 -892159269708973575746943213100859392 28583606297531478300709506514944 1688167985427572561831654913474560 -308425732413999240126044692778319872 4511315491882827620349366211969024 7508526154187086436939219043614720 -513860976896272051789856271612510208 6865864003337737348756545195737088 3983248375609560900131248190521344 -692154095894754172680883695163277312 6455507209272679474147960469585920 5702421464545369260138274670772224 -265881176035132006833710079900909568 5181673808725008037784785703141376 9576679681215977864413061836701696 -650007044119305211965577321798172672 3056392182556897394135556274782208 2696346349165619469779372674646016 -617977380994946430904807774025154560 5702722920381439925983546808729600 6269373469149521665299911085654016 -152605951618526100714432768900071424 7185132894799612493897478770262016 3148326048081116663687569905549312 -520124095792626179371427106952052736 7273131981990375198789271094820864 7123141923815054404745661708763136 -771916542295177818581228309863989248 9844180982247575901320883807977472 3176879481181937417829553262297088 -324269777259094095714558973996695552 9821918004183889200427732073185280 3079183354571322587457129881272320 -479696363283169080986467099731820544 6878267526063156252196536567463936 1861833481475576011721986394816512 -694947348397806069836155108735320064 2167849299878214551897406294720512 692224077149119608540486619365376 -911806846588012750285438944525942784 6657969791375043145366195662749696 4758648928262624662445043088359424 -154677368621691537889266938442416128 4715659340770078932093732084776960 6598096252085395207642679932354560 -138917981768392218170246470389727232 7133431293696996695578089848045568 883518617296938923697528222253056 -241578761928702610938492062082793472 2287373411992310430685041252106240 4524682468238984928167241384460288 -707370869520089161341662914378989568 2284653616678700124787545313640448 9134718918447825671466942050861056 -8217929156401330476404937492267008 2985883411162057342245873007984640 405611784456202828733899920637952 -59049096054917746504205901380976640 7393218670443010839046016324337664 4388211833594271587961739038162944 -7778762409424821839532112687923200 4443051493416724979981634859171840 7594692422801812007259948412043264 -295836596785498360465344638553686016 5399564808974859112837214482989056 4144869325112902641626701455425536 -539444927997182554578517072566812672 7470780313931495501644013238222848 8810517619841727156829613927170048 -845688120220090711869297157566627840 3261537959503789260973081947537408 6957011437315095924510801157685248 -757688150173447469809981606858850304 2153841400607776371763348695416832 6464504153720205164567078671220736 -968451587179273922634151742714937344 5533828485486635312938195613646848 9639289717345512614916904269643776 -221749222357276341361025931710300160 1653531590369119845855093137080320 7703678997379397141257723215609856 -319052051558542509808911514985299968 2374337833964798314182347119919104 741889391551602441457390588002304 -111249611028055199804815352187060224 2870824641521790165057255283621888 5308105256672464830394427569602560 -341162011995675148362639430412926976 6144031486728474955049179713372160 3498371373738768378196058557120512 -539093020266501318462719326934794240 9618680061334351330669621980168192 4398052343145496586780490319527936 -133841509553814815321521096738471936 4971902681964645222508019761283072 7566300978838219460548280610455552 -296922015542731125334412465578967040 3472170998502660336484617969205248 7520975848576269156794546987728896 -498903899153884986698939908799594496 2054404700447489426987599716679680 9498914902740041915780479896780800 -135359458708746123607705736376745984 7721862164252828973728403243925504 7312007982266121537627679356878848 -566253308554660438298146162255855616 9997587984994041271765463191257088 4511109673643765653839732795244544 -780836071101424933547633139490226176 1775433347467008314128403022217216 6905506990626430406174657830977536 -578261418515830825410968433169793024 2658453571033926137218697594404864 4419053168719854047176568866865152 -483473875474422061691277446492454912 5166009082872371158783003350532096 2583368481268648503195372565299200 -531238877884120941670752829902422016 2957703667865856299696677118279680 125722480183055552660996156817408 -18647660495142273286040616379088896 3994613665622602491146330280296448 9459978405568714622056333072924672 -474109665815501774369053945853116416 2202518307391270814368879641362432 7657183410152830797282789954682880 -971382198924426610820589032579268608 5503976669348986899426258412634112 46625335435971085213917304061952 -385023494760919724570085255618232320 556618994358687768623182329675776 9293350653574943493936576886472704 -933624612141565633302182252968411136 5795801638026801846427521948581888 998503892699759143925202406080512 -689970311104438439204024661695266816 713098818706134425759751207911424 7445491491790599703180542493065216 -274961424636577106172718259067944960 4386426238138922822538785598734336 4473086866370021317091451224457216 -675593438748441900281757582988673024 2025941767015127128036469100249088 5828544209553537439743566048919552 -745184353421717155774872897395359744 6483683592282554353013646312865792 7594858252657760671481630220615680 -619224240147525516821673174529736704 9884545392694923861210154177396736 9890304491545527973421934987706368 -270011745495787053567813285473943552 304882758610873763857389575995392 3368938458572997643344120052187136 -28506223384620075405973282608906240 94388475543600226375148851167232 8435084951695814906301572171431936 -144064898469744730421094776714559488 5652167224461092253532712876376064 3509006622710223850863738442743808 -956091358315677499142226625188331520 9154682355558956927127732998897664 7633783327422293797327229025255424 -617941911852183950279636722160500736 4716153160042039631093203143229440 8476288435672912838026213577457664 -608987527777836194012553313815363584 6781756645215103229279049458122752 6549815965855625085986534015893504 -618737062910056753208957027439607808 7767460319460633144650181336104960 7210733528308391822295732395704320 -823657080687149882618713673780166656 5980184951023742221476873396813824 3322340224690082376658112791707648 -193859795135015731997789647487893504 2975447425779216393811217266769920 2566378593202327929074155020877824 -203099807674245927288266594868789248 8982909339890659188972851508019200 2543357080242405931813668227383296 -476594633500936901103291855848603648 6992835638667253602533559869898752 8222729328570151306924393706291200 -365781023116688324989875804910387200 501586297118039992809396381941760 5407194723829786089045885666197504 -659154155645804235429555444146765824 2839420667093233835648353086472192 13868427915981421389555454443520 -866151087971714380839068592032972800 3718474506835049731101172336427008 2847836041868794996609235743145984 -514152049696530381160603571164545024 8806275794938953788099062908583936 7858693400768156742285101803503616 -455276696178336769929615633436114944 2988952278481088871827820412665856 9152323223476192218449941771583488 -90060092321340346706913541320867840 2877244134000080051694479958081536 3686377790391585045946844888170496 -405364246717740038645159775392759808 4936545821559914625361677987610624 9557585975919317177206064017309696 -732613828086078338947503240930918400 9064079585275544136386667771592704 7216477405475036690599131949826048 -107594997361780226819021271667310592 319444864986251260944036279615488 8610594862201895233760136584495104 -675258383882450459179087127868604416 7683730023638597501174597157912576 1185872160282039712854470245220352 -486286634772002801908821358788214784 7303675370466168438083197031415808 8746489240026655694588096194543616 -574369056064159661657803096137400320 5987076873227434035526544207642624 732817643447148126574235451654144 -689464225462124956385555179494178816 2431267197650165801165698432499712 7246797604859802042977255002472448 -794594128885413584275537012201619456 1920262964777808182291740479193088 9805075565106179604077401576833024 -124388838899734695581425268187725824 2381234622320634202207879230914560 2722252908561544684309749828681728 -895952513451726272744512537239748608 450141539860744621199362371878912 4124815540285681507312507553841152 -686978514936220958733339987495878656 6982473224300144216335294754979840 2038644868185018208605502141628416 -723052559062925670429771040204783616 5453124948664416306137747205128192 7398957999176097697731870306861056 -341819932167381958814789491987841024 7981827829456446336389383769292800 2689647565577709252176881802805248 -669716661742707365831809218885189632 5056935499342145311234163470237696 4515266996317848967157548977225728 -955621778323630760435139692755681280 3836718197707491359808795894087680 8539615050331835415606524614017024 -741159338742867317124601940658880512 4547905131336358380114876794142720 4711437735737101381447521776173056 -737484207689695263916312953406619648 7255064816827089525899768876761088 373242500528186820984837737807872 -876862491736230179999341310694653952 5511388580587819931600885794209792 1758988589713176889232183202414592 -964825139526482332778460360227160064 5167035755039438096839844802068480 1837155006847352979861598927585280 -877378346421045578306086823364919296 5413352386642560990405587961380864 3898885077802777411371261277241344 -369222185377376823651448882546606080 2435094208420973090049988531060736 2666384927911074867989224760541184 -653755603441161484568671506776719360 4855549199583437985458031773614080 8748774833378004915362007353393152 -872012061040297010082874300569747456 4670092783344893766233708904316928 1538296217717138082325696989888512 -821718165475167805841045863087996928 7531626686100855135170469799395328 3043327583064247185703962387939328 -719962697413599092186407804233318400 3488204145801871646213610370236416 4581510152393605776287583013175296 -99328447080508448307497504474136576 8282132274084444748645803027857408 6256230641300970187943037070475264 -767197684378542088434376895935545344 1275224139122681506307295303172096 6883810165552626417131566258978816 -64825989270944990110236234374709248 5631169103661221895732102585909248 4243732249153683835541574675070976 -412951049035533600337796935849082880 6290487418184295489866838747119616 9492274198311696462737885037068288 -725853167600595757422588874513711104 9920528241368448440185803587452928 4147620351339964437780980608008192 -171217167938619132177501046393798656 1547155026408178106916679186382848 1512322982801593885940351523356672 -186050449579293447292755469410500608 3258319259192659874370815008964608 4611587054932560965224547475259392 -200559029360669258984996907981471744 4362023008142033115484770982166528 5655038642618675656485537570619392 -891924930723791181753700833822769152 7628457580179975668029613502627840 3754112845750560295523708158607360 -151184659704237944802498145192771584 1020621517135647317710067969556480 7473726951765758800155511747510272 -152707863492988902780347002006798336 2279129651199866588318000023076864 6338336029094429819723200998670336 -784644950549961633342342248980807680 3362964082403661958892678956449792 6237995328295096662834350393393152 -394588662472892901343809797185601536 8349597911985008172029292799066112 8578426557988499048394538990174208 -796243352547400137277420797335437312 3785339411307392152676023224238080 3531059984705894728348689967874048 -923897720637109109260578567422476288 828476649869918536066642888097792 8289300077960845532535684048355328 -323606418737222128374232957755326464 9901309844357034656524389719212032 3100983988269216130023746684583936 -497077207727881153519834506561847296 5365963010065423403240755409453056 6798154390108431871445398003384320 -375858039473713999604645351716290560 1477592013968695580204202136174592 2469307192987405797115593238773760 -468074023668461333856516765919477760 1056247363716975313121514170089472 6970384976030725879599280099950592 -182770256765393668604198964663681024 6271611625911593356637576502444032 6057886289941724397800168752152576 -776794536940094239179238758709985280 771085247327695245499536374759424 7360240455880205867461704616509440 -456055582170786236630259255199399936 5168013059574421899948191435980800 5454642600242854504866415537815552 -615427860951541429577863376119267328 3816066602195749423536673319288832 4434765295825038510524742512934912 -106328027665232247025292469910634496 2351808103223843592752152025497600 537633331453496542233572365303808 -951833251560762613867479419567734784 1346877980607874424040420515250176 3226344535794286042286361617104896 -608509773925302306646175067024654336 8959037854472345953954664632287232 8040967420968942601795586572156928 -410423381623968143462850895246524416 4279811353995129342832495734816768 8557137063659750040773462358753280 -287745228091615053411860371610796032 1787952340715399305424624857120768 3524795834518048718104290509455360 -187420137326270337250172970156949504 5869821302935508443708787206914048 4281344792177231609422783493177344 -644318652993615029446639543253991424 1514250474901453036138589686071296 957306330988344920140735823478784 -540798133537363646108481863790100480 3613187466708336813784714245570560 9565532242866663370276830672060416 -128719656388128575045547713481408512 5067284646195180132782793717448704 1872389372251719991097157509709824 -445627136236591757577747647548096512 8548369202941234375648599582179328 8903421028632790695759262632640512 -184614883889431071244810373988089856 6038894035445156735297719516528640 6730508566439988646202639019671552 -289013179705388027728873929215836160 6518296807942569310373283973038080 3702042265990691600439370122788864 -133464765858997619119038391669227520 3040846433361102484000037954125824 3607905732804536517975624625684480 -10568987885254930128232282899611648 9676141235615139522176217048416256 3633909460238580364394012421914624 -955364028640019481536371072685834240 6360087000412742957156198172852224 9513170753144047536439122456477696 -681727584044798754711461480099741696 9177094345336679747985525805416448 9823685274027307741978977592410112 -266932654736112014120035466321330176 4599428623561440817110007584653312 6403036166636162485005665249001472 -566233979346589625114259857002725376 4731236614022622545118466349727744 794794158770398796336065589280768 -807658103744987968415319703896981504 6696927391054458298407741701488640 2660314613292407201884589260800000 -308855298654777960578010378506600448 7600808305775396579361740885590016 8691720480177975208594404351672320 -616005951442031218509599314615992320 1547897747073044883556911019982848 1653655571316622959877866735534080 -964013234514579316117903244439584768 8781328840746019010318199590748160 257697686697952073554489134546944 -847428282745297628147378950871449600 3087143952855309048826967879581696 7479887735372768039980053055930368 -14240065513340398521832717739360256 6081500635319007852101481005056000 5786110201549844424672296388526080 -25386658050341320430345247464095744 8620982500729462447890380431032320 8335401341097447727364929698660352 -918589957934759664351562129314152448 7253456911177109556409845101363200 6967673559107954676128981446557696 -280157286665258954216999804626534400 388956999271218525875255134650368 5834878128427533759594169792200704 -182104755137673542611956715522883584 6405103714929862957444751893200896 6068109209982286009026865029709824 -49948938726158140157722956188876800 3961274606644679701077816648925184 994845362908181657983548372549632 -185691381950373339324136914669273088 1740623771043400650206090580983808 3943818762224495667232645199167488 -705616707406030874327221465262325760 8792461697505164064567606900686848 7027642894051808784161778073337856 -613010636437718091857647796112850944 8298976998864476882200373313404928 3950830259737262720487099820146688 -206026268158719731182140706869215232 520843623346611844654847534039040 3012919854301104970879660692865024 -648081893094233653041238840388354048 4008589713804478912103912717680640 7818367219532160555585583083159552 -708920953307905284115425633562001408 8707906639571339758914609879187456 5218555999093208488171202852945920 -539959721174166067972527982970404864 5680418692061540656999630490304512 4554403615140793109930766996865024 -584886828364966060440850105890766848 8836757475400849467625289965109248 8094355988116936992572682427957248 -226212508966375307970582182423953408 2660475976149696245959020479774720 3555981992619606742802691623223296 -904547789877044552944368331494785024 2428966884570130357554691304325120 6357904941012649493327583945687040 -133886896329874755292733030296190976 9814904563262676543665869451952128 9567512096015765457223606608068608 -50183101199949912897960503301636096 7833183575489182050546241884913664 644900511767782746996808251080704 -357386368441946834125705487889465344 2334040818961555166244196151459840 1492542350297306920066521183027200 -208823611507220048889364263750074368 2350897145728451613776486525304832 7108822500215201012873061570969600 -602824820665097244093463894668869632 8059439932027282848298915017523200 546676547314160601438169748996096 -441522711909619496365373953899757568 292852471281181178421810342920192 5658305861656126312570779340898304 -750361525727189995106237333735735296 4549072073009868115200781922074624 7093146629837006183519352875122688 -2629681902167374579349751511121920 6786411147447475134662103655251968 8565067344504682773011948216778752 -981787337371122970277492516265656320 7745627156191243934807957478309888 9122249301988757698008989795614720 -304235988225373190574960510624595968 6744699030825178714444233890070528 7815954151465075743700638316363776 -432768229130376161854478441219358720 9964775368504122379403422880235520 2146228245586940606475287517986816 -806817282818854408048170851243130880 9052866449293652308225247150080000 3331856312319400137572506862092288 -213866557873687858528301332238958592 6543888861957560662281739164450816 5862464231842164554555544039325696 -378051686841852508071053381561483264 5861842514125694094199417208832000 3727207578459238983328524866158592 -831289635223818824958411854162427904 4748765354028018968549368879120384 5661775159567491214799677979361280 -822438527104278894944248410490798080 7280936074411977383631516715712512 9960679346981428119952204977143808 -866314669178097225642095642792689664 1881323257824309776447257737953280 5585230342378558852234291559006208 -103883951522551387135190155428626432 1908024383165219889707941539872768 2611050765677116975785956140384256 -508880642208452273629310053422989312 2012689937358528102201820880830464 1615165053173867562617467272429568 -72578693022232132849149581281198080 6252832028446580694624701257875456 4384395112338433507140295970521088 -164175273770637047414039167643942912 2020762048831125545576294688751616 3657424040261660291534180172431360 -692094294711827851942494341982846976 4628849168189554415034193168826368 957833867979028808894207185911808 -62682102761192375822440522819043328 4588139586367526790910584247287808 1858947741138589052825727450218496 -675352337818054403853412899439509504 608309126956342179662681344049152 3097813995577705150932570135855104 -16741775037707913285786627060269056 6392806946984036718578537332736 9947634054040163653979441756897280 -540820087534934406589152812804866048 241545871303248363134693450711040 322290873298481938741174965633024 -469259157679097176949942391754719232 1693116311209151346468262435094528 1490770727018455824901285735301120 -262657291948394362868574390895771648 4164490424605118235709119460802560 315661687973891046959550692327424 -484816244639318692998125450057220096 896046170120441959261384933900288 5376652856637865781718318405648384 -378419373974553480253523969076887552 16303046795218686319674550910976 7677919966802780083494331403468800 -420900666769877140595260956321251328 7161715197224392081967714702196736 3535859786914858620504764032483328 -368044910090003992574024060432809984 2476776282277046118950220635045888 7912785007155055343016345197346816 -451525674008201381098888396412026880 7579290965015449978135971868180480 2161910710608925598583991299997696 -665262923954211060775727393509736448 4811763262398856110861202709544960 5775543927614183994033259187011584 -944768579279194679245698178870149120 4342520705726587903017564181102592 7334349276225432756127332466425856 -778331623001792018089051416025890816 4220953185738007599736033202143232 2010716803177880302682006018326528 -50110805749681777631453902874345472 6272008160529797368762193883955200 7061379602069292518430387216580608 -129426493821893305865312916788477952 5466202933890981209371144137736192 4609889667338520376273519205416960 -229835869626327428352042804642316288 4179647526379716308439903848366080 5335362259302138223416869113561088 -235771352866546519675627339996200960 9206534710681103557243936782155776 3942124225252484168821351798276096 -236518764715965917659527681824260096 5548893583175172851003060878573568 6738186834255017674691162182516736 -421598575852783905004246747297349632 197577281464191027489932698451968 2967038693193824770886660521984000 -449333884663834381846188565102329856 6814298904748711310543631146811392 9390279355785974192087545543655424 -824514516781221119154154208988495872 4976036994058923865169378569879552 8718417622005034442033789965172736 -853541358430653103204789893281611776 4143290723834193358539546001670144 9657278026268756356820669183295488 -435620662506869204840193634605203456 2789681668111793526883302437289984 3487858596796583373810328670306304 -565479019161247639392322585733627904 5067373629236379872547699905527808 7428325653171993191813758245142528 -790652690600342878628369722031210496 9459284641172795366962252058984448 3162167392914506132963382484008960 -231116868501678094377141573131436032 1313432500271725045805001887186944 3115109256977104191154446598668288 -329966626717475695717554335317491712 7564699896562680385668051504201728 6585209692401018816138703513059328 -672685502676076215938656817540759552 150623970427061166534542193852416 4428014671613624099142212798906368 -747282106174929765772175075801300992 186833647807386278004271651749888 2057312952461420753304870031720448 -954757075910770123641968596103462912 8638358197960589902180627509149696 1992931207117512869428767592808448 -938129821136231603273103333916672000 4711286998583833331691466960928768 8590192347663130097688699157348352 -221515383300731092066687530412539904 3284628100549013420642710602121216 258542031638158062507440830676992 -542555156292475409213989872407150592 6679350190630558768296157402628096 8655721557862315649487509808742400 -122323870999362394050667785475850240 9934278461701655545271411657408512 1940271258028396007077907961741312 -708927493346271214249694689484603392 1605541679862508632239650010824704 6840603117840812262275268239949824 -886813106987291724796271893527134208 7270963211627235027573720815239168 3028643936448471775266357666381824 -60186956430319257637187824209887232 9329776533958048900186747386724352 8644536977095303879984154387939328 -454783651972649654914338553652576256 10648706828042012646457015795712 6931612758355562970589348440834048 -911220489151327776678342904648826880 3345807725835813847429112494292992 824814534113774422464421219532800 -172415625547691163732908738556723200 7237303942971905746585719289151488 2603494251415086398687883697324032 -694523279092806492255437767936311296 1583403484105708112014213338103808 3608617828917212009073844431093760 -32185778360513906897051829080686592 6630881209812579605549148129984512 400826100271279603586126990802944 -306246732544272760827360782485291008 7430417635028204907217835180163072 1417664506410412041401774611890176 -518177378292859669014257801485090816 7306746343907452070539836004499456 2044003078981985755078675641925632 -914929822492637244388561228337774592 1166624543386667070672362700537856 8499503850218856547222751889326080 -568757485372254316953020780576243712 686763268846383869226954709270528 5475630738484905237284541503111168 -656434260100852570591082080928530432 380579414716168352260355950379008 5003597222457869105347382902521856 -113383629279710394493512739085877248 802855346739063672104130063630336 4240404838729590876350066756419584 -297322365302224900280116923124940800 4253820493473461505800104134574080 3488815646125043719587489359331328 -869083235703395801299369768572157952 5751009297695527708231462746587136 3296026458873764864225805925875712 -461916117266225433209832220196339712 7033667023192860263803147025121280 3660860057996927103150749888020480 -663700009131381801655279494075777024 7635784594693247831042555157413888 4812319718421176584624128596639744 -81081762654636486666283941768462336 7181778804948037907211444037877760 6190999046219136574580389213896704 -709661886609256495203840799360942080 7097888695180282821273115019968512 6397246949845252883711689062612992 -499636355877559571823214514380210176 1628631312847634335166314810703872 5450566757148398953355748417994752 -220617116239395517322239652757766144 941367037539092361268863413780480 8468672786137778150634307750723584 -396656905992593153890968821720678400 2372217229272661385388968432893952 2916196941253221432932703664078848 -675207677291873787907263088786669568 1494653970237343677026802943918080 2542075601283012566677403526496256 -934528183067244568678030825129771008 4762288902263406226534133202419712 3489913738691622594869409871822848 -190198204372039284604125689170362368 2386601937537754134488712734572544 7522082317929490535715486524506112 -587269507227897464757600512968228864 4392371965448828611057757072654336 4990324663267176611823866492223488 -217246721112596916681194111410110464 9552694042247211007959870979702784 8136169811897679891833027249045504 -349369171467088444596123255334502400 6517977464037194384489103751118848 6402311567427864916799453206151168 -365834985076148595495047148779601920 3020454493927566537360182972776448 4973724607716868256210689149894656 -705762372699628754016838275938910208 9122340751916553637394513743839232 4426230833881822761382431357403136 -646114854953821262997652015604039680 7020965259070155446717879253204992 9775102897972501433206176097501184 -496072454112846975498638023217643520 5133374948233977137069990678102016 7337304452111931532670857910419456 -158525677087173462026733164813090816 5101664458423282687001724543041536 8609400270922889734186929498357760 -497417307596210876812365014857940992 4981298882671123656766479040249856 2047633530938665045864657549524992 -247519110289989840061517785074761728 3536144607241501047179887545155584 8762240991698197222103208276525056 -583413729712163652964826320602136576 4299102580574908689518839302455296 2113839015013749412533807456714752 -249660407745664177698558814682349568 3185886075050642224059584941654016 2680682637984966555749994677141504 -593908169830080279671534100485767168 4371139979255113531910907412611072 3501711149119965478623781991743488 -887316396704053342398825340187181056 8816349548260699714370085953994752 3767907905356959458311675807006720 -376048903687014961870333414339510272 5237808850614094073723528159428608 8922573276655145929210995715080192 -794387563175760060880779121700896768 1525792051655834080037024762429440 9759282680929465972031462632849408 -486928810972175605664652652399558656 1492452535216605791033845841133568 2387117258471288299555698325323776 -250745311538894684525024648565358592 6450555403536722023622903672602624 3386330083598719242742850257944576 -384675922007262806156386130502615040 710995802835177523434100472414208 6486679326128482590035012141187072 -701954735715261731958336953782370304 909131317962914278808478254366720 5638766168173654998931764005568512 -669934306579217666114472203683627008 3806408470470179232350035832209408 1262980088049101508753515085824000 -544071641541593817812276757200371712 9935116812254506104483663866494976 4681776929121891361491872814989312 -327160349032906678140373560255840256 2587055595507010557213267680296960 4144969824205444657162303173558272 -388140090113327411074331668677394432 3342252028385484036503520766066688 4582110947182058811655858849579008 -104749252164836627550130976053002240 8682339909466179778501959498072064 7398431142272545757017589856337920 -892842264456376759349615385345261568 2049566994454788489758598049562624 7887052243038583088870939512799232 -558032542392610302156760320575537152 4820610128257366683369651776258048 6443581875824535959698416517251072 -398450209281512651925058201411649536 443974927632598628405289144025088 8657772033103957883698381867450368 -77386450517043038299573953012695040 6165686218745131099129169890508800 252572781031736407229313782382592 -961506307006622104998101576962801664 262740642957595994352166006423552 9310875988800046808008101675925504 -266867004525016544619888012012027904 3211289465157537381122857584558080 990860515332631570602588408643584 -170418824992036397458929105315561472 3688203366521020179281498528022528 4792326626935870774487486130290688 -691682477227533879521478493071212544 7151666620516722590734706500698112 8559472302524417461100985404358656 -909423268158470587273010706250727424 7161532610586761177666372199514112 7569128851880028451777078473261056 -696043864382204113107751416748834816 8579817041808352679844417179222016 5057300935080587162767958122430464 -143384284220006095177055405093158912 4419803118017473049078665406578688 6437372894262207691349569210155008 -121226832541071071826473917150658560 6352949873291525897708567523229696 6934212901581815305504058469515264 -587074975427445663090922799209906176 192937921085082772286230298099712 8560657738628489355097560588484608 -615982396597754145784217312597901312 7388871455720258782083229316808704 4159356133585103193768862169432064 -965611911537334436753196119884824576 5631942565493918012901189482446848 8509838051664963961381288199323648 -200076621398552476954244987473625088 7498978375130601563070922550673408 3786992473949152550069631520342016 -216378923121938104177254220370542592 514533108101078204811316775878656 8423206468394367098753863622066176 -373128025553878238440889196509921280 8234451745000053750290833068785664 6468841316815878051750740689420288 -133626004597949470137194354317459456 8276062174382575732578313287237632 3311157684028478189311656772763648 -140257230965035008678130645829943296 1939395499542254835270830262321152 6598956207101604341400607429492736 -747796045790622843389223904720453632 4678059606351088428335474096996352 1571278156383026320405660371517440 -903638979192651524092315970259910656 7046023180002460375065096945139712 1515635240610985128007485787996160 -277740478044518514768329266184585216 819693393992196898993272292114432 5683122490511298138083131092107264 -31566060386819846472371717233704960 3624708032994978336935581688266752 4697885443393536350315824390602752 -104075972479527973024159868009840640 5697654454371082231110421914320896 1106596459957556911058886372360192 -168398856039912387032959948712574976 9059095974549193659295952497803264 869455844148482001235300193402880 -645569107042757460988105571791011840 936340649167831957255662843461632 9060432401112475492472174292238336 -774679279112360249963834221162135552 9398256918059415762119443194314752 2853142955439084445292179490865152 -685775402142498162719575417571770368 9621242706035177086472445988175872 8415273344636432786812646606241792 -308866949181115352584087890378620928 9924470882323621310227392281706496 3030759383293379213043461070520320 -230254489846067624581008633083461632 6427590252006159219046398252023808 6142514995669563862158686954717184 -228371682154465501026746068610580480 7020689335955889366733879116824576 8374116548092221756779547821342720 -641010379276853817828625817549144064 3057108102522030559984382287806464 2837971293597193354794991114780672 -864962455680363286080198652226174976 124559310159011107468654422261760 3251028326326932577372152721833984 -642016681443127282770847799875469312 3498041327351086555681362163007488 5348214284646343616421202738806784 -217251199785857115226778378134618112 2695558582019785749241749242380288 2384370080671975047490541440729088 -269535865152002427776604694170828800 824270373979300851384079397945344 9287403790320802621839450505740288 -786827469560719764661573149454761984 1277534970448339051563670183084032 9211336984277287585987734334865408 -816090588884780135401431356380545024 4024546662091757459313186004008960 35249772774224347199042402385920 -957937465135441393650780728801099776 4454383478678380493349633482817536 2553603406963845102611097911820288 -857563320167145436798385256004583424 1938655469838023079408512861732864 6746039086242795648671267766140928 -69509735817482714887906980677025792 4739147003477786905225274828259328 9763231026181109740988360348925952 -509011085234277414046550008604393472 547532782883902198450332492627968 9517585002546558290994469611241472 -322970378797430567258429028372054016 6862166641025960026285455307702272 9999257993154792497075798254026752 -112037178784715303933494608170844160 3947286577241132029803135804375040 9484545505146843454862356845166592 -302388927088459692832820172989399040 3604963087641363405714446763425792 5981928319940037693223103933448192 -107940953623493541945054373477351424 9226930085575051800557125648777216 3325181847282564030191983782789120 -24638942103728288195485185783889920 2021489167129011464072986682720256 5967475952163457725845429288960000 -534401596257974564799241844951089152 2829524890615330499883746929410048 7847282244600287680791146341072896 -553812952972931911559462008991514624 7670632535414309603886795168153600 5172373056722241164833849587269632 -771344954727628459621328299828969472 1095132247391248799137253501698048 5246432105257000629010611197444096 -514960012774299875191121527210770432 8679815463296590643800197117771776 3425971525028253110542106584154112 -25541960035171148088867001930350592 8319053293920428282500550624280576 9695318545084146084192645294325760 -910239645553487247648134874131333120 9590191616703062597359896138612736 3772269291754955696199080660172800 -799537668540619264473810925883752448 6959905195278579618470588105883648 2851314032837174365400441173311488 -167698463713605927263173194352164864 4536102802552878695254028879659008 8694234865563249325852533104574464 -759947649874271720581369393005461504 8800231605589501424826302137892864 3676152728892041386755602593611776 -756740931799571899599898978958704640 6542250932011825617444776737505280 900315813447344901015645032808448 -404671890235959352950147464640331776 2251076496928693207276802283667456 4606153444878843088863151939125248 -148676017403549487004723971323068416 4019162367467129990769670791102464 683042547400112109461352212332544 -487669341265673587385159563060707328 9449811398653445434547223033544704 7069164434037678558115747311124480 -372645014452193730868755918290419712 6641672774304909268202781480583168 495085417100469385898161543839744 -685745621626947211187582927586197504 3075407089921338924845128279392256 4360319910146696768407507426082816 -198746014860818751932698940021932032 1098673288077325054798830598356992 679564944823778983438547559645184 -751841706212304542369241327067987968 4399593881837206061726995962658816 7969747623388815892285789329948672 -413399789908376395488104427017994240 6625497077901759212833668788649984 7086844727817791128278723297542144 -887680471610014073142357939212779520 9061560766624140574748826948075520 3535876439290551947558681917259776 -746796179841913048101626633602990080 3805493865649989312730106123255808 7893288100474730812770640327606272 -72132967526708611341600746326982656 2197249807269016925054519432183808 6491375864558397126092398025244672 -295500302520280851158320652142772224 6890676929612703771045545897885696 1062682836192853945495281452711936 -972582103879266122822634629396168704 3334714716268851441760040787116032 9743400745111092145955454989631488 -76342962120463916009616477456957440 8363044994088664372797550113062912 6586374147269253392962877730586624 -669680531500218478245380476138160128 3603018347565988934807729463099392 4717306012923411335091538031017984 -53400358452759638258313536980647936 9977068084151564913808504162091008 608124684449989280823122277171200 -230301305867586488144002863475982336 3426821769263051671390235953987584 2462280113026336556128335776710656 -842350774938024385158652138558062592 2894451275077894164125652497727488 4610733476590924573510730835296256 -665837701870206881869889954943860736 5737700728978961458004642309865472 2518539935618109291642853517164544 -595296309153901125331364481349976064 8815553244666832590965760730333184 7573293684120510908106587259273216 -909705143925580144461048748529680384 4081228499820545200991850178019328 6313492607248551606026070986326016 -635875872197416705202650903769776128 3558737243300824192510463351717888 9721675194399573511589258634199040 -105749092503346881966365219600990208 7209122165675123710472807172276224 8818848645945166608237527463624704 -682635782699729198372361713951440896 3522746089962330525049779472302080 8830218857365760600498686149001216 -971940154801011434659087626654449664 9734965809029989828137874213568512 9728915190802965654622112753647616 -33457324260977993799176838449201152 3970737610247854824390177966784512 5887264939007569400013348141006848 -930286258722202648837864716530352128 3689468008868034990033132696109056 5117365838552192155122009716555776 -894307420045426013223463726876721152 6509896447643192795356126704041984 9357543280601864995942056136278016 -806206198148978838306901756672475136 8144794764352113636815664079437824 8506899334760238013357211657437184 -674571321909922305669817387404230656 5313929273319138190954995480788992 5205953843715724981629969976262656 -875873925136275972812592969976643584 3852184938710878644724888640684032 9611541415981679821698994972655616 -432696174441804170016403363257647104 9769342535800585106678058957406208 4370390694626574050447379727908864 -999295068280266877631887025081679872 8704261937556931480260682883006464 8158404607720480925696644807131136 -292501866327969768116564353458634752 7456171771824971997988001134149632 7936005467433217019282806850715648 -997671016724632846151010249728851968 3251727640014540284086749080059904 4605305279138591890793854186553344 -592423852799132736522725328074833920 9495874358852824401092673460502528 4041880841946878086041146727858176 -710186771475856343769650869657665536 1115286850633800376741066145005568 1700752418501971601997854861688832 -339322677391014833317804718730248192 115528241286238470547399300349952 8864756710553968121573479576240128 -906698342486286048886185128282292224 1521659435768884010670408423440384 8720092760385311282955668814823424 -337200322085730988997351307516837888 22362904528498617203186229837824 8107031654598131246921935421964288 -476772660084141391588746281911058432 1585036481882453409236017691492352 5585589814409763632679011433316352 -294786358253876174657611399333675008 1463864007512522854518641341235200 344528594917396070435327112642560 -149923325264366322283118041606651904 7540640421062589782672273393582080 277746629948318526050660018814976 -900394327137034218946217810627395584 3614079039425846217088519018381312 7076222671186326969574615957897216 -117589388721909229290205762413395968 3083795858995290489866280000028672 3413894132797708863374869210857472 -486214922371117865006668534884859904 3910985388572777414164372139278336 2049121323987566521758281627598848 -701913790962231850423609081620070400 5294141346165252749719251357532160 5552151105245061269001168373153792 -539361970227948825691279925826289664 7448562485150562294278294616408064 2616759852145233932487272607776768 -73722156609287060238059816506884096 600593851809720589439813097095168 8462609118365893662645657983254528 -755475858157029112720848604215902208 54858881887529897945697062223872 7406731488568387613225909131149312 -159412587754402710981319921691000832 6440084010332654459580807573929984 4729064366757516425850306078703616 -411890572662987453087532336562569216 4833749950479108928735006458642432 557401069417702614510358482649088 -701152856457729637598236774934511616 2232147132488428361882904278597632 7749239667875628256037049869533184 -429619375234096734855401469892362240 3615332328435328133740502741680128 509986949112501276348621292306432 -131381723634758472544162181623578624 4217063008633864216073023795494912 3490167862344404067843426773630976 -601498829436581105888291192513232896 1523096524138516088131772414427136 118837146518328249521859750526976 -271778968366524823553001465913016320 4346473754416569823043791932620800 6087053307965090600227293586522112 -920330748904798007223804825408897024 2839202840004797608108018221711360 9267330824871059927291084006227968 -131015843770625103418565922541010944 8990293956183512811891415341596672 3510579381553946028546065063477248 -449930015892904835732934682128416768 6215749848460454742467806459068416 5716830864335531664010022395838464 -139948507709079482433019624000847872 1931406427322297001600667952873472 1690456785508680176890062705786880 -235975231831206383738929352294793216 3293740352805704699550775698784256 6942798533374629715855408740958208 -384167049329292059517354350498283520 2000276519615011669139061823504384 8558581907192699098597620858224640 -437886633390547033414625441009893376 7657780463971936342962773312929792 3519359045362274881711249077305344 -295068133425386084623774728715239424 2946559623535396415629237608775680 3818106078759375695339885646839808 -575126043724385377507477199018524672 9383125025183210198759184208494592 6658536696573728049875293623549952 -150119748978812114239797827934879744 1381918243323270272816574126620672 8278883024410629255593170305024 -9162437325218901657292416311361536 5205936661757055046330411460329472 5013114263398938797674544375005184 -966265464831670372632265476003594240 17565905395183388715003217444864 4213230588314084739610430245175296 -960188083405536461169803058990809088 7906261388178101288306230077423616 4282065159222347166160003855810560 -277436074280609572310599481629343744 4095333416624947249681120442187776 6439372162869308947208776653471744 -554754258517945514413727545236127744 4829350007837946996679462283640832 6304793925721191133676410568179712 -364837679201437431776989176817254400 672370271178386341397312737116160 812494290133086521601848151900160 -805726322965721542202943717595152384 2198936641280706764307018184392704 5552035075907209216402626004910080 -12821873782057345321871620758831104 5595191121139842543653819082866688 4556302482956513521765427749847040 -800844099154458951694302634622058496 3171712276854995547076828717907968 5485180946038844800769266630524928 -322631123600496383199601684469776384 4657685561091682753866958070874112 9249673257684694409811531273338880 -650888370445321345569957953153269760 3283345146403918450224289275707392 7867673034275735020883411833192448 -927023809449708637995318858659921920 7845913943977349817888111585132544 4896983311544504786312716680691712 -13286567952979395844714446542864384 5499266599337615680622802870730752 1627114838654987177238086704693248 -949021002621977126292670454809231360 2178747624970236171500441753878528 8455170982108470631153825187102720 -763408770092798427966781677142802432 3075608691415270442795263617662976 1014940726471642085765229808975872 -538567215743105916546414775464099840 5099210310522818740769550168489984 1581438745182165655726869627011072 -411726128700483528379421173284339712 5329553266288887085846792138391552 5273558275937027290917357584646144 -723559378960749096568750885776130048 9401253471579204237491914644914176 5096733638579773311424967015923712 -339265657723730421440876853344600064 2933223282492868604413584397565952 6811556821832194881921668207345664 -860317349144721942446634035480363008 249546766531696361902454104653824 6290609127243326419120669469966336 -952443721746103889883837980209053696 4640768295385954009497142812475392 9283058813753994015029948613394432 -901964955606886954966846402168094720 2386087608305113699069059823304704 1404322425734684827332838688817152 -762722669642374892761813591993090048 9591888864554386057577584060792832 5333249266978186410804472241455104 -517204007580346408892194682625327104 3781417544380281425381427324649472 2548650018583785568863807002902528 -903060670630398147026768539882094592 3717343522484419872666452133675008 7814127566768484963369020406366208 -945628969404963249260113469382852608 7303297718670574268789531242135552 1600305130578191775047847952515072 -49195763264127595568850320456941568 86964791895069860810432123502592 1447437435627905965912669852532736 -96197284895363216117798916681891840 5753520087958995747284813329989632 9265159837874855610346429994762240 -109600326485642804562243536656793600 8691245726361112116277290817552384 750448007727884590980189279748096 -856683375396327708799878422910205952 8384010361243003989160146648432640 3483630524496894808759937760493568 -68937918688527110611133181062021120 4878046968725017751935834935787520 1514630624263757115989682498306048 -315288885528515440091405327970336768 9025081746959489391773179130675200 3134538266258051753068875235721216 -756822906576512782616612239516368896 7171005295895432067582909856350208 5816786039956116999854758345834496 -516537903117994636984827516488253440 500553173102312017990799096545280 3039664532466815853779870430527488 -623620924073579144446181999122579456 5609449441482856505308166383206400 7175730044193934704922680654561280 -31707142881418583379635061768847360 6167077104770881902243498074046464 471977601298542440977840000204800 -170202617376071586198817643748655104 9456384021445727539006324405698560 333689965361570393518049727610880 -687534481978027913844328933577719808 7973019237303255059207306348593152 4427794991708878811072282767654912 -321015357701238529202614605390544896 7400597447353290650856342912237568 5871570815139112573795145349070848 -832995978843753099178424744930181120 7917769150516797452031549599907840 2125244428496007218029769378496512 -964217464046948751046944661941780480 3348079201163123410001039049359360 6893865375293225563511125610332160 -871467605128862528801575972460560384 1389844910575932646104948929462272 7537789239641064979844549455118336 -150935762471276840487550141266395136 3869696083790269461901196574851072 4980886368055333348863516340125696 -667058389669031611268358450490376192 8075291739143911533080636593012736 4161752140965769765420751275425792 -288263334452964693895957540507746304 9434240165886425947845207921786880 8917578742424861587477178425016320 -572256776963514805976057009475158016 6978823352228853557709102278246400 3593667205550128604020395070193664 -914858434279130307505385060515708928 4592317922561762342811807346851840 8593555442185482661927439359279104 -311240537591708217825228969253797888 1680904313775295651243022262206464 5104448902964955897954090912579584 -539510124589897318818220886743580672 6365485079924769574330127142092800 2383907013329283053001639985152000 -756781810922292263422100331787452416 5373581737349037279013651303366656 9703743547758010515304773865963520 -443131972575541623674321109369487360 4621024533522954978287374378729472 5988461448595454311471544486854656 -861657793885405978020449442362032128 4261288374697195634745601282801664 4727935827770604615533526859644928 -965304532416216013026430433783447552 7066030831555060932350400310280192 8590151223335783441204849552654336 -479512247824907657093428851333136384 5304976620091364822168767947603968 1783205533544641853675838944313344 -809108954572924444353271852695552000 4602780697882898690977658975551488 3801740513434635970072299442274304 -780784572905051759894447137878966272 6813203102541068036084857940475904 2036465091434835428836416874872832 -358636371327780121366533693163700224 5839586006381131702007037662593024 689388754452930271115733599518720 -52684429491588581579304133120229376 3148212973771282614654505215590400 3875342588763433241727016598765568 -326833541022926032886616178150080512 7263925872831310865921177888489472 8997685170172570180091942000394240 -836989140906851292374679916409520128 3299250221783374999938756251746304 8090334323551303781480669951033344 -273124645195772485245251949896400896 3728625699518951263574307605839872 3491218757813796662447020273827840 -786266450311619549183496876323766272 3967818724820875281147903688572928 2831358654794095513795087397027840 -103520803333664425613687499570282496 580175094810187385276663794237440 4567208825675031588201615060893696 -85925605156747663941799738169360384 9641517771881711025745641525477376 2380008413340331315392556386222080 -952672079046911521468180463137849344 3912094875918446293689733023268864 3983151232146733137581753608699904 -682365439677857049545696111264530432 7451486655801849323966154055614464 8626561562712140887562245621415936 -468819444998163166107804701051322368 8896651595324636743718320293806080 4127302581574392747255283727728640 -441418128470204560129256269151207424 2299060532716000952924529867358208 6777720839654340989351109156929536 -222456422778784712089161446291668992 8047197397580960557364764821422080 7912208300582823899080388578902016 -890637955684081071385314831573712896 3150407726608507089211245985792000 7778418964920575120341484903071744 -307031522925302158719254905118261248 5700927426855582066023491006627840 4181228929129873519850514353750016 -293248256689667018221220626559926272 6544080907674860019391603928989696 3361672355370854478224724089372672 -567952251674919189801540050525093888 6819876081630764038892638309449728 4325091238277361292105543325843456 -501341409182804443681010932661616640 7254769900379400407308900377821184 3545877788220917123720911567978496 -188746188825340269123985263535587328 2089911410710581239655773373464576 6367854377197838213477294806138880 -60551697346149535708333821566910464 3196113959544511963076959064293376 6282394653955887887042251151376384 -375536194885589135540635640335958016 9921079283185183950981894657540096 704597446597504518960308924973056 -992406450002234922829798045638459392 9089888236790188524365155410116608 2863676277678677113575312617111552 -4765969320793523795312278694264832 9816369597433517486616945084071936 5864300832829106288958689400324096 -802035460665985151351877392717053952 4087657832061526019363884152913920 4085228605864997425884569201016832 -827679132284147638970608191709118464 8958858697190300757733472840187904 192357214132734351838889700753408 -305352934335911362150202788590649344 1922463484875935935106495457263616 2145969143667001229736048160931840 -912641279291779589098265425741873152 1532962916414452134958264259444736 2250991500453756200477905112793088 -501866998859639239656155098258604032 4069658426159103414159147570036736 7398881904570151542394884787798016 -750876630511258103709285291604836352 5377268897685567777411986951766016 379417830388638726140486121160704 -662520802824713482133131387998306304 7543880850161745615487071579799552 1491743648886101988516714256531456 -978168968503233646522508186541359104 231123365298870361509176341954560 502024421233920933000958927962112 -405649655891114681710180501943222272 2151251180027325441876137848340480 2779469313863233248468116661338112 -667470977754129384578543616580911104 3818245936902678555510963049594880 1806298362498087739826790444564480 -37338316213568996539457113520340992 8860558476865138185408148225916928 1721754415357293514601190461014016 -704923882895959674591263556307517440 1521465773674952394570771027984384 3469381895016615920138789257740288 -536664094471136627239360143825043456 7086360921783768665514940406169600 5059933285503130848834281229254656 -533866226193671690980662094277378048 1510057142701497119038974084513792 7390542549226453286084925328457728 -593147082739447437033369820177891328 9865200655307814988840316409217024 1326367001553064705652348619325440 -958779299413951219145839794949455872 8306848067658022484136647536410624 5868436319256762101663144544829440 -65507002388525559863787138142175232 5457755473191378662942894347780096 6533497884666544283049157441093632 -115930461968249577236488377358876672 3751490629838204811377319163723776 9856891795535028523938486260072448 -416308090958361533264422850577563648 1072451794915077158514932966227968 8890909865721799935511897627951104 -768661025189132626107634973317005312 4446438126653644145226692801069056 6412654870241712287160186387300352 -153373565252423451159086058883252224 6442748703037594714834681196445696 3937179055601870820660942345338880 -446047991877757096176734680964399104 2502410085451109765724134109609984 2435914004631240387692824023269376 -494746855927221632365524781837058048 91341355483058739203922219499520 2503079800019949804081213486399488 -9273868430332849173328962244313088 5562143276029402316031318294528000 7193118416391731195038730603724800 -574314093782229649467770505627959296 5405763603824006452135513183748096 188451407033907711808286735990784 -880367653520912223978518462808981504 556934445342347420915154703876096 6937172475397714157798193838948352 -270175615154126200073670919937064960 5317395877217455642800516554031104 4323652003948122076791022983053312 -590919181092640679048067782847496192 8946028819706284070489889716568064 7630326110481978300665273300025344 -754678331511634569757857878990913536 9368711261196175589061355863277568 5410049069091303839186811384496128 -719403022299335739419003908605870080 7620565238455509925953909695709184 3190344411517543996579758483701760 -178015101449968833788458404721721344 4028078200652408670930511134195712 3412882381462276733987348725891072 -8387785248998587433293648897245184 5596352673183056455729148543893504 5045802559699890071922442430840832 -407445140621052046383180562598723584 9345272797301921121682355015122944 9212231619481214894336341968945152 -987315046587172569434451278315913216 7244499311966495222882034125897728 6613615169901338760824717045661696 -127038653715786754880849068173557760 5792993957227081627344195630923776 481784080069069231690549703999488 -885981519904796541615449721987399680 7247092920460975615396734211981312 6578369804214755153168054347628544 -866226525470296789840134317157646336 9341861113379789703623940297981952 3661267066366783533056293886492672 -592606039388234411559006700597936128 6197090965301166273995213822230528 3899537922026711313649556967653376 -572303208687361248512231842527576064 6160546926486868494559370771693568 6876841319755899776312980059193344 -450669680510014502940569488207118336 6254871359162664978483646973345792 4919922941114699774936279274225664 -778285500285282271771529697009074176 8450142883716028851452387944038400 4164418661911728211865704004059136 -902810381717016332087211103210176512 2271174729584646573997987247161344 7095841148787166799045384042708992 -553960114377625198307006584201412608 8255778274288097249495947256266752 2759203654893375611333581194919936 -977019661408025128245125471000330240 2106414995176166558152019486441472 794238193941912267893086600822784 -248615716600088905952419128650235904 5131421349335368405937091430580224 2908573779099276614075522859663360 -292595232769243296739207811329687552 9058486635603680863145475765698560 7096781106749093752500799049564160 -982219277209547469664328685426049024 1893071030448360530333140923711488 635174358318170814288582202621952 -536019840185552986398138107797962752 7104587394280883084490976232734720 3517912246211231078418582352166912 -766895328484637307663599264654688256 6159676106274543082499882017095680 2005368429091190393647050231119872 -665234292512185117935295251833946112 7249294791420141137052055979950080 378849003304387378432973467549696 -664008685002013110901667342560788480 3475229758939207827781738909663232 1897684574119603267053211457945600 -259399407839786247278313110778150912 6124086847952644740756215305338880 7432724815976649920496661581266944 -249644334981545091796420050194268160 6880082611574670997562732813746176 9060103088463132158331935113871360 -554060421875242294267908890810122240 6611461974277476725269479716552704 7106163596294042763840631236198400 -52497103434436334545577059431743488 4152162308845475443612096925794304 2351110605567602629424525334282240 -403687642052983988884005673118990336 1244746185816283396379628038782976 8950452724634802258831590434013184 -214075609426489160741684856649416704 7633136032490048923130200982552576 757808420637091515993114214924288 -352025787943519005483466420482211840 2069741208153462386435388629581824 3397631264728112171548160177471488 -757725031231491922872365373972283392 6627659184551852270970968683315200 8875594380693215927003152725835776 -272399612592097168630856101255970816 6270008861242578654971287205576704 3514120558774339586065974496854016 -71293747607540911124028496881385472 768478865565385366223918769111040 9313957050653351350925738834395136 -638633156864396219488627341505069056 5568664923970207180059670069903360 1015975915168067215042549873901568 -47052388798110050832728794253492224 7274982734733885614240434971738112 8800605408957344167727084142067712 -432588656595680504799311334119309312 4371874522632089215495414654959616 3839483943663239378800171015995392 -277037155146578393675755860034322432 9416047203744270705776338589974528 8549590330852590503225649243619328 -702513610173574128672882382730166272 3011436279601532271715969864302592 3661161503071559846166188244598784 -762316741366619141903355080295317504 4798685238783149697623616651264000 8041589207754669147783840246267904 -388220787155872444112720655040905216 627966097835914171037378957803520 379457233933367957603710257856512 -735211307094640104145758147710025728 8518044212578408776441429854519296 9818090737054727016053634743926784 -531849873913235185797819647613992960 3943977880821016978403617341964288 3515428813858175404424752806232064 -954299740069278264482397411652665344 5381611200158003280793206001762304 4199986503059362465465733539168256 -286865845975059898527679219427704832 8525165883180188983302420338573312 5342482232092390087660801198391296 -907782934512172514055840769897398272 3483148204410010721186640669179904 6469856316322623379723538520866816 -425015889441900381243966019954802688 7968615718010751906153069193199616 8649597026325682403577773630160896 -282450682872086831677338624343408640 2044677718010790336056918594813952 8465152728291739269697823701991424 -431044784518841349323837618557812736 2189472259188791437901239339188224 1307762596326710352554323712409600 -506548387918964131743148432915693568 5527155349787958246434810244366336 3943193477013923292306847846891520 -942725285349135764240152624013246464 7981816208999117453435954643599360 821833392619455854002722240987136 -337969591621809465170416051786088448 2025236610892532315917043909001216 6840581135746843926639145197240320 -896905181376057008634793294949253120 4398235103258372489739702475161600 5965457387766412109121738780966912 -139778949423528991301424164754161664 2478159164490152845279326942265344 6997611645803293980580875901861888 -240064785533183641486553979048427520 2864521357961421612426616591351808 3500241726176962036968861982523392 -349579367038595369337853672593293312 806057185862525076135131167588352 4917898437585703921236763924758528 -541287400510145894616374370229026816 5723093812562295187654713263783936 9395530525049602575631112885764096 -357914868905166760862516833110982656 783711345073856626146564947050496 7670802230564272476542120807628800 -18295506017554084189814238379769856 8992236255551782298299099175190528 4201813932005106659329982345510912 -712942670752561868282731752664858624 5929883629009705770048561180835840 4394124463360565320337530611040256 -220229545219448111653951853375258624 3590120468276608095589384207728640 3692072358233964365643290383482880 -834517154082552623255250229474099200 2813336362636532074375483276394496 9257600327143252801842851463823360 -716023984818564097577644458856415232 9141611006417736702719735713759232 4836332696829889796009250695151616 -306787527463639110951919409644437504 8686738639384821877588713604644864 9652789122109270530659886382972928 -980372175587328745708156376152276992 4315459405296251978869402524188672 9775533759723101269405028101128192 -161792803159183079625597353516335104 5754438439853359168725466388365312 1514046377445009647571086344192000 -794681842434897651056029454762508288 9050562673125502133688055399186432 3801819863920922258370813715546112 -316696872699224941294650407608385536 5382184173469915322338626156625920 4871407262102391752442627475111936 -891742884300786215061533118527700992 6855983282777571733854188229099520 4433352857538919554152344322048000 -195876592288614457715371228591554560 9358159221900193448071898603716608 5723254831521506952249244460777472 -385344525197991804425086832461479936 201839218778359123875197618225152 4680751735192938170092274969477120 -230894687946556931646858426069286912 7629615572438114023450771546177536 7979533628983604399029814225272832 -889302131162757670760508108889391104 2156406622706009217119698020204544 7885693581075387571870489060048896 -777366457279980451968606048620642304 1330697078811114349452197107859456 9225632405596444018708425178349568 -40367980267198917388213428454162432 6981488376466232247369221604900864 7508989364324908277997300130775040 -971802542216920735678041181944545280 9911592218993490246950817162592256 9254664519168374107160802853126144 -402425156854647365520057283167387648 3519886425743978571460243894566912 4750208621021691378822971834499072 -257440123991962191264152831637061632 3854990094316181619081542618841088 7193449491265248199652256721666048 -647901835040810660067669713377820672 6476558538423356305992193348206592 5790746953851426547123705402621952 -804083917219222775063750485970255872 8512090461537179376035371050598400 1589385348318564499744294109708288 -278081982318239005120636185464537088 1560853309420917886651252405698560 7580084404173437370334889157591040 -939972872863502769645849499295285248 609062878583541425388647694204928 9369347698641334578097587876790272 -337324923898214339443502201387876352 2672526495558836061254252842975232 7898887294787480092463368071282688 -475872354042696477913628873234317312 3940521105923953111923824091201536 1160438359091540989385441040924672 -450472545695187024276097654851633152 2516190709314880900108792211963904 7015374900609549903695885629390848 -101450316722388544891994484378697728 3805411512589305357354407194263552 4120077097691913382016374315941888 -385586002916160590289790903924031488 7075555821053366950653320667070464 2477550531655273797407447474765824 -316921250645537285992823425524039680 2911112986439107352375914225729536 6639214954504356223757450685186048 -695240397612807829956899676018966528 1833501412277178247601318403244032 8025273211164963449139983070265344 -813414345232972479881845212608200704 1364587429859302398365306623885312 3962770254606272565589189769297920 -459124080847012011878887319027056640 1034484871690708998026735086731264 2372007240230650305661108744093696 -595468314642493496987870243468607488 8471834719761239031513056341393408 1849579317414684954944632310988800 -849950583422218142412365214571823104 9583201941622871251131624882962432 3949304857652121181475296799358976 -320347470665710714485383848177696768 3591691429559428387090826350559232 889530022320743952291704457920512 -502005824767560736981977650367037440 5713924672345683131495874660663296 4055074454305395564365626820526080 -646161410893591024761985021157310464 7408583176153184526423002917634048 7654129248748634273411513150603264 -493524347524987158009478393026838528 9364722427054359598180249213337600 9293704112748329464615189862154240 -310057810154132395864198378738941952 4178438132488913824506534760022016 1968886233376894527323715043065856 -916077867033491806783753570435989504 9355762707907641944651321300746240 442709668162884176899575212146688 -470814961834211312050794106829406208 3318177292812290373752163059892224 7781330442134729986379713192394752 -335972245742069279850865130024730624 6853259005047252262512581161254912 3649867363285822638608071857799168 -274518168889351507210052940769263616 3672016539406162237765380254728192 6315571432101500223174172913696768 -261784363074643693827098869663531008 7823675186163574902784368008232960 6079648507139170527853491188137984 -607609951862321148554006151601061888 622897043934758966927746928738304 8163689293599884201392363607687168 -502686023894348024314525785528467456 2313840653468912118314905102188544 5381030109470222978233064826601472 -951003098938805316016634661093507072 7948394027885444003909687329161216 1546138921637312847454416469491712 -685409847845746835266915827877675008 5158990651474349438682184986656768 8986608327892292591828519847198720 -428457135433207083600129740710608896 6670142280858182137254349648166912 1479024685938462436478494860902400 -689293016794408325549767601778851840 6017296616565413098913666791636992 9647271820343485260190096084172800 -931357783091390658698826498827091968 5370889479525909484274848471449600 3458570779980183599919043872555008 -200402347810516664001380001851113472 4568533774576116690836596574912512 5318709911771847340142923117232128 -686501767840980296209228677242683392 6952867732157993349758712253775872 3305152465337737833832585543811072 -561330639919005258527633774777204736 9386596189724733072801094168477696 4846558654781579019402986077028352 -341817161081898010323206384073572352 2275788138169786110294753405829120 901288888871559842836403497992192 -330183578248976952541721103578431488 5085751652455799449802226815467520 4859455803385034664543465703997440 -792456697608341223238434094160281600 4376094076798220684694139476901888 4299098075187106406445894980337664 -882922174246275029155662512556867584 2755816149779602904146050832924672 3660962420667217254967285160869888 -127895313079166694762250668473319424 8107784010870324481094774606004224 6420658361338032484889136679878656 -884483756279233587920597589094825984 1374164516339471252932963025813504 4297907023774500963650259981959168 -673831367765788577645833235835387904 5794387630910430294577058104213504 8612539886263328475561392611524608 -825375423555931939364179430699171840 8006262396220985071783805487939584 4000837825823137159162719111217152 -169057626242770239401771218277236736 5407659571867117187674911553880064 4185143599708548960906884560191488 -34327963732896636732832197023629312 6021620449182575583340474935541760 5363784849691870864848809711632384 -91094559281353005401420974784512000 241252876741126876692541270392832 6745991193796412966083424967196672 -203224834895162192644976767391498240 2573078673844079672069392286351360 9810917184387886658190320097820672 -385521707574996355537843974486097920 7383185269321132723801701149048832 7543717815672417138074157041319936 -748387761072058379571854868276576256 7197282120397003196323326676959232 8240806176887144542010091010785280 -639096713306759425980912382800560128 9373820303480442510191870666080256 4091062747864621411318305675804672 -839373931135544040068042795601887232 8039690653156912592722646404169728 8529289690842697173790400991723520 -900309626814734405643536490865623040 7501695255409538315263583534972928 4435024368513074818997686747791360 -342472780041610788032011871375589376 6939205039598962761336214593208320 670538828038674386240818810716160 -269903549524695870053477466358415360 7086463623695523033192468184039424 5719108261928522340448738408923136 -62997138018788049579833272551079936 2958601799890425055974494073520128 1003847851990783024634650553221120 -245315237500961512982185596071968768 7146060242065186590304100985864192 6205343835170374989328070268157952 -497005542247124667734702312260632576 6141816936146031945635165984784384 7923921039963841910079302209110016 -836905942680857619589104167030882304 3226667692790680720091314265260032 675394508036201189370188892471296 -298461249460160443220074665378578432 1337095385898206479940084989689856 2634544422772178901477520593387520 -246328063610751402273071917548175360 3131024781532924018693581041565696 5223586449204816172873167444901888 -313499495498586295837393750698491904 5912062649703400861144141547962368 9042060576435772900827990283255808 -240434849633410118655493894173622272 8599956007347194030675587837722624 4472695406715938052072676154933248 -819751093139597224029790197744926720 3206039002004542745857887507054592 5598965638827717277893234771623936 -304337389436104697265371502897790976 7553781977880800958415055064399872 5027515607173460362405189605392384 -280519682048714628971420457828876288 2120016249893504834731922411225088 8333084223689348650780297988669440 -110632049190115484822021094894469120 7956509785827390613046210735374336 2625280567590192043003359132647424 -233684281142480357757004749975060480 6579542322807655774127325557293056 5549959146170257788391631246852096 -203601104111282375465633524666597376 4134073743374191923384231397425152 124468124298596097229263638364160 -552583277772439703693112125333438464 3547750150084402059640419767025664 6910174563926539624611772505260032 -6929777443090300159161487419506688 601793541023936278810399753633792 581580235394295796969655259627520 -248121290678943680629078073869860864 6796187809130017989227916755468288 3365446506189559680046535018545152 -25021244834494741898069844766490624 4033606401346836360244135085473792 3203137367605490376468803195240448 -602209195061531942400099890151555072 7747867592550813880599688723300352 6882342520251847632398674487672832 -641870344924580930908910622055858176 5077879372543934937140983060496384 9628222693305045501042605426737152 -225999215361998609664789006488961024 7955705914359305030906395238596608 8941609021012083134931770307248128 -461182610074749377943119453013147648 7336184137959292496534143322030080 1389229368431089512494845627727872 -169009465316282722960377847052500992 5650972834285035339791730787483648 8290064573511905758617006904442880 -408352204002495057093533229941522432 4168893844148247268738778234093568 7155546271666217947182413278871552 -433168319722929000093314701234012160 8080944904777712590452629235040256 3432833232594676880399338313875456 -217690101075745945552482044466954240 1472998083805988168623324974284800 889537482736561933087117244628992 -225818893391751373447394667201036288 3289038082451615100942973145186304 1781239431550410757204571307638784 -187896557474125285382269071905521664 1188776146400260148971903043764224 8704409779594202340879630528937984 -877660891728163689300413589569404928 5161819657407983101496307686047744 2618647213066851951441012592738304 -391241050064887285088159179357552640 6277290147739538977534122995482624 7561531773553741825607982471184384 -56839658244729354678617657776799744 5137538735122359899877652784218112 3516032674185457333291413877555200 -512033278552715584214198935453958144 3699686891743538892872888329699328 6093633041170286817408724548714496 -105801141543820516029574066678530048 9578764029181124294520847118368768 4105452512623369473857054796939264 -150689765289606458003253022177624064 8099861377730308251279005770055680 9323771210861321937524942562131968 -392725144274187896672711297722220544 1086550557670729743730480326377472 87230164479397674744561402904576 -352400482533004631523520254882873344 1076607630193807130516106931863552 8404216604006110886481396984971264 -748117726752587031805026676005404672 3221558071772856028498879013978112 8887523534941403821906711298441216 -305746598675863297071656458531110912 9408578928023664033699633641291776 5503350231327914929499289197477888 -621016361082569573659956771049963520 5581106367345629945838615213899776 1332027401924442271036379928461312 -296273351904595348820301521105190912 5023459385296565629258086507085824 532949781208211223838160328851456 -218319924394417823278754958099349504 7117511716558066443821016552570880 4574134551532969206673063037370368 -659203627282102176088190968225857536 8015599400294129091571051340496896 6083163744931232049812297559834624 -300346705866522523958078805865660416 9190275291885769802756234699341824 1354953271182527539216164067475456 -367802484344832564135120591189442560 4862937326510787732196744117616640 2826297607757998689573585362616320 -126916195923959746625151508219428864 7034863768140500412066514174214144 4461010114233266873945771252645888 -289328949218493792380729631994544128 555055923325287657907839070896128 346024129315762012528627647774720 -220506095812285453305163820243615744 2063829728145256107685681939087360 6169333518075626002438487657152512 -130228843113174836208401068918308864 1359469477997019132548509520101376 279247276095746379470923758567424 -400039986773229608178016317761126400 4115716867156828880505228306153472 7139675438931849573000560479567872 -739489567943772442342093876621213696 3757183728599709114384791208198144 9808684045730328193826718071390208 -728882701918287225445015091452837888 1051029218271086089475202396192768 300987230265577544368671405637632 -348572454832735280303279499397562368 5904721406655276997074803125911552 9504425930633039552684320094158848 -134560872850331773350524933533335552 3235656393933468779124282647117824 6438322982077708053723753901719552 -775486768481564539226997066452434944 217113284732095710921657264635904 9362078107775785812713491230883840 -355489436030762039982572804891475968 4108525997445216828070931527106560 3784587983771658827655930775076864 -363945603455957876262780917254193152 4693333185611617348900898805383168 768682734291176149439277541883904 -787511102717916956728207608528240640 7996971685083858869321408276594688 8090031226763309987307109121785856 -478289037067509722500877889254195200 8357756731557922758406899849232384 2956837804397810928130110194188288 -482149912185985179687871161466617856 2361850842153138177508110455799808 4714779623345376020421615347040256 -804145245178263964850222224291921920 8724333242136073240761152147816448 3817803993590952571842137585352704 -324446762424651274581166563254075392 9283042324092109493186323510460416 1265590071038042325444837125390336 -159333127960948357047455459011723264 8059534553348108389800585757458432 9025227243382417477220268781862912 -212432715561515453841610851036954624 2799514339616593089659202390982656 968773501635082312311804897787904 -710047397483842008173123655958528000 9955876287443911722781831107444736 2146005808704714912218522432045056 -510050324229649658015595778816344064 1057849248800109250238703487418368 907731112600209269315206639517696 -204080987269626550595010043203026944 2441355847228255954997902535819264 1049854808472734033291018439229440 -936916587207617254815434451514818560 8673490176119376756952263213187072 6457618236665307531750272564985856 -911207850417618447936337874396381184 7159524991216522965402442056859648 4756973571913134724267922285395968 -488924638195564175885605932458049536 3271025155729173735822000685842432 5237525048011847753395895982358528 -191030933018168750714417821203300352 9032415383744251557720581243666432 4660092535022035457942036622082048 -887007117388918154197823398436929536 6931792164286936992615224511037440 7990332003036524892088221483139072 -207656655641253754041559478991585280 1420123023164359815927056364994560 4713987157417818365355074003140608 -572053577198890034856076811844976640 3343324591282669890838503954055168 6884918983572600983217193860726784 -447941776415676504817972278458318848 9565801262775789359042404783489024 3289441107307620651027218955239424 -642507796169782046954997353323429888 8973514840048120662245785305350144 8174951250764619774215878369869824 -932888392755155768940191503687352320 6129892129228451168673918772838400 4837680749955327100732084789968896 -444015303991444984067958871903174656 4126646467656269224271290824654848 8980474036423664152028191903449088 -885083203308001213198497073705517056 5473776425956319265179206208716800 8619360721204146556114545995153408 -510864198291081939055566775593730048 5438128271853407485438872539627520 7147272756750225718545318301138944 -88412541586776049216171383277486080 1111029315905646536618026255515648 3019137330869914720098190595457024 -981712167319504235274041024332169216 8464522375826072505581683142033408 5547076838241269543641738448470016 -127412605159867633290853990661095424 2826005850493687725294754216280064 6259261285513477685849920607617024 -979491242769398785675912201413591040 5582816251930466023304452546494464 197821818660224755189424777592832 -872238309590674637739576599827709952 18104950728182308114544413638656 1041407234209905861481388746735616 -840928788643659186867029578302357504 2870762922746451800155961105055744 1289664759064854307071854792146944 -392262347232338740531990430396448768 5293475559854859010908144845979648 6768797650459230935577589622767616 -119869862958150604064600747791089664 6172726173327603860339427259711488 2210523034181202521543572436549632 -487125407667872754141244913365286912 4654302254408561882380880870113280 8296140270051844042738223573630976 -810877919226597209562452243790168064 3419159771536495451089284617994240 8380794577570747637354654441930752 -457019516468458318423864391420084224 6253017015953961548446612443889664 7770734988152463282240249808289792 -40789441807939414588773247934791680 3557530884268734873526037173501952 2666199978792837253553759610470400 -367710252711850721028066229794897920 2782653160511404073507852237406208 4728740904252185402108890230816768 -402522161902992558854448888974147584 2692611961051786385692515385737216 4937801991871541937563591208075264 -721304860316893823788633456042311680 6505839757543555216905276837855232 5554710102621086490086342806994944 -946588320293764227321351050409017344 7970035928326450048468269634945024 3118899100754925352945729442676736 -69099316913628508439796024199872512 1287876036710443749899750709657600 4387835075198409688573974748856320 -547875038624520888218429656567644160 9794314873815372646843849897934848 2096218088289805267046332176007168 -708910727277143195569524150716334080 4071317005808235612380008349171712 4746556587572742595894881707622400 -379286690746756103973601329610227712 7638356698473740886732396820430848 362017903750360684034966692036608 -774006721407203955320273276655108096 9195421332344390627710418468995072 9397857052386788366347234736865280 -4904745083383162959888647570063360 9399824648037186789997872643309568 7178350909245254726071512073240576 -50375709651256997848960861275684864 2945077895547308494244967985709056 1891612406684624811036723881443328 -561811462054197659453201334363226112 3441820902199217039497637687984128 5918108876105849241659467043438592 -804669069612099908977745338623328256 3680161733753070304122513225940992 1898301605263999799532649057353728 -936415201215011500399512954645512192 9654394654517202984882092212486144 3681752574060020122681978430423040 -576355367747295781468598501204033536 395706923476824696708460189843456 2112239168431822423560073156493312 -600663434440578522686222946197831680 6446644598252058485157168083369984 7741766401678210791239132267937792 -116799608698952294744455838926110720 6070129831351005448712728805900288 5837179600422895963260284261367808 -155467720958937363325446749069246464 9644119533088792506668678597574656 5571433440717289128207314828918784 -789144567838200063338056785730732032 1436314633548251934587098360709120 4083826578366099084411144744468480 -36603490802391629884401160707637248 1382159615231100266417162209460224 1305385014307350430641730122416128 -679429619609141298680007531748655104 510577964050283401776923920039936 7750455786839709310147553992376320 -837962093271210093265392176835067904 4299863613037854184673977535823872 4321001393930492687570784122568704 -440529596705824757827368664491360256 8184102076130741835175852047859712 1287460528677494504887873508999168 -454031795805388102428665552071294976 6548010637223689357910576430317568 4701946178367257995069114005061632 -790010565620569562443634105168953344 9962074426781217695149078804955136 4036684488253447399719695235940352 -640165598476537237042729794236579840 7601142529070853815457470574755840 8623782354244193424378432292126720 -770420056869206609873611510874374144 7314292872559247998576575624773632 15540635843532884488327360675840 -612278577972013318883859988666646528 4688216890119306468478874780958720 4044307667273657306460645299847168 -549403044198842414774529190367592448 8383315144632474805260861443145728 2827444306590620930098197346385920 -438472370822683169994449380169482240 7571226584130877781094648053235712 3646934901783418314022355621380096 -404607096041225585038862729332391936 1158239168331572133332635697020928 8356405190769077547576355857629184 -636878804438909495672495320198021120 4086919500168822606118625151549440 3029860330241374023224634967588864 -98092194886484035231289697720336384 6031384326835854342964862479499264 9451879490343970273593861857083392 -138710949410451779666645225964568576 6099567422851683763900535468457984 5990401225821723306213661388832768 -768930683330694769903640364267339776 5596833972493129989736858105413632 9872871574822039578092411788722176 -567620149155685827894599361035763712 1181077779987687862156670481203200 206292369770327998348725627912192 -975665359859917400793154879787892736 5618341307724167594946199577165824 9655614144529052160731206287097856 -878868806917329379165638381296156672 2484298071857395034546259068190720 7281638518051059311700726849208320 -340531671418189156336148883504627712 7799313700669145003437656461279232 9624307319668149606004229543034880 -622575705239031687349481857676738560 5916467166801625773590775316086784 6311125173553230526699084573573120 -429976627314426410242679291993128960 2528534468883058489959006844485632 4649607593370246699730853909495808 -246957738788240061564694168684462080 485372119801796404437226365124608 400764000812921281774337101135872 -118491997820547595862704754511577088 1848824322384849427124493188333568 1020575792171749203902117919588352 -178653086209093680450927284384169984 6662143674384470294246593541439488 2676624095069020493230301947887616 -861317494350557616669868743781777408 348841365892111293975680908263424 1869390726423531206437172162854912 -161086017555689903395720339841351680 2677842871261208409963815046742016 2464693836605259852640570029637632 -534378548547289541163014799948251136 3747767238954176470566855161937920 4225922090549525376959087089025024 -439999441255231870453938892291702784 935307293369038803364269780893696 924008135478787504140961548599296 -806571958097459758637718227015172096 2688692525674540183546425887424512 582646131526021388044984551211008 -116421304947670055244062345788391424 2361659264658581089241240155717632 8753359643702507801764978606735360 -479392860160938693231422055580172288 6725485998868771613837136538632192 2084637195530417952135518057660416 -124215292674730285114098604648169472 6193409847054358518320408649793536 7953597972424183096061324618104832 -763074780569714013222009811727548416 948745418348300148856042423320576 9460289731847592524646609139531776 -695789651939933578039963532256083968 1921218365445319906516241827758080 7200386782325107526728423135248384 -829899488515298896251708701985996800 3133415826064482808337860535517184 6250498809768644203655973677563904 -772229435826928987959039292103196672 2214877081435633626623571964985344 6069705839073016680886268915089408 -805226916757739055269082774892445696 1428104492173369822232626256150528 2925784074703855240739072931528704 -567376106613634698095029354061889536 1313722966587018767441260600885248 2441219321743576536027108290330624 -549026337009578836183127836971761664 7736355771524180704063247173550080 2029650639273418408302814433378304 -12116833026442510981738023421476864 6501028800047594298645938041782272 9473398389172728088703348926054400 -856132814354726936049248789279539200 2084446577452438519183469879230464 6239809908798929128057935889432576 -776414507356050670271969645287178240 7010674569007293421437335862509568 4356526135058018030386293191475200 -441738025013793082666973629406773248 6368383714801838147399370688954368 4861406950815100488347497703407616 -914792954594214670458832411393261568 5947861246212082843994652917366784 6427363952882333187113333225947136 -273088744674949353987074399515181056 2071381974907375304685660556754944 9424909475523425173063129257476096 -49717238635449745433532027944042496 3699869938894887437483983102803968 2282774238046850048728983490527232 -183758884710969465466593805810532352 245317736419629658657977870057472 9037006283704860885584056074371072 -992893257351941037302708606039228416 5481557569158348812924631409229824 9274698452599167572209072127082496 -377640056604043399813361996216139776 7166568301428708826677301955526656 5102376341223356415081353001828352 -700602111234587720896601376038060032 6358320192687241825237020853665792 8837397951615264204988521641934848 -648706242937190576561285576473444352 4232328304752300470273833900703744 1314943491189528561060882967166976 -88533363406346855675387298799681536 5000528393527979662230376926937088 2901272871384754320227618441396224 -718726107071898919032674466412888064 6273114281484310613707100029714432 7977201234636141210031099784200192 -505436807772939407758044347875983360 4548631089114718922155650124349440 9492397172296241105012624929587200 -376112542983272175824236108356517888 247366581470789713789344611827712 6889545876192815521135689637822464 -630200783360233671772829073553752064 5247115081235090084576023025811456 8987858694158074885090545663737856 -166364964024600305174970800382410752 6485375209563278369410068787494912 7548601699433707327390173848666112 -370197611325108891446393457870897152 7299903169160732546058215760068608 5324566369002078441402096571908096 -27948267668294937822920791560290304 4548021458474120997195135561236480 4166293780752692401050542650949632 -276890841478224292587256852680540160 5449401436508133964417771134517248 7568163379666760040284219743666176 -440532756084316010386613481339092992 915294875413669589164376180391936 8217919454815433321573347626057728 -405914315500854539883023764625031168 8250933163134986658741748097875968 9696509522770881224815741325279232 -147236696255906625428849268977827840 7754100346058988895153805963821056 5976813880316448591166514359435264 -918269775843898560473237527566745600 6857492417826653758975011010379776 7358678755626519890154655932481536 -365061517503939232623441155861774336 1047578747926926017456365799211008 7652270357106373986678437656395776 -397820124340828128958158683701772288 5557091930617478487672848839081984 7359433557262431748906188403638272 -587994064133131689292817609177169920 6219416105787644468676395049943040 2976573284566931394410291985907712 -936967057786381135312644167151124480 7965980340438519683671045370281984 9745245945510501968411016541765632 -450671141655819854276125354014801920 7856796936874598421346096714350592 1120566656547207352528181745680384 -529338952175677352937316971536449536 1590899713336547125192367515107328 2868280165823914145891286498934784 -390148222527956518466143346107613184 8181166400189552181929387770249216 4978913804899217538350875125219328 -733783000358352629943566900217774080 7770458728849144551309591843962880 4290098900292664200249743071248384 -478548571314172783947381152398966784 2939318976276775392823487699615744 388844000135467583413064690565120 -687833209999955180579957679776071680 5771847867012862125264951664705536 3768949338694268576427898547732480 -276315803015283843620403480889393152 7911850369754166397557122103508992 2384428595769966583021673662906368 -173477826372994967670970419012173824 4799847876171805159008050150899712 3698757774402436195459013913083904 -401245604585476480532036817491329024 4786838896661149873431233620344832 9072651043788916325873341178052608 -249798335771914687120782589134110720 6150841158673269651583569261232128 7389329072072424072923422759321600 -897554566689409065405057962243784704 4313418699143840786213630868717568 1203530904854198000516720115056640 -245195448514079090544349598722293760 3395457942879001849339977345794048 8356136998242838731538138776207360 -849295857129097187954778577890705408 9129939509583903172513830652608512 5676086530204118214749271816667136 -563123384693673588986258638805925888 9004896166109429942718431978586112 6786550669401726496808027836907520 -991723364624194673875052544535822336 570217966426115072913180142338048 2297034775022929020803562977886208 -57814866890829486156896951727030272 5720877069922075443085598043144192 4278098027845055533021645949108224 -631539867550712003232963327525126144 3093931375586341150253712614096896 6495327950779388384737588219478016 -941801612624706475053377377420705792 8906316522796944818801049409159168 6435416797796886455585857574273024 -174046448243361015563986144052903936 9330280358758919748124150597681152 7269796355889248195385968700686336 -564347567708270144985757929376317440 5091888251149628578309471324864512 1400675602335958550782014490935296 -943757133344599541288351190248062976 1083730370722977035546331701051392 6465520829515600683654258125438976 -614091599066946607967384201649455104 6366856954146633058092254077386752 3230799834350061355561000661680128 -754849448473646449915029660899475456 6653239200641551673239339121246208 9468814963441791417526226071322624 -447814620659081594292038007842144256 6806446493099538402110576672112640 8191844193418649894935867804352512 -776301320972900196829539409407770624 3733721311575335967766399365939200 7307044508526453811255229546496000 -700812390536712849332922436416438272 7414418575369297596344406368059392 2923222281961207527002122013900800 -237399543567761298458740238181203968 8891457984794833517075021577584640 8183962104424210755550009377161216 -235137885581047363874183792574857216 8891697939824781797578003007406080 9606192275872334773496319108448256 -476194602713742330459065601539178496 8560412806935582651921296481320960 8594794521130576005346854594150400 -201397505669236620934886402012741632 3816939421071925884070023852457984 3603349318033519332238521985400832 -651909104188378732879641939305037824 692294025415342370088872187002880 7408342636284855922090183988609024 -50379172356810182113472984767266816 4618027273892532178175553360101376 3807432787865665818188253740662784 -494062305263364626536362249677701120 8131344578320484726701823191154688 4457282709155270195382309827379200 -340607269477988815921008029777002496 7228069398266016163107509324742656 2780693475029103348132545606713344 -242408058534298096520009659298349056 5390555534906956343967973696864256 7042460694514416732315903479250944 -745452854674927227236554079570231296 4973910439473399641261469715136512 9839792701505298232980301775110144 -263785695208897917009837499919368192 4468718780922246868114436930928640 1000166795104209031901739244060672 -492003341897559116827013949266329600 3266704055514198482400502322561024 1647828415405247521342613104885760 -259693968345925345446607490765553664 9452475733646454887351762051661824 6308560138744095626509287180730368 -549249817844352130719381430235824128 7901351303973511969011523915874304 6436413531603721221193813387640832 -442716190306922025423780519927087104 6178158543031096587175420472852480 2839356042440460358780117957214208 -520443029129170534173692642866495488 7194862712440288535997648855891968 6562595896974001444280454176833536 -1242662671792302249344035821977600 8456558486325018272003471154610176 4202160205591493537217946499153920 -994125320559989054245359815713882112 2754483221641163441142858896113664 4634669895223360925630207627362304 -279381379399898694836990928587063296 574471026446583079088658413780992 6900505809549361733403350201794560 -651411375817961531142813888884506624 3174102320528422165335881528901632 3705848797480934304992168389902336 -172192478255386586980825483335172096 198249389193755089797645881835520 6718177253107823883946380792692736 -257666782450211873052757924352360448 9366293689189503748459999342362624 1990724072456917724600161288585216 -788992797719371934911876962828943360 9402497554814958437837463294574592 8028426330459155286086160496984064 -601498490983969635119390694922256384 5243376725025459412959618060517376 5732378064141736733628428978225152 -88633836070388244513438219580211200 8999982122966277154176429868449792 869699816424810328520801799634944 -305243957799053722089919973418860544 1499959304215944048553728015335424 8346925278431855066411397879431168 -534031049864224139732920637532930048 3047227194672769305758482602917888 672960517041101402455590421135360 -23025680147926875940757772263489536 5443536795885185469740066065612800 1725974950462881078847790332772352 -374151909015400339172784908766543872 751657914335398307045053588045824 6623442134057255859770973300457472 -609319117788138637475768942517551104 4189507486725670421260941085638656 930662353018125215069105104617472 -70423029315147200250452184209031168 5103356190871432962792971304960000 132212863477881957227960886886400 -255986241371337397366248440411979776 4946861382727917316204525325910016 409427458755740726135239999488000 -437652505416849734982497985976336384 2439212601877896605801510518915072 7856902839411287477018699468111872 -544890182742515111131300772939038720 1501680228920352045649510398951424 7289054451192887616004603061993472 -29190816683917871793065494254190592 1753772462849816808009717902213120 3852502090558479141296976584245248 -737092167511837454980526239872188416 1753133452663864081269244240592896 8491966869634664116267774524784640 -555620361501121518567094033500340224 630511003367390372581400777850880 2806949979911504538764043335237632 -453691120862761884553131046469632000 1125613312334644102828558458552320 536836459887510652061071043461120 -285428747058676393898444347496464384 7135621340043472030611918209155072 4939556866077738879946921976266752 -526188652778829552050989851641643008 7047001193700492950130889341272064 6385938693639675210813151698223104 -189086707041824488541354777685000192 4229962691588974682986941310304256 4882019512703694578718711729881088 -775676968979807828869431444587413504 8248471197106773929264826332217344 5464462955941130512161627489435648 -446239070937618369235677950108499968 3967208142472725770557689956401152 7852789574569691825169038399504384 -980045335067129347437415880256913408 6915877976778304293250983792738304 3573156749973470058206285237583872 -283825953740532555373424635170258944 506134821639637502163558403670016 737242595331966642451227233746944 -604270336193539660644456176310812672 9896371095874965607769977244352512 9104472150336076481974126187118592 -670786897032533068211381993027403776 510869638431484469223817488629760 9074815024778193137278399195119616 -306807068758262594342998663833321472 3765403938467932890328772196171776 4813706201860914824829691641200640 -799093719488384695839625685885779968 5017074281310904753176238014595072 6220331617821420181171660841287680 -285210720219305491953089458072453120 8460907713525472018105793006010368 2674260678620081045952904545959936 -173012305630986135377621838244872192 7469277095043271460561310560813056 6415101140258394032988787740508160 -162685070291158794161526799637413888 2353784794137154231090299021557760 6609900138937686682847998201823232 -805130417928177635251588656535699456 3386513955080540512863205866864640 2851626031494158146344785199235072 -330878500934643820911374552344297472 4710992834344946982220388563419136 3538666546687141253125576595603456 -375227649055832321853346183141916672 2387440919027155767754252189958144 7839601981173818592282343773306880 -123352404270196685034255451074592768 968787421608585958402215712391168 8762059146507930011170317487046656 -900931115711701957913700963830464512 6836085154906971857680562112167936 6361986033994683162654734081327104 -902948041686431008259307763039993856 6263092222938529775575610731528192 5393226381660646062695570223398912 -518495450093027041055536103227916288 1148640660020526847578374980763648 7283013835442360873590934470656000 -631355276698945382419562030314815488 7204445653721081035200779194990592 9012351745340488274545152672923648 -280451079330601633827770093086441472 3343841522488008573380574394187776 6983536716509706419478275700031488 -199335453465392240044014405892964352 6158544076571813530543315134447616 1011636629083877857676367407087616 -900627809030787078450102414279180288 3088147471647442622579676932997120 6674847782517319846563660288753664 -951332066919615415875639756200083456 1886405118725822913703088895295488 6405550105321569602619714796781568 -83175643404295796158755200141623296 1679443823381399654290584684724224 2616472440607332046210693802754048 -429543994170992830503858758876135424 7152669384047641253992538472185856 4663215556294600764447131822981120 -546495218542362547705550110457856000 8252555248169236590611036519792640 8427727426193578236049502997839872 -334003956247592463101764190492164096 183755613103769298724815697346560 3331552983748341452556526407385088 -841718431725722874876662867017334784 1847953924297100145370567578484736 5848490116307294084893278910545920 -130642541471432347255634402316648448 6909426657786740922702414651326464 5902442512353704258008244497154048 -804037156092919167856219069800775680 8042826828380324820883363508256768 1063277217521789039373059415343104 -719189919616259489593461596615606272 3536104445383143899155570890899456 3628013640905173394820514785001472 -725883277823540359080564009941860352 9069281784456374645948787380453376 32009122653442122832410675511296 -523159145756277783073631263713656832 3523795215498524244186091535466496 836149643222079153860919278174208 -929404821675364876587522990855421952 402579262852096481822815725551616 8358725175665470226123739392638976 -473086931427504682328718581906276352 8668679273878821860120130498854912 6160841098434780049024443666661376 -325050125777352715597045516650676224 7549038004465808085782987064475648 9341650407465706088096521108062208 -413338265347760066494972312198053888 1323788330756484209690738759303168 9354869372965958870874229588361216 -440939837573608175475493506595684352 6530266570748978470641476887904256 5446349896995314934540401161273344 -334920620135233370371645429954641920 460715773115084488790762969890816 2902592676252460860742373889540096 -947639230050335069768845393867571200 9996019634841160551428094097883136 5240643487118327180358916306370560 -416768685089004226265129331879575552 7235880341689763982655309565919232 539094486516472419912548987437056 -11475900365507180969121426350014464 8317328700368345634409708014010368 5550796683154073544924456401502208 -458383708049787634316831426051309568 7674849943620834511693115941715968 7927405967869889816474215272939520 -481765385683696019287494066782076928 2843460360919099654643880439054336 4002812261714240412385316339449856 -112051908633741624269057873502273536 4072524230612353614095980683067392 6462317746989503429874648476549120 -425941143692983125762315022579531776 9328912273052783994022775421403136 7140499020605431017777179991736320 -907146108181663135595708888572231680 6140007502727989030985388928270336 7594399494256534861391603303448576 -779251764165155623106136913785913344 6947577044182207457744463425699840 5679117780777884187988669629464576 -875229489284482453682361162289643520 9557659778718113053824121965641728 4747504552399725767510605571293184 -53296463873406389442782978772041728 57918540380422101270878442487808 4335993450186272965801890178662400 -979672600942214058179309008213508096 911403904659168920311172111007744 6083130668910498721632546738667520 -986750434431384821856621723989835776 1271404765295351355864007686750208 8683948393849716941993051418525696 -391694652528659082432024016603578368 3626538653408416182983626101620736 8681389623600143548131389093183488 -560780820947741418953302070144270336 2430131170619732711109527234150400 7658843537109336286557535004000256 -508696267888185660614266721436434432 9089296959389223833989951808077824 1441803610278022267918927154642944 -445174008396193440773495390623236096 4199937640434963340042106382057472 601410115862615197026892136841216 -237445633164180353867694846492278784 9955060830855226626317688630149120 5802165258821352960726436491034624 -616141955814200848579540960875118592 4109935224344963750079173264146432 6592845650793882060045180829958144 -653080172979854130246039159024123904 878917885282666895512188181544960 9061341332316312547569246517854208 -898498576614529413711837620120584192 7763760936962127198663305196470272 3668120481477890238693352889384960 -647628547952203464483925560072863744 5378687525357163836504953281576960 7620240228642805034697857274216448 -508065627353517352253643269804654592 2325845650621302607302292569849856 9274388649052372667794916573708288 -300210186995546346387005489077551104 1820300948916515134571283690291200 3745304123167877440385353120743424 -510044327365233444232419750744948736 4521579714382596832640450781249536 6319224860905454873540202130833408 -600812903042476649423266196368654336 9990704353641469634917410694758400 9788639081337201539116773901598720 -141260711290620692758911944977547264 1982722078069175842504163639427072 2805695398348805898377547401396224 -674126720952792047989472782396162048 526686472217103171101979041595392 2886623180375593290749240672256000 -232327955489368921376801350681100288 6882306524539826245743300436819968 8544095101772910111369794821292032 -143125900266612453160858621667442688 4083119527985639254539839066865664 6009630480320222975035871286263808 -619865483805673393471278379893260288 8056048170175036683843124611514368 2182288762353274117581134100430848 -151972809130277288651919496086290432 6319435249100950118866296378490880 4776816242515547329875559221035008 -812218706094708447796047138317664256 5549022112556231957030746986643456 2483092228594429953759543545561088 -623687503601496263711999256319492096 5122595704204784093515952846536704 6417541521741921381953624334139392 -907496126918617726709756995955589120 927153378337411962694534294405120 1638506034363829763355604882030592 -80295724289422268216638069452832768 9752413132264203471834787988111360 7844395122722146359813749826650112 -467561586454010513276318095517941760 3920200551553199157419193722208256 7269179584155619852692929919320064 -253081794384856431240934400158859264 8405654326364707332292639809601536 7768792183776508056925441403912192 -633453821362890611317970759384563712 996127782813687965343738081837056 4286553100912843483861253705695232 -503590737603405192189988606853513216 3163782596266497583881435477966848 6906181307280034994484549083201536 -433969079047274743792357327192981504 9327990599261234189520544532004864 7027183016572611825455860902002688 -204538074984207592670104291433775104 4601692036768285834251409987469312 4237596364279515389689178838007808 -883639495497738946488422193738809344 6510670383803458346422143543148544 7792192986431530598746777270091776 -375862913179740954321089015729618944 2691655774442943157732566175318016 5243628816281858508770730057924608 -503433788301352954262965469073899520 5712633659132536333482768465920000 4745092695450963901575896460427264 -108175082511998931681998560980631552 8391631589145743663860446518050816 2747142013929767792781118012391424 -431037573865398663547903307893702656 3832310068621198740038128517513216 537314461875690113497599592890368 -639027690250615899826646780852830208 1496040757581817917385760955170816 6544322649504271686784883751911424 -988911998996910291786268748436996096 9304684453263767710751486157783040 7291866447038897149315473272209408 -16405205045504094147494777200836608 1478421233921903979639090807046144 7070165258816765834406583406166016 -132002567992045092434561035025776640 437709247003644198817992561131520 8526301069013881089431423772786688 -685019272183574361972700856262328320 1782007916720149316391503981969408 9997986960319350844849866342924288 -609190274694211681104935160450646016 9239198886481520048030766579318784 6006279254904529272476749094977536 -819672484612621283594575513030492160 651634676997427572451620769759232 8606041394749869117212260214767616 -580754974574832197229755644004794368 1955217891776801079025747504398336 971954792408721316996930416410624 -301946191055119806023666452255473664 2167646943123067546991641571098624 946386462793194886054217043148800 -270965595613733562845197797037178880 7943550923105210819544849053646848 4095933803102675948331010805989376 -74964052644946601388758613532606464 2331177209618492401685670752419840 3287466539382826050526028180226048 -17138503520307087660619969727561728 1886613238085259845017584158113792 4589204931393398631043912662253568 -533071351937852837092291935121440768 1108589436377392064609286872891392 7624382398702186919121675953897472 -658912679307639398985091017443639296 9911837715606101774080319439241216 5976573596806476899936135723089920 -437345206351533561698515068425076736 8802918599711197578779187371573248 2228941593837173984234015257788416 -266904650198654102005751437873643520 166344319314105596154948639260672 3610119569567320574117046592208896 -442300272317153240887732026640171008 4960329054622952738232072000241664 5018366742082049569297145490571264 -461822166700501177693617145384009728 4632110966916592943098664643985408 8440928779901560324688847623421952 -885166686006199781998137597627465728 9242244506781067223112672557924352 8386606583919833788370997550776320 -269806377320050496530113604704272384 5693078648717355016417146916831232 8977541286278589145850534030213120 -991390858792171744719530127259598848 3183418581253619770925576911585280 7095090815754113753302665787342848 -475621658286385923226117719795433472 1538706059842758514887206597820416 7253497613379882388431140775002112 -469104941737231228099556352997720064 3402398661690245962252473933496320 9611433941562327182094744191762432 -540437980940547685923035423914852352 3318894598975190100609905704566784 8590186172091504788555308690571264 -801827412805533575129370991058223104 1583878795133253129133579757944832 6859731322140914579352806708215808 -368115203210392643094428192669171712 2651550014559054799549924592582656 1194627930872271277669386077339648 -279547930283216477756596958015782912 6109714836177098026063446044311552 9862322102162026603826646064562176 -76753350664234943008014064846635008 4999375783191110771904295445987328 9252683028119762762643082116595712 -179961586933257657772784582851035136 6305523128618450427084365050675200 5241361603797848415599494418137088 -385260934234043231726267325927653376 9950324770660743016875286583050240 6258698491205724250664816078749696 -454479584816152965985657068344836096 5619874887097199362322598734069760 8314817557049559856525930343170048 -961333137569399242221551333270355968 9530999829907544053560159173083136 9608289630492575494644945540612096 -490573256423170962621051982651064320 2514099976966131911276883148275712 7338791829141084331543230473568256 -905764075833208130686455338344906752 8661043789813526897189078517678080 525634548261874962053991590002688 -34824706351013513422084748634750976 6254081396906643534337339675377664 269983225915636082605839716712448 -993739940496409458068020639544901632 9517680320820781156649476674289664 7692781742214765508054298193297408 -795971237992382212837235454560436224 8755107490378901392949045817769984 7930379050296155980880477079732224 -623992055201652529445563999750979584 8821744094011154016281130617012224 9582210046340478125246679632314368 -793959932864419581858266879484755968 1723663876592719711112845515030528 3008077692071183489254746824376320 -473868973268306302876211326375428096 4371287684602081134553858601648128 7288110164370818978273714187010048 -270118823523567921306867783052558336 2670252817412313570079647924748288 9656098540058070316786743408328704 -834249487375516247177138419947012096 4111028803814716290215659563909120 5196032586719009210673954008596480 -884430022356499487419039121145856000 3390458227830396628343308490375168 2117023564720142132707429468602368 -916934449871208502701047727779741696 5948580204088341316167508821016576 4195367594333115351534355701825536 -559919947293121252758355811720232960 4107113229074870079962801772691456 2604518315504629365720252900442112 -958476354340776177744324501589458944 6607524257782267821388302294974464 9892823115198809537820733988667392 -245047517278713608607921732566646784 5859918440619981864560367520186368 109623064226736487152310976249856 -266545230782280141559855862486401024 2907592589351602526196180761706496 960852615457173713831929292259328 -196006004022014646872732202581360640 384861048421981490472766725423104 765748717772372896460118310256640 -983912411321746957013407595782733824 3591753691731593424442681922158592 8807182649252443826200371749978112 -113308859171001334666347467375640576 2746728598205219433517507011411968 5056366917854810792071436190089216 -425094323912557316726213910502309888 8571692386654027418173761183023104 291027871434588391968980875608064 -115188146646503991746312058752204800 8689200718976259367755886817705984 6769282721418769417205290897506304 -148156844929161140675465891649945600 2842148189942457822964664340840448 7615737283237564876186477335150592 -466972320220816296219378517691858944 5550145895901812312686829372440576 3942596013279895369968419996696576 -119179734082967775735916897033519104 1516553142753070849580853419311104 7427407006530129617884218858143744 -279395151866832023768042588367486976 3652028694756022404070133823700992 4858563067095586014026398376656896 -157576134651111737427076308141080576 7862178356301907082932865604780032 8884621042479349127701579935252480 -13462810583004018615588134309593088 5617292154560270288635532169707520 9757416066408207661571864705105920 -170255248695796637682025540876238848 8679133435973638903107140567695360 7919945519434271234071280173973504 -292352846129373292668049258641883136 1936389715673448350714159981133824 7276404527693685839777869525417984 -50788878635602377509485985478475776 1595006002851333882355636431224832 8076306354915225123055821922500608 -790430144297470693658071038043357184 1888452896902005267925120256573440 3036554849381785578564871297957888 -688633839588362471452670207740346368 28464643454541591251999298420736 7729431057285816062110621178527744 -173640404496900393309585818127433728 7007984257645026253884789528461312 7939307805649220150619033521094656 -914047789366510276063022860006850560 1565291803648632449256028385574912 1846171925567756362783579783036928 -441565801613696901365822846981373952 9799875845021595589018504560377856 9516002598938270061120137029746688 -283380985350711172619592112923475968 6570365694547522149998718823170048 5081869740179271849028044005048320 -981944925082969142881501646036140032 9895229419803469081377583864479744 3963147903349451134743254757539840 -42621622964767407850213702801293312 1704973469376683116211789237321728 6082527459438444519617276850208768 -844891945379683757229164553750708224 5063513771175491716720615479050240 3333162706877899961025438597251072 -613778657989611682909356532716011520 1142994819716442588191123811860480 7101340235451834464958630888210432 -159129367692196715507627841139245056 9393688669518469659792576991985664 5582389343013601914838208709918720 -898542352418660847100067308447465472 7453159417887667084705980282306560 2615263085105671072281513840082944 -145483042045571974757104729400016896 654554948622172523781307072774144 2329178459832928966551141703745536 -627390521876222251079242701705576448 5373294201486469250452473449021440 7750320906963564065511322893156352 -714514309975042527719028855240916992 1702650661485966663681283087925248 603089596916887245193679437037568 -445136177931142764651554055160594432 5039863852210763006069492320043008 7141127329913278634822086472761344 -38694010356905415240389427690733568 3590009170004798357695279522643968 4845328259736262565499112085520384 -637910854860899440684341892044816384 9378212085699979301766587964456960 3801621630422342685558935224582144 -621213008998665914559739529411952640 3434523041553059934863537922375680 1756195527288571021251691604344832 -941830945041892150071003332120412160 8743252312404755526242919453294592 3689599807943287175531029837381632 -426328645087286278251186580711538688 688854506202818164620424116174848 8528402887580371018734470724321280 -843992016430956249510151121121837056 4190460234821689211172469430288384 8560581158933535266573059042050048 -345789057702551253747306103167778816 7788175326902627571900244364886016 4131572616345755370189724267315200 -357087428638402903022163938632531968 6038276138528730655395607306305536 5293287754009765140879009348845568 -626719816674822332051218030240202752 3005182475788262124975067903295488 7743288191775281740623140163158016 -928228131122315005443158961951866880 3874258302607131090117434315636736 8837283529496805104950729445998592 -502322519617736266095391430424920064 4721912071603545798138432021594112 8663678955521368575783777438007296 -24774297940881946047494274355822592 2262137813620274398556943607136256 1910328335861028933660346834485248 -213332126176361051253399741184081920 8341607963231582003415493642289152 6378885433153985222027565728792576 -58423962116055055588259627437916160 757749864097544743815637052162048 2636912647065444836389238536667136 -681883618600198782568530654959501312 9279950507553503020664546471706624 336678944902314902425758299324416 -899699863589763373902620664583421952 2266806834478382788023364169498624 5273814014518225768524614549372928 -647422626637554387864402582898212864 5467204509274669179616445190897664 5292273162813743573163844686577664 -910079963806056775055803222379724800 6924745024117467444457327533490176 5088932818904775194506514801885184 -526389668952300643157116665380995072 6298724507554665573009754335215616 4057494425577617008704483791732736 -861377161192338479182060953362497536 3346669555191213075523073451491328 5701598384827059683511435838619648 -304099674235994889501293605994627072 8140992517228046823783976593784832 8266885463239331346926640520232960 -916710014414349820452856639130697728 6628171974186144332100355670147072 8287897639098810712968787138707456 -824374495794454216431079264018759680 4125993350207715626849794795765760 9340335956891564849041734574800896 -452613050774933032470561811182125056 2077400098899634620706797865926656 122069886471013550232296109375488 -224337934330746146269802877230776320 2811320638100074743057932338855936 7687931361255398993764007475675136 -457726441467916431276872372703985664 3942977011547962179976161249984512 2770483300628666051225342670012416 -988160878465162558254369460147191808 5454476922339272687799926605742080 6320785580219684179338623461621760 -69494392863926170151509305287770112 945861621419758649352003403120640 7776720036123986099547498627465216 -796839495891568543687053232297738240 7386615274198580725652163966009344 9106645800665210791370458528743424 -931577617504265151093591788851560448 4288672472963783062196609932591104 4281492190567050494076500431601664 -210361140452204234809068708668899328 8040508208158824010606733648986112 8108554767928533495668393245671424 -645576283035846059987459982187560960 1955539615029049244079700391755776 429782908231008406791152633643008 -439423167533076537460664269944127488 1069481024370624602319307166187520 8579270789365479375937313764802560 -203213966619530991083437157697716224 2715012666561235280386546108203008 9967097226135498465435496304607232 -61335221802944864284813178678804480 1008030489417458979480001390313472 4589368114782682390697685400158208 -143708793312804693072292369026514944 460820691659905668328373882978304 9681639217015688409521503615320064 -793915475100245304260188676647026688 3690291217567624349024230397968384 250001085561965958875600681697280 -981841489337075634851586139028979712 6938670970928922818552710240927744 9981317435487001936973764740775936 -685856879445873388210214222180646912 2795663934530548527429713961943040 5775331989058899857513679868133376 -134689920215984502306484467456278528 4321477064118180879192256197689344 250283904172344511154632074985472 -929456801860325918511833844044267520 8096294676945347684944589883441152 4843133796989921721047836306440192 -534587297848096449423720894986977280 8526013599168158734509542691831808 3308907460109212344758739935428608 -871085672895730782034217376195543040 7733899176655801246233825099382784 5743679248323542380269578181672960 -593089195710834939851490796668715008 9503146824915692549894268732309504 5448206742427341050523394078932992 -553874687165029608054398287811182592 6207765805106449211523045928206336 1416443389260494413115311035252736 -968928029712125410998215692316049408 5306299521178015408270598652035072 8800919340261334476427497780019200 -184362590961229936203467157600731136 7944812036347266955113258735894528 7364538890861666678220168982691840 -620445797762750040058851234745942016 1978774670711232153820163571974144 8290983663801221308511776998948864 -416203526229127368475905876207599616 5693775114835347503349352296873984 3470377611099054002938501432082432 -998365008408538109495474104970510336 9490450194064923760413374817501184 1108874915268289008396864900300800 -818260066924107424991499439954722816 6635589496076900155298144562708480 5030608011602860453053395730694144 -78911698966178155061710369369096192 7194605368243895145769700738203648 2203978576763540707999859829899264 -701001454076528492510872425472196608 662234266445915029986524811755520 9616382927356372423551013051432960 -192034044370800042980906929517232128 7296459872193919686680354318450688 8357786893992194616704210615402496 -398077896569695394536668296426553344 6171861438094768367357020744974336 6537941174372945335293095037632512 -157956721209143225615749737340731392 7445290992508374822423280452894720 6516915800068649219615697305337856 -340572483835532317119281250051293184 7216229584770959386878943848038400 7971545080241796008551357068869632 -131443079049198826270218767468331008 721222910544953912223544584962048 1735663015892071243555534396194816 -347796783113992138049902771609534464 2986821318257137061332297921331200 5926222466565311137900909624819712 -616162654462372188633391041290960896 1848769526733327806239728971284480 2969044986278316083648539935113216 -242486845257604484340540450847850496 1734688445363477034848198837927936 665390201025406588843334962249728 -330542264789844660832928928421117952 624340126691746654273795501588480 3769144961062910307457960899510272 -178893217642290011590945159931494400 6832271410202025896702007375298560 7138605031307495254374291767033856 -280126709023895887090127510169452544 9285432621071478577329720419942400 516663520271589486603835940012032 -775234500088495351964194779233779712 1838058996724960404453738317611008 3080678343968660214280108107628544 -292154092527790151544110951042121728 9367303802625428349658831937077248 3760764228085920622936798523293696 -176223015175279121981171740402778112 5669480450708079150262627977920512 1372257084448012986366116682006528 -184902987622626437284050839206363136 3237666532393295918139445044314112 9554534235303546102731955226279936 -654006161486446670510945935342698496 7905511342183519154833137529257984 5051325083725550449495112704589824 -42272431264095315965670700655575040 4344322896698023051823408887103488 2251265193121105188224119238295552 -635231615617020986742884343094444032 5684696432845639674541338024476672 660646233715239440113321681879040 -25336831706322610892979982164819968 1126858115494885142076574727667712 7352100775488258037017489451253760 -638341258102923196118753882776010752 8832513593526404581775574892019712 6100689256683993080377531286159360 -631026611740260950172127064041193472 892813245931072205839371834753024 4551800701123211457545805758464000 -644313380259486619985934907453997056 3021342333384754232430442068312064 7551354134829626208108817460232192 -857063708772629104421325902685667328 1086177609313475022542837255241728 1472706305018799629302569354919936 -63623798894025111331867297566425088 6664277463707573620239926428696576 5652476766992919487068529833803776 -194635861116393766467322714397868032 2649168848179329028105395828162560 84202086902860532511671026974720 -616950869983916557822624423326253056 3931242420502465681915145283960832 1555321610301646674243093989949440 -994109941871010691288979588834656256 8992478860100810507048838173294592 4074058642024885617818644386938880 -925952527222220711759656206733410304 1476368697051976876459771025162240 6122965689550853444008374427451392 -784849981348154257363731309431619584 4325804152615684649502097702649856 5415936058677391931300501165965312 -685039350217324410598860775177060352 3491370504982436190017324230639616 3394925122268210531693612903694336 -887393713391659666807982085933891584 7250999254090365317174807087808512 9460167319730339988489268132577280 -830280319060229759092509754737557504 1974538332135715722058551166763008 7209484852145112090196018177507328 -834218131318522426198797390102659072 1064930903391073432328515474161664 2074609586244733984487733150613504 -940419531815859660052578555448524800 4628053137820306986773068283641856 2370514650098861994345254816317440 -656635768532810228357879718419103744 2617479166129224014247899489632256 9780050027897826049218515113607168 -663574626592872437534944017088774144 9096913844617969454366847833997312 3457751720560666643795376424878080 -886621152591015967022304903248740352 264992297568594913244302941356032 5816285570784960404903462271188992 -492780997075741184666353926437601280 6271268450148353752423517355245568 6654158418307943200950786031878144 -638160946867770073684470658922184704 4419537034665897324368722267209728 4429850009279252466307517223272448 -393765783069744086769107170408529920 884290137325390071372651503288320 6846347174587527564908216014864384 -300594787568427134451451988719697920 483774572736044538888443943452672 3710981238737052427777917495279616 -17833778763559474159754704928636928 8568288543830737612758550898016256 9836415656329327879368777268199424 -86934476752110385985034333064265728 4914490141577604559879223812030464 6137037538043546793051136064487424 -616235327470553541854564345781944320 181406781297413162091586040889344 6205135803350661018464420100046848 -46770931684091133959390456526667776 4195380131161265875027629547978752 7907428963840573662359757128728576 -555961076158921356956374484507426816 9175406132836250570330737980997632 1411173149885156800422359410409472 -788932473452680323542329757582491648 7775722903163666880110932103528448 3469854594914223095476339538395136 -69543882905468691951024656772759552 7421777731062016589791168934445056 2719566795629928199537152049020928 -769903972462725270771174068742782976 7615655639339928539846719561531392 2143992446648864867495846445318144 -43209323926417546084071081489989632 3828457109108835305967553385332736 5832171801730949198251919084093440 -181929672926140399870766165308473344 8154892332665460306454301397483520 1258599479587028041640028466577408 -132581410678094064221098315876401152 5135574665524510315878161596809216 2117824544124644108237105535123456 -600651767049259687152861364548009984 5454000409350646337002356202274816 3702178677912144817568032162316288 -401162666136295682344913262560149504 10492085798231931587602715508736 5511948683934939787159956648624128 -672921912846650437785854663819526144 8613078137945968691136856523276288 1465943042625659363927990724460544 -711014414329406148062818241322418176 6734722603598746585191854448312320 4619839442765175618127231784583168 -758156946839720369639476317583835136 2375453225105686620902549941649408 1890450836170946906446437686444032 -118691653138876847888661753496600576 3620244449692911164434764414320640 3175772769284212648775608015257600 -395779150798139839365493178366951424 8985882138330868311866831498379264 3728996698362935666158804488159232 -97144788656251607626066388209106944 9007129759175877729416346190479360 941158176732291736585916437757952 -114879487801113590921725498556940288 203359285040398993654018268463104 4797965356827041497613160012578816 -851487377806756342278791002824114176 8291138220150334545860282808270848 2863454052660839080902110916640768 -626280276670203524315760078620721152 8213911770135321832811543031447552 1971809475291720206706946988834816 -341613236721789835019748913816010752 596927988979402901959274041180160 3009986616014607584296390598066176 -942733261388303160039852619658690560 135593351823290154780385456685056 6386951674563894566896240724803584 -393163937298326501738307096928059392 3380943687508452734943550993596416 9937590189928071043784033746026496 -291210586671318316581608288975585280 1786585034845769619387018974855168 3063604702830038771338978088976384 -125196136882442844269611000629559296 2579781720275287053229564859777024 4179145855247478956271156093517824 -573433192094514603712734242176761856 4803438505511591805861084060975104 7906327865647183249243308069748736 -262408377690192239451360656422338560 9659961265607254956880341176942592 2708773613156767661492934744735744 -117518593217811910004579982746058752 2300910180195392301577357313966080 6710626429328412988637192002732032 -182747353055880457863761416907915264 3641619339650080767992220472049664 9665433780302840320317634088271872 -321711212158798755871696263590182912 1727735129812062736935562501947392 1312923985846368128615822464647168 -990441895570417864901506212013539328 3589394860501153151003950984462336 7564454033080899902581696771391488 -595249953185586265718778843891761152 4040424341171658981042438210060288 1889834604781733383059249469325312 -65550921118761249948472372734459904 8968163560083996794165393174298624 3536545492242724895082655571247104 -833034688945489444043417438350475264 3142038838162885973491937863270400 4073020572026315381221770976559104 -995998384209417178885774633433300992 256279668440027243658673383276544 3546435658068706016284852520747008 -546944971082641320682854697712746496 9534457026929184050345515568594944 1662667290748241759252415443369984 -731825293592234617882839065982664704 4632380028267275465547276378701824 2290295782030281991665048474353664 -149176081646314752921244275155402752 6049696743014833129172012766330880 3208660266209346644374577332879360 -759536514350020739944154648281088000 9667023236016225076572755500990464 5088725157006642320974804070432768 -598655086569517019035619475654180864 1272393246640210192463107752722432 9208351417225864778140317783162880 -889300467285489739793654469982420992 7049724743797302251073479278329856 1970474677470707459981519081177088 -560573971231078894553390464809041920 8339774701008090587036190764957696 5260744601076425366169278463606784 -87957456202074427323575345254236160 337094809042993883527961492062208 133073761044406666821492329676800 -435926876909225421066164370642305024 8964756177394305779051106194685952 3394743379879731311542644387086336 -231254857103418440200773232102473728 5277512170480358935034018341584896 4068927190865461743588288183140352 -98842551877706460446716236467798016 31110542324806822768179954057216 9387794170365981848206442303062016 -554168794662660123321273761677705216 9673476057821192486656332005376000 7626495099331053602924034994995200 -222292502975113874019215044285300736 973873083391466390968393325871104 1615352277232991232579219188875264 -680280467509390395000544263556562944 1124873167462986231686604846530560 9114850188593042283745222552715264 -598546874953188599818560907365056512 4646504018235798020069889450967040 203977680859683791524507647213568 -698363886331298990088610134561390592 5888581501808785871771495596818432 6090581925386241957776976739565568 -521224772392793640233339537695178752 8424871246586216859045819605581824 3156018011795610372994019134275584 -374085535588825119761494647236460544 5266291009162945455045451370725376 3788216392570518683140302452031488 -950190985980360702646352434847285248 3588774105253672775568109407830016 9800591904729447612982927831334912 -780578252257365333371847485297786880 8307497818715422176359945737338880 4490366123196542039274961701437440 -893535820157014551128646433560854528 5779214650491818662493318102908928 6838885752921479245372904970387456 -619275924050120195663658997564571648 997928208508537014070832716054528 9359874078491374884592111096692736 -73727649244795286559069593401294848 2582617798232691877609947264974848 5870186638924576751678755780427776 -226077947799961900382369865246179328 400626695491735722682179523706880 5943884181427552171229338199392256 -427665445091011503836521622409314304 8714895094219987220101601175797760 1727893377979942589986457123815424 -312173171032537630154771593473032192 7565156140530930332625753683787776 4679276601848638970311119674015744 -295688472478696911821628384879837184 1982204509822460073776375081730048 2500307913829303250512164677484544 -88500037834628188903370581319090176 3959858389000070015630679943938048 5119765551565476847833089155530752 -920334125889857321842831548619948032 1167244151928472133857206375284736 2680407144704302387526304486391808 -555324666186690697989722409617326080 7780091429206481163678090124066816 2867895725990609027077780489109504 -892931412466398859034037830648070144 5805253036590699073235195439087616 6653865064585679512784047708307456 -21201080607371806076193294723842048 4009427901643523548409633662042112 4521647037705030247050218689265664 -274451946059031030299731011185934336 3053705334282743228126937653182464 4920271804308146919564135094026240 -326749597501392075797209919575293952 9955977291544138900763805092937728 4007631939894920537302821878366208 -90481863944485193170866812793913344 5494955678126795574797106312904704 3453467018263611678075959017209856 -627263233928617179193219926548545536 9046621108202545262178508013043712 86349321871897872540101181964288 -664083326289591864547551469874708480 8487061235562470482158054300188672 5207358385647600339157223777239040 -698324757881408185992266582706880512 8139596405890007619270176847953920 878119787180309306726125081198592 -644979651878138608975762476857556992 8522866135019857210723146773037056 3614313221090065783661807672492032 -743244999161523813432477286538412032 6318405255036697374208629399355392 7658600257129790058078641066082304 -448552720309583133175638539531976704 1914374869927600446918961963991040 8404498366502950777573634367029248 -836514208285133303318390577010049024 3243382313254576869389958828261376 6711986933346476761033642323476480 -52288578800475667322700185330515968 3386054805234856030399315040010240 3961761108295951112929549945405440 -510390892896401685516798648643485696 6574089611962114381218984172191744 9350540046312513379793359878488064 -785891017326612648071047808142016512 7456254476492758437837594582581248 9047179694922409861076146135760896 -624387634305790336495576438536142848 403219507283446256286033738989568 979021093282035484360519903608832 -738109930197956065433856044852838400 7843553626799768286955133330259968 4048710518844667644779722012884992 -186144970309171223046315497465315328 8313157956623618257660986641088512 2882135717669280047024580585324544 -422610828108021618217154834329501696 5636991901480549411191449557401600 1415656010506707223576464532176896 -507867999205135695388934440587624448 2971232799125461032147990698000384 5091940899237342715558010957070336 -306994006217471522246411845856395264 4420923608697770954630593538686976 6609336624705446552875614129356800 -891149955230324280673120167217070080 2515868112581578847329298671468544 1581882954277537812032207095595008 -196166245198504267664880660207632384 5449898999801854870941373955047424 7010172233205975395908514645803008 -665553662602128808257696652941328384 995478301928494673967048632041472 1956540418285258368867859710345216 -276667864407163505556000109349568512 9838651496708958422648999053885440 342329218472529759114226145689600 -142599393388053738582002086604439552 3343048817068359669556114320523264 7576024840480681907171113505390592 -270007118376407483174345620699742208 7556474042310004795854875093106688 6026817352377660107166423298605056 -260207071570245621120699190950756352 209648753033250795607355893481472 3879654673546192018305223407697920 -28943546982930651797185419903238144 7110054160186031179797844732149760 9527777511503519218119170844524544 -390497461918888823965317630619811840 1025738758230683339283796064206848 1219811952688183504731622759989248 -496686725456353201696314384294346752 6379934440470338811011709613899776 9696298193629274046072038600212480 -567376834274061896277801619827982336 8564729529139833329468784248881152 5729282604934945095850919095959552 -1741586121055091400907018909777920 5180527588876566565393754268631040 626543155118024762491602611470336 -378955541469604254145334785584660480 7208837452806880608816256539164672 3984422151418949452656681768976384 -896056085223705304940609420740526080 7497041368695666497485075285803008 7365031227238898837561232007888896 -978889584084206433893222709601501184 8176756019133463741957505302921216 1649096487107848616635150286979072 -104165646798518437766111639933812736 7145724394684072466685356471746560 7206401341875677357785353054846976 -273764292147225270721566530410119168 6207861528638980813756837662818304 324174098753879852817820634054656 -981027736426623100401407206128353280 4556641125704248408653691837480960 6232118790937784566381167362703360 -730984381730528097004801180850716672 9174254322254567571400667399454720 4007578911124185074049499814428672 -138102820922409688820686916396515328 4417932235996302782060221350019072 8381327976915097301923691635933184 -715778933369084372282722581447966720 6219631366240111529493038379302912 8949898225834779758624002522742784 -956595834366066406351209433208455168 6229044227031309072260162343927808 8537912661499544381722192999612416 -499123297583491933741296096959791104 8463112791214394204663354497171456 2770100187081107255453135086288896 -979725419813359979665121514784555008 231439540863629159717786454327296 2029417871434668413452045451788288 -831880337152878391161037783576870912 1059584225511711520127549853138944 8344928568751698348742639777480704 -445941319312900981871906107974221824 7146552638354438987612782216609792 5577904299491516080570657616691200 -620481660253339137127921156167303168 5775032118919343992726481126031360 6264184766213420775697768203157504 -199054111517142345524662363047854080 9292656070953378678387170514829312 7570787354750875900607304090779648 -326576559485047362852092532580417536 1476176915402058196294460292202496 2284918923246182211039182291206144 -279672396839746167991269533560078336 5984914929291148629678032487972864 4982293843492346829071314132664320 -358446946485160240137410972183691264 1858534319309214681429685577973760 4871204386525707215042560508559360 -185633666523008470602859605552791552 6753008191450289614585124328833024 484645296251407756125659182661632 -96855910182240998265307293143793664 1704184678401626988963867446476800 1592435983670214489807433408446464 -182408314695382508803501068621185024 5718608894969074112072572542648320 811965122951919877308119169105920 -115248478583346328728045007904178176 1362021469366118577476344869814272 4711875557396459125884024633950208 -183955087288708022864119696795369472 9282101881041175759464897083080704 179411896805862278066037950775296 -96053475170465487596269298476122112 2466010063217425114603940416061440 7420334322877413525809949973676032 -504262176290183338157773173198684160 9882813346436049013778645581299712 9825794454708452174723373089161216 -518593460213725393292210412678283264 2852967975064814662652020993818624 8899958076715885689328794043678720 -266850865665392414931193142672621568 121826835222120197321524382793728 6087093637193867887698553629310976 -38458823025511842356285262511734784 1940627408162414980921802308452352 1132866832610468300074240041811968 -99495475042271143599313415126908928 3395082427885777817313454663401472 4968400463037328862933411675766784 -844012706799104778486278871039606784 8252492674383308618729534573772800 2379756748865119395893281988542464 -992871642111918085471611627264540672 6448296845720584887009785698844672 7490900220120068140229018760773632 -438985914635477848846864638147559424 2675875435272204920766126031372288 48277430952127595477993940582400 -19555701348862989351216216769822720 2427163602148425917925054778179584 3642564765468798360058608144613376 -952180164434437296250994026986078208 5986665304214370454042354412158976 2374145189595263669121329515200512 -356537562891686950361389720957616128 7544022980193520948657468009873408 9455440710906500203322146153299968 -897576209689767316142228450385592320 953974425937889330088374274359296 3590906970496928103106098470322176 -102522991545105475971268112325541888 8416333760545728173627408534994944 4879044505339448244471879415365632 -177262652268361694759443016527642624 3458641302323350203619313916575744 3394033781333766595692980059766784 -713388256691860859145423885531348992 6687479300573891625849202245894144 923249264393500565633285192941568 -619576601191651489252122561836220416 8914702160315220087302262211215360 1555054696514771635430706840076288 -248839591857756723620042942934155264 736860333742584591708200057700352 6668455380829646912592930274279424 -400907206014776157314585074021171200 5508415419935057222211970078343168 6658496341321445215169737255813120 -112147922409771382016132147142721536 174984438197093608453874194055168 2815599826442170049325184243990528 -288381840490372027916113041789288448 5372645472810077575274069493809152 7196147135666257370183539026296832 -330420004979596685863899168596033536 901809545628195460963589345509376 7011431670159381340362542705278976 -638837182429975979905543521576157184 5315281105803065071831063482859520 3351067100015038352354640530505728 -385612449996901505670500667409563648 8938870976864825913401320851636224 4250551650350355691574104449613824 -584314714648707690637473545489219584 1079946964979964540468874715332608 8244415231588236109220163526590464 -554965620027959038948254970258915328 6769778487151588437548009240133632 3179188117397406230670927745515520 -471039538837170283128457023274876928 2513461482549303422734120142241792 7985201445276833287763766779314176 -634546749045808349250609716322631680 583118162097936123440246535749632 8380453385053308095165715774963712 -683056003766175669952550447976808448 3301356702346647123088847918858240 6374912396377274104141673803022336 -622402305310011093609512921194299392 4072675039887292773163010839543808 6290385793908955160661411296706560 -269270443991613001025159733945827328 1450996485655538464910034039996416 4267703995776648183120512772210688 -871309920191296545707755416227676160 4326265430106499386343356874358784 4118114914642901881392512207159296 -649842655052016432932464530485673984 82163382466714403202293116698624 3206160537588328099993096273526784 -696470933579545377990462620196405248 720842325244222629055651335110656 5901413609739719074792112427892736 -871989962126746271614620826999980032 7643835371874691083105329366433792 9793125991489449956883354743734272 -166227795703799962624055788034850816 2847878389680101714734718411341824 7183110894942152274657445163302912 -845082364254626530164226127386640384 7098073580392256283102985322496 504666282939127744561457815093248 -396694822643333594667306617172656128 4877199079261799543306329109037056 4879223783893745135759574062596096 -381901320892250135940061083245477888 3759431829530457768179247217639424 2680770093637472539562882048720896 -5696087312940623866480992190464000 3452416517291091050142821014044672 6226495428578116804490398258954240 -645805653239417059427532204886982656 3489136191991499979149873564876800 5356745986559665665080087252303872 -674557911965537090573106453380333568 8231119129182350195419462131253248 4718925589629513721803941800312832 -159086336108537715075989531674017792 4308900476799233632984406681452544 5037357513683890997984195906633728 -736051285034318191219188068863967232 4012761885188527654162331435270144 2992659899627718232660434248269824 -92287261252900520346229857423720448 760874836487579994131006295638016 9056339574109888179501343583502336 -529867239332600106494468867865182208 4966744783160805764547060976058368 9255933200284647548543198201643008 -478115631923410037895505320574189568 2044807906814236562927850128146432 2484583911512634778043070604640256 -912301230643849279589854299356659712 6609194003479837850846023104069632 1516657468750483545933276780691456 -715630913492957896773485765205164032 8762294391994714128471538010161152 9268133643278021187375810629074944 -771202051629620000814917154167062528 163735257352599807881552007790592 7906176460772421808291340508725248 -442584334900619312708321969140924416 4156067669244435984718546159534080 318930894913753819882503928807424 -509721740851447985022690226927042560 6252723983002697795395533739655168 3671412256954304178593156038656000 -105223264824823315671062720335052800 6920758345248486448049449179545600 6677169087594632259559159075176448 -13509044020335424331658030569488384 4448038238751165624349632942309376 9191028185449967732472470529114112 -428729732891621078296721109790228480 8377993012430637101123118812889088 2454576312489500924165907550306304 -488294682076010051333707927692247040 1428437430624635251357462080520192 9813550681516105080046888803106816 -134941237051911819155483146785390592 2752763824325451505842104542691328 7136485832731800674696805193089024 -222027639863779978088740571947466752 54056912386333781947019151015936 397235564576040992567646553636864 -516035487822839671046898090426499072 550206047373605513430386203426816 336379407899397601655091380617216 -731645776417949780150652506042531840 5569447075807506775337481384493056 9777208471322190069323940895916032 -674482984520813891482007382496641024 4261890572549679166085058403500032 710940449972976860050844886761472 -59921294203297700064775269351686144 7275382181334348444621414961512448 3230652498924676003171493516148736 -899088215960689409675186480319823872 9751498621088561083646253486571520 782260752750470156076793959809024 -168452548867469249641926153268625408 9974170817001797468081339754348544 4851721891012719843861649124491264 -914585809365317277996417359879864320 6592550065020501510318340565893120 1600927298046940511732012513492992 -812305698273912313946642298773176320 2528227710956414385093251830906880 2816290397922182127261193993191424 -210903240096170054330762798317961216 8931786628260812263315498237689856 1479879827005522817464560917676032 -289108212783936943436992546483470336 1119560833582285087328455031259136 6297044725648070242525411352248320 -648246875480804172030926753867235328 5404995215351229583367695759310848 9684236371481394294485454357004288 -22957233241147746445281500657090560 6003574466358078119298607895019520 2267868060904299971451337717055488 -595091178674917056073381882728808448 6361846547377161169137912044847104 6884070638252278774357595583938560 -761845847904754633540868916776009728 6168961802359568775824055122001920 1254196727765392255691094363209728 -389776992794159521130662863933800448 6108760880015169584498273631076352 234154127731216260185971146883072 -551602057081881768706800118768074752 3020672192034725288379268181524480 205059418850480696867761090985984 -58727608164389690816388181000192000 4731540992602393410814448697868288 470013936959003467054578470486016 -473865406741950341623220794302660608 9369070750093645457389844997079040 2582495590270801221581422842609664 -509797327871217303624229227373527040 4112410525508296487167342600519680 6751766754681201471728989356687360 -469290167163716420783850770246139904 3467314662993292022309008808345600 3082209579331549552267717502828544 -862458334833052164639888577981841408 8596107679151498791284872006598656 7253166888509270404812202460577792 -260985976577812012682176258646212608 6319202674656124081314510200111104 8228528142579244991055659662311424 -531660628342013547961019942674890752 6383410547942293390723877552783360 3500252348828571466372903709179904 -387236426872071787128283303793131520 2615566363077935646567691123163136 9376938584529727348485010332057600 -32216157875621445909353580317376512 6068050220556726768981059775234048 7282977393030473640212985821528064 -217039998066929198682270200607277056 3245121321026411700224443421818880 3266429704282595409887397909889024 -484972142558761185010452956669018112 4277805192944327647966952958197760 7458258677268850594233464706301952 -637559802681384380083377279896387584 1821413662910620214100749751156736 8551583746263267883771698679382016 -793384339722303438802506306241429504 6255678144217210877584397918273536 714770383487483772325092892082176 -207463290549440120974476651811307520 6188415613676398611825651649347584 1229628869873634785748037694128128 -121278923446853770843489938368888832 7106601064898083345907459309961216 5005935500681875933433963799904256 -760749401546000511407295523241066496 5748298396541880742958874748780544 277816435419411837346633163472896 -783493399288109377288769380515053568 9855355687915167370460327783170048 1247845115820214249501376661946368 -977698991633220897511221511057309696 2895826349924691759422102105489408 9122230838238310114726257457364992 -756453330755021134378184012210372608 1266968263626662406061414917603328 6084216239910993544904151341727744 -733864448986584871051685084599943168 9391451312511582706929417867755520 7287075750854285700519751292289024 -728477459742585798122242554353156096 6440200708996197943315321707298816 8098773042043308393287323918270464 -184424268412913011529135834177470464 6005843771150489098218109734486016 4055448271487091830235843407118336 -105721161121672377084125347674324992 7974987367193239695957978582614016 1520137846774761070657873222041600 -716177509910492379461899360850149376 2780796841609938965630899149864960 1174709102699479705036494209024000 -655029306247511674798607005036576768 1602641798530391779816334786822144 1841830955485890312272328513290240 -810484843456043486699687796755398656 9886064345983818666563109482659840 6947582326354103379275713909620736 -732031768976187413806197100274253824 9843541950538747617151118735310848 2554832732081771281884985314770944 -308032044613983042752592560617684992 9940928101731519431470071322509312 239577790563843375390826237526016 -638734310718348625475311866048675840 6596714949463976117317711542878208 8208835542856821721903945060712448 -408003002336860484796281249159184384 7869929880466491444831541432156160 2421254983523686940775292889726976 -406222993056425767495443256327536640 9351889855557297766396297738190848 5127879654741651417357907715424256 -201515249546122300910903619158540288 3850997063347914138282051040706560 4606255485173932383320207056175104 -535840047284281589803638689330364416 8022570752814802355302701656440832 1209542624544178393246005857353728 -450247535934163490038676742549274624 8704098909172429591440951519215616 6778775687957468735226558520754176 -950724344969565837577426133007204352 9845038312319998282013579010899968 7398629868569157315089474265284608 -399982415347036552352528505891717120 5579866648306747951319147184390144 909409612715026231240435420889088 -788458957656387059907983292980264960 4360881834025809033702910585733120 2574525591214963893744603341258752 -797439690205752193006654278103728128 5298482641674734104808078977269760 3935719500049260168532930070577152 -636155464852840768055455905885454336 3288413185633089833476705025523712 3331062828667444070315464968896512 -174806061768154474717451799901503488 6719091303769750361207419934081024 9408961169694367558147111894646784 -829845080142412972450297286695583744 9167159344894120209160629097857024 8229203782466184337492514663563264 -743743389866994959733248261202378752 5619322238061072051887262098522112 7952471366084278966422119617921024 -905082637467454295384303111533232128 6579073786003972795244383202967552 6173663137872371300225175462608896 -203277685811331045925837622881550336 3969566006577563471917980426698752 6812296733316587084092569733300224 -557467510508664441075245442408644608 2376666536493494887478672748445696 1489725144401074015687256588681216 -162421326198202954673108336913678336 4917773472646333435482156751126528 5927456186560225539780696124424192 -238131714134291475031288047611150336 9508287517185570626756400637804544 3437302630704028147591381379973120 -660155850782882924633126411675107328 7093194075583524172306125682638848 2401547040845050715036061114826752 -864970447509444218719711366186270720 8316562310559420390576504671567872 9343692779145327819654583694655488 -361118977225731452742995439205220352 2456399305116701802893100395266048 5587736920397522685538259005603840 -789950055182460846024281198142947328 2184147199586642199676135892058112 4877585064954265004660196034740224 -524120133837079152309167736066408448 4320676064795000233251843132620800 6839387324304343053977826646556672 -685907914363839686400804967107526656 7641524278085851621420399853568000 2489059924184452860788212693467136 -271048734339305232129860718521483264 9647764624943460264834905877250048 4438704754625743855620350634098688 -22878374132189575539736652529270784 5775869932180193315159850509926400 7737234072071003055559261865115648 -72266561346066454878872110769373184 8471105711862100582422639074607104 4180729664972211552874013850075136 -337710192631100137722367401806266368 218637859434350401465276426092544 4080458829555990684240858931265536 -408627981234521067949978064303161344 6484564166322046064527534444249088 6867614863349964800465373933600768 -817622499438069315340350804358856704 3895483671185966347644969517318144 9858549647550648822378072998150144 -630965736629468823052324792199806976 1858626980355331549152812120145920 9575666998091671378654698422665216 -863929836779159517836109885839769600 7441495620961744513435663647899648 7774654927089181121858435916234752 -550338300744232114289241847064690688 368062481491861379746355340115968 1096709844759412616542590685151232 -686051344075752682124722248653733888 7580683048345670780691853428654080 1748808944616181559500648094892032 -205361536666607953792014484227751936 8920107362449813994384887119872000 8269327430419373496949550509719552 -517052441572984661943599687905837056 9198490417632635831008360130412544 9967328914889620896839889301012480 -591915385584086853998383914916249600 7794667687338429143252606291804160 5542933794700833771492379115651072 -378596736537764402956909007031238656 7564267093007835291744859733360640 103397901563869644241198909489152 -894601871210747237698595920208199680 724483192644736030705078721576960 405568581634306503628209484988416 -650858302392622072959487169676705792 3833978808804022381570210519842816 9354904315616853629631505551589376 -500442501721799010054265273921306624 3636166105326389355431421630480384 6143691956685833233926692693606400 -535555164724811778804029278017028096 9815627174568562139149558104457216 9907152657890797839321517726367744 -377327510719734566693502427116601344 8698527505656103847639380222017536 2912536771957934920097788900409344 -1334873444457796450417864087699456 2660215870319211691768339004129280 493658860790310122805432407818240 -84949360308079431613913718723706880 8396259606948754786066511117156352 2893003803548743906018165509849088 -991939418274024905902132387720986624 9411958564410895576294870350823424 8623734770359159805562891976835072 -585947678765286041008852572601057280 7857311613057729718772617386655744 4576289773448387030798022096191488 -294055442266613702131133990012190720 8421180699939858108494191406350336 4885246043352224772830587802091520 -257297961584286826894264412470771712 8320558227486444601162576353558528 6149795388766792491276373548072960 -377707994227095031167936063644631040 6267750463087835299889613516046336 2341538661516612279424402916900864 -719114121280069032698039378628313088 7179481852154329780205451562975232 3689558893876126105465418474848256 -735013025966294925334394896857956352 3688263714516642969622617373278208 774292098450844152602546149523456 -339095013395216060724517715243433984 2072622871332048916466321116364800 2638131263596238395130555047870464 -594976526701014004384695207011024896 8329188901103616638787300678959104 7768932107936656590735815580057600 -81464488948636472018879017673293824 6187768145268907586049249346846720 7142860969577694064766415265595392 -31076183984323229970046288331276288 9685154901507616931124389192138752 1137660285772559146250480545431552 -256923430925898214383090990814593024 3642083948195319464941823023120384 178175737552056056373523452526592 -679615479915281032180987067493253120 6066302122178589328313459788480512 1795532181827608821945451654676480 -40392495718772286528779431947796480 6080461945145325040741906433179648 1542011698433069589551958171058176 -902032686053528779779422122466607104 4828734652982201520005534762139648 3063896374158826832719656221933568 -126093374336293183206026729505161216 2676413292457974899053391356362752 1455094313896375069892663486447616 -943468550382823689309631099103608832 9045740006184277288202047483543552 9545136350599390542982862916812800 -720664661141337052757170080622575616 2673058673023425433503972903092224 4544688828842566225197339254980608 -847177416767743652673922759733018624 9257024306762979029848140476841984 4913464147893467782926624280805376 -892949327609052033979721307402534912 2322844851124480615104027918598144 7406170100377077391847825170497536 -358088537356218713926642469733138432 1600541057600319347749901983285248 4102802806766911430294055824654336 -518112750484294623165611885467795456 7119190568279989493099841749778432 7761727109439565227887443505577984 -791133925868610574132908213015674880 1570068059434002517799157150777344 7046889095673499626683782970474496 -130290478699548865027006645063909376 1036491884699686861460705967603712 4185037928954924796076701431889920 -178694907533865473622899668784513024 9133684380606629133732141623934976 9145223283266641109427559981907968 -292737538407958794517623406671691776 9729305985787969399202318968160256 782841528772076823884082538610688 -692403077933401110676732588029116416 3005207058250729803102421000388608 2938502148908375298259922192433152 -601251990503782363437846679965925376 4919296426315344208540179504300032 2894334175812652125127499692638208 -680634596556522749184212517456445440 9906357261510513626488767067979776 4071114805662069094709096322433024 -840978087298705734112264480324845568 8726369763671683814841896010776576 1180469312919029184409418472620032 -373093468092824395247305998941028352 5388529589924787331371583330582528 8218341982669158983408236976144384 -749852779255018381220211073069613056 3621136542836156716633682752831488 6693408039319051436367598007091200 -294903362355236814608434475034476544 47090172711862297443671876829184 8810337180767905465546752919601152 -887893113309495156188968044975882240 921918941280172644049102372339712 2461901162572701092119607664181248 -429103133491601496296703186811486208 8003593291772792370731391964413952 7814491541135076426747083801755648 -334375469073590333244093507611656192 2005913043634556169365465755287552 6669114756732937733592387409674240 -151957477216751038781981782249046016 4095219022134191160356931287121920 2866336914748094226775408103129088 -355812567708373250429171587912564736 5315636649575823840960186643644416 6398448055937352519965297547935744 -698821678856114831999085888415989760 846408057019390427708397002424320 7827822119573314599784382625480704 -191391800390182387752952330094379008 1062512008151068418867264038633472 5087966266002678873784211854065664 -753628478047816595144670800439672832 4565896280120194442650047402213376 9232800666934147995689962275078144 -627789493145460824122557995423891456 8690281020170497114569895254687744 3914751813460070145041564440723456 -309400624847807724878559709384146944 637694451052326890973196388925440 9449694434474306884202750755733504 -741013109415003652770182752693649408 9980033789045123858942419215056896 8473250885202854836908073945137152 -326224693314739148957333667792814080 692708108861383544087643630338048 6071071063395684268696570834190336 -54706002210686138857772334790475776 1884877662721423440099089559060480 7468260775355605245218892871106560 -125509868955702444497881077433499648 3946042286797602655032178982780928 7360848149217184777507994354057216 -400539413376332637351557024383500288 2763175798270355035774323924140032 1571984479129973385804563552927744 -818505329385072245847536241607704576 6739127304933653842665439347343360 3188641416323994487362912593641472 -835166514555836984662110853656477696 1698114360730545163871511904256000 6824602602914881151839291345731584 -997468217977985564661067255237312512 3471962674987861236810929970085888 1460694235842637690518546029740032 -867582992059636466477761105074585600 6283217102737648118998059647500288 5790529518207450144878739054395392 -778629839589856346855402747738456064 6419490124058894461154384664330240 786921309282215675526735768584192 -368901622663659215104624610609463296 6060022701156204064865903863398400 1299310989399449850476739862462464 -630154032359152129776360333644922880 2400786961693857151293690283556864 4778278260298138235701520221863936 -206017671200194927435005961588178944 1022216884353276273808461589905408 9882039083243968965273488766009344 -63944085880756419270795742909825024 3020265281966031182906283817697280 7224268394544582605751045018615808 -375282737703821245285550764563890176 9436160059431949469606632728035328 1325825725773148959727399427112960 -270050531962927066821931761080991744 2566502885763593977626574993752064 2089432272778165829949961462087680 -188424622419273192840700900780539904 7129371774498208754550934192783360 7330933533615367784022309542559744 -522539954236228605592813313716125696 840761700946181930123435177934848 1639203677867613291088250488750080 -807911413090508719862010357888319488 207058202368573479107497222471680 8118168137159197531464810922770432 -621559212617158275049266877822926848 2123041179048102646202534690029568 6489484349700093640652320269139968 -777012343107953654000398222822998016 4641305196207558762075049148022784 1037409998706160244617636984389632 -803624036948969483143874604118835200 138332029959511078127968895107072 5634224431689769808191728925016064 -918775542208977017618389397749628928 1474719493599404098906623385272320 6630966327559766866262667397431296 -419892767126776978779462322911969280 9713137137334551107781417005744128 980086545766308090664301956694016 -110816160508365632303406694010978304 7691399758058005268171505509859328 1425396642744701686253502731386880 -148860630800572205178330703445622784 3046786404171544646473085911826432 8318082082073963062227794548228096 -659550776472525470618159307871485952 867350485715594753343254595371008 5173634569117781754230869980086272 -279409882790926103217124615485652992 6408022112215419543820661646426112 1009337944746111788746530317402112 -718608805773363603333780743573733376 7163421881184294624359981665746944 8737049663023034783644572220129280 -851461876907818741551963996518612992 3221811776353475241924676661805056 4620637576204261278505704347402240 -940249046973494790806494076708323328 4942066062935665183565947756085248 1367041591573616985263154063736832 -494192855640131864015405192096776192 9203100154317687133783098323369984 7255006083759883740191890094424064 -951251198275822938844089792539394048 9226252807788605502392335060697088 8189217020762013217375052372115456 -655569773914555972650476951041998848 6832934276821133882880499870859264 1180026821553862599979995643248640 -126559732384483056321101761152548864 7687170654220065344421931771756544 4441125577856142765564328392261632 -309437939434048162333546761492103168 1043697727445929043768323573022720 6480014186533424395322854150766592 -114852831698763541078700747340644352 7735375370770251702446320676503552 3685871900910017475896283125252096 -271731927373223510198713057900756992 2019725503168837788247481569509376 4487150998088540348697112085528576 -548821946611055886576595820510969856 8048858428698636239375245152092160 8464026499582441442384552635924480 -227958920013048648976617813514911744 9326407481833284700530610974752768 5378076932247575826624153464602624 -2090446429394023504109115522678784 4676748701748173258190690522759168 4282364803683665305158718450565120 -470833919164643514996074888879407104 6282223517352753584872307405357056 2296590562875144434892762377093120 -141968499976591269706456536587436032 1014030011520754073383322322468864 351892208451536098176258189295616 -11359731885387714202539361013071872 2152777582970599440503543703797760 4441357441533721991218609789075456 -969861867586890688235787359424086016 6703886377169813895928900843732992 2827662531228342995066331598946304 -824989008974724262160357577654796288 9369051188788103724072394574266368 6680015697611509682135394221555712 -720382321630624725097625721950437376 5636992882420004929778572303794176 7645011114063615762693618772475904 -824079175887801104804708857480740864 2785524087475154684062234639859712 707846320104345848417541548933120 -592216646079937305673621217315127296 5195304949599584606761455164850176 9210768735926593576396577902166016 -128953514764726718146511559169409024 8682059158588912863928544097468416 1950581745836478008367605069381632 -418213571257807161810632125680975872 9366537928585628496944843857068032 3560605161136738878916664181653504 -988212763109343560480947940414717952 3495726638440442168713159087489024 2572423758834623612006259476135936 -244248195174913390824918777258311680 9130526367532587329792738339061760 8804349719716978368611064460869632 -862999125307471103386305894014779392 6698649867722850344333306658553856 9623278306543352379933685310291968 -533778502679225116117344562515542016 5441444048006320344550525963862016 2490769219274293533192671947915264 -583554052036116747655297520216571904 7514013393267974545597029261770752 3544775547978465614893876730920960 -536255903318556957452921127529611264 4295142008504676409354493578182656 9025856473717698069041670590038016 -387418188517936110221523130601439232 8376777221946581763583021110263808 1758891200653431577561962867851264 -983505214506426295452652020277706752 3078445285141799793603732830158848 8712926356520528277201129794699264 -101466450671869626448054014816813056 3741095322082845825625443035774976 3158830787478125686138282486792192 -328143733224433498485722300735815680 936660091374369207572402700025856 2667720726590220650791007806291968 -715138695858357487435895136352993280 3210486123272427254307178112090112 7260267456602960446512784516055040 -683746078356015548752236955618508800 4058317598940476422605727044993024 4537374077932825466995223411294208 -212525985547200814568217056097861632 803229863926568538811641498697728 6137274746857453166657868524421120 -151628412315157005145236890590380032 6558608587168466491515527059472384 4014651327657106906652246928261120 -415079526496224662996127014583271424 6756572391616124381992136239742976 8607360382996126407829492414283776 -659168034998484061561404210808881152 8453891065874501543520186054737920 2867229110693127769756248714510336 -732568089827500607678526653733011456 9795399344208357143480383311970304 7820268947127147058545991950008320 -820722192390327637626405893374476288 3741172769154028366203806667505664 9208376880878413278369462941122560 -138677408222041030380390612343980032 6038938315903469404718519493328896 4658783099499995304486226498682880 -592813535024581743971947275417026560 7347324746829338354545992035991552 6947969277567969914003448462835712 -128217519884903500800624296347041792 4343666374469174615660278208004096 1069895786299596946228637060825088 -928788273654996712998995574350938112 1696668049720921146911072035274752 9662275102559720148861166555234304 -477564142479795522216581879430119424 1566370669494523337535968828719104 5170631420954204557255284201881600 -797024671172721934126794439745601536 5390720079918715795292147006046208 7235278960458726818909614176731136 -606653439999708490691224423941275648 6391991333501641532818975067471872 3476145284786833604481925462884352 -571648489294259155712127891585105920 5437952715797993803094137484869632 7401142781821141391979781069733888 -977549001327561355776283758741684224 3497783625442764668847088654614528 1020877975641333066565356781305856 -60457374902786752963861555244433408 8492252756836286693810430707499008 1861407986384181474978262230761472 -429821158173296485405533613372473344 609804245334958363870819795337216 6735716789240076464821451611963392 -648566507802632076550657281777205248 1024303858866412829183496991801344 8048671838628476649532995917578240 -128104521053173915807542743620648960 1163999334057153658223375736111104 2380445812875113505984248402673664 -429174176817673405466596872307081216 8567511892134546459806479717236736 4536461072623000412638287860072448 -124643877303220053775547827824361472 3835572832869640647319476833878016 1619008708611342685331304606597120 -861340485930700104602364773134237696 1585253242095912079982205251616768 5110592573682555899797218976071680 -999072272165544030998056056494489600 4775507870816071150686928663216128 5081583630351824263532742958907392 -169516861973342451367928890889601024 667674328348292646072983499046912 3249476057525212618620775562215424 -914679585874722676133618230201679872 7042778469589543097947284171653120 1469365186485591406180154386415616 -699994070312238864509933254770425856 1967726713730062415950538183016448 3490572715441427809118751689801728 -759717195777872332890082867605929984 1120793408475724810970688013729792 7614614517616379473956381678108672 -128136719791687444047995517311909888 5044062630900621689850710206709760 7069256631517664779462906147241984 -688995793773471436202301832042643456 4781292298233119698013421800783872 2224386517717541678381489209737216 -528432368327750575751307044063281152 2921874416124867590985087547604992 3607825643923299830605250226552832 -691469132097821798485773936767270912 6439951717011156187387876553523200 4843452892245967244666579946831872 -161892875415119156532868026298531840 8528914142116943542457092093771776 5091338784267968792820115262406656 -76604350555823133087107104039239680 6040842631657303225905296672030720 5812638816455491366906269523771392 -646909216090837408124665706733109248 6560629745829188320901778267701248 630307926687757105233920738197504 -917836320574325649541383707225489408 7208910836533514225886095233515520 3024455628457853944351731719602176 -763617637624317995783444433670766592 3275214809924214542576028995289088 9655762508440272695219543156457472 -804411368388880735318427169651163136 3002830203864882357431853754875904 9867994514435191436307594257367040 -648967068878546989790244956863987712 302889404560431083001956496572416 874611885479399767393320522743808 -125087207121037280402282551080648704 3695065683501116295228588424167424 9030233906130128005728974445477888 -90845676458301820547439371185291264 5182419650184108864659480398266368 1021192820263732730315340083363840 -724262629168101465630518236890005504 5605950156060679421335606896099328 6736060000340045437664612904337408 -509842674161972146508617705259532288 4517536720182423935007526980943872 9727363095476491847450109853827072 -173151491766643595132264296623374336 7216023563824750218136274111299584 3023314781373444360009011299352576 -531905658321304824328790704700522496 8798007642025552065915931343192064 8407626140364433091521330206998528 -664377671644234424722381612949438464 2795491014180361826823054196473856 533082901912595804067319924129792 -620205074085339654288800703980765184 6017225992868670300023493222203392 626322022998667960349399554457600 -44344932625284713582608942689681408 8020690962819814359998786621669376 6835610530071382783120184413519872 -647494969168210669726747952808984576 9881545950163964785293758732173312 2112427318174994149529860979032064 -253802778778524034850959453283418112 9445946947665030017583716128260096 6011410402159215417171453421813760 -965969936208344169276348375031087104 9387805766248021014742859975229440 828149934536660961890666025058304 -7169918841249179734257113407422464 9710234672500200000750640986849280 5946590193457963386049112462852096 -483215502721318299339894322242781184 5083016770544332523958901692956672 7645156409383594109386978819571712 -66902752613634809208606343190020096 799686843047104938960783205728256 353164407911331372775954811191296 -529175475560228927716542503010172928 8072696409866812274393430280372224 7507181378464865687298333569187840 -847227200171385524308904033822703616 5736383595153212420778568903032832 3938643345272933623025470070063104 -30097130324873343618770967805820928 6188248650928624123097140397342720 8355690139628385782294915284205568 -220699288227783772585102466082668544 9290343127400641721086980512546816 8061702367347085064689033957867520 -347379226857155277013012920047501312 9008093430775830383970976551403520 4447586819493505523527763653296128 -383461798477000280872840800942161920 9670689680632513324408648327233536 4963582835723494243002639320088576 -742332907642723890272572340959182848 4890641686657772648315598246248448 8809027320068874734567283457261568 -492324498235494434276205341827923968 9379330155591850604999843476668416 9977087019177168060230822552141824 -893565599902434007640817339570585600 1009672375249343334576539723366400 6307337871836090544596738721710080 -510656631344150471990666463725748224 3035078630692043676553107357040640 2364139554694523120346049305116672 -32243477227833448610789656553848832 4264893059096589560457914610614272 8745952075137669976835259675705344 -33359352170513329875158775904600064 127396576263645399882469101010944 363428872955604335488015280373760 -250489294748323578093965616898637824 7441154657174954838410296108777472 4490798615137624775129259401281536 -728850043431505902007618681509511168 6262241189709985552004313457360896 9562371698493381768242837996961792 -537666194461267726157203417415548928 5718891173235037088441015973445632 7703759634314074717619071131582464 -27683199065491084541189338899152896 2231181698664302901546115433234432 5714593967842360622074358631759872 -332465465475567985079871271153434624 4292685754481960936708379938652160 7447092543386022473050576971104256 -991177239925348992133336354103754752 9029509403618793569093758411079680 6516295700333011364032411338801152 -978837707110176009704877383563083776 1181552401770862633614140061515776 8781479418237893278542810121764864 -432255478768577460877694376047804416 7579414350363131098504184213798912 5729635007994790567874090093248512 -517955954073308910210196424930361344 2427364614147362607274564341727232 4559572528040701822591136025280512 -502874659121047142900157595978301440 4098627549925355989017643328733184 7906475738364570414872450343895040 -244888401555425398288026458484899840 4009353550791286206339849893445632 3198392098584868062266383700852736 -466253662649342358457781434957430784 4030016191079211972939320429379584 7379576609116912546801331826851840 -20279782860592104588104614287507456 9938012921937160315129996590972928 4224465129260589208111378604228608 -896388361638998040885303022498873344 6402545208747669952297267447726080 1421824805635389203944736034914304 -614150811985411017634269657154191360 5555872864334406940833870749106176 637719914704874958856777319317504 -194401414940529053901443819456430080 6396752209545856904092713463316480 2668342201762187144553376623099904 -879717327690448545544049964903038976 2263052476748284786822175592022016 2379932785352929100728130160558080 -647760063381214418979665851948466176 4544169189810327722223961274056704 2821699687976612944887098382483456 -240940647738575427969437672560132096 3978256906918104875435063831953408 213574000165367041543342198358016 -982658015948343162094415288935120896 288252026305381179398803597295616 3864880028359098425902072246304768 -856223369225211179285812725340438528 3542846063319581716584583812612096 4586612095026397660447106614165504 -372029922827747501398362910590238720 5068530436399701405713670921519104 7547764550841938678316877926629376 -33133786350310262809055459647946752 4438736469024002645051205490835456 9257753179576013413824124912926720 -444191888443960863611250140994600960 1047414873689072819279132595585024 8189244894441548667710779458322432 -41384398818480476051744100408360960 1629831212322037844740554885169152 8076920424926779080989231730917376 -810070711569589917472874883524329472 8403921673744571703685607724154880 6705157565010037418988874128949248 -258142903250756700996722150227312640 8897270774032838165760597112651776 7293440788526720833759281701453824 -232368983668080742512422688152092672 7949937270493508986527186849628160 9614446309313483312503190412328960 -467198895718579527587631583197134848 5608808711962499878521342911315968 7756134454515197495449119400919040 -66770038126026582458246006554230784 9274648969799658177865753022169088 6564802644846748386280718722924544 -101254656243532129199483596553846784 8499237119064465813497256851013632 838209706524669479129384392589312 -589530632165883489947709575050297344 5653702008847619801805412211097600 2851081326358656404109309144727552 -829149472736695840645661950348361728 3305676697297501292099376789848064 8220051128859041779498452665761792 -853358085493651847892369875379683328 4719343096326314015289680779542528 5732539212082225974744209831231488 -85333622123412521709250690383085568 9464635554267752584928800947568640 3885720516509588153565205407727616 -97843510815143452470773773064208384 1323528585690342887554855020265472 7576643111975300418641815758962688 -936085506183646287823272180365393920 1096132760556573140898443222319104 4707280747647870949754047492521984 -165354776199412246677251011653926912 8376264375129807064395862245376 8579340459750469090493215325290496 -271531778561080504397537402284933120 5947751056256805755425852401647616 640555631897936335009579874123776 -235055111833095184916226676621312000 9759121163067395057122990039760896 9666956924313362332838800360734720 -411358587558830293298051872110673920 4203747499927217863328161048035328 1484260123853833638278777314213888 -887379669947623270019015319467589632 8623514594603968085014859833409536 2158342264466056161429681581588480 -890303363486624567853655636221886464 6293810125170049721528264326905856 2118058229938416665871539773636608 -692919583752980407861910702380810240 4436204874052356734701419787976704 6180245569747226878487386900135936 -547967034550625983283637987812835328 6293391032776735203445204255244288 9424107266530137411989765407899648 -639749827857820139028022232050827264 3358101453102828205431511150755840 4723711250843346279281078826958848 -122451197587073216656453301994258432 6752693595477219785446141835870208 4870353654149486850249571220586496 -152537556542018567314018852772249600 5067493284376154308361215071485952 7378366922082812562005153856618496 -264968805419466057014310463550259200 3211803504299293321745917049569280 4239813875994802414801101116145664 -99902309944915905918473367434821632 544399083704322161689929862610944 6764630397430323029850912823705600 -505958399080162102666650044784967680 5690628711457198388915801266585600 2366562456419470257759987135676416 -983990701181359809666888665395101696 5112309235543665580413815051255808 4046703214140605661342029831995392 -848835682421676860872894306486059008 8121982139826697292564360364818432 6465590535237320919760766437949440 -603253163456823174776567091576176640 1705104571498538265786726207193088 9231401288954329582463295386812416 -680870303601802015775084206490648576 832832577568362721196157154885632 905549814566156728113900365545472 -957227184316176667521034025745514496 7628386835210982326994441684910080 533338133881909854309046957375488 -338193282858195769802247982702133248 6741034557245039657290104408375296 4345940316683079224931317916368896 -298087205700502710219173286782173184 2543885086904046190845162015424512 4143304696010690452336511689949184 -579513139724534439595420765269262336 3854514884642211067769822814142464 1565271507000553034702557120823296 -942993528510472510534531780767121408 6437318861580927915335933482762240 7558535666733820349879590225707008 -459704983373486612270732364851707904 8910231389821954629149232489037824 404870968810639425020946582339584 -843086366039862675202624751461728256 5484842971012600422773153771552768 4408274336053798058176755791822848 -98745840656656327489260875879022592 861828190420586260546788511449088 3282533232734044975452053563244544 -253387385412783826133617159367032832 658989829257617159781536225034240 7177407876587260149149441676279808 -674585062171572961210142374110429184 7630413122487030579130673053827072 6695420075089157463891984781410304 -273963011248713771516698082544713728 123606330279926525994780978053120 9852215460108644718081671826505728 -434076564078243797727138686340956160 1333629024544394435840202688692224 1916496100899675097916344228642816 -381239860414259377953445651660406784 1895957791562156601643106639544320 214454525054278635676064062373888 -594943897194311855636540300267094016 6409207399419537308497883237974016 5979899680944821230243336001945600 -65192538675087079062817880768774144 3686709537643207928914438965428224 4198719109839691531277438277386240 -646706719451507813621940550862110720 461109827032840507707584919109632 4125053071474788161817967866150912 -298402874313072858703362278205423616 9828266056343989920581021446701056 929998962920867209238155152588800 -933184952365970954610195587393388544 2952415405335110650080760730484736 6496186141967226961003674364542976 -830117041646104593429708480654082048 2753446160209751157385958969573376 9457452015990679883847162692370432 -225854552075810537600017675346509824 949783465375779717782279930511360 866862709981570177926401594753024 -66527655016295898460412032522911744 1360197219522430343643741959487488 8849935298103290160252311348183040 -701005848249039213702973349615894528 5721702272628901057549393096343552 3707844415710823461219391581978624 -480219625832874315954367591318814720 2857615248664432901621329726275584 9448737468028957299948656099590144 -804721399899575069480742306336210944 1853421861483213845806197736734720 2018203611718191796595074755723264 -874306605405842063184373768060403712 1363046991775099214828606045814784 9067325376377292781498438583844864 -243798553355455998239158252389531648 908560370942559178754284436062208 7156723828282309600835356422307840 -577351847660792324974506608827564032 7948051602726806246571597746929664 5233627843377900442072870715129856 -847796307865414840172625629812883456 3521324289293503365136093510893568 5817059206092902673651923427524608 -785996229820730948792910392596627456 3840942109965669599161922768338944 8877548320437492102083874228535296 -186079832141810813874470191653453824 5156066249039997518151905921990656 7207912547710283270073269866201088 -100785757136460272674541606040240128 8894491379879994832575556994727936 6381972791851169074988105422864384 -269440593911505350640786819560505344 4064908931080124524159414963273728 2990227204238248319661751498964992 -383789290902095146828811777333002240 9914682996284821308700921482444800 6854308089141888871505103297708032 -382357982283590171799779320354832384 1033628630016141605054923585617920 4633303229447520178923030691446784 -385370933943562901138337705624600576 2888790216142262802205107053133824 5774143358434721017036717489651712 -324849298535306148765857777761386496 2340734544451609148163861667381248 3789630275362222939784662640230400 -637580030846193645136475945240100864 8397831960534166497787796156055552 3388448017248898956477923055370240 -795681145119473156698645932567166976 7000513994022005303242551975739392 3226712334013336909797288130379776 -988787815067385800710462832644194304 9179236270506121380346435632889856 764696796869557837593534370152448 -860769711904331444385936311043751936 2116741258826474416243126086664192 4384451217409436363182589354180608 -930679551489452126933945598821269504 188656187629894937588488837529600 3860192847655277876845562008961024 -654241015740567291492582306221129728 6428952116042499490251685517852672 242340612171691857554739447201792 -586944949979643044163354349457637376 2867432606444923152536759932289024 9336422463698681601707309201883136 -990314684148476092319823100941172736 2984694320024159708537653752233984 2086698803087968418276463930769408 -454216220880858308005893501098131456 4162970574864078442614423371644928 9390452739702288944996787649773568 -502840235696202715200003248712843264 8766157373902251069981557644066816 5981855022148926402590665949052928 -702560365779862676069218168244011008 7696165337540559366975326244569088 9149253809707921298581593689948160 -693326078357813947216739821177274368 1359668079968966854178804093419520 9830512456410798090383332076421120 -369546913456747193219034439378534400 8019093936179800733015344865607680 6152772609711691406337974917398528 -457091229334538928973999390517624832 9645706993190737202903520605372416 4468102899535938077491460365615104 -912244707840258292199511713650835456 4250466411330915006411825416765440 7846866526307148237675012470865920 -517812507946026851722341483462787072 7765357877666620805052355456270336 9358778656966751783216615715241984 -124394133713923584094585384834433024 4012281078676486681875380095156224 6280268438611829608377591711924224 -90217840594403788341460165948604416 8832215497976660079613812800487424 870231522614243561170183504527360 -684128245525892400967667408380624896 1980093457854541435065923077668864 2514650278939702921566086131351552 -344187258721666497234946126470184960 3436599310531477884578534399148032 5869078873965726507648217052610560 -569774741229716994836940216676122624 3015292685335745925289712663134208 1745936424246889789972693192278016 -621111284210428345741935877973606400 8437812502172741327870734163247104 6926217204037950715838330293977088 -917621628854704997261248366871838720 8478229189182020828972031888326656 1387117037723805655406682933559296 -129129669829057981942572561096245248 1509043001257753827651847152730112 7818634951544683460696304804429824 -474285115459725894609779823629828096 9601256024956977652911966718525440 5802735337017265507291740262891520 -866529168901349817902413947091288064 7360939872369601564958223247605760 2997524086997363200005320105525248 -308658110019802984671594492714811392 9962915531259137095633831391657984 4166518084265080102345585182375936 -320564192780482147033603275111792640 2631447640332055387876808479211520 8018625757088047403660232508833792 -674845039461782060581751306756030464 3136340613838469118491829548875776 5890180866354118798315057760436224 -709602320828270584626624003680763904 9537060779091093680591429135499264 7835825572280492711048391488962560 -870251989017643990320403751861485568 9301917273563872890778735123365888 7931959327863515455082014156259328 -550925036348702695687818393805651968 3082442150723964024905169004134400 3856116777434371074572135084064768 -682117753473914868871164500893499392 4229186586342024073242775413325824 4796654945022160042110639266594816 -933981221062218325729934100265959424 5541393758822527759620128532070400 2006800034185979116666443347787776 -984812189369283531924731813492162560 8282373645992273589324886503849984 7553336767927295766033362457722880 -438464866197268975130536265469919232 6579865446071521429086244293312512 9621151693650007687380474179616768 -935522618175680338667912151007494144 9913466806647279211489203855556608 4351503054770090630580423945617408 -892292562801017524919911757150945280 6568328106136936036736460717555712 6497669567766844377926506993680384 -902448889125374472008095682051178496 2373205457311577611988536324521984 2410194366837914638562822566445056 -406473475041243475355312785679450112 6679879445351449093616671859408896 9244213554646077881411523869409280 -461378368854393289451984234248929280 187091512429515312724175069642752 2422875114388055075689596440281088 -165252762798958689901170673485611008 9477379239420576079136585332817920 118544207211613306924470426927104 -492381634448551513556081930647109632 6721483353816052656473576717680640 3242118034724317720298585528991744 -898743605213816814446345032224997376 6232224384913123405359963025965056 4815990312317536082405947070218240 -268549111180371381669920946610241536 5192670669582448840157158640189440 735597668536543254388503195156480 -538363676145865872811247025159929856 1237858104331315065540273074339840 6726727484788441495370303631523840 -104443657462093519213313300499529728 4590603463519866167258641938251776 6711303576685368285306457277071360 -881048979480904649842630541759741952 4317457143462244455097742653390848 1355824631739267194120751082897408 -113587667425583781081297412287365120 4749296443094753497193393313284096 5824530321674097054674015643238400 -329128331975118507204579792298967040 2422535120779282708191141714460672 1958914831964001694730521944260608 -526130141140461138654995386971717632 1447830479530290795245618811895808 5423008014696594394211239099105280 -939797270633147945805355353058050048 1766380055403975512842857271525376 6851363061579431243390194244648960 -623383451625041321305499082086678528 4139291968650777749565889161723904 9155289860158626096415452057042944 -184036270459852366605982847404605440 1137702044088870171084208983769088 8870636787777679121882730087841792 -539052893034404057869062875744567296 6438005642941010188445866329636864 7380756497533496911421212203155456 -932588488669499837200703073464352768 3055779237728140020489715288375296 821191379859106468991380454637568 -959420644132894195304373003889934336 1915351113692432417135216012820480 3431206866246662621923273787572224 -461097356308600633390965069359087616 4608743565709919034034655948963840 6224959861302670758548466498011136 -613282330189509996106676463583887360 4227604110612063004675210580328448 3354318612279520678422480410378240 -566766597645461628715322681247924224 5590535693223422294032352827932672 2096230580623988268402986025222144 -624880429774694622747816290345287680 9654356511241374691051245880213504 9421525769686818118366184435875840 -772928013374776842208700224570916864 5448754792431119699375895791796224 6303280489439668705611460049371136 -531222294151334591447318826122739712 1051608508345552508594560188809216 5940193094436777160219978677354496 -342290284140236595405237976035229696 5511697278870496057447081068986368 789504454786481573090343019085824 -799536063553901620477215002469597184 7590836374779528003214035610763264 4835261357416663426855148267241472 -539174597860540148442464551144783872 6914723676338933994684095320293376 2442395943518381115473369220775936 -254553543382806621047184997935480832 5716697303036106960960342921838592 3722480730143309102324988763963392 -190866757417436628202225771005083648 9816634167210248943119037865394176 374012253675851594855736751947776 -468264928062131368923004064627687424 7938962000285577270956320742178816 7862764511192370786229767613972480 -339743330765913192146499859403243520 564812822599342282994203850964992 2682674498379243710865908434993152 -751091280830765438470571927850188800 5723941212279891246556290939355136 9231637693356440459819623250919424 -591388327556491433362551430285623296 8331807480452609511045873881055232 2105264857830719591348610485190656 -561569208680405612749138195422117888 2517798074620445185601736967979008 7837109599405392115084519446413312 -494943634044452321100548697902546944 4935186947732332599699168756236288 2561115990770466590131077423038464 -744354833994474701735610498714435584 3314496263553419968193607095025664 8142948119447120819931149743685632 -699573454052766153417623831234740224 5433294767343772254668667924512768 2006259146798109613509894933053440 -213802201347161591228945489431887872 3221637959551144130037028415864832 5510457375594930564979157301723136 -906808214449743078996772756821901312 4046585373427999352514673010278400 1534176154076389811131471947104256 -212747798974567005638245021474881536 6653898347814189168310711308255232 2523309493957901783109817226756096 -832253693432478109460430574749483008 5724285771188484693943427434283008 7987218468471332778487508495237120 -490700527650470929010368804590452736 2802547221985043461258618739884032 4475217234046564139998627898589184 -293287108947375921848662471464714240 4273982314587327962296700006039552 8778852182616824798100041806905344 -601242677229796819011004402879168512 1054110161904551366931799831740416 1137923099429942944411717258444800 -118287218214209287777182444066701312 1190040220775157994395212061868032 8553347451664995499206856050475008 -125925055449968870959249243806629888 7389842165611454440049213926539264 5201763613839539698710612805681152 -255523209087807277512128160388349952 3572578373217412705906120957362176 6321327410157867691078105497075712 -411566952401705407871141719845109760 2479863789874184389460490073407488 2117155810495258723776020449591296 -459038282061714075481370677244592128 7999545147434416051767315833815040 6414692910008779616606935821844480 -638935196385749694948310702979284992 7542631467887831558648007793573888 1660021893833249035397162554359808 -772029857034262795429748998978666496 6165429511590114795086939890384896 6100725217059285098403803191836672 -497498103549415638706597070901346304 2442501697155114600674737623400448 4769760817599784769569979407269888 -516649546004725283456422003685195776 9353695842753487579239145610936320 2077768939418372175673355623464960 -857472902542490593511170690269577216 9832108887450991741324845641629696 6003627395379437156684342363160576 -286001554545139259447370415115075584 6120853065700270933135898244546560 3262964594040446149912375561551872 -665114210002943788533755744819871744 4810627190874455786898787665969152 3033811044078451667369590809165824 -72955900300392459384552683990941696 9615636065120459890189226219667456 1084605638015284262033462501834752 -752534761984305263236344692141457408 4098018996921174984832990610194432 6432662959336938231817537285259264 -93898994122192112713122272709181440 5007108826738985921400983496163328 2054505566409200110249677739261952 -190730538198706576658564475967766528 9550015469562111700591417342558208 6471212692583494053676739970727936 -620213049964247492960263112566505472 9486381022392542256357209490325504 777941620519230799040467353731072 -318279505328068212825462024848801792 6165045206842913164927114407837696 9279548546520064327151241744351232 -560697330579392419689380981669625856 7615616986399801443489841141514240 4507576564648663806804282992230400 -246910454578171053045540458191650816 215991876076775242586063875604480 60671726380942207368743041892352 -230844400779202589400368449465614336 6596010691397727215183847671988224 1773425700469067091150869838692352 -620488333862719104255542066551980032 6186119138262671483630923794087936 4212110502892097876480295998324736 -387352687362832024247819366096175104 9224938004159148830350130653691904 8613639027234420915122503694680064 -873302973264257668585735774586011648 1191153185022792677857994861445120 3074654790508750904961058803286016 -717413602923303380694088948958363648 5172309343939664815077601147092992 9395609078833117419751712453820416 -400358358225643253820659230931156992 5060966833247634290935193361448960 6085535782315517160184035625926656 -465621301496991645534989331852165120 1683781468513667180365171142950912 9743781801686980001069250822275072 -944215764250664220027560304188588032 6352499270655313893862716875997184 3078138284670651433913843651182592 -848147936804166092361696997969756160 2146695683231331107153076616691712 8328732944173837604099224206573568 -123706554482581463859050600770568192 8942276179706391064703863474880512 110883127460079145004026082361344 -996672549356362530911784728547819520 6405073484874543926803571513753600 7950280837701209568958119120207872 -951040630056545835056955973263425536 1320490048176003932177914073710592 5886073440895096957573633937506304 -94195417867181737173552188591439872 6423912845496796173023966587256832 9868124428409817910482633370894336 -421945723663203545261880621536378880 9103194734721230887424881816764416 8298005565996381811611269876154368 -771176380509438536580287341132775424 3666104213544604505542983648542720 1003877142548201773335053126860800 -617629970792382724173702006571008000 6239358225473885756218127203434496 8738163873725718467037367076126720 -556015574857508155803138345683386368 8324971614169342273125978153680896 9213724115968453656608167627325440 -296022584837700843948271367712931840 1368828474925569987262464500170752 4891307193638721256311825851482112 -735697567740257108407274806764896256 9340702864763297893864855782293504 7090062807953809669500545984888832 -627957069496252492651567229511401472 4633753382331453618210467456483328 111977015491180334581649147691008 -538943447538864519578381964562923520 1429974858425416427514111960547328 4974884154991403954758221354237952 -62569527027500630384643138111143936 8402344652057550633063342491566080 6885698275630633910908504758026240 -428344940017436003012248543701237760 5148076473761817501117481025011712 3677353030572342067994292662566912 -332051193423017707508944700694331392 6881800773196773729260753878253568 6667770690173765179448195394043904 -610480004869232572209877670401409024 4700440455807497743066177281720320 7829286966455057021108154022232064 -559190981805466793398441012650573824 5128508885076933162100814130446336 3758765991017068996394516997996544 -942883168573216657332712610285486080 5396373179535668873181833660989440 8091069712781629189155610198802432 -115399461541325071003099000050024448 7776463172359989884731168233881600 407043667432224742860965120311296 -139595763282089309407776087790845952 9029875362835386593201515126587392 748619528773427351744810124836864 -834200220925752520896582780675162112 9016495786686645806086908618473472 1773819054381014509230396939436032 -12674573286335171601493398877372416 1712058832652678713657383144390656 5605577433381663434742764503302144 -126841476730714150083057693671555072 2354926092578042437544125405331456 5205615991565933797404932812308480 -283785666252154013141766761290399744 4835469198894866158255654916063232 5963492934433128481281625877905408 -82379178266733064321522782345101312 2685621621302515519025675275075584 7015800513920783994131025668079616 -654732765956749272254763923463471104 25989540341745839052923263254528 2816380971316510308163833397510144 -620472645556532107188924728721014784 6382445740398104499669587678199808 9041620645601750912141708876578816 -207932558469206775291985098679779328 8887821329638825041750917707202560 2781411941711529604367711521996800 -76369084708890511937420185921650688 2092598906787550414679943894007808 6981454437725883530754516215398400 -104395449760153908132221489942364160 3296128582051963767284422468960256 2166092625058702429036599461281792 -360050505493964978992917252463919104 3600013672013715099576363351277568 8454690115684409420899255641440256 -513965858607929459781051512705253376 8016877941091771270407864532860928 2811179028494036135243401777905664 -573544796180879757868887663857106944 4480217012059602893259506546900992 6264822777145441388605707263148032 -322821503675073737606198487427317760 424905705049030346379561432776704 5741567333636008064893795457564672 -260365682149817743450239444531019776 3559834404078529287882293238562816 9850452952011383643323554011807744 -39348439452851675503161343523946496 3516805366943086746378446020018176 2344203596766055924811282249678848 -480129797547749364213104569560858624 6019466561261930440172313407127552 5216995924529379744170237226909696 -224340779486821685531967242683547648 7662443476628838986281994493624320 8729999796556198828467025602412544 -611955640745841729416884058570358784 3309060676358727465478769646501888 8587999042383903641239759668379648 -738941914623613153927789019152777216 9884756780144353237981416088666112 2784609956982533045417730266628096 -151519153295970651530618121903669248 9017108260240245310750154339385344 795807997757618171392192453541888 -346891649371840740151010038309191680 4350652443666122537314689816199168 2790379993150921086477533855088640 -413771564966258848762644345131106304 320779632127148459264006957301760 7211150548311983260350134811099136 -690407625042722637867214353205297152 105828994390559884470821117231104 2221656345349238915739924993933312 -922849218673342680237481316984029184 7198407233080741439935042165932032 5898384049268455662715026213437440 -308352736293507424638484609478164480 1991050644995046316898086975176704 6654018474229119167263812526014464 -533119027200936642691217022456430592 6295390080362208914831073551056896 625582825333935720257406321557504 -472351075638710395766682140815654912 7628273044029073724549184431849472 6644049594958227691027314813960192 -304952743452695103889700846070398976 9684671562092136967881284835606528 175079200708849407346393730777088 -207879397775569620092185102920974336 2765042842625216410915736404361216 5756655099610470457614524789817344 -296172232550737398694983014931234816 2648750466553261321919840538066944 7327689101083683265666604624510976 -278886346664370048974877673459286016 5671102219471956542747876328996864 1973156932817336670696724437663744 -641840967882078513457927088211230720 8964666962570038266140018864029696 2069913034000967366612793442697216 -952655213762187731199398561393410048 4887003570129913208375010815639552 377822386392725957400179832258560 -317430414695731605835961928714813440 5048386047498034632565138380554240 5717138214809582162390737861214208 -28690690485658926123676084973076480 4777979863896070451222202447560704 1322208915908740123924156251111424 -343774784117397818689343575189094400 8645848182550544061828750555217920 7330854542289225246686653227991040 -247315182255065969760669472181452800 18883528966553359697105385422848 9592426850721433512386099041796096 -226301368219504841858476866212462592 8251119763966584747874583417192448 9518974253725216013138206098718720 -175295046113931376492525056912523264 9079245739267302156024873819832320 646157351405101778565069388382208 -931982190910089667203849775677964288 7386107487406737149396139343085568 1094809319125506582569257346793472 -511062696560799432491753462776725504 5864757277900305974670121184002048 2673688793706026153856189230743552 -753593704825394312959527516461072384 69259263193061152576075670224896 8259187885820504434604199710294016 -428810646160730223974652357757632512 7314421948389549953655176230338560 975036041551123084505179127545856 -934962357717221866714934580739047424 7985075178627005042463368026259456 8555176398842195295515605821554688 -302033245494753242474260403352240128 5407488660942223493597213472325632 5870761412849802244319395090268160 -198371769444766382881459287208493056 1431462447318956023278919454031872 1646752670353592989140144736960512 -57768202685309609812920521304571904 8850212776233953583362685645357056 7744264300454009645724961381285888 -616615050502331975502986162038898688 7107793602257831199118846232363008 6704480743080697426897185204600832 -766278802239393635734991256829296640 9276525321281820005738990280900608 8874480360332041177230492175433728 -960502179381347718824283884700565504 9213403115693104039486205112352768 8694300422004896006170106556055552 -549140147842225668711435926952214528 7565803790122690985593267833274368 8750404001197466525700774627901440 -814167520085130819101344782635499520 2608141480520737115520572432842752 4337175541422069106102944311279616 -111137723849489099054836800722829312 3444294224617373651527792272080896 8356808254014225760586295400202240 -153690783796236503943146867276120064 7881608481608413652088097515503616 7532770336260911264237456594042880 -590896868247337610410911392969261056 8161323829336513119885576913289216 681050344711957011842290134548480 -596423704116848317016764896207962112 8695912538295178682704840628371456 9309440008746947379872041854304256 -432820024523924048149223237388075008 5453471848530740617999338784686080 7789613135196746344148887899471872 -941447473757287877030485856041828352 3817274801834496355246585224888320 9749125794710534345776613640110080 -551810693511731741455436480428113920 9477471246559051061020600649646080 9354725539017828606493591584374784 -501678871536663960327405008152690688 8677518056093988582773874030018560 3332876874931685710752997709971456 -561319366180449303531868240494985216 2519017570737119797122529610432512 5573588329496068748603712253984768 -85152607458028290605408573731110912 6200302271213322200519860140638208 7424886591420773908819223160815616 -793359243981354364309696194132574208 6880486430081035273989054045093888 7314602958487903057484458582081536 -235169901213087525723893636496621568 5828253830777964372715143216234496 1799984629761356197601860437147648 -685106953222839565055745742776303616 6835855919225593832309609203761152 2939638912729559306296013738737664 -474682408281527318351454522988036096 7034846630675799151825080262066176 3870406445306475446161237088403456 -456675956654582866985443280122019840 2856999047955335971474712289083392 8124443378221396392877751179149312 -550318890870486965197036186668892160 7541337628627945962972930486829056 3915666106666498859514104685527040 -832814081171803399492956131304669184 8066216911686777107572670853021696 484906593281535144703958557130752 -76782081787052294191551597273677824 4052710885904088117011531935252480 6160660267916497379524709535711232 -318130089021637480346985802890215424 9943308170556152782262138912636928 920823616452511809553474544205824 -60141667955046859599189968336977920 2031507633605401247678546309021696 4395104219364093183696249099911168 -901710493047829715502757939779731456 8054188727426923943204740923392000 6009698523567141931311414131032064 -649995671470089454326992422997852160 6013324823191336389624502652239872 6498595023969294170574801860558848 -722644446120948996952774446696890368 3645390121025219346779994289340416 1897102814106128362822960848830464 -979730054442630570968584746728161280 5341272247258379538382906829307904 7342061402950115916307848090353664 -322763350274565436220688434771001344 6351325817221126775157515756765184 1798151149568650531045810999656448 -391310917327230529254193180828499968 1565924486310589849173781035089920 9608166286586449178577513908011008 -317813852395049403639465676636160000 5267156092794482164474863635398656 9429517245828939195853507015999488 -137912287796505920272851522365161472 7206766981769483971751725808746496 7517001190766313869221479520927744 -288507118903142609208689964317933568 9266870784678055316296378659897344 1174419620376053211016880994648064 -477069736038962784721592003518791680 7161630269818713754874329740345344 3674058235655266526055040204931072 -506799996432050861614837317922455552 8700373769878078797283625946578944 6565722562518949955981341240590336 -522418541392188136795566800675799040 6421353209475195825813015016505344 6900392713716648956406856431960064 -992809003443066582148362178345828352 816562069502876461322982507151360 5088265293341298308777569178091520 -584401276364659218820807824412508160 1334612240583622871137385757802496 6063893108142829618542234138836992 -604471250696343640563094694718865408 1080338377087666556708873973006336 2332238970283997815826311689535488 -391967606844929497973277184871104512 2913846560535292812384026111246336 2916951779674076185287613938139136 -82796476736632818167947602023153664 7945003200874484337199826832719872 7572705301835543406868490826547200 -584347785193497066049156188911697920 1293537939895225931279541685190656 2623199608987287735806210292580352 -363713128014562125081418662005440512 1697000169946538421507197136535552 6358912449423462841337783575904256 -780619959636112247450790637437190144 9826835455159747239704198903758848 1852643412226120518442865926340608 -898340441893657940589713706031513600 8729770111122544544380668025503744 5101670460519663573937997660291072 -413735794486310323744029628298166272 6969342712258117447380613348720640 7365210651640739446175450177470464 -262122013284860049421889553056137216 659087436286575712822186588766208 8813180567188757676572465262755840 -440234894348649217416369721153945600 3665459353214639756634062808154112 3528722842426125289683273190998016 -371657035041633897000921597975986176 4989355499235142449319747405217792 6512303119117021294869829036015616 -479783309761988445590185919255674880 4950440749322306459014217018114048 2717902365836782537995963332558848 -823620825618865590338590171939733504 689617692334396867313841653940224 9755524364260807960347491927326720 -390517274495551233479639547695333376 2969708930533840990602894275248128 310998145734013092431381563179008 -967960693589326245435203494933954560 4862848659739961108276630303801344 5400679391203323662884264705261568 -510719922222833338157962096759799808 2826603171432586953985507041738752 5041624050030409521363349678325760 -866626568677525355740015182699560960 3289486741679382654202920399011840 7124737492135632667252220705636352 -668975689336054545908208399435169792 6175211403241561420514141283549184 8070465234536378372178349404454912 -603766063179549375799539434686251008 7642143412300085521326056675475456 2501419315351513800587509984395264 -475084772020802921481769849450397696 3402722727504425049333573986811904 9388958536246283686600385740406784 -920038816558038729977846523037220864 1395844044287181929585433311707136 4123949174862363691135407646310400 -949693712448068524674993787420803072 3825528325611346668188176744448000 6282889595358233605414956354764800 -264073929448163452256158531622797312 9973298082612931538393371183677440 8044561849585894901139206022627328 -166259923131729411552781045805875200 5475125822233767980827107989127168 137219862414646721950393212862464 -604649228514220130650282966063775744 7557861675507831066147275323473920 8112460938844119003922191767044096 -330249092129051076503847772612460544 1068171553511855512579959125180416 6426744915365060112935663198797824 -34385298842340859050937392151134208 6345506901562073944329563448279040 1651380500867508760253042769526784 -810089781610719646375940401569726464 1004793081363164950372532669644800 5740238264686755645270311873544192 -271014352779769832490025397977612288 2699303772365298697062196478738432 5299202770831958182109696539754496 -187170780954913449416841621732851712 440926892649447764660597785886720 4911702121832801923520183209558016 -47064989341325981948201382436667392 6915657074993799289322488931024896 3361839511512550041948456627470336 -380121245516310374852666985562505216 8457732642817428150533687164796928 4104207436238508307120273961779200 -707876090256146193601963350164504576 3963625776356352831428157499244544 8440959026823142137370788048666624 -223762741596735112230637741180715008 8568312937555894397205828708859904 9785758595544406049886281641492480 -495916101355279533507817408450002944 3996670004822109982264707948478464 5070907097391625470546007667245056 -537702876622925036181358578220662784 7210975703023818119285161448177664 7092285230315209443646454166978560 -615814008390721623090791878945144832 7426373874805377446877943606280192 9103830188174521640038151799963648 -871112953607836969452286453087207424 5438999974704026091652924405972992 1940543114745699869256791573397504 -17229469838926951529482170620968960 6139059910875000250998196088602624 7403173322783249807087680895320064 -688047560972152358259624292728700928 330542422986770739481931065327616 3500820930315905985535630989328384 -414217275891612801447268824150704128 3599647533217051641139058414977024 2922628906147017091667725947764736 -771135554292057357334284423755988992 4787851891399218140797738801954816 5061599807604676243202231538548736 -540555782472656041479648828354199552 7775187422272358287848728615190528 2905757242528735429062606182154240 -56286748140614676984682175044517888 7495051606714616240249858598895616 9027051244576776308787435110662144 -695103028710680499788700708983799808 9952759814716967269960162004172800 6291212499429187120503222926573568 -698520973039440258880196524564807680 1376205465036386123952116543258624 1269559707691071956438378069622784 -440385775635960664036494680872976384 2012145014253813262711102873010176 4780102040470871252177605313429504 -375187967162093029229387336424357888 8023399034874310962695068830400512 104068638513719519097421989675008 -466496758239458604796670805937225728 5788004410421194207574247103004672 7027963703985648314742101675868160 -645816345308593700915579349421260800 6134363019389767976110383117107200 1503067269570769040123188660404224 -232938538080471717511664501440643072 8497644140350948394191341823721472 4534128633781569125042201118638080 -424716050681617776910283226092666880 362784106270187910644024064606208 1329793664614650248103881972121600 -671228050464151961936372080457023488 7032633154677357463047327577014272 832868837347765361256837540741120 -244529690784361674270581555512475648 71115238196447170526078532845568 5790634340055310138400392983085056 -694325331201993914708500266992271360 8564186091982259171011561254813696 8499763768760242579786129129603072 -613433551919308948381478152245870592 5430898980984734380411621572870144 1924663489204939737953915931459584 -848143797658585345059460875137581056 7914306706659990902344044865650688 7639994393583999475812604944842752 -824165447611532750949759026043289600 3559769236028928562102744412848128 1137002315985712403749172433387520 -230560767278985127487728628252278784 178678748783891705314732400443392 5227077875057691975143208041578496 -453078183994066277076999151506423808 3698195649420374767870633452765184 6850127605383846412428407916724224 -70289259449594427554902236505047040 301283224349683079332243483656192 4158859072246655308316544635764736 -228230265042330384067200011221336064 8721623521420631187046348267454464 4905575855699698017850763132272640 -143660419224696599736234697402875904 8261064257221344068197045512437760 3168955976165065340228302792556544 -884915684307496325091268323291693056 2637161358116839962797231944237056 1148299097581504190444863815155712 -432109541278132637546994464853065728 6438096781255044346223248510287872 641273994174374687025319511064576 -175078630246489073363872781267107840 5558135508466182371589456880730112 1434929677497210044406939498053632 -834212435791292035448136142484930560 6893528537815417767797740498059264 9538958202401227062771870980898816 -223818634575490797393556074175397888 1220766948097384330649518299152384 7919264618898316423448860678946816 -442207184057937536939302064813506560 9953987294727608729007320282955776 8585380005573602964203511962664960 -414929737237087708739479097311232000 5601774449466843686118523607711744 1874577427643368329729613982859264 -552950204734494909143268070388662272 8374752428326699397474279252557824 6517731322674181142640641162870784 -816009659665497600607544623685959680 365269755256308523000491759632384 5573745193070382674659134628954112 -67102066879604451667605952929988608 7083742001589106619926288038625280 6016393070335257073826005805694976 -30974817738881885070785618613633024 7529413056545846253454456004804608 7913697772972789148615362018803712 -830689014281458052903690209100562432 635380710796821371798853198544896 5010991719954969040762289052975104 -333072390604741822557366709943009280 3091741676190358118378632772583424 9777252931360574325995793700356096 -597361374279993458712862275038871552 6176486622142016063367872038043648 6934051058292127933096504919588864 -859437636245705673470856655420784640 1753086608621994674730215860600832 7105857547530446566241193529704448 -993505020916915657254531221982019584 5525958262546442317396115913179136 5805080196071209839855010119155712 -377926692291414405285611320211668992 3032746994658208692345861585240064 2928238500485550792811850554671104 -31438233405276316200164489798090752 2775070358266352270671373800570880 1278884868681059635361352643510272 -279721731840086535911675241972105216 4439996518443493653430931000655872 2620201296295739460717795793174528 -418015784698343551228238514375098368 1468067509559396342167293199908864 5381207552074474743953428959985664 -330579126832772078354014807345070080 1167664774762895575686321836916736 8133681105081755230684198626918400 -504491930791426943092105530333724672 9233917866397378129033516418072576 7789348540844724018308279057776640 -832896051198861160440153114211778560 4225814577741031227350647182458880 4949862306549404009535508267925504 -779505595984569579718448833250721792 7627068706631927706976324769808384 1777952803159787520800081204740096 -80208482603304096729928170756636672 7730663084125814032070752189022208 9146489844446811230808838393298944 -518584102009487285060171147664949248 1396127212900464458023938958557184 2252919030942757437141084704604160 -464701455075731339773609401456263168 2906734434948706267072720116121600 3917217218001105583184650161881088 -938401089334914070113553869080363008 7069152603320161782901070729576448 1344973595784781634917754975813632 -234947877689044404184543774182998016 6742160824343480723989821510385664 6901854904974487166733696299433984 -253639231622623265145952011036917760 5990305661950583179668304724754432 3502111088518463176568529416617984 -142534388181835004236810943018827776 5068653319792110081471350283698176 9054677652644892368960048733356032 -351146782919681404129341834023403520 5578416590222950144307607814275072 4867887560364082175250905190891520 -55412039758631537771709171360595968 9833839891410181918913356055445504 1423491984696988625526884550049792 -299527918528566411546865937839816704 3104190472523197234091408610033664 7074979197364245115318925474660352 -55932085884494819384840803141550080 1290515393139913212123412900610048 7940274782280094100351472453550080 -525371511683028026231155347158990848 6083238763504962206617241770786816 3734133382543673146782626751709184 -772880163445501651043366577123622912 5679870732649900856967950824898560 8777584028031112941284438591930368 -389458492215679581914202734199832576 803837755314083460969505025425408 827428354769024995723903290572800 -174427405154350642073006598040584192 4638808731175905555649091340337152 1170639906451807908102565124898816 -963937818486185208470036045021315072 3665324780295643806447818262970368 423327346314825174001352068562944 -841024741844199181999672262261735424 7974098543744184917386262063611904 1397775338716621179492353209008128 -789473515728825589903174115375710208 8813076829082139463037599443058688 1723681033976098488843511818878976 -18539519579525815633370848425934848 5990784532763205482824099472343040 3017303875252498769959152611491840 -345947383039787058829936293067096064 6127097539415150680050279903133696 3163563522723011347604772025794560 -364473309858309665871448188238430208 7792960109978793754493685524856832 7789190687173715267236711477805056 -833415266148430398934337922684420096 6417593847454435814764188417392640 9975288948253901381334984522989568 -944303514145442144376711700558118912 6082273727230122295477876161511424 4821985487090223049560640110723072 -120193687025962766664879014879952896 4662124394560862685254231162617856 9538346126396910513232663130669056 -633459469809732772462444905825828864 2314364127115047371790227678953472 3585571248405815553419993119981568 -106428692630577886189881309718904832 917704747512432344327589260689408 7317606442840535211249711401926656 -187805138612192424637935789965049856 7073650845287066672646882150318080 3224657770851854882739375073918976 -675443674024436820016674300047130624 586171540613214221699884951535616 2180331175284200290086524540682240 -244198561597394545310155366624919552 6202844897147301876992073042755584 6632595311142544978652978934185984 -232204461799909901121125542801702912 8777634387364092399953651454443520 8384883200037858831873858028437504 -922987485762076672107165880781111296 9073837879904603692162249148858368 4166492201540369342568220770435072 -233624719501505889612137266963021824 857115335804030616036578342993920 8267049641381920689372456766406656 -544878781418156147749266369397391360 2905184220066244531143915423662080 6728221332136717450021943776378880 -557963799203464666616692447566102528 8800315209761846146714227957563392 9970635956543961602784693703409664 -361605016734641591380239677107732480 8474564279663455577307418500005888 4271582351320513521537115752497152 -880449358395818019611764262982123520 8266517582137170870814152580923392 1682877544652904564721200071180288 -385709885813435079704921448044822528 6151514717013245458641239540760576 1538366634206104265638581628829696 -804629783826195131638164650981326848 18074825078851334815177643130880 1861892252931923019203678151114752 -833233079254392828739240846541455360 8400999358962005299441678128513024 5531130547942328641544104427126784 -863446849907670915309749243492696064 4248366483969877377024819667664896 298967623568842357885588136263680 -488949728721433864365107233016512512 8177060172034995728943498896867328 8186177959769524242345653969092608 -754181824135198670617062795359813632 4717458311197903893027902485168128 1273518218133019511749464146575360 -609312574989764882287996891914305536 3399605149513361817943944604942336 1789607322190313284065620486258688 -409128280879226873154879441602609152 2780928657551455086091060943781888 5576398791848556784447875866165248 -664304378936440203419728206198996992 2379515691623464766427803412332544 8077234871999892474965851417608192 -162938434692154266858197486363738112 1078505616819447008479351775690752 3274909333789348373923823955738624 -955181134480675476759110379211063296 8969112740685913093046498693742592 3587007113291489298621980957736960 -782725664503232538508741058588835840 8599490706505172802573813390770176 7968649108697660886698305672708096 -123316038481090588087474191528361984 2618284385405934647392442492387328 3607929308304045436124567865131008 -985414535839469830461233743767011328 1132320514150749034297463702290432 9537513251409878679929139601866752 -48333471099142785585929544018165760 9861408487438527473997595436646400 7564088551244291336049718496067584 -720284589082112185856604616790114304 7897882902514293783906622971576320 9582853144446270356603818139975680 -688758962959930898866137487196028928 5901855439488219144849181837885440 4402764235293061714024851006554112 -406794497198292965493520916539244544 2648297802288764737335918319370240 2074590890711221510362581186904064 -816324356325805133524065432494931968 9825256414890199044270720259457024 1159183576425893042590779730558976 -15439380213841946119854111819038720 4697707145778693824693747882917888 5212711498509356614969107138215936 -856357882541104862248016357365907456 1634151436003545339679168704544768 4375575344979566821674592971522048 -515409098839513667000503499164221440 6340591025521293359742088535605248 8791022251311537187669523172425728 -873358030621771825464589678307966976 1424932147762689191146032386277376 3851791469631504679020161100939264 -413256738974120724086322764737150976 8719311675422989532702380956581888 5825670886376649366826770176671744 -405652789194210553729383452641329152 2536660504130322859354267842510848 7452355678453271696923253725462528 -576641004492200847102273633642348544 2145574185588075018083490930360320 2719768935864074479240445870211072 -825231883733069390459837641425682432 7637923607880423727618074735542272 2326777468080278767231975422951424 -560051218735232795708480332624822272 4014585023663270520833790892310528 4479286499363494328407693040025600 -956472352486769185205187207711686656 1008819122335321238633982902403072 3041233737630287910479704201625600 -753490561061596279131814582137389056 3170010356245450240800005388500992 4600185895136362169778749403299840 -578908547707701191732251985692327936 1675534341330070297491060541095936 539227077637881184529602368765952 -418048509585566034971935617304231936 4355892581967418884118086869319680 1989511742008563535459280469622784 -452337868707388163277985034425860096 2130040128971279235521248621494272 6545188600512039154111167315574784 -887634269607833571401875035621687296 9676510619530706343666721564393472 5984354026188846341487464554692608 -377657141340534653849218739762888704 5734641761334638792282113197473792 8949826546024497613999891581763584 -196184119550916284344228314284556288 6214237250323257986420799055069184 4150361177039991205454524268412928 -734301130340026311368829002909220864 1185640618979661344559669004206080 9007947768586681928399259441299456 -811396567847088511986313855487705088 3480679461105526117941217071202304 7047614391835192213200322122743808 -929220776147683711713181129584410624 6135970575036842924605719088988160 6255295113552762266874504064008192 -431282608754832988048309408820625408 9400685978489725138395635294142464 1309701441764103261543340775047168 -106571206215834888444301646971797504 9562437101378460102700645732057088 1169756566277596628088007556071424 -771870471713875466672178262970466304 2711071276717723753317936608051200 3605230414395574691942622296014848 -919615020220017886205939046085033984 2938214629912072934043265901002752 9316617316196986444550074347290624 -598585977022748128216046889450078208 8734327761587170933720503954702336 8572365941941591660317096785477632 -313156286862292685197689368292098048 5626345168742070619389346216673280 2204264982786699088654561345273856 -64835790053533628640095657080651776 8012375107801543500533964990316544 2653525881141892135918058449403904 -445056471855977124467714107667120128 9509037237752537455651916835979264 591591009671801772188659980697600 -789915768393573806594915929449037824 3572774162956473999922374394249216 1384352203638253898836166045597696 -356418877277945404003119205177098240 3869755437032586669450271911837696 787363094536747502871244802359296 -621685304410849961063589613817298944 6613181115234833476850050687565824 2258564178950058877145787825913856 -883319345002288578109240268149489664 4245023945506374434738582610509824 5478786573315022676116773271502848 -131362362221405188883734014101291008 8189637823176509255261537192378368 3305261321298243970826845439393792 -520245188894236170208302717294608384 8027935932833754513712093348233216 935546572968468199446967815766016 -162482905349098441948702751531728896 5434072226504171621706982985039872 4866587212395930184410114266497024 -522219150760814936627905851006386176 3099947616082174812504683976851456 4464446380617864240749282156609536 -363872182392228856406131877915656192 1233062591145139984409029232295936 2438470595032689935355375054225408 -896941772441881505871916656863739904 9391632755495950440354849449050112 986225734067196188874745449545728 -31565466297406514650568624116334592 3887153444837710481790057666576384 7735700782788853765366823092486144 -492805912470224256653322260718813184 6595220046002160816932134026477568 5078315299945427087364853128495104 -872986432380216349770472138718838784 7573244537510053011788421375459328 6597986955529848659597524006338560 -814815899251061884068831689661480960 7360967541893775711625886052646912 8972895556933931480099270284017664 -607442915315599654791931838282596352 517767140606980679616228082319360 2307994396765712875002329470861312 -265806685183548475454044844893143040 6352275918850479507579630423900160 2293433294300880771539906999615488 -153915287803671717150723582808031232 562565278879272959928615361839104 7655934221272840697742708971667456 -513255709819414895161297958101581824 6073577503276131319050266166165504 7943789742190921710626666362961920 -457139494386765302030127611038924800 4047039168980119109979347225673728 7739477438883296100352688604053504 -585031347040110049676854616098078720 6760158799554169246049021464674304 9767192014271092715786590650105856 -524656823501086941059878935074963456 7367193435242566937966930821120000 9200369687201886524495656992636928 -833598185147842541796860428300582912 4838973709629332796549190572310528 3572523824767008115234022270959616 -667277699152941337537696658171625472 3246824471224741927353826079145984 1411185456534441914165153409007616 -312245911211291638702067174925664256 5312208320987028336067114663149568 8371557383345778125629686909239296 -629565266969403111829653318849789952 2008088488472182817640980959723520 5700116833366628325699370545577984 -110080469420799983417280765607542784 2294763548344950013418577611194368 5530072147563151120469230446706688 -639803656711462267548752781166772224 8363517675515807843850519811457024 7964362512142739173844750868414464 -327614225538724820832614433459011584 4693876266661461050691855428091904 6714104708939464191941843676561408 -859075039205855473346562170258718720 9148026820891112055472125399531520 4066078899903319913357259290181632 -37719146758499785593281871433695232 7701680982936371099128838857162752 2680740453077149778674208202555392 -766912577922357217822110594598174720 371519590973778776368836830560256 9474285646843947024858105199460352 -671856709064061484587897454348730368 286309558118479397664187438071808 4504663860898137314210086962331648 -623125888578042821104518338990571520 2813813342243702077615236821549056 4729373250725089574619232748961792 -707695372787936638246191880650883072 1225758728402602281069032501149696 2754468082840313805836039065960448 -834283618513328936581393016718098432 2070811560522409242482570501816320 2211323500868993841402505586540544 -701155186039930833352262560652460032 9644577345887292166800684913524736 6947846394175561814706521404080128 -976676901479969064052764947567869952 1160353095496809867230210175270912 9930215669756260654016701078175744 -368335849014312389792603801902907392 5588358226750853209036399562457088 875850084838612778609200005644288 -154462857698149213538087564644188160 8982351457833217695683296509296640 3696272160753044591443678173593600 -897118599806229185421257524815855616 2939655267305342645328967528087552 4348685236407771797584333445791744 -483265230459613308919126755876274176 3717030288133826311658622515412992 6290177299971323780165692928557056 -927223299152001197934036759907139584 27430400360842287673526664036352 9671209319664751827382026308157440 -62151542762482807872857484791119872 4275965842688932441753223950237696 5825848932289748042965313908637696 -752635113802302911323883694922399744 7414601435231549348710453816066048 6497248225007934385425300064305152 -968698015739004974198199434029826048 1974337160475385251177597318987776 1569629118696673624746764038832128 -690013255122404076049164266893213696 8506845308183783673015254497886208 5728275303731908075187632244523008 -273289789218627903251787604052410368 1561156060862620011679509100101632 6873045685746085965629739786829824 -79161548366153233702742641487118336 6924054093477312768479964432433152 3265019631529497610867218560581632 -395895887452536915999166463133876224 1226826477350637509134709262647296 4956546723463944013749073347608576 -933483970075181839290411266141585408 8916286289362742552811017749921792 8641161054049718545745864025964544 -977838769403220178856407448384700416 5803238001298611555233977113509888 9760122548109574093748156787326976 -642242843197943060307617052551544832 2870389668880260588916666758332416 7175578603982445048263115555209216 -291039347643518598529827710720540672 8557674280751731367960674889105408 2754991848181534188121399473733632 -810104800376897942062316425798746112 7979695102351708944723171428270080 935329746738163855061483482251264 -368247624335901501562578532990713856 4173144709058526830729632260554752 900657265375554218258051352231936 -544385422990053467010861427895304192 2046810687660032559008017404657664 8619120380834565038909379223486464 -582470874685519784828452409178062848 6932039940497046774198792615886848 7932025102274378114958591078170624 -522211301087706230709448961758855168 7413576339603755022978901784657920 1841185620828356129466477730332672 -646279392467229413878648204966232064 9600738231032021276091932496363520 2359209542315223400007416416305152 -265711359657708338108765184909639680 5693702351283824731659957853749248 9375602362121806818976852818788352 -132270533581196117967007356037365760 4927994564445876279057021619142656 1708217071473068608695426296578048 -307579286966283270246961594002046976 2633290157479855682778826247503872 2792616990997665441299339627462656 -982785865009947005398381333831483392 4276028011216548218291427404152832 7435943927650915785192400972939264 -191108512242595516521112724144390144 655568095312609079454885889441792 1725597312481140144293182974197760 -54466867264884297276987276187926528 9254171957112901339727494163464192 7292105643755216648566233729335296 -717267192029229395328802220303974400 6291686355189708914520793567723520 9835406408665431384440738525741056 -375670031456519065158394390048145408 4137567170943331491963973056593920 7134141211565748974490642743820288 -550755134860656910741531358354472960 2880318390949407980747755333091328 4325298042112490687899702399074304 -94919675730041828913173481094381568 3778357099946057385054425657114624 3320526093938530781835950391558144 -570440235042610057186418605351239680 9204998733490734558182808225841152 9178689758652478445501052641869824 -407632793625590035479038955356160000 3051974101592901453992599201251328 5046891022763967060652305705598976 -838840625966486217911472412782755840 5682638580071286762293605391400960 7551906077755119193804804527751168 -899512039288913762185440703310462976 4501045156775863748885339451686912 1606669129003352362206834097913856 -219493458328984082449936427740299264 8806907169785629722181602321104896 4684125192956129379875272714616832 -991526882484394231702609070489862144 991327081100166944070836252835840 4667336298418279484975974937788416 -360778136506808967205240175096496128 8759476196001787263767256665948160 8628157553157294127452863156191232 -335847374332486958540991363903651840 2599302064316605448056197764612096 8273747890730242388031904096976896 -497826960199532162028057074771951616 689821246394012430509278995939328 8868855387700568897864638222303232 -363760827812778026032837268185546752 6598828529678722124517289804955648 2444682797138630985649282032336896 -199290394406849712398824075620777984 7341570721338656949499994518323200 7907354261537218350781862202310656 -295486630809206689683893144900337664 7934741652469086498954768195518464 3788910539253657304179224917049344 -762306407375043018404066613295841280 4994427115115654477110103832002560 3501283730538803720553010674270208 -428815060118489254366943869552033792 7619760972490550647761381791629312 7699552942403705041265930381819904 -420237478469248999869249599389564928 8669411642064286472894057812066304 2217143262381396396320890900447232 -524348888015852794197709962046603264 5609335507505818056293729498562560 3825105053257843442227491790389248 -238722149996391205976074946336522240 3422958208621956959418295871602688 2641701435178338320924397751238656 -39248718374497319490770920521334784 3852630151716795978481668227858432 1575407210880701063795789363412992 -513078780784400030637492499979960320 4457798954168651782443886939471872 137541323203713168734175071567872 -53329986351636302717832624030613504 7503432388842187086987300792434688 2207558804473345469922190160822272 -398180663080516243919110783128043520 7615026387481768643601136370057216 5130874587228195723043203624992768 -650274835347201023791591891960594432 4279971961591204052872802175287296 5940267641735350600963832229658624 -130952217664533527314092013408747520 811316899283214805727968239812608 3965643720578288755692908362858496 -744843155700261837574901422700363776 2576547538869430232932517846974464 8202265715431159804253610958651392 -4627114272533178206938671035187200 6618674701758392700437557399257088 4845026484577402030747942165413888 -331856597212000669741278083044868096 1160219090549932179408983462772736 7300921713190490994427493196234752 -793064334447768943569722608826974208 5703308590182895696092932790550528 3976276891055195712660252024373248 -496653835562966019097194401672200192 6532961461224922258664772635459584 4880025675168445103092365273333760 -714837457602826979707630533312774144 7632609289149722896027676586278912 9157994519723799773072343600988160 -225179975945925114074168993054195712 2006942462017665590779308480135168 1995851325185689474898688179437568 -102071202479788574534962410436952064 8410067079058639482984658169233408 1941329032127636958870282971381760 -175726888726636028496061652191412224 8312712396667208044284706230894592 3580306688751657682073458304876544 -402058569725207506472065185624358912 8918737597402614178411786430054400 3288614900690247841499348721467392 -287726055144490749505597619711246336 9803947023066856805307039984123904 5459424907275185757870968782454784 -3698716898068476933331085978238976 8565411195698440396955162303791104 9951211744345900299831742612635648 -418186602313045200516813978152730624 2964617690383354273691629936181248 319625179735409908418841868763136 -268024673337069124291934944650854400 5253416567234556751025777240178688 3059859983759681963118869207842816 -119035637591053460963403527536771072 6640890283226143151220968447279104 5711267522939671618560479857737728 -576336855755221546493015323626700800 6248293233176860560941461576613888 6878741555298921891950472254717952 -339064555059633522947585286319636480 9021214020172057765510791838040064 6050755708313716627121629523083264 -461344646709644489087839403627249664 8444466537079593724905669076713472 6942243808896367760477079772069888 -813187257081601992039288969755623424 444121389576930453357225826058240 1238276700874183727605983337250816 -999063239833623767364048795941732352 5398561993240945993066511106834432 3571969373513364702077389033701376 -857266677740519954271166524553166848 2294247179006902860533153753202688 3276800190083397774597011424673792 -926387794510244735199526181058641920 4521798456393642328667859315589120 4879827232857890586532762680819712 -232478577914675547809802701003292672 3878890108925872247827259887452160 9700740804852743207829477366169600 -405090541585914278988880467273449472 2629337277608506850713065238822912 2708894566954583680251888385654784 -810871565359647941756131120617881600 6672677297476387397768786957303808 1359275151234007996010303269634048 -693256987216289932685952241731895296 121339966701679379152975893102592 8068078432929439516832895372099584 -332271591709898907055620697396084736 1352953936558581186178412154191872 916792331697602983262407939325952 -218334320396039493777844034349301760 2801430499901796056108586126802944 8443959583775460451205670837944320 -570272756222474094306036501345992704 9490881470231075098384547771842560 6146741591179351052604605309386752 -159537670640665838393778934669901824 7875599119742427482334779207057408 2376782773039120961581118681776128 -595644904310088319822612555081187328 9861759823623393948074738370740224 1509864688673472560519595392237568 -414394277617215528682344779566022656 414375583434370564651652334223360 6223083118376050258301365329592320 -333420496102190496952280483029319680 360416987241042843970493499834368 8714436104035695366247650026323968 -756331554923237099459543482733953024 852812252639637387405613871398912 3874376267644401811847133276405760 -131384868138144168887946570369073152 4856163605784045170798851713400832 3652584568992372965996052281819136 -546694080569955249856904987729199104 5989309655777260890302375255867392 6011673786841131204339863782424576 -7302516783084599578166669181190144 1075424301660199999677370518732800 8523120834353781430480235625709568 -952339309603000650056018158814232576 706036716263472958788743337082880 8234959269328716130694243438034944 -950463441587738291993727387995996160 4106371004260451176952552809824256 1893241158484337167893487337603072 -796810639638019634396588205223706624 3181252187184939256352831558385664 3843312363602902311096944814981120 -674547786690634058803364680815345664 7716151886585069759100221181132800 4931211134059463846367585535787008 -293302368940446099175056451336929280 2614626917832721366395652094820352 9781627032718582031957011086704640 -119913608402198913343349288159150080 9047184481243858197207789900660736 8448578572332407338206532334518272 -533124910584523687922834140880175104 1879456545001888565094347872141312 6107767187171874572432443902525440 -649003737545102397871274154973462528 3649015378349726829407075414573056 7254599231999008950442703399682048 -363751429428170623639069882572603392 2019489967591169176149667600138240 1358530299871599400078368414105600 -566481449323967766936225500608069632 6302821816973965221958833842159616 1901587329493452266740651575476224 -526290706969524433114102675873464320 3331251787323037535345772328910848 8458851038136911299580005206458368 -236376839700107109017052493767507968 857181242248582173233551522136064 4810205542606608872000365233438720 -819920577049619823403619074223112192 2198825235550496548472836012900352 6451599704362325320162630541770752 -266811493388861830204447701745008640 1799453987394487803910786752970752 2961438903281252056387490766913536 -208594452780329671084436550812958720 7998858742100739735200248688017408 4453458355612568327969147946270720 -774753198724722686460076478236196864 2943616407347692467282390705766400 7912769317248352100882712566431744 -300868228318232829641971319691018240 5656346464816499151091175864139776 5426923319264233050695983532343296 -570127025443243625230281646601666560 5008099018105024116075687172898816 6637968958540272724914688663486464 -471801652165408838437239418989314048 8743007245625745910873727122276352 7982455822493919108207240965783552 -587024920741764828439210714814480384 6848273759473804092765255764017152 5605209427954838545727934424940544 -826282170115211337787067713217101824 5742168312661146904053536245415936 3950252764171285613827975297368064 -284075989311924609937054093100974080 6386736122416341224348054957588480 6398811347164400182159459202629632 -882255626595700881292611560358805504 5919830777093100270184216959909888 3216219703215077421323359986122752 -180019100239032290582717737394503680 419138166447353584971471587901440 8158962522062239069779462667108352 -965763152282250572143248286412701696 765730571740513539263522838413312 5126737016201163653123724474843136 -458803134140557988144523795626983424 8157283308127760128162692530700288 2554843618800762252924709528141824 -711439124499271147493351096143839232 8594511151414344314615371646631936 7315762281688399646644317961846784 -146070788402670331997397197499924480 369693086107883013305496076550144 6969450771515851563736206235664384 -203230282600417772150441224666349568 6963448122513494245738170432880640 2327866735556152116903371748671488 -616321764970581455661835272851554304 9230177718731669853986400935870464 9428761443334895165716747861884928 -633635915636415376423123454670143488 5937145988190087574722320774725632 1430447655019984716810025187672064 -792401973328099962921815763610238976 7268256102041728509797723860369408 2043407285431781435261446239813632 -181821898368147248226147313251254272 6668833766363577840878796369035264 8978964509930124607455009819328512 -543718116243901090168085710509178880 8514122819978866330122259290652672 3004224674251000739460374023110656 -293543966574267389174772532668006400 171214806580042303148200164327424 5482267508549980396261365688303616 -915659001141912317536628475225440256 2588298584240085054742194439585792 7962860380048174242270694011305984 -867374702202161144660533689605685248 1098317601509436727330903957700608 8170847555513505770950656333447168 -678888024338760072128846878625234944 6804300900686623040998427154448384 733062094707658951375574517415936 -765576612159869423526647747737288704 818020409280552545033732367581184 9871660539979316271673763222781952 -797902819105130000991561250578104320 8955987108609883921037113170067456 7429592636476739443500599801282560 -986468036495318249809683299210100736 8497725916282274924888188537274368 3885104450886594135611516194390016 -779327791918076125638435357614669824 1785495182531513640042775936237568 6762722913335871171462323530366976 -813031721379771349767605011089457152 1741732004224994027770752228392960 2041198563470471720052450610118656 -309559754371133769193884797200498688 1949595778924594890785641665134592 3955964974486051932672979275612160 -110511492057500711774357154978332672 2517025242120099220242116781277184 2462395671089031316205035182882816 -84859584928293812022801722094125056 1511189398082465837935905873068032 1522412654760693786199706782662656 -372944692346322968098900702870372352 9126757408293642082985117363470336 885432318404572192556981378088960 -536849663405053045790649988316921856 9215531297416699598135224986238976 7955183843777200273402253946126336 -666914438093097495844356490063249408 3597527877180053291909163461378048 3434024262484405901074553446072320 -900155906356557784285543497352609792 88421326402817700424798401724416 7179592568640169606262548819083264 -811595374819206585121409068571820032 6002843857344374459162128237461504 3424405081498873947187263081283584 -765172533627862665952080283429765120 5967273360572831959339901049110528 8509245751882991253961190351568896 -251062714264248881260091222224011264 7463678342773773811050745291603968 8649942460163543263664726435954688 -18914519341272770474298906482049024 7885541175342497418297808636608512 6768754630269818915558791298678784 -972929083618577712947408399832711168 6073539083723270612240380211494912 4760890047761737256499171467198464 -135223232589997191959817681891229696 7724575240597985280429314260598784 4611688631661518748614506431119360 -434098023667192547107077582869233664 9715299472715297491846801848795136 7222352390868363008840275496796160 -967917910437513828119649309341777920 2189849148014142897632648183676928 4047352030356718855819398123356160 -272510148270611686897256677188304896 4523793718515801604689568439730176 6679085187967813835119419998601216 -182405129096819426993171826806358016 8010876851762424359155110407831552 2450931008770444351494612278312960 -682173011877951834589237124173660160 2706210331414565972425897226010624 6942361531389132786230763808882688 -220602481770889642662683025868849152 1783972959548428061062618811465728 6310172307237371606635388050866176 -378591480523940877631981439934267392 5109584795099537303861915201568768 7224991876279110524045939647184896 -874775396086904303341666967773773824 5800124241055179986462523067990016 9455256230011006587111932377956352 -765155894534665422618689437651959808 7531210312295876630966294139633664 8530059374921104060589322214047744 -518618307827763650700543588567089152 1131748880938436694647588480090112 7694922344150871229366739664896000 -533603189061086151107918587041415168 2133047710400988470949931835719680 3603602506845013731005856674217984 -624553407688285419975042317628211200 7942023445577931753286292182401024 9897132944959359776361886422925312 -282532351096762727009157177411633152 5839408219878799198042259686686720 877253573709360787662415339716608 -249101110799186100681242099146817536 6720464771397154427482367066112000 115089430978400344803350878879744 -686399490523702440849090905668321280 9287234046020258010507092745519104 9711606889015943876974113531625472 -413731478829338862955068304752902144 4208736669102498980772175641837568 8392472114890104717422526352850944 -977034819265232151801167506156027904 2379303565779085855275809830338560 7353224136709262262368008692301824 -814176903899568634225443738604273664 6410765722520629728394643402391552 3241787139430872302936112238690304 -954999627861740684833877584685039616 4034980902116689248697571761717248 4607777434932397114235659235622912 -820081081533061786441496894629740544 1767744074713149337369492074790912 8655769903113389614469605773803520 -878421307593848133553233797572460544 1577476071646294624537116003008512 6472587704465859269630484392443904 -361630381912429932034582484730511360 768927216231803135135623160004608 7842514933573675063602728688156672 -849074490420092766700735272069365760 6042037201413432879818836195409920 2331318242095174161282101401354240 -83116159508728687568836112142041088 6940500922016667504082525978886144 5865784567190070463810815299420160 -556179831428850952104323223673372672 6416504199295542003779138115076096 1551033936110310634687062706487296 -813564297203462202949324074601414656 1586265991237063662919113135620096 1384513617094337630101152739622912 -981681184215216562286895394963062784 351485381265951096901676986007552 799711863052200022072816897622016 -788064282258871195731580966127271936 8558630045235997889154308651352064 2749777813626573839725695766364160 -291551029132271026862364902369001472 9520041644961320294639360179961856 3978054803468900912874395510243328 -150664384626840420327680978731401216 1082650465629812177646599297564672 9811793777965940207718749324705792 -978932290100483466438900644516462592 2497027204651951868903138569224192 1643204852391242553867056594288640 -994497715317484449388356130924658688 8533103848514978805723991807885312 3978732937870136010880957491970048 -735091085799305794459415743712722944 4096767944463435596090471465615360 5695659646657814006805281885913088 -690209401424923722818892878248411136 7067527913260799444921644736315392 7317519974232308452313368434311168 -662142296341968902809113079985471488 330653977616936309614565474172928 4693348508649151058616926676713472 -836355073546728131244173709577027584 7462324292208569259471297899921408 1754201880094830767475855605104640 -274647697473460480290107226327089152 6173944492058487431059779675488256 7156397765408479234602710520037376 -38889488194484032121361137110351872 1952676162294967831447156144734208 5632177190805588978978956540641280 -383056958699279923665463637549514752 2861728604098165096448803628646400 85009782223404455934837582200832 -977481199425658910707217595157708800 7171564961699924229926923964252160 8453599549550495352973549295894528 -758351463460130719931877899620057088 3167417180636983324959949925122048 6965574230399153199384256992772096 -493528482530556721133782235124596736 1758710469884523028086807119003648 8703930790561743366336181423833088 -637936873323587272231131119760703488 8463120560191562402152574374379520 6820406417040482273442596984455168 -9117047323955723544855354026229760 2470667492850109418765483885199360 5492895234141184932330175297748992 -899563016086461415999547906396782592 4924670319309988639231486531207168 5007732165488699398522781260840960 -985323880213126235300604918072606720 5552298637116782720064745302392832 506426109232992168221961162326016 -157828992833323326126385065160081408 5455764180769218473155305739911168 5436194905034246020194423441195008 -935146397419952076619265107734560768 5151771409180341056215962815037440 1034089307250522293429030518521856 -497214615430373902216498244275404800 6423068766072183845557889295974400 9211824597297505517922115691479040 -664190264616471734483962632838578176 4923688980662359269111286233825280 957621370608867734051265554939904 -598259652076423147240421268127744000 8773438958199123109947614439669760 4213450645849438635849303424237568 -42361110475695065324560600153456640 2199104452934243694961801725739008 7824748226440742908852120422711296 -387251195056267926131305459446972416 1917168170240097506104680210497536 7034320317169073883561361204576256 -329207227429370572572271741654532096 5249714407839893746053962109288448 4236651724402129589588615179010048 -128692475356813814417328101050548224 8853050475224601136278362833027072 7186807821315501096775041931018240 -878895470384893816740175403768872960 4682950212133245622914291261767680 7191251763481329645192686640037888 -205390528641306012474499267727196160 5900433947380741048707798360129536 8204544766341714759937279194562560 -491488370524245192941175079446773760 1267337087279135593720143794929664 9273937153016428970503916729925632 -658988264947404989527319257645318144 3825390611979436844435227732344832 5297424133837154952871622903595008 -145191426681235830033360251493810176 4983533410578860823514084678828032 593195212741575617879292327755776 -558163074059196768188202552616026112 3277250445769118051744865855733760 5781252473737884690276844331597824 -251485051911535860869272355400056832 896271585001774163026442463477760 189137195244884315563680080068608 -713669938472726247640892365565067264 3779220751437649368667787152588800 2510061581798308828148298877501440 -34993663647131746510790171041988608 6239105854888040376670631692861440 9203123920158707291395185082105856 -95276919530348933030401930921246720 9014757377567044822051696106536960 4903122987986814256122455864115200 -744692161397316822264223433689661440 3277658808052424391866063624601600 7844564627530600298848941160529920 -574480759831316334837526350826307584 7154722006853091548300387419160576 602594870431343275334663623671808 -607285959723400640672962601356886016 5966705741554486948636706719399936 522388635887875486566846377754624 -93389736376417210219776553164734464 7163503718475853765077217635729408 6503315824090676449643881222373376 -627754362760246078359984618961108992 5298808940988242425502052021960704 5094627182591792057613391409184768 -168667560329520785710802017930182656 2369457004980899095534881766113280 7415466796744321122744983149871104 -974609823288903030684961164851412992 2159326762297063685861919231574016 4778249967546439372896069274828800 -981640514419041228085824733484941312 3440201216430514981983592806088704 5921877790850828119251972628938752 -281706413841113359245143617719762944 1079907914490552759605701514362880 7485501545008220394091656993832960 -315199316410331498843986798581907456 4852413008941972465005564157493248 3584031537955123116743061976121344 -136748804456378850614597317772181504 4256499864465534332511797620244480 8768012615167299257082648887033856 -568791261497409987219906513598414848 5013222496131919065609511521746944 2990415079152599428244518446563328 -407366114820989258256181191560396800 6896908828110290331540959977799680 8127624021192219812086572495405056 -857748884961050302236861345571012608 2229424916386390012514854961676288 8362777771740442576055869693231104 -231895903550119018391205179536965632 5728793221981528864910008605736960 1684352106972672928416686325891072 -141947307529670077804387285115863040 7659263512140945151716662794256384 7697793168312835002060704401326080 -106572061927260676427604588643745792 8542361053797768615324823645585408 5745682638583011298900355928031232 -438148185612326769193093737245310976 7033214484857230743747644392210432 2607586766803911930050572638486528 -127116544707557691471562679349411840 8719327233296002580478924647563264 503172747204613571517959437811712 -755393455066971188602983101184868352 7963075728040362822386301676814336 8322546250214412864401458535071744 -385797377616339826460723408669769728 5846564978979016728065545049473024 7773981661892505121506583732289536 -553849470738296534406754581857959936 4834324917798258378674628571693056 5525932964660114187291598214135808 -68175582843577684917606498307145728 9897873881877175019256530692210688 9169745655686590273168704572227584 -699982139918903803250586898474729472 7786579519089959790018023548518400 8077739633246251319353757378019328 -332851917782073395485615427927670784 9475505360929834157173387491803136 6274521531243085791665661371482112 -175810942968991734911893447343341568 8680596760123300632097800664907776 157673892149302044260985814908928 -261739905920341501694557253418352640 2421058286571042159726712584142848 2494574541094429699073271733944320 -554062922448818996123511656909111296 6767574669731564594549440187990016 9550754479937745274940918264233984 -957217991118103184357441345586987008 3130693979884027285684007565524992 2094267425948747952890568507392000 -266824507530348757216989507085139968 9495687038096738464251053990739968 335844487271179977093684127596544 -591448743833824059504411609149734912 403402651131756131028273572347904 4791097803773218480976012469338112 -448088790754254221563920510701535232 4491536466597932742345157588811776 1541854828753930227824857228247040 -657270725799517609047030665706471424 4772292282141939678424239796387840 93206166338589835897348158390272 -531106096530876046986806288472604672 3333628746114873317581330080333824 467672063613192722491040541442048 -278874360140492488905288448932315136 3644609254032111846703452991258624 6180165539173808930380057866665984 -939148433243629170177557760294518784 2681718667878130363111473292509184 9098344920129781569140600319508480 -670694753270180760550803145163276288 7037005067030001151689282755231744 7826007649580297636179723113463808 -965315964565853921739880750154514432 2477467013418451978417674668474368 1860071407868529624112709890998272 -401594256482078369979528788303675392 6309147010506631000914620235907072 2562382995598090705090219603918848 -466795181089124538119739310052737024 698942819591855811621158467403776 7624252630575103009351655755874304 -963527785564943387531636313375637504 3293073284703531006913486151221248 6430527684066695954172966294519808 -835017449892183213228011324497199104 8586677806824463594040219895070720 1274373698441545982093967694495744 -810784047641607371588524880903012352 3316465678287596700145549345554432 8279586251079197167808206883258368 -682584580320526935514447451814625280 5140848434004806315523961555779584 976015987896160602059972301291520 -11099568888957252604397178192920576 495697520732488441747814169444352 646068953202283227321129154641920 -950131701446376336955667833512001536 1831564453388623998448682722656256 6072468657628452012868778613276672 -622031306068011605876522247295860736 3112320828921578370998525130440704 1863779133421145880358433473953792 -471501935936109856326612038925156352 7081558453189460333689091817209856 6912499425736514876425603425239040 -562482026479628858458552056846221312 7250434554763309517868740594630656 6215241863618074145293891515973632 -246666424151217912662344916573093888 4548461981855551973469762785116160 1544632976451725281655825669029888 -496451283402966048143251111581581312 5218851535716008452142515603111936 7167615144314992726445213513416704 -258057208286261430907219474768723968 9191598605939759518577615303606272 4125920641911600029509111041228800 -103906518319716283167067036931063808 889052629746237413405786378338304 3790046828747272454779138824208384 -219299289211339804171884437121794048 9286842762893834767825035826561024 1138985946889103865181302119464960 -959899500748696799497803850819043328 7183648901027877535185568687718400 1948182000538877529554391224287232 -602749363381266378318254992217079808 7190182307564526912196117096562688 7100190119629264784966770208276480 -166979181997571599361490255974760448 7778856218607813593606653397172224 7046445046239520387218761330982912 -817662874492141276498739603634651136 6857191006484549462344854262513664 6894547330494505041971702212329472 -318019597358567397687477334995632128 5335044164904224294722599852703744 8886983000608850328198333060874240 -530611638099512105539970267321729024 2921943504723887393703981679116288 9869452448954555612905421777403904 -683484472923960438090849340958441472 3414427217475882299117668443095040 8001494646203533542249064644476928 -200351452288515579135081330176425984 4336037862678276982501283702243328 4555377743626133670843307018682368 -238211096022078893835222454508716032 8220730779887535592930961199726592 3195419442939789362402335645499392 -293995775424832765831965485593264128 5423352510640754885794918104563712 1053038384948696872217076429750272 -114284304903981896128923367446151168 2857408581519606763803167109939200 347603762132719772011204412702720 -994376528360034484793732380554690560 3387345727855866861895360704413696 8279563117622939879841426118279168 -334739066740846612933922712063049728 3988795795315651659683233865400320 5273231077118961841106556775563264 -89971932823626244937930981404311552 4299556141291549685383750001623040 1234868338849238980839522602844160 -231178384012140080379241626058358784 1622961497890555262649628933226496 3703559550699961419671938302738432 -616642944928840592691262714693025792 1111697883768811983300048109699072 7083086002838408203415614815993856 -216518903623399817579785341120806912 6926701069983995722412740604592128 8775673361782194134410621028925440 -724656571690111114545720960617545728 9688038698436157998282863984771072 2821229981496164706658462602362880 -155873586974263230289257217063387136 8176687044097669852850367225659392 8271916723867563422315202096398336 -577937350926314998700032865142308864 4911045475279289074454710391406592 3764538805685814442222327810752512 -602260791093497085795610199655972864 254830818422136854515362905980928 9503162774233161964201667119284224 -62683319310226340827308473320472576 4301299530126521809928084474822656 5559897540631674819589081126666240 -254046313416851436074112182170681344 2920655234674369208290532866916352 5317042850930085454639557414748160 -290280919842480343517254829639467008 4067083101834997864754622387716096 1607689763737310197619804893872128 -671446272364834570326886409398386688 8166056983653561040900285706272768 9428719103232613076124507387723776 -560601437344470249279585890475180032 880650187899899232506889373745152 1471634839676707348541551948070912 -875448360330052999852508156398665728 5643228202564150263977885686562816 1512695145217516959277358656782336 -816985073498131642092626586235830272 1030253801473235541287690886447104 8982892331407235405252667251884032 -747048825632635610266324895327584256 271387875305910621036478321393664 8413759073262998557487096863391744 -929532750327575518047218513622335488 9319972974878809591488908609191936 6221514657712352883423565645348864 -249550915939868310649882007910219776 6640067151304840271002762817306624 1624678374668465899146379981225984 -826866494861934006909857353152069632 852988517858098977016666233241600 4873322102206673831522391352672256 -414545122864169086679602783934480384 7476964378290518118814629884854272 4313860733047703312860269166723072 -476953938361413970777597907220561920 668628534763748962189215740723200 2592671747704391239278633418752000 -747979414573340476280049768192802816 5069850809239525488017503823069184 315288733511810457754664825782272 -360412810246783735969217166484439040 8832386045084799841413506923495424 6585138961245876692229957064065024 -745148860209018253445190501879775232 5782086120852398827802023415513088 6717203302754341385310617940787200 -471373777867169169230040290316779520 9682869200697869538253409760575488 7904559558160691948546467278356480 -839086060798830420502349544737996800 2475992517115529288361485187153920 2715427595860627331397255163805696 -671650897395166287500816809707175936 804006564773339701058487889952768 4591008137036818897743666330206208 -699833829745621476757273973413117952 9533444526437363022595548872966144 6419151845127915235926381445513216 -516556398550023471165894917584060416 7294363137748789810912172137512960 3159114659149630974401803024596992 -3571625856974744936983111753793536 8643581946349374117782720931168256 2377298193722029534903058806341632 -986871700514245837172016482197962752 1346780608414394200253969440178176 8674843801507592460390308176199680 -234625513082097859021230466779840512 4593176647989190014481689336610816 7428670256574555314259019343855616 -981397713266092090695920046896578560 4316411944580295825033206767288320 9528825774320097548820528339353600 -256733632055504426049254107572600832 2097215591171707024966718895161344 6812930708531763513587843807051776 -769422095254524320516325007110963200 1598773715635230849809185729675264 3473951522046301649098320683991040 -199262485410171766195296125256204288 2560952110427788100397353727426560 5347208102521277744373806141538304 -58299487424179150560859869889429504 9836503676901538110674150505840640 4132919795990138787187017708994560 -896346388498227371174777280385777664 3802437269643513240031474420285440 5167294236784266339968263756185600 -583676492192830540662728320773783552 6287784087957279701165580306350080 5278499386899704202727397313740800 -812779842354777447046912079105622016 3018586592957915785916246795485184 74901684902998779634514516770816 -296054301587626448577367068697952256 2517406607257337003819343552708608 7964751280836187706315987656638464 -154643865463514582984446995557515264 2516016514881942909434457728483328 1359586300985227893876494247657472 -916499459385238354515151604739473408 5552989897841164611317087663554560 4406790997793905042856649015951360 -393726499738910575241427120283451392 3799092638871609411996971163451392 9742444418759531212801413128126464 -292113801204336320293336500047708160 3173615123527953775113880142348288 2295004009986783513920623389704192 -901410040107949302898790674313773056 4149553627566989936508369176100864 4508153773176168848272277200961536 -13673211341044883340080339946045440 9987017592458424743269190363774976 920084711931077358554666344906752 -906147833884828860850748049747607552 5175174139825756485713708472860672 4337422534743259813556527686483968 -7062804773110416454806632837152768 6060767742860123035569853783080960 6498828533255409011715527162200064 -816474749334381935681119441490280448 8340544454155755865310248044593152 1170678898633399940896376429215744 -330472040829904589843958862241071104 6440870735178800627971671306797056 3875998598275570733989028209623040 -975164805958413633227044349020209152 9810275668926196510055415702093824 2130608589186362059617473046511616 -262282680784590787109878464061112320 610264781378409623516409367625728 6292812497963482109553654710140928 -687924207753725978400365993116303360 9469990481556676987726842652786688 8465007436024172487918798331969536 -320627457278833811289017633214562304 8761810823848579686378844098396160 3852036370644294500725478276464640 -248775409997421657419654923143872512 1996692851788182988076370848907264 840944554703606949781111375396864 -258989138296859550099762469094293504 6224493703845859577683416050565120 8910753658454596407571264101679104 -792861428045243817433113513154314240 2071253012640301280831449067421696 1349861102295580913152152993529856 -192820504309371878098623466515202048 5142808236102745672346863524642816 7488084728901627225198701066584064 -798083759699922752005286551948886016 3075237239766595334277265872650240 4636716807627514308890316681248768 -476256187544912526907813602420326400 3545868253967163114383317770698752 7985440060207181722256015200616448 -893627440980278053762598135595532288 2083718375413309667778485169422336 7446711624948651400887053253083136 -69491948420891957882777370565279744 8635094701422023607959849938190336 5712287454615407847069940369588224 -166945865780943336760017967393013760 3045743845651436638226285135396864 994964107781957871316264323907584 -399075435231016071688784306474319872 7524264253004919586641758612619264 8536332425373738558899932029255680 -755846569252008341483776987707211776 5480926607279010855640137289695232 8202520224423575090390565505728512 -202240268349759820423357801483468800 1848277463580715053811490132852736 6988314105186900294915600846684160 -682605935013605296366341767651393536 7562495552612096111024194925363200 4319075449138006540196054078324736 -332226511486104083896511987294666752 3343975921931758948448196982996992 1419950590955594631034880365953024 -758882920875315509903357171562708992 2158902086879529963930052993220608 4946219164208005561166110646075392 -7884090069312238302022865178853376 7041453729500433515520779062607872 4877388219101663788449252922884096 -159105125977733750439761985709015040 3736909384281861639221191144112128 8412142714048095370192785026056192 -716565767945302347544642456976883712 4260552168845421553633890089828352 4800259362301760284812183127195648 -838224774171394369282717352298807296 4782037983083241190574768405872640 261429572588460345996363916378112 -467369054223430509652820408091541504 3214900902257915770029670504857600 3622182724105772660877360132784128 -738313725127061756856775415573774336 3847362735335783580923719975960576 6892646041890356298436111929180160 -701812142234461759688210329395789824 6019403359591864688534115802152960 2908389132437562051279929321979904 -424549904956288852266087417632522240 521675026200356015491152366010368 3210626428115597114122334719967232 -959623915513038996235128642188869632 8119043616315892995996257412448256 6461158254970376058597331567640576 -648008993429330005449716009898344448 5086924201728818105153949563617280 956133938324308913751686910050304 -272146249266169399707471955187728384 176043797992849433361916637478912 6022114009043767804323171024240640 -358723485572771788518249502546591744 8763174424085589233744626585698304 7272433884077698889957799482097664 -225579904597256936776412924257239040 2371609261106862146186033972117504 7179997225290857248863803951546368 -314344975589122505967011206721961984 8380984018262936894197390848819200 6767732330008649388322024964751360 -430538642441049288068868827410071552 4746916980631381504037601515929600 6142409082371436307195498116153344 -532613607568492541179664275200802816 1634684666529260475135858397151232 8296778085985740352564111597371392 -541989046645588378944969203626541056 6504855322676981224737248980762624 6778308162773355274097924327342080 -557188700569142205421472370246287360 5112587163426608144543355534049280 2375556464309444242971593606692864 -382426409565380323250687688428224512 3912342054924534024066047793954816 6871853390930844961315872395231232 -748601897502631067830105683489980416 5366773333382169013336010209099776 3595569602470809420420537219284992 -836753473576745572510577877942534144 5495272705649731658466852117413888 5695012770797733697999482310885376 -986535083136717902492093864396980224 8650265136727543071901070573699072 7974240445045308077550078152146944 -491304825230137141711529194614161408 2347328817805421153852840378105856 2245926585071234179369176873828352 -217668346744693970703813875412762624 9141750815410458977135285602615296 7741844803509357635283034352648192 -817836836610228622131099456157777920 8992841784458690366207651978674176 1995381660146795464510080808910848 -200660394996238550700523120098279424 3887009084359017479921122922201088 9705998524266193943761043645792256 -879678893780893990467494536175157248 7057866478108508880801019214168064 227438948125969268344032493305856 -458933837713328014688871593099132928 3303739749170385542237327194062848 8898002339410708780988692669923328 -579358009645888366140617350184960000 846260219638731477786852266606592 7210842425710451610669268397457408 -966227883408338568006129661811621888 5900036571565800952572407793582080 9117654911312332357887984211591168 -124198208548111116543778447693971456 256092146580993333474378238656512 3279150403430906832159497892397056 -705973226305918291720531390941364224 4670122700182249516562174676303872 2841184416988930702602387364773888 -648988675838547351904548489655222272 5659348265171454179365795653484544 101386372405651250645276754444288 -122417260290828081213029045264973824 5990109513051379287610697936011264 5839611542155350158625653554937856 -422746883700590809645168452175921152 2890596338424556680162387756580864 869991203767539763122129281744896 -282359923120004711943368276124368896 1820010402770523945708550531055616 2057770077619750657673235817037824 -493729426783571665909389020060712960 7126862169329558690674275243786240 5467782040177375078443919555428352 -372492120260168141390562556603531264 5339516275497088445964857976553472 8865996575440392680497966521253888 -27511619739880346439262737937727488 8776417494668328695838423543447552 7260018070121044994532626954977280 -178008315129891414490029053179854848 3980165998231949686384403297599488 945136065847296720127560825962496 -612214014574013250881785944606769152 6022808757431552989997204854800384 2699213750076823546525617571758080 -641758493481436676049030732645924864 5620067939777457479410873356255232 1251025949132548619942965345779712 -678785250462724539866986941314498560 5630467729949528224680245978988544 3342608892339162540080759178264576 -988155091697423164260050886755090432 2153631910468624730579806554423296 244374301555737621841081326895104 -217068749584867239679440086630400000 175083201088965771368228387291136 1980464992386326728646234552139776 -257710638920017863710235852336529408 6616065661319764018831723994284032 4402594903959855079490538539319296 -166906586895057273503967375813246976 9114325162982923557900869705924608 9756074544962127275570192055271424 -579996720525177015117845706051682304 8100576491835431819442399226101760 589644786701700707178573671170048 -834392387103645164399391458526756864 4519402746812887474419191215292416 5844277678658902164088562246483968 -205883882624461355621739192941281280 3605028668658300955370536275279872 448632519979089287818928105455616 -277579023383938538503167114100080640 5249140668505330600566088001388544 7843258412552169756804053039316992 -304412423156702160517778504394211328 1429167496241512239043380345044992 4757801531597441897840057000132608 -302456512458861834955623191996792832 6965089007487245564758353627840512 1239591978831210698236246141960192 -374101017328474469538626519368204288 1042185054134648892920065771438080 2552120518456230075388652714721280 -911950263574956003168838500896210944 9766547887679464725869870115192832 5596361010132342195007445874507776 -957263811422358979594048048172367872 3905881353631584644256582338609152 8714708068211399129905858820964352 -89977289593308771698786037653307392 875860825710060752898341075943424 4797559324740026946215078940114944 -545893921464910107771920169675259904 2895108884100397098111410569740288 3590527137404999156712431094333440 -696087783112439710958716282793361408 2090225119388744522790909086007296 2060348542656769215953337011142656 -860488511197245943537240392375205888 3810351330998766121890687016239104 653501666096882061474698713104384 -700917125792126699001081626296844288 5536777742159863387607761669849088 1589738693928722539198517969158144 -365358921786150105101100993638039552 5280956826017235921167945677406208 3810670159135017386037908885995520 -195434124472369813710629619862863872 5578502780949941838638833712758784 2512472860013514653003344450158592 -668740001305892167284682008914034688 9179229223057637917584554318626816 9282584313243072812136426874339328 -464866279356155947778380826142572544 7074660251008155450401792337117184 6372637830935845355193598256087040 -805760141261122246369428623216082944 6224783078710884296726259095830528 438439464572889042465420233146368 -688114399057138328766773160864382976 9878412884973349549228799163367424 8250864587252677223463220731183104 -812832322773311602615918908732866560 6058902425392704809351121490411520 1634729805050576334063833880461312 -957039072478178956086304655496183808 6959094431366793597324437275803648 2408377964197890858971717290688512 -592803741607207806768249377029881856 4696786964039111289818195181961216 7335695435093007348941295288582144 -380215504319239683993761000758181888 2954824089286643721037759423447040 174513362385143320639338738352128 -656180008088084826827102662428721152 3230238702517106317903100083437568 1880572244704125935586853177524224 -407719753599511080664954853061033984 9270105890163762729122154862870528 8911498165918926859332170480091136 -317980689740447637843566795511824384 1075174864579492166349666696298496 7676146182146268558184189091905536 -441234182463055135789317769314435072 838696349366870679997605239324672 772074413260311120026437687443456 -256800935873969201913685523453444096 8338345364749360466258772784840704 2650794912070819658480836438654976 -347004510797481349619760559940435968 9493844462641121159468247767056384 8461940796099645909199549957668864 -321018655095691008772423703311941632 799021032161419610235220254523392 4992921552217288006638611392888832 -815725959764839273536509288839643136 5848900778106775908727398747602944 3157708714153726273824872546172928 -587839435972998426487812929234141184 3819273391958666297080046141046784 2043568969060072432064170140106752 -436646725724469475205897269123481600 9167640228184444201455958689316864 5987641346876251532583374250049536 -84876518458658201198665399682465792 2581451389194572621527026658967552 4756934110060585312389772024479744 -705952879910396588472404948623032320 2672344639607130351030775968694272 8446483742906579826559312117891072 -811933949436101800603651247884468224 3809484395999132147523698332532736 4122559774783752416133069869678592 -888369034138585081981184902755778560 4840407012535649862185642088202240 5569050607206149589773665383219200 -719181649300184468186038208800227328 7432750473023120072181780328742912 221058969703220836168429213843456 -850384924458364162511907789471744000 3711269766300514474216804180819968 982039802371038446948488656715776 -819183828594233713590363782511591424 6948264540966151335753065481371648 5438776589166662682523804041740288 -64218226225718017122105721257721856 6521170841886703618726832323428352 7038194600211150992040416788873216 -242877604941058618244499895507484672 6001312227484610272200301828112384 5908533984735869263621999114059776 -856939073984731585564626751764561920 6359562321753113075706080025116672 625758318424917095317030228197376 -736708205653686607432345878098083840 9103491032710073503405759430393856 5792601059172239650646641738776576 -679162775333180370314673597580312576 7396364779073664412676699453390848 2623220452084607117106834537709568 -127089717003960068508168434869075968 876905063571231670095362759065600 6972092498134955246930994785157120 -379494189608306713727098189789528064 6680857767610829579533262132346880 929457171371827081000307228934144 -643362395692736376677835262358716416 8110423794080982560782155155243008 9672485273907745880854034814861312 -599405072597909257358650550440165376 6915947966486080417948269314834432 3702714668467753365277772345245696 -794797280494582440462787641706807296 71839935705906126416127717277696 4104187905613082302352265863757824 -39062100962655327332238592957218816 8177092908814264841262257213014016 5292684423265460396718741212102656 -65298818197052416742331066693451776 7548257178914255966467978782834688 5463114061618953664663506389041152 -500479980704331913325186029453312000 8370561529124822683418950316851200 2208977401464827241617594924400640 -201695067752657177197253698189787136 3963419302605450650908977686118400 4585696343500532428576179003326464 -676460105300688458173802042376585216 2065095059736641884675153325981696 1170299179104697484575217410899968 -213193090941894487412958350305918976 4777295076543225586506471558873088 5797099221308447649626731017404416 -631036967811897534277126938177830912 3835209679781108615154082686959616 9244169502918416232075799627300864 -114250010140008272822044798645960704 1884611554794557710741758814453760 8883848480151210139649320803106816 -105091410028392651527652608722337792 7529423235550001401050257810259968 3329746580532401521540546261155840 -440268210260341363498097421601210368 7083193844126928646055213446201344 4993702460651950311015933403987968 -571504246811297103838513235746619392 7533635080650984910727380960542720 5523589061970335656898439650738176 -522059382217822835276570037187510272 4458837197642468170620134609649664 8105363215267630887707409102405632 -145301707027884774398985501847584768 1094861360851960947448590020640768 5768935579282085174383135604867072 -460889754396378963029740269089062912 3552352817798093477532856779538432 7454227720993968493319121052631040 -135596230021864712783189474457681920 8232930200499898908875670167748608 8061461400697566113510239760285696 -661142105900944548260936795622998016 1324326998458875984591215703097344 9637437624502402353455007384207360 -171170517533137089828954429705945088 4137827180076854067505163130634240 2573528829780426405653420638732288 -739332446575277234347880176026648576 931596540666735163624350088691712 5228608636093013032155392101056512 -606944890357879973453034169573572608 5103864964707558069768549545541632 7004160208007060386625022614044672 -910095302314666138998360508012167168 7564251590390230571238531337814016 1210430615953734088392962436235264 -49158986636758069524085806500675584 1573170328201382391908055574904832 999144032725121662687340482527232 -58800365513061167176992051817349120 2462952667455766609273811634225152 8449344854682930951178153583706112 -128870832417543247134401945726353408 7363547136770204206042839737434112 965604964210594268092047976038400 -269462076045710234274419298420129792 5584717684777955832540488905261056 8448146814129661937805187243573248 -480998243303292423330854512942383104 6063638444145633614492742824493056 9339795643580640052728199091585024 -990978107385849043346001135017132032 5742828000178199506661135148384256 9588581546623010632810730822303744 -871726949834228869827139131905409024 9297231542022250129152342096871424 3677257190424170681391400982937600 -21606386118570714998121992355315712 7511648289768945831453911848845312 488040642464019553940602649313280 -217271023402549755043955998778720256 6208597914070828787962610897125376 1551587940664087336429992890335232 -995575284706544587965223509417787392 2234716638952836522299612081422336 9318080017119121151559937088815104 -196697494057275486141562677356396544 3836715142930100389140244440547328 5651724829792888512443909903745024 -866547283710521778480100203806326784 8175642823102764599997867105452032 1358895078649988665549845619015680 -579103010347704598334936370489851904 9883664054236979085693871112323072 3580197441346692872705334499606528 -394018990439661389147636056419467264 5011287033951943996780956939714560 3273910466232559647649078139944960 -442448730166423370422130470937427968 1503630341759756098761529499844608 5184374042733076322134455067082752 -906509917500940457054870363262943232 5603052830603093236345397122695168 3879744740328634690978422311616512 -232637914004539313201589549357072384 9218570794347614767675107295887360 613597085582350243858133930737664 -991249775527441314489946406370934784 9325671636745854139704073670098944 6734497337617369375437278966448128 -190754785898380275185608137247817728 991329325360935541665423784148992 8679475150365030425008477671784448 -430072360148390739622965959423164416 4142754294287744745561978021347328 756092857935275466503176002207744 -857301242406528997002905880509808640 6186215432819734498411136872873984 4911320629318487297435151166865408 -813004654599417418731462555668054016 7795078785076337161597210035486720 1048440222622807449167207587643392 -388183737866460162428310312550662144 1302733119445529522680973548847104 2241390761695794254831422613225472 -388041282401621527849212411495055360 7080235946599681137796964306386944 1701905541555551147994679259168768 -173504342004312414011065809380573184 23711594695312359593392100868096 9687452827531755948184262219399168 -855452458196861349271350337435860992 886806665617857167496216565514240 4676408355084084016552937164636160 -463376045821530631595899677183049728 1908120705349986779892886114664448 1202528179712421423723829572665344 -686681499861825518521646738541903872 3720381904993978110130856312963072 4781849266972151692138219059544064 -195008676677115218694963852331712512 7529394288890660364175319486169088 5625457720729341596692951030824960 -12825912332038664457318905994543104 4390579829156883620484619729633280 9974254757363195993837428008812544 -585755916670314459774447206512197632 5417783618504994593132841474719744 6175477569476247330286398152376320 -376103519236310766000719471598108672 5862600453422107685142567166410752 2523456680483333006179970779709440 -479014914487257063953507608525012992 5857984131250506967193737104457728 6606833049260880386648831338479616 -47115330489087323224640777407692800 533096198658574806077536634667008 1602100475204094929227797858615296 -48801391353933201779208813597949952 1911091690811240147853478811664384 2021549802163106896065988145446912 -350936720309316135767521505281310720 6173033069392765036385830539624448 3505176667672839075317189812682752 -282924359839469468254503244104990720 1895643642288952619226698744856576 876439498661828179781965446119424 -681007795339848937112130585781862400 9973334881132548075516081597317120 3475958802175074492579753714778112 -877540521681774260181324673578958848 9819621335376240420777030628409344 815793969672771859414175553945600 -482727891955653403760622300481716224 7033746204860514040601946858979328 346355921061352705863217873682432 -550656391864452417030633740616859648 9455827824834176696181678095204352 8968776009062306582411627441684480 -598566338502404576080739176865071104 8741685240991238583131380291469312 4832673133895863487889107117408256 -731727270281370627796735971647553536 6097472039267592233433672380841984 2251314602194744568625275527495680 -382954132688036923208155733277278208 3050194832213334202187714964488192 4419907510031731707300761693061120 -458414011039232086162350360863178752 1390046396902438481121012283867136 2623340900874737973419415911268352 -483161399825629677896835147493277696 5320028387301394263319788551929856 2955228118053193583882318896955392 -893745939202858250353013481573187584 4345321819510220105368369998331904 3168256267980584513921746330451968 -885331088568590094039494877444571136 362431862871736724555455617040384 885330644978651998171966793056256 -540779412218744381511767994862141440 7545727131249982194250572743311360 406440962967855991522443650924544 -335018563085359067282197462443360256 2750628157610748249980660428570624 4063346948444578968819391178735616 -53542110487367136497736434673778688 5348208532803492477533434436124672 6357615226906158252580739181707264 -378614808101623644308453624198987776 6048827069508182452902769610194944 1920146204754031512076084785971200 -802205646931171506110116021816786944 9301045030368839177028456541061120 554854713275815244677131869880320 -418896220347643896467176526461272064 4061755414236646849785438148755456 1989009221970562011982003515162624 -551830806510771919590944592906682368 9840174941571801411644711795425280 6739262639218690715478991845720064 -202399345577618728734532893021306880 5837856072349332087278889989046272 7806436895607207401336331084759040 -528198877688779452882646819233857536 9771004121076529419194200586452992 1452176782382845148635666826919936 -915402366031731960402935659286757376 5441693420674383426482753549369344 3607075650131712153645029083054080 -215786951738505351500073757583605760 4537475809666565121219223741267968 9177952869661159410283935101353984 -210545362796212045222439621691965440 2150711839946828941543097552076800 3082486136434778847680091866005504 -891666919883363226410192964222451712 909457013967574968508331321196544 7113927141517653987495622557564928 -36745251117021805462651854504591360 430101926708770117767983605481472 9611899302316367495242632237416448 -769067210176757383778274391485317120 5328232300901654015954613419638784 5453043148157800059023889038049280 -147962167907793133820996622944829440 6929437261314943883413594893713408 5611157433258041089996398887174144 -332016899734111843315584893680877568 8539759515216515024658192954032128 4377018044001119384316109259800576 -158675341055319356388448221507092480 2419812298315984730569073515036672 1573328349242810417735438088273920 -703514036626410905060791516347236352 8914349147841702269189233047502848 4073241242027754917847093909389312 -440796458311962803367968843631689728 9967296873459546457048389861244928 6115244674771033243565757885841408 -267292576231258526811408101005066240 1150914417997746661864266268672000 7887226575610039015417050717749248 -70233333190488420568202910906712064 4256999630578468744098831107358720 383759382256474184085586554388480 -735383055566426762174528056517984256 770357252496341568519959836884992 7759146836080205995905495597056000 -387749704152711141542318092983468032 5324067038827569647864794687995904 2299526508988540777216211557548032 -401754838566251022500383560390672384 4230794166564389891076627445579776 6125772189912367598612412020817920 -426282700262170825905748232976203776 7392394912241769371932678661603328 2725608688515620102775839249137664 -340458360160473573140179763758891008 3452845242239322478456786821054464 9121905197489054725877670092996608 -187959753116964375945529509829148672 2643212875848422418351325775396864 5735625143140087309473547573788672 -46037645629322165677878995010453504 9302390932878056856739979070537728 4223924909594211943229238328426496 -66878424713482217836924580592091136 1797999491387946912439875491856384 4680173726910249543071279075033088 -839256870293768889628416559915466752 8980362953068656522935746798026752 510320157735973898953600285016064 -449032128074422222065116451514089472 5905462153231582153427808482754560 1925536788513511932747003430174720 -445335378251087601804500727477829632 371715940975932118949797071683584 3698034093169161190036467127156736 -113877930214800639548177374003593216 6616816662074309302848850388582400 4601178559493821999745749408022528 -883515479029450862801797564185182208 9921259518103644338596691383943168 2405498261294013867410457456803840 -46709190896910600092995711555076096 7242956522163122675580292378394624 7452340162021813453447490747498496 -293014821411106751569029096309522432 9923178501383173384872206947844096 6999680489702622165208057130254336 -847972515225213313759812922856439808 3670630855721608159573571199303680 5373260166049158555188276657913856 -365973213524776947325433413472616448 4404143095603174321146213089411072 7975721944302744978849272040521728 -238855275932134938066583087120121856 7742043273447613433173983075762176 897229403405300348194529451442176 -27530330788601290804684145737859072 4590186557079500066355243273682944 929578998650697131599989598846976 -934684184037358195085062566670499840 157937599206417950198537442557952 3774812427353233598736573346611200 -58669058495787390805238677046820864 1271384002028728288868353280311296 3413975087450973657016037462245376 -270877344410314728844343515023409152 236420279445075637357821789470720 8103664466051115760007484868132864 -764953443900656151034680031494275072 1654100659997875304271551880232960 6088435115594191970694872726241280 -575467348796782645195299071274778624 5827173804412548972670412564463616 946432659032249427692881600053248 -125969117411244786686182023122386944 6036637726546400395206968135909376 4847217550252473817912330095165440 -412617395509989464337001225346088960 3866454543322168261925254935347200 9391575684903544781556431527608320 -971519600031836614379514672688660480 8145792090706356813551213406584832 8249277078000151941472851209486336 -607992540140359989906385278125211648 8961655603386041241493050734149632 6924659401362594444836683695259648 -792252860508990571702891845678792704 8672897762774176982998904704335872 4083542499486819198182968338153472 -441894332231235801600084374817079296 7282678396371971663151327732563968 3064173700337123408674837642608640 -858333268293386920449235228349693952 1762480302604523315541473354579968 2598512008416034743096238348959744 -731893429806737497116826036099612672 5399917562037608452933468676947968 7965521422375898939128069562040320 -662765081683513371653107716875878400 5623199430032997566629850220855296 9199486881267264772230459496071168 -636843379311591376867240081532911616 6745870596106328556912242304483328 6367899305458965315452894378459136 -137055122679537770042070167552262144 3760841934567871641531937124777984 1464691586513809566777122079375360 -62637751882764438627834800331816960 9091679657814258154387663816228864 3996174564516906266499565955842048 -544577096444264017778969696477904896 4564541210226392286018535835041792 5584681931610438988939625171517440 -897779640860997651276027041341767680 9647658137568389732410961017438208 4377312174507477287401906048598016 -611072766173522277837269926691209216 4189140426901570529282627001647104 4953780624452877679466518834839552 -514679331010968333221698590197415936 8335141207639259585999892878721024 8230494249230088286454706360811520 -153873025440812863335920125115105280 9797415099424932509190385787994112 8597583087324618031992295873576960 -290360108048959747041852409845383168 4266949803554408670458838467477504 8794756458241098915183011704078336 -998611479138514268746097263722364928 5630346079198317187610965228650496 410834373929661293087202532655104 -212884769313788407136212602241155072 1255795559675334991462048156614656 3625739623517184958402660451483648 -299772405028971707469846494203346944 7842044174032100197475994820411392 362310796958907740698269276176384 -369747802044415349725868678696665088 5541899860168482991254253680459776 2536465552535587813816709823856640 -915819219163273718609546763927814144 1884442466005855042801204360904704 4882217930438958225939798262022144 -601004596586871773485262230412853248 9069683780826545013934203466678272 3973757355531719326992475548024832 -871399244712709063730997882890747904 6610168529514463672725610210263040 1168927727007409122312337089363968 -98557280415357038552979645113827328 2168258087338509451929630340546560 3770301318473952123144013426458624 -431418879193962342695625643511513088 4358871631153337719753024255033344 9727646125951258169399095689478144 -40048069763313012950200704259063808 4766206638380910561088888643780608 6416764994370395794825399899258880 -928999423848589099239639781832916992 5140160473654732079369767945764864 9678569040277174491860522437181440 -956962653062371460328233805975388160 4573000128669514910189921968848896 9490662043632271699738209535655936 -291730255704464118451659649870462976 6471798701626415192568623064416256 9927817597694900242555414937337856 -774715518695667048136913297984192512 9965976210528838168178339665149952 478913960569527195510381370933248 -44950199702141934774771514184040448 8812977462881422695548074864934912 2875069168146635612704426061463552 -882509570211004161877427041091977216 2290013981144300302338245814910976 75371343837067057113867913003008 -933652608703936961538952981309816832 7867461961492482449399140187111424 5820898069104102871640933822103552 -92320156361366775364009398533881856 5077004513562352047372237732315136 4324126601156005834794788427137024 -790549114688352809828293147472429056 573983873940083291867187593084928 8643439837840475783193496670699520 -967543755186902776985524515354181632 9021325194119201937581049777225728 9382297005586882787219431288209408 -274780937660165171099901040087007232 2760610499393839170409596348006400 9104748953036221885355345544478720 -671526750420807887033159023991980032 5908788898986596745102252153241600 4983944030936786690125919196020736 -62416507544483953341400805281890304 3263538041679926472433221052137472 1487754552281105666474121808052224 -868989837361775863379696815437774848 4702998501475971954982404849926144 2253161108961221755481022355472384 -588032411552060584556160874295853056 6764316160617395222292531379175424 2039821740213353112561020190064640 -400111034239312849099794873667551232 6518036401259761473865046814621696 5140156847852811425537052058320896 -500420020340191922488361425693573120 6684668038466221157373541554847744 8880938634731739095510358746464256 -114338311488758835280475995622080512 1652553389381991343235381870985216 218260290521867786328211086901248 -62046551100135532956683838997659648 1380394000153455205629502295113728 9997105621861403763490574064156672 -977810580844480643025867094311829504 480512649684340805288095912034304 712683530246599200246936497029120 -810179188177810523514718162973097984 4795203313451498881845135939731456 15283256310411922567528418639872 -256008955234617771166001296333340672 9587300164360580399245462129868800 922840403207334786967769876267008 -338982929005202735302342200688377856 4925870728448689221949501783146496 1010274906238466510796439236378624 -568648990519048686898535260781281280 1680366365997390859360201013723136 8705452275149876816862221512474624 -899959122414376066793531952173416448 8144663281547239755309330043240448 7497039228840885371764349805264896 -229891456052817978256113840471146496 9998077679561221590157524662747136 964498906220511240762025878487040 -887252749432709581460897493482995712 1445367827310122987900836780179456 7830412880498179196055939429957632 -817651822195228451220943668315684864 6109483951834772243830962250579968 796204951447983722489088709754880 -285703163130624283134278115583328256 655610588971458073755011321430016 4548765378047656101447355942830080 -236738214975844474632004280745197568 9279924393045728522966267041153024 3697519877499747532919698725273600 -789869976459525248155966733146914816 3035637556653372491311737984778240 4540492039659321589303969901969408 -889419950795174712299185637114773504 6597058940400453175837275191246848 6488314783082796576040430543568896 -351954424265144163952783771505262592 5210462303075925952515020024709120 6576252777778158350004556115476480 -105440121890612291911015877461409792 7420100171893310840707608251203584 3891647396333612891421575131168768 -684014129825920130185614779937193984 578133100761172316332505331400704 1635532821508072885684193913208832 -123287794561940251380697364005126144 765591140378398431865035338809344 8766833308536685957221280546553856 -98263850272562306755853419024482304 5208121083637756373214652941729792 92671733851793150589672368373760 -202565351136851092608567633929830400 9750222843373224746667953916739584 5388707040238066031468198871695360 -332994642844011074715412496071524352 5301795883475990989224789906817024 2398270588406171061313038140309504 -167939398562760855042111794164269056 6363831771686094221889178458652672 4043994110547861735171830918938624 -321129138478738391034674282965762048 1730483170330991665666050106589184 4469738422507098313596927844810752 -403931900821599305110094236534964224 2762815865725434344402108689678336 9438639224285093763502368448577536 -456920253453431959146222440564129792 2236055004267951471825086662574080 4705738048436634368969366275358720 -747862160355193242613390556853698560 8813324434869418116720641785724928 4311770402904852072153562400948224 -821200820664467881509502981410652160 3158930770801544616397678156185600 5753204265449553138668358489604096 -770877889109196146084809504972603392 5394617232349669803023805475454976 6191894290836735076097350407553024 -113105140462622696900814656638025728 1149514160432047628203687476723712 9812146434331728722087016723906560 -599084176341723004814632235298717696 7414935471237906910257374663016448 3814194840588698680199505434902528 -777452848774688190431113815653351424 157057754404637529485870582726656 8385627445039005781939140939481088 -949950477454446817976277993575677952 6647184534488030139124546325708800 5686041075085955551929354294394880 -786444825312398166094629478854557696 3778052762807839594276967111720960 5483707249491103966883821924646912 -32956267670829533181820440663818240 6239182147544522400004002925248512 354333292993284837871822953250816 -618514592057779739494597771558649856 3287845373220822594856784802873344 98334694754314176809739002839040 -753090848636828605962601059957342208 4456058419008122042735878922567680 2139153441998121482630277848104960 -182840395309775838893475629021265920 8425550842359303498129617450958848 2034789911613003495383381160493056 -691321154857135735376213288964587520 8682001952910401987094188738478080 2533308357687194452636393413804032 -900859762768421340846593872544923648 230497518221006312811544331681792 5030137889102661520190875373666304 -286688356275658569562300606584979456 3194418088577727207248115829571584 5388645464257858666057588931559424 -876739948223909357438390571588648960 3408350325079688116989926358122496 7235470562528574200054248233762816 -860230548047078155691503620867489792 2575272554804451181144412939878400 6422951843334601252435702338027520 -139721112540248277917354277335990272 4176916529680939667367574189899776 6461593859996666775000969176416256 -482104704216127643440303405369655296 3939333310391684919785956329914368 8516576418377675862389184490635264 -350871608827223229494742799630729216 7992480605732861395889293243711488 9261528699726219512310330910834688 -441292236343031733533912607955615744 2106031732728652480138953703292928 8617706966265604204029518106591232 -49706864928700102877590020941676544 773114010647576697842398748737536 3303355309337080999884573487661056 -393693623645561189744248803976806400 3413456102326376175190642251530240 2521211479325194316911153304829952 -8781238577465389900144247174070272 5900909947652655879143497391931392 6131584708978166422912131108175872 -707757100384951589603390061866385408 1347601658788736711627128017256448 4787519950753671876991914224910336 -966503513269312892341233565072097280 1240918471987254788822203807825920 4908805306039513964595253220474880 -99000384186324074721645502673190912 4069478444546583763046438031851520 6728386687665098986189704856076288 -464913906158847943285760641732706304 5462161227587411395393072727588864 2377701055864227720928892593111040 -847214914765393370125212518939885568 7921912866435338526074224588619776 9025303684938854782794498213675008 -536438543830975085334509254128697344 4805170894064347622214690569977856 5308801122534021971822788028137472 -952996315942863157275590252843499520 9141673930206568542674320856449024 9537644485565424888552293966807040 -46280976461119440293772036671537152 6641587154602446680574967712579584 4641979534384040348966112569851904 -485969921066969794382347277600555008 3049816943978063807814978943057920 1504829330968163691697979573403648 -999666628796524767698034850617360384 6010341153450189011521796657119232 3905602262176703409374531604709376 -154984307154335613777941287879573504 8934095242953406383418709764997120 7687535086047963459656165063917568 -723227479638173840367137554903859200 7267211475788512214523429854904320 692509953589301669179923655294976 -280328642094154890960686547497648128 1146960233363529081799131306917888 8182319474092550853940308502118400 -17512650025699778584562755562373120 1378335333810069508314975669583872 6697236210609387272241944438243328 -589476474214720239488390736113565696 676123614236500521741285035343872 6953997368699997580727952647127040 -819645855805410785222665801148923904 5790945770740176954016411859025920 8097525776653086091535042392096768 -918672926134151353608677655935188992 6213988130961139099755172478320640 4064460348630641143829350567641088 -869408247179903012619596158807834624 2400138817855848970479261496377344 9961717556722713755900161824915456 -611050072400426440437916688812343296 6109950545230010772128001211498496 1659924408076542609768579273326592 -29178674204029983529201562491551744 7760311335442410400709299025215488 6995067434172800655972094210736128 -464683312971419532576902926053670912 4484736485515873118843966838538240 4952268393184851032297868493848576 -749282787479356169702737545091088384 6618221128832100833229289564405760 462485632565562360333177662210048 -515572693845934308905472216239439872 3964776214554123368779498334978048 9123456126191177144461323457789952 -32296746957352411712553453535363072 8186095800102764820729690146734080 9012017618741995322941923599056896 -49769355456368240192236217687867392 8114682492381076801039962206109696 7198570718926548827689438819647488 -618886030813186018866345831139639296 5964919651852893825900976311107584 4182186709144257330323283760906240 -248633778343662198612645657691815936 7308423694264182299414920282767360 2995295696272111561769172718321664 -820394466103555425335881822273273856 1862105092595962613010520405442560 307488048922915577288314006274048 -362318081219684113533366865722605568 5206425528941349344916620508659712 7329240603862748661711014010552320 -433598384207405020665129016563335168 9940148731446991111717611122982912 6758940456247995958911657595371520 -824618344960133410577568885016363008 6796149489326533131824866093170688 9120860207419082192482362915291136 -792317582783267898135751372830670848 5882163467649933655454162895241216 9425586275929888166573646012219392 -14956338447138220976925189643173888 4974610120030176880393670832947200 1943367213085633212642391501045760 -738882280901922797856723183182282752 1594136051463450447324285419651072 9180497290103628255101193197453312 -772801851345568854442912808152596480 2336554760699375001694084983160832 7972501454139738334599362818080768 -362140993613327885737591628128845824 6362167294346566590993273551060992 112543650517656784602708276412416 -583111648165241555423098197927526400 5256504590600817818581876575567872 3271175628815060243942373014372352 -36802724402686784249442807201136640 105841282569380807540274777554944 3503885444199504961503588465508352 -301169666240282049215262407853604864 5531334430481972515383333554749440 1138262202691396480416050147491840 -962250571897584467039340597690236928 9389109522048881715082629440602112 9012015294650528393429733167071232 -412050428466736930632830782481104896 9450524194771930967634618445987840 4592230941236825792895849917841408 -865145807132903506647853091373711360 1847368905350872966803701234663424 2294490092117279556594442931535872 -996402108803834676436491995778646016 4104458951813764656148314008322048 4581346503833991889165902791311360 -466472221012760771666301504328826880 4866270413603646273746948803526656 7429379360874272790492145185193984 -424795525655113748239120483880009728 2150803656743794413346226259886080 8388174327711456033375852368494592 -97113402688787024854846546552815616 3092225327219601592612135806959616 8870152066821044508328112009773056 -376234687162555574695133877217787904 3756182569235768956469613214826496 6194931996311572642206522200293376 -867680487681528529467720775929692160 3179607552084601141215333426659328 4737014686287972466678259282608128 -245434210041979147379445229074513920 1093102742624003797541127490371584 158234095245796145945424617799680 -651876366881122180093313930305208320 2289266151782784620437266212323328 6964502828021493297965944771969024 -16634297981825503180436807574618112 362178357789867192330695491977216 3028843390378595809580268419809280 -86702162946999681394472408169054208 8354281985708441564522123267932160 3243225019846661608034978811084800 -588203002975235465548416397592231936 7671838088586389901646541092814848 3352096899081168523312513383661568 -704065963128360651418666526304108544 4532617042607331128973603572285440 8111932499296462674142667990892544 -159146303372696567570296821172404224 5725462188807927393260871780139008 7162916074585836086450229025439744 -108511448087800538747494137021333504 8153335332797699185919991161552896 7564030344707647134908631847272448 -498155151144715125414439752478752768 6631392470453976412021943460429824 9684562130450486354721696078888960 -879607069889055772325606444299714560 9289862836657727292840749041713152 7356255743390757539352168269611008 -255564285421974866006526476307922944 124130909190181242585207193731072 9801314499169066967661342617501696 -288883342723814443895703116214960128 3236211347142384060430696564391936 6597342600207569649595727736733696 -405329273058667254447263242963124224 4827419786388311315699120562241536 6388405923369316122311477241577472 -381337310496026422737790273805352960 8569937983722988344773025680326656 5097309087935517400255513569001472 -384465780416162751317396615644315648 9006750323633234043989725898866688 5245481834423802648085426864128 -925368669284044459533715286653927424 5689563567534273405232440938594304 5460719543237841068341703884144640 -270828670974896515320153967526150144 2248686086386097633060897016512512 2470632958509937843805088787726336 -65987600787262781122956684681019392 5500841338374723473112153777504256 6911412229046165125690924977881088 -40992887549339300098752121116033024 3027928920644508802153266934710272 5634146077405004357041790728011776 -664207068410897633940008065013121024 9003522058388233766578918231375872 4558274760522370792061214308433920 -841744466748455885857038986700128256 8286466133753394380591715493871616 3981322389375519948455737433260032 -400194757394271509371726589904027648 336869182297273729948964425302016 6128584753730494673712359684440064 -461059631959164590515117782611263488 6670204630570069846826674162761728 3073479175696904509032455427063808 -556042723378604329435071507710607360 2462754083954283456619226098302976 2844213315843528464998248614985728 -534938350942419712009966681862438912 28945658778556768696335851323392 2318449300307893899588167404617728 -356135023716088540431820545245315072 5278685585525405120195782638567424 4825891274270372208130807702749184 -886147717155461144137462090169319424 3095146837590369618301899289657344 3799183474729119365212977124868096 -881995872897270429866009750249930752 1795286373601235801438183762165760 5542092143773674980721225851994112 -843688819090859133059250315969167360 9556324692254428760815623966031872 6701252924535564149130456742232064 -849126461554899502527502210784296960 8743572865980238143720802763145216 1672201797634038428391417248219136 -983552210569474860534302703267872768 7813539038635973744804400451289088 5422200697006656863185999025405952 -234173219787872905559154255730835456 32664373851950937424992743194624 7310026052226672433685140036648960 -847195955140149237135339801918046208 7065599354285962161468506965540864 6991035642806006753797151333023744 -417000926973658747631683080552448000 9912516878493173783567968055066624 2525202522391048383836240734060544 -100773018112087542357614966991749120 8586586254094877934490516763705344 9629846873700111342339008545947648 -291060544230451159077269980022046720 3750841713872716343953867883413504 6687602765752271942826145947320320 -685554514967010196350803736134680576 2687936152155965317323997692559360 3753365186811878047366263531896832 -575033907632183426524202620868886528 6955306547863681397542074781270016 8793750435777425671745554784190464 -312472279067449426773827865525878784 8712336020065676673165039276916736 6605507443399742697951532377178112 -921014266126094691140003442479595520 2029547074642046346347322873479168 6107196571683959636166752698630144 -271897733570873168067001459564085248 2950359020037435867503447135748096 9046856516403137031768516711153664 -638800494748303610070192730115407872 8038661996139843517475359329091584 8924525675196873672448759212015616 -169598914960886404481060869073010688 2279912773215181473510091088986112 8698167920061674306504408900304896 -811903758242546672730635874340962304 5784979484319008825709097956409344 186941455363378346316182711173120 -437627533281952115613238344290402304 1639159471135171788531117934510080 9879585015174203062728541140418560 -596756986069690180659628556156928000 133018148771437291234281151004672 4795584452910496345560493198409728 -238712105997034853834606147440476160 3099120216660960552188384521486336 5491717843291312495880355006382080 -491004500806450937215842559119589376 171611112467592701114356445741056 2032244628450919838591920799481856 -793908350937428425871419119268528128 9993414975465669163532110572552192 2568798332691484194340216214913024 -841003040418486539301155118335918080 5595929753884869815677386070425600 1111233049545333687064516425154560 -343877352501963241414307924072726528 8422657759826337823898985442574336 7487724644404336227906779135082496 -244556306401406461006086187671093248 8101223475153913759109780894384128 7877113024246692755703476493746176 -225681019650843924234632678122455040 4223295132809689655278426629603328 3693247348214086276111789688094720 -501856736178647177021850073469812736 5518216162124797039676860202483712 4593278269212116472929772896256000 -292725656170079537510542176243679232 1032080576511338858119144998436864 7779644328047524824301860921802752 -817781195738135307315376458219651072 590577383997183007229619856211968 4332091982709027914460430906425344 -149312650357686708450846582157344768 4165104394867297497157198583693312 1573950571966965464077184882704384 -46498975235219028270401233996480512 6393627895720076603235362962145280 1717196563789717098277248776011776 -701732639195694594294483858621464576 5308710923717888528331747880861696 659929315944386388369544042250240 -861250923712535172586381519160868864 7143252734740713675721653534851072 4357605634892872422324984013127680 -663101577300189695638630568722169856 3690709969115273729002477428146176 8236744597664271213106427410251776 -13224555578823904651523791456829440 366160230418723848327172485808128 2655255603309302936141138130632704 -813782097081174767791561144730124288 8356573482855009924260500212809728 5437166020183750414739192722489344 -483626685325957435796319873305411584 7069391166047518066723456959905792 9469217226931754892061659321335808 -339751539591690175167234187972313088 1722908562240095755538689368784896 6084953713740692903951106381447168 -505139424351044751168046449213571072 8191879797686211456295873338671104 5140055409262369272175860610236416 -213068537124607457877811290081067008 8926431157575061188066895139438592 3001380782822461060145280198901760 -403920896680142320978051574502785024 7499030601093740146474651341553664 5749932731365812015434068219920384 -976847215491217836751557443310321664 6787279806282138963655180939165696 3101203246049386440709618177933312 -953375173908125583237605435625177088 780579162521533143084287731433472 3731036971629332229218426914078720 -720706590731858739147857005377486848 1627645751194062260006145291714560 9668095393655099888485944803721216 -296070384926580238708331951236841472 392279221167964752291570649137152 1661362492647694659687390885445632 -449257064839921703284545983550062592 3203226565563493954417625873252352 2081428883035419521567905481228288 -218845688737443931033331388970434560 8514483667446396866442300498116608 2951634693346785020838260806516736 -550659474107408432393954896463790080 3834292307221998637135227231666176 4540015934981419575224784971104256 -203571152299419727525343171327295488 3529177763161042784357020835250176 8237029216887965053949325925679104 -865058755918473163070374688541638656 6499794484452858767802718744477696 4889123058796492571079466987552768 -383437297595596305311130453142405120 1348430432042078687878689786429440 3112101391561335896600848506028032 -600049805341941520184649154226552832 421561479535437776939634174984192 4754593202236177514697546709073920 -870461907321901071012272963288301568 940157546951328619261943303110656 7479261251253529355054900217643008 -445942302305193753955453699318874112 6540016103251765744840367719579648 6855191845335848684425724305604608 -281581610516911858353185155868262400 186499545784181637694970291814400 6325075997574650272646192886185984 -725321497328726691543630627402153984 9801351520314510242118954804838400 135872523108869667536843562811392 -592577756363782521357276440552275968 3852655684438601717264444836282368 3792331101917701364644182428221440 -291973443610157200934701403249573888 9989985326695951618347914126950400 2289967213880714780498724141400064 -973557282165283268542013328209215488 7103112873402670101557022994464768 7796379028638501392333762757394432 -743994559941742657079698522313326592 9706576345259784625615487608291328 90757728839423395188064489832448 -225481925911709393975762229714223104 112977887816647724744154957217792 7445142694613999961574240356925440 -568184831851925846169685594243858432 7091610299591319445627797231370240 5284159676760269437026640307683328 -992523886251787782220425498669875200 9659166252962403634966707627360256 2189210427919075242149520271736832 -156406771297277219461595313335173120 9850867826055368519985552378822656 1345458652930467746497526274981888 -868016108876597906640714427824865280 9652078884917729535762940311896064 5738293558343910773670380788776960 -196928587173340930868859928758452224 8845362425954702221161084949102592 3566075671063648334669169049993216 -346223587975057803961067898794934272 7275040896776559987401892409901056 7870344490443097085700866526150656 -972196233242139952137632567531667456 2374246896753713030467566088224768 4042620794872825668973581270253568 -590993186120560868670050852067606528 4520918493372022156105392976822272 6606195208751692054562922647519232 -657972951454204036230258954954866688 4514894055669620459770216934539264 2256627570064408496066235341996032 -553702946668329497009653531690401792 6316876745971172137397660430630912 1445909720212738014291895546544128 -835612060779962133650128156602925056 9333212232370528148740428533858304 8914613952453912487291089345052672 -567155739456968375932073121228521472 4972887858278584060966003938426880 5487786070584665163211653032968192 -611767239685755926111597341288955904 4474726022852129141405885998825472 7659218307602784483840518992691200 -801131090929554735417439584153239552 5301970268250440219362267909586944 1984552319247806463982453582200832 -156741009252208272662683523752132608 4389519775460144702468555043504128 2091814125349849561566112009682944 -635074966577086960308809813658173440 7967658900465356451218328129634304 1379409849272939696125637013012480 -146729569035686310756783510331064320 5656570079084514733226876569911296 1188167548902111046189878024863744 -408274136659593167058516815917350912 1398965628763186276121432557617152 4263656293481524647260103722926080 -359470070851104407037487098605076480 7679037998305508147341140879736832 9855652214634663312369290345185280 -320276084442079775594495764288503808 3594274214299350764369259712741376 3916088215448063414722279388479488 -339190013048738279684789075928154112 651301558966090700190920193605632 418537416152868576142974013931520 -126722054101455056711702704354754560 5122094364604986328674955402674176 1519448705986483364097776253140992 -176374969010452646923398858537959424 7277560694763218721843787746770944 9095678437572964056239084413124608 -108397708405478062381979312515448832 892081051220852879953690326204416 7164480149529780798156262099386368 -415099444273693503771261805646577664 5975943770871371720386787296673792 4247844725001536130511077053038592 -615733336653440180424717995402592256 1171065398490789294664885777465344 977555133427147061862160668819456 -64623164609161940548721181921902592 2190242776754910356638443855937536 4255047328733702403049806708604928 -426657467847180431176817152805044224 2913588712779427784683981383925760 7812901150580406325667537086316544 -707066716482839119426234736569221120 5864349612570395229320002827976704 6601680976025762946208932126785536 -769128783807637903476393543995490304 59996474886051688766474928783360 9354158349833086660472211807141888 -804166878823532014331033094339952640 9057331337358588805186190680522752 4475153673216356366779829245181952 -801969763069565630873703428449632256 8530974765682625772175075936567296 849918393322578939407804156346368 -98360809620523127670577199866445824 5473814243804532254432476190998528 803135824391712044455849732603904 -208887827257777559272558010155663360 7113649975000752345993390027964416 7750929633442991797736102174916608 -728779469673987939640171531197218816 2914604952636397685721429234941952 620233266152428700736887355080704 -677286972033419254192651876530388992 3634224582742212931021291655266304 3805185718473166217249971345817600 -408328487521932827096886455312580608 3573742697656158010617026771419136 8145289057951643769712065080459264 -455908178624393087618344434133893120 9270991096968134430907921042767872 8300624682637379379413239723982848 -332094813576074864659040011936595968 5919608974199837791355826100764672 9136971351291130456754968122621952 -756358406552094603182686143499993088 5779506369366989269689464730419200 1317023801989617282781727604867072 -674035717983942233090637131696570368 2359387164499547617669961832464384 7739050574460400666944569371262976 -778873802541300678499243276841779200 1357227210344019142420988340207616 4260268774553898993563891081936896 -353961804019018599309252668482912256 3083342391923197601893516811698176 600422431220526579626608131309568 -677526581602594391845608778358587392 9265747236167954875161564397174784 6799187792005393325602043523497984 -373343076426167241610278271023316992 2436857850858269190833569171243008 8885198358465252917727394720120832 -804569325988489409488289296434593792 877848203687625572036006035587072 977441899455917646030582860218368 -459833281608523933924441475849912320 2237662951359486245615791150989312 9949707932910269000542951028293632 -473290701051346783379322849806254080 3642082784623380217728560468590592 1333705380165308838516279107125248 -17745031771514891775485573328797696 8668336302270942406652631025975296 4633740013463803434831681366786048 -366841734730915546634004259152068608 7539531776517859062323010837938176 5111735382645875368392680282259456 -477409400228960931607505408408682496 5583269121798536283609210097238016 5958302579783664811139103612469248 -432608462272323978869174270617976832 6585176473585155641389773060308992 4133150351852435970545333565390848 -464207716024771859218799610411614208 6069253893284792113193845975416832 4050037136325377157074338348793856 -854402362896279628913537601163493376 2087493347510075741964846105624576 3518473949068715799240647364313088 -512844402998852218115785350023479296 2881308764947931056970103424811008 1523876688073401981304803428401152 -721650061157844955420470035781517312 555023407567645513601666598830080 6377655976002366830783956323926016 -924580227875909364780930257433657344 4333440298297646991496631558340608 7834801770654131516329388842942464 -104455183772507573544488566161145856 5708371697243076755269438163386368 6454490247887023109000917145354240 -33656870238489432083889890334343168 6628355606175874929923544852725760 214651889728415835143037601710080 -692458944692085077269030938314014720 681121834180726764081752949391360 9641432979562135610845184787480576 -67350125731316811387540965318197248 3923725094868363668630518156492800 3633856393078702814675748928880640 -950734982753399492642987787006509056 8591053005737564297114650759135232 6924296805484740302248276310097920 -339756465898120345514084288979533824 1574672923862081140392217806897152 7133924406858321916916706731622400 -283144855512330072312716401747951616 9965396154431717906927954478235648 9117735548247009934249332127563776 -831829356520255448327814003375996928 112936011280497560550176362332160 8251854979721664003970149405163520 -927189081218626732196825411392372736 6091983813142424323438565455298560 4980171708359100832416691979812864 -300003903303025826005113229478461440 8544826182061769334645860530651136 3119310694343280380229187601956864 -562161947134502920029139691569676288 7552981858143502518175622737428480 223038607935521787091065082216448 -721160853380548962828627243293474816 5498108011479657349159716636327936 9033325237579725392141730850013184 -503393861650582607499616677733072896 775204018415226216498496903577600 9096366761739795106975043498803200 -497700186750733748323630412401213440 9171085018807424099782814248992768 3875342880458518370537054429773824 -482021063106847342283906983873478656 1627007662035545390345928474361856 4752380691759139205136670865227776 -926511974299757894523447226440613888 2808845705410111884170435995107328 128485005595193257679907406741504 -416452027354254197314148679282589696 2142745568046488174498521311870976 8264094209137067305569500243427328 -930340957697180466356120533935849472 9766900390488684894378371798007808 9701985386991357711410472018771968 -772435429527229663196135588760649728 6009931721239493837922493058252800 9305377387224388228203875464642560 -341947787519132725884654225706713088 9069516266972916918378879413911552 5885228613918294348145921758330880 -850224757962338217955877175976525824 422070721594306810082869752365056 3164328685995564388421255324237824 -390719146685384321322534259788873728 2516734083508022390992933868273664 7144981279522334011605045292826624 -526269088199362161209681118442291200 5090345894232269507682374200066048 4569543568689251423129531387478016 -764541107617285000486827086516846592 8845958199586228158797953504378880 4327603919746279901692678201409536 -502595477608822339740547293909090304 5847620917128212842520965696978944 4177752984371726592427134589861888 -516451998826954226593729707421728768 8874834364506454166142734777188352 5946550737710239986303393073201152 -963056244803390121735881535613042688 3657338894886768290724800953843712 5233298833185080736033255452573696 -46177473544653166257269810445418496 4270613775179274706541682662309888 203959092784571254907477885452288 -599612469018660965756932351959498752 6575315120936608955427388320120832 5239863703866462036729915420704768 -493302983880926235606824900991385600 5484465288536892254312302567751680 8054445061607943549775430685818880 -362232175083444153861023531540676608 9634573069556614303629589839085568 6476622848409953554034190515699712 -116813023393221019292308598501146624 7622096677973760567609583372075008 6775722367750010601209064115404800 -281397808205998241069756007401390080 3862522845789604756403367587086336 2961835895360759838064516528078848 -199655969868853409152378339982311424 995827435294148651787077430542336 3728578642164480958707816334360576 -29206665856258305138511117778157568 6678192843122824433436968884371456 5952448408255756247084169946988544 -676630887035291775967748137863348224 962170487677873726590615128375296 8361613907815414911654716149596160 -71900920093493793965018182271893504 9348567713491248358688110327889920 1662819266647533459829299741720576 -730618130598628221552880058867122176 4275935887462433452038312142307328 3999937681320864407902358098411520 -256832748774546857919073889114128384 1770144945193546976931027045318656 5130012082442278475220087727980544 -90177827148071720585386843992752128 7919122031405236744265303565795328 7545758891746411157444125043720192 -129230873523406110547553854725029888 3282526340290345112906470533365760 5767135736977405518584988177530880 -264440032904075524666994134370746368 6581450218265244110609387303731200 9544783566856526050797918701486080 -418137764641593967624463872033816576 9333113472531068703661913624543232 1065126663898231081617721485426688 -57018422453323449972577033403760640 5919059531893468298744233795256320 5069985465041630470344557490864128 -710038860635611588540343504517201920 1456374130380968884580219629862912 5260296537448478941872764007481344 -390142045782270049612084010240966656 2593656747490671208321404052176896 5414397009843366873687051896619008 -394047012307296381543698182420037632 8113352955209080383191227247362048 5767375874639836951253357112066048 -667770841354479831849583043231612928 2454483141779085830377501223813120 6797172960868668264190394085933056 -471533214552632397376261114472431616 459550150018296520270508111953920 4088202110415839144135641849135104 -939874584095550919086979518606344192 2308762473624727097470876672589824 5024614554560377904853112722554880 -764173504375461641553232139504320512 144138436418115171197151753535488 1360627671358105785571516409184256 -107485104233070882747771189588918272 8602514267932469774932722682167296 9403952095315468580827251462897664 -946400685229275514653271784054325248 5563071991164607841780742716653568 6157791149275086577981045392539648 -756442595745467963970716111101493248 7606976348695277519992479197167616 7979773584013552679532795655094272 -32382925290439407259700256783204352 4569386778840808375707400283357184 7554408448186190732056791747657728 -676327821581268704357191249117052928 8579975391329807863394086871367680 4482159019732786097935647942639616 -540722604942948867042242108804038656 1491113982612393472802571631460352 4384343964011710691590924417368064 -352921374245071617462148078365573120 3890271580039451602756673810202624 3180397762989951411166325002731520 -42694262997534417416770050001469440 7961159027410745901322195831881728 8263525925449643927349241665552384 -322360131128800143180070681061621760 2318903650018279981715493704695808 6290174311210778483136438248407040 -480410571016785656861143302380978176 5493583453902027070040391574093824 3953233090492369610287931291860992 -230834461515457142445682939039580160 3547573901732205269682760512962560 1172740252885007508807413976268800 -557535449816655843221898563378216960 6739360221672360272678571135205376 7074892750278897660806763890343936 -56894244813945762758833327321382912 2893523806397739223573308966436864 8167332968576672552303993448038400 -402026320231490219648731131506851840 347107345544673529220253152706560 4084658968264123560987904549322752 -941479452739098064791792158020468736 6838978057859865944660141292912640 9609313929417597799737830563381248 -463245099641864995352223163822899200 1449788031262635542341502378180608 5292182139667134521859782186369024 -741104274020138477366330586327678976 4583457947246370641402099463618560 5136781267101103601456345788710912 -757537664384098231647769335108206592 1878354955614665071349080369659904 3739246305540004686334774380331008 -81113725076401319749934651539456000 2849878330665307696026489207128064 937139689820502401703154957680640 -738448115607035701076179045666783232 4678907411326996682580350264672256 5845261015970383159143376625860608 -40771352608966981047391963507064832 5088611413371114534962758401654784 6562401548688112156239571149914112 -139977845341344156082328842350362624 6237498914759464362858337062092800 9396154313551594617311324532637696 -896399927359649617657223719140982784 9327433360349995218088386218688512 1017623612754822082303346260049920 -377678010209949857410871626907516928 4901780663733138143192694548070400 3985508723277575294392008448147456 -923513926240194521527626902211133440 1714871542318348641392725875228672 6730409192530243791415358426972160 -272630603427623158450711438800453632 580144342880918752823688229289984 7811679852246215611425447842152448 -160379853946621672865867953074077696 9576852662926396598579358555176960 154106429998300357140878370799616 -241499170249174304398004051544899584 1654883504131956854240782787280896 840971998549541785393221198675968 -542428730956315152989449388046680064 9063269275772649743417838340669440 4365195834589309826614170050625536 -22274008467142468633684663397777408 2870539768992152128947755759435776 5750830791268709662400909833928704 -960071933940533757855043794627461120 5672203411309893910834968291966976 1219180009869389740629629742350336 -766263546081398821214690148909842432 1458903765077904968229956528111616 4563716067431585180140102077120512 -194753064884273192050148570059243520 5529506149578051432374716264873984 6159076623957984000124974631223296 -289478101142904534180422171643346944 9642156307740094030358809092816896 3571999730945760863456750836121600 -352612741924689070174670162724126720 1696347267414786068196232232173568 7226156915985727730542960577609728 -445957969446128492401640804739710976 7151684841722665630962928521838592 5633122343399686875902143874727936 -607691518111393594817662936688885760 5034493631116207673591341713981440 1545499906794747345325411442622464 -149892378810308549597399659342462976 3342456061429280656062914809036800 7863985878595817586103983701753856 -859523948149806613777634944582942720 5649829561755584360129173320105984 1974126994905716166725652541603840 -462508676143988749512647586359541760 4332988570478637250441707482251264 5657279848053312882820075873107968 -372189551204642894405585067181080576 7780898545793468955949600593674240 3369950628980592032279859791134720 -344895892383968545468497733512855552 1194139923355181523179737299550208 2501671414316940407235625692954624 -536260242130656564174136325160566784 2824642121275398395564712859271168 7323660970855538809492727475994624 -619516739898430858186354909654286336 6088919532646089431174591230771200 565295600147531004811037777068032 -580410989817719541422245576668348416 7619194185511707026325956615733248 3849958723177136924377816575770624 -901648259536967181135383154086903808 8116588680869897488475943094714368 8449712652901980665767575490134016 -509148873559626814985666006184099840 7583745552803979632434610738036736 3689334340110209809043375735701504 -719808406326073645877969156474667008 3421647584952687842332211740147712 4275460967879348260214314239000576 -124932566235933979608854966608855040 4464342286403516723469654572400640 9675192656717869787930222894514176 -458798984869755028057272406857744384 6301958817941801310979931762589696 5549577366617470520654716586688512 -814353246820257032117806527785467904 650413664253496695463078864617472 2056373313822283092294600503590912 -471122936729683036693940731966914560 6883155143084768149746099052085248 3009207207340937178078988969443328 -542767588360475050971819519332319232 5304283842739727674254992854745088 9069651308114657443251127637245952 -53788383700959825429209526233464832 2452504805257240441244038778060800 6396514010635259164234349618921472 -714642975947706906498529734516801536 5493986440368891110120448258473984 8070470073060820011901359967174656 -271860181897752365191322059319279616 3017014095129161855573011074121728 7487365269070094579033055269224448 -815185157480258424999973948166766592 4861911552400064398282454772744192 6125064318253848337528437094744064 -840541231888945288842153767848640512 4980852796184153011744911103361024 4108103905529916784285773780221952 -399329409366662033511318522226016256 9394009752676927732594596326146048 3518069815896178752752601991741440 -742594841867363932565827362467348480 4191316362933030834647712953008128 3414838127924692948756472558256128 -90099392982350846282651320451072000 8631423249462660632440479806390272 490829357558017295172466355732480 -515233637240451225152105185349206016 3426650511387664521232284745990144 6809934701461215581423277640253440 -67224927679284716961327878586236928 6274495392160018118785856666861568 8533810816012327874072231452606464 -465404320215279386960366149644058624 9978545299042826500047339572428800 7933451256378638981407771574927360 -811070032194214478182341603217113088 7653610371082436116604690819448832 5003601482248754703990729927032832 -470102704295266448355495189202075648 7451562446503058326228240001138688 7716959744619420091818678757097472 -458377083975867383968227138874638336 6693818355772242455747542164439040 6148620068702443941993647286779904 -502930887182534757247818319481798656 2507778312538425960425825847214080 3734430291550388454636430764802048 -622402799413697061977476680384512000 1003985118922826569319460739481600 7154786818794960664492165266669568 -803391668698256198109101454209843200 994289626810347158431961649774592 706258882973491531622959292612608 -491876868710878988402512190077140992 1482079228025679421663425641578496 9534168140205579982326027834621952 -825140937504634049156317003292606464 9946725835051786359293397667151872 6732365809421300023152679021707264 -819904776947543502364498175123783680 6704460291427836717970424869158912 520793219519666088828113319362560 -536736850744740362933189326565015552 2187016827892350362593951364415488 3866261562763580101226451047546880 -750391197816731311823836959211520000 5927239194563702266422465090551808 7079794003287952848285129628450816 -314017919147295185363449332195393536 646065600624981908343643416035328 2428743198180441936725758347051008 -955106399802452127855555107711090688 9566327098902532475573354614489088 8390568135325321241339397788401664 -333014658457071885232871595027988480 2065900243676622284499465728425984 5790533289856915092498730767613952 -324692626950116061865065960831975424 1485558701888786753652286801575936 4356330570997196191540780812206080 -249441865332419079819017935199928320 7072479823402744655550939735785472 8571924746182053652766896995434496 -633560150115379457023035611835006976 2972352973535383516012117242150912 7133586574627208538411278111080448 -348087848709295563030399092126646272 3881187006464175506327550887460864 6417646377322311551242816781811712 -875441620930104031671099434458939392 9763859903461074899822344283357184 6868083395497035868650913377812480 -755314470667022086929713908445872128 3898721086949285437631244659589120 23057379691664994943146313908224 -961851659518895664457448955597291520 1809735761774508048833369274843136 746750607026966767311226797031424 -406432732859416616323645099556732928 5885023661451261064367834497286144 3458674995466783388725926615318528 -16285293222702117434299515014217728 468058238042968068718666222403584 8384610141359472483095265826308096 -678872917236756567348013165671612416 1222979285099176920976584110768128 8689221275035106683865380748787712 -285440410775179534434415086510538752 6289864595203705098021247031181312 7700632712410766986972734561452032 -271163550709501081675874424435245056 2008814413966226132427739125252096 2588808973004627454581388894797824 -995559914297588888512613023360221184 2149514135582613155577541343313920 1314492504817882801604786755993600 -784592730213176468891532201935503360 6934261850141736180904334033158144 3118905979384773421904134800408576 -350131091418954916677872675396255744 5550324548176170617079391986909184 8415017142489102221677541176901632 -231378665930101338845322518684762112 5208387919198134867044386182529024 3876033534821640057074625605009408 -771854969274169236774693154269954048 7743172567695741883367896287019008 8448766929283353662140976025567232 -105545520861083777308940604410953728 1271318262954596582887947337990144 2909045034491297336219606536159232 -48537411249164645303152322266791936 7578494484893923985316433100800000 5982936994975201276900148491845632 -770642856048872955358832293247451136 450692104297497475859525949980672 5197870850180749919065055623643136 -268445171975701445761265030385369088 8997244514757447280077968926310400 4159339789770759506947999071731712 -268673165069021266506164028854763520 7012312052253161466630219084333056 3042397933087754585747855752822784 -384735569833926780701233041570267136 9778330856260354145549254121226240 2272332887609003858391891991068672 -867619079666684794090561089705082880 8037747049025773781854836314079232 8216870453603904015339377701945344 -756490588905783067183648050209882112 2512247887175435520572330153607168 8147876369602247158026871844634624 -613136686671036755650931651262808064 5720485484339128572302917208375296 1521292676797107401009650022219776 -824453054946230218576443797099511808 5934964361676007587568351170265088 5577619043226445153542040983699456 -746991161730606234955423408837361664 1290717132772361513023820353503232 4056232041305221724443486371971072 -624937166044842045298150732650774528 5771531677634251713613148975005696 8295422247016870915389792972701696 -473510676545126112316506676947582976 2434741728582843445096934675578880 6453027838659973530801092234838016 -590732875753078946523182641088299008 5889050014037180287158931104464896 8889988528119301629034819959652352 -228590781236762290987482233478053888 7641419668102381018864566220619776 2524953565742735708307521573748736 -695410288060823126345913975967842304 466556016960463985588509209526272 7480060284197173297471705151700992 -146846971090080757018813238289104896 8887884870550355009250107817197568 1112604076465633489416370469732352 -357138130318836378587400049136762880 9073573376144717909299453140926464 8072071124656242781771394445213696 -988075997651720109267363066644791296 7660097255952421267891333279776768 9530574098376470985894355563184128 -119429425376797054072497122616279040 4017522182499186407895653989482496 9077999522281592265630278257475584 -527612357235805520157998951662878720 6076583554264730333696201307717632 2242880660866947833599738259701760 -298061123292445426899841772626640896 1936828978785978677586785552302080 8187337857046964961887773976952832 -975457755492624169472124262648119296 7985061154247514645075035540160512 7952375407716266296745555153387520 -306481571153156109212786256771022848 2546388320054733693992856107089920 5254136509102684612543099780988928 -837422401420048687168095180206112768 1804499482662398457179304422801408 680504687868903828092302986838016 -130413352689394851180505687297884160 7057825958538220353866615652089856 5124492613194007915394464300924928 -743850770002093403779056155144224768 1664937343092843020133552170729472 878987621684501995477010363711488 -816233315936593628156075771361755136 6427726590201742134002521324126208 9091505431097003512920066471493632 -45767055860543186080464248282021888 6080854336588283238592276735197184 3174568418073214261154818377646080 -514437330513970225671628665126912000 2976685881496784444632092056223744 5206212634021901712069939110608896 -956831154963537696794736053909979136 4076500076569538441760074461347840 3989751386324673758679750278119424 -660243639478026267510742578723028992 5999332690605885336323584390332416 4825003738717922242596200484175872 -310455050680466683601723081818636288 4289706019104086734975206135169024 6348409592074664506531080524791808 -982319215284597590133407580539584512 4523338994227220208689890579185664 8713585506745578490108341265629184 -538016705151772914986130350092058624 2175835604359253480090147464675328 4266261927691644388689274516537344 -985887475791334956918802037411414016 7424722253616789631920458023567360 6930710361883496704970781550968832 -466776689492170992957788486071484416 4428155911298081033164051619774464 4196813056436975485416642522906624 -336498900456875354599044771383083008 4568118128404651239335199563055104 6004391204738540863745924194631680 -35028537930349229661953864000077824 6172743140369471686837326195982336 5447522972798894597998163739541504 -807885056335468679526653040288333824 3527052051376456143164458005430272 6126422952589339114433027596353536 -831769814969465590370322433244659712 951757928894586414064044427182080 8188502198351974778021696747077632 -684296525306915288846699977523593216 6774922548865034290365682864357376 3501870163310499029690515932053504 -639953520041190886362958250815520768 8663398769563804179320590993195008 3950855221434537623184207387820032 -248528171121713184452691969244659712 4167914722133682620808433972019200 9225307041124223348681886650073088 -363249424811019465107281865877749760 3547812142084359543224161980645376 8535910064890433612972738371125248 -16126867739479327205988146144608256 638269398452798391078021882707968 7841336919496279063936624861642752 -814078427740455655259647472627089408 6697801213841181377544415111806976 5950521031323323068050379919851520 -922796442277378056744965160822636544 8893136693721626719784667143208960 1910218214975009948336306224365568 -607323730688029313293991108925194240 6758410707280860699817613866303488 6910502567156401723594482517016576 -265392284470127467276818790806978560 4581717778955008704729439296028672 1053246016166713008393028305420288 -121175134373243051361772768572997632 5778230610122116060534993439424512 9869603735609476923705221160370176 -215152257168878080017162996807630848 4255787826660677580676623180496896 5651540778730994502150996860338176 -835502001265084418004376655715368960 6711000077691476166546941846487040 7740498901000141108493016430018560 -451296723997984168810483672747606016 2516543437802340235557658800685056 4259137582995495690086019617521664 -930813061417932421785945580744212480 1009871308753730787649772683526144 565810508113728201886294605824000 -502950247215884073041262768535109632 4589069856519130236247135133630464 159832871900332716173984253607936 -47435757946851308453474878437195776 4133204208006058030065260355911680 8297290514855691199251333909577728 -354996864298312887279870781855629312 8869527845433036684130246526500864 6035719179653911517762759434436608 -866917002763053929061937081479069696 9216067329413861797224241275338752 3733871202875252564049764265492480 -800766424389252183083363506178752512 1896093867294557744285863154548736 8186905725870226322779402468851712 -269424809149730111891155934081187840 662636193746825709460112157966336 3827462938885556989247449823444992 -660401916820065788575857082395262976 7538955235711847988511681678409728 6860857448048426145266412411682816 -545857309538769099499229689294094336 25084449856631096230263767695360 6763700742797217942736650975051776 -170731271965685501722945604735205376 1980755417260065934212088704532480 57385191634867691345949772218368 -753281333302340601312379329662943232 4867924005828382702925445427363840 6007343031100150822975021070155776 -838128587414113439483171341116375040 9359005887879451595059771366965248 7729656739286942813577576630452224 -152563860391719164818760702986551296 1794420956833057429515696043196416 6508961716597755742004756099366912 -93372309047302950748949630811111424 477309521060075251243233805598720 6990894659479905003495495894564864 -978365178446186997479915970392752128 8998575731270507759798429398597632 441949828503780997223994655506432 -791913281429614135209950959638675456 965411203815501336366167476928512 1129039576242744470875540721500160 -585547433131530938210442227256131584 1720307556294229473340905530327040 5984745479738103017913056449527808 -969686986116944127133606498376089600 5381541885880745175825075419480064 4800221392501177566099958751297536 -279659379023443545981336885584199680 6450280944846719049630474076946432 6329376386725995186202651337424896 -4930611264876393015135387374321664 8356165889646771441142861804863488 411204301242054354682704214097920 -837225473171758929580085107388055552 2093598185707476771969666769747968 9182542388080614087835896210522112 -670239020425531027010885716642103296 6572437484161642787414314999349248 5116609024438576301387933187833856 -846874720126415397302676401051140096 9969489182537253805731010184216576 8129555416975235545413772069830656 -996771135931361253364726385224974336 7862595893678825410811056122494976 2242359608009240623594969061392384 -876677648312605515190762503233601536 5371713234674738233552346850263040 3805796038358133955526818520891392 -408531268633467022465771206374064128 3369148163628948511025560255725568 7002849969677424506241123824435200 -859620408644198067553717582940864512 4515055940400860907096294287212544 1368675542662113925667349667512320 -525567428873754039031657500160032768 7478003705505574557595408753754112 8764728992403485252669678116929536 -434540916426674543054860737312718848 4434961656588631217087417293996032 7908838826333483569118689022181376 -594349814910313580804682130235850752 1247324159659468009339782334251008 3191659394727073408794520325193728 -265459106909876423442173794283683840 722118147453526632285758977736704 4448746138037389049068715516100608 -294362685666583087146344361945464832 4212128935962428578292081404936192 133048972822377051012630566666240 -260456237020302023580291528011022336 5018233889945671908822654868520960 8197255138238854481555733950234624 -633963854924548424012633502015029248 1574661238992107794273688595988480 5535442012549976572741866984833024 -71525558419070907600692372026949632 4089819315484094361363395905585152 9613342153290290363803855222734848 -752739713801763322141493450990682112 2761997104105827376299405337427968 491880733459805191690232593907712 -380251294889372856093239777890926592 2867509913773390293764040126627840 7240009991787258702087366748667904 -500295386627362088958204741720997888 4588808510338422261913308245262336 7206993283945721568599125511897088 -225903172300953450028264199257325568 7669061297854456322945561099501568 9052242507235093073606774393667584 -585367376153175925711320746546954240 6819032145001282710917245256597504 3130127854521848161008302747025408 -503330404080794976536913932112101376 8763020047316549889490182817710080 9864908661603825493639405817036800 -56575551934161554769091204850122752 3022157776159588111768159176884224 9949061038579724410991818567581696 -375397631514488337866768277355626496 1465316047393907775041777837277184 5421650264603597157244279942283264 -809350004587848569730265447630110720 2644224260314684438860489197355008 6603826929203020674684750925922304 -643542392400537521721340857006686208 3327952496175398440301845704343552 868432714900225531948860899852288 -820272353359422909687983963157561344 7798985046584055754064307570081792 2884191634744210831376642805334016 -14173822592835382905268160899842048 8901940530233485965845295427223552 7171253850337846130295298263613440 -674522125695674733566773838879916032 8841456351736080997399787043028992 4345439522084307901863197795155968 -66892774709783482406949575435747328 7259508017545554380948961872576512 4486368149297845735108973661519872 -74043511538673404205735227242315776 8379575323998578721809876723433472 5227931028222340671637126859718656 -885424479240059601494887266026258432 364396555697111312923111098155008 8544174889801823516422613537652736 -910819483651862949880386210139996160 9196723296689172571697972810612736 2476615935695939944479381245657088 -288256246635441636182358789518786560 8336838672011583194959299399909376 8983478888503598586057028469260288 -510156044932427914514084671749357568 5150561295365052453956066486517760 3784041662259526555812938999922688 -87841451348115880624559196664233984 7185557957004991824584301401341952 3472098896567804943858705400594432 -21964989698952032820896029544022016 7597595989847869175022845425614848 8413993660185529742942931706183680 -409206885266191481838209255906213888 3496932048817393196364477683990528 1290811158493366502022810599161856 -417224749630923275881924163004268544 6880255261752652450244288434929664 8010435049641627876272396342132736 -466439324364031065440276952528191488 7919384977096310160322876915318784 2988589688708061894293348505616384 -725633196246827907811242507459624960 2966270221837937717056529368088576 306809765621724800724126616518656 -567891368589040294336783741481910272 5424265830616755016056587010703360 1378435105269099624069303346659328 -998374004395164515560822411714625536 6267921318757325278383114729553920 4871386273157529230276232011055104 -51772533804232062798565021839261696 5494537489894650096528276915748864 5942825050362448303155093983723520 -552240945852564637869135551078072320 2749339167636742793319179769348096 5627365731354355039648332457705472 -568658880552270570487436883552894976 6614125606212263418249003843715072 7723499200798832325120216474320896 -972188156607373204263963038341660672 4783469480719629435654084036132864 3206716246058458868255139576152064 -22169550623654694977186372079583232 28775810072025941994412076695552 5225601961876886995528659603816448 -551028159717379818340970090018635776 2105064275665384813759410867273728 5709060724468128259987402926325760 -897449857654066934307518755073163264 1167598771621382472185421483737088 3967589690242447570991432687681536 -597429017770813876277267361695793152 3958847718353468677776365194313728 5504379625135734634496120468799488 -496126092655060667217678000143204352 2149237666019107108846388226555904 4698916143568424572634345544613888 -808935803845882426811298614219898880 6486155138662687230365593195511808 7559206922505207378927746849701888 -763099910505821574630393943747985408 7661900361846465108723499351932928 2261554774867434275948982307913728 -870859850058722148914330796304629760 4641270634239684752861803313102848 8302774016019642230213681719803904 -702446180149309998694516562996494336 8987522762289649654165666883698688 294938461802450109863433036890112 -628392543045878415796059555592404992 391584607866281830292118701080576 688922974626726401382933617180672 -984492668843344803803552257174142976 8353756544078572144043885844234240 9949217919020303424931010202042368 -882972092600934592056330106515226624 694761054042034407524596581400576 2771524196673975085484187192393728 -761708986906350995055599080408350720 680866721879464711641806879588352 7979576624597725549710096488988672 -378211658886438684073508552455487488 9323087115805261333343640479596544 4387367252214386815885128763441152 -735339371772936122197682457294143488 1525779295254270113505440729923584 6939265438193380238867888913514496 -244460184054690582840088343284285440 4200339013577608415428982022864896 8282522238634147449741308321595392 -127027171725753234229566424974622720 9636124461824866503898082454798336 6456222737793353391162170269499392 -535695206876831087721487045073305600 9857675482470047656623063192043520 5677793691544001755952803399860224 -631566039674598149919086995811860480 6253540724435574410600193930035200 3059548078747247442988177299603456 -585980607763974758656181914036076544 8196026637451404198325245051928576 4658673102938642173216408786173952 -538773899378536130551337328995991552 9599663109207890883566499967008768 6598566716879471074202032078323712 -664203850607051989419416592381378560 534716191384426158041568070598656 9728649620168102026734793289367552 -301593327322349269669179713898151936 1214000346940794756057413716017152 1273710162496745555973186902818816 -596952209185275101579490697358082048 8983983998148659799813444786454528 6766211761791335848953572686299136 -212953963666243223870406445932478464 3192635469673272867511059934609408 9004965204109655634707522938470400 -726637925166470802286589359090040832 4799208445309489538705912850546688 1269591102766542318115215902769152 -399731919562181047390717310224302080 8790540615812411002715155782959104 9198036143096334728949353062334464 -959389024303752432219296730909245440 4365372325486010583165587318374400 4350037182454925744993662108958720 -586118303308551797377115943698694144 3472041001644924253708017429643264 6116659919185212615419766341894144 -363306724955173631703015162279624704 5218357487713395580136464203120640 835906768500844400149383453081600 -313605054725339099766808047756771328 2253271949771726859131590205767680 5815912029880296552012285306994688 -925596268564341842612780650696015872 894943412504666298799135435784192 4163661612962634172992616262533120 -147658913827281525328036731516092416 1819200179203152743868250265223168 4198668256260468291756200749432832 -123046591960885606871376237705560064 1280202467677139520631273913581568 1592314177914221581904111283994624 -416711528015630783523638214270124032 2017100356803756611026011715272704 5468005422662326922658705242587136 -371727900781247481144523910648168448 4394301268923441729254433537130496 5777270023979670681659109160255488 -846025177720897302292584863128092672 305529267601786161541450244816896 6487862788143992575513984696844288 -636263713729271246826454602710253568 6459910808395879517967919767093248 3842043415366834033782275392405504 -101701041153842305322955142558908416 7760655208159047329076694495526912 2390099632606804506705795915710464 -941847689945767910130743638478553088 7085472327065364907028299621859328 9391086974328232699587332086431744 -81544840028678865804419349600010240 4832338425511398318605861400870912 583225743975688736581416537554944 -755809245310677481411501432990859264 8767365703970489579647747166830592 9442174081690515758041670608748544 -449596003214692348842885237465677824 8319992505778377326047101794123776 4837113900012050523493202124603392 -349159587010235681699334906217234432 9321056056021617115123695321350144 9962956853637019620114066709676032 -683300807249004504226114450415943680 3811547656874242281223578001080320 3069642394232666121040372843937792 -48312704510267036931718570731110400 1392781377115066866705768585887744 6145197926446709939681542644170752 -382544980318288825424135944639873024 2688272882175372635097305318424576 2674105152092951942229366681894912 -941656698451600055998531294730387456 2911715977941948457135942160875520 6236459421778186401031426127429632 -759409064156258425321330513920655360 4273469518848208159652625237671936 6735793164779668096756384270385152 -131884830710242231383258210322350080 8818941948689272761074151185186816 1734413371154975702633480204582912 -866451509316184353091798360693669888 9492791551641610122664014015102976 7053792401894840063382546550882304 -480879291157395404960250938697711616 9993222725593007349832676920000512 7192963427156604481015580171698176 -470677277024728497793435634858196992 8295854206322566054544867667738624 1812873967946089993873844080738304 -547464644560734755291976254248452096 7373449504839483545574720938180608 4391893378622266808178757962039296 -571746946133319351551763155429359616 9905046201902818314892199029899264 2059353482086172500084675840049152 -813662646691580449301108940884410368 3516446746870059431538846932664320 1147420896784058264816436719386624 -457542586556599672150013082081427456 8981299710405649941317591435837440 1132594123934987548750987946622976 -719849684011700085944354485248720896 9531822785301190370206160473030656 3710519279710893659075072512491520 -810767309172554799538285085089333248 4704913884977080706512730120519680 1375618869550882874295446958768128 -312471792168718584157043969885208576 2827072039768711249578456617320448 9125127523602107648616414436130816 -889736675700497617937217451188027392 1104608635280126101083458738585600 9219505034199219605088787912196096 -961682075928081546060050246110543872 1326082901150907820843000043405312 8382834230662032202112328009777152 -586550020630265407932463752109096960 8868857552130640892923879763214336 5281954384154543988745914630012928 -932262003466893427013123439775973376 604899220676437508196521964732416 8705822273135729048061491711836160 -366987331169000631270538265134891008 3193484372204273542408397276577792 3708128072465527217142004843544576 -104960001645387696020714789659475968 9585476419524576174937726880055296 8437089221541164301251073745616896 -848905205406457162791182412223086592 30984212710547630269757518774272 4501248807532442155421396650426368 -834459272573955259671543131458764800 8235817112117851184670314619469824 8417455896834559965283523661660160 -938002098280426892722142808358518784 8506294771374733901126287998582784 2547487281445755410994042817740800 -443972022595935414206508646386368512 2683935947810351920920223641763840 5484233777914630191027695954952192 -142090160482346863493453736944074752 6529849311253296360289908046168064 9695906334821704021381643606425600 -531003208869075377227595443056148480 9892214628211472477893121133248512 9384395655812753526399161518260224 -856097189865826369492664243302957056 1761664419234649601613612518998016 6555284253044642654495247370813440 -101560218131120534020270233569198080 9199143981781056428073935364423680 5883743605474577153843864230952960 -55767789902914611323374936428380160 1391862885477985451840646724714496 5750352816908234076369112780505088 -395910492780703800586826967829970944 8830791910508367226966819232284672 2751965408504505114509152272515072 -376655312472182813245916099742007296 5282794265148503327589034153213952 4822770635397093723322452906344448 -574659797472084791471417581220397056 63059200365986256521121673248768 4432822055510657667160202505355264 -334804873678084043998747010405498880 8659281002386820691616081796661248 6336351306740769788043219871727616 -275243633641219080157741314159411200 3116685233312023838872608241090560 7152395195529846410228974537932800 -390428079710077168282727179026956288 7676234753824334702159384344002560 2894053403412506482590655212158976 -609769440187635256892531663909683200 6809314019939604355238470424199168 2629718281981400825774741970223104 -693022615720888970143167485759717376 5644762239398487530288950133391360 9078930942191283741053666329624576 -847214619718354249497667542794108928 2656958154855399316471248706338816 6596965970792986956111470013710336 -497394308650853779787427829734440960 4014218780460618149370743146676224 8911898823007851945973493268480 -124429448890551614613933334284206080 9608772082613150353036083875282944 5941416805850367542404489133686784 -157821080594848859601208502298607616 2193378907484356792044797873356800 3635256044283141499506368459046912 -658622943132327058988973117902159872 7052079276847717145246930976112640 9119418734933900103475309760741376 -743895183750823098196289660267790336 6052789150496644208273801265283072 2505940219499517821087130752909312 -725679448699276180742070619309342720 5727509451214985221054816334118912 7786975976929877323369748858142720 -803715165513746640478084366916911104 3457659326634344323774147805052928 9137153234870539754152800341196800 -491091023417100708990038594715385856 9934534352235224328798375319175168 4585611693976087436705654200336384 -451234901165125441849250296421679104 4057612696123824652831398255656960 6579816597260974097249794808348672 -131586829578610446449651261399629824 6955741994832780984040345552551936 1094820987129215849610333829201920 -145126086087349105323914350393556992 9637063283842556067932333341147136 9790898174841140719647211074355200 -988339196420590511263466167138779136 3473231543393232623359877250547712 4833471907428740105210641688559616 -66881919014445916239650495727140864 1601266924786543635043238631440384 3891582493799606655791232146472960 -442102931705919683740572606399512576 8509246929268782294761630578245632 5293734276435164286254070406053888 -785066359795234870023229574643449856 2616683871102514267222795446386688 7707058197828201336420971411668992 -266590933465695657853947669527920640 892175959580151207222431759466496 7196459490430972184254901727002624 -621881319132231605725742602062397440 4237301160793353629446427721596928 454436823367854284079634831114240 -526427797689593938608088146864242688 8616020294967721152374679074242560 7465122847065256347170902072360960 -413614381337333738427038527123357696 1234556334087429331877935781511168 8039898367258037040463467023171584 -228279376145955987522854008962154496 4479944140670314489647466276716544 6436348761103404603459807039455232 -883180002445425125735712964195909632 2531309310101721317711276421414912 7806129669457820162936453151588352 -191425454754486225964509412647239680 759966302833028055885793078542336 939404961948481482700266867261440 -137620821648420845330996837289558016 2456667497642941483622445931823104 3461440096672129692998341425627136 -286152356241844018592230339220865024 9537921004279512097499726900887552 222618200017898760710149308940288 -227066300628423518995893613810941952 6986004881080634981644035759800320 8300724509351817822437782696493056 -239289924130418068210045103521136640 1334890724229032682173398861742080 9607336369679846337293050431143936 -258656828906152424383591725771259904 5242538167264833679321957679497216 3798867728997962658908662052945920 -830784300397060612467992216974917632 9486834360483357667808723022643200 8076210520871879172124608810713088 -742797837825458586301919909726126080 1691303053938653927602016839794688 1236008525921182252477769760899072 -652796562634764961839605801572892672 230480021596161842039207745290240 1840059467293142705760773592842240 -679099784106743482600837396620640256 4708195878998625336244530852134912 3652585548327627562339354491748352 -301412905366374619269399837981802496 3741088010566982550610136145068032 8015556941972010330591156508819456 -247517320816794861807195213422133248 3277434739375516028631536912826368 4491665895483551283332680674967552 -247759914938010678259632259117088768 8373444658331872665224521577398272 4478132171296421019127201526710272 -55071845424589515448220978220367872 3196794084900572904563388327133184 5114245036965106018024866745155584 -978600738120414577549446728325791744 2950262639544849373364328740159488 3355466640450302536284982407593984 -498510373904961964114592986881327104 7866275806912136232668056510267392 7505428271139455479007197257531392 -895312292196108819746408870168231936 3479222149813686081020425389735936 2962730941927821895124339704987648 -78036708567061920602151366235783168 2414397497359005818405338300284928 5180619866187250253967387550285824 -615848696197585857002289171424870400 9893480707355048536844227408035840 6161200228172106742850827145183232 -781890005895341496541198861358596096 7703780006136236229937100111216640 5045330355652729329062994262360064 -817627889793038298891475515055538176 5178995820878287901324664958353408 3649335615654834601657909439889408 -710977628346946134837160966774325248 1913370512991141201148309795766272 2441519658501676629717242477543424 -341955484606110801990319141331927040 3311942433181862679862601947545600 4136056668166948339501071136194560 -749023045591087775640206349298565120 5378123757818980664187472807198720 7450891055645568384987155153289216 -653748091145596637879548943009841152 2818141958129900756798601749856256 1338970510843997545948482962980864 -900083948893705898085185025206124544 4806965715212100756742183019610112 7982530736661660351986442367401984 -766780632495289672794067891222740992 4481497603724090000622300619079680 1759105885424754738674029639499776 -402271582387518850198047050187145216 9135267277012951078248737033682944 7656191057409132172463179414110208 -479994041302490403653687269845368832 4553839882939338153320884060815360 4883008997959099025114818142011392 -240814907892597114667141396852375552 3913795335156141788271577399296000 1839491516742358972420957407281152 -409962732903046273732938040436850688 2901792805164491246307625840672768 5701796767225592809181915618738176 -208583548929536254548012160962789376 6856695863979257463982933275574272 1449036813987089533121905081450496 -590569222626239881602659266687139840 3842629643983168615712468672446464 5244889745287229993469179395571712 -700123672196807933340747213890912256 2299359931580401254572142557659136 8998607491766934417148972485312512 -132778209190445387429522364409315328 7856047039779973875956871579303936 3981918783182157884394554846609408 -970302726886278441957584760920342528 1906828818655785517693486963359744 5916882595003876974915425767784448 -380888076899501387278829783691034624 5249751881790029455827332069588992 397841484927407444619687115096064 -344737933709292185972093139780894720 688366159444262753117902074806272 2219221384176123406565482543710208 -287913575348146713136759805849894912 7312574244318602767357876025425920 9554707012858603533230187663589376 -232519334201476320463156641575993344 5450460217570335117340436760363008 7667820258634654593977977818578944 -638130658753431399415341036727173120 2796432783517041883585779049955328 6501957291108759562086185032482816 -399057037489902647858534212196892672 5644431514527875546670011818967040 6995658022329396109491717504237568 -139603339683283128104190377637969920 1274052355872318710699233011302400 6509104583420280552003192118837248 -803539451952697944952139950090878976 8924284961853298916536566023192576 5858851979568552170107740438396928 -227495036928235807718574004430176256 2125979335689738563274537489661952 2579063995040225355053979112833024 -499129451174050256663101558740746240 8281728369642559298703585693401088 3009551017093141150642926950285312 -372450050503549525294833090105966592 456186878968286599826029162790912 3205692923416280171051974389661696 -671810282250358163971334255035809792 4258364799645729734021174641295360 7086502939700529304204847226028032 -277716913075019155470955703391223808 9037731593680405842148525202210816 1872295346530714713867791112339456 -434619967532000847767198916333797376 7913731218915105303509309186899968 6664517661282025290875913568780288 -547888241537172929951625539374546944 2849345665059297672753413835718656 6176660606314768467623968279363584 -209037464540655932288462392978833408 9455258575625349362283790372700160 9284282514406144745002368378077184 -454683251229064449300295809094385664 9894766605766720129233778810814464 9870890290981204560921603830972416 -264437844707715134401178884227727360 359273842088670508255592251916288 9229079208697126759096320188743680 -652849516761864174602015152279650304 2325479151060295052119061441806336 2458230568676341882568165342314496 -241635784965866601293066181969707008 9992701427138382590707181968949248 3269892914162055945821118114299904 -505673679536981029423663576650874880 7865943634483525078019812307763200 6339634221789749121933772840763392 -547150175167021528424365263192850432 1133246866805346120530508566757376 1605600095211126047746203850899456 -694380704932059450685424735359074304 1939546543652672467707247783313408 3511296205680250540052130964701184 -981890917423124370829453961235267584 8469328847852909522948438462824448 4919488734495825914424163129360384 -537471145706937926710052658515804160 134630857609129243587737192235008 5671127035321688304579212677742592 -163026519509404600157341833601482752 7880354707509922649327093157986304 7299706386272565438572234744528896 -877190427349547717058901252499308544 9310502902304275736215750717734912 4585471069810129437366856720580608 -273286680450663942117637435103903744 890774452506990167565625475465216 5284729237582857399611165190914048 -774223560067748092164929574441844736 8395025782547853777003991021912064 7738783909322856759779875713187840 -136540971747423480344161826254094336 772679925300953811820845079724032 5092626133290053426996316444033024 -486952499082530525076665625907036160 1849552918920849956969557243461632 1620793998557754816587418694582272 -870851597522436773019472652994084864 1153031915709499316397726704336896 8355872116852343187584895013617664 -585556912486749161967155030337257472 5175397491630593177839804138651648 5122127520456418277002685276225536 -701295453773604751313527386759233536 7644898147212180462218374658654208 7171627256156405918072042397106176 -426925593997548688846312821254782976 1209243125930403250997874405670912 3337772288558169392966135416094720 -870005095799501892512592274588172288 8798905051073223715413638684606464 4086802001750096113291861635891200 -342174088974849538117554960416636928 4370606922204643106881711221243904 8249490025122591724989394798510080 -830821275615881229594845007088451584 9666984196288251218539416081399808 6960567234514801584843228178284544 -276271746269086981865386186352099328 3734211497336349078556903129219072 3190489172597934400790827292950528 -424526138635330862757655726499299328 9181090566168443417489506274639872 3444728056658053927549813766750208 -554159470043708268965319340306989056 2923842756275041272918511844327424 1207551040426935092261012480458752 -185439446184964667860223790766096384 2541376829544019160360597510422528 2424360936400808513822961780654080 -978803543462144751751080410097909760 1145317939220920678214583652974592 711096153027764544959220142833664 -288714414872971303563580348852862976 6119993425350235145900447192055808 6613785024712695415011486969364480 -99426603657450321973719717717737472 3015114355436587901795877901041664 8034589118834843892360003668934656 -156124595877921628479865617853186048 5827816296157079269930522975928320 8894245315295265763656977264672768 -918477821714474618318801761741045760 2784382044534489201712988803825664 1651669442846520290851617343799296 -729924310981166149636535650955034624 3411651579554449468339364919508992 9915354847656029466712510904139776 -826140350605095003138173692444409856 9641235056073119203240636741320704 3158070932400971231783584480100352 -386429551987401496442125813079343104 9410891366568714099171194465943552 1636246141104706997272166023561216 -607342178269538349062073530030489600 9383676763953339574944097781153792 9206818127943717793790888224227328 -310839818409647578068165542469959680 5173839082593976125662634050584576 2868060312443922706241982207885312 -96850210514999404889969691082096640 5694381379084793828954678245720064 7778272727050282188604438931832832 -494145374218615593930566371094036480 1213498184614723026223154834964480 2238354454628371527001139222413312 -225747292321560013082786934533652480 5587039646815319678676800532119552 5844188133750408588824000262569984 -865095806122693646740066205758914560 9771161108975507758151965100474368 6786693491730282631748339252592640 -387828003367414416813087665204232192 3152180209554562007897101324779520 9269073469206256793552632089149440 -517086204203038651628288342746988544 5378991079606461976691674793902080 4473574992106950192926951649312768 -992380653751322011168705180214493184 7440229208681527368452234222239744 7606020771500106061661635849748480 -60950276952501281546573372979150848 8964924609222954131547086290681856 612714763132536078997384228503552 -606151256881290952721816449372389376 2815207040502340461265110748364800 9437018462484175130995529955147776 -940046685895054751674062942783930368 2932887524099690101528832180748288 4120171950795804967281969288183808 -809905735007970796175056073350184960 4107428629459735981812941164904448 4463805562109570263846209477148672 -790729576054565001115562528078823424 9854016137505236175140418477883392 1754205194282989927930805876686848 -928897950557141741516518584020369408 1762883784921833499869255999422464 6145804422479221156129288218476544 -390216219956366343628351124403126272 6966095261733981393195220959494144 3876746314073859349356747151114240 -997784312143665187447322526387011584 4327105151439064943655032113332224 4896095607173421732817642719281152 -569562639334306160344241326520270848 6993276969512894522276687883796480 3161442010817290067087938014937088 -931467815006192780140694667083644928 9070428748804592529544109812088832 9442606678037585677539454207655936 -178847734250382291255226165375270912 9706048071478350971803600504750080 5731620835612570531043536105635840 -202638604274148326575958391187832832 9674456125438481555162439958396928 2578444259121342296439825559977984 -398082201796508747381798650414891008 9994154090247291650907354303561728 4607650689298389253723184540155904 -624758918324930467827495000921341952 6374837152125305645087493141299200 2344435121202169493452690382913536 -538897449038278092489018418046959616 6865058899228453551467578783694848 1724438245638999315314259280265216 -377909749710895746905691875568517120 6970305254018658148185758156980224 2550191984056683661274031004319744 -537365730481357046356892300961906688 245186918283833171891188569997312 6126183221633431096239223597957120 -135595287514877222253906075880259584 3277342417570864817921283634233344 5809788631235486824766369358151680 -50441916226468089027419197109436416 7525163252405716794973437653155840 2759365858947403621722547116048384 -832938277986557633259375128362352640 3706867891012346014405190393790464 847611857124535640847938066841600 -143403707893789041371202731804459008 6707864418237187023662430791139328 1213456211381611189624459499667456 -542670909954579639977139270991216640 9526831074065229802455465797353472 8605984037118989087379702765584384 -298563101224328971852098746902904832 5431967560368068202003801965592576 9579382903984593175174242791063552 -46619389136793557229073555479592960 6696724956072814748519323068792832 9237675136109738407255581424353280 -411567375964938957967896210476892160 9473735895976228468474210410299392 5833356313755171940871645836607488 -711644981098418908385628728711970816 5668468647169653140822988391710720 2120045970284524774616694551216128 -308164879482439318158738566349324288 2148837266106892058822264682971136 1931781242309712721020271938502656 -777373959610582790574903523186573312 4429790929261555530362394528186368 5732407696993033136601603720085504 -195011095509949641061287764405780480 7494377729051851717207795144065024 5432317740690022939704686056308736 -600007049485268949488115187321929728 5355856980478127734342983228588032 4004843679209813703672339191824384 -550925535362531564614464902220742656 3167531045544762806038498449031168 585530995329540732573547027759104 -406641248908418558863239865830473728 1658951415535437420664570310033408 4704499426952845948023864026988544 -748517727019438847424557900458098688 6154418612539330648817552188243968 392872587824915953254538294591488 -238015351507668342395817072525312000 4831159843461884200689927817527296 9756813276008315719104814070628352 -865959291986520429208833794167013376 5256361169620026683920788471414784 9632427535451517681780485687083008 -612163545375253393591792168568094720 676452229932448405225632876724224 3171090001927846620682962822234112 -759515883787230183414731724715720704 5288737500996522623609624110039040 2928219746644218426502148618452992 -197061803434785648685184957684908032 8347756486287474862108057637224448 1602859573415834703765302853763072 -812109266279443747805728329365979136 5010148025869992255841406317232128 528734399293240879622462640226304 -161811041109210895465828200298315776 5144279969323364249926796293701632 5298266969859130565897963194810368 -90286934961131190893268473011503104 7962810894196249824248526408777728 151673462832423355238946957164544 -35844929895535205217271374308966400 9378116466573433153794025218637824 3832204311932051672309792375832576 -699325902029709726267099187727302656 2355202431712058347470881663483904 3675233787502681119101690698530816 -957889621496313347612274654690934784 1785411876159079770866942667128832 4652424099260671579733575958790144 -562422470968541646270881233339678720 9943297911721299590979110358220800 3143350823454630782248422566002688 -653307281221409043808530577661886464 8360632825526141301715451538046976 9005391614123659439938320772104192 -773389184874527812263050048473923584 5311512069785835652093559649075200 4386103599964065100767382890086400 -720399280161316846380476946158977024 6422282589279478566157999079948288 3964102490447928344518705203380224 -762319401426345482803185095431684096 6129411265856804982098197724790784 3656132591110084993167580857368576 -396839583925373193602639843267969024 8112476631803233810970159075033088 6119247134138852872163577097617408 -758003976122031628430895881488695296 5351324173490935541087334385582080 8075145644068749600834274860204032 -550060400801478597701024985980600320 5983119190168373508827627084840960 3179121587725330389681730651947008 -190940716440036458012004943092776960 5169113579034255695524224653328384 5286250751402895936016133463736320 -694277061239624493519736707569680384 1009075095751998910186567610925056 9363376041060335483985783496376320 -751244641061205507103934656387481600 5034734909379487829917525375713280 6535048411162768377046856204550144 -647329925131082555222133393024090112 4855260097943031808636884459978752 4828384025960380935582076073148416 -38056515561455219029057492089831424 6048852850879317017490230496722944 5167475693582487019902377616474112 -348440326764389802724803083222646784 3071192013515305575084240131850240 9294227718428156065369105985699840 -813066480192283823172246336998211584 4146276814363766762500172313264128 6246769129749760028414344727363584 -501851332793772260323486754624503808 6088745451776378507033517408387072 7793954042314179438856681679749120 -862247177434504800222017096626733056 4106569151823506117484021377138688 3852851841046831967237550729330688 -277743832179385431039965229253394432 4694218518344854385832827660795904 4357634170189075828184945277272064 -726603752933480690522301761830518784 9770794242545331823472633819693056 6055682781083049618573902183661568 -96126539841533741809494640111386624 8346823486786095174219779343908864 2490535927957393518689445509857280 -671817516058928848105569850109198336 8384421064484039464373542591660032 7182017039195367321541919241142272 -93248967639038536020041576967307264 2501204616766339134118641692311552 6617614147710581683594027962728448 -359281038281243604499673369909657600 3876918239670739314249858801467392 5044581279836165367807942982631424 -254977029333487114328104895445467136 6817279803698527065333076718518272 9333432664484076782390900969963520 -496242989565739025489352707599761408 6880173223358143570773322860855296 3682919983956272126610878022811648 -967913121842109100305012228045668352 1689937689873269499288750724743168 602771827946587756385858071035904 -306611950843483994003484954362642432 2189839291385188030935574230597632 9392377041938654500563922286804992 -310143195806355000789255941703860224 9157819155614095370130811084865536 5113029086819655746031820151455744 -437289283157371090456693704031731712 1966280166280760156298395019902976 559351140815551863321596870524928 -307239030371811585389754241672806400 9735608240862502193273375633178624 1892193262536928657840110754070528 -322668246800240550952403107762405376 4443379573424871251894227729121280 1227950808749657889090636710150144 -32494737018410096946066421916368896 904700402370856818344966708264960 1492491731553560424532414109319168 -392882252452517614391448803108454400 7081557071648306836299082702520320 6245268640211313959265626367197184 -343611934101581492142413368851955712 6941651159111490032062394120798208 9987032766596003747205112339103744 -642480119654777682133223590005309440 1881836939254135202851358750277632 8865464714246178729936048049094656 -175814820187624015601663557316378624 2355238485731899049850053383421952 8646169715461280699189183771574272 -286533132806367827062849752476418048 5795209263070743006017600261980160 9147451211873974761570886865649664 -889188647582432263315590193937907712 8352987134828986451092737800273920 61868964126614376920913127931904 -122435678587321751985149080198184960 4431191151490525051278683099103232 4599842673274954121184249722699776 -454819880515926259678050074325155840 9009298848861805463694785038516224 4481352101196335326582027793203200 -15629834824206645649519669988556800 9610010436977145090970816656441344 958315333055322713026544206348288 -280531310029795886723804387369549824 1305540516259188665026751926108160 2520059806882026083318721775927296 -214349684751013501590073602497052672 6981138190039452073996658946342912 8461549938150208055894381646839808 -564988855686798352401070946397454336 8224289766950736289046372504567808 9410285206725256686591611326431232 -627039775639100092697636210454036480 2019763881280144267217339114586112 5831649758776548027922133135917056 -743014872317446219759462410358882304 4664995588644408131740887639130112 493990781517178652949242479378432 -966068416202532584835213807799238656 9623793321967950199064207701311488 4811426604501121631781127335182336 -790294921566135205460618854789021696 9161256229462902680402822778847232 3419581083615289138580296919154688 -851148499237344038102038049451933696 2858118984477367552363988336508928 1766439215252369627784078260436992 -741455680137242871778121595276492800 3142824135369710776573104251469824 714323084277992141413230279917568 -213679188571222827704828361019752448 5217695222798935311514587679948800 7793609560183870164399428043014144 -92064663729628681784138833300815872 8498476141856928645612333913079808 4415581907481366888642158291582976 -901959224504494496815252964070391808 6930588371890820299119003688763392 5708069458518086438833428992360448 -186124283005966192921577561333432320 3458770686715000646009464702369792 1168469355394029497438018868346880 -307709834278106935087638427797028864 4497400559167442653874898354569216 3484831128633720847481508655529984 -62248203228329136130571380679770112 8753681239577678547850373919408128 7415964751482500701642449880088576 -967991537602585042978730523699970048 9677899104686707197260481064599552 8784149914988679129197323451629568 -380740329380481486325889949864296448 7288475544853854808380302757462016 3819348656129311985393083042758656 -250377028326904479373869270974857216 5981650872489489422201419657641984 9540926438145411831679552468287488 -90093694390176993574088406466560000 5252375709578390379692626450317312 5849668736745950865734906226409472 -265451150351021478577336830088183808 2498834140503280261309470175395840 6930181953015958986044461616726016 -216517653184143445285599811423174656 1190955778907100566003849552199680 260127255188359906573645089079296 -162926014335144587429516314998210560 1804449272229376010133206669983744 8276187094827978696196300463931392 -963856676875414145203628807190216704 8878356067961029239026415034171392 9930719876844353173741954953904128 -884905540017476552928133841890050048 8191700979645632781778683265286144 3314030554400673826912694872047616 -588976260915963534705194521348538368 6409289302727939817011406767652864 2161456176661855442047456958742528 -262165770073874705523238385127260160 6417992785994800188402204552462336 9713769083205758454410377762439168 -959740076178331523874469344599605248 606792861575669461079019074093056 5013573746381264366170758352732160 -195206745558647875022991387835498496 3862238731573596654467593642442752 7811156105375460662806924926910464 -578777423331705218783723807754420224 7427473081793315560078351462825984 7998875775159454388258949004525568 -610964288490233986468884180293910528 5167103023106466066283158931767296 2470652288032414398049743433367552 -79332824509378516480560605186490368 4067817482498166472511093758492672 5907236710015573677116597135736832 -8465168337045802365119009627570176 2130039422860645199012275205177344 6607750622922938374039159487594496 -173529037032219894032654421970649088 6858547399611686377103329578713088 4109984384769273439984516820107264 -304410278365914157286806923115495424 6221756216909281398651457963556864 6400218546324380096466712765923328 -681269162160343062860614764213567488 4512994208518645451592253971628032 2550160151438586182842888728084480 -345238303429254809587197905282793472 6922168632918386355871288108515328 8076205834299806685399800338186240 -416109980516455817821868286810259456 7670975906175673511182905351602176 8506594068885560313427006377164800 -714829298152250230124651535730212864 7219946858391181157819062748708864 6511356466761930923325969016029184 -899336136796440653065021653891678208 5924250928842618944572763456667648 6208832269210292776733016900763648 -58365252191171510832596848214016000 4807601664515836788912050508136448 7824419977613963548979060809924608 -157257419226071432077128750757576704 4852674015881215070556893933993984 514285783247448270317953279328256 -476303219488059497271069948539568128 880436755688451371687641681494016 2441817304299142567320590686879744 -106071927448979053419387383258808320 7889766587361666979350103589912576 658365718380423251935527891369984 -103506713884307890373445720486182912 1730280173482055433199480284905472 3201753169868077555771241456992256 -468666162818066315294717923727245312 1884719861253409433770769535467520 1942614815371882868325762390294528 -389574917872864148804375558093799424 3056979421188602877419246392967168 3685595815081944320084247117299712 -527554628313338933961036416946274304 2943009409359909959145616754868224 5775168936099108252276937050816512 -338833739050558254461447211432542208 7977784072286032746806836086177792 1691191124730293403885001060122624 -481843718483685622221324777483665408 5378780996919901924380539139129344 1200454199488740602546357155135488 -991679629000432239500645797455724544 4003317285423779876165084250112000 7789005627544665609946834164252672 -390619907290681781625128358212796416 4268666150749343851631453491167232 3405050300193711110032294821232640 -182353163177091745138320372869890048 9778497880368357785533640809119744 3561561961815868669506883682304000 -189879459966919564757263670363291648 6508291070240042211967962248642560 202163949261616902732535090380800 -256475606035034945544493811411976192 1970744940782470163186830192672768 8818201464576147647652255475171328 -429555191078949591036468925453828096 6982897563528624134398998558539776 7163468210905251876523694289321984 -675022293759242905598981067260297216 4201258283446995552574804945010688 9660851424499294212000873973809152 -166830600702509830086195960248008704 1345038470691084571604118767927296 6871086824594260848067455509069824 -130074703536712334386211927833444352 106102267985745820035281571545088 5172628161314477003473484628623360 -805958154172371961015450877548298240 3396903873205605981447515541602304 7657478222194533308690924857982976 -760498425922692582614420704731332608 1488998723056583115500891704131584 5297081515284593238234550518153216 -988509055738391114736201440314785792 3975968093023145466789478367494144 6992670594752635000895445164621824 -728719326668570311400818393990823936 4285204060743125801340370600067072 4797176034664809857488410116096000 -539020949322819968562896765787832320 3385021375710191565529066479026176 6094668621311170330829532371615744 -662411344909140169947724750098792448 7020647269078229278127848194834432 5250335692670349576813939710230528 -196163874360866018635607992103337984 2284215222390611486712681333784576 4199449410292047280563120058138624 -849356147810502545448240939494539264 6049506695961384244075257476939776 6563274224426612766774925459456 -330781638042271149445943950602928128 8043899013646903219970908155281408 6820476859552951986377144886362112 -911872418588505518624049155400531968 7062624873452278564709971391414272 9638602948195080060228823951605760 -765134363025260600695206807158652928 5265968249715836038207545806946304 2316498602630107216803301590827008 -992205051520967039754258444300845056 8597546385501961167676067647848448 5088036134438203879875746824454144 -347008804679328244961826179968401408 431690073002671837425724903391232 1869117328503680065336835152281600 -314315173298446915201146718380883968 12387974010645517404300369723392 7147216891171312381878686736973824 -29627032303880640491821399212556288 6854702462382432453484813815382016 4485553552376363309243946468638720 -642043906489886312985262856958115840 3357796354598570644948249259016192 1164919844276763927281967919267840 -365564217271298799427530177114013696 4693811430144301065161561520209920 2707861533530990951374411251318784 -74074055289813953362825500245884928 3460514359536030388526833295425536 5731549324620923780222901121187840 -308258152533068288417199027453427712 9360197960068868167881746198560768 9205791719844031820908976955981824 -751136564090958662632817819832549376 8553053414803185704013206772514816 3029555933191137723861815126917120 -735318988261988623639217708162088960 5613148604407948431795980033064960 210960535617846852892532460748800 -109927513273280755691392464318365696 6047348821474473197406949262491648 3896307845406957932931439453536256 -859119445444694146853800108212879360 1174454642857645437000631403413504 7722509072397225933327465680207872 -224581417748674059921859929368952832 1594461970093938018474228336033792 2478418691587080493699216424566784 -695612440117653735868124942808645632 1871065788025524162659544306024448 5387837592409655963291201380024320 -517772105291879443934021941232402432 5880977652311051654584071723417600 7132701820627528119019765097299968 -299926644896097592420213170374705152 3217033770553583238942746547847168 6153214872346206105991193556942848 -258718697439395542211237000771534848 2608501288740993393990445528252416 955317999699028169590303461736448 -89552791509996608496142795153604608 8828386215317380029499827522895872 3546238064663917400416036038115328 -4523655981383533041025820179562496 523977942701303735602010946273280 711132692136613180525907890143232 -465560950849968537105655672321605632 6395845459638356931938652038103040 8341136189018021442934098509168640 -150808436188502042167788844334710784 8366658832058793864146436323540992 6637305292165981153183194482212864 -443188553499550886506265762724839424 1401987302037444819321644537348096 2970917298991219857351768316837888 -430004591671515212662675936936722432 3839120973207191651721668980637696 3003410734289572052579168884359168 -540231911789651470495118224959471616 6432623175109189115501411475390464 2341300909305878080445604457086976 -794189744715949819640427130617069568 4181625695531141846356799057297408 9697795361270534885080683736203264 -938959729466353446845564028123611136 7536383204053024889211310749777920 2357205361457809337561530987708416 -190996060114955060186169146473447424 3044911739739470932544064057245696 2175197438422452437500047789129728 -830619662592989152245794787364438016 2785438997355669281140813806436352 4807818920579742180366716332146688 -678269869486474641475501718752985088 4783187216267517676412065974059008 261055380828569486829736148598784 -485309275815099505931282447501099008 5728391181117392127709477129420800 4588825062964741468942647747936256 -206792390591664501340572686705754112 2676971562907462346880970980851712 9478543396488901244400547758342144 -590837572673322903736906645808087040 4835045022380193316019986984075264 6876895439976904530390093943275520 -183111306505925399284733658760478720 573203502797422512499124558888960 2356557989747282019816876997083136 -544259204220430858075806409234055168 8458509125694985062603786995892224 735180398279420627133715206635520 -700081863452329877020107764878278656 4027644139881076221901909297987584 1779042606323463202619172881170432 -394604070141950586563384116940636160 4980408809714607881004851560185856 8088620925279558862358844824092672 -943306514822996115917501025761624064 568213366496538750919075459760128 3165124550598592599479257357352960 -513967323893746142868492248923766784 1457204447889271434049826385297408 290334612046355019897212508307456 -295260292703259940256077015666393088 8718798366967159362617939423395840 9091044913524017903114096505520128 -484231945807731847287140089212174336 9446387326803119351697144973099008 1297657391069887841511376594927616 -509402960871166050200943427963584512 9090316240209732912108773440487424 3190892304912339852354398285987840 -913431874235920765979356920322981888 1773299332465665821194705229053952 791516008519990367650419987972096 -230751925159321482321650906776469504 5257716650876966471567277098532864 349177712176084712023554894331904 -162215277137491349432567050838999040 4592750944085821110450993374429184 6898127651848858488246932357513216 -645323813756513916161581741823229952 4017862671958405496102586979188736 8193311926259151351889228518653952 -566569471880788382361418467528146944 6844034788245471955949526594879488 1335207605904426489668501902458880 -108109562036841970348413425794678784 3993921348784682407081555154436096 6968834432668237850639316683849728 -124745792402886022501553904033988608 6821836886191034759962330587463680 2328026601704863421805602627649536 -440302703310830007484179862698065920 8406968360919097876713541765955584 307019737797471044769796178575360 -738126126712802944490123396323999744 5355251433100754232767592932573184 2265142304935863294687973222645760 -687633364980069632558078916321869824 8641629999164124131964934942621696 4907715436858994338519121680924672 -941917292216219115045945518466269184 2608714249677284394633414485999616 7131969518458908026963629950631936 -535589563614524037364713811599163392 5433069639500910674942859950424064 8747203453023021787851593653157888 -314423508055630968319820992222330880 5213415785807509450060394586439680 1574440214331151037725998797815808 -244723805921598971965428201473179648 7007345402463854533287228785819648 7301620550946330650844348289122304 -327086364400106993864582107536293888 4888792703847460531870963502940160 6975158774242727893372239200911360 -119415463978439182419762314276241408 6896544655693160694323501655392256 9000406655588683335382125688913920 -124915378753707726144782649977208832 5197757034423550447281282310209536 2210950899462230414567294504009728 -573626778627971440284762963158499328 6155017479337389643587913626157056 4565314108743583348556700491710464 -937531151303350819170016443441872896 7292737083014537910505001682206720 3725941775592697643199467427463168 -46661879231442455304373264103505920 681659157126907214619658202120192 1095171374658944752930309560860672 -705434050333567345651117562181713920 928829076980781428641872251715584 5630650744816560694958830194262016 -164784331880437052119364457910501376 3142782217392005970207931528904704 9682634440300093354139705264832512 -444960101382350650578168211574882304 4511741967913677099219460818993152 6391797075807888787755904874315776 -985720854062628602314754003870679040 636662584253087063893543586103296 2234192222756388989623612794208256 -541179961484497237387285055632572416 3939865644465255355731281390338048 8569848041265208355619912005189632 -857495570705386724018464237193003008 5565515289287008225542354042355712 7039911054864488380535366209241088 -728789718859878247905303182966784000 3320088656014607081240069249433600 417298638060098875329084651470848 -785971359356500588185091635918405632 1108645007208806257593348639424512 5344019403534815215406139240873984 -190056379341907927037524185161138176 501134105732899893608880751509504 1691884657343147191675910145179648 -62740343727394105358053537726070784 5952761186749245231401154811789312 8064611947250962195139542476914688 -708569804977737876990263177385082880 8867886759356335626356333727449088 562745031761139501286022065422336 -387904033270470216211494748091842560 3251609871423606237491872206422016 8698683878036584404835608001773568 -330849345333784791432777649396645888 4717651984053274008418125965426688 9154984847589890285908838571835392 -327231766386752457521493260594315264 714790865820460642146859779883008 8414000026098666291539465692250112 -221551120500329369048497549480034304 3244235441843934120084609282605056 4462888266328745035217989183471616 -425284640811896935741018895510667264 4132142769715753473284099574595584 8432241219928667279135665721180160 -726254340401037434481489268202012672 8921027869617008951534254653702144 8222795199677972486685948209266688 -99598544735477383742260281107021824 1149248192247898595234132852211712 9373692699783431748402596615815168 -879218689933134488846273405482172416 4496480458862756202626631421919232 6653861163954939394485815552770048 -923169533870021557165365239293673472 5107823700827745800826317059391488 1833257470680966081210823349370880 -64893695022195254675801217316159488 9674166314635028335766103792812032 7405237596726142983516144382509056 -389829942781247697289092523582554112 6365359075738123677803847249559552 9573813356336989209738105944276992 -143476013774215330698400486062555136 7207353224199669194347592154087424 5700006147560903651730963310837760 -587915781013278141168581638243745792 5744906665369752036434783577833472 1121073820111527653798298985168896 -704283868816751732987253057013153792 1209081500609931425803760098607104 7886885677840095014030979952017408 -582863593453540379881095466273734656 254922426407127418599564531204096 6932224178848038153197505287815168 -86704604020154250621953830406848512 142025854009088149172599643963392 8615647048810556299050883831824384 -467174815480141941301864028803432448 7703532168565896144176151963631616 6688346917108870784999281347526656 -82392498800225532571186150372278272 8531256420721064032405731225370624 1481076789922374621831289261522944 -551136970173004963538823116291571712 2937664785399805693306471297581056 2127133625367669786090087573880832 -108798996836884038837850591524290560 6106295277423598278358802196594688 8691982168652562998928824546099200 -645057152891962267792550514753798144 9162534770260543706318131364364288 147596367178093332097792194117632 -125346589086505736322018060189827072 8148060709306812426372478828281856 6676308716558667819481328573743104 -696474699467483934568735049257058304 8704792518563565822779486552195072 3629592810156000796157499995586560 -347128674331885150881934122137157632 1742665858736964763791119047720960 3183052397962987060969395068076032 -841084154429182303511584202888839168 1460225585475727645102343014318080 6413761374931661881788723462406144 -162582925774762964266085234681839616 886225200351880398142219223040000 4755731864971838451182921651847168 -280236219844808678999637762873753600 9761744685346818482130316613910528 9619221880511095190197013323972608 -519625487785523530252476583088488448 3690744368369340662387687391494144 4933154727429162428562552630804480 -61700549442973934260611389792976896 4881254286466709158559523245391872 391890667391317175700488833728512 -390627989445463958244874992249470976 7643978142000255067375778591145984 9278970682480718495212948835794944 -379059523919586946173620488775925760 5734406581864700348620189447749632 7105302723302808761456029268443136 -529587720442831517892500535153524736 3066774110683167697218060228231168 313753999724077488586129909219328 -5014550951335161389595969630240768 5141091419236854697356978378768384 8709246978975017193418439392231424 -832810932993601897471316457666117632 5588715380795418801483616786317312 9043978018512753515260547841392640 -160924786021693030554791651066249216 8488673238289527245081032318255104 6145462995126302852340586035281920 -907533939748555390497616382826381312 102867667507725425138924112576512 811738693398603708570657284423680 -957918715446614818469433058751676416 8148872375775568294471296706674688 3617931662749156423751684019191808 -707708371284186329556010936817418240 5514521694929016906342877483761664 8774330136419758817198706805178368 -991710413513268959756283703489200128 449998907873696483130462768726016 4100307287337983220904614011338752 -233891240199960755850078541966213120 9783700928454952466404289617592320 5775868103939173971047266796961792 -80293293951361923452732204906446848 8218360532355130046049874631196672 7961503440471795631382808804458496 -624614998344406792754730537299476480 27391349871430430249159797768192 8912295633084733806410510561705984 -821385239610050941809998713189302272 2358600364479317045671531171020800 6230692352847465505498200442667008 -418344379421511534150256210548359168 9157639817147778240875498232086528 7280059390241788444046779261911040 -902942528190606538380519936467402752 6404441494509367905116486153273344 6179590817451579047173794568339456 -414323365712021916917836540444409856 2102397429291812215658386395496448 7480986928546854936054035543752704 -508636368869667296346576765524639744 9717905937360716547378416652910592 8945437663577573381024198183354368 -41787007924659186505183829094825984 1201850820491079186046941292134400 681667747382135275667111555366912 -665533275256105873106162737018306560 4559824564041694896975041940946944 8536224972477265223719862631661568 -390213376950426248806247987685621760 7376483951381569990268781603061760 1180683150388788087650460050128896 -719516021436001422485085975757193216 2115610156256006157038494616125440 6466295705173766949006616997920768 -896369426243949812941202941349462016 3945881530301572086290262039461888 7885625369009836680555984079290368 -880205006541494446008678028029198336 3672871614456377809803277993246720 3894427203453793624943908238655488 -350819813738611385932766296758288384 3819162003094719439747376318775296 8204645130348152133897695778570240 -525402272430864588875979087352430592 4130270547594985666097931723210752 1547366446141922405098947048636416 -230659684941380969871546658683092992 8185252740006750098315677030940672 5108095942884683476168138316316672 -277756926826287321300029539772006400 1266202932983689802258740534050816 9783269302285900719124547287121920 -209257566095558055948073622898212864 3399945503886477417497197067370496 2758961160855161751281263573991424 -147532423470684002877202977800585216 50215857317358019738810380713984 7797957844834010478379568577118208 -368364929469512180067565127782629376 3805860161055634411323768363286528 6832819394188960024836716921618432 -949282171460892532349136086174269440 7682807348988914372365634978709504 8266311651783097092127791071100928 -173510016366290287886879792654450688 5003109300876303839022955972526080 5830544847492137862884911650701312 -719743133207695582333925678213234688 8804970266152483223838429632528384 8515855219293060069305699581034496 -304441624153009390556066423043522560 9014162844285741728097220660559872 4032111200085109918916088866799616 -589254428305680725291025615623815168 7136514420230997384148133255053312 7317302999102049113917402053083136 -658907003870593802889246419802128384 2301684245336935040934247657373696 660478931726000735523817924853760 -135574076357775203564003892901445632 7307460659705606731046008039407616 9695636819062130447216462775975936 -387045160565725871266944455597359104 2368859971080471067344130799566848 186532677060322500511401991208960 -524346368122223161641993604138270720 207351789478103376677242916569088 8747458761770620659541549885947904 -136911723022771745014401298411290624 9321245455272250414744146408374272 327528315982531029810081504952320 -360439713705912738942015795753910272 1081402876260187808060640927416320 7715934249838142465180020621967360 -811705149556943657168232680972615680 3613792573490668751387703904305152 7659712760863708398268364277940224 -878012538302028248971472085670952960 3771550545743084309149035838570496 9417371082717964092629452756877312 -49080006842015779559870885416402944 9347216630163709799713736233058304 3978167044291023506429929209200640 -605516691582406534204229906235129856 9523947975538296125660089165021184 5544474436940398258697143974887424 -655526696325576741533843260411215872 1525735822260165946401260784582656 6571364391681480324833691180204032 -286786178235064077011298162256642048 2170703417857291348163018115514368 9472555411959826433655411056836608 -833443545032870957384183312319250432 6923628199232434354368381861232640 8803983895586488256696235969216512 -254971234590661173349761169366188032 1155010806389610741963465083060224 5286498955842404977733934067482624 -921233484514171604622309851270217728 702392933828285859319292920594432 8988872637551280867329406123638784 -598536017877847259475090883137765376 5042129288656747635180263348109312 5849688069320840426045776307683328 -410202624489354672653177605100404736 5652311604858461908199751557316608 8115598296109936489423761221615616 -862175786460990407220219408315056128 9639995243389687947907516594126848 6427895520933248483890938209370112 -705785521776044919894761617814978560 4956476549519481508799570570641408 7904878579690865440610415041052672 -493297883518177134093984300655443968 3681373270551067208073199382167552 1653980969521373229211191479369728 -693381793300499000376996666330316800 8907015627672577581767921665835008 6747511892443217506947402559389696 -235590773879493754297937884493119488 7135898448252553779929600766246912 446525096865505029583347803750400 -877887102858179626487961878393782272 5279601312475979482728194189033472 5201652690145924698228107377639424 -893233502293343546292559399306133504 8524652894047145223359362766995456 8053552196337217999197866005889024 -175382852749123885117455908105879552 9285121730731025716328423653113856 1943165501080888498916339392446464 -916335652757460752944460261341790208 8116490776041029956220645166546944 2629755548723760784661951455166464 -390244206858711206515065056839860224 1414820071585044824944990939512832 2382612779572525202425731029663744 -801589387523019127565680481237204992 6129420302811899610444166055591936 5489222569459301547381262794096640 -178314259325276389919299593278849024 5920691393725979665309387848679424 6094754380756348894269181880434688 -62917882801995520187234891878891520 2028942290234915554334189522255872 8774089872828461472923422891704320 -168817095636795894125985369868468224 5327931686262320587041619073564672 9918529450141328183137860763779072 -529663633944791061705513306005962752 5637111297209553063145180539912192 7704535922193508479528624533274624 -297461133699599986268945109661777920 4106607322727037998489223053705216 6005345937684561214387145859399680 -832320077433887848633106217234857984 2778721831452208716804380971499520 898475862935514637528447255052288 -404594111345013690830985339481358336 6330812653817566679529841473093632 9931582716215124456110917356093440 -48658823018137474890716552632467456 9367147216932346029444012810698752 1548745323318300100104078390984704 -148264811643782093935580103917436928 6263893902348840928403333949947904 9533915778776971603364545568964608 -266809197391946962113483054507884544 9094231243925048286275962190954496 3990927163850327230436389525913600 -425833281264360549351685099249205248 9236434121465225241783504990109696 8012114717984998446066487877697536 -935379883918911720162087872476741632 6464240775143115965991851485298688 1911226291357939685214078701142016 -302619336864478602184446297054904320 6323502546434145563811694369570816 6325841206945370604921612111183872 -935223587436563225692552684757843968 5803637361963552059177556393328640 9197989888549460151010950457065472 -395104247560609033638927258253000704 6647768368339441936588106400530432 5134059213712871174994827736514560 -423048883201834548071361280110231552 426687195718275383993209221808128 2488422406050466538983288765153280 -957937629836670344921340494550663168 98153503471688113125620549943296 6175070419915459670212485845090304 -369603727937497538291835009633353728 5119753183555960565221786659061760 5558890718412819143520127127912448 -942032052921068139429698531342942208 7124418272554922154270382622769152 4901915430046056897756417289617408 -234443846206881859244972544402391040 7169053600411925931248656643522560 692986753616399941053436296953856 -697114993718625440584830096594960384 2190039291764553184918142571249664 4872384531300646186921871963848704 -333286141502314810440529926388973568 2128347064132556336325896410497024 7508924028904886836310055613104128 -497110060971038435817527242079076352 1298083354384026232365164057853952 9280822689388305277315940404428800 -929919472231180120677614427161231360 6106585931027990233391988993949696 633207482592260238346728446623744 -210776134179970755742660854529654784 6917865172123385383762508944244736 7137924070859521358705758673305600 -851106042423045434180403222867345408 2265014357340772947575789936705536 5550536643340433511451567092400128 -993145133007055546013196020617314304 3681679928728336904683999861932032 4548984773966342618622747247378432 -639223692247027580287353159407370240 2289580124528330021668836715003904 6318158355360055351107945838411776 -501294092157580639412105815082926080 3593560078081268844035645112320000 7564191856464892614145425872519168 -754542464545554118126432074632003584 4843148800704667867700975609315328 3488748164745415716507840793280512 -623703090541952192323896592115433472 8173890951470965324691720992980992 1730743791930600746284818389532672 -354546738500391776004649911152803840 1339187274109868934530509807026176 9840219974238916273724549570232320 -644693270752501313449585420273713152 3483766462090779168452422160875520 9191173999591484188120885122564096 -403053350186273904036234874184531968 80303517594025352114361189007360 7334183093314165200153718963568640 -458068952659189666706195668162052096 1161872343533202086883478367895552 9856300040754081681830513431543808 -725419225127355961141182865235509248 3071304797734255994011839830687744 7746515993454151083427603972882432 -319755470607134571597313143553916928 6061205481636368289101033697705984 7281194634383301595281837275480064 -763529079868634137204207296748453888 8734060313560708528886577870405632 1159123790297561781906307467444224 -201591072112508810426051062694674432 8607269494935621421639862744776704 3042778833054661377166046585159680 -912202110554926937200994936541937664 6413241597760906595865073366859776 6507565542295282428765994257219584 -643953363993691783977580368339402752 8132768727656068532544711038074880 420894598722361669180926369726464 -686058017380196680306551160580341760 6676392185644908476254821562712064 5110233361062121903212283285209088 -174919885486031049936372971146838016 2063742123592794553401560216371200 9965250145292077148197488848535552 -544881899236274451874448600238915584 8567745577948319017440913955749888 5460062841428921044927520377405440 -22966103326910827294405641562488832 6313639724704723861160336178544640 3088521905951837592455250790318080 -490002090733915382965827409706745856 5497411829347724209582802286411776 4778539675548105177971235470966784 -474100101349661840219368623922216960 8033276074377147020033742310735872 9190059948550194286259534550794240 -171312164062002067957935975841136640 918188539732604742886451390185472 7187219903045276198621103098167296 -184614387330673615704017092766334976 2530694546189183329921121877229568 2933600940393286479996671844417536 -659190819402216816738878187869569024 3031767820440651893745655132192768 528842576770814765842253515587584 -915413039085791787710613800146173952 4156427107543110589395727514861568 1706842845532035472937882040139776 -795818265589753553262623375247802368 6469466910587798913988088221925376 5769068572609392335643737625460736 -180399893363601389167388484874272768 4030030155546683285281539316776960 2197843020369399996330503475036160 -511533675903417588988891498150887424 6524010898701347124000733855219712 3377324010155751161868684447711232 -41239292953942007428047145967550464 3699543526018153203178254003863552 8239419527681186508140652810731520 -185459744280354191932018843237482496 6424477336011878757964565889155072 5236423097860280451135078439845888 -825134420011524105701788940024938496 187229090975321035333894232080384 5262382015253037325730034841812992 -982582293977556152227189968619962368 968979872584197366740190893178880 699142952004911592306379975557120 -993490595774954996683546023539245056 8288610829714166483344381137911808 7572173374624484935588780187844608 -890963480744586591327903570192236544 661340466333901540511149463699456 3355065170610696635170119972028416 -967636015960223720844939441198858240 2655038004951519458068135910834176 1842935502953543086267032219418624 -574069054752783771854550649775587328 7998986764869915062380751205957632 8137552559024683129508453028986880 -443162092923708216756382626220081152 1392713590226502805920032971816960 8189377926157999068357827514859520 -812144541580638619129836820060176384 8799519107270925303299118517452800 337270630614002488367466615406592 -617494974107897444881062762723147776 1470434046802571857291786525343744 3574329936287862340979212282757120 -913540398534401687092923887540764672 3648502762190679190474805777268736 6511277585946601581766229471789056 -780861372943715981681946542104117248 5178404414496046887349716307148800 6712260151686258044265183416680448 -768215659151213332201411502432845824 7177958250682503421671124607434752 3885155388953129058899640291688448 -539894175088809270619674640862150656 8936924971863938305934446685061120 6518523476987977016099040739196928 -235882553945058444463872506538754048 8450690015744784937521224399978496 5803975356908474242893277795713024 -459154958910752884520433956306288640 556742781912267645922913504198656 5983572750885013351771033177161728 -230785076064848966441443874949824512 1716303234952860324862964086603776 3606189001874167292962387886342144 -631281853645340475251089349300715520 7167285649033163934296577616642048 7749633004921310298002431559073792 -295180613923233851543352107507646464 795266746552992862460195094134784 3145086426446170774341272509349888 -155127104906861229505985148155330560 9959335266608403195760082985943040 9305489945765097462578477195591680 -872831369472142784067838410919772160 3979404803055197115401229192658944 2699747838665541871489482770874368 -368642962678343248194507781003280384 4388877540073968436007123407601664 6489784953577987417353223923564544 -68097760707319322019046807310434304 1647467059877617951818855739293696 7950552238561407701524653371555840 -237123821391210174872972099940515840 1790377673990212409138949847515136 9679049179067723225873065638363136 -687030508921219723972616212162019328 4137525076437967239722834486886400 6118093073191575551736864265207808 -353759739527881261139820037361631232 8969874333411951501457472186482688 4954893145053059954618506699341824 -470764150203087840433371075657596928 8538322159727087534803802585563136 8001734413944385606967751052623872 -81182232558670308705248899802071040 3288965246778421796403355664252928 6640418079178984137743777189068800 -981738374713616627989257474317221888 1592850708814244660689325879459840 685397229350480844723781350981632 -411848863599300620642557541205671936 8052900785857432050822450834833408 4849118508772394193251436511363072 -820387326150824714959394367227297792 2127002997573383493951328243154944 2098739120521861697729318206046208 -557571682195007737004726661165350912 6261033410747602955007945949052928 1316642645664355307643353390120960 -911225408557739011580734025079193600 3466903866107707862742713050857472 3076265442374771628425726941724672 -665317649919392387032329956953686016 7181112765331699973133736517566464 6377239993641849304796653787545600 -522829762797192691780457122416820224 7584091763425933554519117402210304 9404063026718109362764503691821056 -440096642439956529347008699402551296 5197498795223227323668125976625152 6615158225220306374736416937607168 -671812547421994308091811873958133760 148647370105886278540673614348288 3347927613655878816883683983622144 -608623093879466521934051978013310976 9749443081644237754541629807525888 1416327665431579282913984170164224 -991794206598807657685982922338729984 1575513907067747404658586779910144 3063933083690508325569126641696768 -38564922971142986144427507646988288 8066312822508407231433766823002112 2007752556603758739637606786531328 -434541059962650792983132501622915072 886727017331660747061550120960000 5137746466089749435502242662711296 -253080001381522206700263544687951872 8939299288845719364917241365659648 1392707850593303114836374108241920 -764618417404872094303619672333877248 7549939684065803833214627515203584 1222343539950803057165909358542848 -672723485727257595660366421463924736 754642868920735906851584613548032 2260730167760428349296739293855744 -764828231278454681476355362777989120 3228156632545256643544807790084096 8806848643926200263820636317548544 -302189644722836607244802648189173760 6766603866195819675769803460575232 2200789368112778800045408538066944 -495477057139286538719378564400021504 1398220906382055444941123509813248 8509834696035249708395181063012352 -361170115499304632913153533004480512 631527204835217682750748934275072 5091259048442049267819415647289344 -754379522214160734074420601380929536 1378753376194671845718033847812096 3431163853766276383359222264365056 -446562826920049453163623880994062336 9096057796337323568735821846544384 964918732352164535449919317606400 -939566007600774938557440620157206528 6644806054412326613069400629051392 4864030698772764521447069942022144 -224524240440439558281950340061331456 7183677325813267745269613181534208 1014770259194199647076822055649280 -203554218769055338349479493738954752 2458915772048936000765900049350656 5002507761588072663068132228726784 -532050568354399837844775622141804544 2954207243827145076172181674655744 7328071638950098161734235650523136 -108353011564547476711152898736652288 6754477333459645850259840288423936 6944725460554784330330784885899264 -378595209296453860260844446695817216 9178682353492066486132845936902144 2619566857514434402459187075350528 -52436164378274561962419727200419840 3595828404986637598664615792738304 4437794845534865152693499552858112 -407152752666036176564954978418950144 8831590194295622847481930259103744 9297557119807072562197471971770368 -227570315550540736927925361948229632 9205508374703088693673000855142400 9395545164947591907702486712975360 -912165985367257657138708533770977280 743859016545967353900956446097408 1747620383061260534038069470298112 -368614670298801082949441608025636864 5736884632296485404597437824237568 4652551752108263503739129826377728 -407963453244003291423994903898619904 9703962088666109154882214313328640 6425098943217534869623271342473216 -372072309101593760835764763454603264 5724197085947193789277980734783488 6615466601127781066762379753160704 -498929808275754981446055097278660608 2025511034245805633049995207770112 4689889662966563304970039395876864 -67310118880067581002926109514268672 1425921972259559006324635910275072 4520402226835763570462643695124480 -461200790979426456094338109417717760 4934546250496291470784103538753536 1033787688700643254719029826289664 -531566619655870721855297620860207104 9559619310643845433339662879948800 4967656167437386072756068682825728 -239174710577320128733575213840596992 5641130186327241587305025076461568 4585105515851847455680893890330624 -293821310152905145734097959406010368 1364211904104639290587445553266688 7944277964624811988650905885999104 -536457967199821988795888287543721984 5777854312239974107299990634233856 5498383124077300191378624395345920 -156700165399714117976086805202599936 5526907958917484007396436695056384 1862486654179535918801064657158144 -237872146607278165547980086700933120 1534895679924767554475662214430720 363702763673489047115427043344384 -907916426195667415960317037283115008 1689248071705009064535132225929216 9715421209402032008274987915935744 -515116035214601876738328089296109568 4582846706333967046044995444277248 4689930902461337950230970198130688 -965063263414720318891273056755384320 9481605115005878880638233357582336 5545943443863649276335922496929792 -487107444064827473956110985513140224 1337410767812608101044891496218624 547698027901469602093454308933632 -702006840116146240684758569148481536 9808741074881181354167364493508608 6719027026067468611037181020995584 -194075319715870013721510127595421696 6232536833322387480244977844355072 4041078611430713326386610708676608 -774594359498552087300457877628518400 2427513093226010842309606256934912 5383321978142573357547201744601088 -562271582171339252527737001289449472 9235188265243858871674083316072448 3921449200088774725883800292687872 -927192488258833054405588694427762688 9919587420686907251216938619109376 6515833782748405670248090158759936 -956427489869542424105860403973586944 8596689620349244763858115221258240 27009399895810895201013650685952 -767465463796276064257249736296235008 9614356890333854495924038800506880 5465198480257559984951000567906304 -103295147492696489341511883305254912 1023583869451904583578527094276096 8266778518402955315568030370496512 -20764360918760607043508725648195584 3038874432072278203144043321360384 2121165524519336413100376844140544 -18093985005302765664502969553387520 2555511580302666774316019817119744 176326823811002907864777069953024 -469505767500102137857207856271458304 1130998741299307317973476876222464 2156624637083543389826584816910336 -125609910081423680914920133766414336 8590199929351200926472119406034944 3642552165676216033683381415837696 -11866703294274170143960054164881408 4914095456723298043369866919936000 7338563150670386501592273540612096 -348621641386956313269289957178998784 4754258819279326497070372735680512 4048412550672000849816893647749120 -345997252934054664065106025604186112 7266742776271019277508690111889408 5277988097026403463297178405961728 -227303361323889738723428212274102272 4346737284946026445234964298465280 7267497172648623552602942518329344 -307859776428310598783334759406764032 8411521498286896777986438875578368 9176548109760071531962191650488320 -206000762814834645290196094599299072 2297738373076712619039270117572608 8905090189491976942622632121991168 -772648391739273309518748539903016960 2850272318566218617764766686380032 3744309741080212615003190780231680 -667531014788608938963309706147266560 3856867744456387335743227566227456 6493556129449999115732957844733952 -471572777910723061498471301242683392 8086854393831091296340211734151168 7679397729747481405802635723800576 -543232082559942275435734281073197056 9595870307349641306216909374488576 3944896392376775910757971594838016 -49667616097961176338484505153110016 2341257623600871570277600291979264 187051496418700296759313103323136 -806729673090172896895227932748808192 5251834301764784151180212166459392 2124906201768021296393132957499392 -848629176982577057359799712370130944 7411257926590028234206175490473984 8078467830628766530679082267443200 -212282436338703899862372192404635648 6551807252172958687180939449073664 4650101398828355028682394992377856 -40370386679999386004056895142232064 1431269020060502592318293271379968 3480313761299701571850235325448192 -647997546404586540520805265425039360 7583395817733678369403530194714624 918171534301594109347670645538816 -343376971581710793474621720523440128 1935164008648418773200498575015936 6141209847566112318059826896699392 -80334676837794684099465965410975744 1603936930343494675686676607533056 3945859901262920913023813780766720 -795741075268206361456567504928243712 4502223071103886781448369502945280 3018666675734327037614942626775040 -63770033741904158315503406104444928 7016683385872250267114015331188736 6928679450999807768991694592147456 -233778101202134480959627405721337856 675291574341379913237608427159552 6549521043303111684645491555958784 -672870827783352706285592183283122176 1706406598807754318499242645127168 9410072634181010487565162387603456 -926711068809024214950044438177513472 8234540832447240673699225155928064 963090984083632490292405791096832 -568864158707242000064647232380469248 7357998602642754208572366718500864 6920141763856367038976544703774720 -749439683266197063801049365987983360 1485535818686060078425139306299392 589421213875238848479743109496832 -442500341843625638839899087358132224 7418063661119141071760459686739968 9159737836437100788305702732955648 -552750387474944586240486521463373824 8851829559177632093824124253634560 8260075254002536566534872754028544 -401284549928893899790893365866790912 5592316591345259496979159406608384 1790094712584704478665100069175296 -75134189839868802335498352361209856 8114508976431070700852126553210880 3587952809282413291534977381433344 -397891514704470510281396080259104768 7392910079618735191139898535968768 5611387236911536657156429248987136 -721471920018743611056914233122881536 2379863730486437744394517637758976 735470955186850459402222526529536 -132479014969843936836534074624442368 3363959098480290576163967827181568 3552943884938868546264556015452160 -837034912445779529934878233306595328 5959760046080286142433184364625920 3128136443879850723372307478216704 -105553577405666173249651252653981696 2300846779026577445198874489651200 6525392855230407235473685014904832 -202531279499460517385690307310387200 158808904507750953171970544369664 5445584990081117077444101245239296 -543018552943753081503231961045401600 7994514361133753410275684200218624 3974354565959806512828816210001920 -593007276294304802370781788432760832 5404360354445349547725028503584768 6325393502477567355127203310338048 -498095703899377990912924206422294528 5807302199360447354452699047264256 5267478471558571408229491374292992 -304720850595486720627385565620207616 4856823979493054868886943944409088 2651461918812760164636984426364928 -556492863746695175553913397734014976 769808970709499325861731181264896 1221253425173365881969052066250752 -545109124488797927848799802019020800 6209308757623628258192071243857920 6615944250060644806981114277134336 -855653724487119144773777729070825472 7811830197955024988807638747709440 9885673841089700857931377472962560 -935908702439622723002072541045981184 3317004318362284599641294793342976 669887210351112831094431240159232 -660666369863267925672238584539643904 9610857861270032019210910392385536 7371311916239212837708545600258048 -806962177671907748828950752447692800 9801595966918407859186198277783552 897758280495582209461288836268032 -431414402670837662377078900360478720 6477518614901504035263550146478080 3825451128793693299197565623861248 -994842285113855960287742695091208192 7614502398066509151928103137705984 919388606577428247792446777327616 -585594761966916652269465369474760704 8265964415727718976398037056749568 6628964398672149488709125514723328 -877396388844565866479223465758949376 2344483713654361065108204182044672 1352551587133095385205578194223104 -700931878491345196323106767255896064 115531583102101056047118330888192 3306075575925847733612783933063168 -218182268260078362338798580545880064 3648617274901273680568906200121344 2968759871204175233866787004088320 -446590108242027726047229544478277632 9431914358473723393151851793743872 6334785239237800039995755890475008 -801186736246595424717815745798471680 6858013479841600563639178819010560 5512855194350350239938356254343168 -397491025549011817159304728813764608 1997896152990468618556406289661952 3693151667727308094579589989269504 -663224441164813450560370271309529088 2089108529339188464919470019706880 2859671570997675304855938134966272 -979835648169477830759365062156091392 335822654077166491352855056744448 8103511803959867540410859545165824 -430441804549004164242985035193384960 7794850880337319675807967676989440 2508789316321668384312463747710976 -674490415540832243010297709690093568 6108168563366931789194406523830272 5483013904167348124259464771534848 -713309656749843772520699824611262464 9125254729749835455281650615713792 1073850086101240641573408234012672 -57058501690224500335694093205110784 2300434273568025579033805793001472 5091144113606878647419752079687680 -139308259158322348836592401627742208 7353192033918955212556119996104704 9924794358642804704016738105163776 -707360024864781742466871206545981440 8195481683666572477363580112470016 8615964920582643490410251318984704 -631042800745216808318398848342949888 6043087071449401857237934648852480 4797710061893294995971133755359232 -424217913623072655079137407980797952 7942812506725195722532703482937344 679141537384171692363429774884864 -547121925422919849365951553493532672 2180641169172506145733447461634048 7139986941738386345006050089893888 -959607067093296723280607105060438016 7762933922880547327970695689797632 2556378215898190991339728475783168 -384462373071020460162841334150856704 3863768834044663050252135111327744 3883082091868991318330129235574784 -50204855226065808120372231640449024 8849052966496236688962539187339264 9206091880074472468723145296052224 -545628198662398520107286956347490304 9841589954202917045577805232865280 1931471159433470668178604416827392 -676162818334381969479841396524318720 9306943107776865673092590926299136 810231819476555368928191293947904 -593116330736829359114250585676709888 5494970734044534448580860110176256 6070157688164278117007695846309888 -443323865786455680942272513050673152 7997115096907413003396483135832064 7782645678650202440939571435798528 -526353770421353583678203493770854400 1218370188507916286914531774431232 2923691739792326939426073515917312 -219529085577892400273047673559318528 7021956610955720747230758503972864 1887658765447235056343654919569408 -980822534332118779971720282323812352 9534740686736300524103968114081792 9221692582978984164874060795215872 -863130106452426869139330600938766336 5810323648560664482422228988723200 9521223289497250588217839714304000 -900872764329614678581755332173758464 3726905654400423166336496746627072 3155509174995052310214983404224512 -976296741855050630651515968663060480 9094135617089476356848652644253696 2706131963315948727688781356859392 -45754691939012057418166275298820096 5967521649499653261285340525625344 3142505806136319815661328384655360 -17680356577625566670355235197681664 4312236618669483145203162820902912 2528329478026883119715978154344448 -908542669797817842158123223634411520 5500964086681028660216152612405248 272366765537409153145304313233408 -58452912530380193506797935495479296 669445002972005594020299440914432 4373512566141050750404885439578112 -169439331514243649066011995246952448 7159199170887197142224306471698432 7766609802001213159276594717523968 -738943685386627286947534585588613120 7528351389524888370745210275102720 3595132285819136838430406628868096 -728563882367508229501029348158734336 3396879434986480521942113126973440 4554356467194186262086462891622400 -764601983803144886720148120144969728 510900224594532947724947708444672 8476740267897909186263871249186816 -720459476072073806769981108493746176 5004761964364576323823439737520128 2648310111990462857144927753601024 -861971318156800577823989557201207296 284391701625948614524798630887424 6916551065447322577109127039811584 -356009675837933336875041263364079616 4077778060156501578098396285108224 2872420899086736511497889982185472 -895463914943885261651247761968857088 8538250816105859194047854079377408 5097212997533815112682612467957760 -102489704773752227727716165523341312 6552027919121984929509670794559488 7777146685630082882918472101134336 -552309523570349974692774664038514688 1810486174638257985341809672323072 3892343322107190270817553795252224 -874723437837327162631560520647311360 8613791377711906200189482643226624 3949908288145802351503152531898368 -775705976904679018413454680880316416 9951645752914237715886720740753408 1340725142505689945277303414063104 -864842722968699737376671787087036416 6850058550517354479634043090501632 4954982436655610487537972281344000 -707614707950674278598529567361597440 4701118482750332939593414080462848 3425712822261798475861854089379840 -311897236769433725681346064039280640 651761896959005587436965787074560 4729762106958260779310938480181248 -902037519274250471388345667422257152 1604922726832544935985857339326464 6812603221071024499881339844034560 -112053377449697608983079114667720704 6720495911718467933609456687906816 6046982567510381173731810825207808 -679838230329619819989799464178024448 1088023804466190283675254239789056 5395223874229721278033560751570944 -704835240334589705629964424802467840 7581536852365546627576411126235136 229503080877934277051874283618304 -83122458480462643679462199962632192 7157015507320124596592285962993664 7093647002311203105664166761857024 -263855330599439775940118343193722880 4699168168807979147727665375477760 8969144330759507469575011411427328 -711344419282916037482064419850551296 2650031411273065591652309394259968 2790691202814160357620214583525376 -215889041199426441698791216094642176 790445392083662258197931780734976 9824965477299748894803747038822400 -898092758754659553914477088799195136 4715115211315721089562832587980800 3377273079798242020035307151294464 -412079160199426330388416754081595392 1134615056917468914160181566242816 673210821498037976067532480577536 -441794763739011992390137593743802368 9062448291415152617453600385269760 6667810024649235731205907321716736 -710076753826287545503753953234386944 6877084028710915745166957259784192 3311756099470058273740536095440896 -929084104995512762594643395374743552 8637429008497814942534273144455168 8859714575572386226061857318240256 -973470176505250307626835552944259072 9171704205224653609122847082414080 8356858969454934523000270027227136 -731163400661115487043186521513394176 9467476261937622087671836751953920 4377753328825459337729820518776832 -107012649639673387506414739118882816 5564620744675218613093063848886272 318132264176007373389322159915008 -121754602744115827603152768337969152 8343968671853622206722335806849024 7718900266345464344843582049353728 -411650030246851124234652168675655680 1869575027738954388317837717405696 1628253937329074596464321705803776 -722982848221788345095645589470707712 2131458767404316387978186401513472 6416766753542156747462847554912256 -650562057919030507423939532739837952 8837659144239404409923335117340672 7344293361169469469113665999339520 -568214766028675407988917704153104384 7712146785407192524945877381414912 2884548457256336260035357414785024 -359919776920867331022046350628880384 8738529510567111210246395939258368 9026961478646655189049534979244032 -41814934556450237276514096599007232 5966828930455833699713106191581184 7528864033311639020391082953277440 -223849049360824536318090422836527104 626654947636081451771869630824448 3375516165486639224877333891514368 -993257712415563041788616469089615872 1705875796779492143276724676722688 800746112250725013524547232595968 -856893134679631193030384034684862464 8847637303009893904638806870458368 9860979957488421501687185272733696 -860057275093988632446219556728340480 9829642062979663025169818590380032 8517072616996509512328052062814208 -754096939486681227758845004095684608 6400055597770575098412703544246272 7791296183745120883346098024873984 -907325790827308419618276798237769728 2162088362025152884512831838355456 8315455138147979710595064064376832 -983725497017666211935736435264454656 8705128095772472969090870011756544 6336618186795115804009573109465088 -968263981255124089357504156295757824 4680293197813338175093329289543680 7041263550413294436066934833283072 -484986583795571498940995461560926208 8868756360741315193314601542352896 805212989822274549567022765703168 -7171191360566052986406711481860096 8584118269104024418340323352117248 4614199615318911321427592121155584 -555476962454227689685426193209229312 8821670288159944268905728777912320 842789349844704576893374435426304 -189973536738443137493925001609347072 6692630874906149915975160061493248 2950454060430424821474841736511488 -591350711938001141820841596182069248 6876314917261239463776021007826944 7608591558152092100739201545273344 -521802525970935317370699620743643136 2507738351783017398233734190202880 5161451845375079863937451197202432 -487106064659764291429369531473068032 9926614445392568741394733089161216 6984785180808600219376683443027968 -269493137360600977357983645414981632 4681238755665746537977558205464576 3727733420690808111991905568423936 -604704725690077417048567728117383168 823738587959170872084163626795008 3133344292101744957501025420312576 -941606877322660451161627716910841856 9886748295192337859260897256538112 5704673364753284719344820827455488 -887302863008940112787056934665584640 527645051986670639185344172392448 8685027419357000170652555387338752 -196620668408411631248979877014011904 3125730346482965777780113470914560 8718357212649177312290024953217024 -414255502929693592714594199044882432 3461676296918878113765100401721344 4082035677767765026822997600632832 -523560701634647304399908259946823680 5080291263225225825921726083497984 9601910223094359159562906965639168 -61993136454636485798559093631221760 7061292256927602612697178132447232 8742628482461209833183431700250624 -646449709543421980576735693847396352 4435310111471352872075383034347520 7635706355575906333444432034004992 -383932274665778162904471162652196864 8406453472871578341242705404755968 7659291961501626231139223348445184 -334792956169978577856061145698271232 9993336604314639777419907722903552 4759053838219255347391394622734336 -759364489076179911513505708835340288 4764870738348190312479458982887424 8179384115869948417973664559923200 -462320106852535117585334293701328896 647238717870116880505344972816384 9001522872664243272242776820940800 -390156729625975973241955231020875776 2496484134363545801711639576182784 8328538651143355490407051868241920 -840316742146743546384500893826416640 1761232436957866244746099210321920 1579979594887867487172531996065792 -46177381838948443248770125202980864 5141171133539896647315753520857088 6663199207275356519201724910534656 -464787722049579421127285523339018240 9211822890328739021797539440492544 3894858700641569048623905519960064 -168602711384248431516025911731290112 7377407551715301463316155840069632 4545064187226810346449761543913472 -845206034760412269745907281856299008 7955365159384492029011008711294976 3534379495723329065016204999000064 -820119551787910199086711277166264320 9572404835547878341851470685536256 8555366639289565832068334700462080 -146985249218845237445770537588490240 2332384663153262576408223427854336 9456743891026216427496586757537792 -537175564948404033797758706067177472 867170112658616429856681147498496 4011397311721087216742668395610112 -466362688416723488096871842945433600 2567197921189852093182867593494528 2761259000943776136060726677602304 -389613862141213808949713344682524672 1231701356441149720898020600446976 7230036848068870869431623708835840 -914410028328759884411582372795908096 1329382887647742741335690151198720 3279934758087419356039987570147328 -799376776229365744803229866576052224 365833238808432708250651393523712 5505043593966548681406733959036928 -942739214237274938216136539692335104 3026342034619508236300685555007488 9844333917563444968982214076268544 -413850670356928361258396899201777664 7698761328434324275343757521453056 2587483734012659298301694693081088 -262552627233432894578136322154692608 5979569235403654377439276593840128 8797345806944692556132860158803968 -638371392556063702822501654076588032 6380916970317611591980280113528832 483146624192541162704651730026496 -369460400506123813007918904849203200 5879106210026789050770544710909952 9915933250435588907482457688768512 -398309448519220524709348377901400064 8143099811360353173152743011909632 6742592782044972058597314151841792 -530496987810548824643362645145026560 150797381971081127914005497643008 9100319190254664452238570088824832 -878064023003299594468508419424780288 587822230012927464113745491394560 1277874718460194302286963383730176 -918238467477164759418715006138580992 9295316302764483596243967508742144 6646891636622871604109405059022848 -973294422763832613087068194871443456 1515832031208178881639342059552768 639444258003429516223777987362816 -636907880144225573582130009721536512 7835264741299862685090303503761408 8535315126350819476596469039890432 -484769009499513616929541745320919040 56721362546769458117585437458432 1205700419717115015282125619331072 -700235853812540995465757860070162432 4360089295976579692864641597177856 9205239568106563315004513483489280 -920813218052276821801965659285880832 3332127823690412042375710187192320 6553551129149350309827124626718720 -709271834191108722095068677194907648 2205644688950162572787861040398336 2636108401019162787455566872576000 -790384802451663225258335723864457216 4637105518013142949177003496964096 5925971701594658365131096053514240 -175174786178491279192931764134739968 4166227430660688147312398385020928 1257615445322151595929322750214144 -698162637981090249653032984814551040 263295350569594591228982626091008 9754867891182540109939888762126336 -587560974451050464833670623216533504 1773227209007932565296492035702784 8218888397825838786682623958712320 -657081938291624050955327764607008768 2858938157460110422099411838435328 7781829147477513717996158701273088 -638166518179076997633021144362647552 7385045062072151638356177247535104 2369649156552399449492884239155200 -648726033128856408950151498277322752 1722782284828830452099585289486336 5667565048736504965065465214795776 -830536201669914927532121082445168640 839731344669372572551882880319488 606135057555042656356774193397760 -211118365809182401544971746279424000 3594653768061834003487295878987776 7736447947481289926829233840062464 -993487876984938221089601059322593280 9904893862186770376194301559308288 9471962447508771899953735140376576 -75335836752983314643982261845753856 1018639513370325893982356619919360 555297425662608148600794201980928 -978929973243252308673297763327279104 1915177674520709336955758611267584 866635064653321026038746130153472 -578166549063443028072914525026779136 1070203801442729126775742519050240 6272515086206225902366332171583488 -42251720035630386634440274528436224 2405663675130214142841263902162944 6626031554882522915874806310109184 -353579036934777261999508995950247936 8324099492246561407363707033354240 6036444420560198082852092504965120 -88972295216578385685553773860093952 9277530186278378861174110910676992 9529026028005404015765936171646976 -907123899927294486540805080927436800 9999947955221132805382702140227584 8021419241637227960794406493093888 -667808016239819234608438613305720832 6931744109126748963581602750791680 3290595625716204046849349380997120 -937564567505706643527826858328457216 4832093965093650060872944862625792 5875206345112326770674689611137024 -541398153795228438049068705105575936 9573727182476263756212153912131584 9043112552593993981121780305100800 -941452553115044350838110105865551872 5112984269069342416292889652887552 5170529193370017894092429456310272 -148610626969267058123725374847188992 7927258927192002887191337545760768 9125104356413322490725104365862912 -489641159256272589452560437639905280 3260545444046284713246940142239744 5999985212454616651860143014674432 -610067622275604834649611797899771904 354509846854418261996321558757376 7418323849832736387474207195267072 -590296396826163895530615612905619456 6284239126721785233255786359029760 2297190378328342873917736003567616 -392670480264500208663803673880559616 3662459287456155388119126917513216 9490209563604458613102743054712832 -895789508394707755424984540410544128 725110005244003170389211421343744 9476054457889910539487794903908352 -169647813977959227049057475620765696 8225919464353174507630780410232832 8784339251274880625935821656031232 -706879764918656388581599742353473536 4432115617596283477675346581520384 2624509653923000811812630885826560 -889125506529872423268512424360148992 2113140412093389094177468183478272 4237809266907986498147597823246336 -791405727276280765750460750697070592 1350985783697505161181163637702656 5932182189022805696693799221198848 -71023277304801861207466576214753280 4283679918926884911730569231990784 2408938282461810805719814662782976 -140690210231230821691525567862538240 4641026491540523135947954806849536 4355828431642215417607533986054144 -135247332148487653605466606965620736 875722806569214871439305015820288 8312531576910365026997062791593984 -614565102748141919078844348315467776 5581873104105045186987557862244352 4877094535295172885007535339208704 -333707735699260833666197190969655296 2271707900198342336178187189354496 5232509309919900510076280558845952 -77242279954537114309735252267892736 2144940207320487311904258331246592 9282723543502239045472313224986624 -444751894645621225629065968118398976 3464105363454013502173723372814336 5169349928180959398531841828847616 -860739469490377050302754145265778688 9400669387474263268440602058948608 5933687784205488817958554521567232 -394513065183224958139701119403687936 236220091776613078640656801333248 8541713548059149383129418956800 -396151225813204387613237116688924672 1099898215265849428939851165597696 2146653426012159779083902175412224 -128318448927333106357972598878371840 8728821793240243633934517074395136 8396116905892450346192702556602368 -314468950192101746060757546649518080 6586385555862194037871991167385600 9369308322724308069117590629253120 -54071922125592856728494891736236032 9217371054534608498396825326190592 2710091388680506272062881482670080 -995306561706755344052804434983387136 6309240350035680047354621760372736 9312016297144242207058415916679168 -109047692108514427476203880518254592 1067842286960679758129032025079808 6056748884422549663498699267899392 -882707820514070395357374379114627072 304854306197780507030945022345216 6410082912308760642953859032940544 -675552477580042882196115756066799616 1688103828997543371419047310655488 9800884295982721216229380901044224 -170444293990627515101750321519525888 9311833873220417802124356982145024 1153053392795782777817853631397888 -488378261694992314103415289942114304 8795504855574730985951564153225216 3573070942981911254794176447905792 -436850661734480076958211471799484416 5046325291898662208490065597825024 3127977917830737246868176545775616 -164572741258629653807937616309387264 4036436079658574748490821137334272 6249591183327675320097523101597696 -610566488069644913777048643564470272 2656243768383787071628376987926528 530041891406835717801240915083264 -604598225496600758265555780267671552 2157697269049987347406327910498304 3280822705003006952589571848667136 -83225723234980756288265168846061568 7369891469483835588010513409245184 7829493312828881494428400108961792 -261956713145734755316213641459531776 2174966799677044492618665899851776 8953411696746054546490614437904384 -796363703883608868735885297785503744 6512422479509297884037467087044608 1873860460721935124575873056899072 -74801792578532196513084316636413952 8526133849907754299286490655490048 1627317551517864062349365496250368 -52911456762533098053963829609496576 1754176540766947544840181041332224 5768163322462883685188844279300096 -102924626709145789613994440552087552 3587069653344887094735944384774144 3350029352391668973117247275925504 -531689581516346225008528102915047424 4187372969769055195486334157324288 2755860184640998312676501208694784 -188233502874106730461213807416967168 1226698035509300210636363642437632 2888443191951274077441173334523904 -986841714507224849890104698623492096 3403921408151482713806593121583104 7386307266764474182444617232809984 -344324181980499742913702900898201600 5185330496461714962487430654984192 3734875757862248254277554450464768 -921530512008601335237562890809507840 9479687054357985460765290567565312 81203857094421253535268631216128 -39566032764026477763762487268737024 6259333505668171479245744444014592 9990270254480994522963115126030336 -763414448289851553968224090112131072 8578029449293350905887660980568064 3850043303632323524773205321449472 -154779707894463142177564091876376576 7326551254969469273235743716671488 196317284247693755047138214019072 -407967352702955589847714008068521984 5201364247069772606173850351173632 479156766221503629804375176642560 -687656211339296099770224127823052800 8164764986448547159385722088062976 2574004358777184231797652860174336 -247212450854211735492105885280370688 9859815450417190162507130436845568 4160095016583661366762438578405376 -592980744407878145542891504555524096 4142270778344605336442907817672704 9809152287786515631906792524480512 -379980900647101293482454793293135872 2104683524598433592812454386073600 2521207578694452469230664239022080 -910749691840115098331220521290563584 6999305746836877555099428485857280 3443195141954101680611983464857600 -498198849813311395393722074643038208 7968062639141022683957422612021248 7272485743171668517404675816816640 -30583858083972890520252971705434112 7650300260836854375786414201634816 474986717825972150562011324874752 -151994534016054267589411397070487552 5781875985962844318978016356073472 8974925816962390959844709149704192 -425566453243508831474146058589700096 2160446784754618169649348292378624 3412425554103857105870323187712000 -887415457292553312351890400916537344 643933131482799325604742311182336 1704830972475738827084540351086592 -420977378937911900723261141854191616 6920496923893692917186550755753984 1362905509546138602443385362972672 -394721268084878872708757901230997504 760833649195799949498134973906944 4538978308630302467514646875078656 -769210793244933020843639294497128448 8026714063475033539845087366742016 3671726194363121075886752851296256 -119809699557612230671383035859959808 9666698499428142186302912631668736 4581407759043199319460853112111104 -714289391149592101566449565093068800 5704623625595419564820566036709376 9320748958853507353245067044192256 -211494725655939612824213684993654784 1654335710486535694951473670520832 2417756141748962120998340261838848 -857893739633734644003818305528791040 9855656634086941539622577047076864 1489566279110495170400628544372736 -618784214319243625582950089056321536 1838766466177582493873263249195008 5811448495728811118188500153794560 -89599715187393464279755716403658752 9679908345090189579211586748284928 9347807927483351142887043771662336 -198495218813844851010498398915657728 4575235850829307629160984790171648 6088339247818316996917625702318080 -475585039460226127082920848513826816 8938013404247897836732610724757504 1629151429259855278102838169829376 -658645023335697026009625881093341184 1463221425175856014280718096007168 7404536198439160748968780928909312 -641776467819576033123787628513067008 9190650699420593933303432198750208 4488998533340853870573193244180480 -823681553968478337763516983787126784 5379771309558194119964754884689920 9983742515455871998342993329258496 -198729268881875122078975429619744768 125697509328541415592460168462336 5805075142629968397173349190467584 -659145057218379223156897258095509504 6678815627714271585896114564366336 7221066842459592978680798076993536 -462788649262010055053619850958077952 1357149399456079787260859232813056 5611247937583112032345406841028608 -768492549881602431922437084300705792 7192898833183947885618291974078464 9094880907442725306278791448887296 -893711904985829476279754607644639232 9984138402271260424991306508402688 145239752580718159151285990850560 -612573169608367146861921542846021632 6146923835523103870287611416281088 215731375749418253350565656395776 -519603745264633391406950143836028928 4243944137110170979027589305204736 6447995030724368740819398691913728 -128224170644091327835271478523199488 301237201585874220898591940018176 4279256882822808123956253954146304 -388815719166085865702424329442033664 8985238714797460775932116640727040 2705607758983888280135593151692800 -573339726582321641532057537889697792 4341012783400026287326283771674624 6407272551309847649378094339325952 -857931963911807831578569570256945152 1825418110180853833033725415260160 5129965143307647147584260027711488 -57767998573843412802776430217789440 1399322824249306096408678191071232 4270185156241231384115023290826752 -493655335265025742687217492393197568 6891686547198179633923267166732288 3402667564983734472491957313601536 -742515252033035433561001908978581504 7504960101204942609002611966214144 3490631618931465875648660841168896 -581377936427767305773499186770083840 5775980406121528598162437448925184 3762093155844244118234923012194304 -87980583503366322902508162965831680 4348470183163080487653850591789056 8046159507162461331558191935258624 -991319229656709042716080591928819712 6558747264873567898893334165323776 5967960364558743275627744883376128 -16407277915835939518731283607846912 2802260894188381625586571133583360 4520043766424130037154488891998208 -813454712007021777536464271062335488 649492897675530666223550995628032 8441744191996277899016370103779328 -204853852777335947038753440195936256 2315253019633360541837080255266816 3438601973157434326967285801025536 -912004913784605820288828163584163840 7729302715193854324788734698979328 8598342041293013858525593275990016 -844667971051096579790483787888984064 597963919123191580489857743454208 7235001434781682002905275991851008 -86538530985413096455308150692642816 5499866275048095261532179239272448 5990685610209938385456796388032512 -913046115234424362138620832667140096 7818900941251709348131843522691072 437553996753548300707028736671744 -514796890401376752726965453942947840 7479557802548313860459369626337280 2978877995576368066693413646368768 -329674020080824152299980672664076288 8823413026139689243059424371671040 1014915149255867960154704748478464 -2034015331507906119758052432281600 1447463751238630778825431190601728 4153333746749546425959667006963712 -407840260586794235935506320272130048 2648779233632529042161469124247552 3732240584445378488385099515559936 -818860855022768266554728898606661632 2969633569666232747179613668507648 2235365056015464974717993510502400 -175019379297791072229737465831751680 8508133321874945521787015320829952 7934901421920836113437883824603136 -440961843401450361418844129275674624 480947694447540842221313437204480 9891256286329795984842200537104384 -199365560928329238009415431155089408 7415030332050825429899221042987008 9377017488316148366521702310477824 -939128424225651252371789348618633216 4332904651640116876188296004239360 9917100687959543345664208018604032 -579304704646143318418771416463704064 6956338494493617899214667612422144 8370676623621387085350058168680448 -309560617287514553801159086455128064 1975565834738083127139341235650560 1915912151880839346900969080225792 -279632839771802280061005445935923200 5457523152052494514814699964465152 1015615373209472736428595714457600 -601712401223015628868297864492613632 2823839680499046320109681687658496 7460999020932282723016083926679552 -652799978725125516358936704243990528 9050263378667089592144680911372288 519246607468035852270863407644672 -496587686033105564150655850813325312 3744355521299517182583911139508224 8151934485737006908925855429296128 -375758580322308248555301494394454016 2371164045048532382823791252733952 3900753539035521652531785017327616 -774770888285721252361952895940165632 1502935728458073537050047741427712 4211934529368720550988153012355072 -442745521039167855862351126247505920 753582809119171409048653283721216 1747533776314518721533711298330624 -896764317402834337470094239126781952 1398848185599866092952251275411456 433486584252927461057934913437696 -203299288326383996661999844546576384 6172246051403321367132157924868096 174058022578063890676545010794496 -365395292485399157946797223537803264 6785238678005152793615350745792512 4829813190348064674102435723083776 -300352976002853661856785580756566016 9168739109744768163000294802718720 2806235237332162413715657548890112 -718324128400427711564346037714812928 9038124009698653756415906957754368 81741471735686472595241525313536 -339982020983229261903588342382985216 7009641767366765006941526050209792 2750069758179982749171078844645376 -53417036956194440925937961158049792 220251050308637425055221134917632 439923197329655105319893074968576 -573665019771025997599822002826248192 6793760567783490956478295123689472 7906261779622559960680093987110912 -477903339251375388101038862386593792 8033238686362533636697773060390912 8021049932895748425215230422810624 -668904860246671009639985923544317952 685118259167850440217105017077760 1139102544199073171338545789403136 -535002140064800025871063534173945856 8590181216951424517384702789681152 7138846693306210031001849447841792 -696301383574017513469148754352275456 4944396929894433463691138773811200 3765592210931570412800090834993152 -817403604162302716550478584700993536 9410265408980036998812833761198080 4595290453882176053312760959729664 -480785316056539127878518639878471680 7876638953569370005805750879780864 8888462227977814756498207921930240 -87911915459880000353052161862533120 104014171342224893805358366064640 9999925986941014533951499859394560 -207650606946565893434774892740345856 7561530769643198089308421111152640 6437333151476013379334224113303552 -445880052539221713952378840764383232 564190203774114563910963136823296 8767659799140116961182937203605504 -476826862965557501001167288127193088 4154269374247129619974283002380288 6373301736802227599222258863702016 -543092007897704471755710432161038336 7477370298262519128653725953949696 7119163012319041260043934998986752 -467613187396118631017487449085444096 9580942597865401746091930592215040 5755013031146099203357708979798016 -862297040428753322438775258910556160 5515546167329285363015136766328832 7169756630493591987695286329802752 -855470476390185879972666933633875968 9418288163581987212456013470892032 3632006263562717691823125497380864 -409593927522098943042417838088257536 6578905309681355767690278503186432 5801912938834301691908744152088576 -241466468517080003480048970120560640 4535952505994650480088117791424512 3557733773659270628052529508777984 -368681346442566074813486294768812032 7533252352443058775196606415241216 3300136308173627178043246259470336 -608979454978144292436142592710672384 9714002280878109208099952082812928 2405921969585944729033507076046848 -800835245018869024765147038647058432 7584494989384885961053331299237888 605571951633526142526835214254080 -871887934621318930344062750348541952 6336124017520251236937018854342656 9150788839691364954823138018852864 -599130610520640786949684000706265088 3173548455717361727635163237580800 29875551299552790310645588295680 -407965230602100169581478567938621440 5762847037352646726535590302449664 1446639736679033839761533993746432 -15480217471253279575893428712505344 5145028623015351504415532125257728 1231020495742550521714818192244736 -189197522282400670221744052163837952 3025854289565599533548462955036672 4534277000745204683209386485612544 -481664862569386896152586085162024960 5467817558509414313366524379791360 6105741523123351036434000675602432 -658849299948454764331830694610206720 8883137820835095320289820800974848 7277337132698194137456444625125376 -780578731020749998089392346353369088 3146715690962594363329531185463296 8586724937904805930461507044245504 -421969775836369863695782668104892416 8085798392717463379002838204022784 4175713945350728590299731312246784 -618140290816121025046347986067521536 7090666643705801305489443299262464 5271865429067517777207623478673408 -2930315028254183561757261954023424 1057664238321638305206908701638656 9629123953832876683083017409789952 -575317928350340507177961684067155968 7767035834384609509259954010193920 1309195856187271979876550130532352 -653751410620109614948557595487502336 9354703857776184706096528831283200 612384567844898974241829634965504 -393344832192734824992132352205389824 8593161443523133817359328098648064 7667585076112301126637205571239936 -322456478447298508030850850487271424 1547304840929810818500537379454976 1164902284687487113195723165794304 -336594128452059564934768416769703936 8997336601726620305649210992099328 5756945102359631803492558887190528 -75225592446692277347968040552103936 6191408433935865378964577422671872 8540158647150803355595191892312064 -936200782767305624660955771434958848 4365907290608196090151584757972992 8907189697780851159539914010263552 -689120959315284971302344578935291904 354070299755829308344345336741888 6269339748378386622401199952887808 -686947131118891838848925448284405760 6329080315863606703288295045988352 8313644034546114346345593166626816 -860368667459824861028936729296371712 6160536907144105975573508643618816 6183640478417212928642312644329472 -435600865110248394274100438928195584 4253181579984471622400250329694208 5751215934160235811657173824438272 -319632547081828997792005994078797824 609815976303100082312195501719552 172600112633988890063773659824128 -987909140521073196928189885927391232 6606207466250396870780565283930112 8650889749560009568472799966658560 -619017991420295236629593550751793152 5262411727935030619468931725787136 3251910000973931733217350525124608 -743646401073759050673627843742662656 2484822546361662171176432176201728 8292424166108387531143798098755584 -105125850783414141062840979831128064 1530875028582906224533659193442304 4954916108086483808841752488443904 -83984650659720039479997439772983296 4576327302653929338459350441656320 4879212250976139501487366183321600 -562619191575225997455887078671777792 2995664087038570840407692745375744 9061724751372808265738669604732928 -457340308133710077598653829489885184 1109384063682609285129606625492992 282959302880802534257616813555712 -11322994058383627438826700658442240 2815347282381077941737562170195968 4672673538740849366488838163136512 -106903800688618811172633014335176704 6871033958537332460642169316704256 7806951183398293897146331738144768 -955706837638339441285813454455701504 6736204336243448723116536195186688 6546333119496538413127796460093440 -771471528509908161480728477077340160 8316757348089677762551463400177664 2630878661295436184207786418110464 -463142333435980188702548970417684480 1322000959263110556668073011576832 1285750047044624782290644251967488 -467526387373542750949828385935720448 4537424145570718643932893835952128 5060358383045241277532462915780608 -487054886205821817097483317074198528 8628988741094238423272923584266240 3042149596614554196751461602295808 -474404136766071455618329316511711232 1662976074966441076227139883237376 1338264119027791800844067572547584 -13123842458022415117809641506996224 6316341805424275193907169837711360 3465646615107250911929098701897728 -26566813764015973692515364148084736 3399142244884477475743831324360704 2705169964952234699334197941633024 -916306349015418505031212695898030080 9832983635921762011778426502905856 9738654332437209543180886090973184 -712856093086437319918323463205421056 952370377872896922886219073847296 633601731508139191251314711461888 -725556192401633568639855452863070208 8465556844598011804762852118495232 6743436881388262191782999986536448 -254092592554567101223542451924369408 658433703319523468948025370476544 4227784254938389731615955990085632 -7297663777114447736335433077882880 9053365214548455124887806257659904 2141358579599064771846585999949824 -770289766734447846854026643258736640 1538773014691823204017806120058880 1072054716900046762170130343395328 -399421621984526914864051290269286400 7543800782803385926697869350273024 3569072436447825048085956189487104 -489639563159449620638294546801754112 199034250462153157936373078949888 9713958918394820254384321969782784 -361348298808651084963284803100082176 8506074096716680724421305245368320 8105064117255553868377352094875648 -472841403814388338880588366548566016 115126926451413557561051274280960 8283557049699965988462318300692480 -979606066649485619238433327077654528 305290026391498851923693639041024 6318448471672443763519240596881408 -568503710598191098029721051488845824 1798751023329668285794582295216128 3516457978935341207032746825744384 -384503204038284909052313118854610944 7211177858676016538358701174554624 276873940053419650124950198550528 -535421542230310591172727856011673600 1988342620486931971786897109286912 7854717063617136239918804216315904 -759223538002459421283081607972913152 4474442112791482343138176335347712 385165294968062594157224361197568 -361677742953098098123403415508746240 8075657899463455448863627519459328 4955324878680512756299078819643392 -864859565868427098093950283236245504 1421633664079259463109854248304640 3821746637598539312641070170374144 -344278602133003891575434800950935552 4460507822925917523475074639724544 8335617163417206894298971913584640 -301075162070449637362730008861212672 7830099472672340059929487855321088 7981761035716989530225256492433408 -622846950282585786896749634240118784 2505438697267235174698488894062592 9740840465943286971044097519779840 -495397764807068352367022429735747584 6553708761798732669346858666033152 3946472493036360547839227679735808 -986194029721370329240215737988022272 2510272326101535683062164103364608 397056863151100589210081628782592 -753178113783011205922006084259676160 3562080423462316131679821436551168 4748626005549014334443571260686336 -298569464141432508862475637130002432 7170629783954620176931474154455040 3744427391451307107906651779235840 -969446234679198663818411342758412288 1812698204682901425334077005758464 6531981923190607492561296099901440 -988127384357139706532908620931137536 8247013841320965793746662350389248 8225800699560720200348079763750912 -8140185840618034364844695986634752 8349716434232956783335978521591808 8891642639165575590707618826420224 -818029391995936845473827312508076032 5467035503369077849659709073653760 4967444480583846938641526746513408 -662439822080095490822356980096565248 7877659110923346842407457056096256 7928592635166947553567170321448960 -782168357771535652449875129681313792 9320646166349615289668221825712128 6455699589574833442264424042725376 -922499071580453438143390166688989184 9366966080905125861086310873169920 5979913395158763370997802378199040 -575006084821195208081582983074545664 5519596003374363436003088121462784 4736348338110286045289001582067712 -582227157405914561735330409748627456 6513824247597426594572611966992384 6131374193405594046847855437545472 -147991050076477811183033707980128256 4795961710209216818801446580387840 7718564747444378243638253169147904 -850499450531404124180357239147593728 5276521546228307263684670042144768 7155320824500568804393716736327680 -162963631798834354465495379378962432 7206075486209623318899619931357184 6532364350546210345774514962432000 -660844041128879206713603263880495104 9254357293018985715839420313108480 647164503708183516987498040393728 -451433976354338684001781326672822272 4237436795930714361038288206168064 4781367167906894572577507812311040 -87909420711254456381645540844109824 7047813937805665162544816760815616 7179852247689464966528759633018880 -148552672465145825989467633660985344 6835412288863780311157320638791680 8204252803317840416825058623750144 -335403611451669273595682941170614272 6807623725892215096969011698597888 6243293168125349166028700310831104 -199430072800993665027161062912294912 73493627680016270295236259872768 1620464966842056959045126655574016 -542607762002000643124673636321984512 3556316129979540499539515995586560 3984404545731504770650748785524736 -683429743123703822815130200399937536 522054658189335799591842441330688 707788022975567698372027431780352 -870368451629994278883843231642025984 6785289451753682601135379952173056 7710232318276905990416149134704640 -421270430912921338323556114142068736 4478416323901571783988669203873792 6214962560298802942985268182908928 -609770129817828531566660742973227008 6199334301433343013778445932953600 9824673389951211291710688935804928 -191039239374601697638196311788355584 6419866226942914417150345646964736 1227648784941467807958842132660224 -622502960615330156743580522840588288 5015636170560261199905465957351424 6753831199046928081900987819753472 -905697561630664265039467422670651392 4616178806851344876389381575802880 7980509083754691282983652673191936 -31407750229625640337970248732901376 8693255909314904471586063997992960 7020438076738989354347527059537920 -322117586382784375697948229257658368 7968327049256359206006566502268928 7059349193140878909365594758316032 -102302944435806024989588475967700992 7055481074908987457807838949146624 3438518884754213843277070636941312 -883279829029522112539009181013770240 786263609667576198563164862808064 9710725519877880490604626624643072 -861508032996476481922387915887869952 3344541195335760031058028711116800 7771733346044954935371220446609408 -216240557732416321343310583809703936 1094369480331832932452807521337344 2403319952020506911468782014693376 -247668115148285085646590276595089408 6963834461261276869461712142598144 2653799711947757906614544689528832 -524608598773906347770009541389844480 8719114818808949817200851759923200 9541111244468521905388847200468992 -429951534493744644144633466786414592 9730232169623933973935649393213440 4181946764875748702032393022734336 -369365485048415397603244067640049664 4068446178593859121850204328820736 7705764562723678197335462992936960 -279804805850157000149557261107200000 3306684704611173213962765512736768 5439288875241482529720342115516416 -930038533717894902060915745804517376 1290803785617271481678242907160576 607849720752301000269132338298880 -187030342695059809682446432696532992 9696923613925948756730011872919552 1441937102508188867723846723043328 -239152935851147500964762838609428480 5433256135926522156892961674100736 9631354792974260240194449671454720 -252269258633310057941624446609522688 8367540184330592162632153971032064 6893545979184856181114073983746048 -694755754229266126917055435050582016 3264358617726699261679073534935040 3431886798208800759032224854048768 -819336694881247666131905518271201280 8012370272329513425725289104670720 7291284957197630087083712172785664 -366298372067399654860279851836768256 6712683150815141575082668032262144 3975829914220905515568621871431680 -578901007651801267497984797072949248 2030832096520251333175494339198976 2525844926595856297106258354241536 -527446995911318193504914126697136128 3962582566981018249251470146797568 6964937654815479733240762078330880 -751479950008774592459533429185183744 8682365844393886147713699921526784 2737852833233749793488835811737600 -116204361086319394904872805466112000 5886653607503030414599935894749184 3863134637807861958587284407189504 -862465299509719551558383475999375360 1118370589633887570388687760916480 1764417146325651881760037051301888 -298926515945371423832678534934953984 9155965028770406420948207185952768 1101979439384347938055829694971904 -713984351270701265156790165776105472 2174077609358820469859720772976640 4916196558417712842799969004945408 -636532648205741333734947071421579264 9566945265991165532782827879268352 6119706069067738704590322165350400 -596413965594689304127136485271928832 2575342644261603155248533754347520 5490823152831981471947550504255488 -740905039039839701010756603419295744 1913642629119213541343968377176064 9178776881168343919742369166000128 -479576936208962613130458946707914752 6491656982304834149544170488856576 2310653007543574487863079378878464 -398134379497853056711074759990837248 6723469107707961164548979155795968 355119985555114787814988052430848 -743855820219510998195248725032435712 1407218165495755634804222762942464 1937309231139753036980708656021504 -837139166787673196658455038557945856 3981389812447327482890083723378688 9352288769522372423617302419734528 -829118090909242534286094757974245376 9229173199081401803005455985803264 7427556887068610020720006886588416 -86375329021883286515887041811578880 9369990896496499200097047856283648 1251866484034148547588503411621888 -775599333319902521519725380118773760 7464594832694590018454285331726336 3432298551458550144307879600979968 -785211836927539535990288157350297600 218520939749180129862161543462912 7572611844086656536119330337718272 -620903159824313470215089812230111232 212060903125311243268784455155712 7514503565215135862800355352903680 -548660448400227148352523735582900224 8832784851591474020694434118631424 9493038412929111212221260753797120 -918223932079578207636727183408365568 8998033087763290598301024915554304 6826670837400536990376614407700480 -375157151053845794835535638747414528 3446399357372021876594661040062464 6497178588355473693715432415952896 -952630206661999908533814431305433088 5433609327980112715178548272300032 8412905619246026578675622362480640 -946780182679399486831839130937196544 4531186314046010164437094999523328 2203996260677482799679575177560064 -281940302272858620616308465489412096 194244717849481785016245089730560 5686279668493428140761935152939008 -519900516047193303553283033684508672 6932647704507484421503286643785728 5791598036230551356450530190688256 -702648804229766042192003587052142592 4185204306864314925750109060726784 8915053474977210715719737582551040 -24907998645986097706435990157000704 1072906439372960799057760229523456 4494985561505766337912732473360384 -615794258844620610937683663258648576 3058417689996439289977642197975040 9190322086777059488230864020570112 -958769649837489500816205659330576384 3423453527654909556577687312531456 8071571441426416249403665473863680 -194975401250728188146803681265713152 8549535479945662860913678944829440 3186092874229158556234836497924096 -861378462547058296314573866512941056 2458603919239494784226574938931200 4145788280316113549946286415806464 -732514990014289184038950246113345536 5987123325824844481461332526235648 1627184925059726145275992083529728 -724495096024538436788366163182616576 3610103426855926049589160795176960 4002305219422172670872830410227712 -356669501418735707518926033432608768 3703376746093116841654601543319552 8373100678156835258917048620679168 -883057929111530261655769052027551744 275309181969930020342307796025344 235445386541280499233412037476352 -454200503594591841102129480714944512 1490490640810266413153806127726592 5270379759007131474459827166511104 -528785797169855135499460837944328192 744269068931775678723713509883904 1293103495388460014871070436753408 -182118268437665897942652030352883712 6817181419885475882640436723974144 9344931656987473730163278539128832 -594807179731884614653494817886044160 7372877684338075134255738770161664 9934187217533420102415515616542720 -711357392168966095686800079899852800 4593010897963937088104225063305216 6552980694845706153674049876656128 -330603343707167016017083292891217920 5794038462208047380473491388104704 7632856492731102072203259720761344 -862496249798852760837171025054531584 5839578005620898613675398159925248 870188454878450724718173596155904 -91718711607926698409990601901604864 1429391855009305385304876654788608 979506790521511111731472452550656 -524240709984810776430688827076509696 3690653744376218370755244815548416 5048826308416284989447903654182912 -812081923306908026981148609252163584 1044411113059409117225968608477184 9740693756797839629088970103586816 -397480329644759739078188417488519168 8829646278550723407927483008286720 854819827515907356956983637835776 -353921997909355839883183059588087808 7513406169601950852907257342984192 8269036861302292649222497978286080 -559030288390600269192135969974779904 1516170178105467624279880186724352 9435060183118318772348748499517440 -433741135184478449519754068958904320 9427600611216167948428697944457216 9726763395190720244280712818065408 -79199520072368312718712137981100032 4643625950179015838861478223413248 6435202149810505611616416302104576 -938936334108226160738361864819310592 4551970244320805177202929307746304 8032858423437002778543795738771456 -295492646688739828327902618903904256 8401504327416138165333487654010880 6423970878558193069664174369406976 -342923804796270572537373986683617280 5779612528262032932621498563166208 7986586803533770908456494877900800 -521246119110785454101208700844769280 8485094384411850775554716604563456 8528555047716348523102819974119424 -972628617343854881741576463892611072 2707567541163149831238886577143808 5664305723000888072293290067623936 -928693958881784425282408130564587520 8038852950406874160222184576909312 8625309544732998119602849635631104 -35692740048548949452348172284198912 873450333436186287663555289284608 752614103996654829301594385809408 -763536020315105619076929558893559808 2856673390339816071203107968647168 7172305451917873626098993635262464 -853039800531863862062939125818851328 8434379078701146117230706720505856 9875924250279094844469441275625472 -85884136854756965701884428423266304 4226411184860270349847303639007232 2479409211433146422556959583502336 -493344207891081627142308736146604032 326184114337254554666644734476288 41851658496222621990507534876672 -867940796973942692501070225122263040 9180720267330269056894184999354368 3280218726455885470031494902710272 -237335925741692459645012364708806656 4389282795376890501868402925109248 1196050184345790728783641735856128 -471375113721983516010895516675080192 7448144671496611553421064476295168 336348391902747499624027366883328 -690018411920631829785480471014014976 9470660979014435235522778304086016 7095399018186343446670758949945344 -435707655600881051615141085273128960 3715020912644241017514588607873024 7580560726820552481669316041768960 -808915437665112045428100110059831296 9242506060169550948332659921649664 531450835924724358813200234315776 -729955643883031898469599101551902720 688855410363988933816911700951040 3711711883087485456543499298013184 -822139483784868229584996745948954624 8971281715204414567930113254490112 5558131878007649230598585779748864 -675880448463586739071744774407979008 5455937134851935925990256327786496 1201467039222027575539573266055168 -119163097749778080754867940293083136 972757386741642314772479607832576 4967228541648448563799136889995264 -860392108518336796256967823208742912 8051982246673971260675998147936256 9985116710716788540859966805770240 -788646538740468902673321656934465536 4184011523907651541030629447565312 7501480516831020928316329429041152 -710230063301524095361908359569604608 1496310766139425206193204613873664 6100021703492811454552725711224832 -899600717120509755814903731999211520 8409693071535434283494307277045760 3420648201626773724938250661920768 -314292356689431523526434215665074176 4673437400302946377141786792427520 3017012394265220795120113390977024 -737706410790072560900289682800115712 4077020054843242313515949554139136 5660881453100026121446826293854208 -827057890134086659216775830852075520 6774745950509933632334940413624320 9111094750174115220393085150167040 -792198058018146093715902207826591744 581575702378790575240701934567424 1295630078360417989803283241238528 -954435897332514714671851914506797056 702971669744485665545622476816384 8098110608310215036704980652261376 -13467513762851064785617689084166144 4087673428323680577144616969568256 9285753523045663564176114086576128 -846951652356089706663288014978940928 1902008818099904535416501268643840 5371725139118126463861067006083072 -591574931778167649321074420143357952 7176764044743131158800102863142912 9965950716196175668782009092669440 -878622811275922152741681093545033728 9345219134542221866539906420965376 797525996665913394916613418909696 -503678880541073911611199463998095360 4387866863322539933098873179865088 4243643263060068495637067685953536 -725506764620520875394755923953057792 8250276849718112589865589216903168 6391766897955564213627595899535360 -621218553319769403556919563652169728 108113942991506633921034566238208 3678918166286440341974675231866880 -497858020134419029478358071845584896 5840208675805152595071359055298560 388938033565498281809207699177472 -830246629120763558332115302351896576 992987166615117340814424437424128 8197444572826217149805287182434304 -591228297391487055705470486580297728 448327697751864500602676025753600 8132440280778754457596770318811136 -287991079426914092165866542046642176 7159888044555680301082505518252032 8193499395915192570971706187841536 -146802514705910281267022090534387712 4800645853001910332151670016835584 2114031430652632172818620871606272 -522331327466405171981210042798964736 2006898164693087833474739243843584 8806065273261555976363108670111744 -962504920061004040818683796351090688 8822671687015974522657320894201856 1540813346266039082801226215063552 -441941322774269306870539427151609856 6233237569992702912189611726864384 4735432212006224923084970107338752 -364157311698605756430907465204236288 6590283331520672761741437778788352 4586559758552447034188965659803648 -19182182518170006334840856020779008 7380203564511310253630584537481216 8724813138382116278797680425041920 -272341456431581189765795643595423744 4304161676493534128778186535731200 2051696457970161408160415594053632 -887797620627354875548204276564099072 8042685938698773484316864794329088 2990096620937929837889988316889088 -800716835437050080001957674690281472 5244689017274351786783832407015424 6319277966454472780341150142693376 -657691951793641122859852871329906688 4451748900861334162263620559306752 9894247935308297146852364651593728 -913718646559249233509371617728266240 4360575169743713901420431538126848 7048766031994042931308362335256576 -934214827942025999481798460394438656 7536734415913226950386111544819712 787778702319070867907700385120256 -500935740378925746049165206629646336 6442424115349465953884191919702016 5521953864426787843066787004416000 -238809713719752135955885083183808512 7001580094309092630331509776056320 9785020945187046668502608451207168 -726203612500532018984704290473377792 909191388077304742733053471752192 4013436631675733001311028026277888 -257049417213847352616856264686698496 9541444800042485750288664143855616 4811456102266314546100621549764608 -82890920330975329055467858512838656 4647113576754724835719428672847872 4484034969009051330605187510304768 -459521878507593554665125040428679168 5653076834147860046194779325726720 6793609720119408558024818931269632 -755761551032476640271278457466388480 9650071924111746561187405063258112 8394419567448989190075697193811968 -658808294154739372747712762734444544 2269023262452427456687746035220480 945550565313087579953900315213824 -185776865903383513852524665883328512 4264737775113964423328134760235008 4839739975113593051019299472277504 -427016050262309393533754570608476160 3807531748808074425559745950646272 9346294799763180084437404950200320 -46692356582141954835627286378577920 7663561158128663182055720773222400 5729101022207861386613651773849600 -816415243053818249965744358219055104 9148085360564395036802525985505280 9681426380404061821780876796624896 -727836748218357665775291705205981184 3060994282298470117317411227041792 2764297971344130297494569157132288 -791283055408024997061561789326557184 6203652256278791906475084615778304 5534300052492420698994182574833664 -533125994942547602248078029098057728 8025298165153211993921591533633536 7242342320117876217446784416350208 -43473204655330773843278622785273856 7985565579304819685594779065778176 4946003609008041230164342505209856 -123555156401651429012737593293406208 7895386365360968315248185215811584 8670036948797736422861779637370880 -511009035633589163647257490579521536 4395378372545158658830710888988672 573512452781841479022536078393344 -373912448197280468526527108607901696 6041057324137652744932862547984384 1309862218178811059544113958354944 -711177214504826862671916120831688704 7693486313498977690500876671647744 1208020065372040019204002828779520 -933787705069213759855162058166239232 4127252762585830125504554491445248 2496014317372283791246334722310144 -591203941426063279492271547850162176 2523967460692335519544909903167488 7269370437069078911935870069112832 -460658845606531184751467636608466944 748724464184513258878220107776000 380900611437853275422853831852032 -582790100774291404000647281104650240 4226458094918984565334500337254400 2280808872843369870237636201807872 -476140294021647704320295134742708224 6085022948187255271075019428462592 2084781804658440644500265535275008 -30320067985696654326142464430178304 9991878672847687165736414879940608 5728912160249229323772083512016896 -906713343922287374971247497215737856 9827579849060852930774853834768384 4214635431098282802994487425499136 -333045189483242359508050816083689472 316258600602066623479061405499392 7872114652350098945631875323920384 -615799941181685068691010946638807040 399239376960085681216017255104512 3303936532058553226184060513026048 -545644186620831864562245200443867136 6748618997389601294158279949156352 808810608302723325845507258974208 -865289226574918172917105874937315328 1532836407220121652446364402974720 6064708765834465606681610827071488 -894689687201030132047327126590849024 7237916811022378947301677417365504 3432603117327419531631166184488960 -15016306626105210892909395885162496 337305473515523055042570158604288 7828429734683796964848018453954560 -767563125499400363855222164116471808 6100651005949764308606607467479040 1792654608017074745044707368239104 -737360608189557468679870653013164032 9244235713267703933541355848990720 4491729814025689282540061629349888 -734952288261591681505203287563960320 2690552470377927098177599469256704 8816047565894065158115012468801536 -152078476157584515066250969110020096 9143690925773366752066716441772032 205475081888210695820972077875200 -515853048661880025802415502490861568 9598799826189668778153811464159232 8505981903419434967827048562688 -974586001607534369427501516234686464 4288774408852884596549426847154176 9218694609528898952725134193983488 -520089038868131160274827285949841408 395987285962046737607761533599744 8383724411076950761657042189942784 -8399138578161332514338128802086912 7393549014630603802503181420724224 8610498477052694523080606065098752 -106688535274705429262292584339865600 6279424505034760998238037942992896 1013485975710945347550886867501056 -344518804106652567199685650218483712 4568073536332575058924000908410880 9945798616625159437407302040158208 -1398902413726172523192671704973312 8641060364615664714286366485118976 7362235661142758199812387122446336 -189332698238284045332753722376192000 4215262822431106704334224042754048 5501118841080678918482548741898240 -423127488663867063442162445876985856 3773446351072388545321150640553984 7375837417815366615159813816975360 -149338454583686259329684968816246784 8176187413070840082838518872670208 4802128512778873186367534872395776 -711898529376019463853792813698252800 2652074748474091278888001125482496 5866574940809229538972099657334784 -727865090438295738106095384364318720 2458420508271390577955219297009664 5357172335213438013212000436355072 -879621667242135814781336616955805696 4532404279721575419866268024438784 7181152003110209699163461650481152 -975151766976858752596681468634202112 1083637020432490498622060622774272 7085131768536888580267735181688832 -55456124265163587752335533007699968 1618773757872056414675961198411776 1221009241032649460754422846980096 -966153007793886868164686559431360512 9253130738692391448109169485283328 8797817525902845942265544603336704 -547938606610193967520372613535760384 3551056745038877495323401874571264 8328488845968644662243500304105472 -44469194765412182521113207560470528 9129623226560744652969880452071424 3895001806956186260301764876042240 -587488622260367570047315867724677120 9735950268471854689644418131034112 5082206536215523111058391494033408 -715814352976387136128877010104614912 7776145695084776389424513154023424 573843417144545576090521577717760 -290750180862228173070768738188394496 7035820596447333213370336715735040 4361953046061958848579583894093824 -342433026372091687108111112414953472 1322347291157316462049458682593280 1200303643519743909363671097147392 -112793149867361790909351465259630592 3242663799025770373182333632118784 3904882030217690764830239465930752 -336648146542062444930647071127502848 9361550564680276200057965148897280 5703633293038450716438246354583552 -396661066608362423907332354773876736 7111988756593978142355605461925888 4583996171301308999185464941346816 -46799232953528168077599436030607360 9154930675165893381161862496780288 1474688551328625019624038718242816 -594899926938740579907758874500792320 6891854480123968836105305866633216 9875205634696714458914921767763968 -42923099221986399974103497012412416 756325598146321874179589639503872 2473475838318906564213993692463104 -411454343852859032704289591437295616 2902239272334483217333976209293312 1502312673694418542592412551741440 -665474757487850166859483465423781888 545363505908876519005341712646144 3362275824253677158256768947585024 -76560760313236571709193941222948864 9871840957530263270218461274439680 2293021264774098108594084175151104 -295665124505893529118500141857243136 3166335453407625135080064679936000 5999095537047384984144058012139520 -526499793182679822104066100551483392 1758462182561902936615564330663936 2755292849608713802250102515957760 -413127749119014092872708343323426816 9424970422171282386664272487776256 6153372227114353400905810527125504 -183730694467290085056998103358373888 9661080861283619670282547272613888 1643561989569542481969752255234048 -285868693296351523874926102518431744 251782534789656084102076700819456 4726687265170551373506320999120896 -265021841127048176605201818317750272 6813309766443799743767025557700608 2082217161293764416684332052119552 -198718287895546468346627378768773120 630806314311951746073100925534208 1441434610097890643190548961165312 -128083375686640824384452077358678016 662398855951641571101753890308096 2962980009086947478198599483916288 -639149448142351027252389658117537792 610459392127479747121936458579968 9880611174624561362727272737406976 -53522720703806597592906687158681600 9082732579901679360917000255700992 6396128212231890495125530018316288 -940207312909480263148019882150330368 8446189182566621164634709990309888 2574189109844886554697484600344576 -9195286428364770345673454331625472 9299656081646706235906848576241664 6217270689902386824057954469150720 -550664852957151401313777286140395520 3548735301823050605220640187219968 8254770245451547752590634060349440 -28817592595328070434402230970875904 656389250092939062701906517295104 6776586852729313463839204298457088 -876557467197640794814053399188733952 4072934771139582013481340754722816 4122478404110737504318769344806912 -397550330173180756143877095610646528 316354704817620308322372970086400 4640831638246949261921451815993344 -237601154600777599176431258486964224 9196113773506977430520544947601408 7404203821855188290652472445239296 -737438626767131505890573501996204032 3899486379203116531429729917468672 5800981270275279084837662588141568 -817926687745545824645800648381562880 284506664088822209609268220395520 965687843801840384495291341996032 -510312144813201122203006893293568000 721698737341623023425433584533504 993721350831949417551261796925440 -593980686721991609219614557859741696 2052186949240110576657006405353472 259860014369671162955652380229632 -340624390254837958579731728674324480 7080239729010582278864532890714112 9788745267859948789223163078639616 -596987557177057983188822275022389248 7972304585316048900675981092585472 2068953791010533398661976849121280 -826113330439933701847212457843490816 8547747862855371370539911292649472 5401945837216067524870718829363200 -579816476765532664529429347293986816 4417392740911024699123515831353344 3961496828610104439454426762051584 -346464493988809858187854964548698112 8864719093808703718152434591203328 3443523266456215474661196331745280 -177223865801221644611836393501491200 1197021175170630854541256953954304 4673539967128598409087138649866240 -553469858122403549097572976948150272 9652496006274896016085741645856768 2027400682473947399682171670102016 -241101544959971995772654070769123328 3726107674517905851817789900193792 3424857636700769131587287277109248 -397019536617729976826229624716394496 9684484486932968291930014966874112 6184070571092745484298357590458368 -397289905249801758757978623520538624 8101527396272382008174859469717504 8645300422637651348924723047170048 -943123107544849402378883864259985408 2315435882548024435578214683770880 8328005798248247521967424564887552 -103494866916654879395457271756488704 3001773752998974722614561735704576 8772656227628267473590139586871296 -235301543457769735331664181722087424 5407275007709148232419815708426240 3702805562633083210678328279171072 -412804210438214733123870846152081408 8577591394246729654207927174561792 4937359147451058478994869746401280 -477896097162781745315128347138719744 230380554041868158783839262474240 5368512087848061954746903007592448 -912048717349072405009178771601752064 5025996199475673928874912900972544 8149062478084424353916762684653568 -261195866206925998311060407589011456 6404014298554032884380616609497088 3412748272109411718407448038473728 -850783811692048636701816736450609152 8944860042082730939218910985060352 6989731933103313921377070097629184 -782089031244159200542873859620077568 7138170797060916077305563367604224 2491239763899067731669626994556928 -345746176554887457135142612299153408 8885820720932123939880977255366656 9612968220941167838538814348853248 -137429954980048488126199621182554112 2119561255432716749655259647836160 4075667416499306987875953601937408 -864137681603212766842455400455864320 5125140469993544895708891229192192 699075702408349200645091414245376 -325422968633213682402313546500145152 36558439221197233622844350398464 5486483869800204111841266942083072 -726886709223538577868561935859974144 2313308690921123413714963863175168 9242611121509501614151480276680704 -677506198091647040861096618902945792 3353116540666019968795004297543680 70882889429859849554694523322368 -238810405644757377568094244638294016 4283867663411746171739315472695296 4498983965238063400917525852061696 -537661599242234933995646722095710208 2416178389376017009219714007695360 2243728234059790044080690195070976 -148719492480367053698766949821972480 3974449443638987238050670332346368 6750332932953346297137483294441472 -537337101494402590689289681317658624 9259607852868944059136138702487552 3661994893827717647049679339257856 -948536529764615181919444724189495296 6353287317130593321675971518005248 7107768731152689957095789981335552 -127994479783281297961409777917493248 1156902437863552426505573949767680 4666383533455995607180677333647360 -71924247061304447505837669379735552 7657054219155103735730869668675584 7184970963970203602190960884187136 -220567926925166880663655084810305536 4199562337306127546059899388559360 6405678249362996624866720169852928 -870779163286075740478511487276548096 7609247837836435993847821907263488 7994958071326266128036704120995840 -108009349614809258884005390622654464 5290703337475158941701309753982976 2854644933977085066231736755552256 -936014914486079270388974788164976640 6448759151697235382410626897805312 6891590872816228617445002946019328 -765106695560410394397024368638033920 3166470098448292194577284566351872 150537131897253958784606130929664 -395195794778476545363303583105155072 3807188950675440547210868434141184 6488175327145390887533803135303680 -58568791788411591461252745937289216 8668953870707340464141327602286592 2679131242664302214106415080931328 -464539890464461441243236623542386688 5591623813993622349065384313749504 9076540487154718915318884155260928 -318813619433099654538660615169245184 5964233088462025226507037720969216 6182726306483034756314770647810048 -331749917747125730672454971735146496 6073693422103170175872891764080640 1645392213881908592025025241939968 -634695731053911528529684774472646656 9557291823890082275539095058907136 7533447469804015343780296499658752 -894979743423709287884489401479200768 5077657672452461025555266777645056 5802665609772670578447068994469888 -351742602846603157965866607203844096 3676686974089739622493568186187776 8238555183892811993375119419375616 -666893846330672357843398337176272896 8395606309920130754315466867474432 1953128347575282206745617055612928 -672001476171052112280218309557747712 621499567921830488216578872573952 5369204360192013363753553529667584 -845851496079679711379030441621192704 2658118876463313337983381853437952 1633825268723728078033413054922752 -5720109735895814881482622665490432 8250835771022827188083807720833024 8568119378263750195427361282850816 -479395026421915108496056604822601728 2440279824295368375802950160744448 1421280869574954742252067037904896 -816453092229049771322262698898489344 923274397961821562357074939084800 6601761938388053521304847179055104 -685197456263052456616606300010184704 971932685990087703767336779513856 7598293349365593355400200002207744 -546392383785901210096490290169774080 4764219608802049840701990951190528 205601403793444061828651438571520 -872612679992782116186701188470669312 2206588016355654419895056248864768 9256573070137803810573915602812928 -217383165912981503481686170659717120 7777585237975366397893592890736640 6492109205974291475998701283966976 -392431213127688242616418258156257280 7464435253584350490512808615084032 6747679770113599534780730570702848 -304322322979666160294248085737963520 5094958166873173095709856996786176 7422788238994811428278200115920896 -630043014692049706345346758715899904 1415516939908934771772022465757184 9997946908971805163219209548726272 -253030970943571049833393344347111424 741352146831919112362891547770880 3326663177721366690609206321479680 -904158129731656006100857791289753600 7715654811432769503599973671895040 3603879829970896436203694204125184 -226387050298770479937830902663479296 2441589135492743251665289689956352 8850958777354451074072586141827072 -391771378961927165735995453969793024 2846656818121291305349428828700672 4103474925257913847777167016984576 -156663992986980030469362226470846464 4373603596996684430242190133821440 4692905622787112219286672198598656 -409290057577049626359885905547755520 9908353220586068497281555604963328 1861677096885444006721649175953408 -130435425382873797291162883319660544 9107544130740317721487670411001856 5439087651378159043478397621633024 -919148192298337986662161038538964992 9395797027473339983428522975690752 3964253628202894949538398690344960 -84987174213084799175059646252580864 202729660208245102096671261589504 1239239098391383074480305918181376 -309042863483750482175089406694653952 1385712142736614576661635107127296 3091129230264461047968237789118464 -864888374431715839886644212217675776 143074965731429732448162354823168 6675444193190224023307751568441344 -49065037146101443994180977508220928 1802370036013290338430879986089984 4952215395094231874054741058125824 -717747496905607608167175851775885312 7646706919013551962579403716689920 717489635404266973426463209947136 -356389358384406728776871845077975040 6566289189836399795885322132258816 4346151071747744002675016923611136 -566572023979700688307861498510704640 3007092320759121500636216217829376 2881444923563441808214421365850112 -317995662196369604771946924150358016 6512288741682212005729564855631872 4221105743423269212149924929470464 -642444740227843991087868397433651200 3447820419645899213897239179034624 1680632969774703309426010022215680 -672320008184683156080607233551892480 5372118625063763788067306895048704 6658019839094258516584257543995392 -113361593236461385577770937588121600 2667989809463780171820791710613504 6259414019726398167679025878663168 -419502886919748882703340354312077312 2826087141336005746343332599037952 8810937439868555304076204950159360 -635188877090525385647664031485394944 9287973546141514887506026425221120 9611445526682926696419071172280320 -806188864370768712775239491855056896 4534176854707979253582707248070656 6294742016354897913012743057702912 -817227565643744230837830748465004544 6743129801086417517788140968869888 9939068374997347343476396604260352 -383510784754830368954335597332267008 1592360192969004334623842856075264 2725500864093363595098505271574528 -582731389629663614526935033857441792 3014798367160926652437052512010240 9122310931776158712794034766610432 -75553186542454420512123975660208128 4503157777574033541921976350670848 4874672807903604358788574603116544 -528335601746289586577382988895485952 7222624175463995185247431463796736 1708907715074751219481659083587584 -334600692301170376428482571351883776 9576452422675574465395550840684544 2109819494959511831933308735848448 -803447707523383208555566662147899392 4044642648882742170887091354861568 9828176516092110561856871586594816 -753118819893936491401009275154202624 5497313144682348591651102002249728 9290476377086305795450022825820160 -760217975565966752232768750720385024 6202509427396795208620767069601792 4179261212207224554054878199021568 -159473236513408678697261329377394688 6200619900440904848824717310689280 665556921228675525711019366154240 -777523726019527494058113269992783872 1131072679184207692051531882823680 7726626012191324554147627060428800 -571957795904534042958197462346498048 4929805103128036819353254347407360 3782296517305206196466996154990592 -65614650435783416118795698452824064 7845652404402719615637558803824640 6698272701016267566991670717186048 -927711747528783066387339083587256320 7072265428722305701005090258681856 7258885748723231466687526848167936 -922546986225229576101087684551770112 1973375661014530949597707603279872 1029293229144642244229360431136768 -152661459224541624183757016477466624 9389323202909659410512877941948416 9072238432476162309938630166052864 -948766878355271948043197492628553728 5441946425249192021458623286738944 2033507473237032763162670489665536 -53567130777720624682865460210827264 1632183448908689108345795343548416 6744568932613869895242243645636608 -878991401040177530045171915720491008 6648147522948438992495274945937408 7147299023210369369241799821885440 -93070794294654573605991322363101184 3564971120543583995760130666790912 4506838100722269622741182747508736 -458104153584856830739978313183264768 4490782395647944924749986139209728 5824625193248452920684943501164544 -148666814850385525883610567427489792 3213911885225255321858815467454464 513945453449623179815246687633408 -37496022621323400890312674571714560 6431520503428937078513255369932800 6120489419813705186328241269374976 -278067438640629752941390474493558784 7586768231592981104795947703992320 5202839854741642392773440196050944 -400511512354741422599494963801620480 343981168141143867102870452043776 6982360754747368873312428411060224 -303902047772552929641687535480471552 4047891193909557351428353331036160 2430442985040032417644663218896896 -799454742671732092457555864082972672 6383383303595108092197617176412160 8539645975736349118774963869843456 -284067946262444005259004965296275456 3503166167000456620424834779709440 5791001785219044420002397015769088 -78728345363502231799577669552570368 210284244875681941332107414470656 4814511534700850795125238394781696 -470655118610755460676364154041270272 2901227967698916934669030322601984 2995534868413139615220664811651072 -864225201006193255376093283388227584 3742863617359686254978926691483648 2124769883491116187156618428809216 -212056283634042465316635001621577728 2171638655514614197974205372301312 9966262149933451743469353431990272 -126646554647379046356430187046895616 4553449534654200831924004748001280 701342225647990489306310973063168 -975470769939047249897898803541835776 6996672086994853786797080819269632 9913282311937933225231060104642560 -908076089232916895744119094141517824 1739579401148539250421603806216192 4938704914874172093591959445176320 -30654949100305031751522013277061120 3698140646561078549021213367205888 9606592135440134427753839784361984 -494506338511412924939167718313033728 6842194153145885230995279873835008 6658502589014743939457112277516288 -635335899099253606644869123119513600 5259754853357839147459805494378496 1247880348561994367746374526566400 -324795427816354844610855612247441408 8951308998593685293790348265390080 7763860286296582337033574335643648 -725796560761450892539768826583056384 9478404110974327836715950719107072 321090619164561173215771006861312 -341417649703652998419258991775318016 1805080978608491243313120241778688 9808826352289762396412328045182976 -523893551439296911709479395146072064 4531345022727607946028118043525120 4228329098212407103880199552368640 -454214203066001264589142349905395712 8053720925965778069097067107581952 3147729898423183040125578738925568 -657734894736538926804497419902910464 9614739626250806412909560146690048 9004029111441741736764247155671040 -474566556623571560717743229451108352 7958010652996445290363872243351552 754866922179592995406993875271680 -298989026258288091708444203846467584 1743404523766308110147196593111040 7630250256816335189678225258184704 -136266298193474480533771135305646080 9848722250508718246757172120649728 9148188087051441426740074430595072 -692057327163157960427827295774834688 5494745435778841740954526373904384 5457498259424478580053480757526528 -33051828133414665294707514887110656 1163585835449495258012639081529344 9455330448829552005442370296348672 -214974052694279258666137052044591104 7189236275384550844797215148343296 6245176346034366912190480736321536 -264729897435322515643155076823908352 2485503933590824396078307476504576 2276302533419271931123326938775552 -543890478125154209021271096621531136 5749861470627694436201185746616320 540520841723682592769894860718080 -955803397043390771491691752169930752 5776919459922284205960612567580672 2865662662507136119243249998102528 -473198662489800980766533170768117760 7443619410860760820319733736800256 6634196158582604139011939917365248 -161545261101089252791618167757602816 1614659499881352643513563337457664 4086050044631386756486880858996736 -357054259022694536774305817823281152 6964574295967386051624235417206784 8576223696932641007566081230897152 -399044154464357864838145117677158400 8884761027999729118610838760980480 3014624459766459574032343735730176 -502493103065824600103621801034121216 3268010009477659624184794937556992 2005431689069075172778669353467904 -606145365522617139145245293746847744 4869716590424392156621968691429376 5984311675325126905526142602575872 -41810162216154572375719319135322112 1505143320579973316122190880440320 4611830006432079747750778082689024 -920858802039784078679094924482183168 5895351430967386256290540047826944 3231321596370817049292839470497792 -301389228296049856373266273204699136 4953056786610622186809119352029184 8857911864175212622517889832845312 -881176486720017480793537981982965760 1502490272907652524929886292279296 3848418891454194522016639487049728 -512405861471503897931848299281645568 2206349495069853228603826883264512 2970730372732007040102108950953984 -240302840565908906333260165721096192 2503164263859498061259383045619712 8406834913182900240197122953052160 -552754848047896025017030369563639808 2010334604552931063627248255893504 8221225395862266006726090053124096 -1322611963725603154519335666450432 1930017093260530535546498494496768 9491886485731787276000585620389888 -758042357736119084396789461357166592 3234187453027060552821039381348352 6539491722392047580793470577541120 -215981186036846508472888825745506304 6895065736885546482717433884835840 246775483649897583442713349455872 -677064317464796696388292735739625472 9580346475835169980322037859614720 5024765793668917822758948217815040 -848372534507182017346689445822201856 533984532362008876073205761048576 4925163311199062165503600559652864 -275591279085463861282710936568725504 8161257930600988352949667066019840 5453272325531358192210291973947392 -779573390376580856303566839988879360 1591863384936498626825493269184512 6374708803928517319172423487062016 -658730533669038586917335644334194688 7648496791126051990990225743544320 5144531288452281617977005039419392 -624628530659515925372306708385234944 4369962200013195717383814798901248 235672163045088286582479081439232 -344592792879463546333873825929756672 4104737361733302435629531234566144 8394121544020915797224910443511808 -240785572250208272989423599049768960 6184592253282803134342969650315264 7066300589859136743727082244145152 -843239173436326340773908771728523264 811335643967308586184588096700416 8361616485212823730590498376646656 -811557366767697657760152655123972096 5683797247759943137443918374764544 2507119664268648192129147359723520 -143394370084671493825587304420343808 3127650438079025167537923990487040 6372475218571091855164742255509504 -375091493172599747297155030209003520 1012214090917325220913517638451200 7700981831962569315320773763661824 -53971417561204947912950033435066368 5772221383342235108817612568526848 2859574733043783888242906752876544 -520453264819958940495698331940421632 9454387855162398646709632303628288 3351123014744531121855295001722880 -759460462976776565405572744848867328 9060211023396203014706690468610048 4680054064061451631646026321887232 -712841497113360857947951461117722624 9655962585597922598592746658725888 4568209432484904614315704595775488 -662189392390744808286173004765855744 7871992240232845256553029710118912 7500406489509571967989775700328448 -46210678430587732417360528679108608 3313034606535170853270563072245760 5495123413002048908982759299481600 -468545393598898724465908445198942208 6632921389434425754873613831372800 335128349336832921356081744052224 -395206644648862981316522628297523200 2365517576860310343679844424876032 7458443833594863383094338028306432 -842886419349309942206281397838020608 286869065865777655885464248254464 1103251517571891013185865196240896 -812237585519473844738606380552814592 8844962133500886784385910436790272 1052632042852119876187605291761664 -863065824911300431489325337816334336 5579289539528618182797235964608512 2182430143228659975928332016418816 -901546088335303885234363136389152768 1672489843160904971248251038597120 5164969181580369436698459246690304 -503061728466329931176473957312233472 7006087666374390802207603016335360 7681979502867834265326760925069312 -302428918294471835088664869296144384 2695296121417719113450187313381376 3740838951116882748990623167021056 -372047649343912305482340048048226304 8858080274480983976432697759236096 767035297719389529517572055105536 -691229250476475907648359461304664064 2627746308320279555632350378328064 3332680389843429167748733093281792 -324585635717896859778503772739731456 5095852473597072958105801300377600 5744917191324399487189333902884864 -388121077117548346073302046171201536 2532860037700893421080447878692864 9686692519649906752670797226049536 -23925741287664388222535082902028288 9883908660502269331371054262648832 9064931169609943119706282453368832 -826366017791029286232949600412499968 2082273318567761152778744537022464 4121034226851068889177000236810240 -925096475138419736937800466008375296 5729713919490237367365528872550400 5568313016760809293436105791635456 -528344164509655903408943714264940544 9383287689750955849457902400045056 5438690868110625052627591355170816 -715961691197407105308938784485670912 8204886373274704650977034205396992 1031175326364830063549063576420352 -700711201252274640188907543114809344 7733027443125066335009578604822528 1742763716019452632534709998452736 -453931894685503924993782197358952448 9147973185759116387504032149667840 3543640574009158864505427468484608 -305231872059580427325207533334822912 7982599711697453088172075837816832 1042651559990164748996635789361152 -973929906949380794787422455854006272 3993784804829537842674299568128000 7458595092622082259641286673825792 -585116701562117851005168710032818176 3609221758313753482337146166575104 5615746472693313270032522536812544 -375273020956786724055841762306949120 5138350593536826776761930111516672 3072770874204783336188170555359232 -868926222295714480684590462454988800 8093090604322557911991844243243008 2784257110275235020968576258408448 -138711002315791093370052177383391232 6052645906043511943027926704848896 8851551620533249301021740775768064 -730316577815746252942671890488492032 9502611205885864868838783915655168 5422772942685055275567888228941824 -780873098455453092656910191403466752 593283779763027112968511228477440 4064512774092529696664493032996864 -853380994418244038817746613075705856 1818492075761567727250727258554368 2576506230305397484426827139121152 -948559445589226455863233032138784768 3183104522572551178565477243813888 2749255538889108355014242496151552 -276323710503874782247694144490176512 6705078945209676901228977787502592 3733852943280166284435096208408576 -41858781976101838826099778416279552 8224421153058650497746224352854016 2797209799029989274658863402975232 -440698523176664243887156966446858240 1354186351790627128289200852434944 7511514157444988562936306423824384 -103713783662609945559224680506720256 7994374561298270442289156769972224 5014976105412601718511180816842752 -457532412821304830288726037771583488 1667032795746194383227432074215424 4348742466661572390835700258308096 -83082093551612803072368298076143616 1818243680980547157839406983806976 6374177025617411824290561834090496 -175346239747915302198687403033493504 3784341527742469933441982528487424 5943336470665241197002342812090368 -952498687558173295934171444213186560 4429726734442383965254469344559104 1932934277823569018335875089563648 -244243117662356392511563757711785984 1780950537117780619499960621072384 7142450272441484025224697890209792 -923419872928735395710404770280767488 8614803693967043729990993601101824 7893686366636991037436845413629952 -104507081911790422373960787995656192 1895579974000344079837446453329920 5714666689952327436541467755020288 -557877260032769494047980635488780288 1683788239685115347844251317698560 2303221399913095657256568743788544 -821630288909395001303930477347864576 19068476480591794781805791412224 3771121547570233185691869693083648 -891575163948822622956269944935809024 4460745555217973340273512252702720 1007220006439319011392550003015680 -307603583126348889546014969284263936 873903685340852916241494190325760 1997016650482566662764444524740608 -564628797555694672799838117656788992 4951706828465881941504570989477888 9494706942851748114413599907119104 -749413641648380864961077379671785472 6631733274579371152594362108477440 8245570471525507122073394032410624 -107584945692273315086063392251707392 8949560774286685400280347120238592 8076590160569884161219293383491584 -624170531568162214811416604316794880 5384356282596504658656514313027584 2091846228140154305534991492186112 -456764914048240413348430565099962368 7307753703418307830466168221597696 6425715309692852169894516238581760 -239994301331234948464173248388530176 3384816239006473630881018873380864 9752857917040718663153573559271424 -748063983009566687464244940577439744 8930294156348863217460684032835584 4976613689869717962736253710368768 -170045137929975565067940086266462208 3789828129781981532374826932502528 4147598749929015698767383086759936 -966621771340069113979102306869706752 4767535097916490058161761757954048 3995669226141191150354312386838528 -931882319235480559467118983873822720 2854876562819186106747006939561984 8886086824202379199692785848418304 -819918313562923597649173098518282240 1570054188611079313349085774217216 8536180311335931228294280223129600 -810866222085067187811193511097663488 8242331173713973309217843236044800 805122424136971141312813631275008 -728008036781617137499577054088134656 5719960472542857604820475909767168 9242050668159477890519326225596416 -315838468792902716091331739549433856 400338754370856579641613746176000 9552585858664813631623440560553984 -796388865864739398832805926144049152 5302029119537484982300810263134208 5730217854801920258157344246988800 -576687890909495532651481984099418112 6451487921001508802002514436161536 7014731943694687173124858520272896 -284245047668837993263233721786433536 1808760844295422978119165955538944 602738312935013282074368883556352 -497421895450029502603338323435978752 8553343445180051789987100821028864 8710145146336316471246863099494400 -841379409620334173197685559658545152 9963169332536716558326863530819584 7522567634485943972390528186580992 -587087758002067284493967887068823552 4146363903147104366816959532105728 6443907665473745477866357474197504 -176943797447356378999388196697014272 5835772530244194678395784960933888 9073302755121024403644807425032192 -489160522827301619928816404639252480 5356473302459475206634598914064384 9528962688196822634098971058896896 -730306570771555733154934189736329216 4409003726240156449672766813110272 5192894890211725203468382835310592 -749847052292637549968407684735565824 4038235507428474151118078738432 2275666944879879419238633338568704 -687967020350813170266167562263855104 5011796515502902621357448374517760 8767917906306749890439004597256192 -353471540863777940868383785814589440 4749391907216518350792666988412928 1071099669287852200315303778844672 -656505058364957530462770118180995072 9055732381123981944743270899777536 9225872842662986361641578744774656 -730292561682937823131636799270551552 1804104409416045697901546753228800 2705666142048189044848884130512896 -793906678010006483954926745240469504 9894553347030518564109093454217216 9510054367956826908759426903048192 -464146238544543538470925712253517824 3620711172069427745713805334675456 9554695022479692976484066797813760 -522424670142678174058157860638949376 5209563190111903983493089536770048 9468772311725748699247348436434944 -561561368667323224606785512402845696 4454362307101033666096345907200000 1530376536552723679475052727762944 -375895613531831416499268894651842560 5864453131103599423355806157897728 8767363085131524803489679619915776 -20960490805911352458310322040602624 6876709075584982089875576552685568 7769365344377515161333651973603328 -961778769979214082076988801367932928 511005763314466125564507479605248 201045032068181990146600725381120 -567202799160450423840474092200263680 9914751368011768287389879961124864 547741147840256030367207166836736 -741885127682113332813124739159556096 810957181655093917314403371319296 2339681007172162694998633551495168 -481066242111706124126325641159114752 8794700956478941816637393312153600 1997132104139274527428034183561216 -912200100249960914694239352518606848 2665415929645261075609733132451840 8235365130992898401270294141468672 -521431884341340895339414333700440064 4388352844548075772516245214068736 2340860995338120026721587703054336 -288312455216616725808180186734133248 2815496294095114638162955545346048 6764879349422021200608843708497920 -910321130061817598889953542289752064 3810658943936000121967025948983296 4516349045922409167318418985058304 -129204273856534602247540265036283904 9975266083521638698622793761685504 9621701908083856025449208219697152 -178252066604655050711748777682665472 1736344911181331925200373551202304 2146884597392956761816387828056064 -190211073437286565820382940638478336 1000313863409800845395664998236160 8494577621698673510538596304551936 -873913157292454425369903096819351552 5527646419791465473623697655857152 8433057735683305592091089460789248 -351629092276074536930507125566734336 3581350360244910250342966160785408 4397654049355533351400682192633856 -312029893136623474075919522220474368 7754564598496497711897894446956544 5205458971382638807653905437032448 -960429945886573304815820555568545792 2597485928796375639706238107779072 5115454963491296675118211141730304 -442630483532264956224624262085869568 3588039337802657982595929340903424 5009302917959544746276499302121472 -917474885332970348523119885225558016 417798858581925491554191841165312 7064972434228294976189861006934016 -766919163966043839809976874425122816 3491564902418906063813734771458048 5159963366134221004332957639376896 -695992582107459156935291973121605632 3952923776691194549758694675972096 8324871167279792984720990929944576 -520224630717097507444358292564869120 7533221821535417615159374959869952 9682745644927353831220157832232960 -698624829893495829834037000172208128 4749746609792538730068007750467584 6035084086964966591277672553250816 -954056082595031382770861712766664704 4647142211800302361603968319094784 4058005773758738793240757278867456 -158134896238466977268623119195570176 1643036012251870152883067177402368 6973697123329303637660121442549760 -117710277102180660950239589433344000 3756954098421459122343382802759680 4579217001929477748990272272859136 -315341116135199155357808757512863744 5707475247611985931620690612453376 1743157957226306020157331576193024 -837305702490949269949367904330842112 6109163538002006755086419288391680 959561522413329592707536727834624 -29032570167157162320472369017126912 7029090095408751488501151703236608 4525735456016777832058348780912640 -952544899830252422277224025139707904 4068468154583002021814648803688448 4973987037638819163452808754102272 -649407380559037357528390987449106432 5990687529043093119625688327913472 1065277889192920214742695839531008 -745998702266782400695717766715408384 2549401671797758925515392813105152 2065745513852263760262714114441216 -841587479416170093356254136408997888 2974330915560356073783995735736320 5727125606981501807665495425417216 -119702135401232070675598447745171456 2731442337717210950028065199095808 5400369082648841866641479974256640 -96008763759365425336238897310466048 7551692025368559478798796053282816 5019038734644188381016350917656576 -679810900242313399133975056299851776 2637489692879142225568444570402816 8442718850064595068174550756753408 -852490661835703022119400587317477376 4560376714174961904174932573552640 8153137849903722036444834538979328 -370975325393841098682038560858570752 6042080622204541725719016280948736 8230062595433332952000608686047232 -994683865920780181447364365164478464 4884626015738256873636772569939968 632533763002113122966955884544 -567423224742471211751753275655847936 1993199534729856615272545960067072 5400340627183336504468745459073024 -268412844271381125735000406061219840 9442130186571838631166065187487744 4423162225973559709817258922475520 -138068402247448696784698099843989504 3554618748490324769799413990162432 6908221773940354361921649705484288 -582593395812844030263947153012424704 4581562003778549622279712547012608 7716978484646900088080450717745152 -897534763162901035775256254480384000 7361628271710516442840996958437376 9255869777592957711196176269705216 -932985796671342933677582789059280896 3896839932279410762203346679889920 243406023214409371327364635557888 -774994927474486304919386007483187200 1436766860270121114186339984605184 7006781819162353705996699442348032 -843357675028786374096387404141166592 3595962139761309029754421829959680 775171680789442855045041980702720 -380318323590723306134847511513268224 1720311757777294891569326430617600 2455594529487444298635292706865152 -672403561728269816949343845137514496 393402565522704610334261009973248 8159967543667777835988683690344448 -372558525426830286757621021175447552 1585956995154476684360825310281728 8169813343099923384871927649665024 -793715425198762101101832385549303808 7793805515689151252079556635394048 3328186719281172234715162768048128 -306743035809242389171035480191401984 4630780633041826810454271890292736 2080116213155917098422867228360704 -505308109899928250746632499145736192 1311599373134336253388251081998336 142926985555641548446987309809664 -660053092857020781487221959091552256 642208871067354665069679220883456 952138693775388996252614352961536 -532716649196427716384930444160794624 466177540834397811361522963709952 7511991164679863306271919920119808 -439781401225695256872178923144740864 5430012988239030310199279075983360 236675009459116954758639687565312 -322669250957785655443357226355392512 3028847702372474711814982242140160 8897797718476112778695346506170368 -545904909046321617322470760387706880 805290418422992953515241587605504 2165186134561970358438560702398464 -293512643942300228050790611987464192 3147702248817685546256019870449664 7175440810519839486665949007839232 -955685092357442067682594379228250112 9397136812718749940348195797204992 542165501399311505188315014889472 -524553786623035404432963107632971776 3004857249454558237898801489641472 436671117093054733059817476194304 -344948329252253865291618335458328576 588934899513064445045839251898368 2930375525770316446047103652724736 -615663661387465217639429914501316608 9133496097381553111970236900311040 3155965471166296713685556988477440 -233362779756850529253269582865498112 5771906084310943672775119791456256 8623223000053461890721055344951296 -320221160495319508284945769263267840 2189325103343476808071656566161408 4051331474488122479524109355057152 -703532293591555535081391366804078592 2234683808529019302088706254438400 5904015922052654162541962300751872 -712750864032273544614968807431077888 7214079014090885257310443419992064 5689185614886358259464228680237056 -282215816968063894927309963303845888 9321412029627977796013128427765760 4025102892435837901444618530062336 -193126360329191386029114642044813312 7161536164267011298648865049149440 1202452381302186063546244522835968 -646144471538275496148669272197955584 9238408727779161928749637194219520 4795090644399974722312360528183296 -313893207223862355523850225435279360 7566721996169515301393415796686848 222576216023348280705679812984832 -282313099733271276181421037379911680 5090110664163538106212151885561856 6940485170749732804850008698388480 -594646927210428683932234215975813120 9423392700478452426974336255000576 9027230724234021785907354755137536 -556210461975553240700882101001519104 7473107069999333465366715430862848 9730398934321170288824765718200320 -181820446272496239881623509336588288 59087933522474068145706712956928 9921845860283205410599393021657088 -952728979713351778769330083058417664 4357662189716154419386443582406656 1892013402196661566485032526151680 -675248284522683250821149634393538560 829924138265333593827522983755776 8242231586491627844333475903569920 -881955387587572577496618326686695424 5773643256132734530963778478014464 6918780487710822115279943434764288 -45460898198601581800389077633073152 381881357538074018242678501670912 2820844582246281644299758319173632 -561969204197373937364271668033224704 981501917557566034408372594278400 8890944143703614020909100129320960 -19069887726543645452813902463107072 5682649007724774194458605295501312 3998360483106185044325631625527296 -276431251810062783703760930686894080 9186818910037366107354878198153216 8176326979519057814199558444417024 -930868279496923607737759377188192256 3733641489813893539867546737442816 9099401007178932965836879166439424 -520431519843997535838271255171039232 3430698213682789210014198402121728 1933456716879042501119184767811584 -731282948581365806330171034794196992 536958092168257696615395059826688 1832775482126521869195652720754688 -114544448115163804107515985964040192 9268617625839703672476311671013376 1509836842621639544436719043477504 -818017154745400606222865365750251520 3136486560013675768497333082259456 2463740697064781525664049320165376 -722024630921535176766829111088775168 5725239727350411982587095240671232 7615386438246529465125519782576128 -15851821232824156345971962583973888 4781250813141428944783646004346880 3522840843316847413830043759017984 -414521087716243842688198689041678336 5847964445946771338486956538462208 3550199844800056449930264313856000 -512638205187085235188080520021934080 1635364182471648782302053341855744 4814126000364864244112853584314368 -62969474693949285714000146698600448 2697504587020672780247871105531904 116398254034354371483951492497408 -617968025855651673950205733121294336 3453527327870092958412888736792576 1727843660344954145812998350962688 -882638131143121666524352633439780864 7490570675687658762324855350099968 6406952350789681617809133510066176 -57345051191905944067731768016371712 4821704909688200557184342059646976 4414262220833500478279571021496320 -961202360535909636585182570014048256 7870215996398766195380777956409344 3184423787095842611544005975998464 -246438709544891959324427707444363264 4444745420975064708763822397063168 9975865056173898978471669059813376 -536784936685828197299184707781525504 8852486781412289419054925932920832 6748126874324968591992799056887808 -904450160684138674321985690692222976 8019124470139855763809920211746816 1085541155002053827926597499355136 -825637336310383827878188516177346560 6799554526401876760081276650651648 7627587954219706384654334234198016 -693782073129412442517028441910411264 2381982904486841742963864303042560 4740153808830376916949707264098304 -761736039276794969737286988083494912 2535427738895373049170395947597824 2204292745955422207905500116287488 -292900406829019997353338619767554048 2733240381012774618210300187377664 7000214765580438435338474261315584 -836106998744842456195259507299844096 5899493228052772596164323096657920 8195693702052551198805872359768064 -908719810309513106956144307003719680 4298300804467635558041624682430464 350214108938416898881133662437376 -869325543057595160628031578942996480 9258866372554299837947923826475008 3411178766093616379390058584604672 -171507900906262004465620056176328704 3261713372764074249670141977559040 7241804969543994629692721108877312 -108807236487939856509536390665469952 4079331194730249643120567296983040 4803348444833974568859563724898304 -849960288054154711119187898892550144 9681186488338547650002857463119872 2953325406466338844498947999793152 -28225874858821070137371837520150528 1560277325825585567108038463062016 7174552240376727750439328890748928 -47398596556613715404024902510968832 7801901805970104235790777129631744 4812406104146292005576653227950080 -238432098828531546982590569166929920 1367751922409706088052247645650944 5309654771549117100794808958451712 -329405148329979604487374349141016576 1977014673994535089049659666071552 3328429276283819050570937878446080 -846511528227019876886353267065356288 6311496919949404058323711736938496 3541090788511686218937614372700160 -210974974737375156540817206094594048 4147237033637042608958451832848384 3742809742735599914713667015278592 -452354154167932189320294071537762304 878913289302729222382935632510976 783372355375629436099552339820544 -211506048159823605111733521412521984 6636591878924798645472698709311488 3273364988969577330574203440594944 -106282142645475006934231906751873024 8739095213804713051695033006161920 6393509321269133535415805834952704 -693788896564915435764867215751380992 6344747746490727226121031834927104 9541504343626313620840130696708096 -455387754330744530255125622261022720 8412097986889915701127905844133888 2958269346528168424728302731657216 -92446554097451455831410623972900864 3770412547676503469562982054232064 3424573166377031149445999264530432 -753185348666649722956736735958007808 318892447733189129581495421239296 4017142740851717286797355130028032 -551581973223180322388771096548605952 4211397146510520583058569933357056 7183604107852853345402897339252736 -932901217195086455297043765686960128 8467327434734415230671102628855808 5506049404565832533878370583183360 -710597147904529390575046028546801664 3551792725212412697725124313350144 5118027001254947515933269851897856 -156357827349951796194913571441737728 6313206637163819419881853377576960 6368659356982456444942414472282112 -734238069953140659656117998797717504 2506167387447784388896452763451392 6648616294587599580056476209643520 -361425911618364362900481581617512448 4836434273558848155859961954435072 5398663881583667863907621043961856 -404597508420257504956923533315801088 1220102861046730297701924706713600 564215764123624178098471241252864 -887797412680813426412431755781865472 68772935017035009598189668925440 2824006924180465132514635472175104 -925835303059220485682733555218644992 719404613647065547226123050418176 8242033108844346264987780379574272 -478752755451093907636267111942193152 9914414848252547708956315184267264 2134383723996934633171117550862336 -473070499205781129017581495123968000 5575773460539815965141637980487680 7174741777765877833010052092395520 -30006797200968309726433071423553536 2165098602131180489926166624337920 7770017229184871696527501694074880 -69172219178280045798330751265013760 9417186723094721018564237229817856 3355577588719207829645251592585216 -517831332780513293296623236704894976 5846707887243098648207770995654656 6721162800240571191917198014676992 -526425652433610298622622537810444288 3408609010979877663786409593405440 9107539857135580905717898017767424 -792427030573619366471024218984153088 8782461539774439993410738238521344 9350466535208800326142330547470336 -199416662246736327571425394876743680 359927714798439304402341514444800 1960434076947980764202386625396736 -387339719386924940388742750109958144 435737328597929886851529544040448 716362723555425200814102327328768 -947990942414768409132762817009549312 4074031802936010208792673288978432 8736053365154626212547100313387008 -946979668851552800484208748366135296 7505057605432112162455023526084608 4872713036485780730515114959044608 -797623687433300957343735865013174272 1450413780039337987182515133087744 4456511044883476540854859712167936 -687235937207250591337694191933194240 9748453772916491601099984635691008 6754661745285882227916422613303296 -854104633351622775942453461004582912 8404976153574330147821136398778368 1395651998569881419554063940321280 -662811631028200240705750035148570624 7595527007810024207445392082599936 2867494758106275570573451036983296 -568932092495218268613128427856199680 5936157712604790243459165147103232 7467293536261551252555344291823616 -17029875705959669793172836235345920 7997520134241119666159511486332928 666150481279550035454623473467392 -373631479201736721998370466238038016 4108230224382737180256034724249600 6243070973787626861904940935151616 -741788133063926173635587808071516160 576545037350380493506701611237376 3055116658147503523041600803438592 -833486503621006107712015052323160064 5494089004142129847769208528568320 9268308606786027611514456776900608 -41246640243342072251398498348433408 8777802855977681340210000139649024 7441255517031839797770319411806208 -426607221165131388931335442678153216 6317859518362947155577732033675264 632407989134897790929042787008512 -487652680702287968911593896738291712 506365799626510599654655291031552 6110917368304314070157665213874176 -568150159690298515919517724165799936 8031973555874096445540526670741504 9581333171828777946198798659223552 -308174329087446281910577923549560832 1419742787866533409638562842804224 7533078853359315457049530808139776 -495607890143058975357288166570590208 2219728388079049349843403195547648 9900360161799846489493503519752192 -99872146046500421750293401773801472 127189170723868917035641887260672 3432589911173575847619663662940160 -972890300216381272331656032849756160 3019564126223552338491926074359808 8145905470525128937902998206545920 -507486424134796264625053347130376192 8210122122803837922615834577993728 1144342762331066841253229212205056 -690901657455781468257490066854641664 6946752728770285795211129787514880 6171168864898491370189805326434304 -170931271256641561030159837610115072 5816429928211239536015053124796416 1637057084596564893899745832992768 -781435255433112302045339847913111552 4001920128733639825207933217538048 4440216631234254147557762564882432 -921806141564639469265945911097294848 3505191072735351375171057033936896 1285852931588865040322132975812608 -794627981375972922931548527410544640 3284072631570973901138586029260800 4092577576448734683142346787258368 -3458172026860685118972992803569664 9024346867393460480781261756956672 8089558011096579150232600488968192 -345315458480576050512066173256859648 8920693483607746368992746003234816 2252507468034518138407068870115328 -891482577768379508146805189824741376 8747137855139820303233239488659456 3409156724794602508770748871475200 -517416239676891222285253256293646336 6793862178244976609792783384838144 767012497399772895237550213431296 -682227512261478846949937807919939584 7117287340924010515518760197029888 3090917764432548305405529393463296 -602653502656562997818931162231341056 2531667205593648874144688448208896 5119340745718453277327202210283520 -123332987496432600497590810101940224 8411394347394577298591417991430144 2783495614246157438285589560426496 -763590445552973060192601338799980544 5491911488518981329939232356040704 4894149290558771767281874481709056 -982914251115613714924613368683692032 6209879167351980392085125326700544 3829530220059462049293510090162176 -204215777082638066078419233217183744 1867122790962620835951689240412160 5220601684960989668414591862833152 -142990685205427561448383666351767552 2401968959285104895472220753625088 9776677828955323116784747970297856 -286223777735701166618723057389273088 9504057208334139533796545149272064 5770160274687543792990608091512832 -31139375647410601249891664032432128 7985812810513900143101708330860544 2303862460965893600753399436935168 -234897913634000561097928723807600640 9896183535626791304474200561942528 8314163844001185130141001516580864 -161283297591433550354495580724527104 8129800414684986769307828343537664 5944154802451245676883983915286528 -745904827151653464009394709686386688 3239062404239244450356078363803648 9859027955047765494442193202446336 -534970952688786561852048079239249920 4341632152449740101753208716656640 3503903894136100174738390828187648 -453733572461981471396338535694860288 7249561241640884088336594665209856 6301224523214156182582365708615680 -624596795969541265676360765512089600 1921646691240065439849716165640192 8288676628700318859637969513349120 -386777636479857469344846940815228928 6172184131525034416398638749057024 9594368629663964544055660095995904 -694261910587372152993016766934286336 1782232628543260201483427379150848 6188411208037969295855781102485504 -688527088507967391892607213504561152 2373745233330501747983941285969920 5752698400543277014417065090482176 -295276821380571624569763207839744000 5410303515119285016598803835256832 2069418628286424268618159741730816 -323242519572520284056210648695046144 6868937805878171343789489957896192 7030514129576909034949215262867456 -892135791230099950049758108754903040 2906907749795764357889083075198976 966586223027526459216149979594752 -438161887843743575011751832087166976 1488712052966043481440883853754368 8003944818299171237193183024644096 -569507005362231707186001014320791552 8321680795057091829553277083582464 4295672118236155765194463498993664 -165223477157225127969987231827886080 1178231589042972699128654588805120 1514493117839622178431765506424832 -136122151861164480036449144142823424 4227626068130741047433569866088448 6676407445718012112471153461690368 -560794726215556773349049936543481856 1705762926625018821450971964506112 7356278097010510200407060499136512 -636565989727633260495710757662490624 5330463236739998398794032476061696 9842258248841460058928053307310080 -838973670321747485895356318534860800 8495216512216574599765259192369152 8583201866722929730235747648143360 -351513674611510437337381292218515456 436699875015084515966710324396032 5901344060626981055302713722535936 -224234659146069925717168938790420480 3660131284933267992120848440885248 6049056024255912695832766165549056 -642340062017780657747792513416036352 7116940669788337223742244352163840 7153778825295140536215954215927808 -476408568618135333837674201242140672 3986221533209912044605829229314048 703573784713859011822765868056576 -41390904966624243316054553786318848 8504880919263144220109865528328192 4884371236573634610192456968306688 -173887515626546226975066020869308416 4423222874821506358936685753925632 2853583845689684953984411474329600 -814965266022033268703172762603094016 4152649142029187019252332836683776 1162480640179027763232759628169216 -898534501060612222815578775982440448 6505276617889508671422987415584768 1645997044387206675497094519717888 -551929343550311146625798510890450944 1867641914225735100727356565749760 4862201572015491984965762736455680 -917572286954345657002895530463854592 292479374023971355137294167179264 4951689795407167864906622976393216 -784457424826290683686960727024730112 69802281278473096521075684016128 7104697393894650086518137836011520 -537885319923896013177726036567130112 782857948933499865430275129344 8698670529087610874254925848641536 -343535827833122024354880503777591296 9804871062391426037779232804831232 3784704677778589824232289694908416 -700579500582237706578397015333404672 2416393203128617646853030435356672 1940776554962555454231252362592256 -137966017739488430618203444058521600 2036694454493290296715175054540800 3832871452155896474258057264627712 -855001765604666480703871505087332352 1226206518805928001416030087806976 2122302317572422624711635057508352 -548555655329330844614601886834622464 7603568385823816938824253021618176 2100358413241904160625678641790976 -639476388183082166057533515447140352 816285329767162860823716032413696 2180771810780644231459384464506880 -7638405425117742982494922815307776 3890177460673898505865536053706752 6762658267160220119552163928080384 -805464293360560574618336141196132352 1930418389624891438003491277111296 6126952500453526940616350935023616 -309560187899329864266952524452331520 7881781276029735017548594605457408 8575194504227769888401474956820480 -180403187998046301938111620048748544 9536186457401511451140814329085952 3800185840710753343964514315403264 -180822293736513686511526878723964928 3723259512537042074568762966671360 8328214540835208881189331817988096 -547479531440839153711960951747510272 2096411079609831638805345996898304 1607111519014944192598234160431104 -703495936692344353124613098058022912 191738399241286934132210878382080 2479912465209486146178317601996800 -177038826546153483190371383194419200 7283257749410870317498202635370496 5803292021770239306982751098372096 -814540360790856562827480468264321024 9834150401067613453909870390542336 2136003727484224484425735071596544 -548725259620201695558401243213725696 7279225910497695022429295869952000 856834158145573642847563825545216 -312669321711376591792166170137722880 3321574028275081090123892252475392 969295593740064212512306435719168 -464024701789515719391313025170407424 9310786219817511817512857653739520 4806533137335496270911236913233920 -464421840340246668741140402527010816 38920187090511798362646056534016 155766259154895155833117454893056 -359813217226968299803240100693803008 1704119364504483698779299705257984 2102271022899269147467656508473344 -155684706685597051724955316113113088 4503134513688286405381174878797824 3246777174378180950190168381325312 -112692571087705750378462422054731776 8021675221158731788594610148737024 5627652975521840245242481694736384 -608618280283733877544986613001486336 9534503907755996062257545599778816 4887177546593638678254855649230848 -421663970732013800603618876028092416 9443259542180198538458863048327168 389990081845391552277883631173632 -636764337866291611291934993254711296 890036542738862019934801163714560 3928748172103877197679043511582720 -781061465930252568299135770204045312 4720410972651426229978350888157184 4765198526661252032042766325252096 -26895463847594789772571662763425792 7618682445886126569415819218911232 397678789679545344795586219474944 -545756779524441114706839021935394816 2918773426096852935253899813584896 69110210037469426669920213532672 -433425255560423389941890890386636800 4961661473097093398709231849308160 668470185242294499215486427856896 -317464584938845830288425884298772480 3499910844697367836732814060945408 7998539944644604199602469143052288 -237594934144582626767783665621532672 1278461146575277556611877655543808 1295064333681260479362737006182400 -34861514108597893792138934322462720 2898193915653701880184672851329024 8013865023838960726034169137725440 -701732078081695675302587999205720064 7647608041402867514591048191967232 4752837001744235402194422121627648 -577796763450210381417468251823144960 3246120133327794981532735459295232 2614351628707419078300778488659968 -727476052447591620303870763288494080 6405335904035053452451343516041216 4755411038171735562101085700096000 -720805509774258420271450238310416384 3580353383893571518141252333731840 3308617412866081747361828930846720 -776969809767991898348376321830158336 8326228020920648116249970819989504 2635291071695491401202972988801024 -146916237972863823995807771085766656 7339052163702221058740492290752512 6572536775188278033600034166013952 -161219311257605919587481396774436864 1848343130533175506365732658085888 6447198054752394009678748598665216 -566882159311197725671678748938731520 5186951539196280224513720894619648 7821448223077644053397165662273536 -371405850701652655117571200517144576 1440764944679631190588997098274816 6778977177336387288078461159079936 -591177206808174116820059785711845376 7757121583394820090922029430079488 1038554029549238708495722741760000 -875805008660943048700308771290742784 7195940245895605071491226939686912 2373603417964901490718278210813952 -723746258299539859711026442406985728 5634537960787861792306187961630720 3579699158128485271394452135477248 -61793500761296207205483979751817216 1851121029581641157931264517341184 3806988228767390082040209227120640 -844153412200986086379008147389939712 4023399897242288968688524943425536 8501279008707493482625147301003264 -483674074736832912469774605205110784 4614172607411402247980401976934400 6358607641010087181577729765015552 -711690471085409558326526557967876096 1209982320542722773254028354650112 7738048635259955305656750539014144 -451016163995504458896389386203561984 6800874124061809855552880837132288 727005937950384681414695722156032 -427083637477911011150826819893067776 1113791310130608422515334738608128 8363462424007181069814158537523200 -969073102296313488622841377742389248 9844757633564403629672643558375424 2996826570870657379471608225202176 -263417431012024636719515568261038080 7930307395061167011437891412819968 5201317237261683117740570663976960 -174770427009355172877833134332182528 6142617877161392122930276773920768 4234905167226540580763973198020608 -118965566522180117860225949403971584 5216743874714533146816896728825856 4777055190582536273939378489786368 -411143173393861607487524193026703360 2691215987852262811207483147681792 7010372763168317734597475921035264 -209318950795013830010324816043704320 4088289819374287593832873319202816 4540540748727152945328583646117888 -906204914737475120807644091406876672 5987359449293308729298208644136960 1808796563730410510643619625435136 -955153780468109341164234218433150976 3434306672784060801182342727073792 2722934803850805077724212831977472 -763629501617212044310442686657069056 9357324965372008117378365960224768 9198906946442396206046577164288000 -920424164881531252625464906487955456 3871573130621627691683949620232192 4597246301698167310350283710660608 -325028181134872340840174922825203712 7228237226785817605185309822156800 314918153739989611755079880146944 -451603306908099158542996645552848896 470900041819720430307559629389824 6675067203011297809538319957098496 -12848795341495140345512797644259328 7828567451368119506436806749978624 9974147903118954199613621479145472 -188529019687271134707477326006845440 8972011146832329493109161899065344 1610990858550677479207423019319296 -467354200158480796302122675421052928 1883768910718292530040125668720640 2048558245693753739217886068604928 -153120860876086718543874669800325120 5554619512360492068378429536337920 104043174861171559300232116174848 -218119816837711723178873595193458688 6798790838315027053929206888005632 4339655281956357876164008892956672 -613576781049895177849040363619090432 7126812978225132119297984756187136 9815842597734835699333485001965568 -192678474397642644034615550347837440 4491072574924768022346995297419264 3597306603869766268404908626542592 -930854654401041965328048648508932096 7630872238600186038748529968545792 5062261946590272906060202296475648 -424918764622579243166069405354295296 743774651007581132924970369810432 9731164607258021555706528800964608 -545347571489346376227999277356417024 4711505705258150035550525653516288 7943149549962565167697221109415936 -641840685864945399764597015052288000 1845670811646197764882947245080576 2650113573992238307564864803962880 -264077565134968029934071277170982912 966819348578206680055501262159872 6138872989272401073828196543102976 -550875263375218784422715499596480512 5541396248680213906335441816125440 5733966601880096621256875920326656 -363254947196738831529328609540964352 9714020502084053401249678710800384 9479572015116828233182893404323840 -499103494971792106096775563923423232 5457456005257719969820145600167936 4581943011203856891637980865757184 -325736449049423329940222845523066880 1098763032484567734803677801611264 1957473778550982153502064195403776 -316270274450441314380208352169820160 4403574894798859975066763634147328 5566629651942061061933350988546048 -749247074205017865714396310857056256 3742885734539758655729482564894720 169706683150531849423115624906752 -799594793713646150344319958553460736 2732989238411512660810791164837888 6040313390750265270632712190820352 -917111018533810771617549983718309888 6831122761856134346380565733703680 2876592276820428256596490188750848 -52313193162708737648993147939717120 2660517114290895848951552363462656 4919564442313924731623935345426432 -79289417517941853214781262650146816 7473078973693970124774581964111872 4055640254239960537385259895881728 -145610797716531425717584440915394560 251376763717610032244665660473344 4013477192687575179624707694526464 -950490009819459027751205510196494336 7967935328587307117187948229951488 6156585281436831780777318416384000 -993663159777798314554587416805507072 6398350022127204052424236143214592 5650042089805863037019002261995520 -582481489924097231853344186007814144 2539916328388684375887197696425984 7305628714610621178357476522721280 -951454449260846976174236782404042752 7553318519093650291552289699135488 9413110361178729663941524777336832 -208911416762408829454984354698625024 8610639495715524489089859041886208 4646326693851384078658684281946112 -929957600968473120980680729291653120 8423881713784431596216501609168896 4040835899423284639696794224164864 -762013354790161421551258759577206784 4805751951019600631311054743273472 9476224048633886804960386947743744 -775285744333006679775916215511285760 8603965985438653838096379022409728 3719999941204507920906238218469376 -959615120572935399008999055002959872 9584817269299525962030515409125376 4067216804325352645051165563682816 -6274651207059670525288630515138560 8923553081809254954785994021273600 7917227369729195678969099685199872 -186301862565872833964790887124828160 3972827476824575706951293178216448 903562057353784252060916707753984 -816356886456652101129323978879401984 1569749162228492862176799223709696 6023435008163528744139879048282112 -393042949702459353829894128060596224 1216918821004636956515087085993984 7260985000653749923423873050607616 -604675784630842766310922180651646976 7219601080655243018252209920933888 3126770759043465495252253288693760 -833855706794727650692016172450185216 7780443007935853333731247982116864 5213321697122072081718699154735104 -436998154226570446743144273343938560 2180522603878801519651784337915904 6303747813520832427986364638691328 -269289172980383175701500083874824192 8564502929163685168139668146880512 6810816376108214160807723140120576 -168854647309916660108176622694170624 5261276615827206509669458045304832 1478020692818758852368103561494528 -353278971212836320562708382792810496 8813861745605946398878497220067328 503997274480922247116510120116224 -625518817236736545364960689591943168 1405667299758066460254403039330304 595409942904092232156991945965568 -245894426309772681149809118419091456 9169691563093290259187450639286272 7567347507058325402107697296310272 -99626803224797252378473317145772032 3778655757363094569794338937634816 6396329598809021633656262687195136 -555316416105476661693741198661910528 868742116241123264698566458736640 5853500418670780519586391954292736 -870743280865561258308909913262260224 5936363607622135806437929118597120 8215698915950457760045724631826432 -690588770053917591730363891540033536 2991346959576008543977658789134336 7489360980944532996073930578984960 -754337311986509588262738068873674752 9251303793231454841649368473272320 2647461794297843658998932517683200 -965312892143183781280901387595546624 4406560157945547935682289826004992 8018857863310130595908271919333376 -176393985071175321456282737087348736 7294597859757422755639430597312512 6096606102073675983233814185902080 -721402809862102560984828765488021504 7211042486001836426158702640234496 926482839438098190021877550809088 -117854380494113874273723792087842816 8363285188610703325597697969225728 5092876270376570149391691266654208 -302502819966784995157127999967461376 4940918238920246358753766950305792 9926913861123235283847619645800448 -447271616843298084461775336228519936 135944453172679560611224765857792 3248455855677269412803953995808768 -695508054964753857204699277775863808 4228251339527461628772189546217472 356814560916268588864004996202496 -266203765308924995949037419046633472 1342796832370434733286064297869312 9743500201903947762265801615212544 -460038044959752957735192597947744256 6858221204704165816513594736508928 1889390097886450950502571753603072 -862110782169579745733100923489615872 5311733387590090197734434480848896 1666052284481451897604212655128576 -444145867398118302268193012147290112 3344360604309568033855461006508032 4786735665166418321047312907894784 -846193718658737161764261861154357248 4342727722874317332448057690685440 5088824084216520752578757761433600 -987037628937943037637103856943890432 6906419067199793821996589737050112 4897894955231853572538499357212672 -691543572804073712088326699069997056 3208538411302773150715727694528512 6784556796529744770248817718067200 -11040100333691304702630417078943744 7848846826156118477187372218843136 663423294619379707891286578036736 -84454806335935524256321619489718272 8332108672221302094019977352839168 2062013741524981581576580481679360 -510802966482692874432363996785934336 7509106948679157673722216659812352 4324627194651827995569931247681536 -366274780107696934398512132681367552 8638804224535541462156081847336960 4147926257308431365271990986342400 -283021740295592370539896067256745984 2578319498337333979044411122647040 2370597495957578511441711966715904 -845235834900952194710781656947490816 1062449666148205914288934021496832 4808889658288321984885707394514944 -346070252889621694784806391180689408 310030674856893920695037206724608 2824506329529057176737999677816832 -958967128159748205347672919929520128 9226388561145804634754106813054976 5400594397780799662151582970019840 -682838442355347604418686107839889408 4524500719022171358204390277120 610935444602388241436972477841408 -228453100262354802642728486040502272 3142119623997518255633391675244544 3248507648754394519533038163984384 -658824503554815920707616900632281088 5295923865320334122353233477238784 2997517974390168540832377914523648 -599251394005041848528417320744255488 7886683374892141658499650259255296 9232401596360093427694857200074752 -970540318335660493461022218259529728 113723936483525077124146035425280 8081660502367643746020470485417984 -282057097817805652178846138977222656 8172802124590133250762349152829440 4812995912466380526341378772303872 -945508316731568547195181598802706432 2211347481626814378433995014668288 1204649791367516824265241965625344 -13624502940336496495525423824764928 3345942287993370721864018651250688 1299454266136899919437381890998272 -784664955893123819257231670601842688 9873377169556108725036344133287936 4140727687688909506823610387398656 -515316666930140952795909771216551936 7332439963889963859469168673816576 3911396951481016712898387973767168 -777926098504021508127156807309197312 1175750643495190021668734815436800 5802201839371755824133152647938048 -976644745071960034606428564987314176 5664299131409512068526015023939584 8026523588192183088771090364760064 -814134674656800748020368497260363776 352822994372263997883301845008384 4411530992351658369904069434146816 -497400379890797700860929703478820864 1010949344164321929481704888598528 8437629229343153904549650635948032 -760133875928162771470269645028589568 8242970566187147419515791410724864 2711266044075774724446286585528320 -60989867605731524810014709648457728 4199523847079806949070304536690688 4807488215627806849545881954287616 -128182156408143143530992367373910016 632497821081863215211952971186176 9826108901781566721621497382699008 -870461184266680804442391448289017856 5527551922795303192102864448126976 5469709840838583580644836353507328 -963889097360506864341563546850557952 193668797218581340412578067644416 2380659961958634911409372127035392 -588815503395467927811133310335188992 2590180844174079085198805001306112 9487069636650258090120138173972480 -754612618735173597905407783001391104 404558101329214099394029040959488 820195321482790299573331884507136 -763657204047352527691925908417937408 110164218734400393895569237475328 5352467355428251130693583626043392 -939950456967528566613988874488119296 7810468218751257305286022587744256 4216779060184076484261877309767680 -569739871086510723533824915016777728 4920056328938878902867336791851008 6780049244383125557013837628047360 -878165192037293673190397960205107200 5023342344339142905983731371081728 9825277881215044294630637253427200 -505616576139078487639121362983845888 3915620014833432510325242558676992 8716196872879873294087928728780800 -88528296628884081825607836944564224 7904643840815967407999387321761792 6728903770822805668808472779554816 -815172079088465892801657120833404928 4328152981369627491838735771762688 1226975357030983434742261394440192 -22795367902563939715547847068745728 8954352440649312715451101154902016 4547339102671142963470920287518720 -527316975373658770283933605522571264 9790856063469513108904560155426816 3605715568238222782171884996788224 -316214508287356958116296567363207168 2164660392079776214490886837370880 4134485097470455701909770826940416 -797778228332677065315706797371162624 7874892672670815715803157734883328 7713768658577057677535363934978048 -243133793493136910264398228626604032 9069773342601303677082534710083584 2636550930773471746580307282755584 -90168540559353586823890798519517184 9030475010918164892779545364529152 7219923012719464109441253847859200 -47076442656216140058709894363086848 1519097916250856280307033996001280 3024319064584032727146372196728832 -155513475937820034070432626098831360 4951025622420990784945688294719488 5495188065282525396564597469609984 -738925322915739887785448388494884864 5617237639842395297270219698864128 628558141259532127082857650716672 -752577915633752120009335871662718976 5127190004289073467119897900220416 3227541744308054819313063410270208 -842069800117529388512578982559875072 3861711718061062497136203584765952 9919425078494361881416948279934976 -849825667692255416549807341954924544 368346262571230269147251120013312 2855560051513987082674290139594752 -742334683315880997637976951458103296 5688015111823574351323340812058624 5484562837258030482822838731407360 -259771498500088141909244240531030016 1645573013720075244744940896387072 7204925078691967357176216813568000 -506245490840985374359148825782779904 627131207318765120512313822019584 4963717470002722803209273121701888 -894249422600927993915368197182193664 4403284717126239529095831922671616 6478570359276659071793415936016384 -507867753228360470318471322779254784 7136333523695871346852111564406784 8832743022601705411524005996789760 -477413848381878448915370940114665472 3226571370605914118136745842180096 2083917098657509660936034901295104 -120660391806786958520065022035492864 9629403422918367102594763594924032 9467860213629508284844244360757248 -123898079955868390214233941335867392 1854462525745456836301118026809344 3982523845470521723400172204982272 -464848856937184717993445168980688896 3542244874034255561624347872329728 2725229859334237198524742446874624 -346773227674923547717029177063374848 7811021557031756158419948745523200 9255051709874332467107208439529472 -506329676664478972202091801787498496 1931578134949963004547409194778624 4934456699482971883387110683574272 -500674812766902074058764941231390720 2304106973586636891459939683270656 1518496553490285414919304554479616 -250146126132139556913799178355736576 1593312858181914092394562078113792 6678617802526417502724126152851456 -602650745371116846429289720632573952 6286963961662787205860398616018944 926021638725567337880125085581312 -352006718512261435832913783867572224 2099625559967431326433859149496320 3535553205515872520363094107488256 -183334035755011633325210643682295808 6402920525690357539866652113371136 9563690318266270910041654114123776 -356391727071909459579106989608796160 4470461439071293798580905775726592 8810868613732716697209925072322560 -506808629735869522930631017012133888 798475257098527593369757611458560 7443706237180917228783906701967360 -186294065493167417463716729709395968 6924156801493894877672179991838720 6554950372043065810860863291129856 -841409763525241996094555583085019136 7054554868101931206597556089913344 2147146365698240001764649406038016 -455168531032524347279254990054490112 6585473316575024122682775693164544 4211580092308295238322770394742784 -575405998597421511461854633594454016 3792170595675200543950770299469824 3152452014068871990023865835192320 -787813661953156255021867009824522240 9248031787872560461118501365481472 1856050782550172112022746284687360 -781100222037309457443773097852272640 167090922139249255183193292668928 776605270734231553527059583074304 -734958871240334804641679753605021696 6602952612170051508853043636469760 2396216052872392333199104276430848 -643032759551921303497899613895000064 5289774958529007219820047766650880 8597179671024153233073433850413056 -776673101245861593395530370042036224 1898160563630079309967948253233152 7882864842261551627292401951834112 -911682042653939200821432043500994560 3133805658580495891537029192744960 4425220745021190182443619429908480 -127319095022358260718213034001039360 6087303508016040854886878202036224 4456079322017461085543369069821952 -555953022374346564708237946430423040 6038144904373184446772452941365248 5313833245881870588567808779485184 -948379968290374574412101120149159936 5927291492648514264980178436358144 88780359443181478852967985577984 -413549919914937045706149956205674496 1952282111429624530366173479436288 5725094677627349743862580187758592 -491484796327738727436927687983104000 5219074049376518319329163547246592 1184301473828040038740048977330176 -395823134548812721889495387476066304 6649193618282531457380047009087488 2842228998748180052200813676724224 -468880815592645137228834082004140032 8808281586068173809171913945120768 3727341270188154687873729653899264 -413143578201170031322928514651389952 7788141897826575351968561849434112 1033761816737371570693003802574848 -707439647209329547891001985110900736 6958289641923685452400956522102784 9595263780637012631837464565121024 -466580157511975086421465274874068992 4103831717089921818504182391373824 5811473422089356075795753272868864 -211257865702059937842200628277805056 1221470202253089208253444658298880 233052070121249524820189667917824 -161361785432625417847900376756387840 8685955566520087001691397749211136 446736042271680182099061875146752 -540028185411122236244608186283196416 3789362633941836001191001449299968 3713059316037811339425136838180864 -465335962864069494528154168698339328 4406514087635358585074599868760064 3670098976056929928266319841460224 -291873139787355799971189939276611584 3472702555792137133971636867825664 9221519154568697278142180264771584 -869741883840465852667060389209440256 6155190080364787051749427912900608 361867249480202386995661378682880 -263995235345369980206036563187990528 6704741455272442762263390169595904 1721896184624726192177541457903616 -373215941529888546972005939520995328 7554129867843818942371287242113024 5593659483571054881080255086329856 -572932845064484452381901175566368768 4338530101651573036669176094130176 1374409375910705982107123336609792 -82223329882750113844143198700568576 8733918034628977913475323240906752 1103334526144414750225546294067200 -605056414129250967886457103521415168 7817478809050440295047398036602880 2717186889519102501033872633888768 -306066276698075629351287032534532096 3934919951336491987918414480932864 3344914978784926697621459082149888 -184705908633405304016589138528567296 6028953771301165555686905210732544 7443643181358394041550728012496896 -33258008005132477863411642315833344 1109793046141027047092000949010432 7291529684735174333670407391936512 -334785780481826021589475028597997568 289515515841896287062874845609984 7976204646676849008828162886336512 -314360827216534504883948665543065600 9882293804100771336533254395133952 1800185239554394562365415399358464 -464778498026227066419253225189277696 7899189861992498431312792876220416 2746700917919606787559258121568256 -645378944879683990013130083978444800 2081346899896318392906402899165184 3637657039088204416661374023761920 -857368496689533908514368083506233344 2997289770247040721239103227559936 4580045000002927009027348416692224 -181122993263041520331958290848153600 6093549651914741898479449095012352 5261959799013072292581782652452864 -451862603923205258283812412066889728 2894364878591340243882541781614592 404899272323777363577735917600768 -330276023653451384222000057126223872 2239861279399839857348830002413568 2747619357353693457681132426362880 -238355217209384750408002487652974592 1496043473117742942811062993420288 3409627522725318884901671864893440 -382545883415038904193138354494111744 5836740742568677255270204878880768 5073165790293867248734310775128064 -941437580659122494590194419484327936 9675870396622233495727081682632704 8625569632093018393048198225592320 -946400070134869283036777253208850432 5318134856912975217982832061186048 8216545799898929580749591651811328 -74122086945558635285638727541456896 6226772179075268904280250818494464 1992760285431178370217474212757504 -843710539836624558883928462027915264 7180364500031758096722273008353280 9620850621549369912454319150465024 -491812164536910347951716786711298048 4257173017547198520686921711091712 8479174490676074008136077421838336 -573207562938814096552648931234807808 223386519421416841686063467462656 3036472751075258766969296732028928 -677440080462132847637634973630988288 10206537838076720173878383476736 5224881410595086787921478896582656 -788066974523880062448185064661450752 650429886795588543102251031330816 4832912223153782509199790088126464 -408245498622484331506393986960982016 5421206813821854070421539598106624 4655942899890222529103897638731776 -13346996345409882275740574795431936 1770686689196206144620475308834816 3561982082695020099071030388064256 -528786490169928173118676908604653568 657312402122603478552509467852800 5180069155902954906959799094607872 -431056709697097245930804047817736192 1901462755998540741590284463243264 6269081174593210040702949417549824 -525271166765049313588075324954902528 2497324541888068166273431991484416 2467067906385924746101827634724864 -182184549083468681348784029127671808 542349919330374039092516286889984 9466394867844904407363522354216960 -680630110983243615194169270155083776 7032824500388849084011025948213248 1025394742718916996692785189879808 -636707986359012172735937681226203136 2590369314688251034514628594892800 8091442702580439435219974362234880 -160646648382187063080345855252758528 1945632534364193023510219000381440 4525700602353818117574312811560960 -524167242610825243348603155051970560 8692595006022918741713083439251456 8068482243726775705961460588871680 -26489878774334286611944542996267008 3574355317057301232606796014682112 7943992326072521695677447801929728 -9061189615426231376640590814904320 9786932471103169298897045905473536 5933489473928624495756040868986880 -594529195753576925424895315224297472 4904537854770386172729025779204096 1859860170767269919247710292017152 -584265652310410050686597555046842368 3436303895180929039212972200689664 8296280848119634750618085126832128 -805169887125492061522353525467643904 5307486142376905277443865470566400 9969555164155890487111490671214592 -703710116833425729404892907365728256 691372586459270894840840586264576 4379298583911226585947607186538496 -737536710958421596471781658661486592 4748896836832895732359464432435200 6671635265486843856392539831533568 -268118392030992142146349450943004672 2596787672826506471587142747291648 4202134284477640690975640658116608 -854935844416468164706737828606771200 4288140364568451504961273626361856 7366358873205444108415430371049472 -717928304699518038568299767175053312 5567882962474419977166506881449984 6185236508855708600780939841241088 -223472546892899203308881599700926464 61341285945001113482119933329408 5224804282846692963327508440154112 -128342343909161771132471552510001152 4429079407225823593185683047448576 8622880706928514327740054702653440 -371976314035744848323267495030947840 2236852132192293626581681935745024 3722237284397543080182219670552576 -395098197180981402240063618460680192 7527664586641926793211096044929024 8511399931498722678860894317838336 -420914449971904693989888173793083392 492964133925400926906254215872512 6983447386518014953015373295779840 -909234893318456871473225445870141440 3303737201004881232719720847769600 8070923314454672291781877491040256 -239425987698073806622083874054733824 949919141954695541905297279811584 7032193988261788538363441104027648 -754732614593529489004568654831943680 9498317640108962002813524740407296 9662489224015539408263815693860864 -847767967490676243336091180931743744 8070031714109461607146726587629568 6983688802919812468752581375557632 -354878299065419371130641861461409792 5878131593400027838834649377800192 5271483247308832184884754217172992 -301744927524869651107301318205636608 3134890707707039311556987662106624 3256128898180010616353757899784192 -111874302083631437594009654253322240 7266550319190584595226857501097984 710148527442245877434864935895040 -217360917478243634052030537253519360 8515027885888690329707192292212736 2480015492548855818433421729857536 -450327931174326952609592478426726400 3624945809781003405252896208453632 523267106857528821848198755647488 -696519211517001419950227627144380416 637377302257139112236947729285120 3008323762760738570305757425696768 -456762733826966717640593057320534016 3447001312680001441340360147075072 4080533376854564124984712483569664 -197289914758818018305576175386230784 1784183786734764524578045463363584 43754124486160974181856540884992 -762929592049625279872995694622015488 8881194839931481225559798852878336 3225554005566145903429472258883584 -96418253041461782488587131072544768 1562578005774789678445521895686144 1978297534495081375115181178224640 -941232891073549092604232556466929664 2885017408475569011308363809554432 1353095900824137013915309580484608 -153535876844173330998392104696152064 6254736904463506276145809089101824 4698974482138757815211016526495744 -714440251576587406085888880536453120 6174682509285014615478800715087872 8766070108591254596249556881506304 -580455663503521888927097747813695488 5987903829001195166956108348653568 4744647451764929686348169941614592 -990141137153339854791281526653845504 5481491662713798264533974761078784 2731542546718868182536697319260160 -102598260972579521244824480585351168 7872927285944457962269885973135360 5378997964341135481321758719475712 -991754417049190520415357974440050688 3359181410398987519844114958909440 5846595000222361391419753630793728 -801716806891502496857088702768218112 4708033837658403825222848499154944 1133067491554087250593322517921792 -194229523542638083835986143254413312 323429563661846138141732082024448 6671381103444919720492829197205504 -803567765032296842743606769960878080 6768282533681059227100172920029184 4088644549578012136743321728974848 -739939566155890766591974762579230720 9558606905400771706343407321350144 4716320462031277759221954596831232 -737543970072256313700190125585072128 9905358699462661822611236755341312 4438220601641227936776314616283136 -906622712526139980004296486746587136 2647207801074553187520440929615872 3681616889772078228873838128529408 -828032523096018275210118798887616512 8920267073593743716683452776448000 1784526890376333884172257724465152 -840303445683187278478419984935550976 5630625357942297520581072501342208 199273235314084779430788036820992 -754005216527554497567565062506283008 2027795830894383986106743964827648 2739681395071315776634647937548288 -506000022118418875159418556888645632 7811191927612234744961420111118336 4985599644796464691333725425762304 -139073982738505770790301917092249600 2529079995296620816328656754311168 1168417310615162270607658834722816 -110049616052450726362977086814027776 1172155476483284440949493721989120 416575233103857003461517867220992 -390978706237311046928328920592809984 8128701935330561132349446831472640 2248058716576151018532708720574464 -555924651479265212847008467692552192 5087290033568332269141267945881600 8357877092808329213116755369525248 -285147272919416448699468242367807488 6702415010818365427227325137682432 8932332929854268458821138379702272 -766912895209716577544533449455435776 7459234730692171324986575235842048 7468185365337416416040084750467072 -2691619595859126702200561392943104 143678600380472602460849577132032 9110214180791235419576599928897536 -864849673075197610812474550298607616 8595607140911083804858439874641920 7284691799869377665096289039155200 -957608205782407905055109647603597312 7089818609999240878237986790047744 6544366386565758836676626942525440 -392415333130069080688799587890102272 5725074700302057315911245188038656 1938646377627522141404962297479168 -912928611814298847421871102674075648 7835207999187481589940787395690496 655829877431744545335889367138304 -832563379895477784994249347210149888 9879867285731142563485246984028160 1539950014097235815172257894891520 -467531751653116280173934935644569600 3475152815427497501136224190988288 6593571798913752688627593072607232 -524354284965904449099596475509243904 5308137996504146660549025169670144 1826909490642535605677380861952000 -384097221477186319345321706298277888 8518762103579688250668257694973952 6364559530077769367946675550683136 -787831746707181060435864117038809088 4563172442984912500055574847684608 2094836024302347271706688895320064 -819430358214760012237292067079847936 8825773484508199121857009418240000 2639902266699977491993841637523456 -47111548811235008445626745517768704 6510920161729830164933155800219648 3346375099257241597241957222973440 -909754729042707106097290592580009984 209610298143660251794006547103744 1489109809464005480041809155457024 -495686912878178117058945134146617344 5460447187617678632309631179816960 8879458523120279974351347933773824 -696256717558365891576482327112450048 7621733389799125623251261001302016 6254924596745373079641683925139456 -232754360361780538851186725305188352 663717124273413608083587304783872 9864323909777392286313685092139008 -198687219985572906338348639331549184 3118994904118154998866747926249472 1950829534256238373064154158202880 -938013713536538112486103833370427392 861238349816182097795116636831744 8312425930732031731505395723665408 -416963298165002744453568166725943296 1626443627377567382096173925924864 9606492284150408574155294572019712 -929279975875982114595756326013370368 8494405806612606164960649121103872 5240178255345563190810773309882368 -739108215229884859790297620721696768 9062078262749186387087144771387392 2795217820415873142312286073913344 -994359154096519169941526291517800448 5338852136243439812389204903591936 7041791027491959528004668748726272 -427995548955181195898587165455548416 4805692646927864009517506920185856 6823526137938738195467286523936768 -407573647107566786118454192837230592 1961995235253051864650892663848960 3509659591258821589583623968784384 -711141141002752448680802390651174912 6715670691955126291447687212433408 963220024577203923820399644639232 -743873997289112787327350804322451456 8482557230991277107155393098809344 4889857003521232678482445238009856 -448774503986738285601721943542726656 3580858940238500308002500159471616 1254448683935689015770030440185856 -504764951813074487885451390045126656 7935640699416266253101915730608128 2481100666000064516046850793406464 -884504415982363023841452192595705856 7305878900847719062969131162664960 821494227997769996208376247222272 -651318733506975880629618118123061248 9615148854306141435762304071237632 5727627204387868857661704212840448 -107177877698082978153333034852548608 1480547639607472633075765310652416 3856697972528140866618771371982848 -45630813951880570018810885805441024 45341564669428170941864666464256 9946702896593652221487163331575808 -718374095520414979715374607037890560 5091746468068343242454814200692736 774941769677547386405686435905536 -964519545128675322514643199098617856 2390677191137213416246873321111552 5736528761491913290950679294115840 -85325288006644405006607206397771776 4469889703057194765185800963358720 6714586433426527727012460273598464 -443674266061075052497077760189005824 2709501627906799720652872129445888 7344335314483903644107940867080192 -592124214475500707988772077501939712 7502531770012344901830009837060096 8917644756327813766729417166422016 -252261809673242725133460172366151680 5221524817071977143236714725113856 3247921077844181850984508488155136 -501498533006371138848054155287724032 6657246493877201030862765985628160 1058459794363316731916667871821824 -405385136447471458094474601651240960 1980311505964604342388467634798592 6399326196822777631165354134732800 -95513628583037822778678362394066944 3265189299051756319887436552339456 1061399630346016278514831957426176 -499390521407242050383468708560371712 4925677226016152540302813278765056 482412011746307880278542847574016 -362623143483571453281505965473005568 3190487732748962164137772812599296 6472357644454007942289518344798208 -736831591992203788880635730673532928 4671250439413978894247456816496640 1056509540332982889788161220673536 -538048947745471266365005423632711680 1016797630211489246854277305991168 4672698070604523510347140392026112 -48030670941947888192693438599135232 8559983684438068268483292803629056 2576886947639819682527749708185600 -215775971522308303468011732965785600 6357962496694063085313517894500352 9400813662017433943872136093368320 -897223909221131253900163242436591616 2922942244903600142162050678784000 8171328265328584764588116271955968 -587924673949233486626202004897136640 508488111287414745148550608322560 6680292309970144998974974666473472 -328465910745154921081389468727902208 2988358046052109060190900649459712 3780873726539685364458669595426816 -746068676109936025542804286933565440 9059570863452161969649003469471744 4421182127227540938440885688860672 -245073688632468149593759374620229632 7704149902768515724710980605706240 2087341876618469492064710226345984 -690983999360477396721434803935641600 5408655536598884672740060309749760 9837179967643701148737130565992448 -41836498576073821440351877736693760 308522689565900069776239687106560 4797517147351553085372378944372736 -77078205414600100529843242501406720 8366159263996394744095036246327296 267429533682595649282700721782784 -539638995139223605149336179719536640 7607710806136730300678833426137088 3325366629030382081641257847750656 -706465530591403844212595475624230912 3566839030670472900711584695844864 3351794665012790694034659426172928 -244386669905253047352024600475074560 7664492131338487657835029640249344 2652046248514617818117894309937152 -444412413401836906452401979647852544 3301351794752946515429948995403776 9966625369038831755117053565992960 -205580497123071431276649781429010432 6242851144982927444515657311322112 1056269996666172096184968774942720 -103124434613605708346231560578531328 6802434890922421707166770662473728 9877659039701601186804368771383296 -567610148401642379446712938782523392 3187382762259508769960373870657536 9600931471001376761886006747070464 -791262265968957182101353382669189120 3281508953727701052539529387311104 9376844782882760892412940607553536 -466115256774515312516317679338913792 171976876686062503003972693917696 2334075321017409802180952235966464 -844420111865903079489527850299555840 8055091962043317033762755534913536 7226604058586238874219970492891136 -99335810015145739610199569173839872 6767861692877421102748746670669824 6812610165717718242479041975156736 -234772656851677948967252356302372864 5193962892465703329763967922864128 728450718518900351089832504590336 -866943788296406315211547342555578368 7359102284338378876296276572372992 9893331408602540351688456022261760 -252305019758168123449462513414963200 5411419481941315781871702456139776 5009459494495386030680039059619840 -744236822670625347761979048377450496 6938156799753476107111809532559360 9901783396212820450388565393670144 -914011904795860275666383762419089408 4630896045256980159047456987807744 3720907493919603619988388309893120 -149184313017347888642416259765370880 345930788182514205572626724683776 6763002801493523850522288969482240 -24115560248242754461945750033006592 7990025917487984647963901366894592 9649732931361104923922296261836800 -152389169233200929837805971871629312 8461629979485064503292296765112320 4360560138401264744053689194381312 -101795580288964846684835735115137024 4115231277375753442843977091907584 9534199747145439446738309811798016 -703768347369469231092838473603743744 3117680795837893575812554699046912 9681933763541794701398175767330816 -953469181214264607497040702356848640 3658236753686716775398665267183616 8504129196979911895522391357390848 -212547625017419819019039260421390336 8236140421066613862551964750970880 6419141575531623545352766806294528 -475774365697122469762921382786629632 4058954223674731050965501776756736 5109056126821230530458067994148864 -106767632080416124841042662035292160 8665226451815492568451440808296448 9246294100281643058889122809643008 -755599490937517119100607454955700224 1457517568676639657906652252733440 8929837846363767596863685079859200 -846878918467482179160033353319579648 1254869099562337859634490033307648 1303961502013142846293431937925120 -104321090024512631425173408012304384 5403293256352542767086683304230912 8276218268881822378090928604708864 -609702803614367252363749626658947072 5504688340284674695304580396220416 9248244541601075134414557544448000 -884185693962239881120046169060278272 5881084216464407512859404048269312 8240140504139975563889235946635264 -49795961718322622757196420947640320 9837233097768012230719603851919360 7555023017100603840304142952169472 -770437176875924036151584741281234944 5851085321259728930678143084134400 2437091108442640182490761697165312 -748117849123310875538915618229059584 481318768465608639607060717109248 9723871815471159762506592779501568 -111166564313124287038048372386693120 1611431458710392340181556949680128 3092595510890350846734137401802752 -746812664968975564628033271322640384 6851478162180821080992980664320000 9740537811198548265817212985540608 -328562190588144440299326478219214848 1486966433684155129349891824812032 3612910410702248368058398486298624 -852919297989528155064017117153067008 8209484546362032285087112980594688 920195020106193712584506583547904 -773406243695883390461055102607163392 218424167812133882485268669267968 1389479927642182076965407443386368 -953528568493983843488732360810168320 6113958202282416367872441248120832 5849043991879793021884583286669312 -760684769597424207593741031651147776 3722341687173239661234149738414080 4717028593100567227704961402929152 -689035458497293463927137200200744960 9160974687987689180862418937446400 5672869728807465756596288274563072 -864159383638797347432556541297819648 134065019285423138866283690328064 158620627387501682132835580772352 -209499585912609094198257139778060288 4004271852603579280220926152540160 8416298188562482110139161255084032 -539663833703107408886172851458015232 894311962483906537569781398110208 4976805835336392016331449160433664 -813153537696860721580741954461761536 6593763701835923352089782812409856 3276653307462703128141005141835776 -961439096273866029232525601648148480 7097187161807197674532823342514176 773275622154196729449335383654400 -481330017029940706031975205907202048 3045652455635659783886874785873920 5388663131305536534544663474864128 -931053795220564725193106198093627392 4594355500210911686165736277934080 4546999850509734577571293426614272 -473353610232105459551576345702039552 4823744552018047199112181846114304 3080108100006527297590176876855296 -306141866782788631271656583862419456 1002251663495093772632459229265920 8530778713480382705845455942582272 -81954400621359293045123062427549696 96040270207433148076895143723008 9277186390340026105736598298558464 -518485988372922198567786722929672192 7677910223737052283330518111485952 2432681921638608735894217171140608 -220875440227171353062332917128101888 2909681800416482041826244969889792 1824246336087729623278745202720768 -870269180944817193994015536880549888 1722281341330104711481735423983616 1261214273472707343225569952137216 -625499514713933419547581721595609088 1115855172710366129656642303688704 8309669630042100948196117494890496 -752909405963263413383863141547376640 1044074223378608017921216698384384 6097105820640230731309140695580672 -436347158246225760101968990728880128 8427113494320539908144860697198592 2598107103116018274690298938392576 -127206309352249141939331339416240128 5350706164459495919626237171990528 6384233558591346881718589541318656 -339362956599370564471740262112034816 2109392001204265670254970489798656 1081482625899958550187765911257088 -488265411614318014563776912594829312 6536759873735092321194515525271552 2564043122554595617904212349812736 -4109250052883529114420263960707072 4284263109632093034415228014559232 9019430905417154110991872313786368 -24678299200217329314234126441644032 6936391930779807515081132696666112 7738587151009979368710906151174144 -138838470449602352379262111374639104 2745936994997276590425167932424192 6078035059906527311737046565912576 -736955691886174107316059004888678400 6713302083926428042077604463771648 7426940405425865308132433096343552 -61703328198608460790427651936354304 1633340076491937901339208925052928 5564270453842451832537767594688512 -234004707220240541139551795921551360 6233516686022875592870930824560640 8485645229782248458294480980672512 -852575895976862645664720496189505536 726568386463234346631118146502656 6097850628956884465387602756763648 -510872693274003219947563458056159232 5553621091503569765287010622242816 1247863295584602917774382197637120 -501700377435869075358827947690557440 8596976643495100119135917097091072 7288865090331395249927588797218816 -45020129529850930324153152414154752 1677625793603305404649496844959744 4099381772827711806689512261681152 -703414428723949739430795967679430656 8886999115692542418473368120459264 7824265435078701528756980369326080 -680620636843104629876812688947937280 8046891262881838574563412584431616 2339527215241503386343651130998784 -314242016921673965649537802067509248 5002131918114822338010450822692864 8536255391269893995119613690511360 -726246946496444583115632068469456896 989602509070959997524473129467904 5784325964664559209544656539877376 -742688127033091113601591173441388544 5602501971418842030636198164168704 9937882903556547233772223881805824 -756107903867220088989439672417517568 9259512120179170844630315295571968 808130538202068549901472153731072 -560862377376527990312617061944131584 534170121574036582760604464316416 9310627773599096961156705773682688 -776098080418034341230199683938254848 4344968986616773298045641358835712 6986180194591544120934260497448960 -964755744592700786681399593781952512 4986951067365468042629844329037824 5089359523666275693461685143601152 -859734701160496799407358526040834048 5760611241466983705391988513701888 5118294311142894290738428428419072 -950753207208325554114045260769263616 9834935974551471822891581007986688 7699979134448495172780733958717440 -284894971406256570528098844443410432 3616153257537418661816782311915520 2422838183834746903057916328148992 -938281197442037220246473227552948224 3935416389447415733693696176029696 4465476526634485561944398922514432 -416388221206632809010553875295371264 6227906284220134254101314641330176 8329649325032054140701123134095360 -707526420706897592868296477416357888 5709890972907171841521121321025536 4272841906493758443221807383183360 -142889137233516564382632771827269632 7248853359220926327962033654333440 7817200807441628005206070889807872 -466300775258163886090286020733960192 8924958184004220919726073867927552 5300682081084032219011132826845184 -111783564876805378326756593527422976 180021309477246637396949314043904 4454829201348596053171692854312960 -789576462586112441791458379904843776 9307481896751509431289946876936192 5292624990192444569021686822731776 -248325537076294559085403561149857792 31919786556923522840770184740864 9702163010779882563086461819682816 -150448971376679807375225958407602176 3516252599687119882251693509836800 9097410373321028013737685452587008 -957092252491869115773194537902538752 8327743936298415885896639324356608 2066190214141469285427246178238464 -569090133520509103744812904462942208 9263816491240167445146508309037056 9560477070549870878714172635348992 -21396746606243332308446015905595392 5100136870385191001428003204890624 2841530257689302374433449985441792 -697390042985288062951781782217818112 5939325173997062000916504609030144 6709888519560285129236743842693120 -47284844149321173379971062911991808 3710066845781249593280798868373504 5990818970406413349752746257940480 -24650032430874806397623386436009984 630182498182255684872969706799104 8158926501774926813785572555882496 -521416655943681232151234145471692800 4178026296356054830629318587056128 8633674535600290681938260279689216 -440236742712394261280021123784769536 9661782284145892774168426786586624 5698464162169328906522635372855296 -296579469081231643875996388422582272 6284556677722871336577989620006912 1861058845309501283357922403811328 -121388289656722498370977443847602176 8500392004342218741736992036356096 7706583576045026132617937603788800 -408929748254091483248833737124741120 6331714308842270404701461256601600 5235386447792007527775412483522560 -15086634406847987389224585021882368 7850042435159520083108070640582656 511370281077886495178547443793920 -798362190091656020743149831193624576 6990965363007343540229886999265280 1165808993153432857509756181413888 -585225756309578376694429505734836224 5015210024613639512771102913855488 9947011978611763544095484928851968 -539241410335326559631506318001438720 4116810653834355442145618171002880 4934867038907252273400998061408256 -610456097307110410391718739606241280 4800357917985857273301129148497920 8353488871978069476900782328512512 -808437712487721585166100252525068288 2973215914259727534806469349212160 6385684080241273317493463555506176 -97536045203399221356843333677219840 8097330907941459501677541192630272 4567710902065579982792156700999680 -489838884325438161648264989699473408 6213757630354246208441805793394688 4174707361019764393666380113641472 -147251048242083768087325868642271232 9792498277781424621723385667256320 8715514903864741445579422151213056 -247757553150526809114879800324915200 199940625791459257369963702255616 8810934418823694509175192015601664 -398938646923200295914784967400357888 7235118682946879900605039299788800 755918115448896154492303774318592 -901756670049682817177646623522553856 7724211158772992186189668771954688 476651010928813833551263205163008 -414902671066605863168873228482379776 4285876989750750880127821866336256 54821722603569399185049277956096 -70054642282354291897794692875550720 1305184099005375431711335808761856 3497015029762212625653863058243584 -133333361311067934184473076011368448 5619922669032768849134524762685440 5407258926357985164990814560976896 -171127800171893821141140645345230848 6933108952766396378308626845007872 7916887486631236219016185577996288 -374494700073671170068400753810079744 9828037873723738523108166625918976 4783053053263445832266522831093760 -160194204042094838780002312724152320 8571930914044655486288549875023872 9207626332928559276746589712941056 -9651435775969672090113248105332736 8342805421998882257872957160292352 8431851349023511533010803331432448 -856349616669977215325246133257633792 8684576279428786930027821914914816 6833633866785775731956392761753600 -829313017132588785297166397914218496 8869050695403035552989967219163136 3210342521107363033690464340410368 -364352270432170797352450366352916480 8306612529027939713051113524559872 1424437743652346438934466918350848 -623975023675436650292626574628880384 1522126999342138117112103287390208 3182411547170377009733811830784000 -479504045594213419210432620368232448 2562171215100002886622777853345792 2591944792120311820149224992931840 -121423990815962849836432360145420288 7175902479455115201724081302929408 8750328227362522611322457941868544 -431661742912277203798761856294715392 1058674895154389290625926537674752 5298376234130359310228351652724736 -623951515911547512025526494434426880 216266729263650219277745987256320 8924745355101620113440193850114048 -595865663899773425379067956935262208 5066148982981504145538764146475008 4883910057383981621323005127819264 -933664855309563697194179725514244096 6505568531762802428779680472498176 54628233984883619412812226363392 -411539890836430493913426601783066624 3002367268555881710221545846079488 1575911978231884479164245436530688 -945804764706754113594872297976496128 2027801334087905434498699534270464 7516337249563202256563716768137216 -630331499818233514794766247128989696 5908774328157863498663005169647616 9166553033098294796504348474998784 -945269982136781655827974861002637312 2030597835025335164066859694686208 9810763750169157287293543826587648 -215572509830735176416029964733775872 2164716494098366352697340937109504 491822703450821373173834285318144 -156559370442263559185035182909423616 5888069613283251285542004607418368 546209780443675921561756528279552 -488205875118347764130427682439561216 3160116366567010868386449927962624 7538706174657547841109100467322880 -388099420317152224447213596875685888 6430967868206660985204344103108608 9704276874980687917641331111886848 -597391384212274382094754696027701248 1203617778720734360722976209371136 2134154873655191285654230742859776 -916490551734437157544260986719961088 7381938363091052443630020671307776 7493028977524807022121862888947712 -544116962222148732443676659616317440 7994459527093089702925978554073088 5399800708369283098364913169465344 -987309181143634505482708106942087168 2960170219112565320708503831052288 4982255209703058450168135286784 -489254850485743428975088045175865344 4529491198340442048485385756999680 4401463864353819199628612254826496 -85164105703171113978206478986641408 8395397619536162698684926412193792 1977994104570448224291554108375040 -807553507115407394329773234263687168 1872554769221655466874570847289344 5357692652728608406671877247860736 -649223836644933034358055862861299712 1016812901046029652978938379501568 7796771286599555870852768461750272 -960899465608066323641244191616401408 8231703382105923099509736853209088 2550953056356984767868386324512768 -73923755366945712954046378995089408 8020802608042117553973144433197056 3020317853275461147224940591710208 -784270920895277924643591567091695616 5346468108153774780679838582702080 9928296500791835737739958725640192 -515720780122501944721009725468049408 9521150241959668469173154241052672 4674909357597603487648640082640896 -528543011196947670844761167592685568 5027949885914005908689033394913280 6254595013923822768194083692216320 -382572982705611403778823186609602560 1859845662902970781533425404739584 7121016477546062253702304719962112 -190629496445579537377151805988798464 5528034863057298701517358094090240 4625171003366565470063302048481280 -28657177667455482810369254046564352 4955401524392313094923629442891776 9767171267870733007292448592887808 -523811491856669992097680434843877376 4503816243211327005131762726600704 4568618771051053409405117594075136 -491626850469663977227172682280206336 4270459544257775620849248596131840 3573148195054970068751241346809856 -648544051726288800717997420885049344 5103211389797700126333892833574912 8456989753333926844781107829800960 -529859934213445140134320946066489344 9587872663344919548129438521622528 7425717258931979749901160809496576 -162328824663186061076074662553714688 9918318074901553136474469808734208 7659134325799831153783650025209856 -517405937890597772176691462368395264 7750677878375644199950143398608896 2695298051012312346909665338064896 -830897458410003553964859767218241536 2525736845815244893939117145980928 5349111669118723243658889413001216 -127569616722349625985316656177479680 6537790902390007413004947706347520 3011526668759177531130905834291200 -646475675710642565438910483027460096 6197895862202676049780276669186048 6966343387946996195773376867860480 -247930873488940604699119258936803328 7114115030245857466126319480733696 4539948211057287605551378391367680 -118065988751034340259464803409461248 7453990820741408877641681862656000 2812969658920162639063435563761664 -457025064929572991598976706394718208 4765008846476972102902863492022272 971969495271143748986949808947200 -566478561997647193774461962556538880 1752311768300558354467711436718080 3487898841538051283357711357444096 -446700837601850407166919536778674176 6198275772072886863260817689673728 2070799986163248515679205757812736 -218972835138948455835465304397316096 4966280800895503925110333547479040 6319205230530654748747615650709504 -38061405987787034822848132669243392 3301142459618576745080448228524032 8469343487750901160862821503729664 -47708040572977504387449209529303040 5330229214737174343134445016449024 4211449014761730093395221030109184 -917864755109840410442387179106729984 8366535463577375525818984023719936 8331092522956467006578085425315840 -425261450480043642800872376410046464 2544753403444833662602159813820416 1341477377505632925535520501530624 -610931323756123496718432471642800128 4859669009918242926076784262774784 3814168695400806724569526769287168 -193357105027682667437245569559429120 6952150252519848047782347652726784 3827315118371163127209674347118592 -125390646602834240670809528379375616 3641077454456492387747036961701888 456749455306827225986267890057216 -664166614231414622060848257899167744 1112196995974105661969474978316288 3230551490167834608649107406848000 -713111764989573583103540749641187328 3951383103771512604622230581673984 6345154328079396191484362081959936 -913133531891669832797299068805054464 5738112291887201909660162751201280 8246456630037430409488859381366784 -11840007476750518233933431252713472 9323613737873334512458157413892096 1787356238603845633604716819644416 -937206656925398386382698983937015808 4659189598205553508326490712834048 1836218987905310825242742870769664 -598400733191017985455991170604728320 7369674383842763053838630257688576 6228038847713839503601606716293120 -451267074293439281644387452867051520 5591892508475135339096391288881152 9011054854355625578958867803406336 -348695954042209471050615380189904896 9793928123704453545026835735117824 4701653665841732120295405776797696 -980582013996043133085480406088679424 9708704074178688901870254316060672 444608770814082557700465064148992 -395491000594428402972578493402972160 1564699379541994464242459943632896 6841340428956706274876444318367744 -54869319644920995437203958139977728 5543845521271291013398218611359744 4245908383235679432442294036332544 -783273208787510254217069054631346176 4673493400967962049540594277023744 1751414491286579205170102248931328 -464466435510509977203781857588543488 6108767872208244719989939649904640 5931732036138873410327867063009280 -444207707866090189137460926741479424 1787650840385359676290851963666432 6753106782471114818781667888463872 -966548582148141479358206425727762432 6365449454134331014388949438169088 9743114064259114877295989509586944 -83946105259212295397427111620771840 4995827639801147626127016318730240 6552903120397446482357504821952512 -42878679183109846354575561049767936 9268561338136215358425621568946176 1222006096111735777313693439623168 -655385258818321082334617439102304256 5350043221062104913439366425083904 1296765655638572227070664405680128 -154866223910030095027045735029800960 8674184155432094662083489986248704 8538665880491355310172995965681664 -998930723632530616633124552731262976 4224501605405004887874608862068736 3633169596300568402195570176819200 -705682620924078759860074577190191104 4684481748348459396140960946585600 8399565228672802213999374189461504 -939794352786484470044944195473375232 1716307715765371738597392348348416 315088819067968314756640555401216 -311678818572111873242987062219505664 5744249988136121729437611524620288 5216856447069097057082437649039360 -404330146275610303038859084440797184 2774929763332297051368495291301888 6074510808286448505796512266059776 -256312000293520263643390273740865536 4092868478702455463980217862717440 2996237247639577368355151011643392 -235591250348066525864378957995966464 4082849032890811084031356026486784 7023875994836946619387655829323776 -92879695449544806879416728472780800 6854302045603953756728801770864640 6456907122940299931291946556850176 -775716134689800766306691419815804928 2543064692041544469942302138171392 2183531944480271131257162904371200 -58442590348966062807975824828923904 3749633916439868313290662882574336 4495740071446593644314979416932352 -683539283389891684422793016012439552 3867173258653923343965105128734720 8759929492651046717996484878401536 -409393749424940350884350911785730048 6322746453849214444804956403793920 8419233147631595480591176059322368 -913325097080130453453204649613983744 1772796442506082047463984231088128 6557210799541777095887345690869760 -309675849550793375405694128771563520 284441626468712341210056632565760 398195768431265420231620547313664 -3077444227664867246786945107361792 881736158053877644915976232239104 747363521175607547716497003511808 -672916961844828910106178636260311040 361663937965090934509170126225408 1918903753312959404247545458720768 -547517171289525424086419716561698816 1951553476504482202286544146923520 4601853424200866324125109570240512 -129754430815214515643951397709283328 3211450892427472905975021950730240 1195876108132690994764030444306432 -194518092094503905673275391814402048 269327726067797356841063174635520 6823723367526773455518851351445504 -690307434395814399615981653002813440 3225371415876103434213795079127040 3673028855661299767566891212603392 -26909015177820902591213500910010368 5891746431901816678212741061672960 9767609411905290456166926999617536 -46313645987931123161232666150305792 2999444333598205037057924302635008 5456626733101518843254642434899968 -551641632860006428084664916770816000 6163179232415443505567569274732544 7631790656511395133828479800311808 -573071239594345335968205376577339392 5312122378909365467540573042769920 1757377676832187341967671861182464 -782577322894799033644523044428840960 900659772099504588166005440643072 4427971614639269761980788975337472 -417685073089399238905389010269503488 8809134690082240766988800642514944 4901353197605594415767207039467520 -493182231221804193146483788621021184 7586270547027008503205842028331008 1561006082022980166714922954129408 -250512079456992412897696034674704384 3334409298441805165292385720074240 6738913401447050562821793679147008 -131435219250868055140699201960148992 7411916125107528014405192399192064 2795874549852496752900824924946432 -32659222846223063549554667198349312 8792906419317247453004439589224448 9561453262111708392417555279511552 -77096172547784599331209343607504896 890695910933126338903571118948352 121381012802530013071728363700224 -181691663898735531729752023187324928 8738659688609118073135612932653056 415636893122762438606161610539008 -605688416899065120087722235795603456 6007366945841126262827966028316672 4160464570922059316153468856565760 -563415169204185653636846424558665728 3473466549387925491903179043897344 8009014122453855757005755640709120 -762393492335019320559820036506648576 3733831123900005024627009037271040 6548244430495860087642078941544448 -588335998099973059486051973432606720 2369738461968802064229903645016064 2800754170770489202198407727284224 -165343748132695474019180301883801600 7660319052740858311048045571080192 979066686212242971465816786075648 -624707156211732940250019344775380992 4277970250672797466731493032198144 2342643902885247353893594448527360 -949823385338285390277094010941079552 4094599521050786575112165098782720 8939124893309832788410681884934144 -917649468995870185305181659961753600 8582921350681140424340591156920320 5145067946729383556882657968128000 -959763196114408810360961006540161024 4887500014345663542743475685425152 4129139698330459872777644351160320 -466495691516547776592485161149399040 9626522289322758333730976346144768 180438693297595286349884413706240 -572475508918056550489561697819295744 9766405231117126655211176944730112 8994963351619817091690939767848960 -211219127695311882253580014092025856 5759149747162541666296980362493952 8508695457618446025126734169374720 -772427009689967732188238925623459840 7670277808262999508194442952572928 3631499238136913308812151917379584 -180836521506767417708124937339797504 4555763101434461352440478285430784 6471063327814141347803176418410496 -414326662496602274128620904354152448 2870065254667378556006304044810240 7429335025160551793801129912958976 -53885895273024954717103391898599424 4071743225480728754608414966939648 1284044024701387889579602252660736 -625615069014454907411496633515376640 981602797333128799488004440719360 5237367478326899502601124039360512 -215331419635441978238237133714227200 1000775127086764220995310725365760 3250622831531919262752954474561536 -463142016453556945499870703694905344 5549663710901032866688717415251968 7878351648782894470945570329460736 -356431703402815861152050520717787136 1468702270715902834246134376955904 9801737030075206500253575858356224 -764228057359391648183410375729872896 3192916047075295359887357985685504 5783832983536924182563128596234240 -232181791647137883302008354202714112 6467338575307636162400807238500352 4416092944048725162188033100873728 -385498185850809936827540935754645504 7931366443243161270910574202454016 277513355497683058999247555788800 -515282791894325553673180968514486272 2830491986914254645978115877109760 9471831615559124015916535376773120 -389325862068561662770713700985733120 8677574302355923245445288025915392 1782306687700412414743173316739072 -596227926017151474807786523162836992 599134136595717236644267107024896 5642738854947464554587581948362752 -240487186820904103922485400206049280 6503884356427429806590328685199360 3390117198026763009060901088133120 -42745904120011764756063266185150464 6744398873647149631544400227074048 1188472823934027476088353460322304 -762234911200722341715408640672792576 3252452004387359667153949910106112 9527029266122255147427315878723584 -372565415262774440311760488002224128 3647758881006286172687526824771584 8840852526745526707779971206610944 -798219622221055829152059192600690688 4447020879816225151157047140548608 693004514308625773317470275239936 -382553847644044390202720325499617280 5106070852913103494091203414065152 5975751085060284865098374344343552 -523126247422608232268551363533733888 1315398246158225397379627000791040 8049354704095751756400986368770048 -355281583231622096418249547911790592 4063457158318533863107800237867008 2889644778475767430341885723410432 -866277074259663592859810160743284736 9617835358682215439987261153738752 7481116406583054062797086143807488 -916427490577420010811728398632615936 7387087254171701782663187006488576 547196183293986170402926332215296 -874406079432353518023130643160891392 2561567167483622436128812546654208 4403921240506917962265703129022464 -942788958230679305857116456511078400 7698581405129624516415597955776512 9016900979025134339683978343088128 -938079166536186431101030619427110912 4529155786897755848759382059778048 9048042222679415903072452949835776 -973922144071833717627969728673742848 4283077354205233000895011958554624 2511081025332624693864780229771264 -812946386947948269307131272292728832 1453917940770900180942215289241600 3412200828466894427191222118383616 -873773324162044398488712907170250752 6090266875004279347539168240599040 2001509039253045083123712572522496 -409752550216769091681820704442941440 4128915879907081257591622453952512 1021745515398028052785553024745472 -944117266926298834867381216124862464 7447530102582198445173713271783424 9394312808023367875388881049223168 -962634529920659877994451792673374208 1515728885648969367462445905346560 5019370547912655784701737161457664 -536586197494154864955748358251610112 8375493070497016793723046406914048 528789551558872195876287152128 -37571565320712245763877292111560704 9330308312269153242147104432848896 3483218588614661118397390902001664 -840812762319512265027838609167745024 9211843529270697099430099404455936 3649629205816777397207479512727552 -905250012161851290969485923984605184 1648545611057333764194062827520000 1829315792194783007859143757266944 -404561929326805102066541855621775360 8488975209894724454967024325492736 5770318073103144216791960376049664 -451745156168426458048858932853604352 756017707327854827110766699610112 1003333459793710209872292455907328 -922869770255398376502758759594983424 9277831005073073593755169537916928 2940166508028063375464411225391104 -705847632450988158241194170604584960 7634315899383756289168909189251072 4628516174482882676251775111004160 -828724715791378654341710287646752768 9908100010251694794090039532847104 6873996369161409762810366489788416 -570421529208968139122796571765243904 7860386368909917951061338764607488 5960643338708116173668966121603072 -59099422937445653924209602261417984 1549321351407600806475040785694720 5033433218259325004612419069149184 -107252094202683973877901350930481152 4236995486607952169258589272145920 5104166004523880923283698623709184 -355988556386535976630034507644272640 7237338943930620397527545224888320 299028972422598256360656157540352 -367891905787028923702382485856845824 745439765388483544163584181272576 3869384823528236656489464978210816 -118598066940899960340127750203375616 1159569554409332146029147551956992 9186374455345075825468062673403904 -62843679487560226875699618669133824 6103075126502058155812894692868096 5948658779394735464712289772371968 -988185713659166746620071729965301760 8218055031644972431598401227849728 1280214229325397616140438286106624 -424260583294055682482203799410704384 9663608948673181598187271445544960 2926147003718348163516794253869056 -359716276589188231889372956520873984 4053541467479771631656068873977856 4851859709050616851258084035657728 -906971316732481259232159590437093376 8685594134214174988620014435696640 4761712964766240910219479034626048 -492785972147499281624493887324160000 4237710361220985065124816301850624 9285767633360679746766361103171584 -406890227882121776646770060395806720 9001006104172711089067989948956672 9835070883659519847563731077693440 -551706950908637055433905382958825472 8371511053624819720544469678817280 8282024374488102107978645211447296 -632364214389813166696096803770597376 9261077189876422292049896484634624 4052568194005020677723736619614208 -36126581765929887260093263659401216 3601051385904555455967722693722112 6469433515244275716902439618609152 -320108654387271923792844257258110976 1994834500490337520649145918947328 2466778569910040960602421411708928 -81818739916880353736694061923827712 8282879289876923322024346362314752 9175969906479260331241401630064640 -421706680423106491253199506159697920 5601931666096475351004373070118912 1662610319905210220478575904030720 -498758450086851441009794244241522688 3375240512544580122200694809690112 4823440405221340071337114516586496 -917460861369246882284362066657542144 5720807339625066643483582883954688 7809701475887015475543896764710912 -804291521586516153958733692786442240 6145370610357219262287627570642944 3292624085131348346117312181436416 -850469218547607911827982337764753408 1498763061223578938974279215087616 9607586417778426286032928349618176 -443082142861643312600879497432006656 6603877101246900458805154946220032 8313150325784966843122038878502912 -829487276913046664793019809865400320 1531167703822239751596155596701696 9085519850490091369531337737240576 -161998211355029244569579051859050496 4804118236370780780677057826783232 4931058326120672485905188993892352 -880196969012028864248336383461031936 6573836238913935331581689138774016 8324633470324465960090903158718464 -174175258217197354813229110252273664 9573381498384871418694439381499904 1966084471790447604187733478604800 -49801758611284045069089523181289472 761013609285441160877791583928320 9947961997358006667916038169952256 -221407590032557095187491673138528256 9183454280417292852787867771994112 4518854294603213383284496418209792 -196082775690471484288621510846840832 8512011597588113969437896159002624 5664963304395687419104692795342848 -38337842634599598838123272679194624 822648645052779214453236209549312 1840282753081132571326067878395904 -915804307748037372411021137260052480 7446453175488139232091144856797184 4582429868962858760155980533596160 -864023567588180414426434415229927424 8984691641076524582047830157295616 8165963525904673017229620610596864 -979484413043748942449151033588318208 4520138952664661555530902408265728 5771954144127745918349153675509760 -332963641334478525439481859943694336 5889021517130118967763911269416960 8777354166069799787782867471302656 -289722216985415612156799262503469056 7339216386338779076244433140711424 6004281221991038949602531850846208 -375207653067760484768768969291071488 2184585458788627349097319344635904 1666896003141720416554739906379776 -381428943129451835161860000479969280 7758888745779837001611692856049664 367667937828484508138297922420736 -308187483699965849319537237156691968 6360096029658811804047419702771712 30882844793563781821206133473280 -5010777553505526255252743057833984 4795717245134854920988870221758464 3010545343925399954597883209056256 -636088359015955080817924511262310400 6082883024734080287327572180598784 6756259295404047027473826432679936 -654820181233990793493202514841960448 3999067249500586103302398576427008 6865779643904176563452237687291904 -460295081087910730711946322186862592 7860560164189371487907062537519104 9809312011140097378470219923587072 -257774328361606806121715461315887104 3686434587759371009602062471135232 7711709981472232616239122769510400 -649664338476592134195702288900685824 6009542407545017134296122037108736 8452978171075490261399919577268224 -356304088973020785415482859669422080 431378528754579756716296314552320 7827338024896618573124896580173824 -785417393264569306750546066089705472 7558367035406422604412948758659072 9497043309951623683943026451808256 -335810517504638558098332822339059712 6525134118731421848565141697724416 4360726259952299113546161137385472 -580370745269717675683961049039503360 2963293645643441093174640613785600 1034330425852409244684522199449600 -523857998260980184656949406865555456 5461378728799621802799522107097088 6278505284315953293926237927899136 -279614666537275779948019943760461824 8905207142909675840755013708152832 4755078162684902800549331213484032 -741998881164473680067557524819148800 7533547905932124979973193031745536 334270776719906213781658337804288 -133328763027091348023621387552817152 3109564715520745532855798833610752 7841718293790754136330241029701632 -758982503937708685022043497765535744 1155846516580620679357982182473728 3524123734497511157827264506232832 -943087646537432878292022962465800192 2374912230259416639805924040507392 3918941869861009852842299654930432 -63720077357010902490493546812932096 1216752200550742572017545291759616 1725009495115878331699453166092288 -644265801917186508357076658446925824 1433141024212057590479595321163776 8542428106947993899505725892198400 -587592557629962106256390764577685504 5408353371599765811398094712995840 4966453867093232613661259925028864 -234583046447513195727813109811773440 7692514398594289710403105704640512 9482741298645292746159633404526592 -854282623284597292339504345123913728 9082324366518327726575908382834688 6424908269884148550552888627167232 -294339021786424146567080319148621824 2254678385961465793258843734540288 9397440838243204796596007968178176 -25841762450159802620170473436086272 3325410148122653828434749871357952 9268018998533735350003116659441664 -442724561073920134661571619565076480 5087757024512857787787610901446656 2344094349361091403673534596120576 -472090218262203173101699145517760512 2112015997811258817389603158228992 5202291490071689244476957431693312 -379063454508754232661523799071522816 9362126799977349775011326501847040 8454948936670703609270924010848256 -515766840883517979003860210044370944 346702311263378215198777365495808 2516532043023251096005346884321280 -553393225849911629858070562582036480 6138709884109615012078582321119232 3078581862829473380857022328602624 -874744255486342804835141436204646400 3089363325095930339462479821668352 4470445351615305295480226060435456 -418610797679167572819958721729789952 8701091495113140207228835541811200 5758587625232893533005191489519616 -267507069359428189466547570603982848 8215240697893647057491924430618624 1088501850948337699593967013724160 -209644311459226884136979851238178816 7270830411693849517769092384161792 1082221266354011891896455851409408 -275509226097919871276090810966212608 6549019485734097940245490641666048 4580467651508792200530338250752 -882349218008756712132596606173184000 2849662370207032322602927181004800 7657132535050729406258875650277376 -921097070234129957313953558972858368 7977064033720944059561526750609408 8755518993375119300793938839863296 -787588740367698225176713609510649856 5357737459717482660659469358202880 3054702227750971775266337750777856 -234017406674116191887495416929845248 6049679771316349933212197099405312 9971660332247268080807461584371712 -438776865682424593197817636843421696 794273434392717879362455114612736 7258442479125760312898907564670976 -577763190826648785801701875876102144 3739795089282118941257971791822848 9400643796444638790394780084862976 -662023458447032843157795178717118464 6527819210886229509154408857862144 6239339502312670847840124502278144 -960409893463022889294744032771047424 3233906820369632039017535248531456 3976089358434723843617326079410176 -207139537792212019239181826933129216 8951833247419713263480156467494912 5636507624171370232366576007380992 -475199614001198441026355098900496384 8109556001018344532216862509891584 9796635316173067365561384902328320 -936432849215637486802208260534304768 1145082524915504049413648690446336 1782300373990268881507629976780800 -231352444431015032508419814249725952 1303345256810077817549442200371200 6556172244454198349642203949694976 -699471669764106285951002172549234688 2068215400810010669692920178671616 104111954898842154131635688177664 -162843810911605430496909518218199040 4009777249925977473303500902367232 6801067803022005406614782885232640 -124798909851210384688235965407297536 614472394316212562876421596250112 2808160755343459943626669234847744 -856658431326701357282484289049460736 6506630111244036486346952652357632 696391853656178975071501633454080 -258218350104429385041123788283969536 828215002836886991184884165246976 9836898199042038127816223829786624 -689627516676287845363321825054949376 1113695812276314690185215227199488 2593870020040725431724395536056320 -972164521707293585947893088420626432 5694825466907912849041632100614144 1420691216259647804091006715953152 -581189386616626087887560778142711808 6020723694042547260833759578030080 5152890263409342652710469500928000 -83297074188385486043548618456039424 7398589695949362244235323829649408 6228834861216824149821971555680256 -783515262959979262724087883644272640 1300405092347351545574555163557888 2223347816782421808883209311617024 -840634427499103089852386716912975872 2524107291207936521923888871899136 5436394067269284925698296363614208 -806474081852711117192282591132123136 9813195067069887573659561351970816 9878081833070921915249216265912320 -541111132574857584627779192666193920 4574662659548184219742579592265728 3594158060636833722407622902022144 -313708356900218829057788732235579392 7696378433562953279811223426170880 3471863879811672999564065219018752 -440915822050671831129995001970294784 1462515538367336008083427276357632 1902245732166313062377356613648384 -785434653742319188957496067668049920 3339279670540315324660436806139904 7041992185338437340607316469219328 -597198385478084151881129171718504448 2489680935790288419944237652508672 2812836142114705458150376086700032 -6014885393531321916032723598704640 599183754481331416677959421919232 994065502878032053194288476979200 -157725675478401979440431585573208064 6605187617457771403794170804961280 6425699520036775384197057528987648 -195399347414872131825905316512399360 558842712325717776972976423436288 4846849526355184071691414827696128 -717839337180638574568202395612872704 3494192802709053488234319637905408 1567436866478572931504794182352896 -935252366554577045361046640507486208 1656272132083088707325226525917184 3102104330049559906256321224114176 -305256372940984255312965291458166784 6304858955632273923584182672424960 2894133004152321942476921996574720 -117213008784967370930099763399360512 8462865011951872858165451715248128 1513029205799166831314676322664448 -206979292475711103588636646315130880 2048394362298661955187570785648640 8113572240616953128129949478158336 -822896318554027199102134287073280000 9608006870190017302924825366364160 2524916900705021449364294999212032 -99001242657757429504034407092060160 941669684574807014423258057408512 8823320676707333868714063445360640 -444632982680093501420190514473336832 516187444825590396675758055489536 7461631167906438655477269680619520 -171098173622477043013810152131264512 5777352097710907776837672272658432 1993870718379572246779351091118080 -739388949593619396029198110214324224 8044453114897642765054458195869696 6265344175349438538373523686031360 -608673755684466746070328261214208000 977620392068883465928393873162240 4342498895503664796716994861727744 -742231080108751377366785337564594176 9195419350546804090659573646491648 362257439708145696183412336885760 -78524983657656500483237364239433728 8823282751400719248599211369824256 2003304216508528386087095241801728 -805139416064939411970021897176875008 5425496607949291988826807060135936 4960142665655742310682800066396160 -439351876850225601374020411557150720 724529502447016774185875484442624 1838599420546699549464695178002432 -926144719010312988367548280702238720 9325059141669374177695141959041024 2450996866064415178820869867700224 -21771782713284218505009322608558080 9594368265847210611777656137449472 4340083911655839697881254349242368 -404109459986385293233163356149383168 5400245873828818462766976565510144 7367673877937850519211364382146560 -331997311359100204105294833153736704 607928185547880728058897874550784 5979467718586714526173926629834752 -225190855871458705191077187747315712 6064833388479956852896376998068224 1088705581535611988089429823586304 -119503594191137826959062119472955392 1290048239481582058800914832031744 7915831672806705670384611676389376 -285726703869927552918438305408745472 4037922555578968919541793096204288 9861523921176557244711200400343040 -447192496882459206057283237028298752 1981248436776842759428181925560320 5690581775374978049733555939966976 -336416010773022483023211076331241472 7906448876304605635212536025448448 4026327362163057641342102262513664 -448875964392955826847253765252186112 1442932832404478167649984266108928 951677683404368518882876951887872 -160525251488319780484870016134545408 2249072009114129850380930301034496 5727934488845074835324627511672832 -154232555578008388640800499983974400 116102606900740256973600969457664 2834164014554760368280557959774208 -648828436042061532958687087111962624 4540443959923842114471079777927168 7616466817667264909843686735478784 -97996690554441365035157344309215232 8952326409731620223495805471817728 731040641299439995919386573537280 -817078745881798294295557049518391296 6835836763178365447256961879900160 1475034706695172343820586997252096 -587926317736316622938238993827889152 9053921094889632275406907890466816 5375954485500568624822141847601152 -130428629547446398247207442109693952 4067452174136801751715480529272832 5827816274634202271349350806323200 -363910105333115999587439477675524096 837956898396195541675703680368640 4026014591378593862019111895171072 -450258368779308925336374130904137728 9908823809704811082586259103678464 2634996698644628955062665882894336 -853393795398110462722600412855140352 7071655434264951537923562523328512 9333307608952570906579985569415168 -49389705115177484787644161629093888 6387245177186112384382332640952320 2193431572438335152485978309918720 -56853594032887510215920738306621440 9912732786748454124017906373099520 1336052979330467624691486303453184 -872017764542613874030584406036447232 1202919134358818949835480071405568 2044470036193980521496727775084544 -261902923092458119110924157860184064 6345914740367229688337551457255424 6392369930899958393306147637428224 -764639528881182833777624980528300032 2028954810196802142865198715764736 5825213041293831902979996392620032 -478711633111605922436176751471099904 3140452050439046579150411511365632 4590766034443064286525964922388480 -918471622118595972478280550246776832 2743356204264592198001688831852544 7348588007635203703132883213352960 -660917192595509403280482020645404672 1110834537786156633853525965668352 3393112810600438398094259454476288 -564411791433914128566000533630877696 2216065061204585316709895464026112 13305156228245019320149145026560 -792295643660802989018446031270969344 1345897265187770058288384511574016 5436869855676812671011184313368576 -680104106183457342180325352131264512 5585487849288757588908018637996032 1426712557743104878378355198525440 -543554707408897553312922695213514752 7041090201833706745943785658646528 7272318496437836987163882748379136 -718696107264840060861844721684709376 8868918633864601018717951217369088 9093625125523144525075655157612544 -46928662626977541429019167875399680 1481369878129044972770326350921728 5390733889381406389721829126176768 -733336670808453199356099606534422528 5039008528511215725923148786302976 8531865960769526567309937561567232 -182318543150672178231505649106157568 9356561737798873169232286950883328 6133384531364167120069165385252864 -247175569796167393110186560424247296 5385997666473117433833648117776384 1749004784954036387785952399982592 -290032718064663819334584639533613056 3406090407245275058028723742703616 5934321437045461507790586922401792 -530436375396836659155847970138619904 2989736244745555441170285464649728 910929530077110746720803833774080 -591168586999457062299486869964980224 3804978656831468112761353232449536 3169108613681023266947164358574080 -562396071578060824600966273108541440 3563904545928926658313490620481536 3779985586230175539992359423967232 -938157213483967557535438385016995840 9422457224933238962418674653200384 133874147901500807684327185842176 -414050398670781389601184172809912320 5984508838896315339016906049847296 4823387829255297043399550225612800 -855894353088945164494078062108868608 4120913182461116903900986065551360 7317565029870516143791663250145280 -422020731468665258889459638781083648 9317418891201310990195063970070528 1184217613297339556671187471826944 -531660490935924443309480395612880896 8346935526505268605482335742197760 482363173697199408020649637052416 -793869420164180446308278410860822528 9964651600869218434325855262998528 2032895553841697853779819943165952 -803614227886357978196060629786165248 4080324162992446049701714571821056 4667407054148710748840980536885248 -945346031054954416980703537241522176 6060520642080532426636945224892416 7286928246610267836630529707343872 -6684963225167548099142152710258688 9837911318104769655163566543601664 8397319895480973042143091622936576 -786185667083384677703735135132712960 3337196593605508619705991565410304 8531268311350599892666521405620224 -964116728075955130643628820638203904 4844744583942045933166184972156928 2965691742280094103356699725266944 -354981191942299057968280044237225984 3788702409132782161804519721140224 6806274173005785317625504917880832 -132664596484053889324972043698962432 9692954393292670108600731657306112 5697228741310473444189951190106112 -663329029819307403874915293417439232 4552057170390334552770176048168960 2191771106240364294428736148733952 -916883249337205567763450106243710976 1512816189607468656322996676329472 100668685559731368718654794366976 -255300043390257861364748045827178496 5233786452310125256560819983876096 1562458960048690471025626413268992 -434841597547957611266971584935493632 5505514419524968068251259993325568 5969032632708431283316850956435456 -958864028716330797433572976616275968 7288038387863574855000111844425728 7459217731365988000616918045163520 -634257922097133307087202738721783808 9287117927694472066556814990245888 8133377630663153981263199256707072 -55750043601501221338046105676414976 2356442029478688935154222989574144 9898026662188262216083819586387968 -540725488899389751045894950096994304 5518600979588710190198557056696320 6106021899422426672360330639704064 -680589426007026977192775066631274496 6714070246720965455674680830590976 4793017135451450473080790693445632 -903922622352895525141988882216124416 1086290622263077758592205371473920 4378510772271425343273363757334528 -43695397790745553521058226123046912 5869207426317877290152855594860544 9330613539754688855612368284024832 -256465557895667298544628289524203520 9808506024392520387026690399797248 389705995257086316940524651544576 -910648929344113569050563814304514048 2204054003647994625062437210030080 3497944991352467583678863764357120 -281779262590553414424386475080548352 6625384353594827302491430385090560 4419091028009622993652124169011200 -885289262028739468256535892780384256 3421734458819223914308091682750464 3965216957508967788092435745210368 -701216869011629116063079457561247744 3490143655908344652101948591308800 8676771612930239461881811059081216 -89834990084480456090590806978592768 8620331814830775104999647713689600 5322517367341936313768808298840064 -901073300969569462376563111205273600 6824033218619949752826970792525824 2144204776648606235237408915324928 -902413012834747282689178914961489920 9115611566402280889197545679486976 6841953685399224277208922465501184 -55416074778473631373395255701274624 9421583429774220623377861194022912 4735935026791724869668876480151552 -551258146395360777456847603808337920 7829731633011734388117780629028864 2336773103556935755662506655219712 -473125791965236433927370904728240128 75382548274645713807773708320768 4135044671234600102144705657044992 -299664640131005021175284438050799616 3978921121345836759696779226644480 4399203533552069316790868953268224 -379429277022600876705571795609059328 1482038553450610753277237615656960 9708373834397082545595822815313920 -516547488749086903541919365667487744 3861800074822326532309739257200640 7899347362608189443553933368754176 -278001179769951424301689736978759680 5684360155630923639162283564728320 646938648231811046286732556238848 -605479256920254256846922141713563648 9750451290060857685776491224236032 5196814316431732675646202178437120 -790708371492545782903630663832829952 2299424718946981519038037406777344 9851071851390141087472456531181568 -331864374659717039022494060516474880 1647640865918510564415917900431360 4429976670425950948896114563088384 -353181690132568820781140804515135488 8306674634591123686707364095852544 5934620277094983574078144617906176 -99959158925760872873336619445256192 6298399442486556966169505045676032 158347444384451460883856524050432 -413416258010198354080847176929378304 2317877639467878693339877217402880 3820046947435911675062785155268608 -262461516608705013671705685759361024 3959979319826795510834185757523968 4167968450910226396668674732720128 -605924769559093299532807190693806080 2678341691771416671592827932639232 7058730679101754701918877580787712 -595099538706821162208526309190008832 5017753751155124904192368577609728 899278598459364991974919769161728 -677467812642484295876086461919920128 4947230209432803942275033866436608 4914526258561877641601100718014464 -820967803734062110982150457013567488 9062743772782547712919211660541952 2655898389801332232968630263873536 -895362353476872547109811641844236288 5239176655386583198305451589500928 129197721882980747080076070223872 -932100115278117687716286887211565056 9102161007396655281612164553506816 6246728665434880981671661067567104 -569941997998337299811958366096326656 3978782624825008438274597788319744 2430253991047709583985253713707008 -207377833281697412451667353339428864 8640840853529550208333893983010816 1764282854340302272862868100612096 -880072527600503281044717618516197376 9044419625635428000904220084535296 5462234285886432013728344285642752 -934194155818862568305289245661069312 6089817239493670492232510364188672 428655875109914650881912744181760 -611462242137369828303727291306868736 9328189339371700423483368130215936 6039784639588848312166551253942272 -932789455612447328047557852130181120 4192825002131665274368929015267328 6910108599174169184036565884600320 -641987248430341960531347132278374400 8224105269188975279109380256038912 2823244998317787367453595738832896 -450339713121542642021055436672729088 8200548832548424308545933646233600 2842179360943887634101948590850048 -276252030918144456627851990577184768 6704218546546012332741305762316288 2678078698533961862641290695409664 -714959643647419443532335476314734592 9525434605015258642570826840276992 1248499372265416513027995336704000 -169280122400310880381933724398256128 917680111242770872710613056880640 8968613669922176236290485600124928 -927866461714346536718502636459917312 4132694086361308448545706912776192 1281135436498403335854921806249984 -150549566106509107894861970372820992 3460089148430695199138400161497088 3315684274002487963290125222281216 -130289841364822689463539414859776000 8968794326965211601289340864430080 678230579888780001618140426403840 -204583723382280011861246165683011584 8687063282328357812887913569976320 3852548888502180968146692885970944 -691908235509300827829333610253516800 6091391760561566916848876227919872 3890192842019251531305361594122240 -146434483295646495964014123251924992 7266553059301798760608418689449984 4152342810883731820080672333103104 -902952211352354658160191505405313024 5995043495130678958874579796230144 4204550682150934208612396236275712 -50151321579722477259260724842070016 7793213573619108194187288785190912 3807277008032593672119619474685952 -160769178864601897153825765081481216 5902712229216227570927154931695616 6040680375400282488385716256505856 -279295247072132114442280243600293888 4413590314206885145919270911213568 2421745585304449881508552774778880 -701135396923332907650867990311731200 4784879125243327398079278583119872 1768227477093062832876806224216064 -672154518199324988140758482701778944 8898444483825383350489743131410432 919211398808653946635153477468160 -914737502043674126493905228484575232 8958260949470212911579001656442880 1710607239471160216317573550047232 -680792765167616666489142158160822272 4962933434668997842391672012406784 7452161129064434975971650308145152 -59907422055573045800966550512992256 2706957885947261613400608257081344 3761312925892512551422595224829952 -536514848385949610694734138918830080 2292928485508142551870670213480448 5360691201859833483300114282840064 -172233697515658450618423419229700096 570811526476989438541596173795328 8254069346067424668357212002844672 -355232905656192366674734392908185600 4237322031518377174382159614443520 5978101402813778224000585194012672 -196649186979480564790365990472908800 2366751516428638476828317262544896 4181732882912021267848414917296128 -706880428473454430289639544943804416 1476352419254478286817452397428736 7561892205001523973137148315435008 -344429637691385812587407082671570944 9512650127067528079206943161319424 2305434343276148308183217665474560 -998361505522615704856210155717525504 4695003011139883692663589453168640 4753941082593343370825438079221760 -56349689221719854687685534751391744 8122409311206742596883218455068672 2655543665702434278651365028790272 -872835308951204893312024343467786240 3914682648082766169392787451019264 5779420438050764900453509194842112 -733626626435533003119292347878211584 7441749121386998387968130890596352 5631142181689236878104570061914112 -5415549085585350272073893196857344 9559507631689014369440775763132416 8259925792536219576168808586412032 -432866904651071957506485488699047936 2659473122026642769105632584794112 2460058989322979229618994524717056 -553837684956005555976175046497402880 9735698852645972460640956466593792 6515010162685680986085024610648064 -736520946767107098735089413064228864 9521855293676277827031350443507712 4724559045057815457774616606408704 -286609584427457701063742095718612992 8942377384909567981439567064465408 8533758167924612007441434910130176 -299337806205888626296699071693324288 4994630032133893242350199208148992 2407844997739556400459581629661184 -566825607832463532537886658491580416 1274795297558811590660922233847808 9788575482117851679433033819095040 -597693362548265861900517291551883264 9547703976619786632156372512276480 7360026712054995216227998625693696 -739758036686763945254232682101997568 170958874604919652069178282606592 998526138861109597657760238927872 -46628256767485127846938082216509440 429900804199020520872933423316992 7125822384653194447115821871267840 -211777151962213495455785910894854144 4666065331599681777007082889805824 6993180553683578659508467343032320 -826414456289702652563484323346382848 5804177391288419813978810060111872 3570899515390665373877121799159808 -51247610907398309170855838549540864 3616153053382056205227213423902720 4546211401828556825172084183269376 -757855998881345860469240413038837760 7593374404733568277174739053576192 5765001104853365762797813872197632 -290027287224389609569427957198356480 7684702575584661414536581635637248 3117920692560021387670233852936192 -401024722159871931380686593057619968 2322689040611292452255575176118272 4862257399205262082245948264677376 -924107793372696516620437867263426560 7856795679658111642701438952407040 5968538672245541083531268499439616 -693638868533958160828007159705894912 401096627650424352830278854508544 9933544621382902045051167002591232 -23433400047012883472903420963192832 5756961813043145022731026744475648 1634215382173387214291281154932736 -714749852319093138187245957878382592 6985355957406121309226589982031872 3816057597524971445983967849742336 -50344866247870248877482271683117056 760783210032124897099892651982848 7681144523362748369088604847210496 -130271508949082611485839030652764160 2557242868247914569877564350791680 5834242189885236226714888388476928 -460712520798974850558911155477151744 1679439812239844610834178848587776 76116526731915771798309109235712 -531678171911964524335747663713533952 1914075093432592401793534581014528 9638003324687592629989309774036992 -775682397060074250474573279661129728 6077591741158474419271395161669632 761855783690749827186214228197376 -262209361086592909494925721595805696 3902372337509317452272359270514688 7819887950463278288478309716066304 -530724394789541957395890090159374336 789734321404409231362702415233024 8991715098288088192881220229529600 -106440228601018405871113371285192704 9658408494850263129979183337308160 3377320820292256126085700163469312 -936957800177742452941550730520559616 1946139846828468318790818287583232 8368993180576141155943144849670144 -163151020421352334435826016117063680 3778140138629649840245636948033536 7234274434703635638099999872516096 -143920603996251493042378049346076672 1740904747598908749332503949475840 2529806468844105020106388436680704 -196436526264882630669898733615841280 6575900205899680942942422982197248 7209154067362478715687957050687488 -48224161629688633110849456508502016 8943719082883308389777957864865792 4416601427793966062597394046910464 -785411953534400089761666024406515712 5529421572175276973354414499692544 4950616179448854806212789397356544 -826594321881561542934372764916645888 85143533864339569785329139318784 1373474934956153135321970026479616 -525370837698071950366260869849939968 100688566188061007372565465792512 7893721814295571535101245947641856 -501291034914952319262284058437091328 8930123311440814044100778117824512 5077521846973589054500262773784576 -754769689188205434848270394981351424 9853956216290800849341513384067072 5471626932912661479925815321821184 -19910256719236520382643163604451328 6094787085251301355794677335326720 9834037807190171392141652693876736 -761659438439453933720784483462938624 8467337558483164356839698352570368 5137563636907614564607142146342912 -815878563049836926565089955115171840 3724503499075834872725572518150144 3636971719099971378785667826843648 -178691246846733348305440113711644672 8425135394238374491085358455848960 7966342222496712567143851779686400 -302890159724803211735663670003236864 9864735621585586867288559126052864 9798859952115119720522062139228160 -405258706971299870118049246879940608 2525829652708903461376134148521984 830288600773347725841574752419840 -24801721884028336049380803834019840 5103626090366439427877269244215296 749598526463326289736119565156352 -76462360214591006262198316476399616 5880849006314353917108790277177344 7187971511765281456675316608008192 -172859190302253385127250876052799488 1362626909285090159959776920862720 6197885658623230032845958803357696 -497843176499627571645443898408435712 3447390075268623961679166064033792 9718342581634282674553726980587520 -62338762238824784905996481989705728 2050481659186999223806898267488256 7041278810486395766440257518567424 -534268997241071486145984428186271744 8833579492710542170110803088244736 6097748963239989331881394593333248 -646208692038716423749284475606925312 8470318250225204937203735752343552 5888712281555441605138833169448960 -847990354917271022301651792151183360 7097005881536636440474675329368064 3112351491862911454775102436016128 -231943872945434000886811100224421888 2234414926758409231582275802497024 3354386291709685125959266993176576 -337209257496867411087339140065263616 5800709447290504821965565192044544 5624371508030858929459730006933504 -245055599128559742494900073307045888 7919852554483418077964382513397760 1397042126282005459028804213145600 -244511364498508796909845609682305024 2074854123440767856302413305610240 5157664414676661252392351082479616 -16817308382006337847905751205412864 6597622984215669914055299894870016 5580336836823791404899459707961344 -724760868362509446084110820365565952 6093677792903756202890615184162816 1830501034904932097478240745029632 -586058543076126118246323705417302016 6083258647185705373754924652822528 397687094344514433280620688834560 -209507412735525549343275858559762432 5237126941510982463182639787409408 6300994303540911073709955376742400 -527985493758702027105453787089731584 9882925063780022164142474127212544 7056547881306710262557650924339200 -993433121269545782402077639674167296 3351359945677204736699919606218752 5334181951813391599248769483276288 -483900115645605059936496382138908672 3303649657812652576686364533194752 282130276321517767862537775218688 -75759788437142373474511748876730368 8812481330279434719248504066146304 7254069911261274104404396776357888 -463273574052812933895210168169267200 4414532580842225160134373534597120 451431160771300287223001822265344 -14667393877622607028941146359332864 888005877452090633076439957635072 1311457686750014049104589966278656 -714298853784505219826456414956552192 3121487708011157606370135397892096 7930584824041249848792738196094976 -279195243671708555886931269868584960 6315041066011664530692515003629568 7646648428490851872847539858309120 -825766505436888481123197069117358080 2514380129191165843742154922393600 3102894521036232946948456560197632 -215691617162510834270273888287981568 8886722497229080513040604500852736 9116596871697497204176779512643584 -28836292748695247043068549302059008 7531844921500015122968437833334784 9543118764089385421167446657597440 -816948338736071337798993872951443456 900468665880103927729849647497216 1319717656270697801408437614018560 -416272348848620245043465640027881472 7959065642490503689946937612566528 8821550442678660899472079306358784 -696529269011459415780405356802342912 9107173859529844642223695266316288 3166845613441516803064559552167936 -354473538878305885865970470777520128 3998788243981227194857748552482816 4684635785876035100995164512976896 -978472060337588288979827824409968640 6274479828182180788259139014885376 1225553186440573880459943313670144 -198280691025321101578779029049180160 172946346227033407761322189258752 3485966345147530988002963628228608 -133397252874247241634505355530600448 3564292137236584726445039485452288 9257946551579060246896792710414336 -682144131394207167826952050903613440 101197406041031950117027065102336 3180959493475141448545002269442048 -577080840009054301539306146925379584 2201799602820954231619615532777472 919585361837892344564824751996928 -451891012848520312292756192992690176 1706206030456271046266844547645440 3453963605274491282552851215155200 -948207344016977389085443840821690368 8133805595693556282541875857981440 352241460037029053226950559006720 -476542608995595380839320601325731840 4338221490908620159504202065772544 6020695373663144810853953286701056 -502959078501281822983956488882487296 5722770956418223792167316298399744 300877216837958964927114243997696 -767907817521819380457919553946517504 9811054492761485439521475224666112 396655916789644419517300497973248 -954803795476700708628461131428528128 2038990375748750812016874673405952 4320421930380780260987240146010112 -10141667800995403571637668810850304 8546437856308800380998432128499712 665585720592260184976286965301248 -207775921239434769328493036140756992 4055230829738289415858446187626496 8162708539790638613866514630049792 -671267500486089795537601474139783168 6338490083488271188921926127976448 4490745197974842780877160408154112 -858752220980528038455364485627510784 4505608252126193712045214039801856 2754107998343024537926374044729344 -280756165214812903836609684374028288 7096797800566341883855497647357952 5451719717488172864676417702461440 -450580018611058125687992696063393792 322004220074206996248169166143488 2655653682182465215640791284711424 -584906196678338334885969475118563328 4594850882208296662667832904908800 7076782314019728608363182238466048 -591569556763499969420368607581306880 7985344101839171358422459949776896 2943206958270731629338565543985152 -805298188120537060655613041470078976 6527184996178963560283472964616192 7033400035680114922818220907823104 -647355814467704240769057993852452864 9580495413823334645192635357069312 7386303387656611062727557246877696 -772917636442824116003014706158632960 4629731576574891482793095884439552 9804853643993079300939851753324544 -427715669532740528348054338339340288 3487863865154626348832896875233280 3342824530422237632605593352011776 -240796531461412545742316683478958080 3856723020160938672214031953035264 5864379118044614501554996146864128 -84510178685997387514167548740370432 7761335487071676616422889474752512 3314042222404383526299335582023680 -223039650442513318217819851222679552 181595304014579459833889982251008 9278665562453583359687762471026688 -496911261669070940720665183224070144 9821965061538360081754975648088064 6288053104813995277938324347551744 -597811348566851625501833639067910144 4893637842628275862721022612471808 7930120198629746640420118688956416 -701347320012541246186202334459068416 4386410486871986970384763711389696 4549713982968430230006141814833152 -62810537632187058076822601824468992 4636668291953606333703933436887040 9835172560137852327439020719079424 -679183452976358713728425853292904448 4627816535367660817881107009634304 8020359112766405792092279485235200 -643445941421496121477760603155070976 9454905867056567544324156175679488 8617409237585029810746113078067200 -917277915989503316149029401595478016 3638266115570535440498484198768640 7368392722250884230693968838393856 -819864616130159987894756880290938880 8816578417072908783784186406240256 3275402387038655663137831847460864 -571187475595717832548997378663776256 1488297241886490984121590672785408 4142266885422889270217165552746496 -16309016298347157132288645230755840 9478499733153287855445857355694080 1605885819698939820078567251771392 -721496238563805696800959161419431936 5073993455230677152121320678359040 4678435259482829819773021197434880 -442593077850191853556558000763699200 6683349179201240190356054404497408 3611225911543462516456795492319232 -847290870597857504966062049450786816 8876259385718892666849599651053568 9201204335174530527563053545816064 -535505569177526635436980169571565568 4748931980586740229870469999755264 3828506429194538777404341225521152 -700231473135132397577711783136722944 7446579855105303148346579689144320 8122316338546863659321573993611264 -982094224073495344002326086394314752 4641740334615307555418760525381632 6523540381704277953850014911430656 -365640045662636485273617839440265216 6549996318993925603753498920353792 768902030460488258359714312617984 -297059071297510427532073448167702528 103598394741268656981218154250240 2539648709939387672618608181116928 -254624404982408984119366882454142976 3283242143639839647307701208219648 1708935762229533686087888884727808 -586446580744360494363687079852900352 4073898169514914396432018473746432 21612034203444181559197818683392 -605835215316014840713872794569408512 597765165198875642610083573006336 4276266165633180741856180465303552 -980712705148779238161149887166545920 9339957723310004226675575177084928 2952231873094754748742902233432064 -351423753240677006858191714408988672 522974895184325941161670058442752 4369338670921971577259625818357760 -850808611150631052964396639052627968 1739719157938268221245786897252352 3375060323724286449584081706418176 -496597958374124018348041376668581888 9918733298948441881209551372419072 7274065822688492123609827180019712 -432454324541060878754278064972103680 9277942909706142959903293105504256 2786035193111771925543997809885184 -527346564502713673474669351207436288 5716382401554099632963392622297088 2608626797077191128656366398341120 -434102087362177975579421687918100480 856471655912269481648748937347072 4897877222167331183333632647364608 -795542220910764163556469487047802880 7811514766890042205486552423858176 8818741424831758163899877691490304 -893315107952653865485099015855931392 4743369394452096247837309150429184 1287974945449858333103935742541824 -433508515132038836870553877289631744 7348746470719884800294308959748096 8915082820790035053501782010363904 -975097736466821655984219318529294336 5204220256254301702355503374401536 3302907959528795258242907703869440 -821034517137929162400135272292417536 7404719882631885803304841516154880 2810089805512131172399753904259072 -832336753642510739702882780149972992 5129637509999367298854994059460608 3211266463734972016895422669783040 -434516462160463197238331610333446144 8965868438583719576186319089434624 9293990627834088668993037096976384 -566829653892335874889172520110391296 2431607991014121465986778692321280 3177050181846643796106756191420416 -105189041371433753229167593745547264 7200777182813237575255916942458880 6948115642815341129400180463894528 -623478679315289415121478139338817536 7253132555272046839223280056926208 4321342432891365036821461679996928 -5493097949928935476133922443624448 4367720170248086342000767964020736 2616343499863134732707278331314176 -148471663350320560987547572056883200 6931139777524312048036107931090944 4864521306658352609621632243204096 -782249145139781855681521741283196928 1789669231307161735508553577267200 2034301810451365200656020644298752 -32565191004952119181694581862301696 6200221107748083039591720091123712 1703791115677705203597368547606528 -980023099822557189644165326573666304 4483901307960251354609425047355392 7983099979765661097291146915217408 -472449031779001804313639253027323904 6748766107136748920759302947340288 6226840801055745054556961808318464 -540581984346753300596693352845410304 5118981180042699812529582521712640 3006061804820918505648407711842304 -712840280869263046356316246169878528 1258180519227403862029245410705408 5453760953223559512656325382242304 -303235643353018952080651906877227008 2348293299921995028559930054410240 4628106596424643785325947989786624 -291568489276540026742711010679848960 9598065420951209301058824033009664 9132069634715942028827249313054720 -345609696179340618466277625474056192 9376832654365335858559556840849408 8096427248148079868821133366132736 -234370423458213031702756304103669760 8447271477768096319842920385478656 4016769338085570216856450280456192 -930584755337524056411769890049884160 6430111687892326058137733782568960 380863198847950031554685052125184 -807974748594508328462663570067292160 6274859363474198017249585385177088 1099779272341536915265185273348096 -477004109287931577673443011429662720 2857763058417387687907766814375936 2173449864970679406150309371707392 -277736426464631075712359626491035648 3878346125319057546162131609583616 7256631957309864860486444095897600 -896187655852867374057140083039928320 4507868803949570562895543185440768 2946648998021056557150264616812544 -986591861577110506515980068977639424 4466827513265061565808529312317440 4219756970373345789100563594477568 -117248158490235121179763026509692928 7100208109052144087274077210804224 2966209244509964198445191509573632 -543801896749146309500869025904721920 5439812895336858326403569976082432 2718816167849377307148556678725632 -404971743871347365925338096928292864 1949000310802004722624484006166528 8693999021424231361752040499838976 -765585918838772296602728222058086400 6267916334385341074255085251330048 7417053142424906581061337813614592 -295887017218930401824512996970332160 2631243777711090472678692501848064 2090354555983388557002802821332992 -430963687838322628501698484138672128 4994158039951120737535066728562688 5705783086934432936930697531097088 -789231218804784559879272159076417536 4243533145226462516379242511466496 2511557748581438072232469633957888 -126232732378134221920318827024875520 9112975898739166189531561472294912 5068796073051411283701039462612992 -328573180464367990574933446160809984 7289415255614663002240795323400192 9706577329251651709116945031757824 -763785522372574348852546490039533568 9998844689545257679371172256415744 2116861038290912112037478784827392 -984984559225623271548918647129899008 7879536282079370061553304543952896 3060155360721088145558737673781248 -823308157508509325302396072014905344 7592571963957215625258955578540032 5902339159586721587018573232996352 -323310526051084452209450488883576832 646046416950048062619195761754112 3071871699880526451302841597296640 -317201418375257917215608719783493632 8447850381054716409631381406089216 9164233161765129184490225601085440 -398218113692841910392374032376791040 2111371043836744807667030200156160 1419579558379081782065101874921472 -959260883260052819565222933976580096 4320286803303518562599095819567104 456144801329187435468659852574720 -745370515225302712158462569682567168 3088897032553015669943748846944256 9106288195264169747346273010188288 -487581603485993689345870779465596928 3919861856602469814018058229907456 4574351529715641262904868702519296 -793845169704499144088660639414747136 631070448150256143373581345095680 2305625179323341991312012404064256 -680313554614224949845813798945947648 8692067881999572541527281218093056 8607682061754406762516449152991232 -289942560072145549508732299105009664 3965023778899844912318750750932992 9873144556722140601019616525811712 -707234711951916815993392707904995328 5647915265048130106421475442425856 650093488308621533232634095730688 -62876033877148068247774916864114688 634728698612387561751633979244544 7115411540547701141550831132213248 -599983423025471699378005154958671872 8628636947448065297339610753400832 189341074732113850271204070391808 -832529232197619768582455268795744256 4566480794058736170540165326962688 9410611613497164332304157250682880 -768158410837330812429286764210814976 2829735624157117126124769160200192 5273306434934156213772493491535872 -765321428535468026165430296539824128 7650405314467778107228983148937216 5399991814588684047031445114322944 -298823751119490419029291396612751360 2974311602904144895653486501298176 855051307458053115231395622420480 -97627145702904981711979072683245568 2493985314560311378375929770278912 2880560551850981331228502106570752 -923740736979638753502767527833370624 7354742365417056156393272330158080 1313615159031026771186943579389952 -13775840910972260213791288933220352 3393707520409400937924700747595776 6495128954310567543515333542281216 -806098940849799985429941274986676224 9358940356013094631159209369010176 6416731350377544924856571624685568 -568840608612848418343662982203965440 7668129004463710959796632374214656 9877356839365752956833301029453824 -160180858508274749103815840334086144 3011268398878737526046802569068544 1657780126531321432327482276577280 -508015193120047550686021392491610112 5632830239184884184925316512219136 3733863839156396561903842880389120 -839484613110042670209706277944164352 637508158782077721497475477405696 6442169876529258797976103034028032 -983592557863211522786617993176547328 3167951370579276115731461739380736 1854620542130271798509593023217664 -2553678989315032326052083505561600 2978898602234009493532710749077504 5152533448606245311349510906052608 -867957370741766608428655434539204608 2148502031191863863820346074333184 6562719099689198259561774410891264 -96408305657953229158369466884554752 3521961471238437035994359611260928 4234087025782046763884723310690304 -718215691202444461942551525860573184 4453962287871838500925124036788224 6624227916353088596039655716028416 -953035276466322249269651817455681536 3354621713724126959754196453163008 3609631689427309535632648071806976 -97044326117432302445822217398779904 2630611538696586778108427470110720 9289258937941302701048394237870080 -126906406951533054778898257572528128 7538104801135537611739656485863424 713749460110853958283487776604160 -730729205311081530246858413849968640 7052685326180362514972101952143360 2919931300135151160522889679077376 -141867387217816138505852422855852032 7054611436739066150167697938186240 1357649997608514435194157266894848 -137289334383853087701347528609890304 5747428452863024242303775144935424 2697385257308514225472684592988160 -225056587762208641599050647297064960 2493049409181495713829582071136256 2972438887985342220903551214813184 -585964348988698124832475034828144640 4423692716388059238740506668171264 1851064540775204258048349418029056 -696095067371278461431202265478201344 9592470461854053597749422646624256 2084506435702441177409293635289088 -542705323719397676114213117190209536 7236365741129328180853417260875776 4214077042428955801475491926376448 -242346367587513229931679462283280384 9183565239447638374820979952058368 7343013050438627838348819066519552 -910710904297907325963583283896778752 2106929855595983371139628958482432 5549698687284454342449018076921856 -899799996726125348390811588890722304 7355785000715447761109203661357056 9682779241373825614138031432794112 -612314891016039622361983736434655232 1770263565742658489131024705912832 1750785790534273780442460313354240 -284793503024952408511565575208566784 3392655384589784923177961834676224 4755086754388343954225495996891136 -560937036459479387207797019747811328 4214983210550487014714050529460224 2320850391809918218931912067514368 -317411834618276439761999004610592768 7540423785173795813058804124221440 6267946667242446366295930993377280 -579278421496499342779965770884448256 9421415490743605985524143926280192 5632641192989567471213787905785856 -334467334958820932750203447565877248 199182402508987147733854150721536 9776634549355142618749174676455424 -773532978344316459423993289137717248 2560796241606780621825103315861504 5703382944087546332459308146491392 -661829480250688939573017757205135360 7628064072711461345242201444057088 7746242466553021889345265002872832 -921015866972800855810761905806508032 9560214966055533546667372470861824 2844737378984658835304573118185472 -928759555722344888984422384551329792 9473913630275566515926116981538816 1176334796669388373388866927722496 -470121999918050786302367766297968640 8010706352200665990249380172529664 1205180267968165136062064342597632 -666258697067596548199548879642820608 2989728161102212167776332232523776 7414927367675888713447574404595712 -374756196469844560449858917367808000 2673503996540155963036669260595200 8077623783488472006927772444262400 -935155585707882585437198743830003712 6495685444065418193045797948358656 3608146826831133176353352549662720 -379181119099969304788532421319458816 5781944597181880817042636654247936 9752630831975561415715436823052288 -176859169510708053633815754160734208 3606960365293638241633034622205952 7339808934770081762390719873417216 -652779120430544980132621787731066880 1452193622047635844395384340217856 5559596092504627629355546575896576 -24023330300200806662492939719016448 1171253270352727685411813441142784 9898181499471023235873281748762624 -303956043782495238351390340443799552 1273966846680670759999216772186112 2225067851139510542139305630892032 -611359313990263895436996326832734208 1448899530188781909359642166689792 5930893450750544089515851337695232 -461612523353098496761452554964959232 1697576495835749692359875930095616 4102407837926545566429407902433280 -614363887983219580093304631887659008 4663794413483051833394400006766592 8769475487960479769888817655316480 -165340292022225127126126644544143360 4402660013701636489546289695948800 3274264774311706907332458798120960 -757819492765883516496851982914420736 4629506936873452859933652435337216 4660475499669639547934138309804032 -686442565047738099327358487675011072 5386787330929227160576734410047488 2214760086576379059499281210671104 -720323443329696718541453071436742656 2204673719648199589726606067761152 7932539563540708456504956777660416 -816750524111336385577758458982170624 4079325361452501844144760922570752 7950240893812065518189044419264512 -620225084948516973801862051095642112 8312173659895558742600221684924416 3567070215865121388800871868923904 -791955662793317420301693768439955456 8467299042233341671380320996294656 4331728438176036633460420546396160 -861941183398724175961426082280767488 1420610438134041015173923553148928 7947592373050422567498975564267520 -398835659580608402279909468328165376 2302837928653606635495778859089920 8161359392162521029866306341437440 -622570891033426809920927316395950080 3070772228825207372927503557459968 608972409595199851668741885526016 -421365937395099489853237843707559936 6818985769182157590833844403044352 3281806676303451163072760454840320 -806363242381938956679144385942650880 2617653630734370135151099634515968 1727755744178730521690358708961280 -449631428037074203554443298319892480 4345663527796784462215771624308736 6912573609218332079048443805302784 -91456432190915530330452583642038272 4802951280883421557846984240398336 8603215790544118728225437488513024 -240477048660771477036083136052592640 473714317263227857784525478166528 9766867124126440326735477457551360 -264975803521160251361117060408016896 1756651757442969462852592263495680 3565660440911933001340904311619584 -121879430603449368507372527905931264 8952404756307361046112501474787328 1963895730206842170074783677415424 -605759888233318027625999870468292608 6718936463434578929425127701479424 463647798679061682117272806621184 -795692548128772038446711979326308352 858521526396852289273482270736384 2133550729341850009432278641410048 -335975741118100737367109806946516992 9287282202534023387652122638024704 2034278770639657461733268148715520 -314844684819230808086394867934035968 6778194855076254259057114868613120 9792843466022369373841493478866944 -636612506562101634785786994079301632 5226339113331387226598391398006784 2455173779275942717261679291269120 -444246483293200008982211846199050240 2480201812446808430968309909815296 5397568934386615349350560211927040 -871701529296029709849815777122713600 472900702729412890213827854991360 4312667621611011329266621616226304 -995894224943107804424971731070877696 1887115595409454869127577544425472 7555053779791311044105298639847424 -709127022153865235449645654706487296 4278800181393253830985391091482624 6880939941647095684098437230362624 -328857161772287493447714857249931264 6294024624256475283256847399649280 2369410618400333746778637917487104 -494145346458280295024492861726916608 3606203181258440137645514049978368 1634776621464742729889259219582976 -307073891259099178622365778998984704 5056856695305099566143554480766976 4375379527612801364023231886917632 -220175419938762913085436683354112000 9373615897462649769621688688836608 4263579422091485429925564345483264 -933089210337175907314810594091073536 3715260070971418430300407635902464 4073173171153131221475691113480192 -621228768615437120065292899130015744 4491012303707428252014254703509504 8661387235748974631632003326279680 -622505826166526385819377241889439744 7743385791095215232784984105287680 9601957682654727212554600535031808 -694496754716270634976614166713860096 2682737893443232843342336539754496 5062899039547270379723723796119552 -635654836880745409718764117579268096 8335264399593016749069122421129216 6552347519385716768496291309158400 -742523820316416736416781970165465088 5450158190709731886027238671384576 2258430596127756310823807727173632 -590621660569592960539298630419349504 5868180384229228101842570099818496 4846596497205083454455524423106560 -218007545971345249974124085562572800 2185508237844296508628262816055296 3524769907299370436190306100576256 -784418160815510102859394268708995072 8230475805398318508891582565974016 2633850045910174005996989825679360 -725493873780149028731602968967643136 7813804495707612612001468468166656 9853709594495391585002937678561280 -43784227438340497476050907362754560 9906422569302830328080151634509824 930524002344839458051942581796864 -950318731991293780490495719005749248 5562660411390104608084462229520384 5168362926678414510257865526083584 -506132969857832344332051327932694528 8340548402332877376502444087836672 6611122355246898806952248096063488 -265848599898964863883688373479538688 3214770794889367644398657801814016 648797639623445525101980470476800 -595120987865611729857657941323153408 4461110803667318976023011883220992 5302105866602859786733007501524992 -447860864831507203719096378870202368 5890883854994228897539402126852096 3114986654518341568455466679271424 -71801029098831718634685651239305216 9571465770985685387684214088925184 6821041368538498852063077073944576 -843384206915213104711253982856609792 4858051711205440177417634998910976 7291412904792720434195895458725888 -498433126843000077352293219480633344 5422930437195920852137350153633792 5201865422351563525864495993847808 -66374720948837159010351248935223296 8250920802834493275281430885171200 7368234320526435743552932348428288 -430852539825409519204865634945990656 4387703336035178317504448116555776 2118581025101620317090739671531520 -309240691603587114978521898844946432 6352814012475925134485213677617152 9469144251515845035249453796163584 -11402225815111903602798655965233152 6660734840377396146047243675238400 2990864237283226131818407096483840 -16650358630846641171375272553873408 2468156906742003548071326038097920 7400388641801896335830978169667584 -433304005427735542381522732391071744 9609133600854586998387877112446976 6618619632882250231488088236883968 -918701447930423343129691170239676416 3347276583859111888670042030604288 7046843935629305328022754559000576 -476474535811653972753523627436015616 1146697949289121027192406769926144 9523147834278119533917980061597696 -548300742826708853141877658883194880 2616636036963950323897998013104128 6145460130690420815292168887336960 -12689970990430406384317859773808640 9404556344034795887771184856563712 4212742774190918221843823891316736 -456619642102469592824570393009324032 9787562341532242000583014328827904 9207243448111652077520210167332864 -446122244727651986363450098270076928 7858332685334315247400644929126400 1430484935576197333975540799897600 -883842315714574676905516303613165568 6797817894924503315271853893746688 1915864709186735228871540163477504 -172754223175038150223338527975800832 8182082791809206064900368175726592 3453712269279305367854359389405184 -328250681981471476365964433256611840 6311601232132965249319333577883648 9321012742688907594242088115372032 -432358586957213132156569940538687488 3194566386472103797479412835811328 6228035415305842230607121328635904 -507860562665102284049448482738536448 5340420233090378643302982201901056 5281851616225943947429090078752768 -25722917960140794916929663758499840 1107285037430329995333625328959488 6602991522916747890365133400047616 -501416200761701823308118803787808768 5818279195007610999814978898231296 3708976397867172196742746880344064 -133024678540417634153394025820848128 49809278781102934140023279190016 9524374285802926387327060919975936 -707706748197159925790374594779021312 6161093380032690384298699183357952 6471227329429071820833779120865280 -44057915544925247253436521789784064 4860027373632914480735447664295936 2665167910890648480353911620763648 -989412817585370277231371991906254848 3562764625976777790261953308917760 4536122641739653763794339461332992 -221180575181646592415230661591302144 6092693509989549057877780203569152 6461569183889649836059963961638912 -331977822969816052864366604093227008 5482341369656596165063973609144320 3679701024234373685531083811061760 -367855205990258527557169081621676032 9268995745858040687073724228173824 193809091300312124476396287295488 -209338626430782771627601213832298496 7995784970240420892255993947226112 613837771298222925805446571753472 -785111875697361343375931682989277184 1819358906355215094434982346620928 169134735272044397839710028824576 -670894937962422097846608169069969408 5708454262168147219307195871002624 9419705914720118971830609077338112 -358820516231316688744700799308791808 281683439229943546582743363092480 9717599816475448087546498998337536 -732157133414387944370515863798808576 8398053206216748781196191039750144 9622350603027716371938569049079808 -181364023492716930680391676521873408 8889122196428512835703753964257280 5430990811595551645801927952826368 -118530883663542900940184032735395840 4285933194571127856194693632098304 6665850606286729265302122461659136 -976239866493874406444539220592689152 9678973901083223438129841850810368 2468341034582180866602993484562432 -875844113490510033216416273865375744 9176031272199280957312268721192960 8260999591127015210567277366738944 -651980021918523668549042986893180928 6104184641475428893130354010882048 5774955975162816098712463486222336 -720786253256775543585810725189189632 3512951518687604106020876904824832 5086507700546762470211592480882688 -961267276651754646106080953174589440 2276680375556374457576374730227712 6511016365694760095500069865783296 -905435207067993654842109016538087424 6213899316738568412725466909114368 7177505684719168008598257416536064 -494467519068858743274500985655918592 2504122320150914861171944378597376 6882916428405043865847015338409984 -148601599852425959142098041330204672 3019469742790615970582848920879104 8067004612815765730931749815320576 -586533473242772767703736112461643776 9562237150149676110934357208727552 8843527892700870503167689727410176 -335642343534294334519602303452839936 1636461994104582757446779018412032 9095807160347948272487257931251712 -207376272455100689666494244199596032 5548048648739968610713766606143488 4052356823421856388836243967836160 -272610466968518607182740421844402176 3133168691552363176558918065192960 6515575471426412590245463090790400 -292907795983729099460381035724800000 6195509039072857890010641253531648 8987169487352950640200023466311680 -783874918693101872209925338677903360 6771120593436050300301023996018688 4815284941278139737945614602731520 -318964083287064880806204038600196096 5732336987360769164195534047543296 7928923470548373885883530013048832 -148037330594197315072239180235931648 6479873820330021925487308286459904 388810107493285509738948886265856 -224736875544837748616869758543855616 628745156506680493008915275972608 5729776517851455055664042272096256 -819497992655426049917176944424648704 1615954831193204355893814225797120 4066705772414606282202693664505856 -522735689860744444956400515704422400 7922775010456913982994423507582976 3347783468093985617973399605215232 -856143354142709138031224843164188672 4601106176625319977600385093206016 2600199801844302237663559222820864 -734740858201001626011290235658305536 7389575423695624054111628196577280 7725959449096836600417462083649536 -858063226913636932535757878765551616 9371465919329986357023790988263424 9034210901845402592862162319835136 -333180135412523824877576558376648704 393615824258906751919698669993984 8520803471348767398848263528382464 -172850132055197371868415631248326656 8324519674485944294026738388697088 7844197524660745256786778130481152 -924140272283143775293671852384190464 4909721476637543185396656995565568 6317644985543991418081610441949184 -985817452107785793920859485203595264 169119748423563014811166814765056 3819632586108636589380401249648640 -635086175905077863671027181144768512 3313089876514262484513009535287296 7715198126869479145591375461875712 -187242777218131012400081896491450368 4898746666943329110135543158538240 4788373449264610801479256419336192 -265318584614468574173907816250605568 1894718325829216784777606556811264 822242333636318667549147775631360 -854469519953564729935188377697517568 3984590468080172698679342184529920 4608422600771299362002547882590208 -118255268982610175553308850873434112 2352521378326510182203504138911744 2229243746626641686002247567147008 -227865186444020185587207321377832960 9890944174109588019668357367201792 7467760416695261846043513566789632 -258502971041886993521964364549062656 9792789221476700206862037455732736 3525546753993684739302923710758912 -707539888001569367025859010599321600 5899558420677666497125397196439552 3486033743644048806020298464821248 -11464891474166823430674482374639616 8584386737907297953200589269630976 1410575676993888995194156798181376 -570168171403055430010608056352636928 7550955885533631071326381633699840 3506652613137960129264248808275968 -973411887078656814116537450566254592 1007782932780763937971436154519552 5155057566295807576559362259288064 -925962310674632288454481605596020736 5188593088839111640433225248014336 4832210510200625198747693279608832 -715566999544781809283812679609221120 6364408731564268708170231479009280 678881373245867678333762554298368 -530914590537901756033926716452765696 4351935535949734290683383257235456 4642585437869141424904007720108032 -788047365753747696530774503119126528 4841971779776377681504599361454080 4629303854088993148108177296850944 -840191019165746676609488687896461312 365752477549090646929367300571136 2906445922803295783543327032344576 -573870503882663284148886410113318912 8934657157675278189363585859190784 4336487442933478663459230890065920 -35335262691500647802113344873168896 5317353581609143381187905290502144 6746354960955231560879089404346368 -671690068625174284749272415591202816 883134634924938439127559047217152 6348092959048602118914047127584768 -938920074867753853266672810417192960 779636323257462523461200137682944 5225249856616953240908709612224512 -452813814681482196101255702805217280 8394311680062300879516410333626368 1909910597381162884641059774660608 -221425277908616037871241626977828864 2481262073351321946949030464454656 2472014225794626412579450425180160 -461999159841145051118202477004980224 6454659272263079872624490755129344 4597857926346003220165752535384064 -287387311991291699562048719144615936 5830513398609474140064014938406912 4447792648494005989327983154823168 -616539991476471069452216647397933056 2202002481450051486855521783250944 9303123581997168099033358129954816 -920369706363313600366476576235192320 7844505453868352949168661740912640 1233808791764385571052898417115136 -648597603777877053984754118716030976 7458788159116191593855986664734720 2729356067866495338533291783356416 -454587812222395217190433534301437952 8283989963765624278161426841862144 7846737464290700958487351054565376 -816177668164481673043798972199600128 8294793973045753819895493243699200 2630695959490380173433124234985472 -709315904432407338219259344751427584 4529242117367464671823948305924096 4838586082984946512710044169011200 -888803077207424673058418214607781888 7126630720067528084488553280569344 7240941245930730960307631968747520 -85272635986862620976998662377832448 6055135624479004969009558881042432 2735771515470702311789581316390912 -985545680145390819575412100106813440 3257008560349306353677163948933120 3883922602195301961904220075458560 -488987686932547253575507614474698752 7750673472737216036901777458593792 8347822219256781564762349239271424 -947755683307595157075925255554334720 1171834181460437985987970623078400 3288890096171001445241322513367040 -907309536801915129225015081195012096 2858911138791163425822387912835072 5959361084568831245239720402223104 -550189163694926818024545293260816384 3373054303864415408426154935189504 4638776457962767954397429185380352 -560631966525441395634448470930096128 5184874903348693895302624265109504 9793712246129287203744082831605760 -510334992552431538835391749554176000 4190967375414919853578267297579008 2419514233446356245187129900007424 -555496527369174955763253349258887168 9669229661513771737674292194705408 5328772394639167098612095626772480 -955706438000365827289039601238278144 6826604186456208877860162155577344 6741699896855571008143150142193664 -685616413860336696542347191027499008 6868839451297024094054273540685824 3618902527645132223169453092765696 -284657390387032590075004209242046464 4347571530712773853098663160578048 1161089298296171230506082084323328 -854397173892769349360447313644879872 362603857537874504462951021281280 5682759208441489782317991896023040 -242350863430690951630804239500967936 2310789273617485717047474806325248 5878263450783099916517096491581440 -152006229167708291348382045830119424 4381815178220538491019340567019520 3618091369236473082431342158807040 -59876797333821951982091965684514816 8750267481817613983553539708813312 5206465081386033570390326693068800 -15881651588771019575387977177628672 2072519733481865471974547914752000 8333435435549553017798107997405184 -952846325942139658273420793824149504 1059009087769729645250709295202304 6022792943200186487882734691680256 -568025248100347048021868427121524736 655518810563634976647200194428928 9766100243123680561121574913048576 -700823586369601776965037546369187840 4613890990762104921293183510380544 6250472300763994856983477232861184 -927446164732108703725558235266023424 1262866680602626661918503396704256 723228178196022760722433558183936 -29170618269319682277399537695850496 9361538588115216860438269651845120 2551722249241556844656232193064960 -748169899238852471629828037898403840 5481716396059786148207070327865344 4183478317957226410221327360196608 -16701001420730069574026625789460480 9765841085948336027646257929388032 2280005784264202497536676979539968 -206391565743601682887737915901739008 8894505129430665189037620909309952 692856657009289738252257375289344 -662886324611246167249272306160107520 9929681203536936603187654248366080 9865316328537935431851087799255040 -531762882504163183601927545325355008 8280150159808309840911798756179968 7768731964762162166644819911245824 -586824230600871212846329787433615360 8361067448164764127479195349549056 8484577155406601528530929765580800 -425150714830074259276212579801759744 8678479532583754090180572828663808 5980945481531414695560726343319552 -347522271196328277064032779562385408 8498988498605207230067076277207040 1497742186997529566573013537652736 -800126300664290435733886969189498880 1154529576148795022970139275427840 190098162070349903551639203086336 -640930702951899290075706726260146176 1710465892328303380816409546194944 9824519412335652942520342057844736 -630558749910824981280426671374073856 4580743100968014882773154706489344 7993505678389564045143892840939520 -602929868762923078999392775699431424 115735418095362654286856606187520 1342079484765980202127540940177408 -709914729001554049001246847907397632 8653248671382585231967839131271168 2421274641526190076281482410721280 -758411992143224829298754521183289344 3560459661661397499172982943121408 9584726425732989650899010343403520 -368183032872630239495615275943854080 6585063686313790775244077167280128 4365484194782351157145361044209664 -499327243253529000843667095540465664 1964733363887619617026724081958912 6226964459628048175911383706107904 -657966412490905643848579776304381952 4248014770154402871239485889183744 9807583096436894215872631818682368 -644330014907736562621648884362903552 8303626565875444016289420939362304 1665527318783351103884468800192512 -400105843550862724967649237769650176 9531635387766822566277667358769152 8958436830953240745579808454344704 -353965572666964833367075502547795968 8959559872851456254945934520090624 5847609553029240872669976863965184 -466106656895723347948371236832149504 4096460736784512061975174114705408 6270687958112806143741143654858752 -165581168590702130101505221099257856 3123531683857758996192356569448448 9897860440887853726566769261281280 -168212815692242730652395075855712256 5767509584839216936543894785490944 6434870226031224435694360984551424 -925411027797555420065043630151172096 8737935209068873007134340118740992 3924843760360055524366454162980864 -817951291372684744295494348137562112 9305277704753292003801283174596608 6433960840418495752419967359778816 -43185445504634272880715867485110272 5481803225432354121585577970106368 719455491801580664892193169735680 -7070486214851199211673568946421760 6895723820235618850600121899417600 3395113052437968814625090539880448 -489845540909577128120364243246645248 9271240919388474924477057903624192 7008585606591743308072708235853824 -452901446955419693933939613954473984 5333482133118097577166296250843136 3268924037168493848508129341341696 -96193561177669730332613807639101440 7468957109439907537794009311215616 8908600680799945739889011815612416 -559822283905057182368304330358915072 2359307585282609156364867217653760 7931056906816158320124931206021120 -448449985538849283535940550710525952 1232283739682148764805307048132608 6280155979820492764645311452807168 -452271766867787949616193876497793024 4825355979063959485869831003045888 2226733292552226586125930963402752 -101798787662652420155084385609056256 3645723748720855453912291180806144 3460795865674514519438134991650816 -427634489891735467786027618967486464 839908867104322237844285686808576 6757108881074593232937322425614336 -329978704176926290085008887160766464 7405257626254429867980350786895872 1332459651321019887375415007772672 -291462556792145032089333019850047488 7008417328319663301436493856243712 9397658831097861394260970291855360 -835045883047694393643656625810046976 5798168792392674336175115634475008 2821506632243941533502232172953600 -815207178953337883539535467439456256 2220062760274461868179991084138496 1924514237998811792770603826544640 -930413668735595521725008140614762496 5960523921456235523134062969487360 9031184379285262757726849085734912 -531418141411480050081219412643282944 5139691241501852122116557501366272 2995590813822749842653018517929984 -159916965969199537767513979560656896 5969712900859620918450955244011520 7881415341388432862779353950322688 -92884031196700840962265817479643136 6176156988721673947033477847187456 2649202387766193867352242810519552 -475633095956038965537739961660342272 2734676816922978623037204762460160 5561433631385269732261965737230336 -19069675639990834589197391492022272 5870335074957469548399572597866496 2553758908915684778148000474071040 -430887675265443872491581351384842240 3563709985778650861610548814938112 5976721489442540718363381933801472 -77856481367462998478366894523940864 6084817481399311274073497169559552 3666519399202352316734628389978112 -10568980215104345172470101029421056 8630095132220959798446695391428608 249888350493596522020295705362432 -452520394358973468335679785970696192 7741732303276467140171477987360768 9962307403431943210208324191518720 -371376292702812444843114481605148672 3645556656991804641584034879635456 5071654334205732741319393756053504 -143884846401532600033911971520708608 3904670624297797683774396972400640 6519402190502135038550091510054912 -679137047472584284910776182303096832 422632200377753430323578470924288 6167760191259785706506331279589376 -588827641735344438206252187413118976 4745241042495921077562720980566016 5065992420259514078261649757700096 -57359428178410708152731472043704320 6575130552501392666996705601781760 237533160809600351931072973373440 -894922176747399870637351931127791616 1010964146776118913841866890805248 23914296796750889529272883478528 -808854491243735562295409216654934016 8955503934960622022075627058757632 3820615286378741651171002118307840 -449317347241304471061214899170443264 6445991889114229800914809830506496 3854881886158491067563586925625344 -45179854217658051739742039852449792 5357837473721017319468307352387584 4740839618564230951631837005348864 -121663325428283477049220198708543488 4103719316606404866956452104765440 6535549305510912667218050101018624 -772461863883000393014469858041004032 1042666193783328933626707200442368 2656341562701842561029262752612352 -478614891065276954827769920310214656 7156229520868929403734034659409920 5776418031334550243924870522994688 -166835220761610871013478909966548992 5678156852341559569572944347660288 2189456852478975299738901938176 -832010676052964859430983626557227008 4949781632829784116031534852472832 8871053004973674256548291533602816 -649522125618649109315933103733080064 7098921463088281060001386313285632 7480680270369587545286244277682176 -219425489270781530978874303147147264 260029066373431621839972391190528 5562873157409594652847276214452224 -84679426279271393188286766700822528 8542157954147045544997836157878272 4224006117553420355676255285149696 -953478366437251469889631934989991936 5794505623575404603481112409276416 8972677484248577991668585818226688 -561332539037954190101374973801136128 74486071015849537573616883859456 1531445088308355066814382383038464 -352164581036285743953025712923869184 322177871110318062270363123843072 4412230152482698883680404682833920 -107453684375383874240489695026872320 6665024493313905716587904345571328 2518349678304472226054474620207104 -224719303299743418924739943087472640 3544651961527834755771934781210624 5228943752788200808774766379925504 -855157939860967617044048456819146752 7257804994724302437479265245069312 3172193080314622648606436167254016 -89131233048472302033365676660359168 8653744368046144707913916809740288 4396753042133644635244614308069376 -65648699832853909044119772891971584 5614305915130739873051790748418048 1075832751483229156134225306451968 -426897161146973698737388402914623488 5313130022406281727743700896841728 6377140679644124687976991400394752 -85322190583646790695057329152327680 6683955131836923581431733978923008 9788802972441318816371459833724928 -613241956210505720274830131256623104 3896652534745042381814101262204928 5491323569800143610385975174234112 -318193190968895969813294950750617600 5691412848144496086158792080752640 1478772497985100209096386855043072 -996992539755791322355155408183623680 4865350832120497354992984113807360 7920732115299138773019389643980800 -655162816946123390883452276097155072 3739234806354928074908600413192192 3133949936176078708343650207662080 -877934301957626666359726038103097344 4834829249211014734841472283049984 6212003543693581980268119575232512 -711419532594120446464153488893935616 1455034656749321285729440879345664 6812702719305434920492467182632960 -679404713104552975662345524881653760 6494183995110394756812633618251776 1056325291220553299729238615654400 -981941150610071732492738593181138944 6919099481613296631855554280554496 9091443637147582473793462274621440 -407418594934587518666372317567778816 8621846778500991289016617048997888 5100950821108057611139042125021184 -300993428360140820603380084953317376 9882465573088670814191513348603904 3459475492834691013595054393524224 -151158823577891800159189526175023104 7563842566490256852053851694432256 2363459305013796901266149448089600 -596972864588133648620222843388428288 4392675326304203370406248085192704 6597788413469921752395599941992448 -438519512266907460498641057747042304 2704219339844731370798873514606592 1344620847378644781979655995392000 -852264734102823852897516837058641920 5507724851507459591494056523333632 8749435788872982795904850103107584 -214781202406208289619930483527778304 8080843608982399130739112811692032 17778447259312231140744537047040 -201386690154268192131990816372555776 1281196132892731521983500601262080 7447677118684796810961084152283136 -850628058383650153731279755935744000 4645622144090048894793277973200896 1310036392693071820959592201846784 -619159243526265654733716728448024576 6602329640289506987688098327953408 8512482364838715769940881434476544 -511215725864102122789918141715578880 7311121515192848033518406917423104 9801658898416267786438539435048960 -691753350332362146544498256352641024 6287280611555114681361201272717312 6621958992243697790203431701446656 -560768542441768347788022125514719232 4346328663251952203557743863267328 1543023661632889956983794344919040 -300141088183871643137520313145753600 9535926736910660133652318195286016 8598848989940535221528188604645376 -968925371337338988464417320397176832 9237085022280713540554392680267776 1532381233179261691888272660234240 -51704702761990701444579030900670464 7614890176663264012304699327774720 9012464830411764858094069571649536 -675240951338256942822159909931450368 6528379133049078584600863258443776 1221936487086978528662993059708928 -428754951773425639117194337774993408 6328323305303654174419396430135296 1277593328937349667514385480810496 -484748264075890237576225446701301760 780098916272585084053171650691072 6179369158801658786967354391658496 -215806466813056968746580439386292224 4639601869481570241991205250400256 2908294756713652041286351272804352 -548073960152535741444649951409733632 5899438103921226411630657066237952 6752333312929394073079338797891584 -408958362061004339968207635370475520 3909823285423711048183734484336640 6345031240531625635597866135191552 -974717897499142566611409070593146880 748740964607838153509876281638912 764734524125636301481624580653056 -580210088200145230407243844686970880 1950429696211315140927053348470784 4457727516902875333795790922448896 -93453681759743959571520663991615488 9007085316003758560628262645530624 6974657795407271342973406431674368 -757377269546410221929310142072881152 2738616129876141980188546271543296 3949387444100068644094226676580352 -143197516982041012334700956089319424 5192588052454383919606529527906304 3301225308529706556473496966266880 -168093730745463613030119000154046464 3499019773935131454500294574997504 2548660707252239807216017047814144 -782405235360528524233410872084529152 9737871168980338124305757401776128 2927453792773721106561686092906496 -940159656966449388249208386624684032 8505259561155430908576667308916736 2206044091056658457492973336657920 -391846430317637641322484404058062848 6706401835534888988040222407131136 8120810985908685081111329010352128 -498729455047209699008478909860675584 7187268762617262029748138667933696 2782713836987053733340882109726720 -410843342303729654979050848231882752 6131430484161492772891375609839616 3074590511202269385468503960584192 -101939952202929419332476637909352448 7694599948520519203571351880204288 6459120212150893705471733635481600 -31041111879786362894172750851604480 9400540121302452379741867147788288 1043699237968359873564394267869184 -266978532085718657726118801541431296 7166095418898616769792107259887616 7163139071731154693962829370753024 -321434699596195079474710451490652160 1115012151003493349592382541135872 4928771001225266476128937827106816 -650428831997559287364069560489607168 1712329574948624202608907867127808 2990981752568217136068187568209920 -503784318311910926218053403883339776 7415449112830377013452634740228096 3940650396671054293500322759311360 -263468898992991098080774833311842304 8708353231065997295764806993707008 6534274702128954653204351473942528 -381020937073221437524731629339148288 8488066648612469073662643839959040 9761116182645049213629436543369216 -307349848067459291136461185602289664 5108389249060567500823169662451712 4476957347082518902322577377591296 -123357275986347660205155104864600064 5605961776518007151367531414945792 8603874173298300853451405528137728 -841589744282870047170010872358633472 7549235608632036930324646542180352 7402048956047498040890018240659456 -231868088714217273145634399591596032 6654506658273867358823110619955200 5597472439282254602874889615441920 -134286047175447706694860001899446272 867753604216148123089271764549632 6121452225641628581690573171195904 -162797093335550603695032108601835520 7186034473046030893217711088730112 7406083680919433524510018930475008 -148488198317779058386668010795433984 722557382938353371984029204611072 7467412179781753864771542083174400 -467882671641621400775739927766761472 7464632909953572638645834890608640 9277235021181359763857053526786048 -167958445753698406958715436582043648 4511186991733670717896846770962432 8340510170069114038398357761687552 -604729458138346882687215530493870080 2888804900534221385795357787553792 4475981393408571715133292926730240 -906782869362139385423294009498927104 8313471336821754959534587478278144 5182800304554098971648073932996608 -658952434662098270701070829945356288 790206978256261544846779901542400 3792814052941134796888509855563776 -470416514113933408138713661018472448 9801307094008656161214640519380992 1430883665304587916787337440264192 -70841465208669785370625614857371648 5146279982430239611147285520449536 98341863475047389083084148178944 -321716395177098265072120597839872000 7668090044566433992529015096737792 4110622897656565921042236560113664 -634052708962598940822100848444178432 2696148328979641659986085530304512 1046919755759069384412718455324672 -932130316901830849746156935473790976 6064979310079874939406373684772864 1085376006681447898529808819159040 -837968495293615128430490278455934976 6530267872459435077265763860480000 3752156697082246332629382028328960 -756535521758526130034439534371930112 3546437494018751141852183034593280 3723799908731077055944612179345408 -661936082580028530765452765256744960 4361861424263117103397753919111168 2042552965642781638409554038358016 -732506764933402916743444729197232128 8790801733262466227581650026364928 7697359543479929324003338775166976 -307539002398171888836115417347915776 3539513935643298812736568186372096 951373921947295636616311495196672 -555595842679668414151557148974252032 1008514382991206420307262438375424 2081917083946432224550220531236864 -771539159885630700309223540636254208 1899293525121682353604229609816064 1952172925384892907479191234019328 -406584883906037365938069180782739456 5213325631485342375784469829255168 5858655698635655777850035496026112 -777636322453275916702079080464384000 6508872286856688426135018402742272 9092434846238017927737161893806080 -672275415469491187216842710845489152 5879160350166470457645762531557376 3814560653957749716362995538329600 -123668238193867501319659320648925184 6527694179930013349760504910839808 8343223062177585694229308433760256 -205123790641219237590008821914271744 2692377724132161374152772953309184 8799610216353056681040581727617024 -702387782761902322656878886788268032 5655932999941369053150532742414336 3024831002260149052052895306874880 -25458755984226132951654370375630848 1146558303010205540374516600930304 2655861575863663556475673945047040 -89953296615628616947213336487919616 8946248108166570686185955838132224 1405518489146978926121986964848640 -506938857915134426341592060510863360 1628736882247683457728099020439552 6382516695627286885887511558619136 -277700811635756753144902991904505856 1178499476060276466267101153198080 3888634003149033143828633863847936 -818878136970706892836735194920648704 9257928760206716812585871421210624 759374620173753620125488273948672 -508457695596646281467342901487861760 6750449900184898718239299463020544 6345743437997876168964484859166720 -758865945784578061612966465710850048 4020008645054342759680271232008192 3513080296717993767235504201269248 -186995687398414033640027074653585408 9306268477905301263234498887155712 5439659408915135651915426907029504 -655191783310621779567365516060262400 8373777911449312882023714604974080 811594710550518882525101460291584 -809657737951492443787602118666354688 3528081646287224433993514273996800 1437519015439367491909211081670656 -211159847911210933780316869760122880 8471096793126846084228838921863168 5232086723758353803135336629403648 -23022561719936504796783028538966016 7150219678570548364412107840552960 3821130800706197467693961298575360 -471669150374225570273793428686897152 9661039064578167711905382012026880 4811698260115475755206281342746624 -442128132487415558578981710598242304 6475217727744525614191786997055488 9829701170625062395367792022913024 -461391310610228507166488277848948736 3999752944067013878589704030388224 8889576220711285919096513128038400 -609371847103715400296979471693512704 9641612004810490612709287639646208 1682194946305422276172850632065024 -655689094103016090879640586860625920 4682632090107629259967171263463424 5835903874910554082794856096202752 -63120458726995768655828826921631744 1742702044790495660527379707592704 4984569004533596706982822477299712 -12089155901565929261376148330250240 6778595144477656977996450097004544 990909212190810325901588106838016 -660578787734662230084107883190943744 4732498603798145862709008272457728 1354440954427590234087926758637568 -580138424869524262849149173959229440 7987795150468273353084949053308928 3929499443030630035464283263860736 -430462493537149112733754614542761984 7910749669110062398329224735752192 2568460950212649092162825324855296 -665352318406203985391618836976893952 4402348579964358109015936142934016 801554621140303937785524446560256 -237517275329549062805359284809891840 4725690707891375477313578729472000 9937833968810477575498373686886400 -425822922737652551860831997919232000 9717148282050362303790557725458432 387239319685711585989663117017088 -371742117976666692579736588308709376 3657735702729590845071114066984960 3844087148668932033471490853699584 -458106856889895890865949967866920960 8151651396954419541870815014289408 7983791265065332704960500729905152 -520126735762167946977369356626821120 2042609104446313805528257485864960 5518128574438600285046131587547136 -365705571352872519025862533114232832 5416863257185338741623979035852800 6998724124961921451432083053346816 -12493351444541143179024971950194688 1789190432616211694585238777757696 3565155122454896843836763892875264 -167215905010557806446457793403682816 175246700748624196105065314910208 6213259942735860889015860833812480 -921827821520163663037311939640295424 5375977316500301131766794089922560 593334536645290319395296378880000 -169173695812229991147568269216448512 1396721939575691221047021056032768 8369801841418086639128938788421632 -883181423410861330483493299080396800 1010737083233839097330466551758848 9567659933396423254223646737039360 -111819372616855999792799586315141120 77066628361268351098036445773824 5807375957665275708934136998658048 -953820472775472074243754039871275008 8634644112599662821240424659681280 5802346483836509326278883029286912 -803593272366057779053886876487254016 1568277194172397540609736000405504 1128980815547835530338870822436864 -710074203107379115190574272173047808 4660160137673915732548940346687488 5525022737850645961241917583785984 -376418686845175973778997575835189248 6485003117820814033331265944420352 9648230137649870883902500619943936 -14462095632466359738484055418601472 3582883981059497398480898334130176 4895258400273832038638292217888768 -522217559879070984892067297527595008 4507593120327396308130214082248704 8629934604455582555632863396495360 -523295357609793114844386960722624512 4059745691796569252482655721619456 5941429419456803968209902748303360 -493353292518468989886977845558771712 7025452715671643254770860772294656 5239613674238344062892361174220800 -703096421174087861894828245672525824 7882630315251038373961176100896768 108938051195652725712192823885824 -400086755104488267349751302641942528 5631026599051251825150106898792448 1049804674817995470944427392892928 -801225264926798229324376784119005184 400287294430371766311318311665664 3311618154055084135605919761301504 -254323587835040576208515395433267200 8122348005398742208779969569488896 4390356736762817712218308247289856 -285786041774446850620279812228382720 5748210690635845011097482562633728 6450797553676856298352312057856000 -567125337556864416591640001251377152 1082202650651195876191461802246144 3867070137670004987357101186613248 -971702844293694590161508891011055616 6016311073382304151577325551484928 7810934098326836880310469786599424 -383385497452165001798964199970308096 1390577254186107542461864789147648 7017201993366240293691972000940032 -57277115718989757153218929323147264 982034271549814131958118122258432 5521105172155975636891449421725696 -818651259060689710387567112983937024 4203643006559384739298418146410496 5719978679934950580843777169031168 -237719749583882080182628445409247232 6371694434461094540150514686885888 1704524183868978417208590709293056 -316985239129500453433619206757154816 4454081794111655925115524093050880 4482176978475547942311255710105600 -750223974023525396620295951356002304 7040200956260075837066505994895360 7450568778235053030579421726113792 -55567269823005200652966823314063360 5648339056223171441337214942838784 1875704701704766138795107880534016 -352442398933360901425707279267659776 3200614029752434467553097287729152 5105586225601018717810989757104128 -66284334919592820637978437988909056 4274692270845222327674194330910720 3921411015371392204212925550821376 -317939576756050038367276790230024192 608769693679909672260871506624512 1862554873954114320952573349068800 -266439847761981934597422178006728704 3779222469167854364082949488377856 7884499832597321960855637212528640 -276650444748199879463638562353709056 4198503402687359776659724956598272 4213929163606742623713918780964864 -996053843355040615562392503622565888 5661170309143515037377624006459392 2474210836104773587745446182256640 -204604130353291772871709377035239424 1683965924833871656619125768192000 4492421067041044815876904886206464 -993192490212648496869876669119201280 465387550950673140328830511087616 4969784161871882533317032017920000 -903086951020034445186023780457119744 3359999243282132849411814666010624 3033155076007868979408359911325696 -607280889110862430230113972710801408 8347798141801998472620616106115072 7658008982781240391382285961658368 -437913891252461043846232642273935360 909365069793531933621456962846720 4977658271628967312334680022319104 -988937278149268867636310452159381504 6938761450678702891563202134409216 7773553652368132992248277920382976 -258348088320019799409958532679729152 6565567482691687851901882581647360 9189819505378826507654702416527360 -217575082279023743575379595845697536 6922569870974926789682978615197696 7611359396416241005478842866860032 -5138547024502797376104213025652736 3853875502930477186144717634535424 2289883651149924574681202883035136 -528394661003555459744005119314755584 2336939211294118908028553229500416 5570392454079845280352914383044608 -516877701954074358616682653112336384 9066399763565859619311529502965760 822790134990765608293203693273088 -828355034464144384535748303380283392 5413283893643362316650126627569664 6005627099924965759975538319949824 -84716513598917377020411411378995200 5728377208940893880991006834294784 8455180769668164800532753869176832 -256347016122838118634374126188363776 3901381724018703127292092449030144 3537037343530950274157707175919616 -512228438027867243668239673188155392 2343882984882753415148848967319552 9713579617938279481150629902024704 -82631880797870349112581051715158016 9627617170502965174648740404789248 7089432433965265906803233255325696 -226440259452799555909640612424450048 5363667289912911185540904636121088 2871852816502262872031361008402432 -942951853946880207737899298618081280 8309810803709711632117907238944768 5837852044341512532399467196841984 -1456488410088646138887736012046336 7953624908210019330815282510823424 5774042381962197426229098848452608 -927310350061495203630841690090110976 4059626943870380609544476638052352 2490075028097186525326001030823936 -456376126479259116462251110054232064 243347185741216582119985048977408 7948165086951564978106116142530560 -100160573357201886810414673576329216 1513589259995705524657467359756288 3875032447579371584931175256293376 -515341145731484320177956122202734592 2516560892985629001309289199960064 5610815071063836288461766794412032 -410678297496469971667638409632940032 9789766754552084666702006964977664 1204045903412531164109037474152448 -666453462424789727254987689653436416 7508858684327628394036797850517504 6268256545963325097856901171904512 -892614546785107307160308362430644224 2738205263921298276225609849896960 4212775081136585422402272261832704 -66184605096020127473836098970451968 933715188136575560014271558451200 595590883933188385663018998956032 -409564471193925991529402004183973888 6851453059292617253970514001526784 8538379012350280672807730857115648 -745283852448556305827129171696943104 7397231488395059508333699382902784 6016024042527420709001767661076480 -923446682997219877212508550202392576 6472866359982314886462803523141632 7137716488792085952400522387390464 -160277715720372692949348782102806528 5209205526403040741441344832012288 7924455305080219680919133255368704 -562227925368051752354356673913028608 6282527429313981374586858915233792 9118644319789452054893455462105088 -483836142197007042732886763486838784 2537395174884375673676956507832320 4620709151608553933643320175624192 -807723253562250693355557299869974528 4053844013161911242542064599040000 7583572086004552965080797992189952 -323926275565636993504716225186365440 848135217207444548365940361789440 6745556647936073160328059407040512 -359754204584894835020870306580398080 9442970354604267729357305811042304 1477419534213550155339566856273920 -88170638315497825942889179507589120 666551206619379525365194911907840 8573631439299196654509691024441344 -548377769522095221725773999430959104 1570865611087119995722879194890240 4447397655078350409046323779076096 -55759876894308511427796236769427456 6814099734804645470663506816663552 9362912640581004709307568103620608 -899646811466812265334767944732770304 3942452606112954299512252654419968 1490365869264818731776677150457856 -104438925607103135866782715803074560 4566793540267909080524639633932288 2819884321531450993540698086572032 -628458493214156054056387324948774912 198457293636391317433565304586240 4394449533085288720178944327811072 -609754329105879977488050667604934656 8074213593222509933661361058873344 4720864269300686260668331404034048 -23484142212751631369031687379877888 3230134732627424366447319245127680 3438613524545504241984826565984256 -126505793885086992927696658374852608 2252574413726344097569398237167616 8786162979244616303595273825812480 -429581306767357306860045874470322176 981783250220804157855488106561536 8761028716505248766159157387591680 -824633805229594385214525936603496448 2064660988203870359895213101547520 6905703644533320037139389190504448 -682026412052453435629475762926518272 9782167484168024764142323291389952 5262623252074763254216190093950976 -298381935818013512642757592067604480 4669822813176428563891206674710528 2505620220082301240041523376029696 -580561301550749627057538464575651840 5943352974140979241815402497441792 1223723177045008438054449148067840 -899141170087788917585501010379407360 1846497745897082474192091519909888 1400431854133668900538621481713664 -729988550191788070045680449257209856 5258676360485944091960276833796096 4469029252190535740185257533505536 -119846583070728078672875956457177088 717405684281430524840541174104064 9925004587176907320732892675440640 -112938552624138897160036791969906688 384039838386245053452975788261376 9930224602305368675179935813337088 -657524030090218900543531569398153216 2497888513581613506950105202163712 513043856732739274770582838706176 -216927284317276281574140755954368512 6392095601191235201677976911478784 6102288423178788986003203129606144 -207117283067327410511068241799938048 2589363438072122373094823652491264 1999896766353780189971868893052928 -686473379310785932013917249912963072 6017653362299250319417232418930688 2062146180694022418174530417590272 -576969313828356027172850559898091520 2193127290555525400748358908248064 8506810770791198803758267813068800 -957095819788356719619959243627560960 4645338752850939629019870552653824 1358306103817612753184155672510464 -548151856664321830080279561788981248 4610305950551361761039129727991808 1811737808881966709460583942455296 -905253023399159140626639341240713216 6089572120511667573271951235350528 252355196487803858052360779595776 -727052217919077591042987691926880256 1402098095301569394769376955072512 8441472324517534961086148103897088 -633739375917440832231579890846007296 8608732152812002131487381147090944 8496848048621468355909827682107392 -753398755751855737388041411217063936 5975865579300413921525637274664960 7737837606970669103387594283024384 -421562575346233470244148102545014784 5734089052386491243879158356377600 2802945775185774598194449533108224 -635635838150199889254634631420968960 6987208846951998979641135448719360 9251968666223441387138726458556416 -230907123483608117790047950285570048 311142001205020031134018566094848 4332799407667681328821831234224128 -107054084356377721189780762965049344 6272519861766234586285885244833792 9990636483869796830221242109788160 -815786119635238419090122790662045696 3147283282353235210397617867456512 8681314761635394455022049882537984 -827493863307413536753451251940720640 5248421839610348451992977146904576 5590457567669309015888994972467200 -400751229274858657314254852867489792 8512416552038712176520867690315776 4871666248854904581556666393165824 -629168879699423106455857961700950016 4299855144054878251038591265275904 2964012950470191868506245037031424 -614415699936812793395588909699694592 7506094633130994846905137237065728 9526907868676984846860122316603392 -182618660093012570345913791593578496 3558366439454963516547265202225152 6180976791227016755471068614885376 -795054033690798971547906412898156544 9049102790618839395893212348416 8844806402818396376994308291559424 -87927317913858686940943217967759360 2265668375898083731666805811314688 9058605840991173275636063228919808 -945571271002839344300869669684772864 9669285869386563160959260154658816 3255179155710801634894501191352320 -322083143637887017297680290182856704 7389985850659629422188993731100672 2501673069082713599768835146121216 -363885368439899380825067396106551296 5619111770034878762873941101903872 6818364297062603238446562566733824 -295680105546774128496442009775505408 3595629080037791040871954695323648 9687580164108971297580509892182016 -887774666772510120817630550941499392 3351882456854349328794204625698816 1255501633324340121426572559253504 -697688979258692969129903932171091968 3027444684776883274707669490860032 803633878879266752184211375915008 -96207049332657941738767164450537472 5535251339216590253671484269527040 9927850566257234245716592878944256 -62968031953388653869904661118451712 2395316385750101733671512490115072 2789305990404762419028743883325440 -406783432176410028440325781853306880 5070010073683588210671990274523136 7554211577758299799428837182275584 -653281562106031369343361373238722560 5063702114312586823528633801375744 5106955094196073546042349663027200 -177451197939491507106520259905978368 1375497080661154477815141790384128 724724796335631059263274505732096 -747409721374856484102516910501920768 2539535271812795944312649560358912 8618213277871747327924890710835200 -153307966566663475069314427200208896 1061554377036639458289788603334656 7626649842969264208978340432838656 -354398050464260179600529951876448256 4999212564465098796542925169754112 3942560963170598980349561940213760 -34333311757360849400365429393719296 8921123270774342578712327749632000 6369452090029809512401982193664000 -464486007935348264191604580807606272 9317751231000341707829499257683968 8388237510911057504268717087784960 -932524470435325446648521993769451520 7328626021134483183415732830470144 9442144926219201506801265093378048 -891062530597992189243440483553771520 2235232776507818207881864010530816 5802457900328158041403651285581824 -976539266815817830679030800882597888 8198841199933382898359806797545472 9303901678198944552257391308046336 -227772778299647813460868496365715456 9282442941524923954375242203267072 1086203713059812173872035207839744 -548562850337536405368277890582446080 2553260482902347906728690781782016 1516263012626830067121628685271040 -281569589797875811368021911429709824 822043350981350196374823074004992 1130986976598636360513285143920640 -819852154373036677352577751754735616 1158512739726668705436406588112896 5491561415655425917256921144885248 -873242574926974171297702132448231424 419295386129397967693160334229504 9262373301024780360724292818698240 -370762879060607912387308777585508352 7955810532051802567838480279273472 221093261498888084247096107991040 -495012538709623335422714871948509184 8706984608067861457806053599084544 5136521006265836023510118332104704 -978799072154098940937008414629822464 7733121620798439900546018637250560 5260415669110102205112317110124544 -652651128442836898578944270278852608 3643408040481614038352776233222144 3932627189264409915159128366383104 -468888454864140906838688928437895168 9943850457955640640014781631168512 3252005741372730152717168429498368 -161153700151811911348567006439800832 951946007964299546890816035225600 6301133223790514718299263586009088 -563246084932136520685838811621490688 4390280460972599623847201667547136 6961013279560217425564015402156032 -885774503031833800133077713385684992 936077011179974424778848763641856 7626297263381759867539955891830784 -838746169952109831672134024172666880 3465325402967515362605829711724544 6805040787595724373830812620029952 -113351812544057357235287427762880512 6848032709941174380063395533553664 5069177115813446768766905319686144 -802227231811111260044755557794447360 1519365576141707499646028072615936 9629565880278339884711082828234752 -905695371139491797155107647879380992 501735143065856823513320563671040 145796804202859996064825298911232 -951678139727101638212294539667832832 953738574089845584533134868742144 2331968221883226891203108398956544 -390353214525783723959067635880034304 9967642311954021533675754790846464 3477245039828212030212554532847616 -850794835153558625320949285130338304 9454516329288051731310112329957376 3311493829209501724490613078884352 -458251609426717226436507572784594944 7710127082013497953886688075841536 6666790865100977195232083937591296 -954905302658370362960435466179969024 1438852407143937024827618421112832 2667782850623869481653343566692352 -560924682197974733118927879524057088 1724586027764251667347845630918656 8605315486122090313848519005306880 -418199631024701604118559770879721472 1437565065830879325027668647215104 9875571662982565874497814540582912 -438826005926389260512344051615268864 8106022712443172250851864486084608 3152297173733699981780821299167232 -893176856653833115307321991020675072 8906164605205473010408715083317248 3547412968708516407986382329348096 -172144481564932053014104523312988160 6085332681060592591152475298332672 4444565235207182601061543970865152 -143731431420553649969152692739637248 694664797874112326287820324864000 2595337121944674661702964397211648 -5588874334142169777597093966249984 9627460847273066356129544745779200 9853952777777975834832340214874112 -341396518137157611864389623281090560 764816947859777264733270889725952 7986400122871475928557937416470528 -303075636808338320216830717613572096 233707586835352798036780185026560 9980347979759882645659607822761984 -965001717849111140831995706908606464 3672513821766237667691035935899648 6834907400240344336031233255407616 -967316362168207072250152618553245696 6528346815341971731830324196278272 2499439351691599670786321884905472 -396871318615348000872538375817527296 560792131264139097264943471263744 8066242673139236172283532409831424 -715819132986833452854881236635615232 3283877403699205289700483781361664 6874898553769088943306122297606144 -96584062464314625463711449548324864 385478810252303000857287839449088 4057010969546497837553031793606656 -345652801833591191221753118768234496 3606703989671062101379307236491264 7895168836072442652189566749900800 -211557606161554935679065086471700480 1282568828392656454570929847009280 9801077072385946920338615900831744 -571396491573356846000519828079640576 1293447536923729310622992270622720 5877009500156951197262383197192192 -130285627073582481596738830445051904 2960566434407980616848728037261312 1562779634896425360030764881674240 -652866046209307833550868844877185024 332362181256508988231925591179264 23105608327100481600034271395840 -299386586222117146714964843099586560 4203899073620611239319090745049088 8349678610279917205489525364621312 -408303465546639595789794486798778368 2028256248717996340579264003833856 9412330075971589193398229391114240 -79570677115577438119550086006439936 1517081964587945968844466343116800 5685756029081073670083489724104704 -963641843144497456659063169007747072 272798460775720769080860478537728 3996980233545894887741770537369600 -686388521347535660013372732038184960 2676789888140027993230862863826944 10499339006275035195182736736256 -356175476210631781518901298818187264 7908499119763182978580988458696704 7807609268352567763733592592613376 -139819509878886322682124123609497600 275641188632321345297879824072704 4047635700925274405329189057069056 -291469275796973347350597535612796928 5011158845416547723015074659434496 2236212532511345783010206347689984 -263146491140731686117367296684982272 4229226080478888982992683928649728 516467360610946518794890763042816 -745938294574408554577371916807438336 5469986245989443723059008626491392 6523437638350965323107192600002560 -116132212702166801969846437441175552 9984888732251898447055176266153984 9614030604834198545277995731386368 -825417201940326945362314026591191040 9463038014911023978818973999300608 8511315641134420285031722866704384 -455376774114547482223063597643202560 232584669261801593486605201440768 3181130138884441805394999116824576 -779125100057175046201384290651996160 4542642947976660741871899208843264 8513415295270838219275528277327872 -449443102732519909385769481794486272 9917923549708641554418061807714304 3583507904647593505275542811705344 -843302632851313668591809632141312000 6769653265853862191612466380668928 1352578536732783413546713759088640 -909902683128264801913668481782382592 2198665992629310247938769427628032 4474188383635573413295367233994752 -807708669094399950868582439449526272 4326505371322595296798408328609792 1594211444615375053310452735934464 -515324926976317497174716071372914688 3182102663202804437425637463949312 1828821275969426714088593285971968 -617399227473895244611858134139404288 394877778697700772938732485476352 9872805097352956464233829189550080 -733990080871749075613618081315684352 4288244389713541207226517456683008 1592852173238507190220144116760576 -503440045247518306738290869403648000 8860516798379524051340141929693184 7774337723038586168773476568006656 -327970366575763263463022504276131840 2484697547689762374345414938722304 8288575013582216683940059914698752 -100988639308789585999098434388230144 4126897114407084172731945431597056 510319970446876458190206618566656 -187782113751699541094682473170731008 2445409381196928385202930485035008 4341862261612172014849702278201344 -290901292176141566325865773245923328 6494557566695173761792500603813888 5931485265443510016669937764925440 -730376393713518425194331495035043840 4736739331145824504944088903057408 1521904069661878996443451524907008 -210499667782947143860069116298657792 5212174573112461569513437045719040 230900366549352453048621313556480 -968635238588996680896867971100573696 5675371603388092015291677989142528 6976102385634277358452468529233920 -804581156091161161406434412482002944 937373011817518721216576023953408 5705990035012903974886054983368704 -591809496345004726145100153310150656 7535162568939701323355019309744128 2353145679545214320706339460874240 -231874047548399784781096125475061760 5329789916287914071171964996681728 4092870515755449175379773373808640 -781855506410029590758639614879072256 6649337272650590134509632185434112 934493284338351725007928584830976 -366902602171557095715573376764346368 5527671938699421148201553502404608 6703847980588043712674462716395520 -753949309893437574694212064270876672 2544761137085271626771149090717696 6184138437812006724080191498354688 -428982579423930185206940913262133248 1771753917718503638523969670217728 9757115881602474991497675697815552 -717732362973660299350185569519927296 4458090300069826845089997936132096 8070070982568085332343637135065088 -956579755472059953811409566957568000 1507950419593721605755876707139584 706314638041590519592169479602176 -393912369400140878933647748312858624 5662374423914835470537086501650432 5517547199764759482209194775412736 -872348746968401770870087724606423040 727156827056021163593012248313856 6454593503957046107184106221600768 -751852242935343097925874977490337792 7708608311357087453620624882139136 2224628284122243926882908941320192 -838544551104266504205167290820329472 9483867756085241593557980205285376 5027775324611897809136341848424448 -668726983024393945413743480582176768 9644595238613209490458500514447360 629666851821107512265100448759808 -111349944135872076444753644589416448 3572291821346711760846400526483456 1912637750308804621703926985523200 -458351947444677077422104909250035712 1565373072968073471723434598727680 9136336556402093788908588426592256 -262497508835232858715010884528242688 4746665686077750970100642706620416 1775037623365427251538501866356736 -478298727739148863190545025361510400 309782712961887728678287028781056 8952320099073889696326477567492096 -839561729360998271245180890725220352 3459668851023886053080544518864896 9938862019466283563727128058920960 -286526301700714145096313382149029888 786398317672675925633466086981632 962079571989666017917758569709568 -692693298247436689597060273045241856 3857962189698167982150507718246400 9757029013840763778732722019631104 -12538239976903875264108644454629376 7862481301137532877029728950681600 3423453337313398893575296096665600 -414693722259539652617425645704577024 3895141620605522751257726888706048 8776269086263139486291962070302720 -485670740036534129212740362376839168 5388309681289391023216577564639232 9497891371285886545447333698469888 -997125174347856689770273899943034880 145393100863923978631562907353088 2830866975376915940516341819113472 -422764567741574463309801828900667392 5665381084317109137115889023320064 2131140587070879844616140278988800 -796354490595350664704452262488965120 5453480728876853029728197508333568 6215233024713515384944308898496512 -587603250469270611699140967278837760 9368958081042119568474812675260416 5699276470336073771504574278926336 -11703900053909841391321900185026560 4747686577170064565694549188411392 8644873295751574719663989560705024 -639809293043206328596388019995410432 5481929100637722541590608206626816 8014346356881563282887912611381248 -237206275091795501096396693128085504 5942972032732518799017935558934528 4105376895397405470252838504366080 -108590250456344106930515456615776256 7904938327430054614829945875070976 2541503390941343522924616468135936 -308672056847991324394893092539334656 6307178728664277211165745911693312 2062570051699759490934487453270016 -935314130191949811554135482235355136 3062211933307860873302603200462848 8295757776679397821728717151404032 -297473757558203721902001564392882176 8200797855213581216562068821377024 5305144680394232308010492677324800 -509123796223922764355593490510381056 9508291219765777182901256293711872 9162718371570159152052630525575168 -287383875200874191135388285066543104 7818725382143881795029764577165312 9376046149092602556746250990911488 -945741868250965622984994296285888512 7676720249960860879006983440564224 4191971468283997557713236979089408 -472661024798790401867669984302333952 3656979682266332564757608352710656 6983525192749339515174337975943168 -774272075397020652958619665080254464 9154280290119529320588685462208512 3961366873193924313900111542353920 -389829586388586876305436604750626816 8785901900183703165193721011503104 6313802822158482988533698992799744 -420462023266925592704091022113636352 7103622012659751215975930336903168 5952423239350705593500901903958016 -714847718133683597901874329366298624 922540025007679312516102672613376 3617592874153877819536896409206784 -807370041716842183988625120597901312 9197542108907573074069727031066624 7207908997082445866926616300486656 -868222986963467815412236129119764480 3980486117317217904943821448282112 7912972968004929930958017461747712 -973821254904837308159349032317091840 1705041862626507381712296037318656 5037472046313162717337152569475072 -40185016947406199340624134528827392 3599209775970339224558784097550336 8194129158885860183031578697400320 -448506778549411401042518890097147904 7825560445619553882482323941752832 4707213404406759729624671041093632 -865162142128907323256155046531825664 26297497177058343588260862754816 2701813689147711695468501802156032 -529737964700353053042855442479316992 661140091376341793232169941860352 2644827164277801718478543582658560 -253174525946475271472940149857320960 4517161028661540457105038451408896 6355267070530319559215912161640448 -738592033292747519891327869155016704 3134085921316342731547841585479680 1758392587350997337436853547040768 -443842199879595301123261674895179776 8863186934365965228787976764391424 5974573686501385494272302645248000 -982161482191575839680810045858119680 1975837723739703640111487708561408 2884275304933401803364617701818368 -484680201931979096686772323799269376 9157644534399968185532005939675136 9757853281706304048372091770109952 -515913582560053078460743166575247360 4460999000387824075682534930776064 3079172690478157777291555138174976 -258383050168930636924248893050322944 3790246476071320446392032380846080 7696466570750803295485696608829440 -95345921421239923863076194815574016 7700532254759779199277161252913152 6057303722464039838331793504731136 -741843871771611384406658819064594432 6523542418757270512328065815674880 8470184695030605669825734846185472 -86022174991956972964300489473654784 7620546286563639385804812832473088 9602366987488347561258731924619264 -471684210395840845448440040464056320 2389194649580090115722424340185088 3618905838780878377558187928715264 -807501393054496346466318528154697728 5350009507999995651995402093199360 7960904093241342919965343462981632 -527538053630706742261193737964093440 6029093999366050089650674353569792 8733164611481804528434951386824704 -822540678520693512710196366346813440 8479163889547342730234712471633920 612367410461520124453569293189120 -676312274051050353526271565430259712 7335800061942743039380898181021696 9021568885461885797074920775090176 -705591300362933394932095188660649984 8114089428180648723774460210970624 671591579376789191555410988892160 -937765062280352214794874873542868992 9545212201212620936134071674732544 2078783219000632538241130821582848 -760893982176638286464947562727079936 8616957948756858982037512192524288 1955327922070684386063103735889920 -204387922737326924718109768049229824 7452146579758578728113575494156288 33784410123357223806798730887168 -989044494963142531192727109625708544 1286740172393817591556427307024384 838106855712958243943929580879872 -314679040562802313328651384758730752 3599064075392048682522125558349824 1335597043923567029736462759231488 -744233003572411416300787300892147712 7685750245853830181188841009840128 4725952476196658429031464155742208 -259747070614208145578548978159452160 9837641157594794366279425401552896 5434150752659984031574731815649280 -740178049806669262846554074697957376 1975656487963109351729207388930048 8377129985770769602969861389025280 -821208875829046328029973984894255104 242325636084649226018361450692608 5610048130149058590723255258054656 -268651075815496919600991056351461376 7608990154398579540680385891401728 7613755403796906424209227366006784 -326789970405328555622049342696718336 7656173098666371481009076253491200 2697624346566433246783367563706368 -900574816568517751872328993897185280 1816784183735756974356696984977408 5377067185680822487225182539743232 -216357212646071155381193161970810880 3144184573370931181173267012517888 993139108781879874430086747783168 -766467546501974548387528813219676160 8859736467074218018720167527186432 4641234690730656669797796060069888 -490600633590865244148182017514668032 3817800114483088299203572992573440 7527930098968971681835370143547392 -872871595614899773517337931789893632 7335567961825486435726041945210880 6641824688843968358759276522504192 -207564365277981513133878315935858688 2286847912054620829791877704187904 4130762905495095976941671524859904 -40650695490624789205656468535115776 6842882365197700434329244742451200 301733016469273358622476550012928 -914004313824496980380765485185105920 1610004722820162138356121327370240 5778881549326746445770822558679040 -391898040919772298200686848368443392 9990079390806098117351093498281984 2923172134492617459298729447129088 -706489470968680764887017666086174720 6858751147065226185828125875634176 8469186430782663277508416325550080 -540696066461439243715684842808016896 1813734071862257003946015142707200 3657084275383540385272681939861504 -169443390764281703053702936588713984 5146592542954515498209028431937536 9577121444947632260830834473304064 -377165724201625864797177875045285888 5263545320363185601849628783804416 4897232080903720381366012364193792 -156399284611912245685229103909699584 159244059781764239924300368314368 6193226896599973681741062188564480 -938800489687401695786677053115334656 3164546094011838356413370935017472 6263620843670455732546246354665472 -709323617774494477238766564209065984 4809894136497034078644367024717824 3616960312764173267607151221669888 -451509314477065764285998101761622016 9685334657441895974144853065859072 8670017192494071539383782785155072 -527695029618026446193795328485883904 8456782180423731897826398609342464 2324828416011026547012048907141120 -629527621600701634070046333703553024 6368411511703090577726719523815424 7667359099363677681445877611233280 -56939249587145230194561872220389376 7811285032305806182723162726203392 4650960990027810806623070834393088 -389560922889219857254859242725179392 1228794429108764515954168554323968 3379907961520025504196219648344064 -359561295566533468174036936402403328 3281586743092762256196981718253568 2764354096333810959256471084204032 -216818583812340984854522060672598016 7304052991581642843602154371940352 6685028179823117368954233194283008 -889201976556207247345166069199273984 6560045915030192700038571297341440 2497667670104928395206160312958976 -740423744576085675803192103645741056 2749868265748650902022584618975232 2808387639305668028771828670398464 -772394478788989417137111384939560960 4610407174225002958520166203260928 4180746490823150455046553691226112 -583492725457079212141160247301505024 1247904254145730501170297026117632 5075860863402293612462241723973632 -147111804756139601697879221428289536 6938894505366241509922688804585472 3381137675029997926238507828772864 -726748799907468987467891461463212032 1963468870440559512055195809873920 7994017454800087395657408040665088 -132468886934933448948170781569843200 4956724568274094104055392082329600 6246221512631999467922506064592896 -657809581724502108210281593310281728 3533603473359489216795105134903296 1790832207937283142136236492193792 -372034166869198711015619908952129536 5260942737878041230949408642695168 199299920846391626424211304611840 -597226001112662563781750462382866432 7266856367954180792826295207591936 1290649858600509116715144186953728 -80118701703503343540644248633212928 5061058295385084560428588265897984 2737882857529506021757379070132224 -271706650371000637043149614847361024 9647160033930254871272636087795712 2351469073688261367726674634866688 -182839971441606209170464697674104832 116300854213170650595137620541440 3732088088120350062452349348085760 -219974228328968867606103430688407552 4224431281112374152170724531372032 7481026335143997750044227419504640 -712733123555811164939883532083265536 5278570615353506284088521532637184 9461376609215155865239903625281536 -273653765823801027498501867409768448 4261634293624065004480822419390464 8889235860233345460332334401191936 -249720897323456678230249782594502656 3087186515583416722832605520592896 33724017633765744896756399734784 -76383640196661738470388179515998208 8951131021749846162048445197582336 4021231965023473316569413171806208 -118362488251555418516275398919061504 3277389510262063914956124747464704 8226303551131160158231602422349824 -378897274283330630795033087727108096 867676608501444204622014096343040 6348182752606424519983293389602816 -382645670588898239428480624364617728 2284575124255416737765830395166720 7125149504796150530544650422321152 -1600850968962781181260576308854784 5225435947784253680437017450643456 968936460950325953771588280123392 -874778571720504913962659267806756864 4569542893258733403400376447664128 6913261322367289284989971884670976 -380946363871023541190250953713909760 6836783744013481535371228320104448 667136291582451945225793801551872 -55237887634051871857403334781566976 1024013486195667503669761940652032 5030119400776923067569626975043584 -81874446724219016860155024831938560 4784180729530741677687595178393600 2708948237423308140388331477270528 -783906907030002408801543848426733568 6100381476376339517315001268305920 6405499466659146166057127634796544 -609203032733701354729439319140859904 3477597148140559655589848415207424 804959260666365475609025588494336 -775401847487752648504309962674012160 9300235818421038934094345194700800 8132753169783056637689671953940480 -574764934515607847150364442729906176 3356530049776755707287154230034432 1249976961734872116102489624805376 -424580275116305959437728629406040064 3651286410029583263092266655285248 8362751334857466644537357803454464 -491612638184387813924595343520956416 8160803930893506138895423962611712 1371344263374873447570269930520576 -226864643750346489381212578270674944 5143560953139283003265628900425728 430350866490818209816091771797504 -839966469152991066696219927813029888 7462385418436498060323493957861376 8719651432592084233969884691693568 -974229175080314279022754416117678080 8946333780072025424483631797108736 1727781065036148887119948083625984 -751820858813077935308692144982589440 5739837525533073208851058156109824 3913126130251600264210153958539264 -757120432009703475471040436007600128 3402632542502142246508206904836096 4465528846242172253240275224231936 -243610959851340160218165277202841600 5570227884492796112611729620336640 8394233288992592534763094333718528 -752575342064651660283646904650170368 8456749925681058000859317036646400 702243737877564656139127276699648 -560133251632592101740748250508427264 9065574568568057480459472036954112 2708421629169085601939487608274944 -438866757607982953978854651744747520 7839191887346455463158805996503040 9840864754738184131867748268507136 -156554929189365032661860852908949504 7975435585825966838167029806006272 3218115051083075582100057194758144 -85257352838664297718350808419926016 1945596946962895397112478118707200 2407930704981740507386359733813248 -519863391612121893345701556383645696 5831575810130209586899056272080896 9226819164933849517910459504656384 -103302209700019821716306869629222912 9775201883490200333455432064434176 5943305815432935624062769217667072 -40152599992452592750143144292515840 1491542211710177315716930719449088 7849698306084527394559739484438528 -277778404820480946968753443059007488 947610752940342750470271796248576 3962677039401888508512282687307776 -335804473864770231228714281225682944 8451076440428088734760662212804608 1122088082827522640251928772083712 -82079946786029526504478253460226048 1647925280986842525129999831269376 5080218756032060543795524236476416 -785506553084753021077181356679626752 4198500105365465415858167792795648 2926389109364516069031087249031168 -272484734632431388577416008144257024 5430131105228669032005675520098304 6112015408667899641848218928545792 -441796374710940517419863912684191744 4216051687132033998445813256159232 9721878538199000317832320065208320 -965483345855333662462801660210053120 5962229177776819006059641802063872 1726742531471448292377483118903296 -668241679760869784982785837401899008 5869616571490102704404038093373440 2377409765218460120861868436750336 -632630206789423577650500299671994368 3918389469474211368211647297486848 1295888008999392337874513242882048 -832643062205643119993322539187175424 7011044071142698067236999342850048 9591417738143642235493997736886272 -329818182668243473965561999593046016 482735052127063278117553816207360 4014241961463256253770735495938048 -796204566385196092969094320186458112 2839097166198760148981243506065408 9397067495389077964622721324154880 -982719549093918197324085437872996352 582140518321486879491808752041984 8740380453652129406396189514924032 -464028318621462892443141764427022336 5058436467864773877898719289933824 267788864522870064250180742414336 -652947640363391842964200961054081024 4982009531225801706217649867849728 3181496699805681970598619501297664 -302746796718267123902910195386286080 9339991772561166139066197336915968 995300900765797424317089059962880 -1538612708216670493296697867763712 818679203397873165965805922287616 2957436081700875958990974312513536 -325789275125524229603262625967243264 1464844767426595607098425796984832 1287782090820135651666482606112768 -664243811452980823098339403633786880 2810109052151496676890966365306880 4778473181212757552689635915726848 -114845031400854921024046599403208704 2794437403175044206794158658027520 1818252294206865598327120088530944 -982343441819019030040021009409507328 6772648195287992626540418399469568 4529288600644991422768931252731904 -494565793571577123083447124835172352 1343086287066157207785757940383744 3632609988803894979114601434578944 -152546205796010525512047668041351168 1888442742473139836746329904644096 4197395447387000022548299619762176 -373012052135070501177896662827270144 4528610830060511409961877836398592 1689956153623717082571483062992896 -607999563547317959092947714899443712 8536909454321171436656121106923520 3921577202939272247344694267215872 -638202247098652574217573275189379072 3667850535884715329228614416728064 4016971645690137212467439793602560 -590131428849503332895382247172997120 6979925831963395162372551238221824 7199363441212463395858420456226816 -86321468428154195145900142234697728 3603500854941970967547578486358016 1542624196561961404705600710901760 -462360633112733906710228011516428288 1106757521962523537506890363699200 6650449300452737542097852614836224 -238784411107329445227797506917662720 2283231140579354080453575957282816 5391766459238866454610705492475904 -317509144838882929615462705081090048 9601039545677163594072597842624512 5200405458488231419321859763601408 -680732162413931113925636868735500288 5424807806402478786358078747967488 5579299175135946657942476377030656 -370556755929304679482698086553223168 8485704856249185937447508959559680 1938054972849480896752329575890944 -88508522082455448245976516895178752 3821659940259661533619651468066816 3730825748341922876788724228685824 -298596736878451964829078824238972928 2514306596564576944431458028617728 1970768832552355367714703475212288 -671002647499977854137725235805290496 3041609421442145030466693626855424 9589156191566958648930120476131328 -293052011171551673649856947066765312 6492531670863585334951637751431168 261145369384515974808251333083136 -321691136275184041005133131153408000 5279884065069514198836576776093696 6261991104826463862582562342830080 -588199365443231559950187011443261440 2732183171833238202140787195510784 1498281808011672408195129428410368 -662229941340876364843243600825286656 4100405109283742873940607423741952 4474398882341881854397378251980800 -841849717272808405235449937210114048 2532140043629772255971758540062720 9904799199424390030391850106355712 -915585581618446656654504078029619200 1758783753861782813362443582963712 8805650881254166315052787046547456 -415285826443854578333254904786714624 6070273011391494691945384039677952 9760899982694684897290965001175040 -270958364870106303775375720911470592 3025139827919903461558776611471360 6105928940576398951925111546970112 -791613588660379489338298336632897536 6388234367694019560593314241576960 3970650460104285186513753794936832 -727756122791332957695583338864050176 8343473959181928661356210944999424 3288154846683392013378218006413312 -879815980665888280729339724889587712 1819611924743876635919534362984448 2541700204509628088342296718737408 -884249562675227066923848794080542720 9371937497097209089448859427405824 7352263484549971209852827639742464 -831541163536426818782787264382500864 361610282914418253455002750156800 4819576017197359339559322011041792 -522072487599818950000209905397530624 1284512889985098746760772165042176 9020528689422385075422994949472256 -662980745050460559874654799128428544 862897500489845564447210684284928 7451580030667626586113753118408704 -458925618922588523585312175329116160 3207330613869924543591770390265856 4592694102224066471737651187679232 -9024868756572813527206779879948288 9028083927997463440209572138057728 5669987600458549099097448303820800 -917814648593887928967066536531460096 7699548578206833988361354368516096 1687496453379152543343706363658240 -112655784030178125613238975396315136 569567366462950632920600438374400 4276330550793862393505744561373184 -753936363997591320375728329612853248 6893698776362206159982122923720704 8438925458711349797533205934374912 -14201450952384008038381056333709312 509696631697162620780438664249344 4071104505385661099125287054999552 -879352301997477420959791268254187520 3385451612629066339807062107619328 7803267741060021517802345347416064 -723988509683456092890242234510737408 9981671382801807405754228420902912 8728191838323863283706928205660160 -276817800732415992920756222169186304 6652859969254270444402287717646336 6409529050550112923088980025540608 -439729000702703794617717275007909888 8634692760307261567244649147400192 7555073801610572147114758243352576 -322003548588479058492569730305490944 6234472891102184830958469830934528 2125952046848584877920528661217280 -447021412735602084756374714786512896 8088550080561190824838342320848896 7273409543004148230501206818029568 -154560539186522099037411685758402560 714516591367142319024390528827392 2656783701011692271319386949681152 -728273599793042822026285840567631872 6283488198088911058549635305963520 3144652826188555965622422943563776 -14125296528468733692740056177967104 7888994749614627749704031518326784 5459140539753234613590098435899392 -385208286659208859074800093033922560 4689349503212206278055517325623296 8144896766258061421268530070814720 -186753269628329225972125052935602176 4053853502921697153282286095958016 8323694444151413939467083384356864 -53166166533692851160155648088342528 3236352583774427700155943797915648 2008486421497802820965991350009856 -263972010208486151778267585002340352 5148633095550358921465786674446336 6057032083715950226329656453234688 -616635661584809896630105317058805760 7555586192091378601494029912768512 818432065833340384005459940474880 -191522772180047693995200386990866432 3866628162073962929355765164539904 3255884862939250053840739183362048 -741918196846898685017591442984402944 7078414515093704190789328796909568 2958961428530610323654066644713472 -632593068554314148980048271541010432 3355981137053362822921202555682816 7136069563332811083518372342661120 -664089653631533075902579137688109056 8941626588310385154012009558179840 6211801294396834300380927731171328 -762154113097382061594139061055913984 529737661727019269654988311232512 8458896703188791337148158188716032 -227474071442972916026134424834801664 675618971209982095735923404701696 8137608739269769812697561037799424 -446572626322634418974404764583854080 7531130154345381552120783683190784 5615208408299769270241353646735360 -315450748412027736589879367390199808 9497414367103425672869064092942336 7922560632642738963410838683123712 -729895974281243432264832781805158400 9798759938111583908791719538196480 2360496312603750551952073301164032 -365684464016573185090718390168846336 2776249055483292071521379367780352 3674366496395315535146931036618752 -177167248226982481478464493041221632 501205771729328154975586920431616 5357479892895264838939628680511488 -687645115492134438746541964822315008 3771537080178472147120758347268096 5344537980348687784052396675563520 -632314665922916179148258501663391744 7047548017167897666584414099865600 1210555210971522756239689793929216 -473793485929328208150336979584679936 8002467769174128868157470466375680 5719037982129860279802978682011648 -762460530391460119431739977899180032 8894190599474441033537935189737472 3493855354213373000648008126169088 -140248715586992890398549020095021056 3947275893229291143300209428135936 692307615304619233249867969069056 -699938215668652998014473812098154496 8491636861636126109600276470038528 6036676192197430122858046927405056 -986864966024439990910219393997733888 8621191125096584829881624112922624 9895245244796276388625649326096384 -362357181909239766297589497886408704 5348115621503844997070674624249856 1938124899592825795028414518788096 -391170103659599143675308627028082688 9311970886846519889731139600908288 4831836640815935052825357591773184 -809538495668699131561160022662578176 5346490031939924377052916259749888 2727362277877625526418652304244736 -840217054958611625331544160584335360 8119642569049474317204019560316928 5625779520759873646446410624663552 -63162946366573151888182902949675008 9150746849591987886225485348208640 3909558646577720623745753342279680 -211254694673666332621075373849837568 4290452483790713430909193579134976 4053558850541389576327100083732480 -516233360263056855976967278749024256 478206646121686544579333585895424 2432019758077722644849611111399424 -678481206461356070657535624930656256 7008587979833789670418921574891520 4050879656076976771952124748627968 -986279097011166073583748716242665472 7771182445419148925361240775065600 6374297362292528562583405900857344 -506074164857364507313614645819867136 2737934504759087987620692019380224 1565859238430292232628510067261440 -853475837345624148639388540050866176 7114824724040569482729694945083392 4705967804543748543235432749465600 -690848426526627789945296506157268992 2201914146211665026723910583844864 6584712821404079864306520284987392 -327960120920012238377727283743948800 1286859013964555783538634659987456 597018873987494233564341933703168 -524485842099964837633930059627626496 4173006866445340106916185895862272 4399989007286552989287248885186560 -42332911486797375433329092249780224 7938065710315879075917512868626432 7874280191408189276763660606242816 -737902543132294779652862745941901312 4491744103920774746538352259891200 4241587864806674090857803102027776 -866443810239330537248262393069305856 8673475975212226337227212576522240 5870457751142103626192596091535360 -487379867932118063560741440781811712 1093933847677837187722933809709056 6171756260139180223012109658619904 -610163554776088097235853834966794240 6265840803801872947151196596994048 1133875065602379388877993670606848 -135197343558311825846822480002416640 4314717806761769933372028683812864 6640270594853641773731154933841920 -916977130277285754567689676901056512 7923067914426897953681243342110720 1931903398068610073457429563047936 -408539522854692390513637287740309504 2118898405679873274899784108343296 5295757145117065329600737149190144 -852470584877020511245830545674862592 5481769890000851162467547572338688 3929202323763726835349231794913280 -530252341214121804210618253151567872 1607574589410048904922974899929088 3470032450485812837994748964765696 -23869942309425365336080406976397312 4253164574553461132976657660903424 1991192943845454449798573996376064 -329341044680247460809452457300066304 4220331277680027052838267459207168 8033140081527856062453299525189632 -489951620460087692775338577043128320 7520299542416054555822073325813760 6077413286934650829953713653678080 -154377037137726840820883735311286272 4124651296126245914766642230853632 2173395821527960554385335256088576 -649794806197809148454602234501529600 2944035086773671314410414698135552 4853466716644250910762446490697728 -992187586161619059688973146049740800 4050365911682719254435694701969408 9482506794605871169305359987769344 -742920994442309974528470422516662272 7462389038133592702023778974040064 768265301320246734586829833502720 -346010526852354576356564467649085440 259211545104049082686730982653952 6506631136677459527070695395688448 -8944624257340702424391075118448640 1605048491527099007293466198671360 2538424926404125604662370080129024 -334593602798707584816292914240946176 3217539400624382907437285644435456 3829714364765904743939322947829760 -865386066922034710128842894347337728 5061791917734623234011334057132032 2630835128389313220287869025779712 -847514014825218656653731785724657664 6707668760531817653385523204456448 2981012096513233750755640604622848 -440180475240669069151382748172124160 9445511598997095061361014205317120 17897468410121679359432105918464 -307145764221201513682264613726453760 2254915768250617453753821999136768 3415702579171467941462083436019712 -633009049574644404664286761055158272 2149824617612340815169324182405120 4134736959996203777635807089655808 -282641179957632748495795210443292672 7971746106054585932639925063122944 6168877931067429794464607531696128 -998319109123547453994721921430716416 6416400857289996679158548328873984 9369711326057434891238407359430656 -991008897883896423273840552062222336 7974044202501554924678819245719552 937899035233358774107761255907328 -342881008454292591159367311044902912 6276032342580816854979361168687104 8211222504125153205859338770448384 -152309985631928513266331363561177088 100164202194606994460715090182144 8452005321329513477713209486999552 -744292418147270351337546588356608000 7748766697805812374009881624051712 2674445104260169793657416846409728 -726557616721868968474677785279856640 5854025375211643159798617957466112 5200846381023146272964345394626560 -599359528325575399634338346134667264 7475222163788923164313391747563520 1464057652740190247425637932335104 -34339420417666460943021313571684352 1148084346793335643923876421828608 1718274955308038552660259276587008 -617408606843385759038280221239279616 1043723204912328761123894099705856 2912403497696982858699992043880448 -389449713225749226230076042064691200 6992459379174253735763498493804544 4374531764078449643461393342529536 -975860786011900870290106792546402304 9289441344998860865177179306065920 5927317957159192630751541063581696 -538589925306115585933485911010443264 9216626040458391961945726143954944 5402841137089072047814886104760320 -561134735148313536130691412361478144 3507034039635430234631488684425216 3651498667907652656831725328924672 -592142540601093954434294141434200064 6814170766812110876889808948428800 4137115997282588075571701065187328 -149510059054301104462665380377133056 3976735092245743056712539876360192 5514276967391474965599191478304768 -909068172679090788013334342649511936 6340188786606619601623666739118080 6449624184729979134031740597698560 -675160878905468047358815249243308032 4479781947377724978549086440390656 509360610840803354388636421324800 -640677721468572491899800602919567360 6857119375824850209319280049127424 2436597264595389190613526881763328 -902455198367007071168035520916750336 2843411315662215647672608866959360 9127587148672587207775871903465472 -150174198607135072869712051902087168 1101428293161625387731440801677312 1641690002284251995231467161518080 -305788471830906589493284811434885120 9202442358006085678170036015988736 5660097164460358118284128782647296 -575341845572489281920130000443408384 5290053881165257096123888667983872 7101521666226552479962209940668416 -3049449815428983450077445501222912 4071587362764547576398971578351616 4270974625699219113619067760541696 -147528024692966589879884261114249216 3152346922048804442734098548523008 2427984479047523142409967550595072 -109517304305843894914249707153784832 7146880263953692478426549080555520 1619508187685805031727207779663872 -867566066809294703912179020888801280 8889756979107897479285271917756416 5113031808460407360050305364393984 -386945740824557402850673071031844864 5069551920039424565356675523936256 1470591159026215762073397785264128 -442962539276046278832098733371424768 7689049495559913319010482314543104 477969861036555566197321934831616 -547128220864514798997902315720015872 3189510584822960001185783482417152 6262340144547568147243374796079104 -135100976149628869255410471405617152 8525067711231523732811086819229696 4545985888646062585204843170758656 -645963805595401618670714362406109184 2507486516884973486142805575204864 8210246139088069540576581866487808 -229579297081512721144605220060266496 4609056350308234606944823988453376 157255621034047371721760709804032 -143114266765516024916814619213824000 9113060691058740451510513603444736 6784639063654905822726363633680384 -888265122999186303243930052098785280 7567653738454407057715531721211904 4182871881836736008201952294862848 -586904766312067352707151178997170176 526034535206753620547138675015680 7352466986406594910608778942480384 -296494178199657399161408877307625472 9642263470545683735433413499289600 4363185119000126415841660044836864 -268183210150985551009709644312477696 773896948426207076279717545902080 4363449823862961360997433353437184 -533484641768241763812516203373527040 441388834809342382228396002246656 1712918026302849807091764205453312 -598250191126449873559469766643548160 6618086399304123242886687715491840 3949620052277424857413551373942784 -849621501495383052779866444946997248 4692987771692433141612049936154624 9983571784111047585673338861649920 -496966252321208411069284164531388416 641329093730632596293854846517248 6608999814855342344336584361377792 -763061776553449262100995124905377792 875447881260668677350256506044416 8402411849451118135866195420643328 -910480131229208807757794850098905088 2078264999898688754431574929309696 3148255481243982537850679864590336 -65399965150985988741649016062738432 8845638983057931516573459312279552 3858453899795463283978695620952064 -577327186988302741422777013532360704 7135801145128331659387909596774400 5625692583928905195127825496014848 -383875068522140750818921891867131904 3757618056490835246424162511618048 6419063055480638876999705757220864 -485580879241190461347982374248382464 6473709292701251325217130609115136 4211057481381775373282402386313216 -89928654188124297215798939763081216 749112904397934633627169717223424 5257635997076022654400655316221952 -800626704739671250966755931339096064 3410917396941817305040031565479936 861678919295780941989432090689536 -753163689411182335518747649145569280 7640110872674128940048056588435456 1102220499678415285357147555102720 -31346479620871134127872607109775360 1587870423037489825731513900072960 3518183019187292007689173247983616 -426540971954479562535179648487129088 2038386951359895365891073660420096 2393034488874133345140402267619328 -291165195145374904052742677285830656 2474426460373996310222350380433408 610879077068203541023718499155968 -962792553005901436698357142877372416 3543650287842983308172569486557184 8239002635054672200824431818309632 -2084209718089758462009425910562816 720870226551462531256862220746752 7645679149291390298027091877167104 -104348856400022455898734473955508224 7678280152653644970133147646689280 7366960739525486899505632573915136 -845380441141789898021422271903563776 6276892702855339337002091764776960 8743973701830882558789547882184704 -808677270226625223569401185849835520 1282415843926206368808507837251584 5691538394869836483750406683361280 -538645194605506407030347973879922688 6631963171877414827646539981127680 8451576749937852701102018610069504 -664040993691216653641051110629179392 9099850955907505101456251650310144 3587308045649410521275547942649856 -412654857467281440739376618878795776 1247246232155890022732057888686080 342813633920227089983658530963456 -755011325927328259896195835125301248 7902286145529763371060315897724928 6438378224429096674252597323890688 -208834729899637807273251861663055872 9882263366837679437309675057446912 4490352203223038825530115114401792 -727253508904726891452193599790252032 6726771456685405101018801124671488 2148806406719222876371617593688064 -492763843483737356938343262711709696 3027268536174060028313836315475968 4004512968153052937179826246123520 -737025321451764863702375924211122176 9843839014550242489995954908823552 5771400787376783937391399238893568 -434421453312110186575985628938240000 2764254241991670658439829677670400 5197056769028391731397739086348288 -437539356149124983063429762072444928 3077111979372752875353102352384000 3141025432061680075110455621713920 -102442491714007722945308310181511168 8850841421730853851354249954328576 3758257573288673193163700521926656 -384656906251476137462782397830397952 2009336519885059682100230259474432 4072252972547283598716369153032192 -307689861750099286668083381328150528 1378817055244719460858624527564800 1223692431220565889791498492313600 -487076326009522035916302741437153280 1764788162035900219306798586265600 5714950474084109476123767046406144 -864992646103786476211534672764600320 6833686349107270075541057238466560 2600145325515568756302435877650432 -874017954808297956018525519598321664 9910641701344389125737827132243968 1690750923724063573200230143754240 -819778907365626736235871801421332480 9649569806279642209374578103287808 2512842666053656740108283655749632 -873518195737793894387356941881966592 767997541680020818762505071362048 7909998629966375027847156912357376 -185500738873779685404579042227650560 2784900616691749859661843328401408 6078679318531845496010856040759296 -384911060268392280569223626539139072 2930322133182824744672768416546816 4030000911087432836846389200683008 -31906037724166044387253198706966528 7295661095608630351522980463378432 3697517633238978647094735042248704 -389057305150004803040259973192876032 2342001684365335887085555920404480 9157213936716751043890341029609472 -676839213847933188393123683409854464 1377300501221374835703921976016896 2901401414579666372763986828460032 -687860907215016499309060974501167104 2055530427201513656768833192460288 9470995243751446122997784099422208 -886699596881958851195870881922416640 7175626597782403926040861879566336 9187742806566806646179395994124288 -704323004166661620102008179120930816 8688734822534415857769174966206464 1896867596247048120926471821721600 -743212121222975173801958624469188608 1986635072359200227755023767961600 6677863361654848011336262963167232 -507999476138717126515025665404698624 4275728187175159068502412285181952 4200292183349589937786002859884544 -85170401144765842249228356698505216 9404267030530003778748731067727872 1100347307379631035335195345551360 -982047416636935149782381742700625920 2634688562229245511794621797105664 7347300325476479135845863487700992 -910725269169314119078952596278345728 9660530583885339529331860349911040 2123935329163020580211745538179072 -141273906998317700974648332782665728 3991706770574534081110929171283968 3502116806628785292610263807164416 -670409823935258688890798631131545600 7292273340241326743365440679968768 7873485757496895148851195201716224 -996373225560082258407680222666162176 3607178743487927499539429984305152 3300936553839792106350345868804096 -509509216162935390600963609468076032 4552214043121887785254620881747968 5957218660496531615486373785501696 -381713323610149352170409384430534656 6673098259552276064265211454947328 2835134454273747896017676908101632 -124402422435243389557073410860777472 1415372422821261570898611176210432 8560774561616698404655921467752448 -504585052635929048490572925479419904 8947467091566533777344877108920320 4450430259565566292501375362269184 -645084834926981839999472498403966976 2038747241616747147942999650992128 4495098737169175429214196081885184 -510302887364821996960151043722706944 3386480366343095664321583674032128 5030967265664850406860616741421056 -87720338461257580587492998670974976 1184882988244597682079949985415168 7026638834915260102872842303963136 -435309086424687505954452871965573120 6884523658624504662686279567147008 4153269634813485045914055552794624 -395585372573250837932463124950024192 5698616013743955041275672925306880 7431466934039642472090512289431552 -210048433236546471618153397350301696 4451720439291001058576198262587392 8989258742911798254427459974856704 -186190454615887108473827519329468416 9385514936822944893278891169284096 8048623869403808641093765653594112 -157319613936568658596503208029323264 5613909903990688186422640037068800 7394662158458308487949948213526528 -443711164449296475160775182598012928 5852301024204062748919276450611200 9455974357451965168721591967678464 -996460644977335185184979979293687808 9418657381731333663821890527952896 8628847103860494498901780768751616 -319993695861103626164845842117165056 7128152992201195402145742526087168 847270658502268933605063921762304 -106627694359071659930855816443199488 4583201464165394023208294591496192 5438449895356281818698623196594176 -766912068943565988386591586658549760 1348117305149884740119809199439872 1841842402467973043646383379185664 -131048215795326049358443537875599360 3506307022691117629020938698752000 8964382269620474123124581381177344 -381856356909292085025085392957734912 4594924172290382171845524088422400 9809258168800327688998223108636672 -286301473200964667776062832724934656 9971680281944855768662936632950784 9460994863394896467427518270406656 -936655911397320279374342702067875840 7469984771703668724406243664330752 8337875956068822792511853403570176 -598747373867845576624470087828504576 1198023183440334319073835691802624 7686066432180026722083299808772096 -888521758879498450545349631366135808 6029636788720809815553097752117248 3125157927329321790279602311004160 -458232743801989774169842586541359104 3875523499112413378453225175252992 5692290629869780328699752225964032 -284733794927734492724126483241500672 4641573631278303850550033456824320 7310763008683048361672820794589184 -149783390768225024033023039117459456 1350882721021406120296957364666368 3988910341758775749084120503812096 -226148267300682011069072304347545600 4236561789653375958351000608178176 6069800986924404959876236395413504 -517140420884492336781722130764005376 7409560414671324385274309688426496 2856326493525905053638107976433664 -809893117439513726053481275507867648 7113150558890722378940192040943616 4788523963792053266821914067730432 -960548810001581304398687324061302784 1376859939450802061194729474752512 5000039162526930854905411616636928 -798768611091093716762356162483978240 4769345421681849642577839513403392 5562366125878965987086128673456128 -592109519896700412321372709354209280 7346013105435673131112416568934400 513972772970893386352232258076672 -768966855903688322304882161511038976 5434760452369840348010382436073472 2455951285982723188963582087790592 -177462011159647895184359468317016064 6018973081231433957033834853695488 9361389083603147025831365751865344 -235249404556790733850388400567222272 7854324148696029175337481064677376 8634945766486270508003587117809664 -467146161958055537855720479990480896 7002925382748024900334266622148608 1139588668219737272058028620775424 -291101702145101506826197710325940224 1808901377869244722710526753243136 7391822038679233179794093799112704 -100150881915431066633485216397656064 8246185396547650686987011608281088 3293048832670554330281658367868928 -938189101530204637211903064841125888 4630095716707705045678043649015808 1039803717332089399501625879429120 -409400285323295244414640276650328064 7381980569711429660969391940960256 8762768393602776181051118353121280 -290516438726466728426961617475862528 2265516441440347411851454529404928 909090483726451396545281716649984 -109903376759624277224571704004575232 7665970738532341240754460250079232 3275359360744417630986602652106752 -162434194958514193156597295085518848 2216107516474291936314703315206144 2313450170097670731803592958672896 -306035136707386290097274382396162048 3854914799465418472836806482067456 7533106745509317493973599993724928 -275641266295635924088556155868020736 776129284276168660793726299275264 3366029346891862205275853694173184 -819940681303441885748304155200454656 8884727072393116467033868718833664 1279113059010336670173766189318144 -26207879096237549773923008487882752 6764142967042589403003423578652672 9190277654366377665811861953576960 -825328762110419556032312668185427968 9027865394798392887929887705268224 4986012010512300293456582229884928 -467574172282380509868172100642013184 153404802980665355111783762755584 475870151644732042871874670034944 -974186888182323200728248923612774400 8466155880214705040415184906092544 9584860014660117941123045161697280 -923693218137760792948774696397045760 4134909883398802619617553835622400 9376857999798043075715029213904896 -770053764481869902507372391019053056 6662720869098124695048914684870656 6395783314081831678955896411521024 -462868517278396821454516569520472064 4639478760410920958141280223756288 8263243349383769233577577229058048 -214869836992491416449299282992824320 9659348544852536692622173015113728 5287134836076883771350170105544704 -932344464372433805200751601674878976 5803539682812922829171494915932160 6516171094553784052779909820448768 -291390706985170953642152501465579520 5579252324989249798119136367214592 9682401744583014468599911624474624 -370223610307484235164831506717736960 2454318503122778559391556555505664 296797063353825325339162781417472 -437502993729898446147550683317927936 5249631994867191282092901885018112 4678906146401482969559441095000064 -937847729447494123752243913006514176 7456254129542267287600350669832192 1709216465560421225379973459607552 -684217981800376485510570046197334016 8373421626229190419526139730984960 8619130612041714643018052433608704 -571002904673876301688222554693566464 3475438297370807306874829578174464 8465348728290987879514572291309568 -987528478207510236496391703390846976 2616500154625473715014976604733440 3418879952448100587043702932766720 -601251294278506196052026913621803008 7113985805515602534649869889437696 1488360598561337453672325045026816 -118254792209101305913867262945656832 4090192911644164235681778951520256 1065391528422460384765691381678080 -794132366361192878096180295942275072 1527596268918824729182215046430720 6865577021633435644858019426074624 -856123383459900891318962732134301696 5428656314178247918842856620425216 4098565069783976701489041196974080 -816789662526189919117855984552247296 766623853030989496244595943538688 4065732049187576763711947527946240 -313755202367012688531959230698094592 7564416482352481172799948559745024 8741212115916643136113179885568000 -849529224932148867228543980140494848 5021049107939493128709772224233472 6995387111214816667888597583527936 -533770185122502381762472781302202368 7800301931760474812564192091963392 433682627297931148900938410885120 -812032984879597589738686203176157184 3291284504041300845787208247934976 9801910289666859146103485039116288 -890585016432087119690460729616367616 3147500803932735092001489532485632 3928290073715117844408677932466176 -751182790628271112151841652592345088 7653131282300602445575911028817920 3665648267376265699527750171230208 -709690065203033449164579769394659328 3482300655792458803583452490760192 4541656941227423742232975628042240 -514415013528655825282587404837847040 353579957385835133858236573155328 6978424995474456790065084358459392 -827914483401961832012782431943786496 2305876837693727898678855930478592 3766781693513926142421421697007616 -698588040846092317756989911838228480 720749344875317910039260072771584 1751255061076295535930236035137536 -5673030247165093449695608279400448 8063101243371630456844415559270400 875108888510028625352216539037696 -153187598670409342816334150268616704 980867578525635384404718410268672 4169801875847525465336765785047040 -321845800925287683876815618560753664 2910257295870393422115727449522176 4115100950433790721253149595664384 -605737868445178266091541109898477568 4622296774424305705706198054993920 3010203155206440728181873072668672 -581781019852383338741632741796741120 7033439080064702997391972451221504 4598186095342085112812337702633472 -281474831676181479887048652265357312 4924485132303858968899666277564416 3744765507668480410228123733327872 -928284513149936756301993534807867392 7673487821621939287445329363861504 2797174748920693461500757649915904 -355852100851057128472478743284154368 8758756479811900010342179789602816 6453559240944670763297078973038592 -288804639731126259769762967785046016 3660097097543588143858449559584768 8544650553884685695911654741508096 -233480748605518732807557272469241856 1133480455922156843630639479521280 4906266350401425922856890023280640 -960681813566601192755306522621247488 8436184307583709454664342834249728 2419218859537362492352724566278144 -981630258333132131950186690814935040 3304049296358826415852803971874816 7327292624773299145726537215508480 -887918619728447964300943271613431808 1775779955638247497179956770766848 5742733472501920920130107312439296 -742017089364290309689891220558446592 2739205021825407131031170185166848 582406934809701888794224094085120 -414559318894335965707408934346686464 7548394148046388226095132190965760 5988118493853841098809318880313344 -235725396231269120646582820201824256 3025628074929083456000027588034560 3476797048321937291687767721377792 -258479429997647644111547734008266752 5095099372825101006885661905518592 3626286890632043956664425131278336 -278345379068688458850151159797121024 6409587204883761514795690662821888 2146042888157978655321436895313920 -945021901509944730661144145097129984 3367854313607624416059896864178176 6627738418422498198439630708146176 -4021668999345553440477167765946368 2036659616248382721601384990375936 2175562579413397307079093781528576 -235335000915562354710304447061295104 8699885453799639258445734305857536 9464186233423318229066124122652672 -176680473082558745248375426361851904 4870610258502714587049126644416512 5415048748803179691554378094739456 -422846700929597152470247281870766080 4837993011075492653989795372990464 1044560668170273350793051831795712 -573637958510687200161851472898686976 8631641928509274902046687761530880 1951519267591924778982220792594432 -184410048922681943836307516383297536 8850142049735424523072846713323520 8469623234717623186215170937454592 -180198118864683859249263669275525120 9396982228741934268746839250436096 3942635614875160181197653695004672 -715932753508051922368475049263890432 5123771917668866642086837518073856 7716612345850235476721641174597632 -344881847864864684713917384612642816 9935899504436219654376197290196992 6026843723243791517967143021838336 -158802832039322737043887809997307904 3566619579496379209187482702708736 3538376433427163829167864210784256 -439424281031439404964316132935729152 8768751294010493244104399497723904 4076927716172327167843431622901760 -172577516801410733922528431678947328 7947687330560303065790313345843200 7168097091427880693007722670456832 -24750201912530744523251688381874176 8318635417302046891682872208392192 314994622924130648618852732108800 -565046637209668375589368802622570496 9995564513003293318000616849539072 4152646001316273145685628369764352 -328912826409381076554716463285403648 3095938853765649285270779054784512 8530768901345395361285001986441216 -930984902975427558552642045603741696 6337760645755531980992703522406400 5807130458000252616890300044935168 -150895505038045361185861048339529728 3698592752010695745323575984259072 8329722452400330844668521535766528 -377281995892675926241295375395717120 2126608229835967368840409925025792 9623462870321956757666965118517248 -34511323465459774446987390499160064 1421231907201181208573485346979840 6964270361035067738354236079996928 -386804074975639604702042375344619520 3043319537810046575235702888333312 4223844682574459049369344118095872 -801591058300305993976993100721029120 966770398414085026526593237909504 201961257921617088260022506356736 -679210152628957746891289421867384832 741321301258101867614610206490624 263576572722019518900181368045568 -805782743023577068996468887477288960 3859152436698978505156490424221696 5605034470551657557260966844956672 -820050081403532891437900723908509696 6301103354499538055021752488034304 8794357436817621474178920322433024 -657424807560497951947362327276290048 2918802193176121231956280703188992 6473661698054779207111004209020928 -973399763918821755095694705210425344 2260192823291370467832097643954176 930678313097035578625286865944576 -849642996354558269549827007688212480 3043377204002274515919058214322176 3863528327908862315843845487591424 -724901564714236447879296182241984512 6872405275548518054827309490241536 808498228962718939472321180598272 -915796660806391098549909431435395072 5264838200206493830440260120608768 1673744292689913417277658032504832 -613169810891296736871658019274883072 7202532824490302605320491141955584 3347728769139426552198879093194752 -813326683978955512212014618906722304 1556610445270870548300909426769920 3654173705382968429806028215812096 -789721487480040204344360377562169344 8362018214463198686182888085389312 7078896343986753180121174382739456 -774136981791751310761032108713443328 786756767322870094959906350170112 4805258537005950398272625266655232 -204387163946685033619058475510267904 2070821962152391703874026384392192 9450132741222673138287521944305664 -866734026718290974723426090647289856 9003208054962574654410538465886208 5996974063530807519474422340648960 -146744300264716432938633830745505792 9727941378587999938936622016364544 1925443746784374603710222911406080 -189047034342915950725982404258824192 7488856321051749193954423537139712 3463013876292661271324750969307136 -717366092361448083643865858343698432 5629278724747155799713188950310912 15875655841759911940908510085120 -98960370130119884606547446705684480 525629213886986529564908725469184 4230911411677174494479799166173184 -471536080569024226313063713877262336 3187299770553249688458897804754944 6936328598680250761947409777950720 -728673777646353184033037322358358016 375321560216613623271950877982720 2107004510352957001593183845482496 -369420590561385838349709013678030848 9786146931351839952761369200164864 892537118661444533956931265495040 -527891337701507588265366829012090880 6084345409385841302031890244435968 4603033502958959622365124252139520 -435719400897866840725176796414214144 4375771300484846756433216957054976 7565868757069341972619087054897152 -91170312687290898491646204845228032 9006220972215384045862729254174720 1793817976091655688737382647988224 -954293054039864228312145595197292544 9455321384246754942843551228100608 2416525143394798468445910520037376 -186581137163806042075351450407403520 5299410397393361110551552822607872 1932548657552060429116465720852480 -336838717233004278871702739571703808 4433702090653947796112139578507264 2661068254408791954797946157924352 -778631506997263376534652080787292160 733817172620604376027651217817600 8807649449855456376001314275983360 -118875698361622025370467542599991296 6571475260119688150967485919657984 692701511165181095842373487820800 -218843245979349535673538692062904320 1465228266313787639572818722553856 9233207397422772243294150721536000 -795726752567044528453821070307229696 6648009552958172255639885641154560 3816050081853746290839844374446080 -747656793559460413635001636328833024 8147653971109162397313543580942336 3679877186651048149051342355169280 -442306136685623398152003846550847488 6613902383388707661408671654477824 2453997011653595573410399445319680 -661125515878011495632532987535425536 2318319386333268001873880594513920 5827391080395131593383934628462592 -648190187975984528517929581764673536 7402497598409001659187700841840640 2392978411430832923350959621406720 -313098419923864835096674405082726400 1825540238312047310066151543799808 3545661447079621000753319413547008 -74760944586026654734370506547396608 7825121099623914523468889247973376 119478207571126048903502367817728 -684046593556325789910620043659444224 4223588808907155353726149715820544 630095599740428887673761779679232 -190038882082213353207768654551187456 6508257699471811037142334312546304 4204265611570760880967263302189056 -569317087795929880796130473748201472 1355452670426293283076721250140160 1372590676806919436638935276584960 -420272171491192472220103113743269888 5605675172444312902716444186247168 9726027815618884750064133657853952 -843268439453071150633139212795248640 2549234389727197161954369144356864 9746110846509556678596545908572160 -752987082108474205202018209588314112 6265826274414695657934234933264384 7154885001505063261352580263968768 -146774153775791511275593995835670528 2788104368543540850420433956110336 6061104304060896112461190059261952 -675383630394874372920217523200196608 2132259393753501489368563835731968 3282054943707394313515523154903040 -743600920136922706830273928960671744 1935488617859424532732160021364736 9817946571574156011423741822107648 -122338882095390130145554729185312768 5863134379297017781356891887108096 3751341634990433202835695048065024 -303317131086552469982562418138546176 4461027919419460372461613303726080 2891194262672303395732072484044800 -933676457680445321841480258937683968 3345309313636328769596980474150912 1984031260285272953614877360914432 -472545033439933535750850913893351424 8651401395541041917490789852643328 3331088582410877353571579724824576 -709776775670040022993684265472884736 4657887989968501444544450439151616 41556970779185856550204472295424 -630793329817962919033013533646258176 7031233831952945071247866770489344 7148742861228573192061824121438208 -961868374062688374194684408834818048 3337015603425831015753308543385600 3739150703279723049785228590579712 -609793936624091562821683668649508864 1977794443432548439091482879590400 8616186533134394729775498658840576 -645903446363419656430890079081201664 2227370758483219027878735790473216 9664075465290138259397436761964544 -275107653194309275507315863057334272 7638919707698297583640665535807488 6124772401328143015257409360756736 -868112726097131543342402794730553344 1799651302918044237478247683588096 783786689075200358146828597723136 -49443886831341188005682345758687232 9764473405500510163045172031520768 6588584135604289481475929732546560 -451849022377572451619987911069401088 437116478998927349057455262793728 7498884225084931584708837862539264 -816344620065776687339025172833239040 7685771574040159801519990496034816 9156649435440229959659155642908672 -876733675937442848886598862800683008 8168374983699949852874966707470336 7438183324763210320212459499028480 -633747995421221696445431923620184064 1245497197332267467917716669595648 1779792139601332662808889450823680 -848067465343275520793162480980328448 2819254111860914075993737158197248 6984526481094557726071517928751104 -687254664511081032115443635740213248 1600448683592674833448281906872320 951768849346105975604238325121024 -275688451899981283378123237396316160 2185398660355105060445912054104064 1367841941645769097213739572133888 -288660124586121406139642299138703360 4944340943043269008418756657938432 8977323764699088111325157758337024 -467218024185063648452043757026541568 3947293182646359827157588520206336 4690381373063859183258979602006016 -667910107385680132492723272776941568 8446225224376809266288267664293888 2283613509627136465021492543881216 -502072871104024273144643627419435008 4551086010746862059628034466512896 3557709123575757506963563708678144 -139398217179385771850929595089944576 1181769639364303744323472999841792 3790403962873158512124490594385920 -378264017239184891067442143478939648 6419020128935776117794559550816256 9697348416720560762321564141092864 -810644404052494138915251089792040960 553261756085175112182765163905024 3140575799603484514100389332647936 -76720711497506421143522730745790464 5456458777204639117517155907665920 1147122894878862158777198290403328 -565144866782134265380094248713453568 1242873972852754030931354190872576 6011711601636932628678799087632384 -94055399640422345909330985239969792 3466136489254501664650708394180608 8009050675376555033238116453318656 -334458779095473551363101702773276672 7769187114227730681403643290189824 4844371185832512503304939942969344 -676275387168054797919923874364915712 5762069820736751902551785559031808 6985961504783493657880475671199744 -556020321282668144866081433733562368 9125495862165572470742063058518016 5286684261068375354678674802606080 -336560112175079772141383489891074048 5935890551616798750894864770007040 1607480034106068172369472478248960 -341336532628013661570463798598303744 6733139982021243528680023003234304 2400788789934876207175897844809728 -173006387587044966475936672134463488 4547247401041603751062615866998784 1531819155743581080733103784198144 -782255600067526075422818278356025344 3973151978577180412082124834734080 4326607508314646569904954847264768 -309957010542705292634132249453789184 5468333759028828954752233798369280 9690031868249916965017059212656640 -402180335431769623753595628516540416 1709958094775019864117918079909888 9181927171363385394112240803643392 -292660865650161685957577168086106112 1777644181655395856114144939868160 2808407942058573455457730806415360 -277646026475089281652715156766982144 1756159032673690196052000005685248 801270393361069057546865992531968 -433808105765410550332783440093511680 3858167274198891460285683919224832 1629683024938475026745926952681472 -880779302468902103683810558532911104 1867323916524783150682578706497536 9022056484668250206039867549286400 -159472224845972608636543864743657472 5253727786055035328597480427225088 5025187590836720019898228849770496 -541529692684303433635878574686732288 5823480798588619227492161102544896 8156139297203359325889027240886272 -841079157422040231552263541101690880 2986401128308727816753767461683200 2803091475764065716691860375732224 -321803195969805861520530129480056832 4026986374249591071299041618821120 9391778861332552024813301873508352 -229035090211797037572136118383542272 6371352927277479345596090361577472 4521455747248945223974478703230976 -833093612176670014404787076790747136 4166012503344861019606573599686656 8676120091939640317730479117697024 -243129068233229364289326110082072576 7461253758655351335081123422142464 2956150144900061127214976873791488 -901941234986313540792267346804736000 9952535528070845233009641035661312 1115553339243686423296862790352896 -814800484377049220672030096033316864 9684110540769993396617044117422080 6078680079897886995098916297375744 -956536118758957395866798479233777664 5116538488281558480561237775089664 3123066485817524605950999788519424 -365385791050120694945301897834135552 192010432486249485582322938937344 5540367825050410067713642599546880 -59213605503054555746360288079773696 1050318752348893353917240211144704 1782239319884010901736033108361216 -639004039865558934977484995589832704 7684548777549175805518792192163840 8817252769063240434880170589945856 -104764111444865394872744193501954048 4482628598836157781886854603210752 9423570133925467192108687143469056 -887177626461478780915727923373146112 5017429077531473240343726287486976 7491873662413451029200313151127552 -755591380412527631896227019797561344 7844154809980268429782938399277056 3279336990448653704165907842990080 -294018701679602073932608468261273600 1191483107085809655124784888938496 7597554223822532368734370186395648 -79898532063220344122885493315600384 7755822795099678506826520183439360 5047510281302867102842561576828928 -392044088521166600924834972452257792 1560576977995928911100747555274752 425844485625165106113031606108160 -724060399975735471338431019371986944 5848712068100512998884032575963136 7469063701220965830322192373514240 -791039834526917672380995484059172864 609013930023619757354837713354752 2117058085246461049389518438793216 -7468331260756924408989325486718976 5682859690667767286430576658087936 5639850093565614783177677007224832 -983641946539022902344437047788306432 2891489324967535078727959898488832 6940179714533543865456659898826752 -242248638713816275007584757501394944 3282856193284102401661431820845056 559366944285481091124579593617408 -746052735536826805852848847633514496 6321085723583862045112031755894784 3366977239597175420502106823458816 -389450449166198866555689164137824256 7920267804553811217012255795183616 219618792823668512990900724432896 -369900123922152048313632153244008448 8929262198957488216497505116880896 2768931737937580993674067381846016 -255573836392713008893550277800493056 6147414586203820075649096438775808 5259899701977952800352095550046208 -739486790568142012806469848913674240 951231580051132209516787452084224 8395808215318800001801254082707456 -542726665687505777616755643983593472 2827432181125606884698395953332224 9135099565108789420540036481286144 -432746950192829310139197026138587136 1949722916003063153054237180559360 6402883823867701828471928494489600 -176347364110968311912400535888592896 2754076535646507868596795053441024 6107395063145094738481882805043200 -70319116490808752178210685413490688 2569091388613837606255614291345408 400028861836124757456773212798976 -247748450278154237890127713471037440 885556770627231878525657559334912 153119635703530769393099806343168 -805173937020439766679732259039215616 6987321887529305735210423136813056 50040416429370119407339111972864 -962127612797116493791707930963214336 2653623145876972746455560493203456 8742819194183737085797251237806080 -776432999257940258166688762564706304 4596839359345155401162531878731776 2370467024772273859459309939720192 -288507137148127743901796646921437184 1881986038507895147957973371846656 4634472387754094636198791854686208 -235678821276382470914904516135485440 8707517017315513991515936374390784 7551216614591639188733346644492288 -283678223856625703648054897354473472 2529217979100737329158590669258752 8445799898104048393965762546499584 -830038062926429961121919915954012160 3158248216948030138216324865720320 1609477654052221383136772884529152 -211051332197688903370728673755791360 1588073108272663988359565802471424 6655850212116328392605431263920128 -631977430225778735511285067656724480 6213828118964884942217546532126720 5049698593052872354577458342658048 -733710926654664045286051703095820288 3644532760272681237537856761626624 8467707261721517588471586830155776 -693677044046703495578444859392917504 4256180554292687853012899007037440 1991304958989337299952990486003712 -470693334913742027480113971244040192 2509565458353560734738502840745984 8665411307289182074994758447529984 -580625123953480373422880751748120576 7896418110887956231088553049718784 1685714232023982311652192946225152 -785863656718963619764480960083525632 3506158069284900824780095296110592 3972088916201219544238701531889664 -539928291656452446541237102827274240 6119993408483970058016677932564480 1352273496536344880556873384722432 -264660676557859826925108514869215232 4256746902280692562102000992387072 880000439894911825773866229170176 -417091783486265151781435269716115456 5051161410590648575338677939470336 7511360892044893432921501502275584 -799795848992418850285632425943891968 2476454597413940040361209176784896 8977979943029859268008388415455232 -982580552194621341470638495059935232 6194191794736295657008651076370432 8838203741916504521297229078593536 -211080176801335423105825115830484992 1593611276106859740146180477157376 2670149346425490192477056179109888 -196761355100112057013644000728449024 6281522320168719936157168949002240 1379826700457899487371453444128768 -146448849851993115211694710303227904 81665306456282012345615943467008 9072584729033638558460537540182016 -20387029729612969425070605528465408 9785553939273082984806842546257920 5411604087161476116827267584229376 -185834077567036022642757714743132160 4698107766712536130960833422295040 1117984705294997151303219753779200 -903110853367077737499707963569340416 8790925087930032195861172350615552 2057438666557180425652299567726592 -948891660209285110688469281354547200 5827972247861198374716967875510272 2214872336555740959483837368238080 -570394501533915669347887180318507008 4405475185597288688592214214836224 233995808889878066193639443267584 -529902486873459900273432733706878976 1148820856549846589880111036628992 8460891598441781080752262553272320 -16126162929244379796654050844344320 7840779032782225659949666952806400 9291838281115987345981815146938368 -91634307567993100615681722617430016 1897340659961411246154659122905088 5353147526882478787178196512014336 -7908562580508837562573649266868224 5125662201334183131509030802948096 6952289189635715627333920514637824 -944234373163522296547162909770252288 4098512300424010292713246406213632 2303910301209282691519499286347776 -653714061373515238290943232788398080 1610737347363981934850232022990848 4180967188452293578846231968350208 -816728302056929865633936690183667712 8477929375902071331395107461005312 782221062167269003537627584921600 -939574522978816909263069656215715840 4636925660725289440348893008101376 770679281257525935395187848118272 -272382070097213840689182699746754560 3370100070528229487544058505068544 6549372228035408781051158750822400 -120328231937266834638087922582028288 883747822298199779367158047309824 6622897762058395203567820396822528 -447433864489678512528539095601774592 8425785020971109770406314517725184 1073069225212958721283733579628544 -747748968756963604518580393938518016 1067214479608106026846539286052864 6810774267788998114979406898266112 -672132687037673818828934945943060480 9529846775923223187268846984626176 998801044250978418372764432859136 -379617965924770970035128804839522304 4535281815142968851453951640338432 9681471173579084858642043538243584 -989558913342220421101273389276856320 617183998528080198303797385101312 4448430869686213341575665063821312 -790994899989234543590219767003217920 4313312804316178088456527219261440 8195129269845286200206813816684544 -82708027246698963487889447712718848 9886895076459457463448504620810240 7730873974276582298468131723542528 -998000413483755734546126057341190144 8652767534786318197327413137899520 3632431479324665368369713844846592 -650938846078904538443404829412818944 8360369890596505232026959666479104 6193316571937957105579644879372288 -94369825933499154687890305889337344 6951912488384191030282487332864 3423723906134099095638575014739968 -286464350206984613741804227357835264 7967794422039491845659184863379456 2821893156676621180148505278152704 -241424148033802781989923076230348800 9348567145519129663977528267636736 1186717731758617436449780738818048 -775257351967736878987535621390598144 7145728568539434585969798179454976 5784983104016104620330887579435008 -224331977341763073235122234205405184 8082171026218292228586730833313792 2952037240822806689807480479809536 -466377664242525181076850815761645568 8527334854646277740350195615399936 5998229119421075017297095913635840 -342746236581330130742808362918871040 8150002775287816676154674803376128 2914027079439813123814866171199488 -486104745845271513162080956016754688 1128924994462891445191116165480448 9663175150365032074393540773281792 -627257763068233416862013447768899584 8887357589918027745368700595732480 8244333810316428816058316740362240 -485271911998335615790975949996032000 7207710350616528893777444819959808 5975866788970520460197835755749376 -842228818920033757288454828637290496 2113677268421026036388378370375680 2838381640730500102724377596919808 -107149990171593407089979905032585216 7207311579446582930204115163152384 2275612502283675248953920057245696 -879494119822653984816606235485798400 4224873345696352983827557457592320 249444287245766930119977152282624 -745674038437717599420419084457607168 9802927464365113815504605889429504 6103041209284585284857856866123776 -474143425990484203093936783824519168 1806129563800269854913205588983808 9230922895521691736883279079407616 -278146330564742572022734140030844928 1206302344344977986787253946417152 5375067514867824059701525101936640 -469892256922033269786314025021210624 228670982674994244738008949456896 3317657844121561957320423991410688 -606721557969225903190711384682790912 4544413608786522328577601706131456 5691318157754411000260480676659200 -327628403163646934252100019369803776 3465568655319358003910368305348608 9514811017942688010078861400211456 -78977638399361670315554986436591616 6747786780966822392700142100676608 419974783851947153513503631867904 -290237890408956842865909970038161408 4243806432635499885242910448287744 9408663215335553709692965808504832 -384916113550753300049829715375030272 1880248125238740884631239123795968 7193831752854630682740848125280256 -584993479154697683085759270201851904 2369854494359066258203532993757184 9386803684252445806885861511397376 -808687029753776937951222242136293376 7910368284054147673723517876043776 489215934900665020452131831808000 -302610628415000554091064431220883456 2449562143227802529329467808022528 7021145137880887683509418821943296 -20171493033660698284975660065619968 2328639612550465892629988084023296 4687869766178944200151114983669760 -920093621199018578617921094786482176 4748677628203306007429120452984832 5257866867604497219506713741230080 -313113056382246597068054673647206400 7559823726523151219492543885475840 8636668527140721901284443105001472 -187527506116402618940821309491249152 9030989375487533255676419662413824 2545328069911659253763473940676608 -81963653014918939891045087989202944 1646724061331518704646892201967616 201924642034484243734654881890304 -397863610922871618049783614672994304 7081448166537221266470799899885568 3502755595793110186647023169568768 -892427275783429845940165579460575232 8956744610363668665843701774286848 3895698768924626332633576975106048 -979385509181391007847739111730315264 5974901408797600963735560910798848 3485975650670632247873224780546048 -77491712546621074247197234384863232 1980429288369390470800898332295168 6252081248713661802159408404234240 -732662582187171146634429175504568320 4612187264882630794459224295342080 6314237136235757903446644927496192 -686620135557490323592563456735182848 908664371512358155796200281866240 4806327722750545577501081452150784 -69906179683200800486207012703567872 292726114039218695986607969796096 2879493215870283647615306410491904 -279503112291306163942722554069778432 9973861949900489407196182343581696 7152224408929614823210609381736448 -110790059085191387229753586504171520 3153850504753784145477062094749696 7422875716170196140054516567375872 -567455933839780232442613955108536320 8842798763529479206089264998645760 1481098636930240333504860232089600 -726263636039909745213320712182300672 2801854634974915246964977952620544 5692156139833892257732812196544512 -341817291892904222263055243855003648 1896972820300805574342951896612864 9708159594721424308962510105477120 -857187405193550667414811336245248000 2695606052341592877984781199998976 1346493394927027029052271741632512 -748501248022263181026978300633808896 1523724659971116400675800028807168 2756641346381603659398919621705728 -46949308674745628958974663878246400 582503574713057365353275724922880 3492284150386049895474312576499712 -580097676557810037179820386073706496 8777649027262080579103520674807808 3932942419226442959726485086142464 -919006238142140446202206760223113216 3150656032401591749658197811527680 7673190542693641152877329003839488 -907415092803464803387825682569494528 1307853151250574829172382534467584 5214204621276532811214560222511104 -921909219537868428252894739027722240 4936158699923214656890408458518528 8248168913887816090692197164253184 -771158053308777457234270220575571968 1723709448000049623176217924468736 6611403261128948745281209477627904 -282901266893595616719382033364680704 3906853615486765503973854128635904 7777950064300134750416024769658880 -109652023883339108646194216743993344 7950587112143045221728297884319744 3228555858124094811756211149471744 -10865866163433358071451599025209344 7532513292916843462170073372819456 7045818531440164244361909257633792 -329521358370471996629588908347228160 5210197242105362280075237255020544 2636485925437678096628794328612864 -821913584727132635041443974622478336 1472058497369843811204422243975168 517511606181143217446659247046656 -95580408547605517844225162880221184 8390824580017156349529013534851072 2498778379330355837668581420564480 -528477175584566738888582185156083712 8804036034009904167879495817101312 828392990442167072175570607407104 -621407199281562746606126931793412096 2146592112495133321295530337239040 1693894137238719957693806103494656 -826768548076733020980188743548796928 8040053086320957930100761007489024 7020557282126484072681123736453120 -557720424821418436351076699111161856 7815598131760549500734526193664000 8421457323059933077545862542917632 -359932169677801434693588263072956416 9089912969756809524673425725980672 8835604564211658447903157408235520 -894725764072984087622598963853524992 8738755484263323090523389222191104 369413706010328718930900454211584 -955851832477120343822931481965101056 291178358334326693676530876284928 210018718734785871610204966092800 -66168208609718438499541747951992832 7809528368247731982692189674143744 183591826405638988940833550499840 -754778405917706257125886443894341632 7404698482323886226584221295575040 7333346747529992854469264011165696 -876286439455718198084965171824951296 1765433871271629715985000929689600 2588879194495470775964103256047616 -585815267909675733356295614776737792 6589408196262054576689891311091712 359790781003035692828349872209920 -65243173955079514225589777399283712 8622969731411272907031007727714304 1107813826980888607919163467366400 -697210418925257023166703294748819456 4339479491065466008680262625394688 9301497783621271958807123360481280 -212339504001184558863327596598263808 533411878372886919606465502117888 3699438489253492830237197405782016 -857735002848363315134296237772111872 8722687234651822087584171966857216 7990409172226473520982972652584960 -52037539071538480598000498242486272 8919985380166162217066351451701248 630345446736060682926978928476160 -717995430931524489406439810232483840 650039905379620177662224174678016 4566098085769488417189751628496896 -377028421699939621148303306157719552 1481840761995285116490530812854272 9032860022673225337555852506169344 -352358393456333232301629786252378112 947407215746991842813039486173184 110857539482866249886937294831616 -197326848112329570478621791359074304 3580324294439102364079391288328192 6142992110362837930512873330573312 -589783057894966945601654177409269760 9945858104953581286531562511269888 3956428304291925699475247288287232 -120421816755239975680567091920896000 9398289076105127680437033365405696 6852792124613540516102907279441920 -124148654256262989558488074215751680 942650521267163507587361143783424 812620266692028542723396548427776 -298017177267070203790785572409180160 819125893193692018442246140461056 580712411651541895739732213628928 -339680126987727849897024092056322048 8064329994412613370427170789261312 2267438025088374647696695540842496 -80870892183365256404261761909260288 2965015239673541097867147065950208 8075496647116977294722103857119232 -605399661565910107735090698863509504 7279560448459326757969006610612224 234591973965864189413846704717824 -655104188761982014936603908640866304 7980215857409505878476600379441152 959188130408621886748346418200576 -670847852648740195472194917466374144 8420807277255033232833678013366272 2102178275917629665076753104633856 -185990135277564270219057058526789632 569857998544464292335922383421440 956044345869434666169101417709568 -484889418651204728670792609800650752 5890661729725764984890778808483840 8274664483452846009756614106546176 -1928091432071696101580408986009600 3849995408133528124349523238584320 1562448008917054172129673659547648 -58340762349797857807462572530597888 8054411580328899179173885979394048 6048970195741475740917980599418880 -269739768346858270672655637180055552 3311125854462793716946729932161024 786146689982405890931252961214464 -320967565122250192246037736455143424 738570677236938540161473731100672 7072037941451252434824008134819840 -842020343051401182697564477801365504 9462247314260053864983063485743104 6031670660737341614308588653641728 -204577090868077467093658255786770432 5344607713698109301490251118673920 4103240564013623846874330142081024 -990489875235631435106193662617321472 348707838325215757887223422255104 4724018555219230639124362972626944 -826537127548086188212894108447932416 8320755159274568143810920175370240 4795779016113186013020778894721024 -150664439217119523269911057400856576 6297240476997988873615971056615424 1018949444294199658516950506536960 -816279092690600735220748835941777408 3557393107672393246891135278776320 4580822064666453832934455676764160 -286338487220150740324868540935962624 9328194271540690171098526203772928 9024961077147731567448011913035776 -643568672790174188815477571772743680 2970608216973110264125703629832192 6087460233451837997992028462383104 -481924272600126564583954880967737344 8843485469715479957895392434061312 8941895486947259447711080814477312 -402891950581168778148261270801874944 9724340808131949047462636797558784 701474681683295549096901713330176 -568262118484384941628176895651610624 26697709800176457252149005385728 2853833336577586436686550327623680 -215640537009356040222182304395558912 5133829769219518782336903029981184 2925739642293173994780823167959040 -433935218886564900885088952593154048 6918134833730501522332708690198528 9355659895485073228276372145700864 -821625107576035447363025933734772736 9340225094558182458579618403188736 9319427916687991263344510074093568 -124925258661707489182389375359516672 2508580761023804105565979971420160 4912470118861119543453384420884480 -48311042013003000044872355454910464 232233139683010729764915236569088 3989482978881632833839873617035264 -821973175813382135990975873123614720 63292011250491167268558977630208 6750004229717676462008606889345024 -547937041338649796463570045850615808 7304485729119641110964544762544128 4751549622042035039468778615209984 -246604862940371535793832964971823104 5331900604439077912913284587061248 1479053397762324135292917365342208 -751232705917987176201119432764817408 6384431016910030856012220889825280 670700806414463229689419825938432 -811322148915961090043680501864071168 8534853194952362565685722491125760 672072487242403909074068564869120 -371864226580787728901796987337179136 5882454819655933000850447852896256 9988871694726825128956287416008704 -835589070884759268935758591115132928 3358311879687466690144051434356736 4019417381467230439352997605539840 -604130393417375680443847359290408960 29811533008039738833563386118144 258612107281458675369948200566784 -55216748862601645475887245235847168 8937703352051772953592266286432256 9823672070925877928724818961629184 -357212898277409938634271870983077888 1868188596502210316394769925799936 8910103769258678779476189179281408 -984343130005930522888996916255784960 6187636693144147703710100725170176 5340646033311344372000601225035776 -795736691365594560014941437472800768 9696446342623692471758715889909760 4416735529437805873183300236869632 -810609677140328148594615553984823296 7594412887699475914108905453518848 817094943920861572458970055966720 -772764579234509641194245811616088064 2945316571837890115218357966864384 2900303065654730584379626023288832 -133402168445583150624291751427309568 3162365225811387726972374606675968 4817386902639758360896336579002368 -424124338160189844420226372702568448 5735828884488800529605160696020992 2179273560846353408055969966981120 -250211678507643056671622324771880960 5436719040297046923350970982203392 4339015089728001909695315942834176 -798277972528075423157462357308866560 4925444616234597134121924955209728 4726478737500390393703816415412224 -870724693422891630716458423063412736 8697733123947804176239786222157824 9968987583526688715794742377447424 -957073094275173734903908918192242688 5805075056694444917814443873665024 1595858861268484155742925831012352 -953575527136671013249134212719575040 5618821443462301305279894280732672 5638212797608840647926079593381888 -377173367308196849639173003755388928 6922137243947739412253495781228544 1113907099976368649895206073663488 -655331223703077201683217127907000320 7632225527799350244161421710458880 6236029973853055560094341492899840 -949782573081201786622199231454117888 3362305754904884702172412391718912 6005385807847832657140672379224064 -191041867229045402040787801269600256 6989518434875020531033713707843584 373601137467478286959483591589888 -523046084664118314185901667283632128 4083492064979757065288445457334272 7555522893724352024127845513035776 -89600287501682373616929677252755456 7594702505109005176206258815893504 744430583741434019911534894907392 -517974603006276797550265858890137600 4611253330539964032364263789035520 2810959316304973619919456581976064 -357840545209883409671823853950599168 4174972890213073217252918864904192 6941529457761484884263310198833152 -127945293999191926035917567497863168 3622742907283588830741400825888768 4708898233649772220040500991754240 -79228094003848037912962688035586048 414615004224729389462867729711104 7692234811288960313660695948296192 -288648289268370747823534287989243904 415659437084023456820435842236416 3797261115901199989614002791514112 -926099310764064654809417452890357760 3974674714276977511424153331171328 9470725069427619616987217588649984 -196460248265459957371229286319521792 2955585927609598813878330213793792 1257427109894082847036803532193792 -652367028904204736150206197700493312 9217438913544842803802407826358272 1711957492363398308267999027527680 -903770709307963232253073881596690432 5231463942219319368512030233329664 267205511103855009852674164129792 -388340665088451939749622043193114624 5615743751052564538317798840991744 4250416048945523982828277877178368 -204304376093758977932903252525842432 2161530855994119365378775602692096 7329356495062083931359284264173568 -14950969562357709411381686466248704 4198480516432220671827114329112576 9131641929096309358486852288380928 -730920837975050848961654564916822016 3817162280078727132171599779725312 6273376758952643490303935825051648 -189036164847540578233369621379940352 2369278785592553691356211470925824 5273188641767931297839100557524992 -517218698019135151446780295847608320 2099535275215774115353537533706240 9673810129164280569753859604348928 -415693580233162974707974058973069312 2406283371211741878246576519905280 4483736716850324611826315811618816 -595592889929968938556680271657172992 4830081184823768775065771698028544 5624358444672145092017407116967936 -150117102879383219803867434721476608 8197150781561325768423492112351232 7402273763119359685500166595411968 -350010227573815414349635703835459584 4592194024497369702081723629568000 334264185128529705611225028624384 -7484510605686306828910772422180864 3210197997914864108914998331310080 9569231752742246447001888234668032 -166001709094643516524642480974462976 5251368959481205812934647792795648 3782458974665177249201058478030848 -24470785768497146126126891900338176 7117176541555059927938596908040192 4989606984130283069798345126969344 -481535754628244164774522003333840896 3382872301738695463363142542688256 6048609096572202508035911223083008 -40649737803595708951516385413955584 8479824498091831766383320522293248 6695516711940099718212038862831616 -77876628561661728093053284897521664 3785484405775048369973332195409920 452154122080089030203833292161024 -913066263503691007664150611358646272 8150323629715622575950113795997696 6396191364751374508086695502544896 -855774627277300698808962767222996992 577080639513942294044882751193088 7819038929712439212811061106311168 -771722164765796343732445328430858240 2350203571674042445224044423806976 9465650547669671324308415604326400 -417760863610762632158047367791116288 1488955415828699606751715369418752 2282784199081792099069543342669824 -542728394280274876736902037820669952 771639580361498960849565661528064 2574001841291796227290241142095872 -85431008709422587718119804492578816 8562601744965525337629820673064960 9590896983085844148819064178868224 -327434730139564437866859134778867712 7453703742340147500936673905082368 9766579397922361058711156083916800 -676172617432030892557853986817835008 6426637583740837319900592049487872 874020175192421744458660373856256 -749260844987011276279416327419985920 1558931874672846797737998048821248 9781758664423413501547212536020992 -429798643976534860344295389992583168 266476595245066016224796066447360 3831369795993097863599484762587136 -680793527793333699033357438137925632 867281099316664097912267913297920 4727823355165416554674821231804416 -933139707440947549115408585733439488 9299667361258369404294712357027840 3377877397586828871375881209118720 -859625233889833138391639680371130368 8929820033468548316893096227897344 7146859964253200922497990835306496 -788943570679845712625322680828035072 6115084455567002758681219160866816 4458824934038937342270061101973504 -340662349845955002062466575539109888 599986666532840280251675290107904 3709893478731197622412316808052736 -447782097428253783492167326549147648 4792621962455722729087326186635264 2125112551194259064009970631573504 -682801159204257976399722670639284224 9044217166078492428755780784619520 5462705398483324618685505240825856 -743948823673040886909521871629189120 7014785509757423296696311105978368 3627055871652227507177579159224320 -34310256536784735678852540810657792 7477941633674919606785192094597120 4777569506001324627541477577195520 -628088635375531365911605319322042368 7175424119755005226068594300813312 5242080277688047540417059291660288 -138503226347250307375396140689129472 3044927501767844707527919725969408 4729326085912218791812663991074816 -361785526561245666546030624297189376 4553896205979555259539924004634624 4378484914122004876373763102343168 -613787176592856930955541854134730752 7027381718293933667110733857423360 526996739330029730698418832015360 -520428560902156711504803391936135168 6311994427987716637577099262033920 7198565066833072385287001202491392 -931698099956416284798626032055746560 7952318105340794594183212999639040 6017664688009082508646289036541952 -107009266829663025683656313084575744 136666970834015300806110487773184 7280538795293996960302608337076224 -849822828056194715737909722643169280 1301758003915908295740008364507136 6851507449685826679511979726471168 -215988209748740446605243260977807360 7785697474521378383919381701722112 1830194605458314862104396758515712 -741753930615529497153326063927951360 1363946416352885271301687515021312 4305123897483075470928424028078080 -516506586776174436520232432049324032 576953077258485543922854996738048 4357354988142056897403577102761984 -510269967560964218588848912674586624 670700855565044103675323491549184 1265111633111435516576320062488576 -440546651692104973219280846671839232 2567991122459947717715805931044864 1598826303810925613781235611467776 -935239266997532106968346991087583232 1930508897002375098188338514886656 1811456004943571725837189695668224 -633200288120655169193504689560223744 4789236001596908865735583900631040 2721565024989755197546191380283392 -870837568648570184861103200686571520 3302261585623986241126136505434112 3235587956189677279717532001894400 -433526997983773971093776490416832512 9942731516186912336074539878318080 9785498649375315277227044450074624 -661802532776115353419374430221500416 1733526375946939691713595095121920 5484323169266554267510987615633408 -272878225991131893191980908609011712 3595674651445121241165703256473600 3290905733167736680799156811333632 -696806959932603724119330935317463040 2887448383082420058134540332302336 1745341537910269245418166810574848 -537222179618464304043182955538939904 8307778974851000133355155023200256 4376091206257513788434796064538624 -271823428585770662110885485620494336 8956735823662103209085485954629632 1777636506322777207668953332056064 -507059368432556754111515516702031872 4215055400025065656021184344489984 3308768346465686472252705833222144 -311762566567138450239251706082754560 593488362308478290608342521872384 3876355594262940008384107865178112 -188942023360515763556439240365572096 9347413465254870210791084046417920 5001215158021798576838797424590848 -746452019648477585494862717016604672 3572008856888791112536711464222720 1660294671577988754656303010283520 -124769403377705667824155069121560576 8826208948343560337474535628472320 202484346228118600630001475780608 -713531283395920699288409206777970688 6194014874005994718079180773261312 3686354504982960334364118943268864 -716112471728859421365927739085815808 2429949647804666933996868903895040 1598269563802545792663018694246400 -409353070578610858159688925510107136 4419282539487334984740449999126528 6397874004989024134104767851921408 -246902912837331247338729773773881344 5309778107746217635407493790171136 3701284299066574998782617124339712 -464281978534693288542548118460170240 9048111997470394530654097319657472 9361135773519400931997528207917056 -842042592096011211379732992638320640 1355560425779291687509295322103808 9216767009970639036356442393149440 -584160827339167485225598800711647232 2761391492315810276250043411333120 9021511142491372530540177984061440 -637086897999745573441878062788509696 5497730916894742222364542215651328 9732486898931000948640005945819136 -16198383699048774263438549157150720 7626115536411332786759233280409600 4448646791755347204995037964271616 -67417611886123255708708916187627520 5792984387636598825838251991891968 7380237741139551602602397333979136 -360486438181986519635096259656679424 7635813879145840711725714935644160 5908438161453962964902876693921792 -73119267879959035198189185448017920 5335415114597626958630064614277120 3204395723870067258771882429644800 -59242632747978888128053963841863680 7999364330729983446472502464741376 291556914291090010870818396962816 -254697231186592978831892452321787904 5690580267904959793658136453185536 8490461925307209298315162710704128 -647005623984825720057318202935345152 6788155523326724754700725622145024 1750207404620977698174025877946368 -239249406310501499717158713587400704 3236795905574894463378939092926464 9928932362555849097689357271171072 -132613008732111464773463696144859136 862793025592477441738741047623680 5633432228225393348977801834790912 -184840143767241125411091127090544640 7524286049413989746433645653000192 4504817523847517705191938968256512 -238981353460593190224470129023909888 2770846762278548876545296210853888 9071269662940999537644214272655360 -564630518173377077362006769130274816 534490242263504930930308734255104 4963086789057029746061973838102528 -679513838857661667057774059174494208 7837610234342769080160442979975168 2535791318765093698799508452802560 -428424065193354046069120569937231872 7771929187987008956518088377892864 1686741624115536232726690093072384 -100285735834071757038370943297126400 7878722096521024113781749804171264 5814476445928270012790501518868480 -141674317943173453127529482569121792 8403236616219518708741011174064128 4888130744441936032724797876076544 -943299143303400136825005000653537280 7090304202832730186656581895061504 5465219960396256452437342930599936 -886328035595569023388043703381655552 8554169499845057752359778178301952 8854043836535458866859451464286208 -623100335848833499767106479667019776 422164179343193536716842165338112 2798409020021461470207356950282240 -498758702658709485004971754492264448 7625430131935789794498897424416768 5293656746480870984152640741441536 -812404198968157388264932083595476992 1956219935383233912187428387422208 3192126431769765642439046903889920 -847338464120199436904077904370991104 3871930774411812551555333478154240 9564673898122256448150978810609664 -31404215443356706497840325104500736 4452112789292403875665035548164096 8783414533467378350055625397895168 -669871763451146350062907717362647040 7827139396901168186564067199025152 9093115608635454802487804667363328 -576233567380379577410488158044291072 266523196742431600285254508609536 6817829284394036338566601239429120 -392951815617667136684488734606884864 2113056949111973584845277610639360 8720040368655952329427312565026816 -405477577711934594916356832207306752 7296020203823080046768191772295168 3008977878015011621276640853622784 -569750104017291673737209083601092608 9287314184052076436554499265396736 6049568445416836608143737070026752 -323941629254287771928061495121805312 4895111867656042413176873738567680 4221597980051126675005657269141504 -107951018322906552845947524427546624 8742772741586326639862462919213056 6867724807708324628143824848289792 -425193381436113640253936567769366528 1191630795566512890459907197763584 6122441710897033604547431886749696 -626935032713535591204267571506315264 2851358611095398175763709852385280 3781112237064047768228936724512768 -112211860283207110457880690800197632 9657142050285730487123995657240576 5316419377094267912403326819368960 -695420885969223529982515802663813120 7405450797154526962299288980291584 7153115085194980968154930280923136 -474701714639405880761902657775337472 7847681809420588335481285295210496 2848157315368764308874398596595712 -700582794141614934022577683559350272 5291793740895269969024246351921152 4370116739496044443309303652155392 -368774181520051501727249570075770880 5658648733514629916631443521404928 89904062958064295224981887909888 -323448091859723001210566273132396544 8931631867756338875220432754049024 4895990446084096370513491678724096 -52210871525050247151870348500140032 33984694488781382871086421508096 5608393537066190566620284254683136 -130368678233460805741647121371627520 7373738433004643570816493992017920 9643302569030089154129116633497600 -436617664894258805937770418025791488 7511387193841767605168589775044608 7250228770256774844822884179771392 -703886972872916540910706985220964352 5792823752412822258005847117398016 2104839875456036574966757692801024 -765130557727084392548980431150645248 5474898138516375733668194564440064 4735707266296049602501584804118528 -906147031848874029164626233146736640 7463706552642363065254634812604416 7209148172724500036074018330116096 -520911212385977342113653350478118912 2433048930863914805373104235216896 2393302510977540168586965131722752 -343123129332138802705455126339911680 2317358959852217557450945206419456 9139345803359016733773700240769024 -59070685684741065230219484038430720 4080695914045232068484496948723712 3914437504525472957554464565231616 -902720412350986617590505839173566464 5558150082347328335864543148244992 8567698562035404093335955700711424 -409550443090190972177830430690508800 316060601938966028439728544546816 8004596176575963881977231397879808 -811994165437043334287043175680835584 8953212675701943988851348307181568 26324124401545609145508446601216 -403850717650454924474742938506625024 907215698022126419895321234505728 747414333313277279973646501150720 -13920835589493490330521268698218496 8264059429199980199101012455194624 4745315873780553289201113259573248 -319535847975876780463948804007133184 5640358543578325507819499434278912 3316373477755198337423303528939520 -380373636745299153284316685037207552 4096547627517313798295575620222976 1221955466606550638373812205256704 -576631398931183416805579016384806912 907700501861870065590748435185664 6054028066727931052325932932005888 -537281633298624478980246422463447040 8862537467294623730998464986742784 7590694650006062559543928459100160 -131813054203728082666140702114578432 5219482210556875497157384015446016 6686364723002041292342564147429376 -996585125799098272382600101509464064 8755193917545571041741598858674176 1343858419560694572308083278610432 -170894105726392543995104622725300224 7646726587777495326758436232757248 6873660805766354986546913005797376 -694208445796541349707198996041170944 5402319689734493159370037561131008 9591791590662066717071811861807104 -709221685809847175665940860478947328 3154648475479064459409755696267264 3207393603675601480724900002922496 -771158693403511236490311560945729536 1683674297999051405605443783884800 7637218531588526959185876293255168 -570453814133171229103460994640773120 5085357722862708420248499308724224 9152198214042854210558714601013248 -825863061616736460201542786633170944 3662827965261086731948777258614784 1903216147310009432545583349891072 -602977388984804767612696367380561920 7281701546245880064681054801231872 7038340609350792903692387025420288 -609857486974651851150473561540395008 5750176824914391893670884605427712 561407154587445130726308757635072 -660333282666801947102694955326373888 9317084571208891775449842879299584 3629220225615501592514929717411840 -745225268584795629580870090089299968 6599111273115017534196649933406208 9558887565685904383782019101884416 -517681812348343519735971428354228224 4980325412750037180620829305602048 986142361677916646059615407046656 -978059110339814634874791108831870976 7167533874995551127517054996840448 5282980601912721028007691592663040 -99308992581446722802630928319381504 9179130805512058864967385018793984 8771060254049377015740282097893376 -893898615788315999132353821411377152 50629810333908228270853529272320 8314727711288742998943812676485120 -72138787269862210639955724188254208 7574546520325301542364317816455168 3622879484971262994455442627756032 -474741846476710146755426154570579968 2866757152242884864247902450483200 1143965033757190084296749399146496 -871497859657915022981597045851160576 8305741701106588519536877969080320 5237586970942547421965254442090496 -380348154251606207485345800975810560 326958560161818547970723471687680 1852690441952887812595754156949504 -430469027445628045165244042893590528 2393094374751839014079829064548352 9979489599678746354904653816135680 -946842524456012246459321783756521472 951832732551515470873645589463040 8418789517269781959438887494352896 -440260024284756557463824968659763200 378614287400579437031829348024320 6329987890101579977412369610440704 -546727233160422689236217746539151360 7709407763372893655585649070178304 7614690352811558304198096834265088 -352330001395999548032993780266172416 804547680891861665451992797937664 6762342022526201380630145942945792 -679783932372619196953675670558343168 8866325223420656494199636844609536 4374741504471130456232687994667008 -569783026581157055801085324815237120 9895360982439042159492649256484864 7334431990050460808248957587161088 -284556679111430511471955031585980416 4243886747194976604244778208460800 5730984266133723653493224365883392 -723402572119605644604385929872801792 5771114131100096385148945212375040 991550030699104014574284634587136 -233721394072326048481189085608673280 6111545057437048535979118229979136 2038706355177290817973248239599616 -548182246754263879630594657126187008 5616544121043392150144983679107072 8769920763930830635909807035383808 -71811739878189233027425911554703360 4831807852213789181081052229140480 6427415423584256860022184934899712 -160373918732763091491106718727798784 6670463474527454558753790359502848 983774313912310301139051386765312 -540941068840654925879572272202645504 5305658280545146453983467434672128 3374378908867421502198979516956672 -309171006982521618895480873077964800 8007687075139546638793838572863488 9917528203237667082384470737682432 -800337298576688603829388970536468480 4469454776513833633425652971470848 420460714478688089567538077237248 -521274937799296187317989011248644096 4829471190366415188444996266098688 7698780304901483378988361231368192 -275959821769331082766990952405925888 2611020297733907042169925264211968 8566412106413052305526408322482176 -254202362847356872572689195456266240 5115603608336166144969008970989568 2598078741295060443948959630622720 -929735397258223886105120002982019072 8971170711680104982524894898028544 9580194315699194781796697823510528 -374337501874576546250102800996368384 9965100250939747834078284665061376 3430259968294656142410568773402624 -909118914074698031666268988235579392 2497983824146809726459237009195008 3667521002213745027075789394280448 -867176593445195347584010769055875072 2958353231634158623214175690686464 6132537030292997171820693397962752 -501017206337334735397668161792770048 6732398306708477310252766304665600 8219479526326847041895464754479104 -590127006306785670053528996098867200 1682407058335949970198418845335552 3331321479230904824943598362427392 -440982031851086079745173144052170752 3934868182834657750527846373130240 289007101165913958272635051704320 -371002832297473906822474988555075584 4336209677764342598696973975420928 8053068930647608338127300616781824 -52314758129316865973027422328586240 7591710252821655950856410495975424 3910002346008794842216187178254336 -657413522781911582181300352329973760 4482154423752849001267147697029120 7124659705822983604969855355191296 -461969758873382771354214600584200192 3257174905974380409018061019938816 3127980986421980011123905671462912 -847291725539151668802334891180032000 6540805456094113689975312244277248 9190629087248208424381505502969856 -982043056049711272762176020905197568 2282428021320070114512045955088384 3483933819335424470929884303065088 -387836041971947683899971776720928768 2881971344528566401496713302900736 4011869838143448240500844416466944 -132211213776985524693974046713315328 3202065923786276247210462564843520 9405993570542947054025830175866880 -507775078407156177468756880485515264 1500928351632339579610251764170752 9799429087760719987886689200635904 -85583348077595905269154889942958080 9303567814063630490663767274160128 4937410659594536956204502168371200 -548837524501357582877925536671203328 6107973931094985459641241680478208 6633703703985533002440213320957952 -513945216234976993461510564499947520 754145173593324085394952473804800 5988140635609204368898390814097408 -697445834598312753446956408015683584 1839401033940165316883497774743552 4986106951155915703864150751969280 -260206410005323540511459324874194944 9742301361595495163339833589366784 1874778723628363501743286121398272 -668340551883140793628429556218068992 3653780291559001638450011364655104 8194797232502780263594507051728896 -780026462856568501358791139430236160 9410327058686116972238991882452992 8883062730139694054173901248790528 -549812754312709963753263026176786432 5883316925288365218384200735916032 3788328421528253615112272765517824 -486762026532116703610702558652268544 5637512251280035302523084623314944 7001638716865486373184976394911744 -907809311822592579972139143638548480 6724403260019843329742190829109248 5681158233624352338299344883023872 -629635054336203441320213254315704320 1051727217882599785643738222559232 8868524434099304741239119566340096 -709735595515069878871736425486745600 4777067897833519654715435008393216 3771775698161235028831102962761728 -925406286587474669441456763974975488 2406567654246383356373193359097856 8303398123844424140799791148826624 -186556262254628270089391382602973184 9413334488163457919360601461620736 2534006552296831298965475669573632 -151412993240045234308585725186015232 1892298263964859950382441358688256 3675750773963427552453224130674688 -546616536615754766972791013905530880 4334875928347842551559608183291904 7520269272523379913741675859542016 -481100029276891987802578930330763264 4690229334200135103339390117609472 9587948111752250463773188071358464 -917897406391666903276508904853340160 2109277388744296483675539381420032 5685686949639292020872113444356096 -732324077035660442735924913287200768 4112228939728797754251226780794880 3591280324112493434369971199148032 -407457706664173438626938800719265792 332606021499146977045150181621760 9785866779126805732065721274335232 -513330599233904170743753842282725376 2181819778849724427284488692695040 5858666706626899596877767171375104 -601605911299437373326926709463711744 4411489634637045900333979667529728 3098007775891475167802118799097856 -829444049497944112408263076425498624 2672291431256323300526401077116928 7623432622500448338355633029906432 -816871517997350457252070116672143360 3343262685218234157231410146967552 251363227479539961620515314991104 -153382839726043577057463565291618304 1131570804345220704692533588918272 5013980636531280665924134173147136 -834956517736040495993149451954814976 7761012124315720289166804312391680 2158577727922053664216520209727488 -99352565044243675561466994049941504 2733017216497036447711508756955136 8830625033696117370518717903929344 -487533621670644600914145805288341504 1899037350602056240334607979905024 9068781731304969898552880489562112 -686597087236933066916847235463380992 9196150960418638769259775380160512 2011964932891919491573814952722432 -517612213912967825200815009995685888 9980106541835206978419722966532096 9937270374747538248917258258612224 -275936203894492501999930806741499904 875980009574677175614072900550656 1894434567720938274816970528391168 -695870375972681972242746674981634048 5498849560863558808901562962804736 9014809586663919470493160244772864 -161294716550905673644564522534436864 6710655917936367172988416062128128 792038048421978820144366652227584 -537260475816993564161477954232123392 4161112074666277404715964090548224 8924194548120363364243866296254464 -648542420054303616928846749890510848 757603325374928962106599625719808 9010361875901038692291363106455552 -421143120885255879618798226686083072 5013604920435106895143881886662656 8398927655283408141384987269136384 -49808243289239423358167100732473344 7128680770132182623479527517454336 5776352124890000848455718481690624 -512173946229299085118029613236224000 2924985724899754523045417434742784 708548441368227495588023830052864 -859645176667629600593297575797325824 7864219128471162796306429426794496 5871914227342031285392036245536768 -350740910774468262761590632814215168 8630558739908066900471823562964992 7956385807932301081550404875976704 -201256076442003514558965879268179968 1318048682700608923250867753189376 885774327543460984643443293683712 -461313238662119464157652228543348736 9391423794939776560338452546060288 4719174369750167239687071265193984 -565011553599905595339285349525356544 8141880582363473974024976746938368 3982653291222404199349959943782400 -84202476147632274320806053438029824 3692418274108421017542672236150784 1189437206301226798425300526956544 -107277185643361956576404194763735040 3089164149047039063910676923678720 1812322876978774473782977800175616 -576360129047561179173049427680034816 3288323378261415062359528787935232 4953241537678324509708951092199424 -647888230805245159758644628974206976 8250416069215838018067880269053952 3559665941569765206836870817775616 -343141156270681449197594754039152640 4525642315986478755049760930922496 651967452734885781633232646701056 -945612656649279671746689392936222720 947129554983842961694268470591488 6758543537894360208789427711901696 -806650583184481173654424983049338880 2596700576334143085815608727568384 2689617866709567175564410287554560 -721651897406491825400306235961507840 2351521419319452165104966502973440 9298362992991422487107740834463744 -157256755976209469995345388882624512 9123815096267108903834758045237248 163404552400664332945529554075648 -240739315352812625573942323492945920 269574212777101979604453746016256 3721121185541820391169975199465472 -418013104853368753554265321911615488 4891470464567727111725315228958720 7133608760876539330636970041802752 -125870790308123099013109078401482752 8559973163140032728426145388691456 9822874915373830457411611433893888 -666027122572815431347127805513039872 7880351482309700550758015942262784 7058212435424518607618924869582848 -491685027490496208873383226473709568 4112933506356397449539650045607936 6841630344166147254377018686439424 -465610173444547384907556790615408640 6529479743101046040850947792437248 6045724387773464313765449741369344 -222242305668264880744047928049401856 5123577197857195334470194518032384 5190500278186063922793680516153344 -889070735634438385632760283313209344 2152136411406988013000420088610816 8745485236145511881804861900062720 -974542510580543727212152306070978560 9610639366460102400474662781845504 7210359377990055623314697265086464 -26253555094385604674122381214613504 9772187102659643382183060024852480 3995309327328798905367378761089024 -771011130675904638740890373815533568 5927416890473897074487925625847808 1899749429848467220009810829246464 -402963084232941636150483697021222912 5471568404000816997886000820649984 7204700147295443605506735533457408 -836134592604296671583866568637939712 8853908227421599647276621180698624 1107945414191752267142368768032768 -692032950802613420614019708610412544 9693758421369737907357656761237504 2788370372064418531443150346518528 -571149600040154814132692583700234240 6051946837952819767821423037382656 377857450315873131799899029897216 -796495588269991051288490531123888128 1403319880172979549560624822353920 3343868717684614439072811863506944 -879157390954172768896948349712728064 7153044209796496625624233149464576 3375025632775134963849586215485440 -671439063861527328991013327469543424 5070406316606706517525817521602560 7004276245053937067756807176323072 -569041648246383845688764553001697280 4004124274633688808316156386476032 1460479851923638388184787244285952 -999222897045922144603886928848224256 8348980870079172852028892963143680 9170735929935739229366474281844736 -526182638889172337612292166732742656 3157127924318267524200030143512576 6683384946182608251083343506964480 -703170445682320539345162493761683456 7388013124789704230005307430928384 7131361241731761165140273764761600 -280730688241135128529298873225576448 9111743313084287678368366253309952 1120470516994924623314941206593536 -931300372836287086496621284374347776 3271164115816132415389773678510080 8744262734402029191214054531661824 -228230555644422240890556265917317120 832799412559692619360909429571584 1468900376837403546937574534676480 -992302383211761941641385112735055872 1165544682787470023139626445701120 4999555609798849705104468216905728 -520512994387365305210288539290304512 8712852154568245640911451922104320 1774507444564689504223395888234496 -243664556528244934557350669664124928 4202081269520757597770248569749504 2970726248027226083033947060568064 -697365026225073848723117151063375872 8862995422888254390621155541123072 8428444046164522020348256921321472 -79089841790219353227693557261795328 631276568845841449753462525919232 6192168873851401310070617535414272 -370063574622464650122602342680363008 8786304145203202358983821375832064 1285956648172604958239133943201792 -536042138765622362924441771651891200 8427955941950469566633176362647552 2872148432955760303229148204105728 -356943141369864551586954116589420544 3173059765060727451385672339816448 7698108709888629828236202888658944 -369908618905073476779581425382850560 9044755023264262407043046109609984 6869522281427572138136171060396032 -668861672241806108823183137051770880 3633361909137663171698461318840320 9529627456782820266562586234847232 -801794753243684271217526934813540352 4164335002483976892089819799224320 6948113149905242264849027895918592 -119728488786392292725636552619720704 8888425446324462154337762160934912 700103714675015408251913570877440 -133876344731730809541335615157567488 4413797926954436857234701825343488 8544589215792368657015142994673664 -617351072372358793820940539447476224 7738103503033148035852490097295360 3602243215549468638656691815055360 -954637274343594148820240400461594624 687930979594959011358221908574208 4894690067435828074662506126114816 -598174230078906574066240309096873984 1194583186847827673642242242772992 3322204893457458221680399577251840 -442411977464313642126766041573883904 74107829725261512456844831883264 8647647925105849021141567297028096 -36864582040576152767077066442014720 8533491017698059014167720617836544 9757306693074376940596825920897024 -741653160449377537408388792389206016 5522648574425433248118888619573248 975852641793070343038915995238400 -796243365272370175265843701864202240 615920089919402362717145636274176 1953096923267908200341731796844544 -55624080163744278537486781141483520 910597374514764247610764663193600 3310937629470636825850691977216 -866721178353100426053569486071529472 9581500793140805366772695591550976 1417038123644746092902011478474752 -712410872429693751434640986908655616 4081789513433661837879839488475136 9094513850671038132136316648816640 -428027669788027862796086178203303936 9017649740175524954416553178169344 5566616640786341681003899503247360 -101777331603842861721261551770402816 4471698474858567418468334628241408 260448812674387953704549650268160 -373138030447933018640660489173991424 8066547696469409329159227372994560 8352714093016866343119419464482816 -288691142655699356210088711748059136 1710719039698242398822211218571264 7712287678141158885191224592957440 -228083382429567044352893666067480576 7363206641206159682164228179886080 9219536800800471698111009566752768 -313121997618334121702006430147543040 438082717234848810047806969479168 5778525529622217896961701222285312 -801433398363067558522719354012827648 3618218633692019628359623704051712 9866856858662488683339876868816896 -783349083649363862842878347026890752 6752088547002708892949206756491264 3876085593414358501031411007356928 -364733938283282664121489722565459968 4827921606420504526569478819938304 8085798406531315749050768179593216 -812372574389132060388481763934994432 9937084449346458179513577879109632 3659442230080513476689280637075456 -564216912900828045052699991783505920 8060109354901038622537085018439680 6640155403660115393150555680407552 -67562097585853030417304985070993408 1639934010604284538245690523910144 7997981420889174862351297723498496 -332114852039327925949937281358888960 7137229526627096323778284517064704 7267798697553952609923350713597952 -642382765274050160387872633003180032 3544944567697909891359295127158784 9628879278498328045930698202152960 -54299273583915585359688091966636032 4641717977943144482371038225629184 1394331625730056760789478735347712 -386335964714356775993096753161175040 4319460707196958948847142356123648 8473845186701093040020129765654528 -835926253371621263902836411858944000 2923575412654564898806567052247040 2732622289098226541069146154598400 -164086831180722109731695920200810496 3693322145766189464904148054966272 2613112497559331854829244152545280 -390850330256866328826183267163045888 3817786288154133193350873916375040 2171000125761057205493468676227072 -141362156516796708843191340126699520 6437325881401706638001954845884416 1148380862751391357159995988770816 -104459524574483104471015552886767616 814761215578625846618646160343040 7684801346185558205984178022907904 -360456557680707858772813053689856000 8283733758565879842268977521754112 5755701091245548712457985578762240 -885849498722197339876841528179556352 6950476257792832071893370510770176 1263475012585181418666510650441728 -905984374904493669324984414327799808 1641330326097685911118683006042112 3263373874298775052817238587342848 -784270414066621623139299724019892224 1584577345850619855668176081649664 641858528031593572116699637874688 -849873195889223725934112381161439232 9895736376160015072913421387169792 6522343606076522653497957740969984 -364861302596291183035709395394625536 8191945139211057180733291817336832 2522487657642227768001210787823616 -990941036016376448629831975066140672 3279456711605271507775710568644608 1298451745150484934542931781484544 -15026022298071975314942645569060864 2004359175322469904199213679378432 6908481945787683436830123347673088 -730206981114079812898509765929336832 6996768952576448214123715242229760 2403971850641714375558680952176640 -748280316526394588744593628186279936 9629519372425523417349088427900928 2377107859630109161075925506326528 -511794688930999087892008870533398528 2691858220186025783372323196239872 1297024052896089939353701397299200 -318104674773585022774632252415410176 8218889797837456564817965959086080 1180751196688120626452970633953280 -881052459516635025069385205061517312 4659388134160656132778240816185344 2972193824258745899830950471139328 -147226914793370880705615290662125568 618765359836682389240845063684096 200075656171759805770948063264768 -83253892778603422598204298115416064 8762123685225179432218894996078592 8830378238425463107522272545472512 -116671055436985441922739695645622272 1915619240201827288916393231122432 2889619703215266037572269798064128 -535618912286819070444087249484120064 1308231277373736414750345204334592 6528932638699994694877971287638016 -230613654540447985911201027227385856 4174640839056713757671177517531136 9975560327591222515320346604732416 -703761704280431945202936298237591552 8206156072115374198706920889516032 9856593772106955131087699509772288 -997285369984221366143783603697352704 4988020790402064458637183339724800 5011659885612236306973544381677568 -427123331791684372817416572681322496 993035990850374091542734013726720 9934531384997554877428788201783296 -537914881757811660045251922270093312 8319014201989462273797349013716992 7098003924762952441240160309346304 -542750005380286570603090441022734336 7966499370057085840554565184782336 3079288196337859810237640049950720 -53423106511198554313872633942245376 1955470090491602093928817746771968 522635251578457946139456794787840 -334408538238375685448560211436503040 8273370377073166154610015029166080 7288395178091384209326315896045568 -303484303659359192762912928597803008 8656499207364226255988968388558848 8005274373941631935787250869075968 -107702121089945448530999520501170176 1591847303585336424087620576870400 4374884219341288419075931137638400 -939543907612156367188692089962496000 6987792883510558555798484146978816 3945857822768371820862725253234688 -130553416616538559524162494485495808 8922634694578161011794734210875392 6460695651193813845793269362982912 -289879974308633452122610170152878080 8286367490529575872803805136420864 331660024655898044489935202811904 -814035967700953995358385245196910592 8212429303752282935894660979097600 2215610538018953659463947207573504 -861044532524395958857691123830226944 8700109473325967035924733503733760 9663306145028485304876519498186752 -916486499994290272040518202224017408 1755968976463002580986974561107968 3653039759899497437977160980627456 -628478784714462759203467984977788928 5666267465454858008944751539126272 2995493220607642362623605447065600 -390722025426746114460783468884262912 2075064382654985625107257897254912 8415144701692146614251699837075456 -445794641276799365241773439424921600 3239025705469002033257946332266496 3365944388806067573172274104107008 -912902953884283021036670074524532736 8168157638648111146529317799854080 2175567497768535837567826486362112 -139335375779071984044287552424771584 2045278561949824245411098096828416 1673193852577825624038182934806528 -57940344809859249836378882882666496 5227591395377911536193469870505984 451937783991205841244862535434240 -930487269680594870439516782586757120 8472034634205081282597471668666368 2337407061905845367891754559209472 -159455375046226330921550461727145984 951484451144038382197985274494976 7360903595723933548783397450547200 -620762390781998753282586542736408576 4234383924027322419526436632133632 3042300568603301008107279933767680 -61446896429762528945896237465337856 622246978211183262050992879828992 96063547907032024161678759297024 -485636444967624426279605352861270016 3100134777176865238432602252115968 3447634764417026121800919854088192 -888099829455143864956456680363655168 7498823441150879717553473593540608 8534121480674538974059777948123136 -9396755145148896373681001143992320 8414058028479946883169478846185472 6554610039192826633428030694883328 -271196315777092748900835205706678272 8019137295610678121816640301563904 3636226619088233092357920238075904 -947978190200229985626175171947659264 6935546003195499190704367755853824 3561890508442557440940155087093760 -837873258713472211858228598951378944 7108869658923246936468704064438272 6856077738332180363995745330659328 -556274151417142256899338004819083264 4543475996438939879676301604290560 3039514007177935465607379000754176 -664578197854031248147311012100440064 6954305187396793230255424094076928 8618749486396568396429120543653888 -729036347696000022992937651158384640 6688464231290914356338341428854784 9129706640391579288316167359299584 -626273290218411719524322066762301440 3868888426858867138554211692707840 1894997213128737292452345312968704 -12882022002554138213604685000998912 8693748710862467911316539113996288 830874223028421670711432618967040 -348252620084380838885019491684581376 8096034339331798239911488782336000 6011916595545520716757667061694464 -781414778836456324748948542729486336 5013713150115676174625266659753984 411647887109901794850253540687872 -995228042735348636069168022502244352 7622767147803815228231163679080448 7513846662303267253553946848919552 -644329115646061846658739346461425664 5678181757179228681520529903976448 5958477237782733736419781953716224 -152246778483863481858744899455680512 7076658322310787859740951010344960 1344758290838346763734115497803776 -322150212359347204372778557345103872 680663376631823948078905563283456 6742872387820766889006561400717312 -585393305060294377232579112353136640 2036009501374226214796321313783808 954158027247504055246933056290816 -631370604472460300537614873741230080 7590260942290048425806506013753344 9644319204988131367620088214585344 -766195173550147256047273151727403008 2479402464836988547955643165704192 8945820256699394298519035291107328 -449128677354251339485979483291254784 7323241767951411095633750634004480 1928338629930655458418330985037824 -548517742818601809377125256631681024 6936987464919243933342339432448000 1415843443377805260825188246749184 -903444789214691029926602040527552512 9649331991104476207513826760851456 6164437955549188190905996358451200 -611543102501139715618483808984104960 8311539792138785096888034311274496 1699093973938942892430674609831936 -419071236768608001261091117701529600 6843685516741299321681780695629824 101832939325018080286544393928704 -595826307108220408546343235864231936 1466624096718181655719047480737792 7699300183425812554258905638633472 -548968207679006919608640980547272704 3377803594788031841836318653939712 1170804371632869315739511685120000 -747294107573913066524665465526026240 4305418824692203088809878611820544 4618346565594914376929119087624192 -664136878646116012973123871325552640 2158015882269437943903770959151104 4066226025068517373485518979858432 -841792863381820187233766535493320704 3624360873717885547057215138955264 646068950149870365370101794865152 -818725451030158795227082647312269312 7245063137812498287384064572784640 3882876795503880755072141952548864 -942845454044066636935159706502037504 3765391871310739313574273079050240 6669615413193191697249483112841216 -436964397581727190517633424352608256 1784556517122805139704130050195456 6835517560463916563394379235983360 -495706630989128245989053440087556096 382707430673542604036025872285696 6910876913921074597710339734765568 -719264575169071640202293270601007104 8009272364706591598454751258214400 4532727031459659631710179090759680 -734015441909526010729099723689426944 4744206397196322908966338460385280 3885272882715243064568248593809408 -501403133105003367999424944469442560 5538211897024357342388581669273600 4300417778701238481153003813339136 -350304039414534575949477025287241728 162193801543999419119051015716864 4942975545245355845489832782462976 -782324295101215869817132878078672896 4509525111710230288117084937256960 8389917546123595877098156472664064 -793558807754238662592947942594707456 8207086038362243373272333719437312 1342538725203801804029996904218624 -98730991341590068249472747631017984 3999852892053702863759245251182592 2160423267562927990763450418593792 -76337019846326786721926454345465856 7041365466383719894082400114704384 3205023561902757006834193645174784 -903759249863185919642461115567308800 2212732757000644696368170900914176 6393707493407478768825038159216640 -547585255368820392403100950687907840 4081390409127075941195691287642112 2002429985411082411383917117440000 -900697763858823667755891046307856384 5667823522772306850278385064607744 983730308282817816759708057337856 -377468963407031898627933264662233088 8281690195686615852784049339760640 9541679043066937350421589750972416 -358682323823046077963228900289937408 182091703736361191201824286179328 9876204058606051785685189179473920 -60061720043117344543515847155515392 2504182668146538804434567830700032 2864881899920015802810194599084032 -795014136485303694482710184465530880 7940426002918168584590470456279040 2145663573887586953191695610544128 -272086731785316000347979876126425088 729893431354306148470407223574528 9043331148757497489204922227359744 -720062968565922256791674862195179520 9244413097564138112920179223560192 1181367185532829895016024685674496 -95068172684613382815316841947201536 813400427574501573945400202625024 8752644214931207428314594885500928 -408307065353345768186101569217888256 422302766456157536425707982290944 9759538312052265124620146718015488 -385448300471564616124397893684559872 2068873235510753058849419308302336 2222043925895457619889759318966272 -208285017814120280432276526816296960 5462711078204504648262298202275840 2197940506126106421959086756069376 -255384857803259297619406336020185088 4929129074849053247760631630659584 2482981793042235892530769580523520 -74054083531938067440881106541346816 1657308733000783062541998030323712 8056911952096119092491259117305856 -951826502805723296855758489857818624 9159952054589878567593329452646400 6851706400056479652814546173689856 -168034628242884946850378935349280768 6054561763872187822612172704317440 2142553284441296473261925292048384 -237287101565342944228347484190015488 8903737138180703063723838573379584 4950089931958976364509871720103936 -609835450321530793662683320869191680 4984555528207546045663958901194752 3407413699776386045886675267092480 -345033350231793096409714681026969600 4312056879601468037144963599826944 257484094825110142973421006356480 -472536998670475631470059674329415680 9444633307607512016294021972361216 5280302766018370044545772938067968 -846573583236616031816108094884151296 1143990494357325146114114893905920 9884570076510967734527410799902720 -271574550367926353529562411659427840 5736303526190652386206298440466432 7331350010222132549626150564921344 -998759207337481312785899800577966080 8345751398216477600860221491642368 4356271799540849472289465207619584 -111156134475832173341979607717380096 839329759662340267927008081608704 3733018275388844475648091111817216 -681920146330525913498648317026893824 5381956285597160618590143843926016 1593267874665379527839875665494016 -13815488609553144320838429004791808 419786175199257988901843696091136 4829564669638179634236081227956224 -260177778563297523884050888360198144 2179832881304554189485056091750400 6478083799317567767757132667027456 -387580657605959668006256488937947136 2786489349428234626833093610176512 2758132525740335981519221616017408 -261094247694562619867588391925186560 1313460720901753087529853644701696 4305070733626235942560669133438976 -749346283544573250248113062932381696 6491391376333241153027748879400960 5787051907922092678553068359385088 -911395954585465581332834090416603136 6782771291666530818421420202131456 9497912641164393967750923998461952 -730470545630701532282533582701854720 6696918047142214952072539120074752 2696906579889817032537377255456768 -797551343522640947422079734857596928 3089938697673390831823895819976704 3876852928826008741901130344169472 -687292440690788500453970596153262080 6861310342491788427831190629646336 7791397289198923103596470928932864 -855833498678209622346723847483424768 4278731580935654679289852271263744 8733990690722099054303135590776832 -494947408822285700435103749215617024 9226694767966596573944929784430592 2019321577204075339724092065447936 -598298089516116801029372390997491712 3186270131148513299032469235826688 8471453715388345632912131913416704 -763368926257837787764837174841704448 960064070079034703359169026588672 7176948296907972602003736296947712 -684112523634419002451012637230628864 7469212594715162973056169874030592 7116065430123734737350973502521344 -399470776028529305493543076518428672 4316886494241799343064512930512896 7057966710081256060404346858242048 -374260043030997921332913935698886656 9024818825843703386289608020983808 4268596870204613040127099910750208 -453377993309073811712529382460358656 8435220729628304908001859984162816 5220347848346680837092457578496000 -885877583155198129773111475213172736 7628556166544188961528754152144896 2934618517297441203366004206338048 -691237149989980151717672382541856768 9059550902993134629581437729243136 6711582312032520792904498549882880 -470382730013691190887802775309123584 3113423881284851733991463667630080 5945576903972397272036730166312960 -597325749181220511542835963116912640 3222948704492665518650367705874432 8076522762073366919662710850322432 -746102892968242510805567989146976256 364261681925791792188934718488576 9939217102725322963164242039013376 -568740874039392151164774559650938880 9857995228581323212936207228993536 6100022194686645976333424913285120 -842663254726828026918003013129863168 4578832909046664356874762479206400 5517385712582803719389412203692032 -273992684718259074548025500199026688 5447907097966023487985431787601920 3598366784943582893619907039068160 -402685482867366634050112685577601024 5559224993911269683207223614898176 3820958836720175992796660522549248 -912249790262958264858525777260445696 4753821052875376503443332869914624 5373779161935193383382753346584576 -646794031983014390772395790284357632 3735675739461031640948971573084160 4557660191607956530892358497075200 -747635111453800701636598084212359168 1015356199167861962148004864458752 6026390305322278062828402740559872 -192799513213909316407612343383490560 1346664396444058419029287263797248 789056906927660107567479597826048 -702814441891111939385961562299695104 8949044747242518063395516568305664 3161281427796506226386147634839552 -850924321872358533447196396547473408 3572434949184207124026936659017728 1367201430094624414760653446709248 -528736291948271014751716765060825088 860882875112681576025941457502208 4995713200816424014666207166726144 -982626296743345922718537476242145280 2562784493065399616918685080354816 7858929344656549402870925093765120 -343575934975034711654649189506220032 6424296571510440609182623924748288 3582443799971945085285359809462272 -486002754219942429599175952817979392 2420688392991178841553185194115072 6767940902172778466721901848821760 -139898294307380725117830759058505728 8727506816135539657391433800744960 151557295356055528496449005289472 -562117323289096332036072436928610304 9929705523536221932540888484937728 83991041747310791597017326944256 -61872279204579876182012809351004160 4518452072554804136589091577790464 4872893994381141683674535119814656 -487918733982324406574126160131653632 7478180557166619410892752213245952 4185910003331324845405760967933952 -49636394526789179287034846032953344 754745334392813761219666007556096 7151011074570716609539791051030528 -361385053660896257698710461198893056 5197108127615303015669110398779392 2987795515811736590180726303883264 -219447647379818488469689343248695296 4339277418296377774669036628475904 9793710936709804815665049058148352 -548178642807546449269378999134453760 5384096669564052666186591058788352 7144200650417118567424859098316800 -794272072820608024789406496220774400 3182192065316168166121019816280064 5768766884990254473113036648349696 -241658142741422307522395854612725760 8369060915261711048446385210785792 5109796644666882937343740706029568 -902730339644310486946371295642648576 7037517716921578389928338608095232 9092352347329793137338700959580160 -217737875249489480007250201481838592 6835287472824363954722067057737728 815518904621508968937350924075008 -676925671438145601707306081102856192 6987320343274345738453130453975040 3344583782639157421480677805654016 -690555657948755489245547546625966080 5709124538604280228472802588491776 4911959186699748453550995510657024 -458709588427886363703509911391436800 134484090155861126742532838916096 7591060071930654346872802349416448 -427903414242983268122528526903541760 6324007815740600559099554970992640 2718243828526431363335272267776000 -227146858275003596964407558855983104 9658354523529213658142927652651008 8147675029123282734494322798886912 -182683836290606792345937841850679296 4576444423442048376038675416350720 7948308141063189462653361004216320 -72577730120123989399721976526798848 3420617463511357390475611034615808 326664294569357372404028269395968 -917905090288479120171816151079190528 9521122880996844539199298526511104 5514478065325933693155725600096256 -500396004207383566464302629313839104 8986161251308627121790806705307648 6163831829438259801172447131074560 -127371891043311912983843296396705792 953822947337257442848679670054912 5663801879729554096532058577829888 -671811795226435014556546089346924544 3182613096461314647631828067811328 6975294409380088048503347382059008 -551675805397932582581720807326613504 2506971317223690439681570536161280 7432200303083240409171170892447744 -96416845876063393289492536213110784 2544486675342856799634008666275840 7811806854238580961501115133722624 -590045786790347431849518744261885952 7227332142405528171933539328065536 6892993693965483955878245913591808 -918244897099645683935601619743277056 448393447587434849988856128733184 1268126093170992532733032482734080 -427713975905261632524232432904306688 4196997572669199046716710746849280 3891521201805456908353656326193152 -10629508288326205358956481827831808 6392381844500584777122385645010944 3696037910019567209856005765595136 -888694490648514218538340604167847936 8990791180235769502554025657106432 6930002892430874615551256619384832 -193972751331304627890033926130892800 6455727256046593718174742956998656 3884208513972212526481630801428480 -777353234887016069981011576621105152 4345173147037648201264721431625728 7098635804617312961308319685804032 -562891930274804385823134571927961600 3263012891745139874922012245753856 9747176100943291399291309186351104 -600630797728921617121769650095390720 3480616993173799431138228985397248 2568712864941390759710604537102336 -596684024144356704513689903091941376 4950716526589029398132445935566848 3342174395629402743620168828583936 -460746964618939968072697856338690048 4888536779581363878419470535884800 3806795286597944007806346768416768 -707576201960404093850192817608982528 6927738737776668210884411717058560 4952015827600881349668321947025408 -403076031844271788912701794127183872 3959668484741750977103104286130176 1379005002280741678752366816395264 -251323703526830148765418133928280064 5231875830555171665980613204115456 8071573906708812679701967304392704 -909288089747515872563124103683244032 9395234676813038524208649154330624 3669780415040472347129867438915584 -659880102691195793168113257248980992 6330952407554884085439689887055872 7052560243021151899065326600454144 -56410350400759872999513774798929920 3398147997882915562554597207703552 2427571843159480562979749691916288 -151454594342918050246917610098655232 3505478934025532402466802024579072 5315727278225560349133041343397888 -628649369847490937790753703966277632 9473876931505323522367232646578176 4683251235083303388545671080443904 -848054001113547245486989761583251456 1837231833743423810368389852954624 9876843880912825501900438086090752 -351860499919491700794164974240923648 7785445490723377460205337977028608 2786896697039557001981887023939584 -807099746240553717055199909767020544 5979448700678000618228542206902272 240884943435972592585528267767808 -479865218908620106042277839832612864 8795535946745467365087640081661952 6351185263728628089537674870784000 -843374584024018704813245710303494144 4951196419782660294793887232294912 925123215005913020446706071764992 -109094472249934996438056890039009280 5467599055990457760254025361522688 4629411102830106332541687020126208 -418949195944931705730689582227259392 6664137089795147674792642977202176 3586241007468622825683316341997568 -186417255695304985779375791304343552 7402450246307035237057589365702656 6315302134311140322724986339983360 -299920081542343627184059326534778880 5865882538035787128469923821518848 9792603113443135832371464964669440 -182594181291669202963867440607395840 8374245505702683581705980248850432 4481558671644199485750699007934464 -163301833767959427795822304093536256 1395032996389336561083991451500544 3442962338778622893592864641515520 -398118600561028994292384093301637120 421108822979967117925646833025024 816872873907804545928681274474496 -867091398874532785160929804514492416 7283903604494141802120671590875136 3453935062269262095238143150129152 -753298917967469073834116346028228608 7467220006687375071080486681968640 343711409837066326343931607908352 -714454773174136234552911331789373440 7010629276929408928419218511101952 991251328788099451812939432984576 -610386121169145003073992874092658688 397921438722540499221192911093760 8479044341865971078204284005777408 -92510139718237731934876266628382720 7511513917952897890639139997483008 3943894050970432801344950464675840 -408872447339805674059326267070611456 3345791081169146878290693713821696 8348888419293242435415133118267392 -497868221325113053725974037388066816 9446392711776801534628060819619840 3189866208426416237541381088739328 -167947393151849612735127502805008384 2448102055039805145193360983588864 7655666475446466575505561881673728 -353672796884137185555217794952331264 1420724157194278508308205464977408 790834813236538430958063757295616 -94012490122551257159277766959431680 4325731115839542182669502921048064 3713865801688248634104112364912640 -757647450322125423167079564909215744 9742994949463755549018701059588096 3464084322306157099955208807514112 -229978953680673901342856019886211072 6793040394132298204118552957419520 6824631082955678536272046528135168 -483095389081862055661146903941218304 4514031114945277017436617130901504 3004530064450344005214426049282048 -804254750174225654215768553044312064 2100732844493885836204660911767552 3295845195469466412208417958526976 -222214797384628233863836297850781696 2883314500821742750772739165913088 1607989986932184089467806875123712 -176219161416711029956423797811707904 9079110672102059542682843092090880 6795328546410589657239904243941376 -326861345588929227316593575598227456 6084521158835180094597112709251072 9595034495805056326553993356509184 -808625176865770982039323421471408128 3951875246754822536046567713931264 4687309199265693409985700271489024 -270269632890423258489960861387456512 7133366859385733881712245934653440 9999773251123894859260830962155520 -899045212747237738274926045685612544 4904761195813783212643030753345536 13809397048865366185735866023936 -362115337063315861198677655062315008 641250570627233336607509527396352 5391785231550665407508749528072192 -546104326058026240762941869503021056 7787857378352257360532498626379776 1445206340128168089772182663593984 -184902184976799520132392436012941312 2895443181121725789301183833178112 3253257232821308453806010764623872 -730374115046780600491656797931700224 700498195373959900517265802526720 2251941141569391004359891357794304 -529126900425598173115218701504741376 7629695193096605559674389963735040 9625928230369024673673430842736640 -348449284255586685420502322908233728 1987676861804240667228641335181312 6963630896440222518745312564084736 -91880321614644871287030690355347456 6336156983030171369340852905181184 710811490758315409917284605493248 -383630212599168479404117924008427520 3294348618771413638544298103275520 6863182662913716830067661205405696 -99284585555883016146573899899863040 5247825726737355992652106872913920 8806343976324391833167887081668608 -762401169026876706851852598535782400 99630508102761086527268125147136 2993014436437518818271899854831616 -852564291455845502790382439192592384 8625316076412353885402506473766912 5822442326384150089848580787404800 -573906642100238792506316600385732608 2749998290234089419052035895984128 2104970856305640029475191807541248 -660140543869684369976688097038958592 4584005564364132931276195036659712 3575637629504407206142096313417728 -13796347562775394979714752831291392 7881476789991561944530277860638720 8646283448335370562371395658973184 -964791804294737034635690183455932416 6503430246209135549681673418309632 7739119985434621903483695961997312 -481441594431038467969526469683576832 7745891722915563826395715582558208 2316582840791415730580353940717568 -511273973730322815440106247763787776 8406411336924658708240033818607616 4804842884729658934638797383532544 -10074224281629691009402662478151680 6376565773685209000979263150620672 4290824420528397049075459654942720 -723385135900596396356579721880797184 2777362306769398387829728253837312 9749102489383231252013526848372736 -205527666441763673787695545056231424 4038368476299720923820990484447232 447449811620593650878982284902400 -783488853444276523417062836828897280 7298076217594970503926736180215808 6543454877964512962643772489859072 -527939589418891837867535558412075008 1024341142475038308300039963803648 279368458624214535207660722061312 -539299226053354848374449309623517184 3226048624593290764442697306472448 9078325460830758218960582020694016 -515105957325023117307541711203860480 8236423371710682140813723837661184 2725351008130176367444242517196800 -433782464090504229583282484805632000 229342757267918518050091664670720 3676966820805837497252752912285696 -850459248923779082509398647446175744 1635386098548772308990008066310144 6297813900062178326798300486828032 -928274268104058074936651932801957888 9106405051984907819750667801591808 4278621245132835026316032840040448 -217829757694765406520899623079378944 2382160566664507528183290926202880 9037086193006025985703377645862912 -182149349232869165748055703635886080 9844195635959417603440187610759168 2671072346502786896481337798033408 -695862975312747113758818969938034688 467511743055589933526676339163136 6951823202601737880212405043068928 -957761346111468276732003714158559232 2911496502192563896273324107366400 9846151784627733295716770651308032 -661489265826462214828433282636447744 4429769366239748877813738436034560 4217438786090270596873665338408960 -186258918852843313639395870061363200 7494458878703240813931014431703040 7207279570300828599970392405180416 -37768748435672088072121252409507840 1183666511568585104944170878894080 2970405151054916216644750054260736 -509371795270276930267894792031567872 6664527608503116700550800355622912 5121511510088831433397706751475712 -961654738940756337333719447331930112 3144880572870380015663289250873344 2632809412328047896973016467243008 -450102035341794414045667107945840640 4017989884210958161978749423190016 3001654751766843037331286250225664 -429660534689010441578853842338971648 4304147761176642825730742858809344 387208862503940872240158704926720 -982458546031299132716816859853225984 3352606592496516538854825114206208 1723709428081372105686985532768256 -4447933705660515028677344773537792 9889327906935031441561620200816640 2958894300206300059404845166100480 -384087950373445808818078601810280448 4352963049313540771515511714349056 1979768501693043948836265415147520 -150845037989420837655464058778812416 3613747757344553461588832425082880 7147603980523699158321207225352192 -371000294768731114358724092378480640 8949866469994965011970862346141696 8688372502933596434002816417136640 -629375699970810708731569593804390400 5521405086789501329658277374459904 6412528777067131346360666500890624 -241520201525006086463767000438013952 8573525153027073554996466555027456 1979113272017412812868399250014208 -468357582793151088478830741459828736 7013118272388006000542245680316416 9676521727271322553336774711574528 -316744063823585397288901267211419648 2575988124766680478920155756232704 7911235685672325876993442004860928 -987345053294250363049740003620945920 4379363176279683412022579454541824 4294711068527580028172987665481728 -869650206116528024161650908195717120 689962693286243818380585609461760 4787381755085167990808793076203520 -320211726840485859862085601952006144 7641267552460373342475846181453824 4391078718736350850049520976265216 -430466085673704633304852247894556672 5258750083454043077812612640014336 9531648081203952424084289294958592 -468386307015949541111397440729120768 6335785149094277471338766012514304 7786979177554809705521814620340224 -170809159122381130847798565086953472 4384065641631895007869423830695936 3386763306225726019753508979343360 -870771451323992181944362438387302400 1274729464840131632673180704833536 2976087797587643371070210741108736 -202523793889163247382610638542995456 3097940906977933958030424593661952 9466355869558486506552468254490624 -52283387341893882150036302070808576 5084275909697828480391965657006080 3193539766508029586553185878671360 -145196217731712358615476107883839488 2060334274284560750536218550206464 6970282011655789163147633461559296 -618762407082852392371107189711962112 9554440714590227429100841854828544 9802605421790078375618140585328640 -720231763920819266817917126558351360 1477934809048916164256488065335296 4012048788217718838757380340056064 -997006107036190658269056067671425024 7861262789012725349010393731694592 3231707588168107946318384964042752 -599887406489434264151380476313993216 4633909452255410547306071320428544 6317051078542625758100762421886976 -656647172312240678912743643992293376 7790864585203770417397701825003520 3273389738802465148148499926220800 -229502779669853809196436917843918848 5993606944053049271113603237281792 4074262656598219109554210151071744 -859593081621835588271140757877817344 5272167003123427420283559187841024 6521679755465546430896503215095808 -206404440489123654830404679923400704 1977373748476453743836204000870400 2116866469362762162888082861326336 -358672472895125729422536636331196416 5740074508668741280208554165272576 6124267948643134387563310490845184 -380011765825612571007340938983899136 6111738633595457825641354915479552 2297237471019542259182953268510720 -634080320762102137490581856832192512 6950300709446444171003382256893952 2832722919700186887442447953035264 -255312316071279793092575919085715456 6217676502415988508878477658685440 8053761686476368487459903540035584 -796773824980416194066552541419667456 6806471451744400010511092652441600 7301910785478558040486306618802176 -682452241850568521627368992825933824 7756516636273883087771988662419456 7667221482428729836342420000735232 -720022507791356204626871778124234752 2937797695844002669504759588716544 5642625450553401560897281088028672 -900072291162413232753975060108148736 1437257039926308789305165180043264 259470719145659784909727794724864 -649688459810206995267550254106411008 983450401654700280493657429114880 7719383120671936374899170378514432 -827561843870842065962327550134845440 5364369093458205615431566581825536 4787741265505513704796949772763136 -563364136436355168821198382558085120 3889117729352361021669703826800640 9641291458944033776686151130677248 -501995586316764726967397851127087104 5562132242014656408533804114771968 9747539424454655712278733702299648 -573502247965812519788381629600235520 6073047629984329341210871084351488 1094661630644803059003758886256640 -658426437067266975864454185794666496 388916435206962981207389841129472 7578152977710307637840504168644608 -880106869444865023277318846235541504 2870382673634773312049913759006720 162622808874089362616479863799808 -939242214968113437819233378299281408 7601103770276525434022078294523904 9418297317152722778092586353557504 -966525623993025688173557652958216192 1151622920592816997001528441044992 1316508519445225492410059594924032 -228996432405527791817805273822658560 8469405958735039412580144266608640 6261827362622300714647230003281920 -325218131516329110553749460160086016 7586294929990727941284038361219072 8879593261805495718201467634450432 -742110740277768365391717978781777920 8037405437436170827196173786284032 2095488625981776054469721965199360 -183386362672607067776608767217500160 4053157601723410066764071188824064 2991581767520165544524574869159936 -542361314122216882221441237712371712 1869936432417164831827498748608512 9421009736537825345809675316101120 -19076170138232246885784398076051456 8545559862719129053334660901240832 112175422465004797965006234714112 -101458574313493472970762746536656896 3078184801680707207704860510126080 9104994830331853585568125646012416 -130357996289506192571174505678897152 2351447114565382979185247116066816 9813508987612439383069388905119744 -476781808656898427466886562277490688 9806452721499939009370778996047872 3720533877840857092871901327392768 -346093327895446343679124770356461568 6999083334529941577259674853441536 7049444321400061053070470297944064 -991454040939909007126640897325793280 6491896750045682755498343076462592 1117767925162860674837423650242560 -293531825169447195460823104708673536 8808509443260811054988697022758912 7797835487972163963649433651904512 -81730601119222984514112148899627008 8897195956562058900630887112638464 3117019823476650030925190386417664 -100831039481845460872202986681532416 7777469936271024515694067653279744 6420387075645261764638931322667008 -756150573538203116392506063847424000 980308552814932305506321324572672 3055136004536243724018143950012416 -373456728542796299049062170133266432 2407070419881301852510443762876416 7022500536254717862554346023026688 -723462330057219172329657348667736064 5267629197950400958694960104734720 9191514938802980687964727387619328 -74079343203983924878270710025289728 5360892594541791210424030126407680 492045060502350176664877229146112 -217420073351357269136415654961741824 5912564379143459258418943882166272 5747273310071329182420858996523008 -956831959454563794292758508027772928 8364857073973371039093731633397760 4050532344847515405536308412547072 -241096367461687546383425367175069696 3570287339636974704313335566827520 5665174558363214229466094715797504 -381291448936333500438960393995419648 2041497041307437317541311062999040 4864752353714484314760647301660672 -293173009807449088754613766921912320 225625687803058771353977424445440 3013782216291892372133596958294016 -262991389737228781512525238922903552 2774400069620567813701657643974656 525120073181692034286913801158656 -345066732543926329010766779621834752 5828828414361680931735648220479488 7592152366556214215347266329247744 -983236691478091732331051429423742976 2765458014469112428520203473649664 902429903326389710741255382630400 -166114319793625373025043985536647168 90505000541646708788076109365248 2743307383081749029800346994606080 -692995219843013769594484150841114624 1725946843396079238965070781218816 5429739904985354245003675420327936 -122498013768851674241173266865586176 2436547230690025324752266520952832 6603617455930135274306482651267072 -547776422299311127121543438524219392 4152608056090981296311920054239232 4268054888314062681232424998797312 -769899172362094528325234666426597376 5546675026107783826526282706845696 8623380586604676382321101154287616 -821545675542916078740585727360237568 8566970640929921294989670433685504 4219168626477520374327408590848000 -843140803087892026108414556008087552 1004528101671509387829738486104064 6792651157216105673422064794468352 -702125969688241953166439634318655488 8353507501494736277386637518831616 909363189349519285917506452062208 -357142917839173568649447253160755200 6942729070197416328646419959250944 2343648681946282153509057458077696 -516493740561119184716484466532417536 6416757343613067727488348200108032 8123424329183952205601349172199424 -951897447831007636422321987104276480 2179137669350636916283173796577280 5821897576754680825476484735959040 -757115110205311170453253941870198784 5479668964834095232452659031048192 4890436803259998332473399345938432 -350412458207272801708533940706344960 3446618146929448765516033462108160 9526937658137262313528902058770432 -629402181406969668156090964261208064 3407305580606631115102711871176704 3000126198207349125462192677715968 -492950246353955016472784419067789312 2313602440744460279026354371952640 5910127589729324116901541567266816 -245560570967574315076949399220256768 7187036028511042210664908205326336 1511577761517603327985348776034304 -535774883506721658207174429658578944 2519695570052250830014658761457664 3277746897693893591107325222977536 -85709972005207224905667539896369152 8586004105689359093334874590806016 7663999693607680456225567696486400 -144964376560099191912470900505575424 1924053646699954151409837982875648 3961809838886659467535335859159040 -53800858038376513111212152821121024 4310395397127313444793001153921024 3429389280116021501168921262161920 -105833782090552839740352455862386688 3067814681300862003360080704045056 5970516601904875372690244978606080 -421727167449920724067374370576662528 3528452031060921697486988562661376 6594208090511365654494292350074880 -242621546285178483753121837119176704 8607902157678901592298759154302976 4227883783852915880776525653475328 -495492752345492545017431177646047232 932562525596714086672763658960896 2477844342838843560969603391684608 -824693651647709312490880571006779392 2798351409084640127411960009457664 1127420521410592766838842706624512 -343767745530398398128505006692761600 5663124238126351560246254817509376 8979393205646452102811552049004544 -175938300077045275648885846299377664 998574180207447706601649313153024 1210342038170843517552405147287552 -936464733731735320192324656540155904 7145075851692580120272693125709824 582720706452298055675223258169344 -693520740969272255971171574069854208 5180286806463731688624168112226304 5067050086900351958040561915527168 -497815065381359315743595498632642560 7792770922592547539996045519880192 6616623879566258163067936820953088 -795893040143410153595138474051108864 7679372470250295362163059453853696 818119686493336285862650013810688 -242030205946325019766998063132966912 7598629955060335107349660882173952 8864920389793697160783849819471872 -460398321002360889702928216024416256 7043030533218239759505545431613440 2874087080342616767761027249995776 -431903445441969029900475107993714688 4575286108808711469101046430695424 2961813538688595612095289621479424 -686248015612173137752646235648425984 1202993792168205586355250394038272 1498043030367515744953340528689152 -798930487164771651110258986788585472 2072258720437797142521163418697728 8772425430825666669421133949829120 -695908947593261527129657354391388160 55888462984446179014793544859648 8771693914598376639948565906456576 -162228175952949724633001084802039808 7390647283534590607386110314151936 1406707385286752833208907487772672 -945342000480059790097390985155706880 9626555919501760292416388465688576 9839498397523694178315130726514688 -943357007481820383233445853696884736 2998841840998223659072590067007488 6604815579366512743359505810587648 -562961517975085929681691727433302016 8009540494268399764532520063860736 5306517750472351113318392724979712 -267728479778941077381690986005004288 3633285975641324322867195741732864 977892827519743801532505250594816 -53492660321257764670088505089589248 679412341040349935450531829907456 1267380598662381414943700941799424 -17469638532225397563672395832623104 2854796041051934789780483310878720 3371761104698319040311882726506496 -841815174542183263717914987315855360 9147554340566918323172885305229312 9249339439647548216137595469430784 -102019169389488200460500532119732224 763273181773562838924066216214528 2595770016091655145682464394969088 -152840628286188433563265914374193152 4549600842641748777951523441213440 882338954558595311285081586270208 -641770073772257618729690974417584128 9321670420780668919702982244696064 3028365655510210895845637792727040 -230259490223089348804951844210081792 5424437756213634404488946357633024 6445195447381844741638707885375488 -820073229099945624404418484892598272 8189105515282428305055539515097088 8513501226587061435589979206057984 -847387154580858392829372076772032512 9213268702435503600213661761667072 311752892114518929755707952594944 -613018235689104050647035814168494080 4996670184128038110343318778937344 4449879959196194475073736005386240 -903636629520265755044402419080364032 3072344066641494269990325637349376 5097471790892406866801430099918848 -314853185017231327417747772270444544 1362844372556770725839850916806656 4344948518097648077695864067325952 -459042840630517114915452715135926272 7387405291710008191225677345718272 9541120086425492230652764495020032 -220420958591909560623398897118609408 9496237395325717801810472269250560 2216895133115970317058776466718720 -533298720886612120123152488271446016 3886540094750642065722422794911744 1422670126858436747145977486376960 -931590259912790211726475809158856704 2313356136667640249580232063844352 1627845020887502219910848003964928 -863514172436316462621781369752125440 3104611511377370073517715965870080 9596884608454778090905104438788096 -824141230432201512299505215267143680 7618017666538689284740113351311360 7051325608103626499316209521000448 -652816221245292865907872395104878592 6784371442153196113391558682738688 2799308998757513851343090504171520 -675358567934275804718629140790509568 6148897262847048017748730553827328 5523481185345084692708234268508160 -317863657573815803827854506824040448 3569275813979782606557308442902528 4020258447556006600451304156299264 -564850766794394475875309162663510016 138587705576278077112446147887104 7772182321543096180936712378122240 -563274787684746598178230690346172416 3205564796241118236688738276081664 4092410045728842652624758081847296 -667789149540024170802207454952161280 466384766794102833058086916194304 3143092754677139362996544298024960 -828912606187733236058470058932830208 4457520849758050348899132912959488 1824328583294212293575930271498240 -91462951064029367864988070540476416 8508581666436536269759972309467136 3832703540752984270657190734331904 -734020213639949663951334209398767616 6575136242984010042942580041187328 7629304273786938555113346217017344 -365912925908315236257313455331082240 6692221078878698504254843290386432 5750754432595383118349746434998272 -4378611767402672037931310416658432 6223570607071601471490395333459968 6291805935155397217344484894834688 -742659966844558814568708325651775488 517827387249029724725640691712000 667024359321678415442562586247168 -281198103962081486857527487767773184 5291803046418370075973002897391616 3810501721201543021409497918734336 -210546282453007414105493365770420224 2652783430649233201276316125495296 595594261085780069575862532440064 -774095978758043965591346056032944128 2064909501204730194767573099216896 5992479891013278141830319031975936 -922026662382504180355212879339716608 3920727055401434512224551692140544 1784721533409720154167889411178496 -988162035513774187716931255982358528 6799268043600436512339701490778112 2949566515720735549511212059328512 -620439294679549757810872539871707136 4311370138078740222552743232929792 3589042079810699647272589142786048 -585568311356036564389383617009156096 7195004094919873587206410398072832 2750454043008505997150543480356864 -77821335192334494515051915231887360 6655119558608656057410827002576896 4318848592803501465764497683644416 -205927966055925683382334940220751872 2759206775687612255641429421850624 1073147135850272196468441069125632 -506723658596726125111295882785980416 7820786595204560870961007256666112 872238816556867189432477676470272 -757625033046147344501955590180831232 2998266634186983536835801527615488 4552011732464909224729296691527680 -805173219790170750227767257668255744 8674628720635196986824717674479616 7665006159718804522706750717034496 -327697360124285232152368779370692608 4559689034758534874000943013167104 5778363783029494809046648287657984 -836327316526308692494412998823116800 1494895022822385531103750154878976 4393485795468490968445769496920064 -417774602797345676158806182386991104 1174683500908414998317829239865344 4599247789990746006235186473205760 -502337026340179538346953453575602176 3465766637116192574317209413746688 4120817965540470233435882527916032 -48017487044412798990447112288731136 9435446029068066528508522774134784 6542998521881248321205580700057600 -692998546987677250914749662709678080 9308554846436542047301391064498176 8087175071731239479641941789900800 -118602531348926725029276322837299200 4841097656137333049432627178635264 5839535145092880375188044120064000 -413803559128110561685203073670053888 6749952981641579526434656954089472 8425882222741758001601111375478784 -827269526761214583361103232971571200 6103502350085096763723119580938240 6607768607689204612727558973161472 -303874158561123513999279057281220608 4513143600915703474022429778509824 2503352238523223001636352223608832 -758357139507048327706282789015912448 3408326410338713253597733703385088 1454671526631879200658742256336896 -233780066576847902767697854398988288 6831462744703467349897305919586304 9931093489870688135944107259330560 -556590274257965159216019075548315648 6952047117722077897587166038458368 837997167712953455870473972744192 -941451928200352170530297486893907968 8560489512559402652052713006694400 5499257462633145202869999247556608 -86485575783245866324963006265425920 774111381495787252599379996966912 6199511868362261498244161419083776 -913029659857572662895229871799140352 8957101062954210691327467733385216 2126388715697441297973602745843712 -271742204929321092154990363372683264 2663259973991504763110316857884672 4060796843624317607267184907649024 -14660189514326745867656128328892416 9630756148802026829837485400391680 165526701347761402611388999794688 -693401109318403806776572712507670528 7342786315376374458983765526970368 2041790464098959973643937747304448 -78042381244099968345654074839924736 2132283675363645885178361250054144 2977706609875289811476458059595776 -604178463103354156748095257321668608 657055628950742365562111149473792 2612931247968886349320538464190464 -545367761623921717772454755997581312 3426937721822618974598143160614912 6686905645726639587667462403915776 -689438865804351601755431707688828928 5921438831643034368993494327885824 8713880856079282238295358994120704 -453851722571923731867796588176867328 5608509373010117508998339212869632 1319782377620432680465411841458176 -659746033478333057081756060202565632 5740901682411717238275617169866752 1958858180443758007249947125088256 -237688321751108450904345503321817088 2072780669747649916728425704325120 6848399341535872706064467904954368 -871719995892655559798267201902870528 7028659899931432671445441394507776 4655537270009106878752523471028224 -19691071146314031409363678494982144 813770809295786407833411359080448 2593955407960121110897156616617984 -980577281836116688559437454386397184 8369516268882642019794777477742592 1966688200084039050466929458282496 -923160287766608594277668944330358784 657052362308964165655560538030080 533036363379662743464754743869440 -32139025674492474204667556518690816 8523041566750606480165539688742912 7845240399451226380878371281174528 -469938531149605886803108955873607680 4812670635533882528535309187022848 6363386059777317161357705171959808 -134336030245608456195564424497463296 1644224028805763871881640024211456 2755697374225710097572764101640192 -232502340095622057992396932049272832 3381073639872221295583531536220160 8188127303533861014914866012487680 -839892943353651289226740189680893952 6726713617017932161677576145731584 3840141144375018552528295918829568 -599368510817100051330513279859556352 6106734727825226550397979699707904 2218030751835679070396562192465920 -916385301210085080887707805239214080 3136264448559063649435887436038144 1569552167475937228416126367563776 -28726138463169097399870701726334976 6572544955528582709182726496321536 2722734585502226250025650234589184 -34082986193749014255544266504798208 3560101838291141052050546257559552 3317561452867536387429967207596032 -774339208994241639102224569070518272 3967105454374822043545835243831296 1139748239620950586199194308968448 -827488868450406835447215524050632704 2036108905964087662824172686409728 325792944774056432962809452560384 -435932408040163050852986735483158528 8807766400220742556297856578224128 6895429080315587448502962337349632 -655555572669310297905172347785052160 2292347809235910580548712320204800 9054254556819048012414577323016192 -958645776295305581592316207494594560 655052258609951108535753870671872 740781720237301025894939750301696 -86071410921378091794113688565186560 7215517012726515269022230473867264 4901994760613665380335323019476992 -112324894385162923033310951515357184 2805528079493302105904274384879616 2579969609003489378938757176098816 -836292245641516024019728745092874240 6471791775450186883637758425825280 2645530023936634917642390596485120 -303790612527427652679609128350384128 1853283641239419090284560527654912 8971926963926428730141572541186048 -221744068623992270943540278470901760 9897361093847080998067202724724736 8442064519893521061323512356012032 -688815775290545947072829418391994368 7741003163343638496723971780640768 5462877067721849399858433508769792 -16774411749364911083960291710468096 2972420407368630126197801920495616 5120687586121370749081246236672000 -60935671624334369288796757718728704 1360959176065224413714976321044480 2817296078091974401776553000173568 -163979913553898935448197256710193152 6448699064716579686487094345072640 3255408876481186440531465520283648 -344225657360994732495432478661541888 8673066325032317489911914720919552 9447472448051334457488831087116288 -118343703597438474017906577081630720 8318537300608789968461753984483328 5303032864007859164145764981014528 -806525290056864630168113366897262592 5295005180289331920723266481684480 7356801846933676713939918091452416 -349574670758767182519463794343673856 2066344133449206589511538476843008 4187080765804877808024176109289472 -148694404104632643638630214612811776 4329925955509516932305290312810496 2147685292811399966451525167874048 -849147119412829462954087584007979008 729153595043997485215944171061248 4436285045816703607134107916566528 -304818894301471548101073603227811840 1268358750498929331807884693995520 4496501142298681225935059079397376 -956284807443045452423644683622678528 2469786303292117619647049805856768 1274880395387323063267466019864576 -700697678292255635040714695284621312 9698014224553832652635347429097472 2149413567420812748566803567869952 -310528883802203312710800585607086080 3174779564582338864193885901422592 8318790576960007039449557616295936 -870729792710573268263685440965443584 7870069377845451937638949553438720 7196449030493170407139648175341568 -188443021540390418517238050140979200 2955338159108515390210261213249536 2631111892700317113664899257466880 -796003865348948843358352837730893824 5413577459230015395782685246881792 1373406196360037777136911395061760 -764303096904940213979781301178204160 4168214027353534238103146848059392 5138636061666285941834862433402880 -100741574794336252951590936499978240 9564824523160512109269553229332480 8832677176069171642336453733646336 -401627577913785649659428414244782080 5511416076636749079610678946299904 9065378442639942959035808468697088 -294525118104376670842674178338848768 4706988428516267302897065157197824 8798686083383938187754736789225472 -239567326294669847645931067941060608 6950123002774809710725831029948416 5382011724394883608410800139534336 -248984187668435986945459261561372672 7012989974790010632435474590859264 9700510402547013793870174922735616 -47229225517547996202033538282815488 7130562878113808653859440595828736 3893091292659635453504644796383232 -264092963143999249803588801021345792 9974694737347799721200741536235520 9332539650313394796650973483761664 -100393655308044997351036762166657024 9762679665041587820050885317230592 9082523016036656264639414540435456 -45488481322961498938444286441553920 3082605088516329947207839837585408 243565952327552875428315605762048 -309257120295171348216334406970769408 238074646849704098203660678332416 6349734335216186806793424917757952 -773263964742435321794729812588232704 4524144056894949778138828581634048 9133994702974962147101351723663360 -724537714780058093140081465997918208 1954710786520300669940180237418496 6320666887548902134288402763218944 -302579093696480648972913266766381056 5613735657354755739235434148921344 7269716865660246507736370990022656 -214654007239375801313018560802455552 3514368916770417550104293120409600 5067569397452564744443533476233216 -723260907955627617247834287726657536 9006393272390459324628192464994304 2090808825863077460134030827585536 -468310821666847259910370440775729152 6543854643887763356087641048088576 9150413591817935758728889410519040 -757852001121605844868238530943385600 4551239260728906203194098089721856 3959164922404062477939819935694848 -773255458254287952484454514267521024 2839582077496904849077500496576512 4957372497195301617220042048405504 -56484427509395904430835012703617024 1541231413225932001312424301953024 7724644108175378691596374851452928 -773744194938349858396985599929090048 4103325709388515271222957057245184 1589365530654667294476284152774656 -453080471406022365144449469787406336 1411238648018984165016135192805376 8677114283685795633031754849189888 -691986116070913674922960325581996032 79411636315166794966261385134080 3008552482672991781018247375093760 -198561421553980643946468120780079104 8632298155990624338642436718854144 264082142880799093542290334941184 -994790038252063182107496961716256768 4893883044493389543204647774191616 1783222740078601505392408913772544 -841204016411588631393458990828486656 1725155267815839983047087046524928 4343675334645984494615611377188864 -186508272159256555047384815023161344 3715708114680686472416561245192192 4471413003676696112020315325857792 -102840821508508954693968166670827520 8261729739627002959776261664145408 5137369257941609548016816794632192 -34769992805866187032822814850678784 9399934695197332879075988920598528 3503822782873853740940865273069568 -328664889013584506157341808070230016 9569582815702493225935830830284800 7990149898435488050217051117060096 -159424021588980353593361144184045568 7113031720372397769484952427036672 6344989832218218478837220893523968 -209933489890419699151407408769662976 2992509010522081606366929646256128 8724294371226732470688279471063040 -436426905576828379774079525770493952 9711193682103368732075969721925632 2759759515315875532593826587738112 -643124540326529897463131855646621696 2768892019726676974536486041944064 2374958038106424506330623592366080 -329787035167663150695041929704374272 8041305914816721629982240156942336 231911293554310812091767412752384 -165556062274918609634286022873317376 2179270814630312365850849452228608 6421661353599604474075053599752192 -940153975399516425515702687220367360 2479815751580259142467628358959104 2678930961351290430604394994073600 -24712120560561762916409767217856512 169883537863988880124343083859968 4730500771987604702127768328994816 -347312585373744371925548133571887104 4549688935335631271489376626933760 5201099881448402453339821851017216 -385222605525295255484477360863969280 2020539965004216725458828235112448 655502802938343652542618772963328 -749944693600641085965771464121516032 8613705573772761267534717744316416 6797065028988011278572982621962240 -688462486309602052936020988442705920 4531972937538581867020312117248000 3727994987893141324956061390602240 -214193417713940076818690977686355968 9189341313049134942063901892673536 4697896644778702397260281958891520 -452108076480846972715682963237371904 6233327214650571183939504396304384 7075027654730334927703015656783872 -837373280656396581468896239141519360 8423243354453707461018547585548288 2833204080871742485578380793085952 -791349000056287575510693928027291648 225990362175460348778810464796672 4201810777478340992176100206444544 -530504929959493702473280619336957952 6281989186788579312518912855244800 9850841160441740415460460147507200 -949221786923646905950020405190197248 6372285992795704707123665428283392 2049069736670004217401834580475904 -395066107478349575832796222162206720 1446025548447640039906332158984192 7063897814359437604735713764442112 -397305984143808063723825900095012864 2822621199054355097100541096886272 6476898446096605482362118908936192 -49334035263004847708727070815158272 5116174249847584322625987286138880 5580558785564596448132869482610688 -210871539296417728137158139802812416 2506056466806582394480162771042304 4347480595105888626936574210211840 -315329637675304880992874398132207616 8758250921862771451158616034246656 9823105851919150696156966632292352 -20200979112044741476325267251134464 6240276276515928201184233792733184 5487488122330675597507680907821056 -429650774391727010816282317562052608 6360817443660227400089554978340864 1003030002241373760104686193475584 -999752884730342729429319711188844544 746360449083339532455986396659712 3807212082527497489394580966080512 -129420478712491846708565763856269312 6314818140988018185412394606395392 6561330648265725275892544215973888 -867958699696562019765051680320651264 183109280640515554283186458460160 196988148574621463203084586975232 -662237249524975051415710220924485632 8686922403408243822690496334004224 8410124056006499339733937793531904 -690818114647288884278376423284015104 2179160056702916870801843027968000 158751497726291832778961868292096 -946759563926770840092534232011767808 3037347616161667092409720628051968 4706023832836467802808595578355712 -353852698051158512261919901193601024 6985787175264450449170203750170624 1754011811518504595567551994396672 -428133207239656175065581066582491136 3536098612105396100179764516487168 6774906089883263767689243175944192 -496148074717902695550214456983158784 7700268956013388044389160815951872 645753932052225126501496536432640 -287888933225578380797881481292677120 430816922594055357219059831668736 7993325841020387765574638592065536 -744947408052279543199678291437944832 4021287899671644468250428489859072 1493911439913987563388962326183936 -633490492179581537626037481067511808 9603765284779335759412945380966400 9012545719048183978095941049647104 -618215868480799847243622189067403264 8642795559296482099043087866134528 6622193545433698799891728025255936 -987192674981035086025477220126949376 1831277184645849941128650487234560 9095585260757722662087871063654400 -37328104752976472204793968181903360 5000683167846305420373372386148352 3431295898438444676825964399820800 -332197894004375310818818361898565632 3927466006952526737062285482655744 9031793930095163791921641506734080 -827589614081426994987564456097087488 8162379036799784040263131932393472 570494284037252975452447699894272 -550963591104300659473492413761191936 8970499445147279454186152189231104 3912452294030391698390375823572992 -581662808252143187457438219744837632 3729232715977199205377919049269248 9574952785095305285391200964050944 -124875384322492509462566479115321344 8215156708381667945980308662255616 6933032351548564138281448522121216 -995078719819562425061386649891504128 5791984276677172808663016872607744 1041886898672884441021061626068992 -154559108095863810631824600903712768 4612153309276016989960749646348288 4578725735479635576048819684507648 -210334911587903430060189290720133120 4404797329077285772887007785123840 1991173683392236287029055408046080 -289089576271003272713506608270802944 4450874923069829788753658078298112 1881193551057458764928002948071424 -705267122357531898520990524771401728 8622123432301182563078482813779968 3016264554142266613928547703586816 -164118144762534854077669484150128640 5724654954001101776680202346168320 3776414129803881789614989793820672 -190759923216295467306596867661365248 8024651860317663097662213302779904 2000044772553071651393128068284416 -615140913801762314501107710894800896 7962085231165387128853630193500160 8239520567118143054751728941400064 -292279947234601435244253191480541184 4330102085641874168571533692239872 5000672566717574142472007435943936 -831754402085328740498368186453852160 9851790337991243996505726383030272 8226793322476624649553546752032768 -129090864346801117614596934395232256 5316929738231108742680798992269312 1051587045073120984876799009751040 -337017403696190931600365388493225984 4231738806441775114716438801154048 3682799413893889575231793794121728 -192278929129175187947862431434276864 7997780072701185810285506483716096 7690247764843835658311533603061760 -141528045835192337366581208640651264 1505222290383238566646298873692160 2105321205446226990445414185959424 -169198504320966676614203938873278464 9183760814269898136496326112706560 1898655293168036213835585464303616 -757754666365867296555769459046875136 2775595789134783768319777442889728 1942136214731469560089961759244288 -67569678431994306608720770318204928 7037889824082095441838139659780096 9623479668545192649125901918797824 -490856354259329433944689163829772288 4931490385175740015702585160761344 4822121212819719747669561125634048 -52172784958002206961426924130271232 7416076126532594612466437423366144 9572385172888761566265621344157696 -503492128178214366537561369386942464 7252744004547813133389542132285440 7875537896817536702833091747512320 -779060931387005617850425055746457600 2633056149290882844245664156614656 1107941403050197223685962931896320 -438251395006434025585428011549720576 716122553608676829122094379827200 7549776090761595967520153375080448 -69130897637468847157127380624998400 8346112789080837115473833305833472 8202893947960723248368634581483520 -30675011183881884952539221414903808 684655263946829699154366978588672 7062485442090163745541860043522048 -328542054129039925924843608682266624 4039990782355599553085121660715008 2316806025225830842107625459417088 -985447240026635655445506494641995776 4828140922508494729439900285796352 9753258077460843905571659131650048 -316781991209419914954862030678392832 5334661252459614661243369569648640 5363792875027392516675956060979200 -730063921289929171166492891719663616 2783025918527147122886787561684992 9412771627838856504693190945669120 -886448091724478929516773050949828608 7331675738511110610695206872285184 9355007913980755867354535630471168 -952700400566793082613512379918450688 4117516433184475546863583807668224 183466227477304783354693884575744 -917393830212824723708995926489038848 291116085400722688659727973351424 9661610337026136387154895270051840 -537482210423884673456526910229053440 6397540713482441830840633395249152 5605005028041871240829431015538688 -107329086237716292578705938629787648 5853261836024746430044397180551168 4005005910891546454157165064093696 -196281653507977944640717990947454976 2286991853461150419191088587735040 3776455840573811998015506647875584 -374544353276178989016046049549090816 9316968244071130311291088719052800 4174364180599910572911908842635264 -206818634331070899198400680175861760 8404774653433971942757143068803072 2363966691203943651640792309563392 -954011548000257910709628142224408576 9576419117924187811287715071131648 4527211496574660518871830945071104 -537969934365442621067613253503287296 4083636466900004294997408611303424 7423626090644802837176510928912384 -829450643211781312434362510481555456 6838382846095633266062176230047744 6693131451535706988866533622546432 -344851024856598588662583001197051904 5628231605583839486966237770022912 3622433883573298553239133807968256 -360832873207084591712394591070060544 1382516967326200285708884388085760 4719383961242893346678260021329920 -948933783176178880306189181762142208 1979758004970299566348010212294656 5322827703524120544264443767291904 -106221960534755769859693115894398976 9617952281419799186030952718532608 5304341274096476853338584664506368 -163343793413628509157871336573370368 5849182370180782366076101153783808 6688954653491604845129420031131648 -79126332870316519292779714240839680 2818429711961683611997278467784704 5115153584433510182202821861965824 -185701255728485864851291054255636480 636157158337649851988573377527808 2434319512342879276639810941353984 -114937791027745029107917856926859264 7828617000184475727340927235129344 5594806334356045698142316856868864 -225895281372407838408513017299861504 6229436452708046899985905187028992 2816865650831589540956918459138048 -599634597682422742869130386895536128 7785756941326923234462470003228672 521118369075086595608031292030976 -163167890311283259231683479433379840 4641632378159360853384337607884800 2118115148578454901054012515155968 -479517673145166622579949165917241344 5241829876534149852846754285748224 9561590453869667389379610461339648 -311637881633909129137999345361092608 3806061879165205137182251343151104 7687265134349962538058995719995392 -215081898257920428442971053016219648 8612732814618921026825820487811072 5673011837316362938264007928184832 -135107718004649250822672420538679296 981325415899426346220805014159360 2123104234870625256974961076076544 -802335544023039252696712544142753792 3582255073099416511097472074907648 3904725883515450239265505047216128 -611261241914071757378674488103665664 4799313991738448137712249232949248 4309273753636513638396891945238528 -704666724541754174550270121890283520 5890121876928557252426243292266496 3886114346353304486633602228944896 -774061036694381547957710725570363392 86101525743111564259218706923520 118888228828205337388739001843712 -241345362995436238748447633060134912 8265945758583348588737826522136576 5909793501519972098841749315649536 -67128849957885442878107060522713088 8649887550948794576246701557809152 9243346679558461262708391874134016 -386812277511269811530830604767592448 7101502824845496288510534454607872 8001606744230526865696171015274496 -709016249083534235242808142502821888 5182295793561272181151682000846848 4600302506260182981292794593673216 -548229938272457043291267227646427136 6841570613293223168041257111912448 2298667361436538416392647181598720 -548158086315347557297513627945795584 150894081786456121864734954749952 4237404998649345963005871923396608 -207374905470071465501919253972910080 9652455122887852403951829518385152 4324979594659259596835758354202624 -751082897643733260190149922141503488 1299139929574598568315174367789056 5891363768106537023459699663568896 -727755005923090327246844484275666944 121180637844970085648763747041280 1098487362676244697164774067142656 -159530612878289898950381185762590720 2277759916832783653815846264897536 565268664361694265653921618853888 -765658936429452339656510536226439168 9295563732024099921747282487148544 9250621506497736928782546167136256 -348679415239675610845402069498593280 5479487461937706108138104637358080 5406752240173646150762338092843008 -544026669888484893711162733330694144 9724563051620250784420419080290304 8426243889883147623350753598373888 -104922100639884583180820111928852480 487964653712273746933408497401856 7828605909310122299711634133745664 -368639057394439699652872163205054464 1791562919752774216593886119198720 2811209976869640361967288861065216 -904890906197761290546432184082759680 954485964460520768820722446368768 481937999376805959314089699180544 -736180754888136877179079995017920512 9461698897387109718938223137259520 1347818689174402936141428935360512 -61383539150638364121719358623842304 2731685393622716339737029402165248 1548890403721478932069164223823872 -339400872479979288867327589073551360 3298995969149316050443489693925376 8458008157620969317338549525151744 -975218828188427918761784168627044352 2012890560965417972322177363476480 3355808652641603469746531303686144 -554380199113050545710103417466126336 2628669624667951104863681281785856 6459010659236993703088651237326848 -472595259726861961969676565262368768 7370503807951331027559326299455488 8705523695549388177626548270006272 -295620817177714510680128978744770560 1315396376475651825427014878232576 9267446369119904046702110347100160 -977305903442633179392802452790050816 3847528118491867551344331793104896 3853482968692390294646672307781632 -120479449831990608574237476386766848 1564019640973779419741363225231360 8501232086439128972255345770496000 -976889247362279088730150724180115456 6440378681183426317281326471839744 1841401358660804765555137982758912 -791858340922808467105885188131913728 2206858362550527308162681089818624 6150235344176105349301171015122944 -68241536541994643251258846320001024 8912391737300287887570589334896640 4980781441801486171698376512372736 -857425390295695673242821135790243840 5027566744738742372820965860048896 8277888700771348926568390438420480 -108642657879354430842459790491254784 4430926776711916744937136747184128 4020624388302134767352975682699264 -593441166472077720902454833366171648 4931261069663665676026662413664256 9038350115428554678128484573773824 -825651961728735211972760491496833024 964768854866099300408167862632448 2642563367335524386878776374460416 -551783182773023644295883475617054720 660319134646547966211911179042816 2839708646603254993096266255171584 -693126162187604116819044087086710784 1661256465786340326421317537497088 4648075387829340918907460156129280 -316153422470015667487683222316253184 7264293839868995974314075751448576 1473253776289019931232398315880448 -829071788921334470789273728078315520 7037878542866233080588712252801024 3778250838249225154879717248073728 -640087455217844280742862892396707840 1739997520311425760754544842637312 2718678661425243234281768141979648 -225805010203996442763870060519882752 7151544636628872773476111813181440 2235868196228577920036467019612160 -569557738943011739622219209764765696 802673965114927251662395056062464 8956545194822685565073227843108864 -415915103363373388580902210369486848 7461153841348778654921776829562880 8892948272358033915072490304962560 -646316434086491043737849098389159936 7879925110684838831992159537725440 7113254909463425656400755310985216 -110037749604485172216405238086631424 8513155920126277706241207823237120 7940924203253266577299791394373632 -180264774148132561438670122066640896 3316723162226704913263828597211136 784162127290140505473844573634560 -283378760969316371232891053774209024 6433336688099746319697237933817856 2432561158182303380137654746087424 -919178733289471042807141643633819648 6584468775401879073120658573492224 6948864012521270765915882175594496 -193379485348494471026780677114691584 8466648050825717982553125079220224 5819282173455329466031461235687424 -32978209553302299634430905895878656 8667715637615598574194602283106304 1862057629983180977491859096993792 -266808187409450681291588717124780032 3408850653059915211155111034224640 6696563105074103900500031931678720 -65800156499397939096877207486726144 1083430905841730916144234161504256 5829343842753615574742711297638400 -283089067574121261282373355681349632 5903721223574181023510097272242176 2120028984772191514451958122414080 -589569834831042665567070270032707584 5178526020753290978743129363972096 6490255858967106000806481313660928 -957571163088078442295413697555726336 6179875966258247190419324501229568 2617318378953077140495787918098432 -110608489130759247444259165840605184 9328326796645252181212372242792448 4679466616617771204614612102152192 -826140459945912913724824026519437312 8755037192109773898636448598327296 985880954136975917590211186393088 -841382930606565190032037337859358720 4742976005203420325819808359645184 8164551603387678875515685378719744 -670126766889341449620473567468584960 628136496044098362365838729674752 4002272465776639047131055138013184 -120104504050650666598316891980169216 2253097250331102841319754999791616 6783934361941201485862755234742272 -748773895786268387522407876897275904 3977008705082395153693031859748864 4487834126018999533721478307512320 -274155278792337741728643794365054976 2378891445660167802273678778957824 3779961666832587036520506948845568 -360655390263025565012991662891204608 3151681634641269854236933433065472 4390064337800517174595603769851904 -764513749159771490407297762031828992 157373315899110503654549293629440 7598518421953046607855792680861696 -294097043529746093644447535694086144 8718983487956443935771215207071744 1938721227382618922019063613882368 -120590567789756562707381176078696448 6670912058581135979023913774481408 3965848393715875755734612110737408 -225765009947830068197457744577429504 3069031853326070838290187521359872 7333432499266144483532662112256000 -145386726932356191063330864500834304 2187227572195576641047064286855168 3923041512529013431889582838775808 -879282637161660639905310451748044800 286195693210699772470450838306816 884707091312137276939637903851520 -710013122200180688227155528931868672 2913572396592788261498225933942784 8728804614333986416470797842382848 -597114519092085136839741394791694336 3534460676054833890288866611429376 9182001912055881639233572552310784 -605385314329616400740779629911998464 9710319214566245091141840606855168 7947405463657476567515342368145408 -734758909674676515429875971879075840 9312886500233868338651795097124864 2323151019556129603138781005742080 -350837235852646572984933660623896576 6036199502681143749723758373371904 7265551777061407138304421911330816 -765648958525600994408109694762614784 5755384901866938300806182889062400 3383825243228637634112901387124736 -892547451683315696812399935822495744 5786366376069471402633046473572352 3127501889931119982179626776526848 -582223948957159266045051144887074816 4352576012164149604507367237484544 3031775429756424580321173814902784 -985644453966874332404701925512052736 3496439299472822483764617062383616 1949531705377675308974595488350208 -436196015802097489463152191802966016 838058464363715690466205006561280 3732986498026152730413778765611008 -68667723342642663368460692208222208 7096953829048744008650320798285824 9818392851455051766665797169053696 -440560407294056858623048436674461696 6976567173759587066192371604520960 9856334754674325420502713660080128 -340015621672061977797267636478803968 5438639692156199226364616761147392 1153856748494744554105522700156928 -256283259510676336429331503151841280 7416597871687085218314506972692480 9771732301592778389714251609538560 -498877977916917039428938402384314368 7883473447468725358607669164769280 5058905835103758476727114868457472 -510162892598126960381648671139168256 7512975966415605101475295626526720 7083460793250533053496702741250048 -166984977815465299453352743840776192 6071880975349293400698353180737536 266381381376831415077185471381504 -830152833596241567375474312869838848 6612265630828762504450644847362048 282452592121174091842505043607552 -726190612624278452041621884385624064 2674294780074237414856398110457856 4234070626712294749793644917555200 -442401940669912305056012663970070528 796315941158444396610890911186944 4881685438308193201324592543563776 -991463999218771378942159853683998720 3470826675585132022159490267742208 9765007460356700041623755621924864 -333834021479196688373089489209262080 6589802274755101464945229320683520 8159140581789190115965936374644736 -707964227208604179563996401459265536 9403175468194568297213696342491136 740405149130537792249667772219392 -887417701459196754980175374488436736 6026833160504202326530719500730368 6987194962315224558064638703435776 -679833110951753609148684680814395392 5354438650606439933888724083933184 948205694532370037027944638971904 -59635544892371658641450365137977344 8519445495577529553789058707095552 7276304797676211681245827168206848 -905125025426240325613784017938677760 2496251959072204506218840260083712 3587370464430556622323008514555904 -545034616307037389974332764296577024 8710929255395911734237003176214528 9632149056462723240206389313798144 -258173564012865628098231469277708288 4138058053657740197525556232716288 9008890216406292722726978518515712 -612999670326494957447272025945014272 896178005980635308980402967805952 6355231946695152867424515137732608 -680651855654269050905804348466397184 1741136255168757806550895126642688 7856559725008279329903524970496000 -446145273728156238552076432894328832 4324975073853406327314072733745152 1591792322248917492049748812627968 -240046741264463877819148106377199616 1987256384817359357458980561485824 2287071260807042786469501024075776 -360648992380631935386754726519373824 2759678304304254402310970347094016 6237420907425187756102633564143616 -419169868273859361306206057143468032 5892862418642527555048257439662080 9284539679022467700900768274972672 -760265358076823293461764502043230208 4016622647410586002725151143100416 2271131841428925324797030166429696 -247308760752348409873732044272435200 3857986129014432561959711826509824 2114717450646674099761998068711424 -931946130437921333933927243322490880 4554250426518980999924340326662144 3858547537124421165518156633997312 -670615575798795618383269270067871744 7090829633701161107844233233956864 6128471301790053745892608756940800 -674175982187476757191601084308652032 1152062796171432820145415690125312 5857322199472686631682679125311488 -695940905409819603844486013636313088 3885587059616151210619764136214528 2239322680766706473923489115930624 -220352360783939650505872018696568832 3873841479049874597815597077102592 6732360818944489230431466368794624 -811404396354944811710387922648694784 9975046073532667348199389077176320 3278315783085964110423447469817856 -793503344773539641749308315938062336 2279172345961665033141478907445248 5722752994623049229955869247012864 -689150014930416623492044092673622016 7541166640924766943043844940234752 4555237816413572419197093558616064 -658794178485311008256386558683250688 8442589101856188964124139102142464 8149519716805979883666508372508672 -88324476554774228031402434495512576 9555051252444409417554435590062080 1627395686229216646921745810325504 -256792414205780307442157798572425216 3246313296518866870857679155232768 7119629175880679029502168621121536 -452523728403655958887380573254320128 5055008523011411263924764418244608 1417262355035462108425326365245440 -651584218002862747475045073033363456 7879814612168210373808047324659712 4511506415469744263929006045265920 -800366318921593936203019407738273792 1687832124232607509316861182345216 132258519372521877719158483845120 -851864722330746317794588470938697728 1005795155649713656198843953315840 7168055069044189279459816352251904 -27746998152833966437029519967649792 9730730647840264725407078186745856 1438020378010255492075280201154560 -489916822702533241450725479381204992 3308634809741551485620037812748288 2019230589394196233509884013838336 -350166152178525446154517958027640832 2950492286589362723907249494818816 3846445207771892884992327753400320 -746817886787640603037386818508029952 1968197230727133603713890188787712 3217846218463046385579530408427520 -145611856464355614704024564468285440 4051434904033389899904415780831232 2890479768742291825870627886071808 -302246983972292235101769008565714944 8928891252316499423347384246075392 9766896896720453858441992547074048 -186134323170247219150441635695820800 3259585626978907191374615223992320 1626442394736370031638151465795584 -104032234705630260230388555580440576 3869242249849008194432333233782784 8252562036206949269513133650608128 -625242987404307540239038302751031296 452296376436529496852512240566272 2608692276740554788965561598476288 -118794579601042899282849222172344320 6238022735356088460727894337912832 4938658677193562603537326099398656 -990995174487227285047775929972031488 4326541965686851106713806764507136 9148981619853976926831139230842880 -47180326500475192080781005444612096 1184556186975816916775443957284864 3806919961446430286994736647503872 -369116956933085207600607108203020288 1327558599414912421038145811775488 6894971447097160528543513455886336 -647895682525320170046359308221808640 9288698724083369649713406613127168 4724298759647258739872129999699968 -849839740116370692880110432267796480 1864637453590262221376145426743296 9106968220870854839425866980655104 -476945948522208704088979950421409792 9053514949239391810397070763753472 9432513896045689649875469868204032 -124578254387264154193259486559338496 54728673165406387772713760456704 6810410899783665126933857778532352 -384198733103803348161949204756824064 1072402950761143034412579074080768 576933643330021878092308489961472 -529017031832020905949718064561913856 5627792307134581520846766963949568 3503855384567018788145190758514688 -224823624507273808922135174261506048 9665318776398412461364339070205952 7322784727280390280958886052626432 -890574934402496880933836891436875776 4962676535568272258946239473647616 685198306607532035056322551480320 -249239947137265632163919325973970944 7303044408586828174955693698187264 7674311011851062059848084966342656 -398969267809876119161287048823832576 668786035379439253854415853977600 2618755407410690709371790613807104 -671468049241142531855295571107512320 3635442562231631132959146959175680 2728475102382543225263282832015360 -478114397434326980930298980765532160 1031910586613878282933130319888384 9910082664872247115203279734177792 -794738396368703331362651067241201664 9539608320327796863873526244835328 4767199201384795925248242033360896 -185110496449139628907349083424817152 1218480987876866586264318911709184 1025002524751205815112917602795520 -340646833141015522775986509843529728 6170751514810672716860423650934784 958390409936872041440098010529792 -64505784024955897096982385072799744 9466310536039048362155074796912640 5309671485285043037869116099657728 -549843922978542582537701475894689792 7516750731304596289466624542507008 3963218453320321325617880145854464 -970720752406733280851129149207609344 1786461192036783000084141339312128 588848025646528156897177195511808 -324737891660388182388413171752763392 384177763882542106443923958267904 107694723221113327775130199261184 -416023212843838875388537718456713216 6019287032454103224375361641906176 3453533087421969878755403840356352 -885143271167759712914679076101292032 2327338406519311000512397804830720 6015705553632635390097795206610944 -396953651164953432932218315451924480 2715137316834430690236419926917120 2227385211506505497839354773504 -207919817454958176109978891665276928 2003026793633270696173550874656768 3096779427056390578805318170443776 -3287898966112759247805431978917888 7835295843232034104752451696459776 3944185206530096048067165638623232 -808675895571445310686128599136731136 4340776214679909141280356409802752 2580140056362255020713872917004288 -514273990534479336295595864848596992 6179579712763374402418076098232320 8276501696905873961006961524736000 -788536912288591645346143855523659776 7493984866333739109139343397093376 946594990463355721741533551001600 -664262744248280930691126666838671360 6059127560944591017610171658534912 6209163385525365738568828338569216 -315609247195710498053427912282996736 7156908476548225085874770496454656 3133042292868844736901430372204544 -190646352535472572837347234441854976 6930190659886826399115450687422464 1913972142871506614237937159634944 -795047432772006940918532294645383168 4796911593869355877507566990786560 6391086464038153055447359546195968 -57104176308368767224664466130993152 1362344763052817089718046278287360 6136671835185310682045819641659392 -427769946179812038224335719121289216 3886802022717319375432504808833024 8797744900489841106447926881681408 -85058069397973453016814521832964096 2476481961429177841092408782094336 9453789117345615975539015914881024 -469919041075381854089637231014707200 4425572291466245701703514426703872 5717614089152633387062531127771136 -401039471794146782277369330554372096 7693797711899529008245137293180928 4473085048890441625190958203142144 -244749549732368225124352216962957312 8703925952037301726613170861113344 9698125671725598825691814920454144 -309516162283347806108678698945216512 1834460463321902359688180154761216 6676843466764054676430180254220288 -102046718928561734595262381318733824 8756789452133620281402123943411712 9790396403959529823914637240827904 -134832190584473901629759870776377344 5023577430164532665292755306545152 5362244072366202312529612021694464 -998383339749210520593376095938543616 3271245888695045651790028804718592 6779860674119579775903811804069888 -124650814989683987295928200932098048 65918622039835135229625456656384 113182453495834264860179728171008 -200347850796869525266230751958925312 680479816763764459566691721936896 5862164231273116535351315376635904 -56372564561025745620117244530917376 514350830024796940743029060272128 9271415706368822479200490507730944 -971764778152310924714495360114884608 8850555479273825252384387689873408 1664070377413091876065240403673088 -514526016015716723552348553206562816 7931379894993919909969417111339008 404212811734695385871432879702016 -555473687605031455049775119876489216 8561385008878745003053206976069632 1873501937345869788385765371150336 -716774459125690759002817599851462656 4616563343381611973852378987233280 570579823909017231162658567225344 -899782613107519389560388112730816512 2999733782189101787655563225595904 6714980765225516504691390078255104 -326766830379066622054693620456357888 6814217045934275171245223007223808 6362501666541979109329861439651840 -214456103364007696266461315315269632 4140672376268263647741135514763264 1089839336677572605146281994616832 -887090032682970954026645668958830592 5939244900879139509754665258450944 2225968397847681041524868941611008 -835521722136042003053106482145918976 9525527613011868101683078053756928 3290925208537756087679206524190720 -787745944696679920484767484734341120 3635965421807479247343446942285824 8618513782000268713983472893427712 -549455876870026133362283363254140928 7164687218880505837021131620483072 6368771088140281965354172993765376 -851809088518931495551562040637128704 1018821099149824194552908212076544 3715783856231314888923119676817408 -41762433277599699799148664471945216 5049886316014854310162023200063488 4162977864857064142587805789323264 -927294284662590726821144081373069312 7484491706401115833819092970635264 7667015268088595557379262853939200 -700631786244396050861060109063159808 4313376715149290882669913676185600 1756551916914681243853504680820736 -55795615778846559201685309378002944 2035218604276918561134460257959936 1913264146888321499099739335950336 -658337204556495251252595808234635264 8549833864138080926971144190296064 8654601375743366807707884160286720 -785957218076872295440776856397152256 4936427371433636546905215302893568 290415993480808791290069307621376 -49891496570708020307907693651165184 2415853305837441527560746467065856 4398447606733359144369510749831168 -324184144555028469712031384017567744 6376881941540942414049893670715392 4502839988685056535624922592968704 -691424335271163669505353470393188352 9496103494784826577056791076536320 8525914567552291966340598494920704 -49239805135218910331779223746772992 2172511452867913659926383735865344 3873334643965580877807014712967168 -837461704536130581682942112820101120 4135567999033192791215009318305792 417462851539417658461597080748032 -334983878808633784509143274429087744 9491166499369691892346643082641408 9111486145415553157555631679340544 -674946648314119047462142821353390080 603958677876129077989764851826688 8681330703243840393717710682324992 -213495078632976426729497595857600512 9428938901357197341425100990185472 2752997441069965095540650420469760 -833108996080727394439594641029332992 2397173562714568878134136477319168 9688245858379017274282537125937152 -4700418630229856510868682285514752 1234474938839123694840307272122368 6549908821899865392100583139180544 -482369142079288181588456186115522560 2603765851774034500685831623147520 7672487346845755879227576465489920 -386548980441611766144421021186260992 3743635551803686310352985557827584 4946930575732924879027657659908096 -561375828713486275892642350463188992 5193998458344121651737527421239296 7584709097026852850408050462294016 -37481711730323629863322872694439936 1461754022419581772602336641810432 1580405808455534905498883894280192 -436459876440826162375216041346203648 8433918029940982400474523283488768 5627261581884601500941498791755776 -594463440036739055718142988469141504 4925619607370305992513421840482304 5311885059584645898157923812507648 -484418936942411713040990322596773888 1370363357613258418815842710978560 540939524202074229791352174936064 -781585317659228063897773923870179328 7283534472280317677192195243769856 3449273976154540544003313013620736 -557537303700416020683721891502882816 8520217727821440173644833972289536 4282649898839128349220862838177792 -608699405029523792432014960407609344 5652491012394037428930200467406848 5679236209381283538481703234306048 -276394767934920568145785937016651776 8045711865659091037567240623882240 2637363374026321829598183626375168 -619074232206753036539629768460468224 502143169160110080342296277024768 7501901497377375028479591419215872 -252887158458665809853009984523075584 9561574843793661038011699972538368 3962829745987105979627784917483520 -985378616913401933594735628884377600 8175339413096808678433096275591168 6597652517317592773464648558051328 -770915401677015524592743988661846016 4836220121422914897290127401287680 2485274717828124752887715414933504 -543541397755175868918341885952524288 4079902439550515884117229817561088 7469575193645428680558911936266240 -296797581031224366894788238953676800 5673422606574245240038205251649536 3456096448994867305666658894348288 -544026203545134298036248778345807872 400547971285387444818044979773440 8165420698160773510705264996646912 -488474277460897959162313205258125312 1474854464067685310059915014832128 2858859623595271654316163903520768 -393992494593592620942612727892803584 5033294333346453034495222218752000 9918270830257983733519921998462976 -184331416775382110033880487550779392 526843650457592605407698999050240 2151633025596958095021973130182656 -508604346642544315572152529160503296 4366059707102527048857860479909888 2540626831095818996242221153386496 -766511477652244141494148290496692224 7885347350534758149909383066157056 5479817921292725330990094021033984 -120690993068473789886941144643796992 6501821880045439669264254282760192 4111140777517043471378166885384192 -477779692365913541886570052035018752 5853865674829153089712142992539648 4316402680498749369463726327988224 -193491487997765627640141779902136320 5422270943072791053907229447028736 4809407662473465101045484465684480 -740765996135222300877665026378301440 7303283643692290913592900191256576 5212969564234433587002889212002304 -549346307623758875704450159927623680 950762091539896924428205549420544 9367046513684442133779594507976704 -519149480160871754340326678726705152 3796592471259750802347662306705408 4150258590295661944250316170985472 -825199558788756563445682685010247680 5975076562647116321494341364219904 109607821019899434014824623767552 -742887819001650210588743198402674688 1288774733654718338937122365374464 4426684095194353423443309728104448 -271711912370034785146790545536843776 7886376907056383201351993298780160 267890932445662657651215052046336 -829549172276233475976357211910701056 6504425833310296732420888240062464 6845547959011398164483014362398720 -338440104460817468864402545115660288 4675853038058410767743253164851200 1869894476050317074306256141811712 -786843173817080150844145972012908544 5804056343846055687327708908355584 322871701523082306456597550858240 -440678440393030556682646706014126080 5175667065697986067728782638186496 3663061482256226778083497057714176 -416367846745839616549633040637231104 5307455338244644422263433676718080 8744869492897720450592909752795136 -733058065750528840199732946530205696 6541196984817454193547718764265472 7478277745123414119118114488582144 -744023569246617869830937698203860992 5355884542543900250149063940374528 9726523876099199311209719901716480 -301306259021590334215655689958719488 3361769802738418240927613637885952 2588122429532436084446306544648192 -853445072152840211509911636150321152 5914014119508667542307653703172096 1027721547937336266746955275698176 -44666632907301629784340494978908160 1810060450816211275591505166729216 6784911311816667780818358851600384 -245692128871766272418080862152687616 7367282785152936210149441768783872 8671158598393361088468815110471680 -412750801007794822948009917257089024 8727646344194616455209036550242304 4134396516635153710270066936774656 -554677724546241090990579024280944640 8860296875930274220215701581332480 5107753465523051262317177329418240 -199668316460207485203014325976956928 2440178514686204275423760672096256 4060092442762938282103389101752320 -424575235633982663272087912047443968 4162696860673853032747789379960832 2793960062803531836190735831400448 -506732011728611074441052444155707392 6746025582289043706021058059436032 6089926991906321040507758740242432 -389143590063902087034738926640168960 9946827511530118839168687308537856 8008406871160129630063132984475648 -445909695038811770515200376448221184 6442795029706139249162554536099840 631721418035002473331634902925312 -556100336060234364748829907128156160 6751857871472358630925199367733248 2686595234018731841740504641306624 -754108949775558834758783952205381632 6826198396913697716595086793375744 2082356178240329463462379359567872 -995510136879157676549833260282150912 1454689422410208953922020989468672 7327329140911057834198529438908416 -276327652742944458290966039785111552 4532624073189548927390963323633664 4332533459402210245687073228980224 -720283808821281550682497029515509760 2009175738813739396941301862629376 8020140786775108108394994010685440 -494398045924473905720092617070346240 1340553556150276213857817330712576 9602899309196278575669650363777024 -345599795106088541468008446552965120 2874004259059191120003086159970304 9002348660209454975143932407578624 -906375938308842331920168434291179520 8880933228235178761076766123491328 3980797291643727807457400031543296 -672779723753707644303875939330162688 8102107027192513421283842227961856 8991713747427051000501405743054848 -959627626040566807277396818927812608 9573025916222969410178870184771584 8395680468826658240521295794012160 -67060676018085033356382597480972288 1336741618163472598410674137202688 2061514179567408761887987427442688 -137264879507769601079049593909411840 7647579470769935893023489389494272 4909534418344639597329156386324480 -759055972691698093737392519711293440 100038901066183443428284370518016 4263971755226622582669880068145152 -386900371683610530553775307194630144 210909533138666745863367898955776 3756430178075458022145485627719680 -10830084338518520817881728694616064 1296629326600228474428375716331520 2537345647590897604275512799133696 -426730068164773774112767370325917696 6047276466233674185975187988545536 5554786160442092057662959736848384 -353875368669126129942042970148569088 9296082987320904380880038752419840 5722802072164248734798899073515520 -965622506685727384271176426091184128 4678570053423451585050346979852288 663884931270337763349839480881152 -214490002325083031489170755431694336 5726892304903164446793187509403648 9440971957874023474205084608364544 -443441852575173013350386739380748288 4658426844959989723459598556332032 2939240480801079287965933497221120 -706683281703788556230518980711809024 2222468968182160586008854165192704 5821808541510487205659459446636544 -754608322093318877509839168292782080 1574445198703135530084404427751424 9894010872341934490572155714011136 -456919322756606286173336698078887936 164914258474276833864051186466816 7116598261495965707209428636270592 -610667649593748045375918912013598720 4730339901928348219774095331426304 1106922624184961454868802738061312 -469392472851201586728622342941966336 1370999111918871012594787618390016 6452335629280453924676394595385344 -367211351037712384192976310677536768 7881444486098308614729173380890624 3869919954416641957139337573302272 -309482615879858039743996747965267968 7304674667856558499657500489416704 4893710831858037513120405809790976 -516787072403126291570048283243970560 5832161366368435984632172379111424 4049275549704164760795795727319040 -980563049155719983017180351707480064 4383233868856568658837268993146880 7958826224752557799144343614783488 -866910885517789389921814278668550144 1996926503869426234634395023572992 1241523267155823791895547092140032 -487779510121369287404537692861497344 1185825684713538887479422175150080 6071089502570840982640787112067072 -943457408530341631580256891551350784 4430101833415857879107859753467904 8252039366972610665209720276516864 -429484388514573889858611020407242752 7784721545422720913147108704387072 6249182042812062969465248120045568 -306191544215492465945538957731168256 8890831872201376851725628712419328 6420158446325144520443501903609856 -514070642323735340901684858845134848 2938536779945508275409056388087808 8473832642163916158611356815196160 -473487796760872874569537914025279488 6889021393979522314820393577218048 3972142609641034527930592450838528 -302401135358916536033611732033208320 3066705499464130046231935323209728 9536048989366517735356710311165952 -253721834684135980735100439905697792 3694577838697833472451787442094080 4781863598308792536898042706526208 -68447269390414657106268076178931712 4780454890230582570923350908993536 5189212898483864712989541616582656 -557878834659404161509048000620527616 4237916887174881702156867519643648 7610187009857029425955155990282240 -998299164050938987961495796194476032 9589734474678467893338137245515776 3125649146232783146787843315073024 -116770194236088389738503105452965888 4726686909062820340379302324338688 1358764401705121499425182622679040 -365905547488700395507334744484347904 3483643689209183688470659569025024 9253330057536413723151656621703168 -92635916214445963985343863150608384 1490828119986063205750312267677696 4651580758231010227800111096791040 -280045674298870915196147757609910272 7035376629896464735428381109125120 4919359471376427167100515198697472 -180367540819212967949350195827834880 3444510229569617700009478901989376 4790594219912651830310051342450688 -556956647615912245223345843842580480 6479370489775398317166443561484288 2508984042238164839370409163882496 -190661511467747539974348768479805440 9833834994577919234084290913370112 7645960721446720102577690346782720 -799089074124019880072586896250765312 9653550306524585178813226706534400 5418157744248039922775360544964608 -758302482702315617874602439047380992 7030281243518321215789287316914176 4241672030846312071784632414109696 -281012726719597270060727123130187776 5098319821546551693913285808095232 553794688810979899330520571445248 -288471653290519301082890901433352192 7487946193991656817311578199162880 5486843823868004107637663559843840 -466632902312529269562743934230200320 4278784201395665229364036559175680 2504050866018874189331207557218304 -241691653104554259051187145080307712 1614749839888416740712219490123776 3732327700856419679876242078695424 -627992496773705982109907402073571328 7236313809913686291174060978077696 5119943316544930047373685748137984 -375941428316072373285608851096207360 855105929634329016882349807239168 349787889265923180191974741245952 -216230547623282450278135658948067328 6793116835688735509692782389231616 67932662578616593057239772692480 -683460478871212690246454541392281600 8854058735844216676947600261251072 5436451165489395324592574236196864 -722915934686207055758604703551717376 9492371521354596388999184749953024 8653509386626743285169883380187136 -780030214174337544454371433684926464 6617562922605575271575525854806016 4429701031297744216267405456834560 -237004425447218584400683710784995328 9534085189940877434507589392007168 7423457095500648853588856289624064 -60812758224250879141296358213812224 3532505184346573089917610231857152 2025229257935114236600956305276928 -985904745014303397638432839520223232 6882436760889653000817067402723328 7032682982823158814766326968483840 -669488646264391189322383109658771456 2588351769619800428769616896983040 893644208189776181797562750074880 -111288243224124701773598358373400576 8426988134884296879259045723111424 1310161079751209836182467671752704 -806325000163816861611495469002784768 9348154782855706779690510747435008 9213805437490887406206188334874624 -471778785106125564891717265757569024 27867584978823517881464080302080 3923607532036990695026021493637120 -429419540339433252044585382698811392 4108049969545598410460877151010816 7965280753526291705352496370155520 -395527982713267955543890264093360128 1475517432040367762046054125535232 4523216932112871540605632768901120 -871446635808524458770484258007941120 9416461499054699541358673418780672 6404323422013697858368214312943616 -346457120479337991783535297765048320 8809920524581066806848849855905792 2811112079749797458245233126932480 -454883441906516667629231228527312896 4350750376122695386126599998930944 6502604384938054697529483471093760 -284825122549158128863873554892980224 9627256295407732204075848459878400 9249755127260567895479020890882048 -217175861502870514707812163405217792 8563038611864918202140032774438912 3082221376316537304636360172240896 -48490483736692491277050787047407616 6203949303424023997279160743493632 3489356579611080514202973700620288 -824749476541084361703324336827400192 2090256852257468169427849131851776 5045232619642493155385906166759424 -103245438159646171583623719334969344 3689307723647161713813058714861568 8495309079618142494905109768568832 -698312673521938545499888608029442048 8568370454848167055648325835423744 7333350038747061779599142607126528 -742099190042094430300794296834457600 9835365252053769230085130666639360 8440734674160175579702474913611776 -864026887062693465282419362545795072 5521253536067197324301290897932288 7439377582905575886674848041140224 -472745296342777943143074655425789952 8306334676319081552529139970342912 5457008478921775935224018576080896 -887639487286487278059343712396247040 2954828754335840362102900333215744 8183150560675918954570465404780544 -224044763049956290000032481666924544 7201285711052448303644907099127808 4105035266941538004171159020503040 -969439204677157801920158218703601664 3822154009785152557128379644510208 5324045652333423594113609049833472 -77814817538964874028449785792430080 8211000701231890727030947911303168 7435366118866977127602818752970752 -587345710112204657569408217912442880 3812373524250149145508198819561472 598425825946357117658929966350336 -483374359277665572952921398793207808 4268101697019203583833479688749056 9875152564484424767821571294232576 -905887803384344534170172388353769472 8400790287895015917806355241500672 7695010028534031115568464288284672 -390297373682235654565549859523264512 5952888897904657624052010955309056 3618388086297478534421191329841152 -647149419444489885595203611083669504 614329100712497694262386459934720 5999993340591926870929963940315136 -275380741996401708666273175999348736 8385813230697369875530985578168320 445717131372753786579248513810432 -887794252997386057333442350799650816 6022202253690018297937721693306880 1307046682466402622377176267227136 -755212556337487650117017563631190016 2227834920328591878105763743268864 3900540806829882248434644097695744 -602629669165032426771353488974675968 1776667819670725196897603471540224 4897252400522890319474931456278528 -187275833962882295561917694245601280 5651001203815019528448569199558656 1572118252293786038668182564110336 -504859278091512421298459680660520960 3162524953821581960693957219319808 3594097886116455930724373709717504 -582141269369983214258074904514527232 926331277954356261835057292902400 9565806569522974996990666720935936 -151334320912376198578150944301645824 446502064762823144172936146976768 2918647113348858551416069740822528 -45363229900394472501074294225240064 5480296902616159677000300932104192 2282369980549647724647467523768320 -861540564202390839706283749868044288 7719789716074455404467421387423744 1808987413591455699129215884460032 -32324580808371003420295366147309568 1190875499684353647976648164769792 3145451374043191974851711850250240 -34779928539472392312846059885821952 3240726310554240092244809623797760 1998998993489354031735405289668608 -858436182945391098946792819804602368 1495811546475731049583700258848768 9698864938459589313143756134809600 -853603775047989243770580566968107008 1024398171625889739258429475651584 9712282357031835111771653292425216 -627376726864032714107521164755599360 9157598227650100304002236536586240 9640200324837997555285348904337408 -698818647833558304206860409318146048 1159510534303655015706078834851840 6771727307437774037543259220213760 -671811972042761623202086993679876096 3026208040434068327194104548032512 9845795720429236071849524711129088 -755962119572777907150092026599440384 2192895416116507099342739123208192 9265204879699208625933785621331968 -474260010363686618860610093427195904 3918506679250267179446469176328192 672541526001360485489048509480960 -515431236248493855051429744954310656 1227834713394961171659114099507200 6629300662073013154040249998901248 -484547025850903636138687268053319680 2777748273991399568438262293856256 6160182830848023030271795307479040 -879687439214083263910765311410831360 549548375386669479525982566088704 4256673289823405042643325046226944 -738906431985748918933444594268897280 752228459149855226628480880869376 1982986664712171810429273376817152 -258434142902378946462744527815835648 1742964113948103335714701575192576 3136358093597047888890847553388544 -382492901222668054643982021771132928 4819068727704173414912665944326144 9264915535514300211901137204281344 -242487950780880767966679013733171200 7072534729565079472211620723163136 8192524707166757943881826299805696 -577321953664411909743050029841514496 450012921491748813573773397590016 2072352514375736664216981735473152 -312059950759164786316511925816524800 8265617540436685533874961537564672 2815198668216325929818463575998464 -570726256245446990294686279932051456 7456996061213388113287038447386624 8236309213659605735333118735286272 -492628861979293676593932740262363136 1665814441678582020338729816686592 195222565781293017179890514919424 -320977640251821347984250004381368320 9192726728906921210721262249181184 1517609919046592347823841029914624 -60859778822431539575440560049094656 7982626653588115911519216905224192 1819073524161279408720955341537280 -723843552569972923555046510731198464 2972305750414692264560246208331776 6571113094075437073060893086973952 -718079519064102750685541774257029120 7040509611496997965750356930461696 5958061596267881924998044762243072 -220746339651243267670198138490060800 555404769652469570536737555349504 564633699049826109619045971001344 -536173026519933607206771629228032000 3148675552972553381659299056451584 883328249472489094678796782534656 -713251747946106857465877687261200384 6940440471219257875880989467607040 9630127822627915277830314266722304 -360363213624430981062601885928652800 1134935087014801800215983571337216 1333490092085139055216408888606720 -630572368106687762032654714314686464 952844130831630005545927062847488 3233124944809365433179515859763200 -414339216729561756582261117834756096 972951451041471678997319301201920 3340437202284734886850337972420608 -105395769937116623273007503751774208 9292884479251868378109261786382336 6855871579247452106459794265604096 -115758433934401218900241622585311232 957070844561256893798449368006656 5428542837662514968763085025705984 -965531749083780561403314716930998272 9715414261702924394919941894045696 2602507561526304444943553768980480 -153135552694879299838235485524721664 7818870889328249532688944920002560 988707236825658052948344667373568 -386973407984471566416087216256188416 5853672189262878037184709927108608 9050051314182944155704205040943104 -821231568527074553889761050662797312 5690759758323646075911651396157440 9730901710717528725404482965340160 -316671278104706591896919521563246592 4606525687125462476505128911241216 155324294320291795280751121924096 -976185771573272258198528903692156928 2277409498622938589600863980879872 5748935173228503947856099267313664 -426271160456655072545631815424016384 8128668117862461804958235083407360 9973883763175825807793343250300928 -838383881454400285183629003660984320 4271178887473668482645794448474112 9202138117564829866042068872200192 -545076761049055651251972073383264256 6685475435986855579164503770660864 8305666423122091037636663395221504 -84791698830577692525347551001444352 8416952078138514553017799018545152 3384896763826137665683381785985024 -658597895241897930483100575460229120 1845431466029923271621704740241408 3542385871174208529052428679512064 -106104962723541942994304286758797312 8134638573482377836009578569924608 6463049841950348347505375451283456 -270996959035941992915979982652571648 720317040223333407581890456584192 6014876593090196045140433808916480 -303077950440366274428853608280752128 2923289829357680627260315049918464 3237909846105371169464372894367744 -68891520549967078748367818183409664 403530850428589318817673103015936 8459551496925995125684035840376832 -544773993562339008663724447684886528 6145124452127940932555395722903552 9787055845689413072896176773136384 -687358754456682085449134147891101696 5293686307210497430736344748916736 8140955482268752332199939037724672 -706952784194276350001413699739320320 2721274538755783381959947971461120 2804083298924787156805077981724672 -817878813586074876008646954738253824 2115972765947710940292575066587136 4941922786198215114605305727549440 -982056532394537353017282468562075648 7464275213960393898722331931443200 9840650726926915286200255854411776 -416476111572443410649610927351005184 3201800931884968660402806638772224 5196894934895945971262217208725504 -105120767750842009151314034790760448 8396764627605879802628182833627136 8255000831993960664498392241537024 -516522672570199676930538689200652288 5028715101389552253096883491176448 986472796457644711342712578637824 -899584302999095036059783358679351296 5301146752593702142381935957114880 8721599017184660053901649079435264 -339377659763129492588701369539493888 7258090415307379056736729072402432 6628679675042466734840484189962240 -131624681208913510319231345239261184 5307820442450647839390982624772096 947663141617288553817224534556672 -197187930193767390421879592404910080 1491237524569056521557517432520704 1359538345574412543715570110955520 -340933303517285860447020955687976960 3762404423815302705101401409716224 5989782929751811619561433861193728 -444821043907563884536337089404338176 9124668657742481360586310032556032 244448859615749742019506058821632 -268543183941599310385696717532037120 4647705466621773437098825118384128 9535787987083888769885040355049472 -560389436044659135795738008054923264 295634740631344975888259655663616 8157926707085875641837386721132544 -700434180481011118695759864794185728 9412280055880078562276027461009408 2312668807254117087479325700128768 -790850565800567741037989315357966336 7279552527529791713324593856905216 2776815659829651964330664735539200 -491393661633074572399938297613254656 3484456413395679248086483052003328 3470354201365763725531928741281792 -758144473577371487187852637056794624 3148318397323789172811270509821952 4030578202498047486915944835448832 -165981301048564014847404581545050112 9623710552887516125515376498835456 3969584155661835979295979410030592 -284706077012616515235598836462256128 9165886407039373886970726008750080 5216157739742748402161107869892608 -685089376532798008452915353289228288 6597983908461484623305223960526848 6573792959313754833546115844931584 -320940083828817090997660999714078720 4790225106169293139048412487876608 9506604167784872805241634829631488 -828101943335063706827399847506608128 130757349746943914574444740214784 6203393619529182368973376590970880 -681919356409669034335412818362236928 1870313612937600555677816968970240 3714027815400765981490687070175232 -220909801696522142514792324791271424 3296893753033542589555652568285184 3744191591806257242403531474862080 -291147007340678779776600598047096832 5145396126486903948819829220179968 2168800967285404567888361966010368 -316131990946338185959609833613164544 7805296286410688719968461161234432 1357476644372313969682476727009280 -379807367917198600490813355353702400 4062817309988256905501264219996160 761090896695229919924710931431424 -128338545511004479983960083369295872 4368677517376455522877388141625344 9839609155451089961594513302487040 -570021701618431379035992496720052224 2932719833718406595322808404803584 6047283714785105081647789693206528 -360454940113696514818372342307094528 4714840018887380780117450383425536 8490614113070890389857867304796160 -565079726464638374874699566747222016 2824270746405007459976597972451328 1991483150749979405187681588609024 -895269420098599403018765588611727360 9569047288713014459910929898274816 5587651612308823032440091612020736 -18443550733748743901173051037843456 7479978827588635482759251613450240 1554649755878025510165289132621824 -722308719420136850638294448164831232 8582139703851526567969904413114368 9760024472857873127749323883282432 -325204115832628123351320645318213632 6566105273860611003628346526400512 2181346044361455481254925513523200 -720807185766624008613285015800774656 2886860181981724489930564960256000 8472870619224912413839761946443776 -687008201290995893774816044157763584 7821976783897548619478678473015296 9620331820661455928577379677503488 -603647610817612942736332837347131392 2972194465956734896714071498817536 1670502637054385669676515953999872 -897047665516038922744316995584393216 174160925592768825770133828927488 868024401767500065813566796595200 -929209973357685357792196595892092928 430807965469658196099565946404864 8521659848109439001049695936053248 -760727922941934874060011328199720960 3436134812497051806944096314982400 6925406062495557239444740922933248 -219466036535973132276425108569980928 1226930411903590812537328335060992 4190860273969562182063299844112384 -5357556551230352579419096446140416 606674712301714520824923996291072 1245966059563565319032671146344448 -323930730923509525883297178184581120 9537483574064613601897840256221184 6255192276554902681161038848589824 -550649768400404178360589745194532864 1105551996418146826921499783331840 6362992745702724490026266702905344 -58212293588580749817018840619417600 1983297527424919643104334040793088 3258149078953689644988725645541376 -281872072362775361646299089823858688 3720375136874943236948367725559808 3537787546134511165483395510697984 -775785633909580763040212770036383744 6052416940534342047885839457845248 1721121620580323437815581263265792 -903156888517894064890498757190221824 7270693682053809083360610009219072 7641488795090544060969906388074496 -931029381439658642484097190172033024 3563137968830904045774487649517568 4957766423735979928937930271227904 -495233210733615022052439348406648832 6620332059527766912182110258200576 6248318357587942539466605015859200 -334906946578959696509460545015906304 7558646854494816891997778140463104 1869316418617048726220861188603904 -81142852002117014357873533778919424 1289790526811821384445679087124480 957739599713519565071082774855680 -211549915669659826072067152965271552 5455433001489714861359046026330112 5761267487418799728576079570403328 -737961384173120652868118973081714688 1378454867677590231449354918428672 2447452560340760060229493861646336 -138814062653906947789198688174211072 7499254038834096859195138503606272 1526817466606414527679584603734016 -386718017633272817063194122623385600 9973655614288102280245017734807552 2758298172963802070036268223299584 -323231876733867169040459244396085248 2338388527930552445210888582987776 2466831359188685175097824745881600 -325479014503036113897768441251627008 5448335451388474049645142228336640 2578923918927708532936531301629952 -710712521713908537902541046078767104 1735544472121244480746171897217024 7896711670369783874549433101189120 -442831482680495120462205713825923072 5486158921347731830605603777019904 7566811163447400268489034632790016 -708117162351130705797692057398018048 5143207648970682362185571119398912 1395108762515255558698689791787008 -596051464400555038859390076651044864 938126427255665315995884546162688 7270316272802720610042959143895040 -889605956482490171222706167446765568 2550682100748439245280527165423616 1521802778523179465039971073654784 -868335695193105709602658090536140800 5048977266591178854295039706660864 39098420292708833998907438530560 -624793388220290818307370978256093184 1929717594646756113874307422093312 8332686442616097512223113536864256 -757507972509308236795097647790686208 5254316816142817262390376455471104 1119543524246538165405903168208896 -572635948076125186121633881865060352 3867042785864418057969258716987392 4502447537330080405649943299096576 -949456914449682451047187522888138752 8337921050096169111690575827959808 4102860979571024302746099347619840 -687992185557146903916668181144403968 1693670443140006331870878648762368 143283212467944515076779419893760 -169799001817535882715006027343855616 3406628992064556359636510805327872 2540087821099549134723407813804032 -5220382710414863748195607929421824 1184643312544095973543728220471296 5842459426254981753573324936445952 -171932758142242537004261106545328128 780912450975702728512582904184832 9272144680535430752523369255534592 -686632855566746221282377018399260672 7286076361423547876836368556490752 3511899553290820948556920664358912 -70936916635373132639978979994894336 2272259420999259768029363415547904 5958030317808049330077673812131840 -680962705151091310722291607126671360 3026043470847020312374424392171520 3076088044264487384841982805278720 -601804125257209749238215093677719552 9826855211463412123182195755974656 1685616445414952027245301678997504 -492606201021352524263866467212066816 6978454147893358323469650589908992 2542960016041227329056043276697600 -381033111148519793809949168471375872 611845831073249384326968937283584 3914139224739043804522742129098752 -250353920810861188143032220266790912 7216146516286417861829841834213376 4260896099869877797725083229224960 -729790881863036971445290909764157440 2781565704410284691834894213447680 5847468050881602166334771485999104 -295970868729823639289511461280284672 9494371839970410401999146390126592 8953146575863469483161708855820288 -823905990805340748071018832680976384 8646313185592654725448808603320320 9650716431386392418344394209361920 -590495402389732921397218549325365248 472758895072838486460505618644992 7110044383387773203866492921184256 -723699227736396469833128266856136704 2246103100543225805259110201950208 2882825865420516225332711260160000 -506569695836590453295576530548686848 6411014329166038247619903214321664 8636121017481361818732681928638464 -368829513689744236844064042112778240 1965377739128577009208881198399488 6902819092343564059486037315944448 -205025241791518285232477616386080768 7780463718999482520674783287312384 6014138305691460730492547107913728 -512709163402535360178025391829549056 1485130480500028403962298362757120 2206354110968468419222311823998976 -782776316648206149721007956208648192 2204732507970811396861690931838976 4578292637177293211940503102160896 -275208142113460059300602414442217472 7676599285401606360957443714842624 4620745517242156417630633663135744 -118538525999982187848172766664589312 4629147236111597059403856826335232 8296024309783250381614817262698496 -257431578093577317959876176045408256 363308192382408804505796395139072 3164215154224424263992773040930816 -367929240768389977184025596722675712 9028069828443888062752920419958784 2705762623894351157717153748090880 -126007783497536695944282608504930304 7615386562571195030949366528475136 5663869680431969662674595712335872 -861816964503909407802319383247716352 2641821148625931496000958282858496 7432823779971470669243240771747840 -821683130630733247350157449222946816 3792620300255068367193316536614912 4455973394905481736993002559111168 -465976196539721016568888741840551936 6892636278905951845474194700632064 8667719197400675283770278307430400 -812801079122078895927712847396601856 1334251830658719451571648993427456 8446626063279865246271347460407296 -2163549740568135658797126956089344 1049304161152871353856511321309184 4618677229105294326988420449042432 -31568338443685599544567883026661376 5030193404678668682941414527467520 4794845735678159695613048855199744 -346968285784343991142397323086135296 9702839499572582622067332200005632 3017710685571819331868310896640000 -749790899071873168985102392422825984 2055348502180549843300596412579840 287923465864839785716023084187648 -343888965303002974005439427053092864 4200711937359572411393297109483520 320156687874306768668679594835968 -122846445908750112529054323708002304 3100495313030634569605253995429888 5264726728459437940966781175726080 -416386056325660195592206381135953920 4459246100270188465356054487629824 2752509607028121348515187826622464 -671509302696572919301955674332725248 1345967919564627432806495798951936 3665464818019018830330700796788736 -778457328957547960995518259956547584 8262829414837683918280416288571392 5570202988812366307093166522630144 -638769507504004531544185935497265152 8087224072494154811555088758210560 2898648822574767581271242823434240 -859588548358296286783326412483854336 6914712451982676847723437621248000 1066323811051767536854410173874176 -448890943748896618539628432210264064 6610714930857292258873571824107520 6294157038850225250516281275187200 -645839216507888232426010078225629184 6687903609122257544745720634933248 6840427437460733014106686439292928 -361205963114788468914668205676429312 2335692446254968128642984150302720 6296417940676505969439693617496064 -530542838940083638998361555398033408 7740924938040150522095283239649280 8429846897993891357948685303414784 -153071795777781493347168642901475328 18709150296930258785648565551104 2636900874655747376898359624204288 -154882720847254834938219650451767296 4604615484442673451316150599155712 5048448573737581211552676438867968 -729865624676606645822037805525630976 3230397449587846185959064556535808 4427928133936140101652238380826624 -249525508126639151767493410237186048 4646316995279623800631490986901504 682125739760707387741299154092032 -932880693213106205661697066030596096 5310576552799067383237117334257664 3654346099202591240002886634045440 -450515880766167421307520489472655360 5227357594396712719164211344703488 7959266869406239894024721390370816 -25569480128969667865708509349806080 3443763023435626157785535137972224 7940361818860437248155388267724800 -98596897288659083397389296185901056 2379396573775693873236180285259776 9395649968324987620478807755980800 -433642725730742599806050494425595904 9129051033085339544179358046355456 2891687246852351717010192015032320 -576589043017420576625563490832089088 7066974034635887790094501076271104 9695413086574275887850098498994176 -522340603015092909419153721317654528 9326476034744503612253690514112512 9055869485342218269484857138610176 -789893899506624904081170088960458752 7658568060694936053296109465894912 9957334994090757050679809575747584 -85340942727545092856907479457464320 9566355644960173227802397356589056 1656981308504477292869327708487680 -857798041155188432454319539908247552 4264022156001155692718369036828672 197677316990602756937536900169728 -991477292457124295720708182376448000 1709166466991786439917439092260864 3626705903194661007521010757402624 -311564824632991545196727526502694912 8971294568302942818954197902295040 6001084629702741504400293720227840 -550370192770221116163306399916359680 8729479793707206393215643662942208 7867652607198165181295167558123520 -870803501921322694664349360387522560 6864626462542777413501239469015040 9157479099040890911520027324710912 -832953180206963040181873544643215360 521921672571054780073957411258368 4830872217007180205611689432842240 -281839967014906299536308944351789056 4231266014503820177269809242701824 735741893929132047027817032974336 -526749672027929841316042419610845184 4356717434671341783430303332696064 2765917018467256075961332295270400 -901656492592940069201890118528401408 7674334258870545261426621785571328 350060459802887508852924911452160 -648688828493306115121303956513357824 3061336908560057613409230413365248 5638057949564644587610545166745600 -351130312057852063204953858460614656 1993768736392302268046093643153408 615677424010142552753333912731648 -367189631671950686427608924863594496 4203538324454241874510104565383168 4709826218099051398790555178631168 -324017594441842329386199528241102848 2157016013854515893322293853552640 6127525016304131177384096586268672 -485822586985961378315099258144948224 4459477199529313474086436343906304 2326009294524303430805065274753024 -560367652573268207768661864227012608 6410958827403882301995789429243904 647152229343214261404432485842944 -717558040627836991289005810726731776 4219959294844176143213065456844800 3017215556880376244789806064730112 -600003149721380460757675200179339264 8543076940030373334788368049897472 5364284535974108962130873360056320 -16601405633366805738371192356601856 3938315972979622021635295001182208 5280064275412684870034362048970752 -139461650214041399694859190413557760 3478925899371224281472759360389120 9937292141924706781594730935353344 -215156613616090735965948290449539072 2769647433828675626595972873715712 8236395412095623211119091434651648 -388729183830465982152829094479265792 2391734791761208792920626374377472 1730203759553321138338853893963776 -785286816362794086607185963149950976 194694333441413411064046726152192 682243417759505900164679724957696 -25233414670609915815839351382736896 785414925105788476805881398296576 6830323070348237472118375119323136 -41185599821449092862940611260448768 1469090796864846823662860848070656 9670652160584208593794085530107904 -696702814931527820408451874464727040 3979620752752032260151948223709184 3348999234002752392017990461161472 -268611044734051673490139122417795072 6711537193429882451465755458273280 2232632046672098288842133471232 -450763967683151048879321009686052864 990013573076339425368607188582400 766809345546055512512879396913152 -83743273697410347284941226010214400 1824233091544744429263053555499008 7766698415120832954631066075791360 -771481691205172440997766491046674432 4061955103002249645699112418410496 9338698660934794172554650981498880 -845144472474498207550852863306498048 6108048017879839530693086052089856 4295797281226062695406208689373184 -637420519785202857273881865087877120 7160689972615321432636417621622784 3364594386167359805731105744617472 -661456279012291190685293872009969664 984197042868986134073234568511488 5408891868879324440785412832624640 -789752296993204619813497682796740608 4523727552660482001821384518402048 6474767924863496042977433428688896 -222640353140696937619865344373948416 6100091492097640146339290842923008 2563311187255145058265681962729472 -630865947000537853070200410621345792 8833903197760378889828233860087808 4591176682428693740312154783875072 -710065429942399862050411503989817344 7948694218796002109655554904293376 8696643296208838778003683092201472 -25475019974581765407044513233371136 9388048921902901677397907167248384 5914984655924617048694264053104640 -340774626842208768117900892094595072 3628559606309575786457992492220416 8735797322668690581864943775121408 -342303897425956254237854385236344832 8730019492947844626898908855926784 164110532853732987466923169021952 -421543139862288540472906456355569664 561580715031420338317833241886720 3364329480201575121821602831925248 -739686082288855410331311434064986112 4097148433067205909415189844852736 3906973543851158482009065026224128 -533995105023020345667641948722167808 6429084731739198043343344390635520 889025905824788552005015719378944 -484154890742138094331633652704739328 254106980579880713339617081819136 3219139388397238820736379039776768 -110179198921902851886213526292791296 7573295558459698120138859202215936 7878055921818583267511114060005376 -785690407386197916099432945224253440 6529421647075217341328787127664640 5391275650250330357064670497472512 -103315474568165427910221397200207872 7775490907452396883638809463357440 28423784642788339549845338456064 -660729547566058034955625075413352448 9765557214276830162921985088159744 5528975832638797478570090475552768 -435470072896717337263455543949787136 9184927662298856881386322212683776 7972806560353022252998123814125568 -849070505545582641364299060915208192 8515104858632303436388625981374464 4361017677975144709042495171854336 -478330463504191282000009730021392384 5388853981166580570108755127042048 72318269226525463410782729404416 -235857340278332974508802910751555584 4969516416045508411079884927926272 7432472849044912931744882509217792 -870843875595390780189474809742098432 5880200151709099789087985163567104 2433972821288529908525943463346176 -862786359392066701111537615750823936 3632397350242804835831112632631296 6101401346691843135804072523726848 -389830901848280533272659477512847360 8674550588976258273009681251172352 6939533616905767837779680626212864 -636824380115850182755128420180426752 5397815048121925004024667455881216 9067520447640080329240935831437312 -624438426311924760893141289764126720 8621825745062159515331344677732352 3539060393397122097616990372888576 -578070176134744845649610222388379648 9496019135351265791752483568091136 9140214555838228670658925035520000 -143355670108157158831425066132045824 5526316259391944339637174555115520 741226776634237151840926261313536 -940855343352901085170084024573493248 6665604171780417369669346384674816 7333919700923224784452066408923136 -286330121203036011411010750882250752 4887752483232671246723530830643200 9971737283468003035986218497081344 -101063982341659640628974253540114432 2728573787047918843194983116177408 263983192699829597950933532147712 -816969993851527393485098089353052160 1740849311853597900886934634364928 2956128024667575432167829413036032 -965845798284139927332281914113392640 9484767845332107170469630529503232 8364610894221216863701832222900224 -528816912465152896059718677016084480 2424624391756181885328071824769024 8606843132468000162224533405696000 -704691099827230881463582652429762560 9060353136561712107071813032345600 7382239597905499023766468482301952 -797482810735108248190613904661938176 1620446188425434299857660962406400 502503302807980798698617267290112 -620029916118275113091461695267667968 3360419935185813385679373502251008 8217097262392027696876970208919552 -436320380687959994723360177177755648 2645502524835293051796758160474112 4409169327365453517348620583567360 -398251575290645898416387315545931776 7242382423668414049747303401521152 8459472097289127675169241749782528 -693799190071186369943611858531385344 1711130183534318861547255495655424 5056195044460924707230443640979456 -365393720313836199019488264952217600 807999436080213400326535183859712 2455354172251598846467861282553856 -218385236923033317029823498793517056 3541308957894001109557037936672768 186352436037034983871466805657600 -91613875901589760911463700198588416 500788179097004742418912814039040 6215206747491933234957241292947456 -320132496928956948511918434665103360 7742013635939705119503405423788032 9832391976233577955458381449789440 -177940209275471880726452115536347136 27568637470901788805361452449792 7978997500289479068369801927720960 -549480006178727688992109070823456768 4500019198428456917022594369060864 3605698458401224532644054125510656 -46650703793674069911937918070423552 1358813523740288526404832446119936 9573979408818765764216194133393408 -648957423907292203073501572011917312 7257895802954110532903172772462592 4356258880425477277008340696694784 -225217649684833828631433484483690496 7884670206230215571075957075738624 9805189537472360139556779890573312 -511366278358828416417246810071891968 7001022886077969963909546090954752 2983106711022259730061953545011200 -110683920034258745286890129975148544 6536423059228376201958082847178752 1281879171835254221582746070810624 -839231269409103727145251427305127936 1104792000150062439435126150529024 6169720050217331430539507563233280 -686852062609857119983476462258749440 3074475178817814080562545612029952 1731042631980122236111623781613568 -923069522494511488519479260293890048 4647850471850868153686720174358528 9087637888546257690449144130306048 -466940942228438278878927902432296960 1996665449383802812649853662789632 9842112333346370866854249008988160 -103118795216917982426509844578041856 476378291491894222649454835531776 7722165957994218939133795789438976 -125836508734315168895891515614691328 4417756815026992011908414519115776 6781156567298723017940709274550272 -906468364698199912526590236745007104 2104549709993066423878430813585408 3822406758001605968384065999470592 -141328930160673758319553764493623296 6887522508608054174553576891744256 4878155863074664822473531653619712 -163476151668835490499557415146487808 8479385190485333340913322650763264 2630804566801554602318938335346688 -565292934653456951119870456345133056 5499510623816936014462978592079872 2689613381240443274671826812272640 -51432805203668652141546602493902848 5550750999631731532453979747254272 721398649232852620231112130560000 -410281134105670958019525514973151232 8031227184832016128116429827342336 8183741540276973080463952607969280 -947089820072135266808576045060456448 9256712401750543933256696265179136 9587587978104380033647243232804864 -49307449396171145734027184296689664 1270250431123451602105521074601984 7030164535697539578547255331782656 -692890387971752047328097531414446080 1320366219180869106462214110314496 7357450409843846866072189980901376 -669311617853520848507776111824863232 797084475478763109207786871848960 6162614803260593530647359229263872 -68810353938868126577648407200923648 5901534422346605592764954670268416 4882374101716489044382296437686272 -983422753295949874532255565082525696 6564426945616841432766492606201856 6316076210214120696681334313058304 -957322847829432749561184597802221568 4566680201890692336934387850412032 7837628157748801555906948602265600 -542983169376807984919015603224707072 7722096903127727006339430963216384 5511010953367517784567240672149504 -119850419194183047683077508199088128 7323415973145786432677166595440640 214882988987540987988607533842432 -649851563472949420071081911833853952 9568592803916526618512179981189120 4706423882745778696529259773558784 -764820698122573545112594565059051520 3314122609085530778151426380005376 9590986277740808552495873651638272 -695691538303368417760602812682600448 8203001380938521083672104649359360 7380149673020959978403060208631808 -586073473666739130901361102172454912 3136363191532259159552137692708864 4157527927855267090828564111556608 -704097527902027859274459429935775744 6868005828757800825867610517143552 5985946512104330046151116753731584 -196778553317432479601059653922848768 5801798849852480219138761286483968 4333598799771470175122998733832192 -67646280954275094970558254770290688 6367491528014043334386800232759296 5036214053865342073155086507311104 -842839107073969555154797737262710784 1094815941396999323692291246260224 5573080094400157826920540192899072 -787176359924205710695580081229660160 6273318378940755443426484130152448 989744382744379858744310025420800 -141083730265074771857212931292790784 4359998691902134054030302957797376 5897800554658510386955467857330176 -965152000441802347075856914880397312 443243965563577229438382399029248 9845590064903981181167927165976576 -389915189647377432609811631821553664 9362131426637404329611525982519296 5940563078608778174292823507992576 -414099741646208415186079476166426624 6801014418143541216077451360206848 431817712036412688420041478111232 -638047052609441227768292808794832896 9137448241910364262799977067053056 6725360507398838390594232624611328 -397214438305944353845736630325870592 9609334267507231442131330237726720 8882286288703690793483077523865600 -71034807755227274960642822851526656 7239849086391272851104591605923840 3430636826439891008901406837964800 -262960146085996296185248062101258240 8049749474885581752269248577667072 7337016326754367810817925826215936 -389191210271511189830428054949724160 9919038148803371192348881289478144 9802451631463620853898107156430848 -422001288779765424727967013556715520 3098864455108669821643422819155968 8361580208567155714415672579588096 -132867100793534024972442206379966464 6838520410827585501731257829031936 5586504706268425041029319152893952 -786606110361606364317525410802827264 551056647716135179463128285970432 3837091121489455355773110980706304 -58667225472343549134913767148093440 7367153282541448519910884322050048 8012275987197739382248771585835008 -352642178467613564913542819301294080 6177928504542123411337131201658880 1856635434627229758172007868923904 -745051046224699588128123278248116224 9167224777011102476575860410286080 603815775716873746440722080333824 -237254042365520137000194016985219072 1574593195745187973307017296084992 5233838532425720122638025252405248 -275593620782763120240087482480197632 9773513058523686091874946789670912 3900913349928825494854929056006144 -20876821631359811120164503283564544 5641710537171860848122791985152000 8815090464362612661667989588803584 -401005506432630434322311787128553472 8008540744073317267642458832896000 252263778844323668740174218526720 -377545248337017376768299969508540416 9208198887168306752900781400129536 2374012389661879888698957994393600 -162089938149230931738582243791077376 9699401050287449555919999172870144 6674683667339163459921301532049408 -34444553931050214995387670134259712 5233910021894489874877488067248128 6429920633875920718905577849225216 -175002417702155378308520132999118848 8515198440705855872961633216102400 9510300813224574997839779851141120 -969540028213844988824157575079526400 9616530339560043678252659965427712 1514467298079344374457858583953408 -758463933527820452694600603693744128 2077810912651484444617615186329600 5389525551604142098600892802531328 -256244546343996382032484553688350720 2984683005075767747981440129695744 5718446925750524286822617834323968 -933915468105387764567850704324001792 3454742799031360156429345567539200 2977832835083562676015323796209664 -199406836624079569403048233738960896 6948316122178888204437833960652800 5879569203643610743086907199062016 -531262031100548734448466221542146048 630240399209961522464960093880320 4882882103425134729439980640272384 -835492733691483006189529245369237504 1752846193078329330378234463780864 5461217109583975845622650595442688 -346491605859676057731384584632795136 9087648933322442097237244394864640 4740408251805946529447365037785088 -118661687526976384399685660132245504 3554012031436189467642844088893440 3693294278191478297318594929754112 -140047813969418616277035435532746752 8278511408584511906097653260222464 1300076413686970850401937908563968 -890743638356625478162136832642383872 9382133496769986028831091414007808 4561621334702718494220868655251456 -236093361546027880609778756342513664 3776061702168747754096311949852672 155298339473909962221208387715072 -784746292565206884116703527303118848 7119056089005542227266497018855424 963889244899797010791316687159296 -434331268169128813990060807992377344 8346648374378133467840274996658176 7705304691349305521379719782596608 -134144745229081621312672276246691840 8782402382978461190378741898936320 105238704033876868930359208706048 -966023465104804129036898609099964416 5974488461295795449775696677699584 5775450293337637100947380547616768 -982886440419723449004880048825565184 8973993537385496813822205793140736 9021162425145467373856588776341504 -167216561360400869977270322120884224 6173437403668250092245348606017536 7766621384069399955765082414120960 -873288318400631067219058646681911296 4157132325025937435074789659115520 9110096267956959154359772372795392 -65778182716578648055086786306637824 9209201487985418916791329803468800 2439529799823664682062910540742656 -745460026528004420697047324717744128 4154708471593439576722281114632192 9930631340503019857160375667523584 -956867539928020220390356125319430144 5042118371257643241434106023641088 2603933991907599453754030798405632 -334369305052873976165433371111981056 3248984074203298198110139624456192 5526634900239098811539349099773952 -941947849157525265158976428935479296 4520233968482359640163780948656128 6057624753419505760463950647918592 -89149596899363318574298191741583360 4510991759205289619300589309526016 1122831142733854929789845793406976 -697855348110605015645077277650190336 4249936852705289257398668296716288 443434351858491555375228838215680 -907120212249958852484998779816116224 2999481842885070115460396408111104 825461663279798782421633727463424 -978027463520469363051368089812729856 3325637956164709912035253131673600 184734395876867497008752278634496 -524396766010399179427932822480879616 4300892452687406988547404419039232 6540880668061766651157734651592704 -517899580020773558761434415085125632 989559080570824073132853560344576 8570203733937923559911397972246528 -371928939195038811345528603099004928 5468785015572681979746067215810560 9014387764920826980476115855867904 -810106307223087647370796042861674496 8488653059861289690061986141831168 6613102751792827566349585425104896 -576843336895497385343350083472588800 2601324074935502437204560546103296 5603556787437653125718384666738688 -933624922223970162421330423628955648 1837470669695400365794728725184512 5608382506103857376958609358848000 -516961587355190114051463138875801600 1952113163831851651442106576142336 2500178457315982851732543157305344 -206333917791745512225351177043181568 4636682353118039624695643725889536 2276374480349346605836702740119552 -802458463408333531643622970626146304 7195243644691509672366093335789568 9734808532488340231127415759306752 -416219136629647633326777969061920768 5829342318417334536626531765059584 2695147161906675720616160736051200 -612167204377445600543220080423469056 6123489692779965305729337635373056 6003965781768816859852423068385280 -873402353900124306805892620985827328 7998719195571198656637313052835840 6524485492856818740629412318806016 -406618351793988130154028563097976832 7444249468578928584868492574982144 2523065386595469823055447017390080 -358797582001460686086080074277191680 2152128857346621347852107487641600 5202561552280503361850043545944064 -44959044482641346852918239002886144 8092637123436611501049646472495104 6024651771878012665890848089571328 -953448216804069511811608031967313920 4838632157951748350475889339793408 3235676572361709792907842644082688 -597471254218536888233522466589245440 1062836545240402924972762067894272 7718656881959929203338945302102016 -457568974907050079049631601648467968 3791623916451138046119196223340544 419927698869773477645439129878528 -180234300327572345087252531028951040 5542466335533564831081537088782336 8255741716708783756723174319849472 -704579158363321794291118610430558208 5734610590333207828223324340617216 3810288239839514718949910788440064 -991405007437014277621404588360859648 9086304447691106130623328518406144 946214010665752039557620576550912 -899889947847169817513945728066519040 1453694389467315536997339010957312 4750869056090933110470701018513408 -998115476600858414862888907296473088 8164094485938373887910937939148800 2628234894570926648238355377029120 -672940771106163576107983673644548096 2717013494841346942991035229274112 3642923493000226729299037021798400 -98082513874871378338423431227244544 1702293849735281463695411473547264 9772924897260343829267179290755072 -378843902113012780173112287367790592 7563339957464321437224839352942592 7051826981435953287003240876998656 -195385695938659029249896280968134656 794912099232378936957624641388544 3965636588642498220850158906638336 -360873861975558761280061981593698304 643027790744154852747976510537728 5937123032865689501953821786505216 -662087470695996205102893273209372672 6470437847605444093334575726460928 2580370127135544270884672746029056 -401885281287140415332760401628626944 1450259130045676353711485661216768 9441690819053321120649953717256192 -457934159011102862203669901033340928 1213082348101747199949742758952960 8993542611721142341130098694946816 -768423309523827107802086753800552448 5033648666000888281213357420183552 9652024726307583848142389605564416 -789563897618058661087266313894625280 950904422674621275776391204306944 3891992466354718089848267068145664 -160790438016900181414499560577826816 8671893654487046563032936814215168 9150969393932614058422327920558080 -713675625559674270185593695625019392 5589199136230649459360605719756800 7075190544976318880650970299105280 -30010698649796606142440259526328320 4239390170755284559244266932535296 4756581644036307461023895841144832 -479457257477706303264554458160300032 5800990465287567148932006970130432 6048760148391646210157451696668672 -862598754077788805726474026247782400 5409617826657684982826186162831360 2676377820224104108511227065401344 -91548717339108735712962335628853248 9467069694162805492356436480491520 8734925529225936585594583681859584 -363737431684518802183955751876165632 2299037687902416364162323801178112 3533834538886084626218700775620608 -85046753489172353440985372694675456 5909516141609147652962038589685760 2809198734749894790167234418311168 -287893817361763406564667967443828736 583194074071397901632745905324032 1670676481484420080508143392522240 -597592169589011920865623408195403776 8027911910634378595919070903664640 4901056268680201878654546786385920 -985628343172521396780896269159628800 9329649559593387137285435439448064 2235843975978666710707811165143040 -441649642389495914367245753599918080 6409312629578121062277170335842304 889264267449195673534424649039872 -640298063922426573850540535892148224 4083635957235707221853633433829376 4047437013017804357261493773795328 -836579127770858001997399656929165312 8172869748764888794568168136769536 6730590064490081265215873270939648 -463206892998904893898530142524801024 9464386049565999308639484422127616 5938833411696771666114692998234112 -623249120950425423319776573184278528 2991493997201483908346201839239168 1861345065647762064629140220280832 -91566360894787126270075593295921152 7803978753431455228913777043832832 970460131491409694974734761984000 -828332237175181960454637539892920320 5320204337853679335874226800295936 4508478015518005651847086191149056 -988885431840257388929285682861441024 8073875888368473685894113861304320 2201524964550880246836885412904960 -257033138958258230964798206609719296 1838617738449604856572784752459776 3957293447835483223333030061932544 -262862775594835975769656622988656640 6305387014496907774437419409997824 6745887355940422361906237675667456 -42248168079443966534257987825958912 8180161070022664351947864263360512 4101957880040735853763269870223360 -381204582353056902936763050800185344 214319422552306833848916284276736 2886910376996695950527921414733824 -824818601572830967990870232564498432 9351170312842654358707585907949568 1622262950225601253950871893442560 -124557341197468490738690271790235648 5926691037101525445472895104974848 6057103393604647238396561833590784 -854547348219710330344200654490173440 650287629386735214502544723148800 38634487177988332418845294723072 -646476767738816984015411230636244992 3389783581092565977679942584893440 1484939625982370440088170738483200 -145243975345410547615960709545852928 69019928338225140591020740706304 1782215937778424787964568065277952 -188221007066501639968920249720373248 8861424902200475086631361732149248 4876507233699035022381140034977792 -524600459573773507248227011813965824 3552323410625034800348166185025536 9527528599349175505878952439709696 -301197235099408569390370069990604800 8770721718760042030331343193243648 965943998402789556736432883630080 -141331673951018136893277759363612672 4986267191882820305026100129431552 6062936706617186011162882259025920 -584335834100105198456432890885439488 7920386085861457936890508647333888 817807158253376473133417660153856 -83537628719619748972571030569615360 4562589533213350430429615507898368 4407016291402985263324827538685952 -454931176670022624303021733433049088 7905919847261955917984267233132544 6575973675561838039371166993350656 -125012592663402515259995730164580352 6290529214889749754087013221400576 6324137927765762901270979797843968 -569593728409532202333879182882242560 3697093048413580891679929334235136 9044606455197678263043635745390592 -973847698920634577114716392340324352 4360711844128349467323212438175744 4704963928039683590572636788228096 -774396890836320069479976297448865792 4247513573349734376506915773480960 4370826723381641819400401017896960 -671953310944293670065214333443375104 341789773986045642792135722795008 2782114776795071357732290172026880 -468953919673950987669781149458104320 6496214927516959538451388139831296 8650155015841523221885901508444160 -192618224506478629274929748517060608 3324758952559668259478737369694208 2878945951807838520110885621465088 -432336388667806917397514927256633344 5992820234624954665632233106178048 7558084184511726716793511143800832 -213701812108802289565740623636463616 4674825008925481201634918658998272 8525766575166853451428021598683136 -514791021892895263710808763621441536 3987583544697994649538451340263424 4264735853228397547784155839856640 -159708626736524240766948265038970880 39380081435973912506326897917952 9506092216294906416130190957608960 -563937912040005287131699760838213632 175720713118126045011924425375744 2473944513261107190738336616546304 -295333826172750406444254350284947456 500516267124294210294476779290624 7354576306830454166243505573199872 -362936244351992060116529176740102144 904341071530582403377486687633408 358271058639074255450933850800128 -655189809350949540842292591007367168 7225427000873006370880968745549824 286497198197352429194334229757952 -765873975651839063950995467997806592 9298144923358484022355904866287616 2417944245393965402587687550976000 -327376830690917982322813647456305152 1576447110724489549136433961238528 52883511155139678602808677892096 -359281872217544993056777271450271744 1034081763951594271686492078211072 4054945347794979033659088497016832 -629464067415066278083068748212731904 2073006078524156108361052362637312 9030127920710329341454810265681920 -290587596608435491474956679567638528 6412393875668107950221758625218560 5910384550190282310367363362455552 -763267662292935902384704437409021952 9502834026503524606936170717249536 7569777331907090148229293543522304 -648468304915433800339462878104911872 4753533638285060169948657870700544 7620181435663580163943864893177856 -843154895297256128147742297839108096 7746690315264168510683129093029888 5677114729759879485218884388126720 -632826775114913341755482464678051840 6842188421221710744905615507718144 7428330546951842005885479496450048 -37621813382765066797215965184524288 9872171152817899798513263564554240 4423215701444159866871650977841152 -717447479644058624395873100039716864 4935768839779497986516884456996864 2181179691027355067998529338212352 -664919503231364706141853767329382400 4713731848670220070125870073774080 7493146769086830439350682983071744 -923625943154699075103935551670059008 8131830881921220270557170774310912 3315574260574868591215033643433984 -549625204053906918745387985375592448 2875127413072420747388949532508160 1570460566044385533892470981525504 -25826645078257839257463746532999168 7490397264143638116398248685993984 1734647832148641264712776220147712 -925563135293927481507534073371820032 4420716327482659983564417542389760 5193700459491339128225256731312128 -997720968969514853234483570302517248 7213257891594872501317437956816896 8530463362246099119133100974538752 -211274107917291133977903583585107968 7640200393007331645974102511976448 7926613145834601704741407557681152 -121392439842333586656533712505667584 4301850136004829973292187031437312 8471353784267920582704855345266688 -962236307477100540393410112616660992 4641753298224647272836505033244672 8535562288490640389706757640814592 -247725353497205097335889925616173056 2373743692127954757292864038764544 362619644141539220842916788305920 -481896348423406908751733766947340288 655396765315550964101147416068096 5027205797521838292937098573905920 -939277312072978267586395383768547328 7600746261572445215725879570726912 2596828281384729466334033999822848 -561702561272871491636043272528330752 7425911392301066929140384256753664 9718780041081083950191532595740672 -116715864073805351566069670692782080 1743914504220127614419886334279680 3869691010430349637039174799327232 -122777661014554950716672789908029440 7380813184390469679300513015791616 1420160761181877067336108812009472 -454180194154235933314245989121392640 4722943097206047595652272615325696 7795784624338475774900536967430144 -208949241707444445765730059505631232 1986178699409672516045695780651008 3068593646327079857151499321737216 -501826497599767998170808189968187392 3325167342470677033852785876008960 2834525388552854795010400514473984 -507480987469571062996397183100518400 5388821833882307151081751040753664 8703424873452471632650512013197312 -714867051946961268911675090548031488 8027292329720277696369334876635136 8612420261803671497679576680628224 -751210053705264139661876191215747072 5373872581294939320588477013164032 5575462006883859778891675884060672 -812701708146238796844589091739664384 2149621333724932517511624046673920 1313323062525250438125615321186304 -910503571212653057659283477062746112 1338954575340377331154876882747392 7776729068422468817196064048152576 -979965184728673424610420795239301120 5199174592167758249356895113445376 6914860562587957798631191909236736 -929130791441352693566056967413170176 7330853725667776573249882282786816 959110307311031516129672099266560 -280185669370502105187882865747034112 4224258911868042211312382173511680 7453367264022481726803889841242112 -319843128491271739428568598239510528 5346159409871098654833643307925504 897780626406307215563989278785536 -681009856560278330670237258419798016 7097349622219583174484981859745792 1676803011684906104273998259945472 -866746759757452953134430850136408064 3526578596217633480871278339424256 7711084148208219928783104203816960 -497241624700181643276575218639831040 8578242572943451864662427327004672 6064920670657217261590642413273088 -653518342469304504424061984017743872 566949895430488176201916229877760 2999933578413105061509314981658624 -432404311110817023590836568124817408 1686532307451631319583274515300352 3442702974395500879849130272227328 -6786326100729226898722217806266368 1470630102057227353226869651537920 4929271855736056884243171547021312 -460498267052497704729984853501542400 2034722477779756596967320330436608 8923020658747747745185172056702976 -156484171715501507757669743977299968 5053536188086147274631224890490880 2607955527491953458942536709046272 -735488409446386237319482650738556928 8345298732503768644223528222064640 6472417829735824809724105925328896 -731211180354874228883102898860326912 614300226174828919619928083922944 9341750584183048399194147277242368 -186002152931656670778877899503042560 726669023694293289232180055113728 4044624129876888566177152934871040 -857177171957833600691682579526451200 7012970319839920791225876657209344 7490472878317189402166625694646272 -84984583313807111593639992010735616 4863307969247040525193470021730304 9013392285278068581519987734216704 -924717911305388450978977969160060928 5409629747967337148097170971295744 43754284147555034936477722083328 -235742103875042894939359292862496768 4822239690573700836839626851221504 7671677359718064073000484100636672 -177737226507543086200717237676933120 9358162629732902157570877144694784 8579864040855002516065606174769152 -117509196518144296849635724383748096 2983083141627575671123936569982976 3970479212990337112107140975165440 -425899316543260119365914271969968128 9757459109568710205146110856527872 1047382688015657602017563231911936 -630103110922015295285233677718519808 8507129692571997599336884890238976 7170872219685014144799241802874880 -495274279397632106295580804935319552 2125838487449741742778443337039872 6344284336854157145013793983561728 -708379703085218273470903575633723392 9696639714626740457752888294244352 6798639858617255614040146362499072 -716082552122279446816364058820739072 2586127486733065524408990595809280 6179421682564706781931294974541824 -829904221445357130945478417016946688 5787981513404617179911802694139904 9314920705387037764675095328980992 -463300376146210720839336205727301632 9911171270731452797580818033672192 1724938857605285468604358834782208 -347854166378892349087713829700239360 8794629560654721325211582614994944 4623453994554962909827205150277632 -888401272592272322969103990400221184 1842968104646707845240981553152000 4696974877342604484865903558656000 -809662800284007843152728416814366720 7470187387869584207328783357706240 1744874922992152565618451073204224 -924311605166783577783665012923957248 2529586400547312048116176869392384 8513023006629669741589337158451200 -311694444617869263116117461990113280 9287287275893942636053392110125056 5796169532942813539666435256614912 -243559837832876338109754666588831744 3433325833039291157836836129210368 9418257331822022770101226332749824 -452053825139039053211716685276381184 6864794654879333940778548531822592 9291178530634504093413767968194560 -817084008185768522025454420923252736 6390431518348581266834784411189248 3977957885684312029034889682616320 -454375745597210628726827425843904512 2230693236738321374763957180432384 7836343309345841567736646789496832 -767791461795215146373419412018429952 4864595040387891247686058741071872 5513686351607177077826717447356416 -445710643469922274155929100638748672 2031864999514352772327070008082432 1755236812432900136572239984197632 -547789101358066014268878411098226688 6092144354721651630457318212108288 3948011942472083584255563317379072 -721530148259975404061196748903677952 6913904652256146407189530017792000 8519098218080596633758523979726848 -34970122137696755734193494298722304 1541416001579827248384220170551296 9303864061453678995914841716162560 -665082410597467813110564457340207104 9524786166429752903340897089880064 3563132132500743528962841991184384 -679249170967899145381161055671025664 8061126388408366096995103683903488 3061727364303595412746187212587008 -8334257892802041987500278099738624 1640425737567844351496895382683648 9271504841362393101345855696273408 -868209074025501882978255108491444224 3658808262574363981570257971052544 4831517303015385562612855937695744 -343107898784343695077213709375897600 6845520888139457864614623638978560 7086154062693231518911318340927488 -335034064610257021407425101578633216 3772393225156078858479771129479168 5460306477516197730072680686682112 -211390928302306229838726774376103936 6649163392883825490357774146600960 4724400626467101882749810856951808 -370972506457837277990494178115584000 6167497027599497463811259066482688 8618569352831681898161218128969728 -321647613652782773971105687088922624 2471430962967746604123063997956096 6958067482922691363984794684751872 -423768663466502218825661141384953856 7269022679139751122336726831333376 865626443269363550351403648024576 -624745901583695604931081114732199936 9470958936425664107655772887842816 2864520304900294984528518503727104 -622861568335722783259809338303184896 6939984804380363624219882593189888 5958296084889249633099815363543040 -69295467195899911386427845196644352 3002337462229338579208244540997632 1842092934051362020942589850550272 -127129816475722196216448040078147584 6450284478608292517814862990016512 3385810510583326413408769050411008 -661073809430160608749877287331037184 8066798260337115821939825160749056 6205758168869947064296851132907520 -334943380918642379755859652573659136 9269698462721742310286134700146688 1239140181942942709821374084415488 -183472821947759436350310955547099136 4924688967297120296923426910633984 1780769416508612302282128437018624 -421016973426217405335702945073725440 2678119213447636749496034437103616 2249689514586095816757297843011584 -667673984752254157937027425150959616 2887301778342959323362146511749120 9703500427439859221278828819120128 -854800937287551970291724267315789824 3387147299359164715383688087470080 7397279554316687189579411834798080 -335316966310035953385407786615046144 1100317666819307986216145347674112 7440079146958777338425334346809344 -955423784427497786182510147260121088 595090539086696996247599480569856 9367130380319969204441639188168704 -646124624606195042590535748151148544 1271853203501491652880992944783360 889308139596784582697591456661504 -857582658730306672599560063866109952 3512564467724362298347059362660352 2192380982477879480279600312877056 -421492246490422973833645308254355456 5590596331309931596782698181427200 947002583671594781319924262371328 -167356319040215578028568493986676736 2519600155081067426862041055363072 1184956361209792943974390670819328 -344248063596942322603283717887623168 3848725480562204674230799302656000 8283513375602911794374032599547904 -287383986531567952140374113398030336 3509416923745362154412684391481344 136362758020463454154867387400192 -496396382001461915087394698887692288 6952040734942676261106862792900608 7454921727934389985624703169986560 -132930391672217112500666723928637440 6630044951568128779163657513730048 8263989196947697225506207402295296 -621989201346102934058420882072666112 9575650334954539552310194453086208 2215876538487418910881200465772544 -694283562172689109966725289194029056 3414968104863751802274216857829376 5719312339466289364448513965948928 -705918947364034851799658075187576832 6378917255010643336476993465090048 9867256139496732296517734006521856 -491285775279192059889327736868569088 6307706310148927757364708815929344 430402613469774944222329444499456 -619626664462291103927348975187787776 7251546071452944597956653278560256 1654028072974011690227747132538880 -198604134165340458523372300718309376 1367859680815117498551037153247232 4469208982101312118275186599395328 -951485286069150943114489126973341696 1322322860647217072229179220557824 9412559775219099306297030764134400 -575088190104206407879329399793778688 4454157162688289949993551500673024 3873187945581571458681721078153216 -3356769741061464855442670714093568 5584508156249663257813509942018048 1704993914924717813006118701498368 -60083551509704547364735640355733504 3188158253436172817074269477404672 7371793574709430699139865423904768 -549873899630473368563253641375383552 9152052304652589301235084263686144 3521728606702725062494099228065792 -482217540191828103145231823105163264 5421363972143664690201334481158144 7344063339546760228237641380790272 -995665978972993896952126929054466048 8306480556477442528895346730336256 3615277970326433629610042967719936 -479381051833391506760172643050061824 8488721618877332884535239642185728 2921651068976645691860156309045248 -283029753289925856947744192979795968 9962327162788019658600655720808448 4855821312659098184278603374526464 -417648351517504351100256197355241472 5509930237757733147666929711841280 5660215465686682643881990178209792 -293132114429619366870664930907914240 5356069034200834671492873014214656 3682808315762879562002576990797824 -560623357756754682097195701009121280 2801801127219997862656570732576768 2000298492551741851267667014451200 -451691507356314067940272983754407936 3486463721152155102281519123660800 8152191426279286143750564074225664 -236434419101386748720053605743198208 1754455446536932621490628834885632 9010993794144542451745968518856704 -493535048644318105595069452035031040 7002128999323459733242714649526272 2583550461545019779242696185479168 -28502751628912525091999005087367168 3429259352327544386328209083334656 9375739504729185230183380486717440 -51749739435536698081173550175092736 1978347339669792779739485045784576 7378182557802956424321030812598272 -552110999690432848151504580738285568 9038073693411428294909038434451456 6108354723603491773119355026407424 -166829781641314034638040634228736000 6279967153198591223354349942996992 4628764971469801858479426138800128 -761274934482421055148053560786157568 2087085387432667726429602938093568 4577659604512431367488914952552448 -633316129348452818883385013540225024 4927758592929780607757595288010752 4934075521634832333206811995799552 -212239501675828722528009237234188288 5065618398922454202880359676248064 8097343972904374837824436922482688 -420846564949256278265720543358484480 29482573414013242803825821089792 8018934136047935966443539215155200 -633368550266564970951479015273136128 9599705602866739013175496943861760 9421734782445987607816957350379520 -846475198318012203667921744357752832 560468627317252980992370758647808 6134063853912631758166753678458880 -374196111752645011815879784483782656 7957951553060070548699141004853248 5978795798146249129608705757675520 -111702128058735268369685318299811840 1443475762950167394338519063199744 6120385328651772692727462182780928 -14153252605534808045362702316470272 5522779381799791415739076929650688 1255919935119710792731217631379456 -737158371327041043923502870942449664 8440951521913357787360259871866880 1840712405161624715931216794091520 -513305814345491415537818664163082240 163674983082847427799363186851840 1654879205951930033823622788808704 -675044025240102703461187360686866432 2078989364271507849268399607644160 8069979463571032154404481736376320 -844541528079823237444885060098457600 2997523505211393288168312676548608 8657425584594113635099777009975296 -665360037268306184222321687090167808 467535169655144073837919644680192 4617944684392170844799279592112128 -427106238775170381490813793474707456 8748160672774314414450784711213056 3530057425330338521680426884399104 -102008784642708299931586710984458240 6267448103090592135465596883042304 3540319425092216423188472243683328 -108009915334015293956232737900724224 4790207158187969793963390805213184 40249125610273702879364082827264 -191131118449997934993735036627320832 1443716269085968416977184838647808 2757205511469072092683447180460032 -375804821269530654428779874900508672 3563334114677695796457007457763328 1304888088055005457382340812603392 -755829233323662697725077199316320256 6608797174114137144997033214476288 7644357629745892056393765680578560 -468935603513320101733131585050378240 6122889317063674529909281052950528 4333712796712939274097883894251520 -112654972029260785844292069594497024 3919786388276461669115452440182784 6245027171606524292858556096446464 -451499774241421735182085415703150592 3915742253475438894903209305833472 8700962331743116732851270600097792 -113116806169001724748609037327663104 6880646825812721169524292493246464 5505728872513226914981659442937856 -438760210334118065589655602718572544 6319984542507364329237030484574208 6751709926633300355985081752354816 -182410834284076098626449133233242112 9805214726296089751781161083863040 1303110098863016660699066771963904 -997318678530699198280975327726403584 8675087064620874753906937461473280 7679119714324816745913378601435136 -342867136306567964565674702770536448 1707608047193730600219306767679488 8741882935749603970650852602937344 -788736618522384213083219721994633216 2641594071269800606478320650944512 3030435765783266318468003848519680 -748073566795459478527067559479476224 8345407411936614758881069967081472 6076792559314874041692227421339648 -167204712547548420398500790533095424 3498797337052906336704281792479232 9578020481133372362765891316744192 -982703017961534841370128986572587008 7313745969261146391357328724066304 2829500133073417477315455946326016 -530316608794950813843467968060588032 3692650137786000243196953632964608 7800287333304040284793598977769472 -672730031750834628188694757427380224 9436812493740959265844227016228864 8920793119980672419632640849608704 -739564342802365232981329858397208576 6282467174962907268598639884238848 9444236479846012809149604922654720 -10253241527277498181914200515805184 1408276185191913271026195070189568 6314993561957327802642696830451712 -816334056047598727885229072752574464 6769462141163995809279096943280128 4298190936887559326832304322510848 -532915513679091905709114843463680000 4779821358662860423236316756443136 8028444121831497567475577179340800 -207781097357715379977946537232695296 264917518486956257398856592916480 2162887657431978599243003329511424 -30774906623491353214268989864148992 3615536022237659384517399672782848 7769276537863972561601702418972672 -405178249005511126705664397747945472 1344346641994584850332322801647616 2494620401144431733880466538758144 -937816418930624952044636457681289216 4632566490960357348190591886819328 2651424070284429717452015209021440 -417489978024812852445825323845550080 1687086235227123848396321840955392 4218588677838800591017100890341376 -732502837409179350467860117202141184 4370726684802816291253046963339264 8453222567080593767737359878586368 -853541471606546302810556804471193600 3780115911567937339339366383747072 4177098595892833269852298520035328 -642495857801360438711625844340555776 2430943655314137886658560442499072 4791595733936107766995715442606080 -783439253452044005565360564676329472 9077602212483494384369670643777536 4599795456259088881864809560145920 -661441280641233437238597611700617216 1885921803885632666876995992289280 2019858430479299275868786816712704 -327089019244754317685984785313300480 1750362033091762333063883180212224 2138187644357240360633228133924864 -718891762528617238114999387635580928 9705936334215700015720163415425024 1923977998793873842795427062087680 -433841535157932012540022639864840192 8228104834889012396465872563077120 2200984537676728095759713116880896 -507241936559323283375530323818315776 841512661863371890931720637120512 8684008522271927442217364684275712 -938605487243328040630081452710559744 9118073926927362703041161425059840 2881120170109093253600056933613568 -740689652474946314256207077613502464 9323784011756854579114651198423040 9894968673879195876086849594195968 -937929846075471485905149884333293568 9275262330648165093223973978636288 5508589060209731194066661690834944 -578853272583359268091425998870937600 7160284752649128158943487945867264 7865974320395946955969580530401280 -468519298305611698455963849778528256 510662475436211898927552760119296 543625887387220318497266693308416 -879165127916584022644596797803069440 3202590293884555911966773622079488 1478465822941566001062569419210752 -182156658492035463860088495845408768 7061468689516482900603293124263936 5779800160631880651071259800502272 -982311826739760684172366193432199168 3691826095598699428728324940103680 5899633425437543130960906824974336 -28729239256046363976043128311250944 4881502578445942601880049702404096 6340528603687733387937284072931328 -615437113650037063816321473848541184 6682128280020537388707089691443200 9946004872406847367749735293124608 -204445877241448193745855656654536704 8543993218086801304147592401125376 954635963218838131274540984041472 -144282042302550237571799464003239936 7739661895203501153067395532718080 594798895385612161753306502266880 -725316590037413409164125824908001280 3880080294566450737273605640421376 7133455922257632241625131175116800 -791921637931378699910841922928771072 413673242597075186212483715039232 3038738304136883756909920008536064 -967987807755004301236348755151683584 2978045782206001883071115081809920 4216572288633262586339476490944512 -765599107036578191674748674146041856 5915477041452430946712359199047680 142952116071549737262945224622080 -569586258894084401222916083468468224 3989828781192862995666747112030208 8179424825781747031449707034443776 -365760710451129213648412322794831872 5841771470561521157498791146815488 413591667768698178096584491794432 -25876237095403671774560313176752128 3349447283816845293345070334869504 5707784828532954098699944392130560 -70477582299077234550746530998910976 8152133801528613007367989461254144 4555418175656698949096489334341632 -380682928785404379473741531316224000 2811685690103083703672609882243072 5421568312144611757132219685011456 -875750006503579785081316353477967872 4807507053956449170240213549580288 1976625050290496949598215110393856 -303730378891372922194694514866651136 6725195871794943549213751088513024 8781112478081845888769435266711552 -386133753462040058128788662045900800 5861959991021544164905760858308608 8080400334728313760410081404387328 -656992271947720151644145219079766016 3772292202585386246830959651454976 9652546700192727779918544103276544 -255384942913881229373307739384578048 5643281377182427715175474362580992 1812723213926557432694772309426176 -143515650737702022623674197434433536 3979740605942341987501096799567872 8544911525487199509294634676256768 -5969394796668621097243445955657728 2426914317020086372904424590802944 6203060206750349523564243886014464 -576393936912803849182679658582245376 8375856424688497411720665551077376 8936616904517811524759281746313216 -506895758246094587045294373066506240 3183400117503171611182092269912064 1621790936519951462324191092539392 -927396355108394965946004388790140928 9806968152944286370213681357127680 267473783460792229866088184152064 -411829868543570684495354455425810432 8543246171614205272837349831606272 8827251528386547073684765484777472 -279432673484805745267009133949747200 8085811328699098932785475064168448 8295468564528179602053157674287104 -748076707768705854797527369568485376 9776862839433793341240602376798208 4133700033650896135454092297240576 -579218374031861532877416122084753408 444480287531190454901338730921984 42354399555850978372381512302592 -82947875892630547564175113303621632 1622648779309085075148381515415552 8186554125617977154145072441196544 -508491752968803422833784534016720896 6880527396351187341803022991753216 8693825913784947868900333409271808 -979635221640472600144981790851858432 7667875112593993801204282794442752 1529127534961830372180019069845504 -179019138749542271129947356260204544 9894106741722010963053975577821184 4248202014132203482229717893906432 -247510576971898556034621475194404864 4244287624487174670692799433670656 3982040952754906453958137839878144 -995687041379040445721145199558656000 3355440255770318755436332708790272 2049007629502619897962515776143360 -75905122338406942926531302826967040 1277930915571545929244652576178176 4477217237996203077093856183844864 -378595840501292890547579459651764224 2831089571920536569226055796129792 1915355737300073677438823906148352 -960184168766542490010878938584186880 9001389140941987441292571584757760 8873463805808899659052824790040576 -735424676454548237801187929562808320 7629408949787254831308476623355904 2032178743529246000552060169224192 -665872077604790920711344319602098176 5586249124296208780039171795320832 2033524770363128093165924837752832 -584380949594126193857658087846969344 5898083089282830276426351580807168 8888749162135736220424274410733568 -183246291075312762947974732091228160 1142302762289290549797559428186112 8271357629087601519596104725823488 -493488475069435405283630792728117248 6630151587843156899671469786660864 417473979198712322369605112692736 -709922227497081246162380335035187200 1229319465480324191047304775467008 2236039380378094191561126956761088 -162133289780256821798241223441383424 9764171670334993213463516380397568 2732623127242551636626336965984256 -840211895400376415476606435973922816 9263559610609906142446408655962112 6739647889568619648518342536331264 -586303717361525508497069289920004096 6264998979399469157722173680386048 7120469850524994212383602048499712 -364119071470359401101129600263520256 9897673884550223159570553938903040 5005116043713073716343249267851264 -136030675183749386583282087849099264 7005643468040455127580218570571776 2470491853911585263128058949271552 -207789342833722373980572555163992064 5337865897711137345447109393907712 7898771091974384194128460656934912 -82300994522734817244019650883223552 2386600930574795950971055180349440 2085082044719579624232036776017920 -60717958237247547270120182892199936 9250937637568526295328294277480448 1853889056583100379890228821753856 -388716660727721413976396792286150656 2419166655097101195760544096714752 3114689968137452421475812136452096 -404372159901686383430857535287984128 9812913384403745726254550718873600 1354656148863211909495649466318848 -336186081605587861457351633274929152 3973260931234646798343619221651456 1538277245906592042300000796934144 -805247968733627569881246370677915648 7538750805118764378602983640793088 456484712054849834077582962720768 -346615179749613924714838309556191232 4752694557046284993119292336635904 8364348386072768835016306406195200 -217859398509415618504665810383929344 2999253864420180598116358171918336 2555142535628567627451021626703872 -385461913757284422530966892562087936 5287195449588102204761999398666240 1596650003962709646755888791289856 -829292094587702902139493491341787136 8433455423112008622756126401757184 727008628911019269847045927600128 -455896342696770159369259099296366592 2111553826920712098872818638258176 3947559398031625746224620599508992 -353495645637347548719668564215201792 2369696166360489226156540078063616 5223457127777599262747226452000768 -246114635665229282634569745432576000 9597424872615123454384617014951936 9696833539434478573219809257848832 -808948899567852076184881686525247488 5688895322046309824716215771201536 2157844690410896467385116524544000 -683234178185627520607327980334612480 4868345962657578105135418040123392 7658691079173449370628973962199040 -961059644989321715739982707023675392 7036105223380052835667982032044032 4204199795718345146172162577530880 -414374570241359550428835736478285824 5745806613425689265481827110354944 3681195069633186661100614276087808 -346437862886787355984377022857084928 6111762895286924415731543786389504 5415999726965999029537872698933248 -201700454272550797942285536933707776 4723908400600682342723912298659840 1684471759060032917012105297657856 -5550179412447348920935322499416064 7810661243803811835199941865635840 9260720169313762724777053072130048 -535043093563048023196614437837471744 7881973051574827397351098315440128 9782485501787652214063700480360448 -768197808724061251622044485770280960 3497891951820293621134955615617024 656533721082444972116381880287232 -637898291272849535613413175955816448 4967768257755353614748428252741632 6160493062624220653584697180291072 -190898591483266690401996958752309248 2440438416361326661255249411440640 9245788792586047130057825385971712 -64748465711865086359290171889811456 1853362158237992770184039203078144 7558385783142928382129467520188416 -521318555802217752454070504079228928 8605767872505354139670333368565760 1821975685090894227367960242028544 -545877314881931432988071700591542272 6535497541665690340524884903329792 4666433102191028480882901755363328 -291459276422933590068533726185259008 963597469165021477536776503427072 5390355589782998940794868348223488 -734964079258961824588162749960290304 2258335233359566499492932970610688 8278484885766012495220236053643264 -890875611848964217255068749004800000 4194828364763431182286103720755200 7466880244861667306194075429896192 -643092116776493236751949533171154944 2245934111503897545573510282215424 7819508716023585494726923635392512 -93695481210219498090044827728084992 6122295864471199345184249825198080 8630369503371238947297151437242368 -363641014435440141420991047903739904 5763954278833346950913671573798912 683908674935537869742097016291328 -384829124901688827759535428414210048 4108687691834946612394617663913984 8966142820495437224327361220050944 -530959332309084887063206044448587776 6081193756120111763938846984634368 9752968096234557252431787990188032 -64353632978335082918954045863362560 138008561349354132326114723364864 2909690782116169495823502612103168 -787492893747968536938147149460275200 1475936687147489932417902372192256 3255393748441775304515231774932992 -977318254173998660982299604033732608 7130280131625102832187250397151232 5463508646723885484687532595609600 -486510063776504523408442688710639616 146348179156234809467787081154560 9465104378109907629002873615941632 -482062972912120793261379615815892992 5335723722288167694419951662137344 7242731848729152724031805803462656 -179315402703446287600358024647016448 8820919546816166309983872746520576 4305367056190369427880062807441408 -157087624928708260851383410322571264 8502840868622574394385144876105728 465271788732616283950532406542336 -468097612258284365160173788316303360 8607103238298483563493710274494464 106278080399515568805726973329408 -726727707446275135961231451781857280 1414946875526873154102767910912000 1437702041067837885017629078323200 -303830052279467083039197729212334080 905449301659762918991120975265792 7140272982496574962565462775300096 -799941374890051516650957163368284160 8192969220166865812110182583369728 426172111224419605733115001044992 -328616627941109907724860870900056064 8322029451042764376216477034872832 583788552097294613872045079920640 -676039654047380298362962908857499648 2489811020187746886710930983354368 7893953938988119008094618243825664 -397058731772997983961642162852986880 6847884508743759192020837625495552 1852722669067857545927728081928192 -803127734759067429446277931103944704 5568724800690676136643459773628416 4144775365408742749806255679733760 -370125264189245677971157337193316352 1047160794530259444902487994138624 7225900340864402773779324124266496 -713563408063842802778977386316693504 928995014295131579609948077686784 9121455565030858588406851500507136 -162237972900463092590488004102979584 9248830235977820620940954979794944 3124490464730276130971857266409472 -226525605694784546160232375861116928 8535928385845750196764786470944768 6163383534027248486033513049489408 -852243963069000840439117142321790976 3885318925397730557383840117030912 1465531961754015568776027785134080 -686639322914524583853280756380991488 4984761900604874336836244402601984 9639740874139988637582397787865088 -260314868673494943912499772758425600 4833845624861061674595527589625856 6311352967781433663790905554894848 -127337744725457587737871830808002560 9586570106452728040092786059378688 7293967430513474124436416392855552 -629659135954644903239244158630625280 2903137412068078907988044572262400 3695815922889620656618406865272832 -351333815919670187263046651872280576 5886401953789256706160871430160384 6896288425918127694935545488605184 -34214839610175894999411396744052736 9005303306512977143441817220415488 2905479999233549038169738490937344 -690359361210240509529135600707305472 966008342121916404085216266682368 7296287086929837627648879687106560 -127023487578556864906852481391132672 1843303519141807339263576837718016 1365774396404483071992749122125824 -379096243806541841825745363634487296 3772099506012858009948199097204736 8000435178949378176149667207708672 -853676928199559211129538377274097664 8142386949225023119347555432923136 804235935540820494507180946358272 -616315450513869839423468096626622464 4290815167208289669257317603868672 2259854152915931993769478212026368 -481792692920810041795927714518007808 6840478284935131970877750006251520 6216752650380514339269075252805632 -235125357263223631045371563345969152 4449973105331319564214754726641664 539163966559951759696435483770880 -686137448033312025721775427357245440 3503512997797523117272042605379584 6450988695232986615647946147889152 -798483659981047153442432239773155328 3201853271411334310339796090748928 44282224792349836501456850518016 -332376104608861388127040966167101440 9409307902190272307022512389095424 2649176827416683964934358554378240 -464724897209310960328182962317164544 7428935543223360747712552384856064 6891696086108546130419016177549312 -729927217017667715606828783899770880 577276882057695158685765505908736 1789096098333857641813946048446464 -664339305210188936639598228670513152 8320097823476684904968362441834496 3423280358655394030166343268958208 -180711783973134880976466139624243200 9130636017143450463746816745668608 2007323788765760423200465367334912 -697820870400417601522437439849758720 5018254542701482356503144808054784 1898159284890713515129485259702272 -747185600445349705458127156220526592 2414574889364464914547780020600832 3185635119738477635365875547635712 -434156062511803957720998111510265856 205920526677193208650547442221056 2886444039959812605951065836224512 -972876797956419221090792716426543104 4176555571702595935271616212107264 4945114685809611755107295300681728 -217393634085443454291957899360993280 7726051095470971520780817332699136 6531295936929095741385457421778944 -630762584250168176697347399365951488 2391672127383145142752440049729536 690053332697418105268086014738432 -730516347689972229719521750102835200 4856990162404322424860557447266304 5857294450117813288406284964462592 -862095039882985731189790093581746176 2924225742445521785031033398231040 4461409392015097769287789106429952 -864859390432104217507720139148099584 5524172366238768540273349880709120 4710749287245606494269972854865920 -796212969967349034850124974329430016 5140525230910244346260072981069824 4543399464290366607585011642138624 -480922864535000596597856326574407680 7493242782710247977532948922499072 1012032162843948401379065422938112 -720532964916247641205265306224689152 510203248812242378842650619936768 607714860794833201064539592851456 -720613811014784131557074277230444544 32217258879143628620317677584384 8671984625430661157824127909756928 -637688777661385381294554978369667072 9023662714029579984415409701912576 1455840186035593354699057416634368 -9619165887131604372347976450834432 1894548383478137458370367690113024 7421837368290393721156287604981760 -876533019991707720209291955331399680 7019131897097289333853245690347520 9718648674891848700132793897713664 -435393348918520667345337333776908288 6541698898494197241692481443069952 5483227855200332796997074327437312 -348888468637676388553054824186249216 514868273946847648050129137565696 4061600389664789614211680964706304 -175221452068951000115963542936485888 6298403247868548630792521457336320 6137454458297764687541712401203200 -589048363599731810560785285537333248 3404021802838037545698708940652544 6933430929324587297477299982565376 -840671607439261804987479447610327040 2785902833773428556172522319511552 6967832565589463598662473192833024 -900388160051374436803144155180040192 5649504900341586449927649682784256 3828233577723928179511909498748928 -375398170548427017613881614148829184 5988280628838611294183901047554048 1176679254224407643198732959219712 -583273262007034980425766716076720128 686292761006551411431872858685440 9694490886252164498781075476054016 -647114044157567600088709583761047552 4018713510188827145974090127376384 93673468896876235431907407429632 -742547974160250166038172312065277952 2500517886005050107047383561928704 2579927892128734311327314057625600 -389695314749197677107526222739406848 6006472751232239365530254424670208 6092026891639653929798904538202112 -354741187950229323396976626550964224 2716736303749155008611038942724096 4459153390073490723647024279846912 -489937391614766128678245461802352640 4057040194087070480268573366288384 8761561864147854581244661805875200 -849049452494626293851640408504795136 9773702786254345108065804296912896 7657314404816286333608777893281792 -261610935850483548616014893846364160 8372588055892961607852348112109568 5455331294331264923552057149882368 -528230367477046794195600995761782784 9015176109196018125692591503572992 6312977089868680765824263308443648 -482117818648278138048463482891796480 5757188752260759705764144565190656 6575266953661406231913276949659648 -29614961744448926228593606817480704 6744812954040778664168084689911808 8535823373656380116701493629812736 -308370258698206142392782098106679296 8329710531090678679397536727302144 6399210081549404405050915663380480 -69254775624600334556482770118377472 4268292869255449053217803800150016 1398696857503389689621295027716096 -328981272706288042185993835033657344 9905145423860195169602782139252736 8815873150439499622967339837816832 -272565178798182297994371043541647360 7150277677899415085284777103720448 6852644033926939676757770748559360 -958574864085175705734110790562086912 1027696222423304981813646459928576 7412184210175368658346341207900160 -42547056662588493077052192026787840 9784358795440011506354051608477696 5786067362544704337687619125116928 -876883392201055823912231694644543488 2808845542696304808342400123535360 4090259157330180729315685014962176 -363750164418744664075215923230801920 5507030356425615142322109880991744 661443303331761414454990830829568 -216803850898371091880592686717075456 7971170168557419463403766288482304 7601746701011898102393025717075968 -233468169372231592033905807206645760 3315566543800695426699437474316288 5910594252193821036673716585496576 -304939899997647492672015138138619904 3416743111400019584678410179313664 1460156458487565467688131301998592 -962948241133603225441571782944358400 5005362670165094314918475580047360 6395014798231976526528392957263872 -729122424968291605436507197766893568 7634754941474659648028948916338688 2401311193653620609560481529593856 -739202466522923000447443479071555584 1197745719123521824859510611640320 895001321241398206076248775458816 -221079210155949496845705478324355072 9198463197860740248899111207567360 1583611942706610412111205712789504 -781704314430441603340806192745152512 9630226811198028048836914124423168 5900232841737255386775012830609408 -98899939282617892555947722712023040 7677319718463567591333960850866176 9363537575788670333856520742109184 -797069456959349648336918465455587328 765499151710387298380788680097792 3476785622862732711816389631934464 -464541058858039528208863153337925632 9820861972390143825158659307995136 367854400521566606954395544322048 -344264199231363322525374891543232512 9045920818232096829877953335656448 5668272341661468185069776602660864 -105902625875298030268574673221451776 4525109873006295469111587333210112 7714248797367606411547907136159744 -972201649817180801833329850614546432 8634298290369756006615447228121088 9263981964988389111466437566791680 -152198024847966384713289287495319552 1528550638048087977011295083823104 2246998555421011910806942699749376 -742125074628832551056344850983026688 91443870105717341457117712744448 547139517959890833450361916751872 -191745508794348463341142232845516800 9427013406316991487991041738407936 9260536980971486408762103810752512 -838154126953156901610225531040563200 4920074362855725150850511487893504 1238584026772945662491191955947520 -230774170529115742219452284139470848 5312628833310637285083620671750144 2255762188632959492772849768202240 -571136968976596211002873297353310208 911710206728708160255706219413504 7694037597860216591429973451997184 -616848235198910122365311971133227008 6055395799378749067596881020846080 5528762863993480696472374716923904 -686016336221521484798227991150723072 133593788468691646750451711344640 9178531274044919196836950119022592 -650308210759315542309113894493224960 6066075279657936623929833369370624 4477416119297595929539029663481856 -357548503217370179106446924207620096 2302434076414715353836056777588736 9383836470440657386545260527616000 -272929557031204923549682801791991808 6337245470669541533252241454006272 1605974022903635221161961056108544 -310690463288578693669657496784994304 2581982392325783382581769624616960 9927509527296361896465915321516032 -498004530709284460080238338670329856 6211698291632755497464339663683584 1460423019219123344130843667857408 -712343564166281822446485291835326464 4686880928726354186309808167059456 7391636449467205761337071247556608 -661042982586819149892450031962685440 3236107305131030423203188081426432 7109337776654767655803427164782592 -785051605411076601909125380143316992 2776418501983925541911268425728000 7644716034902117838892457491693568 -537806678421505904331963094802628608 5369926836411793741201304744624128 650653933949619619525229421789184 -293137512759674971192791089129979904 9001005169331425744243564646236160 5444116713843787795118674531057664 -363219110781544893639371669754609664 8263546533711485699971607001300992 3763943464940302557720856181604352 -758965402175976504117641392219488256 5234169331022204714272511747948544 4562626033933057555992114129534976 -565857460623555007830279845520080896 8127697099409919389062957203718144 2116536100599879483013906311413760 -278834785132499472121197824581828608 1817480095695483136626250280337408 3339935621744633501198650747912192 -643545029305135864262869587733774336 8889784453633948475792388293394432 7157910137867436535478976866418688 -880879792768056836897336754677219328 5851137145016970342417421880524800 1277533556622870056301902813986816 -66118706758013988463164298117513216 8449165226125729038895871132958720 578212084378289216328602920943616 -308208250898713757226261091874504704 7459478904071450399832122977157120 622776110055620753888401831231488 -780230840369861708274710074626146304 3582621600288127653455058547245056 8613151251500395330899334163070976 -421984534360539611135724322692268032 9764464695577230032138343676903424 5516567976396621521392708505042944 -317586590492295990470199080332034048 3710740282848971975889709382500352 5940031618016259896690782190436352 -6746722722528904141683810761703424 9405450185588366199159973979619328 2312461464678772641701631992266752 -807741007533814753612839653398806528 4135310972555388347649138446303232 6819919350469507190559130125336576 -681954913727997093139827677053583360 2778680840606765203191143661043712 2942363502073644594471028698120192 -366171382392037202303287222700343296 3543232052064459319313537718812672 6259203964667541702542245568184320 -880955622699657734143996469469773824 338077788642544580536599532535808 8511576698672456424852103511408640 -726584177283438831046017573898420224 8669543596144319376304491720605696 6080169394230657655964009079242752 -293368414649503777133116593614618624 2073965296939300071664481350975488 3719924029231045494195392507543552 -630921832774338560055891469742899200 440311104907687586332926996905984 9340661600693234108647665829937152 -153512878364011796940972652509528064 5287656806909614985290485319335936 2660252850023100161925170478448640 -591350589711953636117530770518573056 2247309980001051561369026097577984 5945245918086813005853434828554240 -154863014386207077116735855800614912 3882180155910642693021314616131584 6266064481034322638011859399081984 -400103672074807292624587351167860736 9347684864510871456339063885266944 9170278643667802306722764706283520 -252585274893322579577252998591545344 9554576461842599972869430432497664 4383227034720688688476235935776768 -830117469044413358758603253562212352 270341313353274179450349945880576 9865663071795278680017074378506240 -230383068253038584433778586963410944 2927884313678654651734220448202752 1347647449769480354959186764759040 -889932984249174212295842242393800704 8732171864241234513405637652643840 1497710111834927545087360944308224 -767873855225246531354251824306585600 9333442694588276647745844575993856 8281343888367698799128546667134976 -620781083730411076229548084733935616 63793487384605711550331983233024 2424811365561775230780566623223808 -497994134152342686654694640314220544 8831426175814427286567558297157632 7742439455010500859389677976682496 -194007172766273168278364631720787968 5211308026504872973223720684355584 2876322633683775822310871025057792 -224980135066050971591151394849030144 6715125523253493614605867300159488 4413129296126839463555539012681728 -738334735847513439554621013487517696 4204755479613185621556442123206656 811230587283970695754299106918400 -212911226824687430460753335283613696 2057424101833274920727740365668352 6301769768694071879432563872235520 -384450865470787158832522705158275072 5361115858806904077408152242356224 7599948188045376334550511392915456 -656206049705900878093122059068506112 8084041246622796269463197622206464 4224422996366082869405298605424640 -742635149750863385972046474457907200 7738608772339604184061855305564160 9994645841786141180575570615861248 -246560545182034335624654537464217600 4542648136504007402589497575079936 3844375208009650658145878467936256 -385753818343708622231780570081263616 9123259241949434994706943523684352 6136453820807774779956675934683136 -91940824382603065008382664280899584 3068038102174955934039807820300288 6485889813624738557525614118567936 -995832043422776031287585321588359168 7956460390567602738001855966609408 9096714343141462874237468586016768 -872445437184458870293957113072844800 9389056637521487893990505755705344 1580793752818509559539355239841792 -980583204325005268839263931623014400 4445324774013963363110697299869696 2714983372951403093274363871363072 -492992029183297544529524768343326720 6924156870563153269147316049149952 6285618593393158045091919627812864 -721281990032407494263483901964976128 9898432818599943486227252011597824 3976853895427338297538677345091584 -475541576803442647878252849795170304 4497929124643961436496823289118720 9397396676004731104405871562588160 -520963395607336785041101385547907072 4946898528198026156485984259145728 3178787640706906143025792888602624 -90102756472308295852040228385587200 8813505996073624827376736938229760 895367423253120644407620894982144 -590075872173223821635255772710436864 5345680092358611657876778568908800 5106311223962802469228069420793856 -447214608986175656161941790321016832 5838086526858055957751063837147136 5857788944820292007134910962728960 -123632740071025606197573807360704512 2672317888057978190686026117152768 1600554914609390758612795687698432 -866871057167806538974819380738654208 4604229848753113010956871476969472 3344575688234376225256890792148992 -78492540627307517964400526280884224 4369831707305012625668359843741696 9401300806814906724659761468407808 -591698549378614056752604549484642304 5171952642699793963789150909890560 134513529613235031583004045606912 -341661645470251941345410190869004288 134647648123339137419145077850112 8923767479542104321324673568604160 -55509859567901610004017535151767552 3548613692513393795991387846475776 7161396656126612306550870843064320 -380270606767266552101859838172069888 9464879672391622179582628786601984 1255776690666576798103086160674816 -372084949825178829315640845706199040 8487369226130313090403336380743680 5615814159832504075484808223916032 -277121931224410085049931554743123968 9935025667835645358113098511155200 8790503668392838030430082563047424 -168287243208328821938078316178178048 5705515600518826139788820804009984 9953937191752986183440547713122304 -643831892724296849432010904676859904 7975747173119813564557149075406848 7782917411042841313755360604979200 -282686987536918653317931598176321536 1916352796534521730011723007524864 4367281634769067914909416433909760 -690745531194676689721805096188116992 7714453920257471976148024766234624 2117415299203044862191720806219776 -402339315899104321435965173947957248 785559482030817000888133622956032 1421274233489610351657043542147072 -375546336110665408852380307951714304 5158894492003389336094900131725312 6433356762121999573376559728295936 -303358140250147329363862162258264064 1598165529500217648659880860450816 5914991377945485206878569017376768 -281400139473139318296325288917729280 6536464582709208465192047769288704 506447897933037771538200046600192 -622674404219791597879534777700188160 5695436881295561443056605772906496 536523193252600152029602412232704 -343748613838711073710512842341351424 9432372479833573269977665200193536 4526138370361969033445173213790208 -260356867729401510821806088799649792 1095114916532624302172777165619200 9409957418412195543489056287490048 -419264784501699419304655068004876288 9018900332119545549927815445479424 6081209686967119203343921699618816 -98510227306957698888828624327147520 5641684921566944347816949343846400 2921364710499868127638666377953280 -366664171426118079185097679450406912 3063700834673295863212659903037440 5904188851560078440195387614560256 -631670298156503074607572376635834368 6113571424543793678881071741009920 562212272510580577487264765968384 -281207165434340666776454575675146240 6222177573482042608279090261655552 9683197771899848026103692618891264 -97690549757481213505738280292843520 1922335043034598924838525988765696 77865616810945005565402006159360 -965999023723822156976101089194541056 6020598044515418295999470399127552 996137713168513854789291381620736 -867352411902114284064047176897003520 3451750921322206244951848808087552 1373635109666213215766127237398528 -31164299321916341352315757562691584 1986566273851065208063099234418688 3285043088156225363837969630232576 -411047487945221402872240330392993792 5245540075078186879693645741555712 8727022059842175675207713577500672 -931478616416187258428415850854744064 829457707583901853128143742697472 3416737978128080674770274805088256 -192181738984480722464160180472905728 5304657725938268460843001607880704 2075129332735372965401188617945088 -531052907467031654989348786430541824 6972799496312420620289429058093056 3666334747884025266780879638757376 -142523652402149896087663688904867840 93283522817636896347411015794688 6363733676515713144327727797501952 -429925032662465216267408627248136192 3967704884488386669407871225036800 5788291295428533932823281471062016 -483365445946589611468644973381943296 1627893464439738509325503603671040 2509876026318810720767686389792768 -648135767183064609460863555241771008 7921038316015104123617029440667648 536147765799098720165954634907648 -372626240533170955493730433015742464 1936511833043203904916752328294400 3061345072034097777568905787604992 -150398861330588153400533326852259840 3641620544663575395967016043020288 348305066775153826608826317537280 -112304995927746976064801604842291200 8832027722811683667516376538415104 9572540679497212864269550664810496 -76816483741708319081415013430198272 8877798520488440050900449630355456 7106220300017279466682196701478912 -787407676936986030568093485560233984 3978726627212405483711629587644416 5011229776070439239894482479480832 -938809290452456543130723153929568256 8798684902945734429118457278627840 8282079443364244576928114373820416 -198680912733816268277208736979746816 9225678455987956140057258895605760 8165943358237871655658151305281536 -290014125101979021250473076421820416 382925343697502022704889902137344 2649594271149051879077392347561984 -170037972976917233264929526857596928 4339698319012033831145071869689856 2854279900444539809901639794425856 -557643333410530825826911308795084800 6023843041966808791229918093508608 2595836416782453221920035680813056 -880970691306231715555181115364868096 8058413127826523986502727715782656 4462309343123447716170671922872320 -253021753210365508210795292762570752 6528631585069821200697149144170496 1803022544048170436841013241708544 -228557315498946934318095932478980096 672007349872919488304714367369216 4206549154055265173215193581223936 -990209937082900185287593296744415232 1977888116098235977490422189522944 8757649413254658309596243828932608 -851751165145025214588000358157516800 8057292520530587449503204245504000 90520693500762668757548024201216 -557120104141176023363256252069052416 3436324893283030291347637819932672 650526101521955531807870423138304 -317752766577708113010852331589206016 366789540584702411778207005016064 6768285924647500542872372987822080 -169205848850359257648817660200222720 6369752856621512094313178629931008 3581483370438481923026585137446912 -685460780627849905900178333249830912 1937094957731566642192490489184256 1256547351027825419294282233151488 -612706205683605603768083118100054016 5282699895529420482649391582150656 8690003423819993561307352779456512 -30281291788455242616163574021619712 7983949818742149192178234703216640 2497948688101991586863730546180096 -782820169282936925146345601916469248 8931481428402979084103085123960832 298152911479933528510548580237312 -900200114613817738100762888240103424 3079249545001933059663829862973440 1572962056889577748747238980452352 -940861110800587696038241595832664064 4720578156420825957337191073972224 777275567089041359605958312984576 -941666225192142183159318018093219840 535349816596696341563155696058368 3196976023735388223388426627448832 -824520700121990480719904232135720960 8978836986063809583509953304330240 2493952886342392482750978544631808 -259640526710222798773508036215439360 8841456864452792517761658414694400 9037006481755396753580441787695104 -517955772041903210699251888399843328 8114612977000867804396597412888576 1237556703750649844661454714699776 -889445847192074595270901626226868224 9737584595586760180664864801292288 3257252609403919286238112640925696 -153178724444634916380267083670224896 8832401391093424651145734925582336 2070636158023563329536848860020736 -456272844699499966304438336914194432 2676867493268405698939859457015808 2098271276014960385307419292467200 -219411013678553173004520191283953664 9646492560569770136213552654974976 7401322542412034651540657067261952 -731031456309115627341686285086490624 6208210038777110796015018698604544 5835576207869744634758803912392704 -274907977480859425901446879023988736 7990872793727431840134526192844800 2163517375908681283239641207537664 -17416666770012796614770594701901824 775437417190526853056988903899136 8466539876400556453881203298140160 -959150542032977959171933358388150272 5894456384400325928612973781188608 4448731619411650835603092240596992 -159674079095756456945147597853556736 3501015562587853468010300439527424 2985619263509900863127838764564480 -559969229083186430263282938803126272 1293738457647915092782136611045376 2794774058020367120959899355316224 -837919071042641533897786443687788544 5522633047232537658274044163653632 5505995950618107646022893787152384 -656843072637985100612009137539121152 516647914852196342970021044027392 8603436537323840708398386369265664 -788775128957601772316209635454353408 3568752627372119418273116180185088 7369145953452346030488128940146688 -846297043378872988415447980545409024 2923972507535860094804762782859264 2896839254070623483810794453336064 -12888085267411452351163166502158336 3329055284471290261659101754818560 1289069123571843999463753744646144 -262373185814679455302098220713246720 1323230953706728743538684483076096 3883973526447985091605166500610048 -854335319319823475082516849762500608 1142599296717810687894199956668416 1534847191878562878233258162651136 -334048959335852049064949239592779776 9840005315491096930464522213261312 1469175724270525150756245809922048 -953292125813190757944086958484488192 5575052338233485497909540535926784 7756023274463226734785678287044608 -470136561695968835144142043312291840 1969150924425878255353062982942720 7869474948970137756710216916795392 -526848688296049332929447079006175232 1223402284228060163563692574638080 4985214761315707596554988708429824 -146263389183826829686792364390088704 4435541307427440435916008595652608 4832141556687708884682479675375616 -903811742396817880160401673454354432 9452873508614880590237267935625216 7202569911652590400495895495835648 -901815931733474858307916759553802240 5027904618411412861470184407302144 9466209617874343510610501521375232 -844178487851750292430025314684370944 6837342711416365154430639660859392 4681889705631815422503973409521664 -41137697291770796747664969076572160 3062506135935889309238623027068928 3870306624696864168190629594005504 -812293346467479294604555270257377280 6614719938390619079292758899294208 2033262084082822002203621851136000 -406392172099123223763432773695569920 6772163750608391578886344550645760 1822149620113064028255895907467264 -745140575932645951594564155527397376 1532773583180663644285981490675712 301710368102024976620731324432384 -246408837018699993020122243841130496 7454089290489985845536236387696640 7793650411286598278661581916078080 -73099028370183469439350412675121152 5874549789150948158744020413054976 3704998470363024982620972987187200 -582440149368169172914911627419058176 7538349258500873728097486043611136 4106390981585741875521630899273728 -486948814935334137307207608613994496 4056731980893402287609894118883328 6530345661824498010305473101692928 -714252634917343348345665736425865216 5067455948564534228616612618960896 678513599602107391930975949684736 -807667801011709854242724937608462336 7064243716420041310126413338116096 2866815377249991616752065074692096 -731630296058304232219807688993800192 3739686676969067086071951817441280 4772808301477081810315075850862592 -369944388005018199951909087132778496 8450058301656642481734683268743168 2955958217402599017953518770192384 -440926601990477934277541365196783616 2714161955707891914174728989835264 4897316357454171558068758446604288 -726718210151007930924644701650812928 6660119568404759125053372972924928 3426768553203219415891866564952064 -33352725946457529017714836162740224 3884853464894313818368364475580416 238637697515813978116844253347840 -395693887211705146122020706586722304 9950883934509962158148015404089344 6834700805217188731063293676879872 -162613110678171242160178214241042432 1810817659426699095996037192482816 9066833035343446405616963434840064 -884354767499194937181430813982457856 4710579027175938797661409045905408 3798611000320068779824507579793408 -889389727091401163450580476553592832 6496102322878081283235593572057088 1497604117257889574384174305902592 -573397023661532161702448430829273088 6803912959376060528333042789384192 6601760022607310352050289916248064 -623228560318215347169978921261203456 5919890480338321922267127796989952 7676037541102565682913093382832128 -533007149377460816984574383924183040 3176417290372712605362784047202304 5404312208693023822792089302728704 -663684390290579316172400073340092416 5138793410329608377538553139167232 7617027742292444196615426838364160 -744695705843612101550573674110648320 5141737437033933834268235509268480 2398115872395664042433088046759936 -824271353105723867929908796643606528 9857500207348281756719284490338304 4854336602015289825076005335728128 -41191406374436985136576527826157568 15806826653508521936594751455232 8380118847091675206704500427456512 -745217998430930792730070361854443520 9873580260049594794777318376079360 1716270567242850180480094131191808 -623412040896822156459355756325502976 2002373229484850963799104095780864 7180364731814822987564692633812992 -539435494647284875101448903713619968 4238100640436864571507311860776960 3736766184322696319651184277192704 -791362139328506208204115817690824704 3074251401835990269677304427839488 9931572558733845154174783113396224 -33220548807848072871808229957435392 1621268640259607249649308742451200 3859299647799699444643655430701056 -864735417209128779260260854303555584 1264904470116163234510431485689856 5868677255226165900753248721043456 -829900371826800296885639049998499840 1036012663884161410807768402624512 6016504035470428031530796553601024 -575920778279302975338786991625994240 3855850413149149296803492501913600 5887799755229799624758487381180416 -177545783079934445174092897013727232 7952483411718594391673941958590464 1932455511416935628205823151308800 -186612866028829636120821616747741184 647813444248961917000742888013824 4255027047503674551405829045616640 -448030921360754884290076025460621312 4113842130603085210186735717187584 9950744696541768990435877645713408 -572494744735482694628800564048166912 641802427617203203232561467752448 824513695400401451818189821313024 -173611439512405769578471485828235264 6319574798682903915265071297593344 4021166987315383253792255561957376 -639545034451444033840558255290449920 3237980913449564791398272564461568 4661443326654488311645620582481920 -500516352783584841804145609274294272 3820977027246003304475440218898432 6987624393374089158196449471627264 -962834600827136077792905908474347520 7919597138277419881255853401047040 2920245598308310425180155773190144 -284735099347397845601517357596934144 2961153164979585914007197390471168 7860462145797275736196999341408256 -111380296195580460740842585157795840 6717543710778664389890265162186752 2777712520823882148376646256689152 -669212038931139152714927245709279232 3638540979518850033373459983106048 8863222105747512160551833069158400 -103268842567928132723251271304216576 1665900432906825474620798950965248 9963181088080148353473220880367616 -753880402773194851838287483678752768 2196074071184918834059413200830464 676226825812554844866349507805184 -99837205667777940929433788238266368 3409892723438600838996299589091328 5905003525259847344833306879328256 -168169909399574863902665921806729216 4519371499033172913891271803666432 9658693273735349599432021530116096 -663041061647001666992945144983977984 1443626048746956533753091763208192 8626130656467573529226773620850688 -488036592720043130734965636846321664 2410574910697090685084370875711488 8054642021023770679598129851924480 -16403441487444913940703383287496704 4880872727935548858835194429308928 9643664039725143253665441376108544 -57801473201553527664841095485849600 4676292769393685669301882414170112 4318615949289417036737575447953408 -577660229094256525271909772921143296 1153297819481003021511052788498432 9063657625393936016340855874912256 -425550171922976137183721891888627712 5249974558164346975302768188719104 452753667361079843403099522727936 -535205722907353010193301808540024832 4781676388063520948753844613939200 8538180646818010329178011122794496 -367424978489493769228731823113109504 7027533417916192954708578533376000 1592240135623333880067382302474240 -965330883346304803243871237755109376 6646124529941873536246266063749120 957379254201261329246386474975232 -422678692735549344127690111168020480 8223846679985747134501636118937600 8574111221982013778934463247417344 -150164347984150730168299933820518400 7974788980138092353747086678687744 2476255212553073821061682177245184 -844478745570059441460595553573273600 9598645490862181932357139195494400 4439381693170723632081139503464448 -933304985034816745860879062417801216 4645649692341971922855190226534400 3085582943450192654158567737131008 -992965522442126186810314611329335296 227792806452838648016142629601280 149132292165469099625147990540288 -154744939116988197583585824185778176 5983693053827602220139347938639872 5087717700798824582398980451729408 -398390777376476525926056374136995840 1711976863327429378583058234474496 1008730589046398910505985989672960 -508187500715957535542768698392576000 8969356765165236885651188235632640 4649505660533557306753123975430144 -884137467550119590825074016672284672 1971494076511054650639875829661696 234876780478655651164123981414400 -769188402959158598490814655483609088 7573902878822681485635113308913664 776730117453763350281379337207808 -394937139703303626585822092400263168 5289822605378473794439045571411968 7543662479676480409653166108311552 -684914792260025938631364402284068864 5802105652273093287293017055559680 9320694811004801317836607029510144 -689615597627919241607040202719625216 9816995654771569283460636474343424 1843569911054731839515446309027840 -19804922159330204216260073348923392 3765716632474113073182632008744960 3753822216721459209829037421625344 -614287501992439076230986218302603264 8300285458103674004227215903948800 666355860527771648466052941086720 -847303387875651118172483017368403968 1748915060465471513500713740140544 8192200977541633813590393288130560 -70797272436387648480471938905407488 6878299739364274191941332820295680 1646017225867860407116493800603648 -636618382275537880618242073759318016 9764359479232498648406986554605568 4553337031368897042515856795369472 -118055510918545924099136278803513344 9882589454286799519959332413243392 6457255221715293435456655139536896 -620148923929518845943861520292118528 7276181429194794495839879475232768 744087780952187942634878316576768 -232448467691731056832292007832453120 4730136565837946618525028397875200 3816352033540265695006227838271488 -53148563768255766443330802775228416 652697088518161145789217117306880 3385067911190711043604663920230400 -67517192798380986387334013655187456 9528417293816951655007914695852032 7612137035156713112689715361873920 -420729085149454509342230567807090688 5814683705620502832354000738713600 7562275977113337430136998489751552 -899146397121532973073281894924156928 1432373512272748480194662440632320 5329254774638069694770754013364224 -955180715217712889329454640888020992 2498263686280959452358291488768000 6562817167231874597027365120901120 -282040782141854913844610365304864768 5239744550681961774909190148456448 7038727723278468243630414360477696 -609262001055394193598196122243825664 777847424375392952758694435618816 5712185425081756475442719033917440 -42594336732646142174204921544441856 8215338100767242721597441678770176 4847647759543645005015970379464704 -793868945075611513481612539860090880 6963834657707613544596534229729280 9215048616565472566737506310029312 -246842315908596834212676555719573504 2871564936741615834608026221805568 1452939494186854417432154422116352 -621554265610671593516945014437969920 3079272153375839405734332635021312 9047954292699341061823387939110912 -146696690182329395354007378696601600 7378666250273755279316066863415296 6447926692729950784976474125369344 -810500210944732025331486585587236864 3394377439133603144640972860686336 2018663237495646635199716061609984 -49435396758562761555508228247257088 2802759396980002669935763684065280 8353006789779075139380831127076864 -227963458186731035490555645229268992 837640844103688762792769593802752 6698446065013905667102808886738944 -948006214362677055640781822596481024 7929879207404939125745817644695552 3574363833586657982675393869512704 -377636732524323491131462592971669504 8791605472696861615364376583208960 4550450406789417408373094961119232 -237679183303573590917732341473345536 1474299948401396569047053237223424 5029982979698230544011942476906496 -418957796128659786818380612868505600 4055031116397395750606255857598464 4236129695261579636385254599557120 -84996425531576723800951057446600704 9122657691899768201765295212199936 2990974714276975285578337926250496 -749940031981166985923961486139457536 7211955746065817471374257947672576 5467344979884059409556229257691136 -498646298686524869815781450108108800 5498695561725123461130043915239424 8152892758549422704658630754435072 -142800389166404305895193210133676032 4718145353572956719319935445106688 3441522528768238625652263134167040 -308727578254044663412903080141783040 7972705479474509749164762363592704 5581522010464682103043420638412800 -933163726798959182480023667473383424 4890441440681490233442680304566272 3613992110303902970763928387190784 -161033016958074380471963811164717056 360433479955342101262590948671488 7782892134679390182232015075540992 -295560060457894452670568365775912960 6387191996463009497513065397092352 9262647748953343682504631722704896 -812940053476119617527466207878316032 2584062253373593251513824228409344 8196739450436151360531895903322112 -744580788717557084547935815658897408 8659065256845345697611922439929856 3563726693409750786552425084878848 -555700750611397614500348667614986240 7136067564668960611505262867513344 2340422934186671609987918418935808 -134122807181684120820748295992246272 6876891949261085059368049369415680 5289524928900891551825502733860864 -70651685963265025809902837849653248 162660530025342030544921316818944 3952653557873399945150755864838144 -826352777762951744337320590144700416 5112389892397020962494771510640640 7706987494300761646765075700121600 -128491793030747244020466960425811968 4042646026742308125438802195906560 2623199294321112659901476937662464 -419088103898531414598094839399579648 9814910468662096028413403471020032 7466665750431853655162895267266560 -617982013169145387461488894260805632 4235666216555750587342128387457024 8649510408817500362400572463120384 -547787829143685150314773472721502208 8533638640161917008209110380838912 9866903840842873431677296604872704 -868008915553332264253070067294535680 9963898306703324831649742278623232 4668394235231327800826761970712576 -430796294128808818736146668012437504 5994193079024832862847887489368064 2003576340345626507737500624093184 -610597662560428708892427312072491008 1389590031661936550866431097438208 329449072247671237043153562238976 -935179903643072733289659675210416128 6559059404721480604163037286367232 8378108495319248610513755897331712 -251814727462588622510650098230231040 5524040343089478398309284521705472 1117054934046253000395798339387392 -148321216361336778247288218403733504 5832017490978753221793762875801600 2818872958588064818691202227372032 -68350135986134785121717316896161792 2563434073699967028319952912252928 9127255418287229989152799389122560 -660711407451622041283765946848116736 7920448670408823255141092071309312 9496533604326623067675100675309568 -341052907102882820428825424910352384 2677232029502290421356826344816640 3824963394501223672196681412116480 -727180099956095750331454583549722624 7466325776741759958075177539993600 3067628565558271270954009108676608 -295440419146999759486841592823676928 926755991761032070231864960352256 9920860424558498094124633874759680 -794622599461286160012431144595226624 4361984467316919560686877565517824 8272314033665658997732800496402432 -645030142081891389118877782761275392 4376605199301101861138167299571712 4121497658010516545326162561204224 -697538057181140069095537970421694464 8927505455068719431543819136401408 5940138593532754538902596182081536 -823536129131640770907120249939689472 5100256955358565043158819102785536 3806336614132241100614472864628736 -367322482490580240269245973065105408 1134295459706150513585340714844160 2343074520487142877715620205428736 -906824965948701879342156340137033728 804095727394612613341515740086272 1446681789742842423010763395301376 -932327174144472662988928154215645184 5838442629445692962240241992728576 5435137789499257712017057960165376 -16628301887540915850133888659619840 5141286710073056264598538116136960 3026838458916580764949541881380864 -702174305746116049206877824401539072 2692277654873220693916728877383680 1328938250322969307283487121735680 -311444082708963505839033087309119488 1326791095184628803977583580413952 4997176001487934571082905200623616 -474675321539071982857886386366709760 8568200900889133683779111594491904 3109309227193076226836294380027904 -832055679141224371607192380819636224 4606031330561501117187527331020800 7008675750152473035979551515082752 -761095819706117435105214964229472256 826019872369053908459200247234560 9388213428525517889335634440486912 -558919509495318092654358238980997120 5319753333011567854520916944879616 7529905598682640062246651544207360 -806490958947597112399087696869326848 1722733405338166815252941176307712 8145943661347338624627808426524672 -380551836004818846876450850183577600 6693942485619701140241550114029568 176805390718887409427325902651392 -739261003611231784968188932151836672 458077790517742021926422713466880 8702005881964117029593523297452032 -730821367013482892974287503602221056 1826287274023205706776936483651584 3042290122479349871657699447406592 -22227350086573759397276414910660608 3099787932565947524458969057722368 8841514212926430935322184191574016 -791770069629205022917654993237442560 7938478828240515717777902863908864 2938409279050283775019447700422656 -343401160085898457446544552367226880 6323486933305726494607944596848640 5863804766243965139219919981772800 -82185139799835422408337990738771968 4102119783242440581834680108580864 6864033293936363881974508485083136 -369849438191891740503422642952339456 616812927562425334926671502901248 5931193227245552999332407175806976 -338385378495636068820823686833504256 2306503535125568634852976267100160 1268198410022648881239100024160256 -209781989368690726056391195213430784 2562485281490096683976872018575360 8253157955686017771555021121388544 -778913420489670519350659837119692800 4199121456212766343796689863704576 9058620064869414218916561692917760 -793666105538722852364404838176391168 1430816128669553892280482792472576 2458321481312136585174806465347584 -253861466158151445352928650175971328 2257956837064197360146856942764032 671839747031357213167278775861248 -981065232274137447199612031438159872 7960018161855870306851885615677440 1997953047055216272630739122520064 -498512689382189393820885107825704960 4501991690911115143198535900463104 4522494098181160937169299252969472 -655422776906155594440723848285388800 576180685353179917556536802541568 2628161916102602920668805961089024 -213185206913367774344178001506205696 3068338452746907244856367376236544 8359242159073801059335672023744512 -929407596595924040311246381046038528 6631642005835845993321454614085632 6839094409572918278157411513532416 -564541832061758198867845115105247232 2949040469333805117179767075897344 592083966224146506292424167391232 -643390851698439512719013554784567296 9775430967219210358749687489495040 5958182847865607355317210195165184 -333099334244239972117940870135676928 8463256316601175405271690017505280 5347161671446745449941694599397376 -494577198121139437593014108575236096 7831849588184789947512520989212672 1712451024596886653845963620220928 -936214586364453794082239047664664576 5573783013971008381748243895156736 4160835341035390969270633093922816 -864880936816614743220615787420057600 9881506640263785102874562864873472 7692352274370959167240614229049344 -329313494836237828601690093676134400 4911437129931494913173279586910208 6252012378083855673156508529459200 -289219831135535642130046104511709184 257675787487093202404739442016256 2250579206859592284126775953326080 -277866815510049309333370531852845056 9829354728220043582440865733279744 3124898871507549993229675032215552 -747712993090481086482814676812955648 7634131848321863431797500752691200 4317752586440496887637660196143104 -682406905989971860473787779335061504 6289703832602849093607651520020480 5594654163458630847404886129115136 -833446180557465202931519808610500608 8539326510558721344902776185946112 1333957353201870398248608291880960 -658357992920495528460214337619886080 8841221397944382008908604350922752 5639054004888548615653506756378624 -415487501727176336662768357409292288 9212454315774207913688377417793536 6504825072702985541297964664750080 -209150678989077636689269989264326656 1654884713802063969373733571788800 1523843289677466642844067844587520 -333022514725263410076042876717891584 6167561864116658602263057581211648 2624812523584542202301927303151616 -107648597103628573796572772752687104 8158943424322828271068356102062080 5292597058205088073579905157169152 -153229657226738097693994031299690496 5610505697350640989964911972974592 4340575185814707652277453738475520 -640521914949898560259368009141846016 1289425107939642891413396784152576 9309250013896491798366653362733056 -559399289137795422847560199975206912 1613145758090895022433654225764352 251999405513928130768166126092288 -582493842500661967576181683014074368 9768801987654181548764759957962752 2675158344026106726249290662936576 -974705744284160352426877175736565760 6501588564153248785422511784329216 8417769525682026645883313383800832 -271776009729620115739278190812594176 8543147850765585893026662719684608 5938662978151857817926754929475584 -340486126840919403453020975579267072 7043210015927899107382808966856704 2799148983708846975969625274056704 -642377618135848945788589519625256960 204064405826264833461108523139072 4578283265637345701970192873029632 -489426177544432202708093576601927680 5049443664988295385353036845023232 6972324736390728633536123135590400 -563418145476203521358604237927350272 9261151947435184777976502099640320 2444454579181650507777701218091008 -663366745118589140653218665691348992 7498416360659351601876201950412800 8199726726060543316129966152744960 -814058540323069938593993829522604032 4293370012251829769639222499606528 3019123754794489362293996333826048 -418086131799139145438359843850158080 4226675489121407316200190579310592 697203510967697122008365887651840 -557467731645371675634399337752035328 7181160218787243743375256125964288 77851779720551283328526533525504 -168029218567863069492628780262359040 9525178596261853187656208820994048 5718711908494592567201251301785600 -960185670092716987934210335315066880 3725812518578125484469002671489024 9513220977390920624150893274595328 -317137662838163967911061153371914240 4593822288155661119684755622723584 4571930755635823515177170761678848 -822348108099620176023770494834573312 1228255841237070496510542207778816 5458763695421850964225685740060672 -426585805896563191678033242322108416 2897087813169651186602842680983552 1044177028092151529302171355971584 -701296209804239333867909748484997120 5133955472553841396545627239743488 236271008320270246742871330783232 -235794699154410094693188382058610688 2760892234262974321405973778923520 2097331325762060366228255693340672 -921558101728044071300332492060360704 595701115330020638820570417332224 1714943696456198202301133696794624 -851217129555532738130036189082681344 556966597283233471215502079557632 8306065880483994673151238683492352 -790165903950693422914883513684590592 2259619968199299997590726425706496 3143704591189364663777833418489856 -710553002982766950640784927182815232 9452356390120442233146388653277184 4488836924886646412686907817328640 -804762982757462621598758992678486016 851487273058436988566754260156416 198127343945671257395578198294528 -198730352934963067458427319379558400 4956161247435777354921238509649920 2353148960000844170084879668609024 -833874297767536376996863356790898688 4226718656606574272676778869784576 5565542266514400417518597254938624 -702695420584766157016483184903192576 6887324692577438244889106331992064 7625752645785980797524948780318720 -705329647850490202238473062500532224 4617033016129531765695733158641664 899078906641349189995030063874048 -810827587738862352082813718433366016 7424656156830727844066657856126976 6457061320129268841216842104045568 -386884140508409564720928055455907840 5361248502131307370595671066279936 6138900769307389569193280725319680 -305564881350379489211565180475932672 8608266807476012228327482096353280 8839022939474538260371168640892928 -470048883111774897872997794315239424 3492192327484258987999505300848640 7860329588408397075289890441134080 -756057690770457300620042805933244416 7370990386380888918183951667822592 3855732368281182260768823702454272 -106744695395488690349824636100804608 3958782459711731409019003534835712 1798749239582617328509747034324992 -972700266409242452336723587948871680 7208865648861618645893720691441664 8597494222503255540075796346437632 -23478332594820124951855496343584768 5475773533185761243815011395043328 2623637601069478913986248126234624 -544809020736623210477308591835447296 8838084734579546823881522721849344 4990388924103194427031840752664576 -438501620584318326644027158698131456 3270899476970141990951792536453120 4503883087549577922025693175087104 -682128861741110525150501275126726656 4137617293836631266789601866416128 5861656941779930610704659309920256 -460865138959078133589928544693125120 1647134744653877238831808056918016 7323421746511516875989116281421824 -129217250882595936863928574367760384 3756646494641463852235314025201664 4662503272892827328182360085626880 -263628413279185237070901493662482432 7837762501937143603704355895640064 4077136254603926070475769987989504 -828687166268393332799580263556317184 5236266608864162415412759928766464 3660510398100710820187988576698368 -622767100511184487230352925053157376 1838224594797845330754505107570688 548897816865059915891777613070336 -807629562933599090926960891079426048 5633145797626944098984584259043328 1631376938682961809019432211578880 -724439697759340805458948175970697216 519715250125920260347507698040832 5906202861418745223315872410501120 -382980097475253853797996057050742784 866646936812392029093451121295360 9991040586362216995238340550721536 -665191928783594992751586981300928512 9731766452055188501137063441072128 1463210272941270841322164193329152 -707743565919706864971800072368947200 1743519285126232578967485900914688 5118138139865363472295930252754944 -568335050499247600641004515776004096 2340192805105562755862944769114112 5357660279766094379552627497107456 -198971368289532958484888424370143232 5659641585161188844686500064919552 5754137753092353477579992094212096 -493855308945782058208883886893563904 8381577578313811403940994956132352 2724766896397532964140079193784320 -727956681206412085576357936898244608 3263361942227684388255667694075904 7842412457340157845252932754210816 -97722926997261231864275454115446784 907504802714944738091555528638464 5983183018118375541517947508883456 -307067862959532044722701693762928640 9074891223790125899798118309822464 7904783569977992791649215068504064 -727571890017166854870940719188541440 5294956931735217628547652704534528 7411194451695343940346282153869312 -816440347379726030695092504445845504 3515456819571402778499825742643200 225118866532617061105354846240768 -860194453379751483079959658276847616 2405452273866934125404328925593600 9785592443313254798922862766850048 -96497183461004014259115421411049472 3043098399585863616845880884199424 8243633374498435513509733933776896 -965312260633408708261398081343324160 9438775057472992092472871556743168 4136567663292752385206917535891456 -48905753656640940349660750422212608 5100389956394897985874167924260864 2314008184188803284141365352464384 -873233930422865464296398110796546048 8067502625861765202013766518046720 2894859279649269701797515662196736 -670862131029521402561328361076948992 1314122057079752582307854977859584 5587169540871268347132231102234624 -699781797730388788009354562044428288 4517406393240461789877451788124160 6246595464899798645985650875039744 -931150592627304512124493576414429184 7108545923193295064662583271227392 9155004844833858213736772901273600 -282077041205474236739528768415072256 9737956983680922709172612992335872 2711052816019688887871043553722368 -944786111343919419628194694374096896 8304116100781229400228533519777792 3396068585139170444976304676667392 -912012141768225549453052424382054400 4755446518114633287019501398786048 9069338987082471652025798848675840 -813577072878064741333957592207065088 5809023751948993707765929393258496 470243754426350179283440163094528 -258539177810039069732268329123446784 6968678930716398463332790273310720 5509724092486856107257404015509504 -520158558322772215906767107868590080 3097344198505120369726121521971200 4313873451060124616466159466708992 -706423658046232674149991856732110848 6403731369432840451778525085564928 2368050367688211575575403240095744 -727541640398257482610531279537438720 1532838952333213820588883768770560 5576409908746411147625446865108992 -776430226792452655402771189243838464 4944666026581844778308100350279680 6822604387368906523878181990039552 -291753372575597832299785203186925568 1544860684744407245231750547243008 6937874317332149521232292606902272 -513822874074114653537665364057391104 8209729582460925595446110683398144 7419693835901561442077636818894848 -402369595268224879914271764641742848 8731861875009540280225741490094080 6792143210762866009791586673623040 -428930993356927697468208282635075584 8203104082850276604271137034076160 8039324649446352046478269691723776 -115204385491855535617392464720035840 4584907853377799871876189046964224 7770833239931824270575800862900224 -356265682663541972116763353248956416 4148865415515173003792147397214208 864923345722640168788646516752384 -734004796615801482327495092197130240 3636767718340489680637279734857728 6389083520478548830617651791265792 -839045220781411517941381255883915264 4136403747613344238613715543392256 9178110681890613357054721968308224 -26369894565880503755305132094390272 8680420702112611622838771109593088 8350732726292921717347050080698368 -617196332111400090523687710101602304 8331891365558600862453251446931456 7322420970883011338375312307126272 -684922201504919650925782731122016256 5825623214951891922869256311537664 8527206256195959089925868843171840 -53213284357593386647715534369456128 2600451269873178346719139988504576 381106406705824502204257307459584 -763618290909217560462867148602081280 65760338535226066672016020209664 9103614712805252470419848890941440 -223690275155091553872902492065366016 4263455035885670985250620710060032 2956253519189922526168077217824768 -909292866227822795428827456719552512 5695321215774465628579076576903168 7865326314696456999257304616402944 -932532394179025890911512730231898112 2160080444855004684227937600274432 1319115444604363052942555124596736 -423351435841990879866353699287728128 3262456959200969997272296118550528 2043423497212434927725220397580288 -196385634577956871716204786474811392 6866427341042317456392211117637632 3137832451761454948918269526933504 -350855307416505888123454572629852160 4520759479181489181499411339935744 9082300080251570267147203451551744 -673252734711220862680635676727181312 4331946739592041718436933050302464 3533111379526760447587047819968512 -660585369638337446533112997768855552 6014142981502094717926769495638016 5761606805597053211654250901274624 -633612253746132396942659348387069952 556584848410563084949534351032320 3627346112289282061873472967016448 -652488634819681245441717393097228288 9518668201909204791859919894609920 9848815943093082726184591518859264 -587067383236338049300278759114407936 1910535079784138379717263853879296 2272626508451062958951656692121600 -982735215929916745463551660321144832 9878431379403913437521726129831936 2931809631484229815072396138250240 -571397998724482667828744033277050880 3117783376477396824884331925209088 6141283816131129717724016910794752 -557621566659444855722588528508403712 8177392972347745816269943365173248 5612608119225976676764633916243968 -562002500628753669404624484449648640 468743267940316323567402821353472 2309369669663046338295164791947264 -241567786767325096643596082602835968 9892394678893249367559462121897984 9785559089411288711981004090245120 -22932140725402023080003968746651648 4520650044487427003425487906144256 6386708557298154837784630355034112 -936239151961359085371194740070940672 6733567773576400831300829951557632 3536000153118260513879557593366528 -443055612050284341099531680503300096 7972543289234333532362974114611200 969911742246167406721992847523840 -149852927248107209447693033840574464 1405843363873578887572478100504576 5033106877504263032539169918287872 -806820963901107001818333875397459968 7638042217668098469909743221604352 6316795416739710300501883708506112 -837283930829720473073338669657489408 5108934652597677209882496180682752 8111320031847689758072605444669440 -519662108761818770835734683105361920 1552948552140552739688025304334336 8903506187821533913695067219951616 -747121376414769383997211079316865024 3975020197265419533727385954287616 9986504250270064397417210311606272 -366877325169334185666521786291847168 3155106464805223565417727859359744 4568166056187762714091392203751424 -387967335189183644723039411466403840 4612203567255419676979306680025088 1452200026349914767687235907092480 -420997887739850403836426530435629056 6669777721653206891281934933032960 1860065284499897042109933918617600 -429375039634882150379181243933655040 5059912218331772358145984159547392 3249082778787351045300696148606976 -759399602131217687674765430002548736 9487361200520645673560738820521984 7298959935399790536225424972709888 -501664767212201758191238358709043200 7735530927977497111180053168783360 5199379004290377578520260265377792 -937372655279675550718577566457790464 7525510265835265867525280680116224 6034468027446796856074157300908032 -899352864065203400790680011657969664 4282111449105950536266756302831616 7623269304025061666508932068147200 -392452815947677346765813215374868480 982493175798582362337975879073792 4695942379606813799905745623318528 -330990331982667422851110235577253888 6292177480448621010215382454108160 109805237897030333389932169527296 -287871620147425061599596158205820928 6012203681655810180760431033843712 2173727891154784582942785640857600 -740913873085244759498119254579871744 939611016627221259556039350550528 6838829142842790650423487015944192 -514490357941529681758750279072743424 2901390276158932705162234446217216 491592169111401332511878674382848 -115323044115393591684060308171653120 1967258270570927256729367187816448 421834334058460948552717109821440 -932223413906264817059362518478094336 4748122942114184985594228306345984 75386488742742533416332774342656 -826185013555803126179450305898348544 7756253431172040040776135736295424 8563229323587446607675356918841344 -438897205208471488653140407491756032 636909465459263941557765806227456 938709967963777739099190752968704 -254161584785431645152903993623576576 1721273066896639106607577233883136 9065437287822162286302672254402560 -405904604273835078464510393023725568 9737658277113305515137924501340160 6481470500019544402233506129772544 -373995111834283057410571569415061504 4744454082814296724032846034894848 8834786232425652815100011698192384 -102319624014308549877243514512736256 9929419809809846659499111168868352 2443320038098357522294272730071040 -665123996985494611514929427500761088 7730496747657978130237372969779200 3848565101696782137197073203724288 -535854508611276698388997844198490112 9174770820573890471425084003188736 1776053665171860419888435548913664 -234688691394759943089689101988790272 7378631765084164866571951583264768 4759336808782002007833514556260352 -48386062543434687097270019244949504 7277037979430711096699181535854592 5297731969400214537361359003189248 -713183646696894255315191500384501760 4826244044199386636110831156199424 7942501125190911798515221334589440 -268291249861130446607350794589044736 709970048643131851124231595098112 6362335437532544838358064313663488 -709537180205838651388461028418256896 9803079665942646124173735852244992 9229095801160799848182619867971584 -453725781984358873819978770721800192 8616180905616210309633081708904448 6163631302528330180319325139763200 -715012852801448630184609628333015040 2447512754779815369401975445651456 5269393416068840094491988847493120 -720460597385263664129420537112821760 6380834096831189758327210708566016 702990784350161263910122149642240 -772658957137454997031855400228487168 7712715397574643925579551593201664 2362272195673486669299903469977600 -668569858590954943420234786848899072 7611362876370620824288796749070336 3944082209870842680822256138977280 -456230542926403626942377595659878400 104597386622723399439773452992512 3187308010805574025548456037187584 -384596104906339484593816795393032192 804855519507335120699072788299776 3763327707878658180000221755342848 -123262206097309194833651284884586496 8405222997995564996573109271134208 8261768814691705033517198622064640 -248069917773561622211057153965293568 5670607666461659084756204965068800 2265259484031801936221472018137088 -704517298880233093241481692161507328 3360827213727877945813783162126336 3797363034924037589004555053432832 -893700831218728349648760146619269120 8729048801527116708442770952421376 3067836698731560284086058195353600 -508206287055014306173448794899742720 9189720498338250608824274279989248 5918781623929202963873549552451584 -332470360346847050842792577900478464 4698754179006487234542546049826816 6613973525906985110489385949724672 -879847225392188525170135663497969664 9175018288222651189236349624385536 4902806591400429246505997305905152 -278605538534979632656770892952502272 8859022102125483925379972585226240 3835822139520857479151655342571520 -432570477536202680781433023477317632 719646051571740782120443679080448 7954429579433289651429604300161024 -570700682350985484123820483036577792 5873342234262602365292316515631104 9912785614416241577899755743215616 -430381970550923010861356127507972096 2576363256024471331797185178107904 2122608053118057271380615066812416 -924735215028451421346951084476727296 3520685361990661111688309730443264 4133325847995831144304707324870656 -859971096455965612613048533893775360 2130973197541918179575791427256320 5388180467320574591030714058145792 -907798246800709716705920303790817280 9146115531414667379539015087685632 1160778920672431331018537447718912 -466592260581625424574467665091887104 6290172921960600357213186939682816 2816295947213870578881709337477120 -871747413240719209274101652204290048 1454857832715980596067205067571200 9283788995986509634163462216089600 -816458125421226438869909906787401728 3311951490055633961006674214912000 2546036052080991998853741788790784 -823455129981777977094537130117431296 4134297839678803873793113453494272 1369634143954558608504669081698304 -631453013547728958114658182622085120 5466578680667269555779334142164992 3766520272159134340940780183486464 -167693109398994906121891733844262912 4536687523699193868187298066071552 8064050476176541212238392483381248 -539933248018029772051776353335246848 1471320061071153214315677343547392 523829939554425064074185092890624 -274780871869596133152625081112854528 7292329219634091297158497612857344 2408062935338806400236585568174080 -798154723435387789232474464735723520 8709538113011802865098730093150208 7066960751703759933153115696529408 -823945754744758399810512974138834944 4516862197769258273707255517937664 4610481953306641866567191684448256 -783631025977173842317549489998528512 455443598040327990793872638738432 3903636682056422275003029343174656 -396678200575377204415484838555942912 3794739765950556053420820274348032 14084898038555372159168199786496 -532105091588118732044033002162880512 1818800440907603919986103989305344 8215192521461203874627285994700800 -219675161854429982527621597222666240 145882847634096789967058249973760 3753412905783015154835484374466560 -574287545945629677310901031861747712 9420826066158950355678535490732032 7731165337044021296076507372847104 -318085127188814763191606899080429568 6040312036836816513338563027271680 6395316967887708451489266070978560 -216707962413332449368683494783320064 5705360063230258536774696855142400 5017319493937455203568192350846976 -271148573808631814049817426927812608 3417921725733850353387606623911936 178836218719465872113722980302848 -604947085339743949274867682185838592 1653918381921594040203264164626432 6936644358225260414760407128866816 -175104100930019998692261198431256576 6443277534029707411145059668590592 6141661724285077341355609172213760 -506869128363816329559865899398201344 5691955447157745725519576566857728 1940272677958691014472106202103808 -827833851684790126380199081941139456 488444048003044916820156094611456 4666121419804420121626359317397504 -940498013366904382419155778143256576 8084295832393493422687025813782528 7248578745526141483135562684563456 -604136174055227929161433715434323968 4915366200916069014003857194221568 2124004916664899821474957217497088 -841279212843538642095768052531462144 4667421410060641886478567940816896 4762921675517499592968946382274560 -624784375208423485373477309512679424 7798642739645254668113872345366528 9456127593620158671621982525587456 -642347328031634089059731076401856512 2004070749112582323567973608980480 3717883946306159017677408994066432 -400016295902867085073429234087624704 5866349200500284048242098839748608 386990782109561602354727438254080 -804941919337436052510698514333827072 8322824202672645721408762774814720 8757568257498442624279841366605824 -411619977534452860126695103980896256 4512300896927418631813930730651648 9883527438160162259054135577935872 -303088808590775373885842394294779904 5158420327681518478305027006922752 6765202102764305181775070704435200 -794533236444444413767444790226452480 4217095086848879243624891824472064 5128393046080592348965415281491968 -242616890795591639668508518642614272 5621442669277963693792394980884480 7109182208686083747779108587700224 -371039744485733052801137782441377792 6940345516761792401268500183646208 7759747547985549422672210007425024 -25858002675515111444049787067826176 3167250923999844890353045151416320 4029073473087392471921983387336704 -308054079887100409074560188463185920 6760415756962714721679003975942144 3634067289334297093205559334666240 -297813561609362534399260333214531584 1235801134195257365059736614993920 3539784791502471079990977418493952 -123000404833810661346353762216706048 3987244527372064448777835692163072 808833979646870796211198141399040 -54259758076344701203718811477344256 1182957642104345669734868174503936 5626270572292914287046955936776192 -117481634559036730565731116533153792 9474364084011822084609604822499328 2940317206792188762294772308115456 -531921621744605925857302840275369984 5990008964808254956937311793709056 4200395668150264532515019974246400 -249272040979908753429583445264171008 5223084380523292406815867998830592 400324997111159865264050727288832 -393239778269957739968286957546504192 9436953495537525296891215340371968 7247664989611715158363409871798272 -207441508153116952060919269770133504 4934495455224885817604406769614848 2891857032594449979721825881423872 -575883237646212697913868474302595072 5491574643332146599849595836039168 4404340170186426557442231935959040 -608695897233458413447091967091539968 7703265018339343150902437671337984 3459289183698176900350752298369024 -324082119039477015753296949041692672 1646059992751329384790195722780672 6793009438047668195939919073378304 -220028284754141492482464680530411520 3765009402513582808981778110349312 8107324025932729350291789161955328 -208607450666707313822207167806046208 9656865944538981254974608016146432 1300317764071923557190977670086656 -494699539206933944616364252392849408 7745509419884625386084838859079680 1107895183840052014376662471802880 -793810371176813123957249662938775552 5104027833430666177056836625104896 3660941161550147755493528642256896 -657362442628756825026696915856654336 729261700399900190067165667262464 933802481075274756229499210170368 -867068685011252448254665096012234752 2643464818204866808382331876802560 2940522122474280305390986373103616 -851968494379115778366366951963361280 4980561880116579860859110052331520 7190339347666500860588257622097920 -690695965862798553794587903655936000 6831943139852371844090784806600704 9574853504830109691417572489035776 -738617815438686665504687069805412352 4007030629337343263736835386376192 4834507203583565424197663088181248 -599710850712061737925491301640306688 9266569695711152453486454371254272 1471362009728974325691044694327296 -77240059408217611165522807087955968 2530934252569801343467538270388224 3325425518706568354583989326970880 -133907519527450721176458871800070144 4462522067620060185891561434775552 2930497712209330103494455905484800 -167672977079901686605805587299041280 8928112806111817949128763264466944 8046457963476548201083623308263424 -643123234221926589326221190654590976 9187800962504654430747670257598464 3479253629376466108851516730245120 -492229221170046180809447248427483136 5520056250775144374344706246574080 4055393279389234110677009406361600 -643904468506758244589420193029029888 1394407201514465960092914314903552 2440232499821103523234560966918144 -324263600818343595806291636588118016 5549786233529096292778965978841088 8101167879747209705593519598469120 -358700602258379304484932455806009344 4009808919830268164136983458742272 2686039418090200595538383852273664 -404066574088838079403578408277377024 2028734565372351166150902059892736 2397554969293361177781767810056192 -703197339481423298328833211641102336 2014094451662698719633214730665984 1945628824074961262371368847015936 -748742207711486283784666860006408192 4381859226895786269597720918360064 5777471832681376797573900367036416 -431103063210340692157536458082615296 99702253929886544904471097376768 9020033657427902814072476912320512 -275724253510144722673945865516744704 3667153644589734570615758911438848 8509370228680941088692442213908480 -387540954546967895400938525295640576 9230442801225111677928860482011136 8630039823852725504278555195867136 -750928379899485519511361748383825920 643555115870450935802696411643904 1959172114800161033786200046960640 -120868506532875442483830586712522752 232219503695566034713028243488768 2563046146203257750393626977894400 -894314490532772064442260675151003648 8938316329164846978031370134093824 9591094327841304515343948686819328 -766918526021445578780973057628438528 8793111580596255104069498648395776 2480153376603598211238777262702592 -284400943438145151515964441920274432 9929008348255183555954998859792384 4338338857293656457973876641497088 -880601416051794395329446084536696832 3203865382355522435628740579950592 2196093086041219447708206036418560 -137275259504666047497053810622201856 7674247856279164176129575591346176 3513470496103176959313029921505280 -395744186494157477784885148545712128 5184313730074181171040181456732160 2289843031830262504182973242277888 -124672813917507385368772432711647232 4285931529043916164370898094129152 5760569053317070768797950129733632 -779689385265576894919757899377934336 5805086845970405735806835135348736 2132654646579925547666998181232640 -256407423045080211478481360186769408 9665419272438543488446358414688256 4492843903456121847327105933639680 -19943476785212664738375520313409536 8544678005439647321784827896659968 6479745657818130622494970027704320 -856019859073246131461821243106263040 2550300393317322798624211694780416 8681483944068645807315504150347776 -858381762152471032315774203605286912 2014352264081833802243405009387520 7842034292827853308518900200112128 -913131595657295253487172152643813376 1135369771013658677151997397827584 9227965977329699401429084452945920 -703014643608594203550311948205686784 4974097677346374816580023152017408 9869027188698639261300708826152960 -127077050670175200902512293114281984 5767949443551568968840705457782784 5714172377882333022899733868314624 -558589573702256745873057979090075648 5395748861450700223255981382959104 2747750404220142297598487162781696 -974052708248638752208954337408319488 4816169372902619876438399764135936 2903843974307116933914490331725824 -992797129790146142058283424293060608 7111516414408302345928142089093120 9228593153745721193967161490538496 -869843709994434489939584042682810368 7904278774999106077336779802804224 5049133173801328707562607699034112 -21574068379212847714450236103458816 6894847347929816996138195527663616 1654892100492011359766231239360512 -902951258415208893666380473884999680 2101142321198550549553217569554432 1049848886207049893005279388237824 -621166135466600824127191670543351808 4643812107363161952029082835222528 1296768142443844791259009950679040 -395803913606492207752693244187639808 7865888623915202501254893117898752 7780720869801950800682243994943488 -513175771872447869741704852411514880 5484565933476977410713675504812032 7316596444572036869445703094501376 -167728135193275306089188822911811584 3283514155361923650938369283719168 9507879598549717991982690486714368 -633855433066866625615210477971832832 9082591723952654741353526240215040 8845970667345122020198348203491328 -691266082464256170005756190727864320 7671508665426233371730385144119296 9574630783961824649805516372967424 -418069584716582769303329382013599744 6235432964527918689472482738438144 8845278344402375347540389902942208 -179588298739038759891307095948001280 5001370154965951648777446960922624 9814765633855835898490547997769728 -527315115969883385436962057065857024 2225463977446989352854409084665856 1359942586205350644604445273358336 -136526622826189965664283556342398976 7941927167887133826389848363106304 4459434346710321593514581408350208 -690646311890158870892239549750050816 6027634887460893719330902000009216 5597041052605293527892313711312896 -473253158123444354548883512996397056 7385539722540850727209430704717824 2331237883041729920143613644242944 -135453782837048760154605387933286400 7687234890480792290291389971824640 78999926111172235515282413584384 -387929253837214621611023324455895040 6463451692472976151085772622004224 5867706170756775505375664854269952 -203263835903926473959582156223152128 1223902143985543547734002027724800 2908519159975413862605972186333184 -485684818750796403095918436350427136 3984513329570338645412528733028352 5373816685035909678911650820784128 -578359392756430993726965964005703680 1763306128538875375525313460043776 8288894511044159955684005853003776 -40231747553367139145494870961946624 8568911113505383809337541605195776 597651539783187122059077627150336 -774284077100939848869925758424842240 4588243344392822233704306306973696 1108901801903544801510483354976256 -317949616615394984969884423877033984 9094206756555341088093527655579648 7734026597720327702936207038087168 -843022021628434175958714489495355392 6362416987785631913884169969598464 3305301777904098389036286905155584 -320748273273453367630317035108433920 5551397439553383340906286201962496 4109654757453754453478791983398912 -139166397012765343533605180481208320 1552871562530675121583574659104768 1760992478875505246407278496579584 -884352917450510048738724062972346368 3452744572723947029177650127044608 3282864404304523382254318779367424 -89506384016346144792716892811821056 8046312470106032833472372940996608 8761132551308827805422010002046976 -854204221629094968139567124566769664 1871077276449161698334379884937216 425071082100288448782930454511616 -8157684785252411268481409129381888 7604104368670399705079246403665920 4725266961210303393916716136267776 -187413556497662843021198469946671104 7218932689319734567487956624343040 9047181586127859855149178124500992 -29325278169539894096602512817651712 2522755116430130401507979867193344 9953317590920209784014212356374528 -357565903556280948285671174232342528 2696711147862685388048953816121344 2879181112807312683027476485505024 -222385567309069678761152516116709376 8895942896283229156985483730878464 4136771733121493051291193988612096 -560421312585670200840900366858977280 3934204086626764843496794549649408 8987824609570180145306307538190336 -441018615711955746379021821769940992 7882219736334668464571626903568384 1925754342377328176913761804746752 -758945714890305172944996409431556096 7126849260975625571144489121087488 9240294713264453038906551239180288 -993704594189566642398673294774501376 5790871257174131383197087612010496 736044984612299540838570839244800 -58772779323757631283710550110896128 554583771481120867158104041586688 8921114247633100320414289394401280 -848401326205489094251170420511211520 586444221660991818194345929998336 8078312055452308601150860125274112 -877989309939941180096634969544196096 4323174898412086738405106762383360 6233499065073366745225049118081024 -978058364739338381625168601177653248 8616789940656987105630163474317312 3121365866918435329837711128264704 -107724884328425945088043265151729664 6977719403413435783435175260585984 5643938321535849975801158972735488 -270078635106108665059290565912297472 5859698057657013816665422597980160 7220628549525079094643956863991808 -731286483672570884360161657121406976 6093479094234845926150076905816064 4656300345629871520978895783329792 -984530499003459437192725299340509184 6198452450258686717900291496214528 8822999389393513339322475223187456 -862983487916747329797087055122006016 271165542829672254538387210371072 4381432238148225846826507243094016 -221043132208927671476450437017632768 5066868765188234766760128582516736 5473798713559222793830287844311040 -402388334992089168373723230004838400 6099059586909258448967478724788224 4824785933152362437176285485596672 -761500944870850226229151423348604928 5277000146868719130768589914636288 378596485266798512236638505009152 -764270683014930239979584659122028544 1268191628089762214469433764610048 6899714441176897075450022335610880 -462194791179662513632305390056112128 207405011642761680336840195833856 3516643523653401679813901683785728 -507548600135112756590315241442639872 6356242752427859423314767324905472 4564666370163885921933689438076928 -899700517179598686166906493458186240 372730245133482197934583723327488 9308167539114943902985885533077504 -285441760430031641423723831765237760 3516476508702634463954775937384448 7727461129834927233336055252910080 -690302716340861721137672366074101760 2662897935324331392402657751597056 7376649179532873242776856652939264 -342525343885827104562841050826145792 5432161646190776294192070738837504 3214103092798230159872241724030976 -125388978585555088632535461318885376 6695994641806607782107215919316992 3263018683581333446057790210572288 -476712083550527705169813564871933952 7023450097539653181597224760508416 5143303053180426401356474285555712 -86628639137535662109607795745619968 4195499589854703059245570323382272 1296221328133678372428191119704064 -308043474308549353612748912699899904 8775474878030084813550237723394048 576991383248120841524143162654720 -466115183778991333285302593910734848 3657649493532133717073050675970048 2253368202887236222532527178383360 -468204450134241147266217239457562624 2237486474276637282651551555387392 9758757434297719701713771638554624 -550513765873433949997941034374397952 2489648165278490573009821575938048 5183306626921680594834032622043136 -26366036667301093813730374374653952 251649985109802303929789127327744 2495292315480072271234761146499072 -788492645910913194728393512472018944 80921471370057042622010315767808 3240560594261516765174131566051328 -165468615097330439291144978007326720 8760497177686235096495966767808512 490172970415272491778204279767040 -211996093708496238386308645136629760 9373693860302957701319267583000576 6320070352551335850484978558173184 -653877363627708468252030024175058944 1862235121738014770119631502835712 9604071270578500154130430204837888 -250064145835183429618449550046920704 5180023919080477011829640128364544 6724131742544003106963547419049984 -862902006778296667713379083722162176 6573721262637211059802749465001984 329363036525460260624464431022080 -643298344033535584525712105433726976 6360685230169427171583850706894848 3478842513168093233300827797454848 -547010377772033199859321145921634304 1664586315469324745137583265153024 3748151661921216501496591912271872 -393761425242527518293570379426299904 8424296888680742061039064872648704 501988585183293760222593388904448 -91146923459050517853503300564942848 4437098351789168502126186525097984 1680489502695742577462976777814016 -125152819911771096326764142375469056 9852974334246344806770751693651968 7522304018020965600222707414204416 -969442659872820039061651069863985152 3133679402692107298448721131339776 9269343608193353930934096454746112 -287481799906014753352833634951757824 7493522512810708373766042917273600 7076747644593453544749106613714944 -293035663450577929733596529637195776 1483022395769777775469552717529088 1431784829135457408408634173423616 -657628920386835014771264844608831488 8641082200862090485517470612324352 6484499575401802186966085530550272 -258382300428443051922741514985275392 3401101607991576190838153192407040 4256339962980094523671593051226112 -133099769001429607894604187302887424 4401296336686341616329119743606784 8807821157483123243639183973023744 -442951289767686302669082129799839744 9221120714931192054818105525796864 9703068136601726800639013026791424 -675955479119240408324856782765686784 123677483559643591258788945985536 8826243735989675531240779431280640 -607918338510864587290765537568620544 8297299963173921152769270086631424 2445233579544597441967845829246976 -488582386636427477024156714887282688 8717609777784535326441757757931520 2832943123083081618704083137331200 -414079104183399070786150161700618240 2692060461773747105344015935995904 9473792516816355562714214449545216 -951350362685125611998656967011729408 4383103947172917556128987685584896 8915934280799769623919054553088000 -528568901608636672783346761178546176 2383940965883484716125027653648384 7985517011427917830356276720173056 -555914557639513285661195489387741184 4018018728068510631611013170987008 452252338522720649910282201595904 -308698750980575187066096588200869888 6636148923993500838206555870461952 9267771687493958001730465252245504 -470768205618050605401945439884804096 6002692480097316605384516020731904 3120235499690505328329852803088384 -966482454698341485017379282006048768 6714981824391467415339662126874624 3167086199408014428238571318018048 -254398131287027360112075214854029312 5589446491764394329769877123891200 9948252193501091971093055070535680 -524523464618474138407075169146241024 5359167655643415452036002622734336 7694182096477426376249180310994944 -366203001916242922655595202384756736 9777832962882404870829167433744384 753872332884152563253859135258624 -537194447743049046111452350222696448 4686133189956975047386641398235136 9272947683179077816399560829829120 -457662826401855122368742314559406080 7333069114394546407603343733030912 3301579301942679893173648876371968 -538839469694088685376010717300260864 4742806663108774039073405200760832 3132515455883971178367510768517120 -399699936440359527877526137834831872 3930436426045862332556116655865856 8059336135612844742579499225317376 -78292573541634067484308708496769024 1295231015495387473880668056846336 4290219944682616185525757242507264 -671620299968554800493289485342081024 4454611159343359446211955320160256 6639738130350580912751056863100928 -97874034476099409887232206896627712 9843218730577919983542708597686272 860704680299626752955411070976000 -943089413160435679559883658490806272 8180105910554385340020582267224064 3450952321264575779209688496734208 -670102761796563434579734916914741248 4498698863977774921183702896607232 1361197327429443642983137794850816 -387903535026772989878622413329006592 4481898858646894945857008081829888 6555770975717542763741823421644800 -825066076460352010371518625394720768 4076534326923650092904426225270784 8594069318613431526722462952718336 -32592215615060942531261569846738944 447487116752096705037449729933312 5324929403870770343415322540769280 -976038446237482031709080210575982592 7363871621656545552672159044730880 9127138886994106068404476340862976 -927296273497368595548653729366409216 724934823766783793110511396061184 4960154995276117659750665740615680 -751102817106141945544340061584097280 5780022837006195864703686705938432 9877853391039902039759586475376640 -560281216148307979287933404105932800 9992943654056801038366473212395520 6596529225165846939589265374314496 -568173511193241292482946840683085824 6055487777285321269444977367187456 8188054785579255504115821170393088 -402356164318846815751415595591008256 1141669175466162380683319193894912 5326054272561792824841261268598784 -639092956468975027926231278537408512 6382049859687543814535962280591360 3506408608577315871761424720068608 -525299533825055376430188226578219008 2925156365652442969198011372011520 2731013506914779966017842442141696 -94495426383512457580079319149969408 5458049057248496022820785852776448 5847410622577265705087018960158720 -172091490482666528282618158014005248 8760103039281170276116019766362112 6906288594410290265383000235573248 -64977258691004239010017537096155136 2318385759396362779167472687775744 5223713007549728394062099422117888 -247571644383995044161426108320841728 7844916804912205162779866493353984 7769720826790041320442385877958656 -425524621648838376806115849434824704 9435214805484277683336551082229760 1454296033161532455443767895261184 -420970188374653714454238301813473280 5124583633288204248862687517212672 7812014107825989498314440392572928 -942030338128336837411493803821367296 8641547316019215843618018270642176 9058052737546154337023405194215424 -150966601734652202366911639319478272 4215589830907662067603385939394560 7912842378599786589975328015253504 -128936298142161529950775341473595392 7862045252463786725896346813857792 123258194719991965695342559625216 -957147281944371783289349405373628416 8323472131593853811034165044314112 3066746419636115399047720646737920 -907779413991136949508542282376151040 8703341531743308106615200447201280 5827872352077501540217288845688832 -341976880554626068543507749878628352 1486843120458144253601526365290496 1091232221367176474347105018707968 -339289976268792580971898076479356928 5627353002580494660291103769493504 754521121472562747017624385748992 -171431411559874323475829114366066688 3568936851909259003684651179966464 6348891153847920389312908946833408 -962699679898182160062926975706071040 7557267630367947470294650581942272 5356126700393061459254723733356544 -332916946913551899910090545541677056 4834172809865275330819150726561792 8707436004354429305690218150494208 -261422862812851218816262146856321024 6879659810496325640584643125182464 8009980620100546056300852506787840 -956279678710088892752217692488859648 428643517861835498466909611884544 5097835834328255568733124945772544 -675693440463925429790610471245578240 4862979491689608992313830067404800 2257636090094791073600366981414912 -744592336803095648985774563709157376 1599593909394783408419068306259968 8872475373614620111172559555264512 -998099318116245459315264742527860736 8513382956040854367923817045557248 504911283701292046579323562360832 -126151001893028682501525188477190144 9057609286764410097279160243191808 8065518446904934148627355997831168 -170326417312859698980572455497629696 3079702138592970330528795487895552 8410769927956033606397166794833920 -981742356523183402048256461361905664 9912137886597982074106578470961152 6550188561157563941841194985717760 -483452969954777031615173607081115648 2084017545547058084649893669896192 5214082084834615862154877076504576 -505431126815878530490075235064217600 1153943043627724008540986801127424 9138286678398738301371134592942080 -446458687743924799570661333769650176 7288142623268853025987355434024960 2193093577493414698152513817804800 -517577825453413453223032561455857664 3300977467906952023494452624490496 2000248601441507255514833981800448 -156125203462436728505900139271946240 3711329444970444680500446654103552 8864968234693700756320737944403968 -879214468741875677576407167262523392 8757584349611044190999428598857728 8740890434105952369433393076633600 -88348449442269791042343296489750528 4923415070025797184109830155010048 7799879803060233604557913452445696 -879917710974141130719267891498188800 2600857048654249855772124659056640 2409694361232888689987494197854208 -536341604573198966840881754715193344 1100726638516287248887953586388992 1817893764725974538234957683228672 -362503606603351548764817892856299520 3690075052953985942550347180408832 9093367153442615660934020594663424 -984065244938282636303216778112139264 3894785608610019983903352353193984 4191099991111618406669926170361856 -307313332757166081675021839929180160 4521586267584830749942784395837440 7055904035648728902160382135631872 -921227783932122049069364032705658880 746455988379188357317262772797440 1415205415579520712954984534114304 -254052395391889544717701466187366400 171077071425255408756484944691200 9235290523508161263386380386435072 -962010571740589726339248577765703680 8840166468362343847293157187256320 3356905068919532730374822496829440 -521245040737972125661190028800294912 8123787344133968607737975811342336 2431995738930760021353180254175232 -207041875014020034314666932164362240 9834783367715628471800657159913472 136048851291763654504999620182016 -402653699717000016688668881283186688 6311609817731579814402315186601984 4877826100673041194392621682786304 -183451010106161197738601010597724160 801962277312975232591432268120064 4493414469793455621376517320212480 -81986977062462478727913062145196032 3378321166087160904860698798981120 2791569742853072228491891094585344 -792112272118077604861093467956183040 3061838770033805628580369384079360 9173851366467820989252309950136320 -909888912041335201041927582246764544 3067241975108746527129191533510656 275635082129952986487744656048128 -958764591340049390470195938297118720 4370837769641131858006043000832 4456226081761703691149804264488960 -232745461600874090849602434699886592 8800223221093834292654040919572480 4680588270870008357379802788790272 -727882225320118573025576453197004800 3087305163760230669285453918633984 4546765017990287860607365893062656 -23148206490330364427294756399218688 7562215556996041801102647392993280 1962442846076306430092401650434048 -158617868844722090598315846323404800 5374828706543550514988789270577152 6854344843167537886491193714409472 -609892034615419524291809786468499456 2288541348419125460332613736595456 7081880107372448666116027888697344 -664301965623620951545064367037874176 8199066826679101322556546954035200 3308390680856242238754119282065408 -202640023249708607118426936977653760 1576994488350161454943739259650048 1407467921899251895885943608967168 -223774984062350442347003320136105984 5368018574085036448762390542024704 2740976882992149129171256129617920 -844473791198357929474903649902657536 824208239184213377115969476886528 8200331846656725317937876573356032 -18885924854412800644021424985473024 5553303216679071009013308458008576 8292165245372720952129808257515520 -209387360746626938072943233983315968 8298021636586106379749684938801152 7078542098872039452702003517456384 -169047473672727766841378848634830848 7285397325913554151008405970485248 3793851306318257512970116927586304 -249870594571952839075513610763501568 3797163938705842627757721994133504 8639245767245569467022020943282176 -828036496930498280924163748730503168 4878130261283600115754866684461056 9678795796862306022728252753182720 -190323690266155678277981104706158592 4254740248431857152594195387514880 1666444504053363136736772323540992 -608800770665093010360564877686210560 5177477088611020640445047800594432 9730196091028802978678713916325888 -264148730992023524433532229045452800 7475120763587623097417141728575488 9110689481057342513866132567359488 -926823410215842958852050626690416640 2785261405851461080258086866780160 8926176880365711945693864824668160 -679537304146369654905530378635706368 8128705412232527080402056822915072 4835336147259740257732007529807872 -167961549771778877088467853688963072 712411902259947655189821302767616 9477312100334826162675273162555392 -500524947752233758239456712879767552 6742714360674513139277124167794688 7185998567926146049540149871640576 -453271271978889770796410949590843392 4964685728425373248003381269626880 6779699625928465231273361636589568 -21888536697858278575054317953220608 504294217220166505758754007416832 5268182748095286896951697344561152 -342837045098740324662021160693661696 6489347639978731011963446437609472 904048247391293594074132084948992 -414143953433607393926718266357579776 8999487801739044587027178129981440 6930696441909991761843678053662720 -300494378239883148813894915205365760 5375712722148278805926185248227328 9506733714890330323459821486997504 -209986819890492515873729036530221056 6597458460726788614233803362140160 649030089743607365924206623588352 -698326210137318640784563531423940608 3433964352031409074566234437058560 5348737121251101783710807198007296 -17228560917225823250905048729780224 5890679593219778375591170832072704 5379595535533566763904025573195776 -841643726027578848236301688393170944 5313974818702965726318209234108416 9601634247777099775987540031438848 -474565845988385363190492620522520576 8060607825408343592553767011090432 2580851134750534117234225235099648 -728921953813970001323647821508771840 8690530779626404652335574626074624 5522800280152516818466907256520704 -467717995037184300664148842963271680 1586873388378331777806002403934208 5329233920779312967101048290279424 -928991625395879954679254864172679168 4145356152191787628673754191626240 1570453389614626612221973073231872 -325794848121770850556915870110580736 9691864323009200167310118210240512 7573586519021238793161280250183680 -795164970082354899818087751253753856 803189878595869539626598008881152 987406890461706119660245824307200 -722374268570437441990442783411798016 4533278593702132444322888333393920 9901413847979249089590718290198528 -207389979901596660137532266077224960 4472702914678137425762052829347840 9900229388158018497640853728657408 -124143425842515150671164208297541632 7410641113414847393055365209784320 3124293390147023894675838419861504 -415604331162345923088576199769718784 3213597060521532743252500329529344 446137619121073811812277486092288 -618795061429622531630571318920871936 2504827809410149318171811962159104 9262709090098073439236982753460224 -560475980125497135136156274518917120 565940526494341427359255390846976 1690354447413680894412043493310464 -429811179964509097424364478612373504 5754247537789320676648503331520512 6282419205738239260159409620254720 -973694317220005764406297369067388928 4542535605590999449546241974730752 6422492530775109117683023336177664 -646404844471123215795745304210309120 5446291194608224300921212400304128 1688975421337347628935677799825408 -303206041803929906060308960283459584 907564155957261945640630865625088 1789659744599788542604171364270080 -261694777701350357624444709670748160 7612780604537659754264935314489344 6001595607962282768065380074127360 -323627900101295332520603115543592960 105740711355167286376930509586432 3972402282585503876064372393508864 -375545932637616432049513582781530112 4726271290519059052513012960198656 9936712986936343995244241745870848 -465581208460052871856906900573519872 5841070279482312944455331258302464 2127583569439628569860176389079040 -946739551683589718733185829813878784 6796266312314742181383226972438528 8005771683929409799965757287694336 -948021286804326326071083045606129664 6173237593630395601265171481231360 6217107030581335590567192769331200 -654996125591772893780452443563229184 959870805534388348226578715508736 5048735236119094775927561336651776 -328043729824009976823861474423209984 2838110843179147727654518337306624 7892623569776623506821123344957440 -839769803906717461047218334802640896 939987127220266852891559058210816 8594934500546130560584434852036608 -227283177784397068529734536398897152 4046595612344175314538845324705792 2734759541509443445067159057727488 -325624776717417503090011353160613888 9376813840611982101360732092235776 3969786262163453236153239319085056 -287783985418416039700594577605918720 2496143823036185928702988363235328 7882207859518984974358766698889216 -771444453754467462099631984454139904 2008680143503754098572494647590912 3667597895126661242991500941328384 -819182455623994014221028018368806912 5268136435240592426828744766783488 673383522274810513059941680414720 -914807931190148006032585557861728256 3223376057056982179542594553380864 4250835386935756338262439853293568 -444961346606527932006950109074948096 5778330561161217763540373944139776 4455828664505207061331376074653696 -140308912267881585615547724629803008 3845133150358476390464115406012416 3963016561735505601101527513038848 -19330359425374670608963546688520192 9435264464811445947095083730862080 8644023624145505034841588250968064 -465932013122529274625907457932656640 4932213662754904324486406294470656 1945420941155202861978953030041600 -507507608606630983330073740752977920 9203464641400991270444537697271808 5827919381804268834370177076297728 -873105466571791579682658418027397120 5150167388743050795036282200260608 5969051360526260408235265781399552 -872396706238494577474166526775918592 9609843027529504755519730806161408 1808099982444992052546966109814784 -349569423024966468272258557744775168 3288463703023261574972789332377600 3865698481417354600850216204632064 -70192017779564440990708052353089536 1601216035870590162201770503176192 9442094210778492744387290466353152 -313589913733113261483633050445152256 649364996178608042915867863810048 8957474907763610544372039664271360 -461423485423482043966728192997195776 795544279939063748149656231608320 9666819754078280334457917348511744 -702441879672380136853783960849743872 9634386812623095799819663755444224 2676743460117908993095342909030400 -569732844614609107921920074780246016 6137157303694132118797558787080192 7677622210494502103036571030650880 -500034215798570795589915468680396800 2507859385411530307758409973235712 4463346017767012661790358546415616 -721100789965737837597098404604805120 1798324842046316365339988651409408 7501993593503787360479855943614464 -806706680434962576062236846771404800 1384666656816194457866721210400768 9710701718700132117284942327578624 -572162468320189884897130667451613184 1736298587565199820477963343757312 6767720117003912094241002325278720 -538350211611201554772306012466577408 8940457948825347652769798334447616 5032543559718358424780103326105600 -549309266309433288578017559800971264 3986953098587780930451667876315136 9199502466767980254259853924499456 -893563317705556936651794358648963072 7765786074480086844251947076157440 4931865706775040666890877343367168 -297102273872544841831568369466212352 7932069074171341720607088571318272 6330664701269483776056481663680512 -774778833804546040710910451405291520 8157150584972662250052460778356736 1654467052100482381514705521868800 -265825102100038344379877824743342080 847223915813973848758494081056768 7294160474036494088017173163278336 -528767603075012271924860806978600960 6315326277782766782663007032836096 3226508231900280169380501119827968 -687834754571442766664312190245273600 2826414218881819501087630552989696 953329194082142561603693460848640 -220869913541181134653651863413456896 6220450393375311834823442965725184 4188573833316649135763927718690816 -635370737037177352131210341381046272 2593917385956544512132813139476480 9745176506908577144697534606737408 -958665847733972589932832849452335104 3949124512222845868702326392356864 9926701412903653497723512846024704 -298911669855508294359494102370746368 186257013356825475004929128005632 7498877390949051037887052501745664 -850375349257429930111670615011229696 9288336260239206854403592774746112 7025386003367082532234019263741952 -982088569801702080313888016001138688 6223591533052031614314085611470848 7600005089819151211231471785213952 -916179137898412627608345288445526016 543660972833244995881316326047744 8847400427332627464142892954550272 -790562588273171581538730664316108800 7863563783628105400943738974371840 7481148824039534459131451284652032 -682742462164604248121649267518472192 8609271763064706473818910953046016 4485748347362118444007404093833216 -131308757264477787934267028237451264 5880982570666191337994309035098112 6171744612054146599962820581785600 -634131416865430209974164483194486784 5426041399020317210421188431446016 4964624999746728555196727689216000 -294381112548035464155002430996611072 7645390328584631903646900916584448 6036805174383180511279986201591808 -452593549195483132699740354979561472 121232599740727487704780240846848 9400266262868885904174787080486912 -236275924457715319008389931261231104 5933362270833311712769653187018752 5079024002039247391933528975343616 -4446714091682938186112129015218176 968522793524034753830761034416128 7152435268400267937519298894888960 -273212384660392264757084229289902080 4520086765090664482131362743058432 4332036938408176314849477804425216 -241027203629575521567414700759580672 7133009725259846094984637254205440 8408534732326804777835905320747008 -186540692949285464492040437656190976 6346398730637937954892799300075520 1507854409022716497179073899921408 -25491012377962438229795736762974208 9448856776218238279681918139105280 657337297803033428186260641415168 -719303306740996433994437079404118016 3740924598447047194410535369048064 7459563859104830008256854069608448 -837846810862599801457697251490004992 3930176625724314124301898379952128 496575294748745894027710982782976 -70140460852900814196663027951992832 9585994850490908485021974612934656 2087384767826603747331882742710272 -285956019322959966075019157217214464 1672307003217331601062564437426176 8167832648754082908071369314926592 -64720665751068915775923893756231680 4871167801318690711556184531271680 8239548330286867615154548470972416 -520344564010087822404240227876995072 9050967363508718799135344443785216 9347361451156119865431670944432128 -223804928508998591875316959961677824 6242246328291480289939637250555904 5830896010201761644147194145538048 -247894906262740417975825311949914112 6042456379742270877260801583874048 17448955029896863893089421361152 -849924069475840614438301467420917760 9620849741963488283214090715791360 6306615090107372668291019700174848 -741101526089782822380953942175514624 4646312330230427159566350077132800 2673488546125543969660955359444992 -366015937786039151457706178410184704 1339529544263726262186438773702656 1429883076965180036109709246201856 -887796429688520506754931574760800256 675309470119709522385699084435456 1546719382992744151126595541663744 -265735352330452431680825519069200384 6307937191438839668839848718893056 8181141882139729831658263213506560 -951485370104705263328824358227410944 9405719403548029208843438411218944 9569298555638942559595037970137088 -207069302327046081192862029409419264 3199294696159884066638680194809856 5667329599094358391174675803668480 -17705750430557318288175367580549120 8160028209381989572991879781285888 462343849484278393572807258669056 -453061883963352737551997979588558848 4172608164344651958357239992942592 430402946606414733217959912669184 -958470439826974218235499471878225920 2893139733433602484255903109349376 7115050367652555300653213574758400 -397799636704141958252399822368669696 4999815801564856585732550402506752 3254833146191796298642219524423680 -406650513417076176678792283037892608 7409460130495580443315101425991680 4878271981400451919345314015739904 -321141255043490520450338193621909504 2062782935857767183338702007959552 4483099206425364647936890987610112 -414888035378355854471731575827464192 9866971388239347108396241944313856 9550315972086431587945426685263872 -176028308243440445567544028433481728 6887962990547930922988175706030080 418094125032518982621301802270720 -255313257503199690529037219262365696 8542508521256844738532172034473984 1132431815474971922372971898863616 -969993559671968768035807263411142656 7028340862983205310628990816354304 5486124626499652657324632016158720 -980890570560894097449369126135922688 7496033711384899020155522063007744 8799134587606923870180642668937216 -301570270256573675841711576610504704 5824685073021333442183067881963520 5922323627084269592685788054683648 -104334154616267403415036716449267712 6475715384682793475686032721575936 5579267651079196802131755825889280 -859241852625993550089753767205404672 7871773641016930183555553110786048 8401140560257320723459327823708160 -174289457037915559356895058127224832 5112604747591174675046611741048832 9242436753601318624819276140249088 -245461654380246231806650130576179200 1811217806032971968366192789291008 803562334155090402056790175907840 -149576594727033382143316264015101952 8528982621302290999086128058859520 9038463120669132065068670116691968 -984535577591084120832622785835565056 6178784040106056623684781210599424 9657901472476871464804049041227776 -241043193882820685386500437570486272 1932306056055445802893694461804544 4804882097932878367790758759497728 -689108464277811597190801489729159168 9304175048491090376801116064055296 2843905110358886053794316168462336 -443446103211707189466310719861424128 3266129485744334869888679597309952 9801794329398265484980078728183808 -337138675764262827948890542227587072 91649224778648445418001309630464 8711710655024406831012767479103488 -662092515393398444559985033089122304 428184090134916816089030171033600 8600675907773768240813634272362496 -794908406427435015366932788924121088 7540156334094919537467534149156864 7539326642866554998432307123060736 -9521724855518879520605324061966336 212747945500362916639312808247296 9682507875850356850200599326621696 -248075451664506781903477334133964800 3405885176897008439027776322797568 3284953096547865941850833048043520 -443259377068919362963292607960055808 1107545866237713962147425632124928 4864264155855883753153419232149504 -870885789540675562918832312095342592 1427317145703899283487042614329344 6202835851034969095138586860191744 -86251831497348977241094656817627136 742295702968063132476667097776128 4400644029754409527290459181809664 -804539101209648175313141668924882944 8146135831389303547561519936962560 6813728597822145438050242426568704 -243795426952378987877437987430072320 253819268189653851392022702718976 1281357253205517752385678413398016 -952285228177500477540110099447545856 1450430879114897449189383767851008 4524091662113178106774633047916544 -850357076037176015816299576207343616 9929775741974651383166258955419648 4667065152468223011155348411121664 -47226213975303956238159238054019072 1374158486615386778822334564270080 883550568134875955820086373122048 -721862447990655916853358106645626880 272924679879166684738572850823168 7314456441288166147854038311370752 -398502480373501556512005455173648384 1564244114908999113628059973976064 6292006495797854708122136191434752 -207269007950966674144865751545151488 5716148137006769881327790238728192 8578167733949790989265526729998336 -663036119390398255104092148925988864 6869013725560660128415834773127168 1636115108052110239172365111001088 -265863438478936898659900944036134912 9823054820208065935594438113886208 6281377267393243826675310005321728 -736146128571570238932413992755265536 1939850292900094046284891876753408 4295124109673934226485751712841728 -272056696708030785467592907442618368 3356978794940045586984502193815552 1585654767190925443676154527481856 -620297560584991323861671920921477120 239967065869177235947518431330304 6713102993813059092963202275737600 -976123668263543850305466391188209664 9330238374764368115198176494878720 7822817367949730718146812887171072 -374947735438233093600263041275920384 3731648907890930497102789809799168 4957802755637054543000714453450752 -752798480771997457012215830915579904 503624720620539997002480811507712 9444035675054851582455879682752512 -836925432450145388208878714078887936 2298388154814229769194267553562624 6734665163084758099679240179941376 -812017581350551088697044164155539456 8498874540052876758792618725343232 1570227790496610045817331350765568 -714183898323280531730312255858802688 7462451369375018436693779816644608 8416586149602038986841741538099200 -836185788693352084462858436790452224 135893421461596205171779987046400 9337631129955971609398651945746432 -807250583512420801855409056286507008 680613505440267158045681074044928 361140132786516093706097238474752 -900814799860531122832113238882123776 3696745625069106560165880298209280 1331628595417767227064324278190080 -5774196216215548804672837734367232 3290976183389231598727699210698752 7317002814296317596764717652639744 -207384117683261910419833527482712064 8080641114088735342883075973447680 810604390203202346638019672408064 -799800985700462030728060864603095040 6879021368282491896785127675527168 3125546929410034982915574654304256 -730168651330264151330177333917122560 6436228392143972367295204718280704 7627773526565469868149092133109760 -606264971258349691141063581380902912 9046055724287730983792759514595328 2165497416346880738892216772067328 -200130126369752463721326436709040128 7001389118519183836082007751786496 4822725547474571686893904442949632 -26343859848083341816884531757580288 3557286374700403724194583907663872 4804401768800819547236576645873664 -566384343680023147740888066418540544 1693096008456246496243112602501120 6443207687117058827173944564383744 -547796680824203590071099546664960000 7543966522067200353784747538776064 1814006229431885013133582892269568 -224050968935981748925987939726393344 4342224008584260833208075856904192 8032633860513846022771225934168064 -885069275799865767281823918271234048 4375384241812578590843900310585344 3356364156956372934340510325145600 -92203800634762559726253330315345920 130545061188757819508024229756928 9441157031316925501542891897487360 -281455962681574301568784821844443136 566858497705685468350165041545216 6078254719892594794087368053751808 -506191188743973567145092751428681728 6567031692532054339961440467681280 2664723227467706025460515754475520 -788535164680705436897723278658895872 5619284326568309801820339998556160 9461138631326183364011868714696704 -35229372072414759607716694030548992 1111714817078151363412665437257728 9797062889759009841544692987068416 -867746698091814863548435504604119040 8282715960640098150887059315752960 2296778691095438585820625726603264 -268482842649666550786675265771667456 5667327084661382528042351066087424 9863168760432257816438267420082176 -145786650368608886006683016087207936 8082737682767644848526630695469056 8655672899393278404192699236220928 -683413911586476618553009391555051520 5581993781625828792767471880765440 2894891836848466650404468847280128 -251958362826231284899700555263246336 5544844824766507663565705244049408 3023885734498625472195635988922368 -643074188443674276382884681855533056 8897761618358105937778743466524672 8645166737013562232972701434118144 -625081665399933177621017945886949376 8449061983869558410760612032282624 7335202865328507647131735191191552 -575865450859493952587299155945193472 2018278100708945921615130638942208 9526399239084202534967247061909504 -704111131832657095489787336528494592 3778770411264617984213798455607296 3630526208810866090795893606318080 -438981087239707481142833901658439680 2999599818683778760019929150259200 5924087737744309403464243917881344 -879218651902900860485535398132449280 6635494182459291506183549623468032 560752984077765625982655020400640 -968470908412258041260060305604476928 8438755871019788555739462388154368 5385082797585544243195779011837952 -472343328406400664990416605066297344 1325035677581604612682939115765760 3051079062734864025466018218377216 -758209924892079739862795190219571200 1554724306229011668744981968846848 6420189218173089877752175443050496 -846979238850329091598525036031377408 5125755600775251262995145926115328 9486457066399695453885896444608512 -90784665481683855516901825876852736 742514122603907915259783552172032 2200172582565299240225944387977216 -788992533032416012180789429480194048 952483016244304633293611781324800 8309175686445475836294304297385984 -14309246980565550964075793431396352 2503137744093410791757052819537920 7329800159156427628279111348125696 -540266045222275942370012167025983488 2284673219425796374175400297758720 6875599744848297156349582186119168 -924356271952567137418010793168863232 1167627822686710116243093403467776 610191941048603111242696293875712 -116083914979462266342450105746980864 4822482728008743675185515078877184 9874065039314046994673477212962816 -45554889554567253837357007056666624 8536690987138947710937238054371328 1652891952299029627588299968217088 -608642515403114023688138075989344256 6775992853687600041749277000597504 7846405706277638999768418589081600 -538277374976859304541996883365593088 7594806428900520412663856031072256 7347988379471103209274461518823424 -671465226630323200633801082824294400 1922458033885408078536282837352448 1838469987004468809549393030021120 -833416101464735589337728879308046336 7520891017867551655429148820635648 2745156972253319621577496013570048 -976011233771016332517628467270909952 1703941508932894532721642582310912 2559467625462219484595872897957888 -472229161486029127998197184388399104 5231508365472761884502009841713152 7656816491519660406090587269234688 -451885474817563747061474847574982656 2132527586279741458328285524000768 1155758115325389122047826513100800 -239803221196305990078687512295899136 9289262422552294430555751030194176 5162979706637792397575877480677376 -824285049817125687724347555668033536 8528463200239266169828744334671872 5212678824694519305532301704691712 -855699141783522079577357650709446656 8154394370218253793180583259537408 9470698855471542101724025061376 -921284552712488113956217146543439872 8940082860613312238206994010341376 1344194239314105108752472448434176 -281450958774413367951981474318647296 2362365819188593910173691417722880 3670065031211754046597678973845504 -381308051684236812416715991126376448 7878085336700665996768294545129472 7096835836383769699746266493222912 -945879699821627890724204523089297408 7043075994114757340484129525858304 4908343498965723772429858024456192 -233340176004519634846964939833212928 1560647320759023927549964771655680 524121392913999595854057044967424 -93584342552396792963756407434248192 1823398787470177705675557024301056 6773193827555755085067077562662912 -262455030550745879653201237399044096 3646178517503403795587836734865408 4580074362682016434693162103996416 -657937732283551774396857774749253632 8570868745068425735429523465306112 2828249645535382912526174971232256 -372846270777489018288358220724436992 4628382910983368537683812035854336 4801321881280893903744292733583360 -341993280876002991196686456882987008 5134052996699690485099904253296640 8195241836095024674800676169056256 -744997859615926388155590118884769792 9383284932773476596192571952201728 6734985061148400503147577093390336 -195604470223705549258678466066251776 1966503310877820232847201755201536 2152051462478432399095486805442560 -362854998920418072287690940651405312 2788104798377141609259239294894080 7075869396249626802687467933663232 -870999955081043224277788382852022272 3574710816336091903138546875105280 7837594461552955076503744316178432 -735355600493065527070723892163117056 9798550925352416725183955837386752 1624288250457368263597925796413440 -854024251911497184260455686280839168 2945465691010327289583828828422144 5246200154039698154675108554211328 -486223578525128629521947814763954176 462603068019857050277988295245824 7665669643460611789351352786747392 -95060444467420521559652531001360384 8440656206312181909097771448664064 3206227770318625547885803651203072 -838913559521612383472777264726278144 626889434809237076051245332955136 9228735661408103982384996461576192 -321323324621623669968247930421772288 8604151307530886997081879803330560 3128925159680823311703790795620352 -318207459689650674658883451037417472 961792119010207742073330217254912 8647236061345286440089995779768320 -913239431865846037540205798426148864 6251308683333111249192814595014656 6925775087250978580590130569936896 -194587920861417810937101063322337280 7696975792890996324349174590996480 2777249696025694696942255118221312 -996583003088370840437804369625219072 6685920943740270183106408169340928 3138338749553745702765712155607040 -60237657805816690469655641417842688 1049695884874335728165404649979904 6836819022853428945075162111279104 -597399605458085434158119930667466752 7876916324241635256819056904241152 9371969707345913158436311789469696 -582524827755085306364317425633067008 3143350501079429924888942410203136 5768528595487517884433850756497408 -190014975290222797089895749989171200 7923553048350869391112402106318848 9314968832668899208862701644152832 -38304045504451111786894433621901312 5988806876328492041729827938500608 3346437728298575590550665250734080 -93822003772099601697884885970059264 8652354005498541618609036868976640 1499670936313876648337414069157888 -226398349647526178719144275320242176 1654951225003675817847973931384832 381501659532248920790661842599936 -691148425077996223629927432029470720 2297736966960269405232249549357056 1660969993746337136818447703867392 -260820890370438864277962526262558720 1593529607633933975619787401723904 3572864797711035367306155358420992 -390553695500391571911150279617150976 5219424100717195580508797981949952 2085782334690029209454096060252160 -502083849025409243558161127389003776 4838332031453836149047002608435200 5815840423795888168325227153981440 -138278308596867584996103391199363072 9677656229965474317046390225633280 2619988079001091546972386542747648 -565624528803771095269852429649182720 4745662399068682863651105582088192 8348971645834980854977125003821056 -472780816240744311478335503683551232 3984471387017342969708839950090240 7765238630837571282417978066337792 -516682896111576064027676313720455168 109393558373152042920350807228416 2943846180321071729432226439364608 -261096922629394443195902540325584896 4736278954763768395924230335627264 6687656331815006913476093926178816 -764652348876166145649824078820802560 1212611304574112986467717861081088 628568502896172516514274060795904 -555891205831634392578021784735973376 4679126619956585831049941940699136 7259029409196115579488790592356352 -994776689188103772357985910669705216 125575359674470147345327453110272 2127867306025029216548511792758784 -807386183641409812528709803723194368 1494649903840382035682438722617344 4217185112189767688458062318796800 -533364579044249038759072463362981888 3248592256837284707102782253957120 7000935479576046295234443143544832 -203286946179977368882993317097242624 7881673787796530007896413848993792 5707557414987769981769896628846592 -159428994365926502060165096389214208 7187206343836114775779173489180672 1457591125878519138325489055170560 -664221408747172553063812743064190976 6842095070931225505018037112143872 8047941485973126443734442732158976 -477986338580982139209314889971531776 5124087961199933336412116685422592 2413425108126748116180261238996992 -928751038964299042645529998571601920 7535660377830338337847467124457472 1510182248831797393810068808400896 -765043488717281331935229902990606336 1458342095952948117332420821254144 7629791421636825206658315482824704 -191793816482015470157875506321555456 3527732796907628506492083822919680 9903531563660215129609796830887936 -436301436242757386894739886716223488 5196659101518364200609301475098624 3729444820298700253257612006522880 -504241454021688252310663338341171200 6375084969776969078050337352318976 4124529154181200355916662278455296 -981175430575108143130166429308944384 2564838979448598047507467582046208 9949461234336576716195997071441920 -863959392627864283670505376016498688 9975192380472217518490066498879488 1135972484635266302573977098256384 -122669752115416340845856794251100160 7065924770961177288007916898484224 8228145853362160073714217521250304 -805131482196016976282944779291983872 2971106670614150722719368666415104 6766644441021516529974422318088192 -309518201263457292613300819643596800 7135714780926093813477309438492672 9312125676582897210783628661882880 -799462281652564331365280585753821184 3397329784316749483442867372294144 7380025490970505684474676247527424 -736189005884158967886389791023955968 319181847173505330452403849265152 2121717952533836467292751483895808 -739792353225861949540566217323970560 2966516324811808295979298223816704 8027843434501445010047378829344768 -227704050450803297103778784395395072 5354240225162150505212890750910464 1381300013270205124494771827507200 -518404926352757564522227488778092544 7820559233862367751779317077508096 6231800034923206140927177744449536 -706335079895428051970146071375511552 3985950081750918648387987199492096 2065353605894114879199048517025792 -490151349849008480231644612437999616 8436802821622831356268050798084096 7486320022641766285456812405686272 -186199217045772174043902877240393728 5843289582653676420076459446501376 9387472973644297861792666914652160 -472238056411860065619736013364527104 6571979216954249193261978070548480 6148541573226747837136093084385280 -170768652342494829551256026140901376 7855039978069027527590751154208768 3784390966048013535030938546733056 -999493082571520615485125219011526656 9822516378183914480555830682845184 9136947326039342974047611000979456 -22106574272323321973636433375657984 9432699121440959677289974640672768 3023009272954262117024295701970944 -732038616641886459673761099664064512 2205956621590300968323284444643328 5854251867729391996109161179906048 -387175571081332443134642034084675584 8827251120075822160505627708751872 7033860284685095054021402659127296 -447922154150442532105340933573181440 5611384595101481357442913874739200 77294474792466728329063994228736 -724986729694947454999693877638594560 7047292611723336816244966465470464 5364514447086005007230981208276992 -431400184095414722882555462455132160 3267950539619703208727371958976512 1999130043408216165949351613431808 -726539924400862651306274667733450752 9402438766492347783623883037343744 1382673252166957594223890921422848 -144040872981845933333003404016877568 1646102801076353743225430661398528 9061873440711645257726087430930432 -590320394553727522839841992203042816 2683008542094629359710585296519168 6140745727162293695672827353497600 -839768042498793676857784976136994816 9603950149410264572385285478809600 9514438557726853219338633261088768 -29042992029362659857225704588443648 5439767809018536635758089745727488 5914790266197172956352600313167872 -295853556696194136020530328168824832 130988161967597146344072434155520 4223464657536819094190217293201408 -134905835079722049196666593011040256 1180608994534673895741222710935552 9799590768336597402162445361872896 -209001924552504990659313779259473920 7215872955652758491979964345221120 9756495639071706136423705492848640 -410810075157365361721636712825749504 828373542699851684815440466411520 3192249414911549014682056951595008 -891816590751528037769622927783755776 7958273079865984056230904867061760 8875375009349819702705525178236928 -526945387867197076331533854595612672 6192859721608447530367923817283584 1841441396194497500677112497963008 -753798893424796510085159593055354880 6945201146160524661322502866206720 2261075834985555022469932261572608 -946198334885929847558368797497753600 3807584730032427919458351823454208 4400451845898592810769569999224832 -109180699043413875863725259869913088 8650189702134063373383746392686592 167939129321054969322895606546432 -817491284431436424613701887239127040 3148735529442394728885410232008704 2950441086059646028305758840422400 -127537222617588182546239486286626816 8883639530356474758923509984919552 7405660460768924755062205381083136 -205018431851116972566835920726130688 1963657437651693440020510805065728 4221326029689274704934626146648064 -169524034901487440835429045242953728 2479228124556507416415537463296000 2513317336987412241436468825817088 -47241884181182322662944673227603968 1193472394739290478463071633276928 1766990303167272141808729105367040 -581153945234198758594510645968764928 2641448941716040900527331152494592 7963383067752975974397935664234496 -458352051875351939876119904423772160 7525396397875074245071645175709696 1099133380473323545845655045931008 -528048615796145052972162552992628736 2192278641330466615274613361344512 4834053490914555851795302602244096 -347113759386509484610083916812910592 8097031403222857914951414642114560 777755099518329024212601873104896 -571921534851038795857967270141624320 3854703264564247915259714332524544 5177464828059904259313070487109632 -634389404550729945598442183870906368 6376147886305387957949494043082752 2279744743592430869139313290903552 -460809164239580132044243210254417920 8803551483476104140989917321756672 6552184854817968811954563903913984 -864386418579892607966146055402160128 9786074694330881071481776104275968 5435462470831935733781199354593280 -488434305879874901019814836314308608 8945770334909042533064879175106560 2319505715837072165776357278613504 -544715565654588651388368036458135552 7313972398814462271864414457036800 4394362631591049061028709040914432 -851310203709774528456779896459362304 4786594037089914856026697157836800 2557511722390821629670391761862656 -50111291878281060664811956555743232 841894254127061069386895289483264 9955258206290802144931263159468032 -940963857686419424413849607752122368 9602494210502336997043223543152640 2150652251869033837085387153997824 -20154571618394284690428392550432768 5458202535961192915854182120947712 702382608976587426742531820355584 -280331339109047211788200250454310912 7707916777408085867225082182500352 716968392205048812188926644060160 -542349618200431252762184562719588352 1954619358115381729135828458799104 191342854719777674966144663945216 -166025599021652629115231315758678016 5167091998248958888753914907197440 8971206942227603977858527858262016 -454095424366551165705968983235100672 1303877095033201532786288996909056 7179388435846996560835567180316672 -589798561409740787038705458220105728 7544512578063738135478533472911360 8285894434524237664339236180983808 -372971770166707092544410714441252864 4642479782533569399444070496993280 1954222321541906137091806548983808 -712991131331295621432001587897696256 2789926007257291242471220727250944 3996053076479500575876064166805504 -854911584296760618497992145770643456 7331623702889479807990107780153344 1322560792438022570228654356299776 -996082862015006324717896476959703040 7618036133341549585858684973481984 3840003364726263631596802436759552 -659233006779676006925027729263820800 705701215832850705983183114993664 6573979996083781423032444284567552 -667391843993252487711180966550568960 6202213477806658420772913633296384 6653384703169305194358107340275712 -109039457977473743402690006870917120 8879340949527469077917017489539072 4983398432401553830906046248386560 -305687411062662699138014990361952256 1249968610971735159697766925467648 5767501387632649478920442409385984 -6436660081619774453075737294405632 2424540468261048447455752829796352 2866663972375230752260849817092096 -911806252803535558041810531679993856 8235793085261863356179889264787456 2382965587890681140409943608786944 -762147535638654145842810815346900992 2401872099808336192047641050218496 9916744049684104297257710664024064 -363402513759420865871818963462127616 5993300965962909504929360607444992 1909051664745960903236898068103168 -418516042012544691618326837177876480 9380422677343863453619324171845632 1304872748151206948012919833493504 -470640563732856347279048857603801088 8673451616823797768487532304007168 5128759981580026098659130316161024 -288738616567324605384931965581393920 7338897028619551780312322943221760 4758416877295948644545714366447616 -232003426611321774473700840872869888 5595417928323767032329847963648000 2666773371176909825265142109044736 -273347718417485471226753947579449344 1622597101399386804274873937952768 122825992869794877559142912884736 -409426830704823729398680228384997376 6790028701811658940517757069819904 8287547867087579735525536217169920 -758097829462036221031252119515037696 2838903008254382676864256301858816 4716301198525647743307725179715584 -565886251246794473195194648098766848 5549401024620724469883405214941184 6096682209045260983644454022807552 -443752361934443810244965562394345472 4402102733348842713813350669615104 5426304441408352605128253182574592 -803236092366443880912342965087633408 5223268795401943808151298821324800 3310563338036271311141476348461056 -314493167676368842976338913626423296 3843515002739908317574932335689728 8041486350838130603429261880590336 -849556695185551701280576865893875712 9400325533228091773740044081168384 4484789222591522876826498768044032 -292923133417270556715466969894092800 4204259841257444884873409810399232 5935664643937432544257168260464640 -868163782325026290610049298951307264 8468272074611801607232418591277056 3063076633203965844734402963177472 -476593376771533752617160227004874752 4157177890328442199696859652423680 82666072927548964106337838432256 -956427513489865948538191273900638208 4365583689964348283459896795463680 9352075364938628294087598147633152 -715476820691947508037739137162280960 9046715321212649349265554797494272 2811646449272161259807045465407488 -74142932354909465714828710208602112 8309639134471188003866483577847808 3116875182064311552458308502683648 -405288762138769621398835833606242304 6459993193740879547676129253916672 5507521705758566347404371591954432 -539396897111569570589710240052150272 6019900376436346204771317945729024 7135807979264211053288190350721024 -528975959942800691939972912349446144 2230018586948077429803999687606272 5888881493220595737468206407745536 -536909505378220819943280343527718912 6795442902512203083638399666487296 6311887527645309281276613716082688 -139253499912790700756208845580140544 1592012947756388930077699445096448 3681504625978865688223608905662464 -583742713643147215726763195274100736 2959961646948436818769379250405376 2914295053996839995519345906155520 -91593925918838302085834457189711872 520342980700209890757711616802816 4106131374658117048105643123146752 -255491522088092674633488873350496256 6608184659118980530189997566853120 6783967752628110466407991714250752 -6995191337436994950923059936100352 3777968937613868480837207751393280 6051085716312254633789127577829376 -412901056610282446666548084352221184 9206459366679760401704425434906624 1128002659054674838086155704991744 -277343377989216904320710218790993920 7952545698466051451285818197409792 6426997543913462751368667235090432 -90873309423057404963559127950295040 8628576690044576167672543224791040 9199555352743585294483244053430272 -899754850101889291138425890965291008 1247769937585090455280176242622464 4316248847126535544738339346186240 -842011009992167033922626433711079424 351190027275634789498910006050816 1642204176512111712738583305519104 -445140172770615693218720534868525056 1505109585994985038484421316968448 6014456915858497744463022417510400 -459764704195674639833570656185745408 4491893821745446344163847506493440 6271231657733562650972485509447680 -385966370792556441772604402069143552 8431064185186526452273616408018944 4454225250429178157787971252649984 -733124167124933601574470813778706432 3845881134724773366738384079290368 1796733048427615480058884499963904 -530859050726603614514108016929800192 1386671408698138491707147224612864 2250082031957917908601950061985792 -251328910470389557172334958173224960 8256502696968737101208450362245120 4780840099138953817358159369469952 -719650487061634642801613330337234944 4722993743577497390130358881615872 3845623073656308305402004915617792 -487505206455182918287208514892857344 5987283746131821246335087034761216 6395200249305488314956648001044480 -222042813671160464547714386668552192 5049793453865789144837047812358144 2897266353328998255279429505777664 -526764397736944977473673404207857664 2643554154301385439899169759166464 8465177387532491120755059657277440 -55546664565478428186671776519946240 2300458923651538988353147744813056 7386270532657502973178135359520768 -773821381729757803916693186430369792 6862924379219426184317884874883072 2234258195217785788114318519173120 -37528740913463047262551311348924416 904055236531955291154018440577024 8517775140466288331162984338423808 -334463000286732583993896825507545088 3508083223479442693030846113251328 2757341915681500104818114722529280 -512096471130611028352116969915285504 5946478451538698213425263249719296 1019339172404225413957445188845568 -739996305795917952087396196481499136 6198805123490738014309318941212672 282227491906017000010977887911936 -190048450383128502589594258758434816 1200522984183023972766292092387328 9363399630373696772182656711393280 -122308939333681843643040511448580096 250418148611313483762574536212480 9007427793365389621557719025582080 -775856924592431699126856628423360512 6397368457801335227133294788214784 8461792989399103264288199850065920 -180226136127111883138946897090183168 660647206945668456669757248110592 5157589150506015564079314180767744 -970592820529319140689948456565866496 4976800197056767367516189215424512 5207050626862822621754361322143744 -234832544060034403444824287574228992 1680906877358852100130874513686528 8562283692009166213236332125224960 -796825110320105091812259567862022144 641009881858947792709169526603776 6139849790247913239464446567383040 -837793485467733916348266374496256000 2163628109260786485410883874848768 9850351449008295009184629416525824 -777903200924395479556939624220721152 6961048696538682771139725914800128 3620767799014381428546992548610048 -586924600053981947054927033644613632 1662009376216801614639065716490240 2836212547992158497688594858115072 -621078367631773697137237442609283072 3614300274346990001206327817273344 679369488221357766648300742639616 -584889304708346857250680236117327872 593220332496045037188686515535872 2040878266253344286294750682677248 -745441584771446266111999943049740288 8629354876838486858031380022951936 7258832924107859036484525975666688 -758042959190746707104698438755811328 2702410262534421795119124346568704 2299196172509974171674545565466624 -111354652835734221625309986652422144 7827207674983564751517868953174016 6478991040418903414613397901148160 -762931076350558850927781729353596928 6252014487258521646788543988629504 8751263686041470987994350284177408 -794483062757919129392049281013121024 4135693275586325635038510562934784 8028607012077481520423531821662208 -399418516281506637048731672202182656 6081064344100759463756597764816896 4086265225253156350077049742819328 -717883164975301064334325639502888960 9190536125349767986110447126315008 9616225908777277779583053909196800 -737272073589001977393816274691162112 471975281863689583890873616171008 5320157060925795587969425342464000 -80143349346086726467346166991290368 7727350192327461015727124456144896 9337279862840363526796645068963840 -386161302230981931223032263883096064 2540098374681899884421937331437568 688525397708836278263437294829568 -420243606754543584844787368673148928 7457621622700994630574132332331008 4785522855733882499081723084537856 -93101253240109325975668853846310912 9247135740447362197448185381650432 267216296469270938623999458934784 -30216487163563472829826292986675200 7952799099141934088097468575121408 5345171407510421018713688018780160 -454737958949260603970303542515728384 9649000850214112376339499262672896 7012533584974216968151248888922112 -83889943453489189730839711480545280 2054958156947825527969932535398400 7421634580253431279515937278001152 -537736308775454028294195593319809024 9473180555979466425491335493451776 5182594655133670669559659562532864 -555718005569132658257031923052314624 7132445629241637206096750359609344 4847355980756456465695214760099840 -767627949909540475123552161793835008 1377672743467994511576275099844608 1578487296451163728205963595874304 -262532358278382286791261097037922304 3649897378424339560447592657584128 348365434689454782957523895844864 -367934598613140244611655341048856576 8235130276950574109264442134888448 5441456250249619139340962518532096 -878203775468035285441379253931212800 2464828288252004107760311719690240 4244695187015296848800243213402112 -980055713988958034741901335182966784 4311790598199357020899387050557440 3004090191924141332251942311690240 -482033713955654623548798332062138368 2013115315834283142806821251579904 69255952057314818043355739455488 -303248867125987209701509728797982720 3279950877827723933473177843269632 514607153444378984771855230959616 -425265221278125321298756439210196992 3682482407893831643064724766064640 4934669770930076656266748715073536 -275472307619513912211993770514710528 6844971189474732611822095647637504 673384696608188403678978395602944 -63183020260311933326062209437007872 9021708504113096832027327144656896 6027984935749158262674697150791680 -518796088739129032635279484955656192 1204428330768132864400751729836032 3385086273587584737540501946761216 -851768593388947399342947349594898432 8689620354766402864132517496094720 3362445814151137301097219398565888 -862729970464425719660338882965143552 102499609877906223726410705403904 3343990333099096683973742772092928 -252197912894984419051744629197111296 2807998651038806629723033999245312 8945718944037816903843254215114752 -581339703099539738314227712729808896 8814039185157785446763022069530624 2978169230518116535703537220321280 -488932483423725359745457068322062336 5803617621077939891530557749723136 1995772614793192702391355155939328 -718221451750112137366250116542889984 2778268055818767917980819906363392 1270063993005659724109593171722240 -325267972735453325578028950860333056 7172511517358051469899787975786496 6630936046905656030734693060050944 -30046708206501466903919297864663040 3695058154016040499418791883571200 2064199627829945726222016352092160 -453219619816382165484145919274254336 4612376722441083986264225354874880 3778721060498798207766815987204096 -326248305669562522339245593125191680 6643213821802783644907835618230272 7705032768615156562022291700973568 -984155264304967446079015661198114816 37865682685462223679822934048768 8888382420030223545725780662157312 -661187080923933013946208926574837760 2057903815446834518368504986468352 2584981211629218607051505382981632 -145330583066682269590802222215593984 546095465783617443579229894606848 3665324424187913926242304195035136 -914009124965158137597001328165388288 5248054491143576149040464515825664 9375525071659604189172589580517376 -867327141190038223993917980408807424 8179097914002152493908531932561408 8862470338970313466749243508129792 -510805277354713372525765366963503104 2306421898936958944659093749497856 63181148917108497583265909047296 -155723220185758294276775780454236160 4637938239443607589542265916227584 9690996603672433593838869139161088 -743097637785375624533185343233458176 120770502576051719878881029652480 7876202392178914640153506584985600 -90580342558669769989957043059949568 1784809587714460273010425016090624 3677239727531854693033143024222208 -754167555109507959932194149195841536 8131701158288105035845275180072960 9518553343852320650233148398895104 -474325455853443768991588722638061568 5225000130893573573067559546126336 3437635392627634419070627508912128 -350806220848012269339829651476840448 8477466571022561685680324865949696 636097091275672610302995709558784 -537965189930158666890446396805087232 9860001629124214427177411825106944 4283172537393350648514081584054272 -883614251470930499997824039669202944 6214556615751511063807656053440512 6711603408435783216550219196923904 -336696838222465793147943301228265472 9964400016224704270283431462567936 4796717563302054959668008906129408 -854235995424371310457675015929200640 4811134825713931939538867108970496 7638177436785709083328471432691712 -358151921625546322925561836629655552 5783019768156592948245101304348672 8667052468539966959915485871734784 -364281497008134049353000436080050176 661865155754969777136665620381696 4873233364762389623265577855352832 -830038357668533186590649188479926272 7107825046483881858320835427696640 9451314052621962345833678327775232 -31355340351543796971394263834165248 5590378054469215651762444827623424 2608810478217502888695835398242304 -941647341627365749612779084800065536 5401008861909861585694384541663232 3348924336701273930279549105340416 -614480334645396922262646395970256896 7424318625451937747878784918355968 2606703623076037181055649080934400 -590517963506623145149429991983808512 4984630453136726941655250994462720 7837525937873641250659592960999424 -25975375589570572245869411260432384 4845137065977138944612111197667328 9590428211446683561257862915162112 -681023990939887687970093057364197376 3538899041301270976372392935292928 7932886636882277767024418010169344 -722808235273873438465526607915253760 9782151871039604542017068911820800 4800586811373356059132241054269440 -444343488646481171262395450463879168 2968305234455317086548330389962752 171663625469203601910794683416576 -555306492182032555282962733789609984 9912397538019575000119938547449856 2020857190577688965355335904657408 -814477665381590438334963417102680064 3726314089960988140152419740811264 180207858105851567053605911396352 -980832910189004115998768513140391936 7723008138504352032307580470558720 6547116787961094417988545113227264 -529156276088096788719915180266356736 9796773961593849816302919933231104 3424733928977887153859594775691264 -963572605706989293359524535733321728 4690437699156488430853106526322688 7486630648914835298979417472106496 -676941650041488597331952117429043200 7586791759546109782972431662579712 491896845491083699438299914436608 -500877523337983924943416718572650496 2162074466626939963645749008269312 3227856943589971558870225501814784 -372343830482006357136929395461586944 4963008064850681468197839294169088 9013466835629054740099680570441728 -844786095245903090637113856119275520 5295750693268405301645297846321152 5409485412063935015566752287293440 -859235048975739087403034465529757696 9154879821586667835797615755132928 6232845437960514345277521001447424 -676727281739114302477019259504427008 4359115586563401391500320829341696 1059476442531009816750996588593152 -261587646303034520980745159188676608 5294332057887781155254575501934592 6853285136421293001016134458146816 -555498742090543107332456875407966208 2183323154346928379141291763564544 1661553270387067874170883348103168 -420927859916289835299622812978774016 7575774287374415066602606409285632 7470475640604226212841401471729664 -627022481880999704199464479176523776 2847021658259912604380542986616832 2645107216753462395610365429809152 -935070877570755265769895794573312000 6706499792566753282651400953659392 8409924783260644932611138887090176 -662740421620895947353891003011432448 7441704736522700264286101925003264 8764554257626132154459116917489664 -610402594486045831171210371686989824 559458698118013967412221001596928 5663761070068379633649180810936320 -874433683866642253173123085454278656 7085051326600334154066933695119360 7392204619591402073024069164335104 -980867550145348477710304530791399424 6021571063080025861803638018539520 5781352266719791804612344178278400 -106430160066530087504359569510891520 9619542787141896699426828328108032 3142767307321808507907692040290304 -784481543704833983799002875360706560 8466820869822329064430633622700032 3438595742330401267024432342237184 -914441938759993541213503047891681280 990537576305450278283253865512960 8924428972329085744489408357203968 -523997792286088750276906532539990016 4407016233095165371140277566177280 7443943165061176972871187415695360 -828312129086284609090835881801023488 8111279453969581338953651910082560 2988954103669695498104564841709568 -478567228992358713291297323021762560 8800009560151733250021896354791424 1197254538609202266585834884956160 -484123184422370597646368921276645376 8043842248563433907108953433571328 1048724323024964333976556163563520 -508517898102486282142490340779622400 3748219614576000644176578833547264 9240969533477528688227786797613056 -923881042743546447398722950966280192 3216049443145408571793291570315264 7630504200889044498940437028929536 -417723159351511162576087846504890368 111665380650952557571137670742016 6350860246206896263905371041562624 -900318554715979733036552461406437376 918617808077663420111730893651968 3981841801281305471284098698838016 -388171857313520786893772577921040384 7867019238344250685896921580568576 7584198832586973998780069690998784 -389380309241813005100589886954536960 1820194941973838607024818885754880 483211210456172264877569278476288 -798152824926311238272175031657168896 652403986497639289493378507472896 9555076958641461307916586458284032 -252078788842903729487771047263469568 47766799643079868957954005794816 9793398609572794741689546308583424 -46154830687020764472871919164588032 9567612975791328222303238454509568 6838746674614682165035220709933056 -979796571100245997575378479272165376 5963026631128774736011556514955264 2819693463961379447139602723241984 -420881441992481263652365941080064000 7855387151159972687517047679090688 1782341100768331718176313255657472 -660418049694479037231421556208435200 4843883285773823082640180575731712 6726608497370160450752701211344896 -50934585794509146908841270055010304 308894380706666643224938275667968 8260013022510485528350202596950016 -530154805411860668419859346211471360 1588686340139892850735784799502336 84433826255774894903647547686912 -726406038294473152483451884489670656 5755895442583849565413203282755584 8783989654343094992933508620484608 -376228110778895418057324393295511552 8259072771405263379874987921899520 6825781978614752843175795743522816 -442089384050509247472577537179123712 2074583876995269376289742998470656 7202315531641453743801695211618304 -256171537498534602343477860697636864 3633837479575976090373850405011456 6441902307230543545154169487753216 -822447158418221668948218467904913408 2802148156067599651039411968147456 7906156425139310641076960143343616 -435489057217352975160106777200033792 8440891008151512897512256657424384 8505143203337551986486213913608192 -354999933351103264793763152817815552 6417411649208850865000870540476416 3184922171667624678662534955270144 -341195457033433809379113231938748416 3921439131595432774063915257561088 5424216421543114770964302266368000 -390983149945281042177588698915274752 2618225363696056450710365162962944 2508660042440832290619734339092480 -54574309355476564037930846827577344 245045290207330319360122142326784 223297359852556899440454033997824 -749868080343265907119661758592057344 9030412596793629549507983095889920 5894800301610929226195484641591296 -300454509099659065813587899759722496 2229762503020586994821062436323328 7997670039354888632490806361456640 -531559862315872698607038657032355840 2380513630443793871780178644959232 1449492965914991429740151831527424 -637635249535057285488707802467663872 3752357896370279525993562765262848 1095041152122969647328532191248384 -251642871800119424548314789244305408 9419436690655629373553961471049728 3694194094213724755547797218918400 -712428917003349705408767742552571904 6274432368621813888188950052339712 4894185636273697022010331729231872 -635698271937453220932572488828715008 3852675789140971852414713562398720 3594023123901082110561117488021504 -742791819490853923591592766271913984 4647650973426776020775437120569344 5668441590111565211002527643860992 -977478030082205150065147689109028864 5502058766758288068223196280651776 620111601587365437734864705028096 -989183946395627999143993687945510912 2114256939178513060936578215444480 6338573781305164018701999458484224 -709569326648885098964996026959659008 6360820239026849892741331462127616 229758860900688675852619549245440 -190641958972834269152176223662637056 4501478417792013188821691905605632 6995513294981532998744425696854016 -944342305827661248496233808362733568 2813050547556582335526059345182720 3993993814536293461367728591863808 -688254584745133887612502692230856704 6372226548961251533057529560956928 1250413260662146718247683893493760 -725801038664579448491578919655309312 1305890768702814223808235206344704 9982789577018343121889826072166400 -42844115897104872946912328964636672 9322726730455648206655667472171008 3346989612916249260522854649167872 -425989079807947786434139950663335936 2442704399256553274725806481866752 3168939538706172969054539880595456 -556851930910419609874549777281056768 2287504458858759558832772140236800 1889021717881430747615390114775040 -40051446443436160320936636634365952 1778870068260497597339611477049344 5243339998627512832226378381262848 -135568018307996975680163025170464768 7141310779270523774636878936932352 9688956427102997856507233507999744 -881067093519945410548400393851764736 3816782207494707513480765977395200 5130694307815767236831034598227968 -165292340262023267645067114705846272 7881397798665419407194621546070016 5891280721144872496991769819348992 -882686174448768498194861487510519808 4456653409750729482703515051622400 1917197609697470816470000604282880 -286043343969564569535337009413881856 9146697834824970397371707848392704 7849474071641399814122089920593920 -207198808831094630560693055249186816 2563084333973053566361093307105280 6356092612478612848305213540401152 -284279973172454899421888833510178816 6433965094104553609548626602754048 1362282479357774189093890081947648 -296455017704743515696064386857697280 9816826673441268822842416417472512 8095630639045275246558840335892480 -65122189424155920508798843446362112 5666590034560457339241018190462976 536717874675128436432581490114560 -543857206068646793844245327475900416 7293025718036400434883965854154752 4793166552423798211927977953853440 -557277763933737825639046702864269312 8154120903229144837065862495076352 1812627864972219414951075225010176 -775133381504768896858697857035665408 778727960025743442498769593040896 4461918984076871319022454221832192 -571460741824008812245079592854880256 4709541472946493375722998594535424 506715566981128009075840430112768 -677757311891175716899285158126944256 6964269117632432176836003686776832 2656008309584402920690822028460032 -844901983859024865091996984895602688 9602817187918660087597123363667968 5445130469947898714494744576131072 -534140150312069019395105184490192896 3360247836113688998589144502370304 4481355307926093720866524426665984 -644536329730471886600284612992172032 9709419392439173773701712053272576 9587109137971875188423147720278016 -18583441984577203021289934867660800 1339593548741387452522348893175808 1298863355605105049710159200256000 -34713654183816472720694510377500672 6615470268371257101356628657045504 1502052931680690226522744248336384 -619236204431083169837777847117152256 88277925340702570043467892785152 117733876185841447000107579867136 -680913604782559968623701314496364544 7521414124644519105869123548086272 7034845480917711698198995379683328 -897309766431783582259026540003065856 1695495032225160799177107126091776 2027808819079013996402252229640192 -133726411471421913261689684671594496 6807234624062127784308460973195264 4582898620683343847840582467584000 -852403055171965157391800072285454336 9966989745611321543081071562719232 9051696971664291440808102025232384 -538919534151791033855330225301225472 4429979867998471766133845648211968 5874568906809035610253230914666496 -465193304972704470624479377516134400 7994638490981212094769692149809152 8002539892631862988746812114862080 -829337393188197282378205691782365184 3354659832424664960707279028486144 1292969088235684146579077198774272 -606514271499164190844616503831035904 6629604354460826924255739019001856 1154981775242960759510213630885888 -522556532448999969792027981678379008 6962322285248656243720267883347968 786717239453475874133587770998784 -856386064199825462634097730861924352 7226208570924336054321772631162880 4625494568673682755204383258968064 -63369346604866468800232401949163520 2586069851220953888735829898035200 5747383202226695706507943113392128 -117934087339411175498081986943123456 5209489685113016365513738773594112 6228913910850784273499168629063680 -769021289886774174359282152271511552 1746800413375746796585483566579712 2734818874833082270435873547878400 -248660550076976861447290547291029504 5990122206488510298338824479047680 1559716322973907717741011389120512 -702726247428107542086934145433337856 1718015643127911283659772463677440 6722173038001160206018372748443648 -255221423823251616839701362705956864 1110312976868350534760228685086720 4493503053681172060234317404569600 -456493731265115994781626021435146240 6979418283059441912630624808599552 7587176798031649325045962057449472 -514763601174951998863839911399653376 9038362555559743799433019321745408 2944473574706308348607802340540416 -610019755786284537837667553323778048 3232022052107487004639526213648384 4778579892661868347422758206963712 -565884417758155206907932558084800512 1645170300477832629190341460754432 694983099479800708831557378375680 -525517195991742646314164866672230400 343610949133666036985301129232384 9179275414640081845562508648120320 -783333694690486875283928442812235776 2736392907759558044028884100317184 7825943998157952167061607019446272 -975279861710301925812294927719071744 9590934398728161119329388773507072 2328892219575990379560315343863808 -999181198557069831920297514446618624 3137200855893152046823144270331904 3538485026924488193848757549268992 -900182560003836568316667611051982848 5979515839763750534689854377164800 5359179428053112335066129231773696 -297649688725820221233310855648509952 8331020732635372819099562320855040 5066063338703751841493938924945408 -246146084968191250159539360645513216 4403721174110707711104590318403584 5532019065882448227100862353244160 -326264591130106585275042777656197120 5392086977477622009302495870844928 1943216528135358466477703483621376 -308027042856957479788874146988949504 6997946946735167560991715132178432 6177393382810956840655528761753600 -389812082228873477711686535821131776 5062357267916907913090296340021248 28663982217240077739826889097216 -642935360080681439458185197391970304 676605966607700683647092684488704 9056467586117621548626746196099072 -635095748955876504057250537193603072 2474511859054831065146449849221120 3325846654257703749120540387835904 -148377127440401204732502896313106432 8468831000573131574912553825861632 5239429113512152402994920649916416 -334769850338875131204279443369492480 6489343771632304085693963322785792 7825028780871676607055227556724736 -276022584654105794637934131568181248 9448649416776629610711583626887168 5564899265105571317732454755729408 -570427648299431784822307130661928960 9025660840587618415181774456881152 2212495225811537177171582133469184 -29307018749323703116196845491060736 2625531040865761416345391783215104 5190036314391227517023790580105216 -989910362704637756100134922287579136 1506693160884239738178644012433408 6570595379981178739928085613772800 -609977548318640774357630246467928064 8996839761409797658827222392242176 1513885749930257420041547512020992 -399075845604083762575181127706738688 7687555675839339798611692907134976 3830495990072640448807332915183616 -877726908762078087728047932267560960 3067729387026015296770595589455872 2193862420375082330406524186263552 -327355191830571137124504324563533824 6774292317671621527159054373224448 8944019322944445928357848347049984 -472616372888112472235760926997872640 7111030466915294952896051663601664 1654398468509148029472559809429504 -976569873597519814090822922694295552 855794232278281627885255964753920 8985198070902508989016875546443776 -209537116420477564666530012774531072 4745612113461575436536688597270528 3583230067356787484123815162675200 -509968949672009376612940326163709952 8581939821691999814757247340249088 7164464020632238643676306277924864 -767848214625408117292222220481855488 8335373941745480558004627948175360 9501630320042926781112836784390144 -28941483772625274081848718614593536 3409150008878560362718874778468352 8394426705489608042893886734991360 -306590088246681978362149655277469696 3375545646385568204234563453452288 7589876976784313317350682249920512 -884688214458201425892741058786230272 3106832544488590568818868232388608 7492723777666974995830954382065664 -426062443361130542527747214106689536 4111495576790026405763751352467456 7359489415132318151196568560074752 -515373322534614039437924858379370496 5889241643734730102556415898943488 9320565200934910843814962882674688 -598449466126858386948534283091836928 3725777399399571279835760861118464 8933239219248051367126199837917184 -177981990724810533149929114890665984 691989421157331328646208401965056 4594984543257096062202843064434688 -368980743699566000196588061272834048 6845474481640215286599523550363648 8030187714821829842766471326859264 -427726530138221041190896351546703872 2299883764386679682549570789703680 9802623383585254090751092243562496 -62139382952417876220703602894700544 1613523098272724816045792882065408 9267865464565631282621009702682624 -378837855103264764145383049495838720 8966259227463896732173342129258496 7121178251766491234634722212577280 -944173080779643321735575951604973568 5170366390663753731061182239866880 3236093243966597132211477792423936 -467346771593534227094567049611968512 6614380330121480813187617970454528 208991392660076975656658251284480 -593433634391264343652212797433970688 7647982814948729582631376071426048 8995490389707643271282350492745728 -657634309361799975115173615707881472 5978460704422150723623274699292672 6515781592121997608394968119902208 -681173510601925376215112923033370624 3089903633750243801539364698193920 9081405750556581610578068230897664 -52434549876206818316461235006078976 9234579839616755574688364323930112 9278217104328764392260040214446080 -618564570987929212583649544874491904 2225914864069260704055550762024960 5454067970560971230847726910439424 -852134051230110706473522276155260928 9553273069858497816493683353059328 8798836432145160282972766978703360 -200172538558734435890068126406017024 1318217125290696351498186237411328 734501474884440731095113775710208 -753592601757189405825754033349984256 1308302389211898423511993326501888 3664559980839847580213100440190976 -276732092882691017034128612864819200 1431984999937655996134737489952768 9406473290261330069725640302526464 -399280402388775212883423078943555584 8280334571634545065646876474212352 9363592423643186411254156363825152 -49886138116085658191369325877657600 578037093242580285879511997743104 2489751344570228533571999338856448 -133507698531996909141577705164111872 7950145881046778998470500555948032 7228156566880049505268514078851072 -534391674019470081606589843943456768 7134691835914522571521582792966144 2360644288122925708363137848180736 -373508246059222403402361763553869824 2615171687380868436487356689678336 4524597838633217165555572821458944 -140176917000418262628976031040536576 7209677849569964185857086717952000 5492195647228955801090121690775552 -320540928843232789396905083990441984 1898975126819033001217317685690368 1674152156070360030624162101854208 -744825907032673570010164266409132032 9680081940870896028929658363838464 5319849817910143261685778149801984 -216744924746923397591899498470178816 370307097811617871687890329665536 66140584594491611762242713812992 -891636349751891290873780679192084480 2167356616550490377627970901639168 9766234967995045087845269245001728 -352458857375156173307464348759752704 1270059082359546975075607267770368 5522260743625685084150925631684608 -841520610505905177517689355443896320 6611520285220105227750290747293696 8267994884568155129273456934256640 -269232096877620222281561056961626112 2221474312869874912561986879356928 9790956860361966265382630575833088 -627906170299435823468342157458276352 2562856536692435982051176131592192 8070132974568044545309636258955264 -119990731553173505163515102645714944 1600013390180145322192033762246656 742790495470452415687009494892544 -120162061676805833088142668986318848 1327611026481000166734851903324160 5419160604475921717604188524904448 -131597691564094834925756624528211968 9713895540197095633330910821089280 1314123791676222665606786573139968 -622689619587545180346523768103895040 7759804864174872342360977529896960 1235171398852290169640081780899840 -841357739790031823276453322861576192 5715318597730772189447756089131008 4531613735679585216804457904340992 -811086813443384243384693453060308992 8595305138625771442883757846036480 8452191547582917982355950156120064 -204056616124161101646606088236171264 1109525521336279172291499323817984 8832241439009189578654222578089984 -884156857333679945262463027091865600 8236970029411868792985630351032320 196363795152923624792115258589184 -207595898151302016544736544951369728 5176540761107629710284265411837952 122687212362907749213625728892928 -188947499740914696379305792058163200 5291211558757218646258056446345216 1881246507706522542409597367353344 -553146159650518433784763642604945408 6315125764686690684779319623942144 3054933787523814424306471877476352 -213628811078167573519497791111430144 9000781346251432336056378321797120 1806245697544108802924857704579072 -344646801004503844459951096248401920 5530637933683863723440933546491904 7437780708217929106846599161577472 -744936049973233372830761822281793536 7754934869706969638240364984795136 7477701013975892958765146416611328 -526104598841409925261414497205092352 7994494712288490157659269441257472 4395072805818157100122197622521856 -548145597872957075897661226020241408 7516289169827724511113083554365440 5022988829910352643260169223929856 -29237057326204239545461599891357696 1630564650434893020374844938649600 6670135319345223306772878257553408 -499410285523512502232292764214624256 70347726257138168327536709206016 2577461007745385068974292649115648 -62913488324549032963526780082192384 5654096406663454253123638789144576 96127064243272473402241020067840 -660891287613650740285251702577168384 2978129137729016626232852016529408 9480649918493727595390667835047936 -603123174964186720244123066739720192 9609829769172668920838366093639680 6927271548781606247780930744745984 -572420762557754608206303075617472512 9520428946178091850361682536693760 6587209241941763242752848882040832 -998587949439241229264792777465528320 3817103263025463152029934574108672 5174107493089429191877597692166144 -257195938828742865947639645403611136 1482003561649134832303681835106304 5958972754866221625114806804545536 -219753306798062820300031994860929024 1268539379914263559590581903556608 8004521874874306549202222839758848 -994863500715905445696018410324885504 6738162971717036691351088629022720 2898553616415558833635973067177984 -438393789285910664510605146655293440 1308739380435956565615676022063104 2671087170637460302961919666421760 -380957855216147484458822099521241088 9301210870986227493462229041283072 6422724024531107246005365296332800 -784328743978520748691999419646607360 4186374300262801760747221751431168 2869274702916360842107490213560320 -704474046929998445504231439876489216 4786923220757981290106438983614464 9250705890506587430503865129107456 -944342098956187484687003754529030144 7469893312618632325670192650649600 3000906753586694267469839904800768 -251853506419837577961284859248771072 5424236484803930678274542582890496 1867026322930311093131349598404608 -585655754088677415588103719296696320 7459998920734295205131434892197888 2816929228528062402059486372036608 -616576945225103090077965732452237312 1874769766503966917084544539557888 7208419611525228586627680268451840 -381793166016336337892270117199282176 7609644140671573962208515056467968 3229557309183118369099170063581184 -527067217984324466607541348798038016 506227857263948963183096127029248 671935719213220379394328229838848 -974885049371892409271406344483635200 5752207583845713982494778687750144 9486255271511839402176025999704064 -899925530775697509423443982875099136 4707845096972024033908535395876864 6236777304311710938759875092545536 -187089549323377258689945051959656448 1786027062196192447810779597504512 9224340038469847310479665213210624 -831081949580978877115620115934609408 6924355949915083718971132152381440 1320805559071683029803970236252160 -931511541740060317971842497073119232 9329771802892007738403814310412288 2220609439498524077781189008556032 -466238151464417938982496999917486080 5385315614574874823802075507326976 9666089373795228847328018032492544 -263886195168078931105979754872832000 6075467518373441176948166629523456 9572171577963506197272773552766976 -996194594152370087121324648255455232 9023732039068277741595630975844352 3486361060681954385983267451961344 -933208596621141069330530334761025536 8348617050717359800720357121327104 12237553127752511033678443315200 -649901748969636466662642856010711040 2534441647658825518686090404298752 6468742899270296693290562175893504 -82524751084494357047936849612374016 2570680152030438390206683049623552 6287127243353230984103721774874624 -334272010477504648227716124976873472 4595838407188991570594266664140800 7948719644059409676341263240003584 -66921603363256779046787196169224192 2542198214503214553358097985830912 4559622432964786770779265971519488 -193659713798381461148992709549096960 7633265786803282768695300418699264 3762474516324868549962866114953216 -637665908917162410743930066435047424 5047011529861916656227932444819456 9050986623961938403056743790673920 -975052877379734141171240798609473536 1999735919265614519404019874529280 2394192858762877714657118093574144 -368191009986865468195810328214241280 1369596593226138437571040111493120 9103605112534654516825215230541824 -992002043447774581069232168782266368 6897734775316894663052055241818112 8017831433687567624445188481482752 -91065729552812004988296813392953344 2327806911038678769753958056460288 7499734274321607571857173106393088 -645128178582921090841385956819337216 9742093876225021735684088705056768 2582515771751454953200822123495424 -594486366596444406551554264433426432 2009128085859447674881001641738240 6442902214034605952818331112177664 -668773391593112168230688144710696960 3057424738600506818358759575781376 4587775005639673393435492755701760 -698149833936280179322836781572816896 5802486827068818966715971852566528 892557275566807540353002561863680 -954549124810842610474315150874640384 1048556373232910764486688583450624 3346209642375286171727301831557120 -241273364742342825346871864045076480 7231236578724640138123892433616896 3100615577584079622126370417541120 -753174119553410436607352485982502912 9727590453766271095874456142217216 5048299055411659006897842563317760 -314979225285587556915182833057660928 9846039471683937863468004700848128 1012381908675688019585543975206912 -261184629583795617264704295605895168 3451288314493231890772699622932480 6473382166004855831795800534417408 -891597202447143155938329415884210176 9172500498057084539079595434967040 1920717421946594165898391962255360 -280124196640157238550918572011421696 6244872888482029597731746018754560 3409539658762089717291903627558912 -396007934422188550952187967255347200 3143348107918705756823120527753216 9664297541408020433369027959586816 -443593334851916704178343680657063936 2473335315506523607143595131273216 9950324133619365930689568465485824 -605587680623135530738614396033957888 6188654446575960720033894327386112 5645789617676188216624388849532928 -827188529456551265042789343426510848 9083676880537599215774314499407872 7930570098207738190283963658928128 -225225370697071767050102742685057024 9211368328753965854547402058366976 1967584867684345853674680479645696 -576916150374711342067452748811468800 8178081520588615976393575275429888 3963046011954317122527057839915008 -863457605007408954159010089415999488 4469607303518978364368597767159808 5622967007540538376233256918974464 -606261019198994177086938040217108480 4910952960080714482906226613026816 9836790523519735749458243444801536 -141900557138460547486478836961378304 7443691156687885179818627630628864 2661215374917376927768050634063872 -583705223620583897685545999077998592 6656497068057732048613126902382592 6772977946928177178869989982076928 -170688571469423639668927742733189120 3445018806959407284771739662286848 5101292659824115851785730581856256 -489831990959354835594753533892624384 4944310574849433771288056467292160 1398158945062213689906823620984832 -609565262035924645301894625701658624 5618752727837277047111035780071424 5922194391592573856075743164891136 -535668051760652021377863195765506048 7304602668723491097813510193676288 7836286017731809517386395327397888 -327287093341366101772904100433756160 2552363178260664593795973946277888 4775400542244261651948449101250560 -693985771747606599222393855734185984 7417948442297912256927009695858688 2764817568934813419706414121615360 -172916419601019016932030315761762304 1780356395280936486149725236494336 6763180525031422245762104849072128 -295066610324086910573083186209751040 6399375817760803808458945354268672 7612786907486364499979516417933312 -702622381989093264896555635708002304 3352294753500926539441925372510208 4813123592941676613982040287608832 -580486801039139667221304581082316800 9491019575307442441589856086786048 7623949093192069957048703503040512 -804504643894581229643205300205912064 6791080303391686436321452441468928 74511579162365397809795453419520 -717430809420646540572250637812629504 8369387736449170195931252085751808 4906404923700537840748202016374784 -262879877661504310087291464088289280 3542442086756024580870638833500160 293886372081001963036382353948672 -638218581019588410351427584046137344 9216023368278336690866329866993664 5251292606912704704555162961707008 -684986830693488646194668291898736640 9959312636711618121726151134019584 6568986186434595686783309448216576 -833229862525614943332168135696449536 2562949256046372741958852646273024 9874508043395924234773642958864384 -760776164534097206025069971015467008 753195036627242560804487964917760 6285213321223972620729127761084416 -724501091813887112818952313981894656 7515617197184262352191982063845376 9417808835308061716208562647072768 -521457131593352619170568773130256384 2576733900208937073307434436526080 940458490070688917666848676249600 -640919893261881926923286917152768000 6274635070723251697548890455670784 3293364357380084645034139899133952 -675900656843147399776747672748163072 6786484409901855903743934887624704 3405275902364140970733528131043328 -924370363391799449289611771671216128 6594412154235281461367642538377216 4908154193359639157162306751692800 -827044493379867081969493681712922624 6522516480328540909724176973037568 7046103434649918585481603410034688 -206136829447434067021065416014299136 1120411960455377851137464043831296 8435457040385866524544535730585600 -801905767075711331842447637789802496 4626581972571808833285974485106688 5036433948686888893565923814801408 -320793371902493103971698899387678720 4860112830621569416074473257304064 2480047945342065295166512864165888 -137486655209838095840643402975674368 6952639555642567387957536000835584 9788962315111880389851609407946752 -704722854912326526121066128251813888 9385295422684418822412083990102016 1135293180557265656991345539022848 -389867961407591291985686907662106624 8253474840413825161577091901161472 567130431201273503458931511394304 -21019628273780194264258764683083776 2974508192398388045840484713627648 2163071705441459603469700937285632 -929413939117906998188455359934365696 493677442760596827434016393134080 9198080853388249310130462984765440 -853798682866090839853796084663975936 9364538296161769850043118634663936 6621516543924286067627481666420736 -366484809597971474958277203298615296 3336980280091915507452002451849216 5282542163130663426644326857310208 -290213065950046842070295110492356608 1733919596376983102231381446492160 9938764903631159964812741124816896 -66175147515926589067855478518710272 9301385685594278635360016989683712 7023770852218085537828837674450944 -968746679819332654424636036661379072 3654513726619443519787709830791168 5472634240220523936260780741099520 -11174554919294416925981556416184320 8887161253729725331683789571620864 7966719005467864759409379825942528 -419825136055990408896759257811124224 7445978837691023375643402079043584 6245293597251977527726083328180224 -386113837064574945412964631227400192 588722253242948160019633459429376 6199419948763509188580615045251072 -357647651371563494199266615494705152 1421059367534016122201984164954112 9583007554947841029547305033793536 -482020735084393831884884866163015680 4285601253925582168849621358477312 1268950631208740356140515591192576 -560651839372657598817409979228618752 6812591784850381420719375669788672 543568623400890702399865968656384 -228098261494844342236626355681755136 8409366353149762550330610371526656 3877731195640300917629606516752384 -503546899843780120554063978924343296 8529125887278302568756184002592768 7954363247811749101976040616493056 -814664375574204875722026044276867072 1162049738591073612631383220420608 9176693176349397705648971356045312 -2918072867574920965972325342117888 5573336483836584607839940643913728 1260406972649036053005603744776192 -445500465533528509322233221648220160 7728144767429682338582692045520896 7526700073845236901724187892121600 -692465317574150937894792180646543360 1358097444113761579024562148868096 4709506488854043236204189614866432 -807461968177562546109166650233192448 8389936059024625199057920931659776 6560600289505550787343817069559808 -955028016391935196603141601691172864 4970195267318817486037887169331200 5850783719576114547506347423825920 -804442407623711091583256404347060224 8961212973882359891725988852137984 4995517791760383470193983858147328 -263142648887389498043457232856678400 9207925456964138384546429224878080 6015570489519806647513108369637376 -143662103497085036049279952810409984 1244372918136240968013908323336192 890232923421131379295579881340928 -736278164629275144460435204341760000 4328559157699984838319519830114304 6378061116137865519554173071261696 -238986115835926310148951669867544576 8294218981151314653538859677122560 1085274658683141567570489825558528 -50335768125381085646779604977844224 5915556052697251289767624057028608 9474844253482488276553847258742784 -944649297730840201055832842155589632 6984564932931735083674666744676352 7944583043210393472796816144596992 -234949976169576004870543165033021440 411783959789889643196418468347904 6609305969473138674093031321239552 -977803868129799140850036825114279936 9577683594504985134218483297419264 7498646977881883124637163973509120 -229701532356628711441605903297544192 4616559215624417722487625509502976 3830398995509767392037944229363712 -77938263538163671446122274450571264 831751048389540543427845698879488 5184942143788015971728573836820480 -254240729281402655803377759088017408 9590996803695457156171928583536640 9707881289207873713124778778296320 -370228686440037505418875766019457024 5857760687405322512958562160869376 8199192549932101742484879707209728 -719861564564639313904939630201929728 2967536661745856719832057227771904 8367711213475327139783524837490688 -809428282797559069721866079662243840 9964954889602923813745627844575232 2594313195993648765851243460427776 -686823309711915314033507668571717632 2198379647966384765534833320394752 9257503392492399983041080983552000 -494110344124064231296170529717747712 1943648496598290606218791423574016 4102514779710508879952178768248832 -379903290597395693024808419779936256 3666590635365179603089747106332672 2746615731103158829527593583116288 -293434949857040491846249744315711488 6626212825995845996425436471492608 7244110182508702017204118842507264 -706389237686331819088203618090745856 278906353750512985927014709985280 2548938888441125990151406235942912 -718395193806559933765998540671156224 2740180915587333503792084127055872 6955774332458563336687483944435712 -639781332521192888982484247004577792 4694365652667290575929357505658880 6352553768506924950265764694196224 -694853919696102786446072123127496704 4304898325992761915237385346482176 6940271661760000915216066223800320 -587068149231934918576557325526499328 8337905800784508586450848441171968 6240299291752345358998846379655168 -608889317990618760995971045051596800 780318193971432768113087459885056 7323805778034096505162732211798016 -50684029434163657971669600191905792 2520443766282935756102866971918336 303468043779669487039546954612736 -236855343293128470704473676365955072 9069044905726695487617034180624384 6759180695264001280926920841625600 -990480410755518841351917582476640256 8985710119089437356777810820071424 2354678729335270632758602593468416 -102615927988322174253936200472592384 3294108296872296402084464217292800 1526099851882165737049539475406848 -624100806926987092375349487267217408 2601353663292831894501867594448896 3514615403479722172867683691790336 -197300224825134168811395857552244736 4504169958743066430148302174420992 672492316426470065712989363765248 -555583734699875175439872009531555840 5668394362334262048853253699928064 9212081375125979406301045375107072 -920647341619110972862677019455913984 3779434211276800672546202113277952 9432146409440401716894189729349632 -556518987410189290787562909761273856 7130118652152172850822214626312192 789336356094472577244429163692032 -417304497266461864499826696503951360 9479713331579568763673862779961344 2758588777417612286392422899908608 -202097782364578467713053017990234112 2126217995114055961055286666461184 8326243135146206882218274589769728 -235954230465845234338836699246755840 9243905244755445404260344006705152 4754240369342731283835570373001216 -252872507125178528559657435275460608 1735199148794196239974383558328320 2103780455748261448839819536891904 -865924787286129211199942030975303680 9732761738304025248637217973207040 5070075955552850195567140075995136 -752295759534449588854928283956936704 6350009496964412540610869404368896 3409383809859759179748133304270848 -89621052245358720563847715100819456 2117195969301203730425250123350016 8403817257155022752585747680722944 -199493529760909210524327221940715520 9454921844001742851648919120642048 1678920426513548285514768814440448 -546251942766040077349985433224740864 6127949033157411967470577144299520 9216828472387621641076800885882880 -751259263414613539921069407597494272 9992304068189706429534056055046144 9444514587309027536990950536511488 -972149445125632836191754405323735040 5613066146941277292776795205009408 7499436151144159482521055670566912 -333167948917191473336704408011931648 2754633840574591937207497836724224 532244801613274848788384453754880 -317859926346231260239185683192741888 2923288850022425454456260536565760 5693176865159987789045100433113088 -293488862441300713381106494293934080 8399647704609936480842387296354304 6054998903996202688108594357862400 -324793150834556938274212558361591808 176579386342559692514499238035456 6839902634476438719754226152505344 -920384701974363676333622431540314112 9050513405242793695224891267088384 7103834318084202002609352898248704 -797819518438337205489841558024880128 9500270664930624874181906449563648 984362588738876892091506105516032 -840954669395322018603463555336372224 2603818489100310138643785170550784 6704059050318883566322895078555648 -967059152288666263266224098605268992 4890058081537014753240875423236096 3814525369012975141605126269042688 -330103047897536462937810345287221248 20697018020116248118322723291136 5616083121433811324987336969682944 -767736187441004643965438714334674944 1664723329095425103362108973645824 7426934909941369929425600479494144 -714921659216234335751315112146763776 4975282065045933722758160068902912 9656279924734620463870634230808576 -494513316217986540152806403832020992 7510415628939983493143902004707328 4178291105624876959428577794719744 -23743025019714640523869613289635840 4967285099524144431617940350042112 5182271476614399569634287048196096 -570130866476841384118701505311145984 4767888118099034234190290025971712 2792860558015683158508611576004608 -199116934672470961744709575690420224 5814031889882406994478296289247232 6227944697668169525239522028158976 -888291146211757699582093326494466048 1121718906119732146108337034887168 7653171177039165910589458215862272 -382951303787070668220762556171550720 4237297846605194757221853601726464 3905385245604888690217032207040512 -967092762332589770712073369500516352 9626613637896980383769605982650368 3948338740688451631724230061588480 -911773813768521698371488963538976768 2989987210819157952693828640047104 1886471405853394788098527975178240 -81888259066585486539702069658386432 9668858320375910401392963523444736 519617626230696979711058264457216 -900990972864911257227583745601568768 7823466848834923433062750033543168 6073233257585499999054339671851008 -600714599094483199916167494281199616 8282933859850206640659874128592896 4089362402190151253887465050603520 -342681795714313758750766027495178240 5428977452592115471836595856867328 7818780122539996241565818105626624 -165139932808469074335884503857233920 3779883157543039138075775074304000 6329073119515170264128564745994240 -474469990013565399908590247540162560 7871249425923430083790274213969920 1051516269424011482946620639674368 -94418257532153493340245679698608128 3998187763858949235394206070996992 4076069409817062332182521190547456 -127512079186379014342634570923376640 4024526026202211523055713020542976 1595857149643104307769065911353344 -679481646714231013082267899054260224 2372837281461919000999795118571520 2057998969403049097721279489769472 -233965628000873263515503984302358528 6599209139554744132908511039324160 4855821613511420890135406753873920 -967054624850078064322373677163216896 3632515987658180859454127249293312 7983686578303576776553279631917056 -419212504359556061046211310092550144 2906451395316701215155464125284352 1303450158488634413606442119462912 -807563354978384022658146799921922048 7106926799291886842648194185166848 7004119530379578423942243000778752 -796092200748181296447362906124713984 9888726759091260667362917276975104 2935912998255315795924202540761088 -486554591776195028971009277134110720 6801780943038569372103582926503936 4784880181356866167352463651241984 -36864755487023099924623384580718592 7854062909973723408325988572987392 5935797446923228466054626761768960 -195017657018504241483636820225818624 899395320093999143380069805719552 8033425543552487486011544065540096 -19910884089000169416541230898085888 9224171256638292784067592706850816 2437816129775512728081032277917696 -918485625687198970264334899733331968 9563720945870872895806872364253184 4797800922326096394986408080572416 -988974841167355722186684964754423808 9756553412722334555047138305245184 3995577877566970253237187357179904 -555469104501096320263199563140038656 9458497144199170353114246591545344 5662504844501348029402318419001344 -531056658479864729139137082227163136 2864657478187789700745240799870976 4626471738122562493198297062178816 -609975096975587672761299515442462720 6955404615406357735007665491279872 651933383565045198831873488322560 -484078808703874605376849718341009408 1516976712906484640023254772219904 5514879909743733755221434989281280 -553770391262762845322806306877210624 1117504588027326712908541404905472 6993673656083464228634993534959616 -757483300636528976492739204124508160 4188375090153771913347521746829312 6022077922739609874689984139624448 -72689484337548396876302292055228416 7964451674764014536085976008097792 125085319760999528902248567406592 -702411582973082534987187420022177792 3019102807291181644428381582786560 7605325676161827419907348892745728 -414959782744530920883232593294655488 1913002472227586655274001420517376 235282821722909040616866265956352 -470000609619266377971838540750782464 6729436166256609291234939399831552 6618432623739928382097619748388864 -361687189798097605756621252219371520 9454296128957569141423564126158848 3037614572994297281305956723982336 -269652133312913206040885763283877888 8479688118454694047126416737173504 1908125342771479545553295528427520 -132757918765206404502472318747934720 5018992636706294866773553312694272 4553877731467669176966605581582336 -627815484617945146931000477101326336 1483272364037660833443708493889536 916460082490707799799468954484736 -996371489602098845342997852410871808 5932303122901943909733144318705664 1064514488144540988514687556517888 -572721749926366916518445516786237440 6109627689085939376640604246114304 2565271104520510386253032067170304 -439171622355487100109004789946253312 6787654483131039053046017417019392 9720921120397171823236743293829120 -402191601965370748146086478602043392 7531490610368452263145456374120448 5070876386903912723257723384233984 -46481784992985226453987028327464960 9234775351474582380560252995108864 6733946894452868864361964584828928 -503119069865921003473501546424041472 4429886576015804689048560314875904 3594092303092238456257824453296128 -868047093826085202696081877147582464 1711249516298890710619033595543552 4245162489573583572593975633117184 -192497591618332347090652907844927488 3478679738089533810365440532152320 5116346020439682416685057562378240 -592854668099164027422589488417734656 4374978813034411526324751140126720 9981117309178771447845033724608512 -717841621832587058943078603727831040 3314968509042136091814588279947264 5875415628043702084511318973349888 -244507859622710541852246166172860416 702517534950900683413639225409536 5870223985497635330713944317755392 -159205795083090739802979769637666816 4141206957655015687347263542132736 6470627693555945545520610625454080 -922199699628717250706556092682338304 1085149544843815511344648300789760 8920933234482332192906158545043456 -580231275127051362498117465502908416 9520661625028906800939211524407296 2073810732881161341091604892483584 -370358626472282076072798224272850944 1153735817668019203017204962426880 3507185083745847002376777750282240 -57327482781886894171346492819767296 8260634761749832987287501597048832 605440008314932386925333731868672 -748784124881974122493651763205242880 7821243508498502249054681201377280 7065342774508024141085962995236864 -967009899334004365141818127190851584 7941483625065041824536524134285312 3400850095468731983185200126361600 -806814187241056047869961319760265216 5213065519550032385922109785767936 165576807374796629985203834585088 -40654929101917927772570644759183360 8096981275672945652967630618755072 2050239369304147243883397231149056 -661811531217813025296623374482538496 5087886910859780098327542367256576 2179341119004265295835125239513088 -600091829398175708520478574630666240 6397858491609979761386348764725248 937767569294747242296623037939712 -767620985537809278511778146748989440 170787710374081222292923907833856 1653738354210907097631618699886592 -443332045937089310645604747202002944 7601782191716233750141275197145088 6821843095495192550706268786917376 -704507831335177000635815798234939392 2790184315526873334020265421570048 9322513976727130074595097472663552 -636598042009903396433824143527378944 6181871757963383651147426559950848 4369654821911440478907239382384640 -346363964279417916128232590486274048 3073785947437400119255011961077760 1335434049271594163762765307576320 -658658076887421641483609780799930368 966574398414836128479468496879616 4631553918346864058208145243111424 -636550065409633472654479096385896448 8630203949792322696054509251067904 9315599532085057123216086116859904 -647258380496369847081001264141565952 6313985315151565784942893984645120 3857992359841466774824069892145152 -209823248344136247101223223932485632 6057545218696534244834723726622720 4228163500139522754040185065832448 -707139077723676246523157111696785408 2893806307289529513737406474354688 6881887903421667290799826416959488 -870460684947915818996000351739445248 4127085145930416345010317379502080 4153794302711675851612835312304128 -21625373504150068495405905478680576 5975256805274604796406894105198592 3125886517760497172683363950002176 -255382041787522600855185503083823104 1631434885808835514531110828638208 5803995151601280059914711470178304 -494718967790860012730123212843646976 3187349526577380507327674158415872 1748991693967619539630026469146624 -405656719783377840217286762936926208 6164380722242976032740294868860928 8802001891821167697659653074714624 -562820125398083055648591778565586944 9425502395480511031706680570150912 4922546979163249167523573414232064 -374610558166450263285565147567882240 8635542072753184618800430981316608 6696112361246961242946565279055872 -601984541227973703072305311163351040 1515232967963782923503782382796800 9905753841778270379290745116819456 -215158363679048247119757652250329088 1221237379158932615514717291544576 2654358367736879167605061959286784 -113463690672469096547489843624542208 1282383377319144954373050954940416 4876949052686096016686871056744448 -829634144185508737750395404303728640 797492377248351520788856218583040 8003516690554962436547222855221248 -984849364864495020149123970158821376 5390390372772499918020700027224064 3219762073239312429631698641092608 -342976672737680389580268351592071168 4529703591304614930878524957917184 102013838912559357434196695973888 -575840099176807144941200836827021312 7869873720140082567362041966755840 8964004920281405887774548721401856 -85952587291675355318767039130107904 2874018684040380072655057317789696 4043025333303673181422668224659456 -804586528345821385188518704554442752 2236525667112565512223833735561216 5209725876202526632772979897925632 -351692756877595488830677512081113088 9621313693548673817640623516155904 35697885552751032991911201734656 -970815379717421215924812811495014400 8062834733238868420513763275309056 9168198793381429495929415428734976 -688301706404109795129527487319506944 6259348286757092617946238883463168 6315043798413854067540833997946880 -977369136505833812851264311470850048 532195360255319249939529530867712 7804803876307583952611849954918400 -804074375603575239261455924181598208 8796364416094072188264302277296128 7860826531527005983511544403591168 -206283077790414840703758787007217664 9618776452588378629942335674253312 2720197978530893701294984316059648 -191514594179549471838441234155700224 9523472595441494446447843598139392 2562692717709989237646713237274624 -439725044503336875024730568595079168 2661189062359065985612633186762752 3947855031351388841766929358127104 -293111934725201985696087832147263488 5578950408639459762581855048564736 5842081241824000564041188445782016 -330310175186384837226863302331596800 8076270822769334671006791729414144 1568968319810675654978021682577408 -688650375630888654178333113427427328 6450638017612374226337693500964864 9505324566217080522894985962455040 -296754385516468482061478032710828032 6260242271105790470061198424408064 3876098931601892955860754772262912 -89234954951510273955240200946843648 567699892274488210710006467657728 9076894842780249297278485611413504 -81653135680561448438488522612015104 9541624196816622771728526969143296 9744338260761714345589520600137728 -578726938952903614971548720640819200 8673646474773985859054447418671104 7116208491944383850431460558241792 -503294182742473349950429685312651264 810416013333578361099155513802752 5699190423852426601638308276600832 -456009840077133216342166090886938624 5376309762153531981558238630903808 9366423594006890916206015997280256 -577633238374369998531195921875599360 2928617153139275980569238420062208 257115634989392905205329149558784 -413571406799025420344180186906886144 7941247558300197123101129755852800 1634528800760665714399447269507072 -996836247413454159637505090875555840 6043148357338726745464584204713984 6486007585268086474877834882973696 -718309771809043434378793876478492672 5161325148891653165641256319057920 6064528580066584651900837007720448 -40832199044615879365314638470184960 2569369029458309258115529066938368 7175453462515415693093294837858304 -344467306680411109927250117097684992 921221168795111639795207109607424 9663258037665303972251530940121088 -999514082251941735838721786584760320 8610839967370045782672765737762816 2979500204486672472369487375499264 -277440207906175259801639973805883392 2543187817978457688754491817459712 2090094879986505049881302836183040 -226412640143405264544187742028824576 8748090928663453244800839576453120 3115527227240035419246529435664384 -898185993004922921177032042129391616 2750111742174532652714796037177344 9971674057222648720852514045427712 -212402912195772103962227600909139968 1800162540588352249777852096970752 2175255426989880947312507119206400 -870655333759336256861514143478317056 8486367429724996422763192573231104 1795292354174739113332532406386688 -580686711384398542648988980897382400 2089518727572539642377622150709248 3181869008069148184801397853650944 -12275181679066102135208006159171584 9293467209443359436944920601952256 3243953935705449412712555282956288 -592789825444038596993712071041351680 6482841817030731149340150910156800 6735231853366642048308183167926272 -435060786041147221861731610637893632 7363420101045310986042643140575232 6141621628443564137588332381077504 -834647321381391647532035095157276672 1329095514498981500372172016713728 7364737970213597128043985085923328 -124460975633984954301315272341979136 4083174583047929929902130557091840 7722322648093286713609843904610304 -240754705081821218833178253940752384 5600647738720951796375080405041152 4357764101029965660861496740020224 -26207408452615903809875951073886208 6917104839666247624753537104216064 2237443905443703884743859194822656 -457959121790909985168664745272672256 5705577856586165741468997807767552 5240834049940899150731877644500992 -337751963345344565682268843469176832 629367370073597025555174029000704 5206915535122290291995319140876288 -192103494360056513242132539502493696 2691134561923841301505224237645824 6312738052813755048104947135545344 -253068344420361552897709227433263104 6884968490947401246899029026013184 8256149157964654239764115244449792 -866266471746056110036364993604091904 840539644746976408949947916877824 6529549732808824471391242528227328 -617910702396109951867933565250437120 7329465794670040891397270260416512 4689282311923463058002838357540864 -855888814287856956669022543038906368 3231856856240500402924714025025536 432858224346287318550294095200256 -493876381621727231580471834733182976 3684228545997257239419642886225920 6648026897630649843228232332083200 -360505975641534603326594494473699328 2191456121875247646060600574869504 4377344688660919662385762591047680 -139918994640491891303992114144083968 1727852637388028536191348476215296 4873761911768444125142169904218112 -27484904137108131686314513868521472 7940064757901352787303382164439040 9075755754867597783269451329699840 -570503790913185183965475244383141888 8761915690190408354958622630871040 6161926208921556655525543695876096 -49945355174561252036187062116810752 1605453937171530871466008476909568 1175183297701466003145433506906112 -542721709165669042551931396092329984 8791483410582512947280118772924416 4550044442323447723475874288238592 -641366981907359365129550091509563392 5702787766055840370864367782068224 4221750286034645590857520827596800 -314181380277765932009738638607777792 9441420947186015936897001908600832 1848797130240657143959223458070528 -53859698614006721901858241621524480 1197106160884128929704003812458496 1635253975650107470540612021780480 -377204034970324785972117598220845056 1893592740266121767552108327862272 1626876317369185697716481187381248 -321065317151075403782850757580029952 2408173797672189367159454043209728 3180750003335990383822212431872000 -954689868708153146588788314930675712 4680449881807581090358451140296704 5560840082095834874730452321566720 -685774423290216869961865286314360832 2066180170223417050024372596637696 8416497676225136320220610527494144 -618429043084332390973637119537315840 6610827971434597861521354905354240 7092228793711764694433401258639360 -378059705821396801725055607972560896 9030384753794210404182450637897728 1250447219321174249388314357399552 -31584877551155442530631247458205696 660011943833889519980383087624192 8676248481577983447946329484951552 -3263856452972957468967136319766528 6475627689538196243115226620231680 4383004528769205179205087095947264 -560256754677141655294177003253530624 3477804332658710377388789920169984 4597659916921465062584556082692096 -37809715429021908942135805503078400 8621416911503697035609808553639936 8622582218330110807421360468393984 -930734807903613426701123464940486656 2088790522480997784906422005268480 3073392842174782391671297593573376 -845161141317906415741211975612366848 8728295475076905302051890499944448 7811068092512276212956298490150912 -383239462880676927369959863387947008 7966038232308987079525141753888768 2523067901028445686187771754971136 -389172773730032347471713189993906176 8862841247222161326355927556685824 7582167728309363411345009142661120 -631319206261814541066814408758394880 5434275201830231432053132940541952 873060936858600551896375145529344 -622718961664757246927230223870066688 5219676167398304959902898525831168 4805882115247755700613094064521216 -692184706046335845250786513733550080 9635483293313668658921926578667520 2075728409793620717123925966848000 -998567331761680415425982935165042688 4954020333885908699079150663630848 6849137701056279130023329947189248 -766588789124771301250925109207629824 1850840353878456341122406831620096 720562817769590555424527948447744 -166779909291974942230041379660103680 8563432506121279286603905832583168 9581833800661328322681539018096640 -803743747420313087900428769899315200 1590072366118325592006682554138624 8364708321670104550067370138271744 -562386840349753639289659290762084352 1205225414198506632329598550933504 9247806698418839814936130213642240 -912089812698357029044874975710806016 5508041871321369893709055526961152 9675603654706403109789495952670720 -115861569723112484383000519707197440 5494895770726211466124626587811840 1117022398369933482715581551476736 -93849985764301471792195700634157056 9947299999563338352922674203721728 4140524213459991122624271339225088 -839801154299019884183785617431199744 5570794692994519038471336179531776 7505339031739899402600603080196096 -105930488096523881832404184253595648 7767940340031341748510556359229440 1624263026296911588587451671642112 -314366078480474502310990333379346432 7867819399523105083358639227404288 4227076760910476772857914998128640 -76462474000356217546525519420325888 8148429958136275182748550513557504 880794717197224601760350481678336 -817214840114473273336821556145291264 4581183240614011815207160214716416 6195480715641043875116500285128704 -754597322091873446490610261186052096 8149060867812618683520173228425216 7483816252199076969069483185405952 -947508328495986249745502754490548224 5813963581119891818671290693189632 9634424096231719117208385589608448 -491253264468398244345111666808061952 9809084580728648173656402900811776 8199206594230269945592820736720896 -438112635194017572046161564292612096 5855515478538158906926126340243456 2176770864987667141687158700507136 -265958371266822320559377583959965696 302696459338572903421804076335104 8192094771100206451921386353983488 -956039175399254025160570588576612352 7956210640268933353743694446985216 1434799513269054686874524025094144 -90702511738280808734121989993660416 5008653291226808890494790936821760 6067195768734033030777188661592064 -596879297405273722826010433446477824 5862493571550163456665909899296768 654944177829338696562296131420160 -82933353685209652078360149167702016 8155946247575513926636591902621696 6788370264957654859483819011997696 -41080841250647387948651352130846720 8893215442503265866987317747515392 6265571108462227785734962938904576 -839472307308929752425406114627059712 4946410648058013965080081131896832 9722772167888182391176793499369472 -856363976631240886521003811899703296 3084398191933878086320169951428608 7542857320311790590936993614528512 -880384656211725266472792501291843584 7618500777223517074976637366304768 3560390496284093523524205953417216 -228477646844142984603409995419090944 371411243073372249039045396529152 4577118373226484008391714212413440 -259649865594408160772874446514946048 5052426604043515839995620301471744 3050990110373779437789802051665920 -124015642876416148239569457447436288 206524290307513915472454510182400 836416824128748308029640122826752 -173831441691452564521233765711740928 88772981910473430918289795579904 571064638510199664379048004419584 -693725825442935707162533243624882176 7411583241911668318477186504851456 1692642527570302102913547893735424 -968391874637108706149035781878972416 3628967916389887670066318856421376 6329952773975440219997223994261504 -620193305938161761979279412050264064 902959412801434729883696912924672 5902449352594411393423213032636416 -33818927268505380616194784220938240 5613264782645754613713875993886720 7573724378500691181319248177790976 -971206730265085602612517856289488896 4174745815909355045566120516911104 3854519320960754959367631078948864 -512527212055114759535607874261614592 365121876434094912893354386653184 3118364565466340604798537341861888 -714214813342187421193030728377434112 2214939787255251792862162850938880 8948257199670096632974698715545600 -987720721520938412343029221596069888 6472135436302433268117828993548288 8848557567632587777498177907720192 -142338309049888086580180903463485440 5922385640607104651311454741331968 7921622951225897546573650220548096 -491886984790951080896226752255229952 4374110961663954182035660825690112 3005354889526562740891534864941056 -93380134795151702120681808934731776 9079408850534913653446166609657856 5702588143307082095668485678956544 -529206383984052850680593993410019328 4409894488441043191672231511982080 3827833954595805326794211358408704 -933398953235654161285128675498393600 7031565243015515879729555323224064 2592564353115736066900857083396096 -92627476286999256769374623746752512 6589925307047465999404519185711104 1758145885724891758793308002844672 -703104641505090711972912305585258496 609795205327451233861794294398976 3587248928846771844648552051507200 -408900350046336807177419970869985280 1026497230162485247502109405872128 1284517419948190890365916016541696 -888432411507893903109597878751854592 9292217497085218164830877555621888 1335780474810348753497050792853504 -281246988104048716316575518794186752 9145717535424615285101675663065088 7128630837580392358734785316651008 -98835020101829199716218788670078976 4063210169653957372194628986470400 3931435760221195287733797916770304 -604891369787187032010003134954864640 1475815074785420405352810747527168 846642277072751504285874782208000 -870579786919935937273798084278616064 3749178687143601754844612754669568 3154051312597358666467378921996288 -47279343073530652639977663298011136 9366618918575622659215114253631488 612719019871008023056169476030464 -831464081480629409514981492160200704 4877412820034596900243443512508416 723981496937207665082626830499840 -422915552079556970537654728710422528 6025956424131017777511606035415040 1585812653146249116158728058437632 -409215847667531412666543834493091840 5567195712891592552909818053001216 4825227534170210334226774554050560 -884440863176731617274714251864309760 6956607113801047062098859962400768 5943767010040637293537953142800384 -542187761607065806242632917284028416 8582199199888974198548911685107712 5027837642039470597297660412035072 -39575484053973258424541082283933696 791750550948552733932942151122944 3937573141803941760988770245541888 -357609287392589345715360163570909184 3522555582395163999643271912488960 5405711603539107323902525450485760 -137228581033912755743385759818711040 1342247119891858551597487089516544 9384597194342251512085087063638016 -811612555401413774013813888659750912 5538760892630859835356094769659904 2091127049242268288888797441032192 -366241333080062386070214689479983104 4284507169448144466266762791354368 9289574622312227373793072356786176 -336430475020284678642405633586888704 5635538344971908657546128026238976 7525345003951434745092676324950016 -328018256380471484696387094512140288 4060701530006708381691837664985088 5666883610908547764742658287730688 -853671748246203090100039414552985600 1409677204123653947890022194610176 112046256042568587737203499597824 -505886226770749536738154891926568960 2704591875234649412225163975458816 4205891142826862761721976301027328 -780191019690029435365948330925359104 7235971053222608946508221084860416 4100224777668318778294062385463296 -515541199612719593107864876004409344 1566825410649368380267535190196224 8397642630352791589642481126342656 -276179022682554725510893736759918592 9984128780477784319893996071550976 2574536715821845479528801899642880 -41971788012786411219780641870577664 2450134292209239539522617913376768 4870680882199455656557043303579648 -444156254295033610343679914598727680 3101697211168889704114108151889920 2188191527781587778265857222770688 -766985340181171686975117583187968000 1256710081612416743632297198092288 3318629748264812591049113480462336 -516264406397906073899279199183568896 6167257637489254007261515806146560 6357062829571773638707430715031552 -576760193259782667926051823086993408 7743331557310986870939123380649984 9395772647562035569029175140417536 -796308329078475647432418362470170624 506306259095096167514968401379328 7689325387994061941062783215861760 -267863973022183738428147216236412928 1910409643569611177901566021599232 9938634391004299643838429929668608 -324790197412731173751940325782323200 8842410180520930002383768819597312 7143026813247496251957531656585216 -748682578595003154474396954155548672 7929639436611674343191291952627712 3451871033923283873857020050276352 -24047804961532869962770530858696704 4516973275019441043588774358941696 319087741621803378630097423564800 -965046199073349680882072371966509056 8790158441762751191847033322340352 3504551282712893156827566381727744 -626095430021375803527553870314078208 181969131957714297052286691573760 6499609016513081891490694441205760 -470878003671175601870189397945614336 8067157388470239864140131192537088 2094107819210805414235488749879296 -808593589241911744771021231888531456 7162970277689950449128904335556608 2074730536990137285410847507611648 -503366253076282540597739365028855808 4413318934869564011933908829470720 4829571509878886193190297460015104 -488959550204079216994623228905259008 9750270840225596342281539525017600 2988530955640856685046222026702848 -639597468254785633451360158935416832 3425130719954445196782890932764672 2984638205795918122527090213388288 -47738181926136863525307629713752064 2609300812878471858187949664370688 7391426176439134469562792073494528 -940401951595678562015494702790344704 5182535952746582918244232318681088 3899159459714496788894560318128128 -969711854431039117088340321157251072 2852327460461257262363095584473088 9987745033131512672046867120390144 -399721923253084973427484051678167040 3950624409213884679644955845591040 4457688432680935106547336112766976 -964388202071043675966766942687068160 9915011664183761775200695742365696 7540557415542478907583619655532544 -367334310138180283653632682566352896 4616930857614602917547262166958080 4139116059540046328390727019528192 -944100045553850118773759099168358400 2158359498627719112090230743629824 7115474748322592328860707305029632 -94425741922706592412252175280898048 5797544237868027731787936214024192 1709293254067350545882575259303936 -742286336217976339253289731034710016 9780175803353819772738214664601600 4988956113994911076037652065026048 -50704882208729023706324443791884288 4333978938372334314531624702705664 225102729926048080335538673942528 -82536972850052963841273818530185216 178381124509303378782105683099648 2849786171574463561144271800107008 -829519479021439753064374764348375040 5934254052362795483360429757956096 466341217021714853311994302300160 -173741645916546255116489415486078976 5327075991036993593162524780396544 7394415446070766139398073494798336 -440161105242357023914184325403246592 8425906664013296178942353074028544 2689465866234985182109762232254464 -65827808319010845128732638850318336 9775458972932437156364008122482688 6640761778420373761610293792735232 -654670828263057353534755697892261888 6668722087408745624058404645371904 2271234130373344597980274168430592 -737410309852457319079990105011650560 5532465751021652718921702371753984 879178143065519882125131368103936 -553560341377367688736385177502089216 8542701750464761725035660200378368 4052999706610847664313227502682112 -116721980709197602326471076105682944 6332299570333001261631709462396928 7189036305685300266442584525635584 -997284121229904986002606012055420928 4513787027501521421949974706388992 4842119059946357012466900425244672 -740353683472174822336095541004337152 264035248240135684359849840214016 2777204328773726376777323141660672 -424485793796665613891193663783960576 403567639790967918605647778676736 9944814808038524032134406215827456 -880480146438794133727703042510290944 3920844369583476930642107166621696 99688441414783232638949693325312 -761162809302166276311637044200734720 9187079680536929029062623921963008 9337687155196277574675223187292160 -338848604620733834869494675446693888 877985218917926420158788052975616 3340847265431982287424433424433152 -322802033691034315080102675449118720 6599056270255719585964972937576448 2315352091086582344984489235578880 -941898890944966297355394550694150144 1521236336890626071597969274044416 3485785878446004556624242669518848 -386164743931542266421399152347840512 3705665206932757935009007616917504 1625285094775015648521046076686336 -280444001638300641325234018358132736 9869375542227789332784789468479488 3365964559525282805501087300190208 -734779491777074966719848444346761216 6891872563191395093383255773151232 7487519232871800558175472171614208 -980446896160578180990025393202266112 2941530717678746998302308789387264 2790431838431039496797984821084160 -823556767669517800633592031354028032 1839966671160922349383966523392000 3937364454472387576115573681029120 -491499626932624104548650663595212800 9465934089256948820836204578603008 8846358671620115182824180844331008 -814264413947458921502722003442860032 8720931238315241278749111660576768 2937454934496311684759259875115008 -462828400476457595017714793048965120 397117737677287125845813745418240 2148976520941348296805538638856192 -830901813477212666321775037710860288 7093462811506591966637913370787840 4174462346443748081888554580443136 -23576117743736091960839886157643776 1852584114239210485242501277941760 8960444654478841414433307485011968 -422774900658082753908595239275200512 2838883443896427649250214291701760 7498443423822267273211350479798272 -318279763115005347686043167297110016 4884391519407862231158750560911360 201279396364885609605202358304768 -863783167328016459868562661731991552 8526148437602749174844993078034432 2706220077532708219807806712184832 -3823909735021519693471697145430016 1745484200577433616439667004014592 4599742808171374744616269927940096 -495374766631842897935859418264502272 6902006541632312345606578879070208 6494252176495829343116943970795520 -82844594883003150680600956073148416 5371546968880361068977171921371136 6923161644226336759614779722563584 -846482420781616725446997784823595008 1802077855020204050984922068811776 1567044966229449543665499234107392 -715222487868828647613004477930405888 1705245358378303052723183406809088 7050890607834393912462017954840576 -50939306609469272282400040618557440 8763635153522965387437921454260224 2075400610719120210039656387969024 -527979839791844732362807715154624512 2780154139605219046727284372275200 2719513904997709519234102099705856 -763712440066392768710589946750042112 4133671771579313577658835978420224 2759609301640757502490229228961792 -497300587806795317492952094707023872 1409336151348929805052166965035008 520632321832706379588055167139840 -511568333494875405756367233422983168 4806933322330911229746333939138560 6898609615828011542693210774044672 -937641809047653396691954700235309056 1490904759593036667551303564525568 3140753360427575833512169340665856 -743452999331715369731165179781054464 3338262506603498001628397433782272 2474461659383247117390938181206016 -355873253582804773647778344188510208 8991025174610889971039257772425216 4668544829589467156935141761220608 -362932775661228068605862952560492544 3446857117967528809596052861616128 3404434843984391167550720684589056 -96056240430998259756912187600273408 1072137292586556013728850287525888 9584175855191410856164009931964416 -997172307046862716909689956342956032 1601583993751034811244141300678656 7971529180074907179999486195793920 -929098117004397981012705072742662144 7819217726230139735825574403244032 4279449915584389011785672336343040 -25111685919213833802224817439506432 3224424940048672508545900906283008 7857116343744407455955239032586240 -552468960721008876486977663388352512 2587167133270911543865291095146496 75985874362339204796184531042304 -975511961134047808790143084192071680 8446561334221104585759626432086016 6259095246845552348498257787224064 -868228583884974520039822600353873920 9291777624559014915407641514606592 8110344681482588328379995985543168 -272493996990953561952907196616409088 5919128292012462384892721506549760 7939782686843164985360346905575424 -138458994164730638821124996901896192 2969827336166151546922736963026944 6424389312387255808823353367592960 -65768206192731086206228926216273920 9615156303960519764345626166296576 332237492594171275744328229584896 -946548744515639494156509957568069632 4827528892602346624281132968968192 5692167867749622771547823415492608 -553755685948868694126712855229104128 707294650403473278440695199170560 3100471335325226173948851547799552 -239163122471671974836198521926844416 8262725847153899138489085444751360 250742063921336366358995853639680 -801022982058961407862316957496770560 9374592841233291781827118344699904 6596970144648347922474407114571776 -355394626688668331610968311235346432 3519400814440025558757068207292416 1883221396402317654487200065126400 -386952976318068152924892898999140352 4457119708398471317276181504458752 9912110534792396297640240608182272 -134455501945131500464233493280325632 8307111192929168640366778320420864 2611004497316390027799623559544832 -549377114681851877787734237968859136 535582024172354143734029797556224 5830411493400488334260640348635136 -871951716378484635112718446889009152 5166691349687412995312474023526400 5173666443177435478114673727897600 -655193563123790144897678702131806208 1009552265700678711737583916810240 8765642105171710208505938851135488 -547766782382875800354989803971805184 6892149029702488998739321909411840 2787717712077169856495567304130560 -497912340636675712981199152958406656 1200045571689839916391141621104640 1561483727903429171485185132199936 -475829745252139329644738659619962880 4534227137262673386400532645543936 9745105717445615128604238185234432 -321847950321282692507654245444485120 9956069513599414838527975382581248 3751195813139890389271781350309888 -197587263375682028727487172706304000 8172216094024332807446284675842048 5821995619722067446525063992442880 -285716334608125330964009646387363840 4264945443116922732531524059529216 6747118180819339574648917005959168 -846529507475302503454674386348408832 3035858486065581082414588190785536 2644076561072542848349968879583232 -545273549901380490663595252301955072 1783012301284312149336511494488064 3853232955930539138075144231059456 -855897888790022180415652681352216576 2308189943960269914194448742350848 9314092533838343505980149532196864 -730487235944298336973996400066953216 9824548055090256826320380808396800 7191238075290890745829507375038464 -615420735408720675555830468819550208 6173056718618145409628817353342976 2994058577601726603897925529501696 -308268897202648219322628903819804672 643125383959261828374231315906560 3626762077334922831499192501796864 -52162857199482617840719108193124352 5936708491958343405481137356668928 9047731392250984432960278995402752 -695304696018915784921165303757406208 733517133662414558588857277743104 5064615164116379400022189349535744 -914129425385903498004114740000849920 4598948481718481094643882009821184 7789681749468196712970852088414208 -151546454708133516154855624559034368 5914213722338748011783927262871552 3385231232718510433287204165910528 -623342145264271675495664248571297792 6475688123469344242197507692560384 5357149749810620461314688581369856 -921307445381971020606822695892418560 1005987127942216870414082113536 7660615091318928990247634394415104 -481768832134139845490258707088408576 8478183890999312053203740575924224 5391086472021323448996052951105536 -380394802202016762661062895632121856 1159397005584927897343811987177472 7858978003125585495244231059439616 -781485894853116022843136430680571904 776581251587268930030628725850112 2627823221151873577267670468788224 -942971885205178069490640409652625408 8481385252742790440810843998257152 584658280859351455683682393653248 -383637212850998155084473897020555264 7100708404748053377724494418804736 4535034499446577863101640412758016 -996222614784678058423535604762411008 810420068969101359037745574445056 1393325148857494195017709629997056 -939790480782931206433601422859698176 2510822678673901092311546409779200 2278107513652503848678893409009664 -695028090835799414114699553057800192 7045217867081202210489158734970880 1380198333290846528923572249821184 -782070933765163914418596078847787008 4992449458680940459555079994736640 3830417588241493604763430830473216 -176689680850801815681636536164548608 145017433918331460139582985601024 6035660360651183405617479942144000 -282162517793269949749427953534500864 2531402757089168824478722370306048 4809454239395540536343367226753024 -382082046945418471319346881715240960 1489478622355040024294763872124928 5510786098749278205827642250231808 -554239526686583480014898693004066816 8934214098337994927836214031548416 1392580745799150926900289150648320 -309608726383730570992896489176432640 4409929857873127144353978136920064 4122843428486044030680596150747136 -381703159534880975659179136025362432 6981766863164054776241073992761344 2367810498593786197970574823653376 -85179602317926019970798779220623360 6263383866639615402703438127038464 7509940449946126940999367614529536 -776000053737290514412033303168155648 5287037945919999627606524229058560 255188462212321894530731858722816 -447611978028704188901235270791200768 7678271812651946513019011032154112 1525175092633109233329314807676928 -403436552178715101371845181632937984 4717865565164677583823796084670464 276894585100203487688361901031424 -773735616529746268969213977966936064 8535192110924717724177939220660224 6505038847208311344620360676933632 -845291977386622498804463981245235200 8757448131083514931169749362540544 1307102790589818484485685086519296 -654123084007324809461656628592902144 4982230374702486817961594757054464 6292901481004685884543827022184448 -243962241752521124721333671393492992 2923699729791120952006374630359040 9375922874255733479232450808774656 -746076219535715491361229582635106304 9227296155302458020440799134613504 9126574835469863548731704836358144 -886597019447238901012433734050250752 2406637266323553178744544947077120 1887347643323718457421443134128128 -547017563730084233154524350680924160 1622098667677024151400817444782080 6020531195520554315486632433680384 -874790311497475495687546758615793664 9445758705881509953044096724500480 1860553523800051543326814246010880 -35318513182417827002273771781357568 5136732633207355496117794366291968 9766355921792861106604222885920768 -46811829051796724708418860506677248 5641826199640542791842977290387456 170909460874667352164302552301568 -353030244201118987521842817047461888 3091240912271703676781459583008768 6670639532538140109248306094276608 -279792476893916047113467665961713664 1846693119616393361804836531601408 9394825206213200111222899519520768 -854798595590252969588764753338040320 1774892171436466688228032212107264 8949638525262605093933610325508096 -95013534590061444431237202357256192 7050470519239560286612638717181952 4999697486524681995929768245067776 -214148811198710421533449230921760768 235046590796044422926303718539264 4259397885272316342950770876874752 -893207907393889486203453546736648192 6433616521001991824408492684345344 8750967917635604980259113301704704 -41085512995343530143093914236616704 7917900779169215050864407158456320 3911818859159632105813585376051200 -627833264809580999545879108178149376 6541278567354857919867087281455104 1583382544311426175603345387945984 -835593074774386577387445280135184384 4815737358341519292316871290781696 36272033198039186234515260440576 -186265402615990517613308383449841664 9915992393417718799231037873324032 9276165741792215900275697527029760 -671314423553614602749165956216389632 4559256449172904030254497802485760 1119312424987413012560333236076544 -615243328830065317245553322827448320 4979571820784231860541495315529728 9437456634146437319965868313018368 -251986342058425532854693186051768320 8947523535879002002169667604447232 8145731094907919014194542662385664 -943035630007177978799053155468312576 2081722067939051274695681668808704 9687430349587338874227027850821632 -922481994514112614571813987694936064 1844938724394378916937343222939648 5516484300102605690193807344140288 -583267710785912777345056585774268416 4282033642874624821186287015821312 8974248462397660488750035703431168 -806983561345065284370086571483856896 5092049617059332069601998738030592 3190400851173400310707146069114880 -547175654900706722956809447411810304 7010568646551926560045124565336064 3455857207784580860740030743707648 -527101713329624893064263135190319104 9722269661664030931904437306785792 3504260913094561125610422917922816 -455948292361388593842827512304893952 4305706950049766234202058392600576 2309382269455629529361519975858176 -182881247442292657083842088392458240 964964526385321184848193500741632 4821141128336165014818931609698304 -30848062695328287703225723445575680 7310414200745007814932923359952896 1793736712877040678402407306100736 -488818108251876183310744243889242112 420799423243269226555851241684992 1848919026588785441918853809438720 -318275242271500041453883433135636480 2042139764835033946795721858482176 8581459079592604170326524540485632 -19255803553353884532220088394186752 6452963172565644673171324089139200 9250592549076958545538526365089792 -315208457312937846003429482461921280 2027783140509665116753704402288640 8334954496296845995248131575382016 -684212140282098579019736396752486400 1173364485034453399950301316775936 5922064982625634273729333228994560 -100970685365770789610765376150306816 8432941146082362932079721046867968 9078405439201180557633535042650112 -676455804518822701174253736609972224 1396581223369384883138391995056128 8965602857187416296086908933505024 -934793165484358846384492573324476416 3734220600308287651159911323140096 3438869490253156276197852549480448 -626681559581594385620203505845272576 7643591416464626834897280488701952 8461295665597473030061763455877120 -943688220094469525581741802731339776 2319752965516618345180500187938816 6746590752891256221388215211261952 -219583045547476746572907228333867008 2963935392888196132151964634972160 8521682052829234074020720752459776 -932729615789415145908941315331063808 1874424920556901116275901578870784 6899410186921788893274125216251904 -46609094715714614755860511922847744 7384208872896960356367327295438848 9963480479235522873666086769786880 -844340728903047901572074681615253504 6711892935253177088591264332382208 8295484610542612147931552069713920 -28015430855467377812116559292792832 4860408918350222986872598808231936 9467260901735781483291367343915008 -946664888155691094927305297979506688 9961674412208636170057516754927616 9130535868053812892745050527629312 -218305260945832589462516090915520512 5091311111691381928316613173444608 3466050963196588914297299047284736 -846503891715531784756048825635831808 3068195335670850957427169631928320 1535434234063932551073254648840192 -776406215874723242670163435385257984 1715315927941379378882900735819776 4557012099972941365438920356003840 -712929450814668899680990507858657280 5521249102801067879921578827317248 5199634458885516708772226199977984 -837454630823581179336612584347402240 3814880829902624878593440307216384 2664903892219769477757127033356288 -60830188313372686964465169604804608 8110966669371265766043483870593024 9056658339281704758462851053518848 -948735292416352629140926946263171072 3914552979705057532568850241945600 7766934091889430202823862988570624 -162624659533841430745047062234005504 6066724198675837232728371630178304 8962083031124442305992844510232576 -546493561565113552183155452127739904 2876541585955010363521031622098944 1310028312102142130092606708776960 -401314877453470373201929524685570048 9022540769686457472162497113882624 9570599571328586788710237033463808 -680762242886664308004785968606347264 389376935913685232511847457882112 7927603516780712639588668668903424 -709124197087974343268345349553520640 5988926247482204824345042860638208 3058428229764937957858617891749888 -589457729740972533811517813747089408 8839769209163042382605361958879232 8469840133069598351681254460489728 -78933405141774251871137117717397504 4041930846620338307175359663046656 2942035374519118082585976547311616 -555740115987909263782635127965745152 5727772195803111204201669293244416 6668557878586041129523898377830400 -678883770637282249587580494682259456 8988953090249274945742298301857792 1764999013797526687469612843401216 -602939627985138676861469243851407360 5428309976179216866020168533278720 1553255704564069675915364270080000 -255139935784781982418046263310155776 7682200475325795700670450863439872 1643914067201774090567227661090816 -594645536300139634348143030592077824 6443527218311533427606933628518400 5388286210195868712250367920832512 -867931308263634193701021509109153792 9418072705078985436564489035055104 2412810304376855669872394214834176 -126922915233724104619184317278453760 6352983167281474052525817207980032 1886065135878489333725596405989376 -935169785268188636964376883222282240 5774760383474292402074852672929792 7387913824605830830312070412500992 -670134167549276603252306451865010176 5659474313852066445107190936109056 6065258849838821790333314946564096 -322637875420479272849688722803785728 6052256661418293630876691741016064 7729820625734447027213355045617664 -624545105776799884429405138169364480 3708351413508924257056009817686016 9194589888049092877552431568781312 -736438779528602408263600646419120128 5642035901644082671070835120275456 5583043977089410768921137470504960 -744029762247413622959768222417551360 6981620043507793085588525199392768 9818586842029009099335840984727552 -304950197178733974274198033877958656 621526482184789652331770557759488 8253359036754213717070795197382656 -843616251283484284885866180304175104 8499088639985820172535600301211648 14460256422798491360673398784000 -530133709115591749255011643930181632 517141293529116630918596072046592 6836107864634452669558711499358208 -146845386033288000060658977309982720 7395442832057493760109763618668544 4902609444695505900899003118125056 -363184258273451782244290906363527168 152669667056281890903630838497280 3085106416647713933313067358093312 -337147941187728573962747839323832320 9788291585871056098291749524340736 2644987165512617376725583444049920 -890936724961445022461308985967378432 6702489924986107823928031146147840 731689399207734307018521423380480 -530471957250296665738803757998669824 3613131192818700869781954119073792 3223835137833409999913606233194496 -341662205669442953499930054910541824 3849616893618319719542407487815680 1071355833046040246639903551520768 -681743338751426912084379510916513792 7079804791705782647813798814023680 863863780167322045911125217771520 -757205265132885904534228321093812224 5713090418869909365716676694245376 8846104451270374613504434058035200 -640432532003131576487802591856558080 3267908950122025271854110263476224 4359270978004427006570178166128640 -522416044043814564706567730260606976 4157507801630019957097123215835136 1974809742153153737514860180144128 -401529478847390076649736124315467776 2569913412218609566530772662222848 1426682227938412015942972588687360 -837646145256838133643357253277843456 5157998025506032848101631017877504 6460512943283930093503919398322176 -273241044472625628862614614344466432 2320606003513839629358090111942656 9505312336346079293851698670338048 -877940953486946025307682951674200064 2107777958371801325175093069873152 4007865955792920886672987680407552 -390187205131476071065916317856956416 5532252489233038435961177731235840 9202964337996053892696364474695680 -295077252857804056643042592050642944 9614547213664336946921338319142912 7589968352986237801642162623873024 -51538930759499539715236686003699712 4022219884501040767627054731493376 3853856934774042419218499397222400 -788039211518249964026222842895925248 8898466046847189426577646920138752 2434180309711416630478279935000576 -923489678235584780267814947634806784 8958179804475436878474689885765632 9935645414515968933630471210795008 -244031066217213439889674518071869440 9135123903578541336481612817235968 8486599657219332462999239445708800 -101461161682631914265834116960223232 9209961327644520655315029601550336 9225332411132220282254370476654592 -980501358818807312574851183542272000 806999332829812876375670713745408 7432381216484633840193971056279552 -470649389193302773316849769484648448 2707240254805361709207616825065472 5645287177468884736834338644033536 -163587722474850415065650212770938880 4764334113803619125802096876584960 5347705811662541215302427877572608 -80149933399897415026528620868796416 4270506093552148045433528316329984 2090450985626555925127824882532352 -315596039677851561600829426128388096 2263476746907507466332247945117696 7774087906723069957954513668145152 -719857571105170039610107615900598272 448424574094898075738242874867712 3253885583570710298690945655242752 -45578270502784943301614059950964736 9429011744739418156801722182270976 9209196680141092429157009262116864 -497458660732432561921666066577096704 4182690867081768111371505515888640 4495905566717691156294576237445120 -405270650089605043152794802542608384 3537557530616629089661306370260992 4665158630842761814147796675067904 -582393359871658107548793820451700736 6831034862556175810141695351193600 3803702377160858754711768375754752 -571902896653165206768449688711462912 1924505825875442226345491870777344 2415608377196948406911450098958336 -815448742857196212697707114376724480 2438687424315407285807074823372800 8224057095808947119923590317735936 -524382252692873088251656406887825408 7141747547868755467636036010508288 6872723188762158897565953083572224 -429293211619120794631296033046396928 8775190507455720951433528092917760 3080528113427277672753493792784384 -619705138808381143264604103362215936 9661742662631950157219584544866304 3148071058656307660903511454908416 -642260905406711879041873167110897664 5047392018465686969552650824056832 7262300521155281725339022324137984 -818838580977830690233013574245023744 1361292737744014270747224135696384 5965698795010969165508419795288064 -190203604387034659718330900933509120 1293049596189083525843235079454720 7629395992282742278944667593605120 -265826168822949246371039764369375232 7008706041568023523719616544112640 4141685475412319098751126595436544 -602108439465549274776925868904153088 2683284070712021167181120722173952 5734612159163458694319133083828224 -709554164956602491241932235336581120 5564908616726840445522404138024960 6978762374900878886176259812884480 -872158954998026844193733527103078400 8912956696038113317814935404675072 1886868255137773587897502559895552 -126762265064170465659717577535913984 5070787439199441199200414734483456 4106982016442202022842324184203264 -788868876021732100755257942867968000 1150174500408528015215369643884544 8288000727798411842322775916150784 -939351105784477171340542645771436032 4678699884514967874163072363921408 4714597130352294376933924962041856 -838193832162283971081652133741723648 3737632439235198057748605897277440 3712682014245123920508315762688000 -615900947359649966784515131299594240 3137123112626258711085380169367552 1989376642559004847784739184050176 -278202568591192731346708100154392576 8553766502616756365910640015966208 2106051089878832333327587541516288 -664691651684145100439450301818208256 6573540266352708020178387875135488 2906489669022020510481835771297792 -371592589264474403089267628812795904 9114551365409787611184443330396160 5552042969209041826794188021170176 -968416225997325550749343969842298880 9714927224363849786229384791719936 5914510744908689233249487330213888 -476863495591755094246305825724301312 6216298477197788279478467103293440 9592687499948744739027341910474752 -921758740343602082802373154557657088 3075962594236108389439107300851712 9733929539644734772018476868435968 -948183371899613542455253447317913600 4080819655500644798440480272547840 8766258672749976094609408744488960 -72157539718696564757946204644442112 1772324906180413831109320353251328 77559145922772839789987740254208 -938038157982463435824338577385324544 22773940906174768621339233222656 5197247743214102485707182091272192 -65678915866477036651816405755232256 4669216424602319554765795497082880 2682522307563151054408869163827200 -701610927469539715850575792320806912 5101324673626484975020617767059456 6800770085102869512621963941511168 -256182461279252998152064281530597376 2652627135047037393470723507355648 1252381887850793041832990807687168 -641201128324385471815794442792599552 603610341213245607598928265478144 1838910206481162920979496832073728 -889699663831446952934984824293163008 7009606169204031187096208297426944 8001544096718727438720625494982656 -131730222640293597212373516969574400 2980048130165784402476637735616512 8020965788378987442869573280333824 -780960944966078889604289017319260160 2606279693762479063189637465899008 5214133059686091949664122066436096 -449653763267373923104031978307977216 9583884705736571315731216415588352 8600414015143819146811149796769792 -977982189920302382878250109220421632 8119461267256034931643194770718720 2703343857635624341353092347854848 -978010875647671533502096625945804800 9581141867558842282457385607888896 4720693132697551382037635354591232 -877377345023508003720730520099749888 4720151545303872413352663636246528 3748046084812142173940813205078016 -169253375972259844813092085039104000 3266387201466509126770883081273344 8075264284536538342293128760786944 -869506945855726954203857080373215232 863730645649085672094787950346240 9600614260845957526050873437847552 -306081831433248995252922137513558016 6225141384117736535661124828266496 2189526222800813398900491312693248 -522680847959662389188433225743073280 8024333032181411257054239129600000 707258911049807651966256834150400 -757765611777033624632768287484149760 986390113312734837728727072243712 3145175163890454982598086006669312 -738633870102497212998714300183871488 328474598416038790812527291793408 4168036621534224213064655910731776 -319429967016817389901411078060900352 9057655288005341632872466446548992 2683609108152428492690023881113600 -174975035624318048648754759234224128 4057719492060245401949150205968384 3456149350388525061721047231889408 -813030236773901735980050683061600256 3055534474853866405273917924048896 1928987567419021212653330586664960 -391754717628409830881679319156916224 2587833346362495053061620571832320 8558726543948424513445595224997888 -133428910733622835994504446666080256 8975257211158696680442628442947584 4432224415248969146024304201170944 -511821809386824141246029114411843584 7906967809226209813446564438343680 9737434108687022455418067104038912 -419606812324380984616566456802344960 9560176858116433468544123676917760 7792155744264459779815826935250944 -336672573657810577306639275332206592 9854104538760467732450574147256320 2887906294182083195620610889744384 -942988281081607839020094837464498176 8974816313199069237374145051754496 1823654702579036205619532139593728 -599942824074684899967888350173462528 2970168642246818155644936291090432 7046208849045186990130850852503552 -826426116476066583706594925961281536 5750775476795652238404100284219392 4226466129411746676512173752057856 -263040919189008807306041947678834688 1057436097142942144380398821441536 5320578968604410404423870441324544 -929050516116841808917129536242450432 3092878111531515256922813291823104 5118460563123420238187177988587520 -245109632398604073865054859386945536 1691536601613909702286178963685376 2698273852026917407498573073874944 -791374335178928834788323880987525120 7020791012434224152452177971904512 9650157609831053669533010997805056 -267015296902926264757393254002982912 2795442840800333091176511954747392 2948899492112530531932047115550720 -884325940530661540460880762756923392 4689400353739018529123172479926272 2071361997582084029655830163881984 -645734433401954658131842203192918016 4397000534357695069472891382792192 350776459598717925755443256229888 -898743417052524043445644573284499456 3504182403805013227165691043381248 7282956023402592674345569442856960 -589757119022885838423618132725727232 5790567352921929374937282903015424 5229369109741079139028970732781568 -175096618994538386793084224880508928 1220810470242068939394037682536448 1440944476539871412452164299128832 -985796007859138053043434307457122304 3879541511696633567669432864473088 5281818515629918596989318590365696 -55095394443915513299755166850875392 255907914334828218809675570741248 2984027320991244983836252565405696 -131379107895412739111201083788099584 7847235719881204972623878074400768 3593249807915928557797049506988032 -394201610861895091309289007233368064 8960067019549513485944915562070016 2337298391630237694972106817667072 -593197090344740189652847393073266688 356698790989185878973366052847616 1045182071220568014668504928092160 -633716584613689215396623228046671872 4300187172240147187064884785315840 2037714788374924849810590167728128 -286450399238784831586156314865172480 9785130286236559585762879767314432 3647329316465517276763599155494912 -655012166455545570385561712787980288 7819978336568511406518158705557504 6787225079699876887167057386274816 -478556032084401952758687156444069888 8969781380670750369615436268437504 8697001888654161929208174531837952 -355596109205490165965961669635997696 2095139208630062873409590212427776 9815600329374862447373413045501952 -675691253647568841371082276185571328 2586936761645298146685807128215552 5701435692631609292716857695928320 -636524770467361359964624674348859392 4957901104113376933525004606242816 8306366155881861580360231310852096 -741407547115766955379891702559932416 3624188165232087660955623365804032 4595824531709455878986040074043392 -943857284886206318278350826475880448 7472445913401405846070143077056512 9748037508174115073540459302223872 -118852721656584927632735277963804672 7427155590704248541802261800550400 4219541883396124303402542221492224 -386544260396783274141264387420192768 6604272665687089757476244879835136 5718044303100416484863574322184192 -782291021359768757635004350230167552 791177826285972544611155867336704 4296557980552368833911280682139648 -519072265609128509914545582858305536 3429698802729171505445881979600896 2901788087912300725190365829660672 -323077887288463883645208849740201984 5952077022623926235744716671942656 8800138362757414357035792015032320 -455490548601900604756665323491426304 7462557939633199730640790709338112 2154780592547047609590291321847808 -503438069297970328275346892351602688 1135276472926165876164657344937984 4316733609524724962593738137272320 -189485468214386241795812616724021248 4311524978413911654335035465531392 2534355446170394172142773814165504 -619720843369677498392968924378431488 5503641908761529579473150505123840 8846107100789452235908182412623872 -485588983941228772221422590616403968 2987159594135704145185214159650816 237041183592510574458581186248704 -796165918238953386351796566368452608 2560085706615329062446440845934592 7453966812355886482818094000504832 -73388838311151339026537202749276160 6564013493107349026977999195471872 5229361770597512853300060801204224 -870846060261611850381965481228632064 2894731353577058082648761456132096 644167942479369043987497675128832 -95893016692344013497803891168772096 3119501485896505676530233888473088 9279794729324632373300485045616640 -568934849780664493789746164293173248 2180860956535652488204207282716672 1660612633942211336071978724360192 -787356145620522202899828520662335488 4309288917012654719502980139188224 9914092899322060376961997391003648 -953887888999698185759249308774825984 3197221187211359817407110360072192 1573529946080129448527418213007360 -369310656642435169991426445536133120 2315962760974454527795171910746112 8073778264473249324393753858801664 -530893650967774577072826973690003456 6562736538006223955042268612657152 7045204059222710808921040241033216 -996943260885993305671039978326458368 4255615013768891934470793204858880 662982964631871968339701778087936 -870421235840786113593075837945511936 8767361863251766240552619396300800 4255421898124201438039813396627456 -63623524851978646079654782497193984 1906705298222000043980465635328000 4203199736961913009049046559490048 -227642074726877786916520698893565952 4135986495826686756795388895690752 4743044997105478149889211089551360 -680643965190919112934035341703118848 301511410022347122583343550431232 1621182868604777526635925946236928 -460412495257403203283838662919323648 5291699870179045121477040570105856 8982782841457768358673042343198720 -898884227960147825331955016918892544 7865868720315782681319106299297792 4540277747780671202000795001159680 -783591113591636966304124540167389184 4979350404678816143389565455958016 5849950322715131887411930064748544 -355410118393280115683948977729830912 8233608255070437116116510007361536 1550154544113221586440641560182784 -165997251281699607653696448202014720 9985131201714822590690482433556480 1340316744885654524757379651731456 -737874086821655527091939865381568512 1511359044081847836605327846932480 3369388970617073104212157865656320 -914009321566733276803661704663662592 337520453034343774570137893470208 4879081785895660573407018875879424 -268702994654836445636631703949672448 2988203095206124432632691646529536 3266491205088720677533450135142400 -704320581498751798036103247674998784 8200728326019521002792278659432448 5397997028398293974228981862367232 -404109166929221912343489432002756608 6712180572469319006499336498446336 7871842760296065138363137263665152 -387654211775506756060370028191547392 3760211913634645617665051482652672 7414223292242122963479098038419456 -992108767537966151890948416979599360 8260537064128738323614602627121152 3977487572842603009630730413146112 -269496138632946466506264563146555392 183951869461373884895282086281216 1247743798502024079437064220704768 -110910016913313723755152745823207424 4386623762474454199853970630901760 172061434170158976160680820867072 -696868071360144610959539529062547456 133598415128745552832304850665472 6664145415982993761858849616166912 -548641111522005904704356865777074176 2520387377225873840935658709843968 2392701788310758530760040788262912 -442202329976899703229692875582210048 5301172434215464316327075371810816 3030615110354408883394995269140480 -794399740316001842230410179780804608 2857216403768615482953956495196160 6017814959992020430934436367826944 -962114473829834051405006924272369664 1120739988260530242997937812537344 7599558733159972435981038186921984 -493457607435852640585915125005811712 6046207068624691345163168417579008 7708937499681765221937017314607104 -891890462978566201926909790385078272 7335088661179263373731441858838528 6111866805264588435062715632844800 -807535045268664814024790676810498048 9785952274504602753869688296439808 5466337512914802018768314947338240 -35569488195853794845134501238013952 6765276542604479297500351377178624 5574088206119815779505910208004096 -403315718548982311335534946632597504 7943919455062597293126471265550336 5732226066719566881548867903422464 -563215997864320138747093845117239296 1010420987499777658261939828031488 401690463978331779956080849715200 -481843882109846519230460602093666304 8391795262280646114477633586593792 5648918571975877747972878020640768 -66239582253055797336421522984665088 3607120664328363311440286275600384 7907999339836395620485272692588544 -225348312162426506602724576305610752 5962495205872986979960121949421568 7949730841236573751683874730016768 -891404947933425303341063049308012544 5063173943332940007577164363857920 1001509469360790309941276439478272 -703011957938668229545398536952086528 1297588170437177412089829295915008 1996911243796324616030696186576896 -75745760943279494928708983104471040 4907844637013960130039312122118144 5893289715951436465131021295157248 -967464341559028506012798200252989440 9547808112275690106658285416349696 3155589162522715108238463491637248 -532865340297502811640440217223036928 6013797424787781816990245601673216 5515159403404515044071697234788352 -583322949869896738576039322406879232 7513186365372539999013480565833728 8486899640922116547241203455754240 -896515283228979857491821084461236224 6211447735474077091981497890504704 4922756830066743176070784836698112 -125282807329339865532665700263395328 9317493377139650667997023659098112 653431113073599008649045965012992 -640411746399138755398805582960918528 868788699268024568013692015214592 4893826260939454796675855559950336 -207327122551109557001911033523077120 613363866387121482781070909767680 1841974422564850756004985605980160 -358652031263759955422469819549614080 5405208636801238800781169290903552 6083298147427397448558768646258688 -874950702805024259119657667832840192 9377852357310418761140932404314112 9544903152927039789293288596439040 -440053131627717208996587427397107712 5273492730256820262811874824814592 1973767581182331854926234943225856 -980887524358296118282867515315978240 4401666095180102022309718909779968 6388496240405289695954685566910464 -556562945855598730513202605725843456 3763024534312380212896778067902464 2231497419820169603203042899918848 -965068258271726872623556194969059328 2693918043996525580458809960169472 810608062103291588966364169109504 -451926265299523006630402808059265024 1042060919630577577152714532454400 8523935196439786247667003909210112 -675620146681063301800485713031987200 1816248405044536664691272490942464 628785419718612395071254697082880 -848845243822573074810260930116452352 3083579203187819290993954490679296 2827204759871398139235105996013568 -871141608204991132011948763686895616 8770362519953460403794337477951488 6662304004099311669064039823048704 -246000721011779599330806952032731136 6438709293197788243194444873990144 186285989248068859570222195015680 -178827560065980006785332844689358848 5713464025791417739325645824983040 2928909590490718604656884326596608 -599208147879758524696059876925767680 6412691839184163410947936383664128 4310261600992409980143558163693568 -867804538344975100069919425394900992 7106981647146402920045829806882816 9524807034102364306901542002229248 -777364741107245569465043150530674688 8901692480798756489118526983897088 9622265747743709154156159428460544 -299670054250974199230711462006620160 3662083104741439117818196096188416 6688058107163550889909676471746560 -844932980153478323502523988825866240 4546434856435179778697845211660288 8614532383698979834559262969823232 -4214832739700536696836288289964032 7709744366015223842620775273070592 9704849644137236349675677771890688 -876591302518282425849083666808963072 5452384943535474843153193561489408 4122930288538727732608546117779456 -955491032115419952556234252652380160 8990874541863609681387441159667712 4824836281723902243633407656460288 -947879783506501665818069412742168576 4529263708016973758625455135522816 4245822281496623935305812738572288 -649704144746514450750009484855214080 264100752478789133143650531803136 6197862430074211112012754869813248 -256060155158748583744574183857717248 1392308410097665143666320382885888 5844536671516238699492022822109184 -206122378855533256686258113675788288 221903170400084354297851094761472 3358476341816115379945158710657024 -54489835080026599928553029136023552 2090933999614422889636362102767616 2035238885506946124548061769236480 -170761634760488073589121955575889920 5379698579739201524042898960547840 6411990313520102892740886900244480 -1166648718909714128750352055402496 3079976790676896108898703279915008 713594647403385393099610509017088 -625529902043868012979275296443203584 4229826055593481203549101839351808 7748844663698533023543299802136576 -605026760284694675181499718391824384 9054426945982057182531775920865280 6190592288102808739801845423144960 -752287125155563020851663233404108800 1621152241000174387949203089260544 3358397499389927548389608292089856 -987265074557042031789858485576925184 8037098042468151653757333717123072 55401678951315279202077695279104 -312098858377284546160422465300332544 2525486840762419230591959718428672 4026035486678907699832607544967168 -660103711881903886258362483101138944 9540243216570406268145295645736960 7333687240041623507590531677945856 -919312399029285097238537294862876672 6741896299060716789624348726001664 5545922295257394702020339658915840 -174324581742855614393058922036461568 4034920128944077033754298184368128 7611046871228695063506954403971072 -977052220679210827667863107643899904 5404336401315232021407142116327424 21571414883782016485376003145728 -202113368229966600317943444580335616 2546757482948673259240398627274752 4466442764870407383222720818839552 -244524387995086183433164065049935872 6078644801057938432473477899354112 4262096384683914544001508645535744 -778476142286808387938497692178579456 4775110269322891022920044735627264 2856555469796514024531533611663360 -786035574336926308400558618995326976 4556019954437019067966222594211840 1399625211874251695085545561522176 -97270800859336477037915572623376384 8567651968247064146615055983575040 2418512418570575873262405510234112 -778607648665664814975765185065648128 8948412188905224499919353754419200 914489868001347338179336942387200 -358846279362138798816762111769706496 7224135006720402901359235197566976 4747160340441624623282217595961344 -910676471517972623220093023699337216 466902043345733545033431680811008 1895051589708096365558514124324864 -978667417634059184784625816989335552 5269653406731898389287846035849216 8695061758372579807321648969809920 -451448192779626252843219830681108480 2185493347692776563817255719141376 8261682972363416861475987687211008 -480250873319182090300761345255014400 8105288899752122337805975175561216 9328851766999966038551023614689280 -512518738847317822729578010801864704 2072389480265773917247387841069056 4583336026322951474103953051877376 -591717653309966229838475794145345536 3795409392979673707787806859853824 3984190536390700205728589257113600 -338569676290239234957574765058981888 9507923964943552987840891173470208 9255343502475373376475894034464768 -926789423079202266811026264261918720 1277244005230185314922341618155520 9139793610628605092046269797367808 -521542326934146824187423911323893760 9566561418705269401557667686645760 8205561778326162929971116476727296 -607378408192818608098119516109668352 2328460538151530593240733869670400 516061426825093499195834908016640 -71469845626521501794681566414241792 1803983295956835897611148828082176 1042347988874602097386897320968192 -762656762414473709633930284373114880 799781270974008108430539976867840 3585844081405960141184835050799104 -37043243968630894610686933613936640 8616500017738519191753337698516992 7694467936132665255054863392309248 -550068544141622769974692385967308800 2988311532094466580696475377860608 4471216105621102745139510023028736 -290357060466357892242087449104220160 7226448545872962140544362604396544 2624614150343246653678213071372288 -597383473193544123394139453770432512 3202744033612221052339260789620736 8679221293832042635045230237188096 -515928005551878294591667136282755072 6436834905042748671626719552077824 2966074235652541477287710754340864 -868385353610692471841754428796305408 9007064334767921243455861678931968 9881924065525688736272263772372992 -80560316728589369606266649770459136 6437680189480853321224583200636928 4305245357892775844995313562550272 -416734596891568287141224376197709824 290862667858576008799421886103552 5481924945252823550129994777755648 -338851633798090813380474629429133312 6618749104813623922559460269096960 637438116871306275596190095507456 -185161180494460055245015097918095360 4269418731095577348113470106632192 9516735763826504388689722137903104 -381874382467830929670937965573963776 2857073886948993388107099065548800 7562375866792205370200485131190272 -516622762156312668098890796149768192 6472172416006322891196165074714624 4264314014619041122804846798307328 -282895215278640705972250192145022976 3471371951745163447559130756153344 6568789461854247318560373798338560 -887777364092338152336519220422508544 1228216878287381387867837949804544 8376651876324189951823631504900096 -442266174459690836413770275053633536 392375876489371935875303957594112 3644669489912722248407091439992832 -191653129790315081286699530026221568 371940823221875573094126989606912 7242062071195880018101645088915456 -704108088855262172302913126554140672 8576670091980961869281456258285568 8738895778345053298126455138418688 -8415125461526884421053977513164800 1669822293729111054474092434423808 8314835290114083398652301659865088 -857334489462708495605503365939724288 4928023474320274998789334443753472 7574105002190564406836894780882944 -607298249269404126608538986650533888 5619577404013539924086534092881920 6714240178310605129869829005639680 -556710367502300565507181550577385472 9644405991314944190914746910769152 3672565468995820210015101188571136 -569529936832080032365071334348161024 8558968089331500658625557567635456 1291702461038668063328125862281216 -538980203466177377640350089610264576 751764658068825608456250664681472 9030618194011064548005030668533760 -246656225110659406641766474604085248 6203789478716868361368839032668160 7089710082518762763657142528376832 -35711427476946055790789457094901760 918325326232253129772276914323456 5097109076794713170521606840123392 -573200531861705475540877045393260544 9602086565091104057412713730539520 2655533839753595716964485703925760 -328647059591425016389702994500780032 6396899062934649923434305382514688 5740588914679665600327713783021568 -329478586563626036817099456715423744 5421644767514902585675883699240960 5945691547112480457783346689212416 -58209489687942125479520804731355136 2885428257564148780309035578556416 5828196735610268997499713841266688 -395782861630603766927505943240376320 1755242315626421296733819401928704 250020227795344856184079547105280 -733936698736468569334919602079006720 2045594343017710608574891465637888 1393467375586231218607221309964288 -498895073693438486874162702080540672 8020616062465925486267515195621376 8982387702194569061064859445100544 -260510352336024714065981608831221760 296425074413148079322356737114112 6722719047899530119792470452600832 -718106802231280203915511488665616384 1322499815110048475156564194361344 5087432059194122148050435387162624 -738587749841058880067045808360390656 1134553697302274444336933422235648 9254245081428767631702062494908416 -267830678580679930593106188914655232 9000057698750687506401370054852608 9452715456893335971169314642329600 -196993433968477803730086658802974720 8575900355699560525969663631294464 8090473004308815600851307127111680 -599666468398483074305210295938711552 4324413825404812081747824513908736 1726499122510624587377339524972544 -57129372339981141835303781633359872 4859158863698203051679467062689792 221124211478692692782848443154432 -694952398310287326371674205974429696 594752240237039893242393680412672 7164044371028245083094754837659648 -713972470412825994463436727526621184 7422985850870066054274606394507264 5672503309077153362796522378362880 -419131447554470517866055708138536960 7518257098614759409110026184294400 5554082785014135196762154370859008 -702165492865963249339945405651091456 2858313931415490110743391141625856 61445352531645385860963853402112 -129840881810344146926907550379016192 406180390518827712831984995663872 7428040011567287875161451663458304 -131849662599729697078530309001052160 8881861475147641441522443777736704 1407681880641262638308676117463040 -989760046831596043565051984616620032 1344133438513789594865219678502912 7918319053336885161413646479261696 -641822593601029278292699161315770368 4169106171095575630414125268467712 4440805906918952765780255890735104 -503163568115400544179099868319449088 6901134921664804500915593045606400 5377783681327098399857080503631872 -409474338811607465489097502129913856 9756169910782730381197658399178752 4734774688919244315536612745281536 -964794681961031511382278399793823744 3431004781267922940107938351546368 9836280771796568418192134045171712 -962486693921138356129499858723667968 2317277194682329814275060729380864 2419125741029940990386061189316608 -620841908695871401104797146774765568 7037168562033047845872701867556864 2058802595274218860122626144075776 -630433146700804130035895769076072448 1237378668598988659007180536545280 8050811045209577656329002905763840 -403861365864446761271111856901062656 8591543791755012176948247140499456 1176110292054052374491975550763008 -769979883974808927272363197919657984 3609103415645874728899256361418752 6602267772614213340545945949962240 -240954771078154333605508883421331456 8850737175564138333997924886773760 6393625963073070651940045653540864 -583954039577998451499429545302294528 3616293250766825587102292545372160 6628087666955578003308919566368768 -337798296158531279362600606841700352 9635602203953665530609646140653568 1565308649418249445378552921849856 -89246359806008538963855109435424768 8371841075437211250181402315980800 1743237194149366106613713643503616 -85061743275271308417423230338334720 15611626409442963996292004446208 9054707112020943773275353822265344 -590492779285172671105536664266604544 4372263384970085279398046650597376 8415606539446054264348794268155904 -232298601906930950845257016152162304 7853366066225122313224840045133824 4897352723087773465595319630692352 -37533482588739480757492389574082560 7235422791354443212532908289949696 4139220776981918561808142745731072 -965858029404788873732559053946617856 3400026444725891570472692253458432 6657296208459777621891513929695232 -403868923860395740572229287408566272 9535983413006193249319528316272640 8063043894897993192205394389237760 -200450255860210056821339422109728768 8759653015378514313349832657338368 6157071276476218260860363515887616 -198793962015813642907379571674316800 5781534569371363361558395650834432 6784037125213189616482176875888640 -656312980827825769852305948159246336 3474622892985115514002053898698752 6590664876237981267878588922724352 -139726409199636568137807329421688832 9754096632169058074294984835596288 3779113346087555120538672429006848 -332590713367995700667288721568038912 2687348770729131140392632549638144 3302779278195366999217019505606656 -905712206834264327269111459831873536 4027264157889191993267383722573824 5628539904713031158983822334230528 -85498400093580671828817703512047616 2094773221785766550357854304337920 7691009208669917631560144289529856 -69179848484813224315012176804839424 1614442194666866378072993847836672 1977213033421978555855820073992192 -448556457362118779308271287115186176 9660274295802487790680858817462272 6356097093291123685578889498722304 -954499065375278358605181609475833856 3234735513792275971581870268743680 9939246823116344344200894937563136 -43430639575282083012116481895825408 909414580220745779830259867189248 75293651168967273659553189724160 -357771685170028916422086374534938624 6679451850242628466130686998216704 4670251086768180505402938063060992 -912562861991039918515141013753823232 914245746825063440422600985018368 4896610782259412757018857091104768 -989258166735304468355119318233513984 5393727837876083611905667612278784 4278052365845589942671589161041920 -771848886224063627272002140400254976 7861994966856681028164186739310592 5357516616240796395994019862151168 -994335415375636995997906817530200064 2920940561612897143195096879988736 2465971809430784201457929616883712 -159944732039773319508306752207585280 6929321910460022568380046749204480 2385656487143745961314185153347584 -109821441697856885594395872885473280 159714179229550184735003799191552 2798002590385161657842228793442304 -880227716569699346321873569740488704 7790287349048562365216104575401984 7715829590704090123947154868273152 -500228420651636919758066121353199616 1996642781097877093302861140328448 6582585522318778652733568129695744 -393985434071209077806640868819468288 1543187842827892305495826026725376 587748804844738394224779742674944 -40904086271951648281649167288238080 9228764549759623974153880206311424 3810816088443961254002652373581824 -326507750360656314440682436617568256 7356844953058612213317621732343808 9942284359772551128192609201160192 -930974723720117804454111960314675200 3238959155878247233627636088438784 3985262967254195865706483505168384 -885245189332369291172539408354115584 4521247624837095286593768004780032 8830232683694716282812137528623104 -508097458659339958334792937062268928 7057382612162463874226608903553024 627157266571134317359327550111744 -582252362022485651805879796223705088 5002818097770258046485272304025600 7359351635483562653804322774581248 -575237818497189995032439307783634944 488208131742355483120717959004160 3676514445184012747182276937252864 -349456008910025867558983739241398272 6791726428647164898251282451529728 4017071750285807261332586014703616 -258295310704310820518928466237718528 2998785415156219714993132457164800 6855648390156423066622486774808576 -640585168103283988372646517798862848 4535341254320808385440427687280640 480127644931330718406163656867840 -658823982155990474655514396945547264 757318778272906086459488375668736 1529539111683921176270836424769536 -146456767770742217123048564589592576 7813207277570500221171133308731392 1325038098370031791462364039086080 -705052983166951754144118189068386304 2560364927051489215001621994405888 142493211822781182623914297131008 -652020021869754037276175156958461952 8871319542734142185896308375552000 6090890351892510760532742726746112 -926217037775968965045126895096561664 5339750744199778348347020034441216 773082420573982753659450258620416 -978002787202742728264356482439446528 9105917419046013235018182508412928 9222255606017388620144241058775040 -834048031543961805040747219450331136 511829648892785660164749058375680 8694228855757842081000760883019776 -76884691571731117445712981958590464 2213529791280437590311114056400896 9102649097796856518200819743457280 -21991656231460236724611934591123456 9003893295120109648599017913843712 429116137928745710981143712497664 -806247332603564923603831024756195328 9118582476689450430011323751333888 5299551322411642968668658288558080 -921416105401600980431944977278304256 4651172919425854483792123087814656 8052260562948958049961306346225664 -749284378056164004918831510435397632 3895197737886177631564882014896128 1710496097808331542119073865269248 -137409291602103357207954175045926912 4349445946495517011840743826784256 6273568339499611567024388498784256 -915988271695235778030833584146743296 206554730623020153827738985168896 9461627747159804182559752827437056 -369547912704149249577353219070230528 3450783249342137622692150999252992 7957606326429984863037596370993152 -781099129704198774773575172432592896 1659825321205269243711676691251200 1671507707810505886332392946270208 -618905542357598352933016081704943616 6859400542014894268463653098356736 5807019363883805335585764247863296 -53980785585729226197236271089188864 3536619772421504076354987352915968 1236640160178626520461896067317760 -701407218726123420147171407398174720 2442423626856407343958585849675776 2459578618749366757685536304922624 -247457311077454858893544163190505472 846107935178090425207289332891648 407985961695267911904858860421120 -731198855233708823120546912763117568 9677331697532751577523107030630400 9989297467699451848001367132078080 -861684031944537758938844218116800512 5519934767394352900261616581345280 7161844609243743229228459315167232 -920336009523828464161623143272677376 7132286071654275829657950419419136 3424248722932244607117460670251008 -121504362596061939274885191545389056 5012477423747883789895366973849600 8583252370299251407526911193120768 -10705025072579263714204967696859136 5630008291461172484163661211893760 4214693201696497927321328650551296 -190987093878539840338717990772015104 451625023968180849442834404605952 1948770510200922449761045231697920 -611481731906657670710478133193080832 8399909801395246878512936053112832 2099055285325181528272980987084800 -447345787037642603854395167039553536 1354604151630725499098501016977408 5845791966898599175454872035131392 -110843082677675554297758623335448576 2555531852375455895991727324921856 6016244698715009604961417528606720 -973026006316308356859543827926482944 2424379604306617977234510703493120 3137749914464088072054867163611136 -843067764797155029147302710432759808 8784876049294696234810301111861248 8566523429260150606916019854245888 -796023350368353194760705927775518720 16141223424210916567980865224704 6981162333511079686856184246042624 -869716929645617362151627284249837568 6654874321406814161219604302528512 1258100877046033021381445609848832 -854730897348893670592963116437340160 93318945900927245249235868712960 3758655607667867950526733679067136 -839718502616855764481366182338756608 2382600726229182554567281129553920 3815950635822330326741588440514560 -626774211552606501483456072511389696 8825480400958140105154622935531520 2756044960283991504914849009238016 -607247590064151801462646636879544320 3599045258586283936869718436085760 5893578180550465555766450491228160 -339455083641417987996542041273139200 9545030728996348116829711909257216 1802743825567283305357117380100096 -165848566165835172070388186151387136 222045888322655323207309673365504 8375164339633643371419814657523712 -222215263423042934379934549215805440 891951694456906601198647188127744 7282311858421822597963907478847488 -572926757569431247033628113474945024 1303573689683858963070801835720704 2418145874515600795942554385252352 -781610952739051565722560486715686912 2497068645249674811765918217011200 7190971715662284337522781523542016 -522494177947417098389146129492082688 3711095183475528799622188161302528 6149887048954776322923144952152064 -567339982196096765478611945590358016 6959718272071780095517520327344128 2267775482741293288790524904341504 -492427870340954385692394266015301632 2129118843571776538478546964709376 5608236750270159660573240131059712 -252919225006169379647559064478547968 9874319807717230758827206729793536 6085265902739187347897841623236608 -61975725380631547495991507043745792 6413323917089059799012481473445888 9757753493381009997655499440390144 -660968474870254211878988874596220928 5737727802903314475708872317206528 125542578401233657005137215881216 -187571444936822937659626530673786880 9102646362342253110595156858372096 6767932410218710856609563144093696 -214897646773573627957704017800331264 2949100528686756649468191980912640 6335998674950273295934973139746816 -313122999015871733180850880831815680 1131283558573537603273513408397312 5929364522612856593156663114989568 -2402206837793381344884717139263488 2786925640646484168099481457262592 4457977506693637119733375778684928 -567597741234798319420716478592188416 743907096281447405194598873563136 3024246165946406466803297226326016 -930664168355526389492912208234938368 3272873005647661757142062895988736 7434568406104251766712624463478784 -112409891439442162711194438540984320 9444378103265902057629808548904960 5995510902094953442772550418432000 -526413998537393217458434329179848704 561923382734562782825621217083392 8076490392163266763300804990337024 -427256675029059976660985736855552000 9593591686272689415215055691055104 86175436000308639393294520942592 -779882569401052587589414951814430720 9354798382400048268948708169613312 1467999750298535580325536778420224 -532233718455481649562300817464098816 5118394179298885808681495203676160 416462172607873595094126242562048 -653220086775938788183453883168718848 7876670921273572990503206745276416 8957618256622731722643657034039296 -720434414221347324033929312676610048 1652155597547300840696482879242240 4062738994092631234973258238394368 -873714510111421886437850836392476672 5495473232559660126398469501878272 9812720861306463064490412120997888 -837315471373191480735453758063902720 9044673600388252462255121876647936 7487265448460485030444704685096960 -171802547293154676981590013180379136 8619632442835346929639749079531520 33883024115273996393903667806208 -696614513582777073482579940393091072 4211678922821211691277232684138496 2014587418976481953027565002162176 -311655904127504511825950251610537984 2860566424170814557538283115511808 3334873595373282080633846503571456 -912221597564207397276100552776744960 7592694767518927986711665102028800 5047828271294795000814849545469952 -844068332796092389512588851199082496 4562664863400842945303453789847552 3275004211468530828527934988353536 -38532117723182057039540734767661056 8933492140939752659343517362946048 6521221463682863120327154832769024 -651463250031984499212537694433312768 2277038645626497327882138317488128 9054457954269681647223281209573376 -529661283662533207192063168233865216 9032676424416023762578697235726336 2113369827354838130338721616101376 -896093387084975483046244683805097984 1072463966478259071834422589259776 5973314045392618246150210304606208 -222002945910940183393694426305921024 5849976876213748756221046506389504 5147706638489774651589255910916096 -505558121706320221486424086074621952 8792550840207759315246214283264000 7306427141193006645441767181123584 -552546571845782309845119093526495232 3656015781935727737196397650247680 9023580367073723194093646251032576 -32307156704459938279676397460914176 2396948594533103097552405849440256 1152038126169242325682405574180864 -698832106848207562434605791355863040 7672376114590791814972768553795584 3427895399035215370749742598324224 -599063637484637198963825107540115456 2166092382514198174212465295884288 5194449320391104439443162251919360 -510684312609038180242885389209042944 4595913224659771988645481271001088 2125140604453866966287879000555520 -198459548014687660548012777995763712 2714665548725697294808960271908864 7753681666633010048025781971451904 -903708036443953389588203002442809344 2261765941295236108246906071678976 8463472966303819439090080048742400 -330979218500392675706369829146460160 1914590075124660621617270756474880 8593288732553968926783116490571776 -352845203566047098041067046495584256 5231343840379681391818949682790400 4040887626483565225708086225797120 -883642298483569451850987386592821248 1662406007531966164261293741047808 1462641369078735464799956757381120 -604731442367917524653929248367575040 4290847088814323056652828329115648 490609247819670239457414454706176 -986591856057095151556879258969178112 8682292938047233529455125846818816 9181741141556316411682817614807040 -489365433244646213741163869703766016 5636442081543574769175427924623360 803061729897830318451813573984256 -311038428475254432370343938340421632 1291159630242353821355297902428160 9154792967638810146002096659365888 -312685887504113997629214374286589952 3927931811354020755557661146087424 6281273536995652547516695593353216 -600513220398463773614771070270701568 3036463021823381031010404201922560 8946777666792197011659865261604864 -881014171293192385722091653893718016 1167479015128035299946516612907008 6394612912372620507240398248214528 -492091785097346195315126004430667776 4224899722667309830299955748667392 1865142598572053380222416192536576 -998418387783811012081598474041163776 3840832948496228845613456583294976 3789251796183743327145896731213824 -509363675390197168020178443941445632 6743607218236212908399942046842880 7740984277468617088978685511335936 -29989978836372924457811615007375360 7308551208973255711087945125462016 1987822940013138664512738415345664 -37740363435616951716414035188514816 9456097316018459401008342865281024 3832908103379757498462225408458752 -58192059293884265700211663189311488 6991588895150980974650667567153152 4210266338687550170499815577747456 -214212086737092352985207440012214272 7934478924747226756613189102731264 168840161118233834241539172204544 -721903729816293541097675716154097664 8221500809312233284184058101760000 8028026630552748260438579498450944 -55999267476912034205729172230242304 2902640229457377598086967273193472 2114793345753871150358698368434176 -735014416571647932185717788945416192 5352751314639477361795316196573184 9826735292256258451576007316996096 -807633940546064042389664564550565888 3339010068845219424057855265734656 608790935930714660311611069169664 -130977101158670060876822336459767808 1689572562696175846836130101067776 507710891619106122464996012064768 -91333195518261965448095597139591168 4102247574228549865251258394214400 4779233423077759345181547225415680 -105684242948202423859308453099995136 9586316948321349946335645998776320 6775443400619793202768603217133568 -115751539188314054106954964276346880 5741490147579794348115275028627456 8892490465664359690612162556854272 -771625280868430970774822081339064320 5175727209538246401480332595429376 1768400171765009501851972628643840 -882355184352830318465030194064261120 3886369613659347401101273141870592 4123053036845034072634049559527424 -292250390310828947189827086936178688 9165649566698836815103914238017536 2466352364051399035500440162664448 -821942495731220204402376667425669120 9576633713707574198744284938633216 2401499393995585581568944068624384 -970216814925087453528253797624709120 9235063906665748014173495024943104 5439747685845702796323240437350400 -217479763348266425154814328304566272 4679286638057665424259246454734848 8904546928862060500659118064795648 -48856973030540343689230429278175232 3260365146163391369828685926367232 7199171940496189904060680710914048 -594275618190961004960768844065931264 3736747335232613770284009686827008 4577246770573852343601559077126144 -151190904695564846542942593517355008 8653301859814712747370348569165824 6667436356367493594655044327702528 -460517015056384656693206059686297600 3078722057161829468435509862727680 9512687126690095508004887785897984 -430378212028198989588548559380152320 4323081288710831867579248790208512 3191948642215020997099181947486208 -734699909612896603031398376057864192 1251562400201874231501705495707648 947333828967944787331421128622080 -975569073421845099543991625273311232 8704442585442728691752020295548928 5612558986429369997572893401153536 -706655004809223663731568348237922304 8293324031281215151589280205242368 9925620195338594686830411992006656 -539641737244628157590748899919790080 444943956578529446370915779608576 6164142200957174553218689351548928 -252364303522020846546372941097992192 5853251251762280240026801489838080 4151081416708029054992810904649728 -684043541833712603358970212507451392 5344686617484529166605438490247168 3181441423721765480145246773837824 -817148832435649223739499421217325056 2982831137910898094611788908724224 8350291894350139947917863462895616 -198287722712301697375623059225968640 3425002069301133242767197362716672 3039907892277058973024486510559232 -919670727797488108912825850952417280 754893951609978202744227733962752 7436096967372772612957969443717120 -180526430190715000418640532045037568 6021424739274211756550695944192000 2662184036994139222122389041053696 -942497825159867109030753270897836032 6074422908986489969557641883549696 3482785774298378101644365349781504 -929467264512772735723933647251701760 2260225954567511546821311457132544 9844304703784311978478763195236352 -146035942794596211387007635814350848 1989484445458384068650524840296448 5088133512736509827564252619079680 -65516228866949438638137105742561280 3347277907092446070336253476208640 614162259236976846155417087115264 -732855364534537559506322261473755136 2990787123348682947890109705355264 7498943741041054715164444464250880 -1630407282863173682086928950755328 7759132711951342054953337032278016 4330254027808636269841631775031296 -447110023556884906400976758735110144 1267405178072436231120026679115776 4044697326314424814541192000700416 -500026502456483508996455659546345472 2227207366281960900937991254441984 5684971787987787059814756100603904 -159394552230901266018921891326066688 9239620909327561123880035965468672 6072917642283832564863293003399168 -364284286803798843079160549211111424 8983020105527081906628485491720192 121644813504194603362179805609984 -928180526864878996615520139016667136 8624895640867029109315883323359232 2984283624492149438318252306464768 -970398648956603449026043238754025472 8879846389256758659869917673684992 8729404788947327453537124820713472 -108504026727808818589957269118517248 3929992850939453679909529565790208 9108484596762340825843040058867712 -442311558475743264926128466993086464 7343110470178488590338105574162432 8126872690353447312794466841001984 -630472853289935001353609426860244992 4001070386454112556048832224296960 4284412984065745695736328261468160 -446208823773780336574145442812526592 6781979573291163445316513746124800 8950511628124841478283004192227328 -35736350076384059838124880975364096 2288323025480242223853424456237056 6905287068177180575050217482616832 -311869651655197847444490918717030400 1374148760415922625390409773219840 4374534140372909300104198268911616 -61048466649533883014850844347596800 8405114151192298166007871834161152 2619168227535417363211216513662976 -759374522645377897456726506240737280 6150395339306093266033523094978560 4426338685931782279773368375836672 -193279327516740880951346794321674240 4978020050885372205025564158853120 2912248345748047915927301133434880 -681594134226612917760792386854715392 9355003806142238268787886089306112 9363239113369758028659410801262592 -882452952026892839491542259200950272 8963442818270433254359359178145792 1586308633795868227690472918745088 -630347411555939676465129415275184128 8409208695925090474393864878686208 444177442444939789635370298114048 -444739366022861597641438035269648384 7707002646915464805041330112692224 1515820303292449808976211599163392 -851942087783680347454106192050126848 7555122410929026500811032088281088 4442953000697059794374641720492032 -472702263379115159311893364587102208 9275412842123193687809287736262656 1152472688895847363436728469684224 -68927738358149459048503781164580864 9148489719415172114922064719118336 519760497709836294480282559447040 -612158115305110789526921512465989632 6270442280315921530656015710683136 4941190577674144859823575001989120 -848844458041727527398910301862625280 1410337464269437444135982219657216 6226476573383209395912297404170240 -49897965458749714183219963211284480 2745294613763557759558717381017600 9699291563390394074254708941258752 -951042551110878815418854168026152960 2515762480217096768964056972263424 3550020558536733200727070562320384 -176593286146979289172365414523469824 6748072335031803884210475132518400 3337797821279976284670416631365632 -92475792048924813371334820118921216 6585638412692637180833761803108352 9618988374277395372735136519946240 -557201435453503511752793770336190464 3582091355470545385422160402579456 7849170509683075892480621607387136 -390144415079644865879855741364338688 3128584760813739613553166032830464 9052117192292817566857579416518656 -771764072581193833611118023859503104 9482030226361839950002088109408256 9023495103478992216053603461234688 -574863156417923085115880439753474048 3557793410887646606496143572467712 9725021456966160008601523516866560 -685879214066301022294266315576180736 5403129348382160401948228112613376 8290169754519908926640766488412160 -583735223427642755856375743806177280 4060692715677441067141523411304448 5656554060697785774522837518778368 -629196717080580985955122323977666560 6512280017945081810617815739138048 9202955942738950567076526385266688 -132607862668977917053978976005914624 152668627809007506952673160069120 9755838860484501940079639127916544 -58447501780290630822505313460027392 1509306071273493385994019551576064 8776668554386480468175618836529152 -454857445989084970336135583142772736 8403980216470265097008838380355584 3635882922899255033405738311483392 -407451986601811173884712918771040256 6446175940176123811207722873913344 4165645469544264945480298930372608 -191497664019064771820688253325934592 8976233656026476083569602882174976 6020181819610396226957657545637888 -857638674544981801357373219440427008 3424779179614215689655426807234560 1162235281704933451399093693710336 -173203294365146385817260071827013632 3750766147245547027540207065890816 2050720776072621544061560430788608 -170379483540784573596158840121851904 2180770691702672794613118058627072 4375758963155445049449852178530304 -313673098159069284741219723184701440 1260611077814505078912665811681280 8777375144253223234197924547133440 -866880066649534920770269945016614912 9527659538757223867856229689720832 115625300261756602971437393772544 -660471595455920661880184744569733120 99547593174786105898080879509504 1374457662853960919595797784297472 -129039511066408014182713825886732288 752598490868235904213032688943104 7170956755646233799518762855038976 -432343224523344053474960902006505472 5470787873196762725216869653938176 6194970337637939109876763459584000 -818339660593511655737299239587282944 3844968809502079972190263288266752 1646825073140771952313989140054016 -338554973126480380627589952469729280 4359225555497052088517287804403712 3708146453332865191823175755759616 -284430153019411198471254836944830464 2506183436514631093762567201357824 756173586910301237319167423545344 -328463647258458732220431640442175488 2359586999112692977988655017623552 5865454333513293001972576187056128 -291123403875750229150971294967136256 5502448049772647313917868066734080 2264865648083259879251020477366272 -764487272633755652902388025314508800 5425251637867244352107106130722816 6875934189165378478154136202248192 -232069269893853210681136682700374016 2865377883622048496868907198447616 1476996504404550607742263764189184 -537357136587775889035099959143170048 9954205353599111000311579380023296 5100811682889240869294491962441728 -83639070880852137078252095966019584 9809548166892878277100358902743040 644192523493623773601327417917440 -352082390642652686188354187678449664 673464404806404485620510742282240 5945649124127091065432554002710528 -616862505299668592163699379083935744 5271908711720109840157531449589760 6456730383394268619553588100726784 -259483909875571445730160179853393920 1885493146558446681524642888286208 6224361123485888087377850109263872 -747424182091979359648386889101082624 1060979575483710378474793949200384 11721678035952120383232570032128 -499268668439922556907975633568530432 6158792898134021852727225312346112 6913353048572118790276040062140416 -412265857201875056139074301532831744 1739770022278931977670243571990528 1247659196523959615769374850285568 -332153567356143398573821754395852800 6830655912102541210824095693799424 9667089349668551952310324927922176 -83306183655840968426735466300047360 5128263890419594079581844837236736 9097668108961878923417992873115648 -442643152626057335289134145458929664 6589262245430234863065480260747264 3786230950292372533133794084913152 -52820863861815023542477075393806336 2434790778496339650995985309499392 1328252956358239510799068036071424 -552610585779685442582296241559830528 8860145951487908801753847137566720 3710616263512327063632370506661888 -348743453098838753469536149784494080 7767889583149078181795801019187200 4005355421887808031339820479414272 -28214550669997302446086929132814336 1316509638523197505717078304227328 7972938116883769895441510638288896 -923049284974611800849092092341780480 1763874547312402818860004868620288 2520747226887684923706312518270976 -85839593979960830136881117059350528 5478886223501801096804598093447168 391591188696219550941589773746176 -931855157219282631466012448827375616 571135532379148215597483983634432 2247059360877939911852350683217920 -231535959974912045094121137716068352 6039169117362683272506432647331840 48098373419456897583749229707264 -128417050377437329686142462529110016 2278436399520659141816166532513792 9456237891033837391052365134561280 -246793236545058193606278908439691264 7874318136633481702598121225191424 6390757619611552566610867135709184 -989110355575850937001476606748786688 7225681744700900418617686808854528 9348878800278035588981219968155648 -680076862891712992805362875349598208 3110617568212434948093225702785024 2149954226078030078716771641065472 -636632604220840583057852503261446144 3496950606212388887539357533077504 3071668664642447555910578043092992 -138279688772062483903595313729896448 2403830434429599436812757042724864 769402246325701810965913985351680 -217878458120387165676924064034193408 6661811885691293183438971054587904 687194208823480106293272546115584 -581048366382457128806167053481279488 9738990741685613467074020276961280 3969974881577580755940297263808512 -357360866163005431552591426500952064 3318580733688044312627284233158656 9490221917800125407969877092728832 -865571700266516106526704610796634112 8713109936307265571432952179458048 8463267739007966114385724216180736 -197713571700873907007608611019948032 5628448774108021629739682347614208 8900690216170696976174636408504320 -426969184705330923872208159265259520 7378244800056445961796287054479360 6857389840239562651278320764715008 -222249186919250254274673065920036864 2193199334182561765880849959485440 8718014396046080882578071461298176 -733510616366495365554872567090642944 9821055576176255549073746730942464 8518652803971732443551776305577984 -182311163655989541474520029053583360 3517228584041183374451172588912640 462957511185109023594148125474816 -896952420190677742807279694902198272 7075960844573223549211428255694848 1414921692807971283393074499158016 -787624514217526439353439023102164992 9232197435939216795093520217014272 9592652681622515546093912693145600 -414224835572501772901394192713908224 9805598677987973643110559478972416 8155567785263299978342347556519936 -77566834747720001614291709473062912 7092990160759565953516642907455488 2004119146566651033293317130420224 -575982796478409820412829574956580864 6088869239329956799066179748495360 4484176139624248720230385667014656 -159407641357787985787326128931733504 27070744092953896690360367710208 6460536945564628205577333299478528 -219055374255091719652071446826450944 1148405339359658759015151756640256 4661775683319784693624577433010176 -746822941754941614671000845399621632 6179634750959400566357350632390656 4727682336502587165126320558440448 -574660206465148754298503642208010240 6280216981723758305516669978542080 5967481659512342495518082201550848 -799464531644158728963576893601218560 5880142270600069739602970257915904 2286906625203148521549771791400960 -841667690635051821530449104403955712 7005536768800996357111958021865472 3217094609743040551064564595163136 -157367053957971500482028882666455040 5219502540937484511017641495756800 9626195055167962362369568785039360 -463594627340077190736673620640137216 8513269002145138113189771617501184 577396887200372381708453299617792 -40208599552018557137021590631874560 5365531075335019133424196774789120 6292006434437622098101746935005184 -365581503054312640941676755704348672 1505129667726264073618489912328192 7923881650232965336894384199696384 -159434189194387921050707455278841856 6012008291070233917033540610949120 8917823020210127269505459761971200 -781337900587189328012935600231415808 5665027752520802603018466684305408 5203631195486402310630908111093760 -800290594960930965236994150909345792 5791670560289983455842758207471616 4034014846513252885427646583799808 -894430813749157582403265850708590592 1808324075697190996889632730251264 3418971546619240474433434473725952 -949195777816049570807495974920912896 3594935145219039504955843312353280 760311331412578305896516226646016 -386966611539171934332642598777257984 8182824473226797718999303442137088 265777296975509620218114177236992 -827513027509319577294938382662631424 3555625294432147456428576063094784 1098804754015936586609968816324608 -643148561369481227832849696089440256 3621177622669536427441664664010752 957078027095841683486190071709696 -506155727271361664558154853793136640 6626508040243446832419525976129536 8255659303736081292762114095579136 -748760375121061533779735848553545728 3834262774120076354186630871908352 2413491894157180005580770170109952 -444193630531831643313593613012697088 7137580838236674234359920604479488 4636685424761695683247964438921216 -43535044818366617979778244083187712 5113477933336521820919071640649728 2325873406080999945098484539981824 -25169791934398005811046046872109056 3129460924558191251321285314084864 3977397966573877400806531476226048 -88020556769329188730573732869832704 2139065840498073222642747712733184 6931518686536390690131422268620800 -716557067165974914382981892791074816 1432657869033261125184946702385152 8879584402982261457975285687255040 -426016314514733503359540688165273600 9925394935462044065669019684831232 5302172804585659964440590067695616 -303709718273435321182046884057841664 6847347850466658406036689303633920 8498021317818971976666573063585792 -751425706642053219939592303911370752 1675257260748691270656604873162752 2924526134459029053069878274031616 -817498950388199586442158891576852480 9260843645253579235201573644664832 3905680754599985643474741916336128 -355740291578158055086150616149393408 9000332257190064023957625729187840 5447982549425768274386525228105728 -666951344456405391705102770321227776 9101751263572198326404719187066880 3516185730773578672479999304400896 -28076197700509505644425866949689344 7411548811977486233003286520135680 5788587223495794875011467344609280 -709575507999778499431946113593114624 3786730820811294704825065774514176 1072787528732964647945981046816768 -501039991655875840134375903256903680 5256408712063504345514043466842112 9640596953100749675302113796685824 -430192637109071911365057203876659200 6409376333203457529143644013985792 5258682255123923924495720161214464 -973768972002686272421354869400535040 7700325642870360812268461628588032 2740704601097857571772474696138752 -435796781530842543119899533762363392 4332568644597609547498859509317632 6195310223788310134744012243861504 -761553073501930787575298264263557120 2576259732834653497681722027802624 9956925953324519396532865279721472 -673903507564982279876880832646873088 6703972765947342611178017062387712 5718118853451403796364771765256192 -702359205300283397293140237189382144 677298771587042139311163500920832 9662289108468746265504166155649024 -143565210244629222027624129400668160 7762338929085527170167220276822016 1462956166154754168001540399300608 -822067942985230589102052309666365440 953029979454426334365288811724800 1279750764433420504799677822009344 -599568998386790791994286610877251584 9773806855893404061849925034442752 5037586520634614544505559259807744 -633037494845253390028865790627807232 3561140517703384211198030137786368 4930904191896135378862246329319424 -979310217673856557308703557461999616 3380169577872941032298159894691840 2833958867089603934341924269326336 -751469045387849496435846718263656448 6224825084228312928233405368238080 5146929976032144999346598645334016 -712280158426765764520414809555992576 9997019676731328177128193159856128 1848326108235900505519123033227264 -742823787737570034463276100235558912 7415662956404963514093176023416832 39099382761699094559578159841280 -852887211817035574943098004672872448 1335490673164134552299360934166528 1578202139935467209432301496696832 -282979367516847939258643882249814016 68611414102550782378726979010560 6311433704465487089559088763240448 -728906400458800252800859034517241856 346442988321812302792516391927808 437692992177236132731121760731136 -785963737720117904696295032914706432 9957435634374229143462274995847168 106405063921415629329744848224256 -762174889041348343546102979208675328 5305922403622014369605994831413248 1607813714004697006632383864111104 -944018222592908001615134754066137088 1658172362969497182883058901057536 1984935911779547469040122473742336 -581614004310654546471751073828700160 7435691718174676559229120797474816 9721551891935000846901103107768320 -116645941755987386150055636486848512 1240690154280899902695668459765760 615900826413771554169381801951232 -24456663808921963937680422856556544 6190829919041290090792636420980736 2569058981918795709211835235303424 -537460412542583936648948808331296768 420772584154394105760256295436288 1326188335464853454751103725862912 -117765677822449871686207467224563712 3424231676059679313393087288442880 5607825956436988795303535960915968 -383731655675209124835312385260519424 2487440893927591881974842663108608 6859862851043959787543342794932224 -652656481072507927567217792731054080 8381311795814559538009359802957824 6216806302378773942199433155313664 -812941948150121174616554243195142144 118173323535055848281941192212480 9016612695610377182082670207696896 -565525937013693355738483435612667904 8818983301747273896407590345113600 3605378362287046261179331498737664 -139001299765362020166767965657628672 5258129349729439700957943232987136 7029297476373238308974162991906816 -488480532722123467058583257208586240 9361226079793934853428645841600512 7542099370253938500703257572147200 -737826869621899727451135287048011776 1971771612949538254165176251056128 8071987994811466340858893961265152 -775694659615874227671802918916325376 9438546282305332283872423222181888 936630803869363609053403637874688 -26596817711086265072322384689627136 2641738826245364998556958588928000 2867257951498266945091920874962944 -346476537862974087998760230492045312 3998069358226638679074363383218176 7962678247819432660303663694086144 -30704566117778499530199739565867008 9272218386637265803413440409108480 6664299048252257847830506993876992 -243652824421424820190231890826887168 371911560292160339510485722333184 1407455151683835847536805752602624 -546836510729530220276711491125641216 9181401230830654517477052770156544 8880087770321826806978023608287232 -397867191714460828691769103740829696 1545001543745843141479183088091136 5803409744263005485657939742031872 -221955585945339665737927815057113088 1174001961726884629224068380360704 7207899333847413804607020543770624 -927253500310518907676853517489799168 6990248707699671540223535537455104 4509856660911317303088293301190656 -330178040522956503830184346295205888 6827451090323358504283637718974464 7147751638324284215148689919836160 -302792801813936480597452576601931776 2320198071064135200997202288705536 8456765279398708592046291839614976 -750561570253334771631881290090807296 7291778963758687001867478252912640 8149947803108635032933192435761152 -488325864236944498274296045267582976 1207829797296964598440225922875392 2996978967446312261840532313997312 -968366549479430028741207212957892608 5772480661789832490280937014165504 1784634968104533722425064255651840 -700967935433374283306681015793090560 3739743469680240562569014186868736 8436828125613986074965751671816192 -525447799373021034277119867333115904 4902014737938956655365153412349952 4085474650531048689083540387659776 -889729140859676710781377599928008704 5929063088299660620049553932943360 1657637391742485951995006741905408 -480223060938351906014996382179393536 5607891741609286495706185147088896 6174478691158018375338809341509632 -599558614554818908983213227373494272 9224115418687085340418325700673536 9741639890331391891677775577219072 -245427463437075311701273675518967808 4167688340126747556734559823331328 2129601240436944222520974610792448 -87362129303770808954519274639065088 6539378744779173781027640378916864 8453804531249430263866050920579072 -920085840991294679431107301987057664 6368988565225813171899920055009280 609803988976602675747478147432448 -439554337609456864382116199137280000 4224574663704025506209880420122624 596751376810449945938195652804608 -467840448384063952881937312919846912 7191224761678646583877927367081984 5484994698262563297545353791799296 -337241923958735502869689587210387456 2950921461289872716779629184024576 4333509474436390042896746936270848 -777545720807339781740001515876122624 3512684652447110460102453642657792 2095500734580525300216130250473472 -181637285741256246433291049619161088 8956587611703249521752341961768960 5930426300144625365798816401326080 -590576907598119931398461569537933312 3885230895668279866727939813933056 4246683501438349087927658619076608 -905676054351455348161757428049772544 750586573317971015647130623672320 265016912315378773790557653172224 -890486305336228740128687427789258752 9168706179571577399225562897055744 453857751262601466618677257306112 -145164898629884462224586544731127808 4244466886175207050557477124833280 768964545938596338056666286129152 -191970087482247426571813087346688000 3883809119574742999692017609474048 7810413260385928032112470195699712 -13689538361961908544998165765423104 5804522198846342087170630833143808 3356885888297011746601402202324992 -716899828474034559060700586791927808 6324853414844880861062904277893120 3503110883207514348516715251367936 -962516863644505035075364116884357120 9834399564923701015633621571076096 5375683376335454468144140820414464 -999532960761899152156928738607497216 7960646342182439294454037833842688 7789536062703758540982123524784128 -859597848137179929267042726874972160 2633940151081760494517387068964864 9814196633296338543318849160216576 -661771735073112773953378854788661248 8456264079541626803017130136567808 750984566255610968709383067795456 -298880532624826558798055562398400512 7998519153750278121893211695742976 9206077069753650855829741099810816 -255752069542455183561978316981272576 4767394786968494762674926582235136 9029345928534424680629947842166784 -886152977004359663333601055028019200 6072852187195759773892613863636992 3369600061870791685824019307692032 -653744164696440830717483092801486848 1028822673758429114116255072124928 1267836170252526348238463617204224 -884566872619808901440733399822106624 8624862035263318019968987264188416 9902113335142101218502431997952000 -892474559383626658313318261103525888 6595369085343901676992635049345024 5062788402892127444432348682125312 -429552651705007470652401388676448256 7650420709626983502716738664923136 4039267827151636101660780682805248 -595862554056741742024887173619122176 1765011610537697160700128743391232 4122590973412886967366214070829056 -192246412493430232966194290002755584 4399245881363376034916351621464064 5834534591899950635094936756682752 -113391063364672152639472511517458432 1856778507209318235234209464582144 1117987525236909504487195766947840 -483892317497831884321903462936739840 3624223218393795615488816099360768 6760515950546322120660399404613632 -662332211453199242026154098526519296 719992687370683264115976620212224 4683923348917693895331379362660352 -486605243616232892598413060810473472 9091644867115732548628589943193600 6808022389603760582602263868997632 -969016632093125938223834113545076736 6123730642563218016102857966616576 7601684698250502695979449722077184 -807244692458682957224629899119034368 4050500937406406487016192413270016 1494934665859205723094516869627904 -221318503207897138730942583462166528 9057648593612178214784021433417728 1170215608664881785533325503365120 -635624219829144949278354908108554240 5424620094201936482985604582211584 1381520779968606639769586161942528 -724734258265479792946778113700790272 3848104140476342822043615619973120 4782038184186190352867745706541056 -682585579872865034605534524802596864 1887915629211231271159985313153024 7367351024846192994481311307530240 -553847696750079197833429024900120576 9298463020808808363043004197371904 7196402728399915589228786289213440 -176689491614441174886952873180004352 4786219693377656429128936134279168 9329623431271760269539226033324032 -165890071118055807505218890421501952 9552005105614296046219719050526720 609367756066173026665640272855040 -979021078957837289021045650497732608 780988774312301345086524916498432 9630999227678623319562649734217728 -421210900402161747562408394998415360 6886307396606933033342987233394688 6227641441218784255377526128377856 -621643025792881693846806451810467840 9809805082859867795508056094146560 2672666869471263159623040901316608 -996515793125746259692049978286407680 4835745339978345911955649309179904 9187239712451860992319858411569152 -493440897802202978981315010669576192 7672706047415248300336461197082624 581550591781559885899577901973504 -877931530872142939229071814703448064 9128789562579965427560932108664832 4423644862330818642617605298323456 -371886449100389774919648341653454848 1483850809862976000758256527998976 7156891526372621194339136212828160 -516239632854459481048503575671472128 7033559874201122928776472594219008 6815808316074826901564998157336576 -124703985648283669025297359601401856 5127010500056537697122214498795520 8040968322077698923773977962741760 -796829700324058866895388925822500864 9474565972544226244211622778241024 1148366677262293365035567409004544 -308614692903144191631148215934386176 5745241508840320117910957518225408 5998393926896014511552378869645312 -859165052282393580717391249036804096 8191194442361250202712569603424256 9138844184429772685196319283740672 -544969942188215830900250215593279488 6985585335882626875323713308327936 6699741161490279194344048562274304 -238354953132300839355475246058569728 5676784703290876044884548840849408 2863379519176117433745435036483584 -232837093929363460540903868078227456 6673796101106596612915747381837824 5364445805186851051234661675040768 -432863700647264183874811977221013504 3652003702378631196362831627812864 5225473423338588583071951037136896 -581893359574262385638536171606769664 6322648129948181194236925401104384 4215266715352822194099214004256768 -516187069010243164517674396220915712 8540603267609310548842121055436800 4272244051315269542666506409607168 -269218556587424358212518996093173760 5517479481945454677589723673788416 497057895769275962602113478950912 -383114754792319386549477333742387200 5409717674894998118588892091252736 7008911476071650869927875941761024 -467301291731765642364731896616714240 8695802165707417289049148001091584 907516429277098912601475146317824 -49127119755773276138167469651001344 5557536500477193876032984044273664 6485773836489883267282952368685056 -915760701090081969630099199037014016 6554603535141173301881224594194432 5121767466639245314103214883209216 -68611752458220061522356377141379072 4776393614912445242173082275151872 5739166512306191875778916456071168 -927651392131876614527560261891522560 7315172722017642257527285909291008 5404725627469986052813044194476032 -719997159943744907360818920635236352 9312416366972229753577184048447488 1772241679638676852699209226256384 -33835563296759023641103410810322944 4841682661269707569721187395174400 5447401523150630993839603379601408 -171469546587314284438282252738101248 2986145096584231261822949311643648 9381036724384326887997286152929280 -361559852780228564526540323886727168 3697567604179910421843666368724992 9204503155047014059467394118582272 -9757072748129758328735131517321216 5667498803050486742049302241083392 5737924433839113583118155849400320 -327869195086697660674815294045159424 1472288023142106043141592446926848 6808665258978900640952822035120128 -418909394585152437309017725174022144 5563357560647639743279064743411712 1706369941479066705701891326607360 -476063461167828871250485060527194112 4327992048345938630142357588148224 1767393077769747367383717797429248 -74184652923822192887269347473489920 6659557449527522556675918777024512 8901189414311515575354849352482816 -540819743867243771167872388178116608 9492669379016449411725344041336832 5484317277680987152811383572135936 -876971527163637996349417399101947904 1671505819657467457173695634604032 3457198683132493378822015163564032 -932703988684678117281203610334527488 9022314737682425699700953858441216 1128234877391771571893180118859776 -803236082241221741914303993988775936 7600333286442936114591659993333760 6994035636442819436540359579009024 -715948398263990378837111338765910016 1281924459256524786290827450122240 1755978199102994232255674287390720 -941720625589941633763680575534661632 2140182316984403655132806876495872 3247748621060126084984192580452352 -131422884774611950059693607611269120 167389960239306757121572473929728 1713395047351574326401922311913472 -329536559472992108346654057241247744 7813228782284486405074487124951040 5740094552010879381799185938382848 -751315896168894228215693734618071040 4095589555807844282552016078635008 115118191952842971646872577376256 -64401682879064964098478213745868800 5519381639374043092310442486267904 2630954510304465655115174639566848 -82554366288944806799411124832829440 841989969950568475433009057628160 7547611029083486635199632712400896 -494872082044524930079999118410776576 6663243948247386252471524854333440 2793204535138307270519492945379328 -632018159522376073213268557029179392 1493481101641538611533696234160128 6999701529246278221643503462514688 -267817869320790843184482648313561088 70092477421559660705988248338432 138890332693315032633623304994816 -155839085643751922799405035144871936 3176110664479759559545246428692480 401575691856968523614829305397248 -469991382226034407892671840680673280 4893780086223277685963927400218624 8778264293129892164425712809279488 -87541605687814396186649643353899008 9849058133226561739005018779942912 7354775749999139701266830241824768 -126638949571041819002381581653377024 755843887473110997387279169748992 577775377140290205407429141725184 -431237455840450154603977611749097472 6192758453440838810750267345076224 6318653903123660697734669924302848 -489644372920106976008243334699024384 9890950377308916915976103178272768 9551098484688072397665402674479104 -180556717534922105880972275426000896 6329151113035593347914833661526016 6003575439588506703509479233683456 -718466343713442223616944744913960960 4525634364376826828934401245577216 3986545968945672229018868719288320 -571561756281996373842353518337327104 1124227066782797774404162441707520 1749179423034428083807774501240832 -351639782660311407626475216559931392 965065654810213928654014232133632 2197970060750906279949607588855808 -993449611146492158867763503426437120 866500935381778204739236899323904 7632946175778113583339598426144768 -149471836926363379774719418093797376 7268485144329183730791198572412928 219883379466664697088792575606784 -347045296529557044397314473744924672 3934221102819213832210973303242752 5378603359317525855578123969495040 -348693081895930349263127973860474880 8650888163863494767414726570803200 7642508712952426766509932317507584 -127419640681923518106814597952438272 6601084625264877854510954445799424 2505213385187690385254601333932032 -518686534367967404979883004569583616 7082595414871496191578404147953664 3151403913966101311611296515358720 -525796254058175772839391169892843520 8704101125805493737170055251099648 2898647247639691855964507815804928 -268869677729164205448885500823732224 2090765228544308303666756439769088 8794682164248468516784254553686016 -313887064368398330852596616183939072 8001797695445147096450166192865280 5472655728068246185201869904674816 -925613693438384633357522124727648256 1004248199700004915182595374841856 743576181069324182112517039849472 -701346963010008192163057239358177280 4176197547229390325856202225876992 2116700812982058209093894553993216 -901316093072364146094971293643309056 955642740943724844054994227298304 1393731727393749001393319834550272 -767321478330119504650442049253801984 9114007685707708909672710019219456 9922874299331060812130685839998976 -731151138105315804993862061611024384 6106521725447378439611220815249408 4202978303990232780474099743850496 -342625193015180078045878260298940416 6825254255939171643269216833896448 5270762263141018500602928887234560 -306002459205488041799044526520664064 5135633630374779263046203094335488 8747937116814116418656624764256256 -487385693195286685776803901879615488 2255765135951949985501323735334912 8341275714024685522915861974745088 -417287823512910534389855950458585088 3705687053940623934912954739195904 3378304773122236055823555883958272 -266876567610852676923286278859915264 3434398052038398579770414688370688 5698480020894665236616734746607616 -314268178310465998552550354920144896 7908049989260258709259950546223104 9610945181836433361448612629839872 -334400717240410332847505416606711808 4140427745427680803343179393794048 9028216212161722405973480699854848 -161785596340815719762267767385882624 7920299300982855179805611788337152 7435608800194287203439431395573760 -679082961907072780642983252525580288 9328625434143610983771924676476928 1178380711267822591329964734283776 -518059232017992771348892620955844608 9470821264235307935282099981910016 3717455777120394836269915808202752 -631702402124368519338716204120408064 1656546905439266757222389476491264 9604753968675356850933734177767424 -873022445771996453434207569897848832 7551935572467897660906202548142080 597615491868172215639554664693760 -540500078730261107791878600601370624 481531147615930521046556663087104 1478288143897635416189749688270848 -226268112113170852690894729213116416 4517131977596212813047366531678208 9712664819724165027770965086437376 -220937135618903631028804425269379072 2270450911661068022369067852627968 7388707177828294743152082385108992 -894413402980088557706258041450528768 2475733613246125779618631543422976 9020597882427392638246127283470336 -183454770169148651772909515706466304 1686000008714789964036675448340480 2597076521160969606063193659015168 -709502737460941366775169384181661696 9224738467345915187434658474229760 4671419677102635691507364862623744 -715308205988452100528249174893789184 7179811600742100461777679254814720 9543476714836718422567312462708736 -127413129318700646142042457094750208 5256878225150029779365201050599424 5246248060299933207310881328726016 -746727231161297450598615761842864128 6388175358349780208984891229995008 4186759076285159530507385589202944 -255107378663731838115834297659162624 9645790597363081924791446425042944 762586122532246654130520907055104 -517108792775327836405899822123450368 6182779758982546119195971786113024 1218133059524706804073521456611328 -993589976105885887318839755995611136 3780798953562873045004827288928256 6435502756740813259074663847297024 -361428002123809269028503230103945216 6144633428222601573286196541390848 7135592520761209277396665914884096 -407178283620120932455471134225203200 9400478929057679058171878923304960 5662959346164099805763332988731392 -145716309862896036934299784216313856 3739420042511638330995948180733952 7550695409781564843343008417972224 -521888487002390348931065032053096448 4609558699923403273139318270459904 1807726587387871628751936516259840 -859978455090332144162836657089806336 93679564637805896793072886349824 9252549439192634472419047298301952 -623451402133322547776733641103638528 8755676926876824942631228561948672 229987798782155091906742508847104 -114534413470897911476823837095493632 5252337260793625739925316918312960 6089879636751940747620303373336576 -649577479563466336092666984449179648 5228410896840680122499299792650240 9859157304102684838820984932794368 -391793314554253123714857691064041472 8175277850930452530148911704178688 5986682108542431781172969780281344 -957334636066795288951569950032527360 6242195681920031071922303287689216 9781057560883927960724221590503424 -968338941515002047304866486846226432 2041351333020120994049905722916864 6690842361363715167241908535689216 -130707752939252649264054570886103040 7896223630568377901612085689712640 6243874120674614991481578585063424 -721818115357213234255695545873989632 7391580009811349447209683662143488 2911736027388911417937500198404096 -26336324702326424210078516193001472 7066362945675851041892589933428736 2656032806111346542998517505327104 -865185101664026694926161989869764608 9186257681507448514586733914882048 4887923190002204790054669237878784 -41908318632836852020215797900115968 7553503283975204408039299111452672 976689799542078730886798603452416 -528525941030625782717643969175486464 7236590750752350783348561663754240 4588685703724297182624759437852672 -674938015925108440557677707314331648 2451990832132330462490652238151680 1562850984622478271767263500566528 -206840236075992133553812433350426624 9292076811559026979010938516013056 1139226660232679774014999915134976 -543199102950726155682845849481641984 7196344092029671782170398908481536 8520370584910812696323510331506688 -157004628054172996915936904769175552 7988880999350000935118661511806976 9005403210005696300631729230577664 -302952568671988663582756747203313664 5699796965983102227241228260343808 6469843173133212651515493488787456 -94171137047417273950965121767440384 275391515111935305307269726470144 7431766983759271077050268466020352 -846790059679548392707097139563462656 5664225311744448798181178602422272 5340969250219759287773172078739456 -833573833787625697196552240337256448 8753014406310982463891343281225728 3987965853833757372599502024736768 -810607509499348152844622834174001152 7933485416140615242495815111933952 7720947313835720063835867023671296 -423306098601390638227414315228463104 7849510514053285894578533962874880 6211352226858344139784851915014144 -652588625800070698060947313339138048 2102014644224280289378089838837760 788377481577407334572780955893760 -550450141757218113631338177241284608 887560518598630879029829530812416 8570877567106719407895336823291904 -415980312071186105343492342482468864 555683521865886445442607708372992 1715371963943124419910810365591552 -250656030262794996408388263706886144 6496795273704964582728742924713984 2880139959696674338524769349009408 -299802420786203917863143576239603712 9969087792528346524764126801035264 5186931766026349100230450176065536 -273423669805002305369926609221451776 9423164804896674247614116355112960 4433713454752920918884633018368000 -219091584858319121774980135934492672 8847318100295447326619233440235520 3337963579014253263120370795282432 -311363429216667345440018476046483456 7686597882011104194551745827831808 330953718775215418456454939541504 -425794618243012212731950622490755072 6865330455093432401946649802309632 9300971820117450558616487499661312 -19361904108857129926799984617848832 5209404346344201560326881358643200 9298480913534725686700819798294528 -88734496285850448013861528675549184 3096722064768900367657614721417216 7198158419227558899205878788915200 -132073346631160949746158671205761024 2551613308793742482659599548678144 5529019956488127931373780845199360 -887098437340191286086313610697506816 871428725023186470179642502283264 6545303011869059754858373426708480 -771205492560048619632533574141345792 13924207559370661704132752048128 4256434837606862531057607889649664 -84044502292914260535940517178900480 9779174421364053453948887200956416 9552443645749926384008473490751488 -632503023737689041866474694882885632 3551739696441677234471802249412608 5594713257290179000476434192924672 -48763185015909170728400196160454656 1241067591159691674957298517671936 7254702394424483840733744965091328 -451821794731065153480307446365814784 1369716286755053806927992099700736 9576669428485950108801711850127360 -135850012466078565084954578902843392 8166988549410793927807188087078912 3404655265336499572528350125621248 -436916795314167216575770832769384448 3112083260947528822889687015227392 3915024251963343919057455481356288 -59483895924523387485527048370257920 8483877590017250548793552935059456 3711247544714454313362010104922112 -400479082209622016750574543721988096 1405732925268972108507864851546112 8215892963384022612847547369127936 -2447314051791777517714055110852608 7087820781241113011953338433929216 9971895760366536503195574219046912 -725982315256912109314398901747318784 5127971298063370161120909860012032 8643866234040627218376364528762880 -620076264111503351933045885200498688 5774124853242718629453204438384640 5930033911754082191627294596923392 -558890741722270730488929017191727104 2351565600028390426270811945959424 8288324135048336844636985682296832 -370844512015057635477010843793620992 1781822035813036769124443599405056 4059093853087382314590751141396480 -671811602154999121636233996666929152 7300792304223550259159578653491200 3577246927456977442930358378037248 -683481541582195429322193694869159936 5218396317181181545908556166856704 8456682149553932151133791355666432 -538180232217488963823297437200547840 9070227990111598017848568195317760 9556004513257138574906330699530240 -395493256571233681604005196776603648 9832046445698756269643441849237504 6786237396661987967031495272431616 -787230730571794344016926961819451392 3693966465751739682737594482819072 7504432555057020278511246600306688 -433611378258707337490294909022765056 1075132872875915616660074247749632 6913789316819278960908484688740352 -792642868301821676165282683538112512 7288865148639215142112138769727488 7540554399154231176301514237935616 -131084079970855175474009544771764224 2564075994419967930646275041525760 5283588652961630740503315934609408 -40667850767568461512722480640294912 5348393802692731180006063812378624 1297383742896507528823287073210368 -691100847810763871114587944809136128 3340291421875747454047957291106304 1825046601672571780844701052043264 -428830193745500520451165858511716352 9492999709390191158056083768999936 5760470279663758953671505244848128 -600306854355329035852015959730552832 6939103244900790151308756773765120 6510050733820097902475766851960832 -178111586479492346023546414505656320 2608332299701665422535221760229376 5892000850302095421371882774986752 -675678577348821336555392529262968832 8539667750622541127064174133772288 3540486550553796258362762456989696 -998335157657470708638064344884576256 4322554487062685371831422118002688 4492222279384200647784631220830208 -645364833960139042739225336930631680 2724069432473820447197734111281152 1293140699166388459106703190786048 -169058605095051642839945791791955968 2962722103023264864157013997780992 4183919268119845427498920638939136 -723765870294875134034111815118487552 9335263360071600184968016918740992 1302315443930096429465143978491904 -942289343771219474628667289406275584 7638458374952075672450695675510784 1638058965489190651233390844444672 -400011639033276549822993302785359872 8933756070622694311824052742782976 9508785250902124967023538434211840 -24268229933681494009850814456135680 3964665682304968193592361423470592 5998684580500407619507070273847296 -54093461610084437773559522576564224 3844037097897303367956837385109504 6894174586292612056797687649927168 -244303678855668959747518313711796224 4250444719327830877341919668600832 816694814180853211511831415226368 -125890323017787802380674003634225152 8646458712695700268827597489569792 7840266929339887811997011776897024 -324684350648830233211488472328568832 9597670154310934025633964318785536 5911360070978214867960498583764992 -746060786256458025462619277086425088 250701777738314012798802643124224 7358807911287517583077474073313280 -696821364679443768663660075002363904 2248169033908506390761195266113536 8172190315705610960694663073234944 -389615396892415224981820882510938112 1978710081395188333811406739603456 2684390322096027143003809091944448 -480159596003349739746828775625588736 3865039544504905574500843776901120 8145500810822028577465903790161920 -873330572483467091509395700167213056 1245480646310148606671445399961600 5611423651695720303360022553821184 -347349696153454691996647535308439552 8820180151100898346010681876152320 3343841809526480062110952404811776 -853842840063210789439181091023880192 6348421668389097389714602100523008 1913239598158382843818420150992896 -191585332638296127222031118283833344 8514878857308389121858781960994816 5126298158346944368672892788932608 -811144675631928676268286959266299904 7926953371226440404234162667520000 6659280574705707196905228685279232 -784988962907149809566759354110050304 6621660678724738461404170746331136 8550070555578662716597097761603584 -931300223010163839015474536403435520 9719486297811185630181515155472384 1890837936284770741027663501066240 -722877416436162432882850929626316800 4888411097769919992174175405998080 1757775448748200615247714612936704 -740482648792149358197216443572944896 9843348790400089022122766626717696 9364933071608212909530288360521728 -42175850083919715460801878776872960 3480847344880735310828480560627712 366373641107294206162089742958592 -642713805820256111308049134708064256 7491417441416292758719563405721600 7351667649558212662195569828036608 -913776986596370350486157694777425920 4585307633114903211828739884187648 5592709908472264886146437159583744 -387360448860375078200056153678807040 4989511803994576410632857875120128 9801649138484272592547947669880832 -988252606334431820069450676770439168 2980515495688502929152323037954048 7237413557246039511910695550582784 -660222433231067204719755366097747968 3183229743870278000961772406702080 4575865114897117243828420510482432 -836460566677975891387031901783982080 7019874430473059030018054047137792 7244866004921425005981991146881024 -867696862392705597654887202302197760 4481033943833990171466557953146880 9583451739467920875362245683445760 -608429600431718237886926107921350656 1473440390934469813952411307343872 2057605268540610241174132324564992 -108716861498725776110135393852063744 1672171817832249722259493986762752 1432556801968600703169139075710976 -991812776406364420518305053622140928 8829784896343803424416167301742592 7023594284543100031886785245085696 -450951968030195552861291406801502208 7283992317363135141038969027821568 2717954217221727536909597473243136 -497218528224168545455105724081242112 1381807367176035800536904131149824 860921994671351604249062639927296 -548980981363733718255403446153773056 1023671940622909357959267731111936 7324027917116412787859285505736704 -928450966037403270605454701217447936 6979376527795543605632735654182912 2593713997663149030831627104681984 -798746376456393644434642195393282048 4968124512295360348696560801939456 9145311996135633295424352812007424 -219213051987702798355641024024412160 7165938721090523213861312343834624 4697428898572963121040566528245760 -744072415358351470929247721880551424 1348812745834454186328271836151808 6951544817257489240687446966927360 -234896371212648567027588031750078464 8103128707278570950218659703816192 9475789264885655519769418587439104 -92690095635797737158790112308363264 6975789060691545525084569166938112 1527725400004531840996893278601216 -361599739555565733647905582762426368 6827877317704878004427543441047552 5000616957497018295368568467881984 -8312661972831926316953513372942336 7853036036703705002133160607088640 120762016726811022618898670288896 -126644471812084662926409471660916736 4291296483384628291148796424880128 2348434691558819674428090206912512 -476733628555034429036422158060879872 7434650725432406122781537176911872 4365402079609559834126769522212864 -961508483392820511686822507627675648 3600469981998811296634114607677440 4964047364438036049186519729045504 -557649573491714808561928934185238528 502744564204997308292912428089344 5924532633031637790558946259369984 -999377570746180130466601478148587520 971533841094270861560715851857920 4167370845985267820622630877134848 -703785457716160118233778613267726336 4031537735579366814354483330416640 5786956525235224485041832755986432 -491763682022792546014289955739664384 6889748093205245397308114013782016 7898185193442277403933998940422144 -865475075536091596488973266397954048 4204113528213069278911053820854272 5447252182956569157304555887656960 -622614410735561100601583800330223616 9302335930018761214351311288401920 6980389439650501111476174802911232 -491095503775300825901654504657387520 8338910420184149028074114863071232 7179817239021724534132186896400384 -247362503420300958207506870494560256 5518494285005863330427699418103808 6852624659910495312146119954268160 -630167136666080411599505145230000128 6595706894603924531942615842553856 6520441098645030370704155731820544 -286216254705042206146489378188296192 7212958693833420785502050263760896 2870825614752218749268126622285824 -23186039105516554164587597007945728 1983800864084369551788005788745728 3768730908296985438469384084389888 -233330399757062925648902372586422272 8894469037021682976654260063698944 5198897682009213520957102876524544 -665710958636815106670413734295371776 8403148914970096040498526504878080 1061111858043769719031574657236992 -726931081572154954766946736875241472 8317151174880983107166277847744512 8084444982246047478523443606978560 -880331888256042863612283673011814400 1674654218647056631627526069813248 7542747091967370262981747062865920 -250032502080781730433392639651872768 545773174559251376448229364203520 3731394773476710524838186823188480 -821171369856309989807682778162003968 9216013095629633435378380550701056 3527686167782560344063586567454720 -902577998751457047965215112258650112 9719662242258646419985779442843648 813332069661406532958807471947776 -900633945756363957844623806282334208 4237781437722418569948490733977600 7213749805847529683274442444111872 -242668293451184773623962147332554752 931207220867433456671864727273472 1745453655855939798124129421361152 -703918228029374819508357598548066304 2086543502239078769723667124322304 5368975284172030272835549512335360 -975771531421068758859513302687416320 4312220454435211622094104854265856 6851703030612913029780509061808128 -933909371560180031761104843244044288 5427606637536201745801236363345920 6878044267902867667962588412510208 -738730144120535371418270353789550592 1727170524129554180830515064471552 4375556161304632543604581089673216 -579657636624554158532434751312101376 9955155780656079037311270397149184 7672545533463719968806045357178880 -950647166763116598294256580623859712 2077619387359920948172487835779072 3897262269791628066878854027804672 -975598461199441520097621832294727680 5071346263807193242308389533384704 8660398987791380887543203042951168 -16024231269533044863777336358600704 7500911253808342377292016337813504 3468772892260155774934970353582080 -630023913520705063165073329383014400 684327472581355549985596504014848 3667277818931160777246386857967616 -569564303211574017524118670589034496 2099958848421600623631778170535936 9076660914421972196589541055791104 -149260300589899097012986582994518016 2061351126607616291960116154990592 3407494477901992546573382278184960 -131258258780702325840637907802521600 6350441638902589679009826997272576 3107536429580846232245705686122496 -738514270047039351729305525103362048 621292162382053879268962092449792 8438365393753373181360581115904000 -569252501547737562020618259222495232 8236528345510911287333579856543744 5288932119454618888957868191514624 -783356490439186161751443448671502336 198716699461067270786951931756544 150090446758048079855080882307072 -632630489416428850596343254261694464 3668141379830616794342687823101952 9888690104814987501783662152646656 -959701164420200432278673934704967680 4508522627508758485056388782358528 2524225055142257793130234380288000 -135167245755401330124966398064066560 681167055585152231611289858736128 4591417441870437517065540809523200 -477021285425191539655147257486901248 9239901282574220583206012825108480 4975158644361522657300093274685440 -688402954723774629274378212674109440 4309108246155765255073937989042176 4567671228348643485791195358035968 -787585859636460397152688169063284736 9222517755005693474327661220200448 8852032209076077752514202465992704 -219790718000150945885805739419631616 3957764118389123045186523935801344 4440614714764029490676323235921920 -692930241161802888786401651809320960 9743468476744249320622856066826240 2925469230081456009334653857038336 -902570852813515530342573556524646400 4200025567362625463455332108861440 7566567312443322627463719350697984 -469004820555707501432061569890516992 3828623296676715925560074405150720 9038004337692615385640127139151872 -487531849062431139974083598251720704 309309095089258062614665529131008 4498755446428759928958765506756608 -452331676621400538347459390100996096 4450438274139651174420192537083904 212629585966220156181564312518656 -541211012529489355868279725291995136 2782695442305864541533285828788224 8359904305768424656569894189400064 -945176829162064562365323259731247104 4186730554802808494695354300628992 5854093636427774636868650452123648 -732788507899630300892833975180984320 9512423530143791482792161736392704 4702345996493504574408110878228480 -624666047672282752151870650619789312 6965343900215093741814425283723264 2394065787701254837797443199827968 -964431322295463688417958275949002752 4921597324233761705363281041948672 9520839902725072673763184095526912 -132468534377347972323863660981125120 7900290444416763453310026672766976 9678221530997176680987568084353024 -686717408357735233657337589029404672 7739049615043824452781628008169472 6818680974582634301121720567726080 -654141749195401833502544661223309312 3204344939360100104882771745308672 5071834444799529868953352950251520 -761836077947444885002193185770831872 602695971228532720196505162481664 5553490170565985684055066257915904 -808526561615628980055955965214720000 940924193118609046815330027962368 6032148635097817200340385707065344 -768738532027907535042339524841570304 2186019214499635985358400178356224 2570455165378507752418867232636928 -381098108379651888937394790822051840 6524817347566843830919340792741888 4464963987253721519481259839979520 -446630394960274699472089539544088576 3787202099174407679906854188613632 6522033584560512922446303324012544 -105337666681940013451586218638704640 7280115782351261059437193745924096 8254597873154801364514195508297728 -893648200974070946598606569021112320 2137055146431767386912162179973120 4654583785122336306169946323288064 -341868376956202027550294019229614080 8803644359439021099902070381608960 1764030007822686537174622111006720 -641490750713932526740608844551946240 1195787828149711420750753781776384 5003241858265183652851569479647232 -937794036619937150462813266193154048 6541179287089662325893458806439936 7726950423351795598604407400300544 -415201279477816816076210847784894464 2717212210376520578233085856841728 6078635710451636975561867113005056 -533376485512324237705414477082525696 345467499818195891589485766377472 8502201285807891350467062395830272 -463400639788643012108560286196170752 3305956232399836808789667444948992 354273465423398412598599787479040 -621010030675684715879586699774263296 5918895849601325388776519661256704 8222075265518870406623372469338112 -699262407039560331048266136834539520 5112787943642480231280821623848960 7523670152609628816440423182499840 -999546814809314797620652043743002624 2544711138516636841308614723371008 2971825504165744781989882431012864 -902042584061837284139325192763604992 2123917873979730949768986683768832 52465725128893020315892892827648 -919906269836602676648274660293607424 4722221365486043629408812397494272 6062563647749118526544886645129216 -565994891481176050033150046995742720 4953696929688397567522284788252672 3855272272832770475425407667535872 -515178367636124287535498534345244672 4695935497924553013111500981665792 9174697773036310658223407743631360 -744578442575310414212417958621216768 3893031313137379659060437426634752 9251072476003116735663744663683072 -125995047233171513979697858493808640 5199748729051608961654825519415296 6430751679017734015234954038870016 -197878276980454212862649200564764672 3059636940516196640608085239398400 7211773101120367827809870079328256 -240830088599996536570574192150315008 8640200097985691493077288006713344 3137042095008561538101506731933696 -704795050071930973888117977385009152 6824848446477982676284532928282624 4034529138960950139013545540452352 -322938773233522127349324007224639488 8773524290863111326541288679931904 8513127883732935756538197168881664 -805264940294225624311336203035082752 6469999077290948057564965286969344 9784114347231914696425244509339648 -634321992771451208567600078674460672 4967349627479955929836684077694976 2373574474357974324600683777490944 -85494051156258963003051682201337856 5942337600056038023509500802105344 3076677000626398440001587562676224 -238536527691939892307116343779393536 1340709345140586513433969448452096 6885300486848353532132059684798464 -943814612455215539608757735203536896 7859382188501116421784395533254656 9982024125103117093638391923212288 -991817008332717751399652028886024192 4822372278642697532139187289980928 426095361106632515810642706300928 -322798276388054501631856427925504000 3607285826462820890309064552087552 1730697956455889004355387341668352 -627824494099673381152498451702874112 6406702054041770537421562099793920 7687509699173699132356902764150784 -579350543965516222983652302076772352 1662019004115104308329559328030720 3037671348839206246380002137341952 -110062712079356344682352157577445376 1690273541910995821835274300686336 9601714330553511027686235862728704 -529853201408579138451579206245548032 2123794698892236856970893338869760 6992123978493005458867328577961984 -166021402060589501530208828896837632 7827845722700528258029185816068096 9556304808573686746599445690843136 -4766150887003583669459025932582912 4129121234580011713034159709487104 9186316657119157690427618407481344 -415464273060153225055162947986259968 8448700791055735917064890538262528 8734451739482261618137814420946944 -919388809860133886760070110265737216 4135810856888162312927587808051200 1320113154694039120597221560549376 -315333752285753754303545886633885696 3275612182686743073797084884762624 7427274476768955697072969909010432 -713510048008622830892966609055383552 1824483277781841737413955892019200 9074134091957922828784221445685248 -667223904654717326847754010865172480 4263993596129661993980644015734784 2985130497679182759731533241647104 -91119464550613975283838485385969664 2942268963635928085110167080796160 8853620369183830184895210867130368 -839505550530034257156792202295246848 3165195637861463450672013267435520 5693545983559957238082637590953984 -898735754160704380468577382732660736 6599719462302442876721041783128064 8433225591830811774264749909344256 -893735640176572403937025797813960704 3194404802593186632470891165908992 2615549738329946483148880886104064 -348442396874714092826168672951205888 6502764386172869202855018725638144 9225098309298700488750565481775104 -182077260654074729727174899058868224 3626177455937981202129749394063360 80638493098284447602756250763264 -904304179483185458117161964756008960 4547663922142336615263829189722112 9452557457374786961535737360547840 -119918888341282245641048976703619072 8586138730811348923573238237233152 5238551882892722920202277912313856 -719702969630304464171610273214365696 3024821099533025740975380820393984 3751456470076227973828523323293696 -25450885450801174252047394595143680 7583560244525597690575535325839360 8226542772422771679742383546695680 -737790512417752355187636135329267712 8613448326273329855956261028233216 61383217736557893578455422861312 -21242394638292011477517208758779904 2719077845562525445270886181502976 1703808253142406175608426308042752 -40024405883154067759250643034832896 2808756088379947199594898669961216 5681156855135612711666679659102208 -694384949278446776822426321855447040 3447336727175101511823707735064576 749332900573055775730465564000256 -765723358746547718690118632845869056 8086095914190263750782339667460096 6299314375786773178820593478270976 -692294915082400618070963879619330048 4493995383953578783903701861924864 5516766934476299123228517146296320 -401039258937462432582914060547260416 6566105897088135719766134668394496 8441982159123813053875323536408576 -180465745696287168365856388594794496 6292169860371409247888525383172096 8151591219381629608812478841487360 -935607409433553555203340272276602880 3839915354915491899582015283920896 5946959927376431769769690961805312 -583493691424131057356162476646858752 3287763988733955889455306605854720 1239100913484317255242206626709504 -924563578352553939716732147260719104 6959063863674209543683828017528832 6952586367210437566712017349246976 -554725779966986170331879375640723456 26204524517179437551813792890880 9867033027183987429610309373919232 -121612514711968207417078342263767040 3269997824997852136537516643713024 515457238017784340549292619988992 -174892531778401030861241398503407616 7844313942390642111001840517644288 3687679156084133719595879451590656 -744525963841716029435490182535053312 6114227008878942899462433226620928 6037249632127883511002641010262016 -339971185378076222913316843862097920 7912649579225469209389140581285888 9374840835412614084205176099438592 -836306224370051031294473872114450432 2261750909952786662649787576221696 2423671701967981834679588845780992 -807875995633341179094988273452318720 3912055406356872253278340568317952 4840228222122773621921302752264192 -164365774691258179464636036020174848 8470853488572010139332933530419200 8053159804894260954269000310718464 -12290436457057140173495160346247168 3164955114859397628379954384207872 3795214272566304997829029794938880 -702318258397118145105327431130021888 9800797280925255067006637256474624 1229668764612197962531208729460736 -137031965323098756192936347759017984 4249904264825976003781520483418112 5429020095150917730764946426298368 -274130634984829564810710121428549632 235622600414880704436745151709184 3872575218722027758751874348482560 -997122555543567328358714472354807808 4567920642458261372024203656560640 828439683979881427151424858357760 -682285759517827232773660442860978176 5581821398567643905400447243911168 8921099119593690337319560255897600 -482493922553297468600464624920297472 9043658032909389592493246591795200 4094348254124860204810313937190912 -247155669653811601562621865371893760 6150985781615145002226622866128896 395570574519803570692127184650240 -653596048059789997005488140775849984 8657508477999210968629445744656384 3007295868713911339929598840274944 -936465616738300530519534121579970560 3732294807468169503861878762242048 5762224616577956965118962401542144 -278471855930184208485067466783850496 32612961457846976556705911930880 5538215045446297573870785240498176 -350236976052830039131289391397339136 3971428732833719932692248213323776 326293380212683644780101425430528 -407439311217871871054304346575470592 6345040575286629675504046257995776 5764200288162668845483540615266304 -210528732753169181773568985226280960 8706828541196317246546289019060224 246824820601865782475300259495936 -320286828806723626873669199939502080 3561823760801267926234963736788992 3750557252706216515320097722597376 -420476079130995763387783515297808384 1246309464057458681520379469496320 7089783912945263380371060427849728 -566810806672853077550363656111259648 9896741789210012511496506320093184 1076101393761747977882737028628480 -972886393247537879210965066672242688 5160737982381618791668541542105088 6121325217544438948864731918630912 -469318660124585573646200897911390208 362552353103421952823253476048896 6288012692702108381865502878728192 -113370767419418073007738687781339136 3235189524261197261387451760377856 6651930644705392572563005129097216 -513522349983909589622999653764038656 1736900740923715253220048164093952 9596945928076629696134778693091328 -46052155416709038237923237349556224 7253890668043705428824299667456000 1786573151925259540580975595487232 -622303203931269670242206858434576384 6491837892653814862731131368767488 4741346630176182964594880609779712 -955201980660157912888586388111360000 2367357568813695699698199067361280 9297623334812973327281935710420992 -563044113831643777774077324686262272 4667766567621470333586481124212736 3202249150517696379072610165587968 -689797726706474505306327209671131136 4726732844286906778794064057729024 7561564728302225764564239650914304 -948873421184189535734719672785829888 3807374958959630801676862543101952 9257649112989368330797348066164736 -837308954489953475172509691712372736 1915932625056576766178525433561088 5190284290100085538656515449159680 -771960518375700270640949954420408320 6461446358805060476026082268545024 8906090681134425438724154279854080 -193162169449245809341444689915543552 1004715129284296670887044467130368 6314503098315081356629332908310528 -467609162806434663806376408011243520 8931512450504455918842520388239360 3345599010876555498920808282062848 -427851809930995313649295886901051392 140242717731308612965215537987584 7540399828991266721826583059890176 -865009795555778972187660466079662080 8239285329340385871826759826014208 3971278907550648433587427783737344 -804491536057513775320688499640762368 3388515205485228305773258132684800 6226839508502527754361697294352384 -105050635801542713126983984004202496 4658115750464177288172494418608128 6489115679604189231198921335767040 -667359234881671102563634708240924672 2158858762785381367297107399016448 6670410324484466823973213137010688 -726337502441996659252691061155299328 5078757763682891525771801372131328 3304130791356505740569446635798528 -775783996557320740950699996811886592 7237652182937827598615034663534592 1822979234563144682591616227082240 -386297576505186722463417665364951040 8021307083698215552301186523594752 5798480634440677629884606963515392 -105642287442544729589376512159645696 6970568508271081780937138597003264 4807962958683234324876170920722432 -405405851045816039690327577117851648 4441993779229503977926501903368192 8716570392261657842554924309676032 -129088024405804613877603980011372544 4934963597531697982738398233755648 461033118356608438258675451166720 -590930703567979315232917955427696640 9540774001732404220175172809785344 681502224483334752973911693983744 -155364405593891867057828763738832896 7370432375342168795451642406240256 9493444652223899785123245391347712 -144098653429648123620806203617050624 786621783040737378449813200175104 4631231594838182565262980496228352 -853712991736671043250850723415457792 181889175110168416528550554763264 146006949853851941329906383716352 -988944161390129980904806642029166592 585272992568895131076153609027584 4233574362076617155597737482256384 -197489105113800347375697758502518784 8177722489152450454078246824706048 5697631865915853114298775382261760 -21828514073288643651254628714020864 2557764616454818758252601639174144 7348967200633342845504993187856384 -914289852428874181113300606110400512 4499761121941940292776721603624960 4048131637080925130033185465303040 -197538335988401932468344912456187904 1988158635441883923363656990982144 5959243814880755196037280317833216 -34586472817021799962468327677231104 1510332018859462583257307004534784 4146883456243819966892184499650560 -710317236742001944642697588065173504 1472890124297627595831558166020096 5168734372222263030182680096407552 -880505038983084881154256911487467520 9791279782522883334509324314607616 3785280678240186943428896745324544 -267717164945207626238916156396142592 9697075915252854608962967914414080 3506305090044112254186373693571072 -308947891125367925366397527601971200 414328463115467736327267800842240 5914300910871460312586045167239168 -252816247628539883415044212349992960 3880352449083665163934205650927616 4393736196622389808937579109679104 -599074943733411943870061903031042048 1110122698031836614705865694380032 5522511996737759660865599121129472 -95164765979886935843071981762117632 5876700898571237050065679324020736 9886570069699167595871300696932352 -94070780624212638910303147091034112 5120408147715995481658190072905728 6088669845311851849798382593769472 -1328993895946000750355789994000384 7599172457376622768060953966673920 1703485060809282705635123818135552 -659218515542210302567486425969721344 6684694621196740806218576966975488 7057885846020127809740991440617472 -89316377504346968502619855793422336 9842909000756993075458082798043136 9816299141107196556555971813441536 -288869531151579727490394687298076672 9666911642996916339111269094129664 3373174526976306233107242947706880 -506985434250024877919557419660214272 9892981585992516416436906535944192 6067601090053801346738517255913472 -908722699785969345918897958305136640 4110322376661780600021389724876800 7109907877821771878845683370819584 -824876320530334898531055088403742720 3546431062088768919616352275136512 7186945653167248744837149907484672 -266499728070319416737046981282627584 535498232710911764909928197652480 6920813011918729439491459133734912 -921428359982314336858173169008115712 5650703470477829765703247440379904 256513153150850530913739264229376 -791087973373344543749236711051231232 7227562362078772127884445053091840 7860073791519378705498083503898624 -122913188148020111286166967883399168 1680522190324430527565455276638208 5195498622454955875073183251955712 -709514312071487692516396408237981696 8457184250519772567984353662992384 5997244874896009958749202362138624 -857639947529494234118276036631199744 2298662776218039242553980717367296 9829844712878106378016887589044224 -245464754098055776162791942793461760 7489419669517768953802180150689792 5248353716532730299108702946328576 -293450267665592864987989351122075648 8073714723561719356894563748806656 6973048615674539506955055634841600 -375848334536841461952030668937494528 64229585208931736870500509417472 8878785328597061558336195433332736 -541455392449084418684160352584728576 6299014295387028268850642673467392 1338433800363902879912215539875840 -118480529325615829580595484331868160 3837913387638730129720522758422528 3552704034172680976437331623936 -177833360664420874156833106703679488 6143494123788953369299957481209856 2836987804333343783202726948634624 -689668723356266193510515710076387328 7286433030379102077331555932438528 4880727810246177390928520619753472 -377484738508780745814483649075085312 4061027424061906236424769127841792 2387915602170562716886546799132672 -483524928027501224641997550334771200 9996228925481561646719470260977664 3584146552620990051447695382413312 -987726323657523986475090440513126400 6252583636717974284201101025607680 9497443789694535336502495985795072 -848153550285718123996822950847184896 4811590920782227180716463392555008 3640152144101581700739247189786624 -304027474166247172240677533445521408 7547660677649216399667579276230656 9502636311826482566618594469216256 -794236931395363011830489268770308096 8221650835698253945581855832014848 6872610591832306423804905316679680 -845159627266761584681552494999896064 7173291418829757896602461646356480 8749273982368240622943683569778688 -670800116970426184387075827510018048 919504164640123007869146183499776 8269305029253242901765208213028864 -688581983619324748756517527052353536 3540643576841917260246220703531008 5840874667875110289176607294750720 -573780685257564871544656479098241024 9719443974575168628473043940802560 6421273605682964765787147431051264 -52499412621516951166434933810921472 3687965735582537675369202923339776 9743659288216152422643510896754688 -317175173560783870924726406783959040 89291526440030988081548731875328 7105807226586609194036922096287744 -596563684313373913899551428823744512 3792702613478395558208293771935744 5075405581903034903346329405095936 -565608343633890526142697222461980672 118411629904056227808203660853248 4795072837609581454474202547486720 -444798100017681416527659568468066304 3372178562244538748042094191837184 9412882898482963808334444893306880 -981800325132278437123736014740783104 1780698845014865112826330879098880 9652581013511272386866353356668928 -425637558830010495411479271822065664 8985001495222114750113293489143808 4725571866320636997100995224797184 -18874302393346607314519144527822848 2152313525531213773920001650065408 9143205490997070879396497387945984 -732552451361709001188812758215294976 737159250570390110349700232118272 3405420242924155590422102028582912 -70506367402301640104465702921961472 9789303146864977564676878793441280 3497548450629438135882567815004160 -917717779876564154957672010838179840 3932542300247873674530684833628160 5344789617196197557529196487507968 -802677601290995813919800201010216960 6992338130628941023280172344803328 4565255045592150924034594752692224 -644057898362842824656616194750545920 6696505234726512350305603110830080 3132339783212917711653675768741888 -5499042518878002878866412774883328 3581666985561948009426757363957760 3516701997309838411044253192945664 -227834308075343307106380538221428736 9053308381843939792603486529519616 9269693590464771647717090225291264 -404445982593264978383080364357713920 9759673538878901519493621729984512 2422008107266748839090127808495616 -407311662127722708541156785259544576 7969753608618932267799045491130368 4388703664963818584856429795999744 -28941259875910537287213118507712512 712389038975898641567094275047424 2287292148777695708580442061930496 -986540833254227396184985190684164096 8036257513671375576516405384708096 1717047499872686810030112451330048 -46252524595427617557734540946964480 6814980910548786052655515527282688 9634793837859215588226720103137280 -722937703587428248942059828059045888 2600333114494396961987049811869696 3982742960455562187516864066748416 -974959312956881671495649909157134336 1361821452120488623840383421382656 3970356544514728815768864282378240 -326046214493157828844698951519043584 7553206514711205075997330839175168 628928280436312850261922717630464 -297199884965141776217469854549016576 2357551994204339389951600796631040 7315978355709902663061892952489984 -761899762639150188835322453232189440 3203908204494398011190400887291904 8411090734837460419141651113443328 -883141814512645795729620653276397568 3161022586891535385216375328866304 1912833708866498138989518710112256 -831179387852584085896823008277823488 713889100284943721199323226046464 1541127139431512896781743890104320 -247527746048880062337117301034188800 2211135504682390173062107328675840 2572731258208631986701218506342400 -341990389409671012496061753582419968 8745142018940717473290022039846912 8503041475363199753082484402683904 -694745946081462897741498930283151360 1152484392236285422646154793844736 6224573381363958634038813389750272 -503127864806024674486607428448157696 2964112923032171723014302318198784 5988033753737260140421733546983424 -510781435583160137974417952885178368 7874620645530677843419986843926528 7284069067480922663307005550133248 -278341977853433312972328095551848448 9681896063913420689375569356259328 234897962817441229909576774582272 -135221267680479388459497187279110144 1568404070235897555539240616460288 1230116180437328801351418983219200 -550378576727384641889597399924473856 4469658953800974200989254607175680 5794427848024196346332342357327872 -953177051046185872539396260625383424 1863900467901982360431041091469312 9511185556462816917940706780119040 -754888731194607875977173124432003072 1107680930350543713538429000089600 7399715083461921681694812496986112 -18815152505443735665270952447442944 539311607494274322713534284169216 913963502291628478093874935365632 -852931148792256565741586585254625280 7461014018542202857536792358289408 2041302519546302454381806079705088 -758692680196702926099194672828121088 1005046369924033901510009968132096 4404720855236532969441020098904064 -86474920669235223211343623260995584 3359115071068421188935804474359808 6973296124764855029067101969055744 -871867204682673192671743466423713792 1782349537466991289248812816662528 65502429419129158534721670479872 -558868946135781923725942850265808896 4267064762964868430814761185181696 1528515359208140279076985140936704 -694722466687781143846008946048368640 84674889602255284299977862414336 1743487653611083686368568621924352 -975643338691773984986361653811478528 9575567977237243109776340310556672 8442665540360213551862529250033664 -8736597096945617787690857520955392 8293274118648101539642641941004288 1705487006563166035763563415470080 -727339895489291212847184553730637824 2399353316493661710808526220165120 5443788253152622503044308443070464 -213944068547538130269098755716284416 4806493006157254274975610280345600 8712275084179257958854482131419136 -357698047574799593619174190619820032 253088502566968551099185741430784 9030424184966642934589653967175680 -987047683977329767655380949084930048 8799326209595449057044885269381120 2123910204751938025225849795510272 -494553241793689201589612728224317440 9817089500912502108747821588938752 654014403528181827819035433107456 -195737466728446871255624802151432192 610537330392496449193029102731264 5360212690207357813410939011072000 -480353465933943418071498330011074560 6281748310731195751396426884579328 7983790465310149119407499044192256 -895251674872253901274164035613360128 3164382196802895067026254131625984 8908328093396716107171510272131072 -600739001370163489354803065697337344 7745082240795556606154243181641728 3602564166674235940640869905858560 -66036743791234950672964804216356864 704857894721867736230079099830272 324274840390926159206353536548864 -669847916464513950859180376248549376 8926181445665532737352170442063872 5862489009302755382843443565821952 -290709825898340748312779556955095040 635362156454238038171842443739136 4545512095849974899912234625925120 -71208932889603432136601913392103424 9757758365637980660224543915245568 3806932897428065840777373507649536 -780680443388953497864565091721019392 2628223433774991546816370535563264 9581167642825151411373167926575104 -534192959057992875669855014800588800 5057347958702529021249167785197568 4111114808856810385163401763487744 -891121462574391318117490922524508160 6936008304515537775407806044700672 2962581161138718494616891575762944 -164994039173209221717559482188300288 7599464322099332480897605689147392 6958337434620693438503468635521024 -931914245311951267504321671047675904 5923501340309342310034336198426624 5885124568854529722464830901714944 -769966825208005516080880845368328192 9636593753889765546197406497898496 8923735539465607229644582261096448 -837038674803578840226802378548969472 4736065065091015180285505429307392 8750806416639799153234409968107520 -47510699961743984133777936707747840 8879147089383002746742498987606016 4486816549114844233891393642168320 -242108948204574332962873304854560768 6351108367763298002864619432968192 7597221936226493801769797089755136 -805685698869930709548749397048688640 4194684860899528709641197280296960 151330279360156690547846835863552 -963006265568304753488014058677338112 3403891521994243268488321977810944 5291064237145685087455726972960768 -727394044390300526143840952384487424 2384751961578336204574350412611584 4197347145025693233919755418599424 -63383369653781954414637930304765952 3336927728701162195931449614401536 1243150204528369030572468735049728 -423341048640139529058098503540015104 2189742470297561125745559804575744 55466309708914218763589156601856 -56853786029255717809690364038086656 3163797814898043533493225146810368 5561097825445711565865506542977024 -302731573840622594312901932651380736 4914199799586974962914931085672448 2326130269844996736375567236988928 -780345625914778575595819720291385344 9128731220957221772991431056556032 4054168404403703328357731788652544 -943811083349221416398873803240767488 8087395766307970462066533086527488 2196515090416795954581766385172480 -748713683620402142858132526215462912 9356303481732284957735361357807616 5276080328945893410474802689343488 -510595411955795255049165706474029056 621260104085716585379108568956928 3377029615582011140686452868775936 -222091848714318589920963485195304960 5086141520308542478091249921294336 2241822903633971969691132509552640 -357886729576950825291248514111635456 3575663542909233694468903050149888 206001734636401296838391228268544 -176955700850487931520387806954258432 3725002603572103058170628737597440 8469059329040924383868922955300864 -217092626321710677527111989110767616 3260225565901321268419716379049984 8747176026043351031316936558379008 -556608917061045532344474818068873216 720645490153061497402363142471680 4878365491352332093685841302388736 -731054634060675367897940605894918144 3595774485868583159801983816171520 3677305747539632884417812636893184 -696985088651671073227232126743609344 5547405263595706620008506998128640 3551990935739900594060050370134016 -418337259093769870993626935446208512 5983786622087302286664425197797376 6290867189915991826240116866678784 -514025895947345056898585895567884288 9370877630689566963677842066374656 2084938111022075239826820389928960 -227519484439104777482151151907373056 495160096432733525402262301573120 1569395044490854536113552871129088 -680026659454976743572999099608203264 8845031348028771345790214940393472 1514083762407209736610464007192576 -780059692582571030360074969564577792 9483153487833468325945772058083328 1845298282361105735589087655493632 -242717944358880625633527360680624128 2527870303605907479683195115405312 3617756875768809445489003718508544 -437101295230360729304330507825184768 1187504227874111143603687978434560 2443741887469153311255296311558144 -804749908810617463885095329052229632 3471507517813265787675855183413248 1165051580387582868746031419359232 -569386760606833282621612737779728384 6816132575282928793023576407015424 6261673751875913627256744795176960 -156831420281780241684951475916111872 8080776023196783367555226043154432 8623207351588314605809708033900544 -353219967620917235664858797991526400 1544892475920949919362112110460928 7022670851579791580590115913728000 -718069064691678596977211711871254528 6553380201358190374944152678825984 3513914435026341273619877880397824 -550621783038322674448400454900514816 9287582955311874752436893705568256 7030128920668536059132149892120576 -691887672726955159665522139918761984 3758276715522052090472179387334656 1358880036546100432431764887044096 -711914363673254271808487732709163008 5484402921958738303934704186818560 1198479043673150798651668459159552 -660716541399657544246643980503089152 4430748149012847580500833282818048 6125092673969979003215840924401664 -774199643615731181377464316232466432 2187385613155681607902926888501248 6532959424171926241422207910674432 -6983159578370711898296588894732288 2844443587719766877462025744678912 780965033046571768582578066423808 -252666262233023352919253651516555264 7636088545043618860143552703234048 2157396527033576211294399838027776 -92481259539428941884662823268646912 6221878874623452348620653178388480 4768993333288179246459401871032320 -984091032604236841727771609418170368 552264887192237074093910937042944 2305230431504602807229574174212096 -91064708835221536596315065737543680 6388735051781975958503260682190848 4715839873488451613572502120300544 -249069829422655919045530766014414848 5450205782303790133376021180710912 5420378829562256027510888822996992 -994565569819790036300852436664320000 3497023113405555322587063986946048 4820660438439764403361832518025216 -778842664700746783685291855438675968 6538733581992684251096591015870464 6794465817550632723568363218927616 -320858070251510604985042231382507520 4985106583838132773586475340005376 3910524441166190469058844531097600 -542797077503802761341098612903378944 8423565676358190337562901009661952 1974778896579336636881766914719744 -95527127007924621893913249121828864 1585174801875623149473361737809920 7570179857860234818617341047209984 -38561493385680538905342679135027200 1100570904781383258969383702102016 320027162291727437981966732886016 -267586571018191553013986986295296000 4979799482978745956197731963764736 9577457711400908643997798241402880 -115722611624181102398250568701181952 283311196276349383898740817920000 1894455182087606059571766735405056 -14340696893399666212343244006621184 9940189814332782963900680014659584 2337988326068872974952774601015296 -495062191302259216478776170771382272 5565159214327073655306026624221184 5354829497794435829138792489418752 -587943047925346457697732753981702144 3988671020717790684009513300787200 9722898116819419960432858096467968 -559217328900480073235836354993061888 4185579527110041687591506931613696 9433983478650086296601081858228224 -135127796343335452862065075006996480 4006065890862414493539938479374336 106543717051224888346741720481792 -300279209281558008586568032858406912 8382702608114438886029644412223488 6705542905952100589163028439629824 -141766031547209428660127594778198016 6467938746868565634552799539757056 8209719147098412381826363978416128 -965820368695786461257414644856782848 5668257265825051505566414261977088 1856496259623470699184832206864384 -344040434999453186236480464875421696 7815795493382273802221675354259456 8082206037938445378819142853853184 -328504939819190507141348512803848192 561854401593943097758834382340096 2068554860179193941787579059798016 -983645415839658905533663563722260480 2979729042618764083851888592683008 3067018560339479185042647591944192 -239862662151496311494768811787157504 3013440231728294449385651103072256 9955546216480939607389370956382208 -553548315443252587779306448285073408 4709088862489189864052759103275008 8407396177049543742829855560957952 -802110139068989626521123532006490112 3014341938955991478148637684400128 9728506641230562522255867659681792 -565082426704733862362305112806785024 7277494573401866064651471518957568 2045139985598299033223194516389888 -734547750896125275378741140602748928 877214322116999844506264838078464 5163332016053088032324644056858624 -710374409910224893169793422447345664 4045273839492734030560422726205440 5353870931838722532543208282390528 -402901215699698481429350274601844736 8105605282524655553835256061624320 48249871938766338341473244676096 -578366100560969447770160894301962240 9512356377244190349204424197406720 5637917870399714182966129616486400 -431307132181493024076737044113522688 861083523294861739024061697097728 3313246205848987315164636065562624 -758385211824951312653619007789727744 9886581404566235632764865952612352 3876780733246604664922317961297920 -325786936188232500551483895383588864 7744856931768424246315818753720320 359148978502874128020661503787008 -737381742820996427873106130131484672 9492144918326034356912724757184512 8419665275755922554785212890349568 -488951793006807051922508898793160704 4508720082775031470896437757214720 8492531406247914569128062056660992 -276569651859938727101260762353500160 5944945757856372358039266488483840 3597311113914181038636008162197504 -260104997289366166763698601257336832 7364149254791989693695070109171712 4587185605630310362310657290797056 -565823647543233320742222277258510336 8571007359809093034082368474841088 7681646225175102026267547230273536 -11684759007132096661884242438914048 2209377191963369657321484149850112 2461592069793152711372580740661248 -345423317844254906710377398286680064 9805526465542304478247977836609536 9275382542998616265692971299504128 -331067211916874337953154821292818432 902374401564233765117141597552640 3663827210448484066392466222219264 -358769976492104191822568870197067776 4997888938797347875574155101339648 3041275542044766803233120869941248 -568399998050243345810950219005689856 6192353126016245059117260182913024 566342564306065518781541621170176 -747303311507080626577881113699549184 9056802953066340802676882199805952 8546947624898233953069815394467840 -771530878834461306864272005453053952 5542248279714476430534621882482688 3055687916781620981164688692740096 -495061306610753940211582472837660672 3716428730375132007879970492776448 1829320311396436796288889599819776 -128031023928977344081512510229839872 1981756182127132972535306594025472 1864017318517894132472628859895808 -629207595626110775225743463587774464 6624037298275109451317983689310208 4536306238392655569449178802159616 -492819572836332145092125771096391680 2666708286010418131626402405941248 7689554623675439966433736124268544 -609756450436603755160511934082580480 6197352920895547170879651180445696 9166879983267030267588960399130624 -476919909054528023476045487678685184 9461223933310055275595348326744064 5434668425312688713328263182680064 -664623767271368991541748142490779648 8740814469929494909748923657617408 3114979059016419522545621061861376 -533206700265115446364189345959641088 8987814102085998128218594705670144 5596712357078647168375174893404160 -615259347918713502190743183373107200 16918914367675856744059097841664 5610384473380617993898597277499392 -111707968501945581767696869343887360 6012777140056727849650358002384896 9644448322259984668234955712626688 -46705017395911716513227613203857408 6987982202930496117574717698736128 1949005308987840143878938853113856 -10437132783888216334524850349539328 8969428243872568138600064965672960 5699985637600224203541157609734144 -164382967388563505347367911139835904 2206595438382330025995151454765056 5968916070735189904636828673114112 -305605141848554559598364455736442880 7987015308908589470192902801981440 7595696087441486992496171774115840 -293006866537191577496271185655103488 6961406017953665620730125010075648 7827121576296921972217226939334656 -646088390847839642109325774633828352 7804046377606210772719596027772928 2888054283515109569158100805484544 -346030813907713907018991963970994176 2573242901137250176731488349847552 9242661635847260637811725299613696 -599510049385150957612619694421835776 7719427597576584566533287835598848 2763415759405129328409736225226752 -562934544890312636635988709494226944 9769219326980561702803555548659712 787025891637984276175282891653120 -575878346305072657076366566859210752 4293151388460623250842477536477184 7342968419977411300854935893049344 -253207501415680022580455563618942976 5078286310240333782709827375464448 501281000563245699638620321742848 -660592977169746216400223346322571264 6388638034248012378178424169037824 8817680245952223238056996486774784 -273546702976061758707676091229667328 5303734323655075161635022297890816 3956619318470976580189690741653504 -668405129851310227539243145407496192 3095902753647640714971919104868352 1721432039645618429834282764599296 -475618054644604535597670355099975680 2621636490407507096888031601229824 214278820098909310802500618551296 -411305501240720845388577722024853504 8541430046855413963777976259575808 8299714365235776916228755473563648 -141619160134735894823658613962178560 5363213144357888712924651830902784 8013210434257118241166355767230464 -172307171484726728838247188858404864 3984160604135292892490629883363328 9445431880037438894861826939420672 -207188129952083700709050990437859328 6748438194499022211832901162500096 8631808263372909305175494140887040 -856625707049351106578276362389291008 6249560802924187482241208864997376 3261090304186567173394952964014080 -573940063212737443635833469658988544 3443133983441856805427276849086464 119248618834431635782010583121920 -345279089161330651938704408763695104 1362545268439867982607739189723136 4992868397517687208239126653435904 -443784407316695084525596262520586240 5522843033222134579014183809974272 1156181224965085560410851747299328 -26522979069334451636526752706068480 7972130705549284256524123053752320 5858861137795897340598707017482240 -830183235191409557770115434388914176 9187572951755449991992626070421504 7316667209459709169121988062478336 -147514780524877697785626306726068224 4344062566793498811784302283456512 4735425873720791961662791465566208 -341250578496577417880604778189291520 4361987850574337400847340046123008 4552033832778717114056835608870912 -84237404411256784172035275327799296 6209889806869854909372936312848384 9467989294116420997698743269588992 -219751670986066230972020158617354240 5084530386405926539274905039405056 7279382129321607233765757933322240 -915484643220926646926611346599444480 1066070708175796185100416574291968 9749403380299599399748570030538752 -650800607055441666851633183764512768 5407612129173013069645482637131776 3115287573062411573982608295460864 -306511471744619306475469080780341248 8459717345252410376494059748327424 2626430302729741549911941987696640 -439521937824420730216629516692881408 2101266593841138215925276695592960 4539370655579291413846140269887488 -617240705840020416842312155876294656 8281867486338498465506211382951936 9923758792315771254800851044139008 -544968572748115008882381261077741568 4513102399810071491687192708775936 4039857331566987469350606653620224 -622126248210987413499799242408984576 9899520104278229434156675059679232 5504523018488822181982853228658688 -71199525149905551785313804042108928 8870862171978894155946464534069248 990754014143708091669961269837824 -769066955454764042916988242175721472 5816531157989707322089272774754304 6636821530625925059634526980931584 -377057921273425439461413369285705728 3539435991273456314705826784739328 2841016637619709846280114381258752 -211382134132334201419395066004242432 9430314927911545945890497463582720 6916960500710432774387279136292864 -946978391727028888397468471088119808 6792773075087110969962867315441664 4926591737191795504952100083728384 -754700183068406502670290064183918592 6613935746447914207701057396539392 7136517467299363726283442514558976 -889092552225919893887939095589552128 744019789908262001720326117916672 6484354696101572229063600846667776 -722715004698425507945945465287081984 3585556264609746636025710057095168 9484697706724373457688477594288128 -614681781282120572696962975756451840 3400582266759248828807243913756672 2791979652443750706745468526788608 -800518523948621555720184391364771840 3599968346203302736633716694581248 4566392257717400548115576826888192 -14082099633709003202125619791921152 4529680763357295718230464302940160 2119639061664043041196481238269952 -273196356986785447362332629464514560 4490559917324165579113944947097600 1015584028732795764905620673658880 -221241261361014305940558300839936000 1083459912413090749834909932584960 9318167282430117625291937851375616 -214829146801195576902037005014138880 4871437598011910338780064804503552 8603242715568515310767304689582080 -791416601681799001908268135381729280 9624342134941968386944828690137088 9987020616555699408927547189100544 -460572943305366440311264584702885888 5699895061153482151881174314647552 6220293413185359277320425252585472 -17926557100630415948987921600610304 6217583394670005506202400366526464 7073022463857550252134009541754880 -88095402938505781980376124922789888 5917165146494460799348574143905792 8301772967166516997456677407031296 -498182359471169492854006625372995584 452921644780836855952134371278848 4973721514550335775537948570681344 -365012136803214621410576138451812352 3685464774320322068760075555569664 537233610024212373889631121309696 -879709026854030769111931547230928896 660136208767451693128071564492800 850392364250525695783506402082816 -540146945400391342319251958060285952 7924091206388962651717223114080256 6221348006578342482146205374611456 -774663210488252274452651442570264576 4930854388325623167099506087952384 511075274038061626243400528297984 -616589698819645389217816727435345920 2959389217033353755517529702268928 6142086424277899626782982257246208 -148120257233216221915988784236724224 8371773589400969030561341626122240 9286979489481463637319183524429824 -327107620487461668593401646989443072 8450328964121890791690109697654784 7979938555806499018938430412292096 -21614252816920375455240354166472704 551623296556463387042568067874816 8225348898015839004199112113389568 -816511990925098541479043997846470656 2232220342739816403834121016573952 8120291537217956664679589941870592 -327096101847198284534179904104693760 8378606833792861080330339736354816 1620772989694214776931790838824960 -372849995409990595378360062236950528 6859079535634720368591516622389248 8917384989738794581321232802643968 -547992005000583684286865986281275392 1831932639999720820497633861697536 9055419819151491956246500027138048 -711922116425579209969901488790568960 7572174863624036605075857575247872 9829465409369152886947356237365248 -834342086136252914370495373350273024 4024461418415703710531999454199808 2043130171117873385580956659744768 -367863271280059260649631645880549376 3975326120100152125562917895536640 6367180662248882495645524133150720 -304656583014657674101047703292084224 2771748431117103242382589059661824 8321207035993533167106702450884608 -906632775235676992912901553763909632 5586161051521001786377917939318784 4291653253693759263294639629664256 -134885826366680118783434253502775296 4147172855684136131734295908712448 5204847851742488060284808879669248 -336352103419929435819181267692290048 3923853555180164959643820510674944 9648093570723638101782806419996672 -273951683529750799044239056185589760 672193468667922938546625246658560 8545092099647126418613433121374208 -777545662381985242204702270415699968 7775071594037455974003915851038720 4196334511051967910377671821885440 -592368666010615653041475555787014144 3587044355458558964631426685730816 8217377417669475788329962025517056 -144560490024460531251208619672207360 324371626141824020026438988070912 6824439896905579543918287834316800 -935674563425895157373601235024740352 6529367305832588501542848916619264 4931399342110454311600418723987456 -655722967758827835730034924156092416 5238446420951074275580571188985856 6515965254791844511228351930695680 -794500013618460525062714761316139008 3874936883708233187768075502485504 963677274060198961667047948288000 -833815108004200555984089544401092608 806596816033906503610329137676288 7483688146546792033287419241431040 -212154811478750679288485414380240896 6576170119208540930996155503869952 1772673371824575714770129088675840 -244274725681336282700010153471639552 6446482297501069072579463064059904 1561086978368425356401917384720384 -324893247015752895941231647429492736 35327035608722723296205445529600 4328762317262728723074877826793472 -369058794482422489437088698815479808 2261798962060563703229826962817024 5808030197244214325728867172483072 -618776602342887481231186576795500544 8310492602302011199804383447482368 6890361862364477225845472746274816 -260262994764408055469032407924998144 7046287181807074289778112273055744 5549245131224427563124519501561856 -987609167274968648763779242228973568 7540790243293250293323511449518080 1245703813878299495006076114305024 -510129487435801477007158402078474240 1542688239428764681506452259471360 5010227886020576193744448071401472 -926014155603639891528243024972742656 107345000360463944893723322613760 6644735237321661009801748863254528 -60661267362548399066453051126579200 725416964273596293432755659735040 7870620548643466077877794886385664 -926936029804719748789199195762327552 3931955078482432702670011671511040 9617051679456222088757431022649344 -727866280606998316731641322838949888 8510419094806366329811979307319296 2214048252926885052484051810648064 -196862922392075984779508487062290432 6680508938149912034212192528105472 5972359129814113590422096528277504 -162461392549874354579332683997904896 5783945417752969004035388188131328 2113079212139588838231228551266304 -754414980156633611735939099712815104 2111631858830277557354405134598144 5734718545184954184474679025074176 -953156026365436909398347704174641152 3360549167625095251532074501275648 2584062747619840779360738866102272 -894323059121089410030809029634162688 8198892296057111833857059249455104 2945394625270333436972245087944704 -994902477189537779232082869987835904 5673958721454518200650287573630976 2911585675575276028422878421581824 -933324862022044133221772851450740736 8111767502928226618320021780168704 5113951193497221333051704877252608 -681390835086132817923963239188660224 5544016304819108729659239876788224 5729709891482416659564601473499136 -776867913378506811750435398256427008 7955079226084701583548664298602496 5386325945980011945795397751930880 -326563106760544954603269544527003648 2063223792375837804493771624153088 5253267985354120236978436900388864 -199043684134921700554679046700531712 5097443782126765621969013272739840 1143716711097840768311592541487104 -356385176908321169085870078072717312 3949890885165506601112512778731520 872293788736047535617267361382400 -561410473579973833310766296691900416 6646340198705063204399037955440640 2683957764138100462892471528980480 -803157867832204060516762352483303424 9170994536005232461857987678437376 4767728781533298672842571323015168 -451338371876309079388513996992675840 5667512251748834969115315079741440 4549246008032038204319093739225088 -908868609371402532312946243572596736 5013589182982023989498542278311936 2421688413358468892211359783059456 -811599788311769941865718405172035584 6308182881445375153268333798752256 148921973039231417111858364022784 -250447654379889688425930859822972928 6651609828666727606311002958725120 2171212615422192066536099278749696 -473378356785348469877028928337477632 7665525189337369526668765924687872 6604286100571583308651318529228800 -59264899892897593568914565610078208 9877036936645497489746056599044096 7763703395094564823803796616380416 -954409599307765256604562135663509504 1075956459206111566207482035437568 8592032962844040169844841941827584 -31686962872065168695661706566696960 5074580597165420080294767091515392 8044749216440148705900513722368000 -720149208244630786674235944743206912 7942206544932274177949506056749056 555430835009664707458588116779008 -405596394136682353214476207769255936 591472424459419628617764465278976 483926195580018860922871344005120 -373644835775587078870900789615788032 1237961889984313230817222023184384 3868948833162310974001385117319168 -498189827141417744683724199671365632 6214052270524902914053634669936640 2079399187926664001084576329891840 -316878443728724711066455074091827200 1838463645666622265600246649192448 6787818997462682199359996097986560 -71538812247186283491751196029353984 521039184355020533318956401819648 3622428460210474860304028835774464 -119551209488603955409092203719426048 8108480060968567426314600015986688 3844863240102030273167726775107584 -72416025952629578671236570234748928 2807520292942896999850615230169088 4122093112319254919900142548025344 -828989705108511719918678426741899264 8610699929646671335250635507367936 5620471910236187450070882857254912 -292008291208107227303658680320262144 4947083372910276587277963510153216 7103791073820750873202881749581824 -206972471030083923865645219311517696 4662518930515213343061977551863808 6244728302325098293613574823608320 -224945738631410052629343793622024192 7674572468542583806418580928462848 8505585102155310448018419380912128 -895939874108145006110923510071164928 1633103041153277102851098421493760 8883971942277177738790425220612096 -566007073066365427228363153297375232 9438900102243059468993200872488960 5978817749560101160234634172170240 -180766301686838715364527888989683712 2210694634350468046550236192047104 7856428837803225424439119125151744 -182260294514319916774519664243900416 6945894034022975005012194729394176 6543699224819035883225685277278208 -710114468820633165762312737373814784 8508065336935845304774517841723392 4733210399058498071489672395096064 -607519168955110735313829339619917824 4629335659079388480516844987351040 2431240677884078819893744358129664 -617359308798211444832534495485755392 7818872132730886247128681920069632 2194601579650673204609516369346560 -846099046417796515311428621263962112 474699683918676710726554529824768 1618845351746813350558909912317952 -384671781481678109433910362911014912 2532473180131574129553732381179904 2038436814842426662699927500488704 -746192946835022145377614364793634816 5160682872063920365496787059867648 8624098474553545444555098924515328 -345131657549666161287947785034792960 6542850425089820893267260994486272 2648771326516845214643481739264000 -23037731387305664115557991276609536 307555281653213277382600516698112 5042649721339344864495716750327808 -511736016121541190872731808446808064 656562650875520488761986717319168 8818135607282178837938630947766272 -90956419778421800557076395732238336 94739624439370448639199744622592 9765745830638546117794708355809280 -491515315543747218135012589560659968 584985369166604070006536622047232 8603349853798814146503393035681792 -213424769867350540506370714447642624 5846695080242740570946383791521792 8116610982286655693017963919572992 -779659244217353643078272030473191424 9841393125216582070172135987347456 3539178805134258089608511628509184 -452610454050704205451690085569265664 9638065950676513905462178517876736 8271705924308931698895635395641344 -993390029415333006748543812695490560 8582825053071663538803034187366400 3130479938258906069968585175859200 -75919746986626767437677436187181056 4127767366647290890080852125941760 4905691330879283745786653415833600 -17856723118637502830106949588090880 4320778634673064983033034273980416 667981617462112696161130845831168 -372677336026626868724800177947279360 7781496763184513172382094203027456 6020244511616163176069823062867968 -750987204220006508590840906820616192 1492040031362253982421469225811968 9637490639459287176042656382844928 -728330809771755670704904278143664128 1455346661511130790575839624822784 1076892280097617708714764303073280 -614259191062975549092604332329664512 5717799405140039957454848734003200 782568571447266093834641558470656 -210819766753062018828875219261718528 1470876174350982203600196182474752 3442660345650548108664948161249280 -908970576606276006127888434162827264 6637553832794543998769157520752640 1405355380931780146536533458944000 -133207672685489163793504698181353472 247028052286280272138475331911680 1548321552061936859138323585695744 -682857503041386984491439418115096576 6297838286078309329790831496790016 7915989762917392375917506398781440 -861520006940060231353667910188924928 1171209246252770487941572998463488 4315690441590944608257079194419200 -225687186431567885005866924788154368 872491385193249878128239658926080 2354735121444746130452778594598912 -25307727325863032091990608547151872 5825084229530913795380087487463424 7483564185517966436753878034677760 -675770360883437534213198881180614656 3911052094772512124568782776565760 4837272834371887183794213922799616 -864890454202066669125042892689113088 1197582847348000999735384248156160 2922842490310833961369987654352896 -15620587950662113955025496211193856 3843861221070888021114185800744960 5071592910177893952446233602686976 -29036413190631039105016790771564544 3365768600967588423524367120465920 3613133651996270711487072774914048 -774561317933842624447779685787500544 5082728645186769955027474215600128 9954120710179492020573485448298496 -548158384282653838745870301317300224 1992738198931222274477112967561216 9598249309299295659062948901421056 -341120276246720923699062477152059392 4386643078183078672281071452684288 6359513615737694437517305564889088 -178134542484472692768133958539935744 2560647305066828617237653020999680 5972601114188030953791391275155456 -654667341632244380744215526662733824 7911500757404330354566820073046016 6443846473228972156296369249714176 -638407882256156984030952424279638016 4621936471957801611159034170179584 5646627378734045388387896042455040 -527877400533345676998636877673136128 7363017716283095816440707035430912 3023509232461119909449559688871936 -418514233829168941916403555146661888 6506597550992425090521903273082880 3574244884557519600983485181853696 -376377663721283612593565988663853056 1201906942428346841742627783573504 3615894758926325330804594098307072 -317271826356479575027346964169621504 3520960824591208974901805292978176 5311901940690991398218422038822912 -309076473832609810992778086371557376 7437645581140667408458454835134464 7811443922171675320887554527461376 -666299366863771734826666951444529152 9901012330593261219121139663503360 2292761439877259607462102142287872 -881114065352797923010325851293089792 152226127286602372698965270331392 3341900052106826605483315823640576 -911507298895017787103559022811283456 1163314075429152798022494568054784 4002170092344910396023933780361216 -393096699270430800714639787440472064 2608095198346158950407814483279872 796411990118591447537447071645696 -587000198113781532852809885078781952 1090765073813671477272225897250816 5992598708008724599782881869430784 -240910720927040327668694128745512960 3088388642452323453887287715168256 1410705009182544981071436179308544 -900365532068847452883626139179810816 3038596303086385323800020931051520 7231063379045006577320096851558400 -762269541192104269131095863961059328 2612701537959940042974160220061696 7858235718399146930727116194447360 -132554302337367110963916979610583040 4120289995663771426855885784219648 2926448795743473209690981130043392 -192395534972565978854710561581563904 617539729589936408196314212335616 110927079438365089048103107952640 -450863399844353512551247005484056576 3804524420684307944245782986620928 3318286481909435867396489196077056 -77113235043955807963000982393061376 7636008947356214388710868292468736 8403269217912683755945336659509248 -385482996863387851420338399635046400 9528159817586869223344382245076992 6422939036334244328095819740741632 -279126385926666103362250167682072576 6711787313650134662438113324826624 2894377974234370155657375229411328 -924825436051531125427505273713459200 537765977830311976796178169724928 9372180829279747468597615556296704 -243103423798315366060274749789962240 5940161954115462501171384448712704 7484426028687217458435016664023040 -558179817888004695347447802349223936 8988714700997163660577781724479488 2309736999659353495811216082206720 -468220792800395468125776054006579200 1462461169497003004662381417594880 3550102141074135774124934472663040 -586693256050998266018019472952000512 7664684006632955887044368642605056 2797650637077594750377471678349312 -123419632943002018780866479082438656 5434078283855960259452719094300672 6173210955644468778071425380515840 -226336961417931158370544798356471808 1758961739862862692685249867939840 6494412839347311803966713403277312 -399294343696948455902037900693340160 8840063198478470784905047349133312 2221628557605225791841598617681920 -37753349816768699726718810273611776 9545035363365427299963153583964160 603735849549444062840789514846208 -522372948819722247468875796199768064 8865949857327388320874724665065472 3079097176053981188008508815048704 -241627293047888782358971165874061312 9084853772484610196067184180985856 1274811607640626542866127571124224 -624567433802144478227813954607906816 7900526492711143874000088165515264 7498409184229592968436080193830912 -121120902511747601239413595771502592 340191186224806498822067796836352 132308694468815352452921300090880 -172212297427131815419861792853065728 557509905459530297266663493468160 20381915435160973800294513115136 -794303930346502349441176146188173312 2890268266125436766165293990936576 8552110704520393713832873441624064 -4893264778289486311200600446992384 8504466676155708688118897497341952 1498794838586269819517463106158592 -575050305193552966845736102221840384 2710249131840700097976275382042624 8378752129112840579945204390297600 -404738798861397815515481896172650496 1736384931848759860668954958626816 6504397623441706325295494112215040 -828805590420381938619414351995469824 8352786905718968547642836814659584 128345282537993435802547794214912 -624910124874687968728020557861224448 4170661938322137382877779982286848 9560236467717107012734887003160576 -594847153463043043449078120726921216 5163473346329680932863543408066560 8819546396907350613910250556751872 -436595229213036146131766615891509248 9466921506779244980204817761697792 9464604728612611272402683163574272 -740212379840868947715084688100950016 2917172498826096307668464384868352 8414985535549245063108268413419520 -352751256065266267589265490630934528 2037432953756414137637753596149760 926465580701144946483564631818240 -638290565007448426790055806389714944 789396100781249033628120713789440 465430951823105765776470887628800 -429734746588404321223090670554578944 5222194674435945587011092974927872 356165021723255909705923839393792 -323154243833969354702862847836160000 9446779455782895200773396414595072 7953674871441925900570219339841536 -977893143580947468168292254087118848 2431531257762599031602511429500928 8380319952735160868637285956976640 -467952080840636491409700830559862784 7106054040327728890700204947275776 3620070078732313727884464083697664 -753808905523806489823087044107173888 7823343196367448053223015917289472 7528969720931527120183530734223360 -605107107224725811002131474745917440 5860596297139984203804821646475264 8352445194379989743577338994491392 -507358141849932332087299720859353088 9605538532143842589179691046797312 7540550658184884839534726366625792 -505865045058922716873613787822817280 9603516653558636370849169508663296 7041322440089482438391923222773760 -911428573662009548350181732765401088 9764439402347516118574238101667840 383916037018813526681255017447424 -929457499000410361669911079953629184 9847738943877353556712552369487872 8611325625229227333759860211712 -754187783274317298772269109377761280 4708119451256039247796726789046272 4355417614837952299400125078306816 -476622260785417887026722468607819776 5969835985354981062344621120552960 5949577343153488277118763126489088 -133130744900762431831731058765725696 1468287227853284293162916963680256 171165022928208149306647599120384 -278455978387636496836790171130134528 4870141823052605497513078601809920 3661688249464299744026056531640320 -54544400483990666377990134577496064 654914406839524934178096971513856 293979816016037220342350265450496 -207444454674923707351756226934341632 6537996444352036390074789197250560 3791213064310146135743437473841152 -463481953770793457109807854329528320 4782741082234165062035781846040576 7852369062246080570309523177209856 -592013275019001207080224630522249216 7500745824554089386030211683844096 4669535031716943850900431522758656 -84633268902407523200696999997341696 5433384418106465962090239161794560 6976610353610392867742614212837376 -604401133622149956094457293163200512 9433781711389933832065566757617664 7334396032727581508058524965404672 -549491437718493364666070210925559808 7280699620859284767598156730859520 7702616011781718716961925860687872 -530252258863507402362314665114992640 8785689579341199662729300241547264 1659298941681699454730165467217920 -267849738656847151413346617759105024 2662615715366186578836507383037952 7584767130088249747048258244444160 -392579886593650399324822377464856576 3027695643141460004776465865375744 463797877268075935336813486407680 -127735239973785400804123420292808704 9209539135979847644426798079410176 489712406744117933188635514896384 -466804729909727199673213735390937088 1460714968429144452504005807964160 4736832552455033997692674552889344 -539170324373813942914031284712898560 3853504843327959881724974774353920 841277454765730292441005770670080 -894827019452927561914098846521098240 5203805778311387408764771827187712 2833059605225624953696878671691776 -831431735371064323880396303334637568 4022561110751010485583531917443072 2114252485993704946146129146281984 -752441931046830946713537402730708992 7811023544934169284063976742715392 921407077329927341891058608898048 -350092401407403071319791452599353344 6887303755835570755696334576025600 3686797727034051824641031249330176 -614427513014243470871236074071392256 212015701639563077055697823727616 9141408508471660197027859591593984 -431946698162335172657546944254574592 4464567979166081974227196109127680 2094972003337785859239201705295872 -854346974900980474612736701610590208 9250796453139477112115918448623616 911901933123220530763434718920704 -575180223450673045839739151796142080 6183463843277170529929696997539840 8121182663235599068339315509559296 -450414041726969041344383754734403584 7963066103194472846531647349194752 9436465331411452605208516576149504 -356004514594758282441048190374379520 9960183578196195228852142743748608 5640283991623139003456738365014016 -543643776903380466381181834756096000 8497914276285633966658471512244224 920408361725505895117069897170944 -177766258967546444884210287653158912 776364896632121157591046975127552 7540696148502986336388632843124736 -141344886988892188497304097302511616 5664233492084755779606880146423808 6459906926235602527493515890393088 -682007341241192064132636071228866560 5865918189849728929802388636696576 1641041232166306380443410948423680 -66770258797538134146045689848659968 4079142647437792656183732390068224 5152929280166227140109865700032512 -106862548613192244019004039902527488 3106642238024373782166090276667392 629465423802421641491181104791552 -312584587659113670073987826305728512 9871227014895786443023232888995840 8926999673045550610051077949620224 -486131284326781062701661927174569984 806304909869640112975451716059136 390434834337591029552128834142208 -810735746083827657622476414351572992 7631036631659576337074501187534848 1847610128358747101702678814654464 -150800450794244131517079977533112320 9905324057664089193250011868037120 9342160633516444006181065057107968 -9189664971726179044385798091702272 4273336858657541507963594064527360 2935329055341305480580505960185856 -647760071966172977642251296389988352 9536348939336773949674145015922688 9965224758417815126741235762462720 -401004963563616613130034462897209344 2962553110931523598405198642413568 7805224232022212990854255570059264 -851700173777307752143295840912408576 6856953028595576961116819351928832 4507916762412798919122682757775360 -3342641186403436648626450967035904 6242871194429890981777967652274176 5073427443431725670439628824379392 -50645029195531037697582458722058240 5184998178185560090512662930128896 1792367383768269074552423584890880 -355432459608790568692715463567736832 9256364012884666798986522691371008 8276010783511348950435183720398848 -680405734721871115075051600618717184 4765407206283780435461216088883200 7603592331244907530765888001146880 -709171381617251869657417374456872960 4767439859472965236193981443866624 1887238184054365986469755943387136 -619696718971119138469731145386819584 1322088744999843179295187339837440 7474192914224449136703024979247104 -481149639394346570865343878743982080 533638852927230827153497392152576 7848135235051127572074772377370624 -382940485046899146544751422266671104 3809287270817085224037124010934272 230705124863731867879356298690560 -852370353439871040941285727956631552 2848058738161789168882775798841344 1768458742118407635271063235985408 -365172149638041955679367132023357440 2899962944668881374373366026207232 4809509385049966025301214640472064 -52898751018510671114074109455106048 4838100998211556237495165222125568 4657631070949098055379409356980224 -670100703801337097001255645122396160 5266951410499657010925642035757056 679361029999820188188312481038336 -712138660039084226187012810431528960 1506824602247560832996830397595648 5742054552159354606618473620570112 -926934078085367527798075264906297344 4606364591387967691902219462901760 4657516171450656803608847934554112 -974873194124216771683136302351384576 3346899295880275686879646323834880 2500134574406955155048414113169408 -725236823081821816059133404760768512 6034751206821519613185505942831104 9752246786639128263572386310258688 -860173640175683362934984496103030784 1083659137612563043487804572041216 5130068568196302657267163543371776 -642994633879571728259246830712258560 2180124345425567364670702204485632 7295060486505075491998940629303296 -757617471215122928607768992882360320 1530803961238711737908631068213248 973067577076284557323848464203776 -623781030299051147759620431718383616 9214901776990533070365348973248512 3334770976344636168636375544889344 -214682523515632767916324591870410752 4863122799107175942745419027578880 3011937150978587191253220540284928 -702444470876593904061460055806967808 6289186385628386172867870424301568 9489091598118575069973725744988160 -172798023819237647909853733605867520 8901886870526200581460190723833856 71926109566633723655502377779200 -649077442005968333267540322553954304 8174415765216698118334767364571136 8764114787305828382543340084658176 -600119088945029637318117419112202240 4910954625607926174730022150995968 742072071833781741881256753233920 -338451038366757929884051642209271808 1317578207145092828018672612147200 2996901762919633111395174392528896 -204141913600818165285907991793500160 6167109072475083734019449332695040 541133629943458686547348733034496 -802725116602734528187444748628262912 1004525438338577954226179397386240 4396502977168799598620967130103808 -354598384677688574070760840781365248 5906961704876329006994757649432576 7803182706195941559847378292310016 -712450776535208259092201375270961152 5881080839311817414213629349199872 4591176464459480066596160527138816 -527971663171350201371871175145160704 2383132214449401825270292425998336 5785825720464667366779669987721216 -118739968801630549263372769336229888 82387825721817702006802689818624 1789289781950666256494755613507584 -715510321395052809749032894629675008 4669468741536958682208400855531520 5117649803868246704199182372044800 -200860319141535186336661038809743360 5946844683979912085597724910551040 2858958013513148849141234769330176 -655656245609742520947274487699603456 3219668438962767842388829215391744 3804750088871583478586313069821952 -916201525119243403535827523996745728 1788826987832594821840182951542784 9636887267273424168817093712543744 -982253558478419301708545733787910144 4719909491860698387890489742327808 9090391390817153263270806591373312 -76838370568706332002243316935557120 6091741999191340393812805684297728 7406788961366692749531786260774912 -598354469698539592902771797443739648 3039366004031056722021959109443584 8671840978771630567992298747985920 -959677826412359557658370780883320832 4630966966753631216576337742397440 6926041700185530337084962037039104 -390451998007293628351437962351738880 7830008560036545357322846732288000 7859381849259652205923403028234240 -396547933900682998995803612513304576 5103491864397936357310525522051072 4982166259714012143619391715540992 -485999719522570169916071483665285120 895389931877652438107981057359872 4433334217260813101454398440079360 -649656421327974804005331124233437184 9593378327787113153605039648931840 787026117316223731346023949271040 -889378363492339638122563197388980224 4445214713039963174602394136739840 2443377853190540745218486255484928 -838128405077771623452482216451375104 3730876364033256942717368170184704 9821139599420763683431396411441152 -320394820971284766791093663521832960 644730830431671884101442397536256 2512809625369651339405754221199360 -481765676285787839217362174058954752 4954636256713772870463660245385216 566136782851946013529721779781632 -960693872620807095301416804801314816 6977004660834091929004532563968000 8292917375966675884053410990784512 -61538453772852115104707275432919040 5404603069505188646407675058323456 7766707367588617628592404747517952 -718701123896971106254047268577476608 3903991990993702858993141291155456 9923851748109386257400230852952064 -302538159213349392040755071939510272 252436953948665459485528266113024 2672632144789581498121006891401216 -120106895283409513207501545132785664 3295407809748536591664655917645824 1400715223849901455961232884367360 -199541403920380196054969063003127808 7623455737486240192655576302354432 7702685488772785627140349224812544 -74507555649899225035786853797593088 9385372561194252299218145138180096 369899096292654907736678373261312 -928763838564161590917120448429817856 8842690090201459680024906428317696 4507479671439365792303293224976384 -208653067164433249929343251953745920 4296541248345979192552392958672896 9033180582353534543626918990708736 -413632833058854179733982113477689344 5698223319844475521167687921172480 1614725796166163247877272572526592 -244388954252265599674596957551067136 6169889960284095259074988175523840 2373523689848007747172325396578304 -533927679443704032895787061724839936 5558950030213583276150678662152192 3387816062220454032802196750336000 -539632964079648756876633542060146688 3733478042357228815038843816247296 9335762759315366217058950253117440 -900420637581817819843114790379585536 8756297055844367884093442712666112 417835934982776012418108755017728 -11356072578259353837878713604112384 5390362242734607554582532648337408 7021980346116623446911146027646976 -637235170447730240520244978958467072 7205257515187961206381648109633536 9884467832060514254098529884569600 -96535504964797049217166260020707328 9926837097191596544453157754765312 462807948365218864457130025418752 -167003517567874759548033135947022336 7826589673661153217354527754158080 6103456836985585879153168688873472 -11425113574451824378530115182657536 4567879160418983336630267144044544 3442271891623275805019949334790144 -27565960332321511002271215964389376 697503290515118605545572933828608 5652120487877623613164138134503424 -238421198507877339839026315715936256 9433234218596837684476070233899008 4410742466892196444574977332609024 -677402762345753385257228522219372544 396558091791472192760655877505024 6089052421567409985252459655725056 -882045662591059151479913418323918848 5374558123908999095799084983779328 4191788490201907404577278263296000 -826459574543731325444259925312143360 1674141682318706171691354726334464 9160849436009847782838186056613888 -464397636351081363088220555988434944 927749296212281127759670063136768 4492126489834821642529285802557440 -912795031650302250818406440327184384 8391932782518633133853104402333696 1388513010923329229891715171614720 -921079850241685116853594791937572864 6634027075898728636125320941928448 236184889714949301434650583891968 -575600633913740047384242462637686784 5494314158071571004403344211968 7785411811393797221607407557279744 -997408412815307616872983208382169088 8491525822775083696801442147860480 851093450923746292837916163964928 -474981646662249690155865627047231488 7803211192341564379951812042555392 4603507992708443478889564513239040 -610005576316163059604377179393097728 514196017317328231443963716829184 8218369627618042260737383720812544 -689761137020653588554562018325037056 3679468838181593602517322258448384 6300300338042043232783649365557248 -714307585854307198180538772327759872 2764322180832603583993391230222336 6560346858149551845521972063633408 -143258694505086998301697875814383616 9222397250960156020127121461477376 9503216519875971980867181746323456 -271624916660691820283799690939465728 1699526134347584599805341240131584 7829183530804963588595416725192704 -710151845667303210410786727542128640 5174704728092805517670197504245760 6354706931846470335027739162050560 -321549328110034090072327549502881792 2063397845617846870842747012513792 132342255578557604612106170138624 -165058606101348443772261441518698496 5472517629096701971825230943879168 408940584130473913848659148013568 -372740385678418222186959329529167872 6207278721669207887834305202749440 2890045638901700408906137689128960 -165932635588232422094216481573175296 3997400340611194523718739570982912 6307075078097382822772853641838592 -307324095671731257954022841156370432 8419628954616287016473767096352768 4936927165174275122127356437725184 -979863162743261290725010938919911424 9675997813030148041732060711223296 1310539244263513508225371770716160 -989916331503782628244469147695579136 9120289814556992840630068878245888 5969022478279564699216555997659136 -75832003991867704746008725556297728 4128661136079187786315656694071296 1959363913316344801835280039411712 -30914379221229305758580703536087040 3635057453072633430088164577378304 9662302827339301469877540048863232 -653378756390737240365924789449129984 9595225394816683253716621736280064 2000585394425346664400470641999872 -757588380939637484789394758229295104 7005744400019013502094226428526592 3286071886364223363410615800430592 -449157174615391381228452068427038720 4741502509758629230688093257859072 1826152295845899002399274204921856 -550351992545490959738021562026033152 5885246658596578518958930235752448 5590038874429478951634545611374592 -312156807361390607803020133573591040 7832798903872812617351068553052160 9908871210957359243393402700562432 -187458533975722758985811975510949888 4529398911872520782864986927005696 4927231769758757113428596446199808 -98186479299613051264443403871453184 2874259248484001275708649217458176 7779757978038506231804015990013952 -129727360199785277141948291463774208 8741774626238338376864497991155712 3511107214740341000689313046855680 -521220258449307195658662489272352768 5313287713363481673604975694970880 333717475224350830711862286352384 -812661579534137660617669290628218880 5022813273854938960915434169171968 536523256217032531372307598278656 -54029868319147555961744615127646208 9056889628882341583117128732508160 2990832591954225733862688297058304 -85772945901467087677957864431812608 2605191388755597816051159456022528 6934085786026222888895130516848640 -868252784039064536673625869777895424 7879925463740154264979577411469312 7081973898257976622897511528398848 -966590366357487735474257535248105472 4922137530086287753118995949027328 3878109023963551650495476636057600 -216888205868040683437355265406533632 8073165932110579320516619536433152 7058966131796311687802497062141952 -540336239432005011608525819258863616 2283958206674246695358901153431552 3232661673311312135022550123020288 -114710146047063347396160962758180864 3716204766104210828288929680064512 7414734979664708963876364030574592 -890522779246408558284301774515863552 1371499823634531574139841706721280 5089792330273533505220716198363136 -639673948551019082130583481109970944 8125727495938431186970187363516416 6734026955706401964557983639666688 -32781423621244565703387203074260992 147068173227355794432491324964864 9246997693678814746427427039215616 -589403133511729660381245348297834496 3460848624273043005384096001032192 7502012137084930681606805817131008 -590395594050621179967493457368317952 4832919853992433923738737850712064 8665501305002368085575078204407808 -811225735197021675567064081709924352 1207414950880682588376642520875008 9927655864916029524688291978280960 -204828187642365253156789580430573568 1602156551043195293464548423499776 1574318488405855885279527270612992 -714933275852349431148539487079890944 1276359289619646981995770033471488 9180722525404888006924069444255744 -124725272865853221137836662922936320 6818864815384341572074890762125312 6341336489349786154908592386342912 -369623707365523974581896447002673152 7969004913485388479627272036286464 6617549200682607349366312677670912 -801307336929458922830901471139069952 5943018875170187571543519554174976 6806864099545713968542398640291840 -128897072931746422991905874964905984 5199082935032187135545962993287168 6332020342187813886469900754485248 -319194688284655127518203484080963584 9594208766567665668758892349227008 16889115750158806674879813779456 -719475136793265851277736402596397056 7499744775700964153273207371071488 2624852142046071524954177957527552 -231026617728387351652642822528434176 112167470855352907878443568332800 4340169850681089272111204382277632 -933459762250941539766280021841281024 9282092346787421173666550982377472 6285510727529345580192300330385408 -779898766220835509378450596581867520 8181874066088509793562230182117376 4270932856621469013034000933978112 -253462340152646502908854974747246592 2235513389246570357117640358494208 1788970849408427520473671692976128 -692423506069665130307626031791472640 5194114369462134727105406218272768 9970933695985977954123198637277184 -755846466506273176034864751236349952 4782414810548359752055411842220032 4585728671969077204176551846871040 -811650069959108966046595719186350080 1557253182612318971142497894400000 1317014072737740411513963529895936 -891378726434338849430207755196563456 1158131285601495877585939822804992 3681648178993348170163290556596224 -630628658428605131147754965554954240 5622631008207057405459319528357888 3652256278724038801822211956015104 -133044050993801129669933823202164736 7646303623985341164570053762351104 9785312484482144535526197644230656 -44725839230683036059070820945756160 2583786021697978395987897760088064 9980812927546586134930955182276608 -618880915575331287351068507863252992 2069735427078707891050949052989440 1013680406879943811847767092887552 -573096127998624899216826964820099072 9344156858107592790662307131686912 4164458045537779925839695749054464 -318469633905855319243888226761441280 312831490840615306362547492356096 4474228917019712580895443861372928 -712711759202706560098861304856444928 5233987987787210524410906245332992 9801789446379855170198943561678848 -353982053349080196769757861074960384 8851765353597022605886365288628224 1829846070744895163429204269203456 -533133608298907622233104891280097280 5499705675161046909407371903107072 9922932914178426467686396444278784 -529030607087506936421596466413305856 985128244809463791665440308068352 6785353287412710415280447177097216 -891132075357897277969553177322717184 5966995286842347407266093954236416 9403678181626492625068451493314560 -499536051749822165020422904530075648 3795970659898732234099387965374464 7795617377604645397581248505839616 -897061490888311436251567090816778240 3204797072437421464820242010079232 1687232049368640880505488737828864 -396760626210691336574020218756530176 9024661234635876983992159301533696 9250333465627483161314243742007296 -815251204569319978591297440365674496 8267383577638907013198560748371968 3822865275462528157663403135991808 -9770137339884486507581264894099456 6739920931380739756491660872122368 3040973816036488007158983070580736 -577408244563519853409730494300422144 3839373323874360378471060554645504 5961561282291758140694995224494080 -708013158126023595896463240365867008 4794878091774406905466272436191232 2708666190940408901940803065085952 -671729153364556843545444742380650496 6301976761266512745367550535139328 5015932404136457911569362727206912 -452324071240127286707386565120753664 9337454754226697688702811268710400 5502561421882393656814906065813504 -777237471869821490387549970266849280 5190134641344672332506156259868672 5418346934686698855108839833862144 -7848156733334468091418534242942976 1992380417002520343425080843304960 5169485270175021476339388824682496 -874999787993514002270019239064633344 1475011614680470724845715400425472 4231602176551108800332534808313856 -918119994864784343507335645954572288 9379496338503117008051952372678656 3182919545826609976955656749449216 -200167775573529193606561851550728192 3164089146985365649630653864476672 9547493838677822864261039989456896 -830406897287456687862610506016620544 2349942243963799039865926572834816 458944596536098880060131930800128 -971802723173258676075466956688326656 1593588092051809782601477299109888 3403677698338335150028141541457920 -577373515196282449703241731299868672 4303635045268221066773894839402496 705573825448439833715055425224704 -310355889801303182946527896326373376 8340500049372777630065601321893888 7727201569005470850300508010184704 -642501676774382358522718501130469376 6492862486326333861548388899618816 7336598038772848788985270350381056 -743940569917011192509637965457129472 8265035267706499973973968011919360 5334148691555972467277553710661632 -41460079838766544551781108044267520 6511227688731541838572094023008256 2217042724899712006089971601506304 -623403723035163379371715681815887872 3045853231194918230544681055289344 536776814950108748047522103033856 -549174199999303940573402811798126592 3226724583803015368099431662485504 646971959088023496354217083273216 -626794296791311675860795854975664128 1580889087958996071926250803822592 9537004227320223824905056546717696 -389294663042645698515865218794389504 229200323331406536207953926553600 8898329590431767534390860276826112 -660414209431012994723752165989416960 6399472067823901606945547649810432 5158218218127489080072680117370880 -542359530778909123030827178146136064 26516903857183873464595772342272 9361453109603684926518071889231872 -747785536057788091718842179689381888 7660962302799016236638872348393472 3333474013238101787278363030716416 -178427392032955851724316482958524416 7929188285922022603275972395401216 5696584292343645173374502802817024 -622717396698149192390172244319404032 288483028867544713882852317462528 5815444211552886742942346838540288 -114060600782366033273919092360740864 2626407838599177422463389898113024 9006708962866208280123044544905216 -682208370604828940662144259529375744 1948222186972525546917223938916352 7734633907321873722063379666829312 -869787073405078660199795728224092160 3277970231028264849566583396237312 7686519011957214505204096975241216 -178400013485257768350899393011908608 2679354506929413928169032590032896 1747942061819540600494650057293824 -998389195837657940566901880189353984 1248017349978442989936414644240384 1658467193481663398575774386618368 -382630075368419647312813547747016704 5556478009505879811980297230090240 9254923489054622424851824815112192 -613226151053609791711566892181225472 2617753015405554065689718615441408 4522501260797068353482995640827904 -960235823079185465976228902797836288 4615209665790401237440710316130304 220447642855294698201142370762752 -307025816053105568719945955473883136 8645078024144567741132899390324736 6983044562764959718145609393242112 -102141681466658232032171730027937792 3420615500184234557709346794373120 5237198332678591043911047574454272 -368099774071146582734679052369526784 5513356570735089745461226894262272 705372879466349106235218786779136 -60434319217015007099540657313677312 7049071124393477938423707176271872 269525402355696878348133766004736 -593423785613479513338558057048702976 8467477143401846368946070810001408 3589559551360453437350886298877952 -853545264179752325394407686274023424 6740605344155387577952783290073088 3335852998321491628701385601581056 -597827517481622762780265068231655424 3482662763528890565766247654359040 956472826668961637991052902137856 -66422086129516684521173160688615424 7396052410495099534400415990808576 5759556138409700545118671697084416 -417299659440533388851964990457905152 865124319332434051097274271924224 7731370057727990841933679615279104 -245475735084384503682116288482639872 6984310859877747144969700711071744 9611994249064808341321879327342592 -824511949197331171526714163311149056 4090131490668736435262201171804160 1231135444391572503356095204425728 -199487535656500526646749009197137920 810919592537532092261397199585280 4609422091555613380875834143801344 -257425220696488914547671211312152576 4409180548669297370012686695268352 4037186495574737402835100818735104 -71985121401965015042214099261849600 5375862602686759208761973276672000 7574603351425616528865569311555584 -781211243844423138839695248353918976 2990761877665349274298463410978816 6835448499492601500771345055612928 -658607615663748331177641157448433664 7981641865666224180520761960693760 3073952595518997802696532947894272 -476891317022739658416590998112043008 3705875375554840890218296285069312 9890585636919669736969567402459136 -994783180461141997241893991227588608 4908532859827214409124615378960384 2167275907494141691955647644434432 -164515719601469446852906477795934208 277241710644766930461521367531520 1263884698101820787532415258066944 -469484359131552802261388341654061056 7440895262111717672577871718121472 1365913465554042287053291682529280 -623356846438154494939872829808574464 5047497127352018451804682763370496 7971840197792434865895955171901440 -469965578914842929871906112781942784 4828830718808612361779167499386880 9309590313014200800031947439996928 -78362733556204594467016119689412608 3956552778037462239909907563282432 1246184250468757928809207259201536 -658197366211005985932049396711555072 4643297621521539588222696468512768 1771538166072203497078507897356288 -435938176867853168419526182472515584 808874030994415036689974177038336 4098288907177619949207874634252288 -968112358202411604719896971198857216 8305886654132689932533406227234816 320280174575562967334087877984256 -241793360562614784480700846384873472 7942478771571160290381833711910912 8861757217424214934927280959389696 -550813408802272983931761330552307712 6321391692516761351945747320274944 1586054585317170870093646793801728 -454953043101900039643938051890085888 7243236539302051678240002866675712 5070484293260866242810574087913472 -301389391617274784436610099356631040 6650693169927278310946996175765504 8719874916430609967531564690571264 -735996213411570120868552554603085824 4317646479748445951836240857792512 4620483646135086051591578267418624 -827237311157719519359646020954750976 3554457445545054810771096369889280 2218408982364828704309139216531456 -941664137446705028297823069449224192 7119417954197470022855534168768512 8979055301293666462073643480383488 -136381287544921631259465094728253440 1530343931807145914434887958396928 3476783059279175110007032773607424 -119103363432488354163088497068474368 7245136394162053620794217237315584 6092329598587389397381669690802176 -968045516282350197619678936272207872 8234993145104634197348500551761920 8878225969749716961059910969196544 -91256496540392990743476786167808000 1174046526171256501884971311431680 5374224634351880924538564813783040 -209734244945158267139055746983919616 1384380306048442675099978080190464 1863260958813170483376626033754112 -341181180032656477923243138249392128 4974257993247364974271044064903168 5698729112629082841951015192756224 -533412169501647029123840735468060672 9036618480532815155868943823929344 5258895805555210618430443348819968 -166004002796746473017759266949300224 64324415341732834609444673290240 5233962797359281719324961425850368 -492790595126867446479100386849325056 5147718148436288609384511356010496 5349376866779591326996173246431232 -204527335529706678843101752426758144 7787921306051632936786645129101312 268140515373912875239952695164928 -991755701073733072798652052942094336 3802134162094080370106575202811904 4590236084372978712217439285805056 -129743718045981104716015458863546368 1374219405635541269940250905411584 8656995461238464774433537435631616 -782827244680426098284754183930249216 4513680121054286900595553682325504 6396717151727537038862117819645952 -51314713679340451440137235112919040 1614038044628064243701179215773696 9015505702779008089352282428145664 -744660289301252836555809059239886848 2792868277842270193781551635890176 2879679913398843715397633131413504 -24298596258623321385747485969874944 6571254019093718931177998552924160 4458798930041975463886946138324992 -833160367606105835478769242946404352 9576620063906278538767551709577216 7028928919840559813132520112783360 -666983683970887879775902451219038208 1541312624237553131595280542597120 7914896277092187943673167609856000 -632186638969917746724303906132721664 585421328852413519542015892652032 5595987369478304798552442831634432 -497141574219369965795503585988968448 7626527303474933389161313396064256 8053190272837470311424278883467264 -663386509700055266150024896539787264 2643086865556950509692615011598336 294775717404007063995834437730304 -514348885164047628956479086389100544 6756978686166320129242831565881344 6642893174582751766616300190695424 -342145827420586170629952110592000000 2533554182779832272797054414094336 9121343889128442548186812881305600 -622541958864086981939564391182630912 5774192353092810913278185890119680 2332425262554247417647596828622848 -692419309718474161975116426360389632 485623853346266571296448744259584 9729034198139923352037819110391808 -743997648009649848773959896950374400 1184953284909524974724667047673856 5286514808462915872156354873393152 -676109692910971207883086772140244992 3152883609557809161675670447718400 2359575240516847888545706080731136 -454176741413645257132558954830757888 1988307109863918806549415237517312 6782993264982626730993346037153792 -93983395402118162155089262955986944 6646892734177964601222618536738816 161856917968024385989925505335296 -393621322515018372974704727850745856 7383123994193249793630151498530816 8486176056385803520468148071432192 -371678866203284918738792545058291712 4357953202480688396000231428194304 6432713473674697255477782308192256 -15902845415696001794529237663744000 9373419883649549942678514730795008 4747038441041082454565243353825280 -514854677444261909513435235661905920 5035367123818702384531531257348096 2759254623640026839631899920433152 -658429797027085289827959252168212480 1363354016821537579165882830028800 5877181806436851911699524975853568 -422767514263381218600638786064875520 7268882073444257980204014540685312 3030496618786575424176999567982592 -683953206254736119187290941512744960 4744647167778870915453631214911488 9663261916773167091968590926053376 -570920627789617731684291455515361280 9166438887256869262367100508307456 6909522318354841874975758110162944 -771255050382035882223707789180534784 8535011007181815359535004751233024 8828474211314301697309693913858048 -25182140980823592092941647035236352 1150701409515074412442521499074560 7241418368333029657195060538638336 -578090262143581588833747883666702336 3566805709052821735180731970224128 507675138451589062691350164537344 -144142969647721964815459988981940224 8945118491543243108014819381346304 3092907148782990530932555235983360 -781711424328025158553604498290376704 3865766610599797036484664366202880 5986396020237861770719593207169024 -670531574156843090704355764490731520 5360645871392808056738560109182976 7825753172872197847914526820794368 -557140312985932283929265030765215744 4766872168332950269101316379770880 2854334969320682278851108956798976 -123960031754533964301511389423337472 5988444308078340333394271290785792 6709211581015305352775954973327360 -135858233711889598701575739833057280 4840287090276082319822109758455808 642470094371610886784311172792320 -102951071800010762342648341233401856 8873495398934904447574167577952256 2190523874582670439061736231272448 -704381909457793135396527575673077760 8412971106618414867518059756650496 7626415669014069847399046276186112 -450473947035634255590996104630501376 4434369582484896235455803593588736 1557348431817283157091992748425216 -606014467803343534354042936646172672 1210683583743601663262899356827648 7070102836983204709680274336645120 -867216559201267303182545214047780864 8387524908186495928480304478552064 7047373789002428347221036490555392 -503671182074092255020176377804488704 6199307050981329973737497775046656 2233311248115198146385333687681024 -170487795447776523515347533173882880 2928282306616294604796472892325888 4064417650816430557630784702775296 -799498741907382616662555087886876672 8769542759079919880707218765512704 3593923131420426179715708573712384 -100971695348267033539171566114308096 4118321732291883070773848952537088 6372769497977405040491397243731968 -37488929283785195743483942806749184 9549584438992879929353603202940928 1148373732419800159293998234599424 -588083980898758188159116436219887616 4294740151877224323023922446467072 3230066796838904735190349279920128 -339731061615030469811532122543882240 8788567946802093330663248404414464 8296881013575735328333885039706112 -921340643977758856691827499253891072 1943514361221921772786851321479168 3327262257832026871937406802591744 -504078803977326606554551615584468992 283376964582384266231832939331584 8976274645267722133703533476708352 -529638039045336780255478568921858048 3546074928821015033656227187916800 8401951643491894307668367222243328 -163163793945819612847839042082963456 2739386371165226756564454255624192 7973999291106692910586988932890624 -543817689951203916456459828941815808 1203509618109425346214172479717376 9852102863178791091399119452766208 -849942979725884809138324032809074688 9731729940574042876283978734632960 7585241969840637471645781702213632 -432334838576304271501964786131795968 3153719302882554011186418287640576 5335688495651213588307384668782592 -641264975872120251425214245726322688 4902458957795767599191453117448192 4558473823008036154001261152174080 -819134643420016556257616674651373568 2044860765162138592437637216206848 4654293925168301924557330340380672 -509002527685990188080392915432505344 2856025966426294873406334876778496 6239316362751588124201665169457152 -349751879050907483257048920620007424 2908851541215999961001940490387456 3894120718751770656373234322112512 -927640197678991414954755912183578624 4061833948101484464647181476823040 5836979569363416233649778202771456 -686171220323392333182568288426655744 7306949173385968163559462437650432 7273762483355994939303260640509952 -797493697560660479604075900579086336 5409005331581205020817254451773440 8392877353326761118939284307443712 -921565715084403943711406764565987328 8070108629993468346617885962010624 4395534290516747587849617269587968 -337774531522513208220200558925971456 3556529267443490369597698497052672 145415554233049174443964684566528 -558742822906939354488620204525879296 331228889680678729320664974491648 3877345824018120865984505274433536 -699080019099000394735808110162608128 8852948677474015808415065729662976 1710941840397224331199989476753408 -328912025448493893301648966213959680 8015227030670431996730140641984512 575497175135501078356952977768448 -883313764640827495637098457911525376 6287336173229290864952933263343616 395462350944061816552648079310848 -715337797267642595732998738990333952 8366849471659650007449280519864320 6892393219948033161468638910218240 -121261616498587578475192758820667392 1103278158610230265985074429165568 3397356020096777405589906568249344 -822079046807479018470688509868900352 7707681875819380182325266288214016 6479739572838639550496383180996608 -936050645090594691552582267370995712 7993076153686151337119934561910784 6884918638226310178763018181017600 -582472999851318703946077663093850112 5578202319867176755585605083070464 9070051364128793772643470400290816 -727568884604810107757751225884344320 7953842884198411993517980181856256 8612672196451090682716588284575744 -340573011059309013289300267366350848 8854747129080304966237190797393920 9064041091996811974482738242650112 -430860658020549510660502929495031808 9047112202781343358705911484907520 1153102986106106376743406037630976 -365944542207317900629994034169905152 5034554702088729300094827083333632 2726414884075172037967092874477568 -346176074653194977005246992852451328 9839742989975133206865888508116992 971603155371530407680727192698880 -357356882058626801235976799322636288 7107026272951005240999300856545280 6106422673912835018644172681773056 -480526230823049766292591971261218816 3950110162864353564596488208646144 2016730407968486406734149788368896 -396288036666276297640930038094233600 4527182095506429006741075828670464 79131055860731062336567275159552 -491939251437992684785497137148329984 2340601333155088601417641541763072 4774576163867908186533162580443136 -33860420570823709506005235184697344 743399080758950214780113150541824 558893496835684138228552690565120 -36766639395386512424351382531735552 7558956515246484255685763275948032 3183053741114998471894462753669120 -855490507038611951407776637428695040 6959106848526892195073524196442112 9205809864271690688207316118929408 -354294197445279897665806053383602176 2148694471406036916982923246174208 5869047141097003437472029310189568 -271584821938813165133173763862429696 595303417139878532404195088138240 1866980026941881999122542431830016 -836714724529967323512589707607277568 8463883095467911936842719970721792 3894624491349646471337013824978944 -343834855507295490904897566564941824 4707055332766539034219366114656256 6832708611686274525140322892120064 -665586225243194049264592396667060224 4816422759764650719662872469700608 7875884201084038732809745922523136 -981087334107955346488677202233655296 1563164978890901248040758476275712 6675629879099212267492760914755584 -249704194284889909337340355538845696 3128975829023363629737324889243648 7117355588326290775462367322963968 -127787887853555834635103020192366592 5785892280816860089239814012928000 3190015451923517824809194089349120 -953271272123817300904615382414786560 9815383524667435389799477033304064 4074884627620631459333928776630272 -967234251060244917482394867558514688 493873194110515818812546287140864 3738082590514932304174479036121088 -130118753077954273304234169626263552 3237695032352769955370304163282944 982546474741524947013847073423360 -52066207163794452867068402990055424 397306481416079923226342284328960 8360644594883424313988234256318464 -297233269122474484312791183421079552 7820457179753427816656588895158272 8410150583481609508387253303377920 -929820136990761646123660449043972096 6890674418232139472827555837378560 2074004744977997113494701636321280 -760373418487024958499294446631256064 3144700407021176290141371671511040 662576818981631215099488499662848 -276671520954284336015062941430710272 8708799549336032831628794556055552 242698401809419209773548182700032 -161784727904419856897053773766066176 2109794665295927123593290108108800 4437645789326859781209981573922816 -882078888481986539036033261020119040 4924361496702646947561444510531584 462013494535247291113026267119616 -767442947914574594616956164537057280 4009517712067611037362649183551488 4214846210738237297155197886267392 -259561259378332307634651300752261120 3711972435617836433917507675357184 7558214199839927080315444569047040 -748211724238439664651286085581668352 9791658040679734826213999772696576 1930589374275658316557489843208192 -417783090575312126447528180652703744 244130221821008636471517139435520 5315817223735750750278985088761856 -412781227443030877640936556079349760 2333359262913759853381854108319744 8839682370633235102797831858028544 -798974158843164338564218268076212224 7117011767812648303607843257319424 343272521302731025113281445494784 -146952561751984370384251150254735360 4674790107716141823639175712210944 9768545245162435876093427812663296 -931634994944214112013486333313941504 2996568253443837710875797982543872 3354206569507934529324084728168448 -635976805379857697852116297840590848 9782293595813068832765671456636928 8326408182113238201692228578967552 -461091813672437136546792973174571008 3196664187792210941811366169673728 2648242498577144083247437944193024 -933216163667244502303144269418856448 4285236416839373011193594181058560 4042696221757279586036158650384384 -240436436680078707585239575699652608 6669287451404883249646049207255040 3615196630333535022805937071063040 -908406100781509677875055959950229504 6070178548127862586192089350930432 7320575139547051018327215812116480 -552750224153719879538071579826061312 7154193175860976546146999733321728 8398112201747135762756684075761664 -546464823237341333502855088084877312 2777160384504466358303180992806912 1018029962560425003902752274776064 -759302740618848744268645588505985024 6766401025955865083459590942621696 4340274204306205843868359239663616 -695530218288869942454406097494081536 2776656389280763229543747412819968 5039166853457380616595054721499136 -138845480056522413783418439576059904 2859854403232222317126125631832064 5479913287113328436617560364941312 -14698263501081194474876197773770752 8048839802234381003803724638846976 6952500772083268154265728855310336 -627031753899548342925012463553347584 958954354002713794942415876915200 789402196522178749032481721155584 -230278266902119654085575144812576768 8021865985084253497721301090959360 1397943704528424146579412683325440 -669861352019098946634927296066093056 8354775074294479375286737911676928 8607089824936867010899808794705920 -51209907418278509852786601479897088 3554240900248396807674687630868480 3200788764529787565763658487169024 -335186385878121560742675694695219200 4528999799856909104726091925291008 6519770027110326839604454845579264 -112665091479212512155885107402506240 7334841173611824850200567694229504 6408224478127807008076953435504640 -470660789137658082426549707619696640 7357602622182818826953410635366400 2446616340485451320308944674488320 -976594058876504126935213174339665920 7351849864670061546921152357597184 1188785068187928085577482859708416 -896946217224919407808647786649354240 6511911952606235530713862848380928 419829700396355531654984477179904 -966695579156542078928888412998991872 2622203045603286403941789455089664 8294978969710372827224922281476096 -996320631195523260639132308197081088 9614659841274305725692580714250240 2634786539179786459203904280199168 -421909022486429568631309046732816384 3680617059746298264757302452027392 862925873072241894479136076857344 -205696257990130677110514601305309184 136378122499552490589232746725376 4390553585667829916882833732796416 -782207299584813899209359689076703232 918478691381723388617976748965888 7067634030714288303552897856045056 -215653335534150940060718434724347904 3810103717502464569056659389808640 6750034424436266124020685123616768 -439064343281183607998172309904949248 6179039646653564906934949235392512 2065191131667879026811593086205952 -5670212851424706672573667124183040 819273408199149534543558417055744 436618286372855858378821504860160 -916631801385336162262530937222856704 2144966865225091076126484520239104 9821094740228894972930932896432128 -216985150950768052048899278448361472 8877522649577169580350825505488896 174390638654128174211524527652864 -977451901508567765337933953665859584 5987970278842573540718830996684800 5187015482313707940138113302528000 -927586302424908052340748375243620352 957380681840581973980143440363520 6726639654557741350606569306324992 -170155711333787853429751113347760128 8589221386070192896082190985592832 8819170238767923483565578885529600 -813691550795648935643630063434334208 1890353741858699441422094466809856 4233888895085254605394014789173248 -49075585679301835553956357732302848 7995831502668528228956504407932928 3869629038349069382714288825696256 -617397936549333461636199895707680768 221256805652514355379726203224064 2331644219033480759925465835110400 -122859762462490824601814482093604864 5792351292007306331426215566508032 3864989816108477766345670464110592 -123387989348859876724047155747094528 9484449657289645133883213757808640 8593972671001050773111822786494464 -964866097934873599597575487306596352 7612606410104721763590600831008768 345807008337960109727642351042560 -139677042298949680239907683489021952 1853319096607025657634084014260224 4259116182687496113365399396941824 -383686429460366343214173504302743552 1449808108337301513856663456579584 7201606874041602114291143968555008 -440773759018851832370443680258981888 6103572416571158214271792568074240 7783372629577668219989320041234432 -153909193713535600644015759726477312 9112318527604553582059901593583616 4488652245940615775558803721814016 -148280152447203129668312292587995136 4795667756230518361591615638732800 3174421487906139374726352813948928 -103019878164394299295204695577985024 5100560073669436412374304405061632 7014150530631705436744484885889024 -738638220419822612990302934320283648 427043866278031371423345589354496 2541872785618347979014578613780480 -806293969818881254315972561721098240 9697329644408762962345024712343552 5816308536870796976962547344211968 -237407747948590943888309550462271488 6895774913306935068261535067406336 5721228122120884875650459160805376 -798783757908270620696006936328404992 3473164837193497336494714309836800 2045320397044419443174709393358848 -902905255774611282399084646634618880 5697825428260411186834586699038720 6520891108733832810500908258426880 -965844313983206208703543289705398272 2113948193349456118657171356385280 2838901218402505995677366321414144 -829752103213890845039412416104890368 9851509126600257712240301801734144 2556533659542209910000952610390016 -247505474154077893561975057988714496 5864306200936523384005835987353600 4649070268819865471064316196159488 -233135523069176133162430323920732160 8684646972194788120393131541659648 5585251880825075211905183894208512 -597198094105860615570510595951165440 9063127162607139498131211170086912 1663010300745262722724104041922560 -936632694845395120289623610581057536 906056161509029220638375114964992 9816536920945635495630630224396288 -3231409747808273611671180387811328 183775711701312593080322116026368 502489241643547651822095054143488 -376153843824026688035899016378056704 2126435846777782769703761439883264 5649670153068179418852736186187776 -265046883192526054993157847131357184 4920045110687448344499862267494400 8034732876004689983810758814728192 -989885556650972447125864332404981760 296543701067085279395612098297856 5974248520079700692242149830295552 -830105441425358339435492881127702528 1175216897200350215668770239676416 5874054261306020617836904870576128 -40810318042569038163740535327555584 2455338012673939234056206226030592 6499401950214770723383168810876928 -380143466655908692811207579633975296 112994986892206952563842968715264 7512723311843700374572509085827072 -731305970681851196861314683679801344 7272932268649481533537080764792832 3196563079285996580185906285117440 -185645466875468925622643128300208128 2628348586003459977737529641140224 1677108997484069922530730780393472 -215457588259732858715715237413126144 2528265498124512222257831791820800 5792420336112357459086985094234112 -697586496754881120752615160304107520 5280165287221937829471082835345408 4563006522536826716395327901925376 -387167718953152250043355622805602304 6563990433376965499948271218458624 1478092919078279522587486724292608 -635628228163719484640742171159298048 35824388642255949227743296618496 3263388624707577580664529184882688 -496271538657150714055433850915389440 1620756679612400401187337804972032 7268881404118565396146538168713216 -493652811536320821112384557370310656 966679777473374876269237642461184 1633010716296212886074629707268096 -888783007918892887797033916870688768 9094069999287597066510689936343040 6401026829535719277326572770557952 -747393286088189358153013715095519232 238984288820788541658989988937728 7526604724890897731058986200858624 -325083048341218134554409905283923968 8157084802852773808721137055563776 626513947443716126795919729360896 -373953315204902879825842143500435456 672563210295418688989019380908032 864255649736329128740225537802240 -57391390905111565522406401401421824 3558607960262748792388711484489728 9570175129298319456325363260456960 -143448632771445723258665726665293824 5380630034985620062252379964178432 8818857325188330434134161190027264 -868886444556258958056178359843422208 2761205140133541589382644673544192 229452009329495850605167702441984 -376368564683986367281418626343632896 2410546138961209036532706317434880 1650090533006461367531407102967808 -475428933594242185934820821119795200 7582341382397886294483116910182400 9381455916527016102565676910116864 -524623062251036827008453630155030528 5132826410088780719497895171063808 8453627566025159496956951406837760 -90353598524602575033188740333830144 5559353695163375747952720356573184 9550223730112478997383152459055104 -543615025690378505010268389448351744 2883330273611556177968685526286336 6792874393853514953231831566123008 -623767989632556274976249613276676096 5226751600319474523787751057260544 9943288879422818026252049544380416 -131895058425944072274494672999546880 8717043101316503747860744745517056 552418058947784168274162385682432 -903085448313855924055476444128608256 4689442219513730031896978404671488 8633893953041854774155576057266176 -369347221183251905925161531444559872 1017443287244224863480360548171776 7077470093185531487944007091224576 -722746993340262087270332268332187648 4230195034250735253235555559800832 5661413547681506461555737231360000 -124660956824632253839489086592647168 7934489599601829489608597627207680 5014944404828195299128255935676416 -947779996027706287849958849575387136 6766051448942759562019895664181248 7607337251418214077739726486372352 -371800646480016623289991417594642432 7925888029252980705475921233051648 4507566634293838637934670071726080 -807784697922388138727423350226812928 1795179269103465412087377024778240 1850819212981225818879313884217344 -890607614054530610565616123466743808 8943469232835263156112961052868608 7816373211574075916833444740464640 -912456429273072031577995931000242176 2977997231195366268637886602543104 86780479818207747293616256581632 -879209948668501866364069017076891648 7230710477082303107904489065021440 1707571428254184785656520726544384 -461561313159069170260774432362463232 9638876977051482275382448208478208 3691181227559708898364657298833408 -711199214202781977125510821101699072 3228877093234921461095680270401536 1441907985426016126487630333345792 -732869466098992010375962211074965504 6040506963856261842459109592399872 8113433694945546526795249739628544 -311135755560842291964115413750513664 2020757003098909019658252105809920 7787800570223030591743685744918528 -515528033045361630304256831520768000 1111269367632556075194558707662848 2064303015933658630531918216560640 -854790002306543971519485292950061056 4114666366184308252572090302988288 7097269626982894595006754971451392 -480537772008569321498995443896418304 7159970603375924176527080051179520 8527959298660111148961458265522176 -554583196916344379792560015649275904 4074789957149224179155225915949056 8039685017929698932360968832811008 -692513110458075465158089932554633216 9335502096274201467448272802021376 8095540682773644040279301292032000 -18177830996180913342346683429683200 3634105062688543136782961623433216 2001103014875056313180378300940288 -235565344291140177542606172979200000 3319387864088883322025220071489536 3938410466923371008859536621568000 -693110625392479990451699961091325952 670772414103072247389922363703296 4677015595616370491283469129220096 -517047342285303098183348964842012672 26154159079375660103629950418944 2739867463267526269068260252057600 -361545457853674616247481862004408320 644404580268744653566155132239872 4507680758612386597029993565388800 -536168398325486351486761497505300480 7769511072583510443466170463944704 4368204502812673271635104506052608 -507472141614003873357987622785384448 3478406409238941060740239578890240 6380839624600002940748810793517056 -206447950836167412213308218991968256 1901379813442862534074712062951424 6758257113400737547389393310842880 -49597495958823799327644515861266432 1487055783594525266223531227611136 3083699321893722355570804300709888 -432071913849480362428190311271366656 2098157176271702719089859555753984 1482067711974338875274987021795328 -660806269089182996339984879040069632 5831896567861054660966508469944320 5086047941287403335814834273910784 -840950973742899763776655806699667456 3241928395981593171920215712202752 1537579051296955195970918541164544 -555694737796808159175169744492822528 5876950059374909588110582006939648 1810871827194082937124105750577152 -86686999874713382505586003720273920 3612236717276169072347047679492096 6232724573150635676634816568098816 -613499316991237388279471571285835776 1717374855299733899997270564143104 202664986404891255645690732216320 -327795055412695970093866787929063424 5753190620304869389389028170661888 2333914897658019743010606140096512 -236689130557486300288440588327452672 8498143013064151688793978417709056 3597322169451804521175446814982144 -530543340248724437969599998784962560 5718281120469864186096442872430592 2678269032625882236468423995424768 -191036654765470823142210904111710208 8180356993243627635913225387638784 8626319120876920331101294798307328 -85800960708823624394811570214928384 7291966970706729457728838747291648 5216532725152996402402742224551936 -29211714998607997478918354630606848 3789717901437561204419580380839936 7837767381903142353571156385071104 -260056283833838289992994815058378752 4938539375109107059475742627725312 9928539326362491490963035871248384 -816458043840743827189333082079494144 1805444357375262730649255446315008 5321803868165231479620911815983104 -287175152890270717826052641228062720 9332396152554319489060002521415680 6310137292464805738567136746405888 -214588810646660963286338451787481088 4619664150777142900957426913116160 1494179999309396488305536470614016 -812167217253425770547125934153007104 6894349494545210153666118502318080 9344076720075774364614900611809280 -782866999264753106046030938265092096 4076671510972583884872486909640704 9626456296942684305981414381191168 -864645794415473789481940831296290816 5823779376174958945005599937527808 8870518811978969900862445042270208 -29700148195348354606026307032580096 7427082840966576987239292726149120 4070900275895527804431070924898304 -895024231708226320507262634173661184 8610592631754977565061598270193664 6683327966182339135262738419286016 -75884850928284820296710445114327040 2371369653027405880611424910180352 3095730273892494425416155369832448 -13457910961841369614548707173203968 742067032206390795750080813989888 139020561334116042281440488980480 -872442765009634724445193369676677120 3858505695925001108543619073048576 6717216076022172745568980446478336 -279718501616206896135429158107873280 455987854871763468466111824003072 3955040532955583799154079550144512 -964878512306672195078941452340822016 1102128170164738581422523627339776 306513418482301959275691678629888 -503118774658622178143766393542148096 480309746479953401289613980467200 5752255909178110141757266109399040 -48743085672230239526698785777385472 7708944574757951118951749366317056 8292202228129022140122479015755776 -881827680681940960913708106502897664 4291498995144556013967097915768832 6817120276791281993904471406542848 -712085260573626750307000675899277312 595192943198542312652885656076288 5842120943168640071755752829616128 -821000702372667556946046060813352960 2586518614854708625639263050924032 29194649159398642711474391220224 -689225818481686097465893648020275200 8366945931982934545275625664413696 4945207076683520780831932333162496 -58806928096683462149255611440693248 8498726027241700942063423656558592 223455293354261640557818281984000 -985255121539003031866516325206589440 4809155752401336208886236618686464 8092435339310196254473371326087168 -675816078137022563989982823028097024 2672349794401946835980835815948288 3254420603948301827104149176582144 -79712810848109403055176226481111040 5498085186584749124965238355001344 2366328337719683935220532122746880 -658941601351757235542367561234513920 9585482082379491116630750582013952 7936593042253975153513154796847104 -567747063685389004354468265685155840 2574689967408089680647557604179968 9496205929576787838184301690617856 -421434174975333289967992226183118848 4338901453550874025162595457040384 8814319908407351080005091339534336 -54321758335402214509750047276531712 2116239091843790055135523916218368 5349095509541062478325729749630976 -559474634625737186011194425673252864 6791711840952168869771275422138368 2938169224270962527413392495345664 -307382857731822418479086177018183680 3007477755345733355163270342770688 8024068909104545647274720946552832 -248135028180586769370317097829138432 1220404366033382990454605117128704 7335904820826170077099094620241920 -108668968324137902612148254276583424 9573144788473824195401648317661184 7362237656754195953989657313673216 -487207850328427813168325655565172736 7237827458059595804361822578933760 2646436324091857478159542746349568 -976672209805347808847265820085059584 4259040976824669164315407860891648 477909866096249217649937494310912 -945404897240784175866084690466177024 5293014885672890031563560666005504 7750365499035639669461769244377088 -320767709062334413921303269432360960 2039283654296931249497550675247104 8134772377326305929192263754186752 -253856379900376109887821714613600256 1231579143822646001250588661121024 6452916558858628073652320435437568 -101161891096626869070696339826802688 7680522946837207409518589415260160 2023639837558460001896441644580864 -719096065971319149408242244645814272 4733147723918995633800523833933824 2400356761559924694158320154443776 -491317199886762485614030688433995776 2714352777941234091946722207989760 7767519543721671146295750106808320 -750450545076341253503895853154172928 3945084956535496832657071154397184 5399094021805581812457629877796864 -812755302673007979169760665789267968 5519963195232154675259995752235008 7543810749943153989170860073680896 -979332346802813860494931177915809792 4590611398263253581950984667529216 8115213536953842078165109733064704 -421333951818206335593264559610134528 5381992173850783833148449622065152 9210600072314880333058178180710400 -829565656023292707165310858414784512 5604276483708863726345357606518784 4933293709038999259633002399924224 -937648645978258365669895731610124288 3599628157596406930744339387645952 950642149361652152805816979685376 -786571301868957762316313050287702016 6085700641993449958030685379756032 4289378081891070309631792896802816 -218431115652643762482193889096630272 54109390051215458229543319371776 4705959301828243010293260263358464 -503035278160385812242184203304697856 7250505222954016380131020340461568 8389970472092544502491060870578176 -720594092133702212459239207960838144 3794579133779191050502750076928000 6054064914398128175204170859544576 -395940692559217487122427785814999040 1847476567059322398652999340654592 3831108789053855258048154986086400 -987461129153856927880971301125357568 7468338005905787637055537903828992 8103886459285887172456010032873472 -566126618531544111768565554870222848 3931492526908865522839573174943744 501333306357081606153635482304512 -93596964565801108442775853016809472 1971455673824457590561878375923712 2313488614225822884412747277139968 -282038067796785549628806712214421504 9806394284216912416733378117632 4803529989171917921014146528182272 -982036628722042499650810226786959360 9021618164106033887750175598837760 6381707279524123033442326717399040 -247857851453313076480219338804035584 932688816821831183699045410406400 6841366653975295121272145126096896 -874871319537233038469436205852262400 6719275453132805543011388005285888 6027282379995061640124997407080448 -149992525441772333794996177797644288 6577392788322443184573153957380096 5281489359589556326544684412305408 -174882799546388904844023528970780672 8823656510274595622284877983907840 9493579453873548484776822581493760 -899233931094682827515659322986070016 826810984383162806231592427585536 8936489854979067087632659780730880 -629761071754367567618162734313504768 5081406124783139542008921336053760 797393179866265103071224942034944 -782606254598943409338832678962593792 8197239657144125606709073117446144 2704518761680222772462686335664128 -146631700766024382316069690521157632 5142496601262518129523532670959616 8454125680424734010307367028129792 -555547825594093301051668277613297664 9018970892851854240093026918596608 8002247022394406887984521585623040 -24033814117899960893685288602173440 4527189216680781042293239200088064 1291911765492921816897808152657920 -767714910493333900922909825444085760 226560286814805702405853127114752 4616097080070600084369566982995968 -179152876104876392265606595577118720 2619727997745897285659468824051712 9166463468271123415520177947672576 -947450653553926459664304827336228864 5264223683495072872862771107069952 5200865401984272898745569101479936 -930892228764095277381487895064346624 3333111233123563570280747604377600 5946819158967132128269695103008768 -196545459251491434984295321105858560 3352883530282765430889724998844416 9877073933215649894865152726007808 -844253039888695782570123168223068160 9296620951965074837107381563817984 7383310228155677773884629754839040 -439939435960839315811917300605386752 1657759304956879049608030201053184 2705341394698666502366950569541632 -480413169121018211939325788238643200 1879051248257411694932287641616384 9563101018006280846019892424474624 -118003048440060842043723764773945344 8142010998293371163428291933634560 3770978548714015875493335519985664 -498033011715315291334916030297276416 7591733185174964652990966263709696 830690514260406611727984426483712 -51269863787083571531908709372395520 6032489221253995961353800884682752 4423318303606541843906857283878912 -889361552027763308202237200661741568 9319335536575520736910459126415360 5458703358187667249635905283031040 -91799955659496976626262151455047680 5599494491342708125706290020220928 502404496870353773930790279708672 -651209883175917484002805264546791424 6975428417379378598275601454333952 9456942167570550573931561891135488 -284909431048311723853938208674938880 9506841801775769179911274325082112 4643343948190085851932826718437376 -846761444797567629300251889854578688 5455360571074833175701974734077952 5058321817015662604854346752458752 -435462116642798324450922430793252864 2277021532737086360518468162289664 5040743695564331252887771733295104 -989965700089409286934447847169327104 2282578864327538296425110023700480 3835024917951967216502912558563328 -899697196934954140291099962166476800 2520790468098723623507320534728704 5448252161882303827201197460160512 -573440650104736242618442430894047232 2941633617641040116279983797698560 8695477832773445095418030783987712 -615729914738128302000494284264964096 5251369588813558270587123716325376 2673850848860098882004296952446976 -400512309945748806013987321857179648 4901669944194883869917501097771008 8245621923756965361315408248832000 -599651368966630073775633442375991296 9789138317867161071840423667826688 3066679412584057982786506630103040 -79836804771141592295780231927562240 8949357746757634592185839580610560 7600959738277860454566559184060416 -478564421256644790711310673164369920 9179117238593871660670708608925696 7075291642721096472368101009129472 -846112157014871425752566942318723072 1769532069434048282990698267934720 2985525334485858429239092223934464 -311493317723576422683565111673618432 6975628179870851696361814691414016 6537299823229262032308542443094016 -458095323984399072950292530891587584 8618592823925203056205923165929472 4029586119926556992325199956279296 -303155664310874578088002095536930816 4690650279409760411334302266032128 5802295886615639541095571973472256 -514276914976225483406768825199230976 4644942391707982921396132037787648 9023794408698843256887564033851392 -166604725104838534888129798560808960 930087204514704696786490386022400 5742033833386698485298686907645952 -715526248473060201282838666072293376 9261995316092547411241313092239360 3163316432704859814423201855832064 -706016972054902717519024519443906560 8859958890142592495850507244404736 3665741275372873429257744474439680 -913728405781464905158424380718448640 9673149727827567860952164332470272 7259942251792133558017690272006144 -479440034725253785324645286120783872 6565686219856437419088723276988416 10418127994654031013116062466048 -337169284535840624885530010876641280 9325491671999599576475133391405056 1325513644233054993720741671731200 -738557989110756016374315021510901760 9834589113074289597494930857525248 7832347054781550028308137014984704 -353799284480727122760221512211365888 5297441191471159322347334673629184 9672537312581787095551963977220096 -534252789991130456413117813861908480 1068190408706762632927683828252672 2391786830435250295848931688448000 -108695072972515351239381352305393664 2002961324731346399846070214459392 8883766500064523458205914415235072 -382053910377210065653676378043711488 2173698112455944750873463528357888 5564993519557227903277273039503360 -27341083677116192536267393253507072 4398863460112600346757068237045760 1741399893156615483142897282318336 -929140416787618359275965877483208704 3814598427311995759940397827096576 257906584289694763178482477301760 -764225459560095135837996183168483328 8122826134763999665645807997026304 4760466376254749000249123499147264 -563753432213996273910051556405805056 8661548650809258132219305949921280 1164783605830556285271927836114944 -963897580533266604378323678864080896 7424714589045609194535476348846080 1818717522927216293578671497674752 -528597660796725328712237948849881088 359948949340218583055928314036224 83573404621019424558158996045824 -831496688747011466742211109869060096 4974633888923609179380844572180480 6947451924238056254077319484801024 -148396826536234390355033682612322304 9460598107755068369594076561932288 5224293416702165241221407089623040 -380428395220699195664414214851657728 8542348831635793167736283154350080 2878743879038750286099659624546304 -481508482661356388295181137296228352 9354573375829440690132412264349696 2408768971047281976905110738960384 -557833552009082801451409810716098560 4039560444083150312999479416979456 2985271401174587042806714234568704 -292848957397974824098418772873838592 5885687680880869222008251159150592 3713811383667333892006034385403904 -607205801409858170861942363652096000 1888578371505674556205759517949952 5893570023181252556660710595100672 -17110711839533605945296533766275072 8581220748648313930268062542462976 7827391224090185740739496709718016 -473421448944497362050307343450636288 3749437968643613007065281091076096 3394489429702195413687249441652736 -685985495578142228838859069466869760 5841566395218034679949628190752768 2487071302804251615441186885468160 -532209620276994934422706726344065024 5913380259460920830971717737250816 475123188055245259875223336910848 -129973688773788803843146003892928512 2376038792105353823769261347176448 9343662989685050352985803952488448 -913335456376970019750855629758005248 2607460163965032763185772967755776 8768587513417190315547134942773248 -93053842054109357642294713267519488 9879593870945025758040388410540032 7812263878043336688292210455609344 -366486880318167850525179379619725312 9399308416837655843601968596516864 4386415394465687001582910331420672 -96704300929566310729641774362394624 4791114572764551015938277995708416 2466492186857973391733543875379200 -507421905971985024521873468807970816 8451746369913729440767520410697728 9276378134756389359129589031370752 -241799366477185415041885231187492864 9470928055515117926623953628954624 593788530247945800741168231743488 -314145808854464107157590115142860800 7756339390115965691343437402472448 438920544309549637837977873809408 -120651076847861532620679249150345216 502705634987837438669024196034560 9365443865631066063560900549279744 -684589793508488912873513506253570048 5983556815381395154590060158910464 1077040651717865321694540656017408 -671208002485548920899948721366630400 822832852723654000211378101551104 5558516429955967314510324489519104 -198441016237364858117821980834004992 3321380840508718907921184799588352 9887128641000978326016436004192256 -446019616842664412563620331815698432 9713154285560693173156446216388608 4201445978781274497445766761545728 -859852117319865085504098213610651648 9768640357677097092297302361505792 7224271733308034076696392109129728 -687564242403394734804291427130933248 7957605948799376254868653223182336 1263191698124356181707798012231680 -16306524309729182265810996172947456 4314566782570029818424843554521088 6304820001839824697831253176483840 -975839667635571195371642503775125504 5079757988205542880098040242241536 2526928666302918770199063808704512 -448498370666987644068342073321848832 5001109329210979823338733638254592 2868870878305172859391747324641280 -616037009082106303489260966394200064 8806017888875270597596725119025152 5654730305100343050924516184162304 -118057672734574946432373590629285888 2443604463928128846990069200846848 9928885707407277693869572904452096 -123984451360391278681692837263704064 4119574296720265229019645615276032 5922962156837827161627277054181376 -959601586877822316971183239157776384 1296112773025496958903367665451008 8984336318325393357392045144014848 -825846416393652071591419723607179264 6811474577678125505921074725912576 7713011301066613998429221406375936 -805169802319806393862149299914145792 5908711722087618875988240362373120 5226315063504308874552518215991296 -852988777119123578503650701912047616 5157587890237113761755807921209344 3238227968130986955950740589248512 -204290774153005481455446397932273664 1827655674395516248552668863135744 2617283394860627000976978938429440 -866449572167001940731271743996428288 943915384635805862812333459374080 4275797788490891544504682395205632 -515833245745244229212102970996424704 5277765158188904747969128033157120 7233847490450042161004653890764800 -101856803817331247804268773101273088 8367450737723260911800151621763072 9799821559034373923581277037920256 -484582020514969269402729035509792768 3394256855257368799674710959849472 308423562857271956971248473341952 -304014405129545062659649208720556032 3321459738190312184443188996472832 6334573736620944403829669691916288 -355295610725484882730331945136291840 7968093851584007299395487575048192 4250424978442218133234168721571840 -362086306753447946955245833821356032 4484559831905364710003761395793920 4776958400175026250220310995402752 -398229544157539900739792705530363904 2261295702179398543936790376480768 6343494471295097679516978087198720 -6381982881766370196077015302406144 8169868519434466331761474298445824 3847606423626054146120999386480640 -325468918673408225613155526433046528 7802174740323825018745522585862144 1740792572793631252955514720485376 -639562864178539381873524625060659200 7726042543604883672700860422422528 1497505625986437913751456824950784 -549202015300401211893003177261268992 2301011147510677738877458103402496 6733851631434053173055668210368512 -634455557145534046970323138192080896 8372398995883794829935898743799808 1113345165335817164733276449931264 -333069631169160079153711449932562432 1585526904083144762718224748904448 7237928552751959525321609398190080 -950074196725560557956225302762881024 2710129160430552546317967841820672 298392805149648766647576526061568 -201593403844845524407114371986096128 1281211227199613346923324282765312 587390835626939382697324141608960 -336220544440669719364531042973122560 1112851034450094540010475548049408 3315510093383401189742216107524096 -958495311976144497209349871773941760 886948359711205297349812557971456 8994584560827577426826289001529344 -269783998074306378267120964097540096 6809336619156273124262207647907840 6158576871658900229203614209409024 -522283749894236776733102262282354688 1734074742221091744641265333960704 4383640560956051396437268313931776 -911773996409799409560993791823839232 9933494616709440670995449460555776 4381489865951311124584168836562944 -132797525978482039337057395043991552 7607195609527859395592685367590912 3862698675069639286812807587168256 -32494560811955582989434141030744064 3691861222486279414816313551355904 7794993065624501030405570188804096 -626076392795400612119822727420837888 972927302913231290749262636253184 3106121978817023280890763437670400 -4562680915407734891171534233141248 6259073369157572925887877553848320 7720301957655307729527339464261632 -732475646412901805055654309927059456 9218179122829144417533521144315904 2864611989663570838435310575026176 -470524808385812271936844110640447488 564459209869389839953270145024000 6832492226051008574193101527056384 -236538477306900876097975914852253696 4686619251013206624648230967705600 9731589400895394254869058610528256 -816723708217900801531690755108634624 9121350238175314008899577607880704 9081693622608203443007408520036352 -717831497937687755232647591407648768 6746134917233730034688146200854528 9847205128513256656274144419119104 -35944573068222639934789796812029952 9374185487517141665163637149401088 8655280382021456600578423168958464 -100758985868341209700902596797005824 212792863000052095785078599188480 7817552165149372630785890600353792 -387108813052148796857252229337317376 4208998385204788628898694270287872 6575542215159004356373042908102656 -490885948298527532842012838092341248 4010795543702205597163521220542464 9690045639323466625903304510537728 -359462635225879271470258610321227776 3994359073747078172868566610608128 3805066887663866236327973925945344 -695225677728744239065090384403103744 646577149909052062539359786631168 1950529991148494988103462330302464 -507147125532289656637894186944692224 4990875955337441870668462376878080 8436636658630242758935550445486080 -86651951535176848284595332321378304 1727271775430898965485906884034560 4636832126198118396669849661079552 -10046229099262131184195355621195776 8251039096351792019424545479852032 3227934209476882742875220376289280 -978255971722467779869447197984555008 8779398123445936320399003453751296 911254252851342996324973637795840 -247630843807357551885185601129938944 8887974154443879760714826598318080 2168102643694490533268406205939712 -514610001097623702862793692625764352 2307959922337561538009552578936832 3592883454202463567018837294448640 -789861180139417775296573796039786496 555277563504743132965788096397312 8387046632973695907209447135510528 -590464927028909309177788168725856256 67746304291521966115004201566208 5408621332342942042436901382651904 -707419170612673570594610679927275520 7970082667962333712515692874432512 5566695031856048872835710896308224 -540002058682684179437711091440812032 8221407787501772607945381519556608 2039467148148145352600843894915072 -60958999972148824675903299909582848 3615579332517956187563167594840064 2098951731455248830299203967123456 -310150391889628209975986264981110784 6738267016780802469953684092485632 3701936322012447164005234352586752 -516862939289893353211832422952337408 5549332531621525796127943881129984 8203424231167447026405721851822080 -159246690155984363613928091226734592 7695385733868765810597378186543104 1215100278509831762972880177987584 -405827504582924804436575261885988864 4269101319837208949985359496740864 8098825852844829606363899422048256 -953709545129134409338348322693316608 1517305204277768254720448550404096 6216769741747048884512325541822464 -110470410508253958627578912022986752 1496316012974591182634600649195520 8530894078149152932162420242120704 -798400696386862100650302284566102016 6079722985368485577122208683130880 4226007308046087910618689345421312 -712787188726202348328925582455734272 8495950608893682707244934926172160 2644698036244508189190833089544192 -709852181733471548771750080852000768 835578654760169105390756670996480 8972898289336119864026084671488000 -819911873815220976856105282843967488 2794041530173508726654527757877248 7598418148538743471030179716923392 -758901898600868402662270307208790016 2999575093426181235323396421582848 1267537333255417576247497509044224 -447450338576710983219530766848360448 9902700157754058312995246752923648 2844287278303718699608503150968832 -749412739931634661825338319738765312 7429399060318330153838363115782144 9606013794020808749925786863009792 -764024745493941510358158323535052800 2551347867140156619523905892122624 3728266823087568765014525136076800 -994870393006921160209963694021410816 5376854263133673573047155011092480 6502099396565246331761074615877632 -537599121439536723988958987620974592 1905190590910138755453303530717184 6770549763031334408155177819308032 -54253445304572920321034946776924160 1505106618757317604727467261558784 6803368562801907849869869218529280 -840599321344083953987680796969795584 7532285050384572979651104953335808 5114338037252687966300114247483392 -52232828282628546761511149697499136 4554610391348218918550570725801984 3884160088890441670733812694253568 -784349542612419502928235036690874368 4731453111772899731781663504465920 5343257678775086612638076808200192 -370029554975605168171106719043158016 5201835048052902276601364931936256 444481032030967154336005879758848 -51231261341225163547302485680979968 4660510136811597384294198769876992 1957346905539895432869151166693376 -437573101449001781785875877103403008 588631033650003946790223668576256 7946722702596185761987076298899456 -401519355257426963246025994967973888 7316457697797678223514264538185728 9984973053296318298816046952349696 -847823086193812395718961206692675584 618313140823838991096350240669696 8592498302075204637333062424723456 -733691190908600608873956269210206208 8737913022819541061987143581171712 6149238739350548060214464857767936 -350540554320719850557410749712433152 5900049171358382702486882218934272 8530202065215970001172544689799168 -231347936777675437912665159811203072 5291674185504870229696061871489024 3358388861588317950333002975281152 -984670665981274298377830415166603264 77150855761137960260536247517184 8362495295423942578769535942262784 -18343117640204483054808341785083904 3972267138641977666253211110998016 8852333626523006331894533174853632 -528969948203278921941336456175812608 3601656845742204555940387136471040 4532333022035871711390729441902592 -926954152588978330137886900002750464 7108082009997253922544001113653248 5948945096429957648172246687023104 -720895042242212387430465225755721728 3838169482327660216915550701355008 525519921988054053944976847405056 -100565967043966313959668938478452736 4937607120107503206331003028111360 1276676705534629164318728539602944 -60803379929828013147928590643363840 5514415522220122026284418282291200 8158633493398953930073009912020992 -768925566712836310329052280746147840 7755516106242294811048534289154048 2944861311861508404683617817591808 -235861816801457765507814096159899648 2850869432297343248490863643328512 3334667841546866018441193930620928 -915049660710043119511716671084560384 3031904392023499468866513759371264 7931349209081496879098144281853952 -207191020343347994083133226789896192 506593408169817866745249483718656 9151005988296869291876974053031936 -469397165600890453473687642535100416 903066994679187415082460952657920 5077644068749331504115964868296704 -227622757328969067990193155375890432 1754082161990625393471516011659264 5689262464753520478217595888074752 -181971676282317966340659381077540864 4939184676034112795896311801970688 1049214478105861283872053374484480 -176430267594858980590175897255936000 8877082239758965094148706639282176 5680498480090455214973953813512192 -224678504072565822204060066587344896 958316756038030582371769806487552 5303742930776566725299176076214272 -478016925577435444486034949941493760 2535169970970206353387954120949760 9461666102300020714434914848604160 -714425836864784927245710946488811520 7875648467455833964485170088116224 1436192304314108718800942628077568 -910777449325730136941987112400453632 2966735011567448923501005283262464 803911221923827551332033600946176 -355071944024230747237969827903569920 2967323625635480739120769038024704 9829635713932789258614044650110976 -566136320403472929208861539348512768 6137209786015626462382223263793152 1986345943091091328450649565167616 -487034006136117010572177876396802048 9208158565648556399805772765069312 2516937072647932842004756889075712 -710049105681490417479637696199524352 23456900018000181138095352053760 3778850036579724889899333603819520 -528164388473366245489633544927969280 8970252660638063690480292915576832 2830870057782010498359248616947712 -500702302805553438671917299150094336 1929254416793250635379113044475904 1640954077366124255408831563038720 -205388614647251635365762082858336256 3120451854645653244884622629666816 4751616113324969370453786583105536 -474453682007765239612587628096913408 5984237955409439484588141473431552 6661269189981081565428695166877696 -261015576137025282071160005821726720 1183042403743804059049189905006592 8134468393243405877245232296230912 -466833204320675138216200739737305088 4425459518008733782066500812668928 9896081582871424105776862084464640 -811733444696493499892849258954489856 158052773533679278924164455464960 7015953879070252667709656668307456 -851588208853334550092785926369443840 6446938530707880520246579158843392 7024398128383484332695254611263488 -30513253501176084278482313966256128 7487723850753979230946960624058368 8823761224664056290787959033036800 -839760320411488126899549545825304576 5646496262798339309916909855571968 8179040582394776858388766201479168 -525012665960946942989417451089821696 685414835037925526729714334433280 6240993050043438025499744218906624 -503285960421594464986569394047942656 1506361708380114413626550898393088 9288372959009449847962477109706752 -352495109538756671438388213550415872 6037603289351801890913125878726656 2397066046853662010689857286832128 -892941314004846609680289184763346944 2308081427241230587134566717194240 5747943647867692495763845756747776 -348195566221938087666470196063764480 3575766151176441107175787924029440 4557619084146873809370773545025536 -532256977642847442407624961905655808 1381709999639168640369360573038592 6309421260384659607620078033436672 -175096720055333560088988523295670272 6657810743451980571453427810304000 6711730752722025500322718277435392 -500425297214331737487927226742603776 7015977118380710087833446686654464 3565402708323494809496436175011840 -767734780885478543146065516872859648 5277387762751668644699407143403520 2433446860837122090862275341582336 -801215009915956966089233798073942016 2894891133790246196422463170019328 3890035628442033160716103719059456 -299016247774908170784416156463661056 2395514381360789827047788180930560 1341446579478196353105262668677120 -751397726029855280818777060297146368 4326444912816158734220620409602048 4043176818009131513140357927796736 -860316827745896422607555236955422720 5710941688796493425334414297006080 4822630264537078766328751828500480 -499649095511804442945909961149906944 4567292198064311419247121255104512 1375695311107320468100052542291968 -636477620438178289436918667815157760 4832728594216464629212440189468672 3465155139845434371700674315419648 -133685593694323083774902611143032832 290406278042783425379106753085440 6611143706404317797917340802744320 -497912728159551374455086688239616000 6909820806953245395294452344422400 2117082647790251210027639144185856 -868438954427608651719800986506625024 9477318653537061232899111383990272 5736928901993360727649156323082240 -995012045055801235043629018231341056 7941750202662863059480748849364992 6153806298647124925685750751559680 -609763788370913259015994231033430016 4968054623941156383963912681291776 6638689586600358258373256835760128 -339262843087997563416431222910353408 3581662739584914780831340315017216 3892074131775230848308444707946496 -938202914482443155463498548841021440 2145529066985436676644747838750720 8023475751259569462117071440576512 -963964805675932488924401612248580096 2682360276984369195599277502496768 7124360099750809281818339099803648 -320821916853893460785895172292476928 7762295362446874606940516668932096 4787497492727934338136545310015488 -691564301202456016999145046013902848 5131557127267858984098131546734592 6696840566338503388648141576208384 -612821310200821749177647261840048128 3178036174782031308001511313768448 470925566832500892038747702427648 -757903659879196195318241658864140288 3318838601362586569586185200467968 1171161957115234859887097873956864 -534258869511096967203413133589741568 1741722839892822268686602474618880 3377527906509244523452082033786880 -685723588808901295144956674353135616 2832808844911584091624468010500096 3898337003223711928405509627969536 -634367900031528484839353709739638784 402822945037540170196535809671168 2083260488888938264322059127488512 -634329081968978031233997737327329280 10884758174835013812569157664768 6067178288975453683917418353655808 -803815464731340999148240637865754624 8136541163796982033247951218802688 927089421406131444676647683358720 -624244377109932986750101309014147072 9784632629298290571347129435947008 7897762831354769806380727835557888 -257161624439780269207879191497801728 3947957639618596254473814232006656 7275660740153842082804242690605056 -913638422150201867485747864848564224 3498788633234452217929884309127168 1136760081358267021713629782212608 -765823549393455809367398743371939840 4966553492704720165010568686600192 4847941865474711462302498804465664 -589235118112726873861460903721959424 5800656189789116609244910483144704 1647541571839462312163983298134016 -663078349243038448135632861377069056 5557712208484976711375921189224448 9639373900251413377884493627523072 -161943140502412982833414374636388352 6424380712974787720770937176457216 1145383388204167601168019997327360 -834887245477918836362745921029537792 6156066015378587669432471459463168 833631836190246551129267374129152 -105869111982026850900179172645142528 2071775769414362845585707536220160 6986208504209509224544985310822400 -714757903038724357797016387331293184 914972011560572556337420489981952 7807888273871926095717490313134080 -357715781761115123315337071983329280 5088684444042432719045179222261760 5633716041589077015674515489816576 -149986781919345806600771833629245440 5606690750684615424690410162749440 5749700769387069888886474885038080 -685298280409611581412189653302247424 9397064779853154668579676196175872 2961717635575990693228188148957184 -665521953827289603038673514967072768 2208324159691608943063380604747776 6853618761064512931548078245150720 -580305427991218690928494756503748608 2070339706478153232387333985140736 4970598032764052828723101099360256 -683305250491778825827392053544222720 8301071094551965329012384010862592 3330243724753960168515929827704832 -545962362851673951483585907684016128 6550536638409678141581722185105408 8010618193489938975993734820265984 -847265787742138468311770197959639040 5016270468150637333838715580055552 9636572533161838709649343711805440 -475198312341542654948050187291983872 7682243754925976198706024157282304 6765944095795659770403652345266176 -289277306411076572792264956867248128 6510304553568142798835636483653632 9075071954559035025734026362093568 -903670407635297312623111793778098176 3975692699491855995051118862270464 5544762728064180044831694304313344 -160486175333896093945932386848997376 1822409627642387410935522355314688 4203620114199420198794128951083008 -800892874565480651180142097518821376 542580384600535760336929878441984 148502681147166893568587598921728 -193446937147882834410648873593733120 4313321996276053434715032317329408 4751067214415428279675012580900864 -457693083690915072667384908439617536 2141233187878505956858636619743232 8520384954636596204009027711008768 -82693223632017076667769144429510656 1931952153234608432710603082039296 6085893289415399338540175330377728 -279492308121304045068939112713551872 322565694201040733013955462561792 5659085187446687110186619543486464 -783014691728298525556663697581015040 6823357841196195061007243865489408 4997793454756906369176777489645568 -122659896742548562480279145456599040 9470128760108291635433029834375168 8611196550390079962573561617448960 -935679257250651930806137886081024000 8692190952681080315373017119064064 2729710417387198555438957761396736 -953614828567813136971902091792482304 2688378431656743951939480984748032 7029165685007011904931012651515904 -705782985322369960331505778263326720 2200889101182667117565170937757696 7713184792441331535121550212595712 -508839279412203975595999616122748928 5188362443988878259880164790894592 2850365315801387848204174904786944 -316282383345042865757639108596858880 3689828561588068832628801395490816 2195969326115343013467642130333696 -257359574015532728227360188240232448 2228686559918396018161456051650560 730520081239766500556880203481088 -208351557626863926758300428284198912 1853359536346615852650884675665920 7000638536836801964534605218316288 -301514307347237805447073151326355456 5865548844323306500619834763509760 9813619717912131579174416136798208 -314009000761399837715959451322679296 2221322792827687788675947334467584 25450831197799624643235423453184 -70471637425192123262324242764529664 7622809104170662121061277830742016 9068558362633869271464520171126784 -82580057034115179903318564989304832 3900869918376276420281905975394304 1669467070727353085151757348110336 -734656213399371967798898165601533952 6491781646391880200059717372870656 6291916817407458566447714216706048 -920293420823455962973596989958127616 4287240998298484764211989826240512 9228472809361579827141075229736960 -407709534468768075137464940468633600 4364184477750749663897105062690816 7237018543911706125909427631423488 -441411066567817288933973649833066496 4862820400720791268317213268901888 3687694862857101473152529038573568 -421808411196554793530180963447865344 6383176785350236660159560456077312 1530604476628471110354149534859264 -150850491984823248693106836328415232 5104029658619273379794333357572096 9289070685396344137218188749307904 -448423304436171612266392695131340800 9049272109664633900233363086639104 2083492602820047238024845338869760 -267284278459784323017655791957049344 8755643328982140787660583910506496 8463195391476194037330214349963264 -494801805789117723086879055952216064 5157451828318564412700229078351872 9211910418102915538460649849880576 -905384307871176690510978765132136448 4143002471099550776566175584223232 5135661639140419354957115314667520 -75514803083167728859634123738710016 2674160851905644332310618483720192 2650822768884090597393546568794112 -206194134501731134175481461641052160 5944736121869679305372210038833152 6600466941661053537627433582198784 -289786224789431562723756045869514752 4128056211929341306721063753744384 6480298653804750236089055182848000 -626280769698821733570205076024197120 2514466085082679929395121911496704 3663207864369860775520989104570368 -438254007375899977626558044078866432 6562926795319859579478766751055872 754683587989772673835144939831296 -524506298606436241636433599349653504 6599964945101202033802614084206592 1209001023336648639780172997853184 -553081243999869024124871139800383488 1908661380873468909696247295639552 9728341213580509876777131238752256 -553632314020261469032877550399913984 7231627450487928055633981506322432 4604605068998839772798269347856384 -386964218621473224697658523535802368 1879002385633013145969412787929088 7302991154137853832992382880055296 -501784609874555155372999554839347200 2754589587743983431421805507641344 496237556162180839587211986862080 -765208461443825459361837315403022336 5231812093197305023346601006989312 3179132867336992981608842129309696 -906285327002879510247105189283627008 8261810084866595407327571749109760 667335478392782008298558936055808 -583596824147898676413578970306445312 8617943745245908665875940620894208 4822071241878788549381382102581248 -519700225384013892402890962137776128 9670419420373162186117671892811776 3062100301899411202297679971352576 -606112691085662574165845988752752640 5358080590986757048579917722157056 9304651283598485121758083218931712 -785736179230061753670541786388365312 505309348760603181010145385644032 5015579086154002594598365756915712 -154484634269521261460936949023899648 3136359149710587811085537228357632 2409526844326849605978587771437056 -595891332869819371386660246396076032 6302268498612145327466020834639872 3440204094680246506776178412486656 -882658310847538752551024552847605760 7267689301249032518314368708902912 4247679424728561192231274358505472 -287658233762275853501668424677326848 9547235218794478414643101224140800 4845592388917954187411061139832832 -724243492726530723995104615535214592 4906041704595160711404263399489536 1831290647158048808860336391192576 -186118743595005862737497308251815936 9938958601061819796619976058601472 5110759914060936690851664162193408 -941085030378635770684596926935990272 5286915883805650959522266418774016 254782493089739758504152991268864 -851299776632489926219564873408315392 1906759625650777954870354629361664 716942398969524856635645461790720 -298660136793016957104673529985499136 104255391297686418954887719026688 7889562024734893175084316612362240 -742598890077371866931127042497839104 609640579909080037383716655333376 5149318108581442088430754013904896 -472555980840975898713625973682601984 3439085125283818074426095135883264 7466634128073943780762624295174144 -476542102471875417215702230903029760 1891708610649553012221381036736512 1320758725791251834325151789350912 -56851720829074448170844002646491136 2886004258025745323044890325549056 1495240422927717368344669048537088 -124123064106692106879130720425476096 3320770846051364744839657064235008 1961550496574704541251795322667008 -571862336197807856941005656146575360 4127023797076660230362467244441600 5365584322074969999775770005733376 -764044252593406691301104294907871232 292049936860280022297112148443136 9488086289474564238573374407704576 -610815128590736587004702045700620288 3718578653252390551972166718455808 1274154261081304372387419525218304 -224642317089662276554875574178283520 9028298074028572416029232730210304 5952621000125915501738166381969408 -861487795476576646678048158259347456 460565275453907399562250732699648 1204842684386381448052448455294976 -834139209949134500525813014238068736 4576590259106442983189766786252800 2952798816682580586795437016481792 -77404477150649678952433434834763776 7058591697491918447309180115091456 7178693119487093833372455896350720 -630308050014503168628006942362566656 340527116489030014869591623204864 2808053055245868425312429699760128 -650900220172982070920984954306297856 9904118859151526980103761263853568 9815777897907980124700692157825024 -474829791432799851336713285295669248 5055241811275897407670646965534720 9218366319260563635629789261332480 -106439009291976892513903531746394112 2052981258826739715206377367404544 2157363104062350579955900497264640 -45822461490955389608835243845877760 8901910730011768846964424993406976 68190565589887642184490581753856 -772230141712231842055844738866610176 7643123215849995354039491355475968 3792207117917785244555193394135040 -966151490982734580986405558329278464 9805859390179715519712250623426560 2217015499022990123617915655684096 -522057897146757474054057239127261184 5772639668271340259892924153593856 7993152214559567316689381561991168 -227496670285160836086780023804002304 1733098923633248334336037562089472 371697148745457522059965630513152 -483807173072501050356399413357707264 10584782181077656781273696305152 9424056465153905170216885464072192 -562558454480394912879208350808539136 4628708606988029947959605481963520 6276482854624893468768903589003264 -707804225879002638565578844393177088 1757746448281667370150222016544768 6544161041050064228898598325059584 -969993428251090175482516637684334592 4776400416764009714662357078114304 7506251284840921687837748529987584 -16406289098592000327615510327853056 6308884972029141648350126058504192 3618239071531028543699206367346688 -306731808076006904667938285298909184 7985612280551557804412747055628288 6870776488412075464650315433771008 -924926043971525990009593775725215744 7312183209841509503402007991418880 2012491668523220025451968699826176 -546027372663099672781900023165091840 6663333069427104504568960067305472 7810477254102152740770427292352512 -736788167365654011823682034142806016 8092152440869121279802979037216768 4917862957642807349239852832915456 -355065945474874541301785861776474112 1169542563041617787067902747213824 6895124185966692921070021637046272 -87907327140865903828281488895377408 6531969613488910525673791272517632 3337414371543363685030046612848640 -612790307616221662149126748440100864 1134506044347982578161445125488640 7677006508688264323203894989553664 -442206024249318229997189863974109184 716928881201919391016001172668416 4437591153336731941856661641101312 -549543472798669699839332025756549120 1504382919053577742098835286523904 9980681624321781534832664760025088 -647839654900483131498428128007553024 6492036975058156877469282149072896 1091911473242183383992805552553984 -624623013328616018900449715021676544 3988288419886943408599177088729088 4330026041634721547503599041380352 -488498891823131029488606167867326464 749316777780338480461436006957056 3816662957613245849471301606965248 -961891019680328222874331783750483968 5932283699734921265208975224209408 4623371038185433196954831229550592 -543051197630496534051710409835020288 3321965942338055983319988721156096 7117930528017736638227634091720704 -834706722156212859253829011144441856 1930775523750777783579219199000576 7718191019250617022041276576432128 -23064707232086537795405027244769280 6440143741205579698838073755303936 7081149492253918417386365056450560 -517027512683399688013505390928986112 728580251810505643375277262241792 8534633774458383449789558215933952 -7623312588347780432718336995885056 7770192292442251664229973920579584 2313857021858546386243908108550144 -893534906020234352737252762395344896 1061677635007243447919819525980160 4363793457087506464146157790560256 -364729590421028677515754315622383616 1306241744123338618752085010677760 2644468838952273403206326217080832 -420209707183596090369565047125966848 3240645934634530763222552607195136 7261387603385181072584812626182144 -99268978830178556973557091938598912 6950659456896549193041915070644224 860086298294193460441723212660736 -120261016759563273707394341302960128 4564415525362534529015896814387200 2220284207059993602111739420213248 -472494605801546553107943429022679040 373676318755015015189305408618496 2001582241795407343620182509617152 -315414381082658372902293834249011200 8516155566812599238747172156473344 3595428153974378119111726600290304 -376898939891282613580738943965462528 517700953228783069360555460395008 6842165610140654890759067201961984 -471275982593031053999644892549087232 5683123110686411289306584557027328 5251224803157875267655281936433152 -363575410999796785007286106636419072 5913603264315262914096055669751808 3921864953718640655325274790952960 -884036685268869530983297837520912384 1930371310747543558095075532603392 7656571226690116075646513831739392 -356679275516056935383439224525029376 1108043506309718897485723234992128 5352319112789279985428740398120960 -434970404456850340984360295091666944 6540970384841306032218602662264832 8559811516296684336996423139590144 -911136629970283813601158696433352704 5436633569494540770885520020471808 578001409144321329350626055815168 -275629688764822363739541139747766272 4966794095537482878068349711941632 9107697561906634374548607398313984 -582907804165871747082168084354564096 9822640055226680729734080859471872 4258100268258140940444775592493056 -310671475598063403508383714195275776 2802995999432649415288477261496320 2703162331768145269943842430255104 -241153285298045105477186613074198528 4000214147831957736797671931248640 7861086855326704211418220135972864 -694302924966046250813672732927983616 3388526931796757320883696511746048 9663722836552054485125029313904640 -444393268985179544045986910767677440 240019353192548645544418592423936 7091333590535723303060229991694336 -159272704783596943035088889247170560 6257271156663258472657851464548352 7541874512583285051206315259461632 -41809726232887017799938180416274432 8996068422565618732416596323598336 7060093884841891706153452267634688 -756265970502710483439231250303287296 4932954373994480112210309506138112 5158886634038286094332440260640768 -607941741234206556277385151482167296 1012381139600621171388301145276416 5567100311734261231574754170765312 -668189207317422397758733044976451584 5190724724493581470657902679162880 8788104075047605839923942353010688 -693229297206183592134076220879929344 4883703514563820472867936953958400 5750053632960633577680150456172544 -224731432589465586328826758272385024 707532405666620195255332942905344 3664341470611866975028111531311104 -996840434409554779139702488536449024 4444081241884061040209704540700672 4997880692440198679273670604488704 -351354047919554888909214484006961152 2985843293797667139897424047243264 8425163254104058724294660173332480 -787433462147868675032842499996516352 4059316504886408388266918896730112 192853624615954870727786241196032 -627859530933983974529163096919900160 6722597840795771058688420409769984 9207370483836546450441911371038720 -928038180435922082316351689063399424 2200822717358132976289864304558080 5686107105855172819065362295291904 -992074859686995920124980059772551168 366759508579920113824540794028032 3896328570284438337001400127455232 -334339775424240928901657863645036544 5691826553959929228449372679700480 3595892530736551348758157222477824 -850809344331073458532317125150769152 4775260295708912260778594769305600 1701139435732685251516766946852864 -576195933661580526099737905316495360 8826671143809398790020964663951360 8034105853145234231289438279827456 -33056501258114581665321021511565312 4134404818247709504458509818789888 861082155567560611681982557978624 -659555691738925521342618147567435776 9150045696901921759646966888792064 6146573599945740805316512030130176 -801649862995837862049637784375787520 5254006418600399268952847123742720 660723049849871915444714598301696 -871842688621227544374828102387236864 52620209356334788065453171277824 6859477454846488290098973188816896 -191158348246640714466964877485277184 5772627989506193790597954269085696 9025425584339395798589967848964096 -932260337439490272967137456648355840 236705813591379215062155221008384 4444598093258703408446805142142976 -274233936084641645668636486377930752 3047973320117930632909972935016448 2355524432845539559517318557990912 -74961654977364437642864933868666880 1558198428850965552418585042747392 9873165892617493696962503599194112 -282267588131415802389305828761927680 6410458680607927140864725813821440 1170419176538348709970376289943552 -941264739854225006317273995580276736 8916291751114707755750311847788544 1579415970144813296733102698135552 -974446911012656949370591430777503744 4194493628751263578750007266770944 2843251411124363120996565014020096 -37615014482394002881174046802706432 5624434026561379726992521264365568 2706435092388258019734100440514560 -629027803029775495150988633254658048 8857398538853118517471183647014912 6814437941613953586580534694248448 -394912007312124725578561028024696832 1999778256315482161778164154499072 1809890830840332518313370304118784 -415143458544709288893911634288836608 9138817546443847014924077789872128 1483662775287230822413669144461312 -220584127275089085632527160815124480 2234283190647590290118212302405632 1314120587998876700927753071886336 -125189375097497391196466651965947904 2246897228945582722543983951609856 4795969460715919582623828965064704 -782491459393999707732784763201650688 5028194527516027252377575600685056 946973907184462018789039675539456 -26260382364963960728054027008344064 4257974991705007520160522044440576 5488670414669421476562464644530176 -216584662870377081146838541370654720 6113264487037078851455392354926592 7429157709933378311740451809394688 -357684876707170668148467393827438592 9274509417165291663631138819145728 6005074018002823819944052454850560 -814736846460795808564414457099321344 8620686451389948657714187095506944 1871211441057433600032615109230592 -777943580118478772467213293907345408 1761156960922831453697618164580352 1935277354734661298245497159417856 -244640504949870133730940215623680000 6236251081397121060552464261971968 6269889187632342244255448367628288 -961832770739039918684577505591951360 2206238113914933017417032317009920 447184406751949672540349900259328 -787249869163500456305425517071302656 9655386450050221414281706777608192 755207179855746760425943011950592 -633296217395935228226166736105242624 2808299670936451101057822230577152 8918108333334803410822846102896640 -102297152757923675096354932222066688 600857247253074227380463201157120 1497094417737716123170184007516160 -841451914092211507490111405800030208 2129013505954792594989558532145152 445180881406376832910327399055360 -128409618587287501584774625069367296 9116780531314931389174324039516160 97663116607726074229320109260800 -373664646972245686538935651608297472 9235798425467433404880238510342144 9200631074824148726669512290598912 -313243113265200062325134885725929472 4331024978260769818174985521332224 9742993508010584119504082953043968 -701530664260126636150582089409888256 5063173978669669376206266509033472 209154639013792682307571947667456 -913352330711848263691134035652771840 6624731214623397859410266793443328 9517441424956784939716271899934720 -618053182861276134086578275830726656 1266990678606645803639251417432064 8313337453147128822664675545055232 -675657793124832538673611459964960768 86681141245191846804272090972160 7834545794185041559286529078067200 -340466917708760799106336856930779136 1144352054040316451651500768231424 2400173832628415126777888952549376 -161178253328683022914427350518071296 6596527975658382483634840592711680 1840762417544111006750552681873408 -229434627200241830155119496475443200 9187843562017703845435181094666240 7871490845377640317363321577668608 -682096131943744919487192538458095616 8096013410298956532173463827251200 3388339563494291720530370064547840 -149704125891406038513739899395375104 2798287702406889213327390137122816 5442624656347390251036181276917760 -551105355558942291319150475508449280 9856842695022738495540008606236672 3497478450160222358973191601258496 -641962442986548884596565718664740864 9644711568803384825374598565462016 1399900778880786453712150871408640 -108948060280793288852739547016986624 3956220303152328033621791748390912 5896205792197942298595093720858624 -955780415123274675122276223883935744 2163443088020876896973314928410624 5940988521497178830984428570804224 -232757177757520926781230171067252736 7907544954789282475571853461028864 302814507258953377868252538994688 -434243017735841659476468847049965568 1954895617418699883605734119702528 6299536674530483243048591056437248 -43874363045862208623191326229266432 4893973000765019020101929907781632 2253136237856081954609846863003648 -45249265101613069963106622717820928 260770127615912034241696197771264 7429679957043141938659806645583872 -583474693303457474783616987404697600 4570464200181113675485002577477632 3111724696129907529477294009614336 -850427336037473864747672155480653824 5397342008982850730522363153088512 7720813093972042428940801869348864 -109952115520415836601310961572249600 1121986216007679209143871763120128 5605076881327397231189907002621952 -734772064592132051784627283944275968 5568617624071234061520925391585280 9407456335877727088891921457741824 -78980350289359519688413006931165184 5400835527144126265619165342597120 9722665926110026813800189026893824 -821762127145780449120265549574569984 2056799855869977668343239580581888 2004496563526765576296090948337664 -582167821041658549221037250233499648 7434291876628726058474605444595712 8715103196713158775301951027412992 -465538664384996891741309441889271808 9272301831148216743769921944551424 8235934305027641908021367238819840 -254006528312181378140235218626281472 7858101558447488380878164638826496 3964717955814487593429301798633472 -243835074955895946999055549789634560 8595275809679211040063978070867968 4202294288764868490597767500005376 -625104293382460087753559667048972288 1059970581125758367043732367212544 3932373068664041160020950748495872 -188994080215816479709156021618343936 5393857191587617172824871466434560 2844842774909462382747735371546624 -155830091037129392367320078321975296 344773181264010600063128819466240 398568294663944371401670663340032 -893699596424709102376832923837923328 6400773599282668921336952761876480 5906834131859432244372669013688320 -171903225753602033621864078588772352 5331487643123420028905490378391552 9822394398952675421073134298595328 -282052987652304227139804109020856320 6809219674895813532558848520355840 3073840475969126904207502104068096 -441601519028046537106048951626235904 4513612168399503334376319064473600 1087293416474112438629855819464704 -969020930114984239104760898822078464 8899977191321561575923669868216320 2287373103430961078682362616741888 -771203255293424260022660170822713344 4361692404543672250471583219449856 7771590641936234318897058781593600 -109292177533852001179153822514151424 3174940224381406877825559139713024 171077843552735407135131286110208 -759043082156262289807007858022154240 978944429099771153221012546387968 2312415767342577970952849210736640 -28206273293643774630908918398713856 6797865326857167781089192118845440 354964971744697060338133484175360 -982187751846117913376489728741736448 1364802166833619439529492496777216 2613772476771468433325376279674880 -110306897242575633105377196391792640 4063260074578042896843511236132864 836191062296924377566586377076736 -958001729651327052006193219600646144 7331813857401330323948445162799104 4778349057470125456788811140825088 -974241819029102624843186783729483776 9601773212520670942713468237643776 8247136545133303458714041188352000 -843454344849723300215458502878953472 4381235163564974186991240699969536 4095313885999521244913112344166400 -974479290707508731603119232274923520 9756552803308661056035775531974656 1681075408936875725572937598631936 -472384989779827329937620302330593280 2621963052184197189895371203018752 6349725746565159523874604025118720 -86732059398451546905270361767542784 2429210067852714319153717688926208 9337006950009520895344576389185536 -219640495212817933449578242314862592 6870780679133701518897021794123776 3088602234325164952122791615791104 -516820714492072693917457755639119872 2645168619258424185902353413570560 5238181272440785625077310262607872 -890049714308488470004801134718353408 2557825863954999830632052855668736 8514241672311042156703924273283072 -539849856415664016039167628303925248 4201538857796605327115263712165888 5124341326539086604594664917958656 -213182985291980539756562905103859712 823576733908046873883468978192384 3228941489157042188496582754697216 -181082767425220573615227063274307584 4052764375188541220574606269612032 5906384273722998957574118577274880 -831681428815029175784246273619525632 1785041674017866524229984338313216 2110850278017509374623015164182528 -876620044986066197642197785777274880 7390167078727196199734270339579904 5693440510856870094170344782823424 -568165213116831045956426238338793472 2344838801570015545776858741080064 4177522281213673896150276463656960 -608184409426013963500403454715625472 5253474205799081104534777221873664 4807276346141783410344447906414592 -290197253123000298575310569768747008 9408973973642314070494164421705728 5585921484883100613334465742110720 -205374144879974416828860042366156800 9606827806103908546117967342993408 6214582642719564042206971147845632 -967428665239856292632605096096563200 1902703230298638223065381878104064 9782915757176992422008533601484800 -334105611105249772900871454802837504 7873783943638775041069265520164864 186333421180733937877109742501888 -22893676295504795989101841855021056 3815901745570228767065110545956864 6111628970170743474560851140149248 -515298162608217369645536042706534400 4231072372328565790429028087234560 2061920438780875716970332911828992 -20170852938926969757480522396729344 2368674762551463821970386072895488 3662054495719364256864191257772032 -632541073959443150701282870605905920 3570173520827363091154475272896512 3883618722518389670061426819989504 -595902018648849236682761291784257536 1847582864092883997456809894871040 9962008233298195081567291842756608 -594415983760226818877381683227656192 9281801122158498959008447447695360 2552805992001032035584876931448832 -800627524410739242560912286208229376 1106744478522487361668987941289984 2277003408228104146018232935907328 -559443913448397905849538514325078016 9236422092697174904415451908931584 391046976358752027751534812987392 -242782415746239826437241020799254528 748457917266807464253061565775872 6835589587224689858255734089711616 -990180872417614079426397278855757824 9798612034714079285230878028988416 3328226279434882818104368056762368 -719839801953564823126454310002491392 6959487530524585312775720772042752 2662994784039661308306275218489344 -461122136752066161686199673448038400 3473109545691529859592600284037120 4563734159656250743847074442248192 -350441944590592908385238924111380480 8673632697595611915418028159795200 4913057334521734503181626711736320 -357699561625944277104881081555877888 1808092563470729164282710187835392 8092218295110677371680764280700928 -699487030352775889138341980804218880 5845860272608701633426038347268096 6377673081182753746075136588513280 -195144031904396689624343948908560384 5139287166637133814891557494456320 2395307463962433941181120750026752 -253275988197892325106229349263081472 6325368562303168874550515608846336 9812000026038603509527940383637504 -51573014046792458376622413348601856 7813458742546963035930122487070720 3046013287685139910218926998421504 -271261206892610247675674926761639936 2710573959020920107684683388551168 3878249276603727053797761839267840 -3742648353274230370712326449922048 8906399956546457259866944859799552 5376296290484095536779787178606592 -267017189282115818014913059509764096 2437286623352881147350370410823680 6249764820549934268273366216474624 -391829726204003187103032510053875712 4117435384886661492408763438596096 6031439911481119897190537690611712 -112653248186375214622031575018110976 444735682214311364798319521955840 3257639404008805910191746800680960 -207958213944150966930404015121367040 1977982284614370524828215915053056 8329167724869656171454353282957312 -674895953228768390821621103291531264 5983951784221758712611698867437568 113565801878871299814594053144576 -916502078349787420628901209063817216 9815084478858350521139282216747008 1822716964302588421572069362237440 -914465080936391066794872588543721472 7094005161870510474351004365094912 3605556928625882815595245706674176 -87077413595664895603440867652665344 9237716714845978997759761641897984 9118886849164394130653370621362176 -235167132117479464544134170257915904 6699103549711745341107729426546688 2944132544902674152864642634874880 -440275005325637193735254983997128704 807907914030745631054095515123712 18472517164167602487707754823680 -908002106285057092940871137220362240 9302828037665341200685793972060160 6114899136527183470453062270713856 -636891232000874024151195249469816832 4407021943496461705727265155842048 1412603678947729236679335067254784 -592260287237987090528932879069609984 4740495696697013437508914021138432 2659030076503208995322429215604736 -346882364772998475254593560801968128 2038894828743876061585663420530688 5397050715284671277310628167942144 -426318269695596911020025704441970688 2500587054434766800531999835553792 1202978677942646388041382396690432 -178965846330090738898505473412038656 204009921788505570645238377086976 4657070514797286340965333033025536 -283089216325176675863025047027318784 6824643282146561154462129978343424 9800451142424973407154610540380160 -656442520451965083915680379542962176 7545619996072097229271828287979520 7507522871834630817647837132619776 -171596985741046110503833651596230656 6810629654004363223686880358825984 7657937054321630573874995349422080 -573564657217934272622660032030310400 3223486856425932767122757842370560 2352146171894635213949283940171776 -566079094169650943829424503101849600 4927125469672783373249698911485952 3526560308994845343464511848316928 -222992161960718518666796315164278784 3776702999661222499132965178572800 50995464041564708283763440746496 -705044176416686099553917987566125056 1141691542899764673597567957729280 3086018787968576348702380985942016 -535780001199647876895281274966507520 2991769195734650806384767218483200 9378759796462290275993583351758848 -854948758877163683376174243195650048 493506788194056947982214973358080 3229482141709433506514119956627456 -244373987011422797398596755948306432 5201932776354114398205963136925696 6280078641811911047790093540524032 -740859620828628638008871801891848192 7624944815379335204902351155494912 5295476058050744611159159313793024 -836980404392101939535944395331207168 502636933176663821165838760673280 3595559101091452262543750651183104 -219658922704142469710749192796766208 2934797831188467463282800998744064 8165361071693836031552237017759744 -147438481184982300184293201552605184 1325461668523446158365517695418368 5135050312292494586084115192217600 -531155695143104836779197800380366848 7607969109749697599226713693224960 8651827529278011003899538850185216 -488151987839351243648350477539606528 2417087085744375879177775020507136 6398888689829594962633584631873536 -593667773100055940334892104997142528 3120241945434339344152861234692096 147476933059947089275961517015040 -443837483974778140871989911539941376 3562224977334931937926234377289728 8024199286645300750213094704152576 -174738718539452194859019026749718528 8670841616968592872718757535940608 3718484820925309520272159276007424 -641343357132501885811519112687386624 4237079256546517261271142550732800 8752252962484899337721227987910656 -471745986148311490377438905289932800 7994959369984310016825151809650688 8061593583508251189927254010363904 -492964683145817955918673760252592128 3750774792756181830590806880157696 3392068713930198134604853776744448 -424769688453699899822525324204179456 6063268942010228968693079344152576 4104904040495016424081246849597440 -103897949266203190143560212415512576 1628476658197359638076377821872128 435746531319243876515808802766848 -990315338043247447316877223112212480 2405995612723347112350496891863040 707553647917425327421260581306368 -310975582164797559537578409354854400 9000889746354832166977536553648128 1172569664335313086822127216099328 -801959944346927734362808953050497024 4850031385100941194626370103148544 3566573314188066708419246316060672 -526386528588926499926146031560949760 7498024844145663122568657172955136 5173589596362686553657898107404288 -886843954225753873467331502491566080 9978280944182893693582392550227968 3931122376970645868024357795659776 -243648726675957427300332619522113536 4523531911821375413585236977516544 3503835338172469698100976611753984 -953915846456767905160834383465152512 4777139470185399592017211552694272 1129813302142821985565122028896256 -378481422389066890045540699291516928 6433506286552748366624576778534912 9810380785521554350222946745712640 -416137062171915231286494875495694336 3709721327456077625887711796658176 6267394624567577531193108633485312 -642892583219016093482482290298716160 5103518916799410647051326449516544 7327657378976397541859498360045568 -243508928205901376515257887883264000 2424115596397178338619440656023552 6473384264418083306137249908785152 -215816112249507392217817852013445120 7684595471086890448725022594826240 9426647766423188332789182805049344 -447943517123543556461004990231609344 1709833576535515225085885504552960 5977377686243773849948936262909952 -987437760625673150662020527770566656 2091220049529850813624797246783488 4383117354429709249511962900955136 -589296606632985240444749768353120256 9818268066095751715240738216214528 6218915352630429679291312552017920 -250821492953013465303169385545859072 5363174416243677789420958785732608 8015370566818649390786053033426944 -578753111381725951964393271900241920 3148633696355080608853763286892544 8266929944800594908022674707972096 -366213405373203631525597881317720064 6888773300050826468878509743800320 3269375695918245198087917360119808 -340634246397837397985827624830631936 5991413621907556573859389881974784 3992195886408157205501822497718272 -685180009613885174211945417299460096 9039867475311910053890124289146880 5452816776912301764858344063893504 -700913659251498151930476630852501504 3340805312117548112430158556692480 2981907760202995088281573355683840 -681186261436460219236342397526867968 6282255796670717198256400431579136 496064646573433575019860799258624 -504320278935487862513657871719202816 9264826279248477894689269160607744 9254065524993236828730755385393152 -302223239121522731413976580234412032 8095689338379952009420685206093824 980059204722160381142985951150080 -851720326491521772153478783311020032 342154528189144399213067056971776 6331567318763175280305377487355904 -533722649720578946626987878546145280 7226865719433123077380035343024128 3382877967646024275813510135414784 -686662730852945865066232887006724096 2168999779517539893549527843471360 3213122110258331822879060101431296 -848064188039007725197705590777839616 5982079427014887416771850488774656 5082732472091640924074672010559488 -120354450371409531443136370973868032 5581145315033254888841370748846080 1837249815457276466529821599465472 -986635574815876068617025641433268224 6580212002039767308546431244042240 3989221477696143565132757657976832 -55171988686173628934450873626525696 5908707760096646147669618950406144 5839737965414159467621657308299264 -542037772376473802260285042240520192 1814912234839609150544105623781376 6099487419905969402967561779281920 -780059983184662776502966782003249152 1594329378972528893569204765065216 8408622808154423336411493853822976 -92359907880750376507616707630596096 5432350729171034748585472541327360 5448356504745980170285509322473472 -72698604845034128009088917177368576 7263195024325516533487531804590080 3069950229795726281990861246955520 -616304924525925434543433709057474560 1235492010735592535187326987403264 3494503834240433544178718589583360 -92673156120222596077004555160649728 120992485049385713900730678509568 3255188115887611513849834360537088 -400708826745903039815105516817874944 1818524054227207770086888450293760 5276418023038490006029959195262976 -499464907667891051500416919077388288 9110429673026769677078672097411072 389362885510690729041099405393920 -811904019864559096610333593903824896 5027348848581048906726999544823808 7800682867064109819689980462628864 -492635187171099517295875474178703360 6858868270905756211861033223979008 2853660198258187215285400912265216 -508846086897533727301835494912950272 4428279315116227010738349154500608 1710670995299491716157670936281088 -564766375784367032589167776042582016 8752495075840094177611772390801408 5154361307385590840513317354602496 -396409227763737520200462364036825088 1511341145251105077275833678168064 7056812748883351130619955497664512 -862953314663241699712779692495863808 3546398002934299526398866106613760 9319365370529766878637363472367616 -309170490028643584221519680517439488 6622860803877383731992161092108288 4314562528883970231913927401275392 -536944944000640545543756365535641600 2282450367230794976499558321750016 5982386811221469243841609079980032 -449757159603029779565993538367782912 733323232076392126076865380089856 2729632347088491298722805987672064 -722827626437437520962226378579640320 9993761470073681280050403660005376 8521577782087226534404375017684992 -538971665847815167839843174840270848 936884623617408361298085193711616 7558407602523091371319811601596416 -907007719637013280616487672763908096 950949800688028095231909265670144 2249447017495468374178012483026944 -705780496863891210998789330100551680 6244601324908024965797928199258112 4517628206895162767996428732071936 -296364298133030616336845864400060416 2714657153468592239806865272209408 6127361444522802616113803829444608 -957466366182106997112327861369307136 4427636448793500823145134879145984 8532627831376798887404523516592128 -79939128558935536456336296957181952 6837401690080487048107363437379584 5258135919797938706144046107066368 -303446068646191817618074253597343744 6433046453567518930055279604137984 8875345167686547779523874031403008 -632693112905238533610435097267273728 5892406067215877130150477773668352 936781491872050928938742863364096 -588858306637464770846622671712550912 1824429251205386820611246429044736 8059953720915509040873469667966976 -408652159003614433671349043617333248 619195808619944753044810039820288 1100679435314274235501255323549696 -783447738470002925948484747614224384 254781641131562761273393450844160 7797356973267274423002914489368576 -258444118656094847271084140544393216 21631415928914142978010691665920 657149075938190737020685553500160 -961663956673961915849805646335574016 7357601139288090287295002602110976 4156450046001244150741209547014144 -126702849109307765670159382407544832 1061637341115195240847285476655104 2398985427682475165010915328262144 -664837648835271853334182102158016512 4767848775914537900977831297417216 480518221947120501039999462932480 -522478759848201305225740840180121600 8141970894742833331127772948463616 5736663659838523969253747885867008 -602991823016660250939964188075753472 826606605993073652835765794635776 7001273816814844259725491728023552 -475625241372787285273624028349726720 3894526724659293992649731101163520 7073159678586598619730007944069120 -112074614521935432638041503026905088 6351539031463359665224076509577216 9005208261463373972930010495844352 -604687705974023521472724622473428992 6408568530424514370773897126608896 1396078780109667244360621747077120 -101656668500289922585290195666468864 441434846811712561227476366262272 8961764456294133507729966738964480 -520281772755105689268198805335965696 1975287477021538939479866958938112 2572293814179881697512154189529088 -550425787941929855645176762084622336 8224711809715455170615250434129920 6053812999669389101729777012703232 -464608986821064694213380424861745152 1299108620434650821306113396310016 1290489019221368507026101590032384 -764231439864466022613632729596559360 7305491938872411723107801310953472 4234925136842806074339056790011904 -284373339308792422205252145504059392 6720902071182561921588728397037568 5936556803097523770095383372365824 -62263050698195965992950462924455936 1669522891812297170299512005066752 4778570760614013239131871314444288 -488821221159851439303291135829475328 2929581960683463718702023687798784 4715747347528438522733432257118208 -592875275201890247713037654924722176 1668992591739307727917903171813376 8230055438922250971358590866030592 -952683320580185098221124503698669568 18599671108900463999512960040960 6787530535916064673638901578989568 -830954320581014287896360320080281600 5110317883209489764344626665226240 7164865663947090119909790669864960 -165753836109412126888024508521775104 3247160555045534581894650039107584 6179022024099856866427503902720000 -468061250753866177803528473965232128 4725756895269573231684439427252224 5403662755435533542129002893803520 -220353625793365499389261535781060608 386301090215430216910223630663680 7429447815484328224861160483061760 -162081994780541680063406285608976384 8306697721949213106754456630853632 7578156416223132652349677337837568 -87325881440441310384182309576245248 2294857584827394078168906245079040 8271009780566139492862157867974656 -620586954632876387411034037978923008 4981604771773326649295224765939712 7905286900532618705813089007173632 -515766513936132301505333148958851072 5636051667241591197678499534995456 8206104622936330983143755170709504 -625013544975344277948701463113891840 3719750298364237861666649578405888 2187523400513462310289167171452928 -725184401393578095184241524213809152 47426314840473637204345674006528 678086205596235782622780313305088 -7197716042037788130223447221469184 8800161737153973536431005650386944 7746419729577203220736080915464192 -170748131425458226341251729946836992 3905934265786681476062309064376320 4038196892996719622006967533305856 -272593405082219603920321848763482112 9018611423873061024562641721360384 7406689906779736610728898843377664 -526596917536805286533980539957805056 8983303249565074142189227381620736 1673725264019760721811311373058048 -150230860036559188268714768178610176 6758142434923922687170665429073920 6675375405443527502906413119700992 -971934793121185878212341305213714432 4882304170601259743295548948480 301211007247401319225115570864128 -528339515615151915142532935649853440 4812118540656020966301872332734464 2531007757568687808525384426717184 -656871863566160756283644823090495488 9253729722106090227248630868213760 7170083961345348784784680685666304 -173432932320617138881202968433000448 2942022432432655363749404209053696 8802443735383517831921643246583808 -525885061625710219295184296576286720 9603177958607907603908786319785984 4346494385649500966300100488855552 -453191948516456743953823198477287424 1989855524133064785539991561306112 4920749037221258812227480434245632 -976317232251744478836825235000393728 7543679038407624475893431875403776 4329740286466792046621793315717120 -540539605743057840558453538724773888 5509360633889387729155546668859392 7322380864280059635317449431187456 -749887893690060033014734144158040064 2289760646485263627396268362301440 9572487819545112218358952253980672 -990468704258898470770346642013945856 7501323889696384956722234196492288 3048980194539779612570293731590144 -993799905915368982642011288442503168 6988108386697212448430545812062208 6058836347077109608085663422349312 -511210719501869628213308977320034304 2529739426455317946985696123158528 4460962613231343440192544666812416 -472169077676097386740012286941855744 3655098414033230822796449711915008 4319426799136725384321126987988992 -121628298863871379147916714860085248 4041514802899587594706915566813184 505218862905996879694440507113472 -459799451807897215126654249208905728 6642747363493650334646734094860288 4987271877299306420288663324721152 -542232724819892066989881844243103744 6431328975084961152462664887173120 3312848251300489448567325050535936 -539229871604878417810956072559575040 7483839623543224583550362143686656 1356144744719709688778114514026496 -546862073118765933177203851515658240 9195985902690170103416739913007104 7127579707275521578992180603650048 -205348631256066667433145689274580992 7706920688351652816336086680731648 9549729227700974497199779659907072 -151671074620925552583070642216108032 8548736807766361285860543292243968 7464137009134650706110188324126720 -942570470872908984567787830892298240 6799765160194291572140729713033216 6115298753550482040420586450059264 -815077949411602729660427732525252608 4190734693511692185164899025944576 5617534855806259323113257962569728 -725534368444937377505259189977481216 143005235434420572558177005993984 207047631919958181957153729806336 -221816691181905742293903932445949952 4853809270784167297543290335789056 1749511534102806628435629447315456 -626415102828508971154804517281726464 239153462096801055897783044669440 3889659255385806227412781681868800 -625425052537493352165783023262892032 3839885932324382235948583391068160 5389505041643461497489582494580736 -831711732719281460680164908967395328 9446371782743958673968531257688064 566289171718574321810364650487808 -535236740671994769957027338176692224 232676607331019012557815897128960 2686643240028341014400855797923840 -908550110172926247368820579245228032 3654799704413200334465169633574912 6774466605749108778647040974389248 -91645817928233913404854093228277760 8292260922807083533522407155302400 9155289347441914576053580685377536 -714348731653859445832627595019026432 6622556930305296875821046404481024 8015531828322365698435094547529728 -863609156444601261411889244167733248 8275820110177962631364801005092864 6022747221288700083104307394641920 -130459262244284112837083474463555584 385566568361332540713205088911360 2353186544461793363864542550949888 -607127162972411560867569235673481216 6465367519621536878581328600104960 9951062669667431224063644051439616 -498893987345538611450118877348888576 5297885036749774952301282818260992 4915305968087871906596810332831744 -771339749164072853060698530667036672 2016639027109947994132633442320384 2296669868867462624593904350003200 -361818296073784745149132716694831104 3717997894097049260279023550857216 1290915748558160884126104523112448 -755607723688554112008298715777335296 9699885269288809995481827357229056 6243684337688548800942010389233664 -767678646374895007397337229776912384 9943813287910239777473302030712832 3905756153856736549823716255596544 -215746040105566308447865585803460608 3629693303143717376021423145877504 9319432793601573836610957459062784 -844269380709650554148436457656680448 4575461996396565315234284099862528 7415150978891492730668940433293312 -818898245059604096626584263336132608 6466853639434200592966034187616256 2278898532022063773868009623388160 -19775897979349488283949681271111680 6024316233058248758965910665953280 7350013859282940941481439794298880 -531775900320465953185812782977646592 7814784144252738268037852560359424 6421649421528513809513482706485248 -940340565821154918159260305600806912 1863435873170595168838240060833792 2944577236034641812752032998621184 -772558909111714880510589584447373312 3337889533670953996369307136688128 7283048394357823894350597931925504 -773139161418233857796259498155835392 3630735688188578079767345055662080 7973569150884778962036980099055616 -135659895233257787042384594983714816 6903649293236226248125791822938112 2872507877359260920038760430698496 -758408046069079827342877901354696704 5209891477327823123988081364959232 2294035357067260525995307441324032 -936836189817318421591433781740306432 8491131747334449526381943422189568 4367121532180678367315482260799488 -290452075299921525683146794091937792 9212597322339451005341658391773184 1759563837965971815769752454823936 -354556496647539688540183912356249600 4021006068105545609222302747066368 878393548916916397717099112300544 -751438023483196404920236318216159232 8935423931219637477037410917285888 9719955510045387781715117056458752 -200492982576543821913418003917045760 2271928864947279719449387237113856 2543739005642735475725225651339264 -942436251833922927213307591036764160 2658036612390566732723932132016128 4168171897511441770154410740023296 -492002780623300419345951618276261888 6920979050586653623921617347280896 327237416781222894750455675486208 -194980035575062736717498619913043968 2343990299640711696760903160561664 3912235090169480763448581404229632 -133521248177283251168140489769615360 961698338886120013964689572626432 8252081908177840187712681141075968 -158987631912698510766348168647933952 60774069132555003825632508379136 360444971431392643003641963216896 -414136800290710971913825731588653056 2433805023448844771458337594146816 299910570291313383391159178493952 -365021619223376122657749870804205568 6348199879309687280934141216948224 1780124887711087140700957907615744 -144499084159752424781550899278381056 444022646603735735874509986594816 8650300945150467089850644996030464 -323691850394765093111494417852661760 5103101124668338634157525389279232 308757446911262995622149614469120 -694571111082032333206015994142654464 52550167445563315142570025156608 2260762838522851787976200836612096 -634080722085015596066411058428903424 2121412382754422190748398933508096 983361418613499099576870482477056 -217128339291112938782684930048524288 4820183073492961739880645934448640 4453453655226643471196409498173440 -53846590167067062209968375351738368 5163785298888496845888199204012032 8614579269182404910090200517967872 -326343407298688005900237984694796288 4605026419466775546754223078113280 4515729153394544756778284280184832 -686750763069792872054506354993266688 333148264404665943566886182584320 8963270092918371433295502752350208 -28427813449095161489242616068308992 9206339527303304773785463744888832 9878224018358104422768323384573952 -915559473134993992795130697724461056 8805944165907171611744389312806912 592111476086926871428642688204800 -768517949254549185705377616996859904 6825225003770894260457815310073856 2066911107717148444343891736395776 -66113844862149054217303101001433088 119548498131227383458984087257088 2466423448261857745318109092249600 -746354165178853288135393900136235008 2519271826423591752684011603886080 6521292377470488396401288786477056 -840249906821764884422020956503932928 105629267235814984077806908997632 4348943859343528965038111495028736 -960003698045239802319344760531189760 3413799250461913921612602964705280 4032672058693444684970036803141632 -395265938233001726891727438944927744 9114906978251803618867197941645312 8330092141824834012095489251475456 -162497680898509134703933841827954688 4466342255016425715475028409057280 1321488739205135230189327104344064 -104313627104147981280318027812831232 4111319328437829615806092098404352 1622055108747397369628860637773824 -66978994908179515237787442259951616 2026808319727541448228240181166080 5813877711163900059455724414042112 -407222420261860635098986199929323520 9823113401322904874147124019724288 3735125676979551302956935016349696 -554987066121805886385067904091553792 7005490365354168802775706430865408 5476506143915730399643449025363968 -708251001377132122588280329141747712 5936584946949268503581480726822912 757159123988582731371197033873408 -249101284855505142527697040732848128 8671792427760992647716061055025152 5466582829947341958646764396347392 -577244441610557836155965551281176576 8241275135815402498277091903012864 5463037705998038685526677667184640 -675192909412613691637009226429104128 3508430040462656819830123963351040 9471195188875405832013898661756928 -856277340539761946195248866656256000 2369271882387414753059290052820992 5883168360274194945142134262464512 -797442683198074944864189160175435776 7124393892643616586949530180648960 8898706141619853682892464090775552 -201036667277302306159545985997471744 4655649323542131527141505238040576 2125058701145463304852850864029696 -579922053627398480792925592944115712 742961535376625748013778370297856 5022398418281417212077264080994304 -352754544104628361435274233363038208 9128298916305236982303685288656896 8317789936417605566950186472701952 -242216003077226980982697633509277696 2947584352294019479560927970328576 4559316048012137922233170437079040 -664417605499959897236910267839807488 8778966753635239180378692202266624 9565829954680973828597971047940096 -733523604127650832401116065565769728 3856127264999875862400991676596224 9048984515494248285330644473479168 -303712734725822372385068375768825856 5757531053094733050199892008370176 7372575235352896925558482143281152 -483058493453648236690023591698235392 9263499006255927015463601821450240 8411898938218102709235788975964160 -713359682760381327641986109427154944 916490241872567804952068891869184 9666216607570657935324600342675456 -270864645101115489913954305413480448 3051012958239777609078975856902144 5790652004050574136130123635621888 -617232927782431740734630707297517568 5163689946881744957387158228828160 3621701189960220365269887055036416 -547370762545586735587241626966163456 8332442015930877700875478607331328 3387656025648909582386807047192576 -980027013081547285169826097059069952 9442639913719715093093658526744576 9632197381795118246547372128600064 -357239748526263640511127476666105856 2848749067097297280225027534356480 2593247342907677892514198887333888 -870773298307733276387774196258701312 3324918749639120884675456039649280 1386325156634629765321859847421952 -470225546849961532839250247980941312 4027200578588519939303252183482368 6774324718261836835609650254577664 -135197500284453824304987471454666752 7597063850772421312777314491170816 2291215173171920823877374251630592 -706433677205520851312710696067661824 5697163758945770894254638366720000 1846962718259077121032331091509248 -451813592035175315736305335044931584 8626910886419305672499853711638528 385408682406008652057849444171776 -447165049174312432471967638768058368 740110321670784582623167722291200 8353242983920998124475911535329280 -87793965321392642033341477475581952 7357555058216461860935974256640000 7176935399315480287607545472745472 -324799040043095159836769895575453696 2860558312899768849891479145938944 1946604140707531651605311332024320 -943660316617806971230802809794330624 3323668929822579134621335506911232 9224460427347958505285380684644352 -609278628338429379567516353705279488 6329463440172604574811841017937920 1028838824178849852444451897606144 -300533064721295784779116001603092480 4831088340179263231324039633960960 2129443888721209357211820772818944 -293756383157289389251605164898385920 4073300487811671647456091759968256 9955152408160099696441394001346560 -402955791228884622313222093158744064 4292521198708764139015125151514624 4623518508696923190919523509207040 -213593690818174819181010796071092224 3232244780684797827706329130598400 9302648772924895526524524693553152 -801458506828986523429999780974034944 9823991031095819963689882074742784 1689061217567467933057200504700928 -886368833442742818262436524798771200 7194371054545985961300075447582720 5019740697850874863056200237318144 -344020668123175056908106004216938496 4778857700876760715190368674512896 8468149129859159744993597669244928 -314773231890222813730390387439173632 7366362718580779358207961051693056 2363211685412668759838938646970368 -943203986313863870834520209343119360 2598523711756473811111981204111360 2860866584401255781813203759005696 -128645506283968628946815648131973120 409873843042622944444840866217984 6494609993761259778106949785092096 -446121874839889411010620806418923520 2132916944468185107630524238659584 5161936147259552217943850021289984 -811361738189187651364671262562451456 9823318791332564698218763420434432 1107341979041458465841169746100224 -236674444563644895325019991393173504 3333804098014925119797248550502400 2337175251879472970803115617943552 -208312701839015739951022152142028800 4915812959781146113840245393850368 9477949472621271649457435085635584 -735042291678103544886904454951993344 4110784578232444488239497328197632 7572285144171450236622470924730368 -61784501709726302288745859221815296 5866004735236238708747109855657984 7938967643221814406929735900725248 -79459354276213589042255900446818304 7643921726919690775508411672952832 2160559252703193166889146403258368 -374066137830177996979151599615082496 6639391070822862819358020999315456 5856206957231754471894462958141440 -790199628550513562877905276661399552 579134353769660221851860645969920 1556842493185134136594775016472576 -157319644761847456353966531182329856 2428850076999973159136200178532352 103749223934885585739059835174912 -894566156091209605789938045373382656 3903014156875743600560658632933376 6353285676178673652112196647256064 -278659720716338972629303104857178112 2236250325784269344076841028157440 8230974702686811519911230613487616 -827565905880887576068640011966218240 1244029753134438710168930654093312 4117260820532141251480984911609856 -515027538339343823506290835351142400 2356194673944942911823446978592768 7024965009006878367865836511690752 -46212722930712297179922353742675968 4398823499357191784564976580034560 3168421446981307180674293866430464 -793843681568490284014758027568611328 2737227749126126580856015760130048 87904946303331778032810816700416 -230326928222439951980366521792724992 1809775258963785964649493225799680 7781940913972066301194010154237952 -676581288727999176482077508928274432 8003208010742750591446360466128896 4763959767038946828146991962259456 -81363519886097249331876660714143744 7364737044529548783805573028118528 791025078259200989770813303422976 -595995746392926634421696007388528640 4183133714554664864236818564907008 8247807599801743054851477421948928 -491380505945487172090483927381180416 5913347407514226612179639740661760 1799547569468039664023041684275200 -811261131649196367267940931119087616 6995035210110244216936711873101824 2226535095838589906917430275342336 -589971177242855604159402819989798912 2976574489580426022385087556878336 51910903953668185568147048235008 -587395219778736152801805454503051264 6849538533854509674334731175460864 2760829313526555199287227920154624 -871268602630237149360315439503114240 6408970311877882629957653633171456 4830444466893579436673920107806720 -352088605113636888244335827274956800 2806582451864661225021230179942400 7016772774171762778682972314796032 -692556891782221958357515251537149952 4809435152417568236922846746509312 2080699115218453098363703615553536 -142915050800333970507889271432544256 373738508805509303518155828625408 8873188765332925620301883158560768 -587653707087736916605242545025318912 515489680049555245934203631566848 5978365920387516376911311177515008 -200700604274014096622738571190599680 8574190635432732446575682706735104 3947526553793957308887289403801600 -617211891756716541451446301401022464 3775891604812887133315784012464128 2032045403251447400823838084169728 -213299411559037155218784168171274240 5707474163870742998712397896613888 5260111585277828609601459573489664 -971690445101937298480466468022517760 5934259392842510144154725607538688 9204771223248589615524773667799040 -245371260680851324619416202255532032 6788943175305133945225781677391872 3972717923910673975185953869791232 -532819997841823405349120906127998976 6131694281810745383936326656589824 9231573619809521166238953225846784 -631383442407492741263640508760064000 8073654813108722530386244739792896 3321226113736773389750648621236224 -383243604946524835493007683445850112 8775316619100766172978380865011712 6144313048122366260309192098185216 -782415017128000330136157217406058496 8188584032591118895060084219445248 3290693337151151080570178326495232 -994915767058011006852520501921710080 3389275461164081315391594811097088 81273565868552946469720563908608 -160133847570120535572984360693923840 6184082443251817063813814885023744 8180463571210834711314983081213952 -368621155441952014982664881658920960 2104551788487615227809143189405696 480941874983644404487120507371520 -698729809440745133780580254319902720 3445493528491956608599351852269568 2614793094639162910236834726412288 -36634709613556060136764857080872960 5076404612173631281909863395885056 6822417524074124933049723203354624 -811332875950427934828052134800392192 9833421129101092310262266030194688 805992713162120175804345825099776 -351761888504424914042937800260583424 5297517484127641345680705906016256 823746685416365218489354151788544 -58490462053365542719044070150242304 5341278404359540566770964410400768 7586998537201748540105758745821184 -117093760212027356298687863087693824 3181360935687044338946261664137216 3178355319188657993836534771482624 -989413546320865308314639314297290752 3444526947962156124241941256732672 6997188560738888123325990576324608 -111376278810851490153702891666276352 7114159671468512502910788739006464 3752319614955934449212444318367744 -737610442714427157126139160414912512 6881592231712762108792576229244928 8784728658613903131611330974318592 -423159453075507663933800318211457024 6018435282353486176774128714907648 5054484657920816761614825628368896 -272825819177993691639061308745187328 9700441970908047730135102845353984 984787371614811091963449830277120 -849518304826245981949907664847765504 7840660381552997266278722360573952 3463419398715377596657552257449984 -685678259848323569435834441439117312 1096664262590644205188632190910464 623289473766858026263960015077376 -32894979122025875059466170177421312 7834059289481356276677451890819072 7978526792950898658755939464642560 -184069118953126121005789683661144064 2600665699890345516972587003936768 901790573817649132707517000843264 -684971827107351801882568399391817728 6391880699898911315363439237398528 2728438234793667720204684057640960 -961424086557842039643693491893043200 5114464885688485546976768126091264 2721709205888376035703320993595392 -544161060833654585365524833456095232 556107718299238030146606676836352 7378858863963174484058018295054336 -442881311479585377124318740712783872 9557172712147135665097645892829184 1482618325561672243633084075868160 -84066997779495077256089882761101312 7507386812968495339349602180530176 8996737866962250352314433887272960 -841666918044372207116432440387698688 2162875708494623711488791631888384 5038403361816866432656302439137280 -465849771203560686557371962641874944 9276555359391427451133958908018688 4377193474127669460896938549313536 -712751216589859076579508149148450816 4270513137948215908055808829554688 2257185591864566541628378384957440 -253307990334830695693277672746516480 5115965892600255623645513071460352 8997254125789486038806197885206528 -910018778002988254712245077799862272 9218133962784951271793997339688960 6329917866661273676947545569361920 -481534394238297870215125847806836736 5902569115192585154255301078155264 532250332434499452009131139923968 -584485348242127974464209715575390208 1686856098436989212816601390252032 6928310443110650362808569597788160 -784281218541560043000268490606116864 2551251478938543191008536088805376 6721499074402872203617403976810496 -396388790272383077952280417666072576 3014876211781393877521710924693504 8294354820444038418181041353129984 -329554295344247371941407844726734848 7910336247280687450472430560083968 689391684905656252421190610583552 -789215903146367520497129338748010496 8057542775836942572668490335911936 1128624591687945533746497129021440 -332734544563081859669225381447073792 6482241336908452613415856125247488 6126665477307669279495539845496832 -583100804889938012181569840015736832 5113466299065342297299969449656320 6511925591646094997243019206328320 -316848277070301715439421366812540928 3528986449733867237725833021882368 5936770594469114661301548644040704 -225029350760610994629057974823288832 7118091585366090489287106717810688 3320197710025648509769962554916864 -525665198537692299796040617295872000 9131966320338100291381014871146496 9160491185858401565330526405918720 -867339073268313056045343390245584896 7621756632161994608289385696722944 2621308702094445953785476562288640 -813631463920773990681960531554729984 1106298620766168169078059966660608 8790989975045986292121269430124544 -185636819611352873183182028416221184 2384288533471301266261027372138496 7790587068683963754900881491886080 -202115477140656308947773804987285504 5154694014053789937643852794953728 5076922855850864493906054589972480 -785974021871298342470774878248108032 9016260444502900863057701300600832 3891069383394311777242424023187456 -293376311707936570923088140239372288 1928880481391715680508609038385152 4166319354916054097055604579237888 -682017791473604738515128673527398400 4514646670903970503482017346224128 2806676515974808300485161854697472 -765232771708865029176065092554326016 4249139945802574070654658867625984 4565073426080123744733197324255232 -276075301084452851662019726898364416 9385551133637916018687994824228864 2480896235406981194368528907501568 -244707579656541017371728141216645120 5311463182586146233792168735014912 5549104335187423181528663691624448 -811223432605023988551385042030428160 86901863449624939222540954370048 6746125651547984386257102135361536 -356703835897882914446062400219119616 7798671572741369791377054615207936 4275969416287860368455325343285248 -604002581006001663654332266660757504 9956888187679298557949457488412672 9021152436482822312802425883328512 -18809549758985976916423750748995584 8128107647646172993442311772831744 1092074644421814975266528472072192 -708635453503893501911355283315097600 4994514394240501015047025356439552 7628915406792327698209549794148352 -907758279054761947582538511961554944 7140054444640891346666870825549824 7313435570114530357979740372992000 -369237148783144447588796949292122112 2880028335997249872513840617357312 2067819423402486564757922620899328 -694901845380909339174066081654374400 8480377061192435597459751841038336 2065683158035550038557958728581120 -419488975056850635595901800632287232 5135165046024714314808544548880384 4902484410686876447208507583758336 -441955975487760390010179031482236928 8005746906468820124599362368045056 353985458285673884149113388269568 -140831822869873392531189534801526784 5398802513190600250444235312988160 4154923202462930605754036116258816 -595492691612909974693261827549167616 6903577502915132060647268718477312 3691709845239222137499453638049792 -749333266033206523396996118576365568 8272135278589512126097563305639936 1720635771388479233907178927554560 -776619846856643800205290936800903168 69050029412265721933431952113664 4384841513491580380988101869174784 -901959307930176731564051608731910144 2383229146047841926236223622348800 6691805603130065910036228950982656 -379624941641468624149967553844740096 8626613885372240296693961207054336 4268753093685138315082469491081216 -283264903666153357670444301790740480 6381478407659502399113891588079616 1648177195715584192677779043516416 -439845559465706503492330893655146496 8401286395921714177688914586763264 6739119875197952166880221188849664 -516575961314835440377613434574864384 2880410982926265015843865059393536 9299092427671750130122628762959872 -893343619013831778116489562145423360 1622966578959500868966397509632000 8780828195047203545951689972383744 -4549579368486977785477767245070336 9956420728512030770460120068390912 3497147036045239409116416068026368 -965718425996044935221013383435255808 3759320327103285573695573644541952 5957399213133580373302495454167040 -627664589530595903208933851066793984 3675250260298302858904555755667456 2070041310076084583216887755702272 -424633742972080335361912508923248640 9238844523146966190459427535978496 7064880189201927361948738283110400 -4099630996764515657395707800715264 4900430865249790526498085862899712 9345151772830647518586701690699776 -386261461747675328984033347636297728 1290237898142984557014081268088832 1941564501688460473789552470786048 -646588591116689971023425612220989440 3924922123802060281945414818594816 4672057216759500741275717870813184 -554044312155957191544598291082641408 5075427993830604574282010090012672 6565478502702897947669054160371712 -495431184539563349224204833602404352 3300710808874232975540685230833664 8201246299524547813941861102387200 -15111893469021750137705565058498560 8922870527955740476604640730808320 3773500758331863058746385624989696 -625475306119561256068747419128430592 166283348090957405128898291695616 1367517983289991064533469308649472 -336229175754612493368501100387237888 6634063120761330608536222506680320 1260987171541285872594792411561984 -527669700015400320514337301019492352 7446516110038410724257820691136512 1914497417130957048190735801647104 -520899979902858145245229519229419520 1318723880544292604280294156009472 6732448277649409661462449934565376 -354598564254022786408875855280340992 3642823936457996992964112014114816 8192691929325299757705607914717184 -231178452867652654071395546237501440 6298887951958917003541865669066752 2505754796053710196293983356846080 -23196561563321574407693147937177600 5831478850904064745837265124589568 428571994660536507208630771122176 -90268346443393767293810073606815744 8093424651090353972829351174995968 2731959494600789664201629000269824 -863848799599062800514883579314962432 8614550224221903854625711772925952 9244844277033325166398851562602496 -859770205878421421220438063223668736 8031277872645022456277553716920320 6071980923335983538789399008378880 -354369120445055648485275665721982976 2964144207596828600684847229304832 4012019092401988903519995805302784 -181347592650997179215541644822577152 9742350029221770562142162013650944 204395446967252995372585823764480 -479708236631153552130753855326519296 9267935308425867148756285522968576 3135004305495024533164014415380480 -190764687276568468703621904303390720 8809535602711167049144419406053376 2360055053879781317980672931921920 -975807072789223428547972676651581440 497739715884452456812167819165696 138993861987957581844824643862528 -635003229175874401980133885391929344 4859941202824600015663078005800960 1597472016806041666588580318806016 -669042265494092197376843844388126720 5165334609609786083238259401424896 620266154884065596959561040789504 -728633229611029755674271606187753472 8093042337297979339070897580408832 8892516078216862320160661307392000 -230002233263160384001812517923848192 932982996478769528425181637246976 4523648214383847161326979684237312 -638542017564524911477818315853791232 1995646358904804685763799397957632 2023516769929366387038425786089472 -438711683659879342440805957472616448 2676282997800328251795074417950720 5866593975584207381879748732911616 -454616541660272613114451276091883520 2075813538302247918279912077656064 6408709427815092641716647248265216 -79385261682599934376681721556893696 4777990340700136739760472955289600 922442137045074706416752866099200 -306608815085316597917964334213890048 5227540561717363796548831672270848 1786984080844535335656241051467776 -306272033006559933328410835177963520 6887255060581592922641155414294528 7464913716086249033410970193494016 -51910936919051588057802998984736768 1460309512023273224349748989788160 3469318417069517755521552030367744 -413659254689654871563893478229278720 3900377113776300839176343878893568 6543653042393832414598258013241344 -250329697806579068309743370053353472 4174482489535259727043012432232448 550702238283412445165784481660928 -306423383092293757944184451266248704 1134845202864842712053736399699968 1909622697701838906189244899786752 -765590828280220949635317958449299456 7450699083654139330049829356175360 8765475024204100201311277848461312 -971504044221595600044825248180207616 3224814893836936710350820115218432 231663193520787981239933196042240 -831537146761569915214440083773980672 3388982003035829290659865981616128 4967185747137276575411831926947840 -28951345435639847086116540264742912 8104858481648975630493858486288384 7635893157510455314252501564260352 -22665266394293888822434682376290304 5906874563889998099086603632771072 3136887472642603203574456452644864 -992252011543657790000018466778644480 2048543263501885167606671238758400 8636708900863467863813827751575552 -619718084399291649998224724076789760 3997427136654314206200109419462656 6306782717524224371615090593497088 -838301806386796092825714502855032832 9520802137079850682258271697371136 3601382935105642470938931057655808 -138321685838093181947822061805109248 2088210320536334959251017902850048 935500100452380524253323257184256 -415104362300101010614342165832138752 2150906265011001826053111133765632 2739791667909703050265762182725632 -452414679481146461955107406666006528 748932718630053967076772049584128 6710514002821392795698174604869632 -334238781361374130904992586596876288 7153767742129816348805921735966720 4159486722990247687673056222773248 -811496867834814660824196889765216256 9474939180312250163991981198409728 3424051898602522118869946638270464 -282114356866782396414546434890661888 2774716019507087553056293907333120 8914375213198898486974994177851392 -756106287680212473094309721279561728 9636752026632936556817193331851264 7302547520723626441082750424317952 -896313287128159345579583903486705664 6773906121718968750004692295090176 8079422789253026336491044989829120 -324073992564314323900401766251888640 3309849263178422000828251004469248 5201463731490330656737047714201600 -222000345351636030462217976159404032 2887619671637924089763438471938048 6605332119127392753527712341032960 -523688399185188498365529977522225152 254877897299484734423778650488832 7973544047996573982093008829415424 -15564231228303683684873948173959168 1075037295190924993564232594227200 8782772932070165875483320292212736 -998479097423242914271948280671764480 5915871307234574050751992230313984 557417175344155326298777045696512 -558966584073905770565195932893184000 2353709044877499456668241485627392 9357902895428198470034451035324416 -943296115506046812586359512077697024 5295673963069296738018374474268672 1928133060340924047095638756687872 -681189569870942707748078314502225920 1249748536570117040266252942049280 9693447045940277113168843967037440 -741815711278143190214960267655118848 123489947886757977559308676628480 4612824835219611572777019628322816 -391372148525747582198835667881951232 6864190050052277330089853373644800 3257809203564756542951310642642944 -601471159821595602724000114933760000 4162086849350234358243244688539648 9606870399512131372212295005372416 -797808803518968313228356243024773120 2401527645305729351843238150930432 99476660916695594315493037572096 -554302912945787197686570586090766336 9693582214459094768779273613344768 8889336999419676703428741217386496 -250478608504098076043370543735373824 1895840287038604096683912252620800 7968994481175289136764869222072320 -18092369588426856926751450051117056 4248129368800519687770987021991936 1257245126565298853153640628092928 -24696903812804480060226127133671424 4159381908851413475606149094965248 272348610348310921865250610348032 -192482778343624013367219882366599168 7900801310561290022494623416451072 7154837638641657187010378096181248 -275801792859138273945169088573603840 3483186433621361917915640014831616 5722262870222268152725002436739072 -942081397886370830965488591860400128 4517813252710362361081385283747840 3442851909331253979805393092608000 -111297681323905761574599836810870784 6128824501552667779789932942327808 6835427033167756250411428061642752 -269793478809528256296168232585265152 4210560191312674738362752207683584 9055462873073434152032836870209536 -910112899094892268895078662960840704 4363372505773056873401071681142784 4795833302100408831379511024025600 -617731078336078690721926193266819072 5729620111738445475621780580204544 7280891575984449887573217875329024 -21943474139720350982323888698949632 55201888832137918401565008330752 8141477747848977934021617545904128 -327961351574020117004281488695361536 1776733282467823192862277108760576 6479509568082195397504127821938688 -890126859234587350570701547078942720 6933415205685355032497633439514624 6374015604452302888031580642607104 -417677683324817940652345565462396928 2716110263277367723190364508520448 3741395840025217275888945980243968 -107933856755816085900191339466719232 3137348842173766278985547205574656 6247556927575710630422915091267584 -801473894712795825662407218240159744 1208930901595180158997977397985280 8566200181671620539054758979174400 -837342455497995114764476921828868096 8854063927423974902579533304561664 2082788960272296117652518202245120 -118418132188592269076876358062178304 887299075720961214276887392550912 7995102465537488152751672777506816 -962426609036139077118725084005007360 8110111483810236421768917058322432 9908733417494753681796236153192448 -852104278689646080564626054342246400 5368861443839542237556269352222720 2714405422976534358437917949427712 -811635466010945883305222269573267456 7899421404899077145390662350274560 7281099348393396533341597680533504 -106428064650942133243702582123167744 5157564816692876135295893058355200 5540825475135104381399869954195456 -592498497311914693722189445910757376 2399973118429389866601224242987008 4870562570211694361050852733485056 -463553484605468441935974611734757376 3862679422325446617267659648008192 1227721149339505117013309334224896 -851039728191956396898186380449939456 3832638397278673837755405665566720 5200978445613992372150696073494528 -143025847025793245774189173688762368 5239136970908207625553151858311168 478892161108042876730774288072704 -316292287948434189042256571336228864 9400302126547215943551567584559104 3395557146365914423305227569463296 -117535649279159866063266853003722752 9315554995268388693614350454226944 6194994844926322960857301931524096 -102435278765753125571526138255114240 2601411938898732757735833390284800 5468801522100831589473461578235904 -203694845960333576145790052463542272 7246338918580246189276698819690496 591808390060372297121608323039232 -237494841493525878493624712952807424 627358666962116817131673663569920 5911713883206916271626529433190400 -119369011249600019944650762163847168 7207438535340779259438589617897472 4738171857268049085043738863992832 -517053683732218296947039181943603200 1257433836571562771803323330723840 5925851266618380455327196958949376 -213321854140278713575758803463307264 3482608067626743641366814122835968 1843255411778623700795579065958400 -220468444923568915734361204441743360 639618171502722102357759369412608 3098559950600033620801277795500032 -449204897568735501899100843531042816 5412224939105919623834105169313792 7236988608603886094835628973752320 -916033784677095090562723995266842624 2832340360310893263411387847147520 8991197692755178923520715239981056 -679150781604347647600416362084696064 4323825705583026929283846941704192 3446207948696097876288257482817536 -920553548084464500282978197458386944 5975602076398660310048067949690880 4449661029896051610340527842525184 -786182438239508839773776106351493120 3299321576166040687063786235887616 3625611499394435741875263621824512 -169200136763083613677593225777381376 4844746756081143709680173313949696 5931784490832665319659680802275328 -86211706720323166926779580239839232 4138510699451771924903393262305280 315854775990878604734521497616384 -698987215921861229545121740442566656 173248228844293699876629216493568 6803263796209455030696925978427392 -503778833796165778602459670186557440 425604911278238007499644532162560 3676597941897958144051629877362688 -952931125175099643153802952295055360 7346881621475210572300828041805824 5588772241127637720942291858751488 -980810238495968886779079272075100160 2781956562359720239297053310582784 3405323896164098119129017545129984 -553186522124296842559260243588546560 5077008185462441145585394153160704 841897167713522539269335344480256 -207436766333164005291331374744076288 5972372140969834124273052620423168 8097408760270954237599203316465664 -506007754475623123507199959373971456 2022337082615732337633027317301248 1810527962186471790211457081147392 -678129533667419939989809735795736576 3422317847574967904989136178642944 5821580598382327633405275659042816 -848247193224109706501600851221544960 7748367355611334997890130623070208 7182711409952546204890019137585152 -350270657102401269561448631854170112 8645422266782786343292986600718336 7608307278169863628678800141713408 -271624601828404095308158947790159872 1188700404849631444234968460427264 2767790408816576193979670218145792 -475018070732033748799695057269555200 9260571532177922495145515864293376 8483801413976408309829281647689728 -676310322331698132535147634574229504 8010209574848276299230849062141952 4062033377456319359004833080147968 -952598213414956397596536877493518336 2950569629254558657302879530909696 957677900856859438234961367269376 -467138962039707076543361727017779200 8899454465227615451488477572497408 5858670875825648652543301362122752 -459606229337251777576514601288204288 3916671668616452733259552424722432 4972317278127397916868662576283648 -92967576925460677995911526823755776 7520639061697256624732469653929984 1594126351443476932553192618590208 -793505939347633245689047697330274304 9456994975319660222093802717839360 9227111685168402903521171444072448 -44137011275568220612155985117577216 4615073556325470495491167585566720 1724973394997869184939840912752640 -963013049898506433048572358220054528 6874914323506489076205477070635008 4826303951599970168322558577868800 -28866679468757741174167482274938880 8015060040294953920827274045685760 9809291161937951408576412503769088 -231585238539773834578027537181442048 5333527053670200050608653629128704 2719346203854986360815987632111616 -693418404456508070908007793706401792 461662175216644247594989720174592 8987836971474873874549692983934976 -542207057999981786783279668032176128 456720978318443568195668522565632 3102559490276567496766482991284224 -466197324637164821844910085624561664 3876307528341311750677643109859328 4550809398388226166327701718171648 -748331552795819295785313616938401792 4034002375701946882652164904189952 5045907031544845044449508556013568 -457671855668831592003454581973450752 7502369822316670922239722691493888 2705684321812577857237077742059520 -317908063812654477335092444778201088 5595703635945316869699946711875584 7676688615393298980341850725941248 -751713037784568897777839810275180544 4031368702046071320762639565455360 7569860555396414697033941538308096 -491974649880043190011221333394849792 4705110993292863118576287486050304 5961991294552725964960359776256 -513704545767842056361355646997626880 6061052860986676026726693694603264 5771130714406532473649231646687232 -505713362505787933587188595478757376 4860741278067931510226642639257600 3248170200258714608407478955671552 -641486276180683881307838332752887808 9891324222118315616099170502311936 2033553457611699499102583585243136 -988289387101812668642728024282759168 3332710893123367893533113811206144 8964218832925248474047216848207872 -668281396314963164383324584387018752 7571621680348320775697477398429696 9514040735212046123559163489419264 -492262661602597836426054004348289024 1459062966557536464463242400366592 4702726449760544366182222505443328 -525132554018748503837381515502682112 3296127997213580561150823452639232 6428479566649047366477309366239232 -569923799763483104485473464719769600 7711438899934822046735477086617600 3085146859439717710856835758555136 -742432274783488995484484698854391808 3552249136551082207669017578045440 9250319763623191891903134501437440 -831062660088081832019432345763315712 4780502388180092710379985907482624 2043603500347831000958349801947136 -788993108411648401922609130405625856 8074922350571733953814233773768704 1811307575015504653018427597783040 -865970221752449706050550610526208000 59685400308916068407061312962560 9480922949544409204073400086036480 -58800240992201740652461328036790272 9941680447242275319273829028593664 9266991302537443987623343787343872 -447489958210020668650002675505561600 8006105931800157905400003037233152 5988643844891575129231248077094912 -66077949091209423186895339316576256 2931461471349004277348050602557440 8851628679212388192905088995426304 -417947452652397396742294225926750208 6926441895942383795210645147746304 8788926517724539483286567674445824 -634354500822237420419242038568943616 3573704069291321783598664411774976 7085762581516271255311371101798400 -952566717801737953739618777013682176 6606485183873153272031115221139456 6472360453634482804989224804155392 -54800555755718608903991364528635904 331545934069878964125457545428992 1380403095416369149699268295000064 -893117794941495754967870338569863168 7214960159154910687213762109243392 6753421637854953125937425351180288 -894166336780695582993880005988057088 2652149493823200587628240391110656 8996949802465121770998173922230272 -521339325760973300946856616382169088 7597418029870291672400197796757504 9932876871745384897013043947372544 -635538740321082186128108468020707328 6054284905916637550725251872063488 6350612764744286634810689265336320 -193737186137061877328843095284908032 6719505772555425348369129022685184 5932675873208662330578837448949760 -443873416235688234979423812382097408 5980542525744669266333873500848128 8559099599764079280227751554973696 -20363602471138849745725251641147392 7355445042443404474009474929000448 9205167438544004911664997874008064 -400995218446374781315691659518803968 8426692882247557415564528609918976 9775588911482354499877563296382976 -95422008064710344430750879946113024 8276063456174353380561487109554176 5040075078550583923413529682509824 -268914724062736695105652926567153664 4077157900508842908086739809599488 3476927593233113110533837170933760 -788301883063343743639283220913061888 3073082789978656932070200851824640 6644582111664281855598779682521088 -571524592901882985714800269283295232 8216035259182018316142571258118144 5331788420476562263028777506308096 -140373881128806370158359545859014656 9520053899407611240099658925604864 4737260850622075655621417394765824 -858452978459794334899068511157485568 1898842756719250556094503807090688 742494578164630981595726237138944 -156764500921247554656041486692384768 8341776315229533465145751596171264 1235432826311908415598718393253888 -636065171139173348837583809031438336 1072383059371374518165713618731008 2598002049485092813865473080819712 -634198300185605082167183811905847296 3880944236148928080374689037287424 9191797941650044575660862485823488 -151538419633739495354319796860616704 5392067752361132926931703275978752 747944096094265341461184433356800 -541398725339385686345724418592866304 6173143460450990710786856052588544 5853233888619339524614626520072192 -43191709816014151438134091892916224 8360354586029434073674007770562560 2546220304245835171439632132866048 -510969177533395052695389146768736256 2818497308508737298010999017701376 9140480444191681821669074048909312 -950250942044229730816078286298284032 4751644544215185016209509644763136 6436620118917849891785501558439936 -117013190450349288913799452687335424 6309186383371244792058778199523328 4082370501319655879040315301036032 -353773728221378702710413958745948160 3698146858917647328218733940310016 5636063844909599123130420029292544 -792134530212842087214758486943465472 9947331635735099444449370544537600 9502472781486707656727577818562560 -450536963872270923983868291383820288 9468321962395478584825089584267264 2785555892465550016470902330359808 -474403772398324087650648244992606208 1722094913973751332776393605906432 107731154871561773632116611874816 -567525990643419901881682880926580736 805608720028680903713414413549568 4820271399574108893583234675245056 -323250503891710454040144827419459584 2699516816184700459228231469367296 5152656147761971065619486833901568 -888654225240196063125417842586943488 6458263863017927996287665785798656 2308316546799149369289624564793344 -181612496247636375147024383637192704 5100041882195195351047975401947136 448126931349845216258704139091968 -693352977371995723278837876416053248 454906100014701979642247386234880 5096294551994901853967554988474368 -246700931611616439215905610578001920 7964328705436080651587134418845696 3625992473087213988387498028433408 -669760432331759634567658980176297984 277177282438329984612920249548800 3010895091361339486241865766797312 -45333773267285432138429982750801920 4437466770183331367939061896445952 432334729177275066493799348830208 -147617720177209405475986633996107776 3792421526412074263305963633115136 4920348724848766722654201985368064 -68192961712300042063167780368154624 9784768407230779420125912641830912 1686029613938383356296247149330432 -577387701871358906113759379103678464 8067507183452561365138829941407744 649805200237251023782042291666944 -689322804819850593139660838286655488 4924556208805291897262588406267904 1672747680155330923196957377691648 -764062578718999937746626358840131584 9603688942972271997402542027833344 4707557530429339700337162913316864 -508063378436990566194913134067580928 2473788928426158483060624931684352 3540510150628596622310974060232704 -632211956762381888826667614120968192 8711240366757988680947124270006272 1343785385836964535080951629217792 -132263537469377755591792179726516224 2960035712210415044161556059258880 5314877107716631513996698637565952 -380303302369473523275641965252706304 8168520331222924961924207372926976 4327996450931953498894131940818944 -480469154110414764300604505174573056 4976325787137980978218223399862272 5823868251757759936212685549469696 -417859105138066843556445249920303104 8251467681557306319005170939199488 7977385417731724261759597160693760 -219857100011684834640145887648546816 4435310768431407187519957391900672 4419365517379742272654748392882176 -512122689259817866891837862106365952 9328498057573054355049171948404736 1647189910226980533509264014049280 -61457788165457983736062272524517376 7564584937152220048851376483074048 3851450786778362209974997611446272 -976574515126809193264792545538342912 5696295160023122691543160860966912 3095361391932201201457688444141568 -983523537262139852740063387451392000 1867061234901089835108807085129728 7240387044930617871660255849480192 -246792883377600613069691127548870656 8187128248687974343473568264749056 649754997513254214075503263875072 -580537727226159992716828988850307072 7853833542258654035676442117799936 5682869651702708760310384206807040 -923390533916466680407135538624069632 362577555741001268964585241575424 6428484882553472310854593762295808 -785861705304547293932172732847357952 5495945464234523879971520711229440 3599054723770779554732176176054272 -6675431734741924169350154471604224 7745120781620669008030631991443456 985288775627254472891051966201856 -312931532433134909328484518663815168 3956710275600740534315208771895296 9956890032786580684102801247174656 -123494518987611734332420182471868416 1019297507732462929361428488912896 7396077367535760797017863738097664 -618881561190080052631329184050839552 7814234856951151799181806235811840 7077511506155551708323559849852928 -488531400483789400592761009192566784 1986426983679879601450723133358080 7701853705236021355278360605884416 -268444139913144704333659285865103360 173725613709774457307800495194112 6712912411071808163949127787347968 -398109137460920349958347657920380928 3004244745220841275303856533667840 2207037004063448554416538378043392 -799390880858763694524259629963149312 2623198248969012966379630257766400 8225042784839597478743445866545152 -785426152629510836575743462795640832 4808496506927538118764561707302912 8730383177223552460171507260194816 -118547369400477816526776510109974528 9962673255190134603454498813771776 7686102957475024716984314490781696 -671149543142647459040663515879702528 2545984862312714955464341826043904 8283733505259937952845385726689280 -473057019796011328550156349166583808 1186281098246489376219492268376064 8712515642518051996854138552975360 -468185137486215956237775595200577536 4324738842926541601537119129436160 1156489410531050165895175650410496 -459983975649350737742170856517271552 1802440282079423664460981952577536 7427556793424059606984850162057216 -455250322093119759992944660540555264 7639964510479171595408668478144512 7460029222911285345083590612877312 -198882290049831708264877368811716608 526015638570291767956227296854016 9549024137595224205798146635202560 -94461067979105314552962314949099520 4278482274284437270996921459146752 6032974603827297377511148533841920 -284395254201061684531201883125055488 2857518435285831777886062101135360 1427204617843304624740378601324544 -10623472013672402265587755578818560 8048992392203958114089374620581888 9254919527063648543611698796298240 -674507098954409964683348956801925120 9505130349964882582132696482316288 1179825605399564462847233722679296 -247075641846339300958682194152259584 378665211653262422617587697319936 9987121347431306891766320836116480 -885580623441213435097422478580908032 896432735994676698438814903828480 1471479902644573649879392162152448 -219280297220553440663047459966025728 8984833313646997875048075117985792 7222628203471813587205349649154048 -951126438196934267858737412492492800 662987408659441209046692616208384 3573414157134293521933929327624192 -429533078975233140931810372161110016 3126059468790799025378713736839168 6996261041459939072043843873406976 -887805564461239745531130188811730944 9435389267037008780560902729498624 2086623867397348446533833449275392 -747835508392854672096203265724645376 8183741454341449601105047291166720 4478188819764251700541560910249984 -212107414397724624576797528251432960 7985342574450475296627431919583232 1499261848001258754218010492272640 -368492160371766440477599417724043264 8341053842062165805533839665135616 357128707137059421099009379401728 -68665215564111011005746762800431104 5894795030200474109797829456166912 3989780853409750944449802167910400 -31995885794539535913007729485021184 9379680805584759407135740779298816 562314579925464203473435691581440 -166527464852710899595936804018061312 1656161156186479538560225844920320 5016434050693406700242603635376128 -754862317233957614611542324233109504 3951573244469510174071885685325824 5854808946979234880166865995300864 -515718043232176483145000637465362432 1153073775379384951154289833672704 2287648303568327746043243925602304 -391786736485653270071945448438890496 7416656524923594113256663612915712 8271526814573266742646902884401152 -655782624330710295000586340916002816 7982583337202992519880265808478208 4858642566481827008105018545930240 -901488446368658558711618645637726208 3199201646721721532607905178583040 1786502833737454817009522136055808 -270516592509006147669191557455544320 5735416130380918972944279266131968 9714619226086983702372365123977216 -419648641159043835592022555791196160 4393141545121247161291687789068288 2231277348470964778068120503844864 -489676479487720172155818505937092608 4641571023200778726604056601559040 699149403853571476146631202570240 -305553587521638924028423733313011712 5179439288526296076031174562021376 2346495876801542493988515469066240 -797554562706490393788958262572351488 5504878206153850494445710018084864 2465982029876494729815264438779904 -884664261660890509962664257091796992 4299717631525917589578619553841152 8539796393566829605468130116632576 -217766914304575768295922086157746176 6668780083685201932938243838312448 3987369481549996435241856780992512 -766124541672210944451247638927376384 4709531051397833108611934168547328 6691016925718235984630439366098944 -219221062222028717964403187000541184 6657679093276683668196388868456448 9663644798537662726280635794587648 -3043568886913406368085023096045568 5064410303689695607735438276558848 1721296865021975050321798398738432 -65576498848298091255314931018366976 1074840429419647701015937849229312 8552079644029775945550001355096064 -647203397049187428696585851545583616 6540667381697861498858693950701568 6921066759545102073618848817348608 -547416455103780186670270757747032064 8694089881857031607845810218205184 3306735194373641368284494475296768 -808357558314190520893941180069314560 733489477952091629047619841425408 3035377340312074741345139738804224 -990919065763696403874389837704331264 612872454089736673377005367984128 14146934532481298865654207610880 -10578571366211696905030682214924288 7775876604502190510479230145396736 147587009451998138132216412110848 -733783375766130338894568117562769408 9280409044933104745045749061910528 5596663522081951053665150777163776 -178911874550344335234575304321138688 1377584102720672281968953004130304 3360514244892878298494407081459712 -856676456420044823428259865824329728 4768779825902647126147775326060544 8449509556303671466197931893194752 -488539639059777422257439899127906304 7328707141553968347181528540774400 4640217345609567990192387930456064 -35866820557608507157216254928879616 7115082996973423935031894404497408 824783525826150246003292082536448 -262194511466590681309345594889732096 5725019157098346565986350689943552 2111276660403810169140209956945920 -134933802196818363075516979572899840 383462781811108660580025404227584 5672401825992743687298710933340160 -815717460641906291957746261775351808 3895007020058823790357879302651904 7778606302542923839223864418631680 -203889555957115898984760167895138304 5235501548393396212456694296346624 3651480581787813105257183835062272 -699266161727209210875909717524217856 2843046859259028392482116424695808 9762319015624590845884220609396736 -438660303084346669091063735919837184 504656747081173893843954050269184 1382385843681467272861646793474048 -631268960959769226880643458876309504 2784679648890399758554803996721152 7452071740764922464402693324537856 -60525606963005511714164380773908480 227633861331562911963792443179008 2355905385015439366296500036435968 -49896948881170577543123085966704640 8644623688248034029053503065817088 8193909035333662918996417958641664 -525646246117403144983395174147162112 9321698911582904803426323511902208 510244253471538046331035792179200 -251745090692042924840594052453761024 1347457309071483073739907812818944 9388573451662576276607167115558912 -271759457431984611845355949359366144 6082748628342743783017293482557440 3635223293690021170061184774176768 -553464196180459633583925457487659008 188301096661827955256777108357120 9719844280842837588217653035532288 -288797002449506377471731763026853888 9101417635876562219272422295601152 1952492679205192515864825161580544 -580171762251404857858027989789310976 1912912187475929444193679804727296 6373539745371316405460488402501632 -702360153632221935026155338590060544 2732799011777992764923735351230464 1538479022323982372112657597595648 -600888352656156937160241944591335424 9813915874710044694369182351884288 9851104403932726701842759109574656 -911960606921622475498439175665876992 5878363638261879573983804138717184 1866692868709921137578426966736896 -296474080845854346048159071745343488 2687029855053156627564189433462784 8333191549208746008143690570137600 -792890232163585037167201688752226304 7638915503162818006424524593037312 8338545469534713956806331631403008 -707204668129413522215670855139065856 4598198761151514265748365811646464 635393365844811160753166767620096 -21786537562638164878781710730264576 9434633634965798184167678551261184 4402426074581922042488263662370816 -132893715030574991414915709746020352 922494996997176793479232035487744 3913479429763590723975065739722752 -660741117731656912425222640924360704 5844224181665420973227731897548800 989787828110780150443758474756096 -388399542779507787053281812276051968 6417307149736193458220953677856768 4789884963660565777539475714342912 -773152573352494886417817779017089024 7290435247202419468717874040799232 1393103996819459731271086105427968 -947148619857524160535561684652130304 390169596839366902430063686320128 4181336577024471158112634787594240 -52537713730189323980969529388826624 2695077646526467300433548246253568 156775818432552243418996339113984 -883296436687568325075447527369605120 9776630725502684367537816165416960 7807822190899715524990115514417152 -704616993738515592332671579632697344 8048463189686063398203236175314944 3135584218797015524305972274135040 -380558900972149764497075872964018176 3337827787267912620754409917251584 5372340609141298199929818814873600 -73090605307718187303921169339514880 9642628588565537216765883209220096 512112409195344644518403649830912 -107887520267813658775724659748896768 2292713079208133503109760272039936 8610651935846714763315898396704768 -933668985565249843101062110608621568 4430399876762609077678255047180288 9013340398556395366898756055203840 -331276455321367362155777265198170112 2611930836157137049827747662135296 3611213609550790178102532858970112 -324977432374050820136192448240025600 1339773963239921156770455357489152 4299501546742976650331210781818880 -974484185113591976144105774151368704 162621223177574453472015411052544 847956391457838939472498880675840 -361054975246666715400467022048395264 2767471936788054810037962416324608 4736236637632577982808942295646208 -385499891288450668654504570991411200 106679768208335305766170250969088 4391349671292483943031917003145216 -219955493515247590385799156807499776 11012380342311321858671384723456 5313396805763664612139058126127104 -569565443234944720118135104424902656 6091146239373665673302362497744896 591394354160712083671236539842560 -817557025738364485539952255924436992 1035561570054115173411594705043456 2730373987064528724981712844488704 -220696669423494448067031185913544704 3712870664339368321766320639049728 6059275075950049686632988541976576 -606900419098603941485782593716617216 8924533745026365152255534771994624 1237545347360702791574084227432448 -69601230900142583172766638326939648 3260866980009435797825469552787456 2842698065134839639329396662206464 -401885327292460664464499856503734272 1672669391887409704534435195518976 3505321419595991326020740770168832 -135216645776178964271665375831130112 3289152047108769854967604658044928 4339509587482893346259781225021440 -191221923132332803000343109868453888 9260038086735404962656790440312832 4055216126875865975062110264098816 -551922212182538994911896500285997056 7124719568729600191505715083345920 3796977704743412918120986827554816 -273890203289514985284255490118778880 331383459843643255853190190465024 6530742069065621432927395239690240 -132126606540393894981314103650287616 165258418229385395077012743258112 4065059114075126249252817693835264 -524703897309542902589966160496689152 3085771265064410185924661586427904 6441865663715706573022491234533376 -751663114680025917659750759313440768 1623267095297672838137960676196352 8007784266148755217776544738967552 -449018477368340798976369737041182720 7456909422182331379371674324434944 5630825175689177793015996427010048 -307110130537469897169188415105662976 4309198105730433906243233327874048 7414649217167116529679370630987776 -359609990472140167518865746701582336 1776703482246106362211782826655744 9376446287989849647661659786838016 -987834875716339911346825737745203200 5735082069799268236215833145114624 5820783200285779077802071634739200 -317936399132573540434460848521478144 5262461635911530014875157866217472 1472043185093748889009356609159168 -555948242363900247982233719899422720 530413191103142898300135214678016 9012778113912939581318179007234048 -143546086223092475647865119278366720 2577633269531317396583685975703552 393722435958643210455460465344512 -410330144918632993879561240531959808 9667925417571490386311167418040320 9030229494386875559930434544467968 -392720340033545674900934435318792192 7179169015353020903703916725665792 5288106431658785341306557110943744 -161074789517518247032646335685722112 4717296636726852490884577195196416 2668852791629679571376676834115584 -735256255127425061092683532623413248 2959703903598560127634325028995072 6748557811249651102416961078820864 -806076765410585800083395547655831552 6610710387080348465796438376316928 2485344759738895910558624645120000 -3952987460757488627523592015314944 9646245048427043049187171643686912 1120790800398199975255087310176256 -101199791187321853712286137668599808 2831901066518246631528567647764480 8872619193748899158426772190527488 -543141532439341375629615507177472000 2606627514656239232131485889724416 6049608719390207874187791031074816 -862194699775978100771631787489099776 8958520611653244336882947817734144 9812031637635073731716120664080384 -929200424376822991536531993817776128 984413703333070252449279518965760 5995581241805634588464423744045056 -404825611159331279021241159156498432 9664350425935411948618142430789632 1861585249408361941677949688217600 -678553423091149262499643768799494144 4955523545065106958707106540158976 7929176303252137827984598330507264 -991400357162506635082659344339173376 569001652463909499547842869460992 4279026944083209644603295368478720 -184579438671928452932643664699588608 2136596231421560224896154110787584 2848990813583322587697967177662464 -912146340251831433652639018420011008 2335926161300643466313337359302656 3796909115047253418637538698985472 -721822473954561445325006510508474368 1166951140500086099963240219934720 3842595937025883637018678301556736 -454524415837969434307698964954087424 9901686338685515590737223825227776 4033453504420109379047746246279168 -277763015701344402281565951784648704 8247292995740281713814427484028928 2499036759721608750298225304403968 -166090624318055955201054298515439616 2736395487310213482766242152448 4712110858138649264612451238805504 -787785527069887546361299264855867392 5193762801494202209264339051872256 256263479630464526951926185590784 -130162688063299266110434666275143680 2786328962853786884805373013786624 8513140262503889961979333446729728 -433078383781926056131432988618522624 7390505600202681120938288482353152 9719286948287048203050337997684736 -57317011079285706298098517154988032 9104523734601226068494733950320640 8460744045047180325264504240734208 -977271164110433193816512305750343680 5373476448882634785971318839836672 7694466494679494978461749892612096 -904537184603429614002301643865980928 5759403892338200714312921737330688 7887330355158212033252697250463744 -520928745525770210544550101959835648 9025400090006733299193637276483584 7628024465011368792498279964213248 -914284102616300730153177573119492096 6429146631698808341278759629881344 4891825897829672685078521619415040 -861330864114573390030898967529652224 4309153710104695553888361367207936 7917305529015837979958491452801024 -48214071625011921157176760480038912 8397470829080576614112463918465024 3202987230708657672216593301504000 -560885248270886405303303202614018048 9772332833918051382151417799114752 61486611945096764984791884890112 -685625277960888762619446402012413952 1394370125113615511286591438979072 9401540543875642484368253248339968 -551685576735246132966683593414803456 2019370789831378621451178570940416 6892410825635477267013819590246400 -333887958598588894579975315775291392 8078264869116559090380862287511552 54599219704498247461769532407808 -930600179261691321054020577504788480 9099148438542549412449988728848384 418603741669582753176136636694528 -618945860976191809441881866872291328 660384219813038795159522427011072 7876357419803184593563103052955648 -246467162180715443100983450530742272 5586729547072814555563996812935168 9569552077587075738551686596132864 -518557381191635993276877346680340480 6090617778303134650784675765682176 3617142202448407424215909704663040 -449054432174506879763544630538272768 3013365276118997248384164381589504 6317788808730684336093166967980032 -662265917312294851824801316408918016 8848865627269687624297091438739456 1553921879266510810416376165957632 -51315725346776549170970810310983680 2560930159013935781541049161220096 4655875033170961865782816034258944 -980654322636476970765020049384144896 8100460167750084226040988956622848 2450166623730197032958830040842240 -754177235206312580860475904347865088 8514657989256414293697825618264064 5438003971583117673044338827853824 -576971821606887780992656894708416512 3395286089403793570218593340096512 4335422759524273625928632046190592 -366660340822678280666556200621441024 2242225125682380063465032743124992 652326273910861826420244807155712 -721640013018477308420604513893744640 8392784491177695377153556616314880 7949160511338918508556542789287936 -406673965210682262583422639803465728 9554596747729241464593067915870208 4169278551101346070563053711130624 -710212152603817999752972867169419264 8132497767390908505186063603466240 1212729851397353475919236174970880 -752115532029914670115235703222697984 8705051598960628489167929891356672 7308782027298734666759627538956288 -264601109701806267914837399659610112 4065163222103324983658870646767616 3145576421865672645668632753340416 -350226962573816478908003769777127424 9147153036493532215721898025156608 1298895538226107549135889280008192 -92309857335080855161045419936448512 3926087496645319150935511203315712 3771420066848754163942263162404864 -253660422994476624147526205883547648 6714316401897828761728064180715520 6983207497504911193230184032501760 -608841604087429020209842479259713536 5101775514150587881841318911016960 9056494535717312459271643278082048 -844066553592796035860835956881883136 4557646268582039446390168019271680 4493959457310815788723463868383232 -737903528274722922389495271183613952 9146719096994452038220551347503104 3864880686923352510668962533474304 -403504669073164828544789675425923072 239532076361383868959853329252352 3319064817603301839996184193662976 -92235075881405503851512077651804160 2985513715632729315607979027857408 9924849168108177542027927690936320 -906926703622168969489644188325642240 1316009067998466156727759462727680 112195735979348795999088493461504 -868522623297224030421342032855302144 9396939305249484227377532327952384 104702457119912921327653529583616 -338045081110923004336351627312103424 3655568054496835116768045628915712 6755658594260143252919202713960448 -280524383078426233007231793081876480 5328886000136176372291612270657536 9515416408711079295037142089072640 -911367544280146725477603254407790592 4024796498325950322930252840435712 2689344347517464339397570421850112 -455318544188375992213678323159531520 437032223971354395914979994763264 7051497599717351561387865641320448 -1673083853865152094052613149949952 9210597370592805948298549207760896 5374779278999444836229667033710592 -543807781512737156578773199411478528 4970013006108800156931864106369024 1960504481071308390671993098207232 -238845086856538977022317881771163648 8335684156655411940512255954649088 7345335535954142857059092756692992 -383075471766421991541541871751790592 9639898063141916715293891905978368 4491510040476394733656479480414208 -677560532859136973752932657010835456 8174289879249891199039151043248128 8838468162793281848479968267337728 -452600336750887868239926055367868416 1484522688861887745944201293987840 6454513889403377700789157158191104 -850189923089358340255807245691912192 2295553358648603457488187425816576 6772541769273154704136862796087296 -289030317347218650808369845310062592 5039448751040325149262477237682176 410642865504362668353062327812096 -589432668660377619882263896744001536 6802540724389853524285741965770752 4470770330747893305265331550289920 -309416824122662133840424876183126016 6041659549617839863446675012976640 5185134132645709538088916590002176 -556942867173892221734316441698566144 1040388836027690986323446757064704 6580404359370830753107446989848576 -961912891327284729080651734405087232 9738757089604369932285619950583808 3569396169125363625595485395353600 -128570494338495712694560276443299840 8357248752820367596904663473979392 2329886064371654544624347162607616 -714975720246613892240567112755576832 6354261120188318578010935189831680 1561089478987550002407816753577984 -960049687960867523172170272929218560 2986535469444658876097592381407232 139592897604649880748434938396672 -918861400189760988571026868968357888 1562650167621665309039052669845504 5073948201541935322028897059471360 -184434732140427550961266251752538112 2800530808204215163703230583537664 8229621818745959509841637363679232 -154650260585900682705086116601528320 5015752557610043478492590626570240 1993221819280348867239669070299136 -948401977183160480567770441129656320 9085617790655687117494233203736576 6639195981089610990870190866038784 -810176451287484988151732780132204544 6427126851526827291446678252421120 7628022202280136778849488002351104 -119252680058127788978923770533117952 1976006798714554226234488338251776 2939772203856778184959836765028352 -612192570630301774098057944671191040 1048608398093100617943004301230080 8747900999829843336934747858272256 -280507939511736369766982562015608832 9351533154317423456343333680447488 5866784105520767028499570055184384 -142818536790731099116119021353697280 8924677887535845633329979866480640 7444487187057134913922761729507328 -125728605820387292484253325807583232 9887402981471142322778202028638208 8627157488296034825275811660038144 -885302378915961228676596607819448320 1816479306253125517194892482183168 4956414093953393090609484499255296 -474661357990578574531369980743647232 6185711850563368193528243979026432 4685711084227823786475058282627072 -553397791623669573682403579508293632 6572616136436002244728382220664832 9589030153647784882479311278309376 -959073651973549052645802391250141184 3661323949670092976070416786259968 4578181945266743102300417299578880 -490230952873503059807756619840749568 1953739761962931088990966879617024 5832563470197005677636161344897024 -824647034522577702646579389179887616 8780853145983041678740468365524992 7830220039682308164090475889819648 -443605869299627656070864421972344832 5330350493962603360627965793665024 3228370902901029455806058217865216 -461008015532078757305975119510765568 6286614613380331551584274465423360 8646600878064203817705591457972224 -501659754720082192124873271903518720 4538858499933961991684375206428672 5647664254480560072761312270090240 -652425202394897573936115868399304704 9852267705990459954283504553951232 2874930404506013608271475155927040 -188655240911965193921873719280533504 9137202114361202238077939847528448 2427437437610904464010072383553536 -444444347453394382834558704023502848 8731400553024758021247862321446912 4936185539012089489455627253055488 -877212870540661323987924326964789248 9716392570148453663710106798260224 341617536775403824233288266940416 -958545134790024167986237682487394304 9173427575292779654336570449723392 7872375894124818583400711706378240 -17851107791886140968821346896183296 7709749755645517936249094029705216 1597058456838150800472642483650560 -535135734798966209744196626165006336 8810170758364546084354468383555584 8587704454416240239219297589657600 -395731954763636372132095127281729536 8638299371248834855659096609128448 4824155081783837099206955832967168 -811140348934927095856934374409764864 3597278172979551199109937868308480 7610510375665400776890089650257920 -246136317465952951900205004252774400 5414344753200110832351623870676992 2763819100531509147260279016390656 -839715295548103975489468793207390208 4167486136928168321227808512671744 4475855832869379523954500651974656 -122648296056606800858778034121998336 7891899497098889829024712649342976 5027798800362034336642963616038912 -750635022752214748498506534013108224 197745495323626174644279784243200 8362249652963789640156519356956672 -268230639742230358738380644230889472 1441176199026521137320334297399296 5691953694090810208553807479046144 -736083107289986343628841231971254272 3752119101859858351328756909473792 7201903456016505230548817219158016 -214265120454798622157763300523245568 4959095781327904183074860098912256 5078736854568727047292632657035264 -726018572170396024662744223541362688 4364672198229367497310811602288640 5970186050509508387729176317132800 -80639465364571638221648990807523328 6145804855365235785725437448028160 6226201232054914380686809303613440 -351720723224560178562497798700269568 7508789598781020156232238396080128 1322007622976158534437451851628544 -359790687850165075793773155915399168 7953321630237753603607600620896256 7843380499241809294226826909974528 -961484231553135628981846565613207552 320755183146584392381627400978432 1477273029223463252361375266111488 -777128219605977475932395033663111168 4748546771678367830514156932431872 1824020758492590343685651801571328 -785283232811197198485650069077884928 7838873668623877121562194596593664 862581357209403164830284300419072 -382263741885905591373517722241466368 7836274559988287133800249769852928 7436548750447188375440099601547264 -975935874787973331493654932421083136 8379416870071136931077473435648000 6864759552567045400489828284366848 -397873558771575808134495306636066816 5122064701073575350073842942869504 1246966104506146239029361795661824 -116444475189338682656600730879655936 7387799730967397446844684636782592 8624566758051285381092944876929024 -179886109559242108023223472680337408 8875016604193593920206833367121920 4575318443382081103912345538658304 -694887638005776224004124081796415488 5524500258957817443480143122137088 5728892414707004092506177351450624 -187211838273964260624359081396666368 3061986292748288926136428461555712 345135118577609649078329386467328 -946032067399748943284891748891885568 9337470712701408715282241327988736 4617938969334262599514889092333568 -30637052972768546470685042657984512 1111041967901223463621312464814080 6900841182602905270203660166496256 -134968194491447913391951562969972736 7585614912093066324816181977939968 301434147187848728471781997805568 -687450278214485334721512010523082752 5368834937887305608719612191440896 5583504315082328250240568429379584 -175721108393719970085196179020185600 4742535606146653762447523274817536 6301415204256568283107495224803328 -833736333700928126525725216664977408 9977666711457534389203203780509696 7696294253709464081757968745365504 -539051533864201860453763598564458496 4219213979915637477365915198685184 210403009668135708182852776493056 -353385007213097975684820194069315584 3417399512356616902235790306705408 8441700950785238334524233632186368 -744413056715691287354744794163183616 2064002605449687081747740455075840 888559548869227834054115825025024 -974181835509834192926203126531227648 2146985647591352095948426195238912 5594031808700785606706050394750976 -808086231690153366944238809768787968 2638010814806107538817973674311680 2381429864006254607233159150960640 -389217951179547054907609621395931136 1785796478706191389047732245102592 5657785183376613551747233247920128 -852478078462404438913399809386741760 4904061868312323135880504419549184 7878953874263080436537878187606016 -743571367658097777727941725218930688 9924814914701652020126232036245504 3148639557260531995003925005598720 -301929247864728914604257831343357952 3474449443051953358071258108919808 1395337305899849899995966197465088 -339412638172085694004019358972510208 1836373138996113020169454794833920 249374231521143798717905155129344 -891043697483483526887246758519242752 477080899448984004675333301207040 5883050011501490179571813586042880 -633183659762552297897641991150239744 6606864231023751002919710886985728 8231908990084796597297370510655488 -175418386142192007821890129382866944 3109217002085386418314780199616512 7259933911790435100903553657470976 -894845649065842297193125804156911616 2141823472130362527921103429435392 8451390994959603759598863992750080 -490308081239556834727046435072638976 8975725368727571858295064023269376 8578289911231565916744608827572224 -819826684299378021957166658278653952 2904126478251319941914427123564544 9957832013987650131831346396397568 -639066335941787266845067602315706368 5198162816257035827091610871529472 5554916736033384181519223814619136 -804541573717953535529902632360476672 9379575641443022479917255061667840 4068240328070480504547308050841600 -12102685151731551498347459561652224 1913520820310807915604806968803328 208776505181604991015689306243072 -650604751820209587446731149718585344 8958105419890671090019624508456960 8089367428355328221218526000578560 -766300928608343482802597356793495552 2594699849407605600788390069927936 6636727113460460821800920522162176 -316925722723714665613693299806175232 7638687191561289132430420116242432 6676396753997144291591975677722624 -550043911069208854413822418141315072 1098733959896362659819269484707840 53359999568475520349833210626048 -962849450142202152565253299626835968 4781572436644302701582644357890048 4042355563479426833408006614417408 -461785464913854894236580099473276928 6578777532509097701400125586276352 1832846455826167095007028728299520 -881206109434359006795240045501480960 2135224076266050111614575429287936 3079425107162172177680243485573120 -395589794811032531828524377566085120 9680756905327313896872844604735488 6713007575789462683744369134010368 -635647643252543798385327758590869504 7331705939334523402535954460704768 895946876041393851124638407458816 -757651300245618152385734635547525120 5810341676372685871194477420347392 1349002307798894850007134946459648 -336098779039043644815768893377216512 9637008419121776055572433066786816 2008699147598616212930701398376448 -173300728031544589198595918565212160 5701898368529841461910390634971136 992530478999414264969986943483904 -514733644148010333845122220700991488 3964309882173853664282302576852992 605520149399162810232639156387840 -514352734782604463016318453407547392 1508947531031163250150518758047744 9941309839842750741984700662808576 -229525425287493768556548735016894464 8588875040362136061804756097564672 4958482991503928103802308183195648 -792850342628240338140238614548709376 6616338502028936693894321939677184 5023423745692275852190483434438656 -395207716281916931440319906824847360 1680778513744012499536687409397760 170982027979853556805265965187072 -106629526467707364179503809598324736 4541298542176022818945210081345536 7080645039568910942613770793385984 -28926552877076384714739691949129728 5040667582487919663883948721700864 48084551747114792299562887282688 -592259746519108787563693078411739136 4956019591731570879187019718721536 8557995810610054134563764214693888 -696998199248746131242323037474783232 6842237653767692120582686708334592 4918670923135558159898387895287808 -345158795335668184243281684208812032 426941617170967421448942522466304 789730188990602060494229496397824 -225928273096721873790799619408527360 2828787582551849205118410134913024 7490425761050699435793268521041920 -185543491200313120495229167571304448 8642959955408283962283393762197504 4722919604589647709644138498490368 -172265842578700948774718773011677184 3182418453427929242327324836233216 5495228449766707552541558987292672 -434928401565868411268961107097681920 9756678041472652389855087650930688 8769196513121237742915114563010560 -867287773053518897232081115053817856 1695125990603473505456819764461568 7015327482490735502083468166168576 -651602951741516228688342437708431360 9462477748850098776814124183584768 7506133309042212466817463484416000 -506053544724732058728022691811426304 7297962170054707294222047848169472 308382849893061094033727961432064 -269167551114733387974497846008217600 3540425669922783565479411393232896 2732913070079696203301266678349824 -41390250301721028975983391875792896 7768201744519870191489685523529728 1677015071512439630017071220260864 -98387927316340466651558891321556992 2796656535923575401593256477196288 1724537958790210115344789288255488 -995948602185779035310104119588421632 7723054026182057654289130619666432 8280760416728845199845940745207808 -68017849445619762605032154362544128 6034994729345570384718910197858304 8753934133641673947050326886449152 -427905409672843734413823682824634368 7979741277067885478974347284578304 4222402024994458985185599329140736 -342981069365262450371246208090898432 6166061003052429360617074641076224 7125981928426705759349701049581568 -958726816235409312310306265479774208 7374264947614318577833942653599744 6789600287028976921759161979502592 -90080868875178603443949603808870400 284184635327637770676446171234304 6008297441670969739796010275700736 -560388851920208335115190096275439616 9496393548132784339507637559230464 2098771063650772660166753404321792 -906449117840743427404031224690245632 9660083358401719929974793615441920 1916824751932352205914606139342848 -923171167387206290235761435403616256 3399565406727167505928599508090880 5039389304153458680899749783011328 -829831190359575112161593845314748416 4614375555109757318230691981295616 4472814077863843675002476987154432 -61041390642172725867998081143799808 192159689797203190696486782369792 7347601356135563259392742410682368 -171779469062126787640203496063500288 4038312495553382480681039239839744 8289937124819675714740269621444608 -350686237714626268655139094498639872 6214287715510436424325516564103168 215840131960548901225960449245184 -584580786943861163841303697072062464 1982254853737386528384213583921152 4365961954226026363757755428241408 -13801168058526910249634840436539392 7827084185229895871045418405068800 3972953356686555461192974021427200 -820025446951115321604696290675916800 465392136169172025937120823607296 616997370068778305823824607707136 -673696515692347233608008223246254080 107984572413708417463625680158720 9850616233701828574488381777510400 -280110888221762796611117816758665216 4599063008242927378325160104820736 8193297680858033410027557885050880 -192849635680034965637959586171322368 6736499252691137841707404694126592 3373697827147194758542438961250304 -460587830955602555111999750692405248 1738234513311305823912861783556096 8022012873809773579848985941639168 -368415775151117505422078882953035776 3292922759414650042280242418024448 6840510404591701802730398748246016 -969368538908999193715279568964681728 29697249028097457774840323768320 8254646018907127089447134709153792 -862870621580963819769653784265883648 1974194712725021836036252098363392 2844858242190338887546466228764672 -124393770421243864559958632844754944 6702155681771972782112692913569792 4222738114920077075398101856944128 -83100442832334306130608678351405056 6898776752051031030079591679000576 918714226959392288946166870048768 -20605846489840649076568588214599680 1971910238451644340338983497105408 5556140329227135586473070699741184 -331916111162714933494886320545202176 1398724287535472875761415254704128 2174195336508200288614569237020672 -898543261340362028413033642253615104 7701539735542888960113005538836480 4638840872355352962543664555360256 -990886877455341038918000254698651648 5671122557561590185141376003342336 6228365147027348977217084367831040 -567041951314254015688036730139574272 912333909295178019613705232187392 8092098673703435417477796847419392 -756727910453130031303618047164547072 7799971777914390782727161301172224 141889119712433570281299183140864 -517973965366614505467054040551522304 1228177886105789210958838569631744 4717650647006089762546993757945856 -164989134032031457565092203267620864 6939704629184238879968786840027136 2301926105386186262018943354929152 -8219034984613683352506399631343616 9639107577407747557338136365236224 2519247606173679966894603445993472 -524569011955751273621848302723006464 4007538627993576230958680305041408 2038348344517936713914635773804544 -659842452107415445904031524419796992 6222118732956437497552638599757824 8568288000433909787386484898136064 -594126632347782684236529798477774848 4239550626398991269207875889659904 8732242137935071138379718811713536 -187345347897508365169638180346920960 2567823531828037178612855930355712 2464251463459932821902563074899968 -576001071848799179148261842495733760 708941281115250588907344280682496 5188502266795452327882892351897600 -970230905754447679934318189534511104 2031092464813917947909918523654144 564707297693260898741821751951360 -490959887230942826251392392137539584 2802026055564108896490212728766464 7382727404319638607156823428431872 -170645001156762094456664758318792704 5152643914838555965818855651016704 3387733156449717277738121394388992 -772157893647287619416784095575801856 250491708865606186420408888066048 8031820764801568443579642478067712 -72694784671752400540890260486225920 5380032706337694475646128034414592 8721116678627312262043771405860864 -523559636291740278042009670242009088 2864942783603441789990137250185216 6513889173102525083140659689291776 -644872982073290024576531719195197440 1059275970876488090822525665148928 4275311432687162120597215710806016 -183421165645240462392672907400577024 2733979027571653107360292543660032 7501278982958134853327806793777152 -754714697765936395692853534859984896 7719214297398828197107821765984256 564178902639574324884333148504064 -634919602171567940658447423507529728 3324329879212732155953251992207360 14817189445736050693992905441280 -33629672037257175972245877974630400 429761940809023459666681642614784 1242020207222020558742114074099712 -805598647190304766110265113860636672 8847110435344902311712435728285696 2745963250695981741831063368368128 -350041454360066382362652516041097216 647863002222556579642757376638976 3821819124873028518429920384253952 -860971628719481200875212307444006912 7940043027509127148229287290601472 1522560991044212462895945217998848 -509049751785764996952632769181122560 2126281618908696978307918961049600 334237132727053902660949304672256 -772169948256546147478241214048763904 5637533246329722683900406351790080 8040506088222720690605616711860224 -961200709848807491041710305668235264 9594114796102068430569365095579648 5691241826708786890462168015175680 -160372583487820848622532152671600640 1535943763161273145004462274772992 7724988115978118532156698545618944 -128489171771386432329566158225145856 1888284158116206756288025151406080 7688265411075608925358858298195968 -583908160078256252772820539089616896 5788114936565522794168200839823360 7521979480931629797080516702240768 -706636666873468507495928259665723392 6097237992689477308435568860856320 43615967206798516938131225182208 -168887808485342768830539268202954752 1973554468293671989515440046997504 224562324574773684444275945766912 -858370772115987888018441501184884736 7527281324194413291658782565203968 6334868694510189479642823510720512 -222005598300515872468314992374972416 6134656799893222011123096709234688 7378228916755818762363671620354048 -11333283729579122718659167433785344 7658706672383191787034619798355968 3495353687030774585574488656576512 -264987949531187376687957239134158848 4957758059158991755406782203166720 2528604334266171066445078682664960 -926469875258123839644779078932758528 3741331904616814765258548069793792 932096919245755792058585632997376 -48376151810156107855455897000083456 3151274075165559241043824330407936 9887125679868135463240032061489152 -787644391204753974288285401811517440 2698315246526472194211288339972096 1621020927013930712099574278782976 -102650148681704206790233511734280192 5121822171698630968470918569918464 3736145379924635358459815186661376 -699689809009238597334397209834160128 9064376337673278380544866784378880 2302727396404450883847889644158976 -504155125862478101516090155670175744 6440116173034979441517305261981696 8728713535931971343739529260433408 -849263825241947668043321250783690752 6155157765710094069736232741502976 2954748000785523577833204775649280 -690303084078488852050440429189988352 3126802148014110709487788705710080 5299192691577176578077720812978176 -539045012840952449351958366963892224 5252072075498396501661687402725376 6634909983186924277737412750213120 -982880934128853662155414316773277696 161388912351516361537457462706176 3191547961369159605785982809407488 -565888111260441943507702783148032000 5745548870075810268503763675250688 7515457826885998344458981752176640 -61920701448143819887195791116206080 2202130297011450774919487674122240 3795213112046778468451606524329984 -949161920110411215073057122352627712 7761968789908745438181838678917120 6021294811485734065249231461941248 -99754779727527821378362335870058496 6864593372708192868195063279124480 2082253642094793448296845978632192 -665283569392107025946658155500929024 1282141199551306516008534921969664 4704091557467573322544929086373888 -354049130045626930828881280924385280 4503866865007485930271332932517888 4041567814804057970076468371259392 -477225406226615297037027517183033344 7323605275699460059491135494553600 2956518951686269371105124567482368 -694969352540708411200450383036022784 857018895399424316275405969424384 6791125190211257581074766693924864 -900290879276042905967368575360434176 6457695676027464290873889395834880 3845357900570729362020980232290304 -68578739728913296977761019117961216 7669659938974277015466686086643712 86545713315606055450639155068928 -270692049358185282980632856524488704 4180199946685190869407907838951424 1244192258040790723451392637272064 -817639245417012908300586167341940736 4868459449934749554505775719645184 4733039449744459985104023670751232 -723662386088589815912651036366471168 9579405243790491160338195831324672 324347769708668364271652945526784 -814540976960330184622612286705500160 2709843294751808696738740738981888 9250251717323859064870247765901312 -669526222472643829296138996814970880 2236724410275442446409863555710976 5537705376606238698284732660056064 -539135618931836401520546864288497664 1402038516381012443819184408756224 9496857287853581635889854670700544 -663921335050144843282058092704956416 4970433338852339248079574197600256 4544971914572739145034283475795968 -292948999293827721555976076568559616 1845223205479556551290721927168000 4582016720358105236824643606675456 -437273318819261713155924098891644928 828145197365793787975302077480960 1007077652333503848258540369084416 -66123979492142370253752823353180160 6942073372299041194453302419390464 3984164289849233784290963976355840 -990942675663448179403007798747856896 9986488761466310894037307284783104 8715602047903483918401910844948480 -845326697398769406106687946799185920 1985628782775734165997925835997184 4833063856759195546697585687265280 -672975809480737528459172961004290048 5663665045683523596176328786706432 4335786918127551469558912696451072 -884250604397810126127558744829067264 5818391902448276669351943435452416 1115218569498989220453980120809472 -300649960556906347043783799853809664 6931268133430123849562915172515840 1940445088644578912552733879828480 -15253246170591670195593875189399552 5699788708864515684571662285537280 4304859393723188535144123413299200 -906673920730293345406174672835313664 8129017923606221805247519917080576 1160336903634834324601232636772352 -636496060814732347027773815047323648 6411948547494766086452411661025280 2377449595544377393328058628308992 -675289493352796969621428453312036864 2264172879888860308384010932846592 8875094652969424178341812971241472 -163236512959321252094239948868157440 1294433887571046183815201238810624 5273720708721706897852151543889920 -25384262677571105175787576481546240 5740271007570850193260748757532672 2440108601756710306043724946210816 -498160404703467163566537797544181760 2509185358141838105334065997545472 9630461563886777298574367212437504 -804732408951174954171467717593268224 270985941900173965459257122881536 1571923297646637698834032958111744 -543781915026308016953191948401770496 4698293882455126286906152714240000 4141149768842770474857429746057216 -232255096309770647573263081506078720 2398516694432454934532398583382016 707476592290701747447137010974720 -754750957744363809892588670439915520 6163560371874440969282926533410816 9996007956076011776290114999681024 -627664394004088449328815941517049856 1216540057840098861212158601986048 5739487231647893710459922617991168 -461738343559815177026276187357315072 8007033676757345258931386190921728 1354717233649586194277440962953216 -848378239084566714194894607913844736 9697566652119720750119532175032320 4604339765483769827921719350788096 -153256491220482478402590301216571392 552840319681716507386252458196992 7496172588588749820503990539911168 -863044133610809632640941985636548608 824056263284921676539085178535936 8212415564963052231644687756165120 -54494694986015656085962621431316480 3843661317388484845781108861698048 7214520929774908806726418146787328 -636914584883820454986958831393701888 6376669815696562061746019330162688 3778829248737811530025915440431104 -343662803548187196468670174377017344 4828363595830397801697240210735104 8492792373193815318892134474448896 -49058298516284219863638834623283200 7238379618954303616695308510035968 4894104965606490422802949901123584 -874817121565959977189650538537418752 7303821376553395326056318770348032 1104583645955147467096807750762496 -91089147456195720497097738381426688 8450358185610051869491316593262592 1976144536921753766404448803880960 -51162494387079167482235636026441728 240565384613796242446831826501632 6986332385407637930312804375461888 -15236097488730856012573412159389696 5609567610675490836548938838835200 7520227131919847217120096756432896 -195940566507344117512755020895879168 1439791582216944327692296394899456 5971177281122820840254048105922560 -871121288029541147334442304078348288 1749123703303058464467666459426816 3698178522717112583380537928843264 -889138942084457419044259344177692672 1541734040722334002729778742820864 6982410077885485639045807838593024 -551905808331022825972369509463359488 4269864522835051299410665535438848 4587458857702618362545223082442752 -335000730293319999036912394372644864 9054921357801426292658840493096960 5121775412144070075164639090442240 -471674858321489882493132992698908672 9347644231377358168714408875786240 1182885266944869573159438736424960 -71715161762957232831039308864421888 3175977470049503235991667107430400 6648033108539005673912229550882816 -700037699050254801683542894968832000 5997714664259568958500904175140864 3103298442344382331852938547298304 -66659912820579838088590583547297792 1184155530705245674224820500299776 8694001580351174747020985234358272 -112023613799127842723953662526226432 8843641917270043189316930232123392 1692577944359083718576469629206528 -671105700633138970187317430947151872 3442171455495165592366300499279872 8880400932550749835135630188740608 -445609817173227631133308223773212672 8345221382129546929373151385092096 8045807249950158423940039853473792 -552698623211611614222949636582146048 1493451129548775975086895925297152 9912278754756656412091905015283712 -936249577658639811975146413200769024 5667268538883275263961776519118848 1617065520499954569097379093413888 -537286086056749075474955294612652032 8344240649843179493349979183906816 4994821041656332212367239751401472 -789527028370176265388953161097543680 9361533675864903765621215514853376 6143435221903113342710107349188608 -331348090586717098755494575519825920 7651892501155419666638212192796672 8949362530026669057560139454742528 -849554992507918204211305866632101888 5117279491216219973555931121188864 7889960828189154636529404523577344 -901691794884338449264345355261050880 7755622461583673996193885602185216 6175673213367765483436880370335744 -804305935528186842631184863505416192 3129026770142311270861288270462976 6036000569176758170147970399338496 -301407205699132933660341867372347392 7731284715906761013067973702713344 4201393680696464804731062629433344 -559254379874832273286278340700798976 8772324038333391231058126124875776 5918055227160002356564948424851456 -358258729141419907135147844973887488 2598462831125461118228630140354560 5610444747650368752684920245059584 -736212564258575139324167487183912960 3685853308178291839631548827566080 1721526627233915236720295744110592 -271375265852167860394971805543038976 3636432781225372914808205980205056 5204205786779143498184655309373440 -511334401817817130011155566753218560 3362453544739162835660745543254016 2153208803881341586513372907569152 -370099485268509809698354421903130624 8066483383430398210359886314733568 1668793636712043132148309966192640 -871136120319366442812196922907951104 1257495266704228725730418962202624 9706240996781530805232189097115648 -184541129588169450123735584741523456 768060335039361945451941052022784 4465351853390199628539077276467200 -623441216282929753392560278857580544 7241585102350150819995486842257408 4197101843411205433411551874777088 -783520917536708569145294247333724160 1033931775954715552638447701196800 5733384433555898821460120597168128 -508835562289593271842040752103227392 5319089804775794218661199485075456 6704824637320211353845752844517376 -831867520992970220734002672722509824 2398950782831490682504979612172288 233583655038430521971113233219584 -120683563733395448958402829215596544 9917055417404537004148767443648512 7685072604250628797824541856366592 -699352238389629003001847856893001728 1158581805354598272830229044002816 3860920928422155033184043863638016 -114109024405933769602017092354179072 4256219709188086241058805803646976 1688532036572449927521858077327360 -800672238276910736653539988276772864 2597951926591793039039844270997504 7610805592965413177798513831968768 -478596325092795702375493250655977472 424981583289962885553244776431616 8508767383025643124798185497690112 -505369993308277109257178939343765504 769654701398858441934731837702144 4067419475746674725861663642222592 -924508852997244846499618760085733376 7220470124829541236868977153540096 5523892941647247948741232906207232 -415145050036325252308310479521972224 361927801631187850099131225735168 6491177196569604307283558981959680 -498641406575253260171481663850676224 2984894424809512622624460295372800 6505019688108667935888864855457792 -567571766787555071054771948590465024 5304519482723384334687421178314752 1136585388022468583688661219934208 -126341480268393661851684400812523520 2369562411667141142268630104276992 2309190882302582815866664739930112 -978991656214950591384114660236066816 5760743989197373605762240933265408 2595560278751386474286256723329024 -690324638133149955801569231691055104 8530182520776692202817358919630848 1664816783791899544505806330265600 -574989171990887588345608099797663744 3641338671655921732638109587210240 7894386251349129580237110812606464 -102529191140984121811789323819810816 8457359600815624600877956203544576 9182125945206378345078089100296192 -246269770654018514902472941675479040 5759458344091643902796281325551616 9916275818389356511389726902583296 -975116815863041881291549634021294080 4112649295443426792493632395935744 4068015040566226296211560399372288 -213710509053054507495260905545924608 6979696257040551768219101217947648 7754430981941665834499504284368896 -176077664409033145895356264093843456 4535049243750554378816500139032576 4448560946374646315117987745497088 -168192317015526218963316068696719360 3641164300695325449009313863434240 2254238157327532375399717473878016 -489302026125126353968806332341420032 7000447183416282256273150832541696 1500247432625920776472875535171584 -735598552082009849833359323638530048 5104773779295755916957274129563648 4043767700913223083923601425956864 -821830626957898832367230533043748864 1449840668588911180299455925583872 4323753843140262208955100799434752 -322614445401997531031025185040891904 5729880476979699660750741632450560 4004376060381152711112309790998528 -526264883568148455586425477351342080 6705053519946270487464774058639360 1770620325290350097295153370759168 -811368200787082596718153543540801536 3052847637341151315016637690675200 6783668791306337857975435770462208 -17909897917248553204849126087327744 1220271441775334508899515305558016 9874279358820400969151007458066432 -939821229720605564140401959060373504 7673407434940790882671733959032832 5428807594728343793970977435549696 -678301933883842729936501422554087424 9834420661326962286357837611270144 4037486261308307236900318268620800 -684945476177263011665127595420155904 6811787006168710622164976394043392 361210194615965057096615012073472 -19257640716809069483644914772213760 2195594825794102658183147651334144 5930803522106616470410667638128640 -204105667422428548188114522529071104 7184099440699657736149466452328448 8704344160188122704758599587987456 -379187138814577621771194030180270080 6771730323826024074668373851504640 9079701723824783624965801029664768 -508398384072458480825287848952332288 8701323127007653965579945009741824 6600543677964989842769044735787008 -900385825559030119129506735722594304 5083295875813067281810387009273856 8764613663071444394981815962566656 -637938373574694158614896344381259776 556788173739526114850421161852928 8287160948158028698669559918362624 -152349579655038381124279139005628416 5857786496404161817641882998538240 9338789326369472421409378877308928 -18245134814645617725644813686013952 9875234831609585820299117209845760 7838967223069727123882351093874688 -812147760764488213070667937451343872 1214458611095774047106842526482432 8926399736320099899498849164591104 -814866795077999159241851244308856832 8908841335835702909459664245620736 4322729040655767689929366863609856 -275473813695572011820187361344487424 6038551264940227020583949647740928 1764656381431113755706115089235968 -53038505328445680783889547707547648 661240697927284430823037222256640 1383955495544805176284055162847232 -389138631857125433603883035531411456 649367212811673341566476202541056 5077346467445834241570741262745600 -778568818183080292327778306582642688 3041271205475597608120643290660864 1062872045101977158574093627293696 -616346529158937552108346098917048320 2056317850449268656674675844186112 7239989570814515451092305648287744 -706887579931410860149524141657030656 2780523669368327279701303196909568 5846672795692246301366627619307520 -403941488137631342459265139255279616 1385574286309575482800258766864384 2644327326043196197580534754312192 -986261418185261436997542676877279232 9465554402012562438847556118118400 5564662496886704202255113719382016 -400222096531732014964166027741495296 3779583038754152141640882840403968 224614843681210345171565921959936 -473468526283092643653719147528847360 8675660972774070987355278312210432 2741494638527962266604844315836416 -137232014759386488617495274467622912 146389966704449154769389774438400 2350834456775097958960912595419136 -949229088512662773597772632847024128 2543512942958587686483863919394816 1773776441054113300955708430221312 -178671324159121459397669983747047424 6051985199197860582446759019544576 6460844687483140835096426495082496 -156922586876790990486411098644807680 9261089591618470479810994410356736 8219244329990644663271276352110592 -879234074752000144653338439285997568 6673775164364729123722975625871360 1425490886434920060738111082070016 -341961566276212831007651984633233408 9246986392544274579458391088824320 3467803020513286365447681162084352 -203012469532539569458775369652895744 3362559952283537630240472867799040 9853177403216952725009049159991296 -983649903402813853048554157860978688 2430151213961869659778654400413696 9045245219786713440663383654268928 -538833898687718025521157409670692864 3092676517746608943966672451010560 9779217628842562842673485153566720 -363479913872709056094892879679324160 9880591445948598913502126622638080 8585047219074705246924997469929472 -67248115556066458165040617671884800 1284995352867112248557684660371456 2692068057275667998332356946558976 -486026201263665172073361147418378240 96668312395485064498399095554048 5607432958632769816277642169548800 -120826693183190251636115576128012288 122102782911676191880919577001984 4064969392638973804573042166202368 -186478307317487789492415116439715840 4964853573811439201504198723108864 9575435832815701272745772096421888 -65849712171249849481710562338406400 4343006177287823786987399520714752 2055377930876485230836083024986112 -348265798156964816319929857188298752 120659532784268707361499295776768 2421287872255324053170748689219584 -457569250634036268977062985984901120 3810707605457450661558428108849152 215210005173122384914095364112384 -23188995287349797863911442213765120 1210237362170526376666146285813760 984614641606135342589557432385536 -718473886224413561237065160726675456 747226014751473186619332315054080 4932434721148390392110506156490752 -556864406017967894033466393247088640 5460772932772921781262456746672128 3508398312250546236812091434467328 -648982480077744068870120150113714176 6141345476598647037519256510005248 2490315489739019449367294505910272 -804331959510889881563122311553351680 7998469819850724009790750790254592 4092801179955311765987461408227328 -316193970200402905539728055514169344 8231195190055767327910413738180608 101240892848987370376429398130688 -749749919193293453238836149960572928 9102395310333125966791203759325184 800210780259370406466509260980224 -10539820169297913539103923810336768 5482975466144021983782741324333056 1193453731569517063326843011072 -215122239566446431023084831913279488 8182610566687780568398313883172864 7067415853622948207939479794614272 -275605451495306773156328448024641536 2463793626086142004201664546865152 7802464125950290542921960929624064 -590333491350764783752991236618715136 4516504489566427509518890816241664 9912386140188074007422915802300416 -198382764231132870609237151794069504 387690085035730809778737711677440 3605432777255547708980817890902016 -158036698261411693849831833295912960 8526044607455783199201047980539904 2410219913373572170932776847015936 -23162922539318878437544318560370688 8226116767667077764011874991472640 1345175508892475510936784385081344 -712963271870077502687954702998437888 7439362832496772205906052836753408 7605046764287016042894094076215296 -827188518721457040579213785735102464 8829985607490415390296240423960576 2441039751494194227698999660380160 -189200146301769085605218964530528256 3072483445800615209106317883998208 6988218805383142862927431276167168 -630286169012456387378351078775980032 226496099704659810666283687477248 2132001542945224032063055976202240 -686576380148479653804942416842588160 9095892672592008076331984999153664 7665243167429762310481258179723264 -206621679862709201678841740133400576 3717334112555330852691952778870784 9435429194059888896367712777797632 -14644268261270567558278723095494656 2138142026851742292419791342796800 1744377221559914876144576138051584 -34867409607282956110246628665851904 2682085299472828689112545663909888 2745083679118821394563965546135552 -571630645462190041631427857041326080 173176756241788531117777395646464 8383539583230962536445070681309184 -141916297274919228270192880391290880 4569687278312716121686322645565440 1519852991111389275353647564193792 -287030792016336375481267442002427904 7322096631844212556151011915333632 9461248485092406648712506795622400 -143081497557912970599736746402906112 1264336875673109093145753216352256 4458709549451488733772735955599360 -965184802929755667876483559166312448 1683797354866706521172873557573632 7813113245744669220039712191807488 -858551636955249129895553901799669760 7239936784588283954432741598035968 5942277830793971850708797798481920 -21136725460849340623124506999783424 4633310645369371214042575784640512 7929144137497400128212261358534656 -460429154745721062643885567455002624 1604389700462191392427608079597568 768027262071040470416901059641344 -265898628669509912017084326204145664 2898273599276628101594005668626432 6760172077829685192293003934302208 -123368494364492832771428239406006272 5943572502093355376887130438500352 2083187507368202683607798882762752 -43167267359964669294862805279703040 5775708400504271183124952548114432 8593905088267847727763775301877760 -956954695428448867030342522250461184 3718960357631093416101514450042880 2799095213490748972269356103761920 -775404768704295813422831817017262080 9873331209756731993743818642948096 1361037955526979001236693098430464 -638391384709060177100985995974672384 6060749378859048995850947523510272 9963842049679952822609246804770816 -359462044971541177939025891617144832 4779827537286900179587803417411584 3534892779603869518683635078660096 -835877434859963552156314900166082560 5853320094764383934776850627166208 697680501336305624538705517608960 -367910347543586783139524688172023808 6270793364799046461092635082752000 6541183235266783837085654849683456 -317422648143368944359582801156112384 3499277663132550710040367711911936 9491112274742700531086795602919424 -285858331704699879958730597726158848 1524851525721790449483660757303296 4996302639214930285177488667574272 -168202485535741969959199480808996864 6486274517525426947357059525378048 8586575306015657812194917114445824 -717927117900695296674817115135410176 38907427636534501505673417719808 6020371139030334941655395704242176 -658153108418286758059671151645294592 2222413976084302866450020164435968 1209028830999339713513295993372672 -97208363541943696159444620592283648 2494539851749477406200339869204480 5970948723924375858291098634944512 -733541362544162267143051582801707008 7091373035522007050593858689695744 4150344968311751583748094001414144 -851143644546434192713868568466292736 5574548364532659367731279125544960 7038671684224309908305913143361536 -683445228698428535398354944484442112 6820971759513742900449069376733184 6163702701404964542502479727689728 -584049546365112645761879568164061184 7272240578091497730524428458000384 8281433103191965159118129390944256 -753131635748908323947370913359462400 2842568705318480642738514240208896 2815319965912220380978821845745664 -866735504119205757907705734478430208 6643359480939519382643713444413440 2725163949837272779376741907955712 -560705702726394183199506546714214400 471349109358211527652357938610176 7771818827608899587127257493143552 -854778324790003070775061035039588352 5499086672980503203858804021133312 6741154201623374440891528882683904 -167356059568338561695443855739977728 8538742318995379897911386113572864 1917220225780403232225626328924160 -165201318278056509438653944364531712 5783605355074939109752925860134912 2697154022963285728088622209433600 -452882708306623017014054320701702144 597040180650944693586498112454656 4409283950586861779679390080172032 -201104064181475560761903957929885696 3972355380235814865571170192719872 5263186755545564884897988081614848 -948549898148627374795116777368977408 6367466019867525006178025864167424 9396179573048780660950900802584576 -357901852773803983431639533514391552 6510588888805778445244748575801344 7363890050070262614404284630958080 -539740079832727394711098490787725312 2644456495518045684090530567290880 7129529691133649308504454655377408 -443122299539015716679664806368641024 2653358041860652194549671867187200 4280029285489552754016316498640896 -824374607895279583136351118583398400 1132062773853284628652684537233408 4687153890707778556438908967583744 -222007792016891396332302168011833344 8141367751287625955673304440242176 2731949103732245702100759202496512 -403504257320093188238153209434079232 6130107012050311927164628168081408 4265397296864797808732610811133952 -313134055757731896049811832438784000 5032769429008583121413610709975040 7892720090011928282615086695055360 -224120912258792471174426840411406336 5352830904617853745930244592762880 2265484719333063129196229023498240 -56440720865713041350667353578274816 7843137268412843651503460485955584 2166198070134086562235289228541952 -901183544970924364706088670654889984 335886416010323859210195238387712 9572842248896509443726578857017344 -726401975819231894942180952625905664 9876234782907616903021403438055424 9454470099316468022710225785061376 -424564708875906763372231940502454272 9791995831469294553340152287068160 9442108428551908251996110362509312 -897872247901757277121058914919514112 3237892619652733712028194381496320 3781433504459191068361668706697216 -35830103430661132187317158543360000 6969657360434180580110962639503360 7448658991572014700024327990935552 -251546666797853212481709505781956608 1381289327654163892208777218228224 7702368488877553130644958764597248 -639014637469023222094342234151321600 3308065671043537923958819163996160 3903806249829307440459421256253440 -213878627967923954483779170568503296 6653778370299215604519972896768000 1812194405905534107018337057767424 -711725334633532715557022287832023040 889928332976971987324905692594176 8492917345842212739022993055809536 -128599075940126006703671943872118784 5174283914916872709875383509450752 6970939835595093053013546506387456 -567531309687804898354800444250783744 836305010087814043707448630444032 6876355525819463034983664563781632 -902007642912983289851899921542676480 4091243539993761417892346074234880 7938378023639036779845085642620928 -895445651993529824384493810823987200 9433381575545100611907501852459008 8228422493348500130649657917308928 -202652573342656757820182280047427584 7841479755638687568924866252898304 6040058230902623987026623371149312 -304622814559652544978906977079918592 9491335307224748507228498093408256 4190443800415209557834545802248192 -659544554796586437958902984078262272 7688186339918768344335975234666496 718489804671512594555872150028288 -699871862027326456738255612409806848 8252140974381684753609873860591616 5834505858553211361238589779214336 -524826373041419058146234330886701056 3143638830592355526870691078995968 1336191081354423691212836093034496 -888184543577481844295961140631961600 3072543672523986880841686177546240 8770359357717666649342699324309504 -352720178800202282963698248585314304 8218063911991085996248764558344192 9705834123497779016901830232768512 -70416359540842531365319887793684480 5215292223225194757292537161973760 8876297683999501678592982750593024 -818609483131366265349238333961666560 9323756802746397496295988360380416 4142007465784362387967729708564480 -46101737773828405404963008088637440 5490005178757905488672234791763968 9443182442059504842274734115651584 -168672881058845442295534192538157056 7661664823216383490559469946929152 7817556203918631837877404084207616 -430327870880437592971876943280472064 705642160390444495261388404424704 4951687683180090326360252840148992 -67019763310078295754259921897521152 7798203352208060504799656938569728 3029991463043345766040142717386752 -333508442903479603240860549193400320 6495035287749707458400705862172672 548341336267449005135899893170176 -647493386566489381494679140151853056 4965993317235930353062027097800704 8834939282908946989234661646925824 -354550042794863006551477252555538432 4468279084923703641027919040479232 7759090496173724378263438697168896 -911526658928367176683979766702800896 3244605619409856785613427702759424 427572672694854927777464911396864 -817129658268780748902163496132673536 5737314287429391419959930630701056 1938915686179321117605487259418624 -138605393713838295810555507562774528 8966003287779747362890850953592832 1322059000033532946532651442896896 -615950854979215305221607167566544896 822376743841507397792168373387264 5610408076507831652143400468086784 -875991018488269986949666761709977600 4987964339984769068758457366085632 8685603290837319813327912781742080 -211789573394290878657753622918463488 6570877440277929195502039394680832 1164905433109426479986798281883648 -256219368412692647287049177698140160 9472228403483268764543239946502144 5921044681028318677270190190755840 -986861647159799025519771033274417152 4715384994195090076121039795912704 9794833823603238454197133749780480 -307576752197548118369272955410579456 5139214237319393555381297109532672 946928480020474469462806024421376 -874288169474235306291195489697136640 2937605854282064616062959105343488 6020044109030900273962052424302592 -890596925820429331883661850885226496 6821265457134085021017212329132032 8362062481107660138477262693466112 -106997619368269206315944909836648448 7020649568594403032458513352753152 5047009119834928553199845909725184 -768755879766415088591157337872400384 3942595684799867924015756666208256 7791150742577598819326214455427072 -587908452129122943410643255766810624 1966384707194973520300597202386944 792789282563789340786980905025536 -3005250143127933020973376502497280 6072938898348491075883467148361728 7021130203235399351870663272955904 -178326604536626664123648524190482432 3418908826985769361686161308778496 2666764220658589283307417723994112 -801065771035724927721835067040858112 9147504805564414472316694795649024 7574814649887108555520582015254528 -440227353377941091196821357807534080 74623462272557891477536417775616 1755836730687885701688007428407296 -823834839823390920467482751166054400 4230103972714985844848808540766208 3446942149779194896793676025954304 -221234523646005145444716779860393984 465603136830753920455981356023808 3019560804326367108351852850184192 -29119453005543044097440900559405056 4894493557772280085858973145628672 7031123603608524743292620218826752 -84807257705762334838635305262645248 2545574440005324668618516870463488 3508019880618447440606537109733376 -967234878734944406334876417343356928 4938635247541595673332649472032768 928362237988625495339295613911040 -505685167351965578831933848963514368 1122725587147657312584863104106496 9989712722426459203589652537671680 -744059441397233727397969594882719744 6775077499711018917923891867287552 4016252684761464869537239999184896 -681701614652374966295706700397674496 9522241302339833235479912893120512 2974040320263784010935358910889984 -89492692824959440149705985571684352 5159884057089490673256728685969408 3440806157446626549461955005906944 -666579212395990105768346641621843968 5196255765048599751220675414589440 958866735636400735301492633763840 -64854599242782585480609666070216704 2686255028545571524428110378303488 8661366494005230292599777999716352 -621660494522109584431131331334766592 4880008603720588363568723527729152 4970206766503892944542556529623040 -352525420038092070406926420693483520 2114223728071675091181642260152320 5063523409835234062623199782240256 -616921189454092946686041175130898432 191651313510362804256000341704704 3598151811529588474455146327179264 -960137843318570311636012036144496640 9725822533067624251011067136704512 1312590471713958799786410082566144 -123385217798180291477970020057743360 3778409970659597683177114759593984 6805613989638287435461308509585408 -625333013975947549552993344224755712 7641422563218377055080168783085568 689995815405145735055965039886336 -975511962514051684423406434113290240 2392694975697755847210556052209664 18599202886157015213416124514304 -525449264963773981458257781362524160 9657719131436156668471551532728320 6151131558971719717193164263522304 -830184864408323254386436583351910400 6956291605957782411690899994050560 3830788485731901812158024187379712 -161530458256539008565272038126649344 4975094463356202885779345763205120 7027570684658552337135035714895872 -856286381151705020906978457707085824 5423019627444896342788416817070080 9949806367322114293965394194464768 -51016955764476334001279478106423296 7693470083247861646674026538467328 7116103278652065184535942719864832 -538473661285216028740625270050914304 3399609229724175252875486498390016 4060631457415821495471486110007296 -186866330110616424926877325677559808 863400894008901984456344822874112 2431318553184663214679725854162944 -455490246189646727462726601898196992 2466935006703166845654877731815424 928923088887934624053684825227264 -180290426863069223171491223180410880 8514616829592338268584873868394496 8812909998368057474509186344681472 -568464266401204366972455581757997056 9592806556436284175120080387964928 9483098772012644748748234589995008 -615903627044365207330250736703373312 1029098035005402511522104019517440 4823476753988678043901411048030208 -701651132607303708659977488487677952 7950105286302407797310786975563776 9763786246509819281766296036835328 -23053415553481403217266753534951424 8272827750432214080996379805614080 8934627710508879962234647119659008 -720494100848376717107240994422652928 9895854809420027487025362508972032 528002055683066415611111008108544 -213817706546875314138540266041114624 6081803960837653819281622175842304 8185928782099584310573972812988416 -36319075966276124172272390914441216 6445364754139761659756008899084288 4023322195416949860790789252055040 -879178099117694162483300814634876928 9884058257054689233930046654119936 6894750038700768287003321183502336 -420910051964318905139599557049450496 4910473080700935956292715291869184 6199975340963264535154856759918592 -869127495181055021324755951694118912 3433404466653503469183910142803968 2204541065562358661939629614170112 -676606838697200672765986373571182592 2502589876722118177373700128505856 9175916081005755729653174074605568 -975858827392530009002429060466343936 233182631898690395521231358001152 2170262659640382186749379678830592 -501493431568554352008671088003252224 2223398711803201293857108311146496 5484993071124491386343490469232640 -299054299681602124198279680565968896 7675459729266213154566167272095744 7976357325634363469230062075641856 -175497467767861141345899633098883072 2087548860033670186879545975504896 4138198496639426263830232651792384 -81498839377956994274994574348779520 5005910938138086061026219246223360 8986774563006552298471995541028864 -196188558958615464500341929974693888 180737631648278199889323966332928 7718951955016600538546923408195584 -481028971075714596204201111571136512 2034218531706633765733038112636928 6097936360774359441652896921288704 -121941729134749279781505025211105280 3042908200580047308133180414885888 1634066293681066056705628769878016 -401238485637738545434718302633984000 5559119347732937540637061153816576 1842962794847109489456880331784192 -517102385537843931736326972819636224 9483218801730612769051844406149120 1335463243132051077928864555466752 -269441552368666101158817186898247680 3743344680230081258064556807159808 1182944824342548804952518733856768 -439657202726001326100657167384182784 4527850480737109139529889040302080 1527964469343773344818343857618944 -380086715815591756778181002522525696 3219105495755057395580609576828928 6457285935255418900580778706468864 -243776265510480624815501261712392192 9838883100975769746747257784369152 3292017983595710825722279014432768 -24329258705672120736428263963885568 7073552822238357857317911437246464 4520253634193889133585469573955584 -90751961904390189785141956432625664 9677449482989949559080248556912640 1157430396978811724988668077670400 -958024466974671798938408979999490048 9056524595349798056169288681652224 9203329282540663528292469138522112 -43323826074197673109632299154014208 8309436937377434780492163138453504 8093885543241537778811434218553344 -357957892208803079343641328044998656 2191697670310736509076402201427968 5658810314341134940264878210809856 -239462485068317776549232240744202240 236984746989067554627785188179968 5579695847892665147174356659470336 -416993248901797633280339758278508544 9600583848158154190322800946839552 2320928555753174448231339807211520 -179324043677415526954384877965803520 1965067132774184648484380068544512 8567371840597320795257924118118400 -323806783310733757634409436876374016 7623999157777550416150534643777536 9670692801426748815794991947317248 -627049663217250415326732016355901440 376633711274578658037874963775488 1917190083264808026726419499319296 -720542770448719752292778407062667264 7360565950781917538983768458526720 9469023010679558104220874448044032 -161861732054550165014232826820689920 7925885933892167101891815749451776 2587519989135448874743467561975808 -415617891542726323558017878680666112 6478840796063667926578101307310080 6959593311789021520460316063825920 -279416243718153716022189716618084352 1569794920924920142945971261669376 2241875835707745166064587020173312 -547734515254045279836644916747829248 8336159283446272883222414333313024 9296711652736481301669706997956608 -831537107046396220913717843530350592 266484198456013483301418295099392 528072290987761170293032851865600 -198291811407614747274490268637724672 4281201972901086462936054451142656 3800002644659449517112561342873600 -352527076710404875622600196050911232 6174859508241814405233934140964864 7594721203694931521088754670370816 -330870041221948601581029914484670464 4564218998832723181710851484680192 8012176266337502224302742473539584 -602197076041708362705094604882968576 838678412146985978318357717319680 3936475139829499428684662566813696 -536213074771296450258140368493084672 4030488003681913466964152384749568 2781901143480674478735253254963200 -909406382318366476275382569012297728 1575192404837125631156467433209856 6744243278050764442188735519391744 -915279072618663848138287365379588096 4264888179130593692894875638300672 229932335409141052603585058045952 -367686434865557348789723158292725760 5435123858764316575442377591750656 5861196098779329696321112993955840 -691892503957800890175645748360642560 3957575383807568113083137096941568 2175080286954216806680152034508800 -603173230724935092648425028407263232 5585249699528738128962173093806080 9055722499919735055786176279478272 -799601443558025738500197818583482368 4744426424051559923734264707809280 5490170531233874307004156587540480 -719917782500904936828513972282982400 3753751920056532061299508435222528 7879138065067690422642626971828224 -589397910313060820125604746029432832 4397995909594465708324781301956608 265199769125216799514449286266880 -117125246165219334805549167662858240 1902509876766056247198799269724160 1347145064817582031905214185865216 -804207181796888050669735393238188032 9450844930979896737277889260552192 5189948189413028949153426836553728 -769028644076193183850464522084024320 6555727969341980807927945859432448 734174649040369528797655914774528 -773911434681729162716482092511789056 7713211918568677856417147017756672 7159635611005400812810047911362560 -156698843344937586743917318869352448 7222968930818925307769390045855744 7025737394807356180659872886423552 -955146609995036023337004323206856704 8199642286796285640059936502185984 6391600125549300964362228166819840 -726768338442085051633837342581587968 9149866881913755802965616099328000 5635926622471522668236665612402688 -636749068213194821041531627801411584 4926456430534461066391398322798592 6609445620408667512760205158907904 -664845764880276252775805578295377920 4165746114484348948960167260585984 1169034906679263771155522679472128 -703221702346865862412538541271678976 9669122910071318510693160241332224 1606218457297881678655471241658368 -860177849251844369255917006062878720 2622730332340440832877132154667008 3794004999947754208962163561725952 -785569812833221268115174257779015680 5859706591052635078157037408878592 8308285214335473300861056893059072 -437272607413943873034899316310802432 9615364492389215951826385941561344 8246560544671706339517434137935872 -277316680021557789523878293434007552 7100552456096349296616898016837632 2529785355574577508576898530148352 -803497416856433489419966678699081728 1378918790030871832918464141459456 9599645954876923382519792188522496 -75570506825562773227868793748848640 9967817126562071522652038132400128 4078291867515192051418283821236224 -36212770529175013809501128601108480 8922655755644692913889848105893888 5914853366513663665722398999576576 -763952117416012942303110891485265920 1810365110329629059037315412787200 5382803980062256829980607848120320 -430388339758173360957167264300269568 1414937936872940561958983063044096 5912169694289152741909586990071808 -695185012842711879209678766988066816 6889071805515495077080973237551104 2937709107299673743488804290822144 -190191528307587793410187109335040000 5398625517286214331446445777879040 6641649984746731565558909951279104 -304269795785679854745310595649634304 516854190552562727550409181757440 7212828198072825552411508328103936 -73035529544958877435121153215561728 8109112249384279315998071089790976 861424282926288380999108044783616 -872175526005843156428744626353995776 3988471172290793530103642443481088 7650360711634264003987950712913920 -671393282357636657134966216209727488 3471583101306700768434037563850752 1063445098244584361502979014000640 -919327719132649363531380689221976064 6081665488892116367197956797890560 2793868645160051971137722441007104 -157225041681355352539079209929146368 4552126369500168127725739253432320 22467061707278675955105585430528 -916494153226083248306599712356564992 1037496404349953327174582083256320 6186242489877825886996111441264640 -725955493683201908328897980158443520 5700839472300216355435909935529984 9323804449595862917993481558294528 -309540178416156235919713790163156992 9532967259791720954164665013764096 9393950267400919754227679745802240 -89013139374008619998406933125005312 9455519889521740109363602096390144 4344854814751844522517106280890368 -524066946458174457316812992727220224 3221358338513286286909337050808320 8384055284847520333359847917486080 -425518114730563100686925756798861312 1244787216499082521432082436063232 60343896626325845634241571848192 -838413156826235443873171652497899520 2316635260148477694822313231384576 2316658860223277482309772531204096 -865311019706335566294238814669897728 3040447834062202326223014324076544 9892010945170580302867562590371840 -476110596931778544815243520389414912 4991828110886052249452397207748608 9013564519436295880803144957952000 -113699791835706806643475312963223552 6333924272602016776797501805035520 6478001455414124848192713106915328 -404855629676571056213624203939676160 9683661327383961824537453992607744 4205214130556010953706391553966080 -895670653939726147405198272984252416 9568671508204197090656705981710336 5907997955791119782368822108880896 -411054456761900195329596393659564032 9606203923957366090702598971588608 4516784190434983396333808930258944 -940081199950536170939314324069416960 4764044586986225253761051741126656 412549916712799969203096429527040 -49578063234886482472349016692621312 4206814738503980594689690717650944 1164090938989731324327752982593536 -849563521076126107914268866928181248 9939979776140192739569173570519040 2218646349235928801894623879364608 -81275984532943602266584214423994368 4024165930943483179394709611085824 3424286041877599022517541559861248 -265194707847081230035509489378000896 1234049769175343165637466775355392 5972444700365993286451373568688128 -432124167001420138161311028307034112 1918688987106739871277816767053824 242750727521932669806592753926144 -251819967381562273115091474363449344 625118906033066620451354268663808 8881413477536538385022216881307648 -285499514352825885940697618263834624 6365078369354824285367051845894144 7279742775686188031332069536694272 -254762138557219761881503361723793408 6420242784235827154245132635602944 9260030758353277176218466593538048 -365678032243957111281675727181709312 6361660382483989274515560632156160 707126758919239024674625288142848 -846786786515291781289572530095390720 665451555983988283278051741007872 4717687113993266712341953860599808 -237335663814743956139058204430565376 3831535549070763507812788319813632 8995807461724543418324202473652224 -197627232806569679323412460333957120 5439788699662237409952677878562816 8015344251207925154334043998781440 -259032354976867841127455497423683584 4829678703364592203275096494702592 4883310539730693170318995596771328 -101962897472815596953720845380878336 7393223685495110195262735823929344 1050190133979897474234057198927872 -973004652233102229047138688358678528 2633488249787504601883088733077504 8967693093685718275979963581595648 -959421276252541353789412896734707712 9513891982908778481611297387446272 6486499711385133047800659666010112 -27066041775667985570944089451397120 380245803886797549184610432188416 8701415694409220707798290979094528 -500245120930196158745377733081038848 4062586175392401951681027915120640 1979946039546045321153349899255808 -29139823326324831019500569968508928 3976543570006593142794380264865792 5337391562966433053913701293228032 -88613568495341420126105975836901376 616443907463615904478684766011392 6180223409521400480574486687514624 -691027845400125279435081762362884096 3720114117726049183592928509952000 1346021772665835909799454850416640 -601465291313114039920867129774047232 670112586843303092509735416496128 892728252508548493337066251223040 -627843410174668604609508646204735488 3617494709914240656343318904438784 8590653732612345312470035815464960 -117206809189088743536322625614643200 8421839171681975277993399439851520 7209947770587848802444061433659392 -137972174090054246552118573748191232 9747577325185980615976574324310016 1591330203561364365354707242188800 -561167759382846250742984833421541376 2182836870664870352775176572108800 9380151129187908078751990740418560 -504867334331158774506402035607273472 2876675587849475477621607126532096 2623944391280438804954137545932800 -517394910128817042251389045894545408 6717998539473231816611924314947584 9681525602361439829412964512825344 -403813062621726981365079157455716352 7644603216950638973579576184143872 6398128897716873464082344114651136 -362234845878264497863500219853832192 1218990365021839180118829054296064 7580696573822302027766244518658048 -161457044558024505567343786011394048 1245492085583205556590753464975360 7494878330256698506516180158644224 -250820458130449193969965825697775616 8647388232242700137905921900675072 3049935266727264179072507901378560 -394747720685634847900663295372165120 8408683380224085812601037827080192 1349995256142413739099049829597184 -664486982493692388267120792396890112 7659314064867847414763353853132800 7440073986059136570725100538560512 -212298390711850805973804855762878464 8751628834741441927258519229169664 3299345865485210864328330451091456 -464200440655828005289572544817397760 4874566182390015890492853021835264 5755905629297030494463751889092608 -551990092760240036151410967013490688 4434422313455721134227409258676224 6896477766860942255292951209967616 -360354275148350912547271649917927424 6148943379255405812736861044473856 1710641001683850928208193850966016 -330107838948012973073182127967698944 7097497886381429012487988043579392 1993169915692411429425796586930176 -828335520464660563296248530783436800 7941913602573146967876240186277888 1448287853337950966570549633875968 -184668370760322335136339552018366464 5556945284436462948599674305511424 3479191508395229995825020253765632 -777849485246646329281047101779738624 1592457661859446537059785332752384 4899937111994676077598663881261056 -588636767862017158164459918561640448 3362088696891515178714132281032704 2296198634998317748109488236265472 -132501118793537778777655108224155648 3543995321079147342378140530900992 1163127308831334338765031789821952 -682927553410203465921007833388679168 8529980030539642631501734205194240 2457642726735789488866295625547776 -174403467537081288197670370325561344 9239163902389069332051205296226304 3572256057417755841494198404513792 -981069785017989236515777555701170176 247965848870547299852141740425216 5499863079079774790077516387188736 -233375498386102588203307942027460608 8203184428089869051822447119040512 3569290865240908993182907026636800 -664031216833887969657916399047147520 3802916903426375082215388443836416 9089081698936757926094813085564928 -547301019033971432149288802154708992 4249702020185841963973988459741184 5936873753842175680835246318682112 -181693465182092419774192619479891968 1881816588954848959732245029978112 9348744976515428537157421633634304 -415847909655858165896895302215925760 1649204085851865669141743206924288 5469395401474495968122963467698176 -743427623723769068706943992277762048 2105586169719830990078714767736832 8000500059960506836738085719375872 -569963124654689564447216100851056640 1865267839788457720107943747125248 8387667032113445825979022340784128 -238793476254404357037603584879886336 5052006601384205693505146380615680 2542974382714597254214592917143552 -175315456310146341056568258786754560 9968415674037344107281015608705024 8805037451336399855297925425922048 -547707808236231637581340192402309120 2491986291550127671637448079704064 8255974398612011425136542591483904 -385096898189535658305676051526713344 4032530099084502209082423045521408 3336512661263254514891973051023360 -504065310767518861411232213635170304 6432548159587872829453811155206144 2919008926337792466952987789492224 -399609565286220754943985791845531648 2046300100844952850020556477562880 1380555040635544257035581813424128 -971066879499562268249340538695712768 4753006776724894589154717599793152 3135920492959317112466930539692032 -250522038345726870178751577625460736 2944094988069428834489711248539648 4559155572449753983010705239965696 -609217870543541710018389568626098176 8770503296071785826749080137629696 1851037563547812930763234660581376 -697686760702249307180654944392839168 9990328140246635330224028334948352 7778842455243292020018164113866752 -879063810741406614807592152269324288 476903885074132796125894349422592 4423643147653025788577529943031808 -965386318726927787161769762751512576 3651365332286467985413539215966208 1387085836042258098107323296776192 -693846041057995252335489840230432768 7363702812197287439085731194077184 5363559104726312310499901377085440 -401889848440902013429427883961483264 5830299028504327207778186128523264 9711643065912234890820599429464064 -199484236577108239391372710315556864 2150984479553051589621589741666304 7142066078205096743762293784838144 -398734331670336843766305559941218304 9323460251451612990891518951686144 5617006374817050494875962687094784 -370775326407820971427128179022626816 3521783993297455325184141029277696 1236892018047761676684212888928256 -186270170816274850762218290502696960 2539277064896788606801627632893952 914687891239738298154027598217216 -3642626242669883650400825540345856 8192735454522396363710026202742784 7141146361635843759893896264417280 -633039211627860579358894159824945152 8620900884459529698724978001707008 3707273485556733449048967023165440 -158488597742614135859098115079405568 276869184412087943262674232541184 2348748044129253077357711851520000 -917132519217936943357521880735023104 2281424651427891534769818949386240 6381065978979234994109081901334528 -126871458292787855114036682086678528 7144006486367913930253936415997952 629139333300888336602526199578624 -983684726160695925799690359885791232 6356843662383738718077867448598528 6187997838411588804511858331484160 -947276822551781368704562127890808832 4065135469696040075468141808844800 3493403089102362022814201224888320 -794995485097264467543763818150625280 9179647880960739766131406141390848 961770184462619934640042607116288 -322419710099951654713228114207440896 6710312249375092701210589479829504 3273632627337551551332025347604480 -240521297868532220032852231515537408 7902418217829635251701413377474560 3185851388758102072561740057411584 -443641301022028520013857758241619968 1086689737331101866336563505397760 4101350396963944259517475285106688 -487408267502342694952396719099215872 3598217367971235731233472082083840 7490794207072564735858994629836800 -849290332288306408146878607034155008 6386841744019384803422710571991040 1799917978817027796855032033312768 -984445621864832720096597895892959232 242473712957398992352260688707584 3311299775671111436017111773741056 -883580564596407945662771990745841664 4440650619883914910814636756434944 9805072361428835657011001137561600 -625888594874882571249405515270193152 6868326987090345031659453690150912 6283050975081788890294661440077824 -837086233520890052209755037288628224 9763017469644996458460453986631680 540175711790557876951525097472000 -901152084322996197932471353415303168 2645143072722766077071646829576192 9075123739927133198086859122540544 -735580605809141686823491640758370304 456863905052989336737663126863872 5995874274756899494437007055126528 -814347952006068088264414190010105856 9019367212553254990494480113598464 8498357793084222727120508629811200 -277857609121810077639884624552263680 8501081194281079051665249581137920 6263791225012376277142817625604096 -545617857770803682524468393285779456 306663604529716798521700901715968 8593645897359971865599415192387584 -432653684042219312218683693030440960 4469030443390177998112123128905728 7926393135845630354318002873171968 -486688166885372091837307894343139328 460521579833977071583921317085184 9014181219048254267106713004933120 -320465559430031385281195400230862848 9636137096954178775363163632173056 5076415061349993406813026255896576 -853185307414379788034871154406588416 220400556268921072866776844337152 3277562326206262855458546310447104 -453570900337559365034515405800996864 8019714930919371780748352868581376 1000906689722337443225564193226752 -662528501596631329030875357164601344 7047818544547041911425407698075648 8088576984062711561720541959159808 -752928164702244737384612495099953152 2341765071151250642442256258170880 2176302630640506926213711806857216 -746266422954225941824475657995812864 3835543473242963363028750127071232 8161466284795902604712045086507008 -73047790415818982383179333527142400 6208555257698171853143321138429952 2690194026832558652753213925621760 -760602074060075061838714485904244736 5573248986742523243265520255893504 5310014877569285096667903059558400 -409557602828170286902413652740014080 5297033719535172534296199120814080 8846400517476148879878378225664000 -812830104216867940666669920954613760 3021785876206846810744518600556544 8609938381414600448976282011566080 -740895833421731927443604132675452928 1900746981880949275455348910587904 6904170550249295050029001454125056 -496222027915551459709517852538044416 5952835910575476388638717300965376 5933475280730502163328746246897664 -667278113666020507749930939491287040 5248516827800342949451500343001088 7983860894008767615215621577375744 -404788294422955323339216583475068928 3996835616708846702152652410585088 6485260216420289009747359854231552 -429752792237127886736783598308818944 45593284400046706343495958790144 5328839447789391229871493266538496 -968305300035927804209969895881834496 7859099844218308924698159935913984 4674939279091571725135261068165120 -658701542304212576806899300008198144 3298925965627687555698274196258816 4382316592994421235928657242882048 -88673055760788217874135760595058688 5878409865181048258904842185998336 9622921844795571048020896892583936 -316313825282790297977143862876962816 8765456651045786855163349130280960 9233635067705677850848454814728192 -489571858788203102578784397814661120 102170685620608844124196152803328 311957526862963843332470271377408 -41690086606932104631662497859895296 8797143946039993136626702154203136 6064311836719390204347290251952128 -613909424592942959240965441900773376 3865465262222125119197212804382720 2622177052367762448388508272820224 -585978917201439435470726117225136128 8112805514618975233350088307769344 7312879006633808253355232392642560 -840788466319706313537487263202541568 9655852114709000033425999003648000 9858728230755751041138508769001472 -105666851659446053011348486096945152 4184219626400823096230979299180544 423623814726499998746666013294592 -326359844735490576289802408836464640 2167088925979522853278782196809728 3953342982647736710835767712153600 -390936589865499874874394528112967680 392206512871849154950886894600192 3351121818888276376770274192785408 -86460371776546861719950206382899200 4915873300067743699187369741647872 4144537062092155520461396722581504 -923263346419784770138456770127855616 6842148976235425844450482202869760 4862296937836094514132476776939520 -811579557386952999333069334824091648 1839497296212912833791952599121920 7793049789973390241951175732625408 -933709486825121084586409018899038208 5174890965107649098064276561592320 3577696909918078601395764774043648 -574672098363054513549129815959797760 2600377899960395370314974359453696 5287206571142571937401487128264704 -272631183251803070251136893109403648 856362488338002139507099577614336 7178824938481021518746952367341568 -202443099911561823876075908222681088 5019872007180506628208426137681920 5774518815120125733339442502959104 -953002923456738375764560237729677312 2769101783090448310863228521414656 6202382888970560793151443635798016 -142467297829926903340044341961818112 2585971125114023754733725052567552 8420918970023715513858990498906112 -276328625000142932123961778600148992 3672396265039690706218970144309248 120290653876388777699623957430272 -345358534689551479782412808804630528 281758287380840557874528749879296 3101665946522909479241667177349120 -75035450373803435007112539329789952 3897663579969840186462272179142656 336940013201789829767101180542976 -434719767125894252045172092274999296 9876768401825378281246493908140032 2552036994114581956036072885452800 -519037645277772826487986270960091136 1692384773458986336027155284099072 887109337228862113528374966091776 -161633770556640839960803546285211648 8041136451449823648169334142926848 1000050236183381956324625079074816 -969150705446000227423005065516941312 8552182301447563944012413742874624 3973898633605317771018503494565888 -596628765740319665008640984973574144 6473692786173100562568231639842816 1196467804605817224111512921047040 -175125703445072949428423420096282624 8645957578855464153437732559912960 9503423018202164454264125316399104 -314796910340551267792346565041979392 100527584013791487863065730351104 5280360723905680808196156881371136 -965765501954636193617209247915835392 4739409685101479932568670297915392 1544900465919743931942413224902656 -421690427167845064814640847283814400 7614132324906574246503522920038400 3893017586557799826153821339385856 -283962344255574081964454909046685696 4831813892699311578021514472062976 2472527638656444054537754009141248 -29725802290288776679960297382871040 6571110149808858145246753796915200 5859152098357438013621128065449984 -837330418218913556304333458651480064 2136003997656432038193848429576192 1774652452846197226877506379841536 -330300612100548668029976888064606208 7853162231231859832279574805217280 6861348818904254348929846292250624 -544801022312459163765176306080153600 2230791394873133390516232269070336 4686706006659903142932695035674624 -654036145503592065628939256594432000 9271481141538217464451561104080896 3407355021964587434527507173343232 -836872626769165252146447582068998144 9808933206534003037714629968003072 9210414899122601303392030992367616 -98614038155692854690232981673476096 8792815804481363314879514865041408 3623258479918866268831166888935424 -204051991154917086373664094454546432 3622628328556149243468755933069312 9836125609086195552589609353347072 -991818614089567185563974715628847104 5506818981185836636894205105405952 3028649356758882750365623354654720 -170062369732582352211905025360789504 8017312120082943273127882243702784 7329465836111595695698050973433856 -653115556241862962736558339033923584 9835957461243605394527415680630784 2938183624676861763648352199639040 -153915205757993468715652730325041152 9056058150854512504270098706464768 431702032701465872988869027168256 -975975733193102894882481210822492160 1271675816152645908587834893139968 2884292881388943128873879411359744 -40275291950892870169325613141196800 3200124643746603789394090603315200 5467137166033557959487068739469312 -230505454429345433751492190281924608 9117820765743573044369686687383552 1047218253514712211160435148193792 -767590574282614601406151344810622976 9972544885143998761445244994060288 8302996044591145317134318243414016 -424463107693720354530073580134203392 3370423861513587957238137683443712 34979696751558526310771163398144 -897823124378097567729285863688896512 1964369199179516625955141015568384 8415124980725211099402805130035200 -383324387709563811963858364928098304 9405938750316135716724054505291776 444403391565861016746629634457600 -920819092850905087010068448753483776 3924014543459260419228157079453696 4892210420546087988954341358698496 -725860180272459502145575753596534784 9242090823913009026411212008587264 5655007810858711214130750432477184 -980141330132978259949913148680568832 403222925877593104787628175130624 6466386066703706891864940713345024 -387657564835306134579416113988239360 5003981273899128269622864286580736 6915732331455420925563035942125568 -250666005101702695231446701708410880 829328929553511903683140294541312 6641426990653826828803653496733696 -222752794228307200545441365895413760 2141678692579507554734325582790656 2037679399024164244330739606224896 -598947701181255257011170880671186944 2375104102501471286488295303806976 2749168381036512359222319219998720 -283535815472175187994679655218020352 1159886827529184914128490654072832 1142947914314340283401330023727104 -730264063811925548349675037865803776 1755087903520650566237640426782720 3634849840325081718772733663248384 -354591973300193116288374236552101888 7368999813883216576105147210399744 6642001012370250128785255008567296 -17640308166003330205602563045195776 4745802050004210549396774812909568 5216257899593825625374964779581440 -931128262917019852386100527081979904 7654859320470336696769109982969856 2505180267725401964543693648035840 -22434009186871951836681744435642368 7885213020160266166316896534659072 774072258884704074194855303053312 -440015753096107245982081794011299840 3345341815580119120315975274070016 2006265772122015216583956192296960 -391896456633111239176538982170230784 9813015234357324357709214620057600 1299678822955229798386392369201152 -931275825949562788016195186861277184 4726494614696190428082496371425280 2829150685041588279475505717051392 -408664966578563676500917235839139840 4287649506429333092277454207188992 2068499278586340817167366980894720 -948641178224467255254647162326220800 8499982662723658958193996664406016 8098538445963540207245475830562816 -310531382225644607019830270389911552 8069380736515687982524451432431616 2417376179675755698083423229837312 -900489771358782837069388896970735616 9694012379256298433746293900705792 9551890015774345860829023322505216 -972992064880051871217490627076816896 9823394592795212199771435450761216 2828495925036912360864157370679296 -143615047323742142193506897109188608 5510154582711672770958991439167488 7935787083134099443400971403657216 -139341866747174166195427339686379520 5512858180058481666210267043725312 7126101133814198171840288512802816 -195329654208848003293302551465689088 7221536030118505413797388524453888 8151708412291418026320522247143424 -347710094117174013147949390914125824 2318616530175461206636319668699136 1405383116472799678613116885663744 -571834786963670383985756173953400832 7448885418072917862695574439985152 2757459254438832816113433953959936 -1792916856192047608729618259902464 6606720521400285151441415022051328 4355110129277797159444224478806016 -773098818264508232147923899305164800 114724289987455223022725753733120 2819661178538590398083831129178112 -337941480198605166535799358714019840 5055239580828981468354365561503744 9152361113446078622857196308791296 -412719231323984714533534264400543744 3238478746915492098768484136124416 395369306162511625564840200765440 -327643202943253550499847819248009216 897488522191504524587161916276736 4467781140946961408499533788217344 -46563926621290302267136472564891648 768811263672235976042904029233152 3617889400873372608524354364375040 -2986399088569923908788744047558656 3015049640191679034871334544867328 8228170862605816945766041280053248 -295102138807012095825346510842757120 7069692282642123363786231985995776 7064542120531136028981982520147968 -491730106639223346705949469626597376 9491155766207268114245179978809344 7165469444443675734471481902497792 -486581118447542742507448518490193920 3594713816653346460024382395777024 849606887463629161336099110387712 -745837060519977338756397622638936064 6881562729290955554393422194278400 5865849787442666799024740136648704 -874122304081099724548250700854853632 4953981396959722831827733516910592 8974671051611619913526818916794368 -992609530461079053919373935478046720 4673271466041009376355114477944832 841585456095010535285745480892416 -199444251196047384146932675056238592 160563903038612488601628546433024 9007672600733630758910136386846720 -980250588686969124383990479268610048 7944723257461426789634159918710784 9685229396603197068276875946622976 -455845442424885731072515265456504832 7409901221849129537839558406701056 2732712716645013310488271250259968 -496062475599123618571676889999474688 8962440363300864807795334297157632 2297505548378356545208602972913664 -264913259013085059676289224165818368 1831249033085080290878934787031040 7636292005458684297834209472413696 -496820674898240214400095457061634048 8917869638573756932643370932633600 6059161207989856911257848430723072 -113860487400708701502865289536077824 5207774503094220777337454537474048 9147712544240830942317536081870848 -789958571635570649630405290826399744 2807022569987781735334815821987840 9957236292559116344864340032094208 -10458417546386260521647548716285952 4084393144323316890755488683130880 1067847208368231294683980165545984 -641475838833500654468053632366411776 6757798537631997195307763112083456 4703453796789083034146247144374272 -201813006690854748085871091948453888 6456187147339643046928590103904256 1919156589069136640645205363523584 -523286447808856547220411408806051840 627182633526720766881387268538368 681662118259749212704933689688064 -767782846431445761485404839331495936 4066230924953192199689671102431232 3509254124091513015060285672652800 -321703977580096207782757610349920256 6286300987585278741741828634050560 6630908570775405841366013058220032 -956169613980132012454086264565530624 3337274670009041888554574210400256 3472206274290195028352712476459008 -151691926320423214544438945158004736 7731516215767584577061994230710272 8212769054816552201490486146367488 -350771645446909297292419917181616128 4331807044162545357633139215695872 3512046309982650836327516575105024 -615323105910878975561608419235332096 447836412831557542512732286222336 3135193476015005659777885160865792 -781279110156890783116262168409931776 839128179691286036788421064654848 2339908977928025854427172683382784 -176864873013024880688037712208330752 139786716307562524514880315195392 7845982753246924489792126810324992 -92963878513030837923273741730578432 266481676314011694599158680780800 8908638440340339989879236432232448 -68700162232980314135412659755941888 9712003944059882885072339871989760 1141884388372248480951562863116288 -683339229348396854364646675151060992 6132286623034272895657205217361920 559603248938216695534824468774912 -762633251730317705693923686305759232 2917031595330692024593283391946752 6395671292833122528438672898916352 -58703726212467180550056720031809536 7177241939272911006987682381299712 3251788399373300705442844985262080 -765824629916404434673526054475268096 589372056503342308755803065024512 9290506450532641456552588991266816 -231782768082431952893614179691266048 5828029042176570467614841567707136 4563514278648555717023414806904832 -267706431010721993584038132559380480 8667839759754031477233863431815168 4574865069954537476753234468012032 -44946822412146688103440939934023680 9169558268913659815609292935921664 4875491523425042306050085118541824 -239460520768672113854680553853288448 6711569345370767781190162454675456 1371126037132951325049443596632064 -970754256479718566868438782786404352 7932237668713795419548847628615680 9586861937442908730083403869716480 -203377095587536858685331328569704448 2330560666615516808459964616015872 4625209229525503372495709806788608 -821566342451000640412620194410659840 5544731119520121387557848700944384 4126776935789161446648229719441408 -324471803110125424909811831822876672 3443644022203494472502259652493312 3458601829709362868911329874280448 -294279715172379320270684310676176896 7359330428569488187304189964058624 5517254271219484642183858880512000 -356763913882863331799354489199132672 2275169062263369796730637342736384 7988841959622028230006826699063296 -88636803757447387551913925121409024 9795487776143705005800733609558016 8161615216679242986832468622966784 -46152894757582357022721812266483712 6280248336961872767523914573152256 2406757337483075715118559324536832 -890711433793160828930976061289660416 8402157742664602327236700081750016 248293367011401393589741686882304 -129648791387982901880247331026108416 9309868105811041028429312002359296 957296422156396173391542769156096 -628297378081255381460620727080189952 3538380136007369808851967563268096 114047177967229601227337285763072 -504226278224431730965913292268109824 4802459022732685367027822820851712 8691991768923160952523458206498816 -875745385064475126775187085771931648 6528255030829322334359706046300160 5086018452679447998542105607667712 -943573725761516637443013145773735936 1515575004730374726303847339261952 7041900756933518399802964690599936 -983878915063588734638861822669619200 1122779087193548915438523523268608 2366192483008909472359985300111360 -175993744042627334738203879604748288 2995994732078485933260908917686272 8783573685796428684072631452827648 -368696397414026896316636402395643904 5269228187917537994905418404462592 4963818825710054771508150840328192 -814288399720184005843347062187360256 9604497857120162828776441582190592 2945474665000989538587091973177344 -997939829745186922376013476752523264 3045135042393725309532375298867200 9806123617662567736674502402113536 -938937493146713751299723597168246784 2473650771146795818651316756938752 7594145955442136594551185417961472 -941138684100891282712794509774684160 5710248685766616822249898146529280 8970937724267940968175063426662400 -728137398979557831238850289384554496 7316606872225521995767693784907776 8115404712242501418306777735233536 -704942277572129304422218657446232064 4193653342498993197485093858312192 2904547065749015023920756971012096 -620725733925605181204699074428665856 3772704987373384108502035709558784 1324846209261712921587351971430400 -296288353035660595279107449323257856 2014001911888834123437343347048448 1440991136345056456351608486232064 -994424565230858128454740724080967680 622760240568846140676498486460416 4992288591674096695037246281089024 -279333952263725521855102040376606720 6484081190723320033562434046263296 8504508535825594755221024854245376 -543514045892745103976550659071672320 3806607899825014703168439738957824 4951508165133701609853887159730176 -153662327180661282436431988257718272 3585845539725397235043974720258048 2074070121839572783021974563586048 -419722152548473730494024041015279616 3036721139751453036017809983799296 342745421854674469286896639934464 -857849875188841958788362635181031424 244460676519414327330237759619072 1107173022286446712833644611764224 -519286563371050386498269172224491520 6719936993466166053227077467897856 5186007969246284410812767672467456 -280853238653474923428196740327538688 945449785286899223129223002587136 4441508333691771335347953675010048 -320998371570470887502856343389208576 7692634850436832708090774058696704 4362400285359430817984580604133376 -757342124751285519812282217863839744 7255051853217749232021272065474560 8361220598397435303942185197502464 -994777184366857426052492136808448000 9687641207453791642752649130934272 2165270971375513007245261285621760 -779987862400585814665311894028419072 4615237384465156546324652938493952 9349597928577127494897610847682560 -192725439330476442413010911726927872 1095848268709956719024102281576448 3010992563304194694744023679107072 -393966204848865900166068984709382144 9083080985633819277227933875306496 2969216930345660329286984471150592 -143874954218175290451693193723379712 3709399860562186085705823050268672 9155349988580835443718260715945984 -730947105174521361697528430930690048 6629237322264431772373284886151168 3070367334286628250890645624848384 -718961724561608953171967883213799424 3331658484079132183643174559809536 9616881634303355348029022186504192 -362822065926394582279983729880334336 3241744604330468216104829941972992 4887976825134199881562010184318976 -94099907854864394697754396336324608 4875698225906596659575845273206784 695771070780996021267621243518976 -692171021450031830405281482968924160 5164345214946518179819965823057920 966420489868538044261702662356992 -876305502291892948810803415997218816 3320259180151655743023563241684992 8239938789082816402945087643844608 -95843083157642943882627944359657472 1773086492801626227387862974726144 8814689413595168443640594103795712 -708693680365121566856327038851088384 5582421669877945768194761016999936 1653038708990859227128519727251456 -154028704213424118781381820316385280 4951569845519896735368735302352896 5023568864484595329468629937815552 -638593779982658555575038560134234112 5407891142401399488927136372228096 6611809313134639949477394486657024 -246525974386138368977111848774008832 2235389543385170443518171135606784 7998836294836440119174713554501632 -433773778491218395369850642018336768 808918550944819098983880959459328 9110835396552432858861441472528384 -663678284855476834396347884845924352 804099617263915673501042569379840 9787212789094422736795816683372544 -905214470023564831113299786691772416 4147648467564005007631970314747904 3955523640587999448015516584640512 -484727844219648881449101743760605184 2267993472543537168619647944097792 1703961361933520818388378532708352 -2536079144145082489305081764118528 6972132521854793882622782414520320 9461621530146624069125581647642624 -766203688928189521900807367138738176 471522071149952600214234189529088 4852468843840768343740496486596608 -496986507476221184860729575913553920 3509664512666373990829700564385792 7462940603428479385393832107442176 -465291755986813490133174422570270720 5361819515168507567828409354551296 3036233443848126071942619504574464 -818828085815165304471371394343501824 5120909763592829118242740959707136 9909435546467659957499960628346880 -251939059228360326181826530641969152 2624276938287244697013981005479936 1565142781173156965309672773910528 -712608714044632359968175736592793600 7194849943829071392279698474008576 8481067130717175230785228606799872 -923008108654716503024403060440956928 2406077506874512620278007176626176 2942976506814421629623735586652160 -132374367889995517773666101894316032 5163397399019489137523595551965184 6321678126167623319774804179943424 -311718691547411282155898802198806528 9413223258960905420020128227000320 3417930675149222309513106011717632 -833678920990753140937666775018897408 1301051937527316414061288565506048 49479606971615984144914963234816 -472178606101579358479854358683975680 6540243776207718339787190452617216 9625948682021885382600191178178560 -62700843399864820150312978635292672 5901470939742894364528809925935104 3651094424224301838107010882600960 -665142970875972215254725986032287744 8048146702507542422069717086765056 3477872718199507996743421464150016 -224498939512956785919894407012679680 7726839900259878576924788340555776 4967521054173976167955102028529664 -669820660142863373189074111965429760 8305352599276500053954822636830720 3577192423500540950855631991996416 -34321135692186591968266193303764992 220454673437511271639403477336064 9283922446775122294358729526607872 -426780799595418362108924337034625024 3266758112770768551291901806903296 1869653956100664258080412694216704 -728606086305012672907742076358098944 8424416560686779278893340084404224 5713541382270464889847701229797376 -399228965842959634745163723638308864 6947984672727176462412708585668608 9912724664715970493541268622147584 -731971073746665467970301841389912064 9860595798588763588853883312537600 2554709572412329040226761723346944 -265116404492366623012855046746406912 1567535664707173886587498217340928 7724385876684080196516460711903232 -346130756732647592279444905764323328 9672667562745465067752156311846912 7772587292859959475903453168926720 -10649412570693321740877019649933312 7465794663099736289474893955727360 6327983997886838037710306577219584 -495793204820177431547368857594232832 4837197625456646940447630799405056 3979389093229815491087235714908160 -462016111311558532254404543900549120 8824658639816551070114335728599040 6705930833448811884701987435970560 -160264357766518571124019551061147648 4133340214669200204772128510181376 6539073489665934580388021183447040 -149605549281369879483855553047822336 279078684605703560896356018028544 2053574907865550133914349923729408 -442753334671918673157941060144463872 5155857219414563517278116051419136 1210192957387548717882251866537984 -754359617931793795242411773013262336 305340557595522531122143693897728 799217765899006276080861832019968 -839464112283190640293589747211698176 3249651346460833194415493453185024 3915532531553222939337999842803712 -671522647620520849725629265292034048 4275874670642368684669055554027520 2042308379296167180839346369462272 -841613117560937094032430513040392192 7395510258181714588840701496131584 1574332574145578892688249013141504 -616840599762489641774573701814026240 5442849979188373828001031073562624 2696108950010202433170248998846464 -689928031411402486660699032739905536 1278967022242993477190449822171136 8686591546503939338871459865952256 -949677418707501687554962419810828288 1399853297797540825678532828987392 9487682090285180941985279958319104 -998878062562594415825507651980099584 817567777300372467127884934283264 2510829612559155470927534000963584 -88489719183353295267524717616037888 6247692476777549612038127169306624 7347502293839579033292098978709504 -967615667414566351795822885630640128 5395748420855660965126589959372800 9102229552598848411880497291984896 -861053419780076687375878272768278528 8994534226069888837495592199389184 4771010116990588641346729464037376 -132526043238175212202399578107936768 8860126671116013697955848460959744 6730809256253405902262447990898688 -78817354282495299243056887721099264 667983732741603529004092569419776 2217429904844232731436919558242304 -464495742012559828809603533198327808 2284542304593038305075886804697088 6341841173817860826366615488561152 -435037184726354004995699094035890176 2981983543195178885549664803749888 4583691585513762382603322117849088 -159963511173875130408503648551174144 6103639544895469631442518653534208 270911345451019794844687980822528 -54310700213538286687990188005654528 4268619584588707492084909118324736 9626235986101387367397444800217088 -680535248125938636780829754454441984 3859865070103655809494345358245888 7089875129485795236052601124421632 -260849011148733622423355869362126848 4871084273924630162598141569794048 2991111206029125969933474411315200 -254544187473380295285785078217572352 2152123828480669621587458012479488 4594449605762614142391200969129984 -702158709915765445412650456029593600 3333424776035507347982384313139200 4285709594116962914724665991626752 -485588928275881983952650044998418432 5141813823334963965493754252492800 9856882881456384783520584410595328 -521338661131107573912274346843308032 7922425464123921307800409036816384 5822491680202384313513659449999360 -742754155107035779225569367127228416 5077480856128144387965520856481792 9589129773154445845235436865191936 -946987497054472909901561932554436608 2684046331159552390327254657269760 6516913112160428357825502914805760 -443166029032890636842457862009520128 804968383556982574507582705106944 4577039968342923293590468236935168 -426206387732109901135450785175306240 7543213335359706076127207433961472 4703196188525309831664873450242048 -399637116815170157943827209010544640 6616705776769836388831286389637120 1507688025008500067142859248107520 -48759577394375907019213142711336960 9170219210594788784868719530606592 4350470408134345239840160114278400 -204620083041498908191062986852401152 8622275983881618739820695973265408 4795660257425558294331261422927872 -542061635153020033451730281022095360 6754096038995867668631946262478848 9857660194769242739075385162465280 -729491674307593397398343128857968640 8828141320409416219926941218635776 7823453573611822510497616061530112 -593496240244961161906175281524113408 9887888003280097912807366575783936 5756531645193528639928167173193728 -965662820394177645073454282680827904 5325774920091942189698615028482048 6868209794180554308308401070800896 -217574107261817592262833452026429440 9890530391515868398604884696367104 4304594275893016189651057115136000 -66622458068242830640070427032944640 4849409940609091582334948217978880 1126784731768251236776359881605120 -831375522649877865609201888289357824 7705502554926301691016649623207936 3054340147642243023797145628049408 -381614801750651945444713072359899136 8053101375731792321636021101920256 6066739061199652149213142624239616 -633656977577266472905088434494767104 986105687482963945378494829035520 9864177318851782768667716640309248 -388926043833115325301198128548937728 57465398735943455026179544711168 3598973454451339108725522266324992 -277387985579514208039006285085016064 9537596184808317292785313391837184 6038498939227712587773385564487680 -87253933027743527367182941098606592 2005581718507508552012306367643648 6217473014373219484013465545211904 -735836528599196149424831089065590784 2444554722166462643107788868288512 3831637936316343952507087349612544 -21907720989948860128627085145014272 5372746581316293666281786288635904 7996086662516171818405602441297920 -1064143974777807809375112827764736 3509936964983498981972016973742080 8907405286713343936926963759841280 -625699896312686012569791710135058432 6192148221095593168233136809574400 9993425929649719333185407217041408 -765530039050182101715286084271734784 446042997800247549734666366877696 7705584057633008526570295998283776 -480322294508103269381462064965353472 6756047217106049220985420586680320 289892516782260892036501484863488 -97851586374842754825573793529856000 6283550242291862422185496620826624 9239545024981801707882793295413248 -68428687162824046592243923339444224 2010981099729992064040898461171712 7394016079300999046861311040290816 -233505656634787232595572598398517248 1726763835082485890448611937878016 4532903442525664073956626519818240 -911403891824267706178021905060069376 9760184280698764828697380941463552 4383421418343306768685468804448256 -612226038357992907398803445088518144 4594910117230774892986244670685184 9998812008021396894322629235703808 -80409426086187454251993003169153024 1783436896871148692272279439015936 1323839773830704583655611275673600 -34399121919801507077199810395111424 1483875760798812692395154162581504 4951580236388440697469605100126208 -963199071840931323820816666575503360 8866763336775098790985425229971456 387338117914312829302743303716864 -209155900502806558578878948315234304 5456225904959901362562148723589120 414650376709225987922859600642048 -930331954505599229687497542995017728 1943383162403104644562422950002688 2555452919357132674379868679438336 -37079327900863444215747743915704320 8532629030285466926786135912873984 8842296998752694898949874339807232 -557267249290759878262077049255493632 7983244783891806075125312367099904 7709810528818130151192367607054336 -859519523617212842263029167318630400 3775421382563312927507180666486784 5173578436419075887474973555556352 -722468103505197084515037719841210368 721120056680829670971874337619968 7669017959946455932725437833150464 -683346972135759358230211636869726208 9281745173696477166661759064342528 8287560592809027397046925621460992 -119973799097876838207682039425007616 3160507158499600742209312251707392 6681271685290650959868158420189184 -224634328630460737925568377623937024 1359318125325252148109413363744768 6551967104507817910265616504193024 -894307317299690847774551490405859328 5811384650912542844692905863413760 5740751728147367686188794780844032 -416615999758328361694965960540160000 7853770483383718130607424144408576 2835599302311077265264445885513728 -883344113330656153881588554302226432 8909565010964151326289027856859136 4568526573571066611597206454534144 -175276071148386050532697884013363200 6130840024986178254657515792891904 1843847094437897992440695794696192 -805857305490680888441326595087532032 5256744068250783947352088778899456 9209484014900711871885962119217152 -37136816976442116639676041458089984 4246594234411088847885956794023936 3261829311509789759290871512039424 -752277655460371557592912405580480512 5788997819278431025206290408275968 537543160265065460937788917547008 -854201376777955397823194757572067328 8335332324620097881035506301534208 3969503962374611531821366808412160 -72668712998789212557925788055240704 5026667871266809923174697191604224 8254680181721517221292522136928256 -955529476455132541789644356098981888 3134373936163093834085609202778112 7880359140776054399549814442295296 -953991006078228606007431200679919616 5119930859547478720489143257792512 3801956739408505833645067309416448 -738019808550731837644103395328393216 1001961751338066231543664524394496 5734636542127176979475824809869312 -441681023751753473291854475941642240 485816127794219254334398457184256 1681758509239630746962196172898304 -408280819928999599536194522206699520 9432988157064521333393329787764736 8528109736409268288452728448876544 -146313416109172494559639455385255936 172910465682438352558366463623168 7184012034197731761631354291224576 -774838567351704106262171647268093952 569393695508162085437971107938304 5942864679585417854480187633172480 -938431467309758240927958941319561216 3875565849976132814414547127369728 9054122252736110088009555610959872 -707260689159167668051911348072742912 8979570170870722869720651562745856 56762182969380654879995359920128 -181640084121879746395989196868157440 2269922301690581141149770617716736 8322362814671017788791586832777216 -848783392619506889690441162992648192 4386597694064845264232370216632320 5371303300508770038881757964533760 -714761520785479585260173711638528000 608755905740096724930707897450496 7028647957098903507593284416438272 -203462262863059832743809106357256192 397715290399252038012520613543936 6700233359728995723656344079695872 -650611228828014267793739093928574976 4279726472687618307198046699520000 533736446142337802779752197521408 -554223650058844007245390719496486912 7717876596752792191560163736420352 3275557910513372049025530427604992 -670136832358886361369557924004757504 1459357034099461411745581699694592 2131316741778528238451275870502912 -739399170409302319922719666024218624 8211886050831393428307398329630720 6285829078285615269067505277075456 -361204287427358701944672836967727104 4344563530210902069891384540659712 5718666059206030184606147188621312 -839244674443345967896303317265940480 5033823337813809576541965737000960 791735106638766608574471045382144 -215237379514148379589979344411295744 4731287952690854870748724511899648 2835936944200680557228235593613312 -425744854929554914390857113862668288 6947220066665300734712459745558528 7495349346156629132823849712222208 -298043868639646352088950515647381504 3255828796257388707802634925375488 266906126053306033417877899444224 -560692840256229720907963687688470528 272927522792169561477996691324928 1010341993121221970744880001974272 -633497854953959179566781590159753216 9404872580959788845238456040816640 4155426563697670519085095469449216 -304531067980202327248784312982568960 9350181475390064921327031394762752 9813763060666426168852850331877376 -310207429192025560400019784120401920 3904931469971446162011214231633920 42186342305396948956834955264000 -883372563816344156324594921234235392 4790037608885549485713084081242112 5816208318711899861564140462014464 -281087607083932313332615387675623424 6214382347592700465117773388840960 1325146587461368107808643023372288 -272873753912954587358087329165082624 8868100455635166037617580437405696 3253723933674948036503879515373568 -842003446476202847236360782871527424 3622215835463235357686213099126784 9717254749506756183416398648705024 -387787075174429936072875569523458048 4890793968066000118368193440907264 4296505897384359520615979219419136 -269162044518927742859704557755170816 3412443162843714505712095455084544 2316797290727260130092657196138496 -221321573640691207410657567250055168 551666038864642143896100271030272 2078922556718198384825966203502592 -766123355178323950142628100831182848 495933398604035716924716838027264 1112652876125599803151728213229568 -872641850773682633933062370559524864 5607398950823162708187800722735104 4994798304301148389775487323340800 -490806544635615622378159022515683328 3475591852861787796377356401115136 4366366818084489180784418732638208 -434832035232253195344323786578067456 6597783710031583024865517603127296 5847914452034748463721825081229312 -34754902424167737020148852413431808 9856838937187125917967946868588544 1987528134076262741697786686734336 -511436637269785994204462459025096704 2644077898119727670681853390487552 2961635652436890717488190173741056 -811078203294693728001153628056322048 2266097716364813806433436807725056 6899273837964769784870425273040896 -488192449384048790832975145586393088 39080364852985150585396717944832 6524131749697376881360022133538816 -7403881648522163383727366739066880 9285032505145322009969759451348992 7987579391112947141954364327854080 -721353045168641387010471906938716160 3346798446784829226810209105608704 5361356414093285397571969379991552 -739315663946103741086217565938647040 6043768131646749296470293821259776 8020514614718244026477301288927232 -216770296519794630957932993373536256 1079960378341582822445033105391616 7848091636128159510976310515073024 -925624661539483581292745241732841472 4983936598148672296504861753606144 1271681090615514463397269741764608 -321422511110986840622014659450372096 6899140761754351862086757219565568 4007705739641304849006545149624320 -700737490692065096871754108487335936 2367862904136997233316484897308672 4105316295700039406888939186814976 -275648130216444328017867638443081728 9176769812903959314305251824107520 7192994653413442619423079717142528 -562992157876878640895539107369844736 5373700991887112583102775494180864 5215909130044924859256999560347648 -14789171699282688362572953256198144 7879051298659555405067576819056640 6453804255520685922153399899389952 -412479570229473972789737097688776704 1600011256430189920373363001262080 8299720803270585727057769407709184 -58463401097962797237213870373732352 8494537647129413154759326975393792 6218757350059465645978886772621312 -42340696909600439272522812084977664 786911466467112602416839487651840 2973857578621372388721479640940544 -20603760124407044724472690360975360 2502112017529068274275975058948096 5097723562826018399549653528870912 -299997380594836717898205239175020544 4316172744811563607946607026241536 1197812386934114448798979819831296 -316696965014801703651826495169495040 7142382579197468937022238242111488 7585169788075085764714899294912512 -465048085322400749211281054284906496 7796769848198794853330980425433088 4472215775985488927724601415303168 -559370776086741696691322306848358400 8156659172675275783323732364230656 9826639573380337607118113885650944 -916751642667685683811028783431942144 3217891883514924117304674176991232 1358449331404481948158894035435520 -387600276036118351699771256708530176 6217882965405452766567823690432512 9278268605710805523100591158460416 -426693497494069892902300067169304576 8930505600657897808520715652038656 2340075857792688716941489447370752 -96658846068125439660050094277787648 6587564124097857515122251685429248 6249587149215029176624917134704640 -567347430241355970088471339944902656 6159599993198132646417563612348416 2153896428042362883490532537925632 -29464409554658647663917121193115648 8370289465199743070353906229837824 9940876881283126083070476731547648 -109179916022575969038436889201213440 4869215255481207455399878764527616 1086218859569687734748789914730496 -309689004773185065173678176390348800 7855550637005778922349939725959168 2069002404985602257129038969569280 -948960786621035592609278527012864000 7035019349923035537217258120019968 2551406627835064839484635411906560 -248927085650537357687668545234665472 7008800001272182262618557712957440 5836577005021127170953780056293376 -244828028523405675839748656263593984 4267901349689346703152915131924480 7057181845760444733997825092747264 -942575204717775052311957246459248640 3400464489011074322861839974662144 2939224600552865959290661953863680 -163369570809684126873344637963075584 2252970380372428838522681255002112 9313554756483271571380110956167168 -825852485483460548224860368616292352 8546693617861090535082641527406592 7795723355315417127479161277906944 -565913320787156007923911213686194176 7388321531377296379962969481543680 4608448461973132546737987821502464 -678569741061912004665447772281896960 5780848406582192740967343428993024 3222452409176871619444265642360832 -642088035926671185025503238465519616 2734384723469615584272468091600896 5853065070002843257520680817655808 -271991338783967017369857056208584704 9341527055850552837652838067732480 1082808917953053910826310504022016 -949085279252960442023064084192165888 9256002922872630566690466559950848 9928950930712284441076327811907584 -573333174428857537513973279516262400 7243552819272797479948113783291904 5536191129808094185376194370732032 -817832672159384136882595640828231680 3730047205440281729763621059166208 3635571872897409543794501867274240 -78147021728865540813691544563351552 1917555035518442867316518660603904 5997953899365031697138110668210176 -65131503773209251719275992884183040 2162532058403814096917050238697472 1466131586865703344798610195742720 -544685038463493392345329097678782464 9586637093586108803555896139448320 9004791826298165164548454793347072 -312124706618728661773361475963846656 182090705930641809710030925070336 8385337431528403630927511543611392 -908084616726056966546587037812654080 3931523926640948659904942373339136 94387800113081882386820740677632 -770758685161572504951873709614825472 6389389776449920202642497669693440 8161347048728292734289758388224000 -915601199994053542276377618409324544 4255774938225422843327197904633856 6000942857382896973679231894552576 -750671884185269932980103236668096512 8110314379305599341349344871710720 3553783151862542475398909855268864 -156348898838834272655896572051062784 265528315751906507696443184119808 7648839288406362010560795273854976 -251058537698306406595212941539147776 8001058853888144304218122800332800 1041098370161009941971318316466176 -203155240599797719181240777186476032 9411260736670426244770759792656384 40557060922708749466367520931840 -653060845761659278160952790284763136 2189455924531686192818270244962304 8277532418603640334828159455199232 -21021744389424867236258343680999424 6628490826897687042046845903699968 6157572906166899655806825950871552 -974707206809969726969648981141880832 2049647783341833777966267297169408 8377917201810750293141424323952640 -679050143629205627854638710572187648 2049846187263245919830552308875264 2683311354896563230068102792216576 -385514835069229245371994457793101824 3990364995822510652764160119537664 6573227443365251513724783013396480 -845271968673580476157511273189212160 1724011992233976862009442598649856 6712359878651319484961386489970688 -781473262409553544080053794412429312 1690210974229894150316579377643520 6184499412656615544059918735638528 -107103850124906580490680088462884864 2767519655759191917507183258894336 4728765549679084883118196210532352 -631805291166172769583285220105256960 9044094674130543001832717635551232 4447534337172011179943099176583168 -952020298055853151370357610435837952 9800821909485891765975183190392832 8263283660142081087381999779315712 -936779160794943808458146298260881408 5001269156970548753545646936424448 583895257441579828818300727459840 -864266539572245353215725905463214080 2167541277026056445780365959757824 2391501020011913332388039122485248 -581860782363027557361971998236868608 1724989347367753911156463949053952 6114382042608038288543708262432768 -23820558238821005013186453251817472 6368027553906378944882633347170304 8184145653530831744771637133705216 -60308129122535769928631806779719680 5014198207261362862665790262345728 6748667218316010846238033775165440 -286928856521549790728605307034927104 6459205801173239988089352775270400 6946172548348501121058402461548544 -929549286370101848346834008985829376 5742146344381028632622333964582912 7997408171300230407826837946236928 -372664896959436399401774222493614080 5892325164765603334257667106406400 7561469500620140594808550028476416 -2053660446934087235962273481621504 9855396615796179657652364514426880 2104045019420166893209481446948864 -54632456931033735209360864967655424 7218712725428929932062735562964992 4542196394871145867947395826843648 -772299891963606376236066367518801920 2771909314990210941862687425953792 4627010499469503240682049971945472 -269328672232844720242465954888417280 5985037407425246839474670268317696 2051331254014783582777912112185344 -773801027359149332323612706910240768 2503722333206036346793985369440256 9869035091157710025199788694175744 -477890153668900389756132929713471488 3647189502816181362268389446254592 3641156230865834545663290606878720 -271166526676582906664863944507654144 6481121934626009551469623619092480 2437748118812909557907623839268864 -677792940054892162920701283834789888 9125452204934783364537546616864768 3619045838115111891436881336860672 -491418316785548948566519672576409600 8512172295776324645995263129812992 8040273631997732477362989497843712 -595182986744665422870658048329777152 1448258607274500748813083588165632 1265426838498178412381101101154304 -233633183354212477587854922652581888 2842290105057432200254905798098944 5072051789851371457602763374985216 -288571398599069645151402292001374208 5551771242921229542571582026678272 4753708805948427321294615996268544 -819175730489278369215590548262354944 8850104578837702684056820643790848 3623811351580819740140652994756608 -422344142403401979336814384795090944 9751258406647845478048001693843456 5698869224078327591545684390576128 -242672850944920017051037276018049024 7688311610367076328948550214877184 5698878201121401981924034515828736 -846923535717806095802338805194686464 462855090206999123708250955972608 7231990608233073151418283170201600 -698246483971968427306835818468868096 1341888828298858394480175180939264 1579644072934367803440235376803840 -353620551707284030593098525442048000 3961616331797509722269739837816832 674223010054886093147785396224 -225582653137484714120814302421057536 4939510642210980607018713999212544 8816292582074280662754401628192768 -144347156239714686357639912814018560 2497103764428228728168783875670016 7770953473805152441625970353373184 -661649849595574859502295992779145216 7612928050473860031812616140619776 6126833256676890135817812829011968 -21707346596151208390156223059591168 1342499636325247648471506122440704 9696351467996925040833453354909696 -491287146099296462392554861952499712 2726322887698135555373663642451968 6849790399432670467896606722097152 -892076051392795034519574518907797504 3394752177342734114669941684699136 7053671451149437915380936800731136 -917932569896972450628113834279174144 207956923888138252936241578246144 4733906567376579993940161376288768 -638353495353459509156692124372041728 1163062532226193150050475328929792 8604393040203059358046137167642624 -571441802898821338014631227887190016 3045232624847393713810449981505536 4865006893387014752986291870105600 -411629916333002744113862881470054400 7560737686592940000854265586253824 484212876431997066331059317112832 -366041692636838671812974044887646208 4605179244271830265718131969228800 3902419860034118461067510329376768 -125991678993330628746143419846361088 548509279954676778666118715801600 5574699104738338982401668617863168 -713893543828358904138072424626257920 6465488508756082265969384386199552 6099178026274098604594107628126208 -146973894669938294916458278541066240 5273676802841588965842950824132608 7546042697401069042686091897864192 -961971261724489043953895254251274240 6778429725984844791868240741531648 4822427115735773957324732220047360 -32571106898757848255004537664831488 3860739273573397908792791986601984 8241067823920174069279216671653888 -484491661475928448992075007456706560 5709945449235907052264501576466432 2878676775289730314728201902882816 -890034616561575314054279629534920704 3284061884594700058832202163552256 8200427234000205422146515086868480 -438518197417085962783931066415579136 5446326415140351818440596218970112 9891892693094837515946733315555328 -74382830841236744739295034320355328 790826150859639260599635062816768 4328196495805286751474072581832704 -343984405994612124481333345063534592 1073000098224796976215086094876672 690314795493765287510260544700416 -446067531487440698095270439354892288 2319563861013482315745173912420352 9250825812766153819945892852006912 -437507491723211649180224836689985536 3638367557213390888156267234197504 1560161823018297116688921290342400 -55103962422360874879859340144017408 6885728126451143987597673756622848 7165324987268021906874560363364352 -920882605476167642136936037914509312 1150788525926114595127347531218944 5330824187009317502356748259819520 -5331617679149268459813143899537408 6451383969582288825449057269841920 2518906865012718182125642287415296 -378605533628003518410076117790621696 1360004963544942229581501283958784 843344628481234153971048171700224 -413297121538083632367730836344143872 4042442991504230382968043248549888 832190989985001751980653569638400 -814290511695817360898519826056609792 1420079553222669231349844158709760 5661463992950005940819341590134784 -73571052805264595659237980071002112 3503280867000149055685487134507008 4863599328962066228505254083690496 -90116352122914960797318762704404480 2047468715754698905463499337498624 5982923369749195333340426716315648 -890954317296724073021279156561772544 347832024583667988192187337670656 8452078892345244463488847809871872 -909641777291365400222258740548599808 9883109288317161173093256823570432 6036293081702282315539421717331968 -110835756858463855391210054644400128 7984655068509293265111312012148736 7793469398135830151153451066720256 -803928977756941033569453346696200192 4808767183206636492924908898091008 7700497152447490658988441005457408 -74809465435314219999024006712786944 4368910182413418679867739457191936 1380077004914835772753019351859200 -565217933443078277777934716057419776 3700576801986249322188736848461824 4014419803220993626241214946738176 -356311874540500334859207285741191168 5910980053649602423618375470022656 2099918052574280260179087289483264 -505599064774410110868144020181221376 9146029283828069317997514874421248 9047036927849256288798526981275648 -807157999626789543303559941309071360 2859273097627640482225077180432384 282084763222007243580557072793600 -425068818568672193940781150813290496 348587127071903849837215870877696 6183198206625458922560071546175488 -239754645291543629777077684557316096 7530883328394610984114143696519168 2695225238310208413003991077617664 -106766906875060542958308434267602944 7991109299483117759759252975517696 8890737413594355503748232326938624 -398585376957373289745321835964137472 7956581597671361799105906009440256 7067590127886583089379536420208640 -77524988277944064517777367054155776 2275665974701863264633225132113920 3277947410789970265451764935294976 -102850258998417892135944911096643584 3332810342207197151927961332482048 1489632566238067333026443775967232 -59758017864240219728516462216740864 685045768840948372477227443421184 4651622298578107578917845278392320 -728205091700901922849503705953206272 3213645517887621402715085904805888 8268371801021209887948844971327488 -332354583834550643093181303688790016 7397757112657414386820333525008384 1925146401839232524885182688264192 -974336865297817104613757891043655680 1033617916772396785594573632045056 9264175938696081356252712122974208 -489962813532969164288832166506266624 6827504670199946997903020280250368 1885655389001617066608926390222848 -530982295214084243039228863897927680 5764176982835366904641958430375936 8631088149633735637861865573318656 -327445804516537723750366477234995200 1339549097860241925818766243921920 6016985092235998175405500404858880 -219019954037916722766427841900838912 6961135255739043767210872502484992 3864827851546540428253870969323520 -975188141206246904154773392675831808 1795564042073410175781325426917376 209784032062881250676935101513728 -692556565909903892398554362561953792 2729540267828344054606310722764800 6943274335596007525373217452589056 -652015824908690688330223785582002176 1532073262530097754053727578226688 6675988222895205439971063469441024 -476887764296421568052518427192983552 8164994883746588528594890747019264 2780010641846142586214808803082240 -803668498853155092493837677367394304 10105627382397585907757218791424 9670812910975413726864323905585152 -381465070306997223896898929441112064 5160727903991183529511428816896 8060119693566589857507340321816576 -678227312991384666104249648836247552 2699215966709888845176225910489088 2533870493430695244206488414060544 -879590120408517957140299134565089280 3496752870012469848640609115439104 8180689437448646113651898877739008 -477388375243275999520664853499871232 5764539939477563414594035097010176 4444678455364560367421132183175168 -353302563172539188598428691624624128 6887740667228931142343166674337792 331900931393397334161863498268672 -921398085058141226651496036859641856 858179897940984246731050483449856 750657373542370810455072750698496 -927105587785334234081514509131841536 2069824459270490234184015816949760 9723395503585483150462751980126208 -505036499878754623979170769632493568 2150990922244472599378382737637376 6309676097857100610327439000731648 -711553649497243423835258078871158784 7529007167253960395704049957076992 4316040658697840510179084177768448 -51370137554737854225219171263709184 7050209696537000602549012375011328 9369180617673722265059917660422144 -761062186202129665207367231114051584 9005192364348896709292474299842560 5342832771574486846942286337540096 -809497160167590532572917214373478400 6129457537269943494998864982704128 4566140378325387960966523608104960 -3594145878687578034502930612092928 6086822053701185450045127266402304 4906162336017775296342984581185536 -801267633260595433694928395095244800 9756216567535500977879006392090624 3505768752538011979778637294469120 -181250750618940871211725571871473664 951882990530918734352954926563328 5292263808140060574616551413514240 -650923000436703420559597766117949440 2643594679976498826044499585662976 6198879486552626804183212148916224 -687012696524301566901892382202003456 8318445058634837377899479758274560 8982579585198063071728945248337920 -406462481169685189612816095820906496 1669785449111325496510189183959040 1045037399128113375306616491999232 -18330554357090627634176946633441280 877201192741440621655021326434304 5797706378957623362834196949106688 -317395757714145985214487222292578304 9396219392613259145896128757628928 1368855240288573941194392023859200 -568768629374871819122456216863768576 563912960478928533306065635246080 5114733003040641112328922885783552 -823575440832681519232457806348025856 2423505221256804002454635095785472 686819843588343383777646670249984 -731957324434860358758480350533386240 2551932199894426414379902756192256 3921718275253309041919589699551232 -706963002554887712935129438679465984 6311818069124707804765027844489216 9892061605355880738011321921961984 -475708209267243153158900146189107200 1539680062399234893575088550969344 9583445152533157935213878156722176 -482585348010313148269512299303141376 1574073673328588678241986956754944 3785118727492101975385027226107904 -514736067586051872291777620637384704 5767694256076221792217252080123904 1690892042136268235694813806067712 -73195916102624177532950421155348480 3572049202983832911430988463079424 8094259398812373825303583020548096 -868767645301428686018111347355549696 9450112413894477995184608354762752 7041553823334666218016843805753344 -892602464575773332468920501003091968 8428490841055809399979877028855808 9014010608975680396582056785608704 -39265052295433252470031616353239040 9400802984110418493040888284971008 2809728176759880754811291593342976 -607934182163189891649725254026133504 7437185763573488381877146655653888 9507164073081456792804319970721792 -800238380914292503191153908171931648 6462880789946589149628951104061440 539442646651697309118548181778432 -696596194967074847947053443630235648 7261463906803102748130274550218752 4765638603342816585134066647433216 -136991515588563045011453409513963520 9512358022852725388230115798810624 9966310017804545862561689384255488 -334900204419003345996406597424775168 3787011263127213708547683298312192 9705696756816360343386125133414400 -705030886548212724359527765955837952 3426374803190199973589191885848576 5916330897675300097188283694448640 -309971015186376012640217213307977728 4919454255411060937351726417051648 6312247418748676321269552844374016 -168718438521344827188810739471089664 3932971304525550810120281850380288 8478250153551593058260663595433984 -322512090483988838613957872109748224 9711518473946858796694523279835136 9051611493152758353966399655772160 -31788017045226286243077319471136768 4611764000238153349953286142164992 3726326523987351825785275920941056 -224691213041791452697529777263738880 5766659590857946970822765623377920 3933283094370559647316901774753792 -224282211573234213934222908707569664 1587171227569720808017204961345536 8213908175013515754606764861947904 -650358492711590609222759501803814912 2630523462868968795993591240458240 232009534572232796733574117064704 -218219802298086042199931589941526528 3597602705412272785711716456464384 241200986967040692033891174711296 -949076814325186242507780256392282112 4640072389531053859360020388380672 3950946137122745043626687794774016 -392160102730215496454163328812449792 1019671456947849966049486318862336 8816845740774707928637274958331904 -517826829572120999398545451135270912 2988815627067543829480487339950080 9388392610382853954895342292959232 -2026919843834248750647935835832320 9304016158625222391558228869644288 835212778426685978114937533235200 -841895894739856664049486732279676928 2202162474975840210726310236913664 4371751686786059626788689966792704 -680492581214962917922432293837733888 31335920421197065174982546423808 2361877579888438832496058786906112 -761696023070455538096312514185789440 3730066989371649623955220952252416 1360812193695155647234391656103936 -423561672203739184235348823738679296 3303790249694293925231899151695872 4171126463984267047686573410746368 -639978038557707874258750547207127040 6970017503239290316665929936666624 89386792511259361194887371292672 -710939905072577851074832441813237760 6605587341939469298780267863867392 8463041613359387386953538056749056 -722196332312933752763364508396683264 5124386745994048228350963692339200 2319809291609248169235379415678976 -755988710654690819894032024427560960 507975932670994150912991376179200 8267113642807170026563656057094144 -400383660838065870761770512359096320 9779315782320761506576476573532160 478790258951470149051209171861504 -874315769158640624223766474987143168 2991933315569420256646033492148224 8556812974874481583058419084951552 -520533019050580643186220437235302400 469136259639707633136202869112832 2310295211801021627914998037610496 -560482101205836963295395654443991040 8308104408392480347778334215634944 874712935677795533870923117494272 -494719910907719533384710976884965376 773693068938977649658584612470784 3173667099237563763390608725508096 -454837363510387399651369910844522496 3540838807766098589520162235351040 4373931567942230454892389587746816 -938846276711307279879967205354373120 547903884529673366837653003042816 7242467819296836375065939738099712 -985920273064209260641001344337969152 4196118945090565080085317596217344 4446719029483280789259062595289088 -527270638115524534544996088766529536 7630842418459791114148050991316992 1382309256277487402882398446157824 -229669371648348940689099652922867712 8597482199840029485457917226254336 5234696361401001653644661851422720 -771815272505324535509226469126569984 1287038472098924694422946362425344 3945191367132284345072637762863104 -442002605803057785277861587870285824 8853825852838040422702006992371712 2073222887888195653093143588372480 -171720058627279184355329079009869824 5813696977342580521526986291544064 1619956364876977081405102138327040 -853537736238950353683026815590858752 1295728018526016331839564073140224 4571505145377002719038622310334464 -400471909281477137963538831625945088 9594179133716370418707222214213632 8952051688578436053650761622487040 -869885015745331976496905994767433728 2937126856092365758629735238205440 9674270643684855767566999500095488 -844822440334952510377726689901805568 4454249065420778901155585525284864 4171055881729080206018685161177088 -921441407548828071299026673188470784 9369521868498980546511901693050880 2445515044241526192117614509031424 -158978845252617484810267953735925760 5203349589598544636155780336189440 523527270995833052050648090017792 -712726546867215334504187229055746048 8466082940135522246389072312401920 5505725271286595401105202705596416 -628322435631710975316550065426792448 6367963455784169934884951868571648 2007607743320374743604795027750912 -740561269129287208422549152927318016 5282200143230336711728031160336384 1020390293551857463731779746660352 -239263943858223569726184059891089408 8795590648752438572237247574179840 8095158442707140861614891271716864 -606711189012359723969051018957684736 6086814378368565360448054900031488 7163413737628932842380667138342912 -945705640782756629760848947723632640 1308825876671885182344117423702016 5815234765907703776816929301331968 -806732133178444557004239464304738304 970071310594968003027319251795968 5543882313686082114849250457157632 -704950302681560890926905690781908992 5777485921473514828661470607179776 4638805180548068152502437774622720 -885384156481455034595065494962700288 4725011944157789651036797734486016 5196324961106020031879647032508416 -747671062890087167052638575789080576 6048789006063051049837645420036096 21343381163486266044949198798848 -796033483313406804568680854569615360 1577154569415672851034996656308224 152897898827113712002426587840512 -239344531559950729071410859598675968 6967502582166214155490481984765952 6064694707722443880604235215142912 -782219865322999322507325928739176448 590434038190474474736247732436992 3054767870128141358482064215638016 -521928661619811734289724288039649280 1958777016978517693400302468726784 6648156998894372533187566467284992 -394734644748913876662152284908552192 4451814214758476299526683693678592 9384412896079242200961765399855104 -940442254569034745928149591364993024 5576049546367889697414426291863552 4613953980567783587808570033307648 -936770735437666522491148825115230208 877080664120613451037470114185216 9872001284192690774278563665281024 -76272547849095463559188060215181312 6190022088634643345248534189309952 814188214639012379626691799023616 -912199218623399432426340647723597824 24330615346321760017575862861824 6815365181563457507047802490847232 -593701450924423893424495060093763584 9901968191774490871885769434202112 9910482918936918159670503603699712 -993581411962515768640991975543144448 7674001797799262848725683642826752 8946215652320947050465144661344256 -322846322613968641697129568898383872 7150257970746331940483812372250624 173449811867760865023837631152128 -951223922473859873345632349387227136 4674930820870034867251213185843200 7857366342692406818939589437161472 -421831770979520233597379820786810880 8083492878900430403330875573927936 2694349840588411337942839569940480 -186356415549802877488457270769483776 7021605087481756904447815941357568 5326767369532601640246212363812864 -941053573870718935662864480107233280 9434573474259272186071607031103488 1035575856896787919574046051663872 -831140450789189256354759905885814784 3585213268426576889680446827266048 1380707211532959107773012541177856 -363515980779700577374315922579259392 2443116723530833784317506421260288 4618828785932424344477837796835328 -191798643572849832022626096933502976 1888630531451968330661319990575104 9441219941291907277292556278300672 -356898259127648669480792838069288960 4199681358456936460602031114027008 7464327644078894938715629610336256 -968053754858338293071334121045753856 3577273298323108277270325797847040 5816589610123266478277699810885632 -857679177650052518336989358008041472 8115403909434906267839441372446720 9486095758418446700795350663299072 -73819618950828570819937573388943360 4105154717925947677552096084754432 1767500615153532098100297612656640 -675724101835906516144632671726731264 2734522530746072939456812311117824 3146088158438840961203683169665024 -563703477514042853440725008638803968 8123128993664100827462261419278336 4307118930874581997482800507256832 -251346189353384573922486998444015616 5337152713200605857821689355698176 1199340421672070972288959225266176 -520907213711429198314346588493840384 5444780145382601758171909802950656 6827962372487634615180614432718848 -170130618818042093170985434018217984 7106296959542932751815429603721216 2938010725849552638083616907198464 -155839524082090955324643659040686080 2262074972714552167203919890481152 885818414607850561456388922408960 -729285349824831534282674309485821952 9799412989543292985495423400542208 3585344052829843957284435006586880 -377473871468476823601212240808640512 5518339298823149334240388269998080 7130596968806527676393852682371072 -378078669281716149947068607270748160 409721312985065063320492559040512 9976725818654319785080354257240064 -901944312014190465290184870454099968 9861843317284926627108252026929152 6235278761234123190954404016553984 -11662799489546230253157478494633984 9796484212150628054005468417228800 6666817610545304496365907524714496 -377001091307697378920639489497890816 1715928773020762344273787188412416 7493853678276360768435877262131200 -281273587931179892425291137799946240 1137599910149232336389442128314368 8687563350897816429036323276324864 -965282759374983192943185259512463360 2119668304675080541118108000059392 1982405767418313447555481942884352 -313921104875574065585242326354100224 9462893574601636392027326326505472 8120189392516877880736039712063488 -45994564205267488744804100733927424 3472169426619996176092217638649856 2923251922521530864351548163489792 -475183053423540236735174969206505472 1972354911113146854789912520032256 4936171886158379958721550133231616 -209086829291207338852812662757130240 2094524573698803515062189931102208 458274396878250836457942488711168 -527626626566432347362612185961332736 3977718589218618409759550843387904 8584346860034998423149306735230976 -651788469920228685742566190968995840 6900081169468556227179081501769728 5886238748877095947925926522650624 -553676770709367839943484401774493696 2634244345424846709343409072504832 8189679035043578583965855740067840 -440511248034975377128153018227752960 5734324764491820166544066628026368 5915925967799992759443828223508480 -47252643115995668978066169975013376 1937736261328868552283079196016640 3783000239683654784065797737152512 -450387052387086316449956958771871744 3684519078329396346464822221602816 4389427301703125491681604281565184 -1246430549606814450039254513876992 3017398080553575346209195684790272 4862846002511855975035878238060544 -563965168826851612236764495153725440 796549554850545268473597505044480 4759241103719932380502046493638656 -551722516378904461331675308533743616 915423750141020796682930650873856 2616165955905307348257762975940608 -7364377646177156661401359055060992 7395341324397793215273436113272832 2295549995309863134816957336911872 -707264166434890439586091901208494080 1429233869304606728106596286595072 4154123458752037545596717186940928 -900837969332067904736692639516065792 7407508213990451374193528493047808 6616334394190419095327672398512128 -486527219053448195715508700815818752 8651859621306877248577832247885824 460755099881529619381698286321664 -259159506898387536421249485763510272 7066010421343753874802916081008640 3288896905731591699185344117211136 -216247555529174509850837034790289408 8323839860743645134148450893430784 7142665201361511498713590908583936 -50905008780552020996923142065618944 8583192961801527602089877470969856 8506136096425664565920546563293184 -105513131811141849160285405948411904 9401701466137892270313293043728384 2341194650661458856337111483678720 -233962893565619326005812565750317056 4808022083194899359418665916170240 5401067155986226153212930919759872 -924999485735311742412643461956108288 9964458468358263426471858498699264 6735263176320442165365174114975744 -289906924238278525449083019168055296 757794588203310686238360419172352 5526085918446447535698261368111104 -557874744279151119457172853153071104 8120205460054189731038615490789376 8504086981202297677597006842822656 -690481906567760807584355570090508288 7015180243762310398961195511971840 5579309070154041305261482545512448 -887838760601955873082376585627041792 4801008226253937160944423324876800 4820764442061975954124399571894272 -675444344174317606862452200241627136 6045698686233025487022206390108160 1328732190987616610923995197341696 -763865872987420995203128351933857792 8643414969787749564849288917286912 5557225822001131558919012180033536 -710717619621586299816504714059579392 6961747084542240404233653304950784 1364669156640047766845873520115712 -16980729332107850284385176574230528 2270480521541275054708299374002176 561277317391103333884310767796224 -991854633611234434504442364056043520 3900800355449687760126834204737536 1239296362377712690577706642833408 -960109729905490051902595406558658560 6178936092783633650113052973989888 691863857565726131401200691576832 -543498133079971109405692434300534784 8675417772625222802563611123253248 4500881110666965753718116752293888 -216712488776852889199015154438635520 4332146393020915722182257478205440 1675155639525764235747769010094080 -743558663294079078847362765309345792 6954873013622912262462521988874240 5797611261786351388854424096997376 -526326006035719683409954216922316800 5520272707083866756707122688294912 6765455870309354468700564324614144 -78552583646997833478460532261388288 192988090076550415031547337900032 9126574402583850072057060213653504 -653815736321357121383938262560669696 5862014582517703329200956187344896 8255304358615556370432263016415232 -412733313873322425009781505165099008 2357705446893532176902581498413056 2963305172456220138853665318371328 -659799238492350911982145341810016256 6824578903090705514944996753539072 4701240346814145163220533873999872 -818206752569271807078412413948657664 6438110139361256030311448515182592 4460415823496467170124301516931072 -42439889994046474967864117829828608 7497191259995583093768440185356288 8063656632518973085582817990017024 -468496971355334863771073795126722560 8949243164977780557695098493599744 1412809231671196136579010339536896 -932963458985971800742140881877860352 2081729344118184604621134110916608 5623059025440454163250867534299136 -792768034613766853859099604083015680 4177021032206011521365587246710784 6172008950047814318543998344495104 -508339069788262855129729801736159232 2759929061565881970086789420941312 9336336005851896800826066139611136 -728464342245491804662692663045128192 5414700097474120208510085660409856 7934573269791019885135820220268544 -972499325381430489753767909020139520 9732981241681111667291934460739584 9352650880311216327175184563830784 -602364448281033944904424190141005824 9331260831634519859052052435959808 6659621197646830004443526272647168 -642796182690242390642270949867520000 4606661360651965871022683128332288 5005277690556422107772971516952576 -207199249259309624184731615658770432 8225938052428286503815854887534592 9772841927076963475729132304728064 -638275076367780141568464953681117184 5282833834459452640946509597114368 2904007041080761485659915428036608 -183872061739029516291735539081543680 7214713366936667989131651427860480 4356461524219096347105235734364160 -355014349442909471693251847110262784 8662579337170295137411401735208960 4274303927328762643344359971356672 -667094353220416029207285260003311616 7308549455906321347043680644497408 7405739524216736095865827823190016 -584743210026564324920345010857050112 6169556724032918977238059800592384 1301572674114649067069384630992896 -613107714481586969275149307994963968 3986029921982825933492925017096192 4219130753373899634264675616555008 -47106665284922105037864993378271232 8989298774340664977417003618795520 8842027094601074217325164276744192 -495590422023703465386405052991668224 9780280635963117112628950071246848 6775822905231694126748854959210496 -182342972721492019141256259857022976 6426005122100505735073920637206528 6250164129011881468625578698473472 -888203919865940665725105662546935808 1192061060113090963681882018938880 5723308113598183728465406016356352 -440661087439443986055401555623936000 8949933906880624339992386308407296 7990851396471846134171249863032832 -800415004777046108089375419048919040 5190769118515118324308201799942144 9600825645242973032064791458349056 -463816697479312831340740261516935168 452528029853920974360734257381376 8712159862305615273263688249769984 -586439262900235563802092548363649024 1864445366431406907043995342340096 9769359163600988717314965388656640 -159322048063959974459264338480857088 8389154613297959928519459185098752 7736805715596139776063712140460032 -42702652779649386951790337588199424 801250644766430099638804017053696 5814818319981054163301778300338176 -251356632990714429380265208300175360 5570590854948844992611736262541312 8153957240855678579896252297641984 -155006545929047036304284199090651136 573717081425460524582055601766400 5383101088567720377883568625418240 -67785991248765604469877327001550848 8545110376108476633190365831102464 631414469766848137809052901048320 -979295683961209628744842198596452352 8344397891048100874652840099840000 1359743344139613695413345601978368 -29292682248124215973775315803570176 5309981084676476638615207371866112 8392380146140769516160443251425280 -106590307082243433551574561879752704 8978248686661951690873418297638912 2913924336086502222454300770041856 -236596912419606285337535894790340608 4563817407720865009068733890560000 8508303720083130001345851244412928 -156615893245854417448169252648386560 8246797205432171824133193081028608 4216000732199234563734672202792960 -686024281130474187681648960023298048 4157052880895103615344880178429952 7448061160968814939425286167461888 -35907337767652971737821984560513024 2582422046882772958289011408896000 1330184892485668045819485112762368 -949757878053294159026658029187629056 6527469959300735833527776108871680 1582854245954701364222566072320000 -742084047059992815386260100104585216 1654568888240209795842944054329344 8649790955539407126227428189405184 -305152968325305624666769548319391744 1478618557154485906430922386833408 6207890921998188850275855192031232 -431043483934253174785098879059623936 4392915777184596930465827020341248 7450074016412780052379273957212160 -296873299166936087742896982154280960 4469671713254950885356677923602432 9929822972804368416072876790120448 -654837159389671740634983034479706112 1345605856322163480990696784003072 404427743707135288965789030285312 -813365074338261083968731230276419584 3116275592289352568604075933827072 4675543533915726773593882243366912 -396966361048987265410969200855351296 1469613793130999348944661894922240 2391271514158328906170477462945792 -610405784529556471933633514304438272 1420969557109927768557840188309504 9889808381914631673599316623097856 -496911422230288338878411194048184320 3627334152590488386598299032879104 8631008240332572843585553215520768 -139189712170414096507678679803887616 6976911040371398558888088506990592 2620611189020154004009108572733440 -899797035329213036884514203624275968 3660191804799937164719025616322560 2015380990168160692505075838353408 -718028906329366495893323644231745536 5242387727911475041126114656256000 9201030203706025492692176551804928 -679773543020632475492335540913569792 2532099206340896223527158490857472 4040779040695266642481939688194048 -554290269462194377940167803996733440 9038142782010449250549437172809728 2369981523979134330762427174486016 -158845122467452858710556775515422720 3254442649006703118543729708761088 7786806725427368732522663139868672 -799733511355817422410034643535396864 7894209112649613814670141645914112 4041698563870596245512106708828160 -794922874814708616524988511428804608 7107646741160013551244012119130112 2316856152775743392321785634488320 -858326061475019597479393789638344704 3928341163734021344234251816534016 8520074431165313451886088007188480 -616294549744108226564785714218663936 5677980323055716150095833347391488 5342082269722801866160605946183680 -864127441002281312387814372480647168 9711836516141779421797425742872576 8045535396285267856057747829161984 -376802896669977859922488402255020032 1546434218768022427358938945028096 1539300411939790252268313286541312 -814200975697723852305251375440199680 1954618280478965096590342765936640 6339052246859475279436000320815104 -217793304949838068346644393277521920 9371371581995219009955906671607808 793710973221603512597040674635776 -539950521076073575577500027396816896 1452057615384493381458140034236416 7317813117694385401140363908874240 -229414645317143796011764094817271808 9761702431180059871896981456551936 3880325766603771971525344160120832 -728119711873630383574921919521095680 5334176961336581959449061437210624 4748746096627214388306818029846528 -657766120447722357064924354836430848 3039652839887816437976218267025408 3318581406066149614520599889051648 -890573220684833411816127220540243968 9110561343120742080212310368976896 4014338245258880769260362489921536 -603243157182764592730508743829094400 7926874978552530560776273827725312 3588024552057126086119536598188032 -868584484465252797410963184018259968 7032234205375552284275716143448064 8463632942963344227998603849760768 -311710165434274976306229766191579136 1167412374945145974951026597298176 2021751741294304301706680817680384 -749795866938675918831133605245222912 8975744314514614656929473104969728 9535511575828202038877684907376640 -608774612036308618043614582418702336 163826300417885331839733349744640 6174514212542470328097253449793536 -969436322870852140995637721631293440 5056178540985186662417383955628032 1948372993195051699918038659760128 -625107674812466776857239553967128576 2541790708834697877769800065744896 3210462586162060422623176301740032 -802705174290133813420745323234459648 2070126347992576394316565639593984 5671448714079969812187674023297024 -792801044583066023934492888795185152 3391487420535266018125657854181376 4305621827645964180487374697922560 -851857049473964072947719896347705344 5163018823144048699156842848190464 7415295615647218145516914800066560 -514440522402679972993439563830525952 7784330381964349019748486407520256 3191763897252144686331781078581248 -236529574405983133237994901255225344 984724409436836877313547106779136 3269341884554973612211393393590272 -376256668920461560294902040761466880 7991835977185963843665801242476544 7555268469219246692375520625033216 -127893389569762301014499246517256192 335622168608793332125176650792960 5824204642535701885203496063467520 -707384752402908233759859964859383808 7106769180456356853176390121422848 4093588828881307085755173572706304 -406816520661248311344906077487497216 6583338425040213583035817204383744 806547406960267267324360924332032 -1897928303787890267741259789500416 4748163377197162981683249905926144 2816908842892047366772022809985024 -744012890977479025444832219985084416 2171994157845818451032923971780608 1175242162802361983210401229176832 -312132446951019457105168031136350208 6754659851028018363086046733795328 3180788174239521688366661805015040 -170724028497088130877724329242525696 231763643462749447048804419239936 3645343395203189782162757935693824 -340204508860747202486492960263241728 8842860443915676637447122354962432 4976516082840758689119662967357440 -6631446138869569609843228905832448 6135675655536741088179011306127360 8112552519201407097724745635856384 -283974824417941899860537570150580224 3789616941831301548574226392285184 9129920061841588505729640890892288 -266539561635381284762469216571883520 2397351580999965696480581775261696 5269275104081080528368055187668992 -739857827230502969647685648731078656 7141816307987749553784523721801728 9742520410563691106738733284589568 -856713345148239706954924197490458624 288643708585290677349322175021056 4244620888366053386782578546049024 -295331299684037881176847305096036352 6683242214446187506199340318195712 8065911546062724711157134887223296 -195762637149859548197576463553134592 1761567955858952634181804242239488 7187092514265065239790479413870592 -704823425107023805075184916210122752 9614104251024014511121953286258688 2268997164810916317490978953887744 -956833512306074191454835348995047424 9096225293324686576407376639819776 3791935945788238132073734877478912 -126974566321163987711418733227409408 4074536404520973542266878054891520 5714041060843677205675018077339648 -193329561778755891047685745796972544 6058546448733932563547353706921984 6257205884207668833852559829499904 -989022037506795453513780193650540544 1419514057192841411405110656892928 7486920814377807755910753565016064 -60213771713882839228067273183854592 1656995893147060603513495453958144 8340081612491302173070583039787008 -918696784465750062741517141333245952 7999393114675517983980157220683776 1957619925829138542261297332879360 -629437666644581875927795617413201920 1747479071255133067166007611621376 5907258727446270228460317716774912 -918216847326998833241958983300808704 7108276763541451947163668812136448 8998080215791219063964968173961216 -845238009137015378320370243391717376 9138667481668683114139834023673856 2116055757653969733563674980777984 -760891913751253914729613616216014848 446897099620033961100940463308800 370462602815869544484691796557824 -711338050845797403767003751548715008 5126834612468683274528224526204928 3587630881874804111043336364621824 -664179470876627908021450898134794240 4210706120621616876945238784999424 367511175607744975832928124665856 -88769281623370756508867425428570112 1793184000876480988624365484507136 7420805498438739086570568418328576 -24298098624798166683353682517426176 432298765749569970343717969592320 1488888668187409803816147867402240 -765857552785205933257146883823894528 2512796741591008800984108007161856 5161871310742391655952803809984512 -411138044965841311909794379703779328 1965451084466069116274530767077376 5419829522341989447092224741343232 -403054939992950096658554665876586496 6041902253916241615760240089759744 3995692233668582526714178172878848 -860165323389092197386910593703739392 4757894903410805865691064475582464 7659483296451679352812335634841600 -91213793284123561890372961418870784 4746042628261683546037544384724992 2899124185805306478442728344518656 -631843539979378052510530003678527488 728883861315210381449957159731200 1172503113140359382560629497790464 -995236120750119407150053491289882624 9159678209970163309152674754068480 2109255167158236322820745305522176 -870373432221767361866202528346013696 536265938044144039860309464186880 5379857362146670184267213275398144 -816882438103253194956753842288459776 523651411604730307892836162338816 3783330939978977627728476901474304 -1474765465417929581419922106351616 7835208478171665240378129462067200 4824373785405741661690927545057280 -615094522563221135072452996900061184 3218237338875663705355056062660608 3981961224638013286872937329065984 -805868462523204692692882113714716672 3279852325196039086359318802464768 1857124533594587794679131935866880 -553744585191563984970395353327075328 3160287928347134595158548406075392 5991759231953527318940357754880 -434863065416929024150680222285430784 7563986725866000115169056834715648 3831912668230966621642717283745792 -487866166607968917543924991701024768 9777578780921802929209848256004096 9536836506258822860767333535711232 -660969375816868846207930055715192832 3624684135120267984966405989597184 4178597935673192461835684301242368 -311391418574083695499561930514759680 8712212102082605073793842409373696 1769326780777962060035577027231744 -324300829684090016041840698739130368 2610881443501149071219913828335616 6628743575114141029763284562083840 -224598303283842201973696068149313536 5865424298456097121491942237011968 8716802945183608034447042925297664 -257637004389732224226154219302813696 9397347487952719556708429572603904 868277229814651376641291824660480 -773572998995603560697526106095353856 4519935806915770617284226690580480 2411876684700363695451790911733760 -720570486069025578375785234355453952 4943985887411931466773741111869440 4044620358227424195017913525075968 -312114384132378405331422740308033536 1946901737354417003453132027461632 3921063616602208165576640271745024 -204444340645047376006455183387131904 3850850847000499358047681845919744 1740778528495463049847573690974208 -921311793549160902371373806455357440 4838063731469195125686451130335232 7688445974474097335387070658510848 -93671926365942314684198383452684288 1963269568462802613126854084657152 1136070060984108550604432833773568 -365239691458195262056283923348979712 2614568008237856711272559768764416 8936049039902550406087242422419456 -736477464020138972449557354045767680 8520522114110238550177820031582208 5273247559071820581495435077615616 -733098189917682601941999583934545920 514226228902182116648682755457024 2390064353766856520541109821112320 -412095000481871945589265773780533248 9751477805618945289519984585736192 1043130753177986900705594161758208 -2528940411158594348897754907934720 2498541950352954955664865951219712 9598877878017911754124630352199680 -837418198938970425984900767850430464 8680718631896138060718914955902976 6227586725397958372336979446595584 -53201353964258297718253067509432320 8419304075233074279634744595447808 4968273319854035164993137592500224 -336753012913418549271423414085615616 8420472295645948368407231958351872 7763521726431957635207623977467904 -271364498332395752503080053549039616 7899989165108350503958463471681536 6044670784477172475191301003804672 -482036978374692824027594730676158464 3335087204112388666753119663685632 8135514342729958083567994657570816 -958162948300094385070693637915934720 6005780693805088912403758875410432 7262044285275423290279387589509120 -689100294862272118164068518431031296 9953199226729452302612893471342592 9294238035570826842993675298930688 -301317266693186490847070340970971136 7833200241678726594726585138413568 8382338159420277988754651074265088 -865699700229311030212312460288851968 8883319503311554878933923415457792 8060759067569297381216946397118464 -474432309374637749906866775533813760 2262853460360787581032193129971712 4444658276936319930098324489633792 -400019774863529701186665135602663424 3577524422453906530385254238126080 2830357338821174292184304403349504 -401100712652690300572068613512495104 614998779944608724278333881188352 4439255672117813800592594958286848 -126951626571292906794858303830622208 160447247420823668562203603107840 6160986972488316742640476465659904 -877248747601420303474567857383145472 4289364343101837299538810460176384 496359538445832328675371503321088 -529342761613864819048451923117080576 3220370758277184204634192602988544 1727583374934397716140887895965696 -446868286366839141096636196444962816 412830739711739722469744081633280 6980162403735924449793565580591104 -234953193973421649391134637664763904 8880589826793697395848956704980992 1438931114484020791268736008978432 -518955007555905987228769794404646912 6650149376661972542902002203492352 206259204761658040628665978454016 -32944080565625017776749390440955904 5969444399772031885718931072090112 3192771992105539280415638744465408 -326043931831085047314205647984132096 4309320209286337378628271851175936 9253456120030877206019477273051136 -83645527493536293632324349965893632 7254542437683635704623325100638208 1282503497629248364732968998010880 -505435118285471696112154723175366656 7096165730370470124324194751610880 1319605707143660048432565594357760 -116607563976975385223975297118896128 3880849926441863744020407761502208 8843565305290774755842175038128128 -110457695714077170249913056266027008 9588060725548369178339509704589312 276836756194168759407346855182336 -206512457188816742526370072674435072 8775308538509837346802523827077120 3963688763109618203646952434827264 -25194108489584278030243628331302912 9246701239080992219672449032126464 4987855674365774747688093293215744 -303433483587953500513482569544630272 1515220079528527609693604803510272 255155915774563625358349853261824 -130328246599233798988972380622159872 2620551680773054925625991861633024 8467642623254893470937678635597824 -817515865978514809870707885019758592 9031368264580936397895134670225408 8266650758096963490083151319924736 -149879620465882851686871281065525248 7788679917726152982544615349420032 8478804552602243167825930034872320 -685054358248408481821661241714671616 212581252924797242686810577960960 3100486262261688147672107992481792 -948601761017684032935728438633824256 2585955307830243093631534846967808 82255742660507412147111672676352 -241864979267919194072878675063209984 5628836701604731772357136737107968 9085858642137779809278203114029056 -193742791338591134779734865083367424 5707599142623964701593430438969344 8687071332239169181132071372849152 -682870247585774682385841319271464960 2390277987081253687768522889887744 9706131509884474170645394258657280 -467782782331899059343998302856151040 2949042490968747842130581288648704 2781462390032442377927907468115968 -156685431105740386262382228744962048 2247891489760996141090019588702208 9019701223984325141467398720716800 -923917658809698639849345712081862656 7924474811130356545730882203287552 5735842468273251668864101758533632 -913741714665055020746207311165390848 1318959603411058873314283905613824 2476184229696189577051659862802432 -682598333467407186171432930109292544 2972535075084005910665191414038528 6301017842255478251177025420132352 -320174787966959100303891765647114240 60592469539204999739895791484928 3253824904042647344561324195577856 -975729894582774189264803124268236800 2730320795579986185900354908979200 6637626267866041053888145543659520 -211619275028279267874707581511401472 4351420818325046459573824961642496 9348461391882397043467288320147456 -895607539572433773363698956148670464 8305364029392320003288117456928768 1514513455929256973746769787617280 -561217452460787173545637366787473408 3478887168204600640133227031298048 8624074397098762352413365791358976 -163411071621893485896522692951015424 9744528663922891381509533047193600 269246300139375703023616188743680 -612996256386269552220097172656357376 7337906181741672218706568263237632 6022050087449216510819198482513920 -739124862298168576320737324348473344 9859565291807797017991335748042752 744926627355485510785984941260800 -449387421840317005110508539992866816 7077783467278841601224424753725440 6894603455484184550812099532554240 -742555126693274428798551965403447296 6435444900207076384771174215712768 37711118627323407538553555517440 -886687619713171603063105717746532352 1456691254600866658669080684265472 5124777794284994438815514005340160 -381435011914324342849508647031013376 8178729903918714541274794337239040 5863878676501161493778055416512512 -849190775141048908866043970244837376 1051058671542311769888452765548544 66087285651549198223157359542272 -310694785845569089903077800907112448 5073256656831494083421263668183040 7697767853560241784072417442791424 -67195131983691945120177782687531008 6321189696525956714403651878125568 3124313841799884027141846451879936 -129855889841428310383428385464385536 7127391143116801233553833347514368 7133601151560767220522203662516224 -193057710225754229226973325086949376 4216817528887517776827290778337280 2029770308227042620090874209501184 -401344707039285515438909052361375744 4998431807982804492242300642000896 9794692847986164791193234325897216 -1347254086293863147573246144020480 8811774414985078954491631219245056 1053267652914390107229411440852992 -245614283885315750979803369237905408 4663359770925750625450295348428800 2713400536457099657343129756893184 -220621352610696222688239791728754688 87733235623252859091846686572544 7736187055709474157133480654274560 -457905486008703823355222583674929152 6581982431066562275027457205600256 5398230270564614555898185393373184 -999783200139821028956540667556790272 9976759708244089068861036739690496 2338682638518232542577076828372992 -42802625819989719940565757958553600 2084859715295754119684973024772096 7880828406661462226727554191982592 -674870533300441316309834335101386752 9790376713672709461154432555155456 9921978878185802288277006495776768 -330270370761661848592872746977853440 7767846123968826096509174897704960 7583588021508171162261771010441216 -446114990523960464841629559924195328 5855649638489816303853573289017344 9528912797086589479498018784804864 -434740266877678522847769861220728832 4633869445401834117194291433439232 5905671698626140968960061312335872 -393627101467930703326259440777166848 7007167138581541030511186190270464 2005563584841287895774177137786880 -282780421148764911053673627847229440 2933082586205240072224563880001536 3984247243166350202866746309738496 -205886499743810872454243272150220800 3920989603543223820236582564134912 4105054530447168020085388437618688 -142096923037424014500604480388595712 8178111684627089333395458881486848 3665584044929389970784717339885568 -540685168595856523744950111388565504 6456105773614215993739202598535168 5690678571887315238506558912462848 -612142140841779125654160346550632448 7509371802441947324658095864414208 9072389382942032122713276327919616 -10184636819288629561498249379971072 6055212052221591057457362944131072 2032939453616990350117342095081472 -810336324726347625605065764319002624 1028260585561309571324935883718656 5949902201013822862455108850941952 -603374262383383973009501446517817344 9559820984259447484140021256028160 2668323087156511257958500798562304 -917059620323165012146749518735474688 4675137021396316776166440357068800 4105334018003122720342467508436992 -907836981742514052082222219676090368 5400790816852210531516550813319168 779626296205674799481343512150016 -322345446210026386649704403656769536 9785320499056228840984262515621888 4203030034102924931399726422556672 -595660386659609828852257308643688448 8268409632683275247250044929179648 9446771455022663265363261518774272 -813634009729539151501575989200158720 169443696017902151884083784843264 712710143657234865871790385659904 -548899967033829473068544194609414144 6650242740766312458680519788331008 3532781907216022178993859750526976 -967154001040997623205782539208753152 7286303182421322429717318199148544 5568504087643482026395040198164480 -918014982502380428278481721816514560 7291919836573974403471712314195968 961616871516143123500897646149632 -572033021316563449710676911763488768 740877772249860938772523270537216 3151125967612693313814918540034048 -298525063117672852433665036535201792 9613358659818439973531249585160192 539511732198304394001603029368832 -191726461908346917263818736304914432 2595036068314501167522142253744128 9550522241681970735414285306953728 -773294034785010629290976827416772608 550399800059672807816707977510912 579270013482311390436672963346432 -246820158104495993241606103752507392 107694466862757657666187060838400 1808603035118383190336099131064320 -376795276108663009334186855876263936 3025980605366007211682884615143424 5474688717446482483959788480757760 -824799939449697516588348308558184448 336700913182432020935455973310464 4948839223399315408168757204353024 -138865095116801482105798805426274304 5768224972168962505693497793708032 5308038809883496868624534991798272 -428375696160065412683252648613249024 1356707324110663609234944828637184 212074216737554900817206197616640 -818168671217302931540348916614561792 8289358264578809622114152940044288 8875921972559941547892390284492800 -823705838623318126898708775144783872 2051315682327920182566071507615744 9112110512651104699080020684963840 -524806750471249042700834692705288192 7873844280872962214423559797735424 3537543133263142571262185949888512 -751923249611185180581317710719221760 4357674276792026378321303546363904 6612993601084824735630953021440000 -331335014954932170249751858352488448 5010401217733898219523075683123200 1570281485540624510601162047619072 -345250491609527079494101698865004544 9822662144779050696231785995436032 4410769780308640711037126069714944 -147061094330487825874379342327316480 226795400267898796687653274124288 8045330563486287074484599797055488 -424068530596992133743977736368553984 5112905053669159616648055906893824 7962010278608503798609487362785280 -592122390037015378864172427770855424 8590480795395894100440359093927936 659470712547941584422430044061696 -494090959555582746363256266981113856 147329241526830775817029734629376 4592542278277143347698216676098048 -350638293624574987212312718889451520 739071603869399481125930488823808 6216877188538696784020716371574784 -213291102442596678389407862258401280 427756028407552608218456206082048 1173547418622575598604075808063488 -922753238787535219099260180282474496 7118532372814903583658168731828224 4359698267604310711658947524165632 -429948620787092647710059769288982528 1518560759070896055778568126332928 8924184399796323368736754512166912 -28322896162275566193278705383505920 6771228718710632396138922870046720 7889691786757149343339649028849664 -175171282522437195066405493810397184 8055402370347172373569366344597504 316180292415467995413697888518144 -716512033252436309301404636022833152 4961467998292259727776146385797120 8032874587671274301652853705408512 -862587629250547822439597770371235840 8147583388853977861488664545067008 6497328327703022289922099832160256 -682016622309895156529680559756017664 8970030635118973321395495675887616 6928861282376223762798160012902400 -521041964419139252536522714533330944 4378805043968712170684519641251840 5732598433290851258553939318013952 -982025637770751227155172644477730816 588413573430736531091553184120832 1115037725166854613251880241856512 -898511173017734077639029595876360192 5566034343480865251764389917229056 6950842715912285399236573229219840 -624499092706043870070373162009231360 8366721129567688270127394040315904 3762603084095070895376998258966528 -264831960676171702803811815529644032 3761934276739813479361117295738880 1492739943702096400626466120794112 -751244926608477940870589308202909696 1361376225300719784726802313773056 8060357098826829447484381048340480 -869089162942167946370570292488568832 6295974500656201381907539358121984 4495836144982031420464863561908224 -439890357367432244012317532139552768 7975890386892831830635838221320192 2229660835699492380222914494988288 -67709485647268593088455012570365952 2814108002333035436025169634656256 9210954487852427494220884021870592 -171280176800169179799371785621733376 4219683420880491801906097441210368 4770008018128750074988218650984448 -331855892866961322192949868100583424 8362728724879359376223034494943232 8751423070153586212853775964569600 -70620214275306453489361116800745472 902848031646514806927278498381824 3378903386614353161170325526806528 -580765956331292456662389721088917504 2765486968837478670389136295198720 9922096649829150205629227260182528 -52748099147929030323152417353367552 4972710882292875371227070643306496 4551402258433291787003634825297920 -613501752849312921981781582454718464 9035962035082252045557200609869824 5123572502127882964855611283472384 -797624369698279844286352672820297728 1109765840182983114454741622456320 2853946358684428335049752826609664 -900149154536574968422432753856806912 8693850230731820480417728361922560 8699445200590414683017715833110528 -837938639022532520187932298037952512 5577837590239368075869655392059392 2097488227725516378748619497406464 -955757563548969043257751085346979840 8171151407562715628540598851469312 7823185086338085847813521865179136 -519319520435010076849558842131873792 5981324898603595253163518356094976 458470456789519251896745056010240 -662985324319320258068161189073911808 9442762318127941847796252732817408 6970566575624075829641821288398848 -892721602427891708454371306994925568 650059130496108971802640617832448 5761370517810582118667022982184960 -143656738752315906964167522745581568 2306644248279462254925766044155904 9357019516864844959439763961544704 -698978765869192291097393161392095232 7649409906946689664662325761671168 7593301222109882093015620749623296 -329293030659615883454441547144101888 1438432947881452974326953589866496 6058979252288777657470545477763072 -274627864806613534375385691209072640 7668725415136612830697714440208384 845654839631779556810286117683200 -151785753280096236298032434062032896 1557933693308014014022240954220544 8009850736806035887136008021475328 -105144775908563762851115457354661888 3733847429325207201443683009298432 3001585202654105594302639848292352 -780905232173529502245022285416103936 320443674235221428099721824567296 6643138899926016619673887415730176 -459570811414888858309415521010843648 7621668872604752047862351055028224 1694377358434361808397375343951872 -634774138999560407560639209661267968 3868451366565551469666521394970624 3157801801981031470781341294919680 -28784032696736508195372741125210112 7980644889314884871858295830216704 1984915954372933711499524472569856 -941831233188912335254089327689334784 4277538797978990141648868051255296 7320417732575909266899727437266944 -181269473012628042495910792262582272 9650099094733061557541126472204288 3624357719191120456364085303312384 -882104547792006093480545049414467584 8537545508030896381851731404783616 2701779830238059293158766251343872 -118891633109779958049018320852615168 2210047938070458460304360989523968 2122389249746778588872064972619776 -227843532708567710386461275544616960 2996697169612743002119192786763776 9590854008994601149641458691604480 -365150203615557889756673925372182528 8633028525512238479403254556917760 2023273175283645659115550796677120 -433943111500050357083895482929905664 3619271202397650272702511846522880 3937042028161918092388486661275648 -683318795082245689457021014140518400 5528088972516864956303885893369856 9316153237234723779385360123953152 -542675595499313602331953591549427712 8012852848774752697018769578393600 3847271362186271814468078885928960 -655130873234539449151238755816833024 686250539124109740222176714293248 1847862059953753568903851134681088 -607757158662462598967753595093516288 8799697285217716479637760403046400 641147851849212872239895959044096 -947162763287287823932961398070444032 1823898760790887291687998683348992 7580945263350821308514570363469824 -68663504606455099463751017795944448 7934947125361857084549473629110272 4837928708797920610941792702955520 -699440458462833033405958669876592640 735394384649134956730803059425280 2557601879765401421782155802968064 -752524415877631187214169907205767168 93935954074233254173225640787968 2643323184023538484150789862326272 -441247361610706798550770601766682624 5494077311563129855504804061642752 6354448330433590166155133282418688 -370435862189277652905985847389585408 712634154905488986807002195820544 1148214950012331499069683919749120 -412759375581323049569688667266482176 3772756890961321834546284344639488 2526712647536823792821327961784320 -410544401425117964761990537188212736 7204910039640492418354727668940800 7702333279106864112416161030733824 -82355702852803085049680081461444608 4771590939110362888843330121105408 8399727983832683254754400607928320 -317650511035554675523657673855729664 4523916282585422140923606930030592 8740302352673306997591347719831552 -312397364042760407405824142970191872 258310264657540383157086607900672 6433057917415864443470094515830784 -733835356256027423551647264047890432 8289502336414830213008889137332224 6667573463638142637232469850456064 -459152467997202574227911691273764864 8023565600072797884613523784335360 9855509568833761435158174045831168 -922608959189147519489259807306678272 5299362107397693166996662939287552 148540328572548358604564610416640 -675981057763585479287096626340954112 6176488008339782624376788669693952 7601281843817330003177986584477696 -79307728158557494872794459306721280 2061870004273813584075810031009792 3334066644552514082026211189456896 -597691324948160214135670373355618304 8192583305147859664475272251441152 8484248462932369039771134838439936 -698563155506756400933710727057768448 5896360044642319535790204563488768 1449683929339262243607127993090048 -2962308885169897562564872256880640 6171459701135367630309884235350016 6257354303374297695611111994294272 -493439603042565980773516489961504768 6976062022672969895213669967462400 6348379165573011106598087271907328 -514879395322361566521485723879604224 6323719116306091553942857651847168 1920350825688624920296045584318464 -835658747530738107354310021937627136 9342014831584578421876007599341568 5600511004424295992504681299443712 -92611459348486571604478213065015296 6814089732328149192482918554927104 3931223322763054883204038718914560 -719343923166636541036445656045060096 699130275434044372425330009309184 9476247541250284961586264154308608 -383818785260501948063494503101628416 7503121523077025095324520085979136 210950190847470974884133006737408 -832239224740268613143559148624936960 4841417482079303190668484144005120 8623187638330404872415560127741952 -422155964935094897763511084888621056 2298306836344208160971333826510848 6290721721120766175045877952937984 -405171055682245558104996332055822336 1656166063780179569758372464951296 1424721078031848761036847720693760 -172684125420897285774350275972169728 1781397139373876655640743820394496 1088924739566407458174782555553792 -681864052610183609803232147446693888 5801635374768113636517959931265024 6677693264298986814094982722355200 -695486507810111688898029455851651072 8555539192770585306100398920040448 2788710258214790709231903737643008 -514363013413769693405650078408900608 4783237765942006645162165445591040 8687958325843005422729640552693760 -132844122708493143835166960370319360 3748067090623268631069473321779200 5353841117803153043614407873003520 -298086442769849413581260828994174976 5324159540212291869365348490805248 2281141149677968784990118606798848 -486540627312893640020140581298634752 473158241923927917392847605596160 2601778077695397945555395236855808 -100986186890668725289248941576028160 9454706208971081053420676534239232 475364968273798941675850551001088 -834304622798957136121832924734554112 2697536083449717895962731705532416 7332388261404974142796392732557312 -927150863840572480066533127241072640 3852890558399603238529153082851328 137292633675194860763368738783232 -146123526303205690374681318536511488 813977349063533973761511793885184 4864508425932123077266201464799232 -948560663213327847940226417655021568 5527020230419722329501412718804992 5623207974190057327412051116556288 -292498140620400247445603013063868416 2594719383085444035161861300158464 4646939718510838343070247410466816 -354191838082323756977109281907146752 2976553652587932076756141879590912 5051269380860446494499526225690624 -586705684688030553610238164010532864 615542214049770309014905667190784 353396626248427890410197111275520 -56068179812233755693337016472174592 7720483993187087332844878379876352 8074219470994224678313035126800384 -473302288547122851811162955127455744 8389731369020773111132447924289536 6495066196287957226606880465354752 -72062905812925653962223523383476224 7080661030327937467064959107072000 7287189913561976322540768518471680 -509111163475424316646718855784169472 9106543060364315490149493928624128 8132893238186547390121996812550144 -231775613559531802821410884677533696 5316212622409719678825447563460608 4173224455645884855020917960474624 -675012990915415469115969759730466816 9274385414694910109875312292528128 8807469374598388616996457226960896 -420768219729232532502282631747993600 1978959140845288423661295869362176 6985756575287550897657836237488128 -840754697864701295095810979247685632 6375438990817644849003339999870976 5727964995177428584787856727212032 -857578631685550996854690616245747712 6286244914798591383571293504798720 6850460370359864825282741026160640 -891345880396136840457647472905289728 6272057040020459852687333390286848 4583000989458460011789548611698688 -579410859952185244636406061339770880 9611991792939652370374104562270208 5039219338831288830937063088979968 -700693231824277962311904511957925888 7316223499267195298439463534854144 4369804324819310544191827352748032 -498437862838001884684429043135676416 7285141294189057019616835517022208 371796545626293116575476164329472 -289627251382375468294547510331965440 3467745163979548338222686923653120 8451970056303418438057205671395328 -608758479466831264546865812225392640 4174276137056609241590335474237440 895264478796860580754078193156096 -684099273641379026259534832600088576 1561015772885715239748121751715840 9798989675748234955233957733466112 -784581097017016046486768345359056896 3279580890603310778025246032134144 8480415887607808845396004520853504 -837270957173538772274828835955933184 1850577283862717071010610584485888 9762529219583402593261859119300608 -186207579227811540151667795341344768 9760708319264603753204437080866816 1748686210123728165983826932137984 -263820929254655956419627992741838848 2504836298311803633987559079542784 7196586939123202228131639010000896 -679547285885296141599095207537672192 2191907289431165626781193998434304 7394142963073523113863305546956800 -375015330468661774860099151026192384 4714710336695820926167087805628416 6531994120777293223732825137610752 -617503314354552799094158832504406016 4880470237319134133537001374220288 4956482493308042503551293715382272 -633072823051787593503125306450378752 7303590086952759654323545698205696 7600590817928424567682398525849600 -397380044227203103722997518016970752 3612100884088271896298049178173440 6659923215350192776406197296168960 -788975458260887192440781480296185856 1322722951998082770250624128778240 5364754498812914113461949432856576 -336012236033273257014916799023546368 1997458392691343484140292688314368 7649274038422064272905729722023936 -881404183530970864669135655460143104 2937225221434952660577042347065344 5716638005049195198377721363169280 -370683804495217271435995841506050048 7392769013409523832236681671475200 7553847145930402837116108496961536 -374722527695630765883847287068688384 883957499726448501026123665113088 5458142868052699479478868822196224 -545475973545186253509257912421187584 1368204827614506293446859644993536 277780693013333348921167438675968 -100115673784808942869219371212865536 3871229241038726251893537193852928 3940702570431198996851932448948224 -13097876595737817648170924494553088 5869133932080430477307100130181120 8721510902967900561782623724109824 -381308441967120003796201341735403520 1480127854917374430919028736262144 5171442673007411229424790343254016 -652930271619891661710166797511032832 2718050519487816909605309656334336 6981740443147343932606331362476032 -23886004643386334071016165052776448 1620654642369723824566121971843072 4708743476197709820399017881763840 -551903795731244873421021990468190208 2629771567110491472748247416569856 8796250534320027042841232190472192 -898037888483370039987923408039968768 4578622465595761937199957542961152 960168049125955961243972323508224 -956547562718757214370366820244783104 3412421707280308331103516849340416 1055519652871680695266852510629888 -760973478155126959285977465864847360 912360040669218469886882377367552 9992769269282354114072004423319552 -701323724682958688992371328868679680 5789508508895296419132664394547200 8029799773511270788865600782336000 -15009453135455011752835269842173952 874978340546439368094367426281472 4904493449987408513945131359928320 -841796646294999818254536916229685248 8961914797346330974414754734407680 3488295646328461696328937490087936 -176512340367651464264427347604668416 5735191702543867435207646899077120 3762245741157208164901665476968448 -317992216660733832980510868894646272 4823698857734264381508109893369856 6592335493812403686357277545070592 -31322528203563960092164620942311424 6726889151550466539598129817190400 8324759595783363551683685906382848 -874466124441919840752850769929043968 4961612960475599870740944799137792 7061701437436555089734453562441728 -100607280769950439734736411798011904 2331879186639031542003826199363584 3872336600739265453502282036412416 -606635612727684556044111281364402176 8480819108910148188311310900920320 9572589586615580088290550122283008 -617663962839166611921314297577209856 901154437224815875947037959651328 4389560336471987457242987015176192 -903412823727982522747492816729931776 4773587291078590533445010528927744 9312788079635874262355777299677184 -50575282923908001439847007777718272 3209990890174998136506691987963904 6822577195224713376021783804641280 -242657549551736448418818297199329280 963657674365515430115032248090624 1910984618597786121065558783819776 -622632161947117409592339454016618496 1491535592491097724775300331470848 8697728792035247468285463856414720 -535682778849670811807828645769117696 9537573034485797222777772581060608 7295050342837648560110736362176512 -137397947323094965494235298495725568 7544429354574413586673885478125568 9852397492588008144798857637658624 -377809192401428136855209874036883456 2256699222246985612364110180122624 5252023618132306689277597220601856 -881386313013634063221928283659567104 2695910022610641136344634985807872 5268459609103252192517466674429952 -53858153432647151809059549962305536 1511784044926995421962889676718080 5277871479797756063189950040899584 -994169470391894320951327371464540160 7698377175011294540036208328704 1128873164600824597780158801248256 -819378495650639396829448699111276544 3922662073933956452166370959818752 6540327412664380865389883740389376 -381888649343386195915745383002669056 4181319511681441583642928520101888 971335464800562739216350412013568 -775648973187568143226434889898262528 7492188760341795032332085537800192 5228570104425138783786521143017472 -263629452706956476910483951696478208 6391949619679299183043371232919552 321083422816124661998446668939264 -983354601131274048904170879267635200 1074041445626583912009096201502720 4699805714569668480246192344662016 -998566125642804447684481511963230208 4179173781130008863119754584391680 4051216928044998390123222716645376 -6179810429815024743373510591643648 8888731961706602004379383009116160 4133771071763186977352072996847616 -319973790198732737912597368990072832 2108606527469781709528214406168576 4455820619251007027323868878471168 -842308299108608893269672013460406272 8370853512067373679329274824228864 348276812412596545865158534103040 -940177842011137945726264503116496896 7942022607433608387111358281285632 3129114284102636570397973311127552 -725065628824015141577800374791700480 1712872827869514574887298971729920 8920763216957167886430600446345216 -4624562478557003768219788076122112 1770995051289829907750388907376640 7885290487150125359693364102955008 -340710725009130854512043008949485568 5430498865058576660130155997429760 9395579355389684473800724878196736 -794262342273535780244732122486538240 9423046161376471635397918563762176 9920672459052010442564054093398016 -272327018564650491206387540623884288 236233565050250769922101960769536 5396752697961424473053024592330752 -271108048623500747144954323480346624 5589158685729620476822842821836800 1702912426738837762254457685409792 -194799857445727830054632485650694144 5444465715175752299157554768904192 8567274465351425259562248393719808 -736705609539329865879010739077775360 9294912643919515407192099775315968 3115239732819022194986132294336512 -886695324470300183420027492762648576 6745163528859604792078671974236160 6759626958278633101206711535927296 -783076934289315366021582397747757056 1753137632624052212686116819566592 9701304395863267510731744296828928 -423571010478052423875690500026531840 6884004229852455204895653648924672 9012107461450397156845192768126976 -807557455339687619364782198312927232 5484634481731582105896342920364032 994388993011066519994871593304064 -955531588735701939577585413264506880 6265333518965300086123448047239168 5182849779644583737458150843875328 -248362456629768277263019363388096512 2366723846904464041930278305792000 8206361417631067653563444900134912 -408095623177657686382325904537812992 921500805251021766408332455706624 9420415892500890335789275571814400 -399187145288319447273477365471117312 5791821843892493201728222913363968 8030626801406700723763131050885120 -520291256250335023415867594313302016 7268778346099079418881239412637696 2988187727674622624319291474837504 -252696299765380054972470142231904256 1585892582366091445536905869918208 2547579495792006143764218609926144 -286947803116887879890774973650829312 9169560752666519373731423045287936 5971902327030985408104339353894912 -699520316209320953843356826588938240 3764032472556793166824278430056448 9720066949508128173316837746933760 -162876479058413348411571240033058816 6421500787445085144796280175722496 3856211045699879453704131039985664 -533249940100251994004600690632032256 3361893171219835426333561330860032 894335198741950519281791753256960 -871372174707151929141275436947341312 4771248022757891186185293640237056 2657161469422923919139143470284800 -862739901753084435163558503608483840 789512414105159280660449505312768 5974153355362046172446908483633152 -592566935633735038582465370133626880 6847755703085665367171102681333760 7185144389328075465243992917016576 -82549898655714847780054598531678208 9268194589925878400976953859375104 3375442417943248216764977418076160 -829470839781179915775294794505388032 5284483079353580222800437950021632 4234407336813024261847344000008192 -676552612050784331955774906676805632 1533707150654162026884841844244480 9890135557761607752776174211694592 -342061365870106235285625160574435328 1210023570798935197229604862427136 9355322358001456543495316033241088 -174161873273139687356064985753059328 2205599060683226005283838164467712 4563626138787658137495670680977408 -936246208953603160859889430811377664 1016029089786344666240138549919744 761012941563948778488195369140224 -54301351974262557411567496226406400 1750092213427451894054178927935488 3882225966810063565612229603622912 -695670834440117913054372805230985216 5995010380720802391308382939119616 552435819640010144653384439824384 -588524302239275021247319262709678080 7605473780662281782221920006045696 9737260506801491722949821527490560 -559187326638349801679153383071547392 204494473926506483749840389931008 7617900768376397560956442453737472 -580918515600845600297101984488488960 6995568838185244901590824801796096 9270235641424581551008405801402368 -61018558853115716798312783319924736 1445739027257055688087182508032000 1862853324163376331267078457655296 -654431351959959914994477177877037056 7235273526334465203144675423158272 1016609363852678601206517993570304 -395100683489324707132718837888188416 8222440839395831346950448449847296 3360951236116936152367713625309184 -757428523146012046145296375796989952 5812080745504752159127846663487488 6318735422696631468250580952023040 -190463087878493833454744367685173248 1183044890549076623237535450005504 546257074237824541177545131819008 -386084480722129334295358039113334784 3667514511975942912655408662315008 5033669657998164097676344471584768 -937613870605700417683762334381637632 3841479617148535132915352593235968 1631024091975663208109525899935744 -711631546313965555203655982546681856 7555252900584796298229895456096256 3961946474882152370512423026688000 -766405025919159219015705319553630208 6018605694375523026380894614061056 2623433531240738247901971673513984 -33293461807593816247174441004433408 4270595035454531415018563436544 8316572503377427908220236452593664 -870716935760423865783338212595335168 3456182371153852368473591971315712 5472988029478134816371363763191808 -594045277880326754766833226772119552 8324890094596371502610067125960704 2208531769386747071851843779821568 -166942342499900242307121664543948800 373669880720206852878637815824384 2833972222143402900594284990300160 -2595063255751579542862963052380160 310608646354639762199046355156992 4896393865436973310807440682385408 -696304128744365712335903878014828544 6989275259301462062659057972412416 8709877019826921023004933577768960 -895483967672371867479045167739043840 9217207811233304500775434382737408 823079918166515384630372590419968 -556720877540071655058236748257558528 7976881176911103872109813979676672 6496870937029097607174152054112256 -514481750552846770067784564234780672 4464450146162502599776090695139328 6457682376229072498970239363448832 -712900240463271173238437791762743296 1628696127841917898576188852404224 4195298404380520506547062651748352 -171852172125455148451113360378822656 7870512045738277679713962078240768 9648613691792470667186356537524224 -387085087826368229708853538692530176 9937045371229343387936801637269504 5008261255891581725771439309586432 -572301718401217017785244296784379904 3005192699286385947628994312536064 6313115815120161260253025088307200 -124722145082772445823317490299568128 2217990066499171614489411930030080 6706465958232391173219429159796736 -88336405873041585517462250133127168 1105442682996337064490019583950848 7867226141928753048794154429054976 -246177237683850701188951210150854656 1314307009250404067500664018698240 9765864247032293444022880218120192 -366055593459706725511045042417958912 727032184491851246967509078769664 7734841226926127932516001699069952 -64459129174526434146922420403961856 8903203873922457464269234210078720 505864139255711674718899583057920 -913723648316274722686113736518795264 7303556324740067501281044638728192 1110950435090317050943098635419648 -184137055501110030140333136722001920 9071092097460295731074279051100160 8967950262958651989654261781757952 -266003382635104680706796816139550720 3635748024552644355102669719732224 8886741261831852531562397128720384 -9936957820301318689572479838453760 3878958086155947259845762869100544 1587053941015381976774004831158272 -779341734606253170503337234447466496 6291357455507702404257095075495936 3380263007994125468794469646073856 -458119614159253921896679952904880128 1074671776569372236392183833296896 8195969950594430277524439632445440 -257115871611033061349698616913035264 3902563073807136150685447171866624 5697911387204336837401888365215744 -839818575642923428642178807644553216 6472454305880241065948088486592512 1979744358221416624207116267159552 -127436947164994018380385528596922368 2604407522240505943194025089564672 4113792865772787760177153958739968 -457356889106489045490442607618162688 5123211935593997328672764911943680 6949480781202485237851577066192896 -373239008255690532362554577875107840 566380655378900076675456928055296 7261573729889208574899213396082688 -664095669511066251440076759110778880 9408389263257435667469224409825280 8846861638357983705945537003913216 -342771510518609468153493844767277056 1314923074873396932532848625188864 2944199771528145588624919141285888 -319905130435269078866911108708433920 1540952383131281935298882065924096 8966610844582412141612946023251968 -998963764732044479624796864216301568 1569286053444245775156740903403520 9062370868919258640370743600218112 -719795818812763730920083508133101568 1926931810005483633371960347459584 2722765119462281280820225580728320 -526866564333401194187850081462386688 7249252058269202335145892576755712 471408986078678754853890732064768 -90971765491985902869187997013639168 1780292294106313028933947563704320 9271264737432489538602016067026944 -517128267974446312903911118880112640 4477785891605208705567558805225472 5095862815315035181529638977404928 -720199265995255267751290432600932352 494515876196557571708582331678720 5616388382651874808377130126147584 -727478210733481414797503865005539328 9758705748678995072924764956786688 6121532286895162834808096832880640 -691459447556069803072839017908142080 2903216070257582088673634646228992 3058989066850395148870641355063296 -868844238468619143996380697746997248 2472156490912504946173151230820352 724261822637487893242460940271616 -865780674073909938504675297937326080 8818873025856472175558379905744896 2826390301088431343398846310907904 -386329512851556128890166324712439808 1343623129579942644639866606845952 8287048721149757898701203891552256 -91716023482929200338759521197359104 1175992942535280731560506006962176 174884253770726632794208811876352 -378208285126582573008061819766439936 8887313091490500249310401755348992 8493298849117966440859363486728192 -624471912444860844269648091778383872 3467864835985585556076962135408640 3663522848734977135658748526723072 -916840521850740381438526235298758656 6685162457994614896033848321114112 9127499640817087343910865430642688 -291917527011077696191547020975013888 1568637237228132580679372612042752 4831395230139598395238012042608640 -80254841636562658108088432805806080 1713437152618376501472894663000064 6935458156098533958056864171163648 -895919914465367026595005250028961792 4029722338454087405076383799443456 458368863194295876219858575163392 -902821328813122430956288985188532224 5743480577282335690703395247620096 6644885374218494866975463363837952 -101985213687998299408755710889033728 8700951727561972737114066365972480 4691476452294603621555386284244992 -883181097233607369365716706485338112 7615464321256140506057376534626304 9843733828885627411274792414740480 -402179919233750608962305998817591296 4446754214678679514610096572203008 4263246452960102831099405437763584 -324157573868236320568700034623733760 5938428211649256198141371865890816 7306989273884093278024142138900480 -399870679069661384410239169346928640 2335769813495453778455625639919616 9984540048638524619060630184263680 -543821323182936859387590462782046208 5620141483165487183855165548527616 5013907401704603484016658285068288 -140857183907650456773879693142130688 5854764525329993862881459226804224 6447343907283053704713609228058624 -593455779005199436093390022258982912 3581272601559965351695708458057728 217789900901874521936574921310208 -771666938406782346702909201488805888 5949631532443747963906499247341568 8375036303050616827112886770860032 -458955502183874640566216901785550848 451678022058799719455585688616960 2264439084512687439930080775634944 -508736001467520188244279714935472128 8144905798556542985995590884655104 3692482066721694258064642818441216 -187454640806917089180086380810731520 6131909210730774010346724281810944 497691095804557730327862903308288 -628225530264157301005728292628594688 8686104542897394905948441282609152 3331296687956462203068521163784192 -134105141545945232764435483768913920 5401844579809896151622143835111424 2901926997400465870489087954124800 -95525977629463386002143870420254720 1286429784008639048663108509761536 4325420027448554606593325047742464 -989460226781494284465946195971276800 6353417089914289142143394626142208 4058568463660505621243128212094976 -789209046430514316105974014560698368 702948350603331931116862619779072 685680394911350799441635789766656 -93526701805495600478596942448820224 8611622119207345377950577052352512 1740732755985183975491223980867584 -904870803628879146567778746322911232 9530095660449863312334710045147136 4000429921001135741515434328850432 -852745277751022460203078902142205952 1651598587366713754040528755752960 2506695782501471178926723480682496 -521237052888642672497419418838499328 3085563159518824759966967844044800 2204344483777139852055497444163584 -677341851354862779068844292410703872 8762897077988617157912845835304960 3365815814931039792086463392251904 -23924401292838732748225078269837312 280232251306735839463148521259008 5354630453779235900865583138209792 -5771622037242831828143097709068288 3989780340693038847627178492821504 5618702172057962066228505437274112 -486967115145791634127901688294539264 9707209625125762923818988985122816 4905743030311859015241333162901504 -350048164314740354632884969910829056 3658424774448611024847203433709568 9516847765156536886408841713942528 -129007921452672908049332068337844224 7386804116238536135695628291276800 1625871492209983030181329947852800 -570738709112675256719653901701218304 8807504102332483572795082824220672 4290123799025507876525650059722752 -810769219796729598169376015456927744 6961872926015080954314154236182528 8136536970022940955322396360835072 -577584663544675581810545593019269120 3800993823069769818967570940690432 6962363811781901224790072089378816 -133533718374688560981398061672562688 981187997015014513228921192841216 4006445304882180027463881994534912 -578516394353950478338603540321140736 6536777789432100168407778953527296 4138130872464668990642156757581824 -888931184521161398657923871984844800 9833753017543645270476723809419264 1733735995067368521188010740416512 -722243616218066755443238073012322304 4078389103018368728998362287702016 8073400245808488504986244827054080 -424896080669769428245010550439804928 8972142400906552354530420200570880 8167334776899012937775464010743808 -438651457998911195833404644095164416 9909619213794119923952251956101120 3646301919717350580300570643398656 -341590087340437478835104688967254016 3447414304675774477436844377112576 4944837549972826418615257399296000 -876810005797680964619138850411773952 6686538172935201718891103026937856 5161144636091957713421342523523072 -675957642925145262629685515138367488 9261581908077025986353953498988544 5230380813530130451983279633465344 -206455002003460495838503428037804032 9083928677046501617861053988732928 4358752748141044435239660037341184 -813220284076142236557180206143504384 7012191517527508860340989304242176 4485937074234645865273787221540864 -226229396186483220814497374745395200 2192949823375982189228726411067392 8140371527145088839669876107771904 -342533262719384353119243858710888448 7109837258781643296495921925193728 9226060422829840776499973184290816 -467275612636497631146076930895249408 9836747136461153620561088057704448 6034694690387380279049740106072064 -501588894805419784312211178021453824 2233825187507579102292686315454464 6007214498666677846189991071318016 -132806287638235425419870431883558912 2749592373314501703509531414233088 615046454421777877265370499252224 -128672776260980573454565093622677504 7861283372699277405215747613917184 7201943518125487105627050884464640 -833236925037874226206011046768934912 2629945152129757117332723733626880 2137536656002029389641871500771328 -998904631099251194315754067476873216 5994509988327931122208474329513984 1360675055744390011416395353423872 -504082466814594250099048694230810624 6253437479126991064629095545438208 8501160977653377087256151566843904 -395446326298753970002189735665074176 565233967307716119268648915304448 6773649064561046272046369884602368 -527895987976015378378064662710190080 4601648199957425717256593021599744 1270220569541502161434637536067584 -152029910073108214136423671754915840 3692869458530602933225530312359936 9467747004233569594235994536673280 -177139448571122372074610581913468928 4834389296854115171113266403344384 625143755615328702165417212248064 -905411351191466359095122758333366272 1005383738589016777754658958475264 2216852699369140984265516936855552 -829139235665903484903416616515010560 7100017913098737614093454508294144 7672020050392295744027027220463616 -437919603644672582976272780316639232 3749749052377987519522551447420928 7213858471466523427884054213558272 -807926578617866321456285547273125888 1525992876365673112450358545743872 8061175185015918972318681764200448 -690964034197684504968273502914215936 2020740254026253713954842819428352 6373561059743792502822203306278912 -750768028612046345538788783030272000 5149337151065446865714654497210368 3300437262054426552199490020835328 -764533649607063287794142602961354752 707763082801169650140903957856256 3538453952620018055517955487170560 -149273940560886332531645887195119616 256212584609684789776448053313536 4212675753325008435534679899111424 -233458282099017312137578294601056256 6274074600506961733111462538248192 4411555243281685884242919916830720 -546152228892640542717497657564069888 7509819921325299770381816402280448 1832053196248251578289540418240512 -288051880467114702302063851187732480 7048991162889318381791514200113152 3915923340352077324583879122616320 -112489942867238319788858306459598848 985592742843889436954314164666368 5729026094226267772786520396660736 -242440780051640927999084212888010752 7755357560274504105285547116724224 6958754327247206592898185021095936 -116289778943824580986936672957497344 1627108445114146753236821222621184 3475868517423416993269055947276288 -491752388354311501065897948217344000 2145542692211442620204469614280704 6819156815193156502947479922147328 -974240528104540841867528545297760256 9428152239475486434680703960481792 705975666813827754405677833912320 -232324025975269394002416802172239872 5885342070515350645427589416484864 6367451528869493262190519450075136 -594427234343654627940893343424184320 380485662219783562807724308692992 2500710356899338600529026906849280 -110280720673742001254135922140643328 7749871914599157732062061702152192 8406957741319903470988348536913920 -125420462388611622699335537158782976 155632050052655299652698006093824 3085803152937913974013386096115712 -415544810921484661782092978608668672 5875179406274075512241883220803584 5948346846754596780946490216415232 -666693181334782775494594925556662272 2254183469134410944224654591524864 7090068636574943828396692538916864 -313582513843309934913015076796497920 6933405065070339665523763849461760 1480989843934167440544433977688064 -477630341079919946507178583464607744 3785032040914662119193442305179648 8067862447895873850531569589026816 -346567625332573675398984403125272576 248765204189392892261961247490048 3266989634154470266788599111352320 -115139831753882025199095585112588288 3542435224992441023335250431836160 2742267024328441808781137600839680 -47165901823710205157777982196023296 3947208754143542379760401864720384 5574013135343092319109599199232000 -882153745386257393642899358183587840 8956152075746217196823840410304512 7321798117222305794441030569820160 -585093464615071928319840970111713280 9168666370768537413570921026813952 5288349393919742046662621499752448 -145187062563872540706109582494138368 5423627700016683053865213328621568 4624319474287573661092398055292928 -502092256747573369617124062266392576 8978161029906497697689058232238080 2240684265473601037853145172017152 -606143669135130934776754457498615808 7686583010330048818716447768313856 9014000429971524096064750373306368 -497201776420273702376953847469834240 3308919131165335338441972232749056 6361915043428772560729212662579200 -609661379167561432602488837890899968 5050480491584227754588668648488960 5065270663964218666218921176072192 -226179401001224537237650707920715776 7216654484262533371119987517816832 2257092071151247291536512710082560 -579582110485210792852048223519375360 4409971706781574135704767105597440 5423863855769463952495352307777536 -270550020216587654616910966590275584 4843842167551301285367257235456000 1939915453240668702379317749874688 -170150366679203260745038301325426688 6212741616175517491957355910266880 4505513550974670703317068854329344 -192221918816981272475199363495231488 7123032740822736076155271050690560 7367074257482775806807689488498688 -473951595810131616974175376370565120 6006053001878872261384876905725952 6614416761771928394353475927932928 -173381017926225024223703631960997888 716588298098151330225792216989696 9014721122444254957379547085930496 -337756722190538402426913953075429376 6945094419293361150758382366359552 5115411303208097156920864629850112 -144627154662999656057903575071719424 551670191197126688138617505710080 5395992795337887472882858091085824 -881925113273271552755477781130772480 3611875447684062982182195630702592 6585927343910209923911374140866560 -618958967128319419185343319058153472 8801437798855369220764596250345472 3378024209534064780573683201605632 -982886427229557663581498674264408064 2143412854117875252621428964458496 599125481927843631567803099643904 -36490201368570165009533261148323840 6091316679023404957161979134345216 6052610519745161749540906213572608 -330173558784752548178793233851088896 4476941380898783247209905124278272 794042127925817984437041238114304 -849444518479961318353320084424884224 493374975304953977703456690929664 143170334604445555911467982651392 -693290396213690631292582793068937216 6614650750042223427167029475409920 6833321892704083396811317099626496 -324164231992638719802300225151827968 1626667260116048974359464427651072 9313870159920549614605337328877568 -144001531835530170649745505828995072 1454048008302094136285891664019456 3231807097163956866220098387443712 -431051242976724889138458734287126528 3580600171455199999682950891307008 5705577531158552742734430671470592 -317121796640582455511431559744847872 2315798177573553566466809475891200 7357936942175236888777127119290368 -1161210978616641697304667450507264 7627920737666190231175504836165632 9099674118060311465285333559541760 -212014842017319196188809997198557184 1733071312416893503392172426133504 1496238140726419505684458437083136 -147511630966672430811187725423607808 7920427394425489244244318596628480 9534993342912407902632832101515264 -768172601652418600591689282425454592 8432008700739248415932590231388160 6496049682499392350981048437309440 -115950387720805075676112763366670336 5332285994531720515921461804793856 3467898567518160827648516263247872 -95457253920630238290427176279867392 9196628006042654446138825698705408 5899028200435372216127253595029504 -929964346963505129447732728188370944 2718540352193512281565386332176384 2896466118424272402723668284669952 -889047137384588962766022759849918464 6978345027865471797761212814458880 9293064430184271724211776696352768 -832040290487283721928915949254082560 1905713568705826711759395540172800 5545035475128804612002144738869248 -591381970159403140630810907809677312 2377679832083886725393109764538368 2978236199181032441960562111283200 -265625089313980604490466513687412736 8865590848862314475036348648521728 2705950322281043396884707151970304 -151147093926143209858388416788430848 310562262826487815825785150767104 3732694809831099581149331373162496 -541145485154313625110932272915152896 8654316980593713229174163076284416 3784076930338035466226286706294784 -354781640444772564484057380123836416 5346549842643546507075904583237632 7440871388812298189947212079824896 -742609185268582571901950738818924544 1237534545129022063149365824847872 9010014090344008468439369131229184 -258522854929133463901269723835269120 2989575253414046687289357308526592 4351434793553957424128134540689408 -680068608365551655811704795525283840 3045489444117422982950912681574400 9270545735062262391371035559591936 -425042200496555993819423291461337088 5741589489205223705030797366919168 1164212925929995588804443864301568 -613697821246165541387859769480445952 7928538445876685560936424986902528 767096856833333248196293494308864 -620858943896903012148613561951715328 6175186590444241223597139611877376 9737112967220744490431497797369856 -915551078137799904724590667375837184 1496695846066519552567515721760768 2589304572971225816569103626797056 -431378949173312454348118745088524288 8898418948051163740949622632218624 7386909630383178083908701812424704 -677651356861524661779189879804002304 1236482714818342826684654339227648 2769534181386982362364626406998016 -824807267419044364787052926631673856 169089225224946879623944762032128 1517619800250837795629054891655168 -183923032246430393913896643021766656 538426067553262471644167446462464 8133007411655675358512095516688384 -275221817659609546687634646218309632 7155557614242312918452229942280192 8586528376038264061605854962515968 -80736039644728358622291053238026240 7278612185832431868950061741244416 9313572994555479699492102236798976 -60135125766545217547070614890610688 3872361060481267911588856620646400 4427051824344146475939852487491584 -678896198199246925640233013630468096 9309055538233525379587588912840704 147742362503881486593147224981504 -98107719871446251808515799075782656 4137421346040375384103467771494400 4760406300035532956537681638064128 -463311351612524351653976773341741056 3621527885874600197283357877338112 1050563556664721196973065985064960 -252033122199846138710034342991626240 3347280300253169661941323055235072 6718393317972088746856437931573248 -479277005438039289172368358580944896 8441004851536415956470385315151872 6863588444747202209877989766725632 -433346772629374496794145138417860608 7559285141703869917884756822851584 2030902138431022779076779721097216 -712743498337628668066436706274902016 836082303033381083912946338234368 7613798173732789272640273178951680 -501199481406937809985032749924220928 4670790267187282935974157923385344 4098888579835688541663668629143552 -273626826934186147581396574544068608 3359276351042601777330178874146816 3770841628732464778082461929177088 -760647572632024270442197759601672192 6106942409642035500267042064302080 8071542608330302279061987810869248 -712473203166276539013684968093122560 8933366781503507324614693175164928 5233275440318054970049699717840896 -331581940378356609406896681928097792 6274487264022710205559044954914816 1884029833170225469437201937858560 -662077112169288133825063877041192960 6951152012847195371882040585617408 4955494733491869986946601046769664 -837247515810090499166124269394460672 8643754066944377809297131314348032 1374551671708701397171771073888256 -613421678571324551024167691489378304 3041231198622021754469615707095040 651492665185491072396699835039744 -353326458314627355160933011187302400 1272620403827038549212219830173696 5972163416853337045796478253006848 -760165221410322072687225293917650944 9719999311519520259463088787423232 5756657382260379124061420688244736 -749234906724802328353893164167200768 34396886729371027069352942764032 227702105681431679050658929967104 -921953901198757396528748357698453504 5666292333507584227288959292538880 7113380067796718946532840680980480 -582234792232462809286579502798864384 4495614303699626855171531273666560 9791025471581005069290260087701504 -705598901299259272087514849933787136 73294132308336657061408885702656 9516646555107063464371817981935616 -512336331281768544049356624833282048 9251301314135209500067650487713792 1551050990691901998096559040888832 -505253097167730541153230995215876096 7354097030759520820665916940353536 9669916955590567836989105626939392 -984271762492480392339197690164281344 8805334736369522272616099746938880 1827256989161093476107868371419136 -391529964884191862698041670488817664 6179709976740905897587703015276544 4657356865565037547271323859812352 -68048548237962502534720217858179072 9136768285372936409274014547050496 6562491736742808253361529819234304 -763234721789021391467001659468546048 7595049851675195334790424993726464 7411362335470552556772793339871232 -148984396381942273916273908223311872 647519178656500525261265571938304 1580565732912065237894536290631680 -969722069726706833596713656635097088 7235225821177179889262632252735488 4970214097938433448816719660318720 -524369729285192182194550632045608960 5853801524503947317358580895580160 3670708077114551244981193773416448 -828638328131746500046224277081423872 1604762381699651710028541304242176 4406011882263532137502056269217792 -411760849627438711453902608403529728 2503867559456757166703337814360064 2559023298147008351059871858163712 -399632785978157171993613458904973312 448629644781770120574211593338880 1180405948535156789288749223641088 -538244887786389234791040567746756608 6865078769095343195635827083313152 4441858315963189052130947445555200 -437962554257720964959150483118751744 9958785876505028159661362085101568 9707660757344951535910480263512064 -871618123428430335513330620905291776 3741783056754680606608895588171776 1318139429570183543963257569017856 -366089523855932870169778097441734656 1758948045567598934111144338522112 7968063549407019465286341068062720 -509146395226370278437964823958388736 9250393290144957661385162041065472 6810305460813108158789103489384448 -105878194459278787651531127031595008 3509532842572400434774557685972992 3837965239023674552173404595683328 -673952618668607994012999272645001216 2462293385197025049088006616514560 7248891758855110381973815672438784 -442878788055816498282254098986172416 4947543824466418252826893613006848 4299462797105888728246345567043584 -449074980691619077177432259363340288 5885143873801714542679841031847936 1254062030521731460256943451406336 -527579223355518999800239492907925504 6971600700497935543500081029185536 4099916862274562303038604143755264 -710642724382145626542179726573699072 3753592351707732185570122410229760 3825275043155303008607189937946624 -25891359682384707555926598567854080 3653616865625214488663232916488192 3692670503503338049225560955027456 -994781507228783717444728144550428672 3494293349347976896663885243744256 4522030622527745182422764628213760 -567918690701259946847654112158285824 1513375956765535572705033551085568 360417704113116172403587418161152 -129134721121543114111355008256573440 3882079587748842286010576840687616 8049959201464411347914117861081088 -932671420828533711621927939573022720 732213582016916603069032852094976 4757376590664313109298232617336832 -689674114786302714814230298045186048 1200700939503987835309279900860416 7844516418813842771034049077051392 -894977084743986675043970146587639808 7693065291511068786036833968455680 3947626187114470641691344966254592 -999344488086293097679937696142721024 6558117951655175392627361717420032 539552161176456233843005681827840 -202792044255454898067240774331793408 2599489662953923567199172786388992 9587079248762223025269037292584960 -676862413374617125461392233544548352 587625381107914610930873664536576 6308692958596155483269010334679040 -401728693737504353498398636600459264 8678479830383663501740784620666880 165129890452525373824499204489216 -700777106185363376763364851895500800 8632867749097531257863233677033472 5971160984854857969866396592504832 -620651295674424902348928423833894912 3581007703303206449240952346247168 2316248901482017841839915281678336 -541842264178812121221750424418123776 6637305069540155568769797315362816 2603551418704455189057297627217920 -584058887704369458040587353076006912 60099723247048157897379060645888 5227923328314430865623043039821824 -453892642179949285010541765225086976 8877715864971234196806383695822848 9148824888313353195132805795807232 -747605877337402817583231202276409344 8723153395161045986285061698224128 6523985649965600732573248276922368 -140705243567578686200825948026175488 2392642837274339647796920052613120 1732460812951854177864272423419904 -20427645240445028973279624759869440 2797625974784430181484396439142400 3668783813267329505261257475751936 -74585370420943061852253720716247040 7905111161844718412538452627161088 2791572723904591744066398973853696 -108518749371880179195037334286368768 3009184400916494387551348180647936 2702235728860018435662292751220736 -63020140799220509410863329627340800 4448704953798021578156495402434560 9734580045963350527658156758138880 -120326716506118367752838050272509952 5382610119917787040041575525646336 3801599695874754589895271462731776 -78773836570237043448176635138801664 1013309446425102216304152018944000 8778519475948625124508754063130624 -489467311228886571624272376195186688 4707853499938154870365377196457984 9178475408466007013091823161704448 -591522701476420124361391873573519360 1809748421479111189636966512590848 5943832340804045671606290143510528 -17880242387752422838365420219531264 7195708059842826141398969993920512 5001679476476152490761430377693184 -511081169142636089686358988244910080 8205051050320153143736791847665664 8054574275576761134882798799159296 -404273276739385107588869965484130304 459680504587962468747720762851328 5461237028601446075546426408960000 -933024374582069338543415862453338112 5553791296317830287546863742615552 9624807504853246853600234587553792 -622551339613581150638320943689105408 369171420784089442338336745193472 9131527628250100800594058340728832 -5099623151273741728207439126331392 3555780354340733484170683088896000 551500661813383969435137211367424 -775109255726206956450101907475660800 2651041150130793726057285821661184 9330500846127874403201829115527168 -909800716198327075683589405135601664 1890079224860877728166619505491968 77022736295001915438437991710720 -705841011746947301902795400833662976 7176307363232253518627343937044480 9541740827859121388962180702928896 -601812034430740458657584810819584000 3881595310439661954264198683820032 1381046069197495238771807753338880 -236948065194720919373398924997951488 7557616099064521495330546297864192 9029127875767748997918871919788032 -498073852342606279361420905743908864 8562077714108712194577511334543360 3541010068693899033974705030692864 -135031320668902381691009641541009408 1733369423384689568463428119429120 9357451634227733534343214707769344 -11792960498238432221136060757835776 1212330906752161793112096485933056 5149438099910268022269422400962560 -937815129386067192276194158847197184 8405079164047435885113975873994752 8869767152660170532078428360802304 -462580341159549635436773900304777216 3557134644398029284508049210343424 4531513198197900538343162453688320 -910141648462694828558699172829593600 6031822862314872770056214009610240 5163863313931796351794887985725440 -514508666592269399211451686634651648 913291896517337292742258962989056 6837511967575487961818137502941184 -472702435750494467259757400051154944 5965228970310680797127615837110272 8157960811592445881498224176398336 -83811780409547665976365190056247296 947942125613770751911078540607488 8883475479590963700137379768565760 -796031722820291296151504965469208576 4187251233082320679058148090183680 4831905916704052800710803655229440 -697325027348911239109503742784831488 8726616285717718382695141030756352 7285512309899304204242092445138944 -311139511788754456979307341744701440 2381771682803633024547606002401280 9199452069045858709125699632889856 -392121975372926150423431492088627200 2648509315667057719871085995884544 9168721279983284948067441298112512 -622810290971120801433008938739040256 5466870355048470334995851559043072 5090879505441006833834974779539456 -635538085351242924443582994386518016 4002227849129273726763597333266432 8556755284106963925958052305436672 -898497370800589488703104490215047168 8304292266250316581584631347806208 5456701024041735370896055694524416 -105959796283513614910769355661770752 9205226300592488173894126312357888 380377435591628946717217843576832 -181156463445804251485997755554332672 6216740781273856630510961849008128 9445377403708705989961455897673728 -346465226559379956929309979539668992 9269504467491171913997183367512064 2596599738000135701497509897568256 -818341387036145162843431815012679680 6527664685217233729737602283601920 6739722073050435698219678309548032 -115278123072812198815713890425372672 3817515705519582350621921933000704 9508443777451038795315148021039104 -357929696445108565335873700098998272 5822926219957897530675841835466752 3227350191388788023923956867137536 -903555195767139217725697252476846080 3543443689767416714751047534379008 8868537155164138186220096846823424 -71611565150910366920957829429854208 5098672048078739449442747868512256 5736746180269626911154885596545024 -584154364436336497139348226437021696 8216484764263136169953703820787712 8758683019306981067420953630212096 -637111217619875418299441752871796736 822616401071544537352681100935168 2848453839035845227104512660996096 -763792901097125453696222378697162752 4522799951946634561068942833483776 3200786738238232353654689060880384 -116467481339650831645741484714491904 9400925936572086136734456007884800 4047309495256314768988115826638848 -805819405704921891192272869413355520 1420743825958220431335357222486016 6947005983598625867617761249722368 -431831577999881754651771903921881088 3161761611081021329613806226112512 8959506325259184412119814820069376 -900297111687076310664153046521479168 9890551099527084867712580717641728 3790033002418316772465687444586496 -683141985353011169815714684456665088 1964425950449134433460294216843264 240743866465323166737289546039296 -411104462987189219889763206310133760 6151568418162086800248629564014592 476095304062882906669129870082048 -957797803606279105910656695802003456 391442184691208635970943199477760 8541041512997443039984998380732416 -711830593132971560558529506514567168 7497026237603842643633002256531456 2386916571899965761862260504920064 -366573761471613887723092562782715904 2003200351024833330044424150843392 8545798270441704619244510364303360 -352005751165205862558600794277412864 6113632183902554676697919949635584 3612809194737632375571356508487680 -747661581079797751271001430029238272 6016809665161861969582015006113792 7951454748596701033676480922517504 -969723879595022575451644876722012160 5370562471049355273927191181656064 1046847237804464017728861689085952 -494593537867026450057808636222111744 479934868528105374584898846720000 2571289134868221882612398017216512 -877692940945490326387137161648406528 6805583008978366557944158565171200 5040534553823884286915749162778624 -365449754838692246798854720581533696 3335329406455517397995399453605888 4885261248169920081776704405635072 -727705370965567679885794018559262720 3247365525983031569957317882413056 5167229002717821093470922763927552 -870515268757124770957594500794417152 3990802929596881938759647980683264 1286086680367069400838520096948224 -597177052560129987541249085208002560 1890794245321452900207489298989056 5035338689876072868018464304922624 -974678619078452029429388064531152896 6817322286595937848572992217415680 9525844965962418337008895601410048 -761131373494306100049328949426126848 2526741930385216039491043355262976 6511039882886450274385967739568128 -171999499611380856274111429649367040 8045561455537636332328821177974784 4616415249642597263749898565582848 -761020884286307467669161856143982592 4495367334953727017056463958835200 7409705858891258014208527934947328 -737170605817569827055843297210662912 2879233168347617832687670300508160 6825408271943870926003000534106112 -140279642416061726544873664672694272 1584211348244884745095477937045504 5886511647894087362251569833705472 -325978826944074923072653187356819456 4544058084932441365168087088758784 9220826612052537738906664081293312 -307376583760416102241727267270033408 2505990885789645133054449410899968 9880776395066837680859096379555840 -145691567449664321467243924572602368 2736040334276880291183682733998080 5305029281992930753004485251956736 -739427498059070878770831210376593408 6832597947403425696831583220137984 6697162542896694307816814713765888 -661595858190839371725019496325316608 2225253326788311758754195976486912 7610720268010449589738081785741312 -180464819444408980558088252073967616 7374807930363001108113844248510464 6427464625450120777767556900454400 -987815170330359967979092926009442304 7643402505355413033378680106123264 6211401743390383709895709538910208 -425654901048502841575148864520847360 4957043385648907445372780170706944 4908251610047087191315753975414784 -597801920432032963103192807574077440 6130114866963001298169744148398080 3307883271695004388363276289835008 -56163837805474796369036031582797824 8874242784648967000588411866185728 340493656732862282561248896745472 -51209448889754848693427990993829888 7907027692051501899859023496216576 5496989318360261329788672982122496 -660062651497909613092943357070540800 7711538651475175509691700827127808 9794745010984870418793505627308032 -487163730856605522997886658096922624 6799552475535032984476800377683968 8861320124846582615246327800397824 -887530084731324416262036147465617408 8961563066664589651363394786164736 7735399591020164641157233441243136 -497126699454363593685381501264330752 7103390643228419806398939729494016 87006425886715986353058666774528 -224883424149936844472976180137426944 8861221053393361388559671123509248 2894369678726639220679858611814400 -656293553623903503584834042791460864 1978916423112399743512745309372416 9709072326806630244636997621645312 -185100741671871405529925778979946496 9059685250233891701057693520232448 6678839497961279503612439525588992 -984823897550843673298381807495938048 5028271398906066469712114978127872 5205040578995132025717011758710784 -422241796840483635750059279634137088 40454030530925895504662489989120 2476131038211647614431054230716416 -127000527738501155356172065404092416 1367965462079554282696384748453888 4593163579973863113420458929684480 -648185662382595731281372095761612800 91089146006819297067859930251264 321643576762037907711380315701248 -59428557464683913070254624606257152 5077236122485776435089403979759616 7273815366279187261690811485519872 -672278979540775587510027426048507904 4304487879110081623744172785664000 5587668631553685315450861952958464 -788288598714885723403993809311236096 1142300625486922141912673231568896 4512910050188033828580923763851264 -972598333064591422704587123973947392 1607486341711385405242208795230208 4428423557375080458915868024242176 -685907029977270452866379562470080512 7108171676177996887032056739004416 3550052062674804097896677963202560 -29876937834398190272980428997525504 4429496958416591408808042023616512 5926752918590669156819968244842496 -611765596508544875265096938950754304 8560048807993700319204717025558528 8136558772536837703707466575904768 -437648825714600647910716837552193536 7800170479635714930225043470286848 8631467695687193671985907242106880 -577693491795673296470718154943758336 3302575945157378115803791855976448 3080985528676493224839957631205376 -445271262181321536657900519242596352 7099829743436889811786315052613632 4567209280083922639918184156626944 -844331889947499573591147807038767104 4532145731959903232480809207201792 4770419151203388038422676843266048 -802699737929844285589975978309844992 564203936458520913353168360833024 7817032140777500891110327277584384 -36506665635316687009206844268740608 1260674188892434431688238658748416 6093802186818596429020305620467712 -952032787573311613244657658662748160 5066182580876188300509408797917184 6650702469345554135145578760241152 -553397462991344051604821170043486208 6600453964237863179544016009035776 6932597452632906593695655874527232 -155733062528719955027674084004593664 4087775689640395686692753323851776 6299407643194148810106610447810560 -263083275712643991206011091757826048 7528918333112714208797745058152448 852196589222542270498631562821632 -382472000452906441785299639363174400 6206233888208215265213098418503680 2347143647665555994944037080530944 -624822698862352149239030113953120256 9943892960771726923131296459784192 21307448415897510933859466739712 -718999493536361738481172749106544640 7546474039584063748453552411901952 3072488959755575445019235689955328 -440123478888772434121922638770077696 6716722827774742306194426125352960 2703262224499427657225425265885184 -989035901679433385549495059561316352 3626514367141660452937178080608256 8985737957432246897248949581643776 -700203277981310116609433331459686400 3708564159528414301818823802617856 4863858856058994741616272021127168 -85667388824849820422325164656558080 1525493612208010857243481890357248 8506239608854043324284671325372416 -59052273678394207543533695670419456 2739526728211389919970977661321216 4778723522454636155213827322937344 -717270368272702091415331106929508352 7691860771481438463377082194853888 6466414141486194386797406617337856 -428940955310605727387629934209925120 7020434942130900339991748857036800 7965076052761001118136437277982720 -126168626433590221984781295050293248 3464025205503517846867460612947968 2254498966216238536493909233631232 -657571910074640951724649186993373184 7766334868983641904308739786145792 6161326072697356552002653539794944 -590805850403382165509639019329224704 7901932319487209597346355072729088 8765435523962409279428938461872128 -137282282141492281856121705196421120 5934123829826821098334592767623168 5923886982103728762526046191878144 -22953345592357260966274034151981056 3390619340434157653751491805052928 2876343220422740596352064191201280 -753012954885050121019545559744118784 3637457859986899846812979538427904 4598756862782368625615478693298176 -998987097524806337166672680678588416 6977685025682244695709632859996160 4209039710635085600597025782497280 -56368567876353489132634124222201856 102971450108310692436048682680320 6638582159727387011662969942573056 -893473403234742367830087466578083840 7582729320656036089312661991325696 2197380101926663284082460218884096 -208779632201494503956527070928961536 7841364481562053885585714787123200 3860603392839119916310581901000704 -420491065386955342950664573156327424 6144759788516977926478742805282816 1229783048592140279618728810774528 -337228178482005756463960968306622464 6165280918948242087592022679486464 2392528734478668975513144880267264 -971314136010383827337361736024981504 2566144400776670151440656433676288 9038608142764490716618829825310720 -466390383481649362385913908935262208 3589368957857764585506978029109248 117299625072998857386671302770688 -125036746507236037115106440612151296 3340888910185067975107158111944704 6645635219110127261694826307911680 -368667382589136623754201595849474048 3835385415416593884749870569357312 290036844976637207083376349020160 -111581340434322893485811201560543232 4891939914689820742694519930093568 5639347415470418671030519394729984 -479916121170380495437821610186244096 74077957381873302279397566316544 498538536963709169990973595320320 -795508890123966387472305063660093440 2301688069189392715684853864988672 585719587115965313704595969540096 -686780627620898291374786665909321728 4962380414107089088841327707160576 3174962303172337768571925887451136 -769529860457427160224119798817095680 6777274650365580624165362036899840 4023560110341491135597623583440896 -408321237458252711113927082215735296 3409460584552836418433181280108544 7522228787582847205373447514357760 -976468174419481952165078962211389440 8204867168076893374325850153943040 6412792304544175827176751886237696 -228040293190685313000426948180049920 7856183272121355505834480791191552 5361840068174943319023568608559104 -780102537994812981082139798378905600 8416789105009420991468282950189056 7789802419279953384374514699206656 -821118155182266038492118174840913920 509400361336023880204292546625536 4468776295162106808721094773571584 -723514798055719480216962156738904064 2792742229161656198657899442995200 6915807440621286472424288379994112 -823077981594167688498346747821555712 6509106866070191524293097230958592 2568589846462877442377740040798208 -631362145064701013259574086920568832 8758864988821913844177691165589504 8704330240214620067474505304375296 -212904827562289925201253048990564352 7719287130019608207350847659573248 4389622377622526679503761349541888 -381886303506075642099972114099470336 730663454674178259936637481910272 1245182562970055408198604671680512 -564683497300804059124891813876334592 2344517087475005822460799857197056 8665827811523651580694459421032448 -846281878621646734267041785460031488 2920415720239460762377695164104704 7540333531102255195219053288357888 -162223490713151860351187278668759040 220003381556928986102858971611136 751921375795597258337030275858432 -807514455961311236983638340793270272 1160920108153893952642692939776000 6917948194509759040891922728091648 -901116194537267328031357508144594944 1241590621158373655430697704226816 498344795039080735183208095678464 -35056618528274721315735197064364032 6327800002080352354687608829247488 426655920310856803945370238320640 -841216014280432243137743327705694208 6636095275047653953112037251874816 4799199710810919691382073042403328 -362706485245541597356282363676459008 9714835622483686999688667966996480 1116205099726377248551677689069568 -370225174199024678162323314158075904 4754755877565362241147603288850432 114232326584217095022223562899456 -578146644476139825147208518848217088 8681413110111717422007092338753536 9054067682762829075217037058375680 -216412778372504972738863550907285504 9770610062502159183736966513426432 229716391817130118545445950062592 -565638721303798580437357706566696960 5609446999171551751486816986857472 7917720174329171836535414085124096 -698370684461538392964133805581402112 8820940746021218453793772576702464 3220861214210406022114314331095040 -390904221980810371366866225446518784 7714594384762035617494625658339328 9175830808253785445184108826198016 -125196075392144824329666015092801536 7634523492212631347686236166815744 4174470394750361986653405667393536 -451982981784421824832641483361222656 1913365068105439356710528047120384 4764776265927319476757894138953728 -180113270096264378950793772111233024 3679054258885105419579696399515648 8207516479436479451218393629196288 -93683685767901962075688127915098112 3400734281047682615849069641203712 3302918990491127871443830296281088 -434441608016199946324039623336001536 2826345147149064786252505680969728 9953213921882848809032977987141632 -63620499814632833299863035539619840 8004342350723093549945683198345216 8185120758299015913573896991801344 -335944972090241658792468915607830528 7563448546305032161826072871043072 1664021966145171660983095361798144 -915741074989772634111374982199115776 2077163811113163527719569946836992 5217610281579404614373272742526976 -399168868842862329424526336145227776 8540994042675636487702718726537216 8153298038427635063397674028892160 -270987537801142376642262573992902656 1687462285908150212570539874058240 190159451012086284635029398093824 -940997875953275104519058176306315264 9240829661520372305087274812440576 9232623911970067426885119430885376 -847744767498796558832864160764657664 8859706834222921615746992785326080 3576397258903322781786805565915136 -641010512542931516941304199362117632 9255182194873489200907164290383872 4577348595952140682178459221360640 -487667417756269267424384435942850560 1677649556391912267964992016351232 6472710719891961022049014211674112 -195546010575868192240577556959461376 2374277433766181067328356869996544 290767222207276048435030419046400 -418730774987602470960685354756079616 3864357888707734700462042593099776 6554327435499249505403515520942080 -374268520073870220945036671111397376 7840574273709116333470562494971904 9495635966548300398092317599203328 -327796970481817995635658292327350272 1163928472472521397510232428511232 4959846186482627761667801392087040 -691204273126499049839743597744750592 7358536484403813903276643497017344 4903848052365441951796575390924800 -967309940825749253958893514799448064 9052071533345762964961105002102784 435228640697327178370946051342336 -883775853807498057943142826474733568 75275631065972729191563618418688 3058886998927602843699983197143040 -692242706555777363410271857213964288 949740188828012081697733996445696 7060210568087384779899977406087168 -830087366331359778010623685303468032 3483011751047002699757197916635136 1951796725803911549294491153203200 -600024952207888202965120347682111488 6358245998443987276245098995646464 921613096671938182463293174579200 -975826859145814045704698316179111936 7465170648919503639702436644388864 7799604866990248478832714630299648 -626084249833723779556768182762995712 6389966805397354233320191354208256 4526902532776389902876429829275648 -6258878095186761379108090479116288 9721105258998788505750125280231424 8003497402474039245451468164038656 -156160393957945784595851814736232448 8101926106082094208806295263248384 3930264365362878879009324478234624 -485177061561064558846314750689673216 9549953726211483619273111710466048 5875882789411058154597435387674624 -378355976210124043098454934322937856 7687865780238460291186413356974080 105132050892585371906636077072384 -225265333227940482201569049735856128 6748272713041775916979729710710784 5363413709656958114399706037616640 -266128763023478526600094769553080320 6913107251107183980828982102720512 1895303978764407467003223279140864 -327436659778856050678319068821323776 3641155919252071611133644232458240 4574051581349587123752759141072896 -918634801536869537483543634539184128 5735093277289260295292721584668672 1935343804576040248468972110872576 -288833071201697448032400331042193408 5610076554934448800807299751870464 1745778206759125953701617046913024 -361942971346987600900328281511821312 2882488868281314648087881863659520 1163478506877685326928595291996160 -131923078448379681410007937270677504 7872975376441378818697123699097600 9286379511314456969544669419536384 -472186877957917738861802388642070528 5274353512655917722218663958806528 2205905989032702967432375850500096 -375679651282769818631060259138961408 4836777297369720912918828225134592 1394921659728384448494569185607680 -407912199339465424475240376878235648 5315119590993408027679934780538880 9469249644388236441317529069027328 -106066511178874375583666909439066112 2945093075789712933852568528879616 23505873153212304179255675191296 -761042102648364556770011681543684096 1511295196213167421734646576054272 6907878780809596756951473456152576 -903410995759358168697473767695187968 6653891146809139665532073491300352 8949104803543056301387349885976576 -759222843622382581817578482229575680 615265133468391354238044037185536 2738695678412962983561941651292160 -455518620614867325610304364454346752 2625435051817633594580137297313792 9990388483585647939250001180360704 -376704711883088269693358122368761856 5260023492583944963142101780922368 5397860145201686346882238377885696 -850379981126693065296512326465224704 6505901674369429449802956729745408 4819021618146709229994055571603456 -159530219835399103878321724987539456 783450106351548697407251317522432 4971653915657842921751315665125376 -745167002008394017909128683986092032 2888706192897755820768961979482112 1095650802682244945663091070205952 -441751852231265071668492954916356096 3345153503123141471439656186806272 9440118559112458669742320796041216 -39564288526020244397985749660598272 4907656017599832610252254177394688 5196824443232895672572141792919552 -885302893719703855803984719063810048 7939794053994549673047175022510080 2213374482722521872073194297360384 -862092803996364952065274860831506432 1218127580906476080904893871685632 1736069147728460491438946154184704 -547327747217037185451071169233944576 9285879676132265895864756785381376 3370170371849769699692495008432128 -481443895338096384193126455821991936 3604893282170269626044112372236288 7152107777887117358898460254797824 -483437416904543547186081997900480512 5055307640942165512513677665763328 4715476117091072094528176071376896 -43417096059883024612866467360145408 6313152461687409797299038018600960 3262386779151682056651114773741568 -798538907040117809231392718769356800 8794429979347519007237985831747584 7527455837950139998317510223986688 -144491687334892726189531255382474752 5935707885148469802906295518363648 3279325113632969061031543031463936 -872080296630654922885805041369743360 5613119062148785113036104304427008 4138302857973568617042134310060032 -973975546297298649626603383695605760 3086976300863165899703628622462976 9930022551059156863289129682599936 -233321125283442799750524866178056192 4205646931058442176872239434039296 4122096101079800793390149531598848 -276802432778531817534463405562265600 3144546871448873029897701088559104 1338448134752956442507878470778880 -123325372455132901954205262926577664 5675475313867005488730683857698816 1756899748569879335625186886025216 -402072135015731102648094793113010176 5337760144074402419093860232724480 5667083777054135018232110997569536 -137749509091273617697416610819604480 6755385822620231275174750039572480 1907881252275311808691566123417600 -184926808999059092702230341945917440 9792841003792386814300535539105792 527588273089349028333053513039872 -896817410011090635358490783196905472 4161078100589198743011404252446720 3242549501231976838968388182081536 -795682750876322590862968619309989888 7684960696565146713840579004858368 5829266329665587360525050892517376 -836051908411913688183999577498583040 3589262564127241584514428376711168 6363464676525264961281762229485568 -886060774046521173543948788051214336 5545996666028308120427475060654080 9635125147568211354440009737306112 -505244213281929649367107132712812544 7582695329712691763263580590309376 1254223531517538151972775240138752 -521154036389118582703043617855897600 6010354394940760911240896716996608 3524919172319350174960795877638144 -97367040521956831221332977481940992 3943762546642679038953682741755904 7811435651239235255248553970237440 -55798736052036332052952988541517824 4274669367723818134957814443933696 3577612252684607251609740866748416 -218040644276469555356998764161138688 6394216115840283613412305403904 8507132127174276571703487485706240 -511839070329769770887937586022580224 3687880444360102533694052485824512 7282382984073834959160852514603008 -680994680297826209464481331990757376 5524723675175299463462467328278528 6244265626426866124420041884565504 -761316714246819936779451506599395328 7489994647598358055953892955389952 2847641371207706004130377167273984 -576855957833833923262106693558861824 118625192544994891964593062543360 1970848938299856278277718678700032 -515727504952281399419726312601812992 4623804216318471875368117650587648 7137980212715467108351429859868672 -802266572957427225642198266787397632 1711420368915967106585567069995008 5459632219170414186868844013813760 -65964522251298867495545947977416704 9604143518360897534700609385529344 580965004863214877313257953034240 -475324385120117379208051329935081472 8241890550583168212918637630062592 4488469832778230446376083175505920 -418234995576529665161478240510935040 7779489383306365632415330486714368 292361187965074313913355703681024 -934633549832433491365693321262399488 7852433174182141950355134631378944 6038720350676516394227912513945600 -445645813539766807928498292952924160 970308682122681452462087583301632 6931388295181782064223613928603648 -395734625558456863708524405271298048 222716666714060200522697070870528 5928228807196184420017505229078528 -855784369634534853143755165597171712 7220673585244607827481138529566720 8329666338172088682197205693497344 -215558967390403831013438527710953472 199210134997594142118583388340224 2851918471898013488268270389690368 -35807046364885602923453279239143424 1580342077202493698536550264995840 2097272446847312304345734147211264 -757928612694041105348316593255350272 8873020718843911657429593011257344 6515424378165412930901637297340416 -286302526428773815398051399331741696 7987203842387193510621055429902336 3299981605976972529211226141491200 -660530160304564450159098527664308224 6967174672580900164399919483846656 9785040056740308684340140384976896 -557455069451598084440395845279416320 3910605527853146033517854025842688 98443536900967691554489790103552 -317786646828602602998984766488838144 9337894210733151396413667339665408 1659365769153685860201078959636480 -965948583970337074236354696711241728 3543048048548946125453836259688448 417597074455509308229194201694208 -779744112305826054076855519446827008 805192108335812505340704788054016 1907353348415459540441994608246784 -271949061546002588892849096703868928 6484284664952240147144030004707328 5256415569170475415891276654968832 -719502408455217732598261565014147072 212665824222745401344305320165376 1678190942682641786126610282315776 -494102576496633736919296345534103552 7763784357456857704742720882343936 8703486203835764043013781565997056 -199590477763903739956682932208271360 6836167962376548017694334743740416 7726851534531058677004642834972672 -79068739973935152890721339810250752 3775196947017236184776553801973760 7905827078757439437012191659687936 -162620197115690553367722131275644928 8962085507168276082660227818717184 5241428933225108418602445500841984 -290234817521091287013365464218730496 6172899577162597571889782516088832 5567449670778155385141464406163456 -159715842139850343760304032706461696 2865698969832919863967518119952384 728054859331215943961438897307648 -839601107927675632163872430798929920 8881954160769047160971453318299648 2689033897772053618829426595725312 -962013625148142831256930052135190528 2980580183305708785363263353257984 9151564525866149846254570841309184 -769095998954797742583801437977837568 8803802579979197654008985810894848 5673685295906964048836347522187264 -655659063165742539792531815359578112 9148118392091160842845656809734144 9656739375432629381573585347280896 -933017095378050048021119630068154368 3836080533725961897138100746846208 4638665440624603693101271639654400 -568217252337018639094596628742406144 8406923038161098231606734393180160 7734099766530161517047395366469632 -696433850094974535603501962956374016 4057646122147463002005736880340992 8362249514825272857206247242334208 -322043129116487171981344132730716160 3846136620000029954922049248952320 4197793094790126998345148792832 -370507542384880137778340882733334528 3344250317657328966637169089183744 1376991835223015072420613410783232 -177138967962538194969308343161585664 6049037778474677633344523477188608 2769280989523074092839947827412992 -720756713502920504897948836299800576 8332858489485229748643480345772032 6839237629450761979907779227287552 -272584001482533036874174536114765824 9970116163955154753951550006099968 5869022900928413845963012608884736 -485645473769405369840288034757541888 3269435485098989176608228907155456 2851739788943537725944008540160000 -667168424038905146096079845940264960 8351720413987421395258510497808384 3078294635528254416068146957910016 -361409856954553815406454351239053312 8514990304480154141993744845504512 6065134458976395434960968401027072 -684878392115501963661468199152517120 1429017268752542703582981465833472 9351968670355781434316740509040640 -790062436464712988929199803635597312 8541987700182202131139446309912576 2693283092498509001838329870680064 -246712586277965236760844287699058688 2126392211069872679693050229817344 9243543258291265913604804001660928 -254671014902585726466905232665214976 6254694308002870732215642142801920 1622115143525058897269897937551360 -982764822694085029923250828788891648 5788317211885774868368184401985536 6221770991893374795837264621469696 -10414208984190420770984491063705600 9778187052992340186178810745454592 2087976395230471152858664934572032 -293469875360657434898393003458560000 1251417066492753077767463640236032 8003654348931463933029956571889664 -505422359941046053541858566027083776 1542389582011727496766538978951168 1934424381150085053693759624052736 -941137974075577392012009371953266688 8443601622266687797593714341183488 9969924572646747025019006640717824 -596550780587772619693690571926274048 7841027462899974156838208614170624 4701812655456975378484375960158208 -76187885252093042193663680556564480 6623246698977712073907462880624640 9679596776266808286488304971415552 -873041007909402343080391367599325184 3760160453694161596968290465349632 1173255587632393179231201087455232 -450043489508267439947122328526127104 1080855945334382181321474454847488 2637626454803499887230942110023680 -977594289497897701858141284463542272 9480674643751326273008705170571264 683809408484193204664517758287872 -393790306801340091743326804159496192 3660065568830226953811078401753088 3436393258905150681443413123923968 -172149019738614365741066060189138944 7596566047986609733956545244299264 5764934367973515323843960910118912 -90647198888641078104397404604203008 3947795303530877473267007067521024 1887336147191055140291860754333696 -911391687693821973368186331912470528 2136842797961561738425266824282112 2107812617036637601268206458109952 -437107201464139951522409501876551680 1225086884740419904512189880336384 2664490884805945455211901504978944 -710673700586414364084866375365951488 2135961120262149288283477433647104 9775120233487739714365500329820160 -80136275328601465855689082317832192 6091285141152805037146337821327360 6998219583288976626543239582711808 -892267385174649796013756527037906944 4371251377276297389829590479798272 1286768638620762605941252513857536 -175135295206052398155735633942806528 422494815225870836350510675525632 8574124312968430050629636874829824 -34540346265436713897283828844593152 5216498665140393684878524766224384 9608574762432980855849715427704832 -812094995103617518893822159628533760 3162879344783839981900403910377472 427764244084586003911904340213760 -150863013402628027630716011270897664 9815086276419254713163175908343808 9558579200539869343968146977980416 -953377052327017708477969692918546432 2276464384417983067372994227601408 4023364036616371070686831419850752 -877743788921907581786242851790651392 4184912894946295918846958200946688 2567233480963445555945500827451392 -698977485374788837426494777031917568 6414102324904599186766161025957888 955169365615599360757912855117824 -534447709619393962286451356197715968 2292777565722389908797347134963712 3963553999849111013997564370354176 -321308834154289755778433390456340480 5898522594939865722814239772508160 8199332325192294994054395683930112 -957872221157402652220026699504418816 1391134804711109160193293325172736 1157079447581790427320917308735488 -612966460690676854165923371595857920 7384600486107610814324363474501632 612553113236773888867912126562304 -403576432389513210285269882782089216 7008411135881772904419334129975296 9945076527193225821636011824775168 -830375100337052273399225035406704640 3640990625083923261447024712613888 3920772281462472755142619966734336 -673797129437293348308013238886334464 3982314257030208910705575036190720 2115444221994069156251822301642752 -429657789823598211657890717134487552 3574647313813702869182793587359744 29425378496941905591570469486592 -124118409082300917995755503433547776 334311357650426269872540587393024 4842848921407871543563249801756672 -447409328338048290937735966103699456 134806783586125194200314799980544 647487522566061411842178573926400 -964208603621212269286771851335303168 660949456432097560626728655650816 2389739236495752880727236823482368 -575101462947438634844245374890147840 4815870172088755442787172787159040 5928828344768149523819618696691712 -346517578621979535305250061093437440 9265525028016380200989875045924864 8282063753457541334794481742905344 -48023466578652024725565411355000832 7302733951132391096472050767757312 1430955962237567324264924893413376 -194878226591011364344098444999131136 579261099403669235285839948283904 3512019302075142339341078734307328 -696071046793522657135514010553155584 8740184858911195297765748631404544 3502386446713024432599291383513088 -366336631615699014677147603425034240 8651163615702602978416131441688576 6190329036902797824886304267042816 -658142054741370057148611866405109760 7528573279957873521794070077243392 1351182500568827459718976334987264 -407671248700396849176024616494170112 7449164773595182368595564570869760 3591944223874050242726953238921216 -880977072933515987119670568551448576 2412190605242914928400866161459200 2087406597968204659352060605497344 -934457683990190282546701518948532224 3190491576520097068147235260203008 2974487705408799697666879143280640 -581995551780918309244772539816738816 3274129509095928425994042357055488 8479070875445908988372287297159168 -594324662894145558790586591078252544 1396030915290987572486381989003264 238331022472279806111823836479488 -579858006413144767977550420373405696 2147001787250333902640472708349952 4693768850549928879732906923130880 -489762120937003987736145422255652864 1763408948670470161585385567682560 1832516519949299044729001407938560 -35149704797614561010771609352404992 4757252356410867241160738768683008 3927136064970832098191074987606016 -793407308147317854589724756346404864 1723195946150295784023169739784192 4630906265702690687404791809703936 -98438187798427305998982267763949568 8853722177695856317892103268990976 6500070694605595760056344588058624 -784569452475889314152892344498651136 6740452893928527596400473656000512 9179392808652820001824281657868288 -850905144945482602491238950973210624 8434650811093784990046495889686528 7436817309842597300356673745977344 -155612599396621844256473801157509120 5670001079837011325330646556999680 7196290553594638092851797060222976 -562524689555529066936904055833755648 555940652749677496191212176015360 4251228856015130303967167393038336 -992897595088973032484357631559860224 1380301917840895531907543897997312 8399500313929143377643417158811648 -172258153001614041153002014232281088 1301416268001640063487875242524672 5214922820839165960899708974006272 -258713975244431605768019138270199808 207626874448043640528111862284288 3380426455450790193623172567269376 -434507075586017630847705954522234880 7270976908974910927522913325154304 2870371108432851603445195321901056 -408526387257289563498070682969833472 1109038299760521353882862635450368 844507241294599178362529838530560 -321417009730260323266113150813995008 1240314947849025078556636336881664 4043104473529771577459935042076672 -289811311785162263171326094543421440 9826446063238775144016678580387840 7323442333250480497108804840718336 -657250070701595178526043107810607104 678978831374871093248742794461184 4848130834891744579544896856129536 -524280774956478282256905750529966080 610692043350590606121951836504064 7474945377955041695894437042847744 -672144507320059326907856794511474688 3281813952482584492998212896948224 3997322793790637286655045253726208 -132789637809943976069648102123896832 4059838051990362549657850429308928 5146329735401958288640974893613056 -360203145429192606109901460682571776 5390469027909589804409698513846272 1267557335155999288270279734722560 -402295613395432762437566274669117440 8925866270958908020055029017739264 7141340072880355961749061173772288 -473647730310029527202344017860755456 2489279719256624696483343163719680 8539194112831235312605606963052544 -251752245985074754400059668538851328 3174651610882422504949271744217088 4365364594897985625062813477109760 -83193125018753115839043907868426240 2264850145465654005823187474972672 8749547955969235663748597138063360 -696539754514098409978967035637399552 7724621329378638335321584800104448 2906581160391371254168140432539648 -694193314159406044721776943595257856 105970358399681267423799096115200 4463380845250482314074314829201408 -623853445520295292333236298922852352 8828192718989669936446322193203200 5649130934259934901816574896766976 -714880773193495184058607368417574912 6413283033702016186878569345974272 2055332400910709834843115176853504 -171949826623624469871858514325929984 3310760057960006615745504481378304 2592048709807001044474391336845312 -518306913776987503751794772781563904 9539342513253255281524879638134784 1682349201802211654743048455192576 -976138354867257082480006542781317120 7125333053902771519766278178865152 8255966921329927203535855938437120 -135658827900474818032430142474682368 8111411408049614242364085818621952 6851980235518956757747683020505088 -247586755160814170152674369072005120 5264639349585214400701519752069120 1092073514582404895014487905533952 -876322867665513662267655767296311296 5061195140192551254231894928130048 7747684493196472608857979455799296 -622782058092000639688855593655730176 5183246269768819650985395925024768 325815163307703371578605979041792 -3152851671100092261125905560109056 1005560464321196151790651666595840 3438208791116533002914440878751744 -519256187386082029208711446822649856 6490413147718408775003306117300224 409365913455648656928508156575744 -902241563245075181881023149090275328 2651276280450152160424434360909824 8021245853064297838423247656321024 -989482297324837933710494752934199296 3141623729283421758769423676604416 6027158225572313239213978003963904 -89545560156497208620551911306690560 1279219356043898268977576743534592 6383230566329774892532672621445120 -283692737479087763770123311405596672 1003740765963477492489929004941312 2700458692979780417470281505832960 -138384658354349261320569404967092224 2161263962125922420516373147942912 6446082236830318526646708177207296 -482172088700266829000030471231373312 7740836570517449140552666089259008 7819168849791889969736274180833280 -807513320382887908874275070664507392 323511532987095473216056991940608 1268227943124571740648448687341568 -422221741047053604857848354916270080 153851865750478977519123704053760 4644754880610386898012873655582720 -139587764857925225802155654616449024 2422582023128972006914720066961408 444936611330137580855139204333568 -50734745379830576616713441641496576 5017077446599107190238449328193536 677290988796023157041082482556928 -167418338314389997748689102008483840 7383374745350050196352035094265856 8954335386067721063811228668788736 -763590376392524296193726535648149504 9500607157062143018362620488974336 1505452724973283766707735723245568 -358620406524474996630805617991221248 4701451032809552125949849127354368 1137115265970882616340647287717888 -810569378611919339166613829117280256 354678100551208480157930446913536 5967313616075740097560126731321344 -995107969886133698230709016554635264 2807035056217138724559038799937536 6485336409327397489516905007939584 -650821101287210804056059027216400384 4380178602188253356398031910469632 1430906448757940183759530401726464 -553218202223992473099952402630443008 2310733678210780798840085055275008 1581737035730033596279554299658240 -327905120142652813498510068433289216 2844559468157663071358957610074112 3959544462352692770549173822947328 -760690644700988515534612114415026176 5629606288986176680506566557827072 7642189209385656906172803204513792 -924364031604910863449930940150710272 2986067985702100795730491204435968 8038698096257850358391962368737280 -573812866970837270002379079985135616 6245903536453923363537395768098816 5996036928563207798766643768721408 -429672852910157133257879732373946368 5510448073124242022944735433326592 942142189474291039600261908660224 -22673259298442801936395042637742080 6729633323722971136132519672414208 8402554561268863380873599279693824 -149834760913599552545446143694209024 4584195580737465511362755697836032 7570089451836325047779388121153536 -232210850632149150862842269861412864 4177457968174662777350935405395968 9394001564627598428478661801803776 -109267050357752191037296390336151552 4354052573147769016676715270766592 4888820717269713687400783240232960 -897414247125463648194137167633580032 8990775178715304478812251258617856 7291602293281915234525760460947456 -272041316029176498305900891468726272 3018085023179252323094393352355840 8092536922143980626456513456635904 -173167572345589781570655068996239360 7198628894783074417977321626533888 9200918081103742452828058727481344 -513077495074917633675143073098629120 8753334678952820757692784058564608 3047894962780751311002690847244288 -849342167092091872222601055312019456 3682658146581729630496351932383232 7295915004344611445077594695794688 -730995119805024913837611485421895680 2041891406838955118066274779791360 4217530803990184654509019043463168 -372765934267616064198533728765476864 6760526950828537852390375065387008 3542497996828905439673890394603520 -404207261550670110868528558224965632 6499904421102192814026422858285056 9645525781989434360320508649537536 -654130913895184837245041455998697472 5422730633262890643907346989842432 6283106837608287203282444506628096 -764465491922372254780909696814415872 9432843007592084398183484049326080 6884167632815151831126984269758464 -562634492663473375781385174517809152 8404940140996043673281993088434176 8263117009008071839026144115425280 -462891455343327965558301281990213632 3292056393991333955485399420764160 9470292166123400979500199739129856 -653989743529956735523685279746490368 4273941976201311944857169808064512 3660265337426526064029722510098432 -315435917197270200225643510347333632 2619798558478205399363927993745408 1087500794386185964806275520790528 -872974240830064316918481353539846144 4149727978608910143799813266735104 3571412456977326588004710876184576 -332942967831311218629709295289106432 495970689921686905438412572983296 4658727382821038402981957740789760 -743028037665060085418973576495628288 9859040108140483703477102243217408 8481325119663969182810632429240320 -511496528008281842542335263791644672 8338667057321492038072154892271616 2900977858240103222987258540851200 -274141114967453425411099874769764352 3068535495045843983280627968376832 8574294936854853985359213856030720 -709959605113882933404628498855755776 9211336738680371478018889340682240 8444037238054419319130947248455680 -94903676426642266762823461261803520 3986881024280628548539358348574720 9780653667203482162994094947696640 -906808148354237961423240357132369920 7262926211624164566225861258248192 250988825459461246221437110321152 -120635544962880435939226388346699776 2666000394433222217744323543302144 5259397261770647014719036130852864 -75885984051636744243592524904529920 6631888822629377254899072142147584 5812943928773601873898213694504960 -397651228390331545497018001279418368 7886569945922791254235347159089152 9257965687707613132072840704557056 -171426839961165166427067731230588928 6035118142320955092261477887770624 213925713980842267904616356118528 -32747330208729540325764633622216704 8732893810878040588450757450137600 3738313634518650715016902507233280 -508636368259795210881040178932088832 7087150173272541568381486012301312 9772435023113094229467074205319168 -603306553872126270772059016796307456 7624556485676725584777437557817344 1987809827503843953084511859769344 -626739363954656512007986942859804672 3868382350088202199797850301267968 7942221104999567772176662348693504 -374832400734155407534001087718621184 6039639201473740118904011575263232 7445228906863867501565133818167296 -858503904951750703127361212221751296 1577034605714550792601059765256192 3387916456907007711772807962558464 -494390617969399495765049872692019200 8701920739641637746619983362785280 6936335091970465594203629793837056 -224393022673799063862727312775577600 8544661896460780667181471404916736 6587653785621988568912904400666624 -385684342134380212039006092871598080 8752045308295792822105016360763392 6750927469287064414770807238033408 -755757429522009052877076872902475776 5402042437282068038508899714727936 1992731143773715047873117914398720 -680395818003381765480571525104926720 4855108726800800543452455417937920 7154970212896800935801256255946752 -156749400414327034820618829567098880 1175745038948094251584320706707456 3402610475920863380026701899628544 -221292149517800818607903964162686976 1585287602960838079823978392715264 1283979656406970461122678960947200 -379016411830513111621668190099079168 1773867020553268358681907160940544 8509041345865198513391008374325248 -268297130019514362072364217328992256 8401769230329509554946398979358720 4325511882634662164861395184648192 -572748479489436397879538644110278656 5091938991165626480679705101991936 3758071678567708852309462467215360 -396142733590290562839861954716106752 8876672683223602048882547080822784 5565070799257990880869445586124800 -28471975701034561801445335873093632 1974757474748459773349598372823040 207962906065841730469673360687104 -368542721886103281485698165838446592 5447608765976602184283847160496128 2599014985915341765508180593344512 -523213026745127527363762369467514880 7166912039059241689930264595136512 2351449979001263575081783505453056 -877213516155410310629113887666995200 5460891995365284347183864578310144 6405448636051012297169833327329280 -873980407740384195436201312377634816 1815697705521680393435022423490560 1409771549167447076412653312147456 -966825614264371163206513658655932416 7570643878514678744519009904885760 3835741950890246095295950257913856 -220533113522375341210271827651198976 6580427515798176258786666368466944 992952016756447263516552226406400 -841140782738515764895507955878723584 2409732261964213017224582516441088 1219351786566314135051507041566720 -64432892335138980956925444365484032 2906069004746040679084870762233856 6417960634053914858677797556060160 -834653080244119404589702042622099456 4391889758925171013556968339013632 3664568770593824601885650936922112 -619732763332854525495460605955407872 746475712398536734117184839614464 3355911161159436762428837795463168 -96169264102795964388511478758506496 5282209930790033186949969056104448 5944697065275442665298110573445120 -321758669350119084017274301301391360 1317687261156133968318189765918720 7831507014126196907933573207556096 -331453989180889686119554987153424384 4218955246469066537675468075696128 3869177026544000294304073719480320 -376082224813786198817464746984341504 3124700034700123509999616942669824 839067403466261104009308203384832 -403377273164745721705379916115083264 8745190493173070067714872267767808 1586787171471849156583568363749376 -243071396051177288581166735351087104 4803781148639444966297424810213376 6041599372045048777466834233327616 -656021561904805391674424996787126272 4208445198876659505223722506125312 4944739658957808374104127929581568 -689615042338871277585155677579378688 9255805225061854767178164178255872 5560994745903348590019035617296384 -581973715099252153908729667240591360 8120997225975939649958990441349120 3520644687415591866841369401098240 -431322401064457729011508466885328896 5509285758110787418919782089490432 6046047441968071577249232420077568 -655860685848661082491638830988263424 3652599090670524473758267144667136 8126015395617754300730873783255040 -129563742038236489304725700302864384 5348695362934790758877078759669760 3853607379473495608660132003577856 -415270185218055515724919488779386880 9119765634800223262415396733452288 7827043361754872496879124483145728 -206301177724481466426913500134637568 8341387196533181064601431611277312 4313526755349163337654889078587392 -455272225945358865803014989431177216 2207511719491171866111719696760832 2874645375367395084927122934857728 -891477260408934577613671859394445312 3977953088601425770073412136337408 9699077879477203660988621155991552 -813620009225879947714816632852316160 2556724128720234637172894892818432 5369006461278286672566016937033728 -753023908576239260174266718679465984 5525054051647209077712895285919744 8358819562150817006025646616346624 -612375377528888550255308595722715136 2463918836622429462616245169815552 6998317937870123876278455999922176 -234087383277277199066227162799407104 452116245924055139959696806379520 9846104862359366479503959907106816 -155704437986712855397980554357899264 6255975440011772947114662930939904 9700232508396600829047420655501312 -266426788690242296205730795063607296 8491334920711045204724479091015680 5619466279216976337771803667595264 -653994121447357729719157246513905664 3295184129463674759428906135060480 7224180654906019003965123527180288 -939713548553257044646942398608310272 578303038455638939408806870777856 5035937791509611200849341562486784 -101224294523797242659849712661692416 7731049716016894156657102780628992 3656607229759524708393631621316608 -780125770801847424441630078212767744 1018943563470070898992744471986176 6838687629933714597719200160022528 -81542068943194908089464204830965760 9126298738880353623011339653873664 8794867067268537110378526866931712 -416276161816947031227925170264997888 8796181857084142565294305905213440 9786362888757702031888339638943744 -286430922964598669761602551159980032 8859368384869108956775454590631936 596596924867324396636334008041472 -490922422513643319943419183277015040 7528967074464861062694117056708608 8912481538567137223016087004643328 -73711912173280270647442027143233536 4664266846260864749260428516786176 9117058255042513226096552544567296 -55933969053270398736114664857403392 7255557312865715466772276186185728 8684116360508036319942628637409280 -91551208557594996504532525409894400 3315624758046364256373766317146112 9449490031508928014389912669257728 -889653776051682164491582372097032192 5504625987520373114974911990857728 6338412169798544995901379354558464 -559244505486847588506611319683678208 7246034886950965897357208080875520 8254551836577141613213291766611968 -511457191001977208696777425209524224 9985013198288409782495842043691008 8349423392124454876777381965594624 -85534007557240403750577256037089280 5063951645037842764748485134647296 2261487373318504028326184339111936 -861385961042585050753849584611491840 5034674717992846103272011530764288 3960553023824631017075214630518784 -136236287651321324112389538047852544 2190835325186213619245482892066816 4775081626568288292041510591922176 -197523957621893384983802227055394816 6288599346495430082554841677168640 6376468914208438856402802688655360 -443645975526732288959304522650353664 8003642366261580310660087113842688 9266606069053781295389266963070976 -589210588090984092695295170824896512 5924968301022362615687545964462080 5432978338473070017798194201624576 -944901164335800256094823752583348224 192507538318665793891185943642112 6075344298791980426704581742821376 -336469296452714673831919713081360384 6550499583531705844278076085633024 233437756409603931794083885875200 -909453690758631574307749652473053184 244222477608814281628864701530112 5582404148677811617034209996046336 -189418481073408777081755616526991360 2527354585123089206570667047124992 5517388320660329996256893665804288 -934492883840789982614870581535834112 3888645869203278134750907983724544 9769810226750918937931320609734656 -566762687451415032041051724548407296 9839442261772575017262642714640384 2552642415563089834234924354240512 -273271303141689381007544263307689984 1074903727786674422497310324817920 8483621945080600179078443481169920 -79015388968869597782718919280164864 9662864960030389255381419613487104 5002030666813478129815811306553344 -827670444694985843658376412408053760 2961545075990148089367454575230976 2693719193375247880102326501900288 -23870834671081127407786890591469568 7147941161899583080592987752759296 8900723239988439306606029645545472 -293096702492467107275767361642168320 4845600808750348958830167593058304 5442884224885873568447979927371776 -730312645541639121875713231813607424 613379459596862746265212139077632 5727121457701430557719569778081792 -918733069444505172154751676114272256 6158766904898497897173944130076672 4474018895693385715065449766453248 -227414496916768778977630155396087808 9437989192294046288838113894596608 7019163611495548123284100547084288 -875864170663944013528866843342667776 3008767078456378168474817242595328 9851879709424491420190914107146240 -296613465877898875054053841593958400 5415509582646541299508901952094208 7963969825952285435191512665161728 -876928036746519292025652185854377984 9624126541352861393017366816751616 621866087401515705004230468173824 -876348959428661294417299489222033408 1975808879882150882248847809052672 5433677718177523974612839636664320 -605641985175218677551547402743185408 6825643371583110173056192928022528 877290456716288143860883867566080 -28603922508106005521181481306685440 1810913108130411810225064962424832 1682646618869025131109440171278336 -295348529641445266613519308751372288 6964592558614882743231733544517632 7488274671549088350191218153488384 -225035740972854046217061756966010880 6464048812308925064562043539947520 8088820035311605617192855555538944 -368165445142558268122488445792681984 4778122515801796034722740404486144 7923606579076877298976257153695744 -90819467379249546359679425401847808 6792579789019587616249104834756608 7536867152882179504387282486427648 -563865462158407055781503993366183936 3224466546412614956842179557851136 758486932668934357477490889326592 -591358768177647421241807656290615296 6590465546632519340624011094654976 6638438063316075551429717684912128 -457056166729768997790061172447248384 8299405608645280898198010226278400 5277170878213544696359748989091840 -739584805903919529695524085399814144 7124715592924773940217659088961536 464266960521000538291571693453312 -586364753338471150294362160719986688 419932218071427049902402858647552 9026060013963462703341058715025408 -903621206510906766174409201190699008 4349440962123532231251962045136896 8819235208766987188427237391073280 -161102754179543073738667200216039424 7343261023095073142145704651653120 5609157257437356923565616878583808 -248270654689907240209916152130830336 5695602121656517872751047172161536 8036023682010062760319961444384768 -2671467491517374895612685772128256 9289232864875081854729390913486848 6459566260248724569871369356967936 -771950119058750524587950671707242496 1188906950722205166410687842353152 7669099190876754292267150313783296 -360384415426442521794983345170415616 797259213308529357599751582777344 5717615527553392098741309950394368 -914164581381318024445724102257278976 336204036080667993719564367036416 8867378937227761528549702352502784 -334992012183815522486961880053055488 7558045445636077293999232013828096 9500551641486134702690576728326144 -957077994971404124571723033405816832 3311055938480886165039726467219456 387256997494827665536947593412608 -688868465805756922430693702698532864 4016743518325292989343295661408256 5534800165555845684357707671273472 -428601623588008317811439221061189632 9093981314046307314766747843690496 5029274962192168142062196331905024 -755622566713473631949628892298346496 9461948110393776713495997224845312 7741277153810898625412654608416768 -99106058273909775261929469623926784 5309024460525006293900953718358016 6368063996318268484103591209992192 -233911428954532480015687702619881472 4552999298887158936956511163777024 760120239007029294932350029791232 -470670792346773091834241946742685696 1928187045475823294906439051509760 5984483840414096966255668375846912 -256698287898796944139503549280157696 3631918060358022002509355541331968 8202199227200640496947451488370688 -907184545621356936958612601118392320 552838671020769110812691762511872 1852402559139827769106203934720000 -501259579016907348345159313686265856 5708536661326998466141830726549504 5031317846588503123364387200434176 -173090816932242228429536949077803008 5109704193880953673651485468000256 4829249665354386044839465565814784 -123560012472565205374402645328920576 9125090631437941850680051904806912 7157308435865400589539126464741376 -226240168151202740084530437865603072 1083172255278270449746476919685120 3164919717799611241445357021822976 -561232957355564743041999407843115008 5023675282790409199799695650586624 6713044478715066980971317750136832 -73181706577355599476203118852571136 5354660872571865825186838803906560 3411463379212484208100526228766720 -760529600413476377729799373239353344 222344981678119459062444258754560 5096488696125428108958116823957504 -320090733419667461835756119456219136 8377330228694638723546187743363072 2089956380413264010623282113937408 -897308330896178011602506659989028864 2439352934348769188099894015950848 8084737665194407363501439114543104 -425385452073226317845989167537848320 7042072067011898853552282696417280 9960129887808793539456843412144128 -933397777942057286448995754802413568 3071658863268899863562214778601472 2503730645580031216733766639681536 -782073489233955909523149806588919808 1678530042891681883719163508162560 2068665458445194790614012744695808 -138497597685656750579017761251393536 6972562180040113768742619111751680 8063363350918380506727055007678464 -955037111289221183950380388438769664 1923155137044777075193454031536128 6538076072719553707753154415689728 -675623256219158942421898203051851776 3802007895444253854188433360027648 6803603183456966905250233366609920 -372523459147244549895827518212014080 8401254681523455388258059730026496 7700369449001104047792331662819328 -650393479095633578983031528438628352 9570230176651582620850651039531008 1823226525684245378066163697713152 -700222679879968718717613839168307200 4173865031609674865330232626249728 4074380164174184332349243821916160 -216320790421486498444656667187478528 5632957884323450903936875882348544 872349643553520931841432082186240 -357383482030434315375270534888554496 1729664416420411631939598162067456 6838357818381512113265019585560576 -785454424148736564572218812144812032 5583862637355444424137698814459904 8761558335042895329600685016612864 -144111683056112710761089097361522688 3205702804620524754166059796267008 7946682038782556169352226661203968 -681735005404790419528766126873903104 3400436822539313470490768756965376 8279231017316000987425661863854080 -322776247405083911501834899226099712 3887710628493542278873505291304960 7960725606733201526932894486888448 -815368195945710322299280579603988480 20029059570623850087700905328640 3866636918095410928182281749135360 -617013565393182682315141474487894016 39078726953476550539997513515008 3511117484336632114802175382650880 -562002291302208344635588613746196480 8548696627437540433551646055727104 8383776016864977346758822122749952 -709465573310696188479889371798962176 5001168768388821663168218898890752 3667527354313030358545898011623424 -285302077430680720289007946287808512 8946152668620097278385950526799872 2735838547098051173850063696822272 -472519540516082629582001649951440896 5943498941839064043323582807277568 3058794531275409068584711003045888 -746329407280643894093852878378631168 6793044151967910781690614695067648 8334581399039636424165194532388864 -613621195263820398340303454260428800 1514664780973320371011510599680000 1442795190894240029668762898661376 -102124607160325104386890029747666944 3790855431281399775162639700721664 2292777149702640078854591013191680 -689802763123854081259649228729221120 5007677223989635789693750431711232 1024846758731985462631461008965632 -401572457525709800271455629780975616 7701623121746018855363432494923776 9110563667212206703881491587268608 -39751317690933839969666395797454848 4692618329469048157319252357939200 533214756243253794819641033359360 -113183875965529597150249771438440448 2802080115873093412599708407300096 8919930827059143986314592944914432 -98748601007046069964012499811434496 6314176608660062949393720951177216 9581361572038877286944327092666368 -556895244511211557978821496519262208 4491288797846224591623171577217024 1853853002563259389280680950104064 -891120161989803291152704772702732288 9139451822511344420893898332700672 9104892585881402410982253944373248 -954318951351572387056119053874626560 6541980685566325696280225671806976 2944966925755525049382022024265728 -644026119352487243899152081514135552 9287290992288001562246177741602816 5467718915285593499735604808646656 -246362307459261617635111250314657792 727632730630974303609596030222336 6758697942291105446061236037877760 -337099854941704770650960459649253376 1807443754963641751260088697356288 5176620538375104616046498043396096 -518137535067771409425755065129369600 7821957482002776517099507626803200 7379013285226183656292091273674752 -498955584901678993461242372435214336 7113921167048976111272952481185792 2727988445726490519038260464844800 -595296044466945202600276948001226752 365538706096177201154840382668800 7854043040106831458314731059675136 -322515899922176304725092823690379264 1340989514231885533783010482061312 7910914706919854411374156266340352 -88508081349304448782657810608422912 6843428344415954043093147818393600 5727575118167447402991315769622528 -724861406656860389528176407898750976 6876790684145889057586232181129216 1082115313218529013724426077732864 -264688647814967491002587845551456256 5298001623298306047398316555108352 8031323374983095994478423131029504 -994469363742456028227240243996131328 2828119995628138556447570647842816 9655832192639114779823374692515840 -267947931113887282787221904455368704 9995072549600055550288084848345088 7110228511227951387089288822784000 -859244515445727642256110482184208384 7094766955699498621515707461926912 1534691855692944725742487666163712 -496349616430210785821257529334693888 3328998290657168199329814388146176 1063800399472839164038344161099776 -384636057777181623714761864281849856 718824394836138210147701991931904 842628838945591557272183244849152 -213930049333697933673809804475236352 4578658180374135541414375240761344 9908518634422268772712362050322432 -803212903414594463605459795908231168 7582013070606673978806599807926272 9979303456308452611784979179896832 -855390832575449920769290219038965760 148097649918284657670921285271552 1673646724050097094817137173725184 -502006122429930975697566030442266624 6240390907446362821430502393643008 4829417444723606901161738549329920 -561166554643974158634746760140947456 5354123964041233561771928757207040 341734307560618705509153893253120 -400679037180197560824640227843768320 280508693242538659307916483362816 4077939522763165895118910493032448 -229279657987748902442925206158704640 1300335874767053689873659072610304 446518215183243738385944896602112 -465449077936635907105600962367062016 6430651485434128922096567823892480 8984878765386274996676132146774016 -531544022498622757054171812527603712 3763650886397930432847098876526592 1079573029578429297367994557530112 -77901072397714984412495516029419520 316264232776865656478657687846912 8163973303409905696145403956690944 -124301426687436691641120564304674816 7615802087470408210923508381777920 778363472942439161722142143283200 -589311667569408791391653849695518720 6492557297229940334548066477539328 8785626887335433866538639331164160 -273415434598893825289405826368274432 4603907698719675940208824079613952 4187360366924058421893011234357248 -203590721354378362248543345206886400 6215138070256048757410315007688704 4001524134459851497080294855409664 -602453700881990169023194038324428800 7731592311977729925260543375966208 2802729527689027736040509496360960 -152775600839649644590637629172613120 4452444917227046931715907450306560 6795429762375205073266193918328832 -432119062033464031248603382366076928 8277196040035350410102210683731968 2563774767314549437807583245107200 -612307540966632092196638826709385216 8799736948173215053808887964631040 5029941889103411757452622177501184 -729204663517380725707860880813719552 2767390188484432442976223350489088 3277528103479853638567045283971072 -782037041399171619481529915688353792 1821519869352045846387499775033344 9690303440981160903379899490762752 -685701040721917152113936429519732736 6466895852159405551820093238804480 6179393712188210505867581093576704 -682558338731256055883656981917990912 4674556871654647830563155355893760 6436597974110072750939085733888000 -522886502597479286830163553702379520 2908912099471810643604306791497728 383468731704495811579367496089600 -672860896189758095623556859019919360 9704015917192025321384776545861632 2193408291686323216291783730266112 -367601819044007012840525181111762944 7406136612993205279731592682536960 3376736576525922528424447900123136 -548757007035146762177651564806668288 6558122093226220861118540563873792 1225866635707968829693492132315136 -401210838568009102737144512547651584 1336247978471584063123008209813504 1483059372421253239560168756215808 -553663123533425663141085971119865856 3393336788685211947733230242758656 4000476649875579176890014573264896 -834467590435614110546159500806586368 7192337105751169989614701687865344 5061043804387049357676568031264768 -928263392928408048611117784788631552 9517670823351968311533003769643008 5637281502023815891248042873978880 -608539865133130094123781198777942016 4177298257030733055052369748819968 5878802104671637303757010397822976 -785016046712744667471447171530752000 7921917628181495992867352293146624 4656876387533024020937035850186752 -735324416647191383125033015884906496 4757647030503734681918757272551424 94854683599205608041995017650176 -144638030448521896976182825644457984 2771160183918240382719677761060864 3210335178911383453664962821488640 -928695460817831156245228703564431360 5394032092131189488238555517943808 8438069352122885172639134581260288 -54886180949893167879663203064479744 1415158011274558969620873198174208 1986224035981523954739680825573376 -958805962111384161700555233446330368 9190122325889786735927719016529920 1191548244455293931778951010582528 -710625633050571479794632295746371584 6770228552495799204614977062174720 5766806369072655010096038310576128 -464946171602738619225050180577394688 8756639445666276272802430149722112 7522701843588184260916511862947840 -637629240250606928875924573487366144 1700885560729233757268938929995776 2670999282098940266013635368714240 -736388654607405124286471291923333120 3675311635175562214943693001981952 65896455709181842478767408152576 -891555237586395002157620824916361216 249194426436283557452364445122560 8223210603304933971593587207438336 -190973965646351622415592541772578816 9172433144054533666738128291889152 6295040395890700609608291572514816 -364531564014676987139629803756322816 5988162393629132442225336425381888 2416891822535877899110570627432448 -997359093299944853740086367245828096 4759292199843662468920803552395264 9154230853418187794165054587273216 -859580531528887216208456530293424128 9007681740490512801577274687094784 1889089441805562429058420542799872 -125556609991821515305012875560484864 7854057015335741269947536031875072 667399551939701734224793188696064 -543601709296897516086442481508417536 8876096412589797952378578975850496 3606109985972734462748967814823936 -698025829583090195733051059631816704 3412900875892840045819523388932096 4754896853182437057073007319580672 -318641308002114454449773026991931392 2104683510784582375686029017350144 8575073937217801784240486922321920 -535175246166525596127584372857503744 430530155806554176855124807254016 3077253635076958198165816536465408 -693924240752166934645808640693370880 2385571473802544154861894874693632 6235322424569735426987589812355072 -441072378775029021419917149007249408 7419354674332289022695070488330240 8469719595291533027556185396477952 -91736714926145580662126401449623552 7868781146185076415151194473758720 3167062484165788381356287730909184 -463771323588482468039444745838133248 1124728949779423076386849733738496 546484363458343596686904414699520 -745164309743385298766477175128326144 796906346682553527430989031145472 9012516397810648203809403468513280 -325057382741051803917952017743478784 7443988338919221335737136589045760 8762230462691135900591314060705792 -176881676807450817037571291801976832 4219619789376825291429094497452032 1446636138504815620181668843749376 -336448693185063816347564418527133696 9779508856523896622245923365322752 8676510183866423608328679654948864 -426533809151556675172230317813530624 7849768668766300216728565244231680 9445720915660999398043677479665664 -757147666251293666322411587991764992 885323074052020533370261084307456 6598762112121659248626325411332096 -989468747679551462556723452361834496 130071271445082419705690741276672 5003232884274520827387554031468544 -464949602263268761014049512892661760 8353137122825865026025594101432320 8383429878364693381063786192961536 -243064183247599121471683048532606976 1185107429895501157518948100472832 6925145961321685748872966964248576 -912539956131391374015106679520100352 3022741932386199037208942497234944 158152991692575457573848844599296 -658213933383747009147943918847918080 9195789050732743451534118233309184 843020060711783198740167438368768 -229647376555600794741883850838769664 4900492349189650706260368828661760 6279320314123450349387414350331904 -943395555642335675668358070886465536 471608796116533606122038046490624 2450132626682027559468446223695872 -397143392989996557364019303154712576 2468526256925039617333539731668992 9227810160711684361757072384065536 -186065263463873940268701376319586304 1466953450809080658851195827257344 1746098077195064769995598616068096 -955092359118423629907067630763638784 8831109727025048396898980637704192 8607751001453470130072980478230528 -706479065971456697042490345010495488 7117055050465242672400760441929728 6780680431940705275312082018893824 -299775813754117874257665125618024448 6931159305097323605586019834920960 243978147620555512181998680539136 -902132296715997844249896960653262848 2748351968083662613509570056683520 6831880097843701026905536092700672 -199710558427945704544417651202457600 5328701916789966864126940972843008 1312385533060777597825876645380096 -13900843131560883391391274169794560 7268849138614452999888870511214592 678119132717014837367989466038272 -110793976484192925187763669657714688 9950990044254425235324521722937344 350484986320465948543932950380544 -422908694288635859459028053059960832 6040606239464845525735335157301248 1969865815905176239103059272138752 -731527551322607874497284610971402240 4119282151063907733742037539749888 1745436892969433563524670917967872 -168416949683832236564168562693898240 681794256576466046409387563548672 2838267471917983468570929499471872 -63703785606320063362750263135830016 5367966587613987384734323570638848 7862308586546909555256458609688576 -474771070162949996651938361787809792 6220646574558831224752808008876032 9743340667287675756460944895508480 -107307131935209489365266696318746624 7909525549385747102965576503394304 8661745960227989130115088312696832 -636001925655938646336491044279943168 8872513021040003125446808382210048 4811145523539625772550475764203520 -38617241448456144623586082172174336 3355125913103191968642446617739264 7465121589848768415604739703570432 -897926785705645537229055840070139904 2879200141477465090263446993240064 6850095276915303366210291983450112 -934099295721565046010571250450038784 809125096817392677044412265529344 4012144178613612237262610440912896 -549044629549885754965588762423197696 2340787303050136769418694221627392 7021026898014795767931946682810368 -144068728607989002865606670025752576 6473642933452009494432220794847232 8760869200359442194021138160418816 -866121643453703339116170782768627712 6875469293581668292474155640553472 246835093250570371028739277455360 -492475112075842280685692363193974784 1383733990451453261937380702552064 3990207651815801280679376930734080 -995465925396694666754986468549066752 571593920858792351894819160719360 5414951731269216111229541581586432 -832620554603964313856798708249657344 5083006760358809887862814326915072 898089209521557082015360266272768 -427408382887458276532749737182363648 5366772654899235969928006771671040 1550398912490622658525231124054016 -873797132348311231590022887929544704 5814860667792360881427260968534016 4552526138475834121309208612700160 -521837438284386327425508915648921600 302361913667915170254564421009408 7498959073235828307770247097614336 -155412826457452055033584874694901760 1107976949009939613437358872985600 4656259809193319059082227568607232 -948121158478935433807813837410271232 704468508905720499753485040877568 8425829525503461549214787319103488 -346140509054844328484038688177651712 5254573894823614433086861821870080 9186243723144802637916193595326464 -270771212564337065078707332367515648 4665038937313846444790844686860288 5346689031461156783189505614020608 -540572413285830695096246228148551680 2534448603066957472344002468511744 327919873937775610455099678130176 -846407066243520803759772234328047616 1631332031944711417394628657152000 1737350086343439325499736442535936 -830269156812627085336479488427425792 9482273382016719459735630694580224 4110329820211334645854537858940928 -908467864418882444068144801678098432 7476118349352633599247961418629120 2514228581521275420912136184922112 -544967608770939124766178968246157312 9050132075442284992046390489120768 809123877990046976058379401691136 -938375610676296413333699562133520384 3822586587661756466498573447462912 8667719128331418045216646856966144 -839707323809207320995938665356066816 2536732041145474004487694545059840 5602748112781855272484660752416768 -818375767985808513911218696383102976 845369769051606949741093562875904 6706221421036358166095877459935232 -512505262197555330806821795657678848 5575164405580362516346452278509568 3640117803155334083077834895523840 -344337356683204031190502569643343872 6686932642872708432441809553063936 3452236477370752659767066110197760 -845763166665657917962221884238987264 3967504156475509615644028843327488 5109334300301091508399462684819456 -910351340575425657463082507642601472 7081034882846363101564277838839808 1085022768529690192900474370260992 -776035314468315872253449659056390144 8299694702576660140642906132185088 7882183798930465817179298218377216 -116348869026369251911022126529773568 3556363658609166944006345622290432 46440317248474394756172736364544 -125884388718737349204217649176772608 9686203170429020697497425254809600 2429438773951115159818277662752768 -281346930319110242324515579156758528 3614386428289040531316432823123968 6485553858785225108888296724889600 -71493929234838685004839449018761216 232282895707141548633691590230016 8802146078824614547949213559291904 -498956118415602392036231194058162176 5852351168620240098786829733462016 3445001606530273068726848260669440 -741336575710151192540518045867573248 6943841188591697973369444008722432 8781559482543840249496173067370496 -93324082940118574059537255752531968 7883097267806422382603329930788864 3572132256050324602952853785411584 -917497846248093890974295357837541376 3523892684388966734852410163855360 3010585891123390915785137508581376 -935310200372914093873030050753806336 749869597239298359949179163246592 1532612878887627820287312103735296 -530034864143783732688975963373961216 7709516817383936813497799285932032 2449295599362510317231277005078528 -479642077441266631834158508562972672 8856393859541455532037289805873152 90385414471132195673570306686976 -253141040583670978264160111171731456 986499815126591131158984200814592 817305926111978898002121550987264 -618561915068214351009656989825368064 2733589770736783347404948140720128 1118036459982979450991422113579008 -814177298627399421450511137435025408 3166587056522604156328573669474304 7181407169062678724284238251687936 -851452471318256287193993042194333696 7596427115527354065102375292502016 150463969192246445036224825524224 -804596467609566721462739772723167232 5284962456778087457724920894586880 5810411319129973151497528243388416 -414645640458463223790291429737103360 9068072605482373117895573264924672 7172915647478177527934250974707712 -302273821801111867935993708178046976 4394248926344663937942357104656384 9614504852039177858747925675376640 -160578358506485960940744813112721408 7103394130891824253742135805739008 5305039620658480835053235948486656 -753303286224843528892555222052765696 8865526650990729615631831877550080 7591099025723105878468741059051520 -741187634187353497729891991289856000 2407543213423458000431270009503744 8654180174175387468914293236301824 -929800105267267889362008278300622848 6719099973855673727753526595026944 7327198513116771253829393956470784 -378192694046115460218232203236081664 3997616910483142243232159763529728 1901584701497250201766194631933952 -207759256231101702583297911273029632 1958006419581701883897375809863680 1339448281049111540081839583526912 -677370374065943191936067865956843520 9842319177018854144705368258772992 107703357970309343304767777013760 -287211371003389140858956897505509376 9392732894272763486386852538089472 2956847608823772491235817349447680 -500713159880894926589339913053798400 1533629146372300155577610692198400 5995243693560580557314286153629696 -493549876024000426727165026801549312 3356721751595977208456366669168640 2726599742601275415267754404478976 -133502668404764146273689932671221760 4769113958605968395726444484886528 3389391680843442878071023788359680 -928315590415000740927560776853487616 1492856863387266852373566098243584 4017806206123059696235872010633216 -923726306782858632981592579090939904 4332860357367952989641070658715648 8042692508767272489502967668408320 -898929903653359685313747488245547008 9558534969232137260302874515079168 4758808105166965289339812900241408 -510533254200464229818403821537198080 5090254732947145402810296495505408 3416758779783845828230870640623616 -770902075158312249096926519946641408 3206050746786535465252906468376576 2981982608353891811342982590758912 -20254467828135427827734463643648000 9704461176296111099521996666437632 5995675024982135610869655976017920 -575707761476980447434872846328791040 1800919804454246956300718659600384 241711725734488725357222755827712 -14615752755145255077961911748263936 2104766026559071965737883059355648 8386510788265629923904725868085248 -274424073712583021291118455345381376 2187939353642077056240550737346560 4693729869129775490344869779472384 -387040398960524357042748940986875904 8160865638907406004506132056375296 2759028996894306686052902853672960 -258381344731289831310308962975350784 1614933146450533763340089232982016 3582630254956001762934680820121600 -390673219800317997830922448779870208 520011861332724499316437046788096 215738532260499729589425210916864 -561604290605228327059237415625424896 9109970481739528084470991343845376 9661097028570305064148949130018816 -863693075735939387242499161708298240 7184118857761854945001956978982912 2514731846059054508515208743354368 -491474727793250464410406107337457664 5180208341668151888776808538046464 949747960857592276446852778295296 -243346878075904400320900121992626176 3169874636620778978362762941431808 7911831569814666163327731937312768 -221171733466090845209170413944307712 6020679019087360895360247193927680 5417495812470219587264302565818368 -793220766491007214770480703007096832 454253374010607847228149684240384 5947898512954443379342614705733632 -340315250030731645822348387527163904 8493668894650198912031092966948864 5375063812287617503556669446029312 -896923224874644982134472404291813376 3960122194358347255208873184722944 2592126537561203758136032793460736 -908969097520421452151529736790605824 3735890878641246430238359743889408 6331160218352970511830001907662848 -842285362118745360705453473100988416 2349031642576137517556527444000768 8314230636136442743443565167247360 -938538390456596659490093972561330176 6904723515555798358612891981053952 3449841702631284303264327919468544 -381768087300628337841957956766138368 5588056161501111350022773864923136 4943437379946849624829583322775552 -437422005315129876798543121187078144 4537364147577999145204105883942912 7731734022937342998882720552058880 -239003483969554442830937394237145088 7927422228801124471154269248028672 8112028284189228039318353588781056 -890716106612924458149462297966280704 57598838763116273858171814019072 7067543762828895315665217044611072 -355490203406362711105138426386579456 4482030359922235413951684217405440 1511764723113544649172981831958528 -646320387525850433425237989474172928 5961161516368504288486612845723648 3201465762986787580192065562083328 -824488000844967777655243115000233984 8436795388834718115568497962516480 8143221257956201753632454874234880 -180594277793001688780166004626948096 1254675782814698056795344848551936 4706591752707134942907840983990272 -702145996806528630741248464618782720 6686681016786637158255595825922048 4377657553089931549600900469227520 -768661598113293602463601447049101312 4991988046104021657599387992326144 6982280166963271882706608008986624 -910333403962583738442342736152494080 56060517562603602414756341743616 9353657048622430982096155792375808 -367097409394059265937843066077446144 8430811785368775986847192713265152 8342295895953952075934579604586496 -978428103272182724887451478366617600 3587707582842009894634340766187520 3542896083411093500628290349563904 -306737611564051145904545779974930432 7324683140687217335233968496181248 3474733937950982786011814485295104 -441259637356672487384405320744828928 5685612531321997209571014154911744 4951260289174218284706492976201728 -265549678805601704227747534601191424 9534121372941992731104249250840576 7909595820027171010103818378543104 -771626278735829151499877511109541888 6661282881223934335549218322644992 9813729932442700690003237319737344 -550142403643690822356580049201659904 5534546439452350048811490157264896 3285670967630470492661813862203392 -440220357875994832733886841798787072 737420374125271779694189574356992 4535499402739314406697120078757888 -335039309279114163016264229553438720 3342628485929020347730720158908416 3676179529591774709316632262475776 -756711724978313419443694546681069568 1857343126705678873156810725916672 2001488995910908134454585406259200 -271251022117285175511532178883215360 3827237893925806747505460185661440 7018365957040643807499960836947968 -111209606936813536219286459130052608 8265288806520899393735890504253440 3713659002509731725468108505219072 -165069183309692188649438916160520192 3219407740584874300609801922543616 3689436021245156505459077500895232 -847284908393795230385513331970539520 9677953076007756669096736749256704 4013795706157650791406443905941504 -136014293267617211091679871636602880 4658170968240273886441317173559296 4240033695642264255143619191635968 -340950318628132824409973310565122048 6339173547607782448432197874483200 6448536568967464817905833682665472 -315109208097949320721217345340571648 7472157580836066949791802820919296 2864997135607509705527413849456640 -960491672408520570846476269835517952 88573095094334478777853660889088 7975504190940179053481476143185920 -137369923770520110072373750406316032 9180851909796539025774972533473280 9012926803251774267462587619737600 -276526172177914247241071106797338624 4151257747943336606473536191594496 6251508860240134696129844175962112 -239775192893847662099172286074454016 6456528279945064656992919779016704 3871994508717266476353506391359488 -314859531374289537420585180854222848 5747902865834223925898332547842048 3395945514457664976973577989390336 -500221508575372822256953955167764480 8112080471763225689178645557411840 345984334326573532230787297968128 -98690561697239004148853869685768192 5823555550042555124825583542861824 3917269918291814176946061198753792 -551936356992306533942559563625529344 2504582378814384329372734914035712 956090347110365913532031469355008 -946236676174971228610098371177218048 5937194445556173928341897136308224 9252681836920120504716216521195520 -505961496198223674245431628734136320 2161185400633380930249898323869696 4705844601828551151493360211984384 -595682783540467143916772634937786368 7136511161298246262733022127194112 6552785996556915303403092866760704 -603869749812361230819529693241278464 9587379952389491498455271632535552 8607460857513379283408834982313984 -849831945498736984912794681398525952 1392856183824408785466397107945472 7690863127408605763518703318597632 -596699961187326604130320763735506944 8481556496804327526763874444378112 2290870050947822033628939365122048 -783188614436148072047117013480374272 7151888696634605917627802305167360 246015653148033205792996985929728 -393381387378461064521602640667213824 987084338222371589017372280750080 4941250523463869325578739245907968 -135505277968478287382448986082246656 3441819970410342106666042455490560 2842532588334207561016637334224896 -75372710911008758474930753544126464 5761789075964308117807039512576000 4168867872435600311766669221429248 -997774592331686872218318530991357952 821650515890940454904786292047872 4537531523293108728426900911816704 -636256739087641351825134615491772416 4999334502254783051724840840986624 8427764135725260881820478024450048 -246475504882442284486909042343542784 5573655143154203360487448074256384 3884211226455725410531845859180544 -332790941305549904763187974698434560 3688940944756707874893444073652224 1441100227141039625563374987771904 -662057882176813239803741524440645632 3175667268953421917688959862833152 2750461534104440282956150895280128 -721478156730047757059868572078047232 6335742205683148471328345939771392 7372156614234736817693503516573696 -498964077734464903700154121000583168 1967902463179399767363879889272832 8482573712944138153387280614555648 -133622971280580993853632866538225664 696897354745700302353662618894336 4736054955156117271243335074316288 -307236039994819877833286468692344832 3171208513414357309159814763380736 5275211906550906383021547941003264 -633747952480844946165082282530963456 230732105143536453432265624518656 9821670776027220307835137485176832 -703966568227260542448585838394605568 8263714594014352032891827124174848 7067062217921905673688662488907776 -900734740457648012942054596666195968 9794107004709465175347483297972224 3627590982621955002107843210903552 -567163553859850835821437228777734144 690540141305839532145746244534272 9536946571889433230590782698684416 -688102767240981781995272654209155072 169865562254962200066545189650432 7371878446859703004806044304015360 -957192870537086266927274600689565696 2725096672613006656425909926494208 1023028759634007950346132024983552 -470558852262867658934112370150080512 2548578145379581772783722472407040 6172036443044330748717952212664320 -107841165679502490328961635116384256 1463717821845224379294466774663168 6686696812547541685467742317051904 -745735444302425816570541247108743168 9683276443903203000376460365004800 4277180161039698315386252007833600 -87126138556418639431494385195286528 3232395749621131344765555874725888 3853564786065272206105052037775360 -239298187706733821981711540076675072 6392198593193875505303978894163968 9630269931136813612419538527191040 -630311548455478198782617727908446208 1982195483628805097642497442578432 3297973699568262251756165684789248 -224408326217118040041519372910460928 530827351327468029056007402422272 8721552644417946498732582902956032 -485936624475330505213756874124427264 4877953475639401512557572301783040 2672905120584857085376533060648960 -995908957247205685720340813272055808 8589242654344502278445722266238976 7465332618138052312030886745866240 -927380374820112199529279298922872832 3945985208496169485396757350187008 4774155439679909846550836276101120 -725547095049276167906763438922137600 4935707564651613326963077896208384 3123637931740740009240639609765888 -288210608362591282202279591530201088 1874402935410518909882434645393408 5685054065874385458661383494172672 -300432075263635881501853327902638080 8131430462090328855965319445872640 3971549953751329634461971321454592 -225105950827820240477833716115177472 9870803888389824628546062243594240 5800425503497327847930317009584128 -782946815755804489717016276458536960 1352056025555638821452428739608576 3176805270072416628032357537939456 -6857869050502186153283880677801984 4750393361327955202432217489866752 7553658250239240598507001716146176 -412770625699555184985218152268824576 4871441435678219807117848684265472 2474617012435130645995854088896512 -719197597688120456370852329213132800 3848037475718162915939985695703040 3832287607543047330425415711850496 -647332252723408011238288126742888448 5690800901121458166062338493382656 1094484155756234354259755739906048 -490412906210799547761997779084247040 9650637776249301379033891115892736 7853059616859826983901011363495936 -987909673425124731398571005472407552 2713881703733482996993750378479616 194900269900314174660358619267072 -327578068610968504134095385388908544 8263419870960585718678436821598208 5485568523532651075313637823348736 -475660672790252106483849071322726400 8335488090639318809977715198787584 3359637852417773911258955155243008 -918734639931128434076957875996983296 6874494618647087188353710334935040 8502472637517508897278069133279232 -433421327426327590626817102122582016 7910830669861495059890081217118208 2251330573035093287356855297769472 -425986600094687374253175418516406272 163218485808654510554158643281920 2530406698712852943291049951887360 -285701038430020890090682447185313792 2009448209601329533520079612805120 3410739111536626227222064496902144 -31380631458740569913585906055380992 8739657848451073858270197857648640 6926033301876013140707780056842240 -96576357402249983927277307526381568 3781628663261702441246139504132096 7835660489976733175866839961436160 -724270652897529324075894509980876800 3243649088902935125252073863512064 4710814154442882784810461390962688 -118280415173826873662511581564502016 5103902165433073507937966863941632 5558054965176055208963265689288704 -66843334203700603599474552320557056 213647339398033172505357914734592 5712661227303135437882032352395264 -310443112312044890890910835740246016 7747134839025714878202071461396480 2965054075246152499310917597528064 -832870075981485826758576641528561664 7471049077482265730228651663818752 8475700213049337965398056822112256 -755442681336365915869715799209934848 9935110945244229859122575883370496 7305646326402891872495840377438208 -427893291728087913832337159342784512 3701307865408845763424042512023552 449537285036590077143899462172672 -674804253729706218230244803275128832 8695963978316987203525002315956224 8973518303136235393171969928069120 -681927894028031244135919733132230656 1685193647389017946951170515795968 5186238406888742040479667654230016 -559558307635364044038572932109172736 8549733426405769792073674818322432 8584454656829552496573789975347200 -620077938418929243269777903987982336 9819120127810131697371617517633536 2748281837184955258643916225773568 -592968224675013192737593604282777600 4692725688720974537528678851543040 7885649044258720295190258004262912 -749988061791712284586225851705589760 6032079924129404852868930116517888 7969051984653710578080940979912704 -377878003980890746226425786869481472 2952920594810869907524403796639744 527164782766632056598780264316928 -324785122194986105483177241207635968 9385101642370648229081783023435776 3000135282708823993780620289376256 -123544688839061582114746524894232576 577676267297926604025454884028416 7803852853650795939570230746939392 -710158119028837699437026082631450624 3045435833560718184321335492083712 5324996810076314519348156481667072 -985512335253619129869561422269120512 6970467537903383625801198523645952 3469359874533504921576972482510848 -494506165530161679099719685932843008 7521622260870220836837011918684160 480011830510280054033340489007104 -182971402064931237751583732062486528 9883008103032662062077161777397760 4190307451458189296509341252190208 -102127908999724958441352291376168960 343057831874795160670277346525184 7279141079788977521063897702858752 -861935015237996265769952190855643136 825280534961604971979430894239744 5526600639123546355261402037354496 -219163986889397554712190923416010752 1630028359026961478577925224660992 7230286598367541406611289835307008 -680835319367894490454873408591101952 9154637396617713520141938798362624 7660338104382100088917959299301376 -351185214839359998107097326237515776 4206713183297898656959399324549120 4087874796430347434930016752762880 -149537129364794281785156119616815104 7131033485703016672830981587075072 8612544540551084311492938222796800 -363625778367629900194577705445883904 4507581631903758195994626199912448 3592701110109337205772005108875264 -33909777651224561090552442870824960 2336618980093837147910150075449344 8348864278874028693312951709335552 -605866380916903813072968840825012224 3023553796905491926225650695798784 2345646960456689737273624303239168 -932489840443943519232834770481184768 7968376482905289167515862700130304 1110938469286697075305117678305280 -132073643058203982900455144691859456 1762701661850333241943881202794496 1716861626674600044217798869647360 -583363353599112126838806510938619904 2028322345504058416663440322985984 9885979113069205146454765927923712 -159463226099338746452574037509931008 583989373754720351988787275890688 3743668316210657856924594611421184 -994575862716188885014060492851773440 6232649791016583474291199499567104 1162348498809897923462090318675968 -251368176166109908791980470030041088 5357340696368627628449776241999872 7597692723395772255070886301794304 -408002841775643160425511533173276672 4064560784758751356482999403151360 78299843348497185207484214673408 -864844629452862909107972667690975232 7268616657814175070229231843672064 437388655039019278702385708400640 -3065534229450443919605235099631616 4577215745419963367487036832350208 7140588482630816137361685156462592 -879621678587102272284401350916177920 7416851316856935377262777347342336 1843684980976005660338414252195840 -449657445424694349774690059087249408 799816233543580672907424483508224 758355750716382028906455625629696 -40880016463672280620177024708771840 261801392710504756254282350592000 3646057572862825930336400945709056 -159415208403891437206684137299116032 5963690114870579696813149370974208 490995609538542882333245726261248 -808590062430729477818752940059394048 5283251143105717642896615166443520 1808229419039635798528483693428736 -573704290986761482817639440176906240 9679133147056824185882004630274048 5761130237353020839429474416066560 -793138420141363911821882802218991616 8838571755052357497609815171530752 6416874221856682798473915161116672 -280007751053047729282071864553766912 6115104440601322121008805568315392 8745314159454397817602536359591936 -408310716990323513619040914978635776 6138672007953582130640762366328832 3794894297724378421430810023297024 -215231362864483598352195696755474432 2949147395699716867793044339949568 5614375284663407458211641232982016 -626387230482061035933168256279379968 9373387486111747352063758133362688 3663117320207434798193516367314944 -685715853996625559624345749836267520 2044774279687648763230158051082240 4140902093986235159081508256350208 -999611213971281956935029971438534656 5566349251067695709590009570918400 695452408410964694899462605111296 -298646726543695588594729860408016896 1706067360460197149726041152946176 2816032450416942979536570883768320 -806071074488562636093530230157737984 4277708950590257360317354373808128 1228205244016201287787983455387648 -257014135317569588581057086711922688 7336783374678933165097196500025344 791901401665047129646317248184320 -560843808034167048702229695531319296 3279899136953592130335460472913920 5350966568089893344141644260179968 -363711035358981774513335784783740928 5127289491762045964901191457439744 6275978533973578494196407479566336 -902078275865987286774467901291233280 4491870717521092989154490318848000 9366183995084673092369300938817536 -563833721643480924606712652350095360 3676238580377568288765083683651584 9186974249275396689451111826849792 -786920658575794525386162821562105856 405499121509504609275961342427136 6328608676736150207921332743569408 -158872080677120595540799365352259584 9402671614161793516318869554200576 5538256360115154316896273757634560 -484896376267593623016590940181626880 9997634305557761523343162569916416 8574896271987722128263716408393728 -973505451501509136218175750342180864 1645697399925889112959132228386816 3578893880543955322526111463636992 -968107106168339854018616687453011968 9004983172009656785512153164546048 3306887337643353784769074465603584 -411369157562219059998002072879366144 904591508021209603692081914576896 1380734451223532495601870007435264 -859080557916758812729824744514256896 3475834242494014472786188122980352 3731228982009902794159941836865536 -550033729358827317994557631467880448 1423043069110865600316377762103296 5298985916973950538780233013657600 -603497997909606923477243649213857792 1660991463123594528553451678334976 7808220997406388551349538102706176 -995116148961699863968427668272054272 9780946391593395699351366561431552 6351531190364521511345385897984000 -391494707218110077494991423224676352 2374698389737244298153102799798272 9135870765814452716921895042154496 -931493247354553997482088636182691840 779206615921563780968092836823040 3469729224716540990839186176081920 -677065574804071930339960951175905280 5046759978949931515031542556524544 2337831680463772722613346482782208 -695206498651732642308142825578954752 247281483642278565441973996486656 9674140594624126381199032162713600 -258062524875574681953090484127662080 2645405485778452472890749477715968 3249498171652872877996244455129088 -587962521744461132349456995655352320 8337543516520417378392087430430720 9841123911913530971186074465861632 -628605937711050139823804440266145792 533354942866584173000975804530688 574082222416405610333883707949056 -942487138000833663249294054941261824 6582974897373486813458823800422400 3201477679639826105383390550163456 -561488909590894275341491419058536448 9880172631436516001259669799567360 3498391254367097098115645244964864 -74375785659154366903161520560013312 9392811871785053653674578877087744 1765716689882008088120047228157952 -207244344053273960826532460566151168 7011630396455994051355931721072640 1451224557764975801915843635314688 -884673517424329716839488463445164032 6373424479003707350654579130761216 6156545202461584817815315491586048 -848066353995048245303524436400406528 381495370397396040720852449230848 9832874830560049985513969778950144 -593852022434267222593121616639557632 3522362698533538394054711729717248 1138484819153693761923868061073408 -389861294393294217569756684558008320 6257678160376501262483735642636288 6830223163803102138328110004699136 -897084233121799452677347074631532544 8083286626171155190824281604882432 1977225467448341665027923950698496 -654244905379233715011959617103069184 5618796647531247349168166475399168 2566372053813945517128622926725120 -523724309366037984293299881550807040 9535057135525680566694050380382208 8356381036536012588347749079973888 -350658212782047556046758270197563392 3904576629256908999785601354956800 5616865491240324593981142541008896 -826077085641547886595706043662073856 3510871877213207391896756335673344 7324660323501337198337246229430272 -812499180986566373530192611173728256 550539123963387437275117990707200 6685482452755220431073181243015168 -58955360335753764887757885670424576 2696243829886347101345727794642944 8131890041769614097268015611510784 -388230378916851855946544721468325888 2404503338861933646261692248621056 9450158533355247355087073522483200 -454954743019525711659706056471216128 3634015289049397964972571601403904 4146304775583026037977872949313536 -378179367527412184722414734520877056 2367447535846764252346819589177344 2398292592023017260221461807759360 -683472326304061264191960723058851840 7582565156327296811071766507028480 9865548112384817190278894750531584 -956280554046503525041194003299565568 5969816374898858743271643183841280 6893318634708930455659162277773312 -756800921143791286486893970432458752 1096950949547447918326092769787904 3177937698928630633817535131156480 -286662956132579988718145163141054464 2246714040603305253607530083385344 7830113939095083240421487422734336 -486597780390932089040324945057415168 6484293057156933060771038023909376 5567357909236596511226294083518464 -207552596360671830656630260676689920 5857203454598910130119587022241792 4820388910202486834214107630010368 -810384463572774644547259580987473920 7646809022273075942222173233479680 1692917907287740069295105878523904 -718819119270647218685675823863693312 5557483488572724077124183543250944 2223971616045852926314759346716672 -642931986320825475966691054379335680 240831942292940860621749623980032 3162399178365588813635009971748864 -524228289627801004768287287163224064 4416597399786147084178723558129664 50104064799301285422547087654912 -820757465236450800416755977522511872 953654440334524542629944569626624 6084406515695093450085982365810688 -499660205159003901071533790466146304 8421856551691183387132352882802688 6200201273217920458209564722987008 -819582220344228638926950799731851264 1304411086924958455561415097843712 6822563729660102366915010920185856 -834781523090200735285201679717236736 6801842449949518346039056809328640 9611316014914198546829986660089856 -346147739798471587553860764303360000 172984985353308386271849766453248 7176248585671080210782845157769216 -553121677014099777383600714504208384 607981779238320943207864070045696 4663505115396311287281439819694080 -828954794945196080516954065733681152 6077587886625899863049842022416384 1628969958647782804581546637393920 -499662437980680959983730324915879936 920309538921614358926225953521664 6820032280535998444509491829407744 -604932273445039491184698006628728832 22173595870000757178639270805504 2734639927811226119397433818480640 -514271907233989186983872605720674304 5917426661493801285182115471687680 9923594167473316065632460199690240 -289799771369774387452184942979579904 7931963504771291445123799754735616 5398714762790595843524718523056128 -717695137942989315707705674159882240 7920018141794864504974563218554880 6234505835089227964781131712167936 -842603871587120122678196225087373312 3961512394192142692224964950491136 9450982790459347972514352581312512 -695517584770239630790828404600995840 1059530347835212317911262817157120 9422840404497644008290931313737728 -863496991854108978581471370311368704 3568694476090883544402244826824704 930162636055771245122411055546368 -224072430514806422511238625349337088 9300783862319989841432159126028288 6270996742331004596024739639590912 -567448460954452815960516453774393344 8612511444611673177593578858217472 3923906454969622369915140615176192 -366254830895077136613401137034297344 9973736912839446659209095221870592 6625352209362968907143274796417024 -437120992946190168420806460170043392 8233137688922785054367254335979520 8669102234618562151551169078493184 -194187772148446549682710145981743104 5158571070939613693115017300279296 8177979805721139104210334991253504 -217181791661909673025871794870943744 5684893215733806782027319040016384 7214537658928886306710218889756672 -121165859899622907016651188455079936 1089408504158876846020041644179456 8792802159336680718521689152946176 -825243731775790049870880409684803584 8997185792451681146582180835622912 5928877055440180072705796067033088 -231896292148062365191635181766705152 4069324216677497971650595553017856 1412953667323972965594759709065216 -972036971222868109557820303488319488 6179649363229686311254369115308032 2383474268082258139493374338531328 -818530068428424161476016962235531264 7219483961471322597073696269008896 8742296991567940981014516398555136 -865705686358633019531912930668838912 5165897764681884768090794728882176 7159734977206121039064086310027264 -41675169206484978857098881068433408 8574620075648835200215011326689280 726507941770649289410131747930112 -250045669418271446511239300045078528 2316707099620151891595611546320896 4651235708128582258632275399802880 -461300617258587252590913443262889984 1874122668018058718022338583986176 8351882223544576286055516315058176 -982908970406398684692907285358313472 5355547035740401023299707062976512 2453055584610794179726763291049984 -797897491475786445855858242812379136 3933111069024305562399211742298112 8229983444445795480212003480403968 -247646581183808628976325534393827328 8121702988459795243253939121946624 3507732347808293282802703146156032 -903494206870581731747615188015120384 2241676472369756233576608341950464 199580232732820024968070723272704 -645872371858363127923944357525192704 6300269004326804616436072333705216 5962451920167979893331365480890368 -20674810350497868586238273510178816 2796698834584300957502459328069632 617212883827187760467217997627392 -374369196079246090412481214488248320 7975540068432360309984682015981568 6351640735569398038116730708951040 -817534309420012440099929140876017664 9818233382855626587421741829586944 9284454450764464938568323023503360 -224665109773417805916583734317940736 7282976700733690532600061622222848 6171258211756449077457981597024256 -985656833068447050791856583038992384 7017242080050516496873235547160576 3336137857037276718302202846773248 -159380484861605209831135593088679936 3527864293526357063889357048381440 4859525311056217303271331392913408 -257555746843060210087453370439696384 7081286290963219549112992702398464 8336841269327669819614690170372096 -297137238786399362664689280718209024 4364393237203976687463533878706176 6942821003610019855436391701807104 -185731262595823326275281808877682688 6455643149918977128137036457312256 5528914100049607896542370928263168 -638809116402219992511082286463057920 5936938568836458667784368056958976 553475042449080696827370092363776 -140228533122567979318374106006552576 6277889980059001927982113578024960 5332572629285531069582743661707264 -156183670010293020968460028955590656 3034223538775564169552944965877760 9523772264478101725402817342996480 -108442099464275210727964823909302272 9511038789009548530879524784570368 9466366782300980718983479579115520 -376534219675509086502737667210346496 5843368196349210349243172613259264 5596867301819806360261705328492544 -403833660979234864503775407946858496 1261815123516567264712180325416960 2090043281907503669773517400834048 -655752456292283313059824841458188288 5726972490481360806970044096446464 248090207448658121323933012590592 -398758302872892488411214778717962240 9430312545512261430036766272782336 3443485206063496789431911425507328 -118939714140724707388890215748730880 5721739071148517594672103509983232 9139241372955616565547414828613632 -192500223917723462871385708452380672 7202110761806907070953509275828224 127311565974857121913951032967168 -682800063806203942452087521110130688 1329306390835898261412750030798848 4252098598591038218790041999638528 -95713904676047849573586815101698048 9750703263097417804356939650433024 1609356460762314403850276665556992 -807979593015519696822215963393916928 3304738710371724105786477430964224 338016461311666185045861946359808 -498989336331443085034373294390771712 3040730555975619584399697676075008 1744704185542503005507494189465600 -959736087773681857103779670274342912 3872215349141539446722364300066816 4937763945292675045921483973984256 -58239459439853966837241952780419072 4790061614218660315622337266319360 6589187099479427575522354626822144 -622176242626114454482871735581409280 3560437561347589609845444025778176 6801301149594312595466720011878400 -614410450823008203515120323179577344 4782080556572787363870992131686400 5446021623593244705328825488113664 -446895592223949287971806494259675136 463715017595507696710772701790208 5434598827049368955161832356577280 -700805961524104010281572409404293120 8892097189978910258667170123743232 7474990465877564885244490113089536 -221460444478865268541677107285065728 9787586787460390935700154330644480 3625743080500474253657166506360832 -900210168738396192346782510815903744 1026023041265324529180036751687680 5039473355025669825971002504380416 -87650098246208206877007670434332672 963187739154414154188687671296000 6605946301253961405941611759665152 -568672724634723781655311394325659648 2259877011543368087888485798641664 2002759615779014403955857389780992 -198347894697798795452122878984585216 4923209492727039414871638822354944 7812548237856262051118334001283072 -852571060606005583402712017336795136 8688868789092152756162152932311040 4003138505772342711652083302400000 -648951781590337408566688527333457920 4354949797958754862382957660733440 9268259206869626672851194491174912 -687742874420978696408278408781365248 5171808417307203874113144389369856 250769827090059665753919719473152 -30087598369252093310778483253706752 4095458114444523475964205845184512 943659019774668942425132537741312 -746445153577533589551537416029863936 9909856809395874212156950022455296 9487324093439678919744221316382720 -505757018234007453286121276553822208 5182646354566247091935843916447744 8877972444749172217188927666126848 -647362167724781275535889940755775488 3696222123795267719516202377150464 5234820168873261210161446555484160 -99199711177263773615812090651475968 7184114281700595654053065276784640 813652279338810718035286152970240 -97439608329331605607740818308726784 5000998598911287627233706406576128 4498228314696387370857464181293056 -374791488026148716048738596409049088 2501100930862715665327023428993024 8413706190339806235099546018381824 -55747468347460778682721237462941696 424490422694320916826395479375872 9026723379485430992754997213528064 -382828031844190931096289082808991744 3567875151155772098129371538128896 1507302614997179370184697335250944 -192042693319855939999423377780506624 2802031443590203797256967859208192 590314099064642637122480560406528 -287380915793837840727890836313866240 700021591793197871433011020431360 4641154494391019504487344174530560 -147157019160820381295179709198368768 5092080258477785272493642356883456 8376860674166558485394249446588416 -465125843513289604997066237713317888 4525029031916256589082175136071680 2754227140766086300456513232175104 -806077748707814614899711432296759296 7319551734021762712522489199591424 8349133625814970332439170403794944 -882793165680987552707471085926350848 846359638042444719401881311379456 528610989370268601685358082523136 -147364132184435303281052898442608640 3686317615871206677802843392442368 6734706298173544408375180476284928 -816833217193613970372979187859324928 5651528656318392598126282447781888 4424748017495879996392466108383232 -805001804555916545889470509091913728 8232878782000969692479689863462912 3658894634485627608935604930215936 -246800163496427921109827797565571072 3850972652756492265951003970371584 9395401022438112579549546225336320 -292092496046717713113946954838048768 182023431758789053113384568881152 5121084390911780585591720065892352 -789747174390135352992755498587521024 897875106536203832740300923600896 4508741833085934339229388871041024 -262999295540879912454248701563502592 6306117121555340719345622994386944 3528539144419549594681539538452480 -337486779576771731551725261772816384 2098813016965207123391404423774208 9302888551427183784690787972808704 -945101787466380773489819990062268416 7949921051003829136147913587556352 8153285282026071096866089996386304 -988267815716974742864238156162531328 9260348908006595973418437329289216 2898045929373088800943774522933248 -530948833006408095762702699298029568 8002409843571133602378844777480192 2418192970259212899043610934116352 -155427043187675555927327229742153728 371411378159475881807913999663104 2723076933882580410894609262051328 -560202837647933948594202647310893056 8550590642914967412076118573842432 9921758007081414742280210869125120 -230003531087740954847977147256012800 837272190874048144186447237218304 862328877560956240983702691119104 -534775742763367204994638428084633600 2321246981683527676022983227342848 9955313523816274592606921206792192 -610218075249799387742537104821846016 7238166713273418637479545634029568 4501988026720051249979373977075712 -932078131225399624497974199019634688 6974240307180935906693752641552384 7367384285103612126452527080144896 -996287732556917667101284114720882688 6090884994546531011854677617672192 5261490279821720270137441894006784 -628045557481615723127321861203951616 552847783149947494247880680538112 6046916522927313842390882062434304 -79989444706369247082880550710542336 739813102654507118368349795385344 413826957749449889592019049775104 -366894176044148240941778024804646912 88105563805395726092728975491072 1405452682451801633064780243664896 -746215091144021195086023296322371584 9778594781286682734410881984102400 5259896674828264263936394833952768 -240424059568381876509908559848275968 9725374081047631872176528054812672 5161097079834627681780157552525312 -280922766853334426892352920519442432 7323608565312327485916441250627584 2928681123884407859828738475687936 -960346979372121386350784082488590336 8898466241845312576738193349541888 6364673450240955446913182459756544 -728340431587882090128464904395423744 8731446198157960253096406760292352 8270179334076560043332053759950848 -566117391138311994115446265123700736 2095836446875535358720441933889536 2661164971090431676344474684882944 -818451380920713655924561975919509504 2366217673436836836294049361035264 6630649795887278367992528311943168 -139024884054914199483790678003023872 2285962167958246450075347940540416 3473180023540728364695498027696128 -281516165797286387709468847728754688 195383976184963958551443887095808 8146483451180112248367381846425600 -109686739755474776430253680434872320 9340366830093086401540311639654400 5476005051517049088554364808724480 -59056547470056566485199697655889920 7116123443266452675350068134412288 966343326783414418693065833185280 -295737119228847696233727627054022656 4993399463613330636866950956843008 6702764224014715863467511850729472 -307272933472898178577372257361854464 3160229098582966830801178222133248 1521837751854190817037817816809472 -848682111789623486996048060943958016 4260386033480534814093488171253760 6063583524169447580705636468391936 -577728897442678927447622214739820544 6713131713345945996771619277635584 1696392465848121012170321314185216 -428959021659385951660747214018314240 1035838220801892720831304654913536 9330309847366873932475374657077248 -624629903934691962622315945177120768 7365468187782840962885096226947072 9587566545512064959054864757817344 -711743315871691155650190753952432128 4191179313970201107794085099339776 528409710251538013152296937979904 -557598786700659401242791420316614656 6753295024254637189164296505917440 3816007841500840627115191496081408 -568559823028714025598785341771218944 3994187192644166306572827260616704 1892085361336387689002517766602752 -460441270540341586359263451877998592 621311588601491835702355836272640 6194886725756567453612586232184832 -58114535734804361949265600704413696 3213781954384365489182264004706304 7524919868020183959311810119598080 -322579593503776652675433597918773248 249759374412670560463718468026368 2498541652553044391183149552369664 -541927877097628995302229657717309440 4836470109609476337444644024483840 8546839381403812880001252949229568 -176241375961226492096761852021702656 2319082672214221112822252666093568 5992825952735276781673967496724480 -284928045786121013597969180465823744 4352767288806382833995929551372288 3493633118434095892223468037472256 -498950522569163520309139779448995840 3171815425466617490859188004323328 2420632538173705157098644321599488 -881144287676567891373572841285877760 6307049098675712390189007041986560 4573106757235516096321482834051072 -33844017024243546405758390239232000 9203921921564103910338073311838208 5935875970026627005165031701610496 -316617393890653607159720277868281856 3071141575955830147893125663686656 1121016046460899811635618476195840 -714935714005236894895441433220612096 6487213757011079578077966039515136 1620637948552475404981047222337536 -907995950704622882707242033763844096 2907323049016737506231731567460352 2942941705354455795191818718543872 -150465464783765301000051590011289600 239038759044696155002870538698752 3501683829598695200029202383372288 -155845563421688374867395668973977600 9813109599319795291951454281007104 7432446039187940302754830381744128 -476654331167996635159923683420536832 6805604000975642374407145616572416 4764024047793641872613822462689280 -959649671438906275703915270453067776 4015449075756559330328534149234688 8106697673847179706802220656754688 -323684697251868671098601883083735040 8537418351033749160942022739099648 3677971579948195644070111985270784 -759098352065525270156382802322391040 1025037324606971447876954313719808 4534154020655832875880711114981376 -568592986354275615654697363434373120 5967976573286982320873422846951424 8984632274020356733833081755009024 -841493980013754760779748000344834048 6489319846129890146550432279822336 9413473985542418412168009582903296 -731189139866677882376196081074569216 9325655877769892506095304981872640 5495746572171691951775008843366400 -118780403356124643049882912473219072 1412463983518232299414788929224704 5897456328886558025600654513274880 -429313256372520484540186811938373632 7092723517144896739090112205291520 835872608738867850830963764363264 -352352450267387845688426367285198848 5679594046565392932112822198861824 2970003002732378425043388788113408 -774184885396497476670290954941366272 1824097196996615219654418101174272 9778606713357773398972452877369344 -526277087393657998089540167526252544 3013017111327159223501663632359424 9459727811020892977187045263802368 -767746810654668933122260823204429824 9634023707080944007626728889384960 4771060947598723663155528378351616 -866748668696687980973442726962921472 522026109079280888375079656751104 6125996967752323004422127584542720 -886393587971072523145866849797799936 2397575677304577358659087679619072 6514441123737043850291393557692416 -818727563005792150282255411181518848 9060644838570617626384190400364544 6598866118796284093685484052545536 -18476677104144273324896062401413120 4223537691260549419647725094305792 1727091124492687883237225580724224 -587143257023123972599545584561422336 1358374461730707938285936479043584 5224294974770978760948134354878464 -445522264184960962510561792036438016 5020290774146207571096166769623040 6392018081998381551788637938515968 -900768953480879651907559490794291200 575774771486004415446713339215872 2453615400919441970094703831416832 -139908921661056161559097001243574272 8535208123206622400131804310798336 8774195210445446857564292082827264 -684606376936339220364179216736976896 6574274092857610303272207161229312 676068721888017498667781720113152 -128825151814188246786253766950649856 2517102072068583056815123142279168 4882061413815135450121619799801856 -353117663313435797779397985540505600 7587341673127634838723610019889152 7412048757670491655380620531466240 -870536730031013291129612450863775744 7633984901288522304563761322655744 4937948246608098804262901831958528 -60816010223255029024205924466688000 9339274276056758055049072690069504 6255952030278483246168842543562752 -729832692757650841140873061703090176 6314793024285961988341997968031744 1413038203285192043853528457805824 -909105916348579982950224105721298944 9524598748976706140771290825359360 2234160273522652015053746724667392 -928490025936717691316365215865503744 1367813056346661246819942807896064 3590482206091458183979487631245312 -488178107362834174704067708832448512 6938995828789257403889055965380608 4688459747974277143112957877551104 -495201101710930264945058360298831872 5292821998758852284599913502736384 2167760832606137897408706155380736 -115208940530519328765126218793091072 4765122832657003855508667174486016 8791751184036590656691621207212032 -404569854755445243334635350787096576 8581941161791598507846475741921280 5993293872416261633012304883744768 -858994970913077762061149790304993280 8937830568960938106626583943970816 4632014901090182101325031906738176 -220303960620436176629772480923303936 9328301569432382788366058834100224 7962105021201581035177660957851648 -859692113535192131119827429351227392 5546321936855981835483370684940288 95521028724479779969774680801280 -675438833133564697943470190538784768 2763937363368691009932446679433216 5047603223282631464776268320342016 -754394924668139549789520173453017088 3540407580750531296069030615449600 2489843707816434548583033330466816 -185483490511127497466098326651797504 1203812896081689920500349762797568 7782764741242566159782483874283520 -815769098234244531361271746962391040 3470601696642227454056797403348992 8598043968714359879919279011790848 -111582745914781456552594521750241280 8648519721601015735247766674210816 1459832819454575862761878062104576 -955142316883320696801736581992939520 8577174553823207497561568373112832 7570924913378005006447716335616000 -952212047265595506422983959127261184 6725147102815094261064528352509952 2828560245784948684657492926398464 -942744951324878203613884078478065664 4266375850907243185491620709531648 578602713597072734899369752395776 -618331782704121549951493893313789952 5295645529126667221505307521843200 8915411160208950956352654456913920 -704810268809564245513217664547291136 9412239485710995924611820727304192 1425187892448714257346472525692928 -572469715860170527877249614957510656 9365647761984562307448059652472832 3294034923907101284305211607744512 -512170531214006142138264882675449856 6735958136572615589083523634429952 1202363941657812275655959348510720 -480637728793800360989627639064952832 2405353820984624263006176722026496 66423209810946918311032428429312 -315189147119983994573864770560065536 691924914724397261354201071484928 2665193073690872545343996489105408 -688383485654543224266122838327427072 4429392448182494926276786772770816 4900959946495435276699978363305984 -127339749045212950572425903819718656 7549861194694932011107247273803776 528152008343216054260429391659008 -125297889431015638206511866596818944 5183787267667501773457108806664192 9612702016317340995223120657776640 -516315909344162812343839247474622464 5598644580244548921508226890989568 1677619237348658193050571643027456 -205527739132351499605477894930825216 9237317982065175120651373414187008 5941655614174642240038729571893248 -940964287684476236307080903766573056 6327034533298862391473910027649024 4664372544642191348343462382534656 -556864677909878942515733790145380352 4956833570082141652533166286569472 6611670066009209781179243483365376 -740015357896998330775706293285945344 7499939154666969746324285026205696 443756739779819024694968466800640 -663051041700988382894430920344862720 245316402424857590190729662038016 2838932191353400515279017161523200 -819129464846664458435333651527892992 9258284670848644537671847038156800 7721608206366268447339766104457216 -55793985486865112695217435483045888 1635744185986410297748127238586368 6226140230151649992736955384725504 -206841072307105452155508269862879232 4341507623448796963430590056497152 7668598649583926588004878897905664 -232127503655099989709638534298599424 3183953380609586060708451499114496 4298639596115326303631499272912896 -67730969466413339747886913518829568 9595428284207217278860857161285632 3014879369360572262511432347680768 -144450037306432389618183776111689728 7523227547681236030168868147167232 4643211412324083613146137684344832 -19063840106923546265391087212298240 4454812518292786421107580341321728 4894709112972244993321493589917696 -587738182133318606318742868062109696 9984978857342162741295182052851712 8752925714964867276475722620731392 -998547276883058586519053185174208512 9013551815237726370784432330113024 2777265499495623852687643803385856 -436396707788190506763326054622822400 3271398421805015818404652168249344 4613122726613993618349212831842304 -127019859706579387765191743727730688 4526584116003275116822680412618752 5828487011584053497285462097657856 -934804992827022847036110989529448448 5901478116172652997968931682516992 648409709074322592591092759134208 -445216411695280700866418900325105664 2209208015634944317160460753305600 4783159657254156725520319939346432 -585889831756783280860464082631786496 1933133464633899369639016375779328 7723744281391694310537338780909568 -937550591537179239945655841472905216 6934402113543350083497205321170944 3616072583817798768312808896462848 -350754133777304877788674281082716160 8246838431113095828728450817982464 9256385049375908984664625132863488 -116212580952126663568695058732417024 8613818506891665239320918732308480 7341445510802369202855037743661056 -871278894451568017599075849389211648 6513841225400734073282601594912768 1999129891455847589411901826662400 -386133662526466950043947039891390464 8047895231426253018717544733736960 9126141764795224195336991294881792 -740907752004905078912832464331210752 3197447139384693546181426866552832 7654470659235288642237950681153536 -449581626998319319585380075638358016 7881944745009277317419221999681536 3600344275612077117511055720841216 -634179997825011993332475913813622784 2968955068395827540294694623772672 2470395296891339611343350858252288 -639781981666081048123045796686856192 9646510252192738874039143258652672 4521894100095479345978938121781248 -143470782295523919172710511520251904 4467698642038736041640320550567936 5906170038703953784559713384398848 -173321344794297237945612733557768192 618847651537132653732244167327744 5557996314991959031856948332986368 -348120112773182363336425281050116096 3229531583067389249478162955370496 7803143209006664508722382796488704 -9635264871322550654451790290878464 3176891090877826648570891696340992 2472992115167992268899891468566528 -397573714491278070202640587280089088 1731698514115181156483573210939392 8889146918633698795485952015859712 -877339117070619231829052854993158144 911989135469783760461601840300032 8829135357150789664394175576014848 -759607547550870436329033067839619072 2608006322763357959200728871337984 5494166986901115585186395966144512 -790378724921572527992887750973980672 540462492391910778845043756105728 7872737222024743989289361424252928 -691847406403828876054294498449031168 7279615756827561052137146806173696 2977689739530383963628050524930048 -43333426580395440541952355306831872 3762776041230197607283274310221824 9721610583560651828308201177088000 -19025416467267634238149409529397248 9503317788043580700484838218530816 8231745622458828186773637428150272 -434937180860734883472832387367305216 4883434299656570181020311806279680 9808594428700165815094189959938048 -284594619222235177806803141839028224 3833140548843307212414266537672704 1605578389394190125089120430587904 -596847800107115360603060689749147648 4256897593335792743938367577653248 7823621454334619562009792570458112 -793634039296155435983088493774503936 2433449042133458597344533838561280 4922386649448407216245374829199360 -397004584251992693872201703796768768 808619505135735527360378825605120 6858667733234391550481838968406016 -610909114731623278856730785183956992 7404231580367297481593375244156928 9654687122548760761058428140388352 -862173130541275398072274263589519360 147670145401599672442823783743488 2091864005698645081567606654107648 -667828769638529234732756359450722304 8569790540839201937982688744964096 6287449316608383881921886314037248 -145577815347307776059098193996021760 9959583260787725498138140740681728 1069943463829179105281889114521600 -744385658687680568579023935671107584 2883675690583152526632621376012288 8893363235389956141850737879547904 -373504320990070250512630378752114688 4771986053798271317112996958830592 8212967458737963478663642702938112 -780880522270516318434020655047376896 1393515667186098931484427122900992 5452565118541916145721876689190912 -4925722218548364656112994292334592 5050009922384164127925078300033024 868840467769858517173883971305472 -795178440441970615548897867251843072 200502491362752315027960249712640 2306107964580556494583593131048960 -124131612460148504249725045467774976 3389342153549964232208827776237568 8923291434776223121673859146711040 -946536066066756766261687866424819712 5518748353403237052592253327900672 5185213449399466803541396951138304 -40605164103520761793991695614869504 2917359359068463451278826977361920 1898611619070983460899180521717760 -65532586713145238542088162578006016 5979722691145260746917225034678272 5760050501078486763647199541723136 -994462350765656535919390250969858048 2191179531039490192493320754692096 3561943412888629067751887315402752 -239283541893261637393042768903798784 4350357482724464743665696713474048 2809236469714998170818942974558208 -138740444073794568293864023900815360 5003383831687976192944103999143936 3933544647759042796076136835055616 -438552152348444129008181345446264832 6193269991963469528906675137806336 3209684932003536752502810204962816 -124302135332746928069571236719493120 936315504838072173010910860804096 6019872668523028818717209104744448 -64677604417198858253596949215182848 5602195199678345267492137023307776 4158432066632830950583066307854336 -344478959501560505764895858779750400 1137151032952251397643876769464320 1521304857517528044297409800437760 -927203983743968329426044710645923840 4222415476745219353626699148296192 3549933383817872693512130330099712 -657180389915605155929559396253696000 2856874945735580874155059683786752 1988525339158253358675704703614976 -66137664393382289481445594592444416 2728589328054666803087757547667456 9679973534662668456493812350451712 -332944731694306489991972175986294784 8408897082607740506612458498031616 6671729922144397613601808109797376 -36969358551427009593622954434887680 2409103748501004961202740209385472 2035939197000273284812045526499328 -138752526748324253526722207941656576 9313098259209077429155807767822336 9132309129232173245481230775877632 -465471705614226700718398095394603008 7726182200645239099961217434779648 995547643833457374915851089608704 -924932424828678618980309055259541504 350582800557199387779615334334464 5051087607791851545799115384291328 -9723075951462486798425017106300928 6536545898126816779118389908996096 9635013462508554854869444052647936 -571329447996900839743451666355060736 348553486131464616840316311306240 3893382742966797123333489388683264 -950490183875778032704172304363421696 9919262984951146490343146825711616 1508078671093548241251831111483392 -884508110864653783648438357256568832 5352391111922348540194235300708352 1401472906787958422032318700978176 -843942920507371986748308812845809664 1839609699748842791405898321362944 8384351788595922292948848831627264 -830696970535376918142270732580683776 7543286840358591388263548983443456 7943054584743660040872641133805568 -192177196060914918732800891755167744 9324267665838510194723241213296640 303245686728140719577301029748736 -175994640849230489741307600636477440 9044550135209874451121187388915712 1558117165636350253853233549148160 -521854326884498263476640047567994880 3780969411683077186070529114636288 5842852563801915555489549861781504 -249618980843786944551444798720966656 6154788825441982682975472753573888 5565202168499641154607032781766656 -840200741737732300383161614105313280 1763474400706129946489849271812096 784017923420429143761267132989440 -820617766752122422068483814445809664 1660482629375449471840631383916544 5151739077659383562779750687571968 -836709307184795126371023430224969728 888453819807784497615323103494144 4086762005657958758931420137127936 -563889789753623668984021720651268096 910776016027685349749433875562496 1844976302750502098584575234015232 -62537146417840941314739341239517184 8894151836023501894326644606238720 4288370317121902354362162187599872 -336354283176007605452989189953945600 7784605945918471925230380888621056 1993275498906311769114006165389312 -316656069636972018661365806574600192 2272825920939632765425539035955200 8254195887546072954583879327416320 -762680053341926649795951516371124224 7824170910454839118826305637842944 5947394195355539969684453273370624 -665995550899129435620828510980931584 5814294479465749953869603267411968 386678623791183607533374900535296 -169949370290980589519566517494087680 2206889315582744886735851841650688 9467013222222635986200299854364672 -715021004886810992036076354659155968 3129506964188265449840285249961984 9118511684174074543160683439063040 -761201029745164174867271731814334464 633818100277138829335668172259328 6286075457536519990351570665472000 -25910571269614849803986441949151232 6129364228421011906490562693300224 7024152251087852632482474509729792 -571682007632477617331456187320762368 1045065625862966996818334893211648 3994196263331789957764829503553536 -425395019299073781901272304796565504 9103581592290550467181973465989120 5946261261491639072070646502522880 -48909174962080714861603801257738240 8389330001982954047878003154747392 1444709837604598727910296276434944 -99864330568550239640898679856955392 1778781118951825439268858442547200 210426769404329709547320588107776 -459074318608622398864336277347500032 3747130247350753462710980277436416 9739387411389920391391565882327040 -312630733225815556484483273531064320 95553509145392699762033083547648 1511862454467168335691914714021888 -361702838694047025042260937941188608 7450849608943017988840063875678208 8355492303679093199832340787888128 -837152955204779619557557003712724992 1781795446977691972838105771147264 3251390877710817468441683199787008 -779450572822213467033311180411109376 4731252968598405307690667835654144 401913746713908783570347775492096 -587142155334922867312059156533346304 6543551233881807434522870218227712 4389171030486537687992867401760768 -949664392916112297200075734633152512 9503795332570456680599334540017664 2864242198885493781661448547598336 -922777866034997958329189929318350848 1908197483095477601104901829558272 9153037224608171226590628148150272 -909833278839392464264437738537746432 5711023678040419413206843143487488 5996366514437170828050083285565440 -411260480517348099517358134655975424 8900820850069808992215450458783744 5875041488486804384820869927534592 -708916834862380900424708683431149568 3667522322394665337984656949116928 922376812386492772826410964221952 -94728834671869233940668177071472640 5787034342227991005255897341493248 6192325975313606715561642710532096 -192138052430982405007764176244834304 8167812481087281546499900009611264 3736240022768339051464162703048704 -74322024281021010228297836540198912 5117188457308173575882787143024640 3567756717895758531095925809479680 -750414252122499375745707281171349504 3424287180874247976853040357441536 4912172621963608888090894410973184 -493194611093508480340436324962009088 2422451204993175628234321823793152 7534113553914320799994624016908288 -192436776007962260365251611316977664 2812862295011623771695853856620544 7212381176744566103801001267953664 -839220198867205804067836956801761280 7741969691670445101029263274934272 6611324908448382486992834906816512 -895926543144494356130452877648855040 6849154855387244325227028511981568 3515666635138167418417935019933696 -852317871946269052471783841704443904 7176987146294436373495436804096000 1035627981506352181285316303257600 -265706924694956532437304732926607360 4880980781088458115979861051834368 1672024777154361640055111652737024 -574944964038563751050133297044652032 1965888339757507935322767494217728 8087518074019235238119635890995200 -192003682651065156441273045625077760 6528272469146348029840200248066048 1176184412571437341887298820636672 -588673035205659329030588799589023744 1537102992717221049811421840277504 525547473292389583669946270875648 -409349317880838013217821576172404736 3265913034092225551145170672549888 7091731738478143397574266899660800 -902490560158827528518379880381939712 1293068340873177162184666860486656 2025368752261662299802901294350336 -332540379425189356014820674179694592 115955745802923455775496801878016 8446539428905420423053386247569408 -740875694812491821055107444726824960 9192259807031655812932312261197824 7262060888500534878656273353539584 -752789060917201679478273624758026240 5416903617094232334105433706856448 7378822493672957207069540380311552 -133066038576658236260409984407306240 8981869493854063488315513485918208 770166101782973097716807895089152 -150561694786359189833412198965182464 7992213833136918163706026706075648 2578079356018288906296382367727616 -833491881860876991166300855407214592 2577776234655004819245057781530624 3810060272136064277357210940473344 -428012626486717545544192929967374336 2327720003439613674932044201721856 7286955232994897029192786164842496 -399312021142849290641956884975714304 3199557595752790767698069921202176 9271759471627058929627808491634688 -486384736598405978611087758883553280 8137445322493221969339805048242176 3904193366809394345311783268384768 -344689392464883949340551359728975872 6267950289991954878753559900323840 9152564543181027755537658449756160 -772172241188517442930839752661794816 9135110824801775936129796325507072 4905508595341696982783700410302464 -211780291250520174721142962280988672 836009230920509104336061335601152 6704082747090644179538341173133312 -363467208738558714620539746117484544 5595271662825771666339951254962176 6647517608025399921594191132491776 -72904646700790745849030892524142592 6542171449491848558328421220876288 8715257659417722751836804719050752 -705269191087852460563045354255155200 8107562158826482569432360839806976 9187631193628820102998301043851264 -874908244610721927138712081003446272 4838614088698173310324364801998848 9569496620318887315064192807993344 -35521902953534816947107548064907264 5446407016738302332015851203461120 7767642393381551375668147860275200 -848741160616731104644886632129888256 436387678307564650853198471364608 9022039236692735750022516866809856 -942720910191742078589349588059029504 6852841343345669521732048504487936 4776925996532397071012371223281664 -27133323353812614574217995168514048 4798615149325997147058743533371392 8973717898257288928271992080039936 -786036861121476759624331987016220672 2891239993741027954018017632845824 7662274217417303461058657367621632 -737739075567000586742655897051332608 5965720545321872610302123212537856 6024014143233214877692264301199360 -484587103242605284794511392415678464 5212989378845918362665436036726784 2421837518717054561220029124182016 -651736156192798999821061294575845376 6080424772047513766207596762497024 880384228872988785390416828563456 -498433544116086851257101610966319104 5316890081380435604181349998526464 9293548776562710447433290910531584 -472358467248491095727018521061752832 7667431107653985542640394972430336 1563510908579208828836189545955328 -347421798997482451193499591718731776 4499534764510294368659106605039616 3529315241957473846510206331125760 -214608449937135936654491453510123520 5927684553417162741045015896653824 9820374127586861002381858325921792 -612336460860614484313854141764993024 3211869786770253285443953219338240 8643956058278568230298814632689664 -983645612746170087473092233516810240 9384572891209232423537126693404672 3157076599463885839235445046640640 -858978743107756485386413235324846080 4611192584995054828134593252556800 3706496040210185299137077331361792 -266960574772820153732930972835381248 949116389564580676035807809634304 9039213983285160566135524396367872 -59186573222795154358560145866227712 5757006644607311298978639522037760 4777079926601572297926497303265280 -140145059169587821457461792938655744 6186223766716607519853594919567360 8122350512122692290457547506188288 -338565579314903521554937814825566208 4974922193861245641406334090870784 5938224999883519586255399374815232 -553608985367511017029862899186663424 3661629416647719838293599367200768 736448095403826985014653131685888 -22053513259477501329965533529899008 4800787261505000354133975580540928 7509534750995753475633609692938240 -809250372760127394213312966709739520 5532602281162947219124037196185600 6443283841635024067557043682148352 -716614987009741949060195291452407808 5186541282655108866640642639396864 399338324088642350885143717085184 -377477053536900769805657641062498304 4018426172376794985409297986355200 3386121850676055533125470485741568 -277972545872853920501451778433220608 1545002274431768047326672564781056 2317737127416934235560064741015552 -230018227046544867894222833391239168 4939924501582982095169060314546176 3025504816958480042830748968812544 -674291378542112186346742273848377344 2473952853262805647852473231081472 8788070193166861184676502064594944 -492945463583501243628158672047177728 8913603444521116495882553556729856 2090064536367960682089118705909760 -126285326742693275029098962622611456 3105494796296173746837998618542080 5734946087711416930847481051217920 -416173374140873923225052451153379328 8161012243646867892200030483775488 4800870107363716871230432730939392 -939802587992592876338488683488346112 6535564821942369757772308472135680 561441906896829947057133884276736 -327179682076052669662912000366215168 8376430018175521451568034564014080 4553295891623497670201008982065152 -113239874610287405668707227324645376 2729935333365671320659697743167488 3602734994716022331960015775072256 -529331017696882757997726972220801024 6505754016568842087132464821567488 5501779300725211519468793986285568 -821834092888655146398346352219127808 1015057334543050179443435715428352 3758582136401511661236426041720832 -568306651233958938195141235916668928 1151287162199639214692716603506688 8625123657721058983742606078377984 -178584817803580971898245136498294784 2327287812350854797856054488072192 4435023797488543982912017707040768 -163503986289985747859503593547628544 2799542772111009657658745989103616 1350739642334491919332701049454592 -769043734762827552080384280278073344 7414201614052889475074865355554816 6836970618069699319647263977897984 -809879913451793998993742925752434688 1427363998903007708224717301219328 1535078814615838483076849778819072 -23941617755144382262467782615498752 2415624039475948638331479689003008 1768455320471848285106411629707264 -684578138842140189115551123970719744 1821493305091991054748549552013312 5459489871169425179982453327003648 -87297419914723022298088017947000832 4845315836471337379156841990193152 6947296373135635128093760953516032 -260009967275760860587434240032899072 1970530394149664073255411687358464 4097692382941491011773531907162112 -583223128500878916425123032624791552 3727388754323813033743186980241408 7033818303742957291852772447092736 -634575203671507757232477248503676928 8301991693759512659956849249878016 906646998314952779386742307291136 -759529584333707144654334471178289152 4482723545584598051505349389713408 9978572521867135952913932386041856 -763491355984393620402389595518402560 795521369108633773978529543749632 8007643109347408468817019647557632 -144351465301603254434910549078704128 6842419468277840720662373655904256 2532673536618669740202567093190656 -880373863851885094282615231994658816 851651558659426953067836068593664 6729784257322574708101891967942656 -375207957935085701661584623239430144 3757097797283484745148835672621056 5825260103304915847926147484483584 -799277721160880834661360436502331392 4322784230804161853945338881114112 2606136351008183897050450967396352 -525693464231966925248552042693132288 2807419984191864494395900121055232 9567149194628976121620240630022144 -47280433721701426167515982354972672 2612372991333249542158631905001472 1371811306522391116886475077058560 -72556501327908856918645439553601536 7466376215905435154588607937773568 9925462355481439458728278994452480 -934379703442850021270689266991628288 6396227186988150896084199900446720 7758344429036383519757250641002496 -453719778219923724592343762073550848 2349243145192991712570732884000768 2777605261321330464652550448611328 -827641361319518892562603389302603776 8167153731463929312395574906978304 3804243292176431845042672134782976 -133350386242201031306184256110198784 4504249424396778977841640734982144 7596038951590967120945098367434752 -420220507213586914384951765490466816 1053541251937190122392349600382976 7476014952091682253200165550686208 -455382302485477582104288147156238336 2183327604479323776095901548806144 9162807922583478162988871077330944 -889984453000272316250875681096859648 825595577634540791956176061333504 7417168901590550503431014520455168 -193864592315379461196869942254764032 8467538633446532560840784647028736 3154483856741434129452291116236800 -329062320926414805342635108031528960 301159966379079197788603617902592 7421715458128410747305718064349184 -217898725085561849258487500056297472 2414594332450167382404190720491520 6203667979918024171454751158829056 -756784024263656908292921982206345216 3941541588705542370799345100390400 2277020462809695797658105422020608 -251132713412666170266469140101332992 5004253127564019990426660917739520 8676450314854980433199636752105472 -245372994488699440817989933451968512 9202307272370378784082672402563072 7863134713333584321097102094499840 -593646555042934746392857983217303552 7419691966218986140742767786065920 5235805331373347678571500757057536 -496337321059256123554740925250928640 6576214170936200274488870532284416 5247431717313567495871904920633344 -74692473449051569464575396367302656 9985508936393525215664205042024448 2163302721817475003598521367527424 -519494051802442814520958768008658944 6824124666943545346429426507710464 4850418215042557763669858711502848 -332923916035166735100214902104522752 510214536132930896339696974036992 9083699455178977115459535662743552 -488765673838662276873476869137104896 7602893852649211048851138563538944 4352721511639490984251048476016640 -333572958611219356171210905484263424 9676521639731598728194801161732096 9483799376649269986335779532570624 -2894541483362032870387224582029312 8498582148799604308467670262480896 7677674820193073577359416930336768 -613850726943416997923402862510997504 799764095120164617608976559767552 2472217360782078851535540058062848 -534858396740343328528626092987121664 3401708236057777601642987706646528 1163709827158437159556374916497408 -402815714881706900267166601029091328 6912509666100903786963299093970944 9451779857023455787868301687783424 -755578353546070703788750457347768320 3317341080666007991747112977039360 7482894467896713968791335525679104 -779438051099472626916189638462799872 8704818473409948844789330912215040 5545903911337645162424834069626880 -862448180417810105904762535804928000 6527711791722282890977364158709760 3102370634422761446057345600716800 -819307926338068808946654712506089472 3728804652645634579666682813349888 3463202173331588510213081061654528 -710911698573789112603489256175828992 9983124613882835160664982815768576 542051148350110940740846952120320 -351263818151256847676908378754383872 2291960810475661500005509272436736 629284527267293226294556162523136 -463977046006744327833762821866258432 8054478711705623314180451348774912 9851886798314527381410566920732672 -628332756738057577486154335676006400 657018773571518452422809890062336 2712377597550353851059081679208448 -787980863666301930980625495057498112 4996931715993644260521381669634048 1333212683023733447120418345320448 -530019968518461144691191939535470592 9309753375131231711697712715923456 2677053713416983614989416951447552 -406568998083466953892533996888260608 6374052620941134251791789919830016 1425105161757423999644839662583808 -540619658085662162727910433951318016 996708919599637865205824397246464 815400007795364611412749413515264 -123135356283107241867307356293955584 9849136330902347279380856583487488 6495538632118181130926491349024768 -238192674660641650424736310951411712 572003962483162033311802063847424 2329679074851627261216328238759936 -728741188960436173628920957522411520 1784119823698657562082163753484288 2013174779587413546131813358895104 -744735703644707025837644615440662528 2647360810116293710275814772178944 4368044972853015482370659910156288 -154741228589460404988061721156386816 4529710753920522347192221345775616 3153195482285928183934604101550080 -979339094787721682486830523649884160 5462159446892774597095957509177344 9903350352458912287026784875053056 -643068870474357186597238469994479616 1497821087731536425621985473593344 5762085246576073603049735703232512 -483804980431193211818954704669376512 634629594874849900444496554885120 3243338909329731381991291091943424 -607867935407609404852446392190238720 9734602606790876057295447945904128 4200297164669161424078193054187520 -698452030953907406514923750408847360 2374177292385568989550961301127168 1774049152782007346575552112754688 -688723366536301231226536974853603328 4501746166670801181816182886367232 9908317732934145567369145408815104 -868353836992481326492643682966044672 2155597333979924513025327663939584 4417545929532836232669190198132736 -595171462584386720745823642855669760 5592001901727640407026524795961344 9868245448224479602880883785203712 -956986200701693850024293713473175552 7685980316627118854898888535441408 3600940371618805065428909038764032 -786287944400662680637825496383488000 1002830275086628877726070494724096 2124813883015783668209847417962496 -112715888235230390664359563052974080 22604099908669750395760023699456 9419778291483794981843542520889344 -718763534224160396840915548279668736 3685186981523482416823463296630784 354338925168083978957810292490240 -647671271298657540417893445121605632 8367940327884451164244965677072384 7314897405264635805797304655413248 -500786099565908237427376982245507072 4893170345071865988766743763353600 1883091746495073586638971893448704 -979724342050418810477615724170838016 2500888264673922223099555434463232 5105861203112559224297721595691008 -503774049340772087391802279948451840 1764094386878542753152507639234560 1510529616920865127436159459262464 -957694972379957014587945159332200448 6110751714976023122429692342173696 2424424722909256606903629946814464 -783620906527222060665724231061864448 7040388817360575728522847573770240 3740439375535140136245384307539968 -377517185679141078531949431154016256 352879397243177850752875855085568 6268430889296219523693598461657088 -667627838880616191900275537210245120 1347597402050264407280372580089856 2532136321130889335259175099301888 -760489155894019757413720067191865344 9953955437534221245928790401482752 85293127364345979889346339143680 -789002801538359251146034673059102720 6603837742196140190630431565021184 739296461540052498277308573941760 -319083174523990774620426213447958528 5100739255526771325012507650686976 1439650138377125801772017141153792 -137666076233470845303049150821040128 3732351050677689719315196563947520 2896276547302592144385406564040704 -854188934340885313129034400198033408 5923137674504098757507070679842816 8818718398833901353873174412918784 -570813352550389381018622962912198656 9080847102476485554581545458597888 5945802886825846152899736694161408 -126655477943417442136555406820900864 6131971153580149178792682071261184 8969647780982183580100815365341184 -51507802578972119474714097360044032 6826661769765326057020451448684544 2704581679364229176745592910512128 -353480247628316255063174745526632448 3361820777589895481358363234664448 2029790462079992188075165842669568 -696596243732402848345319598347780096 5376141456253749540669173513846784 6348277125277921235680279851433984 -127715365441629353042106563614998528 2320310730958420342331331393355776 1393850753201171556015111380402176 -873080552862248426061721726963679232 87727316409981850973112637587456 5890899755161118879012777606774784 -513532129296309908352916477054025728 3610724198969670359987267024453632 7027678875949978953690726755467264 -6107129446547127996939567234023424 8194670726360862498918446479179776 2927157834026345012284810197991424 -793105842930128862184389744334471168 4240912972471927908686344505786368 8315989549111897739996904812445696 -786641240746821110080098787265609728 3942528722241777453430410343088128 2657215752357734019662036315668480 -199400289990630562089647753440264192 5635390733269489162795324348039168 46503615615501197302338504622080 -119045464593713965637835522628911104 3998635526634571224451660237504512 5551636352283644645723260235808768 -89635225120397306085447401750921216 6419731664785358695636944096854016 753009052918342599216257612906496 -10253630735092975411819469005127680 2379562943976058509685217264926720 5216597758116494215989362826412032 -85904173328134084340725835041341440 8867142331722703218282654097997824 7677729961190884849776852220248064 -284667431016509253058362311379517440 4148386470976680398463813682200576 1619062332981898412856931013099520 -650719574320292619162965220299636736 9734445552875052044698386658492416 450490116015719340348117687992320 -805345648071864881813300747090001920 4009404415131950250994682719895552 1070990976041154147955396285825024 -301809271166166175716044079747825664 941938808889921339753822674747392 9772600136096970069658820361060352 -670131642440567806044210166920904704 5788333902650609128965539109011456 536098040455084134249778871533568 -811684949762341702699767816750366720 7275425052623805182399355086176256 2599428958850569743731035266351104 -232869588485047954916860602372587520 7134191986918476821950730969546752 7068095653551396150691341921157120 -950469780274645960851819789769768960 7445383394143723500360008177025024 7560217049754982044331500206292992 -335145672836633654889415983346221056 5287572665445269026623676674473984 5097313261790880672461459883556864 -242466098453977303140937097145221120 8511932357612642606297555566329856 1879554979413733858516791038312448 -188892196711560988227875589633081344 537911193319594369472538567770112 9431413272179868670655950751793152 -247463092325179119289690811088764928 8362418371830908904922125160153088 1446381411543186948559096191647744 -955741773267178670909948274373820416 8984344090354975425638608911990784 3622404992169365267173658475888640 -169049420177000786286634705035984896 2141831115178665102033784479416320 8301872305739533636536360461402112 -593721183300607345530574617867976704 4285564877530540032650217179316224 5536940888764203100736651998003200 -585796084082780793168902893787414528 1720955832165928136742799409152000 7631886871237761257842970736984064 -407016075079042039436916733664821248 1602380401750890271213457030250496 3104456787657837273183019071438848 -485654476046178404523629850971340800 7146819071708919156856560856072192 6238768295881545540386898803949568 -746303844121276464812610049498152960 5463081602720919616949865142026240 5500588146510816356508979804766208 -587399528230752635413539504175185920 8564098473615947264292142618509312 8349546749844433562892743573766144 -652512162368818840482960650618798080 6070399489905708869447089267933184 6739537547660972254029835323572224 -666795304685926346769606258102108160 4529738398869407353903625000714240 2551677542002055846002090009690112 -985166491092731310576008690990579712 5069051745615764664129751957372928 4101590823269048103160042766729216 -914520348085646443451673422677934080 9247830769768796318484680172109824 8308287265202319382308542379720704 -314022763568306627509978020360224768 7675944952178120789192070637027328 1666980387150571206506435020062720 -977091626845963782790437980348612608 9749294596460764372065285476188160 7961822455897145993618087213006848 -16014319766122783828857883828682752 2059769467499103896829322267197440 3471665282496338341552678162661376 -485744431002298236452856862099898368 1767751507501264019220925668917248 7998868667798952993372458698407936 -884026246846618471243018080509493248 6166089871485272699587854449246208 1153468920747409107973398996189184 -131722441517761403806558180895358976 654225421056028089645724845735936 9613398953710489045294912089620480 -251181544184098504607848413062496256 8905089128721824533269787233484800 9133429041178913957031990762930176 -172275838117665453931154152743763968 6706956777982366922977554846449664 5649074839950370545064867597910016 -211188996307114985081686498834644992 7418391535367724541300415435636736 6231747317766233035742749751508992 -567174810573165716374704811384242176 204515025328741672989149297115136 3695869406069247171588298024943616 -63119143267302111688605954159411200 1854053355997941417402547923058688 4358838205129698794117933326925824 -794726799517837061674451343826223104 8484402109015485495790722191720448 7875812008557047373666772823572480 -750988080021616740740823097987301376 7033212888399276290477480304705536 1432973435184347108929337401802752 -809438290451621379827235187654131712 7689318124024580635402192516284416 1997193888931457124816744376958976 -156329810392459778144510489504251904 6364919531691949603715531449303040 9740207141583342303625480752857088 -698318229958139765659026075691253760 9441786275466059616333728288079872 8505106975842466861909924844142592 -990372171539114754143999386718306304 3437148000629044031609584299802624 8160225848884946633241136797319168 -773265718945403980232983307704336384 4814134935966383830190422996549632 4830469531392641753692197644926976 -419934266254046474776840955811069952 1943183888053051621038812720791552 3589772817805681936851823063203840 -21999022840913232248076878781349888 9328023647654267389290453829419008 2264007535121918136197964393086976 -244484349243490396177567124306264064 4135145741351672953765976415928320 3266552512500920834959014950338560 -399606504818389157453607749839486976 9490596046595583455448235446894592 1374877119064032252260623331622912 -657852741054223581922705990546882560 9031931183213355398904085944991744 9037225510804914891259732939505664 -529347471083858643716270586251444224 8790664493958125837725630956830720 880437985277236004309824857702400 -970187642764182912574676675938222080 1888119321409363905536070921486336 5942018490986141859225084096413696 -286835703546832771052930000601743360 8615338520950713606948223532924928 2989502434607117894172756783661056 -447765283973801344899088803631726592 3089853375770839385138550754246656 2207931455030689194282552605540352 -840771574654650952421942612335788032 6969599447040836185675694086291456 9409325507877717565489197675970560 -478279107158854735056969028855660544 1616877568807318999354353135910912 4086178742831079526935786013327360 -798001571456424917319747370924113920 8688035301639032400168418132623360 4516141055544249424294797226541056 -861625916574262975233607730552897536 9307341151313299160423894238625792 9311536605053560472689951920619520 -6979870159004902675113636593139712 1807443983694293924266669038895104 9630136730601732429655032941510656 -991520143084445263521200348550135808 5111958781997091147569730622062592 22724548698799985211592820129792 -299107533675699301361863055049228288 1627943476822225376605591794876416 9668322606097335419583767569760256 -550650208218746938945139129335152640 4137649950785201758960381130178560 606739419837597534237126513655808 -973726943196568666868103991993040896 7254871937622075254547859300679680 6106015720798385186626587068465152 -130495204630416198368603756728156160 426819621073464282888793409716224 9204614563829638146058920180842496 -51296816781672272836979888140320768 7711561488579733452308031637291008 1723253429710039131389256802500608 -166381918255021390003746977444003840 6747641869382276936925899162386432 7175682518616722131213194918625280 -556516019723130276876295720186937344 6334612998974743846276406278356992 3497420960495652711244297515565056 -676395559842737592812530829881245696 4699424298833638027091043160162304 8698756713709778285835977786130432 -844417398435641806578540929678835712 6771287451777835876003792438689792 8750910285175906062421791887851520 -129331119225789180729231029919809536 5377573930172977934873695159844864 5522918892992603125672910419656704 -997727038524518929728930095667609600 8948476931777836377557500151463936 8613175416494901095261536239222784 -971017626849836412857702860577570816 9119810202297009149948831631147008 7308746544303425953387629466615808 -945973404715513111476677363065946112 4925110652349907799582217932374016 8455578225313805246198380398379008 -401033568320375163751864446669029376 5548482342642134986089277503307776 1771343958977244286284488572403712 -652267120579365801899024453629640704 771355358687090092743338078765056 7169630778259314091245703920615424 -915148381931123342923623764657700864 4633634529999276638707297867005952 7722309237784081725930277101895680 -411753682684504566126044702157307904 6476848343121982936795346339102720 8333197856814063817477179190542336 -894953212917286432902886172684976128 7761701747140592922848201873031168 3045928346465609213077612060999680 -889848481138321328517452706370027520 340009801548257216429305429491712 3533071168517822137346451348389888 -831613554062279163301719436005736448 1575251386553660819129782797074432 8635867374260974638866521233817600 -636778925864281304917352958140612608 9825020358886792842125911965827072 2023618045806002041032333666025472 -122844404168633114565578461391355904 9906973712473140881144641623162880 5110436611217000601563197205381120 -404529130978863113017800081746690048 9086822754332774027805234112233472 9081306765038883863250316870811648 -952770753957735453015579808539607040 3976036870008403487900230731431936 5123979340074907690399877216337920 -990905387762475429314528083896696832 4557024724340816290534920055422976 3115857488544518197641380802592768 -952679922590133082109905135137193984 1183175813090860617906983819804672 2395393527312348504774165225537536 -334595049839539022530162525598646272 4042750653592044392339157391769600 7848817185595795139837946069254144 -828492477741799495781249410926641152 7754486525145377737345903389310976 1579898890488131865119116255821824 -233046228602910733409388859339309056 1900306163752021028995596875202560 6657024823017629899312968673263616 -381598232892970930075810612167835648 8239098422999849130914452093272064 8649251885631119044353629706256384 -963986869784452802585497068990627840 9739898699659020785038716557066240 295430072150370967407869386817536 -336055023325096858508403265350139904 6508858838158341351990510170931200 281113267389481378915817283911680 -91276001184786500046152498413568000 2337859194983165863138096368844800 8201537499578180312182953183543296 -729977844932445421773323045647155200 5782868854475666029073832945385472 9900671030617420046070618903281664 -430739596963962783660068994843410432 368759948467985966006193365188608 8395790683357223892585603156410368 -303194078900376128677467637617262592 4649965260131522083157685594750976 5321734311343468831598270916591616 -507013599958572236763635898105462784 762190740724544542850084602118144 376475458450085741368072824946688 -12515224471501345162853553857888256 9541797473274538199619196195700736 6270684214091044783295507285934080 -408955883262551982198571688274165760 5576471018108076013515378270404608 9466002361234523408882841585451008 -360787686097543345139465068925157376 836626217570937826448502786359296 327238795269962809613497051119616 -130230140632819308981565183825543168 9948380795003822186431716519837696 2031426619040115927839383700373504 -77533484945805365232898098136612864 7652670327184987989633379709485056 5724543230552303190644695232413696 -392099003417772488349864758165372928 7973346344080971593987523273031680 3147076160799517444402133851963392 -199653803142681357133249762964799488 5281033609867552466282016111853568 4391934968119944745052019657539584 -335968866767134299280943649652736000 1948328282903137695197681040752640 7304284446948498885459554902999040 -754508211341953480147104239257124864 938983224692699091183040213286912 223610285641801865050342415138816 -221298188247526134238375313793875968 6505566470134516695120104294187008 8657604645179196852671477400469504 -687904939121145149191840162058862592 5202763697171262128711492580671488 993863420951705521560356552441856 -811679018688494416183403305395814400 6207436797966042223319269949571072 4707608720197617320187315179487232 -502973530778122551684795434438492160 1882791269994256075985121206861824 3723863196336665134020210494275584 -392284657622570321996317298243141632 9501291144659801991682340478255104 785566815069556986254236531556352 -183423354756409054643769332270628864 2902289045224878547625769519022080 1576487297158137566499266675867648 -177223626724465318092344108850872320 5092790121091132682900493777764352 7211861880006205687445959682818048 -8993107076394520577391593428877312 287851297913138755479610761150464 7705915548526276225817706693132288 -261066317227696298523885621016002560 6025459563895519630813018105839616 765863895152047195223163739832320 -440108691834135966543062185677946880 6115383639514604410291686092046336 6172329035400552937796630279618560 -153175973449335578076059888636657664 9687610604424478220482937727483904 7501834209391669829777421049528320 -531569528452379891518164863970967552 4617511900756004709517200971530240 4360405339507648116572177674797056 -390815028270403991496496323726671872 5051875962828478884463167903105024 931888697084531446422920400732160 -204485276508182324104435991039705088 3158283187226627907687203869818880 97367205406730490140881137434624 -673079587049122343990052252037414912 5422966350024832630191162778451968 9396087025565890571530658769797120 -176082296888168182078293825044873216 4383370421968951953212794734641152 1415199201618751587974395727970304 -782114422032147248089276358198296576 1778317213464808349222766175584256 8319744907700127912583320072880128 -357083801536557179154741816878694400 36934612778675237826266635698176 4342501680108847637156680653864960 -402168792256374181235368514205777920 1923208248698622147048337521508352 9738191684166679808240203889377280 -39664570268761152473983677504684032 8286800478321104464675452645015552 8113209187277795792449886016765952 -479587389201382964992501954010677248 3032652750967990606091629386268672 995296208088897916653533185179648 -411038255031974225407925409990836224 7625349419827027238069230276444160 5848837895759498873073594317930496 -30450306129924111936788781403734016 9760453688999936772000979678658560 5570751645177402278356677904302080 -815405087433912809518519021436141568 3432160234517793986597503293718528 7180756171550228446863859159924736 -737246588640237470635039573760016384 125496808943367516657408903479296 3018385439768050460471754288529408 -838279842264003193347004582741409792 5269508218870320520534563475161088 6528096598424759848051484141813760 -199237414669550534489938002024857600 2900788112038978773129563541078016 5031610598606120823356766461886464 -690238136992688559167548016639868928 9274641831759041630890572694683648 90510407038206376688923881504768 -989713070088600261609562303759384576 1854910707593241661367543750721536 3842100116037659171709506180612096 -705205364240174339713049903375581184 3000718206294237856993757301309440 2860626940985071012300621007028224 -798783486321295614946507832726388736 5292482081928364954722470090244096 3528549963517494546298898745393152 -31612604516427703058272716574425088 1127878912942650197432769471053824 7914378816303872652885456538566656 -627022187443832595250479794785091584 212822710768149886983972541431808 9389772143071072440370772335132672 -334507096443166949742915477315780608 9492842018432988906351799757176832 1803893474771309044676418766635008 -871967466335229375268215020702400512 8600245098226161708206149066555392 5762330445388773412776016974184448 -737323674836046064080777626716733440 7448095210219979157658917540986880 8392491828148013297895169652162560 -908098822416250310924449984129531904 1625889205355827901896964266000384 8085173267168285362069237439397888 -128074912909001921735276888617648128 1307979855443028750075204972052480 5330980496425365103749518550106112 -333937285013970519370354842650279936 1541166708742461921908843182292992 548981611378915228724500610678784 -830104701649833483877739476778221568 9724385424779313214908589995458560 3336956680017116296425295455453184 -894849162991794821454781014721167360 8506339810146674198877804341231616 4882356489924218350243932582969344 -507983910363513751671463741371711488 416437599302644791050231376510976 5279649281700647491167424453017600 -491430010862135250105459706968408064 4481355723945844415500409003573248 3510436548463948512011406045872128 -791012876782445609198735069416521728 4460784964867528872099543412375552 4365608445902061536705871848931328 -322305466348980738790412588729499648 3579434497759617848375298823815168 1106652385448488612195691155947520 -805059369852222235077297219198517248 8353438661545045300472427665424384 5678141986765329629409324855984128 -132467593555300307926891537073438720 8206214189664082202653262937587712 5772554037807442631739038121328640 -950978128183911498493662074490585088 1094474533962757816816881075486720 7328325053439830862750806790111232 -394497332251721292426702497266008064 4156270073545963806057522467438592 4533925207099032710197578261594112 -196669291233302516454586629192941568 9052653353271257242467845361631232 9009246242215645554286273815904256 -466276814180830159082486888541454336 6441041403559192084837868284936192 3790730951431037222595548554461184 -961163947021475845109235789720453120 541656775109566782300384131022848 2837987998175880561901028100800512 -691182479080273528264305778123341824 1904791406772856544464185491193856 7317041916988723257680009954852864 -729668349085810225773963138673147904 932218726605948613399411762921472 6813480365754930503315077264834560 -227401501180526654466897061976473600 3041493518033158889475066237550592 8518309479308536404175354352107520 -32878738286798457711620177816190976 5361462744859376019221813846343680 4044469673277149448853225507651584 -880259146087412967753164449883619328 7350712632626134117120561739988992 917959709309538624628420822171648 -820454572458743005699855122698338304 6576653354218031981213517051068416 3796941061228577098910813181181952 -203106159551319160208811486689099776 9152502408385941001845488907976704 6632369910075063703783970621620224 -145656026691381645010600768653230080 9181276841572427354966269850812416 1190741086426751767552224055525376 -476814094495909719432832159880052736 977557716929381172354433387855872 671592709216199271807451555430400 -770077648118732202012526979238068224 9478531455260572426331459013312512 1960014132596488204053453463355392 -46870202209008449583423716568596480 573766123629930949026359434805248 8942948328877510940118673902272512 -570472219849371199917736241605378048 9326614451434635042910149810323456 8663395042408310212601733097455616 -165690152492774268573764749784776704 3276704085867844269897684954906624 2494424095636246778127254749708288 -830926452374577758213585224326971392 6082952840966611413366988049743872 8216835601545145799559914572480512 -196706681270138309632953846503309312 2549873418383613881209799539949568 9052779713565632442738887018676224 -311033332862388674287948500169654272 3957224314742494745556011326636032 3205843393449752808415002827423744 -52978003475295661377702637944700928 7875493224914763055195418647330816 9368381138030210170077528914395136 -433157483042708275776500735764594688 6353196952548239508060303911813120 884601664707217568601469098131456 -563098833971873853912763374501888000 9937203613292395787703384629313536 4179428067496596835461055054348288 -421235957952617267631361438506811392 9715890716383732006454466931851264 8121202006571927127940771675635712 -857978016697737171303442312469676032 289546198701906528040714353246208 5001065398755570445530264554700800 -360034351454299324142969956564205568 7103080957901461573372438533636096 2196379693167326702425508700749824 -156578360587850484093091077207097344 2243945416397824845132440899944448 703063572476974040246904198004736 -839758256591310686777106350081048576 9314836352058303567963970995224576 7872687140572999595225265630871552 -3624837771011395201868564206190592 9457927388378455781604661458370560 3917200154262275778037259824005120 -852493538121993475658772864057737216 7541817607757098609611020190089216 6490794675569453346178192608591872 -195799742409554660883527644957638656 247524587094165600246481220009984 291818608870502552329773798916096 -546560933468959185358990319697264640 2478219926901325984471262131388416 1363586445418821917003778548039680 -165710683069837318687081768173961216 4848745307109196285603508962459648 8557145874936605213948689631936512 -157370899741452934842287230313037824 9448448338760848688874658048507904 6232601163227662534006583555260416 -599052408066461796094696269430128640 259412501847578705773920914505728 1639104319375919999210463497814016 -55341337645178832190498609588862976 3441908377770399676108628996128768 6606989452321477248855253746450432 -6846004752672105269810875856846848 7352905328491688227479643062534144 3424012487348766817721599548981248 -78017602180638251120078562688761856 7214051341514298392806941331030016 8398436267561314849837784129077248 -524239529781070705887967977802825728 6576968553499949873692183749459968 9094979412528028184037934298562560 -313125664595613060104900231785611264 8246544165520632707606716591636480 6581923739440913599463368349974528 -637903729318078760449285279583305728 1735202192810148423121972775354368 2360914912199032220083998999707648 -823153879001277431377849622548447232 1725840322288478530773587402424320 4845324273169997814920470006333440 -42160550680612071033894689052819456 3333082819099612435948041498787840 9510986664399986142665699519102976 -513123567180899904100129407120703488 2463333790048498985105399633412096 5552050626071195329802918288162816 -348698059727695902339889455236644864 4509597362545041539444608008716288 7793125840085368875151541254750208 -209590284784265297904563162762444800 1914436699213751431135420609462272 3992008014546218238294142530617344 -793009436111208530726184894433591296 6644142959062565300962823185104896 6369092711643155145692419043885056 -903708609063178323211401182878629888 1491937983358138906509667307880448 4446596942793641828297041028055040 -869198830184286583325012801091534848 8739254726898106905997212949413888 4662837758651465183669951725043712 -753997665431624601284859202252046336 814024430993295003851331049881600 4650267581739623161116760798658560 -360633057022601954136155509093302272 4490349862265308537516412333195264 5634730533035725039825854073405440 -971689127492108344647134956201443328 784099175873605078344904086650880 233035147573348896199737557909504 -153047995261665164497115521533083648 1340161460903029675857975953063936 3469904880521330522590756523212800 -545641467060683520161502357413167104 7049524147818116544588230443401216 8122098365610883714454715606499328 -829921356022244070706143782229770240 5101488286849367764130938933477376 3918012063275536189190588019507200 -387086688368138573007772593237786624 6152335375943129585870910359863296 7159300742959541861995357910597632 -11423313061226615821351839961448448 2740100137461727003105377115963392 9095665137774573417256938987585536 -436146694601794955538176297125543936 1844313317911554846945043015532544 3690118619592637929316298484875264 -577305700104214440571723077669355520 1146835698257759498998517547925504 9716258465452201135288361324380160 -877523617901620798968941115099578368 2933543748528628549670998764421120 1117356944040591143825227168874496 -163094241980959785752172032665059328 7961577762092130769877425905991680 988757900063372502964635965587456 -517977270736153421340423848902787072 6988025461007798464107614216126464 1809523809405375001030373800935424 -869302976260430172362434328892801024 277838116661057106837982637195264 2232182703023461188627252052492288 -461089254368569926210098963157090304 5987560551884380520473650282889216 7717984071172145984085919124160512 -220486429226670854678919484348039168 3148514322148953955481204473987072 7239561561290144474755504443228160 -411386197978329835694198415092088832 4511766229605143112848897386479616 9510559336410959774651236428546048 -553340987573077410340410273648607232 8410270280062938748501549182353408 1085941062116235307423646290542592 -291417825290860341195182632094138368 5532850385853081564356507114405888 9776806519445988376396649413476352 -595764839753214374370460898481405952 6641016889117435612382359705354240 9520485771173582554112760070799360 -814535285268175378038972795555151872 9061463980873244191109419274076160 3406610881369425362262700947668992 -703847142837993771597680444073574400 3138615573776769257649608289419264 5861887015605633155172050726289408 -479882679662761080707696092478701568 1504315482167917837616559020834816 678202726127921059965329200906240 -476800350094247658353646007924817920 6822672943332537000515596206473216 7903614609721955355291344225435648 -402326517374309384703940896200065024 2109285538404484277787284780089344 7596979456002133464686914051244032 -370417211716046627952320655801712640 5897989679080324798571154979684352 3723825521283580838414615536730112 -120313034974758128459883938937044992 119117211203639707925046185951232 4797801008261619297884561093951488 -488693597679901836108250675792576512 6900078478507923800474552434163712 5597823281220876143178503277248512 -454000295282026610439112112690167808 7050147371400404915236708527636480 4351615533480105280032312748146688 -188269888143525296789602172122693632 3507694212241490770426603614765056 6089127117765937555315666800607232 -879707607573534482730182855563935744 7442219963811682862696426184376320 7434867381239877898114614989684736 -495713936108283212349201361886248960 5761579555145040171613302743367680 8741092855273742396352377126912000 -36051381964100076719209062940540928 135762191962662862009149534765056 9358176621828075904165946769539072 -129910734197581890217713344876380160 3602722526957129623481125682806784 2706632300453413975361483884724224 -386136588187957489447122057941745664 1774769433891600000414619462008832 8219439752860536424869925029412864 -993936473856609166450630905825329152 3788138161162203543457678432927744 9837625337258601275571772063744000 -578432953825997164799491073512570880 2467696918751992817128739793010688 1742505057746966384682205955751936 -56349674651550378098481547364532224 7345694986462468333079631247704064 474002771100818449129368589434880 -85888267415379062107814738266161152 3466620416560778128324003354378240 6024622696237395305416164716314624 -631820999867480530250511206370508800 6724394858657912262607664958144512 1424082247425968198008179190136832 -766010420757159804164720262800998400 8838414001130723443023578277085184 5360384959702315634244702986829824 -589179099377784362921907166407294976 9311552072334436977488682777837568 9745180680763939263981976314445824 -816666165771787289330325920629653504 3454306546202253278088651452973056 1801010910483965039745590282420224 -561435197748220414084715473732108288 5034604648454371358426746956283904 1469571119892079343854235938717696 -827009771072908170835701486348926976 5402068541028405189838097667325952 6001134451743718573369119150702592 -872842741351226825325672841229631488 9707094285032282413919036139110400 4310997848285738865556050069684224 -45235670060878499706736711846330368 9657563172023014088073369045958656 1515126646354931320052584223342592 -720076702697685471907362452300365824 3145606602770411090554285618888704 8459814952281367344267641277644800 -426794079033733481785530999411572736 2043761461477239077048490261479424 8136312829224361482776894307827712 -138130074949248354892945319417348096 7146493790119808095431583753830400 3147616645981489775894232272207872 -658726260487248350334694376360378368 5902655840159164214608065911062528 8129914119931371892394180279795712 -484642233755903346967499442816548864 645717842695655127550816709246976 8693180000393856492093314481258496 -505054726483816129890289472130514944 8656385414578117307760642902458368 5431363707749811478131135391727616 -532653063575641403387976654086209536 6725076175213616614942464423231488 6992670280086460501451464113127424 -784094302552539527130518276546756608 2403114354803071624741358290337792 5904929335673203553617283324575744 -376383002855853108573595022611447808 7793852137105194785974811696824320 2891535613246938679512396415893504 -311858732624362831959837807468347392 6824515802774215958496702673977344 15569068337948617070140081569792 -650436995427887959144648431099707392 5278770816835820600364067173957632 1502632993882635635214431851380736 -19030428654451302839855783501365248 1384612329387415970516079912943616 3196959052036907333271620174217216 -501144406254050714708977836359680000 5768029692094199437742524141142016 3621203089374497069045896802467840 -476395286724748653201261721995444224 8632328783595228630250664182677504 1504408319741693286524522955014144 -537165780725860593148230249037692928 5839567843483007401041861007114240 715651170839576814512008142520320 -316905442728633827523962371120824320 3739946179490704729844453694504960 8151384728764460611027272858599424 -24841665704716187519526031958474752 25415216168799037071487401984000 685374596401284061660326746128384 -7065887625938538036251458199879680 3069987984679508044822930650038272 1243071099639000147279492138663936 -858960017649125520102933021795024896 6705331315795522280776473298075648 3268892896847179189459535112699904 -502597437303261107715696377452298240 7534635389660947948820506399997952 7107810922355016764447172256071680 -991028947082243782815289674014130176 9445356023319385371881948827353088 4558256723553111826242200328470528 -264930591106355377522384288023052288 180355414552864247743669090648064 1502444038279455464480716078710784 -478203522594156682267330665926098944 334080431866546764203186649563136 3938330841608264103174001473355776 -528635804714060149324461856893435904 6084714825585721315551143801126912 4845745356518138752944149662531584 -609161404480365638945219764516028416 6887877238811779293924777604939776 7734407563704080167993694643814400 -213176066315697469917503610922467328 7208346203223304100219325513728000 8194820516307205205854917067014144 -600684487796470912931649891904520192 6503424552674105455899959694983168 9031970995068809255316071706001408 -552259363378926444686552527844409344 9875042928687414003915422863196160 9801095546897833002911934323884032 -381991649876143801187025961797812224 5944180944586723761756618690134016 1987931131304564416377301000781824 -186561111730459172186109821067460608 2227748410278811756020520821194752 6810259570082988666050209449508864 -800280945994341332372896601883017216 3539031789031660300281893051432960 5410152604490773121106383973908480 -462379666198697545005145399484219392 8477398417264827227785856037158912 8765424465372371349671403614896128 -734437689231112041505952116141719552 2993490643917208823133007058567168 5643211688326973719874239916408832 -718554486346174678944458424247648256 4434340744732170354416723020480512 6737506609149580883797897627303936 -644359214828976107333394336063684608 3257866149832498365308138728456192 1766834346806542279246385902518272 -249423304879952887177936896201326592 6125766461040608136201596152315904 6342289926690177640440214860070912 -599977647907634731832543313985011712 9527616854756864498784089193578496 3361964098821313072455625260138496 -673349494392662916410100751318122496 300528758902823367124210574950400 6634509514205451124468529301028864 -733350402180209253501070855502823424 1047934746108576702993186510864384 8291305806125632597805077595422720 -200603086411802163472782495815041024 9855039757947325436825300063223808 9435479386022447639129229948354560 -859616845487721795458837747626672128 35862052933901988737132047368192 3355071525762394684476067873292288 -517167750361926450811081067535007744 3229338762170196023232307958644736 635828881883167625517098799726592 -224757241420672124160788116826750976 6557016357611338547032810546266112 8171031284200199500344841524477952 -633902031786753506744679242716413952 1800352615269504145588210427232256 3269619706583715467723172319592448 -52559099553482525323095461674876928 3247042824843742045303962291142656 795423665382713530518763930124288 -875018597952894592480935384851677184 7464269426780813391205461483585536 4825944104990570650466239446515712 -314464245022378847166549488404791296 1539114871878343419566818248884224 6908464264926155504138128042491904 -281674382868772004425479317920677888 2051259816749007710590568398585856 8523666976285842691532926876647424 -99599697339141823187609650330599424 9340260502379408497726306457223168 137460437619706136064195045621760 -241761319625310958471699604803944448 9975517287483134995424948950925312 8996893622220033934887561306570752 -517928792362047024941858183180189696 1459001465751412061508318630248448 2507046380291388118623134744051712 -133232533024497477637004852308475904 5356389646084137181155306296573952 8765322767371160718293437197058048 -81336185963715760817864560236036096 8391179885902023639222533895487488 7146509496892774119605976430542848 -991729350753516663194653014915809280 6852796232452056961748052213760000 1396010684659753543341831345930240 -624057727187872343031678273062961152 2032643680554511278763197595648000 559947692679384387930294941908992 -481565762105453674770561197129334784 1833114052752586223233693770579968 8316206320086795774724806912507904 -3001516765407940957018058011967488 165440406214781804060736822968320 348043339911424958615781225005056 -31003792078466917584130398239064064 4525380147079497824528989136355328 3561864972668338984321539194748928 -484996311582636287367048314805551104 4735634977072096264709120303562752 9134299503679308566642144913129472 -662060952914543314322736654105706496 5985062600905588362396454371721216 8245669802389496826776825679052800 -71717519105493690597650456530386944 8195702686804650217717464679055360 6450217668002569470845461846818816 -166768626358588121745224929829191680 4072918382831270804523857660084224 3992335764470137871392508443885568 -948534424384064719575962647600824320 2952995955678478150947684403380224 8602797872484180227263969145913344 -118726436486521305965332155993161728 5739816980235665544953654916677632 465913251991312191745347511386112 -193302767195249014333090833151033344 2923331744282972715789648488562688 2954220612694794683090215460929536 -378419125847642810742999622533251072 8919892247844889497973262706016256 3072716813895799973000179483672576 -715359600364022570979933062762070016 8812774289504827017205539196108800 1622724421110339371630361564938240 -518967524063567736480487704155389952 8207427174020077701172502678470656 4610754526896019705697515555782656 -348495556798219605432194495057756160 1310164986486777119534635305402368 1663353831168021276242786964733952 -742533885785961353017961147348811776 6281378728765095367752545868972032 387474872129644781568088080384000 -210916326463049207300081073176707072 1826969180073905464173114026885120 4348491213549496661199522162016256 -829437938077630970960009376919715840 2553063062972803424826615496966144 4755601840486399357692718071414784 -350507556466518633004903782936477696 885407692896349652576155486650368 9645623485715354459665086187307008 -580075863031271953989055092745043968 9393410813757197628513259547000832 8299582196238943056938166592208896 -704015333673319512490671327575801856 6696269310756797495439388363980800 827354926548423135941504220004352 -954265557101193928254534256701734912 99505719691048893727122191810560 3496547830005714469102805214822400 -946235242324305428745657544704262144 1942563871200522509365959725154304 3655615954652243580810635228741632 -673581445370289575114018099417841664 9550611522523082769043164804153344 7470791708710583776505196699451392 -754265328913457626235438431580717056 1624064702206196913949641105473536 1192827405428047532456960757596160 -877785657327067420096961600271941632 9509619631754975863540917823602688 2272465905511601312530257768611840 -245160470714994974594568195881828352 1447930978622833099011596681740288 3908445072916413450077924300423168 -527357295372255881065133856096518144 7537973387399920968786953900130304 9434557580197206487348405512175616 -165921566426338227076112771314614272 4580711673608228158533430163800064 508183892369036940408072165130240 -173619257285167918625946290136023040 2560250133407248960079198280482816 4762338041164838341397552285351936 -467802378681997282431801663489572864 3242297801420035839070387790938112 9149535145423571995749360410296320 -811753778062109269993737093124194304 4009872273452701915851878547062784 8402116299014466954768457301753856 -339176347772487343113350226649284608 1426034503172566382907139207200768 1942284904070304822695122675171328 -200549764852011641169444490774052864 8611514297837501588109082358710272 5481266088171071991007096795561984 -320301402234544028377323914534060032 1720093252205927061772868886986752 9663886236462337240599016043970560 -973311976298745949970668415434620928 5984809972357185723963450335428608 7680224255687641778393394526027776 -842638847236068794187916399192571904 647527830271961124271514143686656 5552669434857817383895512580620288 -142495237956819690033803908775673856 5496907795734878994358427277328384 8276653514747971072913965165051904 -184110986588154427403198700747489280 6609994549998325485009926092750848 6020521678133064817572055592468480 -12414585421291490210737836506742784 4637062186209969147550063405301760 6334784979827031561978980920721408 -435436716194783737767486841472155648 13939602718575953609096838512640 2895710850169815738608448064978944 -381083305230165620425024441604374528 8569874428997604854304400987914240 2819983307049149893789954053505024 -727122290063018711706428105555968000 5457000263244741891012224100597760 8548687297339145998499859629342720 -237413512331333760757172128582729728 5743103732950952041338982551781376 7059074755973752933954337332264960 -921938271317924643849525085975085056 1600231989396061259880638816714752 9842056429378316596644180622573568 -991083283534673634073157355339513856 9528040890080608416694398030446592 1671847268533263624234698442539008 -354681430782747438265479381408284672 4535599118942937348102737067245568 845689806857965329021266217140224 -868319669509374631945777542709903360 1596339824389505327034353716297728 9655152116433633271170968336728064 -699708581548257644650111934864031744 9823403632802719545953243065483264 5976963785430216404576304627712000 -383281204614841959279690917336842240 5507961211415600640870755176808448 4699941492502159634867984764239872 -378013976757649862158153641485139968 7384640021686029951914300399419392 8170766471878962347866733819199488 -343256842457276981901853582365294592 6643330386828438894345201792319488 5559538647334027233145529397411840 -373518951318564756526813987811098624 2090979193391145346452295971241984 9092956064861945796096934702743552 -828283903572378982652147397650546688 7558323585383408672633840488939520 7021409551048636923394401996111872 -130285402566995631666450533181292544 7633049705072755123744483234021376 6282642447032262756509588515717120 -895336336699124486355101467669430272 1415779704415738272408107816583168 5456418216192795786281971632570368 -421156985057893885441489387435065344 7220605230383924783754444703531008 9897744802994461499263595409571840 -689797749556666682292789085298753536 9180249036513536321784855866114048 2300129368457691111158398249336832 -678144551053594360042922410103537664 6451086222431248998498814748786688 7257168124393131124689893215698944 -289259783236246212444193294586478592 8856266785427421378493656386764800 4743379027007011428685957975506944 -149794431254975921073956876086935552 9214142743191438047223320215027712 5424719733627274098539834105659392 -783959023080789417763798491049492480 9199816147818440238451010444460032 6734794622650492945676957894311936 -825589951344455725689386947984752640 2408551896167647653793437520494592 6603210728493922591616628881883136 -511245412828749290870883374646427648 781380834222818658572452224827392 6556348482044956640309277118955520 -10828855674386582537540377333727232 7383644468317400097864128703496192 9587361554655890741733340674523136 -155790186626679100231408428597116928 7230103973340767262923501296680960 315404360643763681364094327193600 -575015375549924618254731677829955584 6246643952946002457536926471684096 6340696089913656743396748174557184 -635043632905089568881972189409050624 9375077187611729352127127952031744 2996551493609742752960298004512768 -930990208829646769602378234366787584 9537876257202655775636743782400000 9441177645683593862758440407924736 -598926284532683184124605330393923584 5008198751174912145365073420877824 9401433463953162387895210267901952 -839958663495326796384655146603249664 5421534993579373885897958546735104 7227514681496776530419413336195072 -839217736323862878146924787728908288 5446843272619822504653136905371648 259842195369625654679850543218688 -944904281848982369913285100452184064 4539691014156650881163477150334976 220684487852445085888440791203840 -581731373549894529025422721472790528 7275176926410791532742703784656896 4004394752862252467401622470787072 -518953808641985145238448234752376832 6921348927300254160054384691511296 792359536838748511828932175069184 -774378736616910457334336093786472448 1625690700080841870685784942575616 6156843595811238731537289375121408 -789589104079829079078132340970487808 3386031914323103285487044592140288 8879473873785517847702483452821504 -245257887516411734448619972842225664 4730081582897327052473712248881152 3149705969161381103701024573489152 -770323051820861268965267315391201280 8141567337251439031422799526756352 9827947269649295190116837200232448 -148413842112277064859456360102756352 2037367226891934311807021320503296 5683047055917820745408816124788736 -250716559411084594955806323368787968 6889837754729379909863280549560320 5499292159687123853658430216601600 -174456971128277510011952911897067520 4795440999645387983645389929578496 848485174903571972271170375385088 -134814039734943831068277774196146176 2924777608592730597797137607557120 3840271501997098155590070346711040 -867940949560073396100838493582786560 624665372944128635300046610366464 7652651441309965428966588833333248 -56130428503137999689404965820825600 1065554123920948076334837743484928 6988748876725479555841707464458240 -839576582511139782610597448668676096 844667196431245959883564938952704 7752982537182086415720393654403072 -215498483942498623332432366723399680 8713200038426437036274500925128704 9709895561529721692097877827911680 -618694756226817291927284652445794304 2041411397029685301726861993181184 2434757060777616173011608853807104 -799439900256684805555714863830925312 9252076231234929416799285466365952 6215055800078476140018434415001600 -391120988415962245361257906295537664 1715249329200044858188191433228288 2022551862635804240650685984538624 -99356867815985430553303383749427200 9978420463084733490813982054809600 3967827952117479419574758628392960 -859634683189903690475829270084059136 6885347673184103042902057522561024 8161656255071067316878917517705216 -288437273720859899435343664822353920 7116374751633934426413452312444928 9279848436578299150579553636712448 -725626444731781134680900057260097536 2887077008212029122546425445482496 6413163717803709425690560505577472 -812974860283828448736599514852360192 1787906730918927306896311018586112 9398447218418806536639790278770688 -708855989966995559383809442988425216 8817520470395648187902202289848320 9482327543679277865192020684832768 -327719828315726497401403105618165760 4680606423006694159054393359466496 4619080171078189692010352529637376 -127817808840139703264674124088213504 9575848088020722526171207523368960 2368367293857572328746373974327296 -189940802801066310759195836787195904 8812626057627295524152786659835904 9198624809367361577542740525187072 -309527654238343871736274578764201984 6929643354382825314388744578531328 1605433835521574607073083641561088 -269618028860367982642209619254968320 5496444596358494499669427668123648 6323409625977259929841416705933312 -796225702091702885062824853929721856 5717762135345265551349543054868480 2498005592928178028459025615552512 -175199507426470625359092949111013376 5977602474845170060892247125131264 7110722209227659238100752419258368 -627313405625266502469815499248107520 2551133513901273045739589431459840 4253628764026536993917288654569472 -412580565207148898984707254625763328 4084203714392567286124842967891968 1495630567057492809612731776761856 -753996559603412238032464198651346944 4160800269403218157531355171258368 2536631760022145374437710931951616 -894113141121768224497755521827209216 7876029904714741992682243745644544 7984594017455448291405930579361792 -319625438259313164799238302901207040 9005031940989507226582880507396096 9259439574596862899578419716030464 -853757960164576468650479577410306048 2500175648135508565493589001371648 8882532072354773232882205507715072 -897741047160357561996428659956645888 1952480920609347426421876224688128 4468364521993679617725831483228160 -100608403928339864822165439242043392 7654084965237907733233369283035136 5686521233795182091661506038988800 -174543932787138473563900452819435520 6275084311736988009724340531625984 3059097594330873839912237920157696 -488915012544362172295023549738909696 5471902572040865906711515214381056 1352227446144833047438415819177984 -487250915802309165549049323097948160 8345200993441119176249848539119616 8006064460522316639914395699249152 -124199858015468998922457170306924544 3270681823356951338530079628066816 2426327087545620196049756931227648 -916078444257923672019842501638619136 424335679056110454887278117388288 7704345522084743008522946763292672 -979696618150090468464791745732804608 1240666460561551286740121269829632 7973240105355229887368262691323904 -412197308929364715226611456642383872 5547429546810050208679868038643712 1932264719863710331904776864792576 -819723320169004543738026591940247552 2515761766397436086309208299929600 2297204698903544642926221262323712 -3296572145364616652326737243275264 1740517252988213236311198789533696 4674781012453227879569409712324608 -84470726208987900719411969640103936 1878589143383710073594047591612416 6723659265272223245421651215515648 -513115984649818903233494752606289920 1803866453049949618793931708825600 5580547106799447672994890384408576 -313995648937432861167362437529206784 9560747829712078861476081252171776 2851087485064018931201939565707264 -722212442032218855486675108124164096 6660420726440920379338433318879232 2860494380543778480636168215986176 -313054629549563851332264434530779136 1359427432642236042523650767716352 2416977948850224553815944137277440 -788959409422027895064670763546050560 2101191440181304858697028109074432 5655742229911020755430658625503232 -462916072465568639577168354765438976 458785990656288945135843083812864 7947103412221581313942123611947008 -536329631239486933940256872815656960 5904814351687453500383596849922048 4446939304987847782753177727664128 -790537432421928491866447432558575616 7489247482905921894491482207813632 7835809899240055709720032724385792 -246219544062154082844367144429289472 5724978049637263844464765737893888 9955339389674719111579011752394752 -171532546863905515143150515590791168 666493736873487971586285521338368 5495196689270283201034025114271744 -347300980242855217372649784820629504 9817680861196575254803082010165248 5752688938411193537929694331011072 -10776099833802090694743701143420928 5639622828920384795566982836518912 2818752443781089441660828687269888 -869590948267811124476544759602610176 3909292285344912716734454650896384 2489833705339937405711316613595136 -641857728126255577168086292704002048 9398979184019008247305946953416704 4539442415220268719853716442710016 -614558676800477095387718198956654592 6267196888367659645215864822693888 1534371946867863822983564667912192 -849950226724621573843846181796446208 688366879368749015559617390837760 6102793007897488960975895546298368 -378593253132154412359019941809094656 6699313050612334328660353045495808 1795018156499705251370322165235712 -110040806237241462240922629268570112 545836922678557094833579949555712 1254591572281092841962271691243520 -741557095918143670590295837841031168 4728621407169606707886760329740288 107425439244604986725940674428928 -848377683025386812431330729768517632 7820998340365917591417089951793152 3735263280100647354473214954700800 -496685057134137970031783876518477824 8119473745776366139412670947786752 7916066097015428050630153737338880 -161182076566908378361224336961961984 7687335463299207490303292174499840 8295105205680083614593621799469056 -854361505548683609177303067337424896 5078922970311316626777199645556736 280608219104651910488661768011776 -765174996476141782179713335475306496 9577777661667544351057501952671744 9447229780537873292935634599542784 -420825203051222939236598953648586752 6561789351411543911633860444553216 1291853565061105357271409285398528 -808397973388372071511867923208601600 8133072499874579193525922200289280 9096989794980572238160378063749120 -727372687547086647064909112974245888 4701593314793695459196943040774144 2508282412168116849289497629687808 -865295518951569402336737938863292416 3334060653217571694380524157009920 3081552731675086964448515080585216 -537002006143105886479099107139911680 479520418212895388744463023079424 9993708077486191308058325334097920 -640239049595413485850044277914075136 6560975419159139853285897499836416 5076580243403128791401413075795968 -893104150830497077016861721701122048 7181697767411662352047209753608192 4669728489655513586871252333625344 -821304268830395384795073099650301952 1630692016244013743880396947324928 3570570356297889232675143730331648 -39628765128458517620358968267243520 7597400329090085933988593948164096 8866171667929676581157862325092352 -847524969126280028847942120928968704 1226020711624686765127825203658752 5914077431689545336800263471628288 -491049209762479604536763806801461248 8509039749407245213042348893667328 1501033615523452356235572774174720 -523658491388770212245155437382467584 3295502773363241372706167660216320 7217229144624532950148870773407744 -909621061008081047834326711540908032 2159915486875908985487975908376576 5373043609991060323419024923820032 -201300452930631149422259255856070656 9160292100401646832756536341692416 1006120065713043130393625310003200 -634800972993304972736676216673665024 8810785993552240211744961282965504 6313399204755069603782611972390912 -251306251357647806549561620561920000 7515276040003552178632145542053888 888081505439493280086430410866688 -436926639037132660726212117693202432 6508054357276581117917827294035968 4282939252181276069682533713838080 -235690215395786493013199793223106560 6257966922775442070522385844404224 4728028623902824107219205473959936 -251061607056032826841873605797609472 6864320539708047127508716741459968 2776802682406461606247247162376192 -895173922361639662427812069900288000 905279706259174886936314097172480 1077831237201411049633071868411904 -762174527433608505484019723017388032 3257308530238238067871197983408128 7896288671240900343731948485607424 -812861733401100052582058401705492480 6879322300640413695899446963863552 9421134451223665507055025371742208 -994679428807892857548866389607972864 8810392922022152083468033131020288 3951049677178826812704415597723648 -135136746629577375827281114529005568 1876504635757168420802937267159040 4391925789973920615919939928195072 -75249416888068505404513651915751424 1954228070332344558143735567745024 1618721917248551067974417749377024 -712193620941010510317734640696164352 8142004234830949353864710863192064 2526916827876376501760016577986560 -79809968482585235425731842764963840 6114755836818644030858477021691904 6926354418767001389277337909985280 -941600839972938900483955274943561728 8912603074150923153612048074539008 2090552336677275406268547387621376 -235635016797107610422296438552657920 7464689886901429036630600694366208 4240992217104012335445592615419904 -210929647156801269571470175682691072 6357226097448367352745833112010752 4227266173974962442526296060723200 -507101915267620337919687085552304128 8676091140623688523079642490339328 4719425536926719489964344044683264 -318936952561341424210543001900941312 263536129930015993557992100331520 3998983077356123263164642999926784 -10509968648098713290595363540959232 8999701881753307889207541948743680 8798039502271354572673309722279936 -822486780506602693977567308917243904 7482443335677526509621348854136832 3983019583575637156568535203315712 -845855402438651166608137410882568192 7886189260872684265775806692720640 4485402881239940933127188426784768 -605407419228378020242163499008000000 2521111201254277828236256672219136 4730591528014418341038804451721216 -19132004691633523946455010790866944 5460400814850965077140565003337728 346515222290358610351458279751680 -458481037285511049031128572453978112 3665958835341515397326557568565248 4906418846726454925250392494178304 -560568439330009548385817631477727232 7181386596137565167369470454267904 7173557585064443806374718515183616 -443916513609916144231129564854616064 6533611998223653166393142546530304 5800817437478981699767526628524032 -56226696840901688743480391387578368 7995093356460723568016233712320512 6744753898598371444639973448351744 -691661752969162906362545016538136576 7067048838292814685176281100713984 9925700405492084222188793853116416 -278304101992934251823255007292030976 2930167773280048182459084694355968 1883987212134298479707766627762176 -696667612625856854528382174360502272 6704577059160638593180075059838976 3621170120812163642345471164284928 -189142773001831456437209290478977024 6202988599061740794094117499961344 9194016294562069990626567162691584 -175332548251592573269652276206632960 9582535237337453796615348507639808 6036508761226911635904284300673024 -546133450833606583164539891554975744 966258046322418785114818011463680 3119800978405455238991498696458240 -781043076469161807972655416748277760 6517380097000125558496405785411584 5781547869169756306383550290067456 -350976322612448704022727168966524928 5607457231085676058579921732108288 6948984422922257806381265209786368 -497201165305619466745035484490104832 6217760812698967555505753046384640 4285682887061778852977288440446976 -116743142025903935291564637418422272 1556748010002824513352247936024576 2547546960115686193738437594447872 -232476572519852462755218013623943168 3284843256595493874276620335841280 7293553586559523046274059072438272 -471971333591815000363938731207426048 6771393087194730672204873421815808 8098150562960797586764641438007296 -607095560168510798438014619530297344 6268992461724215548863147373756416 5983940472325780046352076832243712 -506563111477843528312813009424613376 8552480545897262575493529426984960 1296448565151203619943025339269120 -220654549216608097674444658576457728 5453352199495793923700511400263680 470327625718489592988451980967936 -385514322255362579343406283062509568 4443939658301525673786461091004416 2248773646444590800517270287155200 -552541658264322177486691897048039424 634832098925752346211209510387712 6396646612518106500199583122980864 -385028085535005289820941376907378688 705552962432442502579634560827392 8888368860821063275805355660017664 -623186047068438312385797375406374912 6166062205013510117834526321278976 6493475337510541974380577768341504 -291129118113161280668768810706141184 2288965669177141962342113109606400 8260569803960420153769200227188736 -240697254646348426256221213726605312 378424570431357623094865242882048 5204342599302295847037708324044800 -223376082723692017641919971288154112 9357713973557547322146769174790144 4551743862313869536668302855634944 -94621546547411398838803635137150976 186239751567459261429197792346112 1393070920798725250169830677413888 -634552347957190793616067239555891200 2471299074904559374351926862807040 1510331690379435425535019825758208 -76429881914015842277872954802962432 1458678968767484705214155775279104 6011867834274697210063191126573056 -318161060780958954085483730232672256 5171898127981916090120076921929728 1005655609120172289405532166422528 -923984312408207718820625701008310272 6582704221094386133455467395940352 4231363704415889059487961411747840 -605226813556057715071919295924535296 5473935699557621294262715118780416 9804417206927288348189949597581312 -180307395358723778750191241751691264 8238219932111520151641312309805056 6035030396577564901882373221646336 -323989488843589207082523053959151616 2286931441052881148072236595281920 8063822147708748403282023353942016 -847259590601331235857102213658705920 1552134033445567435266404323950592 8265997689798990478417182804934656 -500892330017609513529111646446813184 9324662554848179167822166993403904 6978346860763103052571199437537280 -624033525958714641071332536690409472 813740081941807996200605513154560 2415315840096131951029601962033152 -348988939151582222270580073974202368 9252810479864406677277163290361856 3684022058432503265313285400952832 -884778394691039602772077951154388992 4370659600972474125601197785088000 9119462662336893881144178043256832 -540054782622922220478304106521296896 519733489802328373954597022072832 6925986548426278259533931448631296 -456822793101766289759308141083754496 5308383548372164209105733528059904 4333353148154077353620207386492928 -922315052272843991839668288127762432 76896627702369276621435682422784 5307058530401820714995615956729856 -14394709158451286866933347881320448 3204491315368910396030842134593536 2660159367698923574758998536093696 -969874713192073780787022443510235136 8233326346726053507697749102952448 9888590559034195688278570926342144 -944881074652147707232830806411968512 4283320035532543653192376904581120 3429371838746583664313340079898624 -365019952281164692839506418111348736 2033872826092365294325279867535360 3759396751793458944307538423709696 -394525007996594014654702086931873792 9932570092295862352414236005629952 9256910428041348908103918887632896 -735002636309372013566333884240494592 6038659820048408722339149253705728 5853828314442242140629024479641600 -104862029249987003198986489100763136 4426757503496277909851664482828288 8326751839913073021257964469616640 -949368014871507137393034012263448576 6994023693610290272688202600939520 4527752631163647052241044890451968 -150104940309310675235767405804257280 7642440749536204701000111614853120 3325282374002809056441188541792256 -661771606717178270547288401553391616 5411968802975433579416791906516992 4876620461565438570195475048169472 -865577841741976550712600049479581696 4331900595555980912735199518785536 9453684275579079329219258049626112 -896192297847352353092115586239954944 9348369731694413211820516916068352 7056812323706362282478553068994560 -761578281953577166664964227853189120 1588276634704576252611023951888384 7876913947947176176637004281282560 -853072092661021930220830822567510016 6705396536048118615990398135304192 6451500230703204615968514656698368 -356491409349898332499428383949586432 4958272500506644867694291662667776 8900055499508159159153919835242496 -300420793549993268841598198675931136 8902427862320057268260225037631488 6728057198488096782634252133990400 -245857535896637953044089438373675008 8388316152234295020609785598836736 3426230889411373394903584043171840 -416874234495470933929272951135272960 7269532014843168911890456260902912 5582919563255895042914847704481792 -317832776445131321654453613501612032 4839372734105220649546112024182784 8303183704588696622758434825043968 -397352414792586820933458266198900736 9373589013879807991380602200784896 587069915182287593089806261813248 -146664827441355942943345949112532992 3201433351635132043068626685657088 3213068364615522382674297777815552 -639122590223346747337300898205401088 8583852822793824050433841420042240 2813446486574964065765739322146816 -663248918586153163670082156889112576 3327095821614816273618696897822720 799585734540889712644194866036736 -955367166548322358955441068988956672 8583897258256918590688682770956288 5464568990511508609269814576283648 -561559654949659755489075841506213888 8602247114653504063823169105952768 4859516479860685477298000183164928 -729898823577330229491905722830553088 6488283705725913719873789197549568 4681076625337589406221883555184640 -490575707461288095271590715218460672 3240157240925484345597974728933376 3614242875274558049376751172190208 -602020885707151037347381558353330176 8042975580683592462831229610229760 9494321675635556399333489170710528 -838884268199604130815184310515007488 7858585091256892301420251798568960 173170058796211746675146757242880 -555921343349718619494088254337056768 1435175171057407989009474035646464 3746996013673222304846480540696576 -266392068068223192757505800659795968 2632398504931649965170051636002816 2920502572583119835772402937102336 -197660941456216540850943180840894464 9036455123668286397557301433073664 487437297905861502983682043936768 -260631274141322897814094913562738688 6992168661157216452874083156099072 2702638224133046224579393323270144 -531269577286335877746441922247917568 8690232987981397303248712108081152 7107282728404278848479502687797248 -791457427129048538560496879106260992 7187216575043265532809351306149888 1342796631267485282762710845489152 -318906904598826577320007394209562624 7375418696947832963731009111588864 2705771082115888015601201630412800 -997758428631994752018314439186972672 6701782292819680388062727253262336 1962693399182572405969780291403776 -680324471655183893551202531423551488 6664811438733066608052787876986880 34140532629672772605924318642176 -604852895697263404132648470141992960 3148131266909214475432794559348736 4255034988351887401769850342735872 -851094027224024557686900051341737984 8685092747067995830885053104128000 5394463451180449281889785291472896 -715558515296954679068415259999993856 6502607180304677190181259954880512 2067821176469421505262939405287424 -153651978618915682347939533871382528 3004873091313630056569883907325952 5352223750021089597637113338134528 -672369383975264645373860617222356992 9580453782884101904018592948551680 7908043388511643399063653043929088 -441070419995398455430049240191074304 9678473847931818690733934959919104 9299165618004459789893484654100480 -273380448214850929316110094571667456 7664200989592675051778487531601920 2596143375812046489078767995060224 -720587843772495566220451841749024768 5638875744058646677791798837903360 168344952596094757117237672280064 -336209724785689995703238734341210112 6738706817185334610065944792268800 5881326021258252136056141360660480 -187552221539430862563018570515611648 3742451957754485554056171758813184 8773917684768400888638449291100160 -164491467456848318500977431680122880 5682149034404062879063906726182912 3190609047311120550260395734990848 -470222777754353545446467076580442112 4898050297522298601852829180100608 7918472633403155943793937059151872 -889365552852446822654628896543080448 1569115845577571958600296195686400 9370048777605526943739053548240896 -140753374743855163998274757884641280 7965145165935311790193847469867008 4091455409479785433554532425531392 -632028867846661998976086889910501376 176933777304817929893728042876928 3673568987787953783767810241986560 -489106445541812631590840626006982656 7939268399052078489550346252189696 7096606953757709413205740672253952 -600862249387783364166272196483743744 1330232979930173878567874341109760 2089079516663002907326739529072640 -674335227951639610644547339357782016 1308434481430447245181570894528512 6988922550732681397620928382238720 -804496073461064260986435125769142272 3584370690367157382618110454923264 2960707321037118659118635163844608 -832226176708559278841699764088602624 1122599084058152409859829891334144 6434185747239728634750932579516416 -55265092590626550138859510917234688 4322519613481049004549282212085760 3627268236988697955317867622694912 -814357697428245741450596402170167296 4870605323281311545137376983515136 1114494429200209523235204418764800 -253876001860674076761172913621565440 3870617934109478712279393311391744 5078561866485430330276222752260096 -798942731010390783072911620826988544 2818098003099202239033873516199936 5487147678969625530141940754939904 -701687318515139679663083956205518848 7249368208879303776967928586436608 9941905536695994812534695573585920 -201102091601807197670094382798209024 6770138111135161218069426597789696 8497593203888614393147038262886400 -561986816927773603950897897385492480 2503470803816927627718015347326976 8417391680492511978055178611851264 -32809702040489422835134306950578176 653102520348741360489769799254016 8075692641011400468867173878595584 -899070854422144132811403295811698688 8533585712744756010763434932043776 7966525605837113186240852077314048 -392435391073634556021071741343236096 873188388603244034184892091727872 8116027816156737286750316590530560 -776302283265136310153662648698273792 3935180112422383139997054341742592 2191772685832053371584754825035776 -508602119501141947386365507264315392 6336763413045838065070806312943616 2372310337018643811604293421629440 -390303922770756185945268009272606720 3842703692378882329681628525232128 2383960270830670689261542390628352 -155067121082656976217162082175418368 1189169824291608626078790457491456 2065883889100839810157640394211328 -618723028821111074185183942934528000 5447533286889153810708398375698432 1638934859061435311694149071142912 -263484667964852615523152263380992000 6072400120135285816976697282527232 5169492796607685130774098384781312 -440500361514358967086530431092260864 3261143498723523006772902486867968 2612053237512950510233750280863744 -963457071641328864394028095511724032 4016694738584003472521229930332160 6951492169169775679899659638145024 -68829857203257834034037064363671552 3119213440369638845443023946383360 3950183006246573227051604793884672 -847445671274046413749508881418027008 596973987167921359428770770976768 6312699399873627951748068715528192 -489190397808565147192927685112233984 8924018843164993246736768435224576 4643683924932593996238640639901696 -289693614683728622494775095601397760 1330176560192995658390471450820608 4970668091541089074277779589038080 -669341841862230587663102155358732288 2213418970388609427689026294382592 5739826784661625955137857465090048 -66107981568746582279573748039286784 1096730933453649402848752607166464 4203795814498176099760814688305152 -984531270519071513854152086084648960 8410357746476883808065774942158848 7828687996855210612016622614872064 -117020315688234037096552214109880320 2636818389561373803626324058701824 936575894654615930441695290720256 -932092631657696194344566417862426624 8618182415431667733481413551325184 3200006141417332407346261120778240 -173907967993006262332196542761402368 5011780019736191510920640096894976 8384083993618968737877678834581504 -356051553437924114461787222232268800 7025420301267574423350830308524032 8894181029883959384953496157552640 -40191670161665508936414820309139456 6133670013307477502268523075862528 4335996851914155086707685544951808 -3235359657028472352944008783200256 9057366952387588865836782299643904 4485190862853961635224143876063232 -558422504485056905072274817503199232 4529545138981373485929189903171584 423464485869790795314446414643200 -629097697282322248055369380764057600 437949994079749418728100420648960 4878148962921938602012449519435776 -355819375963834718515757935193227264 5870931402747261810699093237825536 9845255051010579665948218249707520 -167045898321705811600286768479338496 2697721738678591564519803333902336 133143053798788619885180688007168 -849338410254307621741872540725280768 690887702788830214264503167614976 6711260865057304176138456829788160 -416920722959731923847739091592413184 6927357123990100160350619908964352 8419254624717879230241679138095104 -565951734301589799399857993979789312 4716880752667494983486825079767040 4954884250893095172841718000123904 -233825971991725888012622992282484736 8320802420784400328806228031438848 5881275548362047916696677050744832 -449204623526689008976772217897484288 654652773620344894653139769098240 5787711578572881346198402609709056 -949039998287579074118433832343437312 4319158007958250415640628611252224 3650040598302183838658712674762752 -742843876811350202711827280461561856 694094699759521397542155706171392 3512069206999229016911465590816768 -386856101470857086064813566381260800 2274823091133507123404049408327680 9358385229328933198273421191938048 -759114138977435953346074916536975360 9688821594773232851843461689638912 2042923557624254364558812650668032 -167941269006566322617986456513150976 5498293008144276356489145674104832 6365798754870404122849605094211584 -755582475826670228924631394916761600 8880748449539772274541826735603712 8471084207148115551440789865234432 -976590754277096927442593834478862336 2907380171812138198003773196992512 8683413230676995567010668265603072 -411372601557591399027937191154155520 9962425627879982409954798122041344 9836502069682145158113400333533184 -33722314958114925786036290610790400 6619471175775094410506922205642752 8393244440778563445170449128882176 -309093701800141309117626448351330304 1142106519745537541041488597614592 4301300451153957090547589015666688 -600871334625042664802525302812049408 660257336040513287005647161786368 6459844168212989904742053599772672 -946971306669513323695979388007874560 3587638868821184829327045891719168 2511499795350738931049112449056768 -7040813660114071648432720061661184 5517556703338397762997346247901184 3408465678987021573398561483128832 -178457303664449353076831305374629888 5411586461555354205562478360788992 3144909748260372072623303309656064 -479582384989285988642930313188605952 3512782190406810765783156024934400 4000605203831929728716969045131264 -67414890945971054121446796945260544 2147755891932850743081678070087680 934021537752495904622393402851328 -667897886085317282357716810746298368 838524247242332566265220424531968 5720954581405903311520190215225344 -6825402560088944641213094319620096 3212670360916444506782211552313344 1040087550614451880724264608858112 -32578174626096309616285431055253504 8396891867486137785060957532192768 955610949767182025809444588224512 -131762625795209365195738675043893248 5626379256382374618244909805600768 770357062154831193747944772730880 -383482504185449965925434859318149120 5824814322326880395919538140479488 5550800645145047426164582420316160 -397102760148987535132025656268816384 787472609061506283480514226552832 1270081618611782067719946622730240 -195925566451346630167467854464548864 7080004819712851965431474802393088 4236138561793840830987687954481152 -532497101710829312029154271358353408 1821169514106632873284846525349888 1973882402454275985253390153154560 -308802527939087880237951145222340608 3764694459590021253144799401213952 5155069154468820961641033130573824 -324119444055875450471650528449265664 990376660148026360355456865533952 4726358216588589004541012004044800 -410153004406937581507587567486238720 870588695129272137326040931368960 8952382146329254930719682773123072 -580847709971526326480877970817810432 8589747650426337578590382529183744 6250440236362832199479539179454464 -159006219660304273325288320690814976 8614782434849974806977989385912320 3193657628743513470422467173416960 -366392703560916752925668069487935488 6408724098393199431719720310538240 5540341647578202614211905679523840 -684680360189135213474148056630820864 326403333728282706829980760801280 4086375820466743904606891840372736 -740329096870276977128899792924049408 8596867942539375852975698575622144 2422978827919382131655570047893504 -774260670237586105409563505071226880 34761224912719940036729273057280 6708523201593069433534294412754944 -167680751302414963013906016505954304 1523267289215869235417084642459648 7656505008631801439804706202320896 -888799227283931796265810554293059584 1059283988502985546461994048028672 9356023260437992345564577374666752 -978152811093688376301426488721276928 3211167599489525388173421861404672 7551703450827764058670174142726144 -296340340730512658113413869681508352 2069141306764741332742638141440000 5895922187646232999185351863959552 -778508792493566900298171771623833600 5887096435057248785284888096931840 1038147260671473527348097473052672 -655617746374814712251889717449064448 2546201151251017198379814879232000 4955570243259433512610739852935168 -854003272931132575092330881085341696 3349146770531086330239722603937792 7796206639475492222216564159545344 -84200166190419978212685857987493888 2841236965327270143365596311453696 9210387208075549005221691410874368 -974049427574491267455386750447255552 7455971636359503355351752266219520 4310039412759514264612981962702848 -673975098975147396252360653924204544 6783035687968017276265643330502656 5338642445001339585373437765353472 -426615186774140676787204468766670848 9533323274839636439354878833197056 5294497244597529603461869838794752 -725562029009768648358982647921246208 2511835165351869750013583129837568 3575489317796178822323621635031040 -534722540204420984841031258185138176 7814459171224977423306682548617216 145437949294354820345388169428992 -124400780028163962857603108465278976 6816073090006919661735155219824640 3624616342126877623817863352549376 -359843015377632558817219718624051200 8234314470358982838884207247228928 444274588960180774423862429351936 -585934272655976041144281920853508096 1297524515962420378057378524823552 781272071906862214737408674496512 -328189670844594009547421522017124352 3187073586596849915920657065967616 5086493815909989201556600342446080 -715828717847794076818198912162594816 5329746418718519899420397446103040 7148080063678722444436963076341760 -531224091599616264259619140138958848 3671742361649805893292402405277696 8181290615972532039939291822948352 -400527959756506427284908182306029568 6844357070312598068133158325321728 7323003610482364701311653682085888 -824372872402491622358722039007674368 3457187153267300462385646568210432 2450731825012527006257686427729920 -285220326245518411430325513428664320 9698781397251676394137783197761536 9340001557068449896452295948763136 -460962556065431009963724909788004352 6244663230972458393562012792651776 1151183958332610673022398931927040 -590923234822663599437586798695415808 1148887611900162030155237263671296 4402821919955754511914291521650688 -765017645081044443083086822446727168 5640139164525903502067125085798400 4549001349563751772746782273961984 -913474956269847445367620069499076608 234276598156288688527862126346240 1265191636057149301048541448241152 -259927750966992090091422877954867200 8660655570621731625761586297176064 8787037477461858555382606782791680 -831179228976306532318132345832996864 2170031532753553590844642478260224 7544177280184277272903533526515712 -582110291015579032275327026987008000 7282450985879199111135614646353920 5269956102918195357580025103646720 -221128496695897943994101472734216192 854245114950914186106357432713216 2225382198463250104321723087192064 -70289529351629551831857844308672512 3220454456094078763796522843766784 4329624229501236983309647906603008 -224562007265056788470629534961500160 6136981353141847046243120538714112 6124372313029690035071803736457216 -404894722695976130939613681874370560 8779305316552277752961986451210240 5430077321196719234718228677656576 -350398738645678804927633306054295552 322138961811835710135707283488768 4430030790646954550051723840323584 -85623316128479698678560901358944256 2625006778225881653068405908963328 3371255330384177153195392947453952 -864932863326104957974954031504687104 6306765684465510871477894883835904 6729109185407756362218628240637952 -210687739745511677652814954082861056 4074347054420921404862706785189888 8503248409627819573911416486232064 -103105472838226094022809467402321920 684609855253306862919030440722432 9497385721296409071233186058469376 -572211622974064360992159040293306368 1140140067748402576497137764270080 9429617031101820528734260061798400 -860451146000478251550646839787126784 1343536854365640419463258745864192 8281039436062057054799273048145920 -680132872576500976286443813675728896 4607541940796283594669002130980864 6908790065336803521596655084240896 -322980472332246488604961860799692800 6616060064481695903699501672562688 3318381422553050124882553111314432 -868745473697290084838587376492085248 7224905501315433025923248797253632 9802177789896314854528777921232896 -79636660564205490437379216514220032 4715784233587778884998116220600320 5032876249520293586948374113812480 -135459630645473571964593652491091968 1987204484281834349250571210326016 2400582704576019981194742657449984 -704584425882371186673395908871192576 9758362043332780013386569785278464 6764725936726169981214744213716992 -266996933052035285109948886340861952 6938195444984577422013941151694848 6222821391512320381502003706068992 -252119292252910378519691036870049792 6053769416164470297697799538475008 2703760397206821486299638556262400 -165511382298969412150511457743667200 6710648713878904952373938961252352 5902455475963044551886741308440576 -6038144115701518359115501504823296 6862499579477226896562171890630656 6887024595311430552878395481391104 -678602309222992305483539146663264256 5386327439636177831822887263141888 4179812016136069161876118772383744 -974390230407856388876005828928208896 5922664233159128465261820989407232 4349513240586047646214592764313600 -611859607954695083702464486416842752 3276107332901062582996009582854144 4188162866008231542454096985325568 -899151904632146635705915620808720384 5506489665484081737839631249965056 9504874514686720972954443509137408 -432470073422737786009279582160551936 80740894157716784963424754860032 4201696559515244348727876898521088 -171996221697240938319629805435224064 8577631006603434117649251564519424 3541618604831816103197093096587264 -755640216094103051263729779079118848 4898769626924339670062197360295936 9601328909780750966746359409934336 -410323816966819697058996986126008320 6582604300735400735460281519439872 8852783945173161294228102005653504 -890410531230234335852990435350806528 1211733415390429563023372912164864 9013471605084236835426050469003264 -539786458651234505097122298711769088 1873101586584235035886793189752832 7551553410627892180145951043747840 -17547651750043821410952758962421760 410134249725431285356236290129920 5056495411899142258852277063254016 -79166620358695079971181661830250496 8489095339362068324677469434019840 9888903249987963153296591454994432 -707592414120488024141742181158223872 7846906632910102246575884560498688 4522991148758170899791783005257728 -130991922103529009531976663586308096 8313497098274214024245449035087872 1853240383162115879060535555129344 -911229705504529627135118343407665152 3612394650777873561262832794730496 8588951211746366390071624474820608 -191795758236405035492221758300225536 3915009892999000063584028793503744 3960038049841588002245472952516608 -372009525821698174683748493600751616 1009941184898282295771994834075648 7810921394128266217370252551913472 -548134529015998923612325809057955840 9414978389525458122584394681024512 3810598964413745480444323186081792 -114272446431102999646841113663242240 2559833005945256179393589923545088 5842475157603240952929242887225344 -506246457578168862167925228780388352 3982368823951077782123006608277504 5713458840316483796443886742667264 -891441423223608849555988156279422976 1212101238184770291066498954821632 9396948009067938922612682114727936 -854741689403797800050372092438249472 5544790282420929085026037428912128 6002760526396648279495898149421056 -474247964499646427950904890970079232 2208267009268505528808112086056960 3220879948133060582704407723900928 -567249400335409087290677558329212928 9209401664892442363728359384416256 7903896783581931724477054060593152 -197879280367867600972852850667290624 329727187419711890454434052833280 295118685959473043022757228445696 -535500033136445957517522465829421056 1752142941975037747070899691978752 4462807540406131838122648970199040 -86528485910989058987296884848066560 2545272523655534344850859400101888 9667699382515047048935289485524992 -927321443148649556109854922277650432 560587562532539569097101774159872 2200533494445475680862966439215104 -756832549252955713075739984234807296 2323731609892838959792962037350400 4816131132929829603958062030258176 -102966097466207975026739272329723904 5579065641274542100384739621863424 6183135150802935735326892856705024 -86718588268704317707894588084060160 1716519568385130666375809440153600 3431804555658931152353947302232064 -599142924296840251718009316710547456 1226069947223080570410359536484352 4719795689917351286154646404464640 -257777673141383484243503658871816192 1253402080541497373566354143051776 4656195275132682701652557576536064 -965897488171945265846469248159842304 6382685241019162304916752315711488 2872196314640703910065652614823936 -959415542390141144371292758794567680 6166125454229957262366687813959680 3271238822776100214125823818465280 -136026292516464827596436074401890304 3515244616948739982648325454168064 8455062027846803322648510263721984 -174369213258412891104823773163945984 2704242562288924279499646576885760 1134115542506277055019988172144640 -141184427740639053358320442633355264 5002347032719746834422075236548608 3732866007794467646261168982458368 -527939787705406747866274988451430400 1375318632542156612399515001946112 4128930453788225492484451811196928 -815635988553610231119487384202248192 5189742484737192896255549474078720 870062166705746633758107280343040 -786209083606764665153225299876380672 5513614217388005610868294320914432 9248174617910142377513559582048256 -712930362801313727419299245127106560 4977274590109289821851890378342400 9328721478447145979885889850966016 -217040055882411505178080269798735872 6351978620003503567292021520465920 1992593292003289017630649091096576 -635760308236868751988679195945336832 6070054109719054837925778917687296 6477449644522320903932310372483072 -45782308953594391068911100158279680 4690830718483583831999420183871488 5379823483318338246855612270903296 -748004854896788314392445184817233920 9140052666450376889096197076156416 2312933710167487900631484722053120 -581214511642590453589356981585444864 9580099821755445218111703899701248 2089142118076633889921844515962880 -68965000648922622148760284172386304 2232170272049510220830235156283392 3861932500177514998859759217541120 -462092397621547812241058303829868544 3697300972774893808142749712515072 3297768136083356276105152024281088 -619892654101893911189178360923160576 4016591063441818214789821600104448 1378339971231562273975385083346944 -681679251051868009948460514126331904 4045969356955587073238015917686784 1509619440710191588577034303963136 -844813079980578514983768427123965952 7735896779735689657347732397883392 9178011568995836173145779971555328 -244331087923709871932606728353349632 4999840793942248946361357205241856 2887922789948794882518171470790656 -981333288959120898137464603439792128 8948990361505919395629949146628096 9547626308526978852947679946735616 -817416997081446709630738977372766208 9139471827464338130176579463020544 9968271216861689126762589462724608 -315924727486728097047749973191426048 3028625337611919550408440194007040 6973203591095815003851780698144768 -85266400045690025334098128527163392 3414635031326382019804572051046400 685587176654554889220017878990848 -837800844872231942917876081668128768 1441712358400761908299412768030720 8301221736456483772171718475382784 -712296583748470456174069210599653376 3359257264064630054370410697326592 2036905639391556697988807855702016 -753763709059174746845892724515667968 969894819698266814130337756479488 1406798168941270059294298954792960 -406598921830058407767935137240580096 8056275715753913300973270528425984 8122464920427299020447409726554112 -90730551850901028057011167145492480 725834466313783811529963273715712 2020713949176967976793419869585408 -580810494295945617881733988389748736 8359233119066296018996873622716416 6144901474901300130762403921002496 -423834879091867643771779502256947200 6841287780868990408245647775891456 8876904965973342957624295428194304 -56937032410705406985088086944251904 8720302129252208923229698886991872 5385673517775829891072491245273088 -829638365376767991742119411552616448 6536388491155675027690901534146560 5916487425060562525218552848318464 -820670449292246924229299240903376896 5574799008231062751277599055413248 7253139745515656689789827182231552 -526952657250930270588559409178214400 1603012852629781627367285447458816 5097557074405815074100329129705472 -429328437384856022963364195370795008 3134506152706307356887905061568512 6719924507236809064002854489948160 -865924994462539017741940378105282560 6391296855286062171530797684621312 649664332078576397566339595632640 -408437064886012489914889445042028544 4086646728528910051913420173737984 2139699705202434726979848105885696 -748663292937181398397325761098809344 6308808921917163015149760536379392 866679527744118288776814370226176 -632451189238839768097473129577709568 7571301175923418743975121602478080 4685217551994334576205965234798592 -520953914567178938066262118602113024 6230297069340925142189571468951552 5695400323716247950283832836489216 -482533380245386101600856057346785280 9395561065114483042097366799745024 1136245719841310079615902085545984 -365221834131024246032457926109560832 9203833492681167612932057691324416 6909907587175231629995927865917440 -550378172949399917501867560810840064 2721657870272555851448149811920896 4711282752606800103096049911988224 -896659891764629121912172160198115328 9318158055133511757482826001285120 6376848785689509889261411493740544 -901331187289138055759144515008462848 1021761550651022531718925562937344 9602036933391639380828536426201088 -336471546749245187949960609063239680 348689947203498996185258168156160 9726820215529597884412882835210240 -234672602535791056254040441375162368 3719224566643482505239937949892608 6024709768154468974770687282511872 -125890137921438567124851505898717184 5126061901240591310078116408328192 2412741872737889606137322137452544 -179073948140405721454884122108362752 7716097018811877028904481622851584 5833634224771851146499673970180096 -19072419125399158900938046997266432 2653701876188147036452125908402176 9152038436882078814620852171046912 -633007130670447090103378679542317056 6216063713747599377528923323629568 4816795118626908738752444779986944 -76204220248096692781268972328714240 4802175286147284720339487417171968 86920368641627524964437609938944 -406376863340725119825748933944016896 316841597913351509440677764136960 9236736252731816233200941281574912 -236745794441981976647249121473724416 731746555735663445175844661624832 1563514164459548673567342148452352 -292390797135531703701222366226939904 463956908324874718402504762064896 4054027677435958491158516642873344 -740519103992148183544301195406344192 9431027180633203653605826876145664 540814878585491451214821645615104 -778075814767634483152789639153057792 5816221202490543264676915131187200 2454277671938728539079387377565696 -706646914069482854662259974921519104 9925832290502857581202587097497600 6908174747265999785604600758796288 -182871060211896097746869818482491392 5504739055725382304797050416398336 5028751212269001052068586436165632 -43613885217143952874118123848990720 2726067209028955586351767973003264 3396454632191869092811313162223616 -789385324025828943870673398351790080 9474315017232063384900170294493184 2803580560917570806690302163681280 -735277984618409045430042479212625920 4260545574201632832030775762223104 2225179253817307463676896215040000 -390086557191371395663360987467087872 4319959579910162243449778950111232 7537038722371328436153375461998592 -941753542938727924962153184551239680 8279072422197629695907147177525248 4081097657109458241203312026189824 -682895435947236635755572107075911680 4841045984332460214230798169014272 406562776432874536765324500402176 -232121600181328260503669208155947008 1038638011352191317976651329961984 1596898510858742604804689462558720 -475248540778606451819960772558061568 1662857690857007806718845516775424 486384480550901384317763282010112 -750082256954208037113593284081483776 322401609702999678604271822045184 5688677183344111815567739138867200 -328770803862866267115708965793562624 2174871409281151382343811950706688 3437510565826780139805540146479104 -348859204000935528114064027878948864 2723103169662608333041648458006528 6436609989064275329945227266883584 -890012418272169246869177205929279488 6082315728090937863366114916958208 9530476003206091061254409508880384 -144359446860785839173014691346644992 4780731190975455529694037282914304 3135807647380134083518941584424960 -563450934773991204309802097328521216 3671124658127303770689272998264832 1989940821460325074656444414951424 -2276831969434652332396872420294656 5294100993965386091614048094257152 6487430618578111849940671759646720 -876980764987028148159391363567190016 2445475290693892804350931023953920 2200396040224334911587544700289024 -25134569233606359340716030026579968 7977790444303993578153544033239040 2443510805076292525717555259637760 -373982291229427807646788474206420992 2930041829005423100361175310794752 4858428130359834978640645266079744 -586659597241747053321809226692034560 4813450896165729247436326995755008 1081198748123628258598131033178112 -550025018149341850676042392563351552 9656835382951221484084172718866432 8475281931172646685080089127813120 -374004541349105447868523161153699840 7454110704611836639383281976999936 7216527115400999065087467770085376 -404723787765370024080362731334533120 5807529014253398777504979335774208 4693327246479668841307330874179584 -235415952214905313216414439473938432 5497300666162017383881625825181696 4077754137706499780329952222642176 -578046774181534297895835897612468224 8096315831656430000774860502990848 604849139224692681786861943783424 -182489076453428746888670957333905408 5841848480090076004862098032033792 4132994786936164780356854272229376 -181602105515645741158932756652097536 4819682223638783818924567428071424 6354660511533376539886213704712192 -21639538709038080590458456327061504 9231746397364578596737185663156224 2091057208434445717050113208090624 -562298508480660358700021211348336640 5937721288645874651929752218107904 9790809133492120511237002610343936 -723019907476163282436833610838310912 395005136797795570874349617414144 5457862252261534324176877038600192 -815017079050694241118975802201866240 9625705125765305588220753011015680 1092915661360009830033367129653248 -354293323183932803129419619845013504 9238277383112802524350566058950656 3246566981180807702103115956224000 -627957795776675815201076145356275712 7938626298752006864664099750412288 9640536342641945112647628394332160 -334438016036737012101750865885396992 8508205178212884229983330591834112 5530989793346880217170533937053696 -870717368983683733656196909455376384 8072989986214905005738079591333888 5505716234331499619837729767948288 -445196746794605873032253617970610176 8555404137814993564101725327982592 4199392976741017555028915647414272 -743008095657395265811089854721687552 2240018890526343200674758810140672 4342772176807875576987479623860224 -169439414939925736240858050232057856 2611839945044219922263031012130816 8750345946613192630479394676146176 -932444344022129681282436430680817664 2696194583526515661463735832150016 6695416019453633168916702038065152 -704118952220750436412281839603941376 5280957278821928356483703450370048 2717702538932663535592769251704832 -143199340040522355145572813641875456 158505380938569117995443660259328 7799895391613362957344651771641856 -269043899319128530520881844174454784 8207273847259748808215803893645312 3163252629330147498149892885315584 -375574607324955241690039953681022976 4618882740387207575508819615154176 1878030599709602065932139173511168 -110182226414320133392090721572356096 8052547916179042926357096695857152 6828641501642176448900724529561600 -772088646084557464693159080878931968 7045195438287368028130461093986304 5204943478578058836790613819523072 -464703143953326744593033555049709568 7728444034260392445873215795888128 2917006038033595992932743026573312 -760425613823482280162652504799051776 9858374923534735376379602490359808 697096251465145870629834307141632 -715897054033751489269051776183566336 1709772966076709797740271647064064 5018872970805083661051708972204032 -198110761776940349767811811002810368 2363527583096194619141455809085440 3351569772005407875908614968311808 -626525774533108902906922027450368000 2583279699330396196341186767618048 6313009099014437401900995280109568 -672682759190667935437933337095700480 3367257169196383480323605279014912 7829735148302842422635332049567744 -545162651235122369382312512514424832 7534479929150663365814760702476288 3217239323277050715303174123552768 -956409337030136392445578370879586304 9921000393212616455914637261537280 5572530233021624921839224026562560 -542321938010610934688602924831997952 3024540528235829260731513640583168 9603344450080524223654702306295808 -437289982752527020787600461972635648 294613838777592664830984975286272 8657335270610552779292407968563200 -621540651859756187249370135204462592 9860949943954103772709228099141632 9673348214632088746726882315075584 -524689613873942456911571851101077504 4407921905366249575439981753663488 7918858569945039090010019560685568 -609988726516416837229615997505241088 6211952682405330653449126032703488 554085632506255916814736587489280 -768993835118348981988246281212919808 2090371963620297371012350091460608 1186461609441984338541149755015168 -933675324862029597424691098974945280 400168026078445461268550865911808 3853318925635905017315288892309504 -307091943037709926306279071420514304 8295545653887431340182186701619200 3559072422960444348472542816632832 -930689656369234247529126133275557888 2826996648220987277605733685788672 1841849259574943825793240415600640 -885454989100977817149636254671831040 9422750257884502715469753357434880 4233196883756270867265702863044608 -349616576119093185225306967740776448 2621281377916563188032741740380160 812418725110116253934562884714496 -211095561315264962393145561499828224 2455528104221355641289581512359936 2855277748672732660506578345000960 -395813160480036739447187417965002752 3632037839822459698303708239495168 3667443292679380714184059205451776 -764670669176808289551382218801152000 3424337848768575346373051096760320 6223522599457792529507728247226368 -606516502940837300336573393521344512 5181923700214606346368306317885440 8015308826520436333146595898949632 -650685904471011139270411123051986944 5314143287316556972417567133007872 8658006564771083047727010628501504 -977185581856635412791306218868047872 5304629463866684750126240682213376 9046766927000674781445830123454464 -982949915014752228197057040960454656 8339781243448886005047938294743040 3366668011731523262871023220948992 -490989373309326890195329082246299648 6713662719529571493274834589188096 8182345765127984221053801476390912 -679202154814665859431670017542848512 6764783734952088116255188479639552 9132896295742206466532440945983488 -459797721530188419001405096668954624 3437028436081406715234634271031296 3202364324844957671769440159531008 -14587757267841639837849760919715840 2663861471838178828921350674972672 2737119252325764771285366126673920 -310554682508187859118675562739007488 1401328002912438747712822563569664 6508952679642662266580292375412736 -909246620675393605516410915123101696 2664750207747511511733350554402816 9182679897557161454999276334612480 -980812004509099455007450791831142400 5956394478566514825205909351825408 3764331711759800263401199139553280 -722088752511316375511601244817850368 4781660504762894325781981483237376 1784227080148796239740044125929472 -911280588141300821736851344141058048 8329687766107790693170676651524096 5516747761562804497370595956097024 -728100297554937786211086800579985408 9353673292687400548892440507973632 1702689165526138477797303308517376 -615126586350716990493963524432199680 5638715019846932759843144755838976 8585389464653272569933538831368192 -568024208367639580982076938695737344 785953810777393060731224143691776 8935651754679745700008160082788352 -327415924015259136675059566106378240 1987468981936894696441688650416128 5864248022027586228803618503393280 -32750183949763854999757309603741696 8576196394277634663933766275170304 1923907135605041812759967824871424 -822929882897566205001107217036869632 5437530042096725576854229219278848 3181600992070565355874632798830592 -223129747859541677855288012293799936 8623537345773002548272285326770176 9094670942976005384119823972171776 -854883396813088620420041668969889792 4639654115363386631114542584692736 1448124419695138035329024384827392 -602499661047406777445098694517981184 3120144112727141191826281737486336 5373565936931520841104101902123008 -662996525672224466872400814196916224 2426769308738578938480690250907648 5335832423243890807658665576759296 -211650948837828159116941788826304512 4485233858468083362365178443202560 463784106194527715602448947085312 -170452940179675845321180807035879424 6925138161664402399295057065672704 5866572685787022153856549889507328 -64239918296340255650078436284694528 2591782000175487597560444619849728 5594710503365113617968447635849216 -309669225316613457248387812277878784 618787925320820766324261654626304 3205911194152169527479044568776704 -242983172752770091516964079264595968 7334701277079381056486053469224960 9825910508621593943738926910930944 -703164808275508792970984787984515072 7638845935579616859111297608843264 7908374761185070968158895560720384 -932658184635531606319368096096190464 4285353207543265986419444502495232 5035340410658691734190970531479552 -643991250284348879283508131317940224 3822810399980309069552164473405440 9674834380542922634874285346258944 -940896669803855378060782918388678656 890456912267342995879572526858240 8351616534689874833859037886414848 -962888714457918923699540640915259392 7936276794567544849676802134638592 3099704231696640823921551836446720 -492917138083868276794060946106482688 5554403071469822401847011303227392 24736348029225720906445846740992 -700854665014669489649915548659613696 2379393674003084485171294054121472 1230607714006965377879581418061824 -153541051277514152409022478537457664 7202912069691435051283967914278912 353148328164368939360398048493568 -197986749143727333739374874049118208 6297139769093470761411140630085632 4656885604068189660073304705204224 -49293868925606042843489223957282816 1443757795619214262738117499813888 3297152119610943996828494931689472 -617439438436610635113128933611012096 343570853292153986139528944943104 2460338403153063051242782324686848 -347483987417832864627439802425278464 8160858195357851958672983922311168 785174468120567895807555060891648 -335393442161321880006025355406082048 2647135627018026109122800716349440 5324454699204486683932231913701376 -751064754464353767666900979790381056 246386216053589540369564975497216 7753412302825803321015794017501184 -101156249549803661817425247671943168 6092954823885942110800601140953088 1522141479578734532343161285509120 -401361517733730350339413465112772608 8808933107058772953323245886504960 2192866018100688593278199442440192 -528935476013106493842915954192809984 154509115612839475593115009548288 1025073788541735968066451284164608 -394902266495153782644340682116825088 7986941083985216310347777102053376 472266062845158741719835874426880 -409787109972634791133019542145466368 4867105317934647189916785649385472 6791252766280565908611190006743040 -641331855357219760812140702484922368 2834338743227288607280192894795776 2093636207711053370734010246889472 -924370133365197465761151548913614848 5482360845026613266101014108307456 4590001172022834528027037306716160 -442632058158899476111739037541203968 6142167985292426354521178604830720 316268523247866983671447037149184 -95143760009318817936600430528167936 9988464856779800403412021483143168 6419500032890843784364330022076416 -991114194718505234516759250743590912 3757506256263753063919524843094016 5511507761400023780595966410752000 -754294546469810478429171011226173440 6562663780559526619024552737374208 5581184569678027396911855927558144 -48231749375848798629864038058688512 4072343113055598302944363934646272 4839619460306617097528173628751872 -229256862543985843175619230691229696 5153389960453020402204623841001472 2708873086815887212765546022961152 -27838677256775412321285318968868864 9142091671738847021299071048482816 772009833101506174101139086114816 -90921012286216897000087916464046080 2738050219430764387853748729282560 7390834937427314171495539114246144 -850606874986883194139778124099878912 6283035389581072255343762404802560 5799462413683346258134198684483584 -874435888927983939392269815698685952 1976209310474482525513542132563968 7408457789089239063284337206099968 -847544202183698347933677992477196288 4209150620514849383953105841815552 224619858733310638137007914614784 -140000158491583267452253525524873216 8337581787173321650039610578829312 931931394898742320851862417309696 -274394781780702609381012619703353344 6788879250658167628042960638050304 6465161630709015598352738589605888 -184157963636086252091456674901000192 7414595162962959755084562733989888 4683241935665028140807840799391744 -167772041808412988310755518439227392 2594097323075095488187398073876480 7261892908028366589423279979626496 -658713753639612992646056967676100608 1968313547103456856812434415943680 41946494733849587746694494158848 -766635527400882879045947239425900544 7866587799464294001479969664925696 6508106308410900813316792120246272 -995400842589745040012633562478018560 3944470106687436518429515900256256 5534385547870216567876644990091264 -566882513248787133269481440577323008 6189519309185873343754482265096192 8148952160752068981688276139114496 -998718706077609923726600302611136512 7601260314528052949936116707885056 9791915288179165084870951881932800 -866760491434145050012170392401084416 850882695859081370979029080866816 2057025309140451958573238539255808 -734266395452773552703239429900206080 5865367760499080788775004230647808 8713944487582948748772361937879040 -785856573811583425716076810900340736 5562535391195326947981144367300608 9903002255288120281566649132253184 -667229831283617091305512768836206592 2178203035002160688659789986660352 5011937547979584380953879023452160 -630613251064483341086996349419782144 307197987865932645872270045085696 8728563231664716770658119067893760 -204721115744471604481443594938351616 7652076836203374177207920873177088 9498176885513513578439954250334208 -973553192089966269222906474038034432 2300779323670453548201641489989632 3276780320216506977507258518208512 -654917529484831096174844959757697024 3920669281750805517140366576320512 1891346610371521151517911056121856 -516447447928301765197880823759503360 533020314312816543001798571458560 6204144666381897826753200428941312 -885414116878276388771893882419937280 322087664585158008662244739514368 4227288938957849852292403833077760 -595259901034290382016514241016627200 2081040875708012199954352797908992 9634045118150380930716430587920384 -288568120989865769929688961083506688 7399218680687726728087880643641344 8265413481369385096463528079917056 -33535289323340571889017909864824832 6042154033558878929963210319593472 5162363360081153479484993431404544 -614394309203376617707803933350559744 3800350639028455261173031723073536 3023246824062047153710116861116416 -1494227169434643351576937444147200 7984256050138232000707573734965248 5693565277745704711928566243131392 -991237225434493237575167358139367424 3061186369457326008110313614868480 2101907028613998437218103811112960 -109906955401078135660216332884901888 6868012592220222635431191587586048 7230008232941970572805940302577664 -615001596550162526286871804600385536 7278776198208800841271250528501760 8237934899920488334000368501391360 -176315305233615283262596462743126016 3487377675117117871510809953173504 7368980016137996888326369645166592 -497565641839429772584141873246896128 2949461586414476230970985251078144 6790791240140422345965246556930048 -668046668426901528430836499259326464 5515586772835096216386941038362624 7264882710295382973654022888620032 -285191698173372047067539626254139392 2659335968657825282147766528638976 635317180646729327129496869928960 -931124479393968283473746149429477376 9686549637409330379762867604815872 489950931082331986430892240273408 -227166665331650872880557550437662720 5817790120615542679724866284814336 2200845393353084765321979779612672 -27075078247599539451662054568493056 1595592615203101931665699123494912 1489541824025105487702585325387776 -782157349795003600659644775049199616 3533837845365218293449280398032896 6074982544110864673969956756389888 -691504216012520547681649388322553856 9609013534351677237402394100236288 9599946922571575703184718228881408 -625343453168329956739142095535603712 4721081889181347313783258096861184 1779599436923978413793698025308160 -420209023538613475367637479074037760 9635160233014235959766465332117504 5104448328888011191111077981061120 -229135080422054810704103717554094080 7639321492204079713581765933137920 874515965500530625333578245865472 -577736144136479428059447185916297216 6354390774752177727090703940452352 5627442183672231997434652581167104 -156477208723773873184509825791295488 7792784801124495372979359090475008 6442710545947915203877409495449600 -573508778649088248666291067429060608 2663125048017191650554397528686592 986682363375079948995385274400768 -626475280029085233883684264076115968 6206517583352062260522157716013056 9113814109549300772931977940566016 -966467884030528613419322382739308544 6448979625252337667440375440080896 4772765137044327571674326844309504 -15003596742071440671919759251472384 1582828997218954396334328190599168 5439385605736975197775552921468928 -365077158424802178712031983734620160 6682708242473107236222318153826304 4999625657814446874907808318357504 -243737084925382168056269005800865792 3452197399253637291729537564934144 9804906780222214665672499000246272 -405438470732232018386235511220994048 54417644686438626325789119873024 8775576433236165598359024509648896 -765555431828046405508393698716549120 1663078829081190476878291369197568 6466595788625923423890902479798272 -586361054621105101468259418944569344 1850396955299706846121409436975104 1754070777972975329670542483521536 -959075202369987593700168235994841088 7815802763456580543553944621678592 1387078949703383959463794986450944 -281408016136451532953128924203712512 8514752985155435725532600222089216 9146785179966661456026421539373056 -40200368180985416804163587594518528 1069297020855111840805169934630912 2737663894496833557717384691712000 -102002456225699292569552133965217792 3182126986254503061075463287865344 3362873875878501581025387401445376 -605700106530704047142009106480496640 8822771562880991245594382166917120 3765614294379113214243860492845056 -569842787583714229951699147072471040 8599521218942350834787216567304192 7639906130467284701452721390092288 -657096218357345028836540261758664704 1013764460804567674754859098177536 9612825693360107244401370834403328 -28919088271771862320712852806041600 8487182131052467761653962575446016 5047916115339346939165761542815744 -173575029242659544930071869340516352 4323550901546731997915737059491840 7735913145072912072132024575459328 -142447102945467941663982595512205312 9401382420032426755989324613812224 9225648365675354238149418863820800 -819587947306609765326659367418724352 4921509394253686287653463727800320 1240304824100275808272852537311232 -441717865094624232053516002811445248 1837136107158477760916501924151296 9653735289375351816094725768740864 -880569311778993055439486553432260608 6345512024072576084329369647972352 8567050078955929679047901346529280 -325719752140743743217533783134699520 9555842689886132466982899513556992 3252123813868400775926192573251584 -433037702335848590629410774074785792 6279396520844410046283384872763392 5592418573332529475712416854573056 -856713237187425672001537213336649728 5120975218680900756291915492622336 176314827327266771331789560479744 -496598602608869055568991292611362816 1717099078033010672648665494978560 9578392965924496869923130909392896 -690668915947425992498753223174127616 1554271533057901945937835061149696 8282643975320883119090998995582976 -918630203557828994055460239376908288 4540113205821325621433965582745600 8956304492240549308451620739088384 -96428001993778884875302437855952896 6621461290811461253651061373140992 6699943416891852309902918974177280 -450432873461474123215219309200539648 5775084334121044076839623832109056 5596369259541904109143769655279616 -43139440104028947240381487811395584 1186219040229686074881265205510144 8671489802248156722525095491272704 -38307301643466602645060907140382720 3633976897124239692415536384180224 8855672373418369979605683795918848 -807411996612627608325579737850183680 9182534789526280477011715916038144 2386793898912831631161905119232 -141088220588237323064677635597533184 1702688150854154512824898953412608 9395035126185952511245246999298048 -578564599600818583800121755137212416 1254363265336176599241510503841792 5750835227587252977537965795311616 -316228521981182094900389887948619776 6607960642645066623468342259744768 7900225723067028574253052445327360 -724380646782097669583072081211293696 9082202081778153474078253405700096 4601741872623113543885908483244032 -142027176155928837437100221723049984 3572348632528350094549548085018624 9522791215921358291231091250429952 -989429804486269487737928132721639424 4586105100280710735367832269225984 631794487095461374784710431997952 -515574656765576206647224995466444800 3544057974695771628564612315611136 9572521976254674608689651900219392 -820315058300632109333166841447579648 9488500472669979532596724233142272 3705297359563127634664058196590592 -467025436594072825505565522440224768 6712025644594424902496575322849280 5249727531110626668542398597955584 -98055007581110655663523590123290624 6038920562920268056872539633221632 9122921202510547594697611338055680 -759693464422204694251928254551162880 8433550055194273816469887833341952 1836315084411838548487322539655168 -144189309665863656673019026227593216 8997399428818490166954304733184000 2835321377480547418970744686641152 -182697923589827809359142097361305600 8164827821249441649224058023182336 967758515942187913235056283353088 -812876264353739377453345650405015552 4022826699856338970676936570830848 3376342057437835805578966163521536 -404414428859628037723631311713730560 8993353912476316777655814001262592 4624025752091940671185739042521088 -624444863604555968300355878245105664 820948993279292798648764168404992 1544315959690228273737418252746752 -535333364022415625722424217168773120 795539369292950855000482251800576 1943154840040136694816980084981760 -826428590059439776823850946021818368 9614971050937546149756766049533952 653980500124560894566363354365952 -468828631906089946866427576901959680 6294431988734063899210914679750656 2941856140458787560513397290172416 -666163951061000353708902675510198272 1291994856948555594884614904086528 9277740196843265498331262010523648 -176434460720846819156081807003222016 5693305463610306439469427205341184 8403390061199686578928373530099712 -922085960411590374202047148532432896 3823895267922581132998754185510912 8521383039304467009075293404004352 -497175568721225340715945399026712576 8865212920789689045685147843690496 6637093332087823476846956814270464 -106484893701862047139427508312604672 3034938388813306772541408238632960 7128484483094460795550144007241728 -865386362434269430617393750849093632 326746624658949723360368802136064 5059172842535181046970897225744384 -886558250005340035987789504957120512 7498620874135544820386461414064128 8280901324880860817157772344819712 -269747342292980602196240404995637248 8978413446590510945156241972789248 3614125148125178230621902708146176 -195605660087472085151456111244607488 6703124010712095143356212776534016 4422426069272365638000322939977728 -460356027509287066270684625915346944 8147562289398300414164095400411136 6520147560686079725824447849955328 -538412625003334491784516695631069184 7929298109008130735887920454959104 7568539978401228734601292052168704 -427623968043802468444854396647374848 9622986649028415535679432546058240 9270270435175521027524823565205504 -910521212008323918310798919401996288 1783596347000109590771001892798464 2493255758607733193216043593498624 -132118627131346717789783042698510336 7488458228364735120867592710914048 1807930284242617038516553489842176 -717587734957698547101483314914000896 7420886844536463705507105186250752 8569424934677925499783854510047232 -203182062783380153206230875044315136 1469148321866144975329728623804416 8533621485830950660083907209199616 -402077385509539420587874139877933056 2007907862109261451809311109939200 3507473978178478581233269195407360 -529693258039136389553502424607490048 215978746701216055763617382924288 695046093942091141929158735560704 -836865748583123451254188552822456320 1946956235206027771625803693948928 7788410013574532300919905286356992 -786355747537892368161671713975697408 8644426825529170030801799908163584 9278593633993973542180471858790400 -632562027634544021923139983304032256 2136086843515148555290305579974656 3662541000423049539473268445020160 -174953165052429375342929865204563968 2882001861622357497329023996395520 3683126859913072055255260133851136 -665991393653239928549551969524514816 1597546003841523058767727066873856 5410889950943394196493652983808000 -550279631304653758854122892060262400 8855789968534057874621186409758720 5309831951690187670662558838161408 -210824906221112655389925178410532864 3765710228171834438121156593582080 5109235248766545781589405337649152 -970000038829908892822876436356399104 7611473443956504215183531198906368 6276498925214616883985814044803072 -644774201046851607356990914755035136 9773799133014402579358888780365824 2825681224416417454340075813863424 -732369202494643946219975199449677824 1028239334153265853305926165987328 2565251345164433073169572082745344 -324451365923706988500910031329296384 6262556970777872203398482977882112 9282645221501787939272628675543040 -978620923344847018535219457742077952 8511915840323052191436565905408000 6234209547861823848090840183341056 -356706282186116556092203380944928768 4055572138871368742416484799610880 99905949180431590871621328437248 -891116892660621821180344150672801792 4663701118447972614934027692933120 5173621002199596279316450480488448 -110002598519213657013943067312390144 5929679181550358225177598490574848 2728240203846250834660058525073408 -186221488330702220460020386274213888 9559363122310367238252487426179072 8138131322568586090563573701935104 -143612468234626401295693414926385152 3055179924230214602536026948763648 372473243230968839880011025481728 -229522592551452261443527128215715840 9252955003056906178513381602885632 7751950174532401525256925460037632 -550607276315879402196838431749832704 543728385143614391313046721003520 1572989910650436834515238281805824 -668644484088619938865377311333548032 6584968500073260409789168257859584 6726209850524880053003218300436480 -232247942861938182827602253440876544 4517456038753777683588054461186048 9490189409751508468657699118120960 -600537971701590570092526584100552704 347400356973059563114219308056576 2922470175942542887956283037581312 -43279702622623728219382497446723584 4717383143724219030442852378214400 8443756150988098600689369413058560 -79413495941723805733401753175457792 9007748072112052198109333763915776 9447010439874593373648201680158720 -596214730309454411251817914229063680 8590149453402582836355311205351424 4946317446667482854511856328900608 -244204083373241752479689228857376768 9738297493058818450177649918607360 8403254625561074663846422113157120 -277700634514494064873105646856175616 19526650043435346745955253747712 6431631376523759121187462233194496 -395851595769594948796077312099483648 2783357489251111712899920398647296 9579441090602557264752711682752512 -610717575458298407825653188626743296 5030708791629049098108449195032576 8188006830168441018646025488826368 -825790008450894054598923102632017920 9351083701439300059045072522444800 6909046204519701130928303024111616 -690187500637628337221141247658295296 1707625873902801673777073291788288 4008413049432532580433873493557248 -501728916562318255842084001805238272 4399246708746262631182956348047360 9971797488668498862061919227871232 -752474822785417752380879205306466304 1604130170312850449711127009951744 9497183551830359435033220963368960 -858852460087828381946047636927676416 8185365502702822942201352256749568 8298872689733328409040590756380672 -948679991071938617994599502540963840 4422764147100396853856853464973312 3663106132636121121296988774596608 -731902501243959074438113770950623232 5268605480104373862454650975813632 4741246494900396610719539760463872 -367194345891827854525872750163132416 4242988753308923477995728760995840 4314195337026179569117772073926656 -256479449058508886892642491149844480 8307423450996921475788649619521536 7905599660555642256463236379443200 -251571609182539756313536438682517504 7997158054132392067611823970451456 2143601883446926878449188311400448 -573773297482859313029484086290284544 203308953335124383167056413982720 8193822844606670071743687453310976 -760952174682448012218202531938959360 3182279877076403453678668952371200 1164854921824080174162392542871552 -465621767535406346051087583217188864 9692418666804443102526673961091072 5418103668521006149599380478361600 -341923359938188846073703551469617152 8576962292892726538907775022399488 8700955612774661292502804919746560 -303897543954288660958537605575606272 8559243174301438760748605375512576 5924670159374449092684591036104704 -836575556029423023665981787497037824 8701496116427098481200988529098752 1573460981805774058710866220548096 -294742898662036268091309509239111680 6231424902217202051306248816558080 218283069318606989681496531402752 -544423288115458156122406368787300352 8544847700589609041518648929288192 1480500789460777790865058362818560 -983999305810035117665280270067040256 5656982077931180226471376311025664 561605094942726049753873759862784 -936817123916200172014205723782152192 7728661268801421415207461753716736 6610552709936998584140084340064256 -248242669937697821763263448429363200 6508388839982807984951836559802368 7876162492783739264442556487827456 -74827300682424784640510633669820416 4641506387786566750445235387498496 3254155137719426535781820218212352 -241786321205483647539111809398079488 3644376949759492786459027867435008 5923794555893090368172307014221824 -260696299132790181167149603023224832 512435171694866995364930611314688 3857040819811354177801671795539968 -646219452963405638929485540320346112 5791471522379608963241227424104448 837228814576906388077322921050112 -811924598131882258881189489256955904 2083311859841486952515203999203328 6273040523179483412147166685167616 -371323029873312357233891425644445696 9455022141991335704891543538106368 3603108580114652554066308129357824 -411578250370457341699656184837963776 7747092242565078181350399908249600 9888194741288065653105393804509184 -102194646633787970245341963656101888 7084683784739637893815438260830208 5931401096351459317907269168922624 -185401226817034528418107864939233280 3725394164579760788997050422263808 4648975269868431897854454611836928 -730222030400600863609580820015087616 9471233269186802322962792111407104 5721649087249185107061218335522816 -78628352232977288623426336301514752 2365426269727643674402747804811264 5528944719945185253774346984357888 -631311451054418189519547425483653120 6769613854600106314003366987956224 9309567983969739008315571270844416 -354392281331633871727269621914402816 1682727046991727475492687833989120 2153199816076828120383684394090496 -502036300128384275414431736128339968 6118937258470385705516941596164096 5756497505350229031638227572752384 -662441468017314292935384082277203968 1684603613390690547476456217247744 4970260082313100472987008907608064 -460091985144088884154397122814279680 7554328968718627543697780121796608 5890357977425930976707671582834688 -617928323871727734245382826103930880 2528236539099533493230743756734464 6772753594265210621201676847022080 -810952717400577481901250802196938752 397959405470710067752013775503360 2754911651841897022810947588194304 -466661185946853097656058191191998464 9253975246346405341552488489156608 1784260321935750514505174709436416 -959501872699486739605927170200829952 1362605779149298425237646209974272 7013059721953284519921259009540096 -143898806419886688287103798487285760 7079514504970560801658969079676928 2837491096498826457980154851360768 -425613344875882755462710630920749056 935517213341791347501805336526848 8158903075175373177877487515860992 -754571119912840070853821148560359424 9489889232654801580038256911712256 2797010369675153803840459496226816 -72214568741071307018442204090728448 5262187496544315756867121445863424 3860785420661871432330364802039808 -364223693710139755865712055690461184 7067829986219569391233026448424960 4565310565824771150404041423454208 -837374631081380441732443600305782784 6965233145340111829292386598518784 7446533818527642244124171340611584 -430228392248719280307205612251381760 7668721050939742930714643033751552 8336579941617426702486948471111680 -396367314733261013243362331248820224 9910357802045179673839198946721792 7047453679833129166595025176363008 -297708523171563164843388248088641536 6802441157086183559277973963014144 9060909564956330146581888181993472 -452153158084645597721078728421801984 8188438875409657331316996286971904 331373346856332701032774589480960 -953045361721115396431950466804350976 9431713269696502819102835523715072 4371731377928328764431109262934016 -912428532696427969949658149610848256 3712581421508032644159061926871040 1362169948444766524281010633310208 -554008938249038634097415024004825088 2425946049440197198142046287691776 4418662591704063976312356909088768 -619819097782211304908027298096087040 7781356975714669049469221090623488 8376243933113045294789900686589952 -74703822638202981640813501254467584 9944304344099894634614259466633216 4449486766393854651730304998309888 -248075401824111133072156859886993408 2660451863358184938109689808289792 2529311938804897220979036444950528 -15055072698124529721709499468742656 4722298818662052182119606900490240 4742865500581967008424769882161152 -293911529795980974181388798721523712 4435158883124251453460133623889920 9423628980555898891428321980055552 -262369612998176717857161589494382592 9221101561936374081758288272162816 9553841807954812822891263330091008 -248390870000030742650104455440105472 4332343809898046621557365023965184 7120438938934330573420083554549760 -216429214734239857801885508100423680 4701916804926730646573466536378368 494327585262456705240653300236288 -831344094512168119811174358067445760 2091210912825382065254250533879808 3611713985077397512240176815931392 -717609331487540801271955878148308992 3839032304832165834939991540629504 6893170395122373181151662940618752 -383227119049330381224921692721119232 4413954440525845762295536396795904 9710562017165809167887965318283264 -307245567040298084620329632770555904 2110220234113192827200681694724096 6822229828739846564639513690243072 -917599815938038778175090775621107712 1724746739766313561031637970452480 4926759455200783751253983810813952 -351619219877965739462663746225176576 8631950619082925246438136235425792 9666657259933366964581229525991424 -559929491058904380574664191920570368 9084350802694328955109988737482752 4679082408567530400182773414363136 -906236167438861838445488887864229888 5704189793554738712337792238616576 2140425371285709851980207453372416 -72093618100370139037712923043561472 8328393147011400470583710809325568 8104285775456860154262969315753984 -194907062609699214736145000374992896 5592619522367035226871101990633472 2382793370598717199628298734272512 -100790655842814756583788005868699648 9823582856101609262892227024125952 2240864326916817003270824548892672 -909032396984063245916292288457211904 8519595168908233629277933956759552 6152169774817831941734304285982720 -837732768928283078713457587288801280 357921529172348181350163436011520 4284666280335640572443740436692992 -444196884985907261922588627587563520 9521239335511684287017738716577792 1799914788953533625763176204206080 -881164128623437463898575969806450688 8489070043079939387434515361169408 3440873428566065507358851509256192 -861271840737405995932858795077664768 1794313422501685704865331663601664 1802923693616575889936566257188864 -943674779324805512727567545554436096 8422002643713932601542875331690496 3550475428672856584671015034945536 -50940465343020930791457921928527872 5369937798304869692309348189995008 7050186827148128314982427917287424 -954885650177729604168901089896169472 3300251325891907983505223556530176 5919551793096617783859986802147328 -630029078598955554192135569163681792 5324945010894363976947393745649664 7591425283595057089018924177031168 -673306258392601805362758573436698624 6449472741466076759536336214425600 8028897225086833064405822588583936 -229159392067098108577642254950203392 602782990942611428634998058516480 6019960480283264682735610544259072 -603746799762047637456417235826376704 7844073325744027027896129516732416 5481789818175561851741850451312640 -375278831649786054150140973113409536 5523467557066667184234177815904256 3060749433488674752124965456183296 -888103449961906843686140704513327104 5084874622939319129302561378533376 5273889080638337318223522648031232 -168584599800279490024478908442738688 4454971888591051005301332956413952 3702701112311005236732434323603456 -888202497055305133057008687061663744 8766499645504321634381386116759552 202273893619977234814144270565376 -863046488498274713915188053528281088 9266892074475241697241082110148608 5082093527922534159203871274041344 -425524486697820906901358414080770048 7975629189612077409160612622106624 1368913454534242194407968563265536 -922304317728486126145301088022036480 6416904717427596895725053685006336 7202615879160994066164672393904128 -311913185927501467140398800361750528 8382426786353749001235547801255936 2927492060374213813294874564231168 -917725074565560939587012668241739776 373101029060665068178173329408000 6271976532067060905768739737174016 -302179410716988008608364160075431936 9768590256306676045435102631559168 3758267526614589462049513573187584 -612220165404563970111017296221700096 7949157043594189561089946042761216 5419656668008650149507118659534848 -720041762014027225054895651111829504 5112932268784443288059901919625216 6345727246135899905759566941388800 -402333461190660629521750149941952512 6754921671536295194856051261308928 302171670168130402656521461694464 -773787757275924635264294547141689344 34276611414486515990929805934592 5332402608707954045271346279088128 -448170707410776902926007998447878144 698055644803748213450220530302976 3145660147310270215544566034989056 -399608345977179149353055583758974976 4440872869477043812826354517278720 160597329062251017919952265936896 -79931540812775380160693752261771264 1708777659909196397442013178363904 4835117887285288824134771132071936 -859601159636606211778073636989042688 6809078065289775501205070262829056 1117088255663904310041839140864000 -432448757064829243824844156646195200 6835457933996980237162855863943168 1538246593726698034274761879584768 -24308131584124242405106593571012608 9187067602618296953017538720038912 8562840602440378315176579411476480 -59336318931683226752461651182616576 3266283730479685172707539032211456 378738868604516743636943261138944 -663781538265028747756503151702704128 8132528546947881949792493157482496 5860526117090694533801383391395840 -429810174122024222141331306478305280 1907267880665366394042759082147840 266567019739439779577705726476288 -584323236156637175554716272986947584 7487356915254544904792493285965824 8362082288010116826842053503614976 -668186629913246353866022321496522752 7997261594188474413150304076824576 9570795520729041287797182451154944 -659370932045918838867701098711351296 5778389007189951484057122412429312 3763618513435417558649353732620288 -657596877764591417970184549486821376 5412609188597711773802210749579264 8273630708581891316892942169276416 -349536775883151307190021702408994816 1384122711598520977975405906493440 7789615922854343055345917582376960 -732791436321128296414630513720950784 1131565020218053491472254728404992 1314651896639024672610087692402688 -192136132146781251707080892229877760 8287917931090276487442598583074816 658794220702827654684215772971008 -210664383027489994691422942463524864 1581676130523730898748815630663680 9445012282636437484950137690128384 -599781139387502940174265975331356672 6287564612207896869685219163111424 8888191749749251097412741837619200 -714860044024981088980062258145001472 3174886440349456504077359993847808 7556547310869213306451394107015168 -350428389730227493940016581017862144 1192923537271304624330642571657216 3437617479983040442614707971424256 -324961105048197729140076236987432960 4206891474807915170449044960968704 7276199054800915254183164091826176 -944991963498119953609771752911536128 2224294780751273385574458795753472 2335339080726132283469151747440640 -884703961189742667346752462724792320 8648119010075038038924372907917312 562379863142491044532620728729600 -194751191985396200407956238259716096 9818155507555041327944631878418432 904765383131360031303527829602304 -759323628663640245351928771546972160 8548655191496428536695140862918656 2836009153593937004254977952055296 -182469110215568022235014599687536640 9823177433428269363427013331779584 1496373243228391487655591310000128 -453053181499085386024305772185255936 6083202341011752778958901665071104 6163722706357960557628170071703552 -670301071600052040495476557022756864 881908006872473292764016948543488 4768077755237559589707096216567808 -156552478151247936904810267760656384 7249378326523227467464845742309376 6942664004949600711345031889289216 -389000542964721557078121251797467136 2563665156092828390318446267596800 3439243582263672582994337707589632 -714803830228726797808372786474778624 4227072120436571001131290148732928 9323632336709886160855322582843392 -541120806381515281790162258995707904 7857707033254575645900252030959616 9889091543974475368506073049726976 -569731769916611585159756687628828672 7614251197157429031726301052928000 2859574774485339269004439769317376 -704109518100721040554463202260287488 732899727939823576928196573003776 3057449783180891906118180872912896 -869133132587867062846838836824113152 3182571655863592569460176875159552 1427527550765659904927282273189888 -24679342302804342549869740376981504 7328979982263138716401117272473600 5261046191998601250050488039112704 -264167949479272477610528555464130560 9681536352390126389555187662454784 1239691013499489751895465395224576 -787827317874316695189041061656788992 2165741212095550340877692910436352 8602276917927633900539878823690240 -328467968435445215927100447223971840 904727617486139769180872341716992 9876208703736570621030721545830400 -203093324071358243549103521120911360 5245997947788706777793270263054336 5887969593174891191061488045391872 -623308731821923454830427943850737664 6828598533655757732473293003292672 726893092371201940697082918600704 -740012533906175123920948455081508864 1840820980188483935175648791756800 5794247673017752737920650015932416 -362132063722206597245775721074262016 6368355331458001588694602301308928 7633219625900956298649045324267520 -442711434831607877837246107079409664 385454545508423476758477570834432 9622870831554951721125205866708992 -319841185966750494606960025189482496 3643504431735639608243233017036800 2254772824649807029673622362914816 -526561539489875544908864992145571840 4495420371433488261764532823654400 8248397484900114595624581217648640 -303956729112417734825861404294119424 140964076477317953392964108550144 2728012406565633826810893652983808 -357454120968649193330968910163345408 7914826173821184752442621426663424 3304179618644175497363971647733760 -81725219044276747477105510717587456 1290485669696480554402801476698112 1883257600926313696659922065817600 -961143236563142447691315094988259328 9918375440241457794840269451952128 1799255680170038505387121598005248 -628270127424296570567169684203896832 1332841628924343311339091532972032 2039769056788909318453002260971520 -313200767781595145621509592634621952 9428611902037881284584961552154624 4287407549683121045464771714875392 -503874631345631349923015387384905728 4877350252353494940494372437753856 7306766583695924541422280651046912 -999166201261079837587120015924002816 6669681385654589072200941141229568 9322454228987940900375566638645248 -874999736773114736059852446830166016 6783444659664997691858956176064512 9716457067424149433379408201121792 -832695009415190141081037725002366976 2628307779394699962072748068438016 5020734013063563572796096031752192 -64502648876660595700370388371374080 5134767565803785882108163476422656 6877281164654399438561860755914752 -983453214696475984947554102630416384 8823480975742060091442819705602048 5008961002465204062082184897363968 -624136317469863259454250717431201792 1971932747076176278154531735339008 4092819169378190491834016107331584 -446539091729306599293328985662947328 5885791391359785001290266241400832 8494608751258550823218109055238144 -204696780334428001423138302025793536 6288965503762557821737479499153408 5854663769879095510704169519415296 -562050725050998072387772995162079232 7801444002328842729166288665444352 7382126796820284093415851827396608 -426474210395156596184465265083285504 8212489051491472110114191813115904 9829207191691706761915372073385984 -800947399644398873299716118140682240 3353307227813258081452564684996608 4795127519697876008825706103439360 -960989768981760281996149379213295616 8070669017326646396610743239704576 9600541541788402276498098991661056 -212076287292264917332933517120634880 3420540214490710141432880812785664 9522989233054922806727786807427072 -371413650534365601524243173260394496 6381702912274839262701911420174336 8646596784039539742108376499224576 -879565692827574151116324755166199808 3004198895932278316248000117080064 996416426992788787345408181403648 -930061161700421885980433761804746752 3901712382872470590193238596911104 7205019928743447377527477108736000 -799158972516577890941876219332788224 3072502695492394584354874235813888 4760380642989061651931058283741184 -689871895520815222852659985399152640 1999258901269302141468948748566528 6399396878827338016397068462981120 -706987767818311642282135321369903104 1768713960273869963983206635012096 6876292373299979022022499079553024 -986440328545162854190957036470009856 1960352083047440848019921806819328 2693528208428099779423802019020800 -132918773656098344384363809879359488 6382834076205539555466179843719168 4980042635581213324556187568439296 -335556563154241126836918078752686080 9901259641633039720315295677546496 2012044272616766992351366989479936 -789712013339901219027003796355022848 9376084976956188176735274721607680 8393028816509342452075801840975872 -451671012354413361929049261488472064 3198519366092827326030504530018304 5250071230352018598251924415315968 -769987462060942627441320983565172736 1114791936859158822003468589334528 708758098877798411527380904443904 -86254910210165764764811602555830272 5913115020358496790412148583956480 7866374723360576741442176419889152 -876362325357602221481070904884592640 5413098177054257767454922653040640 4789581963569533962015406286700544 -740848222569213173478227212136087552 8236093976178230350993427840106496 6840152175963132583803911267155968 -898934977025905499449170227057655808 5069709861250154259266455136632832 5142195679666035982621304074272768 -479450462412410473027396895764381696 2076276390728139245119034712129536 1023990087223816590244903789789184 -526100894138833290550086539256266752 3640424869643327539946268544466944 2085067741010642366646568473329664 -975716868021253156316142265438306304 9518884948308814263092315147993088 5427685060890225588426310617661440 -915778851474416292756622825584852992 8653403352056362882218687079645184 6643740041664959652357902558035968 -199054142647357259801870274335342592 7422974126006750564138443673174016 4866375745115804493333882516537344 -996171778618422565240595349583691776 6315537220136528352651753365176320 8529159208895954310747789031636992 -80768428694670286770946251700568064 9148228982648134757295839086903296 9881423378385318467604973440991232 -873709644380481921427290094095564800 6642833457523678897406963984891904 5008921667989734086785225273114624 -524539568512808212373398139760017408 9795289178828370924250098856624128 8610350041019801726359789247660032 -76645968074064808875191838068178944 2376871267938901203244174165409792 3393660171359845504248171645108224 -174109772402394461809479801624330240 2513634478073573950487594532864000 5588874513205791329781014297837568 -945286785931207555284020293177180160 6110430912751210526225620147372032 3411417135427048705913462011723776 -459057324502768210180552862658985984 1677743664996026865565543688044544 259694451633515605283987735445504 -514393017360839883328364693547909120 4025834342646280527895632889774080 8850046312389040550791125003141120 -562014312021244428514240005603852288 7913152822240370145489536363266048 3577865033185377890119442386386944 -614934916266386128883965952608174080 3644007544321049542848103485276160 8311838466422087945972469154709504 -4637259332684643115932776486928384 2379512962273688235645699853647872 7265796352646582231892915040288768 -393730105065631881235906128196403200 7977673736483211940911512048107520 5127668483657235944980324131274752 -225874149805912562534108091062943744 5189172417302719425441584090447872 994439421413302784872151678713856 -378816683051464262056946151620345856 3488119505434665384311355722432512 6273137250622561056523528993505280 -673955404629197572507019103499714560 260425278616433407510822896271360 5805292655052230125269703003734016 -789099140576834841812580659405783040 2155437070281927947156049700585472 3057000694119523594019428280303616 -233942643625685569292794491727511552 6408843366745124800013765263228928 4998640875997380003120279638245376 -631912004521270337302354795125800960 153205685239593431312575552815104 4917660134269116115431152664182784 -95425481810293795891606854425378816 1518081984955236595963393235484672 7031927122021294892445017841860608 -455931018693472704851567251650772992 1694213626991638024443757544341504 6342396455506802977164940432900096 -789767019942211857130649377874903040 4918296980024997135342760936603648 4655020377192908553293137549721600 -62089162955636290757428308655210496 9994333147779964456486224623828992 3517947500475888195244752386392064 -639616766332641458571062258062852096 561164031216880470346178085519360 9405365330304358981377564359000064 -350320931079589937065021676153995264 2848446469212163212826160404627456 5392378268123388744678391572070400 -409712039601807353792208998705922048 7076867164647123915448188948971520 4727362618019016348909036472631296 -321917080568108389660603773379149824 1686139658046118456920781052968960 779740656963901145383558375800832 -627041665098022485134344318735089664 5084718258267864930021832703082496 6200008490709869318428651155357696 -155817521929064353698219436739133440 149794778101556462360399924166656 7719423902705403791843178980573184 -835502452733329678824759067112636416 3942922946582365753169262661337088 1233279877889161824989077760376832 -61057278614878600800338567483097088 4292944228517763974842804395311104 127157164630525341068320879673344 -284757042000002296153076162327740416 6705064537094752460000023585751040 3954687793706685099723498421485568 -977414119503908899307537889948073984 3627196158024933086247402881417216 8722869893411121795353480597078016 -500818302444432968292506110380736512 611634571000898939733739397185536 7850414437914049374913633489780736 -211208002707811231158001728898465792 9812493191402923187379428671881216 6916147285330102692990756451254272 -582635141687020467712539372210356224 3961885916626340534988552118730752 1172363948898038822864039920533504 -857038010357308088715581050316652544 6981251566805811480512604462383104 3966829153629948508314396566487040 -319996033723327559209617663494979584 8217385068426802702745509117820928 2602901135011665594291767207788544 -595009309403718794624202379131617280 4323871267833117823148573044244480 3103399876278211998055974781845504 -354011396501360096250959373466075136 8942392416252018291727814015057920 4573559427604838693037835924013056 -821441029538135713939141695769673728 2997164705558294962538413064978432 6160905508170753146473276126527488 -755305036707252395774085447838334976 8035285654022093617845840499441664 5776303308363769014491027251134464 -470045224109582617134593587621658624 8045154869292355456268088020828160 5027453808567425683198925588135936 -642171220657563251015858204501344256 4661008691806212308695510421602304 259466622068581838555168945209344 -896188147501481781465298025360392192 4862289477420277109797816293654528 878543426402981776874038643130368 -427011950222030033705775216912760832 66884808072763004398234213810176 3923667064859379489826149658263552 -140330329221389664341393420784238592 2527416379072510533927647395708928 1897252799050594219919977866067968 -680647739358880480590030101261844480 1962263466168434496536308084637696 1906385819230520764751476430995456 -875875296261316491835564683195056128 1586179398304173644001932635799552 617430517521701111572480628097024 -923885788863770319941921450881974272 2701195809097551279910911154847744 9116963035069452684874105116164096 -239520459662623655764354042230210560 7890080289935003962122432279478272 3720104129063404122538765616939008 -986060563953011398321496339368640512 7965333820686169831531512166612992 3995565851851330327861964346228736 -924530687993971157256606284282593280 7112090879772177621874974308433920 2136313848749608911962720174080000 -702186403295751327548684583963721728 9094084289182682530508980566884352 3295744941973842234023918144847872 -345050904071642623600035784562835456 96412698138950567447920042311680 1884765408085449052956378187956224 -897008193253780997622162312866562048 9045543568642402138091746754560000 1644586036792820937579104502284288 -24196766879451342209063289152864256 6929898032193873688486165868445696 2252525093640640626132610396979200 -762140171484272849629732240848060416 8654631157494619645843421708419072 1014359244339400804988215510433792 -20866632716023416427508921849085952 4919973538335568983658838026616832 676695272024102866038547862781952 -537810420384184672384207476125335552 6269605073416332989398169816137728 4467265858402569329897489626562560 -600524641042875889057847950136311808 6878830053251115427910119325696000 2140666189035273520918143451529216 -548330728528793945264973738837803008 9244117359838387257273632262455296 2847495345201801310437646884929536 -683251075065761898801299968560726016 2023755318842870877273634344271872 8559608315292386224401036733317120 -996589887709235976913516499092635648 4278566131762725035229943680729088 3357863424615061017012920765120512 -655599356143592309331635190341042176 3027792398212241236327183518007296 1385418265536199427690558568529920 -959343904669720031279210368698679296 4549274383666846675726106112294912 5000583310451753554642396302540800 -515747596786069245147827897832046592 5794503247280944370377555179470848 8129957953689817562170901051473920 -649676825234042918590451932123365376 3382635795983010696659920366862336 9321389063542141223954043354742784 -658481028081430906003275608722767872 1298680322267608586916618251010048 8094466465110684993411108650876928 -959502182316695521290116870828982272 7404274815473511610413833147908096 1622938330701769816527942711246848 -969890083135833732804674459535409152 8318528850096279468493205206466560 7892178066679821966498126463238144 -356985838031051161515343548895985664 1185773323664296238961260553568256 5962190689154697601931610576388096 -881436144572731702215686536197832704 4659191101018958124322250379231232 6703274692609958324606566116884480 -742249351949001563602845616123674624 4607846222679094211097749987786752 8961074334566400570813123175383040 -357166657940059692013306371907780608 3306774286304608529909200692707328 678971856048061045640846035124224 -441765238555326540971944134498582528 4659069582301437281610058568826880 602080848155852134364997266440192 -808340520658087348890318948022616064 5018582043976070857953817229524992 2424560376517081331010447165358080 -611099998730172550322609435457880064 6410319434930708191697841254563840 8741008614060022894121742403371008 -385576209338526874596926533962563584 5740395920307227375423989133344768 7451778009412050168067011853156352 -787659462571335559392044157872635904 8310917873319366050699682483535872 5090761488200742232053156717527040 -941529087696620712152842623736872960 3712793169721803811833240816189440 5540572289376021547546869942452224 -751260444228225622142350548625522688 9736745023154148752672543154896896 4571364123661760035193530049626112 -909586157889460681907639447669702656 1988227433950018654825205372813312 9352064088379377843535573650767872 -131538460545321849957271487494750208 540520130956435204411637775728640 9620153584406844860054187819401216 -863009021935775732112945614390558720 47699442588117179500573052895232 2852343696817200471243881195765760 -671370716635539649343816612460888064 7121310614157247898302789290295296 9057451675637905889262102980329472 -647389526647490311689448850758565888 2384807002826775086349464230690816 1963905666666494215767955924320256 -307698145721535693359894024060665856 4312751710872364560802815766691840 3052684040984531307947076570054656 -493301039366529140366880833684897792 7204920904836605237891775105859584 6478930658690751024965492840333312 -113082722416513178556101319062454272 3089407972423413117761636861476864 6313572519602129423981231841738752 -955538214959757708153227224014651392 2507876630334632045939921371791360 5307640959740987338592214482681856 -103157863701191035586982098505826304 9856994574225069370388906109829120 5862459227551502544707906017689600 -974332555465796746368760491450302464 5372924335534308366531796796440576 9915954550994212634796242616975360 -52498572250392337706342374306742272 6800133989951590916047077537480704 1935775430745093436900595199901696 -657584728689620683111490114717483008 3003857717228688838263982211989504 7205177578259092519087971193847808 -11764741579415710023353309956407296 9074665382127606519721223180517376 3392912016570716247151872602800128 -654896482724021598641108701331587072 2279179666634766173433927498203136 4812160486261428783380648096169984 -146350873011644974118336951199203328 1769167579298330852032667306688512 3097234154397384692640835314909184 -930447568001606899680485874027462656 8862121732135222658763075677585408 1968818311402226977884298901716992 -306510188795144328738253026969518080 647520352989878559995490362982400 3055791854386987434748711276642304 -549975481187670730185553821799809024 9012375369990580084292632639963136 5709300605772207391239349995569152 -67436896468877308012493568586285056 4783059138242936327804357374377984 792426606855239316239167908741120 -313602599852146678097152738074820608 1004191634115284130600173569048576 2848450431203138246987791030288384 -478417641084680389245707534089584640 7203834277722573374729242344947712 419542815389015302002791843627008 -187423706307697711889016729423052800 7448927647664385603590393536970752 1919465958125718299062400364576768 -499341284242493541524922865784193024 4015328613152577833350279710375936 596282913732637053055010152120320 -503242232002787230150318805355593728 5985507135428574382127487431737344 8164364916620556154102440135753728 -189143783754459453639854096352542720 3203747067315347269365206119088128 1074881668914421481585740196347904 -754105900508017061592987348246724608 4524185611055898346382988131958784 7566208598725748934114229662777344 -718321222363925998020100315093663744 1872498702539794409066842741014528 8208000216401243522507040463257600 -501783066378135549763092690671501312 8330778999963200458135304956542976 2484860336582172726176851421036544 -259134804970461120955201892596580352 500506399733900628134034627624960 68845549668602039679563920834560 -483186328105342271213487678524751872 1159182779723122607219181556334592 5214920618019950726454021397151744 -41557557215673205370845027507372032 792502874936431190809963460034560 7703475125601194072552089386483712 -331599007784670820054463475341066240 6173579111575449295110181891342336 6030931231289543474567859264290816 -56270715861800835743319455904563200 5627123829863549590723608350556160 4432086462124968649974188762726400 -704655041810134256727418526620450816 2805385481238783927430131186925568 3078484407752882683777881372360704 -52736825104436995701130442355769344 6789754385916785813094507105746944 691930608259428652172607477514240 -138096972199176675025417477111676928 6171828996062998254605644150603776 2300241242410644748757079492132864 -741903079779932598366956345991626752 2558779513159777248364981804597248 12091582377254752998878598922240 -335171869800587865873825168936140800 9477587607429342700946893328875520 9332604635730511217343630197915648 -709617359989569496339656086667657216 4388589582086824853601134711930880 4836975102638898343292712700084224 -602055254846652183477145235730989056 9476233632038221976514260562345984 4798288036443454023685343434244096 -762605728876511434650555479043866624 9900054573549966202821561173409792 631620097664399441316295101906944 -556905111389305221848492950366978048 3656153963790381559174598037078016 1546833967825010038762047457460224 -16337838356737579507179652393205760 6345899590804942706661650149146624 7468121634084375209077751121182720 -775749261060196339541431606239559680 9286623560369071631487875021799424 2355973313094932927868347049050112 -922277128417148499099126923964448768 6525868678974663196494170502987776 9960010578015313366862017746436096 -803857431742224523582034162730663936 2321358754282906847814017854996480 2970601525632359563873097900621824 -589355517139195846604672797102833664 4011661043353493577687570365546496 2399977929326127919149879461412864 -366225817450190665897253385571139584 2486027777158541035115945641639936 5711074189325766871952753489346560 -390634615669519653033540508161409024 3886521253369586450731499612274688 9403761857920509609188857261064192 -233854931456205341252077251668738048 3224677304529692452421717849014272 4761400533223242499678985779150848 -96824652265775060634850348522012672 7518197640966456170838969555091456 809292662874012923269598509268992 -657325978378603619795091954711134208 6149403565295951835215080699461632 2614395603656795401785115265728512 -970104404967691883518956802876112896 1323794751925028220866359585669120 3260967864441611626524008916189184 -918993228300924149815370380419792896 5977446033395429959299378681217024 6990795511248400756800460966330368 -276482618890493665790841631801344000 3212486590788196549547997951688704 9651996852628048397806662519357440 -404749272248938783404180962233286656 6154007487173719043298593100267520 6995098867637412815883497321267200 -476279459762184474261305239525130240 7955142634962543662533774682357760 6886937402122106341378874666909696 -764970662208161515850864924341305344 7735626094299351976758362748485632 6261763942983022442214542748418048 -911494546680479511170923967425806336 4024828275688642068164565186641920 8828007240288455713765216411975680 -283990289132350248982147785444818944 2211907256493906788040402538594304 2779776691964989639866196684701696 -345650662562818284695465315564257280 4183827285556660738492669079060480 4575601674959796588154308674977792 -218252981108625273936840626299469824 294240052276012812057354073800704 3274792750293231149584134109659136 -775297246413224699934110329333612544 1322084380802970973469106719686656 4965118011554479887188450261073920 -725731200847511200236721186254356480 8886062961664397063431207688077312 6885738178078222004455294139105280 -575504232309898511643536065581547520 6877880993921449671174012054536192 6290029487165955699582664253112320 -523618279350987210204318465800536064 716053939337226027954565963317248 5456693193704335716307951167733760 -858646699479073041514848787137298432 4710007346417245785693510315278336 7486863399887321358867921801052160 -330553144715378251949837123114237952 4682231053154036835526953450602496 2861999217412832820648702543659008 -196325608888443627260550841192415232 9712252570623969210017208227332096 3113107667330951029461897220980736 -390126524167187448405992310805889024 5010642779983239452586807285252096 6797880752696489481587142263046144 -820368427245746830188483946123100160 4900569840754801345436104760754176 5482645218653390998975067629551616 -340844048156321885061724407662116864 7469805655863178332485832585248768 2327666682973793371099060458487808 -621400262670166479965544951924654080 8547002087413115640843761067491328 2372723032818706340771753334145024 -926241637263096552942935724441731072 2522120846467458142979461740494848 4962843544414213462672934348783616 -540214043262190556359734494834458624 2768197381849703255256112071442432 4825629114520628854656801456521216 -572065229715103387960954260230766592 2243876573395721726843144066039808 4156464487848698191276949964324864 -156891450416240879072002658615164928 8388729609400400490017186526527488 4512945329027982391206362161872896 -503351022528487432969497948064841728 8941480863156803742636834958606336 2776379773869714618407575380557824 -764922929129595108608224588462030848 9441968151336441979355309098926080 4534399928631580881103685844729856 -947267985136496473485136190295244800 4516144030490942927736874234544128 9141340274883228848367668620689408 -9160245758978809551229918734450688 8460737238539004518538578831081472 8005399352694853638668283411431424 -450055399811417927912580919360225280 8700754244667994434717405136551936 830902813580031530344164192419840 -989629800247086559013211113711992832 9214134441578882829495629636435968 105957138431986330257074186878976 -11546988316895712668536211878445056 5157523916439568011738963974815744 2576892859144064602946962295095296 -268713922430889872060013026052407296 1214637924986800162908451243032576 182480022677530654711488926711808 -56256141053976696956981944210423808 3522720692326627698459931087732736 4759253526984858143305068892389376 -494598463563584461152145855798575104 7700943470717527347773933174652928 4447257192177986537022038816587776 -218217917589047140767621233502060544 5001805026253905606188884264222720 324356768274620437778318600699904 -945416662932890728576729050041548800 3830392055519687289519901918625792 9541731577591424997597621025505280 -236592578822585732588236181937848320 503473988123884650577363323584512 662013726873966494856727192666112 -332659840549877751394895846040403968 5209773754835056945312892721299456 8225814885049817904242132191805440 -802985017977152413720250603781750784 3419236140971262223813291011997696 578050053799506636943070880333824 -319320897394251271103201706837540864 5559574819573707489216116991983616 1584301392056238047134733620477952 -4319378148881705068713908260306944 7842550032833550886055609651691520 2492326486261849201428880106192896 -450797779078533038962275819244748800 5285191789156425155902355990904832 6855693949354101819112125896851456 -474932391252516157284677543924858880 4277747325649150544990620331540480 1257326122660119748132282275201024 -992015579597959076492901211820785664 1763328672500136105509211540029440 6033218520848218386332751375630336 -365195100427943285345527338698276864 8383121256860302581068978383224832 4438595135694997603137219159130112 -622745017547806768943173462019538944 9534815154204177074082099524272128 4744772436622977977822385658658816 -596306916242051752811995934691950592 1763401234948709138444876379062272 3566744869863364423058913922908160 -510055858120594891494992253823221760 8793126763891074567355947689181184 1927424725116273274944567669424128 -941823065923508522028346469641093120 188074499738091827216356929961984 2116755929404580918015822997225472 -914101545529564468085506616990892032 1371758520296160196687663330230272 9592617388968715766342048926400512 -489253394859953211237704104862023680 8712100200501949578403062732554240 3238835977738341287684831914754048 -960993379523560678856032019323813888 6718406808111990625301726876401664 5437280119927008080956752459202560 -553979134578359241485263480580734976 111216363711255156624976815063040 1038643196827124540282470032998400 -561686806566243408050101536549765120 9523200950588578245852523371954176 8678601525628843213868189974790144 -625443254142227089076426031721611264 630252708911660074619533755678720 1426622725796139526153039052275712 -48579108358013100800222460456730624 8844140848291066376104116798619648 7855683941946849018140188120973312 -739422253390213663375015787563581440 7262362686630485936962891100979200 8481289495477729815731018351509504 -116275061514832274353772092568109056 7017073592966458664185535548882944 333631893911031698643276668076032 -280186304250156719791544279081418752 9715067068693303735117046039445504 8027668016584548110652915889209344 -199253176581133522466130717038346240 1849544661802261684917734358384640 9455810223803343348412395718443008 -684354381205312871751371089745281024 9006658324203783690638952776073216 2084442036727907443942175715360768 -375262913621933042500855410982912000 5923120727380907583807275680137216 2158607870437649157946103191044096 -543011113338776023738403599734013952 1156056620790057586135101930995712 2058756050636459787387630092550144 -778554597922717582041175815136215040 4570191602016446119937667252617216 890545683444156515212796088025088 -472083259875682562375150346646323200 6689665544590786861174348872417280 315558376648462063377952553304064 -187745867878245892942681002364370944 4777777636122200346376935076528128 7091574102776348320218693576425472 -86103541879446805455931303864041472 9050409619589795241717566166532096 9961612969710330218135262198759424 -404073348759013146040127322239008768 7876821857925589280308418324725760 5616266982154194095817106493800448 -406125204682306513922530544298491904 5082811986895932904602033478172672 1272064689252081768817745656283136 -10108007001868265517194128849371136 9118315340276748653864034827763712 6016627230476597912435865379930112 -539680170384050848712601270480797696 4334752082486443214420891263827968 3730134713295780440707122925142016 -222450301698445105290850950881214464 305033515682819475217864858796032 8727849812318708827275944727150592 -825729224740870561637992038462914560 8130962195458851701468233539256320 887171066765638545374691001892864 -825888476634920412793717921083817984 6702624224680483502510323049431040 6229789887306139695482992888643584 -999806824914678655848524236055379968 1442468213097800394949043326812160 7808179962066976939138928491888640 -884238020414639752603926559658606592 3531321292497461192678327730569216 1668031953393869333681028246536192 -235765548768630082293018816470319104 7236708086457267894504280094146560 8165164139905711335982388589101056 -282704716813091061094482845800333312 3598169922224718895368203881414656 5105560298382341012357757651648512 -663282358408832660034176031379161088 6635346773308035275160751207088128 2273916264447722113628976669786112 -399114797542584148332704658200985600 6908323714486069536354126440431616 758958132805549778770308863361024 -768425942593349792389617433222053888 72457562450123913959787680759808 9249491596731111849748600828461056 -99249519886169383197061057238532096 4693879172538897315580300985630720 7509902718033436278183498342203392 -57559676976281201923268959126159360 5453349508535159191152973118963712 181912158062269572068246621782016 -285837846828021165371593256882667520 8859842684277082726758255939289088 8410710149536728127167441332600832 -300300298372872097148141050942980096 8408201551331034517426183027556352 6569847762484051296071421700079616 -218483049527348401861532551856783360 6210036664915258686490426535313408 2540235997721673741657825813200896 -668512930324439239489154423973740544 8243122677172542032285603932930048 845140886425546951430943893618688 -325934069527654482553674815349194752 9407329785241840649157736281407488 2755900423277639633630700721143808 -805642820947470042703189601863860224 3184597537881328626253109751971840 3151733800692388776133796321820672 -57790154532744888960042094164967424 217059652652513445336546659008512 155017654613486811760847755411456 -82193642757843517762148894676877312 6579036592987482562068960382025728 8935146262747462814463893100822528 -505721135348297445042490117021761536 3509762119695332111524786700550144 9098713294029975759895351087071232 -230941587698693851330490709904982016 1396865745896117321792551412301824 9869536215840707987082135772069888 -916522109608085282381642320098361344 9986658927891429329832218976059392 6569523205476039993052631658397696 -297645804912105010938361910975791104 6241088658408544521260216273076224 2366549046110264981850044181250048 -155989678318847473694973676681691136 5988509839944697297294833288740864 8022136969924703241496959979094016 -718581486421151702089437072739794944 8966579042644427221197108402978816 7274074976259226536324895455838208 -36142522339038996269584260702142464 6339536521116241740425034586914816 7523638407531254874920878304395264 -175731894318736843585408495515598848 1778716598705039722504861515776000 4334501653704841939676230913622016 -402902615355205794378217081163218944 4762272627518319778266901555183616 6244218136186380613496649080111104 -207969343071662986671355318144860160 9763039774114167380838314095411200 1200227769935424001463331042885632 -835349865398505119764228706211463168 790168191834231017388913035575296 6695061728240750420656338335956992 -914373190820964562242990012717072384 501085959980574312791129626509312 1999968535151996225947715221061632 -79010101054699617043901672645984256 7762486725024630162866479692775424 241534926276438364601547719966720 -918508524341892389013189370417512448 6409178652258945664593606284935168 6152237603147951095051196764782592 -817175439772671568332163197068902400 7336137502729396592590958285029376 7879746832988671806246682359758848 -787319323292768332105512292305600512 6888462078177934020549462665986048 9988670211452732011776063345524736 -458948709878586340234657154717450240 4619231239763897905554909959290880 4758676944737290535810702109573120 -485679504616554676116365096442134528 7107595855296472508008007123075072 9182745751798721005641575398637568 -189004524928214094280452993261240320 8258051097424030133690344407040000 8972462229900936366523621056708608 -227409877772475903142140232985477120 9051004456775834335825436579201024 7647564930621322410358950854656000 -830148880156882030114132832108412928 8531029225145094742113182325669888 4194241738597811915849615659761664 -11740361383795945754033403660861440 2750655311365798158450612578025472 4031773572009358420539476830846976 -442072437025043214608004928828866560 2858363320570451973655315039125504 959255812891198763890596133208064 -572696762916363593359772857321652224 3217482346898240607140380072214528 7819911065449070142778252988514304 -484351157120569728577635566149959680 8182283004052960033388004508696576 8125724427347186693332201327558656 -990010309059710392499030968546361344 7813762996802070065184514999582720 7206030273962436869568729328910336 -553298501618439927027343767128506368 6263737008094411850259221553610752 506956696344453675794700309626880 -967213195554217156583882987954765824 5175581716167731610329834531586048 4101872720851992059366712979488768 -817698089827718470673953091240329216 2278193265388655765972667661811712 9630914702478843317055219373703168 -746954456108884810053222375488487424 2714360651324388896618675680837632 756139160028530428529225964191744 -869054772797673951174661380084072448 4355333898550594612413966558691328 8212809095402655925066043035222016 -444118448365114882000279508304789504 3656651143348667845396826838532096 1812478662916671767292914482282496 -173465755813563271854486700326649856 4689958367830150793230568722006016 7749027600339067795917725501489152 -67571957258991743779865275609907200 9758753077809873277342437819285504 4306941276405941417257368381554688 -952488895055607413141802130876661760 5725322597784417639639811541172224 6080164396044821081788049625448448 -153461783640687581643909302358900736 758049758812392198517292233916416 4287854726016161211987815542292480 -209502474313997463367027587035430912 1185537660709549631434136706088960 6002989312325746587386932568784896 -57734156658118750705474922495344640 1604582317204022738544646491734016 58714802532734996835175256555520 -869351453559468809647481232828661760 3176106352485880657310532606361600 2361657487016356144088835766091776 -759679243086774151064830706479792128 7331714692303559836448136368226304 2490986086946152970109313146159104 -561445586330075714313210314239246336 53452778834431203174036738670592 7217032268091816581849237640183808 -623762300700408924511231642615939072 9470639574049824901026259780239360 1618655955548592768774298109214720 -479657341879284183645205652142292992 350817273916503290529407402246144 6958173457581052681889877386592256 -960214243414324729120016704179535872 6866045817847885948836232143306752 1597250993749284967593582601961472 -228369163945775676156596911662432256 6880217146104526590666292840103936 1642475528221730124240718498103296 -415160860873495797811006936312709120 6109984023456642424893706634002432 7911514018813580060005528676335616 -264741273614677371994135669766094848 8736216462608386492841967734489088 579563095584155729243279181479936 -971405002648212370485152896287506432 5327724451145376330973626700398592 341294209356176361203146984259584 -763957984239554586740212233427484672 40827844660209096761868485132288 5750940846137883838776782125793280 -724392824532211683972192315560165376 3044382197980109694953923893264384 33276792150145168258570525868032 -55693293531315964792281849636323328 6777930420385626867669454917992448 3429090605832720381466743328997376 -271936010754285614004927454582407168 4873198979322173330546040957304832 5548405765999592462479110633947136 -39170173022759220516126477586006016 1504995582948689062685976830148608 2933163703572311941693768002961408 -786907484338285910757345328011149312 8903896984410736851136837060657152 6611247957227645225971068780412928 -234639426020063754561723339989057536 4914854507388655848552655723954176 510125916908485737371141085855744 -613111068921390075853506154036461568 9175932923722959143248730871824384 7480143757940028170785610264477696 -960884585323044817932950181397921792 1924032146642580454664639380193280 9546753389901425966546741817769984 -7537944571238285840070614204809216 2775170768370958665472983221403648 3456764299985959495973180868132864 -693452121081241737673980698834239488 6419752584660962249867451200176128 9430452448149532965265968279322624 -266389838471749337398889256732065792 8026212805310134164474384904880128 9819679486657475141726397374922752 -725752251443396134363526611471433728 1050575619165302863030162192072704 656934854732998222284586487906304 -697522623901882603196927664873013248 9950911077503573567327381468741632 4172371669350406267405356205342720 -633760473898649817336411826021203968 4941788722943517390484340966686720 91179286515134037324651730829312 -209920315652911047629101767799603200 1490906868767702064722586720272384 9006933651718228641659520114753536 -512194250919771501901515352988188672 5223376570673619730073105284988928 7731629076764818592458724484317184 -771339232980326350300047069501456384 1947190637891873441520549737005056 1280205519402117485233609931489280 -317166168989198832409816360760115200 8319640656876799331608087488364544 6199770807568392358003484146008064 -203986901143012518347572061929472000 5949458410990615559771376001744896 6571538315942211338200664609128448 -223236938453343549054108392212135936 7994976832876624275801152858095616 728648948965066341374743256498176 -431021401580747689537408592294969344 4720262096023493022206638040285184 818951271979564833843440995270656 -523031106993117440859558643543048192 4177221490046681021361316270440448 559048819207451289765679932112896 -479247231517570935204161376523124736 310459579385196395828100556914688 7019653479537973440334031671525376 -388589018537591113120731916708872192 3774547909779495445825847363108864 536713129795235409004876703727616 -506888094279207386315637305242550272 3648181416569039345359419886010368 3599057869140305338996283553087488 -793894421744353209162666910293164032 3633511263145579107663695696625664 8959796496826981151801324873973760 -546381734657101318888792786724716544 3133757873592513686889263880208384 6017401493668677960941022195220480 -459332950528667171709563893966700544 6495602523032618425263278476230656 9358834293815011793955162331021312 -737273375858529775150681478054019072 3530043292044234121377741254164480 7523850921767678875919768057020416 -165779346203180593103902430375968768 5939422503144786209927978282909696 738366202149887696346531848257536 -751637251258540203098583027251412992 559193141297001844881703057752064 2293938786233163368853797829869568 -974610076935828981367610026565304320 9040272145776447760696300183486464 4421468953927061347966122387832832 -315064306070484834266960299816910848 3252908151658649364844417598357504 9998160666610867031579340908265472 -363547268141441529362693208980586496 9497910292497638474743226719797248 4351555220821210128938039137796096 -510515289987546790380757012254294016 9142607491575240336679998035329024 6495313906481219028708142583119872 -224550541530132625881094374947815424 6018337710661255118865135510224896 2626357136972321030097345246658560 -717516359774097690939498344916975616 8992538784367659703605087157878784 1672014785439302708243604868956160 -295131702020931323178230567114113024 9334057263502689755993195780505600 9223379476902692800942296994414592 -348164965730382880446624173398163456 8018725580750070823005926983729152 4500839835835462892749588411711488 -397115592259068725740134777659326464 4170954017961649780976843587846144 5322471382967269866059271354974208 -965351045110672834203692915274809344 5123505774405270102948523869732864 9924554880992838575246525901832192 -114123016629570439012215223847223296 8192137409002399105995343226994688 4475211973397547522891558797967360 -655224207935726051818114010646052864 1527491579104655794708778512809984 4540046673096836486148176901832704 -484229745961469030572468106650714112 9024386036102710662414346225713152 1732918730156341886330893093568512 -51868807052138763091787638888202240 5577855538220691420954677074722816 1563843265244504634354394093060096 -593728387968839297847331122682265600 6858192492880303541238419928645632 1269373189742583043561539948773376 -825434055575148530543168080431808512 4288304396863498859462823260454912 2867610184135279559832309199798272 -128065892692179684411132240839311360 6130858897047348445276376693473280 3070400537684441015651587082682368 -714933006255250386497840319991644160 9672565944574952480061416642969600 3596458688383045971305620295385088 -347133758134588925387235240829779968 6192154146413689305778774765207552 4469468989630634924494060743819264 -627286359544969230193097395880853504 7796484958802894035180720855449600 9653429791717609225322100863008768 -344514770466814293891030694670368768 8926463644100801128797900944441344 392859530571028127944646275891200 -405889356090926884715210732629655552 4281460711004269313323904484245504 141228632440197940567052388401152 -329829859109716615596467495716782080 6467558985898305491627098291306496 5197354746358297256328837606670336 -671905824307698235327995585404862464 7883031115764954573322323681607680 7313948639078268702845510872989696 -334307515500365460347516545132396544 8181882915754507053202398884397056 3488907576485235105002374121390080 -688277744556644425527954181474746368 2460053624267974852407687221608448 218591348529120531720299381522432 -609009291159042327384812807667056640 4105183658480462702294603537580032 6841033715524029403916933150015488 -186783435981816215759878614337716224 1047952821466978043507518071635968 4588241522256628901724153465274368 -679935401459197397506156416626327552 9850653015355180023727322931658752 2963788214071791266997310186323968 -337961065508673196214235163197964288 3779425736188998150317632668041216 5444402201891923612989710789509120 -813022126858784334241206834496012288 2072927475590060102024172977258496 5451489356623997102096391365197824 -276374955358258232418440314779336704 6101741693355932377441825881849856 3546177176323878926077938173476864 -147800264073779937460508436692205568 2019228954547100846696283104083968 1797520295147712187010265911394304 -309544070509894109718432475657535488 5299701196845293324146749321773056 4650488300891642130576106638540800 -120493634356931528310973526907551744 66380255638380337744350254465024 99458180299983409537751195844608 -480895253810565011468941490296717312 5869846170988234662052994960326656 8399231639366308193332018727092224 -835831419799331502911506692653973504 3934800395946093401511734607347712 2333187100877202222257791467257856 -800602393094628100667169983619399680 447455893547671788868947733905408 5716234404512046901510403602251776 -727153033785613904760848714720870400 6150428321682279639242631012155392 1247872860518472943891794471419904 -811544857160054622591964841435463680 3857187667095319455628575933202432 6900144131646532459441617287249920 -111946300641660949068585937693310976 9616637381093380535339256909922304 8105827771609875704604892552232960 -749055875374180647911948032919207936 4225972150478392195981258409377792 6021992074306496266977094636929024 -42057939050733836849068332074139648 1226130267591000638268251492581376 2809493873823409493171500084101120 -153041318892277667463896795820589056 3036807158607399501013482158948352 8002971231762444976678433344978944 -43901528127003718486036006754582528 6385359205514673644273348571561984 997672938150081093536946367496192 -166813208338685792358437600005980160 3312185384681382038849584858398720 1346264602893103285489558754426880 -902202555031355922389190486385491968 2954406711571121480534022403653632 1539622763076175620618209529430016 -386475551867991725377776414678319104 7921940971897940020173875907133440 8646196006496716372145685959540736 -948222637595333894074898959174729728 1181657659557149686337406351966208 1583111292351182460586540880887808 -759509894897900590402557144169709568 1113891947361667365116396647219200 6310235920270573836367058108940288 -316377580514948241442411283411369984 1304106857245142007415162493992960 9239436158259859377440956528721920 -845701637355158319325620902092079104 4196638716156494353876536820498432 6925844432208356449332969600974848 -55468207854501438076986744356470784 9874621831525420119383060928004096 179277673889770808442425924648960 -650293242138468753719385900711936000 1151984449595692285759095838867456 4624467110565284025181717793865728 -907259763058299796727066897848205312 4002487359359937728451598314635264 3250709588782816703281239078993920 -12586130391484188880538848924270592 2069241047543655431717147342012416 9974764575103207845821329574985728 -605857285249486109344979585586954240 4755216045135444559341242361577472 7071853287080511514112915492831232 -842568764822229196495858897904467968 6338934389280605035646378846453760 9955924124634888383942467824648192 -502795877612819882838518584045469696 2223651332642577286144237091422208 4735060735782258368767703998529536 -68941489659830400231916692568014848 3034042714362106935724889402769408 2085258386716324810312219692630016 -265012652839117594000291887384100864 5469395726902108966857530603995136 9508159646368766758417109423751168 -316751783760755502807075468787843072 1271930483202255062818729718972416 900628380076446656094630739705856 -615414470792404745042271914260692992 1979127475976975662198913018888192 6580792449581347395092184947490816 -584629979323033373138254373643616256 7931704732935578995429163506073600 8534465727969368333995763461783552 -71860500879300856254974347593121792 110583753170968920061395035226112 4322694943858223231723276209225728 -24502463718057336838443840634355712 9089390510782661118474269021437952 7383441575874451049041044780875776 -726043200332667039664931442142478336 3100470954642206000865573722914816 4523028963553972324130718310465536 -217744804960866774309885053354639360 704209276556290265633908445937664 1339170224184890346509544837873664 -293349174997002454655225592528502784 675545044086520220948454482903040 5198363128250163339143073283178496 -916607704281917206236455607889559552 5570708704818687149103601722327040 9052758396140743627541332830978048 -131219207931542358801223897304793088 6954184859878915798391602485919744 9254293296250350595188633146228736 -210146854500444378695927586199961600 7634717054557187114379038269898752 486867864460350166734180318183424 -162306610118670580488992534634168320 6678346070133777476986832376823808 8461636919475145182271091379273728 -559339237228210607395238861659439104 9482431748404439731169069646217216 8796699428383273357700942960525312 -141572112241415646024911225373065216 3305796671760062714515028220837888 7615788330210713225928202273161216 -515694962401400510345789449823059968 7364108663100030057449691205861376 8438193167304170510610666086203392 -512676870503245575639383226590429184 1898735136452355928545986414116864 1044276810312620432577461269561344 -293428816661602895631564783549939712 4684224029573872421422918178701312 8810717396147053777885261746667520 -948234600803823566616555985460789248 8754634437425974749398811539406848 2637538050495855035624194853306368 -732931299666945035587747439930507264 4753128978581959233050811150893056 1282285022737996984061894158450688 -147387211330271283927256148029210624 2213771204629822099982106700546048 2238156158165360727768060152250368 -819982174605760205414742569309437952 4014861365849698283905257979248640 4264282182000943932604080673783808 -90767788691734050616817603112337408 148353661724104343630853384962048 8518812074520620601877941324873728 -169292056628721193766908510389403648 5621850362235575720473859467509760 1073457309318650071711981045284864 -107653555920277312692965250453995520 87159482474836965253673903980544 7396660097727250702932017946820608 -258050988600198101092346055555547136 2589323861052147278282601407709184 2603282478626024938135941051056128 -619069633152644660211051316673249280 6676407338259611634531075975282688 5349859539921793729860649728606208 -622001635198214312516043205328764928 6995665240200709547232619973836800 223137036242541140438671415050240 -36074606796047867025895766257303552 376492664984045393084642794405888 436539402505113366637678449131520 -666750787116393801576918049559150592 6812619035302392154917314614001664 8134930765236902046285370268581888 -248649705421669590146451429134434304 1900950268820770290948888330240000 1040962329765338167957663946637312 -326551118551727476167648676782538752 4775219298758642158572174284161024 1114271310782639508886477370032128 -620390241391406423957540463903244288 1659906813150536715283608526389248 784432762127685516485291809964032 -995836894278611030378495994488684544 4717007958815221637230556652503040 7132471321624836726410971252260864 -179534071017554623074088719847784448 1401731664809819942830905732628480 1355982465491597563011957816033280 -455037200860122369635015520069615616 9625010581532880553293278854774784 9851144369344745445349996766429184 -769401153694521549391306802025463808 7232685307470278904258294093709312 2944063546895789740202056730279936 -313457244480693733504958363579973632 8031359502728806422569381514969088 4646242420353347349174034393726976 -491044926310790669564576566654009344 6509507525393174764103619592585216 8996886109601221497579277115195392 -347646969624659278747482218465067008 3432373542404576137477716164214784 695370910360871787655852202131456 -124453012784983159457555914162176000 8759978123492380376116940106629120 579241309367475328961809183932416 -316286719397134942573256490899996672 4327061386749875935971190488694784 2974765911172975597019279784935424 -176016762308037399356742803956695040 9208945856862618611281141111455744 3455350725755604303101123163586560 -687875599033808896135981053130047488 4319781804169269391697091665854464 355659301060320995270264591745024 -56553187563523001944931029200404480 6230507948730254909296364918669312 3898138838794390747068767194316800 -911977791643841143716681455841050624 7252681602632932120225850819870720 1811926709229740570536717481672704 -867204924930039195451238890522804224 2102088184559895834834661988630528 3235881052105372259189811285327872 -553330593776143093033488095782109184 8922265451853523691090341093441536 4886965409987820979581899830722560 -86522796978841671628790766768226304 6789160497385883280937487364521984 1343066458640821214996785746935808 -276083726136793947322296317071327232 2194361739788151471731735378526208 8606288893078744987112215857332224 -813961344353424370566327654609321984 4500335203570382101343684410736640 7779488178292872157362039522590720 -960988041159123046830706043543093248 1441839495479230170568008283455488 748140581182522460926201353469952 -778132455801937982525136296671707136 3596308557591037549803584362643456 5681905026791007633107500264325120 -739223240621689806905138166947119104 2027796814886251934299329843429376 284414376016700454090613081505792 -281402679761889677559162147841245184 9815075082743113871212712837513216 7390152237726257128909166908276736 -359054825466287970307022322382405632 8497625061082001876225568144359424 4115570526484749110907764668891136 -876023668999964837190014313804333056 7415328383106602409924363137581056 1453696401945018955519130765099008 -300111971993250080759436620049940480 1349705804499103982435195471003648 4067779422105448363742561155678208 -532848795670017848891262982579814400 4599444310415731341407800931647488 6595740828687662490781422928789504 -300144653025287649130991054581923840 9276632147898358212788441466273792 4958458283112595090528792410587136 -853285958884623635936798473776529408 640338639901412269017814423044096 7048997178799551062314964989509632 -339076200370891971662211755670503424 6875719898890928436634029534478336 9938280102843827307570896297787392 -666450686429162730630769242837876736 8649040181911315975276823117299712 8614884676248012110806517196783616 -363679191633125173176531506293637120 4880549733652961833319029956149248 1087674293469928562377410748612608 -708049967873483766732934680753995776 8015880016085293093951538517245952 3385054576055589883071911742668800 -474422426546370918282168721473536000 8375140328195707105838882904604672 8810632461032348516415625377087488 -830634375416774250564907511343742976 5557072920417790361182211217031168 6671543671315704545463560593997824 -919173909423839995176435485801185280 6115838328466455861201509503991808 4930183551626399550521073324785664 -586224025086397665415171008742031360 195508802985818237816531249528832 8165973109309008188783494225199104 -684547643551391486943494270131109888 3539853936961097249920145864785920 1952008771817593281450386441371648 -436447368983318793008018340907581440 1868819977453712262609740209586176 8366291325534828125445547641274368 -438976279163989970351940462140456960 8569195224668980346358980872765440 4432953447723397311531732921483264 -935971141746891483426087503300395008 5967005840424699598116504230428672 49957501501395138778151866335232 -800433791581298478581061395912065024 5411132856344745687560947664683008 870101608639617807571084770279424 -911149590741235919283008038546440192 3179788132349353486205810439618560 5091256603078331219701474663596032 -697098085798460795194514257381163008 3465560775831376610645231657811968 3895435632892041100652107802869760 -42990446895636035870445360161751040 1958354105389357411264039099564032 4028965375440516269101449071296512 -789358338521021729356292064018432000 5718791044064076170237353691971584 4448553088409543073355527874412544 -132441717713780616556813267488473088 1626937429783263569672628028309504 6223172939561576246544966935904256 -565583594320639985911646824498724864 9384363704974816782506979519102976 3751886924964316421822513208623104 -378233704284778004926074414304329728 3765510279995462587729955050749952 4098384457234907129244549019336704 -991963392541524123185407715121823744 8726456028124548117188670090379264 8555722838574167121050013471342592 -866293656612446362597885993954574336 7577796872070255609672477515448320 7907141836288729394056212443561984 -935564185853526439411652705627668480 5504062134046666463298526199676928 1176883251931476191165717539717120 -990288815206975170373507148547096576 6136085790805659021603329795948544 1334837494355348633087851800559616 -352925094737561936587241344305463296 4282567270949624929379647641092096 6017949003328040349335792585277440 -278030942955325627593297456183377920 3561214154735960870612965234049024 5001343271383108141154103562600448 -614211787081930558936457465624002560 7396303639031883241776573419880448 1711637258110703253853004286132224 -50933794188712469283410607284944896 1535740184526367577161637327536128 2034767682317918129534592587137024 -861288210393763899317740650503340032 7311205243689858321230179482992640 1611344917980496201316495551102976 -679787443538564265096709360632987648 7338574269172442363474417379442688 3286699087355536601747961201819648 -274017492617123711442612730682408960 604190199259829856737739663212544 7954217605541278452123932049801216 -838778271769839610602287738407354368 3746789360342249113537000203354112 7501577202832543768391911024361472 -829206184776647284363247461943214080 1023202029987098230795498835410944 8595879005337414024952822590603264 -168448937250601167455501046209576960 8695677262128280566236434690736128 9841980677066249680847036106145792 -135202507561494465526645589448589312 6324579580986602948991331057270784 1391415414397448303362854237503488 -583238630940585072535631846487097344 8695287468001408993041455159181312 2190281788855180051036675627810816 -449644702565246348885390916633755648 9968888065373601642385511102283776 7314219284677253077838672649256960 -310578149176899464345278200187715584 5638556822277847882213181760733184 2568001464177910805830772063207424 -306004786332617787273728937626173440 5971174433553205044010904824315904 5014037246609969837334304431013888 -939742083379435262463099700414251008 5857550056665322724577957596102656 1026859632646414856330781684400128 -57757170173645398106592389843910656 3348376744158801933283217289248768 4278977333906620813678785626898432 -780388156494732875129220100794613760 7551541108635219841791688410398720 4937279419334164735448916932165632 -288077518306945770925936376780161024 154792623467587985303667090653184 5176628991940028410311638408757248 -390888179737033966702446195976962048 6908353212251260721291363744743424 3677837003976786399587275852742656 -317463091587757842455631492835966976 1136911447843885511509527459004416 5329305203040306391993598326341632 -378465809533475138021839084405653504 9721049677405935669360289353039872 7653104633553238276013083450146816 -707633730606479882736592280610668544 3133445982393929807424245037268992 4637658960699627256572158643535872 -990265517989375675380468701917609984 2011783689406299709967163983921152 9348770231356002670099594993467392 -876349835535207864447955153037819904 8832359618963262409185581118521344 1815661834134323707912366663401472 -905489693346546458433218266481557504 9848262006160352332094402493153280 1144521023160967049732680220409856 -89571497953510593578557341622599680 2803754339330760408573761283948544 5937287120416144607264834412609536 -790537481187256344690760997599707136 5603925032356569839951885778288640 9418448421175157477962484411269120 -236943393915220390875020298530324480 8532930762398571158531952280076288 1382880120414732317874278535004160 -709712894841954884666995322516406272 6967209794811867663329752881561600 1680399692271654223818832801169408 -155802222525756727718056320724631552 2030252320434614863625856221184 6864036916685872394432137392029696 -705912214559168923903892630204841984 8914839295213572717054043078262784 9433662859057758005483901774987264 -494978352211399900482456022855712768 4217233957947902878919424823263232 2327573100900241510986805527183360 -106986877923892460517350950282723328 3629989427657312687501421892861952 8145046679080857321976076353667072 -782170949280685609964272107611226112 7290823621398994305136398421721088 7854549047808238582056708697227264 -744304478276543791636246747808792576 8920342815144370980268506601226240 7721146261153959166381089580122112 -243946266679317559850476655981101056 1531873483172359279853368929943552 4334119039060142294217964725993472 -468935944260743723907552902127812608 294876403785646700438814917132288 6239179795825353036238961755815936 -609241466948191804964810451488604160 9998161038136650204076605488234496 7543954418125062730505366011904000 -183968299251514407588347641495289856 7329312421811545283442387852460032 1403379475959800723703458173026304 -755244528724214945166633178329251840 6834247837047956146325976491491328 9549710476912053695804412400762880 -448700895066652389903188148883554304 8707924246706998542355570823790592 9977703575993996599965210967539712 -155143856405819900724160215503601664 6716845620575016168356549564039168 9217995576774936146147732671692800 -593410744176852850387460475278327808 3163949084686700332870007573708800 5611576134206896935705595049148416 -552017571598601724013934476561219584 3805878478958538853740729482608640 1529404944023236844967138068267008 -279571538802964599012880453652709376 1537197492765795184476965876793344 4804273250181198940499476622606336 -255280795152797685076366420946714624 8843186459243125610785804369526784 5897372997938832998855929032081408 -560463153230495182967403375002386432 1651615810766937917180115681280000 8089479200954707393009560628232192 -68528199989700892289349458553995264 2385865433886069200664908991037440 3410221443540536338469697557102592 -106934913994040684421067211731369984 1974499866484686282637848526979072 2188184223974750572935673284657152 -384578532966181123847478978394718208 5036140201915963881399244134809600 7848996263047143445293415719239680 -377662380794312704592654235540127744 835720324278226942366588906504192 6714185084859171791581843782893568 -333362417077209865963608128626884608 6747298128699330202915592632008704 8611230994138114418095391577735168 -920713133376306804979272596399849472 5042449324858907398059624679604224 9140723108652730268386431252561920 -516363192639423581984223635821297664 1921891173180692137315685632049152 8258207551083418800783560772943872 -435954655094897118436355313806344192 4124190106175154426606604305563648 7148018833044807036402033422761984 -940438173543872200280539241344139264 5765895750818729264593998377385984 7237880337930376561835038746869760 -8758020340600461176267606753017856 4075469809280664849037702536888320 9264240397582633886535567489892352 -236280227694652710754720348735799296 3178765512765395242984650930388992 216226920460610053479119022194688 -376547775610942186274502477252395008 5954833111449467628088174604976128 6245309792166365355845335923032064 -874052572074709993019742428034236416 2440310551649346499205379854958592 1599920437438943613889245540777984 -449041434448388904834476042862198784 39980191636669725299216765419520 4884428075382976531069959871135744 -723579349338621448122197293186154496 7258325451982187653829473190543360 9011867055063972271843738436763648 -38476626372275863961847859811188736 2767527681094715298716586518511616 1124855254818391967000309157330944 -885728418040621639443525708422316032 1710875103517373315785384211251200 1286605977105429673078373606227968 -428404143885745885220661200217440256 9344912639078758669296389509349376 3940748049798179705654344822030336 -610538844064859043717840962102231040 7641017578087662542987002623557632 2275647701292925767892131706306560 -174340553141243594946989537070415872 3588345437165048290925170219024384 1374338828992248797298713383927808 -284530451322197428943106228004847616 3238931627545003164206836985364480 8786605826717513632921339178254336 -804396319872491327201130289217667072 1843743769298618043934251419697152 1136818593403845839408922720468992 -538359260198231028894108166528172032 4355629674665486401603950342045696 7069703992087388443934405712412672 -524467400648343094716532445446930432 9963031158391089670724914551717888 6314691915779744744412776566358016 -62248557775790500066702142944051200 2387004768999835727273975741415424 6916471329621402475647675121270784 -34784846565879834592322162087952384 9415688809349482269646728256815104 490945941054134951857720429379584 -695117525307901928190128940388450304 1073678866614995577880398455111680 5431823803198223263474551426646016 -124219391335005861542534976970424320 5987923137000793857928462369554432 9616721751288379819934150503170048 -13216126386471391923170989966360576 5718948690527309746883513100009472 5251351077516729294410427490369536 -273866288217501654982148402477793280 8069876945895960131753905089413120 9084421539954296514690413754318848 -658789475915335971459074286449328128 2602963587525340718185261691830272 7794184895976387763157466238418944 -848108527877405533546548015099019264 9909470205132497674744954775142400 2869473991080266235679030418341888 -995364240788826465885887232548536320 8697381181401675768065615191867392 5024086859512499715660136853798912 -639070772444802431491052696441454592 8641640150540577998229390617477120 2431496952153080206109448976990208 -799347597778314501444682940581675008 5918976200945744424921012920909824 6382797245401606367550206568824832 -166472201233594695438507958863921152 8709980722596808714989192645443584 2419212951085530001538975111577600 -61098557375572597066057847238819840 3033875183642216058128805304205312 8735218121582161080516270962507776 -409072238989156290070048125040459776 522930465826057773327229768433664 4348971931073601436291728901406720 -869880838104321705825020804876730368 843751598461948497411650741075968 2892423913217843438431655478427648 -591582707075748721736181758556110848 2402674291935358577006859488591872 8749000397159292689598299234107392 -562779258390460422988347859158433792 4793996500010517934683388362358784 5368153547605729801290769152081920 -29396381300970015520873982889820160 2770420421333802309868129827684352 8333957301976295318712680401862656 -393323613525741693158514233509412864 261855695563992482352798644568064 3582910829305611537475139587276800 -936475861479243464300012609642430464 983999695061113482058075004207104 9694276800133075760929033089449984 -197753971595013932464282927598927872 9620561707198061104338971465351168 3607759131117488501039070089052160 -936995311365557955816221864288583680 7441609089768451682060688441737216 902869646871314763067301388353536 -936366596635105897460965474746499072 6342586910870974469597824284622848 6850916321184818424299138930704384 -282943141733578864400530176905052160 8962228568988925195740714874437632 6280702278361536242315112310898688 -938938417408715941115203649756200960 4814123295590377717978137630867456 6385765952869560673918297063817216 -794229787607557012434885236609777664 7963525688978583523506022082674688 1971851106230953812572117852487680 -289491410636366735233741688682840064 3918721947411760021717859306569728 7961244349313296771546788594188288 -993251495184571236040060719327084544 1680490462112319944547422747754496 2210614545469231359179861792915456 -467757384643892076353136823701078016 8578227853214763335982322143985664 8155437466030362461745514557734912 -860244399799682240045516465222189056 9267070068185348222709763651141632 4086233368059767714077015254499328 -867724486307306820633230823464632320 2935011238824625463569849161613312 618289201507573330423235563487232 -623857505075269167692766649046269952 8130963973101075781929509473746944 2046143892782479426205056650706944 -571843039499955833667590612102152192 937124131947489930387363570122752 2704361153606132435202972963569664 -118682184518753069956453392621502464 418845792060343700514501057052672 9527921075279442505192447793954816 -700195907536781675269527183623716864 2861410755297168428644883968819200 6336956901664523529591069448601600 -895508555044401355280015089471586304 2199752994321537136743277597294592 5763806739252597412552338629984256 -425686228125417414077272096327598080 5134334759196529223270637028507648 9080091501085390110277011301728256 -747178101339950570405409672176599040 7207748331178550688241007584083968 4197867740422096386141740085542912 -592954310357043458457325528571445248 424914187845858001544531337543680 1044689418572959857178888011513856 -462054024592419283872631642593951744 806617438109599925704684069715968 1976947123545649270955627346132992 -115036184226371742120802832789536768 2088940725394677315719433279242240 1902336302508229390135285189181440 -64597808321268321193568591149006848 6203437467101481561719531945066496 2414141132497869042133325454508032 -836836879139409051688247330540093440 911012469580376092285348874289152 4103039637950209772192597440200704 -398599556732430810711380503191093248 1989785509849996926813061523701760 8214301713162148688247380762427392 -172388496506907551716303050236755968 7030014609060891307791779073359872 7019559134494180311811400553988096 -432956825716969419039883068050505728 1257820215156700430505329823842304 9405563058795251085900061368909824 -707523506390373363394233603649961984 4867463802921571016102704209461248 9842076905606468174909457018388480 -363366094294843812627856578844819456 6374341559867732776324149058469888 9307270116253422189283257429786624 -322873340628994683015470311859552256 2982233635787728085808419629432832 9583569635435934358538313193750528 -881876088660271572219547799580049408 2513840772244404831986097670062080 8144399815430425578670624700628992 -605121632192154328627264622757412864 7219566121138083171611164698214400 7269636971777132970526543020294144 -289210415725687202187268914642157568 8324733495089439118190327237705728 6050379223142474999337817875677184 -762409693760009173961746432040894464 4399307745986255811301160108687360 629689409596220179951364276748288 -280226663963927561766954917318098944 584682192547913673297629802397696 8295623484694049077522676655849472 -878619769213335505327064353135919104 8089252452078602796518081719959552 9665399526896315951337443040428032 -729333600772083919930139980718931968 3424030840588402358149919723749376 4675177692918972150256036795645952 -262313469132502759491144799790039040 7579969455524415532808800221265920 9296124714957100253625077169389568 -283117358268723692628848622537015296 9294202607830924151048883308331008 5611256914626186422723756966281216 -373743234189292735175236807999619072 9967442322336094302523020231573504 627993309898783971691881079767040 -745034852774796355497198330239254528 863172135707507119624477671948288 4492893226594237460138980754325504 -267947237343682565680743512723685376 8766651334365140116845635494215680 8636761530480717143856282194673664 -391565847160029711689159948590120960 5221838447523643016698068073447424 5263613380476369646008940888064000 -46988673746321300072097088916160512 7858830328458733044689969891770368 3233917774553679902827822679326720 -906118412521946038847080409407160320 4101062996187479719609977958039552 1061487546512239902637471599427584 -932397224048093692131443278809661440 8070584373907026263951144701132800 9976790757973268337853322741415936 -328511762949757494549907140767645696 3209241356897128676316975418310656 2283404074743391421725908788051968 -458556903867342067940144418866069504 2067752118550517719323863750279168 4474066203301385191519693549076480 -519511853769202937434827923249954816 3704891293743583483959190908567552 1082902681210877271627122268438528 -462936177024326670867645434200850432 8460065709542996641425717261762560 7361118091757947545597645846216704 -514466243973129282205390879961645056 7658150503399343378462824225308672 22707009028200585031789028835328 -927168696937547591044586488608063488 8863975244908627351158418499960832 3665365490207441843463108434067456 -945731005960545044202168050184617984 3603188822552457587296448244875264 9386167348160864165961037630144512 -775357264737523409084299413683175424 8745590934526840786730904979505152 6192323011128352287870904090755072 -402356576376854572577796649717334016 6566472126476935721181252438458368 8966223113532036368287304507195392 -636934204084110781274247772816539648 1123441313718867529941022844911616 4885466644284405341520022374187008 -728002280373960941401715923493060608 9234055642993720908589922919645184 5874726459627719926085738205020160 -914267817155756851684821125684002816 7680273471367359219108201073999872 653642133653858276541950813274112 -538459085097388023544396445290332160 7349072450710603252082384222289920 628294561579494054445029315837952 -319589070320071641859139888329261056 5393017376610503507621048716623872 5759304455464022903722183655161856 -63280471256887161648943932599435264 9641822337750578683686671198715904 4670343450014386520413972054671360 -964538653970170469946173487822405632 4167912761858973658799513622544384 5451218956621931140915083796807680 -271635590484883327078740152870240256 1729637698603788494440882222661632 515452041781412546895293794222080 -509923386079622735762467119725281280 3895342991764601750418213652398080 2292751597062156246121829709643776 -810300814793343691565653710423982080 4288437265866141031360330838573056 4544701075579832542124395806588928 -791615850462135944300665258796646400 1755493886457084243649817833635840 3540064576858335768269020584738816 -307740485990061519198115684954406912 4746008093921512547537901590675456 8056755490727704643943295950520320 -282814574061702129011335780716511232 2715625771051386435563831378837504 6565100161662936847362817276248064 -313402339709309911290991254127509504 9241525650258382640286710965993472 8241538451428058741048861599465472 -613996292556223432376426135017226240 9638776527109521422063126307667968 8359522989781767170517818780155904 -710554007445248171651483633910284288 9353202401112134335487113093447680 6745185154845843823970033252433920 -537913381811640742607278696107606016 7540724465829974915611095243685888 217750709221533132200899264905216 -618257700540665975559634573416464384 1368027533910209233506601407610880 8580323066376023738548659469418496 -454637943433739203572532693105115136 7350626687496057377836676228841472 2988402125407473143779475629015040 -515275146027747112712564319314771968 3279632775720783646863409478107136 5736148675094043608054924729909248 -575952560354601981160664623810084864 472709825240664763072222593024000 5657929855469068335224309759868928 -468864108253807405668825902639742976 8327047847811030854211872485277696 4118962283680381635283895254515712 -712626009182736624099610817791524864 313725803669339919883027003473920 5427113628780864284566857682255872 -388172784945402739654339622105776128 730514809829310231237720411209728 3067829387215697585531503608070144 -993393229889001607880845335193452544 8382649303066672739179539636158464 8259556276586962560321215130501120 -514682482719309007742710252816039936 20287903528007692820089019564032 1776932056310816720288877708836864 -601911910855233204972665944141725696 2881982923544340480149361715576832 4041283077360525152002906284621824 -336234947342310288414590952380825600 6527438043799529611186200861736960 5982854915139139898971411418447872 -154667847706100513272444139031494656 4191937959377249023476584624947200 9262096799176958239660629144109056 -919429299004907028148578110943526912 680477021397142543375667541573632 6635435372613800394624283376091136 -865483489853338762833579478232334336 6759232865971736148746452764459008 6083114493914788699232902687227904 -156842951037141688947523978994384896 2352323068049647589383247396601856 4231407215799135024826706634473472 -694230130967144855704897541296357376 1742262626673184903972593520869376 9350787704302783031224759805280256 -491909898930622436473983416987025408 5942416643585175017358028521340928 300836420990638133100062116413440 -365748456945483616335702892851757056 7472996678941107790965689917898752 7382341718031284632528493438042112 -421553096295951584368108772112990208 3594376999094216470030605826916352 8252065054699197121905033652207616 -123767597054609906134313790303371264 1512499757684353989847059821232128 6227491760179052092590894864138240 -602537864160227632612443431997800448 5897900924769776655352076829720576 2621405432589936892458430457970688 -248670088627681009078659737551110144 6498203082278617996047359261278208 3182765907452519302390816197050368 -242343561841675268450492748939657216 6139562323454602449456900163502080 6153556746398990256502470338412544 -368401012021740900156222772437057536 9775855527469317821286729440559104 4221144496112770428531381731590144 -300260194600839025219506767134720000 2311799089253498600843086395342848 3464119192835380749401509429510144 -184981612099775656154756566390669312 514918818964723048778162826641408 2488503330023615892305390843461632 -821756299427540265944397271607017472 4318079162031037621310672863232000 6902470513136175685752720222846976 -680342416243112285768991160762630144 6051209780142867644643838754029568 9736028687169267774493594082082816 -736374662078832393696760793424461824 8424016057972775949856918116237312 2692715203307957590288526789836800 -818263040436117689020683143157383168 4531007606516244685695821696466944 1947040556250445894004417469874176 -665443589126953369446884424487534592 227307586593345172377959307149312 7773887112693348383472879119892480 -810342262395277657259168373277720576 511539179525078788347086833188864 8052740913603893869096660629454848 -398633499853627067145512757581840384 9852282058849977221163748067115008 6869560978861666756629669477351424 -747802122550582045634850293635088384 7459324745271621270529159645364224 5038011320376813832261272244060160 -168226131475851744791148839460405248 7143987686428413696024546249801728 448631993448526262100255213355008 -413672733329293029437544450534408192 6974491598682152569873367560093696 419377857409919891493206303440896 -592411130495064908788319831438917632 5226195085989334157840275197657088 7817301099326395422777016739430400 -395714671435693944003801775884730368 8403870539231698375880404629454848 2540641561585944294830655510937600 -820481350626881151691905702194839552 4989020087792455673132991404572672 1158881472787006214808451086811136 -369541348130651002729661759787892736 838120483991377193569866792042496 3250989286598959872260317909090304 -829013705451406465315948209968775168 270980863883641185064718887288832 7810032539999093980866836797849600 -615066762012662376249367707489665024 8043162909148704181127595880873984 4515735903043114772754687678480384 -416813777732833118466868948051689472 760061152884506779200360691007488 3871471845587753884182523888533504 -381913433316990896710351976071692288 2253330665972667845186075880325120 1415619000122701583718309974507520 -45990177237712003984347482397081600 9458747528486801799879277731119104 2215811539256450984831742231183360 -689841106707707613716899621895143424 5029554231778909745064033449410560 3396084661833720448786398307155968 -112794617303313992223829725051617280 1944501833999622800661165979467776 9730042894697963934296035838394368 -933324551634703856517761566846746624 754720584559926231875745673641984 5917571264516997677184055926325248 -635659331809114818752143277812613120 7516354792286215712148449172389888 1328093963690582670083130113654784 -326598463642222437607954859929108480 7359102011113758028231571627048960 2286036400590644814914468137926656 -192007593759919918207337029632524288 6225499546729458928026810929119232 4479276538328552278067133187883008 -597502842917464032189296007635271680 482497278393451720269612997148672 9504238184699964767701298195726336 -661952809238919266812550831268691968 88966180438274364613162466017280 4283987359993073106010602137976832 -629113873706984701391701556450033664 1388398900418632487922817046675456 5875024025594490125844868879089664 -442478003388122789523706711686250496 4287575190913825118836772583768064 9952889513774793941176550751731712 -351783267122763137207836458673504256 4803436559050734637439341383647232 8078373427277155815814910391091200 -546368989037645714306919534105198592 4410562408501393773453889543077888 5054257106237115285273753447038976 -415589720619099800061559473199644672 1140474938846674101032478973100032 2199204425496222684778730551771136 -767481219882907802115525937681399808 1463200973522995305353957760565248 264880947093791259269282136064000 -250788438968269748940419550538629120 2503187166980901677515010629173248 8750633675869683463418050726854656 -652653780527476471133820248213422080 2612710082116999803756361115762688 1576648142642103755975175916486656 -754923390326328977932197207008608256 2021359118068282077705019345338368 94003324943047629131393208942592 -353698122651688096002535540142374912 1907967180539122595400553919938560 4509155259571921774244338260246528 -450718315145067334829782412445089792 5066241398430704040601917239328768 9873344953202576914534203989688320 -304812489519058983030377686279127040 1145687198811821213305301043773440 7546337922410107225049262880456704 -326837519302353597552755028795588608 6375567876306435564618797086146560 2756967260355478166929955021127680 -376411657148071228400489039914860544 9809836804967152366393657751764992 3026795182368811831828303264612352 -321889756305753403390136616224817152 335518008377600357379034406977536 3451752781847541663396943078883328 -621320039336186725481487371155275776 315971310336415387433871905652736 5633719722646405420316694369271808 -196330812767059426135613409394163712 3529234262728917607069769715941376 7716864627448145811995896691294208 -667307332297441045270205986085273600 2817871670242847760715526881411072 1545220694067612974224977095032832 -12714840989465171742816754523439104 2136853437479435679252325507006464 7746271691093595684982311182401536 -452643094902372516555004546920742912 4442494480183724887259465300049920 4723271329166562444102315272044544 -484167658136718116786450019165143040 800062873809453497415392695418880 9747845784832014844407817783214080 -444713104648342113662551798369484800 1994840066648291060153430522724352 4343346881663843254613735179812864 -168639480806663007053679262378754048 4845155907358193983142282076880896 1609336480384610410984606988763136 -379759319396472604167924574247190528 2627577873439218485300530998411264 4799331124546537487256280234983424 -490497754514023354412485501054353408 5368565736793907686919917019332608 3588178752298508290341023732727808 -611158740700079137553785005858095104 4436919335698053383151858434965504 4608593625259421275535011232088064 -238018308459633242523973146665549824 5372974223592129956218414393458688 1559198324893591190174417492639744 -570843005014941871877293292958777344 3897765319412605045680267006574592 8712893536858149556280810052517888 -23213948407130561547627914378346496 8079797361695937512856138658349056 915378382889052908863562901880832 -689257770168356881330037500340600832 3781354179996408597915193848102912 4201817378226956878833150012162048 -51567933164355798575272807607828480 9940859865090676517895545674530816 4692103292521573339607557797314560 -579760137373351252283294648039899136 317550432040861720136066399207424 7373225661840814637510935284023296 -418295582380041976182980634885488640 2594767040696347956149940582875136 6224178286594729164410259702284288 -179816492878881094327519634622775296 1259682470137700175218506951819264 66393679761437245111884295700480 -234155645857838768181457239314268160 7687059650695754606095208808448000 8463188010891072947300523705368576 -7894992845037945300553191336706048 5552860838877130049965265531174912 8708807120262665161121628719939584 -904808648023683196842196615930314752 9260601812832034483594994808520704 2386164361475313362712183326113792 -278516412300082135312732298586095616 6926096492784640393055391577014272 634571322321362259449528308465664 -261192614207921829981406767626584064 597245206843849000113064720203776 9182025509078269861806697175056384 -107855863018310149881262155205967872 9512503778686421951693980419751936 2609376707985668620554273812381696 -542471761159970333128056568719343616 201923817704010545447874534047744 1150723703222805538493102840348672 -527544394307490224644133486575222784 5944995794814149229966742284926976 7332647099257532266130325754609664 -455576847781031211927115528771993600 4528720209499165837226338278178816 8601013106015916098047679452413952 -840715364998408140576090600752807936 9860186060869127457632098086551552 2454922397182589799334627690676224 -639633568442127734808981226372726784 9379485580765404666454982422167552 4660013439289905160502142105026560 -717844837181361216290840554328031232 5206884965825505892571641649561600 7772534176549500763968909858570240 -689957863452289189857484377285459968 3831747475416393890685248985890816 1843191410353375228295508230406144 -364963565503659229615345208899141632 3765486613903817126603198977540096 9347991023785280849714418362089472 -132852927613559378271330152724037632 1220606828642730559862943321686016 8650811590273366114561903592210432 -757105782361156038756743235139272704 837768375679029424077384833826816 952484827619059033637614310653952 -999118039259524598925696030331633664 4282238879327716299398160700145664 4254372557671206763023346360647680 -811543522990180046603188668618244096 1353423719817314750258435399352320 2814360564864591824358124594135040 -136974858090121072963230146653847552 9776557598134406510648913156898816 1113572184384129026762492564471808 -63586939306169153313494830109687808 2697842225857863930836573833134080 4220447219478155856755588581031936 -962738284028980431073332621486325760 4190758233674472311145492423639040 6168103374732052245096641834516480 -660666306527770633152209179530756096 719465982419499035248017501323264 3607132495045878933733458250301440 -29291285817820014344768131216441344 6545581027291726720590639762767872 9715419803285587641546462740873216 -790428428124735663580555550276976640 9459448298889649713434459346305024 3433188191529053019855614761762816 -947935913572137679508191946454597632 6709059371728749568495087423324160 6908499800124458674022997519499264 -46770841968262289039342376105017344 1642826895086713768019184515547136 7299175670179827030938998244638720 -515837465251563491050819040189612032 5755149743919876855725431308943360 6800812948683299316023652658446336 -61716979209625935835314696560312320 1397270689585276741354560707100672 6445483391555137683379023515746304 -590970182425320280640715915102519296 9084681697987775525393966634631168 4115959063395132176075829528231936 -126740791370247802658092426557652992 5912402670939878256968832376635392 6619584836527510858535149538115584 -414243784927847428862649822076731392 408220912434554110502608230678528 4700305480682603468293978135199744 -160979227674929349966960353798520832 5846759302689615146767912016019456 9808351689065033541230018131132416 -482576112946930526365136150165716992 8692371499213302484595955613040640 2560929282480468311288540769026048 -736746849194722530010705470825693184 7544101558552325509195079031455744 6457189869429006905885641362374656 -618831441483961933306579756590825472 316667288312986718939563708907520 2011878498016223484865762807513088 -45199374042093132320530362932396032 9929120231365374770600445650927616 8922696018856625680643315982139392 -867334421003929599981750799386542080 2527564431369970727959723256053760 3021615034351209202298947362619392 -3619818683808824013966090952507392 7845964621028916493837144783060992 154466930515339923367660760334336 -502182905473897955546317612545736704 4827514685590370192423651461038080 2474251618138242734071711694585856 -212544739680974985595146774369009664 262519782614646335156407142187008 937959679424692936069032873820160 -490885632391172048752853333156298752 869214050116076309674713193381888 5455649876870600656191186328879104 -685848406238076672765113243235516416 4502931538362227747956529530142720 7240303449915510150358343274725376 -12192760183763384738905828062396416 5901946669842601064735643296333824 5286217245548561848997577303785472 -280305756629626888700331977183592448 1132083205587467964205400556830720 5249919731832709049407809343455232 -320038411412215038623505187403202560 3880871963791239254005241492799488 4527078119511919313770607208824832 -900741015504122125186420415620186112 2926349629041502952868356405854208 943886132467529344692060390686720 -108087468643306273244611509170995200 2752198512532307760306579082051584 261680025945352165820367156281344 -96138148807498166934765492267646976 3601854612622240476310082485747712 8630957428194900949600582580043776 -798185838425749507059964010511204352 9074515553792122879241315770433536 9794199073208172767251887871229952 -128778358177665886561739236991565824 9971386747038320147462077248700416 3300860936613828102746129576230912 -467409700864477402773732016131145728 4357290997478247212424468503724032 9174950840575551056081230363623424 -297660236183952853679567474085855232 1893726430546824523583789761298432 4810474341494109045674858107633664 -707316070559383929641021560345067520 3400976730591927800843262658347008 8452315729633371123362829510377472 -53941083906741310778437583658549248 3926706870351645452520591361835008 868051409675008130454440409825280 -848462032475041454857362120059650048 2138459528702247521756090938163200 8154466877411419651767537409982464 -176670401017931199042017414478823424 5624099381141348666434237644144640 3074986003520785268985609339273216 -737188854807627836305441700142120960 3838143852908891923022530387902464 685660521992047140400855523524608 -689650186829059936969415308492144640 3423991624332769630701366760439808 6562660276029858236719092008484864 -510653821153364840876921407322193920 6837296903569357576136316260712448 5309670062302334736178326271950848 -299531314223806423826517076591247360 4047347042932321357394777057787904 3948108289232141055548647800832000 -238849993537980100149309802834558976 1626199613659684106394703530819584 1174749496340902464479170868019200 -745251136146292380746017513209331712 9501586160856866959680044269568000 6551244918378921162923330280357888 -961752257412840282162235814461833216 4494787209787347787870190411186176 6317859220563036591096015634825216 -645177535663322030047967514625835008 1335313770904296741193718909894656 372486549134186715973685967060992 -164586107187570433297756442295533568 7473725372174069434769116919496704 5605495428719685883960842055057408 -745772724998443883629698867439599616 4066694377635518007341510203277312 6492903615310294734572650628120576 -475929279549204430578182536267038720 5416494017513116444598434416033792 6740371765800015498258426537967616 -267327656005946018042374976987725824 2481575301597090648745933818298368 1365208728503609734482085745262592 -563021866776909783977685041201283072 9351342861667059616199238003720192 2949659402445091584174703507406848 -404915126297108129004989901629816832 1253184907360701734828437820932096 9377938947190897215143778227060736 -899761176673698859899679385126436864 386957408288916772944537725173760 734190435644034317235215719727104 -687100138181874585200117427864600576 5952684125017697080446481128751104 9876052134909753388699671678943232 -507737637149920933612782133845164032 3312141322192282466684026834911232 5240750497971547732435318622650368 -155401843016051858788175080683732992 5036196348428522118203070534909952 7360112684812773236843230267441152 -322358340885473485438485788337635328 744815900108206608977549296926720 7433097899420007121531668648689664 -925016529681561911969140677663522816 2779278359596201452799786806673408 6970597289164202447687449462177792 -516348944008853413539034753576992768 3212760802277082493327762016698368 8309300720454104713524047528329216 -934537530231452631074655123670040576 4650060509336485980876804297064448 60921112862856299261813137080320 -736582164005326797449552646742474752 6674162292106254527865923722805248 5365663707897983927321129513910272 -220800304370711104974455445106196480 966540249414298366682011044675584 7650171499672728073073299254411264 -896222606661747759907645855327322112 163478642237933031359455214698496 1377264405759979329023969543061504 -609597249297757570353946963340165120 2317257851346002042903980715016192 8339406276509102285551636825767936 -388426546224364351782418567850360832 1472568494689928403360881244635136 2018463887971509496298915055534080 -915857698468276437352305060938252288 4681282967054800815923222124953600 1925339732400723977196317469310976 -29632854502105745409749972814921728 8808888581003544175933600915521536 4549563769293312199902544456056832 -915986585577648050690959835557527552 3277112423575859740680366663401472 7980846843864133552178105952501760 -860964751303571190150680041526132736 1393443942881851282336329246965760 4687057430384494595073316126457856 -416531687729035557312041170359025664 8766539812019291269563857984552960 5336501244412998864340219605286912 -720576939921702260364491894156165120 4496712865937163253652978818613248 7163923420282841782171640480661504 -152025748687207319973030038759014400 7637720053820810182035270455525376 3213446449297129452181855886376960 -586807665883201676803264787328794624 385465424518388161940296717828096 2345601852615490183355843448143872 -726142651204050127210505558642655232 8530097060735625702563998649548800 534558867296394375503611311423488 -968723852475223075179836123673264128 8061871879864564785178972092628992 5852899405913113810502121861152768 -683228709010183529068200555096047616 9970593972549412275701728814301184 4162680839234709626825654134636544 -658209138803131547874129031701987328 2911343012718429080410094057816064 2360424029484622938061663520161792 -635866453417688612995251164560752640 1102771899207080445681068622741504 6829464653482157134838538702946304 -838370153612783772472911217863688192 7469897839529313336706566052642816 1548207504521673072972882950225920 -59973807436986623713417395500482560 3707527592343249834139214665482240 432074281052911705108841098117120 -107629113159291778593553633689731072 6187135424217809829048812178505728 8857843561517522882382562804629504 -485296279003789585413542444875644928 6701139742767329045696562262441984 6914968290313252327659034485194752 -924326504627181676161494498391621632 1452372894497107588241776571318272 4977275445119879428832098145796096 -136689340650996389105542290072403968 6078805863062904194230353435557888 9236881465168684971292739902636032 -111256865536682800952892331248320512 6188885570410377174563544547459072 1796178715393811908824043289051136 -10004287858837854629798044275572736 5096627099001707746027398448021504 8855493351222427695577420227674112 -837117097624333570621122421192654848 1139316814554846271830172368896000 1143202963651169668268194755772416 -187002258262059019786176485662916608 9018843700517979956397225321431040 9770793602451539713608067204513792 -453900160765660834104634133299855360 8015035563686687527778434808807424 6183146355240516229489446619185152 -566156942221045148586532546898034688 6838693648896359996078490233339904 1589827607900665616870545010196480 -947303200472073667660349677900922880 9937146289394049392402879519653888 1877707642211956781097847896408064 -438095104509296190788094334842437632 5840053724959167967513150052368384 9874555516770144657813266503827456 -788498534044383878538360972413763584 134144633839090518440517713264640 9174259469340355969052971232133120 -750263775688240486413807217190895616 9456358367451670105157044942143488 3916941159800736014546969498222592 -983661292307138968748886539846549504 5511444421591441246007496691154944 5770542715856997863330252322766848 -98074783202606993016441450830757888 2752660218252524063125079966351360 1294001856143681664731408112812032 -714749260684751169022749889253081088 3824690779470292181687081434611712 9786379533424370730409015329685504 -533775942300290220454108085549531136 5601584648010312061912117919350784 8387508156061427904941055908249600 -432343864008205673478489360945905664 2799996959107588087497284114186240 8047782967633039325145810904023040 -668411753315358687570216025344442368 1446178577408057503690186089824256 4327215303005199369298138896531456 -16972099093232775442015641390809088 9380024203973826901606206307041280 1788802875041083513990852280057856 -861160699624511674506532336785424384 918526939935836527872085919268864 7013241425952623382989543007322112 -747787659378387461555221908489764864 2360991036036881731917655792680960 711996314396301951757786187563008 -726564294471260193567207271237156864 8103513328296147425605534470897664 4427283990478248753234005496692736 -758320148803250364046338163560415232 8505328608312895906994780727410688 6629269962346736600199542586998784 -256138435053398928315230164269137920 3974550562906642404809725515399168 181028214579211201491524359553024 -125364204271976816294497516735430656 6246918996474388061202202780237824 9135262849851647069540703530909696 -804915649377957788508297948477521920 7618481877534643297183421121429504 4441569765428636482136612932681728 -567253055197590036277196894611963904 2818038189343167391175045908791296 9458260690646478890002391213539328 -341103706313972223003617550011465728 1941884366019572989720727016964096 9769023804361295244719576185831424 -70983980173930589471333007193276416 7737145982429533279857247963316224 7709995952263939505367771913388032 -563002409822776405279292279629021184 3671451978217622068488081269325824 2531982418689416830828275908476928 -436914922110354182200810207673581568 6085354736880432381882641915314176 4074211695560593662710638226440192 -310589195953797119131414062593736704 601729297054183839716570904395776 3628328005095178333117077652504576 -710438494849776044039185719395090432 9186841986634013569346870827810816 7189107354559030760552655916892160 -1852037764015517154969523440320512 5350915907904590603154875714895872 3634768999235042838743321466109952 -858085810736042995243853080491458560 5706097900876715286864169673949184 5327254456022256834692296980037632 -925246959547765247040701977514213376 2059066718351084469902144327122944 4534066904244793413771825462116352 -759461344603337900099518859967463424 1701296333039528488648599385669632 6100054013490891372947013365661696 -640571930530277859862870734724399104 4142347233714895012065067225055232 6998587508885104624792347518959616 -955920436110041430271398579177259008 3013486731872085711753651005947904 5319070191267259181752382264442880 -633685485878436708056928575780028416 9973435584380453124102004506886144 9838022647056695698067865856901120 -645525745446769081292365576649310208 1933256642773806180272949004599296 2099463910071669064246793009627136 -151626940739193435185385612968460288 6018369618453439018516477777018880 6910978590399408230507133982998528 -846741077236793519857742625449705472 4265577846449434425173645499301888 4271061769737962162902308757700608 -745097168941209186871692407588519936 4938035079033080071938001061543936 8450113921638639710432469838725120 -383554466398185564491119967820840960 5575426626690338479840847781167104 5199376985707846994944533033123840 -850060001157422455583948911224553472 6983937718126568898828639064293376 5751599367030583899874526886887424 -272693030314857812938607347565068288 7714943068375411751332180953923584 3356214525067224239613168091922432 -388161143164283684800014026249601024 2083654100763441211904837843681280 1285814224997531547745176327815168 -321468779818544434721102107066236928 5698605834739799893679871119851520 2015418121824417739199357099442176 -600469237257663124130258037430550528 8003907305959893440954871635247104 9006548002214817560634567927267328 -946758598874527270649789472231653376 4943621527705704460850483160940544 2302287738795048302074432424247296 -232621605998739152905586929913823232 7331559328490236079170377465462784 6223350001482808992103557851250688 -158847093667117475296311516692742144 6510526276630708386898305200685056 792896316388101281109959503773696 -530075911032676399059174306061746176 1392262817167457368330647348707328 6979699578937738151280679048970240 -562324158130653447794476203838013440 1927969786359504897385557791866880 5714047762945866405218209891352576 -475923822793794581868662311937376256 6033944823972870885749204992393216 7079897144190550739994999024254976 -875463283250515213108383514410090496 1650286648173136524973356131287040 1888514868983285810480382381916160 -808731553918392228281648548283416576 4042777986927165888060162368864256 9116981190258550051463030363914240 -105490593849379863574048205923418112 658723982345720110108860607365120 938779056562797685933272960335872 -879698102608116847229315540880195584 1641346548639778191103419400323072 6039912783630275334413556627013632 -721392975494227613238652278010806272 122629016587704082990156736364544 2288594220580879283429578496802816 -320452603874158407358237837734445056 6362139222616495272661160751529984 1014674380656885597548236643500032 -839859409065259143343551229865230336 6396752736076421947424019417399296 1306042802909925528339293325492224 -707354769765766640488153698690662400 9686933031890535228593774631321600 9497062851338486458619363724361728 -268437007165368972134399104692256768 1484669622081375638438882293317632 1888184583103512739207767258038272 -97206372717290106140807994309345280 2677207324163370125919149856129024 5745302400232771310084894666784768 -588369195620692988883585425330929664 1681491071974605976727727718268928 9294398701474720868757779408486400 -749173265923349153329651734695378944 5888217786852961733488702564335616 5870396939580349324784381085089792 -735156481753603301598354044553789440 5973205964612007131213445248057344 2291613671117245939385998963113984 -316120308679913757317299676442001408 4720559890720914818511596752470016 549846710428505158388069349457920 -657483156792449786839246730197729280 766470165506318091809039801384960 1334133276126453613010948106223616 -25090154714744939319360019557777408 2274560754856105476975581921804288 6230056896341763187970595782393856 -245795931440478709375483257548701696 6841611800585001627407059599228928 6816028626916122687227463131463680 -308814532403014679841831348732952576 7090924806127841409094221381500928 9821612004570873588583821880590336 -565680837370673709758523805750263808 2030564530273948798189400076845056 2228155747128695055417975846731776 -949094737137990290639602066728681472 2203710307459016566110255283437568 8087272287315737775041659409530880 -232891193294912835697614759009452032 7229139314696533654110069621522432 7948864859548691132268901144985600 -72838924874175154304387628998328320 2585838544754053705580039869825024 6981878846023621840293356076269568 -589459057010828026781882416311042048 1612864930435342205548099056697344 3758103910339292225721096212578304 -768801440903730020907872137764667392 2052303099850214036091675477016576 9730356569643598482815513790513152 -450754716364659142700173672201584640 2070085541383816955112536370315264 9015073729659462885992286971232256 -641846105665189526800850583495376896 5997989492871154759207530117726208 5390482660844620376502662483410944 -138723766950363530579038507387322368 8706334507007555591666662987792384 7861250095575593185360762581811200 -751409120454195161182399893585526784 3192272700320173726264782896496640 5806490147552057096730191220178944 -47440437971570146433489310356340736 6834691412154363646051058974720000 8500562011105943396000459443404800 -84681910597738810769118344452767744 2660044796680509192480348140732416 6141050830323166049157253672468480 -196291303084439699863840273985437696 7170386393464261905598168053055488 1573320718404159579657242629111808 -245075954879172015934267607910187008 6225188237316846113320304122003456 7521769191037295723265477482381312 -460370634217457752704632185694453760 9697661364032682834599015748730880 8075070206422857184481111395270656 -637804649409525786009130332206399488 4661747591671033840190599179796480 1790936437237734436299920755392512 -582135863064841136738899888443490304 4919971166697722390634940617195520 9833975746120956093543526726369280 -626154707045469148308242904479956992 9577754803040108256938494366056448 2257209828980743127071179650629632 -906841088553216429608174841776570368 7855332509065018259570544571580416 5822902501663258765957718964436992 -401379226004909909049819477709946880 9983367686654605061796963974905856 1952083997599098036219986520834048 -429421854436656806117614153721970688 6797632212067927788922683831353344 1222842624528393581006545110433792 -498417785879319447597835296331268096 8206534465358332061369038392000512 6147861028798522330258435353870336 -448904267202656173823127202624962560 9033239135840667589162240338558976 3691939911355898324051345950113792 -636944556320672076360131069838622720 3542814691215200437311313048240128 2885824888879312465240135147978752 -446017093113959490988787396792811520 3788147515835885965544219402567680 2431789130093754063949943762059264 -7119872740527073224591650660024320 1357750251104139766300161687420928 134666943913286200443404564824064 -853579592063816787183805955456368640 2420609831498637639517086521753600 5027703267171010515107801580175360 -253408989147581021587828849055367168 8123181402259724868874386928566272 8885174446776691348631793652727808 -358473752718569432620398174990761984 9193573938283008336002705619156992 7423223956136116839162327334912000 -489482483656263256236959135833260032 5757456390628734502982718775623680 7919002241179359396258860175982592 -945030930311725748008803121831608320 3537155021529748930696275822641152 6031843442949010955504224001064960 -782090264048302486716001145887653888 2889556589084923534615293439508480 6719735738922727414896442952646656 -587348102724967324471623999857623040 8800817729799847670191504912023552 8974710653206885877677557221949440 -590362549420967923115520272388587520 8280490236300190952320686452899840 1130790795415115961777603569778688 -264930947194080081986295618720497664 6444434712718808658043781444009984 175953252226223686712127970607104 -981477286540375557841111198094852096 3649164475999286428730621803102208 4338984787551012346203912525578240 -881806912408125404573929932255657984 561360356643743303876592455909376 7052224371064745753186561419116544 -498384743704737677918691633383079936 8230994257887527817557002468458496 1545657120371965715914669317685248 -996310615261437991882088280030707712 8213494739370290742545049924403200 674882100689128350070455280861184 -12078433007110443899005496369086464 7318428144070105161243885010157568 2135500854390905510348407181410304 -651343169977814656983827709450780672 6415260455301250866373077363589120 4641926591548828365071695822716928 -33309634557440334778442815830491136 9116318572288773196932231360151552 8034935693273551746722514291654656 -986713519017922619898331529257943040 775001638688988832152472428478464 1458261855119343141654972787064832 -104710045359666323093070221464829952 7319114968475943737359171409936384 2480744736887671645524413835640832 -793758529473009019584973413436882944 8077543209518228539291386624606208 9367424355821546389614899209699328 -626709537433785016196349818646298624 7100136481444857552084342281338880 9823637065310549061242580902084608 -587428979648782538793919999178178560 5137771912876033424308370864603136 9748067483319289563131970439872512 -958292507709482155908211246626766848 5322648819466697349029461527363584 811957684058979471554630855426048 -917060411624025619369295777644937216 2132913335532528100529696852148224 5744078037963951471666736117317632 -357963349269149044572906140509143040 2889624745895069557424096945373184 9905786256182339210710775580590080 -849067085315210238584249223965835264 7856920572475809866223566177959936 4403318665023828128600312074207232 -690180517411039662196306931483672576 5254869822890876528196552302264320 1450608704006370310236846262583296 -486439064000681449984435230896816128 3227950439728000516084327419740160 3874258846003958915489500315516928 -274375915851039188168555635002048512 1638897785712997868954041630851072 904160075246079363753125097766912 -294246229344379279626945801958195200 3828669215034536699630314575626240 9979293136113366810481561369051136 -236733795193134341695748844998885376 1874672911683810700818120049688576 7348485832254008614179138355331072 -458971902505251637006371903628115968 4098887898300344509802082818064384 9368448699240536216844404229406720 -914443884349458469353942171823112192 1900837724093911409009583512879104 9672946011054144357237562663763968 -211627699005552751995417999574040576 4529475665042719870047358126391296 6300851409090682676537164012978176 -28380849286393028763051520478412800 3916941710906589044913029995560960 5051039379156415635803862453977088 -672188149248241049504847809271037952 4142382586280713300402292287078400 2032085454598991929532990271520768 -569458715309677860277302279113015296 4205320898864728692110540463407104 7939727667117604255087909863948288 -887204799517706976113178309407277056 8870239263062781437663472108175360 4206932783371947630724359517110272 -599739184956913041911340943596847104 6302571931589190619664734884986880 6093713948277171371077433519243264 -442994809935016119423768199251886080 5452684406812520472657034792140800 6074485157344802636861567479578624 -745685045034246218299243858197741568 1643602134561635118571051953422336 2724254294052336542334234925203456 -48917600014421884308856686268907520 1198140608133190077382496012468224 7570102495276361079502102467706880 -669118095265433685069218561797390336 967653139936062171511502573404160 2440810612509778757438290457001984 -608838926697525709708698808827772928 5102067874723744603616825049088000 3741402336367844825981005280051200 -734059352664674987809063142208569344 5893190498650672674039345702764544 2917798064970314159192208876503040 -496923498309735094506090543389343744 9521758240805583725155907178332160 9618754247868582404049806250999808 -100746085207683451239919701104525312 3468762882074632562378130684116992 9549468475671874703315862214934528 -429869944784607861642001924640210944 8234363630783293105250303106613248 6888568866405331294055477029109760 -555407545745321430567517133570310144 6818825172347520803623371743952896 8529431862316026158340073527967744 -880539216126218114838156142486487040 7973472801072309925829560938528768 4864202197588455292415710930665472 -760724815858910941972357244726018048 8027264732317773506091142805979136 3683094895261283517775900462546944 -790488956807829477799526992487383040 9852490779914062734725987757457408 6052340386862890047831120415817728 -822590463914211345443977576950267904 1535412583502403226304129613692928 2570053204345067905984057898434560 -907161212828595079416736784656105472 5144439703438382189937800563916800 6705733717424003691183683269558272 -165686829488122119005384108327043072 7532497021224171461120937919774720 1115500806323398257212771293724672 -805483978961292134998902070442983424 4776226936150731830182118963544064 3103278544849789100510334903386112 -5752145763056631957179681977925632 3064018443982201282258660833099776 2567969780459768897870864138108928 -322877371203889309898782863945367552 9416198363022112579994947336273920 7030999484522506863932207567732736 -944204044868814254329328872137424896 9352910244694338340918918933118976 9936904131544887030375715119824896 -828345781765648676510313910812803072 2547222215818576369092343317397504 494387523343156326289793236336640 -985598664487897039777653366726852608 9536192103390161304950068771553280 8038178137902824292355695819358208 -64898224915854903898993013370650624 7508597809422076559303309317373952 6168582983939624370863544404541440 -395421621915755993576336325628395520 7422840544788648055369155655761920 621091111993975751972857441157120 -700133624955655097771117949917069312 3493755277245406538957217249361920 2607831193489132317858959871442944 -545197680254605825329237002427564032 4173573848422307454972909804584960 2180076362387048715565798875201536 -364772884236572168845882857533472768 8264155065192787976192830639964160 9976244720447194836904869692964864 -76188882044423620602524975071494144 5478046606575222146675656450113536 8551923896481018144431620736679936 -103347772217338685006517240571363328 1831042944673811347061940315750400 1642015598539538709021929922101248 -559219545771984038179982584068440064 1961184548119550304665000843673600 4112769626013718671575550198284288 -475310126829520892986758241462517760 1909824666064939380096232694218752 8223035300555463331593948554592256 -319273100370315448981507231937724416 5743769242984314520092554047782912 6919755325359213177532186129072128 -822941470698278168591763025977933824 1500556503882591870408354137374720 2929463123769338302108347700084736 -496187849392414571753284156132425728 3824509245893787328823084716130304 1095049800686017312330159365292032 -517049781208322204524025084634988544 6552386508514895362878322950275072 9766284211302464962812926530420736 -364556361788319558823154357979054080 3521509985963931261533193548857344 456214936884507565722845048733696 -835907112324843590654532039737344000 385266022791257287102564686364672 6549341067795417469204460585615360 -868700856446966315770234514293391360 8016919506014158337942610167988224 3874148683676384837634302840668160 -484711267081945202576429542746882048 8777188661641464122295752799027200 1729450440812136089863472545792000 -391541882552556885968965122255749120 3530276492768998169363907161882624 1648153013854814781583688466432000 -364187465776735236567537121610432512 699935608273980630951252914601984 6188573858791864882349578532159488 -172445738530643221509505394474483712 4278324773668747411677285573459968 6006890939464385996720588428673024 -360906619533259592062467932791242752 4291926682293726132944418965028864 9014018248971569964628522399956992 -891921885291324550033068217302253568 5849467846019267312603780276551680 5929975818780667362862477822918656 -624917562794725034339840981116911616 5747608150489483393139689046147072 3129829702112497291636266340712448 -533338922799173130739903078430932992 8843053424474263645224421635915776 6866678376185180665233899564040192 -385019851099028526121171062544662528 7201673742955143900523590477414400 3228517088568329083951737391284224 -826425410590764024757694658550693888 322529342381289286009082248953856 6503964850566978689304001576435712 -102116344964013152461510648275140608 2679681203792207509830052719099904 6029347548941889161624687537553408 -974368725583719032958101651177078784 8633961414502806124437120686751744 9566527670306427312720087389044736 -566639298657826437206908644779622400 7694793444848229296624857209896960 4356227342554877356992699383676928 -319683995132870369200638785889501184 3511235030301740000522902786015232 9699499533849875435097969852940288 -560589656777258361714409987312189440 251180811264742058717143560617984 2912226546286563885378070202286080 -952936222472905024454324854330490880 9942328469808031516791378808930304 9883727091589035686338707702415360 -117479030629852925369632117047164928 5988983827738909285669492869824512 7705932134885123879232327804518400 -798130082082951283954811050926276608 3143158677987956152192474812514304 92080900098282525849926573752320 -556114055621828361529730541780205568 9876337051933357794024286593220608 7783502096852428847441784556486656 -298887814588853342332461462692298752 7608497203951059665787547969126400 1711227046063501147498802938118144 -623527519441812135186657767489273856 7461526183344773315509836790628352 6508347545232625588881442765537280 -311200484430202621789130070440280064 7645313051936282796812072260730880 7340862815947607512648481073266688 -153953219024581542282544997099110400 3844261453612684372843246714355712 1800501958515980717571730265079808 -7896394490421208971926392950226944 8786417594091232874810742233104384 7837281971702136197317948784771072 -629113025665709325425935105621229568 3454521051393504275488913093558272 4683119058377444900721840005054464 -280043924235913551616290985485533184 8583786684566208611200765146431488 501396511079559787397296219488256 -455633033512014161459963197778821120 4553861644011681250326678169714688 1643848926779876087270905724534784 -512609319793197372719207518174183424 5876572445968462116967876074143744 5187710774098322680566470043238400 -230045561739058035895497254940704768 5228859542254596458632821677752320 1256521713900031343946515118817280 -497298001207788555685143045354815488 6592937512084816783367186444976128 4986796061264076240722924637519872 -879165198457036219554877181846880256 3140028271473657844960286056906752 8626666349223270359533292798083072 -463671184161973717359307722384736256 8935838330936054072723983948578816 6513001992209590319915786274078720 -933649092627849066624212836848500736 6241434099955432315723420486598656 1043927293211533131492751134687232 -198683419132344072676775427030646784 6481703608703961264571345063116800 235051390931344012213169871126528 -42357964592305548687745082615398400 7613870214307412631706548794556416 3902827563753170139961065507651584 -784835262844094246957280188384149504 7085013536379822446145009843437568 3100696799357139828160565046411264 -35992811595441067220089004231753728 7483600541994331343694425973850112 5909578403781311537392389554438144 -73612450566802884851316058113441792 8980949471775876464353661979459584 7615998004586547212138695545061376 -267929697608806915218620516218699776 3759009835916319472365896801976320 9191021116478609576972426258939904 -754041694112550047614058399287738368 6068990413354129025271724477775872 8654127851515284601018063830122496 -971171116671538374925888686034780160 2790277053351273509982146366799872 5073022687031662754892290702966784 -653957920199220824000513354852466688 1903828995441805404002685238116352 278019145229876148737260746964992 -754977603477643343012306416369139712 4844283283480140672769477973114880 6371245598705669270396858496188416 -638028996225623290217071733672771584 4060358349586854560937366393978880 6263155739274771179579293994844160 -715038158173878777031318725088772096 5058128996118469378608491755732992 7181655814097228177052934885867520 -443596427669707386877002807135698944 8420868957641229511270030762835968 5597595721828148308921931991613440 -465357946306915250920001385783099392 3903679019106289917377173623144448 3376440725236946335626897188192256 -427046951176242443161763083515330560 7783305851256261823813181759291392 7696424950573009053602240285114368 -410280248339097996425789350090899456 3551740936791901231075699965558784 5485229718071106806754328650448896 -49697341558037591087937699499212800 3672503223689919107625510269616128 3034849259924563315449978528202752 -80503804355156665403823733862301696 3017265988335026236309241965051904 1538483427962409670469895082475520 -36201188248478031631378637050085376 8644163869076654656689126653296640 1205007063631919808676053926281216 -118776741593924758618904595613614080 8073159237717414749506669916454912 5545572632308764548300234456825856 -1985423171636256355230265615843328 3650858808815936047013098619404288 1158033107548006200229244266610688 -26414167538641515043352835654680576 4508774431726687245058627375988736 267785591776265708096011183849472 -182353640560472718690042621099769856 671582106483267792238206448041984 3898416815827915049875339797856256 -61092734102279769928098659268820992 8448933310245155933189470634901504 9498205264200733614761301300477952 -696649105848861562844250039304323072 7026320062034415436613578819371008 8839187016263553713470090575347712 -335686392305404501716641855626543104 3452676876427518070217846588178432 319224153543256883989135614803968 -233744098885452153076886174475223040 5759804094199880761031788022726656 5408594233843297002472650708090880 -289448354517575731683330228920254464 9118906043600768060935473194860544 4331642598900161755715801198886912 -226528388895366520961678096549806080 8441792991656243492175787467997184 7200776513487544991198440570486784 -885022952036833359699036069372624896 361329157458954944145325220167680 4141496103789389386305030852706304 -355125251479047355919621578494574592 3434134761001032629876408748867584 1602308112526937221651368681406464 -318504722120825068000350578044567552 4004916359878226290299419905490944 5922733495233394419560089380716544 -928084153631244919033400132758405120 5735333083419252140633340208218112 1265481769235803521919545845481472 -852762371537668167910432149839282176 5211851796799085911870257615601664 3497671053088202487963804644671488 -176883377030012568679595737098485760 1925776421168258779429752400773120 5108957941058714639301061409505280 -631978896586663399073173450176593920 2284910389850560949547567480307712 1701856817069668805521324216680448 -892906877694772365502545461394800640 1460408445337978244546885855477760 9987787317978387587290396905963520 -893881397480810781890121518240759808 3969104380688044059865201684512768 8141398888556527896886059384963072 -735111589386165280494153794934800384 9376892049049207293948660587429888 5741304908370669644809831066894336 -316720674290408955471245995925307392 6691487626951989805651118654488576 3211405892044674118227694733754368 -938464592605086128836156660794785792 7988368958872096042969463825367040 53560976230682606883060005732352 -134614772244426283248976603788607488 8178510598592162837694958956183552 6827174769659809469175599711911936 -263164321172763076883101959751467008 32665592679296872598206230298624 1939030984831247399665411695837184 -14364184117491569109362024812380160 738667533661294669865402226442240 5616593838678381459009570907095040 -306650124671289410387891010832171008 783411689851100276087640419205120 3104132103272747686504542999937024 -881442221637626652046176039055917056 8755834126640192672554813371711488 4756509172179869818144539229028352 -225576731723663892954506586971176960 1494457896512223323885634628616192 7241000045014781266733302917627904 -12995868875558963127715144948252672 9807293600299616648841781311438848 712229159013335975423249951490048 -11300796073913543034574330793033728 6928979007921402659309187940483072 589223623522862301928419569434624 -31485277158585210188596915839434752 2994085901779610522572164958257152 397795095294429810373168210116608 -964671897221818585820380820530003968 9962223948159552617639751964426240 9505079381218233083216634667073536 -437454442360268144304946227005358080 3206280616456876706052233603579904 5295721603813937876965693711187968 -824561624945095050941076746543300608 6717200171198668547555192842747904 774509900963990231380305333190656 -755642869253810456719100813638631424 6498827432647900990923465186869248 6418352503622922229737274027802624 -134839206016345176258344565187018752 2237407300318009575537874674122752 4388639448621769444706580139343872 -122748864566364253680585547410571264 2859196797262132100976206843740160 7815497508343341342914325426208768 -442639664615240486865330624308183040 3885907269293554819235490513813504 4199339327795170669934397028827136 -296597755186715263968492361072246784 1158319987898733726550499572842496 8054915319194246547752383873548288 -968236778448684781729132914057150464 6643298603360920560517706271424512 6790119995130473816207676017737728 -627464242127001870889274177277132800 5936920441275063735448293546655744 9787382633144340891692000522272768 -614789919132793443876208579803348992 2196766225309032130526528606830592 7129144945791406114372228535549952 -396499216610079796312495101780688896 2154858933017962420074556453552128 3631509427902508108620044414484480 -984712298679557536220655723174952960 9820649590187410018516858495303680 7298060185394389175174767153512448 -769971170005315856261273848849104896 3950628437221703658063626334371840 2259555870077090122901916491972608 -697019951894858187724959563311480832 3911973398642480831739074229305344 9720358330746030298749041675075584 -876179944012124882732398386140413952 7568549250191799818704014685503488 3187872120637635284484272907354112 -135576612971709757148985466931904512 8747670225998333056321190048563200 5300829281423314082746959445098496 -152763537180236810431636596225736704 4073223630235484800169482358095872 9643219377825080103196226893119488 -382548821961758964925997569294729216 5078817746257558885130343418953728 8001999396688452734424879913238528 -107452435011195242613078853406425088 3560034966325185971521508161355776 3175806212174115509372963596009472 -100469200462505361679233030729760768 9238356879446631953514851551150080 9377758785998304823858511254388736 -702934940598372209791814404174512128 8650916227884541457213597176299520 5425000100769110428037141611151360 -411480398355904752873945774503755776 3271244617664706503097441067204608 7681699043685650173720374141779968 -912376286139570939354275530179346432 2307339949979000236703695731949568 6812505406834291204760845535936512 -29358419719977006327653181083877376 2673784068934493292966595044311040 1480302489945353120874635401887744 -447827937212822287918054092518195200 9498302476732820345246684243034112 6792107281067690296775509396160512 -483303253996099951748356478857117696 8758924868594792059832806332694528 3148507567843770299425141255307264 -994169185309817487045678600005091328 3681057061253779567162540452478976 9603564476935761814883380857143296 -597619257839554300828916978999623680 2481947671220788608277972971945984 6872875293642728074664087037935616 -979054808002604803468720577181646848 2254281980324540410576980615888896 3909150322683557523011001609355264 -57379813374298032843507495845494784 7749272771524065171391156034994176 5311843335000862743248724679458816 -905415756099071009602894060815646720 6318543017819186630795601318510592 1797844529780523209130328100700160 -154350040592889248429694107732934656 8800058177179215691015926214295552 3742336686730261706249098059841536 -791193088336807286396424755099992064 7382894896650388551209470704746496 4525165377820864132571540402208768 -702157686743103526741327333761744896 817463506558366080433043806355456 8569308601435338599953421781958656 -993829443519088503102835653758418944 6906689887722236720621896823996416 5960101137244151795275228719874048 -324933085635634297703819927856611328 7681714968427829871610761075228672 7715240242897718667031429290917888 -814370987906591349684475800049418240 5216677822422438881099716558323712 7457184964613574980429387422236672 -917165442391674484673911003379924992 5520227213903033677856780339642368 6838932164077336039928417182810112 -524966962202463593794830587423358976 70075696064588559893245301096448 832383534605161844671528564686848 -638930191258844442826481592591974400 4076627261194387520461881561055232 905826928880065066024766097326080 -771185811404264581310573398278012928 321894476818795754401943248699392 3145121981563151173484998226345984 -577254815622243475327815667305938944 2483408941451190096833427540017152 9028957959596159733711712739655680 -683998397969484297373111214424457216 7128938846618700400646904889737216 5333918950866909855920980838318080 -361286314499766831646000536061214720 2295640613198159990777721345015808 4323284035306238351997313797324800 -475016126827508739025287576555618304 3611782907910198097755948095373312 6081289651523691477811953959698432 -864641324182495811568363892453146624 5042338817185042515750251525046272 2592840968526784966267405267369984 -831117316282942603959528698815709184 8527791795567922705618224904404992 83600360325533609146913508032512 -304279993751170712332834718089216000 6230770938915298153333567478824960 2494748451541309207083443642433536 -96294931418445916767542623103614976 8832344119398068100672082793201664 4238072430568275317303422339776512 -518238291128949529335982377056337920 2886541003842569357710259893829632 8526743646314571441450128070672384 -431271764869657359341244464316284928 6626891922866072332273788313927680 5377448768787271926905770505928704 -948136305296112485315417200931110912 9408287929072981274212271164227584 4908783801325527780691899404255232 -656936244932755050987798035781648384 3606386217648349606505270434856960 5193162054252130566790027103174656 -467648670643855025264344755400081408 1344226678293463080128762062307328 5729638959224327102745134634106880 -193862505340073727568220282748403712 6366984648435781515780845568262144 3523064454532452007512162091139072 -858663135840807852790894449492230144 9641314088840817697798578375753728 7751474593332648954369445682216960 -596258517923747828217141922034089984 1163994966807868302215891604471808 8555993032816671432780188525527040 -215564255914445924887908471502012416 4730344134091529654782334708219904 6785416848242918188499245830504448 -382449421235707532051024072918695936 1710002835747050462078846478843904 7332611961608512051369494148284416 -3417918893900169060843404488867840 9376266587310976626068401994858496 8130404652642874424039671045554176 -806460882309938912191149994760208384 7281187327524051960346190205157376 2489649872247257357364773978636288 -792906212451867803583926778619494400 3499898442955320801893220742070272 3831863808658980214054929410555904 -393487441623707891230309281966325760 8205737368114106788083390050467840 6339006962490617720794134377136128 -13008602684852634861040280790892544 5646042023598766423565500325822464 7012840568579100816418121111830528 -580538348000840841272756737411121152 2567927369684029223941923980443648 4075629509663156648506434412085248 -15853540935698400428033605176918016 6417900585462402402140711039270912 5231716733481528506312317837770752 -687400603846725330940412777212149760 6687899903489638270765025695105024 9799633819206125727191438314176512 -275786456805600692323346504325529600 9420569282225652184549431846109184 2533271665021777759440316101820416 -515013215333246021557752402272059392 3186603273755141472977250099920896 3235847099551171172527175920254976 -511359255256806489963452666593935360 8741146912530315347547538128371712 572690225021707998906531312566272 -483474760936058980552245318078431232 8330117448868400295707524802281472 695378983242775697068090894319616 -210891128441561009941222373982208000 1753265669207078468762668554518528 7331532240752032997261226696245248 -467554349885432077875555800602116096 1901876999105975697120500190806016 9654657572580573966686814824562688 -124108377198042592164149317311922176 4210298284868874427233842363367424 6941899627618381768337381818105856 -592411016244104171429963042977218560 2958614134167414045122019568123904 4124477884582225845300787870171136 -750359021623474046964286283818467328 5185314207902777873554525942448128 2543046509224743227948645394415616 -563727205034635203059763044579016704 287349290591848356047437969752064 3393407806878824983911602398953472 -483371781873489602847186970151485440 7074638566714097679247385693257728 657844000853636089146625610481664 -872029438224079485755892086832365568 9295475780521146928995540699971584 5708574909008814520076915261308928 -823162818857361449313419503318597632 657965676180137995554422421192704 8227677324267502876286021967806464 -998845761383281893996119451081113600 7554370575082570568454811076788224 8791728571006071823462963221626880 -656818130863170752926183233488420864 6531534957117755218299499728338944 3335205778563331734572676790878208 -292496922996298597114192595613908992 250803675238273820974648318230528 1772987278553275442362402817966080 -338017408430993780959741851432124416 7086913214712163213441001456664576 4138182610286387499483282540593152 -274372628116613137055315185566220288 5863409709863875450213298509709312 8099337049073583390823475425837056 -909061018766062797193643929066536960 8459128130927942638909698768633856 5232336992878562449270057302228992 -520947892862694733771776868065738752 8663621937131956220576726314385408 3435822835362946177502429065510912 -56293030087107650886530679737155584 357962457053359747966259787988992 5140866183935593792612597525118976 -520130350748915718321905160444444672 3844125711016922586850556439953408 7219880350241981738950285521321984 -897010690297218453191416795147272192 9994011094443487058544659414384640 1983667688124578373670887808303104 -396736064448861555665109987979427840 8387899526727574972765086377050112 6567179201432685267469569569587200 -988998346941368899354985108435107840 4485524272580383492179694207369216 5320737477787259369504984417697792 -344406350599008309018455017464528896 3011283534627174443517783115300864 6635894781870255660947958386393088 -121331015732640253260048940960579584 1806385897981290902635776109969408 6837162065134765982879361267662848 -591644508743355263863961197310115840 1669600369563596304118446416723968 35762014355077352302504212168704 -509695268465443479269665360620552192 3359003229399784202130386092818432 4227339896943062581300136473788416 -13857535820915591575229174965600256 2164977256888905222332596770308096 337804997083953716208627745816576 -105348214140072664344586910785601536 842821480262713052151797338079232 7999008875945160874538123904679936 -355818186100068182622980290014871552 1134310698256374701262303154667520 7574880448873260931814170390691840 -69544869267641134745938871166435328 7338264247656431479501258355638272 688864889362335912920982885498880 -182925739866821021458500191497748480 6336300414772404462057040914677760 6980315352865645887502825824452608 -724652355408995130047561176784568320 7102921400314101349855143200292864 773272439999728195697038279573504 -509454774204763065349514760858632192 5878750096677713546990780470525952 7707828646325061287222287567683584 -587930923385507744404555543219273728 1294947265096134889489966905163776 1739014902924430884026257703436288 -825677333501606519125770281238396928 1674422135396064251165310638358528 424514414213580169321253106089984 -585771494560615860927871743319605248 3476899116244729596858425879298048 4345154773879336584499049623715840 -662089815923434747240106250358226944 7290338145181145934008407868571648 3133520388501573747381987191029760 -175370302656175771309188712455208960 3020636463442498737656168204730368 7310575196733129055972006729613312 -835487822260158687206044751817080832 3993174038244704257674877794779136 1180288631300701364804978313527296 -575173443260482993178970902017081344 4550841975506100344193511143243776 9864454821557738214038111604703232 -120603450350105616739555874275590144 3430582540452668190542674708660224 7946881956278811138272481272397824 -861875247030484261016063684401692672 1075074195064117005300906154000384 1837105393618351431101249902084096 -342780813362436978423481447135313920 6241795943624483112731285466906624 3797581821429051760090088191557632 -65967511408546367227452400353673216 907031708320465307853173599240192 8851941089232509028403657777872896 -288283770869251377030620725091762176 5299949335267957845146757758976000 8507034035056311670742389929017344 -668175341764780442515802239468044288 9037590773068110591214153331900416 3529782971296948611306904805703680 -396019109859957010131599608126636032 2466193741305324156807570132041728 1185489511904811188665358221312000 -500069961278191772968983375988654080 6144268594188807439309017861586944 1224715993354836556328522787848192 -545154362818738514418872411236597760 1446766457737751983856997235687424 5523234525160534494826221740752896 -760782352480073204055805565576675328 6594395962373306351084229227446272 1339260453681141247932284220211200 -101262304260246106833881843036585984 3311607853778675563561358190444544 2919897923262093397104078568292352 -278864842450104704735533787462500352 1013155160248196676838947643457536 6363174003002196353450471495565312 -35101112637742907211018556412002304 6960647413988174815191415411179520 931835425769292160691028398964736 -411981215099165115250827198019403776 3583191144244452257538071081254912 1166451273033576646107807814254592 -460930974266522875239386644157038592 6555670719169502408956970503503872 8163122449761434212746664117010432 -670642807745573657829119602565578752 6681252882298738007802928970072064 742696646277106151988044717096960 -107592406462502557684345691135016960 4980023174025046864184820134576128 6384748044432966939681966694334464 -291933431238892800058426474532700160 1707647624213705406801152860749824 8138497218820747311789377534820352 -856140364680525484886085655234347008 1982840095309440156055605549727744 9742722406554495744280828726738944 -703041245425601193183874914048802816 3542869462291431765318313508339712 4360466289207918624469912492441600 -89225925074661589727782830973386752 7767643424919801004985073778294784 499787177790259677576773744197632 -864104087509462796086514203964211200 5111432884510114844557639231209472 6506307186030706699384419629662208 -187919925842049321005541521105092608 7881271989476897813750392689786880 7011680200026504533736415052169216 -74231130652989004459020114513100800 6063691285627272285501017563332608 6247994129059958105939726001242112 -752913477328399419894440400825352192 3231292509968760613066817709015040 7156651761684183000377793695449088 -766815103000522256313433044826456064 2667133810333716601327550147330048 6920359847303160179619319861215232 -59362559445886411833337617275944960 1101819528741668822786602667343872 5745154251238349425633703556546560 -713514150969169130180828775462207488 2142019624081980002505677957234688 7429268418710192356342802264621056 -668287067611997502514260606455906304 3343374212220697221053599780438016 3551623518203871052553906288590848 -823371746964370779744513849527631872 1856696381275087548233903402647552 3113670596724809106222186883973120 -729919442329958728657258032079568896 7982122398953643151821503748636672 2179049053178604979553615457812480 -418663311682988129839002984676065280 6448614788166128509784348262662144 7546510727592867089800346055213056 -693788194514688165835083525455347712 1439524663773456513491377879777280 8511013617326229771554364061646848 -46384997246271932542772556475662336 4343520442107818606320447739920384 8442469601721197552066169917145088 -292940408770126179605318136670191616 2077264687836312998502610205933568 248655734158601885990890952982528 -137238918860564039134582287965880320 1669528290599831435047981675446272 616913219447192824555211390451712 -522940099579320177689093534298144768 2856143366543860771182795668062208 9546463020283094511790350657388544 -836390807376446755961361179305050112 6898908581806398367666178841640960 9266537562240731404507380260536320 -405455364852358940461585978957496320 9317559722575041281655508104642560 2157485747962668583416413433102336 -487644311925165820772602733614071808 8173656728365191530278403929276416 9538685662544379975869837931970560 -711204106618989703289555195493613568 7058056112194619789099729210572800 7676282376098510407439866088390656 -526838315969303538336652311360700416 2242780002113012036532692257341440 9765299793302153752685658719125504 -13418809197217973877708377718521856 7969621180211331083413186246868992 6357133629796173001169808614490112 -477390591039712057777339731112099840 909389196398894890942777230622720 9950461971575940167344859616641024 -256004439606191555799245194369433600 1214205102961491652931055041642496 9754534599675956653754249698607104 -901598064380253595406789119167168512 7527804323512979111237175199399936 370865930128397930036027105214464 -593900050254936486369609750853713920 5765597471032300111562275941253120 707685227419262916959342929379328 -174391864091132015117315517372694528 9768667351770753219235810226733056 2469850390652888995045273654788096 -482584187431562124946649629973282816 1021637382414422048990352335962112 5050828555022491313663522782576640 -430609576121367243919343885534363648 4881655562912392255296907484594176 450067276548230239580423697989632 -648188410617887724147422212562878464 1343612645066850286416473146523648 7371437617969335106134201576980480 -669690511089009594285860371143065600 2404708701243890747850104760172544 8930107552464851257570504822751232 -384493231044576685723523911130284032 6824777844304119181818540742148096 275090869792485535355283733217280 -269691849867006622334912657688100864 181693222657300406972231435943936 9044756308108452772862059215847424 -991390374043576272755831165515988992 2559666129133005746484736291766272 7960716172228821637619879071711232 -320304976431050493881571305997729792 7768356294764155687323503551315968 7753521910995111650669091711090688 -237477106232142737257895659478974464 3161006966054089958097126451838976 135419386121003868738270068211712 -518949458789855271320889186133737472 6822779659438260858867626014670848 2418523372754624889994197547876352 -287514733814846519132798315288068096 986016343677419532406910145789952 3024144167092871976647022822293504 -727156391755556331412530139418853376 547976493076414483865788185837568 6614395102053160339616080737599488 -259504366382042849732663719575420928 4312451220557695544792163559669760 3033373139535983161410021918507008 -259172513674659928128326430170808320 5031575250696913292795439703130112 1865782700208273956634800915742720 -314998439327889135607525995769233408 8898676244701174585362102255353856 7276370252764283319295001701122048 -931786266049213150152090763286020096 4945296437355329705226533972475904 2680192604176322021496940700631040 -346558309298580527279568015872491520 8491311656825298068183677619142656 3991570645691552929173397445804032 -238351090788774004200701121930461184 4094235175158411939236837123424256 1142925910697494084492906356277248 -214731136070625065412849814133014528 536354523536060248040425478160384 7813295838487124407091228655484928 -718440558197623388845474847504990208 3129666604658737011341398919610368 4218420800168417410262268272181248 -663771288774202544332555796313276416 6411666961525585064775387822686208 1476959420294674377481194087383040 -102385559307480742602575298024177664 7644200288791597131527078685966336 9380804381722565741287919600009216 -283698388685937491713683420593782784 214244393217138357897371083341824 9518484752551958499123622823591936 -54663976469512096719515529152299008 647069127126141912069445611683840 2939081127369080368116702445043712 -352389882169532740714088906155360256 7560823449090532435051258985840640 5798655206504224228727884594806784 -325561847141538358465054388183367680 318525286555514843853128760033280 417325494015238507547696553787392 -364817156599461057774905827082108928 1461753035375301683034663782711296 2720294945466062594429265354162176 -202865736906158923673388917272346624 4240443012685535475191107716907008 6434061821547632406846493517938688 -439724394443640587685864139023974400 3762910821356969308355679330762752 2019010739066617799926795158421504 -188274390581785874306929489201856512 5050208590372956370273165039894528 8835395992047529369503280524165120 -186366112206652751637302212726620160 4758165648759164360708804633952256 6360265493025709785860325716787200 -926348116756516921901404794428325888 1996157505982976731546343281000448 8422805767629827901721055940575232 -546284975585531276837888003888119808 9795931618369907917918842470268928 2089005990141239731918097354850304 -824048372969719582047262239526748160 5039105093240487447392979829915648 5522993208508111675574344346501120 -210076454029113778687673056402341888 4923030591803349978831382716088320 2309721510855599415970560751960064 -973032112216606438496601896776630272 6759073397372308663659388211298304 967564867662108090722596560044032 -682549000152006847297523307172069376 9778965014108012574288411092844544 7009115661067817218946224378347520 -136566858324037414624559727240019968 7605647958228955837933989836881920 131537573593849361167950599421952 -908372256875909193029535068535652352 9698548635517752987880197390860288 176598189334472896781307820900352 -833745206851634793848273521476632576 9495377139457179621127466055106560 622457331069950147554301513302016 -966144036037456662293016067912499200 875309443047659959882248888516608 3533374764208674505373201270308864 -700917950678273412525760139172511744 7701761521569886351057627138490368 3456577696101948112543753961472000 -579781644042688231269420645744640000 1552386896829447970608043421335552 5915715188160036535900860852469760 -120736573220905757744953832725544960 8542022435625322868392818708054016 4096900692193826072921476188602368 -317975269330331646702705524990803968 4292100423921972841224500282392576 5762774464142634041387834771767296 -129107526595126599113962022806487040 9521886856122167463464003210051584 355839387078827397680895801425920 -17473167028347532153426128177987584 9996026703812518706928138368057344 1984267498921163460846577766105088 -647438044736770402388736756724793344 1036328798007365224571612707160064 5705496551929997079754746359709696 -874428122985493510955379864408948736 3057856690197173870216078256242688 355434484831222926534855295500288 -543192297455272512649762496881623040 4533316626467146965917065591914496 2592571497261178914238844433858560 -3221771211376752726629867042373632 6869450331445083016204699064860672 2781656021446258841938854842204160 -760387693642602814460895310043414528 8145747903892592252022560940621824 6628560171855062604946675721043968 -477021820319118740076423134192861184 1924464925622134102788562787237888 9451675765861523294267522601189376 -491664167510975828068012961581498368 1253352230872817870344677975130112 3535974548274782512864301036863488 -117084909606576786336344993188282368 6801788822526549612447214967193600 404255561751899996237305921667072 -72851946525553093003552964653088768 2643495580895574012183487564480512 2326806859991272125855212687589376 -694897209371634872237339499789549568 9424410713321035074236409433817088 2993535665822885762383011051995136 -272385279925972901332260872272216064 9477481952093771251947708409184256 3408474947725180516126197135966208 -937895510521256741225423640274665472 2549211735255122947964178142330880 432717676958613924486943701204992 -420428166171159322435188756137902080 3901411412125406704613977879478272 386409350576114072019546121699328 -865116340839767973265035873430274048 3181603263959037828873951826149376 4127927139151453222399807038947328 -683934495366274667386502862788886528 7615500223323611478977593860947968 1407199663356166253286925147308032 -594504531855884212106562024245297152 6200020109562997855599012048011264 4732916999238065362481741234700288 -805903050344341659995946459242430464 2940714648623975684990964254900224 2816710937873495239912807649509376 -388372802176407964708868539126120448 5865926692565233886283808819380224 3521052727323697349603087014166528 -561416010696122344130719057058988032 2273884996749329170920696411324416 1222659293390986265500911610626048 -855341309108880554647975021294649344 7649596202269352560780202488102912 1916203657443407038157019754266624 -544905064567799902027143130462027776 440107228472871165778009499107328 9466256762768534758315204825579520 -533057081997353924422142114230435840 576698637335329081606600734539776 2109913559069658619166864258891776 -866704878627322929261336607449939968 1371291185453557110331044200972288 9583814789754665493206469860917248 -820332279368144930267973254784221184 3462293189924757575063889734795264 1397634099032164533700890539851776 -117493997100564085051858144997670912 5641563129624803809961557194964992 9212875867345094579319565358989312 -372457913671759985582463352372723712 4288516720758414503302331010908160 8837491946656152312516564955955200 -738869659193454691131168694281961472 2761457051809870827324960753582080 8226703819009687031511270087983104 -971959041125795471898200670113628160 2761574046669125682679627659608064 7095974789917289545782290265669632 -556939052825561781277522446054850560 6257138979957397678991011175464960 1856087952595570956951592823160832 -715790555830150570223910880333004800 9620621057387965017591455214993408 8098857980210426372592799571771392 -433430744216179795522393199656042496 3789906603734800062190456661868544 2211034517448426930042397995827200 -597664403388722451393831325461905408 5959206970262969638073377067368448 3066403042769925479619179592024064 -311878234508748774463427556967186432 96061174664985571743472872849408 5323874016827427835786714694025216 -857239232792380858165401331297157120 8945376356165370341294871851040768 3458469310709625141547657796255744 -991207112146605137065802408925331456 4704787652059783789901374493294592 4112009020331961217423378019778560 -224783387469163037880822508640272384 7370842226625028534442174472781824 2477678855276771830444753372053504 -235368534433822562851814053871878144 7714468457353672740976724017152000 7411783250000060983296758556655616 -848953987572821164542997559783718912 4501764787030229252333767921500160 8789087696345143876491038548819968 -551898039323588603536184565034909696 6143866732904741136438034606063616 5428926325788269078407644169895936 -497467235915832874008881403179040768 1858557177936651063779069316300800 2061224333427226750323301420105728 -698617781486210313007927753873293312 5459465038453427177345843111919616 5953596364304865842714191996125184 -503874657565703216067587959771103232 9853889496277213192428420467785728 8737341781051687538826320344514560 -480359148271008023398778203067645952 3622569997694841782346831752069120 2097404910591643433821447840071680 -482126211190400591372221401532465152 6489547661880971435144930037596160 1645567264929637111923388029337600 -272052826694353372274585629085401088 728383163413401469376892667691008 6481180058279542991087644235005952 -99347968445206897086182506551574528 5484170791161365395269653322792960 9611089677401231581353484811763712 -951349234006721219333752677459820544 3276363593356211887394160377856000 2063733814271212401297618230050816 -333777855838398238347153290825826304 3125909740204688928462632405434368 2335861484444876397623359280513024 -451900039660425442328591528051605504 5298617332813569608685739397087232 9925562033295921466590459160690688 -632574803004210738935934092128026624 5043466722182989381256399607037952 8161769822178936809936501946187776 -232070932086181186388470530970746880 2710548239010016423735354848182272 9046210131736888938900407124492288 -878188714531611734494475172588814336 5790539057117816641374488065212416 1677983647653678156782128158736384 -957461772343077933010081926294274048 5071057311066744077110357329444864 6832100391818731724684231807336448 -857196103983002139477671963917287424 8946610946588927065985864326709248 4334661762398056346481091351150592 -67008571617200589193565240098291712 2437131865900818747708887300833280 981253317016983383200355577757696 -613123866371117327258987964835823616 5221451107917728221589299680772096 2131435894963028212041624991039488 -528533254734739529101306219930320896 7607642620094679191991101736091648 3562426706205941739536055745380352 -151789138545178140633852603256537088 3562776872714043530728257557102592 3979950806848741017042896025550848 -470777686658208452376784706830598144 4719293938954417619680928810926080 603622816681163881359783044841472 -574051830925263716162051600463953920 6132926760007222264237939782320128 2926207898163212073526570686349312 -479252168864031298960379033679822848 1731293091441839815866478760034304 8144655834945272991640342625255424 -421359901120445698289084163527016448 8475596312228915558338916647960576 8840688293347531343906948878696448 -592175850687834924185081623091347456 3131992800463483791190522763149312 5977578466459646513147154656133120 -502734318086913202975109391147073536 8268601483402451454199363264315392 3015486433365200444287503071969280 -199683820279917369372833900084068352 1354210869840449190329949257465856 2976059888571377975644629206302720 -895865416536912017915968152181669888 6195534734508471281082206036951040 7242319226654961361728013313507328 -615471443989172938991572970224222208 8939022177584226050685224131493888 4570361737761448250722384315678720 -953728485434325611628107447905812480 7127747698509130673358769276059648 5617982376037376769116201811968000 -33818487145226494288528775091060736 1265788946234610462794272416464896 8743476384134077760234790055837696 -835951854096026869257763957409579008 2114524238305021624681526858874880 1659723721505220072075141452922880 -145007123671553536137717393651662848 3312956287587134194288974716993536 2154535611703561185349628155920384 -432013141664167062905088004310695936 9887372866583248398610341329633280 2078398266450615899065753440092160 -794989632843892336589354611014369280 1725899471375433569963470003109888 2775174217645221026351237868552192 -815362266861738996881716004763205632 5528930215133299986817405987848192 8907323275946540950473362743754752 -981818643747980810233215101180051456 8730913861031976522854490112524288 6901529824488324691140944194437120 -600301947368952017566208335047294976 2333209901196819000653001384787968 8094135448544987880982132505444352 -596195695538550854590868883043778560 5957997029922927763853607302070272 4485337010132118600444129316962304 -871589897144393066480867963102560256 1873449310781032649718397908549632 764093556717387042337693701767168 -798067470404303289369908348046016512 3803341027738056350241946488274944 3706522490907013600703519196708864 -401462591387203946491808220031483904 2276609641348820480522917452447744 5920997417914283840648804887953408 -10826793539148931653920308840103936 6313496081098103683321337087000576 7627013384449842195681759205523456 -509363267472200816732658555064156160 3157205200966617783956363406213120 5379327304618183555557857848983552 -2810775388026690340474639060303872 3664984270917748065442781336698880 4731125541429051109473598115414016 -509110218208429130191140978492964864 6258687989826366516327277207224320 8362212556644261385630587937619968 -306634061262260710209552601533382656 785165857946662317270869315944448 1213578935112626516196258805186560 -221399016534096627679331684915871744 6769099497739761426718230277259264 5299540804166021299368854764388352 -777696553329323154174884026039402496 3744692764035634867797585530191872 1764241410690166612164249168904192 -194444367543453433876609606191415296 9182678439237723784679384361730048 8094651084144697698414603754536960 -39110007632344959811085123979313152 8422078503484399995280097334525952 2371541831930228311388880659021824 -919370331758281874606363774789091328 6010982509250484225203752161771520 901211844006275050383242164174848 -37771454195782704546212705535524864 1421424918439884809591355407859712 8062077824032489780991758971174912 -975532852243782956298768670695358464 9436460669414669834900719557148672 6860339433101843376894544648863744 -887349065925929037873749897498329088 3858828849868982492051980133859328 9996053788498310223922954460200960 -222980387988589376239358509605453824 1562523962332071403141300083490816 5702605639931928836255034460078080 -847895218322855667485728238951464960 481852167809956935081811190480896 2314056164174908638949677094404096 -107831337906710306167267318952886272 2790594696392708528334933512421376 2259826662971829146122492082913280 -14696846980592391881865137160716288 2723190840231915272734690802401280 1055983701153827199536560181608448 -896040107695430142216458441039282176 9528325721168689342660107627921408 9390720800194838719599420398108672 -607048173212706587576460525147521024 5301100421268544544435155100499968 2027056650095916689783331915563008 -229325316045847823877612023731716096 3008642629286131920917920724549632 6377998445654975569023179723636736 -871262587825771732936336579867181056 8572963401019007095497369422135296 1368386763396909182666434813100032 -209951662210138107959576178475401216 5598691378188249018975686282444800 1225327625711699256405054944444416 -638919744091375414869331393755742208 4635543949793148319148548359716864 1845700882040122437531931036876800 -604904888607194557832358522697809920 7672427364271087943408282115244032 9161480552893967610956721550262272 -44320753171251466388694467577118720 8624547792345567082581936465510400 4256540677179119783848257760788480 -805708822031211052014868459834834944 6367659301278437602115890041585664 6785904152701787056661324703465472 -548736573683803504107401899170332672 9900058088841075390260617200795648 3741920580045079190898701080985600 -837473863880999941144206224924868608 6798010743449397822849055021072384 6975446323919147139059842423980032 -708781137507672079261596509532061696 7939508707137342203040745555755008 8487556118656995155424704924221440 -699471582808285100063760423422263296 7407929456999985517287900130050048 7014866582630528220489647535423488 -436161562627042023119053283171237888 1321403870107275930589363659866112 8272281356798408970460155778957312 -512965150442895464858628009549103104 6310346813284072531839368908767232 7565801154417463427394440240562176 -425227658564974140546268745720397824 2180068323237674405460346398572544 3299146861307365394572833579859968 -197091518929899500011580841701408768 740688690717815432892644822351872 3547628319753118858859333885624320 -268598400175391279097658315632541696 3425341996893060801317483770281984 4309874525453876726670472257732608 -920650027593972989600358724005789696 8771321595573473655837458379571200 1890763669919843065112133239832576 -826590504163351487106444367352561664 4778870626096957769682419449856000 9957147984948434048367836480405504 -527326685525610325014975625660727296 5673375185403018120589948504506368 7647751950525082759040005427953664 -650975638656447444380752791241490432 1597012315854503000837124387766272 2582654825482962317121494930423808 -575934468395622049995487653046255616 4111523066734129541641113633292288 2035123503971909945656199755071488 -926690338260506244238235977983721472 1050010588305805747014088477638656 2704801938002531658816691086819328 -91122040269850045470285344519749632 4874220570420295815207618439282688 9724923651886664866988547060531200 -997403007585232929532445479906836480 5115921466294401542741198786002944 292265263329592180292299947769856 -388282486382680011098308740296736768 511758260777590301675338820747264 2635928623562006745853930829250560 -511277345805238934352545042397134848 3580673833063067528436402047942656 2352906011553738681855240648523776 -244980775039443609850809088391249920 7279891558669571978290130266882048 178851170231218066657149144006656 -972416975501647940518821724413755392 8909654448414245576535016961212416 7716117352244898760600578387083264 -9875359189093308997981748145946624 9432166196424182905382381209780224 4601368827568897852855090541494272 -517904985250847803380114374531219456 4365163437051506659538661149769728 9129031921532076375420321505738752 -458628099009412964329055904331726848 2760237942481043553941381414125568 981967124755039010502811454537728 -908834537734011772622628179857637376 5422175244115550321011953772789760 2478566358544906586337978487930880 -22623698411511819132902129298046976 9000901359103136421397723485306880 1725005955249479427843385685180416 -675515532111433672648089001510567936 5692138411425984085068357610504192 4452612012008511038340755338821632 -650344922671183595829308437311782912 1742344218367826207338727586398208 7402026149623056403283882058711040 -959053850131980646234127147351408640 1971045045757505366034544754425856 976526089622232233744729125158912 -54982209135832798970843692758204416 9609710425646658572476001908948992 5107548334924159916262312898461696 -827933927470865394233585817412960256 2470564915263018022838417487822848 348923054283714575991306375397376 -754602112067282197512463282079793152 2595105967430143343315000307482624 4687900410649811850260854796713984 -570627207467108856344762949004427264 8513859510471035523022168162041856 4961919119750009264116299275960320 -921206065176232289195580643807854592 9699305590822297189478880711278592 1428114315069795666083666297094144 -706067828006406888837036836464361472 8600712766205405015903962891550720 9162962627832545529656730479230976 -969839997624874247969451641663389696 8158924510820100970305705274769408 2227642681217368563696916175519744 -116430620371791099451198072739069952 1488357052590112537683826692849664 8855775996357561933745725328326656 -917701147073513614029250969368264704 2596391709232834448469699013378048 4990120389283075218532278061760512 -916856147591561654791912046934884352 8912821863708348313151163586314240 5120311406459065467233897788997632 -911406992007272850395169597633331200 5438386139527949742397773506936832 8828212796064334755039978664755200 -756099711296552242669523942519078912 4139642224146815737952835574169600 7933397503026804336209014753853440 -470722183962335884806375429606735872 5668882446629635543927221108342784 544723629950895541878886122913792 -334811320020869557503505513360392192 5850584000130395446582478525956096 1485131934162852434202530515255296 -392571136888735334849681776663592960 3400501675922739120365584227762176 7546985716245212402481736926101504 -942543157955520123758992080926408704 8333590543004519861973426607489024 3449843856299917222572231072153600 -283862001632407225578990526976229376 9138166968003558997051917952090112 8724470079234516458952721222860800 -751471551481441258102645115018280960 2165472354900231139709778518867968 2629536693149489951483539170000896 -245883770890825976856677368408834048 439317370622837265563158289842176 3754630438572565780668508169830400 -838724121488826716820273169185112064 9815257073780924799472127149342720 4988514350263256679619879428423680 -323546201661212761790345973334016000 2126825800566048124430185255665664 8024217002843559204455696761356288 -544115069233087167507596562355191808 5721859980452367244215941760811008 2925932744124013274085377607467008 -43324940952564397799803438357282816 9954840848493956557225630076239872 7351046426087989441455981483524096 -983542124399873437599746584353964032 7790313836530333560385924243652608 900597052466034484225048806686720 -760568332595273404561432358311428096 8584752988818976106118383816146944 7196328159578463996982255960457216 -861402556890469648648075085680214016 1140594787380370188301967728574464 7395116716980668937364246311731200 -504839570410720621673111228791128064 7178578101768812451449726295867392 6465708517140855576452730051362816 -376418408663118149104784079790800896 9889030023249674024522669191331840 6920441234842439602856637342154752 -76806264610965202873460658580488192 3971877108075428138596904437022720 5431740673353449128405060156391424 -910838053764355460297571455366856704 7766372168010317937528459828920320 1022778456781271578402070122725376 -919383519185956274658562642901204992 4343165334273487761084065396031488 9040609506732404423140638145380352 -92730468844670278163141902435614720 5991362749857867900671314861490176 4804219126907782621508028061450240 -391432918740669394577569653870034944 9938352995376628708703045003771904 6271146082525067585481291738382336 -116303596806206147371167495858683904 2296320611177143801525969184882688 6324553739703448146436251965194240 -236719179900004875238286956263636992 5332394092178597871663500727681024 8650038120731644215938069894791168 -199515562274018936260232592201089024 8382142211624022682529269282766848 7554402013203794639063617097433088 -890889831034259389789081363179110400 35152204134407786047741292969984 8466203966055009374459001294553088 -349874931542019977975376436694876160 4035292082548025163343581216243712 6050081985655732821992102835519488 -574043281961935344006385131086413824 3433599688420447221411086126284800 6791464328809440629823389804003328 -666097984942549473906572011103059968 6762274204957521879525344155795456 9631168787742483280025047149838336 -107005077378490882115141245973037056 5158844680723851919338165392900096 5836159086961189822913816320540672 -123077416349155486322253602494611456 9534004017318396661307417670189056 7756227978280928886916072056291328 -870902168857059710292842078911070208 4567144471194466241562245593038848 2327784776992341281119632923557888 -419909266053877587555715806299947008 2220457871909956713922690182807552 422375835516616293763595435507712 -935452198079360912800728325780668416 640531439275727992279338984669184 8954799977746694096416309656944640 -289188296721951779744663233353482240 4737227179001520622017481472475136 7085652264183917036004389163106304 -691089557207226398804562045910908928 7803731199847172184665110712680448 2851527465048622082104500789706752 -70777235963010529841630532287332352 2237568597158454963585642181689344 6447696480765731457558810594377728 -845295159615305854563194378882383872 5942157122593071939918689151746048 2976126356883221783074189346865152 -335276733572196071224217578464346112 9328864173398627289931029057372160 9286983832155457691642587368128512 -52139201599346359211968879927492608 7656059809439737052556608894140416 869146993913437442966843207712768 -402014310247548360233655297340604416 1236342423789024904571863479353344 4380100294001654620246277336596480 -73035333713515399268979024079093760 4335024164881986531770515933102080 9944368888921970644256020150353920 -690539899102116000120744645398364160 5968013158494000553742055734509568 2593268798471083202431649037942784 -996774934329518378492541190979715072 7922997783528192328197846421471232 1025631154830053223158295627300864 -678632260729919058265013796382703616 4675845533148625841271972684627968 1480749607970573395213129256796160 -443174525700751983674438777365856256 6181972731383494524119205917229056 7023635783448642578703738713669632 -715455132151464460455882484824932352 2183749332577867581760046123450368 6360639778430148897034289071259648 -539532902093611359912164767742033920 1212693613140827978554916034576384 1248000689893724025542938034438144 -655523352925803902151830265357402112 7904901975610303924429810059706368 3386383054061634237350870045949952 -626773710548901671458009627582529536 2163502095916902435377086130552832 3094124141228127778611609225658368 -788022958567924358959503592801697792 2226044587702375938767446356262912 9251088896595745171875242922999808 -927433799430573856227321538892791808 7203400347380732503656918125903872 6931661610218523020261637209718784 -874192963254175440041438663313195008 331147813755161231806677336981504 1833052215757409169332112172515328 -142190546655762592518292494115405824 5869017092225957492786474598268928 4575087898281222996305368070488064 -390838810846471191492722908368732160 2430686275781016568953390938193920 1225333239416033756457739208359936 -273857672083600516819895213881294848 5956134948417172441337547523620864 2493487996863507444512300399067136 -316042583464439217516015339740069888 68752403533477400898507936628736 3322927692052439456487630948007936 -737592084383551237289890423408427008 6808879411114833899522656588267520 7096666386830722935059785847930880 -417835530508541092695991186060476416 8846570372287506686986652756213760 7850030572157687810021635804626944 -25366236814096116340074305166508032 6162743415524763398198111370215424 100489583533092770385421387431936 -49098888721852580664911317990113280 9220046056673191443977512247361536 5480213450396182955189072595779584 -939596148953934085557742192681811968 3923877657210237768202565097357312 8044007860450170050536145592254464 -247061436461082073100563835969863680 3999677814982471102469595352530944 6582837200607842077589644047810560 -748004622720050665062994848809746432 2766489829065358159374955061444608 3648775412558340626074260203372544 -320841167851361166979874612500758528 2045162647779399028668132319297536 7971591376230225390790540387155968 -879384109073104269569120889315786752 9717338745123559577678188378062848 657967757727099661436162156789760 -620538873296995632231881997205635072 154535751994565520658228649656320 6301933461747653288690864091037696 -332369595700710150909050937017368576 4641990912296864688865031378436096 8322718103689621143522842540769280 -787466730064364684671007103893110784 677751323736525182336100716249088 4661696041138413852976777632153600 -56723119876847354064380466435194880 3247571881514095349706586427752448 6138044644248459510632371879673856 -951030860099236086518280242258247680 5754224221700580236516335061827584 185366874383462980768891324596224 -512944986688651251439077511001014272 1256076158600235491225834908286976 5666118931120804040712879693889536 -639082198609229459171372617286287360 8268541757186140431482509206749184 663401312525410795794411231903744 -94546880724700678967634504944975872 5459380568509054349187123439992832 4998827192842920474280080837705728 -590394959475902755670552927006621696 657489579211261474699608139497472 2677701863359816943245148154757120 -151555913668230847183751263239012352 1492676871013309278431022778679296 716555229786443207040035893280768 -720380618648055332869539019068801024 38568958364044541217684945108992 6463681399429508586674806975365120 -215107609398211482137138809913999360 9548239540394207138863146640343040 1600925927267226378323717938741248 -9461843167177552876597795249717248 9510338540480654902879750820200448 6886690731176117644206276054351872 -945076855816788417228080467434012672 1587743602229396985150719972605952 9201582229514626934068220438511616 -90534379633245613215710497829027840 8503990499356137294110994135515136 3587395401552541808603104628703232 -929505267654138836313483606312878080 9425493753022287793570415432957952 4896576923349760354709121540292608 -578411835144731447148258491445018624 6942635684570199414286730204807168 3755614451314565948373982095867904 -746517892986156029292035118668447744 6341531107807883573178341074665472 8593103554705077986419566392115200 -620893585698447070715347694394540032 8419883165808791738129005244579840 2730852397363431658445498411384832 -150045643660228338575452412823207936 1685406178491708188755334134759424 348124828804279135891121472798720 -809978754588526652753685734355894272 3711965428006709735516348054765568 9229880527343094391638869518843904 -938223110137033925754031132328853504 6645495663423346876702868214120448 1805247671184057025352013528956928 -639445710860927838161508419915218944 8221894319833162630650318657945600 5351274891794372426733231064219648 -743359542564741039850145570862661632 6552638647317675851583398835388416 3532430085942146618807696182214656 -892720928137999442282755946713186304 3352131055790731490103965333323776 5334457629330740418342420018626560 -652327383660695491401627187764264960 8768249664319811849157937062739968 6310028373539868951612428575047680 -545393006725798070950524261530337280 6353807258619355452749973414739968 6940497864186863815578135241424896 -167085394814159826235654824165113856 2225988929331238929447727570878464 7854650024280762172864327338426368 -141843426750354626090798393222758400 7201450415725600383579020085690368 9020701508418996157300503492952064 -425150170581056562450671905649197056 9686358257965308583031630714634240 9774401978669701696174650103431168 -165456515557819328977746797898235904 5781801137811947595916607120998400 5590859682259318361105074629902336 -83688136284093405007726416161144832 6660836406344915430146616546295808 2697836143930785576673826270347264 -634059713659375990987109985163411456 9656286930741545663567221011513344 4583784789956706211007386204766208 -20470617323681866800837470585880576 9514045345005835590275593710600192 7141646778604005898332320934395904 -210327364022112448022438387512246272 2398671098829199595343454605934592 6007269107029100945447451052998656 -675904201289442826637050502845562880 8650563038883363616763849862021120 7958827151884818515435526723469312 -175160956201011723392326475878236160 9297190350073856300324622878900224 9159895929600199058752932132421632 -260949940030903652405722511124201472 571617565427560237979650760900608 4903833641198104216271029601828864 -857965091967143175605388810221780992 3830488502029119457298317087604736 3648411788194652454308527701229568 -797563445212287557515771364830609408 1330146261068418812734907317485568 7122171497909920399977977342853120 -691561306220257156468857637752012800 6728756470734149108587315475775488 8801347332919441517802034332434432 -953238971714636716816906534520881152 7867564195181493971772921197101056 4942284896987060171084692478492672 -755302889766328911209564490405249024 7566362846513510801847423774752768 9072715042161750639385691971125248 -972896965240802311861810024601878528 8438471396039435780597009948344320 8950306141418218522640368783065088 -535720684155444795081101707260723200 9158107847339576287989752389435392 4595544202956762788875178604494848 -369585912475635587221816186534625280 93027991444212386200862087708672 6317867993450749677806301478912000 -462553204448615445381935057755701248 2303799207092834833754211185852416 5563556976188623996971043281436672 -145731560805811742142453186228649984 7087884900886200173453696688979968 1409945189442119318885088014368768 -879495102814946904474106416506863616 3618336810593678011672886050291712 1526731828433488523997566405181440 -406773989166486031187153406771855360 4214394891229953045740163889627136 6163932435989202871108878639038464 -1410811336872866136353987400564736 2314825013161403148027246789263360 1796008063879684963380863266979840 -544147527443477767421406195421806592 3582781113381522084217990793920512 6882479693539342348615396783816704 -482193303227248555294787424678313984 4233741380079797665753454816002048 625331219166543188539523630891008 -222831893184153340564252672326107136 9788992162879978901626443729469440 8616492799867205754012435228917760 -885989296582381342089867820644958208 6419136813785466078559639101767680 9120923450530701595499836626436096 -207603654128830047579265849297469440 5156579990381841741371744381304832 6272681494795731760589182125211648 -676014407565500143338606348241731584 5616807841914360588260051867664384 3880857759831676692905103875637248 -263191521219194817712387239243153408 177392899522800086191159189176320 4671166623377245357854463004508160 -557445163163266916576723034160758784 2938620439373260748106445199769600 552850440378052915719008897990656 -581649662994713895091814819069689856 5096437101098841752529179886223360 8807175175022772322435524380852224 -994277039763353811620188550001065984 1412111227403069953252319299633152 761426349579471356297059569238016 -846801621260188637727132965794742272 6750712534262210352688731044970496 3658256184562768083681342679678976 -626438987845375220080198750260166656 7001097689734900317755839935938560 3213394029940067487939896595709952 -865647419477295512701355820945768448 140114802420534556358324923662336 4109996898626333439922342838927360 -746004982528335382444558333352345600 150800998615763916469579685036032 9833555181594351535092644706254848 -790653892884143409776801978442055680 9711108142231605341056887309729792 9268077618037715222099239387529216 -240604030056111376769770466624667648 9966363548530551464582535217938432 4926469328126955110169846057271296 -21597100604920321903400634959265792 1253757028714435013732044506136576 9335207403900551458245077127659520 -572597047053088466563366619338244096 8022463829501304475446768283156480 7502629192804618371655135628623872 -925442639041738624487534458690338816 1295734252405462397848632967561216 5862488383022816795948311533060096 -532866028082496758394252655685795840 1457684060149255989422192087531520 8950610555334720486347710186651648 -424118892444810115333097409684176896 7922348846039826285732470668132352 2594830601526556882290243843129344 -114112756708586016963972456643559424 7532962437233620101539041260863488 9188616259431945745680368450666496 -510514596217341962593814178265300992 7914186276340324903237548681199616 8021846925733984785475135955009536 -755871873244434760271175324218163200 4145409202485400090508248425168896 6355278661755745662133422316847104 -268155417090208297424058273046200320 3522370817513610459617014803595264 3842132155863531536335680477069312 -816614057230891448852019434852712448 2716295860198420923102133860958208 9442238179812728226803865907888128 -67632139979583057096568616205156352 1510651764970736121957817979502592 4569111964043076097970208923189248 -921414451794231821641613605383176192 9798182313564329902072097662828544 7626572006057823341809181124460544 -568517116402564907587570820263706624 7043160243037503777091015657127936 2724974360245128816753899605065728 -131628748434038185077923734106406912 5656637799956233408603691562303488 728697205228204973853223075971072 -556993830781274311485971154738348032 4633433324606418009671438562230272 1559430452638551957464381376167936 -598016952754400825740195053606797312 6402027836947289705782796370313216 7677686225733600351511186476367872 -749757846467133143788175170241298432 3141494903706651281121584795877376 4782690540268702451201181478813696 -75010315527553037603649916067905536 4030729825342022601583906653208576 1670661772517171780500881204576256 -70247297814049504997889746623528960 9270244444992408636885877060009984 7980360165685204423832663719149568 -452521396671319244906317263962898432 2381066786091806978675331932618752 3872650352463183598490890543300608 -228565783186728885099906460121300992 3180205170823410357927050347544576 7703561864381625502952784194961408 -485824370939141222971249904303734784 8933652492177469879820631207313408 1558568561922920407580407314251776 -269138741171440881229005009362878464 872850722138350161112962474967040 6119711558447407494703971607511040 -679383134209823733825954910239195136 60398024556354804906232677138432 7019629962346284414369638404587520 -123024725529008265317436214086729728 1942885775637042319223657521479680 3097803560215193090234328037720064 -240334729526954187995006020272259072 1656936401766227189474900305772544 3072268438654090614174018653126656 -205325415779209341248921654412705792 3773747837588576669098122013573120 201392828386650893433165880229888 -992635565483812360047655234513666048 1111783666185080349719205066571776 8974417738475459948935637482078208 -468996467118886509369536715224514560 3588006427548144448080053675229184 9233814842110422327535756180979712 -637273064553214325681960307564478464 6572101054994558751958563056254976 1695431350122699889739924858994688 -292698245722034971053119296195526656 6336550860420269671763965917528064 1948912391583368380666005080244224 -305117548718002750140150677405433856 9922104237622046470084326076710912 4583945726032807790539603672301568 -97889136972895835481222579407028224 3586139403111960878658249738420224 1626033627194752937325535963381760 -453563570378336334376081966699118592 1610437208656417709156483549102080 1499619511710120843348250590183424 -522769428870474615060853121265696768 8334381602815634303232947383173120 8528963589579724721092813660356608 -309597264483881623635501611439095808 4814309262433012591682598723387392 7316838809628974405898275666264064 -446246613753525749588566659217489920 1504177674891459905971462497894400 3385179637691922923936762621329408 -185088211364171785389289908075495424 8041071005518990163627677461774336 4679304596800427268634854222200832 -101065606808689901581129871790178304 6028135748076510139577566591188992 6326589960386734285277935538536448 -422843172433475114725899936500547584 7696762352970521673268863566872576 2432054278604041849762076233302016 -768015088316100209064982293166161920 6742867461756601424141577288155136 5495362159966088690753601267564544 -411001095326676495384274856153448448 6555558541311813347665646597439488 709958761322443045396809089286144 -788846449695599863566542643342082048 9413266444916536657242049403158528 2232403072172576290013514695704576 -355481055603737465394724909348814848 7575992007004449663281359180791808 7963321979914188107089176428544000 -813753644910546994556475724257034240 7214589361413873717539985617321984 5843478998770575960502184399863808 -501854240820149566031650939568390144 9831260164500062077217808823877632 2600201894152702546951073119076352 -795147267636126443651645662608490496 6728667760917567334583352715902976 852706060012063692821229595525120 -668510842883937979786475178949607424 6142568692161790987225664854163456 1213721484216564541260438716809216 -855534884907243240543404479423184896 8747483903047967725950462584684544 3085659558481875534851419125317632 -185002612855264720089312632846155776 1933998172239030122525562939375616 5504058853591037190380738295365632 -515570387113925142563955716472700928 1005862193381888242161381053300736 4663414040046708932386010521665536 -213510351046080562418058039543201792 3284786296513900258332614577881088 7591307914157607496252658013962240 -263766059753498232660801075311280128 3683721434635930529971268596269056 9365983228682653952140517128011776 -443755914965698017128782721447886848 1258361107201182420820033452113920 7123380756714618818796913600495616 -214091000535501555847207842180235264 6910343195253938522999918579154944 5153955296821453864157160755167232 -616440773086761452607932275686899712 4461317090129124364297144371249152 6542253286783407699045657190858752 -648504229666452947323877506615869440 4810427196599916068587897893158912 184559318805635627632711323090944 -966195917921630060827020438014001152 1024291871539915566733967713370112 2266005030743406645832546508603392 -562230389901270786948021369176064000 5154543249272820030095699545686016 8402633624716678180441735542341632 -529559539089046960239187454953783296 8790094862462077984961397176401920 4650336096261698833453394302074880 -675794530677444352950544707807608832 5684259760944368807270167745658880 1099814981015086380844617086009344 -109131831461491973412216710486818816 2149878948093531443895052460359680 1963857504047903979411999767396352 -811850723914968281199055279818276864 6129606868306768330947899229732864 6104042126104020323257772238962688 -995032236875316421167139845251792896 1918693742748071614168889752027136 3243567670683538820543809450934272 -533322876415385468110574473388752896 6198411318222314279961695090638848 90172699131757627258619513798656 -606624823127851913759531827395035136 9606237187267197940509654028124160 260991255078656097024164908498944 -78835636552903657986552393820536832 5018724000532601192466344006647808 1719275821528680056791123781222400 -560422413198803547014868033100316672 6118271555043101575307396510646272 649945918047757275128175358115840 -498396032928271274595454182360088576 9821420838439453554871176337031168 6759672305611923615652034969075712 -698142891499933031499219762266767360 5102984340069271671064105939107840 1946869022098026042637050487767040 -208399260794959443080853436384673792 7278210947775891435138371234562048 9778419437095656137188958011392000 -471106559258498217240247605751971840 7689461463726464813087796641136640 643762237424168269452616199569408 -865330835813137295881885310401904640 4192063180674975845872879787835392 1088706375185969273279624486322176 -480566154713812509363366652436021248 995272506660523375128051118505984 146448429599447224579568613457920 -692321569804746792280725280914407424 3015845656747075246006034061328384 2869356434353720427128469233598464 -324574027827000212213495756079759360 2471577107193489986816081699799040 8777498336206981550188658696388608 -699233208803260557128599738674839552 5420059887862778273291158595567616 5768368400858780574730837305589760 -27190262050486412614071272318435328 3105168739527169969198535890960384 2975688243528779486288400961503232 -733618331424066329231137854158012416 2938745310668083125968904862564352 3726118909635600345147529077194752 -743425384772204643157086356065222656 1191842838527782048895151277867008 3169650578705309690879574617882624 -719249891325365568998469460144685056 8106444973177105959058241279229952 1618585394816284078609086636097536 -287745712070078919675273307121254400 1096326910791925552136624004923392 8072669162467214258031330620080128 -123996592155339350036617531211382784 2851523900606932885370669551845376 4434391536951162713299828202274816 -357049532382783299633411086453047296 1409921065889169511745171258081280 5136318955019624788080064504791040 -554596167347322877037489858828828672 9440880038275270011620033627684864 8869467913457164011962259954728960 -712526277369288034400272800242728960 395859315395866011055318496182272 9168786905494190019860150806904832 -385096544251946398281825949564534784 3029962329094908513380909371621376 3009008723588829010140110270758912 -875752455856756925578847147989663744 272052789739451106135488564559872 9906070820150627030126468014276608 -124026280195054111210404862543003648 8952538993037303768891335888601088 362083761044331367246036205568000 -113605492242536210108836959123144704 6083579262121419448331692612255744 6795579432653496430919229884071936 -188411722833683156599748619455692800 3016097557661964831736259449716736 8235852479945734791568993011367936 -3781540486416326628117263708848128 8443421290651264278407921606328320 646088248992230182258997584723968 -911226922303947504759720033042563072 3706530044967379689391079494254592 7551558232286068731985192346976256 -159016769268572405551838388992081920 7438999660937775892995325804150784 1284073907806214905292410264223744 -703523597257175476404383966325374976 2560568324502124290962206639521792 5848354151085706714487191469293568 -489944675568668762630986856352710656 243907649852679201359492393467904 4199218436961787030518148573954048 -312526037990511370062838322352357376 6411070024322119303464504409456640 1870960814225296169061192893988864 -283143221995145449922784647895318528 1673654443876683553629324930187264 5911603714774516181638901087076352 -66891861648071043129074666056974336 5172726766149154577717958163824640 1184278493928352105439350459727872 -256977632427310485055736794528612352 2265183194427732630723940069670912 7206383708560530817987321637371904 -271700448015114387510054293187067904 1713866901395830336497158828589056 529379717084510695120484542971904 -799391490898350466190564410508967936 7083600808002818130284889751158784 1128272296086500539663403618140160 -840863935253439458187600308396359680 4724934653695588174154039103062016 2554248956538180241297103667593216 -73456287045596129772039290604224512 3203042268904682683234363228815360 2055637579245665150783227665842176 -763379344284968083904508283418836992 8847718731990728132176905064415232 1873992549888070940179235189293056 -275499363359837612945280522367533056 9222555253531120053439547240873984 1590111375166182856799451193802752 -728793585343416451705450324924825600 6741039117888249691172511722504192 3416264119315146739377617183440896 -774739361847224158321524061983735808 8343911105410768962524311166386176 7017530007357543197808277311193088 -578552123578462023868947669605941248 4134961149945364412397588959985664 371954677178533905833211220459520 -50076806802879055896475036693823488 1879543727429774277303282601820160 2612463349810778496563373246775296 -496925838627030662297644476475113472 7187879722596020148507295547916288 4306891316226448141799023139880960 -683828835848858480328911030644113408 7152668532089464364848169988653056 3949063253961225144110784484212736 -613454050596025386283580864566657024 7557244269785238355104357708464128 6105295557908632086478935593844736 -285252798865818930805101546822434816 9651794732312580500283729545003008 64590716662521746646622313381888 -906518186902207202690036281513082880 7760273161486465801868258064728064 3527195455490983919324033760362496 -450915585825720632958245445558075392 4210641305627334466456869350146048 1622779528375623062353643701272576 -137534225272115507072243763741982720 4864038992676295110641518326579200 6240864597440661939480436362182656 -33869916791023132370643131392065536 2867470628448500327761855712854016 9396824353548048519094099500859392 -868763511675862850953118265502597120 1002258007885353178532632969871360 1390831101561855737765713613422592 -221944082485117806839958498732670976 4509749920230303151858499736043520 2203277302801222886354838515351552 -504916738491947795745218104913821696 7323061513114270596456336150495232 3650548414325931924332913178443776 -202257592467943480604963270396215296 7835959864265842608175936591364096 2883943717343172125467715605364736 -941404921402209380985071246212333568 3571704481361432388215816096579584 3300452775433470924917909108031488 -916753582271939952279266396351758336 8343657456085556346986471903723520 7068950541312512624641183120883712 -447347457509993279958986903550689280 4876576374501048705152153267732480 5972029335128176193851685213306880 -392998748955090568498622894018920448 587514592500403099102048763772928 838137933069840667765006699331584 -197993909956774370683988710466256896 3908868646122241111277669544099840 4671692580776240169451915690639360 -487610262223159183657417960476114944 9089625340249694541141604967645184 574624291846679001736997752537088 -993278465509336999180165921938341888 2028544346447857051718593047166976 9211098487566778128726149484773376 -845166155494966047747561295311798272 7186479426641179172496963402727424 5708788118594435499446073104007168 -544147824335716437330196696682987520 2793869466438112555271896296325120 3070321363725813596768286353129472 -178458219486169359153792177500323840 5390635000560669468122064560848896 3966007320366687211041629411475456 -610089627188639039968610130367348736 359057324419715732045568667549696 8103726278471001079879421950689280 -797520656540460227962974138259210240 2872612178781383611743796186841088 730828308247286198572360971321344 -825468807022446468642344545407729664 6962180990308792711810470677315584 8275660960901323862262129627234304 -36254063860038509722854487880630272 8440301035513419837440188525576192 6704455218067916316647650790211584 -676214355940992794700981345082933248 6076293275238535421917622981099520 5531885854585928545045770682761216 -424660684926638787917383910413041664 9348847640038043124213017196101632 4288783653015753822860051046465536 -25354545802453415109616489962930176 9401205157008246577520013308067840 6735835904035433487255730848268288 -385450589263524653612087856724967424 3728049880241625500951069312679936 7808534564893622621928938568417280 -487202555514238869314933317789810688 5606781001703744477615826321539072 9088420798697184914057671810744320 -783406882197474886686697860089511936 5876967023364365849694146266136576 3732493883767686659389103278129152 -948255166651112881205709859257843712 295394647462880669039743509463040 7274360088280954091810056799518720 -699633009403593734690080772843372544 4055809292429868518135258874380288 9664651507193291335816329132244992 -25901570838041175322763395327852544 6198114292599958034817286525681664 7396627700189448112317261349388288 -149767268628905870713825607028834304 4299645948663224456500926239211520 9612689634493970613181631275466752 -757096215440244617434228391176830976 91636732444465534133340007825408 9552854774167953013206281076342784 -104346868335376451125927884129042432 5753214912676453437410916276633600 4660322327914092525811480899092480 -14649636841115024861838886907674624 1598893748405611011487882526326784 9969601189972111739121808328097792 -823088625973084236275599089101438976 3670411903450374771284915209109504 6305275252658967101936970867146752 -636499375844297949612129303817879552 9794731631355782889045638059655168 5785850459536116108602628085121024 -978148105458769693078771813025054720 8163896920161287129834219890540544 5090859393029611493690711555964928 -523942801938887617808961023881773056 4903030078291368274364268892127232 1709497770595955905767921703452672 -881801928591149118037990645029666816 8918116582744366477880674490515456 1863591410459163060082740161413120 -788331373891611372374593957701615616 1453876151774472562867916070977536 7895714981056917783999601891606528 -489224244779109278463790979989110784 4503293930084718857494615723868160 3893170107458118544964335263809536 -540880222100069961770451211806310400 6509522782413865682484112207642624 8174825679463988507285747706888192 -884941319082383636609334003164512256 6535317649041108039528424572715008 303495516857507823263516127657984 -178326187568476006738584720839278592 4840327064845343252062131391037440 3161582186679181297460340359954432 -613822252227533016647647564868354048 6519641663495488103701396196425728 2726467019446175231314513438441472 -43555049391397198194381639471071232 308513138445881621073222971686912 5642104449898688519175007142674432 -926157569830575097997210702147747840 5323655809055971435163102004379648 9963439402454555304233191839105024 -549806347075225837722761292358352896 9183755968036430715318568749105152 3905658605135597168391675485093888 -761613603260092434694764763098906624 5600057977947244668504318748393472 1749080779810608134867983385231360 -986038512424784784618245670595198976 5107620312534350895985883328020480 73530177550303801469277300588544 -602543486996870013077881592645419008 4870353789235590338903251747864576 9662851023190621530213556070383616 -807795551162654411412705681854169088 876530951642037413464080981688320 9513098276630996829940858327400448 -427847058290756455081878051167928320 4870561776561336211169529615613952 1015925165994829862128105562308608 -416329769533882072763454413713965056 8997104397203375941890116553801728 4438887510082007271421407576195072 -485986058081394522363749211500969984 2193145927781218270919337051160576 2649092253066323376671400679964672 -475405949219054528605599475964051456 7391975604931651592126454403432448 9524275179012975792011302097911808 -189480441922228767947041421345685504 1653516112326804841765776195059712 5387601117334088654519678439260160 -765566576905731519217395307114397696 4170984289458524192379556983734272 5278700688989525386873500323545088 -191982689870662787064694721533181952 7470617101310308961954321529831424 6131151323637353722994941122052096 -617442808826587057020464969541484544 256321825909823478925749930426368 1662396258361411487273921122664448 -706429630070580749847906072662114304 1909595301402284454664782433222656 9285485382722418051729263802974208 -506837458694278806963004709913231360 7396543340755888479934458447790080 2103461831767371776591038100013056 -524650494779141927858564212178550784 2966494436362388644696074995367936 4436422822413046386690514418139136 -113548148387873669085723921689346048 2082890942259565519925023346786304 7950960035925008641231860667514880 -527092412170737301160307176039776256 56908316433685403174438155845632 996884139465998896603901624057856 -585846819958372829436689319041433600 2094216294488289936994590062018560 9811767864561114295852694891397120 -971149064373180266202816433285496832 8617185667810980597825527762386944 6564485697154509193376695060529152 -113230492175853189476710515633815552 2873444737498041176281022734532608 8457627357403437222405689378340864 -341689795693821732295467949457670144 6281008845946669395948099956899840 7291596997296169248789589215150080 -713134662569199611673757932729663488 8166085055383632359232398505803776 8526588373093384227150182001672192 -303853676444452366211227679184650240 9740402047079909481243350541533184 3436767665581842640605383940374528 -204896314501777562199535458262712320 6062136457898607788559191062347776 5519517742734147245666802042142720 -849717732573044903640930626492694528 5076918609873831265310637541031936 8232969950995119002345762065481728 -613093024347734343240308282907164672 6983290073191422462401537038614528 1680471967681756056254495781289984 -753213983173619312222511281096097792 7089006093020520493047571479003136 1519346897474459248713516913262592 -365523457149422663968083364588552192 2599218269802750063165880729075712 8048771527204394850842752954925056 -89112121446969587802749425189650432 8984241509715471600106079382405120 7163054934923421798914928242851840 -564897035197016137922092759240409088 7622674905829862637668889452871680 1193393378837857504134463485902848 -244266307224077969070959808321945600 2052962026001225427841590275080192 9646712794632781748946134770909184 -820002662547382640214198608453435392 5887515381603021891884433859936256 2955383903991091742083384034197504 -490851565968860453714915196477112320 5746956809078955836239409932402688 5964042335297942016670932863549440 -305014815022336696507459597789822976 1870768866809157407001630853824512 1632605979814828640938028584402944 -151127150538474606850961713641029632 8745407413047923384683632567255040 5834637906277791219619666591744000 -541867690541962383743037703152730112 2561548361439296766227743812616192 1592658136566381124939283615973376 -455394002082079091028376401880285184 3937045612522285094841926442549248 9670986672522335935021004552667136 -713697067818445902390266347181309952 5301887962736139386262789778571264 2680498018950955580128756483751936 -515300344049235236284446723671064576 3353336286587610930504231102185472 2753107652548119759151375409217536 -937836148081605348171088614609911808 1123895884450879859504994609790976 758874123374893870345401082576896 -695263287522283280488883704878333952 5002157255838504926632681001713664 6822686141777354903072351927140352 -700290855969904406658702867559350272 6748522487915736170576407290707968 9602217940437579766821979494023168 -341829096995248278967700960701317120 2241469908026718086540367998484480 1352137804539377493524362433658880 -384931581490364926511996216029478912 8194805727509260591542685040377856 8362696299713853198433922553217024 -977545942704929086206222357336424448 4888213212670045671034568788934656 4774704010109424067837699251240960 -403463918001443072969863072212582400 3137118665546276320196985819758592 5803499877062294408431187722764288 -267337457863602286558544645513543680 7493537069825588097235855318450176 8948005000955295906302004624883712 -33607743649886168500494804189184000 6147187016049654895023443675185152 2742834133682488016958299842805760 -507771638856731139136498631079624704 5596873047557833216399299670179840 7208674666966882110129530885636096 -101343861764100363519739301784977408 4046402568821155350958088554283008 3744684795559718430259208888778752 -983747109497681855222164483225944064 9846121531601324894441647051374592 601408497881784033405932031442944 -593476760135699637275528645866160128 8439103054872169909113335784144896 6013788701050649316035487271485440 -50651258846556820255048746007527424 725586309420654577439057723260928 4218034573535648328097711565832192 -656554342144898300131615707586625536 2819247015261851756858585240305664 2348635177027193049828550726647808 -704436413981331036787255360800948224 4662449045213423825547425625407488 5053483774833910746060944167665664 -803187011622901364672681967886532608 6279888349161544901802988650102784 4488877502764753678884356745068544 -25828576097553212410036569811976192 7623983087187825848012119581130752 301623976272083759708557935640576 -825246000942761040138712192781385728 4095113532564839505021621522923520 4295810961707475813314641153490944 -95984062601570634017221404086239232 2301565885802792640764469351284736 6385488703469549423814503108182016 -166489899379552225831339442619547648 2261479783921407994548769592967168 5861903228990486416958140813672448 -363040165456353273149632821759836160 7115407741270532606756484074700800 2647478810490293224173863574700032 -604751689242907561154628624089874432 3482380640267708307310340990828544 8787526295495569962370279103528960 -747497746691684850794236577264435200 973015535349830048329327714500608 5570841466362928266600279510614016 -48568185187166725893568368232890368 2456106947595956357801552782557184 2218206997135463430748758314319872 -359148737536582923814517214650826752 3038194836299192716981750082830336 3242393624701943290711014817923072 -699858366667383193367898686887034880 9139800641210824619845886458986496 1431234863350939337296465170006016 -518836990712041499656966418573819904 4489275332988586556118573317619712 6927078648053716130769353605906432 -619499805597934789523228910994587648 3703279654833282959157226062741504 2744272824614899406900754185715712 -28662575227379343081628833213841408 7284959777478816678175855754608640 6941978345719903457608333187350528 -107667017389998113433772375651909632 3176914472983412762342356739424256 6985334785828773905512550102990848 -280003789638601681930193378524266496 5672444049479385992521851462483968 4686580875954312863514212706549760 -970276605372919549803067593113731072 808030670046076887843217302618112 4694804935698498708521591620239360 -384653612692098910018601729604452352 9133935986774021449277242200817664 1642912792670407961487601532141568 -76881697969536224782409292165677056 7756862780878991336217198553202688 4966659825075011132443481385992192 -19629998824074522820039817031581696 4059362817741102281929119171084288 2941262345572435442091534273478656 -362337429442871667110645879812390912 4403270031130081176183265258635264 9092110206346897016116810426089472 -384125664292723743750094919001178112 3353188598106907262823544565792768 4228220165473617946877561405440000 -390799647896485857748037043306364928 6028360073111774262993028988796928 2025272167613713060843837859037184 -975095516225438370816843866886373376 6905592183547702646956496330424320 1932111250308252457070026903519232 -728930369511220600579659614235131904 5191783758861722783621903189803008 9918166556463565781910746193461248 -658167216882760144373770081823358976 5002802033285360643400792719491072 621038574417074522269858427568128 -690817119539898012097989924326735872 8585871677281757908949015346544640 9632429658440034872538946514976768 -593413707258705006472813208924061696 2121053804122950256670332862595072 1624979657029292142794534769655808 -322264464390340673118899381387395072 7488342995729655088907717351309312 1466876375263679849618216016936960 -961179321875378771472546849808711680 3780638094265055638402492679585792 6706588698829671731790185800663040 -292689514117428629453530966599401472 6693716387598825999983719298891776 3319150357475066960397523516129280 -441054097884624455299336661136048128 7014748052673553827728215012016128 2727377634647689411902218694557696 -652030725749092514767364031294472192 4400993402612154897983594785931264 6899744622081635520335675201159168 -958103342338739180331748721636147200 5322454973136079929138359180460032 4261509446904533495956878816968704 -230056393509135675186187734089728000 3802828678698802394320446318182400 7939740093434939853423010029502464 -961486997118604443875257748033634304 242260294559802817033799611711488 8227615881769199230206776625332224 -489778576923727920019025559392616448 3255964591056142644465187390750720 9316684441468883990963456541982720 -715684844787398779075478783304663040 3150844524438642138707074333278208 1539075132144561537156936284241920 -148215050015264566386565648830431232 1607295037441448588579291137048576 6074298581088495417067248220635136 -421452070027802186767693116828811264 4295244368122554419795941870534656 2347068216124489590723304486862848 -975379448302834347217329537740177408 7795524002738868135433649443045376 3012306026834054403079256594710528 -468566344209056023049399449272975360 5991189542469209711334277085396992 8008541394928545570954602319183872 -441076201403382199167457180310831104 5879406397884935591602077608968192 5751059742964027187495067105361920 -279183139222054563461594414244167680 182566210352109919437251692986368 6882321947326734075483906690252800 -508056276354234148411854983826243584 1915050991851132991094860646711296 6011370717680840997340658297470976 -1904410221735706081188516869439488 3223563245779376769105620476362752 1126291058343833102181907738656768 -721337884551426612187903171940581376 5181642593229608398667872242499584 1283362559245728399119132664004608 -859313114023829121180435239420297216 4032540744707201009120407992664064 1605727494752776082328165923422208 -436984167988144566132356168829370368 4029139483937931933338382844821504 8555083710168375705309252390223872 -42619928567156850985873550004453376 1098729294847166883445257030074368 2044722805933312372485467058208768 -395984694715135245935215001682837504 810525423452349958064939038932992 1817892541242015341284453074862080 -899066013836208053470967479599628288 2026729412888708865277213525671936 5420298969411671513147094765404160 -122371981170646096568947655145684992 4999398244269262757977760555073536 3320205170441465914104623038201856 -249478267161883010048433928968077312 6707079730444034566671122569363456 6886656163103416469939094741319680 -409074219848847316665627440993796096 1401949602409069654377533519429632 3671589228283400381173934120239104 -198768007658754930941834659715088384 6903395851118788807013360732209152 2115933075364509355407844464132096 -266820059987303362268148709390811136 4483140548721925554597487152463872 3383232608861812621529213944463360 -341877268351893940246413448902082560 936470041268507604639808126713856 8150245861873438947334585938083840 -827192338124607162347126416193093632 9397770043434148805717674266984448 2203371987086481671890342896467968 -63205207044492188794047122827640832 4654385505525589441899131905769472 4621904504253600932304587518377984 -558189387873859836882281344612171776 8942491509228116516995642861551616 5814876294734632320678940716826624 -896173552908409047554236783517499392 7512015321965340983336365981696000 8572655088075965359274864096051200 -20865831289940711712097857687257088 9839261715240350542196695006969856 2721423550469820078385341346611200 -490139282514779987968740884274479104 6219180600890093026279904163921920 9055597760658604025202310163464192 -165966932807277551020668646114459648 1547086768244457618300229065375744 703336956582973243644875460575232 -292310349134705505265150753714995200 8220787293269262209230887752564736 6621388499632236047708816192569344 -471818797477389928874504047055339520 8310205292117683779335451257602048 8075077531752572253083595958124544 -546836457824191035700513055673679872 9228322747638828644192670747459584 6018937375610297353405430400811008 -436481297229409493226690167196090368 7639224315008721198803980528910336 253508367087764004309614647574528 -8702636180376647776050991622782976 1761795961951545450469821671014400 3349678929525210845283357474947072 -50537865286996586387480347272019968 790097935006659047953036908429312 1588964570479359619426701501530112 -260487401851059390239101548033474560 6128644644264813694501070150041600 1680134612830624829481836387237888 -367000763193446454546913195972362240 3414432831180216078594412327731200 4347219651131078977188701923180544 -332278493051068927667109895566524416 4983824977501661701251276912721920 1663863172976264501468194962145280 -477603968374706812203770960490266624 2382177914389396392455596142493696 135072403371569912246320043655168 -112610504139864443035151190496116736 8263478220292357460545693888282624 7170422863503851573228967439630336 -361927520432617048880659732533084160 3921534996318895030005322997563392 5108661455780775807535888774201344 -621018792030501911655678853641142272 9745914731342880656463468425117696 387921724639270781930158208057344 -576700394997123360434521577455878144 2493562921792688052273216340623360 7583691652156388897856559343730688 -687810391401064012273885977642008576 3856007883084722851112933759385600 6706238249939709209643504281583616 -889694045439752094528152417029062656 1190932115867868255058496990478336 6825111703782820179793257259073536 -761007032228767488156333308169420800 6488191944184354845958618874904576 5159923013934354346227754376101888 -789427005489440182111764861077684224 7332491291796756532887336144338944 3321783972823123206563251185778688 -478629886371390988062147482319060992 7046859590199281507370294258434048 7059942237422628027989983603195904 -97316908395804698194184865079885824 930992181436593219752619166138368 8910267029426244406216835561684992 -699480577109971587763077086948884480 8923889053515032338385576067596288 2431372659591814734017781307539456 -792713121402100737226148871910981632 3025763194297321102315682023866368 1796782551145803833043316755136512 -908706575191578539406174340799004672 482196189426548857459688708505600 9801180574052886026490649971261440 -262123132608174240830434224514269184 5458270163188362330417344995655680 3935354643044374934539551260016640 -256221397267579994793632327297662976 7150547207472841029497887909740544 2239799179941481031133881847250944 -87732439075836431567665866857250816 6794334787550450124456282348847104 1098954758879079817081030149406720 -2097497436427544812919966777999360 3174675442740287183279150669496320 6469361763312325921731867156938752 -454196933843032750082535252958380032 8596006418692914700200457728425984 3045757272826907290250373501026304 -455022937964318804226879091153829888 1454543763273473792646895466708992 2307197955033328103956603677442048 -699777214321517758063963301688115200 4099140646516798497518521476448256 5449097047166925175891955004997632 -526692564490016115353567925209399296 8567992885935684800799230685872128 3863967792124340652087943752581120 -472372569422817632062195057255514112 3347906707594126479779602249023488 1351003502948175756798852675403776 -95407601327994541701806614552510464 2338453395127829312212129422508032 5680719704250159346879671920754688 -321820370727062058549435467873386496 6462990952274161498101891668639744 8433983680027180647448758066348032 -982480937392141240396183965815275520 6436173541237043572061729812643840 3791708140798594189848318597660672 -166800948542893345066805776078602240 7843498135799051993543110236831744 8690497499450308867566254916894720 -452256460564461406638315853615988736 4946923236589358593298747728330752 2573826517019447147557549561085952 -687105142698907678069433656821153792 6787932567622962104410410596696064 1457244454742847575931230120574976 -71101227796994939649673568106577920 5578382017493635906421518984282112 9502495813589389902425959664975872 -36851219641774628786978561128923136 4303846890178954213097565130326016 2506911679995315037698708775895040 -139628513169639433024740368792420352 1632728146335164492665772293750784 441493635134324728650531419979776 -561191000774839178978084262858719232 9777171083307576685987971645571072 5572561400970644320983678206345216 -924355564382324660103078882540781568 477870164751609493762590996692992 4541685385931490605115124058423296 -79198432184205115213631818525835264 9290139165030303262325038456504320 3195117779895943522131655335608320 -13285275953350012858705082069286912 2694889862204252158367841828995072 4912951324526644393108194168143872 -899410229694990451920456531480412160 105560192450646614658120259993600 2033450700444537092385216663650304 -344562802427494963206379994133561344 3008099341028512468240803626483712 1240571811613021869833719033888768 -161081969955554238963397983498928128 8890274418373334618570306212593664 9903216501068601648028631196237824 -589402415206393032389714174816550912 2517399693290759278001459898089472 5943975239910888285319493631082496 -517484886860061365840535465702195200 3161691403404030378279021840433152 7007187978626448846897475758325760 -832326141163940822583588818648039424 7414028409716645156495171470229504 1356670768135549885784487821836288 -318714677075312381035040363348230144 9558009268191498208886357514780672 7803639642460975767339509278048256 -121579363501504643671028933375033344 5496033363534482416210391093739520 2671944628086960967314300899164160 -486085728709481042622190168261525504 8481132074692735694255600001089536 3489244840744230941718725288525824 -575772207559075910292318813950050304 8991101824979303949743468216057856 5788473195874208318104882949128192 -743723064476465957977314464234471424 4128926723580315925625993114419200 4536831371461175349694361438781440 -141078358925222713166921666528280576 7006979682739351028555133889806336 153568669509492735805473146535936 -862489421453206645669720617474064384 8723034352487357767318748589457408 203824731729963146448781820559360 -208664724895725620112648037698895872 7666249928288384223608318315200512 6756240599870534553348674468970496 -530725005743936562112594571241193472 9196270521913865097181143035281408 5654448570231209052849643360092160 -818098693234137974941377525985574912 9940788143838841874813663234228224 5241973481751626791299307341348864 -450557584309839193941299654173917184 6223672179143947344182951379206144 8629533601234519730499431799193600 -278452285190285766076300091944075264 2085141135498714771237369404194816 1427714846946454107739257227444224 -736881122519051647574647496054407168 5585042231024529789190197468987392 5024971076220178898272767042387968 -560513185370919809578445582228258816 1858141666851289100931352831721472 892864187050019558732959064260608 -347697523629105098845585399410065408 8177504485536356510044203023073280 4966734763818043245561198847983616 -856416962658687025089276721737236480 4625093258495471788542469714477056 43118122979431395226242376531968 -332256102765294579101261551391211520 4531013792849309070580550551470080 8768867100722518559368040092270592 -752731408520398171224721869611466752 8005302029651954865328488305393664 3097327124004850335905888189022208 -83235905715493861514327834333544448 8360960246970033488861154120826880 7170368715655145537820507424948224 -840048392404596493196045513163538432 2084194935948316835009267157172224 4534475225086544373131490214543360 -781929975021293141297844003109076992 3655974729730052190023523386785792 2652177662250235037531349199093760 -572203682670318663508605117025746944 8955081913718780139087921298800640 2438599016955350004594864434446336 -446514063158930327700593740192153600 5925014603115618586519912457437184 5550631295341376510884937067397120 -761996099527490408848783505681809408 3493996009059446728536247930716160 2382789681832363013531373053935616 -922040375044079094117701943738499072 7314538019168955657632994704752640 8084108611386784488173746243239936 -248837493072289043307787111368753152 5751859316252087390369603362226176 2374502991442642829432217879445504 -457002342481333800882221374098112512 5132390319973479764063732321222656 3315031485033961811821292523880448 -505083822584252971400532810088316928 281357437716346114629659887927296 2742876547510639832262326980968448 -553899872461547767424834082476916736 9450888637361265276316428609257472 11365423495945825536063689457664 -201085256982102463563097480051556352 5875364860400000018505977548505088 2187852743842921949439600978034688 -866647010613827541407731766968451072 4939730495590972046668018290262016 1752208608927498199625142217211904 -392776979848104929555231624814133248 9697744846932775861420438713270272 169728510239719503175498919313408 -317690207499463407843332360541044736 9664672496138152128600467686031360 8657376589936023738858308609507328 -756200052074519623560719094312337408 5887155507365921092696768597983232 7921951106408127645633057715650560 -91755753227188346715935569034084352 9708578739317734436479946188652544 5733552157669712503433682892095488 -368567099931587518304608511705743360 6510107313218670192414990178189312 3614148149547743594849337622921216 -860076163873844378219091006733680640 9433139715495849967283558458327040 8816638812614911237637012228931584 -373279803182597166416135702066495488 2629692804515001108419171443539968 494763994700545007564922604748800 -290314866188879840398455221971320832 9821846933787282860657993119170560 7781956946172647629945979180941312 -561301261031303660730286190008205312 9327250133618576815608495528214528 3528745039436895157660303509946368 -412252477472896479547313809231183872 8841144291718865182895806064099328 4296715376762071509587430668763136 -627740515917785115925583408345907200 1760790243392610224798392779800576 3296358846219176398293452797771776 -629066458685909296465258249080274944 1497833979219204745498378488512512 6728061049968256315176956775628800 -27826579402204132751884431956901888 1424907155385297406977977886965760 4218701825874506671604961457995776 -837573963897271261617318185945530368 7179781444412652886230542449639424 1156316559250122577339592321531904 -908377047621449439071209673405235200 5459971617179364560712737486798848 1967183668016946929867179098636288 -675604312383828493845790794021076992 8983920236215502287840916528955392 5296881316854691639794844160753664 -915993792396015373660801274268876800 1111251562446362144333152429015040 2059284421114855996309760901120000 -976563631366200313128767773730668544 1115381181863741711676519590395904 7310496583037593973883788956008448 -215169328410267579683846367335153664 4677902721253897503698879552421888 6490452724738383869815528362082304 -980617422563315777309243573434056704 9696149247932081293903685088182272 1992522304489791998232095411404800 -473879896134216570486492867319562240 9443943703253104816279461904252928 8339085788950465341713050289307648 -431652112350932373436473019188903936 105773495680816710725742144520192 5548065443910791784336864122503168 -730769227037436316846933697756135424 1642580650921913111849551957852160 8801427685868057440965082004586496 -638088847553881486986990591491964928 7947827586252891186928437832974336 6349885813816819702839436053053440 -566181762844879823469542681910181888 8825557438114400845535294378737664 4367715362403761007287952029515776 -515122349366377450243926972224765952 8206831380469872804894520972935168 7272336872648563051147650750480384 -898166258638863360398199958164996096 1789625650854657378694672297230336 1412709490892282325834877290676224 -525487104478979037464719326137286656 3809972664531190293467626085548032 6754939410705644172654101145845760 -190000802110248095048551475204587520 2305639466166014449244087598972928 2379275712018227057738186680696832 -8803717504000850789716515941777408 6275518604291385926056114296717312 461831434428179628703138770321408 -35272817094085171138070523028701184 5567439602284812280400074764189696 7741767516099570029157619611992064 -685299694170092807982742714313605120 6830446449591093156814908897099776 1339226789769611707552718947090432 -83072237408613345219528328210284544 2907069788083572574614173840834560 2170726402413592489197812225933312 -87153787311087945154867597370458112 2716778637746609356688591635349504 2559473484763471389654094838759424 -78698358281413365500310645079277568 9636669280523595312666819170402304 4352972359493255671465432687050752 -142873332991428819357906633769353216 9916087486013701056793799271907328 607882454479156674176110991245312 -765564088447252769884678858951622656 8214696513183881464151561941811200 2083144103443356619748378843021312 -978507708591489308295131715579412480 4996911815446636581960681831530496 9408147447702152544981901012631552 -259626791198455560450604506512621568 994129708458642549938363972976640 7999054763622866496519674053787648 -529009184148788234917037406666358784 6518310436220987971768845032488960 3813101216624979194387151441625088 -601931970178802482151225152677871616 1976230257977789955148780731891712 3978168467273731231659966733484032 -855829300337142692915414305538572288 2993351659254959274226718005526528 5559584601028577375844871713062912 -388397454729134368098089685821161472 1685997400637265128321074744786944 5985462920987105080502975014633472 -865272934214355063856385267572146176 3053295025538579143123244903563264 3029005216802016941182548103397376 -287714500929065039791026654412800000 8448128021899188637952048485105664 5939657762445422697277128781594624 -494936970095098819322984583422541824 2147035442004625289512520129708032 929717955685242949216735231737856 -154601028026359253033383614268571648 5943804878487645546442530903556096 3385604594043102698927328302465024 -60683109869165841413900584750153728 2978461704654500900473056322912256 2453563885723550775049232125526016 -936561244371458649999936799536840704 8071113430577379568353768837742592 5319411732183404552074345108733952 -404524025096098804119811261078700032 1499196156473507432325251906666496 7642826848791894346583477684535296 -657037645533614472212672441462292480 1784713400615797159709537120288768 3231720874152648521095609627705344 -876919669509660502861185664872873984 9922173229524104294153728806617088 3222637017449443519314165447524352 -457883360409885471307438067686572032 4579185775672639610582772727414784 2222484837668935127163163472035840 -863099883358525258182309437293723648 8340122799783082938279394740797440 3703515259480209098039047634288640 -560795818243731413286479568666886144 8897650650170523415159618041544704 1874874335045883580030725914624000 -533879091118907640445034475334664192 8285368134831363613201942492217344 7084525975562598970723499891490816 -909128688637214859391788059683979264 9902650589019024286371517724360704 646739436846190330048233475145728 -419089069255711100560584187314176000 9224014439162147878853363168706560 4456903160049399443422428874670080 -957953332713026855470649967187591168 678541230737140028594449629052928 3527101176464036464440699416215552 -336970898366948571941591473096491008 5904932084941658178349371578384384 1145915541093466536424788224638976 -841771567579291965778177345472954368 6940326818175866056386004329168896 5202175717092194104980855356129280 -86867127698456966689149488541466624 9766327992857917328998280504279040 822044040225720297921531837677568 -581110651723591309997150397353951232 6998913507346288510247260274032640 5218108506489792323499605134147584 -22113103575595313568863074104901632 2076642893341559806368481275805696 9155526049643936017891624948334592 -43866778059709609903262707426000896 7657616258201643413342601722462208 9349126122079253742387466673848320 -914845718714821931874177252235149312 1368684748435841065513032437727232 5752996804654370580351129665667072 -499612071832591941940535604453310464 7587842699509471629094902069985280 5495201400417646557097349647171584 -332020089167750214145030712610258944 6770514605463639846439251490111488 9430062715382895155012882611044352 -342672624901236778925653047770087424 5384800789491788244134696635596800 4118274050105687703986501306023936 -822042287815222513983377981359259648 9178246906522966899634575165620224 318496301507032729319565537837056 -219782356893179301998071435686313984 2671101145866371267516229245468672 1252404109436852626227032580161536 -339827822371540282654515958921560064 7387905730201048481166778792148992 571281784063292004172985133957120 -432586130106967979531904288930398208 554600465298369070570396677308416 4550819178238896283634140509634560 -109863548409641500064553100912885760 273274083417027964125135874555904 5378411781822970496693510579683328 -752147225929648023970893233741889536 5400113534409153475575861921972224 5643661474341738203204824225284096 -953276278020854269407194961292558336 4596765608749352828135840728219648 9415580912805553499736914331172864 -187818523251314086255819768587091968 3126055391632398308283011127312384 6040614788278518350136443569963008 -569258996655851075923642916894932992 3542508892705133987760380156313600 2020351273468417808130418797445120 -891407844004964435015507387890008064 3290485854833089217828768119259136 1972221702869039314109907830046720 -723925915639921258213374069898739712 626213222293569430049414575030272 6629683560703769264550045699538944 -442294968147873948204027481094619136 7021724971352181207424902235160576 9730324830670049976967647480250368 -888752296706515968144250505047048192 477093637380083834576772523884544 4756933608105313444239991344463872 -500077841471643233912135295092916224 7330202166288036495555113519153152 1970562507701407892975629558087680 -494861917359384541890208578251259904 4341156783114375768910044627730432 3152877938993867862067147641454592 -155314884422134541661569943223664640 2764198205989926193872672351322112 7255009502354029796059950113357824 -500438958655507385040249498906918912 5718221122477144687367654920421376 5349644667861372623582031025012736 -941985252994398818545797165142245376 7478790485607126747413478568361984 3696197803795981813702215837155328 -502112930555676792946641215055462400 5686589734503405393950209566834688 945812364298487413142732673122304 -371578075946948385699967508057948160 1955406455935522577385599367380992 5883885489909435226123911059996672 -879809857130477039184247117771177984 7500558646593134448679276452511744 424835119741431363336586202710016 -724639695205097352378405031149305856 409256114944830673079135778111488 3726370793684225995915489812938752 -753913338527226093112521394292260864 9634701557496119758277999840985088 383127304351576787214724933615616 -191178615516751440781296606803656704 2840788322965768254450170620542976 9128400675666681376623545569771520 -327736222346956717649612008314634240 1227903837330710198891922300338176 2098572632101658084049617655169024 -686902738985026931389421175103815680 5079366818642344398106234770685952 6838754765967051796344673046364160 -461453437540280808426763134470979584 2715818142196301097251272493367296 6140759986377264007582427962671104 -608706629483004201522914642549014528 3470989645661814595255423962447872 4044723922858795104051900478128128 -712122280112827845773513867346837504 5736241517324430391199539270778880 444102985738502315408577276149760 -155796189011110502952988603291009024 9550908087631720797417068795265024 9941926445810159867474616592105472 -805166185953054746884350146175303680 161061469384746455234642331041792 9765059336316934756954401216135168 -664462976630782656845631673352585216 214498546101822935166480126312448 212497527480200285300426618699776 -261357194196511094388258570302914560 4191783270994445591770989875691520 3724253516994098868242734462795776 -21595665679186744478696972990021632 4628370694926219102227702415884288 4565138885824808446401279374131200 -302736541707425749987302767083913216 1834595607265429145960093740695552 1573718375152746593542461093576704 -46231272648084246910683761340317696 5091845588672145631357750694903808 9908525929071866383383147378114560 -791400959380932401547342842102284288 43078989606909591430342031441920 8880161355151411315723096513576960 -957435302107208650336189404208431104 7438848090296795234840235391057920 5734033308079831908122038861037568 -641791283084160254159044295666958336 1345418532513665691004366485454848 5383013511642962122543426095284224 -236435564339836652859938114033942528 214799530662738398160136402108416 977241742467571572467597595115520 -570974271546910440481758769800282112 651458293559126717379528684994560 4722648527708850780220152635981824 -830807675360067577696443500874170368 4594620538210387140893080433983488 594499410585688668977164646875136 -4731256513601485719233401666404352 7634235049136478102710474533502976 5722360876404711880170203890319360 -287026369473618638852437896090091520 2024577858216766499285751067312128 5593206523110846924876180094976000 -497742060980844910539241969349033984 1595704203565796740817149558259712 3205092454055440710879017992978432 -873827002114495520414777946528546816 4913249510668525438247769093439488 9215732871282928105371757283639296 -672081983977236541417411780355817472 2548415892174973176639229037379584 4460513717563897356010517967142912 -361041103869073731400548587426283520 9514425528100669557663848890105856 9853398389488765377479164467085312 -241666751205172904539904036399218688 9436756809346319015133221119590400 8316709078012687624716182060269568 -742633598279357012017185573088264192 953374194464941637581396829536256 4012746192229411694192859520434176 -17903027401357360326782370847916032 4404340578497150894160617408561152 1836295578361703413057830502006784 -132406572453460259238547241794797568 6143373153124872262657234580799488 635006089203328889102291636846592 -418163261240260679471168420868784128 3879416855318612145687128174493696 2615932587810123160824653679689728 -990127835939900464815684340112424960 4881727890525487679554313414246400 899321673904183321651300326703104 -402283596511472041365007754764222464 84433123197553233956941735133184 8639261609104640709232351057543168 -320100204029667163973276269425983488 8155618296548646284166753295532032 8670314675577729824698342819495936 -687592709754064106987605569002536960 2507060154417349632654090870718464 2211422254603626986118213472878592 -223506464869091315818471896073109504 5578054350452826458385466800472064 1622490986998310375249083950432256 -661043477460636908428140554481565696 1482795266210652429434043680948224 2560240117116899735389927739752448 -538913057143986279721345986253029376 9108358815201522819573166546878464 3430199884366414317244380111437824 -677270583057008567681609018971783168 2871461743636026368689046938451968 1363709086266727490858828351668224 -476126283553025697302805509841092608 9533989989886493546083245900169216 5838049105110913551569060674666496 -417159012159070430187814076595306496 9516452272838021002891736335253504 4922512701181433352744114002591744 -125201694698647958508755891922141184 7399331187025443811792620183617536 9110406748382486756398863130558464 -478926854670334388974374513069260800 8771162765619622449797675570167808 5666605917861083385752129017741312 -729338076990272852663823609926516736 9990005979451762066028404066484224 5990871365188186174038446398504960 -87779027220888792935749250646540288 7943026528431639132528517329190912 5446572140483617824419688050851840 -107625063569280208402663561962192896 5822677561109495707859215225716736 3363859620164557961272449031995392 -445619010066365219138085200311877632 1527536350756802697679901539958784 1898376637651581173464018637029376 -405327171513192007335921448650801152 1950151476633287159757098882957312 4575445621902104746942474070523904 -123991083874593878789512968288600064 7462029870007127380496967886962688 5672270481326385435821144404918272 -661019946686296109833317306437992448 7038796690605234045439796423163904 8150510600468802338875640855396352 -145743772141212213321843075025207296 5757272477705357275640077846839296 7069575095837160381949867148181504 -558457573989845919274624605826842624 5606514744876923177787261225795584 8411916301361042271726459338883072 -86861006008245255978558332828909568 9393408351527215068972301607239680 2464682916153740146985188055842816 -78721465797456675177891769496895488 8402173636726666873038396993830912 9633002697768790281880654229536768 -502176145983764340284044830306205696 2386897481869580744605900740755456 610083140343504725057899390304256 -735044370068450498492039785502212096 1219158813716752620498578409783296 60179475939232131270700848644096 -371119370970291968616224546902507520 7541554413416696367748762562461696 17558271504119672923181702709248 -831057404074258306694504778666344448 2325820090271792704884408313708544 9165197470406457772309069472727040 -769166633753001067426686058327179264 3150563398983179333800555068784640 860995218736591728017833201762304 -980267813894492981922776583663255552 3756916903800769119845644052201472 8656078008848657329188207534800896 -76976047098166464309087974375555072 7437263222854322946720372029915136 818221685346870343673360190275584 -445537982546295188527844574206361600 323526467632583084278872161648640 9685093698501403957342310276005888 -313303846524955784095720741636407296 2174957406614220272297559652827136 5836224847558198959820958660034560 -699144930304702282337094859583651840 105634240846360310612881603297280 9172521230643590724604302909767680 -798506251313343941912617829315641344 1897909233739719695632263450460160 4307848213602539334577981738713088 -647026790051415414899601000122810368 6481760665482515706243337615835136 7560232576947877634176344662212608 -881584356750162723199366450821201920 6682970994770259000823917913833472 5196585436858086259863020248236032 -577097171940114397935289403782987776 1173083020337524361570156485279744 9221399731211990039014093937967104 -452045278630782020654927148253970432 742356988857386435436247819223040 6088941553129201006197160309424128 -99630959395619092569951465363210240 5364648468899147927051165256122368 2199115635848944596469797953208320 -736505700574074866084589689183928320 642547128475457035831698345951232 1316823773982549118085556223344640 -337145467299419338112723525967020032 4608718129685074697440618438721536 1630971479224678151259712261193728 -466408784752901958715535992192761856 4676846870644423485003175544487936 3763483265085903012273201944199168 -274461566190217826505165173573025792 5068293342753220138580258142027776 3767553572702520176368274481610752 -402646889006466987642276717132775424 9179425658995315027754796028264448 8498512509094730898921963330207744 -620525655044042434422219805940514816 5007412758618892093295895852875776 5453448733544948763699395512238080 -825555589875105010023903835159789568 2021339943550587394294406073810944 4683265472775394972491842609741824 -91367586432887732364987199163203584 7358266053721631637085141300412416 5648761788232260712683177787785216 -320196379441981857630686431162662912 694203354617077651667497921806336 6539554535670065072050634343055360 -528892224672744079145154878176755712 4211360886731118231228265699213312 5651419279932150312236908986499072 -883023988285145861479252437770436608 305079925234474807097601250295808 9099194042234195687076247847829504 -192228240173711750371049225458810880 1793063513697208910537971136987136 3333501332759371489412190335664128 -909898225315320819255746154171727872 6932428234862927025694604068388864 2032046158512662887779467469520896 -522111969217167371526629385561964544 8720687878504995853661486366851072 9973993440414391376000272394354688 -947798493449610935555873597508550656 136750814498451361523947584618496 659293969949497843078608455729152 -845452484325135727654242439168786432 4903256380467605871211668595277824 6443779590501578000015992765284352 -361434032878447926994484984790646784 8703488309958014992966968527552512 6538695079556712782763639028318208 -993482949603440512990161081043255296 7422373736476609724113466328875008 9249989118583277951971422935973888 -858849951539165059319443423303303168 5667828821810466706771900201172992 7883759380768514651148508970614784 -321375242080959431051089670356074496 37230606862780808818635732680704 5022157004932032990636647588560896 -39517388773883283209179299978412032 1140405834829602447173715088113664 3306821861032403418756470852812800 -858082915739571548895951208857993216 109541748809128047125179270168576 3529544858321870892042932457570304 -342813455899045060318874962027872256 6307736005964659421984350260953088 8595152507214640681218831758131200 -431706049165388610697566847296864256 278858207998187441138060603949056 2857022766249974736192835160113152 -734664951599061091429712740220928000 4549906453862719011718161311465472 9132697316139651866115460135124992 -849720051420151727357428264842821632 2235657545569900902397006214856704 1942046330581510327812526511751168 -125125326198303981375988720692363264 8389425957298551693875719121666048 6121334616712087163705635974938624 -44538126725722877441602936908021760 508715885596941950018208032358400 7073984660271800148484978670305280 -740606261482452791283087528851144704 4684758567914869310945197260013568 3668482696672722478816225539391488 -314812413550388992709653257718333440 6383804179735473279335136357253120 5023325529249643656023282221580288 -999575228339837004603415459950231552 3194953224122745571516895941623808 7299401709892882279012279087267840 -491635948126957568266985579193827328 9115686706248262741068992745570304 1779448464935231890668255845548032 -833166263409726802179064677764431872 675889325113881053688671198248960 6346648900008771904542189287374848 -755622478842844022716177083929722880 855528515795875147362541433257984 892527816190756136037697472954368 -715203128445351195924167730955026432 2254709578485774044129180912713728 9798490667948927595516888308776960 -64386802128847830859062212607082496 9211710403909699743812408443928576 9626754839192295807787255677845504 -16168555493237369309141818580926464 5596358134935022811589947248607232 7984057480450599200488285112631296 -404053282230488964471317134667939840 7736528424754573721659137471807488 2295360482496003345123997892214784 -382687217871623502784636235712299008 9998543669647614360957888631930880 2144471653650538668676794414006272 -465027109102043743735730359255433216 6092718215328469929776208995680256 4541230173501489711013595493433344 -470788726840023177557741734536937472 1267176074424749985373231545057280 7452930892973535294771779852042240 -913122359213908977310461538099789824 4307533946109496374930910272815104 4244272576278460425442287830433792 -268804743673269993287184286098653184 6384563472945336780493940085227520 6594538133846635335633901763690496 -115021708634143328806216499797688320 1475404214935403001752681348857856 3740785682854056036979382373318656 -710949838351112675250804588646760448 3869489547074934325578559272255488 4025711227470805808374029295288320 -158266489717821241818359730832146432 3107379639732403184823574582001664 7293879538922539063809283597533184 -853683684929685001338308164832985088 2690736860681286477253009624530944 5149396496598737715348230729891840 -779374457503599693148234400862830592 2602293117695285481102929081401344 7056060601423129957891078898057216 -485177219972146364990046943102107648 8093811293742873749627792458252288 9872832648657292786592333030227968 -43773431243425063936873171515342848 2616550299041650488421777584160768 7407907210838635640016094600626176 -346127225476517877055547155389874176 4639169612375966267736671066783744 1641072977244681474884460433375232 -890585179753311752605899376415473664 4845137187249391216139366356221952 3790253125970515765883105093615616 -606002517319823826013832520050671616 468287484485783800746670798405632 4437713017400544741944533738061824 -25521513958857888923682579184353280 4830408606267662115132978887655424 3789335546203631189899593769811968 -216776310409451845396630678282436608 4969833647723806951339199620448256 7550645383585225317784614099484672 -411540922898987309128008641141538816 1825886164947942749486495632982016 9022339366243061245747995185512448 -816368792314855067036176816329981952 6035868645776840418826226512166912 8351698178587511170198795660034048 -215676188793396342717322626802384896 3063906930793590588484401175199744 3213843135867700887922418447810560 -28462909173955880427154331819573248 5259848372466958628229355239636992 9297251026549508842461414268338176 -853515729336040408626157431124131840 4714291130739278765090014769446912 953596115578043093640451259891712 -98546513970652652881118507487461376 9062570235309662308307194624344064 3783768956636458522325526188654592 -839601910268566654156715130372489216 7908799629996528647389744602284032 4403809575365939844875498291200000 -666905444561542650738814000188882944 3396946158052479743769540720328704 2604019501099247116223670885810176 -762344574607765689650734572161204224 5172709178932175329378862672904192 3002020327248002594059173553504256 -934750906186443509867823003126988800 2176715581194724869779039172165632 6486027593273495207839364510908416 -935967547460200223267023461860507648 3357493897904366078335493527830528 4740765098893361098062338797338624 -122438893936095909332911030798385152 6323107608273894852035736468717568 6496961221780754530024097518190592 -900269884345504907683288285437755392 2138528780015074400303020941246464 454319526052076305027502274772992 -221387604779579519459978164398194688 9234290097882559593845659608809472 3835678658628045530062196729446400 -490184538479833808233824326598524928 1440997800058104434120987326283776 2249938167329671627441493581496320 -391224191985118325422651961809829888 8298244945345187921791931658534912 7340224037544719964980803188817920 -194748268008845505583836568588648448 1352792823954821025461357294649344 157472675995003889113825384857600 -382255815382197764778881760127614976 5112552844003238101923867712815104 8040570315326207177124547846471680 -131205605990788880770511116420775936 6620309678280314122717376504922112 4542220196048894817727832427331584 -62645456174697400677006621282402304 4380151922760772305364257400160256 5631023728510545505351515789852672 -946219018354059441090037566838669312 8138948943587342029165453113294848 9422107650972545005893314051833856 -472159876198001092498697276285255680 5480603695879532285804029635723264 3323332340994101894094891583012864 -108935434737249727087371817616146432 4600518251801658551757706253828096 8250401768559315207700508160557056 -404015787297782672084440894408753152 8279285030078601804798184440987648 289030182419176609582559317196800 -272379591763957193461017075263733760 5036747803212595605797206897983488 9670343348738306554336134201081856 -505398021000863204197204989296246784 971633079917912227694315917279232 6185402033202722071987663056928768 -996453917387548126793689281993900032 6423736115108005320636135196590080 8646768332005811675293297305190400 -731828771943025222317514675743358976 9712799495444948968739131904491520 5560659698277419204874797395738624 -306854420909035974569025119778242560 4764576985472439864641100735053824 196489760950426750306310361710592 -436074252085411333280421685424553984 4623727372556136821668685920862208 772180823857098632442004295909376 -158434048898695460980804749264683008 9066492512151697141642491926151168 9204054609382472419819202919006208 -763097875970659351929960544499400704 5514424860027538784026437689016320 5491285762713367967501786669907968 -362846558527775672976995452343812096 7887201985438544402913446212927488 4182434519086895558292133474467840 -295058921822067762064885189217091584 7149129396422691337998683311439872 6505483919023299754051781168988160 -963888410185385150627240284656762880 7380537925945283119755081734422528 8118211455148521268886830252556288 -186500014873087651254640772451926016 5758312702976759624406418036097024 4072996591268495420651033851854848 -576809055626625405725180445434314752 9774485613522162723072770551316480 7148339764250897109127355273576448 -393806390910425487574577712931536896 2850316069441555255400678335447040 1719505790948395129384653146816512 -685502446606483502460272781280935936 5072423270731950499078184697331712 5833705907634542550195110374539264 -910890384821962410968295186408407040 7255010177784548968710609660018688 5729181783467203375877341828874240 -77015149472661952428993918063869952 2840464843594172142824985513164800 3773111262004903202954627099131904 -279070610568750807822311172488560640 6849937301972041767150716941500416 5145705718169312921032678298353664 -375811819836420411743104204695142400 2108182372477984712952214036938752 630734648315523196476018604900352 -777806353982196197207464507206533120 5016802846718175291920660637417472 2843622967179025413158048658096128 -568737092201280353044499235539517440 7151197069041055070418607487844352 2430798134315918643642578579226624 -923356819441868531868200157069705216 9665998683785260882056278683156480 4331874682151153847947640478629888 -937639833403041313387826426803126272 5081042320839378053609879096000512 4269650571802067203133808282959872 -823708327996605004429730103196385280 1953737104734825955750214813876224 6067171054237876311214251231412224 -394502412829221863378423625436626944 713491068958161969902505504538624 8301333886686471552131696250847232 -668430133726294994225199874649882624 4657029708188527478222056067170304 6167340894711107578912197713068032 -531826924503337731764922790860292096 2406953210105246905966750339170304 7645847019252748850248682301292544 -41674155083977375506691710129274880 1050838551042525926652438628007936 2153632010217999715295513391661056 -918350500951714935150468316593651712 3065879368020842216772384321437696 8346104200429807526712003199500288 -133937200057274498333738783381389312 8202113174612163279723488490815488 887667510981388159167215492399104 -201645076097537739906755315183386624 8194769133145004205166534301057024 807926129131863379725827044278272 -446690543180771566150798898624462848 6885759688897033624030326523166720 2796605329289033270320087254958080 -651746188077057362546155628116574208 2204437840172452545227387469561856 8781333527318092649964512670121984 -353431856210031044551850828931006464 2493082730799146879360434796756992 5816558414546544644880394893656064 -686208049246229244262527793740382208 3143066356183305517942973837344768 1410203635850217905154028671598592 -358796056445090135543023451997470720 9028055646007203076694707275825152 6064735784503411450037130145824768 -77754246220430177017828295548338176 8118571010062834505011606946054144 7444593875535155185100436193411072 -787330489680382337613427429026562048 1219127957381496444114146756132864 4366337116163933809875355630043136 -355361020479820260758188207131066368 9305868314432763302980574030856192 8441418581927139968099481974472704 -556204028517997248525807794796888064 5797006868823680710367035414020096 8417153920572751997621633351155712 -975479075990544043408444558573305856 3068745048149427427346122991992832 1894337241625625918950207683297280 -424831705433062352604565849835044864 3034776240014684783579648399245312 4355275148617124315283070820286464 -209798899438990852780256410581598208 6548475325599625522086653426925568 7576112125710353880779713597669376 -945170023666610771758287317454815232 1523703089240284543133149439197184 9926294558090368295981496081055744 -579005650591638502382920489068658688 8392992862238874716799703896293376 8478598812589678322759702830645248 -83101172642896874966465878014558208 9411294838124586072438767177695232 2552782786423104502998249280372736 -348282005101969803320028178216386560 6570670734743961547679687652671488 1540748680171710801632210372788224 -776342642673970924928864256543162368 3489417358888518741278678149234688 7873226833708814699079861469708288 -969228484641882079848888073648603136 5787824026602776231875582963482624 3234970682500775915953207933665280 -915386186686802493819744376051466240 7914355108770673540379424359186432 9677693995610694002708293410095104 -34427188252493569486231467796201472 2177596175152894675242911998672896 2335673609530525289040592332914688 -428323215741531257114245818986004480 8316391496331487522226793384771584 8652246101245589373087485356146688 -157183900326750424031411329816330240 3847670435812740829681280155123712 4432295284542626899961818157940736 -385545962479624958455138614801072128 9870545237826363873917928850063360 3136001378543324667554467340615680 -62090705072052251318372744271233024 472010089428481142224845203832832 7769820764015291806321341013950464 -489469741262010781421689578897539072 4926528217803141959573329839915008 4474865765828006318642891417714688 -215729063024953046632627533114245120 8913910455753703931323781123932160 4953787329607480749767054539620352 -928679842442224565771260342537551872 2897040903110936394654893679312896 1242777366681927649275930510098432 -718500123673673109115970760212480000 9375116643359452751872847341682688 8193340866813665800170983668056064 -74415428142656183203235120570957824 1949733828745557077254872353472512 9648637901280942800763674003767296 -252180683547449045293632917296119808 5157404070958284642305314503262208 8696358454359317046904378196230144 -989547054259469199345981590677225472 7688852663521165625768973785104384 770299624693256146647110167560192 -864384375154835783870358918415777792 1331041560941424200370203048017920 6935167072660541244184872035024896 -600616472428011885128639282044469248 6418758310031696173043109435801600 1260587034092252018423283121651712 -748389193847656494109753227801001984 8561156930664480212763085750927360 4664869418691542441550732591104000 -33996309616964773928781054784569344 8407099846776387934820228906614784 2632257725760910671457965085556736 -641997473995908301642290145091649536 2860694893639854578519855624880128 3295244414494865170427319794270208 -611012743548952606019982090032906240 6242610826136222925891662709260288 7034565076990933628019814678134784 -87132137875906414174476230136430592 6345554689602468866813168044736512 1374577634264109047714857627942912 -936267407995607319260625664401735680 2786085933127769827914231587012608 7626130460295381466185898137747456 -24452202160902752212559757687390208 401569104922205079063303513178112 3434906204251199892852025323421696 -499941895524827922016564009779593216 505777742769157610360600791089152 4930538651751705190763461171216384 -395063598624750210473423715241558016 7613110990166808674944385730740224 2062283180506271271042254605647872 -550261008591758032806531209839509504 1648440491409563494421068651692032 8489020356125067536501627368243200 -836051967607399870313072996611260416 642253504580985001263312247193600 8849132220285561575072314362429440 -694069621268623728014639793853956096 7704187089680177063450211038265344 6695102992310815358795032895160320 -471157586506313716031676311935123456 1489275699231974958691861473001472 3973469067460348529311507592249344 -498846015190216209729379583590924288 899996039708367775140778713546752 5726263871270653569767443496173568 -262636436108885424495553438671699968 3143310082862717016683690070114304 8288517774171177937181175250419712 -106953024968137522000333554717818880 2266179765520760032273483859755008 3857544663082689882945160195604480 -903101616153559671155270585696649216 647711376326169323599708578381824 2487243945273204692594610340364288 -295941532782498828666001665019609088 449790871397369664820687197437952 9593454333405123111747280567271424 -39442203847159001213639416797462528 9767208856988294976460642840477696 2963607182450558858743846451281920 -674572264111973845700052861233135616 8954139174204085368871668997423104 2871125292946065334652122825752576 -268833886854095027510126577813815296 862701522013474385557198492139520 7142684219270225406658975331516416 -251031458802854523036184168181530624 9854580715560041432301486722777088 799305731215810774189405139632128 -588533318621021969552347333373460480 2259571687360870784004106697572352 5305829908342115277934110382751744 -426269788256546794409141340418867200 7763917894180991538453884295970816 9794992021172325637670105958580224 -908713813445096893172968278932324352 7762031270050124149249688507252736 5761707861900274846149096291434496 -267057458365249557744762221469106176 6808214874311900004979956430929920 2149963034302471669365031175192576 -374852025454460941206438249473507328 6570945279369488001031022565130240 3589882131227491843398491338440704 -870726107488309047593732367047458816 7446492675729830153973484243386368 2932998053296433711801634415181824 -593363604882763930536353731597828096 3292467852493585494115177052766208 6259895464884014266091754355687424 -979320842572460469683652130196422656 6610981474722584470971762627051520 8524090185674914114611658948083712 -779256963438564379687844288963543040 8926157807201592016321274319994880 9004362863462042256798886186188800 -182748252317555136933182807390289920 6267064148346295526300359204012032 5372483856646845488854541872922624 -569570277225798054320832823032807424 4182712195268095425859645788389376 8926602525961261534000763117764608 -23257255412839801407649683431489536 1868291356721786017408728434737152 6669191198289373886245112234639360 -475963305486210762508600553888546816 6100875576581946845833924072964096 7206364535647033886286391233478656 -598761486167394399531638184797536256 4501434296995094877393088516456448 3790086728142448406950841224790016 -235052331087584807968074920221474816 6430145962821728578620601606864896 1562070536701533319469317608177664 -473280734187525705327265859330113536 1670973109557489335303247962832896 5542940783841493883305196636864512 -816378519636724108027271199542214656 1902747262107621490220745273376768 6680784692445546179157230528495616 -870565950347373451868013961322430464 464851262595154316367750081019904 6845313322938287546193156612554752 -543703466290417610721020216344576000 4633880771111665153501843444203520 4904679340051760367641214201102336 -830310818490989793016451478987997184 2094578634007786878250181002788864 1995477819617755855327741815554048 -455730226416716230636239558906216448 5139251278383515212019270143705088 4777975270968546072389541485871104 -436525820784152624304603591912456192 1140878253793563857682942077698048 9708270986637784460591771515092992 -373102147562223010397029329641930752 6393663461598494925208922460520448 8573454942297671038747347492274176 -871270563094807633716214991536783360 9411362666454704072834155049648128 2347003720452994166837071317041152 -46405780395193054321383195679916032 165751282741381286207787083235328 4975407722282087316125691441840128 -513328194201107656159836038781468672 1678172776732104767325594342916096 3646846261036094931493528918818816 -582631588190570808541668922477248512 7105627542774003566170442777493504 9475287638247385689737290829529088 -447183101257859333569113666743173120 5294177162297201396202067973898240 2123437194844768261141721373474816 -18048428778130687789610734612119552 7599582981037587808944801689108480 4102134194409777740899473594253312 -796061774922817401006949148733210624 8913769604461294681222223839100928 7403629784720713427761377331642368 -679738611997000325055044061438672896 2122360385970548601750568833122304 8243219040798865744383962282721280 -128374421496695552783132262324502528 6310893530897277116135884413992960 821348516658040810765943547363328 -702338874389739040578105630213013504 3402368681888458409042055278886912 1208633280373004514272392945598464 -750678206922004212722240153714688000 6726478798312336085379321677479936 3279714187835354515899995322843136 -249516209422823083929855120537288704 1557845060269716701178537204252672 1107255562636227028108826638286848 -158480356406618510501845114978041856 7042321743584696782716400641769472 7891376487018885510155733930344448 -836268475485482966853109361359716352 4608184259065570046192747496341504 6187621104591019503844867012820992 -146404349917573711480296966318981120 2348905437286543035198022554222592 8942888079183048744827857781391360 -602998876173829184983494891378049024 4586044875161538832954779905294336 7534276052715847233490219356389376 -334949165086633653398865408021233664 3362898300283775246943612143927296 5210042223638331633094663245660160 -502716875577757473683262263361798144 8174937206466452724029441947205632 2148521738344947873312439260938240 -324867139912303849460704585111830528 1028621093787375171208044206882816 9874726882103933438832799805079552 -379511598837112158088652472390254592 3382692461317106465958049009893376 6154828204411420756869804678184960 -971622949287104388809241721248415744 6442064591115269022769609854418944 9141862168937674736456596369440768 -238075035374690316243995381200846848 5182591763070086774719143980564480 8703068420861928454245241447251968 -891621125799179149744206244346855424 5110808884143735717754616502288384 1924061696610767537266628847730688 -693785416529185060538112552449605632 6002816755792315548440533672132608 7925135151106835491590683611889664 -421748506962957412184063670176710656 2542629065492374160884106994384896 8582724016687118557106292733771776 -338320993293966485097553897027796992 7430823987886219393731575871963136 6553109764571181520159467307532288 -163644433904929865551419506320998400 9851103687060651571969814243049472 6550531052333046219897076734492672 -955760331569509419110968084637155328 4669545924540760257611834303971328 7506034530732288740993615689416704 -326671013814484162766792604744941568 8431978564328478646105061969625088 4685778937133232656208962214952960 -190871714549145522519562900327104512 6483338701841520165377254900105216 4132070016925669200885291216273408 -697125350865329783803348732518334464 7763191489702766302612040974336000 8737755968903717049390082293760000 -240703225900564933147337550842560512 4568910629668938263030843052130304 7535276298761377315779887306375168 -782931674458642498020608543593332736 8432771189917431235624552204599296 1731866827723991108209642039148544 -322944859348571604638286309071257600 7862347061355175130572046039252992 3709887424431822855423924589559808 -448656635893929212610570259057868800 2340906955137496758014113193394176 5655690284881528801546381580828672 -159193362001110985492387546324271104 8036569934452936064227064858804224 3049868511376948882912569750192128 -800148882031624937482176354045657088 912272152130698144708221927948288 3550635124398734167599334786334720 -139296391025416987004453351940161536 9432680949385598375738784740278272 9103138047864256966624076397281280 -620685184205342055840830599555186688 6228914236278399578076744979054592 9764352500853274730041745904500736 -280909087167173644646923965751623680 6006249302730444153519181177815040 7684386396967489502175365030739968 -28487421095390026339802143631867904 5151176771493050778618001469997056 1224764128345723349625311676334080 -251564282593196414813213696339214336 2110903383566528722575843934601216 9334325262635008073496943879258112 -185936041432029991767029945670303744 5799049364827966854827440139665408 3409641120323621241287038296129536 -472796920135078237870705884620914688 8420592910202300171305193094250496 8681406570723333568909679486042112 -227125862734593587001766977178959872 2708431863428647347423247798894592 5583634014140151462692443356397568 -897012247288739886957473327172550656 2563780242880366722564431166832640 3003583166498337525701721035112448 -253276307475127498353499550957699072 9989973107586388888595212919635968 738406336380541977772433537499136 -476109060640313769808611340418285568 1614063621843838657542080427982848 4386208404945660006405267559284736 -110469770108584173532257425775656960 220973280931501298217360147087360 2918577487457836935457540480696320 -292107921655824600974324106157621248 8112571710585364851406495104892928 3504830205349142456670654979637248 -476679195342080367149748930629074944 2437988641814975380199682722496512 8673035815647552175534350828306432 -110050171036562555418372950110240768 417968024148912116251847039123456 2112649082679114541893310409080832 -609069686736318220980272339638812672 6984774169764942529591607876911104 3134307288271178439404996234575872 -219992796756521681018185917212393472 7532568624256167126972156788867072 7681183584613599225703116436406272 -468899487070868937461668213780643840 4130308607987703774866464326025216 2130791387688380625502378934665216 -777640367133144457207077887000182784 3719551329523120607618750245502976 8721405589926208352323279807053824 -522550412748664164840004541350936576 3166292049482779071220644640194560 5361862711885578457262421222359040 -448698014335414488092186413597982720 2572704541996208330294442344841216 5775033557320103857326764555501568 -140917167266659036414720583927857152 4624929967647787550948619490164736 3686949959291698708938098930089984 -847564119656231072189068195406020608 2113144117726007791697410819883008 1278602885162593785062845948362752 -876825233585468394767829862371557376 4266108957039045952398842103070720 9695328460020920843074269219913728 -86552901376835004722105314858500096 8838001583211894537309354675142656 7602938080904530414680571742519296 -781402751217401452999790759971389440 5918588733962751346152558498414592 6420039081276256020578460942467072 -805655292059683406927775758817427456 7150220842142488188086122698506240 2665601158092944973781581795688448 -134539598052796198046896167734738944 7059004884485813480644706167685120 1973490428479281430550427782348800 -115678893940467999791855169152483328 5016147896371990439689177985449984 6259977486412256904757446063423488 -886014595969600681690422816712687616 3245218470594065474906368874905600 5995170015086449093598570344349696 -302856758702489060113058271353372672 5732848823683310446833658239123456 9004138913004972870795023045623808 -135949927995872625087316186523238400 7659118203007114434975372771590144 1331003089185569037047445688680448 -928382757437248571392965527103078400 2328267370303845928527258808483840 6010783879650833492859854547582976 -346422169670457310785124346124828672 3154310676980480103750360987860992 4380496672010875839293032807530496 -831878054185869382430335449650167808 6500320042698366819728551506345984 2382955078802298777539162543226880 -13646734349833372187188428034539520 5254895909770946285798971781677056 197500483800023157163045838389248 -844120060714131651535419371948081152 9321568540146973983238123715297280 3875697811765190922818975533367296 -423829373571129794663993123209740288 9344061037878096903936014781775872 7633791827085386035972809924018176 -674348809802208460041140133651546112 5081060763066947485389934657798144 4481438922859877518505788634562560 -537167704540201103415726259128238080 4927107563133014832465457941839872 5898606209873647791071247070134272 -712744674096421437911480686679687168 4795988682779995947158782276009984 7702631881268494699268115926089728 -810753468925176877389527151431122944 9582185531343068492811394359492608 3788369007115386086303716190715904 -838233870753620127422035192587485184 6996509380985553331797581914701824 9294727206659857141733279313952768 -214510811389139930562725489451991040 5210284502759745690188330500620288 2817983955558937876407680577306624 -925282357989815604692473584084320256 4423576383145471185988569333235712 9765452736327049754723240395145216 -240305469800356412582138710285352960 7018950113267254732940744157298688 1312291226406126267537810805227520 -110518653175483736111507063563091968 1444132001192956771376734863884288 7063703968028822490687620631232512 -741916205717309107606418744533843968 5945704105463509709240049615241216 8146813789262879776152868374970368 -268680674604578472609224335036514304 1157452001442172893607728731127808 2933194334229328951137834750705664 -43222319357723655532151992177655808 8909574905982248279451043239034880 9746524618341834341604918674063360 -806174878742215065203940563609452544 9013549494198674464951090395742208 7719080548810306125352342663462912 -29038775283050941759165506005237760 2854650510896477681487359747555328 3866832724700736733621552142090240 -649434743926693841953579355997208576 7833051219203251975471357981884416 3659376579994316959097302764486656 -144899407538914794901189271088005120 7564510789007131061936133641338880 7774066870231827772276411226652672 -432418466960614608456914597937414144 8635464272626686645234649475842048 677847279052123693024945138302976 -933898250407754927939060167098761216 3973133474673155735538058133504 1977506648159211644283153903779840 -300860092792915831691532222427299840 2327955985717147845522056617656320 6691852546921309724830211864788992 -412034770680892541016955884830457856 5146413083215946673887212724027392 7544326829190315782568562030280704 -917840442854925027103312055118069760 2772318200751667301636342651289600 4012645367709255527001186059157504 -960770340801942296309848629686829056 7477776512982016832217194531127296 2793271823124011892760911011643392 -353335789528662028441601825000390656 6437544044679195516488947538591744 6602125940382348571857265918738432 -862381457963788895963186395728576512 3193555927689889544747909168234496 5804654152926374990581064741683200 -722269210812584920373528221961945088 4854047594019432332607757836353536 2789483204278362011742527675170816 -340453192932087785247008884919369728 3550716180405574003508901956288512 6851752461209429120532461368901632 -208256889830870581003144057262702592 1139110313176240360021449135620096 9395672997375257148341350318473216 -887550731549224257066230259378028544 9378074645292689173156839290830848 423451172257547137766024672182272 -562627932229986534472554880484507648 7630678309386460163177370802454528 4835011846610083561972648567111680 -481468074792129668280529078353657856 3001036452644519209303971742089216 9731177630779380934631139210952704 -325223564041543054217497048617320448 8569194289827692695691546356350976 41999277907667727059272173879296 -747483301619799174057601200419766272 5859041320511365577543641552912384 5531876596609207525147968811302912 -927034979367462037363534868875575296 1384224997490527245092434472861696 1380159448567654253493898052632576 -441880469133665481103935681016627200 7706433850511329906459200163151872 738359188433935562273693659824128 -655824216543688269735891529866674176 3288206375693135002010867384451072 4768592684726633929478713290784768 -604716736749087183151114913746780160 2565259273802994763959860092469248 2010905606828692473339024307650560 -249531450400776299501927507058229248 5967996522984572314571907109224448 4063476325127203053294042860224512 -698801974850138764264616426601447424 6700862143364410468755171289595904 1977944618718524670960514960982016 -955330984315302267417166181002379264 1123035264765588467119924816379904 6564961568445146547291144436318208 -354173023068123559242050796144033792 1202761269926372564164454861766656 9418911623603953537565818697547776 -563478708819651569928108170081730560 6992157653165973786767856087597056 4464704401848973690646444233457664 -740798104243098929786741134597292032 4684660053672327703217784255152128 5534023128520022447624955755495424 -112823631663008701818746798660911104 3378344606500565757895209207726080 4403824870775769967417170818236416 -637031610455369433184468580220010496 5467278526990266012114658112045056 3223698518704181031898783718309888 -154683039453530202372220785317117952 487411872642455665680230618497024 635679035077218407255165821255680 -470027067130165401296379273793241088 7531064713071159978276529912152064 9294462768916815879588275472564224 -446365650239912983332321168336093184 6973367818388986084974629065064448 275251954768542505214750457069568 -556110381439594334269145024011698176 1021829500253393380102320896868352 3596082781945362113983729096458240 -958573849352796007694794996175601664 873158938384431503953045233860608 9666305642814853860984634845691904 -273371433213107745963880931571793920 6956236724370737311447230460198912 787077930312025779103588205723648 -510726063698293856130833830280953856 8445393835336916384635982238973952 6032040581944909672577975994810368 -566105293893612832293384093696000000 7009407699265773083362250360619008 5280859599671297973556137366126592 -4584786119105357349531787689197568 385243233233079296228317005348864 9089989342243989591694023707328512 -235588968456125534501612417789722624 2154340609510031740851890813927424 234905150008638939101036919390208 -98065565469401451393843399246217216 8539939651833813087840430045790208 9770361227126098491505126359957504 -39148445986846829420375476858257408 6781043322566056111624861912137728 389048857509739018151946669260800 -298598828154028624231339088634970112 5137883633272418139586534087589888 8294198791961636293386218202202112 -892323649726107901108559500263030784 8010632656860268285728390496911360 4034828731219274974420893337387008 -69867864004358941859096392884027392 508899878351015851953788989472768 284835781740042825934525196926976 -924434808559086857735729154241855488 9838460528628074256932739223650304 6695411707459755419603492822581248 -899931123557192734725192994021965824 8180735670472643693009129313402880 5155637140356332622458070702751744 -514100247707899675941144382553456640 4902288970950719597726089646964736 8004290041876844205018888374583296 -255283325476585499362890043250180096 3183483558961709833702734521434112 1878048311251247456555833713754112 -479558577107955124487412330887380992 5103566279662817297854280920727552 6036089420184267139095035344060416 -174070229904620050468419701387034624 2762957025579192658275968458162176 3803736942181146634682358101442560 -976499282204888839389293823790153728 7523798505463030205974400353697792 5756009511646990926620568391254016 -29029262342546574806832301538803712 4692353114941914409637446961594368 4501355697113411012431296111575040 -153529921540130102542766810050068480 6787098816102462512624002523987968 8309085642634123110715800917377024 -599052382456262015415660283636482048 7913629026667647432514804283080704 9381531762483633432097978151075840 -12628844687783875706614487806115840 66314100544498999979571794673664 2525896681283839893831153396744192 -438513441636835624890675770595213312 8338244540229206028449356233834496 2088906152665363942524472904384512 -654040761117745695178080895186763776 450820702747815621880694456713216 673444465870255441170809854361600 -350406327161970686827398356094943232 6766140878683826877889633360805888 9439550148047955854940871581499392 -747208452629527275214236291673620480 9037622338566415251325654596059136 476441195362048761287589700304896 -585074174817238988064837496320557056 5709434922332845851862401944649728 1424646014964151370325659664515072 -782928402674389762236347284046479360 7380131080289232612756069000675328 4868088652193716043596513048264704 -382927371384880442104318108073197568 3306809710992099080478905702809600 6758515909811740866422545619877888 -393367226618520505309865566791532544 884373557261050718851369281781760 1841093021142471871763740444590080 -17991082468396645758610119864614912 7022005255610905622477639100923904 2325008201177209522989936358195200 -41041328198148004800569648955260928 2011344516885905926072351246516224 3430016646873555109630894122467328 -665319113215333404168875936011255808 4044549866564372743406333502423040 923888985346700392501639787839488 -149844123723044795304560970279419904 7879437271986381444887037123493888 5495640365730265743027506516066304 -5022305853795477698084439553212416 2490374884422891749447526707625984 5686238616287750287746051675783168 -882397386300458948346895575426269184 2337017329139206981177916587507712 2349731350760617479171955450970112 -831176236754115423054371637413543936 1659498163828758598201656595185664 7167691963502037487266881486192640 -236969315152188338145021804945604608 2703862015377334650451130528563200 5822889188051015756927643563327488 -334909460952574269253981272268603392 7176095992649089229739851285266432 1908946881287243284410561720221696 -555070553264951829669361591720607744 3927737261965183458145305425346560 1108765199640581065494618175438848 -656595452064352363863027751663435776 4078007011851819679653305859964928 6056717252907400482669405837197312 -347049158568147947499784746834067456 4201392748907591024820972003786752 2512555642907799367217848717934592 -148058812728402235599359806514659328 7999682569371239593788722408062976 5846729717384700136688701161865216 -321945827946035098905888788991442944 6777700613679719735595089879105536 8215264072290206236887138065973248 -429118117292489588686754722638462976 6325154206011873159391112167686144 9021984084933484825392990885249024 -10091704821019293081346774264709120 4331216331681287220593430693412864 1250897295426823803976244415954944 -552900441725973727321919149895057408 9772019917286045614884160819691520 9298610173601709986806371534766080 -314431850757357809705746584035131392 5200341377232284038443433723953152 5889099367855412204981000553365504 -58957366500708501759488783556804608 4605668564260814693777089576828928 5125578580295573898198088027209728 -540089814402413427691755296276873216 5051094701338500570637675714838528 3407831499616484416695975431634944 -178627703396192142995061791074025472 4383421234106622117815508459847680 4818641385901295253311025181622272 -572563731141396099120710034376359936 4604729338589013856643360734838784 6037649574578793926783227719057408 -725595427272075417649942820919705600 8751454670988619088672874767056896 6851202440169504739762710132031488 -490589956091858042355850712948146176 1949287611829094277816274495995904 3563149705903872136636264416804864 -103438010570595377135129158813220864 7517105177522262061482534225575936 6581419391161890426030498468855808 -43740277272953914944993726170136576 6950318545312753974529418936188928 2045386684171991605800524624953344 -343879059319607922661511204068917248 4544104730923774615480353603715072 5361064911583130424151757989871616 -605449689566323476381224330516758528 5647685370802499149205136853696512 1759465087283751388889883852406784 -963611468234596932270000500230848512 2674030383772750957012174982086656 8393340818218737221473728240549888 -746257299991668760412347658261233664 7959910718116635125179334069846016 2284094773600481495091228415361024 -64453313266448133091056056512020480 4048930212563264726436829716283392 66371066730917979537662082547712 -486403921965564277773005122015592448 5636653446021910163626728188018688 5805099917038146507625409433042944 -440396945858649958563526394708492288 6865833954466690251149485876969472 5849779497725758213928623479455744 -23522094903849850087771995925118976 7019213458111814908669937431085056 8562241950559120276286372946378752 -692196927811894295246798856120172544 7243184265792534007785319401783296 8638387342670465654130446939717632 -494814799840420039912044948411645952 6292435979059713764766818364293120 9366759278674197387535972336402432 -873408831678060851107603623362691072 4635718130412235669157209777897472 3555355830875567762315514333888512 -413281300735950578782209290352459776 9356073383331291543929453881065472 8508825150571444954828435135397888 -231905647287357011465772780413255680 6318519809188845515682005928378368 5954483476128542214463929354027008 -242004791698272599088132660077264896 5874211582341638889905487928623104 9124847974685920338338946108882944 -282309112098753362684969978964213760 9670911033773494932835616090488832 1451176689893883412205764593319936 -676419868117901201527958670518779904 7139862745874081986872745366913024 7152190675948827756047036506439680 -119506236920687032236881815927783424 3951792654202048484834454662021120 3829826244823683817209682758467584 -192957096480808040739992014608662528 342487844271017355642935460233216 9764942319934802903018562140504064 -251797805437450137285624299404656640 6022847502412027848463162552614912 7958565145691644660742790800474112 -70078480684027911078007705033506816 5213962300713565102741616861380608 9584116563309324529253066941136896 -258792786502869941367090858988404736 6266787500650931993753181220765696 87925883045200384118290160549888 -623828524605797012961119744309592064 2719706538605805953234909771333632 2186958219149810142709919327977472 -852172561970264456013233072587669504 1795809508005905109670256923639808 7724047940046979057906793888874496 -517136242633609980644300354280751104 2685429392952730703907413792129024 6901477131906641302373527655022592 -119172929662581615115191200576962560 1484281441278723029937083805335552 672610559344973834435172331683840 -563092749541764294989832715872763904 6109892366321071311082774513844224 7328673803070052670227658859085824 -653805170923175433870831402235199488 999571503509277589040607052955648 9637341908678896532675962450477056 -411694470070976272978903834787053568 8603210314978300002316708808228864 5512779092035378303146623934398464 -675141473476670494112191637069234176 4806835905643462619132134411993088 9193330070412665607093621077573632 -976842730222874745494282489305235456 5229124922547948847056997622743040 4641984507994584900882051356426240 -967845300459894019833642295916232704 1433225885600890243933683509624832 9988939318901581825683611006795776 -28156726206750611987787763511459840 8530469804937517534816508605104128 1272455944750802289016575686082560 -78075336623120063148933391446966272 6132160061636946803710929349378048 9904163821145184257846899355156480 -111349639733742422519455723577933824 1999779482851854076564508046786560 7754273650144607910218830534672384 -40503169413248050252488362663346176 5001477587943748907620164725374976 6897868143222395408802751912607744 -44991527838036007680921498395082752 8299341731544698279752162288336896 2238771278185628307533352612659200 -436029071570952831845230260883816448 2493126966763491738414238624907264 591054131821287471108607434555392 -404093586583848876443282783487393792 2076175659852531474049884913401856 6769658959388892285394180103995392 -6966779957050441087013206303440896 8389238380184111149774668572917760 69514786857459890275077052170240 -699268601115423917077591717673172992 9369279208694547469256461220052992 6788735763660530819742575760506880 -441671207484187211527742112250462208 3381762157432973997775464211415040 7330920026609200817693251338240000 -931007674493930644826479236237754368 5400434603753760331251455887409152 9633208305747663779668287886983168 -421754321795968000243271456555794432 4766146962763391919719580847570944 9849214448747434776069467638071296 -328160265126948386352988483431170048 5520432527134410481920041489006592 3165102362745061461470497193590784 -867590632711136037933903006591352832 1364919616101765346600728498536448 9074697945431629480460607236866048 -183860643084493398840946743148806144 9949235745729373922028024422727680 4095079593824489635485411526574080 -782398927803835843439502676436451328 4529176834150437686649575192920064 4556066291867003254506186625515520 -73419841505623695988035039837290496 1238299382973961240540153531858944 7196283473861840285139662098399232 -625024149944023174157999857446420480 9073935417864303421382199227711488 6071596670791775212220940323651584 -119402324706220715747037087998672896 4048283620689242035604064261111808 3270644878989791660541597995499520 -622199759905353572495497905443962880 9858477580952523374842014878138368 8202492412104271097153723069104128 -658113148342489566974522514045140992 1262398992704706557307397559287808 745706590187422385781226730422272 -502696886489704572043144030087806976 7702749967578015963142813135142912 4773335549825094152785477121343488 -867047086026338485550434126231764992 9648429947687725374882677744730112 1684270060869139420412478557782016 -577222302516637729739007662273593344 8092519919765382278408007768342528 9278754018964222091346628828987392 -189043005613220651762986492773793792 5001025239949627744724044094636032 9775087987902305123827441215733760 -312258817696900536600502141989158912 9156150763829976403810248653012992 6264158226528656276936581737086976 -433427087973995044689586808290279424 6235136433151809683944612659462144 6897166654343275478356071018397696 -797219296363818404838119592528183296 3981108289442579417016517374509056 5551711051534586086543811271458816 -218703420519090049937093509223809024 3073894824920782678369691722842112 6185679806080884494665419075878912 -357693844323589689842205604611883008 5813929774413233296413674243620864 9991004902263958543112612874289152 -691095458225926677731189997441122304 3372157154227513389866727170375680 2620761953801125064478766428848128 -567558529519485059064740753650483200 6226903344161556721428269126123520 2241546572208982129449499203993600 -642178161713906744567140758400794624 1414377528016884648693825160609792 5445650919496759302311710327570432 -986117329973369859515775343040397312 8266693400655766901933006496202752 6405546763505706566760033029193728 -638487888753700687983883746528985088 8571496618437846005042441432858624 489514601474940646929939115802624 -5102149335050185639975786689593344 6057676524973752715690358039642112 5253664107004988578148018202607616 -723542635436877212142273929339207680 5005167103051860334697876220280832 3154750428234430505185589566898176 -341270144326332959730689403804188672 9155680870060429643954308637523968 2797520838270395112058009155534848 -507190987217174811947752041964634112 6709804620640442560702940908093440 1300021998718470267291579971534848 -871708240325771441233566992779182080 6114218239043642530587986666455040 9180698897702385785183759406989312 -701410971728832381608783344870359040 4911171018952216177749733406670848 6352222200835373078088471141154816 -809609890782225003888795171061497856 1651464874114920474453399494983680 1430830470767633236330892524257280 -382837409528741748517608411205992448 8955209053849661119192356098146304 6200895743724474038042995304955904 -970541417568789964001726534579650560 8351657763423210403368630300442624 5984277854804616013220596177436672 -682213833955321682083355171139616768 9746061724474388498695391478284288 1606126993556233657452393469575168 -327014625923826676422387417483313152 9150319251430754540903661203095552 8020218305967962911205837590495232 -204247705919116562275636767652577280 2828014851405077705566436563353600 9738647346348959843360898639986688 -406480560403695009002593867217764352 1200391529005851084360928035078144 6245806812063259589918377350529024 -428777964823756649763817777348476928 8072117732258432792697214924226560 5497855864967849926078389343485952 -395784967011154155484011724990840832 5155533677078535026310225757995008 8754991091119467666557811709444096 -743204742498424216532235325487972352 7462679805301210570668721825644544 5593937661707528346179804990537728 -377516553559493993833885833147449344 2754338532682444146242765428097024 3213138048814363890817377010450432 -102659152948353184125631190752296960 5576095163873386036245606172721152 55680483367725826994484090503168 -873526365153333520988042502856507392 118973363441658586705953002881024 1459665704754434815108550085312512 -327629575392300347130331273699000320 8217829865412972224172165645205504 7498135488509831839314779087831040 -855350035803343811221439864570380288 4138651859305531391698757637636096 4680952498542543439563714889515008 -219566243742926808215661732673093632 5460991725382759658637411542368256 7853535259419812164808880397746176 -783945936713910117220527626514333696 6304633591349735542318552162762752 3866183236106517084329363587989504 -285260226515957371814352292742692864 975049666777128883949712827219968 8144653618312206540068229679677440 -808984732308230282183959636256751616 5300968356677698445248804421632000 6594961367810997628051149895499776 -452710226349457984471571927337533440 3993808120918278859267220141244416 3555647419321246215094631040811008 -46866031628276708377723241733554176 6895681209961130936622024977547264 6372120072347618347002666179100672 -382595666818680775828119628583796736 2316100035615523421589164670320640 4098344987673332512372404260962304 -78585382909748006065739407153954816 3541274191770764643754223213740032 9575089671344327936416792946147328 -809010821006434415482213544396587008 3007936926714296565590590249500672 2175445355823490855178598837387264 -902388563783615175312006009856196608 8115675046227722858770293137080320 8678619995484117385744105487728640 -436038412445014118049908460277989376 5280986111918041173903876506517504 7537544366255979321774339927310336 -104854593014889763719477340514811904 8111322819505284163426625913880576 3103163877134412739582193106419712 -886837153640443057205954604278218752 469032289750024889046887613595648 3868336486985786870694063909109760 -279268141491412801771161164919603200 1290572931955063157377458348490752 749377744346873788012563932381184 -606320527934629276188166350681669632 680301459236902560668125463838720 4258549633596542241983320110923776 -838236985811730827854643313262985216 4766803446603098845878522400997376 507560799216240003600683622203392 -365071752424595996351672671283445760 1991726003948337016202857168240640 9854296154644167483643138179858432 -937297697619545786909504348690055168 9372097300281487726778008968626176 8490398458121551938831520781828096 -786813285035778826478093025224425472 2775174355783737809301509983174656 7613110885760820914840147528253440 -313084581971298658525067669300838400 4595079172286947961620012908675072 3477419501380945433279915393810432 -913964386258918357845159224279040000 2726441445282813535309451510153216 6370651650262748806115229763108864 -125202463149316388744840275203981312 403591308935026169625837173735424 6010586123532237801163002193379328 -199782092792759935656932692425965568 3616285426534251368185866586423296 6793246861778374372505301899280384 -805108886418772813328106026042392576 1121271887843886568255173865504768 6638065263858775391906992433922048 -804465244627847062391136818401640448 2176790329596246896355117721714688 931780332317860119439735858921472 -188633264674074378813765628649799680 686083281628838990114857181773824 6105116798175872151224790886121472 -812114170810749574066611611370520576 3039151954696910301312542222319616 6012143092719882616687117801095168 -648025796918820009746945738453024768 7851379397410605113123116240863232 9970286012661685972466641361960960 -296890836446740214138702309208621056 2900423801483332352961833104048128 6443056794959010059505352981872640 -197660176840623436527463522092711936 6555218048800181541622874323812352 279268475300796541696987545731072 -291697853159420380593598857260040192 6456223344154611866494684545155072 6351428959727922706807444171915264 -610674413528828813761915973445615616 324735912122179174538886156124160 8836104299644475978019243963711488 -136295114121977665398209556672151552 8300831768854369506161878504570880 799405422844143999178010674593792 -680947169431035017255442537756229632 4666315178595313716375488114458624 2278030887859381892234703632596992 -241178498659834458912511620726915072 6166009865487144467897536869302272 1646088042958524281001888656130048 -63873781255141846352809658201145344 1276422394592750754984476236840960 3866393803882085069828015270133760 -292495030007237032178112498352783360 7978204133253162785481859979542528 9299119318963617689818462051893248 -393033168239923590659916076035342336 4081583839437942089992156754214912 1484246776509061029941915697545216 -768659902030743145679973724744318976 9124232352710380602193496816746496 4598470237185797378383219294994432 -585465245192969441405576518880460800 8648483504867369109962063689547776 450671043230963916439749182619648 -574796942172561314442096544288079872 7931661955290671518464875499094016 5473246894958396526879652129538048 -910908764318090589424974155825020928 6519727657776143122897800007778304 3809803419133506561831466631692288 -934649293803967276701083204711350272 5501452347504061024705333564538880 1589368519415212591505538832924672 -899893199541237832430366632475361280 5945085599133412436169583845441536 4395090508202564337238374311002112 -523303197317939312680018760769208320 807803577271893858950333765517312 7661661162077732891636899610886144 -393661085539627822728917694581571584 9307539364893201503976916489601024 9686437622265446664917322660052992 -907593808711926599601617189237424128 3974696398571036435500064581877760 5185518894854216090722655059050496 -130190951302502570410813233026826240 9884893230454949694496524164136960 5987291670113771314658348286083072 -517318609103981836964488739760898048 8437886117682440988704497089904640 1735144755348572943675573942616064 -717757270697992793298920749572030464 3735995797186067825948752770760704 3110206749803972637024253168844800 -688561606703460142909743465200877568 6043303225301599458578222567915520 3323588239236695306155097438814208 -504611194704668040013007444265402368 6607514144794957194510292656062464 2892064642289588973201417511632896 -57149065915799221529778753003061248 66391391006700702042311794622464 5167972685851677090340311396253696 -113728217481326818575172457430253568 1183991272731959152782905960300544 54611959239798035836709034262528 -686694900146184342055277171499335680 3180256540171759565028255441354752 8952349814808298013744222949081088 -314251494896888166199034665551003648 4511088202662308492782412891160576 3914133475948605383470813110337536 -800634732609110293590064485164384256 2887017263525252666162733895385088 114944946175042948046472504934400 -332263474589826564033037722376470528 9324300838556206654473988042915840 1055273006500982002741641503309824 -599110923844841762603504489025503232 7696984149758959869347080465022976 3880546866438812843450224735158272 -274292818220644867456949419167973376 7003315534586826123057076151255040 8760006540568743651824733192716288 -833212123894352186725304680302247936 4573574508097868436160105781657600 7406202993765327567862188486950912 -409434794933829215408262199390502912 6059358812156084602878003301580800 9190133166510608686126250393075712 -339786496225522032496585358402650112 4478430867102599713871303932903424 4140086270528381106660513322893312 -973767764808742766927263568926605312 4294723326026284844390630301892608 769781182965485769617840577445888 -236907348783353287468540369471275008 7793165912955791555363370218553344 914660557904616370087458393554944 -875953042642043585405184431659941888 5429991544885276736316314516193280 4236908899779888162473839643590656 -697087083037007612908758650431995904 2147909157332946737787611446771712 3966233100668975710480392194621440 -220138090012221356447471470207041536 6875520414280688097309924152836096 465217450542399513482087138066432 -553562219491323697457004846660976640 8723209090317124736286653679665152 9758825456021761659408142313717760 -55018951872979908502918590663491584 2100919542022446192217363784400896 741245430726195109895673663717376 -881294265562193437852855982369013760 189889021934103211305090827681792 8838924001503220753015876561666048 -817853840376109497525868551265583104 8685163875772422062839342030651392 7791602321496653278140280332091392 -596442880738788352813906638162362368 2518318794341513615417192229109760 8653322813422847630289898798317568 -587203489584110980864429583677521920 3855706471742619707404281618366464 6242106820151080144920138437623808 -842652125294380112018236006486507520 5478397537501778731252510105796608 8059824347285296521313152663552000 -893798545522255938664115306271604736 3853043518290763751989751714938880 7669941905626478210226987749867520 -884917414745464678344755062891347968 4527502403484994363328609537490944 8346705334459727083784280754618368 -741014281338720838448204976631054336 3416917112439034770975266466430976 1870074035538260883343778686959616 -883856863227259328784343033956007936 1294926019792916751257823831130112 985119811163216794313591955128320 -464137400359127000657725601005699072 2756341850820242532023320136646656 616130883373209371040974148468736 -516849203778126188675905188087726080 7702005380282989773537689221464064 7165472513034917922266458724761600 -170300102262869240257761019816837120 6099083193088883672126616592449536 3790644791384160680353012677345280 -118313628034848051370231710468800512 6507746982227238597277091161440256 8819741715371254615404661031567360 -657360120556446502608714107631697920 5678255477094916102458531033120768 9705718184752063507281100698288128 -42595020072692705219992159445319680 505445920343450684073409974894592 2418085713809074797846482865094656 -445262615992273132651493738888036352 9486525454992907520458624182779904 9853689987091684289608808239464448 -269470232880956050236795629168754688 735868587360147180409677234044928 2748779590820186828169910262169600 -929881174347710942193287785250553856 4991741303036360698194309431689216 7739098869112681674118366771544064 -957096234606371784991009228567085056 7962408991470629869998267047084032 2517482861524676652457397204287488 -859434466902251765254834159695691776 83580413680358585084082214928384 9272369604222929875659608341610496 -225337503387217456116050384182575104 4472798021087970900451239596654592 5178079746977220659172752584867840 -593967536409743078264730291399557120 7634856763800535845230762080075776 4454066580136721886201137334321152 -583143319984914522460020616147763200 8813428225179029633846874403241984 1453991751278722127245396190167040 -215946989878596460608620591071625216 4782379573149967146652258764062720 1121299876690849142676853694136320 -206707353357016059734681447628275712 2915623739210658947762960077946880 1623888647247922928369460047773696 -71056285284225199311268440380014592 6921256906347926808122439399112704 7610044568211493464098122399481856 -389507053855208508359376867847831552 3100880406771580133105990472040448 5700143248726727258636710265749504 -323738733586856685787587220045037568 1516747567817243734090867000999936 7084712538005054973391393781710848 -839142911929810739663553656935940096 3491504399418501402638574552088576 4455149923742712335070795210424320 -455069664895464072092789077088141312 4585844167067339584910546066997248 3432208463153229320132003920609280 -55892468241061076606424757288566784 9763999033970865283751395341631488 7728424812196317234259767091789824 -304407437654785881828831279112519680 4524412194165783149210591884738560 1223163294719515550507964137734144 -716442234540669522307779966596546560 3033382227089871324025041117511680 201933999760579419685832154415104 -788426824708442440487597962296295424 5949099826254315884178622149296128 4582400790269828105384705572995072 -410990100235373964923728698271596544 6283953021550950134918640526426112 4164777334187748830296669889232896 -469837727093231409088389662881349632 2948787446288531088537059845996544 8219518496985562508453668116758528 -430036227450830291076731399806386176 6111947732290149641529528539938816 8025625278035756270216496239607808 -859378687404325470004403620863279104 8383329472916701202802588895936512 245185470725834901581808156016640 -704661843470512758315337891782328320 4945389895104217728897199068151808 2314272938202219391513418478387200 -454597865271905838535958100252295168 3600007700597450517650284862242816 2140246117306703253570276563091456 -524486201557569378829904676760059904 960109211652763280122983793819648 9765508778433620807883580896182272 -297528492573539501830100631987159040 5562327103017257216936558513356800 3050365812207487440662053710200832 -247249296032157783272883989264728064 1734158481479540531643623984332800 8824082349264069167890759080214528 -817191053398394889162662690768814080 5363971993920297932275215637676032 4623524295876503121975641653641216 -714562882349665752414754841418530816 4253384590647259648453997823524864 965334828275909127970482515083264 -630472730758951379130554013062266880 8056687571805448947648590637957120 8034566028424341754477071850012672 -859529085627981289239884967217987584 1367774210012611346085586191515648 708195301517631393815308636520448 -428837002305898105057496793926860800 1363672339950103392636356280713216 3793778594969728621332841585704960 -287271300847186302884110176570310656 5579064089310555169251195531296768 8162300634968637196219229847683072 -355955151529146609775288826718060544 2582429098987867178826791026425856 2812297380767765863588127783780352 -346661310136274322857569477640323072 1569550962462443176902083100016640 9594667637083906173329408876609536 -867003457288322695950777075709771776 5618441997158219120562687904317440 2071544338622797961297199217246208 -271279585008734624286066841095241728 8029157797535861271038687205916672 8199366956229426818282025272737792 -205156111140584653226022467203497984 1201445953580203795299626779672576 5151766670405274112978282937843712 -330148910837233187082927280180166656 495271601912318365664181120663552 9608143811694447128299128037048320 -516249639128518063094561923418554368 811789467147131498478053428822016 2459185048316418326173162150035456 -935989805250028515313967597875101696 8927608876904960494008626457870336 482885189023897423521644468502528 -443346718740764967079132116994228224 5935540428154450380404254994071552 9659953074505511782007062761832448 -896012109753054938346424362776657920 3510531751570745118271588821630976 808822667750891841721199954493440 -548477645946587746679926248238481408 571253224191798377492854150791168 7107634663241380322277422310359040 -155046759041897871245616227297525760 5783921679539651280676152166842368 6316639675295781393819695478472704 -556240806830306683713231915115872256 9572312856037105794220306106155008 7211452599747878513923353567297536 -888836903477912145569857157430509568 3513901142936975263170974648893440 97868059917520357823159572889600 -483149022104060687568991250211143680 5745359252855963295167318331490304 5328125927089809397142424614076416 -827782151222150120530673777262985216 2021457497224720485009127974633472 82504332439651149733376886308864 -255133932020346870083899402081009664 1415262714902578832990358948806656 8257888030650385005484167007305728 -707274044353014223078154616367480832 2163168190340033857713057535361024 3923136086303458733418794297851904 -280821097120571634664761522944737280 7541488032644574079618166758047744 9305858471617660806331430053347328 -773484465775051354748924718988918784 9693809021643020410376807100973056 6999807892296686647008115396968448 -721982228697515675787424363173642240 346725111582994849478799207170048 2606639532662853376051962099793920 -104888077157949830656951984886644736 6380472509520497027343290627784704 295119735968186124422684595978240 -131906362829519231005997795955965952 3714939770701877702246116121116672 7120976779253836616745084226895872 -830345220140709655269710122736156672 5604288391204664674489917046259712 8354536531485799744262455617912832 -706267586840602745991495434767433728 2386022567632590680488444723986432 9521452472975634157075921218043904 -796296487630837438011208512462389248 7562334423142069997732242351194112 8298244269914667596219767505027072 -661382079837867275242503653484920832 6896730812877305654569601660354560 3861972648222020929757650503073792 -580782958717169530210871761113710592 8511675414017948347793998423785472 1958813345827178724936118911893504 -791309903811679297231124459570593792 3238079080741615248888441656573952 5457939670100814084719321699844096 -762335481700355515828343132250963968 4796638714771042845362284526567424 5247234570608644150264910732853248 -159271192722328109967717492567572480 1279156501324324388152563430588416 1412586998944332610681437989896192 -424071515453968781489249878693380096 5892770201243862375059985453285376 9540975810434109183168459409719296 -653159958645626494798632289549942784 1339362231513049058306348931874816 9902603239969468276234236318449664 -588855660072840331889918619271823360 8639661794100054515145943476600832 5453948596354843424553663490686976 -749499949717406516248739091719389184 5453171360259323227729289019392 6421829361699477503403906924806144 -823666784244018765998993891152363520 3447413733651243641351175336361984 3153358133039822041046144620953600 -463257745275593185751710879813992448 7366738991887631595025952403357696 157542886724408152759599867363328 -708698668627045227876919489784184832 379444259562589812952973703118848 2706684862605605209711870503550976 -53484345219606535934790319617343488 9615159639671557364533629366042624 2142800598533487692291920590012416 -340649706972234341568576674875834368 2575302998172370533652303907389440 6363540643754133985880566325575680 -793629065909337183604003881267232768 9728518659237175513254839262904320 636782710668016270213110386655232 -504236211807902597874653732397907968 3381739114568853252786496280199168 8841162703266318309665666997682176 -530555769960824632249290041306644480 1299895087318241460193725513728000 9407017662260193031771802419855360 -561165655687235485404605515535745024 4044057037389106292962255345549312 9221185551448353193269904040525824 -371560199139464734273837742273069056 4614178799849294374379818613473280 5811189944914725060045697445789696 -716361253796051530997005558694805504 3367160483194860063787271380271104 6638782981384812173318959835119616 -592426213976744520201941200274456576 5038622622649448884717260912984064 536075953955127822336635512553472 -927839516389908321217944243373342720 3499667922429752410703254727426048 7365221420139890287063006212784128 -377372834160297158804452734536777728 4650137508103602328949525097480192 1149568467942148309834720230768640 -974925068643175782485628401196466176 3765213503022438627154744584437760 2435245051428441560193428751384576 -302445855050039280244155947730075648 1657825404795353843528045804126208 4494368318496981855619355336769536 -19497199530780487753051692806963200 3135550519548756327066928704126976 4409660477199656482381725530324992 -83695270411872957500017726126555136 9296026044105577005741306860797952 1282067923283072800418021410603008 -592183159947001296084090710139076608 349265854020547719259341556023296 9086306275932125474735912231370752 -789183169513926773388656614641238016 1492915831289950534990079941672960 1963296656201007712648637915856896 -269651714354886661343998318257111040 3324216946093826454784794093944832 9470436712286991004291865878986752 -849813264360486497968974869202731008 8447893652945871126212207899049984 2970885303659315591322966320742400 -633658402377777819098032756817395712 9988556516967785387980297494069248 8317718135335071727259572676591616 -61241778836008193155154683254276096 3683743077488434073285646830534656 3242376120368073074512728449613824 -249763281912363019301619992241373184 8481341636953558444750117483315200 755420791647266208496243531841536 -666218753551844831695892313362399232 9383316917343941210009283256647680 2065652613314056220242421145927680 -662892896549958949402428626375278592 2273012185582178780072468830748672 3369453148569981310818570700062720 -767951714011735181935864310308798464 1498702142203424159625986722234368 1834141524674837323304289211252736 -382117346171873204956459714985590784 2363121660071780315005768152645632 9230889615345595952113959370227712 -177675043142012132716966777270042624 1481373774103174045062284051480576 6362020648165549898998594410643456 -623606930469938580955976443998765056 7727398095535282197605553339891712 629546146672621616347523768647680 -519934491678608202323933959607549952 6871595945380877681741029965824000 5501949643677988824678919221280768 -605878329555224119705886321981521920 9819816254686658815521325785808896 1218532814686520283493872764452864 -118964203677162317681256198135873536 1159551277947981931452214842228736 6328189834596366014347529789898752 -860277648235865614281377300573323264 1955011746505925767998478718337024 508521696972447308199897744801792 -319238762056092989928742435455762432 1125451364638971564390152071544832 4324876030027888687801771401150464 -351075001663283819748058795102699520 7509800158916810604153645589069824 9368324403626857162225768820899840 -776403157557027163406822916952686592 4421123397212747870568846190444544 2897339450017159807158137886081024 -275676220474396257351589656847712256 6954762178917233459174761161555968 8488655311831082051498687412043776 -194867886164612052835309467455193088 1044334754386081276138112526843904 174194035346032221631032112185344 -452561912501359926087380012221071360 3902272199181118380561179137277952 618547758426485328640875104829440 -259908467764241784293693059510566912 3616714466148657295943813444927488 9134352567786773974985321425666048 -535283748384946056635439932938125312 9167595280004639293760750573584384 8644951892580845866789942681665536 -734502785228227306097733807097511936 6451195141356184632532018313297920 3945814810287985582298673730027520 -116018887227987471530541674668228608 3409948920549953186529929160818688 1200654522243306613888405651587072 -616163651719898431466862474145300480 703569434330838311353486768340992 1841372106492528247434864914071552 -471793610495931924925012904010317824 9805570936342127234210416725852160 1134150211932551974518875721039872 -439718321053561222172301036544327680 1504668734133527480948259217735680 5244288136929741002499971897884672 -675609054973912972528688420442079232 9261421432514643200052992908722176 4677830914066538804797339491893248 -205609502127675718254278352429907968 1369136285913340143565565297950720 4000025586725650109195163959033856 -427026951048159200538324704415449088 5742049457276556053793022765170688 245207099764486399107429585387520 -697694742566367953098271453666607104 9244017740331725141596002068725760 2968477876924270451932129996570624 -780881108689778975372184206960492544 85024151949187044886030978121728 9030728678713841789062717512876032 -112352148412001625999057501955293184 5534089633616807995736389092114432 7346258282725495942257525670281216 -779239573224875823293635304875884544 6154816249369239568752785957584896 1825545918033227339642944505249792 -830837011917264289318049146631880704 6269957261559378658462690447458304 9127194302820738534669684809138176 -227675497524316319518581063965212672 90633712555191146723369369468928 1103328035906612779920353637957632 -241743419052827038754291230921719808 4234639793038012475089971214024704 426129471718028263200752767336448 -967988377614221631166972825421479936 4315950536659990663157174585262080 2680688353042875953955889783767040 -990377355632482059351430630173835264 2008258674815979059155501194412032 130927391847397973495811311403008 -854356986390118073737222386717032448 7498182743914838588638408376057856 7006793178604714918071789972094976 -795608541271740493689371136389808128 4659181070914757682506554469777408 3379318087183093039174454240870400 -809797573232038136469782421565341696 8226972714594147454452997453512704 6215072988141971510989671498776576 -28997299005973613524876711878983680 5078119943092381575866253528006656 5995711097472441170454912885063680 -467523011463551195444320424511406080 8840138597735219961871764778123264 820284699020864023621326631600128 -500226518307484932204697521483677696 3416485607542233565840522384244736 2378691167399569313068250279444480 -70196651494026821085518072714887168 2764915096133075802557282722512896 995233786255338665424669101785088 -147252245776000882018336668049735680 5575165081010880536075607218323456 4369910611091433643705051822161920 -848102216485637563733523242336387072 4177752818605506798763259434369024 7806075937628863669240373106966528 -376702608187477651928931394159378432 7121243659308181479789932857786368 5238894567462131461400151677992960 -717072845934999098850924327969226752 8243404886369247770100415913263104 8006267176437607972243770684997632 -358496563037438084996652725979578368 7432612059385402512282664923299840 1928911299337829482197723111227392 -933780153363411482959014431966625792 282725603253178507295178073571328 5233597863576111735940947453673472 -8356521812517554251074430807572480 5625831060531055710830398390927360 9224643405430046929039082490167296 -255480078593488529777902707533676544 8312301440120229526726213885755392 8851514585573954809437703219707904 -610407504232430600723544696212684800 3057619329430900072993400616386560 1598684272080312028582646512615424 -769790938360769605769696397704036352 4467269605476742255257460672561152 4880442210083029184420003964780544 -901337964719320652301291244297912320 4762116130813175384629083939799040 339756858333679790321944189992960 -352840775038118627953059694733426688 4149290491534405280987652307288064 5134829835684978430297022759174144 -611420135730521238119594282866180096 530007312572696476589037744816128 8045876768382778985497739323768832 -280610173278765426274722253327302656 3371645979521638333370580246462464 8329205677803974378743560702787584 -707836346711849305463077857140932608 5969703546185940225746671184642048 5287251543897667714435211304370176 -664197112282170927925479221904801792 7286103656369524980249422890795008 4257040506256486574777996433948672 -677403179008968073696500327112507392 7659761976543423533140161612218368 1007733135315078026571502936129536 -850548954372984516868790551786291200 1213774093915137024389601147486208 9693207167688614158517250002255872 -704234922414354822547741793088176128 1094530901496942445172541016244224 9977579785388003284253700129816576 -354384418468359527959383947782127616 9165775091901300214114356671021056 1107902117725307113568590442266624 -653717149746358472717972900721721344 4404492173713421845193471578603520 3963225588308525154757221189419008 -487096296082458197163028265874489344 8306482265050410523724495821209600 5043582574993182564439728431562752 -345463387726065608243182250317840384 9879343580301941266246000174956544 7566514805546537414540538813612032 -380532067588277506147504337058791424 1026248924369400442939969504280576 1389745842175124425484507688206336 -288048841629731073973586364205105152 3685291768034612465255262776721408 302804782663689209931425791344640 -651586026186238570963944649902784512 753639733864035512248368820649984 2242134279063431034497688393482240 -894629218933166523314549687001808896 9159376798628059012522518006202368 1645123737369609563940388675256320 -823331512541591274365197177512263680 4823731359678055308687856996712448 6614570005649146525787108679876608 -949673951396741645464535840390643712 7888502990366751285659563798298624 6293349831671103221109967185510400 -96965174256246848723603959549263872 5030219585203290007200495338258432 9849295147042343809529700203626496 -877478917995746732893468961244446720 9588294865771031058308256128565248 8792093022752646591495300450353152 -593408417354659258326008799726403584 3643786163552363194325275770880000 3931977319987170669244414290821120 -318401408440719471652020162222096384 6992740730307955995840758815916032 8190749987668959920825754078674944 -158999147792954457153692464752623616 2240228907196057291116221539811328 9200602625463468800168456343257088 -748459694609650551033161587523321856 5394465775271915058480471116611584 3526300723590097514629696241795072 -517159871243542748981447910217482240 4674160954159143675365399851958272 9062985012656686359241206196600832 -712530141397754677240614125331021824 7239920371704682452597494746447872 9235245785588543095030915119710208 -279163410680946289694166991327199232 6321992580949763648127675274362880 7947874530044136154643925353627648 -667763421839687642526547626734649344 2177274306053104234014316347523072 2101131168963965953055415970299904 -72910303427655542827158669222739968 1537209656619950739880956395520000 571299547807930770445640509947904 -249431234448604397091403409196580864 8057133346678658963983521414119424 7843777598779715824461673247277056 -977889506353879900450736340587249664 8807254227709148622713074558697472 1113006172585177256850424558780416 -644856286544614350380594154147151872 3462489269754703652107112769650688 9329465428700796236226800253927424 -956409275074642754197883431277297664 4975742160494344931640823800397824 5567854777181121592301133420822528 -420871728165713903243468636048850944 134467095486289298739112840265728 6461792850360659874708536072077312 -354994875158599197180521725080633344 4313706841367669595950332212412416 4156078132234651056130391298539520 -597705744409846110193269764406640640 960774040150780862323841023606784 6265640775794804782455025215471616 -776383868834261613330456730757234688 3592647717521845504397669872697344 8206638711525046425803858852708352 -351898014637446523742160686665433088 2488559898660749682954028084887552 7426282404958902548851306507796480 -114496911638172775879208984807211008 6064425649424175805373719674617856 5286029547161868456908519293059072 -255166446201020337892738021480988672 8436907500675561503220525095190528 7181094607090188735787467379048448 -640709890761810895101868592573972480 7868376136479072186641016860704768 8175824969145355093248313577701376 -368642505224887327701923858594398208 1372420091309637588374299724480512 7958988147872939756474610093129728 -830454480844835890356872387221258240 8407300246309236966170655654412288 9919385137657631701405217469759488 -650416372535248202014387546278068224 1946531189866912087670869563801600 2726148693265195835317072248700928 -120280780265961658537425884074213376 7078330270827570817801350182600704 5142330567251206432251529670950912 -734304496589991253950327578752450560 9259990662511765125372694409248768 6931493746361992209554734567129088 -200680165402655815634781422317731840 6131592051174145426476880323674112 1425564664658426797399909880299520 -426592191358922752261639272623243264 7773888342282132727864686144389120 5361284844793818754566784423034880 -135653957259391546634817029342756864 6104992817228368748971641135955968 6183167849193063914102214350602240 -744408581107374587660550341224562688 8128783239986728641142193672683520 8745868512406880059248114569052160 -587196731473981241235420151359209472 5361222914154093304542679162421248 8137442303052560367300355739877376 -23372436760655164338799287012950016 6800978075481028679184833396604928 5222831021288965727226502940983296 -332723151053549886142978543532900352 1562547195537702234671906927149056 8122856103804347566644135959986176 -54197875743063758604015759597240320 4355658082584610947343473272946688 874780722566359306426282579853312 -290506328936541412125193154443870208 6473397169719602554909692140716032 7062420883454235365852169384230912 -688287132206157824819074893910900736 6785700917964959921219904385056768 5815213503738219830125076588527616 -205793011846621554509039457106132992 9005047689204028055058053897125888 7867434575954366497165263805349888 -9349378924439105972358247616610304 7699857265728071614916963558490112 8087256559019893599364589956366336 -29983744275204116826140080957554688 8614184261952898112682115773497344 3697142561893207167494195370786816 -546216209706453169013548431987179520 8006742625603669195852656916037632 6290994115130073003385901300056064 -839191823061981477860948434000805888 3637336005080326353154129900077056 3790355557710064885635528727199744 -43291576580480275605833802779197440 9737806690175107788303293491445760 8889929610815412345378485439561728 -12711289338214817433832853254176768 9226728709759359161316979064700928 9808699336483548135053244598583296 -699008867812114229251598555998584832 3121361582552260014777352650227712 920666243213899225087208157347840 -739910920143695310268850486097477632 1219424100365557333376171071504384 7138084643118868429499219878871040 -668837034724444744990683710680465408 8590005525809905617004030297374720 9246758157721029878394169470222336 -285884870796081588750824450314731520 3832987205216714960956055403626496 4896564963650966679433947606155264 -789160923534260391131830503266582528 8807247894080327571988298827038720 883709543936267996882631187759104 -422249567998053228839329157959647232 3427963343980974308435735022141440 9980668851053953633338816074874880 -839494931151445257019086670540046336 5718918316228650803463391251791872 5041430498447291101039629053198336 -498830561820774096749905217742438400 5362152762181122348955923814285312 6738940219013047820345088000655360 -657031014094479465197674408838168576 1073013596073725068460686068154368 2655415185471955181918454131195904 -613981763753719625732176409891176448 7756783651414330863009765517164544 2750320655184328022140990569578496 -177779915498579081197385368335286272 6324830084942288050882806032629760 3459924910376086195185718013198336 -126193087439560909224043668127612928 9979164526901609660766648512020480 4253368274460618972346737766694912 -188935705373664901031723780322361344 5200405739421875742998302296113152 5726798635289889337999711331680256 -62427206818615591453419297398849536 6954810972472374769584004564779008 1018096949693805623250674278989824 -930214097757756540412434297632325632 3587878214437459034357912244846592 1619227498168768997791924725219328 -165013416536735728473246471051804672 8349737478433227056311836977659904 3084288826309073723260630271524864 -458335608003726033903102380061229056 232665665356621875975697526161408 2863999757050273801661250027913216 -539759381745658435062940872191508480 303512858477571143777751719215104 242267363531161404879408109453312 -497626865367796026129622321556619264 7201681046761981970544902870663168 7056413056685971039348625906860032 -448860341572401640527703356003581952 5792162832254572593170601906012160 7891372518923085040322424736841728 -634736922553848130154697348419158016 2322558953161420979422666409639936 8465761724943372826308459431460864 -74872464636837774600721839471722496 9418503067926724969527895035740160 8321234338648539510739017406611456 -113478606387976405413114222601043968 6243395724189563275144218386890752 1868747666706881349775351236001792 -318536990324723347632214227055280128 5191661865566006050576607515508736 8586742199694172756526787702292480 -32939841739252816014547692583649280 246188791467432859539710628855808 992751126029763133924673973125120 -170094216218446483454307119178711040 6156319170457553045353772236144640 36777988696452240773189447188480 -161585226857161097709688170492198912 7043831176433689372318939821899776 5000886798684206021189821041475584 -359708235224647434896891029676359680 6431483040240239868030471494434816 2590055418720990382673693253828608 -978404944070544272437536575715278848 130636271624463212697171318013952 3747720631351984730258777772654592 -861009813587316884455962214901219328 8102684585722922907285671936786432 5310347714666974618833211510226944 -336114228573410468776126682111148032 4651828644951932628698843668545536 4304012242654922454968734622679040 -26984333370622906757861858040872960 3463017502094583654539723767021568 1850201388186472001209681622073344 -851529260621826284517916888728076288 5707937154435149667349911887151104 9336728692042349386557799736016896 -179150530572501844289113472551092224 484449818126109180466270006411264 4026811882016742516142990736490496 -955225405158624521109078000380411904 6905199182691073255937772468830208 7985052066693625905999264037732352 -34441609864314942265694216574205952 207298438332167200179628772687872 8463071198664303549954253517750272 -382104837639298150262719547598438400 3167267843495331900417732503404544 2796916713875731065094913294073856 -583707428681925731478645318998818816 1547655051931881572981239946674176 6789231116426013016208753416994816 -37365223507773357706662596315185152 1632598364394229653999702878715904 9544560261149858379513015872520192 -523401989384407997095903416197054464 3662349579537473514902003145244672 9187323032638145213930988594266112 -99478499646597689469642563397877760 3940811108673116187184115098845184 8948760279971191069707810929377280 -804384076636744280704014241771814912 3728660255381999837115874872918016 3595098981067750184322570859315200 -970061343328885820157349712457891840 739444268240595143188658681544704 4593350285211449539118284754911232 -524387396300934908990638646771056640 1274982535431786333633911443161088 9817809969311192707753440870137856 -460984718009543219580168379585003520 846934634593496805262234319060992 2074032290177506847260022302310400 -806344268491461648087253006763950080 2300003680541420636319919944761344 2098448127676004662144010448535552 -760986997135394042236570440667496448 5793594448110799815480581107482624 3721106220216216907442529629110272 -655324463908007691262128642047606784 3876230442034472153923701063024640 9785360180482190542979218356043776 -254541975512019673622179367396311040 7530297623256428151218664783216640 5780676646751533722659611540979712 -551378650622636255247848666015203328 3316137688871586394750017005944832 9638507610002180541775712951992320 -660564594159566912016107549648486400 1237958239607101275300425847799808 2612689790125533452821797367971840 -916068102596196970482320880410034176 9574031461306658196040548664475648 9780018939779504693761287682785280 -517447256366465444296388908658196480 9614106638079912090594591994019840 5742472459457852302446346664673280 -785872189427182560071423651437608960 167259287951052726673411032481792 9579286314680031160826647990501376 -689174525937042664264817116734029824 3486361393818593742633333692563456 2723246962169183216660753445552128 -399622050663667589918495790308786176 5473259847806296015624553642328064 8489461981718203997047623283376128 -617023137063977520855077775453716480 5254367068017395090198007224729600 5362262051027641962624828332572672 -865915960445678983315854064011444224 1752839449534584750073509633327104 794044798967775199495347127713792 -221225971617733126863707907020554240 8558630900246588649056021025652736 4779307998004036949560508425437184 -682783678969804587692929533962354688 2404944485470889050443731462782976 3089133843817636206122681919078400 -134173744873930350267110582523002880 6808775071303570274274184009875456 3424477145044587253348234220797952 -444303027871915266671544956069347328 6661689832734183821783735702913024 4632921885833160835078856848179200 -361310610194636887977536178406555648 536254145715769927571326615158784 3527683694791139285232042542891008 -56859059838451831043681540496162816 4287461725159530668047587073851392 8140052671381134564809051197145088 -423946453123085790338196364112953344 1018503991796191220117440265453568 9112814127571151079356487870447616 -884235394710331455747908151493525504 8223180612741706766171077861179392 868084877140201572159935899238400 -211183333755299057889478687619809280 5323440866322091591626279010435072 4751188275671644199913291404804096 -177389813544971738883549212637659136 2002530647217431790977930858856448 3529646528695378512707295834537984 -207477457134331930304130239315312640 3391038851899635007843523434119168 3954303516587187633198780586655744 -85416071683986479287302265740722176 1778828969956653029325544376762368 7033536364718459684266826128162816 -547741208183478103877403124103643136 3993117320707614608324630050504704 9877692797257679123306457707053056 -216925222182038612243776613751193600 5321947213971938787135185294983168 4141940257629354080031281480990720 -560690363912849071672086147138322432 8516464665696974496317758406393856 7063819710328201325173528078581760 -114268779148888018511179018728898560 3435993680270995927323087283945472 452575632209418945979201496285184 -451035899131695588482019348982005760 9076738097425773195532222200807424 3872471824513488554079165461037056 -332739672220970512653181021117743104 5892628358250560260002223944105984 3130707397902258054818321169121280 -170624588665735236741517768891826176 6371206697116211042392286584373248 7709845149093824629050915717906432 -842990913233155498416868220676866048 4412729890967930284553835129077760 4789081930336804714496098725527552 -82278849138667980751975847003422720 5137933257262858764098221501317120 6276281208636995005142900557217792 -726945102165998731847593858684682240 2491119637484138885638030383644672 647705388043640014077831019495424 -92037713495047528831409543570259968 4711671162140105461065181044932608 4634654698114691974599590128123904 -939380220900031048392083871918718976 234165043526123046337633679572992 72664057723903894700873335439360 -836789953311876640784108738297462784 4797978811630214583890099115655168 9955464503514044879574477125451776 -328667085329708039692177359394308096 783938932094286318195234666708992 5449379322380475434424559151874048 -84776585293751018181757401212911616 3104962241200976919340840017461248 2543536154641341519433298593447936 -893358286602428417471589594578288640 5487568122223977240604815313076224 1167423656161008768546018231844864 -786911359101846630487309621114437632 6001649304454509893132357973573632 2167237179379931344912706902687744 -164731516844366438099412602163560448 4345769637541248115853030246580224 428357790321608648010736737452032 -351752015801380147629302422460956672 9032739865578180186514061267042304 1506248571105846832329276415541248 -87649832484184395905192859331985408 9882417445806808217082402426585088 7713693016775802804592631582031872 -543003026578786989292742509768736768 5942343695796967594798673733615616 4906323795572027471988411808612352 -611186192548237169104009179690958848 7516458384545291361278296076582912 3224444294146439067437943157161984 -457302398078052603320983016156692480 7019692557655088231910807913365504 2530950929520784675168843760402432 -369992530686520581700195775754010624 5591629785409887507452215106207744 5390984480876813010912268437684224 -308293276018264209415777865596665856 3021001813245418839213314450391040 9228396561199064173022819387441152 -607766221354466060498218298443300864 4991583331145514699274335190777856 4859849178819859945895293429481472 -710267939162023230297957742667628544 8248039052116182920108524848545792 4450932454175954240783332877008896 -338154372175132437319971334594232320 3273520082610692957623096681955328 1029594265908551371102353694392320 -675528160414984672085334177691467776 2940107750385567296878768686104576 9617423952382958357870354926403584 -516550912654274521704014128804265984 6358385294719998030298777512837120 9135558248335930250561744166453248 -36813170029892605417706971998453760 6916168834538057551952234871259136 3391008850574969303130428003057664 -29970134054427956844913485542326272 4603507212871938275516923674361856 6428045716137903386170707289309184 -457390723047127022253138409831792640 2556528457201012608617681178853376 3190428704934259108244769218756608 -274959028188739113357897752589107200 8874958985547747372417441928839168 9404791491220419986482854958727168 -816683431464616336189655849243770880 3704375883822113698158213020516352 9797474303767293858037850622132224 -231965563940988461854520979755106304 5674270325614630014924176102522880 2737899559055779358106072165384192 -965520423819889149890661507441623040 6840890810312360201610546487754752 4227890797568866861927859235061760 -591305787060344404593146380192579584 8203549295856193361567164317827072 3190444345372495941529665273856 -195586991369255814824219794795921408 9273364281058091971226895493627904 3537983868508961209120376559239168 -409300601200106896000049652032339968 2948035862143816123360610093105152 4914077547131116208289034362945536 -839683593368348105703994111542951936 3795622333997286902711167274188800 3583952640273529263760305475813376 -491649039403979769368939192953864192 5164648073846621071018676155580416 513073039831757545530907925938176 -563898259431281359503703300292739072 9995863242542003341433762381561856 8274495604924330657616554805428224 -651852716801000962829015258985660416 9793152053794232303911771983314944 3823934263156586315973969001316352 -350226638386438183741121934343012352 2328769675425047072585133093552128 4507476034876005486258486645882880 -477371540013699216841619511579770880 2239010924654226659572903103692800 8961935359510004879117431840178176 -220482302806060108471618118625525760 5746706024189624104828483210838016 4972859949262318089079670100197376 -243571450633916070700886169569198080 9211380015228138105297118743756800 2250689379948605149502935664689152 -330343965111578267702202554250166272 1864066492756055327734773936291840 6678792239503860036452970953441280 -8789043930193491810496732941254656 6626382485809079500451659965792256 3037220144498347101438287821144064 -624028312115136297219956731868610560 8058444998833762686707682965979136 6908529862809358141677986813837312 -254523134117488052614310722187296768 2095343874058624380226923311136768 3304245012372016254775013834489856 -266698954770595677162803813045764096 9528511683354712305667165810327552 321793652298639479123878730530816 -259064999358675435410606390012542976 8841752411837032133945061856509952 3440385181556884936456848229269504 -124922116308457218831922141639737344 7130991692049975126446646396715008 3096058688485493578953090138112000 -978076699915085934168234579583827968 2920608682327584642331166166220800 5484362178314411820534132407009280 -165037449999721164779083364984422400 4717225882600619843420382918868992 5501944438284377076077551595552768 -546690432607793310101820926861508608 2111341348021015737120774120538112 3254829669289829774128857229557760 -148181498091759647976967698647089152 1292974657446050692149577238183936 9253150112708835812720820279574528 -209309697791582116145610277599051776 9906850264161026804972971788075008 4442799856569216359426339654074368 -589346837669797231454949466401931264 3006527171679785407389478932185088 2044864969697617304962649703841792 -244808033610401597868690204199485440 6695801658195606903572572747595776 57478508192825115352194390949888 -639132197629563505554312156063727616 3767860147996680264377513535340544 3238691316407325579959093791031296 -608419850099397315207179672345378816 2468423464421147553756694513188864 3576455434759847795613936069378048 -942296198032001265633969386400251904 8416163389965246128321423348858880 9148496565760703533087207215595520 -544518346194334840831000680094236672 2861139441976692391838066357043200 7160073170201576784933184212041728 -105013453406312363245109141598896128 7819430802333856995863367648280576 2025170580123315913472164363239424 -478744021086480073024569114437353472 2379313083166575353190386671550464 5985613782465039849004381182623744 -295565685284412646660853873260888064 1936534266493651150894357486239744 9236599931402497253207082862116864 -467766651607621181341518762940039168 905625969084122544957751786733568 1261716612326438086590230452764672 -527569063420261955040894114913583104 9118670237850892183299922019221504 4911104784027638183406413428031488 -642081947966422306029248001179910144 9699428311500899942330028808732672 6896801568607738647816864169721856 -971378962105464004545675966596251648 3104677666471251753556066105819136 7170446102814308993352757457977344 -866523042605931120238699819483267072 5149619297297720224186761291497472 3361651090148957813697032092647424 -834606880392074421076256662604480512 268351135352474128301174156165120 4459051633764460776545260192923648 -126554633401737645974083773642309632 9830212282366503919599729153933312 1800165446465787649975169199374336 -297808238729902433374466929871290368 682081792439034219085753493749760 4791690112712430494825132775702528 -791321449137210110402436507778416640 8286340454994363788643011951329280 3247680433569863180704442142949376 -891292686117213210020833748989247488 5442071092388653095653018668367872 7330149165145004043015394496086016 -34917653529324450003386449755373568 1385547206280396452963597888258048 2406568919171897357624478680481792 -477603318619946641384649119053643776 4799277555431386916466731455086592 2792729431318538004286287000895488 -226513187487910403405332801778614272 4523383569433031301217319974338560 9510666571338220589036816176250880 -736880413568805294626452235505106944 949150926957164680601666039316480 5196960560406851043054926717517824 -866407021496863215477936187708014592 5959856596995706070315837736091648 6173130050141784570185784643026944 -756737043075713604278826547965591552 1298540041999729308209601551794176 2335788332501307959626316363333632 -125113212393559437206154846492688384 5949393474724079724834246801489920 3626981749530642338114375732166656 -347023355722151995553048604453109760 4136443376836313213478056889417728 3043881662792107426363331045228544 -138879940596792452326470356559724544 2107177218838755464155527922057216 9738138222509930291851484899311616 -853504244585999358069276972597379072 665154343072536831155664685367296 9409026861222119456500622783676416 -433818838319892602502303293361881088 941269783565451258828263985774592 6801619088987444653326947898621952 -488559690103324035932229366842392576 2746152608505060237150733742374912 2020078989969925616718192979214336 -614137084753666369028159573434826752 1385347575822612972773721287688192 2156791942125194812251927857856512 -146778915846188606914051317092581376 6996098705372220290837036708921344 3488607984226910846055778627878912 -941348653320612029603919989168930816 724678032124458399374780191997952 8446883450522012633661639917305856 -489839423359376767608402031654469632 736722207143338376424274587025408 9929736355296187527817180229926912 -920174306126465659133423763213778944 7834566778473290441373264721739776 1806178856258270027406014236590080 -251329204907556703014807789983760384 890701639804886954235891594297344 8036175172820345374787825108516864 -321214267724027552264973316308074496 1936651517711261478199583926386688 451654377490031833370754088435712 -278278161740849342798931907525476352 4828743384428358649493535286362112 9397424061542847056639747944349696 -95121733321160231638147131638808576 8161156946419436674844292410245120 168535595249364699119831721443328 -493099259187336919722346505532604416 8102716280202503890996918250110976 7772208739955608984631395989061632 -908339302267020620916193446468780032 7014050135945149451930864459972608 7836642302951930826962465594540032 -546314256782317538071394576676945920 4941300448306634385329486949253120 4828043891160679355527886100496384 -990905583898854821086229990362578944 9646490690887195987800188228993024 8619414207436185788920276438745088 -354055776054931229965642563839852544 5992280998950443907790797950418944 6799414398086366922602838193340416 -528110353518381995753447115630575616 9937057080674606162241966149992448 3183633055764755039776396227379200 -77878424020067430583181625545195520 9828728853514476090684066454568960 9760745051767375769609355327963136 -876602803523432908254687903359172608 5539747579467228494803833110659072 6195045723080837069717055519850496 -284126657407071757839229065124380672 4714825894758515109783034908377088 8949499730941867360951217095180288 -479315452842695524831120865489846272 1792149410832289994376693652914176 2024620531455687080836929326940160 -971639585315358133291242753240334336 5670482469739221402316168952283136 7015539313587618007741465391792128 -437337851696918878559350523418378240 3993991043744962414515220471873536 4229585819629888022908925573595136 -740653766524292880948162399133761536 8443254611889551442877710598144000 8010200286191440127244357169315840 -988327676400323288464469221751914496 9455375771587552803470682275971072 4714802385275851288812636138897408 -760896980528716541005440488394719232 7542781656987658719413089091977216 6542831708033430267639432254324736 -614892078829230798932902571319230464 7071795907926755638620690480889856 337856754824349094020639579176960 -147820910281807600565445593464307712 9804984773742637749458767915778048 5312569240576228828776626604998656 -936564849698179734633486922935173120 2249694523533370025532714926473216 704635797081107410755811125755904 -338284373697674972573606557255729152 3514753450248271929731451247919104 6342262260218415058686886732103680 -134444288477129339137107550221107200 1123279278483471886936583287341056 4996704351599040152886109116825600 -538201862797813145517837019271659520 195580915682112598107391149473792 8107844960570596718374766333919232 -340834667101891452269270677344747520 1559448701472198584866958741602304 942063001701812115360159658672128 -90979721745904841894744815331966976 8688198423668083549801801614098432 2203327602222181242365304717180928 -376233073430619519759809742949580800 710311881254361917910668042829824 5621855575338213250529973894119424 -298832532564492372566712053036744704 3362579389264413797734076544712704 240454494652710264810360310595584 -389894900907078331155305081958563840 1786588547084465224299107263184896 4858527303166630094674196254687232 -946573408413332133687866953708863488 3532046633153122454252991486623744 2819111039278826463622664017674240 -332118287449741521849846218096640000 1202883896960426056201950841536512 8580041245571365108193376721698816 -655960206955560619362630217588801536 7704285296965571682570646702784512 6699244505410141198392020307017728 -943317088196264719349514512965304320 7792080430943232929286510216216576 9753609430511975467532571325235200 -237590029003404788828340091862646784 618701449003569667085052644687872 6638653009102365806959370749083648 -110166304246455826884408436450131968 6613800152752105398106216107868160 4647988061158112988076574743986176 -456334264829441506630531751398604800 2018552915506678487582698150821888 7867449811452176958200070430261248 -400600540754046987094697397693972480 4732173801193216722339116326322176 2431833212501530577143981873823744 -275091983903239129514555676320333824 1765739441051043992529353480077312 9000836626991963043050163173064704 -666041909932388015445732846739652608 9797068552613924783237716689027072 8175646944755131109847932801646592 -547285182746860663095793946630029312 4840484441136368122018672834248704 7672463054474174137048697573212160 -154140878159006787335600049362042880 5966253106521895449931712684883968 1846179835735853196367782603653120 -923785155028639484374076080103882752 2265617224518948774742347277664256 9632578314046342841680330429038592 -674143790814177745809869097840672768 7002667729990284752177025234501632 9966031174998991724102066018189312 -720222695708800745476256792552931328 9501514183246676556417226143432704 4755331627773429612295705524699136 -607018205450670771881143571595657216 9973356479491083520233087531220992 4198572882730839404673987604643840 -97633070646865067611379145660956672 5146683229912070745644928497352704 6561362321222428108101113752846336 -588273614458051234904762146472591360 7565082715362743064176638883266560 3800842186411943487173183754207232 -300403583522510899570576373422489600 6497704295500938180803627984093184 9111752121308727827864745028878336 -850154426346520339213729156034461696 2386310712908831919830609199890432 3789377582401175549956182367010816 -607998265417801345514014792271003648 7317242377881807204893835172773888 2996395214873811456577722342440960 -523228293943152461506454738698240000 6553602745698817700062499858022400 6738245938848005479974800937975808 -898728082074054073363388161146748928 2072321007185253049211535050670080 3266967458666577973853493265432576 -600169390987489498886579676399009792 8036651713436674159838246249431040 3716222215182674446599257663209472 -613952104694084242161815392564019200 4524575090516594843673234308595712 5772211540527132612168468591017984 -215858265271548427679691344179101696 9335943523816803212919387610677248 657188878636404854658084628332544 -215885740740030315703639714710945792 8184376637622531070567947006115840 8598105507909625504648015755870208 -383181187719316609461680423166803968 9263453407220894957377754826276864 6916306076894810659644093224714240 -153178497787912622009917557671198720 8243373133581845741283115020582912 8444493693887056351211460510089216 -822782227084250833365854294502277120 6605696346799928412172376745181184 143868044125074162808259549855744 -263593589911431152641204999883325440 1280314289427099566408212206845952 7761381000171187500992840366817280 -981763788351796852522121848523063296 686513317444764457984687433842688 1252467013307007236922761482862592 -152457617519983838121139206424100864 1847725945832210916256905494003712 7578170983999448569267066610122752 -537076992173443034659782420867317760 8870984155866746279048068435279872 7314358120439547920964855806296064 -109932484205027465557415333665439744 2175389798805927735205774363721728 5249405183026654882719470094123008 -657186682292256237775238870503260160 4658099191733031492549971741245440 9005369309654489670481965270171648 -707449984265849170241680265896263680 5970192935244183045280764849553408 6241078485509214809336093035462656 -958167474663614751114049002733043712 4632567023595746674272071801896960 3919880435520343656695614855446528 -162510383882523994844737599235424256 3490150509962902428182590192091136 4913013078638712126638590491885568 -222696187389162188088668728288346112 1699554562185387527725225017868288 8211149671504372042694808270012416 -769148182946288754318047351861673984 2633030054701784999345488662626304 1045671741212456743146109959929856 -621378917332178541730939138696282112 2432912591064132409325041385209856 759689957594186854402546328403968 -983919237517257553953820479789727744 5446785821344394366928431945351168 1127541091472975029987550783602688 -120401937312940935126147117470449664 9355281859954046168063589247614976 1891917273405817480677566147723264 -341022205550532661274003988344209408 1683191181209397026775736594202624 8497397879319883803059444613382144 -78409424751927988772711333005099008 7119134193036777353907178097868800 3797094495447305893346837148991488 -373055357760776049872095819054710784 4370971183609708364833161840951296 3684265012984434765675355292303360 -737484417321176631418117117406347264 490489339373954634796247872962560 8885337478213607108208868907286528 -627704932684321381283316860241051648 7191261658499425445433197415366656 7223949282422273723630789029003264 -222352158006732863634777376645185536 1087254235555209800386345380610048 785026948458497316087335267336192 -349788445276663989982863060069515264 6871843600318734615336590608695296 1243817823736395609460630704095232 -995454448621740236969107457547698176 8883881123285929991154427001569280 1840904892922178297296629398503424 -890476739795321342013388523424448512 2368708177813663671854138612776960 2813731649195486308441456140877824 -905614409714926884118399421463396352 6081384421744472301554482899058688 9215701198326224120241683139919872 -951767069215747621425606493556703232 5166442462108360152410771679084544 856659679726576160702750236082176 -722874769871537772565217992670969856 1703643631352363704275874747514880 9151770324186535736426852624891904 -82330439040745877413661533857120256 9229606148483789461333666672148480 4686082993337803817466969014140928 -82394896323131210712549123799646208 6673479437400417920288519356416000 5722374805535454976804825239388160 -847527431974558849927669993621684224 4836525012719397859808733424517120 6852061460344430834539221540143104 -660811698084257841291336773355438080 7607150758045015313625464046616576 4142944725076627098038602722967552 -314141944970673949921779496291139584 3543034097895326606698795044438016 9545464309335286272750457538478080 -664064664471394603451750428841082880 787969717946335705941983723782144 3120435974397439339748598782885888 -931372739292203083098018407184859136 4769777508364620183088838721142784 9475984170382221544465783769268224 -737704955469218164534745151267930112 9575006939048837909392844153421824 9084754891372899055922166416539648 -922627390980742797056600625582702592 1886402306492936197858671607152640 1917309718485903215668445363306496 -58520641131822616612080720355000320 9165958406172441288814716304490496 2273582553868976974355870655709184 -874589355129362524602077360905256960 9877782091912643526983267179823104 5847667971430271006012369987960832 -607517360771735059398882352426909696 1755510532727951846801680998858752 4700612814290391184633933554778112 -523096408786638710147051626545807360 347327458335433518943926451437568 681736361653586076834639971876864 -874632256672147011027873205369962496 6656763484545947129973136282353664 2172330410485243328843086219444224 -461744828237770582985469875472826368 4374700832948473929221586949242880 7183107365837191870091963767193600 -140144594816113020860651111081574400 3439098096602182996837834141204480 794033912248784660801187141910528 -816818892197640576260522292457504768 9905047850563766071753729915224064 7703123511535093686791333990105088 -176447200820287290139783134128898048 8631966353483594857786884256432128 4328518615158606940751173047549952 -338946464610373118253182828144492544 7715256829256566320446050402304000 3517865388355508437140495541469184 -234204255957759504718176644707123200 6783401969559811734193632505233408 332040097239917807295957080997888 -928189944569539403496377411277160448 8450105225529210796652066852831232 6703491524945088969354857473376256 -799297133794633513659163912225947648 5041776375932605090013317173346304 7306188010493531666908798890541056 -692372090223906358502743618216787968 3053769134605042826564407339778048 6912625300941883296430633661759488 -292241622970800796593628242704859136 9554096105082839870983902188273664 5262490071458357571328283837988864 -317621782062872805673669517583056896 732092708049797763306177505001472 178330384493304827893525564620800 -50189770059446435138043846118604800 3775113897003157211090527763562496 8141311744517783118220561477533696 -137542445137922775736066017008287744 7591203892064932241205510377832448 9719175470435168030826685091807232 -42683511732871649139881707483168768 8262941259558734199382426257457152 9631537098678244514976340427931648 -955970658256958524738339360135446528 9894188215196811559807189161869312 9414993426972732715622815592611840 -248867483219321546809024502449569792 5533119450256176228180205829619712 4941551403618798397562444039847936 -317965717284525818489139256549703680 5638060987475771623316831967641600 1131186620870271346059963264925696 -240023624698266243597278993776115712 8229572283743454506063942247251968 9863515861401530714132083996884992 -840281864028450728097360439479894016 1304572099779343919793139271860224 8643569994359606800423046101336064 -580647428358501221428029813744992256 6319699115819459968464878875705344 664467567817279705487034254622720 -222534422806437461193524877117620224 8771954922985833346934923644108800 1174905659909407789697298394513408 -996263042439153013851401956517478400 2409828005415423578099487401312256 6703971906280138787657397171126272 -369490008040423666274415952130998272 3104369924552739700497725213638656 7792395931077474104082732597379072 -56065885805194728797335826636734464 1592150650626859678079310068973568 2036214323411768785309259412799488 -785242252627681587580568122995769344 3570542590076753683818741827108864 6788367351371194542522883563847680 -829174369725933962556868983032643584 2329890916709947401473783094050816 7770656558693612851021992379285504 -549314712329749207971867405792051200 3115811019080843240283575527931904 3370446741663902202859822046511104 -249402466065684875673461305976553472 2458189844950692340196073650782208 9429193499337548824756800137986048 -104762605368807313711294676381728768 5289048523370665678968009816801280 8332298449102541695966362373980160 -897322141393344968894296327119175680 3377896879061673137466857186394112 2135903093305578403775700522762240 -885248837294531378501576058898219008 8399215932593341016236121443532800 1587076796590405064826796982140928 -367218476885469254734753806111735808 6839832256376614334675906790948864 9897127992871691070105615199109120 -326281973368708520898250314218471424 5802004554528316848497390952382464 1151511043587450353336631762616320 -936354421949935381923235054183514112 1588051959666407396431349902475264 3524890629314120411185335509188608 -901458614937643940980369887684722688 3277176957636496098110036655472640 7802905605695885591984442536099840 -293710899765381668915886170342162432 6947077153744606903872830889263104 8548168212465174973110638339948544 -325467686944332661660058854533103616 4681544707732380756927504510353408 6685299242890064810634050598338560 -835441392991383658055723145957998592 1388339869551516425963598017200128 829621113599011485425689799163904 -135063332160931193342090541342392320 6831524380595694953275534065270784 272732115340329110587262483038208 -250043266840546271526198428898951168 8389949507722972273202429163470848 5371921863698473679162498049114112 -537027430211444366529747040579092480 8511496422502122368775929483755520 1463806873955684239916765930323968 -198132800885133005108896015962865664 9706038294680091842950744086937600 3438069827977161605510828602163200 -37526842099450250655298774169026560 1531543232629315577209855951241216 6419390022515638283046582333997056 -542855807358611322262411570529173504 2250340657946087793891567395143680 8593329614336813346055464991850496 -254723320654928828510896828952084480 4712926719985645979959139904782336 8657447233551442037625081508659200 -316424187980053570404096406429106176 7698669616043345987184114712707072 6220108938394688790938880831389696 -148318742777963585130032198343196672 1967821916836858157519592503640064 6391358587875251753558517231910912 -861562423734249245815764792910020608 7326438191421073147032512808091648 1505978241777238455484668530655232 -923597972507463570278969102418575360 9721331924991784646561547369316352 5337253970606776078148759743102976 -409728078315444585957257039195406336 8675463167504893556981393837260800 8119847189984066860732851903528960 -596468474258238906204630615001661440 663221516597789464641125771902976 4196403136084857354950974399053824 -65280147793896311059411438720253952 4856985916427288619804388094902272 6232666584583205149209724176039936 -573463645824890209876775920333750272 6016446427586017677188981986426880 3215191552809895007227018018291712 -425378213514772068920379525784666112 8446859108999849152805728904282112 9413101279729666360537431842750464 -709723224693519823988351508781465600 4933066984738184956019287248601088 4942193292054482360865127156154368 -144545905396350360763204688158916608 1912410866346595960098015246548992 5421580575748143161943045496111104 -346813441397646541910874086701006848 5651981919235124182430981354946560 9361592932410260723903056360505344 -433264945833357311977333100715704320 6536074954348558415043200303497216 208352744686680717714881832288256 -449009943585053878194979399385743360 8165052439428004426423833909526528 850625132089275834749463459528704 -719383442204346800605971736319492096 3365535780925845701542983644479488 7349817831655987591568831253839872 -185854705064882858959861940007993344 9868748332079235058636164698210304 1172980883345473809039550345904128 -772522545922356848574888921717014528 4195031667121304337149889045594112 4234427788465885547234856638873600 -390804171195062651153026299499380736 5447501233249429652495046407094272 6577599085545687072137872530210816 -915324015596629197561070410316906496 2922013290276303367654707526893568 2122383576130424571427702882435072 -15030600186927929308237210773880832 6638090342171690655433952250036224 2667964530047916322461606897254400 -507782283075388129785513385299804160 4073555962325489736349170844827648 5531861388739098345444508316991488 -325221319569963753323884518844661760 1870916378762201917036727694786560 173133972492054717761885346725888 -269887342579690809266402850492121088 636452421735830553162250016784384 6599647454012135015526524421931008 -743223746444048827861768443843837952 3279892046459355823332739426287616 3345831028110703070434855395262464 -298275748611625029554140862251794432 2568473577632935293942783549636608 3954987798932346759007386904559616 -300093241319540135291017216579862528 8974687846782444240071421040001024 3178661765501539452403019562352640 -360343159515940647175493719913660416 6509844450410706384958978254700544 1848119210756222137141687994023936 -519120513796373291869437143925391360 9162049370820978355198519062560768 6472613815921222202414429145923584 -893476122794890933591759194123403264 7281824170227520838882711497080832 4884092349274114102517718212149248 -244147503219364242921983191411589120 4272712601932805468058131042926592 6007300090741435693721944888180736 -928094063754651375916189520991617024 7230341223596229593752519076478976 7503085422959017101486412439486464 -340821172046884305418658339956457472 3762486250345422770067298991472640 1125293326731279171254940677963776 -303730566442793718410322829471907840 6822482088814878748411092430487552 7141144131188927244116862556962816 -626445291566992611854990368793690112 1686768968212097092429409610104832 4892770978302098896229981308846080 -981465417332402492235685607749189632 3097897627377752883534098996396032 4344325840964600826716043570315264 -357651617230957026716262707488620544 5017498574441217956241758195023872 9506754031457088120193653598584832 -109457118360049387267338412891308032 7502714279871690480279964874702848 3838329587968462482345324158386176 -585199146517484840076841387204542464 4085014249573700557803661153009664 7485050448125761150629267860619264 -854508674158331652741146031905832960 6710114807922672661879222783967232 1251459927020770739794065376673792 -474693336972388762292676282722287616 9207415106588737206481047743627264 4545899223591501456976687329705984 -464832197753802753792213968064872448 8544932925795197933093750289989632 5526486754297090797845501880303616 -199499053991827904866690606204715008 9567263845478086241743108560650240 6382086337436160416543013074894848 -686449251077152135497610304130383872 1313077146840476651447893790556160 3998221446240943344749480381513728 -820608152140950685674245282714353664 5430429205435026597786345128591360 1342473138082038242241476521099264 -388694740925309140411299863182966784 3128771475208564769219262013243392 1759028955726895917385316441260032 -266609466927958304863193815068966912 5546972200630093048068540257533952 3409017792335346839916578919677952 -955530647303782042141124113087856640 3940501500124443280009001368027136 2104179650646982735580275964641280 -75142721473020251006711350717054976 2144854431009044813502344169783296 22147571954360604701554517213184 -109657294467332055220093550099169280 1181983725483392482175515386445824 8288502787322696301951052903612416 -817639382823102012952125714403950592 2904934471371774916208069833654272 7750928624875832691974624084230144 -317029392796481119839167781879676928 2230320001342594732500371871105024 7668390800396698075149625448202240 -43142906949593463256778481713807360 4697569347659474623016921515163648 1865822051550009596276282102906880 -940220189949814091348302286305624064 9421325093876936674036718065680384 1517206838935181064542765289832448 -18422797800234334414489148394045440 5841932395876183661279670226124800 8557796069641458035058723147218944 -515295470648144471874723942630424576 3454650408157450554243956231634944 4565287349485404830296451535863808 -122216610940175808353924677657165824 3256156761098108143859651204612096 2331095361565494761677848697634816 -289755417426402813055608853884829696 3227858401909408652729365171273728 5430432349200353765649641182855168 -54738306454942260995642754877882368 4355720039247840215219617948237824 3292871053877249337153884103114752 -89363046924945898818511770994343936 1182729982962244436029658886045696 6801647381739144669053903452504064 -711936847349673363205959810746941440 328168276427821961321166753759232 5980240287019678949897864329822208 -396374757258505084255049800109522944 3325704943298091251959115515166720 1895558791661558753293572792909824 -206862337139678427142591577912770560 1579845746549970430701346056306688 1230402172044936977270492230582272 -75650380827160226971083133887184896 9034681062734742459268119499112448 1768303108132878053607447885512704 -109472784281239936335708271417491456 2852871490166240408408664395743232 4270254809759956587247907895246848 -36348145076509503061029167107670016 1778419655965795391805023590547456 5317758522245889218222946846244864 -201491733037014973066004212624654336 8868334930442682528592925669982208 7791565542895712240894169248169984 -710877576791066624455594277498519552 8330899484090060106616236171853824 5256786620217453122067140335108096 -913343197319133048122151361199472640 1810785063838360060924142578302976 2737040891936172155081492451557376 -792173708342868872333720483727933440 9757127927236791569671002645331968 57077388356123388555189813248000 -973726616249182915582600636069314560 2544221288944677246155897243172864 1795588296055850984416767496945664 -202115524221044464766984611325542400 8007860039983699132154861425000448 8313556101513626787260688871981056 -900736963154103154217141044531691520 4669624478324276254653938478874624 7930894283689968626648498334334976 -753968837083087328931045801105293312 6846712116079723329746976787922944 9163514622961032971865588951416832 -459757081789160387537976174367997952 2025306562211167795301268760559616 6447116002544036218924366869561344 -739344653465730275702384679987445760 6447205311012851839727601711054848 5023225349479889203550569071902720 -96505089874527267559863618063302656 9205571215608812077947529178644480 420055081545158640516414056693760 -396212762183982773970439845825216512 9286053999546480210138836318027776 4541161763385400645859695585656832 -49564760946379213479396589252378624 976295197570882111209379289104384 158867430367181474382448607363072 -711768402097290176610498481554980864 8574191283235546879130482302255104 6785052074121141986646676142555136 -369827860677166448087271673069305856 8129160603139649246540156308029440 5654001854411884797254094892826624 -135689634958567617201529409710850048 7696231340682071894015474294325248 3315345215235002958228728861163520 -600388991378427235392506874329825280 6634738223356265259429680862199808 2115481367464177420072528931454976 -706316872000547317506628079256076288 95670843246112761769610516103168 6403718772692670266778385337286656 -427661021473226008094173314710241280 786620556504365463663469307887616 8686848780189518380401986606465024 -229353280402936589404120521256206336 4319229133610265082680582860701696 4731801586574299192489237788229632 -165536760361987513942211420340879360 4520214451670786581904455129628672 3308923671889865260761761789771776 -885649409105540442417762996838203392 7931492751334543167590249061679104 9902547194810484505238056533491712 -400226386883439811593835953627594752 5509783484118317130653677691863040 1526282143772298506474628711448576 -933583454836787518592743698933481472 368497733462836374932198923436032 9467287264892888265558844873113600 -713854398208550687568652804535877632 8732143918440026800837430618357760 6599665761153602688035156366721024 -949600142505200847614254677636415488 7403079278591779960882605460553728 2821037447637442969142985616261120 -594046408243671139584745454379728896 4693141971933815922294289374117888 7406737512187647228125611328274432 -237694296840400283708066564971429888 6786289780682322292026609328193536 5871343588883026978492401821155328 -184197404768129410510356036007755776 412894460203342141911115474403328 6611091914931393036971324867608576 -403190029153271843010560174021672960 1255646956272022343524664102354944 7286787376847393152862134929981440 -856205474172742282486111834694746112 3586503153404514385570144916078592 1053863782653647077993298670911488 -449972233325511033508820783347007488 9389245534816849325461176162713600 9884554033548946753563351081549824 -124042077232186933398135947856445440 5239258762850349316330048614039552 4187381008918429217361410482241536 -310498545237596682783885018057932800 8175486240462096150540391869841408 462254055926455127812432541515776 -10336288242208406336995161888784384 2667669363346697455822233583747072 8530503303082829299144831784714240 -410683403074298164045882642166448128 6062015465711650836256800599179264 8056024504083391222716368538304512 -743446343357448488724602512826433536 2911534981657445417511580571009024 8813586054274746362658421315993600 -487703309387197539032791216652550144 7027335654088570328635474771443712 8808993620820616690249744494100480 -553290678935534508486304739404808192 6869282852928186595121486370963456 3900772449485835082537091953852416 -949553579665412150405462691506290688 7284793140158658646946425459441664 6144491312004679763085234693734400 -312491107576751378878059724308217856 8632086968039946660684845392330752 5246403459449984027374733162971136 -294707828547375279103887576580227072 2523699527576864028601963184652288 3056828622675102217642802321293312 -649179524871806493861078946365308928 6012095012984402565393475373629440 5200108921007296978122311116783616 -223303304209768153533677352094007296 2434297634654897836416797645996032 179853580706819531516509312516096 -586305899572675091516730439374995456 6702640775702601787295842015641600 2398158375211751766701483633934336 -501524593639304151868395145278783488 5441542178513429637819574163341312 1448864628979441378442394613055488 -717649844862509847706236514698526720 8783348312356650996377978484555776 706561204581592033121282193096704 -319868668030315238449110935582801920 907227889503985706588855173382144 4406707923204535776292859220590592 -759220166232479271316434811797635072 615557494041549589223024971743232 7423603488375722503238439028129792 -345511419686746351345507844619239424 3960979281886266822229314980806656 8414227086588533822560590974943232 -135724681918100423363209320864940032 5635062636395077802998962218598400 1151733706147915502764137906176000 -547621397726407232512416011371151360 9735132480082678035134843027718144 1049425271559668292195881886679040 -497165088738601480115555645685497856 6032300026158725118322918685671424 1935373613954995809087736548163584 -393647844131546405200025334392553472 8391522297246810179434198108995584 9512886933675537281149225626763264 -453768445060259082298330769709334528 1921686998945965152279051735400448 4199618299582001131993765444059136 -462244023739203869517031597550862336 9279352695420769846653846747611136 2124260748890648136356618603331584 -396267466983911767819635882020831232 2463398833773435009752230168363008 8750298465529947578906528937148416 -773315724095625171892655063729963008 8728743670738541920705493896003584 1616778004556063481564681327345664 -999170415857256198867153335892312064 3993287150943680969633636217257984 3024406489556421829488312636669952 -645457640972353275588099399250608128 1926792928145022075247593567289344 2892829300554455698650023935868928 -745113614353098304245281984417366016 4861521570984094879920923309244416 5858250180869554245518398635114496 -809324155431596325919021557077770240 1041486744357585931311347304235008 8485021028312918439816224040812544 -738340806477585348949562595477553152 8570730283884326782636444172156928 66945277340638579676965737857024 -411135199809765625073677424574595072 7114328250592918097707568015081472 4377761082384574819388042187374592 -248825741180220435273037007785295872 6675818589105476330257631693242368 8178176491912345385968329212035072 -110384286765446121362894408573255680 327615040949111963660291323985920 1195658915033217838536881730486272 -9189032852079085122950163230359552 6674795994096807803453483637538816 9880036219515062784131007760039936 -82791386033910126664931576463228928 3764846691847668137441867081973760 7488768920654649808029494550724608 -514042172822930229130404308885438464 3127571041494572164241226094084096 9179596809412301699972669749854208 -390326947631249106382009473486028800 8470945156469020905355956342226944 1266755780070353268920839034634240 -539609502465756500919756212653785088 5280783798208649319081960728952832 8314729803597143884692078876164096 -132545196704986954493334856300232704 6913638852890629453374125605126144 6749626100542101293903676480421888 -285189461981815335890720542464933888 9637859929730303583798004174290944 3323475620783964680891372895469568 -394852608687439032083804635611004928 6659609775240036989486482860277760 9802443062731267917934380986662912 -392500635516869192460736830348722176 3936437062570516232032360704507904 9512551775538792394386061421182976 -21899142276409297143377446297403392 8489235100808408053277550828322816 8325258658838076932827961412812800 -174535422929111525775978899997458432 4067499280641852642337499314651136 2190464836006528595647770400915456 -68939908133176908006854789116723200 749245845522247914835652636573696 7980772991914755936883015883423744 -803240370907989693964918571495587840 4069022203630747686846079743033344 9949697660261565745055001712001024 -301102417782228166460787833970884608 5820172554973196611408400413097984 1094054985712337425006283567661056 -441755185971011445700449154065498112 9343051845469609889199695941599232 6308572195139850703973200213049344 -101031986799804107413384396208603136 2353266800713449902451484186902528 5289747562229452768295585300086784 -23887410123844892526113466815086592 5377234449280917952428240260825088 529228880181867876821505004273664 -28129990513793787047463626561552384 1132868158896214479000350392057856 5868636901422097743943472617881600 -55741045159803429556960682303291392 9002081503878076546198539547443200 3203008707794940845406344076853248 -213511885492345935717397284075339776 2716417139423850517056406941597696 8459160067952028165675455399067648 -609775400401821422800327855199748096 9430730924085916994847234582380544 4884620314494199269018055135461376 -997812756034270297178638206038441984 1792287405397845294727589804376064 1932758878377135823225992731688960 -610010995041339206166183101534830592 2035758934454108445331765000667136 1785736069350335412225471839993856 -126926883853125111701546003471532032 7841689661797588751820788363952128 9328819529123557229467711301484544 -876047531631834435202976256672923648 9723756423174684796093768528822272 6038866536343814869452087080517632 -811063209063647527667271122672418816 5006223411122637546485236304445440 4788752272341169422980179260604416 -995191216267583433522966923734679552 8363539370571305267217017146966016 6309912101657512355959375889694720 -178727891892964973699721409960345600 6002367289100339781094342538559488 5021263599316892908983608496095232 -593543025136265000511497158371835904 8756801470140233272401095546634240 4780708376841986957711649693237248 -910046694974752784793286328270716928 6360176559135088902468690132336640 6860586446341711313606984264056832 -441305398465442321852867488732151808 9407808964615810863164328905801728 9086033387676572559700855005118464 -280693614111654856333579308270354432 8756104736902446525997368395956224 5311332808097802695768129654489088 -760158083142531133102816892412755968 5246408744674291513820318323965952 5893913730131669114903478606495744 -820449416735583232437986564878893056 8243593447475556550624428492324864 1602819982582008103596279088545792 -478168747686794555503132033568210944 575931891418674173740665437945856 4618712788878888942672558289846272 -453696049624263468285834374670188544 7554267079520455745052950967353344 4518313749509221390285532095840256 -158135314281685393767205684333510656 2852373538480472394425532342599680 5651881797773189045682065874354176 -742434250428100931214660382610161664 9962111579960352316885284539072512 8121422552248701675203000165990400 -750807331423192344894820012024397824 6165027785392153710251894072410112 8450894110148814743561760002801664 -750363948700035859904910558477942784 6352456451568850459676143549153280 8178518522574111753096715600658432 -560472863687382854218189983275024384 8849512819400143931251444905148416 6718016898817692792711923057557504 -622029557385058007249464382835392512 8606864529723585868187809735507968 1205320129163881578760109484408832 -403988110172906148010154249659875328 8556851374508665637070201103056896 1806541005436256882119966264918016 -76825565143892533612736353449017344 7684799829558304102244249898057728 4784974394366968525057253525422080 -309121938049141123126402342774112256 1948753661378893024033057563213824 5758375345831945987763056039428096 -985178385445708409425511797097496576 7966102074072842635184896760348672 6353822331403361720260505685196800 -482388135755014389676348511650578432 8167286829197224233760415130058752 9934850375847613217404045943111680 -271282951563635646493821857653850112 7418885718456442631342404273176576 709414254237478179964035279093760 -812179936187613982910397028868554752 641005711055998679490943254528000 8876645910151573466417377363099648 -346417282164392632753715310634205184 2478910473806047481299131971928064 4011135474346544720628142305181696 -228311475508614279280178201165299712 8184518687823609512972621294075904 4200378579836143858029113575997440 -505333238151095820002008693110472704 2763242788456149093534025591554048 4598186756958751915415067273723904 -959162382405548188118695562094575616 6207672465577400165083044403740672 4666810092369954694652333366706176 -327675518227539912163945979758772224 4937400058465805101842384914743296 368423081758275534372077358284800 -265182556012103039058193534119051264 933031010197404194309903443034112 7384983657962990078741873334157312 -779910770074890075942841623823515648 8877348648538153241132464611524608 9764473066259044794262674919653376 -57543278949716153974449965964984320 9698406924558139914258020214767616 596910460070242176710441802137600 -193571326568877324342885935556329472 5835793772494998513525019916632064 8511819964838150283283067473756160 -392508974078584628307801256912486400 2084961724910726820901457361895424 2548699046974404487951309315506176 -864470658688729339805527111618265088 4989733746630556018194589081927680 2026856046407704625382583976329216 -712466272074895553545227503394619392 1118311326983706329356672954269696 950120164715070442315016776450048 -58937755275504750126341105385472000 2220321051677778871845266518966272 1989463610070089892343895092625408 -877334199349147620144788198427459584 6052404523374242297215247930359808 4923689725162135680315577230950400 -142666431749430672420410689841004544 9818786174686882591504753489870848 9108137084429932602977255635812352 -40660063354889501138333082274758656 5922658636321056891365084847144960 3265299759179242115145855032885248 -314698494756927903867029299069452288 1386687666576959563860233460645888 4234266110942419697873435154710528 -398791844671175360056494126350204928 2121697407236427362243467485904896 3948105972849701060412708776574976 -732537316964566092510816595603357696 7548542636282274326407315806224384 758001585432363318755561916334080 -670696764955150658690822079107825664 4730964376622297933395552609763328 9857712021578898021572007849623552 -745058125762199945444464140996313088 6587824403403585915049298207178752 7980891888740901591444310076686336 -358030685597832388986879933084073984 1207206216002747010609482068656128 6798742810782540306226931258359808 -753465401070341710133693890292613120 957293121782088662408582093864960 3676335097560458617340950839558144 -171723585438461488201085518258110464 7693416111926812174837770853810176 1886457482827478568287465952509952 -783199697863275885389097154925035520 6029913806337757327735976689139712 3639946417902868072799445354283008 -96293039809388079890773286087294976 505878214233996615182599468351488 5523708422362611093144573094920192 -230474732481874510996062105281495040 247153135445490167469310304321536 3913594690026375496030801050468352 -484249905270765721933412851815284736 924877870345670358085029733597184 7767587760443837407072171818221568 -647611995814827407037776463422029824 1602910420890233372305990269009920 730299219292616819837226276880384 -502303469201595510625207797485142016 8682289568603668059342593341784064 6848154983919910133270464425885696 -426732616123674748307325530897645568 371933065006146955759403766120448 5822511605324679979109113831358464 -593099424196668515570221801545924608 716625859588010000450007271997440 8852712750451888235713011698892800 -809248853188967503342457855441633280 8193063645041356984320040449867776 2343473898018347893082216441315328 -377292914923510978619436634063503360 6676241196789898882858243185442816 3982427942357916804533070732460032 -444122795152301183279472448299335680 4547575236901046287059134793646080 8080805590031235249810608618471424 -128148168501370661322241241616744448 7809102543072110807134238553407488 5453224311812721508712937106178048 -493725979562996123325873911263920128 176760757205257325435272009089024 9493006514294167771920445552459776 -884409000130822085237796381564862464 1463996328461724425655551554224128 8122407361693470404782627280125952 -152069913394218253574922464869220352 6983027411486404934934740898676736 6475691933507950123360936228028416 -134492050230838878336221096003502080 970365870934926809067109455233024 1087150155154713932578707392692224 -78322506948251977486394607898984448 600389619267173784276223265865728 7304107404945945098542077137911808 -819275963611368053034072188550905856 6745327249540888635589822930485248 4130560214155096090411564902907904 -463385242084547761184834760803876864 5613458725673332859332965135548416 1747108124614142832864005982257152 -291231865303929162457609558179184640 8486259605302739915085858595667968 4220447808973151550047342810890240 -536925828564062431613559094693068800 2089924457203030565675079307362304 2056678146810946162628656554311680 -198083677361473369504099259570454528 8432514874206874756877690721009664 8071761304243180483630460418654208 -385021126378352962713642109545480192 3967824627167882048059598423719936 9415134431821710311584138593828864 -213128232946467827120638329633112064 4793065873751184032680571104657408 5783171550661961844444507406336000 -341568863458365403710035527750123520 646951868199506091539848522366976 408648794581846731122129367990272 -83686889679912340179401537287618560 1448114166965111144408802853388288 874300594537250368741018146177024 -823250973910128047470540383561187328 6081874857759016313314996083752960 4814173578145071850795963028340736 -983629352430630094674860712166162432 2981483206057713061416209972461568 1176465396835971078353270914154496 -578819457047966020043562613739618304 1026705598171251869312417401929728 498577843811476783092676520050688 -106668136583716350202343187518849024 6959323730012602272655838459985920 2930637542724929952951930267369472 -983558638202079528804484201005973504 2389726777894098902216616886403072 7110928561706310300014181680676864 -592891637797969510951270353037426688 8770594073621475311319783823114240 3827458194005665186798843681832960 -623432805030626454834225355000119296 3894110934244486898987135710265344 5666748764764933848795470314340352 -782473967349384409235873601884782592 5504474814428677717786868662140928 3910869369996365013777920462684160 -940979625583213219636196423453638656 4335785330826835746257018764132352 1612867701226673828861359480111104 -641153542006998813202911041098350592 6653985055914505446622716095365120 4859461753278422247888372023427072 -897644651381467350160615071367036928 5924780062291254116062261237776384 2597499346814606408840551711375360 -472441223666266120616221244624207872 8131026276714796776503650365210624 1802197448799744147395791068069888 -310869409993774152899171547281883136 7676254830899000673674545422401536 4803478137786973498561264690921472 -309438925186348501216180315583676416 8329428484607781746793017528811520 5276309644457968326611477739864064 -89394145050326210012205394411126784 2878725806732762528112295802830848 9828336887248505588053593974374400 -914381047089156013299184999568769024 4602747580420609982036375137943552 8834247773535236272177635007660032 -860966071673407747676585663513231360 4435871447459671519244357107449856 1177801413484330534871048216641536 -822296316236211757376302866998755328 4947204530863455062626486039085056 1920888042780604806331377356111872 -824137205072386050068572590217101312 5653209637133657120913742433878016 55410267602343453833624807276544 -998630763721268191922673400154161152 4620420829804654113116318307713024 3823023239644348375128630576021504 -166000930983948602491757228078399488 4624173323957004554497325633896448 565751893266361897812237660192768 -705070778233693089187480953409241088 9710463332500433549956265034121216 7577457893133468648298307903291392 -497928875604134136593343296858750976 4991463177102881689607630932148224 4164374596370215921864306696650752 -161463271753978745611748330136666112 209190811253472506032595314671616 6988038923519997908300052423507968 -457241205070028957226245008027287552 8267035392928391182596451455729664 387914862875686936164393654681600 -821293622156666980760205118236786688 6577119691254915902251124933001216 2314877033364980081979843065937920 -720050172191262764499711813182554112 5829650672801931077149817804161024 5703077688974308284741193557868544 -964899957325451726124093393415962624 8707084293591366941279971352510464 3430828813849371626748226236841984 -302849782680855326371963081632776192 326138871409951440037589314174976 9830355672667181055093631843565568 -623503710645673216619811200137428992 5106176631125128713322216332197888 4784327805545359128521079657594880 -760635141844856538409917839807873024 7894572678705482670712076478971904 2169791338231514638044494622097408 -903863748191978850337701102113259520 9492372397888062994560564687011840 5944551094524942840111081765994496 -7028790181070474005084577372045312 8260833220926651438809368842207232 695368745930800080826986812932096 -958546598085964889974878482192138240 6036864676525453577530672041426944 2419024881173055454565285582864384 -643865469182933734066893857738457088 8005095264205966979538518357835776 7688635795849306765313084890284032 -100061398212805044532504162541240320 6103046847564210510133869114556416 7658784845483686458071941541527552 -606316793176905412526172948393885696 826669325626543756776722428592128 3825958818888577202647108058873856 -34693491344380530461715462967263232 5507333259819684979196687907028992 3361874669080245756585887563513856 -490311426019333475955346485209464832 6542692861509699231065672226177024 5522775204892015425697291331174400 -137059833064339759801681857994555392 3277269307068850319533892974936064 4377050152896250716878171916992512 -243177789358907855991751197929242624 932909737076800612488061233659904 998817533912864525483458370207744 -155150472969849222396489304058626048 5336453222985339858152631757176832 3026259050622274359793203986563072 -849661381370701360243749018084048896 8092629268523923282966035099025408 6982165797047807239181687217717248 -211418434291130909780858322183782400 997158797654750831221428363198464 787903005641774839289954139373568 -770382717587574593724869647699804160 8508639762462367275125142187933696 4487152282932732443898382102036480 -852947044740048969211208150571548672 3923222533388806187930955882168320 2791380762674601188419659261542400 -594254113976695660721424958069145600 9078800280664466984916992328204288 8967263840758711738124929983315968 -543451049451229125397310825914433536 6649282306576236232802837599354880 5529358748135820982806664649375744 -918843016858557668669183912113602560 1774909631276369094059322431766528 301316008675332503681055118589952 -573878771133794585343991099628191744 5830365955725688886195182609891328 5637932877166873623915860506705920 -377652026407615965066709709782777856 3154835418604540635160927411372032 367821559336310599222527480823808 -739386695766949709411785225252372480 5038617576917233223490346785177600 4666452483916499203410051653959680 -751273254258246499718700852555284480 9982088126528367583751095820746752 8471690568094521549852598001991680 -170480733240453135800320325721260032 4176664292576997430690690973564928 6387890353786451978518302765875200 -780110502833690700131210945653374976 316874974786409308888285893885952 7865390354510846117070436122492928 -840287276463480246041172852151943168 5726222554997594175115877532303360 2586419282386518863383139322953728 -171190222919117070090175388860809216 2229506739864096783184160956088320 2182910282019207845249746762465280 -631613944659348043887656602284589056 1237014790929357444896351632490496 1792400206483060513308582610993152 -565091212289747036971146197384298496 9504163293503312894556040014594048 2709055050225993400929100383649792 -997477550267088070842231125675343872 1267642075272580534888241219764224 1263659399836128079906081521795072 -408279682665636279273823314022236160 3334068053721370590129823345016832 4532384208751736036944290120728576 -790458054979088373760189894529908736 1930583035990224202213806594588672 3942706280013456631467103370608640 -801781891078455851658752369084071936 5281291297962023135989864251523072 4773137630992690808799836592144384 -117188245976615002542899697578672128 9582858526367539821698894702575616 7461305039015763768526831611805696 -789948309259514851089797443848503296 5570958187997564579733250685009920 1738133972777208715846103200694272 -770047670696669773393200640105119744 6527851995211878861445626454867968 7815002663637958756112616231272448 -316633187397647219954591226782547968 150216176115873052749565238706176 2840804057366439595181175551819776 -379647176886040781943218107527987200 1058590549534680731254360928944128 9858809863891946572344671244124160 -94641825627684090283485610224123904 138847122162392781957997992607744 6158578994647418572883579644149760 -503533911777688537188075892314734592 3178676311754980676582245878726656 2837530216057496053857711806218240 -474522577012909936158649595914616832 2133100102130346848017535782092800 2920146494570772547700236235046912 -896915044419075383485348171682414592 3040077217505439018965615803105280 8966427800483475738376938230644736 -512074809580331563295583358454595584 5375429584215113158958626533015552 585409019150715111502630306709504 -905319450036009734920848921195446272 2843395386263422309702562113126400 535232648262196199320242985369600 -566306471703369154457751974884409344 2697255872916864936004038414041088 4468373107592294759269565395369984 -655734058856106079536295630153449472 5162517629391792922260112016408576 3293917124636050932700140105891840 -1255299865238217397168143182331904 2012085456856134175033210951434240 1096998527327655669124390289670144 -240135853394387572221964888550932480 3143467669413929778901478969180160 3306781178748308392454783722586112 -744079814173087001492858786323365888 2434016917510158215307159247257600 5255027240623456778914626761916416 -780209061038482185786495096047271936 1536346611489619249212742237683712 2380888646534158177032007627833344 -409770438674154948195878318131642368 5669968450516143843873470334107648 343475358490273259875624869167104 -800811776200022085778947614720393216 8085754646498738075603577161646080 6200517895482546652379021249085440 -600168859463441913836438201613418496 5875111117430240447997495381852160 5931715650882973189823966342021120 -562612708582210362288772444097347584 1889508454368180921066886927482880 1579339895457545235346101874196480 -42534860507229611622518987773968384 4522441298141078799844062137417728 1480980991215757463068425991487488 -424348416149320020358219075571154944 4846024174748401445604504664801280 5653730350749900403287895278878720 -824262685446487236357279785420849152 1736813368154318589778346066837504 9161756624908188973181579886067712 -393279300982483657641715733037580288 3941759925458277400865712052895744 6399747152793840861990100064534528 -979139472589483139816184709080154112 8397946780201910858792635436367872 7976248362215456854295724693651456 -191239160150018681009711681160347648 7956678774866719160962186806820864 7688597726299349926576282132283392 -646558495768850999367887199733284864 6868260787502494676562978946416640 5555710660280378353984152524554240 -208789602900390871027700638519656448 335497203669422341967411211665408 6343378546363232234101169314594816 -372779394662269124272566165886205952 7219526177248939120842089997271040 3958170049122563130776958393122816 -987679608536540628399298479218753536 6005730270059464125878317472546816 3034966259440431234423552951189504 -966543974814010291951905643442470912 8862911755751475560008267625136128 5034048365907296459782443025563648 -511736493665181832233156085993701376 234268999601954104926162319835136 4568489141062485706124617207250944 -742429467352711115637266342293274624 5246734697037308684277047455907840 9714858183311210223482949941067776 -412791859706849325321349989746606080 5294839385770109166366172997746688 3327333469419563288954009458573312 -111865483218267830480923134814846976 1648052015859412751043016897069056 4404639800833892902853768858566656 -407874991334035367701305843517489152 6130651158370933128197040014098432 2747731992672688594367873925775360 -873738804426288214710075718493011968 9789953123600617864992422658834432 5257616564751759550525959156269056 -761937722840139539144522771204145152 9354410915417055190180253747118080 1505241586173185521584167303774208 -172416809281570443668489724229582848 3558634303501176616015075863429120 662850384271901919186016595345408 -726661127453162195473479429714345984 1901800612804944989434229144158208 2195890563519852649138566157303808 -427041069172659125989456725336391680 6145373028093231993848956299771904 5973744549431287279899727703834624 -889848267976700862303252848228433920 7896940109348389879281719000956928 2915466958519455206769851432435712 -548589522999931856005818418280267776 2374848132137206188656361803350016 7742403964306164058719923889766400 -743973217363762396324643114089185280 1484754141176330205274634085990400 5996732570350725830807331402678272 -596600889253860324248143558722191360 3769525871791255598166737816649728 9691414001306634792983719309213696 -264754460272220055665584069387747328 5753021405587302539223815648444416 4132459433421933895293584510287872 -807623790270833462980375982460895232 3109015110500570117337675263377408 7736506559276244017470609767268352 -659961095550911884575726572763348992 196999061317115315346125721960448 9864745564150065213344538395934720 -944656867536951385294973476655857664 813451586662662744670169764724736 9494049623920128810533306826227712 -138926026968008304181844974348795904 5278512772633619473989952662929408 9837333464826864628358868933541888 -921066951731162692152208682723049472 5151508618494047205149421625933824 314106471853180919738872736251904 -494322674216460645346767293177135104 1185448234020895609860990596808704 5486154297740092299684252793962496 -140517832399804535083313581537624064 2682439870015158874030797486030848 878487408871701304821838050754560 -27820179064738956000899733997486080 4456014419483454849913026085126144 3133551794338482320119034957266944 -397528947414831127440117271948689408 8972034700808961412676932968906752 6107693023608735175529212065873920 -778060583449707806717750343374995456 9029005248733694352959871333171200 5814584615696818477843515782987776 -763870065503536822090473969926799360 2828882429550914778251574235889664 9107114762645883771316307918585856 -970644621442882160582865178228424704 6250031256956827155352984139857920 5888451345289657160384955379875840 -996345461174448431926407240655831040 7909081257407265626289053760487424 7142700684356820212085588980924416 -368532714232040897593352763008352256 7723245526898329993165365758132224 3196134292977532541851551221678080 -54706526064583136646308618492182528 3000372155333677716440694921363456 1868746229910322119188512191283200 -673005630786530007192382747858436096 7962754225809742490036063088672768 2002856439919054603442463403147264 -263511526798665097423522198020161536 2045140335601203477757030016483328 5996161436041272785586585652428800 -486994845641203164000321533365977088 9382721763887527270674363559444480 6249382597349695024571220848803840 -506988084954660869989075227026391040 4916149981495637407502086243876864 9952118092047501947399849436512256 -538536953238966875382368549386321920 5821889534552894085765569127120896 5911118588559571678583993730596864 -459729875612841538325446825047228416 3465288916061660030630508762234880 9503961890059916668141538086223872 -130900494191441879583587614591025152 9206192042977961256851336882814976 9229963317946405463768872890925056 -548948171975761388223341526452797440 52450329969687723907329178992640 558984942106867806628703539036160 -175711111474751810656426333881499648 7271863640115565973267868251324416 2388064853376690662069858904047616 -401255056950490974189473990019383296 1950011706029706107115361968062464 2192956566919727057763827393232896 -281473629392380985632104543273615360 4672661631245049571265783330242560 7638855287200885986901246991138816 -918797351595503695270293525829255168 9020556778018722634560381615341568 985814677770842542485358191312896 -664221627428808226663160821537832960 5069699343004532013505899309039616 3703561524788522175268036324360192 -388893095354114193612493903083077632 5788257243124958149675315420463104 5470036032693692576320236518637568 -55320215738710021666150479256616960 24579855980693458642412882624512 1101090924496642223256415659622400 -383572860464483330217467366881624064 5616858436082817655607523639558144 5461539515975768676551633678630912 -496641186094162539678590108566552576 92987448902834290474131700842496 3322654366254260577619773885513728 -995321245855397457989396538735984640 7527445623609255482092606273355776 6812659249363744335915254976348160 -774057648974228008875108444667904000 1504368940772254347939062575267840 1216281562281419400957314279145472 -780011316649263535316724362501947392 3337263407263643231589727385681920 1573111090126491731984180676919296 -676497472952527563546248822158000128 1108798937277981772737850871119872 6475268010299218594088107787681792 -328678480219243667490758662715080704 9649766724253913381974991949529088 7212692651923399288632135533985792 -270900195519424613273910183527972864 4228711969215462509519401425829888 6221467901210206437335382360064000 -478391101223167111646815802686963712 3580320716183561950219134681743360 5932779170720240133062807238213632 -346725041748108372955624554056646656 8339307103702306016596581230313472 275402757938656048466116950884352 -276121878494410914779551258158039040 280551592159698623972241762680832 1338983270297974806776658582831104 -314209921394090926017842039559815168 1820580418002005265852653723713536 7464236129738452518552372514914304 -856015527466101429130857024510230528 5066846383940781400834642525814784 3767700552020176225013019862630400 -130126844587826817201037085142679552 2920564655175214438794710287908864 8586493243045858063385435479998464 -627577111222792910822305263461072896 2126158558988629433135026055151616 8842964541182436872562589223092224 -25880643078076030667304174744502272 1293362322479579206568853146435584 4461779299408814033969998775451648 -832168842674182815637113330747834368 3429468395766829027867672019206144 9319592736528568449751942741098496 -772750324778988443992069300258078720 7136273748328978585458225386094592 3326879085976648183980649246359552 -785362090845087610277676155418968064 5435822438713586946704021341077504 6220212714890447938017183473336320 -467607904697027787260934018922708992 2149721056033381759280048058138624 1446031799193350617338418009473024 -362277618294982690715478847754600448 3638298599043862086932898416427008 3444493587955363448706899405438976 -363641593649747893968903620781932544 3409416660202253629217895371243520 878051120705865057852041791012864 -988411916814095915462665981587881984 5974412701274702752523805360390144 5892697281083359692596490616700928 -204669173750003821833084630997139456 6503969821125111676305605685936128 4520375114522267889832719955263488 -648011224100871693708827610451017728 2323865665438510037768051542196224 3229959669370043822284094715199488 -181535393796718460533026994914328576 1739217632653572857021305754484736 4546474367438309199870770683052032 -959626047578856924584189171519717376 6495874217036114058692621609467904 6396704306338038028057293793263616 -138469984201213653991249183355437056 7456898280709183841012578051424256 7931554910704920790620934663831552 -756894203549510568682178491887648768 4615869270424343654985995489640448 2181974557824663537276767820578816 -639230103929459228376460646609321984 2142919897565530518517664777764864 2065841364761874799077696485720064 -415844786622660844693285734015041536 1517486034796050924220182681354240 6286039378941388995094635188584448 -870282821381000140054145163694440448 9917142803987785172947271061340160 2066395548895723376302055648919552 -727699538497443931918551693911916544 1039488134314738904334218223943680 9613688439086329265956681118908416 -560547365274060499380966333716889600 7932601982321854557552417349566464 9490793623134107559894034973458432 -155146537165602881936670508984565760 7239576311698948155524299647614976 1225098324013476710316309869494272 -455339761780301438720753974906978304 6137582207842319166657509973819392 1963169201403951080178717458169856 -948173247234582743725000851021889536 6196608176991537611735913052766208 8151546852987792307111268941037568 -643854026603137864983565161486876672 3655345686683867813986416600285184 3515686584835755682734162371936256 -360694392651793648173884106805870592 5748638746258382702432467390824448 1247170278740873368181183768166400 -521897541414371146957759994581221376 7124642887681069907791310011498496 3469404168805669961045702434881536 -681759542166292726585105842964529152 4322170819356861404318067056443392 7877815360427375358754113747681280 -543797066593368264317287884411371520 7871269995796129769947698120622080 1075618553249127020838385992335360 -951193331337395088743074829330022400 5425447877358583634221021146382336 9530613485054935994164938895523840 -665494928447049137095332353330380800 6645680268643506058736928735363072 8645979152638708728816222433443840 -365549854084831850891216213111734272 2401722225374683530726540803309568 4479630167924769953107024229171200 -708561054053078567797073108560510976 3979181268617877271109746022154240 9299927599122544152842482772606976 -327751042216748017871712015911747584 5221072604163959468994274621652992 4271099483180189121433597447766016 -70318793988370375377360493196869632 1012219555721704438725343702941696 1954614630101753573419110818119680 -508771041061838311526542175480315904 6353068877576072030209939202899968 2731350768121361931976849718509568 -849583639900117536167693493035073536 7402595933071471103203308715638784 9227700607797784359373989985910784 -627619411776145300614221716044906496 9436917142113573107786506685120512 9407922534776094226979257225052160 -983734644210419445967589660547874816 2980410684602082587842759800913920 712058289529995356264075672682496 -363350269352699279716497572765892608 9849571017953616585922333542187008 5705392394751216606671661286031360 -768826432053744749605405962478288896 6782849375779091598107006558273536 5754228486148076592935580389605376 -376237225766365978698450945504706560 1773281541093323828035664698408960 4732631059833451210729975164436480 -728099999892567547495498420504756224 8827207057586723164800821988687872 928346175107927573346755807281152 -700121442600334151769106964801388544 7693174231958884877415723523112960 5897784401185678516058500582342656 -660869518712429104379938809040601088 9870167544589214900323482347765760 4151416340009295180156211594002432 -408194076181642666989820886105718784 4865571239658755119304940489539584 7386616040221234135437627132739584 -483378973511815474442752277140733952 1501307616752150407754089383329792 3381738047693875407761972823851008 -762200822698350212284782802018238464 4992056453167697428456696312758272 9883358399970255431225641206284288 -481200921669091674611755912047624192 5160532118044388380778467591979008 4580565002851921750121739569856512 -6100138549807858792971032334434304 695868567299141378532354836922368 6985332378854198520320302851817472 -274972356087446153806514128968220672 4451262001660776336523335571603456 2667587556735255773036696848826368 -997191042935651716350024844591497216 8445758658609274325165584047669248 9312161349919717163618770253512704 -510746251377797784289436081728782336 583936441680946939442550651486208 1843290081204898476179278538997760 -519002337771295355560127402029875200 7141939877572116477944201018867712 4609982079735306977040080710926336 -596874165302437547783449040392290304 3298327734422790392757098307911680 7785889068882198830687764351025152 -306007298716356362025961580945997824 9011734166142651717765870011809792 2121161108119469750761424819322880 -319968648580546546231021738848681984 4552260945471577372208575385960448 4443240439862666997207832780079104 -905317928314714325822956286353866752 242345221965481108098387554598912 8089417433028788442352738935767040 -351023491046876577052241887420743680 7032367112767337119098917454086144 663746881449375720995796868399104 -644791977403412170952752968717303808 4308782275322284380332628274839552 6800593133692449962839289796493312 -819668970991604506917783416409686016 5602496225680817480341613036175360 6761577215361380525862185926131712 -781819372942337499618630881610039296 7303152828608905811596460473450496 3617524384207093016538778966163456 -150239820143087189052457411793649664 936138806733596242034085421121536 2690783859727936889934950923501568 -126709543113808367271180425259646976 9349351147120325601949095464796160 2152969212668149832361780801699840 -487706218488642677641450458221379584 3400606126244817094311478183329792 2788244108467005309821600091078656 -923671223654884990721512512839221248 3068675796836599972338440685486080 9594484592984972075936410297696256 -380114501671414105973581394753880064 9424585527929086216134197382217728 3594582493509864054206483430113280 -456803215766784954638850078963400704 8945621378450412434527444185120768 6011834485029341880897230753234944 -244596018045356902954454038012231680 6649449768226867566002281033760768 9148730796575501956033766473334784 -894911203736157800782517180383100928 3877496937197797178126435004448768 3630796198898009098858004379336704 -999376671484505488290668235085316096 8346089037053668174988171915821056 8460320764984651317849072485793792 -455926392649160893571618348663308288 1576560670123332972508895437127680 8173277989775942863162110747082752 -459948322180370479987510743473848320 8610851596984613972055217322065920 8793448023577191509573180567060480 -984761723235467173486127851239374848 2143662292802782855271448716509184 130722252091267573213503554584576 -89403846152123495539191647494471680 3769065183795435978156480571375616 6726848203750778752529493756215296 -90077861168009834052447806985076736 5050803300181918333642854029590528 9690767274346508613497273326764032 -770080153442192321085551202340438016 4103800843888401418927109933367296 4856119529481094381506868321189888 -360733588111997698042064938238738432 4227416650113261668482507673174016 1502323696947725662568964494983168 -147475597949903353714570409138978816 1380487454849929358542823500021760 8315808073843213355778210369896448 -627658654926609444193197350732169216 3399616835987535221615165897179136 2072711834454572579893875671302144 -162556095616093854129861468169961472 6466913634374508526780487462551552 8292145019398098545452284372844544 -808635818789615968856769945881542656 4536290878570178389669020824502272 5491488004301087560091222499393536 -180705727608296479224936546562998272 4225997655572494347589679673507840 346648673078970117625220983422976 -68803711459703018387003186975080448 3620765458056651140533289767403520 4230036750746126319785934944468992 -465719395653244244199022577718394880 1471505317146540987892257502789632 1517464814068123222980991440125952 -211692465905146783968146958451736576 8015017990283560073026516990033920 1947021830036816826638694726238208 -620504661188572269038634572642779136 3319001626694675740570077280337920 1235412994834159560858718840029184 -416844908978304120569129682174214144 7163264441928836222139230429642752 7126256337966126994665098524491776 -349653986855985600269610389686190080 5310506116391424258895752607039488 7248511564998837915294974408130560 -908162302226358107195054313623781376 5460833609248572017556238922416128 2882193362338630412666011438284800 -859990223542446005418149947478376448 6523324026749129460834492781428736 8562923434485243038685858889728000 -852717634516368454098574278846840832 7951750274458063651278712194727936 8838802912619301822063994696892416 -309719608024747728512145719545561088 1304858499697676000085033764257792 9644789565376220626996706764914688 -398543534627608684400692363956060160 4977658340698225127349063776206848 9619930264886328277485868835405824 -574054495429937431546534779307425792 617431598210530317838617529024512 4405764474526791081197656550146048 -677273237291783658463522520479825920 7102275313447763821468750012481536 7353735325228989112451333288361984 -638122127120279775500059338130587648 8766087328939066618014056826535936 67762523781200924781551244279808 -687291257727040900005651931551760384 1855357859350991246782447669477376 4318542471918234158854084635918336 -43435876878924698538862785792573440 748981619643594746619776408223744 9493646918386911399972701888053248 -618989074591256490937720639158484992 57924054335382102996615625179136 1743405064110722641222671005646848 -22387041494030572824142365027467264 3388170034110549217999671883988992 3841378387370067923301885246701568 -663462839095097782021559003794898944 1161250050135588303283527283113984 8017737038044981538114258799165440 -556558532667971342714685267583696896 4773063392255466431828285523492864 93481839199325609386489686261760 -699533364080770731016978624065568768 8798228747965419526433995092918272 6495570156174929833815707293319168 -748507578429148186381300961585922048 1185935182372033300780862719131648 5866593487442787883777898028466176 -642960254470171809952960886322757632 493175016367143772136857139150848 6501563783640245239298772973912064 -797870786142912795753561456522559488 3350449600647897533419575404658688 5535251466593667384409665692499968 -676167281362405116790143651170746368 9042337563372602955079169985216512 3703888557840368407875714281373696 -287855528368189050836623947785568256 5775907077650301002519804836315136 506594249366556184541437844520960 -723716812401524942354865283221422080 4845399101402216732262270697996288 7219194253469656791998530072870912 -382895881596613174578340226383478784 4062637722872609221059010178842624 1897715602325904672773196834930688 -826651774001974327664337743186493440 568878225674672710187721355689984 8872901717611780548607069829201920 -204163072462453103311892399622455296 4814668111236692079528778152280064 2967137692525374311801589554216960 -942216432761349443321056019794100224 5832345830397667971723130715504640 113292701758931083483943631060992 -488731256543705068237031033958039552 685714011276499811618365630316544 6639119269360965555067095772823552 -856608102598974103495419873858682880 8404393784147183762192156078374912 6291666512950521704605396005552128 -501524337232370892641077352751693824 668329507425130247771798795976704 4286637730518610670012169965273088 -71784689657880665892311085195722752 8238758368030846171008241173004288 548704573843291063743517737091072 -121646079360443237602075491814080512 414898883605259738605194689118208 5758642644958453110356123924299776 -517761264471647387865323105352155136 2314828770997015437368932375199744 3305958379963644292425892029792256 -674673333160240510239556865385037824 583414779409566302484012717834240 5320744819983238373069733633196032 -779063160678543651837202190892531712 5923863971523924668330341121916928 9622263178055328422518133215985664 -690419858458183588099059722848567296 1913354886048870338357382350897152 8033349576323619614334244576296960 -112342592226184410693374141974708224 5041649263429427120622485414871040 1436158566676708299788086084108288 -919493627161225947969812005210030080 3764677156359100199239490333573120 7210861755232928453144299194810368 -979573107130454367927337840300523520 4467012711032629158970183347339264 8113479392281739756392151762599936 -91670489335817610739694803957579776 9358202653452741946184169380904960 4252754944292228361998711438442496 -215295194927240736280618484994408448 2525148041405702415316962175352832 2392894041235833926986442179870720 -111654487456005494207107910103728128 3594638348327337738661024302628864 2520282524697898118864562456363008 -403491665056899929849822398927339520 166234534617139369863956913979392 2261186935206829180598027385044992 -306925555170681028717248574847451136 3142560345429485676365156915871744 5872717867027054282532441330548736 -142427180257856052756212465547608064 7028232224991915153193734391201792 7720150826005168289561581455409152 -673620373993402036450121284252073984 4317863364286569323715146708680704 9660689206631414408024730380533760 -915693233340520106449811075573481472 5985081618814302270341838794653696 248937565724699772241497183748096 -198729155705982033153672960687472640 488872321594796930389481520889856 1285254568350277683023868147531776 -452269861458692241850506578327764992 7037553635855316756575334407602176 5917329705320071467799172821811200 -244828414971213578200117429758066688 7346920820864577058944107138777088 8439778134496016342294355526025216 -897703959840711725738256604954886144 4766261665815497649276824789712896 237189869878933335400684932038656 -797739754242753216077423248043671552 9547208864794610938804646153551872 1122161369857195287478592595820544 -223648033797225419997035753432416256 4005687397870083087313994898210816 4876963069356561785541961348808704 -758447712782777373444655436997328896 6166463272647219423745691065778176 8675025169317876366668925132341248 -368264340259697939359124746473046016 9646558196842113707296848248569856 7652561322324527723319766221324288 -404967307833527948714311472834936832 8505522981174074911452675207856128 1817418795992307895964303810887680 -770779895243606782975001204516454400 9728515774882616823408318178394112 5102496225093781870979943902478336 -141517501137067234825922405531123712 5834783880080702609721030076268544 9879918119391689150208380575416320 -21469881817763981734450533962350592 918388266887349769380255164792832 5059932389050987014014045052207104 -147459907493580801527427400315437056 6315302528808010560013184926744576 4799312930968296881280908951289856 -572277617462722698953076095498321920 5907911487182895329275488354959360 8852768913830710983939855055060992 -287034384923023723113579986101993472 5985474928232281878054369746747392 1010936931660836251236337409064960 -164855713193924942877617202898403328 9986420621522429959112273038409728 791063054164609288269904323018752 -418373641908116876362209483282186240 1687893393255666444968613023580160 6559044519226574011201313858125824 -312190653417126647769066695980744704 9465940344659274479499831008034816 5398853432786668010683265007484928 -781424460313264526162588468449902592 9342803627216246171590956148588544 90602475536914599097276286631936 -755095089567592035701695080743043072 6158994613191179860749869008289792 6452420906689036119842862753906688 -218874102572901959387934213959319552 480103625784368166967326837571584 1865712219306662445465687736451072 -358993065663990493133050057769091072 7614708311554321301495209208578048 5613927632398598664930103836803072 -635728101523268436956528311342727168 9828566836749544872540147858538496 3818116400558661265965619387301888 -63376830225287869938232502750543872 3070048443185944030939966265622528 8794105730900855615069993666871296 -513968116879546668457070151050723328 4176492290201833869328448768442368 275083908279527245305767627063296 -620347569265351835594668255603589120 3362220970294335645187454758027264 5604920703945040977075730259116032 -89541407050619014854416166551552000 8900871818816460796974521487720448 2685953756946183780070541674676224 -634685043124746145006546205510991872 8750465930232992782863316262322176 2665638054913724411797604147396608 -308261161010368755742707219058130944 5908957177258675598816961926004736 109823202744618261955564846186496 -760185490060436600847844078319042560 734293286455745696535858607292416 9619136429627267996372675512500224 -800931473641459167092452813646594048 1391536417345844619646959240609792 5922463526669128410079150777303040 -893313571051316857438977659615838208 8734849145977319172204904222556160 7487616199806968874849000906293248 -991798038887187522144508634061602816 7658501139578402116393800766062592 6661800937612069602378857584787456 -823556117144625987220696016265150464 2941688430158825095666260363968512 2008520162187616822505815633035264 -386662082789208066946468615488012288 8937192270990446581449019176779776 1839673417188032204781054278500352 -670320351432922546454631236451172352 5402826064305069239068867654844416 7728752112367958879260471426285568 -700526141602085567592881294697037824 5942637230703504368921037724712960 1066457722354096540322737072111616 -81432403081079980747588382763253760 629152154115098207451091075858432 2387369404983095434406649466454016 -758389535761945289372397482480238592 6323989310548595865673032706031616 5406543020206702639807661613252608 -551198219006635028817547551936872448 8220289843538768369240545593131008 63826678572766073744042999414784 -712584935913512682030554905334251520 2969818442006186188685195960385536 4052635776738222570150279497383936 -44037984272354605992268173433372672 7494697433721571316298653861150720 4016145310091486349957567600394240 -683380928912316852374778556501196800 3974822391996243256275006086184960 5364856792413945873803348648394752 -826113785133382018647222270086348800 3671938019355175840030062295384064 6413734730840909622923298793848832 -503018394470417145684617294801534976 6925676545380732809227609917358080 5911090174535621120712039928430592 -815790209405619080528556172184125440 6634238950041363986024157899915264 8614412149825650510587588872503296 -697830666272863173472917449944858624 4245681731056536814600306529665024 4442939728526371589645347032399872 -589888751607541619574820029465624576 7746653020894104388160811960369152 815662341020353540005377616117760 -304249106797534980041517311138463744 400955401779819500625993857499136 7153156564181844556330770599247872 -82173626679587061266823731090554880 9814932232786852996176541470687232 5542883561296719071508576625229824 -348967906960942312006512245192261632 8388035189492638715070549902491648 8786376833580641303526401193803776 -302628860845013199439635205089918976 6054869097479977844795137337589760 5767349892165751494990662014599168 -686893860314305056681724649960112128 9777121815424868247524807513473024 8874575855133922912300712782200832 -406478209656241407054185259413274624 4595956656212321063218504351612928 654640717224589240728474433355776 -28410217278740932590620310616670208 5037974371353041090653883094532096 5465823972675908110762958395539456 -784467835953402044382172855025008640 8226788726496686399963541899575296 3004221862018114888307085190103040 -844168752394534925965739307210637312 9924417991691403206385094635814912 2968782086685408806128397905297408 -881404301921942933779377314332672000 7043207106998051854040781035667456 687973087914174624840973922861056 -985701498474226734792939013362679808 1709149856057648493625054223925248 1673802835415608539983145598976000 -306549274144398788532521203256000512 8697118243419626980541284036378624 896633935282710324148559868329984 -500859932077772781070917899441405952 1147488126461943138988492888997888 4680470090915937832691453462052864 -430654464958666092524172146173280256 2270324308822188855504268181897216 4894866811638471873559019795775488 -115406454893135848132484139904401408 1852154732330925606175089568514048 9281375723764066977374966988668928 -752430385721300133542225354522886144 2762762175338032078546057054650368 3131666313860878101790750089936896 -221135196990545414020788983280173056 6241871378217961658327105041072128 1603883132497692508351299789520896 -738781052672442684579712812965691392 105624996683491300475039517769728 8147426588244094585393690445873152 -378414894996357165188195114217897984 5558060624978557432820450107326464 8843218377796745703884723507429376 -281993746058696648622957296193896448 6066775115219494580974571254448128 1303838601754469082651983316254720 -427155469954708009316229240724652032 3873974701107833932082779439235072 8378170699183592602759556889575424 -333506969947512342115186658745778176 2008662672902412905220242191417344 9685164647625758602045546374889472 -422934255763063296587262943884738560 2109057265192097490258121732390912 6457853796818267301416978746441728 -881788309785414030459297130981883904 9915259788792576231995783417692160 7450969503574883096950745467977728 -539441571872439529634128583307821056 7019365784014010477319904926105600 7203499343659869903196760177639424 -55949292076901908860118088135213056 3172215908261942437715249125654528 8864569306914771423208794073595904 -169152804092622758173406096120610816 7776066849606174110650866541264896 8595555019353932981558949286248448 -426580486852178342778868268674318336 2866391523110518478954372691656704 8988092906502409027291772035792896 -122539070317770787514684331748491264 3742228748744779284960008028028928 7450549137098814406496249161187328 -229003272401076259647136118983360512 9785774531048025399988759266590720 6177225388524935028453100805423104 -900518024167828014979192420455940096 7854263246542139483872957831315456 6123012401559032367959937715798016 -240947292367875962153400047811690496 1520537394728799807998380585517056 9211916632063685239901990959448064 -377322281230919024032892020540309504 2535762329059998952992601941213184 6051207259605065192918330841759744 -680441573287200571192046063978545152 1477392702833701104229094862618624 1665226153038163779914285501644800 -325270382983329078601302976235569152 2145315212649413406095877381029888 9294271001080748128319013956616192 -457163529999886145882537586287706112 5676039101323865313846268268642304 8503138327130944116204198063767552 -549347080214438711479395708458500096 5793423151846269425936183863541760 7545737756954004341490453753888768 -210666762450086949957233644685754368 9739539657461419069275811235233792 9399260166679342358564791193174016 -576042969538974603815871861663727616 217832422188426815180679545880576 8429819121011317886262449618812928 -529788428684033967041398175996837888 1538339916389481416370241841135616 1721436403842490347429987233038336 -726274637421359051865812969210249216 173372611997694886283778283536384 1861854716017354641857226853056512 -507448967232323748172867703897325568 6613865009187945495199127772856320 5231120642131413045552619733385216 -535292657271074422274134310127665152 8654024696798837798024778279288832 145215228426070048949309695590400 -802852549771255620793818341636571136 9044475425197494511010050268463104 7635387478289075060002434953773056 -938720463869805282494561023571263488 3969114929613782034175199836897280 8787678213087041770762613429370880 -37009328752446265889834268295692288 992054240839608387444249339101184 8815789144061256576493459416809472 -330808774143333290928734353978556416 6666478686863922403497439387451392 6615430445754367051497066024927232 -239802051727660107106054073294520320 2429268500067595669622536181645312 4698663152807466041863396569120768 -361354015035938134473370402771959808 1869481126342614100451565762510848 7033274869637794698309884130099200 -43752521888704689501420533860794368 9011535710018247137001346657419264 3346610257204303042322708803092480 -568397657732947999380325170434539520 8526231644225810941608881027022848 5878205495948199564859542618505216 -164220560865905671275866078998167552 5372897307708123216747255019077632 4147352837296655206386253143474176 -587946772557848182361687185170628608 6219367645369141938456465583898624 3838961225278319035819725521158144 -765216053025060840112992179229556736 883459170410073175910741146861568 294161457050942262916048318627840 -102052053152988145549167928945934336 2194955821712975943575104860979200 3201024060615364640873177575063552 -939016825659301158026831557593923584 440660715653323860000913097752576 6596621609934930529642223838953472 -146774304372046309116794548911079424 7655160073248185755710871836819456 7501030413097669227705924784750592 -399476997094596326474239108557307904 4865294880606062268349704143110144 2340108829407436014399258976321536 -515317609742064430717729241961594880 3603405624207471927034544973152256 749571036519223297973945360187392 -608366514739568922014923706150682624 1763561561611137795426483376750592 2027202557881981829784646323273728 -833773940269264259543843725971030016 6440979525122459938405129822142464 5049442487602504344552596618346496 -418753901213826533639123115842732032 5244977498739647118224535469424640 5294410536497213325149865051684864 -492180418303625520298207748812701696 1857271017061797122615399053000704 3374995026693407670822530921267200 -74155479992786120020382494392057856 7997234991539276958585660121284608 4816958899220213396691966245208064 -391435457039543682061142134022471680 6640074085190094361388374256779264 222343825815205993303928505106432 -756982882456174247638183987524927488 1155272944616476376280358780403712 3168956270912563186874179907485696 -172509456342439548292595099413512192 1586744467552812558252571627618304 9092586490604871193907800488017920 -200818226694983987276195431163363328 5294621222492620287879180305039360 7873588401100830777265677613924352 -352943550294157666913301507774349312 9269257308403761412879724836814848 6284786994093078424099891353485312 -46062338202158204643498269842866176 9560337322917378908476002789228544 5713949874983261655003672008982528 -420135109751202288989311735628300288 3189713196332261844028663355408384 9669339120783124785086731688869888 -460665207448566925754837617629724672 9856630928338503623581249134657536 5372942463095703298867871306743808 -69136491333772237550669419079794688 5765137004058108612486109146906624 881257740045948497651879636893696 -14906390647203699058569475033923584 4166858684235112386328434942410752 3883222322986290299511994572603392 -310434296976820566957660747539152896 1336281710004159334694562337652736 8765054585606358095702796986744832 -556565739486338813258479295971459072 2607202531125968691365883213250560 4171919425762272288152721473667072 -815132244608595749003977415978909696 8520165991603923739969033332588544 9119009313484642276245087639830528 -547145219110380319433570600819359744 7097298096262252327227419462205440 7020544972424784799950609695375360 -903000736646589505675777800730050560 5692611393705449685517378384822272 1330162667847195167128851752943616 -120724933124726455235963216700899328 5156673250080193320585271460233216 660890806248002248211539754483712 -521011728295331487071334058225041408 8762645634535031341735028826570752 6906352149135671450008615714291712 -292482104201575166686075792060841984 8888390677148812394238355850657792 8773463067938221699961105827233792 -393081807480183427948996045878329344 4731354807790544863393993348612096 7716180661373363837257348871618560 -265848935896504921266735643877179392 2917601188437597790892575743279104 2102750130151568252163273791635456 -683564984100024556386153508515086336 5864366593426116578787336346664960 3784814556120104554732196139630592 -466462877218432398427787902547132416 5501521862884270021348698357760000 7550382534591111574533522937872384 -629333383627544782099840422905905152 2172420655399544928484190748409856 5320024607942903534245050037829632 -618758251216966613359141408500350976 9283825885098262714263985463492608 8586320700326280547408471165763584 -757782706478487460538426415070052352 8492776968877370616975356499853312 7895654395173401784840623335931904 -51500875322666330791652841228337152 9534629371598226851247598776352768 5113436960961542588051167215878144 -831757879665987407191364443209465856 3616831918469216497311641034031104 6910655918492021485889697362214912 -68028976118060221386177640516288512 7243162813281539974551827776536576 8692487586858974429379047953793024 -493658186246052532067298371474292736 8842721842988859402999198107303936 4069253153989916836874851096461312 -743367403582816055697714604394151936 5123456960931452716201928833368064 818223832910677394964020547551232 -84819396045638882127242329759678464 4700634633670553597363525332762624 9086942668883314635792515034251264 -269981688178181820953477322593271808 1109207694058160223644692212875264 345700077315435511668239683813376 -636950140052012921777359871673368576 2023525515189375886574356285882368 4661159663794958543590576449650688 -612963475673440796866366231887740928 7920113220576994392489394641567744 3620088906299517549288209594187776 -561279090807168787610072979389546496 1048176857859570044179158073868288 48872962039150350147439644639232 -255507355005323791422361179535704064 5494379186471365086741304667275264 8356367899451427295811382615736320 -282625961219999550657671818119217152 5384355066821571531391132657254400 8778219177579666540822809001590784 -748788166496899016573308166278742016 5824277386168545698251777356333056 4588804285884266608359815669350400 -285103306498920572670267835973369856 7708085143219889699003270111952896 9519649440807460618416294113312768 -496565272897139038598345631010390016 8838028144419537187573217917665280 518373764016568810629372965814272 -921614890133398962046114901327347712 5350576887526247684558420782874624 8863489252921652435989708077531136 -294445460184666945591563798970368000 4660083599420516448325219513270272 4658785644613088049089498167902208 -544032479201480495746151183892348928 6163546369017827570475766216916992 4654718488470822681390963878789120 -466878646762081884902929292622561280 7113807174764118922995470230880256 2277450997528481136417817449463808 -839821787926753939564598354782453760 9156725593010607917878094044594176 1771353674415269652195451126939648 -40705360880316279060851147459788800 8213107286201150033824525477478400 4658257582696042056861174449831936 -27835969041593285615934251674370048 2327443854647108139777303007723520 2747830572932075299273831400603648 -529058820181378420030677749654880256 6022881316827714458018535016759296 8917362221703493877258533442945024 -328427768817696061567965497198116864 3840481584683657631440453698060288 1951208371146647923461126216482816 -64105095507914442628912473253609472 1089563355255487641784048416718848 368871280472325231149490227904512 -776779227571824049776018332365881344 1685007330543478628712873923182592 5601824448035479624502562581905408 -509180347092784945810825289203187712 789691692659456604293708380110848 8022588472065473527381142997565440 -622615909301728142406293676571492352 6134492020045984951120664490672128 101138689840091126192127975882752 -758367127536121664378770011902181376 4571440749454881991637719826038784 3637995491494429217007999198953472 -287456800010781982651453073575116800 9086174374055088180759854334345216 8495851982536126981497784614518784 -426229065250096306686080245030715392 9584177368766253394989603379740672 7469506229371074443663864550653952 -222229823516021101749165330431737856 9588884747816991034167025247191040 5600601258495838916187441349001216 -557555840692817877085828173443104768 2382659133868773900388712017035264 2600717433055450385734052966563840 -475530322384939623582600907322294272 2876221528229974178521250424422400 2757481749249512672111428368334848 -460388382203811005715760438535258112 3994593743552718390465210576011264 2273401637415171113727607359668224 -368950561861101294940861190337724416 5128527192218400258148693771812864 5824595781418782909263602299961344 -355789572598091368636374685065412608 4871579603719021259048119095525376 1051736971709767238019642206191616 -327653834132004312853718785966735360 1228212880959677993883421709959168 9782429608581037596065722785595392 -919974797409056358801313153129906176 1722557181561260318173045679194112 8985398760526243956315776499056640 -225114917369171539951541312531988480 3779468481549589552949410117189632 613353742638372140439693072269312 -221824973003206593865188904185888768 2526232393578849375874712776736768 5232497867594430842321133209911296 -756678907615254394853654884616503296 8524697530613187196524924508307456 7265923600235865995780436539736064 -794927306712516628197153970273124352 8712723141702377794557813412855808 7914924500774628415003482499579904 -882470040903395572853236462834941952 9369917211917541147788148872314880 6712270711373434517865767653867520 -96591464039057759719896624157163520 9362950274192533047690877741301760 9879501309648284451493721009029120 -205406854282219258891560130600501248 7771804912292007707619061512798208 6881841977354819582353334838755328 -645019683569455756084710260288258048 2051074855421117783659865354272768 398838623992552964419060662009856 -57751455936234346588794874104905728 6561859120097695950622321639686144 8283273178028460123738045459464192 -305178174016944510744325844000309248 2598368171415492913801265667899392 6608871004540636608789446507102208 -296770705942302637613135263386566656 3662456538187701916308543270551552 2101881634030709193155223165599744 -833623769777398420005254372563877888 6676318809627301793561234276089856 7385577766067303171633441744617472 -765549814976614537141204459404132352 8475160544488816036724986257342464 4463166031497880523519493794693120 -654118317796916363624570363215609856 8935835113444856602688148926889984 7586885923405630978460941719437312 -7335174194798314934761420834734080 3233456570788736621080607081889792 88733730318112523790936312905728 -325765114991543839322485447825817600 7314572619525971176850429665345536 1341767645770390202714641198481408 -19547203605933968721907880533426176 4419403490232737132742059749277696 2022966309898601076309718296690688 -225450965962549793133894179592601600 7768834967526242122482912585580544 2022843675155521802817475516039168 -177847866311796387294876368067624960 2256592925213424301790675777617920 9121124178543578649263679008145408 -275431457942068544300968685755957248 882446911014542733895444883046400 819540076389107456580784041754624 -818357248018647584377657776442179584 4336532093313373583133474910371840 3502201373270120675879227184119808 -528322521509297726458749520961339392 2742731958301294657386811895054336 3051314802467895382383777227472896 -858634147701185046234038095688237056 3184010555607979479611107623043072 4508267814611607775226791572013056 -373744405647814542353182036095664128 3404325645730006943938124393218048 4024816464889802522208744845082624 -303667022687316470367176213538013184 1465390046639040615025034024452096 9406941979017383354528289353891840 -677378635492123464374184926358011904 9638115522463960649921746830360576 1784631643154935197988399444131840 -782905181982453271399743322148831232 8977801541009028982282073705283584 5068237744294102790767405258768384 -815749363098053475562618079022153728 1194737718621650473997796219289600 5452578086807868350297776410591232 -205926710706526299849002219040931840 3869682673481064474221629772136448 6692587845559499742448843885641728 -754590830048703431438975417299501056 2050725485615785707263321337495552 2857906335154838333329161146335232 -372638565044464570938655011873226752 242724602252718015493064366227456 3240795552709827664362717168271360 -36236528265174149507442195939983360 5271060470805775391402171375288320 8537226672185618759789010430722048 -10352247060302719214883117945847808 8021269761700448995526018653487104 3044760958092234784190636941639680 -24915728243182733138271245621526528 7391784311423154427675627436900352 3800905962158952216272137380429824 -841408446220348789846087185207394304 3219772533177114783207704496177152 7761911614910352019279182554988544 -581585492639604769735752825461276672 7925338774235708581570128556064768 3055696006529789113769568189284352 -108124423467006163664343798269345792 5055721561674397304841404023832576 7339978695936890308685342286282752 -994042063443445094489526350842429440 6944287638895424856512025117851648 9320563860835313303647239087849472 -715449363933646354567903329589919744 2813397461236757864514076293464064 8330782592032593818504243842121728 -664456571543434049042167463107624960 8776449117026238570238694515539968 8675832992015499636601289776824320 -412169679494748358650095909986107392 1308917671945973367335697810194432 5859411429008028698675819308908544 -177412689349473238900358839627939840 4394472170691098422746118373769216 145518564706154515420036951179264 -306406926335438183067530140477030400 8326911678434082180137720762859520 9838953460605129851080244260241408 -865315461264170264677389953933508608 2268459743563574263096454445793280 1806606994763918480264065097662464 -98799346237728436615367059126091776 2994994697897344665476308960018432 3491268946723942687372698160463872 -500832776656657671994525756837330944 7279037435326908568342684000845824 2252461096872004929021070926675968 -906635292064362979043275508209942528 1780499595240102670410860558548992 7263790312868035690858388939341824 -703514663226042856160683188859961344 728355432528994568573652530364416 2090518249036970254491479191846912 -378882418068245473004274126321352704 4275033088784468861833790651105280 6428552997922062376441111948296192 -920491898698052766596151323545042944 6837243226995807103867442297831424 2948830798010382119422856177647616 -439320702969313817937202034803474432 4621939003257043138635880470675456 1212194875513728893181900347146240 -34043494916374090485579843016589312 8500991345467849476247292630532096 6047569000282076482869316082991104 -890976690252321378198837550603304960 2131661601539445544616720351625216 1646526153260553859951837757571072 -533125932987053964000383089495769088 3080039932434941622569282679341056 7237666864277372887908693810610176 -921022995275629361099321512948662272 5095492141898664930601213838229504 1804452009288178322370057029550080 -41260048807723568512170708982300672 1914479358638820219099421196943360 4168779810421834123239010663923712 -487174128183679086591157119781699584 5495202473397449837793551671361536 7165805018600169010025521471291392 -625606703157599846306340872778678272 5225783131636635033810890846633984 1597642364415432323647989222473728 -453086502160661023110431224474107904 3970093529754395278853897965273088 8080216837824687227701325052510208 -279290781589037627533101056598736896 8101306453046322199945583894986752 6595582255092169350765585018912768 -911695063230249574097891391319310336 560706930633840498567605867511808 597146113867750054269295494430720 -794276793330632116653569010342821888 321554951432766808667987594182656 4997653157622762290816367682650112 -20742950095139791192388716640337920 2771881538007635740794194831081472 8397947761141365224458253575913472 -421139785765505777527531267292135424 5069572936611988945315169422016512 7770970063216412812876430748680192 -331119864401851832524233687926046720 9317128484798035488913790399938560 7642642128404308905154592876003328 -815898562872984200242736335756984320 4450382011011453153247266191966208 6501688249676756574739438751449088 -671536525593196652650262092356517888 5944211423291371618202483347685376 1136165101377097648691015510392832 -51809437407532502540689781607628800 3106493584022267311729279202492416 8505978601914800142272589245448192 -365719875038917316487311079545765888 9340583639457126522733155168813056 8154786631231719836613923640967168 -350257279363298580281511781228085248 2323685937131934005461190709346304 3589870050256444743674557638901760 -661912686451769454490523838623776768 62070577830197757006323623395328 3131704702733623080051193719816192 -618263124015725539338861952561577984 7358747148876342714503281973919744 2599204021349218827007618508128256 -299946188950728716397354682148716544 6187966361901222647438110881742848 8833139868833670052335260539027456 -390881604428441569178155473841422336 4041999173853317763727698144788480 3481689622087830959112508946776064 -329352442939662814659632604798517248 3609182112224519419589035561058304 6488463968272078847584445875093504 -427997047826284280436065334993092608 2953226618999176388706830049607680 4530776708360068262797664837435392 -893585498359850139076767423339167744 4983172736586574709391160820891648 9314766805997978266310411573788672 -271132392778762539781058942732337152 629071885653790076944851924942848 7903449287926103994891121664720896 -547626413283470518791099796477181952 2139450073123603743491597854048256 2706649258338044224812617272655872 -315294130807244704059269189956796416 1226072767164992923594335549652992 523413954141493883502320779526144 -740624157305053183102610003472678912 5956479364530637195077008993812480 1787732324621601078177660846211072 -455610330078892006284505753671696384 8851736253381113223151661248151552 2033465004153474349970684966338560 -428563893108685055871883422226972672 2740152030288226229859039666241536 7666775811961506427190222820212736 -633019779674054969660977092291985408 2656037721414072932112163229663232 6374166422884481353527633257693184 -794720431995526556157695555413213184 4907338951687753863656814640365568 2432255643658295125020508277440512 -856499190777617816055870550712516608 819415119158762464050547517292544 16306010980473577881174789849088 -557805680737702551556316016662282240 5804550232187271319037802203578368 1931732106460693900453444442914816 -790620213374835538321167380127940608 7667870367714102575216428956254208 1159066355888399164410935994482688 -813899193498111985632119570896519168 8699998053781904450042621356670976 6616737127351340093062632680980480 -794901674392700730064941517593640960 1391456251686324047577078134996992 1692234678003707283154221496532992 -231954529279188833378247730123505664 4910922765362125397354900682178560 926607316236048168868317489004544 -254332620776832851521082947740368896 130049637749818020690748380282880 5072973634065753542927024633413632 -35516680059802120881327644495314944 7698932184103813100915754128113664 5117331345653575960923147635523584 -594211040222791497262978960038297600 4294624873143975270222854250037248 1050611958775402682086940871753728 -455599312442333267783289718620291072 5441992423437710839216090206175232 5336220257096053995305477062262784 -599024267663178101409909188644044800 420608935594780362753764149428224 5001301187639182964664303381118976 -775521078425579650801639914393829376 4597380395632980763020690796314624 2180376924823388840887426423455744 -471202049485566936921205557294006272 3991805056086423515831761834606592 7183060182553856230079309820198912 -399015997805964885878586848544030720 3007731608826307850829926190022656 5849275152499150064174602095951872 -559764893740138183459986881367769088 6820831126190546171142001741791232 436305584657650326415779118972928 -891107960619365162035443309721157632 9408377632038668285225209199329280 4348291701311552734701061436080128 -93641476615318427803571767518167040 3904040462173642159121399931731968 1692219566830560946791380858961920 -391672127291867116387465647397797888 1714141848227253673282567583825920 5701010972720106895726866853789696 -338242389516873888092784374478536704 9345576365365069326073997289324544 11700024422010185864659307855872 -848204517728175281406665356486901760 8927658456401430714079932357541888 5311188794569601997057943429709824 -691053353199081815606367749245239296 8520108778216388234601435779563520 8386358043291272095706539119083520 -571599928729798209741401404238462976 5771665828428672109954582678863872 1701430528327916695357029238177792 -266718126947588301581804243873955840 197139123615780812250757107548160 3800663263965376476091003174912000 -224046192760610795006076585148153856 9357515351666922371257618361483264 8423589276432990125050360309481472 -831157211338302510371639993351274496 5334903371919634936805592540381184 8436737912983999108505276942123008 -244159671309451865748022924693995520 611957209175756301217171916193792 5122307308675013394355659707777024 -244215410322073119251862228983349248 7874332472626736187437604692557824 5123876665790855180514447872491520 -714491309649681628847804615034404864 6789436922455422381992772787765248 4804864004104012458300718161330176 -664825834987709533264760764134064128 746549816049657045974303077564416 6279516266576318719231703658790912 -54410494752612184898913429373321216 447122182968926433423059606044672 475739485461303880440956023996416 -24801925690558467268326509487587328 1239138155651387785942780809838592 9637176355099979128511815657455616 -979681848425631044274221242774454272 9308308889310213456322888820850688 1142855727595793137805509575835648 -676725785323082778899346906836631552 2788471020056916405680362567499776 6284732468613762627600983584145408 -869276931577670474671072528790716416 6216390407557979088432599561928704 7782822723705168945692888484806656 -592992268568156773880749615191425024 9998527488547076597043556798955520 1206333678060216170789266750701568 -655627883764815475183588923435646976 7260993313027745946285158927695872 3992319001583631348562673788780544 -413033146038522062844797316908449792 1548246714672478635367500435423232 6072090060230133999460101436473344 -205658691136968275286606479661989888 6795563108757828820435718419513344 1476518803268694716853667049242624 -733164466728409948755062415918366720 3716371681305602771201972437516288 5819517012079602195127819640504320 -745996114592707879774389955576463360 5102247268445468907220848590454784 7358906612819157135971439010119680 -771703889395406763636084176377085952 7730131529888751105341077181169664 8761324415841856382419258312753152 -605937599214102929181110495214567424 9484933699763347856951333005295616 8178613846953160054423401231548416 -270823881304423770137581092509581312 9118018868812658733382278347489280 9853050124947552656111333032329216 -661608949307602015698735523025649664 9589592581086370514629067957862400 930846158483101820356480471138304 -129937042957425498961602386572869632 3483429010542685963030271365218304 7702240292633132804806586593705984 -403942363474046122322194039742398464 6926747143346597214395517542334464 4439810126423869931585067479465984 -68368898865127284077026914328379392 5699525859870401941320571123924992 6484964101063930698853374352162816 -941292716326411908834109548136497152 4426703165306061211440813252280320 9182253418473899258293342443667456 -960966989488170427377358151377485824 6646571069233536616583591773601792 7803941268719879866928316391882752 -218633609227029673666088494086225920 6945984139194561493532591972679680 9105704924728264733895892085506048 -590287134772577691100916422891536384 7110619821982079369867205692882944 5055924420384818483739958641164288 -914748087836976577607620737244332032 1697330805829215360852895457083392 2134627742371431260721871614640128 -316401603242839453284672619652579328 7417903988364353435926835459260416 6167561423521618191212161550778368 -898031238029118218792556371740983296 9936429520523150325863267396747264 2337308272834483142777320679407616 -716260343768738905640722923224301568 2912498209609944366718723314155520 7359115954058352341992618344841216 -185094849703325580274794331600060416 8483439036067768993878373126111232 4053130070337752126585928194981888 -648106919819410449139704855581949952 23232855916382029716539104559104 7002840714753115051257656630050816 -494400953036043230803904511801819136 1136934622741696883201148557721600 649643204995197380680048168665088 -621279204228910723479201831526072320 5130161361276110584038507480612864 7961416001685555311914442995793920 -739452082061220677413690435350560768 9292120088106795912132177132781568 4945878806782477243777018899726336 -778639391635662211962457163598659584 5073529560505098561365814496198656 5418509152554578659084983427137536 -257985524560519736642004303025799168 7352337273534915869344460219351040 1791634519732357452839641856081920 -806345335824244487969998943306121216 1092241565728032930312002100789248 8118975774171920319709930351230976 -272808287113268582321683319050207232 5738846575853407385845638113525760 4923068062701072394308161089044480 -715837786059812598159859246168014848 7306167049176372155456006467354624 6404797219466399760201234981584896 -921211993185135781712650162023694336 1559648671171447433839332454039552 7214425321409800005122936878923776 -902782295599075623824909512959066112 6331583292655939022715805755244544 7078692367802562351311302351126528 -892746430256681213940656126203789312 3682969023108328968528214116794368 1923279382059661442621533964992512 -214319521927665758088668324913217536 9194684045803787484447758450950144 4302512092357941754602513374380032 -470401210875550511586178041598967808 9130519516530442848008688325623808 3883486131396980833386779400732672 -189329409893986019434441128605122560 5809018982493810459518054887849984 3523293169788091578144992220151808 -600461823567821963564210250047291392 4826610927495828235134683999895552 3935023359358882409717548737101824 -394758640486601616659555022530412544 4273694224566493609072870067011584 295461648410113154032437223751680 -293838680741604802482401353226256384 7574304566631501636926722304638976 7903538177322757356146137252233216 -472539440353502267716333609450209280 3863132939996333615970226007965696 9825727430790129670578389813035008 -164025849794055626216865349198938112 4752978913806797061648824294965248 1914678005104736327557464222334976 -687694998271631786672324778624286720 426385113602265987137616975233024 1294498172982353427209810801065984 -407130849888864829868403411315064832 6894798749372801141732507767537664 3055943598503213091561671342686208 -971455800174361854693913378171125760 9330865264141920148388132432117760 7939349342943904783900928418775040 -231800955887128003382779964091793408 3157059376063662252556610424537088 3005592388431354473985989226266624 -914366992605089496887826971791196160 4406193765842940858439136184369152 1456391055981283059698842459963392 -666223664678233550668466282647519232 5827611190133477640292669998497792 1760079771365591621223187799343104 -215470831657690052875966797020397568 21171971335730940169915040006144 8898477625862962352308790725967872 -247112995537881162781414162815778816 1276410528538505475831825965252608 2283551915176463089483292807790592 -651599425700465530542872024693342208 8898136496309953460080300334776320 1826133506667837555690846275239936 -795131810126673072707262721187381248 9352423549649142971768202833428480 586870534978034149178810627522560 -93243376237547057224347399774797824 2974447689397983961126076797681664 1458258263049950645977162356621312 -688491021905911765771999874224488448 1126597833136741718470679708303360 4305418149261684492619971368583168 -389466520390054667270279581321396224 1595315503941606311590672675635200 4667195706536638136430440319287296 -971267417824457117984132550621134848 3111645864465159926594586586120192 470621375541826530357436527673344 -52599217895685046170817622305669120 120159607009939919767870711529472 6082693134289613618847926498361344 -696467075985901923159621805652574208 3607449494941112006689601013940224 4632474514501996941934514287935488 -263026502487330478047528519374733312 6181512649748933955902215251034112 5058194572478794441106426054049792 -165671165412131026984539406368505856 6128473452406273370903920322281472 4443079540571507158357488508600320 -12555661015871328567030347884134400 7448763036635781631548428061245440 3311357348218790115886814982045696 -217459953836547662065834814691344384 1942961635407510289421631827738624 1918869963472564816952193661796352 -109764595011823885577612703265980416 2297981112711844028212313491243008 6923293455511239816456033999519744 -287211220262457838966481564483977216 1894921425479940719795722499653632 2343918859322522530276967859617792 -339139338663444429377644299596857344 5223299329361998838945874167463936 8243331887982246236811257953910784 -683039275117409341741533919642124288 997362535951050612941261822230528 1200971400866286982971729029103616 -631094060474705777811117299315245056 7531842026384017933831330664022016 1378076509771363466798596471390208 -536846664282842927295454004482408448 8974329711798425434880090283442176 8781178737581714175990519002300416 -37670054974927099002683410220056576 7189231381604702030725493897035776 3783022960172574671695285512568832 -223482534456776940120362942231216128 1224455620404557310320755313999872 7408128252365856619756425203154944 -182019077808291395537000430913454080 6683791036577443847587479158784000 7187639199593954326215236664688640 -241615104562680469719299078995574784 4868982378579857789747468670337024 353746341400051491836857187041280 -674876092496650287735498502605635584 8556059821899516328246912892272640 8612743727361414086335327205588992 -891984714881476575623544825003900928 2101511886298387574695586235940864 3384652946554590200425605022875648 -471735556311019358234626066911068160 7222857670936256503418722183020544 8702016348006746548223464630648832 -428072164972563757076342096636411904 2281252916172521944648722363187200 5244798777396028116513827583950848 -110022986940304185258299081636184064 4996088683525332548820971594711040 5321558299430947690258929591255040 -510156430770363805195893153489485824 5598825002452107830750327852761088 5993635310530618436091593151741952 -604489751953323872436031199119409152 4974060794339447172151178472456192 2076206246015579808435827057360896 -617541261830571742480054771756564480 4200392260317556975937546040115200 9628596410737368223348995934650368 -790621458294076924591133574008143872 7619081078917555750038876761096192 4636596629009591582806600969093120 -748747025142294143405872507294580736 5119821452481117823746565954600960 8998632508719615917734038438150144 -753155116217657910743355954219188224 6541133967384074245700986110738432 6469408329472962281278411529781248 -831700484285989243630667067182546944 3609198761547800028807114161913856 8964390087748222906369328772284416 -102544452514058027197494063936831488 744137845537668113506333305602048 3944404751348739000404919749443584 -421161383370415643237570002636767232 4118474165652478540903141630541824 5267718164125338492879858550439936 -948645375185530456626645944026267648 5839228933615478831142827452268544 7513440579617458591426062604828672 -759860655705192040905926885712592896 5244136596968877802276580719853568 410447963060207848283061633417216 -75824059243174651224545712291184640 8789824166264300652159936835354624 9103332710816323059951949689389056 -426575025651820972010742290961137664 330063513785007574840293533417472 3462605091884780530280246965960704 -541272426369284267576379630306721792 5024468407282220939633127281655808 4504565682844647780968579481993216 -280743403035311898460220655272984576 1019998600510509106202704894492672 9374527838949910273250692371054592 -524188611569137001163445017560219648 575578562674780717767052572491776 9006581279338500627568048352526336 -915823635881040278907436091050033152 82048777715771016092007318683648 9125742748028362123794816643891200 -399721080426888835901073822723342336 485903253362498383160276758298624 3717297978704793836007811220242432 -211096621138156892046360373129904128 8886342008625311352637390728462336 905282965191927305388117907734528 -185050589150598601135889386691362816 8170288103021616524546738179014656 5971612827841295123237649562730496 -994935744335902146276473300232175616 977015662917159560033595058814976 2793926771865997552130830037417984 -143448223473445643911835077543198720 7848094376239373676357871703425024 2697696396298295335817913334497280 -185486559098722201332008522419798016 8751696704513115884876192420986880 4931967733256278744221507091693568 -290047552039428922497906459323400192 8175973503479409061480185422938112 288389182726611348163711918407680 -700799471936005703763695972063903744 9370651218002515018133020986048512 5781587140680795055259309335117824 -740291817089067185841999642158432256 8159583654940325747541238177857536 3966759334345003511517636806574080 -42678210788795541563013078750068736 8216604463896878127903838983684096 1862503099347454359659950521712640 -697342150420572459386771966330404864 6471053899414588047083344177922048 1812572010154746018726910504206336 -979160373054308783729075093030043648 5695403742310395159073397462269952 307518925176849018960398918877184 -589164185507476455763575722869784576 8296673371596280836982535155089408 6512886018127146594587459201269760 -984984000711372103973454131467649024 9426078564760741238863754363404288 9258572283489499045005916964388864 -73035587360441202377675296116572160 1215969543705758246638925937377280 9587587870645978402785661139550208 -23963691218755044753875447127736320 5780720089065520720062468402970624 6669551678887736619529805592788992 -79615788164651151269842487808622592 6341000156879666403945341058547712 7891684835298656615007341401604096 -873948234307134239121319567797780480 8966040011125282378709755955773440 4392031971840055955328926195122176 -530976262774505814281168055670145024 7943810577579216463394048414056448 881980309910277847682906817822720 -864180230428152016601521726467080192 6163065620813606490373364849311744 5042239484716851312342247038517248 -427298489758748987801731876232626176 3649842053189842484238692416225280 2343756145604195717361969850744832 -145939433229940714479890549442609152 3694202635318371222033406527275008 9524445127468880554090219532451840 -791993399257851341913451078285787136 605662891897024144077455529869312 6732243421879337203412349468278784 -612426696148927437783403287996792832 9690286854622314402886782986223616 1477850609276749736944377144541184 -934984754598079181779449907033145344 6853176702585364147248942314160128 5661190940376447333555437169541120 -92268985577575026644308928040534016 4825424912658198570676188367290368 3765512122050332572508211829014528 -499303747909673931619197921416708096 6174075895032665574721896176418816 5804833885889562357124576181223424 -686314163296834338565844440744722432 45466085961345960155300753309696 4466630259101737165800705334706176 -481788682436099988206502927893790720 6967762462318460407431927009640448 5988879529369200464721801004449792 -587627168301291471906845870247641088 9522731887254331376559779670392832 664604911527607134871351147364352 -797482393766957517018573806472527872 3041864426285006172620997982683136 997321268828573389312292206673920 -432786396844887602156268312739184640 732556793116886728833698751315968 3368749627294481309051994115145728 -39648077166611696970240320769884160 2879392196352004330263086519812096 8295437046576255181914115690987520 -500574304832634549872085681009852416 8335934260009400216522349168558080 4975969345308876875564291222142976 -23371012570015779095869053743398912 429283010084382936155901751459840 5942292845270155920191770882736128 -98887870103189961692262911690407936 1513563856255176974165564255633408 7173311357765905932245846003286016 -120616490711664391449926178292367360 6103354835079639247621807304343552 6751862737624502704901060667899904 -725922485093906318738862866014666752 432506725447612759838798758543360 4949695528038315324598461967368192 -622242880739645596625249530460241920 7495819005090697131080026211483648 9355777535094728645428494756478976 -860727826634190088760957197946454016 8123052918976831324923379836780544 4978669981522844060960667490844672 -284108161060234684779392341882437632 3974882293292000199893550333165568 5070545648219447216669350487392256 -443144069050109142902609107144933376 8392075403744241835882695427620864 8782265504438464320807896717721600 -457784160730356625910754406354124800 9453615647493776590349363885113344 2921667319146441270788871895908352 -349843492364280038767981350323486720 6851931290011447447261742133936128 6531424160801218501476680330117120 -655272360277254898916457495171956736 6291998571815905792720379546959872 3291600638164504659551052552470528 -949141189866829434667969545131524096 1892816427811396559843286562373632 2349507080980759953644451438526464 -839752888781597837479675221715714048 1169462507892910266658750336073728 4233964492392540803278622538334208 -433143848896672179695293502935007232 5258247951808086355951855704473600 9703937542988583217436734412292096 -307521762925414449866941029186273280 8265983846603769708219962165821440 4385485730675343184500378327580672 -366258423031632730971475065224298496 7321737322526815427995080216018944 3588539335698658437946887060324352 -240154981555935687247096916503166976 166574258053704327709486357676032 5654526786377457721049309442473984 -127479655941278599278405352549253120 4816946004680133223670862401503232 1626909147793002917927387014365184 -662130320248249340002890382758117376 7242474403179187750299972587749376 9803386136830818452078736703488000 -950947536277315071297330380781125632 529613708407219454576193905360896 4415070870914008038635531178868736 -419420262692983724026320955937652736 5929810300538479327327433175072768 1138625556882877530759233519222784 -855965774582802312520570780277276672 4087049386515745493119308920782848 2865107099884547915386225610981376 -226093806022456718224021716509655040 317226820635575414153792351895552 5187355564910416216600936477360128 -527268480439506899303875868480241664 6908228337904026778514569404874752 9189190652674151065237729935622144 -696495888384266101545384901424971776 2851913848290372804425414799785984 4178182622638366943445105833410560 -718734754640951124885368301850460160 7832552211403945768675793164042240 6450224483667986889843418928775168 -737519146383477844817884997434212352 8710849740591619177248889405177856 9554823610168573127617807485239296 -806621973982775027187012951055794176 6856992533493880946618066255478784 2858484946746373294307584335937536 -731682678946182534566234798862368768 550647405846948795368770916843520 3167359382411065189919505659199488 -50481458724242472698363186782404608 7275840704900095493111678362451968 4544503429972048893281955615866880 -801725782178072244163012657458184192 2293500298300526046426034035752960 8503019485560204483070109952245760 -573431769588815039990429265149558784 3693254968291298038438646759030784 6971794965900715222939402630070272 -903534005775289365422504933360402432 6765566595952434754108188646178816 9146944706873907680376531458195456 -261525030789311348057190321451171840 5431491355940792067900038652624896 3775716174686337056734954722951168 -648925461180591520947895342894940160 274418395193752481061921074708480 5023616916592373522970173931257856 -976691193660787846882911172979326976 3515004322677325756902094609055744 1010246509080779887886750086856704 -451334325511500694304459842077589504 3195321676249437460175805225107456 6574269988071506575462901510832128 -183632702591576867513430476511510528 571868804725783669625492919549952 3486670520330672010917522983354368 -408982189567324103769631207939112960 8880288100785418599774818905620480 1529103747597933215986760141504512 -283892325787103936044939694198226944 2045368085335440245633735607713792 9812964380778098812344967878410240 -606177787387713881490395973004820480 131162965814208762130559257280512 2193755721135623271707887485845504 -401940807138140981261470963261767680 6269564696641175461954450492489728 8825655966170794246849885055746048 -645186026811168169494800209650122752 927783543513980349298558694850560 7781066540079490768152028550004736 -825952126361335882265404174334164992 650495346540274109461461536342016 5099791508669002403573530347175936 -652905042002992950213094306673065984 4514028953567617740213214873911296 2669193079985949497290632523153408 -990407198713399029744559825707073536 6130108283080649922935711298748416 3363558927298727987376800776847360 -524408584607844842927799322670006272 2791348105726029543327375390932992 1193397136673469649360960995983360 -395110343800880649925928531198476288 3359526647790512857717750284419072 6647346460660825967212156694822912 -663985348679112228434372126794842112 8859185626360431093756301454344192 4645506495435218744660270340112384 -390645068661940004895583515464171520 427517022032743555797304851038208 8088405058465832173288182612230144 -246758806525130910087922021312757760 4126557616648757949481216666238976 255118434115402098101436073115648 -382419139106579443667119666897092608 5871433164471636858767158433284096 4442735072255048524565907937165312 -635591899024843454016084822103949312 5600173982709805851764345056264192 442863005684651280916483930062848 -878232902698686967441854208338296832 2220118366442604997447590768279552 8851796417140053092005076659077120 -671897741077848594742635368934277120 1876963355769253009119151210364928 2267025620983396670878521155911680 -699120700240141448570180557219037184 8648679874788198240649999412101120 1251308899776618051126229039316992 -309775572314087548327023789589135360 5210128374527968868908176664166400 9512997435244574998404663303208960 -845089370026471191868801436216197120 9597992439430471702731930726301696 3214533952944629650288025494618112 -921515578048108559637438502457573376 1903559449002115236596933627740160 9629352475694595755181378556133376 -792054100922196770906752027067416576 319277265197101919815222085812224 5529886371062026333306408266629120 -939445743060127835857980281774407680 9893386816720148189420422296502272 4196976919913389751957725414162432 -20042643344650810003120034085339136 8963040673000309909976094106189824 5552468194128228809769798827245568 -604979895337588290985489893641158656 5255895756662990761338524414246912 2874689964387057971041730002157568 -366324409545204448161390672903929856 9728084761179650140054273298268160 5041168793106439375742944206127104 -943154359636364034551192074124787712 9401510467376890646665333978431488 9486631969995680487135419780038656 -780954250496382485228077283306110976 4318565892412962359090491108098048 5460149274700417282313256592998400 -626785193614003025009787327406407680 951127350750680915353103188885504 6292688128623933905683984941056000 -576789725648423171308448851043549184 3192756365163268994085463603019776 8845522929144790900479410097356800 -201888196527722013650442056047263744 983162945622829286813389792739328 8127384460659144074714798866038784 -896199371094705860429534055003848704 9669056900824979395059829016887296 4809371283026010247010241002602496 -36731971983642760800615614415634432 2968476460046388162373771040129024 7931741749424410359189372783296512 -579283448558788422329022992495935488 3394802238875801279475181238091776 7365896842057613653940857743605760 -407361828914228909898140724219609088 8320487198531393065693618112561152 2690969909453682525162478048903168 -587036228065607111098037387577524224 8423059839079615494642953741139968 5106274740109358702167083148378112 -848243077538593074077410600933130240 600250326043575387770413842956288 405540139982651926236336110960640 -218481133688094623045502431548932096 9483920930703519044755568881303552 5327803393320939435475260107915264 -994257560729159824742131791615229952 2594082038426704153166687783354368 191686045901070175155187114573824 -369270513765100563014582802915000320 5727818263060888413434272269991936 9701938883795154307667385135398912 -105213133564709661122607584177553408 621256522777762949279854412955648 1851438793895327294889802214670336 -519842351141459172003911397103632384 1289998656932697103281136586457088 1772150185216912526485936825958400 -578828587985609748439715766161375232 9263762343391461409738048294354944 4346471780328007338065437000728576 -836846475040399647700003677701931008 4525950639690960143484356948656128 4452252810149513811664148822491136 -89005036824105845798748314040008704 8203581111608026040344913486282752 6664876388813451354273333232271360 -692790591442802363262443053773750272 8564974215235822771754698755014656 3575440309324237708955727865839616 -231343803761981835887161254227214336 9474575548239534481389244985114624 6880668784935600134526472315469824 -751492738408347316406542440996012032 9735704279061209447872653026131968 245619909127774841886645552152576 -522788715603364130251443076109172736 2585967876942709979687695402663936 287157726911143061367745341816832 -138674334724303352168821372512894976 5337275696342389806525451706826752 1644566914478119557759858028576768 -929132809561145927289529001578594304 4755481256610165589187208474001408 1788334464166264140871815690977280 -344031237356432181014282031333376000 164323822270051362004961419329536 3778122132340506026515312989437952 -67733892833091875319493701759139840 5430035199063650818841982460231680 4589169440689062983295663182184448 -84037396070146418767277127978975232 7382035551047849457698392160337920 744792335370135757773627914715136 -31533433030253262068114518337126400 6966238064143863181180437652307968 1254858292674044211706052189618176 -962764930776239984512092575256018944 351184521029700551213521114759168 5550170444631750967968148557398016 -861617213644800171418862232470028288 1217935327981400684678492480077824 5044856364806104622852495397355520 -717810502397278114204888483921657856 9796212261788777813316694205005824 7283164118186737295169667886743552 -750272984531551315960587088780328960 7361521306955460299919769051594752 3710555407456605240087535503278080 -281457563223344681761192023808802816 6782148507075083665962274522136576 8229294206960557236154295868456960 -944312783869178926844644044801310720 6301939130707394818977070967685120 5447272554778731822544089474138112 -100959713734532503155473606779076608 5245607577980691881354466477211648 6444791292686430120108738039775232 -524198666303587614661977521566777344 1153107827682961022532632035983360 1646095208626844703381800479621120 -500093077844389444084340636008841216 9901952699918324650670027123458048 3648271392759346627976310563012608 -65521491170919675591406514002198528 2901872662262662466374828310921216 3117085438226116026966561506983936 -599304792395431639081886988327976960 6167559269852984695443506094669824 9959332569542941874619361529954304 -638993239530632142016306278767263744 8556275578202429821541658333806592 4016124100124998012700090899103744 -528910561693691033395513792021921792 2461313279190593605886581082685440 1773919547368731089094320089726976 -597557235035240597928959939740434432 8410527915954414961696525917356032 6997987036471853023244304141778944 -27530905092766069006937674552967168 9081870127318754840224498853085184 5258708256068473661503748144365568 -349864703826318118637395900308127744 4137190925264181689398832442376192 7232077297862923996063450464780288 -537409343429459299116736633169248256 8236949020548326735717369433292800 5211362777662425919050360297619456 -777630055381888720376619888388603904 5738053638650693014718006110978048 9746662121713556273096620230311936 -853935361528152809882329386043047936 9224503852795679261882963680296960 1987619507225775372844556231901184 -545881103620062387913734889794437120 8972963922556051870195045588008960 7133176952075000972427326386077696 -494869118962672847781622679603249152 7706139228811137481592704172294144 6779801012315912928121681680007168 -861771266730636865853886620269281280 7811016594182647799951586830057472 7062230102662448568841709182517248 -585210086713572224862389173120663552 7826651880577912233279177244016640 8236574884043844059705768885092352 -118430366679120959975496415782633472 5325580731467446683189176285790208 2979798332320733048863760024862720 -589400437106709461912756379352825856 9530647848972273558921046713696256 4140365850124684721948176278355968 -503039080393618300176091881012199424 7833930164500474888764828378202112 3865252571458041095861604901191680 -274470521691538784995552624163946496 7407888785477328990276799084625920 8504450158866119426179412443267072 -585759595297495566371780708634984448 7426069981314612784987220375240704 6227910077392475047380973917306880 -904819756595815191002206862812643328 484410397715115437580028913647616 8037667683121437660029085349314560 -24140557688404074883984936797208576 9820484646022164960442569868705792 5298121992257739436484423483129856 -923494632302349954372833378656321536 6417239169453706304827363715710976 1588193940798227447360888133124096 -939709898906155038951874104846712832 1438823207178654098529088301957120 3933088393029353773367096267243520 -366142367262210813221107828019691520 794011392862814079579864743018496 6998920673014609797318300552658944 -958508336387530159504925796706811904 8836872688117252846787061388148736 1858520482218821076286400416972800 -688663513523103411238491653169741824 5352765406484026957797221113790464 1475582382120754814109608694513664 -142249322820827611324809863298547712 1233580217699675212975803534934016 9843770541469721621960102118424576 -446057718284818008969524184287805440 4423155060305238999206970947272704 7005496562448672263411773674094592 -493415935937203836640672456642658304 7126344185063092227312602109181952 8093763109601405938229911828299776 -965823558129424795193372316367060992 3899012356072175750886720494632960 6909540931005244740499348647837696 -528037719310566282421667466332602368 780783984559075281251661602881536 627151738802322720204796299575296 -447033190542806442415952802621685760 825752164931821728571806510481408 8313809924314083248534893180747776 -762631314420875441057254303195987968 5683533315024588767127543711006720 8204177999660912368821773992460288 -312397908291777993550900374865444864 9250431543931597998070420536819712 2639601420277579172238427665989632 -915901112359731989945683199777570816 1006689692552477631308575421759488 2574455973032968347471197033725952 -176590632377399761357969645952303104 2517258765220064990278891299930112 7347771591629938933741285552422912 -929479948481670671003903958727000064 7353541073640061803059941663047680 5389274946294883107362523515453440 -287069190350728678689449943154819072 1243185764301963069795854272430080 8453140738946275086370650974060544 -471910232899368116626376810639130624 9778934328195588390495633656512512 8668877026945004833981143569137664 -631701852660271657860795602932072448 8195268937647081279679261520691200 2946695952573740600617090525691904 -282814190983773878915589556561510400 159629351573246391997362937528320 1874514430128665034680985265897472 -110195401726896488687682903200497664 2184905817365987104645032376795136 5719004856958546365867700346945536 -134801754794147387426056581926617088 5110306879874858432475050203414528 8926931841663018738898346186899456 -375282362600979579067317840515170304 9241587625392076765368940830392320 4605762424215599889112204666994688 -788427456218217513507101268548517888 916884926726874177346237708107776 8464690990287206316086059956436992 -538478331649908318360234574372405248 8478160924913475481144655502901248 7947375252072620664697990267535360 -318006606067272573874421110444916736 2092327301771989537293464602935296 6251142056774390564332465777803264 -876028477380618390713676046618591232 3161110859165488889544529038802944 7531332012197668253791102403870720 -462099709640721566471712616529002496 8806841318596486348139656361541632 3925503866949270386522272319930368 -220782868151702114981066269047914496 7972788429739213449904705413054464 6407723953701244391698451279118336 -868028879031185532788104904451293184 8090302065756218319599253701263360 9786007866858895242471614915280896 -844903855987770140353438848204668928 3998789947897580396685733216124928 6112940390542783459364097673396224 -844554395765066716814855256483561472 7665101789606789169969899547656192 5870416927667079099104797562765312 -295783005323672676991562878289969152 1236868117120638174533633678770176 19890874663558064626598819135488 -3797742521278305271372154771865600 1739653667513466638106757915738112 3900535868556066488687055152873472 -41598042220435088794444452612538368 5498768110359846429860787992395776 1740285461432304831737516582240256 -911086701650661816404642308112252928 8559375269572403470788159896289280 564410611312372400280513550483456 -823531018033797371143727797074132992 3043473664325557900823898752024576 1916342184644351664589395820806144 -662446876312332183979406445185597440 4267853134867763163205592177180672 7634597506875814309427105197195264 -79972735072719585478280436374306816 2366312076788449857001230451081216 3286440054504855904714234053787648 -352935243937724756883011164608397312 1881806465206099545333273154551808 9717230744173645353507145463627776 -310566494975746303554833550841741312 1476493311988443494141295002124288 6950450683629470375888308582481920 -721094204226987258342000418074132480 9993657417300889719993061395660800 6402817189789638803839245501857792 -2311033952635828969593260851855360 4506699610306267889912184483872768 5237423374585927991356445624893440 -194960681366664412787553652554334208 7362611217577536459678938214432768 7111349658868304184546543615868928 -555111242381179873209616960493453312 6084892444717633103608226085076992 8619654688996696806911554608955392 -360042860237258623497837189856755712 6679910224908421385301596806578176 3892009815683807011673264365764608 -139073010481307223170329883439005696 3389307803446477884579145326788608 5380660111484370747033794627239936 -484974889718985271189031722007134208 2899572927916183063843484720955392 5335050073356057650227477762539520 -810341302253177062162082657560690688 5571591906854382943204579859234816 1514018007915026611835752538963968 -466804679459459428482868527132311552 8084525895457757467863831145349120 4808188758904199477113037640433664 -672485565950485769664209668603379712 3890963460938945492310965029437440 2026020879613521936899380573372416 -279058847941588049110961806051901440 7520205301778248034482175803916288 5459848871925472091444577935818752 -992168540655621278564448557173047296 1164522215155880356455916723240960 3531996011356962952652668977283072 -335281583352963089840680605063315456 3458655977558069480780542192386048 8149738174830967761720882786992128 -919747381845104519812247673997623296 6091440501913712617823743619629056 1950477786708234267972034164162560 -836674395481215906633845542559416320 5724586017354449974038005698002944 922257413605075538345712242655232 -334063481543273110571460867114663936 3306707847224668655437064129478656 2867359589587458491423773694099456 -421703037066151409324029901220610048 3562364292081407549185998083588096 184278075130333269034776183963648 -610299476027511609076741424698884096 4690615388961858956168393100623872 9675830320699398097679413434908672 -848503850879546197888987249491574784 8033110829359579832563402608214016 1690559459792732975005868201345024 -512389309944000073525188378899775488 1061328154691097887516982587162624 5253792013158521815116411561836544 -672021136466520082288469135983640576 2436902511999602898028775428063232 4674459167928727731218577818124288 -718071188477473861822502500380442624 1253408934596055437877371895545856 892436740841154213487832402493440 -99758685011431406813486101087387648 9461907993029385358226043657256960 5760828618803141368373909496266752 -827490424366860583886729589127380992 1975122294968403554891480139038720 2172705787339950577919336787214336 -853992197479091677669257366518890496 6832545646266202133359535197257728 2372798300041765899842134126624768 -103872375532001204207443855160639488 8729444958514709806555435972427776 7525721616499752350693164788482048 -709328219588610309685966536485896192 6527897259662059767289388461981696 3288010177643349947736980778385408 -395836200825507375351902191711420416 2983127270133520916928791366860800 8491283661873509769859943070957568 -594380773174533189493542242301771776 8329955561084746554084855862263808 267953128600982597824526153678848 -779835164344939912106725618160238592 8402546852203715421351997608034304 3224065796497494597593092059037696 -933867291838599055156502877221945344 1605963854660918284626369183744000 314711589396951320603651460825088 -566743808796781351479242950803718144 7858880122872007679405944584798208 8569603926193751478801923450077184 -252633209323347395670022578296061952 7406857059869018880156039794130944 2065662276549087994331640750931968 -603862383202908152285716417358069760 9263249599855336063606844930654208 6772569460320205849385697770733568 -412594928393615995094973808304455680 6376292919162185108790239836504064 9723861937319326744306842049970176 -119509561305343020545037659887632384 3642133364977984915028102264913920 8968253494832749848942255441707008 -874620251903284168691224708563075072 2015155255964040060986001285185536 2919286249463675172150825319399424 -1443207896705815195004753032511488 6545865795415374690752891870773248 334380873030634762112747115118592 -81305906899531272742442373402853376 1760255374967386408231510590095360 6362141844507872766655067582365696 -158084920533520799966871704949489664 597233809012347142724913519919104 9136971764258468433553013415608320 -332108437596888895529184568505532416 9391622465980982096983130873266176 4001107771416312645088209887297536 -414390707255784278410237670378700800 4889135597228843440355809066745856 4825457991731345769613283079225344 -821177183309316849807579804296282112 7493397346768388149257706139549696 1034672639146659772784612623777792 -236196589040443896771153449271164928 7443329274629693449267325828071424 9384537795001769318920085013790720 -47889276680004966666353330547064832 4714434057473824389516821297889280 3846910900058373938389470716887040 -446697141339556066874575201549418496 4205629914865993188158060680445952 7731317351332456236039837707141120 -369127966594557251543845400890834944 2375878443920047591745729876459520 5621693768833468771725798147096576 -754851446663514667472851516663005184 6201239949577749746599704712445952 8491981076646639971664503729291264 -877090194837330413853861378156134400 4046035986377037610712543696781312 3251724847700331662192316487041024 -669726034822051104066285206838968320 8605868468294855251551664971186176 7930348256925333624990631370686464 -764458457475384165971955998728912896 8288519996909068671503462156992512 9811218168948802913817510790823936 -461919655117437967358444363013160960 482455308212752889737133097484288 4003392838237098551913072002334720 -848127422177276339130615095759994880 5297502432866514382594355018858496 8207056020171311427753964422037504 -242429830195527114756967778486321152 6390784420311285889171896804573184 9890702189735671809220567227170816 -254823316080265766295244355158409216 450051978085986606569377469825024 5462021965043930817106932729380864 -469209218159185355428844565386231808 4562166738239829356201699780329472 5987649587128576446133684785905664 -774533396822066762614853564905816064 6102285119752068036608462791114752 8144940253066017093729511536590848 -617725335423524175206262140852764672 7389673838188791541814462819336192 6922105626246442601472132326096896 -969839409520671672665256446532780032 4205904497880661151513584718577664 303473849429714275301750288154624 -133043285608076308965703695963521024 3849688667073148819137161332785152 4990642341645340998805755783020544 -856052191687709536514209353750806528 5259193537288200035392696874958848 4282674696218396983228370908086272 -179388795701904076498629703579467776 3358517251226661657009605645959168 7445500046709099116174834080415744 -909243327116016378072230246897156096 9789349674636471837758481737187328 6753339717680286682461637168857088 -750003840728536347004916518394789888 2334440199545173764137760126402560 7507299100957633018895026819694592 -254642425325868848580280265130115072 7076235160468097829556182826614784 9010538951636122654976379390525440 -408625371015190338987980375994662912 5899271452787214857431792188653568 2008712637738518667836742646628352 -238208006574167937188162172207759360 2796220189449919838899662548369408 4240158407275693427935386873626624 -186147326881576001325664324059922432 2017505286679064813461595641348096 8097818961556716691741313972830208 -669601528390088383763581688505958400 6923548452645075753616343857889280 2957764375021622264539901618814976 -870845554652700162530604580371169280 4394352119450253403861336388009984 9703735259959305361782004049248256 -306006340564131654240699506904530944 648676294381170329566004654374912 8514944808246908345307563212931072 -482840963782906875750998570088529920 6727740628426465044977667012558848 9116513017271623310701101181829120 -427486149968241881287841248024985600 8402589465530617206087438420672512 1562436658631933419405110195257344 -500308647820692037048216574075338752 750696600559441172503083343675392 13599380379151239715476117389312 -875818075707769418543466044016558080 4845251779790682020538436617764864 2609159396666356631211649603207168 -68986442907694355810525341131210752 1944859103211612923120950580346880 9467239978807766364146525563518976 -947382043020986437771378749547216896 2811247088607220179402713882165248 1294294144595168862463007744065536 -79271544240597549532092186086080512 9339496491917357357754004235354112 6088453950870422726474869644460032 -514343784496362558497846487595089920 3638508786136408746426767666839552 5655927766920056023217818986086400 -454555218146178871599608996315529216 5017349573488619759106950904676352 45303975551866273831264456802304 -222422753234439274929375642340294656 4942273014066549515817896795701248 706226060258699948751612190654464 -282218116495118083091599189197455360 1234279942750420262475000801394688 5101123868835323171866140223733760 -508069121959417093389137478235979776 3444490966063986531173744878026752 3072298736174467690507266856845312 -121796475899159230705245563499053056 8137832097179431940495335271432192 7875647199477907533628421634523136 -365975514736770980068777987745513472 1578522536901968763214579806240768 7397748196974571453540868049338368 -429758946132622178604381058547843072 1179586744872297758658319169355776 154791598034165304867894536962048 -579770158217579421599021425431150592 4872494349730141832375664809869312 5198143288684023116620194360852480 -18528443052417099144860332516704256 6843427649066758217644384335167488 8420892904666521601916238582251520 -927139138328835221517616888265310208 8438011193132624670235021033865216 2785040011268922938148081480237056 -60958191036175103662182687005736960 6173443523984470532873037597900800 6173157584579856957582023831060480 -539895392247715357983567325375234048 1280840675055495655752530453856256 9392475916945540205037261483409408 -252056984061584057235733964788858880 4340330458277164558612263126171648 6717062132139144572146172087500800 -771488015016974553640398464718209024 5308875286097162521647524471635968 8237632332715471148072448303300608 -376792237576215460631965809609015296 977659092555390802257731574038528 6448071475333219917150972014493696 -583636249329768667077451731200638976 6893395076265366608311887102738432 808876365847319456686434162835456 -310950489649051799278812730025312256 7517965319827573175632279778623488 5291410156072552727808691199279104 -144107917168174061949096299753111552 5221752615956793343947443223396352 218502829054049781006698027155456 -207596292269260533836826620094054400 9301606335677039789804979075678208 4889304606186848641069889074757632 -646919889144897087858391257916112896 5275363432697917213197009143463936 8730075126743691919801616187785216 -498867633960378407846824846183890944 9140901932798135531496804500635648 9615571336061699229677505191346176 -733472168656903087163351766885466112 5154533130180683967546011338932224 8771119392374894996791459372335104 -424278124408935097897125703579598848 8617384088598654657039444364754944 6131391378416674394140244023705600 -653461110715467237872500432600825856 3572331003869814312527414970810368 9502132115499829699105431285137408 -540479741224633932152129601182629888 4791310718611342190160045500530688 8813613855832610703683173060968448 -768017928562032700194511319717642240 8440211484500100826503947973820416 672417402258727813127471431155712 -375828022946350109724085948608675840 8035170518083973258692447327748096 3058184908343836925078943240814592 -345657928881607832527148466684559360 386335246924993760162427883749376 5726208116202553428876728702337024 -360600935419623570857906027855085568 8963014891629173039545624005967872 2305138705299773013713129845030912 -59745215504370030870863754773397504 1485748768860912579777522179244032 4135316963890330735294825478750208 -971154150165760075593893783330095104 9643563361052531380261043740606464 783408885327239485813158007799808 -993133833353363767605626207245172736 3152939952516704073614318934949888 8431940566900192916679234552856576 -121106418639496524421057521957994496 6049852812938788905346112023429120 9413734333917405203570192161964032 -877240239123396825491540032872251392 6027912958138967859411879024656384 3387230740817702937904330338992128 -765588339211870114837064923693973504 8863655543291319316981894459949056 6396915798193452859089784693325824 -321548608424693586447533026100379648 7173815273158914476082566654853120 4814801397707297894573693661609984 -434927217831989168226868268843925504 3435347676287769160459760129015808 709840380265422926069918234312704 -835149924227967446579080983243390976 1376728861904236916267180110118912 8428054747888095726709874895093760 -256747660929371124888088002137423872 9947985930569445235592811406950400 1933214859882204574331080657600512 -921452009292303763954745076998995968 6831439695734521169236659420528640 8810580402439629495998087671316480 -238755406407661274769913524051247104 8472323881693030023823637897805824 7034512189411128242013356316164096 -212346855895791564522941736600731648 7450072146730207056887414138077184 4179786351380571499353996313755648 -70544523899929966983721624983830528 9713893932977703833691665255628800 7508754700624094072533087036637184 -388628401549215996098029210166099968 2350612030654310475764357442568192 9151898205764779256978234530594816 -372777688919692275925857942514958336 3728834965584062642448672315408384 5257832413095020805929783875600384 -65266679424156620991005517219364864 2036562704568620138124686185725952 7846472111625051004316025847021568 -267407437531706977056106942264508416 1103618714086294595485739964694528 927958763380341813042200149229568 -282716906068431053221417253750177792 9129419198173559367647137015791616 613126880199041414163675995963392 -831713926740593174850872967576944640 2768460611526837171590481057939456 506510683583353332945671340163072 -147147940823579794742456698932297728 5492724119060927628741403721334784 2803615812129816358602137520832512 -476593171584999907173961816388665344 4075532178911231517251140201742336 7435584292905904505380397530480640 -395987343734831319638701165831520256 572182295434733711390198602924032 7356404266963374161214958636892160 -652919359184139502043716226123825152 6583707896495503076746790663356416 6833793840392888955950581885698048 -678637713650253765529370033274224640 3535371674991781538256441279774720 4449213677035353150863022774812672 -83117081315659482445207011246211072 2704084036239810802995515644444672 1724897968113415556107639684333568 -314569798873793039995810713624903680 4726545360817014919045913323241472 7817302530018127200079544154324992 -777433530606647718230547656226111488 6459775543180101036629503326027776 4745343592455308598085055881936896 -232537961054383525836585783883988992 4496210623780393912477057416167424 5767143726976198954704536988549120 -982565642464324766064191921933254656 7017714027739319750169491119538176 6884420956712750295008751789277184 -350060056372905597224772435884113920 8663207815296773536573765745377280 4250071351898413752490869267628032 -382434346034050584141172444904816640 5574377161912679391922038606135296 7170860852533629457112413685940224 -411617162738460518760988181325152256 6476118236063552297730151968407552 1550546063679324224735906380120064 -599714600954763243268481718622879744 3843049795542435197365305399574528 7844997679734773065655312602628096 -325951276024997642431836504203460608 2604408177752346733664323789389824 8266696268144060503895758321221632 -668164340383331283437262572116508672 1666072791389718916188555224023040 7360084395113488244795123211173888 -230387434055341736786828678051921920 7749301552417185838141466900168704 5662528464494824469687881655386112 -821964709200667870535707812429824000 185849954388175186571161090654208 2425994159855793266215507191660544 -490803061069746148439008665072041984 3926015692510374322791315033554944 644488388596451543813273688211456 -868011197750209482816045637892571136 3207784607472580169052830318985216 6043866400292374219768109528514560 -644350652065609716714857315856023552 1097202635545537412867291640496128 8037051198426280229605672275148800 -867062306914107127828618747291107328 7497332510441479103541617394450432 7420934099941469301909229867630592 -702714153713547700338196552662122496 5839232065171152821819757157154816 1447376898894971993661099569315840 -972536419601095409030351534275166208 6649868722481666454056573597646848 2381345317283597029683804317417472 -189336505221400098058035446763487232 9267844461806918119788941173325824 1427915453687079466436596754022400 -385146416906221533422593497429442560 2061874853559694011319782830243840 2642441214629040905198962640683008 -53023869479936022724789939445170176 7557712978459969445626615303241728 5465951060603794634354521790218240 -713852525309673474565531588221730816 3020793271761406065823632194535424 1345354520326978142752957261676544 -420445669560741078435164651415142400 6309578162348115620140441837502464 2085046870285619109941212732194816 -423902776534550128538578038762242048 2819972137948299921178007043047424 1676953834773697056928206088568832 -244789508428161614363213799480098816 5717807284628021350719985381539840 6401943956497911417994326321397760 -246806958256787634827240771827007488 6260308845271833256726263211491328 9833669763374204416661881186418688 -409850128494211230317970782439866368 5162569221365968866696218883915776 6365465507857790494643595241324544 -385682068522461994860473735744323584 500338747741757623125883446362112 2518980370011604070722736140320768 -702267387875444755452528158656430080 9283329084774784805533015739465728 3550906517549907671632626843648000 -292973331943863684028219111895990272 5316067250311456006280700051324928 706521919256702067119097779322880 -535334422770239833155608414431215616 4595597509608730434429856220446720 820157420751466404681807793487872 -178185564212273094854878886648348672 575926970011122565128123259551744 4264292115408182395770285181632512 -660299796228929894780396154854047744 3155667593585764732318284546834432 8918256454701519402256672655147008 -187714695842533548106643708468789248 2621320778408879413429750441443328 224673518440596166637300693860352 -849222999794698426538997686411984896 8592283325608796923871710125490176 1598971976761512568643538806374400 -831969123250224462476656089715703808 1451278507563146257558294088384512 8813715022646645533953935221456896 -558213141774783683561105834836492288 4767873172692108556182452999028736 1745239043206288322783790294368256 -390651865412175679711796426239377408 9413742624768521922007296655753216 1459180391250392078656714645176320 -459217575034348106016037233217241088 3050339247947433225483855790604288 8234144353084446141766327676698624 -574838811492529428525072762334609408 7202502328919389660990857224912896 8937983275546155001281333870723072 -114312430737096114224506460845375488 1919497818371519652898274136817664 4803865999266838544000174610448384 -486249746509003518243162907478065152 1783811483127911662224550779682816 2951377898652046621036314166820864 -767577395905094655025448980848836608 6632541804991827940127639947182080 7307123447649604197921023670091776 -529568408404678338542619182650884096 7784782238764635084403155532775424 884488621077498527541906353684480 -351965215244980681870626575395848192 8031177875507754038273989589073920 9647355060699073743957008731602944 -301489129255674513573400188276441088 3668472115462668430173716829175808 4602718788766050815995478187966464 -585695407307273428681636766434721792 270612155398594040628032183468032 6189380781984928717322106198556672 -697538509114580929776926262174941184 6159428323959607865244635344404480 9432919570420774551745720943116288 -433296683748535249013835328949059584 6876657750730600981371743759237120 9674356205079496157167254081896448 -720266463537845705667437623030841344 6829488683390561139929317162090496 5731951806080099775552824021090304 -382288838236726603757911831266459648 9842222038212641175157038104182784 9718811254633063778925322174464 -386709718176858694903410170357874688 2316872987783921312692971782537216 4988261712557615311218605236944896 -871839440762234818477523775092948992 6084252056042941038465463351246848 3907266559936158300097879077814272 -417892444670082956792361589323857920 7438096246741312368107762971836416 8767430996344754718329638131597312 -367715668677019411471250631447019520 6411948790039269476585417371287552 777099429247657765424215829250048 -525246546112669467069836263199604736 6122949775570109939565564365111296 1884747423319183678959107157524480 -766663071724877303868561382717784064 1390947362682772104745923303702528 3251218183038871375927269098782720 -569249906203512684421986178369060864 9743327838764440680618385521770496 7198072113333139792558323996295168 -210629266602572566265540671956844544 6336162621309798900459874367307776 3633425905906298292349248485720064 -808514662352508759286841225368305664 4890095053531878018403712400097280 7914903938610953357379300786962432 -12468472700288068338890271749046272 5380091471689218065068774284853248 7474602464654983287532992149323776 -229868363411880206347249070446215168 3324665525490896540818266902233088 2452510787434944098921455655321600 -534637205467661861647789226092134400 6211267230383406268294826289004544 6929938894058039149117401219465216 -469874122327612409712626821949816832 4168097014023816254924651663196160 2323231444626418653225437081108480 -140187117420980515155609306963902464 9500484003497525635915323161968640 3706622501858134388755013300125696 -438501466313247852252179836696526848 6565442843179929211960337937465344 1785445101079769245978680142856192 -987373450874599033342595345424580608 306757291009256094479020864831488 2681242418956886130410337679179776 -15075847567022958020591278073315328 6867727796468871078094584135286784 8718779875589007039239347134005248 -572975226893383263547673569885421568 1840417935413801732293299045138432 4577098233187384504612343341121536 -358617080149943231691290574613118976 8434220916468789455308341263728640 3066181419456735164502593863942144 -34205087592915196915899889199611904 4738774851823302331178853779636224 6078324889180444811878715617181696 -648977788708058930184365610765385728 555411235314981175906572416581632 7624511010966357939593932701696000 -601141234763628480406275412734246912 4491773650836548823074126291795968 314245547107565894730267035172864 -2395776750117132515231824215015424 1633848491167920122043057662066688 9836743045488903415721216989724672 -114178187628173708952491172177117184 8062741559476039744198389209759744 9772169226799991146409013683421184 -557942539281034776655732625836605440 4715755902446937359266971541045248 2273845617779890808795988335001600 -707484411220832918015159191818207232 510308285576902751783707218018304 271208434037806365690371650879488 -33677100553434160023793858122874880 8466285427320161405711866956611584 3397521441642004038936212117913600 -570716658194320654694963524682121216 8580546362925452103404539839774720 9541090765187957609287731520733184 -926262473317356997648325351919583232 8297430174948458191426025599008768 4356932055030019040225389260570624 -721987723178223110124914301556752384 6274882704138230479641774322089984 3773721009261139759362737000415232 -231710848344877541640760979340918784 7092181825345232316143911498153984 6873059310972093062110966169206784 -957850087583497679401240735990677504 7026914173191142400262491120599040 10811589365001659068542821072896 -753699282602068183634352347161821184 340961703790925345501678275657728 3079593426875808141538743185047552 -92321377820543770054768614227050496 7943943273106610754329924822106112 3890089589001642980340268712067072 -558645361480205925988187143258767360 772801669696714253818966023602176 4331958283271086428460479317803008 -436052456964118052591465104016408576 6539226535492616843825268222066688 4012372052672514570963162778042368 -482312003106223424829029192292106240 7369345365940916413422763587403776 6888448414562787143446304068206592 -67929612042238753376235649228603392 7789200533041232787564703952928768 356704370960991284122422366699520 -687101614507721387909949425394384896 962079786906466829682725466669056 7431239385408355442967536302292992 -484218585093870084875748600585388032 478254722804753733921948653584384 2393267658918780511655621243699200 -782339222161689562398845696177340416 2354984486403782278008754772377600 44249138010176910152810866147328 -755967332341288639461901659310915584 2317434739791988060422445067141120 5598988221178118653190193522147328 -131245360880052134178740974856962048 7498678945586083803491610625310720 2358460652183556173444720380346368 -95716764402292939211931462779535360 5378540421714841645575608851234816 4832965799977958284983333365481472 -750155833364075438049560996884774912 3118884606704477432357869924122624 5910329949536883839643145574809600 -351575999057946079789597700065853440 8188364681166400476482065215258624 2415588496568619110531111107690496 -281165976999347564002831815514521600 2664555613864706115723622533300224 856392744416823979194002840748032 -450979418193413813619436527093284864 5102019833377407791709628657565696 2987799609836402395160198172901376 -840541709737521825361393749015396352 5873937026954675090185071538208768 4444958759541963741114982199197696 -270542683967217847766531428342300672 1334651988026430823232390675038208 2814111126179684798168857145507840 -183768341215995290875915848749416448 9246891484184976972765590034841600 3435823679612096708731298444738560 -995230595139196984748379346781077504 5101202562361555144720080139452416 3646585300195020770322639675719680 -73955442366660260492453444904288256 4985196322140549729689267823706112 2557677510805217218973549767688192 -189842681959546246089584138178789376 4048362960414089248151240146157568 5994366590318228205259824839000064 -561858005573933499748856023522213888 8314236022714325272157549246808064 9961599608551706969132727516790784 -890134830058675876865926795041439744 4618035655335785439590470687653888 1487619363843611358065588225179648 -64729529851621249330812173529645056 9396698484447506687682252439027712 4022186337205150146925460948254720 -787372750358301402189407759468855296 6722766622627323279257483702435840 5078682973839814118434189806141440 -702295714145209291093423763411173376 3957907335214552876179547758788608 202736021464769199563847053082624 -936144221628545113751059474759548928 2830815540011722212697344558759936 4557789250571992821626437539725312 -317863700819128633734460588628639744 5899418788212600786282051637608448 564881131361856522052486953959424 -927691890936676295053101353312190464 1482774395485629172728687939813376 7036575542326588443665324476203008 -868691667388904016784574114869280768 5357627589084994288075062017785856 6713589848519648243645362659655680 -384004535920887802032031706313129984 2629665658468976981403966094966784 1841715248523240269954770907693056 -359976021542400346164222850613903360 4501284003489279956523769015566336 9968963522938170711536778503782400 -301977509547075598502275355106082816 7352758571799858339709047151788032 7974701292702522055552531985072128 -260277460231414422019300138365747200 36888173995116612500253753475072 7394268049285146447605920182566912 -742712367367550424397122563465019392 7313147615179798916948838657818624 3348625571825836844060310641836032 -281863806331388046914826836398571520 2086177857688661109751019915444224 582347383516848741191169005846528 -309429778763726983565077558790717440 5369523777823260897653281932705792 5487370857299216070688662160932864 -913048083979017509998290125522468864 4498095158655273133768826289127424 511137000522425196138689204322304 -150438154016512032205269658457079808 7034375670031274546944616790228992 9182234213276089134563662999060480 -499590525143145447281847957723283456 1915130543440367865225599917228032 7927097097716169037753218578251776 -580179336807399237953661196778340352 210955534379598209399080064385024 8374520843978567032017133672333312 -15478702649976893544494124568150016 2274646680067502969387978130980864 7582725074679001707795740335538176 -258017948415492181831537886863818752 9190673059145172030030002996117504 933585166703549472590283413651456 -262177116342758966102036829643472896 9799898788136342790443646412914688 9067446531278057386089617222008832 -593620290603471689775605637693046784 2499884211642199553943050536353792 5957822672776180967968980036747264 -279853123967982188697097798978371584 6345717486203904711868975176220672 6985312484412018006813538491826176 -345470839446140397169968045050822656 917626230513858808543298661122048 8731147623624033253418807209230336 -887230651899162423478002190481620992 8365244066628795836886760720171008 9844746605654482004925303339614208 -818382133967855586666473547815190528 1791677162291161729380625487495168 2976775140815018903219047080394752 -968513697389021561119578415148564480 8211667835350908940386029625409536 6362927307480917939860861429481472 -557176054630477898502240066120712192 7880258325413136962326411136204800 2923694392363819009047918064697344 -196091787932207137735252858518896640 1327708570545525908087232853442560 9955020837815499683950077201612800 -933758260551202865706216838578307072 7284247549332449839799042402418688 9895013373409670805055868824977408 -569527003805375179017360339879591936 5101425660860447641579574796484608 3400884692773335937488300409880576 -1848074359693562026910688963723264 8331366111217828810680813651755008 6643529123886488951707672286068736 -326350562591719724779239158522576896 6432220721277714401502834706087936 9492520301285566465199901589372928 -498184430191365942207885096532312064 6515249781526576615641348212523008 4077594745885358774015779741368320 -171503371782733997836202433774092288 6742659755364501604933998863187968 3064960897906638088718810781581312 -321955784379697995227138515072450560 9810496897742516011423050539991040 3102999646788828364162753152155648 -812199632523439620180585926130401280 3740505530629021816283734447489024 1342502296605765787778473623814144 -78634463958226491251192402813124608 3800032520055250463140246401843200 2983276822191971567968906851123200 -317415639611516568281968939903221760 6016116014329167475178185439576064 9262236688000378557763405781925888 -446596213677130281610258027810652160 3766608146883802584301886809047040 4164600192435819770433109135196160 -640667971601447095294083752861368320 7852102449311531119657700923801600 3955447426158013393204046957903872 -737034534435086877427088076534972416 9587402887795212918425666684190720 6843526907809076813036840640577536 -701879768860301028873236525627736064 5132782843450128732731943866597376 1778168887942728171817113825050624 -958849957672219101588628056871796736 9737880842976807532994434636447744 4967313527361946783077071824355328 -556867337969605209628587510443540480 6287559597155797513468499663519744 2226213444708013427635205032640512 -748634154666499006478649186674802688 4984449683978676882175906119942144 6183546639985304731888369723768832 -685843710728380128540497538638151680 7078596367992997183176966387269632 1095987098367424685326726112215040 -837339991269712270477533109538521088 1297425980197000474712100667654144 7385300980233422856135991646748672 -291434962322818768128677519338504192 1423246560206048784169109918056448 7312404478495183463287355309293568 -614252288036865683902059785779937280 6825416840676220403202212883333120 1689492449239648866587991944986624 -75589210204133148778429084174647296 4735540085579062016517831598800896 4363831686298857660875157136211968 -290045005155595633629890765700202496 6482072664139500063648433945182208 9193666378307497947482870165536768 -899055870926192009367143758442790912 1527402675894151792788089859997696 1345534377614832228041820053962752 -935459382352471953942923592484257792 5336532272619301134751333437407232 2881174230418077193248800308723712 -894256274406638371534817066982834176 8604100326574584320979451638710272 1056501363045091364386872401854464 -557673324327694861241458431270846464 7120481058014986271460490488053760 9749386149190348878693484000706560 -960674293600885694240974509787054080 5352730962735991349353886546657280 1625393431913983964790627577626624 -506858511440299185529871363865575424 4822567531089756436455053294829568 4220663789350104729190513380425728 -522629795406583152450736827062550528 3194113194228830950432918218997760 9706480844353078607795093040529408 -301278166003630764295871413968961536 7691510149116230942572531022823424 3773453859034587342549775011545088 -908127980777116833415156554985897984 9511497343255414190222992027418624 9987862887657967892157640097136640 -489512158666071881349323048211185664 3712512917747394894652262204833792 838156206478778020390912049283072 -352120303153381721425830817881391104 1340045321054365292174645269626880 6630164093991190541693796701175808 -352894104268059654507654559165317120 6438862055038411159276400882483200 2473064238625725236567728510205952 -654579213264745027231744214647701504 7464130819749173026928867881779200 1287925412051553675109308859154432 -134817238218736618675731949856751616 6147712453022913557725782795616256 6036841239164460289410496309755904 -213002548765836375874090894381547520 2573950072789961413438920730869760 7789247369374077277340113987174400 -43700837520914512255521235872514048 7898152889549021768289885246980096 3877040665601843643994377480568832 -764681753518744083517714650458226688 6248496599947377890739970834956288 3376957320253232367222309800378368 -965648836915759368155240288332283904 5066659083103373846173383902887936 6638553607564918517919239418937344 -304346225936581390499516265766322176 3156639770953635061190174374363136 5620074465351988962460356233396224 -410134239843005228749850584819957760 2472985385438099482182344310259712 3248668182624598350940053333606400 -424305492526475073326711823969288192 4928904476589168852741216591151104 9177004582458974804847978778460160 -460504315137313406084256558322024448 3262558971868355128094243587883008 8026672024225075885491907182198784 -844177241857441368407469243532050432 4255376236124735271229004305137664 2031356792046145437818253291290624 -667809411595055806251135552072974336 3065388402423323902609239719280640 2794553332763520986446618037321728 -815245992875876931606030274602729472 773600013395988671149814497411072 6662084569791482488962954785980416 -790265241806443015556880895731302400 6737043004514888805451617953382400 48912605075970596181401887834112 -36916627245974516257913410114551808 380109824851358313133751280861184 8351900011864505849609093713494016 -457785326363927256757759415660052480 5790586513625771976530342350684160 6693973320432080606275185749786624 -61852709539749109876415864604983296 9201736010683847455202240622493696 9935396441001390305526854335856640 -313043334035883478463555786407673856 2669088390171780851047572141244416 7578445619217111565596214356344832 -241504179981286488132723912699019264 6959288644566578820250887472021504 2873678836279150557791997659185152 -513934820753103052936461922768781312 6004628821863170997610289823744000 1443159702552834747438342181224448 -616589897716032532256045333743665152 5941122471188648335650628063723520 9164651055249775663191673276465152 -861937474251200092978468665786630144 3912761784359225628334825983180800 9772574115233743679852688441344000 -637004658535848620120124679205683200 6418962019096093895302964303626240 5096766028408550120584976812474368 -316143127278805073197323968252477440 6636399879305664850439512961056768 7612557803838678974808661663154176 -44104914367981471367893536074629120 7487388414736002738343193169887232 6893450172769211511514207002558464 -436560949789363715794842502968639488 586216686843555717967419159871488 4768891656809845613662607622799360 -856614530536514962072322254569472000 4295959405449394391490204771811328 2566895693226299699576692203847680 -79982981803538314336862197564571648 6194906374601833012072010204839936 150998834565057471709673693380608 -366918495664278085799341714887933952 5412991047981197085226352158703616 4521419627212259424416762513326080 -494809608076902230453356845565214720 6675279201478598725261003660984320 4012036616654537501898643020447744 -289473929021909397106708907246485504 3333315625327504517263751909474304 1828168833951391424626628348608512 -726255734841465730351928737404026880 1108538516781321998527247964700672 3967248941372459428306972424798208 -320059289026848431762957400887263232 6724812738328707524182687264800768 2119784042317846888445860233871360 -570394910526979632174973241306120192 622632962299448233506603496636416 1768655417548174841277719068540928 -994562144839534659025238911740805120 8369682134075322358488570645184512 4411446916904157508415805259251712 -582550219923077229543983274132504576 1729630568272197728920448696057856 5356537695329184369121166721286144 -857573281815887350198062319444951040 9440608451730172550287758767161344 2085289173982322595221515288969216 -860733750198146501941278731808014336 6829617183539716312999579692826624 4899967794854686390634097426825216 -291420356994651994221481456899719168 3819281136360543048769997654458368 9516985793454622362527276384387072 -172080944709473629734952445698637824 458908860234846403767097077268480 5507882867892272536089898457759744 -478768182135268554610163025048502272 475718881856074883207122053496832 9691132183554387727542771238567936 -597482974675454613045272660427145216 693181330632940825640147361988608 32893670893560523477621730705408 -914851584463296038558688716905250816 6968391723333857304263523446030336 6948131034922133807052096695959552 -356136102554097468732845097645768704 5639992625803287288012523431788544 922450573743734421604440502960128 -652734458554904616204863936063864832 5967931015693505067088356564795392 9327440346438244917908373669675008 -409036131596859431896128668244639744 3522529506276531011949181607608320 9289575587833630176549196894568448 -695930549033246903219741551365193728 9627812748377638807081430456205312 2960452563395374547176996338663424 -531675503877151562664916201051783168 8221925090232894462984716539658240 6052937511355453177847803457568768 -45479738518065406801250813636247552 3186079342647701297028014536654848 6124273580817933024246139564589056 -409168445066490150569707728032235520 1191833588260087242797660434857984 9513800176873252085559507067863040 -381775571691181473807452599767531520 7387412630853575629876091884142592 2576661219540524486680353722859520 -53196261881531832039066097430822912 293013920073994206258305144193024 1124832977976925352372744772124672 -609226719464052546082141532403531776 9888563890368152560074630197411840 6279132044712226697673439602278400 -739287451462104342942672869289623552 3636770828373287249193789573562368 5061508316235325499515926877306880 -217955057577724362953651366152634368 6783768419970239280082088422801408 3994419361830681878163571857162240 -400849528617645027634510214511722496 8381786116745410306573333321220096 9292431050568917576601440027148288 -457085751108940557550351755966939136 9755775253556126298941152244531200 3828567593811610241182231015981056 -449329886294222280779650096414326784 1141407996655874113450871466491904 8411440532872192332133179932540928 -870262233293391176665923769891553280 6553622161156815716053426758483968 1864011506763023620308370806800384 -470207152478727871954087145300295680 2670390891808565761196266218323968 1925660863105563442892300691177472 -269876087856251668451006319884763136 7699366947933366580387113945006080 5373231211680791736858591532941312 -463908506014256650425069717797470208 5538940099063484464411309468811264 3093516062551515055402381842841600 -58226597884497678860864157917380608 8537773673784881538519312359227392 3587214221031354118108782694236160 -58116453868870089256631729693655040 7832164980860631797290170490814464 2256360389157739486012702573199360 -310276326187046144257905393613668352 6630683026912794719927825114071040 9233570252711394863899333076451328 -614973167229726782464295670078504960 590308259682068753956649276801024 3382812518662776920514509563494400 -922813991062407828837191334706020352 8892957941697892565985269236367360 8499483699418319120613547236655104 -404912199095354304414266536274952192 4895554940807178621212927845203968 1111638323318720033671128828346368 -209252000304266339384671357789798400 6218972056353666382132878017298432 9857177842398043730091082120167424 -519454899587551779026824755475906560 675489732665874505981167686123520 1139887480641555318825666744418304 -71186984107111753297962559720128512 7598556658873424162500291130818560 3501688775581537317692290432499712 -848283440782503125445681375568986112 677510624206801067089580592726016 2779004840404098040172194637545472 -431029315969357489822181941634400256 3244158892829096336570302364385280 965895409003010991147134520131584 -675515469851003844093673178935590912 9431502301319236854801297473273856 9861435235935268645888762914537472 -310154485334824640198786783977144320 2063623613554496525207855477817344 4913545587635740509755308559564800 -357861786422132528185182965301510144 5644416943699142300230764835373056 1178267019835288685370038166749184 -23456813810385258006447438686060544 41112149217727978793623957274624 4832113771996107325698487976198144 -150122123956461676574211292740452352 6386002954475691873099621351817216 4097513578714763554382767202500608 -795021996283634391825253455135506432 1249732788355594482408822642049024 1085452039927161732076781233504256 -587224292053085171693734367512756224 4923808334949808116764236503318528 5408100348554491782755387483095040 -260129450480509790360197113868976128 202486708708726283541643635195904 4029031163665228416722194451660800 -155863354043482335426105269607727104 3809429188984472895623957055537152 9002397522833853524106807261265920 -133160913244125327378052335552954368 5039275951962390720183072630767616 9368218702193117845306895671230464 -999926348909668965248551817083617280 5427678096324856345952009156820992 1351634834749096829027919293579264 -725018234968192437993645068861308928 1014312570720364111616781727039488 6166359605214059947469029536432128 -442283360256977263745531317015543808 4397449604948598524365558786293760 2762905970897019680001001326116864 -200864427927032883316392308521304064 3364293487541967605923572671840256 838609489314186257493714893012992 -503342361769269663054351622580731904 551462245312935476057932275122176 5881319586275858348905975924129792 -402114230992421511101420537158565888 5197628775214698318560957256695808 2757962626435011805195831695376384 -972643794521114983571684680534065152 8226327134339698316599806283218944 4856347068955143257122326456565760 -691344685471217050629775244786663424 4441378405903293644046489192759296 1529539194567031361333150154227712 -513769274332266306560113862972014592 370231023124349161782543164375040 737691635242754224679264236601344 -924398321923937149165644492662898688 805086191985271800196112438001664 3637440185230197349792662801088512 -274695713179031902224173484862341120 4217354340721187485131957120008192 7476563870919901726159300399726592 -130174152418219663747170918624919552 8958838968514339461429831332265984 8251651473208430698359804406005760 -463236065625004887139160554890854400 6811330630166771633771689881370624 5436562606556334909055858552864768 -553893180751859114315149048306204672 9055442123620662878624360135917568 7776389559902705247576253804838912 -691658050416721568517325697648164864 7974490523824005484221655305682944 5961700616956912134135119777628160 -581836281176687539067493357140836352 2087352226045458361634423159390208 9676399282869753366386170843365376 -661797228911772029681461883134017536 5110300174720256515096019105480704 4782782578087294314556143727280128 -918548583023413413795365374077698048 6229304498628013996575471278489600 8953839523637940064819018924556288 -830615071513967396688217783102603264 1321127147237827129743490292908032 626299393101884111294566347309056 -769968207533335711854481406957715456 7624279486530242353339891506479104 5419154983062559274368936322269184 -365253513155652117459631323364720640 3806803221341331422498689497694208 8476744814727266850098348587745280 -233366072706355597444937369660686336 6016550857989418998336772005429248 1879560534810248610500113405575168 -113548870223349635597323747536666624 2233985042894851619673954957918208 1614506165411998545562870055174144 -133184709010358183670451778789310464 9248666948182549101182944039403520 8083700183086631897952499397558272 -201025104011722253453942958806007808 8307650577503632374606062461911040 5461766490530111575292349037674496 -911095990999387424731503947784650752 5340289577668389628680995982016512 8409254407075138379881706090921984 -220126811523781910447308184083234816 5538785102119331968933412235902976 740732607359372584768372006191104 -887755167648131413071733437417652224 7972604367915883246164215498539008 3466204601570680165322891903107072 -804328105447385820592582370504212480 92722154545003561954611614973952 4929371326342762564758438934478848 -239412100675243660706418985097232384 4289402644434860182039537450483712 794812195739657906270267645100032 -385471978921893143973330366125572096 4803038105599377044067336669102080 5139192964388471109398858311925760 -230846533454892640108453712808116224 7603597056206123256877142509617152 881974387644593995627543918542848 -548429778687135585913278945495613440 2133387552057392261910936774770688 9881389395151001075932143447703552 -910894553412818080394731282472370176 4356205685888523173012648084111360 5367503443493012370237043863715840 -170190566906824463676221690524729344 5907743413066176626307338256515072 1603516514716845687707028938555392 -768690601432958007968686522251608064 4856761668170308092858056252063744 1580030480751407953947784688697344 -359275011361680235552808192337510400 1841086409632418062276856857493504 2333489273585346865054503864893440 -419594180955886191180026287482732544 3104562340191621884321786325106688 521834566921453168737311501844480 -937284993560463278335646271753158656 7717533285903448522231671758520320 5725871482880108089752912478076928 -230950270233036186692532738906390528 1609644787222827287996186050428928 2330158403125553045694155214290944 -571121483096935381899903965134323712 3297415228015825641635608759631872 7651621603854693748004526854504448 -684426912972329609940959385545080832 8779797505633756128766764116869120 5610633121467580164503133195599872 -834258176200005284944150253256310784 1423720302403343223423043746398208 7281171932364845411936930082324480 -385652348582400658368960245763407872 4953627722869537634651222478684160 4709198435321768248616202348265472 -57375981856050032339684842289496064 2981663416400884885535499852185600 6300476801311040978621463592435712 -339164788951854701785888510584029184 8231814572919332359463764051886080 1144005881807504471916747457298432 -721125973882252416482176028702146560 1095314023512257330364632082153472 2337411671699634834608184780390400 -381643226626140167208683453498261504 1587790493817647208122959936880640 5056848244792588489714253399326720 -696756020555417760774377742664728576 7694053737519199551043524571955200 5264384040837617834854572732973056 -287609929604748056077795287600463872 4654160997857841013396777396600832 6308107038541170541571871841714176 -659277773085991159519824281266552832 2149987147093982977214361846677504 4768932570877006107267466681909248 -547930149657506167415161348746641408 1296550197135569154142447287140352 321006477700214421915427944792064 -584879984839278346325170976911785984 8312743733434860531389627153514496 6073448725245741081374886566297600 -117731026665815408948928905882894336 4871977478436821658418955665014784 884060135621358924446611579863040 -770432547766668504659317139993264128 6525787194738421794607361620443136 2162463405743221065169392317235200 -885117561712408430012590372744593408 6653343204263763800462658478538752 8433796739954114883690416421470208 -398560434572686709020006755644473344 1340712871193133623702859257217024 2626356728661597269839712077479936 -142766328264107899795659220076986368 5380422687753663417546907194490880 8987930820668220570594221989298176 -554776712749089240965141881012879360 6804308835430009302769265276878848 2136972050319520833536824063295488 -305861584962366782925263940781867008 1882555444325702969090713791234048 7726435971242704563487064159420416 -514880807702838991245751729807949824 9810967144567379357187913036070912 6538356023841640495538081951121408 -595988349568066769808979700106657792 9674818957756013652212174485979136 2876831768284245026032375457382400 -40768951716181641418034403885449216 6423365344994673091058218655809536 5629092980530346510422125024641024 -91665566864462784752193501193568256 29461338872233973157438276239360 9895794808374897576303744486735872 -189211580906478407704522508094930944 5060809037884448314351937271103488 3190645586419969762287835785723904 -647069313731350705201566105210978304 5173902331810421540812538632994816 9645823802365095035335456115916800 -940747385383498542848698023160053760 6920660322199776479798973859627008 7972764950936666510405253575213056 -427817332830679984992192635693170688 3539316176472288673821619637977088 8168127402487966680216458852564992 -143555637803702685553681433653936128 1231672705977520343873611200724992 5025310279231006698416866389393408 -299414046350297915555935052592316416 960239985294591992551573964193792 9522553024719784026984464993222656 -568911643963833706742555220174176256 5870623619387195529800723936051200 8628803945532568001775719543734272 -227865405430591901919323693147750400 9433926328226982594115437187825664 7709881775742395360377320104787968 -388149955306481156577971479307616256 7245605670808901100184047678652416 5929086636171468256867151041789952 -353006020426705077520827203505356800 8734199003475458501764732898246656 8373944355375548108875666703777792 -636684751096906242203617879360798720 3411325450663774581388926850695168 6110050895422596928961992426782720 -805521599024729948599217657930055680 9385498315127366718313663305875456 3464965037536578312255208337440768 -234921100130778491231982370955460608 960549850201620371677247229132800 8712917129223922409392017944608768 -524684497561020113856728355714367488 7881981921159500156867866347438080 5577349627216245122940686231928832 -496970621653650699028218097180868608 4670391502122162984533259137843200 3029390061893632525957095695056896 -228275091619199477904588744123482112 9849656157223683151060034192932864 4759198610061084827353801820209152 -269688026628781432908812334630174720 9090885739672089417594413674135552 2590413515315866813169706429579264 -366463495695134346159695004977594368 6668586725496006316992001409548288 5551598798502810892262663526547456 -237226111898653815656491246076035072 6286592038738954804820557908934656 1694631693951530942954955631230976 -965356029537521353779121378769764352 9397505317048436285519976485355520 4286190477407287483480747886510080 -261656840960425380447707296176275456 8546549849929805944341300296810496 6819012032589888523694486639869952 -202104489254308682877478626140356608 5929134597687108178008625291198464 1915762533805542445760804519149568 -969808933549976048767265774178926592 1170136143011169670185551170371584 9429048162576014520841154771025920 -678282774897015854047394218867949568 5996373895022291918079773930160128 8980653588202583044302096102850560 -850690642767158449271114829804863488 6378144786327053609238386450628608 7092016968719711083211596421398528 -855137306233233561663235719467892736 3671874094708212405151002773159936 8906178437639252975472340423933952 -154356360264679937086720842445881344 8208577421876336422599947691491328 1362758485734514743431643833303040 -352178808806539548936600066377908224 1154681455351125033127908323885056 2555078939461630197372744676409344 -973300815431147151847901499045707776 7438678668371453210249614696906752 8340573179793468204790343614332928 -574109261880424094697633756647260160 7424656787767277188737688192155648 4033075312280101831600110651310080 -304734182329269086988606666532978688 956150047303174703663914946658304 2606268536871282267764056804818944 -488922292358253548282856368716644352 9820369098720908123195704243912704 5511372146181340278262962166169600 -979065457596600220750447666144477184 3884743715534077140850459990294528 8097350237463935191231067383136256 -470659542838412968097272753494687744 3460258264847101454253309959340032 5209582111323654759867477951250432 -385525546153522848614363195678654464 566084959094705034136007210958848 766102813987133503366252113952768 -381001907517396971729186230351429632 325070918306554548015878081871872 9751650254693973544683296782286848 -343878160057933280485577961005645824 1918659922227561010093719478599680 9654014835239126408536354812067840 -357590624499324177932087771074134016 3192708305346465595589925112119296 4145786556481082542398693208752128 -931796108392174718669268698288619520 4395133887552118955298525986947072 9288603653010264390731817384148992 -865543947691044189835549653426241536 5899459487362960900467508027326464 6967564847390791910678176840286208 -530242748683010602209067423395479552 8515659475652167219669886677549056 9812829835486808178715335587790848 -85386279358273378157518792891039744 2348546326019682351499228871655424 8316049947706316370450083739598848 -963114595880541505909011463649886208 5451140513349228339648896392232960 3853274371952971499829783970185216 -753088546349767109253642903250534400 4650923213621152045209829261705216 3544124553518429208230841529925632 -553456271056755608835576550456819712 1410713026809042580826092638044160 4083369801762459811371962649804800 -100287415661512855760251182416658432 7708251946306268100357327866036224 7670740200175173482954189468336128 -802634527071895903026395732946976768 2208162727765060354592308721614848 6648603168264453939732200437055488 -556206160888751219607636617424011264 5489215351587988109640360324497408 2939201292173151877073992788475904 -684680293788694053167847363645014016 2227366289880359350178793119547392 8216687171617077285589271716036608 -429476615367128335670541205567963136 7820322821751233398811251626213376 5812137633464675818682381687062528 -497996005671215876450599917030735872 596643171705172616659237509005312 9237246735140908758544916309606400 -66940963701542285146952528195223552 5938867640528007471599377199398912 5571526333546471175003237148262400 -836432899822997918128338639532326912 7551132043293691318306228053999616 4251907169996436989224782202404864 -708168060167943646921606369206337536 3267970848477434647545704966258688 9677448852053400214409218220883968 -358783498842250963931272541758291968 402146393280406651009049674383360 3461623050178928976795784081047552 -274322554881011014297263683013705728 8588252407723058062343812507762688 7097334646132540038545445597741056 -143011479089442880020453752683102208 8477891072964850408954321451352064 1799146286917531419844355028942848 -542636787561985213937660295397769216 5243850175527670164555394816409600 4147716863866241126277187943530496 -423162025874476702426643996086370304 1373497478917414153536244258177024 2993281344119567844951856133439488 -336022140636664580299534261762916352 7707931957650490306832682725670912 8848861863329249611053351133249536 -741580258794598002505042320223633408 24093652129332250984425795354624 1181112764080137857560291385016320 -264767525168910870388215671120986112 8140821415961641890243134992941056 6022010135851045525673872373841920 -276903066308726536582564188205875200 2264747578640001973877835617533952 6236331540199940574637035008032768 -468961814277312257393435026632212480 9774240706404548042156527111372800 6164043745022449955372064802078720 -149013047609216821104801816902631424 3455858672208842813810096677584896 9610316069720992899779378999721984 -447571503293840930080205523021463552 3225697845619102179942541134135296 2977895094203314995531340083888128 -858974083638417903571640780916260864 8470954285464463295811003950825472 722781267378577372578971723497472 -952105296185200279288968375215063040 9070427692691054336731677047390208 851827589042410357539877217632256 -65381367743353797726140215534288896 2668695103724892343351241319907328 4708713540889889212864466920669184 -27526513375327148582315525503188992 599291526700594260475956412022784 4099753359562490980321942837395456 -156380258425967432154306254261452800 2519271385828551341633115573452800 2875771521193582727178080271466496 -727250618353202819588944891863891968 4283994120403082774199096227921920 6216110002027001825391855234187264 -99732611493268817123228693217411072 5162409507169625850101061639995392 1534888161201129681495699455213568 -603239582986258053439285057527218176 1878611940650913845923042073509888 5498388872867738612430553414107136 -605419354066660603560115608687214592 9856037216335261113760947543998464 6008437807874371056710051533160448 -635399553880488609853721421507723264 4992160550434457663572163180888064 5155897803397496219147243547000832 -604776371080649329539812156956999680 3486635761916460173647950454456320 4788020918827688198717903999074304 -65729206868906631023934812054355968 6225844361996408135594883109879808 5580640793278987869672135821623296 -722346541910101053563186925778501632 5380789506637461418096788408107008 5249784833486098371104740751704064 -801371876867394728380977052978774016 7524155060855359645779336282243072 4240390736123602204596823450976256 -868790040192410039983826737135878144 1741324532289006951489240523866112 1215061768364834657300369465409536 -588137068596871511701853936226926592 3903191251081291843991007802687488 174116516153178175424925930618880 -742712252506717453999276598734356480 2414810899269702960542523932540928 482799721273804277122408942403584 -199027702466635279865619491426664448 5290327196201998052161911949099008 1890894411277355559093024776519680 -13881721404836067056224199019331584 9976410775981385262140301772849152 7127893319256724324629705673146368 -12497541505585395271506717791223808 9397768491470163027505634783264768 4182537471252181403400422977175552 -332441770770130172956167610365378560 5520295031471714331883086733639680 4002397334019049283618427820310528 -305707774178489544776335533317029888 9285972524467480420524059107786752 689748237245572974390287255207936 -506399336590152852697889869068763136 1877055238583063866331200539852800 5988004151566078889537248826490880 -325247928591925647347698463722700800 1485734267101439454195668163231744 8048594187401930499443558790987776 -734879851265223340419573191033225216 1254501100240337973945774295220224 936125603632165708203986411061248 -360089551128045928953903925602287616 8527113757863649586261154324283392 1856418740430616472834740930478080 -634190775004810714148377051388706816 6328334198127470581130799211347968 7946458000785764111127894577643520 -267624174521583892032810502462636032 2235467131647283061343398469304320 4825096708325387885861253358288896 -462243388859549254913370184216477696 3788544538595509475770687488524288 1549959991671970994731694252097536 -516857418428854495601532325123325952 5960013581842272844359267573039104 192268872789522311920411857649664 -769971198985395178524467941724913664 6819434968754337945787009159135232 1209138979513061997781315796074496 -491654261527580702937108443759116288 1596745024437020506777298696929280 8576882771983605087483468862980096 -599688152798954642561229488188817408 9348978880298415921429354735730688 6898993925231825083550439166705664 -620077358434489700554138567781122048 858279859741524593142205148823552 7967638071181889439965633860075520 -769645206201534965912773013685665792 6038353511874042893801431970611200 1612165621404347274222034063720448 -557381264700068692128975847774224384 5263582749819352636564874140319744 7904643030299345323155799551246336 -785529924982816339880290237116579840 98641113439492642677019262320640 3339168771421990617055695135047680 -1236563671513163550734727493189632 3852532919266031442276676741890048 5169865041906717812712666944241664 -439747491994721370833876100531093504 3590101786556947415051409916166144 6396012055516961311788806227099648 -730292206670280877781244230359842816 8170780879993887942017192627798016 3205159568565899181541061799444480 -728113369046711530538897237012905984 156763637712131672188830598823936 7803258337235757933499524560453632 -149769042617123188840407090277122048 9835507850308286255637769257746432 7942219875410782274863350717349888 -648582307134576828782980302062485504 5203290925600597241923037611163648 9392976998582781863914255008399360 -638438937136224539105016260730028032 3987789321495501811747304043970560 2128694195781945827260283767226368 -367480476130546803061975055199109120 293410330367532076098323476381696 6613123493536573058303315358515200 -577688668539914186731595994027261952 5464701262310129882881573427085312 235307703589487340778627843227648 -276596256436953320427397838362640384 2405984835066956965033918397939712 5607758135815895423441390282997760 -535695235247038176945191961680150528 95726245258894281124371257884672 5454374165172109992852183532437504 -987719895254787528037182179446358016 361018010760148124402943715704832 3222214604763143540413348081303552 -270694905249355046706372779668668416 9285014058261139514570796372590592 7775791040055136250121631672827904 -8893668625045366029710839391453184 373427993043252837253121191182336 5529921258457515070636478148116480 -421073402678904018979207915019173888 1961270517824915607444393201500160 8619216620136222032262386220531712 -74446961786108412218215854931705856 6154804559842654600167229988274176 227063523724880770489006113685504 -619217715289201038061680250329235456 394380427268367455941099012489216 9622800907864020117145712511156224 -148585854805824248672492732708552704 2739694810037134404393874560647168 3343353798956978598591780874092544 -693805633188768679894790370964275200 1010165893668980174797702795624448 2685967759802797755338454294593536 -169279860473362376875979564120014848 359932864936643302194246148161536 6768370942645316565865075390283776 -654118580798932589350555137861484544 2124338119183546504005099376869376 8960131291146968647521971300466688 -718563509627940636480921770326491136 8819106877436465103317441603174400 1103595795546838839859866475954176 -795545083701952936513644685607043072 2646997095160468995532269436272640 4147859991703736489457724076064768 -368672937950270232373772891400962048 2078045471946310889977590077980672 2288791146264175949254362992214016 -921373867878810283149147405436321792 4916428328450743384101350587498496 6664980665660284329561357534887936 -350361041751641870651138645700902912 8675517152639794245944074890641408 7295626627285305026662634442719232 -727316883818964151620800758916579328 4601692535671145561026103686987776 4983029677818338314146513049092096 -959128047621464938458790902011789312 796999752228446806358406570442752 4177440034007191225853091394879488 -387990638841606327725578368640352256 8467173890004873816919914194141184 2235787078861505762336886744940544 -181676554196984127958534376803794944 3949692903368669724862662456639488 6266286841138265312260246233677824 -592370625400118452070832640872153088 3958680945947204852050245158174720 6560934030764412808087870015275008 -400397211253483763148387102069096448 4106246122204189723338754758803456 6089216925137613479354347645042688 -717651954078135599068835168401752064 2706662720850243092544303176613888 5903542615793787935411145441017856 -81058528467598306024110864835018752 633490700356123640771137759084544 3382609879525770914036522042785792 -793017291304332296455837414336757760 8115048815414427216190236700704768 4030369304906304256859996208234496 -249184124698962328378722114118615040 4588028370978827238078793291661312 6689005510123241955408001449852928 -734192710777156369229021618999656448 6585838391549123606852901063884800 9837484340118649461065195863408640 -745578454515068315535997990271451136 7794251820145337876660128042713088 3090476777484985818063806008393728 -710932380966851168382568148244627456 1683733063350572689185080820629504 6390704317616197984675097036718080 -276762541253311157408700394844979200 5545080464750163171076628960772096 5090819823718661603872483808641024 -715627285011108149698847703853694976 8814819224768007503494463247876096 4557843608680886172835392706838528 -889430345667176641145673987091595264 8715819532698043212245413920768000 1860293075675688614287420222865408 -994329907094891248049641148964143104 7531446531013090485399890608259072 3703850753806006059288117364391936 -463915146343286332622397782997598208 2558197530520476759721334028632064 5399848137249534846346412110643200 -699969046956941757569577936335405056 6476106623315250349152974250442752 998109772765158027829835986894848 -726159013190257157409249080486395904 3000942773874005947002977712603136 6958958986570943528734968007098368 -201992882407935888135262946874884096 8360088803530184513585381831081984 6038259714883690654269774369914880 -595954444477104363096514337580253184 9673308689815108108427531474960384 314680682462901537892574901043200 -419053952060661918860463300897931264 2663123038591900373407692755042304 4058815467743134827987297672101888 -947946628186570381462956378482016256 2492424504653944664908567150592000 3206884403058287756285603404054528 -114682371391530840972086082283765760 7764416011632977616718634594336768 5766968763468193683487395447570432 -713521052920211531405759739578023936 8403646429113235208345097204662272 7349341900453332305529772886196224 -366037169643197921140753081990905856 6501415966178262942175332174659584 3936594262333882809034440907423744 -404503406648406347687227245125959680 1320735340633253002717847462346752 4731355736527005925468244690337792 -947690268803376361830647536556179456 5364903030094555363857981994172416 8646381984100789745140733136863232 -305049316352847967103823632289234944 6871345246427069429689008561061888 9502947011825423035235243109908480 -259073119238755234551810885521768448 8762672802103932467331406344749056 820912418833714794452974275919872 -57586875947645137522175292557230080 2967321051290485214481578398318592 3741045160800403964334872796856320 -391438371356067911535205007788867584 7482501255175696339728295975190528 4653108831358109270100596158889984 -536505925394847257647377212441100288 2029784743969670648494183755546624 1678886962100767849875488760659968 -315936891436804425015392983482105856 7529469015769306545091730472960000 4809698936252968477919867817689088 -429725702911517821446947560556068864 2960801759725461048454918399066112 4184017782362387611687085947224064 -537398380688115853864471559759986688 1357173079361577041974792978169856 4307775012508389446134282852499456 -5177459087569928822364154699448320 1267523614384863380680440146821120 9365733662620669218752315952988160 -807174388298264187081834505571401728 2306658054689739843289232728653824 8137060079852318817755201158512640 -138530795976508451697533902768832512 7599692672090005747199660808732672 9143509201855351236200328507424768 -758606856106141399329362928224698368 6939701047876285171811938646097920 776335283699501551531164245688320 -305969537411754302328942458958774272 5842964714031902182528023030398976 2049574887756621100150160065822720 -745510870829605944205274024805138432 9695637428475805099149330156093440 6178818390209544124235968266895360 -320733225832131829307003358718984192 7023066769075295159327119114240000 4551481481542499791642463068749824 -466039042850177852508166123407015936 9182906172105696617593825300316160 6649942500705173767179124699299840 -323527022279265196087606416051798016 412152252255187101805537126252544 1161326281431838004826885410783232 -76290241550105637914110453973254144 6587742343486202342840169677193216 8391865299534805937911892210089984 -25738555045928401257857711815524352 6219391480279421640465193006792704 7258336275736746821987244521291776 -595411343740537011722232237962297344 9404207310418518191703555578003456 1379017945971403878680878932557824 -794293440398915980757961303646011392 1119041980491378088090524912189440 2947361964562374947520442701709312 -474771218304133251980077171703021568 4510812869043038106090166984638464 8250760184476981795332795270168576 -735699363038403336779513892045848576 6699325189891200167647332110696448 985155048561609543831933109141504 -810233837007456465001444475739832320 8811824499489236066391566296547328 9257760331430481177925730609135616 -486192433784555799263537412783996928 5913441222975041979535125620195328 1402346892288488000536275679444992 -776853303910328521623913728311296000 8512712868498019073247078189629440 6312395388163025465548186520125440 -912729719731558916319850781063774208 4598891300615261663608795014627328 4949297766883740838839381452128256 -927150055209534608094768033683210240 7726132631910206226258993013063680 8797999807031539347708919299440640 -594608754152754983928578627996745728 2145198179401016464276269045907456 9901976978476056328643985253859328 -203651663170547692407414603330355200 4663739261723800908764874025205760 9433847811228409490676710815825920 -912429953356928131964670191199059968 876631312596063222510162888622080 8537198892150632570266935462199296 -255662629085141936027371123800801280 4954399207561260278388372069679104 9939704629810018568661222685671424 -917121793258537931473645304423645184 3613612481367336480959829899214848 5420148388867383374165140343619584 -584454250886879342757778413229965312 1306238156710558898462805945483264 8488122257833025497226835111444480 -800577246293539169518478076659367936 5065319347008545051469990898696192 3214420545498155091683389957210112 -450694431508205035324627824226074624 2250430812268254291706739848904704 4309114130032307741240299838504960 -720810804588447216550889986409365504 5211399840249423997808753197973504 6866632942916365518508166207242240 -970235137375864968082896871502118912 6708301969724337214330820290936832 9380707058679666967948124493971456 -144065968562535247783391118260961280 2336672397256618565701496765153280 7048542181286348241789829880217600 -781354011381541968488836077231013888 9831817497055850309463619254878208 4917318924885410908897692434300928 -794836968373532392758947999435980800 220416395075579345039688541929472 6877737077090210951113317231362048 -322800473169373671921186007024664576 4821641947510226630764815487860736 9189927385056487883837737868984320 -553177057339248279859192164989796352 2398632574870351128429330448777216 3886056021596823037644108919209984 -263775339747133455263862359794384896 4157078115816998789645940388003840 5480800638429094327742959542337536 -460547166069570416617517017791987712 7980729168917748766396881196548096 9009191989960952911695080205582336 -51460177926415586854139584214728704 3700672321363421350136721212178432 5045523730708188879971501343768576 -187986382229110953943695662426095616 8819279673461985661639502319321088 830642081469609109834291063291904 -925859921561465109121840272753295360 1832267861100896933681998646476800 478348315639744309497571783475200 -18313324704619278012744208633298944 1911228725960218657580681296609280 961844569047386155440672211992576 -506862881382613558954341883107606528 1482385698913852037798802644533248 9814056681508486422334119639777280 -425323564990061948805492621799587840 5745615805006198881297011564347392 4757125524841335324828606452989952 -698279973169848157108685023945424896 5395573098187512519407342763114496 3809615765240781844800533224751104 -225572487072340524084736707178528768 8671289835601320014927808759332864 5416462029890236807102874613972992 -10423200060673681858291071931383808 3401879361899473980983097671286784 9985474564767160716531845816123392 -336580071512921635137557161798795264 2223893376928512869868516981866496 5446581792957210234527193115918336 -784782049854989918859842048927727616 3639912330262563497483129461932032 2387792203009029226470404477943808 -731890519935160642127416326040322048 7711269207837273044837495337910272 9399769609841161778980102715998208 -73644309472701029796116836873404416 2635159314061794020005856560545792 4158845780157289874328393707683840 -687385501654864800505238108321611776 4260357103687459441563071410077696 3620806187887126406807436178489344 -984052527079162109266488150345121792 2778885146875182670815242649337856 3831533436843686545727170486992896 -182243503910059692061391164373204992 9696641639564720627593458801967104 1365082768810932224783554304802816 -597356013675235587592658420546666496 9077158890683029926989684562460672 6679349519856654965107414586621952 -792800282117608253370610016524959744 6171761873843513426028101239832576 2443458285969856153220641435156480 -758884537062323273372439712377077760 1781662180425764539973551108653056 8451802186342061038757119854116864 -671433181248071852566194087859847168 801717729355502861486166028320768 6108593203447737295418675223855104 -611129213831453841556536198233587712 4772029107720212936438581498478592 196859172493695537675304368603136 -460321166721171438945786711379017728 6359883564572966082961048250351616 3284286762184030737588000716226560 -175271075681507337547901864368930816 287771327251741153426290990120960 7406179840390392474175799178559488 -403558029738256812109360744441577472 1974799576962849230584731439988736 2539388926484103399326654557847552 -24729599110075477676530237328850944 1547644685638628191988510057562112 8758067050380949028116755818479616 -82126755602593411890245209979617280 7601110704161781830250698947690496 8015962768299462079616600460230656 -896642011587266076475836877007486976 1453907342694581332646313471246336 9612142692806725766575938338816000 -985960766348993881355346805103001600 2579186047997334716709214464507904 1040553115523855226922473845948416 -49082419849899090158858836683784192 2212287613063985754086527371051008 4160509910546324049144045488832512 -347074875998585703598922308039737344 2236811931944794103862047700680704 8064986886563043480382993208442880 -868035891093176896897650017588740096 4781108884212602197445474571517952 2120392685914164435608325786173440 -217347563664400880872074324041793536 9277563512552642513863118849835008 2373145549910994368007185054564352 -8367599719630046068677395842334720 8719321595016376202281407792283648 7580558336712241031439333443239936 -330509005313630945613747947244093440 6367329293279898442526887379992576 7270824974517174031246809739821056 -472613490006739125984697962977034240 5714299234027154655648877637533696 9105723173561911361298469450940416 -87382275888097443880297041565319168 1609289900410122257850884943773696 6066436618319301682030573778894848 -386102669296957064271786144585220096 2311922727907123340017147446296576 8062249088012702366821388747014144 -804014659226334586183270796554665984 6368480795300233530606160084729856 7859479040268860784906109194338304 -852805344230776936712044964940349440 4559026926453055092613919186878464 6143536658889356303209735171080192 -750105824683714852529588367364456448 9996630706934929905903226767540224 7018512239404904261373626805125120 -239158259340479761242069123383427072 8617731241770922011246132346224640 7552452112228778823995913685434368 -21428668847638921958914807778246656 7645738596178258495772076242108416 3148557445140152813360420464099328 -895516737955042367314992549274320896 9696687381394884838091494642417664 2322012072834409319298115032842240 -917281652127230612722428384775241728 7438031895313159162843480484478976 1560487488342841933724143956525056 -281628791676309695584146484013039616 8441990110733463250608426311483392 8461875399319391857491916183568384 -4638668953154539663983223997726720 7974493702926060867792548898275328 4364793634063778154960689683234816 -839618344945361547066729149509926912 7578594848900361359276849684807680 6322415492538922200881681733255168 -57649908269259419925928383441010688 2724121397421991359723124306214912 910297476747503930958082121662464 -703995399030869080614299877058281472 8807916319148361586834072215224320 5486321773204577155853130810785792 -896311851287617732190295730176393216 6202386141798486478894876195815424 9549850310480067992479982956838912 -396992806139852219692879027827113984 6756039538721016413552508936388608 1231766036349329363308649887301632 -783098112471003160960704102547849216 5646567693959289169971822697906176 4760363861632090848355890742951936 -759151866391815716434240901585305600 6835005699566086717260748197724160 7299913480198580193854115719151616 -757362466396924100990892382531616768 4783673215963516643653266287099904 2304406763895496730172544738394112 -423689411619589369367801420616564736 6862386216524719860094156350160896 5327879021308340785448557878444032 -300169576394857341888960836388519936 1962007724534822436402083380854784 1353137590071189935504278113222656 -810695305704382221484329389038501888 9201048011944631709043857886806016 8114926437029701397035920392192000 -590374563544921040495504682127458304 9229656091797017072447490350907392 2113861347110622769164518302941184 -105037110386452405273402351237988352 46213121672503969556517739298816 3963258934501467189626589975412736 -429255087936647032917490596701011968 2242429299917107336732042791485440 4710915530068893135289699956424704 -695350644374170483552951935311020032 3237621901932078804184809567420416 2972918590837462454562601295675392 -950844671770642768831302293964980224 2857093655462309719389205356871680 2656860423501775629952315824275456 -944654449313988790139769119240617984 3479223905933033739361281458044928 8860192244423925466157191171932160 -988225344332506625459911194771980288 7890529960782343338979696907911168 4500602458202923431182389208940544 -994691244340395095984319370849419264 8093203405407771689420956291301376 6498056913477584608706953954197504 -479165920295428020108511623717584896 6725942021815395169243005177561088 7040565799451110430394211740155904 -731027136817069025107560974103085056 2924580943924402467541820163227648 170827113918810417727351025565696 -238898965855512870894113493268561920 5401911569995691938764102412795904 5928129275229246129481848585191424 -236183030649939346720047264616677376 754974944652385659311089717870592 5803588708151127877501653337767936 -481969229988001796574216178813108224 9592702787649550809496524546899968 7602388947159512291684291134357504 -56923384464631532248683261508714496 8164016690468485519199550130094080 6609969817031701025937141956345856 -5854479820749148838837717034860544 1205753660352237996003822992883712 5714676304036778913105535997837312 -183784242988738981356942075113766912 2809012456293496981933126951370752 3810419071789163179447862855467008 -677414981656240421867387637412659200 1427369658705510220312277870968832 9719204757940173629345684153958400 -283591994608075244815836636944269312 2769737922735694429574734922383360 9974765270452404824191597665058816 -336794838378201711088768816315891712 2730413930953672775750787545432064 5510632778093775901464126640095232 -672446587486977770177250451779485696 8378278300980022373101989093441536 9080482223948721592624737568161792 -688426640074121871206840781177356288 6773941337594483203905168596795392 6282340056354903287075377254498304 -95250782066816817780625941773418496 3193111258080798883441690974093312 7740000482695830594989205842034688 -304289974110093470967088786746376192 6347839174637286591183279641067520 1294051311315488768937064556134400 -646128031036529353120738739432194048 2468701046957799601662435467984896 3251967573521610989547806036852736 -77525790313898868533783073090699264 9987133566540869621519022043430912 406221768152118204294465419476992 -588001851850746756963579558822412288 6960529154203405093894334728634368 5595158588515935887924629654732800 -533109637866483693968946140993814528 6708231263144485959760589902315520 6682955398508105019503937400602624 -999606446380869783038632945816436736 5573820339021189962202260262879232 8229932899427920151541563829256192 -404798977441977658729719813535432704 1649882694580670489275611282931712 5488056438302417932364211560644608 -827069102992216808865341482156949504 1327822096211840020383284265484288 7552392260083603042593649255776256 -365892855849651808402154983941734400 7344282476054677690935505412161536 324338695968632211416593532452864 -447759034842463056066527263767658496 3618772104006208099389886498340864 1735710177652529020295887718449152 -562300378924465789382407726278115328 5072182525104057362990471736983552 2112613773159050538948805837979648 -158473244358899473955497433278447616 7545270416006575531231779905077248 9459208032245938498401831542063104 -388675932040996161739949889506246656 9770269431852010594743922125176832 337689667751911201196102719111168 -308745671288092427478575107530555392 6964648002069219949592801963933696 8377330997769704851167490194014208 -912817951309988813781311325391028224 5744773035001068941909968046522368 3722010375860044125698544174628864 -821330897637605735593030221855457280 6491380927156877875203081412542464 4079085974394671681891609249579008 -700710814499530326160889002133028864 3338630089905748489719921277665280 5773666111707756754325442173861888 -280062913001496674678059824700194816 993528841548518549374300871196672 6898746347072253475806265988874240 -150964732975786560923348251640332288 342640122626832612262849636466688 3937043015206199046647287975510016 -569443870294882526811124755754647552 7866368652194938039491519548751872 3509628249834557768242052439474176 -462076251556968704375136160617332736 9561792244100906918706059568742400 5009980148199609651547326002495488 -984089017854323444736362861687734272 3650660407946937487675781346754560 8168016831849668265642875905114112 -778140958455010062816295017877864448 4757847485291992617000151619207168 3166516675370367629875167327420416 -656354710751828891971918977468203008 8132098839611982630838633553199104 4105005485190284589574869168947200 -654061933779418430306006969331220480 8559716188865223317833898224779264 694488102822049401377210320814080 -59104456899753751928074136142741504 5253376325545503288696490747232256 5564208652184003859034911990087680 -464249995412871695242380651232493568 4188007807703845284034305889140736 8222435766035910945627674370899968 -959946141799088271655109375222087680 8285419120444281658766287387492352 9156949772198330629810042133544960 -669662823533974814693790167160848384 3743961650014245468753981301850112 9544589353656740827871468505268224 -371654207520671443859815475953270784 122592155103654247790417153097728 9757284810729782148524528956866560 -645682742134145517771367814063456256 3552949487881764979372218422132736 2083687083139626720422817305722880 -810924105583540364919747955950354432 9396739834453093952258347708186624 4577773450949746567822130590777344 -600731059381477799718241204374077440 298512553933970265518125652901888 8265540880911034554584737849016320 -775138752844621140016429858895691776 8131746973844139548515849987948544 206150859913664267163510847307776 -674123320812604513651215890261213184 6429751090678324693405445086248960 148480895499534242275368621834240 -859007776642827455609472457411395584 8660150620638063040615109657362432 1840330783666032325094558943674368 -728276719296101192091452304303063040 7207561079491725448717533385326592 222499611753103647101835376852992 -354088509687372124648067877623037952 2556907934185210521884329880059904 5964742333573306473082954316775424 -591193183726577046504721589144125440 3095081471490233024525964750618624 9839861825441047404328298051796992 -810165965479909803646450218324459520 6494301499633946108850323398328320 3301785339755154149800087872602112 -559792677750761130948094338160132096 9080177512232311370278688979419136 3814098182214878850837526880452608 -447914229331674476302784025000411136 8149174407292784589403402312613888 9027321320599441643286946593636352 -755217369468024768432053343125241856 2442774094216833282159471799304192 429690925667823069266554732412928 -173759904566630766609632761741312000 3908922184557273647674766785511424 7571195402368008317745273111576576 -588076419532929298338959424439189504 2827277478928952812327128138776576 9651122646105892427750872000233472 -158338872123910645982456412079390720 9328840998500814044741962972528640 3966645830201567550724262170984448 -808325807369106355562295164334505984 2246948120913949777912419818930176 560835625781120335007889624137728 -370195958792807344195628258086092800 5077668322731772889212159241748480 4071880443262191569422509563445248 -284661460067228862686990562398044160 1273278293783188112717429648392192 3874629963067781718843908465623040 -309904209611608610682610721866383360 7448035503922343634818662813138944 2617296112873048881043621541838848 -96919291386625053072604625125769216 6679018219304897352401642804215808 4051176408474710439649571457990656 -495395471570161161755608187502854144 1740753301282593080540507978858496 2494968665685643878787545670090752 -517874220363000204131310943279775744 4479730719220305272233992745123840 37286980501791404270730270998528 -31186532881548677624941055003590656 9157031423804990441761537494351872 529094577435079336288185741213696 -346463501336490620754250577299374080 1848320115296758060320743919452160 5849708019018428113901251356262400 -917579145660074822492850791164936192 4223963204822408813597534447468544 8327140588687844900931097321275392 -119366402715209227795428790782394368 1883657345326688244444123061288960 8225274912584556516651152839802880 -812600099903773747855781574058442752 7312759029118834689564493981155328 7695175866099007867087902111432704 -845091267460480205076510992022634496 5024370797200848371719944951300096 1553415110199062764047090575212544 -56902088967039307409002180510744576 2795360507658327517981173872590848 5752577899550152278052364615680000 -491736384445704988855913103908405248 515665678148222359900952108990464 2000772511026069856422145072037888 -340946396784183875073821916285370368 6388255196977486571846008511135744 7655914105809032639762606464172032 -270254175990841936117626359139794944 2387878412206486066238091717246976 8906940366554342881908467137773568 -761258200618575414710704515739287552 5313934527863330525311890620416000 8952204100416155101659634434310144 -233865385828629494960407314054512640 3711806719325113106846829617610752 7205547689808170663898997447458816 -765949209343891355568173542751076352 8786019459962663997423130693861376 4343797445910913748455396701372416 -501611332171582141123317738858610688 5539802398089840639244045155041280 2138843816583184352262523312930816 -971441789705739921463400048107716608 2779832301185544910508883349340160 1692616634084152843845597396992000 -618639900525697586631328285845356544 2681632971397384755475281273159680 2199192929363559367649148171976704 -132855343381450264892776103593115648 1977945103807532892378407140065280 6352162373265487013103218165022720 -812105329400129832699831509600698368 4282515350495423268373134353367040 9554571041532189574230917047648256 -329008967466277763061803165469900800 9611938573827407397039895889313792 1585412454336982651966829512097792 -788247836603133553058770765433798656 2470818059580544323008379876278272 6921313447357355858675216689397760 -892935263160023230846467074938634240 3187977645543716884909437120151552 9125284365653544576090664641495040 -346061133457203685872050380426182656 3642043089383566722146426956021760 9052644059957806853940941344997376 -483554241124634042746486208063340544 4587293692515747489379853218611200 8205274159580485292808377196347392 -44918979815909800749121277152722944 2487976701850715836367314582765568 8185034022570996048087536860397568 -313125859351988871391243967683100672 9389876485934749936376588804292608 8325976497636365409306431669141504 -382058901704077446886587527277314048 6178365876449203167675972480663552 8724148910140533753870291965050880 -458978315262750822848069268102184960 6582983435425722291490850735128576 4289134344450219735139738275807232 -267475033332267374696693520505241600 3402058020278658873968843460444160 7088651453408931916654183599570944 -366161967142448208808283177633185792 294911872967104917260328000028672 5472502660718685770261946089603072 -147758272992959972875459494466813952 8119383643657192368728112988422144 6669438274493674778761009339301888 -739200892506160344664936405694152704 1274372835721930161313448898592768 4761038356417552922481806861664256 -481890789997329727493796362771759104 3205091539132831442391944323399680 922942263922352350058584089821184 -596303194979429791093128495099805696 55727661994448205229846916235264 6142692313949151214976708949049344 -55978950671341655675985077687287808 6404424469159679033512532637646848 5842678421571970868406582176120832 -131074454319653337904123825438588928 4764953410731661254457294176911360 1398291051094614305163578861158400 -336887833551708862512295927252779008 4661179412389598222074578804408320 4643355668396788278450081922809856 -927293588437314559435324315028946944 9679181085601373583468031052349440 6261041695493894237773371875000320 -138251981896974865845131886486093824 8497212365281940211749236686979072 8750828644330684749760882611847168 -8949894841333625939860316336685056 4836445114179671258979997937827840 7598371855602727959548340289404928 -142367118993180519538697445270618112 8589960583734926144980500749484032 4534824458201572615091285471002624 -852894101348043833338421767879786496 2081914676971856839357973280063488 7662740003348333775269452448792576 -68743337047679540209298513944641536 9933179615478059799434673082335232 4329322541882099697239699232915456 -285820256177682070071142876924870656 476012108201261872981243181662208 9036325932670558183083876540219392 -796091386902064702545075654560317440 9292812134772509018889591204085760 1145105653715147697300769635041280 -526897320941226351293812656406790144 3457882913274658624578502380224512 7006130176899502866778864645832704 -577089243286271274474544802610282496 3187849780831736722859567563669504 1479416015163054700001744616685568 -730354101728531646231813339108868096 1828661122782243632225608244658176 6378686356854467490039588909481984 -685815034661037664627636702332059648 3239851271992585038764259164553216 5395165524897949536166303684886528 -536518291771449864259132670601068544 8720006845935352001603482538737664 4643456175198356651901182745247744 -907395000969677031446700392177467392 137154115631489306572834507587584 4222226884958794844553244244443136 -75498966330861313828273203584172032 3264943272856170490355302858227712 4386412069516089630067750126747648 -178641547478645538630377038942306304 29172639437726490217415008321536 9097901805537089980343013196431360 -797723470162212918094424971176574976 4744469350596423259400163217637376 643481561720983740874134665560064 -556996936789230558247082771263520768 7411547645353133691493432378261504 5628738984064961608807638437462016 -588513577964815853942498034777587712 4199173134122464614670197441167360 7122348192961981883736706588344320 -892731027802702545799509143808114688 1521314818552470382868345804292096 2864599528009503565628099050602496 -475398858336587861360146468931895296 7086928941403809349178011890483200 7484666083466539282501824172523520 -594198120242080771208394325117370368 2304723874301542422443851968937984 149472856798772375266865795039232 -302270903954448465962558845431578624 4344176586706059587236139878055936 3078230609527715362459936213696512 -847873725918752159249526082756411392 8708352150377168233613858168635392 1366606207568950931029093085347840 -973597162040601428431943311669854208 502754365578545505044433958076416 4794973046231873533000266326999040 -458446741911665303365225269642133504 62406044528290770793067819565056 4269660924281468502308984348213248 -232802866945834688706148605089546240 7746169769018345944216671939985408 3529883128095611963763417824624640 -510651745827961681271081069910687744 8936567837738051672128342611460096 4927284958190886358213362794364928 -522378034612301761712047966891540480 9892327550568940256231745250131968 7298020368882323408065378482388992 -122530634225399332424343522040086528 9364348987503273093400480381403136 1249124817137382381254860821495808 -403984056747819344140379821946437632 7669370459703262230476595625197568 9620546520850831229059692354338816 -285226479065945054864868654138261504 8202019093635752845758044466839552 4992951066848745432381122563538944 -633946960194549490258722742524182528 9680763406326554510583811421503488 2980530052703382652622135439130624 -910956224269418558156614451121356800 4001947081385740571384908066324480 7847394359493543786279012757667840 -589102750502429359222021880283136000 6862895742569647736189524692172800 3975665272512185814977214070915072 -797107205538981670045514682914045952 7103687925209129505881274766589952 5126334904663569331586493315022848 -907272477547540487031732239180234752 4595364769397684026753442583150592 6918265585849452515604186311688192 -385734142098067558255479438281015296 2585008326995126717286892255051776 890154157773228297130664624390144 -774553409370183926706970260399980544 3658744305643083895897935587573760 9431693722204814608754819683319808 -242296974161818470049927098087243776 4990870587230024199160563486425088 1805939364794452969739752816246784 -262873445888888236278248801101152256 7127853413756722360325572401299456 7326646639260536659608542946263040 -308838118842702303598915289813614592 9380269152532997539744735066849280 4611499828010707154418240445218816 -234677379016098089800208236668780544 19311105604909557818969657704448 220255663154839681665084677947392 -398542429409268406613833946947911680 955189938540711764751176045690880 6679297078976715425823530822926336 -546015034046832291289241779534036992 7580405975473317247081768409890816 5449485878824805511245144675844096 -64003459360437968841010177304952832 6014650287861545730457194821844992 6974143615074585325103483264696320 -355213067774266440575073667849912320 1262946256767151973042194500026368 9215843968451788104512132364632064 -900402953845770356485202296627527680 7296890191995905222481415979925504 3743187876567786417055248030892032 -715101733059570865564696957471948800 8545539093347681127128080230383616 2211446356633699506446581907849216 -63258302412756062704901666499461120 5308882708123837263056491222401024 4949975333312857818596113677025280 -465014213046593027568102656587071488 1187089163488615315708922243842048 7551658356800416586569947111489536 -484211902739271854383352069023072256 6390365840634682891450708104577024 1888318172030641317662178228043776 -652716557982420733380943709600743424 227053521248383447473304301993984 756676200592851733379720343977984 -859095716849033964334267015647723520 6379478577185110190058789866045440 9463217560585118588342704237707264 -554075371176035857009618113429241856 6279681781766094036930909022715904 4326057192527223189567821888618496 -305696304303553976647939208054308864 7328927943589099807546197323808768 5913221193067392823392112392273920 -848358929501484800656913892928126976 992464185767016378442116992335872 8107580978684660609381359549415424 -594908291110655944007811876534616064 7386162622299725291984905278849024 5168925472336839119638285776846848 -928207108591701265381242749721772032 632418521194371109700835907469312 256166001582783702634104610619392 -517717756114479480900755060540047360 8967712111594433336846852611375104 1597074332429751353759382661758976 -79449445227874845156125089726464000 8779669350830890607229172658995200 5095958244100070090039058203934720 -324487791373494812097538369215528960 1666050947434267075272328144224256 6922442598810353309378445662224384 -702146350439181848032330273284685824 6373870904732144517380148786364416 118660170532619217509354775248896 -178234225532593282069205821371187200 4363836248546266887619128076533760 648289315539598910627222074163200 -667019732937830050840570072878022656 2804100530034037101399411708133376 5075126396803602678268369643241472 -217868308310352259915617657138708480 6431816927346642147336534141960192 7814909836825621230034486078472192 -111032359844307761613004341046673408 8246417240306552683382436765106176 3327009554109540406357588141146112 -211684537716499112794455647958597632 29784746122158421528893875814400 4205038113986880207512656532209664 -898813484286322189763425942850502656 4405305760619533369705001933340672 1525157803216039396550431108759552 -4028983778526978809613610131652608 5038467249678888126853488765304832 322306222359519358222851194748928 -149666578053360524657177076265123840 3387965824539093152564311993876480 575143961559033737662976323747840 -479411835431420098817505669194711040 989269595194985005392589137903616 5473448772729359881348074786783232 -469080405120405406647747343143665664 5111420433617487223962518398435328 9185852238915429656480407072276480 -756897615804796055543321701958811648 2912629571142567706080059102068736 4169151140798257536690505553805312 -704796188715298243570728830328897536 6869902191297784104538216687730688 1789758622659086964913349844795392 -335014815907601208364549448923086848 7381793227432467878468104908439552 9795220515406337663829597940088832 -337012483984843727752182269604790272 2795264784125794762825877531131904 6844847190056766081745117618634752 -479636677731207299452721590096101376 1265324078278602855482330668072960 4569573060349619478238099337641984 -793324606014885520975102343966097408 5158812911070185955558599847575552 1012874076234288243887644864413696 -752597152831182065994861792974602240 9948720851577027797964004886839296 8816596053440469194339561714483200 -461682793013422958616834519819354112 4788078276458567075628956841410560 3472683485680429922434885647073280 -275634559405905635137154252879691776 6973212686358729524382299001454592 9776509948232527218194076068216832 -86085978219311218893827669944696832 6958496164825167642214911545704448 6604305270432666369594905042354176 -599797611789595640073178593036861440 2502968220814493724898033206820864 2313404521912056935040713842753536 -840562906629390465535092459032281088 2382482342119749285058986763091968 2964070997345440558733630491328512 -364732625583596537059864665131057152 2831540205236864878082101071577088 4979075528520850102710480232513536 -909451580163002094885840238525022208 2374774422982958131700075214143488 6625918781425011572698544999497728 -771007939092130639003942589055369216 2435150267393808078172593684742144 8500699486849961740317805655359488 -343004891351567080574497855165693952 5351991238540695362967280042377216 7272038606675983962320849076224000 -640018518347390519242993750438313984 7207126045489962686095803300184064 3674682619757081426080941559775232 -882285099788855350119887758879096832 4316264644491639264812049463508992 180302441037535778695072620478464 -776590120931371951615528525484785664 8737804429322217273767002546110464 1537043749985717038038263273619456 -629185176199997473481487144638742528 4617797459477598111724936913485824 7278228372279064760570935460757504 -193052929910371906661688952678776832 7393707938229000810592102527270912 1142213856026373397695467263885312 -376770598410932498913911898581762048 4860126422115045760327408817274880 752705962235174961290315730780160 -478230522974069674358101312876314624 6181696611822892921921888300564480 9061400533606261178580872068071424 -139159339715585003951213311929876480 5955032364276643076569860361158656 9949478374853693000116279481204736 -55366949104678514435049123154493440 2886548481124651273467937333182464 1023621222129788165939829971877888 -23791521638806259237576311736107008 3111424348610368936496573737598976 7944801673106424850804487372144640 -65810394950193949111457006726676480 1235223336172757350875928555683840 136878867947742056965922237710336 -355748230501899950723417484333940736 7239256769743035055800724498677760 8679496602876024458241969297031168 -424667745753958373786124062782652416 4154332007945076100441146243678208 8205806994005128980502671614017536 -387522103797345999349733967154642944 7487931429769001919416357626052608 4423581803455882737548587324932096 -87444141196137376601106399753142272 1082985734277368819033799514914816 5703878972283546548654640742793216 -330429797787098685176013070067040256 921591564330248411385584014065664 7450702876826480123329488632152064 -948358743943106678065097194061430784 3126829051515630869909236040597504 5552591604051201952398031840083968 -619426804262363883170265195496865792 6713858110115146604080220405235712 1438250636072642687412631962124288 -638778127312721438490806261567717376 2039366999058507781599077676875776 768094238442982734589425054908416 -173997484975982624703702662931021824 546748147293743621511143372095488 9659941652098719919971523956310016 -234479988564468810034752047342944256 2822795666711915088761085132537856 9739982044420597028909867406983168 -293582318598403142264030253715292160 2554515795150971452962676192313344 5824027836972824899825840833953792 -349465022226829317012621996119293952 2238179165692752392358302090002432 7480131919513485614116186882048000 -592196182673446966226658697016246272 3037678649593629869183218336399360 3604236925707641560005609152053248 -333101775927266682151191100094676992 2881755948989996428487141749686272 9892586336218505075974311474364416 -811029465143774457004135767886266368 1440838002978651232463516352905216 3742558957846268183302740293713920 -353335033802963709980916641085521920 263864596726008666859075780214784 8123983503794612152007673291735040 -273252579833193970844589720770445312 8430553986763494427206437016961024 6392024073333324515895077274386432 -190613160069572066496515385424084992 3402972625098849946510277776244736 458343440983302900867434509500416 -838100640692137796971209234441043968 8032778877952595069466991946366976 3662903725282180005661420879347712 -179418319040390199996506522223902720 3815762314208112794975494591217664 9751725262506265202197654908436480 -154758878740221651363377518684930048 1281910152495174810869519863513088 9599748563144131948148181669249024 -510297080041702429810938824513028096 3524386454510346271635601404985344 1734999258925644569998108139716608 -819464927935588072197363404306907136 8502276318195473877319936582352896 9312438544064321239373853520560128 -560611134611192356467920008701280256 1247966513265482964801501389651968 1678135603634292339869780065386496 -299223357268383791143708840760967168 1782106569101208283529941404876800 7593782971172236497424753407033344 -570923510061118697321912653590822912 7932414356056834580617343893766144 285194972837600724658214192283648 -223962193108534228425963016084783104 4204220994923395560599805497442304 3053377739363604889401860810604544 -808822677733285673250531674725285888 2892948585772647884210095058321408 2168395475542804835796131457794048 -268663576372985427310706071051436032 4443419980880145084348141680984064 6077205870633434640851600219832320 -198173724023297878324965771667570688 2182889951638599119619865433866240 3372621566326415988142259937738752 -657568276072776366199744379500888064 2034325126540106217248941217415168 6413020209283194465887498851581952 -82151418730154454944688216742035456 4990250562668469017802587538194432 556404619596927196257693699407872 -456264386061872395407148018583994368 5160849421844358606809509929156608 5744783640786413283430240513687552 -883860895182157831300918935963041792 1675024388503953515701597689085952 2192053616289393602791479963549696 -183686037646469144185941854571724800 9961352830147317794020051417825280 449422072320186625924534001205248 -298764219838599185674369503816843264 4066824793565415773205577693396992 6281228868145292770636366383939584 -889759815116887392252060291997630464 9315808928579659503585976140169216 6381625073759195743906674665062400 -211320334149667577657647270467731456 5424900373804048987340938537861120 3976204155131377104605965228965888 -876023290222307439080902399700762624 5382355015325551777862692787716096 3455121222954432594719400787968000 -847826851616555352436227755397349376 8602263334143183914202442368024576 6320677507148098845856605205954560 -208829903113739525034757711766487040 2836743509681814742672933262458880 9539165150479699253648733040017408 -26396912580906480510041617072128000 4512396367154008921084882973622272 7760852549862093824844235112710144 -547848498763007389258609040650403840 6170801312276360069412237627883520 7609454443621028945184842963746816 -868212062717553745955667533092618240 4961696461846157754768452952784896 3102493382729066633161344435617792 -156067284533477711346527178242129920 3903579677480861713383155891699712 1104718260315698221583833008963584 -584974410798507798761749100535742464 5030494614917822664357089367818240 8697728265504685883718671722872832 -671776488795025155168253392527032320 1262923955350394777306490206158848 9871169792351011631226612877361152 -425396654196262243030979261151313920 1341456939666623721965561686523904 2911897051004735093229434305511424 -471067350913064498468429987892428800 3695480753991438423486161181736960 6553073200887042591715015803273216 -328766646312040717311664131040870400 6642745056268448493018312922365952 3875220568090639954404291804921856 -510449237988342262443774475992301568 2583356650551132880902200590598144 2932499756264374893364326682329088 -865919364420941806673227533260947456 6372797887426067034867844199219200 224197636388520421518656290160640 -345467968069993065550207402050060288 1089964152716988241005595196391424 6258503990967465809625730961637376 -252808505611309206610694161379098624 2046271780465550111810374034522112 1252280172983317322571255130357760 -461474623392119181404117993500180480 7655294306925718066496876180406272 4583840561891069710399613347823616 -448131119212618174505512294374440960 2040345812511722212835614848450560 1883393291319080737909364783841280 -972278582046854816046036285189521408 566817930589017061731272388247552 6506151687131280029913732503044096 -746001821159968390147442464505462784 842718789112395886728162962309120 9970589663607946091302854275891200 -744070237592149188607263441294458880 4064949765316586397616294969999360 7538869480923282488690939686551552 -286893120701955352486570490469548032 445732101354970478040789676982272 6501330269697518487460644762157056 -704040483394675456886222342085148672 8655295272172976257159054114160640 6261675386723009014070345704931328 -326425294975131069851226200212504576 7942739075452181865490405507727360 7169951362514913013733781858680832 -634454073149536371074352807080361984 2316957225945229826470024132427776 174136805092231808523650394488832 -852745049409360395040650322602098688 5801058806334397822610770820595712 534548037437010564307695830040576 -12785526237936468384388384722780160 9859803338766027910694506715938816 2862225412130671092477529367248896 -643936604519646436648171632337092608 9013834388251188346720257482686464 2537866537734798603143374581006336 -243894780902978418346433413021433856 2084846034814341578237292864077824 3300612758197821725958863780315136 -161297029573061597731283047737720832 6769482396370522148914044405284864 4876597283615214336552826589675520 -202669824465316475664260810951098368 7314834768514276031033849826770944 1854980720272110039002534010421248 -187206139681790371022308019993051136 9682938757519632186276050659966976 5703974497765542282892046764081152 -696249580975514870358105568825049088 8409654346473637230747958122643456 4738186216232392940517165551845376 -179929778477627265571584938640146432 6027502354647305927762309160108032 8627157626434552761147588381507584 -831489889541704378540144971900518400 9411518885278616284170617113018368 644169990293801326735233308950528 -840236922895684706594894035143360512 6593580630109285667522428889202688 510622705022313855622664243118080 -590523944115930000870858536869953536 5482674134632615730839811325427712 1898486014037823459353392098312192 -964335510641024424836645188815290368 9693137663069844814085975900684288 3709130361668877022963659175886848 -298286417220737408590189544565899264 8129428453372012281803046207356928 6189741801323506212359958039625728 -690722283512536837720806977928429568 3020207255009459721937754603388928 6300487873714928972583919201288192 -136228133110887382854372921142411264 4931951710212936145437808220176384 7993456766614584910425490473353216 -62082389665464952180190154938384384 8092379501358987657902599713062912 4058739448311272499797126778191872 -593909582210557630608823811575906304 7858388002859786542154798369603584 8119716347272981630326570661969920 -647645999206577530927524603873984512 9149153669775521881087345323671552 1044228669216907771263429585666048 -324206396054710022460517568305168384 4847084463280619125220332867158016 620442929766825556751081262809088 -166709206873586212362806598301646848 856123115094024059071501728481280 178829943398464569458309145296896 -292321606618152175986145099650170880 9050140054679639928875353215336448 5366812654043787195045792161202176 -65575400529976739689543457732296704 6783040253267839220845453554745344 4408966247633408252741241639272448 -903267342455666525028549363612254208 5333349288690745698146552429674496 8168722555944380619551378549768192 -724601012863696158845533257419718656 2792281430655023959332477730816000 2382172487974159405223899582955520 -640805819427218721095041462850027520 3256684041730436560662563032924160 5199365632370313524384130284912640 -161621635281707865310562630412271616 5093721422780984604632465975279616 7526636684886074934301695265472512 -200585484721432800975988264869560320 9902140031435846780959223464329216 9985063511523220220323862069379072 -101642482595345201002267090062671872 7992940590670459985456792508301312 3604034397081449325764290705096704 -360055084762824677186423642409402368 2179878484996200464111315210731520 7973676660640860970270333025124352 -947761842113232570863134349532856320 5459606457717955122157982457004032 3979855444080551205712021268987904 -708176666641818430414267204155473920 7758777336997214067941671400636416 9951854688895124185329115403911168 -103985620950378173523501407126159360 374767033788886599141285129355264 1647372102367738894679398716276736 -477002928779255538184930163697909760 4428699985497031124885488124559360 1633101648850685394400879373713408 -559039940727069591214344215759683584 4291832005717493417094037536505856 4750932977685484980435425863663616 -617714099875461774634353675171004416 7067703618216167256585733383651328 9155742155949752226337948979691520 -449133253863103507773888057908920320 8010839293324978694997110788456448 3928317262806897121507732227096576 -668872363235914843623758930122899456 3647832967791142549582380410077184 6502946103986058130128223485296640 -921694925306085871742495728318021632 853565678839223057936260781834240 8069458269522394002461720380964864 -346564291592827375154004498814337024 4250866866498536942554283497226240 6398536002783691296176627211304960 -53672133480098148348638883282419712 6096824441878823731136020422328320 2649343905331884136596941790248960 -908581385419569246834311547710341120 6509768358857172947457832019558400 7258158742540358513289067554144256 -717116558868828618219201607128580096 9041411497756477357576503131373568 3189230363528666812554247195852800 -77680165741914484098512471449403392 9452464543022726763237138264752128 5455511057974572053870277038178304 -413119072409623081415559122788548608 6312103838106489099234011242299392 3317267184222662277854650607599616 -375754273250295567789854499805331456 4602737751419357549592151922311168 2071540068070473863363266107932672 -650748009625939244018671750347751424 2207448057307388762394145973075968 343628321433845626480934330040320 -685729688419052379229139759542566912 67590176059745712288403413794816 2103634807372964498624903947223040 -627226182649329157770938532059152384 3144498719591722445753835623284736 9015776257785855921367631370649600 -222212166465240919929390552326340608 3106017123236634264523075596845056 356528392781001615587312243048448 -742494447718861767237427894866149376 2490724596522102200692783271903232 565134129831840473990212540694528 -507679929697642648769018124834963456 685949723381827004901016991694848 9752099461975181986934217552953344 -268224907564770178366756591765553152 3354921198524050740760714460266496 822698086410734957417279208292352 -721004266601044764948968536432181248 4041706584549506563102602451484672 4343265629210667320030098226151424 -964977036316305193818651582823137280 4983636586818185778010047006113792 5420914097140965162597510178406400 -868825129017251911099313822430658560 8064165160758181508128798932992000 1836568987042993341679129749094400 -241989917543138275550059014526074880 7981830686183300286140044902662144 331666763543029849406128668016640 -281286481531559121420089318436765696 9466339556424258548281047481581568 2744628566438194044026263059824640 -857158447879206511041465715917848576 3053242696773652568937593839812608 812373686338174947376730011074560 -976842127853438699440163452664938496 1814768466908325136263516696608768 5122776097180440222722134837821440 -416251151651815635923974931552927744 135142440625728510701480022376448 5715936879986833811895062854893568 -383599100368814365269202488398970880 821638470256623588501083192819712 1654952258146124640026463475597312 -108893344280574452232217999064432640 525184191222579642637738240376832 6197538752652079132391184049111040 -196004227578725860020065271011082240 8272109745867705234393282090369024 9503711885007093022407013720653824 -997725184030886814375522770626805760 4536863661540578038829792853229568 2232415622814579183554718517428224 -980732012581725190750235309549551616 2783548661487357182284244510048256 1102985378964909122933527899275264 -33811044780242031133625095991328768 6535063922937611251060702451859456 9308869952073909526044901038358528 -708057813101645098166738406294421504 548472476778446457348560405921792 143302147493548508175827755597824 -2612945278314210001010414170669056 2120992995613608961328333291782144 5420603923672586278547653671256064 -268895230763309458838601211186249728 5797792268832291774847867164819456 5312147710528222620491124653948928 -741563961523892066672615258471792640 8390773459318136544693245022568448 2280396022038526911388015673737216 -467390068169085322117269701689081856 1464560934144232981760598991699968 5059775186235206566254620958523392 -562854172805277541358255732217085952 617266491331479553030579751485440 6367600433125128904215083035394048 -778094836653308444697078178749874176 2933170824746664553706683677802496 9079722494800433049876954540408832 -167274967332767326038422327285252096 4497206910887362831362438631260160 2180253909397288817851153514496000 -637286420822128861182651222160572416 2386454838552046160099780428038144 4734807893921256273159117829308416 -829359713238455255405613060695523328 5185410921532004300804462882062336 1626265959095075584744316431499264 -268612533174996686977274469817516032 5920757774498099647596974439399424 6806454185298420120826904477433856 -120490821101202490579559025265868800 4660953358862689451031863379361792 939479450939235175374758522912768 -216001500692281359552223359860211712 8131769973662503990499464366260224 8172885136215068408601176851873792 -406043370681334350928491232723206144 3013555696146441101570202998407168 6065494195074980604119866155204608 -242530817968247173455175103807488000 7828930774879483819424231265927168 9702590843776593517086544874176512 -447512839839473381891240668705062912 7497959907879126134710023365853184 2229033029951118706493113837289472 -11630371029366749687797729273577472 6119747492799197424260461008781312 6246355090797689258855954798084096 -950507266157197725780223231040421888 1910447034636637279073374555865088 2423022284047221210875980733743104 -285388983119258742158950206038605824 1265072323211255401811559967621120 9979791339500877521026721591066624 -333053028726192809908724146097881088 7064316490733003734027898472890368 9592346394971027869058872186503168 -516107734202843827745974500823400448 2681326026181642993673350479347712 7750760484742269468288681819242496 -750141573693474781047099379138166784 2840685080709596473393406913019904 5885391451961287303345518816526336 -595393422772932439084679657903095808 5786703038623820674714286275166208 1002195756474626640471363483074560 -610783030913018213613409496714969088 5275515634275449521866139106279424 1856129718620908339700820365803520 -478449989954253078572866833081171968 5950953269958463338020333521207296 6548279747724950736732458768662528 -171338690428413591187654334224531456 6395743540615518756087347472760832 8665445293575913337424932331585536 -674846464872165787388137395024035840 4769547202755853324239779982737408 3516724318645272691923625650946048 -819398510348892079148602918178914304 6740632792657936485990117161304064 6173086158075519008224513898840064 -881421196651941941320264368661725184 8937104939662605586999226247675904 3242885047760767103808824710004736 -146270832623879028896784713139617792 1797022090156001418912413608050688 3439750624555740900967575940235264 -470186237443732862132457216220856320 4596219604955808350033421591904256 7412849405542555484734427045560320 -84004021428163727310970036194115584 6911310119681816863297981500096512 6794145178039627779653079199121408 -23677374503683128290953865684058112 2263768054419539866052665209257984 5183594509734740926553958995984384 -954575485096021749522068162616492032 6936207703190254635373006109540352 7443464068570316367466156217335808 -563244352504292132546575840669859840 5923050010039618982867963813560320 6830100450833526319853213314973696 -482168626909521772933823227628617728 14020833648874466273196649742336 9662852429307064744020576638599168 -532483158252520476996525631196889088 5999929363741968403077280710000640 769840982907668968004678588563456 -444974408133338946891006571792302080 7643107519838467829155684763566080 9653368814389634553789258397646848 -856666371630447128553014507155226624 8691688269929268833763942775914496 7687409867802649931556461488373760 -672155432945977124423736150783426560 6246737258742521328209389477167104 2567306335107104005921579649204224 -607764289725298634161911017563488256 2227241744013151123972405199896576 7119870398888552587940393897689088 -373104618995460759074224120967200768 4996347507564038878567726944616448 6654964032081526953687289138511872 -202097367241627175141794002658918400 7493769879105892896387405013057536 2580565057207402894301810898501632 -704931392736452738959651418690027520 6981983609563663094551964639297536 7946679621046541131947888718381056 -413891071021199955521869094594805760 3006252138912839455936293315280896 1881053973847801093124496532963328 -991318980919926509100948543307251712 2831580697179448664920644682514432 2189754571187284301806845137256448 -872385757457448412665104411903655936 876025646998852473086365931667456 3913050480741320762734179411558400 -925583414679136086557775825788207104 5688701575465068254231948716670976 4545709844259544810154340179247104 -86442759816278929960818519230644224 4709282295852469307145816157192192 9204590850191612444959704826773504 -129263758666909857482508306634244096 8660342631018635334938881490419712 131893737541719894411841995014144 -707836911355987618315274590051368960 2838451602810573793168812381569024 3299853095066376551007368312258560 -480832862193556639903626510649524224 8703766438943907872310990917861376 1428797225031040312700909807206400 -249307393416638861949615596959170560 7365183778819335014303445167374336 1568080223995132776187579204632576 -196801416236704347607720641905557504 2678537567446001444967986686328832 7113935222108585119514488809193472 -254589617189817077771067021412270080 8009890801967432785893090184396800 8553782091169884565775873728315392 -599520692688999820063329568753188864 2249976870868591969837046718005248 7327098529793352900030750590500864 -130591321152180918650405456034398208 7227791625387853740429753305792512 9174688200393413985960120213831680 -303327712434907509718136615772094464 4046318964648810052609410431188992 7450201572563411727117593333465088 -379883024097416683091227158952017920 7913808183949693781657500682027008 7230141964664226403756145538760704 -117699291975840657019262594461990912 2423661969663691957345609335177216 8937064601276588993098943746277376 -812617390901866827809284374522757120 8593233964530150893072707617816576 3362710491386269235539389666295808 -339593899584376903452563209342418944 2250983579524220579372740055662592 7555907358132947435819115279810560 -243848349179131975810258579969015808 2903122460556326641387024370630656 17438643992050179867509719564288 -625485783342177512976563062303621120 5106928955113007026084049565253632 8550229784685996070622482067881984 -734624862702133501929562589676699648 545596198573542398478919917371392 2795010965981950212249076132478976 -822905883019866911890890724489560064 3777249103204142250181467303837696 992040362307659545654619237515264 -899071277520181861686223021572882432 5527457814191189170963065079857152 1682726109098027971680542488788992 -645042090110339315138353497972408320 8542111892994093771436911748972544 3821380876432482156529699168190464 -445531966361825970257578659487416320 8541385915297056576598034482200576 2463532034308517057207864209178624 -513946222077462016318496326310428672 4601124830717278223885508647321600 2003992816952391849802093949878272 -87816914731290151406470555357937664 8894579728932234239215850473127936 3046517189264293778164708460724224 -238424624563200550015134897264394240 7191330962015246204032246519693312 3992958628892281914617376265994240 -312175661641151787034061122951970816 8782955444981925324690619220623360 6220838463667150671088572379955200 -384124362328131914939021714096390144 1610498469970451151583864741167104 6611027629520085505346339153641472 -523903878065658426116326706374508544 4604934925045010932310574526103552 9971114785915029101639707737980928 -129516522848604747011865259165089792 9232218521581040719448654779252736 5623699802507193335853159500742656 -182254387670668498410439641342672896 4277555613068491120991574111027200 7149947582361152100553800892284928 -366710222527107795691843957798469632 6266317399673610059471833033342976 7429283835392275903333234557059072 -58975742466697480046679653429018624 4662740879256018386295387326513152 1100690978993318513179237363482624 -865542368619462221676805419425595392 191552024087927723709364313260032 5795586049094307916118967592157184 -164171602348410734526492202298769408 1058521789415687653912189748641792 6989012642090414363171891043106816 -666221692098565113789680412677636096 8625393921032822839869421796720640 4994486219708641705932990284038144 -827907750902031651701880100904501248 6157176759940743904063242408820736 7919689733306691363570059321540608 -921020845269762230109458152053276672 5418924164737080318697253908774912 2995354506117600367485429752004608 -11930199359491193043260341663825920 4787265708881052003247986055315456 2663129426027915073506903517560832 -744444902126487511909675536517955584 7572253896391736252555303816527872 4422869065645218249567246491844608 -45171051607403747348170782470569984 5777565023310469408851539085230080 8962877062829838109319355313422336 -975085349390162316826063213476970496 9321993499550567052525280983777280 3945779382548082890353881739427840 -376266186305913191051423966677696512 9307912188925789074073643980423168 2785758685159123215887150960607232 -813200483149382105917762431810011136 9268046259747185736413146295304192 4643785179286350922269119439962112 -447201334458003584617970466845360128 214861993937852777948954369196032 5456143269361372161266186725621760 -903511023085041478885362641745739776 1836712346663553307471709355376640 7635769245632210303474487871406080 -801343319495960376311126168841486336 9106769737118746671486988281970688 8097405570407459201816219032223744 -402726261234227941096154328125669376 268933408082659904374949795594240 1940101615081427302705077575221248 -655820809808417916472920245289353216 775980650192739419615771465089024 7819431930569068603829784967905280 -167033377208837093842189960542683136 9302043007578309504154644747649024 4450135863543614475727125035876352 -563124889389727776067700732295380992 4252342595442657847759623893811200 4118318393528432176289254165446656 -325358168148333285873035301722521600 1843808658018771909516664428822528 9612218466641673139718768845389824 -369466543056651794946404220804268032 4128652628707069189754576691003392 79352418158953364301242727137280 -535268628253036397346438727321255936 5440315103761096915351200556122112 3592572809458929696290147038920704 -903899996360244502321270802729664512 5052271430571705051563261828268032 713847160784361195677037954596864 -525267904030950957688334274720169984 6436864181786314617933627922579456 2746814796641236909303479710777344 -402231376944818593294948176209379328 4971108777636327126380442684489728 106673575770444026043483560083456 -494382860001995540525208779251253248 2144992100146986538657920881524736 7853834217689170902484092450766848 -641624979717881092177914173608427520 4275829766956530722649715131809792 7853397736129412427597570298085376 -79154201381689211612159582402510848 3161172640905258480867023796568064 8649684967067195744117424725688320 -373488637594026154004695790146027520 8122091467062358992698206312202240 8907490789800165587264172975980544 -790862665035142937745827718137643008 8942870685359990571483983576563712 3089627627752868112953803135778816 -400961391566015149551739835265318912 9408666699946544286278817993981952 7745659452375473788997324370870272 -259065167429783743797883525748752384 5008545488327429957859381432287232 3753862747053185659593274765082624 -387884341684527996158727307833376768 4621266754336549143196491661180928 6684342000167681660479411712950272 -7774661294077739791522144624574464 8071648797905464552847225485524992 2999062047433532837552321445494784 -950994115372213052780893555258294272 6686125699760966791749673343254528 1619163182077345161156744383037440 -364883513000795350317650726612893696 9593516214894266823094353707139072 441473191190489873236111923347456 -978345692511974222731352821106475008 449878320945049636501143697752064 1074689730655521305379260235513856 -30278766679746537641787657625272320 8112809407540693028958087482966016 6968787883373865426055036963651584 -272867243624799474506833950094131200 154649814952881248035531586011136 5167761249251668857195778881355776 -508524597322065808588218352443326464 6505090113754872560939643497873408 9446467827047492517160991825330176 -155892111081435473127958933705588736 6523925653577082732549033164800000 2754448639754611049749252214358016 -532782135781362288875942073860096000 8841302443189783345527585436073984 8475702443496255634096595136413696 -762036601397233588225714410888364032 6869242856836048087839540265353216 6120148833657525272393321484910592 -603916472138299271924643749055954944 880279417786567867620101288099840 8453959492856853390714846008311808 -235285155251490728307883645234839552 5959890050647048006664531705069568 5847830255314996483627810354626560 -699342233495574149015100269390725120 1326485853885241396925142057091072 1977048152221167030045741240287232 -958043887278575203548398199628627968 821562834560194871805969786994688 7287402047115380150456380446212096 -712846086812378737872265115458338816 7174140789583503146185802666475520 4990224999266547550470368604979200 -913270372799888750414728550034702336 4664958467749589007876440159420416 4301520009786450683551016191787008 -607575574137861001039799260752642048 4197459247709299044525017002934272 5716197862350786124568628874444800 -418900247392399277064140794728808448 1288074967162418341021956310040576 7330929838744185856410696080687104 -81977172139862480776052658464096256 9158714232861275461583085800259584 3103264233431826061470119799816192 -789344805130844690051244541469523968 8745464439146361521345430491758592 3952173917985710937912906363174912 -171753709461443813174026025163554816 6303506102371537065603279443984384 5365885833166447839969752832278528 -704348489725298212326321466644627456 1665969050230688849508978575540224 3371641862525883157757165156958208 -422556082822787361260438679076208640 8021771380629691891181895003668480 8180904541292132110772937206792192 -733717275466793410420325306939211776 4606480654458347614425291136434176 451210849930004069214972620570624 -829556847588087281783031603371442176 8924091576036399713415968250134528 9530814008912451744260716996067328 -945447716737890450750297829866995712 565489140969210493498608089825280 6850795754174849167216646289358848 -637715199902058158590002929713807360 9856572272049580857881748603666432 5557770072727740520055662228537344 -453040363959173708898888785600708608 3476435252199267887573866628775936 4292873841260700859796214878568448 -687822634476551354068811848351744000 3286469283702041611048683143430144 8834459182507542647530069088534528 -676732189335363627589292355294855168 1595764689699936890569292821561344 8648394368269598142033630267965440 -280983991761704629858073013588590592 5521961667136485063402040793759744 6953806896469561000411299535912960 -398381333596420812292133530565083136 9540983803485317642966856718352384 5031950131701173532932835855302656 -636576522920532348405067239751942144 9431832496606874536017604370235392 1991629667949717755969982617878528 -731936840938185446017630064772907008 3833056999926369088414299103166464 1095629741615711314185720264916992 -496281496470817486009946926917615616 8599686609807460586662575185330176 5916120939313405610700994785574912 -533955007846070240237674647032692736 8747972613623278654998057419014144 1994315810113237597239251671449600 -516016634008274202357327423661408256 9600049506263492246553087042387968 4024412155189606606305485928792064 -534979948065540882451859799390814208 8488347517709577271309732025466880 8093412611560863983249207402168320 -248765585754768701097564817089101824 2531214895988669221252756943142912 8519583642095452854216652341903360 -60132131554478220971486264795594752 6784938285991647254958762780262400 1118059911157824100353211289829376 -239054086274132626572812702124605440 787230721384552339912591639838720 3966030650269280021221727656738816 -614403905874499077674263338679271424 8730666695839740586065353013985280 7958961316493090128903385796050944 -909639935217767427698458616416698368 986698814647823969641137782652928 3491068911007847011839523067789312 -32536275555917133830934559505514496 4941867080280696712391623054458880 3954790139510711316577769041690624 -914984422252019290318205682767101952 5753190297929670261411804925132800 1572841078516471437110521582583808 -589476887042859712695522258730352640 7416304447291362792889564358770688 5180667529902980187087897704267776 -37227329981617382544467153498669056 7320984392177675757596971190190080 8823512769971015771639396704452608 -641272628333781806458450466721234944 2868608508295242766577998229405696 2505175228098010874297329632935936 -697871125362489307271688890798309376 5290785604600318841257351062749184 1635676187233458863609204390756352 -907923725024675532341542565097504768 9968207738914589809223847628505088 1921119997050319998502719283265536 -984279889737774616105402604349030400 8456923347986517146076509785554944 8005304020606779555886850979659776 -608298131778159470264604623925936128 3845746870367126480324442017759232 5506277729981211472077395821854720 -271864555370206095582605304636899328 8884477437261872189249026879651840 5186267388884811869522955820072960 -251060517177993778918457792085884928 4933944344338893068254684249063424 6604211715986818673117757758767104 -873821729075431215795257607108689920 5104963482451126946113377093550080 1223279345580244169342114448015360 -769607332186235454044945450541252608 3232758872029546495460003090006016 7020758826760808646960232456519680 -776048291189441219477301896220246016 765697236309010724260680516501504 8336483848163309967695951175876608 -981984988674632846861431514406584320 2869134077302190470715921682923520 2629763012191992059753955829219328 -245463525899119458496043554711797760 3576434806579329370193466797064192 2298369618942110500139807570657280 -22510386127498177271572354111111168 9256542235325425497461784573902848 1733666815876212751952056078565376 -596988341882835623912701551813066752 7014790560146254327385141964439552 9496679346346468414012539927527424 -210876518203251003433950235546615808 995521429576307027810736366682112 3671100358046695094134142698258432 -834980735830179715267755552943374336 7648897339938223187946335941689344 3758391843743571118201629573120 -333317792156735445070045817360875520 6493266034660490007745844469563392 9299180787485425730210499112468480 -822944105147804728812557055320653824 485499051120702729024313214631936 6286433950232469597992236026429440 -462094153204520346312575148867190784 7933425497978591481611244695191552 2753746929853866457132994689761280 -971509887119877382168922247546273792 4371005676508323982571271618560000 6688232778976472185238284788563968 -958790047613670470124594249972318208 8797420665857030084327864692375552 2394915913716215286106037453586432 -897714886076501756293625137495801856 361940726851385120763964114862080 7980176051658877457736293186273280 -711194859745445097808084726878044160 1291906891631751096776071596474368 1789559948565468133972079930245120 -275343419130138607707516383069732864 4303008086821411218569555148275712 858373629104174110190635860361216 -573630442380046990666636037179047936 6071211635358648387983249212702720 7849704401825459271691921629642752 -460560119635567544122139086031945728 4677837633034993092224300565397504 138426069494367680570151718092800 -969084940679007904044756234611458048 3581084304521038689268130669133824 282398451981493369514430583275520 -336717734547280105308948814767325184 5423456039935396426199802912440320 5849476258142636879028892232318976 -282498975684648319172099617136312320 4053304906468680267064888312987648 2340105096147113729704960995622912 -22504824781153839804509271137189888 5229347598922265213610929135026176 4696896690428257443780651839913984 -159313088727563671609528089646727168 5526536118876761214958157414006784 6307898576887856964790920941666304 -107668129813293295610881771694981120 8245428978535106569245706506207232 3309989072171144851704553196748800 -810886885767948398355695397949669376 7327824369351873311919355742650368 3193722821368403336158275149234176 -894897674181055902922633645272334336 7427193383977172967560024936153088 9826427585674476343607520873414656 -790610480372691732816687189523955712 7331835053553967444079496495366144 2378465333446074273294221192462336 -749866933724812311813954637475610624 6623934866535562060947816965996544 169048387936071099380923845574656 -565794604653071780327921962887151616 8214491697251165770462183169196032 7817785095701930277925447756939264 -170564071632543627610474174585241600 177989130615631558791490053341184 4339727251857523074432832521633792 -661582268365183901557425254506168320 6091203064369156377053440031850496 2147681465906529573865079676338176 -725209327523155391634785416186429440 625069188398077960105113382027264 4591773429290649991542151588085760 -278048425949786693779640997864538112 8092754118295866356404313378521088 4893922742785616333083372874104832 -538428228503835526043024628555710464 8334197091240023229091034372767744 7995789739695604140503868452634624 -756322757223125750966887195705606144 4426318618014355614687229756047360 3961426904919172259014181103075328 -175209163293079267454625773552402432 7960909472110198514303076134813696 4532104240763386467118602539499520 -344467959500115000958690656834813952 7711766702061734406964457494282240 9111110242030282594530332067758080 -418792989018152517499708961579859968 9871464799390836139873789603217408 6067759218553631291657858014248960 -537766004790255428685728445886365696 7935619624535880828037367253172224 9080809309203562281745286929842176 -34857826736198293245728889652641792 7213105690017340192648307994001408 5404408765713268033424916635189248 -231691751923416426358373449268723712 830149051191393497097235605749760 993904729515737549490106881015808 -683525918070822990398510776618844160 3060639725569992302447089380491264 8577027883066902242071382386016256 -711667966548674398615345130492657664 8489590184067449758557674022109184 1150229343606430452533345445216256 -81787953863780283729903550602412032 9205441903338834474250610644353024 3691665606222463695918682070843392 -140954892996098862690110852049141760 6509602548919899783112749540704256 597934600938069749018258091016192 -562024408011131873927090507482136576 4243935651260930533969186078588928 9829495063743328594344712362524672 -467344346775488886801624594592563200 864862305430233406143475017056256 5364115543882368849300562611535872 -378369771527249475228992174892777472 5218939636118917880056620196560896 2801753948593275286262824302542848 -459701222395691103825095274692345856 4080060012287876852747841044480000 8541704961402522090922002912116736 -558349924562584251949956953578405888 9272484172188932693023924059897856 4487637519658490142729206228844544 -616859039368912278132583559908556800 5706692045765972426280620494159872 7021902085476406103653355341479936 -13791703578414443316724267049025536 6464086456681893055157443869278208 1603613526145982967669058428731392 -96104247391351344539226530119680000 5438745278422514589731674837221376 7347318215149982588746335197855744 -148132882471823722501844146631737344 6412097763364164663006621620764672 2346282192888351792492051532087296 -660132020821491599871897022236721152 5545839854656988650884924090351616 4284967937274661553503494482165760 -462094883624954926826992640284688384 3076699343484709719462132190281728 3560818125125443750316977030168576 -737666499784539412946175493213782016 2547060507614995367642231811866624 1366699049799339155325588384776192 -443010489495984705551657326228799488 1579555941851343223437440761987072 8687951278394526571653777665818624 -983781085594292132492892404990345216 9785069772474717001757885766565888 311760109985832907928565706653696 -496706285926353167076464671475105792 4073714998038900862457829258166272 8317268045415572396697098007871488 -144707463877733021783124880276848640 812231147995675709833512335966208 6051238841969634940913601365409792 -901037731536143598623214524254126080 1715841067114726324182018850553856 3666834791878193013590773284732928 -64905526199934590463396394909564928 2364446877540872049165042488180736 1306788368091994518695700701642752 -959286612035456885593472639466209280 5240153023476080734345552384229376 671109022850227005405598679302144 -939853272037913265782666550562521088 9586502565161080951967023894626304 9053175145972128088288374191816704 -368407231402868002770887161258442752 5062752385657228482735050158243840 1157281343823219791916929761935360 -565356852741644222787475822675492864 9735797217988559362588263575453696 2557377524050020705126122625433600 -262382310462176481293281568827113472 2460375237009409533455347186925568 8107350309259138088872039942193152 -738890704574260313031641602786852864 456813016137035503608224808960000 1546385987080174375988599034216448 -685834934033261629113986486636642304 1159485274806468827951314489049088 2162098419757057201733259243814912 -953214735215252547466539131935391744 6679941607774239434483196745482240 8223552785919068338798671079407616 -981468803977488198417792832026705920 9048874452916047174578520773885952 4073929867046908674439856374415360 -380505209059401066979902695715897344 6368886590947571280464418621620224 5149578518316662642774830456242176 -460294584994349022606111510997499904 4352360674933398370760841049931776 6012404385093397518107261962027008 -627951968058435705812184162226929664 199905600257454097377591895785472 4538510292252355637526818086453248 -432612611238190896223657366090940416 7125123081727025816152563901267968 6551915283802990369283681598570496 -142553366212323976621980519380287488 7224704208382849995284663639212032 9962497141924043031532776997257216 -10453258453346625163442603111219200 5228310185883750445380134689046528 2181715577176975855604031318654976 -165616609363257318588786545551998976 3872050672096089224580349747527680 7914365000736355469862591243747328 -354677383952743379533443051299012608 2063408543443539839163227212611584 2870713786897432403128381306044416 -143083763194744714581220245681209344 7154619450788877439184869343100928 720134218750224606371912892809216 -297090982803811806554024737631109120 2395508842830539298257106618023936 7357145559988919860775869277536256 -416725875556860533250717576517910528 901719468084312991963111674085376 2341693253202454020710882416263168 -510813407360015199984544391314276352 9850277798161868285564773558386688 3760236092443003175614431230951424 -685932750167715812658091233841774592 3035858146824115137171338775494656 6621491218410255503270113229930496 -64295378821967641746935951233384448 1942806282355626760816715920048128 8281989642097396394404121310920704 -623549066596454303493327589413486592 3134238334758262125339782630342656 4076451847934103108225573834457088 -63041236325357915109145374223237120 4204872118364710020244842657873920 8396404687351934482722725405130752 -481147141275841429969546929514741760 6954415567693580405365863522238464 8336050943254893290268874307010560 -571920733890151649498387920489283584 8773991441469030050258323616301056 7222193106505619021701666681389056 -586718266216129661321969711664070656 6325723413779145688988219177172992 6868076645848466429135262282940416 -26251455538786290991464412851732480 3471808198469444890228146302877696 5114855622365668822911672064671744 -608366039650999841614305245473538048 8762744623105144112741628684271616 9209355625262369894591616358809600 -277002028291502894199530767389818880 5232220298871630876232946078973952 1834974932297259347380421110267904 -94962135304347962740406123006787584 2263729014691566584480078093090816 7055436587242898461040126193565696 -632192144795591638564858578476204032 9398025953886393089121237258469376 1425601823942387143038170333970432 -98470023854133310850809318315393024 8054415837067370907059889113137152 8304353825364260012032976635297792 -475754125722151221132728397964771328 4598088893571438034539045451726848 5609658868657576343609755641577472 -629965148235410699086430002999197696 8204211384242995913695331904126976 3061128162920682959890731572920320 -987851074686258351362898906086113280 9823669286320693935363628562644992 6969721582881055155932490864001024 -914125929399999881235357181648306176 9534169524799146197551876233232384 232267696994272431963990952771584 -672739484725721059737715926871572480 9230741067197689613834157549420544 1214101278919351257073976587845632 -209720090475364447225776624835231744 8381581987004651131903695573221376 8387620614852763595751831560519680 -70289937269625857002517548912082944 6806856473363674464700853787820032 6691281197695056876650815748571136 -251741210248207477490732099377823744 9780548291197355844809788934324224 3381069711613774707807182519271424 -932524868388359437427169383122206720 1976714642745371053065612526878720 900772867932217076932123058765824 -101956736677302369641664404565000192 6528562003672766530414487577559040 7426718194221879069046409068019712 -78436386331475442431180730164838400 3790386209889958317200015341125632 8240554691992003921531493289033728 -809140040278270797184799012298948608 783573720429882999588360535670784 2992894400614724785835859167412224 -72242639213774742684532897749139456 7794308849296188731157765251137536 2523390671236993890546639555264512 -799009881777529181689592593053122560 7615282666407383381666124657590272 6952579176966827716145470223941632 -460475231761846528775459830054780928 8468167627342136351122363919630336 9137196123026260426893005118504960 -953656793428561143178658093083918336 1611684498621931744938409590784000 726672508305285162854724923293696 -794933216316175613360319955921272832 9273328850265775408524759612260352 4827684055312718913422905357369344 -540315649819715539408557779621773312 2343548158278449268634939679571968 97771034674531374345944957976576 -761516624897014707365951610034323456 1403871681907542746240124339617792 2992062606316521438222532160258048 -3366723109780778162032746709385216 9409659270659456584814422791290880 4487220257110393585159541192916992 -909983477091593750283053190988431360 3082979401548472069095406232928256 4263809073792611844087392617103360 -982137968747411936900324158271913984 6200820760487474402788657846026240 8175094599623742105409000346484736 -192899321553021020943849287921434624 6986503442180076494638530586214400 9233599989968679026976746020798464 -615287934430486807439002042284113920 9987732896905058397974222732263424 6116451432956608169300299381473280 -153665830066583650182207790091599872 8381292722650439608636769298284544 8429003959170129483522679649599488 -182632529785665746660265025255505920 1549901324621611170893488394862592 2717809767755098914306670431567872 -63926265203815349665257177049202688 3524383396680542583131210667524096 7531731160998222825533375208488960 -486661391012046097250778134333095936 9940422143180694046405125805703168 9171248719570032443417365875523584 -467471733938689582702306143049351168 8682402030447415315067703671128064 4539369439804358286580758614114304 -286209363023898687778545123341631488 1205023161849346811067319726374912 8440282475066010275507964785721344 -361461161004423410812785793221787648 4964643993080152746725100658622464 8363126235780403537472857892192256 -598828721435282644436683973795512320 7382015498548475508443251749158912 5412257011216106909871285416755200 -624821357022326995212020786906791936 6394082910099542205801258117234688 2551502776544586731011710333747200 -241184416238580064846679053900447744 9088039559488812753856983866540032 6529370027473337233257572612440064 -443303251943970156122579247864741888 9657055214808335925152304840310784 6149686439161738246389966141652992 -787668437857905159124015522886189056 5896384333961488560133244171845632 2460713477551247248679161280069632 -321731333742797714030718705024892928 7082618579007869784555379541147648 5840986156488431266533855499124736 -851226685436413744682254592381026304 9734029085425526585523568094740480 9629664280957655002365987475423232 -431171622988076900127349034316726272 7861111889145650799887055348301824 8411459796377824653890418563350528 -42919951653657057204976704804618240 909579831343138979433030440976384 205549899358991402102562836447232 -933077503070423894139465479976124416 915495959534277099594484933459968 180973316125902238343184210984960 -294672518585826284109711038199365632 1396365221469554128953296952492032 3847194768677465932356399667347456 -989718784021075307288079673621217280 7326050449609260027337789814079488 5251302956339693285894499743039488 -961675119691696527347515265650786304 1165243971451174759692328773877760 1842106393511148170838436470587392 -271193342570018527604419795800293376 1439097062559810162103338299031552 1306295390016772497780388193632256 -580186527065721160128986859008163840 691490942941000865405155760144384 7338910930122588983929579734302720 -248429406045448045668642207274369024 7605285850492523499290442369859584 3716721683495698293704574751473664 -357365184275048305727405977239552000 2656076182408489596144334504198144 1395467046399230222591631051194368 -245360029882672083010512161643429888 936129648506250062736802311045120 6657868966854887554635274504896512 -420256341333968922230316770304983040 4611747932700842652572214970286080 5672635585532386547105684139278336 -881079032658498587598569781648687104 1674731269617166859752365971472384 3100551140220403513963934916804608 -533481706591401244663815095655071744 1722334882817551118636176556163072 5476094977108562836902204617523200 -185157153449704600861074534812352512 7043099178169806433337704248770560 4174815147052878814878772662108160 -851728016373544796294940130224898048 3538534595659521644011734274408448 1198374263266846185891547546910720 -928677303068282297813240216083759104 3564564049209294610051129178849280 8118576992240538162689023823314944 -639340383971172093115829456247717888 6938869970450155224689299595198464 2655080411070646068378168551538688 -99831239933576549189745302906601472 5003941244074461892416388875681792 8612085663930019524172247734419456 -235497043375408863546893500980133888 6908080305525245831353982846500864 4641717818281750124378841637978112 -667481217584929048865457881227460608 7916172013365970629272191073517568 9873337357700654868624358372278272 -766218160685342517069068607049170944 562035529912136764085849139707904 6322008910950255541361360699916288 -98712660305853755224571271087915008 1534435079468670606685873912152064 1075938833599989510827504736141312 -988686499272212416080674126708080640 399683503172347796574229070086144 7469378082277235856502524500508672 -302220053218023496190414602865999872 9072579413129215919926262357819392 8032523770307945936530765317668864 -200904632294665417999460568131436544 4897696218173801785793771953192960 9215124335145010459688616914321408 -51473088552035871844691642817708032 9383015693290935435006430744150016 4216636442010878770685868658130944 -961510248330883689736556739788013568 4144152134117428597703030794616832 6150052539569260771283834255704064 -289071349361005760963107759895609344 6630102548691097175450372175560704 8173004625588622474290064558915584 -665427480787672142356837174681272320 2637407252278736174433029001838592 992705979799421493541951688933376 -910497024579203939665418554506739712 26029186430979001081108394672128 1943663480394359235382698334748672 -567748618687034550808701156034871296 8567569714935756617106944650379264 7583614811446465985532214594502656 -183273282870266864334766607827992576 1997739192719193002081868664799232 6250902250644398718991847154253824 -942947694711114591993870230971482112 7516172922520657631877042322538496 7929556770333031142728144540139520 -287085613827233784168370671663972352 659289705502000045507482369392640 4882216309405714056252622720991232 -825629473142173293803581959072382976 2967224684611749937468885371453440 1995788930979833666728991364481024 -626722695721120241709211827470073856 3878890652322700073199325887332352 3599952929521219766104036705566720 -67493911226018607193181837087211520 8811585285906652632178541186777088 6980613307224460888878476517441536 -170581321070263500875497357109624832 4389832615313866873266681468157952 1808644469611280121066447907586048 -668204684917060341997003751859159040 9128217840379719340674509575290880 6273496328156893293837041067360256 -684326531099184954263683822939799552 9963652771701570065133793966030848 7423462110552750515648585002909696 -726344390897937084747519767737270272 3194425998745824329062694801899520 215666014305894326876771425714176 -124067511570423945817633190083297280 3524926040187759744628615150567424 1147010152101466832380755456294912 -903417521387814585199146044900769792 7459433989624173362061444166713344 3803109702800691309880071270957056 -100388960873416267580172040484683776 4969100254104919297841529563906048 2111209300296434437587816549449728 -309116166461443401867288785618731008 2055378738340694021383079208157184 1036507602234093258423129715245056 -359180237289812699423320185541492736 1220680220078390534848281120342016 9006222954012971735835078683525120 -83858816652965562113232141065125888 8805533683687761375161322303389696 31863276227609304621109372518400 -759398026429515261100179303084064768 4302476788942702899099311219408896 2818991684991376463048209141334016 -886515438483320381874577813081686016 4587570599621881805786815385305088 7150993490406148349654277933760512 -674383713225765016274548280495439872 6568126702693539810321958789185536 5088919764703300087032462067105792 -825669923951776911672536248780587008 335526690673177117284289531084800 6631501653446297046455343332196352 -4433580339479595888186791376715776 3904796333736945733654799750004736 6460689320617405512904332915245056 -398379491522822618407404521918562304 644573329815981520378648246353920 2486725961006739093924065660895232 -558277041617985709855140076306038784 6389044508378280865601676929662976 8152950413980212146051399995621376 -842992285433263702766382400843808768 4777480114649399974597433613090816 4967973672340303731697831410401280 -11948917613167097139164949627535360 1647080870029791475027300684136448 9716711464301551177957377744830464 -5964404849805020958032268881821696 2368380199159092153979568509681664 6803408776863260030867809580875776 -800977387336359926521612134609059840 6557677960909133165973462105194496 4429669330713337796884480575668224 -727252008653619931281452080331489280 4633103838481828523951825124065280 682051875601677892296535418339328 -349531311152654763922523735715741696 9640149537275618836481903542927360 158618871268153987763182493499392 -619343202258385190849054427651768320 4893274502250646461849828837031936 2940165725139144301334426495746048 -607597572760748503953827788912328704 7102094268012680196088860908716032 6777083141940282503834380097552384 -779501554369644685638792430177222656 9624034828961881951936219401158656 4254491291783544765295852378914816 -762115075438387732404153835442929664 7964061565970966157604006211354624 3027690499108081442656239799500800 -828833016353404294331786836414824448 7771164588029960970332527319318528 1900122074300985220468118554411008 -582741494509445808909091863149936640 5653138823095405388403434558849024 7103967339039211598122805656289280 -306767159902864853935457555563151360 7496955914759426585824898190409728 8865529074831570088707848388214784 -291007227420544127778329726822645760 6976472946935631761978899451346944 3184903981141797943444507562344448 -554381570398350548074336422906036224 9047286206872770109917102449098752 2878398445200888849551954515329024 -745044646657365818774925814144172032 3513709918497735337273779132825600 4105167069069201754583390838849536 -15949252909346465497955140005527552 155493619548672543783422284267520 9532143954395171922367085123993600 -664174112726941671648029155350544384 3688267790070843340935251749765120 3045316233676351499317283318136832 -116833062626605723176980041575694336 155095107789495508586830334263296 9493051034244572266559916562448384 -386162393954220380853741013033811968 8416608216183316123940989633036288 620620324824697226614174191190016 -98816481119551437555544791344742400 3623879353386184468576167429931008 2680861629500792534768063617171456 -643359316370047595922302098575720448 308848712602375004713653597372416 7033751939837101244527450509017088 -90101393932226501512350622994661376 6071691281351162254432024978784256 7033003387498687302924856685756416 -258950573576298819976846328004083712 1398123018419450982956961779154944 7951389120033382091126427522957312 -77031375897979464150931565380108288 3220969176771178159820415816433664 939126157532070727742277612994560 -575193315337567479981181941825142784 4863180970307089045875146620928000 6027809878596603730643903492128768 -618626492731447742187702285718519808 860334350781335510889142864052224 58169956206304159137554266849280 -291028663854364694332526601846128640 9589249320835819803108874544742400 9165694310723278113288048858890240 -194048262595542584928912615497793536 9908819127789350506558853541265408 9364847981488726930148115223674880 -451763112871452876576510174967103488 4342240972573717094791640116101120 9954255912430838699029949006741504 -747637442111069730291118926555250688 1058542171999289971363814026772480 4397999667430078285896843039604736 -178337493512314598231588780776620032 2468979498318893050135561862381568 8903143547449713401891544444698624 -978562478572115070158626387061112832 1011782170000774185836017434492928 1140967517768411235773616542973952 -419269326815393174463965917549166592 2368534628131127395898764440895488 8680090697166486334007112338767872 -16088039407030297420765689884442624 9992639947855136051024558823571456 6335724372869252538559653151244288 -947539586107515941729006595010985984 8684572736509975308335915150082048 5831066096796183189176383694700544 -796595373758910615731753747453313024 2589642738338979704646103094788096 7049847155914555940152324892131328 -63359753158947184717236876578127872 5548021086674196094907685894356992 8330676631188084870647091115851776 -522229742844264163933567458912239616 2938929929702094101590143055953920 4512984032566902445371539146670080 -845103973669698527025311771885830144 1940446335099628056597934012104704 2663947361712847817395773194108928 -488726011874847926628191905983234048 1115478750503558178252228525031424 8423246221942001062981299410567168 -311287306388162550644946129328799744 3196214045669717154736020096286720 9014578148163328516519528973205504 -601245822038118484300580790082732032 3008588641098819090580152690671616 5886841126309652219437941077835776 -282222696373849903644130313154592768 2444900519821079741315754846322688 3793113049599637350410920247951360 -380345559517253267778297717038514176 4464513817503524145231558422298624 2934833071639273939443297967669248 -295222257661547319689033119084576768 2107834631414922875927968513785856 2156682978706289062008718931001344 -162520608228346183471351512573149184 2865228615549656040262578137464832 7039007213886834508801828108369920 -507408309246310692696796541250174976 2587027881488868023717856423182336 5015819543139224472633384777023488 -502440466835956537381266712424349696 891481779164482554531158851321856 8554162946642822682135939956867072 -811924729713020260988765112367054848 3019874424016594482522620113715200 9666412549262087805878303566331904 -118067083844152497495028323028303872 3853523709284304636672157107093504 9437075138579710552505749289828352 -886519756900299446356113246792974336 5240443930386414578802330976649216 3642739943893605740077409265254400 -272912269868187353976225462956851200 5579793586955313462226531735568384 2630449954817669613099905800208384 -568109648770400882871090314808918016 9664546963226662948135278452146176 8700448954218027018370188402753536 -466233916168184992730015622733234176 8869705180578890277753542387171328 9571577744688013145307473713823744 -640118069669696842192888168437514240 5442996656049505672084400235347968 5783996163873791765616548229677056 -710412982605872428531151748158455808 1233068505701798055009645330694144 4283757895581044060554573494878208 -841315129619471168309181233517035520 2362890982937230860120197137694720 9356777133337443142241858504097792 -26241536525485025187450457648267264 5669242431377550691812307747471360 7147225587280742448580594329714688 -741502695825280557866606753048690688 4439166788825987027930762545463296 4643154162151605790635914631839744 -761215725399032155861213566910595072 3421092528941985146704627853426688 3862750076702304568246523238809600 -945685980022093355039497420294586368 9493422932593113798261241209159680 6509979958170989409351905012875264 -934512440780650406560767405545488384 2374781252462225614902953057976320 6285270841568657997007464171569152 -610911727406025347417605405847584768 4566413699466954929136977760485376 7446095944665290619635549381591040 -537288758536509411630439920981508096 5190169473484753319026763149344768 4444900043341021890369368069505024 -710131957640045555853549087521505280 139517757758668136963378929205248 4250307019509773423636900632068096 -378358563579262521287014452165607424 3819642301546661955291363804184576 225469631692953743931942289539072 -76408695757241408121005728767934464 5203824931306204228903084473974784 2982285933872537778523123761545216 -259996343559882946237034271598444544 9813894789068219617092543182798848 3820057278392434246274532140646400 -144931054358260140511588584945352704 1406406698525748006754561648754688 2872313071612066709523964417277952 -7330693531662222159824484793581568 3513702620795724432306402217689088 2908026865039735354644185267306496 -310897285710101777278918505042804736 9065043863236756419195317015019520 1722030625510031083315568608018432 -1069940867739232859456788502675456 4433717485813153191599895094493184 1300344266971745738809538636677120 -76670309469319145392674936830558208 9524517180253155937421356890587136 2075189115811291508249821597138944 -213494965152147258177938686209949696 8476735831579367024048319894650880 3646675551214149246787303531085824 -407493573294774088808822477066076160 5967264408105048438300066984230912 9037579758972043642357752302403584 -266843229153904322800888701243097088 6878525255599181726205165420150784 4081437082746112778682313146892288 -603890064162859965379119639221501952 9508706311778976886200753524310016 1947069185191197984217278548279296 -360070771689007946193730219995561984 8037418246040728097319124616609792 9384662566547215847375709384212480 -470961289462862693582496072720187392 5430781625361137157693285385371648 1771295647458699055918050367766528 -947419687314620156417466972906717184 5820168301287137601358236563275776 154049238133641958440844044271616 -693932310486914894648971778982936576 245680668486535263242741457354752 8273707188527469556010608423337984 -725792607017155312545659052525355008 81789818590961017547586346680320 9646378450065072817783902226612224 -407227171902099567453380330500653056 5092794342492874465696642462908416 259600335320374974027110130122752 -4667091678507390774868671239028736 6247671297491176426869340489383936 5008897541384371561809469232906240 -27756478888055752232356419907616768 7131954219996665763046870443098112 4334906379424787397291869799972864 -877745971903188881186654469736103936 5937932573293516614379844159930368 2431423330538555109604007482490880 -56123234104804653528474064632414208 8746617786273981041421056168951808 6745846913148418007901716971782144 -635963834948879126820210159822831616 4416203514687024153222368351748096 7496625286585773122090937457049600 -441078647226420167165615985842454528 2136306964014934542641507793371136 1574996275856598968357716884455424 -566297450411479084233112270481129472 4889379150433008787517151039717376 3034790513043505736154922073718784 -599249325579657255432154489718571008 9716622530410929141644237553532928 7647536281761891937965728929415168 -478490445513740039872266284954550272 7788411973849242992311082546102272 1635506974120091206305555494731776 -956192074196486546251654701030309888 1096768072818932519228156820848640 4342400232361166177366466747170816 -719598557792136971928653565762994176 405467407111245819845106485690368 7289858245882690178136040307425280 -292689598457918881720170048892436480 6092490807888110095596335193391104 8062390462783263942418412702007296 -291775437598926200372209244979593216 2548532753552323736201779042320384 3868448245771315401819425471463424 -186276662089313075646126371060580352 7322234560392921029941106686558208 954096488052237709942255932932096 -359772162667925055394808603776909312 6975327261326782267295425378648064 4187845942891282065967084776456192 -569158992180359942722215918472003584 2813203885078349727773344214810624 8072251476190344106676795723481088 -578558497535595717395203968563412992 7442692528623187702301800544600064 4613030831590532178024182518382592 -228669103301657817031689976164646912 9923049026399388128886500238557184 4233065161459303431158440883388416 -540012783567015579782021495641866240 4258464193474153547449568384253952 3827382097795518109218037626306560 -164895753325524476639268977596432384 5876053322705346699270704141959168 5546110891700431698251949776306176 -454463960455335494478558311791722496 7338349127515730719543688643477504 6081509747448186307594263961010176 -998064354117199140467425006002896896 6027192434484870086057549054869504 3652258942056969947195394893021184 -372419254180550895249077159432552448 1125058224039624900522899786432512 2231858281101552509571014082953216 -355033269962852143421891500157435904 9027150804171418186497447098843136 1042461153776573121743339072258048 -394352889637044781273102886272761856 1954841306856186484138862081736704 5047305536043610146411387094564864 -806622228544509253641919282334924800 7684071558449917435824881434361856 6261207889166600293037571462660096 -721327152606816645483919905264762880 729295843295611939732192248201216 5284429140316849707600454340313088 -690013180441940399813046422762160128 6731006396853504965119268217683968 7301562909329392426578004416659456 -21113219381900134557114125304987648 8588961903467234210950802258788352 2017483217045373229144251352219648 -452751681621542601990296039258587136 1262956137971396844386656058343424 447708362434679853136973068763136 -156727315300814019667330727474626560 3610824074834687659385080600592384 9252479824063051932211856426401792 -134008594255992076442372388505518080 560954370654896476283011537567744 5831631752487405943574066087591936 -87044749123672691132914062183104512 8664394111068046948247951607070720 3342255474607333103085183825870848 -796378146500423132086667447436836864 5049507288782934961453788381052928 8980318738627189527154243594616832 -100633862801708880360435831766253568 5654779953666073968313967354839040 5730720302718251825245150467063808 -372694947377022659678163057378328576 5357332003311612585426717146873856 1787188087708842757706683863007232 -108506336989957157430845757865328640 6096552041764691467124318507368448 5674035915219758851805059410296832 -793279544501271764411499523596091392 9764950150272201404685162060447744 4976085112183546579388714729865216 -52754838547877943164328918164439040 852079181395951023612988198223872 9196014008152771597516391231520768 -675172355680422477144694260244676608 6167494744949586491521353954361344 4083407449187841096263954566479872 -582821536277215611317163377421189120 9571417958369999595862093432094720 520954824921460252417807158870016 -424249171539538537369362131473924096 2128799544160368558270234436304896 1462284862836986322520172191023104 -72204261739698775267848814822686720 1749846498845626981439058546262016 5337556465690123307687209206808576 -104751140708950854895046057026125824 7801160640321637972811057125654528 4007285913509650689627523255369728 -648424232523999813562187276651331584 7168424681690407121035396602920960 7071698482082067145116716191711232 -868775711971233294743837261535641600 8102576438925464965788105500000256 6974429345667227991872039053950976 -645141102703643222434831756989300736 3570395808809633503170382159413248 4762166746504508874096975577874432 -718476819251118635945705039709863936 4204768443222524762513434327646208 2823252494070334140417358367293440 -94996534194060387321787319974887424 7881171479622916722463452583428096 5895487382375123562491706727202816 -569288142596683750732647466195222528 5912914234037798691542251622891520 87505270972215405550963764756480 -341858956331274459848625049743392768 2401545364556400523921679492055040 5112315510864666738954040810405888 -717891129814178783383396786777358336 1090621995126757276307969582039040 9691813839351556295738563208675328 -756441194405020585081865071646212096 5688797475525259878802458601848832 3437800048150207066170717588422656 -526818774674680018052084909752713216 7164114703029900447331881362391040 4604382708894897675010634816684032 -194697265296162065251413233831510016 7268006304196677732645598453039104 9912335767041244484548782177910784 -353972673979589534769383184298672128 8202919927382394833873985788182528 8790247670400868768963041414873088 -877673976410103219051605400563482624 2795490681043722470172987955871744 7141253323338484879136275673645056 -56609866323124179178967769320259584 556203698190126689598026779983872 8632373053292103953302382681522176 -680512516627544844818625328331096064 9235066798729330179631753696641024 2289412053464024036536525900480512 -39389955910298242558946037121155072 4415833739326998659357999926083584 4654438680143867469557472885211136 -492701064038917207379396159648825344 8836035691477851044868958342610944 1891978313698223955092361495707648 -538151859332531872224196906463526912 1542483709086307528033928143175680 9667541763679517059463485421780992 -636559426068943068059347883430772736 6663934117521500582282332305620992 8895145165050040668271461162549248 -544108926682559185569111246400126976 7472313557115474618073754567180288 2762513571745036277156636526641152 -905365761683944189980750452157841408 2657625556094212365758604494503936 501066398675032867704055355408384 -610139115384982160060832546413346816 2888839787929709546664675365617664 9287069081936337452556204789202944 -114364451102426413417057287214727168 2735711032388975456334029640433664 5727388081397421966426491936833536 -378409646492424882134191998804951040 5464802312508527234626244856250368 3935334773177483560989046050127872 -983751132707361946800012174378926080 6549418032830003641509642867048448 9251318562110723956085001170190336 -371701309089462704295976210742116352 3448464992937391897615029705375744 7602358625063844346012526870265856 -482421072728789728094679300610981888 867425829716938485343518246043648 7987756135315591517311630300938240 -238585269517675116555942078518919168 4004369992267926150536739900358656 1320527235087667576760153719963648 -50334071737894641470615810505441280 8732422477259521591941762954297344 2504533003473273683587236385259520 -401040911469763832259726670655651840 8788340743517095953072943490138112 9694668080207086285775250724487168 -922752553762549023611974441662152704 9566913025062344005863676282142720 8443255037066539138097608419966976 -902594041300169200214498255671656448 1841281287501282517411499757010944 897827189514530713159506291851264 -927107156587017577637689065797058560 7524040649498341350875139384803328 5405843959825037398977409353515008 -835082422283247391631124019221102592 3469243720870989032536840278638592 4154127224296676481084278028894208 -184088255859892536289185480210120704 3300574151355861921060921286852608 5806559922343034571390330983153664 -9695757209122583397583582744543232 970458819019515165520614008029184 7345041411552611542566479142584320 -193490547945849679623920124484911104 7043572570364197292748931032154112 5490241489515468258136415145033728 -224766942522469409687774369910095872 7447355734674013149998499921657856 5069542600702469782516979789201408 -808598846330802955422491265934032896 2248408335030813073655441622302720 4126139207394986656121306031849472 -960673182252658123603431285854306304 2914972221272472521447467420483584 4473741781379476800693831731249152 -413455869363485228433596755088506880 6744481546030621726443740027944960 4407379763814304858553110254059520 -636802637899896160429346569062449152 7266392694250228017161870262665216 5168862066511412640792776194129920 -909702274539308626366135452366274560 830455827588501882708323505012736 6773355571096066608067795820216320 -96154861971287074825713890422161408 1183000808141299965928309262385152 7863853563751442315329880511741952 -345326360646429659362923362146844672 4801344833552878682216200134459392 6910923733387653999601980509519872 -200705644366209404466939580303540224 693535944221025584181495826743296 8689320461655755322868366319812608 -40572972265026104434393644517031936 8767964292887314662734496142458880 6007320594597290859161576628289536 -89814376546930992450409908798488576 1595649810120173156287963790835712 8276059452741824695020580377722880 -382128194967191881796159998391222272 8290694526824085763061527540137984 1028155476674977944957715868549120 -524512216185181699996648442846773248 9521994639102869166840556474597376 6092283007851463321418113864433664 -932510714223501549566194112012484608 289294201090054819545809487396864 2011633839547937629754203645673472 -49805721405733894267255064293801984 5149807646539641343127210485088256 7766199236898693314091966282072064 -315662383659151711313967124750270464 4880037125202939399380754816303104 1659730534118223332085378492399616 -584351393280225754375280422476054528 3364386325115742478370784302596096 5527431595277425760239042839969792 -610914839704128444157639416357060608 4444440477475587289732344969166848 1139921620484854206539665965580288 -374408336949171037338431967251660800 1239727960919062435950162463424512 5399638487448989423631425685422080 -605765562900232054915046589295755264 3013712047004043507263754001711104 1193241138871184117806708624982016 -878723450631068195694674684655173632 5565332294338654713904882977341440 5319926551161665696070045412622336 -695938275100304375375576854704422912 6739045446119217703367031207755776 160863727080001548318651117993984 -225108101138623414200465370306838528 862749742939883937636952318148608 9196024322243031963148130474524672 -32016891765107653819479280718970880 5267916852032809117408306137137152 4029384616733786645886119645806592 -268484051223613895020541768747712512 3019063042982110333831864316329984 5593596129948621129365359998009344 -1896764660093222537148820059324416 4988081916629994412410884004511744 1977109438110490765350886189301760 -127704809398537959019079689931063296 3765425283520526445622186335010816 4505914684625224529946025765371904 -251846251446014340058713852412428288 2106175555915343380537877167341568 5378952864208962573549853120397312 -916813478225514670121613948801253376 8507403308461061837692463854125056 7459807260356629084723755469504512 -318552867867270985493515227870789632 354133008627860624764339734183936 463268986363942640770846619074560 -328632417308092114980870654565285888 3562703117461627894082658889629696 1025064690226409450276034076213248 -370089072761394647156855238819840000 5963363296735534420085626386776064 2009765212548974747851309356941312 -907632006304732468744742590899814400 967918630740228764517911819714560 7395342561695604494041494545498112 -87981788547174402403282308414046208 2492560971830805056385939878707200 1671077639710264200014864060514304 -315247753833936958487050170052640768 5943561322231066904984597343240192 3860894190686853513504967077396480 -823419486172824332263886402655092736 8565644663543000433795106892414976 9052053080356755033890463355502592 -759509184567650509395051123375603712 2531867001817651859768064052559872 2722721448417640957489283770351616 -965050735096896586062460827526496256 5039880275855803583656077559857152 6478915139206881216575395185295360 -697050289384397169218820811331207168 6280510963330159773440103961067520 8403892206659493364994051227516928 -300092993962761108374267043688480768 9193654925220588627515632124952576 3159959932826297701169832891777024 -873542320601548149319505780582383616 4949550710098317976716366539915264 9281912811874768522197920649314304 -189940083420661849867169606680969216 5238421362556836817773219916283904 8467585271728841182619808967950336 -798136493460446667950221360317333504 1681120568981068583082085251547136 1253262589267362892891376893034496 -251924523060642021125600092002189312 1011615841241964497802949243699200 7158420661718083865123732607467520 -894731215308379171668828736880377856 2336770097930125658979858867290112 4991872498802765396813274670956544 -719833479521766438543133096575762432 9658700993561936058244209286578176 7523565068298588779987659606982656 -586695053194343896097551493671944192 8969439977893120629322240931921920 452246843038225199145855546818560 -961917081998201080473728122120830976 9978090907890885613619232559333376 3359781149073901209478453423767552 -731276815080992130489229633313046528 7279591418357809136195570470223872 8812881380188744460047663654502400 -137649584206389135077766500590813184 955698537453378780440173203161088 2251507042408917045327100395913216 -313656304024669850635231086914830336 4803713513703248617358010527776768 1493249455933172771365032942370816 -221940021855075951005980502307897344 2576222902030720886226501056331776 6633261708470811409337011845201920 -210474018132954091659102271228084224 9221926075398832765209512230518784 4307661737095605658347488558448640 -216731323271365537868936671651692544 36431916213014813408578745925632 5354067489048650184858448240312320 -744134951891339894269121520920952832 8912791489409689369731041738096640 4910390827389627273863099351826432 -137371265610545208759150856323989504 2730661955813110230217535321538560 6482731475123084907773148304244736 -754341249475695883982076654584332288 2609692228038587024609352433532928 2794627792522372331430754950053888 -236595419838649976992003824398893056 3516195892911469885113536457211904 425570294054956823937688008654848 -516226995195817837633041012367556608 3478032899014394089320009546334208 9920969994338663184391485532405760 -878693452813885151048692286764351488 4738026052283770782902842122305536 9368857033896138393330494350557184 -332131265550870634026497362924404736 7615020081480652332972220589539328 2793845246188200769482488138432512 -179817007682623721454907745867137024 7382997217879123898725225264578560 7323354077842790351282163480002560 -621587091863625219502338414240333824 2719475381038860475859225639124992 5513546074391709652264411576926208 -1824948438405469735416807093698560 8266124383230004458877538399158272 2489947338464651995947445512044544 -427178891388230971111378449531404288 9204171145332210557107938091073536 4960090194095686466388721674485760 -271722876331122475117105086969413632 27664367108260704711876368400384 9517483973871040243673979565375488 -478962676210422770648871024753377280 8129544527203830703616703965691904 4614192248547641448524326845284352 -462788900758800487509231189098496000 2976583254759112174719121993236480 6908461643034778010144221211656192 -225955432962784283564868630881501184 9851017094127761553052633743228928 5783447948103796205403932878438400 -897964936218063176765994140556066816 7019256352372362170003325383081984 5823285698093927746792240277618688 -777127191218236540182644574035902464 7763428809027485871994690204598272 5656105252570062939022032065527808 -885381249369885783298229895069433856 4928630877566368549347902279909376 4149581065308099192333612355682304 -471991653767264985041445190815973376 3792631903846132162262976402817024 1062276039687385321288488915566592 -962957339561028311501206263833821184 1165967709544056420555526026297344 9187816388343976131245620401799168 -133484863677996345880270372425695232 9996080048853628438947757413105664 9637899302594916222020657531060224 -484861966337851023472586260773601280 2811122680878528736146598077136896 9658813819222443010854846608703488 -781644002278847796920192715758501888 2203277074070570713348258173812736 590695404289860038616901050433536 -259191237143414858526030412348653568 6360547114331617870323442486607872 9370879251722812286286522214252544 -983660441200920093931730275231858688 8369921402913312967050306443542528 2473128516328007563198719726714880 -402459113936141123758321380609753088 9528341530743443934077174880927744 6414006140858349367761864717500416 -183320336588538289464454215207223296 1155068122578934093997796833099776 6272841499082960136672061270523904 -446182856531491992598451891845726208 2388638058471666153305817925812224 446871955290274104798594442723328 -733257297200688665416863824973135872 3367128635996735225119002066944 1330772894087614221052799113756672 -489802707307497160975393733910462464 3222052334692269856385085386784768 5726614452194305133349709348339712 -348006915045065653751859195724955648 7068131293155687080680449600651264 6091128599953691391989643298734080 -794203951481210849344832543882477568 4506746738334196355576127742279680 6861583464134605426570231107551232 -733756411731511573307337898612228096 6032267622516095939114978913550336 8220696733688784092533169110122496 -647126056901516989409383233255112704 1021745719553390221144745761046528 7317240064551779927593735432437760 -925433455808627575619790572894552064 5736354792737214755447085868253184 8326446692258234298558422760554496 -278782249658490466175002446252736512 3562574256548128047805717863727104 572951830613184811545103360327680 -145213455824465977291619367252918272 3387730721847438881832271102345216 9776666246887136320296260273700864 -151879144721697386347198996295974912 2875276268177476380118737907351552 255196292549721801320415518261248 -693925075298340334881472833988329472 2173490762171575100101775323037696 4418689132993028820856611608199168 -254039870909141100908005814073032704 6252375288627883162267392359268352 6860272771396076765087506311938048 -923875233735487109457431678215520256 8092444007791920428157914360840192 5988530922534108503814128567058432 -274506840255580295858824592264003584 274470031661895947634647939153920 1248944110943764412887844981309440 -948032779834390187705685834630955008 3899176244123880886766319446261760 318700035146719843737258688512000 -261047890041307841888971111249477632 1276820293885841879578640790847488 275606378015116961041677895598080 -29231152167492707265611091215908864 4223737762313372157966993118461952 5622388957816295521372232614936576 -31966947800248420920240143224274944 4983188467934833332286326468247552 2661250279179130752981889775042560 -590957884904230395295066966798106624 7070386050090455336716152283856896 9953585100306905951790032303947776 -939836299402247378452081661580410880 8024498533557334204705514517954560 552542874987199732075881549529088 -642219964328497729398024285003448320 1270802980410204360170715100479488 8454197335659722979749952695042048 -658928288793351388063705640732721152 6101271273055824033019093732818944 1441839186917880818565329648091136 -393926720776445917679843687675199488 5070016591549094488727478654205952 9083245582848572032143473982308352 -763356070222496661056747416036835328 492310704863085259646240267698176 9212991251932542611356138201939968 -746935461053154800119042994870419456 3204706032424548478553914857226240 4734272179642680138428417268776960 -328100120131654760121347262291902464 314142225020698123627706659635200 4409538539409973956582066769362944 -634623473938813294940985396060749824 7172480572034861113933244783394816 4629536050903212306873277237690368 -840458722218077057830212040908603392 1667534789253633457446788439998464 4715116562176758281942647074455552 -484202183697425476896027426632499200 4200289087130644162816670693326848 6116255408382068690145034731782144 -938150885227218070408153247638355968 5021758226053062398530075737718784 5369927283111660740845383949746176 -693000362376008052580876513452228608 3228426071526546621240858065764352 9201824040413298145858140925591552 -715709066106741054329712285138812928 930997023013448009657033240346624 6903263717458685469273378602876928 -695621640215746449624081782896852992 6099426864702572014661787065516032 2624428089856061942699347557744640 -873244288339701450108690920372174848 4956032701188452584549030838665216 1346732037485080203640380114075648 -797019442454038107846934501659770880 543332785366698534259022121402368 4960450763681984243946655026511872 -505500366403522064442698802235703296 1997815333423307025338542413840384 3994641539302139670864314276773888 -331866467620233543003809673291759616 9532729430802702582255983695757312 9099411910764187871838868032454656 -450463600928960105781845024856604672 430286539637955729775137268957184 7768008656502882705772308756168704 -953362835291858349318899781670535168 1697652068567745885597096074018816 1370045591695371936074236780609536 -47921882261447114750923341893206016 9550143602842100223547836630827008 1724376046431266657305108894711808 -296217507225972027301155315052969984 485682919550111785711987805126656 3982082275132790707820630068166656 -262752691544826201664899750675087360 3968147144070486921842993670389760 2487202383403229766434951685734400 -321157114180793466490294924774211584 5925516707133869415363304834990080 7486074545947834869889927886143488 -171711752270846311218526883263021056 8426246134143917662097221888245760 5052400119614159668504649130835968 -119041892547342944573649359900508160 3211884012252692268664510702682112 5808005949366598952765103670296576 -701431003757262033529251219233570816 6398123350029384781784144699981824 5685529757584950072403275435474944 -411530842249401093578600742559678464 7587195542715742384926641535057920 9538751555175079307134069211398144 -970646630367844455030310002006949888 6051723278940210207112928413351936 401147795895824253523318571794432 -462646258817608705147559292967059456 1287555628982503120366134011887616 7181947410251932411286798393671680 -208587408978251122764706202699956224 546978099847194038566467705765888 5650482505728894111814304302891008 -295233817862183799756270037651947520 9248188207799418952444179212402688 6714465957008695012907780466016256 -298165080742100460608116224035913728 747370392096430267565719787929600 8223648507847403054013908401520640 -4757351806888524411314547762135040 3756493953822467327705191557365760 5513863333697712932619586220589056 -802067886671093225448912942385856512 1187505141192520498653257642541056 1573184529108532811633106211569664 -159471821372923668727165286992576512 4821104584570704468554840952274944 8528543815651064441765910867345408 -703752760894208828554970723325575168 66385548571713794795866565902336 4368731488697503841792139219435520 -507418569167295225425503750711148544 3246202857914259227101937451139072 302415261761438376714760148221952 -647150078554340479031613955128688640 4504787091241037140205010237259776 5072362694005673806348228600266752 -540282601964859005216028309281832960 7898851257633903901507213307412480 5044052617662685182997278949900288 -900780474271278517300330609833410560 5909008429991385598009819378221056 7158786243304069433984050782011392 -663634087638247442925377524298940416 9382340558411682980398204920528896 5469874958479072484455490026209280 -31714184998557328625484227349053440 8357446218848077352653041623367680 928948174909874660229074911232000 -773761089668348718363920064581730304 5997223546709681491339557482790912 4144277490501259485213758788206592 -612649806020870471640285122461171712 1499110882117338243224999183777792 443062068170316642856530773803008 -855623079370247637842431896289542144 5978513002506959263416474224558080 9524767948276224886791523566354432 -780705511369567125877349104786341888 4396120144554886279446706685739008 2377757230004489256676698185793536 -587812947331884710246993169418813440 4887326790090739689061916346417152 2071950438174870558387348113981440 -681373046614474375592291162128384000 6809208238675169300475379739262976 2505763679452236190549809819549696 -996322239407444108189308222133239808 6875995949382272800277715700678656 8169847135992731842924623337357312 -363874251427485387393978705857478656 2033879199714528200837312957906944 3196338550095370000180874999496704 -827472098851139570480696701464084480 5294239057600199783440080303030272 6126237182193039762941883984117760 -395224401685370466638218500774035456 1654629705906789821153213780328448 8800300335028376900121586007277568 -734096647625926525618144604049113088 9737944875082173175195828555350016 2728561093610786679545351966294016 -454933453346884635480849083699036160 5365271572813382642573199504572416 2913430007150243873850302230691840 -710684224889418924385845414555811840 9929772753214107239058508882116608 194465271235282005646829324075008 -593294904024123107385051502761476096 5656182262098617786385338950746112 2572068273369685311522438591283200 -649096093089071591260694690410790912 5619816005130039447295366359154688 5361506851842443689984744170192896 -331045883138931874300041079384178688 2141888640179963253700652255150080 7164841630986275702826182140493824 -299095753878618982603485030700285952 2313851982231155872458296396873728 5695415632939932172255692249366528 -846878297387865435445289901138903040 5225397390092875037755354774503424 8324700328476569247032763582775296 -793117855979014368024807981963018240 2559323063880577896894713156337664 126057455687314657156590473314304 -189266949421464963496507786521477120 3967012796381117605428171833868288 7750663514754687280857809193795584 -607384180550648193311936131431923712 3537213343233817085389177545031680 9824430495311297147012475732885504 -916208221273879283556213132198150144 5338052317358464654467328259391488 7736876328531442922741795018244096 -681083036702051659193589225087827968 507255516475297648132273310007296 8785833112437006644792382562762752 -555618657443484441012464863670173696 2401331319878867166831170121891840 2452617624812920228800740622073856 -406239100320639309258948039185268736 4311034425783730164048431549513728 2736058147172099571154271585959936 -662880033309662844517111593697280000 759212716972048892054078035591168 2021474993849565207983043693772800 -327931017149424781935762644137934848 8615840887432146784565734770999296 9901484929137293928651043329015808 -999395399398207866960001675808473088 2828839711818026962794152131035136 1830430504852739424092847748415488 -314990665715248092238914742831284224 8934277521029685918104740570333184 6839325848073510385052547391946752 -124590727039741006519578801622482944 6651107741514739559508370626969600 5497280892992087412519859713474560 -898428631141583173236361195862097920 1491642512752183463256146724257792 1089264337074107657334901627158528 -601296194316094721407484022631694336 4756345824472580366261919296782336 1422690475709509753521191700660224 -620498060879652323874797040982556672 737619872549364200835848779857920 7954695701174008039065241172049920 -823502221890542919754593658678018048 9837235168553536117886697881993216 2898180252038553850160009646702592 -869646574264798883076807329438498816 219464479019059530466529080508416 3385081172599961325504124826943488 -686518204202715107485274339597615104 1884174469925951172515552456343552 3569763658783064852873357121552384 -827036012662179050466491956245561344 5868360098721951187640748653674496 540552470186418551360190742003712 -361055808107900271057075866964066304 7293879701636347869019576379375616 4573598069783526713643375955804160 -322506475317496962399776570853031936 1785111712876224964065054284578816 5394187012297058963708074499506176 -974506189256494612656306227804897280 8851790823354396541787189014429696 6946857504519977920813095486226432 -349539007934696575934491473530060800 2567197821440476532006408452833280 3822945609940682105924127136153600 -299401262395672455413114762231283712 3060680361755918307907583673892864 7879799137178308087554569666560000 -351729561105040673642929616651812864 7057781037986119033345762880651264 5674070441850904068849955403464704 -146625926723255100097150316496027648 8672232277316105373583849268707328 799751335666187500895989015773184 -833848541841669540249934497555939328 8330313197165906208962245222727680 3920002847637596769313708165824512 -28019716762227707723412952924028928 3436830547929119676259188370046976 4903915004162093346630583325818880 -218377544585938805715532629848096768 3768039484858797047849758155079680 2387038895029283253746361517998080 -600958087422554124807371737901563904 219854002973723261663019102371840 4744862930186610420880807527710720 -769970065557107221068189605493211136 1243537917108278361424956227584000 3905424004399215342270167577001984 -887720717538019740726929521924636672 7663594943312445858653669660033024 111008687999271282139622828670976 -781807122196699579785471856671195136 6826645324597407904391941735841792 8105282346549887267582136954126336 -859358041966429504833472858872086528 1912951535765252077768945556258816 1316637840872442978996752891248640 -296381292238884915701093721345884160 4784043735823317972261173406466048 5607054399623593889333906421841920 -755704082047082633374958293933359104 497355610636000075507815631814656 1194443973454926384074937075761152 -878627655231738216388132785868505088 6375098476783134891457890949791744 35763185636042462035306860249088 -525664107584585418972129746959204352 4570834360880771253130051738140672 3814897578975279607836097290174464 -408506425929571813190073369386549248 8244146073540593337504317300539392 4072898890594988039142295598006272 -782270356906755904496728289725906944 390306753260597035166174988468224 7321456267744809054503756028182528 -133442401183423014338737885868457984 4933818723887681215569026072182784 2970482212786465520520928344145920 -328408920523145578902614166250455040 8674859618791372833262122230087680 677256947253885873183702516760576 -494321992866289886602455365258838016 5472229820009514248120852751056896 848222935323132016261818138755072 -583825297079670920989541591618158592 4102984919076972900698468384768000 6974490840368524941542651194245120 -601677040346003225929282090078044160 8320316301420349435820840792883200 8322721373383811917150044360278016 -127654478985870805312727705232343040 401677428247321313515331190259712 1755184062991610957055301433425920 -619191330468889803661433719742267392 4791701386219267074619813381799936 2440976560585567840042516595343360 -221382828604208491753090514981748736 4249581436309607619007726558904320 4226634079203800966577981711450112 -436272474018270329962711517163945984 2400516930165159050700422645809152 7330311923357300107449269412167680 -543180062194611939349695307284742144 8779657093332185791011530022584320 3021374314902807281332818695684096 -157507715649344304820169902018002944 8660266794219258464757107314917376 9203094626548876257204507452112896 -590555936287905900268569918571544576 5334958073926606143955200032899072 180711087306900889710809116049408 -7496276297792752317855203560783872 1747575167761660790410587280506880 1360597826642420568093273675005952 -81826578854894825968203356625174528 3715559293308159862532806782484480 6309700328868450895407433243426816 -103274246417998796856573060181917696 1095371143255244727840082124341248 6762505314978084811085559793451008 -184358881508769884274717742648524800 9121585500528363214084567390486528 4603019312813248854852164307124224 -639874569226528038565773901719142400 9306251593746541892416656770072576 5879461337779798278187287901634560 -589878807288976675776456621320830976 8913681656010753253384816728997888 5176961064619264868474551925735424 -613413497505882645548577987772809216 9490430462336550899195398632505344 7852791292299895667662696128446464 -517951715856808876923879645358587904 9334864774586551244317418657415168 1532554297772790611116883108167680 -784405398026137012017468653015400448 9522920850566537328748242243944448 7383655526907435721778654336778240 -361622012220499508123333852041052160 4490084498838218931132996434001920 7510779267117523458496812178997248 -335907755339593264866782466231238656 4702178250856812740931871806849024 2385480568875775233710000552542208 -743089279438411731911977739342577664 6726374822317826392408853057634304 2206999698931945644373259008868352 -50919286391201484035190006621405184 161129859582157588568144129032192 7404626041147564888715059311673344 -400564567237700061072945498980089856 6560602688771100391081317519851520 8284816812080984931650913496465408 -161327111425798778124159939787096064 5680185172013988469489823710707712 984405581300585613166325237022720 -198457946702785637761831402379149312 5183997666624437823916798352818176 1016140859333311120195333893652480 -246846214292481521096829487779151872 5738211335712718396250959476948992 6333994681381956313964511187959808 -499657713330645388793730350706589696 1942545719063837572382497609613312 6312634135127067553162037701902336 -855185421924532360886199367212466176 4521528452492647527018570870423552 5324128178869353124607929935200256 -321789859791076120674655864860180480 4773881495310819315164098588573696 3571959045609253695779976725397504 -107203389941986925702760332861112320 9434321120539689588564871566327808 6762047431506127566616853793996800 -205167722561620620864355062519955456 3033366489636787841918949205737472 4224694762491250765067121686740992 -551218369265777487867924677465735168 5128601937567508413967428430594048 8954970643074673988368171958009856 -149263808385964494444653650020139008 10577120662310619527474852134912 5627441508241713977705497641353216 -83570907210950315265609162840604672 2750093507154738395360148647313408 8951890370215113378791445793603584 -138560216569259631107427369457025024 7358425933684193294422669092978688 7832942865198018859548383373164544 -613532209804891731699403251133710336 8141237244765591070370671812935680 7951444106026416104395839866142720 -275035568145654196453247784555905024 628546697329862257659830144598016 5639847780235587505877577266888704 -609735519916630956083932400631939072 3400333663166252450957071082323968 8713023665749575833414499532013568 -845880120011814780883419605803991040 7859163366659374611452017160224768 9059997772369026078115247306047488 -563896142240568766009174314549510144 3711124843954529942691222854303744 5106991768391025670262717937614848 -169078994126014274996582466417852416 4659887373743027230416225259487232 5950239999512408371036008166195200 -486181266321874108429079809114505216 8952019575026692810391296055181312 7851677351769421267420271540699136 -442960538326170531368679062280077312 248781454359188146931503663677440 3935795831094885431252747338907648 -803411284528666761451303404035899392 5218038077791174980612987207811072 5120885730632014124698380126912512 -125294528396129712703440628112949248 1578593921964751620040932873732096 2140670542470707227453637986877440 -536174810473113451862922275386818560 7622850845620709210932741616435200 115887512214493386137600004194304 -422022836544279604713197127235272704 1402332365953724005615905603059712 5102687151733110655934670716272640 -322188307206417871173503575117529088 6975373816725978974629879059841024 5335904497551043189570975104499712 -153593943449120003624897995285200896 4352652966437298430443468040962048 966643969050451146550039371841536 -638072540623149233378459323511865344 8691571884483689783263647856852992 1132641365526142216257063410991104 -171259535502284509486837746622267392 9587706417469220189273872136142848 7119972265708395154357322451517440 -893237385802122824535204492939886592 9299207086229887184621748101316608 6166565164042352859501135679979520 -46799031907005608269425711551348736 911685892834247978343774398971904 106118639427793039987304485093376 -5121801350495270783527987779207168 4196277606225780892321624449089536 2001895169188852474869154028978176 -654438239035896391069066239699582976 1404808119921747736867951953838080 4168640630761462577093679788326912 -86163516958432703146258380118556672 4143773194425232497676017222025216 4644195276166127345689248804110336 -716857600611270253340983516016410624 4213044337485390518550678122528768 8432358696824517349842009370656768 -162138296752361401840386974429478912 7176309518505086207257563019345920 7246322048235339188506786678177792 -498276622109174091014217217683226624 5473036142946145043432544709640192 7736038002553882079946554262683648 -65237872240871736384830864449601536 7261255053705325887289441313095680 8752278516729584380928185979633664 -219841684062604412129825532233646080 4127698007876063533593844636450816 2352147404535832852637682552012800 -423735438185446990522054180119511040 349975061122052753928825442664448 3768404079400501662451275015389184 -122242982265385233044765614096252928 712877241491111402102101406384128 6504381445393581279217001563160576 -866491857075117057926977299987562496 4847203883584912493591075303194624 3486212247018452981093507486711808 -249259750358837619060952740441096192 2939456953976067334672871501856768 5035470823536177358679951041101824 -491438692626345942873727562317561856 3378756878571853252125918501011456 1384557420172668436019559641645056 -226872022779833526277192317967269888 982894097584748095037805177077760 6100777886669877963615771903918080 -190189618758480790786103088173285376 5772422240336388486181199999401984 9053734529394762401981670109478912 -476637378927451511429947442872713216 3120226746721470047339175502413824 8069449825114707785243345563942912 -868032398172217369276092631727734784 8923975096946270249180516606541824 6668487875064411481857178273316864 -271722183331049511284865311147294720 114621033917432945415477056765952 5630518313356546792737131666079744 -230024234950991311980254565031215104 3045263186435151755318628368515072 7690042730941906290906160573710336 -532324914190831314648680267547410432 7852136401865732206320336288874496 4375580944870048807564159184011264 -755128276048281919263813566168301568 3901678063449099971112998472253440 2870033775104597375253708097454080 -547938168941986577588908163292200960 5780470318848172377163193733087232 2430747443450501038797496164286464 -3915454192881451936625508575346688 1012637490647906442303512470618112 8434851009523686588486202247086080 -816453312595625363287642420589625344 4412390198211481487603312237740032 603387253475791754145207769104384 -472065121141250518123530862840512512 8790690642198430511191448906366976 8042620109032504803013081790676992 -749549383628406502344523427554000896 8636023510201776088679917264306176 984517814413682425267112135098368 -521904003707329828217545097748676608 9038793856301183700899699122765824 4559229656182197065608967237926912 -244254768493629901037385857718288384 5419990995710093992785581944340480 6067990500445240029014379678662656 -756408638359037941638754835848232960 283143361651721857630915411312640 1729474743945157772484818281431040 -886762485667596616193563139707502592 480661578515267748996739785293824 9128087482757640890534239754256384 -359149844439862972393454685200056320 2322174761977445551104973133053952 4529032086883898499564931752394752 -603858737085945466663972702252957696 9331414938231353378920639756238848 7775229298808507136991616017891328 -210694591246286012539495530587226112 6959784781825177554326356574076928 8494678093163512515360594981814272 -933170816911294059557749911176871936 3880110222165245563353409800634368 1067099880961988489739097773965312 -536575112077151533236826049322418176 2920578550573426783201040814571520 3674091432948253278683550791499776 -239958776828061574729045354525753344 5868278589910420069336928317603840 6166115892348499089393986368962560 -149358529087297135456472898750906368 677904831681125287750980182474752 6093557437758175183852438231711744 -457920377494015227175074326779002880 3143344934921475808923905503002624 3891960283733715878652913140105216 -103194234400440143772910549534244864 1361276421557373306409587927154688 6881602258764550409233185158201344 -80251406996280714025325706575085568 8963160664329134690893257886400512 209716923657248431859351976673280 -102082699344927651401705481738125312 6659028781249216359732823873028096 2734932593893320340030907763130368 -532700470316693775875768746443276288 2938839228930687060567065318391808 3582609505503230489526204085829632 -258421637739683470246650614929948672 3070133353725358423071086574829568 3394395753984094869222094696087552 -540447103903104793548187128811225088 9194527358757132427807549619699712 4467557678631312673519025958944768 -810421889954904184613821309849174016 3743503840268158526457814269820928 9483554282242555630870727250411520 -642313355304903353373161261719617536 2588145555279666438036835901898752 699542891403409578481503552143360 -248708587252736732308507921209098240 4540914601245578003367150074462208 2858943117256803180428172952862720 -866061359977252959799935695037923328 1001948205942757178749664890978304 9300379458975245241176000395476992 -228660492077899542534631389373923328 963085840050254360517743952789504 3507144811376676658576544325697536 -386668162309174651523740230054051840 9610724702176504487825680912875520 2825414493262027297075333078974464 -248348866804112770201936974149844992 6232673584485306066156136995749888 2743322615527146772999314335596544 -952840131256404281926463805745790976 4171762063285098635322605399179264 7584724696341420702485374866292736 -688420401372941764105086505708421120 6241173456832945371832351578914816 6713147800801933346950794386079744 -633064584170863455318701828380557312 645932047034582770575928629133312 6075725857323140149968158255480832 -411217136556472805942676382944329728 9882096338073060427863371638898688 3201123133672786789803654788415488 -405993128139296640434894393007144960 8256227435471135517984170583261184 163512906405896872407751859372032 -992778826819680967758038939608285184 3568771482567026250390464731545600 3334187868522537654553278188355584 -920606817509047406816915645861462016 8581426935360744622056864344965120 129225253268638705272617573548032 -583852214033901752118489888745062400 4497960320220682693433375902924800 1113824383098929609319998579277824 -18699916712025730032148875082465280 3022790646110642303930959151497216 326170648772642752926337432813568 -597304954222137341623526746451083264 4516270826723745475439904405061632 6881051658991067681540761169428480 -52209429089425667263915193071042560 1047174375262297578095213621018624 2867802593669336884445444046848000 -137924312045681195097618976912441344 5778868346225316632516663927898112 4816599444055274280591767933812736 -726158051973089024559573487497248768 5430239737115134906690757984256000 1247233445074209462959903076253696 -831683607496039586304535434094444544 3015038300667996204976604861956096 5283029575047933925667987823525888 -481843976575558873601650508066455552 5413505191528941362414402129625088 6708686378877525451673379369123840 -514505692310127492588493809779736576 1702495904033905128730928433070080 5334578098039549656835362239021056 -666430318563452430881539095460315136 6143879575241828582328523955372032 3241123308738573309593513952804864 -454574016905269711272919998893391872 752916107886167104713780419887104 5150115561933397818382668726796288 -581741779461926503707326037922676736 963006669144040091815846734725120 9452404712400427980416046004699136 -417094742893301649762885308145205248 2169865196285718265472015562440704 2246252542090863548753685067595776 -599380697617368371817177428682342400 5061094588897015935104926412177408 4793090737147297763866623644532736 -990115733945317811989224416843137024 5326142445086372209144836596432896 3067501789244145952509835178147840 -179274503490541276697292611518464000 3428339832204627501133881346621440 8282382598460058263286225175576576 -702797775807711039740271380807024640 4221064577654366021983037701488640 7165018533246113513931824164765696 -419546740934483312401012465426497536 3498969703244825559726784866418688 8290301674867411654283661877968896 -917401531134878162620753714067013632 5056565307962371428578919681359872 4604448943819476245814707098746880 -188202315193157186815941911766892544 5662771093619142394854632107016192 4666999072548425734724565199749120 -525533676368922114558031521579532288 8920438552490756105471732918255616 575010612123996768254454273146880 -631620418602209151596298437870485504 7350990678728916234941518097416192 2131259996613735578387425085358080 -819832344091186345456800359327465472 7106809859688039161642237967728640 3919383134689803946024626288590848 -715409969881991204394262185145008128 2668264180614060473592752363274240 9639565858428990062773889449066496 -543801525481380006088728973808762880 5768263517650689124110298727317504 2690763418836515256759528976285696 -675270484801965279105051994512949248 4608559704989535686744134121422848 9844689413789823498138877956194304 -271815273740400696566844649128329216 382474321989127182850067697500160 409510326137334818273621622915072 -152877572984666258771935527211892736 9230188382824832934769718768697344 1644109918301067129912741899272192 -942129218065435057273853972779630592 102512898914859480310677634023424 7432463941071096932841668441276416 -239686946135376239476459315186892800 1903176456726808712351981202571264 3744738364674868424588005365252096 -195251193357859644538244501472280576 2957297999595596257037352307785728 9666203685402874751589893458100224 -253519910359095350909781466012450816 5509852084575913976506207298387968 9673231399352905478623268236689408 -767493207786789274711866659548692480 7435827589751714668821556121042944 9817376306089146096152638421729280 -609701655150714181563773275265302528 9152076968549951910068218522238976 9762988671885611856747878468812800 -493305107971657616971860277635055616 1499871903818844662628799028920320 19468682998884049435650393374720 -130109304548015068665913574212763648 6597545274681305024702817402617856 4554251504155397344239449867812864 -771312731149046774848869640286765056 6184663362068551560577650033426432 2886550049954902716024498379816960 -431166129887373046275217266502008832 5879087942722679295544139066638336 1003882275820141115588752728653824 -572317862010724417117408033450754048 563812022395546092214665930080256 1668397206499827456588683090591744 -664824645733815082837519705548259328 8640684880302556410809286127517696 3182144300246862614271358440308736 -394389920216276143935959928708005888 8664959031416732597870365461446656 9725319240902142729155143840825344 -396183167069716915959597409775910912 7575993076931840226141721921060864 500234705730403769725592849612800 -303794456625969242460812127617679360 820717910886432013111023116484608 7232327795713784815204751479144448 -481240941245310942984793672380317696 4488915919265202244319155719241728 2116056107656874178097510480871424 -626360690315611715601508231580483584 4434496047185259772291835756544000 4589852350650308494604035147431936 -626276961945574112038125472822853632 6146506568318393672638286559969280 3149909931531720715384471236378624 -257494851642083398993298890879401984 1485851120769763944073095215579136 6141150833565259902832496368156672 -101923927594266137682602999288954880 6872718275063633430696127895699456 5248176544100685510695699867500544 -543436759725481682166041532858105856 871520489617158206045840184705024 7381834505316382880811720229519360 -930545676423092747733514076888760320 8111182023468279781830770103943168 1337540907465473165699543212228608 -142193704493990504549756742529974272 5969454132076322339513662886117376 2332544183955681923934774020276224 -904240876489404565640003718947536896 556314466878960755995213326974976 7526038668597979303701426653364224 -591289891417488043856293108171931648 3056718658398063431323238256345088 3839613521448811472646295391305728 -578765784615529736567764320522338304 7988257542380447327844695569072128 8322369849909846921445597190815744 -471221428534033362042924189375004672 3589735941055318852814105477120 1655016850514581466101435743600640 -800398269533196887166668203433656320 4471484617470131430083624886599680 215866180451479418638402997714944 -407145272880690045999327381022572544 8870634658684335342531086085259264 2942845148334210431637486779236352 -582458103150928283047798582630416384 4547683113526296674788587872452608 124806833063177162159982764883968 -217015351194477486019458566465781760 1894207306128122734424372551876608 1253534023860091057110261587509248 -589257717725046325835416234086105088 8173514024256470913804242264260608 8468131306202501965732422732480512 -919053123484367372637896348893446144 4825814003726848536967657614737408 2795150910060775975318306548613120 -927947802686700638032049540308140032 1901396057507831812640620626837504 4796307546252976579935106290941952 -820485984951215552688648051165757440 8783474912143118021867691174789120 1885023688727327845561443689693184 -640684134226071603954521672555429888 9341214912950227414547295662768128 7357282914460686510026712634359808 -255486347349815865830322427341570048 4344631611846964265553373421371392 6543292586370759397730576108617728 -304708466278834985161803570733907968 6866864505741623191227148831555584 813341253912255953647377693278208 -425165896002669281040651255455678464 3404884286101076642019148061212672 7278496059797618990623532578242560 -642354588830408429506266007190110208 2422044130606473524689481051930624 9830474563388500121061742862139392 -914481524503080856248145524771782656 3071358003032649173758870831497216 7254189227159582018513910223601664 -855626420619884885210431072931676160 4337835325636083110899282312429568 4363744009624725285510436223975424 -564757070485468182720303241319415808 7248732796867570134498448529948672 1368472660980603952595604133117952 -555645711193932291327416121266536448 8202025978370426350388128392413184 436837702210220109216227314892800 -977148529807215748775250650726400000 8087129197867385074786817009516544 3389692533370668362880373238005760 -322338527233743390597621404313583616 6170089963715872554432643496673280 9168909061253086795836556128026624 -16262107030860200057055041384611840 719069805513226402033487027634176 2572358171712860626678491396440064 -534211944758632462986745892810260480 8259444950687449235252755101122560 8402955407880946295232930483535872 -54271571923906993603024038936969216 5204256601969226957083960621924352 9827272536975941060094565977948160 -585549900119821459976936444550709248 7169212791130118351730604127551488 8201241381169409283453128397553664 -111111518605512132332937505763491840 5577477415149941688521425233641472 1564493129865131104880576803373056 -744215434392260733033999888898064384 9809302220527987032490938137051136 6330628948101965779534113323089920 -827588607934006003184786695828537344 3000021497631741979928546211004416 9968140782461326503692436783497216 -941852283479861226648126459610136576 5126673582748034740025364154679296 6505113093654561503046658546466816 -84547637578345754384688686229880832 5934482006252395860748208844046336 2159770939108119191373993838903296 -473349786688944079818755139671425024 2417559182333136144097145702580224 2039263991637815338602829789003776 -461474761408080371521194127154741248 8322525092450916677813844024754176 6774732377486920992366585435914240 -478978580438237911409238625730166784 8268554914189402376816979607552000 7921294241885401122851590640762880 -239674423337567677139307158870949888 3245986197450174964610704424828928 9715725893490739796368185767231488 -33076763923018376366762000063135744 9364164222621720129834975575932928 9685545374117419241884362947428352 -84369532479602243303767617793163264 9043419200009826331363499306909696 9678187506321304485013957378048000 -540246064109309735287871676115582976 4173909965975627979438263069835264 7470935981649554106153662500831232 -190120078443523334799060590045167616 5194438545787125857040918435069952 1317527436448978044177491903381504 -144042865186503288304438937963724800 5409568974794724933153897393946624 3047023720443850921559143554744320 -392713242555996114943790741006057472 8458832012519171610179873982644224 9037478876144068159442281172041728 -500429287608857217783464247905222656 327444036379667711732248442044416 6573719101259552935500851814858752 -999403203065996028598813930828070912 8292800731110324896771827281428480 390060664100577601312237463535616 -355300968875171266677706277596954624 8490532182134781988326979217129472 1572619915716998185842935821500416 -334022525285017361979383263608700928 6122648724992349163220581505564672 2704712864369194799613219761553408 -36365249293313272595353200087793664 4276986256401263309153608902115328 7211762814657809896430981573771264 -673423054547421033071297275774369792 7058785907639289799478286420541440 6328616109524264601542390185984000 -93247647269201849366927439013347328 9458777116844132986558841689735168 126870155298520122053033803644928 -952516410239262958572984594233032704 7696253516169965339872084747091968 8460194476811947226889006169980928 -151416764182803379964256420513185792 5660783032502033198072313103253504 6441945807852350434741576322252800 -648637974996873652337050046039064576 9897472447374297910310018098397184 3073343193609052627203351029743616 -389719855810970725470035806624153600 7451229799746877737683065856065536 2382621787295715897814275783131136 -327683824279036779461468029628448768 1009473014963767264039588404920320 2349478016101580804229977998360576 -780938172677444013162725063356579840 2228227849063550736274264567054336 6801553896362554211130387619381248 -959054719948380513859813006859304960 1727683322921086701310429116760064 7733993061185876157985951643074560 -508206964570109702111667850865278976 4379915860652540667547770538688512 3864702429145863867103846202343424 -137241078526457635474502444765937664 8969031781376035235786422925393920 5742538424210223895943057892179968 -150814718439931077249149716033175552 2544947564441625005476490908794880 7337621551756538725651579056160768 -486956103029248029224857578736975872 2082000370400188864467197560356864 3246514107414854686144587569823744 -148391264580017962810747994618462208 2802647707263733106746290482446336 9014520650789732510875135783206912 -504272688478089945935865894452330496 3476800055552946869462355287212032 996105194358458992647279625633792 -339506182504753590385722482963251200 5913038710835749679195008092078080 1453653817694034282932320954482688 -518358725730580864628031640270012416 2381642728245584782148141313949696 2439781582518716155253600813056000 -993416722938044747060722574345371648 6281039479656097970306501381718016 1162678933589626132860375566123008 -172893368360194673222478692102438912 3490953578623392283394317022658560 1036311134012100938611505902911488 -648071508957325727297397163588321280 2143520394554072412943471911895040 7935919268997197237653824937656320 -102570694873460586315546854904823808 2525807289931914376195980977504256 3070324085366564057865266959220736 -128114677153355653101027470790885376 8493906754319333588949968913170432 4877247343233963669009179577679872 -745813135627678059762972446871781376 8312498583772740154497368789614592 6689502876970627339718286790098944 -22980629674343063755477512964014080 1618743190179472361035351940136960 5765217644045196600840287133106176 -928075046618860979163275028074594304 4582548299170460762275091585171456 1329155117994828455969752168267776 -289335617002922546283922176170000384 3866230485406698397981314308374528 8669432721601284961577513806462976 -562181718920923876129220606614831104 3743698461778666933181145331793920 5702108713679582710074140543418368 -924294832502572666391803786875109376 6580071382530421796365788977823744 2207958002424479474498485872492544 -737804848614015721198627058454888448 4613620405075140784267639939661824 2272538065754276309110344158019584 -685822222769223847214995956473790464 8458875157033249196022519052632064 6013550339426241618045326038401024 -893508086596659522404836774703529984 6896057337420440609034997413707776 3389736948915084520954853742084096 -929154413761138907072187308718424064 2219672820300048018810368788791296 3496101034355694475663039212290048 -27919927903428509462271260964683776 1727484642722641570006352179232768 4505926013387467707628664756633600 -283253365240641369263126791902461952 1063885254756846381820753781719040 2655956221759779967315860745355264 -594991762768824098037155959792467968 9585561548033203087863336839151616 4860139672762857542936283639185408 -432383836199100890873500611320479744 7959836857010018203455221542158336 7760139506542491838004926473043968 -955169136306895527134152569684754432 2742794851410010768791954712952832 8544981421550427526099772687515648 -387787223925485350653527260869427200 5811716026638383131623987664125952 1976928050381528476891908386324480 -336034730139850234995290962103631872 5779537142819132666938197289205760 3334064303594783794012508408250368 -434347396293658793002156414478581760 1182419726610756952184557483851776 7119541232086751818205173634826240 -230079523265499057937950073832865792 4391093463040329095146637612810240 8785332431401462964718275406069760 -612580485462616411472621317174329344 1779487223729559119182143518932992 7535477663815630302807943198801920 -871415776920159957437544211463274496 2509318847319591410842393978601472 6252810683393988292252791725883392 -469749444294402097842809736643215360 7111338752230636560708715465932800 4931660769570072701674243412197376 -450430399573164813578218701005520896 595510877935061667182176215498752 4582353573253963442526017713864704 -617611500360681363845205120161677312 9160575985887002761685729944797184 1703283663470712491353052761030656 -781296911513778968138547326735089664 5089139047058760114135345013981184 9399390808287480156060352044335104 -868396679949651716254902694910623744 4512343550247661119415124295155712 7429543469947604894384329980903424 -79870537346048436040151774122737664 9630296122422873435969205422784512 3984620070251353373103074601598976 -646914924808233362937779444397375488 7562612794672467420130775058612224 1587996253748889570678419532808192 -766163577341329460116385517703004160 698317746245671674739676804022272 9189716533294861703905299763560448 -522160981715069473326649344014680064 5618897639421822502885278718361600 9166486666140026031343187253002240 -269389921981282950612983417841647616 5213796107040859047477417273720832 3747528267916096426486835762429952 -35807647049381790563458912217989120 9733187009321380099532517009260544 3270475581389114625314071743823872 -434561852466662328155659606580789248 3016515484879140909744493340655616 3400710972667967380710895868968960 -852272330129006755707277454268694528 4313150749162104783847667194134528 1729477562282869924000914137415680 -598950200679764125966278590145232896 9900461038522995383815791475425280 6020756628872351088227399000653824 -750776248172917553023098669290749952 6561124163753382866700521407774720 2192246814817193996054397349527552 -554607017522645355723477197317472256 9314586551160838920054501697126400 4426237735482761353896284542468096 -716584131491256989311413351989903360 8802421687272703822646223430483968 6939836142669231372328324718133248 -252691194957683542081488230769754112 6629021753250614494862834466291712 282102215352883831928303472607232 -428695149210495368958565339835138048 555531618088265998291886827110400 2773501780987016840806731081580544 -624328509257955609849119086238236672 9820623191693573867620278820929536 420850345891752154588917509652480 -682460893559631911657995108997922816 1154355499935695288950527983878144 7418756604236999742720366845362176 -922766890568684475088501951380324352 8197840867952329336711233530757120 9827412525548736074682673301291008 -6654323018438819516799580828073984 1158372933786358860626319831465984 3901427195676658054639758021230592 -820384747671580985740141176798838784 2302784103180101457446799000207360 3708427921082206659808783719464960 -86232862517014384740445289768288256 3578424568560379050967931180548096 636349601604235478871801757433856 -306296941501024069870920188882321408 7480538435085308905840220355690496 7091550808210486031589202083184640 -2633015641913745152541436839723008 2784309485138328886613163248713728 5433520975875461743623920116826112 -44255034714515536332045790245552128 5191237939304862379928692094664704 9215172425641930163194350033436672 -441820505094709832163208382040244224 4182139426111546993825299128385536 6131808548924422613140077478412288 -597805416113000389565229482953932800 9879515946493859912807750945472512 6278795999280577858979813981683712 -315230581226816242791694207813681152 8769068272382848742018617788334080 3164694648264569553904099020242944 -944934548493132964190145081455411200 5655412723867753463991436643926016 7169516521907076514254043790442496 -504389670804325909759328824378523648 237265792613833756998958462271488 3896351775862366157818403930243072 -786685294733010589503470856151498752 227900297738455474784237195886592 4332147258792944981374555937308672 -633910614640304470657104028385673216 522265029518567182013266074271744 4218959583038235156327193351553024 -848749865696329574260622243462643712 3787305029816815949973219218292736 1634724748556921020624829061005312 -107851186523730567410968043959877632 6018661744191118708074477309132800 4511614444047362651735156607418368 -345968304974801004096025202723389440 3931937047617999172522676259389440 6473894774454878265734075674263552 -834448784006372766621591638837821440 410724467960443119528128819494912 6572211112916145646170274632040448 -66100732885070166685809024622919680 4878582466482591432081807683616768 7340239504825596469779534046035968 -163311947392960014669963270530531328 7710175324462784504547614071455744 3981642496251136142750293841412096 -570656662720214196318212610798387200 5610556001428212121363909540052992 3052450410426165348200600716705792 -978908227192223292476304514447572992 3260732268951923641149705196404736 275966126323354082407843354378240 -112508580150303688446350639453175808 8969656540056045449684675840704512 4731378584393003520296666192150528 -404160760201179452046425631341150208 1326876510731728358555076156981248 2973655097541560970913372778266624 -494025823538357818524960337323622400 2251749062119561759712864225984512 7264324384590488351477732575543296 -903774131223275110677297592734318592 1151159751896550680820168446181376 8570909804983128216978649136496640 -52451519751865120401216087531716608 2904316583612588142734980082040832 259841453922261961311398830014464 -31310474974309284605540760253628416 5285981260218613231189468693659648 2075578223746205697733931648942080 -642180881274055162754859896269701120 1113472377588369542379062742220800 8132363166844209544286216017412096 -22485200060848315355444146237079552 4698041521026519060866175055429632 8552243466064634831329551229911040 -147090886656200927004162815176998912 9657078053517094213551703883513856 6762816980498430388301342185619456 -8695142899928776676308076489342976 3654881861027547038245294172012544 3986428703914209819896088455282688 -55959065869287038651630764802703360 9261504791090070661050569127362560 1257286421315479663956965587943424 -501325052411676209199765863662616576 7253080880414761862646364066807808 7572992186842884285039029801451520 -364619657577145694484014214429016064 6466813342489739956288037006082048 8998712625228557345200272788422656 -860692474502396170547645929224142848 7296331398068267755001378898968576 8397416079527222861147387931394048 -699286750119754659718757173652619264 7521945384134086491795930654703616 4551204373333417465864028208234496 -914892916129329200953862358403383296 5662401161650136990216163287891968 8417342381929683775817306030997504 -441837193563107161360401969128144896 3363635787927328128960001766064128 6866636083629279968535622977585152 -758454126920280656280545035907235840 2596692451249246161042379389272064 7355214770567166061545697799307264 -377516171251697423225401930063806464 1513719995248392006505928025178112 3109053637511831878548391007879168 -118192442457401888621895015181844480 5308122507700392004247617536000000 6880075851164663058756495634071552 -913228783041982262852252883115573248 5936224830167662008417800540913664 7324076488045726208012122528415744 -999048419353960381676412201752068096 8774637466975133815702822940835840 2226439881970355377827413718204416 -37370168219448242933287059122552832 2784100102457577723369698594127872 9467082401413791178975502212792320 -840276279222042123566612875858411520 193105511716993311389180298788864 7695232583636095787055892945436672 -975220591746486926030349871513337856 8610439071607384588400916233715712 782309871733224609335792575184896 -628581293903542147373311504425156608 8390086102276909795417983314558976 666695774305846692853221297225728 -579954302816179798670467648603553792 7999213905190478331246094023917568 9639853030474803006135558738018304 -479260919948950017707854099887685632 5304620704792825186385389420544000 4820971952007740251118660516577280 -262772664682705824869526941479206912 9717486412081387399699207351697408 3921343716624248506220169096331264 -333809445917329036575261297278451712 6491704119490000768715631599026176 7880946743224516120954517732720640 -313504555071094091509945938680479744 1961901099021233679875985647861760 1830408567252738610593344702644224 -640145243335797122855875141064196096 1926562605669990128514765569392640 1672057929953380005855873787232256 -992041241667986087056034520704745472 3268779966780686206126916498358272 5791992773287851176551253880602624 -30085148711138799400014953188425728 7315534496617434663060014832287744 8427711934337410861912256080248832 -707409025247586113104933731577102336 893866520747337030806421469396992 8559423848210741519474239113003008 -259388323802786532938237119836454912 4615305974161316622268853370486784 4865791415413947992774477239812096 -109252228498085095737093109611233280 3783994396093080730737971323469824 9783787269686098635837937341693952 -420297056060396746449608124871475200 9114686595288837876815262233133056 5441097622467565466585864326873088 -627238933788799895950983710172512256 7652228764556283331969336676974592 5016936469377833757912233974693888 -892838122550788408354805152347062272 9924910730274533690312112262348800 9679305780368537091915277171425280 -945050071968375654296596670222172160 8706220175481233034606683625619456 1388127300059684674155245272563712 -514956692834591298261106994377129984 2143253563650307559193398491480064 4152557468027351970479136063881216 -532281076736142211958547638076309504 4532857565609396951265662455513088 10264200977891510675830197977088 -355563799136282895167267141322801152 2524384370185115202975276306792448 4366472897148836529411482726694912 -865215122941274149598095439657172992 7097835870564911543991618754314240 4750559987886675310831814003654656 -572466912569403979781916128807223296 2898534251556353198992592428072960 5037085216371547301215168567967744 -64561774999563136800578723584671744 8348119650137447699407047082639360 6608454552509162712524121545113600 -477582705387333202030492440460263424 9089973442077099610220648227405824 332772832294551664257113002082304 -925308308976994885754324831218696192 2778692045044343391510688209829888 7741546228975430635605434801586176 -877876573035160153949739798224699392 1701255104306193495599759275065344 9744291818925742398945318366347264 -752192148352233052664830043185217536 7495989750249375066719115261509632 316555986988763938950446569226240 -185790676095614502198522334555406336 3887903837782781459657384913797120 4304404087648638380228942730625024 -668139207992152308643025212902735872 8376028451638952995342928423419904 1626312750933951687691978013671424 -959616100805220567399972536181587968 1086013441932324179387607093870592 7825496433432866046000538566262784 -352933238847837825241659212782632960 2603137494919807796589970468110336 1896544836799938704088566257942528 -596187514007913275467297004133023744 2407196288981843683922290824708096 1686635632590911844550471193722880 -37215154686574799987944220052684800 9935693681540545200708408659935232 6324484446949065887127788945670144 -822307647020118228700151707143766016 3606262562128460355908192427835392 5333520635554070198420752845242368 -13849696417705496424283907771334656 6732297253457669546515264805273600 3204074579351375423027969232207872 -423780648145180487868421872730243072 5349382003103944684122404814848000 2899113885528898482858919077085184 -670217754678149665571080496769662976 5387965719584817897654437493604352 7795301541281351571838368296730624 -347131161410360098368363515216920576 3752819993534955077646679862673408 2619105022812939470197931928190976 -397338454164360573427753557801566208 3567989369118869318038347149475840 5095978373377730518067090687000576 -961708076450720174966036642261893120 9111254003856740596678490123665408 2528067560821644021066106073513984 -434585201209597427239538318093844480 3147762423338063337939269062754304 4488424669681624582800720086958080 -633012802272417323393130405231067136 3303194127664062159462006419095552 3440879226507085667087812648763392 -626053532636136274018759554765946880 1988455872928625524248619727716352 7844793482528954692372102423511040 -131060707767855813938132371038535680 5348557104301853916890500121493504 284307670672415239144357433966592 -93175794702220167227172810462855168 137344821249191699975727780724736 2892605156703462931807930295517184 -174252774876258323119716192160317440 3620520217802395373584723176587264 9853911152943569682251480981045248 -656330845055015795107567220813725696 6616025629890896142920675743498240 7414326118478541744058967955341312 -609929107059960025695450297882640384 7382668401080225844141583591538688 4545012539997227227664943987818496 -959483347212310897835123209280684032 9069233528193236878161436016115712 8771023850026633021748779484708864 -531833340020844373725241675823972352 2783316034839537264680339230425088 85540581199253769206328190828544 -707146667619971856482232921982238720 3283941860981558050661023218663424 5650911212206658953539928010522624 -190266502527763031800752398422507520 905642208492479048135128985370624 9299767049834289911447478608068608 -299457551947458145040952692400193536 6415089357087258650668075046666240 3712429150861242520475548210167808 -850694168808209073629608947981746176 6942486038867200078893714906284032 2772016761781859994292582862553088 -566059040831292326323066805577318400 1617412710457163375755564119228416 8627690752554279271808911416492032 -330280535141866230943383141260197888 8774555407057747937650685197156352 2637413292764259724294995851608064 -704078038132739795506779703534944256 7796285366734253217916537987399680 9926675866367998847657320082571264 -682222222357433025016157103884075008 8640019700353422300252198498467840 5397915432047040183704692583301120 -598790446241746012023605325614546944 2036064940171950069308106064527360 1843214348811508501410614110846976 -320152814344399329496850784107626496 6870985164982191150232925913481216 5277509540879957965428373923561472 -220360626045195175069617508793188352 4192660876192068659053727263490048 5101299656673802897974799510798336 -60020024009336611266476323333210112 3869292068837571392643814773489664 165137588756234545825138639634432 -264715193196495902199651502447919104 4706049760055146084722579987234816 7556102853124511459650243905191936 -463050754012830077374422267329511424 3401506562442174397921124723720192 3463042907439311109662814345625600 -723930805601057423417612627420905472 7878502835688441085260039026900992 9931551354872182252588984979947520 -141562682421657268174423561466806272 9280762172574047669632097906065408 4647546127003625734376019434930176 -993550571624072555414391347155566592 4697352286593692958183554423980032 6841257001312019269482227435569152 -423487959157914542602544622040252416 3786210117956492227584508228009984 5518085842891860676001531810545664 -243546063215807638525618072911347712 5094256641209112577502807513366528 3114194798004455683018031198371840 -70928157270431667378385841272389632 5022129944821532342980347556790272 6724690450536119400927688396898304 -898225852790056655347026849804845056 9588504339043919917451038223761408 9750711346740760501290140579135488 -511025326919084292233530451643334656 244163990138525792840132539187200 4436213366006423768353006189281280 -543407179951517054018641700105224192 1253551773790878534198897556848640 108949657839129454790474087792640 -192462639734383980765699489256177664 5192314131056383335314487364288512 7512727976892895862716145388748800 -532368826325984019787954446311358464 2947254140140117863382356420722688 7167610087821336260084704087113728 -407869322797008707049920226452832256 8251165914107470412787243213127680 6229157121761072110502926509670400 -856071082152505200653112446973640704 124202713325126268887786967793664 2928246172765757011651579030274048 -673532568433277176258244752588144640 6742743141567632653105930426122240 7536683697420105470136297633873920 -369820225545682084016277991884587008 8831992669649974560061679198011392 7407849260660349504898952851357696 -358341557174715183196054893719715840 5630251741863550993464585518841856 2170334449961475509536774328156160 -419655154977338120942647923842220032 2314237350800922053346053748424704 2422749269862803825385889287110656 -356336918756113731474200838128271360 9279226926069602711727330371305472 6398439043557547608036340670660608 -173727241634901921113630598414467072 5966355344867520035924401211834368 967566668275423703545636852858880 -587767887503210355540587928398856192 4754975557470108105678285623525376 4381166750396472404001501508272128 -856491641366627247843385974970122240 4867155247434024160364936262844416 272897473921122680043719486341120 -288399624212147053030363661846183936 9638296841123665123366340879450112 9968578829798923126838928395468800 -701823180266141114216082423205068800 7305773971541458591507399747567616 1411691927801979396052722600902656 -887659525139868180097728100387782656 1541693538018311140139896743657472 7140975266474264262024733231415296 -671588667719379042152558601128902656 1389429569913404117000767420760064 3723032818916343499504490140139520 -310908848975681977558474121910681600 5413042609275257301113016701419520 8385322840780993731690160623452160 -668896003960945564483792803995844608 9836389448177001815013836506267648 7913488278177025596734416967696384 -209298042050165596380640986110361600 3114030989783447437904154388856832 9652246440212911282697540470833152 -566955801046438232652523213588267008 3451715815957504410366536973287424 4739786997655607003697582065057792 -267583072882152602485632641464795136 4653509002539671282427010905800704 3674038382654640816849056557957120 -760954733071507020569615367229407232 6445249871507585495869216736149504 2335609393188476148890742676258816 -522130819966789267577833943702962176 463199249962107684921212512763904 4180451456155621782764269317652480 -612282731687763579668788246304784384 9697320196090533008827088535289856 6914587112465112777478735797420032 -635891193070912614089268471781130240 4213884315176310683121784440487936 1556122859878356491771259566161920 -307389779468113055117231433946497024 4514975578295003948121967246180352 577197794034590714758211827662848 -141974670432130962368569773307985920 9501627206957715918259735358341120 291891854458619962910092682067968 -504472767664588735451113456236756992 3557470166351528680009969677893632 1454003990306962950948082092605440 -28979173156771205895091885508132864 2694347841924559136547473184522240 7558308443530146319491181374865408 -941312659714080308927351440478830592 5991858024396852399233334002057216 7080310317370595709125604314972160 -960244784100521742532229015978115072 2739339683732338701951407027650560 9995360057834919991674907358396416 -118021247589723202462001693458432000 8355488369315821752845065506521088 6875589641018224682979090398969856 -619199251757518686964618639334965248 3046266404374962623214534042583040 1385440487122259300314976492716032 -657970598716874620757003000313020416 1333569772655651694098773966848000 3732954883377268637468254594400256 -58634063526785770148660837422727168 9339497548030896703487941606899712 4679233035209986983545168369549312 -627810151003391005910072253162192896 675861749234255159028343979900928 6678835061642736188475383564206080 -629667309044999966582903530307190784 4092514167570894333539493313773568 8523994875109717030411398685917184 -464124696604980534816635817365078016 2417155713829678041586916881596416 2438105228363505322375211852496896 -179726416466845509969220413740285952 3325122979129254179369672169750528 1229448988010490551696599220748288 -947233959504426405648415350484631552 5147140353466202898303611415035904 3261848825268950099714358047145984 -895466643088992533649457523632111616 3229525410548174928798354862243840 4927450310666854023623779983294464 -297921891151467533546019122277515264 1967672243506154946721845709111296 7515493610733631493070040114135040 -928954680232206345142138633883484160 9464768616664316984743034418626560 808682425872154937709500836085760 -25435703363397992007501710060683264 8911021840219396724318895098298368 3169488233460351603243744994787328 -785737514170068119827044722534252544 4324451178082696096454691619078144 3687863968512068076055348144766976 -348196303847327646358114961354391552 9765086104732350275800663416897536 8748711389163435773590804038156288 -801257224588555486385569494288302080 8176119532537726473008754989203456 538750880919630111304645477400576 -968668454210025443850418136461344768 4971483707791168528734118653984768 7756797047909685786484411558002688 -709539305066701601560294283875975168 7133864163268685157297569178583040 5780620747440091363146946064678912 -440343138475196278969946960975364096 2367800278148075669613240001757184 3588188920541225515106991756804096 -889409516207999236725927636570734592 1355800543523045890918808016650240 6677223034340387403292384878919680 -877919407407371689901508186374930432 9065821571046486917881325567344640 5612764293555920213042971375828992 -76826907288853656585537678953414656 2549987757618962796185278006427648 6841280386470018101089531762573312 -6677241907993595770742216383791104 7195835313536933035115160847515648 1648423235725022680488218864910336 -501895568041235501516124007035830272 5371490791687687103623903196479488 8204400052807704019237917362749440 -691446087452080273700936705550319616 6565839239659616441134683204354048 3327601970507152898146785933918208 -580260954276871319362366248291663872 9314119081232134939117587405996032 6271476575612615831179315034193920 -747110043945922994307330595954360320 54450637824062877328734544723968 8227866376567645025669229142081536 -302203924788557585126015145340829696 4921430174196891000850474768269312 4031785909338760703983593912795136 -885229627697176879145980880540925952 2500357970705757639928872865628160 1188101645509972350943932205498368 -885019112543498664637235673453035520 3232295821553119012394118590496768 7159607144778456951346727311376384 -66290423024518185238764381511090176 9940404451557725308579535202025472 2050677157230975389013113873367040 -56032407952281428828435244556222464 422913422530178213879589137022976 4468775613626762776859508962492416 -387795995710460801947402973969645568 8577048304039645493066443486396416 5045803535982731950429905356849152 -30757715001253758774939765966897152 2510549831859902693346893744832512 9026522907830907393329081303957504 -549343998131742400818264729347686400 99580782758746554654287890219008 7387996510803152989416330975248384 -386921721161609800540265990833831936 8163399963228825851564635952513024 6647975126076401735080320333512704 -922814528716342632951041321578004480 9469788877010332175480115727171584 495008732999527681384609870774272 -521614775435741253691332623712911360 2571681939278516039648180550238208 6161515398222118396529061052547072 -654132785109122205669107323933556736 5872569751765160268005779525599232 3191412792850342526636305466523648 -418659056296570610292633842030215168 3371755449552429303612853522006016 232442370411393280442133085421568 -655190301769695590844224706980085760 8895225556387802136663964084338688 2804892946811015323631930144980992 -425034291323025136826100984643059712 1686849390229973712910602553262080 1468783297490839313659030272999424 -869355957072797146278327311694561280 7349376490048909325456621761986560 4280928997105811452141280585318400 -503818202702816600384118119517388800 8224954712064392790925201224237056 110242118610275045530517471494144 -31873677814563069417005975018143744 6979472943624859468400956194947072 7492749043268986475142209219854336 -150376869607719733504916368945840128 467653741053674639994419601735680 8084939581354513957356307807731712 -35807096205281288648261900905218048 2325775390741317487685012931215360 2852913609246894953527566722400256 -187132916599640292218606412235800576 5258267766419571131614402529198080 6636823033439329099169534343905280 -863276786173468256561542323029147648 4979362104966841917108716723765248 79188476456041823194366292787200 -484412378803736801776751963535310848 8488368818268202151545021560520704 4631842278539906541660840843542528 -114603300196019870732139769253330944 7724397544687790472363853725302784 9791733200444394483805055382192128 -345152859046741806861513540656693248 4889796673996074168886659278438400 2446395437096746835288510034870272 -87889717170473859380973443418685440 2902268019495073708316748555485184 1329974751491288677784551788904448 -912491856390265521186240747473469440 6895935545478300071179605264826368 9681248110416921730411651026386944 -934948156471976191969629977482100736 3444488711041779146058195110199296 6429404124795155860826061340147712 -135119288940379973800228970507010048 8375370269987718303027680774193152 2170417555230960792880382600019968 -974005241397291995606807651211542528 7603281732599542104417638279020544 68733244433833938123816586706944 -55240265371709000990902762334060544 3920365484957004563281391657156608 6638362013204095765307847555940352 -182175368305429119653869665363427328 1559859865226952565081235410386944 4862859773585404483000618929094656 -521247468155765291157540122411401216 3080950533822604586030562566733824 9382380824676029617909016687542272 -954287328457487125119652967108050944 9784356727706902642865806076018688 1758288004995228592673118348115968 -236865476238181969831984160902742016 630058242405932385808739460972544 9930916265235648891018232775835648 -360108012669852392739141894920994816 9298338375192226593272790199042048 7161272564668295708521804322570240 -30104895962427858450101141766144000 3791223389161845000665762801647616 822212118999051776278213301370880 -306310965929943431118589067159142400 2177529954042167609795641237045248 6346821771208377442932569235521536 -964260658486636987447200548655202304 130503777200016030412842129686528 7300860256878334978300317878190080 -888778399204757824757469784664178688 7645398654772477990713107555549184 7932457175143298014803917220610048 -518962992484968279571728707140714496 5111484146400063573718766838611968 7501403868066807295395187218448384 -466942969093449775967175557775360000 3098094847808547107774384455024640 3228360235755453080726148797693952 -108288452001622808408659874048638976 8612092247812368593563271370375168 2291642095902636149470043456929792 -222872475719571114103919964609052672 724612497205688717638378910121984 5818580179568526102520664984387584 -447924689224113689822309718041821184 4420838397306033856642669850132480 6509484306001396302620942724497408 -53224651791729979633920506134003712 5174361936064999380836007769276416 6127343223316858422964077201457152 -250808726633501238855359928291295232 7447974287102278290988653921435648 659666810848352086326174040457216 -681699660173015289185961249052033024 2304383527637452892575722459103232 495496900178011505636079084503040 -23058243254187873605984022876389376 9264481249064727731241042007031808 7645318728605048955631521331412992 -79571377785801053776999310895874048 2476171401172954212978724337352704 2956742794684938855629662525063168 -716423918684974752890874990323302400 3975434498680674957902903957782528 471993100863735092166675453181952 -927203799257491142742270652083863552 3332774429378285373874148707663872 7295410967679353512017380402790400 -949050441924909298511093516390629376 4552596149706488973969923214671872 604657412830180455394321520132096 -376943209028968372743158217830301696 5823031640457992523918272452624384 2067207923079314779614419783516160 -284511473901580578916961385655042048 3713636507699051869470114090844160 7051788973246230211208331982274560 -583570298856554764723426784033374208 5771144508451170352247915558207488 2516848491812629697443548392062976 -466948601895054664515438807623925760 1008861098620845793068517521620992 1172834843525717609990018543124480 -484698911440436820428249642278322176 2340657832722964288821518877589504 4254411574428089521040485649481728 -835108997414986915259108532322041856 7061476271204551423543704159256576 7214991132105804630354660645928960 -665044183254450979110470789149753344 8347379520683840670598646693101568 7817224040647258836736677733466112 -708083796599042800204179440446472192 980039844519567810118512829005824 9174487991202073888229827771629568 -966999948725292571364532325061754880 2008599798264161362790808410914816 8137631674675490079746451482607616 -270355624747157161594765890688122880 6050127385192016640028793066487808 9355135067925488064585395798540288 -723772594354522946139054228599996416 3122539452386313795821505794277376 9178884978815221275484408088887296 -997272678040236810092811844696670208 7533281690546858484445408649019392 1496167208468329084173863142555648 -563506223393434956106777752007344128 6332332812119956112857592349327360 7671731846808234324269936620339200 -301272630732681802757164178717278208 6010098992548615084580297580216320 8994256290477919915450552612290560 -513165221044435548137337537215594496 1398837179212823484398716288237568 880174879924767221453738389536768 -953636333391950492889806269543612416 9977081259625292292809812055425024 1812151255286631085504013419937792 -751003294619238680614037914738753536 7782202993891112763902294258352128 7545120320551296478358846117511168 -89307188446284761750679824917069824 7183617079171218267814636344573952 2655740296638233386060648560984064 -188162799990522326945996850864324608 3519388644481043991220646817300480 3485439334687410701428917461319680 -475419573705064159336749912888967168 863989092057184402478916683431936 4388411594481545493186388649050112 -846512743091113960418677721768394752 763145335532047101734717621272576 8896035311732429052048636823732224 -912708042231106135934337979714109440 9304994467070751660348393773858816 8574322762988011501565490875072512 -648305476369805922719683787150589952 3556719160940370908834688070057984 1255420339429608950196590665007104 -311370281487573286026985078784000000 1887413486803837491160523051368448 4908884722542645926533064267137024 -475600189342346825015866615496966144 6849477989412548479476533332803584 217614942050481773906385612832768 -502622349327864564331530309813141504 7335563933817665727925114546159616 8839957251447813054174319991586816 -474932615454166890695221253054136320 8289886177595900908562370762113024 1950961994948156208243276263718912 -530805062081875878003358220318408704 3891263977277117173252152044290048 1252976950715071735226790353829888 -723527746406637295495251708266676224 5020694000105162283473389880344576 7593527011569410475344158294802432 -333560245197046351193088031100764160 1714399993783029265464328709996544 4989246015390499685490296457527296 -67226984294507225023403984731242496 1560109199505873272318145415086080 5456143148089119313278179263643648 -483948513658973015585558396338700288 2587678043909405923416883987480576 706380793135471767284955391983616 -151511163151829305215743724389138432 6086616788016188885954325397897216 3049148830523790421655842715598848 -503750262624693629430667119733768192 2546883140184826852607930000211968 9938573201811937887182776382259200 -917660532637749468086042329241092096 2215075437810664375593893088985088 5905943303641701558116164451696640 -466585308324992032911627378306842624 9283112812702747074040559642345472 2140581303071149998125539202695168 -745793006838724049639746436725735424 1911569031182753383148030093426688 8777419601239194773033938067652608 -658352205992496503550681882329874432 6855754268117821252956573468196864 4149144046456337751285950467538944 -781802085474383813525428954640416768 5230323062850592556915294648401920 55498991232776174748035293642752 -188918777668251651293312174105034752 1230056200915074159828716220317696 2116794329038764683797228863619072 -575041972921984380977594069642379264 1661636926762407052571680572440576 4967122002070384151323072928940032 -407790235651324439927738797242974208 3488299480942358446830882085928960 4312876703439439210192530588041216 -43535165199214703529052060598140928 5796349224464447254830670589984768 229715090106674268525896375730176 -734888621975131032599930142346706944 1389077613553424491700171021746176 4831998453425504390840459603214336 -616332081936916430931649493337112576 1680832107434452210282495339397120 8855019429445060227920552813133824 -710393465541444813292356982422896640 4554053044978578892717582622654464 7620909416681082047336263758905344 -409085396666619430117373547271684096 4670928881927950811087755236343808 8952285159475407655405040888184832 -911465315629024978394994309599330304 940270632022602320507098684719104 1431111817244723009249997632831488 -764077609600276333529841290681778176 778415878485649620607299913515008 9151683315233896175797292155011072 -298542555467224341237297080824758272 452456250294266367036707806642176 2162117589618139397985717301805056 -494747446646755325757763380897120256 9305872896598849182522648907743232 2773253908079946809955928485396480 -867622111299113407348323155395477504 355400335830685236794991881224192 8445967906203921423294615871553536 -713550871770932301605211119886008320 4125846199019014348869495691411456 2083904830397366345427806180081664 -649596956912720257030739509941108736 8784928562296306883405160216788992 2082892331509744510539403110645760 -993363513479079665249632718707228672 2043583443191842546932421115248640 2555283574210075399179883146903552 -401972666814170897927254431640846336 1239152425627795732451839048679424 9955005061973275268300548467589120 -284382057418296972542178954661855232 8217777983347910920248336876306432 1557780573755460583721326493040640 -575859914513477158148096864068567040 7706111184708767444591937503363072 5574199030064056083503084950519808 -870667918047442820691867211621466112 2088815912407674541811147437244416 5828980290511597935827201833304064 -864311350664136657798165033994158080 8572725946608183461000287361171456 6304078919074465737610085384847360 -263720666687291424263922674059706368 1740807096075982530040045512949760 7740254967112956164709148935585792 -843871876106232466038848955239890944 8644935339954526083299850875568128 2489379611987907083764925999349760 -602948107788018727740118679106355200 2136332706996928750146284161073152 4299302712987964614319248886464512 -443000276045516390750576926189944832 1142791227267684794415556964909056 7464986164971596152734878978277376 -516353960640984532718213595307966464 8247834164061796117108170734698496 9139527343040346445848623223668736 -191147026817824481292963802853146624 3421127585156105819073659870904320 7342819377583257722958595586260992 -123352388015087363865996115308445696 4930561573343573664225173943877632 8234512975633970311247267329212416 -238023165605614796445901034197352448 9233434253757277317725707116216320 9219472457081345427222978487123968 -723554592050283991972240268344688640 4162853536959070166558164429832192 9998158717097598298243263553863680 -249328369332059898479374293530574848 7753857534302185511978658793783296 6912564510903005993603590824919040 -66643238457156376396223066635501568 2779373493633738514663328918274048 140714935592320807138269698457600 -738321944992869154647806184806940672 6574527634724421287948464330637312 370956914885863814011237607407616 -710625737176310373302855292462039040 1414873990703098975577246764367872 3143101877567756894240665642205184 -511757051537384304690379627750752256 9413605233511815837917589316567040 1234788748870861876128653827375104 -986547316247242662417218351067561984 9142413146341764919396458899177472 9199432355787948975731551726731264 -461057972221908065087125308953329664 3401923680746928736868839077183488 8436772149524261848366212551016448 -309912281496492125806299531148525568 569656217470461259192328255438848 3001686148446512880100063861276672 -257600428199013172524026843233255424 6496042037846889719315675306000384 2615551103004833739733616134455296 -888473751149013686275772967775371264 347650920840764614742936337252352 775514247139010833745183340756992 -89531940885566705648293253998444544 2276362562092107734862309518999552 1970608654789881992973954676948992 -34802934994720565588011033307381760 6569230398203014542250789404934144 2008243055582734554280072853848064 -704109705652141873663579664284647424 830185944959759352586290218401792 1417481431631360774307452949626880 -110444670227623933308259106641936384 9007380637709757568719420422881280 8239898194338445201785374063460352 -349152488152682467469856746497900544 6654585407055505353104256617414656 9952825332769473016734298633404416 -366434623796348311846971670987276288 9055753549648914324778462281203712 8933721826373406943429874939854848 -753768785961859659693711157469642752 5688714886024898545426184833859584 3895694975752284386432413092282368 -907697720156261273497687743514279936 2562827550039753954080108903923712 1158198940456369167553834193518592 -481208061316886268468498778959118336 3580256331022880298569570585673728 8202812615676849846558523182284800 -591106310548217630077809853506519040 2852613518085711544267029832794112 3651001374786138727615483562950656 -277448376551583133128086918870859776 578785757696008129329061014011904 1053260639198438261386949404131328 -149801249170463872957344092981821440 7392373005321884863443370244046848 5188054434950571947350302128078848 -849728012889150052396293894711541760 3612720368305412546580550713868288 5325623713267717769664537787629568 -392372630338995251696701643497144320 9297070802392485801215699019890688 9463545933736561208196601382699008 -336037906383323004868796143567372288 7179711559110862215794485916336128 9965072041071159732795899750907904 -487618320147745381444415663802155008 4065287497798325079636392905015296 7950476073282002808929463562141696 -804493014838432286564278903716708352 4974800277594438961266342892666880 6714533355505212254464362999185408 -176232719342020017040012249529319424 5767464992767143638436457647964160 376277633262230937620144034152448 -891781392280932360908669804794085376 1206252428659453242271845232672768 5839556448703917973259172939038720 -199398933275499999421130587968110592 9993488480464554475668452122034176 5808656728909836709390993112170496 -633543119664231189409664358823231488 8303491647610155532266743804198912 9906790720577198934421505235222528 -471112415956817796466286271433539584 8296988684441423490151453300883456 4695371401906342394841357176799232 -561790550244405853185151395805790208 3259916902955373934741870946025472 8924305330623048863940260325752832 -932238365806806500152384559041740800 3623987919255805246082705424121856 9400789331256707809385306558300160 -612565804073981827441627028749549568 8453549247077123414436115355009024 7553842623676336042620147218776064 -519847182677240945246803298841788416 2804675207262301191851311919792128 7174851760513380900074949043027968 -688827682528752788612945605763792896 6153256288368639044206585599492096 1550644194186433229774578427887616 -495628332384296982396844159621136384 5185350024034727096498094862237696 9114332598823450669357766432260096 -42413663584817166615186258767380480 438369786478873546454771871776768 4878782149143368215863051082006528 -206711400187020044679741482899341312 5387814314710057609623974539427840 9598864671864068070113127830650880 -796292192064050845664040133731549184 1362977279948554407741547620597760 6545062461239291498313463806033920 -792124652599654051307558885727928320 528775192088148741412096351141888 4319961474168026108280154829619200 -290294062644838074923072413444866048 6122989306491917166458098379915264 9442960781961372210015522888089600 -706343481792640927911192492624576512 1025866618286050725945134255439872 8865680303178671507323097798672384 -112393757185025001528878467387490304 8193316407071662189162904476975104 2370255892077001050007420088090624 -365116040737658200609674830721056768 9912171949662997509466635213209600 8539391234960867788874085090459648 -509142274630710597881139234768683008 8948497449447541607202052653449216 4168121002490661420489383285358592 -783686400317111611333963134634295296 6461559818454529491143589210619904 8088171764096518288027612283404288 -203616020131725727064026196939374592 410463967633086094263833581322240 1702768063207732330780059808825344 -260226351403116237760318312636481536 4730566805809234110638863310389248 6840329030676591307858598617415680 -572917210433768356272232741677826048 5803313069022921144872944231514112 3651571224251400254095711600115712 -82929322035247238411412724730822656 9091225760908565660497599895961600 167937775407605419395212025790464 -540272430989571840834291669976219648 8476851635238977315633111991582720 5779208872469477461405470113660928 -577454246433985895870228442736754688 8927312339424028358652087024746496 5904017739532235007363959928913920 -144594752583151628741313105074585600 536094833725325163504529934647296 1819604152714296008824851353567232 -717884008106433170806527866915782656 3970635158589629051839650396635136 4943117678329544472956820799881216 -710303881548155242042501730094022656 8289292104828316031378399889981440 1302360468888185798320611104129024 -781324026449588666533466760605073408 4519714051568888954889047415717888 2801785025950158718890217951985664 -343016091789663087393456305561665536 4389864583018068128581880423383040 1877800493599583447132237199310848 -301727183213332093093563908000579584 676359257272569467663988415266816 336309335308509922801205408432128 -351390433798845540703139435305238528 7897595239274646318764254480564224 798849815727587552608425911255040 -118779809266711297393021764073684992 1674909395360964156038888755822592 8935271663625260647650488787927040 -818043196363216805062837352066449408 7990289108775978783676338137989120 4807591444070125684093963382816768 -57940026142496171278017304635375616 4193742614182866501145703200325632 8698534114113746092211929132040192 -943431677604802047324969662488248320 8248724085065946198636109945110528 9691069869179228233678044262301696 -359040723596897402917637784646713344 4132527338530336645079607543857152 8914579252347521118666819092086784 -347778093695719208963242103106699264 6365056919896244122890904111415296 8649220901918785449000640477921280 -711797007319244253306358050844573696 1160120510290544321581521381097472 751171801076172705616156841476096 -170394807479224202695095106433712128 2043562933231162810512239262433280 8315715870258401698759372965937152 -48495374772896397148064032646758400 6086994671594845640247401598943232 5964227009587359590180129442103296 -961497644867400533236668196395679744 7926588388292689835094621181444096 8656311840509972451227660688818176 -246837624843847775153178457086623744 8601008586814264327230566671843328 1173636335646931394111942133022720 -637103767889676295323550715299758080 6361223156424453235503242875502592 4616327617462432410521797650284544 -351795452847963993728887025062379520 1127040660690960953846760365621248 1480430772125296349611160586158080 -182618967255149791070297675351982080 3023146065558736660157740173230080 7858348803470421208433023879479296 -527344174345022567532259386132004864 7304827606224840285154670041628672 7164848570976356381804976754655232 -421815033280599304140914198625386496 787318962978389971576114949128192 376883779291836916900519691157504 -34983854889456459539813190246334464 1496475865309450405719277704314880 2822807858193773654878678692134912 -340587635402592859631282365413720064 389205688799736941932452524326912 4906013864648153707453817921994752 -850381313611627575345304266388537344 3748154093471083332488107527241728 558799904000693634710523598602240 -258540753816677502146134601919102976 3468941219682816367326712247091200 4576193658471394450347357238198272 -354048114543115516408815018047438848 3033951698924524818797078310289408 1709187922555192326295641546293248 -489309555750868022685289961727459328 7706836037223008055143245948125184 8610600566498366132675445606318080 -808915068852417229188789579995414528 6147846083391596652250598326927360 3435904683415943241049498816872448 -95955520410177880895599241347465216 7291650646242016133884107833737216 1597047068163887673052761438552064 -924853616940120083219812473557221376 4814445230707013832846030055407616 5035598732742126772248697504792576 -571323444537401807035561245841293312 5396993612407948967718947385245696 5093858021991536343388432250175488 -282858918954919249736415365660934144 2427551129043438369969998951088128 9389857514124203896350892611338240 -816294855372315513364668314283933696 3821527539479763359947395264675840 3591523005439804086667336145174528 -499194958459041487913537540494196736 5848857931392608887366470076465152 365821659792659350173943360126976 -548015472439427042787707239639547904 7384539346065828490502732834144256 9700969919261869538133927419445248 -327420509574265684847488350036164608 7667246256836909099715984850157568 5007751716032802056088893295427584 -313169120657313831065318280319205376 4271338105819564490302097276796928 4602660028071142019573996364759040 -710222177283121384300839926837018624 3210464736778280047634487867080704 5729658040097472813572471939661824 -104270209842812739528829192214937600 7262889551243065964974927566077952 4280928315570467420279694774239232 -168099400357558032795023379005440000 4009260782286769148907022016577536 8240238218627334162524399569207296 -238553411686844675384427840417038336 2980915909414570060994000405397504 3950682099981402336745322625105920 -68358722674760982713026458551320576 1808369539646121007473679956705280 6768605847286434968600730568491008 -209823990269796805353454888950956032 2769888219293923221201398314041344 5111266357700769432643373402947584 -728061141809907430643628209390747648 3997393188756725606695629267927040 5886649198812190686637235277660160 -820208064308405451127983132865724416 5206526952113739935368318354980864 7574876067810122485182815904202752 -292263285291211978030912322656010240 1440522845138289297207134974377984 282921540287994917913206571663360 -371038865314242983919092304839704576 876149608027678069619907138420736 9272254195060189821363014831439872 -192828704855126234509076201681715200 2624102112917756208747111579123712 8333340194053615477994488399396864 -610807814886622988194992384622198784 3347526783910060990408122039271424 2300413253943047328317968004153344 -747791194469592687159165120493387776 7917512038103471258489030321373184 3535521182556265243620689070522368 -597550344429164801781046299261403136 5033348148058517983871359082561536 1740446532594510188153790728765440 -803286481509401340185601382899777536 5640007591128891924661473608990720 8546961498773569875355726054948864 -754156936805986940268936263741997056 3316179600744465188982758857244672 8039440494547518295285347108519936 -511900718031241881356637996071256064 7564727770242215836003778590408704 437207935031549588805786233995264 -152895506532564420686868452982390784 7047517573799978025846146980642816 1269966410551991608061894640795648 -818885533025434967281724738873851904 2450865639617894463422086151929856 1543849126802898496682460562063360 -740329022799685386358318535385546752 9451784795297274429919652149723136 3169269069324729976910773315698688 -959564554918587226249015436477726720 639861406988299871951310817329152 546818652770645569673208384192512 -580064795859253646282775024162045952 6553611552319059809618819614244864 5433197607014679980696156386623488 -665011631348479814993198013439016960 4780126335894866865113828096475136 7387410609218632328464525367967744 -39689551293553571541095849306095616 5394411240635361108474045495508992 7820553397532206658506919115751424 -806525128725515663203569477259100160 174258202537500631910166179086336 427345391183361509607664353542144 -589456079663742473733582135993827328 3194423768298907236824908791021568 149660808491407728837109638758400 -430347733602431730943775775318343680 4710423528276513281112226526134272 9385016358857240598243636297072640 -186238262374917081272121257082486784 9455011786459521687880528188932096 8202700278157764697892745778298880 -373722745782474848088727478176055296 8094788306582771847465348957732864 1936891587908635441636637340073984 -344951075032474223410886340551639040 5264568993008268167125877166964736 7047662965816919504110503036190720 -132224478950067192067400941290127360 2517732829792560286892305284071424 8077612859984539295206175034834944 -348092252541832380637675337983983616 6563590521606170236256374531031040 6825635571925826823478283029446656 -762171972269752553112234288572530688 7886605828071585574357460548845568 4244542111956711228866324900872192 -70794043592511718316792541576429568 6840424721924807412220632097619968 6740360423223921679910114481405952 -840701791427861807109314957604290560 9764361651371595271999470289551360 7519429779921466529436580962107392 -848286026161765642535440956897886208 232397739950176022372309532672000 9966835829355996956832618548035584 -187471542436934995271944268297535488 7756475264745417671693216616808448 1850122840507782304530384470147072 -72898271668589247092395647506055168 603684306725849208563368426733568 5301178869197859256398745415188480 -89196440071345248003876755232260096 6486762525042516269501144075599872 8873171462102005142857326394343424 -793027387904091901121200797645799424 7076587408523161430745312449789952 9455001971272119319641225735176192 -539074009260598066986537051265957888 5386177471557977062609639505395712 2435140507461814613664258829844480 -147719134273170525729802191567323136 116707270035618777459479162126336 5967445798886424021055636374552576 -826930547596202779536428156378415104 5233482845857830354018217853190144 239967498755191577313291509170176 -904420272207773540262653626876428288 6305620368778240744744103337525248 2962281659472530202187356612591616 -916783705380114001479949433691963392 3007613800398017616335079926136832 6788874935611877160893912138645504 -711275567828020398042817564229238784 146690116173452222027296013287424 7662937902262059313535484434579456 -161570924551120065201038531724574720 7066244440294166365548168863547392 7604328253110623417443812770840576 -678164988849885066384801534285185024 6262929042601658733757677277544448 606127368408572286381998951366656 -42399029581506910263379585943994368 1280975708488208958018151117750272 2720281670242962248324883685572608 -188645974718367768420754101112930304 8125181880536931510484288246120448 3907659606890955559036291169386496 -995859910859081213524491423042240512 5668447550766391870098772351516672 3458243085311671141169388647874560 -622752364067075052822170087926530048 3297696602120619001729069212499968 9360107110397507574000067171844096 -618714166100562441019490312841592832 4868136249892600879538478732279808 9615800808182755209509785242173440 -652677163160634088187480981179990016 8766542367893821936996963435151360 7478958151413122843045500104474624 -519700443760713375695518157638729728 6582645810402381781567821072826368 4131219025138681510997031565393920 -298279220367332556809685047636393984 9233602705504604628862800362471424 3014333245898976435125578589274112 -392408400353748176854310479974105088 2648507726918129624516421012684800 9309485830407805022371286016327680 -764323518141185445740168354040119296 6626453112558235017177672819146752 3373547814575026467192571206565888 -970232644472438844265527259632238592 7598235377664427915858876869640192 320137275468720533764869485232128 -741188716090305851095330062637989888 1976495423354342828844682462625792 6856248715273920884634244792451072 -229568436780968140354067057891868672 7112414328463657428489964787597312 8283958097414995182810865288085504 -540511642765972839984743948864192512 8144907780354129523046435707158528 2728081674744724640320088308711424 -113834401767448159289721563729887232 6708451102710625029361964217794560 5672737788541285223233784341594112 -872461824315670376458635919707078656 6205685830495411987827354511605760 262766428985344991652821130543104 -256564726749917346183848627703644160 8119135979562098434546539100635136 6981436452959618444987621336678400 -973050328696445879196657923014000640 5641532380747948976208331482857472 3772724771304752579154387906068480 -905103644818026141350085423011987456 6413443478584284974012344521719808 3400237126064684893122347686428672 -961454954191424656767456569938935808 5698409404906950525024317191749632 5430245690060934631410751284183040 -362192825352169629600995378106204160 4450338527255910775082876313534464 3503031439076679375865301163835392 -796479556456372828354877766049464320 9535392103320913061072566459826176 8748903939888420869607793373478912 -888709404518821978122719458028945408 5669876318311486157951011389440 162297545755442653994429685170176 -25654916391719624167778959769993216 483955237488107414724302918909952 6426647145622294339951788887638016 -266752844809599838230943275530846208 8163808256442873223749945360646144 8980619058519025109421360825761792 -366938009663761980825817782322987008 2884361343708026074079898420379648 9078758878455886416749530261225472 -394857750915497272337428704925843456 6846711121326416594033428672806912 8988025877927473459527881242705920 -766971460363296556130168115522699264 5642239687486761107496059025752064 465269070144278396574203008516096 -649847405007315594494779607515922432 90332800115946919141478001278976 1384629924313422153231426811592704 -270190050565985411460249500877062144 2808434583096912996487316191051776 8046089167451777880023309395951616 -113907616569575556142909356955926528 7456320226328330228375655444119552 2182865507314647936212408299683840 -764110530784137766173477887136497664 7440329035395965811476777194749952 6677042903827912469938817141309440 -601936923780372130182213998181613568 9435289622955056948466261082243072 5630716998211604699429739968856064 -552508133026084632848952031059116032 5297050967510688143235054410137600 1006073336838599550903856989732864 -653078660308713174819643028332871680 3270047470511169759630376227045376 3759051182869494019106152787214336 -843279911783078058360412470413099008 1083168376170406177107912326905856 7455144487191818266623205321998336 -505728625258865714606156685516996608 1093653168922239941308612991778816 1769952962440678846242362859978752 -473598570441075960241912012821495808 8616281550556294313112950039117824 5425782685492423499989597548445696 -520508812911279819306263067123253248 6096453845240738806058982748192768 8300650166208604532440488818507776 -238503006593713790101725790458609664 7841329147466696995690061093666816 2773239088601885314172749527121920 -183527231395713156158729280043352064 1521701212555659316249469747462144 8975067084274549751658646404595712 -886983473903879829645215414397960192 2850968400948777060856350350770176 9060781912108737646115582010982400 -606612175809184026354941352701067264 8427774703121463136875809062518784 7049625231749040613335926571008000 -235280333375735420415048539401355264 2068149009276450458732490592878592 6761656390924207714067802585300992 -187887908830005394203032769519419392 6998582452391450464274847306350592 1058383885442267887732789899952128 -208098099065092234656928497429118976 7422306666460117046205785609076736 3862362855316228750368418417344512 -920937708229130257829897989271846912 8976221991075180831401058366390272 998588830866876258539549604446208 -938976786907705444558210911688458240 8497161660602671101547352751603712 5601077733095322027598565716525056 -766904667368822854130406412049711104 2370645845865266404733843903873024 6019352062365188320126142959845376 -271294163346698000135380599752884224 9341206104725784959207907673505792 9977709128338098345882317899169792 -947394279966586781863524992685178880 3826418149918533618145119946407936 9211496607881495788987335655292928 -799946508838087093400811491861463040 4703268698770889561009171491454976 7054731185523388693873360614981632 -761763364919153720960553052901736448 7832183039352768338151108943806464 3291784581767997615443135806046208 -954842714134850735668715521900019712 7867928831164753390675218770427904 5607290406476419505723187201572864 -354284574859021614287542368964968448 3557217057370732324929861738037248 4089258776198547734833088841121792 -100986394837210211318509609777364992 7428619207997207771655730779652096 641454665031263719108797433643008 -709186154711590983006098574173798400 7222820487077005576672321820688384 5409633114358489900373864192409600 -107090059717924122705801891956129792 8390224620320615115421336922488832 7897156844986558545380518955843584 -586771673656673757972983293721706496 9598779062923046287618909361143808 4738532680160289328486016314507264 -853768693023994563552767723974950912 898656039546156574110574767505408 8640969451979868858758220755238912 -724261661821045892356205247299846144 9619956779995800753987034634256384 6813315989561805292872875305336832 -75170219021562645753231312659939328 4131425859653927211801385266839552 8115127525806923124006441269067776 -786483644289756674111314036317487104 8116124595802810540561054910382080 5259293410100804040493918863753216 -519690566452461677668992029072293888 8479467253455130783879795071516672 3535209038051737745349821522247680 -356776546631361853295205418763550720 2676917221664832930634280466382848 9018667088349026928318552895127552 -144245065398789849652867620348624896 2298000535878868978579491799433216 3364436905470347752131078402342912 -316881772558328073859264081758781440 4682583172227823536655585721188352 7791259435824296151110181569167360 -942604239327914003009464114847154176 80178279430034234467831183835136 246061984473191452258124183896064 -63166169385497914944294118343311360 2088709405113925627206841730596864 9190698304828504550700144683646976 -160548332784291205571134494456414208 6038037121392482743395899676819456 9577389629764846448335809360691200 -33342421095220437095496657202577408 5634023990715364819619016857354240 61414014159794327391227881717760 -12182242780777863645321184065617920 7838803262896349149309519890743296 3664391992658651203682351051702272 -51250535654080646588749681872863232 3396893614370752790164486987186176 9880005429196653146077001334915072 -354664038723859406377001167043428352 7818123919633935368465575994982400 9907368910044158918015869886922752 -860187747565089063922540959332564992 1233291435382057752139049396600832 5369075675806171233970321440636928 -799122935359797482093374032637329408 4694161831487881041492774544736256 2262683501143443743201937307205632 -578695904628216601987260004199038976 5869042520541774318543508397359104 7853698398315126096483023925018624 -79520874391882580444222998978756608 9791851653623085856558109654253568 4027521419202473469050761200533504 -631404500208332210845815438821031936 1284213578660420829103252266024960 476443900136534999191929502040064 -9105630819555115097732044812189696 466701395163553382035311441215488 3577518580018919424980425405104128 -203908502552453914359953539672834048 7945856499886675598098764566364160 2677210365126909303000523637522432 -469237191566428537733361419641946112 864932987434794223720753572872192 1484977793833489026796780827705344 -228871885183323654994348900878385152 1033832374417267254791999840059392 7677127393416820797566207966314496 -163465240613087095785905751423188992 6291176208969667887201971760791552 6242361924743316560020525782401024 -877265324739123908560263763558662144 7780169158659523858750181159731200 470870459567217057200277490237440 -140336958205452999716121194281304064 6662226782706369736577921855782912 9541051891226205274300524166905856 -848884509518293574003859031649681408 184417202587711799819116413452288 5644057388784829064105988141875200 -559493962918999575848870671684730880 8111929561134711487843216482369536 2894980778448113315250851232612352 -623340144009460032873428873860087808 7720042204880142067088589682900992 4228474399637212615627495077576704 -958850281554661058874836419656810496 5240886317345592538436387148398592 7172231715135922270198727853473792 -952065428729915967080740413310500864 1185988997084099979539256493211648 7688769194434923816073976189288448 -262915318738995559754085155546857472 5606338957038443451678601938731008 2896892252161242642053921889058816 -44423375841159940099748564979154944 2300569494289836826465978388840448 1034065125389752738219751865581568 -421556521741402709078680767068897280 8721717983080064099938079330009088 8661278580891419386312977641635840 -320060041832279626296319034995507200 6321602776061453575642109658005504 7665419887057115816500008092434432 -65822652595850859729307233371029504 1442399061534347924657067857543168 4446640699773805054526135851810816 -929733416398532785722564392190476288 8092151575097090867689175971266560 257577009177169476580891647016960 -46450332320143551324162642646401024 3905455993626294749088043308679168 4206750810804602136131782697811968 -234881560697947763209752821599567872 417517567360242244465451079827456 9033288795167837005842277594038272 -89078583018566423762324848025534464 6815879695032783458028544201850880 3350444720681901665856536432345088 -702221249513697810325771837885120512 105048684608131552993560754126848 4350064841217660815909986525773824 -920245412322839556110246152715108352 7289877253029965586790838645555200 2292327804282915430114150431326208 -819268504991273959727945939050037248 5976376373323268228477754070269952 4168407606564356245601222817480704 -671583251449274235189629611342299136 6444756062997062143238827155652608 3088172973689133209273763520053248 -968444237739738477934343419582218240 5194057627349755937798899323895808 2091448447066902590517054736957440 -104640836437042029769672390386647040 4605560733733732173967324728000512 4919978266349197427605931819008000 -578945967799684103180820205084344320 672316702063236491183704336498688 8705346308200542433333390218362880 -494919792882771098227761575578566656 3134141458415228622261809819156480 8955006545142146114209893891178496 -305454045714682691504519847239221248 1935748418180972740986378297278464 7380707403126032318694413117161472 -130490995249319038634438511214723072 7572370548957110715448625113071616 5954176811846445929259945699573760 -688981411266951778326803160745639936 7243332075545488217611004186460160 1363099744268801112181383880507392 -966829826870671415813794452434059264 8317360242895558618044256843988992 4605187619610258091461370728939520 -895289882590281466693470639345369088 7780539942586707305454523069235200 7434679461831558114473723438301184 -157074608492409366900761522591498240 2914340525654795499327763781779456 5571858288005869808856991700877312 -770801958581995601616275077282660352 5470676310857570292765577875292160 3687064877260604817914745541623808 -937010381047199770127901566808621056 7792700188384992698251459786964992 6026604931785783061138176449970176 -900284627079760970709464632034066432 7778969234609829479837425024892928 1267627386224009752370211423518720 -256925954349667093225155632541204480 8251712835876038606594832213213184 7361331270663451067035104453853184 -314607496537961579972591400211447808 7688545056688758214285818027048960 9538208013611517388572608014843904 -354480190407625392387879974025035776 1271736953142014073421745491017728 2480498197975373430939280314728448 -657239733340139587229572828567175168 351697656010285506467310881210368 3615814805131192708548652529876992 -812953230778572026155578694567985152 3293309564780976318445967269429248 19609402257603334863699734167552 -201995033488870704451668774718799872 667412540124331312174737225940992 4020359853862132103019232743129088 -63764747512674003708997434140000256 377816679043842628879407678226432 514188986735111658005702610255872 -200577089419302743959656236062867456 1277513829551108385205389159825408 7395755283519169399909113114132480 -544763255022646296822003083404902400 3277487362887939873002312788082688 9577103957480025979594812757639168 -452695641111475746964775482941243392 2951091592378262360406191033548800 2979785462355943168720419938107392 -19524455547495059583877811212910592 2441001483893700944505058885632000 2108455742770132555108571854929920 -121343733591760669616313126470287360 2922286359716127062802381206978560 7196728614746085933124714040918016 -716714337590461579690615578027884544 6494544997582706011045211592982528 5726583281192873016369415884636160 -833567038722329940746370972779544576 5028300336408167623697278540185600 8963195797321539536192172762071040 -474109649560392342520330167829659648 6164292459126260105458906707263488 7129637234622259186662336886734848 -308474248818339375565812808107950080 7901325768199292359471403416682496 2904111758522633142616578850816000 -205630045589968381930999936117112832 8456380313034840159283736785977344 3898282984356282793057546965876736 -664457531380598527619508590690172928 2401018507652848006746646738108416 628054568160404191880264722415616 -125258272862649617648126435111469056 6288026667931017040576803244081152 8573854686698043280688539274051584 -732832289833649027131748470432464896 7617112350375334960645923231760384 7860507069401790927475196003614720 -187883721528968695074578931143147520 7282271685802026374188252436365312 7960009458037416764538240435748864 -356313595928314455802126405705138176 2809141349491312902542578535104512 2154799219011302268701059531669504 -654439489475152615789299179720802304 7140553410998642749161654930374656 2684186732699683075870398059905024 -647894074313399322496183394285649920 2027362611319790215162300679061504 9189238167489925139656629586755584 -907874511175314947904417067981340672 3511375313622031708835382617440256 6773555543847727598415256513150976 -854170108126395291069394476387532800 3895654014138743652855094752313344 7696830299520479803816419616882688 -511561152286707642104632895990661120 9318577663295951666685101335379968 5077744595469576530365169627299840 -864755421477223279848607808976060416 5144561797837046932354568932032512 4598406974155499016724632433590272 -513147921766319878467041290767826944 6441560380974763785208516694769664 2655616509084653364645729310605312 -518809612469279459016317621923479552 554819431383454468619012453433344 7564937742417962692538997474852864 -214911831298514566141184142030667776 1451461143351358035845540256677888 7934224773466741120004064553205760 -816129005464157720876673129812852736 560751048378346308333152086523904 2487194798662746796276444456550400 -46375285714316511401839223271063552 4514867674042049973218158823079936 640929258738122370222969472417792 -300958597322236195028938584364154880 2278971257184444170862086485704704 3759699128656966043693819709358080 -800391811845444916158844966518390784 4395734582591197294181471137824768 404552570507989496173282354790400 -815312091185337898981473148712517632 8870638998305918984861659858731008 8875030645439349405478935112712192 -44919132706976500964797654635642880 5247299694164276200986334954782720 7143968048344588942698717575643136 -350660589139700938674202863795699712 2854794981885982726210706655412224 3465604138314666717282366377689088 -270157325678762890823064250528825344 9920609510687888886192457497182208 1437784977518690368631146759061504 -991148875625350680557750152322875392 6493944867463332496115504611590144 3771358011884363724555063459315712 -380968191967731064076732087010328576 6997736282262638749765076655276032 8482037413827179388983733341126656 -58175833638698442688908373799206912 7926462444018061870692950280765440 1630752754079896878424944531210240 -136829609459737900159629214579949568 6709882423819355557947570911182848 8633664962957395162596477356736512 -997986013037186578881919375126822912 9815069935657324320638904397987840 3897593254073009681436071918829568 -550467445945476831434269762590343168 8998616132620956156580664782618624 2660449130955995401261370813972480 -41209304186913305773096809969745920 7864417033489713770244139980423168 9431875076201247297907011270737920 -980717050555961663807079477239873536 6284748175386730957618385474551808 5461054844169715801674047721308160 -648885484384489150579064457238937600 3276177568205757121505149312827392 4032748500249882567005018538377216 -719271766502461321491137694617567232 1120563528043945359111150945435648 2670119758068160735179749130764288 -405446599357530191572680070165168128 3652139902435696175447177978445824 8713127416065843765371217880547328 -639544279800813326919439243485904896 9695057234240168054948672854556672 5356303530531228161049390416396288 -348867928705522897375705229479116800 2635269421133962076433847953653760 6268852229002717951280470713958400 -469972461850768147981586599031865344 7159964383310331345257069587464192 1183109702490947180581194056073216 -797763523323718735491452754504712192 8780060617091049914948964925308928 8407067658050559711492444107309056 -942553842819742008430740836102176768 9932771267008607558743662199308288 6212144034221648863006007578591232 -338398993931491319667453914446299136 786337277380269307103482663141376 8988809769017855048802027062689792 -706749974712534844047895147556372480 2687818300681921085666807089463296 4169941913570900489219648318865408 -58012727520884724403359967990513664 2764430631534796949183600330276864 1711205395501972399190430206394368 -104869618681086976403568271611133952 4816893061844920663315693350944768 7095775153354678900538478186987520 -269173832451354276410809764108304384 3772580760828964598280040965210112 9673725378286259959154183579369472 -427937118752618834791662524418752512 8082273306005472771801704680128512 3911825007103555557154877408804864 -258083733272669189184138925488209920 723019951378185495583048884813824 1844642071746019657494851047391232 -936917914782408938092519937051459584 2761963779435764069393465631309824 6332383329510126701432172049334272 -820816113205840633137747522305916928 1958544411853574486147193206996992 892223724649456182611340832014336 -902836194688234127884081037337165824 9959059610613931375247604620197888 2881042830496310614501018484867072 -161683755921613501059355830145515520 6709874163648355144520661045608448 5153303301503284709648146567790592 -353297314363670567663752103562575872 5479104477371425365347899013070848 837516011198008759625627511816192 -405415244215344425005667625371435008 4552175648144317371322498684026880 9351208376287785761772710098108416 -352754470804168339471490854638583808 1298593646451608094706747870019584 3650581493399079123270007890378752 -646260114784494352359554754273083392 341331701776776639952225981956096 7744540466112781421684976441622528 -596698605242327757842554066753814528 4155032121387867392708744287617024 2639524479818281563428752231235584 -517426496067736508727612181936340992 8245391985017366881962449663164416 3948098979052427308520231434977280 -294755533865606313653478108254175232 3210062462526878073808468532264960 4180614799206299323949486339784704 -694732685353328549512492978284789760 4990596302015266800286755847143424 3417967280274916042258338228994048 -852212961864404407682931094328442880 5787922441095944872499922193088512 2431116859650382493468630479536128 -28162368828641536849403451606564864 2748793687321348334869218089500672 946956943195006333666227719766016 -833290339378437258301483609403424768 5633669017967136310114810433896448 8805512484482711537194431686901760 -112525274908847812282234399396724736 5251065359133742110671247264186368 5090723272803242252450582740598784 -411432424210706316267430249393815552 2296466210401859589524604957229056 5560150345707735174515794099830784 -308971837487855616393485671332839424 9490775159383659976611302635208704 6069708505458359391173786529169408 -177008369895510716205518007811702784 9493360417115004565642784628801536 7561921738103445679624992371769344 -556869389369748728282352389793513472 7104016711327908949611712597721088 8697031272856129506376664995594240 -359035849425674848340188240277405696 2918463578056089355781619656425472 6140257629053068983472434576359424 -312418329528023151524311132889153536 1708670624480683823105590194864128 874513177842934202366924714672128 -786392181572638934888326233398968320 9040100551712007959591691147542528 4061916077088128157713702974390272 -516151770553920073474335736602820608 8982338116593272252400370370740224 5138641859607303219260062055792640 -864523267158262251195761280537329664 9758966973587450775731336686600192 4874546960325939525957899710889984 -588013506822031597241286529239744512 2437970541881283458577211253063680 5799210689296114965358434536390656 -336760447463575925725133140582727680 9474395456116202787422123283447808 4641104412939275110423248381149184 -457934450993198336405872473716817920 7270391890028684613647175436468224 9316371088898449723342706442240000 -275285954124496301647867208049623040 8304070598443158167870673319362560 9523411237430499601831723307892736 -982852075115297444320280358886047744 8063758537727957738464687972941824 409206612226642608325079674650624 -994416918289212002167581607932723200 8441145269942811729897297977278464 2083603010744538288540016263036928 -28480196032037448773017543204929536 4701922374137096327452838120652800 3686273779060347713729531033419776 -377356316827951747526390539228282880 843079397087835606635849667575808 2833727731045537184929669216993280 -610420173326223053575030874423951360 6058842241715088287699602142920704 375612299756527904742538385293312 -904136916889613976811203596545687552 6484261525391158576427075278733312 9143722736868585214304053486419968 -687029386532962181286634316594413568 130697179883178952322922441605120 8890409760367397272838605511852032 -5591646029498215263931834541539328 7964256297992289489485510953926656 815314090292992468109535777652736 -119410055683421106908299214272331776 4313295129559475591436210481922048 6336069235682581986100184612864000 -505034628359881434183265492915978240 385773921698115413723890843648000 4814868817726692711172200667807744 -838619858096778743999152449459847168 6801447557887436655104291745300480 1620836958835147463329727268257792 -438917372797790769730878598639779840 6214203176496805204691660834865152 9530402743804123010008417560428544 -791228861881699310266429285718818816 9941976995484647106842459153367040 6476614511460668967677397791932416 -663624888150027183569838744994316288 7784735250479424900394057228877824 7406287096840532592985560309563392 -113722456933659309172170530133901312 2859685504785030312187962394148864 5408775877930614474651811893477376 -315462203411857748502815264550682624 9362366741193446838387882562945024 5931045461986564005800333174374400 -381249112807819043246111750931611648 3446641587342854195011296174276608 1139192781404349565985655820910592 -474321519744261348905513486848622592 5812745337563093228019257509412864 7049973350442711923220243697106944 -736744374696541208695144570876329984 9733772342933780912852235949441024 6270171542676589393553774656618496 -755823047222885732466753066003070976 4713729894500336543788628292141056 6349814448672715516423819984109568 -749395072145760292435476131361062912 692840167347403198795999210373120 8872410586248041864319297768128512 -912938128589878392712856441997754368 6520528446839134147194708706721792 6713317457562755286062683203305472 -81390018492173612006102062552055808 5234997037400568845499550060773376 1665672630969594826691974258491392 -168554422406762233040381496052940800 5891803419611113881331102163927040 7362122371916121465516910549401600 -6667810708231443744083607958847488 9224667168218653215893825358135296 4920677081133945407545834477715456 -323530495719912604815694097234788352 2338792903647593746523068120956928 8566677009326422542217815040983040 -44566308689379566677312787974193152 7416150902561820226216871317209088 1910405199542042081309763259334656 -507306736739267710959016570137870336 7718884565677321450497858726789120 9971772609854332991505620782809088 -78285425918752797516332172931235840 514082817078628270803984047931392 2697449901879964931599775962234880 -364030266662832410763957994069688320 6890864344013337815779312878485504 1076276817783471465870383143452672 -265149767484446961807281700951031808 7838436181549372258750033637146624 2425998731260440934697372135456768 -660740909785115463289450120142127104 7870311182639296560835686865829888 823698131353315589183593705897984 -513518010401678414094986577319034880 1892022746108905201050611259277312 6712640110707050596422756557914112 -594213377475143344842214194823561216 2753101185281408168286442504585216 3633239790163708136403929193775104 -506500472504056056043771562047832064 1605367887635468101460141673545728 4307312322796305483353572241309696 -147329683454327192974863079808434176 7323441842056647128249610245505024 7139014345298353756585941008384000 -451532915486922938419262325067350016 2751393328592327072251890527895552 5641445915192136088029332406009856 -983638612799276675886433438315577344 6893590987276680173855395698180096 71726073850539444238211769958400 -180780940905228044134994120301084672 5837245410170486838844458721607680 466443825288922121903691100323840 -608468219132685801019095003992948736 8883645328297493765730966517579776 5051122842137830280444924571680768 -224413262183574601951449974984146944 8005527226564073683607927729946624 6087051043785645061604225966931968 -861486825979385702750650234772127744 9213060375868290629782629871779840 2936093401992411000881722920271872 -523505846238463568049743891804454912 7035890724293627273939398959300608 3952847407256428353495440585392128 -613148807070863989618271401937993728 6575808306219606438998485151776768 8226664017915671674389870411776000 -587331006178314234432625526509142016 7348297232758560053033193560866816 464727461227722717538435272278016 -621274862191607986991382938211319808 8708393960896472562038953404792832 2144603583155280414518336110460928 -193912167592735926400385787799535616 848094763654002127416397800669184 57900647654505426131409182916608 -66351881489629544232316686317912064 8458454032243552877237306379993088 8499465183464878233739448100585472 -410660787511805396742948121913327616 8966309665023371582903704293998592 5294389919078132246098477257326592 -43303846036299096013802054063489024 2829429448016443797787150030733312 7862224420507271574329629297606656 -61202153217487801935621079311581184 9795802732881118355224889990840320 5060003729619801484012649667624960 -306215346576808122715908719700344832 1515513203071927329261744038084608 9346658396499166398411039018319872 -779532578119497252648672060501917696 859569623447209817504648079081472 3440969723123129675060569194889216 -931122932367409284003538411766939648 6055093875319933250604852901314560 373064479190377500975335269728256 -187911418744029903123217783610933248 3565954245990677329231381660696576 3662055358438980798220650432954368 -966697389794989463377593806738161664 2072917577519550142795942159450112 8958113434464754242556184773001216 -186284666803623935443692903381073920 1029440352705640655611244570476544 882296554544295001337855968542720 -989860591416093689414087376457695232 9227158791673453217682437926027264 6794450480699247220265157675450368 -167075651076921833161087223288823808 1636262342123921990445354096525312 3584518655124894039738588917137408 -41785942581752104807053018261356544 8986502345524905492468690344476672 7593646702045911973943766392242176 -249413120409563857746562441619177472 8557808277989583418442342876577792 4068907922703217511133646642216960 -926184833517440210972781827363700736 5675152872138484442094103236182016 1046255773114402967454174989516800 -91298444070964064242407279582773248 1428370980783256012903610977353728 9371182650967328555639202352463872 -197496071780343658499504445614718976 7276874809855278554171834166673408 3141388720236316172390282599333888 -154470189502571682797302086604161024 9337762821572823316956471600611328 6957063299461477116872012169478144 -694098354076381108244673411755802624 2019033715913893159506842467958784 1949085508379890027025230022574080 -485286997630150597857682252728631296 2281649415453995723453109144387584 7040646924527208657778914967420928 -251314571514118587468769924881580032 4364063325902398353602518011871232 5050677334384415676503020173000704 -740629296773103819663659962621493248 8251313423008103646138381528727552 3454307232394210950029897084436480 -516639792302524819192517461027061760 9825655864543075745409044139999232 6904608553092925303960377676005376 -940130421470047480988625565091102720 2266923106360737942524536096292864 8944135479659375111694572138266624 -682531479127311931389512873626566656 7386438774144641239132476543074304 1023428009788135834974546837897216 -257651790979173091944008792038965248 9998686676212857452611169605910528 7399210423569137879575305455140864 -610432927225701395447650162703335424 8458839574288565786165190294765568 3895780437397551808929593898827776 -889204235597956098614958881196998656 4035038146184341059075363942957056 4548073874778770820062007871406080 -6966744686824244633545122699542528 8420519391389560183277912355504128 1495414523716107539357232172892160 -59011337815259240998808814308294656 3432094387985261946792207940845568 6422134845543368877050106461814784 -965502574772740797370605251023863808 7106958157582414022491278063697920 4758773090394399421271561595781120 -346530584323184204792296391133102080 4600334088624751576366560510476288 7685946912126357504305722080362496 -708293896324833716302385486325874688 4300275995619954298219851296014336 2870803098418661318228207734882304 -37965572558223155066093139316965376 6249922370316205866270034222907392 7092071947003717009183252750008320 -921735248064690733790222678734405632 6492950295034157007730951055212544 1417308193562585991729844393607168 -509712712354603010407799543488839680 7398801157124661923179124708343808 8853808552659531510171784905228288 -544894897732524143184267656405450752 2856508539819121426863976066580480 1479924890352754849245721775833088 -180392898326850804352436144059711488 4692827067399397605843756700925952 4977505692420828124878863821963264 -22738144893945107161144598642819072 5636535411915382203343397776785408 3606561385311717334311980863848448 -576716494286250502787953797302845440 5091283511236465020202581818867712 7221347719265726957782633063383040 -427591313392096360239598268980396032 5357221672165405996071805232611328 5223665451292398362420914451120128 -851536768777379578094225697569505280 5906943462147508968185363458686976 5468021137144319881209349327028224 -180416598552303676287335435503403008 9249752370283087489292185836191744 3460216730604829538807254345580544 -336090336351589389247457764935991296 6843838313918651606392838849298432 1596256358355677099866323859537920 -282918332614970093468357920655671296 8544433939518767571957853034905600 3578846181491496020776499164479488 -626884719935981505172229756528099328 9471970254875081030986391839834112 5317431751657224181467883142905856 -799685570025773670872806083254026240 311260288617491610223197682663424 7561743532528953221955004355575808 -737074552936238460473583369919135744 6285030924927850650047919563997184 5206015372149552107068120635539456 -884659866108376208285205162379706368 5294115983866280444680009724985344 688830944517160175367530093740032 -272360651763702070797514390766616576 741683191025319956081411113353216 4855632034680715426803150535786496 -800790171390157168104705310664425472 7990807314064068179825330992709632 5319748684828636301339545294602240 -478799714863912572416490547827441664 734655962164295288738107376009216 6510053854614333393862110472044544 -308299324408015953502817863713423360 5564216189378107165681712241836032 2918549246909130799782704028057600 -515199518522672383429552610134196224 982070551247894145392842823958528 3630179405641504334044545731788800 -162485896496221810545688771873996800 3313849831340792211813790530928640 6070069893270305035030054452592640 -429879672571672502494102188208422912 4101242247114073600184069564399616 5217655380263365150092407290724352 -211297306834103096261099989384560640 4219769504149083594757998156709888 2160902044731000456644840745074688 -396779772777484217207472811210178560 7347505199717014721719792232824832 471630515747320890020734911381504 -737519905479056073797609762622275584 5407552235586281331020932887609344 4724976599300997144154319473344512 -148672668788697575204051417781239808 5929171822987915061977310973394944 7046546701194977021434383409610752 -419514374429797536952794923004854272 4767491211955049931872169581608960 7874514615616911657009202667192320 -613357915829275660435880998623772672 8141157006984399100759439214379008 2675169153966812947898379714691072 -274612817975164007730632306573967360 1771150504091087844610259348881408 460484199528390046163451171045376 -916138853635237141356314815411257344 2765262633040775471222335509364736 1592658673858382649948542592876544 -582112792969159535977216848169009152 1384697322809939683018385496473600 1474050942602503307762806563012608 -783070065458364209107540755624230912 198718292866607961386163185385472 9325896333525965420604965257216 -491117262246364132502207544122408960 2508558622320854418003875776692224 1606021791025353202617085564289024 -625006605299004364882777079782834176 912515098973604151845921170128896 760843059124888969472634328711168 -292475900465685152200181562736640000 7008963903137738039163829729886208 3191869755294865643407011531980800 -353412644927736995765105481547251712 1332713250047438103953074947096576 7071577991850380908042601801711616 -329047775403606040775632019364249600 2380941242418879010689180462219264 1284966952657012475466591999361024 -21216683498000953171663433433612288 1783571115130627134305780967145472 5775894163191543600239844752621568 -165670280720625787610833855853887488 4279742968454330570556359583989760 917570358830120756780928908394496 -551643637484697907438963577917014016 5441848202701734966080495809462272 5452476554572878089044437451669504 -287450220562178216481789333609644032 4381419401915964413068448765050880 7021192732527359801615545222037504 -467456371970016177668679279711354880 958623507859848963335470100512768 4506304357479842678692245531525120 -596688460952307911892443290513965056 9709571742916660211690195608666112 4805255936637451632242147515695104 -674293215705567332098835943593607168 8216584511146875416369515437490176 5468281166196520262470147944480768 -381842673692991945812843712114327552 4069919740055495890621216203997184 2459454200259235950447705959956480 -820260325740368037938826180399464448 8703860630431132654973856319012864 8892582828910565129162444245041152 -823601072847561522205854555407646720 8429394224572157772778749839802368 2323008346127525868135566272364544 -164732608102409250975627323539193856 222279474387053148327616207388672 360452712780856748915348230635520 -30324890166388004951745863559938048 5198997591606759266740198061375488 9401587349528369516211964047523840 -637907895148927047544076149995864064 944130413305207168095428708139008 4480228660144634786926538713464832 -602887933347449994916836747639783424 4061235878006195761133230137278464 6594155775560293179738828172165120 -415398807640471058758534140373499904 9265580557406240886709848782143488 4163299824548990550333461970812928 -450443830522542951528051164894461952 8185703577478440863761291194400768 6048442511455038933319352332582912 -407449537248633885813229534582931456 981630199737508974914521626836992 6236199704339747801378769277550592 -371201762715383509018001610811375616 6748890534784115863892018082086912 4439210536648911524191587214032896 -131166935764485621313781586917851136 3203159908514339253307990446440448 2447056188436363988624040806842368 -641783843479183343968168524031983616 4506960796825581506253814784589824 3467414996319614820641487674408960 -421982886433444995497849873674272768 9380630782889447726655513307381760 5542393928089773668979913623863296 -544961827058019338296002734830125056 1533821638789466800561930813571072 9770728437454352858585862269566976 -713832692642826565544298200522817536 4515574194839533771304576172949504 5034611599205891113156879958671360 -533341935111548960871504141988397056 5914835688704548450866242978316288 4462720416286066018098264213028864 -145990593743833930830741711148285952 3692090963175341449712134120275968 4593529255204397943094429221912576 -48213541176032085997182010626408448 8866685997162317881268643691495424 4591483302216820773997261531119616 -947026307141936816522892752279568384 714560532583989619662693393760256 4562472891409413890366127992733696 -551095784498019464457774466296971264 7272310118046996443584804704747520 819336519277079031434319339978752 -775529228360806642000021706822909952 17863076865079914939419621064704 7683489911999668156976010727784448 -635981573275205914481281616758964224 1090200385248052736104864730316800 5378429015984633735584435893436416 -573679789800421464523160799080873984 41496021078915123472488286126080 9323147477614735917271936996999168 -432115090349119396187643366420250624 7580844375866230456137182502453248 3015511141756533457561018844577792 -139248204023534108469762188275351552 7330210731967974407839991191306240 950486460120715829139055168192512 -951996931982741082685165243627208704 1000593354018168695834147580542976 7475021151789987916115762942574592 -55650284027717480306587168436912128 4831280537848931164971354185269248 3036122101082347658990390215704576 -618975846678276975351954241665105920 7287865547344086774541431131340800 4578392634314562782865571836854272 -917028266256047004693255835728478208 8205928526536501040341288793145344 3916417614032930228221423883649024 -59527626333206574197205536721600512 581621568533618333949951458934784 7767762183607428723674591250087936 -658531543590447202731729722609238016 8182824988995923110118518704570368 6272722138690683547504423219494912 -737767506267440353772447971170844672 6600322120668644624831003477671936 4638640475874916649029077091483648 -394309098957807791669412769843642368 173350619142287330781128776744960 9332120717581474060099357696327680 -303080465889048532499916802481979392 5171494731600130249842328049025024 2450542949240043149828940493750272 -980299676330530428494157867370151936 6618771925051919083135031033462784 7304435016731347372229418633134080 -29613440793285311910113753731956736 5459140671786924807947187375833088 676509474000100359718613133819904 -311827505067980073779094231934042112 9453468938348328095472731862073344 1941512813017323127164706505097216 -577209650287826794201781848678334464 3760278619834380328069462119940096 202374797970830508944321987739648 -156085430777800776508142229217345536 4163978560654873365896639924928512 1348178957908377143151430452903936 -744754756820855385000402358546464768 6579250610037312908445866711318528 3702576861191294857171923518881792 -66224273959853376270091895282073600 7151798511632322538341682919768064 5322585967799534312542842512211968 -715953531136957975112518020957732864 5161468178427986780849985120370688 9211534637594098169206425933316096 -937386908050256977128675024274718720 8073041570480054592258687354535936 7261886735509151692282719583076352 -371432033095437500193240840977514496 4854065561919432906951635759005696 8832727652017789732453261934329856 -271381426342745081867748100481744896 3185716581003628513697236602847232 4241176406304423128688777773449216 -188162439762786253836712502336946176 5416908417229533040285007447326720 3533418247964216883537591148740608 -1483765592055554412345647790292992 6451080531948629316709931095687168 9865397016071407118942238886854656 -818269034540526299111285061062754304 3175009853324841211619927683760128 9016538895863992870378946936438784 -954270310731308821707728323786833920 1946076071081459013231112357937152 2953529089507231595985258846093312 -490616403942730674117310944924139520 5127980645028027378213456332193792 9922652149487306030143546461257728 -589571701134836690710595619713449984 2474586318813681833669834458529792 7533548625856610521838967968497664 -422362455804025261580889839036792832 2232316724836603243756307645202432 2496303526471089581316431067217920 -9194740799343337390371487686328320 6361401160895998260262510501298176 6251223226344456313853789002006528 -711378415774647373501306169402064896 465606434152648641545508709466112 4307100858568593086573932078694400 -752688561728152344869393690875920384 5125532761687126667691673935413248 3393319031045398689189847472537600 -846615013813309218215029985415004160 13488677707162626281204602634240 8278562418772718515157505002176512 -994944023092259388315904015928918016 9441793625371063248431719697612800 4171403873045673232243316257456128 -740530438611130239035171792018735104 8613108263595299961673798700236800 645458023903642350320889395937280 -718710123718672801338512152436146176 1204486167383193518251701652422656 378373653887700491021447732396032 -286972444164388342435670094164000768 3420562300990666813633994361405440 8360280863061336240743176571191296 -748611787840789141725728189234282496 1615910450985516989987683563470848 7200117848351502711478745126928384 -128722734330813664635258264438702080 8922726081541525148298305276477440 751618745626147260720840664154112 -298710132893083768879825076699004928 9026684381199010786100933900107776 7532345432112726522220514620997632 -162770723390345036190710448374415360 3675447638786292248275474175754240 6992301553130948571866286258126848 -227972440678255539612777989277745152 9469153412795602923576259659169792 7452419164109396795916742360563712 -831052094689899996932372895761432576 9918059313827279186070419644874752 3425641045754557234892013263912960 -787954264609302397465684049703993344 4320427218657501041729416894349312 4360781494594661952620257758674944 -881312456736769140606644316109012992 8041942407517283181681164431654912 3973012663830704800822361128435712 -217436218645804623728099182264713216 8732695230428969288940882743001088 9448559982378949231222938413301760 -373895368210672557921115527226327040 1942140557405464479104494058078208 7913926526617570805713133576912896 -624737704873016426859280514422931456 2512688106652129920232810107371520 8711275392291994201227466266116096 -562059330289545613425653776102981632 976872604148922876558571135303680 3070031313430269128614031457779712 -951936106407408524770427005317414912 1396462519937163474106456756715520 8668027281613065999907707898822656 -484730817426723028958540858828783616 8848033705594405416563326098341888 4033892591004980260044405970305024 -370327742278653910580566780069019648 3216187572797068513719372855902208 5684601108466591373214652393586688 -356647541131018170846308985271746560 9975105884236289478222377400664064 7991824894020635044569750335127552 -695895475083510735893667483849064448 5397064326696823697900915361054720 9106987564207184051948827753578496 -884509923492976834048038508156682240 1379995044746825167646964597129216 4997113963389808643118722453602304 -128608091712000851096419354233798656 7197626062182898516165858204581888 3366506596671239762283720597307392 -996133317253468901564687294461378560 4818434095528945552276579030138880 359588854081490095279736828723200 -192009028990589556811553058607595520 4166263762561761608453677960396800 3835846376637034352824832759955456 -87103575289392989685965787511128064 3459012668036503562160663255056384 4780077955307062955041877682814976 -62061130818102692205540579028762624 6638575953475641938754871027040256 5534951750010677559639223453089792 -378269430749282094337797023099518976 3471426348243200038154531959209984 2813200345211951400378029037322240 -838667652665642894480576665232605184 40363724256391217468807458062336 3352876433683703688215325384376320 -524594144651866217361877660394848256 8612960859100655641348403193970688 2358621308930211757470930486427648 -149354012383803160976198035000262656 9674054015505085273565267817922560 5752248989106706115576575431802880 -583055058351337543621847217157963776 2167984190515798872284975782166528 4558693392401968822756026716520448 -89651383300074329580767715480567808 4755065312638789573204095063293952 8289831348211850264831572632928256 -338303172921961412107923440189571072 9250319989301432499995380165902336 1447073841944333522696379675181056 -493763314239421060287772433995268096 7144012938216573958209375718866944 3742882999085155824584571983233024 -673078489195996749082611285638512640 1131166169217410637133202929483776 5252973629169524031643403660820480 -432146242759842804484286922629316608 3176052328961838458343662427308032 2662855002674642044604328370503680 -959298979792063441625467742385602560 5876508766918414213596909242679296 7395182196644033750594946118713344 -189532062184389816388324366722531328 2560129176557020511714781507354624 6506489976823700060275331020357632 -571871362239581270596090522715029504 6404057217389869862131016015020032 7250681429864659518709403488354304 -229671483623982295744272416792117248 413063895942536176261695954485248 7950685684693406145179508558266368 -846446496030597873610488335665463296 1745184296705347287654553591218176 9002667083087393467487103481806848 -592181465244454567359773748079099904 8427643802102556861363473241604096 462000302195255616861483531501568 -121535691823111937770325578377854976 451280320816244606972994923790336 1101097532954283314907459962798080 -36042114085562783580604004256710656 3862230429961040283818398457004032 2492393510180171993804239534030848 -805365389498202787590876809014542336 3385180850414442180444800386334720 3840974011653025757298577253597184 -54088259111472394627923825183948800 3973189047269005655894453213200384 6049921586871633055699520496599040 -623343552734606052087294915598352384 6809157335945363169355605483716608 4110141750298859810650472178515968 -492234776226243599122297661006282752 2447338425260772737152455828045824 1467646255788421970400078567833600 -235956767994587953015611300585144320 4630248452524825296829464849678336 4118936792400130700801899359109120 -674811565748880120034851705650675712 3805504314826352014094021286690816 9601254034002149503589090223718400 -282818108077839374140831346418778112 5641391009029800118447146811785216 215622384702809420336159650742272 -745907935614681271730312143081308160 2594066130550787237317060895703040 6860843078322643790502399639027712 -620168713960925194991466149874499584 6082013295972022436709618335875072 9683210658730904147052306571984896 -194191532516370046449786944386760704 7357986684385514761137221193957376 868143177321392584156477376167936 -64437778156263814409279131476819968 8319957684399735415277833292873728 8441316555445901314308099922722816 -563258749885917641785440119421927424 5553102439515611063650929348706304 4459429434460008498697527271358464 -50458437393888770877853895822934016 1855244410462961307416279115628544 7767217153044312829783043452436480 -949364990444033502312499220446183424 5722416505543944956532499098370048 7682676288308613162400350266720256 -695888291725207527801871917681475584 4647197139485514753306573779501056 8940117262919793042349547864457216 -935662627817481079035827541369683968 7879063413363130374716039823884288 9067051742017764262397526734274560 -819715192008901896625611618513846272 8918039517960404456168656916709376 2359653716073866475914027891425280 -129307724172597623760147906849406976 3708538852484847441746035948388352 5785073275204535629569076989263872 -321963852124570215492430601362866176 1093716682206067474554952364326912 2208877809585868424883943923253248 -3218724703842557889134271899107328 2459704833196199681781935198175232 5784516354011886181259748225056768 -796640142215361360340564117867724800 9295440197776463519138211942105088 3590805006980122405118173908041728 -818858967858657877949589020135653376 7796946484943038750748168912109568 9386014245474575535313516276744192 -76658091843771898021338948887904256 3755217141516469796495631392440320 6791042060366483446005275423670272 -687909541240197171945761017308381184 8236144702380376459776483945086976 5251414610719234633376375406329856 -974746132063202351573688879541125120 6293876578063841966048330865704960 3875804142531282120929572303142912 -89556229985353832374650061644103680 2101685755303712278404977431412736 6963989844993276126616070375079936 -550282688242346183845128945086234624 2203848848473812409669056718700544 3210000636293140383888601474138112 -990857455017390384013837557733261312 1966255645178524799961055027527680 3779427522988462113668683364564992 -55895916071508732325592563242237952 9344856205527728943762185098625024 2876202978544003692340365072793600 -229971012301860481639271482251018240 1977226471358887130709742221000704 660610428344728428229962695180288 -630677852187781068504016402371313664 5518214524225288935027420008808448 1580264003851373435754183055638528 -847324065823765799466908745730097152 295744698803556993470655451103232 8175840949142943118408915806584832 -805893723880190256358746512756310016 2244947705601174362723719080574976 2638262922928772875434359538057216 -694299064307459297131442104598265856 7067488936497258542691762806194176 6289274509002384971415918238236672 -302248219231506934660749522026627072 1257166449905331391722717668442112 6927899463592581321694629425315840 -522437384936855202243496674620080128 7117818482193737771293399125590016 7722829629025121268641188273979392 -154449607400173120826865171879165952 1758776753959682472876783066677248 1792695086145807314756825610452992 -64488693768449518686325752886984704 5113702496259676270848632231559168 6424205451666871885072079236628480 -427379188486233865419176210975424512 6197067646160011963105701661769728 6487107713283461021619251887210496 -652362396730005779593525077464842240 684495612714919494247479148281856 9331820557351032259363684749410304 -508588831782804164205989104065708032 3882958196857011971896637105635328 3548627722997710781972903507263488 -40455845327745877926409174987571200 2924977426339611446692813836648448 6705163732872638099589022401691648 -545424623794932377916979014021414912 6011518759216862403851771921301504 8502659635898393400299456143818752 -727623084726218539690621827096248320 2630808484298560961422444357222400 1881376206764347772474105356353536 -275437297615147159764973842019123200 4136370401420403356665851364245504 9757101754421196026866668635422720 -632168785782758062452362779304132608 9013087747036901051988799584731136 4848357784870797185407848458223616 -281704327780615790708286985521332224 2925487575612064038925970320654336 1613586098839841405391013186371584 -502020812868719865826104233340960768 4558508633625240718401448175468544 1954577550648489830316196354850816 -73799463781543201987505661780426752 4043063812768554702660924688302080 7011343462298072587429865232269312 -50642957705202964196673887620038656 7807292164051346354212459323064320 8101992836857120365009974264332288 -330200997137808936040308476922036224 9410521864433309453371530985603072 6401354538018084682584910274232320 -719262021080283520731002892781092864 5269325421972501723971973516623872 53983112639949983653653399994368 -429428206618666155557903633676763136 8282603162607297091293786551615488 9898356774592790288698565057314816 -386219406561226226370996015944695808 7183622835670680164478302950522880 8462801748921576802349874067537920 -79834294232602345463864229208522752 9854931660300449234004765747183616 4253339828152351763681521103273984 -755558537134333079042288257995898880 850347852009147703174722572255232 1699697712993972838000456674312192 -556242266291172190469732432544268288 5912726905572688126167389959094272 5066091038908042293171796358201344 -763929447263241145844922587400896512 9500069302928784604989689841057792 1414013724073124313216287527403520 -891899040312101810880233766045876224 272466495554884392541257239363584 2023190852903079161671551102746624 -976843085235531838418627647892357120 8862448456625718674676946544099328 4142491081476875917111378294341632 -34638608957993220809600090803011584 1171015594920277659362897839521792 1695735340310425089128258733080576 -342533922134170989288422496052183040 2315673126698659601353296985456640 2884931096476325045449882752516096 -950917700096416888774707576148328448 6138432326148254698202485881831424 9979959134288151093179992783192064 -34472071264841172584829233234182144 2466352463800773155525018544766976 7155955990915386338894351798632448 -48918306814532719030014423244734464 572520384024203066249345023082496 9052107730160734090370208657047552 -487263351034424345852958701437059072 9711349544819551639667670020784128 9772828918973655659714015496503296 -122211584182822679303915380794195968 598147890354388051498702303395840 5184341032729188091133248715882496 -435601150497261197125541208845713408 1895200777949791643168744891482112 1863025942057038827312362003890176 -760132012384376202445365815837458432 8839177551079057519146880531955712 9186981189265478521351411047858176 -909639937977775031391032726582722560 8878966106912349771323058159616000 1010076827744669097048978271240192 -345977638643907238336499833406226432 5673750094034981947901700000972800 36363894488972504433437135863808 -32366155691171980884170789238079488 7827516930476921072784060203401216 3354852680949561197666737066082304 -635619815226476341503351898922549248 1426838697015853975327939466625024 6387030269788964215317621005877248 -619263679899565020968238070229893120 8936711048458654914528183259758592 8058650510115676511688834435514368 -848209051296650625627247995177140224 8600490889586268776138519244439552 5353046054559508763892475758641152 -667307076965575471369430660506714112 675414763242725511392503292493824 3555996431414647489041840453189632 -803330140767760032383906052954914816 5169557832623595662196558270562304 6282272975576973262798615056744448 -293214417999145550454127072504709120 4641607683581879633697999507423232 6669209918398178382630284865568768 -258089732592156927033632623010250752 3836178896016136081249568571785216 9365654924600468570840251433484288 -634887135071282665562307757864910848 9155851119368657688350781754834944 4328243858668693402277027053043712 -214956766911265380258502326035152896 377918033146974971971157543092224 1029156224675780327742728726118400 -179369763995944129369534928437379072 9934010006712233227537571108618240 9090028842485681666497867700764672 -70810730071033141755418413279215616 9445031678175761153985969867718656 4542681361424696589470858899095552 -906649366638614068748521301449113600 8538302314435486454131061132623872 1861203749185021534138170844643328 -314086837002632058895973175640719360 1248443939572518670648641457225728 3426185147581210913787805112991744 -321276997023516047153319799246815232 4067073171480172119424257163788288 7222046553969151590520639658655744 -829207092928216675508487032420696064 9956204470253844256094089339994112 6032955467698744492335100539699200 -795112545634103722824574350217183232 6923597699004907193498335820382208 4394238397337602616430462888837120 -554956981813997108138897047753326592 1517898179490259558330453641396224 6436191249726276244849585068965888 -617761743543135066095064970862526464 4124186202491999861090275955834880 4861354192216573155323041300873216 -591976431991190529952531460434952192 887914317013480921454246935658496 8351552979964493649233422407696384 -735383868947347903789762017402814464 1366271876815094081684414364909568 9549954175963762183831525592662016 -347406974987679893006491008548995072 8667965068591480395389875234275328 78276513445904609214566592675840 -860530350767002945189295754217259008 8897007295706374270700039241203712 582153617016929797332857635471360 -889946256017338827721192045379846144 6463129109553523297820071388250112 4380347875213639522287042101772288 -673554209588436099075098600129167360 9437165226885030800220872666775552 6164555802366619935405031748009984 -569927087497909008024761324479184896 3486926975783943889015467904335872 5889969890267827052558772909113344 -127617485361805459471042498036498432 8921790220656676141197449119137792 3997275902202386775452429137739776 -546848562883717261165339087567060992 7991553362730945910507690770038784 5956266497238895455247692153749504 -192671980364596852351621507043033088 1815847787163107652720778538909696 6038890094977059852638765667319808 -261283754887796755371062111265357824 8116397422698128539732713666510848 1933988605700960327085834735976448 -372417250165731575147291379717111808 4477145017841508130776527740600320 3584175018847935065832520589246464 -79134743512747778502438235779629056 3535148115979171401087194352320512 4472504022615304344644036354637824 -748267752328472598208128325504729088 2588319785049334950261777137401856 5562976656024121041163471000961024 -642999817363066726640212603060617216 8120479260179938620264154799276032 92759393659661104603368871952384 -401228284607304225889292513827618816 637557429717200535121141765767168 4455533304410065390314524564783104 -960661394015295584213045933624000512 1239456741243135227611432741765120 2530312378244349819415806439587840 -987100097690486720185318792430092288 2425227116139228154155825685856256 3227548355818108052339194693943296 -625945304154826558848369506375434240 6693585036827638854069960382087168 9139870939479949808315474464735232 -837735722655044812181521818326138880 3007468621693677901089315217211392 8568043421796321975962152485257216 -834639235391534403254100768520667136 7430760476206591053346800125607936 4798807035381903299097916317106176 -175832797285771087049459005606854656 3818088532983950098380066262089728 9403150211749794971409959356465152 -744870799400111591114364516028121088 6276395856433692407429929203924992 1870158585313331466959348956135424 -216144559136428199437953178986872832 8399379366236153947477646692581376 7404581407633935633385336854282240 -610654914404450548737876628951007232 4945457827840324065857577446014976 1046807263235203806064780435783680 -242934239845474898553138040939741184 5366109243279100965515884650037248 4925142870307639955867426309013504 -824152220773620846903558800660234240 3420466488470197861283953419223040 3144992521997417480408785118822400 -563682445628338985909425473153138688 8573731585336422660597122565406720 3995975021598845458530158298267648 -886936882998819938371534215280852992 3810009377115283927692183485808640 7194156618423992202453445257461760 -187643246588341174961053775771467776 5047889570997968223864162952937472 4073553615262933436203037192355840 -127476523248054812724738988443697152 7062292444665311649880791503077376 6127025423666443493837189662375936 -191440747562711014573214062509817856 2492440489308145465457700744724480 7583773478686510692204713835757568 -201847879594068438614119766678306816 2443690786688811600369512494399488 4404051681012107173929038982938624 -579673903069981222820422195072729088 4773535800457989631277302579986432 3864175205373142970432713295659008 -297169632586224763370998157312786432 703166731850034627435037645078528 7962185900680760848750509977239552 -408448278963886736707551974693797888 3901234402407168415568258368798720 8927002496039876689877209777700864 -198318999338948461793912935354990592 226104365221756576778834084364288 7283103985107916037169456317726720 -203362149816882431549505947511554048 1869986028779901292704078514618368 9510824865604267445316270572961792 -101548731696139638884334426663157760 9888495670593574734383873808924672 5993169070190696493703476671414272 -515079205681892953979808292228038656 6115973764105066623361956314087424 1380487104847024914008987999928320 -966280450012562414442556656589996032 2285260465766527350683461065113600 9180227092808708919692169645654016 -293125000696960559532238195667238912 597506178446362381150480427384832 6904634580060978282359692770410496 -237069905742006306912772946499993600 809297625723119552355703514464256 8762651220611662110498169670336512 -536445005658738461881193656292999168 6719321862684459685940822770974720 6398626609910548499925300527759360 -515491541805004768760352534660382720 239494106560801366420411067138048 7727819625583289558812559897788416 -258892547761593526977605144607195136 9053460525113651056166561912979456 5295835720423458325224013493698560 -421539075397171543193764472492654592 8105030649790360714902232757174272 1102303324014254515642056384184320 -693321544789338750570109772163448832 1686835646784128503889841054810112 9788655196420892476470304354336768 -393293190155449284890929998149451776 5863787951154464159877213922000896 983134212276089868841854739415040 -225361016831381248216071829511471104 247814984340201218637980028108800 9887260456942493293555093191262208 -885748416788701080220677032439185408 9805997856020427536124237433536512 4978319871874348636978739993903104 -483768968114480793481761740438896640 3286694324005179365632517567676416 8416713013455886401045632108199936 -320664210446139028764923500676775936 191333331227462561235904160071680 388762488271523026697464691294208 -119420744992590236937492617188343808 9066254669348827552607385239420928 4963382606613476916013490637897728 -748973892317216806243559852187058176 9920415928424654160858542243840000 8548498102243876308390482037178368 -987867838300314956657216217661046784 781004554811140121391653850185728 6131261516645043529399580921692160 -327951210044007874746744822621536256 5223540191605530030020430162558976 6164248936981575064368823096311808 -361434941495212991787706730462314496 7636490745569147073032519250083840 3975771541918043826606669280837632 -621146557056551729893214846636261376 5650294173353238657218376672215040 3802246838854630311094097415241728 -279604425326472166240866034354487296 861147420314122883765458557730816 2928535211441730232669268854439936 -355898355148704876897576085411069952 5466129346008985135711736555372544 7693229408293425518462260958199808 -181849117734631845968569889714077696 2059432095781707870403269765365760 4344155556319641684308211397558272 -283888634579629055702785109268627456 5837256808001987831541481466757120 511497570108723117811810632204288 -384215644554107313625589622627106816 9004526636346322862665917760798720 3659391778707185679450236193341440 -352494316087760619775780725905686528 3318315447039240608556008102428672 2412316750620490037482881300824064 -567854036977559003800227622212861952 7664658823914052863413170624004096 9234067862103282485421119520112640 -742886104979050846312217823886180352 4121281659163099661898411409408000 3169322718270576862005291934285824 -406974894924071673954040009164062720 1721560304959296570687038689378304 6834675515039888688256531992412160 -780267432815689933571144196785438720 2522152894002357153751511292968960 7393423558497397642046370438184960 -969991732778412246886283271001341952 1539400478146318502898894230257664 4295443990871311542070319366799360 -129018584381510633252459385517506560 8478602294148257334431220339048448 3409110990673464656188212135329792 -553225252621153877237885290604920832 8177904659770331816667209357328384 4595731354894215061295579027996672 -872787680768509022171381177956433920 1581048030027859090142761706323968 6014853252426163582748244872003584 -35951170922071144042657990714589184 5378677826785403558477759986532352 9003491088489751388352354371764224 -598400537359574636417057557435121664 3595586299340470269611075100999680 5310983449053909695122924025937920 -269631447389711977762434882235006976 7571434494678338903970290759368704 3953962941192445065632942280146944 -674077606014091044834237765283479552 4245342801270329862520912127983616 4663839722427200261374782010818560 -739886555593312680245160923572994048 8302884123091810863102425416335360 9131489738280216702029813017214976 -681440484613824978767705839711027200 3194545741425320284175174304006144 3842509146042457173644359784988672 -852830299035497660266967246168915968 6690098444842593933747032044863488 4420305671788003595401976273174528 -596850617197919558226383252538523648 185347541808573816774788451926016 3675610736240051952109589293432832 -810449610020157827903339069878304768 4480702588026825960872827785576448 9924164827455199676956276007370752 -981968279040983111469855105232142336 4495633051436132632888050035195904 5502376113604011714955830653616128 -231504593792696011330764841934651392 5370135707980033729865966260584448 610147671351729085227670477733888 -585861789959223272298751778229321728 954440766027185392501069136789504 3424220824677417710982465220247552 -78658485611050008543539235251027968 7283073891742900264504272395173888 738399451645867608451221156790272 -931264785767747915261285569478524928 8178612479225858927081322092429312 5979842613404825983437748150730752 -69594437824722686364292901880463360 6113042315670445917965576199733248 750434600471092321136461760954368 -160088602950033043683757136363388928 3846712281220162281796911490924544 9648656142405564799633009175166976 -616869574711946884268977565571481600 5069572829153589043835844239032320 7517278790169231293241365886926848 -781715783230309559929636345897549824 8956515627988234835739349874638848 1503757245450959412635013308481536 -318459892318752733715893707201314816 4984616436466261749260913005821952 8550102828791799741388007613136896 -488615183139170138152581848161583104 4173628591870835195805554920390656 5762450475106741433079626790338560 -255832825780486324942464427619254272 9106099796871668619111048606121984 7312359759046029575677222928252928 -325623878225874577294828578587803648 8066746913959856561933315590848512 2849237501395575796293582746288128 -258665147842878923691262414648508416 6829813929642941679803687512309760 9615458286327154320600699651489792 -259526049097574647196603858284445696 4075504751931560760716483106963456 9859862661328230542615644334981120 -946159591664102553530391961437995008 3876107572455915271753199372992512 2224580720155888113786977169440768 -312103424616238126739249510001672192 2959393093088804733859502707703808 536483772841606409143361319469056 -744433108369109912708094553632014336 112203836488955986340907868749824 7441423833693063043792979827359744 -990932554223620584226335192973836288 9994544570566118590200570252886016 5619898144878121063191721638100992 -731464546906005201360067035450572800 4600532572376860320766191512584192 4352765050650440536764149043036160 -212013778054415934783710315157651456 3463856478927371647725603402022912 2167721051430800922467667326009344 -387612157664125560134804047963095040 2284352610594907158809558602743808 3108463170627490425938279783202816 -862834925171606885521620324971446272 7767840935441480588713081138315264 2252628104113745786964697568772096 -509804274912771678208642176799211520 6650313941592408647024279449239552 6975966880926405898973876448133120 -187102074881193387826183171022520320 8335484613737354014846609814192128 772360421734184095598904042586112 -307697741173419105017461126780157952 1249372745299859442339186030411776 7383037629991010794798046733402112 -218043653058705991628298954223910912 7870531320005348500761786793852928 3997664930306603209479688592293888 -739628223325514181001297918380998656 2657767488075451830932615211253760 3218892438121804416288149217476608 -266504121328021714582937846184673280 1648832592761635468092588597182464 7252770544232577632150728598355968 -553393259435198031308107995901067264 845917344727814291199220347043840 3306676849698482690036144925573120 -640040609751050458162180541353295872 1871959466865284804146912192102400 7449330429975886034159376726491136 -816191607787714923909405855893684224 3593011071713327851777545927131136 7142726826492300602801232969465856 -821222207562828768178171380645232640 6341651708550381853106867628146688 5564854752864191451626225939775488 -201080504427055403010398469591400448 6659550273097763923235797020442624 1903874124805882532962390566240256 -760746303513130885417185354241277952 5331608061233435156668629427159040 4179030338626339000495237400363008 -515580634919811575195824018321047552 7465212255283446664459467599380480 700975455914775524470154562895872 -664974056825166798237568590147485696 393265218759964174883728681598976 1089354717074513610320815138537472 -486803084621299120518506044549234688 9573949528766352907491106164310016 7021573033842031593312959365906432 -27516615976890743523007097080905728 5934864069791241322918909927489536 6284186649056903953290029399277568 -799047817908581888933352682859528192 4050757652270447996052416910852096 6962160111874743961880744287010816 -144518188091104597867422143939084288 9067479406195842128437143045931008 2499977947272319471684695032332288 -320599881214752349830170844623536128 4476377436832941205477211106181120 640333465187917906290551994449920 -566850673662941716110609442821636096 7781180484817968869378556126298112 4239159793024845438162728246050816 -775352442251896089512904016095346688 2223094129068067395110804771569664 7933146506273084366753772343394304 -452421797658752754458651747871096832 8661274390169791026223262067589120 9353700926874845326931001167839232 -847194505034374152996127787098046464 7032742931665298880661092013441024 866423589664169841738143731023872 -920712926039637293735084072533753856 9699292089920955658821501074800640 8147636047703129921567037958651904 -79962114314126986408472660341161984 973901109023371138417510578126848 8874820618008196527516510146527232 -295809370518994864171951228933111808 278298258207636111582740560740352 9982158493866752316617324490653696 -515171001941479410986966433189068800 8317938791522661776140727150968832 1099310331883742086822012659957760 -963562107014184513737581482337107968 9242409555352300041291199387009024 9324858168059582168883959189995520 -206495514303361967626706039896801280 1397488911170585223795727220604928 8999140926448011144504102610796544 -312381378539398550123695420905357312 9928170631691295059249616270655488 488225060395082087844803921313792 -639410084077215046412426759613972480 6844874007459201725095160578048 8147741319303269632568610376384512 -754063890717016491581034359028711424 8009225046337153046249169087365120 8978073806037056028257838182694912 -390368958192381614135641815709122560 6301283603231853118527488403701760 4441391892990782804655938853666816 -87301993663567623786910629817745408 7640646074235994707338390384148480 1428267084619444651850745258180608 -66923225070279473199856851672367104 7949492887922892119794355879804928 3103221283915872202248773462654976 -485091530222730148872459752421982208 2857295814166921432759336670593024 7156827015283073054621904834396160 -323453464579578714173192003303505920 230784518395772693772170195632128 4399726287273718451939664289857536 -811094132057641037900991042716434432 2120135819097754926495403805245440 3290945743073725828746775982243840 -869310010402482218438619733682028544 106783245299984119040440564449280 4718630846657070178331695257747456 -343063864888339010308658290466226176 7121398212604881999302599383187456 2630779284333278035123914238066688 -315353506741997777695801293802569728 797347178625333855708294890389504 3205795766518965192437118172921856 -815255623437221761968319111708540928 1726501412869561629352367589687296 6412395364667661925551845226315776 -683447530215358684661444106891821056 5310729082856625408476653717291008 172230274309531665375046389465088 -993693444057061921165529346400583680 7498431226235581542039821442088960 6885924255431670073935672001953792 -825268418828611056695420164425908224 3470597602617561649077325534330880 2380886187356589488248393578840064 -957270251474997790693836746819371008 3997271894113245026292614888947712 4238971546584712310004201325330432 -360681840103774084086275536542760960 2907264073405028330390847074861056 3682073373232419424589459037880320 -346348575320541002356258981109825536 9058090308193250872524761949274112 5285292458671800028720740381491200 -270204000314440838217383503089106944 5729587190722492865354566526304256 8874647736047152489835544113577984 -823358690042766844047300727253499904 1830320356339017428055204097425408 9194642324272419353217407815516160 -983224027599378370344968883410042880 4233391800014277120634911039946752 2577016379577850364890359774838784 -439910839484103428693857057655226368 2748631936072012183335257637912576 1296245413297486525448730674462720 -621170310652539607626247338402512896 160297954773140865034915256729600 5146108271750161178595081146335232 -554342510803972391457123086068875264 5974227555710129615875022730035200 6468131561660932272205471361794048 -275353142777191990594708071065321472 8331485774066626722106066404900864 7908948274841395811397533217849344 -258858159302039302573775285743779840 2374331446528784190543888660824064 7358813951773039980017936316235776 -301728074965115751252989731313549312 940380080530515859822635563089920 8072836990987018005952140331188224 -876665637558532160755865085091512320 4945570430875003128211808387596288 9514736043862925375410537186197504 -320346922581617802427702891748786176 4076547103243892441616371104612352 7990975966914345229716153843056640 -568018251988528630306421029682020352 8687559962983785525256953278758912 3372760270055019483989849547997184 -773547601307596282558759447587454976 149121159849561678343007102828544 7785851760698283491039021849640960 -425129454297772136275763581803298816 1963164456524058124808606709710848 9111152506958478551132748703072256 -255921211164791096934766413592133632 6957438169704300010640326843695104 8803510354492142115044150986407936 -913560131520457077090587442231115776 662855212034904915503252997406720 1310738191581752899000970478878720 -810556499581709549867531488448217088 2802652788332679289523811362275328 4091789290481364583031925718908928 -891179322917736275506815198453301248 2321522890983941385959053388152832 7410166232220902558314051825303552 -89705704412203006315425014638182400 2745657967955038954017088828604416 8635379678357648251252083058016256 -421366743571065653291244530719260672 6368854290106727209734639605252096 1688592906442022968193118449434624 -263176878470666242655572724113473536 7343196963362005065691459995303936 9955642403579602144229506548760576 -598055648895839890161984788490092544 3480338968593894311898444797575168 6616924105813545637442906541260800 -432072179146308591985743315727286272 3178927474274919863240611141255168 374320996452495675184116251230208 -686475966679924262628524178079219712 2149429883607453424674063624699904 2182483761494390556012656006791168 -428112675892461390124769505993293824 648679508819955225881188467998720 6125682995006779044342437840420864 -950963400324761139256898745672925184 7546126290811975265283431632732160 3283059408102252884304748202688512 -365646251243725864573316856784355328 2375556734481651220278954661249024 109999299144446979778932578975744 -992948915859147512026466142245617664 3868181459361518070205972047986688 1225038256951499108342762011885568 -749116432892677593937488041121677312 4857065398947264525999239004684288 8417724743268442108312732726984704 -272866345438192554550931321398493184 159960770344842207314662383419392 8633713808715528623675582950932480 -698145986772795201370708410776944640 7627407387768805256790282589962240 526647206810890650531432981594112 -162870662075267297465558151209156608 8936471366653327482089906775261184 4243715337367221454010129517117440 -667449759697008338210462084477485056 8117695957687327081483126511239168 6894626760811488797496690931138560 -89838153298046997668952200940879872 1874547665810793297313684978139136 8944986846024559268376687956459520 -604877637805558892399495299393912832 2836133093099885025746594685779968 1914199795908781403465151349260288 -414814788675881882300817623952130048 9673406332180796750673224363147264 1158098538060788410091783497711616 -395044156545722461777467676609740800 4025312313505731727613776917168128 8412648416240564995076794857029632 -588948072967096084340190753868218368 3717319715201845487214336965345280 2287019803918970907147826987270144 -867582569571470823068477965905952768 1920100760723779595442022254641152 1247331650755402295145389749174272 -963503595070880057608818724370907136 2327860959138010396907463537328128 3775426168884761263638824431386624 -738465850868418916098884393978822656 2145259112235022748981363059195904 1621555508400683039936078457864192 -640190905533907376042446829048037376 5473270293930246575613381825265664 8882050033201535198367607859183616 -369516795258715970790057856425000960 6508916407653607314024374095314944 2297861408421490447795151569944576 -382565389744372147394404972861849600 2262064934901325943933477180145664 6246483931792511299413287280574464 -338642088751475775838616522097426432 1228947614678163331664003637182464 4050695538998238240941419538677760 -114546309203878904406334366833180672 2095521230727354107740262886277120 2101615100926855192117242295746560 -873665948776829224086373880555372544 4513808463146249790838944768720896 9526507292237110062729656774164480 -906744369966951945812695357350477824 8955381931154093246175919220981760 920121774518076157888999624540160 -815494409500253766581955671229464576 9139173933017543366768546975580160 1299062382754041043021103898820608 -91260077941854415978207377795055616 8268355672123666580547384543019008 6847881423286253069263596150587392 -975743009624796621764547198706515968 7178932001537235374414721481441280 3869319443614247692665600463601664 -327843082463233628170068895910068224 6681047506102929400857714938085376 7316613990347461889944770175827968 -801479473229057580214232387877339136 5220485032395615205521270566289408 9890020438689753634428054906339328 -596146339372958191156544794802520064 8310910776720304308025282869067776 454870184133377844040565667135488 -958710837632066464259612818830000128 6774793531342553380393136838148096 9642287219520438805161730998534144 -279759003951145822947318533346820096 3831234707304977675215529561817088 7692399684780744328633771070849024 -646754609866088046533865432852463616 4667869573437962430799660779044864 676364299952372987515815562575872 -489566437303019352324404365506904064 688340480874914161699730399166464 9225583173050462643031353977733120 -291082976686470689116670086472531968 3903040108669712175352406798761984 6954218895316226493655799277027328 -335787744911067638924000575080103936 4831704391988404879229798871728128 1361645771740409663902177772437504 -871031474924457720754431708880699392 8318445100076391029278755864444928 820980514283628351356576601210880 -534185817725258363447080504671600640 1376112217547686857233827358572544 2142861919759540796226167684202496 -430154382005719926032842615995498496 7624674679444648479513716860125184 8909196330106807264623538231836672 -84930196106173446412658809130450944 89056142814730538190018831187968 7384656621858729975376851486375936 -749542086179402114022608659984416768 4303197489124458965408102429491200 2538322982805998288854806364684288 -708960830728151883045549800152891392 5530658721525777083314351709880320 9284643420181498632271473378590720 -159710767082364869513266682610581504 2093012549638551177627819306909696 1998662013216417542374345152659456 -994722991145467634416175336820572160 4741343824048122549113270344613888 7694086755232114139960230027460608 -130226982634331858268607422060822528 1163321632541932613352210680512512 8860471658254009864241731275325440 -781871647259529681546134420732248064 6315689303494221684090219756781568 8770766768293424286137959441235968 -593563739734609582107350133838446592 1218483734092907916699815578173440 7097952572280866592640467564756992 -943621090332323976031206065532043264 8029950852958416925239991993368576 6260219939008915960508982971334656 -532845580626179808063245620114096128 4022905735676450183070717489184768 9285123600413599864741788079095808 -73434876221975279333274143390957568 2936049374840041373806019345383424 8332419815867694538601856701038592 -167425144114779941768957779838500864 1361780088301049853907486631788544 9468635789293482286342769626578944 -137113460261587215378585985474363392 7408684992374235287953137513529344 7076128871143560859285614466433024 -420082237669781213981508795147223040 2601221199548501341486906205011968 6275400203315686703972922215628800 -435409183215755549087008547626024960 9374027071978843113817679897559040 815131958064253768446266977550336 -281739920064233868341585595519205376 2487195910031692163437587909836800 4829520728421332333597778363023360 -69799428907741726765424164344954880 3953384585959265864835454776377344 5489261879359482382721963268243456 -619879756666439540749216192848199680 5164828374781927708733521958797312 629264193834271854886429587931136 -38881745407121703499864875632427008 8803217616288377361560454003949568 7904219851590390205087262108024832 -26716411331720781534906022694486016 2618253040929256378832774768885760 9799409394421488060212149837889536 -811550597007665344108333900710805504 2989488770991969864148093579034624 5153420844415978724611530080387072 -629868776076844380617828758527672320 7945404595540008140550131553402880 515328948128815474473208710692864 -308695250854660349225918601694806016 9732969033332987436829819338227712 431845762243607800804516525244416 -22299191003653088875150605880918016 8221395308981442553097409949335552 6826744913423952562137872694509568 -877787799052911887583055220345667584 5509385741434204619796920848613376 8524539663128328381248436166459392 -333166231364452641412901865162539008 6379495596429972473069560206983168 7169374187719937571572573865508864 -919941319251207043769760388317446144 9237942071419491597570645350678528 6831458730509499012144308496105472 -607928433425684199803120982821961728 1997327028106306850482365313056768 9523860974294682346485275496022016 -902511363092997319208690544573153280 2361170204080365427429433669582848 1191362280665071487679953050271744 -749017705076514625387842849944371200 4840044921665482611425863880671232 4415746245285351165540923428831232 -2940503333718478953818201513787392 9148645477725364956566517601796096 8594516505707909039614588258091008 -1032559881057807315818794056679424 5928677165571628690959896800133120 8400335861406347968592155296923648 -391978106147606215486804235183456256 992630473084271118059216394256384 251726900993809259573730615492608 -990723066527292253319281274477608960 7711600384064365091719420374417408 7759319150069131338875879569752064 -811637841293531580606124396222873600 4218883988783362252739177189736448 5956835359659873721626109662986240 -112027850635624184844447829272297472 7990008115354203867283898599735296 960092213930778428038949850054656 -732354280649249418290642308386783232 7651936652632454859537762513584128 1362434261863142508832543880511488 -770185340021174945969562097381539840 6827327120137293601321074053611520 7842414282528764471529677183254528 -659973066429552356516545637793136640 8816021947236735939973330543575040 4303193422727496171142233601343488 -421921906121846289543282138168688640 3071043310362617365970396936929280 4016962076099654410961496154570752 -280286949125317822555733500847194112 1719714803707564330605049909608448 7588084399897326186344391966195712 -19395296851148548870345366035234816 5664489272107509061514917824167936 7536178202435411019677695974834176 -416719185997307250794117476244258816 5767784487176674192344564302348288 8452722665881554714575141257347072 -877347108899700312042518158629666816 9103992135870193313785429731835904 4921799800656961212473984994508800 -478709842868279301588080006166216704 1566364300528973494642843255308288 5733689622652293501381947626094592 -364077580318176378300799825213390848 29051109958766909523856862478336 365952201651422667356955639545856 -946431674623710037619339807407734784 776021442987647209347811138076672 529673268857311476262707224641536 -941413871383515095196822329052102656 126765344212099222297116772663296 2999333523467815950187174928842752 -472983562852183903411901646698971136 5126535750896285939041751571365888 2635200594998122893106815772393472 -498878090787874122514960725439414272 6204920753158381849909024226541568 4992225089151708237542245296766976 -498297860866351796141723101840801792 365590786211773652499114485612544 9040268972779217812797085158735872 -865048256920732635863568521201975296 9736388453947968095741181857628160 2140849257709498775880034242527232 -693250935296398868525587664958652416 8370480425571603760458428472885248 2272416505595200373866995482886144 -891656704892631405060635332364468224 7841936539951352623418795148443648 6717959392286859786481516622643200 -130837672576376622338065044091174912 5315571983481497289173427711639552 9745808615493590990693778931580928 -424714039766779595151014760638578688 3984202678721978762551407606235136 3884590612847787933742186333470720 -111226116294072308279603133203611648 9710922936755010813518981866979328 4058977314085232612387681292255232 -806990217784527912811607708470870016 5518777142005384653718815600803840 6851276460937516595939771550793728 -415345599561509705006755044980162560 8974258167074247355370412173164544 9315408421209043110930646655041536 -336743810055318526970797643184209920 6299843931359985633537159010975744 3007923307593116634163299345235968 -601450953126974565237123680458244096 8093051107133279707945344140574720 5749066812642361198901047517511680 -867562446912404105795936762684506112 3934461556752021839488648432582656 7546266848961088167443684642521088 -665238350687155486596443726227177472 2605932394742670873960187479195648 3016358005786327472545277321150464 -863750269764478994379114704233562112 7633129354963151745847029835759616 4505926449325894478599900966682624 -647440898782740764407183744429981696 2195009263451047942474591459344384 8477591373248125672067648471433216 -408461864649530875123261346102116352 8196883731084147471635108505583616 3111529416055145614447824963895296 -681912447558607992813928053022392320 5878018591211865475573312332496896 4996434544144381449910890455367680 -239056292410542182585942636413059072 8309144469345875851394322603704320 3155286460231593280735358159421440 -918561011965381817907328653270712320 495540588088916052159661699235840 1096086828384899996780273076273152 -982003844944269876510807998041423872 396180023976129994964084914651136 1874236866062478420442081803632640 -536830489848056656418850649824821248 4600770211024367453211729311301632 716810271414246810452153824444416 -45712563147166973118925603279470592 2715823430473020725071944634859520 410033290119171269222912111935488 -635229944374538668044518432931053568 847346327931226673146211239723008 5947907545252926096991180126420992 -523440938867836748106644834983346176 6306228207962761066273907383730176 3183278578866973539211044219518976 -894476398346536924745931702497443840 7002303447062341919183650141765632 9269744658960798148961491939753984 -978793626438719359423832041287843840 9919641582349465656673328609361920 5675972714446919895887003110080512 -516552207108975624752996945892474880 5739651437418185487158589601611776 8782228358968354327604933177638912 -181125078553407409381552601975226368 2932592108749142409084774589136896 6547373929606325697409992575942656 -46300879973354874882587244208586752 6399622086500895333967093972336640 2687424302019571664637943525408768 -873328408677562237204566967794532352 2107576226448379093959808569573376 9207286574155265382617522351636480 -748813033126054235735962935518822400 8033551432571707123142999670784000 1430322645586646420688421865390080 -529204942623496029906157599767658496 8053839933302734613591268857479168 260245642350206038032966815318016 -379435040635211977193683905239056384 9013989495706154037974071485923328 6459719148018212244638735737552896 -420961775132474528584079736280449024 5200220059617714087406476124487680 6349154428019021827783897930268672 -846282251879289072564958068907966464 9168854512802681628703705138200576 500892871963586755016158821220352 -985625886309453087799417317802115072 1503679833716505664224999518502912 6335875780796425544425955389341696 -898769879778502010061636348848111616 8774967648448920279792704469073920 410500672508154811724772635836416 -83578078149219398974541601808842752 7984757897798128222291535033532416 5283225053173232861615347189415936 -175421379744386918931937892885331968 7565884017142444455913914347028480 1395923184513279749161947825700864 -897207306008032268274425470111449088 7086353949509370182821378323906560 5939244782659300532524001687240704 -934217984400250165007207874854649856 3691037809631328752157151568330752 4785731027296313022217961296887808 -358117124477864104640437915236696064 4202110794913653522803345825202176 3781872406807377874949120389545984 -997551066101465709163767248797564928 3065000485688051682821619111165952 5240140666228000068721074455445504 -965855349559814149845562156321341440 6823429399734224357643347344490496 8409697417261842208575055011512320 -199160586870551161370317678108999680 6928291796727718474438945147977728 9752237705190067266011302589366272 -361985447641598692650314286965456896 7406086631290836735074332181528576 5425935171056014003092513934540800 -856582938772644393052135194575765504 5668653497986730736668903120830464 8675805162829930555480678080708608 -342417557822608048967384320006160384 2377033929454234712567805376462848 858436456196044259726105753157632 -281760232264597342928555049859678208 7147010745900436494390665647489024 9823123789139034389029897623306240 -703077346992946801239877857216299008 3443357969235654407138737527980032 9795345483398123173263053611335680 -416553261408685486922099268289298432 731169080088364288351516758114304 8921682064701981199113869437435904 -172350866318247709798412933908135936 4797807721125246996718338992766976 341344935558323262619737506447360 -605243101471673449647986739582599168 799698265453897233341886238818304 6975107562951572698480162461712384 -597880309972437260993267415356801024 9141537037852719303055545699663872 58686152069105637825164366315520 -649099269332544361134199871874531328 7019990421421766690308645772591104 1992514584663205251189531503230976 -384316807458214099496794356482834432 5024756411367532389958804207304704 7995776467524917088696078371389440 -873509245451552137442837565745922048 2897558801441878802196909193691136 3624616557043678579698018325364736 -410530531732464825341127450945388544 9213375159130460133470421206958080 1165500302579782513118307707518976 -813483471804982518930892045326221312 1256256645220440160669728637976576 9712803225652857959136838297845760 -917916438402562856244883825872601088 6849162519958425915533514793549824 8627659474094450135653054286921728 -790496900641714495356405494411427840 1245194103596686823925559351836672 5148867637978920855402744610029568 -769709136870015937538223167984631808 4474465020569499023012711435862016 728964057654847402645220969414656 -461576675432678618027169588996734976 8678033377027523900762364227616768 8310747630115963441974887934066688 -619460343765834750983976313319063552 1512975688887010717037998947434496 4423863486122025737875102564876288 -938934367048572783670771625505062912 3134287550437978413133084571467776 6305280700597083393592848809984000 -535812291178670574400088037818105856 6001275134217497041353218906390528 7608330500614054807997316293722112 -250595122336848036645346437360517120 4070779424899499199993287253426176 2262412590028865454520321993342976 -972862750067435597391125375929548800 2395292096430931844637344426622976 1778276442192777702187086748057600 -88014407318782271347629436337913856 4158851200467701425888411699380224 7970579729300781597968010408099840 -295494479712183642328111418238304256 2305735046903417934290956612272128 1825669978811427632661816397529088 -261158970273776173500656949468856320 9838104312477210185910300406972416 4233615830302042820943744019202048 -541148516786742238368694338605547520 971970267398623603250408074510336 4013174382938053450642277179326464 -311841923309921872692596744638169088 6960148149830512848214914907504640 1376899849607416512657017960136704 -779069455045070399633776422303039488 4301977618429589616475710529994752 9571613740400033379041343157829632 -427433313461982947467946792862089216 9098194339585493430158645897723904 1329099324537587957996352855605248 -335050113449116171209583228652355584 2993924732316243706414459632222208 5169318751074701845879869797302272 -84487091870010773489498923796004864 8187835794918881758744480661372928 4426571252667583688791912360181760 -716047059214516439645497366925017088 3199907897346996624004704563625984 9888268048236416250166854247514112 -900793986191266960104274427323088896 2374952493471348253637887309905920 6676104729613037338459365850480640 -552271647099978828078164989186146304 2428002129228935634782896682696704 6368429930959569485951327258279936 -998689328264976232616724069305286656 172670022511069637204811836293120 7647104308642346734605733472501760 -375676261877676508756378924695420928 993533184222513468388833170030592 4146309721565868732101713301864448 -71617244423031270482663077895471104 3231848560732770044407949710852096 7744851397894785628222540100927488 -637847311105422266428171570949128192 4021120043524139438998272648151040 6067419473594187461733711414820864 -672146352923796988439862971490893824 1385869591149310555929151891570688 8648056196797019394745704535556096 -743270709691942929235061046520053760 4623156221380419265024923214544896 4413511706616176652424236312297472 -884426391419578326958547832601051136 6866093655038863762918373467357184 4474226942931151248838593536327680 -940461608777433032964606411304599552 557428628431063925690074707001344 1414839411868959590249855518244864 -515180741233770066470369017777356800 5753886562944713009590280701083648 9504428508030447218698597714362368 -874217319524535406561358485016018944 9570885937514389557925721462013952 7282623379698824803636234581704704 -188263007967607645479007648619692032 9068827840004300759164759572480000 1734615640370400035318775985209344 -473748180428814744893213208890834944 3350595138512382152549702679134208 6355557733291949667756616810758144 -327739193869091131260460217260834816 2546432537548614560531703201267712 6082498584900774592053313867350016 -179733493549274380112731754456940544 4168833199956912530316754312757248 5674018504530435590577415945977856 -973309467140210689452480204894109696 836517532033265411428154018365440 8092108306258350021865693369073664 -776853644657752143798335045388730368 2684699955219990919517438883135488 8217862387275438074767759774842880 -410316214650490018057290269769859072 677265941163225063215445749792768 6248225013402281582329200581279744 -659618580219627391181494701732659200 1139702795590698525449943701782528 1500416951248224779712987630927872 -237736476242772779336238364002091008 2098799190636252017538705347575808 3945958578219270173040014960623616 -213592348368277653475441177270419456 7051678970580049338423826488229888 2659841460590107591231281207181312 -885162975478671970955869420888522752 7788262206873989656008555178754048 6452084370063551606447033324404736 -850754694731295579303911459378954240 9443261232282698793778165432975360 7872161045035490306520550043811840 -127272228085375933870147346446155776 5711882913132145310942004917567488 8207670406453241383835928121835520 -75289171167459673347206923759386624 201841578206553872778218379935744 261959737575346335753089241317376 -307784474185681813100259205189730304 5563098389658442839755817784180736 3035000984122111743004082354257920 -843952872191151613426089671599849472 403249285982285944240167775633408 2820572849853642771483969149992960 -805635987081808867724543563627757568 283519304874347599749867882151936 7447354248726873045425757211328512 -546853442574954875553984262592004096 4990151698423022965541339033239552 3768603949350375814938318042300416 -854914470708273063461450803933347840 7936000105430625359907338831527936 5976745324352819267450604749848576 -419452048908294061600083458532573184 4385070646371169262655627897864192 2187267534555184972561471873482752 -118946143458269275578359282994774016 5559438338582995880612318895144960 9173974513927610630184919495606272 -427179550498081564547788793576423424 3094629131205137066623838617337856 4032459547509432248885481727590400 -536624736299579734773372072832794624 9540702394043794337783541816885248 4115819450848745423873597119660032 -491948897484315156828782988948930560 8016350703505199156610306257453056 465931804729695611934854260719616 -371210432059560058956662265251627008 131088892843204701240440119099392 8477795790027355759006911926632448 -654039949726700440874670575977496576 6431795488649501637072477099130880 1815143722490780690273264409247744 -485450191923529866652358354799689728 7365478695267024132894313666314240 8395444936301400905107440350003200 -884917719147594295376564836483727360 6100014741979852624071254320611328 2505069429967309290498588929949696 -159863058904954412937341007657172992 9980812602118974289117892652826624 4108542448717961569292624414638080 -102362843759260468883534872594874368 7742249978981583386839344031465472 521386156343015810376335246753792 -506407056527322810642111480968773632 572997597018637945826616237096960 8977396845969199253215877143724032 -952317346555275435903850705649139712 9085498571454342334955715764944896 334675568456697345036593997545472 -449859624471728541822224066804711424 8496243135233060375605820826583040 4683209576516367060197273327632384 -111738324701665316262414754032648192 996429958574246046552230142672896 1788034965552489430969248466862080 -228227153049163293166446146589032448 158974620800474766631408358129664 5798251495456262736084650063560704 -525281067838301538160297093552406528 9000152937194213481290654975787008 1561146494324549928009404744990720 -509179034698034861481968525065060352 108688173519904733535172103766016 9502366914286747969684077209976832 -938435142567060027302063220874805248 5360829161088662873786422109667328 2414544203452041595446131039404032 -485055108912953693921204432365682688 9292202771251704200479093804761088 795541506095319118770180372561920 -570590081652033644290894416620552192 3466653974618107824776935525842944 4637636292413701825455542272786432 -664638789567686533514472450538078208 4923361660572040971312477962764288 415579778036388176807213123239936 -163621561935503617660238309026168832 7982185219940688730376423528726528 6626669568866957399540089260867584 -608752679508926232703118453948547072 4042850446573951506674657238450176 6396816266226514568554128049438720 -700947269905293449693957308987473920 708116632566689857954320553607168 2288723767686335936956636699033600 -701337480894782733648651800302059520 2828840324284112603180601884803072 5460310855526920000103682068709376 -856266262327713445079601241923780608 7960403475170231042773189188911104 2940752108760260177637908846477312 -503673528986470420375515818818011136 2280718872077771718282229464432640 1132466785753570268304603206385664 -818933725852269003700612047619227648 1653248314297436551246133852110848 9321017868251821299156228992139264 -255640227759337357158667076056907776 2932518863161024998504455705985024 6968676890610993187018900085145600 -937483781517464315929443596647792640 6309204541612756029405047338041344 4056108084933009191528852682178560 -89552714984333438319011647035801600 3106413657854837700186940674932736 1360021709565183952757942831284224 -95126405065856359997531638462414848 7185842283085389317485895641726976 7814783350602381271078034049335296 -281460216687988129949331351664590848 9697584194842733052782759972438016 9632819121034466858406175735545856 -887568400410166606930540094057086976 8745389302352793540231327316443136 330057015838179895137948114354176 -851195003651778195775530790121635840 7238792064500834956662382849425408 543819127356576236636905171582976 -434742360608326632529371500229165056 3834335887674502417488356208279552 5161608254540502738276304476438528 -709649239290588312651345145314148352 5919426211034548017639270054363136 3185880921860024931971088720592896 -656081052700391288134850475687149568 8678056326247097690780689254842368 492947321888313674205703971012608 -847082612335792918647977310139973632 1821677934887440817890749981917184 8877110758188902259203394037088256 -106358972129414150845931284208812032 9973103061948936948459172500865024 18887490957527639505798426525696 -898002494486266909246852375500554240 5367891616586639773744847854239744 1593795414708476134429186311847936 -666105708714794794656886494955831296 5981239615090187622325371629731840 9312572039346901421705740828016640 -485996312482363921494284495468101632 7067786328988780285028510006771712 2897672142871508263623000261132288 -992232835226653944509597607796932608 9541514889499638877314289565171712 3879327411763693612690965109145600 -684074846830566567681429447500627968 2383839680849610620393225770237952 7201217990180728475346587499888640 -456994110035232924494274701410959360 8205400506061008123031488877821952 587686313941920679463185564041216 -803024322168302288709545182697095168 8381060421430232113306678851534848 9488010857933498410813394117459968 -961371878031218784983001469487677440 1570209690562918412425236033044480 4265152834842848052295121433001984 -973209168227552225941139637565128704 7473013576913717225988452796858368 888673430643272114786057456713728 -862440517991186485510558994638307328 9623248850219712540532714898456576 4252640207507594762516938191011840 -124286447026559857215977604050321408 1132642102316893278352171834802176 849382801920455854332991214977024 -884257475988769329456032266147856384 5265078529814635695433336200626176 8326204981108940089096842172694528 -546545071876584678359227771675213824 2038596750060395782616542133354496 5428104509391272869018646274375680 -314185830115623257003171371273945088 2346234719514132234143556442259456 6320416930042457575604833071661056 -616872537183927028675770007462871040 1395921784501662547487358128750592 4357679672527147637003557781110784 -114482221969515694365141618946736128 9061685800632770604900074785865728 2747370761469724590667963306082304 -961273764089717434396919866941505536 6536614824012030082470000472358912 9858414409962573928214011901378560 -510642925887530167470523199009062912 687313770318703984256442911686656 9448773591118056970263716180262912 -275411653950364951703649245055680512 3930656483581216228794989834928128 8871878949127867023145052120547328 -507147596175911362553859483914731520 4837914082713782495996844244467712 5389470402897305044728710711738368 -454021591854686622062428066039201792 5049559313643125535486044478111744 4382010091426132603013461763424256 -139868438036298098428528704930971648 7775076529258858439454913208516608 8496888830654938078696845497860096 -761339365079538802537526218874421248 4554419437081186546421488567713792 4183376219354317223579722270638080 -918255717524756902616715512351031296 6137915551551894773513011228311552 3288811490184492144607851540643840 -418397293368241821685818914846539776 8130141142032093878185850312851456 3459117035475471351044243481165824 -634818995021704644883156800309821440 7865290533901235415560580931518464 1961007665778389722818215059390464 -948445950663934886063155562579755008 6495237997560169896293888459538432 262897939417924441917346554052608 -146887253363380226831811553680949248 89393795465772635689169285283840 5434839228779181929465883777826816 -470886789561124966785751365495816192 1609203985960162976498698667687936 7344524204070239294123864473206784 -291263615639141168536742692483235840 4342045193596093723605220460593152 7521986883039627885691379516440576 -720168481017222947634646646211477504 4047834253746641541203956116488192 9305086722858556620958597975638016 -884206877359006840711547800896143360 4243670970973385881691176526938112 3750714483149699397332372553728000 -793519316781799597088311075307257856 4463353418270811557539657734422528 8659047592850080546960687180546048 -434108700091132063572866420487225344 8953056211281115669546041249628160 2014130138813370754285910146154496 -300871040498894200493587428093722624 8431017602159626157764807382532096 5413899408160502727777003040145408 -397540324508994185776379039617908736 9168880875959788410971182667399168 8170457541813221331178118918963200 -862795789516760955674096909567393792 8972809736128521459560736125616128 3656144865475054320808240449847296 -130715519651874904762159432923611136 8129954132889772028795381824356352 7883398740508758136332371328237568 -245910247111905845415795106668085248 3856061171266227368843783096500224 9890713355784106758153665740013568 -682011667633257749385172952465539072 8880215506052530068967395812179968 6103310115630485360011674923302912 -386882677677664368806316841268936704 8497811400898632294480064867729408 1592251772946926697983076080812032 -678550520424527385687461332613332992 8312921298915565490881066981916672 2747445595806769520142194869010432 -905123219697935915510737668262592512 6199316242941207625839012086808576 8789249197340950856437246489264128 -545472851891992734151935399303315456 5182620422690955169942199687184384 4853928631176442733789423779971072 -883191552986035251133357529115918336 2048727377528211269011913316499456 6047384941511157844043160845549568 -728525157855862075855534696668594176 6080517540552031400101176942788608 5838538113486136198019876514693120 -726133795078584534330455205506711552 6365990363045076939665917719085056 2722443281042607144601824557793280 -424279527434322100004103206899548160 5797074485289410472718107597078528 9019370190552361788233148708945920 -34986170366683866187675219053772800 8132191753964041676215728042147840 9839873694547705113086411455594496 -100698120112639394517924385306705920 7486164228994840616418743557292032 4571444843479547220156439391633408 -985529811957933567437911454480596992 4402095044202372560011357541367808 3737422196887245953288282868547584 -572099654215015574774627369282961408 207102513507002597653679903342592 5254087839872210020879207730511872 -136699940709532274075693492922744832 8279212166777704336623459312336896 7255941542438833269785287043579904 -315072517656269420980268738552004608 2303271183564929775069324290031616 919447789396912453943551366004736 -431036774284515392821587308162580480 2697731887002630983566162814566400 6341546696361011773043574787014656 -248577233460010861297056107106140160 1811557791932718842640276865941504 9173441429249437770902872566792192 -113045157713486221172254426154401792 5010104482202430792630902840098816 1745543013475336292913267928465408 -782456290673615290876705086092869632 2460358289886218359755552187219968 1447239776206271099943804293087232 -711088465362646881964445944770461696 2532022539106220039242940304850944 7659339150889787306823555863281664 -338734053547366104200569531731542016 9597705727898378129062270618042368 4082996326874642208580834762424320 -374790191581571947048861022159896576 6542945382599700238637094169214976 5834529483203300865143060532559872 -815734424227417873190787236283547648 464831306792740400207062047391744 9135713507743266247735264866729984 -769012507671640467547622879937953792 43154749628003027272572237512704 8762914367405687571152481837645824 -736652568311732834050876343331061760 9908871806557180372356835498262528 234820614047419968928659227541504 -160996620343689467320975154755928064 5194990270743404016099406639005696 9919675226342316526642156883935232 -928188489408944711833023056481091584 2632714223035103660760763667054592 5540863642986223544569232346841088 -676126407149827727313601342405083136 3364785564508432440169365334130688 765474016537866244104306852626432 -438797717686858353232186454210248704 1292430729094642011911655042056192 2593575840383786366422318929936384 -204704592892111059605209474136014848 8060484145313163472618172943695872 6144320310487648373108219171569664 -981165571062228866992007246717648896 3130642034854534178878225914003456 9054000058588070072646704253894656 -24845122585318195453097936659939328 4598452137252106033221500128985088 2976677828533557476248333452312576 -92693778098054335689425002350772224 9507098475198254155264461199376384 8272168465121059802974735503982592 -642237793590397625143937364094091264 5758864610565523241473302958440448 5290259634991674311238045847781376 -707613950844972158291557328363716608 4581305393320495873347726251917312 1188066429634456888237139372802048 -65547677094843730059936290861744128 5522818453812080771644174603649024 7276345149876077186429525824634880 -811690602044259005289405950629773312 9116684448622254306595417435930624 8590457658887225247559243651874816 -586629361117939214069644275545538560 9197291486732048994947588484497408 2254952463968447441246490898464768 -859481485510556907312036194046443520 7956812482013686428416885196324864 6133707269288399538325898779426816 -867575176276750204742109942442360832 6619431168921518556855894622076928 7981865060862077503108243412484096 -46073630490635456968975259136950272 358409073123307289463844507746304 3033474292536166774554358710272000 -654148976103953803553250160234463232 7599732982848316448082578752143360 6369828754781121574515342061862912 -293264725256684465994504814569979904 2236461464584367877430785599340544 94874574988973998188070906626048 -941733297138805573787996275777470464 1718294634833419263208373270609920 4957183254553649381295195961688064 -360469999365180147399244780431998976 6127617726500830072014631400898560 2711320371504552923566551731273728 -711712760005452543289749720755339264 4910415359253301417721401580716032 775757115755419719439476370440192 -442519207468353091106564073601368064 1252667234707998926572351440027648 134238067012687096311914445144064 -223921894275189376265192997920964608 5649108335043266132792837673058304 3617095095943355957133138615861248 -812425840893447953675560104788754432 5966019898088105044030047672860672 6406499856948017314047241660399616 -267185553098692804747351975392182272 5315512252608572049916161530265600 7393723489997187269775463043563520 -319577099746367323331553558853058560 8089372377390584209638957940473856 5907357917119331585299142571720704 -804755659698258747745713418668081152 4172877776801187511171912224997376 9494359960102314193950446901526528 -343074686998390221142780121129680896 8072431835433468907193934588936192 2997469952962507805262533156143104 -181997732775239536928651058400460800 1885079422272548970258353251942400 161107439945561595745761358774272 -518032932308303542489523788571475968 4582294520863970670216002666496000 5865372855381879341600455086047232 -773960942663320887156800275561316352 5488865399996685544946056575320064 976033817657644825799142336888832 -668632178592443063813845441312718848 2209248866737671854961862322946048 4593313457459928492577398460514304 -323759589121429692108304321230143488 1222550027515557463617831071383552 4525355140888254246773756964896768 -998265904574725494103243699532070912 5332723636611007249567664138354688 6627329159687045717655187548536832 -410490467065733288460702525950001152 3608714732887948522865420283150336 3325882548616150093507515520122880 -173161114352901841617039833622904832 5807500977860053369037454860877824 4803103146271899486187199464996864 -702504085888103414897948886560669696 1964691851168225564852969092939776 9633151497618439316722484219215872 -791906240997415239154843160865144832 4036553617914656852756801739816960 9018074283559367329069825869742080 -856949869874710856467199715203612672 2334056705314593930591146262659072 9561873799010608210772577348485120 -123159484211804977204101935070707712 3238334659661420521425006640496640 9972962050995132763904666324959232 -774813609786976074162580435226329088 546054884853097243373159569162240 147087745294336045054926342062080 -778245311707563458395714892809109504 2954965996692594046255510990094336 6315449996267088989063542529327104 -19587604575141700257711746984181760 1042272187411953731143096835506176 5903037869965481806854237689217024 -173957546210114251630491258815774720 1409493596709213354714220617269248 4762181410977789075506865465458688 -930759187329101465366320865890795520 7097422711198716639065934225473536 7848029966503400578909039243558912 -839244959525422654227999499048976384 1360464653735042396042371130195968 2317043798959442327897972240547840 -436996617325233512483999211942051840 6172002355404024444019379410042880 2503389058565717978492115565412352 -827578696735532008549407430323208192 8874257598022203637160664560041984 4557534492930247556763294107697152 -17313027987720827629799666257756160 2998744785075119145204316731604992 183632900134192939817963723161600 -917906537329310705459638352113303552 346334129308894240595951629631488 9533580886155824089054348721520640 -463502415027148352116709145893142528 1678855849407156489770873724600320 5112895591537076140160685147422720 -511904105286199673004281806941323264 6146460355213072746079160060870656 9339814606233947939246377432776704 -613229552878736949267950248180842496 1976199920464071023028275169460224 5606648821945472119034651355381760 -209516910030792717486374461271703552 9991954248632094059196841245802496 4311927796062142606454625407074304 -798462820091711419717926035180748800 6903520895888857336455194654801920 3958183161631857553974808796987392 -398680608017501146506387884813058048 1593445231334109255353215240634368 8925653257819620257056179441631232 -649903632908543577927226449121509376 9814861449428717568676428223873024 1799085797730978264025996330008576 -866444675915718925548110792489959424 6591713318634630032909494638346240 1349412845273711396247784189329408 -969942579199605234756868480593559552 4766314766707903645380369891459072 806549717237881106212681001467904 -244398104509962406344816291458580480 9652817723422319610159144420507648 8854473034207058230365774373978112 -461195558120731298062593300921057280 8248758026858708786008159225380864 7480447623803089245501978151223296 -459751501892894831139863949647806464 4067618794590695847982646171795456 1363791780173075431417835715297280 -324320087581576620786790972105162752 6624416954839379528296437521580032 8610357248129676664810105632456704 -696521517944074248411070654262018048 2280913441385287109644569880297472 2881864528673468999580857416024064 -56808902711972058143266250021666816 1559663644206077275482277128699904 6154314123828110588406716803579904 -463396255276158977627445042471763968 5869423739831470978867597011845120 2579339683319012961668591884697600 -930369219556379950363467971894968320 2919331007301969993304394522689536 3416632838561632887508048237559808 -200454972840094939292641799832600576 6691370731842109646781782433988608 3280448312140166787014778704363520 -444697179720470166568807255662133248 2663825015612440378416976657121280 4643685524442959437962387101057024 -538443736928752341825734953429630976 9086630380135445495360449106935808 8190269062937081124229643774197760 -199274981827648905259638122126245888 7556981012480402004517137984520192 2532146696581381446220175143600128 -958021197340554433807232654349697024 3265396009242338184250200418156544 685556378627118605020136197849088 -978267247145963653231244375484268544 908488261298677572328060839002112 8530229863721422777282961757700096 -380256306001488767887270399289851904 2118048695684662656533945976356864 3032220785557472337107885337083904 -129022157502949376536676162613542912 1896109567962699197479705718554624 2325744029398375860623832858492928 -378909928502017601218035132674342912 1776807313997272395408420005478400 8357068570104898207038224331702272 -510304381020846138206178170739097600 7064857645240665767273711747989504 2286703327501888430304893983522816 -165589690563827104199289386695655424 9530941629475728746855264912670720 15527492654122045942091458019328 -281433825577530193144115016769732608 6994992696532717128686601745989632 2826477624707246556393892439130112 -114742420541108384773226637205438464 2002862733710520330958398199693312 9703260828517641397442113760657408 -841001420091467591654140296787132416 4134768726597457023579533351059456 6327138159290465910528286237130752 -708666217621609606140337130590699520 3564569234684227976472135957741568 2134159022935262823830532541906944 -117459617691164166745572200608169984 3954613800566377983642296953864192 8419379159823650110078985579790336 -412711229064745378802285401530695680 6108162360167602892886660712759296 3399675836174535266794566450151424 -791255910722004186235721499252097024 2588892833535328801341378855436288 8595821400505418694289856521043968 -46132045978351865105537243405090816 3674358329868863806072920985305088 4590631888305256953803438735491072 -578211394350492745783951378631098368 4813351700387843031386575876390912 9586190612602264462481615795257344 -925888413607525838637980341176893440 4781371905077761170032119456464896 9924647472969697339724892538404864 -611005076212185642345238030612168704 6184369068848387158124569676480512 2319821447754378231414999285235712 -201708387371341517248612186328137728 5862920455891736695793637675499520 5291468668118132121964736440958976 -915643628438144761826402349034242048 4610828797917559004080072575418368 2440264955666726294264243688570880 -142828575270072299212671821046349824 3463981294966786851239352376229888 9556454950127132514470563101540352 -46090097677649112119344428918767616 2104655993212775652634311392231424 6007172556113682170486302288379904 -371709340023845319557650873191497728 2132210029173829919334403695181824 8961133888911666940655175813038080 -593702448486886178990734786244378624 72145976760476902848788812529664 3369311354727258052134079794511872 -442628403761914200773201876452638720 2533531456186087525956640374259712 8761904620838933078832006305939456 -950919334528409897617361241823510528 8376307678179938871800164291444736 6945594919144635203641377676066816 -456630247681020574499405373934403584 7772503220464871908711780581376000 2264319349542217842733100377833472 -277820622558023187477407837573873664 5436484321340825543538047199477760 2716901524191432479664367191719936 -538638270414144209432396900081860608 8547575943363318570700735120408576 2965941263848111314608280903352320 -675500215843144400226457004913197056 6875392273291674945820262670532608 3896676214650539636528035007561728 -419366279873207163846511378116378624 5534315326379373246493930628841472 9766037634001024373532475428700160 -175787562790905715711526678665625600 9103653884566917675731781857312768 7187870489194589997948009736830976 -591663988547680745761839539671793664 1803007435927437394774764191481856 5192003642921830528281402109067264 -206966602521602397956000381570908160 1170544668008282797904408659099648 7530586159977127198243564713672704 -54980345287110150319683422851694592 8890539528494481182608625709875200 6996762164538735535221618111414272 -458843770351446773321604434109661184 361360003032772188893606561447936 7204582708788736774186837919924224 -453500638652321597737111183310192640 7290637135734821322476882782846976 9601153471945176261632287926386688 -723841691481258063063901088086228992 145402140871431000554197351399424 5979334835770220560689241379569664 -662430725032674132822033259451908096 5663187713021037007027652760961024 8895295001094552396049124587208704 -36026600140630806529605643324620800 7325262565847787098891818740219904 7259898362778279560970754204893184 -735530438717699442733739408502030336 8790752437752051896101121336279040 3107106705378682978329581429194752 -37512756790105051778627883923144704 4520049245042361480899056856203264 6332446244141720387879239340261376 -896258409651915296197660717883588608 5591367272604826415147781772541952 2278296648835755894894038161031168 -365698760337403373459725780829339648 6969301216404985312556489950363648 6032909213151869914396697934430208 -230827768890960250457228582722732032 9205993746514951610539762419499008 5178260428595548622892380819816448 -391887561242084406546089093485297664 8472544378219223985330338874261504 2807953741248142655571262705762304 -213392647959436188282329234751356928 9003982222905903943397470323605504 200517838975576749967316105560064 -647975105203348894690582127473328128 3754395550797712465816622251114496 8094531663840403177122356711653376 -751819653304074348180632487726153728 7595746736865350081270849627750400 288207988391572332456573558325248 -434191907367280190029938674016190464 4017818485144641511034686816649216 6572595020114062015363053030211584 -435598752059547280105408913272209408 9806844119793788511447660202295296 3862223970403354474408212353253376 -806520869504022928425060052336902144 6574375821538936086738863600435200 6421266481456200588859897079136256 -798936369778226832387173047045455872 6340947307689001951482319518826496 9668108467775252225218853778489344 -653821382008191678835838298835910656 9287983639210148861585932127567872 35314584716094809967108833673216 -701129906277700614758542039366762496 9379744589040795070610945813250048 7293156553038461036757004901679104 -297253563687724835885214246912393216 2495912511912672393697914666352640 9116703507972524171763087178727424 -243969422960688814586091713987608576 8412055393481691722112073574907904 1196787889958556563940085235449856 -818962607106145460630623884217942016 5573639117058447467407157615394816 7668921221741939789058489440010240 -117902096547439096393401734034096128 9303339396607900331591148937150464 1706192788965698858317368336056320 -384081204843609621572961367784161280 58304410905460960956349400743936 3124138287348670690580179630161920 -23811255394993559306803108867211264 1441154680498682583369050505609216 7330763598973313086148312869896192 -314245748614454109099212506054787072 5648118882072177760729241818759168 6863336973665913959447322020544512 -997608850384342967109757740997672960 2728542519349525324025950554292224 7501509382211450396529765346443264 -981169763883280884186073747683278848 8631487381317400971127204410818560 7190390319465563077340158721261568 -503512351898076183319030576185344000 675383477073868287938890148347904 6847388974794006215442043515174912 -591955465125923873307292973175668736 5491420311057073624810267458142208 150593758842207317358620174188544 -26606362086741538306085591038558208 249732159297387825800594948358144 4114824685025647131111565366919168 -731716805943983744644651935546212352 6672029233469076395950456463949824 8904138428440237954048400484728832 -895544578706080083546320197986025472 2432135302326565611339132845424640 5252965622304465507640085590310912 -187395631999919060990785753488293888 4393783247872033525210887206469632 6564850159662524766542627587751936 -312633279034581123132468352786628608 9158698589052738934447636792475648 3433582623077415917559122948521984 -724965985651327803705688339263782912 1716803811582416821293585344233472 4097687142211151623925319046529024 -603191479105121164006439434422583296 3913404615345223023759690416783360 3742972109503435000930668807979008 -911491533453295552841018023979515904 3006912360669480577486935759519744 7472461239491352850082762535731200 -865798865408745493534606398089854976 5355548524739953845708289057226752 3373977643183176904752181362556928 -566171664560180521799076539898265600 4602507316829312637761091224469504 597077419765602362336044935806976 -349271555769284467916866577227579392 254093600950791670382274717679616 4138486035554407586688002093481984 -408052012074754835329774507769462784 6875872349117789571107843775397888 4094740292512499510908752544923648 -413373058965303112280724244610940928 3697052134346420398075070275125248 2134540193074376592556084428800000 -274488678366019994994486792115191808 6606601059654434672926882659303424 9650939882940602654034315953831936 -562824938223683909869930380248743936 8325063682668049865030382726938624 6865195782425061178814322268176384 -726000567006977869830524004521213952 3979149265576945494243940314906624 23126396169013769415858396856320 -483888171147296085055463771393228800 8345788138428275398719886539620352 2687756294868111232035134900273152 -859947469835908805374700914470813696 6719131051212556583920167941046272 6159179187731223890695239508164608 -409142170662064585869630293307031552 7333712447335817400560245756919808 9332788496450895141094904328880128 -348006377696066892370777502149246976 7806678239887334960684068430151680 8682104886605223551457145355501568 -896241602632286045614082705510629376 3619266907270036458351567283683328 1158635346842044679984670176182272 -807772583042575890784302935369056256 6724391031753041293560467163185152 183463709991915878127356692398080 -755612388068035668168730214249005056 8993902384604669250970869645180928 5092412298872706809245549922877440 -271936196620766639428476715646582784 9708973672821370931715491965698048 5562432142834330884174206698782720 -403520803022645910100849205864038400 175215890511536067784306986057728 2357818507389515873500349274783744 -34792806654874053413623520666058752 6846617985952731157104500643201024 115019358387512629920667887730688 -306144147904598053827625245254615040 1615382204831785770428647197376512 733248238077952694495249153654784 -857028304040431749216679312454844416 1621755491913783682495629842448384 6616803328543388488099166444060672 -736156721425151182618826069151580160 3094210488564100536638440124448768 8930163081854709637447469345275904 -972028715011766854198130580446511104 853009710958323379311878281887744 1158060496138534870298959932293120 -730978756133878112846788910037073920 2309534165524224050942305980383232 9447125413098906080512806676856832 -264535995764641800682252877139279872 9307721352878597408557482303815680 5969421852758358726129569859895296 -413893703015654954782857307067777024 5414305280586124650565144435228672 2305518203806849366712831474401280 -862524149135503983436225147580710912 2997261102917145968100548416634880 7113806907644324663523948460244992 -730361084650184278523879361987215360 6966039296405696818807772530343936 4349989386705504464594558408196096 -482364659266016651290987048980185088 7622500378260283560962231818518528 2145775200639423848808087474405376 -495720242589908134029590795747590144 8339518121230153719575151401500672 7939477715715982826233009526538240 -465310743372392848242144354121023488 3825428030674165956320639307481088 5674079319144603762742974843191296 -856939103734942550421595018292625408 543746730674222853249927412187136 4161842752749241185709836715687936 -750082742777871194403834712773623808 3576909825911789258502795385896960 3996054462677267136884980798455808 -921567939770734603363435379916013568 9522515518485331666417832171667456 1631344188089841767804624678420480 -619280950807473380053900515556196352 3655937079252257034374187579342848 6506628407327682708058215685292032 -926881916639132355169617754000982016 3915275422192308887170567544766464 9437593046067890537094530352545792 -519684242335723522293591762104483840 5917169188316132724275926911680512 49774046039322905967017961979904 -606388554503378054528782103750901760 1018658974926492786699288281350144 7519463931974417009069877698232320 -678132380203499281098261156331520000 2219574327580382833203375650111488 623152989723733339536352444678144 -659697073580834392273071423258361856 7480392527299243189378153644556288 1041014024541301238484564631879680 -658742560213025847126927254981967872 4112865443190800111083746354003968 9963137458477063987364564389855232 -376720826352256937208042768776036352 1265214161547946182632670870110208 6390059747377116865871641187450880 -815588399171279778507308989369286656 2032472025129839155868575454986240 1785104481191058868045845687697408 -261972481042528624325536751999254528 6908257929313769530108468040564736 8415627150760307601885494280978432 -418362673341822254779004191082807296 7708204999462609261884496454615040 6030939605023769801606525184114688 -692115104850952473236079690370777088 6742997130134311790347771407499264 3507848506127421659000990563565568 -982003062693563722959758243282288640 7930583459366361439286498340896768 7379017916542850121589693664460800 -247768437681267331844678745784844288 6096232485994929456117327203401728 9182300552606654312550468876763136 -387033082801339123486257168200499200 1212924359344635824915623106838528 852781393251968493185342933827584 -686829086514692273731977447601078272 6560911268833938692618353830264832 4430885644675543154077035734761472 -529250990964478142720329767949697024 3364189206038522143477393155686400 4266332709445578893945567226888192 -492299122322611795371310681675530240 6831275936664094086339062428336128 916624090210464573192878679916544 -888915243948052178967968432684793856 7095267877675346498861256702689280 679531102780390660206264737333248 -866620376286601688076721245078421504 4294507004803666527142646690873344 6205677162013687814142811476852736 -103812205231443913816511236362207232 2492749058609543826552270211776512 1099086547192892494482024674885632 -652388795350354737308736979529105408 5748511101119815983420908020695040 4108684474343748565898030338801664 -4998672028783660577168169568829440 6032486630042735925291593288908800 3073216226953416645756785883348992 -879897675880767537225552434319851520 1906259547924080896984050919538688 970877572171365035397117347102720 -402239062991766328417292946008702976 7644465793409615085775101376856064 8281469967728427369880136577974272 -138415696209175723505391216032219136 4173513086011133739320222312038400 7814101562771521355603648532447232 -439126986699918528538843215827042304 6279931116045013879476690572279808 4919340571687552812846546650398720 -268397349806761627288981187143401472 6835655458332512190938793199534080 7237221166182448197425150499487744 -45582764661022783528195341370261504 7294724250731915413842171489419264 9398441804213221573672955461763072 -861793077497167566713006687946539008 9302987520078617597056274680250368 5176582408913128115802829383270400 -486759628094402860377546557916971008 3549155588468420675527157441626112 9000836740555188956661919227314176 -954198168942239010803928200785166336 4459601530479720744412669290741760 2915443521158461918649675700764672 -518931486601851284899217224163655680 8513708427971476668811937667088384 7526556074130887420140427036065792 -18579338879354240578985352769830912 8391301443008686568399667134988288 3770726388388358388207087465267200 -595170036708807689226336853584510976 3958795312810257930660831272370176 2241701991277710755232959581650944 -847190011181072355502314798975025152 482408298404663401303853410287616 5263679785823780497635043539156992 -775118736766364582064012289906835456 1367642608987896181505579370414080 6813888163118532595943789167640576 -517370091960053854541208432913940480 1308024155820019225215613492264960 9836144439705812091829194147758080 -930695049789146877505593247434539008 3318153962909697563572064814628864 7738144469303302409509468257648640 -498648470467516492465564219682586624 6998023967025160907645608102199296 2527552261410988295732173410926592 -462920913966312994689861640542748672 911775931988988072648934489587712 4252834004687629867270256113745920 -463613722686470657586006831182905344 2144546007555189016812793618235392 7283548828192249967751287254548480 -876052315012160145939186000609673216 5754511183486205287616756894924800 9031932225513042374590093340966912 -368818907806257138649484473053216768 2665058978151858746890521170411520 9259241866024647447854026642685952 -154586636469684993912435849144827904 3413664910930183784512598581444608 5380792754808774040221313451163648 -339016252587045606996255645041164288 9389651327411774357483595415683072 5859275629552661698394359326572544 -272339836104562279012268969465741312 2843000653862734400299241333325824 7267601567715293199278621178462208 -253586485747001249104178295055843328 3184597413556663636890015309496320 7636531004124467929088584216215552 -673620146726807656614235171660496896 1098079342686817164237853073342464 6861544102031431287638163835584512 -844722160742346829992547124705755136 6336616132875858157647752945729536 9600676423268747866917398323920896 -204117820637410651692181975128342528 1431251841154246527776078646214656 1051309158631732792702475012407296 -687621217750298373193653711829729280 179012169271752205676056892407808 7598766267232413627992992236175360 -261365938991283000050299389945577472 665198422427900770629051589066752 776052489664413616389069780025344 -16385476504395861885241520130359296 7617847604519557456127935255674880 8135717841534166760645097462693888 -291709713012303134262200387254616064 699932561205615585852636337799168 4616061520297006045146181445615616 -756025165389494045380110895904980992 95654322904110223547932384165888 9442995454440059991465437796761600 -137283625056585065869441278062624768 2114689639931569875847471561703424 2566694289782904049622942578900992 -938248877407867515151929904877010944 5426348159999374321353158880657408 8113320072582268706467450015711232 -788627093131301760117064744807956480 1388567682250185573183008794476544 1746336515597756064454890403921920 -216735537097410072087755080872230912 6044659808770246459878336796557312 4469518434041002808833190723059712 -295852629064312220153451431403192320 7267492590482535367217858427748352 8739834107564707994596938589667328 -529892914432533492926698553927008256 4618154638097453420589165590872064 2023245706862420098280112988880896 -492472267224702784156296291037478912 7847989038622391750481516332843008 7534640532090125588696911929409536 -60976953145035950800346073930924032 7994157423454204604525906820595712 8944364951780431091526852189093888 -601736474096238606061624263115276288 998448007202169442690843057061888 9731266768825361968769334469722112 -353074110330951443529377540936302592 7963948393359970360599134190174208 5399038065634533085734690086715392 -255251036412371040736852602544717824 4120111271267740860230843221671936 7407981567795698994218309240487936 -741132894727070195743187170312060928 1892235149834517159195088848420864 5043945849353967444593130040459264 -3272333800781320566445247951798272 6606761019447695526873141807677440 4196544940689018536465299085983744 -653415958876152237328663692154241024 2995159242909102963878977662353408 3684087217324864108203059464634368 -362033361981438935449196101208375296 8697118334011762370597592263294976 5888813684809154389870922472357888 -215498085684528774288457421169885184 2749733530115848452469056505643008 3664766294929355402740083665666048 -190060322656045251513850399985500160 959435002457560034444298483138560 1463567809273055511483846716555264 -179645824625106945085132448783663104 3314810111974300091831707003518976 1981400845562148801370839301750784 -801063239026997047495327211843485696 9545696173012866074865491238715392 3248134055646737363050494401970176 -645171020465023942851055091491799040 9468084323747971452379551785549824 6421510671701742445746204866248704 -640704987305572975528456662032580608 2470127962428101967199676221358080 1865418916183191138646495674236928 -319908203933006793971968495958622208 2242615002692361533491949852426240 1980827020292061600063307573624832 -662644490195480517668144022569353216 4161129543663419405206652920528896 4222005677665354071149038486421504 -503982101806430890375104611726917632 6106274357547994724128295093272576 14538773421371934821171637256192 -388920945155305994580436581754077184 3515884908926469492680844482969600 5544514643292722352397328322658304 -484498511901635024765236822174334976 5964627412551988222731220724744192 3697103823017557744699916240814080 -283619506116915095249628257664892928 2902267912036673230376671069077504 1076283478444106005227982320304128 -364087775218723552569493396771569664 6535322688668498265083660132679680 3542363227463573390813576065712128 -437509486382940546664722113797029888 3978723136496587165611089620631552 8477818703910199027474630201835520 -951197946951548792079192762760560640 6604787443223796097171164470706176 6796702928960603568462677348974592 -179028628839854461095818685099016192 3602887940793329898911932128165888 8875114401564062127443558415728640 -15144268558666307915280445649977344 2646528764116347666100459596152832 1332812878711338949598975296012288 -90583236785009389276644003945644032 6065987857737960239423732213350400 888448000343888059881130173661184 -118860830801570576097340510619828224 7094384707923967355553541427036160 6110538778615022991125239444799488 -283183795640668474493145612764053504 6301717151286474623654971171667968 1383664703801897591222100857716736 -249022711903691453960855283593904128 7401484978249126976311290310426624 1634260164586972328322614115172352 -713659516610520662482104679873380352 5368543037827866527253858323791872 1121006771617914280314799648669696 -691685006781190051214227941722423296 176585842847832387772078849261568 9953646300260705054814767329312768 -609778464544468752181584887260643328 3824835912076464605473910216982528 6168810113498749140438301137698816 -282688938646398678163054500182491136 8611187524196423833518179371450368 153814502311156499550467533045760 -6258163624925347466795694667333632 9300679379713596369614506916052992 3137471057844683292929570732244992 -834171504373104424941320351120359424 739875004062329500126159933800448 7047382713842510586929524424835072 -661453112733781076468566369423589376 8522336022235964560586585264881664 9680913162540365888831238883508224 -553766370042958641056782257399791616 991097492363472476906148939694080 1276270193015219455121662805016576 -74959886814098305070595706265272320 3122248989123432503790710212788224 1168152796093836979647960210997248 -237404449174134736259189692296069120 9551217682366541334544252550512640 2840373429003104995607811406692352 -159833095443189393888426143028084736 5176091702726378279656459750866944 2972069233897569575027190251126784 -721592415965996425344145554508087296 4189467923519547120035896513003520 5480181711422632143498197071822848 -378593728830595578225174989078790144 2330885753206504719724395288854528 3785867734239408121625694751948800 -105293172267535798658592621276954624 5331890488399354568199435664228352 3162917047464627864680354212216832 -105142772663876177576824219839234048 8401312105171179938808409345753088 8940403260632227662746616210653184 -723746932284495788001968330039623680 1617088153449151208045645622411264 9420110731032199243041803887181824 -333382629291845815687727604081623040 8600868455446340618994784323764224 7507050414481529914747054079344640 -478842215228460085870987896932007936 4973281440921183363821735228997632 3857080435220471359078835469418496 -638191223171946985737434846153670656 3158194253336007024295568285368320 7695209749583949409353896812347392 -913968850666945233214772239170273280 6407969547010816744555940350525440 3023812344667165266532614119882752 -476162342789866788117947988188332032 1050469159417934620743879993851904 8487809566879258032208814582792192 -38865905894807730892790029585743872 1501732744974375988540961091223552 2120801235486567856204947031851008 -684722461685840681738669431332012032 5970806549398631850062577601085440 6215270498663651094717678858797056 -204106107080511825431402614448193536 1531575272455188230066406399410176 7534592154554734972921553103093760 -514442014983636428912924223898386432 8831951896773744143703683840868352 1274497323281319071796039149158400 -875918472456019630436202034724077568 5753488715854615044472294869041152 7564372631727768109296449314881536 -183587496771854849492900243988021248 7410862805797295523186334691753984 5634472591635312480694414138671104 -830669462251740160581594660124753920 5303024138666527470329443024633856 4360544293489781360468272099622912 -478325622308383190981013622054977536 6251241921877969940900445572562944 8353089001648830170431170960949248 -527313475857615981015804058189955072 5518431932241562903019535619588096 3942792288107964020711437157531648 -305225948190688045199094001015193600 7960657560433868699900007751352320 6534852431082195267106706944950272 -747877483523501155331576354675097600 7360738794353819490199793062379520 3665225985119456145661705815326720 -337282869786832995943983631483011072 1196667192519096449477255356219392 3593127173172849860765559029760000 -346598511676337211544300781226164224 3447824977236694800561550298972160 9435578895018296559030943371755520 -690780681975012199084987121085186048 8982552781445918184253580902400000 2743597978378320516188231516028928 -177642374225072516868298660674273280 7754272359195592108728138860593152 4720376085255937492648281006669824 -995415673194630712272261717442953216 8191330151224481812937721358843904 3196442741006678919649241681887232 -985323792647433111521779172029497344 8261256929218582012202042309738496 8244178096500201190707474640928768 -992666290961422602876409898170580992 9190096470792777257481700735188992 8213550538932357252650880108331008 -285518726244992167766932141916553216 156203614195709139741046114091008 5197725838846829766805481999826944 -50402866452375825761291727269789696 759662228157992902112829545381888 8079125361424772919682186430382080 -742051316957691019416230480463265792 4297587118001831625805671660781568 1589972252365416813173266177851392 -774251728231366864394861280080429056 5841124347500320936176564524023808 4980164874223220862055658922442752 -334034632494679105671246819075555328 147390863605206909867253378842624 988047262270133817495179677925376 -667516840998762077669452549931925504 5608198402838968910152824910774272 384860372991463254570829671825408 -4591995392544241279179043270295552 4796271782324020660582904168972288 6100933515998794481660479737430016 -445888984580478446884255976554233856 5819513694839031181528158540136448 9592989104684771840034976854704128 -493187984869452711764794514211864576 6179908093623843956648224650952704 7409322378474530838940220198486016 -337641368936539428254312581361041408 5322591572346631667894325455355904 9556283366824130059735035543552000 -272983266113871107326908342114189312 3290546161387158356790610858344448 6115786245298447124366960344694784 -243615115717225976123619205833555968 5840842713984760827448586011672576 9610518010456390362972763753283584 -715024399506983466563137616138469376 1441907770509214882377099208818688 6818638135577494214137043304316928 -506638482880920967314298924536168448 7392207985982557131143771599142912 826692256375651248437081508151296 -206996284431429921619335127106584576 8856269421132648936692483979476992 9247259919445403773540730058833920 -745173125848741302186989584400777216 8523137362404810344631811371433984 7799017212338793453836644542054400 -820101946727661110538318202043105280 9096482052682695031119468830916608 2412940207590042780065718788423680 -636089069651141278345175120190898176 5980285852322184290980686626553856 4930275082833105905646595072851968 -224887253678308957664975192017862656 7051940998296102497540743794524160 8973229620567993781742051082108928 -128843384244200910581568614529236992 6122409026320757795820040368422912 3628266172756613478143275116265472 -20840030128884751918369653361999872 5035823871346423968961330046566400 1598754846626472224104659506167808 -356921318488236119565876615490568192 7481263929297537360353145221283840 334722096228191690175790979219456 -775113172050140550827152491746951168 6817424925543260413368567112663040 3085107475813667149804348620406784 -327773022129454491083722801759125504 5510592370638500916088708081385472 1871931995391646813706011252097024 -672311015263000544014553919946489856 7802292670024367524767624008302592 5001017713516962937367829927690240 -413030716005397779260403819367890944 1329571996807491834389923943677952 775699698212521757482309929402368 -581452330053630842195912258219933696 9691401079138850456327507817791488 2466563814465259638692902653132800 -821364867139133710447877815044931584 8015038833380879454327141235163136 9578419121873828477765200266657792 -538577160061670860344778183608893440 3932181670749555659005133276053504 7220140026238866687223666265030656 -102561737992135825978872349230891008 6240078205731155704200391173341184 4573923547818974450203175145177088 -287781289783527557612856077151371264 9881320929779505989351037458186240 9107062897447088708197753016025088 -902828167123731127993540776808153088 1798337621418971431887772814671872 8214278123848787400050507547410432 -801324198234431381197893858561622016 1814331365173453798383917230718976 4547179752291556184996776215838720 -304429826255620385815624274908545024 9715711859954010092550830822522880 5772154095356531063036946805686272 -565353885824716851469982806753411072 255669442199607973561943908679680 9851963448682940207193272757518336 -740213600529914281365325656432312320 4468733376326269830970695368048640 3394447203163141543549774235435008 -901107276296048539775374628346658816 5447603577449255523566248794259456 7268055073176529326637830402736128 -586902311133938740730774986342531072 7961576342161836338943979969052672 9798504067496694083905869026689024 -629575324158925212501015344887889920 9162507159044188298913513924984832 1272137359159055279693487981723648 -788051047445872670914379293218832384 6057903312238998245725273770164224 6787245594317170551897275211186176 -902088846174312096207186395356200960 2508092607659172507247252657405952 3849159638030499101908892540469248 -754274836638882865428879856430481408 5317205404987017909562358835970048 106789919774470488014014432411648 -965547980563917717542882851642408960 5880453174754371511887683179773952 4806538290526112986538980830871552 -77140983174480414733107034039779328 7295880585171866705972776189034496 4033958911865081733746631265746944 -862551549153390515736793352910143488 8754477432660732475478782372741120 2041509817627678801562127487205376 -426739734301281040810869872102735872 8284274736545886464864091073675264 8465698534034746726882352518135808 -107055146939277236088825611051597824 595601049123492676420365625327616 5559649612469197037928815538470912 -918464911393790283827297627886583808 8417416554650063632071064933105664 7067058047118955119318555458273280 -175140672370855633176967117497434112 4875426286306182612334647932092416 3942873342510603510837936094445568 -982825878456279128494686876915990528 5189121473131356760638772211613696 760416558518749053609587888881664 -746005883779886133293244102605799424 9353135217532418049810685533093888 8473111859099051060161756482502656 -134214093547670832812457001224241152 6109321044722523202999238348767232 3616400950864417105416532080459776 -868904168617352348754302270108073984 9973865572649997919653811250528256 516216159701865245671584071417856 -939762893213623988597869345182318592 6656320141222603368168968817737728 8990372950562069219984415546933248 -758337902614554572027477750676717568 9902173449750460501600319894978560 452118542387817689663997476864000 -832907300707221062816193422945157120 2693743358369753068003776274628608 5724764035639846215923698692521984 -650678338195039422678547656884617216 692901798583018315016072142520320 9214049216373292784999023668887552 -606391120707264126522958799507030016 7958430836840028522809971831734272 1247242148892663869964676711317504 -675965520968461352919752500345569280 5186003951999903355223930965065728 7630222046947745935474335737184256 -280201647508649390271058579459932160 4823730323483193192212775865155584 4600680326874408509164670215520256 -130164993415304593712175963539767296 1799109337893758966467342031126528 9213678387952142969079566369292288 -594644098614398545464585627004567552 1925873592258789840923226175176704 3099209775383305344579371874123776 -284629440295177258404931405808140288 2498321473745439088108149669888000 402325731746723492033986375450624 -130329814935721653364605499188707328 8074767871000904889395610822639616 4150091079494448295913088312410112 -148561787452616441970826406998835200 349621058551840975490779529084928 6111101884536539360839990348087296 -621414227293727499831627529658040320 3560246901828055084362238982619136 9969323816247436076115672233410560 -643379978367988888100772342210232320 4132830380062923264904457684516864 1076347056140579010445738309058560 -381030122296208299917322861972291584 624335513845544469721525996486656 229664460601488985470827065507840 -656134762553189114505850189661601792 6946734899008801427356771676061696 9589260864514863360210916205395968 -998747491790706488532832355964944384 1869185423953593478125249401716736 7907048198959769783134494520246272 -842275796577837815016201979059765248 5549033645473837014842202562494464 674104534070328360976874658070528 -699987901541639164000827956105576448 8741641051125062456688393148432384 1896578345706687238325218612084736 -142565068568932960111434368303497216 6870689504034725620437766417416192 7989683803943108672233953552236544 -147607236359510255856480303540338688 436485580084020906424537874169856 3526618454171254628742200026988544 -603434095001461398331819593958424576 832174957784419990883120315367424 9295000394319519814111616565248000 -10594138826355070819129571944693760 6896678715895446853530131739181056 7414235192028896977247406070431744 -203484674619022630236808565915385856 1357909025802582356839353049677824 574290116097603158535231951077376 -447534237472928493023484625631051776 934372118676148188780599634296832 7530213859422689647799294679318528 -476858210742528658475738577149886464 3523565411845029253486813477076992 6937700991723653507586095866445824 -545778409639569696540372723650527232 4044126351666366127312642838102016 8620950662006536939714174221549568 -378766666091081086820180076116574208 6689063738182763155130260268253184 4824295794937731295740497913446400 -620213576578152177451721838127218688 8494142802613714009640030405918720 2697434991809767469299536473620480 -180216629781690408898304379904327680 913640150297110794243563933663232 3130592200195697288699403304960 -540051178371268673597343860395081728 8971908160934514625154838484221952 713765114680827975903206338199552 -960542899017918591176210578168348672 6870120589410751744624972896665600 4327775651949235909286807048552448 -484702320630778587077074154048978944 1429772963788186544010039285252096 4136078920433125381826812143730688 -368493492086569455506569773671514112 4267928379119731622259772838903808 1510405672758304042325635208577024 -947935522984318519182914597387501568 1791638966812339555497660053979136 4247391638612463415621591689592832 -120980043143731935474581585554046976 9179205206963089741306219655593984 5878849768387367813338272855228416 -206394680496776303694089595861860352 5349421313004125519463105288994816 7319188933988547266266017533263872 -594707038620435945607326151215153152 9922475537318353002064874034954240 7554699565356712468774817795932160 -24881266017972896133024164532453376 2882949972296883809810519078993920 1196675750490008436192198151634944 -126641557030364852038084791248093184 3448869313399026312808874706468864 7917669690671529117885363690405888 -697210585616361492814205227982913536 6560138926079212571143652581048320 5855471388421355171125460669038592 -818081048298455782537977213235494912 7657745438437930822682431316819968 9246934918789938188713700095950848 -328742097275180900604200509954326528 2836564026972155394795669727215616 9614103247113469621900887319379968 -814922740352222238663336605515776000 8883618070136456097156776165638144 6144382822913342582047827254312960 -744670336830748250516185404858695680 2324351439456269549838510797619200 2135172737597817209523564963692544 -104724403940926303123005287281197056 7772803234847769992120930005942272 9430464234373081065422520257085440 -188609487008150263843662530328133632 6461051784461567155292642146779136 1676685444196920643511346383552512 -932144046428387280822906364488581120 8127771886200582349182472575516672 7085311895996949642863959028531200 -200032357010750208796223465450373120 6662804390387359808335279078506496 9013464674251395462876278313451520 -811285930497906550491031657452142592 7159138566533216862319995030339584 9438860850650698525837050370850816 -865999650785483106092451405095763968 2179842651997985865053600879738880 6140879042864801137832157226467328 -635309456463460139535788818179293184 6550218513331646754955753689186304 5339892427531688987716346473086976 -246804235936631649840435671211180032 8668946708091433047827631214428160 9627949603946546306018332416933888 -61040894853546986707955268412506112 7999338087240931472252973378174976 8137195050320600605369245091495936 -760697336250417759090012151202447360 7340430680114254656999697441357824 4463666393210636640530712382930944 -652531465661753682681090087105593344 7675589494340884346500348186198016 3611779180754701825194080985939968 -378520552058701938859933719169335296 9444002910647878882962766022311936 3368848190687604655456439240753152 -168343091256831832615335218988974080 766315113306758277867243804033024 3196815250373093719684245031485440 -351320942714411648081880824831541248 5434289094176030482162871879860224 4645281249372518764164551098236928 -775909145844024991775971555357491200 6772204336195524626538540279267328 5340386294350028773766772205551616 -880904389190240630795850590883676160 3825862077631646611762063471542272 3361785443494540897305718754902016 -95148373168400960312912547088957440 4590915012424571960105324385402880 753082880292429633403207773323264 -409946759514782442760671931146436608 6771478086722080108609233724899328 9005998217614569981404639225970688 -806404182690021463729219094397845504 5078864791402376012810468341055488 5949357614098161250371800974491648 -390801492730091507751387572442497024 2817037829734411395273621904556032 2089504250388356521443155739934720 -367836360150779679638599862381969408 680263180874970634068410528432128 1852364263911631475198660119101440 -734256659385686248347369425510334464 6321687276685941555889519351300096 7827834228172065286682671669313536 -189642723458831529516146465076936704 5965942022787520937474442328539136 8026810798627138118597701082808320 -801844071988915096608744422944800768 6581190743371311206932745377808384 4058474427178061556492799578210304 -515389376893488249051278616108728320 895307730769337923960860370272256 4067593303310444337039897972965376 -99428355405347585472864059350056960 6728215828943195136938859751800832 798557350748441773691988887994368 -755820011755381977763827012874534912 1873053555999335570348678276186112 9428706443528009935320910149976064 -41412972140088111168772045442908160 4770064511591799462029288963833856 160950441285143856777485285851136 -721302212677201625718410641814847488 690316527037822652973352856059904 3775702337595944028052421865373696 -849955656489827913815019660087656448 3778998951596799607675235577364480 9746191111918449929539124637728768 -70524451386194978168757336724733952 3789065919933244419958496169033728 9149832372148874520882984758804480 -737307688562552637991851025837850624 5802577690554033083567085461700608 7861157655551103573880598035431424 -594933322745975640664960640953090048 6554584575540278133198885536923648 218412155910346147013990539067392 -903089379512895369795892635854962688 947918197058944094931708213723136 9156542802217615709908687260745728 -793006796141666910694195234435235840 1874665831951012893105985087864832 7974106056362997354694546254987264 -310919579075092321194235568632889344 5919255708420376930897700535140352 624752299013658731443233730068480 -181975255533643928688584670259970048 6771982293810172628334487600627712 4176865990767890927290317713440768 -67478123239040164889970961085890560 7517045256307826735683629131759616 298841125135950338635477345632256 -133752583900244194914302014802362368 1282221845643222101762212613849088 5733620068882941265352136796930048 -715322277802695438966968268290523136 6045347027672955273281821783097344 6621882239073498703021060502061056 -423543940472495289285968054083125248 5045083723095882141894584775475200 500341199210301178973097035825152 -572740076212219720092205167778201600 4105888808498231502281597857562624 3198241029899160425182578574622720 -117679644710278989093131850375757824 8754217590897629462923783383810048 2640348047678012944000450981527552 -290864285522170065976013073386831872 6868711798449431593587967369674752 5165038841203920075503022418952192 -308567039575444361033403829499985920 1065823410949869477493438232395776 3976254184380127618617941921103872 -118777104276732374241250687301189632 2752528870533751940890169547161600 8430100315536037929722600333770752 -570622366881172850791303427630563328 2007003210614987224614442148823040 2415692483324566149870661205491712 -651142654808048248329194750963875840 3825515441832704417996906682122240 6632291674010137229864695995826176 -179243812368349151699325849671041024 1372612379571442353229803261263872 3857846105104909331664006964838400 -870312098437775069535766866072436736 3224110700183332559612432481255424 3526921572482125421496933025841152 -923894705259789780277587690079125504 4549049211330018150324430444691456 8587748800891399735200898946695168 -30454085512964492059524859894431744 5890362438319765161183243604590592 6307469109044048318134227763724288 -640010387122344594640117847740645376 4401758618087701242391444882194432 1631622399958843967519832343052288 -476114661701831732401106387225018368 8763756062826813884060255098241024 5862091986543131872616975479865344 -378804556826685630397737297640423424 5532884226292269109460157476110336 9943248765110840541739439867559936 -65454500194866875741372752416735232 594679212618136012262880978141184 9408107760171365407315266604367872 -163155015260825244556248422115442688 243385872413872413092521229418496 6107604015992242837043532907151360 -564991297369824988647344881518247936 2642789399339556735801071933325312 3955709866841402799736752646914048 -943492042661735185895734164603273216 5628752300729615029830543908798464 7861757692025930133839662112833536 -160135319755956209445116298617946112 9355077176055020668731299414933504 4457138944276398898937560184127488 -374440058753916101917717418536337408 8172840673124270281171980156665856 3511098403463485251053333470248960 -651594586799469369568467851698765824 7652791724630255984357564057911296 7625912151170348870372381922689024 -401029308793946164879657843935936512 633222070287256482999517589798912 3178763729018344573930191821209600 -643007183667583688654281290809344000 7129231726013394654916713270738944 7341149475276707782726774383706112 -619725074220963070160797137855578112 8865473531627859338782953890119680 3075605532231892864943978568482816 -918954838246554768365374652022784000 5733158768421036004955429797888000 555927002948381187696132605607936 -887977972347813261090007619475603456 6893538179527571678614659478323200 3686550644724925496453455576825856 -88377425161858620790289112770805760 5865515802035102195286117854478336 7207550958795387887463272338685952 -191445689819314426462067058567806976 7067052817150054807221680985866240 4573789027102971803608297397813248 -424021033835174781369648901745803264 5031210881833448709825416203862016 6177316439299246514010014043078656 -858931215985855713754698073390448640 7714558240150060101519898014908416 9212715135424352574073155262349312 -82914409544943123875996299421548544 2022480701647061357903134196760576 695147073467028459378933191671808 -365810947473151716756860942178844672 4814565156018994093045401669074944 1277557122965140820943328201670656 -646745503463576339703229504437616640 6145840553277345454977590493184000 9913040289174874928318328535515136 -363620137286002348142544714775658496 2920013508952490591433628711911424 3091202752129610871527596294668288 -715175229878831468344935192404688896 6412404358577000250892460004212736 8141373535414791439511326390484992 -643484656578052147653871931389640704 463710129920485327117046549315584 5603201205275752270124320076857344 -576941561862756122160255894282043392 2010232605699397149931726155284480 6184110514981888382145927684554752 -728105450823026146087102131206094848 1109843789209438531989202465193984 964303643012013260694821485412352 -245362862618713627017021915863711744 272049685811479657797800654012416 3864401783826415286102161834901504 -662499407646329931960693247942066176 684358044930552523129925203394560 9123069420574227870623938505605120 -607642264386599906525530201945800704 6770541287943531885926608374071296 6545323317674376746458610239799296 -407863290662366173450675121844912128 1746177390896408741151487389859840 3066550606925964157936771685941248 -612545735090386011126034729470525440 1736366399029054174141462714777600 1300429522857450935394834625593344 -401708059804834255384817605952929792 3777171043666873492755901614915584 1312613922888803593263387334672384 -547262005910109050737844505710428160 1399053630864933091372601364709376 3590237470844888732398797914636288 -388284448532190192459311051033280512 8775662143530763576043146504568832 8498493158049377057865760363249664 -81555429657056615160623472329097216 8094431338223105583783872343048192 7699256799419644296119094142304256 -143339900061227882275528874276159488 5531513606234481992349858232532992 2933006051004252929375930027081728 -443895464394035159524563784396963840 8315232977542786429317338600833024 5789124716864807462256214890512384 -590428986792912520512376525520109568 5288004779755742577848278923083776 6903198593903051112708945167253504 -140210424908478671644705578347921408 3878477368631843061214308433133568 1182220106914412403630831195652096 -950101950376100307547875316758216704 8154535378119644106977745544675328 967098332574688734034167192354816 -306544681380437409756817735129497600 1971294865125434006458970786496512 8369109136188120600526139036794880 -716597361554372096911193567894962176 6833991717783736342713937095032832 2450853853394346363265534174167040 -233010879231124197527722816268402688 8965851935107980378451754797236224 7594778833102216568168732193456128 -111218184575285372372819465182642176 2518044522940607721900186110263296 4211484365723349188870882465939456 -553117450302825537367657371437891584 9084551094768779814363347212566528 1712518547418069172996016747577344 -366250984341464022765880468316356608 4429413232971994991853613348814848 5432444776414916159704882653167616 -82922984728343445186583672878268416 9698347017157555805585540489674752 8260465844832176701604005473681408 -659158078869756986611993893509529600 6736472663855792757190690714157056 2565994856427244417164159295160320 -568226801622817048083029524112998400 9168695186998386296028829430317056 4846679693066704992546569377021952 -272076388903845017198920639455428608 4618077680771890723895720896626688 2772999285524305610207217884069888 -381852698677231373093479065078202368 463264591486954057876977332781056 1562883704535482584432628708933632 -391155230579532616144241890682732544 4050345754777355815694059178033152 5211658074793135210724506621444096 -246996318688842390635839031173185536 8719212894060653089042693877661696 2714672074300228201397690845626368 -60749545556170732582282042324025344 4724464724589312045668996942397440 9879966403282530505170087284047872 -935879813515595540459874960541745152 8350567412206093832558565107171328 8937962751771623183043598194049024 -295560865863728899727824584297152512 4621682635343492779836899885842432 3082932658860177416594400619790336 -51013462538580394712072324758110208 520958409281826822525682712576000 7077697147570571277450444592381952 -374108053925598224148570330703593472 7448019588337402090435793731452928 7971075263250533421625299911573504 -888626010156448618417536622831599616 4843621385434848783643701602680832 7243801020659894956751579709964288 -649615667191309402005062117557796864 3283319738006777700804607109758976 1165951939806656431771359329124352 -532299154895084272234806647686430720 1432707881415747416004282590167040 6038030978105172932134267464450048 -328530755085220306769786676740882432 6142006570232141701012371374342144 5372764463280772490649015804755968 -904810420471637395801926415260057600 2165707945733306061465174721691648 1542691966584260665837943217192960 -731522049941881357141383102335025152 8460456341814192733717135301279744 1780835626857900580208436962131968 -756490771242124735640384585198469120 8140377411021630172914733350387712 6056393509468425135251547456798720 -445305726556666753539604571083505664 6870175610740512820680478171332608 5517444768025210938917523445252096 -436059687242549638013305004947931136 1457637626022310400693488958046208 2002376915198792432060190492196864 -764662467555986137133922574428798976 3312288207865389830975872401670144 6205264498497940494616733667033088 -356311993236408594276169827586408448 1332339816601175305462727772733440 1657754455670998910594433553530880 -340356985779685944272901635626237952 251057293883369519012743630290944 2513921574945301913780944589815808 -258881701726282416936990823948484608 1018154941313647427359725196410880 1017577766518671985198517203238912 -388143264976796379101549795058122752 796292798544949099251780370300928 7453614723962215510238904054710272 -500799494940123939041395781463441408 1199266169120995089960606636179456 188579101323055196719358714839040 -909564889077135969190397003687788544 1596110495063579770232005600477184 9925247368253593245976340610416640 -98613312180205574873492359124877312 6803320770104899863767357105111040 8681200477655452137934529801224192 -627297650148506776290099589617287168 3333045185488082944643227254259712 8626948932998171987681208642306048 -702567728249304053916265099525357568 6181894751676922657459362370420736 9705633334124669353117598594629632 -160901050830949992217056018639618048 5278406828655375614016569196150784 3675153009377074618414983687438336 -172664712482208564043778506952278016 9747027116856958866501023458918400 1802371764504934697827756861816832 -296445199591977815331170940308422656 8766639056947758647829888921239552 9985288195718628671162934729113600 -930628362910287734964949297838161920 1268094974372555016380798499553280 3601029561867781132540728005623808 -261607244338072588647603868201385984 849098891859809200180469627355136 1567363163429150310220186160988160 -87527997151978062337734322608406528 1099892607666340796904409697091584 8431684185172791917214580902723584 -912774371947172814897551836826304512 2460218398010385612047312417193984 4864925811356671675685437588897792 -943592484500497666295857319973486592 2813265852503017494940074974904320 3121097566933795459398664257011712 -294798179306393399117283716392550400 6531209070771586027325076583481344 7929551664688794090612107599937536 -121835224641001492310697661666689024 3853843829973773777475395794239488 5089534154037641031568008140554240 -789935515339926919757640211705626624 8733085178112409207995627990941696 9192351072722768254369380471668736 -735580590934036278181983802332545024 8364771702920240736035115964039168 9227832059922541935870129393893376 -807660683443975868565646067510542336 1782657808968479374092042036576256 9396631089003403316883013796626432 -656155027368228279860376102110232576 7438005822246937163602972553248768 6759729354681452275869280720912384 -299522240636449291384703670747660288 8917147601344815467541942908223488 8826377940435302756147855590686720 -658459820759404084098769634310750208 5851821620756052272603506394791936 8672325200825403725389966216265728 -49027243331280695843782999714824192 6557148882715902862989665798979584 3825536828326851624669596927131648 -816473818942492305441001992301314048 7584781590406168644790083850862592 8168040431924468053130335204933632 -412017757094725790717844996434690048 9146533369643907836813256681324544 18079781823132075617841529749504 -143253413795872004963479939908108288 8368065119348577804263207804600320 8126741889083916886688966312460288 -865306631053840200061238700534661120 3765514412409269902713616045441024 838565285634157472772421622693888 -814807741645684462406169332679704576 894438752611883361370756849074176 85761455356055077874076651356160 -938819757244914692094707827547832320 4801017114309075930588781152829440 4561762213622833060879038194647040 -779791602777496630259238254923481088 3786973822909607598081099553570816 4067530043332559846138655002329088 -158517282394915472029193648889397248 9107794025282330477289287219937280 5193094683383315759486295307452416 -379018534076044869918481746789138432 3843139994358569793777850153697280 6714561011215534031084095828656128 -378953577940090197151069124926898176 4998799928577056217112707311075328 4362353660890975719174990865629184 -669557319827892387215594004322189312 2617342356658484959691438062305280 3977893566540475474563870056513536 -522839591645052579715437979238400000 8887970652966622943323700546502656 3003935807446073324238990225702912 -609615693814323033483663275821367296 5734878733708866058506013908140032 8530212604984468669053520383574016 -900692490514823467977555003268136960 4544159612510819139263270834143232 8404775467003006745436570123239424 -256254084589764376250621008394846208 2177385998821786226809252681351168 2754995189997396071059576634474496 -254792555027493234704628616506900480 1087642311951875369359846045384704 3062287581213941181917014121250816 -792689469637039749169771147050352640 5268137563475802881873657479561216 310208710008554818118935233167360 -367338006095538581213208724499333120 5294198832777410256073058462728192 3892097378794713473426229223751680 -575204686606779140625574606189625344 7960114688196000518317527533617152 8466057247752321573153346812903424 -856738746061449893499365667167535104 2551725643260413472337656910184448 6389653733760566595218893000671232 -904213694078085874038288535466803200 395946649776120011571326860918784 9080953156965542610330845695705088 -368337544021795161249689057259159552 8825358160711934527715092562182144 4086657378808222492031064941264896 -41850562415230622118417855301025792 6812634135714099703759193015058432 3905400246267222119034332225994752 -650625155726277702031851957608513536 2747362888086569209535257529810944 6623730369925632777399822154989568 -535403593197434676896333473289076736 9448165467947474995535611890237440 2287815716068379069947912149532672 -438299499962638600344816101602885632 1312085638345929999009033387769856 8478195489933762784654492925165568 -200539172768562340076806588029992960 8772531979560969811865468066070528 5432728440878646850003747322462208 -838069611887465474863234674463866880 1012709503594826502425808893640704 9438409465125565718478958083702784 -382527736400584048863796540190228480 4260963977350578113258255525347328 243203767812836868258043546042368 -562917007610508510240183382439886848 1338467229439954523383145751904256 4273792074139956272822466520285184 -34055328854120988460574964929527808 9083539200638219567788904006287360 7468127688383748823144638732828672 -774874722594520689062099789216219136 1738338563031685819055869370826752 8825395584063276126758659350855680 -446884925155100267910282454088286208 7533515910600219561022886428803072 2372847460466075301517101530873856 -747657373383640325435427090637783040 8423872116566246360457707232690176 3047022268229239839832434756550656 -484369382185367949301205921343471616 2056921727642815673425106175000576 8074409392118807651802875437252608 -373629268620379680820122925985169408 3432537660635145818416666508263424 1188801966160538529406562269659136 -248228754849596444889221199065776128 925199452406988878237683146555392 6448701551521851962445063738359808 -567153036456865284751893465002934272 2627396739016199239186649597345792 7915121318999526044040070267142144 -459047546265435650564154801155735552 2434675971038247602486383923429376 2001964144224646075745915954528256 -991818497848730339532865400976965632 6662348623799090860188841518563328 6403319550166246545785078172090368 -430005584323834450096280324186046464 855519947063524517241824477184000 597225981727360205972648277049344 -798876632395993772964700453420924928 3405681140800797948711038389059584 8687700292402245101489121340162048 -229293199657948568358254322110169088 1950464351823738410953951301074944 3499921131159924615190197959655424 -367461174522551657868948377415188480 3949731849452094898543102061969408 8086887136715185844330648618139648 -741924329737400275392996257873002496 7705025429471590276293381769396224 6805852899316134869520938652663808 -172007478410555892659873682879938560 8091605890626336258492654617100288 7700541443667242980621331673907200 -130656592120423427073923263303254016 6582957420667320184434892776407040 6588288672707359819677155949805568 -247857745947570528699661876681768960 2341909732482266926628746685317120 5705567184783975726309428567212032 -171839758058592337448098656707149824 5696368158410124224832318820319232 4274408597224254060328564113276928 -242383582958157895798055151415066624 8098701893420204355613426448334848 2862050487011807331264576951943168 -427142017840077686532942839263789056 7091777342169789672200526018641920 519522387787172013628089874513920 -690358711760416381442782052566958080 4698485865207994417594816899579904 4540445435109543719753236403453952 -459666397487673660420874138770472960 4891856040345267890577728449019904 3052947066506302767691876668538880 -273946092128259338695288952702631936 1145436545956180396827403641421824 3385736214986495669226943666978816 -107755645076262341712170341959204864 5024751187503457513533608302739456 3457171380477487611650452511260672 -726858157067183242877138389082046464 8365080065013864210934653410869248 3551140459722035412987244464570368 -619584918283178476172035873017167872 6555844276561065619288596083113984 3612141288491134740298380756385792 -20360659479471306153591440089808896 4959589222969256850366140312977408 411320639141254966650390800498688 -46578092436050404439411628433211392 6656056624506998539564974124040192 1756062732011800304448227600498688 -747383320299436113001451781244321792 898630377843072782345796199645184 908842759719336215589773092323328 -562196990258960437171703025609211904 4968790102159419141755102136631296 1367416541647135905106062424932352 -916471442122810367518956524343918592 4289324914981817486967446414819328 3191837457506437172816833316651008 -139066432717643320026465565562372096 3946064359483707533646114859253760 2252006133091333148954602791501824 -402163105474362275210411772280307712 1428607745949709834084360426356736 9759564041220407538537745413570560 -263387762292362714012121460191002624 7075163325204423298541721376260096 1906680416355421743818704058056704 -614304006904750418466417507540402176 6592140767895908095990460584034304 5146660983750720291912370664505344 -300822150227039678183854590142709760 6161812773847377356825048207327232 7884751822500147167319854898216960 -443888407096854893729148210683838464 2717393774633141736107277203537920 3977610608187380261925859562094592 -760443018912276540346274506665361408 4721808688156446245677813825798144 4643955411728315608164080208052224 -74495562530938799924623052554371072 8943589251791791524204480177373184 365889228712009881358872793317376 -161708123697199205509416867225141248 7518681437843240480095234594701312 678906123078755351792870964068352 -654135227097084810861173257512419328 1606447266198070221871577336643584 2323338777854841503813200311746560 -953851550810667701463095455569149952 3769391036409078452127879017791488 1609479261271613759236770753413120 -591207704858930275110738160041066496 3931028243791240401085290063593472 2065043045637890386394235617148928 -840096422680337539293268348762062848 904319114011903928273563174305792 7036182229856196118116954240188416 -661161680780854469995541630550016000 1110199762815798780533071344041984 5026449691123055956803935239405568 -754188416164096247425035765551202304 3622038197860859865344550232915968 1997211770895935084492845437943808 -261331173743947338636157553492361216 8529985395594648161634546115149824 7772962138527491500333251782770688 -538990491292173473518732630160310272 1648990397282062192256747904696320 4093794381604773985654848844988416 -747519692409232800197185195781128192 3924572072461385326608789597585408 3770576351240898651057951346786304 -447783597679360669875932551169703936 6886289580659299882615054490664960 3591867082311803471624300503498752 -826033691535340864563447376988078080 2431336164976933908818089708879872 9308599490711610954843204213538816 -861630943331616307197801838220935168 1965350017401408694258723140403200 6458290929233254079615644385411072 -860134137088146492481413900555780096 3140101607653911222057665470398464 3197543133089434431565588869414912 -286126436689815805220819738927562752 628501274822487411664533820801024 4128614413309570363073507320922112 -477830643553261415021641269327691776 3931707357527731248356658862096384 5459893155436198631622721803386880 -916609416924512990027622811837661184 8792068137833655285267323437449216 6550615817024918047623178128195584 -338735543833510482501509667151151104 2753059945786634099486264005754880 4646721831510382454023046643580928 -700737727008813930379136725229240320 579826670607580882377388075253760 4047986466085611772702919860682752 -506683518174463079094258057034596352 7809531502855820997047967876644864 5432906032382853897964969655271424 -426645651239610581201797999453274112 1000022469962245686892282796572672 6092891273817170531029379358654464 -924557088764455633198855709920329728 7437617891697815456071183486681088 5259183046670280800345744088236032 -74557152111992432037536584148451328 8398201396652725469948162863005696 208049281029518363901235755483136 -263080557227563258344834420837449728 460579242973791862085873131585536 7338486982338568891161244447277056 -784584584417960809445035279917252608 3352180102651815266397552835035136 8894304864983919069880122385367040 -156013611796105495818425033985884160 9549753739645970258877721041960960 4342008941525717153229663027331072 -730787475722558135789811217714905088 1286113453439098847994818269806592 8075178615683496321831292085731328 -968719164940613151726221866601283584 2998960690277987344279168069140480 7679105479685136150420789445787648 -231959800938249483725433604136763392 773075147447262141569837100433408 5159556881242515170540623400796160 -499586591489034514368602243965386752 9079765160330326985282257544019968 4471941647379712592546398776328192 -61818626252456172768286063550529536 5410497152637926916281429777186816 743240083434680598675643862876160 -829821338661523047240151112865546240 8856980482654662080637938582945792 6134376652324799701124851693518848 -162251209398401406646512804262051840 7011068492495557285937127891140608 7433027964967635865340084601487360 -490948697688200601024247086492680192 2702466097433217673854056675672064 3679994534565619590314931741786112 -326221333659857025300549484391956480 1033648409290896579742804037599232 2358543550245266570593296631988224 -730785584418436415432786468833067008 4275025434974727500200147364610048 3947315923053956944045932535611392 -899695833319804642178123816117469184 7148219993943697566840520427175936 2412885481007779550656090628685824 -803834897455278103865979289374556160 5416782208887526993012167880474624 2846697808966735971884170746003456 -206752769883287130583558311100022784 1942810029429800262637439269470208 7161184194093179303300338674565120 -836691908996019654057907819259101184 5755688276536166006663356180594688 8937422639563646972562287708078080 -490394687580824736408856818949816320 5506667264697315720177104990502912 6701894432288226209967605123383296 -889394120654039356455287045075501056 8924814564972892764147095443603456 6416062969803474973382904412897280 -424102150605877927911723211950129152 8787774001032219853774138311180288 8998852676765783009748828387540992 -991078152346645661015877137012359168 910008694429886470121327983329280 2562296110970115269132625121378304 -234976056892693554291283773066575872 5757328544387218045217429801402368 4219267532164522383810942415667200 -705898343791447951582534487337074688 8292548645958750083710889245016064 3723827242066199128126369459863552 -788625666645850495558088779267833856 7124605333900238460173722515931136 4946790422842123595749950838800384 -668458893524255588045675059237355520 5263793455733437405013797937086464 7438399933024300702651573424095232 -245889509663369049939992108154748928 6940862715086924190360587787567104 2834904515534148263743213715587072 -919166142406281438691145298533679104 4566729944100971938676738835349504 8704157611559516766295626459643904 -843391666305438545463249226656907264 6942380469467150956331930696548352 1840066823302973214682324328775680 -508975344969735527532885733493702656 1380280267279366783599171166273536 3207729535544025558728274176114688 -907059304628947935454725246766022656 1888843876123693375144910663974912 4794235613843727248871835090026496 -870828019827967375733676185671958528 2540489436786697888473665316585472 6123008034309747444298017811726336 -857884459640099384507268873626583040 9382299952905873279947905255342080 5374748874020669587799350557278208 -601992963215371299881192087550427136 5116398409116629228838326831677440 3925637257825862808749921424900096 -252230538261675014687085781015592960 2889579218981707455727720684584960 9456239498253228037770106093174784 -626949609206299565346288394724966400 217273272153058746919188017709056 1799950448476502361471892427112448 -198229347100018476104416644277731328 1916172735091306052824419782361088 1335362432425746416093992614625280 -607527616552708039014775806962434048 576284570755552635203628361056256 8708696660135181095245467149664256 -697143976338233187330490819743318016 2862808249780561476331761062379520 3077575476549045628680809146744832 -927917528067463422984188111779528704 8424250367014074376550645103591424 9876953086876235506967781178343424 -176243825924275828740293675383259136 414384172085398712261601681997824 3095274358404271347950364217311232 -542704401607530709377865408822902784 157404740206484456015239023951872 3768462321273872926378454595665920 -265216172651109180961316460361154560 4084876905863373560764908487835648 1729815498919971062610580960444416 -427944714778801663814446846790598656 6887699203660119117076819957776384 6891866785169055045216912390750208 -642252731081029351882504856911478784 2542637380918782325120479851970560 7847620253359058775790283898486784 -487307472801058492281013339038941184 8041891810296414549419357982687232 1076953025642526480598870611984384 -524795071879640456629867967846285312 6627508818924365087869169234345984 4008425072095759787973257220587520 -1261082653225783156989469004922880 2159151652941515273779006471667712 1308396612983439856968121588908032 -902159225480390437595010692743692288 6027774406362731210719482290896896 5633746627752126502981962240622592 -90239113706999500619289509658361856 9747355483903577203604746642915328 6989058799940328115382306853617664 -468975211031531834640717175771365376 26470167273714593584873943859200 8229035060546650049048060362752000 -735074276179928940033358977262682112 2917022414132255754086116682104832 2470489107695543932692562282807296 -600101633550644165335657210062045184 9302087547447391804513724301049856 6039571753826642291591901528195072 -551648225498775868997245589040136192 7698514878509961969722992449552384 7528486849738791155165677752418304 -662570292401060477858617153965522944 4019796955148390907729890011774976 6434590413047654430859705563742208 -951233445074390668754534202339229696 460163725783604247393695965380608 3539371071873185567652466843975680 -516281362778462529381140310142222336 1691035816172377973877457452793856 4330148925027131376182783010406400 -639039510693261260181711395833774080 3932630056752702940661127887978496 4956343078812192195806199323557888 -523343443855816991943150635235409920 2040593522704985456088757724774400 3409796051250929792507895665917952 -866152482412142676709508061234987008 5905985158654974561599384291639296 8592289788218895451117735513161728 -734612793522705755533318515750600704 4381840336364150645312022525247488 604784743302571954385959459487744 -146452916772181728790874732164546560 9115104786573393767076921700515840 4267117477069428818163349894201344 -161452703290853337886322771510689792 6139102567247657185817485847298048 6264567236614777626073331404898304 -923020771618621884386133316242243584 6992010079852697531403498445340672 7508886069865743193349169625432064 -201357166655522511505876410668417024 2139328956611980937134984493268992 9727953223119367931277723966636032 -824852733785711195147714706607702016 9941708833638523442892932093313024 7810556504839062603201353969827840 -378762959398628564797028476492185600 5758104489972773720508646807306240 9581784138281746188165662478696448 -953083711129920031433164783922184192 6553502734747694606167996540911616 6367486430078832063725510093438976 -470273645211083362460900240429940736 6207873328676380131039815009304576 3491725648153496980343561023127552 -201242595652229801564789235970473984 2982422678930630928762604345098240 8664044236255029709405035322933248 -243270897403372090501300631921229824 1185122524202382694228395630264320 64859678263829050192346587594752 -398132442188410865861381671719272448 9489970827401856177700982564585472 2163626697039517547701808587079680 -997550001833626220558458536364867584 3480407770154443202347713221885952 1325122256700643414473694246862848 -987215649231000751930612183860248576 4398707453153075797004169559146496 2636238292022698738075158158770176 -773925955204210305856962076816179200 5918402926781510253979541690122240 211814190737767165334652826157056 -748148846958027766710943559140245504 8055692210382529525923126087516160 2066276360374493745852228231495680 -18721701258484380279255633278009344 9538222328081893721909414705758208 7009947766979781771706940849651712 -18661548593040194456125331619184640 3285885922574001207541993991831552 4870362829243097685085059362586624 -281850756004866819461863664309501952 475092176715208149405472802209792 874337580345965139260656643473408 -628097543796464131689293816155602944 6661853536549204883254126613364736 6742343618188885649795067578155008 -206852991355474240379230629293719552 5638207785609155162466703984558080 8418898753913307116594920607973376 -185487102737867775798524462560706560 5113062215043385260106699287560192 1965508595653515474354220870664192 -34632853625404802272001795704225792 7315866524802702446164803745480704 7501413776898757771526637183041536 -379443724549558040615036694485270528 3172902178509514112707131137327104 2679845295999274525838468255318016 -731781830165319422297420598773547008 8876917871274864512239746873819136 5472039703886805818627456797507584 -791754227356883594191958626701148160 2744726669317599750120955915010048 9635982750865253430275905278705664 -687965847352028151687650281701507072 8944157428020815577406165875687424 6198092115507866549020617053569024 -357358916433529171660267432158691328 569879652158406262883292664561664 7463193006298641415734590479269888 -208279748915067196884176615549960192 7492825983728282931030380047761408 5483998857855459072461042568134656 -323572250644243311468342083487531008 6711296570678440779766861282672640 9165587539362149386430317575798784 -164133872174023441532728401922621440 6020070397013922076161210721501184 4213014812092494017056828563652608 -762359132550608523260368566899179520 8608130704115909227892627147325440 2974304451049675978630376198242304 -44419080274373144838395375443247104 6101212355751933596441254605881344 9280883316713374927854195066273792 -552299094503189632717688588988317696 2353762362290906466204633641517056 9119267406837422835453225057910784 -29571146225143853879873899375624192 3932916668535422970766961917558784 5149567313879085030916038210879488 -979856231042008072217064297952444416 9230186599077781112793755052670976 7854381332851661900669159647215616 -279791691883202289869843801036554240 1488829262742099004445329580883968 7380598335301137943655837532684288 -252295179870278042105114100443906048 2538471437309355654551332219518976 1333555042165525819049587305873408 -319952319874689764069082914770386944 3473244815563921404549924242063360 3660433987224388666702449166254080 -219605024690051614084631987948093440 1938077277318650666208685077823488 1536013240152339478722133335474176 -316981609572583205499879415552671744 1875850862796774609371894841868288 598884308070550010366758995623936 -430971814008549240728337226213097472 2014990887479940055537793823145984 2710827473260028081647337517088768 -568518930715828097714131498895933440 8332275708694945731999522965422080 4666620693119321971492634583105536 -291254828208928481540144230209421312 8169242832017995055788970041409536 3098567857715717448319265180483584 -800018000567460543178768890453819392 3291464998370530864340284550938624 5163972461587387041138433408892928 -628610737651421472715458845199040512 3917713438142815655243937600241664 8681195407347945607369099613044736 -382891013410601427247044782702198784 8633108542271804057462653614817280 4161409817160705320968803701489664 -419174735079867306791214445741735936 7376257957766680304272179776716800 3261341508148062317275603546406912 -511521714989739846491826406836666368 6843301413097048583197189424021504 9841905173403511590854575867822080 -381259251272887565291329718704930816 792189508552146138408352219136000 9348944180192024552805084482764800 -470831847369379380315653950771560448 7589139621174449476769876960870400 4019714691075643726009687986929664 -896996810944538774633520618161569792 4379540695662220503594331052965888 9130307010003042322621536160186368 -530319062593075550186580810794008576 2310974689354267848616251553218560 1594746291517721294835410452611072 -682428204247571642889182786225176576 9550627298365310643457207358717952 3971053997677001104038366369808384 -661005638555303937887215596299354112 9961297501860406847053807285698560 1129434905847452990334234076905472 -617577573029398791824838173761994752 7336305289807643230367978069426176 3575570573301767474743097872613376 -868791235576191783261752602646282240 2262479811997724403122443286216704 8523452203974796281739638858579968 -313520822896525105218173027200532480 726414764955408327604482626027520 1781542199858377393655844958109696 -642888390702900192808160377467568128 918051452380632929567882107420672 3777768438331643023619193407799296 -982581926849801106779958492096626688 3135831423982593316882366731386880 1949602075768473336137415745601536 -235451380872362567627553519700017152 2045994735220900165374644360052736 2845224399457468356111360961019904 -72265436502737222105875882365157376 7887388409742484775552572595372032 4020539755643954286905467835777024 -893840964001384576344338652857368576 5269783986979805882606026844274688 3206234982085113549955027552960512 -459789108926426416445035749633425408 530931608255622694221264896131072 8716940018721728054178434535915520 -204022454931201293972150489383436288 7650180473663388592694305488896000 3694364770303141417407988694515712 -835316929034602088172363388358230016 720784946090466897678614399025152 7815158609237250119384373349318656 -385551326919458192381435341246038016 7492896025639054665162041581371392 82713469523484962014499392454656 -879649876805868347251974795731927040 362512172774599947592851632685056 7207651700432433869592632070504448 -879265870787596430918419030007087104 1436593137112338686651591552925696 4204159245467941467149068994084864 -982746478933378623569694226588368896 6492318720688730527756245664792576 6715249619368422123332336730767360 -792037327953049669208169918045880320 3054384365136123313875240418803712 4638320051280710355150938830798848 -147815919564812360138303251951910912 8431072773837554888113941907505152 1326416490457401265049603202351104 -942408072630273887787032034410496000 3642868887690215194955911717191680 6850759270321408282459421534060544 -39743667989280017756212800935428096 4618736066578487872800537433866240 105521263233486799077427556384768 -547888757111046978311858939756544000 288038290189196777994205653893120 8020122315315635896579019478401024 -815209138037904492262171669551906816 1276321468719019833754780008710144 5681569535517622813233517514719232 -967510162473156534288894079107334144 2953751245455812390104829096099840 8949032445249844572119749328109568 -793498576878191277546190407343276032 971265551871068913951502761984000 8670732160751654848985166539390976 -576562039267628042950634736799711232 696334802982450257301563800289280 7880332842031594098060070060294144 -160895250873044978820052734072324096 5146981138172717879100890960363520 9176704796806726588602400481738752 -189512708746123171945641720435179520 8894127976537933628822410336665600 4292105861098648327746782926733312 -213201583469744428706078100413218816 8315898490628562778828253987602432 6965183168294354042411024400777216 -949623668064462555343674293482422272 7377921161023454915718153056026624 6779252455700250500421996377014272 -579073194561927105625945919453134848 3369109449328589381109044882702336 951143743715605620275058028052480 -642640793749591201852438746033553408 248304623651973714162984469659648 556115109645797619466883406233600 -488867313821214104244100000183746560 3200829976396857470928729338281984 4439459738894140595919527520239616 -507060935084104653227628844631982080 4407760062076564508875437417431040 645211526432899012094130625970176 -765847580401369795393894262692118528 4757152491307288441053511277346816 4333090880945933522206123653857280 -582888807120265997410117651737346048 3736096026106402287716241130913792 5303726686711598311424395967463424 -674015687800711909090485897934143488 4818568484211257428053615534145536 2165246973751427958790754901426176 -834173532618119797662831356384641024 5787438048619338281358719748931584 4193134576947809158698008833949696 -323843450597285437656127874741043200 7023991480777969693692627590840320 2291176177937915352671783284113408 -209493203980388669220534951037894656 8335116493143101713515450841694208 6204699608829374608769028261412864 -638487675897016116928499592007254016 7443804803626452716563438808072192 4458411716364924851002835814318080 -939818345764164680136749117767417856 3645920437964474453506124685508608 3707129659317630119044580426907648 -350633882121887443992850729126592512 7010621989988837099203179984191488 2424866888846808751446604881330176 -822717117287097697885154642392776704 3686655406660766404928995906813952 4246225347794183136769334654795776 -297922374520059351237383618614525952 8645291054150118286172509012230144 2890364293562706097934737602510848 -428050680543546943398117682804948992 2869176874865776329860570536738816 2267871250767794142543193546162176 -698372671916312238484427513977110528 8115250221910235007519073306148864 6754496985357321820712094331305984 -784154571763756288122876933091360768 8815298999741798846464488669970432 9256345400234263933462932153696256 -71990807879040878334402547891044352 4555085223391581438154099686113280 2966729674140146980542548717600768 -338747824329359588552565843132678144 7413751863374854360373383191855104 3695048303491911644854148801757184 -4994041844460516968873643867111424 4076432739433253810223881184608256 3625585883789519818030173283942400 -579416933952136621828529455573762048 4500989644252269303970639581806592 986944581432642618193189189713920 -650839021949879260173867019141120000 6682304996595475871046991106539520 7221227322678589981522170791067648 -517988384218428242272140550171787264 1365612861676147645661259572969472 3326040319404047506595264763789312 -804329392841808209707939735441244160 1058697957937187408988938784735232 365022963038067626358232026447872 -318360828970245270750718978563244032 5264765560979636624574712423383040 3094171840280587080361221524815872 -130245344800282993336996441343655936 1759057504836950828602079225839616 7240544482581875928097938852544512 -539117386501823719278487943000358912 7796731566784450929471366585384960 750652528913103302714819392569344 -996198968234695939871632627584729088 7521951135976937630683698957385728 358265820961147585438560274087936 -806564410371409256365217884166684672 1997944177470542071962090331963392 9185242875394624838069909672951808 -721976157457571680926946194591055872 3349994547879290420849491123896320 4177922202141707889810443306270720 -468183650120338664970670862168489984 7746274025946499960863583092342784 3525270497742779302668857333776384 -228737576283832285562033948074180608 1708794831106426392299104850935808 5948744607909171266705570731655168 -361786006399698164164070541977714688 2023869842314904731349449307062272 7647846364638133126116267995955200 -579701586789940787180352116778598400 2911259799990544183817536754679808 6557682851636569262209344072581120 -558086838969606975772644469435793408 3096175067826249499624715703025664 3704560284886911576524209260593152 -876281741490950240474496240034250752 7764209295337571469605696767524864 3512056246442302017329560366874624 -317261363399096751975967015085015040 8041651664924957335296242247270400 5724229718320475141492500848443392 -478887601394647958823407317606727680 7185527562787653922523066402865152 6685288911933540510040046702690304 -952971855241828549662584320481558528 3941912490852564218273598277681152 2125276492897170163764083583614976 -733657408653557719543362024101642240 5996163451571389498404968993914880 4423435929402347196854059132780544 -534245519837265619562318085627052032 4342659395641339028817223815790592 4549169836647807299591473058545664 -214425301520994006409509753986220032 9025009146121773119451068255698944 5077988865545815854477951859949568 -942430295149875860017907093888565248 9244264882552871707751195946778624 4018779101967202618460013420609536 -719394230424175493470311545529434112 8293984061092144687893710897152000 2901912197841082180425517539262464 -68462349341954985340053013777088512 5385237261894308565513700936515584 5802478525456263748988281273974784 -557822089034166242554448760868438016 1813184089211474421410829183221760 7006264146509652483007681895858176 -918911957564086645401193336348344320 6830804162450534678779171902062592 6037322607543794520736351142281216 -668320499154654335374584740124295168 2974823301088169971802090881679360 2468930307214467343450399829917696 -325795289625053566400985044887797760 7985473800896995723795839483641856 163338469428454230592516001890304 -587640527330213242165229420818726912 3229352958420732226416946471501824 1222989367406371098729211045609472 -648585223906172619216848992698630144 2622607501151024884250067286884352 6756248600630767641680313971638272 -512663115671425259042413515401854976 8805536967195804518836454098468864 7373269688993185417508143465758720 -108392689013339431743946729166209024 7964740406482836733271422367956992 8815245610206720439386745021136896 -845048585064527139685021696063963136 6472993676640853583060947259359232 884372705302873829707000798248960 -113581377808940210694471679656067072 840339484706217329320747216142336 6326694272570295476273557379481600 -1257375190641574152585768364670976 9912814527343050133164146334629888 1479383631439103038283037236264960 -17289132540696560688451823056453632 7298487166432925545873490938167296 9956869103753738976364776292089856 -860399173485667640090616551150977024 4695867548322182164728105647734784 5180651919826974988641491822313472 -122476139971759778935024308604370944 3368562317299835600883217640456192 9311587053374473822710900170162176 -87296216555854768929625147168522240 1962736571324353002526028402262016 1668383512204563409784201409462272 -812042351668794477994239797145632768 9740305015732094683792088659656704 3592474391913348914290720828817408 -852798743311984906082670846687576064 9346889412875180069157602538291200 3689816720109113558123538729140224 -719282683078224812909473136415604736 9093307089433051641487440476110848 4096578233599039938401126307594240 -720356934982648009303108093783048192 2835247390445066315021974090285056 3095017847695592295503708607741952 -783403595538116447113023582764007424 2732234706947807202905867444813824 100673488747443892014142344658944 -2550409660133830984402034870976512 8503147902826252353381820270641152 1221261864924438603222955138744320 -23641017909407882998165466404356096 1536200527175895239796214286254080 6345992377779922315457554001428480 -637603675101363612282858102931324928 3794033601260802712000669295837184 6904499433065038778251939900555264 -615465851977809356283598132729610240 6781509486127692728161590927425536 238003217292953863355875689758720 -845458014076069629381754043764834304 800132952505167116344115500941312 6184961330241218932001230701985792 -129514066900344640015667482534608896 5352382441836424020726624032915456 3483235563365554726350036639154176 -296595306138474055523265417599516672 7009152134159819604412863048843264 4711970864909242915787693308772352 -367681103706074547367671866708721664 1204602654182349340402652400320512 4556077669779828170865857737523200 -419889458997230311639565814718267392 6061022274823627692340751550644224 6369205471286815271742254985773056 -92060955657172376361444252302966784 3621383252171287500271222794485760 5413566290129165423170738236424192 -578608677512267777962545576922841088 4624006797147658566122307502211072 1337334014642408437401767993409536 -917490431483184823720776218991132672 7715840546492338333540510532108288 8766058612458592432041479108558848 -944829787467259776714712318721654784 6502647959285734195132438486712320 831928868624400629086776828362752 -552458027120004458200096859591016448 7260819846228319278931346181849088 3535479907724761806191408426516480 -777953447911380564535189627643887616 4872155772999251466205192888778752 5387762276036015242004540770222080 -26078862860799615191334906740342784 3808640356567862252305630703386624 2673905113324445278242609215569920 -341953946934642225137399906277785600 5988044302662996961810227092520960 5749196597635707890711827761332224 -89572341854774416431510037525954560 8899231259270323629610410035904512 5850680214856763876439978676322304 -982309516172676228811733116550905856 209889022729373719669506450653184 4747580786748388475120179134595072 -458021026204251397597451241144713216 5671015730945053131013429424816128 144387219591182145506459391098880 -674258172276173772223504316257796096 9485398385086871303291570717982720 9737401912252167297714030897004544 -966791857924463802139818513284464640 8490055669146156790450913420509184 8954013018065069166425682407849984 -665690798557386698928718520640339968 5187279189370824584666003818938368 439941512180147406361767213793280 -911447666248395263932988243465732096 5503449115492036481637137032151040 9571060065930483027882263778951168 -452859850907366356392541553051041792 9504836038274253898934283239686144 6666963366379001059829772145655808 -641043453656718039537567269056937984 3793722133790994732163529527263232 3908766228196543208651671279239168 -425631780342293838707906734089830400 9360958355490437729772670921211904 1206184337866152604871962348486656 -107772747447866718762573476355112960 3577184141806662385926045349969920 1591671716849806148502314742185984 -542568796568398650571929322484924416 6189589530676715512215692019499008 4047404148861458114204554034675712 -443264121809139433660204052792737792 6646558590713205408814115596533760 2591219029340074716499374243840000 -36462407842597274669387862106963968 8839790548110809349305592923029504 5531292851745730771957648730357760 -613302974247402159431320170492067840 6751848401631250525904586414227456 8523362286092309467768050457509888 -318826467333094603347511339389026304 5385940345627180297604468471496704 762662241713483102345270183067648 -765083346512539105006424774152290304 1719845282601894764042198737485824 4476322114650856847104150148743168 -395715095608799653353069147947270144 8028498404766307667998470024724480 5429844705310337239944157179412480 -511568504181314795338199625669541888 6235237926997659011654514796134400 5558092457596656352403473142120448 -77564942528790051601869675299864576 6135768496162928678462062220804096 4116752502553119568274746817642496 -849738783778801628085367458949496832 9872187036118524692102869784985600 1177169263457761740458835102924800 -173591870457447097961783164529541120 3633614491587896789290272518307840 8256672069743496234200534328803328 -902150089487927027887738905507659776 2006183085924692769249319477837824 6747836862418566786764237894057984 -731178049539531428737662138405879808 716962542061036069444539086012416 3304296022560222287374113273020416 -131765343670417975697890611952615424 63962577777508238885194913808384 5111064033229940231452376147427328 -542889466167862608745598111627345920 5101573768413314145269232890281984 309781503291780541487742206345216 -827117935913784624540270131272482816 490169620890384250924528014721024 6355376262679878347156829885169664 -168756608048879280906118043631878144 2003520651294373193407587210493952 5497994662341001529818126464581632 -142889299174737635259457321767534592 5000356096405317101300753000038400 3919659899000807839401656520278016 -663899820870917064746865412345430016 1374172883968873008991078832930816 8031959958275794089155160239505408 -867924147145651372278056411329462272 490965946007129597889124052762624 7811502007436065521119129107431424 -468866295375100110608098685834231808 1918468455243817117602765948846080 5261664006031915415508029609607168 -40433802079541913891870191753625600 3744065785670147790334389599076352 5340151808781073783500840888172544 -164761511131410236459046716236103680 5965430705286516610869868076466176 4273918070617575234972495005089792 -183377434771361666596616501838479360 636235044399672818122734996291584 3444764339408546802935565828227072 -496662236385111209711698355972734976 942122233671877483727544064671744 2507349727332911949075576539578368 -898599410421114930070501474479112192 3811828535128588055917431734927360 5348072473937355846313694877188096 -365302887871166142787271124601274368 5384382619730107046611200124125184 553765723681175158171001665093632 -123594444947563994512333128196947968 9449740556987491267784064421068800 6225454213210020783629417471541248 -927632520217002386068949176502190080 6380656681854642732702706526322688 4805708243190017990837487433416704 -203202699941253491766880043632951296 4262724396191850443643194120863744 4905145365474881354149175708614656 -869033848407588297374814063881617408 9973604989439531213730360548392960 1969971247166708866944947518963712 -878441839550914708811676765401382912 7095650943676525631121757308977152 6294813439806821991612909099155456 -344295510823300105772548518978781184 4500364220903181875476827025178624 3899067377401936826942225769299968 -810111083703394865384404575250808832 4788739598822715065050156654133248 808648646793198993819923199819776 -849495628383327187938844377102680064 8430452116891236837110659965517824 9870111993676479521865345655635968 -301566007200005541363621132316442624 1701779631013454512282051484319744 5224234160156810588782575457665024 -561892627590228953967494388961509376 5313061570848636705367515669200896 322283630851877451517771340840960 -927539855825956201163065703765377024 9683564905449819373176050277154816 6675423325517612619747106656092160 -627657196540811475189286710575890432 9689958550540129021586517291696128 3391076035758885934589923796451328 -724944006348493452852702287428059136 4058039809196050064965706373398528 5669857270464171930288524613386240 -438679711883024132856726929367105536 700625840512526619528825172656128 9390426950622127446033075355516928 -47025769345989965854735548125544448 8721851450734940695095611293171712 22116172222277057808619228102656 -150311150541111708759359068166946816 4403588133237019733410776713527296 3870568680040619761560397637746688 -233438325216246936314234144724877312 6562961180760075295737551345680384 3504960080934625691459248057221120 -197407847262192290504228616343126016 4546283410118864109905849241042944 8579694585197132621550456175329280 -325652527303013716936783405950959616 5613574883992461235531252552957952 2532982557276546146947490220343296 -859553673304946967347575771923218432 5665697279800546137360874887708672 235423438179840826155352717262848 -516542580382705788261919506548391936 5309773089641705561354935006658560 5723928116636860758320705188134912 -39864606819819257500079983633104896 8668083383631657291035666605408256 1199487930572702476257840630595584 -243699709763651857306385921754529792 2047069531617416406244005146263552 6529415523706584182865258851860480 -567369220612765833560006464349667328 9774944137087910924484538559102976 8462190695298270575698569676718080 -296443957127808100701475005555277824 5392317751309132289916053680553984 9440264523758129600493157215109120 -91481666862633757117947045908316160 8791507422020450365782555132690432 7953778987179151569352523700502528 -899838581231934498394382759888945152 7428026708716484518343466953998336 3275199182981944256245853853843456 -525234482918452232771841110608707584 5743728488578547231558386969477120 4732537034112445645270232615354368 -717092831653172163758979274808229888 8192569073560592939740026986561536 8689442807756162185386410553376768 -64394800248075788721566020792221696 4503625856916412751252510325342208 5343936436403846426782426931920896 -580893804012892719480997595416887296 2807129302959770105109862586253312 9733656588424751207022971366408192 -729412561551709497171078303530876928 1719491407408760981033462702014464 3649600598398902882036542907351040 -737247830799471105638479067797782528 2184440232537905952727214596292608 8976907796152421802464280590680064 -459686310820195126711355766126673920 957448603815249811649935733424128 2828418215502548624433179485274112 -41109122590159401289524134805504000 5976139199846091223500123755511808 8026772647642284043312107949654016 -244841163350676786474564792543608832 3962383573564611278786559360368640 6921930434007785157248410443579392 -255888552373073546297160973257015296 853272254443499911935377788633088 3478393493175982736216458958733312 -883913644122723346194082465730002944 3688377811207487918004337826070528 163142932995335978921358966915072 -184781869215753003648812715719262208 1452456983758460531547594570072064 8071058340178361253744632112611328 -440467532036202063760580745929687040 5728672988108199540938334508417024 8627453543740372898202178956558336 -794887450297262730759222449032658944 2397353596530082121068588965036032 4827897763801200772488261506433024 -335769442855410814182989854798774272 5235093106279393558030526688788480 9226744451869055707041978493435904 -579015263517870172837174787906207744 9361534767315172479984255031574528 3941859475895680548607453885890560 -655154829866925727887408429464027136 16388503783872964133154547826688 7492800001254197474767684950294528 -567974504859540624022569730611085312 551590126891180437761194939383808 8788699460287085823022786282520576 -851587189820683815599395084836012032 5769378194971915307023772118155264 2586509003822670443371786395451392 -509415812911172256974702727755988992 350424431117067479374247667695616 9049340122231436551498711303192576 -318427346237732782823049297699799040 8517275713594817558976191052906496 7744806546411941546255318779953152 -665843891501123093414562372075388928 6840413178245763855118590436966400 5918592353659848293695852728287232 -847018430170521809714820997053415424 1766132570888951148299703149395968 8463098611830121936440980636958720 -744700677850426625870347526373113856 3900534178453563927524743554531328 2924215850479838126165609603399680 -60819044005819132838889403166228480 6918439091038022422344445093478400 4831054759150843011315659635163136 -562853884193061608740211266615771136 5082980005757244433221472888029184 2736782508492506236385633132085248 -24154008727966721564100908164317184 3971926240872034241327892648689664 3983767658534068946438359800086528 -129162435971717426727796177863966720 150121637678156759561485735165952 8039055233436153168798419546800128 -864183845414899935520010119961116672 7964582222727603072767884741574656 6743991255863620279088245758754816 -958603608703094995754262433103872000 8226989890447993107002382008451072 7328699708765852800638966491512832 -530182146234261092378330427266433024 292911724774123761543149032308736 2526469197134444707059651351412736 -614775840723467212725798799126036480 4915940459072170844907538151899136 5839720952274121467361060928356352 -35005225227772000754198034128044032 7325593072749187714637772011601920 7520410854501715510842603379621888 -887142074053293991604877288097710080 7262840660990962675916192761249792 4128551164093124947923602738511872 -799732071375264329694909010137841664 5484288198987957074500860914958336 4233614212321212522013912368939008 -897179643758261374202575548303015936 9456012496071180398933530782990336 4224797825167349805951327959777280 -745351226807473352388817266459803648 3575799234906200216810285546078208 9002088777004796005366648098783232 -782543624675310169380358851221520384 6242306748408777071895492954161152 2858907585110913304839895063199744 -233371151293980317978323003574845440 5996882447836790057042766326661120 2714462622550218646679090133729280 -490608576654618471537333756110045184 3895125556120625348173247304171520 2037956025196651066527121571577856 -601250041079242146278290978919940096 3485973226829791774797208269881344 5453806584542908221535435238670336 -242082872231340237653042301243490304 5474720480995323012067675458240512 438774882120401254323854801633280 -486733721427604352803260891469447168 154938660234931142258186438836224 6742368572177135347498180648370176 -117948643902250133474452631759880192 4698777564164486066149850376830976 2441694073956241876634538956816384 -221468782430708692710181242094485504 5305355681055813770183788982173696 7488887720783833483941297342382080 -306301230167791985028046618970030080 3949227352273118172251630891696128 47212827373619115446744813404160 -586787035625347089219633862221496320 7322557576198388512802957149863936 4771597757828191872755621880135680 -543289595560781013086851731996803072 2394107463134455677568857908707328 2275995990409428782137726898012160 -411429606654706297422172921733840896 6368016266585691147961527372349440 9708161063802301631494492770009088 -292156266763853298260211390067245056 7443521613490293766004513295040512 1067930327451568083384389957844992 -591044676036911378819467112857206784 5806346875471220091388456708603904 8918213362390436272926898989826048 -936273910773871411201883476303282176 9138112588371788070801038311948288 7741570719397549398702204014034944 -635347190007727047900687020475809792 2111692957430503635723374303379456 4807900810074294624675319099949056 -901588613090306934649847003264057344 2995387273576985784814382696366080 6423563042805450043492025644351488 -999705211152198547048521087718522880 821071328618261450106598468878336 9152016936824704541414901264941056 -191942990951682383104749775720808448 5752971486849365797448508030058496 3281570485213940895813519330508800 -78938984733103811653341233415192576 684240736853335828614424448466944 3438858272001726294291130328547328 -752024454380600883832377029039226880 8761913379912792642572857567608832 3734497017668800394299697642078208 -558970386917010491538592786869649408 5567889750512133808990108619112448 4006187635258174214962119043973120 -934652999116416218238876633767346176 2486277949581787126140422609436672 3072376224687205611847163505016832 -909802383910670295669559621157126144 7519784160122286627813193871785984 2684252192444368930459984716627968 -674555314936372220821466434471198720 4476407094259528477788901908414464 8282060307235690538830561772830720 -709398204166858158996628614395461632 3291757719708032259322469184176128 1132977133076558872649333479571456 -834347634902303851639304866135801856 3851831135639415971027127946444800 9830866003123905580360909388251136 -113292618030837879197419200145522688 8958754176194764046529374594269184 6535808487261548070031883145052160 -902544124020577470214325718338240512 6533092147327027578296953483558912 960268049315638682350444569690112 -730773936812366184247520654186774528 8528252268646941946209079480287232 2540783611787023025465705950609408 -381148430512296323799744813570457600 6211763335357691810341546350346240 4658670858677872710930692799725568 -137961228069015685435630569041952768 8906027236919853991109941750923264 1215288613937900655980587471863808 -451623113659810391726378343838253056 5314957756860959961701403689222144 6141736251664972976379854181105664 -637499810272221494344992474636746752 8059068475721994099701257452126208 4168452628470032608390474507485184 -379211683711426106726772780855984128 8739510424037750579303689201123328 2062307172025530307364330118578176 -233262837541789003245329522502926336 1303237186790904625442510925201408 9266299978848630293489048543559680 -347562251827505567517098768141910016 6020252377290292199287029734834176 9180621160540317308656921570443264 -809467545428335627342216598380347392 7858147719349813698002915126411264 3305656587938519822712457457041408 -841994074776862837061195555162554368 4019416512642788462324859862515712 61677444939877036723404724502528 -236171077101476028847982591977979904 804933675741565568543753727115264 1065689656256521393605528258609152 -107092595096531415389259338268803072 8515056304569255104119558218186752 8915847991771615605155269019959296 -133749823244918372813293950154571776 4514495550015268409885340815327232 4848290414001982954564868965924864 -193074191212805709149400271748595712 5424400891677173346648443777449984 2598508150831049198421102836056064 -687111885468736187835000485843042304 3190323913766515996194062221705216 2793866761663626029137180342878208 -883693648233823401230242579830800384 7019092080585223566743857019224064 3237762435505900837006546516836352 -976224031891703408183123418609090560 5531267850211101987203580986130432 2549935611486521680008023661084672 -724252435037686155316527723498700800 415056464051647209266493096198144 8146150294759635163139184827301888 -238505089429008155085002432135036928 8103482198736271265847526327058432 1126146618034443497777627003879424 -682264372314530303372223750330122240 1083722574118106403804261086396416 4522947311947311359257718342811648 -833551080209171665989565291591368704 990077820098504870528651473453056 9035439457888261203362866513575936 -79617551417774263379592487075053568 1623170780821931729407762902286336 731684729501925467025601451786240 -729409101606163695238211405690699776 7938809321328063963475926159720448 9252788133953683256441531682258944 -119438349747903227412885177886572544 8226799570169922220919417166888960 6519307718081262473446269755850752 -41129844393458951839232347290468352 9483867571848556942688019860684800 3728037948170534836389498419412992 -781259193454489553880693549456949248 4250512569180827029239984317005824 5872427276387094130381207415816192 -657780025875797342375886103133552640 999906713849014914704009601220608 8429514645734585618377728172490752 -799702715032818792364278712861982720 8563080453064337682653818031964160 3067863921555868007570394098696192 -478145862527202743549498346226843648 1876432741030088202602432870481920 6272814366850787226783281290674176 -974962038037045149494564677681676288 6845450881565415499112064250544128 1695084616022595948002960738353152 -988296811221812084726559370899357696 5448320657933915218792498077892608 4938772497607374562479254626369536 -38566351606729764318754978333196288 7591786694378094409352144534634496 7153303930287346790191224676417536 -857778612571262364340560579457449984 8822182044651787507856626220531712 9556580811518648564427663362490368 -380630943850559846545032926285791232 648813582836091161062363161952256 8485645177579256307624618789699584 -406107141863665535935761548308381696 275053873222332013343480018370560 2012340131614768678373288350580736 -43828319149827497963788432318660608 2737402539158886853415287648157696 4112062368425484243739588652171264 -121787454607269252714326227643531264 329955370039962855581724646047744 6442064604929120239896035223142400 -309490781460322266645101289567944704 6132627437921106135520209950212096 1751367349444798657688605166665728 -906994091781124034514202833918623744 6955913261865406287705814612312064 693300044826600878077856760987648 -296826378554482841491138316947423232 2825794753135144284471966509826048 6233762342296880901531877385437184 -993047187136662688281832290902867968 4814878134011232470333047904927744 455723905270143433805215597330432 -439619675748272065025244430786887680 2994155384875502868422266890223616 8466541822861413622302945975468032 -941963190426142085220155235057532928 3052007822364037649812814940864512 9698130471860898378949884054077440 -924360278602201901988319002678525952 517320593606291313420997306089472 4146054509515231839061248470679552 -11660286800871545898709274681409536 5440546597517096196595047123124224 4973192424147453448289290521935872 -778034298615124134073841939092865024 6232570716807331328353981758963712 4730543908792655353594161991254016 -912815874604581630968255048381890560 3897910323037500569406598436356096 9580121315707992902724471631118336 -387956936482106279283481894698614784 1970419923260740643397535577145344 9388211181212337438596336080388096 -26700587769580087363322219117674496 39616140491792719896983791206400 9957035633615497682575633707696128 -914724369976410471977710612694171648 7156046013203863218813187615883264 9364866572616252797090533591744512 -681920780600308442636773143768727552 8242008678334245434015620158980096 2994565991419577517907676038692864 -454745083112077703720001984408846336 3345877092316067561831619088089088 4693736342501312516881481251946496 -224728392372078193047550363625848832 3397699373991876801462999795630080 6291718956882873961725119053168640 -879715835719364396451030775942348800 3846186726027064641863908799283200 3470201999788233146245055688736768 -445851619383710681110686129127948288 3352699218205903749718473359491072 7220526869994332744011323331837952 -472403731188631536763103410911182848 5250672292260264740170217415507968 2728373745226998308450881759084544 -295262919482635848651661595941797888 6657694810811089344582872236818432 9063994630242163375040432072294400 -946294615803986941422383831680286720 4936948877096036480456118425878528 3405491170525633236544165957861376 -653511775440734622829588413027450880 1377397724514900065479891003375616 5360809946733612290706215599603712 -385617750796301109196094516196540416 6354452008438505852961472877953024 2846583009217668840138187705679872 -405462767502169833831289915353071616 925786941292223965454690003451904 7152978733185545683150877233250304 -784878818891522468993571920965271552 5916051985800489873096533484765184 7219216723705046931579513033719808 -184460094863144478229755832181981184 8518004348519962769359581902536704 8868047799838425542453541700894720 -28574256548451732623221667676553216 8848036335194808692011979730059264 5907017719355196472980742806175744 -49323472624830607090869694124523520 8145998467760298744803158728376320 4481604247708142173202602782621696 -523274058582061763622194075018461184 9483444348645634302482862420525056 2978528269663305533630603258232832 -447053606563972583310936223286034432 8814834556962778790257256667545600 6097207163981923278073611792941056 -224979884949264377875315259210727424 9041825314082724848564505107496960 6875419551371390420114061565886464 -938092533845130791076207615981649920 1912578725546514283646762675601408 2163450424112029888405633272643584 -766349062544627527399132129398882304 6059469465677493778974652281913344 6514729622068600810851352059052032 -242968307952726264383155231160008704 5749878012492574567479186861064192 2762755688152643258422267910029312 -81946720094426654627462070702964736 3207217834307586611822325904965632 6140405827198069147836143986802688 -502335877876526541333953397020164096 7113155265381472671384609056882688 4635562091168394468611048238743552 -656136901519025978299369699569303552 5054233721079116453666449120034816 8322326705395770488524456727674880 -773311889352174041622228714490167296 6068867028006446751982007525310464 5086403558786032983577248705544192 -119478086087245211161519691875221504 5174675696946155679332134127927296 6288994086605142620491404651003904 -96851839892172695528016574523899904 2147722151243036741541853787062272 9705892687746350561727737665421312 -289420824458814740717151779718955008 5055882913770249579007506068275200 5183570303298680934351728510238720 -221886139325962847741324754411323392 6302350319037438227377982938284032 5944958732227151151208349384572928 -824184869600375631203922119860682752 586319003415678290094642354454528 7567080356831773561755487610863616 -776043936122232107120386625727627264 6197971275273277596794924073746432 9511133175494898769545945828818944 -86978487188050808301591289753763840 7554340865452987686708744263041024 6680845035784555329418689553367040 -469164300951679270026358798464057344 6935447224885575464880519960854528 1766269578410226359082926441758720 -951161496966628983810535348286521344 1486265741507806931311501787529216 6072335630568616981683647287394304 -850271163771048837080247729939021824 5942632943284916336024839962755072 9603428927733922833268168779104256 -664077673397802328918424159726338048 4015046075475845226043556702978048 43327045146464512835988297351168 -906084531661179463393411387914977280 2499202566606468620346716195913728 6997405061541579180746531621830656 -697174035340778227630393983584174080 7319994837853012343264976417325056 4446819134078951414584961119813632 -195434519970332059062030455250354176 3649701996996003179610476996722688 1038594205221447794222405144018944 -783933071788674241543131540295254016 9529322603875479390508921640714240 4172199809770371399690789024956416 -968278621083385577380483269037916160 937599733065919730533699587932160 8824281183019081203902720975568896 -349674962466470667853577087799525376 4383801985173573626992841092759552 8006494531674973349910773082619904 -559263896955347861310031973320753152 8773022363372518214191605239250944 6562044127523752304320832155418624 -824825595694773277033565103813820416 4742239754857677569649972562886656 5083096322133568551011145570320384 -956132190662945823664961759813304320 6448225021666960523763724075401216 7787079136302938342903446532784128 -760379280400423481016784154833977344 8221384330222102667027101851320320 5165700496704707998035040775700480 -381273734535266648877869574473646080 2451772122405600752565378109931520 894515904935568343533619517587456 -327323451620581233149922013939236864 8541442233680660042737414605635584 1959007950471422908466809169510400 -886918490777721721926432341335474176 7714711213855070102724665105448960 691498039540062896309931526324224 -198282742730400626071824054276325376 2304781342443234206900445429891072 4543285488871773354269794044477440 -961539175590080543372260620938248192 8286953203376785640075535457452032 8561586502914276619524017131356160 -827615705844574774711160767699222528 5076992776489385109431965571874816 8256487513673917637922001321459712 -533823518187518697336184222848647168 612896542305957544233384206663680 4463927582782363551168934270992384 -607113879089149140493285704427634688 4534585355129801800193424828137472 7819390608191183773506540436193280 -899967727043051374791923556845355008 8689336119278141914208736089473024 4011941104986391831866157761036288 -317872897547341326290913405186342912 9604756808535946865722130658492416 1109461080920190778638788766728192 -532242256378779828308599730692161536 6248652095794391842374818677653504 6475174084327586572192191317278720 -211608819275851349213578611461718016 9918157762052976849540792786616320 3144810274601251944889939728007168 -569262300950322601618375437650493440 6671600703518969270718541693190144 9939221800058836255022645810036736 -159241231715634578091632149970026496 3051325012152167987911278267990016 3208620380628021909329300301021184 -139002223257232641175450139431534592 6283223992128936993090060303728640 1234416153568924605541061691965440 -122831409202522632648619541623996416 4825855915599726754739647162613760 1196083794606113728827940705140736 -779283926093179564789716337345691648 8228165588142947958611042203860992 2620825691158992283573530929397760 -57313388887582956776335439464235008 6256961024636435545830280277262336 3374971159498814200324302154235904 -942122410885041053152881207932878848 2177973909831597011986258455429120 3158659581805732992493202683461632 -209943180722318396969312131936681984 3629157114537572960315297249624064 133275341015460861931282327666688 -575098495725574999433055181157171200 4020364518911328167623621349474304 8636912949169329801934675124420608 -605608641198255263617954194470731776 4485235995270452346710816943243264 4222231685094094974272065681489920 -690343082649715418931285544172257280 1947803403140558939684961744060416 1855623112267266792698818343206912 -88255115816150965935730877156818944 6712929794133426685080911300526080 4280697825725014757639171084386304 -441925577727667614847678192239509504 5953462632582610011763986759942144 11781402804051057025891914743808 -471429471644601742408938018545074176 8038212079695589185570754313322496 8428999630309987799247205781471232 -851819699922433727344313535190532096 6103674435343369933686923212095488 6397376916022872661478094973960192 -719083764310217415801874362063126528 880451146937111301493578927177728 6959470930351886442234674291933184 -334750663286777061250283026696372224 3728624124583874961806820294787072 7578116954370583816932279380344832 -304354122690078215343695813933006848 1696177073361963756996589044891648 1479968470805258629598850752446464 -242489971050809372343235981795655680 9758673788683820175525065105866752 7367754140294333358161113041076224 -517128430685799081714742063601287168 3544666510833688697787000381505536 5784823227105955680829199070789632 -137538538169079308828398755992567808 9732377748222996964999868935307264 7694595217454478041788418803892224 -4515748187856502681802917491507200 415371485201705382143719752335360 4775207024393673407392266995105792 -378439768220595129488587981062144000 6182625015344335513141666348269568 9895755206779631612153006181580800 -591458561946589722975816908279906304 1453590267625264432543356082454528 2901440242443251416292258255732736 -581582617733317970468715014127616000 8890031526785835497550941507289088 8477543141560276467775803953774592 -939520687530091961817624714657398784 1216219099006304913082105255165952 3319009550676624655971833924812800 -1855862382244616801978334624874496 387857037022065141892000006537216 3848615748068232508135911773437952 -141233369698088607759922616560779264 1963118811390856757651190726000640 5777158711894008573717074499600384 -567016691032335989774762208370098176 4577994288321606243894396912140288 6483962920177115271739281099456512 -54653885389767653322440181901426688 7470065113890847301200209858527232 2552464294475905601567309086851072 -689382723318681445235701973067497472 8226440371363340594382411451596800 2215667719122173090499034202767360 -145798891919416032584511494025117696 936309668507911079738512899047424 7851387235457030549165967568535552 -375750919885560146538040120712364032 2043590509110788272827002253213696 7983529708624436261904674082258944 -174450544570740527068313881107496960 2850009019819825733494509339148288 8332759950667396695116798977114112 -213576076707771424535073806474018816 7764142252948783531793875998867456 6016697275439783517324870804307968 -131498010505850114489764329662971904 4487596006939095802325075088113664 9570942186828735785511470134984704 -705038364343682967613331721676652544 6810440937893273725250331012497408 9338536272644080934834972412346368 -859382091989460083679408497352507392 5634043670240745530167130851377152 8848340948610058895768477897850880 -267384293975305870989379231044075520 1054017487044583137967059844988928 2487326846387327807579025875927040 -63416603214859855445386669246644224 3932777204888992077266340011835392 897396318606692579337948360605696 -867168056292028885218462324318273536 3143473197182741808401574447284224 4660326438805021689292465117331456 -162368700398492999894584217860833280 1479558633336250972425872509763584 3379216465960166004265618377801728 -261196075228535206560351690157981696 7008683061668335734534106102366208 2751840609331354422418420254375936 -164145797657215546893159787864784896 7047438780524371356506876379398144 3760834705935119128039696266952704 -999822138888155924438588002842705920 2366947058966582740631905168785408 845107838032516057504043809898496 -801775300124626255325227045194039296 9007467175387241566209394840961024 3222446718694253090576886596108288 -902650102205356892627603755261493248 8029772619756219727474144026034176 171808137900264279597253740462080 -698880010148017685611096344287510528 7394338657563836530665095543390208 3814742250498686948569697442856960 -702213333440147944101014255651782656 6319640364281789902011667207684096 5857115427921871004378021396217856 -891800140894691545911380187247804416 4881007772129700948621777329717248 5602225557110742581793003432574976 -910773428105925858888986768084828160 2840327915903594687498612818051072 5086507763511195426015049970352128 -671548531132191285154637352492072960 1901197524605142482485462110830592 4975710587287015642996080342204416 -730851285240059139464540423622492160 7723975793618154413762004413054976 4701634052333197083386588556165120 -943455518606223639282542902914318336 1365147456428137792764118468395008 7883680635039288221781697650229248 -17681738437760270957571349474705408 2299922351309960817036776284618752 9023748926279448677327807770001408 -436757507684695371955993698417770496 4571702242931344902429336680792064 9998305172937103750774799174991872 -244308284809796160840091303818559488 7806848776234036223193176468357120 1766256556493067325941384264810496 -40879253533018951700462437929058304 3042075846018751623724770451783680 1783894031186717903069667682942976 -66442695527054797962725114748338176 2582333476808908313018388996685824 1527502180233387360840519614726144 -965582721276121431178483758926921728 8300638495152482691678761128034304 4725058725235226966463497080143872 -948303930412232080455716294897958912 3466437840684586299773999239921664 2688647520635129485101695760334848 -877202917942073864259743767674748928 7206619337782747826207659269292032 2145892514821466843686395252310016 -327385436699597165954468602049462272 6067253594587655905913492878655488 327289347996863991796277541076992 -104483994325672128862029841979932672 1006702404460074075703539457327104 2240694399983789239773079283957760 -832144441778506180470812224738295808 7913453660953743836711708140765184 3565894923428475850231748648501248 -706616057780866547467609041159585792 2226334803764140200585576407105536 8862171245614849511038094017560576 -838344974606412463081397817182257152 1326687464536411933073923702259712 2577802619334987735402579025199104 -674439532904060605686706939927461888 1390875448037013504365058060189696 8555217354350911169881997897105408 -177005117896506584769352515268378624 3686591325404820176972074474012672 3331198965760077822978610740330496 -812941441626401358566888462448852992 7671660447931599962086782032412672 4316676047738483629093116406923264 -119418579341485925585138728248016896 5982216603354794850824412068839424 4799741568376805060913653511880704 -494216547280625882139813859746119680 8767845707674933095624352930463744 8594192056158298214535875702816768 -105539073443230486243919265959772160 1449259501122845263657551133671424 8587261766604740150189190341984256 -492729453949115447207970936899764224 3717383702813241877896853977038848 6894488559038157169798882000896000 -179733866501980491210439007513083904 9101894110476046483605051269971968 4048076529815642304001031784103936 -578971634779854088089612558031388672 5331546816785666225664265191161856 4329133748992726025873267028393984 -349212112824218222295473488641654784 9953026386209964222154212758257664 6413412933862789138084173877084160 -584087610386904551698629410202583040 6752010845177369785051471065120768 4165378142790053082791371094360064 -869477283426212029049337955963895808 7108499037709872294974654936776704 5930494588988462735886213453971456 -592238364065695349166654137722470400 4927077469768000212721778626134016 4611358516204579111085426283118592 -457197855123943003979361745304027136 3463776301058199339621236705591296 2675980679244640468132590801387520 -890487189722798121237065422103117824 9702058781479430980692401404772352 9392865617427862517418588897280000 -386336695134791504081466834255085568 9462734557358688970203248495427584 9280916381972669756743359802638336 -602082865571087842393036366846885888 1099630243761235563301586866274304 7411088559920092231042760878063616 -647307273993427646731290387452788736 6475457426416116981592328134197248 8906147862237644293298488971624448 -476916529309461326525373538816229376 3240915329121852642321230582513664 4502584184087011807917616551428096 -925873582697704566367441661944922112 9219133987808854962531831749017600 7676088959601494899309073687117824 -972823569787273146471173265895194624 7323984281408502986078950447382528 2877666554395406964971548732030976 -687863846836804171581486361412108288 3928363194978570842086654676566016 1572831481298284760199846447546368 -490194905286564543015423463588364288 4637085502298709587682231674994688 2431837306526195805662701439418368 -896186046260942503299748229506138112 3300399049709340443354259934674944 3652084449824120815578591707267072 -388405950626863998549320132687036416 5747623871076304093205020912123904 3845557415861086006355280242147328 -935781451142247551417477012993867776 905183855349563992236519801749504 5339519849096015219745454762754048 -907713330556781538348559836368601088 2698394753621739546205407613550592 382968491263991821980215990550528 -95010257285793611942292164735664128 213295829737919862301697360527360 3097903477521765193932922326876160 -646248597524234585679179329375830016 4215743217580010045606198322921472 5144878856040099321034509364756480 -605155029844588717304783029810495488 828429858031042721349357457637376 1372347449030367376442536591622144 -806597377560591233288499114849337344 8882267596222591037193764844077056 774233059874702165073392243310592 -702653012535795553493114513036148736 4408897619548106090332099778183168 2992488586496923908153772351684608 -947742950573369368971641379037904896 7963841522249465784334567614709760 6161281331725326818732853595996160 -775552439392716593699592577977679872 797257111842890174228779455479808 1166813118306827212437988724178944 -604614811219262848226860836046503936 640681829478504891798149887164416 398858691909979989793169471438848 -853284236116805713147592298729570304 9796043702583050024239523472343040 3234612051666311254744527368355840 -533015094591349710174716235769446400 8515254264843213252405979460403200 8260343415848659077562895207235584 -268023744325183406578568992802209792 8443787349617231999001009007362048 3816725473091353929168253580476416 -856802035865065295701047717767675904 9712494424568393266047968446775296 9894135588631976150522078609539072 -302116330544853826334533683798605824 5843246002201171486801825863041024 8765880654085215275201899712741376 -965159969885886850163866223245262848 4181730773737357023598636368396288 1199689863599074157996478583275520 -379746355095381325986703243154030592 5676778140931402821153192767651840 8180566702956192143674325411561472 -535847767831324075935254656852164608 9349268875338552638774146639069184 3371937959411776034984313166495744 -515797407484850889614853095771078656 9881157548339685208779374400110592 7758714984232913640533507602120704 -704498029477520621439181687451811840 7778222551953988533726691020767232 1739717704275444191005554744754176 -167012165136926891613750676546387968 9386027608237399130099119191752704 4576480086017430406043983226601472 -243507452184990432070753446554238976 8730097816552494925960157031563264 3504698334152219738322534800556032 -458075391331824602172721016887836672 7307129242538211639814145525678080 1621059558431180233414528225771520 -339903094093826128845455746186346496 4736766543208693729137838721597440 8590243159800800838752165185978368 -561519257510591290992207341796982784 1187023582471677910168020807843840 3084954152105750974683489119502336 -314573832978826913165471549528997888 368155253048791299130210576760832 7370241611416647086324951464017920 -372943076464251394936539045028691968 819375192135883068819677848272896 1966350616502255650687689722691584 -92040800182950955572872010543398912 2243914460313193972262678560768000 6070907817041967553239340606816256 -733787306355297551595495133020160000 2908129258390142387931667471794176 6946309735449848207323054733262848 -165090995456226414653684933277515776 8657512312613106566209885733650432 5563292288192052410316782322057216 -406055130853425622467011077128323072 5766398290775408593790883875258368 2818844440158126500715010222718976 -530472962017713929482270758022414336 4829355085854479885160391576125440 66684683368732906088567704387584 -293552831749887361939343095116070912 7327501253797034591336688414359552 437908155932741359013461764341760 -621167642007854634276855583986417664 3837392182828655207869432228478976 2388039822610157079667239127351296 -385659398674626019774124840441610240 9505420822385002604131762218991616 3136691434254211930832014130806784 -383518315455639870571314283343249408 4929504810863903671338987853709312 9008856633773672156935530286678016 -94528359987408106840299411351797760 7635165010726731907813970632769536 7208305829500558137689940867153920 -387471991761378458063217693923737600 1036409964525018256257096647442432 2741969905061539185126838435315712 -146955749035487296773635740448849920 7644033679099140381628994521399296 6475584635616255200250394384007168 -240671369754674373448366808539070464 8806968070335321373706066535120896 8511436439927456738799644347203584 -676917233500574763356416409665011712 8663306935900575349015949936164864 3383655506637120533617547338055680 -209315760751503336821854263102668800 3226778960382374729435976625553408 314493436880900941407244852920320 -284727176373829265293229679301361664 9445076623303152190923834092683264 569992938332629198479019384766464 -797831618443044044791454134456811520 2478966700149302608868680514142208 5883675881550444607709705347792896 -969262626819724888875533931730960384 5316675943058353562737940814102528 326293258940431661483222418587648 -986876802256998888105096727293329408 7096006272532483444370725496946688 8834811844978156597570015055577088 -559696576874233627922271314317934592 5686675596750371371711029045100544 5198568085373809686540068061184000 -421310829731993678453687963772518400 5839773492903436856051779984424960 1749028839437728379911485402382336 -682315801960326946066024125058514944 2685404251675382484576996486545408 5176295281361283847499284698103808 -866362737789007942832824779037212672 9877811594334450081382421214789632 8766546842601508491520465432477696 -156554510231338451071485260463079424 2819964413465100398746911769624576 780426420599587168030811811217408 -802312698433944428078341506293825536 5374497963202471944781508856774656 824938277173386489397156245405696 -525706309837150017799787126779281408 4336859958404718322705160504082432 6628077217779215878405756706357248 -167172499399124991143825690224230400 7526641842733304137087594396647424 8121167447656465260102612821213184 -716194131978448548352792254952243200 3863256159577795519135315501514752 6039847993211282063881446342262784 -504825535551643152481611380957380608 3543273187153245628009478015156224 6307408532317772778325776273506304 -596505768914554179920014899031310336 3192598015641813810535793910874112 9420664849149205028930627794108416 -803549875804779343635774982619922432 3911852081027907998398355112722432 180413386254028390248299540512768 -664504829390705517708044704594001920 2131735189421441618276127933988864 8563186421617873564887222165962752 -581112684413554057203314566325338112 5200255363032952366448925976035328 8228873562603256939859196313075712 -872905713562546677498211153999822848 8464770044577781809225173760475136 5235078664431940093955538574901248 -892563169434777911151122426238074880 8458846310123282855632911414067200 7247574870626278605638091866636288 -556278387948702519393575730849775616 2374464312479012779914428499886080 7720526961173504896350805299298304 -507086550843875445713230700182765568 4375423212471293480941351369441280 1753853858098122300932158335746048 -534714914428027043387326079608815616 4824848859993607571427462215630848 3629311736903530718381595225489408 -725857245560814804218809410748678144 523036867265606411659338145857536 9418184761664423955710814692835328 -567048292456233171718958653944889344 828235700086664384541241798295552 6691581156822548938632759091396608 -389764079713467730520537209589727232 3849528097866215619101044017987584 8130534819923443940559806560993280 -682377056313972144942920486197657600 3752563885032174349785978854440960 8151004168039020341313083744976896 -99031401646029883986323107561340928 8205100781768994822649309051224064 6290347965299303672117555229622272 -787298810350818202092556853960507392 5300780346677243271551604643332096 8212998563722548769083134786404352 -453632893696597998236319882151985152 9222328154652110435953480529084416 1926211837457240619765947785281536 -820418094408552150940261084913729536 2535458771758287518509288841543680 7882494609440219481571863629398016 -736935065463395177686426131086966784 4173417282647904093399203828465664 6544946867839867946068414558109696 -629772089695862348852147062661185536 9806527836770629991903710001758208 2081139251812037601192245991571456 -830886107535912509347123161611632640 7305429919244750075888951449616384 4716922348269999508953269949956096 -523027358130419884936807871319900160 3546875031692049538933394862243840 7944917109896868492275436226609152 -886756695979590208952385458766086144 602927161079793623386353511170048 119169602932998517338214359891968 -412023065099080372420666119094796288 7608160504611769805945939578322944 1998132245778816849613463931060224 -467245101395575687432017182004871168 6832259792797110884505922140372992 6586168740393329633928973677232128 -406571120794194533411282318448918528 8443325594746435110426980609163264 9630624831763369859691265002569728 -651276106006237813339174604453707776 7593739622502798760835548662726656 852241790708290364654124156321792 -219944196621563378777315306182279168 7374539696395206334853341847224320 6715360515434333536640486814515200 -364889532715403741087288630311911424 583301932226183576271301870878720 9768544087695322641012596129398784 -310884906608529095785251994934968320 5544241082659064135468955440513024 335424473850429241642397022027776 -277885471808231621298440384488144896 1743911656650511818176743052673024 173805453941681274038377066266624 -886782286434097337278695916657704960 9540184718338678091115675772780544 3556740693282060103451644927148032 -356918133659804717242809694747099136 1088909763479364754580810521116672 6560189297621840595313213365551104 -561777932371012887904760894343610368 4950260950342271689449151894913024 4662522412073792931194247363690496 -883317372727556331537175281152294912 8358184558449808276735304335884288 3299694337234198183660817754357760 -962539508957208988596195788180160512 1114289774533087092169209708281856 1673402391009425103131273603317760 -714049994276841830266686641050484736 2516170669025157245736256633044992 6944351099976260239088502299426816 -529504167814052837648116213780316160 1991623811700879145208352264421376 2571310251190161247286598752534528 -402038300770157009365654402764898304 6589065740423300514341607100645376 4839634533090621059195696685514752 -17289261666762955719361445022924800 1658160320387593322545571237462016 417734528676650077504615940620288 -512442091394784230754870580199030784 5151133273923656606866433919418368 4279973676268996906912877530578944 -999932868247978531771301700304896000 9133308481877971634325749529313280 6581122589613577901959781155864576 -219561399482174960090858778987069440 7115734496441144927680549569429504 4028796750217944535767238475513856 -543220482178936538100257389325320192 9333018926384325836385552902914048 4947999957923855004008679022264320 -83363609090986139577169402151305216 635459338306208175416654606368768 5166519689606128097029320517615616 -640242440380510449997060077764214784 4350353173783000288649079085334528 6084696146918473929309761096908800 -886619787290926402969344524305825792 9630910299892829024764197324455936 4434913618294705970094555579547648 -847214336321217186384097824875741184 1591828362454906400841742860419072 3417662554744653449864359664680960 -151595978944834506423200922246053888 9728093056687381075031789915865088 7729175619556940866820919896571904 -799183430152669147277444927585255424 9064618969850009023547456519929856 67239394033144454988404231241728 -469313873214120469049690280479948800 5124152423138898584530811336261632 1189437766564318991105195407048704 -23433478562551913291742100192231424 8055823776070515321874030763442176 6752938333776203684244927746670592 -718848239296344070082876094074060800 4266727468025757442009719996678144 3447051736425624498483544639668224 -830930379128669681895395662669807616 9187650007382173860197125792464896 2874471257712740690721919006146560 -430963985035497341143257278696128512 5520624275051800427469694461542400 6480126077352642544344552349630464 -704236362089971872530099133189455872 2189073933114511551728168351039488 5199162812049035584872021703524352 -33387422033344620123794643414417408 28762164927342485449057536835584 9853031487721860074170731041128448 -247795028763180097014666153936551936 4411312997892802002916791180853248 8184209311058002649561431795564544 -313156732810522775526411706776420352 7073733462415130440276006655754240 659030130858691292424005151096832 -46713618959643451873253109251702784 8325009871008397633490085147049984 6358397957477013888938214034505728 -565236984164155075980886642293473280 1055577191686830352290521806798848 416445090398579004798244753506304 -173093784314365347181988435032276992 4589831965014292882855819281956864 7534663740720465550889002712694784 -644728722870023014780163699815481344 7116732492121081841395079875395584 1870211537305782180822035858456576 -64023596429414587127773707144003584 6092381698621662069178483502743552 7443250636358868650762096600940544 -660165580720083083712264198816792576 8221584220090655201694505725067264 9076638830974427665763514487668736 -396821117168487565165021946913488896 2872095316645302744216109500596224 362878796660272564196771241132032 -953947356945091905233212912047226880 3213316122355167307051780693557248 2383172968855167384422202594033664 -797507096769951765385116456264400896 2238124207327423407415125849669632 3390375260699428416180348484845568 -603328078786448347557803549685448704 1474508208951763289378036050296832 3990352125857720196160067729358848 -87789440032939924423040432187899904 1361524487858367294559373326548992 9692101884878425432668782364459008 -289869405075376291122945995617337344 2900901364480672613821662311219200 5021687017517939275810064669081600 -62075306758084896482366558576836608 148756818613799817856210492719104 9989652782741558444123909951324160 -721211121837722349160075772423045120 3916597634034591389338322547507200 1779380394060608770757605353062400 -14598573248005636219949097924165632 5199604760017374632159754684727296 8892791460986713292608434727813120 -111835728312916382926805524979646464 7447999888893343574168071194017792 2607258923235443612599306910957568 -340466549505937994545586618620706816 680447841350537278681557889974272 4477630320584111503246648640798720 -963658584373557484827924485311037440 6776617546350763429086728535670784 8419955527154415032310940479520768 -370942671656943044888111018242211840 5722449291473795807528289535262720 7942961567589814734095881282256896 -592920104233830902510232204696616960 9373914637762795986502411091968000 1016184789788719345082298370359296 -174412063580797926853012088298668032 4791656995250141785883848938094592 2943632872434289002091261265444864 -908986910222275947102927039399723008 870348778488466519748753234067456 8053175026578220198177381566906368 -9322847038012416862665834747658240 6437767689627327403634842872578048 1571015339673229516178208222871552 -910868941488122798289174888550760448 4911565582534270422731835140210688 950871669029088228495368235515904 -153245050020690300485084217790693376 149224388291880657006276607213568 7082727338271415095821652641972224 -780897809128597919061685995424448512 835589668856237495399038459052032 9841587875708369682798973615603712 -527766310640850990717358685806395392 1178798188732719672434220515459072 2748972078580740121304946714869760 -308052099332345351424772870967918592 7196774502423791555106264190025728 8897951312356237084045071668477952 -188666619081195974478166101317386240 1964804048944593584785406149263360 3663204591623256707597195697717248 -966660008038176149235555593153937408 2252499370577323647886690269265920 1471603704012005176651112932966400 -282852235990448970671970394925170688 5708906482785191827925887382192128 9711905391428197461497728527761408 -249191736675318435836997478960332800 8116302239510010892113644041011200 5610092143487577000672533464219648 -563529431665337451687727102672502784 9219459559488849654062273842380800 3636047131721960104400996882448384 -955464506053944324485331597888847872 4828697427681395212497601383366656 7933112211425005193472800582533120 -676387932991275892245306889518186496 9079058228169707285563120044474368 3009627860855476780803110983434240 -9393408985368498263032575591186432 6900956889565557041903474682363904 5850620784836161919500268177719296 -297742485002940340299073802534387712 7280052955259392351053604611686400 1176221593378275406682671823192064 -786175869830935377693944364792807424 163635759118189819615988896759808 2226983907018725460254075012513792 -465192895369768348544880435097763840 9146724950190877066455213961904128 7294877648165701891135569957748736 -926197281169589460319322111773507584 2556504220084836311405256064892928 6648555854551628451145525783166976 -1296303203881971063969825681309696 2049310609674974195997352812085248 4496278493552067870094730607984640 -740236582915226125169699654750699520 8082209748227676563497240703795200 319121344173100561190852573003776 -142548760563132781368687675150696448 4983678033520735021235633676877824 3599436715187953331131149614841856 -314204554964381989247162408534802432 7621340224624487081239176124825600 7585017437597599326726415739518976 -942755220135757485311897615353249792 1233108454247554881167251396886528 7595224818235614476764910425473024 -142845936808617594523199079264026624 4681894207967203834819573840871424 2372190097040488475500188453044224 -821107255936679369101143798662037504 1205638416955718311831856941629440 2742866630969665304058387125764096 -509992866589221813474435169890861056 4789579981771946848503809160773632 8370288505783166856190964866744320 -897406027259656397977058988076826624 6263610283983279258945662117478400 3813291415630796656021356517785600 -263227721087328032265208518078889984 7622614392068020053663895452123136 7857824177013784630574272529563648 -85960426229689818326904296976678912 8306698692127230126050993292443648 1176755751036251834891296927907840 -486154094340713672345148184867110912 7729965148926946528449573358141440 309620861963176556399822720991232 -37293187834318258447618835293929472 5367658672220232062400369935777792 9815276797800273032156861140303872 -693229087574702224632272056880201728 1648278987361344084869397579038720 7237958659930826515113218689466368 -473888992106570243160274121015689216 9027659337067239672662335558778880 8199380782558382500595476652359680 -740313415464108767932788845993525248 8523862761368291498391025099997184 6050008750829054487163122340593664 -878943948598740582223527187593560064 1527352084778108596197961978871808 1080230503514829175045636329832448 -161201198903505261715183924995424256 7610529590020450207048791553474560 1018333654948239638809369750011904 -391138394579824117084446080272171008 9209438862565545660522689722318848 5142413658706840210238336422379520 -894435831761292503428731747522576384 789531074301943106732439703126016 8008702134558311051812750003011584 -862025955946416399688324608656670720 2731943732572415312757021028122624 6082996473622111956075997644718080 -331427702966302248522847675207385088 7476387068409437458617484454133760 9025632363599234901506363165245440 -867807352370835872628828469236596736 3827786421309566395169226518167552 3271287079039238558373927486226432 -261998721251795739003528314231980032 3428415845531663817191621369266176 9195541208505790302154262568763392 -249355059019696275985460183227695104 4929048909189532387460374373335040 8252752949032426260880682792255488 -411695042690201206602102015222874112 7833382357041203088809846196142080 1495903068525198962971328003440640 -214361084695368736912797245793894400 1631500552761296255315729505583104 5262879096510163016901960918892544 -378995191623256620813525429260386304 811805513161564620817200127672320 5251364463250643412751478232711168 -444836058998926522118810418416713728 4261169740334232328958425950060544 4161028473546346553585382161645568 -395114411330941441204365508200103936 5023721887340188798732686059372544 1014881844504481450162057054781440 -243531476292885482652789985297563648 8790028589148358480613888072089600 4192327560110197215833333656715264 -167625673084584147525532404640907264 3412861544469782211897650745180160 5073310285858663739256926046781440 -559386096960237826938868759374331904 8811806239894152092619907453157376 1661087234202508388372335755788288 -119392329167256302824322076814344192 523745296134805724048120971526144 3116798484149517333781638778191872 -845939164698911214354325896255504384 2196764077745224935120680173699072 739941602803663876705681160536064 -958226110822842821618875112552923136 2753009957979438389775068026634240 4065164666608910283930832644079616 -92180694498723015001471113561636864 5311174351117948187199887082782720 7920630653737606096102750368563200 -578373831233233777751910653569794048 8461990008726948326235508008026112 4116840906860764419881494074359808 -95401773609754284738962041746751488 4599732701288889553409938856869888 578693653860570736449990068011008 -419994965928515795097389378402516992 5079908855788303084271124978073600 9454909175139900404416299424284672 -254316934620781298894526838644670464 5587887768061603931070230591176704 8248489048391136448621861220122624 -731057460201634092979735967672827904 4516404183867808298360767294472192 6672820099886268032832499043270656 -873864974735518865979632875732992000 6578955018159105770125843272564736 6145419340947927616893413484396544 -872343111711725247575042363049902080 6239501166022284327153616010870784 5577612299682701149698068456669184 -280740647434805591649634562053505024 36806880100385657443053973012480 3527214012885980186959665912872960 -628823250690031714475305025077772288 1418398454187566307792472904826880 7146354705708184426500716318687232 -413155049151173284777867306862641152 2375942233480908402662237326540800 4983291501379029593134613770797056 -802960508815725996015699399674953728 1420175029554085244522851121233920 6169544868740112485606371765518336 -235713706294694113966039508801552384 8894845580500743343701117076766720 9285146009288757394302381783515136 -33311584591852595898360937622536192 3180397531206885943863153073848320 4648465920351162314713547510120448 -863745697395637936482162115512107008 8783932763330759768464638919835648 3784459693882689817464658789924864 -497748322532217268414434415283798016 6581988276553963827650382232813568 7512849349762875293944822890496000 -65284329879853919322461644898959360 104139985187359803070073872056320 8879526503402767127744937895919616 -17105650277149876844060519834845184 5954492893766655862971670902865920 2106536632113526666325251019767808 -978009919645582122582943190963191808 6479595523973709483157094811041792 9460482109097332622005728821903360 -916210568796129681951041749480636416 4050219902543079648626733679116288 5809034501977681420829657149734912 -768009421159077202685931141508104192 2809515858969792276025719321001984 2736291245095076204819267524231168 -50554054596888487266520424870051840 7255749642569075324158936587698176 6421375251481182093573747051069440 -259132162240911786550173680174891008 7838761989669046057663307479777280 4154850982308235082975955369590784 -575955935494461894072398411582144512 4854617495687687162679352671338496 5311502219261706221068164263837696 -236952248660682292589248038840565760 6750903813956856300013132642779136 5435491750627915550845451615862784 -597936538338860918073696432156573696 8866065682509877916883698145296384 473142025486661937770918234292224 -246353893751886795010458657006551040 803269156960484286268572713353216 5295838262484137775530693575573504 -241351769157852605665430605091831808 2334750951747108112806527868338176 6619460677448149394005222618038272 -353796819177376740720687822648901632 5110047484811620113721121205911552 5802046687422822610742718647762944 -269789165607628282680036431071543296 8026843558377497754471907226288128 3015230928171266626844981662318592 -720726840671792422073898784562085888 26824472300449968598346381656064 70521664331721146418473650356224 -589157866140621791392573207743561728 203531999631023144089620045627392 3478965534699018692008779274256384 -643738506802710832981016267936759808 2442939168811567612347028829372416 575587679460571876590772855767040 -320789414323122308745448843053629440 4940475491196723725913032283389952 5113325219042279144809574913015808 -451374360732957235273708499002982400 5931175566302700566517011200344064 5464304627942553480114634573742080 -30320749945739438584072739384983552 8335852850947242641782354911166464 9539846158474053389289725414604800 -900886333760149532722693515235033088 1984329134813391064224805911789568 6812489924135363137052621076955136 -796982239968623110884195598954659840 7143398937274277238829597360914432 3276948945439078134380716810567680 -901055385826915992282974455097982976 306441399430556211280137555017728 1391899736200596445476228543021056 -565525556085900586976286587612037120 1524498405789872153430554107183104 7260797911680730030346177813151744 -810755270818405703325551744639827968 5356098195776974358404957097426944 1894479721660305984884815765176320 -86873817562946273431773808401842176 6215640860466259564037962230398976 9297515957090581513405671724285952 -433317177210172669837510703910486016 4533846337045141291467672498733056 3403473755886673920525055725404160 -748232966525756763639092843233935360 3891857848941754041064650222600192 5340329576812940853798781371547648 -750775064904234057415964301069385728 239793798568499781420381961715712 4132890681960378763786640603217920 -522469168697093831283500770668838912 8996189417804989555476330677534720 5838965005536735218602351091777536 -321728841144307706733093681289494528 9287929868992050281424910653849600 1366917693509223191611565739606016 -668089659525255247308210615957323776 6162499283587040280574848948764672 8784299767899452486094242315239424 -398283004503423329540957312716374016 5487429829858511375772202762764288 7075100900318451761822582236512256 -795285114386830310339084610810413056 9502493593903913038861016649170944 2923621625759884095983436641075200 -654617490143221651797830800884367360 8071592896989823000472996383031296 3202973346071882097718591949373440 -315446689466925762228444866763816960 2825398872424581869956084201947136 698550309929059645346441125167104 -311414162027315698388974350419099648 8852213174680464487128369427644416 405325475130006570843877882724352 -457746017422894038338019674579533824 6359605535336450205945365759262720 7332498007712796949556953327075328 -10659230683459017494084447771820032 8515982279593243005722907631419392 4438326441213484036645459880574976 -629287031799241401813092245534932992 9235692685644550848574919324729344 915077401380550235763339947933696 -744266073507328263525075588692836352 5268585461337528936045544476770304 9931734222443458633488274621988864 -630014124083082679224093829832376320 1187568505576392893773926891520000 9920017174120972132247477239676928 -11964558838966051372878932591247360 8597588251276673823371378179440640 1650568085242362264409521770201088 -70621591995429819107163333025857536 7052132835201427487363636760936448 8595810962090495068677279745835008 -138318750051380632673816588622757888 738400604456368212258709550661632 5525674410793614258391451615363072 -563530870570822637715381384606908416 8998624709062332568156128539574272 4271128847463478892882479368110080 -415727282592663023150070532914806784 8903037333299261411689295316516864 7331312619155106448454342030655488 -750568856357372850024683913376432128 8740157947700647626507297585364992 1933609652194911857010891187814400 -826763358768286698694330162733907968 4999785714304668554582054261489664 4598341216610903750574833984864256 -68486658226990670297645404152397824 456431468367314135520046305247232 3428915118846564514136392028127232 -270391382036939974976975527798112256 2570983626449039639627682419834880 779038021379107776183324565831680 -22331845655359243197266917821775872 2487160285845452796357973832105984 873349892651463587851751240237056 -936772242283856375373581031854571520 1386038621630193619915532524322816 5549774284591741693255130432929792 -284868259943495738255581693486301184 4618201454511620104644967081705472 5517087741357724783051496858058752 -302438717392120573699236722494144512 9814990602037301390841902473936896 3804627302176136205017372805824512 -528192163594094296434482084629708800 4922041415109294596207578787610624 4478636273978524625826712593104896 -677704028666555087050382338246574080 4897107815970157631757571583901696 9381404511841939256217626581401600 -479025393089877122707610306783215616 4744763379749206696678313391292416 7549048806697489102438081618771968 -102731698980603503745607770319093760 4810570788003541789914025580036096 1176911142477277305845966188838912 -901728441310573987185378148850073600 9278988007234518277081686983311360 6990098546227547966632809583345664 -752179482018448277292894269978181632 2387034125574099717268110860877824 9058635876048368003195192572116992 -364886060654760134205488004211933184 2602794931622653256301608771256320 6122697320496954605633439195463680 -998829520548054684174144287952338944 5081774030460589158077668425465856 4857671455988935677179156781596672 -354008157532262045535985078747791360 1281581889854544089754846806147072 3351374918711834001882111977455616 -427979668347689800931479318920429568 435576329557395711803824776675328 2841490104988184532838155789795328 -578699481889666640129873504286801920 1124950728097395118222288760078336 8048843314473076320485436775464960 -874867594904731313805481774663335936 4488578828481451982721426508480512 1911219271537161250778433489731584 -942993801782387139502157348233805824 9879513145022413137405800500690944 4421311376533086739255851340529664 -207958542736736156816688453903187968 634766574768421524053364502953984 6399099105652794948055538830671872 -260496315182135277936401678606532608 8768852876844278769009046235119616 9045411150996238300074968988254208 -624752799394726379256222029084360704 3894184803060128449244490431987712 1506081913867010418919485273538560 -349949626200133516058464879816736768 9000202042363114267465030932889600 2220906191896258033709011869630464 -974354526488608581291929392140779520 9354886475093930762486561355333632 5786760677188343875301781650014208 -275686250673714738604140494590050304 7817263728178045974403312141729792 8043599324691618135296325867012096 -173905289688294786739259845021532160 1065938734177086196546314501619712 9309487842885510170275334680739840 -588823671431003678778555521388511232 7995023024459068203779107187589120 9277232755397713879450917674156032 -240520773244503496640193442468593664 5471545843173291468248709632884736 4198864609315033487481871819341824 -676405312164934329017124612294574080 281330630911787248310560594329600 112413143995622619876016028385280 -105539198429285540299571980660637696 3970531725991948337162752383516672 7769615318750224807900990924652544 -174110327691442352044388031926370304 3074824907783289331461195284086784 1871449678357176020429305748127744 -383117992991285720883701159970209792 1755150319249384237679637866479616 3644594669389528536059285245788160 -642022425430749262252125434723434496 4468743364988915468485610564485120 4880002874848827748236403052380160 -705835719387829919009208879928049664 2122150312441227855868455636959232 8916231898969531974348047418130432 -503247842419395541573126059932516352 9442757203326466642172697940852736 1370274879579742400345428031700992 -836283113323868493777288537588105216 4288601388753323775918188699582464 5038132136036111915148449163509760 -915391592991944718912871981798916096 3920715224683917737009875110592512 9409524819012711753233928797814784 -558606803049792008950705248733757440 3046343441531221634212948575518720 2997110893898640425155106271395840 -565845357553904743464253750140469248 5941355894539239697432448048562176 5111713580131977467086105460342784 -617345238059035717933381574199345152 1584092465232592037042866022776832 4289198695878372363943268459741184 -987448689781730194464248167860797440 4263788525442789732971893183479808 5058610128058122773169257928720384 -597452847732205127251520456295972864 5506201939280002469815309876330496 3620958728706122931337558646325248 -899001657004745854119307785753591808 7389100633093818068191136859553792 481790792932697579042673944166400 -432388281287074687969047444725956608 6395493936164391936234204868640768 1780244793104390171641473281294336 -111039475261906450423974572085739520 8266491619581763220271066026868736 8451188566082786798303628534743040 -411198898301509094943629832542486528 9176876926558969586545833323528192 4830401225682541025103288243060736 -891647808586796518018856858628915200 2555332037680988341392642683174912 4466730349883555997539426187083776 -754733813507450330994890214484213760 9227118089470680385661142252388352 9076388887281836630049379378528256 -106333311439390868342108735569657856 2413785404488425910364618100834304 4019617199214110711787921531207680 -890333127747066235110876937860415488 6801419888363262508436628940259328 5645465493554191543201748037402624 -140132567501994136504029400491098112 5659351562493347387245848210440192 1388926426647877300924950020882432 -845986369013437418878469983000592384 6221148716966225292982646422372352 2201806969592223239831752353513472 -185554639342941954416549474269659136 358510580783007618127389899358208 5640533741921809540636404491485184 -310069067477319509456955137614413824 6323168780599993826650629970329600 5300811708020185475073537019478016 -728574697577540578677668493083541504 4617244841121587682760547209576448 6123527350966784513451163333427200 -347142802581607141544128819318751232 9768924943168261910294166964797440 5228117549223241870004240036921344 -631782449717089424290751642343571456 2674738493319162273992505011732480 2646258603606371224294813847257088 -837127410145721097619307183132901376 436192392127976075172952213028864 4704447752095559818525443430023168 -74357536974032400386331410924830720 9749279069267868782220441020268544 2491965760066570071944965602148352 -875614027131737924011850401258143744 1960497287775284957578478233845760 122004887240045678226033403232256 -219895478865764539339512767674580992 4425906765015232109386996627013632 5364703683622829501641139513458688 -863602111872391181178849164659785728 9508561590535939211125140284768256 2633270051173286354766993895194624 -431199654820674548180188839194656768 9901491201405882369355429804244992 1807954226611294912622349185449984 -85527060210750023326884160734232576 1210670342253029187083046993526784 7450785926840559673476266973986816 -924833825833646048845665377026310144 3377857599841608607136351340462080 6923473219154545793852749280968704 -172099925195034126186439691510743040 9191849159046025206224617792864256 9348208958332117555194830713257984 -232775793265461822225547169091289088 4068848323863983042694221704200192 3739604997734702534024596505493504 -305172322068508311842220487903019008 6459997643873274079939610584023040 3008776353299363699795636070121472 -9453489730356507779683728668753920 9269721671352083425399730090278912 7082501240250536496799308006293504 -95818070842376104138616476912320512 7850535557478083457954205375922176 6398258133208568047770884397596672 -929900949199075544718711103758008320 390103080981142422682480037330944 5323678207169689312511605017149440 -693411803842652083011401968749903872 6564902543682857938616237036666880 1120618348270757561104055071145984 -730124143420758145274522216117043200 6342044537535965438329285462982656 9527554446737155744105710099628032 -467292955930057736423265285380767744 8439544790976123024199762290147328 5390377069921694255359706104070144 -518996966896639007411306459878653952 9788920868409331146626022737182720 8865750199241902982892749630472192 -494211586313841772590336448147750912 1578118116690959651535404119621632 8144123740363792651531431687749632 -124756833964704567975542060532891648 7315852663137019701065259434377216 2936838634037840634588064055820288 -436593913143470477485983451374944256 6947517053898512587548917667725312 9665871298057461488139989675933696 -86369568474215795559629188224778240 1045685123893958575996885645918208 6606030407381579148900822866198528 -404366637050771490934781206106996736 3646705024404051868229033988718592 410994193980204513896963067871232 -852209454838470523717829684988215296 9154074329085338083970624717324288 4797671149542399421597480365588480 -294589946959464451743562519076143104 3137788981819764364341057320648704 4449531964827189883934770232033280 -953141348041745898005719524373954560 9242256355969048279072682025156608 4707936944449105810721858731900928 -75936054992426918510308018775654400 6014778837161281489282984866480128 9295938414977826599731302139691008 -850259404978961367388014940616916992 7135923994788211888760307350241280 6609582634034768447445483170824192 -33356210892330777133036138125066240 7380563271377991489832058714324992 7720020087700068513416529202642944 -618735406237743947993283252082180096 3706824539290493254137137151868928 4679535729792081300211269990612992 -110708228919294439467854557205233664 1607617270357995556159276112150528 8908315774537779833854982986137600 -551800561946682081067701198393442304 1862591542044241009501263055814656 9942493929742400813063378091114496 -789271951166325470219621757072965632 8730831306868343405185813882863616 6567069926400016870927090420023296 -192521265158517716126485599127339008 3059065792392891801800161817001984 2168481861267919680287903785680896 -426013912546880487627012698449903616 8629393102997424760463787781259264 5195861595963415167066019964387328 -816916985744020868098090067216564224 7062015939765076810981288544567296 303803888108370100188917767602176 -5443448422236836890152570690994176 6717190733641874787484833536802816 4503544240646480578547860199440384 -72509277228134094163265770078863360 8196120558766420850759244791676928 5830541580850360960015053721960448 -511961634237211578410425858077491200 3667545481874425290881972521926656 3611959054908820421905960734294016 -420159266050107427144460484074274816 6816962301848022700687905578287104 2923343003975957501997151422513152 -354439997689895173473204004576034816 3938159137033010529832723363659776 3353017659554308828649986533097472 -802354912031475263048134735559655424 8024970602518391458911282159157248 8300650893842117008682515162988544 -757878062219734531536561696128630784 3335534945365133080768649357164544 4349569757020186403889606297649152 -86520166669326461606625681545887744 9642618883888951503067011346333696 9264607509609728235026752978550784 -280839466491477711016889668681596928 9183270008333773603864625794777088 1069952396378285685293243091124224 -34573839298391594367669058614067200 9793205986726136230518572418334720 8530557007284081052745051878195200 -435968747609197263208451348933640192 2181730197156288823107677361012736 618983721164707640127381735211008 -90879205531614561970575445741010944 1043223833296266172092128033767424 3103776648487923961648659833028608 -208133871534916646987366855937622016 7350633001206201775763348023934976 6640809348491556163299408739303424 -444924455118325371000735372404588544 2366199386214047834196154414792704 1141709411050390983801679422423040 -20075889020826682003499164672983040 3758715068368585636015886502461440 4455748606304086678971196303736832 -742052808928775316083202259100368896 2714452868723051770763938453520384 499703033273499920210215246495744 -976160172228870676050817297739153408 7032594319104744908682052438589440 581337696862113766262371300409344 -102571549044623033771069228143607808 8874975482918658828637318439501824 8473247521864113649545715401097216 -355911936999273800081145174543040512 9238755627645486240611228773777408 5185745775764010881571222907256832 -913520749278963984281016912102555648 3402168968547565320250617252282368 7282054440499558905563420393734144 -164407131967491251666054179278815232 9510646406723831945301186154856448 1779943704137487308831548992651264 -140704020423461865377755457663270912 4264192554209339595816452656988160 3820492548833874386896837064785920 -376370489413134931960243221484797952 5444219504743481818755460730191872 592549523424523926920698527744000 -528488846506024968282244640300597248 9004325392564319264861355509809152 6973489946520180426698183648739328 -869225731958475815505732376819924992 5726760039209369761774611833290752 7447627775628001086586591574491136 -944593046209288176682221066755506176 1491142214003860013818009473777664 8205061204749019727837086806441984 -689683994389366564246277246098079744 7196146788715767372867799720394752 5959534322637603433743943592837120 -150921121102752011936790460091072512 4981633784449512206887955256573952 4024866099641681646011018343612416 -364889556945599646133061266184339456 8982951770585076668621400209096704 8266612688547006651346348561924096 -696376718021929009436439129062637568 8553893857664437148973725181280256 6375730367398936216659645624745984 -287527167971893940323188931840442368 9721409135623288079757079251779584 5617905989736346637890683068743680 -287687663405181412796082100677640192 4298148225259496370585808482074624 678551122702824119805437651451904 -739233161785126383410318816491601920 5091874110154497243630534286901248 6598049696686196194465217037467648 -24226932157870605165100217759956992 1293241586650976861525893762252800 9344069540593601860417434964459520 -951428951892048621733758059916820480 1691637249606406711832262729531392 3275803112378484000126898679054336 -56061776714761007531580337338449920 2859323965020716091794244683956224 9470061527377993611079570153275392 -718815909441888268723062093595541504 9450101611662795825608009193619456 5364868901012694254858628478533632 -824364708202031160410416405068906496 8575368029335016447939837675175936 9352579263465368291276035719168000 -551233988411515720935667212144869376 8940971003975235933430648072568832 736763934779533240362996473004032 -703390093153646431670300498030755840 8839265665295818164187410494128128 8767253639676025279046674708168704 -487858396830403052513965873620320256 336203104291793925579097589678080 5791802649456120424367624946712576 -604695653947919870781487994808303616 9639672792503926441920408907153408 1771117899345509791339718427803648 -19437385622883990675658882276130816 4478311799853622931409483977457664 1243035942071304144411685050908672 -748769837146102566574206111824478208 8620371097103251200244488236695552 1850325123537058430802857922920448 -74413694029872033495265132933021696 8220991854291836820635111103922176 1171719786969682473124533771436032 -971613899320071112841152512103809024 7080759219142866652518557279059968 3345197780529040270103112272838656 -605696219491785670186968318704877568 8840572201045247488426453627830272 3547092089705419638852427276353536 -166245017846380321311452078643609600 9452426871022055185467382591127552 4048450274875666307638768422617088 -933031379278846314921448704334364672 2513929893424123084083532883034112 3161672534395272329035247920349184 -709891640500627793311707685388812288 3818237451053438686913312126402560 5187798395517047881582480266887168 -376458491879770974091548422943277056 9424183580709497586825813416738816 2806613071760239735174710842884096 -694477934791927462895896636887662592 7755166699652020417509364772896768 3565528084626002926266020408590336 -423025589819310268310463115757092864 6825408150671619230936497678974976 7194365700252420083379354229276672 -234284187309643711213055357954818048 8957123204709573961416539667169280 6748214925577296281229871529590784 -153238123534516191289285282730344448 4172569872168868382285535461244928 4078083935444852777039964338651136 -478915667727340062737613140854308864 7879247977141734752449319632109568 4069382285075623660459153176920064 -418095998677232883095007592536080384 3391540650408951220132709522210816 390184471572835068158795067686912 -681685408477501548102406258183634944 4387607987080840299760751032139776 8441080832579136198195614779965440 -988459528741682207180632779399364608 2269821471065598673595290133463040 5129718295833999004535695568011264 -239436678692182762783588551640481792 964390205264787262832183508729856 4005512635465026401929078354477056 -874632786655931237103490038012837888 6187548316464207015738461116170240 783834338977079074140913382981632 -75603769831915688616537874470273024 3432473129626922178822835800113152 2682121091029488195639103130173440 -274674088278982448149531562763878400 7561158108324414712735967974785024 9376237936847348113735121050271744 -592975240572080067227184179049398272 1906555558874451159543422067408896 6912044420514287427367226121912320 -873353586608865861269537901527433216 5620030832696490725594355852115968 9004688823534085208710362119012352 -695866853606447227349084136536014848 6772909242064590267070212959371264 4613321657065968785932170735648768 -421035026584831917972415145159163904 9862941818162231568490814922293248 5192886370629955159103193393135616 -36408902261525156319909642005118976 6706624040634050944376072474460160 5322557142412447276577416256946176 -365857583003528350463899720440872960 131800795561957243845993652289536 3448309061151951751469697956052992 -86776237905500277609104454193250304 1235853868218494693436805412290560 194292003934604551119692854460416 -335531694070014494288410082319269888 1115096180352826919621710789476352 2238019316410305598879088167092224 -450909241618797978075933707966873600 5087094340526233530235258214023168 917787808287949384958637156335616 -971316466362716813259114285071597568 1293952491564010382927624123973632 2823716184640550274583295661441024 -233188136753788135418068125037363200 7923036892325423424784817291526144 8884457303327599850523591486472192 -880887827537514667391151699402948608 5057905228293884874152273030152192 9328319382327604374179656899756032 -928321899656633340087500615719059456 1963062717081292977360235730567168 735198983302120337828514627584000 -667427030348750359623200361280438272 8754409209833740779030682093486080 440168961062060459575352894685184 -743340007095068769683494682882998272 8573885810153092851853364243202048 7996030155239271790698859063148544 -920622336973994563582946116561272832 902929374691826708027975982383104 399736234143172263000270507606016 -281569890525189659615464547548135424 556154755735030889581459594543104 4010839203985406268282372339269632 -268038887307285058386591336951185408 6624583713431790407513875278725120 3607669196368734869801455518220288 -416675954137257471498660168773664768 3755129394168878107411953886429184 1125622240227138051566569145761792 -343818143418574342127467930197164032 9756664901335654379482881902772224 6772815111937598094427736814649344 -556926157075046886481734152168144896 2666887814818245923884106474586112 9453017456126236768229661993861120 -947953959220861171234908579370631168 1532457986349461931992148466466816 1881174221534982498913724454141952 -691921898635416246173734935958913024 55147288178739618814133060763648 4020440077829472279043287669538816 -196645863974828378328497201596071936 6622544451784965668051570227412992 2802809588942560836236528551198720 -681437955060168954648908980736229376 169626514438598127171831007805440 2448335148306168715239449404899328 -153475102184304162581749028710514688 26795143353889345102184865333248 5820624410169283483201505912160256 -11205542933725195691837755028930560 153977059420502176712266503684096 8579097173666097426342642819530752 -947575730615238447639311768944115712 9599826330986315576763709527162880 3224066659217111138949551234220032 -269023607208949739908264597552889856 108707911353104903922271842729984 5389206301343315280608860091449344 -157126456486360431932424608335003648 7040737611484765058136319639683072 9489892252095463182077706220077056 -648077816514018481878281654074605568 7352214729383971985908525665615872 6307306769903916819091581315317760 -969310510334286186342999833144459264 9792767468113384044232494754562048 8080084707216996607797182207098880 -893936957992165655956340864656080896 6126373171989919155607992092590080 6926461658350875267281825174650880 -126140265503471396653120979222921216 1451483721045148076905848400510976 6201571834967888836056818600902656 -810624213003110300237609257071017984 7891696102700668912051848046706688 637315743143195393558226290081792 -371901850479300831521229151938805760 1014749250330659895651570351603712 7042568739958299631545070997471232 -816679842393004388256924324516069376 5564020639131135967501872927866880 4939796405087936465816018829180928 -961113165445499602442478202887602176 1261363932989559192781703302086656 1180977724542598687277427925712896 -668507230047325579095024309029044224 9602563613767532452127603333005312 7857974989341137660398646576807936 -200190674533158950236089794884009984 1324924735417524754994348498616320 5488431835075801257777813761556480 -877347723384234310619523513206177792 6718173506033652111507914353541120 3690042509568640787530571667472384 -723549897615655428222072210048679936 9369274130678015157236284230991872 3026845001357375606500537107742720 -512956054470541718397870461014769664 6726631179469937675456495254241280 7705506160809546268512013877510144 -116566355451797709156464771496673280 3761979062205811887689041843322880 2797203554389104421128832272039936 -48916796903399348849448329009954816 855917256861620380889799028899840 1268825492794123574691346081906688 -745486048825767541262953129548185600 3762639993125501204736377746358272 9641426679665843582966442967957504 -96693395393833049614162036132937728 8387440175778941904468970552950784 1116065373616764726852877302104064 -447277021768436507708615886892957696 2196170922952661756029246103355392 9220782723038684894781232621027328 -563466987752861685863845094813073408 4731057103685259033606095166767104 2977464967795253417029261225623552 -845035040169124380896577031847804928 7930597916631866466270980056547328 311961877245984543801749371092992 -897127918600229863446271727396454400 2589376106933963667405938742001664 1143112141607510788063426087223296 -673495334047515696211500059781496832 3897113351722139478345608163491840 3971092168580532408582815742951424 -876039798809434365633260089316999168 5512611263515576861068823436984320 9213938218953807482343979273420800 -272007658599929124349465847710875648 4112985558844290457824756880113664 135588984574004888844893872455680 -256993639095924600958295749003575296 1787327496099867341549723535278080 9543775934121048289885376932216832 -219435941493070240247143136797655040 5485646957648113417229298162466816 9661015042378791794112359567458304 -877843074787125970476394088597815296 2655391094203321449111047932739584 370795060834739743752948920877056 -720175897162135447799571365949865984 3802020037775532411011251709149184 7309117957562959551901438085955584 -531907971343460693075277008775151616 8856834120459705888920055079501824 2492185370902057545000511879512064 -329787020292557631373069649021239296 5949213708028361029601692236120064 3463869083376567614180489951182848 -158868793712826353042029752954650624 4942561420357759867190280626110464 7319934654175396974534961676681216 -319451392715543731992032395392974848 1416740384202731759176139606589440 3174869091020368158713114999652352 -777616503891402773728579357539041280 8780367534679088089576540374827008 4963232815062934439754704120446976 -573118722090929365166562959366815744 5932480108044891329440347769012224 5947031946428178130254794407804928 -946561682436399422851897424053534720 8117167272542756949577766954598400 5466858416872554234762602097934336 -246952952182710925913975549711089664 6562350071881361894737536266272768 9888690399562483042586530053881856 -247294936455143581693024415988580352 3458105741601342991209131375853568 468512438853398580374758171344896 -902875931637448123311275843080159232 9537691501478339812657252221845504 1823731844141282112031056419880960 -654886205472860022524111541736833024 2951023082512799175227712743669760 9825015960957390460532292826693632 -899252857599836158916500487044857856 6975917031257727548673704887058432 742662905587292438678596585783296 -983902334346976325780926097579311104 1191463998584959780662339935666176 602106706305272385091815807647744 -238248741855976008349323467430035456 3860407752000015057456691270385664 1228177172286128816534366049009664 -347136995258487500607940305270865920 9906831031335511941147432392327168 1932149542484036033141731435216896 -364527038726224306422816905887744000 9992131827926650235814706442928128 4932058312755433513717329670701056 -962429458332225874345798025030402048 4799635251424565656390234414252032 2229313725572980464330451611287552 -976995522134361064532474674230067200 5832769629281732782250607803105280 2654281797199163809048830568038400 -237489103025918848143078266503168000 5441191209197730966777779078561792 1417941121821460652537946644152320 -257667217358411733078624559268102144 9244612827771295713134634206232576 369457553582627263158709466955776 -516105175203912586355072489263988736 6787600272317898908912595306020864 7407003377570007549737303300636672 -256152066744363500330119727648079872 8492610158081967587088056551735296 8429185749104990673028364357337088 -286240139721908344391419168909426688 3974902921472519778235524212326400 2194560389306479721564865384415232 -263408405580123382316943583123341312 8284029738836134088048530193121280 2489222769936470444521051945697280 -147623649566116884306783944390475776 9598898257549100200818910739562496 4466163687229376789006343150239744 -921128110848964041638093553913561088 7881580440558457485844674737340416 7642546236053143062038829791707136 -58985001455339991934176255706923008 4628715014342721877317672484470784 6236447704623895539428505600131072 -810283170932729184488795864622432256 4636150324553406111147534168621056 7722665153082621361713655628955648 -108280817480010566696690926875574272 1945680073755258255498010863599616 3218492137958963774518980207706112 -883004852453447205309375403008196608 2235927237857133057747024437313536 3367427329516675903986086099025920 -305984764124474084044579151389130752 791779729390957941074359721394176 7410756075877719294786374907985920 -717625674763566986236122394775257088 5694762764140707400638880498581504 9857517742362267125006260880015360 -856887063744623240902674159398551552 3166284616694664101138834894356480 6018763947200013925438063690907648 -443093075082644002828449540984537088 7984090746812843768131179453087744 1094152336382940361981186321416192 -370825108126523146057006694409437184 4739631762823561875862577425154048 1916065943811497790864823045586944 -446457064961834438537793285027528704 9250092190416613993441642453925888 4476492090734465772818175231000576 -787665554976531812872952558865350656 4499653101073347109964565538930688 9912038187260624220584730741964800 -431543736033375298096759864503042048 7836114247139709693945068140888064 2922224699248609166546389304344576 -28792237382502182522652291420389376 7300339699871073912543274640343040 4108683296957957525097590112124928 -725217332542402109697679504707682304 5647652862753883362814463485935616 9106474816014445642198716872916992 -127877081259026116432472407487283200 7133232820706327026929797234163712 6847456242861032455503100734603264 -655241843516317674030273231111323648 7502976657590647507469965377667072 8805058854696810996932880323575808 -227240690144819666850636386661302272 6638550812198296025267462935150592 3809769899465319528304228192747520 -126459237945317249610107726531133440 1864956496643314153173146117603328 907136623812873553382163114622976 -432129413355217124349205504661127168 6750435776056032471444131684548608 6804629055868850834214825435856896 -673101672162635359143340354129887232 2987887314138237781238522126008320 3546217682080314506503659456561152 -263365852149976905797081326992490496 5407703658931505899796728727470080 6867547114850542537914203596914688 -75086083808596431569103353102204928 4887790127605639237318931159973888 3486530774302380962923173673697280 -828002785520843926384523360314851328 3389196549668636245282412942065664 9687694828771934940672812405227520 -874283408478906025106489151355617280 1360367286198174659414075268661248 7765543064672747593080414192795648 -63112356482029027965566464278134784 1806141153577482144626063934750720 1891091894171331843877052943958016 -399553027912460401644903661010157568 8910858188607370119361375592513536 5529223198933980848269947964489728 -985301432882001444193649562872709120 3308008035531426288285658466222080 3471767769491293482732307877986304 -500908494327173571620699735167336448 6075286542007615943043413583069184 8726187620681504886505784215601152 -18446247443705005855017396202373120 2725557484933491265799261614243840 9502797363070010982006388527464448 -29405459638210615908655048438054912 2369776560750661971233001525215232 3907202164014037572696976593518592 -381856284988835938694565364154499072 711352548569017626241427616825344 8901553686478018756136133753569280 -347566266452227100432361014853369856 7731369133648141690556831183667200 687006149672444202725357178060800 -427627778557057693669508110014742528 3883213453401616387073721933758464 7302576284750480867027787423154176 -405721729899739604248369171714277376 7592555035304489885225998071365632 3188362272666119372428742758498304 -671082732513060597132867274138451968 9290031530949557994110847998230528 9550766370567281135201708444483584 -773375147415702517868142562048475136 2468561985517266168056639708463104 2122294382829035786480044631654400 -408305050298496254674948233352970240 2205320405166770964912271337193472 1035823382853366800187604735098880 -853784322599891125925270112725630976 3649338496956979420747086633631744 1325791770166534290537796322983936 -96672943027372977363543366821740544 7798883030864256752485016209981440 5585565230343094455847085496336384 -906190734352545514376048837587369984 9323399773026497469672617882419200 1489082337990366913140155912028160 -422809818186613076189737050892664832 5102663703610678868523908899799040 287465160268305510221828465885184 -394729023597211266988793177802014720 740872873813399781657834881548288 688972581750901793895663695560704 -257277700604322950558855077136695296 8352310351288786239622981091328000 5671337451144887137079662269693952 -828855062056679805491073581236355072 3528965634264250290678059514200064 6197640594896631982391101149413376 -59105742304300290625096006823313408 9642462723372859183915099255472128 8067353697030838690650686872354816 -448497588111345300210571435590025216 1220134877901512715233403479261184 3787150608553806201278393936248832 -108234728958659233507766932932132864 3512832991783041854634531361914880 4773291619369685927898512644636672 -939481236738022190474715967969558528 594984288151303553593853308043264 5074631874473421525286892907528192 -167893105625007282110275415837769728 9164716864997366538775847736705024 7538213127513068293409780357136384 -35905580034544974779499837078372352 3084785998158335957410369182367744 3528200827099427130067090283692032 -722179736465049450017044186680786944 9018466671949910503241347674144768 8885245603108821167760437923545088 -387385427895291706800751070779801600 5520233160744007966905095071727616 6576486752234603318613188901076992 -221489209796841106640788659623690240 6178885110223130628227556576329728 9934817947629695474700599324311552 -242155479144016473300683206044942336 7023698569098958788629556348583936 2391678365919204272380416461111296 -198905553377208832862086383664103424 8627732397307365535952388407427072 6720495098149433130930029633470464 -585999746355681018518633058964340736 4157446617094271840521129488809984 7909447732392980582751511917887488 -738458738515763799926280271563849728 1332829902612814296228653153910784 8602885733394996677037898099326976 -972858135528349579381549909447540736 3846708294653896954757517108314112 3685189634094974486445307845410816 -12961160978509948396459257774473216 778937858475618555709568751501312 6435302395597105161267673921748992 -684693977004993897232183865135595520 2752370722115246496094229459107840 5566491135502554934791561006809088 -894517763292920593432327073694744576 9088142468608343448881424423190528 6380549667949007156947455712428032 -611050844686170233480093944046944256 9637233723492295351791949977747456 5252114335769979394645196521078784 -500955729466978647689283439903637504 6914611349581289651151913214803968 2897140048290029076435593930473472 -695629768070912758855823283674152960 8381771240407743020040632351588352 7975477757109614686877298930483200 -528492908821006447334349100590039040 6199363934284641722594629888507904 889510817122932675640520406466560 -40629360422535443291818203650457600 982484146552514236022694728433664 4178230283301684735190529006895104 -8707138008765081028844987160199168 673554575994835494858700152111104 6922945163342324660835351827316736 -917715916332777438358815591970635776 4528749285139784350622526258282496 1820504762386899752244248305467392 -652327671197843517332200301902430208 1671780385805870044415074261532672 767843657709013171537691069644800 -861853380598606771888171071106449408 1737757503024019515662913610186752 3342594775919323227661842807521280 -166404014873760346001361105718345728 5881631993243564160725696208961536 1401844832764203252677622540271616 -898565026406508080151324779322802176 286478276985600067552876980862976 3276063893639487150507487397937152 -434894158632166324105226654220025856 6106203738507867294700038254493696 993588980732167260658824070037504 -500908095154395705058884351982305280 6165686392220374944865534936612864 8921554398040537481521137897701376 -931591133259329178064557362808619008 1277639583484223813107223858511872 490821224764093940426143875203072 -849920517519654314241955659830525952 5395347127543713356966188764102656 3782541415265583876797226350018560 -768727071508062241957279112510832640 6536532265191785054103921332584448 9523954511874267260921662733811712 -102862244142291687252735227959705600 1413169666171390425483263164284928 3523120003840988769569487460499456 -105229870958694529399560839333150720 6602052556655714954787427224387584 9582403534959162436845438161125376 -452474684310343490523099412834549760 26480707042213639768218336755712 4929180738944899725046961535975424 -660397570337815530029432435696992256 7963409019546943972728931526639616 5179031836508987093699647552618496 -809915124342423966258255839327420416 3694587442020845873264517296685056 8406432993591014045141589725020160 -263474205312405872098028755011764224 1908468837857508730442876306063360 168321889813296566696631387291648 -829051716567859186676499616555335680 9797672652433297960862296490115072 832827189542267388083837796876288 -770026515670110198173309104228925440 8403316012803973441419965980737536 2081009153600727340838374988578816 -928063688844750851527126852214718464 9631573146593259205223081276604416 1899446007632859850640930560278528 -400689950691017405817633266179506176 9045607084978641236252420804182016 3398888765982098293949527037575168 -12008403498610090735064670088986624 2962913181614961649188438294921216 9399905938879503081664194115796992 -973029703653670677626335809457094656 7047781225601688072486079111888896 6650235189758357934907294167859200 -131393086928883696884994135558193152 4952572741084506745905160820621312 7957892806179014698786341460639744 -118027220994075190686667406728757248 7807485952074142728997507090612224 7552528612093036021754693089755136 -55715751597535137160137389058818048 9275912299674778459163266436300800 5953279287631349173288918677716992 -963881734120933548752837262564130816 392561496381515731400115175292928 7237779121965759992887244465635328 -902500303896065410912483039000920064 1882794928080494245302228410695680 6295500121417531874080520474198016 -432597864058987458712827855787524096 8330903816002615661649053930749952 9873594235278503453488618741432320 -916612745449180199407199083951030272 320809777695156887002211336323072 2967554935154793640112398350155776 -991060743422776111813138558031495168 5523551878111084730152039288406016 1923426398162259808408904845492224 -125455730789787613919217268404781056 4214334914760110545592548107223040 4096819594745430279789623698784256 -587125336665391706788458475609391104 371625954024185544408785892671488 4020475425738679233143862124871680 -699492309216791591449731423528812544 2754058758088017380794556043231232 3994643755935204969514922615504896 -943241636897644439459530826686922752 2707357381698306758919372671025152 1345138826988497317031293157900288 -589929225267337045495354720610418688 9568471219182160102160691397394432 189939698985669274764574703222784 -410231121285299114534644309880209408 3070572346665680619714846484594688 8013411962025178880483199834652672 -864010036187879336220186829194788864 8588254437067024839367116611125248 602090947329311039713423271133184 -114497540387940208312650033474306048 3139943462287818495097564666265600 1649311830443425574283731194085376 -69213314992760232801544688310943744 9899232394940414101094618338689024 4882118765341187738439489467449344 -372497035831504013486860805081137152 4937589359415277806412533277392896 4425436926501091947419014996688896 -768491827436254103244139566217560064 4411048968460485077490172812066816 6258332137492258683425851562786816 -850139153628479902537983387118862336 7215085435708042954576511050448896 4364565793737406573488428168511488 -958600974253568287959515814084739072 9242047343209879942543413717499904 3971728882302723234137335075438592 -564275842422155317819039434531667968 6183995472688319589649195844239360 867772067966595850487192178655232 -160315734811911942847181267666993152 7097321291078739919371580269920256 8917772384600115397857207277060096 -439771539867616726600679394790866944 2049682397512702243692384536756224 5581709882326619340868843695243264 -825334299836440226104778309983272960 7286165956930834409909229105184768 2697716180229663230009513227583488 -957238067611589800222100327520796672 2209300808714751955701428538834944 6318202947432130955058392189632512 -107547491244872341146939492178853888 3930193066235619789772252879257600 5095874632218700739617890190229504 -563262666979983173904170056698298368 1034864092316551871688388481384448 2800537389034152668179919542419456 -686170971281673609260715356832399360 2264404723647762304779436089671680 8909055374408410254417742744518656 -435731949610811189580645084400975872 6694122921641112419531581051371520 8438955110033111634173218168766464 -514797461640598032077829168972169216 2763596198478952749074854143066112 5202498016025585305048256346062848 -211672950220723081256103690056499200 5282136166380378243875347930021888 9043677307176459260619566700560384 -844495610244911293837793458401574912 5992981032562540038674930762514432 8871707903116865805188407387750400 -860759555499213867273868101382307840 3471455961175819211868850461081600 7301148371474459047941159270744064 -395300364722789801017224189672685568 3655022328584523973888486651461632 2360222090353425532420970847928320 -237007307253524134644739765599993856 8300060658740840446914823563771904 799129749983408243703267656204288 -512519901415944733364264321807286272 9201715181400380443949546352934912 6250132795296644005199506273468416 -770545280836374389361048323874619392 8624683937147226040239076734402560 1959660094689547633447057708023808 -360061960493794917118876854786195456 3464966046103737994477438731550720 6463174945028235616210254739537920 -165318997134504996975354186993500160 1664759594979654043785596382478336 1589875497294635293392172373508096 -682181851443372395609653175019110400 7516713294139402320375127778263040 9640429626536221254295598586134528 -882398630144632354142414123005116416 9657472280910097536969404699377664 6654258983417332619507941433671680 -328543613880569000276962398292672512 4502027223057006171708318396973056 855729420336411070541597358686208 -156428845675696047044796005155340288 7162097521778206367938258988433408 6058967386960899632565999108096 -919274439743104022701594446456160256 4537527238926933989827294737203200 6211275399962273597508437141356544 -542270268517926359775024239219834880 4003249914554965645322104757813248 6901817073312421807432496341581824 -640261347565610850697787650013659136 5253588202740551356431166989139968 5257813794339793657656019376930816 -45671509663191487824012868149313536 617787086727882561137376342573056 1668610845919050347718150878920704 -487184683921834456328159773878910976 2734710038791255092082726802554880 9467239766943378126102209874624512 -29100776617176186508599393026834432 6418687724724097766460886509158400 2762660297756749859917037809172480 -529908197580731742398370113046708224 8727693315613565010098879415189504 2351086517351381902683334571458560 -958154555757971710386006834760646656 5273421788841490246641880919965696 2191743969351578897381800955346944 -446662430377563391882918855631175680 5969629012701218002129243001061376 1348881346292053049793434504658944 -510339556946185680813437711397421056 678739976952430112961882960691200 5170458563568450235991329622458368 -982605242777581447007573943942905856 9875248779210792044757566837751808 7395722110801474093079870891360256 -469635726242527553745707319741644800 9042089139359679893862306891694080 924669938275330795476334099300352 -220684914001286593745932798511808512 5429184772196367376446208675414016 9757439344107806015239091545702400 -727100773733655193583269017108348928 6599228289497149388132489009037312 3689670060114246225463186523422720 -936427751612895767621012885849767936 7234257799194207398929851247230976 2900844203296129835584679252590592 -875943425270864392892324379438874624 1307670828680325754737098670211072 2908635048122335261496898549186560 -934631154154727178038135135854919680 3656343798979442206227037637574656 5556926291103038757071301336104960 -805476033747403536956665397950545920 9437389966335845272487151408250880 247247337694153737653137941987328 -401412791728452716795079462756548608 9759024504693575804221763788734464 6368272049660858300626908940861440 -210771040717240515887302939932360704 4845441375487651995293709791920128 9534979772941807980500316407726080 -467359066964488741787131064019320832 3367164449842446432185552612622336 6025360079474961580249820742811648 -903377218719394296445306859945984000 8381298278046952919468210906988544 7674816506835756510306686625382400 -352070306893055204948489094431768576 3732994217852739765686718825496576 1573882002189482617391840690700288 -152462497516157513689296748454871040 161702163568375316673831001653248 9977009756342671323443923871858688 -419059709078190200423861018085556224 1779783636885827129866716964716544 6599142312082758303898349850329088 -786997734341444937101093610123689984 8789784131783021211334553907494912 799686043291921641638157671727104 -411406063460331503571695062457778176 6408814889756740133416849364746240 1462895919512705267007315865763840 -986000849725906115896396145638768640 798961723413070501283517217898496 2340223636865528351139236514103296 -448013862539399453666023561003794432 9206930032576786007017507184967680 2947368364208040518963010599911424 -339365456402815623733568854558769152 950126814614266338266841792643072 8939572198624149278533470761517056 -175246071341327081681403697027874816 8726644377366467506746862373699584 2960270985324902172176379623243776 -347349159879523689729084603519467520 2189482857265110286197141157183488 5107820736642490796674826136190976 -394360945266818901441556064950550528 9038236181451517382035552295976960 4904149400743113869084026952744960 -304395415250809990264612686294679552 9898444475842212956941049726500864 7683069002126772794070953027960832 -935011983014718270086857135065399296 7235954781529935792537581024968704 8169907057207167168723528431173632 -991503820203539694583689890681061376 1132855104694739659756673808990208 8864435254421513351299920004382720 -459017583718478704373312595286818816 1576088722434528278060759106191360 4624994890100471592298571018272768 -269268750669070184827594269226172416 3475508075214197499370808625070080 9402901982734993907432138085498880 -859883124044476578071479892259635200 3650571421853323300692778964484096 1296702668885307431312621773520896 -973923922200062238379227566365999104 1657340184935860367889862481674240 2119123139025861735033631978553344 -675094522809069945122791232685211648 7663396654558459687953832783904768 7374683690004729227843919528591360 -83937993354219080133735916217827328 7436331234972515082429411111206912 7142898308441726862346857002041344 -831797781316430206315166425025609728 8839233838782545833197570634022912 9474811935775381423783308196577280 -73271833439659001141707732267565056 6665409445863920626381024816791552 2177051869170878251527175109869568 -913136045655412172502330619788787712 2724805665953298691944552951971840 9113084456899760609122600362180608 -48287254221856736853358249179611136 8384266133556732642534942132142080 3244523923309228298603807738167296 -344458281553445824470470130418057216 2590321394614165629443558906789888 1537664885916217298327006523424768 -192107531834970112463392219584266240 8855767510508319759305065191440384 2557687686756960225194264592646144 -599499707883683813203335660252954624 5553745488470822709252540342468608 252587856868153519078240350633984 -880944956545616842280777309187211264 1354012323123908354817989221023744 9209329292785380570255838064672768 -430656270686970207479313316496539648 8567260029608798384080443454521344 9692988083383689999410752768704512 -114968218842984885647131550832132096 5380463560379269683311737844006912 4059596144394730512139943147470848 -127412397213326147261593322459758592 4852092851467561583520452274290688 6093171588756013556935320066326528 -105609709926373821686555898074365952 1057531848303178630825238583050240 2120576965706710042447066867695616 -693299113248127348729014545601789952 5480770893462784383210799797108736 3281543027554154410729419910938624 -400280641290191303736168340212678656 4085961213542553863877167547416576 1415640504836688632312792245862400 -487054316956476646419372128235159552 9921839750728424622183794721423360 3751036172669418827770667680661504 -687106342222700753099244392742387712 9147488781072858925019472569827328 44146758473622012726078013964288 -766147026728633763908030477209960448 3499430051999179810954544999825408 5232282125105369719074317743947776 -611099959624871236635328961159626752 5918577394439069092718581118926848 3474897793718370694637398272245760 -992397129828230369171520493136642048 5494033751029302727949779021594624 2309745416439335549394483251511296 -157315184188895943790446388243857408 9270345031624675054024204631408640 142599086731766867294943820382208 -295528093591182254325636529152589824 7565313654960472561993319545044992 8651493907687202638281929740255232 -594751552820088801641903662999535616 7116571849188277186264918986326016 5279435794233791447193149541187584 -10476234083315991457772216524996608 1741874095867627274476207229370368 9481872573793779784762745526681600 -559435140893290516813983448219779072 5155711933251821594710016945815552 2735670170524808842781289682567168 -329319203858569826147572124636676096 7228798060818862654822246304972800 1796202020721114137896001625653248 -356287314928805850816405694022942720 535729864605425883549007855222784 7762769069307438812874219896963072 -555307115716720786170535708001828864 2518758653053864494792498294554624 7932624965273956217495271682080768 -220382035023616596130973610003136512 513520124124448652908179792855040 5065013464011168647534428347695104 -998753542635529867366654465789657088 989289200994494549077035709366272 4529707481173918279268427938922496 -844410229342572216810621794697347072 5482756707266710823410811227078656 6179079562915005370529668592041984 -748690637594656890013984534753705984 5536057353591870832289369137610752 725451167474387775933412016128 -272742808808356784014905872429875200 1040523540980377707327532545605632 6516380534094140430312144182968320 -334906674221853121953163562599841792 8062586217185594138423307083448320 8766044669513998118280432390766592 -989109974182862715952226468068589568 9931196853399109306224364608290816 3004298345016106998182095334932480 -352830833479561214060294101916450816 3208586414259969029079487263801344 7015136476020710402823771513683968 -235025889061663389431043054454702080 351365382228099741896231987707904 4827085251479092297995249105502208 -832769996825530869747079209298165760 4965905158525202762345629442113536 6100888016713134814216954214088704 -190416765495465301505219868707782656 1115123452327716237667890737709056 5090892981767056342232333748797440 -306226612645213647247393689429868544 7337045714008748105822255573893120 5235607616696305638253924509024256 -533353496997125248624308261515952128 8316700793266397494872260741169152 7366508675517426813347059883573248 -157595975293045359453031511913136128 8728821418662047743601413210505216 3165886388921547115859075844276224 -622150407269900007773569511344570368 1419036488090676579564731337015296 6277534827730702984148358933774336 -278415678479223885562501391179579392 3684273394427687450629520316432384 5052402965579575118964724179402752 -619667110056815409569970748183805952 150691379685017591928854172139520 5838226277542959492903568360341504 -167172520099181686796738189697482752 6718646506783581992702268013543424 4513726811539588825965944801067008 -569504353277592134631125036386222080 9352378753421706064149692201041920 6651651164858463653760672859160576 -878188542160232500333587431962968064 9100722928930328379134655357517824 4672495534269303765268818233917440 -942577729826483997094006121079767040 3271604900212531062542739498336256 8468385409936605056526078787452928 -673322496467821706640064805752274944 1029801989166916134078513302994944 4443946423368148405593862697910272 -218528002775212375886885274129530880 5120853049108151610267580195930112 9922217589813115007261755532378112 -351882320041112529122668365173751808 5584974038877654397752291817947136 2631275389307561847788377389137920 -88453830007496510831947458937880576 7474895784644719105775201167605760 7943725989415004658004665170919424 -704572134186232034936829410327658496 4843978852697375350560624220307456 2226869118031097404259430360416256 -926715393821086024569317969492967424 7302704497861165127828424246689792 1665855906851595544309649373134848 -232755895578177554744300143489581056 1410725844570839445608442078691328 5318677379147938378570724475404288 -763436787660162310121792461158219776 5654651556318705056643370186702848 6816395586990847882720446529929216 -12967509325443978841673040836689920 1740885757317898428561474870837248 8418805993117816417077591835410432 -820573780546377831010723198790533120 7420281743858959509418803309051904 3106000176113443090823280597139456 -370272144651873536351914306192801792 7144066151223993495871905823981568 4565934114834673672708591250833408 -668140921099943544721245707530403840 1597387879998308195079926887481344 9124170176473736738357537348255744 -168132436707188626143226823163510784 6884888537152268624643087457583104 3217924973349510391993107277152256 -843524111356207266244403909554601984 5548247115625813996611885259030528 5457663443081812004581926596771840 -940564422063705921646515116209864704 3538381721703885186370793262546944 8657904750154232631979944265646080 -903521569163170383272308499938279424 1453284403098352885813878720561152 3620676287726351726219574737108992 -606292623077962551056058828470616064 7738083782066212521003595390255104 2976915352013639502220551570587648 -571711887058688592867196926339055616 7766389987010362653170727248723968 4973930697732337545810751854215168 -174184334869498096786896772139057152 3911226109625379680913569039253504 9193324057554846797327514178945024 -162373521504116628300157002622959616 4055921792662759589707567543091200 7878889014774828774530631845543936 -553910172402641889613079235801382912 4547939291098335217663672634572800 4323575918499414074961555315752960 -395194630219973747416793630424170496 100973843976008896953557249425408 1888871961667617063524953439076352 -784040029130670999446888001772191744 9896443489504906705666679947395072 7969016886998032795568119035723776 -845562828007282296581290421303377920 9905976209591238834993878752296960 5383699373579810613738427241201664 -42831604604522149996993793428029440 2234605621614672837464206839119872 9394008804021788864800736441008128 -518580102259871234573393034217521152 1777102663330976143595437733969920 7514576256644986372257269847949312 -853228490509101566932062307159638016 4118378099826067122668756589871104 9022024229925577461994290583437312 -996376015965619211386353217227980800 4559089448035988607982549728231424 7722350643045075011933578452795392 -46131839411814180922563630286766080 9646578976975001285715519611076608 8184046147587396695627267601072128 -360550543516658507892073499876917248 654008798981085913619433248522240 9549732632481269335941414310117376 -305640084217152872390815489818886144 1281201161758683248248150076424192 8055789065202684301037669818826752 -193428392950525962937827170361278464 9404834486834541137163137222443008 3048978570454122725047278906638336 -88018531589257573114869573325160448 6299147974906291949130985718677504 1891276060400651248873661819518976 -587348318951531510898142556299722752 451532591652716587071852431540224 1697824095518200316297854339514368 -406568170132376372581584196035674112 5001423671878107763054124336152576 7452756927271250630025530316947456 -793015346180063115750356760437719040 7204748667625965220772778598203392 3281852261524633156953686688137216 -561554217979498363553698794503667712 4465568939031272162710960428023808 7832097266093738557585034066264064 -535123990577048105960703381972451328 780176129956502676236423575633920 7775399059975315683286238430756864 -551957533793990379461441623666196480 2451878789360744025161880404230144 2255645861495197163922967152820224 -625596850079544127112563674922876928 5522254408392664840564586273832960 9499700978179172152911971194241024 -897075639838090159460162434890727424 423060816263383818741616444702720 124856564512017580064604304703488 -40769142797741683920011002308984832 5728296731667611239082607809396736 6094633865949374093699560643756032 -864158695083671905658922518859218944 3374800501879860089827186654052352 2136668159881169754173068571312128 -149963415846233664128603171982409728 6806462199872505579206473955672064 4961438261034974988237981138026496 -803169404107580862738435665570037760 9227076160731537080005383445020672 5413944479216760829243286850895872 -420231260468125551526919675974778880 7328648425353027649357419017928704 9040510375367162958486363262943232 -915472911419042538398772713639378944 8551278890303511984039185587634176 2772633599532333434164166113886208 -719012319051359962590614888378269696 2514665109179203204870227326140416 2913860254830557147418883944087552 -145185776854389996169807565936394240 9719163424800850299731853537443840 7534673113864613983103133478289408 -299104437022833329644087351456038912 5157386787646040817658861675610112 7329040460688253084698513734893568 -938958125859639678482231454630674432 2113448025030623382484183267934208 8100656642076902269754667488509952 -219692875340688668996919389436510208 5789474120402669137959545122848768 3964145398522327975900023130947584 -882916423053697850136228719321153536 739068008747594267612280774459392 745152720719749316807165149708288 -135467159196147629141511109766807552 62837574000382466963959263002624 337933193328373897931811840851968 -340420488135049801010223252613627904 7224140007958653346292538542129152 7463004999350600112794734591737856 -501327915202864834582988472545443840 2088563208685188076231328775798784 2902110753714862034136123882602496 -838977488039957689297237305775357952 3801489419983954598428317933633536 9999528821386260024234347535007744 -349557826783972062688666536407728128 4864013255799126338808420526718976 6147313924397470984285458849071104 -74550055404574588461143358326177792 993242271207353467684435630489600 8543923041089926657823002643660800 -821175282810364190174527845027545088 2859373814689395595015920851877888 590282249580280214922757100535808 -568628487542061138755381206475341824 9030998034812019275853444845404160 7832809653901499177493291702681600 -711928303601423712980815499375935488 2097997902670400113545598342266880 297011221594585352646165604073472 -991363071556345446103890090268819456 3031804907602940841842564092919808 6198290301460065305399283960250368 -605374026486086605910304136018001920 2066026275490970903508972510117888 6492894239113734737444185185452032 -690147314980176684666138140684058624 2789338397099804316072522939367424 9091950980291975227005760796884992 -712207275482167074851645342607212544 7113580012920678655548955243315200 5513639002557621067689436041445376 -968957033801921606671027530847223808 6486451025288393368252998356041728 7985170974281210059851144315797504 -851044425851788459349839608620777472 6518485095824256089911086999928832 9691300078091033690338363902525440 -192839524510105958170368510313627648 6998246334838128210427237130829824 5767524270835375289456461449527296 -382750904858141031810262617498320896 492023185866781670450485331492864 2521080134658834047820953714425856 -853083725087050857605773095168114688 9044699618199067287146919119290368 6503489006904044922563907544940544 -649611316569047959280705190125109248 1869372588100697198349759264325632 8205614464803019730145349841453056 -825694925066753779518013688504123392 4004386357605148565321032077934592 3558402587119352903279336736423936 -746201087575418344873921536512229376 2958230039680400307223441541431296 7810683760137370995622117663309824 -911366411461731001060814094445051904 1079655210768066294025882852917248 4558632012868096403097981953245184 -289865453786152382769106480686694400 81176482317744413081527656644608 7279481440266919132749581036552192 -222585964553059507486085253829754880 7379706028845291781359832454397952 7175071567795205624726069710946304 -798469440795751980908419625598844928 7361529432040360106996759907008512 9044958508254618714072218939162624 -625593289843335015838495536834412544 7619949931146144689252441455067136 4418603557784534908286922443980800 -983377096922790797676624095888801792 117631714618500169246173455974400 8730601260670344447892777810788352 -427470246510558456908224115538657280 9578956965245746086004535616077824 2841835990182523726805838407401472 -942163352268191245529498383336603648 7269940834587781327407071623118848 6553264092189642584501392775315456 -588593699933064318610906728997322752 5677825755945165566378246060113920 4004063906719388212255428997808128 -890272334986888583626354548893810688 589118632856369868964645239259136 2480065290014541729833354948247552 -115769227674245137596473725836853248 1670053704601998421273368361697280 6018653037320250142081983631589376 -476022119071637453337527859795722240 6695669219026567219896127418531840 9395152713592616930649012025950208 -171198564545776226149558513725079552 9585676576512922969076652524437504 7324566799735604653948788967211008 -8367050255533321788415842868789248 5258043622568578941233061192269824 922500315954013591001227260329984 -739300750990603962126191002289963008 8975023077040857930302551373119488 8547723912777666562057864189313024 -42308813003374663677826892107350016 7417673908433824302866260868202496 3346439886623822149938228223803392 -994915918569074025125746303433703424 2202464807345379499745595373912064 5280703640258155393157954879356928 -540447895813837412449293679475032064 9283059436981518731167736755388416 5279304334400008089242263332323328 -698028712464463099262256254623416320 4809632108780980919527449718423552 7303572152785287526364949384265728 -208828905246341196735749692319596544 1351187837996128537986304445513728 1493835389802009506649349107482624 -358609693755241696383334121402793984 2864219541361006273374665958227968 8598234619076656828355718506610688 -399878530732645903853543405431816192 4599030500194311015473734433636352 5540307404933114438679291502788608 -356115249169659906852189225195929600 1195701684969099966391987164151808 1827813251789490569032563758727168 -369572374480251690090854208057114624 1281300452785318494433869243088896 4542976950250491009955043053928448 -531203152029489011511543102537990144 5882543359049681341110875636891648 583909232670490000739075889299456 -609423854888752110212149952351567872 6258000299648498681019692348342272 3356682725681855720470957225148416 -854603089077531059342309189056724992 1858796534314364344561274057654272 3799707800333432084293420488589312 -773973347680029428955759212178178048 2670829537798397384063534518763520 9206713851096885971424368528457728 -653269368100808070679469950542807040 5063296145190003498551753308110848 9147874003795083117962963309297664 -599877131388408427622349724807331840 567264386997570533467036672065536 9675911829510929215983233770979328 -286510065005498119452270499754672128 152202706791874028347370722295808 8306534334404568043432619611783168 -360545369083317594247722757487853568 9705833643065384147333221722357760 3895558786456657330177900523028480 -822093586650012797163376906629808128 1158743901950226237624681706291200 2164973565070138030169455654338560 -724590187993637418105813611428446208 3948980515560909681415157123645440 4496473897951495927408798703026176 -460720230305986921920230682334855168 1437068779672323579329084435464192 2162480199309843893009421600555008 -342462592041082549207777280394264576 163601682239323275215897842679808 6291647596395380533085401287491584 -63929144555049366619623525558779904 5713469459915680508012089185402880 7974897223632511120972639910232064 -843667398607211992514497073091969024 1666396289231779308559073217085440 6661507454908528437690869605203968 -654627491972332933146212279762550784 8696043678806176783435847482474496 2981336885304311673999107182034944 -937330237875614450790944097144143872 8739525565891015238289357528891392 9671177591452640667903241475850240 -762961623936774652210500432052617216 1855976574493064040061389844250624 5946892534984739963884786996477952 -968238554121842036668490114232483840 7440672028526721110603944230387712 3465655512319628411541726685036544 -394911242391595541628824928561135616 8203163304058901888080866520858624 7015220692659140188637394783698944 -227469810071344626127099328920027136 1814225057378453700289520591699968 5785524548614653742446679666196480 -780092007866857465811149424913547264 3523065014795544344307245047087104 7745940227828031572909255831846912 -461336574214888851605125860333453312 2692090050131075409719818377494528 7384851132858425762785018081443840 -215025665751485365823680870967410688 7049803236220584485173689589956608 3980044091122381736212682254581760 -567191048953321734171755631834300416 6100222164385894248845046322298880 4697419924582301448498055686914048 -271227981001682897013043231484542976 3160770581570657462921159434567680 7608024272270389328989834973282304 -62759275447626610634646665675407360 6571023926797552105965274250870784 322299511100090888279433941090304 -471853566254864984148946757003247616 9653063493259549679510342428786688 3183677115201441317645362663522304 -556413033150670025835194394766999552 2717710126725559223587115764809728 5489363552785403297682918232555520 -615950008317943878676080361497165824 6834632540948643383235917291454464 8178007074643615272075111427997696 -370777620414860099780221774260600832 9650117335857682403488957036756992 7274897170286831353882836499169280 -873330207200911521556433453921075200 7358465843840807169424205274939392 621386731499886477467236224204800 -245531162794857130922710543764553728 2943505563484774934026359723261952 6657679716504207231412672403603456 -592835662773535540459793020140650496 4611632925744000922861576061452288 8469719986735991699930049306165248 -140861744771265407805809592295751680 3134891957214500885207650926592000 7092779005093202620509305228492800 -488382904299349526177879969411104768 6266761542752136253907497576824832 6856236904475081915139176754315264 -649317536628675206977893363936657408 5745068748151527775296494340407296 5478992815282860542254285762592768 -939190586730865842393925280235257856 4333066720608041397923581398089728 328886032343000108622135204773888 -438636976886667704260878606738128896 3511548123461404637205373309157376 446735471247149346013392834396160 -361059391659497159178611761036132352 9649700371109496986861760703102976 4393260130333629881323335607910400 -964476148567396887096531305231286272 4734252077992724450496244736851968 4787961336854718818162248320548864 -39755914289970618444950883295821824 1941464750148107299063704881987584 9752750112537139961195848125120512 -648368264094648588208448041358721024 1424753873118937189079403705925632 5924978739437288547143131953364992 -451567831940385427799909080059871232 2384417824218402447837526040248320 9257465020485919516203654309740544 -622607418763753940851044978463342592 9172778011524476177897567270469632 1865561344014877324528984654872576 -534481562880085017323213339897102336 4971965109903031206445255095222272 2837557331423404452323474830000128 -419118394307682240272745281081049088 9330282007419867504985681483005952 2913566380682555004514022841122816 -926132122302172576855493191003013120 207407848450938725087818259890176 4581773316053894018982655226281984 -825161011398372913604544641472921600 9817687494229507215792642373713920 8850792098592735932699365919948800 -128446171013006211208647098203373568 3618436138405254998540478413012992 9852320651878084079553008281583616 -872272084335826506160175277766868992 398430531881454250123570289049600 4796687618836996198625940093272064 -934639962284996708261598687278399488 9021150829263430513163180317868032 6372904680310075066149756865609728 -578936735961504684830024046468923392 5682881810900252405016971815419904 5000164775269116926136322992635904 -31371937579432003021094046035607552 5642431774645618727671218323849216 9802878127413146985566305700020224 -967471305465564250337518924618268672 754693140713991108033259698651136 3080338104762970874121679932489728 -352065652173600114138114391864770560 2061912611495888780218067668959232 9041681747254389996576893480992768 -246749717147860093232343307478106112 2958132322140628414291686331514880 4605841914444603306144059287928832 -139121015756720500267077024998227968 2494404261106084484975475533283328 4797797195170600122424540971139072 -758974557038880168613775182055604224 555498018589381713710956056412160 2322087251069533257634503528022016 -463787383467371885037946723899539456 1915329616687471726456232845770752 331528294649905115158302573985792 -873025924732658848186514586898268160 5263110799078135512511274677174272 3040982048579785986333042198708224 -136658872045515152939063888974970880 2773705729543505235363752375746560 7159975563172618664238098075877376 -940599762080402034910892656672374784 165278323433005380651882700079104 5990124354052318358435801367314432 -795097074629548376150089151262228480 1401394927081387131833227457593344 1119864613509822682685917601202176 -629222928149509110561217764017569792 1479009280017817965239400956690432 5619788211281198581882352201367552 -387706165275200479553055018314629120 6477388088460791344241308975759360 2468056716210810596308026803617792 -573416186483434400397648506468171776 1164982768065596055466929213669376 8350603252913334501301402390757376 -209405210868843086600006399606915072 662710044092003267202510145716224 5720662446510985468454672831348736 -851303130462420725971456248342642688 4465906867959347519865880450170880 4804952763071174241599456131678208 -774957601848215378907126219872927744 9461694433440860510783802617888768 9900430400156953745838482533646336 -215752501323457415061572664279695360 2913088507675652731368367795994624 1236255635858011447263760398417920 -968284152984454702187127217854611456 2095987837936444429624479519342592 6911468199031062763697280923992064 -992715905058628886775845835096719360 8187284800648527640842353478991872 2338750850583784875043462567690240 -938964077023671538292483731446824960 9742685184306100425226477721616384 3212033608805112171223503094153216 -364418699829028995339234056473673728 2952703082388608179428049983373312 9226323112162559585298115454828544 -776670640547718290542840020922793984 3549167790711718893856841692872704 5290886089879011369048784322428928 -617880462437226971170604626665799680 1190283324227045065228516304355328 9171025475223598535074356909834240 -414423464043353392811893153085784064 7222656606734327951629726580211712 3315851887605488449487770746880000 -832271370878378870413373264193650688 83780168462806784421075615744000 5037349377837554420998875876687872 -939331914897303664793477062307348480 1394957181112836113022637142179840 7775674751306515719506314334830592 -115603552592537771294290624670334976 1675982747251894808405911393009664 4852319545088259582123972797399040 -132787624440034307137550114638266368 1104367214221715377612155065991168 4768620087131014393135606628614144 -704500076127780501514596225283784704 4125522968296748215970499468984320 7759021019182657468085015333044224 -368271361676779947446887246733508608 2644922642213418365664994929934336 1716972522740512033986701256818688 -156215558361466198717925223204651008 9557239917249731255198254836482048 5016203149484816406587102885576704 -322532213143055555886499075331194880 7697157682575228751575676163719168 2752676299603686554093328810377216 -330053261428950907983998520316133376 4333692559976879521051278531624960 4485394687085784463957318424330240 -99406794145731540437996130394963968 278789348129819811425746813976576 1048912153445347920422703114223616 -217032218324400825569485993325625344 4865432258048918864695243023843328 8618366830310314523130825946431488 -611413423785971378537538187320885248 942556134781815430648761237372928 9418341531594188620952584950120448 -917872744949045677131005135905882112 9981649053757346766959356858597376 1491250369958556685283846065750016 -49662610200924300069625294823096320 7559875539518952979019731990216704 4846355215889389427371996870606848 -587145400433908210877718258176229376 2619652099586287228996553088696320 9822374013316660385785670736543744 -409488933404680125613182449134600192 7106444066237665354737604104290304 7040663036558486877296606136238080 -371940799962729582531970570725097472 3658627878755947158793098438377472 1038524281530515469666971409186816 -612677740627748087842384616362082304 8625512977520361123040655667363840 5260780784077544121530452142981120 -136522714782278794983329754668597248 7452345259957025877030285493665792 3261851453265152452919191142400000 -214998093362219636255713072431235072 4602770778289511444937879836426240 2046853063099042287847103113723904 -855928356785631331116594495857098752 2982534308734880830445211644592128 2217995795370932518052108557090816 -462663885813241768697133068990808064 2270860957942050623289770196860928 4303434521410706469599621345705984 -790534037801756312487291350432088064 9176846681241585813803951917629440 135683443181024165166461667508224 -500782090461201764323310366189682688 8966588168587460352580830548197376 5414722581523361565217493989982208 -989446834167286038970548917242953728 7939588553474075500278114244624384 3272089020912731483515017261744128 -173809862026591753878045272255234048 2339609129311346123530017655750656 1947867989404190618318631595933696 -615069173335605888386160494651637760 5646722368528240231629487471591424 6352073497682687174817637159927808 -282411053578750717790298067200638976 6318336439662297266632935606321152 9004268460110430389013209702989824 -516834805016497025164706443929059328 4125819304674732341955566208286720 5776639564055606898367404934430720 -944789611164898325416068829841195008 3891918109397654735646052428283904 7645493185501168142158470068568064 -142740928891160998438766097704419328 5748096521823328953404786768609280 6015900615738183631411269995593728 -383374772872769717974398383903735808 6668898730257814957147271699890176 9815788363950606184566119670480896 -172080589391880641651791583491653632 5510207448768601158384277631533056 1420874969521630961671827208798208 -194234645680511677008746152269447168 3949282009786123010186122994122752 8637407195222479694858616844582912 -763208823097309504663717440546406400 6562256904223359807015345375412224 3123416592413607888557840304963584 -34318733114461416983225322157637632 6293697081540331401044641961738240 4608597689400990131411411271680 -502507612548275402260781639512621056 9904131867254834796118878072078336 4981578615823995617913907712098304 -942829917248942510567815580506652672 2774907814970857738578406160728064 6698555620980218387321730568814592 -637858316931819021352293286522388480 4546416836332184747841095884341248 8102131242785813296375847475740672 -28180299456272542555210698578722816 3989233468075054121878878523752448 7640306838940849679940275872464896 -615345518276713784733168170547806208 4038785912323063632970029780172800 6182252877503703309143175275216896 -16682572854337850292156217572720640 1071068169806394222649415819067392 8030244311086667220589463912579072 -138293344998159003697025806277541888 6636917745352291183649017917603840 2102129697279289887008416977649664 -982986432009984987089646555660025856 4188095748445358624573956984668160 9133726604093270286033777546231808 -568079774399009588646468210604900352 8727757181952709129254141268328448 2758730353291121871360919548723200 -345327326308545240484228413681303552 5525826686097018022154625152450560 8487662463236938147122479366144000 -759417190936357196800482137425838080 3925058130465203609573787579711488 2913840191569742393030148234412032 -348652997139014091514862693727076352 6484978842315495073193147097939968 2583334230914536275590268497952768 -71267516448428167107185107106004992 9240500698873933991941623437590528 5677568054036843679543972551720960 -967705087011563309655791844859052032 7332117218256703353914679265067008 6385812803016257533741637073633280 -196514609253021793301126044232712192 2753298505461577665472810952163328 1455587575957656149932890872872960 -347349906555067702092225872960421888 3370982555691851304693596382298112 6442438107444640853400766151393280 -823425508037568241260561829927583744 4816941913707880712987982119829504 6725129253134932087490561697644544 -967009307699662395977322058565550080 4780818442472599633378108069904384 9371172031368131844070999909728256 -291245262363084782437660000614612992 53866948215995081912577591083008 871940440073476634212016142155776 -342727284161040975930162919770161152 8339735366532620035278478837284864 4263780147051949765853567443271680 -869510763269001114872969774317436928 4854625676027991838262045001646080 6430439895277550613710012682338304 -85385756579444111812385160411742208 3863807597495602765924177998249984 3088567128960463117537479780990976 -853099288567442302404743084229263360 5011722913807055907032367726854144 7905123996472778924052690568740864 -928910344228884120960317966029684736 6060400885587182948555031140368384 9713951468740439619957990661029888 -900347731016895458168061863827341312 103963317763000159089044551106560 4758082868917292940790891953520640 -289477961746939542217058982905774080 5028791876082630644703436073861120 7621603963965919800099577199067136 -664544599620270019426461240036163584 5102196663515574493504295340605440 3147469092586889596867226263093248 -620871261203241723203287161774276608 3435353256259575070011974708363264 6532542338151489129728508721889280 -298545110326144177089337927135133696 4507781075072443731017950868537344 1227362824013975937049963513511936 -19074908963881675492296412037644288 2556123298595052521405893062950912 6107098978468852732598091931189248 -502702793028419836993991317435449344 9055710506488411781204216129781760 9580585876706851936162367204753408 -991711104828402152796444425770237952 5101530717543784667318735331131392 9641267671580135467571387595489280 -606868772889130681340919866451820544 7713393590283698915770663547437056 5312301786444939835349517346013184 -932169458381627882137644274829754368 1959922971311363810950999607083008 9306376399024518596639819659476992 -64680202826367529851524023207329792 3303040876077818246573626866270208 4354801309722868185610021742051328 -450387773452430695708014832095592448 2520235296920594092024160057294848 3466472115613988820256867064217600 -387598500362961170547390351371403264 5420509540239651063560081124622336 2602733083866036838418312633253888 -659246497229476148375773021047095296 6664262733217447745190739767721984 5112237798277889708226471337656320 -483978954664378657548153464805130240 6970105292028435657128883548848128 7593207546391782701471970610905088 -183754638984578411270281459069353984 4791393911420549857493746563678208 8039465632772450338015411309641728 -552840134484523042820917306647904256 5498848995943852832026820186472448 9854085933819090648381730410463232 -664125420276406385689053572244701184 1770040456482327204750567812366336 9365730643180008769634371251470336 -439517907714721555620370255286632448 5667301871262365505243967632965632 7091940806492718908452245895905280 -554912749631477587158578493642506240 1442798013888565244803766271606784 8131254480857924019636172748750848 -321744423174620513425379383345938432 9185446300472963212974473510649856 815106775345351753621385489940480 -924738000379168619227529149386063872 8688061495977504941553924312137728 3516724103728471736043470678130688 -768710993994059812624695185857576960 5761572108543074560865819932229632 5451860444455916548954128241393664 -653871997968131210968612714221404160 8978372810404584939695747679387648 4311353898670383142914613730869248 -555544065531105847017359772504555520 8134933161450038932187031434952704 9898584971026892903297845246820352 -395518054649812369807274339133816832 8680771920077641425528259686170624 9412061831242355920847140905025536 -844518976622959405255754118506479616 6108587460762123157116920166088704 4246471731701700921672307560153088 -961628658827510910272003573310029824 430091747704614105481053344890880 4195850490101142762351477047427072 -160488013732678555939782405440667648 8880419167570545245411782185451520 5470332407460818212309492383612928 -908530312166433277550214502137462784 2487543852197703162754810733658112 9864821307304893975634165060599808 -407318891796282208497460099598516224 257408935060450917727929624428544 3205705887025618735548214290677760 -872811270738335781534348960598065152 3078037546086018169620323203284992 2910250312834558169513836192727040 -237129302681752118934985843115294720 887954583277825829582801792401408 2424093717104997129074111431049216 -683126920116316729988688145643732992 4767113672274470457058993402544128 982021774559018066982556756082688 -636588704200785682867512052757299200 2601657777805222947944424366145536 9528673829100921000332334062370816 -178784547962633549522277935221833728 4559168968945107753563846673956864 430431848771786878861991519191040 -414066393224297626767833104186867712 1306828221389002891178091023958016 7911745752061668860625037062832128 -111383940627603283336786878174068736 1387866844226295675430728296824832 3429047406063236774196892177268736 -995151467508207380731701503675334656 5900460442571538025332364829261824 2704690110147745889137698074001408 -211019764359078196663545956338237440 45039152469191892077665585201152 6676326962339902881969571262103552 -62163590166786302416855108262297600 8616961276758870800770768591388672 2450513145965913024881854624301056 -139297403767920834625433652070187008 3010328823204032244379238226984960 3916510018720691047533238588276736 -295159671593099216463630844255272960 5113800461000564617532300668698624 8028697131062921531913363647365120 -50581636951116724917313312607174656 8641095486846632213216199882833920 9257595301329714946335545879429120 -786679851777638168961010823946305536 306687546898395249088248900747264 2266712216209969676127156561772544 -811253056394433052305676982821060608 3350391435552810442422278682574848 5150134503063827553398170291535872 -677368223755140018213436211765182464 8850373317813183196224447615860736 6712104539223606614104244842659840 -39141294528890270433282364178169856 5476872072452207118741011112656896 2104268266819014672309834303406080 -239086977707783168146457326889467904 3264959464718145600638716169158656 7955305809194586962837020354805760 -904423737063462316541179568779689984 3240081265987590692465928438808576 3224107316925915295912722304073728 -724995457159542354166932894566580224 4851726150803605442504996149002240 2715764603761267407932670645108736 -324801590762003553256461429217689600 5077482203936769438970248362459136 9733337506982557476991405398163456 -497325734768143805769881588726759424 5476094820499582926128104224063488 8435944865270472694523232776093696 -569286708746017950868206639722266624 1918283659682146984335938060025856 4490439388703337832035641431425024 -509478905503340508291164110103511040 9790971486446104380327579034320896 7877262617746698787505124994449408 -876473675187169634636944057611321344 5578175540690320431605747583811584 4331855248222690398289876085637120 -31357101454531464641083034365329408 5611037154890743090966600186068992 7102805100804042319949239777492992 -921147300356133524977943197780017152 7219189497828324760877080936185856 821964654402705505685043874365440 -125354599015895631644756003579232256 6324423194792271174668677908791296 7056023296291629641921184894287872 -735705625969779496500993393063624704 5631742904356018804161870557085696 9052415904965260196563946475356160 -657911846316809851795020165517672448 4368656480885213337199285700132864 6962340845696065805652491623202816 -388906967501838893993162806195650560 356681529199819701426431736152064 4939375605725853722226125596262400 -417893583313450005114043557753126912 7483149991561112643439942124437504 6522660484699502302005340739207168 -379791711816294129240970100920549376 5020217726608626604972985903218688 2059192060921062987364942345142272 -56994089803287450606845850657226752 2448215482404957221287228912697344 8945480270799646271323446607609856 -611977756684633616114611778654044160 7688921822793643012824567600119808 5447216769030515376643180052086784 -278080460596943706703207992880267264 8959803149778588612667484567240704 5134269188941030749365885904879616 -724689891741814518592357236637433856 4944174118434013032022774430826496 5564721472498413378095998211981312 -326382842910715993827477272888606720 1818791141489328672248273708253184 1405563299188267627327675269382144 -295286024238671609976900831322046464 7530931874748633534928464658825216 6825017047125265269662484373962752 -992156065708332477746793233428512768 6675875863853244445645618502696960 7326118101411722617082477962854400 -506610322692388742068392371584761856 2307533397156130896923178154590208 1555833716796395798879707691220992 -731086485456682547272978038614130688 4888560352028461231654079098257408 2249631093132652677348689283383296 -394857030925220799766842183065272320 641750662167782043965802833510400 9083983704481088129588237831241728 -818099845067670734899464574137794560 6816422567270651639611024419586048 1419239904011775648040272716103680 -593359987440944672018988405748662272 4914061840358148454732384775962624 1625637092576550078122423188717568 -353314588031586456655012364216696832 8090597795772942240869549254639616 6804501829802447527672989926555648 -797529472180620631522480667175682048 598843189848028213093835655348224 9517329122774430312601101247971328 -321513370543860368699090398420664320 8614674704072266407192802919186432 1926370705800232182888415113510912 -495461456703728929525284150423060480 200967093803165324104305100193792 188094162397207810168671854133248 -564652916434237972911880265992765440 3348725417010738414908681893183488 5828605291287499871380646716768256 -126970260019282949539745912290541568 7621487992935887639685584803332096 8471328910110367775767464417165312 -288046910610435696209327522498740224 3551705944990424733641391881584640 1735828638540246462734064943104000 -751903160537404717184861351140392960 1079242528781855702560788688404480 3140023776847293484717175516168192 -797366125301110806701988886320513024 4071068804421137559115790119075840 3790098396146157529876729631342592 -868115720614134361289826553607225344 202451959451754365190642887294976 8679279922493259507727366210191360 -708026225782721903631204510007820288 5074945389757661139353421968572416 2117224805449730130372390918553600 -454449792490439957089593964042911744 6189592243160228396265907077251072 9597331144694028453406590864719872 -377706524336071268893651986982895616 989023017893544704342514187894784 3583871200531255384010116590206976 -27736580125703767142764798365663232 1843075981271958232970434631958528 6740976125030158306821285915656192 -898529982977114667849945741663404032 1555292150925595269927788901040128 7545184644351746096448773260574720 -20843342398442732363406958256979968 526339662942914969872636068233216 7488147798538001629558305124777984 -346338567971414587409705576737800192 2649104951160067451018434739961856 468913081310118101395797994110976 -20437726194967374877490166758375424 8351694479059717331889779288047616 7738872944567050379596901002510336 -139047759859415717947344378702856192 4677903691431912793613159303741440 89052059551504223293051068481536 -380445634998392566685892454052265984 5131256807376023401831014315589632 4031133390542440953361369965527040 -889586129335658469586621000079900672 9829997603700007923541597860397056 249075681562507272062054455836672 -609114685989502444137364516786667520 6118000820456182156040994740502528 4579919480905289622149336854953984 -579644673703466755984476770140160000 6950489684968302147456706572976128 4813285063257367288918053599838208 -653217861624412085948561618433474560 6424264032781709670703260535619584 1721808354394025470953054829281280 -438927995401582825848211531240570880 1552747785738533887689617645240320 7701526145653611232260881301635072 -505575416844424485617859167273353216 1911426704704641086612435424509952 4252473639256693393380387042885632 -17711247671272543091523162438893568 1980453084890526645192803567534080 9148433247474999150001414272450560 -893326018703466106785517944025645056 5616200493923673635589442416672768 3089916271931969367301037462913024 -901795898020105140447464652296683520 8279440768470120299487542600794112 1786896780196810357986266598866944 -367296627349117189211847981824737280 3747023368531221952070162294243328 9186252790780013571272356554342400 -374740653849769183964598277744099328 4583107487594970196425584163160064 8482046842226732689703565581615104 -290426552320923464350608380649275392 1005132568360051809641546895065088 3364684036930054089613429285322752 -158994363642496882462779662648999936 4894096264840449021864391701692416 1621035616062501494617604075028480 -971963768840774394365637868432392192 946983036179904697474463435849728 9708882172294779728678660238999552 -838867494925520838809881318520782848 9278314309151825341290676356120576 4695102418782157570296903958003712 -544551292828136497025435675282898944 3184213960767638895874558310481920 1529506631263008400593766097879040 -669860541703121599018988328319975424 6966505619628728369797450436706304 8921791717365257050903787127963648 -623734226697566316345768959977455616 7730873056301560888605971073466368 850541472661524226743203102982144 -511689563697638089577132623340240896 2282834412567227840412232682831872 9142402129193284099782713978912768 -701834952248394221757743997411917824 2943063598650171951776362089414656 2827575155406533325558414066057216 -650107347171974785867873875023364096 8258297071416622659631111303331840 1178293092901509531689041491132416 -503052551828301775020420758797025280 9861998546012145166350073492144128 4356956281384756261686475986305024 -113708320098978575379949651415269376 9841246680138513964009681844174848 6220185660884773878954066616254464 -364699592298909516350027329597079552 9163557629336593774757961906782208 2106898001455007741205809905795072 -836662470607895757611742227242942464 7327973397932175672689270680715264 547440155570314857976398128087040 -534080929723454179263939164432760832 3125185822531735392118006173663232 3690414117826297536204926716215296 -702140728982543195626202872881872896 1347551681742979212976141971226624 6836718545283763351659980259328000 -275329444541615079758608716135399424 351449876747763727623843871719424 2358743828505865059798725131501568 -40207103440922993281769199567372288 5110264390872622790024208440098816 6103763776096502205283420914843648 -193011014890019512392765278215208960 9215835184802637671432765042589696 8200348190471068428297987367632896 -715824671322726060818930875349598208 4172933725263209879979352911773696 3759605359294316814875765149532160 -24728412311252592820781014040182784 6018669155456354950192857975095296 8593201685212188432610119198441472 -516807317127980957417662725069209600 9762183394301081907879537796972544 4000187316452108109226447634169856 -865508031220047853928857355413356544 9519367791873847793857317392351232 6960210709802587297126982271107072 -348525814392215746037557971910656000 7433706951327049005412519673593856 1468660799438063298142783949242368 -505127867215351806845687491851190272 259171386298104580440659574390784 2687781667928524342207971831316480 -609605654259914092720335788051529728 8564819557533135645059298633973760 7245242206106606133489007157313536 -542850543674637366473203438879506432 8749612265955832911790594305556480 2330902474651456438253449230942208 -731053211715235435090849510765625344 1170213066604202479341833497346048 8156271532217038858818912895631360 -120370488780110573301463528490663936 5864363431190322824335698193022976 643233062533975843704140415893504 -43446740549348913147279423590891520 8768646693184261947977588323385344 8058954999206262302542990464253952 -972513516196518425490123016911192064 5335254313607628867751527674019840 575394127877453744497428382351360 -951993407931566419425471061964095488 7013141511698462267744531091816448 4727527950576306785060597421572096 -439429685491382228350150803244187648 828977759134864070348367909093376 49254578878130109710754205663232 -40536450054714074820645778951766016 8450493090061489136387568359702528 9788747498306866457921701392941056 -603581477237925729331797181539024896 4906436496907867705853697777991680 883456302921780006293553549410304 -3136510850145259577972871963607040 5726719419889707691276382192533504 3406368045037332839131294627528704 -140297378287316953246139304739078144 1681318813241086655184549827313664 835808780788865241679891036897280 -363878833921548289141065086324965376 8506011300304927168126406132498432 234333007132028373385881912868864 -575709445444432877908637955859152896 3468850587980667717778770566840320 3376487352757815881654583120887808 -646238006515853117487036483256713216 7007516663391653248359514670891008 4269343844555539115047871745884160 -561403693084847590343277163940151296 3698340448889907258546643691110400 9840728606884113609296273322541056 -254607048963878803960267476020756480 7849863810512863060046854156713984 3931216444133205661324128754335744 -438312148661310363382669926218072064 6436681768623929865211659679694848 5449065473959595887247211546804224 -700315157489725565534202433856602112 2089048473038649938697260550324224 8431134748971249013196171771904000 -769294982743242276790484965718491136 1169561920191797352026160433725440 4920977296619794382630218113220608 -695897134820767039960731072992378880 8665345276519965960780255053479936 3743694590379829018458079843319808 -131640364909893612666446079722520576 3273092911230646500382733984858112 4839641130786824228016907207311360 -405946014920603027336853220638064640 730529678457952456891614959239168 3069404798630912409296427081007104 -463794590285739281794764457449095168 9749468760213586057729425331453952 4409965881212851541722955228643328 -988624805260484013747465968488022016 4985048038060024933045148489613312 5664421201232886518065019635105792 -934296512726747369395109084782395392 8685068648090335740162147801366528 8313927048154616733332314349633536 -201640243791624250283112944954769408 5364714700771312627097893647417344 818723238259269006841820525625344 -117951221146166454218229104794140672 3207618576513681189616666602897408 6245503953163157275180419321430016 -474067375082435554629384465910071296 1199317355836859847859731542573056 8822251802576501047554501330862080 -392332741108586595402506862589902848 9589871683302691978183961686835200 734925530126862598840219231846400 -242781181562092775311314826867769344 1050938479110536961987183229534208 8847589656160427330019809065697280 -92358264703539270320884084163739648 9517673518969217260620954174750720 5925696969680035695995466119380992 -708216340560471102267224603347648512 9761395235710790091428802758443008 9716865606235112913533562603438080 -38257406138999281294459446793076736 148548180432825678306586157645824 4483675237567078072143692666241024 -901869452654848344871418135773708288 9253163332676530713858748169846784 6442987546698595322333509959286784 -99311147192520748511896892562472960 694099711759208900614164376977408 8858669629996378908960160923779072 -893890509403337843679858256664068096 8275667985378715648547058507317248 3942738732806665819969818353205248 -488940615113967105570267735890329600 8608985043823587118694504043905024 4038832834591430449182840524374016 -125391889371940053373505977557450752 8330776642139205658698585219268608 5588274452155676206326443373756416 -723053536840139425434891294190075904 377431715732387490413444211933184 8224731031779530382228699138228224 -593777384211631894011651008273317888 7718176400875503535629570311979008 9934320249249870503062563673079808 -483117534465928864483074597256691712 1762698783600600852460167141261312 8813330905188541272499909367431168 -138027606245474322064342287575416832 8860550839921662488119026502336512 4502028868665540057812505391529984 -518893744617302082115335399147569152 590809993778738917813666445262848 88025256954945401035157338587136 -640211100883562029813234824401387520 8657859008324068421481908425195520 8077320637549896474077179494268928 -825257473882640180905474626668199936 5259803278439611156129128208400384 1177847238197603345164328952135680 -286206059804495142558260248887427072 706687115123688668833909967945728 9694414593595682475447704243666944 -532108227346286165023041769730736128 8781099175231041379029945950404608 5820585477899711256029748585824256 -223546324654225086881954851167666176 2416446938009987434845702067322880 1401528276516424173299343546122240 -959665892183949059805955257796657152 9926796720416437864087933824270336 4821198060790055620049334326788096 -211664903336167113771961690299039744 1875543159267404642778495378784256 1743857183374191342881835143135232 -289046511872189605659325407686557696 5974257147119870061625912152031232 5694568059747088808853235707150336 -996219928199943661072412134267158528 3187776920583251972520681718939648 9761705257226799822480457175400448 -232238509512040540244022232006787072 1284776365259149203409550373289984 4416437969575863414938857344335872 -546211991275201592501374829742522368 160113799305259887271298428043264 5897031292704681936305118993448960 -317812101257024170265625700467736576 4184810388032663548408472245633024 5838551645067592880765946172538880 -974697326901969982378786329469124608 4738824056741580119681569635958784 5676397977755247812406050738405376 -205365879313782812638858111554158592 7972630526917625265999114926030848 3259142484758513168324177363468288 -501072810094002402477005442593587200 1219810067587558081639140883955712 3549164984583657901914479124283392 -343996806566373291795639117973291008 5101185424896854460939398530727936 3055981631268228766077353208053760 -241302449337553836693253618078318592 7287139451427209449550385686511616 336096755055239023183920237641728 -519655477017747721087968357184962560 9525870865553393031748524665995264 3740699178909101638796194170798080 -265443243632562145650332192720551936 5020983451748471751906868087226368 167258921081883770716558576320512 -566876924607303165932641005003079680 4555029669426431612477866799792128 508604192828259741050489584746496 -642370051859877081622773463781474304 5582822921748339724975886106099712 5134325912582944105005555306725376 -118631716395060787312537641274048512 7703245033305027247339365084430336 9172799962938330514366504898658304 -256433751895108467303234462183063552 6107374655986200398770237859692544 6708008619054486243999921251287040 -452579019317911640728948162904981504 5608483964612977336039409350344704 4618061287806966451319330285027328 -265021378923708691321243849229074432 9327695624505726331666630667403264 3099905842347811648300709633327104 -552932508883349419475492963862183936 2715520645298789865428030180032512 594048961506044578645515488460800 -827509414207511576742481632386088960 7015620216037889497791266845360128 7743058259140508696941860145332224 -986804351460592528556596079932473344 6198618464351320032991933649387520 3359850303689766685836644328669184 -199500837335135664057304665770950656 1410683369382455020284025684099072 6441642964370299682913111894917120 -956739885622791893224828636967731200 2197674706760590044604434646827008 776922855467846679695296756187136 -743639334421488288473947472582934528 579425716537099147402642257346560 4750883676070245789743970909159424 -895335340981861823857083561472425984 5191735560906403755097597191127040 5757093736443062774052770631647232 -629330674802490662162673137566613504 2727017078875243427931463014678528 8122842707308994949012499132841984 -619415604594399592732057213591355392 8991362643025247111423673220726784 1418990064725169201896238140620800 -196809689473046566729443874365767680 5358780950026466178198617670549504 3453396485159006575085102888386560 -224789106151521426989785040667279360 7311138666471400510886266198294528 4338396208819708169830994005721088 -899980788569862537249932609239121920 554113073299778106648601164775424 9209481254870818747863287780605952 -35230356444711287420691156184334336 4451311928107740012674894597718016 4833854386987335685554475045486592 -186067329434186824831205800799109120 3060124889725466070567619817111552 398456795289185399156994639659008 -353441095413424998208111848479260672 7213185847967836424415323057291264 8319259732334602823772885202501632 -434859311339152377362525817864716288 2464483569682016014150602485399552 766266441023869959561195938643968 -487233132850665783028572876693307392 5394927502515008359880144170516480 9820134081964777331822568669184000 -970536910220386633499669057952022528 3655364569506477656817368192516096 7372995792170474549633112755666944 -187153057198756175238462299602681856 4543644351489305212163903448940544 9211439291692172869298568132820992 -701410888768345894294943170241232896 9458530244795194550632513473085440 5368486060880006670504578699493376 -616109232611918283201875501163479040 6483621680113292030813369331089408 8330546737132136202191660545736704 -407282339675499615393332214598991872 7071131205357602526874867471482880 8037549676642612133998605675528192 -592944060866217033672449288667398144 8704052607079172467687080419393536 6661122731089162242139815654981632 -134629409777875804333875634139824128 6543549841579217743685284232429568 1091184480873161935951147778965504 -813411337220867686204319196197683200 4815828212669494679199714744729600 3058738767050071927107982964293632 -450075155342729673524866940896542720 8853245000038148140812954796818432 5782426748450133546037723912994816 -529855829263022805960682548307689472 2693446906824342682623885248036864 6138076335675627776507778909077504 -66564525644182077558268166693453824 6895701612463411059793257799090176 357996503252109879269765156962304 -187668877223217339194675322328973312 7107644932837672012851036949577728 1950238157105900427355500629196800 -902031126301999742320791480275304448 4366698212280794901382338025881600 4524972979048247036631248550232064 -955111768222037210192475412345389056 342456697844876612404316322398208 1202293419314645527840501228634112 -340976101849139655349874978164047872 9842874019716956230235865405718528 8697653825664511767993391050129408 -908458313448144264287632852766425088 1452834676995607487529408010387456 7055643383369001498918786162491392 -94364160926611666535876677804752896 1335111837877925347685457108926464 9010658272191042479783295747883008 -800978218047458037738159750789464064 5822574197581072231735948663062528 5921025481935331683369180100296704 -788297683647208981307478622343266304 9156947108865399484436859196538880 4297173376849669691346741220081664 -27494183825807357673467689329229824 7098043557038333557479588635869184 604071839725687024222397129555968 -368554814525595437907893291661131776 8695636584500797450632150470623232 8700808489213663601696861159686144 -367417576914750708759522943342477312 8050061958631574042861860934385664 5769749800177160490783792489824256 -106576830432481070756026862702428160 2481023607320927930006511787442176 1970706112918885407888934917111808 -988216615792844040966129710895464448 7455340657613899157261984280346624 7976349661063181878923575794073600 -663809383621273026665840076990185472 2706377401620740362633733660999680 69991534681564318125267611549696 -669586198626697430759752613727567872 9960843753854669635404601564856320 9393290323525512544360649763848192 -290400324836626387661039722945314816 1315555335410779066836166585090048 1006806913089971509488419157835776 -458728338421649202978554759251755008 7755373079758373913675644771762176 1113233136378082376876494212300800 -796498590152208699689284330286219264 9536788762712395460420348936192000 36881735960308400649990259605504 -822843137160333163781981054745706496 4293223719126130816474970446626816 9107600699377451512136307652427776 -465494169200460997461053523456163840 6008698655152220457190689328857088 8557752163761340103049522427461632 -245760872975720109943429909889155072 7333711349780723250525527672356864 8903608478370152956200627151568896 -106816674633465234230799180312346624 1062998499040901475543599326167040 6561373075907727731862244419436544 -309305684084835645314593474515828736 7796628831140167538947804895379456 9568454505446235318007888863035392 -798536201745202861793597422410137600 8556671572476219879051553606205440 2435783164972566145740125155360768 -677330631291777798817003956909113344 3163774824236917245017128620261376 1540497195276571045844741106171904 -946385969180286770058721300523778048 4899170780493570725950010511327232 6775058481802306162900012051202048 -202097193185308096401850913653784576 5542442222742054676153711024144384 7229071662894074523129895293288448 -814086442114793017300758948271357952 8027942519768518606781965481803776 2195248799408832810507849028337664 -152429640437924997712719656951742464 3706558767552680463956840386920448 802330899862499546187559996489728 -113076459180201012995341672167505920 2841612375914507568209385398206464 3659810347622351907263095718805504 -889119978158942397174264169685319680 162397476875866983625765874040832 8256131487864563653441201417224192 -680546374333183495700969360252207104 5068033154039627128709519847194624 7028428582703093412538312978071552 -326601787721942346289854263173578752 5734064839845606392466001606213632 2837962330367970758003818661675008 -654930522156129611153723797134114816 1109519786359692833057124128915456 8286691514902197849741115263025152 -827251290191190421793206851596189696 659794466748357304628319495389184 6583051980627915421759183473606656 -665489747113689435580475220040876032 5966836882065486202289218180349952 4194285517100852140659882653122560 -597899949262912308148396711917649920 449557431180514151903820446171136 8384880280346571926319739405598720 -449268512939732927326975489810104320 3337510718303421732783883399725056 1292393922865999116873445524111360 -585095420474435407275873476540366848 332657786948568064254314777935872 1526396770046119198410861340262400 -867842194143834685773357380098064384 1684972010261975838247407115567104 8460593789930507490860126168940544 -647790958309936513787567674490880000 2735408707728461660539115152605184 6133814009969413113094940041150464 -976645813784746897696390441127116800 8402670662728386542783116989169664 7806555186072092274722101788672000 -982176646643865903522495357970808832 664016628992014474233773476020224 3654279707669031605503209351675904 -116604568994776709161128625952522240 5478049269908153292048839387119616 948072071872712868073063984398336 -450875357227892082548940107818205184 4277588741292218329223444033437696 4748196086348727930366900574355456 -203911687075949273950252167120027648 3022832779005148066176286846877696 1865241843500520758488447129223168 -463832204219289802544395238011568128 5943449795228603841162407709769728 560633899962523755637065805463552 -153430578934497018896371676161769472 7840519086613133734368925154541568 952363115507614954202380076318720 -864546259508536529295984073218457600 2310756727179727555961483857756160 2702250123161091083304069280825344 -645739988458152076444692615771717632 1324282708843324296971769419399168 7763029445310130344372262427164672 -490795716540353678084859386002407424 6740023650158759212052957909483520 8961660320638231186149558441738240 -940305083953422473332642644045594624 4046285438875797583410493424402432 6729455263996020089946045964877824 -99214124813998530235959410331484160 2852392559441599020206756049453056 8970527443151479317424221414490112 -328637368919785949487012153231671296 4444873076875069350605215548571648 9745106624659199192097317357355008 -971066769853808314929921911324409856 4323826758644152404260440422481920 721609150991574643860090887602176 -575828433165492185041102605098418176 823363177371933879585938767609856 8683921157211556272000033236189184 -27536325807818144385741404216754176 7180322450020361943078506739007488 1758581294304848105905132738183168 -880731587185708561051394937658015744 2242647590571674210648345362300928 6995241281655247496409184781467648 -296634067460610035533306377445310464 6924988786133608888287898214858752 1174892122223124518358045561978880 -484887009783332851280781934346633216 4863991675911055751297499781922816 9370833489973970270068877830389760 -231031951647877719873780076859359232 2234955963046234016979682416656384 3164296191760799819157007325200384 -519904169369110967352254022662750208 7910528469525646829919013475188736 8172959302830621676261752579293184 -408392775192946557597576525359611904 2220067145994211360817620025606144 9695100668845128117975278308818944 -520598034382021424295730183372013568 6366467270530576986516200529854464 7148170105885875977153902830157824 -77887206540137134010749006901149696 2847752399307307611795616190955520 8319150879426509404614464590839808 -607351012780139154984394651223457792 8409645146804733797191697009999872 6866870389618164524472006074171392 -345753240142214646696456874834788352 1583572371791461329431414339272704 1048999474011750271466721882669056 -813038875597735530894016307645120512 938170541947758191752809367470080 7844987075553627916996603761655808 -682512967440173812933674284183715840 4554402961233152088782784226656256 376431712231361735005504465272832 -214793139089690127071222938969571328 9361903265540029930719843331342336 5055128687815482772882054761676800 -474874920421922674894088150114631680 1178897375353367590861265707204608 297846572625452079509780029243392 -555614259130962609429407953630265344 5503462384610314274373601650016256 7082644263682043523414853632917504 -147391475156971134786097060813733888 7652054528681789384072716873629696 7522746945324557514471485695066112 -581163928658065311228059707764637696 1966162347091031710743338822926336 8868195159839102340642317210222592 -541366741607691933793044069934432256 8682283506595267510899454322409472 5541531240671371539609153311866880 -722614805466558415884222141290250240 1712918936568846300190306509783040 3792545151251847208892847011921920 -557677262426753316213309898412261376 3109625256910292856956652785500160 9069554787879353820378668893995008 -669437275348884981322697684010663936 8039661037171880124711736314953728 2725963782536100883807300831150080 -885485432866390915230852843627872256 1697444784300221332003952338665472 8639031549092790534812889616744448 -695301414574636657573823543144087552 2057941515075209395082239852675072 1884309282337037794998963427868672 -376567167544638206512881600921862144 7481820592527633008541479280312320 4552802083112977199874380918685696 -188420976302310581005933480513634304 7197537112874226069864729018368000 8333593376760283288168639913525248 -320639617088898770611287625675309056 1424253563609174952120304218931200 410019838368411116954594406563840 -622572668696459878385131863408640000 445035059555834523749571966795776 217014527945049416024545866809344 -283514073256221128775409656680939520 3028464478314102720266857888088064 7244289537841284234343200954777600 -16527911574113857379253270291152896 3963717990702604140659085594853376 6869145018024026229223539110576128 -871676659601930991835771194096746496 9055981486672249614282472107802624 5365640024940073378310604181209088 -219610998704275724668322435230072832 4020830624165145468436552695676928 1385954851691629104363731549159424 -190978563930328245469932377650233344 1682791092910944046590130969903104 3860581028457931061808112800366592 -775676860714057751183276167137329152 1765424820502683582282231078453248 6809655574669602095608363244060672 -428766147301378671590493744107880448 2212417838652374009869708252151808 18342027508398018989826687107072 -956054658213971134051221222495092736 6362860449328813499997496398577664 9371706279618244527027061696495616 -489942243850604634467538010432864256 4763721408466953000914174619942912 556822794015220232420999083065344 -812358768336912330007392670835539968 2152319315763206999272711381843968 5473289990321893526966769685626880 -293755799802970268058319574190260224 4589437172701586464867137206878208 8482498084956734497570973630332928 -827710955614883624280756411441348608 1328971668637582163233455097249792 3574603410985998231470184454946816 -864811248520733699714136508693741568 9697978769186225220594695487356928 6862224348659743924191095953555456 -148586522965829221993423286065692672 1622332545436506564899206525353984 9559248222811924833560421396905984 -119771808517071607467569373620731904 9507500124617932220091128766005248 4875953468637349857626504732606464 -51308239576219685146165407064784896 6815440043528206600157141701492736 3263147232881070357805084862054400 -708659384526080073755465266006851584 1978868883721334223294577294442496 1016280786545872660071923505430528 -825263132294444776345797567472205824 5516353013744066177979286181380096 1379894407515766657391466916085760 -705329012200703797467084885837479936 7810846981915796841740831830310912 5738276833846547490226992169615360 -712677312157538386605447203149316096 4132623732836774356345151308169216 8552102769777005146219026105499648 -863642660212650357122477994773839872 3106218700155276066056199481589760 434259808197732603194577275322368 -789358239610361852926496404662124544 5543302299030517810821150590107648 7523772093155345143794404524294144 -493773336463652957662809971631325184 5645090502039118107288435114901504 5327304586624581814511920287318016 -929532031412366730803174458710294528 5745768279808350885109341865639936 5490475124730446705041046211919872 -738159755161970959289876199786938368 1391544365903083251465727338610688 1272507128414254329079861308555264 -809172989062207971606271531061084160 6368159767397181479231346832310272 5708333142604111983345119378014208 -513050636546041194507541431755735040 4095972340875377361753817242140672 6807727638922291834136022828974080 -22587909991514132978658746747060224 4349727053480514959541177902170112 3005514606775319051783283696205824 -707361062142418017481738352293052416 1488157273232374063483468044566528 6513906812522497058610369674608640 -909749327037835769884285444303093760 4726273233927503503098916353605632 8449289543262285092095678711070720 -722429115686598293475908526217887744 8900877269806988653544734107631616 2993452913608716776717949109010432 -713910220951789775832201277753786368 2762537833436503443707577700974592 2171472583114160414237260943196160 -833116927029382669305860061688496128 8274674094484883615563338458595328 4949237481852549274919463186071552 -39832958620470142325195743684460544 880053818668551157100271489777664 2341737768496245163501069757579264 -12566801183413527882291151774941184 6802889681227849353266497599832064 6258449060229841276548038520733696 -632679317893049291786618739670122496 9676710093379507030778736254386176 2826660914403099067598745225920512 -573162644961176220982436400983965696 1281289124023075028520854100115456 4228591426780782968853920238010368 -635327953580428965869864157330800640 8605540001498864523805620315357184 3805347825830232248989445865340928 -501715846755484577454257798266224640 8857667891898884439347576302469120 2217233588574608699932369380966400 -94793274624077514627893780025442304 4561926018791427435235571113394176 7528068976172821329262334013603840 -855882183923789708767543272201519104 5150912811129991668205766855098368 9029555176129071778758979666051072 -668418930383514898109136607851315200 5096133307357451787123787340709888 4869568450587210155060552343224320 -119196442031677592761461662990467072 4628542645098388783537825519763456 6208788628845768758412269718601728 -417393175402993974649034313327181824 4703739119070998481892655943909376 9159069174929385360234088381808640 -515636908216487869868426317885603840 4781395397694161056040253573300224 6006059294066137354887367317520384 -501030714422248110543424286682513408 2675319318491350392246449559568384 1044787455435519889634284093308928 -726842749093189367350843186354323456 418891280584563715745935888744448 9454444776854849023267192025645056 -253781528516120462666103837782179840 2984323149309130653078355450003456 4631147769644210298901716529053696 -910394100572109707485453934634467328 3985140315644852080791223768449024 3113284168989090285303900573532160 -67233730594475045638923355554840576 7170145724614653518901090254323712 8898274691978458499184926090330112 -829722523744862259624780876648284160 1548918288162454322847358153392128 9870150136952307815696191987908608 -727162665422026568023632608451624960 9734085485244027288211738593329152 171186291202516594921456386703360 -143207600086698807290658745250480128 6008168084907022308119462530777088 5717319720758384004541131538825216 -108517028289002174771862802456903680 7426400987118871398125610435870720 7233855882654735074631661909966848 -132919943589939771877770908108062720 3242827994034624803511919137783808 5444359189411537374425659266301952 -798487597470233301587818235807399936 6560241710874076547422741784952832 191448227673490734882656108937216 -602658632769523064188740029095346176 8518943637156193679993006716878848 5055889262817123345563280008544256 -804557907333953476504941237597372416 3612370587136943415629781940568064 716059969061310357950006349004800 -887217859969450453244644894852513792 8104260457651855371360347680145408 231470292792897720113167981346816 -878616189801749948957413329474682880 7571832716346631606499875848454144 1124249334467025370833080520015872 -58025971688973625720989959233470464 1572714991446716220213056415727616 9403764005484316516364329542483968 -872136345420744810349976812699779072 7601785475224276893816406992224256 4163249503605153754589942840819712 -53502493919001106715978966333652992 6452447928410394681034221356580864 5318767897286861690967662404829184 -595131188591109932883339141995036672 8067294839638968492040465950965760 8103034041463776733658864360095744 -784561629792984264546734790965985280 7345998738762304647105747687047168 2573208557138589264773484468240384 -833245529056677596312818654524735488 543862230429098225545235111346176 9479435900995284427614443156799488 -649405617610850288151409281478950912 2023894782489302347235008553418752 2811779310565777650249806242643968 -110278061994019499094081109506392064 365279529002153564923222172893184 6551918318661703534232624508698624 -773022347628301470179686257549901824 3037063027618089556577016740839424 5386800134877172520002282330259456 -950443009311462793036996484146397184 79062759307868523283972744019968 3582297743285924663043187202326528 -671554119003543536110727319575855104 2220309282320495283111731497271296 8029557234979088253755158557622272 -868459711966329983596003603062456320 2953766014335079775158204882747392 12294461006351931673591184097280 -173687337529387671710487241985884160 4167064014332753125353960744419328 5470904054486981624970604898680832 -487823894585083616825808811812978688 1389493078540618586628199276347392 4161957666061533654606823506837504 -839529003703643997333757024467419136 9256465896570775606208725111537664 8744056509300455260038806693216256 -945027333265027179305070149578522624 3035375791400501680968939539005440 3203643118948542892951349753806848 -789654003780305394769974538400694272 3069648327259788616501509903876096 6265021592429990296793840879665152 -460086661959692629716370983917453312 5685231744918316331764579376824320 2555761973747538968661954173861888 -68509140218469732648621396715372544 38685299315658100704791811325952 9864671085920750164075820900941824 -130088688860330160585671447297392640 4311351751106576812199893752872960 9161788308626330304680735507742720 -376406716576407734877667687074365440 496735995989369288420917237514240 4382784914881304411852949231239168 -974677511100104147949955537356980224 4902586596829508306070581616312320 9066203867972597616677514509287424 -419650549023210882956586786316353536 8757833298550330796843024806576128 1473187527550589566841148361670656 -441347988240882582154412403833438208 4883609792747551484022341674991616 2454811941711718220616621333938176 -431968896756677282575417661156491264 2981692017713933388574005586296832 5351424554363639155853024835928064 -368245952483547023611699741396566016 6705038844711552939685802693099520 7014915936448762444154726198018048 -605009075633838936051329755074527232 3648886440657942810200251530477568 5756440268991603002715182192394240 -799812104092879678431484020258766848 4410387580079491990890428529377280 507076632417872651457440121880576 -854597339569893798688907039038504960 5103559921458707683633998342389760 9229903385970530485757877105459200 -657506102832467551714032890192855040 1780471784524998446496334051540992 511704518187194876343108463755264 -186793922094327295423976879765323776 2296156055403946139141585942609920 3500979705014348864305198503297024 -458135630792830545882063996580790272 9535129473900215643163547001683968 1436391193324528793852743667154944 -22136361992829463820413044894203904 7024580836293366932063099969077248 461983812533369437693195556225024 -346003184778033593175244710610993152 9650108912972874337773258996187136 7756309660567707309720771259006976 -175939645591886087779797868562350080 6386785164620811360561982638915584 9958658587474191897316069086330880 -385941854731110941049641627709079552 6701334852419256374060991725436928 1248200275857539551250630410502144 -365413569235792392315492840998174720 5351444365922710060758227769884672 9293643273558871576032619511414784 -768396921943508417283218702723973120 1538702332687262530555715640098816 4951192466948924567061279065243648 -548919508328452845779159006540988416 1728908035192809831340918559473664 8693698996279893626130800383623168 -785875544942053573337251848942256128 7987918058435973474641896779284480 2013301950398411119476818938167296 -42432899097307194234680536861769728 9998389105589474189233131414880256 2121831172691214233652339696205824 -949363484977847377489377773951647744 9159592194166630138453594166263808 5764407243950167970736654082113536 -144513260709606760640773649692884992 6584959280485681476356307815497728 2278004613690211595392346855833600 -105113995535738392794106495441567744 9125566745273082594727506990858240 7968795415637211056988983094411264 -908295942965844318838997975975329792 5903233412503424917736320988610560 8394681733303559132142886614728704 -236703281962336510669865454432944128 2293296162454940859623965416488960 4967453281099262459604663328047104 -269252992897498491709798277204410368 6365152459192092227176240108273664 6257214234970806943178787135684608 -836428923998641951315493753175670784 5016379445383395165899478330769408 3425131671661997358873342405246976 -264446679523251983056268298716971008 700620111640765860081316621451264 1475632785947700641993936947118080 -906503165985893536350575323387002880 5523859612320570425294881076281344 9986098697167232343534966698672128 -477721405699327430707917175308419072 5582211694649786193823702848634880 8633609194075444957500841801023488 -701731761099272210738980847968321536 1875270783728563248105309524197376 1345438603483505650387096692588544 -466702079944679165267672561799397376 177398258472978883615599848587264 7355730271080771813863736217698304 -5649223135965901863910919408451584 969263210016112983139163282866176 7497094425094104971452000390610944 -478583164655324884848617423420522496 8384715884234768910157928902688768 6386446237887017702779179824578560 -150344152695583870532220713542090752 9941252658739531887410365971038208 9447157816741535259720746448977920 -635632216568369151411431845484560384 6770401905731998805435529146925056 3339198421139552684373391439822848 -633238824775944594571067175406141440 692933801623948938960373242920960 8490850414671212699971520592609280 -450253992241911585413236629543321600 4833715297919098953004700093382656 2830585337204741615247951182954496 -885336845586118523176845184308609024 9479092465821274039540599826153472 3425657493974887528895609957253120 -379830518373618715788976341989195776 3843086753723446092480212400865280 7999242603200489389394843463057408 -631742255619355403529788617811558400 1395027035734510478448499047268352 9759274109144703776996410999701504 -326021907293061942349301725249142784 7743523827102325337436660969766912 1348496958661742099262423747788800 -460591500997825176833724103211876352 8754341131250091301204532496695296 930920311284803006199502374699008 -737067696685580708369481336411389952 8930436504349852224347074719645696 4763071175372957516878447372140544 -645452023350790059775041165638762496 7423496761508561298517327741976576 6302898227850286222522868645756928 -594130650037447716003181858975121408 5158312552409842556383220543258624 2344136364035758476918574872002560 -337687171605682358730789925030985728 6113419451696914696140026726580224 1889673872860994260116600889802752 -775007417457140071506786756713250816 6702127540972643072305444056727552 5394200623709213690141370906312704 -459975976759991017382056395567792128 5195146947028622879292038599147520 7123873875980769475807209051914240 -670784846547197899116850878080876544 3640546170391634708942466098135040 6363501157326293128203147700862976 -353626055077886509047799970592194560 6197331551267665052090730194927616 2897782090282281385598042763165696 -731209967640915663577815967730761728 1424163334112924050697564836593664 2332811337234647923274703748202496 -359229994473382778700705182083186688 2723500269200516592658751705579520 6600826954036672272686875565621248 -738813672358858737062597041907040256 5718048871452651147279223830347776 8206432629218603494119295252692992 -15882302418598940284656543546212352 2286175856528049926960343242768384 4848781043410449194242108043558912 -277424097111822397964810612291665920 8376398078099023206966438649659392 2376407150587496739844894664687616 -231866266265608089587275423469797376 4319345089222245103724329351249920 271804996663077677820031958777856 -470816333119511314415027112269316096 9736793875017109955266336530628608 4200718223442012069224108953436160 -608421632672573505590995853097566208 2996465110937040049843612657123328 9049510741461249728452389981126656 -993846605086179099175800354686107648 2512113782479183280380960831438848 6580269017376765792996138476896256 -947652572824147777113386640606232576 7664414857742550115914535661469696 5271481772123131732524102198493184 -603963565122131826124266449726865408 9213972510749476243632120964055040 9155508241405328648618439006486528 -910959170486289123140730525312876544 4290070188468803077896072870232064 4160249070977500430118154494017536 -257961239135548194232573895758577664 9365415014064487812473890000601088 8076765206960999041037996350504960 -261527627208604095449805606348652544 6555447626775436500690659021160448 1039578821272294295885306365214720 -660133139069738032166922931908116480 7714266817470600865943904160055296 234139372665800200345411785850880 -839600932491352751577642286710784000 2984492858272944742860106458202112 3578036542762507736839421763256320 -414947992517292494181023599388786688 3660597586633421391607849570795520 5359346826739313018305124390404096 -948943701884544190999469193789702144 8466945890017106724533951484919808 8703956423032922648682784110936064 -753345077799404467888023782182354944 7152882943636167254356284118401024 523613774940787522291430330466304 -159233141120570199286622261761540096 7314589035461987702364525014548480 9364177577675517943165831690059776 -219712000742229217222965454641823744 4920313421433527867150999830396928 8792883089414655795745845950808064 -951874902199095201925060148817035264 2390114082163284328696283133902848 1035460872911037001649231121874944 -900006684501566820360642717995237376 3694638733142697382461563874574336 5978419081191943763903979091656704 -835454657554593295303845675070914560 8073251016125238711305609498591232 328237767232740016568421448679424 -536900052708270209766098582865182720 8316892215756172135844337363714048 8605080684282758172512529189699584 -887837979731253595164590180789125120 6281545303120820443178518674669568 4085049448582951653202625105494016 -43602973086327835940435845758058496 7907102468080729819452466603753472 7835009349669154204798785844936704 -663877259593767210079440087789076480 8177679212604683826800017421631488 1890979719366054347500063714967552 -785388225853548183014390401406599168 4680579147979390826135681444610048 450828623677351315043453551771648 -813308956387723170375447604176617472 5136304847757024782090170592657408 1261900318042039851277087057903616 -693145569301341736005651932154691584 6595714035696953796753635453960192 4310111213842045798460586545119232 -854949322751170501208549392130244608 6046876967430215746159831987257344 6655582377302018073173539573202944 -841269509896542139328929601104642048 9830948391521317174983453552148480 4104906402975624287136874103832576 -792866879585574796638158989801029632 6984645513006806292825740345868288 558821210664144094732679777353728 -175542378380284370930182860159582208 1298978034081919909928887082024960 4148560031420655750170526242308096 -838507559935272645536311605656027136 4580869949403811886989056281673728 202373751014530325524218998947840 -691085351500944934067787643033223168 6787683056816383392449415503413248 879601581185243334095255705223168 -679123874615079398341269448996945920 2867163700099023653843694178533376 209903427791885443062621368483840 -321815668622282695400105370833649664 623365437943313468335796372111360 8078648859197586221096706718564352 -743264988249576862646548109488816128 6790592493925131829252248997724160 5033786445649643778605603205677056 -905372774660743829862553034860527616 3294566016026248530785075325829120 6594955178425519948869829453152256 -638803504605607731668035387126710272 8533554859461913416905971017449472 3588061118793677732399827386368000 -834868522474359432039071524369465344 4827094156400495002601871586099200 3328535289331321302019457402535936 -436207110574191391373315593016967168 2600530611202225328588631803166720 1789450240646785684294203854553088 -245085054686600977627165438720868352 6331926922828071408028690908446720 4074074732533286838755163386150912 -520953754005961835056421287130824704 2424927973633183036228396377964544 3352445188197670384636603968520192 -941155016641823538361290648063049728 7312287867371360345930300905226240 6445754729450904013063604884471808 -166772118814352418440657909525250048 9930052174753216265676291179544576 9444240579975503473340003056091136 -894159804717415978482707218238013440 2115938429658075233328565682438144 5345425109038626937842894079262720 -896069801255159907861209181897883648 1413875379504664280101179724136448 356428853105036678905780343144448 -990486858783244125648755138972614656 1438524640353753168536611703488512 5849464642341919906772866016739328 -95904339806100054357372166761086976 732513413767331678427982847803392 9308406212353112229662683926888448 -254803707310133474164810088454291456 4641593875723389385051385620332544 5258413591322527239474907814297600 -901154739167643374179921441515896832 9506712406622680814691289757908992 4238152610041647394730104965824512 -336056903428928754540846576184590336 3266255583575528297846354697256960 8919445617961089874658124162400256 -124274108410292420383087139290611712 2049715013019719084483887694348288 8488391431298720984773679546105856 -211472767518357520591657865568059392 3187576376807058993166047378407424 382485633885106137340065884405760 -546692194175976503845539282910445568 2132000448442543176324929478983680 7748824291876369205382261608808448 -127681456820527589362828475013005312 3111155293364513579101897480994816 6726190435066880884090786793127936 -719183962627276527239245395847544832 8806954833501360231762864778510336 8892119529784809396752627770851328 -734534500598149256454495042675933184 3653639627555689180593501404921856 3259754941445850467407415342006272 -876744504337640835912666792610234368 6219321068447067079619335126253568 7429391147097820890648697162956800 -347015174191514637790405610056974336 585642635895229277661928487911424 245180285250901751333583490908160 -303505198138974066323137359278768128 169421584942655547093176668913664 5298529108085995767869292664586240 -877744420736618697538514451339149312 468075877462941917685821193846784 1036025001213562973675945105293312 -46205943350394154740621990315425792 5396957395674301189511739793735680 4084696245767923172087204725915648 -901513544709355384620860101500076032 1782038525854288174332893953261568 7292179491047980047320911674605568 -774991572424810891514563690334519296 3616108094440811645319914616520704 4572766178788361387380557547044864 -491099301403326308435695136759873536 7083934427989427303040935234895872 1376587470267411982168643805904896 -829576889276543472840532568477532160 8033979416072574858088513764589568 5180649267255481189637390363262976 -145913437617445078366307271063896064 9062810357710030151796367139274752 1244224981006207609837409053704192 -134360489871575341588539742491770880 4213229708728204839752458720772096 995062721773874607874572241862656 -106645453850650761552589726918115328 449202998776700821993434776600576 9712812993293876628639167650201600 -752823432816710576874564001978122240 4742428956057775001274037936586752 201796771217678033523557435179008 -370228861876360312218129615269396480 1755221985245812282873561921617920 7310189900285033407934472415870976 -267927196730294207523737604242538496 2287519258418143537126718706810880 2159928907946553337149257251028992 -629580579867812695093174618688585728 301811570252788887290219478384640 9564042073523301949510025515892736 -589137295078253533511968291425353728 4193615096421377489333077556592640 8390628988328629194126888901017600 -268894297916348452106118682223050752 8465139999517877737419090406932480 9377002647315208142775094272327680 -728408542657380788544421769074704384 7153200252092748814623977062268928 1687832408218666568441776060760064 -37993897752920102225852664098324480 8293744861323413623728615762952192 4570898815110711872715504194945024 -128425682301252244495881327664431104 430404245264457685257685108260864 6574717604999587153036841368682496 -253448079102042449888475923527761920 8011180221775039001393376182403072 8004528400448839185173210323746816 -280020247775460947972670302139187200 2426511215385797514581424377692160 516754069090628095204651966660608 -527772653467769769966407073476378624 6356211512357168914859337803890688 9694459847284423729079375559131136 -816049177628140027276575647335448576 400919492003321233041554933809152 4274312843011605000163073143603200 -430657532631452594404801167214247936 5872074471121351486693586424037376 8284565842954968549370026430300160 -931464228084716350435000665929416704 6191585032290966036995319873404928 2930934055630572948352210550390784 -783956244325154965020958523744321536 2447730353137599423935729968873472 1562414836199358288839679133351936 -982213234034874668868739729830445056 3819013352145026263607156831944704 7396536185849006845075508860813312 -37729041236669052890208694767190016 5789219034280898156525995270602752 7563800576390883242220712844328960 -29543882843214751355268938464231424 4896797482840386119097775399370752 8653252258795363222874861286195200 -658104360607340726564691316217741312 3774218749082520688223057971511296 1735786249287384940307801561890816 -363806178548480169614902614940450816 157733540139116900297554662522880 1285292326286472884267717213814784 -92553990202832952239688241343627264 8976751310208715331656296756674560 1317749049000730148233867698372608 -158903511269901828511656417605713920 1593852661828541239103570080432128 7913389123840693608524694257926144 -243602982127232846052433638339903488 8154939213492272318366331428667392 4483109730775811752908373079621632 -821420088283068690398986604627623936 9946454179437432812328995963011072 217518843939753921051519824691200 -89240022804040806918538424588697600 294340209074676452744243244433408 4422266583806675947333250644443136 -422687618181723258134852854515499008 5063879827089047872399368203010048 5188422053589550651149423510290432 -101162289659532779294183652386144256 4959367332536271122856528207413248 2655270419734951714088477804986368 -367470726568357522976002793275392000 2603771285898297845833027286990848 2718474975331937188498865708335104 -631008231634260760036887802870235136 8997340001850303233693442732195840 7298176429649041030731959887724544 -348198781875648287747000439960240128 6783060490003897820970554310524928 1041238948228799641044863338676224 -197447208033497081960600620765282304 1299587107511838215930157973110784 1629317647507851626244801514438656 -899751446126626762928957601068613632 6627811504349222403949257610493952 4886096009705791151377361619910656 -717769013539907021449150643843366912 7819856779461847324419520859209728 163008188205294294996402432901120 -875115346594306674161961787807760384 1863782295656936752506310110478336 7851310582036205005547422447828992 -132463825677485771803075097789464576 3645374590779910462638558246076416 5111868240887078464538849472151552 -382138279451853460151660768925843456 3052408200753375989486142466555904 7203753844943258254957463316987904 -122156195272715415251553675062018048 3815317349851526016405656192417792 8818265060743085942421660880601088 -840716289870282563431059829609725952 4831414344745273705372135563722752 419545035074493462604427542134784 -930205126001326186966811216437051392 5210056923448340050212150671572992 6354784745786822984484459856789504 -317992760604815376392818807493623808 2500442250308621534467458231959552 8212377681097990109987607179952128 -993648057281001888960597044295106560 2655429340280937157263064234459136 4884713142910735987957748914454528 -73007332706196659654066984611479552 9109585030286651718520920262836224 9256961524165076690679666732695552 -99787781721740426022986394185498624 3717635780255790909503045212569600 2245344094371834657521812939735040 -287217687305300121911128861750329344 8278229091929405690342763793481728 3885258855283338796422572216942592 -309777063675299611954506391957274624 996238361161011584911315526746112 9249725580344793818943246858977280 -609517359041050860006077545419112448 7212168066908319820917174110781440 121848855705231087796950101131264 -651258583296603126639085117367123968 9939701859018688098269466869104640 6520548867811878551111274413948928 -465068220706437652046197751711531008 2612989735439174874138067645497344 6595317525654042959810543346515968 -988362380462296954224690292255096832 7960708452402237484650700528943104 2299718596147396379778737793662976 -335581982922308644220467259883126784 7410212594226177614192531916980224 6790132525853798327568518992625664 -595683947489097782610769706188013568 8211970503909502321503853348913152 1979086721571209814816626699141120 -439918058417568777973561109140996096 4782595994121960160385573060608000 4623717293301355794097462497509376 -430015096189271168615559209123053568 6387061583585523873024084887470080 789700368850207712354502822592512 -857300999799633313516600869783601152 874339204431622026783671468425216 5344133309884147771403211567529984 -735346313904347374862483772980330496 909903900209730063774029398933504 1298452371430422656746935359111168 -771869820579111420219793071612624896 1182037271627451808833675959730176 2503383486302938426855400090370048 -377297021558873231159106675039797248 8832178476831216805156200613150720 3616074141886610558657279251447808 -415848002741566644634821858267496448 4724780373623507926245325219561472 2769659247679926737466127892348928 -535473052236845674616031882262872064 9835019911860455324968820764835840 7386291940674528331353502380982272 -453354263638345870079477528108466176 1009488895211980736830048024133632 7788053700726706251247975068073984 -777891081599635857129166045655859200 8736481638746378730519584005160960 6088399103015907801998738629591040 -262527102874430957612334558790811648 3825970844604215975100826462978048 6642962045212560201462209279164416 -785588578472221379986430002232033280 6888065664831984009334357353299968 3185001813848996095771087059550208 -32295278446332478954672542520967168 6853502001040736837793174855352320 4013854113797241848997498641711104 -14612495845998077815004089517342720 3144218123719233943249947776253952 8290774827569710688476217628164096 -341093854310984115349406524265988096 4869111406863777199010600781348864 6844085053933898695040573519167488 -952453572369088417052690835386138624 7767407608408485475137431911006208 8448493603485173053890862052802560 -363274682332929887327982277481201664 1989884475449018021342708947222528 2625037897024319889996580271423488 -404759530180047207460135645504077824 236293053378671574211248881926144 9349187989754546236608114444992512 -526287935418844958548489982441422848 7625212100691989957447489064796160 6670492356774147961929490929549312 -895843756206376502429578829391462400 885997395362237032377555246645248 5154394345017183235149631353520128 -656755496799526181215824535336517632 2738201114641226449818931899138048 2211082724560985264995726453112832 -408574328892269505342020126223892480 7365005837731605114220598788096 1910963588211368794598382606745600 -598005558634996619174459039423660032 8851577936143974690395254417260544 500874211766802856886574585479168 -782374463267725946807380166959955968 8806392347754957013271567340142592 451687751310676734838537839443968 -9874456092343355897423340438028288 6283698336030877132287977042477056 2202308189367982258119770296549376 -518124103043325586149380134291898368 7601009023026833980913492575649792 6739921706560631319784641890615296 -271637093495997780261591340237717504 1715572604416279089684559956017152 9501214494291391471742643855163392 -966597281498695479400712104895840256 8014345009072939961265442015674368 2220219444268704206984360631468032 -45364667891071659457632212237680640 1313328406057377240294998151266304 9157947735593950892731309578256384 -664582659197114477091581623529373696 1428188114816179401326637264928768 3166400943832426718219093661450240 -547814637222293818292029905805770752 9814811905268974411391215255683072 6178427366493887053727677103996928 -829078413765386511305604778583654400 9334288012758912626032751350382592 143538052992799100311108126244864 -837662181210467540754902299086684160 8864326740754887606767005718282240 2333989593856548177764941740113920 -234351075539961483964757435891056640 565804852967838681360047515107328 6840401060489776167634288148217856 -199797701813276287981053287939964928 9805718988639587140012116434485248 2258512451889779732286376582840320 -761690401308880695383464230810288128 7388369888994009190018719764447232 3492369248214561656311232514228224 -301916664186494436239441349792759808 2502756715145226235587236179476480 6534652014683082300794015544508416 -493268453875271722373523214331543552 8930460264086045793365978303692800 5821022240393117513357227091558400 -678392123776707593526823995341537280 8721183222113238743698641564729344 1980752847571682896731053278363648 -397482584851433375115840947209895936 5781615458007783634481771735678976 6213215474988450850889261228490752 -867543181344766923012753335089364992 8874879946675223442187821726564352 2180632066200566996669686964289536 -689471502211072538374093005333200896 7572088554677207086435472712400896 9300433072584361604719912262041600 -754227080100252490882146237683859456 9939275510364914597216049078206464 4467858629459699329839430436388864 -834569834167605712030212428738330624 150763326615092086498244878663680 8426494398495446941782640697540608 -311566199288171310506047523539386368 5912934197549237596524152040194048 9112482972866937183977239610392576 -574741396841248186898058508947685376 9181863252821245665522602938990592 8042727660230141615547215429763072 -746307583323947702959256615493042176 8470492552116543405818147722231808 1798192149571333062857694617010176 -581345293425963624017099791521546240 5710040348437965352528280171839488 8964522474714270439375911910375424 -721242046211719587453106452711866368 4976643683485357309533850037125120 4041077825489380957960034391687168 -544938049392095112645435194251149312 7308790141622193668703023095873536 5342297083475400774411665463574528 -833862568725660019735551423673270272 9604194126343205819174506526146560 6107780407139568320648867185950720 -85348495203479086133805574147538944 4726260681681300840235396602265600 3505899082532386842744551771209728 -660385687329804741109041473874034688 7950805728225227688452552956837888 7589333315552697743662777217581056 -716553015120891690998565635646029824 4491310600360121916468994095710208 453093865125214091030370833137664 -291637909515585421466503911879737344 808555701761023355202257930944512 3550936359213179018353525687058432 -187225606905822263642806016643432448 5616520904704026406498146094940160 1611181823579148638857467413921792 -700275009557571646181121630612226048 9716369399907255787982957444071424 5021279534820511682625333817769984 -715731740094588287380969756014149632 3764315886766993532613885981360128 7564064525992500394577847553884160 -985032757267536325046233293234634752 1551075649932653560923418844463104 1288838610755301677958910682595328 -746761861152679525588255574807543808 5748424891922361161265853843374080 2517965528562052178498314360061952 -15096265738324552579007964327706624 118321707364955107224210588565504 4848182396185803642510056791998464 -910284705992033614033100406905634816 2353298608756257664465615009611776 636055619997833290372427395629056 -62899527840999307955840925340532736 2479252521334077783389783013195776 3778038158246579054373943126261760 -914414990675548017168275723991908352 2465244120108366870414816278740992 7489507034578141276941016205623296 -437379697251886761244536280786665472 4865181583670400329060233072607232 9196253604022575550595762399215616 -557565621995094083127568638408654848 833371997479556256410107669118976 2963956977432878630360288289882112 -530286432476501315972889317457526784 7760237432894238674684405784510464 632711228718020711095842868559872 -228675799456293881519516321461567488 3472274351269643583935041536786432 2333054222717321320392013733953536 -238842261790647974160553134360887296 45810218088751249445880881741824 3522823824071985130819273418080256 -643676040200302668659838856024031232 2185642643392872031137187820994560 591939550490047338881095265419264 -262348591542630958269693023565643776 8610017549268401855727151869853696 145726915848656715879320538578944 -701266561479698027187171699172835328 2155438184703287185074537044639744 8747692240376616889829071345680384 -309898273322682122620378136056954880 1910890551435226039535411673432064 4273961360979195385220158990581760 -957880735460377085173065858290810880 6752498651591510521363330618097664 7890725403570912906297954128625664 -223343836294918192776487583537430528 9993728896008222125863442732548096 7453297166856305124166526832738304 -281556534256275382369190664885764096 4741800972177543265267460108976128 971462660186850461323931672379392 -730377420721255928032676373770272768 7775723652320057507855635224461312 3930315624200415466795365105139712 -453180969680263497768048228942479360 7756475857292826082820810130587648 8903113785617138369475615439978496 -321216459290267668582387410628771840 8681850945584926960030772868677632 7459369292849729352342985999646720 -794488227226297313592646049686618112 6145555049811158074197060632969216 2779751831621288050055231125323776 -65680016944805945793301804933447680 6853283893018655133654892851232768 4344643616039726615886671959293952 -758988344685855096493055563234541568 7040525775731269488859414897098752 1634688039025239527775358641242112 -195379637888880819812799486946705408 628762214140684790427033008078848 3958956201339978693759837155622912 -854895795394973974209500095042289664 2090950031815004506618707281182720 881284654308907589709477284151296 -303033442835796274212478636357844992 4144483856793761187792861114925056 9724192091165408468300863627067392 -148659732247941522141927301216993280 6585667089179768934558329858949120 1031360108112648691459089944805376 -383537789274754545223038525016899584 9278377306666529789260809679929344 9127082428867785473531755869765632 -163916968797978081194547128077123584 3982940426483273672647499126407168 8348404577922490604022248081719296 -195831332488485348431171209152954368 3613318971036091152636734271913984 5836903872306754186358335161237504 -408165448879627908327321025164345344 9141503697764603280318607784935424 3268432984031251709203011189342208 -173281123401423665713534669691027456 1731841190596197032861874924814336 2067433982711049274559189928116224 -917341209323257817063107146337484800 6680061875906149580845583695872 2978383804778626501039687221641216 -749948843176379867424862261672411136 1784407941347195790710725188517888 8388832601403039640721683902365696 -804288590549687040348893750317023232 9264717592106605998576980614709248 8334312908713487043645261052116992 -408038225037652066703007008021282816 3021600360720690270920787319848960 3955142140364658464014985437642752 -120261258596327148579228514990948352 8560913871706560375836025353666560 7200970210918205975927180111118336 -331412719470349977504635548162064384 470204036215445727800294595624960 2404641135376952790385826535047168 -411831343184477790200083694252720128 8291130309982236847584951532519424 8036433502612803888457289669017600 -379952712858493400245688612872519680 8097336055027250205172854239002624 8060269885718829736108260904140800 -298426263846249263627529402072432640 5712766558815294233929718368829440 5629828756548517526852021665136640 -982065413055135188823778930219548672 9343409627398310955560599610720256 737336229608511950270037038727168 -566152475053010817098298011517190144 5264898259559444786267932722200576 7417659001416040711323365270355968 -282901958208728920440007197903028224 8558385425156854120507690918608896 3318910443886674060656075102748672 -482629556572508997243547393810497536 5880279773971791671094671814164480 2764989540629861252519214001946624 -862742030593699307532991632093741056 1274075727216465892834547742015488 8390691489992887209618920112652288 -768586563317628453884651978604150784 8485846768311748749823415739744256 8078991602074813501557625849905152 -450916119034707988800465973884747776 1633693425154508946859648220135424 7753291373603279324516861043802112 -64834529954250790995853331478347776 4653694307765640506450247034077184 7821452077610216303775709587832832 -284781144623436385777323417154879488 9063857272717982855032244824702976 9761039975924091822576475234631680 -691062788233919192088538676801306624 7014299975231756186305275187167232 1806114755083647146650988867223552 -501886817726448351575446819642015744 3113541060380790663755338614833152 6114585251321362182593841469587456 -69773550916086572508540592315170816 2112596302557709345596553381806080 7593875504841276522640074677944320 -358524314232906273628496923105165312 6300128866854055472528611417784320 9665110234914399687974656814350336 -944030294837279542010673821130948608 7029573399487503236036658521440256 6280671366770873756273098423795712 -791248560672596508496423999850414080 9618366215965884501328113659019264 1874977494418944599564423589265408 -490543206005584702344663147766349824 3049093138420123813029337714655232 3113073237396766638144988022571008 -799311399290185125631636864248053760 2419888359189401863060025121964032 6955643652461283452726981664178176 -295177619245971218213273729637548032 3707843972063370908793408571047936 9836094517915460326375038031757312 -714284993446942429235905536483917824 1437510449759429291393957257805824 3123778228874882934679544809914368 -390127554544804419041519001785073664 8572650152854561740902362131726336 5898302855123099043855186928861184 -814971546283586398025965918916444160 1754048468847192496595279464628224 8930290307921115249832314068271104 -847600914528585834384031797368324096 3242053835248532515111000524980224 5186949060100032000628241391943680 -672831238205190397379738308641292288 9102563125039077344664083494862848 4388301817493604075572624212623360 -843160623334704939873993332474511360 3994544382025459538266889719382016 9267858464663531518596101489819648 -677243571637065382181470815872090112 5454776413244021904478123180687360 6164607741291286453617630224842752 -610837297129931615545859907939991552 6736140400835045059564633677889536 6408021062206706786679907449569280 -505426530986973505289029363475415040 5220474500336141166173537066549248 4505252637679976205657886588665856 -130014527106267880271803018077274112 5454116033430187347179104685260800 4534974627382723123058262832840704 -683655550170798623947298882623373312 7576457356997052630060165748490240 7621147089061118202627835469758464 -98103517085431929445809019714273280 9698262613230028651066117591138304 5720987017332847988599888241754112 -167359125395925661868779941341954048 8194358835162279772374932243087360 1547415301057295749067827404865536 -325038409925642069972138663255998464 9757094148157836634587741540057088 8305925486652889769062842081738752 -925717700423499199377372462249410560 9244845049160804011855993297174528 6949026674036603698778761083224064 -939110636668800938238422151447183360 9544230231628441068421336434475008 452658436626580514659689857810432 -455979712219075602350109006866939904 6243196724668330869007629032620032 9194984691123237218370947425239040 -904562629371824679025397634521104384 2983384556022092685589932601769984 5749988520166440026249312319045632 -931132718579828464390937920795574272 7659585554715981744524632705204224 6601317216575968979946509883670528 -432069800493843205526730492319105024 6336441834036931253947675652915200 5006574432641330674039902793891840 -928954364019914965894163425327579136 5007809241034101072446889526296576 1987785347843163977508704883834880 -133081247349328870675476066401779712 2630947132771757282921323278893056 7257795838101157612771366899023872 -582807640509166943782305835352326144 9234099593367806362735743636340736 1726549291502092230122656564772864 -113664447069127257714932241787781120 5237870977700155045960950900326400 8694267338275135743614104327159808 -105137625525674926084052959042207744 5060431947956146251175670367387648 3889807247771245895246863184953344 -159873835779816906553033114840465408 2024813845150914309955423303630848 4998103832380645980433945974538240 -510464810053692487266258794009591808 3542559691028952358775916209373184 1477659811618698428510899986759680 -306282707440623525588887883701288960 9548122388925971219812874734010368 9324184872182787557678903164141568 -289162931849099444929600571607875584 3758242115165035418333239819894784 8101221002162492700278236869820416 -941204652674413723474930991051571200 6816858747978087985101495496343552 1550015725217192407658979966058496 -892267917918441625781947469846806528 1794303496803472446693121653211136 7417280483848419588680410235666432 -102435599422992082218339321323192320 212150125658603600885896093630464 154711793138987622579239487799296 -285451573632654256762493791994118144 1412885309410878068723355054243840 9972790384809021853489081947783168 -634394271661673933816218865765449728 9174921307473629349593386307289088 843047892949764565351054190837760 -430805748643958683046668774437552128 8418877416569740495677757876862976 3469887144404394262628545922596864 -518233864751156651261988843705860096 7065999183173645510715833013239808 7966691131788328156152148132888576 -35010510686870466650069648166354944 2649081897534508783199633027366912 9348399998534673983143570491572224 -701602858809858998452097351950532608 9871971243030668305204746540548096 3935387961609613382234564701716480 -408942687554854992429579374178598912 3567486325602717774908612738547712 8769580957611154195965271179526144 -364504582649880956803180750157381632 4071039354202325461229507488776192 5340376222804275257032552493350912 -365184871027301655215467748770447360 3223508576056720483367018934829056 7274585171629848149399244776669184 -710150169979873517227767653671632896 7183575812048740611840102501449728 5776955050375993397272688126328832 -630251163613296603437710048466305024 9356296250047120302868033519484928 2494230464222430890577059679043584 -227224189372519656367089967834333184 185096431491628221938166138929152 607976649018794534962785865957376 -643602520225913772373394157329186816 8549883303891836324152118955999232 5336946415977360817335466176020480 -733110880481663429933660582690422784 4022831687280735892640805332975616 2146053070214547673674582591537152 -618491427801321827094493118607654912 4046239482128834146414559521406976 5265143413878178226779098603061248 -680480324484114190843119168210862080 3770293841191870207386335987105792 1811619708758592499077204454408192 -843931519183012875792321819627749376 3243113690894735565130679497785344 7823518669539752126966189546012672 -360469953054923634173808147745996800 4589829582615007214080583484309504 4061188446073530142394387305332736 -815690045748914498589622807696506880 6045698488182489619025820676784128 6082861173069601800265469844783104 -500823637743927027679465977537363968 6680556713980656085352439988879360 434044730377750279810390285090816 -453873091835171458628430449143185408 8806870816361678685998398272700416 6844382738120509024951872371294208 -768820017611305424036748070272106496 9037242315132976218390348307628032 2487537560010437492791568018440192 -148245168213295715028565936945758208 3117472565967643160491766514188288 9929209782378694934458190809530368 -495977909152773294699305359290400768 1678886421756353318800014348124160 568687188524530441226701619855360 -549982066926421235653675513492275200 817042794736006729639559895711744 6808477009486354794958455830478848 -871832542486008444291376980384808960 1661026184752863183989270252617728 5265704950969443730398040763138048 -690804386340476476558747577777913856 5377879008758559419019605418442752 2504820889338746156682249739698176 -461656610314701997021420291224502272 59399772518063824364226576646144 6832431695422900902304338266816512 -376690112379872635223614131300990976 4755970521343743995818959999860736 7226958609209892406340118378446848 -254831591001547829996022935997906944 8391806888842801586024245886976000 147488504366694701926719768494080 -315369616156346911473319895071981568 1018003277028118084851734969057280 9159979544533983432852948643741696 -153581314840632832327676009841164288 5789305740777012936133427217825792 1215330708443264619991349889859584 -553126323148596235744413677791477760 7286883640724341015553657987399680 52180304545815653460890921992192 -574603259488452352706798863792472064 4296861524040229051268168413085696 9408487573344616547989325436944384 -910558973007989935275049748092944384 3636987917066772501201512009039872 7978340663394456132762690197127168 -486836178321216346714537382704578560 5556434577953330160946521846054912 725423371628288222790822662242304 -783275481324360933643011534486503424 294444192778210810276751077277696 6810358954754173173049580733857792 -80476022639345694077168396315656192 8650186889901176945769705256255488 5679698747141001230567973272420352 -792836282624158761917684956115501056 635250107577825588710639738552320 2607551203977905172991347817185280 -572582583575957987324922530573058048 1608752233565862942566010834649088 8590112875904592690784434332368896 -266040574080489447366680015276081152 5466612726866019903255621624922112 494211417786088950555749386289152 -358616487440533650987228333877493760 2642799969788171132231489951891456 9863500719548268360989424882810880 -80155709127606504931015195854110720 6002281950331524975907485123608576 8090830602000833169263755058479104 -912256232000536994324346119124942848 106723116877774123219285564194816 9244047921236462433560150327427072 -793459491063741328571380792958124032 2921667661440319357407208291696640 829890075200318734928218544930816 -625677588377526065852246953996320768 8561222046511086482029763171975168 8909163361544473261462360290230272 -796677682848451932913387814543949824 7659715967593467369013613214826496 5074264592023493743052172442992640 -387708853705134057250542539734253568 8046164882978905360981589930016768 7859180573193334263168587129683968 -938188839298320275440621348362125312 2756970588357489409202459116568576 4253059669822492107314194609602560 -915912177381614853211902039625302016 8584977430469877708059936945078272 7094835285984889642982380620742656 -339633426131978036358132267109842944 7278813065797678075712106213146624 3400000073859759006750467923378176 -767468130756021045453633552656629760 675751134101989366433329111367680 9877261653125220285535382906339328 -396017351516976946154484947761496064 337801928492711312240868809768960 4210502806054092850738096324476928 -834011365637413779291363246992261120 5057970972024628923175646110154752 9833249435287280118515335522418688 -151661832352587989394955366624657408 4620988520944670233130487978655744 2855926454378033235668782169456640 -661737618200533555299048099527262208 9957817760877507561436433568759808 1330733226475503736184268642058240 -51362182985758750555345664469893120 5403815095151581480826900364394496 4783123024500758829139980074352640 -777918289316218139103196331957551104 9927255053640675978958062919614464 2204555851307890846646398508597248 -309451715736056669603250556129771520 4644278447452458590902530001076224 1130081996624334975596129004027904 -371939407672436804888568625096556544 6732628755112374592131756978077696 3640075816108370308776773812224000 -268177905371834283540932954431684608 204537105723872044827455822757888 9902405276643097410111975792312320 -522934317256528305753380714289561600 2709077175115092159595155361366016 9335064934627309603370678978871296 -174367434825248216940333199918104576 4014601849514209423006330733461504 6939572113236913870440954045923328 -60296064853250841080722150385516544 2004221156181624022740177619255296 423454188645795733739258544914432 -798878162397311550418457649731338240 9683533172581096302999862534733824 3690539248531888392084161348763648 -385900269113215785239050831200780288 9811002153235120942505990379536384 5549268626893239590507740598894592 -727548458618681458779942716019048448 1026447096507746685155518359535616 9926245930301445049853870923055104 -61939443161883995658470898154864640 6146217414474994192225772448514048 4760362435596969828829261631324160 -377433007220861942207495021243924480 8779100695617685209433154107998208 5095211449329216178830091499864064 -346305855504226098921663085041156096 5276482675318967646533301972238336 7696144514361916638472805936005120 -809665118216306686244873764952080384 682792677433389934767875312058368 1694447351194552668543133211951104 -779123225473358209980136610473181184 3569780777777302408830210451439616 4913098778171870452110621795155968 -44327721217798560912044136062779392 1669833754525045291204948820754432 5459801492195800929218606508539904 -595571178074098040340379568498016256 3513599008617971553917699073507328 4434787129019052716841511963066368 -886235942748680086778815944132132864 8456493996758349436710421159477248 7533880259545008067655558294929408 -149293989149361440586861759168512000 9096768650651562691177372884926464 8660030805836897129113159420870656 -717027411163742708841500044798459904 6601103337664656569441380275847168 9008918862213309324362856552988672 -833251854553419332173577092060938240 7052293941700361924178636900925440 6724374853704918553324983827824640 -57014291282829249654366063258763264 4048094536104783811888346529005568 2351769344429516364238264352112640 -134081614606679760082216960258998272 1480869055902571215449355492261888 5184208033297054917740215824023552 -453278510232407976989252298047750144 2244520799736723548554066831343616 2740226913775852898010303349915648 -26822862454933650829614536036712448 1854238928343705189127681973682176 3482791139353382478855672652890112 -461467673285621160394362640612196352 5909745716531989894193984003112960 2254131198677304550453929651994624 -198137621380884511155444066713337856 9651645689918425769465884631367680 8764739736327345224218718091870208 -891760485686219571719047203596009472 5493505131901577116762211631497216 9297267416462018667819708685746176 -735110728619920161687869618930057216 4612433516756458385005108260765696 6127363002591613829997521881006080 -23560234681173246714390665010085888 905578391303914794159454266851328 2045902025024203288356742607405056 -499199599378458781621970576745693184 8058603095049275980833760863059968 5302982345013487076866612441120768 -884521438763360787203566586216579072 928694123378764873026785654079488 4664268976958407145012883842138112 -25450531513211895781453218923413504 6580992474536002841952517045092352 7899038834748344445608263856160768 -110477657506990557312404397624393728 2452952956424909537761022177181696 7048445111549393663716635782938624 -744659110477516715433327854725627904 9625316733098265318135391137562624 685336968894580150142379145297920 -181563019091323522251145818578878464 4139328573776472058771873682423808 9340815794829789147815217486364672 -632274633766403358391328543038504960 3519339296767636356148751329394688 4426029808069035143136872576843776 -160287028689422213090166839602839552 7759013908769743355362685743005696 5094365061231190790604326592053248 -905835076218903363362975677589487616 8210197297986546837273374575558656 5289482716175686592971443682672640 -679992217929823629890780628556709888 3528201668296165519920872682422272 5302412919277002026475015781744640 -917603025156925790246120508973121536 5201372857243679193516852627111936 2612859534426077487693402824769536 -731706043944227065498837288398880768 6720120192569883174375622027771904 4782619254955294579090535248560128 -494129880973740229522132177942216704 3868534984551747408680872583364608 3398418671109602948261362024841216 -9222563305395626086530283655397376 6481733823341228732303031840800768 5722124003779858157510129258332160 -222883309944720314354416260627824640 5875471043870335703698032048472064 5434305150951902680253356966936576 -7814820731457638035338626076770304 2013397026128129442077315684106240 6484948928530553193622025216720896 -260322808977240567609077401187778560 7018903783546296327855526926876672 3302370981928906332735118510129152 -541274827567005640715133446369837056 5005092357702751602418389258076160 24375566578540079102965877571584 -547795909003655396889928171786338304 4016683343804915197660046469103616 8221816306394061741144441199001600 -751273913673033062100903195058372608 5187923994445382159226213970739200 2130561237084393908105104660103168 -654122820700372467215927265812545536 478349482264096490719455735709696 333154793031609928279426229862400 -312993679758307900402391728881926144 549402255736216389710728621195264 9014131846759555762696301456654336 -756399295639777253726783701015068672 3549150570363907448553094051266560 1023480553469862788579600571039744 -529780797227365261074307190028763136 4079572911984371017636083362955264 4753795682867376111106335222792192 -919588604269491811315460899048783872 9205217533809600522855519036112896 4839204583210218350108831370969088 -1787731687757056498295155552419840 5404854083125173703746686728273920 3211405941195254703983222247653376 -254527095836870142698957501513072640 3853382147224647998212342737272832 1949479611448226919927955637403648 -922473294344657266875690010101678080 1647800188670393755715706627817472 8768811976590970068991364848156672 -608539705646980381292577654902358016 3002684925411167945700758360424448 2708849604960926402508750294351872 -682118137161715241325935459060154368 9415938769908340699087641839140864 8660243312364295348657302372614144 -575668612631968879737920646039994368 6175307921872664697603531793760256 3223191548533783823236520826896384 -503800637967613365388960166068617216 3502285493211589635964863659376640 7579931783523742802117539940794368 -789117486792612809125943078476054528 8028324971699410023490691191013376 5496028663148557559437652645642240 -546020660253354360912790636940230656 7075881891636223098340713370222592 9182942021970175439844180435664896 -375050739035934492870838613209776128 4702155510449215624043527791443968 8079907659109616232286521267322880 -695892209894340745247144321906376704 2759714556374630972686527780356096 6454227853301800993927147382898688 -10855615292603297460984967424114688 1865518061362283820427195925397504 8902747878603537496037720915443712 -344876062477129166352862161141760000 581188134042223607125353200353280 3709936405276060381617463014457344 -962597870304258702223990214199607296 3161782666042729525419498463559680 5782908271834247342354610905939968 -457986291012062891346998554192248832 9035364990420384653384735103385600 5263882623011323525030921380036608 -429977950749206761767879907118940160 4778607143113881387463706364870656 3245860813438642219307877997215744 -185903956944477293118654328988499968 4186567024463033584804337649975296 2413653516425238968823857117396992 -857330952991499837090154573044121600 5425368830777035075458158750072832 991076177990996235429245960060928 -80091517302308893754313939443777536 8323801077374029342139056373366784 1360290754049601387322785306509312 -953053167378779519169562658337718272 1472563689898015786483904594051072 5863868133680250108061240438816768 -48439970987683604550358009376669696 7212071924303624806213658515341312 2830108818111289252317949908221952 -360925515213134125705845773697024000 3626092556160006462210719776505856 8111104234103221460477079290118144 -795208156242020472714573897145516032 3908812587149406123155064390418432 8837378026492966233550058046881792 -798360974312753513864615317248933888 8593183301292435434250099788611584 2051360513892086170583308133466112 -226272007737047898988985403687567360 9491511088958401644743974205784064 7074712085526834208510152611463168 -784599221181278651042671989197111296 401841463594781602025502222057472 8571813260621146546166992681828352 -487520400352747904253093800237334528 7544269182916765647604815247704064 6114787766133703776169486851244032 -647601490831875925010863605717925888 9054969815167513799199921461526528 2944009589388594367795987931463680 -185234381191613593816748857822806016 4240573529969008283323574125592576 3845322583341639865852105012019200 -485576047400472719159298474052157440 3643654860327558594226985348628480 4221854595165793487556551081197568 -760189333083910542195992758056910848 7070971796670195279755421123870720 8706534625606759146419142596231168 -622947891279853769402002593938407424 2405796907949611976399032349097984 902597194554189483694608827285504 -792064574774933264869480678645825536 4736899820522060237753731772317696 6020587615257733976815916082528256 -586919612867125971360877049660047360 9495742550620334062087258467467264 955569034841889793164923073724416 -160103180212928697313040280653398016 2528004824321909838047696711057408 2253995674050757302868362089463808 -921627289020220210994389031019610112 4117250686021953049561050799669248 2883150807768161341514438947110912 -213719469464518514118283695038136320 2473070510894313677272114985435136 8356340756457814733710511944237056 -548592641893117771670566821232115712 668165249451843438099508104265728 5647248114062846805182624468828160 -646455975539741491575652418974646272 2575372990932561105567685623676928 7808476444292504205989766450118656 -763791874554583550718883380317913088 1483815630772402711078901118926848 792375188356309523382435301031936 -872786179907529976535103071905120256 6856624652391719317584073709322240 5375096085500756834190588511256576 -454238185003651133697627126373548032 8414264488416996117179976380317696 6463739076383175026648748386156544 -441924506864745307317655087364440064 7953579577742993904253728337166336 1885744523995186535832786971918336 -427426591087275053729036022598074368 572429766135906066173392939122688 1798535065923805630206859553013760 -156027687750360258242749366341206016 253690091005778907686453259534336 2698926338538920507327534159888384 -997580331043142243400644864210108416 2172143467359765711940033745780736 7451632391716870387553419346837504 -469804610848057901064712152718245888 3828164086919010052207060765900800 4363604834620966226523260561915904 -163746459725417417583154455721803776 5897303513238739154301254260228096 8846862923202175224686054716997632 -646896608647602550788106174827855872 7189287184219180105745658758037504 7271554034619304631007089197580288 -686200324398915795463813073909841920 1293345181962465228491579950366720 2555797748437933387304742380634112 -541324367753879890972225712817176576 3541819658272307308617007221440512 309364808715801958052718851391488 -168804916506678004103601785598377984 7419617923928097285984534197698560 727490565262469601810097454972928 -958776835955800165026622745987776512 2065588002475134536961363688816640 5757449654794015127671988442628096 -457264060014214204461904548484612096 2782350125083642889354680664588288 5197728855235078651009092024270848 -286653096619700933940914865064378368 2812517096009240520287159960207360 6934652768003191966334111335841792 -646483510813581831661651532307234816 1107552813936820566696155123023872 7408063253134888981937343120277504 -177576622343309862393686616195465216 8298377163492601213916543446941696 4864411521961386563474625612742656 -647490774967155219621275870951374848 434566957568836028952542539939840 216533096601284534738242758508544 -117914868852162130087365291976687616 3003074100967127289916104963522560 4099912373753024531388676777705472 -908017382228300438022291717305139200 2366320607131658400657005978058752 3058718837271160892050611852279808 -599729886253097010967190801316052992 3214099996579284961363661860896768 6518843771152692308481653686140928 -667594473128528138732810330582286336 7184429602254765241598234830307328 311515545162095881285094434930688 -132437639753561754228033468349022208 1024428799230493454405904636051456 952608529237115863924004395941888 -169752469337830346509183336591654912 103283021984106036060659445137408 8572628755598974882017581195067392 -174520073685408121837286793769123840 3174301441321906842999726041726976 579436692244025306830794540449792 -510145366053416837088490017261617152 9335915151234407459348214521528320 6059757317810436652762879420792832 -660187185225011958653738209576484864 7001153665824625697276883663585280 5370906721396598504620520586084352 -299450035206946034547641407183519744 1223903299848457013492517781372928 437611635318072654216028718366720 -689363785003366056470790194692358144 9192887292009027822164196389289984 5746961685992538409505857317371904 -317151950878971566563275098048954368 5110072581594999657993413907709952 4373449722182915801216022439002112 -934684540430018868494765895826014208 7737394779416451885624146687688704 7034822961531739819940980298088448 -780683049468272821287701614780481536 1375115213568645114318510490648576 3161557991004560957470200565858304 -143945407289909161430586381643546624 5058786924463761605039395306471424 5607145412008764441347382837248000 -661867271000566142755165736938766336 3665640051699231655315955695747072 6767411801008456487261153108426752 -290107955286855246557646555847852032 2101610113502458270153373533601792 9965683869874357522740185160220672 -237852466526561812552562377786130432 4473621717928980910465692609806336 8425392552749868552547565964361728 -839607194042725183239811027483754496 7970776931261113270845219891314688 7885793443126554230602629570887680 -605405320747846567130116697834389504 8851488065807869269317629903896576 5023140463515764527836460216221696 -293967368184457556402077053046751232 1873022886953177050900422402768896 6349979337582549941384884101578752 -371313893110717304932845464756158464 4118052939509208332771034646183936 130697494549354190357242381860864 -833776959176722982387135476809072640 1928052133315361975937697394458624 6856503001640508280514792958984192 -245087824087145081539693198255849472 6776455085938377929134570018439168 7516428137623708395674851044491264 -984525929394626278136252000137904128 5241523146235210199846483071598592 5620540546030517123317028429496320 -27732273823822775087952161702674432 5390027569686872906849893683822592 9498263969640236966216329345368064 -993247331808794436118099370946068480 9048451651837700664678926478475264 3023807398684323148869526070755328 -782724465894247739251187792232841216 186068134531929044855531985960960 3141250761007490817129240896471040 -84490921093446862395473716089716736 5063177857777534225305583405236224 5918929874277198737671634974408704 -968856663273742965774958933173075968 554753323835953893244250049478656 4460532936575561002709631994167296 -217636318997555819437729566135681024 8005370009934442018722078267539456 6299018146867190107236356528799744 -915678580627029023310171471242854400 4212572282338185634392840456896512 4630384319445251495724497263132672 -422054644534714433946879038509285376 1680353139924869657859466100473856 1716891124439793534998045387653120 -874959352829148025932157320140161024 7514179697451493796637145619759104 950432993807353681476992888733696 -766836605834783651132537286063816704 3378947223425212125243637885829120 8770838825734311580166499709485056 -9881733146227075158292837334777856 2739897570446392682399117239910400 8842444981980895260354933384282112 -696497281749626564515329314002042880 2408668736022120926544439204118528 749633728524990102970922801561600 -501715044414593555461415098692665344 9830822422671400647086275804790784 502457910980722329771109609635840 -389901455210677879613450569067266048 4145560039388042836749633925939200 4075613996284111699327263021465600 -862633608736017361561616018374131712 8782006216833627632915549813473280 1701220144789033360728337900634112 -389327086897618254385863244889718784 2067536108941661183684021906833408 8040280237402959698256689910251520 -116245989949527380622069683779010560 5107129285576597665959340255739904 6106688975233624993530862381301760 -863171534269112156697773201950769152 6787554544301589374305498654834688 396207715023182076961642382360576 -311800873965957682256080732499738624 6700512739826549945973345664106496 3913989278183720033890666540957696 -601686238759155873745254697272344576 7287165849921046753368469967732736 7213306594557876115827363919429632 -607165752998235992043264921841958912 2322143798183789473241216296419328 8581498449404805243634843220180992 -39696304958735932073766099489914880 735115977782009750970237041246208 60204721622566480402291248594944 -437402545600989115768505133963411456 965205981176260787050343009615872 9795049122444847601478718508236800 -956561917160005825754928868231217152 2027709039910958099193177751683072 6726727277580666320944895459590144 -185162391523478849758222975506579456 8198044099636743754316814565244928 8179669729846951300373120404160512 -332685632355843288571335547757264896 3705653967158450378060360922955776 7618457202875839883216691564380160 -557398438687193209670618865096196096 6384209445799834420947754262986752 2360346528762233568917657432883200 -321235544206502990594401504195510272 3374814559991881239443809962557440 3262492202704188038347127764549632 -814046944852207396965104866352431104 7184297447071783752355575924523008 9887240518006345257911708834332672 -641184396450415718690269039421292544 407348887208734791044264284389376 9145961303545582164603924912275456 -584950055908151634088116333915930624 9736890141946471688715203478814720 7007661062259488336693390844362752 -282924709027175384847908183901995008 8429054719104805768073274273562624 752428927751963946490736368680960 -900178152031288271383553905107402752 1458711390880577588706676129660928 3672678360673170530422026070392832 -440257293684577945866738274641379328 9110450292050047643148614304268288 3567243985121071684255308530581504 -256593910720983686247079331772760064 8350527592641616500534841758973952 1141698625684975055030354127618048 -378200066945715167370038988588974080 1421659720279216086236216768331776 3360993247739189643085786162135040 -491619226073273837619754558786895872 5226982879158671696229938044600320 816525943361364217287271218413568 -907221198337739177284615199015305216 9176116673932527565381079018766336 2291345045704991629060504197005312 -295756078244219780651551904902414336 3218957211674532598936490242736128 9564029625683085893829239360192512 -988230096277681600547073618639585280 4475588783996400996488432974823424 5611578436775484560793604097835008 -663111497388558439243316161641709568 4124031500295343482875998927585280 5377377268557062522454216999436288 -317568353922271939582767141213962240 8267032404167845885567196775579648 5915314986298357642103499173920768 -368362311740290503982548167142932480 859143462082535846884851054542848 4003394743256402068955538573492224 -647283817289678438907048396947718144 1176541998053802741919696933617664 3750128099528584673950394809843712 -897443360556077606879646750563368960 9284728818862331369582939785396224 4303663944381180134294116972363776 -394676528608507524150117918530600960 6923842721289949286730908154462208 6947603571657321085162292756086784 -807345888643140249387056362673930240 3462560295657342469740231726727168 1472913021314206064645883333443584 -288889559344934164178722279384940544 630840917721381208105473814822912 6014471531181198513038889398042624 -356984568576677901253812720685285376 1519534896713475634889754455048192 9400090499605695894483139246948352 -342356274488883380253341276314796032 8441067769220422360753291889999872 8934144469394560017581093184077824 -255457257844461732564329039568830464 1134949928015740726925898926784512 3442798215891438996113502173659136 -348824837621441764315945576152694784 9182112410572507791574675551682560 8651651540336582691958654565875712 -280732320683252065592688160129679360 4772729254895532675091461151129600 5153599714659553008563096165285888 -259757413190742901527399184438657024 4634079026133121148434141801349120 7117981295661438704232975516565504 -859648092669093453285486913428389888 3968157821977502949134993782210560 8648684509157278576704945693655040 -6224862283402614563589228230344704 6659659213545580014614686575099904 3854032338877088677947289272057856 -422271334139267187265091646491983872 8643657654167473511443245450657792 7790894512802564667016753681793024 -720982666845999307224915982675869696 9731293836644890703723390516068352 8500512252029401588678100716093440 -471490616962365073431952338905464832 1306947454404200043764538438320128 8162399810827846183010124727058432 -847275213116949453230860624449241088 5887526156207000474286677676785664 6739801538704148822373769173532672 -806940431925814480216820617511436288 2462528443394711797683427511107584 4893590667053966580623867769782272 -184496660783964942222801678335213568 1165618516266382925343819401527296 1631243584591311992164784757800960 -876648280930129858237740944646471680 6881436338316464049112185909018624 2564014085303120055664094253940736 -733732036446034571246120188719923200 2862036362882941084469409173471232 4724571482136591284782559767035904 -623704282860790289176480054163537920 9487401061526680115728252095430656 6933624990572003367405548088590336 -546748902685788922637705395201638400 641880611479136950021221599150080 6019142936042792917063613991092224 -908590719393611523807554471689453568 9566959282661628995794908957638656 5407129178149579060940402906365952 -133774158045089853512574509055475712 3246851123024520544134749852008448 9318800893828535510823189539192832 -167096203734045325433371575105617920 6346441878204429411492788260831232 9799303759004593264011068854763520 -876761293256961326727204386358951936 8207061939384583282549428416675840 4262002317521355327162489990283264 -583812720301455451856160385482620928 2861960412520337724215126640295936 911325329352775924687895766499328 -40636262838773163064907924051591168 7244110951583769297746925900005376 4098303765044822954995242718199808 -705457240505160933889073904546217984 3831596329952401504210808698044416 7307915907472336417315886446149632 -498847576016812932514552692730757120 3992788244497949228645718014558208 3438189902189097147951058415255552 -870098497206065624431560220861267968 9054561016945781841028992089456640 7235176583974585449966653535158272 -748239384803270935505009543525433344 2160487961284959282646069301739520 5299031055495267838860089255526400 -730688939597827184527214769296375808 3204780122261816996823855423029248 3711743638927299626735887171190784 -909766905107881497268284363064213504 8910278895480490550060614288408576 8574639457374306499202913528709120 -533392121218108240502554262434217984 1511440301191636546577496165842944 5398042073275062013495185986551808 -900175101688678812891214834200215552 6525942845590214158311737016713216 9983528140694112002438257002414080 -724587925116813277816904222316167168 5950965232709669154670594435842048 5754057145389580987097572362420224 -443255413054725379727542041081544704 1457240305462775749524552169816064 8700021640042853020403655287767040 -900670087343819302934117282989735936 8576145631290546814468836974133248 1674243771764376051903937357283328 -619395391769891483755424856705859584 4507036556846674203505706101899264 3350168008573891652531625301901312 -201200152637968994745096075701387264 1850654494494221657127647073796096 43181234057360811052210006786048 -64167164317548450000841188516560896 5383393377019206566808851725680640 4307390147498096632100879020851200 -406585616781543507412292489069985792 6933488887211899214049188532715520 9598233495067928004026974131453952 -638494070714466100129394124916785152 8628162959653853308964951172317184 505545909771694545601325946634240 -752980636535820334291033880285675520 389901154059596825133866993844224 6592605685002496433173117922181120 -248186877554541710035243533493862400 9292935097995615161873745011802112 5013442740956369754093432025907200 -642165507800155890663883301588041728 1820624709221757011024792088739840 8023266426886637038136652151652352 -78198846567688413796240571947286528 275058047077694024541530669187072 590921893755196012976416913096704 -993396004809560919178521315060482048 4611712041394809026021079121920000 6739925510494412918197896465088512 -606137383353562450494860491176804352 4300649103638602945054126727233536 6208174928755796474271551650267136 -920252636776319891414169540018307072 5108375886297743329576814444019712 657815517760426563338783447580672 -255996016238790157144071362899345408 3666906020331993942030392896782336 1975147218276537235814774732750848 -208305208253631812283452888430149632 5493520976813062229729885636526080 5528197926778529958966191603056640 -521723264768932045295551397366857728 5793544262253066508390742504767488 7893678032740119168915891973783552 -782725197084813888572403162464387072 6644719866737745330731004800794624 8534823281167418380271591396212736 -69387760784375346624316961919598592 27879856291379852966707119259648 9944325107366517125149161569648640 -971974061271977643217840044263866368 3682609713790932416833034720903168 6050570232664913969354858418929664 -311393005925688364055564052756168704 8096921428184381782262769099210752 5498329329283910741879086861254656 -631696064352268978678928682235461632 2263668161688257478771082373627904 7697282038100926891240425170927616 -991908093652181820572838677945778176 5811556601084713102463781270716416 7384401475824939908897188035428352 -531272633919092038643750797462994944 722913990533676835956272310255616 420950092775492049523075467706368 -353749748433864204255014116174856192 8599114824642780391051190555639808 666059943221949926144393531621376 -883905826654897166092399659880284160 8763080353870617299069768646524928 4008473199377620079239358928912384 -575264752011466153168927086553858048 8236787263194166301433235020709888 2929895483676730267144804156571648 -648127062873597856225878412399476736 5885498846549943052184047455305728 2509963569511039953261795007791104 -427236191227449021187367157798797312 9559338608917157951600270386397184 2673585582129971830731124758282240 -350460835825520141330939896148262912 4854019751020012610821473074937856 8145130126644220980168397173030912 -71583561383584060506959827215319040 1980965621218877105128974911012864 7530330903432525088909489099243520 -678960884433166437237201880269979648 5234224372270642443126120959180800 2329184555573858826070690786967552 -810172236691308774445652049840308224 9103521081581120601012818749161472 3926069937056042336849266449842176 -348794775858889120323468302145814528 6832658530234528978154722491891712 9763399970726469613846211816587264 -699773965692393241998932211065159680 8815394611159318060060800008060928 7910384832023853240673197558333440 -534686433887191738206677973499641856 3444813971108013208902000042835968 4259044246518860514403361983823872 -387930945009621956475039413021179904 9177428579393576636293346186231808 2386502907526087423872460618989568 -338729723480484834631106250116431872 4745007477954400214994789597184000 8342215575289650497721785579995136 -84015728999851783219083443605340160 1026452108507434188227527030341632 5272846348642983734858099915227136 -568973851094365039198048730935721984 2147062304064590357402810599866368 9344715939073701170411969919844352 -107259483357393075984943766887727104 7699264149324650234060094765531136 7091120726296391975223743221858304 -303756475869599792783694458666352640 8108966309313896948742741517402112 6918620216303801785568551732510720 -777136179229776325476991433254633472 2179475948281617006202305470529536 1448094175825968075791794788368384 -396309855407893397910122668782256128 8380577006840667169995255263002624 6164005792088134053925866595942400 -116072654126135943356833210472333312 3470106914901276093676288787611648 4436630327702196467144363239014400 -699876469361457348996651215342272512 5754678672764541360912060280471552 543571556906029401541162263642112 -97035985100645287192207900255715328 7905197470791550237021846703702016 3320605060689383026293842949177344 -188633755407880658023618691081437184 7094370313622895284372517200855040 277507270518192095087051765972992 -595313577911673966189989403102806016 8273267751939694806940865502642176 7675266309716786081521040193748992 -113417100232604768241326377444311040 2241424353485652397669636393402368 3010323759001351149485486606647296 -410665214964666033930460417050542080 7417607249780470408895061815197696 5027445074068854682953581173145600 -877045554736814467799046640329818112 384533803505747812454307496722432 2585131105981548785861838021591040 -346529511470386157524402234258882560 23561623564698273565554618925056 6627403436813413334013184653131776 -569589880170979096333350576108601344 2891257845025388743992795610480640 9505693745977284887795921590419456 -743688782132526293032602359247667200 8671332502735414296116179995983872 6908611707809941910928464977854464 -162779374024340759341538171307425792 4442530743015541109847113424961536 7570834039131352390306016641679360 -992236368937855146906324880202924032 1151902240778351846042040275042304 2943348314570827194807999703023616 -897840215709671714476833294516224000 8947732998390451209100359007993856 6473593654807859097913956757405696 -943269576254405694239980662105833472 4302916170275072203202600361787392 6614372056136628029712778129309696 -278971359363886505908739835948957696 5717422332078004135083855696625664 6743241760974892905363470618198016 -557390216366314472280711163507900416 7080155140846370473475149647577088 5949529059262644616314047204163584 -217720813668126445690623626858987520 4036108082533538661640541996843008 6293134664863184268185471366987776 -130355020017488361742904839729315840 6563761716517125583532372856406016 5378068526229032848792224683524096 -575808555873328607373487933092790272 6041867484740593008582338386329600 2069051582276176458457399481597952 -120370785672349224763509956042293248 5075451784246914448311108302274560 6831074737376061469435633994825728 -738711657738660990908699456844070912 9925540313665133173885445764808704 1399631100407406380179686472810496 -360771249735808460076443111732019200 5905319479802978994885346052800512 62627601824636258947086719909888 -863524767889645305298577379578347520 3466616881350992288086843390427136 6337432808291890252134620969566208 -58294837919803067605540467827015680 2634578763718427095599685191073792 2052234049640336319837722774601728 -399776106349252478491809290890772480 1273986283661546927492820449099776 2612344947230880658079369842917376 -17604311494528119901016237423984640 805336863311377329764906953605120 1744175534130460743526663938113536 -869352033078712678715138393841336320 2136946611242263202646194965708800 7142301257675034034502712927715328 -583002261560252082741746117724078080 5986086869150492056636135552581632 8764469514457138478235692300238848 -754052383421719159196507728494198784 821949948487870067628809046196224 7281441222446180683852874462003200 -216110379698483109496438307854221312 2324919055422201266245113539985408 8806651971548846352110572072337408 -803205900402756962871600828215459840 5883385997021121086140830214782976 4788443698383158286497078428303360 -644011440723860706282589672284618752 3853620298588866651019751907655680 3005091791883120171835759425224704 -208235076304332534705866911353143296 1754872099671356256509683400966144 3762312769732144885587060876902400 -672559827080403470928647416407130112 2923687918992282558972058895646720 3577615560767940111701884115353600 -609478396527715806913216044293160960 6422330877826932984738613305540608 3117355050682651579781233739038720 -505794097578566742560268178868404224 7441623921827889315954538053632 5138624666887195937591422061903872 -227646956103055245884221222297796608 6396096355038503012047000136843264 901387725489303028499237037932544 -219847363639661339977555000285986816 3576252407230795834597923922903040 8946753942392731658348559215886336 -696168612345994979144170068535934976 2943257517102458175135430563856384 424069495955160682210350633844736 -676175073685227116073796351582797824 1621851536217317237457714258378752 7600985739222410191574587167211520 -853660153545472043490972035358654464 5615982520987693690722584029560832 1566664339487163023851261043671040 -947724718448292581888398161369628672 5673912450041378534828115708870656 2001577888359973925315064125980672 -327570299138338681836904560604479488 137422076374664294618144022986752 6327035991618300061793802000531456 -638127178412764981455818080129122304 1139123910774543004637191718567936 299086773700929649668894991843328 -146677562630653384241156011046469632 2986315425723156773445896874491904 3273183725565280031478320080093184 -865580823229073435512785200207626240 4588742691433593809282368236683264 4340639245547776305192450698248192 -206308048850244774746475961744621568 7788073819242927027063916859490304 1524513166960114045259559244660736 -701167336799841486576988638639292416 7314840340777056735592069908660224 6362304796114089329623411481116672 -191409843888770471933095881694248960 624399099251043112278840710266880 1714635411140858612101102956445696 -523818625679513409623483082965254144 5823627998927901091227987720798208 8566349234827212616241685370765312 -231010069265827099884349010770657280 8174791304785212443239053803913216 8728740723419551427977019928870912 -898359648265809088817776304190390272 6736360776088987326004831799214080 7981637699519887842691067053867008 -581493796670681917217701104101359616 9844996133327326957691572299235328 4021157740100101309645792078725120 -405731829259506738819330370351136768 4446360911365525919029996491374592 6132002855768755943958675185467392 -275413979697490895332046601078177792 820063640627378244227602921291776 1378475118227502066313514104913920 -303283304816065034364611622734921728 8073757501206625680937347148939264 34267444029901615732575795412992 -535800071563247273696231744813924352 3655085685259369866978468720279552 9391676848665165741069849797328896 -630308562828369982230547706769571840 9886952458665627209698073523519488 7132506852166529138519942426001408 -943630530582240664739709509800296448 993298743147525712029145697878016 131491159385581127798893276299264 -871274968772543926817760467671318528 6039899823073348911292403706494976 6514496871096115903884352336953344 -589356813278836572871782078055710720 8654438714228033874845005252657152 392653316230894137211865280806912 -386498634543966952310327948083200000 5657039730309556950028306268291072 6255155103457091406626729177907200 -484553184191345450064890481675862016 7065520550248915839917145672646656 6851148174100957421280577332445184 -680554569053986565100017434371293184 5449414573592721562797146812448768 8249166898806312199273132171722752 -292702889706395874293406588490219520 7753941193729939714058304515735552 8991582309116142335288682490101760 -174805104690997489152220340227670016 986789196096442871140574648336384 4975747500974059015974367346556928 -431197849397306254596887077653053440 4919933362663360042047343700213760 1596334279754429362571993585549312 -304705523287167402370338602549772288 4471008686267474414662309608685568 2019494459165119377405058098397184 -70748769527149212069644975466348544 1634248028360520071862602789027840 9258969884982677443390543981707264 -295315900599938865300322872039833600 5044611061587418205943480530763776 5699242244557252989698738575376384 -208763790699304680931116730625818624 3962990204683225407427233158529024 5144678180230216147322786084290560 -983795980144547256525062846394925056 5554077450639245971639537089118208 910999360123494531038525830201344 -132298910301228590818944832436699136 2978761897169258775541239827660800 8288690378250989216100033427931136 -817434935074292504284742098784092160 110579829569136692940646217940992 5459140897465165416039433040297984 -382083313639784127888303599759917056 3263449761696946033728815934472192 4553878376218070891685565893181440 -779878033682441725141794789550718976 4420454421038859095974755394650112 3080137214036286168069049375784960 -680019086583922060482468651322048512 5808499519989229673038385843798016 7859107944727915556593625517260800 -343902051669882200761733996750045184 7095894493828276531065003087757312 3188768074418280828576422952960000 -663176171202444029371606711886938112 4533997537764539699369318868320256 3723283843297765903212583288045568 -118646737311374564332463041657438208 9939658582470920318069732859183104 2713896721262080360773315050078208 -229627932021501558873098290175410176 4735804266963747518481899754356736 9697178953353663933430162733924352 -887381483955950343625831409965334528 8597252178217320244581892607705088 9513487281764123316873422258044928 -831189216235248373970797984743424000 2017767989825635127616539432321024 5140999924815091235834834433605632 -417046797423246492686795582614798336 2748515443168030349051876018749440 4487785637972794569248698104020992 -570870332037304498733822707698237440 3140654256690038532493002105946112 3559889324054715898130151898087424 -342376936791760788951556108083789824 3580427314069446254879748615307264 7563240905929776863336286612619264 -765126213699905547388409011645710336 2476241327916299399485185431961600 5986388255917307789770785453768704 -265905981783861125501259786810818560 5076445391154687710400289624293376 5586525220885718705759536977805312 -211138923986321064308916171009163264 4089367874703557261960354446966784 8989248875521404888439799936974848 -457345952440540980778219400358526976 589219474242790691694523732459520 8303465577596348556705084370583552 -642498905383962293511390805081718784 9471444917651199370612392618622976 961738037178346659728226596683776 -185667258931818596779745453665157120 1505204253413979312596908742017024 6331408541012320836621475296313344 -358398043937948208176554229236760576 6704882463173833076060552454733824 2679523818343942756983736513855488 -757476070663033286229715006812848128 585341877012553125723825193877504 2618574380446071364737234395725824 -9079246914052119576254836371357696 8810156004903328532828329288400896 155198193436684964940093377740800 -932926157894832970082374613112717312 9821684633036292295158783493013504 1601277522862862483339140449435648 -769394899348104095906365335125622784 3292447337876292405845711531278336 2020327756276727917474897075372032 -625843550996381605658955758977417216 1458823720690636091226578277629952 4533312137945609194267138225864704 -457372550422472607605689494248882176 8634968216802983994786466142093312 6102894130217553963267028496154624 -852725962647925634427855146177265664 7161961545795179345320080855531520 971921162229720943578587131281408 -336006127068031602739492621549305856 8455119434628262785315090619957248 7713949852912096585156111238168576 -509741358061862423998155526674317312 4422606075460175005530043931688960 1845543051340205074706939739373568 -394861606054069166208463702599925760 7383214546064702128873123340091392 7324458376661113146550678301179904 -282233783940988864270554587914567680 3161326563265409079247907682516992 8465555687130898569682020435230720 -53919256114969839848096780513181696 5081132214146576304085960650391552 7639651612317632414729753598099456 -65264313496661420094368188016361472 2024657742942641306527308881854464 900762481720286178450160777953280 -640612194863528256162274734518566912 4044118791501173450031899365867520 2447271214053352576071296771686400 -530800236675981250037198535828439040 791877766253517829414567727333376 61293854012335963117638347915264 -678891831626812093799920601470599168 3172260417450908433064134050840576 1246360027545798435051340082184192 -946335767893686186627347638032269312 5895096083830647603978651599634432 4485193294403827313294154884186112 -221485189652104550807818929675698176 8683233778647452524143599358574592 3390417120369313906821723538325504 -996112520304509918120530730958192640 9534866812195199268618255468593152 6231611159150722860959184113893376 -402414429515244551789893651772997632 905940609551160328578918504202240 29787070213624094536788271431680 -58802234576862888246811880211873792 7651280262437297770653225381265408 7011645538309255251577086228299776 -906103488221479949957941701474516992 4147870904446230125427983097266176 6926163866705867918194962656657408 -284430062083838127279901362209423360 4692118676919339659343974925074432 1801915016977212248706829617463296 -412379127315643585702142590855413760 1784741940568612764497277446258688 3867378287899240800673075247972352 -485320087960188356256531778640019456 7741111412942885005464212793720832 4052486709768779852297680040493056 -256151619255870014133384599601938432 4414466100320729904900703954927616 801417960569520453700297370370048 -865881856763265697658857272987615232 84973814139086566381826328231936 9795830402405292501892552795881472 -104433981970495977471874885790728192 6046047566292737143073079165976576 2070364817075383705555675903950848 -749064657894250249882423008872628224 7244995700926837806441036003672064 4580397901965632207825213113499648 -771806148772635563929371706063323136 4096027839585120013081339439874048 3481318540360737524387202941845504 -214667901162224845779654282917707776 9905553640295958368858208689192960 102470970175715598194166523232256 -377624950882043770665791633183735808 5531380331973528201569804465733632 6818039477591409586653653664530432 -876686590928696841671001314816950272 2196105876175313013546576284483584 4707157006192459372719568775544832 -679657841958931534146568874161602560 8322318933366190726120902173392896 2365165631261769794130586414088192 -120696705765621463983469944530534400 657583740018370096467466988290048 933842292930727747950356516044800 -515509220325973436400766575567699968 7229744272578911462393705687678976 3950953170757374983419134526619648 -146004389060959399854767099137228800 1223164819055797885660836353015808 7290151157561701083199111549681664 -282649430343782753737568419856777216 6198473296408421122879764238958592 7769774558619000119981475136274432 -240247468215847024628670162760892416 3073937449009122962395718620282880 7154806432303495701400982487302144 -840518164088075691912038957384204288 9337846249217510322350688483409920 3267187023403897002528599009394688 -869686130867547171146065536706674688 746856256257713068869109300592640 7351759638226223363334252259180544 -443252749464859792541363742126899200 918869108736119101489992119091200 979969019719877578317618869174272 -359869700460062078497391152392568832 3571104916161763697239347284672512 505951158969790455214986517020672 -960324032722231167075579861709881344 5253708858738456810708404231208960 8014099572372348672103557944573952 -129156209690571314881696513627521024 5132556558140153917925304209244160 2305398596213456900254032499572736 -314983780019315233543171998996234240 8710876568919053781141265204641792 7446798537204328982867122321358848 -90748574649432398137498145562558464 1095716893363481009614836518092800 2254823730432025590398859750670336 -497690420628499215017094963672383488 4127842239373478482480777421389824 4866646871147183161434900499791872 -652692449068839941351726650465714176 768348328363235040602219968724992 5325806873982291651426636311560192 -299824094451581335442563505636507648 4739961569719153026080107392925696 4869896222034006786740090426097664 -800346431969403819398371644989767680 9283400922642258080062493517938688 7200861247499301666835851942821888 -347154411852507554061935743642632192 6339333951048494125422183123517440 5955040365036876164901499863826432 -976890999575371933643556872458862592 153480150034422021120668811132928 4605369599886628791047942045696000 -392553756335073170018553293642399744 8252095627048394239164550427443200 6684696477065463737505516024233984 -190176687432803828589382603806605312 898074199701985355575354319699968 3490062444896722945358340047241216 -848803292456926749185702007006035968 2306231692222116566261270327590912 2138236190711263776138677551366144 -132457963764087083264888726200778752 8568690672234595869258046710480896 608744563164001465430515082330112 -277536065870871184182342283302010880 9309435627683808933240687367815168 6551936341817109553542956209668096 -955617472021749648476490576980606976 7383669786122404880766750339104768 1296902894942912328696307323502592 -835876687574547380540660749294370816 2041064632249465054979703244324864 190060490069678109609101415677952 -500365330720304601374370405734678528 6914793288416103817055446908272640 6026345467653287503830616002002944 -615014844858262584112317966013431808 7925461487205285552966529852637184 7209005378023644029543548438183936 -914244075674866926474674951853965312 7370094604471288026966603042127872 8558815008168090179480712990687232 -955966905559185606009495715959537664 8740818705145089639053754621755392 108851160462851800039724245057536 -904455131006013575423633079090020352 1516409683383135899072566975791104 3265635856813885410352352058146816 -186224118640217485822417692625207296 6705904735807299016122963444367360 216590271599678385986463110004736 -138856727414746982399861961831481344 6066271660340206559751364390420480 7908809739931426556431914957275136 -9910097141289453528653683469844480 3960084224557765112957401112248320 7000881345541190324030903890739200 -76626568935413893469933772218564608 9803837688122168170796942629011456 1702146770668251295026087710425088 -356897733893747934409573757268000768 9138053224368030634579119979888640 9304338228827961418619049518039040 -763337311948711232064909122193063936 9194619857089441931472264138588160 3133794437276652038872963081043968 -437016196810350365831494797635878912 7796276053502126176591530034200576 9170913002618410474215651281993728 -382258639068085002687847599873982464 9456293136437635270652534020112384 8103578066512147392546277957828608 -213384356478108797574011172268539904 3708623581839990477303787500339200 401003799233887850063367189299200 -919166531004225080639480480116244480 2907260938796941621878078086053888 8432759171910817091704075994529792 -674481329998636604493371130712686592 5462766320555892115869637017600000 6525747932384622352160625034002432 -221933351005703587570933702089244672 57403174952920152858494467309568 6204343883872343906605784039948288 -335616805375254600451858873773457408 21527155948346615861725838180352 9346383824245935204963844154720256 -785386644326894653895840350536204288 2395782279139532237592008905981952 6346343228875782009268685514997760 -352536673991399568628548777648586752 3735931324485662349157215124848640 1703438331934838982030167422009344 -677496203322814178298435412823113728 1143956098155670498219179986911232 4503537819477936855602615524786176 -681290037929777201866726631935049728 3410801332267237036733891658907648 6383362118203909471357151928647680 -357671517373312781370339255121870848 4252510459299188082005774232977408 860188237235708144975943638712320 -744893789295314308254781491839500288 2251296204461141794290711507501056 6765355156300012073745559937089536 -179169905176020821139202646086778880 3342455686851086495112067855417344 2633755361624916085152613899698176 -168205404762409210672409546057580544 482480493984067694455447906942976 8882353504567724882874272552321024 -686852432497619769123282048948109312 8799890919683944508563042454208512 7999591429608993063958569176530944 -995550100485093966347377592024170496 1622349570786195148272783889268736 9896160618691533012327633789124608 -403020720374635860129264263820738560 6844944143178084334213725591437312 958649341433978705011742770987008 -223056774894178155873934392755748864 1872166568500325052653163815895040 7565229223405240667378036695367680 -822152804478620107388945111359422464 3501538627923264384767237543690240 5436906838433113859003855071608832 -353544425653575958457469893364154368 1578965207847207223125431614963712 1165290735662347131350446935900160 -87592493844600964194227527805304832 350885819118695628164205723516928 9320588133288218393028014043561984 -290826214135163698520774665253683200 7658273314670081521370280549679104 483574007436974272722261281603584 -907117985108556631873164347596341248 4970185548828378249369580724027392 657145169202622877207765616427008 -601819908638981186141558924074024960 9282994302664448181155726448656384 7088876754727037342116356619763712 -558772894024582347311409686302949376 8988240401589188737673475768975360 4495623779645560972324575098437632 -658842916941166690921054186340614144 583226692630827244087306233053184 5892735912500608637450692260265984 -441922119162125762335050939158757376 6118914192635175589894030444462080 9374472894398433370125069954580480 -509840672602224239792685152737427456 4446512919549134846860895954403328 4012186425071344489580446493966336 -990954100913067152671999134542069760 5667256721979609705873525306294272 3188002447579597429614348100173824 -483305298801160577690430670926512128 1160091638805288553005278440718336 5408306926711379993996548588437504 -539207700305675785577224100154179584 6574010593008269409630477120176128 8703270036169711765782554457669632 -951636497063855966073620437296742400 2271926457972704046026763834228736 2493374305430973250321997679820800 -820440165722027295204631225852493824 639043293171508921670475895013376 4437585686928153675298460026273792 -256011806215644597439570322833539072 1538335455495647231894669819379712 1589425992213516863120287507415040 -339835081020179031087037071298134016 2544367588175202499682956319129600 8337867120216676749998110070013952 -72090450136920152571813961513566208 605020593546415930618882935488512 4030301788189948038072750103855104 -82960227089191601344562034338955264 4905400792442318050148290905767936 9796579803649471767725180425601024 -874522366913317116307060861825974272 5462855934533642929687830451978240 9657698205455727678569365861564416 -484808947190314304676210682487635968 6563220153698736331264412591587328 6930458025030179195347815345684480 -565476200995375608868504966319308800 6508167916675424829520664921636864 2403333726146468425499738141360128 -336356665358612090624397707503992832 3834736755809461177507354974879744 9466531299685035430211792937156608 -606359262876433685351444561405149184 6934976749330058793187572516388864 3877397013786397909373905237180416 -693990171905327684938791111536672768 8261951023698728482571102583783424 1894294890761906482988885731180544 -88984726308682252684322355497926656 8805277803915633396767953940119552 17278604368093416940247195844608 -934473581927858794689075610455638016 6229589506243754944877899026530304 6657072545041179148157276496330752 -512258121622634501230165324845809664 5291119256871244664806659407740928 9776258653678896684257117258907648 -648785569929762849690221611405279232 6414803674041001988479501572505600 5279403316865293118734175408488448 -665286258431912689109682263513104384 5481673758157594647054618061701120 9268218050257962212652577418379264 -157302236447850047956996759922671616 9673149024769346254048654048362496 8637882156247119114522643157483520 -223526284040836618044484500429209600 5937314866718601773940875468996608 4924695658637871573636784943267840 -198680624891731941359450297611583488 5006769847802196654183804670312448 9121626753836988500011171258040320 -753813524668099439445553261355991040 8210327931885661159157197839532032 6900568397149142075332782123384832 -650822397731787499268960306627346432 338334150451268566915179056463872 4010083155894444400794511280701440 -792231246344035157624384744176222208 2270392798768974523193514080075776 1472746907472196900147405887897600 -940720644780398720504284750010122240 6369279869685432277323745731805184 6703932714599798082468864875036672 -216080769709111769057111738540883968 8522765930674812465372669866409984 7997682694402879862597000689090560 -51748327055059245686791433682419712 8491099316064120218764162126315520 2760177364306554489158654266179584 -791781397187908585835829022213275648 8705269571896608434034788278468608 8832033964400154650289063778582528 -218672289273618974047856480263077888 6670691535875451955317133111459840 2930895313702510231261339833073664 -389953290784595060069923485835591680 2756754323994478035625502123753472 4158112337387821058614443833819136 -827923333702476322348868861127819264 7370071073465745478032775192772608 1954380130718946213105249525170176 -397409412684746667363490428067250176 4733133544534723365578149973721088 7074707808869685827826045541154816 -901255144966048187318106526050156544 5407129092214055581581497589563392 6336890906232037936927172806574080 -610722273118130396490330121959374848 7716555490174630773803378225971200 2678328457989869976867722370220032 -875603685935206527187429481032712192 1110193060713609148644315302461440 2197678309591421039572831162073088 -756646118012530816743641321595469824 2799346937877980265045120251854848 3133936037725451916719223486808064 -238276991905013545673064733330112512 4128391336333556017716689440342016 280291645990607923370598609190912 -300650860123516958165509041375150080 872090819514814457979488656424960 2233996489876934351048009823813632 -481852538729053104967674646843359232 4943412941727724165324180908146688 1265466886793309935024037852872704 -458386236688635677811275994813693952 6753635524475292470818806366732288 5562076009566575268831824701292544 -524899900990894427629727887430516736 9140822160187273689353479386038272 4561706650500443928773782849716224 -140006115945761977241428196325326848 3066731399055105317432316691218432 5667825510674719975922413061799936 -265743559471289643909480794097188864 2204521407559855238203063941464064 3237415811916610091045499166523392 -829572605054723042848523744354238464 4719069310014416919651319143202816 8090000436444899196331598089814016 -750161689757458753181902484755447808 2411033950031963124693849539084288 5375437789130707550958330316849152 -828295486928144014480007811913744384 467571231384010629729432203427840 904258489739247139686335872237568 -213941232441616933997966452156530688 4947549917154935106280227260596224 4813731710007430270734704492675072 -363533164121915517533247442509627392 9871301046425235645569375785713664 804558670412639618467322753187840 -106308805647843955328227491125919744 937747349424952000673034631380992 6303122562042790805288858108821504 -558647753788032402583682042231259136 4445867993202323847851926037200896 8121741785643264558232768224428032 -324300419615958257207747728545677312 3762967902710814042905435640430592 5921081330647979932152042404970496 -321458191265234416808300635559559168 5067268686116268183959543121707008 4072389706843938249665263651782656 -651419036559645675892843555862872064 4817053738510253188370383545303040 4209573948123758631340996877615104 -991253048996633821066286719458869248 5639823269894789784139694904180736 1944280789419988238393867637882880 -6733182432333036613877236072710144 2701455350008331010148354461007872 3018562504741694770944679880949760 -562949592026698242906998534844710912 6982172110757951637108359012810752 5758697856629726578796277325103104 -30265473441393625474925347360210944 9874469616134037746509010203312128 3107089435880290947270306273689600 -295136440471004654576684060219801600 7773157526060653893302798314897408 7325817196681503252221009411964928 -666118631760449167136813533339058176 7178785788242235617859200784269312 2319220368979866136921808570417152 -172506310619309644124249390063812608 5686132346881893429038101072707584 584164503028946065388150313713664 -379662066991348310129806500710842368 3673819416569555058512470592192512 4593035921021444600821721887408128 -539832179274699297818993232156033024 1157422333254146545544699540668416 2660711732748991537839044141514752 -982291826001805282296414932901560320 9019813942186430463216453949587456 9275412938820155666458779137867776 -877663279430783529430922917127913472 6996485047172414479474913095712768 5129918847319218918266581316272128 -308826969015133588205051487316869120 2403206998982923692811091724730368 5347880414406202966234395530231808 -220913245082022396079190856473509888 9723972113460753768670721803812864 3026956565144780411004599937269760 -27308310329501792632246594749595648 4711738720298017060613960165752832 8136958506175773752201081486573568 -36398052086202696080666377226027008 6832917527748479730098595191324672 9765787315730236294563731848822784 -361799728416363721904776993499512832 1725238428340731576048277551841280 5677259823976909246080019437977600 -219181587199763115362698099278479360 7636794448718402801303108175527936 2921198512170549585216311576756224 -782589000716276124695668185312002048 831617352004012063494109545889792 9370588360230527698896228009902080 -949607013021091922894327962977435648 4219010141869962278584810674847744 859021223440528741730943928107008 -402461065045621037922979840358612992 6223176253749734542308788752351232 2200539008400435340315131941748736 -497832969483982444853864008914042880 2741293582035058343349090907062272 7292897257724597414488406589702144 -878015045005492096103807069018128384 2342953580503178364313468084944896 6072980435643174556243857439195136 -20164073823804464072674186744561664 3366808658868571209304516224614400 4578329294505980824737854420680704 -740210937100308398881337534213783552 2614984297555524108170601162604544 1087893262607427038549835998298112 -141566662386024585185897391943843840 3653915699569910542818359740727296 6752833498114491320675343842410496 -408933996435553950830999311059255296 8362527539405176823524526823309312 9165433699885108973111747419308032 -549840893335989782804786757041651712 1775986845408899795872268857376768 6666627601880997697734093664419840 -109361604672916349794149778000445440 4116098726540312462547112805007360 3387464362218829591221783733731328 -884762400137523660753334199130259456 9048340218479785708748884355842048 6031104739530526099143957330001920 -285565194619068473711046074654785536 3252779823380537691727451880685568 814504172234557612205698711552000 -882692057527419574480686607476195328 8725341997001936021046928062021632 2812880651303670877038508708462592 -243955778849690210422059391957073920 8378793001738445692788530432966656 9113094746414728952494318937964544 -746100539155845410005769567556599808 4552181639479259182507433413050368 2242541775574708403656963854958592 -635191536380119862592790988454887424 9303321691171081529560637571596288 639487585149990758634968827559936 -596067433648807390505818725854216192 5230040216612509732914764550504448 2687602949637318058333103229763584 -321123278555215534468079331923984384 3230688657350503889194151135150080 2899121345944716463654331863793664 -394030823302340523397426398118281216 2963079129690751020023040584974336 5521466513869753412828029115170816 -887866308456089691765291602413617152 7533012968437643060161550936440832 3669385553658507537666049306525696 -781474997902341652431635463664566272 9365086599471490388319212142592000 8420921478351865941319636668645376 -43891315896279519275796558772174848 1210106014451753822085671639056384 8120713105655106112351537928863744 -574346992420835021644689814589538304 8929538455208393076670819190439936 7561747675704199036229251435069440 -674231118525725921908553058661433344 3684703721938698191424576475365376 1753181830199254985274979218620416 -395882428437887583984444786257952768 4713960897062500150330271050235904 8300378631866503833464094576345088 -7232304168110829294936710430326784 9776401947282611841101528546934784 3292507449432237818186255537537024 -224116575901764388519529312231096320 3400220197411958000167885572407296 6900186818699302240506587853619200 -918043305546941760365797336049254400 4074230799404830473554175662751744 94438463350796332403112038891520 -901762547913254581237139226776043520 7523743048194842935408411172405248 920819539294111668918524238102528 -963672607727408865601145717286502400 8842853305875060090471942027476992 8502223849687830750861697474363392 -895089860449133414867235267938353152 9491349244064517385317866243358720 1116442924058782556841451490115584 -399649556492232786519366045894967296 1136633139277921909605580696190976 9139465676468003690381705056616448 -236173575219981206637267688626323456 4384156965630826765030289710252032 577773943396143548541241305071616 -917112346718474392786219466171088896 3550352129260697214279451095859200 1924360010129725424914009044287488 -399401910003464078784627791252946944 1036830874397913907392530498977792 9748672514927538826509650080301056 -531994885312061341555500861928505344 4852555637876608101411406590509056 2293161908858733337191737894895616 -131644596836246925101048981276852224 9265680298185154697453981831004160 8242142212005966549890944288686080 -277792323278462013000906389181169664 7053823192213250854358057582854144 2082148533208461677814437887606784 -594400555696048517631151304714747904 4774363437767094794568452532076544 1236553576402974943282609570971648 -19994367397070731447997972864827392 5623395101552218154033183176261632 1378064632955678823664231659864064 -115908258768700406578518393723289600 3395965657549175469206531234332672 5321927371732751577219787732811776 -931747069209005372224599171608346624 2520384887368188270681097729212416 8665535225272253674365955315073024 -64759571219053185062913020230893568 3869525578123684504402283164860416 1104379863164879586779601991368704 -733761111076283111403165000971321344 3979625844582417518680807491764224 1057023637782558146135018354769920 -572900642956091142749617336568774656 9935443762423243881411285004320768 9993588009379081201289774088847360 -70479895321233140190720982492643328 8210960279962764524529103983869952 8639977410849936627232770409627648 -46092277433727281753152351180423168 5965408383951082906451247921889280 8352354488951970215396106043392000 -414413726596262212822759798774693888 3732842476788926826709598043373568 8670237676810613476625622019080192 -578836838981631986720978151843823616 121245293177859435181629276946432 5120371043687442598599016459534336 -516255288650427761991625947131936768 4760781575536665739806285590691840 931205831617254610172673039269888 -976308214794929918992230992226287616 258825362965247991033155519774720 9588168244461689340080380482420736 -235976689607132119703350816182108160 4372642878820549433469969218142208 6451431691605838074293365092909056 -383298684544359452827668350393909248 831856005323503737372804003135488 2487011726936107958787585926496256 -769048828995689434529516368527622144 802003288077096840154654273699840 9026416240875765273654083616505856 -413367115471421756721728827185692672 7113861083120734286106763819220992 407184331435537416890257193828352 -632606488158725977000768591145992192 8061726794804770871982345680846848 3939625519012475370867021894909952 -979422012071650148266547551332728832 1046501589049802345876941986332672 7071493348430763081226012476833792 -366635072100478034121274350970601472 3546461519270539777481044763082752 1073668095063431010350686604886016 -296982126647802307383247960102928384 2655875953298472269155185822007296 1461943369467222056861797082726400 -747834476170038299753383639306469376 675600435337863114911839573508096 1618262756641426645068060079161344 -560283614281085779788321111544954880 765922430168716680589092581277696 10829876587790616130441493610496 -303044426582132568530888944793944064 1531642339419266172525614773305344 1606840531122081730986735988375552 -993162776867670053090053866418864128 3333966870041071248436044228460544 1371020696463554951954992031858688 -323558724763957440647242717784440832 2099393941886768785209175050289152 6639730794259428497779490822291456 -925029725694194723109972400540745728 6103640934145647757365769962258432 2253520013020308129445536321241088 -731372274482782052412724261702074368 6766994842365095353384130735767552 2643092250530633269084283161542656 -219479755022499406837295128854396928 1720653832933028492603956664467456 114764500996393461205728187383808 -111655967311991709223984854837755904 7811679184524724526072544310067200 2180979007508445824601683105153024 -912154203115105777420524692552286208 4852878116390070888729860408082432 4842206813398773560761504195674112 -570141623871391574373483170720907264 2881396220600436464322238492966912 5635867858724200577518592201850880 -629869587772825530080054781356802048 3279807691682409254568844041650176 3960131011740028440516531329171456 -392391613584563278053786704637067264 5922278384156965685423198217175040 822879931601001880119793846059008 -403486880136310638778159128333254656 1504724010217443971401631945195520 95118610229735101133044907507712 -311689402375538473938367076722802688 1906430438930299091185149671374848 2708370348808672015572274811764736 -944237848754305149715311819688509440 1286664475337156408956112720625664 8055266305376210306677948217819136 -497951037548246346209786766655750144 9593734585379532028928259178627072 5087222928215113681368998901448704 -376884305422776849601646759333855232 1360306879894731688658030299185152 4683665131240247193838642895257600 -453210557124378703953681215924469760 8420490676513285190166898263719936 9560019738183763782307765616115712 -563143129794827079080761101108903936 219073530477487944429715415105536 835045573134408963944549026103296 -714664396736290237350003860366688256 4699292725436626449685391683354624 2696716858263982299096693709209600 -685099378971781153905904534245343232 9853190449709400321646098183618560 5525159139010661832001498145357824 -381304085824843279899719899132461056 4281646129793463874498144363347968 7173089359874521456178413321584640 -319443316080776725863945834269245440 3825962968168647876132281402785792 2338964542206001357994673305550848 -208792868394496793726527651501309952 4288224856035703061083422378164224 3582639568188128804259688773320704 -466173929888909252268363034721779712 3522650328040655683429541701746688 9399465096175285118787430626885632 -291308593422137127234124491343790080 2967889293536354364861808566599680 7988538386902263503231763087360000 -8769909173562545178513761871331328 1187985557864301559082344471592960 6478456072244305189791561177628672 -176265289653235946765605589741469696 634455549341866543492673929478144 9679642521149382908979170882093056 -101044495332379254340844932143513600 1549120612633284676959860015759360 1723720459043705007118284276891648 -616855025049126787950089606493372416 5310953171452210424509284365631488 102018407264793659561876014497792 -614371697475959065637009695373787136 7227667890037267599066953156657152 6953622796257085251441354371760128 -52273547919199372996577658891403264 2211327865065866047228586206691328 9517635323490394510277236437811200 -719911715400972421293873263787638784 8595422290094007361934029752369152 728932602667357091231141082431488 -923355527442239063565999451689451520 6861621946651897936262069944844288 7617711168022814522582261762621440 -888029060476054491441659913797894144 3007854883663176351882974068736000 7847930294793746312561546858856448 -404862360331301613456304715025350656 1886227759004680180123533884522496 6292802134722643464009397166931968 -17017167506865725704494474271391744 4504555181465290623091792913891328 6623111637917294896237110720724992 -846106420697400098096498756538073088 1844876139847012733995631343828992 6837757858684970879157342973198336 -325752432402649668995314044014428160 6167391146585685406719828482326528 9556301359299422079878181830000640 -534734638058992305915606311043596288 5531643682922914965892180914208768 6698745961176967079124303953788928 -376747828882305299951898349623312384 2374341865025030875127985347756032 9859134715647456874930843007582208 -302072842277870714024782288962715648 9057378242760691686436736772079616 4276553334626579814460505863487488 -784765849200131708051689827045736448 4289813594877013263926351227781120 2892848544141409638226901719842816 -259740080632276946926810092806340608 6284972649321950363274706071584768 3251829253528441537540838142246912 -878265244973176764057322820049305600 2551947024029100109090860776292352 769514870883258160131693248249856 -590449544970051330850273539926261760 5782718891054078323479492704600064 8155999521943166074319511264165888 -603068501294472419311206057316974592 4562802985343475952853283667705856 13723237001989425173750242869248 -518265018076688113969960984965545984 6607340777744905223641810595741696 1373538944090427389276787662913536 -512281967534199215107350199011377152 1561321444018704270330497068957696 3833882607891506898221392648470528 -496828856428877572162738451457769472 2468670374859228076147964158935040 8857862585531063378921130402250752 -948235229858527078676253474843262976 7145530132333706658003378761629696 3587321654009151376951500458688512 -765718395019755857874114521405063168 3004101035597376576747065275580416 8330238147912059747147106383560704 -398071312515884659860625658275168256 9628705536870080184729112277942272 3784770051587752775923723338252288 -228521983762273595237952575095439360 7721912620282768105204098294349824 9431353295710027323429839576236032 -40958519484905710168322394720043008 4225426628721442933230516016513024 9503182357061581849021794318548992 -178966062251718771911791294300553216 539346906252899610194670656684032 2793682636875861140210976028622848 -879554610475514318248792260022894592 6756929550317303038058260980563968 6775488307358042153241526013001728 -665629963322027897024852370940493824 7960212846330811092917921863696384 5316419945066385454192404272775168 -742983429304631065319927041711144960 6958611744410739977333535424905216 4283322404117976951919682726658048 -296375677377329156006657008223649792 8173014856795770925477233162190848 6536131238999634011258051121643520 -918162480819421826820402152474673152 1526029605816032122789061357207552 3761903916255004600145916209397760 -523372405775368006142410711491411968 3521357812014103692959923537182720 5222427632616206821325005475807232 -608473646747756991698112432901718016 6712765867692578886275618616377344 348515665230837540656920324472832 -40383552332549252891162188728762368 7940691421600664212401092437213184 6054149419679231524913497283493888 -412165885236602491487189679803990016 3086916715837783224851381356593152 8354651750307028559095905608794112 -346120121098949381653944480500285440 6188164388192025316442324290502656 6592925632216719422396982349529088 -945836271055066781915365956147740672 8625577061828720068833416384086016 7491185043499124437661486164213760 -79695129567133288519512701938958336 615567732957725118901633058603008 8624186875808778154786759200735232 -458388397429596959477738618562281472 6683894770027448997503437461520384 9860703854794084987373636915560448 -590254974834429562942184346169114624 2406920688242779037758523147550720 1046723097195567122174643806404608 -828365323365208239527649605717065728 8941265401601388095987966632001536 241805927983152367598644431421440 -24060434950023829271221516103581696 7026454146811991312237220356685824 3829904958268593595783231217598464 -707213098091897592221606489375113216 560788183087016433151242821173248 2625799216525737450342848818839552 -780442573452577505167169550202961920 6509977339332025786115342072807424 102099507765601377896033371029504 -476627880557116694853794520631345152 5734643680167793526451005137354752 885513692130000254552685414449152 -160074617321479230091761544731820032 8326084920710855763783037728325632 1072994674861972706819228819259392 -827680784816448964860444506979303424 1181093538963649063419874941861888 1445043135216007331537237756084224 -48639741936977497238051257308938240 5197206649566869828390517901099008 2437632966008525263791966014930944 -879627911158395234109423409136926720 9534328858312467311681498741997568 7201858767247467647948879466332160 -845480463557330086289699512214618112 8305935086923488875578980348985344 1565624946255259758509680794533888 -661395474441951408049724573888806912 1887448754882346689804246909452288 7580958687473877513320562534907904 -291883278252424358909896054469033984 818250477001429221483880988540928 7431270548700759472650073751420928 -866252211465583662716271968617758720 7931584363976144453421551971205120 7331608599425360694233894702022656 -424247671593367619931388905311436800 1350509808000880623623228362850304 4582031651951179697706055264894976 -147711956434882561916642993150885888 5151374662697751688350791261749248 838591331072675020147445754494976 -505965977166295876622584125268688896 3196317232670481184983320811798528 6473052787338667976937769189507072 -829290840313371167039215089691394048 2174687080338024613288791051862016 5519451979084725390923820418727936 -142243968201280565897504183203921920 9918787061457514679915826045255680 4627084831851275725545748551434240 -7303089402309545883501400292327424 305596343723102833968928773898240 4506244810843602666765691998175232 -491558920821698966643600062377099264 7530701368036917513786428619751424 4304508300082824874739233886044160 -352615902988120241099946622789353472 9689051599529677004835717048696832 2502621113740395103302161910464512 -273801397711856463033774152530001920 6009196041918282494299078605668352 8015401522903280551886191524315136 -42505471349629379999229688814764032 4209403968987736987791132511436800 4673637033813142575167502676918272 -458758508610211481785424897768423424 5272495445344129584534096996990976 4069790771683594989943445388263424 -176189641753040638349425969222123520 460266538206173396114209347993600 5767615203389847797782711115972608 -53007837666317818237921248080297984 5689785201608902796100365054902272 870986282808600903851311414378496 -723404538874322683791302696537948160 5873418942938835083259572324925440 8132626437962898264921365716926464 -773661522556128637213284043753259008 1723127078572902372856109148930048 1507417770853975517445065988374528 -121613973097766084187268613872287744 6979656115100873002375145410527232 9197093041369082913473651214909440 -611504621511197152296670163594379264 253187758256874500713396800847872 6309966900361446694679979390664704 -115482069817916914351139208535474176 9949892042279984055941918651056128 2138310690463456112218943367675904 -473651143640382773177005989718654976 3416795784063025167726218175315968 9699373336269306734194211764043776 -754798785288642423932466322615566336 1478928239429029692239327388499968 2783139772673488104674750000791552 -41157065605142955900633877619671040 8820599547398950017168641521352704 2852732955256269424060789224898560 -178650393334212691375298451838337024 1939588064081092013105373421502464 1420487049733946312278743468474368 -307142570342615768368165631089967104 870381857561613718685847946002432 2497644714780530610668037476450304 -259609494070475445900833931057430528 1298364438397934521201278761041920 8120501664398481933284336379887616 -969143372261573919424015341054853120 4250637291575694124861585780375552 6953603538856281824120308129333248 -143428329926172708182472922352320512 7028372830687408295326446681849856 5555280655144568470548576521420800 -614413069322361522193911457471528960 9044175137589974426614691291725824 2861947594758541147663153351360512 -967634173421429853312228257358151680 3758627535937795479273116272689152 9297711336914718124920471455531008 -495769573450237207091599781167890432 4956198781297932149740722068652032 4298873300399563142011266397110272 -554217536953590947431105376773210112 2337136700292920916714636116492288 2061721847570366782861000575025152 -327811962257792893264152012775227392 1846913367493257056354972471394304 4137861155602146254183998626463744 -89504370646436457413874831616638976 5090841636993998580930397018783744 8383422903037885639298898647318528 -199501151397291783332659382687105024 606131216836320326067962953859072 6916534766126948141807140849319936 -973133433531795325659444002397618176 1323160735268298428222185557458944 9300899420382685177969610835623936 -868981384549099321239394126221279232 4286892887313841541625428714717184 5524190622781443254973683260719104 -100105245327520575679205440497909760 7045261188122938665747017348677632 8340629295625910713044727689641984 -604426039966478721983881712970498048 4765553562373911767968173327908864 8615027848579475572584425629679616 -624252607405898418697986752966033408 1450110915034409948542502384435200 2279102726175468564624252063449088 -83260216285469381827603536233365504 8693665986276002512825832515305472 3142810589974402300239856921477120 -428578593512436380296270419488407552 9996583156782425309933720364384256 5694964939711582472510524161523712 -961937686645855666017394176919863296 695215276375342350107424927514624 8676212686968910647123180431343616 -871417377766866417256207854143012864 39986734077465363987346036359168 2990351486038075004232456931901440 -127611266445873882930407694732886016 3634893357813153119783157453815808 7061139054491938132642821486673920 -281751904742912063597370032026288128 567555233995885148762513589927936 6863008170680867121990105716228096 -115271282002196027213096504606588928 9870391373774033744182347240046592 420043111084925889489901734330368 -344149349741076634496841485247315968 1977663559279906386771787863031808 7290073136413573259316982683009024 -366924731910386705728266468325326848 9368869523177909253312061219274752 1158105281604533278626884479877120 -861294670841523031296280228555390976 5279222566177706187078658812805120 8941666449316419596179522833088512 -585061988321906562736989051117633536 8070452938648530316574260732100608 3436087345227657972497655944708096 -927938196965423503033164746314481664 1978900255825714926107095755390976 2717067992692957422933330744049664 -751275962008232860542349376107839488 6796735938964493528846140610445312 6495869828263950983528024928944128 -731342925810487093120327118655324160 891833195180047216410716610232320 4861363069510272849216060740599808 -303289608537682389245915093849341952 2759428779683823896762797581664256 1713644392391933532929418401415168 -651618069418354179443585236779139072 6612868514873202554809842992676864 9626005791003433127863550528716800 -241955197530991294460858754133917696 4753650034492080602043300391682048 6805705702029264570699446711484416 -262433756058146365529084838606274560 8784904885443224075909322665623552 4701743133971941522630084902518784 -216870084768721725306794025030778880 158550524116497662239957961408512 9073077991094921367883021836877824 -423268386367052474087477051578646528 4110796488780657577759143748435968 2308905839350113075395887150137344 -288594924463267432507078348562759680 6841991007396993139827099549302784 3298425129587361428329373362028544 -23942743368605289911040313663684608 4314719223639651070008883033407488 6515146550031844486796675196649472 -347187594498122074817961357115129856 3558994349609324373920551758987264 5680642680907753282389939666812928 -555033248338737857564431335517323264 1144669494530589215082599183024128 394973149174916581897136156704768 -881300500123362065628772797750706176 8884255968953462015584225615413248 7129604384279764160731822516338688 -309377994105273284840420172894306304 134518561531599944057854051221504 5333516309746340079059613654188032 -814443116970690975025900428845907968 5872571684412167372222601441050624 9073233589743720427996030435328000 -758123999740722966010082852362780672 2052378710971352027563460898324480 7521017375109515290785855800606720 -552844565307263295379564003705487360 4473169632398040943422186232741888 6279151636697884736001084653305856 -250788945187053669831269627665055744 3634322165195881335299366337904640 8864069003509836351303630064713728 -880020911173417447835574955415699456 8660829613102302769280727904157696 1035355978941506042931789927809024 -879811187160340283421138420177567744 8165921660129961514455814685851648 3232106813746946114529788323430400 -728949093589847690229876477843734528 9151511386584602916607588917313536 6596265743786969173771363612098560 -765309672808324055324587321003606016 8051341535624077761713002954883072 4511654762514700286994325958557696 -200283878728275309908908188389867520 3860358979967750745628620036767744 3960247057944143851616586046636032 -445556711230129283577928483419979776 6121655024440028369700004976132096 7641704758601229269925546181001216 -391108346617309417767863062257205248 6321321424927749009721840122200064 3849201663466603809753390446018560 -882684290814797355876069892857790464 8491611494680539588020622713683968 1173356031469528885109220572135424 -719863647094997451688007241486565376 1914311830971342059339176382300160 2134117422676145811205932458180608 -90425196224914227792941702533087232 2738329079102581308354132141146112 8795264470711181946609777384620032 -114493959901286929722968395445436416 9991767967123285838969903708635136 3935159002205269499224908325978112 -958425232322312503209866480651862016 4470622206328762866613408803848192 916847158029240765042178708733952 -943526000818296408099611844479549440 4267963169818258957401103622209536 8698557852327061509728155939635200 -523495987335456524951073885482123264 232449539132126456686681211797504 2230388871972400861503271745880064 -211514991546046611079234654067228672 4776362402469460050274265008701440 8761227277035642259949423551315968 -596148943462401553480881381348212736 480913146293517978076898933080064 1102753940464318457190272779419648 -473762149802259329550669833304014848 2832996650756676232271346597363712 4403673025305969268335811833626624 -453020033658501511436367060055097344 8832260931245472920496536943591424 5012220653628436259431936394526720 -733416085206459260496552684964282368 5827903487742205441489984771063808 9345075124066433885665559480107008 -142974367539600935802324251003846656 2892021979812106602710449185095680 9069903038606714171698570353180672 -854276326462998688435219117490831360 4127321304735609961476295642578944 3543051111035363454037886817533952 -462624431186096782122084040026619904 1126603090733346194202661828427776 9367046288006203831530358057205760 -205649462973604551933201163682316288 3644529151337023942206653223403520 9049849152425919148037482139877376 -240278655126664925680167884758712320 7322486513510805648644955783036928 789749231474606549547753827991552 -84085974734916308974484771045376000 7032681937471059121244480288587776 731554715777925016941172032012288 -63492938595113086329354508642025472 8235474973997683186680346137591808 3658373463408081133469796008984576 -537260429506737050936041321546121216 2623323930780456852624925387653120 274062618033728475307310055424000 -752519705797765424654767247155265536 1892886458960729218223609707757568 4317465933216221476770293150121984 -479447551160829889978676425460285440 441494390395539999433378691547136 8698734318648471973401809450434560 -279759441314417133252526542875000832 286443251451594979618099212320768 9003639767067149881049186113159168 -468568122947156776840146463234195456 5996208137288012057326058249125888 6789586149086259457837568832307200 -740704791317036744992808993608957952 5666179441830233906882034410717184 8407400519723538950074764011503616 -527141720180874049661901696156041216 2220072784273836297863256122327040 2617715079337500369823528151678976 -945482484135361630391477189893685248 7962213705291041366375614826676224 8199891381583114810308551625408512 -990071094149737761093225382636683264 2980018144259169684212283602894848 6987409367757102011901074265341952 -74818207165142617586302975714787328 1634680164193871774589881814089728 6326366740615590093351938026373120 -27826154154030779581248758792323072 9169523530418127513441585860706304 2156496041685637745468473480314880 -709006356290304747961332409565184000 2356269265737483586473544376123392 8063247663874408846589858248916992 -162559541456665631760577669302845440 9470881395709932306263757138427904 507416584585089998482332020899840 -639498257840162637378077234749767680 8045869318728400656914417228709888 8194290345215492663533805586350080 -497456567001784452240064427568660480 4982224424809099234616688437624832 5239969010803327657596076163072000 -89248512266947120233059844943249408 4625298458163620949611717899321344 3484841293824024201490132788838400 -209092728320031656680640677773574144 1086061127170931975780417872592896 7295002293782284813827288562925568 -929706784526378640925312276846608384 4023817489874611588611664632610816 7643552158767440456069451419222016 -851186693765206113245868457975611392 643696046993557869303510255796224 1870753645125197586632497294213120 -167064926802462555175801553099423744 8229961704896330534708886147956736 969606341285385929907730888261632 -375329643746105051841593589802991616 303322690151870455528102517800960 2840345461679019707997679899377664 -143893463145305952788910262676619264 8649168381208149018951034572111872 2283338369401789170937100985434112 -460364394441209812702382853600575488 6534137719182968870607763483394048 9332875315062025768104330493165568 -738137996995843695422091453618192384 8537274045810464486343303290159104 1432803891986752812811461549096960 -650269114209771147509799837902045184 7762786116180004683059345582194688 1147043696344944447016133803900928 -370638828397161120424181243605680128 4028436436990001941929488505896960 5433300918340107847385046937763840 -962082008109552578155154313712762880 898394869893107180961585271144448 5672489358423534420502233466535936 -332005383853855841588008376447533056 6360304672496399619705500877193216 5536860394624656523865988320460800 -823352447201575257619708991697321984 9459151546491914316354755726671872 8346938200599639403067609370853376 -551375785071439952385075652128145408 588388068336633586849597502783488 6790381126394381411122100236713984 -871765401073960394505008215928864768 3171399153015214605384163566551040 5530299834332953779620973941620736 -311821015945077367122223674949632000 9932022966371932854938582724378624 248109492477166504913621319942144 -97041022898028683438561048106369024 2132275491970928779990205787537408 543391051815360379294341610340352 -297553473293395790542410160371924992 1354559978630813019387402374873088 8171208706885773460345597114449920 -355446808530024046479105586060328960 2087116765641873576683423815172096 8909202574747693271075073969618944 -476711922379438295333507262293475328 587325237743737321618217673687040 3627345277197369684152121439551488 -107769821016244518318880210942951424 8534932057297227626500129149681664 7911872417864979253911037312761856 -70799847690428100359168843973656576 8810251346148643074960288785629184 2517320508570692783366820780310528 -794515839330736921928776825561939968 1715085307666436867668356339073024 9152056315794143768230737796399104 -606602243605717035079464262492487680 3794628252761945359646560616448000 659958253446487830585083756019712 -237690629558185302572404470037086208 7662450455008062904647235143729152 481444058832593565248115785596928 -128986845856460518516700202143842304 5507263733678037483262737029005312 4770104894471783001605439158747136 -843488278615829207819278549499510784 5936174080994424223157792001753088 1020546765681712140952585908518912 -172088372969484229996716073049653248 4412919563443184432238991161425920 2760948405350822851087563935973376 -818715182059020103974784113053794304 1593708411860662009471304409808896 1452756011097079101849823438962688 -638071526500641547017703820879724544 1167790359877378347973254020333568 2559765433973492498027256978866176 -839564366570532287584596440557551616 336878685870911362218769556439040 814840753354009071277395834568704 -565873968600809996491053538220179456 5627197583511767187429147998683136 8702350460791388282700268335792128 -264535137598144507079376339726237696 3750907990238850871980225485340672 8460989183947862202866176519831552 -652914853520675942333737803037278208 7148926230755122594032399050342400 6568517054031090426015429689344000 -59537845463949681181787854716534784 5487542980946630174195902614339584 9442241810271260214873232402022400 -535101166763077625428299163126202368 4395179452854623143459843676831744 261173457980853209686464828276736 -757193277999136074531661772878774272 1055841684685277924093107881639936 3880110412506756226355801016500224 -500259542846953615762782941001809920 3407666320615762902864932502503424 2693844944255950157822757689098240 -201661672250358232959796519871971328 5616067089233228843313863336132608 8828991142519640379851764353990656 -35034052501241490936062581351120896 8662149632886809689214886021693440 3834161177472439612155558765789184 -350537594303811267110424124690792448 6150589621575135727513604741660672 4622307774706522013896926019190784 -993282634100192816180554607678717952 9129739859207442463065097812049920 8849420147592588276007356126461952 -938341572929128392974092404386693120 253757996114182125846837539635200 3539193375962990183126254005256192 -34767814734727852754698204113534976 800693827979766682051456545062912 9504646130963522142570868297957376 -161921411011429072283031722885382144 5123539037715101952755578926268416 5668761945636510807562520633540608 -251877453697133434080166030287568896 8446816827205385802476533795782656 5781937878213427682537180187590656 -167068557434447562223060106090643456 3438948395643776487096108154093568 4025901652154862725178975429066752 -133062257813614105019933053534863360 8905827098401972630637853599072256 6273944681875724501160525121454080 -668735714019128090867330781328441344 6656673947346479336163321099321344 86426245464930627653187980492800 -536932940916717473999186922269835264 2902353666825239306658165364359168 5075347926472246614875064770756608 -864416447832226535835128363038539776 59076868827611963724388961878016 3268621694037515771967881967828992 -741576761123754614944205708330008576 9697803171689256733949179719581696 5277693439989482822723084876775424 -909999646616236825453068617068314624 4302760086537262904059066522271744 6463164346951917056144729073254400 -784693189382115918892969012601290752 2787757018924937974000428494356480 8078794670286688805987777421246464 -586182354662816694370423397003821056 3906401678855781395631958254419968 7723801359693125750790503503233024 -196961192754783069730057903249817600 3681071971323976453002027637669888 1443540817436541630045559531241472 -195743953861473801281136159717588992 3555093896804063864012249145278464 4121109414243431557481658887176192 -865820957727213339291169184379043840 3966515596904152937025582185578496 908129409442585510761230202044416 -157298853637839704580982407597916160 4245195250928142401329745402789888 5600288682709496557642740500791296 -951594509352915487732497381024858112 8895104203436500511154895126003712 4057302837321621421147027406848000 -3018803928425557800257085727834112 922892289929008001589001555279872 9323567417309615413801962642079744 -772584607061840148781375966783995904 7442815580834230042480698953039872 4788925541090059645876853989703680 -516766926588931502152229500775038976 2077628083469349573722514669961216 1023144782867033558466679294394368 -734286447876323968224315952697704448 5228946873582436300161110000009216 9853310087982907363732834876391424 -22347519086440785505516232953036800 198741476921658171132445496180736 9275797544419680578936160303185920 -110505102150193666025633518712782848 4486445897221352710926397582868480 2280274666034812568043107431481344 -461099565814889841668717552987013120 2653680365369334840416341220917248 2106226219153057974669356541411328 -669361253886111328769321634166210560 301655351428876892126539528798208 1266875803683494700631265676099584 -794306153042957195568357414700843008 7765785749052473845517379939860480 2855414005589405159722703617261568 -191698548001525996714631741877256192 4660638641617366773904873424420864 1125362889657868696101140903755776 -346704620206927172249445502736662528 4565690131796905837326187028807680 7453989684797174946985031562690560 -186890582255237534832062298083819520 5458493570248606196892151350034432 504594203975362587260616922103808 -454751827566846058064624161810022400 5009779971292585628149544118124544 4376363925694434768430891154800640 -913281720913972486487796224828112896 1992998106711170672441032578170880 7414701418554967702509097182035968 -897676470572191856144925831012024320 6456492104652971683086492900524032 4701233666234833538719266533015552 -62237492753907664470599413660647424 4808717035738047001682268634742784 2396092012012869269439088624140288 -870742052811301684501109263350890496 4654134508771869472443889495310336 4438717454167701454941660351823872 -857129343033551406166446756782407680 7751468806153068446852575234359296 943837101024497563653530718306304 -15271230168757603300872009218523136 6893306972810046768404952439062528 3859359679524947966218477294845952 -650114994113621207302938170524434432 439912042042657286583093926297600 4086978669174456315719244750782464 -753906308525185378788220859913863168 1644157357942757953645579228676096 9175191038150003879638722110554112 -279866049163771931830109771258658816 2804775182876693764195208484880384 8337966099629550214575687469105152 -906941746618543317795745438103502848 6690560927346903298563086787543040 3805355823538051466563741477240832 -352247706266755658868515261388947456 3880433012292472438123014599475200 1746462845212015247946113584463872 -704901418844529556626673363375357952 3238949319167970749110922982195200 5907177384400958327359620232773632 -216835645393704019171148635295449088 103232372560243289559553271660544 1207412419581441925590924675514368 -436772627511668840938274021061951488 6983604537130800944261925984796672 464182926515054264931306117791744 -855170846651512557675251717178916864 2417125314955726499446022062735360 5651295243729240888556553154592768 -111733281079330743685121387391877120 9669439484789562159047148272877568 4940731825377744485405226652663808 -272684482426597089215995197716955136 7646371760876809381659248724803584 6394473591521318883848203670650880 -13487412830139108748878668418252800 691929544436863957329487532654592 1466185097673033735173232851419136 -45907867843234699410177343138824192 3073296412531615311776651684085760 9604892787571385453254643468468224 -146751779135254361518980253414850560 5742763268067024975392070229295104 4520651762217632575301402545356800 -176938565663728869400697707729780736 1780740070695787388039331705782272 4692965326032334447830335339102208 -854825859582054125297104171850268672 3441767121219679383585277826039808 4618956220810802594767397407686656 -854245859077261623199813889578500096 6083732704049174600683215684370432 9812150489967251864140794860404736 -168928235369686266132072183401283584 2257584522695905998502776174280704 948707757109067070376872834498560 -69330072347213940524526214567690240 1332181398010462883359426630123520 2502228154325319940123466458464256 -63146438084382111271268880098525184 335868478790439301646135792238592 2737242970810085824764397016317952 -6814114716559099082191397724356608 5568377426496782390884938251501568 9585576330726322266503890297946112 -986966580396792185175759128927141888 1873343769008686537870216739684352 7724410910503026784985295924232192 -493132665424730088423379241541828608 6703759766621909524070106675544064 9018444287650043843019270030098432 -586790578996574978327346815046778880 6555880441091718940982932269957120 152146366885392608863697426710528 -355599734317460076308536444552478720 1519591324159679636521904146219008 7833879806771695775878683748728832 -805541142469488987110822583111516160 9725675142386831147812096999161856 6971887402872792116583727892529152 -928603553067291491785311589469519872 8816753405156203771418339400744960 2545430827078822236941593165692928 -725690237224041063913131311491973120 1971335608769761066320294869729280 7925571663346711424408904999632896 -905063037282280783277383173785255936 5762795428512207423597971085721600 3113579829936556391559812373020672 -795287522644830323624487584186499072 7898407883630446140535860428275712 2654449983430895477115213366427648 -987033175874882472196602986336616448 6109338002607151723068114826428416 2907267243349845560454222815690752 -814089371611358698149097953759854592 2277839773930955162113424886857728 7980557340017829050771004037529600 -157380179430152133159324295209418752 8606427137897830611972369126785024 7760917257397977486774783971426304 -397103432144067723685096491902304256 193133396157968522023389133537280 4177986595011415322914754203222016 -372813559385368141339881901138116608 9886516399230442559274105301893120 1201555945484945015872041582067712 -569701126484679775233513613550419968 1042445529886715265018627063021568 844674157944204502134660177854464 -424867236066122871616425960946008064 8966604228415744115585650312347648 2153035637934238777937868147916800 -873867533124577874331045711023439872 9841925012590284930012629539225600 7316173812312323447506575541927936 -928852164143108242888765018373881856 7010281753835559900419838789550080 4339960082660705448626306689269760 -551100019184380251457742962050465792 1157164787954805722406031032582144 1740845512576430807244468335411200 -960816900271851451934482508734791680 7073039604374661924368273524129792 2777807406212089807974751786762240 -882969273055058907260178021694308352 8189421700004426806009939294683136 3987028318264458520167332477665280 -650192281051016271707221470390255616 4690377338951214192707878241959936 6243153649223511674640120019943424 -195763186309020182475288034349678592 3907468046262662982192437825372160 9258649210134943130846157816725504 -77291451938588633793053575243366400 217763295200264709824061871489024 1645169268939584152794920149581824 -868241233193518368543213011561611264 7047129514269576535950099044368384 4254217301316285789528674157985792 -210750435764649813823892296998846464 2812939124960107608268860217622528 9632046919470670237717585884872704 -108478276787152327920580667832795136 3818121962060001165390244170694656 2500961006702567131516649252847616 -394518580363989272597544294355566592 5356382348382125699727177078013952 7568182563341694318354231625515008 -376284218764471118715688109547192320 7300730124934494830409284507926528 9336396172663248234593816227610624 -328625179359509877733821304566448128 7598245928194365083030438648217600 9651038722610758989878553005260800 -583894974030585802140861315736928256 1402065753019172825581826439380992 3142085778901717070450081493155840 -308898333768576151955764750661451776 1893241663492022906800611908386816 1342261541820635074643995115126784 -311678608940630505741182898219778048 2508825460933644476747943694565376 6704761474039287688672496668639232 -653487705327519249328836124570812416 1095056685420691537536183670145024 609550110920738319548622770798592 -998784981813269880361025846999252992 8172650002843297832858941332127744 4048365306028432599783850444324864 -763181151027252514326596840935391232 2624357823871252252101517806403584 9678943253559942493723510450421760 -465647432670376929252587000725241856 405515126082382855256733290332160 7282387157929197078445294222311424 -538994998335640835074998108329869312 5029905709154705719927287782047744 8118575128662790602868842572021760 -24840241674336382463263477885566976 2338342273383677867272485977718784 6818335100149733029983871731499008 -553490379649312237773113859734765568 6232357477989806416027400338931712 946597391333105383031726082621440 -406481676967001670505540723348078592 8107306968298723827894572785074176 3848972975838667249834163357876224 -930323105585088467410721874055790592 825322568106736325969804055805952 8127358442848330402744506230243328 -994478637606204142447057458650152960 4886186332846590737153000816508928 1559631128448435131176104656633856 -219376001989246575978444914409078784 1676380248995700816148216938496000 8139034314640474638067077996347392 -425056312796104669152638798753955840 9045000602759983542774109812293632 7268233226548028480716451621109760 -959228393919447231587229094784270336 8329047615320991260385021324689408 9204009470861157425582355890831360 -635906934282439017093013129578676224 3970636200889315451064905489186816 9587763121192456892115437601423360 -448195802381594113464115052389859328 8757869481551450705125703092797440 1959326252077111435125734298877952 -153161507822069709737786792264859648 8012387489624911576732445158932480 243312606907077412965375916638208 -995206555851260482792066676315652096 1633801696276631301259556795973632 1604412539170949969057383274512384 -138977664560346396011417869859422208 4854107449217022561228118460203008 656771126342687732627560275640320 -828760141688828268166787110287704064 8564526791701666151479741700374528 8122458714175555100460815417868288 -750198828907376383837635687613464576 6919575928585076156092323303784448 3294760195493504730865491609911296 -654069576581053372415233804745048064 8902930225749077728041896991784960 2324661806318570661805093197709312 -339296168964652291367960307396771840 5937710621500297700389090494513152 6260082771826246679963939243032576 -955335123155947119560586600214691840 4040046363948452389474957587906560 2667198794146632676237138628444160 -433973903378101538858021955058008064 9796621046196658554361198208352256 9045863477467481887929165145964544 -810693535246304278771304705575354368 2872831279952572282273310376460288 1890905428425836955167522000207872 -232070061499649860636451234906112000 1638532079802347598961005165543424 7702241844597119735940130684272640 -206223731605872842604659391946817536 4231686450049146106277936999956480 3573900595821133130903709741481984 -130257665171565258583292076080758784 8226869344960899695579556929863680 6141483090481182164786874836582400 -454293009269620103344536172904841216 8328346972295225089254039559864320 4817213497200563727102160786161664 -220173617580338265927477325274808320 3599703228373130967601402699841536 6157468707546565531344464771022848 -685449263062654244060987204732715008 4496128591490712198060027320205312 4070384425379018184039949309837312 -402422402329208817822989951734644736 5167450469422029768431151188279296 8075897435421239163975380481605632 -799555217630585374446710572416237568 8275104325298931801248150912499712 4027080837513223753513088610992128 -184027159612393137716741165606240256 9461894208141985633134877597499392 2242299579336404819855986481168384 -223704321359135222313050041925763072 783206982980984109084714683334656 7777086486534414798357459151880192 -163711184424222527812301891318054912 2107932431837804089230908998025216 9038326691881413760056238817673216 -191212675648916148946824202079436800 863133102084359706069133351190528 8995491068190572855925840109633536 -861946861290841259230100201953820672 5607653313968034276998231747461120 6196193629979367232513054661935104 -795307925170894562576345042155208704 7741531710349692998600563829506048 7429308968960597188287400454914048 -99915158919978576947354706022236160 2596862104957653076475419708882944 517568968468634365343085189136384 -377772281898108761668626133691662336 4914074911425887497168702163386368 3891350272410097204148368448684032 -783803977037697221801472538190020608 4274958025716771182892226443214848 2537104321781235478594612946272256 -480805418930357240802964076096389120 616407134967501888171321084346368 9956471631241836901579894323937280 -190087619623260723206690665224208384 4702761648769795461581186457927680 8187977855881397547518236427288576 -266694048859286196629586065634623488 7553374108395528909396872427208704 1078881007488006339373156167319552 -115629562005071241403303716783652864 5768711476872647788302574980956160 727579261265199149881318315130880 -359627347870674112630764060798877696 1156215461505345994428778142498816 913669562126781382125657438289920 -793189988878189577533254367226888192 3738239977567396826343111170981888 8434116642674370350777660851879936 -781147323911036539251773241422774272 4808341642017074664722248807481344 3208180400643418758426739077021696 -790437429326441086724331194380451840 706076116755789184185752038146048 7647214062659196475742545474748416 -589590879601976202002006591945048064 243126220992279451050364133965824 636935386573116571627289533480960 -233966601943011692608019513753993216 1000492854925626247952981634842624 8989584093570167707327573134409728 -468090259753805274035023061721284608 9059687210508602392448870779977728 452927577807959423470865469145088 -77437731411784303306210783814221824 6846445842386638094956147039535104 3225498597448538642158258288066560 -927445278965535742131822070383771648 6783380437218120810194418737872896 8024716360645770432245849382715392 -130778140220417592976136242089426944 3777329410054592034807083656282112 5998983535717353639346443042947072 -779366254197837917512648292625809408 7228731953271361214756355445882880 8691797219534324231571854789181440 -359011802162651578038921532610183168 7089638731188509794367951828156416 6127562442707887800106511872557056 -654856690414396636316980758752264192 6170579887013703892909780702855168 75814486057461341373084161015808 -596061393844014500229269351531806720 7679005590006268210357302804348928 6140975329712840677000632718065664 -573754297212050286016877368312856576 6224497645918156806125438132813824 1720441346324306349397165345865728 -810855023797106551645319994598752256 4465969352757338718091885492043776 4545365813485715022499320961171456 -942260280485937244400734621438836736 9405315935044571106333209590235136 9968139792364631678676291578494976 -924320957851006699991484942119862272 8201892587493833928160479287443456 122046214274542383217883826094080 -485961129496745812527352092335013888 5038613653315400852254409892036608 5802898437523439658343951574761472 -109854103714777565998605008904388608 4156147377442651922544890430357504 5642127363781530634721220811030528 -224315566590227895064159967967707136 5496647758973651678721377252147200 4944998604268766975378138438041600 -243384783991550542846686064914989056 5421165218219349544955094727917568 4385328070398258390727793550819328 -890840153136359992147681256373485568 2146572000083738557612019417088000 576824233211250353184119002759168 -916758690304839558043363856078602240 1192795572809949621680254253793280 6853435738488455832736251835842560 -619041474039180267865639820346785792 4222488518177974884078201446858752 5252003640807016567169271434575872 -584572289810804217148316901359747072 6605250510566485785817056712589312 1919366134463694303255953586257920 -723552424104367953489479255237591040 3186548183356121428985856464519168 2315509762125105061586907793719296 -680129661672674193423335026782633984 5869404299798180940616649444163584 876684705183554491538933897232384 -66932739695723693954617441372864512 1373301807398191836750654392500224 814703583118927361126888974057472 -856957260714359913833761921797455872 1057836891552030025766106317193216 9894833797055463349286457778896896 -945888312730325862226365868582895616 1264550699329016346914805197570048 3980269125320694055124838110986240 -262645705832622059389533193238478848 3362975490996602027341040089825280 8913804837203074223006469400297472 -87719051676707295384416294036045824 2849662948940588940143343022637056 763989829372208481014918573719552 -793840812182218913493797321081618432 9486455081549696198999212338184192 547767910150847050290513292820480 -689605917996310220539764327923580928 9434038828459874242148498159960064 5924119283323936257856136638627840 -916158556871081714070962693249957888 5595430673963893652492350518198272 2856034849824821155892537491193856 -598433382017773064904259669158002688 4535526898788243554706913230848000 650126682549194991564553094955008 -663628564787332624216277489956159488 3216132203068603338913100314181632 4526213003596065953547932082896896 -547737558231440129236542831883976704 3538259607386542061773664047595520 4188342083202295823721402376126464 -263103067894185674013212507818164224 1596261723410681765308007314358272 8137324743273600687992450664366080 -220175973847807038367546005992243200 5988672681040101817408765024010240 6786650631202265546182489819578368 -713699735853258864061097809843060736 8994037975248061883965357829390336 6265563827626482545112107586682880 -246503002126048664170776821554479104 6244848685098384052747611727200256 7390689860076548345596668717039616 -790877064101707922628865871077965824 3834434638356722556137848658984960 9064961896963919801956831389024256 -844212110620643690290344900431970304 8404478946388339697963799949606912 3237740015869304808155366727614464 -753534822689391017384238288832823296 6113917053379778842050075583053824 1854705778097299477605656620433408 -669560177708938038253157569141932032 4299045873799258115919929946406912 3441998940403290510642186922491904 -807795150914808564376442652367781888 8336175042422235669752687628386304 535462413526549319727361728446464 -903511489588652000623395657981362176 9845349544954329229633212173516800 3310091112466234722622360617222144 -199050915183485039250757563541618688 1331232754700547244796451632447488 3720222893855857853360713959997440 -857475868849546026937079709275521024 6681480894496155971532248814977024 9536038834937653457099424566083584 -369689810424868506748713367792254976 535200586913445899364174026244096 9282009784914762274543127951835136 -464103726979706274478823219939770368 9128394420264355717959919140339712 6718138095160012201603882408738816 -156507546983444460378657100044173312 1476700243200650597134387801751552 9712745746749726234237777993531392 -216162055625991093780446388525465600 1076877890453157548231142987005952 305699133174581639277979423997952 -884337943309648421698729323050041344 2754119167443873357616816448339968 8391899571411794587637416143618048 -12334917681295668694356779335680000 8282599730199298665377796557111296 464858155038854323028521186754560 -361097326250286655021799798376235008 3454419592884385469329617708908544 5229838429433682921424154727022592 -211038650378926375637331443596656640 1756269517376464843036301484621824 9456885245878100197374002169118720 -366905091239908004300802706357878784 4114715479062237126044222274666496 9072407206598689901974451264684032 -404904745690339670908425393162682368 8595760762418909391539511167549440 1601000228968882846407598041726976 -825592508353511005981489023030394880 1725388244466564921645580129665024 4014461243818716280873618442813440 -910533784181332529618265669608931328 1186219919815566407084800957480960 7277909392190444919886263804231680 -722497360936982892989824947437174784 7466839057569886540985263728885760 1909987250801988140029228743655424 -464712371651494831191944843254300672 879477991682199468907098319880192 5343675693531984786406027338711040 -254311424494836370599897119154241536 6252260091329532498936619144839168 5726864032070141083864335892086784 -378807192961152108984562970200637440 9779338301706732231912987048280064 1646224863190701834848936168259584 -906321713042429719169267727641608192 1858184143643873583808461307641856 8454520724439183701318829575503872 -695202944240474633578038611442401280 9444889468313287777128346688684032 4217560318621642656712282517536768 -190986934697326317814235329869119488 592389574392702941359312184803328 3365319335378561818471153287561216 -727324049381894495102371610079789056 6682578110529269394174293997256704 5449351167767293354569380319461376 -806586939138340321122171947514331136 3117986147648094178640912992698368 4271130758587608422057376810532864 -477696178537500206383674206501994496 3955079538951027481419880450752512 7253568427418132968019944043184128 -763954090300617569488617644427837440 327960261474372501880533541715968 6734898851950943375149513702375424 -36691647540098164854297757877272576 2067580320330716038090438129745920 6237886549112875851691477962850304 -540174118761555580249470637390692352 3092279273965358465727618520973312 7522908452425191083010876810199040 -837551242524099756227105320597454848 177918677341723238479965009739776 2672381189477417485888049800806400 -285462762260588464471798660007460864 7566311626065117453447829183791104 9916019293866826818277398227714048 -821597258544975362775833723554234368 2927975306145146821567336016773120 3831450621665085180719403357962240 -913487190455440185767192202471014400 3357180371858686812056873775136768 1663386182607656287168231483899904 -667161352476491409550740430717452288 3292544768377592233586336427147264 3671740952480949385188790249717760 -962217075029554011625305648308158464 4289379148766047578195564049727488 3398022492599129392803011014688768 -37254858355438584271822475449335808 6122495993831843705070324732133376 9625579789300151929968881257414656 -769953969332923946501028673623162880 7853462506629729045331576646270976 6373277174258437726814514310021120 -681121385196048165996498662316834816 3682911335393224029263686621200384 7022084208547906073348353986396160 -456243088414144772244265893124636672 4530681720170072612417637034491904 6541386447032520448971627340759040 -494781890771656412217342080216727552 3830347736672231957173408209305600 1090433988178715108676985239371776 -263260368839015315706470107426324480 2157711142925323269692238570979328 3106909371384662264016787612893184 -859841462671050060698228784671752192 2353644047250731588171475332366336 7998055989710624148754818838560768 -646401787228494969432899842402680832 782854423312157861596314837450752 9202305416501657005717237952151552 -303433265981385622921141400276828160 5918371571543395791972297095512064 3772538512767032576639888982540288 -656901944343830288243467395610443776 5533676738317996938289396263682048 4104889618566240765725867279122432 -730740600040357748491154719787450368 7233890991071849050592060725264384 9269745949909815103373688220680192 -546731224934951897591065527946575872 4967008327504114756786163317473280 4382510701788218698750869236613120 -241219105120512168552159550424219648 4185902151471048192236484271538176 2759742703278787847547712115310592 -791560758749203153082189389397753856 5499129581054900529397112735006720 7948331595290445532814296781684736 -627860768648270308834925722088767488 5627762448605044509781346557624320 9300879647212756359529349330763776 -360042377333862479454454868713930752 2291414264458284260238777384960 8517139132854732406808566877388800 -639977010635162390796053378259484672 9984899540588406052303453995139072 3921471286588731398084913841307648 -811037922096462183322370737837178880 3695344550881959573644470940336128 1750041321459085415146495364038656 -811924244194293146431291976971190272 1080744089851893112698502249447424 5945536585505056178013046994632704 -743010175427745947475535945516711936 3294526772142913369083671625072640 590170469271875117561787596144640 -135994965744486334720569283310518272 4653331125445204541327429309825024 8869723461696853555949382613860352 -243733259841957392455435010208432128 8415256270136163329453165576716288 9591060036045638059898816209879040 -123290911304990777945616759350362112 3797396734172296209782846320017408 8325672177364412706412742383239168 -124785700343475560923813837577125888 9144151263766280774621633580105728 4516699772693603295305703752728576 -292168513369479960128461839433465856 6081628183760612592463548973580288 5301660496987960812819870610620416 -910264410046779534401366583169515520 3731709625808136690618857305407488 6169998744122927980915263516180480 -92529560327077068597169337296486400 591930043863996844660262774505472 6614468135776888935691331628433408 -298134934639057638135976162574204928 8999142100781389467468703553552384 4592156837585704904577979376467968 -573077657101727939027324198054789120 2265374609208482643162774498181120 7129577839938387751273233140154368 -543750970562126057792320912974938112 7076998928385645579395479338221568 4659895609338737927426123671535616 -286085853849461988948384153348341760 8377503058452689457635786978492416 2340025713376511943534688467943424 -697155023420066847955906828026511360 9141358611256599300912219535966208 8724403342354664867077363653935104 -552091463145692818871334930971885568 8428565087502059558406174898388992 1398952152437136191263321284935680 -756250736424776055737665254682787840 253471127973106443646458881114112 1000185656403942020266706742542336 -351723529580270299296197393474650112 3183548274206618124166525574184960 1684466567480273826689043799212032 -340581033713669038834181483832279040 3861690293177772627537819607236608 7865792610291784963072627178471424 -600817944514675832900730555402813440 6056183308562026105709748230815744 8289936945239602974567712186957824 -220842473808121055626314007516807168 7340736268364134943671639787700224 4821757467183779304376573464936448 -109332552892860023517054988795772928 7452025441724080364327670722330624 1793576846728329661730552578834432 -664837169911627483914447064366317568 1244008781055840843540740221960192 970660732127209185654831493152768 -213785030729916799738901316287594496 2624034319924365847598568942075904 7746764429676727321830833415782400 -124024411901384069627847355219836928 5079589280099862114623020523847680 6386284397649744201128970165420032 -554113063930061533321204198210011136 6087902661852569609005360740302848 181949487769062847046883785834496 -692340692911475558036132000824295424 4254417670169019668790410884415488 179086203853614198115633110974464 -80091144349602736539746502113755136 3390740166854895388850759416152064 2986232728764395538590297923518464 -348390999739136018681910674916900864 6977534409801228341020080899883008 9626842686289259887513254655688704 -476081503286413116690853409624948736 9943745497969263863542855587856384 4634558271523936459619278895710208 -187154119011524065990477047746527232 7551347661458086875729196774064128 193951100059835582436304767418368 -585349453500631656068665407784878080 7940016349685845866517828709908480 4407300388752728853837584527261696 -443859086024635528640634400268091392 5764905022160688680218907268612096 1385960575906776656077144507547648 -981666500981382576548608171099291648 3079413753824638130659088433938432 7058572866872300755148090713833472 -779275006937152500761475987982516224 8488044898301565628868940422709248 5631032013256836788116941715800064 -951938399949252053262514720199409664 7524795862497390840641648915906560 4706032429196522020103667878723584 -172790853346164182508671248703160320 3667222479882811907450308944461824 3740591431265129304048743051427840 -612216278830841193016982388802060288 7966957686415058867540925020635136 5201134463334954844733428532772864 -316443992276693205734184140425658368 5965837925520760702358975460409344 2754271390544281511945613973913600 -678268622112161841819682297679446016 8255087099499237684681005605060608 3851018515858907018594038059106304 -455760308574389490655372891670970368 5365331940727682662173174589816832 5472284888885656717070321913430016 -651054170047888147620043814955122688 5798688323966513514129920735838208 8216360083309825031554387677282304 -951639177823638965732874804487258112 2794657149096635168503385462669312 4500477057325125021535041218412544 -682369183790671409611954310998917120 3612676416327126746651661764132864 789178758781820595160113800544256 -652167481851625543363660402456002560 3929065153528645413429101086113792 8211567901178073478185922987032576 -704117568820352260164233631713198080 4662515782093274840962030890909696 7049280454871233492232795819343872 -177504047635916152562819794791825408 7510472889873900391405463445438464 9380099073647602929091796925415424 -44394615273067546888174580208238592 378427860044226490672051757514752 5176504771500434912222074535673856 -488753709089909171570318905870123008 7399161315347823222643585607270400 4125292122343565673124461711196160 -921671099789641921465919502586740736 2459990273697954106759007568920576 5817892354304555355020151901650944 -133090998901393964286295675162853376 6897475587461431518723534416248832 4084950948154261262601637469356032 -624189213476544196775058000488431616 9644696700174742167375139789864960 1398325367465571918177603550183424 -638546699884055817853005235566411776 2589400850662025184617428204650496 9745796187572053893654105926139904 -481838092582099669117520508211953664 7198682962801084715541564105949184 2053499381231721520366441858072576 -899372576351202279602871803970584576 2104459230243286062637562768392192 6030170545777087976728460336824320 -568837721286527697607946854476021760 3117618955790302939384005361926144 1463668346754739613484389863784448 -80590989605796304570894507885723648 5878292383628587430422600233254912 5269729083869883783781185140817920 -490611189024084571152416378315603968 9741929797831807089723603144409088 5242863527080441285729588690812928 -57625442048209614151146267601797120 1739825382850158422508245958524928 8459913659917833485754789389139968 -764489105047327381437060238056357888 6698726597921961213803239244300288 3104630653610748970826194831278080 -711823981784021348198348123866660864 3346575328367258924231105905164288 9030167615950142260576191474827264 -518465622497087786130380217227673600 1749639027289005347370491334098944 9991427159945477227640141169819648 -406471401095843896234830618836336640 2725284020996795027520380133703680 2621332401918620437758266547634176 -341445770786883688616956185913851904 6398013526943275496250692033576960 3813574071527367087637238489546752 -606624270903747743736942295393501184 8252691927210485220132724936802304 6083925326895831958932684967772160 -174186019141886569993430174965694464 6894534775195889661272343177068544 6914601004810911827588474736738304 -13736001825895279342784211073368064 5747319592245905041690607732391936 3108651028675577023098029774733312 -360786747425631125182554173752737792 6404061495651219741519695925215232 4767576583008180811391537554391040 -270451768564061378007450408200437760 458394388207076410008640686129152 9928786537652894142750356592918528 -894476891070219165054584701442850816 9987479884621225174465110800859136 6374641727807199205593064199421952 -856694169601367356484324922484588544 9096993216627131011864277366603776 4073740724154630558539588669800448 -578428289141579418332338692068212736 1858301921392046360371608336465920 8307275776330069025234388451852288 -333351896914216711201490254686060544 791887429488549603503787332337664 9470397829167999362875636066549760 -378216549312770449138752990333632512 6575376724544521060933858211397632 7689235046382798651002563437002752 -434607085581523971434281173277212672 3784816496476136863943012552540160 1856486734526955708045884716482560 -349258458972247133216741037973700608 8420597658134605268050390823206912 366845627185241059132761540919296 -50437289877220225791329963970920448 6092132413493322812388229467078656 3746068328193523176975655501824 -284379352733253999889455802637877248 610775335909173258171359736889344 5639110545897977666206284046663680 -547179312522895423209855483536998400 8511472463267178253864859921809408 2529229026929334742012906369449984 -983767502363719555036988850451775488 2066309849362565050830024345649152 9059739786474643691004178160680960 -107813973303221382878141730982461440 2365036613739289172388416539590656 7338582283746525516010977643986944 -705498100002892324278393372269346816 6101678235327510865622692591042560 8891786909052132049598740737032192 -122477891109784920075143916225036288 4450908026718267280568516547182592 2902552649480207777832490065985536 -249511177915586519215680292961386496 4430679496352253972292423057932288 3508986725215629466599630191984640 -895183591258154311457559797328510976 1034545264180300319310790459916288 1507751527530888812868236384141312 -828795668791749614679275232418594816 5288709610450722085390127764340736 3814709971180722758724852113211392 -882085872478706856654641750846996480 2692495429758661888483440034054144 7606319164849761128305114340130816 -2473027037282242430777160454111232 1969461153149662584369373268410368 9659313806357002084611456726204416 -257557121498239975396773367476387840 4022925920209515479604451447144448 1448239603179638057994124533956608 -321508442392230870431923656812658688 4816776696318016536231245458178048 7117896056641998595531448787140608 -61235343533252863836391699594084352 8061509234836128903913532586721280 8169627155235662119615633016487936 -387201230086415881059409234344542208 1125057240047757096445501983686656 4687125300156168552690989318275072 -579630612319381451702612351462146048 7023267653697153276786566496256000 8637908560845780701090901399699456 -174372047374458236957620582467239936 5986296245726418937129426246172672 2100152320174022153189776653549568 -40648175596995156649940110626783232 1440898647169985394424787970818048 5224086724982049963446985323184128 -812193886850877648546300353226735616 7508291969470455881912348015853568 3464708430130937857619813629689856 -713089036251187689981815613036691456 7218852115349491099851570804686848 9063699173450059148913336857395200 -6115839276028964101550432868892672 6014744766387240272468181323350016 5991357863787044868054340411064320 -366378617946635543598031014937493504 8081852228762155540067446681501696 866896544315932719703937616183296 -819342734990976820502152070404505600 6878782780979843590702720777977856 8424413897353846980598652540551168 -332407580902026975070821769675800576 507521329654665530843726939684864 4501438876108768039099324109422592 -680973763272955386118004056073961472 873662982758715506698382479458304 8798947567703162368578083488792576 -480743511757008298468579764896530432 2758701972999699759874247355269120 7533910540199120056105037239156736 -539140048069636883287114507804999680 5114847629314462668956283969732608 7575917719116647006397289811935232 -374623951855726267894481188082941952 9680126373281575545505651217137664 6655594439802599739230635780210688 -655864179684429107246382570929127424 3455866524069120619900877980827648 7337424162507111989911579158118400 -731409803915582800660966520330911744 4877579339134916530702962539888640 8637021498172686068018196162543616 -751304416938868385043961496423366656 5830987352671155952671136000507904 3608564761757335035816333241483264 -27556732939089494806244331620401152 8861847215137399792586096109420544 7811952152610973178951819071586304 -963275614862789905767556512328187904 9827996218209217218438617370722304 8727903648553653081076262974259200 -534389579069077727206938736911712256 2672713865465502007390647523213312 4758702455936219276012306548391936 -181525199666303039538572039265714176 6548323940643541886854294409314304 5956564666514509106660488605859840 -688288462845892859373597603557015552 81819690934349227725033612247040 7795487833551600597198901132394496 -647582864749100362231208637062184960 1324597291002542332523574240215040 9431187441278786636948137100443648 -59539624972182123683169226603888640 6807939457809520009686149098373120 2809787875348489919736047216885760 -54469983702998781109138378236887040 970599664207099412296056952586240 2264443192351204462035978013376512 -525048814608680559290678610919161856 3439069363255444299442239467159552 4912505480584177138219631941517312 -945376238503618829128490099132071936 123251402025666529419112573042688 1750092732248989138318105019154432 -121334413722692214031036088393400320 641809755999330557325321086959616 1229299069082870080008502825189376 -89003779019634919752353849699991552 2737167599181039082050530324774912 9351810497361985120182284360613888 -845956627298251590727037084340584448 8851677263955552830184351386828800 8826463030554788735530028727533568 -248872557971871015216781706668277760 4990427988406457425021439322357760 9084442934157470655739355407056896 -943103607040467114147628580167745536 2990024152133905489307223292116992 6779204805798372360888663895179264 -552913311561352577344974280177221632 9701109725202177941792133417533440 4857606792947020690306732526665728 -819815727848181426683823978853695488 3124262998982098133989690401882112 8678761402538993306291383090282496 -712236693314910798142917288805793792 8980045991562564959983793160060928 6684064753820083128211457041235968 -510441024412681714631666100743438336 6956104213080025365538305183055872 9078706032317635835043852612272128 -703728722216144264490242049776287744 9229740451230579010673302466199552 1499561363481298263773970824167424 -10921245413514149856227481211633664 6692408324460698308106638921302016 7095366801832812789090123413192704 -325861449119876566323836832366723072 9712393131825494830013300521041920 7794458685340699306013924068950016 -744004401514572730577054873340084224 7841035913412485809728261999034368 2112667452785013152592766781358080 -525727337277906584633409793396047872 732478550947133378090864799121408 1074207929390174894415453462986752 -341179534095437823384168625745166336 1167313486124408909236073956114432 8657061665482925887305910482632704 -855488542129093944993271332011507712 802935678164804326068262476447744 5824237417704111931065691201863680 -470574750970667739883284340471234560 6903053952490713787163567890366464 4441122602909448685661499080835072 -256843962547485135765944420307828736 269354737027718175346573090750464 7330813553047979196552722633457664 -320093306988767995348421381306974208 5047770307302654189806768606937088 4615254386843753741451654019940352 -180244878915919781130252618496475136 7235490093153999628361504028360704 5295741109864070130091424231718912 -836344362157498485269036678395199488 9571226446892286451852262995132416 2974825184584595337341880676384768 -520177531603377734181027079807565824 784238389266506512027397329518592 4770178427098373053837640659369984 -956587634895379624586834722733162496 1378506109648861443121250134130688 6865659836812035280483529644834816 -124879696449324668624947297713651712 1768117577228670239104599154753536 3800261655987253792025868624723968 -746984323724933728224892500190429184 6551237970679813549568284258467840 7073340616563281767169819561426944 -144338408989871219735793276301606912 9446799207429945867710981143003136 7786647904630756832911902789074944 -572158902708642051842445015267672064 680215294533413675382622449041408 5821609503600111560136424056422400 -435249397037650361614614490377093120 748557159142861548222500915118080 168998651830617798001379883614208 -742040813049807517863765269060517888 4380402271711676112882443304828928 2976685253612646664875396397268992 -894663094739113638818028958194335744 4976702652992241049703055961882624 671190393523242061335087280029696 -431671975072926511408371851226775552 4110554868223497605432366780645376 9981394119587944938524009096544256 -849987726102275019354446701248118784 3299389085173372277317790146232320 3974136496326865165773218724708352 -678303150432876584260904930798206976 9547580605085957881836090142228480 7738436060801392427202919641645056 -263639451776060154566291320408637440 9124133113886738659599144447901696 2580439049968345432861196328894464 -292796785986777143387136172767576064 6256285120682118116522256609837056 7590859241115989878787789998260224 -334731852717524237999877704640364544 5108610553050969099955362215231488 7810772385466641662319946157260800 -470529418479950841674790118577143808 5959264200516770231324743879884800 9060565841139647347533846304260096 -122189451988921545224904619782569984 180060900311073165508379041333248 7797577135208614926424521264070656 -233554653952647661660387540614512640 5217503507165860863836692961820672 2370853133185203676162826923147264 -7567824767580833641373745857691648 811873002250218261236407418748928 9023000054618246019740820771438592 -660981663677932487564451092629553152 8016044274058581633006086119227392 2024444197167967099750740907786240 -898751141129705554502679940109959168 4038525695981765306542679230775296 1550860590583135662399752815771648 -188488580687829611096081798034096128 4488156168594034397147191308189696 1637811123262236348932030573051904 -564148993987957185145726634733600768 1574042447071750828064863563022336 2861045846089288738138633753591808 -806659173708182568031130333271293952 2364659093977387215064472752226304 7022978852909070382282974865391616 -22686296899994014459365402334986240 1510138326085414950377851132575744 9688527425877735168135732685438976 -699440636354227179804089451481661440 3209745092710063327059634028544000 4601105826622415533066549593112576 -395291183639814122802565237773959168 3357154392437014650090770265014272 3170185675861185968683413300838400 -857884437399779292986343584591511552 7559539524767420445336300997836800 9809186869673068023300399206236160 -311202287398499354412626015112134656 6049981480458365947245574852968448 4619976166300390616864035591684096 -839073620816831749194042414557298688 6640687272563355125167220953448448 497148624168386230511576371167232 -265496672078098980687026567547715584 8801421642330122326188780477743104 9016775644164182180136679429373952 -467444610417921178070848675061432320 4259647271754229489087919224258560 3993450151700479847739764540178432 -651525635824041842020865044966801408 2343205920408909168233025877573632 6400375214900570872361588711489536 -270562356377783585830227835608891392 7349879851283650391709185722023936 1368400236670547414379835256995840 -748233939553086953852839050539433984 4347007922835984462312626970427392 5714588096175470160172858524827648 -594590018263966058275220034586411008 5301023519198390175011925701689344 8561344808631244039181691982446592 -622003528797147962917659889182441472 1899020546273994336743240308359168 1870007640952288531008262120669184 -418539301504846600983395569753915392 6959116379728232910114526406377472 1784333151504118095142737470816256 -211257424968908938378881921991049216 4243238606409380853035812553490432 2229801435290159510223195914371072 -587626455211033787206765739287511040 3048439649445788772492834016067584 9558082527593467413053854070079488 -133714185260915885866839367772798976 6045754835797995865201119770705920 2155226494797335044893779672694784 -167753314969778331861452692083703808 742102407743300472333882158481408 3064785799312529905308741016748032 -238129935091254641614284592934551552 8187891040322680791266154153771008 69756556314574856612336067674112 -141787033377766196367970201891766272 517773859575434967043189155823616 398277301818087551989145019613184 -98114910434704327397074196859191296 5933334636645866934731092527153152 8311297706411294997093349859524608 -915002282034261867301837496876269568 5740814219050184896547230693982208 6531489132404482552121407068700672 -870277313710126920293273850750173184 7158404532820540557722272179159040 2477277129078809880918579098943488 -470150406853489952999487905548206080 245658093845158048104663654334464 1321738004414797257720724900020224 -190488881369399252103727565200424960 4940436635705435671671157815246848 8284904672991801381424842449879040 -16458810002431511237862827560534016 3787076486432221032215190509191168 4203681968060860899427599050080256 -18116340020850909706432697876873216 3039603780817081213878521326206976 4497222642235620301336099671769088 -553121064984637339766401176797446144 9570689819295300817956804694638592 8827769002988713581598901924790272 -678815876259543558820076951315677184 2217913898167354580519135140118528 1070459377310121393246092067340288 -947268742081939184237823431909834752 5951335001964868059941779686817792 5965487987743311660634106293649408 -474250032459835199825232957125165056 378327853749718189778712867635200 4805745267387874559591691208097792 -60299272226938386880854690315108352 1534713627526725457347739404730368 4350050311830484679614529468891136 -522744304454382261037617209577308160 7405761243847524388570841219072000 765714370721299122551087068872704 -761409792541073058858080084386906112 3558023016490605729199035917533184 8377599090546572429484890410450944 -806463390393406487382795738352189440 9798724008416409348697146867580928 2904763185868684178875763281362944 -421210960512455984102810399161712640 7885431983192938630356890913079296 2472812936363069785867151355150336 -86872553628588128321670831975432192 2333937008733266419859107293954048 7773431596358610912757203284787200 -521120033302304427759087475862011904 9779489028098561782378455778721792 7797491047283409493492960728186880 -494204340695108883518077649081597952 4567614819372904053134754704261120 3386076663004159376672343640244224 -834719101418045282343173845407498240 4136200422284381713115986998067200 4518295850678479207416790230499328 -526508949730523478753207828443299840 2341302398305431479314938754760704 8860759343016532022122262722248704 -187018580067896940290632624002564096 367191609076542808210687863554048 1756080256264347749905370208796672 -855509656670348330892619043668230144 4489595978604418665087792815538176 2532616151360087852577911209984000 -808744488469272320244972728333893632 6809393315170485198570530919153664 2199661182181184440328680254734336 -46766043407894785664091136819462144 2204602050599358250236090425278464 2951566445944502455051644466888704 -732654270920595040897550903760912384 4070957605898701941246263816093696 3881667688651550336329903178252288 -761722021138022458468540503790977024 4938348677200429871066843852046336 2573538936662911308629375558090752 -176895716721347672392284595097174016 3639459279210220727683498547085312 6642951956800538138079706486931456 -743244059109607939203231925959393280 7939706882328103613050330984480768 8339434084171794368091076352278528 -931553666696830196262314923670896640 2058446960909324124476442452951040 8261071402970987549548477247651840 -96766746526981792005370614634250240 4541028552088880387343851611750400 1471079627057023012757610757619712 -493812280427066722649332054600187904 2504434555247577173038367850364928 4285244299379767122294570112516096 -98647203471130295164480497593090048 7343494595345619786168382835916800 3648311984451306264221689466322944 -679805836224858228976769704610758656 3433872427776043701283780546265088 9789357661582853708963695871131648 -263377996475064260331842452177551360 3347298427814564594277397565538304 7484485731932437957596422894256128 -4715619427813870731394069058027520 2522128601630773682190375490420736 5067016128241324859245495679188992 -193031226029587739896854139302313984 8438649747461473108515026093735936 7923164975006617837011433408167936 -835473299587542173412479833615630336 526471501855521253600275499843584 9782104775295992727146388514668544 -107762531542326787661455038317854720 6563530021658177716456301292158976 7436200011578406220175338224222208 -979440536483758304710809045304344576 709118075916688066188096894402560 6140526584549549644381780147437568 -540220084446987322269547219078086656 4265365654588210128612731295629312 5131760695141326052650370409168896 -975654893067459251829170206169628672 9616009096360824940554371096117248 3375931364958238253195404001673216 -297758117338844469470662154031988736 7923002704935743576522418410225664 1380051828300759625945380659658752 -472028514125252631770452016198844416 9074445023739928188243289711837184 7080806907433888031438335796838400 -413595144139903792441512605811474432 6413025491455086928654235514961920 2450844058125623818358473325805568 -608666382784866965131545181023109120 3553577582272811064076217626918912 2883090349261724202475898724679680 -458371110266579316117304984888934400 5926442890969833990096635260043264 885179777395892946920386664071168 -847674159851056004708658694160646144 9489485254487045827923500609830912 9819662533429458532354923807375360 -796594708824108845964403184618176512 1599272290548523003469353621389312 8352960653452041844516101306712064 -950834940918634333979907037258055680 7782569874135141068629555514703872 2222264672675181041214588958277632 -756583098110950501925426731379851264 8557749392970009632657766610894848 9800219340107626215059966096572416 -836706097660972071567225403576680448 6096449824941945032634306756870144 1814160606200926375000659722240000 -964062738661095603965152260698144768 6033959270476937413443100623241216 7382085345461121786571357639671808 -608439800387084945892785724617392128 3764246544862030111089143144513536 272032123169789765587746426978304 -226677398968740857412154220267700224 6338639538849760437773302514057216 1543849746978010206754033268424704 -235360319783094329713163211674484736 9456460255794390823076650272423936 4384986885589843477072097077886976 -249282890850295152489314343037435904 3781413006708163644436724748124160 1370593503560632072594209468579840 -178557405365660407448534172517269504 1054868686039347155202232274649088 5671785269175918606328836338483200 -555139203673324955417294907136540672 8187833779388763893004592713039872 4867948592947463444671706041417728 -121135443124413299227037271827939328 5106631094398740132600546383101952 404044006932051777055793304567808 -179492067356441013871427210782441472 3302061439397079099199301552701440 6978866146740024969635654937870336 -192448116451895344613109837043073024 9094855839891249694963922324422656 6941541475768097875262281802055680 -626477460555295193685218949666439168 1382647851478842626258955556356096 6045497362620326151373426603851776 -228912497164016424445192461231325184 4838259240274610366644005124440064 3828797882554113165069025101742080 -519034943352737494421325376521240576 1977649418284776781475107735339008 2487447226108199984186095040462848 -446394531188853471316541006476738560 9578380739105908358715682901196800 4036653992682534455390061318897664 -199632023201429712286010050374270976 604002861637480345221825730445312 8986669727344842240745420850462720 -885274317028216573034020243117178880 4276537707684308951669578418618368 3437333909163859589590247723237376 -199939485283034734007080353362083840 4622555374388972926065280580321280 9890092700286002232124659455754240 -799339348772168224262220491412996096 1638382652068561072592855668621312 8541404583202866616470335708463104 -581764523685290186084000778898374656 2418385628442599049461430059270144 2674904722328598850807311351414784 -769280158123567706924916090794409984 2707236455528193750874022070976512 2296935927643747479965331428999168 -904338581132905467944373198180581376 8057373679339214699733941384904704 5811616164587217625813351760134144 -370456248765168797889792999983939584 5832910020060424968503165120937984 9982029084899812734270914554757120 -80473636011793788304246530784624640 9446277264224918240945021273505792 2341429753353113127069152375209984 -313730817726445595894846344969322496 8086627595804406114093205311979520 3515060478347123300134943467765760 -447302908040114325469269199744401408 7713761073836575283837609009217536 9673192847766354577456293342085120 -766146518519973881918380463569764352 5791405648219372759800824423514112 2186340200961132944202056566046720 -289031693382402181070488750010662912 5927222026418885854092341157036032 7281545164708160201055804562866176 -271024553810204262715915629041287168 7620865690381036855499620473634816 2686632261269001704791300003332096 -742611772942657092823278549957869568 8684688953136924729640257146847232 3716852986720502893802865173725184 -328406444949896535367022651933458432 8233774639084654410843853114310656 1317235980036990650446592591527936 -193833144552680778859448674346336256 6291998086726897859532863519588352 6492300970757944203589114302300160 -250227083416693285772575124037304320 4175262650417732902380204162285568 6330201540282241367832423483572224 -631899771715681251175117127560462336 976435557669458280682118130434048 8278969543758214152971396642242560 -344412562309984981168838841733218304 7252134294076518317663305427058688 188010519835720785643022491582464 -882584040057594659723506303977390080 612029324924463703603044270735360 6379557041980689989906149440225280 -358693915763769520879722169318244352 8083519103919019249726576381657088 902578063082249518022280274247680 -303781865742779749025280224774848512 8802979088897750446367169918795776 8987621394752033121427504976887808 -132253122202255118484927402444062720 2964648337906635218097961336569856 8136840766816743638563628190269440 -103357825266849380139018101360427008 7147060681504639476971247132213248 5935524256211151922918945619705856 -267528079165071522605159404114280448 4626499791382170683706581582872576 1247582440301346801944847835987968 -63522714970652927470391012731387904 2942909651714731060517714446516224 6434815025121391772387802882244608 -676719319660244334694474812072394752 351296999739714335974281462153216 8502896428692550232193808633692160 -555859888109810464054115940052238336 809392877980496023795473424842752 4817215904175139688755160340758528 -225205051131493794051156574830854144 4820885276191740047139166287298560 8176462026765623774743485235593216 -658534825034726330079071483222556672 6858400607583129426546640736485376 9453028020470023999606144534315008 -276329764108705654093625922223603712 3717450009859491558011901600333824 7875520146886749225744455778172928 -357434577828826345126084867954573312 8890027228605810118285662267375616 4383758578196314845297581769097216 -605782994064421474277781572797071360 222929291461298982564572428238848 7397672860682254079456103502970880 -280034452085650490504246193373052928 6174742852624024918661764346806272 4748035580106227686134240749027328 -227868199671204033236648822566813696 908860084473134988652194708848640 8823306417492364709725967443034112 -675694395695883050542037142899523584 6649147953230652572733398633676800 2931345798118883257876526909095936 -487018886004207498857129260456345600 5480878389405014021396222747607040 7464557998838242959780968166064128 -879446317278703065990227982511243264 8624533193889131401889838744469504 546882387076099710644163411181568 -937413405276329620966961702722600960 1997167912562198257147232454180864 4377030332179941082004698827849728 -286770028030473637393491148633276416 6196793760098741900364266250174464 9906255551299650970845938907611136 -227977864153315214072469810680168448 5459873023106126638680354643247104 1471300114425978244296041578889216 -676360340672085109618200765161013248 8755398988232443302750349690929152 9270378789180754143447798173925376 -663560723009996780144298909392437248 5082793616790035158593705561030656 2106322441588450744829722734100480 -634712339321829900318636002259238912 1178414694502140415348358955139072 4803546776633714736721744940236800 -176569158218281572282314909456269312 3358874001617115399896592610754560 9860374407058635282275955692797952 -554854857387786072898272132773969920 6611587490322699664929395084099584 1801579699179074733333725734502400 -507697312706376300772976129887698944 2411245182476610342400693924528128 3546895293003400161318516285243392 -116292513684014598122884532224917504 4733673383518079880916260121214976 7517124299836963729532156850995200 -752547754495344442447914826972790784 2602247383574148204981144648679424 7414509179443743235178745007439872 -623443063876543007088484918159736832 1922530146581702546913533794189312 1780341838266056474449536683606016 -489703124550039954802499406165704704 5540485787035268071607502276395008 1735211202137538887832833458438144 -630543586533602528978307531371708416 8523319955147266684604832441958400 6396503906805187843785362438619136 -409485955752658529832113875521110016 7372625022057142320055196214886400 8845718614477862705009168421486592 -813746866100360374807113055369953280 9528101139775069459063709544480768 1346255113133316798288584954085376 -828264331452476664610116672889552896 5664718113292014543754662932119552 9151405401164804252333424737517568 -859708867489222049703159060506869760 8880721701043034561415173078253568 2940533260895013396531986451922944 -490719343434802769339201464005820416 5891717491347303382852490519117824 4694076311534794879732548372529152 -535254311842021414322614686684545024 4686014042877300797698346997252096 4014473369283729749812667532443648 -435409708449656357945203923265519616 4435655206067748939840591031697408 8975121373314187593696227031515136 -486456362973861003134986889210101760 6869849355920973175044629730426880 7512315901267947349463267396288512 -490462409747443823930686503588462592 4272512441892045956083366114623488 5804444635159519762223167256395776 -311440736549183099657934129508384768 9813689960925853052059807274500096 4293186747131268127772885773189120 -501221490764919537362636835775315968 7829116565194459823713478814728192 649304201483118685276234040999936 -670253358306734163813955693308805120 7834121091139803097258802888572928 5673769153385251813069369743769600 -388415456362413350430937915861237760 2863875163636684182560898220556288 9827013338359041722318468281270272 -928842638782569843787289055255855104 3332781561314076485177650467307520 1138947436744106615393603331031040 -143209064297447860391789235649118208 6817738832271961005651969297088512 4023472668502836945371913884008448 -391752070758849275405230678581706752 8087688002556463347400449388969984 1366220099156021402555952253632512 -255536473955952846812554540540231680 1572867397179609256089498356285440 406445379367722005343049334390784 -33143899510115203705330361455083520 753878792441838372664045239009280 9796433337048527815903058719670272 -616729950603145991850102363653144576 6236862052137317678602207226757120 424822426304299343802143128682496 -153201227601366329585393677191086080 7606659886092046260275971562143744 4898951488980870815957352802418688 -169280373287229116691544033688813568 9906358207113238623525283062349824 1092824734910363333839548334473216 -946848891208190961808350808840863744 3213518007835157595896454758531072 9275844561936795848824186791264256 -116008686502489120930907884319932416 9803764893890530247018858164518912 8399726352038001738698143588941824 -279462886758421333745735914630414336 9248454555218376795250557141909504 2383150203872279974656094821679104 -709349111003281795075265595638284288 8833174472243099442310039390388224 8475755684131378758933480585822208 -633696910357923964945169443083780096 4338825662849664446439757208092672 9723921726500071875748658203852800 -64764119822893688744053858356953088 4319072336052796253803704955699200 3327778017756400525811467887312896 -497961876378602514966661960860434432 6582994061129743285809227138859008 5981459772374915062128070887473152 -906436481562105659621832011307548672 50690029348253974436286946082816 8781490386235794665322532134977536 -335381315166411531966066032935698432 3376522465831543497694641756569600 4408064898117640297045332752072704 -922823623003756534832743521733050368 3791992982648114768026118886785024 2009298445678490356205272287936512 -954315169513460441361891140086792192 3835182526026057553762625930657792 9275742874697023716736806458228736 -724719684067527822636325520292184064 4374456767027596485237621301182464 4282207884853943628293833083584512 -910009455678848182826930001724571648 360767948847715733557541783732224 7429981724492976691956229764808704 -758122700536138667104607462785810432 8201955875099423159157582209220608 7422832751236191294384428931874816 -999390158564425940583302830110015488 3781627502742175911868716233523200 306568009978461519887654216269824 -520591686644959449340093867124326400 8035275135776471948546036975271936 4337669153486254630677007197798400 -379487857051286411506666889778561024 1757135717033562000858397781524480 9473499754037299939892001406713856 -171390541792244382270916264145715200 1045163673486965672679505135665152 9275489810210193730871813908463616 -304044139944711918473134979384606720 960262965194280069967460557651968 912397886145136055120824234934272 -7874284841776193005708149774090240 1506468909574846781626849037385728 602581394105292614015800047566848 -936597432429429844082175611475329024 2631887876675014875421057692467200 3843536303298533197810221870743552 -458533610179881745446477961216655360 7151095191459774004711092849213440 4593508177271599223733289157132288 -576118184215910081252680932742135808 5775213822918681702873260516966400 2309118229261873816413939370557440 -726673617435816257208785358297235456 7167161293507465794631828609433600 583309372723324111635076303814656 -43659370903863640147917200796155904 7744557835360546419847325372383232 2322446739967001684811111903264768 -181314790933175501008689174188916736 9817174521962729696654858668474368 6823373586358304324568082578145280 -229812016349548216062881216963018752 8178777117882165333376138305601536 2480218506264056850553384659320832 -103624659112652237454009213390946304 1322960475478164507992466095341568 159730564485448982101422271102976 -162115458063285475772986769738301440 8699220629958233298711903834472448 2964054231406520741607204248879104 -696825097287032114098615953716674560 6840289643998126299588015285075968 258775849485621174786934198763520 -318197982789504122542440907083350016 4083591593894283790909767424147456 2442360612475439825717316328357888 -277332099805713537946803373382565888 7931188273005395876026679117742080 1289014020963173372359379125272576 -643806484606131684710342161126653952 4666619135050509604687411924697088 2253863455903343146052621845921792 -169960958396628743416943209407840256 9585293664068312182675917634535424 3801376669497533778807504450355200 -207819333445950477342815826600787968 5119126031715226183257711861301248 465819499494927546407903945555968 -942264370256317905839168002960916480 2892271598077086369072274068209664 9901237180554887734241830568460288 -794657760816456336710951140124000256 7199152478940024020150065580474368 8974528375130604037148517202919424 -675098652294624300861946854450921472 4272850122170791334512097251819520 1746894529688888040331910494289920 -783934330812889393860831398949027840 257247635167593208161090041544704 9831270977493181593163489462976512 -691073493798197587945759194354810880 7805485363286120585768679789035520 960974296888501776487345050091520 -409734030859480247613796371094568960 250833963601411771022859158159360 6990728112751882362322373826314240 -398414980290574072465457458888835072 8192391990116485501443273115303936 7499367727214218047319225787219968 -516725232240090595007501251622469632 8704249012336735578690136714510336 6669405752631206622322405995970560 -79948412692582136928142636124995584 9149159305002733235606013681336320 2651465202320803308312116221444096 -290899363916853792254181041705582592 4253239031259899183664202986291200 4883517038056886796637443773693952 -145134891152674915335059203516530688 5794225139817930795457714172461056 8501367327079615431333741544341504 -229618308055239547435523845511970816 2198193206796179881472689981882368 4157886627758990719973133037600768 -60562374845156719053921052423880704 5064626457541892632614973892198400 247175037708761972627681394556928 -145969779464697959338527418639974400 9739542072145019083001300680441856 765002744279579857615701613215744 -157230537542066828530529161619439616 4426417603532054514936485722980352 4949052499001782061177211820441600 -700537605957006002123105694465916928 2115147231708444009118772792131584 804968937715248755055046713933824 -111590084924158830202060022745137152 49977184079188693262894710652928 8104645067907993347456636362424320 -255965704969323152475247129523126272 6274907699568034981645668105322496 4722188535062225832737154267086848 -265585105312923477305337238672900096 821303913824526995755287263051776 8331060800849183588613988374544384 -389884032021575081021717033091334144 9297766780369056484203044481794048 5841704709106378696284917517516800 -184906467658356664936852912831725568 3579597518435094532201035690147840 1170903423167413313167312122019840 -687645409319429536016966357459402752 3774980258925448335110965431369728 9426870418222213830004598256959488 -795397992532776025304541085659299840 683911456488307992345943524507648 9122728599582568042167750598066176 -225772529913545382244349020316106752 6152485198173787790679139202105344 8127257926889523875785887556042752 -620158473825189340397831002255261696 668709337464646188099250736332800 7029670352608821488505266494242816 -245571461018329897617943975335821312 8867862463932341166341615551250432 6920959724116590652203930440695808 -151752044630449300983525418716889088 7961267273957577386383588347346944 5537757685452488043211527483817984 -103545856744108650824243820086951936 1571357476189196303693980016574464 5182257522908365603661149638754304 -351598552360009239899045282258616320 9023434371747935958332615203749888 586046305501636110119570381996032 -641118036984138074870086915781033984 3067940542692377476856428661571584 9319273820852595089845004231770112 -276288510653275340433942113836597248 6006924652526496411086057367404544 6938530431250274197137790116823040 -57091646305605226710285035941920768 1659108400382003906477623995269120 8723638254256196229868447284068352 -761751882929120421670199294217420800 1675313539294940278278272516620288 9266223239492282423433102712897536 -604556401106885207987776550147719168 478511388518214224857081409699840 4706714289149053044889028736843776 -119624089063322882132774679071424512 468896668426515878984610763243520 3487539788579011068304219950809088 -94360963212950595309172970634608640 9427554880147443390142752795656192 1400589850599806345257864086421504 -675656845867961686267138825512812544 661936665142417190980548902780928 5131358511482058892419906997846016 -320624229814961590737904922420838400 2670069447885763591648320692420608 2705883519384347284291557416501248 -110079500693740663636912942063026176 2362636526147809742265737843572736 1847824180745306816708687289122816 -547910520492253480618999907799269376 7611465308110168214658963472384000 8311340064984041367430923219369984 -383255511109663991706581403869118464 4556813980037589435621054829559808 3059077534122472956280846101250048 -823788483245203901602384232277082112 6824219309787250192355278630944768 8590480434631552885998194419302400 -937599847251848741762635923053346816 1775243857624238759760515253141504 1548755769442250371862530422210560 -187484357986970895766002055463829504 3786352943337462809742915837886464 788465113757572187800881871192064 -959675573195561513784636713484681216 4255887192861397230469909275738112 4500152649217069000757109376155648 -970531950633605956861597227245633536 411770624654768482663666290786304 682431427759960785631503351545856 -862591499264225272526093196147556352 776179015725008898554362744274944 1601803036614404166049857821212672 -203966214449679610581858859809243136 3725826909826785990735692220596224 4030874598788051274407877476876288 -545816398675961883508236428261720064 432679825377870543293353086156800 1491681982313758080128291482632192 -24195516440194960691505722600456192 1194152741116978387962086740197376 3736978991702418974434387518554112 -200409614129306211833063152971415552 771041735944449424275979227889664 6469316357671215515101993751281664 -828849722617174340565252548830691328 5621642562198926640452628924858368 2335498420344280562652709734318080 -844778609475346079038355863196663808 9550260577782676120261390386593792 4016757607117429291048608991281152 -587240110865342264180455976990670848 3033288537557918409511956396376064 4798959596119577052886895024930816 -747813179292442097823346802984747008 1360810611051053275781781392457728 7001366883119271305179283700318208 -389944836896850906390054624508772352 9709892950399782697394557081878528 8256139210743562830089228457607168 -901515713425403508419253057288667136 4073721761501323824942914935455744 9561329766253211770430416949870592 -562930507110463105362425178373488640 2289208496351995467274873122848768 9955574942118651946869466526121984 -10706755350288126708901387433934848 8835727218873414374193504125452288 5999600754150847828762056422588416 -718632061430590223679732899035217920 4219092527214960578910763251400704 2524499509175647703503756458983424 -840156921003348303189734937851854848 4482421422027033418003412202553344 6946247355057843039819030983606272 -84961239481015042195652545689419776 7885839846573384090781890375581696 3790691776616960452369280911015936 -334379709889838413094746810289750016 4306058057503981688194125592002560 1801642214657182524800301556301824 -402608328425917626164733593872498688 6191455907310083496161191753940992 8817659843449943114885763665231872 -874357647528763044404286607507587072 7254953438724582897239942049562624 9165074421247828149966010348208128 -883001002225018285783999449397198848 4853202628904115246072782756249600 896008023792200803479511241850880 -980124712205033422810905124989304832 1159164541650914334992002199846912 2879759048968329047815992431869952 -508523379697964268937272377250676736 4161174405907701410003708022882304 6572515391746542391841678598078464 -139717680964909952589817844003241984 634285206389088950052172542771200 1841361864523940144035605619146752 -220449079675140324608072386095349760 4089169939004888253630192354852864 6221642861665800143638189223968768 -616029440351063099724567978195288064 7607886994576906852668874474651648 3278266360198473801126241963606016 -651562076453871080098281367156031488 1154169990554364617144039498579968 5394716131931845223914156125585408 -219515279525672706785446727878967296 9237191482028082791646991409479680 3701506525688613377238887057850368 -710361420769065698264239163727413248 6064068504536850672277029516214272 1064035264276602675910722631761920 -624278963551066152206878599458848768 5499361311250576612180781837582336 5097845279594073957336726445752320 -434569160345824898208381638545506304 6287654896959553792535164627189760 2749934826100843048021976340758528 -482500500012025384351792870629310464 7171523594828073030388564042448896 2636500907629546091779256855035904 -111227226872168088749419593807691776 833303791518829359615400497643520 6624127649043612047807225926778880 -681652631904684050713583892987641856 6808215955000731372973914469695488 7317631528862473950388408805228544 -781275801417472104297805368461885440 4556257557747797984704162854600704 8556025267640667524027661554810880 -719629213644102850897527545912098816 2492475870949880577713180657057792 3140294476097484688275979747983360 -483918013923276938928848378791985152 1152259859993246268920472300158976 1333886505431089931122642656428032 -311258841027368991986479334294552576 5223649245616570882089571164618752 998854183532526645056439039557632 -488747017540480075588871458759114752 5688336919563131029610042599931904 7303814933861973451608397319241728 -194503665267603511203699287249649664 7770468769714782915955121534795776 244811265152092356914393772982272 -328383313813529350768973257107308544 3699376213267476575758916465459200 6712139686029862676529585087053824 -885518974664673934450084780936527872 4388829655336612687795532016386048 9143652311222381742174779450851328 -309899016933282562345153296873816064 3884745080208964973895947542069248 3503069494812785573936430856536064 -854763708116869654897359501544914944 5010674207343025023905027221094400 4283202534061404442529774105001984 -250679038258306510211333805561610240 2456055120786302516456810853957632 2062386662254533147935432436088832 -582956398010683273131092596238581760 2880756521170114788956560674521088 5599406183732024676288281861685248 -568058477216477565344591965501521920 8097589475621810647704113160126464 3555333159537228460441554072371200 -955248322363239523112177068574507008 7681150029608682247086023548862464 7386042835126261814735805779804160 -838991522128903442107986685118644224 6121416447898822021672697983926272 5571327485977605616021840670490624 -909730239971465261686627153934811136 4771798091344196959849008764813312 4300161352479868230169473255997440 -826909489025231224638621283635953664 707546198263045990031621955256320 8498248392122690724814123715002368 -60818018378085653207760464028631040 7825588415996052464389047036411904 6182147165308524340012211433897984 -976393263839740122814287666267291648 2904620228454022249438762124705792 2105355971569463744478605060603904 -230263654978869913679712100255006720 2002610212620518458695847801520128 9391506554862969021615252076232704 -162326828928389478265034918498140160 6947206731530181880022716781690880 1568474804443451820823074045952000 -182831499308876957690977301162885120 4454324222133025264450049547436032 4370062189441438930393384429289472 -534957522814476256802710671975251968 9382195221650149829404064160415744 1210817591742892501265529580814336 -102375989626561772927718565024366592 9005801357948117548067270745391104 462166402223413059830377342828544 -74485855604190338066696580680908800 953337412811588891305762992685056 3842860763160971430162459072135168 -140388356416098740740177585554587648 8818212523166185577409790322147328 8312310154700122721251949757333504 -992360721403683583123901959507017728 7444143504682008072097005171638272 9783995530236467085551177065037824 -316437934226914996297087346404229120 5799688040429065835252443447820288 2747590998585148921236384705937408 -173290555066381426824571195326726144 9703009340570088059127676754984960 8795180146614351682856076628197376 -96706280714189633551934549657649152 3039377945259386693012552461320192 2616106848259907401599037239984128 -397828621473885149438121774252294144 934096278444992582089289379086336 9806029377024763521177614093910016 -877242808552486248613249308826796032 859952103005805253733293360152576 4634016874471768730397450696654848 -77862842599626700133060473226526720 2561968176809511849855427318644736 9485558615052337981623686314065920 -58434916722052332164657703116865536 6591479701890115866750196457144320 156479297817883664722352859512832 -951492580148275789852245787460763648 5132125830027445198327361682014208 1166744049626484638977950832656384 -636109545942861212908798132078247936 3653114948896059875604135560609792 4372342511382332458308888099291136 -931725125946528836207503780284989440 6145717755820458529196559537537024 3398306932242752799316361309323264 -759245294788582809517603004220440576 3382578791407450711500799218810880 6465364575354960256610198523740160 -863360936261539860940434047303155712 6315090039146877428352811234492416 1475827442794938129115994002554880 -449580506599937369063316642393489408 452006254019314063502470079840256 9305167563948596653909514779623424 -380713040388352635404051132150972416 5906572879323275260234751153274880 5065461039497692691425330582257664 -884912665865233349682935042486042624 7150088749923938501725416675344384 9341238588199112182103074194587648 -605775618404814089646424382439948288 4906619194056311229470204747579392 8419256397703492552927056769318912 -681733119620683906556889598324113408 2173883379292771311971005924114432 9189384162815714681260669847732224 -880635641960255481837658880576847872 9500735959667822972455011542368256 4857653127324591006089352667201536 -621006760271435708154636200472215552 8812389386105391540246441631940608 5117801046029199916401609454649344 -416465600154668666826221264264232960 923192100156545501906027077959680 8613085515478677063330707883950080 -502948272486080339296368259506372608 2125341059242124036678144892076032 5048234039314426281194991220948992 -783911768620931484782077489342054400 3114620317671140512639519119376384 9930786787199449764275182175780864 -951316891427295084837610593099710464 1629157058382241485180204111364096 5559514035639657927903761936678912 -196485824919929104128157340800122880 2431507042169300309432010788569088 7099958625873267809565932854968320 -29055282955369873852112850126897152 9038773117609850926781808473276416 5866145760003892957506536793440256 -416394868900876952726370506590126080 2977831941683830406109422296236032 9433501189243319090498731698552832 -634372276568925750975514916262248448 5477931456823251723317342516543488 1887671850328826180597526130851840 -602386031780969896992776671035654144 7603447735930738073140198954237952 1974828399297524125175070714757120 -473374651472899749700164383796101120 680699582604033082880338994135040 5121278395299589711848941553713152 -49355715523465167223209724347416576 8302338375656622145180941965852672 9474541710852759654121433907331072 -803157481689332422250090756799725568 7407352946874089595565260991889408 7971633817686081369729675173036032 -714949844710030372730465652433747968 1090362242351589740371774814552064 6598209700973424570548096182779904 -793395381589057934775542387488849920 8065071803207282155264287478644736 5910083736052200641405212252176384 -422494727408346915300661724683698176 1517611474062991132102095949266944 9935409387744465511521581887651840 -987419321324186852184684142325137408 3142755860339726352994389477818368 4643825534538632027592418897428480 -485173161492239953596130175412600832 1421795799064029370254060263833600 2648822325943613324412747396415488 -624291619919888567069941873141350400 1670003535610530778528051321896960 5452736373364891730965493220114432 -438188778882838656515872144962355200 8222526092229122672778400547995648 5299204488562164330446363482390528 -724077162209788348573437570702114816 2859913695114307491115564015812608 2871099674288736116510440900526080 -547644433626930493932477621410463744 5932443094608473836437482382557184 8252443089020747040844003934208 -137472921543270222331544661292744704 3051446050437292808133356961136640 2510514553019955571873336105369600 -372996948563206464044340118206545920 8154934388781681895769746234671104 1751624570920725963184646316359680 -660044952276884360480081258947280896 1529283816750174962859186319261696 7179052092615437157660225160871936 -746741668723291958851302981841715200 9140725587748976762889653844967424 6255201520717772483932415351324672 -653056723176123857866256149095907328 5310670678269447645182190568865792 2702841359120500392917739866423296 -604128814650729755017871418586038272 5637281956432706366503859666288640 3673134629216711346718244310351872 -906885830019463813052591055828942848 8269212842534696332630140068560896 6346783835140323170605626468335616 -457945266203230759369487913479831552 8490757296163792350926361822494720 885541968015434750050307481272320 -856826773368153778568027501414580224 7562095312361275130761891817717760 6274788518755831132650587488780288 -894175048295117388193068717541687296 5733735066682543688633753247154176 407155103842551335762935957946368 -969573009812936922101893353508438016 8592945960444840019207782995591168 9871499706705001530001963421270016 -745828057168136544959537044638400512 373423383249463586709473083785216 3305818640040179833024725894823936 -357506429015804188526064294002950144 4265325873412873153671692466257920 7858519625407379858237481967157248 -727825947883430872814112988383412224 3932721087608336620498432582221824 7963169307061501388201965020774400 -216429504726459592266217028784750592 4182336936633227154014058791829504 7884649470591296667715410317017088 -243505603516309419261310045465346048 1418397003577154707157703884537856 6748455698832891275109682923962368 -314412729800764709751329977375129600 9223280896643304943114834912739328 6925374874627860034580678199738368 -179401158548367436824036877921157120 841094178883729574823330656026624 8304560022838129203112364522602496 -968519846534632435769754418384207872 4876504597993807464182312442265600 737364949141399862884770571616256 -759498414592806914330329849350062080 218533980136803479777833625059328 630679849611588929813009141858304 -841052176522439948650772957535141888 1069278093538533755261657966182400 5726575876032462209922713786515456 -688628974162358401600925169063297024 2491202750462649950436385456390144 7512133184200824290744894973018112 -79604728662783430825167610309509120 4547246998835706002937413569085440 8409321355819375903958370135048192 -338788165798145148260917209089441792 5668251738056238323144814177026048 502950999566757762635121001758720 -925751548774047206281499107047505920 8770253782212793244030741153579008 9958016812601732118242885114003456 -847517925629137486367491918693138432 5089517956070839909152163958358016 1697602902038610760020073950216192 -230270055926207152837803292670033920 1602258712610536282988106395680768 9649659222206858308117890431188992 -40852299463362537398732681648275456 8732247814603839603042177096089600 5310956264618743481642777248268288 -351941874782068172503541309866246144 1576732799875574817530823672070144 1116665104582652635032468966080512 -462072745911038769830274396036530176 6874077773566954273931453230219264 1136038394132230577606789561319424 -907737277529141204160720124434710528 4405597213979107757369685809561600 9711378730970982195918270164369408 -456682834070493025283928135716306944 9403598137239224612756201697968128 4959946938881113396009251815555072 -642836954462020731189645610296803328 901079435517350807025863008190464 8913401999636165465167270915342336 -884407089506647434180658040873680896 9207037292079336537820098386198528 1361489261221413188446806333194240 -885957042483456754718761541569609728 6009105628185346942006378878730240 8638455645328154241344269361086464 -890695007556648009079016780357173248 1093786504543425333302739484016640 6300209879815140158354329641680896 -461488188987578820312915894285107200 5389694730984980733058507786420224 1548810758487695085355148987334656 -516894800185667440808689064516517888 5780431784127885410958483491127296 7678778598585659070811313578967040 -673403629798570106402702302761713664 2139968843331400557667214243659776 2379530151941383375939252867039232 -233323115803160328589649125455167488 2707601576600461679424587975098368 9761241109195278765840606894751744 -203234372675734587002107341742014464 1765781667590098439127580989718528 6847465448634760171809535808241664 -705398795427492942779712540568977408 5016084782241648513192953930317824 7628172561802797373358104276631552 -342670393619823005201004860624863232 5517103561693919026680654802714624 2671445683252087716322193570791424 -475172688766945020180613355790139392 4037778732392277730912493480443904 3100278018577586515224894438899712 -579085884050840322078040746098688000 4246959143618969114852959312674816 1534129824355431406046254716682240 -411556766551312613486968357599051776 965771960690896626745088533331968 6084269850467697190612223924371456 -129024786127524741979785899456593920 3781139657938892512631162948026368 6058197706812737690446753045676032 -498193279111876704484660765471539200 7633310375822944501888402879152128 8505689227049775423229746200182784 -213104062542588886024267768994463744 389102443491153235673383950090240 347626763555285568584203555045376 -659847031681211260617282502499762176 6117361427983009198664551172669440 2673775860966485030209547369709568 -247662842879352349833867815989280768 8470926315087964713904280856166400 9247847511132425842733342657609728 -840874174474367332156883165803184128 6192104966070702386614574969257984 1448285306620659029105714338463744 -364855676999641272664673419419189248 1327224982480715389657187308535808 7962034159616949062694893801963520 -118374210393412987907080941136248832 8169245828487566134272971522441216 8886545620992747096247754194681856 -712140792409838197268841633058652160 1199033085011869961652412218343424 264101919103141350394331503001600 -636135295883517685131430659654418432 3764985833118898750043761135321088 979866096786495089706000640376832 -979518104058282828536087952922509312 8132445877616822572728992640532480 3956997059254505793756596524810240 -14433928848851255615944870468780032 82919052927068473169143954145280 1413381386757458582443839012732928 -980944580675810430461222627806543872 5498823688900285395493280028819456 775300348309019320483752506818560 -900421883110931291578617570852339712 1338263526480383389716474058768384 3068368843911832429081763090792448 -383684358274974441573241742463860736 5387479976247175267054925169819648 8097733642706579692274065101291520 -634282524039332308370864795260289024 3046377435526977525176364653608960 5255645341695241856641794039611392 -711662435722672663987338469271666688 9961957843285100470809388958875648 2236044963402312530718804668317696 -875227465789350498178271614028742656 8979253431990458044103599698477056 8053267202535328268021863626571776 -799048624694420285410848546140192768 6231381937283196052714656574210048 4541948982477794053867097804505088 -38812279162755875176891782461915136 7370317068981217308397723472363520 9421722521894868920841970823200768 -507818013374967508216352571209547776 4302495086926930688718168402165760 938687829260827907421898482384896 -922847397299800923751247775877038080 7494001432773910109755860571914240 9745719247112756284844430491385856 -83363476290104021878752826984759296 4437385250610361173883903172149248 3427142391907792680343255321149440 -18537477839408824587424013750370304 2797262927550098857936763849015296 2863013753353448366936661124186112 -334090458158185649903512168872017920 754674188822122585496795897397248 9492360680733774438800653373407232 -645734761119472125798096027607105536 423029060423570152952386837020672 9247705209229604703766640200777728 -46863324488162313115774825661464576 2711789156957567034097187577397248 7520943447986053848343951106375680 -259213928766375325272298716330459136 9178225467825826389370518122790912 4318730191827803973063562512826368 -594200188972401407037425449439330304 1790162600826843005258482298388480 6320839496285326476826168457691136 -14061003337439929545796300193136640 3458135721403132273801806940733440 8871313100042721464369891531292672 -692635705190795849077112643247931392 6130107306797808620889000676163584 7134203828397430943534489029050368 -208197408390374959586054491294662656 2977056817376334738491626842226688 5577491715806465651810301948985344 -109887703938414829605231012320641024 2585145306888698052665384051408896 4045914354096290854388595832127488 -427181789144709799790925546816274432 2692994575696485454690029269942272 4276807703876277971864120062902272 -168597742137441547782314317053952000 6510878097904583947084468768997376 1537972125879456330314062128742400 -923099706483111638215267359964266496 1626309280136811463541422741782528 9639235098221649863447353596313600 -414838808338829484611224704150142976 6579558288991391429239997810606080 5980714575666214220590079593676800 -914192167570621514222145419689852928 2244572932055313735835271959674880 8395609544277592159313566541807616 -614461518861065081933813736554889216 4335148360746290313443068352659456 2387844545587806729552104758706176 -348550760611977541995013334506668032 4572598720190141042634696486289408 2601904746551122209598739377553408 -191808343904515474955838176364593152 1463592021813941515818508073566208 1753229937562438623742976990380032 -312854846180235972612288612220796928 7859089910811069885071203124641792 8973918187279327069689511271202816 -358270880976398319473392684747456512 2899481590103400089556193472675840 4197905790053375419158934300131328 -388425961185105349116589481343844352 6727193656059105046283284054540288 2199804288495801940236915762528256 -465651953818818352004491323021197312 4563144762699299277636573654417408 3488708794933215796121026720432128 -603262589136570276215402106200260608 3891738141598987454581272865669120 921131614729379334562374970507264 -232352649747144795698103937038024704 2401764438099886183737590640803840 8380125348090914667493962637377536 -372343493874594140501369243633188864 2629421907214274613324733801824256 8386511709293066357445735015776256 -318861644028565825442033201118707712 315200564039644259661290028400640 8232918802668396763257142815752192 -801839124822168710374232382823727104 8852799599743134014811127884546048 1203445690410048040577769066725376 -103813951459326062164227726210236416 421315952242710449203095535616000 8825038954945074078938175241191424 -625201485517030440549085559685906432 329982333453502821625225958916096 2479998092620972785878621260611584 -893170354645700813533790942447796224 3869515832005543986402630588956672 8018474029838085681809537095434240 -778989721674765207978821435474837504 1163855995959470979242344451145728 2418499582338314727734723183902720 -260981669970995042458199586670379008 8550776381026948959852494717976576 6399314666957585291189737842802688 -407637749682231244469833617729650688 7087922876791607751376847329296384 9631946150205920668413870808760320 -630220594251956458069024526764605440 1929573730018510120944227093315584 9733039610931561214878800070836224 -761678023122116105194614453172174848 7813700754548581680630763364548608 5865267057251175740189081321078784 -235952876205786121949660908387041280 178892392859727335803934535057408 3448900079142147387367374284914688 -862071297792223868088059922835570688 9983291116116889126779980280233984 3193579621409237440127515978891264 -844886756376173477676074266232094720 3338624281203290407161126356779008 5497447966250673944102783128961024 -343285118886645905604916860292169728 572475328385997320326089231302656 1455726993505919175513824548618240 -588485536167255697806833140698710016 3220480435515750349301874050465792 2822824736247707013564089937952768 -33838921876573452747973090407874560 1869986596752019410953908271448064 9986926400493183756926165727576064 -56909509861835372365300946928926720 7018702989516573600452387771777024 4208123647495457434196451797237760 -547579977114676923131200684232278016 9803947687735936325745608839135232 3558461951123109186579750461636608 -590080613383304646045818933724839936 1677047642525488083980825925779456 727756860478432555758039752245248 -79609637639036474773379429489967104 5730029748104505411653662280777728 9757743237598570677129814776741888 -15405192800810256159924876084248576 6261822849525472073658786576859136 8644259637103156086902547598540800 -327325007232098938856667785719709696 7165077740640888733536632889671680 9219419472804576909645524116701184 -87238052259992630612069728632438784 8950843292493353023266779933179904 6821938306311012632578189149863936 -126702589942366828963291184876224512 8396157387073595633740660082737152 7717750617141438317293904511107072 -704531130542652456727654181378195456 3491375817834447263637264735928320 4241087836230557906957403057815552 -207874437273980999723249129421275136 5575315256296857632635767754850304 5306586783815963741688576167903232 -315389993072211480426605809504354304 8515343628567434894636420383637504 1677265968516784326526230641770496 -222750805858725116146378335353569280 8901235575213838586636590626373632 4744539671836640700807455960989696 -548476669854313983827813932308889600 908457980644565583878581894774784 4627866911566903635051832221368320 -778050215567909239035656149760212992 3202161782404913067480191737004032 6459682840692429076375219919126528 -820427757175179654693276595093766144 4249433990373408494381550339620864 4101396425832579382285136832757760 -738193027058218595977735497358245888 1163758000538465751087729082368000 1606362737945877213297931540496384 -427438849198127582654636203307958272 779605491497496784069720316837888 6108296897749868897983050809344000 -730012873181797382700425951584452608 1106584896359835115891671940726784 4277006749495678245920397647151104 -619362917609327568512636033750269952 1923267453040983784126178507358208 3452576203859729903102870610247680 -317164067748659628031242859744067584 6757750229165862665164531129384960 8973311826332921071277703134445568 -165380901547846427850884756575092736 1630197469338541145099651847815168 6493428671600530918348702709972992 -19688059909006038789943689989849088 6372744304497064670491117747175424 4170916003667099540127999215009792 -658086992778648747295938327401725952 5456393383476797783645361417486336 9295533953325260954369088829784064 -741166068017594293881924281176162304 2804337921480428356553788583051264 3039521779207516380932438161883136 -201610040178035237834907402436083712 1825006983211042169962074245955584 3047569300508620076494435920117760 -754223588254360353439226139418558464 6712897482531145267982050806202368 8188956454417811599335370929471488 -327424907886787405750080817818763264 4565115192105460551021672563474432 377725077163677968841245867376640 -572016746286177605399175139046719488 930318002921506279084128483672064 9815971234574297589144257810137088 -791938281934719065163844402446073856 2003515106659296940714850928033792 8882937878763549482031050129408000 -889834485849741141809120687381544960 7196446932079944085719703407820800 8640881999379776169241924971003904 -444879994289207520764291060942766080 5125181557535950387971619941253120 6278123576884838288421803215814656 -994866815440534931760629310960959488 8805568173533964851524345100500992 1720453160175558036728072667922432 -522512174365617211217519611849211904 419816248645595379386666771808256 9539922957742421497313289450815488 -222767188544988989571986946346975232 2564085952402498127842124064882688 7561499154994312843441392333094912 -634055921551365494477288688878354432 6695797498154096001414556408610816 5425030392184662068698711247028224 -65138957643419558873099311190638592 8462326236791082622937530347028480 976769681215540532062140982362112 -927344531344639769066625791499960320 4080220900817597615846846927732736 4847508424878491011575845826330624 -920045822024947496523606128246915072 9671360528093175440277667175202816 2247315524636127814061762380038144 -256774239896185937535189092352917504 4063241523287872641340309954887680 1686089320236018014445373422043136 -155329753827385374195245836933267456 6187422408974524250783177232089088 5596676190943794653819275080368128 -93319090538183452159851418441744384 1247673739724987977997573806882816 1239974234315766448616466295029760 -48380160144730717004819454889033728 7762478374261493206461756993437696 1768993519951496061781637198774272 -559181671596424821609964844187910144 470967790319142476685947852292096 4107864151602918818997274257915904 -912717380345159892233418363780464640 4200586324617386916623138036908032 8001805076030267033558352230612992 -35625119712856627091650757011701760 8859983311495452867472140399542272 1507351502196868500255712097599488 -75858920336226441186048399235874816 1892880768478110977586606813216768 6925694824894498047483391124701184 -9456801534718860693599042643427328 4760237462948572985159155353387008 2971894187506453542286982677266432 -85235320325554516642213217030897664 3018376579340614125080247198023680 6532449122947106802033858550169600 -175225503343902396439164889333760000 1924372634497599485318880288571392 9977443671266460631606754489139200 -504686541107417857587970255014068224 5732213869132881150377338865713152 9337738417086226880297103098118144 -438258763156150315519813339899232256 3671008670231007098852263646461952 8557670128419246247257405351002112 -943848369260318500536458760930983936 6939970393213026465155089107517440 4863753053271679805968247649468416 -546659322832510535565782423607181312 6215520605070049782720602142932992 979105861026319597576896353665024 -252491392878174744339959108404772864 513568968278382849068127722930176 3378989681747332039145037324353536 -239397535062250285952039983549251584 9807935025169170253998872873402368 7438506966848612931204928174555136 -772960170552917514248810780803727360 2260186633905892212190024898183168 2793473891236487639613981795024896 -304163695535112631330911909799002112 3075790903474707186145759166726144 1751441149191182969392328437923840 -518249718063508420971005356068044800 3828820487875606793303688589869056 1345149317606415399156741337776128 -944211275307505396879406360128651264 2955943453179944120058298197082112 3340407669182812603901741612662784 -891956018723949390842843633559797760 1701517890335873706586640643784704 464274649667470908266346935484416 -755084089566146604682466173636313088 2733610277645050654219666861326336 4042226286546178021879437921878016 -709463108777477449034129855888752640 6129152943773369944040470751477760 4383538049385805385919122538233856 -239578680538640765889219107401760768 2693452985699007742490041223479296 2706211602444906274039989570371584 -604448263866084496061043827531579392 4313083194056606478595479660658688 9542551640921489148785363653754880 -961123850919593277431858365303095296 5491300421081821580318493382803456 3116280538272194109806411679531008 -161524675933747081289326996989411328 4828028267270821787033550242971648 6816172599002768581636868643225600 -194263009065701971066491916418809856 2538712895152708262819697164025856 7622840922974909823517875496812544 -704857656230563908661825049609633792 380131516854442298088468953169920 5382071719335191542225253414469632 -849707511757361832173456481006387200 4909485673940079449136192800423936 8212485048058943424573285081284608 -860562493070037913439993292671418368 3616346930392788200746253488750592 304304808636005389308913843699712 -656200388839024795479969596232957952 1250602105754514557896611350970368 1089869230543838408380052242694144 -228811061292930867871689716109672448 6691213068512614441016367587000320 7216138804168856031550896271785984 -468506682117158503967652401857429504 7462518050999461701298922090135552 4627848249765919607311961866371072 -706205042942399787346156774794199040 5091375607362877928663598646689792 2765086668674637452159214982004736 -609718185978161273424032548754817024 1105093640222818764956675164078080 1087367662920362452940965613142016 -208276590306707623812194119773585408 6077011061833829441883221832761344 3140041256605873984498450430951424 -590429957975043604166734976739442688 1797021207517708224757850496303104 3517953152569364637647190003548160 -326804697189411229532270204565848064 8573765582384591269396377927417856 7569887356096146866673466600325120 -491945443058784636068040606279008256 20203187986717126389459245334528 1107135173758116265648675394420736 -380283677649167989603204803497820160 7637214253327177079797196383059968 8183343226568331462903783634239488 -468246952039052019695239230704844800 9106867721778314553272522172792832 6278786655368334512644611400269824 -318886118689897897965682829113163776 3660920564049745058622501694734336 8653825049474788653490380115804160 -463929280113023456882764405673033728 6368991190169602230808161562918912 2482929117326817591647122300600320 -118550067490437859574320827434270720 9154385558667255160832913989173248 9393754520707615339677532165242880 -634466965369912019583792817148788736 6699563226087992561059916993789952 471698073905232705742296145985536 -88400055904393042381684575551094784 6368691691555827232675218187091968 1323729078867741467949310037458944 -118015682263627085759605308705996800 1174514917127397925169211281244160 3973806317905492572440681087238144 -991121727874386370880520048462528512 3671540279723478929312906253172736 4727370127585414915459976773238784 -360792652889278778593835288990056448 5126266265816827516965260762284032 401824264769847731763679053479936 -956635333313591797478942568668463104 2334200823248782677635946841636864 9191926223829987227936635366670336 -885329450606458281632350696980348928 8916911345842662178269482457235456 1814185623153608452046477978501120 -585439645688308154555674736191340544 4719046198081037206726462851252224 9869574891751925606994462019420160 -469837558251991347426873911235575808 5466616487754046351585027253338112 3319539615914136489675183848685568 -947333775048492977681415126638395392 1833025502597399095452303750070272 5090413013399341618424077826916352 -311783769444217823872128221949460480 2886568257346993962665542728810496 7433483665539059139847225388040192 -910014690687679006659664923471118336 2308067700661649889536822174810112 9329327070318485850676395537072128 -705898726869376238571768858911178752 848545060781277929440973324025856 8414412973600470652577825318502400 -991832604163068355193879397257969664 4181225157480410301612779550801920 7469324017311638276774121305014272 -148653431286331660272733498011287552 9792263098311485025139957310685184 6870991081143050287192550624198656 -581161154042442116450128316032090112 7052477490806982913400264657469440 4974327241507779711442887087489024 -668652067999704889152251610607386624 1190569478548460461090813499146240 457217330493844483130391242211328 -923171035196196350236601815377379328 9832247083119495627507966790336512 2473014637606376000302617378947072 -645606681871006446689526993540612096 6638579653003435777063887399026688 9944989608832721651062759581810688 -546305973276076878814542403976822784 2007365792678988420694167254990848 2999052281396713937372308022755328 -984680870541847937996580782629453824 4206357943429876464444423433879552 7855434022829544240078550644817920 -106965699277009065717223365126651904 9736559375634303747873979844526080 3085987203999808560767051442946048 -446590093366922243618745411214245888 7339822151685363945692808479768576 9566743024403442481428878229241856 -794499467684503205019047623298908160 9621304085569050082591243054874624 6411128494926142740398264331272192 -775788443330234456412278473434857472 934820785612940947034541385580544 4189089797396385822688309994848256 -417128824495654696175099576546492416 699592526155288269938212823105536 3092403618729618106101781443379200 -206641784421467196075830672149708800 1718613826786426765476608312606720 8849443868939639758561318281412608 -991780881460108405397381393221156864 3891478178563632170499018718183424 7320144930255878678302070920970240 -171498674588097719712995823054749696 4056813056818919352778317528825856 8574639270085209130497113900187648 -272142106895385411958167694414446592 8051387533812595426548965267472384 7814367546373721807367508682866688 -745741015613732740519091732549206016 2648784466653843225015687487422464 2216979312969458938651278844100608 -342086388150335583112461717222719488 4070887897124570716686173129932800 2674782660214249029801548934283264 -769239601808221762636333223478558720 6748155365127203322794635717246976 6525423749954803480710425035669504 -823596135035905484801654723056762880 7008560707858901937639810461073408 1198005990720226316829255318634496 -131961725519554684254019150430601216 5521231071936633773313491111772160 2056477553884172885748870851592192 -944037134222955924374468079699099648 5715186207712313091526838273966080 7023066752209030071443349854748672 -929067998806366758583728489789128704 6309040197703946316834603632951296 424538714294188845876383406096384 -949585847259438123210860869409832960 5840782886414874762463333035540480 9635497376000978948494809037275136 -977866342097421840476679097959841792 9565648341273772661429004490768384 6279814896365651740336509291593728 -572245762391899713900183377886052352 2776724691938451240296817530765312 9001931695461267252673726860230656 -618500398482684569000550027692605440 9793305013685389935068609098285056 1356583530452257575687594706993152 -90020525898306054606105024797868032 6042294729846508615073735444004864 7989672938746995852696906115317760 -269825158139092170456109923136700416 128907806673540271982659967647744 5208801420858206705666902500311040 -811841025878114605203923282778128384 4446912660897096100348505362530304 1311040046571310036287486389387264 -353517012445523862094449197988184064 8991168208803836649866894090698752 7815550887116981250701482990239744 -260487484201673792087405136070049792 8950529658989275584891091907772416 3490868116978124860897136216113152 -123020966846024594682670690351448064 5004981690367491209195314909020160 8753645469543896616365740926173184 -269039651137665915364763680563527680 6176460612040229325773830809976832 9233205381892656683397271986896896 -839820348861008827473825011597312000 692938320825602583274931009617920 5722773283562102286593841407459328 -799182811833059712107370406217777152 927414543333848580454992425517056 4606986132576778129921628142829568 -472552002256612401995183271998128128 3012065239764607615612267528192000 9120850717659296281742141418373120 -718379359204388935504582738687557632 8592474864714212502134391299899392 7037368909362903573631761817534464 -488189654068368863508643106961489920 5933390844518657205094555880259584 6237704467482930686297260030951424 -281378987206587309875519715788455936 6304195883253604287954557662658560 2291462304631627161359725134610432 -548546268289689825936922940343844864 5908676856215009443082351864184832 5676738903152894248044972241584128 -481173122013231528314413853500768256 9493715643169174964570582847324160 9848228870227598765947033466437632 -223866374249139875986958212820631552 7929715230365299522053731002613760 3857647097874651144072670809686016 -471796925830433644029112980915355648 4503731897591618013414632890302464 9129052400812640671521437185474560 -961317160650996017388984350485250048 4193039937156517607068748298059776 806981834600768528194627140845568 -556212299604204060100957945940934656 3215738723227791450378538993057792 6410609912007442430237319115046912 -70717655916791286865070447919104000 5215404238369077319216577499889664 291235519518868931481558650454016 -647703978245830673946835126809788416 9956028023851110445218539765760000 5049650138739196412950712051302400 -83675982764175277217634743975149568 1098306123847237835061842539446272 5764369825255438282390490203553792 -106885407697388841453292524480233472 9460357913233030569715433312616448 6717791288938238303477447553712128 -747606106754132420498249659088633856 7204448940281538049633254880837632 7669136035494539850231053564248064 -87637224270817877528115080064925696 9195697002152712512427817596616704 9768437804475613412256715550752768 -92626803377110847784278539676680192 3238130873818739779156773521326080 5090736953284654217437510597869568 -868995967027074250201521639804370944 7437342123588330093999720117567488 8581044667666537856218098980356096 -813005458320312168783616015486418944 768057895780470197696807091306496 6522719865569522520268019117064192 -749296239289050597327208242932088832 2085040601069443675303041692598272 3734632619073632103045524214513664 -938980725471959130456186784994820096 4486305859497977687043515049050112 4921246371784328122205255216660480 -475667649116821919851200701758701568 5057575920301153450709436761899008 7119922412987304086221311606521856 -649921084772789877410314669191593984 6216083357936249566526430565629952 4396076878768557574998311064043520 -121065898669444493041365829579440128 2690246470764910909872936973238272 1389325045865454976191206042632192 -875235509913898972650303945877487616 4493579146838905267057779569328128 7834079404945164334657554398314496 -42056359979151868690324098073493504 5518222808971581370714350541602816 1637515070870311282071878712164352 -785970172557677698717656394202349568 5579669477026532583452132329390080 5179154038366052314056493407141888 -624736940867295444894825589686403072 2662206795872201196216818245566464 7676109210151407022403609025314816 -31606363360176048831770679517904896 4018221631272898179724683178409984 5412679964246822572769081802358784 -71134853020959833906194712740495360 3722407662687049177560694747299840 990852715675347788679114282500096 -843949480635922785324370813582835712 1298493649314338235551302983614464 7225955630762171634280626827296768 -593380123595113217447679276827541504 1045659604986004054340534406217728 8335240162476841028317449610592256 -2046418968212619267004951856939008 4683294247563690203570474907074560 8624509814835956853032708378460160 -735256768551163812586808293946556416 5136885000551107598450799484600320 246014243979176949890963963117568 -537287529872377457209197505124761600 1277184610546313591302861719863296 1494915945750402091400472693833728 -439192076101950900418934219502256128 1322345264865761538170865408016384 9010925224367059605060624326852608 -599498570925256683247685335041179648 770203267171759455487499220025344 843363649442360779752271878553600 -744829821976603436327904090435616768 9900332065494484301822874659848192 5314952496211944497515839195447296 -976496550529642468678688367985033216 3624878736712099738891633115004928 3820262966202005787749392547053568 -300415486315770329732551249668079616 1756178604740670428660036513300480 9334506054764149809453241187958784 -140606075323200668686909975310630912 6712768646192937443965130447519744 4313733000369413345167488550174720 -395506699940645741022515977059827712 2937441932497831033798078545002496 2087861953193335400022768802070528 -489054899960115406959628114437603328 8808494246152140374575822613250048 4404430493327225566757118829133824 -47734033425465610595434672580198400 2069354204736600530503654216564736 4972661244488582953128205557432320 -263056300942930779794276430601256960 4027085637648522730310405441191936 7986699458771444427323597224148992 -814660958408776414515223790142619648 9711510626743194054222649493553152 1324503395711028345020109308297216 -746949716888679725380530266473234432 2959882506722338999192864736411648 8067200124673593689725143093346304 -332360879276145371364203181400653824 8406626528307868530503045697503232 1047499599991802272309916408479744 -149830774354149342822281625936592896 1795751709779986686399436506005504 1253783606788341166612608173735936 -751464246057350249009728899923312640 5471222353040256857332938440704000 6212819436220694424164250566000640 -710356737069531063829741483769987072 1524180366647364822624243231490048 9582251895248924540136716297568256 -923931873550046290324752572872654848 611019834716064899405910386933760 870152996458431295417622749773824 -431122258237525530456486911957532672 5221845886416585151833813297397760 7237467909250108003908724453277696 -968976576781484897747673985996292096 6826627847891242428289515318673408 1492093330305196711212528496017408 -545726878323105868872107758752628736 4374688641466614210182488782798848 3523813775945933229657562971897856 -393845264638322877022658820638244864 1087600022448388399303725273841664 8115746306965841590924680217231360 -790843320486771042272451399264501760 1584427107600210956226062662500352 2605269902701757625193294240677888 -421096155647486038507634572010717184 7093451344605831429544249961480192 4398740380273854419403814484312064 -367956465815149228759369538319941632 8887824855691371575559055212544000 8522468188180384549119830255468544 -274320800982978435485266628612980736 9613639410695709193947674199457792 5987361133290984701867337067790336 -666355155106916588589778290807406592 5278065138839274961453748152434688 3876969318928203161863341993885696 -343113813603081697318807032383406080 1875283289876598043049141045559296 4450428130472224242531988269957120 -401022172211095143661281085648535552 1421143031618380217366399735037952 1662025353161976633733452509741056 -590182601783430673629096536078024704 2493016956388286237096490936827904 6103983191933865951717668459380736 -253527743777094698766490872074731520 5157997512789320174818255039365120 1768945983612843259399308467765248 -821178047605701362474164853795717120 1465501044058526782371206875054080 2754123777237662824333246669520896 -62538618298740572454102985867264000 749768682127006802701197475053568 5978544374611339966228992685506560 -123432959461705238936451726668988416 7064247658492339691489940027211776 5676503069775315936156570328498176 -749623891810166966432014170438238208 6134403012429492612634985331949568 7968313008010604873655969363525632 -120384163716387993669703247383756800 2712565995942854402833553779851264 5436013280865605200813366192373760 -567163800141562251198621229558792192 7840817303435132237440199314898944 382645759444585704086289619353600 -736423152102841364118135781241913344 8152864967752995710002960487415808 1244226930519478360786119470088192 -248579388680957046258834952779988992 5957282466923655496674017433092096 8434053441004304599139463246905344 -550517505381041157090379598827356160 6812436996718203292528450235006976 6067411954870549588753748655603712 -239052029353974085001340339538100224 4186239031994609408651461419597824 2457196997960747916911805382787072 -377119484939343377289731137756725248 9332886778910371281519145404858368 5839102812813193150247447614717952 -51301847679036770532362202833223680 2207971288409019761045334384443392 148519631322770857161815920476160 -990198229816148172112248182629466112 9178124009316707583211222738141184 4865449558227427200764712807563264 -525194915115414341738930349807763456 4962645438292712749981494191063040 5276328226428253734203369042477056 -924333061995724871044982388962623488 3018989556453688149519351045685248 6299871375205920325034080758398976 -584931131087938073479354223398223872 8849295623248257048382140376416256 3547493278611379486908590269136896 -803744355004828003459022554222559232 9473585519587302786081824876527616 8335431241068538389809626211155968 -523123487377154477186335811768942592 7178427714618448269766754677293056 6337027685022658957091182695415808 -270513951159460688897426694955073536 7019805361792715880097263852191744 7560128610110608400556403107823616 -169638930092158372156421760536805376 8454517763306340838542425632800768 368645827201850796804303193374720 -243762038350098942190951642270007296 1637135271510911934984997551734784 4322171837081257510665558392045568 -594962582167637557812500394739236864 9877192986650776613122051919577088 7391888052582184206124827933671424 -779155915090354521481717226542202880 6488886866047387336133531572109312 2947302704964606424324267178983424 -524829200257445616128524749289553920 6695024292679756797347909804752896 3504708069508922909953105898504192 -503544883713862774142415586434482176 7681387761900739793266718072111104 57645678148373013095059885654016 -845519943184802694291271645541695488 9165220665222947670296239494135808 9586583105398796549678880408993792 -851512087244573926228786752836861952 7218066227199457078504374528901120 4054027829388326491235214126219264 -81925365401348330669055902285299712 785570711043686058546194232115200 2797346365956223786160814513192960 -181208935279379737711954698482745344 4264876864182201155877909712338944 3861680458071695335882670127185920 -847385681624891279277650776000823296 4726896087588209047033198090911744 9448576198816216363766372391452672 -388459104420482292091637442707193856 2139734132084205824000165716951040 2072794468448901435406769436229632 -431874896045621298601625671381811200 8519324770510365708036685407715328 4789350798293563856106479960457216 -941768098426499197611981362419466240 5137604537160923264624823533305856 1120875184407050909321970499715072 -696862474903833653766911527860830208 4822306912542560938363252750942208 6466773707161944969291264788791296 -250968368970694022986249485676445696 8306300952495532638873084946808832 9490391152436370063854698158358528 -343928352759575305254366179055632384 5930554874019654299806131720028160 4800354956853015563446229812641792 -178138312207486649045987406972452864 1067620545427649601090654270652416 392790867148996596906402269626368 -880727871443101732930699423559712768 6319508597490854367307032927666176 4609204554558061359901716573585408 -469439886187336999502057712256024576 6000052514254171914767234146238464 7253293328634342495848966259736576 -905901866918565209105121740928843776 3589523847343516603044797775609856 2216391807217959484126443106992128 -745104096502451073627754178145157120 3545445359244267920130823661027328 627759960274064497349668896768000 -124017061386780828921032122881277952 2109062657874805454643784379793408 9665440496218881889908755877855232 -998524224422489850517499503815163904 5462637465747218858185879166386176 8704390836859574565924069944852480 -913440697851167790309864896764837888 1860954328970578212233483978276864 7548539253024856486246853325619200 -448380350453243541125404295570653184 2317212233840504262920920075599872 2897679769053546614543040506757120 -451670916508697353285524890109083648 2230675790712270474289468481208320 430799462754153023445363649937408 -664500670459876018483760225081884672 2653475190276474819303352186175488 5241392463185515292207132293726208 -86482036856965573062832101661868032 4694567332387719791783651359850496 6683976452314226267386632057389056 -291121792293949618655708389434195968 7718088889967590953928724555235328 37794498725628911952415493718016 -71600226086981047625898511367667712 2762812149331375994670075361624064 9767089841942311497590189682851840 -454117783827046716514354004257406976 4941748106676268037821950609850368 7365297442624166486010520997462016 -862816130552527598961123077319032832 3870675330129497946273130672553984 8426328395164250973060080022323200 -121147292852073895450855757014106112 1727404802490734861362166665052160 2352148865907682664332661505392640 -726298049804727855137370853219500032 511389302039013409190147302359040 1300249149800472611908261177720832 -285600557790892843588141931460296704 5648570494723763548232350821253120 7471789741175460125058590987780096 -722278919889468715991051480313364480 8105810956520375878183691099308032 7658516950757355900672431645261824 -237733868783449690960302933278720000 9405773769365948917967892682637312 6606064269343644845507150004355072 -946619219057561980083250924257017856 6684298502598287488727844162371584 3123023975292411388458233552175104 -556726300100323016852182952675639296 21467141089362835393501925998592 6756247931305075057622837599666176 -702569314991036895261147667107938304 2935848313690523810470606116225024 4261633237510525658746885047844864 -30815831446596080232766130802917376 1353899207372518348562639211200512 6049833552485570454346217283387392 -901180591549098821544745322590240768 9001717210188692908071569156210688 9875966427667569281772893574791168 -554699852905067046730937650435325952 8755360814276498703909308730441728 5802506810498935677417480813281280 -649792995864297880525641428896841728 4808698436901495353285103465791488 8776833581434833981929964282314752 -22963777114589223853084165627969536 9424232567658561701612535016325120 581925732196589396687283441106944 -693866381628566148187557537949679616 2261568410854879295260042471669760 133742629759895611993851980414976 -392321622106296714659594530665267200 9427749702760900959159061158297600 4180393186654547508123486696505344 -679872039735125775186978042384744448 8806312614981450782567459312369664 8551601881533686291719510776872960 -2323221827972014350324219139588096 6091815240122845317234969353912320 6985486000362025259922878751571968 -706171568619625466185815407743467520 3129783548919198332427014957432832 7303157195858193041101389591216128 -744453519175196962737674342098796544 3632129535347171745658077181902848 4773306564776611605906349671579648 -45138625602295774708227638204301312 8677717714179476226598858278305792 1474921139587303427223754872193024 -644292659836190714485189123520856064 3459747602857937918119034407092224 5609592790341978836501288359821312 -976866360212811094316788215810359296 1163990125231013800541853681975296 562996340128621180291812205527040 -219423192808670989239927480715837440 7554806322903989978506123710300160 6592361417978669250435422670028800 -301918254763302271455535315137069056 9779733333511531051581092459970560 7782662479925851050234347520000000 -115105051166245133921511145362948096 9315129991370828102190573188808704 2971134458358164423078447346089984 -563083648049395562504855831521001472 741642152633495049574209915191296 2430362975989492621040010961879040 -717261142564410039702196050076893184 1117716214968846041401029363236864 6972251082491886886237418779836416 -30756279770584129394095773846601728 4569785616027600012920026713554944 9669953069522425895032134035308544 -60743265294617584812744812301123584 7123065397771308297708307224723456 2112156735540443018570532843945984 -986813400047621928891421939155861504 1613790185534845718207178140024832 5397010736058796704990946714976256 -174658971674045248834890666902290432 7386761429185762895866143904366592 3556832413382064173066034536775680 -125425126158221148734462670166556672 6818893405935950999362058108010496 2761528478314207623760966078955520 -481321907114823378080107652179820544 2063045456371853192406753687371776 8911164915853899360368816736436224 -815674032950413016049402751458738176 8108263851860961497704096801488896 9534450487540802503091111929577472 -487724964037458142431842142374592512 7867716300062064301792559758311424 445403979905269401827416094015488 -103864127905858765764756608494075904 8394985055769792381487188501594112 3443832905685004110385752387354624 -781841223119105409323847127205412864 602243672384992215113506083569664 1584488826375549032896980689354752 -662708668525676337582183758541357056 3693651855964818060011434317709312 7944007271479448526606789435719680 -113718578944895293654905877960851456 7869665892475731053087960686657536 2333778739042508991766288199057408 -71928749499564988129676839039795200 9199568597286571064959688004075520 9931239838251793110535565394051072 -526226432023480814388811805193404416 1515508017596993962840737259192320 5331076361148827359690926290108416 -302413343934309458860659731792396288 3843825793330984752708641506721792 7676670979025738569786475417698304 -618242943236240472837742386852397056 4950872759226792826595333367660544 5585474311602475470490270412308480 -631152552327825734432968586658054144 7885141717980594935704737955184640 9707951780870924011814854194102272 -589046560936371120670057634161754112 6314731256360041884763671668719616 4240818894547929039635235158884352 -374291433138473817409274574056456192 6778124186885545090951825909088256 7618114862204510927341727034376192 -162684838114421366193005348144545792 5980221961407748149565404106194944 7945741845985152760140057351815168 -544757074136948496216058877127426048 5851576781103495637379330779119616 8734075289647750511904609525563392 -142297608428434157535831729637425152 2196161298106772356635344079159296 334701799580112275622319714467840 -533674124731280141844169876517683200 8844675702902437534392692861042688 843767297525890325398365451321344 -834829346334208165297051695069528064 1594187265807018360052201442770944 5706437274310375944291051693408256 -7718594259002996641247805548003328 3467867121687909246202706531450880 9514062634422906003515229712941056 -114858081117504118351705406028382208 1774767324716935179704088609685504 2353259461569884193183326558748672 -226195221803357664610148548750606336 1903024092435470769006696126742528 4580457919877028935812857305497600 -162966974428475514360246053361418240 9511531455471010211338576283566080 5130844367934315768153361633771520 -102116281323579706528248507712667648 2472911447553198963989101227802624 7678666812172427528972348975742976 -976957607168560320761239637480964096 8589299302812334112781586256625664 9037260230829984065603611735883776 -406756368460999817616502024732409856 331002019532322149532307059376128 8666962473879194820092510005624832 -265087135715614541502443822285586432 1937369631338370283834698905944064 8820883598650527469143967190220800 -91259678303880801981433524577632256 8358755522336427888212515110256640 7043248200645282205514436012146688 -889887894975225156826165912656674816 5731014100087969795220128711835648 4857343309963943731627267138256896 -149358139879481666297018162509512704 9706618077552592409057928935374848 7191953241599008770505772235751424 -189350259748284224348284274979373056 1045664749019382184115196244525056 512421259430388986614078521737216 -351442317063022814870407155327959040 1992711309243553331182091001397248 3290984038301922122654319797862400 -636312930033703466010362211534372864 9493632634596652524567594432200704 1922114469730121078632318305828864 -326511958361749672328560627047989248 6265160383698315311940394826072064 9433218155716138897792401972133888 -636069447690843348365312068602036224 3341247062035351868182258127994880 6304629775206304225483445059452928 -526106414229740653140565053109436416 1914365937378493866907607987388416 5509721779156828829957304275173376 -146252131700380158965798018454913024 3606188541360450229113387919343616 6086717402276156584423999099895808 -311055138879035662781741931490705408 980038538152499004566446794604544 868681186459530130174875956936704 -545385047101999516553833041291640832 8922878082016106565292201028354048 7316424442196873308083460889378816 -556058772217463626811182224460742656 1684285591114448304553914601046016 2553225589402032580805437725605888 -408034514510124255660738831282339840 1567618060813611550895165333831680 2020619926508375993860645059559424 -701209576007572397373723033051594752 2311096450616292369691825225596928 6095589969675108289518700731564032 -466294089228749849920034204278587392 2998668363437358492428191236358144 3517220726076080132688712717828096 -11498856065551510345213778438651904 6954265828346031809159196106031104 1044895622151655060390706770083840 -218632245306944169713832202160046080 258035778339834326393459933446144 1483836928278614297017599066636288 -601941155096853375598024386852945920 2797121241165775500731598126448640 9860215434309657688431507072352256 -985873987331410481418951502789083136 8043050141796018273623013138104320 1324959156194469839882235238416384 -744890714417572901983901491763609600 7603499943423411222877090252587008 9991635015237532329088577794211840 -858268498633785321677420306725076992 384670689754770535537493516746752 9433333675389692147864912252633088 -825328255281763844823831183819276288 5265974632495236521766344445657088 5699574047064281317632786430951424 -801726587583906469859339991464804352 527990937181010769901749283061760 2323304395467038217159878849331200 -810505179581666712919197151414714368 1630151128856143952493472380878848 5852752663035136292779455925977088 -533061270983330505023139448405098496 5554520932101105363472472061509632 3554293267402465468325280123715584 -594450290334362388867866424086888448 3139045176706680816499229691215872 8679094261159563285802377531097088 -165418320725021192654404022368731136 6680846188595056653802118326517760 900043932154750457728621512491008 -439338662127411723637682798948515840 4785051674067730926188673768620032 3095623924655939523020978017796096 -952512303298964737087522554798669824 4224938354084559351614909695655936 4240046957051515113503832401772544 -959951330032466908614425489088446464 8694930728372393749445054279188480 2406163192593819152162860807749632 -721416135610674193886872060550971392 7525833973937514152157046129033216 5843273633336205852847556452679680 -422401083860083321117323532554993664 5950079284457933759516376542740480 7219847481429023585195942872088576 -503695684335499811067244896172638208 8467699936391803672790606874148864 7844296652973571697762204515303424 -968991579757749509020284702234247168 7763304020615774255655296574685184 6159638646138258589852937425518592 -979052200238345709253505000581103616 8245878677010149533277326478934016 1982754693576192395065290645307392 -571666457037315841436122984686288896 593245131479513368460916477132800 6428096892092329212433681883332608 -58082124604801936301410847685607424 8206026847385119267230471298220032 6805006164267617178136425225256960 -997474172977092861064388698844430336 1624222881304818375525399670030336 3264081759771146683949143488987136 -764230633688499859175626042584858624 7755623417947839798363996895051776 5828138906704235710370579553976320 -827559702754869683941770516653670400 1995358743211539478206523249786880 7708670148352263642831078025068544 -912838830304626008767050593958100992 2534847451015187897077591135223808 5074220259362188346500757971795968 -148205473739262796233738597097799680 4553605767291965413308396786941952 2944642136964447702599307750277120 -146876356717541751579126290284806144 9993277025394083691160843631722496 5814438801555300869273596582690816 -789546448208883922563983910694289408 1126571919731914797798308744003584 4227507981821219207098120353611776 -1870350394507049295340499441287168 6516596348704873815791439597010944 5845701986051678252758321537744896 -405867473099004216153731227367505920 7590540283998459408737061562220544 6532670523634469803354790201131008 -270804883488686267191292043982798848 1716096957648294243017854057185280 6312175223169272244290740461502464 -806212934483984307636920664826314752 4816517893802187781526414581301248 1046001842855544875318388587495424 -204060334161579896705381684725415936 4924931806681626114351424818118656 8737286078186584160291486169038848 -25792401229747614672052376911740928 9893789315045588119712609849049088 199536343718966496295495902691328 -901962775850808859120014774744645632 8525335222222419093448470392995840 9059140497552008565928253578018816 -720018283535153451783757957089460224 7991256416939288861972013560889344 5624145483735854091374438159220736 -532069616620404927513969141831696384 3732318227962898280559037537845248 797590334280214518363342082408448 -829433785741884290660439289849970688 1490093403133842235277559220666368 5644826351334548910334561587560448 -920240089138443227885243718980075520 5420780029229654374857637900582912 8957731809916749998574816093798400 -269849321338016096481765062483116032 3486825128882777975396643287072768 7260325098219898670779128388517888 -989719223374222615585575767082270720 358148399320704617023333275271168 9495049635130178978301706653138944 -878189768369293041368976620626378752 6436818381648331668172546716467200 4689973035355843712476297893511168 -119816475302855074868194785317879808 8145541551413943495952140892897280 6973122407711898037204032105218048 -854697710868203934604797220688494592 2350635495643006774598136215109632 7341042739252306118655136032096256 -510654436247770998706439643329462272 7082234037820990199934226916179968 3250915407021878669790872495718400 -981851823023715420470201133379354624 5427551212552328820185500829614080 9935121587814515941324721546592256 -426522379456990401205562113150418944 9015221897124349051188810967154688 9108307327633335211702050185281536 -929766793190650958512420860129705984 3824388529983862213038981571936256 2554229447435632964492524649447424 -929267299882170800086787462063456256 5762514672978325139562638954463232 7665730433499489092178395623587840 -320658829446260578511551734845800448 5215378813105672058373878377873408 8328002906184664203587661286342656 -418213396591615997605152450083291136 4784454508133612991871210013851648 9036109131015544996267284418789376 -659887357969955368951357736734425088 964391209175332584398813703176192 8127135026630850688605191237795840 -942992853755384496927957950452989952 9139390786875549857176505894830080 7131622778253979802476491868995584 -968375627816670393933001338709344256 5371836801206692439876184863408128 7357879830141275272756423877984256 -689500606896468233694826967085350912 4189240322685265634400049121198080 3755470978130779204278517980200960 -935538204811200150760064898668953600 1649384171870372503897938644172800 5078204004726032373149596941025280 -120602947356524917849029861380718592 191714829846603235482164092993536 5352454540718867271977449621028864 -947949479937728887223787726053572608 5758837682488712788174091866603520 8459971316952823272930626863366144 -334274750432773756229067616441860096 2171560038766666686280524466487296 2441489935058243971996631053631488 -735859468654003328414392032887308288 7674021761310701753707584060129280 7971193349560056991343006334320640 -555728762658746658205092705489387520 3930575854355564433888388719837184 3103861956576622461825322619764736 -979640375983628940495444767779323904 2054801373204208492680232302542848 9963744657567795657794315641421824 -246735869535267451310679775791546368 8104735747156522813437789626957824 8221072262495861071068374071508992 -380779687086842631356919550824153088 4834134067937213190189032312668160 4763462490783697986814519455776768 -292294357501456539599777961821077504 9475357316341401185747939190898688 6465537173329943794014368919715840 -312030345070064297863819666554617856 4986487467387386722059462958383104 8698239952927270731194433108180992 -570190500038272183061529754221936640 4373886724168412154379915067654144 983474545126327893353182728814592 -795574464579530421622815912051605504 9283232561487067311903213105446912 8398180203552502220574455421206528 -392938757620995368086780555707809792 9455925169399952468102645370847232 5628009455740084704979098391281664 -221301708463625582265929213180641280 9969995265412745909541307053768704 4713087289192579179995257219579904 -552203720516957611493887362421751808 4895889122661080476547124517928960 9205299268299371096330080429801472 -235942769175868446233954702940176384 2279040408747896352923685803261952 7121238390950137928306612349435904 -754896415861551735466254544310108160 9834904304647179402675841541341184 1815007514724689065043042802597888 -5627307168628920776695081240363008 2201891086481279770311925696561152 2833443969884845668902817752940544 -92742288822119798849527678836408320 8427952049028754076868186401144832 3216239556215702554068591329673216 -924864364064771353724119282278727680 2674262064817846454040316570763264 2389075686737100228673714132090880 -966050873707649220000052258870919168 6723884535910213518795134214340608 7846678273762191979687816195997696 -839329405895861064411074022506233856 9276525186195717093546062057046016 728521795020333279452754633293824 -659949207327822004789931978742824960 5715239076821655349709468357099520 1823532525297261278140450042019840 -443152259630900954336748605691396096 6935055889556157765685591637229568 8724491947765258880977088211320832 -453223218548020652553910534744834048 375667476091069914883362541010944 4952926660771608051050516853030912 -194645474042625547602041455492726784 3617710753255626214829194660020224 5547462750207862973440809496477696 -190004527207945493360488081587699712 4536336090817365991921416033796096 6495338825132740510703658115006464 -214802441628581557714954100622229504 2973398252248029036842375270367232 1322009417484647702782497045610496 -2197074368933503461971166259838976 3756329533135373442204864994082816 836247859664710773567368187609088 -325037309617444729637451142891831296 8888404561785586815814852595941376 1230305493752439630419281284431872 -88080509768254570474957180858531840 4094291109806581937996347834630144 1462037668412847029234363818573824 -519810415709897746201515027968557056 1913816252527620984163009971617792 3043086059204049192026676821753856 -249975533024024757555512011841863680 5424279411348794590401193396142080 7020337362729645806471018065166336 -422734907911807363358690343083048960 1117794641375283754783447508320256 566530152181944778345960368504832 -615692612876858123894859021200392192 1675946991031964958738832223633408 4065568030706381202797575566000128 -158398947188623994748657172381433856 7228449082457987521417309287612416 4747011772375040479282807231741952 -198258894058828382289041364782940160 8142311872343474223279565856309248 2966653613266730424512349414096896 -800054525537780217990265032031600640 1501203484148660515779144218312704 8901553474613630518091818064674816 -428285000513612375637038468731764736 1338809765109405764727528256176128 2155372302834025776640139546591232 -878264431897191812748809742137163776 3271410281754435373655247720284160 3565208851231440619697004653576192 -849532501161348829923505813718040576 9227468033352956015979194593837056 9724178479753254894789071827107840 -663189944744445191203153428292304896 242310965506543012476040691843072 854343736651856704119412151549952 -62291950662253305051027452159066112 8205028953058758548705844517666816 6586526881482173874791983001632768 -109692176115764064453350067135315968 846289236971529954883302198345728 3330421624819516856710206947590144 -815350926417805838846881484198903808 9246936674909284117672299253989376 9178162976923009179012082209652736 -195561381594695940265236482190475264 5090235701224579701277734400425984 7467357370316381026760352497401856 -268315992884234358220407683082616832 4344105516309452671005648620617728 7781004201129042710791794727059456 -929478623666886591419392583356383232 1157334753276975716483905802469376 3033517765530270653428162503901184 -690902290650496164495119836971532288 7176049357419195631639675461959680 8399464345844826731083903059099648 -174380411241437447644440848947478528 5165226505858084444746046517542912 2807370837581406598077734237241344 -707191957475247973356169501245177856 4528344407467470316469437585162240 3659847925978474224219199274745856 -399560342996577949874852966848004096 3228043699426350942376349891821568 8262468162111842339538581195849728 -119373236580870458114307050147151872 4784735578333669775350523196604416 3929654464550073400280696557142016 -323536812326759665494122502194987008 2539666983348324592898949303500800 4081589571362115423160316513484800 -72370439975246416035539589653331968 3667407280101095392566420501954560 4511816048593706887521131229609984 -143171174941847081767030921789177856 1920051985639103718699616343949312 2664023654369329840729144426496000 -603731828686129509267812309689958400 6353093090116958034544600559910912 2696334212939166348628232893366272 -830288955894187592907675442807308288 3280284993664779538707325439180800 192977754463413339049012077002752 -31275244603367060096977589178990592 9088264676570234681370701148979200 7157669961815863016345666502787072 -425298981453107823810615572019806208 3286093664302830395378674561974272 6508409260955552388868402267029504 -581236439725025464445199946348494848 2547296864470724852104595788267520 6001826876040040288295476369817600 -148051781956229804894308803645800448 8693760497086017164394595698606080 52292126295775672216231451033600 -191893034566789118056367879574519808 9953040306183469165281316255563776 8077900533985624106717625003802624 -489426685448155894391022707269435392 1442090186724012929395659039047680 5431765340303224455074033698865152 -666746184227210283803175610333790208 2463860148049192351966490991263744 9290878255236634880361766127140864 -865842365020694841986493642371497984 5025863321315791874087630560821248 2525837945164221390287435330486272 -221071463228575808802208235871272960 4210603713457359202992083515211776 2577142730714986835193131276697600 -454701722430897452222566869155971072 8288926732054304829805053513564160 1492271812156723887704565348302848 -257896735542906541399062447080341504 383753581263042315327102661951488 8390341473988940469989892429971456 -599372377765833854991666302173577216 9527685189698867430948165262508032 5216996228434113438480622979907584 -905153303235613051163134350948564992 371530542105414859092007470497792 3243062771298665499048640589594624 -417221882699723318746816683710611456 206371995085434147429523377881088 1402804605337613252413327461580800 -21419449734429583101715719538081792 9486884383627283322609773450362880 7865412860082964472359016621670400 -562695242178338676974647398128156672 2287098417614505989236044760875008 4883894524086260019345729800634368 -124413670563599637660779254187556864 5937167561973332150100810648256512 5576172330010924253147527271940096 -718537113767599134884331388751839232 1647358681297095119478869677047808 3845739795290941736231214572896256 -613576605613572371049786514369150976 1229351675729029701186637896089600 704845242726290809226792890531840 -644612842231987861096282018564538368 5171089978252480628591581514956800 9805088909398540071039176213004288 -111702356400397388872346118968573952 7294015548638095109273495642570752 8092533073716233811749648098918400 -522604779256241023687608782500659200 8748539207208199472056004398546944 598039006766179624366779746222080 -770563617697061860270145945498288128 8190014206994174687855445314371584 2668661682357866481335057908760576 -293335434270156088573430283209015296 8359061199574242066236192843628544 3708896896876731433341810781454336 -519518617704284000968730164034797568 9299287313249639502020890008223744 8812084352013778731158655977127936 -129838818295102731090488574221484032 5389898361822880757414204138323968 1708187885321637475984073849569280 -828202062366452062841809696716750848 4443021195896347903648386655453184 8430817947126551231775662418165760 -858864579717524047106589508788813824 7725310442539213319398454879846400 417742705964541386733122645655552 -492817714812560635878417572560896000 9047449850775772086341379760848896 9203285597682171987835101959421952 -87289246054236131893213735522664448 2340561198924434175876551776665600 7532616105339413331466527134711808 -927478859564183884731613599017992192 8651129466702066369540178596331520 9208946622885274326909613491879936 -917814595993484787123636394375774208 9061847977059095604575437666123776 3412847378899362313723206860537856 -370010117501784424875017726016356352 3452437305133003833555486874009600 8073358140541685176993767869120512 -60580370348548519216548917796667392 7827213881235308671504463261859840 9877706990455802608655256935989248 -144176304269594993025252842065100800 4977968240941983163334215338033152 8017939539043469608720469598404608 -740167721800303651445514529033682944 7955932944169056256917325893074944 8874840342027543607279739530641408 -489685874502448032965427784467873792 8697886538247854588495449343131648 5093291348575917482643258521681920 -186440715463997729348495743014404096 1909010844323349958676067278389248 3576831129333143991352263882833920 -411574840875179532318063379771031552 7342599229455767283741909573435392 5420026070394681251742956061196288 -350069924935939105673499238111117312 3089584504761668102153082538819584 2289057593432507335624567000399872 -382612931436442284934859679925796864 9935413609146207870778482876219392 2921805735836570972063074281848832 -310635295515178719516681907524861952 603645529461057699304147867664384 2149560185974125565156751212281856 -908727562451965959652021476492574720 3755316982044758303725095126827008 9808197838826553475699357282992128 -605470633276461987094208943690350592 5275285307143802782132146681151488 635358343363218862711822320926720 -725377617734336461244625249724530688 4358211670411664845541472710164480 6482022340143251126529827834691584 -391099684173151729486685093555601408 2669791288219756136676360584167424 8608136199600404606599459764174848 -643914684107362225191490706317770752 7092683444274475211799787848335360 2009202889516376875805790879875072 -667651634341912839439210023764361216 4241610516226335587012154820132864 6661116486448279694452793737740288 -741847683969806380423391585973043200 6045280751306823051098473394864128 4848495820877907866520277626126336 -456183601918829690876986576856940544 584093644496726666626034365890560 7685189336646702457326594508718080 -89236137915257874403558865548345344 5573652375415284455010026934763520 2549749655405325017363772501655552 -894050757479846399916465694867193856 3071374153453070632663008036257792 8984682033096900846998449696014336 -454685273649128571903890300730343424 7842417188406200159957370437369856 7392125005037735972472129314619392 -80205230299363876444134200643158016 608516110371543090650299206991872 329265751871702637000888261017600 -555915926774677769798390971254177792 5175123782096980831592077663928320 8525634852869886591781511922450432 -705187229340817510693570701846118400 5624766355598971945336370467176448 7279699225913801708910639795142656 -113508818746783773459815754845126656 3459905304576576939731647593447424 2196925350010379165599555469180928 -622588712015303894589118064988520448 3882031996154782309279537421090816 4888010968029911631227036765257728 -528727511113141035999368252972072960 3103370852840588517633410509832192 4783312649429631583931172218994688 -128838995591705599688800721522655232 6847475600011212885152486876250112 4574820513219191241431890261966848 -359537175307986292428731438145208320 938434513072255801455630067171328 2670951787201842844392839654146048 -183041283432248395539303987983417344 5948356766347984603447021658963968 8418482859092512262828087014588416 -151049144685870718309146211444064256 920737421068906907488153052905472 2947423388590214889315107461922816 -589619651515034822132344389306941440 5049714892373247942800949139996672 1157028718327230736010893464698880 -640275093042340670890492563755630592 2039228740425570651382122886987776 7198794534297514148578869129510912 -850903094460147285822755246350270464 1564327338398323085971955665338368 4725503442390696714820669948297216 -202431585716245703621042886787727360 8101928697293355397790007465869312 5280366442016005230080900485611520 -494640937708060108462070632516943872 6963029710207309658081668211146752 363708575428359775452467210223616 -67916868877854682084052102914506752 5642894478171553331117602000338944 2326066580033510910174766624145408 -738059520194682242698983098250428416 9550188049066633263093264066543616 7006254309799374269108711879344128 -111911207371871721915189762400976896 140017936838939660657329254170624 1619307355266940217859127195467776 -905800755234857837018036388983996416 2260861027337780108738670553464832 2395152232182802972333836152602624 -309514153053449542715441876708622336 717390559294432394890522864386048 7577645695926147494648594902810624 -417005693793939278934305932522291200 8589667908495592041457252042801152 404220715797966351438392904908800 -774880540187539028387834275437740032 1854123747911617596068044956762112 7610893928203799061469372727951360 -750165560076072246001166203828043776 6355007463602694155339172082089984 5066413822930442002887465678929920 -568985306094194903537032038419791872 2012014678154611522921629069869056 7353200768417526212801464411095040 -757612622349164185763563435848630272 1347145798555919655588542946476032 5869817195096990845142137665748992 -412393531597287956598489555346128896 1145462586738085312929084483829760 294227061038970192012397581959168 -337713305234139203408193410773811200 1412042519487070611847079144718336 2360785825607292630405940764475392 -464487787138644691630333769963012096 9322769825819142900899775814565888 7169282265068772544073188207755264 -233153060348980333345211945813278720 7115399065079782651617194239066112 2098485702979714837725027023978496 -140021111556812108548806272759103488 4272739350429544334106289307123712 1537851032338924335743272747008000 -414965474131749979882008970501554176 4246003908717676896061956967890944 1492422337445603987646680626364416 -216939461762454327017468991845171200 9038897840004718022403409936646144 6947322027129693714864545023918080 -901043173416447891117274320481550336 9006298058522224219077423604432896 6559267198653303095591084654329856 -449082630393272954731118075354021888 5959026136692275403659308259344384 1681755523531498455999156928380928 -92874342210001544851654029751615488 9485642530838444485119753901309952 4999725374018070392774177610268672 -993182187351287213860819818569007104 8791447486992161517014215456456704 7725067079676558635239504122740736 -614276442185635377617147305490644992 5191154418015627266642327701028864 6597491065472365226352463524659200 -93403091875199826425532188465299456 1662479619989252530798465080360960 4956191043000881410183201426505728 -945675603250400038388096899265593344 7359021834692798668640728284921856 5425051792492660492497826860761088 -612265589600985618998127313922555904 8022389441864124816234359015079936 4340973319943277106125817581142016 -989521019541672231098373764290707456 2565718340765570214282941796712448 7223968667200155434611521301250048 -813572386258263241226553394376736768 4692246208494680464743778240954368 6055953788894589885905008899129344 -463490951747295676700003507911000064 8137101617147004603958600663040000 4547387011983790733942532345954304 -919226878426044764154305264610181120 302929660063337203609549116801024 2316396863187341492894178308259840 -155447294507613077593144211428868096 2716723745398126333615088320118784 6885007174567643495344597467398144 -510510999940775184057807969340882944 8727784928255166295930182324715520 9780147926621869298723639080779776 -982175840467899740084488670959108096 1114148108067442405374780984262656 5247493477530459512152475205369856 -659790932440854044684623291940339712 752505937280519658545171709034496 2720185417127452884923946712956928 -302451136369126506621863059905314816 5142913300495110785383780073865216 5043845589753517254276199355514880 -862295940120556166571528475641905152 4646856580957036697163752429060096 94136637593142569627665911775232 -17833285734941287963739799662100480 4267734224227766291517872615194624 8145017267251185004711725938769920 -989293707028391305143083635572736000 8948491339892760818786454353215488 8392340566068381703512381722722304 -35462289322029218637370214651527168 3717035192675113048560177548099584 1383086445265679792613352452128768 -885853625447744239497375629455654912 5667662437796250564966061701070848 8116677944844746740064062546116608 -293539349275173878153087398277283840 3730363717194092422314151601242112 9870172788371968735389791402590208 -527164392178845616762264409870434304 8476502237805942228522964933935104 346009291367235947769739652104192 -141192464660232475866149205770764288 9470626648829626693612704398049280 129657100459318591500848864428032 -267103888709092309115114441695821824 2043804807094264960492984177000448 1673633187812026483761031543783424 -253442590606545564542723053898956800 7867557209093246577795942959808512 1875462748010966521587888520429568 -780080202299317809245497827711254528 3178567922413018768490921428254720 6101962013354466316611808707739648 -933592397918074444933988390872809472 7192890379619023514892399305293824 368648223414987610648370321817600 -984980971534014904101545292970590208 3685314678865042439426389464580096 1961981427394561616004278776758272 -210676440091819973032221435548925952 3545607078209287420871521251360768 2386204197906056935541180540649472 -583988199695890610740830824625602560 4444882539007152827092586308042752 2592961690541535229492810827694080 -948157770405076146932599138438610944 3574492947806100294836678993903616 5252655920111244492572824348655616 -871497020201598648400273808493117440 5364043596952293598126434506768384 1189207069511092018730392000397312 -377978390459242481090544689917984768 3607466257827618529519435669045248 9992847671113499805194401901182976 -403360952129039554475162393685000192 8712220462002981336627587567321088 4188001833235167407811635812761600 -60202127172756153011051456597327872 5117867896472277421888723077824512 9039058533536315635341869390495744 -932330972237693892957927256350523392 4583466637250972966589319274823680 9631908020743943591709449845211136 -598842687278587835233839724714000384 7656771836483151846336683428544512 1354863066261567507131940745510912 -217920606697480826654144392492744704 5159381117979325737309727870681088 6052722132683149445643505770692608 -159588318340692241142089331968573440 8327062110078412731035807771525120 3121413108509590285574162744344576 -558134736284206144129028332003000320 7033603035581464449581382316851200 9053391307533353776926418125455360 -352548711270480905727763356311355392 453991249597594006498433659043840 2011574839360937872805179244412928 -465613723410857871579055251368443904 4178092947300382943145770839179264 5637291466111170082963689706618880 -99915624653457197837196516671881216 9290121421204341220908081055006720 1605389524383145632642089036546048 -555739650559366722519049758031478784 349890761600511990419354025984000 167238638247656005635076907859968 -719656628537094939413556179343769600 341784402826215109333209472565248 4836039605570806727234374321831936 -186983932136465699553678126892449792 9707204703718212828415921603215360 4551322356841153044799812358111232 -556651910919406781127446750094688256 9259825288512921614302609657561088 3916790465693222538414011325612032 -158587303013521062388770092473122816 7155751356166942578239094086696960 6198663222189614854145502852677632 -677527458014077152182985325147062272 7437675852637538937557406713905152 7767673228193930841701783496032256 -891931011623761568177259503471820800 2248123652842686277009085617405952 8499357882520771745714571579490304 -385433857084618857753794160057384960 2216410544193027050782751935430656 529084332414078010649928896872448 -962712720564676959059321499309572096 1545417802383394233367029853716480 8747608801970492538065772984926208 -415704412003240577105176390702989312 980252507655948534510141539614720 1166955091729621481912780153946112 -60781885375589097365153353132146688 8479403976610981205094782841389056 8865178265177265199197497587662848 -759730481811270271491403922425249792 8313087101143811720849898053042176 8092291855364972164008825732464640 -602023888664436149713788939949572096 8807200222655571280952289568751616 5360337329719114147509474441560064 -221050467993101878465824094909628416 8576058940056493318197592232820736 4599603040620207274501500752101376 -388770360455297101349357535161745408 3064909718899799544619996903636992 5894475799858323944603900681650176 -957492269479025963102455420734668800 7298830329986513125822688342835200 4099085442554553692836876393644032 -165266835993205940866641264222666752 2289048307828083305013162088071168 956453687487995602633601396506624 -445733127146341144192472294161907712 6875630353982437167212476764258304 6536998055779429584855128537563136 -283447317216913332916355346190041088 4987101153663508941995260264841216 9718478069475887893227045195350016 -154192841783922520699115494617120768 6306364785650435806448701489020928 3216540965953607657837184451346432 -103637343386486289253724113000726528 7731653476594803118420690076696576 291202131884372344512988284190720 -521888932645684359633530929822040064 4741569111552376757449017996083200 5675990415227125634298606958673920 -623116056970175403263939666841174016 3617667165094096653021318882525184 3610492548604691744430072367415296 -224734958325580167954552583152992256 9956495780818289950111098191478784 4757839952754502373972258884419584 -489021941516151767188098799770796032 5600972690225836795446582854025216 5372464049744387647568246455926784 -8381266680820793784447959901929472 3206100169674026927471616581435392 4402816125067148222942674272911360 -132642203133335949674013517190004736 32498034331702547439355235926016 696723427432556138805285678481408 -406274879850742287949059260168536064 2654651095179206574719677463789568 9725523114284546143643845902991360 -252229960427371100878948410639515648 9190250483745063822379645151477760 3021601003866892792778184005255168 -679587499303083093060171823879028736 8717489769589445457640824718229504 2914182865377710705555179005018112 -83210373076469261044756330148003840 2530559984031626167255839568560128 2458961208370162135945215779799040 -46941489521979724182072988761325568 395694593856448771179842212200448 8991609140495991962859906787180544 -95619650318065988704122258451333120 8407390632414467778367495430209536 1404063722968230480882962345754624 -50077945911441713302534922333847552 1924597472249575417326590209556480 367692833508914457772049095983104 -509001881766305380067363945948643328 5796148659165377853355616383270912 5588983947899853507854937731629056 -215576379074280873228286774600531968 3477934243580922980806485142929408 1009796096786077826467350276210688 -458768735555781550955678670826504192 3855218720583885568980380450553856 8301294143900277240116351153995776 -993083354189641180871878457490931712 8868270043326727279411323983626240 8000787796926024604052993177812992 -421578812041449643462143574615785472 6368284663267294726432322555478016 5458491017426485941451875969662976 -967783766849123237169013676945965056 1139337398241397751574773947695104 5113438893608549115807236827906048 -420351776810499055627783350956064768 7014879400392327102884630038052864 5591279179910943921609928586821632 -796157619087475528285709791913836544 6218680966810847079667702706470912 4270431667525826876216929922580480 -840736629365785331234727291351203840 7098524183970301789593982541496320 6016725928955824747493991032815616 -483156445148992270752327540202799104 5230213258234948705048679474528256 2129676951307456910478090717626368 -759586651996187914335754317629227008 8464328176440139652703162921385984 9027909616948886818087642316406784 -581855971222366473932712450094792704 8086939583699950819286210949677056 2517738520275179392220436633747456 -547391458433750693309446481730600960 8179009030710325721246699519737856 2244847449053136025551499224416256 -255992322736503383650812990417010688 9566527460046240573380344540037120 5154672495525952536614073610010624 -671901702797230647933794000840949760 3635001628935275474183066029654016 912260220059607480146651034681344 -355895039349007705506422717826465792 767968380103879834813728305446912 9698327224068948028504165834555392 -659250279067587946496048345158516736 9371060892757714734786834902024192 8781461858648617040917317671714816 -403285389949338226384932615703494656 1882939517289838843716991193186304 8778718576823432572913742335967232 -519107490764991726568053453428359168 5158258688547195868330051558703104 7368181845913967181423014672596992 -131817288890088906559597345287176192 9104336885120298000635709746053120 7607873716301392059346396611870720 -182872796779751780744529512425848832 5810370440399541450061019026030592 6438175913772116384345016223399936 -417881805506245499880512880241541120 4745947902534870244431635442302976 5482260103389567283971654376488960 -770720936581940483243277492156366848 51201002951180273963423032672256 6511797762270842474439994884751360 -472869781304552435879555942890602496 9481272145874495705351322146439168 9450531672054011730470791278493696 -709201941318565771036974984768520192 4571226870543567851750333307944960 8331901340407395859302493578067968 -486698115343948367387556172898762752 1131893878458505341550360583471104 5931394363569152660432378119847936 -980963213818864412026597869260636160 1644486552372262598785530987544576 8499140970354944210200558080884736 -92479819093680230861787235805560832 3811957960961793302608363233738752 4960908986395408586580115048103936 -87347801547789626682047531975704576 2900630646760017129517525193719808 4213172103896208932628740347789312 -977089874632870790303079242393452544 6036193122954155984000799018582016 5197854214671320526973402391511040 -415318903888662520254515054595014656 6014532207656849902254176180633600 2937204149606980529809085456973824 -363809280111489115678337362596724736 9782069049756179470719880125218816 9489587669360329283331402680500224 -892648344685387395300137209293701120 8887424924001900811990559195398144 7293121426150880474208263987003392 -107907135633028751384129245185835008 6516461530188960028254093147373568 3025278774193009771078619628568576 -567086644785304967540984668288450560 4526914575358294339674669796294656 1619842805478133658032640662437888 -42310327824651054320912214679093248 288055846726060766158220066553856 6994735312342983612053653179858944 -926095491970786913654946588377743360 6037646042421420804381907039027200 8881395474299810171431493723750400 -759935642040465526967283672089100288 4950978207354590254090614722265088 2317599326245302027817022937628672 -763257721344250795318404315699216384 1192885708661651694634905746014208 8623086612707300695852413972643840 -709554512764304605989050120050573312 8152186047410429396491326795546624 3095247838638184078448033991229440 -435108629680275415474190274424471552 32391698908999222458573442252800 4042800936146738525156982789242880 -130788170114800049942662860245041152 3324453077271316484076417012727808 967426228346150499191987793559552 -539663430695254031944312006643810304 461688760999576470160676340367360 8480162064807350078278790998392832 -975376605906766190286810397938810880 836668451819018054501477096882176 9489245503612460004010088068022272 -627778508019120949318789516419399680 7356988891412729084880993331970048 8272599412807183118532492824412160 -806676899614475286649570884136730624 3523453167970493942095440494198784 1069246963978657451388461746487296 -243301306508431101805937320609710080 6121853830567337971459116134039552 5069596720923473383672589066436608 -541040472326713888660143583906496512 6566740478664569471672418410954752 1562774256027568901001903754706944 -726646886187806636120731703241080832 2923338463251427003216609562066944 1044503517747169936537783313104896 -210727351098798662686028974499299328 8500950960983663861505817292308480 9090581226006213910323246191869952 -477446594129417296120682571834064896 3991023229676739225131526870007808 498279332241982306872970230890496 -875989127954279761612463596803981312 9292254203564486939844508691464192 9144241923096133587804682908073984 -361506469264944330188531084405243904 7508783911350815498122203240595456 5245614396698520865266758236241920 -347991420115250592338322243870261248 4461656564916358911070920702427136 8905187540162578150215277965475840 -701718313894785009875306080246956032 8246852240575784117315123724419072 9351803494407472638321536863830016 -13956092950639230494960213452390400 753693134160552418616698554286080 5680300657955011543794795472224256 -236350922298214450766167564466782208 7209273040966907390257629495296000 7062207032170624236678385907007488 -946645828079523800320088574296850432 6299116390937524161195656175681536 998484190203288053936828660580352 -22718808320659920080804077415432192 639515819593870449831810181365760 1092726085581717516882514423054336 -319435119675033664311889822094458880 8183070025094816420477516407373824 2772220949830439061146770583060480 -366730857839781621864735748690804736 5113759827867051329907645659217920 41303754339988212882086119342080 -868711524285946978425532728117035008 2262496495053534035186555799207936 1522401370492418418884063940050944 -656600082248675359320908935385317376 6034060902461303524103274874535936 5504347591414687129080872436760576 -647529900496778862896807725580156928 1606662647922789265985099672846336 2496488633646522360882529178746880 -898458854235484784193382359507140608 8961843370841993025057244802187264 6906972367091150588665574465732608 -941373140401978208063688670653186048 9585600838014707270405933376733184 2703325311002066573008046280146944 -63915711150599852177425981895606272 1546387354807475503330678173335552 3576301684270744155950862817034240 -959128226122731170322458270209409024 5902106224377550876260108559450112 5393946621328685641616113769906176 -468237861586713480619629902502559744 5307686663182009462625308894035968 1456507490577445001797674106617856 -637107541752701694033753476400414720 6706597330526453011871351032512512 315029247856437577606759037534208 -548518026825610810382278971466186752 632873016752299395945210933411840 3768149495234002549167505843159040 -687723572508047508482483437701169152 7512752054347678954857878521905152 7138032154692547497321372227469312 -974583033005667227317929446771523584 9547135114198807212856450396192768 8167275257890475936562513518264320 -122959419900411670117338506550312960 5249756755651200464179444777484288 6283105465224373012321457850548224 -93027887231855008922255773533208576 1001455148036837978838254089142272 3144159823538043363598970526892032 -975993960408036560046112794751270912 407826067918853596289024940572672 1178983127089519508155039960006656 -298855160547019245805765626779664384 5973487986519614347400952993021952 6837624702643857218529457384456192 -3023530728596456408785571077423104 5162167633306523411889940573716480 8176970838990891544644757208694784 -398292367152608886044626036275019776 98049403152514655771156132397056 9587153134444129663410161273798656 -786836796634743253764309682533433344 4604057677559315785173410225586176 8562787635029876038404398907392000 -947644781271457272849555524170022912 6400278757629699052371082850861056 5960885915629439642322845168566272 -256899167436310831442282021543477248 6162544234819259059027400955265024 7442367108895559857926551327735808 -206848219625050624050484291003482112 3807277939821468028490462403756032 4674867367498226995511739715420160 -320977309469360307679630071343087616 3959053028532431611082282452910080 515171946415984837525108259028992 -380558281272536675054666886189940736 1254489719275100772095828126859264 6152583386988716976132737374093312 -419108052806215169650437541750374400 7164599898314103341861924776181760 402738478145579483412903118241792 -245142533492281117682244427475582976 1792200853906510368341566169284608 3004076707889064889478331934703616 -679938936245466137655473566304436224 4091796130722070565525389647544320 1200811752686789784131056634429440 -989206888905506739093360448636977152 3920613388544190899142388881555456 3410635786397345990485243970191360 -339091503914210837160539373548077056 8861885358413229239338447048540160 2072178956984174606806860762710016 -766702969235308623666525904446685184 4774948349254922359886369844625408 4536862327545805934333747626246144 -603830719358321806019795446663217152 8067749955372007983953255417774080 6560275763177653483492212442398720 -955034524690214348355595044248354816 7106756497780663188817345056342016 1004239807495313010361903886630912 -44220120716124460337252262446366720 2135102844587001334093513932931072 8531659916852224569168810783801344 -897552834261564751052771286130360320 5846188248210858992312888407883776 1072618076127506030114789572739072 -840589572856962801950108771023847424 2473401765347902845597446234439680 392692154855918256491475096305664 -543032845894703580714128654947319808 1664543461046132518782660096557056 9640886730171673871852416050135040 -894745979817759578780971902479368192 9799970976006721085967711994904576 1370742363322300480712529208672256 -47162504443530348299071495065305088 7742540660213677776125381566267392 354878767203853140074165685977088 -823274929162510376786470412448956416 1465879180943127731930884084858880 6699607558749299686993588375257088 -287626017083713141067156893131079680 4367434545509647266153735248674816 1283230123129101145048150467149824 -924553017094383731529462747022491648 3935021718406961010771516956082176 9613135790050201955521344483360768 -524348980796625230202868224801898496 7369533913233372823898846190895104 6538867583887148212275661913456640 -811027351483201036008978771123109888 4363744778699792566053243281473536 2680564353624907694496654844493824 -402742901707429060062808523824693248 2651130102491878890194254291795968 5678791952739532583355787243421696 -45485897323702737578111575921786880 7473851618905218721428402522292224 6815238924070870874019435410096128 -210035574906393414865471703573594112 6091699786466137740801755846803456 3506293781200545729301838638874624 -934572029411828346550493487176876032 4389125360778045739727311509389312 9585256868601108363389046504816640 -968567224600541454940144416323534848 9536839006877946353851728297721856 2964222385353936335341076489437184 -657931667638690598461093998609039360 9989428520670727276511905043185664 8610550788951356585843240172781568 -801505023968390866665868015848914944 1035244785075683488681171141787648 8888478077545911780163284837072896 -710381873905657413108632006690865152 7968003531495623313759449179488256 1181036727782011450292667762606080 -384105478458419143511809308154134528 5160779633239528185640687887187968 2176474622254231700054991775465472 -95123285097602629879032252595175424 6261769401682574927317997562363904 736936560382221517863026820120576 -940497004459475934497756497385095168 5029671005616537055945362207932416 9127217327214396151834824461516800 -681583503342798198139689713432264704 339657324762540649600061047570432 8635091965967420200354187053105152 -227782308265393181068723357669654528 4798344067788586001094345547055104 5565728236409449161980402238226432 -927115849391258390028348182457483264 7990510963872233413174591188107264 3355996493823426131944016642572288 -525707020167400172594269442411593728 2918884903948734260399057326309376 215591684976534595877709149110272 -517499344817176563906855039297126400 3790868419466029785458147965534208 881688462053831061002203217002496 -864845479949209846033544935389528064 1779383912404129811341372209233920 4561800218760144571759612412297216 -260200749443383426844098860496715776 4224240098114690183495814335168512 3326726278037857399979005007888384 -373256690451474784319895019160862720 9395031759794800911890058385031168 4763219147839719378992920331812864 -521869554977221810145075647662260224 2675918073174396421918578297536512 4963537703307004684437470859755520 -877954466786938638892795298437922816 2519855667984028178680813872742400 7284688398141494391268989066018816 -935045446602398071635717765071896576 8943855566926432716217595245625344 8142306192622294193702772894859264 -820743263076396849899193904700325888 2466934331272648249464970488578048 199130280951835675916017220976640 -675525567525831134085579029193162752 1023796649203924659993691522334720 4459070538109948194418136258183168 -38524824414189018916254911318458368 6439067053603612310974176373506048 9353538504851603066365288686551040 -809182121684791839729385211214954496 9866728036138130923527877272010752 7902232350736373921560778363633664 -120189883107790415705171915083612160 8817187929493667731514037398142976 5717058741446845562624909410041856 -204622131681634749365277461198143488 1546465805789203221360483923656704 3747470164181241369049175993352192 -838021967754596509754541203578159104 3956226919318994330266830549024768 3732797424203133582449399421730816 -239684558737692626546159018020175872 1383888949006464535641464961499136 5819968055310855762946070925017088 -496405501899075450074180295159971840 3620028320416002126589983341936640 1226783997505640164306573426950144 -608343279172526948749835610989002752 1269139815542573132226375932968960 5459309435148012747770917782814720 -260908663420345045239832238975090688 7092198138479459121493827664216064 4641777965174424905348487789412352 -609610803083055151898674249808740352 7167211242925518841417330856034304 641843490584318546732714498719744 -982684549214773325620687448542543872 5496475248538388507694666585473024 4140625208402980147098727472955392 -631558853556287485708669909154660352 7611406249615349430216517553750016 5373669865379649141180606634262528 -323691949000488742341081046817177600 3963211987657810080536015474262016 2647037126589335718521813080211456 -114499264840697901893935262062346240 9245749932438143706354034187173888 3809702233849006297893866978672640 -750235329807759710731596780378521600 5414286698615836937130243918921728 3947771292092940054764570707755008 -848511800538382317989829675367530496 6525726614959732384041566239457280 411603859957531663371391700303872 -306130935636855700157605302096625664 2252793782017327315800810349133824 4922779338691274825655956923219968 -978097023925611355438810205983342592 464870550676075561908465748148224 5140498212241298502904553662316544 -272821046532762020898986385404329984 3923378478988098704124217607061504 3481252024502512324063678913576960 -328787830478939171922987346852577280 6320709692821514351348550721339392 3972295867332103300029898268082176 -473912819612890080748673988422533120 3998124143116721224207789212041216 3383453289624689504523618355249152 -49487843286874565175429699806953472 9820489886752504924751535032762368 5098238602825904782175682766569472 -904911647786309233306679315911409664 9708085359036614955669807534440448 8816258712403189184693327689154560 -469688324281902357192110519103782912 4873008970657867684835731703857152 2869331825711761533879531843092480 -278947151844582064649936147849412608 7398606271546771398359358856232960 8974092759342872515611284295647232 -578190440675391948349070560771178496 6247438373043445368322966507487232 9807268330040992105911618956689408 -347837266738750293414191436469895168 3746952907548287958390281506652160 6203528846355819916768356209786880 -539429666319172458886091449477103616 3868624182509750410168942957953024 9461737498124238900017716332068864 -452056280012231401094395700120125440 8113874970535777966346657851244544 2258640129312662525630446510800896 -265262634735038747606972441372393472 81540657787286353803659544887296 7722076683257932341176594860081152 -414610952651598842304841547580964864 6600965772932702027929289463169024 115545602824979290536468774125568 -391496769048411630305610977293369344 2129468894912452934967052944277504 6509717615788760597869502048239616 -359179939482765975103201099229691904 8063458225545149090573822149525504 9058877323130281823942595280109568 -730373218850049457167113368654315520 7282698560986361459808462360805376 8650400297537333793135248812277760 -813449425472855497186841674108633088 2695248308802033321628066656550912 7440752412155455644620195744448512 -951912614433433218491044822790438912 6128828107435911204363792589783040 4937907260419267201347067431616512 -265000385373174642457403204065820672 8954662374625598621360782022017024 3468371428525375309491786485858304 -362962055478010601780058765104513024 4646092311084216502713922934013952 2383968784307614433263924809826304 -605692770281334240291629568232521728 5313581383356120206998763303075840 4639809967318129310033399888478208 -583460761655310623328082666721378304 1633671082296196514477598985682944 6570216263761323770485858497462272 -461104894214365186972147324081405952 8991934286998998959170451058720768 5892336736072352784377073325047808 -627922935293496230608946524116221952 7466325451314144653497601190002688 991176864372636052016211534282752 -190036693741176477337422698171596800 7655325563862670204071561140371456 4715558612946884167090797721681920 -366548385863667439124918785603010560 770524018797778517422520546623488 4071836661706739203237155589586944 -566095622237090579571062256101752832 8987874853735733344580696113414144 7331931397261612197536741694898176 -623522282138169602670259795285508096 7621959143921922331107687187611648 7089994282670295497873326396669952 -49983095008974973486519510978527232 4266840843187915926281844976254976 267708833949452944805183145115648 -45129039056395398399574982845792256 1370337166327198018805423511961600 2855734353405325551288702109483008 -333691722130627856106155550756044800 3018895377176114814660595083640832 4097597304159361124258700484149248 -844403379686997357418210448470179840 6543452625994717142442557399105536 9947153835418919182122681020448768 -574845975065583884694819971822256128 2706498493557072011421454809694208 6471798168991025866487143149338624 -866070187122639377990744544974471168 297248372100672158327521262174208 8162911931136447965925044555612160 -978470507486078039391703573119107072 5543111608830867556788503222157312 1484149580843239099109925862768640 -312402491700649060389779782640861184 9668697290655260137507846241648640 3437099838010453218792875839455232 -321359140031824832579035930019495936 9547242734465701263944215485743104 7865493021085873421961870968881152 -985295104160056357205358545138089984 8907309041306861507902278194954240 8707820904701452064813476430741504 -779858458032400160813415780971446272 3319203774637848378188870205833216 3104623827183894781919908574789632 -877260961391891985125626162567970816 9535641330141432425678270522982400 9088496046001567243869196363235328 -303006368385291802031591174126436352 9151784538907537373278328630280192 5347412640572761832222581665562624 -723440081927417419419746303396020224 7320449727907814685850034040209408 9765922550265898470891953661673472 -350716288742084614397064515975905280 8310050322801232565188900155293696 3614561364169342791819971323232256 -129513917539417195309711425724743680 1800704619175864299091642258817024 6629810769903910941972625769889792 -791242166930214284409048228727619584 1064763819371048401455005973872640 5000845936820039407637081083609088 -115861369751657637571485372740796416 9882406757138354266960568533385216 8921455131589191951752430184562688 -940552315158980294474396148877492224 829017465136116929912215961600000 4961071667829418748701850195722240 -491110204483988119271833500376891392 6910719424066822084759785327034368 9794507691660152002332361003892736 -795020637883564058364657236122271744 346319007374309116712148755546112 8501599876949152905390020876042240 -226761038088145271256727000088313856 2074075776985462519721003768086528 2375538877092463841710993508925440 -564018818714031540097940321525039104 696859305114420692875716100882432 6783385777697836623910219194302464 -676638321585449373782386748875079680 2016093648148128001490318377615360 5239196594322732386870340553277440 -258470872754296497771647081551757312 8718970438411580162533813078982656 4934519575725422906908484241981440 -523867106348431809853616978497896448 9244919281793202953155865797984256 5387834576021407079087591355580416 -281521875124554317307654729728262144 3828122789116417244143836901408768 8277174418705723288908252315648000 -395494450575011549248667712365789184 6407068079275210388090120195538944 335123866920121450068961400979456 -855393803327452728679852401752014848 151248472748714377258362269073408 1071071351960862612286524847292416 -775096649502716196257639253917302784 8541210116697138351198789110333440 4317752225676153367352486307823616 -554125628593179123718675381247541248 3129102249229758491515232448413696 6996080691374051272112718252867584 -561135564479407845500951973458870272 8825796634830720344786054835863552 1383350863090042960808371598393344 -995967534981079069115915087955099648 972072525662926715538645524152320 9711450625698062990579526864470016 -268782064775279675209803328902922240 397465793406524615235544926912512 68724127648042797314494812913664 -635208320854492978922675418496499712 8137283746323331162246782482644992 1607085567220975329576109842890752 -643462708100496446984396613030510592 9619886309855628606799635994902528 9884458403660960953378697644081152 -863284786747767600139783247843295232 6848166968193994101423402116972544 8728876674827287581256682001399808 -144838762919920158937132733812441088 9642375832640058600516202356801536 3116086183881479962554602388193280 -37447357770863898214347179619778560 3435966055240789879252796779266048 7630982982713729451979982568947712 -738165911817472854850047770191986688 417805113984249204662779246542848 3617467195394847227588192866664448 -734079210331849739617748518784991232 4113437286663299622418928652779520 2313110907174823846613380012965888 -988259271663789197480278141171662848 9714800652205088653757036659474432 2628315548371867583101215642222592 -907196920277982280861114094938226688 919862635813194608122322843860992 7373995517790267330106162533105664 -35041776883359058560924296755019776 511870802452036537836398392115200 2688567064884723841774468905041920 -168009283460217148435715891646169088 1636825604654419423855710000119808 377678745838519866491306745266176 -902231964279140644296019219113312256 9828692940685563159708749222903808 5566523448553048723943192552013824 -766895227118906165421902967781457920 9407297955676156753253561744228352 2148080837332909153559997344382976 -931864775665529509305414967996973056 7324212017328887383907726063042560 2748335852999971099695287300521984 -431472342909725460654900947456098304 8108028810529539836992445166387200 7151263102862685055390454772662272 -580873018408900119752929471035867136 408009056762382248715569741168640 268211866704166096730722528133120 -414323640524200126220915634568429568 8175347476821473569646688660881408 3516765274153987413368513119649792 -694370382750645384550206882675949568 5019735457120536051668739680108544 3633523710985792857501472638631936 -496990868833576925835638355875856384 5177302935619638606992998636978176 5912808425145658896683300986814464 -207921209745250990646868984712921088 8929025921932455622800863282593792 495227892478536388213862108758016 -347787734222026621195332324251664384 6256271710372910822999680593428480 9302560718620155119451612936929280 -422264293097196205744447261125902336 9084044304178454192952137148792832 6506926579655710230228356028170240 -554904649071450681823999442523521024 6767748646195288911507780414734336 3383782646768002090182734440824832 -585169203755776424447118653500948480 8472298023543607827541780332544000 2741136597188492145766413373538304 -328048467199015512215308058323058688 8646455346304547516550904268455936 6822058653747569023083123908280320 -720243015884250877727715841837891584 6522752999898076893553824517586944 7719457113812242338058867239288832 -962879984843188358731311510737387520 4870331727310923959579901956194304 7402448798749036066028283477622784 -723554822847017913242379844107370496 6590282728211824698401753573359616 4902813054010528350212774997000192 -852481031579294234489880043507941376 4922853196745477876622725560139776 2989328375260283392152102827458560 -696533263545996227827827248375791616 4257041711269981202752792004919296 7453673883810610489871253498757120 -556804005225612983359579523915972608 8112025728314698524806752745029632 6763610226262494976122781278666752 -207630620618520521700254474794172416 4981610818363675634828870183550976 6581154879692980014634460266889216 -302501361276051094100913508772216832 9915882071428750363383643810824192 6658776742195810567513078673440768 -790919300549431082159073565647831040 938423460587045324982406850019328 1279239149132505181367822943518720 -805654992407437354687340031904841728 46865196821370113910445870940160 8958751575826265856959649146732544 -124833319171080898766704058222772224 5170228250250657595687524083171328 2551240572300875567170707938869248 -611039426031634079135817000695103488 2371756097629388636491975873265664 4990732405375370953643115403018240 -928340308293100545509563854747598848 2781208851218044111087489582628864 3178902412828269687597420584632320 -101955256821316136178043386121420800 2311521167475381184154848328679424 7766021711411330786848536115806208 -568773848738465296572003947179409408 9103742628116026166738769315627008 5659534813800057811985759568134144 -545923971577560399102517006101905408 1044737845258931491055338579296256 3229744408917576761467451385839616 -583800232164000939402099982015135744 1542733382606693315822959108030464 6283410485502133451361313529790464 -81238642186368050372964390044434432 6010867651193598930655476059209728 5790388451998238785975522189901824 -972681584966056070234088072133214208 2948525231283381137175095214604288 9291015083177838792124312743575552 -840696546759004739287452124467691520 194126385943042323502475786584064 9303556727845890126653381689737216 -302965229485758379143496889754714112 5024218006128322099141317668896768 2689747455256578921622625354514432 -287193027242682697611912147885883392 96734398420108100860034045444096 3450326236298820971652394065592320 -283336278849754140045452976949559296 4809826467828308706858918830145536 8545587349610820047836936201568256 -347895920228155333520331201585348608 536377454285167667643190519791616 6049361888782824242562243527442432 -570488381093991906731887106216427520 6869593268941070022225853195223040 8305726570014765818606309546655744 -26921284328703675654727440470638592 7667991307698066223927452621602816 4153402901365412478778610215288832 -875064283306133286747666126274035712 6779871184656174510827363920510976 1361002168626932846559419300839424 -638951155973975728818635145954197504 4211609743630056498502030325710848 760780869074394753201377946632192 -605002409229414020887912413401186304 4283845524708795043025330519408640 1192535637402297636541979298889728 -115357162063040606345397972638892032 3096460353323223206689251306504192 9015088314302045043714950109855744 -618222217597865697832521855236308992 920121330870623173117452386041856 3192198453873924144299237330386944 -342812705083489789990825117014294528 3287835373796739034512035825057792 5982023263636064668545007132606464 -31979442227849718789618682692632576 3402327955110395860603748151721984 6913682281390765233650557098393600 -396978458293686427233031372283052032 6556042545396372831347319808983040 9771576890233076698307042639609856 -425272378865969044009325842848022528 3401943997313685380681166581923840 7430468835557920449897821227712512 -400347337829076911626869085713727488 3758955715695315871210287524741120 1869283113865662360343401570762752 -322640312963494577344077787513749504 8632355364721547933312631361765376 996733413074169490253620969472000 -970335328632645144225713568620740608 6219515316983582824096392074493952 7102337184175471339368246281240576 -478486626110589918104353654496559104 7220627537905509576889648703078400 1873174738527803762114212258643968 -83187012523372233724015520285458432 9514866017749570934631689898426368 6708714533490707531528558201536512 -791695338930733448637747005088595968 1689471997586788445891607761256448 3606983494093281313059403263377408 -83092425697989451077387534798422016 7676368158514778341513458817695744 7154978542137059740703302178832384 -477531285706499067419517154932817920 6426605150866304207735228700033024 582453884705771859835825955012608 -709781648766194818457615048055455744 3241195986354572601924003079127040 3642875953609160056159364400021504 -228672639467930469707758623183077376 8110325787898539986258458308509696 6229592660770519459110276558749696 -848479288042648657866558256927735808 4765593357363100536496389829427200 9834402564445683659031957729181696 -248655997798320671992130903383998464 3702174514818221197574176539410432 8057806295604961272029828920377344 -967863438424194347704511311231582208 8016822910604772040844841406431232 7675376270941410997083260367929344 -246612983430323494187550341911805952 7883576758794153225296559715909632 8032583280159242478393188744691712 -122377919144512318529771147077091328 5798054715620508346434508331941888 9545198607664067333174190931968 -263477731658392502295803019065819136 3788187972441741536675165475176448 434823007763797729319822030798848 -758713678192184423234664776536686592 4531858435589425876216797779197952 9901268466723744957695443712606208 -465847645732825650920002120591605760 9315015097977212286091690334224384 8652665896697126650995560318763008 -288653405581293164665354078214160384 6941599425946384010379423551324160 6138770058629993380222583816847360 -40117415626830755723899980914622464 5516235889903532693181865012494336 6995420640040242431384106177658880 -737178991764609313880934233732546560 5196301738661826546718121666805760 7684690113930596447572379324907520 -317354327137452946389517921438138368 526721199951197694555040411287552 2974862898026821719412417063026688 -844399157115734227793223091300073472 6858422870610743238780710918553600 8274679144873712340409160103362560 -82804209093837011175496783379824640 2156148355877982218101810190614528 4397633619225550217515846330220544 -124403335192019822995668174362378240 2186775792173573308170397261234176 7276362896754451945682322510053376 -102910704721025421955260989482991616 8273212049074590275484526720319488 3125048621616537088726928533225472 -739911910036006870222904468342571008 343555786612975532201278493949952 7212891973819834281510461954326528 -614040392242796970624816775805534208 4831180482403842854783240084914176 9511583781183523491227635759972352 -603606591833731987089762415424831488 9527499228961059145836887344676864 6916679140419491207880996355571712 -171519440406841788879944475270447104 1210062285099294471261308311306240 5407028579307662925380222806130688 -391141488167746442376879380403060736 6472350382088726982411995878260736 5376186567147362100653169804574720 -972946324471338769295429105981849600 5293202823551675248871289709920256 5086282195073294588159850572677120 -980781333782027872249163793903386624 1777293807939518602266158804500480 1145853257398423635800632028299264 -524173068949061624678184377936510976 2485182053729595167328749588840448 9411004338076761310343841489879040 -271094602028885521066351700094222336 4591495902009404829754745170165760 8882279958127283613515645682974720 -179534324969416505809041432600641536 9598054930333291218933375853133824 5585702767447345410184820964720640 -7201220003027921907047038483169280 6226364679511579681976264528232448 3274356202716625848136810576740352 -371138963180378859952143037125099520 5996408785470193373245683095568384 5107119154118823911257502337990656 -516463706398642282501843114832953344 2989976348675457850992620487049216 4425251908313595365047661485883392 -509352721394072059919665286548029440 3540633144531818493844570192740352 9394420262524041556352018679857152 -197861471806024548453804860726312960 5033670225970281063004669621567488 9851615755166260051293367273783296 -340124592383968552207074675117785088 8761231415554273857683258507001856 5328383469336736349523749231394816 -788270536201180566789064222102781952 7649920403169634560054230765273088 9839686812782459241512619783225344 -226058872238817074774620569126043648 2015220707999699557660088837603328 1870787652934805847643843347873792 -786911269851213588342452231853834240 3449096068379956921432784486006784 1558983885719184713491948018597888 -124607905471812880099130908942008320 925513248624875410054040105517056 5817997584463139108799438999519232 -623536522023521433963696761513967616 2654287647343175542986901595095040 4481877367746759979080079634333696 -609076132004036122945464670483382272 1545321403420342882021826269020160 9110085284541008510513565971513344 -898839845951504909296537125160747008 4239090727396916158999281941872640 9381916185450672886566962597986304 -982220653549667005765727736003821568 4096222187871008724661470163369984 2092577973098094778631882966827008 -436351952826841590310665352065843200 4711559527679242495763666228477952 1080703134343178103023238629031936 -719987232490161480876715877106450432 9148426614442068341933358515748864 5834089219232637790424455975010304 -444388358163727015380133824455245824 5111102962447099164327541886418944 1983407748060313324913705336438784 -825434996702132385246861087312183296 5297758533660269905461061529632768 1359778997557756418989630953619456 -82545400357465629684728262427672576 9564081145535590152493618583044096 1907685421094695710374531973513216 -494474378849655667877975008143736832 9066361915037526866283551071928320 9431369862150198324046356751056896 -919991032724268803959997864955871232 8410619150965409945201894892765184 7881440046727351428834773528739840 -900042164989295537127949619305644032 7565655525960843994668757042593792 8434037097189961488779352452628480 -852578759377923504087432281341296640 8192806483477449052100489050587136 599971836293339996947534095319040 -423710977789348425641816541053845504 6465591508467749503971637776613376 942537411620599513464442005225472 -29359641018894416220058699153014784 6856100710522842371726508971524096 5632766798022728913911457087750144 -434664411496137402050311747694231552 6485767439896629260754719147556864 1827554684109140287697120246366208 -470708911424039700574227747806642176 6622547319273259270014322052431872 3075584550996056124232329905307648 -210390738166218065597271372986318848 8958214300426466943430895857565696 4254991057896479753343638169452544 -923528177935707967463276713726705664 9631647087530573017712915946405888 8784825264784729080921190427525120 -306229318405324194546194866145067008 7574804120880048386930192406282240 327280285018266410289398250733568 -999514553505435527220223670147350528 1088633854178950900529552284450816 9105336593873825693224990264000512 -83290302278217949312597519822225408 9442769695660650219990104093491200 529130760436197947534171344732160 -395028759916695043754237207842390016 8963570570867401604232500641529856 8978485711239173413610190412972032 -696650362113069111469375787792072704 9861977810373225110068022126575616 6979250267250543101847024682663936 -744039902397422210944970423084777472 9588679492893435275209818677182464 6374343517090029596957982427447296 -177421433374113538862113633037451264 9552509440079464543761649742381056 2610816217143729029716567333535744 -82456510134380812434839549249585152 4527741415964629211709409650016256 4062603458704645199866728439349248 -335391676453127206936469539269902336 788075592855321318555419209105408 9551948208497135386079170782035968 -800902751568796306473899932788981760 7330381064159313213759530341498880 6158011348001371127927534576992256 -915209384322782657057855496976859136 4081360308053036116458017474478080 9399804414353539754787106564603904 -186959462995148797521688571810938880 2146019274269327362477176075059200 9168431943507401162568035075096576 -522444481339336855513169017469665280 3207399720939409203516749710884864 4800454548731974091949504662077440 -376614654791105652928660640714719232 2571335014836901723139201365442560 9193970861293257149743843019587584 -760547834528428978337889937744986112 9089163464106644804579569107468288 2188698726682637159934700455723008 -862774009270573304987577051099693056 2980401101197747992749638489735168 3664378304468212880779924090126336 -461280742421495309670080882965217280 3669516385608155421703249070129152 4669519245113279783038812097085440 -171444565402262322077990549159149568 7193912216314062107522821781454848 4260193829706040291852990445256704 -253362339817166590778848404477837312 3344609315360964313184959020924928 9119382929563389956283079229177856 -350236204232281919737094311356923904 444145554571435280970705409146880 6734103452518247597402428366913536 -934662255954923110442243307069243392 7190740561147752730904441282101248 9862127674045440425020040895528960 -978582277653676020451680110470234112 4809793786304446768888871202586624 7223615461332714812121013941174272 -541076707465073459922522086697861120 3980680950692114549711468199149568 3323532068148846776473507281764352 -895419412554394462980740864500826112 4228601536715680877896090593001472 2035009746522530366056976414146560 -590400415156244771479578094711341056 7409283013318942829250809035751424 3165173849161417919413368421089280 -104939832371128496576944955293958144 8746671189622909512703720579661824 1499391169428475952574327636885504 -435877019739927853819417542633979904 4655691619150444941675621108416512 9702355748793965027809250783526912 -499151166094864653730792075685789696 8805855720157971379376109039648768 6304631565058181483131087343321088 -168512800748509188606923744194068480 7717373844931725777240467156500480 8502589144235341948687876121165824 -508805210229884924439439958953951232 2173837910687228814228803484123136 5839749862148519610632621449543680 -621007429506508440589085515616092160 325782880937326608013109441331200 506698101036399807284901452972032 -279912230000700174950162442439622656 2997820665919851869044897161936896 9496929144191519191164665334857728 -423770563355582719206200219222933504 9272290447130566968199324568125440 2137014201684491452988236947783680 -853833548564349515311329338101596160 4305995836773370878682298429997056 5722390526122273371027147891671040 -919028630578050091634163743457280000 8864978749886908554863197577805824 8914191895875341235674281439920128 -508248561228034977544649908684849152 2839317719584560477698218797301760 9639665740398833374304133896470528 -29871640565137805363618753464500224 6221561096495912112231928595218432 9436230796691915876265553138024448 -323799133304143874241443475008520192 6234739012842900912751097489129472 4656497988185242451985496690130944 -843014316871305890749697893832065024 1073944718183505547056793513885696 1670452618567073654955125346664448 -918106351828853498456822085710774272 1976989706192433309528992771997696 272229038091648076237132913442816 -564786162140957649745893415570112512 5719926004219532279960129889107968 2814972307732268440786513900339200 -387490247956391445490043370728325120 3041366747823859006702570874863616 9986243264853699366907805008134144 -200169927729531732142998293762277376 8102168652323301372449979681996800 6702596613464128095105705610051584 -735697654840754927472999851804852224 6631744572661497448806054168100864 9352310825342212214347469036716032 -792119772298544425240353418948640768 899421092307896563266329371475968 7334621386248680237112064783417344 -189571118248628874293142009417826304 6425542653410047587384291263250432 811247623395097346072898328068096 -509381276005498734509965765681086464 4065751185316129072427243218665472 8018397511503365356226929412276224 -350483887676216570506028106400137216 5774178336422346297344600204902400 3045002153472406484836763784183808 -156059117268073676759855435679268864 9814115383895574750110299187052544 5901056461799981223859582985568256 -318806482850248670213772004300947456 6752154045136536834003734842310656 4665987930626666527887655184629760 -278925335862972420499365037651001344 1437478652478060893361540975034368 408225935195680256980391062142976 -268498400144847446593908186078511104 5849815805051542535113643904729088 6226787921184966602926754854076416 -797202952782855881993279603252133888 809999948089950217703975020396544 8000862388718565566933466727055360 -525303248797530488170133272186060800 7532917481344788259467581737402368 530548913780226446227652718100480 -701949381095714668084287199978192896 9594338161720755186900381523247104 422080453898596687416849262968832 -231179677696709282580033237560590336 9688849763200269607589579711315968 8763728341099644127958216281686016 -542214625960893200380245892902420480 339473990572720472143400187985920 892522114946698675534168114331648 -712952693891602115217003054704361472 8377094838964513540544521144631296 9738050011596207668161463535534080 -133903768979813246887676456359428096 8570664090401304169054657209958400 1970360726627405076004817543888896 -699221533436855027037260414661427200 2065991713523096317834974371774464 3758258251771605083650199352508416 -588969458180517274003756394399924224 1638529129430944388396691914489856 3752665015061266862914115515449344 -421824275853872946955285914932215808 6030445131844169234380575962300416 9571595654280194403927553967390720 -534556935053293951344520838984499200 5127070432032412098672457980837888 6954302342879590151848120096391168 -624200357013966099083487556419977216 9521846396463899174497217853521920 1037427627364695450179017795174400 -805687881081080218781434251665473536 4632326657202661915675617918976000 5429018813359140082781772603981824 -101411787272054005457938903858151424 8947759815956448466623653329502208 1734812817755439974166340952915968 -310013213603865322448758016013500416 4162456805894530055759477264613376 2433416500352312923416698103529472 -175462694850374828106548347578351616 8906289725149625366997363631063040 7751087040414132396242085942919168 -101260219884688382876080559217442816 418699038420927323213278847434752 5393987753365058079554710175481856 -341647247478754494214961915200798720 7873839463871397573281721404620800 2121435850795531495648393141682176 -49739595031001668263318719213600768 8130095785541565210233009027940352 363174007855459313260734741217280 -923594863739499572251330786050965504 9050950316636154081871723365400576 3748937527100159999288340360724480 -105790090017039462472760820978679808 146434856576434998942379353833472 2593611458465200297830254439825408 -337113558553125525889858199250534400 209074969204718686830981030084608 4332482545910965615276712888631296 -617748677266440338845681871788965888 7790252550641009825080779294638080 9212299533746856374090635157700608 -466476473944106877826817419781341184 1366240341996907167734988487524352 1810941116896051902135977182756864 -368692282803578096792941208732172288 751866927094567075919886123270144 7359650196203638436355496956919808 -120979330358410367294246042728398848 4020290851198635203198491624996864 9358828704685967154434677596487680 -760366699482196606344541783449403392 5141958889924290715641286261473280 7824023117568147691041380898963456 -848570912861247006647864123136671744 277742251937594526637401726517248 2547737668785801593207546303217664 -231053612283349093625496955850326016 8859871188893168674686517968371712 9838722393630318610839363748102144 -697360344515415322961371997296132096 899996690563595646107357972267008 9879167273641923431182286341537792 -473443887385727551761908960912736256 9686170943314050387704699026407424 8699121388082179791203216788553728 -963101451698179751295977940246855680 9449100662559044136414830959525888 2258499397688304913042699999772672 -61970655843161188400382008732155904 1425172072112520301947690732748800 6066376471426626901060927627460608 -443973083798831182599498660518559744 3060883493690958605488586326278144 7293742950473428130186912621133824 -587548271162099525066610425093685248 1434041076673981714939748601036800 40862738160523485936399048245248 -319959150980343409142131137678671872 8482055756305376430121467431092224 1845805627109697681662949803950080 -416100374490242935238120378873151488 6433102222449469135150915159851008 1840853190437189733545358064091136 -426879048183000992293042491962163200 8444560722461993071896855910023168 1775273644032104085054208014811136 -471097972264935921575937949671882752 7129148115736224497357108883226624 8415910492848838011285631097896960 -98478025503500524223033447173586944 2553976459727088016248543413010432 6127044659544369922577063735197696 -573660964356063306418223933437247488 9329390247413259580054572474826752 2787760693877439790049424199122944 -591603117576899802819969548564824064 4607222104092874377681806777384960 1494381808011103468911456132530176 -397245103208064686486107114625302528 6688522476216699491022864899899392 1876247584704074549050431093342208 -422327538580430908245540025877397504 1283914342509827026822923143872512 4293783105601177271543353344786432 -151485707343403880762583514198573056 7293566969241025599700775137705984 5110458998569279403160361829924864 -837780838149065881369723310125875200 985165629771663736589629895213056 6638985421023067633904781377929216 -934347897747227195868575585527660544 4010473705282530884484367894183936 8663148368409907644671790594129920 -214390095685183757349603622644613120 2542320273565149350685011905347584 3244650520043282029796928841056256 -330780433303399131124682172160540672 1215186102367655077808005923733504 7782060042581276846597723972960256 -807684121437544009794382168284200960 4466457983501953332834510487683072 1092598079678807709931345392173056 -477019110418996713451784497390419968 9848305589665269983204875360534528 3081491220107524926894133680799744 -54841066370680245336510664863121408 7383594653985449963271554680750080 7674785997450993501772131946463232 -516317980834490609143586712933367808 2976350594378762657808430498054144 5367993788915418686098239607799808 -230759201603333058470908586738319360 9083160125859918249725952996147200 7816311859667906507889003018059776 -902108001791259430512135491960176640 5823116317610140526502400296484864 2213981758591538003663204558831616 -836607852908464656615247530925490176 1441670266947810950354865785667584 8600551475469785928219002406961152 -973492670306891242874441422728069120 1638405063996131319989288656961536 9455147914394915557653899198332928 -65366385932341500414191952835117056 924023599707251291103853121896448 6433727593595563260053360918659072 -446511412759230525937796815798665216 2217224085000970995604970211901440 6252615618236026180181973046132736 -351922072635563944720026657185857536 8571076023231123988659860177682432 2928507933362014181914717655662592 -807083775612297637349460500319043584 7741401269844503786937227975589888 1064094305905157237160527746039808 -392127214826704201166866987865866240 7749587883266258085806344576696320 6933079818817957972727888892395520 -759988588497414309265412458243162112 5999931233424543704412149742829568 9551749322539128893554337482014720 -821950088387523418054026587877146624 7859036559665132411536896298057728 8689530624173011113023719509852160 -603463995592924632487990565386846208 6745503982982094511656502818766848 6667294187946576175019706468532224 -611693676161118415440195299426959360 7193445827074184882893847101702144 1273101155083672058920084329988096 -690312028234843463718227588077846528 2581950553602860180248572628828160 5373556295219365777365678315012096 -248652040218949876765880847049949184 3782537175393376660334240172343296 691083564649562473476543869878272 -282751143016922333138997605939806208 6995358921264905219404316605939712 3350718579115469870805873409916928 -571210878928931960788129874008080384 6834134187056978197588335243821056 6437136253420420012453418810474496 -633396291497070651500498123197775872 9528909014675684879665936379936768 6254904691541755219765838087192576 -40440342888039777156132582253920256 7957078717317630729664278122463232 1548700243104803845130276728471552 -730355124901193712477089051053129728 4344622392259385332120512979009536 2095087349536092957732337725997056 -177574518952635250468540033863254016 1474975207605312860096868896473088 9291947269110184830254668589301760 -732923867266923251148051531845074944 8960717346288056501412038017286144 2750707612503021145461908297482240 -835778167704925861126788078899298304 9997957153992807137375812734418944 6354171693499665132898541383974912 -105321020993659895853248759289872384 428762390112689563113747365494784 4064393022255795011583743375704064 -96840613843876944923510285753384960 764065322273507351140852347961344 2842558234619239789871922300321792 -584999666635478376403394163759906816 8211055420105128174985829270159360 4440850821366229227090182397755392 -185448242200136171773824729415155712 3706358935991948974395491092529152 3991305022853694844773206576857088 -60018339271752510528820929586266112 885983403267062132860981014953984 2443860641500168254556282418102272 -413352712874717156617460916236058624 3014651955815388145581384584396800 2326340834568151139347251180077056 -656174179455036441665953209734135808 1545384362545904378835889708597248 3019042238273932462535429196873728 -848673667256969903507420291901947904 7521082286800760256384468940488704 1891636778886904885133205674393600 -31125820016913571881011257850986496 9189725777457729200833667052601344 6241921286194461053733331181502464 -982419230495182947798410136653922304 5506335274901187717694248292712448 8151215646080586261062158490009600 -886891275551248566616359077540790272 4162513813522504488136694606856192 6604818870583580515567879799701504 -428774268561462235684497147281014784 6079471875051538541133705611575296 1158373225481443701205981510762496 -545940098931958587946885849259442176 2565131320103078404715245935263744 8057479629422285148300508026372096 -460994782708956193587573383116095488 362777290604772076913135817064448 5616575250603269462824496429793280 -207898707358651275375748785972969472 1470145308978922206822028535660544 2253413886409579387924508439478272 -853520433125759616354542876543156224 5815428168590865761978287120187392 9654936221992204147847455387418624 -213723371218282853267059176437186560 5862739961562506677240561372495872 9929406496197603650469035767758848 -178617906753614817770343165069361152 3840616163707478440837624507662336 7687359631346122513736819714031616 -511120352487742187031653501741563904 2484004034995586104043738245365760 9060693400342691740108004964433920 -336605427335619626961587761651384320 8210698691237553736523023688663040 7287487989193043018982922066591744 -374602638562761372135388166030884864 5642488578118231279919619081502720 6097653710982612139865684303675392 -41357679685569033459191666230427648 1585833305902058122687337239412736 7787148872704772578177140259815424 -670384597238627064427561542681100288 5665141184542569183883122888933376 6493444990839585465213306657570816 -59595554296231730978350771390644224 2059868221233737041545030153535488 8690396802307230407573515182014464 -79498783758354450139507045101993984 6442396109636238003348366679867392 4839374933872022013234455710269440 -916238219700934561241684706357936128 8796114323501522411544795148189696 2860948481604834007576553327689728 -483370500304018390062769824004571136 3208575220583829340050528799817728 4846709513207098764225543747403776 -639703662666129094717204162624356352 6572526058892120496303844928520192 4919291736690857851058027141005312 -831049876903588272724803260988260352 8196320646685508100501529771900928 4987350937694707925560208000024576 -790551252579121840721317600755187712 6050726936577832960957331902824448 8203503038256906065792922428637184 -304627698695837496958717168392863744 9643712458702090979584590129135616 7867794445534855385655526157189120 -512189315868123141976865925641535488 1694810341569277624880491487297536 4125634633437728062742961217077248 -53009713020266333946431249330470912 7978025249195737284403868525920256 9057804120139307318507559297482752 -348260146950115125269857895419215872 910155900873994778335149700415488 5603261812682144114942966195290112 -541289932518873627268929635749986304 5324902445113843585105916820717568 3722211114634360255213724944564224 -152971201818083890761539025717166080 1390250488254055569325708602769408 3005128289550413426640914156093440 -201425359000567668189177364502020096 752212261183053815982260546961408 5783337165601110705707538848940032 -614268990000364841255403040725270528 4152871763148096787918305963802624 5432858247394871693317204342734848 -585704508029510370998886887457816576 4323484487042082992782116556636160 6501190284177136190708376722735104 -415342310447079925834203835299528704 9252636445092861315212768484261888 2751081434341329898490280097611776 -295337917933007028981487668320796672 564361340377249586656847262121984 220180291525792614692044815728640 -327974182913969701912104583852720128 3844836813980492840939800970133504 5945398012205945989503991911809024 -441812110402451786825436644987895808 8188268992970597089955871018975232 2715502956728235574820535770546176 -479406643058030056319328390079315968 8741357058181306049819122058919936 945723474901834916578845540745216 -446665048876916710561709989923127296 231723589062792344619001023823872 8764807322112962140324109467254784 -32078137678470590559194148130258944 3973652499951330310624787707199488 9033571073433801135132225631682560 -777568854703714348669696136353677312 5939350370529815088752623389507584 4219604945323473502768151782227968 -802392818717253048167694852134273024 1591639056848821785574191587655680 9360648714657449324725798935986176 -647286708451074301087928512113803264 6250075093767686695887048802304000 8855827144684281866991335364362240 -728955046599079025534397984937082880 726882182681121022562663181320192 5467146666554782369517876321189888 -567256178840659442946343049405399040 5580512004487159132706170136952832 7814619348987449645125926740033536 -651728963174469547740137817018204160 7707622075877196551592864049528832 4396986225992144748268515563143168 -951041478097821211022722424092229632 9254367901856743928117036671041536 7077978408112138147471396687577088 -256629497484586777856158605953204224 2127701351844414410042230934863872 9319617426449436605819373324599296 -318095957273952594796730177269268480 9352769649760283698076792727273472 4732530061838048891958927443361792 -804936050219082404242028942581563392 2200094176077539044332758634594304 870423474686995242733464985796608 -803174130137620014413793810347720704 2150973622065964263308912953917440 9680846580665296167789922688696320 -826198793997823223455456002880569344 3195235080264134146962033137942528 4491809001798168495010540031049728 -666645825814129890577898509948682240 731987370432813819817189072437248 5015274520285134360196583780253696 -924680164105760009755739922269995008 3017574620600857264976892769861632 2153708958386322817329559475585024 -449231367194732477746527894509715456 413678400444304965459135149637632 9162053051878306759840697942016000 -693958151058208432223677635417341952 6856238434916189541848539461582848 9248988023631983698373225786376192 -470929877580262379633192320521732096 5854715831524226096036041902260224 2856215655767812956053755561771008 -947322167157596293222918962559320064 9208750140849428195898178945417216 8122994153625311194265247406882816 -622895901129930293181842946386821120 5773768107508876797263620383703040 3515159551404544296143916074270720 -913279211450500888088934541638500352 5529327784342164040251779357605888 3240084144237322217258514045206528 -613151040502413281569957112656691200 1705017057538213254480417318240256 8019497661041614595706509372424192 -810161513796853408987117876991229952 9643354081173566478417244448620544 5070661583912750008454240737951744 -339559158102041547223188128405651456 8515420386394248198359203706830848 3050885607848707583791788994854912 -152945175380309419997004276766343168 9943918032979815598065073101209600 2015821077611164033117338397048832 -91937458902769728127170114670821376 6309065945342553011497535214190592 3148845151425553699204380990898176 -826288672428279682293367055086256128 2094194963249549039979482050461696 4065693023273454699265785780502528 -894970977158748970188785613872824320 8096859974924638483971433065086976 7771805957644108554062412799541248 -284902343230788666140339457685979136 8409440307900927579946870410051584 4709244094268821121130419852410880 -784660713231676559060214316999376896 3627098509554419008330031425388544 5248696269068446340106478558380032 -607445134176979359473949119357124608 4870261571836926888297236671758336 9919287149945652254705348901863424 -700690151731457243814691995169849344 8199270540400110955513804731973632 7144569675172539908570248745320448 -769393957611248303311088331329110016 9652237441646958740816513569128448 4355156307046386411531239619035136 -233883588813367144397801819853553664 4448307142044652981667611715567616 7002169334657064762228662473850880 -639037266526617743766450127423668224 8549730032386914605544130859761664 9673979093628318248331319615422464 -264487711841975172837262654017896448 3606651795992239592308089003442176 3824495866264698646153712541630464 -202238205139454465766451192331763712 8147373316928856308468114975096832 5854963299172986813847307523457024 -598698561341398524550150087147257856 9912302445423592742557177148866560 689140473235136047661733606588416 -720228000487952123625497924691034112 70874025950011453852893744988160 9216376179648907076068638640308224 -617568530427579903588261235873808384 7705668139185335400190991044444160 6576425979061991103669915323727872 -521515826948066724230515712386400256 7750167779701984565525285479383040 3571410264919551582231866294403072 -378599050634987883242961483216191488 253849330874552382298289503993856 3360959777221583195314075237089280 -997491674376798655965564657607901184 7455500225962700185912874912186368 2030212678319956932993041880317952 -228315933321558225044612381356851200 3450756445589991582295282046468096 6642520804959055824696894099030016 -790929937563132947056908456318468096 8369060281272746680096506377142272 6218404770471962457462006838460416 -526688815932254528376609151444320256 9253024309625140807869774597980160 5836337403046496629281225713909760 -99622260911103534112650615020584960 429021456695900003569448804941824 3797448588609652773610815137775616 -637738604005404150783838483224985600 6517787094608544065572116002504704 2439140756301396685126157484425216 -289867865718967980371435854441218048 315491705785456433372267909480448 8288821670714354163986233158533120 -525663694451509976819206225884348416 6515275650437436158292287255740416 1001726097540558353984810832101376 -972184724261903144108932062808899584 9925460280039302507942277447417856 3999982935009606237994781717299200 -540773699056400978427024798652563456 3389965266621438830620636786720768 3583739447554172219353412285759488 -297289035125299246554977233748885504 1374749559860988724377593126584320 4428796453529341444166580069990400 -101029209424173364283111115438686208 9547314656820485645779827530137600 3876871731817922270427112097710080 -836731374358258791309556111076491264 7153637412135439179996998045532160 9363341215025079356676102871318528 -112304486339083421356073052085944320 7177869672899612994945755394342912 2767094794656760019731081018212352 -97527536420439940448720174094221312 8520501645591113906288795043495936 2872080784205712737163308552945664 -507344233966785859603508450530689024 5068395247962205944383632731799552 9497110826667979902730272556187648 -502034415114409331249353086392598528 6207761697267932765877900993888256 1253151966426071174726427147763712 -440041089133556781031969216536772608 4086276107315533104576361832382464 1214116560515330450719599897870336 -784627505585734269303713009487577088 6692410395246221042352228344528896 2438524036770762222485237804302336 -425070846508751376355571273104883712 4080772289584824276880181910568960 8742448749498019007875406440169472 -682404756593976962523413594708639744 9243891619529441766543631444869120 5958559300752531179386254374469632 -242596785161765886158000824839569408 4989407190958691937319680351404032 8522164893341854886949883712897024 -954422677699557788802878962996871168 1609715025579935120801917367746560 3490121919411292424434670542782464 -849432826858446503987209572064428032 1101080957356874016668236860358656 7605514019298921373793862608224256 -592161642237634197475573451123064832 7545360234139689954561046834315264 467785082667621182442463377227776 -831976727251493690909512975098314752 2618128390656060968982900950171648 9764279230689868179505167871246336 -664966001355652161410376703691194368 1994492466776158435684920246403072 6646009532142269960043145006678016 -770289670888731764423525977041141760 570929439311266208161581995393024 6252782958614406971236418232254464 -293934830383460305906490531785998336 9082484031564090733876290416279552 8101706800755543658147964489039872 -489866689806249484276547267036446720 8980486567146989816310539485184000 8531560647348467474485768393588736 -775107766210194073168983356031893504 811064804974401550929136199925760 3353276652411647093435704018993152 -802593408262547311686606245970575360 4641845104260174245349047656251392 1210494711023530957015556934336512 -534788873450626983877569693953818624 177328271817614035602272851853312 8541550234630574266908457520070656 -951869378738308002602518348528877568 3593149962731028139870182862487552 918796282220164526918644793344000 -978549603216721160324375626123313152 5298157786866811084386067929890816 543955064950460524271795534036992 -286002724013785105526515706697351168 2980846983529357334103142145458176 3727281152527383263400754776375296 -129045244318935972114600713848356864 1469609255458881567999959318396928 1213214999135175554016068004478976 -884902519730014102025531330807201792 8758494725320466546368462821785600 7747466084322065316559132555214848 -106421656033454279153890088059928576 4511870213308678010813360503783424 1898651698046231000321935749939200 -211129392030699809389237668029661184 1996577338219455750136291439673344 1577217760324299238691479721345024 -983091818255486397605660230661701632 1208733156238022390130958825160704 9729087303688943564681776335945728 -800876696760814469784499161588039680 5645997841441614925655755376820224 5392123662434012632813450230235136 -449567628179599665229770888316977152 5530736701232347797052690649841664 6602645874162086074398025621438464 -714264847937683682550855047311261696 8998355058216656081798019485270016 4684148782269490091611393626210304 -362591180756870623581947146679615488 6207010324987604309363510019620864 7139715680620901882408342365667328 -489305135968157963536010820819353600 301584551204477097318597401772032 2261566516597014853968914288738304 -478016994432948018178188870120636416 7211096425038568094280190856790016 8263861347653770355748088357847040 -120979453499265982749117674571169792 2595429429935474078826040003657728 4781678296135236607171398165594112 -784526892145724049762523697467359232 4133458592673807750378368157089792 4760197359398034576397884064792576 -494264171933182506994108741439193088 1893835151421225730772488371044352 6253250009470952151389627089944576 -271032938842435805810142422769860608 5991800614562979065809409755054080 9786410147215122651969312817938432 -263465775654857734144396971814682624 7261257297966094773114404996120576 2764417364020721231612460855721984 -289135907238990658473521731042541568 9510976110817633951815289242910720 4480082709312813343919870752849920 -945189306259489028983968696725667840 3936888434281795516421018409238528 405976822645360500164558057373696 -437420676665270581981891463540113408 7818134780173436277305220521787392 8683966289628045830565201696522240 -890914767128799120535474049514471424 9551108473350719764562574781186048 3282920211575616250275648067600384 -438010638818805071265835104090456064 2678122174580478459350933772959744 8830022108210123668780243652444160 -369456404286647156381441664896466944 5467726830110303108708338994511872 7283099708450765350642340033724416 -320018073601651857144476042107289600 6875273652742562857159512706514944 7275902506558544619536038573899776 -224750604461522168015058895804301312 60781968539213166982463404113920 2556709762046864712014345252372480 -743081400320028103869320876863258624 8171197014306775773924201861218304 634155825049852018131395458105344 -538692186833479683092882079755534336 844033869018886701131663901982720 8468840542535909636322637513752576 -45825945666696958236894224736845824 1082242649795746524848494888353792 2963071635542404016381593886130176 -776531433246808424593814740457750528 4610416653223350369969801615376384 2290113084881838179818165353054208 -395349653107937649872913119521538048 9256937896462574468939356695429120 6761496302149669383600293780914176 -181813203718706997234707113732734976 2256229810514034067859846908084224 7269308015235517787209560999591936 -196872836350557693787926304990953472 8698540130023978772735379921436672 8901973336082013469639189800681472 -401442010664809149474170212970397696 8643757229180166952062751040602112 4516133165294829531739074494201856 -37437814775212399156754917789532160 9774106368321029124187789172146176 142920200570341875611105614626816 -10146325280458114215487546039730176 8109786750274566249334913472921600 716793892263173755002188581568512 -426930064695722266620895640453906432 1990683684920320833174727424999424 9615450136666967102949706556243968 -68587927711907790733042472481456128 7698196091815264933415798989389824 8074101917320090434676808619130880 -932918326466709657111441438402412544 6750428610387712337294596012769280 2438069530451395076662306503917568 -810411195125720013220176349987078144 3206009725260975646629474529705984 5818225077839020116495208904916992 -770491366567174286353648078098006016 1589737530356783291985255414628352 4802766096929705181811755574099968 -865697138775308375435557221536104448 6412704339227372770220089337184256 4784495363892953016830766797029376 -884741666828998086348951628770443264 3971542691386048098123696551493632 253807776713603273622174669209600 -493381713558882143992760534097199104 37118782060407869565472688046080 7537712305286593959628057195053056 -15273647011716209836505565241540608 281401007407411503778593836630016 733713102981547439856163542269952 -143594995205127787851942741317517312 7461953356329016659768753900224512 1382922793653652899425456794632192 -122591148033387756448551199534219264 7665299261739326667232965478580224 7100234797636862715354617269452800 -271951338527800642803444740266131456 5259014272547753208309922989604864 6180373225647233249711036961914880 -524914267242305022591384254895095808 640556525297668316685105222385664 4895447248418612307892682807574528 -37700707761949428391621373882007552 68594671134721732002128441901056 7527949958074423979634536965210112 -881529359807878329084848780691374080 8763694500660456582854565919981568 5251121577767970880325296702095360 -565223791216465616117492143525724160 6938859791446000077093497789743104 7239031603511033695452984309186560 -490252043954693109468129574439092224 8556128110743353698334309944918016 8629374923233037677457851079983104 -996065187634049210190296190977835008 2466186901064617886083730051694592 8895381692328603586477360114827264 -742783209647099746088726413917028352 9633821437865518522019928501911552 8702025200725155372777968010002432 -481354089903163683225301604529864704 1220260777682170563425069017595904 7658930879198615780297914017906688 -631327926826390578576570739947732992 3508040519560406094699849377120256 9426791313332843073214176674447360 -232016961076566499105290830370308096 5199500301986272029680618535124992 2336155182065219959343382991470592 -671516181187550615353030407199129600 523322768281079053406915090448384 9673971023798826768524544055443456 -309455846601614864082181380397596672 5199865561197055011799199643598848 9261796801660325244135248979034112 -729156426675102106108128874354180096 9919486662183595028282305020952576 4369235362648955275485069944291328 -685144484805775683957072935302201344 207951944172767076398322598019072 7279573436643956768264514875424768 -882467978768157755948919730955354112 8299768824698244733245357255819264 4751922545823999035433093701828608 -450164544884579476221146750624202752 5290051501818384145184492154257408 4943424253623703408044555246764032 -632202254585517028653603336346402816 5190145225607139675445256557428736 5272271428870216830733946296729600 -519086268872795464967831639048585216 8934685657634753379515949585006592 5764499687027070300052657912414208 -432395308834043915120518457072812032 7809148725497313122840161210597376 55674467457493200514228829552640 -926650906483553508436625119485362176 4359268917980342195154422524280832 2506978344753494079111210245029888 -234508595776298921616387847984513024 1985614308643964339360051012567040 6638608367879710770174901490810880 -188850400996988865054474748769075200 412153966932979739672830367760384 5220386650186762062768689591091200 -858755541225172731905123606595633152 2357548029160952214414883190472704 6614023375575664613711062117646336 -991757276005303856779464006208323584 7671640691627935078608785180196864 4483703014549653273212185261113344 -525152820213791618612147072710737920 7733532566583981071735429504434176 7358452017511853792953763109011456 -526919230618416485860870614411116544 5125342584204187357560145635704832 2045263478404381207992236651839488 -117307165917229421309752893587324928 4892200425778616339306995290996736 3139546224611393452530189304070144 -203173466434727508711609011194036224 4601277346960985031998619661631488 4575743350582680293147383705894912 -255420032813790638241384701951475712 4596877765084165467306744768102400 1607233073069194403939528116011008 -234848953736501859395755939444293632 1635674375858704607380389937283072 7396319688098728505490807099228160 -582337536053350965023821406094229504 169885178815910387156765921771520 9058892919392436958184080400187392 -250905657611254730738705834302242816 7475616675167983529243374379859968 1593550423103550634437184757694464 -331868280248556777870850561287389184 5560333368283792273327620509138944 2695052962710425156498548534018048 -734128772598784376693575897531285504 5788302897415398535031377711071232 2750163469234812085804583431962624 -119799181544754594136302685492609024 8972799328393711833115344764928000 3786579865688812981353016702533632 -47753715191121771276419582455185408 4392139699565351060817521074503680 5256976736340158092796022468116480 -207326441666134545692557575637172224 4900145452375739688695368836448256 7204043064803504561930778808680448 -801959495943626267541721534791942144 6825753685863053980370344796487680 2179301569611993499966882187313152 -449807564086288616276647149152763904 3242154234591700987082776164433920 4734072722660143386278667231428608 -170178663198756905315941934390312960 6703135457694177874730267642429440 7621258629877432483576450471952384 -822018270912282441578568716489064448 164362232665673987364923560165376 3014888180637426859225907317440512 -14075708956270296412883736164564992 5183723541071074206574434997764096 7351016741033698581969935336996864 -430696110847115042003402533904580608 8844403717203856772153311896797184 2252468640170932806648421291130880 -997760867250077815626222265683673088 1912636755555497885990378870407168 4402608826985772740453481320546304 -464595148563562438015517248364478464 2753269672365463695131133289168896 6635745753289954453099548055175168 -385694653580700275071577272377933824 5418165117124136384271808995524608 1139169617267976837699808882851840 -205632253716253899042929806919335936 2555183466561992056018145338458112 6020045390822679074866730853466112 -64315773068009337098860147492519936 8109128246248131276120937971318784 499824877418634770463290724188160 -794106961307971359799853955854368768 7426113405158136654566248958394368 3442032303462497056934572664553472 -276578943968671902227208364772818944 618127353561275200239783710294016 8961162826413768671101091678519296 -969142154332536189466348482889515008 591343701684436493233501516070912 9493149787979203970123743690227712 -907513672783380780703029241642483712 4350085216092237351906864003022848 5295264922303059083871430178242560 -782183057565414965195701835188404224 3946321524100027607240753239031808 5310886081517042246725004316114944 -813936524034525738416085812893450240 3828849301053042957925757709451264 9588101739364902639047442538954752 -612909119291085855655872077322256384 9960801576466195198101149265690624 4700440313012367896496997650137088 -836958257323095433708913943312859136 7992457736343987955401204179140608 9440752988736523268650402448408576 -10925157597436640759851107227795456 9020391166131985338211684849811456 9571461563397791939710729255387136 -772171711814605302320759506611470336 2235081752316078092934678881239040 5467007307314338659660740314529792 -36401803708907892589479407034302464 5355531273712026671855099090829312 9898926941776639032458613429895168 -267731626577138629983091014884130816 2164653860400419295769725392388096 8659317450903533360665709013630976 -312129274542621976250779426787164160 5877508486433380405476775845429248 3241790993963445706236160771096576 -868374921783524452387117948741877760 1658073225499429994326729299066880 7589840233520101648733673311174656 -919966662958807009283928375395614720 1024922466550085288637549756022784 9423330628647797476164119595843584 -504503116659353362641395551085527040 7495076890787092000306446322368512 213569533166707205223309494976512 -706657674994172291203389924149559296 7246985567313875823780490893066240 1856691275630851649039371069292544 -146805303426507334326407515588263936 491045029373621050255364251975680 8189440243585571280058393775046656 -182993042610217964422436550753648640 9946674424261882924352164163747840 3645176920596837097379106601828352 -863754316899418948269966737962696704 1420697807851024672549410214772736 7067403794174779259718222871527424 -592417032123637199393508074723475456 3425376809114464558579234419769344 6759538223886761610785737322528768 -330976419044701490417129214948933632 5970499621049155176144416066764800 7028349577563099658076231294779392 -656158264492127002655033756227731456 1152682702513148303696787687866368 4222409907534853672747327564021760 -36762920282899939805312950546202624 1112794465812960605246650230767616 4105006461473126468082332094955520 -277374508159620257989916633384091648 1724993223423205465959189257912320 508779391171743629752206566096896 -620133408909519285023413097814032384 8108457800993366331916369117839360 6338589997742431151245433436635136 -724133062858694611774589057925906432 6558413813705590661176250817576960 4388626807387631161109068090703872 -996779151075830110425659444845084672 508115076994637337235536637591552 3073588700983102077162687087771648 -325051073499419278544988473716113408 6973782480568583876513816350031872 2044837685513075818536419937222656 -433180953241559237969916099288891392 9798070946223261772702856920432640 9049159686210028730973194186391552 -492038590208550479412775693922074624 764158010947327229577581931003904 5439288133794117683430385795465216 -16444726843221775247997239759470592 2037094027022619615163822326677504 2462743461302674315445560523358208 -247479850419220627879324344588959744 3535219065103526045790430451204096 5569905516490146521069192573091840 -741684327735206354346540187024097280 3209948729652789363547761251713024 7391238717544534055613909702803456 -623981409137796137089256310091808768 6398927533111232145532101964333056 7499519363872045532035117580550144 -912861793514561407475841706703716352 3533208559774530527279167901270016 8538841632993104514731048500723712 -630037872768927435037514687859130368 2543793475866643521414670428667904 5398865409351727350302960504537088 -97300373123410121168807985625956352 5824196693978462100463223358619648 1720874836071107962340098141323264 -795106823116669970909518946237415424 6460278212118057842347638479912960 5841510495906594626279971928145920 -138422911002629759479954470816710656 4369076210319904365007311585935360 9863061569998963371267803062468608 -277309728535056077348300327720321024 1408870219570357502897105271783424 6440572036320209215391729616683008 -896283237480704801683945537092452352 8624277160560433924715200057966592 8440205517740448731736024698322944 -436361543512753243030970656706527232 3857341004617086847875860802830336 978401788644966997789823498977280 -2250213897318351618637736120942592 687103351443091857459401732390912 1468445337882647363263539470925824 -251923940011258942665082794590339072 2843130408175967092942836162625536 272267658747458557829545491169280 -539226606720644469897201203913162752 6161867735265120500755944490139648 3289886358702680071248939971510272 -890947992409854275052104715941707776 6470156082056193790249508274176000 380142575444478642578934965731328 -940513558137115277131453941340438528 1436203864859418228477882003357696 5190160967716835644709503682740224 -125826115547252992394738145469399040 7560507750905753086415641677660160 9755183550978173913346050820669440 -140053790438714232480299478555820032 6938154160995833525234133442232320 4082524621730341192496080293462016 -859441728776094086175816736785301504 3132309563919038333224586080944128 4557962852457522401173178509426688 -178283186505159779778385514940334080 5255101167746918221356531456147456 739136107249920686466910459527168 -683445948993641198275662349317701632 4341310096060852291818813436985344 654246195084089655931965336977408 -751661389152200538751923063776870400 2886704870371396342087182069006336 6674391226935306965076311734747136 -329516008500808423759936906384637952 8364560779036943446791702517383168 7871314729059134874684255870386176 -791301454529142296525075233525202944 2029618640889100559747044698226688 834478411577369596291208062173184 -806589906055267987587570142789238784 2598113918781433964305999110078464 6976544838610300991725821474373632 -998864888934958034236179334698106880 1946721399634167760365284573052928 1966471533515129064073641712418816 -601737518578829416531860913706237952 5337169704817765706579608959188992 1013229765854589577421786940702720 -135624270904616593146596898971320320 5265489257630962039985248204226560 8601480901372237689405179307229184 -863813529817882989001970719276400640 609713718038797114139146127933440 4474323874529591926265277036101632 -31968998590519780321492141143490560 3168889813362158455195958155149312 9959065471519382184937014035480576 -762879125610872878701623439072952320 1427105604697903002007895745232896 1216438169497377999177365195849728 -527617006435245477370201728736034816 1963130580748140634615101899407360 9737065091640624589884415044222976 -575891177949958247823469807893741568 7676632802017382406031099780136960 1395358179677285874537161222520832 -23632979609810686314165758748262400 3121787269589364983845783959764992 6189697324418856867804335975694336 -242218892088487509403980962197405696 2759605924488165674462197619621888 1319009812239881839268441880526848 -619968382972699856500862661815173120 3066531443169708262047120650928128 3341596837098993834079091423182848 -828515431291708355353007432929378304 1129912124946713809986342124257280 8727992557868984248050887105183744 -117333857289805680288382279082835968 7328903328842314325704076758614016 2825739943669770870000024620630016 -424186179238033890542007168727515136 6809874884652766862807106142076928 3318647318615528480886696622161920 -808046996049580170488282447412723712 1036735106371412909524673781301248 7687162989648884907036950097035264 -932980361081185196014540207463333888 3706295402789443058968790873145344 6975490770143679025683765252849664 -237440776018198873732743253798682624 6094600800690076958967386693697536 8141891131289210795413470292475904 -463430368313662981049635515456815104 3844847006798499782122780447735808 5307580465897821407385324418498560 -426965752054924747197432595598016512 1204857712676417743468163439263744 3064155204302359174598842443104256 -522113108325730093496293529185419264 8765741623324798434836674733146112 7729222924112527048978572091850752 -959874536588885727112569361820286976 8745019755723420219373539232317440 1941386601622902920904146895765504 -377200028015753904882064800576700416 1228522087302452576472580839440384 3504512433326429961796618178002944 -206748717838204054773094643631390720 5001462760756661630382238966218752 8734693665548357936401054588469248 -702313503996871756632311780069081088 6638849047490757656162565374345216 7186186194191167179396727934287872 -373910576678407278730621831891386368 4275840323591294478414460085075968 9815054942704016096815598876491776 -838243423104362035261857901743964160 6965926699475843192125220156604416 8512816370164958179399112260059136 -322334940312266813317974813482942464 3291246242545633574725698344452096 2657236443502685400885963077451776 -621370617105632776977381012778516480 3460752087171474294627867998289920 8403152176955261032670981523505152 -314786573588967614387460282714685440 2404002172737381456539316761133056 3221047329952995601598881319616512 -692918411829263074609935888766992384 999321546002832742126661209686016 2783422414756208472085711210676224 -989334864638105610159243072580354048 5691173121845201131583895599316992 4510058514106991517600456808333312 -230318429709379203441092670997397504 2486637265004009689968032876593152 1575841133513516729874119084998656 -730111863229845155743210628269998080 2996730501991833243401383900610560 5065729294988365616188509759995904 -382776867655482001301303004758016000 1731585889557625095548170099752960 5159706609828624690995952428777472 -965160507234885611544947916820971520 3443183827005709720055769842319360 8608713586259768286804983446241280 -277708703944306129717453081525878784 6564257967338951384141102619557888 3883514815593138945026846560878592 -461831596520259537097360735580717056 8657145470758221500869070513242112 1409170978453033438662426452033536 -407311076318332137068529819938979840 1909000883288407043644378971111424 9983542749911983876577931594563584 -358995288665381529566952209254449152 3805603671869832357458284923322368 4503732253699348470080899261661184 -42273611772771401571043732661207040 2773385969618379038384935273496576 2791613409241098911743173084577792 -353928101354582360560435311568486400 5271210552447204380070184400977920 3166345213339618599588399534833664 -303810388148923971585782915348299776 8567023305883899943661227021959168 1143007617559561935484240860807168 -176799864886539040862267092525645824 5288501813466486876126241112457216 6392128964250441747970362653540352 -79402406994581061707434497042022400 4345188382535460391681784966807552 1015063846303729436560176692854784 -266420351702547168424772647298007040 7607589549882389500897751262560256 2200712028499996449176746241032192 -915471161051149168979635795637829632 8784311062929168370313104304635904 3768169323659338541956478036606976 -775537584252699121235376083520454656 6835369356214090963358991257698304 420185999430329715682142985388032 -580941493380950512488585232040067072 8770644276345472553371887078473728 4916397909658114612701599528648704 -330797999418606278646591622949634048 9883988967352719692457422918516736 4071874333707410204546158959788032 -706660994468685046911469692112601088 3783547462304545683730190116585472 1130105332631753365563093892988928 -639066187190731926051392205807943680 4277240757684651660914312041463808 7874494583036215513473670799425536 -737668888562226790829274698044407808 7012481661467603165769648620699648 3050973319859569327785612052267008 -798076862963959663006688104545255424 1282767132564693467604319945621504 5168157839125277737826097737760768 -187648583267839146874765140268417024 5062945355454378720604020264665088 416687868422852068090665328705536 -27362293454214441661684650141024256 6422611576501208901563671122018304 4096047753945978908768464646701056 -935316490904365847798392884402585600 8604960201760100022736170814275584 4789952888687646909505859594747904 -515126502007060025702312762914373632 585178917697309484264041811542016 969613677376538921340049232494592 -547173952993205311203170390831529984 4042900486584142249359476925661184 1447530128958338619737930800824320 -355610601822959598382813733174902784 62279449398437133181435816968192 3091198440135732545753634775760896 -910987401215273914231798936499126272 9312182750227715587417885867245568 579308136839462094720692865990656 -15385564245429442691743174069583872 5207493719932637211970776275615744 5807595855539236976563070500339712 -563180988020213054108775945938665472 6986442322056970823615003882422272 4898906196902986899399987754434560 -832089420606026176458427098088865792 1594527328485049119025792225902592 5122362468143290676900684793643008 -309250865643817925785600941612859392 4982458804523855245647115108483072 839497224365385904229359634350080 -866910043766661159082875401176875008 1162961112106215421549804842385408 9674135458299771871151295987449856 -171968383241015373493822976209977344 3734450368625053849690839539777536 8129672976754194071800172538494976 -799967598844209383947665684673069056 8674901288119747660901106067701760 678539998095942534021239093067776 -495701063512896611059619531761647616 7940222459619992385376747654217728 5663088314536002435823360714735616 -216226142715677799770364356465786880 1479957561115177711464431015165952 486940832167234386206827118329856 -359249673479031298795627834373046272 7154018471763738600025128555249664 9366134533808040696607154003509248 -369642450459268025986434903962550272 5859225677082194780851513189203968 1342202475616789644055673940475904 -885799106049100486743282236872720384 7326092292412881006556147911491584 3921567619534936499330068349190144 -933139016591009955936253743808380928 4648135551588280211300123263631360 7836917013343677650438427965915136 -486647701200663212900798355885522944 1000127366984189651675939426271232 7610426286404048121814647803215872 -936067406714775335748099642432159744 2373522016611770273893783057727488 3113951970829601889854895033417728 -900597144898798535977458693308416000 7324337144982065521951121411670016 8267387802093062090291301020860416 -818779563585873955807174912804651008 4630987030014444818043568845225984 4889332788427734308099423251464192 -713547037797612813928558944298467328 2781347438331007822565979247869952 140031700203462207023338049503232 -987644854634171276914268787049496576 6754964271049343456622057491529728 4694408886169303782505994872946688 -963654668049623595302968721686921216 2610233770938297318236199548092416 4665348888156398015045047116890112 -952970365260620214094412478358224896 2101936145696171754915072504233984 6148052308493169430504341558525952 -626450100252582134324444100066017280 8747929330970684286205140234403840 5556907904130876499639956462895104 -363193381540945080176163494232588288 7343680308882310464606242919677952 3548979243419262483380759089381376 -564482645828561476567466996857307136 8736563803069752368675959951327232 4615739083225097485667756037636096 -685031832706680473044334579212615680 6984806570355158990963708365111296 5533606291148914161735940844814336 -507323102095354430315870788740186112 2712753330512791556801598618337280 3088183277017954499154164374831104 -62476272991988548093527975520108544 5121477093968500565050232135483392 7658241890362706362044890684063744 -431931647800746362832957128382087168 9359347907779779462897571670786048 9604292130921449200836639746686976 -87518484676669313693151072207503360 2937595211711777957400061138698240 9066207157585466196024324872208384 -416869550025804730687977392363798528 1414265994909596437430333111009280 9514634873996477827303935741788160 -398745458952649314226011337849307136 3162384094820145776216148526759936 4728562459185600542759478878011392 -874008557498758312738276895772114944 7962058898688397804517851899363328 9777601071577122634461282996060160 -625450416335277964760815070640865280 2188115232072692172405518251327488 5200933663200407834580115416678400 -144116182734365666139098230565109760 6855949895143075471144791033511936 3173942991671712385442909626826752 -673952147415114350205449978758823936 9984499498388119787116031993970688 1123055374124570512967596452610048 -637028693683773716537576184422072320 8047961951439839522709133043171328 5860426916656196983514981665341440 -280458860918329408647847235807084544 5669664231597766183248179966771200 5391103546521592906355533980631040 -729114854247372588146966862730625024 9859734641611469086192485707808768 7092340652246667345583341203095552 -179005733715299993485407318880288768 5965075404058262384795255232790528 9626186957710768448309942487613440 -719125260067607444002071182718271488 2587474850614133592276244382089216 2877146645190960908230057393127424 -494011708478801465712194425026772992 1056070660955886462640969289302016 3641296171892247590896681739091968 -244802195927198832823020542192779264 18767568697960416897839640084480 4052423435977042991348507094286336 -920021795927176484842769652989820928 3034540340620260798051949712769024 8627179702173069204675858935054336 -452522822546898423999756642910470144 4014273375009190607962530063056896 1499193804754338356790586888945664 -338361972707350305834909079781244928 383777184390255108880777397403648 6040822445520037583588494481031168 -496993579038634921406068991136366592 8568840158276202576041122331623424 6869494286475782686890931905363968 -863484537911812879256008691917258752 9587430670882612978705085543481344 5703345410225390384718319980642304 -467451618644837400735229800760737792 427431038513526243257952707280896 9635824422866677551150416969859072 -272047526360149442396973955492610048 3312802131839718935743355275968512 7885148704068842329681716192477184 -278199915126549320052056919717707776 5638330814849104673247145351970816 702526175804922711075707674427392 -721436035143157715501459431915257856 4130090094707310451845636133224448 8023705207962571573196848675946496 -620357299812424301500271513852444672 7121366878889643382955022351335424 1453015129883282701781703600373760 -58872531227390803500308369976066048 7033699164372309400079977150414848 2398997698995031774815735636819968 -267307334145556041211860579323478016 198824956769338227916450044051456 55077966192454381311367466450944 -331199178814130516375789377146585088 7299778934907288407302978821685248 2358067651326926205965244215328768 -700405551494056589241180950311731200 8426700990466188675993236385300480 9848480484104015710025376237355008 -604791807119914472917972867509911552 355497422433906632134212148264960 4074795755090243185962682448609280 -568946225189887781333928878421311488 7116195603509127383699778372108288 5377371875874355710990058958880768 -996130443117314113826305130971004928 7098504730123161687138114211938304 367937304688102872120214591373312 -243145520079941817246368787131793408 7115408471956457800834349703102464 9161806198299833757581207217897472 -612814330344112763310923642424000512 7248303175467194294903494242467840 4605131773950023136975100011610112 -494535624923278203251101628461219840 6456719680911962299383824231956480 9849054998618473877570745184288768 -211335608247711557925263062532620288 4542259301793713196478964013465600 7160519899834751104733653441183744 -182641262465339736692907674381058048 3823491561531232127513674867802112 520574433014652278030550370877440 -365470170554922344961069847949606912 9033916443388393285361332125696 8082157172261632959098924109398016 -970313714467690025295111646470995968 9817010357633991571335467791024128 4491541592160847600180803072425984 -977312938659752763221577734851395584 6307229011218970191062066702319616 5512933752790478147677863339360256 -439934514869488162543494536957526016 6275151641164246859805787007483904 2107885214821940002832973442318336 -111550236179055400121897213476470784 4780653751613298194109668148641792 8401639440679548646595206611730432 -212108741667580154440650278234488832 758438295722774975454980941545472 6787525625269951924604915675037696 -59360195668526655376761516808208384 6351426095292042975602036237664256 7145449902261540469846892963954688 -962679816406056305710277675177738240 2237108375781178419556815774679040 6336296709139785188076345974849536 -993958221287642353428792683979079680 6388717208206640373522477202014208 4187798226972558252794455521230848 -701311604283131381238055283355287552 4934185691671431616056003968106496 1324428437049318137952407151181824 -252131501903371023566769650996871168 9461645474119501136092940969443328 17385022673906704055161164136448 -967512945368802466357571506499747840 1544237969222217907786988621135872 5399924104478402718023711599886336 -607537338819757693842656734713217024 658628611868504229092862898208768 1999767340520574943280937394241536 -725151011716230179703771975009697792 8799986563385781525874121260400640 4545898149007497830497417072476160 -211394615979641863894533075487424512 3649629500564274667392604324233216 1920358200168919998193305357647872 -60753059177187334015005438704091136 9773603180561535362436104078753792 1724430578015406736554190625046528 -734815415148090238070999722936500224 3002632475373989676448604441542656 6292393159973251483501749644296192 -447267237240957171900271726243610624 5853190776389579742486748918185984 1338535261925435556828854815293440 -195269515038505553392601549116538880 9115158189922323391281090718072832 9020661738005097105189298444959744 -960365888547097600576359001575391232 6378590671711075668427729390272512 8470297694166356468172737214414848 -981093290021870918664256115406012416 3661558831340120855250624137134080 2238521359068325547084348198486016 -802572517457748206910748952763564032 4967323651110696485706419851493376 5195751849655592360305459369869312 -734408618435938937941976470681288704 2398924218571435890866029389152256 6002770089882305645330163220611072 -521279943391397113087800296830140416 8295475397059858650170370195193856 8452975265198053420050721716305920 -276803867399329370673142847944785920 8454555327848613091293608426864640 1522015337253572429327361581776896 -174445650309333399196976571276591104 5074696359383477873421787689123840 8338881603954298992694701852721152 -762386545293464798401454497404551168 1195927703159279512920788519878656 6324044304250655660397191850098688 -870524090382495981763255130398916608 7501568520536968377580942620884992 5110603328367856100019101946085376 -720104341792328441407887384537726976 5007053981936883714760691765215232 849195944730501572673655982260224 -667649479730838924410408501778579456 2726641605323573047284216438456320 6573507110501277801232914911854592 -741855790354784683449839740396765184 7820242576261014494823767619928064 9220484804016599262034684073213952 -39381774074724731383070307171434496 9549655120997441467506822138036224 7269235982369921362519536791715840 -438586094554832331030985014786392064 109632890175575138911182848524288 8105440241662450822954485247115264 -43495079832426434102226488710397952 999684138828272293381784324800512 5997537972259920192578014213570560 -241256043223907174836114770819547136 451199347692514739952959369510912 9310495202396367083123171504685056 -27556722813867397313379526368034816 1238911701522780747866802864783360 1495424446361907503232850595938304 -365730844520020140055797546472177664 7266405674725832246002631726596096 2442395496818515268750794622500864 -626553509473467881050971331067117568 5412570653877425960519005114466304 3521661859061435547788907877761024 -20024951023644444412013723051360256 2511454059625401309144259783294976 1734295065272039554568592050618368 -149661239993858769343922730394714112 9426776398606034853138038882566144 472505747702899180224327794556928 -922305383681265237968736264319401984 1263008956481944271263542590570496 9463639564960694230525136131325952 -166513794826576508913588350316707840 7961737407219215971458199396024320 6088667025369939640729594656456704 -420547529299996190944702033045749760 2765874317600632195466174843060224 7000407776819140595204463563636736 -945777964298296171229801608797749248 1792674177031642548047280743645184 4588834833658173432741568687636480 -173105635422029653018373606753697792 5156739319238552097725468586803200 3242272560393313499715392103251968 -848755386397109022316637343908364288 4692001861640157544161865453535232 4232381427167584617880055778902016 -714866905185781667855870746039418880 3683259676712720347100648610725888 3864504700654971186120596889010176 -779038503680869800176351585652178944 6950014447666628008970631423983616 1292839791383757096985335735255040 -197160663746894710647222504442036224 3247473169221016721061283102720000 2757714053522133461738110402428928 -485999843433557446411461362869862400 785906392658579812040311287316480 4442685133598433977070991775367168 -892556841482964614330558171832123392 5373525193287193204782025515466752 7070129321412564339935759327821824 -54968578214999915666588487305396224 6407028717172035096236548316725248 1445892125286731831576548647895040 -885798219512395882555771898338213888 1531228162328676314173943515709440 6636554477096334045010304090243072 -816006311050645817934080586110992384 2275279210777092369229033297149952 1937249337553021010125782754787328 -997947100974119592127308261612322816 2401421819547325045561270558785536 6821743247257877109100553644802048 -271687718650768177883416671171903488 9028897289225334933089609131753472 93781505183520602851188374765568 -419556210629674923233715882926538752 9331124129622181858896420798464000 1111156009336661814115074532442112 -51465228448769067205775820868026368 4758331021153808678917325759447040 690346655739566497230946241085440 -427632460571652483524950441592881152 3161590063114749396428885420146688 438354377505816645610214835355648 -230107911795693459026749648581689344 5326307828242456179565448413577216 28338716046180475641551959097344 -596941811553265642827404532053442560 8972956118242155456998228172472320 3875225552462623582071568979722240 -256137117748505869640714356067926016 139768227981824504239196144140288 5795793468447934517213911096229888 -251781166344252857058745306207748096 7586784454135073673011060249985024 7979378764073142097909005932298240 -337634074247542717411948218795687936 8882032843533840634534807149215744 8629096447296654800798089383772160 -773481456687878728170903645953458176 514294035709423694923650761228288 6922773764276006856969784613928960 -275452848210309157021235929168216064 4588190900460468823663078652510208 7323201121004045437961165648953344 -999481680477029714361411462464798720 9910642487285720341242898842386432 3989612886751432142960977252450304 -332139329765603571111953017977438208 9690594696290200575969702260506624 9794214181328907250470017680015360 -836654510213965560621276833351991296 8581666343941452359351940490985472 6336865418004198567359511588241408 -704314080100491434154156196018257920 5794835316907769263626134019375104 9042060725335729335990353089527808 -449434861091588241295748188396847104 5367998222181551589242465498955776 4539635031962099489510002551422976 -543698362092593220189063038894080000 2307765701428750245397979430125568 1812204700077116090469715453935616 -410538619102325945252325127503216640 7057843843555110743148179845283840 7490935193451080356917993959063552 -419332330766800173953201317875810304 1887284206818175097104986619772928 6072762539485479937228386517123072 -971491211501641955036298066006114304 7210577720847617241974247392280576 7006270793356435661123667628130304 -623631214049710758551602063246098432 1768186704216832128288434715361280 584911508059987940915958511566848 -408531518750253653075095489431470080 1042448372799718285873238979379200 4540559714432872973221848967806976 -659862610646580494671202095932112896 6807232694467533397927478341664768 16455705834054483066236182724608 -971129593619009090402482005397733376 3475958341661357428730753747779584 8551769134372344410553487019999232 -576023473944735511291204506149191680 4046199502902961303477134978711552 2746031321570604861741713860853760 -169609144056592065665328460542771200 6124147576631288280641364278902784 1275676563895086986248486867959808 -505758378319017631325772843946344448 1347571659068270488005972364099584 9807829888655135761033237893218304 -883786330259982450896255411483049984 3700543356043933167294789680365568 5655097480091868049376149948596224 -871898166477032269007880746822533120 8072626108545273215166498383855616 9247305404917209918014820999757824 -606426593685101896167246428486238208 9468023644219907345328425719037952 5732337739569572509776076452397056 -970505761949674409380957782477373440 9898557554808660646053774236844032 9004163808685402676313586143330304 -336764326062212082048166600476983296 7095170832513679331362064845242368 6889104192291859168405143750180864 -139948358958024086299112006364430336 1010484368749914420690437957222400 4010034632511510644153381235458048 -169102546675479491464348828302311424 926646372830285817748733485383680 5925531520507104899014052921999360 -171141226211128800277873328075571200 1369522831868897077023386724466688 3517963231824145665218413426900992 -973930465768567709947750085459705856 3762620404192255307783819675828224 5846679494742023935995484756246528 -555129498736452417764680224357744640 6774471350629002310477904026271744 1277426723901506845926337288339456 -194516811905036494735145300750499840 349398026069793791982611455803392 4772092831264227785485416023457792 -115202339916663248634800025288835072 868363196467604105700032974422016 924532560832474199130795218567168 -592486940641417423047812663742562304 4467264711696894594107244028100608 2418288824221236655694432589316096 -860090601740774929204546520028807168 3501067822283521074260063142543360 5471582572623650766817788596060160 -989969375186451368606361949988454400 5083220057484154115913193416032256 1781948188899637371430829387939840 -896231844180202164132756705849114624 9622070235885881195362766150434816 5533960447275693997803376323067904 -482287603285614770137175732583923712 4484086390560393264837007098511360 307753241927171821985788967518208 -439275799561845529636657934196801536 6456555932602973715776813324566528 4585854450477483069071338378362880 -778878409570495675598823176154382336 7544387031338397737886918870302720 4382833157330591538974627530276864 -706431189051978144712762541201162240 1056253860059603007328761545752576 3237907452944647001398551011917824 -458078838247464102023467832388354048 2941852767962809372565025501216768 3009333768738262117103760230580224 -608245987662101267237460768316194816 1823639313524656245803455191449600 9986903420593495967740655285829632 -917064008670724335646981339574435840 2634692565661774197335528528936960 8572278357307808776443712061308928 -350399609537146136518932747996102656 2709533003063591988379725267468288 360500398019464617365753047285760 -976328526080485007126478534744211456 972506552701729853490837296513024 822267339827561668843627643666432 -213033926148342233962028628210352128 3496674755219794493327085041352704 2716728418156348179674223727345664 -621281322334431518959011991996334080 5361033401340235244231976627994624 4888423794259464873659645839802368 -879446485815007011131999146022535168 4791326270379527496421901409976320 860359952572400073492619757355008 -201375630187204825709449874243584000 9487442979504383769171920211148800 7965313639205516099912112885727232 -315467989874661025977389249808302080 1347833866364394657913190194610176 7420955420418771987864127946096640 -14934529060611511043218932571832320 7428772840266473010548892764209152 7588518862874557536419700707164160 -494553420599891697546977274232832000 6237573850450082605218710633316352 6457022311081412441115201919516672 -494724916499820385367545967628255232 4239697275632420102577642010574848 3927862064190747444532629030830080 -455681408675190013909539631189196800 9384373842537418278723505218387968 7329534803438364956271946856660992 -859089564638479590832701198626193408 506996640233597438333398858858496 2983270677300461410924206405713920 -818571421564646067946246898469306368 6420875945881965322296465834377216 1190569018034742820781061228724224 -24457226158248346745285220795154432 5167310688057011657650708947140608 3062652616350686784030179315417088 -40654799365979438052752399345385472 1106552352974489816756708351934464 2416371303917758631588092666970112 -572288158325772364900665731816882176 1055326845788338974377799034339328 4386161447340564398024106973331456 -682841190285703259404062751992053760 9941670122390578760194512914481152 3074228165577946143850105996836864 -619974826860413882832791642738524160 3680945035348457353026409422913536 5557870872672606394369571932864512 -851141798942696678755814981163286528 7470492725865933016569963979210752 2387938281217927511984877709819904 -72964156816429692913406442345594880 6257653594780299825161656411881472 6896520730190746755179970612428800 -59826300839922386423658523779923968 5796615955618837988556165628297216 5074763495416813919125755968618496 -214965640366908164100795218981289984 1211006343190711080100804920606720 8541820626923616752478027501273088 -825202493195465513787585913914654720 3378752632594820023530501452070912 1759929554638060585053375004934144 -937240629652129269643221388295667712 4075114787381856906699473206378496 4854560042808060408553836388548608 -749708441841148522688353220578770944 8695108978440856035094671506014208 3756086517223209908283158149726208 -390147633653622226781197682486542336 2912768505206023720717297286905856 8468243657535436025681616291495936 -531655439033567225675161361860001792 3343143175926003438744418503360512 1078036287969605649037402233110528 -897002660742839344628124008428077056 5256399699683700586506591196413952 4384396380316360514457796727537664 -941675370699955646399092189835558912 9549120886561178848755681113145344 9226410854853538210762885443878912 -343646080114499737762128393725280256 6993526127264156648328760496488448 3770365890923731719960129454473216 -465892552365497142774126211720282112 5372665456240196591818587668217856 2798014238470192975048508656582656 -856259854480357307370539216351002624 8630086753830119254867617347796992 3885079656559739372361352015249408 -341044651196717755375856584841232384 8665970263930626041842079096635392 7186050942789239915184736861945856 -858369015153011773461566485579169792 9345023157514062627357101052133376 3119385944700075427876551438368768 -213167684203733087644088514419621888 5414300684606185248053634975924224 4027549231521778615209108244004864 -175531620215602685655579610773979136 1870092044879816261988437322629120 6719051415136013484787055921725440 -189014679343456042335114593180844032 326446980197632160822406510804992 3123258479331831812391002362085376 -668087928477414661015234700088705024 1641402474130709748125036108054528 2412890895213365090083677749116928 -650897809925106244110734634092855296 4931315159204552395711324759261184 7152442939076273810575959137452032 -47712969639415167746408978445238272 3074260863968072593243170580463616 2779427624616180615109524280311808 -10311548893920290025500016826646528 871934829421554851995171162161152 8390346412262755653276729071370240 -161404004245235399023329459348439040 5805584894353134575517953983250432 8373963172181314583910330736312320 -181342435547833456533433442243706880 7463156476347032663057677493993472 4250770412280078993321121527365632 -98550142757438276667828198749241344 325423279924844927507892214431744 3080560306809718383239433805627392 -940113843257276190576387191967055872 6145362526713875412432922035093504 9796621922730126312844082752258048 -634056828017995262404401795491168256 367288405588879348465344494698496 4516101578273649025967905667284992 -815841656991465073437111968153468928 9535658004040003904234865184210944 8141311571042536966641187217735680 -270511182063852664611155376135471104 7890655080726494542646840848809984 8704276529908540572359597429358592 -923806982660151407399551333044322304 2426569758111492637286911944163328 7447479431635457204896358641696768 -677081736818824279747885989439209472 3905116678500452830924206654881792 6566664528301966687878888181202944 -775177857979124167265305654766600192 1427215877536290275639009990410240 680048353308518202847916428623872 -821097311923050468035548683813519360 3688044934116454810669515106418688 1690666674801316848362967860772864 -38897483858640512034407460118724608 667702209736854886669773917126656 8416852191512059330790151661027328 -853081071622407261843681177635913728 6129263930431419053247938275835904 5099964092830134723851275374428160 -706355700028060426768761730545745920 9425922425767525918293014442147840 3322829994431345369275484281503744 -75459635614703686758962385517543424 2011201871085005778243491857432576 9459374752449206138232823263264768 -835657393270679105645598673335222272 277001979688858696094935255351296 4295170714223712096036485211357184 -701810250015531911132880700625125376 5062181694995230295783296632619008 5021022483767418675563956099088384 -698305892721876407373583771657830400 4304992822988923043836713947365376 9903619556604721773740814724235264 -973808144612698145303073825205780480 1725587354498611100018838557687808 8257293379149242934299027990118400 -332103707731774417941221699194191872 5944701948293850674236236526256128 3042195112766477799157251778281472 -256501356585563613913127367838007296 4713371593750097944933422380089344 4598727690444789862952056221859840 -914828623243236453374744950996992000 2546920015482728139121275575468032 6416016257795297202352845731397632 -968004839586156370696007063246471168 1593040758920106263621920452771840 5202872103379489701147338594058240 -299795220867855456550784823266902016 1865616870352324139491614500323328 9906013978288872391413125827526656 -441928196531956902472261324989530112 1530935090988270474657923382378496 2014208689544473168801046582001664 -211908279403153077936168344875958272 8121771765445052111443186879037440 1639041093130564242924878287601664 -166680267499291295523751956957888512 2513497131310833947382626432057344 8518261686611528418072842238689280 -60531344660480844130704432442638336 4098423441707473812929177750339584 2263176821512544427196338514427904 -691858515746092365234126329307201536 9818802228410342071759399293026304 3215694376752633107318442242867200 -7697798994983903893006774697984000 3445811366531514200651933123870720 3732090211108867253210810175979520 -201224390212420664954565208139890688 5669032850646264813493961986408448 5934915994902056624005083035598848 -275481704624117660333426690721054720 7478176110086636443543605560213504 8000033237834616135434466416918528 -38771283799198757557301483529043968 9694515906257258717201980712812544 3992964980991566669626732579913728 -729301146091832713876631221147009024 4770754881968862377672321412366336 2824139975815591609499035161853952 -355626696972075335197384787772833792 821599100444423379883892968259584 1450342634468646955574833098784768 -680106279039516650156650588654272512 9715572018676971167342018072412160 4974374705724760251592735870418944 -302155686261339157840715937921105920 6812015119719704781084199764361216 6777487892235518254327782740852736 -912376162998715453026612414303436800 3732201371242160784615395049865216 1389655806072796904899998805655552 -5198227056449456840892843235999744 3682284370841588745387668362231808 4544128248115464794366251477499904 -802134677675691113923827299021488128 7882209577249188816852424427831296 3086594940382542044436437823127552 -443323927437013350244175454194892800 1626995442925982660593227267047424 3200819814258965681834439882047488 -429063753239984143225003708682076160 7319796458506893088351840527974400 6718314381901351078026483091898368 -781927237521095372895369443999219712 2657142503717203891245878148595712 1091913967756481729635897898434560 -996966953441295673354682410379247616 7766494213258401517728948379713536 5761672897726501935889143551754240 -680929793017384331750151514822279168 1356310058806535555953966425571328 2694253521456056877363358127357952 -458474072303907619379865381140168704 9828318042815037831687583811239936 5808667268678335377271968805945344 -303887672936183591550004986478854144 7555977074616105018294705070276608 4953177321336274216637596828696576 -741695835030503244009209048529371136 397223822846460630720496686596096 9087871301135410552940378030342144 -798239988096890167802489403464482816 375292076265271854021287994195968 3134259285313982561041236665303040 -196957886775371883923710771210485760 5290468636989402995555223463788544 5178665019229391168315091482312704 -52949657580542004729972558407925760 6639666069857279747965172704083968 5496994901384478227794469935120384 -374156827041807772228888974113898496 6926620413130641493253288752054272 5115389081622038148987575160799232 -446000460615845066580110943457378304 3767374806864934805442451206045696 6663621222412370660674742888955904 -340038646532555045807961690368638976 66881151590725189871394497757184 36652257734427282383607047389184 -640825641358971553226651882533945344 1508211840948513695466894372372480 6020578216090083456132002812526592 -12700145800792945101362417100652544 9349579018126815217813808518004736 169597071928811270308339893927936 -531867686615089606962240655384903680 1078435776011624580755855618605056 5237443622083426243693637072322560 -121337224988545382897371022069071872 9470347251865806230490428947300352 7456771206595149687468944632315904 -259196397006586184900712725093548032 6532007954815273534579518711267328 2843512198490192283509584604168192 -679259897232234347571758514955091968 8044316440513006046230172688973824 8609146274647185968411846322946048 -768491692790172602285174129321574400 4266841234632375175116461189365760 759450874441093845224294228951040 -571213509543383305776783621074452480 5296053682597998617878781189160960 3102096522683250198762912221233152 -847380778168653285917262550621224960 9328647918192852340479333006049280 3138170145854052120934178336276480 -339724803128601684574705785233211392 3009929043466928904426687389761536 6094633350180249855501849988169728 -264064905396265925912897306729906176 4273154067864548723533434977255424 9091971342956899738737776531603456 -795333827697681738398745838191902720 9297347709498617811779651972890624 8409265264562225417964006726959104 -965502639793178082043642594088452096 1259861555298074262128723402686464 6868957783203463771740824957616128 -1162384282337774777953903085355008 5010937707192366494007509565571072 6256001229091934446078375225196544 -426867693473834511082236719564587008 2701230734882181527245170162008064 4451073770638694771274302252646400 -115633896067287412460353383701676032 9829054896469628651197103813427200 8573869254474362656370442366877696 -183583400101455141929543439631777792 4193238916759073936867986019188736 6903855413931810113353792245202944 -676229251566315456485741663759630336 4476056717491238217874700337414144 5304127745188067157985033646505984 -497733764284438465859008422087753728 1831188873982754350335555348201472 2954063905729462397191150389690368 -736875928765657803230183161856000000 9390996047878587932775770201522176 6737741822352049503227359896010752 -880877147583436052212967167643090944 6612503324731676811244893334667264 2431032392758422094915373939818496 -64187179015801141543367444438974464 8201364091086573537013690410205184 3940148888252622864238106269188096 -906118164090099252816811474729041920 1689274310537449992748386857517056 1869783073372520152768665557663744 -9115930150777075727621307492204544 2932996294124672759164186759528448 8716726434557911184476172829327360 -959537421272596387471613818038124544 8594171143991720441760115400376320 3684371663073313526848840630534144 -347836298316627108600312274769412096 5130203767395236041427035514470400 7107782199769715989881411363405824 -666276757126230291428625239657938944 9905218987166900373923673661243392 9155644008576380151028140734414848 -27594521233895118581842420774731776 8322533788560346744515751617495040 3900614890562325331032906095656960 -237666567115120470216397188390453248 8426155523964645434669700074176512 9114205342076928751962727081050112 -245997711154475403945988000183222272 5943816429875714884999319365091328 5522750545651264727561559982735360 -512557953017702496471406962936905728 3166282642606103345542736872734720 8298542221221071032681083520942080 -974904795548114027414309042764382208 9597140716957559395226557750444032 2707752815709002750251928077205504 -61347016940326329896285474631188480 2414214190796889084007844709138432 5330317307431055683750793595322368 -853167973170973915068250419556777984 6609782655937010023548471377657856 1065405007800923908035582317559808 -596227144071381216415552472023564288 9448915458686649954659993749815296 5734021221003959372726426593656832 -170165361215185614492153542262915072 4787993798805167313093985761755136 1202536432174397064502309168349184 -902963379424908434460185695667355648 5587220907167205412858349215547392 6928222863133479389632587783733248 -821524541216413162280118543538192384 9634439317915680666959776059490304 4877734484979026037803974882492416 -308881525368943357780316715139203072 5975007661337193887481246861230080 6463096279129707230530670168113152 -97531749636612426095490144141312000 1897973764747944199917222613745664 2814529093390203308425100698583040 -620581457087225011500296516780687360 9845802014220702664056587962810368 4632696186965770148649636743610368 -855762152634947940724075736774737920 7403812170255394593308990230233088 6199662335343320264849845966077952 -162791131131488439794947833378897920 7987728167991506806162251097047040 2218675051902552058971152380329984 -747996922873065206625684707533127680 631796370591886884439688302559232 7878939446229479342510820049289216 -108601517134621624693816644390092800 6357226602456051938731453075947520 7603455251601960922441313215840256 -499973430243347900921691469072302080 7341604237954430688730641369923584 4681966919315732726456849182752768 -200581084419035192761572155411398656 6427381685946855576318199935795200 1682583549232650726749836113084416 -747093721835148772815689132384714752 7390724847221411779412069284052992 1656078393210873206526082423980032 -680854201857603533822775054288551936 1658222587216371423516334326022144 8335387155608348870549372663758848 -123745125798225012906681134303150080 2183937199783192620657690118455296 5281266139818410981697182293295104 -778865781266944528587625410297069568 296417683066588381915688950824960 9218021216955142362870586766524416 -840225199068887218838056849708679168 6440212793019656607953590083911680 1504375354231772577659936600752128 -381319517419161048793227445978267648 7996728983837869834843682483732480 594851003128911912041559797792768 -633258062743506256937343565208485888 6829842530955990759302945549844480 8666406039379753650753765501829120 -288607212629267079702879531354292224 2548729023723779611556264837906432 5730772711313874713735771369504768 -830042693415689073099545687810375680 6429679989601602048625511504019456 5643609317447856858354726884868096 -730272301617782001207556048987095040 5781990179350651246009228210470912 5986712165122503507313271293083648 -902274427383586098196576439682203648 7521710025084075307961449470492672 1406943174170364487651817859055616 -361828726986144636405464316860432384 7120855357233277752682383818096640 9823495624523145270770773994242048 -258980695914341337264219633949343744 4746701480686823194463039456804864 3084812189444395780960036077961216 -122219259189740184123404447024939008 1702435751036404912089603713794048 3283105762398502158728481493483520 -823868535748067780900078714563330048 996189713453413415367843342450688 7496998262570732151028876251758592 -92107082818629552503851356155543552 2545972369978532242338064128540672 9124877624403481829195890110234624 -914311373203184778573207678912299008 6511311916131413582440817198366720 4772162062658377434773489786552320 -686926368365091342320342904692801536 8383476261892846588444943061090304 3586763957636608059506181462294528 -274550875836524825206435359552962560 5260104235372822671660458950262784 4050324170232672741024983219699712 -843674246272910890808108482805366784 4028810960282332532539054660517888 9960926585899535511835385649954816 -733771018439682112167332868714921984 7582366692493865295930991744909312 9775619379425563857032841869131776 -746518081307708357420973164668649472 7754195206871907414795652343791616 1539636523388285341061987983949824 -80945350829666188180176618681008128 1033339310406522186863346242813952 8890152003203670517498630528565248 -993415745160830992055602320360079360 1356732707932514065776863237636096 336905900986194168939487114035200 -919935916781140255269701949360963584 3754605002547721444074470659588096 3791638459652165399541078648946688 -834670636234104450007060669731438592 5437757110295617736408596696006656 3637855360126505508772216850874368 -920164866486421203464409495214489600 7501974652373357625464354378874880 7107910271689470749895936788398080 -350380271278921164811455117945470976 2451001891877953610788927755517952 9500659822016120514112672470401024 -843086242899007041301009045909405696 6909704392275760105993724634333184 8985424739947915541821127705755648 -74585647993128782614186556458532864 1870328492327681712967861829369856 6346358990904157513634798093991936 -607694125875652762819854808127635456 9042896939086210334396214495150080 3471895535902111896810370103246848 -634605735612486433492937644286410752 498483696818219810796807267549184 6747732321504352269840531104727040 -707857579644075612898714637993771008 3762345727533038660075395823435776 6966965365074233981224774061260800 -618384543759785091154520035855171584 1508823861697422782427015382302720 6135534779669039815817433354076160 -399152006318145995274365954890399744 7408170024496020014638083617062912 2066977104753835823942737370021888 -219493876372202462055030845459136512 16244691358620970600583445610496 3362309862743401724278309629460480 -617250855345119058509921384960884736 7196484562639060859188678368428032 8209541848737502834727950527496192 -796244351794802193635739577027133440 9217028729125343131701057215791104 5335893701424188761509063724892160 -248905620541573437816069575793442816 2842594982540063369186334149181440 5492704886235412764915864325586944 -30267253254562115320761030971228160 2510243970385403864453255666860032 1061136830502483697480020613136384 -33245484902387835900003045284511744 1137224904820306242197823078531072 8676015893319305040346613331001344 -952871124485913798763743226860929024 9907734566804227161101498079772672 8648617377780554441698380324274176 -625313494151512330621624468323172352 3070139805574018451026525877698560 6508139419768363510125645086588928 -229840866473209869396149584531554304 3968849865590803914517320873017344 3532533474045859234887221894971392 -295291309697770057426028371650805760 2854420699533956909333334888284160 8653006191158221436120442272219136 -806616849999702179880912596278181888 9285006445892951227855676888842240 7132954898928210474932687622635520 -115820939337174875536860100014637056 390731528427505381525777874419712 6091800462086338049291818805231616 -198411424348302203660559535306702848 9503587210158606166757871538143232 3365209495426188597975435968512000 -14690675145048925043580955921481728 289460003318301445831407767126016 7356480099106139120699329902280704 -745706390372234230320825966264320000 7757691630910617485398643180568576 4337287369276854875781937324097536 -990240000225456557339381330996101120 8273475642568480429939908879056896 1405404938905374520948171795857408 -89930200749487623038024502231433216 4380568666487330753978867889733632 5374522453624591860799782676070400 -839881951327292331404560140423135232 5662753266910069591914608672636928 9400468954208884061322636792168448 -812541378328988071799167241768927232 7162785910357682746530446614462464 3633648893894377593432826372423680 -627219162612250951529463086881701888 4092267915697068472375866258620416 8710869008753861103860521732407296 -128184597016102076003979761836621824 2420241694038120826762910593187840 5198530926089849629132183759224832 -749432996771587280195839079500218368 5559246002774809434632475318943744 8805959858866286418792356620795904 -342215633032371745494083170918727680 4192308175332314351931096777621504 5749804257240158930833588193591296 -980806170660971978980897706938990592 9802383445421569745210375466385408 4451287192088703412227023480815616 -754900167484256968868555721537486848 8357518050610726344432345440845824 1948147140771092379398676687093760 -910559205794599522496084081016569856 2641306513884354426414466020147200 5815501596811469207027755025170432 -185689976164978696631097153764196352 6668666086743730528120349464199168 3536832033351986764391037613899776 -11650284666824277157791723635605504 3500717933656652041829969186258944 608327560026673529992813092012032 -936410523645364306389652671289098240 3529796855933723032883401550987264 6410987674313847489463892460961792 -941371457509593389129489733233147904 548425813920848335325306745257984 8741552324442215594800661129068544 -868773912838011777352481599140134912 220931057444859677541362978258944 6387326547859129025578890076094464 -710942518051915962368475355773140992 5083147343083212506440078790230016 840951751052043244825653599535104 -616052187334434238219864239660597248 6955533241484378819684843000954880 4019774286862464323691769034178560 -318188853841736207671135101498949632 2423424258894513139128343891804160 1526973272462989626909129829253120 -640854896945558033781122469529124864 4307797200361921160603795319685120 6502043550905010800814051595124736 -136844864237728986620619562254598144 581370329235394974361703338213376 9184925299818249018330694958448640 -108514445059875083675420376153718784 3133025394896235301878667493244928 8392030174630790298668035565682688 -252438625227428347318730426001915904 5885100296401622327241046732308480 1947847593006736507279829645656064 -479692618255546740295856609785020416 6770944119405614055172623684337664 5939712329366292145155312657104896 -854378630465544009800935341807370240 6769494230140450489043055663906816 8567171884711921434029718864134144 -91416538820495450050652563776208896 3257351223395836166911608634736640 8596083518813606090541577447407616 -176558279672751783011693769846161408 3247116721287087182735672357158912 4527024106749317343476580024844288 -194643147220431844860125337683492864 4097547832121288499823710553767936 3867863940644748617677031648264192 -955388364515258832029634835630784512 7723198337510168917481033243295744 3156683864122850361905174722641920 -94230050618571378962277964303040512 3676429666678291431712007085096960 5718338797423531778991888890068992 -495375973825786477216927013576638464 307608853820776025576033296056320 8465175594628201145271578089488384 -281734027630492480118936415202443264 1910949695865568591567139060580352 2203811305454418308420550701088768 -732082451641504075191064207103623168 8948346047625195189928933590040576 7287062015117465408262608139583488 -692038912396803314581126660145283072 6261308966992697773192084415578112 8802776365273434485504552739012608 -533160421897531202447604365343588352 2565413515485932348942880243449856 1272472268646469178924146771361792 -117982831010345764560712509702537216 1819283973717007840528191149047808 4423644619786314676023847284637696 -531761430713448254883660182126067712 2985782209011293143346008702320640 3298114630691369545544949718581248 -215575320631392671634382723215261696 993253985309230458530012267020288 6719294840963101124749464168300544 -326751987964019187578900030527897600 9682909968917485738070992993910784 4037911486227494219875929074696192 -321509145517525973262202403733635072 2352755538467851597274116016570368 7321389418749945073990918062735360 -907718555135454032876534904043601920 5707381114432579888220870576963584 1379284815264310530665517630357504 -225501286249994863182439414321119232 3509647313841440120567877395808256 8457046595195682636415954623397888 -211958017876542385765952631039066112 7009476556081727995238724866670592 5773592330431839029210061001981952 -64026037502569147131883092527022080 7880125571577921626284480148799488 2815672656010537918193123157082112 -539137393224989707039664419704406016 8253278300070161444224116595884032 2412888844346519873327320717590528 -774147653770743452742167782624329728 6870734694759036224108989457104896 3732023096598408206088014066089984 -346938023280204802404398507331944448 425518718947045823270162324783104 7347390524292613732258408241823744 -797794645984230883783222864832888832 191084151953323364545065339846656 4518327079987730640120881363288064 -750230080998890868435991307801853952 4005650508758330007213471650807808 4453386367240938848954991431909376 -332528960160781116205007144235302912 219722360507453076609449454469120 9012154858046335712797942668591104 -730779819120885617939571600500195328 1481562969198445752784294705627136 8849965333160484887811440691380224 -120320637900959892927127241885745152 8655211334863991602160309750464512 6575362580496978161340586496360448 -157966002277846188885585709901021184 549403433122007286395980772016128 1804735845622953953774099270467584 -794844188991937586617707399301038080 7515891981301879477840483402645504 8551214238023036649378852024352768 -7606167276366631196456973980663808 8202994245950316101611258998947840 2221235317256504287373827571187712 -933723368937808219262926716374351872 8681628651497829959421682807472128 3950065504775433439928249690882048 -754530463306830669650084451319808000 9409185746431375531046107067973632 6341213231379183318200066070544384 -695583060315144083659448772989026304 7865586095099327401791914348904448 310520016368755743651934192533504 -930986740604078451739694185381363712 2080392298983989389543774781177856 2487341431029911118223193621397504 -39792715147536091040662198971006976 8854909052200685770645952668893184 8699112116291606401257484941524992 -72256994425155042779729303661707264 7724974068627537611212918232186880 2781099606865493172476709668126720 -441939022172147433379707734309470208 1689613888126472818534461613277184 4486408599798875294107488862863360 -610734095550651496583265788939468800 6730034190253730703289954812821504 4022855483801871778802334416502784 -504736266390641306207396871777812480 7789337981157548697629199427436544 5050252711169875834623273035890688 -204878173167597471383579451350581248 8955516385853248489749243284684800 1141070233494018694075014675693568 -879339658208948927415501667054911488 1414634298136332467387631891644416 6697410945386740370452505637683200 -413614796155348877585064806901088256 4551626572707117411128511138103296 9199075124965101516197460858372096 -539561986849081817706319666577670144 9953218608454922448679291066515456 3896980551788756850844741249531904 -203264482898679151766594329751060480 914535215334637852624660375535616 2731854215291625324666814388502528 -58340772779956002644781689506627584 6992724971331994362231990127689728 6951999222223281344241979348746240 -87024765250698825017967239978024960 2661363565353353616520022457319424 6418583803984997553682137791594496 -747700590833780295950382440038531072 8344434998129067628469357603979264 3606080474393689754842295928094720 -12211079104401715264961866891264000 4167539567904801532606332874522624 7121667381413963270309031694041088 -673710372194834735179442524604334080 1268938778968346438229478764183552 7965412271667897261330941765222400 -417256759742948377920438376270397440 8032276572831393348948365357875200 5166211574713623381724705511702528 -48468949162343921471133347689267200 4731062066534366239152952475385856 5170286575007137891755512786059264 -766154630120031202023255955352846336 2035524171003919255151845069291520 7009843692684112060146921808855040 -280372364222815386498479184463003648 9567902353708765659181920783695872 9681810367432675081739377336909824 -334241023072945938786495448460820480 5959778360930779596396563110297600 6509344116325653855122115010756608 -975651463786932985673434223775580160 3965645060677887448782136764530688 6274707286221333580247311381954560 -349543855420651664506362565157191680 8804722342646618505797071561293824 5166692031222758180095564441452544 -853568080018636185155810457594888192 764178040475612384659531425120256 2879556170339231792580086181396480 -670007912434359989174639889718706176 9471697999004292138518145214185472 434215963677846992975389660282880 -361511146834591671772343957438070784 3633381705278682513694170651033600 2516379301101305697412623267528704 -981975330818148317454075048289632256 4308937674472335776857232412508160 2275874384152184978974689992900608 -433607835497351755209047427304652800 4472565772070758438094772857995264 706243338914330853894345577201664 -418813184062871054750752368798728192 1740675622428345072658972418244608 676528502670253199300147869122560 -774766455922717640828781556739866624 9897859332571321077241465091915776 8613866181368835401114271881363456 -418601541145596575775407752047755264 5312006765591262956654410644586496 3555337496106397655554031651651584 -417467402642689157943690039677419520 7713878239118661267092801677426688 5896067548983057019518008684445696 -862019875046446013264765939007619072 8112277659909703839086420458209280 1337751436851898776502877313564672 -97178505585921224891087218085462016 6280598041352058878466305095106560 5970274978295301529606124120047616 -57802495299147788679737861369495552 4561498274782651525508728052776960 862014306163176992952860106817536 -630939259798516795240694172509798400 5811127420279376520998218406821888 4266581445072266042613581301678080 -583161836117000089187488664135925760 4799242844563558201473379724165120 7966001241843658957156219587919872 -448207913426331072388118890133061632 3305634671861396007794126580875264 6934671207178348680278327613718528 -536234916668041770246563168105005056 3652776984631255726280865696710656 8191841844751894401928170525687808 -481551141902181233967440264331001856 2137056417462107112065502220910592 3752745415556265908353383985577984 -553142905806314826854328919784423424 6562223031499854458196927545606144 5064707059139841993268724269842432 -812480181790825031844128360144830464 9202483575977981595467537738366976 9385103599592945049715616392413184 -546338663968140949429641781832581120 7557227645037249768146299774828544 206258843997314880631462279774208 -903662803634027789042349729042661376 2808842816398941283626512000483328 4594198520020958552201966261370880 -53733316218223215957667398350274560 4595790333558336378511550501093376 9302849625262438146112213821161472 -421255069554120018755465837396623360 9385393570057792050643396842225664 5354900113782152846574219257970688 -358729681798770745200660017282285568 8281177212658397528512670336024576 4883504766744330763293375768559616 -542665205842390690563892578931965952 363248954307517856351545345441792 8926807582834282577883088581296128 -420897889089310373178963455964610560 3040385166631725669988612563795968 7536482640927201546880544225099776 -962148646832955805763068695184146432 7464532077724391266460166931873792 7399968379731816558402224672210944 -16803213717570727883161404419604480 3278571369714795740875511558045696 3763366667775933994346334425972736 -699358926874114452557952900541710336 3661761026829673156381124040065024 8576888884590802052499420267675648 -309094868813715704917430365321166848 1425211032009796404524179555090432 1833110408480200135734140390604800 -969101233809702360551345836276056064 3376003563590055624470807971889152 7904603321245680033986488366530560 -163433147380316078432522292435091456 1001892001122379626222040821792768 2689350575292084105043832293294080 -321475268796770729560418252652281856 2589296042628017561143704251531264 4535818806556709570548918506225664 -643157410594928180416346248001355776 6054616099009992379647936954368000 9971673833148609611464841220849664 -766496645057482803283625378370813952 7061597900432886614953317346836480 4885254126995567469763788730793984 -606548578073299760835101244690268160 486848413665621845365428779483136 7281270044401490424460645396119552 -886347329228477400236116343963779072 2536423995322225951275958686187520 9409757768035733681118818840084480 -736280813344034880283247895841341440 2774838147638280741858343884161024 7330071521627484827302208777224192 -773099234157591277993421530546044928 6062550292695319560292525924155392 3151840572053519808834536818606080 -87704544954264004686110197175812096 4105808383427942163964565630484480 5306850824009720895788037531762688 -770597623543883545119699902819991552 2313146861445289852507221047377920 5915097724129626238516402478645248 -209939497184994094665390701236191232 8467091940598301134643693220790272 4215829644746680847320255970672640 -855979987173014444768940117494595584 1512082881924103905723479633166336 9653412356452996247677445945163776 -866513441489861064426658365932830720 7065524429356780112555710265425920 2560923404708751837254609790828544 -736058901150685519748883861859205120 9379436687460889812481912940265472 3192258405768475198647584748994560 -891286026307871039995154504920072192 4492320515745508343828431763406848 6977263002836203619860363473846272 -414825892193194047575756646343770112 5112680337189436820858729599598592 1771586030890883168952747655430144 -512785576223259963224405554069766144 5455934443891300040521213439639552 913051571565807626676961944797184 -19486622322436765934304310302081024 5388660408060585151203862332309504 1129165040084974827520029670506496 -608150748626886937279345861618302976 5825351694423641288097782831251456 158317856027122273802527117934592 -622101502267616562426859541204303872 9688495226390468445517361801330688 1153347658388243881326954795761664 -755556946557525243826194292651589632 3573371238298455967722777618677760 451687252407817008063844139925504 -934405668535002920806321589223161856 5528057178287909276107308894519296 7915978820942994230529071496822784 -879237922990553103079914456383225856 7479610367752918965567100135931904 964403595655315021252894071455744 -572120483064321041302789722887684096 4936365738593822237823578744553472 1264155245399642838093017399689216 -814629986344518861150469422084784128 3167542782617730320439522912894976 6653170087467241001181928929361920 -663366845874448197429378375972028416 1620038747169563528586343886094336 8884011682010959332969931033542656 -109947602651997169586896748645711872 641158446873118642411988303478784 1955778985220614606679458956967936 -611828562124782129873849743793192960 8902434228233193816856759023697920 4849621114745918619626866479202304 -220613144859986888100559782689112064 1560393255414062346760497842356224 3506910480812502962683902079008768 -142337796540957389497384727190962176 7691338185130208314753725639950336 8183670474536978651391616564068352 -417896901407959032762812565471363072 73578240419519368361500536209408 2036570581004187660632478942494720 -215831914036523631622970394330267648 8440471943385903119525056536903680 3703459522882575543736674939830272 -53979068337926492346434242664726528 8476859410320970948794010436632576 2460270861861415674886644008222720 -523228838657365831979977588044988416 5545724020317262054289937365204992 2944789441709717326439372571017216 -81793837247367393525124927009587200 4789508367978511530440499600031744 9173849968060402403978531575955456 -317607554902491086155631750721568768 2530344883240553752661768978563072 1208484237978851656951993018089472 -620823093521411793815453663628361728 6578754061415575390433915942469632 1012946158250466407254701193035776 -825946398323887218113105729375174656 4402641279778981928956196303142912 1509047773765350081965937093771264 -608488245480840909787105955479027712 5901440956888694093482551987404800 3932915885646504473097729491337216 -417191714966232527112776067225485312 9266139039720115419660239488679936 1378753566536182508720425063677952 -736429533730125488108672644752080896 2506642445169386940131475084804096 8869324194676461159897950844878848 -930015319925977494242723354160136192 2619142463030546157125267976355840 9605518607021546923584236665438208 -903955742128208205665038381359300608 9414559151284598734253306480164864 339933666948968989132280437932032 -842166755630414938854930259996835840 3604381826530747940028513702117376 3937878611833981917508544413827072 -105226326207463059806489715939475456 3422596045630119175808294626263040 442350965206747253458414698758144 -982943864474864744522050634755604480 535055339139847432355303070367744 1330510045093501054262460255567872 -707595167570858886512267045642436608 3568586825143872611843532805636096 2024299698550757891392286352211968 -150396373947177163181335640476221440 316088527821496331605094244024320 6325751121692461922120823411310592 -337310469166302271143786323476742144 9935616771761365049830432460242944 1543394718784693098831336592900096 -756794378345417605086098214667419648 307048612335139927498645611479040 4036882663444206503886271450972160 -625368207696659735409548715372838912 9924286511938940889793095276691456 3274299862810144230494753676853248 -894915917956035042667757300520845312 3916947366052478781612059200061440 3235165317825136692724468971208704 -931838526101172008903623050574954496 4496496469540460532797428279017472 238395404580548920069533743448064 -221675414845739419144008118877290496 5114241524726410124882402305114112 7990870574041953823648078570192896 -473353966624766206748255969695760384 2403201727572467999952684235882496 6340118634185034671716088435179520 -29155857290078507616546600632975360 1105982875035010742197804515459072 8278361621690583069918526563155968 -954022463966149464236379587106308096 4918406910569505745894786482569216 6780667336297674787076496267673600 -415399815472831821353390954183131136 9689449620095022274454581747384320 3111658602396259035920085429518336 -934516047182439471668765175245176832 9184118114162003987505553038376960 843497546930838421978985332211712 -982152530525329911955122140448030720 159265332712685550999633068556288 4839389275970100780824113138630656 -53489312781473593536190639624945664 5220177560649310706231043032088576 6803887388265112703085324751863808 -386795126679273513708417756369518592 1749770198480119176650940512993280 2870969206155844470594254309163008 -122321986290323455724869281617281024 1338480777887676294012984669241344 2023427039335975788851132406693888 -705267342419171447753601953166262272 795861345851141485938779237646336 2431388553653879856280230523043840 -731245583079662071610809188909842432 6754765742803267766546558795907072 4873811931859956485646628744593408 -874019967873271582217855213787676672 1550734652413335727743145848340480 7481959251762268982252448893632512 -256741749640772405826331110367297536 4125868693829694204867490105786368 6674450029071772295180831181242368 -388645491805722309945081584368484352 6703220070433680549458166945939456 8037364239382951562696776000471040 -495242422946805466970353621916450816 5048518046072035634572944589455360 2733943153131883992232173651361792 -383625035100884066908377367833477120 3138528283890483067500596073332736 9103499584576160198564211733823488 -83556497409290866111322493984702464 7604838285767436225307869309829120 7487025763602744880170588916678656 -658284273584523963061511447098949632 2223728799632437632442209266565120 7361496234747371624985992410169344 -172432573648225029497976403531923456 9084280258828286505750051130703872 8019556605973206313615694629961728 -815478507727510112994417592284217344 5577052951596796204633874684182528 924466990576975436995667943227392 -409075691424810849731990571196612608 1942188571124099144989215863865344 775261965541100066125363596492800 -766106457383381738898256412069068800 9394390396285479916753356079497216 6452231683966060536716120603754496 -180890926044578163170884217772965888 7998996535563346449718919842234368 7800347802571915346661972981579776 -690890891316013162211885369943654400 5156442754129913492890812292268032 771137818637125642163757376339968 -797854529357512196815630808666603520 6155005089804995785934686656659456 5660149500934309897463774343856128 -928189585416870831246194792602796032 2978380757710260735365130265559040 5924473078686371420716893621714944 -762841780199353569702196768973783040 4206162150638402452592330713071616 1477031342649458471086429980065792 -702922292974767984506550456831442944 6157075861694715705316773069848576 7627132752551143413382639450587136 -349184868152469997287247661938769920 3532022459001379112844023862132736 3377150646158111332375289367887872 -20944826120048119631696812360859648 2841929742678909020661628314583040 1923941438162147632186814841749504 -730369997981260240008155787398479872 9606247528985160740394244008574976 1715265915558893376293940999749632 -740116695932492102074325467609956352 8102252350140196508073062226198528 9304637468030967938735217924112384 -513391375738972833101410222255112192 2355895181435993349362182170607616 8496520734635976646704202585735168 -962061301021098869895344315739144192 798136586723088831076762027819008 1325767588305764879443705745899520 -21014849338401678156947465785311232 97532243216522971560173914554368 5035019213937006018394938232799232 -562060511568353443081893387163402240 721313559113367217309691297136640 8196880849782001499624426704994304 -889372819171236370486312047663382528 7771623811601518060811966327291904 520655218849284704287192258707456 -283101329054853479366084233149808640 6633919995976248539652277961490432 3121801369142939784841683374440448 -915476837868198566921767448362352640 340598170019372635849848038359040 2843767940123804631874185459662848 -734529395325256959235066513762287616 8696768798440211653458677697871872 994277661006727615139544920227840 -19491849966052909193464790653075456 7605291938524427289124868500488192 4230990596397240412653685980528640 -271823367240149146222215280029859840 6642233355032011275494621561487360 945963686290138236686822277120000 -823089613105388340111031550856921088 4902276302088878303414974557454336 8861074666623114327503271559692288 -268261370739855624484842791124336640 5304023574195435467775523204104192 9969102328020349249652767032606720 -180488091661680891018091741759668224 1784082311359380054074228515799040 5328961967365046549811920973594624 -859158391093047682632401244722823168 3295310219585842982392586737549312 5026454061424756480605455944515584 -268657499308090293012775831097835520 346776955258913202246558091837440 8023971395720134481550277714378752 -714846344248635475186328505981861888 5296278277805470871523109248172032 5092695855878036445143584802340864 -2739064672081478690001436727574528 5533805817200709305360826939473920 6379762906317919247874718783504384 -512615861211567399847668808532623360 2720341137048504793024962773385216 569261844229916956636677358485504 -234119629096178938466122963957579776 7185345568697430276427812807114752 7771548917352451163987859648544768 -530288996690511574442218666376298496 8123119884587336242726822354092032 1427982849131184278387716154982400 -131807804624727911371410308948033536 2495468133998668014123238910066688 2605478477918298844968258105245696 -261862057464839435870919883212455936 5660542495686115005732324244455424 597480455383045835250124527239168 -76646033094502093548229181132767232 6529774670310173658732402376179712 5503844864168908125335178096672768 -827741572361547894414444737939374080 2924238096641189156358919739670528 4158928830171367695092915139248128 -663860583545403802350924817095458816 4511385652013437755250939013365760 4991687802990470248262153619374080 -536725648011832426069638941197205504 5256876195806064155263401554083840 1741491754447548477082645987065856 -775241170327995556146728698021675008 1726122964371198321723796308885504 4336593528102652024218725755387904 -728530851232956653231253241360023552 4990408382606947593106616599183360 28184221057299965407025717837824 -567773782818300599132659307966889984 2618687873828069402700775249936384 9785977481798795493917897768566784 -561120289306296143013305567026348032 7077681942752878274347337202532352 9026032482577804186702163417759744 -252869107289927184528121426113200128 8953641649299504242969998392295424 3952139491103940417353341055533056 -712344835000658884554303175129038848 8299253001809438700028590985052160 7713240599712423826682127197405184 -857343534214662754495165237724971008 9820172153118935669263944267071488 2919254877359295045799059161874432 -830534566467790423669645832794144768 7286478115249211395924265111912448 9053997952465819122693517292339200 -569219962366736435891768388040523776 1499855843990559746702474657923072 3281155626588007582061014565257216 -245688605590723251752160854141829120 4695208820221706352744200411283456 510166712755806533169396194476032 -16270429032530334260853087655690240 1513990737544337207227076596203520 494457956698387165140882907201536 -495135283573403009555652623908995072 368645518640501444801624558010368 5615110260926397194931545401458688 -892912015782819421578237249975222272 9809108862338792569466200315133952 7894858260398167749396764855107584 -298690178160448911283518450396299264 4577082484972862523215665344544768 4971755550694620597325824593494016 -688987250330158123857830993320738816 7866499806519787357348951771578368 1127658772524186692592334865956864 -343160909651857676582843252001996800 9416621552492506197354070864297984 7257486111332643422522580383301632 -609877777094954606877314576809984000 7271853350600596476974645068693504 5402946890725808127089639872790528 -784080297908868696443968870435258368 2951993853764226290292582002982912 9282713780517831133745882175897600 -609844900231473578786362086851084288 5570838927354663839972447926353920 3595212631058729285981716713832448 -282007507790535753090433398282911744 8890641510481751161341883157839872 3772365517242762048886414591918080 -896295004857750977612716360532492288 2423165853927969357160183947591680 8577576872568578146445712311713792 -228147321378070495014672824092590080 9476120017383969937641207639310336 893358982604821992124704972865536 -158641497149718816202695108963860480 6048182381049262356868650189717504 4429351399029230944018247186382848 -984509019324326114518898637350633472 1255533102125681794082265890816000 6297586371349569103394933043101696 -860475671112078058371153528621105152 8065445936659354419283057956618240 8630589481075895952770302474190848 -208907785825487742781469360992026624 2086274918268378975468576919519232 7003530067405781860553197742981120 -953484759874697798818192002492923904 3032730138127154061623879419297792 1260307716959130031333798647431168 -717274148265614561615289790440144896 6452525284889441831556276761395200 6376134241160704208670163724140544 -691026709516765613445045019585019904 1567327660515162926437451090100224 1109800201047908681950950535987200 -902830611261829398986596823636901888 2793726664028231343747431906934784 5692209380469017688412706859646976 -213477600853594377621581391535800320 9366555630970034581139515938701312 3311932482908359128812628180205568 -318035052412949318352518901804302336 6134398970607821840629137171021824 6220311924482187100575616871694336 -12177968684179457359200870356484096 2146828665797198616201587945635840 2890270863441522237899180154552320 -254043557206472970011013207520444416 9306707754831683383694302130470912 296726384401677513828099661234176 -956435105376037667170019610376273920 1332608649221204790213630710775808 1053605270228703394545813543714816 -129983774333518085971933315085631488 9768508230121818037307494193168384 4692263993762196734000764052045824 -948459889517036641908940862297997312 478077214183655718101535443386368 188427481531493772664755693027328 -40053329002339635759929838048116736 5113156219241513250524517363613696 6814178941047588963879318104047616 -263267261130030919539950948865540096 796402434341960151388304953049088 6710455151534349185681136858169344 -959046794824676046389606330799226880 2950095253068299561468690717212672 2097518577448887046903610650656768 -319697377316920506752205095060897792 2986750175738859612251583626084352 9582949954772457609581741874348032 -359703843346949012684263514695532544 9264282326321779498034335510953984 6017601847103361430214769926733824 -4660725696460260373538589464592384 5301363904251622656036125095755776 8738343816949094878763630578368512 -570748044161785292806415587467067392 4495450790226117033164283882504192 1612096875099205846351852479709184 -664907273490719340226934798064549888 4744606890753088084495242576789504 2959965410888874832013119555895296 -705794613303451218083889707804000256 1386413367548350947860000452640768 1900160375634007526508093241294848 -612556914973102066151028418563538944 4212990848200937414987603788169216 8686634691018018077635609542787072 -647586957889360934188681599857459200 5334576005731147618165591432495104 6056295386670342776358750665048064 -680798245543350482352851021446774784 114376697824348271922571221401600 6437701711061104593011706276347904 -398783152171870590398603302986055680 2970604974906622501212104851193856 584454754427439263489818282164224 -261652945641484303095408620159893504 4887548620611706331525414853279744 4043466082363344189328788809580544 -856182631648591251867035789984530432 4586391213160571038698972599287808 79585408623529853292533604417536 -896598891828041516311698834425118720 6447321682644581978944480475086848 7631860205624134306239383112515584 -221826542109826127728084343823794176 9295826465850787405603549361471488 5501447644065724603018260439367680 -306465056580818301627298171628552192 6631597496646879997972569688899584 4457303684286280347500775315865600 -786358868725890361444964641575796736 4830011230452720866076083714260992 4702445695830863004390710910648320 -848486148898513489157503630878703616 3958588711682276890021213126000640 1555858629343090692282040048418816 -458525884722696506330131834146390016 2670618253150756574534947183788032 6566099649394836995478759646691328 -321166041006971071663280280947392512 6711683500369431468834928273129472 7859889338251586370619215859154944 -778930375490223394347162777509953536 5776765998075852400810985558900736 3272202199628554445573824761036800 -199724740963010718522585986338127872 7254173125889742298286805139587072 9978105035072163425328735014879232 -422205713983318799141657046845227008 2755080782072153918591530451337216 501304611399484418762229933932544 -557282277107092701406925872473047040 9950326554407792533008241085382656 48427076655127732511742911053824 -117817110533190105465118024286601216 4233558523269958631223246651916288 8366683162819517692790256644915200 -948724903834497402699408400594239488 8895704849324997111360808156135424 2019472943689694117750365893951488 -365872129441145243229207688996978688 1998153165654420980304723337805824 3344561522663955750621694604083200 -939678961037056267650598936053284864 2232818592415176982829501335470080 8662852707462440961955126491217920 -485336304565219661032734305896366080 1814058119205971233821030006915072 9488475228590845051866641564958720 -173469781173378881659371915053105152 6654766397235181804135435032592384 4744942936184737499649620500807680 -720757415248211732094964233299558400 1922703685502800611808698032979968 3283227035519106317011076006281216 -462846531075543535157071537107894272 7250046536674462832273473371373568 1037893683467932597581985855045632 -765254663446005813528367629317701632 4616862240290740407350210997518336 730655280438699596486376022867968 -276424365039062239681475719903313920 6332662193838556685551462978158592 9610797032842013782840430733295616 -459545672588886621718701356414402560 4600956302191667892740037149720576 7163085929397193893558503555989504 -80899398029464087393620712855961600 5375455726350591243831261307863040 5116835378817808354748204295651328 -767298227583035858650148937855401984 5212115846150080066555732224376832 2000437632218772406316868986470400 -931858365668038000943268008527134720 2732383767812425638008292940709888 5346658119870494297147491726917632 -392882556549711114903513988566351872 7338691528099076454621757558489088 5817131415486157967757161179119616 -542720485106744019743579731002392576 6716899481385250138573879264673792 2878572212852639375684075247370240 -341089144536054247948819567835348992 7983439793794361012847420358262784 3104729123359323056416987839201280 -210393988480282389347869664569458688 9503471863960297915343230910595072 139708549311893415250026706239488 -791495217573989625222900270705410048 1909414671986950947458025602940928 5777464645490178511921687918804992 -468258765421418739903654688372817920 3128166672330969408230419624624128 479788610739135645934560863059968 -786954383785486898388673760807878656 1355769275824653524671280061612032 3914749219196397967604269864452096 -43119176973929534231190555194294272 5956459640511288962392275002851328 9847026583697295371057145470517248 -613493461367985420592999077714591744 3740603394016336273620508572909568 5324058467042806299908238448001024 -69815794568764617982255192210407424 262631232838824541501570557149184 3192173866754843402552976716333056 -822810830765941477300212926810947584 6560869814422362515016515751772160 4936985139927851550122261943943168 -625680082660955917728927326111006720 1617422280047646177261507758260224 1729237091483798269991350507143168 -855775616864676216030248456171814912 8385834448372885147164713687187456 3307344935525053065481678112161792 -498185295257882097468244319684001792 1802731360860803314714066571755520 383547204209101392881473871151104 -216585628532492809842096182581526528 6837746339581217038472312766070784 9005896439782662459260950666018816 -916396423277318608055962540626149376 2506031598753856464366331169341440 229593747916812006998541957332992 -123816870869588259954054659055812608 6337701000818130221094342657835008 8447225082030292241118406381666304 -759396719554780236582518169601572864 9406007849676594018733534721605632 9336785960685293219195612584476672 -830217396994241340229643177576890368 5277673768173126740708213076787200 1627546509318007887806329790660608 -633835163341684338341072931783704576 5437541984929253587784881590501376 5810488984170369365791886131855360 -202089061495066387470528393504620544 2737074795339792655988600302731264 5186011443095835911647281469718528 -407916003562573947294924285937713152 2475433938104692200300850775588864 7877038344914426814759524787814400 -753644076798434359759709866037346304 501638564522733812859470113406976 9208535914987623482234300817997824 -548345783640266172306985011713671168 8818494133710656315503825614012416 5789689730858040066849271648878592 -859222063974591371823317666897068032 3012075415716350045372230049726464 3221521643174821165168860340420608 -868767073757271585295408223544672256 2850696131264136374800926052974592 231432477997096403860623733030912 -791863307409607784040510820062330880 5181120528752329653296161821294592 1638319493444251047499259313127424 -675906502196500742860650488983977984 4509564598138069992872998955122688 2794352084324906630866157483065344 -147324399375232528925278520853135360 5946086658747976168217174243016704 9070529161961612795103063123689472 -294292812274352660810089995807227904 508204253429761826932960046088192 3875395995164775583767024900243456 -933118863106664440906249217433927680 9847556174607238347324317755244544 1426765136761561200612511076843520 -736527466105416665257839296285507584 3227485674573780755439119868362752 9954046799922295666015350013558784 -780152749406635851085505021645684736 5043799310631350077617023779602432 6396195312928497172200396152635392 -400274928127847974438401438841307136 9930199353569621130830945628192768 4592938989423004499855790691057664 -449324788996416751905175604702478336 8545961152978665096580727419437056 4116485677754180726657104268492800 -734593441159506796417178336411779072 3346594900434239156839142412779520 7563403272697611949553288405319680 -225263592520073430558536337962565632 4604240399283050178128433255546880 2675477130720803762556484123099136 -920198799032782940137156368649945088 3795402036969842334175127668785152 5687137875099318279937514899767296 -671028445901026431599808214479142912 9952779982383769784453135916335104 3192816978674486851036540592717824 -112828611644909773122545803610554368 4498565333358465370222713443975168 2900447274181055009711110980894720 -595163163127972819946968575104778240 7935219279879073240592330549886976 2098208983162679042945369092653056 -506593764264865982217273470626037760 1431843835427283177490089445949440 5041375567709665991501184308871168 -878701374102513886777924616680636416 2992591070439466331497562783088640 8313320960432829277142201944506368 -768719035663536578562969111160160256 4699008417826694966911387238924288 2300166050361669016833513324806144 -801178597656334595874593507976937472 4321977831089247462164516367761408 4672275189695479533221071651078144 -706217180672404064701786475603165184 4615680041596542636187574771646464 9171006821131639712328481052295168 -473984541834061187703073784966676480 3698371751925029569884026094747648 1810847587025493922075841352695808 -300747651705305568765956200905834496 6286368785235281590048526484635648 7217484335152290538765154221293568 -443953016500175284649938004457029632 1605212173819241629030804180959232 9386335135239109650816552807694336 -345370056859954294595423572603174912 9561125592018486226545663811780608 1566340744948141517522380104138752 -255981297429794140898340095974703104 5110737526708658465715251841073152 5073406638723547222682441401499648 -339518443070677680271128480542883840 2697103837105553573920288213565440 8695922246024178267161056382025728 -188045046758546187459202983691026432 7177773375290134956486693817942016 752506786186283541623324756934656 -212684087757853608460334151235534848 7760768993236129342928768573898752 3648632416754536610172317617618944 -58705265568875574311915192900911104 9762651597968126106573166214119424 9984653746175882807770730712793088 -302236241757783865156144949069086720 4222853233991931193746221162299392 8278433131078029474956093314564096 -979809166123446933443259694783135744 9819166396170858645357950098472960 2342911737699557673325486139244544 -740531305667522060246425772331368448 477479248494354126173475964977152 9883917083387077397086752303218688 -858493516064959581527026962932957184 5242808593290402881894552359141376 3053953993131144474482811959508992 -478897861315632417765138232229494784 7844702534556431774057863762149376 1971884625899140846099356291432448 -98681466029821337314352761866813440 7555217798272507757941175208640512 8643476244915634800863847781498880 -462015280905396463770625221016420352 875140280533086269193215088263168 9801076002458557510399757767409664 -317958909799195919209350788083089408 6398144116348421143076390693765120 2270880941372167910452031460999168 -990539632724137483329370657617084416 3166905774148042224699878768902144 6905123880131283751777537227751424 -701232210280245788550305674006888448 2021917509790022085290230280093696 2317277322059408097934746759200768 -925045671787319002611123470496432128 4626660649231776294716897444757504 8345740734123313367155399051968512 -214878239659836045664584320151453696 8014642963431756115562597315510272 6673962848937568992842599054180352 -773327099199912416704069484561825792 2348700435668929453894783930990592 747035926256469641336984388501504 -989204486327781490321343282652643328 9993855796647011280749206498705408 4131321941967237987476218922926080 -414818316867068024886349265702486016 5499259103585067178276783331999744 5184103616707507119561860387438592 -980926800179238461326599408595238912 9125439608194614332458911475433472 5521876566255560584729281572110336 -842460070912376792487930889903276032 5666182118977017422303147323293696 4749682341247495709866038992568320 -251243750399821561291084454258802688 1235394167266955883570161405394944 6089837074023831920693161125478400 -394449234500471622057565386247766016 4606353092202891080476045495762944 6989526917671848834717029953961984 -568104650383255082852458892776964096 7244588859927400363060930786885632 1330275099010828135456400516055040 -968233505284428465459513483941904384 1644524847600458892693074803163136 6166837863560594880856117619982336 -31226072619315508331857137211801600 1015441584034844923484926661099520 4795224236379516306832986933821440 -1809642440014965455081811384205312 9703069518142877992186012927787008 7423541887820225421410817634467840 -232225472985557109893000726233219072 9135027126984880800506713781305344 2303467740774858003845316551376896 -434086570352302379773197034088038400 5111858622146014500816626015797248 7559872837796879747181607624114176 -193525680016004306859036996746084352 5696556168410578245608013991772160 2656371396656088702756167098564608 -241460915611017918926795344019718144 2870181855029760291769010846957568 4491486073532425990212167724433408 -652589955524997825778094027611045888 1451999775717019865656162751873024 9009147855350181653757794537439232 -336019313115702127158428139740200960 2841168613519001546856998679609344 2093843550286397240050951651328000 -907479691166755000899247920193208320 8626602400001016631776469518909440 546897481382981391468799016828928 -252070805598781244830379335487586304 6847943558081340975877270299213824 844259222539986294876332175130624 -487116851194653287288606581980135424 9593551202039130256909754274152448 4190874270721350145198781592764416 -276139873532607151974661390593949696 3043139015853112969508271241035776 969515218389403479155030385229824 -312416446198988088831775978951802880 7059006591454579976769282418671616 4717172915190117566648202414784512 -439952711259142956162686502895091712 8596361724577781989893978089062400 7693488395045940076958556786524160 -918275113598464254606979506431328256 9503303961714626171092891445755904 2874815649250915151583616719388672 -702427742227827428276490937795870720 3985192219232789806835472403529728 4315150607264201156537876563886080 -181489778983932442791922553984122880 2361053852367313093932163448963072 5159616830084654083513883838906368 -916653662297198444005275330186051584 5697748986703972728338852660379648 3277589524455280286065118456840192 -765479224193855647905211947092541440 7773920577106128819112159173672960 406980112706842189141062920962048 -911090918236713991209522974917918720 2459870445082935536978751205146624 7198869473040547414618091198349312 -688690057829563989535060253441261568 2130057779152692304354930057019392 1827359224454305920725469917872128 -172350259038668652505146705785651200 8229672454355970228568385241743360 4957123336391626773332130151792640 -863246681470538714714762818256633856 1615143132440131548771357334437888 9232815538615204524446764941443072 -759353127162058452125472662564634624 7975494652029811404064222525521920 7471163132731555874309591403593728 -603012396839036038726166919721779200 4728790801467245721763777983021056 9608618284577665896939799038656512 -164910812881944115059421561598509056 8604208912362881174823341266042880 4353318465709221833445701148737536 -819837221022416429939847719024590848 6213140907771200757347303739621376 4212712670064465102809558490808320 -65211096672481756860953287171506176 8056533489783905144197014771204096 3495847332827489132994585455230976 -585588085597529155236246643762266112 9962610108775476026165011897384960 1162030740601037222175231189188608 -375656449910886258494569889050656768 1680318771350918453023698461917184 4228126159671290187137427399770112 -37823730807786816518308179629572096 8326228685589726483767035068153856 734328115543414397566190440415232 -733298134458099964285258003661193216 450688605872653664534615333797888 7349081895976421640685985722269696 -821642347048792775651735879639105536 4613755188254324626715131940700160 5885316107959942994884502862430208 -314262678309743209255959606528573440 6195357821487196123607482534723584 3405847871765505240754120801910784 -579695220342697893203162500475912192 1964952406750989260062816754204672 287129122545681552263024172072960 -102078403778140837693608218492665856 459671638055701130030099332071424 981750780561329881469003864473600 -663443043078480625727800273524490240 6570883612797141786799590577537024 4040598331449235668048708412375040 -966932742132547679776888630481518592 681447246199328682887067289518080 878543180806064948329253269667840 -455480681418870824367249281509228544 6982314891644955273590898929172480 7875298311709171249044306664620032 -160480164974378070453350764629721088 7140181532568780176101443433922560 6606575603710914259995493515919360 -848158203320233370228142305034895360 1221160998962727343500124812738560 7826347127419944900789338728562688 -333779346429478585593885424703504384 7596641849449258388430721881473024 7486088313968969507097324686409728 -996587802113933897557201304992874496 6124145792884237611586905169723392 7485947978445683342271973450317824 -842420852601980418059335593166372864 2733888022895509489723067535982592 9755964282885177924768911591473152 -896394564460079890279404224515145728 4335838336626480685954893000736768 3243914157582526308528860344352768 -996599292993862093390813980767813632 8588572919856984722599410497748992 3241535706738725562509633618182144 -572511708016058233129073245260087296 5896248832306032124333500588359680 7595119585024616852228279436836864 -519994163735468229488506096224043008 4338580827853720298373736805957632 9785671815322419815184806119997440 -158034484920047159659474625134329856 9958084756099278683876106486939648 9836942998321887753270573746094080 -215162182167390056221924665723977728 7842888168969401417635937845772288 8657186647288562613865791522603008 -330248070336392812104859115751211008 2498343930166977145871578806878208 4469847878724038643173528055054336 -199846495629542605501260725661728768 8476324472826489028982368341327872 5795385638800018079634945545863168 -172375073067420508463442448355426304 1801245894955780621477343754452992 3523992621614216067809860693000192 -365702650136329354107340678770982912 4843767865849645105513753284182016 3770439334562384422076081747525632 -947866901716284125252460372230668288 9084971108189529613065911825072128 4851290039165427488489661129555968 -232334134690126914297178355998392320 9046705582803532306877639808778240 1041118493333843637290979548987392 -577563024844588072379544972671582208 7683461152629425641728376639062016 1266998298683857565966108488368128 -28127992018989628213965882904281088 269489527915927691162420835778560 2258969472642122741241632620806144 -406725244420483646117515974806601728 4973844838537784862346523963293696 8796199091245804651263726612119552 -800190216457665851143876695386226688 7498548882711502047075713312358400 2538854388143106798034751628247040 -538438845122416774914203460468473856 7888207125263922146353330807373824 1128897308072452210639684100947968 -842786586475066105424062787035856896 4932002304381392636324527688646656 9574138522758675164689763366076416 -295532054540432738709997282245214208 8007974046082407537558769044029440 2710227186531673503022025535389696 -32785664437492650165726524179742720 2447213187096781979793896012513280 4379525151603059249404965034131456 -840053985186091718497794524310405120 5557085509448935917649108771274752 3453335061131166056829685824749568 -109940672940619875284261896772911104 6772236643141192980018493256630272 1432127665657233084992076967313408 -995405059031120876786936112723525632 5214209522765408559662532881547264 2995841769134913854885975608524800 -993561098992020614566760200131313664 1698809084543041497819662736424960 9366111276027118995738031099478016 -469828177502497031154164769052688384 871637415407154237579806805852160 6520437254873894313773188677369856 -635653461615693632730883828788232192 8762869006258544686659228428926976 4267946545070268641060788778303488 -280672161727661011343891390776999936 1420480392125724923102547803111424 3389497627874100608801751145906176 -676323667865518295998310401802502144 3570872085358581323045873117036544 1611879574541332356299814355337216 -454234456070878520153550237714087936 5660544812068555000868263268712448 5655665410723974841687486045880320 -484003965599641695445877877169455104 6946522585875326012190106920681472 6250134866082166739445095696695296 -305326688606629150767527448283185152 9617770998096824081215460814618624 6328039257104490593201414652035072 -454766167903120829614476250184679424 2848352979178960844205241661390848 7866030646488577356485212061564928 -549523592746498518479143243584897024 8830619938813321123536276262223872 5846804137306195293772868684349440 -427232751677024056642085203231113216 3655283300187036634349961979363328 82831161336135213981862107021312 -366221349512024618028268381699833856 9596854510433150407542517606121472 6952404262609404183605360803708928 -506493146379908461978407289736921088 5719113221725216828159756433620992 1498035697328775183126485316665344 -758492428333888785903314782283366400 2919182248893876339224097549451264 2354832621015304349668539547779072 -163377660939552905817348645815582720 7989706361718222636956910062927872 3157997559435775537543579567128576 -745142707998463879943624684858245120 9909604188556498508100197393891328 237256419469686946080693550055424 -735869828255779085018763896004018176 9824063364813739670697461965389824 4769071379011596786758542191230976 -557846982653524822881497686470557696 314375256926829732171752165867520 9864859023799533075540540731162624 -862946767724856538986146476643581952 918094731980813571718643477118976 8899798462268916792758215181860864 -677213697425933571298110003889569792 3202608754582591353874418979831808 5636387820131641667233707248844800 -271190479778829791540732744660156416 6603614734289383083827245134905344 5977176823144793883992165657346048 -105828696602909183762507841371373568 3356814870103398710423030046130176 6338094733964885151974000380870656 -759564053763872042847157157833474048 37603988106049686724467159465984 5966823838625449017644999226949632 -982101878990228386208391829420769280 9184779295335223629062146059403264 7402748387954946454217535080366080 -339077663666832767437828850213453824 3739157000123602359828131126181888 4484929094548678107045506146369536 -293465047355014907941849385538682880 8944385690471762712723238231736320 4706462015260167914608767717605376 -927604855512159635889388258471182336 2173425818196013771940275473612800 158754684537373250006181394513920 -918634806751948554561970971898544128 204249970463002031097961355673600 2386858313160329986512063968575488 -696975569886215566837446850906161152 285195410380227913470112673300480 4561996759103808289112587717574656 -75809483970154875683714172821962752 6685421028727378759896259572531200 9430499775676209670979068301934592 -216518446940075576574463739783282688 5225621503263750923126501483216896 4831377871653270166983992286380032 -706753518388698628314423804001517568 3236519047619341309188256743555072 4136991842859839098199929358647296 -89063093303830379427215233530200064 8678561664622809924622181306728448 6616018169475080467968272170483712 -18878110146594286492673978071515136 8520273046951112967103560252653568 9656503423835212092454519862984704 -913311606630330164428506768154296320 5814234925120484736949055236603904 8018953002004281874312226154741760 -493088738414471753281668339837435904 9516549821559160384323777105756160 9458372934521014777854516499841024 -927362264150951423129525322942251008 4969683196160796865339247158099968 7691296325460323400573102889893888 -425764238888164313858234790006751232 6112783557648585838318869926641664 7832319211782129730061099950145536 -888828412025129742029327284595326976 2606053488283202868530976860930048 8102786758051702972560568297193472 -602042776369224210160117923006382080 5779942111083583244069098796089344 6486900889529654396566236573990912 -401752878101680611931460303195209728 1228401811987568159969749877391360 8609212936352952580218884659871744 -731965524980614678275444938280796160 33226076709437027341344475971584 4766973745061908628952027639054336 -519687057741588096698787861029191680 6584107613268174037356636314533888 7555758056328026532827504610115584 -747243216657118765697304954941734912 5911323846535542461220048798220288 5133526270225627816498892206243840 -186508251459199859394472315549908992 4523703450630408616801887628296192 8078853639793572546156983346003968 -249530600209365663563540564589674496 2772607145783091261840380357771264 4525566086294429111059094884581376 -660406986662472356424931537389092864 3842484958076862038648214488350720 5138735780922321024615566402387968 -981592928101654421898988742114279424 9490575931131775397468132939399168 8942429337648086869700095516868608 -289651401391133682683797569955430400 9995081807576777723107391326650368 2081456795104097923059702451666944 -655910316971108293259620129913700352 3391150835372250508924750397440 7365263203031492181235250711494656 -665657269949269760280773137245667328 9326475001602055942996705576747008 8357357688611568318821636297981952 -428576423416384602225542998293217280 3758766275003127767289055724699648 9666310713122359238628560427024384 -517778069951013058113447591067779072 1656173367587016486858180251353088 5252617046149491004664112387981312 -794119056402534929607902308870389760 7251030629247159890744669439524864 2476332403265901177919862426566656 -215484630200018762347060322950447104 5444513119480712024879033042862080 9114107440300475090464773043650560 -794990247328426187592407375914467328 9340080846194502998269668662181888 1543416926556901466098952996651008 -61202320678724006410617554745688064 3331840045283340047220774319161344 6200478654651624208513456832249856 -131697117435150411725272078922809344 5428493930544148897663590175080448 4241083783647448059200216508661760 -769436628662235058773465483003822080 5319167520414984543685360545169408 361665729421167745306346225926144 -702698621523630505583743177433546752 6687148942572448598187116387631104 2754828974801813017214204877209600 -145092382652781260874810967245979648 509553553010248563931370424893440 7770319636728493948002473001091072 -395882775475457982350812202481483776 5985860445702001611800728387452928 9830362780027682449980122149683200 -350441752289288731845677299921846272 4107189782746320927096016207872000 6101511172830363986251859867205632 -708245525301669195604693923326328832 1308164730835396062338131154698240 8463629099192208171067636795310080 -661147372344926181529695332276895744 2717322687370269731993016686608384 3418872671612354193499342973698048 -8281989095624986740639636830289920 8412423842555969740013638967623680 9156278295405316056288547362045952 -52767879679568406585333580107350016 4840229358067009858420962265923584 2587496109731202515289248597278720 -757959820770111301913732695082401792 2313574442740258974636404388134912 6542926541218644047185418683154432 -382180558839953296175241809746722816 1171162119829041791599945669672960 1376152469998180260005580694880256 -227699974640719916108548361410314240 13243122786732017615085280165888 4456740879217087836564332398772224 -997534710405405086222088351908888576 5694067229811589846538270351032320 8440257700657833317977409149992960 -580209272364152675406156656608804864 4777625666327735234393233952866304 9734413585170850212922435399843840 -39095275328247133855948262906789888 1719951444549352585961952612712448 2461262993583486755232916401291264 -701116979092034910526730130572705792 6343797482147567994331633599643648 3007996341316846383160054842916864 -640081521383989390533924270876131328 2779741978044745901193996456165376 7307850510692083518529757278896128 -182467589874276488770385314767175680 1168260915263591478086359379345408 2810061984035587872733889009025024 -893990882386588045535732671207964672 784255083083754787497284003168256 399883357704170530266966571089920 -218049857099532048846961476844388352 1065335971404897553023243059724288 4165759563182697176026180099244032 -998037612904227085083522556584001536 2845056217882349751663885679591424 3210424065255624097084139125080064 -722202237471645363441877330337726464 2531213638772181577916970726064128 3367555653138175089944896603160576 -224432047912759287116593484898762752 5595135200305523185559981436960768 8183324371373424054325682779455488 -871339264723580173248267688863596544 8363026138893758117140953865125888 621332227543449841277321762308096 -595370757370043912269960221145694208 7945563924396717343982351152054272 7484920013725397374637610574544896 -481436230151465012532396214812934144 8808163053058783239810128317251584 783369429579516662528190921572352 -473974574970240035864040499652329472 1727262076859138110997961285566464 6020082986045066479706603668897792 -100381139570514909139837099777720320 9520779749727572457121859376250880 9264529014134032130169198776156160 -947677232581829084892858766336196608 4530531669208761658142075547287552 1119913070875910621572562797199360 -411664122456215373847932500183089152 8611737241331613367056040248475648 512717509872850353816180323516416 -653683653648459955045617304344723456 620139687131289774633253821480960 2935734106488865089852216589680640 -331040952997426451827562548681506816 1767101226860887430521610685120512 9423860385323960822555919339487232 -769168505576810447529312218016382976 6231158281573625666278175155421184 6942303823755350041246627769876480 -72941832321224308507857762306228224 1273123685231081427662368965394432 698210666323191866497009975296000 -208325767505838197267427927527522304 8618990847542959890739122541690880 5954001495283124072133881678004224 -423061795207458727141920762343981056 55164213779053154421608804253696 5419039082705987004134652823732224 -389682176552046951101575684539023360 5788967475659886080953353974579200 9535267755504243008705573467193344 -290506023154407993247096325768478720 954751185092480240404582562267136 9144552827250435360089395829932032 -613217672630733690253157101685702656 9855863926063492162900843735023616 5535958213069390061206071796563968 -429596163897250666636086010603110400 1520560416070042977945424043704320 2440162427230216060553457108516864 -943008258664434873602863339394826240 7877934392339623925508336164798464 9122809228808218684152847106310144 -801997427469472190746543463507951616 1422827742641553154090813811064832 910370631743485807366904702042112 -163188475783561473466742943497846784 2743641492813979199362816022675456 3974493914438811723395366131859456 -861049150593621223153614874130513920 6456338444756002857018975571673088 9861902185438235325009059033120768 -524721336448819090297655181199802368 2656412494959933270770234198851584 616819806192273764173047050272768 -874557977907116297429353508974362624 7639679527438721516444756790476800 6333685602416260015035038088298496 -810196648931951571967112710457393152 7503982853529564596643787343659008 4342300728021930897544413144154112 -888434721304846715876456781980893184 1458776683254843303849319397851136 7901331797923376257121279574802432 -632214974594772926343416898010480640 1567557210862715163022008898289664 3977843259410491048868280902090752 -520117006290163387759237449841115136 914218959939181911448748988301312 8843036788964835406054273010630656 -833854901693829320154504542063427584 861330246443844748594343638466560 5979538102791364346923924559233024 -418664972190376224073793337148047360 1032273615377745758080994251898880 6769719078653863479189470911135744 -159658863423066942425854756410884096 121269693007842628078105167659008 7700469746990698053956460687130624 -842619876105598794140693950827069440 8222145167686927317864702868979712 3442369735091912456637114916798464 -767292170143129734678588730426523648 7676721729803175547908047583051776 1166759880724117237782506786258944 -864360753139985908244902049759625216 7757600343696628045380402800492544 8984677665847615923336529791942656 -72622440456156320216349726470045696 5704179746584274912020583979941888 3554957242338105527368324485218304 -304875912283816078505457972815069184 3189152185771559077898017935720448 8203695754748112684856043829723136 -127704891749152305527151056838983680 6587310298244987183090703485894656 6316648188772724849591701745958912 -7866455563788190735941669404803072 3696724415102617646447651293495296 9785378677965167149107984606429184 -853574636312111694712755881217359872 9700038942999631191597274661650432 5029149464617409483147613850042368 -680769248353573074550545573816041472 8664893419719678743204081321377792 6050969866554476474284647250919424 -16204724536091799939557829545820160 6226639449815344437576835891462144 8461627959298335879776510513512448 -480713554120194400410372897928904704 5053893540181246429231818613981184 6021954474427494645596809697689600 -5992572548228279796070939677949952 9814478773423785889658525083238400 4044789741763624133143592790130688 -998471048083615570295441201140072448 5932388894556773344516150963208192 325090459693418619728908037128192 -907816350104655957800209418838605824 8391749322399947188904716639666176 9446118250034386995721296546889728 -482271709022762137459633220808081408 3283389399234528685392238515060736 7903680279726829102142178338013184 -479675274352114623340107963545157632 5537390700802471978380028024979456 7411027309367500170209727287918592 -399490103856596243044166031850340352 5637104214424343690518710901014528 7014778264258408577624062505779200 -690217329308635498833768485121687552 3737383270722498585327451806629888 473002365393894513250662317293568 -165093246217952602419708004453580800 2455702676284902240132859143651328 5056674742656431300809833901457408 -730274043095780769231339229250846720 9241400379810075808595640592629760 3261150054978170218371827688800256 -466944618400548045877384472199954432 7428062406628595340517124606001152 6962038240101906533259629996015616 -537133896514698876277858441166323712 1154952398750019540257222271434752 6501732158609286071662974148280320 -73477373216643094406288758882172928 6651651801899839587024886369878016 8987435843929145483592414640734208 -745395225738187981435000786643845120 4646580803690313758045523511607296 9469864612456135156314995590955008 -380707146269671291921882161197613056 68815136980799136297055657394176 4093746340258435444365395543195648 -672234779563538444772530365659086848 4990461532649934751426441518252032 3751322884201513554361832395767808 -600346951532279362642912145934647296 4620215363016709539654043745386496 5404760829531649289587095127457792 -146249843678551893199090745033621504 3262389778673665276510203235270656 5086728083509730518106537403088896 -250877828205183472010442919550910464 7624615791372663128814805917368320 3325129860811515542624669114826752 -536259978823704074354454372703797248 8320761233492621869440425544122368 1363914282882463934092237252591616 -688548177439021849538966349691224064 3714622053934571805260037704646656 203504572651352639756542083596288 -590734065921781451361752284724723712 1941048595916543679049720167137280 5746864445832749244767623637368832 -544832037317093541197256610065416192 9789524326530715327367481510592512 1316160687790027688868753541431296 -881719913633838793285596674195980288 5166864414280941338080332168036352 2508007732456487483745234493374464 -845805826981550596534976067898703872 9380742971508576440158927905095680 5626313380617938069021438571970560 -344141148425190746173079018685857792 3180991805077421136261605853495296 1858316346373235601253955645997056 -335460449697419997640226561780088832 2307932806971653139543789555154944 4147479877678160913544604953870336 -70862707800922724177015855000846336 561857677392960315864031300681728 8094583390900681457290639499591680 -873448596997482230906408525065355264 4452400793377715325990712473812992 2274625313492033280204520277671936 -263637605867386671662445734647562240 9704699593175924818939363981262848 3343204326729223685395882925096960 -462575487543707401588170591429459968 8904319788541497231793775246835712 8976748307634319970422121314648064 -290611651076413739953450661107990528 3287264821273255901128297503784960 9307100850937061228388241735942144 -923672935687608689047143130194771968 3659279465763392553044479456575488 7919339373404666191539627010031616 -150150383055653612229216841662201856 1646166279023451907842667888771072 293153113548218122451565995360256 -908600176973705034543418981576867840 1199288785203927361601044284964864 8978949219176905819149987898982400 -573591950350074307722431130478051328 6443790451041077755934132685242368 2384545656646066535554885038899200 -901205501728502876453286319512092672 4856512112869761858760441161842688 7848608796064151519446465903591424 -381382839732995019544451873272496128 7233949461675872487525820647079936 5154425204404852994061030746226688 -357976598957253051818591946681614336 7482443685680429224772927443959808 2636360690326100633566826100424704 -245216536835261573405636590573715456 2105579004051510855929179095957504 3633940534543049349803309877166080 -707272647617774218524052096708247552 2083390250911195585498896150822912 659674423216538211313472386367488 -745918990671601700700682188566298624 1234040472809480635735475778224128 478193360137146113917296998088704 -965926511276858201912673795527671808 1493329881003461821451689017737216 103002036271359297037968468869120 -604446689544386018906697345372520448 3074332428610926749090200323883008 8822087346552677793425072622403584 -4195202804315945017258375632650240 2709281594946736117291762707333120 3108681901877097422675102232739840 -456226601297206073258130434376597504 4907808018074414027246149929271296 1761630135148008351162474539515904 -143651532578888104257536724733788160 597395268566598813967182481850368 7234254640010827515235556984356864 -108356595116144383279432866518269952 9110298002932794968102024612151296 6764387525761500561629652054966272 -21564882546353821457660103612170240 2127822718609567252677725261922304 2013341177415481481524829531144192 -116685889876946144947067395791388672 6685502336435962445289359518203904 7243687453552027769537004495175680 -705982008825988188838911546247610368 7689146250630695703482704574021632 1399590244648065778759377386209280 -379736885095253746208207827195920384 8529245837165572545372567069786112 773211038942978489227445194981376 -184043843025970970070256854975381504 2858855990084325219028701215195136 7939111289880846149683069669343232 -756470306455630668134111304654782464 2036617469540025453999255774560256 6690357747865481031627367944028160 -992233306175211545584378608386834432 703930894264455496866294260563968 5418662476262494834205842928041984 -271184713711147277666767407836823552 2494774386469013846912927155617792 6293324913019581739114451653623808 -106713274157797916889744233874849792 8075159043616517242144760184963072 1153642866531017696382296898142208 -593798203400911116550685450487988224 4824504107691091319662847524339712 9627859948527240687899358269538304 -563502809758145888760276371367788544 4089438865269466710964371258867712 1925051298481810903340706749743104 -578485864402847689389966786213969920 917175191939219313150271424561152 1229552150435964000835760027598848 -36304324342125358293649901177798656 4497366677286699151548962673000448 1479987949227690466084363597512704 -464835206231103294904698454507782144 5093692142985004211107461410586624 6430518246509902194102606988574720 -208547979961305879975205012110311424 1748503717130645657805008092004352 2971666829216676023244893299146752 -752061736456622678950845409614888960 7091464959777372423876312580489216 9709724432635612018461176275927040 -604994208988595817890692413788258304 8117929529937873725505804695502848 4933781492482048895928661822144512 -521373334367802515702008389031690240 9612817976585933503425022361862144 698320820941739730551896421695488 -865584166323910158375053607126958080 6894198660694982431103581499162624 2939119262935882304032049673011200 -646580289975336151858538901252603904 1006627973777139986983221622472704 8556015480080971048805723659042816 -227690967148867753666314765579845632 1666702843003060956835259342651392 618197859038177292517036798246912 -510256791173320159519970190388363264 3907587185633312026886737728897024 3201745637330587889204101025628160 -640353088464786562168941538652979200 925585336745879297323151153692672 9182980030159899668560593937235968 -985866137048429837608910616625414144 9725923101229424081561052608724992 9528695755939483314541251023339520 -589817469974845063372696380390768640 2393881243841327112862267328167936 1218516037986161967076860437200896 -188244174548162719029116745774268416 5995298076244764201401005077692416 7228706431310995128185669529108480 -910652346349282473129128481379057664 4969971002195571871207786067001344 5936636087566964961215353175670784 -755487846060910585317189326083194880 6027485498116250144118822387318784 6959226842908129693826527260573696 -518325803936847198944905867546329088 3088973807246092908628796822781952 5741419358116832332021978607124480 -252541900107168488245107923726893056 3720911772180953499377068220088320 9000221614430095652994572047351808 -76338770679415894352649805524631552 6808333293758063507808481397702656 2209487842432364674430413087703040 -847233984196651013562741450392731648 7892028514621370738997258675552256 8887381744151093857518811980234752 -111829538377064183989597035680497664 5029909557582454840477162353459200 4620705189617579475942441853386752 -869004201463050718753386774814261248 941221343065627975479823821701120 4240896435263660264566498604875776 -609766094797986456411718732342099968 6611590763069305462235445401223168 6512230347856473894647192398856192 -938309011973003070333228303878455296 1694325066454377263123973627969536 5965854878748777311730449027956736 -205309254534588708221747084639862784 6230769020082142266243170932097024 559061300780195503601371544813568 -132404433182687334265515364881268736 6720496449010470323309844119945216 7315438932746295689436162775056384 -424858636187330980835455813277450240 2891088083858581350619677804462080 6089648270373019750036142836154368 -195028590314572690824725625565085696 4910364729748116134666332270493696 9987430194613938299853374310318080 -997729170285400815345222331702181888 6009929650453972256598408241872896 3962220147630824128999780912201728 -242738390130257842065943490130345984 4701137109214588175164934593708032 4937238549760972916902182476840960 -911824402882933986009518454607970304 9019215024789576204794784733200384 9318436842683658721593738678763520 -673849698801524946010966933507145728 8259805448152075903499713111916544 9697024320226265370230269459562496 -912025945060437823715519996991897600 4647944359433356359735438305394688 9736483314760885462461523630751744 -770596822887932441492888846463926272 8547812920394160053465047954882560 2546327318151469882503754491625472 -381008586341855955935234478095466496 5205314635479236675123486753030144 8151090504613555752970833165811712 -940319234588140967333317041660624896 6526060710878111336477609898803200 3513085055411738516192792621875200 -618183550436506177034855097743441920 6710616735413265774228906224648192 3202543683229952030283609252298752 -455132682037036709431453262299529216 935174424366396919697138354487296 9246917248689848755312290875572224 -143021999862308046461131918378270720 7064057531608192762705957988859904 112982092352126004923603217285120 -523613825678054559298281008600711168 7288217115312019292382498297741312 4293062841357849705588055255023616 -543712044233825452713833368274337792 202014369575462196143703015292928 9989006028153727524541604017733632 -438099312510389659356436967530168320 4748369155598869913214418539249664 9365489312713732427413059274801152 -493593258480305022310566961057103872 236432539996193207440100728766464 1493626272636852833555090293915648 -391125000585612143529738041299042304 6849476679993068397240508773040128 596430259919461985599013951373312 -621815965813374953708338238690689024 2060250350789428177355028010369024 1230102846906407554256170811129856 -825877560059157068949335068962193408 8729880667946989435984816390537216 4803331411775260492261615711813632 -684896489289560911905072507275706368 2259360725088430543604623366684672 3426289525781617778422723727327232 -740378705142532010910419216221863936 494143810477596332905878524002304 6923661995177653224413907619151872 -582083067814019108620299725990526976 1368829600108367436241161777315840 3212754499328377747613180913254400 -729036161219647022784316245758967808 9221933778359152983216426120642560 9942677627748975931604359440236544 -823442206631187709455794388114341888 1621373784482667812300066675228672 3776484489433241893947976269692928 -726202787919321200618841481217572864 59585490711369250767254813933568 6733098949734244634305252676337664 -261366921983575735240358833871126528 58661887325226104719154842959872 2053340030852135030122673938104320 -676485427233163932028050620775661568 2029315026727783046283833435488256 8196609072895395104672017538875392 -817977098358691732846210181576523776 1208628005910135671232581945262080 7181146693310612496300865035960320 -23026361803033603630861698639855616 2472133091940654320978669231669248 950407628455967217450031213707264 -149584671361800406718146898848382976 6119760037336374305669233959239680 9874367669483497136404854900523008 -554359212622794841845006750263017472 670926714093829292211928259624960 1038494714696063587411588833869824 -347987986084840761391212214796419072 4342135836059681448904500529070080 1352448948185771379258122540417024 -345361552826878486244954091152211968 4453453018185266961471443684032512 322225140329176136806808837685248 -681629146220855446839171514768556032 8640493999761394917313495240278016 3212028652060831554269828960223232 -408168322100974789228327193280512000 2915299417038125829883181249069056 9500580582040647998050827270881280 -464923951233271943860283760158179328 8416754983636585663923676235431936 8700687288214732282107498898391040 -832939586851168471301883608682201088 5180226240498895224567055010234368 7262324187246927186465778397347840 -294402884979396124985734723836837888 9960997091376435874730381827637248 3471547985180559858097387340824576 -180704238092283743517770584795643904 2386021310416102748922282355195904 4369424484018355816343413175877632 -960596403989118688623756469661073408 6372531332799334017636058097778688 5363508725474656199032584578007040 -294667257356923815493332428581240832 4472526230387512711911652758388736 517274225496190893928432684498944 -561749810212714291019592348741926912 7726572647231538169329904078815232 1484772043059485970670343690387456 -363106198745376882065062057966829568 1059543314496964464934470457229312 2750240188672482726601673022636032 -204773780649483020521200777965862912 1582033711349483379277494302539776 7312527421799610647630395966750720 -343667910506019338267154051669950464 5046745953122227592668934412697600 9104274929905282834194593031913472 -782271860992938006112633796622811136 3006997423161262393234001248649216 5480221351407040194113876806074368 -28596750655028775167200088740069376 2630115076010372162994629714640896 1591807979871304659850870885711872 -601266685387518701838014341409931264 6391192972936104045216990396153856 5884507474745698793030055054278656 -382669777352343513230660159926173696 6481768793619827078234663148322816 4210013555134366237693522470764544 -684911564796153828760716133747654656 9710364280965890128989216900644864 8174541959744852948481181562699776 -550919688324238376951506737605640192 182939329132197281734895322791936 2850449537096431274097457995186176 -308726304354723991773230940804874240 5152688236738424016001188644257792 3154408623250904169688696539316224 -204681585056859139823989666760097792 785846416188738032468635884191744 2375572292354663691594746048806912 -479271366346287624432159009586282496 3430326134149976898200257301577728 9294596683271558321468382034001920 -210313359988313887268866305088815104 5578306361878529816352361262612480 8558056192338207677133173882355712 -347846552717596360156894969060130816 4844163947185958467865770196992 7356362084918287813214103427612672 -184103643133829642375591888626384896 2054758267079273281532904813363200 3510696241327096818786299138801664 -522188925677037438359061045685780480 9052857357083151658452072737538048 5714231758752353241162412246171648 -928094101175012918811390941748789248 2460571735911517581816413324050432 4423190962372712277970197487288320 -857039343452114684229909576832516096 6854259749995640342194685900488704 8879610084604023631920425101950976 -856487022687530045655878227753697280 4480170511915811630891506644025344 901298797703508445470408476459008 -242684333705085254083070387707445248 5160558983156766454734973497769984 4310940863628854956734280554774528 -416950075772038214892021105049993216 4640919700260714873988358070075392 7479495683171277516755189079474176 -452803925418391955106128253685858304 4775930321891514945434944368803840 7478364996620558222802185275572224 -367936471207081193521079379552108544 2631103036929494418353051987345408 6109266166187890820591408098836480 -189618020921032991691074137898352640 6769682237088491791982911551438848 5633756806756281650577764046077952 -631302390047354720142090660189569024 5839239327536433781697279623692288 3436871928614823245845478267420672 -467248014027160072327024707391979520 2413175434606362040160854122430464 2670928465008276392128240513187840 -310133255162605788881771523613917184 2163248719816310667903951813214208 752839683195993878217003716575232 -717115718032508515578567609525731328 2153579747469918814749159101300736 5381346506056607411388771081388032 -418089720870751240945043958254272512 2367030729155772847928751610134528 5554881404990442315302418618777600 -827320130140860636896961744903077888 1594066606756700187939124916781056 1634773614233732863884295502036992 -465042412340426640288265978674937856 6763505792806682090060656582590464 2088627712065709281572308746502144 -352300782154706998834158441917841408 604437074361180866384719087927296 4027979586660491790257015140384768 -634376931288380989359842208505659392 7149013063180103285246745976504320 4419872109919532026069572743331840 -508098812149267465023682701688832000 4807017577358483678485650941673472 7345996241195592718935687602110464 -753313344794369357623228008335671296 9966078967696000863126082738454528 6922623516868360956941657949863936 -77378893291225609358510327609688064 6536624484194649426953756945154048 7952140498418537136234001671913472 -750776161682291966996862800519757824 1900838215287745354329530411515904 9103001442548882098039440768237568 -827924769238081893005388741141856256 6626213171342139106722621364895744 5897451289259165494202409739616256 -105750372082942225885702797781893120 4498296101584950566952071340228608 1697476537087622207899748624498688 -820260422661151805695869313565589504 2302459965244251549285099757371392 2884857227660683495192528030793728 -367568318035965520822510540671680512 468005305969194584114835560071168 6484231906353712237658821298749440 -203299392757058859116014839720312832 2132269371654708627592892947365888 2136854851304904386283716724391936 -630946399446311462884413334259499008 4230851628601255375170413883555840 7888829057897193562589612610682880 -169168007650214357063300767046172672 6955987795350127358401738189045760 4631670242432213380991812422860800 -450683933890468088603179827454803968 9433158427895627529292479681527808 5320344284984918393240048803774464 -687845123833244914831764554428448768 2599391331343865688097899589664768 4067734934439359943435600703520768 -820532903878729028148327662831534080 5165840344086574088297789003923456 7235079042962471849989359565537280 -426513198374014796777879456089899008 8717353960976839150930342277283840 9918270913141094495042988031344640 -551643923336906236364433933352304640 3083867400667054122157861916114944 1564286562469679663547744872562688 -727949685399529710593678832755015680 2610780972036310066397915151073280 6035573809159849343922584762187776 -389187169426717938344545825528479744 3231382148521802296223527203766272 6865491440320115143695147087167488 -323648108175919913599349573168398336 120910099704386656970040703713280 1589709825495879488458114312699904 -962012971253371328685923340287737856 3559278890606521669780796365340672 530709676381082306526060153405440 -912336638136054090913122410077093888 3965883408488442776724368022044672 3891568366618328267620977387503616 -356539354515017373055773521345511424 3064244371580245294615965886054400 2072021078737876427548657880924160 -110190932103790670026618845788110848 4034221022464243925004357694652416 8614329653969839590946471829045248 -374699376469078934204933831942733824 9788310173946168094476824001642496 3633489841314701955901151003017216 -822332036875764449096156372489207808 7553208146505887744975092465008640 1011186781708880764325393841782784 -824218512459453749932082060746293248 8714704147661980052966513515167744 3342487395144519848871244144312320 -904270828301267213580294072286838784 1161210442435497191691486561828864 9413477580664223337451283145555968 -278814413736649962979107540805091328 104674324029607786010451338330112 5860665026578860832021610122706944 -202258263997828143084004520511930368 7241620651362305207006781687988224 5791848693742807110044780096126976 -119292913871035374913400519341899776 6378216060879023558519198899503104 265870159124575181859856773545984 -953957607510985941557655324061597696 7564933471865639747526568972386304 5939742301459055069832489117679616 -563412165637028234443973571855253504 78486143327772253231542238707712 2969995823250206497306675444187136 -942746838023792992358018076593094656 9439062940286051271271293323837440 3427953528793573669578689478656000 -716693069692944995171678013934796800 48561704829530235549949567696896 59270517107691795244047939928064 -457862571436013256208235541385183232 1657042473121549044877593650659328 6065029572715888960661581325139968 -796089145190492673302643908181753856 486801511315932762814632540766208 8795248265035355619199938704965632 -362742724523912352796593147202240512 8967177032909021916249099117527040 4155474784624080071164849295458304 -509659744732401821915287935248236544 7157843467004431770164420677730304 5227099192482579637419257622429696 -632892309390108155531241487308161024 701235104283955588532487279607808 801677702583249058000341825486848 -912120409354836873458628126423646208 542059394707260569386895676538880 3040372341160903888442644777402368 -499081137966368042461220064932659200 8396474403835090912276810588749824 7328540605587384205298992557326336 -147420015503164523093914435532619776 8715836122109303583495874316075008 8551684619934002907336642744287232 -165579530018697973974407422108762112 9047255402740509254736670655250432 1653712773942720254185254355468288 -774392595574469372291623622337888256 9363534316855919212441409614249984 7204146230281389864214650444316672 -22436110732347143607791317619310592 762481325259677241717006887026688 2587032560351916170139798853386240 -697361979252344079388888776914763776 4453249924639368750355382460743680 1431304378731147469248701508091904 -115342290362977825320386070247899136 1780968862729711419832420844699648 3154413704319849776005465115721728 -711900722627199387856774108979134464 4658785699868494646977456553066496 1220295127785657199285127618756608 -121036063563614180312726228990689280 929820847938509132818158832320512 6127215945047461812830874894336000 -927767773003484734282185329904451584 4607415649571166785873096531247104 2545267754200351384833361046405120 -272802804442722836413382520792416256 2695136020433529911639321373310976 8418519568624193755677557434351616 -63520692855524912163169072375136256 6310636951119339095753340443688960 3500081631297598270829674610294784 -80692161094861898135729681261920256 6890701908176243185165670421626880 6749638838473202132611432234090496 -172690433282526009301026764916523008 8305469356247863429873886742708224 4046813556048250173526775527636992 -768344095097275727452452158951129088 9857242720356758519922156741066752 1034382834448032565520707329458176 -981205744299646524291355742459396096 6533726715089608960155307250548736 134926504742743358098087715274752 -901380631630296076011783525561794560 8590645285152247530337326321369088 5067754407931033815977883275886592 -850993763581592413991628560549281792 5290307776087385819630572924829696 6765128843362335977607574149136384 -442402651000162386063518684764176384 9378340891358071973694818301771776 8469199910161126656663119185575936 -342790844171627582035057018889306112 9735053256973469454035262480842752 2525528474754064401371465259155456 -482485369449957690905936990293721088 4505930027581435468920909876690944 6681092807338052047383350141255680 -463339441565540201361442351030992896 84142369843787411100755688423424 7759722894849624160208157226827776 -664168623461312959241061374973968384 2229266895344962851378600903442432 2329749265662354277588847971794944 -398152790124196149444961640694939648 4118504647409539691645597875437568 5731330016241959358807226456211456 -273085182288604872059921327529656320 8907565974140116114193744645849088 5997806778856445571246501585223680 -260057787149888785908614295722131456 6239852162965686585369766439944192 3500803089792983118390686793072640 -492872165820887341014386630482460672 2713093542090776733324919145758720 4596200677639230408605097699311616 -41135962103918915596292330216226816 6703008397393993785391554985197568 6220385883889965193810784427180032 -95246107257177042995899031487512576 4960780751761846174276801448116224 7988243495029867559822419862487040 -982747426960381266143893624369184768 7232441078835594960907044877500416 4004938217647530789493953112571904 -31620242407919610869922268369125376 8317314143353465910939895612833792 3679539326792230030450053783486464 -717811627850479303316212782951563264 3010685323340955662756968073789440 6616356663322859496154925755269120 -631622667213799821135283985473077248 5887669518879971716763215808430080 3278637174805772976380026197901312 -269090347298084257331827865573916672 3427223269782774453976045321191424 6973972914409879523287032638996480 -574293803661926672380000605843750912 3884087082794414932450660237443072 5346911680207769562569081782009856 -756620638278845622211197137376509952 6922025162787011176690158669922304 1283678925151997536070960821567488 -405555983507448103294226333498867712 6345668218321197426327315650969600 287326933919684742567760385540096 -826593485650448371906629518080606208 5035712721974570089768835864330240 4844102954917130447880276825604096 -836442436993698227019932627290292224 4113079272951533088754853054775296 2115452798435445279596909906886656 -590564693502711838079753496865800192 7323576026583596547437077861498880 1068045678306488101381245419651072 -913272220088566182738813780555202560 8030525634592665893492368890396672 7298258693721788212452161912569856 -95017553659730259597432244228063232 1915366086727061970547784535769088 2371095668664972340515925257093120 -21711315520488290487088331540660224 4146584012885450413725694902140928 1725607172162508017056472362909696 -650905119489208584955535719598653440 3463966094805704605912143289647104 4847672073438104898697526048194560 -552902048557890994386736893262823424 3087222379261746185748633721241600 1074166805062827085010099251445760 -599176398619614277730445504408453120 3187662010323373374381038818557952 181725162733798579516233312370688 -123042339944347702696141496980078592 8726366185416142824520887100768256 970256373276432683996045062963200 -130035452411161514696002624492142592 3781978593330125701516261870010368 4537316431659275332031476628717568 -905552840994189338765939313016307712 4503399058889727569005503903170560 1179599189660099799466573358432256 -484964629493064843301508808926298112 925020069446704082730562220982272 5461953039158717513755322166018048 -446891463508526574826425046146220032 5169639432027262747017439136972800 5648889302941336430199211844173824 -219549850626504789952734004703657984 2859827957192007079178591283445760 4133546754436948058930605096697856 -881081688113017996885509046018244608 1167056362949643639942216289353728 7436582650798395005589863561953280 -571438459194112455899849939537100800 8109020900810056113037936846438400 7093524240191045548512237951385600 -532877221155378156120769950310727680 764889187933149728539831724670976 4758852652745072794692886951100416 -800724150521167333084001801175302144 9561874532748944969764777653960704 9052522929632331965766774160359424 -790763755957705690918083279567454208 5928476448320191289408145110073344 352134630368078920975194506919936 -736346964558835179808841795079503872 824955611084424136543036092973056 2404167982674654044423646936563712 -988139020008371985045383473730158592 8478584211080829924231765825683456 5796797392498380286309918641750016 -614701456147757761040000757635481600 5992699540237905971968549828165632 4278775359438694904100119264624640 -460685257417045780316108323557474304 2643320631201419958092771392225280 3579801471648195413916212197851136 -209926301477297104896398387140624384 6458107252749554806734330599047168 3519408236466700876626787261480960 -859696883725352204006608388403232768 4746496018555491684619672411439104 4666549779331696118957748325974016 -102468171419147874969732083624181760 340652205753065850275263428952064 7804081957298483770584094715412480 -369675585719558421977457712638722048 8910342172324641281767131125383168 3244670230248779045355237463293952 -130438186038199619392170947967451136 5875270426368270692788601830244352 6324417310915729841423820666175488 -442396278423032420596573146051510272 16743158813512707119268820418560 7987627716445345607059860963196928 -820419229682039436316856061746216960 2057489464880998796667835620786176 8945713540593671593088510089756672 -997089291462146607739666445572767744 8472508870648622096776815527854080 3051607824657720059683517543481344 -6343987715486999905071441417076736 3366024706417957586470733451624448 6765856629381714710839426585460736 -614676888095781277726120722550489088 8256025370411074794809948297494528 1971103946195131291189366925295616 -787809447052043851009065396559937536 609048131227151183031632153018368 3567597201749951958957906582306816 -791902090346608624795257306689306624 8235095490908660414202771171966976 8253304075336472878982908128264192 -303643310651701725535647044873486336 4024017715932217350686478637727744 6261697953655359979379315460538368 -889520765586643488264456782636646400 8714633402692987864852846304296960 121712683275868651051845544837120 -92279450990029392208750620285337600 6881623482544889963617087228215296 6285690945581543185766337010991104 -424193755944163788864677899290017792 369429759733787766839982029799424 3665633693495120888174168510562304 -996126454102792214016126280376778752 7733171453600855468805430152527872 1119124867791649841833327003172864 -667697779908614762743193618408800256 4465937010474942725365087279775744 9245979272525508338907720691220480 -617419238337072637911895776092487680 2689825445724589864033807289548800 2813553285563798109180082859802624 -482600811039781800386019755894505472 4734852464470453725606887404077056 9088970085998771382913718135291904 -717886259943227043899093405040377856 399581286349599776817148485173248 3609502773258403091467748660740096 -473003247377847778465925108997292032 5341588533333950775762696313765888 438524003586520910617622303735808 -756589594133872144026756268941115392 7809863586296497107422972085272576 291142445505415492083470554890240 -601978132305549732462748228965629952 9554160487191108228336874696998912 1677078744457661233025231028748288 -614049031836762555706509163717722112 4029194431541821554299844545216512 14084600238644715353659439841280 -114105068671762357636315897749569536 8282716015895505325235770004340736 8081313270968879846831128594874368 -771780624413633700750546237537648640 1942429444129068835354357943762944 1326934783285216215722826517184512 -361885087078382707411023368168669184 412702325498105939088159767789568 2804326159832169972814248058814464 -40459828822252441224231289282887680 6505776127644087899289837520289792 915960336296450617471291707359232 -492989638720670248280393920295206912 7197224193189806431840128148176896 6255339047060582633136555521212416 -490254708459366751065636458444357632 3040632948946660310783106933063680 108931494941005424041275074543616 -195086255131410268120908286782341120 7837169118413929116297469938892800 8104461182612319707288350777933824 -959545435646933897086677883358806016 9924312449919056518076161163526144 9929099440471049845812692810465280 -576469496942369806619824502666690560 9943625845881903298486684312666112 5999894884657203426004843997691904 -172029485618402028023463950319353856 5988420655800548395236949799993344 5904951789042328605314497025933312 -651322214922709983915683541669642240 3903213486481202645511474943885312 1103500352947951849532893425565696 -797037807075060730088153042974146560 7715958067882157079304978785370112 6273030184513933330098415988637696 -357447241707539633325191119130066944 7422093443060643696788697790808064 2709172097288241559875134087495680 -331986473908747800301218546612961280 7564802355929932516134078178656256 8844734830466517016153284050681856 -351859361276124652472483005811654656 7740391745903577184873158824427520 5031667208684809994766936719753216 -795023703101279073072456735131697152 7371179764108645219223230585241600 8958792316418178469602877035773952 -948117675218002002601431773262905344 2470270230598394371550720917766144 9290452420903775551296297154641920 -998059899064262613928124198881853440 8653221964327400017298956973244416 8729124633669880515005637610962944 -400263917391308171381644384366755840 6251123744976310981126430922899456 6693214027222217105116382021812224 -903888570805689486319511173639176192 8056125588014317597307073879605248 1654945445533121668246602587832320 -668549075137097788132227891203145728 473754153693971286498334616846336 2824642769078213981041017061638144 -17102530003960099381106822243942400 3715042130319755712687564413468672 442188526317240769700061413113856 -419306479460412485701896198588203008 5023035167340336829800133255233536 9607951357666422858010125496483840 -191328716078036910620725130825826304 5298766824960001751140493586071552 8817067516040266820291310473183232 -136906237897154548826759125541060608 9700645494287547276550721710850048 890473225401570521805429072199680 -612421485370292814144346181475500032 6142636936511661988097946516717568 8076573868958534354450549387034624 -373700539213046043612879018910547968 7216240282596652643429800199847936 709916606905059852224744996732928 -109468235677399423431195396436656128 2403324732237128947237618756616192 2046856650511821719906006027206656 -272147380239385869990920769387888640 9175051444074082561103327194513408 393322382996919166553392758652928 -866955894431000299789892136235696128 8753088663518671121608227235561472 9003663166038999929782915808886784 -445976156945888537051526443263066112 3165337288909056862787324541403136 9488699137606358480648219385659392 -36611852214299316504903757737230336 3984200465141326181736638551425024 9080096935209652878963454662148096 -252272265425670606901100994996731904 9654787877999659113235717847777280 9451572195125325796640352473448448 -827843771163286932093300677944541184 8291009819750551763432341749366784 2633751454889347648878941659201536 -807361357192624035101735744759136256 2407873657360425083913013487992832 1814780208637905426053072525721600 -119922476947698630606262768494444544 6726493975502327807151082936729600 96229772259854258335283408797696 -989555368590989099082154855559593984 7437727492158096851348229772541952 5308378304589411526960929080082432 -322464079688560391025550657637580800 4821887436413811223518066356781056 4596458575993888394113440991412224 -129905624479742273853863873384284160 5492072882056385526102353596383232 4576141831661740320772239157886976 -338481663088509042149670300747300864 5274268620586967610832876535283712 1551749607426113821809699834560512 -724775109932801195743579429811519488 6387517824501361102145947783135232 7568389400909353313455176914305024 -22112487711057531592314738154930176 516327877045837819574660313907200 6627779384692652572096608868499456 -141806042233533948063859027696680960 9488764925831072357651221676294144 4015183865886038646265636269850624 -208276377145087010024041671955578880 3633941364978349240366506191093760 2522437046607506765691474363285504 -307405926912695927935952484822941696 2596617953101253306054053350866944 2624489742614555210422097266343936 -433998988688892357833048507933523968 233499364674128416372317933797376 1543001875985256855330612630781952 -965701927678816338123320191801622528 3882755356617056226664919980834816 5688112563847750601184385574109184 -240509006477329369283471058202001408 4303412909238319807756190043078656 3234495894951380918486298970292224 -323099988352150177233987994302545920 8239845962270482335631471311585280 8891313874569669686793839344353280 -986941826943530165618871270876643328 9300894910338269254817006693122048 5402713120424725615070575975202816 -455906225059841464919927567838871552 5999266963741405222262475962974208 9581585218591210672794795266539520 -921881045549298258331093930084401152 390147673053217738402550236839936 1382270795283070738850227171622912 -727041439359275142167775794106990592 4096585324093275668943095050797056 9205905659925895705595092408467456 -349676501052747299117824907904286720 5653833761824701813540611908698112 152858553590204138536571800387584 -875935282235656189564448977910235136 5617856368798320460597091849207808 6203041850458300112378579820478464 -54955037154672381333656142220361728 8387656004203526507074691335716864 7565491849773527673294226083282944 -422266576979013047525549295588605952 7589442133124061794192095684067328 6228404020989101312204291721658368 -644419915113317439332503050409476096 9025346881655924519307005474635776 6804973344605239610137610089922560 -919221670712353786940590561551187968 5962924920917910927447223747739648 1020629355182073041983295448940544 -126344669702032088021362440870559744 600317506570879460014160384884736 7362235558340969632569712546152448 -163988940060867985857776151053729792 8725732480373175678175983295266816 5140505984270877688847355913175040 -808852889321961564724155696703078400 8794080284114572202724617768402944 7910071843270176364094965237678080 -353975071037299723730204719627370496 6345142944061745262992260098686976 3031545681358336187509854141677568 -175064437281265877654897181736304640 4694350908363314060214497779384320 1866181153659631261776429478576128 -608622567570497953962337840587079680 2057059178811543436634312478294016 4083335609716167475951408554967040 -349597309171452126808860190224416768 3615566126364113656473169680138240 1687279990965604148848859050672128 -578108031295187100465306368917635072 7055742752622134443008663845076992 1098565937982637692788050411651072 -727599103863636429695655812414832640 4901020681278904828717558208135168 7738369669267833945624746966122496 -928728140469865033450960525270712320 9374824789398180385405277097164800 5569244252433817270911038126030848 -718102662620503856752269485477462016 7090110838538709135038660898455552 4398693508604281137460054608314368 -440046642504814354765764280736284672 5752046758280423869356221080272896 280364260642174980473570625323008 -500718896503302518339105276645343232 2773662962660036257690050453569536 6729512494249820683197412777394176 -698030988371193615420262020913561600 953605952288320586963480897126400 9054527168797566208627585713176576 -575760310446091207750241597677109248 8201784208913312248741997832044544 6017233775659688561717633861287936 -862413913719107787343237622249029632 4477587650397603927761685816803328 6828694505837620466354778229702656 -67436437025545490984713967647064064 5189712283913778375032544975388672 9329123204645107064720935668940800 -981258183927939742954955633923719168 3820788978856406620774051314925568 8082638537588552166745930444308480 -295225413509899325961929652114030592 5631382265700462635128801147748352 6981632667875666857763020291964928 -581221537809555952681517233687494656 7047620964956105089143768887590912 6605067841045747578757161997565952 -228355749861379092414512959808602112 7959006068226559514385276431499264 9876935406014706421354281266315264 -726711228144163574404836148337704960 5468875040913570424579237710135296 9214969484048399375694233990070272 -893023782885473608638918794187636736 9868145870159369985661025090797568 1528814899263470369741085381492736 -994182803810616384317651231080185856 1368535968504869259930058688036864 9429685063587300985719216821764096 -627768832832459376523143100168667136 127810871574074199436006910853120 8218161973428936898042676700512256 -893432805054087211013744835445129216 3239638892842262797036793028935680 3640749191815861234286799676768256 -421416743506207754085512654547320832 5814306327049530664046544501604352 8023386871020153101448069097979904 -434270529854553484695332612105830400 4718181366151242040937574148603904 6574057522985660854376530058412032 -508647753938916975453839980719243264 2276176093294199551856186987905024 8978724607103169630543395187326976 -848106075764220641782490520744886272 6552657177084969108505427947028480 7421020304482313366288385741684736 -861626976397155089354263279278489600 5738155051061645105879117872496640 7361541816916140901031079359545344 -795217299294762227420589662341693440 6345694246893449597588194371567616 1934306256451420550432616379056128 -222785218243539276650188831631343616 2664636596145674496539146128982016 6593128725762617057052291269394432 -835039254673503106840977291486429184 4294114152846991265443276421857280 4350710175875195575176589612154880 -85450862846457964113248381283860480 7575203367981762977262015631851520 6880700592978408184770979289890816 -286588913379362029000751642771980288 126215967922576087871964600860672 7347637981179934797857583171371008 -847344762016865578560953009276190720 1457689595627093512146658214805504 1619533692779908336257133650640896 -300599261026608242131632623246639104 9157482423990488859495939832807424 7507667003582670493588686928609280 -528857974229151044858401152967901184 8199462602983676553428943362850816 9905289326877582672537051593703424 -794060449078709695761739585689747456 9368638462307923448742859274977280 2107628645805441058201767860240384 -641968175164009101861677918549180416 7730966569305854933703842250883072 6269156386560861848963867218018304 -124026900969734922872844463684714496 3666632820462678668926441599533056 8754843623660390390428958713708544 -205068499261767882100459057069424640 2138902282530595302038128021209088 5598811283581553779298458566393856 -89950621375860750886130894791245824 4208051992260467311832361523478528 4436431570725468027601531898429440 -272892565557275059041546970750517248 118869781944022319572219148107776 2194071138386753684981043834126336 -114308604738863247318855732783218688 2936423043121781780974625429127168 830515294394045292099531047960576 -546881505537767068949150504566390784 5160849065736627573682491254374400 4460686769947774250974266672545792 -568116797003154256751347510676553728 3076450916419372787487925205991424 9466221632828544936695138447523840 -212304403526440335085960073723248640 10746335379878084434036510425088 3828896967821186761803611754201088 -511636247962798743604734837089370112 8139221414374934183356863925452800 4812705980390675611878539751587840 -9142461732267715187016399423799296 2879707988181329480947842125135872 646466333673837107651367617429504 -858911997498606908151654336648183808 5508142651347556809381852081029120 7083713598326593408423415714414592 -221910501886469516666214380422037504 2642000895402971809053152001392640 1019047040561719424036638633754624 -716880283649271940063737491042074624 2038542946109768179609486747500544 6236684566487309609876489540468736 -611613729629192462423135275104337920 1612254507748586764719705760464896 3502382796335812332967307132272640 -240836353216312467084132746709172224 2834129335971247151158964483260416 9550308227684554259794722868428800 -428433967951546041433421392075816960 9536269102157278805944294178816000 9126825492982116996482945528102912 -303241129553703833594836546695987200 4599649024994873145750285392543744 3238164327470081715505467490304000 -477067172129888642772007242734501888 8114125700169703676330378491068416 7465287935473842470945636774576128 -822408218289883192980812962050605056 6465827154556230447154240061177856 5640227260272198713440817555439616 -19295701368721336990830262753427456 1152342041182883553808736747257856 5122738013816632166858906711097344 -568529497959209186934531294660395008 7140852424523408661185577671983104 7044087108408811807225179589836800 -948514354020465101414083293238788096 2289679470810371577512138115121152 8589880820281304762187702700343296 -343366632070119610164137622868328448 6346371314419706850570232896946176 6562888541533218089872003648454656 -493046224089626811810015442519457792 7131965777489560537275337472475136 9102808095121124981383784424275968 -248003777903727632614575399011090432 504937235495260981659041917829120 1853696000850428392044610308800512 -962983191942483758866030144908165120 660972508453457323814342893764608 4825630205970897569019840973242368 -352127812688938890635402976644038656 5485185274898987637966245105500160 6520960499789376241320426305748992 -11380853791856522421044482131623936 5570106109416918356797097517252608 9947255969358556008011131344912384 -593135011875079550910165218519678976 8439933269578685620722524873555968 790135507257956217467838048239616 -406365425061200139622542695162970112 6490115076743955142180060086140928 1755797594262950729696305062346752 -249300606021493646644179336211464192 4686515807654086834219994566361088 9927331277227900763737802701537280 -363147191043990445493030321985159168 9527699316880147548500676931747840 6073488492607227415650252330369024 -450109058748752383232229544720072704 3593243739802701420760727312924672 9998572557999133199805267769819136 -275609920813476659765088654398062592 9299100543599408324927587946070016 320638008707258490207862951772160 -131695642184371109874541811246039040 3049854028087940038076048619864064 5858899173613325156489475863347200 -231436134305623297169594243044343808 1730348459273479220759909598494720 1903006483695612792704171555946496 -114555153679442236858224650936647680 59803009238456342477693157113856 664696384426494030157887150489600 -725864367878432354687262327526391808 273779467890910083498949218402304 3339883558495301417162205525180416 -51666059830827030352452688151576576 1805035410253574049085587116261376 7520878660619474448569184712392704 -174052739240008369350354858057662464 7185370958624108474484418997649408 527136361033655068753733319917568 -549439206036741890286148019596296192 7967550356118613248753714608472064 9920993680348985298316345542180864 -12289008431342465911448349962141696 6270237002421275248143361313341440 7822665544002809323489635285860352 -716561160306234969831620791718903808 5442636588418480915597752170184704 5504692343717202227923982521204736 -48274934620706187987813082932969472 3231832175476870400364801293287424 8930086640298273484794744520310784 -648022886742307038237791440259252224 8847353161166182215528677581520896 6818032879895206994293195446157312 -488029837674856963744322313152102400 3123736522761565789897935472820224 2055486731581583617020879928557568 -728305343533171861606751992752898048 3723983447076260122336406154510336 2235173430974527070017911626137600 -132004769218311655655287851541594112 4805844179179702004746903600758784 1850543681311419852421058416082944 -799774107081400870692618868122189824 5660410125586333713531014972702720 9665822882132928785899689420521472 -487584627448271650778423396088676352 5191469044668813400791504822206464 1419427872570674864515187174539264 -248061818288602402203020569794838528 3626314058200945658721554952880128 6690790295061969212448119422189568 -406422533513922067570298364291448832 6224973271611875746228033300725760 4417250776645469159616994556772352 -335805209805220092915256287813435392 9378884865807648521852428727877632 6967175111571741382589251888087040 -475119285161476138761740056008851456 1287746139602082507723668931477504 1921832536810448618487674403028992 -502490463706155065537168727628316672 1129288651110896123634923453022208 2783447674253394515725287480623104 -450836790052259828359706297277349888 2874328650300983205818753349582848 856324951423434050391024431267840 -392380499332156814528295829715812352 229313096788918059528200331984896 4719862101369588149913179926822912 -249720236528666240214784090170195968 3935217001534136220097577589145600 2615349387947676308171724741935104 -934520872123138499773918979379167232 2283504320529991259607542559408128 2035180648290187347779037402497024 -27788444374764181012803330439643136 2007698915366937635997834968825856 1186556255338101037611712707035136 -439713790550029450590084506478182400 1039481470601691358910403611459584 7307940109251783922359961718358016 -232536921321676206370746885134614528 4626645623994152573021833668853760 4936695233875649877050710034481152 -609157980109982051987237646832238592 4391292018914108372396491652726784 6498196677976339360985883846115328 -454364076055756274966428320620609536 5976537524316170187429374207197184 5450750313964046876953627582267392 -177193610197101465105272853162360832 1650368620550798577883520325124096 7800739595362637391870061988282368 -885577012289540952772003251877838848 9617939190433381761414274484273152 6461738688698103775095155295518720 -438896995881926163884104536788303872 8716862824956486250102158092402688 7013116315165709179908412311339008 -722059371328802700095709135400599552 6830047165704435672879707868626944 2947405548067291445709410962243584 -668274541444309287912485900800491520 4163160901246973611447562174201856 2830600489819442467681196381831168 -909275500854202377119880284773285888 3954385251076958206673341980344320 8357580610582803099187422018142208 -405593419244668287339005449483583488 8749920672543425061748256356171776 9807989699548440179817134235320320 -129892264070816664855705120311083008 7839318164757719901906781620666368 258253415086760539449749923692544 -830158151870494626106912523188961280 5327584038843807146139897212960768 7752035402790401981746361497812992 -87207524154089317157702204802465792 7277374336476122869922453530869760 7672863540321912378201350281887744 -929296412237716925871801988368302080 3425712549037178204257901447479296 5504789448790889633390792584200192 -5813587973058687076295220121305088 5543842176403015259702697559851008 8489211635819713483826028966051840 -14597800657325853479392761308250112 356943699711001410075835991326720 714100208404926237773449320726528 -420318446023701279543618927568355328 1505052702691676171931050720624640 7358257346850763071092647622868992 -589623138755720101749350031643639808 6437691986465841073593225870049280 6157419025248306744030484295057408 -177757974691174069246607646462574592 6527052363616001072229549439188992 1125203213850667910086113164787712 -915379946605618658658679340337725440 3435453581876870357507449863274496 6348997784018123074149042651922432 -915020309277740704100698007548198912 9264475461885148376645676166021120 2630612106668704896358257226940416 -976559511235736453793876949411561472 813485341166328107451607492329472 4668312120058535901347418145292288 -892977533802904877292248789420081152 7629929697136027136528663380492288 740659245155615822164517405589504 -510280824026433399679806055471120384 7644319825711529131345416460173312 6446398613498026307004310495428608 -291227459016320746997039348032995328 9226966684595918944709174691364864 879952017865552967285947026636800 -555494342093081652531273501503389696 23942690902024573926741007925248 7945574632983849099823793588666368 -286119325717164564681478966433808384 3762205711332542364155942369492992 4869448594344488286336316786868224 -467718554161307627492126240056279040 2671086869785137597105116287074304 8303819643130994155637716228767744 -118744649131285439199527531406426112 4099252911914211383951818932355072 6579062603089270452584506216939520 -663935594720745131349638236260532224 5248632860190607719885881995165696 4569910407491724923556011930812416 -49131575578841334590778008166989824 4246884852678751434290041446203392 5995409465108711635194427203387392 -107656264440395500577828684754321408 8217185181610664038835449134841856 7340678129419628489211199356928 -38653407731303017678288167244922880 6093139935717987377524854466019328 423684151960684866257951077171200 -661145694507360970119638734832926720 9464682247805466075213526743384064 4495115513869533745631208409137152 -441022916493821650952522717212966912 8550733572701925177878012082782208 4130450664293608229403569485250560 -37345639882645209500770287629631488 8169923737210562930030297053396992 1598524439664129746526449545773056 -998060002885065317129626312624832512 1982489520490614028145018265403392 1518918821933243463428547389947904 -228334570299687495629104199925497856 119442360759060160661768630173696 1058371974894054654097955403857920 -733909691151600820427850565770280960 5151932064322797159150233143214080 2886376583155476048670685633970176 -385527904410867471472767370652549120 9531943821982115997566675539984384 4327791334146913369965692878585856 -503953516369725270453388219764441088 8766216148411011659990217139421184 8681474454308858743653778046582784 -784443538573592069684605569462173696 4724663665802726289003293234429952 5453816926260871021420025219121152 -387364910813330392609863351700291584 2094150495502138713622506293428224 3522303231727995272893880338481152 -245511349913258678675620333392756736 9684157509136528080749543091601408 2979992198570027121552966308331520 -901821468079491652747119051430428672 9340071539067202545537843883671552 3418409826895488936345343291817984 -677621701636964567227945439591399424 8527297210273309749754795286069248 2483435623931084442163793637670912 -614807434332537109666302499720527872 7489380012667099274067244977487872 3490315443366707257584035823616000 -428791330752697429253636603334623232 1509407020118314542548787455328256 4853760110359858184098699083251712 -530991204405148872771620418898362368 6565984281673652898404451456385024 4717852805710700322995620464820224 -614535796551028036418814671163752448 721476549108727163779669307686912 9053486722504537468309411983261696 -561618485865263415919316802708963328 7866022369451311855174532936499200 6748853469144703914376281290964992 -403724306579528065213150000817635328 2752471221207789088090583480664064 4051928189065762079960843298013184 -482077787566832855044123401539026944 4859735795948674527246917042176000 8963744191223394311603069890068480 -153588959022271520942957679209349120 78653423794133427815117796409344 6605008372636001229509500856172544 -490538716292294162815758735215951872 8337159443556279486153176966496256 8788841306332802961759396289314816 -624379254183701804640496836289757184 5186063398886769823586658419736576 9744256404999689771205447137624064 -407658198213615953914359415088087040 7153456970009201312113783933501440 8470435740934906225036504770543616 -419385064527324089898136126244257792 493167536032648201794617922813952 2689308321125326647732001742782464 -747159547482567344262995615296782336 4676325308122417184241998106722304 6179251394867337803991385034981376 -624734988377811728883880074854531072 2021238426733647831259432261517312 8130072381913102097880371815251968 -59873049385932468917413852221538304 2066054664939631744963914858758144 6351837328116055059061072812048384 -80611797594785499871162701247938560 2730928822053605029057463190552576 9473738445745933700235637293056000 -534971239920998766410781784595759104 5929784996547323455708227694493696 3375217858072506484671256111087616 -551453719308523700435651271399047168 5844864318638371494729971069353984 3356392477335775384320316616474624 -105018459913221324979504938521460736 5231568650503952295500423500922880 6538869505772716817201897744105472 -136808747795277803902412117275312128 8588789624815037083688015824420864 6982003890793690369735189998862336 -773499840628954576260140958430003200 2932790336142895393303469905412096 868408588294862574627540632076288 -323489263734670629402696961973288960 5135650092408961927097729763246080 8608747977804808285813942001860608 -815273826421959522086178059764891648 2463001830932488440554242170683392 6209017009516556023881510252707840 -556535587398085146646696986402619392 5074439655280874287215396972920832 5502411922026934579983900469100544 -756569824192650515846991994496745472 5565280619481369737327966987223040 8571576305113184367826861230653440 -56064834262325453424518718973542400 8838138618360872470575804856664064 6543232852445422593558975250169856 -937328912290698876186611137797685248 1227941363483839644602223286026240 2728919090456289278247162911653888 -948054497210276071946205873607540736 1000192995547507873650052446552064 6546287179615839487554879513165824 -151811775882795436490194679607853056 2481243096884163131534802906251264 2307147391544988782771207292321792 -462710859331034347099042759326040064 3867816401253683097458863633334272 860645541974110357171302630948864 -413709904074621174231491445035892736 9613351632288637775253490634850304 5634288654136645536934761756360704 -88780438350958315113469839954411520 8500914380433260998099101135405056 5481944696899875369989084113010688 -322165639813653457046960496684564480 2557345292278438196405617335205888 8886122158297731477902421114486784 -928546007556234480732556941204652032 3942064543530140091780365434224640 3159238882641638343248710788448256 -37112346920317026457463366931709952 2739275163485552408726657797455872 4119434942136434582781417125576704 -61849544336306671762858792112357376 9370630749483390374243995997962240 3380420365814686058005678203600896 -514537861603365969577538094272348160 2713752669344737575598187396202496 1073805797933901902467485304619008 -132617625421332834989380022814375936 4672888355545862721957993874718720 2072524312595538633680783507718144 -135854298677774956175763339539906560 8058788061033779836074499879469056 3427810692651164011668943480553472 -926369679701072627047887334667190272 3707095505660478717167463154319360 6518456241205266273909741774176256 -961033678051969488284033744191356928 3958141585948030257767220166787072 287061443115517825302177968553984 -331635743926735073768335833384878080 249497883988620007219970707554304 7453609857810071436263042754543616 -44267873724615699278102039632019456 8305387574211712616426866068160512 2065081974855050760421282114699264 -496349390543620134044682176987922432 4055347915189679084808669017145344 2024159255569072401548362236559360 -969885666723003362813506015385878528 1436300415774837868130159223111680 8235154573978770067983733150973952 -777009581682496170858871910813401088 6558201018535520030657909318746112 5565579023592463303262031562407936 -62635722867617524769642026817814528 2728738731213162748347767135928320 2263921381179867894318235538948096 -663446531554493147799585969869422592 9274238588933822983551084931317760 3627489949289824467629197951500288 -723155851272843076105367372578160640 1957918032140321543713645509214208 4151880827282282182039311289942016 -39854488749871314588029927198556160 9199162244428554272602938098581504 4795794580091024496469001153544192 -880759376411410673191882321486151680 8971150679099405380224849209720832 824548392454379670261056562790400 -261582834857437394818717317750325248 340904412176892358402704320495616 8670140298512307528937116224454656 -860329415259206337565440885296988160 7205657463743697057833913386270720 6375326112954145745722840486772736 -97715096949141536272188597392637952 1782382426198628401644268616155136 579478981747512348944509349920768 -5304839815947347362128585581133824 9354395118051953775949552843489280 9743467773686027713719345782718464 -430910572540133784542053946338836480 6463034055346684279643756025610240 3571654209568177331149329087332352 -248836399359174706365254720542474240 3298460069185843469250810041335808 9509901477134925363234716631695360 -683728332054602214107140345995198464 5022896742941179617688927158140928 8685047923212855336092187127447552 -357340981665886875707749480622194688 7491038937662522853203033739755520 9491331237775372995126789981339648 -455562525384805569231089977123667968 7989884573397541683220081253810176 3984897832368076720029492232323072 -744342351377035322879722020740792320 7779803813513217397272694734454784 8553049099756894083942653666263040 -368058558645949971222709546170449920 5663817489805559294978464459784192 5861491343707047990246901733654528 -713790013616753189310919601322721280 6487220130633240755207742219616256 1057579746854387181430324177403904 -341943041093972884395663727332950016 8268992023633300937303206632882176 9812268468818373802996919189897216 -809687230624959252869276906379280384 5855008649558690046128470240526336 6448155845528218048824361000894464 -785080181797627841946321562793672704 5124296966250076467947390495621120 1834255288229042915035943423442944 -981219770108569908746240560333848576 5176851875522119951290978092974080 3149701428436850604920482713042944 -521228955553818970716420358241517568 6302781079434464174229940630192128 4975880566423037286545944708382720 -255207994558813397255900542034509824 8781631810156934520832074390175744 1373419391752442097166699376672768 -542616602947424858417424152574033920 2312952734181027532478923864539136 441976596919197813106949538971648 -3446572111050608749341725574561792 8761495486428146163871409892229120 9092661581300271307102215433355264 -379011451473600939963774775416848384 7214895198313082830016612241768448 7231975665878559038324780820332544 -724995345058716839887708450325528576 7845656727158035864241354104111104 7368946669945055429917753162596352 -555406849985240789255726952743960576 9013514551547778553272309825667072 7123458285064711775115275032068096 -318159411778796653121066814266146816 2157308451205958517409939760087040 1858478925005459213745649279303680 -713879094921397938382320470667034624 828491237564914852777026069200896 9368202603975689689994125264289792 -274518871244514856766093071780675584 9892617504167523322197261047300096 1932563473977708918833429243494400 -889527347185382588193717309080076288 8680899898352846924729132993478656 9942377218869205305064002215215104 -926013052840370879553285245481517056 2661766008423388678306508534972416 6636608652572743667593119449219072 -127322941110775719364495601234345984 1631627183227879009354884520607744 5648986750308900769362853696110592 -910151030592193020464671664933699584 4572935576138413695554166787670016 5722469635668256038514972384296960 -483409661569063953015376635525857280 4349389904388945958680403325747200 5700765308737076958532678098878464 -62504909954029670648992226963619840 8468480149477270728179917705445376 8092952648146142392262880307183616 -340574267788712161775431896210079744 1690404872763503720877543915520000 7204104342983801362859672349966336 -839214168112567146101855202115059712 5183114814591647050810408019427328 7208222349652877828704357186535424 -309621877161174886276227373088112640 8827260047968317118049954926952448 9928636872031217001637732750983168 -139184229804804411778890248551923712 5248578366995608574180237087080448 702564010519401364673499219623936 -466220169616387487210768242042732544 9453308878805693697962646635020288 8457594364265813502827499983208448 -396406030355012565493503245001162752 919162064909098681611187965132800 4033245652180467571895901209231360 -956372169510011524992187661738311680 5174407642558431340401179947433984 7876627357687333145112342421307392 -360393992312316451200323278333804544 481704247546188160385922914844672 8020274607485302442382953061285888 -627220748744111412260903888518905856 8215465718278105853434645704605696 4093866276331854203855353241665536 -559618923579215234451507006419238912 4918439733284297184650945508671488 8879353549320051980752996521738240 -440154964071832770035009769692987392 4122493882153053084868838590251008 6285550654552225695999110378684416 -585089310129190098728114833659527168 2844185182753223383724241952178176 7831568628495547512730629183635456 -838958687130731552757817664138641408 2804411357410055853675746378645504 6548711958732387419528057025724416 -114277892451418753019994296268357632 1688690926438318777455873726873600 13419432499161498657927083327488 -861085606403492133966236212556464128 8674772603733907836960883192365056 210786632879992982221919277285376 -699101754719871229201994094647181312 8569080692039706897623767299653632 1398581752245386211938848787660800 -977284997457792475668716438184525824 765536581166555053671974415892480 6484196572258358806527681425833984 -94671699228943778807821688194990080 9760259026047871831594610993397760 7513796275342584207710378642112512 -405700274145866070100570557462347776 9733907643486288762819754535682048 4574516539897730265236197192237056 -835326500095524693672810513055088640 3305317523066207652597125617811456 493300535464780870784492549177344 -251984541080004724436509030474579968 7119744512921745668644777576366080 3799124336403603690004809064120320 -352616363811455776963664947118604288 3228532095335487371979963674656768 7725428476645742432603289897926656 -262366495180058413731979358652858368 3558540204054301324843546650345472 822000294006996291558963478003712 -783388566341780117269792883816267776 6819019299611782547190916623368192 4002552984870842223783555520004096 -88032140734965973982577406953652224 7679069255242462590758835053395968 9987370265690478345521227022467072 -238693351093128966426925960678866944 2324452420585407068956165410914304 6104531585835721880050070194225152 -932007053704169302199482788450664448 9072358482112806983040343918772224 1244317126283199807017260712722432 -4242515079656190259396969565782016 1901334719415514485513732728291328 8638853329704445707094971624980480 -481287826892473985940227849185132544 7479451772634547674048585449603072 1824517795255748224490581730000896 -865633627225113800783137278676434944 1816686116193080636891106274967552 3518884233237590167827328660406272 -44750683009645967554799272300904448 339543875874510854349080569577472 2083766642437887087777927225409536 -134711420900110674046456364472991744 9771778958345552445160113422991360 3754757606331150924408050616893440 -5015066525209468004246401945960448 2579784044366753406281002988339200 552708687976885109853645046808576 -439982606025655087774893550371602432 7409778283201314264193920659357696 5441265039624230430570192371187712 -673751697265785152436878068498300928 1547657877978619794182458755252224 5223605144738328646998319408611328 -437594670988640601004977989137465344 714859372633510965374310709985280 253391645453129780846870573088768 -881631237952378465457123758757117952 6519728032354339013230903871668224 9040033936104406909861331826900992 -626967837191364946890670447144206336 668801405963354356464407613014016 4681142014408816523553265921556480 -675549443187606812819732169886793728 1478183249928104313357120418349056 2052778926646883003178376400732160 -898942648502683721088822862051016704 6966352552279167954857526621634560 1135451172366790038091680626769920 -335536257083764981994121578755915776 3656735145070298404712552046002176 1229459690492796583635986937806848 -221797275018013780116264025484951552 4927171956002722265569768838791168 4943950642304513079915841232830464 -926554887187508690878355215189278720 2472274130522162092707530751868928 1115680427171573955694742716022784 -744185173268125346142288128226885632 4478115086034713638937886715805696 4419812742863363024933319734198272 -532813035925163474549247528600076288 1501698654281657542467301308104704 2239331274074347396921969828954112 -906884266127923148694170363873984512 5968775468092110633261460273233920 6529348571909931635109746310119424 -317301615922185164698276695401037824 5058976180919265634551419065335808 6510380440966313779747213830782976 -579261723977947559911275679646220288 5247739379401382081703771367276544 7754288592499120870390828277694464 -13754308326499586943069528105418752 8497709693740182356673075991281664 1108565541555094430475950458142720 -842205230025274683252029512944189440 3247443511794429448749592300486656 5115987220786584091055157950808064 -343452312929641003525442191296036864 5275329157768515845635645926014976 7548867788890110217154052466147328 -833561648367361104769198851759276032 3744788186715844917096078492303360 5172409829218356189947529799925760 -394097757842914809374565108740521984 6109548926490450165233032879931392 4263784569556641287403445732507648 -830448600526192417763621377421606912 2030878946666947040077329742168064 6542710012788252861355036113895424 -6945300277917060767111313971216384 3446319032051107234762959498510336 7544101773469126465075234004271104 -696760784310754645651658191172272128 7163559597868618318870274568617984 1037893001932588421605211968110592 -429535861100747282832761036224856064 401168310513117269735190055354368 8860651380455758731494656630063104 -483104098911343868707327677439148032 2334105159628269295757140250591232 6068730094211043860983956262354944 -377527525190732261842433528809127936 5941672100784115196968019997753344 5846752195329113751881421709901824 -254916291628783907392401433570574336 5819568559559811193888058814496768 7375188131928297050404423100006400 -309226452328107442937597814047244288 3951241268487235118097711266529280 1250263802248244175099715920068608 -888789643802975195509708818363711488 2959548614959321350424885358231552 2842345706568962842364350268702720 -200733463037186401838138789944360960 290845554969165041435751730905088 1468210681890858939254073177669632 -799156050224967188270764487717421056 9868651544724138329213688791171072 2359093207468436154393915455176704 -188764990809634312350876256635453440 5717745237372656116326780175908864 8991673880316191122662213900304384 -733312086196431462821656384644317184 9948730628375285773895356697804800 1110147056420264751099981739327488 -626794555653316569834895759210708992 2930991164612121270076322204352512 9631737722285134961557449214001152 -130860953378607331268326936442568704 4717026114004320156740986507100160 5790831023194102549401043313098752 -456121576354508458071431722269933568 8620406601621438065119163085488128 291293158083393321019355651112960 -822270872847820272838565046912024576 1669357508656213776339652491345920 7817733833811980972303567846113280 -71153913097127045503063104730169344 7384965679301549275725152416432128 9122904398182486267566995969933312 -40535932795899928238626016684146688 5750288936755237587165920951795712 9599280508377043031695411451527168 -121448895170415654627056843438948352 5930784920217653257099167792103424 7098453446710335382935062131507200 -411721777003154178967592894388502528 1284850352294630739703885197213696 3140218155813299654229005474725888 -579474695079885881416218663364591616 8395637608298641154955446360997888 3923247332372274591260779881693184 -718142078912478803298930739604619264 9058004542643246873413433872613376 8655472251211099394116083603472384 -851492363918544632646298519860150272 7826649286314239479381130364321792 5571094925346630795596479860834304 -649775009106124306834301037282590720 5722912885347050539505487731228672 1703325374240642699753569615085568 -965081341573662379167532066365505536 6381455430812228480685725037101056 1573710211678707005843538022760448 -460074400478960411632660106448994304 4955032967859634022621234260344832 1553989594033403761891136438796288 -741602138111705086749595425107345408 4876613150049575871640920460886016 3511159000108439749502898110726144 -353130456623151717432994925929037824 1794458918924614078542797466501120 784829026573680966035479302504448 -467523355275918464044084145051140096 2219770854110195045199549434953728 4831260935101835203813875352862720 -529994603340672730249872837074485248 7015390433907272082133913259999232 9106121135819435585811279570272256 -437943866524387880451545162995204096 8598533001664873395708610912190464 776664464315154691314314484121600 -843213384390368407290043180177686528 207722714596215855793334978084864 6487982079467009620284982083715072 -371585308680451458294636931021012992 3450706956685655599358779766865920 6806396948939794091903859097075712 -257861457176768023649611552923844608 7386737330208105110986247815299072 6476296005699618560889656077975552 -610506855118086421660685865760849920 5681000926402585283357187193700352 1512430540104056422376539881996288 -445621150107269768258147177168109568 2265790936915292126525757321117696 9804445118995964732069113506037760 -617372023592388177869968130114060288 9727127424812720034928991508889600 448658896950046782809672737882112 -438987284685450682543293884417441792 7779114135432936436321081878380544 1881163896683283922221775278047232 -73264861253100565643101156516298752 1781722545287652706428815365111808 9695279186033383510174912699432960 -153611644515344657945053028847452160 4481041442638949662266159865528320 7341840843459490151919194231275520 -35715284300457729677275545164840960 6716340274490274694295796890730496 1779546847144083592268956062187520 -963423764474855055464052311080304640 4275762115154071015208788500152320 8043536296496798535237502521835520 -809306734697564866926164953456967680 2770582895560038450485961410215936 3183618332983654369721204063862784 -155314801461648072794473842304090112 7311557431832902837373195507466240 6271273357742052630700159368429568 -306938300020004916918371358976507904 550377923819904388164812074385408 2249360929570263805937580402278400 -966430183606352506643455733405843456 5594712637115068155095989941698560 5532851732057506846038918690766848 -124515573853103696596667305757245440 6038984573502756700492761382518784 1622657240583035515559397136793600 -822993652234697914514108302344847360 8752894577695964182341463069163520 5368942977226363072277101141819392 -367206567962322568615582270360649728 3166067607831875739896834600992768 5463355585479152811262296562073600 -970467144628710648095075941488787456 6434486263577902045074376504639488 9770150195784399571400130820046848 -877288607386553890070610075382185984 1127756930658998564229421878738944 275396827963946342898413212794880 -827965176802372422713319917111738368 1664372207827358720473992557232128 3988541313950939960720634662617088 -119620132559019846020043384524111872 3180015093089845744280852733362176 5293819702743702916582901370847232 -845729122788602604751929919567560704 1983385225621929881741355577769984 5769790083307768757413859695788032 -40048651737628364579001368875892736 303936307358733131067259160100864 4129915356877543482877731043016704 -847023577918594962205688107347476480 7737768496848772302087527981907968 2686697260499969342610382086209536 -747054228407638589073104217256755200 7070102826221766210389688251842560 6040080664353071233004228529094656 -921530775010617339602618780940763136 2668190060096675073851864865832960 1454449224835757571516410001096704 -750794368197168825827117442717974528 1844983807660288177977360321085440 1005132319710721975030546085969920 -234194416069869386480340084316962816 3910453924927848724569500751495168 6656135649565670099746664350744576 -503905442238799345877510863187869696 4985193236683043030471274045374464 462142120613268880193362042290176 -104890254154020470385162091820482560 2348957607994275308944169111650304 5121293756726266084490663157563392 -860169386779141435552533815779917824 4583689209219302725960517191467008 748506807518909456275103687901184 -699097876731107453492402400698302464 3579061075074794702097042341101568 8323584618012893089019296040878080 -733751543545499899763018749769154560 602738437259678343495057363959808 484390939211361334756530574065664 -239649017979410005429748083229458432 7829125456302013040575932836872192 1705679855088062849183773756489728 -233792098335914216949204949825224704 7764988094597568376811735622877184 5201214168480757488263181216251904 -716825069100419557676414209387134976 8522417944014833655688450893938688 9808603309046277073901544076738560 -127314046184944541935283814034046976 291156327089777123766533978324992 7157261668601813338317347880960000 -192267852602066457624293860242882560 8850423189004740850948800560234496 3093836789602243824459639412490240 -722719800659044918639999997192437760 3816135944100711692139911549288448 1726797693992138869219099792113664 -864683385498832133245109736231141376 7564244223618960698335266061942784 282622190574175093934730338369536 -464234792465152181818022566899482624 7638842621391456257504466578702336 1359323178766494455482202747568128 -374323148813331662924851513254739968 5295946555129138281433278927863808 1518556308938500658823958341091328 -143150681785145703676123840124026880 5578241276712038699174373862932480 3521407419138279229587841691418624 -794505552724484923194491163358789632 6079371091972937754703565166739456 2434885399817165480728032201146368 -980699684877404907617458832644505600 3228434328645134893292680950841344 1366807815167708749342035446595584 -902206282423865103171766438064029696 3077370623831387041388052571226112 3174693788270896365791971739959296 -905915639080562347729452517736579072 5351703628952258185155067827453952 5587947744531446431217846373580800 -32528628309334821848740578811969536 1444874222954963533011896846254080 6459603243005025757864040115208192 -445390438528869288439047802616545280 7182384313936267016478883691102208 7407677368795997986391122809716736 -903422202327341320793164435339345920 4107054835249130239498172405645312 7765885164403772351683936638730240 -486294688251641551424189603568943104 9125558716885147072143016750743552 257327823798204411872810031382528 -196181334200198901996209512279703552 1046861116336412715403303714816000 4766962921307350037255008611729408 -825561232801931963783229761269006336 7555041712634118620272304129572864 8944267791451337664632836044357632 -66322816214471463586048524094013440 3648422182115608557784484479500288 3897039413837238960152365081034752 -840268970733007468048354257301143552 4291210340204017413250782110679040 9173006089738740968187688495611904 -907511967345739827515136721891098624 2174771891128063732473828372119552 1181428606508256830744474010255360 -78510355479297411238998873351389184 6765801130671971483051152084303872 9469320891312500497580976959913984 -633696942868142681068664409454280704 6415277364035301106529435541045248 779014068248990826326190481997824 -391580019569872697349753754884243456 9524374143007797693679385895239680 7612805180895301996720609843740672 -856748775185700504957933300865826816 783471428433051008569277249748992 6771595110813237743999819601412096 -445770643084040138071541179771518976 6840256294752772123343559518584832 9522389039971117488916126943412224 -465805391649989479055712477429891072 2226666776694002538723911541981184 2151338503646140943101560128274432 -7081892144417189899083605623177216 7330620762830904581160071478640640 5234458044270563783634129828970496 -930734603022015476416740757944139776 3322522693107873727268039419756544 5012812377729265067147457684570112 -503461198589137889805174467224141824 1723541252611079225141564970893312 5162325952147861137507911030800384 -839578957023593542169820222313201664 5848751907583668136627364467572736 1842217228216827838817325753040896 -2358042435718529098630988654706688 4756996165024975751776971727568896 5782233338057944626500114686410752 -239653583448231980308289101697646592 6947653821927698567186855292305408 3629626825674634838623592850128896 -99381267331658116299364844999540736 1548301547108942573394890151952384 5962021799864744903422469797314560 -269548268178835045370251841693024256 1429345101559571657052532653424640 4585577217943735753929809075372032 -676763523472556618877135859899957248 188346402553563521286131752632320 7031252728589407284126748338290688 -495723352432939817383771579063730176 1640655489018345750374430491541504 8700796799687077480189800583528448 -207729185723330795226045016088510464 5931750681073591773723215855091712 9894172965885149881645957168234496 -156087930276309774590458454658252800 1689335492020785967949293604044800 4619767205744215583926134081847296 -212995189056402269678224746494296064 1980487941605898789282302669094912 4751875761694149002170555072249856 -889567228135768728558094938842071040 4711297149960286045034418028937216 6113973867613828740667557818662912 -78945688862826506135541063092273152 6594890051817471721548052126760960 9509369763236466349130588125921280 -173437793911546030394295872252805120 9956261273726456808342490097647616 2327731051268211087786359901913088 -867998920319304096977308160211550208 7754737864192973487576472981864448 9101049165279406049868180126433280 -873275926413828753715243497566502912 5121126747880326610146225192697856 3887954493311470560564493638696960 -430607580691506703841072434775064576 3225922101585107911882867474432000 8945909084735815049753661622190080 -532354199527628907634071710747066368 4835906165543633719251197702963200 8393130718665915540043337146826752 -892647531609402443991624131381559296 9606888181727235500094193835966464 88815401843451186297153767079936 -366990091824326471818290403492233216 9961210672487838873675299643457536 4593457732003098591548180191510528 -627208088235277739432932039263780864 206422550864748227592128246579200 2460463309784614221273591829233664 -585337260410216264242149980463169536 1885744022039914379452630140190720 2207723249735729648300280481054720 -523505700552351726107458309082578944 5322613835374246633049900244271104 8377934491227819553459555719446528 -79457711564198138056761378464595968 1729244507405648152189390993489920 2637899717637247539677598593318912 -10583873080419474745789595164606464 9137591282208136377299291953168384 2503122324358915679852285850025984 -212152110628783106335343281728126976 9492190528122506067210662444007424 2546013896511778376329372941418496 -966515940831277420819933494343892992 1561020919971505943243434798088192 3291548654745870042741081775276032 -593168476537827111572544610312912896 2778589814407744010511994180337664 9935537283136562555042398375772160 -673085321986590091160762267249672192 1401488633479603693078200679661568 1784350545327175403795483220508672 -504602501130295511241597859114516480 4825665948376975913330118622183424 355410788059461376570686707859456 -147784240540184414924153559858544640 3828103040521778142120586850074624 9759579267560980998986538793566208 -260420172873318069099954447858008064 347975899973352336297665675395072 9682481488117958045673101130203136 -822854689995755293011193849475760128 1702909074161536227104189833019392 4867863883510998791294315336302592 -317035234924631259369490607593488384 2061132901969895091683110357565440 9538459065620644532376561113890816 -950655580775427426758189319809138688 3317360843074498887357540700520448 9946623265173721033051454222368768 -291086774009560165811430572697845760 1332686234430904401972642608840704 6564487806329176319930235126546432 -699261903275847823543269286901448704 558542350992326958059514251706368 342741421474558141293859002384384 -866880820225097499642988720843390976 439827453878444544444988190097408 247762460577151710464564648738816 -374639565016253841290022211750461440 7707960859815862668649496445976576 3399371907347042389196245680783360 -583107738741326453768648825203851264 820789036538445959575036986654720 8314088783985901321956781199458304 -902933825261143586991821848708120576 8315035675833082365797807645786112 1912910572547511286638935134961664 -126153997485099425583164372526563328 91165702730683078209695763136512 5134014316131860378029422792409088 -267389210316773385679451653173936128 1967468457663473627992860286517248 2633268517679765433761039600582656 -24137037472304626856431037410443264 6356055850743938051864376322818048 9242639348244355956239139057172480 -60195849976146614773368482617622528 6724113743963887956991731778453504 3376758098106173800211570975834112 -516446147953585676124678670853865472 5367219596396798527772791689707520 1519458722276832300556670642159616 -114219482643977026386469787698987008 2841898367522115600013270569713664 8907776354626586730986596699471872 -346165686376275867083473035318001664 6136272736983550221033350008668160 9810643332059144465373413991514112 -779344579457392593245757011765755904 9827102411992378581521939606536192 9835830127718801610045502684921856 -393608585945717074490375389705142272 3652108273972960865375228438511616 4666556730083214720766376721514496 -487999951653563243070843476529643520 7987121826963777460548546896855040 6864733837212755356620159564382208 -914152848199430187858574709052407808 3875278567419507251737713371512832 8131105205076507510957353797156864 -745983043100934283020532108819955712 4299156918765125387929690533003264 1258337441109537103808465454759936 -238061433129000777033770233311002624 3533338699427394727242691162144768 9404494005084347830410951033618432 -525379500447165681380207131847819264 5067596584940143675759519537823744 7721288598393510826898398788976640 -958800868648653921845197318849036288 7117698529254055076841176774475776 3588603946537580121227944517435392 -326878657592014898081824579155656704 7872378640340860490296960676265984 6241629805207181925972787354140672 -375178257315077369657161019906064384 3456257790329280504081422550564864 648533576458599432714140113698816 -350475855361830153398066388867743744 3144299654053643789517197192200192 7926722933583981621645758078910464 -387557060431177782892108842746773504 243453725319281859287177465167872 2478714355586959317790967507976192 -556072482119031158242026063208120320 7185829267273055720016032032620544 1333604745986663046096620710002688 -354268609445844477873254002038145024 9788326324366590706302465813250048 5363982647252023666689451992547328 -421390889439812462141633425093689344 1057789999963779658678678277062656 4039567777121890586595958477291520 -339666671808153880688395287133159424 2074487461165953225291146305994752 2303280486035618605334122310139904 -904541043882012544477316332598067200 8134308246161049960436182733029376 7502274722011661730300709885181952 -6853113270251890918124255310774272 7642311486416804224294206773919744 9750671714465380537972216859459584 -992428555976064006296795497168371712 4531435987566395952226125964378112 8819864987155710975082621929783296 -725619518855479018716917340244541440 9541178256177193538190473340911616 2581522955441626258465996180291584 -948473173865494662144230273899823104 2408859374018778165216095925960704 2320099543007740934991483156561920 -637979589304826886646610438714818560 1721705136713145135695559485554688 7717543804149069038609970675843072 -716734113211957972383765659864006656 3208284657571574504455907139649536 7897663939481619014023619379462144 -788622834984876858239050376510701568 419441056027572060604436169359360 6913260246335073286457930576560128 -863696281729623195759948904538308608 2768477682974693334653370500120576 2681824013204139799824832374243328 -558120188771521566037177896498364416 2536494906057439085975005659398144 9984136205556871779138802106236928 -61165534086391953836283877878923264 5879732190586557827605857849835520 4849156225267033869618564485349376 -277015201614203343736555233632845824 2787688799150358995388167499022336 7792831695765159754939319097229312 -361974108882605452981511409618649088 6385604619244175562801289422176256 4042780148304824588822812322430976 -945286585654816684186480926624055296 9182564017119265837563096772640768 6629348543757955031494497499348992 -88019426405984822359405578971774976 5770813967817240713655928374689792 1733312943735491686779159327014912 -645805112360279125547078522331201536 5020037969070146639708701493035008 5842213036242639685920178070093824 -244413973002355738108573377800175616 9823109116956728406165260934840320 3587474759747853878356365702856704 -596823817864529227400878735470100480 2580976144183873278046957012516864 9921110960798499846809371711373312 -790704200141682509784620457602842624 7305961923234093873020049553358848 2693742269971897647937328345251840 -924247594602759912843669677134577664 7848479287347836087693220675321856 517997658080136064739978661330944 -746179965364013528510293260302811136 8225523640502219036785924720558080 7718283916736412132456106412736512 -70353039216884383362314844191588352 2554961150952018056827883107647488 7249230079227645564424104211120128 -189592082048951884513038093214810112 2614391489713452944007539460145152 6906697607548823179434084580458496 -685977192286652891446934834925010944 7661760726328987832965819116027904 8025024285196767366851834689880064 -329895367164839600121142093379796992 5350066429692446028552961815216128 7140126713946166878739726782693376 -67211472804646762815351256395022336 1600030745614060256149461931130880 3156154592535696101622395613216768 -508814698940193201878559790452441088 1936485472938510993406618689863680 6707158288884162474410629654380544 -731420440014476684934449120789135360 8362082513688356282012794561232896 9816683154159313057905759464980480 -815117559384885949740842845277782016 4671204953942171596851861268725760 2445363716145049500556282109624320 -443654808192133693174332708404330496 3083477102980709758569281168080896 3167154370032012244634552496029696 -966903328744751478544222437666455552 1968760083342706642853168538451968 5573130627208381131326118101516288 -104398962001166716942029868094193664 4399133391891923462634629037555712 251052843750974302202118939869184 -501765426047660141398630539011817472 7886137232960081550368463615164416 7768333646396907485465743420555264 -107981362102592292085010797883817984 8211222768192534747495021257162752 5175775832670556007528297933045760 -694729384588996491465037625862127616 1069149660854435330846770577014784 7604605995308669535111374161575936 -118561163337599483704514843015905280 3547613464938327417986300478750720 6623220899136112075653164501565440 -249364750766403175788646081121746944 9511830659337287362825642544463872 3421237879517370091285946285686784 -207587313917747361466489146456408064 2508494700726302259808774779830272 5413843379867784044664592514678784 -734536052984463758607660823934402560 4385007846907003564985641804496896 3001158547043183951720740110204928 -762622703197117092773219421567057920 6723570133331067646955134524588032 7478257649578285019779125131345920 -159053287033937028399130961858527232 4602692043321724667783159207690240 1637633815744087783634970815234048 -999354225838320320401839343750086656 1363309954332438295230700958253056 9771667701515296358645284844077056 -674966802713272543116499637940256768 9350671710301660347255319582212096 8850986540523173328632396457705472 -619835995737413516002494342947143680 7567522095988135935913239580246016 8450163809696460147197582828896256 -547714519875845454430627994651328512 764059587296920867791289077202944 2297008310512249213880319592103936 -528094099492988852934137988264230912 633879857441618488068369362714624 827539002185607006766616792793088 -643342091162523517022587109666455552 4496655061606418530019351378001920 8062903327591639830694614313992192 -468970788793750140744655923155304448 6044329280345968845551211355570176 8947494418796829837394203518173184 -309475066163931650159672763441217536 37036909432120179874266754318336 563800969910335687799036750856192 -28640788386108753566558103191683072 2877260803242037890171414798925824 2739193315432555345179588046094336 -372869060396300790544259535144484864 3675416363378872947651694812987392 2914449855942870493758201316507648 -932980728818812326927308270579220480 4170199615479222952514674130681856 4898034286844594271682032323002368 -433960444973324366095813159612841984 5914511225341084102818095840624640 1562698021678906193392330191405056 -321922323856961692529667698851840000 7310241277342408972951176613986304 5236109748342260054271672230871040 -516141779764838985535321813874114560 9926956489868186325649544846508032 5436309978007932270622854516572160 -497405170636338242050509487701229568 6772372330481546438740968235597824 228214703370014965180001643659264 -601992981925551997541816503090806784 7731513662945465474543223457185792 7385690029860516865205175574331392 -10839623499094726244671394982920192 4435465966478509998212336532324352 3333397872533986611100184674828288 -403827837096069970347023707093860352 4046117481374717511889938664128512 3680027784061599646534809126174720 -505848868169064811250228321457274880 8653067747219754454575957489483776 6044447377416929761637999256272896 -824769946237721551129209251110584320 1347795609525339874009835504664576 276281574254600836719991349837824 -744720130199352704020968062987534336 7742024123505209330871509712896000 2063380956802475012866749681893376 -58157204025783661293021231889514496 988444745543475400376964261871616 6012421373658142343186333067902976 -477953263126049937025925792162381824 1756718165842793608775286501933056 2169627537719533039076493068599296 -930601259784639946360147888608116736 4721967002341170907676876765921280 4861168322070899107346567003111424 -261493510945896925367523290260701184 687757072200492365299077359861760 792330121956665061995811310665728 -850095243948398610784562435548250112 8696857098341868168500434448678912 4505043251946813477500087257006080 -401561063101369698546903911977975808 8835795338898619809241939042107392 7347250337669284002595419812003840 -852627707930455637606075889486921728 3568868601454563720062195556417536 6855283009673387236515898204356608 -528151061344790810741303194782007296 4709327521913508126524636735209472 4154575312499912045337051635122176 -538934918360784530409882377674293248 3976518809412266825929497694437376 1473195988824540007252163983048704 -445504882861167081298682840524783616 8556506843227775776857419952422912 943227522586893230514759104724992 -928662255931896617755254095895068672 6351611265431906981589334928392192 3146905027248795283607277086441472 -185953255904459698629216787211747328 1357551742776740729022766928363520 6890959395167764116119788957204480 -57902300878251926416888843160518656 2309070028254141781823417936248832 1787549472468375395496736350797824 -229971388784705875916815166544543744 6117932551531022591673206231269376 1140177690598493424396177848139776 -768521609941681311022837172069728256 7533773990139148903104598478159872 3245792163830461905396059359674368 -55961223080109092478489178442563584 9984118871645834996684050713804800 3450405029574427640991664666836992 -34498535675759076013596725724839936 2998649231965418094410298455752704 8629505925605517842317081212616704 -417700174976323505246866501349146624 9921299607840332106692289607237632 6493679508692855953350996229357568 -565175934387171710868628400016195584 7439307510314689000454496486162432 915815352590233475925321124413440 -64384834764258512515796085399093248 6478649827982784913783346083921920 3312675796120633451889325072449536 -37747972956901553555115804289138688 6407481774329205031090114709684224 9821488140239009970699772075442176 -791827644585537103668562204410511360 5681974216743601325173288707555328 1274184337580054336592893809000448 -826613360487540536188390962892898304 3240319009041085585015704440012800 8526465928691816193121082740310016 -648906841532639146177740884783661056 2274714092377872292762114488008704 308314553340198554981133430292480 -136099844230940557604928607590809600 7912077780246937796651330582872064 178646193188894670145283220832256 -810682597505288528732539031367188480 5708083063825414576673542224478208 4071887589011835050773941298659328 -63849504575388751775595609207078912 6966302002604679562568179453526016 2708548232007964192343534975582208 -688001410190371417877213360724901888 5637059235564422477813308157067264 464443630997773098266823902625792 -130503222839828830982087735777427456 2279983978697891878394262873702400 2141352889116446242979206953697280 -31851832547938060270472478647648256 6834160910978426194297977447645184 5390797789453079531723124891451392 -826310292883381946350796550573129728 5596612384516668466788622219083776 6301005764336845022210435611361280 -242767617346637012035780276004061184 7262671696526923844417228143329280 5642123415604406817686015554093056 -679815265739680545647745001511190528 6143529049573583040173464184946688 8171098544558201111872656549871616 -565782159760929987100003198966956032 9225407641570339830025134983348224 9734492935657135924760197369692160 -574007575587615827888550287752822784 288932515478198503121434108231680 5296205164251044231760631608377344 -235223491599845486977644782392705024 7360194758544010332021793379844096 6751960444402836675002982096437248 -783273684181015229776503218928353280 8989688226173657311072142147715072 9155762753450156652591232837484544 -240978574049342186521879674240368640 4106174265866251015142439487799296 8493128553711568222700192925745152 -287896428961097863585976415997132800 5114620433738491072820725856337920 289082663136471219873704883257344 -834227343531712797329735368774254592 9493116894590954947030884980621312 8560234386444289238371153492312064 -989137619872588135442584318557290496 207934567215974675485361012998144 9604697816057973754918981513248768 -659049414405179726089194743254745088 8932526925084838855110089712336896 6309336191788051779740581673041920 -111308984042541131067279832516657152 5865209647417304712608166287769600 5057980472545852756745701388451840 -321092342531315943513168214054928384 7970817688719290971372217039847424 1388389611761796027705949002137600 -170445441684148943307952499260915712 4349067362911050215558492018704384 6051807946935120056189538405449728 -660518620194112580279237521977638912 6388069996157505107927010585346048 2446813801856550030051048368898048 -836640363719258545946439895824203776 7940292005680316534108802468806656 831747494709290134214976697532416 -156006699109969183724567765241036800 3034435661567530651099475415662592 8932405122381259817964111478652928 -997012149296055183292387553701789696 1989186821183795994319477255700480 2710841804596668926407161164070912 -441957523429127443891715354195394560 5583336310034866785826049781399552 4230375875530457574947380382400512 -836307751001489414738025551019114496 8016579890035993137461217831419904 734500110209552609819250072223744 -213561247482889812376149738525818880 7463415854544003588084828018311168 2114144038343923434100630875013120 -369277412651199022666266184215691264 2781799893783530039862929668440064 7516503128569733812383935304302592 -269781646412044611226919328985120768 6258768100230480202278823775961088 6807906820779627899695730681446400 -464695320805225947551917531484651520 8333989879094169496578489826934784 6310821795831590103006071998119936 -742765997934677421558184798026989568 1967586342870047170726460953460736 2739714842617832277311663338684416 -210690071782784508153622851508764672 8063666673384612603149852287696896 634361727776223794910470458048512 -744864134680626299169073638219448320 2172866464005283679434779284996096 5652259234651979953252567477125120 -406650526607241814528221067922636800 4240040809107591085701788065595392 3300308919962463661956098934439936 -451867615035321170077843033465815040 2144903660502612606652447631343616 6197110070749602854161067188158464 -958002794994234225938044398981873664 9547162337023115512801538602958848 7866370107461960686132563024019456 -391361972945253264843279393294909440 5603789493916171663470268998746112 2714453585595125747715378713198592 -307482887817513369253037308653862912 6082566242808062617469680583966720 4229741263273906941570149708201984 -603696867607350351240784270390722560 443791974125799056377470336892928 8776188467798927343597451646861312 -172258343313042367274228144165355520 9290969777286104234901274630291456 1093962386026453311418734357774336 -812466876437374310116646303192580096 6764318870048495388506907153006592 6274370854001836826955720154939392 -875361955340243728381755900861349888 8670908966314529528519812555210752 9344161851636815148297854461673472 -556935989757982284796760470618898432 4493789756056027480396459661066240 9744900798711113173515194050019328 -869394827270555215653083840744783872 6379015278059353304727468785008640 8571660276154696892750134899638272 -76977486468847434665188873761456128 7216428372427804707892722120261632 1453303396431776212651123234832384 -904800759550209367543180135357218816 4397866373250448995240189943087104 9083294106231507518166860937822208 -387484769425857031333627442881363968 1836057126145160901472113345429504 4760206638897633747798362712702976 -517514879157229203101369643260968960 8204463070241085120006154623123456 7920241662418333132139621020336128 -569250424537394410261769983755288576 5074287751503254272410240319225856 6560541739070830459644335005630464 -131242302257419975289144015709011968 8889108532813364805679090759630848 6112286691308258797184089608683520 -438723307500949194654328721764253696 23406325768221550014179955441664 8775057690656072659588139616043008 -587672132589185565554589853831659520 2617421882881595208089139675136 8122618161252103281123698587729920 -735617235370395707430264069731385344 3311247833694031623507921709563904 7109750796278244279074266739113984 -660833094337709150577293675198414848 7097429327365384665093229936377856 5684621598508593015684849551278080 -123149103139840808566067103990284288 580910510064016971091613646323712 2196023328116506772701459381223424 -700644941466787925096484893777461248 1884485721030745247959013897797632 3427358548812405305362391737827328 -2678957707021634157658335648677888 8188501796146075300514237538893824 3717307253547778214407125440921600 -234347328362203698834085717208989696 5196969922789558670135462184615936 2572274622795921926217771658510336 -483268074845557279374493242514997248 7252775244618502488923467046453248 2745744419696999472148157929881600 -862712270938464424314708491545608192 2604866897764431033750161580883968 6141796103810149910703623217610752 -293035623270208635571868409037586432 8360524595845573751616323675226112 6992671377641554651486182197690368 -826969386358809818114232186006667264 4817425696770814381578574094139392 2648609067207410029905805129547776 -588244110744553937265814623257362432 3669086557000004984143638914138112 8714173698689034751883294179065856 -470717799144915955166444482262466560 6916972072017179918663676141240320 8183288527613771820668510818795520 -425430281875298689023934185800204288 6062371990423863971051541899509760 7332760554250388217628925179723776 -373866747503740839544258943241945088 4633363354817317384850752369852416 8006761944364707539037101628588032 -380003034991137908895014930459131904 7784282042818100490438069010300928 8253976757142978621714684650192896 -988757096954990240761125619596525568 831591691905128041051646907645952 323083785925906413307810419834880 -329350859567809920727277765908234240 7378251601908008704903304947171328 8624474612774292463337152838631424 -310004084351161254164219474875514880 1186911588850671914479588411965440 6931527844763735860622388847706112 -320245264963952962722997812110295040 8494251489755584752830814344970240 3617187608089517830845783110320128 -74401643865560990598925620424474624 5987729132612986461053497792004096 7028047661213308469617445369282560 -272510245801267613906812691785187328 753148817417097495610375580680192 9844362231838021983290341799755776 -163852828802952024607734061298876416 3626782272629427780245017151406080 5306012484218308835866371407478784 -759533708299246588156247051964776448 5307642437979101661710210392129536 9312767537390877010451204130471936 -836604967732279454106568926771019776 2152671746450755770239861571715072 8532868268443338924494667869323264 -769863709509478823892009713708040192 1660017723030299922178936282284032 454812702177834554227170685747200 -125550204439277270747054637540442112 6416007581604546094292051288915968 9130735016474999428200993474478080 -694414194129939032913321351159218176 5993230813541325727943286910353408 5741267897986664869642804964360192 -853842852788180827427603995552645120 3179002347001107455640536436703232 335276536720396027581085828251648 -322311692630126850636512252965945344 8596999581953233104020646825820160 6840309022671183727818573596327936 -355259434782611567384003156295811072 7607144320010207655717954719318016 4975334705424622655012705203650560 -1322627143767191438224139451629568 5337487182092980354807768645894144 846430016142268672134636445368320 -983469853789673375854897538084634624 7259544024019015419816426615078912 4988147379427091831914805338308608 -356580723906348342439845761411710976 8303862208911513394557688546852864 5047839285390862526132002878390272 -930850422474688634446701673245048832 1638284851645679282829162880958464 1659760870027742494883568125214720 -553072456264720257502016236811190272 4420481141907894374848558314553344 718420868024860936028863577718784 -414741606079037066604636135252557824 9686611027704641875172250756317184 1116561845460217351359004833480704 -611471123263163042610300748805701632 1207323748154003102743031799873536 6936470142269445425504900475781120 -83465818627819217252160162752364544 6255922334462752734470705705385984 9130872661037652013400311036116992 -819768438423033069044849604229595136 8385726066739948444067383734173696 7887154619522725610735404761219072 -416446597589047783555998906153172992 9052113500474048357081805238566912 4620696105116104031163261938302976 -239409758512748728101060263991574528 2677147521168774353811660636946432 2347171171342188153667433273491456 -145168547201918616572415708158230528 753190953364016263921918711693312 2698811303954375190442539906760704 -488571560691300903383942012271067136 7243553103258857980224909420265472 5774241897252554070563398858309632 -795513061474829808165267859566493696 7295150869557893586359941121179648 7743049168534209545873258572677120 -94397407677855288426402533324357632 8761541997333376501990748183330816 7086941320174765860462157382025216 -376531585225982526281943637867626496 6858425649111101796470222749696000 2239896475356677658451202367553536 -437927357167129237518437004888506368 7152898876087375039544427066425344 431346152739654308797899962580992 -201292350380728393669344710480625664 7908353322487929304973333911044096 3326141639774650682725792640663552 -803524617512737131247347807687802880 4154401865619163183702847432687616 1504784229231789573451877286150144 -57131939923871006452395495617724416 5745064367088392787429653674459136 7708406389092153118251068407414784 -350006220619244533259582906191314944 3927123371533700511002196141146112 2211900301085774546152114322669568 -892167911758010574214488828206383104 5803486965655949723987066922991616 5123175410299001063154007140204544 -912625345313752966972095494369574912 7209768120507769891580606813306880 5407805082103896490248426573791232 -711606939621882989128619879328382976 9326836690266322563327519969247232 6388164250609162846393333475966976 -701350135113469556497701255572881408 3737971029779940217506255490514944 7469196673025394840080117617655808 -983924972759661343857298788298260480 2740685991499866847623971138961408 8102305936121610437364123355316224 -667662368581334662400808930573811712 6586224553769247361161229229883392 179057817457366290669312160038912 -225588980174489956530049971776389120 4078698112914807212913451633475584 5234234165935165506941242029637632 -988436284429422191911697947574665216 8098597857513676730518348836634624 6004801422890568405771804110487552 -724247313509684573822328006238011392 9419959786671157171781845506850816 5353126838789942429633118247845888 -716344485881724036822565789649338368 1886802163008324575432233757704192 785232490420525860811612530671616 -427679116192213616738900690478301184 5040074607275427207352439023861760 9828663048423498278718799511289856 -84968413019032135575433360344875008 2328149402214162488961720563793920 2227535691887024433740933725421568 -903422463644417849514046451282345984 2034046317467082831017608673755136 793125251217154871241852122562560 -322562114649326881347486779229339648 7556620349249554966145552514809856 3884474053926960425819507940917248 -588373479842513566449546839130636288 4996401178032762185782665429385216 6385047532285303438524323985358848 -144925014248531078375062401359806464 2539994189875416688855625368600576 1739184131455850104239400201224192 -41221484697034965359965320331132928 9718864441956200692718125424050176 2382417907808486182962766697988096 -208824530088947658658899246041792512 222212972342680354080819173654528 5448927989058338236500842876239872 -47773425022049172139153889591033856 5637598079794472257437870189445120 731371376931491919980791731322880 -289010210943261291597576125273866240 3092035390676965903291297287897088 7237124234584008096459219303137280 -954075374847935883985671003427569664 4683263065800819010838843055144960 854215744562798546640232716959744 -614094692654868933259817501780344832 3629768473669815532903064840175616 3464572742790583245975834043875328 -833359941648888463216685489391140864 1156910940579057671217370284163072 6546395028613386864570729551101952 -566569998494693066852877193088860160 5851796568466641403389338296778752 3254700977194963592273135249915904 -969046686955659646771852406975102976 8742516296894491531672847172763648 7692416483003980220092707871129600 -104099640194762221069284561630789632 8178128056069136030929925020057600 8534215161049251429222335603802112 -154935147285382046817509282840313856 5061097069597462198930464934199296 4574123658709152223500907952734208 -991984047029574542027834981263343616 189013705491215110832056361287680 4627795529556533207830942286086144 -435638523669115436096159914120970240 6723439235364572936357133380747264 2206010602068587728975929525927936 -503500127372510055843467828794490880 5175415221642702849208831564578816 2765722129836952833305727159238656 -782266633959193950624852912078061568 3421121656785595810770678024503296 1551398430902640552803248881270784 -802404586094299519244370854927138816 5390527754871970154445898728341504 9498020074142190650132889459490816 -439072486316391663752095121757175808 1868854101878959443299057753128960 8770784338644137870132533369241600 -885346329386283900057282266582220800 6087961207630678026007439894118400 8428052727701368256115593250340864 -300841257223335460801580090846609408 3992914698436873113269659485863936 3839938061590559417163573083766784 -972978028031098662288119727243919360 9611200272614818559422574605893632 9737689348365361782711382672670720 -269001271513454494284646332047032320 4870486738068929401566481468096512 3701365895417829365767658706829312 -269600699222169188862432224848379904 3724227625112149954957852199092224 5389764180348344056062575806251008 -909543989992314200910769969659117568 8244787179087359379598520294047744 1353480752020578899052664195121152 -356908968831938397089898226033623040 6829267680252481093732423381811200 7897699063316785705815016403369984 -846563012623355327224573897199321088 1812390722175158138522887235043328 815093104021177942141975484432384 -861393208346257710618187437218725888 7306689538830640325429871620653056 7064605377456605496204376993169408 -301234929233437899974290620177973248 2525076240323170016778229137801216 581340249684231787917231505014784 -185196743637739179699905733142249472 2277698420683272602710206163451904 8369588599548150161888022691315712 -373758915900397060891092343064625152 1355825376239043605325042080022528 1587464707220850119560482112143360 -859091801439908203007616131912433664 6159228447904908853546666053074944 9468114882283316199591138585214976 -793323745858512487634354754553905152 3025110142865611449151225858097152 571934810919709563019826594578432 -896917167739674900895680490159210496 7740105955398918891823003257012224 6344950106298288101784140449316864 -61211711553440452457993631172657152 5549754626589237981288188608512000 9316108721940932348364796630925312 -41922201210719660344715670569615360 1060240965709773485891486713118720 1349058399056046777153379113107456 -708384305509206191383640134503104512 4045398597224328765428869424480256 5642692363960910869266347593826304 -98889892523254010508881108488159232 9461214443550269364855126829826048 4694546067165824856638216273395712 -935383876303313309130377419829542912 6352597103362511469728544069779456 7852049285454691014829193725739008 -628988895106719913935238684989194240 3282151351827683818368244591362048 1017099802919634321996553931194368 -86794324649401173249110013888167936 3127883933551288215091471619981312 3365583842190860319169788579414016 -468562965843993054158038260655325184 3717014584413271275937812212350976 835961109743474104626450119262208 -359546697908517235411585880773623808 6723667417984824333829988201529344 8352956521038233376610935705174016 -277490875696386328077558505113911296 9555899712932156732887353547292672 54281943532232581382602051551232 -603732239364133390460930013895065600 7831762394995466888934504781578240 2576999097869806309566222876803072 -171909521500132878412630544435118080 7655734940817961662086667871191040 3531248917337984951987710216634368 -675287124665294165032217013943009280 4360000630653966593918803441090560 4410377110984450907346152519106560 -222999907203152399024726356657176576 3503050955888253587046131589709824 711459399760845261477514104012800 -157085859380773200250297402374750208 5328402952415782690780050351980544 106263973136914499966321001758720 -299195381871264795314344639667896320 8902450918998030383297122944417792 9163948167963241759157232435462144 -22883885638138231893677132264505344 9057631255044527215788857917177856 4018363039775988201706988742115328 -81737509665347909515852326104989696 3574113096243706491236926428807168 7248111774500296652512589789528064 -862944322206754392359827079893614592 5976572047894903839559935523291136 7662363249609085515961347979870208 -608839612797579959457408488587657216 5284442986564480889790505049653248 8830848212025707911065439309922304 -698894386669326683814393504572899328 9147764305033639398253357388791808 9638013195130399866734313702686720 -635933149651638178153183616765526016 9460388519314755556899479393140736 2696605937622779439989275261665280 -455215922128339594744788775495270400 9391766286115258838394334294835200 9446975791971195308615298225012736 -823305838661402206437993254311952384 433833023605533988494586146717696 2193262770688104549736554170417152 -811278224665710432381520005163909120 9239910537498527732346470805798912 8631009050849192622586131772342272 -26877273892763267173228539063304192 5028140583822683097097932170592256 3609595403624402789489552119562240 -23135309359811838417602089242853376 25830741068012482758007270146048 5799868388910753289400500835319808 -733560591156633359318086880319242240 6920724133283515730448534237872128 2595874207002963776920454925647872 -310692322082481919264116163810951168 7516618714260132736095742358192128 3000279864209143387201388574408704 -240211962117918490288839128237735936 6857137181011044860756626707054592 2441615859414192113066060348915712 -780681569307350434410847860783316992 5842696499982784062065624565678080 8914360192617887828898837918908416 -415542642205436906918581497011109888 3583496170627039285171109935185920 3679196576205978121455892458110976 -878754246649130783007662322032312320 3581083067223228563421576843755520 1707259873244653845368535863263232 -793975059896348102804750770840272896 5181612274186354323753451869175808 6857976560049731178528460943392768 -588575168925873121881001958068715520 7599918925115662758291532997984256 724012196663482489541077332131840 -651324142877061678361111832494604288 4829154139872389157680554937679872 7564967264758447052657760053231616 -164539082144442324591982781914939392 9869825091802874708732542028087296 9946637974140968756597964106891264 -818431645784522452551955718302859264 90353695416260522767793027809280 3485183909324173774752118193782784 -233368849311854642641204255649693696 7507125124493908701936686592950272 8705935049645653109073592306368512 -80964678962669113123335646180540416 3668934912633153447355257230196736 3433464872956946728170331263991808 -529113257999539487317218022691700736 2857944329530710768458396975759360 5888240358441925762416579836903424 -151548124875548149526679067773894656 8120808063164983151878361889898496 8924967290028572786625673649192960 -686757584050224451916491901640900608 7719023696187114140269918998757376 832114021898000988342187018158080 -626378393371712331020463201656504320 1139773924295125189749796855873536 3897555821564428199502730368122880 -118620841684606323954521226197598208 8114510809328700802740608569442304 531460210517084082216191481872384 -647143858868277259897204978172821504 7902512351009040142179728806117376 3549724530720098138514306306670592 -56445716332591772782207446932258816 3686205961491667636163976942845952 6603865328837204728696532944027648 -304482819792957434613428309658173440 3617830907298258071574394311802880 6242937332657507573932548532731904 -738809194150794138378018655538511872 2575184327024465487183255378591744 3958232355788696266726186265083904 -95715608733684890234727837512761344 7979882946585942595374239140806656 1963688820517512642123615350816768 -855431613092446598468416795484094464 119317596922638368825777510678528 8138794778682689770033820427354112 -121538050545652160489735633707728896 9417139183703656074806821518311424 4662786053114063902082841106710528 -158993722937891054634689883105394688 2303375650753272260438235201667072 1422217709795057192774720798326784 -246930767083470496578301910990192640 6191184593989608035815126445588480 9640776107330383306608970911711232 -83862545425478581635583295245778944 2874631237424678197466282091085824 5426438262118546939116212233175040 -936058794720885492444243176827387904 2098180952874161087762156247580672 7801530305170849117978004174143488 -528512296149495609746813768330903552 5887950481621626869380946897928192 7918491239948732220724344422137856 -383335720948541991821465611619270656 4641886187145966097532116547928064 6789542585500019612446704508338176 -205232719792752715991800684870631424 8946338006130383153202449516331008 4775519525005929056486391701045248 -747494843415190888516517554485723136 1699657520455499384965945391841280 1216108123109696176662668801736704 -523810593670063035248289658729136128 4509127198603287225820554635247616 8034571330514914328806426270498816 -681248239920393222435710150937411584 5392776818271708316699887688220672 4653327579473980201799683261071360 -655522603185316169576370297615941632 7515757107530560821797435478114304 9946256450946537249041985132560384 -664527558129091263255817251522084864 8864266177842464437006484203634688 5844641576247209454536742783680512 -489130376563999277221926903536943104 4923622883876297481257486066384896 483972328854640879103642639007744 -518367103092661719003560837512167424 9706531549032347717996976975904768 6155538358719853296086693930074112 -11427091369199271418214294870818816 6239253127348993349717433652346880 659379956521128089626581997191168 -822271540237693455991768836940496896 9236617366667110230851737779961856 9447126937435189424471995423129600 -277379861864359119878685212461236224 9093652742844326521073455771680768 1965961144750585223082566498648064 -402667356248032616108355814546210816 1860075006042748131922951192707072 797054862546143359032716066553856 -168299211022025536773090535488356352 5116893312129831707824585999122432 2286875818018473219151243803361280 -587915341660130906658061839620898816 2712808711002695230898457244860416 6877327145976653168435558415859712 -787769220139155218965791702037561344 5937507095068386589059136951943168 5039019035995400048853870832517120 -734240460720703851064064550465699840 3548477946865219868623610591576064 1265397161152913478464989831364608 -811193420682867030283716389689622528 8482881305962694347744011003887616 8613515239680840317246832140877824 -204949785277819062051042887586545664 8226583976580816379913459900350464 7154153193582690408912983603281920 -456905860981949498039993500713353216 5759781390577225384825317203378176 2941422253162700686603417410338816 -369974621063882392778731634816974848 4858572546093933425476033788772352 9676695273901447264377814206382080 -598288545445397630480295717500878848 6893654680140578141431283291521024 1810388297437092022648234026467328 -596868885668290202878285424015441920 5074751366899386579429362988220416 5582417073898008671526260771389440 -338169466696842168355983964741042176 4655016779018690333713272399724544 3824400787482567029256624208347136 -463418456325572722292097871081635840 963437183944147913086326370467840 8768298830848946398274206883119104 -538969333200670178086522395983609856 4316809245221152670482535012106240 6254291639254596215258415007531008 -826768603742079809248961289166782464 5885398857121698109792220914647040 7400715588918219089079750809878528 -832547681929264396364551508312719360 2453258374251955814228677244223488 52932445901209751207824590897152 -689566853347112677759337535624970240 576445597423790037137718283075584 4475836566311335637282927344091136 -818584327280123175676955102204133376 8949440506680827053462639110782976 4496668540984881909174054238027776 -608578820136573904945718248219869184 2605711465330462859318089576611840 4912773479716494302801875433422848 -208896670658273151057673606181945344 2447175989423679259460317978034176 7141008281134766133105599402999808 -143497434257862600370362244906614784 5097281622566703404334410438279168 5739751617187940516092055054712832 -782414751061040384197853744459677696 5792435852543815702562748072198144 9811938737096867056386956150702080 -750505841975807742591617543492861952 283094973354892346248203291590656 3637908788050726002314901928804352 -54075189304638596336261142532849664 8431610230421626887598320864198656 8295357691433357559378950811025408 -964662005038461331578394263861329920 9766953184423941019571178042294272 2141027174641320551958080621903872 -489264500062205221091698475632951296 9412885738343553823122841374031872 2198328742184165916579219780927488 -954695707771359639693768737182187520 5303617612781878500714141815144448 5325399115007832798184370444697600 -62105506536598684475059781964398592 3165441479820365782255691223793664 1068796163291909147200661158363136 -333016937589005383583528467325517824 6102141379448488185962981511659520 5060496222606015283510069996552192 -6065394307464913859001401120653312 9068038081903640618686516555677696 4961302711833136583083521363410944 -869627819665829038401895435973165056 760174560330981770150560455983104 8584396235376109645395557567430656 -347260984126700211451610486708109312 7573569011634954706205649991106560 2128765114226185031644453693030400 -556267132920327335845410906946142208 8122000956632461461756015183659008 1907609398610420664348521795682304 -9031082457425333790083089191403520 9845824093011632978342202407124992 2154609934928094940245056580222976 -774768808050174823262548335112749056 448427846841502359834818395504640 7964536232248108883543660016173056 -476189970234607257382639893169045504 8712091628717185077525001885712384 1628156261230858084294099512328192 -586475401117811072159522738636062720 5679786508302444136778076147154944 7537842572316535866790514182324224 -784127329242143581341688629961949184 7655806596052950631529253538103296 4566088384145314268405214442684416 -383808932182446007508788420731207680 7799592799833052596235206299484160 8113008809267823759680631438573568 -277228361952502269142693732916658176 1294384768588291298210638395867136 667827365017736179541960382480384 -183634325678603345066043113388113920 9925297124277722335462860053807104 5789773331977972070901358184628224 -357634687535667889666027459595730944 4470259635026200169824269782482944 2964243124045268532998214835503104 -527370748401694405833701432284413952 8266304392470226544243098674790400 1052709838322007236092676569825280 -465290506157429203304525479465189376 2256829988179788399222765473759232 3693689977717769355261108480376832 -694577982977927284119352629404893184 814614676856009920794420658044928 4058250570365540854841836251906048 -99716059965764955823080625416437760 4017388171447482563826808329863168 3817949796971031104660718397423616 -35957878886869145990718471215775744 1812350188791018682692434455953408 1766013122956953616293853065641984 -770735694496238292791635149827604480 9099111546378383614513626197524480 8679649162165485263517424650551296 -733835626928194448676794077437493248 2524051445547701279207242002857984 1424839936468851464442072029724672 -674224437711391050390681169241833472 2227570599201190112099483695185920 421234983775593429629185384513536 -703740218776347372411193122619392000 6163324271377067245001498242842624 7706663609670855645639601314332672 -149154599977305506042105824070860800 4529887989317000667869434217496576 7750740656316934628421214232641536 -662327561948823242081183028157087744 3518067778843185617813798784073728 2603237602567891139751708276555776 -989034961932453554053017992278573056 6563193876477154181277344986038272 4253073104706987387871525169266688 -402944451394823697317876748863406080 641283417917315284414214424231936 4067360850137869994554614649716736 -863816883182618484040761393207574528 3168860960347367255595424252166144 8562334238631240734768335402565632 -508266463645718409649815660263374848 2526328850849720907634842485653504 1969933837629218485027806099013632 -236032737322153952906098646372581376 3730553527807863352949579748212736 7303375706086171916904121589825536 -24345178113528888115140696903516160 620033293400766917755892244938752 9181899157941132815043173369774080 -93064980071516107905808269995671552 3972208987360741792382339757637632 2413350304469819203485848152571904 -905745335804407799494235579685535744 9978468195869721238948875962679296 7906490510296252247143922324733952 -482514527810824287183619855988293632 2391538165482022460899874207432704 8583782427827735730393257405841408 -824776687322610142528744436914978816 2488675432148153861922587582398464 3266898604903036932734362650148864 -682351641600724087509561055366873088 2028145512313478708802558204313600 8410931748274629302327767910580224 -919942193207617947999425938883346432 832981277668636915437468383182848 4867437574850568298949659510964224 -32815232561554962544734066771492864 7865356983742613789323303579549696 2403375696327167111917029965168640 -885891115470307336177663941137137664 1971127012030341983273030380421120 4257995051913409556713418470195200 -214444703724588503676505965314703360 805687895591508236034219148574720 8875011498549356868090796426919936 -292823923307583492694487896747409408 140376317419875528580626007457792 5731818103589745571717033148547072 -537622394426940387723201093216239616 7629842853949605640180721155833856 258548425178998378422315255857152 -144336893558722697510311182863433728 3945661500393921777225744204693504 4965349838447116795700106158407680 -203498874789200730336035144481112064 3267739729299631256634962263146496 3527059749680165603395473592287232 -176967739974768744113871615894224896 4389196174816296895776867080994816 2536699797164238895041575208878080 -661430827953749201896299192532336640 6660303921923176763446909932142592 7921716554822328134649334231728128 -532925370736899547100491914347020288 7637128893035485276029166798503936 5991398701075920612268564308557824 -952194231803733407779012546352119808 1698421915359959559993677016203264 3587537520822878642482914973974528 -463266102852425509566120604890824704 9445756790100769089632548675387392 1240244255083025761688771696263168 -529619497303051359061998240301842432 5214476824944328400091440050339840 9632369596034670045953930022617088 -887190377905885709402493984459194368 840536995227896913048754576162816 8079535198893782594467797735047168 -645957563059146001188914625308000256 1451695584426345503974851577118720 1949043330991416742643282330255360 -16471281579840634426622500614963200 7752699790693378288205194242031616 3717549325461417673536136827371520 -94865783540902223404972789874032640 9881549007993768473798149469634560 6315695420758029406882069464743936 -586606316167261720339015045870518272 8007801122679808695577022298062848 6152600226653506518970950280544256 -60109336415651185990204508914843648 1953370249066087943900717314473984 7966916103022205213417837286129664 -20183913085734305004929418356850688 287318075096449221333682774605824 5100090689564187878583644173893632 -692677851778013733422973772288229376 8050787133521013781390392624676864 9567225155753017404704356944576512 -691036225217277620983440481636581376 7621892344077637783428872129216512 7994285145371055496467349048918016 -713176796271187605755053390828666880 4571562080883305465644112007921664 7124074077463084945004259300081664 -874706360305790886772931050973691904 1091764016544545327730479020900352 3486479193089644670699157497839616 -783967602869396587676928283580039168 8714083392414500830452176545382400 5578625266793065829890218293985280 -90599126907850708649045719020208128 5428283919979259954663429861539840 2014009094423418769009895974895616 -107799312309707654681476459539726336 6915725419093043833758596672258048 9163005287257614029390354915000320 -987499500032850011809336733626007552 5097510017051344192773085554802688 1078702195552252524066892358352896 -196022179836804830276087054579269632 8704554190671690606399873051787264 2589621139980444548159473312595968 -633090584228306558150658639014133760 8431103145083803419541233685495808 220959187482751860835545262325760 -259252316670609372962697658249510912 4161001209280481719957256331591680 2407593419199867672088836397072384 -106743926944820260113740252818964480 954522333146536691219815597080576 4898569864432865995515231819792384 -252845027821621277729616192790855680 2363742983291378232230687182684160 7470853278585966859165632678592512 -946707523166320035553791789141852160 4344507620138022364009637586403328 1976443707055502183275857304354816 -827122803794860402925773576495693824 4604320924102713636470043864727552 9505180732268950258514347958468608 -357493419479524230019901386848731136 8407493756450799429272090959675392 1762625909538265461455608231231488 -315633700996726244008951158906290176 2626001689896523663156961184055296 1747890491368242807561219966238720 -218166513553450204965880549729107968 5745906828532172510122890101784576 1928581355751935074004196686561280 -955317498310449500451074052926210048 8318252563165258303309696504692736 3891716959260201551576646901825536 -726988183590053473344273010944638976 8321341148398811476983194725646336 1948378375116320876782739070648320 -682733085250185220868056702450139136 4537315742414904942254391713333248 4378656538866560982488566766501888 -570550260972201371382132672919764992 7120003422895974901289685939650560 124709818581626948189331877003264 -758195454819866515486613003850219520 6725722380299791967638016575406080 3296654431992558100941797668683776 -122213994125762371147677039163604992 4255573708257272768492070236061696 3261174666672540676535099756380160 -643977744799183772063017414049136640 7087534557850440089307033636962304 8955035679090584519790631843790848 -337362517131708201433708629896200192 9674502875835802565578944675840000 7656995954310643101169746867912704 -786367906882761727622935826080464896 1306869565289763855391379270139904 5836577101718089149603271457898496 -7359285868386731409139673059033088 584429055939413082524820176896000 3038610973664492113803093993324544 -199478100011790954018577052791209984 9685972636089599936259529264594944 2016662734643148547790546380259328 -888657877647305377365155067161739264 3490010981903825630364987442593792 930173857359614521325724863823872 -230135786132017318453697698678702080 2768963214447948880130071741857792 3187387247728633247313709649362944 -631352145690661292870998424912134144 4711303617226997635899350933569536 1858473292830659424141315598712832 -684722415680520285032977386780491776 5748396287556899363930756521918464 2151639893465367664689792403111936 -526823620315435557342710476264439808 9455505578103777646784139296243712 2188625174137370166674018866823168 -92643400909935105790118652029173760 4605562476039228038721003124162560 6871305922713036224300378111344640 -114560157891539268548028512887373824 9579673574455247912248189634215936 7659387393339073857484481858895872 -70487731499240045623144314447069184 5751372991128474847933083609464832 8254699916502303953267842212691968 -413218480805825166115742068231897088 726964847355566183085751574462464 7370675724390973415405672401469440 -982632424113832453282746660475109376 7404860832225457377838958435631104 6667804981969431634893327870984192 -255107619120491892694637342554587136 9696155297574842997273169789714432 1983768165694243102394941205118976 -718806224900136125736174585059999744 5913365964909221150433014982901760 3580405075617122159062689886765056 -532316070790335612183100229263818752 2518610382787191203505180480897024 4985502297178275048655414259351552 -341410310999211630609073636657594368 1719001393518793387808888813780992 7750515424068085288591168056066048 -442810389914365226222777410848292864 3622259049046570758543241923002368 6423994434139025335015013672288256 -660738100669397812650152710039928832 4303285214949171350067598552203264 2942231274768991995917394451103744 -219286300984988626784170616033378304 5251771069414602094531819933270016 608654240023202239942846075371520 -838497930144059605341749531878883328 4943346436630939193673499874951168 5038564281026703500765502950604800 -17643289653100251899275861192343552 5002644141225210958785788317270016 103212874219134187786387167641600 -241244013919912384720925344843956224 6094563412675465881474426657046528 6972881115634764934369166164492288 -961023064498332033412149905417306112 3611776721577132559949714633523200 9259463111707229731262421526380544 -777353504789051304938431626682040320 7264344378782043561469827621060608 7269400957215282725604020046528512 -559223672497530790226564095668125696 678370728122968365392127806406656 965972553617670047740062311907328 -861865101665396508378481556698693632 3998858052504732539442417620746240 4829834209973043501279025815355392 -62167078482539221243543033273647104 2635694130284024821211748104142848 6623906088694854112033345384742912 -114260739934482647512014246910099456 1075446776552202626416508693118976 6536776622807746473976420204806144 -398430435040019987291218879820333056 7676368913775993252008335899623424 246195330855815523686821855756288 -778551336263686985254953526688219136 1140487001347255622974387104251904 343295214163947397626007914545152 -130610541789565445394671527155204096 4695718737711094054134937269829632 9649695009106905327486292683915264 -40292528198447077914803900216508416 581387445177218731618806815260672 4514017440568689335199863234625536 -106401510989390984755892889566838784 2072714812453679089402168114937856 3459022251440838157253784566235136 -183593018242766013929665812924203008 9630937519664724606873446247301120 2818630585822103230166139764998144 -657425407474862437041675547046838272 9756269243250919278762653672013824 3060363507708228952277964432605184 -431292776665176579791679939502145536 9615040426575038017666790495092736 8469035954644362898630700106252288 -896715844404066589065169792661454848 9023603010784358332332498864832512 6996022357460329940233450181099520 -655631116748702940013338001980522496 9137269264208391806751342709440512 176487677003994590565056959741952 -179611781052987600820632482570305536 2646069063164807847427499058266112 7228357948800567580180339230769152 -149500777680662061566572967101464576 9557244769588024112047690767925248 5639955601605430142797567353683968 -236056239566027810001074211396780032 9251879222668522854142563393208320 6523026069337901741623002804518912 -280100834097184342365098194182864896 6652289507322923853996362230136832 4726786382721939891651913602564096 -47060647769218799204528185204015104 493889669958550492624032741982208 7545027097637889522130953751756800 -833581331978216704050964844492357632 13707318364634048314134103064576 9216229277109535776814528420904960 -994588580575309264476836530942377984 7348550252751420210918556899999744 1521915053077831081441538684747776 -376438005013216298405611145586016256 182285324388737714770304816906240 3288513985577955707790614729850880 -731874611567333948254234970138083328 5733857887110519985048727423287296 4814155748383587482941604916887552 -326096742727144348029016707029794816 1267931855395917593389570832990208 7229220892577324316810530621751296 -206191568907717147646841352477474816 1635720024044318115912892901490688 2045691360551673612438975675367424 -729433538077002397805444702180212736 4738920922323174547008204058918912 8167087521114640458008514078441472 -45570106607260597873053014146678784 5862570498195608695427655358480384 697545429514450235808143424618496 -982212549924696454005806281422536704 213527645869118307551564192022528 5239596911351838692984031125962752 -167595142828545352737615504656564224 6477881069588426371222836919402496 7578230243597219398306251346542592 -487019010220130891872263727795404800 6686772732230028164251077918588928 2060410230751990699383684258070528 -342086963994763794076216183018749952 1193327226796389118392704933298176 6176914553439891647643523940876288 -621900576114910082272387995539603456 4304703025999321041566803150503936 8676546540342786209426218380427264 -342130330805831190850383515519811584 4665567931019767369850763637424128 3589397548409374012794145374994432 -654095412707399461718310202634141696 2359709176394467617237360963485696 7434929457727145912543739165802496 -894031168799898754866895488462880768 3824164946395961782991970887532544 6000630387450757053134549513404416 -302460560973805775160203017904455680 4698791106507382401108010726326272 7560573279719697332480364391694336 -975297832213365993867935246471659520 2638494102018595351391215839870976 8874854251239611204037761549991936 -393155684922300682971686540677218304 8577327091589792457177356163874816 5404186970529032488972777183772672 -954581092447686488306509308569321472 1185812596779534613044147452379136 8543864803873168457514730580344832 -678202092424640482065649956986814464 9487374150316133597391305656238080 5364848196053891656508276348026880 -8175629373180804639191543075307520 6990502714736813805289204797669376 4427155115750897113369886798643200 -318935322879232053946239677743759360 2494817475727683970176485385306112 7484861796427315827127442447794176 -995494291846828496557610193903419392 8368669980533991328054343255457792 6505894691333593620740313169526784 -307450977386279749344604780977192960 6421411558806967567680272083189760 8585247053687851760165195261935616 -879075851085431672119125429232599040 6402608984494677528474716467101696 6837288896704297899211493583355904 -286685428464032659506040654637563904 4206032357936028826405299061522432 7949342199920203502872323971612672 -747750317801943736722816994857975808 5663070633674472197288356195860480 7664600049405292273404511128649728 -653791398151305988420035154320293888 6606635957811363062469043232440320 7092783330900931586948939812700160 -686789484211559484115842899401244672 7126487111797637275278656334200832 987077889426124567128148413513728 -314974185498328181123285674983686144 9042072040284120720085814408642560 857089321045629229556560763551744 -57563775636556778351705331448414208 5247862803138206441458429748838400 1845035932269852872034194800246784 -534979193109974132797972494289993728 3630045951800479532474191440773120 4201771490549251833312352166477824 -877376935115635912695339579223310336 4556860122469450472000472431460352 8453882524769853347652319836110848 -47373036927385587749362578577424384 5679584421719502956258167871242240 4083922083929418742311199132614656 -744392022374915785076663146969563136 5937715796213793143980263492026368 7644909043088408433844112116940800 -516071393558741856276991125586182144 6676606469814535387946258876334080 4854203203429671621393609429876736 -877337486313442102451230769049239552 512514717179276001478427086422016 3142011435758506086295796828864512 -308111415766676237092951409823842304 8399680091386301725088062415831040 4508164260741674212561886096916480 -236549010964995748335779014393200640 8787988510880083914793307468726272 1880960824660263574378014679498752 -709686878834338761653964501346680832 4459190730541722714089029642485760 1594121502157596217078843667644416 -862599319796994951479165815783161856 4909121647370493529245258000367616 9861982011856290816526819178577920 -345664921768223046689015873602060288 4462026811551540544535627483316224 4600540167878781213754532523147264 -973435557858834542566307884263538688 2695901699475206614192763023917056 4688185490387223907874257885986816 -445680192034358598036479357453598720 8711124365047841368444441852903424 3965381042007009022646104480546816 -698260629086671861496314585428262912 8037129525083343246502759734706176 3325258035533058293421116812689408 -245707251153811302360167001666617344 6356074484917217915969139030097920 2069542953132006391503090272436224 -119314497980843578487986250215063552 7281158729263415598682771451543552 4754080001238746669631678055448576 -223016530346176363922626159965110272 7216266033287672055928571065008128 4749600926080512699454366167334912 -444362543202633184697487658976280576 846328671196375203126344811544576 3265699469847087063623269812797440 -124010218631224831186103462392758272 2900426797952904007906586888503296 2231034553580426771007118745010176 -109782968683000924596839601311580160 4462786135441519197783121232658432 5379397942128776418652952180293632 -299222410926320993148564791359438848 6303495739130697267137517293928448 8650099649165471341376220554067968 -208301503246119134839356637185048576 9824073256779423906023638063644672 8631691541738275297885532180185088 -730554307890961432454769478398377984 1007492868671368108575567814590464 8951445306109150750814772102430720 -151370034651910157767730280020312064 3321837459055164168751238539640832 3211426062763888774095755626414080 -760341130497878222093287620293427200 6712083878758769232047503495397376 5365512715990561616088711852720128 -975726293091127950928511808955219968 9074762754321085878816545800454144 7944412755513022189013896991342592 -29780743102030510575224454322847744 6645040873117921536446150490456064 5424457650655816070917215324471296 -574376541834716525682608499383599104 1732566988713163216910451667369984 2125545448393651977594933761540096 -961459163572521853395109962871472128 8552858481678913786299477032697856 8680683446700738758907128675565568 -723508231332085788929209468721299456 4918567940290156009779903764365312 3863185124517917395073174085828608 -995031648771113993436897239797596160 7965673734464245596494620902031360 1319398838895885324782177980776448 -549935542116866388166550419226492928 8559742932705349120263148972015616 6225039049075148818097440292864000 -544975867742047983818442801453989888 2269039010666950302775552486932480 9553545571326203969852279579738112 -340368285128441753734679450540310528 9464419392706526896290757013929984 4044464461778713417501683920928768 -558258748307547148478904977202348032 469235085496012103335668210466816 8575072839662707634205768837758976 -492300162360255231356894168559386624 8016218818494423491753503799377920 6333573903542751145416542428069888 -482063132863465884592660155532836864 6510337053907732803771563050532864 412684343784253499099510135062528 -282213312254475861319822326794027008 7326898400432710845987684897259520 302000131359097235468667829878784 -316743428943930745791751706457931776 7085179972597031891542215141359616 7336934928453649888290022260473856 -108935004273997278439646493826613248 7875977929005132580866267465908224 5736681475786155967060176021749760 -866305681471493630654469666546647040 8780654000614266708198860095750144 4379742730042166074679863317364736 -811695572976005844282637335943708672 5244725425953709997315747144007680 9943555001163536413887686416269312 -384696597500305852704029747156353024 2680936030951823411106898253971456 3537812701225710025479485881581568 -343350051097340642272348844740050944 2332543442508318230566322307072000 9896367067867147205812059058995200 -131130210357515555169996639146344448 9380932404491739915546917511102464 6513907903972764620051904584482816 -689811910011671272558734160716365824 7967581935430769125991641241354240 813785545890737862669464663752704 -576918519062213925295735303665876992 6082253769823509979089158918897664 8427763553939290969983470595473408 -803694210763577936355732197593841664 2260990235201771393483231643828224 185228311845789490110571378376704 -474559422495791952885219698357043200 5322821015235783714769181928849408 2170635142827306348123551038439424 -340865579970662897291927921128112128 1050425600488307983087111262699520 3127728770840914196567442321309696 -366553746468425162671170050418802688 7869851754912379319609688183537664 4326538204798825234845153439514624 -632732976830383599532314775353556992 4569199588514214593282810734182400 1994330654166589385900194386673664 -858142765992762060339327599728656384 1366255221386988325025033347923968 4443272292399441993128207448014848 -755476606982708717098003692068536320 6497870108490622910063045140021248 7087354140299491937840830978457600 -464438059095413639318333043033243648 9373378426185562200162341975228416 3937760054249303361112004242702336 -153092287249543045305764449896890368 1099008335703255448749385350905856 3433511833614455054387331133865984 -88148088238637869387021587836829696 7723748808302373015730702969208832 7922181547102999146057301588180992 -501867072625294935267920652177244160 1899363691357119077098985585901568 2066090338276451986029432602099712 -346832518803990806119404465679237120 7983521548202810544963094902210560 7194193421600222956116567794909184 -730239802617150169240434298404732928 2167815482410116665658075305213952 8418049123748794541916309224947712 -195266076097952711206344328560508928 5841858645280379935331474468765696 5602909953019126468291861197881344 -414606856751330740441770769457872896 4698719765938567354648653807484928 5971429745353216633536700341026816 -455796785854448924182121640317943808 8091148641143339923609313630748672 6800230025097886605732020253360128 -897485037109545870775079169226178560 3989126277641760829629918772985856 8956854163277569821148288779288576 -947626159633629158341530014059593728 1823685049249993291247555553787904 8313076955872185596100130159722496 -320606682875130998992042799461826560 6616381846041762519786123773870080 9876121995636253189797212151873536 -968711713830410374477996363622645760 4591433799498632997473581579370496 5687475302072120616021149635051520 -162741671610288691466871585460191232 7011374349313444204133363058999296 5398414037640448065914302799806464 -8047209987163764065806478764670976 1664821975371658346598491676999680 2391975152049467539384649386033152 -759271930800748286066739989975138304 9289313805714494278322629189304320 357901303197726927594144158187520 -29286618983266897224530815875022848 674674501755428576457390114734080 7934185245597347763868874429169664 -192469741817140472335733934335721472 5751052067631409403741003952685056 5041867409840652064147213454934016 -163676372401434753311717541822857216 8434931261118729775223860214366208 7385104415314468269444500281098240 -817794976180155404591382155201871872 6029559037744890121899834546847744 260671665576363441875273839017984 -377061270498149455174366583129636864 4260182299840847951877374153326592 5650515124288321941059389834133504 -717017555020743121861451558965739520 7689929444767683427368027891433472 4805468239009489701039730793119744 -745059402116591919789525065269248000 5984731051704500770964493704364032 3340511867803147881285607399358464 -182213962471264808794473927104528384 9255037086842607069998099264962560 4771807426099202729137445797888000 -32711830400947809847995808809484288 9616006000141879165585038929559552 8649640215333726358635534090240000 -295422725750925609417943418652327936 1844413618953561282714635172052992 6929684659894445056828219850752000 -900823489599828288797429952080248832 4955570769789996826559788896747520 7176271901759821803836518034309120 -163217204451307319030706880183795712 5220087185305516087481780127399936 7949964562387074525025906506858496 -904516517085472966864730590223007744 6150887645003210273285896098807808 8806719405382092962296256750682112 -602117291451003683479043941305679872 3008989830004779515097067986878464 2268215867984207482114880013598720 -284336445365518447813184181640364032 6731881490670564887105520151822336 9689930953137624831308325221040128 -846328892319808606830679596394872832 7639868968130910773287493197365248 8536658007815175208485474027962368 -615058891944433128091231054322466816 4480164846008483394901891354722304 86417094946610337897042728189952 -65650993069761256452858641656053760 427261370991266885719388374171648 2527336574177332905682187874992128 -895216970505344045207222082137489408 3343671629287509832728863041388544 6736910562293434098096324126703616 -807313771950305061815394810013417472 1089004131494248406658889465987072 4008334391243029399748283419590656 -565347919480643318924525513700540416 9218962203402905074885583800631296 3386042942233023180852127900631040 -370060280453215337212885087861866496 3280147843348375922506803273793536 9683613837143476313614061188153344 -866753520932526412975758980755226624 1228707323459162976675116682838016 7921257902275301303794811961081856 -849702903348163107014565821448978432 4776192211469050168680084953628672 4330416709242647008424119226073088 -850872426493083306757042358588538880 5277493955379241330477474888286208 9626032914078366731323308049956864 -317957265241981103410051478080978944 6537333255357726970076064242466816 8988717450265617132388365371441152 -969836686430384008191189024845594624 5299164478656175758959496614903808 5511252369769314147382944145080320 -564493825406341267498763508139425792 9897810365540934768174352035741696 7415442926497314357950162795495424 -712170503299745080088858618889240576 1753564365013257163506770960711680 930358788007388143246233279922176 -121962385612675512148779638189981696 1082355288167154379371075671687168 638645581167515237839705007456256 -65284488290935771583054021585272832 8647997557374362869851477870903296 2876476362650002463392772107796480 -681523105775646491019382834623152128 883177407913233717164067992371200 9409311792059575078951663066677248 -99871811428964092426556891620966400 4370492423307900410374788470538240 5738141381341670487261271493181440 -541666985060767833434619351828267008 1982249838685286307476365629194240 7703983653840401342176565722611712 -47575278234849488447475929757777920 9636647433515729889223624351547392 2599952681146034399471794424643584 -156440767484072383620860253623549952 6351064966890865809762543283994624 8275366993108774764386625620279296 -187075401448666331488356617091547136 7198519082458405937577464258625536 9959718159134335023519704725585920 -625553887046461602300078771211862016 3798014787697703353380563530547200 3170363073971470212267157437284352 -921397962527157678215416917899870208 4913797083292320205985244669542400 4500810417900966292735064035819520 -341425849174339558822704817735991296 6655619095990938872452032451575808 1481079172321660002376148907458560 -898137152108268484731101945488474112 1226340232057721281003159348576256 3198167624649648656610063103819776 -686955298689231989955341778981748736 1733922491492980003138112464093184 8103807153293568982754868059963392 -346276821969154981124651273278193664 1227524644332570624174248098267136 9562309770906067883133067413422080 -348348973227830343173251732481245184 4424347992161858819088813366706176 511161718070996651150098980405248 -484221289008781304254233136699801600 6769879488199401744772639334858752 3725436366543524366256761871532032 -592279597126004899225729297675190272 4760976045094806722913671472742400 3742290183534058302506011176468480 -123970792374287173642432308259586048 1994219702845270798243333614338048 7071226793804031216915730982240256 -880052250365429899073608210320457728 3037945896517144841106424030298112 4456230172733955048911179939315712 -722433273542360181160626833619681280 5748381504863779032368698456276992 7142244231576594744919410396364800 -771060414455845334622759668382957568 9690931524610767912332560307322880 5022511773524899043551285124005888 -377106936531334923593078553389826048 8329913039798193684379998934269952 9552517780081163000875786356916224 -845414926217191847449526970636828672 5239243229552628290813525590278144 6086768553655292694269962240393216 -253715288355623016154468252903276544 3697030331832523073229247756632064 3535299330512421026115266090631168 -873970930840237754000223210680877056 4937497180405755289349955023536128 5204896104953213110236320960086016 -330918282204238479145670496516833280 9250523463530350307733966910652416 8198980884601438454030005333655552 -669751676801893541335530750261329920 3550070862614303755665315825975296 469565776634095856742107029962752 -14518738046773612534414574532689920 5309104982292257610867477347041280 1882389706510101490517358957035520 -212014567975272777053457666403205120 6975499151586933440020187187249152 46961110695413496039336409300992 -180517844577156506600617931047960576 9407245037416233909315404147195904 4193836248459411664849324929449984 -831865696859421303277052790478733312 4802277690259129676456803403038720 6561910936145910427985349028347904 -581252941107197634181259246606221312 1631507004609955706810416505028608 8376622762294430504884006702546944 -68388954658557333415981912755798016 5586128024650849043953694632050688 4316340258665191127041178775584768 -928705479206987838388125958924140544 3372086604256643198992101782061056 3330480382462012358835097183453184 -559417906025740267712116842758668288 1720582773297860363894427643543552 7448293856685893824965079807819776 -110643828377323681221374385231757312 4639845516330284849966199341056000 7425184904939730931775474902237184 -498975737920828834843264723615481856 1914500548686631903558793961668608 9138140326965219456022332567453696 -345416279562191602669283417924829184 8138180403162198313242442812358656 5510422526588585067035533456179200 -478430557230315826281175591895957504 8670712224867916072413107645841408 4628671364820959129028655147122688 -588830297655059447354197332138655744 4237566135828396704831066691600384 9402023930837504993426826099425280 -95316180781121891718650205361405952 2961816565838282995589485730725888 1854962423892082306936368908992512 -243642244453073508513968453438144512 4732754161195072983742896479928320 607951802488945243142156244221952 -757850625856553994093381947314143232 4978843867394432987862699490672640 1674763948088616368116950466822144 -311403800130727937953034257492344832 8809904283568512263731413637922816 6088439528941647068119490073985024 -142186434805321304453451042070200320 9243923119010897294251322115096576 4489927185511626440519160176836608 -10971104572687551380408738980560896 7578362288269386538851488875151360 3720261034079273429355721008349184 -152666276190153902390700857119211520 127285423839377902134210160754688 2293399103858787917211292682682368 -271818930897393575597955920382918656 1883378138704379885476119584964608 9482882149937701996261190689357824 -609543362018760902297917168763797504 1574228565866754278306774442311680 7199588791681150559997625597165568 -593994899007267846309168191457198080 8161842571916607211577966413742080 2461663950706381424216283616903168 -762303798230780196129540276450492416 7039890165668999978393549127286784 7815384150047448522986722009546752 -286881021772316272298476675824353280 97791825568857578155991971659776 775019617350428338132500663500800 -14212980022805640697857330810716160 9519732157684899082530749304274944 1333299093324138872720330581868544 -345401556308248027471458250197565440 6428233089096982626603693556891648 2743668754027430162233597961961472 -420241520389110010468650590597545984 7987823401778418564511123894173696 4327106089332764735697553610244096 -61182522672231101155615735621353472 2164584193067842875510415419244544 9290833351550797494803178008346624 -447370191303198780604854380131254272 7393641942796514065006701278396416 8291500327886765731582325668446208 -927899167281516089762086147579707392 1774648140852318324642792557510656 5256384218588971711659930363625472 -76218767760781280096491444688125952 9299283420327925165177404653568000 9156175475273720405537346799271936 -697760040990009607014630034748997632 4891100656923386696449940852310016 6399154866825719371696427585503232 -425344316238636504489749139209322496 2122150703885687392933448001781760 9407973939461171073327307553767424 -30332312906383480838709602271887360 3368473714941654304819332366991360 1616637048857666183128509688315904 -350972168896698369450822616490180608 598353925114450454980430470840320 4078704977730804064745431622483968 -410713016433549267430296203076567040 387191642156129571051599139176448 5557004333774043579534602372382720 -247825733380473976381806288803201024 4612999015838698346324928743079936 5617284063207901810247584440123392 -495108998128947177659231338196107264 4941455227281573207091389925425152 5358066913557756648507324541960192 -604377370366135686798344300330483712 7300842416355410958233869075087360 9674006898238595307191910644318208 -676208581898223438695085676219596800 9606028946635508449437527455039488 7877511519139605153376261921308672 -702961401639410405615727126197043200 8660189944352096246003740107079680 206539473602331469232661545877504 -29340448446781152715972117430009856 8310846488256584058564457871179776 347839138048994530519980059918336 -835113223821325186329259876930289664 7269529078285618071374072985419776 5579476379852306944227237710266368 -909007766366720965102204432339173376 3206907002274955372387836020916224 4666820265269284983037208907743232 -605926293735459974442600463052308480 1856281261634185410681555434602496 2437052490839242454762985422323712 -905083655425037049403246306765307904 4625878357651760147166498085928960 1438549621969705876953327814574080 -285894672348801925214690267801583616 7529571086744511568098227914801152 7892859920527527555611808753516544 -41006572915774828410822809566052352 8814444876399135436517042403934208 1329955317562824939896411244199936 -6209124441755901870876771798220800 7425930379529665684997078658318336 2514402634763284487261111573282816 -33387128366309167603642187957403648 8709941104135278815876189687644160 1184197729616596965994256893214720 -864971475127053807023592831514050560 3986302391166215436058258382520320 925106964836117729748366636613632 -42280733175580851511307880114421760 8577994928767031124514443555241984 2953808250031372375263950244151296 -181325187185181268594952726667853824 5882068755736970418053174714695680 5954855839647412720711656877850624 -529408180723290472119644098043838464 865702848040859259358947959635968 7648603369093259066391983437119488 -20790550517500370344487400425652224 7498221157362873859776615762886656 7558937108945723240280849620402176 -201141839286115491347841041070817280 6602461275046751175114139061190656 2929812554934903564986033276715008 -92214489943931671308702659521806336 4883504600978110393168748309643264 8068470402247820431456197922521088 -525395226173714442702954774950576128 101500499776612413965199288041472 9811884004409778391305649423122432 -655439168947509779803156519629881344 546588689455756437154515851935744 7175147785277601515069617104486400 -677569001461727052733048064541982720 4628621341677034050688357022826496 6094984824503634265450769643732992 -604435452616319521340596645254922240 8806228567161651778871293571497984 7296219920216385276934716779397120 -825268366998339409871811606246064128 6148274883513911907711378759090176 8692738437765150681507766841901056 -434364811507675044609864797767335936 3668789004847087730893190519062528 7382928093943374727377228987891712 -186222802105456069741676058076250112 4186500282926569505770824867512320 417856836387915502076065086439424 -484013916513289384381979382918414336 4194784285408067098697528741199872 6099854611763760642224469410054144 -61525477661598936356739956554596352 5569356295205403420009433808240640 6485409958820250323789866554359808 -290545458301240455100306028444516352 8168515911770645581749416064188416 6034386973044157365947658363994112 -221752934264807954249581163532255232 7053647536408462475527991842570240 3397705167276283897573053418176512 -394324415691292368804145467444166656 8990096757275597315614558962843648 9888056514939444308990573420740608 -534059108687025075163178303934693376 1379523623588583498917501158293504 86531464862075485825121784954880 -764565963206409804879185415092830208 9486163090898119421634141029924864 1093090617158989896256514173173760 -491931661846633117559189620159152128 3265843656850533913912830297374720 592054170659042306915273174679552 -932794830017243070056679667776094208 753489180947451825131898198294528 4759849711979521135496162204188672 -277831417067998693427181893349015552 7464845063425655425202559968608256 7893513044080906588704983350247424 -267868867893463025551997407498076160 2316478068094136322814227525926912 9105515373525263434198743515136000 -213460182879570522321298898081021952 8987919065124787622526360032903168 5529537708971528350971529747496960 -48450410485002192819855606805430272 5607109132310683707336717756268544 8506213764518474650972248342528000 -24362803263962522287305426923945984 7657204976227050744128037634179072 2543882313060302137926438459801600 -18790927351026146027647772148105216 2236136052565765814510283183357952 8857764369088432912136186099662848 -553602741451251745275728696681955328 8659704842712441459365844204126208 715741331266569324459611467546624 -151724816679005997004564808136130560 7578489199669615345949343332958208 3029041568621768208043436222185472 -203311022583339555469179852119080960 5263927284152657520456503788568576 83334390537184500610268292710400 -391884716086008867283924728032526336 3621421539690458589184772112646144 1765885301290728604327832455217152 -59163449146706471556579355531411456 9637898558095139810816366533935104 4383002097219339501135076087824384 -897194069510094120239097333338341376 9324115692991632364903700805713920 1630707282421941086386150503874560 -669794892872029783791175339417272320 9524500102700474915147541183987712 7269120026757941917936542604591104 -884139753887007845992029278328324096 7053781315677099699372160966459392 2888860818316126873131851542691840 -953404804597553582436356356992663552 3774736951318198519457716149157888 932565608001808068054918153371648 -326474384913504488473426260381401088 4509055030651586736016097596669952 2308164899379884538204651293507584 -521663434605926254720015361634205696 1098079689637308746820661213659136 4199507326737804969294980198694912 -784891813247760680977553517044563968 8366414013929114227503432877473792 1960566899852454779949829821825024 -371224845696294926257274027188944896 5799367175239821436166418370396160 6634670953841026647315852591890432 -885237710317154729413709689771786240 5875669966613283936904738544549888 7062022027796980600815714675195904 -82725472820798431438799347508051968 9188204527705073358985885873340416 703347901609783386293209267175424 -405998683500430249054465688558632960 6498887492000854252594147002155008 2162267207693436299125881862881280 -803571353333777295656516710712737792 3593259896327948315336543085527040 4359821123369016953163776148897792 -791051737625113182169226801020141568 7182866125963054376691473837981696 6926313338933619949087099088535552 -515660207728899590053961878839754752 6797964786702437268156882635194368 5511134473801301817128381241622528 -291047336712592222624671493867438080 8857409988887612813759573189984256 1328648379607496426380285054025728 -215765732606316656698937905950752768 6206170066363038668194456562302976 5093278627511081731819272027504640 -824564745828157149065553970523537408 1587406694078131316870259025117184 1611860647224753838410738159321088 -752826763026317704620171917308985344 1532682124095628974932187387265024 4964741174932122595739536669540352 -898514970035887474707533641386295296 1680302587197968547734279648444416 1974610302036880343866622492016640 -769233024044557804152236684473270272 7304911921164433548322357553135616 3396769771561766170861609351643136 -740784350791282488823034773329936384 5537595525892428131419933863051264 5622519958584577646291403728224256 -584008186023935982475351242571776000 7024802490286674128650632628797440 2449139962324567441271070067261440 -92536461203051452454164507691843584 4222801084807076783272375229612032 7361538977055552039164187485667328 -557404582617724919668414941296066560 8579889515268989515585337417531392 6283269657180813571893699465445376 -115415405484313850723956620141789184 1037971359269767887627682131738624 8153259112262888271897595270397952 -746140820354077102258505047452155904 3122934804962113127066023128727552 7391774292080393061611269915672576 -311459741569875543887962304489193472 8261657966172173860181507819175936 1218082749342309660542093018267648 -859461140334779227421030335236800512 1220545944959305149143752974008320 85011866822779055825198715502592 -906481358444566186618987835908161536 1924155978690128286446554779222016 9390754302996761241703641880985600 -889613226941291050806274188977897472 591590995857950122716670384406528 3950921092542359955867266497642496 -981345693670893397203655246760378368 4815576612606928375787045039112192 3191805012422253765768865134936064 -583313959098349644737023532374949888 5204871933853883063123944922939392 5175902796273777541756766885249024 -73145313637786445886209563062960128 2027618592445493524054444112609280 6826758348308449572077460164444160 -364820073066120731689029929583771648 7565691733537253619368446782341120 5497065227281309309281422498856960 -857349688880288688956536871616249856 2269543486323049165794723032465408 2331708347835807227854846548770816 -660739652140904186605013611409571840 1088519788168222113042838384017408 8924130924325722635221610153377792 -447943819230861243448222828852150272 5390078627421458602960700099788800 2616733865014535989066422296772608 -92845175569112229729969202106728448 7923232525455501925723208817836032 540012007975537608114668604227584 -690420853260638269972725338833158144 4191265388081554747138467963076608 3973170095377137421588365563658240 -246948221402788283234219653091819520 9169295912717580939921969209409536 5170273784873044902377894841417728 -432184904706123381990502637601030144 2916400231245455166262082367651840 2200995260077711645188333225639936 -438836504153998218912352340140883968 3554050856247361793335276232245248 1314069654588954841258536491548672 -364622991926764153981507000170708992 5095467444268771569539788757270528 5040168897063813161526359452811264 -360640626363517317153361378722971648 8319236520651850143744955135295488 7184197113745461530483849361883136 -875665178290540477937740102131253248 5650827988717334404735280015736832 3461062638270459481003658439557120 -96311078397833152831769646204977152 6913986494204317458604168897888256 6285364379148241758522346802511872 -810262608920515158918758567939932160 3618413166214592990809714772148224 9777853667841208622101024171098112 -892500924883884814439498610204737536 6952177108474988544692088010178560 9611557337671446801753542622183424 -160666138151475016167561139396280320 1017352991731129008994264771723264 584971252746764253184461985808384 -38723573570824716380249778800295936 5854374155521978966442655440961536 7004165611451205697379766739402752 -494345713952059121998969185492795392 7905781904899393921224737879490560 1136992021814130276182605961363456 -531747482810192192940330967933911040 4010763242861363832276751417868288 6229060027448825510169711745171456 -162344929167392091380725703793180672 6985195357519071804180278039019520 7748304901493459528213567905988608 -665329358566148275840938420989853696 3927010518245492853520964991844352 4028943804709683835098046178263040 -506606693905603099834938606613430272 1044680347885336494217261920288768 2259042371279748713354331439497216 -630574552467972789492377092504944640 6651997455311114466610901665447936 6856818750424079434037204225097728 -427705647003572514453272212568801280 3671408419287995286716124462317568 7171901627306685066922498442919936 -764602762683971498687039767821942784 2453473742162822776524645756567552 6279948664872852770733101544374272 -258599711098340036925059406615281664 9200122345481991718291306350379008 9407388165253728696035187976306688 -365475153296831019957442963065274368 9021521935565814240766250079748096 4097787492403738357220062565236736 -242886629297892224214017561115754496 3016834119621469369514237014048768 9447625816253217001824805978112000 -446605396910241330478001913606438912 9325987611207663595475721386983424 1700641878543789780664842694164480 -894751750025453498193798404551737344 5747212252912656467200789782200320 2333106146223936852155870912446464 -16939970590235544341341529696108544 4122021002675373745819483178532864 9661691271760723375076454978027520 -664113380847189604149777764846665728 9790469007849656508229578186031104 711588850169340512815833208061952 -775439479056416476735927871181160448 5478576347833333930157962591993856 8570471324759516964236008294973440 -59699339839703204173719657368256512 4180593506356700801629695909036032 1721219335067682036450744885837824 -92914338021220508039925034567860224 414376493700367057750194638553088 4037147877971340251568076847316992 -228950927238495653609143165425549312 9520422191872909347227123924860928 9289281167236387490436430507802624 -955939351880100684782616775221051392 8908901510356080124682161134501888 1635712899817552786064137942728704 -951801524075742858561784455729512448 9944608579884538536044823700307968 4663370106538887413202454457614336 -154538251341546651826778400243056640 9644839321400350869404730815152128 8792077856324093369014125275906048 -175251010837922926771170730338942976 5408989417600463822217453603127296 2431278617004545521826150257524736 -256080951032639734288235690735960064 4045119933998848520063308099747840 799511730639144097272407313612800 -557236524278345382868280855630970880 9904931983939720518522471115128832 8470677728361235153320134194495488 -43997264025911685068293040792141824 7207224195915749785084460043075584 9209667439682667295283743129862144 -310338301606035574818907038400118784 6533558878860782889544264559099904 1285323948644382902783176261763072 -233993900900103014719195273249161216 1320708911459301411502201614893056 8646500732026978964539664523853824 -649839619584512456868609592842518528 7241487048621325699656321500971008 6285052537100238464812855473471488 -987488833573872929639396690370756608 4798066669488618315828188785147904 7189953469432436453635220486225920 -680354046214069504620175026817073152 1813623452073378868308033136492544 6855510866866025635254185888841728 -934793433236258415540922510135525376 1391880303876333053371156231356416 5263629371235396170460129201750016 -747052393234059109271905304672468992 7904360578558136195207981860651008 2292376283171881376388284327919616 -128334700497654743557708130503622656 1455109601597179699209965364314112 7819704362967516365713245137272832 -653304147918313245576303921801986048 7975223501423142443085440785317888 4332505249533620415022431404556288 -864219158136456497313272621088899072 6984183821100441207133664830291968 3472633026598078073123351312728064 -931505712641816259162710869184348160 7644917462920804934645475480436736 3359079433068330028269012724482048 -907192065587072287898992024276172800 3636292015868484838222544798482432 2646227986763206584898677075083264 -976031325909740294765474640635625472 4190018426596067292618076796747776 8137946682011698692821915642363904 -538379641254106892705790803952271360 3691370959946982131095926929883136 865502288846614717094820017340416 -564298935833224769215166525627957248 4172785504147117462677938763726848 3966261506983900486897599195906048 -731671506268421826653349857833517056 9120069064724858142621280713572352 9165175328651095655141502145789952 -307446195385957619093753207608836096 4336790439972097761147461033787392 9351685325214839460002269015048192 -978540833886817196203329435054637056 9109714924342599234054846226104320 407586175853338271589501000220672 -685980874748909508424313798676971520 193070136180083778920567030153216 4769467345657681527711825209065472 -610533421199671565404150169549668352 4281053727209704329217628849569792 7429769386784209254529544342208512 -766512761676787136599300138027974656 8328300102229851576632595613483008 4223459005443343228248531979468800 -447717904222952407362667162474905600 3168007443365962320980492261785600 1635068742545810220519479689871360 -67377412573310171752458370022375424 44116232222592916508636799303680 4041738728781367264293767253852160 -440238437110004725910640908033851392 268026454019797115343349292728320 9736268815674459900732940558008320 -745486719745779970702505203394936832 537545016133787743706381633454080 3376329010945387056020412533047296 -835100934275321700393683491636641792 7616657415826567401767254825631744 9387624842085190237350978333442048 -445687135240837609814799434926522368 726004729435864658319930594164736 7497570615707528735507833728008192 -664150719663625872863561157988843520 8596122122603152601142928353525760 6239977207735755114811600362536960 -534771012288380531260674529923432448 6243570704563832481323624580513792 9823398229358573082276994333278208 -14848270061850036625486202932297728 3485108374981318803288711023820800 5581399805555203588389983196545024 -986935659857869940753939846400049152 1336320766598396839459790258176000 2154724031618939600396400881303552 -713715006886359234796859345864753152 8903751733584727179501601617346560 7344370340017909164388282863190016 -19939384720019948739827706280017920 7165455050142603663290457676316672 9027640357547666698260387958095872 -672241693019806417906905881765740544 2821157488116849488737181517217792 3747428028234322888968009014050816 -552862504985048639464717294143275008 705789162679190779231205461065728 116026593573704085031049022668800 -192908439910371233849598389470101504 1023735263565226660548780115361792 3832459623732063261835587892543488 -653220366947872278808562136374050816 1049533421409538519183723379818496 4617913755935243847334248748941312 -752791380839376336095266319733096448 5206398312221865327721706262888448 260901513723826495143127178805248 -82578794479760836639502643645906944 3965299712775548915132584668692480 3904886670691595960096112011902976 -479679750570303260925886413399916544 2103365835010218461601412964941824 8726720981636712464609879980507136 -224955661944982258042026408997289984 6000161287331567290238428008939520 3165225689784923266114911870124032 -514725035074387430001148567807328256 265858224001071583289664482574336 8225605080244490610693104392470528 -236969022095024994148836028218081280 4015796714017834617722738158075904 6327058070409230376079416444846080 -390566361834176494857038642500599808 328379720736856912669168562601984 3343702454942649415872723915112448 -322988464931459358986153927764869120 6123440937613964928863531054399488 3997547190947572519381482992566272 -806587996506160874283021679370174464 2971910641831610424883762545295360 9388629383258332981070086239420416 -172232471611534026102778818700771328 4550093955803074575750892628213760 2823093160557013026287735858528256 -397734387206087861862544983063527424 6152032552379756639762054475939840 6820293362649324300746883927638016 -534170928695018446800058283599069184 1391639119257600140245991625326592 6581638503094519325232855653548032 -422444482876433391282217538130280448 183393803167248028966142894669824 1100921502571299766320230737903616 -643966193648701561199836262536577024 4939360726335773141396833039286272 1540777766573768102549360589406208 -361782359977799435809558533576327168 776657298646834413049590736486400 4064004882894697207382725600739328 -159061022151148806652510179671670784 6706104490589747485675934487412736 5981570049869913669995835739340800 -852851138924833393991473450761322496 2988430820365070331170881177387008 506404739605109328857099797528576 -530546113789280021207965218407186432 8001210217321349787947805041491968 7399134310492726290571482443546624 -625270874320924988943366698559340544 2094776681821468563448199643136000 5016775111177156048074453362409472 -845450820142931901528573096641953792 8481196619514812856818865291657216 5942059366664158536982744816156672 -924901320268475082883626773879193600 8923918760092200196452794383728640 3226878312769242009181332745224192 -522175469422395710036913478975881216 432259059748317254895057992941568 6577071583891732263783127161241600 -315283797890736339673499484744056832 4052570407585673258538505674424320 5156111117389105535081391895609344 -219698884320202945983446177701429248 6525568573999627417185703637811200 7801685952970229916768044893339648 -179430412754950189319196704671531008 9694545896820484769702985452224512 5026521401613453829977488505176064 -436443882962377758109062166594191360 5742354411537471972115086277869568 1711906294886095195193476112187392 -777454306085418105173600514670067712 1235960280419482119289876026228736 7894260603270215293298601898278912 -949082112669514285073568288309510144 5478764015539911017236825974505472 9614470899484977925006794917150720 -118607019987149450104429752472305664 6922275591568612451434819020128256 990764435692368070550649544114176 -151255249716865246784948704980762624 406483602474247334054805884633088 6943411550325059351733729675444224 -675995036492120191413936574009704448 1966447147498997484620358399033344 7379423517192062415444396558254080 -583393111264471270319218599487602688 4120641764734653106989930251288576 9202367907404473063154169258442752 -540313030550230578135992471677566976 6766075699872786499897993843441664 8095343747933108932716622793146368 -22037816673267734690800031047352320 1320311996158078379215811015344128 9782021138839331354465199833743360 -688506155532923179430174452860583936 2999836570036380211152748623691776 2366335486521739269716674686746624 -569535896276134703253045941662384128 9865007111433722349971342584971264 8960103177975342524889077787918336 -625030116288096632916480855661084672 110642656661007148720890771931136 2537517172586079302135361929478144 -489555645248115296653971684344201216 5236869149010522880449048838406144 6981478249665070403364786597265408 -656553515268875404147208373682569216 4077373830287001976500107207507968 7549289583005497967075236903911424 -395312555663069527042749503744507904 4447783128054103773577567029690368 6213793948441469028917412303470592 -281399784155546367106652574129848320 1587763166587351148073633527627776 6419440004218007980625347441852416 -338140867765034794065094199759339520 9169000009225609714150794789388288 9482798209576303470505102434893824 -509474462260565965328957622460612608 5301448048768381332538773024538624 7616661287225404740029568010682368 -378824016845762655521472462674984960 420420274739097606320361264119808 2466434981179463379590316971524096 -565636294495877574193520494386348032 3283039568915478968685942227861504 140337724391768381960989641277440 -388605686000995593251780268769935360 2448661720844297595767751243202560 292479980385231343679283239321600 -595486356761077668641262297728155648 4087588164728949599104574179770368 4716744506512260983561285892308992 -962920049509920043185689025409187840 474992144241209281908895960268800 5242066548056054989674603920490496 -364877179833902815057730250332962816 2039038400228823977192182563995648 9812513133391483940858652312731648 -68893384093753647773271647374540800 9807323870192290138000674170863616 1983836347079679129851132316221440 -695123923190295336455436992245661696 1465682196952011173921549616939008 3584467233573550952585264722083840 -469563272220918064430602976696991744 252434034257378445845018586382336 7930700489562345663270267392098304 -546047811839394107183089907591544832 421309531074166798315444898889728 4918940458813808963322424965726208 -147148094789714226401535727637626880 882802870807051332967324165603328 935552478367887684194501834833920 -951608355890440555008082888020197376 1117745014332430700666296962383872 1269069853462498865321188844896256 -322879679010966050886377388403326976 5005868143626912343256657372905472 664044201819227362827885258735616 -201470894832619120814041503830638592 7831514083097555063433617477730304 51471751351951495824201729703936 -653142988769968137373645215895650304 7669625487517214472647100111781888 8920978885720359860426381551730688 -177109755621264581214931985390108672 5579595397950704293855034758660096 8832438343169610687049715662454784 -959453119673461764819496292252123136 8445253863630388763774653388816384 7088302631657040152787860796211200 -2354122276709404741869364437843968 67589337915420391551231233884160 5335616151171853076166209479639040 -70759459911386073542241029604769792 9017963332238047588491460490559488 7059285891721438461242066467815424 -976735618609807513198678705826693120 8156547403128309329368537020497920 8126729448952726612462926957641728 -396805682204290254687356292985520128 8633989420216032922051441319739392 249106596205582836227877816500224 -888210793141839492271705647730393088 5900259215655800668333076444610560 1280299801481478090298347787124736 -562517107329384035016061399777411072 1211851197795215259090239382093824 8866226656975121006420104738504704 -177935411324976508933597647117221888 3220099552415108645767452477620224 2804390911862021156881416914468864 -204777265900292339039406483788791808 6393121399877248828470030013300736 9380411127559993307924099336503296 -785449657023519842962875077202280448 5591333725308935217985435685879808 6296038816747625218542719700303872 -250263934419590472990805299392675840 3149518138740998093715629926252544 618706017355803897155137925283840 -702733033908444739874529968549527552 450549968160896130556698648641536 4603418028727787067616030971920384 -431654967937166094429444649036808192 3895209725212675470475163596750848 7493162905693399528206890212261888 -702283423219202224672489207549132800 358902026623239089558987296735232 251380527658048225632391060783104 -815602908958666549610260826305855488 9983971764951100087918866999541760 9347752723521106914666150992281600 -817397260260316030613958845567860736 1602096325924023679281872211279872 8476800054026241599869848119148544 -534307784173406951687156194472886272 1095199615207650168029205634220032 4818242777445157518487236003233792 -806127090608174102732016858381156352 5505301544524199394045691745533952 4784560868131606970017725754114048 -227465410683755072324011804512485376 2285600358021724964143893024079872 1242548547020300174423674102743040 -83763927720265074032642243247996928 3286790778223637314865679537537024 3838771101446586554253839676997632 -340826558261841883430921885404102656 3207597466296566395923015980285952 3637567422058040308546589002039296 -413080413993481750195691691635113984 5779401105475875340142639113568256 5884636159131539769891782536462336 -429398338537421637525227628618842112 4445725838595258221803765850177536 3581155322714651148985750521905152 -111935769903833219204850461668540416 2092157526791329485642040669634560 8888962939693474741582509706838016 -950793840354270692865783495789641728 2831367499803479709816348582346752 244208987468912006866808548098048 -493774895910245952388672320526352384 4791749060696436659952414227431424 9279726661502422547686426140475392 -880773410500356278428679111153025024 1291077702358659434696941781385216 6396347061701337045553768342487040 -821755247579734920168695760083222528 248689243065350420227543307124736 6822987726594704198360378327957504 -613688848414667650189646811013054464 6919961390799391021332980469596160 6329651463986909812713961558114304 -336357833447254208644232238841462784 6748597027505283829865514042130432 6171343897475757338725092138418176 -413069615648430918333312911326314496 3228017311693955020152613212520448 4016014086697379217085751623680000 -948245924382775354911082731085496320 6367646365296802048333253181440000 2666149533524336044907898341425152 -418800157196414052856299511510728704 7213861897769696418128365640220672 4880085980118312743349635172532224 -261185805342588202642307538915164160 7411194694239846177557783257284608 6562215873540561258423643281555456 -202151189034990847983316131557408768 4083895757557254853647099406319616 1610197849226291710538439523827712 -844731240459591365965509779731251200 9882105918424981728659901362733056 8933425241346093415179371619024896 -848871173644499802103776765487874048 2246690201036414217362152053800960 4410738888636656030714720726024192 -656402489675455991218061181162881024 7963544921804098387331561478422528 4482501420316134715317478374768640 -514311210045135186339903834714800128 6933117300477120616877510260424704 5074051010912092473489511537442816 -275630070462746848882488456238858240 3576656868883359750577880322539520 38779328089075965165608298872832 -129894060139094462034742084406083584 6513318371929710818109227876220928 8739846985238525962038034690998272 -232175145942769626898015364583522304 6294302323408766250840559844327424 6244747680998155721844133134860288 -553353466050505383657437586373214208 2106561801018577031678142911086592 9397328213685649888582109463838720 -652270676065691200807765955361898496 4204503142759868111933475917922304 1799213685414049237861689865535488 -420704426161904917943508910567587840 263944771542768221098806173761536 6300345993936683963922779889205248 -311186066348520490684329587053166592 8823255958410010554571423894994944 3318974459125774038512947458736128 -732353187241071197867854505694986240 6513915287610299580838939119845376 3084334063131551041930036934344704 -216651556620710024390200692219838464 3506480710512171264387337288679424 2559359669006272494331073828749312 -32127180696715327480072657327620096 6371424551832353162949986007121920 6348650049059884655183842634629120 -331275047385837275022676275557826560 2278461623681115816826640657285120 4858221604405938918069346351710208 -754050101529778130940253040868851712 8893441529762702507954562477850624 492470372961260264206521205784576 -221296249253144135703115024562126848 4010556661652060597356741814910976 2120106071079031687666652472672256 -66638211699803219676097659208204288 121364622890018242158394922237952 2993960611412625885161486041481216 -884167678528923101685256272704700416 5241870010764805143078972505980928 6803550507741549757288090693533696 -417019443105744388146127423378817024 5898331497877702927655225679413248 9037212012955986078438192586948608 -333033942125017827785095441247371264 7109841348149695461395733973827584 5443218199532000825817520731586560 -620588107541476832695663553079672832 4487994959293313122471773502177280 3255555963257242390655536084287488 -97049371119770658422658565413011456 7903735667925757981233031461994496 9896066038812263428048248369053696 -738669759583289745019154672805478400 416649167936344587646139551973376 8158314246190539829916816484859904 -801213727271417699043392710787465216 6398072028227416391116151190454272 8905898500331019710656847470919680 -628210017699229005897180507667431424 6095270320260795864776552703066112 1858305491938561281007494293880832 -720490872309436921910050258937708544 1173357669369037566219413069234176 208846563958641128483976739028992 -636641342725465675634459076338909184 2870453300383927675854422005514240 498950483607382008162452879966208 -286446546860220541407695427357114368 7140894149107191816094776805031936 2829904734468698522028752693624832 -454191205500647821836539630188494848 1032774465231922670230756227284992 4868512222347129257578162097750016 -191865914415900291902556666087866368 6053308599187374930548549547458560 4223991803083044598800200897658880 -606664774923626441340910724173529088 6889450298507825330385412211867648 8167289754993336574986212320739328 -731023025736759324296261474581479424 7614864852753432640808894517477376 4672167721380952329288499438026752 -77771487073191353269685480809562112 7338234749891239141642516444479488 7769986022846710210918106085195776 -633888590407217408424968398946959360 5271846529378642846492902626951168 900501741900838120600728923799552 -445436065761689338329295002198343680 2075750890790448779534742709075968 630070524479927278731363740549120 -858380721039760058577600839449313280 8198653622818940048415747035103232 3252081843687701513048148446019584 -882503252689348751639764871728332800 8143006259966917041589930405396480 800954821105157494015608649416704 -249627795874075225751926593625784320 1250264072420451584752641202192384 5178700342563305523694892967002112 -897764851206613210919806359981522944 9838673779655251193524182386212864 5740869753096656340043102733467648 -242031247829167820566386338036711424 2729706478367314621293527266492416 8041374159166589172090007998955520 -709766891461769389522699156329594880 6824041211671155906782358887464960 648027194178997859790939370815488 -405187248362017074355170811574222848 8644840823039687148980913731272704 2949142311578357967179684176199680 -922250703416468413259010041807110144 7800691838002357621475147413192704 8339072783899571396455277371850752 -46994870582192416007020485082611712 7588876464104032798367186681856 17991297684790459346161697292288 -661684167819612782154661171218612224 5669997024201488183276868420501504 1502155823933956121893791697207296 -78744048849730910824772060475031552 3421427736229308889841062662635520 1339544931713905587989071337095168 -875502743092739290548836175571845120 7263701208554582526644722985861120 7276417615627691699480213082603520 -802758626965866369035771596838535168 4250214372277508637731327913754624 3019034033358336917614220806193152 -79860541341888386362942735163326464 6105757797868436908240480019415040 3830773680067692109962022901252096 -870654329601791078583583730047123456 9900899300777395268685447273906176 4125445449103893989620408192598016 -67276539356487040719328716135596032 2188928706863790731818815906119680 2509174605060738250895251260571648 -111644789724087842498000132650303488 3227322022961753574020848059154432 2313781760740312839305958187335680 -979716668118569175452109861984141312 4027356168080080845908742930169856 6180099113907721425955851279007744 -552987119072889499561992093010231296 6240399790844887950995200401211392 4570415216284463431455624868659200 -665513812781957508383550639628615680 3095399105374428736449729437630464 3080532155248949597680846560559104 -794330447052887481107814003505102848 744887753393732311107649132298240 3713808388801963159305101137412096 -896580572907402952895498865013161984 8181728784582381511073790896898048 5796410069758730579084919508566016 -827421926544618161738564542171971584 9158970892469908066888342698983424 2785955104230535238173623410753536 -209246708250084999223853130180460544 2480192887606727632411702734094336 3818170229084579161850438530105344 -639630934602473112479771193946144768 3025298792959855850409230734458880 476045253291254313212070439419904 -190418987421788505038626963568197632 4675263053210665683406323290472448 4807694967259941788827169622851584 -274291668842183557778203745628192768 6704570516719844328089832136900608 5515246710157065169182974103519232 -785110856359774566149772548159569920 9826420693230775904601185540112384 1144744290478492346322265468567552 -931057270811347430787302518335471616 1782507675124058234754166819913728 298355850021050229080538619052032 -317590586406836567470419879569391616 2806741780721371004914202082017280 3986363839769345670730686899683328 -865297871079026584770504717236174848 3884629172143365769285412635803648 2432222782554361888029783973953536 -594590435232116715660283837937614848 3879605281338816284635955619430400 8066526842610651448568017043062784 -809247048070535326278900682034511872 4526883688342920993588915059294208 6718355271393221278753578394058752 -815211605026194792667737002331865088 6725226703554909144490042833502208 7898065436948929078773589462745088 -108934694961724631721945455042494464 3149686774725008326340426606837760 5713304187270409733367394138587136 -259054631781813021141744931951345664 4330286822895724697884187760263168 8671984726784236200092526828322816 -400220035006366504886314766969077760 5340190415623034164859535685058560 7437269318595252518009544961425408 -265522061181147294334838160003956736 8180056535213275270695836041871360 6499275502380674003813162817683456 -602821326364133545690737979533819904 8256172498628686702156304181362688 1335267775768190929502467426091008 -838676650032273028605235732221526016 763968495081054577933595126530048 874891742956936141443091333644288 -414327293541181599713165740573982720 7837850359795549641485454778826752 1311625220522317932766889500475392 -181374126687559354270469452273287168 6265951128843254100834429943414784 5066641942586260444556863010242560 -473783948453691856525974698530439168 125142652816587464417191311441920 3268991033459113341939509576597504 -661323669565230004088205485688225792 8049938253961103053587750806618112 2756329565693833552170569852518400 -65863038689953060413923773070180352 5973175551924203795485372757049344 1558670040350717595920063545737216 -871552728549200513700934787012755456 4496100800694286356325861660033024 3895188040918616546399252346044416 -178659070653475862084960553803972608 7683210412234061432454069914435584 3429594728433501217425110635380736 -552599445612143377005929972063272960 9506019306895841080035777598980096 763524556157889975396371015925760 -932524089507532825460277735445233664 34141125177081161215519695568896 3097564470957274068923645067001856 -563816501185840484285348004958830592 2333201627211965640717409240219648 667640140958612797810584617746432 -574932551656640673945709499494957056 5053255980605706456047618579496960 1059318255723362429605303147298816 -922263086353116273091328686772191232 1844517660964915208172519806730240 6417689483447245897699015815856128 -521101157247418793761615225223643136 7006572054194383176808393336684544 5919961790227020087255537784193024 -6747836525827890470923271101480960 8420098332616710691053501063102464 2396619711717360522250972009857024 -995844785207156420637318291931529216 6156632799305020878875066565132288 3367848173372726746173351632306176 -165266849488307695235814637241892864 435006868484181076610343858339840 3964991946281746569196480019562496 -795199714629633902472805235652820992 3746398246034457805893905420386304 7597937877714504542660547575808000 -346459032483516518473936988377448448 5013013207095717739640451288268800 3331534131605846761814264836521984 -377216994361272942233727295574507520 5690613666300895708579624340422656 2380627550606979950746685554032640 -86313032175523182927321745466589184 540998971088940049635733288255488 9927701201487881539843029326626816 -856081644485743389314829493513224192 5779000622680549816825825688813568 9440699395046083557904594518409216 -142389822121366798002083259467431936 2976708092321405529735547743895552 9558707065251848929557264231038976 -718199300541094004639429614760886272 8429687925244913764104236682969088 5836746007874308088917686103310336 -145872163461958032160222815784534016 2160280327014530572749466218004480 3914675901486609447712975640068096 -979707337514406587636977634763603968 1493188291316101595817519303622656 4723139226186574258451023164080128 -888251336571955693869675433781362688 6344137514145483889446910513119232 3216276365496759319864144738385920 -731273420460819803536120961510146048 8967190616693470749665030966345728 1112754919473102103674998765912064 -392212130605436853450197869770309632 4197308656403573559173981103194112 7710890243569783769628956491251712 -132570591328050364845830226831212544 2076808325648224650774996758560768 9270141792231233702042372189192192 -48448903638812441394515805468622848 5098151174801102961997903042707456 2828440759463809066186701413548032 -814767091634757953914123322719731712 9229025615006687048350512258744320 7840982790997202815043544727683072 -628551428582305085459257019856846848 2445476070530398295953948014542848 1868502239163528790581737320087552 -619112028781581342265741672146010112 3639631610065411158537651779272704 6147587976224962570073026326429696 -467602199509771078734168565076721664 355383176843106401511633496047616 2593852709100777731673211212398592 -47131951642235428480833049604390912 7669421870493167971260838342295552 2707735405019681218406541523156992 -241376939579265245713894119074430976 3485781572556951090061207415029760 8446340501505859126227772234530816 -578266778815652653798403994365722624 8442403429761051937065555124551680 87253386923589916912589614350336 -331371003041448720434660334129643520 3958686650243675750965554179997696 7898838785218399282330920305033216 -246962405622793178684931484025880576 6356278640681480332030063889350656 2181998563157774367186021005656064 -716450684128142713320550075614625792 5557220553643088007435691671683072 9411896578515762951922054401622016 -962912627844992188061663495662338048 4936271784994487781674811536703488 2200019479879010609578423034576896 -90293360138664427330852669846716416 5962109227889546723600249521176576 8907894735683605841507171023454208 -299862211843908247177446547997589504 4172810315340237313811872202358784 3614991656343623587525173033566208 -878077973666563260104411743782961152 7455108488427384162131991987224576 5865937243095172206376875204804608 -285910221563960046837689005029457920 4035257939652313990139306938728448 1699455326414159455888216539791360 -751098786531247171087074919821869056 9346058114427422577561625339887616 2430423541954329661557876367294464 -497953259939765297178152331548557312 3153874181606868682355156556185600 4804024913707997975042330168655872 -344949361619746797025944962951282688 727831677949213262039630510817280 4963304224701006724767692489752576 -704967916487028242840074387082706944 9930210571821052842119924759396352 3338255357801442378901878718070784 -337604424847933799191643997373202432 3272759796251723066533813071904768 7967515038889523752584839388200960 -410104575873226870833830523429715968 6086998018067321739725990883491840 405545874959238409585899381719040 -272981571106388446550287529015246848 53546222769466478494403159654400 2904978955985450042218438698467328 -356227411000144585990032988886269952 8010560031447264602832277382103040 9401389924942213411842862004305920 -961517844052130254665643884348964864 1634200149727988894631561510518784 4543593002059633234321554595119104 -454500120143099525550115912285159424 1661072806168906429654149162336256 4829053844935208445813017500712960 -695920083155596882454061757635756032 7571614178490949143522788505550848 440273744520778078401689242566656 -606785495842661779206412518016679936 4026571220876159334439907435216896 8192137703749895799719715735076864 -734667448642498546998967222501638144 5498373979663806238014083184984064 9471778967471408149285738834296832 -223259348059170865213558475615895552 3693659035446989987748147661635584 6256700438373553816227981077512192 -351983501655400307802402693922684928 4220319072384316693133496227463168 427712845504333656486810086277120 -368077845073903443680531207717650432 8600025886544159265439965803184128 3033184165462338133470220956729344 -324126856830908335265440846267285504 221539392479827620499570762448896 6038378898748307221100694270377984 -305932281250868330622278357473034240 1174574491391341668385308234743808 2918421354569447050558479127281664 -960939768741682212256089256927166464 7309839098339755452800373023047680 8679246261634145855717777889820672 -821242409347306536171483591704838144 9256908644294297086127955171606528 3557645146725799615571632781787136 -940924589840563702141119161998245888 7240144678269481142346119651524608 987794346683259690331797631008768 -455841308334124369933492598085779456 8962046820495621116378820093411328 7081989999527816343124616612413440 -824404093973663647080287808692158464 5043699442475358559673957004345344 5486772251516123593875134712119296 -730564945674795087520331132397682688 9753507566744545618951482055327744 8477112243024734890895078754091008 -91144085202993821802077547141267456 9316643739266111158942160868343808 9435940856907186333269471923273728 -255027028353821160711044434222907392 2316598194509065745306576440262656 1908722663710379638935176809021440 -11115958940435668252999677760241664 3889216119270237640034022389186560 2260548225873200024405485557907456 -320814359467816456269849886120214528 9448611505283867360644661526921216 7073566530347473409479194638811136 -699574383369587803183293634122350592 3558301867005183919731149174210560 5835894977698175430260723506216960 -693776030564611727186976072907358208 6938680990271684184617067762155520 674518272170077865830341966561280 -700925694845639644450635861135982592 4797353713708740730591605998747648 4944038996013363820792785317920768 -593342872954242379339187100835643392 2161803966875498729518358450929664 4242102458106696356143514651721728 -844358043056268906096902471650639872 3761261940279597388162011846672384 3288085196217078951620420382490624 -469529420340230811240128048080617472 1519380136209000229182055909425152 2816201114028657375796475212070912 -105458932764801084107213197975486464 7355491625470304768518283954487296 8245493280812679188754461479665664 -736579061062314049539830844003188736 3103693141012540641949473111539712 3401864413440134432217916753575936 -762485269274552625505935701143715840 689925128743972286205343194677248 3634012245033446070055358536089600 -389528114881251329069084378107215872 4203706464587805674656799133794304 374368947206697961726132870971392 -263042122547877134461481113295519744 3940015362289927529817528940363776 599491829536482970501554630557696 -377018131723808154616835831710613504 5323103494604696429891354963738624 5623678554151561759209236763508736 -974534018052693785919032555963678720 6072035947718156179759238960119808 6042275431004149230530403881713664 -706666855307016031676369523043205120 6229475616760684018000082138824704 6460226374546964060560429707952128 -306187946253985695256524810751049728 4442918995939864827659887254175744 9832454166284073036420766287003648 -864413700976938566176294185834905600 2752687015899844667850270351294464 9978331618182047651695586464235520 -787535489043424078411816579731816448 2736272095152672102516794161364992 1662188135949561838123586575925248 -756476262529805649863975215210430464 2819633439945157859941032266825728 7666747907601855824765805712637952 -327361401856607854015368358195625984 5753631548944611984546201583222784 4150129779980955632242426013286400 -358908488177609975851310970910539776 8762085219574150857489320811429888 3809077610255101878492303804334080 -666031458015035422697208601223626752 5886828543383332098642722091433984 8664006384674287697305731428515840 -971861761730467816695688440215240704 7515898468487267721503520243843072 872603068804693429185281989279744 -906340303550043140761014210979168256 8304459796970207459180715446370304 8806741293831513190040232282554368 -960900210598670491425330112678068224 4151691552356312718860450038546432 5539565155543405242791278782971904 -627027409567433676392601635266756608 6644919666014161322420595840778240 7453581865910694702853642883432448 -370296989810840306587417960050065408 8845957656189401486347392111345664 428391790422191127567335990231040 -840192108433913712854344209853841408 9665372913485681150403717606932480 9906034253414075383846177226096640 -157742242185947402795320227353591808 1157679037356749411175149877592064 5497181419332967861247248435249152 -988108547102619712424830025485778944 4650461030520953590658559150915584 7027880933301015048331706847199232 -693122535085758392951621965332873216 5659914944691898475782647949819904 3697289318585036478804038978109440 -91602398051567608905554074829586432 6182319617435966465932867521216512 3468157273337028180164608041943040 -939508228532976550115924875640045568 1450420713924593230489631179407360 3054176496030216418839626122264576 -617352324801490979639973415982465024 50738195019257018700074934337536 5050295913991772159728963471540224 -612068966829893163768469481645408256 2514756242836624875489454293254144 6174377756127049588831971413327872 -386675918896574804917294268411805696 2221519690883281443787128789008384 8148411411502716837942752142426112 -173896228216035569926844609695055872 135564207113413970485001798549504 3436791792187205165581139980582912 -701679404126529731804358017189675008 8725471412073701039065016565760000 9794961404329160998273969186406400 -48617728743920665308771331438804992 1515857299862603078786436181262336 9195206791816410261681054683234304 -731079562645324077734337725060874240 750306764991015227352887326670848 523499563082516458630073666240512 -63536934155947943207079000374509568 8783233491084708595433080184897536 7434138750971346904271636263862272 -383502134425770633196043946566877184 2140654970783842674320292775460864 6733469702981311775999399957626880 -37207688396330442238234069385084928 8120696701928741611102304322191360 2978310729613341371281398707519488 -527662021638603015856273095772864512 5819205197659303641514188262604800 7123722134916956536830088269791232 -380710777976724094976147623394672640 7908557596472033004107931555201024 6323044286935777751114104241651712 -867447848148776133842264226038546432 7170260275714391248381636713119744 5878780024276508949531336934162432 -164983113242355289235191464072314880 3319163138451921219806871305584640 3801852573072487207054464383975424 -238199366370330340427909492541227008 967450476223765439810187068178432 4564654947757093483437398329131008 -238168395991012668535698620281782272 9684994164930264168102080792231936 8239326911129038027245274720632832 -30546433081846958609165523976454144 5499739079661807107079033751339008 6443854303566371810884473776504832 -884720979525793203798166282314973184 9117155426133045152281154774106112 8540141419093965552375945146400768 -378480719263771787215261952370540544 8897527444402912729120953916719104 9606887418756993655223065346310144 -568653851034909634830668665718833152 6063849447859628947423383020109824 3057736955226704849479850161864704 -804592526590241474604958082547056640 2718928847662339965971918175076352 3557736083936884034595285358346240 -611181522648740553132382050563653632 2437906689355990556548374768648192 9337700499488639194558502430310400 -326162122121396491266927378808438784 5790766145235386606648464085352448 8711127430586670838403579391246336 -948454299960744620160771841673134080 4897453932947562869489178433814528 8788575562222692029371197958389760 -26483993705807364519469947201519616 2728777324241269030276275046973440 4115802687962239477504514767978496 -955447619603968275596119463734280192 6611601457842586000950462469111808 7935223997131263185248838257475584 -458142687175202683479174690405089280 1186835026021982337378103821598720 9488401345961352284482861474512896 -194901648329470405765504094521262080 7224835421015519205326645834547200 4680440121875587625850116285399040 -853027180203399483396695397163335680 3547833715867605271524156461023232 2681634735225757618810131838926848 -941262008178978635606668539775156224 5017371982363776135746040002248704 9643669429355440806058273953284096 -246833134055489587191219725006798848 1258319123206632229045940107870208 7676401768775100188636253180133376 -24691168265464615142177396337147904 5550103856651854658333649187897344 8711082450122548126993603807412224 -425482120514159368331796916354416640 3881211444683300389372200998666240 9520768132322656292004269534478336 -871338063049651727565372019045302272 741958397267512347344347141767168 3688424642883718191239335736508416 -24364049868143610174060397934411776 2869927210951241516978375772602368 4367417862453837634089622735683584 -828599667565469503025366732678103040 5810548125548297758835893476524032 8627375585556679183045012186202112 -589444006344303321798476896818692096 5192266977004951051798504691204096 6680922717691216631596816701325312 -782232723653152305473031327677677568 8950454695670950296591849171714048 8537732831839395036529190158467072 -772547087289066087244119388574449664 6955166593023415405800001370062848 5111524004353685298050440829599744 -582487035015332142083369509385666560 528885111871218708558347736449024 3814852669184616210145078300114944 -726221751844836074914884066033532928 1438922049901223440439540789018624 5459377544411779683528766614667264 -132726355981415249979199720177795072 9260493260776265499675634486476800 9612370310507272340095554990112768 -684884370269737332210067222007119872 5350171549340215433634827535908864 480422145359270079111870071963648 -634721434989247530259648962659090432 9446752450927800574544302464565248 77340445353281895861780786184192 -266490234305191494880296662388965376 4988316095241799531766076464431104 1015388756367058766639769973686272 -184132623298365865054934942324097024 6150637819530455908959415347183616 8783380594727027327597910794698752 -23119175715266799594310852101013504 1405524808961947895029208872648704 1347616014700667561034339269476352 -10743087409431364271230617988890624 9848267035026304058359051968315392 1752632969678856269191522797223936 -431371832985582049156398045558996992 7562966686731866867484032656998400 7676229298177193781970264207130624 -259396769250248392199122358443704320 5300743366973355954316277775859712 2797242116737094398047145554870272 -313075987002649778983244713114468352 1673341838858439567970209718337536 3279045322172277784160316690530304 -424527714641969258278033851875852288 5681352855134861321483428248420352 2511197622642594000022023899709440 -388049026264051643254343545324044288 2860450256694446874910973239492608 8602865521234226640408304190226432 -967325344354795607426582964143652864 3844481497334185322573437614424064 8666911135210962494462251843452928 -61176971451108851958045421045022720 5760325070279304086337050514554880 8570590927696295790615147449417728 -607239708955892138534213543048249344 8466978045010405925015702372089856 1388227705507678005337947176435712 -732526848021972425319794398411620352 6284698896742581714021626043957248 6132313534244819413994151656554496 -213625166341208689744041131089330176 3015080326104102642203359677775872 6568409496728627024888112875569152 -798967145401168803673504625664720896 6480071303223997922040960302186496 4249383741551243960870511157706752 -118288172531358706543327940993613824 9030075040839549736903098704592896 5467553203649482659823081964437504 -211130923107085493530466215803224064 905185129432316435225699126607872 5753059361574034617270366959042560 -578179341298090967252063819113955328 2646565292463757225915808955236352 472292709988323502248317713121280 -200757891693198114549584520806400000 3414155297794145481135327341969408 7825486323497968136958368211271680 -783963718285549919255645902350581760 5308773436143582737271355963604992 8292609658623454123872833855553536 -780702493232240340775736706953379840 224425413750460452310544055009280 5157198036198223679975467094376448 -980219251950028086531810451557187584 144496370299185048282685832691712 9196861803971440545332244940587008 -707924491639394059770064945637490688 3770677214150196904714566237159424 5557220096181782508501026381758464 -51435932986749445902809848826822656 151625743861286319827320152522752 356269185006861746403093442985984 -691568435598153199510007122166284288 4894789406008843560820684573638656 6934064603687436985890504553005056 -503219918852548044993417827342876672 3885424263014713636181700094459904 6628587830617799405245257048129536 -811148929333406351235600753532862464 5742301181663787346568786913263616 5627343650959225532501154387197952 -947625947547076377453872622866530304 2011371116482689221649275159576576 6868475386338296087698397311533056 -475063106330512050886375072740671488 993272926439660337660701907615744 7676516505559736093961035641257984 -115699916166145420419841982443028480 6942609795740662065916182618177536 254593689438927479760743645052928 -651879132446591142560677702402048000 2210771263196003297291017555804160 3714845675911614898232742121570304 -728284656229966979055966646297427968 8869596186479867357809010376966144 521507068699276592488943947087872 -17103774923201361135550518584672256 3666252841523207158127755308040192 3919718799438433188095726387724288 -354154311104594422114720250471645184 1442858561382938004576298791337984 1989846729722474412018157395902464 -149582158368189691160145447807352832 448444540658750563247111031226368 3594241162853906576145768041676800 -736652192903954977525922536309653504 8398921490473221331542182887161856 8928255992257132628033097066086400 -460633317107517842246804707995549696 6756725144299510297488079003320320 6948004981584907324770289289527296 -759345242523659616697667579753267200 3635782264145318659877940005699584 860303425376821231259951304802304 -463902571105334148676564924166569984 3947928792708630490544958896865280 8509685271353877917475503911993344 -576408723502244790687510526156603392 8977195612948636460544910191230976 5467550093616685667727324429156352 -343755686010996969508365138994921472 7122303884875965627141551267250176 3105694689217138422880489472786432 -97030104172129710686676230153961472 8898020411716695386054551884791808 770927300012138674766197435662336 -106682229098016494974439222646145024 5016863820993737245617663818858496 6401602435500445006313476627365888 -133999670189821927388008552821948416 7667054869683861521530001159094272 2976824872263859429210059677106176 -792267488992285602222806224460578816 2045757256234786814460550845562880 1204027144914586022410804172685312 -832077032454299004399775936411598848 3081544807693139201968263042957312 6592231250698100886836791761436672 -426002080759269038703764823699619840 3308356766691182085634920739241984 2121308184134087201594909298524160 -808979861972083090412602963840204800 4609927647900541017815577362694144 512650301717842982628454589005824 -169272279322285030281679375012200448 3646599178726969756227457853161472 556371374757560131599129794052096 -276636851087468972702975153743593472 7541430088571113380172703576621056 2058879813614749515924785585979392 -789876533828068295465502034041503744 4602254218609954205510817065992192 5863087965088749421887044997611520 -338661740766920860982168723187040256 9367548700585806029989062132105216 798926596525490659310716682502144 -45441913268093756981108852387741696 8495162256909465780573712477585408 3115505303453885822873451758616576 -618559321408929022842175077998395392 9501900792166666157448128907706368 1373181730133843864704961447198720 -117410983361047432929359790795128832 6458621647999040627562904131993600 8052458467967511329742026113548288 -105924466392039566857454491459911680 201265203166761655882041882836992 9364685537942606518079725965934592 -887125728322195950532999775248187392 8830220796117591987465682025447424 8231697225004760918200174665269248 -231370990618247791293065159157743616 2788722176472029580206296958763008 1190767480263973990138767757803520 -164847356997096347122518238066376704 1853536460129331815259203476389888 3467865646502207640920549905924096 -254673494310910132808589618934972416 7218802339406683051723938211037184 7674146667942252347277641261252608 -36175488148217222075124639003049984 9277726298392641012549844503363584 5353124635970727195187430670991360 -499188068318161291626629780371144704 2471678163496711621310927089958912 5108281160570929451510153198174208 -324771048390866842839146358716235776 3942676805219353087781552376512512 2989223161967964149795832685658112 -731712742553934506479028713470033920 6846234927660577806298746837794816 5815114912717394625928533028896768 -287660495259096265731267053544800256 3599116855513453590588506433912832 9828505190095876464028324414357504 -85487628433797250631785154816770048 4519928671927566211684133343592448 7252962333591522382001162283909120 -69220380874899278620474590980210688 489251338065277923922318330953728 3837157935147590544117599104401408 -362547319071985615846041881336086528 4488081659684603042868279184982016 4276330335877062014086341891981312 -703248847642758906277868007615102976 5914638092247345387779330301493248 7717699749748361554803232400736256 -785652252268573197375651304295104512 550964502439142910225682589024256 5139573351638666380455177772597248 -289625534439508795623257848913330176 9723362683923104429542432237944832 4262102078218945790704726975709184 -649320326424340074491029771905925120 4066223693268026968361590960685056 727404259368051503968859193344000 -38332755462016144398083494082772992 5850137310334577891142730990485504 3861855604212186065108208386572288 -378680285026531751449408457993617408 6801016453592334581693938638258176 6567329781976972253530019384524800 -526916077225135892973827308574998528 8178684360139086198773144210112512 152820390395698399274087114342400 -792307372397743155973037081415909376 4653043922719277022337822302928896 308130394819904715266489241829376 -79710804073282553047792631437852672 957904688122105832961005552926720 6199637163385858046352243245973504 -69601711813662803010837170375098368 3361596380432960248631925495824384 5285062156115446464168273230430208 -805280192007273064346984147247431680 1133841808397373407088181409480704 8229865451780821171307949175341056 -211668835610274207945432201554821120 764774900900794549501284283580416 1439508673014429700809813414379520 -151186540883137581501716144104407040 408774026641012052809010615681024 5285061933489620879754876063580160 -623186425236223329881467523564568576 5568279808706384617977761423687680 5319047876036650913005440677707776 -304933784437322982578388420802904064 1459113809375322357615398450364416 7313813803696090980345899770707968 -525922235435981789153544810025451520 1449683157211782533458857803382784 1666914414689173831554976991674368 -481742846951802372660738619395276800 2785104999738452076676577478311936 8013895356696066018075014879772672 -539046890649972710487714922179330048 4117201528650056077491546527629312 7754234417022712400729517525565440 -702437678266369560997132015442591744 9141361721289396293007977071247360 7396828138111440383054134133129216 -930001300407201107340713519946399744 1075929755203340366411131844034560 6215260832376205161640739211313152 -131730370476540809807744033588510720 9954836547261516154281502338711552 1941883980679939753018541675118592 -191612948577810729429373291920883712 4607432166860756624273333888745472 8190613195064487683535318821109760 -104988718968167286995798803190120448 9177475079537367322200593785683968 7750026886968019358201442874687488 -418866893450473355047722497255407616 9354195190051002488073368895488 9772842045296801300038291269091328 -926431335377631210713636602564837376 9945366816980861538548185449889792 7643803622139702925045372364521472 -155518365594020174988646964034273280 887937349116162734807064554504192 4210554539219198295960314590527488 -219452809698061302017201178025132032 1087627664344859679372973113868288 6198850484637879745881067743084544 -338479234900584086485593443807526912 9001727548854244143041824459587584 14863201448106207175075132604416 -757789430393458787038838122314989568 9649297297102911427482739682574336 6599221289595048471186076189327360 -668003755539150879649881100187074560 5852158347723045719619470129889280 6277687288719002617912759259496448 -956458552724696452376973098272948224 323966450669599313305242859208704 4479598646920434544514399872221184 -329652400700789758036534381221249024 7951751368960743930556086388523008 7952605048655954211616797340205056 -92717829196152839669576066003894272 5858946369106312820766991552872448 4976874204010926853645320658616320 -51721249844547179036701898139762688 5606132701256754368414664078917632 864389996977085623755729025368064 -54120383779394332097795341336707072 8708169196870368373355663209791488 1485022642263920102697786713047040 -69469054371405221715768655568961536 3628037924119516983491875825516544 5636362651226591013650439205814272 -309407310877221797942299673258622976 6563984271619189102098296906711040 1233155784826645601752883386122240 -841297818226257472329022374294847488 3205789265519724578726151356153856 1883184459744183757953465233440768 -897168910128711636706513228086116352 9742154227273058973243303744503808 9879859129966127604319566107246592 -700090384655323097843653314565111808 9119676208111569817303002927595520 7310208347169217056254940101476352 -289084853000971687837234426240040960 9419244749344316623626830302150656 5133299366344740772712619620433920 -612740951915824451001855950878408704 3487419791145359122333120692486144 3646539682689523278569955188015104 -529326964736991553988958424863342592 5618273101763439833460363950555136 3315784811484172065290668369510400 -31235006345512081231103602953551872 1532276598620499643533170663489536 3966558813539901632179202596798464 -893131673379367305327461635666739200 8883296907147299980667530082516992 5847278359935883737904282567966720 -104362656627290936161907053426638848 8363132824319366823404293651955712 5928595830235342571313946117013504 -270218601037400791192153257018392576 1495151685483432871857479399505920 5391554548311290516951499945279488 -295867988272978058387992331994267648 7099003820805576349613735848968192 1253891268496791174922658583150592 -904972454346525050828024845384548352 5381723052588080496271467378376704 9576698490312716252149969854660608 -63258478154014939907039919610003456 2521721888008415675391460910301184 8647474003897530725610433152024576 -231820072703709845372287995179171840 7295718927567078662330963248283648 690805013539094616748462941667328 -823261155925445552835597168692690944 7072943635245213061244132188487680 4155048980971336470648822647750656 -562721031224296610458512989678993408 2890711342328985115576435078070272 6757528925175459336650081666334720 -564385728650845818679550904580964352 8170257853047619688185949256155136 1276895045339777200451310927740928 -604070026210307245006974218116530176 7388271793823629265378773710143488 3741919008162416183427805357277184 -378161243668085622899279383979098112 6560564840242767638053339088814080 6893396534584804278631779075620864 -252963110151118686728950939461353472 8677520429336036098041591975903232 2860218523446358650752217156419584 -14783597627968269096069790693326848 7021275983644386784673043954270208 994997186855105070253359035842560 -843077957547566758975935053255671808 29636095172464763503514260340736 3396929174144346829387872524566528 -411140253092126718341259808248692736 6064254242648833372974910267195392 7541591928808385728901408628932608 -801913182145556294254782480256073728 1750011992512524435865963285446656 3867462542926813825873144553930752 -530014011369218477634785562031292416 5895981640637923173837500976201728 2527660913216131976136864418496512 -633960447884342175590846513817845760 7747057636103237226461286379814912 3999779938160670005528211895615488 -414101972317749955871238487042686976 4037955881853233148691553338785792 2705643443082147885182825434972160 -547436197139990251700359701102329856 700622071915475542666177350205440 5249720870449993426221492103806976 -998117000312029637485628888975409152 7342034055801140897617408530841600 8006556710964027625739562621337600 -982924887824379537089679966058053632 2325138101337983627117045496152064 4182194516510567037816692763787264 -705509373581188722145921319491862528 4284634731703601576676760735449088 2751258554570381959772668682043392 -597882671759921203924996168987181056 7315041065737519918598568399601664 5725883909197444841009517250478080 -305232467833933543774147735275438080 2981665823375460270727747103358976 6350841501522803204024691563954176 -461160875528945933655570756124278784 250807887482777918637640398143488 874592092390792855003074322759680 -957116948289908238388557324144869376 6477957618603263001815639230775296 1075223096267340505950382758821888 -236788180715828162297674679499882496 1387413205283156981661659081736192 631216214745391998761566468046848 -758186819060976366997989782728998912 8050731482858903706446925247021056 9486164165482123048113411287154688 -363637334428255011616441606183321600 9809534279203689984766518266691584 6871972215635317200723182033567744 -198892206463384978233101003610128384 9120936240664795737798959177924608 5411144940368205505120720648142848 -428142822155763806618635301933809664 1081529922746520247927363988357120 5170673349693347286450290705825792 -163902867538459580823955103224430592 2248598468019784861650349925072896 2320415939594126521068694018195456 -105066211701968356095793395102908416 6140341847295699115069126079414272 1726286282846585281800873422356480 -858644395507071626439858987212996608 9643360617509537613678818017411072 545829230479673790850183309819904 -825208111892096267353234024798617600 512804563319458301273489245470720 7522863272462320131551744462159872 -526704047555117395118369330195070976 7355618145426074903242274502606848 7062531779520147932081824074825728 -261139336968511786017729163919622144 4314618485055018382176114888933376 945437535497220332481515242913792 -368861998890338271709244126379638784 6118215998025538455334572036980736 6876442559347393464951741094035456 -343826778102396805289548684369854464 5800900034688367661677042590547968 1410302742640168500469787493662720 -877022362720021404066821067688116224 3535632909057475394570530861350912 7148361991941781552732323310469120 -355245585790015086722564422107136000 8807614098893837856986405143576576 4831061097436277125659342883782656 -585760617395089873503537658792509440 7311275486703579794115570620694528 2771308429609623092898855666057216 -958098787300075682331920146915917824 5142239993856877098427385659785216 3240591502799765956919553865809920 -181752221417232403968315736551587840 9369752937077990979614345831383040 2811369566741318965660103965933568 -836496822821328164141603049925771264 4941197448594967147327233558839296 9984684505814179599579056330244096 -109519836619507578065852897423261696 8064066778549329518297722564640768 532690097502302079377101618675712 -881362626283282945656202365235101696 6284943285038660591825824151240704 9794286829713002609843083229003776 -89972548993100051200503536941006848 7175249039631360170482352814817280 8349116328688875290666292207419392 -351979346864582140330003084821397504 6580460006980528110215075083583488 8384430769160627483915423668240384 -843109242149300107271738229490974720 9192162376530354255809430455058432 5610647692296313410942380179193856 -416415536884028978364018556074459136 2586348189018820847136447934758912 8514112139019438161455172198334464 -553183730643692130467068487239991296 1494341712169590841604931644817408 7247480442699373562670890109370368 -233333688566556662088685288970780672 7300712876958980374391933825449984 7176723348645184915371990364192768 -488376623732860280335342224963272704 7349984333890042710605333325152256 4501925916500254789164968192245760 -481510895669239671224052977999282176 2219644354073103004425543581958144 2591111841959195295007758383841280 -299391736425261933952614065101602816 6752424405145260362937032748564480 5505783855453844751650718681661440 -505358152165575237716642561985085440 9141060742833306625973969552932864 9262839682555630650977016090722304 -537767186373999301074736350243061760 8995438461544411793595824280174592 8794160165788033715669583995600896 -191034766991488238391069996790841344 376914139776646156403690967138304 6603965665215940821325603397435392 -548959219667467208101270416166748160 8961756455533900419398327236296704 5378815443720351403581217597030400 -237365501070709713307759033754583040 853472695417905332853654083862528 2603921838814881244719121757634560 -21055878287245160333087050618109952 2480540871214294012490458574356480 691871732397093740471489442873344 -105873733581391250801986764506398720 9035649915153013687242592211697664 9290313781587817383304936084733952 -855174329142314198713907017997615104 9335945715874577642231479889035264 200171032753801410689000491974656 -240073664508841522033530650069303296 9482144243221986854696581813239808 6050921957241827550891530585636864 -623294821948901095034813031846510592 5714565843909294847229374427561984 9750946664349216880823841050329088 -641480767899938207146548959025037312 4501830186862894868955736372674560 3271432401986921068702395181039616 -293259800940130256746454650076528640 8961586517839434156609995886559232 1978410478375425863804601313001472 -259429001108852666688374463969361920 3888014124435021103336429134544896 7714147917592043646468275289718784 -338193958223155647513429515094196224 6669718396038593847367967243763712 3945855845627397770970035644268544 -226897015775047435321090193605263360 9659574019645888269663720295104512 5884153759213959368013515606458368 -771892810169378389775346933480554496 5841559742266427219083468497485824 2812078737057881539071774277238784 -121582140107003688867295819364040704 6986607630038973272731810288107520 9498319142922364889427027496534016 -453501537913996313700020721211670528 9916081944431037810167278425079808 5308203552945793340866598621151232 -971700756548257140152108763014234112 2600379206327464464097416545566720 3593013371229502182568963388473344 -694246085340291651135865762397290496 3942084204585055945122394239139840 8000032170959638290409942960570368 -915739952906450986584208790251372544 9385713801258074387222552299700224 2576428288987968568923053476544512 -269741002835941364531350124407816192 4324023174663151132250321285283840 3360647941278405337276262475890688 -438530399397396029792776526313291776 7808156369701204086027720599797760 3821496208816937461435657516744704 -373540759630023675065199354103988224 7006060713722288326648371257278464 4274801774608542897223253822013440 -635132309356681760665148163014787072 9337591456239036841779947513053184 1051026610193561541989977844350976 -369568425646099158229379772900704256 5038464980842828948150761325330432 9733277969503556195033122019999744 -786414945886187042984936150159851520 7056728410972668496818324765671424 4503972815090556378837899573985280 -284166952565600841215631945814245376 1431537625554079673384931797499904 7107270506242302247969457589714944 -505050245050548401439107390078189568 7621253582541016476566468111106048 3664155517583082741989323504091136 -299045006802737232691581609656188928 1686900246861611111419560123695104 8026004297558650413930736561160192 -246720083698424416554041981106388992 2071707245735047866820051574194176 9885305361335305382098112845185024 -219911858487084840126755270043893760 8881111977206499044118820139565056 6076153929811942929186912343162880 -416999772989990543233534803664961536 7775370926885010602012231767949312 8001930819201944106284788920352768 -82009706875916186303389181665083392 2741607918597359694471298430271488 9246027542602499629664506637975552 -138610418321056017313991723109580800 6362500630347119875158541825212416 122808052597497331943266540584960 -594144212872899677432429354755817472 5000445693516805133078186388619264 1790098643895562919586159914909696 -93009489490741603538749752965332992 9121622414215407163523606698262528 1603485420493698608347746788179968 -359750730839311531133966921777545216 6200951821167774459832437951168512 9485567495398450393352545037713408 -900154344149957333441059627967971328 3049495480136584409008177177165824 5708162577025507940800092369321984 -546912632643226886873478957954498560 9725651421039778512336630237364224 6436959389549723134891213608452096 -565195306840555169491680049978408960 5035801850863313546860265574760448 1176753555926064111282613062205440 -400403926728172721442838891756257280 2901342469648072925472544660652032 6822261394238148918908005740707840 -612570972522111933839823670450585600 3617189832431608334490385946509312 8170000636228305734539191775133696 -375510954533596199579987591806582784 1463366444218801947995038520705024 902519741378180930983814324289536 -923902419676944899771542555838119936 7460456994547764841984789017788416 6539125666478492578036222460428288 -30640777300334173061638959421980672 2026360710508487516800175579332608 6430402975485680075677790199873536 -122226691589762134583797018496335872 7494847387985919715463971643326464 1814683172633477853213279278596096 -135477579373413295934267152241000448 3212003764089426953745260359974912 3380982727236426016516138109763584 -806768236430729935852321461013315584 6132071341058929989180894325243904 9324766784148630750216227408314368 -908238547585846302852253189624823808 5895600255582009602153298723340288 448415897904147183850230546169856 -271218758358334307257809840998711296 5794271199366681070314065741479936 219370445589028832070386071896064 -196756190021861676667046203205091328 1640904781855711076849807479799808 7455679245106227446262289982816256 -42706895136160825776968282409009152 5732151422724032615077027556360192 120348413713165186563096983896064 -939487938717609615760923269152112640 1244122074939089632648807780974592 2799138084780205710047296228425728 -712345537050886302058039455101485056 3204476079871097629153026295988224 8743731326012507675967893832466432 -267346290833939807293317419402002432 3888749693245418674723174513377280 7435054626821877701966410620600320 -630040711329920229161940955707736064 8979625975089402443445389263634432 2229915375372023394909311366856704 -186166392172822313011308385101938688 149219996467304954077833190178816 6681385147992532692821504646184960 -274330479234583470238814711230496768 6050462595531755983304828676734976 8147307804981177150287161520553984 -112780838851169985173832480550027264 3082409590472353782001624231706624 6733969808335713285751187466878976 -800277067090768985743142259016073216 4602878530590096843304238472757248 8575651509562061334447237393022976 -561625530742409834033030354866012160 7948658771137422764912658977128448 4724831954836244794930093698842624 -321724141029404194002099078506217472 25193760226028050753912135745536 3944089469183711499324691625017344 -523574846444414622069642438771736576 460154073310011332883032634818560 6761022865461311002052447000592384 -734339608874897387517813126267404288 2667103237984519484068033372094464 1464568245660095392084777427271680 -21284598270860412151461643661869056 6431237089218736712723647818629120 8276491847985944875764634372538368 -454911160896702182870348752578674688 2457193364449800616933214239326208 7770212294342833808598320373825536 -186999591302313817228863784787902464 7957449452094232437691587911221248 5358730424927266349404777349120000 -161177956741380469525381437391372288 8700817504645880078540152714035200 239422062933765289518296167612416 -751909937967587461300960670106255360 4819597108944008699586135141122048 3877743701788335136112685734690816 -813735353589984025344159087476080640 7871669348752045645358035206406144 9198108020957151588648345109790720 -245863253808864699559277796748427264 7013234710036579507555412004044800 700446918065959464331456517505024 -862746261140048762781075257436405760 3320529468038709892028142716977152 8033688610515814902978629483888640 -983212190596687830556317376462192640 4443198770534291016647344335618048 9050948463819845021342128198909952 -23831217492842993713748761949241344 5621424793418312610939853246300160 8688873274561275504133231800745984 -72132628464224879863094961902714880 3286774244067782965042425223970816 2931914137061713233984743872135168 -673874716636806993140126621286531072 7966890958692445429173085303472128 7151471434086508783597384965816320 -318701401472072476590573983247630336 1304028971183118825108218761445376 8228991331194190986454073186713600 -463977191997792064934864108207996928 1083133478013478796372068284760064 13301034575876678756834922725376 -381764079270989845212338987011670016 2292229744449265162333682673909760 7648070855439617619656357852479488 -884624951949725575162174047520817152 3553358775849119663731828248805376 4591819755959194525870024927739904 -946833208422019024552929101665533952 9194379185187421979860851662782464 9143370528806864045362933525381120 -563471283319648573358918652896739328 930414242223163704782699708284928 4730646781127244884397481655271424 -714292467407337383470592915090178048 4298553532765412316499207100825600 9853973055955591545101230897364992 -188616814207365690809521859263987712 4978062214459994272281086482448384 3658964710128928365913300375961600 -758461756531749665392437907083493376 6109325814177706451247112854175744 563351535502675634497385985474560 -526981523324765202357318819216621568 2115933566558343588958167514480640 2090916892829837646174746667122688 -66162810584598959920532214719184896 5479970115161229552361467969273856 3008784748556468754797731069820928 -171922879919182600098965655832756224 8731600252551799316452122675904512 4916630732752271205440326895403008 -88909499821584976137859702036889600 363449370706632768219275769937920 1475446518252741333050415564980224 -264082714728240694812695765161345024 884588911358065887560160121978880 4121975593981851197814522792378368 -210449495476425808904913251844751360 9076906407982169852961699441672192 6890618293242459963987158517153792 -782657545153711176589014453087895552 6500934785088029538319790791196672 1993972279690479331950944900349952 -710115443067707822055037297217241088 4224726934350814476971889529978880 3453474194693370887976833077215232 -327295030885104232457372060954394624 6845154049336985517109647702491136 4247410639654912235683206853033984 -794481491966359972311027377510547456 2104587679793649430821031341195264 9413651954677231762455165849829376 -973671458745681344671265839629991936 819575694470521099758343399931904 9507169306102769822737033727049728 -648863779893833009029157499527233536 1690363608693439359199601659740160 1640696978766648990762361501515776 -740494013161342526119007896389812224 3209614277626679954445451221008384 3005660646595074962602439347273728 -995184696624337971841401336893538304 3342531107630713823581462060859392 6493923031216906724884400484384768 -465444500352715905917197331124453376 3112298195972381732050258601443328 7811897496702167533878890595352576 -972708947563580912065502267029061632 3475511044056065567141207065231360 7298612453747496312526825964175360 -20857025004870698488077702387466240 8420588331088625856677452894437376 5664949121959003585967984258056192 -373899261379478227726841121926545408 339630258547213197177795727327232 2343467200572771180697179840839680 -94698653908472324691948215342202880 6700842816894348649958988989857792 3159736677718424717075485537861632 -557681549408581276110916537863372800 4316802650577363372418668381077504 3679211530770143105892751943663616 -378630386762056909416581219173269504 5423320449292004946126819335077888 4676324734045473630320489782050816 -307932170179366368216775806066622464 7517429894191669451875777765179392 511847378904895331533776484302848 -634148564167287113936276458097868800 1570128851077079013487763613810688 7989753305509465298829388369887232 -348893785226989602705437686126084096 3968675158441153827020362714447872 3185177919406063615620318985453568 -659277455493695683277656838274809856 3746894129987114650545782727376896 2188531532151798356824521881681920 -998355012099442109319217141262581760 4650533987466399166725431790403584 6368527204851888826457099457265664 -823259244691398668738969651732545536 2185228830119038699136905887350784 8221128249347024949880003883958272 -859127705795806438817469522312691712 8339495228870187449688605295902720 226434712461761861755071256068096 -282794774210009831272413063007961088 7602236282015851354251826527469568 5895950902522506839374861348896768 -971854732033363145104156199133118464 840732150977994559291069558685696 4251168113522633817573336140480512 -214767964223330075644618113860763648 5057093824288308472523812495163392 7363235675405222238338130840125440 -61002689590590687100549302197420032 9960069751677558410699287952359424 2543350278390841747554769576132608 -300062864724699692535922904585469952 6114408236946510829929214441947136 9229017073902038852482646040117248 -544251029589812214396693510900154368 4638376606103992352212398400077824 6733998814907069948907725569130496 -149810528249290930468612350156996608 3919596040370688925240389164597248 7543367888656405442718369352515584 -210298581983831688894061619051495424 9969146923144836418517548060901376 9170648069024921626671040721584128 -671050940312539452312950670855503872 5050236609900034961474663345029120 3464108564078946460786541438435328 -883512051899059819725193926011781120 9532407010597058534200575243845632 3650279458829450110502063000518656 -973455837548979190349317929976201216 5279264834158317167359923945734144 8626696204700395805684378527334400 -752142210372584811479185743474065408 2995795936712614830792383844581376 3986437482906748918738805170634752 -136147235021819799231182247154417664 9402992867743086175785928471085056 827540567963444434450645872803840 -839842210543002899384296167889174528 5561098324348571869100952545918976 3765769388020227111910496823934976 -567417111637218373298396817447190528 6612459642925596835701860832641024 4186504564240331526534591758204928 -925087974635483322447631858052104192 9829686519965633411084327504052224 6429706644453791653860017650532352 -487173602949778351519938038980411392 433574334652931147401511324090368 9005815603349234337007436772147200 -420890259782777185438909993570009088 843129685747355319240541708746752 8914847191567819198202948985290752 -32423521320958953615284995794927616 3650965673821615187605986627026944 7765034082024648695278616457510912 -587729801706293957943918677681242112 3452444862245784369461143365746688 2931659701795170555863337506177024 -449355317872451781740293597022912512 1534807981727757315838640677453824 7852061763975023375520174509654016 -150739846355618697481031192309399552 5105686901221219026301052715532288 9123293398658998537959147776770048 -443878090740391930137894281952624640 2897495150019535062461050009944064 3724355267198303956133572285300736 -122165923059780166784118380887539712 9682195970837919447766145901264896 7147351574601122104301600355909632 -496606050959064229124642685423976448 2232358681203450424816797948575744 4051015226801691599227004389425152 -446445682652592363123104179998949376 4584089317436432935404979055755264 1962213059289075950816140548112384 -294787850224960360644118735713468416 9880729762889355647673255233323008 9254259385137704312826778494173184 -351831769261869912578145174750756864 8732110388010400691558853791186944 5878919452586211050863608998133760 -668931243686978220833016514533654528 2341663654083686352353365434826752 4561422930781307793508464402104320 -804984485187616229138310202344341504 6714353079145193603784271739224064 8214779535570256274202480332505088 -396143675792342029083121133706805248 2516882579452935137450992739549184 3230242248488331233891598435614720 -420431937884049055344401403988672512 8985274062706666577111186489212928 7739105709353388809533335307026432 -186878005781957997750984942987247616 5532846945736058509907274925867008 9027930022503578506173209815023616 -112451277085882471710270088082882560 722221784206569659437037803012096 9498875284278510863745972332134400 -11981438083987361892536751096856576 5768638117721303887649747740131328 8264435189790119762635627828346880 -785023203995652642597153461225127936 6326001335557262240985328788701184 2566174127272516103457859444932608 -641459219830488058215526846888411136 4882984393973754348406292875313152 1943824143245840255080587008671744 -884198367966175382104167686172835840 2036085939878250802534711461675008 2882081724825354729528657337909248 -373544212370614425033862683232829440 9740696701064416251060100179951616 5287593133964392517591197055713280 -750098155662007896701836369888018432 4676877421470743603681520150118400 3957763338552617265353130793500672 -477773600730848930999435824694558720 980508324463644998251933171974144 4081627306327219956733529676578816 -922217067152473187242540788202078208 8087597037717674188280936861270016 6774684214868330179549876975566848 -983131158631670573035376176325984256 85410066968193768981693613473792 972652322349278498772255741313024 -741405621311550410226619461117411328 7959759040017253989084166170345472 6480362905483529897789511591526400 -453316917921890665921235154389434368 2473167563765006337995677492051968 3462145553647048363896074603069440 -734456141112892039941133289555755008 6141779752286781018888765622452224 4631537806315585838690454074294272 -515923836961022330017325860865966080 9335639401595386378022084038098944 3327752575626730753545751809228800 -775209936641725578902276610400976896 5939785760639307155119115239161856 2051518808158134179784267137024000 -589940326329577871171416810646929408 8430855823282586419056491586650112 7870920595310680812080207172206592 -433271405366308610905472978231754752 557958630704142875647561179332608 3779170319982999377148351252267008 -697063807289596566842871319185326080 8530989606683563690078674761023488 2959226517128878736189709365542912 -815613279600472720984929130086662144 3703082518889797536380065656340480 6221662419918926853276791149166592 -75280931211467785272636720757604352 913427778855814766316408826494976 9564092141161193973526191333703680 -883141112462418525799836962980364288 8255799508829876456091940017930240 882342982566414866164504378474496 -422176630768111552748074200475893760 6645311560158460715740092979740672 7025327394624542312349987227303936 -448021601186750404418774767797010432 517987644842200134347299707944960 9396813835302428002715800583536640 -725043959603585172270009903940108288 95777857151747346732943308488704 5102811953958674642321994321756160 -666104072437602605467868778356277248 9797230621581849304973002082877440 8587432289137589042650368404619264 -406617454987384975150924842066247680 1395694065447541508160094862311424 9748521906755548253274844921069568 -205639652530989429606540871362150400 3640387638237695796766656597852160 4323527814188643730790149131337728 -609628462893842826730558695822852096 1542346150459178998654268201762816 3404924268379362202792411887828992 -112187304346328450539678457684557824 6120292799639344578209543821983744 2257782261948238043467740027551744 -715790981078323964899720719344074752 1876004682355136352279727999811584 161063755087070091317191198638080 -561998351823146309178378976036388864 8613418782409969650177830887096320 5304103417479754894255548002205696 -344481909553506433555104804924030976 1948297191732403333674238174298112 4526170126201783203637561086967808 -347984289052414630931141116238495744 1034112096808700284303278199537664 2426464988466627100278129420140544 -276776457256220773161511966354702336 5074403493802633683356900069998592 277784721021153011886981287772160 -879522231245858283451222928557867008 1194870375759904551966176184369152 7937664309545530989817034186948608 -230859988024594523851545931138727936 962683816052381846509853280829440 1673129290889485102973405295017984 -286279172470759662342257203040223232 3386800206098918175605370614972416 1760753395722412237229026397126656 -471647189476635874348663499095277568 3302012433977550127206494764007424 5257419840171413488146032720084992 -816485224406862895722826445606617088 8019678533001452069507024216391680 7385419101450131874547423510528 -852906819207164065227245216293978112 3197815138706692999524578377072640 8022306557616266789133712739008512 -193813165429590385302155530273292288 4758124243498169921783998676205568 20143804064283778211575679156224 -609692026434568679121801078760275968 2145309210553031942698851960356864 3772181833050037571011106308096000 -257343500641541519966196689740496896 3292127332354249524437297131421696 7936937891253453383927260889743360 -730023355619492878047597816633622528 516387196555625716047325587046400 1911233059476974558396567288545280 -426901102776171326208611859036110848 509919390954589532684654095630336 7802818550645077010513689229393920 -326266762911098134137849252392468480 6891415382777658302896555450957824 6317876035652536417517217087750144 -628147567656866316157495167074435072 3191577525151198193744773797380096 6988704858730348082273521741332480 -544698226661299361204325844604944384 9234197795996586765315767177052160 1730690804601420375562653190324224 -585823948759078224139282295398858752 1540675709412414008438912364576768 4474407696671150321869197112508416 -842881639338863625480277171307020288 4779137357251347926947162184744960 4802196385602959861821047348133888 -7403703452191767879878967212113920 5495303915040304708990582403366912 1357574124024194671409005288488960 -859846049914996379662736622142619648 3294932841014870237624378197016576 5487564959988186944917690979975168 -802781632506306580133328353757233152 3632584809137406402701499610169344 9268774139411113730458650849312768 -268313382969839708884666435489497088 5074190684818710106329876292173824 7508603295749332631581119475613696 -568804358294447321920032052852293632 6846718443603717791878569344892928 6762055487521767829297203985252352 -764980837018523895464741845923266560 7680648763734755937339069679271936 2218618240720914589959133276930048 -986742591658295198956576404995571712 5315701714823638305340070106759168 4858207414260227574095634103271424 -958205269858439402567826441011986432 3823921823025397194669434253344768 8806062962983941416898848213696512 -720004743854829857647693219909074944 3918017345447431534261086200004608 5503249159606640579173445598707712 -724758655631017034252778346215636992 156473700979813730135881080111104 8430226760317724237299776256737280 -216538256756730419289699694111883264 9277324387957994123923333733941248 6403556152618892138216287142674432 -864586123433681595217863751304740864 987550253134678947403852790366208 3759799285455629396150332728279040 -915024447348253766076391663431843840 866108674368312017190708442038272 4146348016794064449548504814059520 -837620164519447887724537739615404032 2618697945373824648817251872407552 4948335016311223464904255632048128 -621295404578832817767609465273581568 3164882219274185238794223304572928 2869858340321435964436228201250816 -992862293872642190174492272099328000 3929769479215940911446082266857472 1746890200828744626674179715891200 -454121500949657346481336573438722048 4811020745889352655501668219092992 3510838125761954891066345967845376 -347230992904600059517318776097865728 5161553113542689160015859972833280 388714061585551464878608161439744 -257823303134211100932836821200535552 4039035949660205658880073917267968 5397596347552433735837287331135488 -235297369041962668213358982353387520 1206167037687644412917680640622592 4439966753558505326718410408591360 -473005840267001242678703962657390592 7257899634515594565569278084382720 5596877417859530857897058858172416 -235615682373957927733935385616580608 7729181822756269763128665707642880 73162188989742919474305912799232 -828609181581041739771683141188583424 6603601285591037162604241509941248 7165855248951868686330475464097792 -523829282783399995389158328773902336 9815513719575706187650958679343104 725071574929702811367234775023616 -366873660037254685864409067511873536 9292778667307314712492967259537408 7524271807065284522407814303318016 -208717684847776304353902786548596736 6861161515014435805815005295673344 6998928850302500602143648992198656 -938883959805306417054520199392264192 2733189260313754813374531675095040 6781832408288609797288284666200064 -775019891329361039423947023832842240 8560018132842714634702525674029056 2427075897846590531846730825072640 -850166783368032375634243521909620736 2768975183303981861834268134604800 5023920409481437900215001580306432 -820651832099366036631974304823640064 4151984110980008190936103407058944 5470343978767565356585889388560384 -780062443882806522077514900151730176 9943322156546501093185529969639424 1000601555881350369998012080455680 -386161488097462919753093377528168448 7375873068181097197361012188119040 702551774543574123497781056241664 -784594236754429983893290936025743360 6127841925607229436744683426414592 4210177659551085854427552052936704 -339986576021892981264345801617833984 7189856741989357656337353571041280 3770987706941362198905806705917952 -101721209513293358121676023326048256 4653326796585061127669698531426304 5568293728679889561104864920993792 -698655194068302129759524111257698304 2094823413748325004888995323183104 6149193160234191502005217192312832 -858162080020791348361961478421479424 3225136503525958673562640796614656 6805044272206717256259674019201024 -503227078285591390772209050934312960 7551019498566833301058051691773952 2883890851286244890963934019846144 -593244641086964633290846014611128320 3022227214761511782560136505065472 4864028945705829580942053157634048 -765774107202433159767844666715668480 2659181291036459773272005560762368 7728229667207659384344730876772352 -949673810315836661348164713597370368 8013627035188548572594043535491072 1996948783763305711212986768556032 -532936123381566172563899533076987904 1281480302364146798267985234493440 8382891488543536382538050166587392 -974804386219569967989775674411843584 4489078857057568166621826552692736 8503505287205668158775676855386112 -253500057602063757914195870594629632 443384103036326805691407542517760 6142931745500948322905728315555840 -465559705625791255676873774821539840 5129256866390816267617738912956416 277104595665091710112581835292672 -996220377983249151100715492123344896 5158188265953403961115112200208384 4908480953186863965244527459958784 -965038156023869039310535096742707200 5906588486346867740845317751308288 2896741716110923754590844374482944 -821568149254372735842209011035275264 4472422599739295552777616728522752 8097900847998856418214077456711680 -761514021577702987635389197140885504 549247189722804854239348989624320 6930680170217320913716047207464960 -707055637965854428003866228864057344 140103313996896930611496797339648 9072763408935701602948960105791488 -256619402569767017769850571023450112 8427674286912030153481016466997248 2240990036355964764920851174785024 -903166981282578232962792973708296192 5709209223465455165433181840080896 6374110904256060320019750213124096 -469997449325966923427312549176016896 52109716185803655344501001551872 5928469746218000936943448689213440 -752583989023831633096851563818778624 7385432096169131240449987047325696 2264351101543772039044342480896 -354735135725402290290820051319652352 9650498880574989756704603573846016 4076990151819738356774661454299136 -830582277306036591817408289961934848 3757375625417053765714550076735488 5215799957814045029957194987077632 -242655848559043091076507825669668864 1942123160529994452615909024464896 3662161495811148039032264399519744 -108361731519251410308628569623887872 2197486887101645822140002236104704 6325453191908936637162184171847680 -549412754655730086025315798640230400 5581212148610066153523210505682944 1455982004453606618030935927422976 -991973728218040165050727825338793984 3792225675312780935730073243222016 1442033587406763121967203321118720 -701660292220090937947485325003587584 7740590676355551199534612121387008 7974761972230585009682153444737024 -329125836616620748640428068721131520 6735579123154549186883971094413312 9965838461560200128717793114718208 -29551752606508021344241556318584832 7144417663936518839364262301794304 8496069751316744469775074113617920 -790526917778950618276454073788006400 7318371368225197349091344203644928 3732992563086966573153509372329984 -330605685709402317707228132098965504 8721671472174833761818741038907392 666998837361311175950372062625792 -322539908079898076871638319963832320 6678072325263435762110003756924928 2657499077579997611796146962825216 -352890640487438784916599968725204992 2135156912605010190505875653787648 1384241216980206230780579279798272 -284847915537849664064861860909809664 9197312804156937810145142672195584 4054893659123841110573490227904512 -560085126586202879900496100155457536 1908362579213089506334383332655104 4560445501921659001037023325716480 -891628715695474759703282054632308736 5500944442492376165375636156710912 693085005395760352928235048140800 -13591234109032397858387096672141312 2781373823010991026953876643250176 3071107893573836614998603656593408 -699580685406265424166006199114792960 2982461621961643384607204666507264 9169266649787866210741486207631360 -933633120314652773404536604830203904 2741875140945583797055988063797248 3521131374751761454537338699907072 -234984506945362382058547909859737600 8281166870940435881549584962420736 3429230106264093592109990734200832 -880384146927997846730552610379530240 7279720609355536197747490756231168 1341445931675381344089710769733632 -467928926549141087092421266809815040 6802761540238835048855331510681600 9689907824337981759881956579868672 -498483378740128210463178561805090816 6487816329441756693907517810409472 2833873087725748718104170823942144 -693931255879101945180696157293117440 8284023466567545647344143717892096 675216480593566073401037666910208 -345697676565916199991871419795374080 218658410836585518646991295348736 158427467248842780859708810985472 -889828609366172958234986254696448000 1343048684134743445030386020646912 1956217427055083772957158369394688 -552330739637594986175079964789964800 934146748288783507152162101657600 5871508327288709234194053326700544 -727522464691125575011694417471864832 1656566342420143501176745456828416 9992031064766727255104174541504512 -279267443276260710180029609480814592 6908372905590494954808912321183744 6410897579903700653155585909325824 -948239588455875142171611849801334784 920901263022443887217687622844416 4518181563646124172493430865264640 -194906486155398918306853947986411520 5839424428607040549130946863955968 9707658841564210672498932214398976 -809649227483593447427632126670929920 8689740855759526447575713364049920 1395883621307156447936903253065728 -352704289447492698418791075710763008 171145727138261086282388112146432 3166774349650985353074333188096000 -300218105524167589104128151085121536 2182598679463296088528550314901504 5170760132967748544830614724935680 -633190734389909533294371220158939136 873685041630968303494764532072448 9743971910100661496186395368095744 -106792758181448212762869479845658624 4855358338960953721221097126363136 5355548590756799519347585830617088 -179747871450587290842780412082651136 9868392488902365379242256905535488 5256793405202753083133398182002688 -564249964430500237349132157340090368 4343207189286760188106532932550656 2972385693448386963986353995382784 -897960293308770069532713757467213824 8232621783150868259627422032330752 7953618421024629934230741062778880 -345920089297774790690676018350391296 276038180711828946830920490418176 3958161397507102892054680011014144 -590866448712120417375467439885647872 4286279131968462083135999957794816 4773284284882732705788510230020096 -636230677074704684532459160094113792 2268905171486292552733389005783040 4277855340412918868591850131816448 -276990114923408870489194215350730752 8404676834540625584017741243744256 1536189336552168268603095106191360 -549745035371294079785013332060143616 5009739040359160046660915799523328 2204786140050393770533192594358272 -379156773259767446212443569173561344 5480519869081360826581202042355712 5206088689859340050498662556499968 -947071706033094801250711372321259520 9757387333061467234794013120790528 5812718302027881143858464324321280 -996602776559731714903916927887867904 8138149080208398196185451865309184 6963414136226764136229501155672064 -139332545498101945657351393945583616 9286247934865034980146187872501760 7399167632110378032563087472590848 -909398415024417491414410784220905472 3098217124839697308199549541548032 3736148746315788687197260711198720 -801408815740921487939170889283665920 5104830143777527827477094786400256 5377644550817305710085020231663616 -323526231283340631597828450438610944 4269753820163062690479993648054272 4109083581702747756878770126979072 -844904100584541637364591205768232960 5887555581850520549912939639865344 8612634306481205431230838354214912 -17913872056664700802911765415329792 8493512516164891766241682012504064 2355049571570273395186742172057600 -508581701329840362051320857864699904 3086169492837528324125925243355136 6242907821078461713104372039155712 -52994443672105798566353024833290240 3329823019036426109278936409047040 6325002884020222479962210639544320 -450784672926405355431838072220680192 7144138214769707378493629266919424 1354027150310995343825538828468224 -737513126668869454048247093735194624 7721064018604090136163564331728896 227752713663739531178991843016704 -475082759421024821356469740778815488 1762629771779865222671155867942912 3597750203551465790390011776991232 -484075974282893216791284615741440000 6919545152080516582243237640536064 9962341816499861360719959523590144 -435566416380140228627678399165366272 7890305801513298432767357362372608 6155523981285042854024925142843392 -953332245840333187934468725477998592 7709680653232645763482269922623488 1389298010330243468491165160964096 -167545948764433261968121332286619648 5266919671526108505077775725494272 5063721193581532765033655177314304 -552998768829095470335224315744616448 7248684485349025192362386477023232 4322952808480352770846337892614144 -61022123694531778132015745884749824 1186444438244753911338493854875648 8222462617334437225997002604544000 -538791939042048888818876156062203904 8638527148610775210710157544652800 6533225314129578585293920550256640 -682472181098225737542678604433850368 7483270561623495771279778656550912 4286766508549001484148301868564480 -748638258236917833953905708703416320 7932741794366990702725311129190400 3711683607202051105161065307045888 -125387327738193422854313757332471808 9735271323553998659715772985638912 356338034113790588594444996444160 -609386184984918758460978332874833920 903295607133039859624497263935488 2239355070595483283083498912481280 -197229830339014302262319133604446208 7577018075862672573223782550863872 7533361800950973323318459824603136 -994191962043399885545848307351289856 7212887717081361400702954213736448 3881156833268462842896644822794240 -277620572351603683331866221246152704 8224620742074878597174567936983040 1208585837678900828588528256417792 -643799589860044630597519945074999296 9451038438069045329621980675047424 5717811083905187579671323225358336 -975054491111670343680517522554093568 5045606607247021702078153122381824 2967269279736238259255171006595072 -937038964638705840768372433655693312 1186624756046325492821920841728000 3600165294857689637783572865613824 -847541352582675360399884168479113216 6204248970856433236294075469004800 3317538230423344055189946448740352 -795368688485797587084572637242851328 1085026429668340935938232782159872 1645126058408661758004106761338880 -329644189115005208216714089905258496 8901388337054462655640051241713664 7031317921214297726323308617531392 -25228322587883431689908307594575872 2659124774602319862675487420579840 2986882728471125786000537312821248 -313659305906887388355560443819851776 2937182391587051303560635238842368 8186262478864477656259901154918400 -165625767596040727583263253275344896 9716402420672581941813997576650752 2365836765760904551651487879528448 -4529123471887680001097897038839808 160218409288731786863824743694336 5861137655803008693640203809587200 -892450548465897393154663096921358336 3366018991360047611804086041575424 2797196110839550951756436441399296 -850728729944078722501047430443696128 1626809123028029759827962935377920 2301027968705003865661466579304448 -919494310806208562971739573261959168 7370162862635007939122300859711488 9367801029730096605235776929660928 -849707005538577911282606403879960576 3778350675725100367812589395116032 8099049720418790536687705743425536 -633195362424097158099167469983760384 7568227408719714117571278985494528 845596972336602886179517718593536 -531312591539817742556069913031606272 5106039568348447192881410806382592 7951765746395552066774845962059776 -852560090354771117240451376758128640 9447668867122745326853798930415616 5129028319953809784945375526780928 -153915324453901691239127124751155200 4477417913806086250805579464310784 9989538440453796234851839897501696 -810733654198378875861191415943921664 2376703830863559010000989881106432 6351177533140600825591891815825408 -490998994515581371727305711581921280 1359006487432611599219867074428928 6202630169330224142256909628473344 -193579900837469471338308244850343936 9565526441873230492712030248632320 2317634775508082583034115552968704 -29635423465999398038070686600134656 3640927725870381714370203326873600 5796349902947376839474160206872576 -228261089430600281964821449719939072 6975425061749663192367989711175680 1069489651410794836394197943058432 -597851059600929871304200460559187968 811108371613053970040651731959808 28735325838467445718255883255808 -933097049580126283928507629267058688 463317956446741955904175110881280 5793404913774062450745697189756928 -521536561636595952907232748152815616 6773098952928986501220310420815872 3108211183777076784388396774588416 -827003213704365123526166185454338048 3835451879071824628560523192958976 4678538521657677677167136538099712 -424600950914285048718140539356053504 6936604524846929559767249198252032 386025530820023192936735834112 -351748181057929017358876073221160960 6372863222846086170712079503196160 4975874125335816334341843793739776 -206957503179368999230620283697102848 1063805987153670422699741313761280 978280613825524587479036317401088 -993397225498606252828762283391844352 6163272918894982549323310105100288 1719387178108309686869778438815744 -155493403119148984075955970833907712 7710819727331444907443374228766720 2549764416575567197423153790844928 -868864382902810205354888719971123200 2280556127679328600357036827344896 9990888638090628881835811596664832 -455836593809311085315484184651759616 7607218509596852599855482880917504 2891119555712335596996022344089600 -673202011865535054707993038974615552 2104644833269165274681762992095232 4361768644997161546674339957440512 -445918967827491978047546239639093248 5870105607493027785107704670846976 3362517722692069312884901467389952 -70047952417865003601914446724726784 4855871231397034926053910992912384 5021543117552963337790129891704832 -281126835824486648131089064293040128 8084989839333917220835617144832000 7221893676961102415043859362873344 -444007937686927948266913889316241408 5117893997166200702460577139654656 1732083954806619023143058207145984 -666586413229146769065986569321578496 7245860328701270515640355818307584 9999288488725705441405432171069440 -552570754059823050051143236547772416 944426244675505843403747028369408 9121658132046194638495368286830592 -187534666929449655885435145908387840 6642718252516301299699939362734080 2560135046619710339602837229535232 -520280046312472108375089935072362496 9292591605961999559511131973222400 7479396814269218400875033057558528 -773702637995597982116820603000324096 8766421659692924332049864002109440 253515675551213696797953799225344 -391109443395367327348761561707577344 7982365841646997032589185861550080 8819312424055105991084686004191232 -189139890890589900353873089786806272 6121635248217686833423904187351040 1231842315191960169515595750965248 -503885178033632339775497832169996288 7124678072876470362524600898682880 2464676266254544539263739191361536 -242595958895615112532618224947167232 8878289770072018865340389869486080 2895821930472412379247310796750848 -83779273433829157898009770819846144 4972343447890580741837157302272000 3344290008240529975061147388215296 -366439510692540904412844119885348864 7100397988735171103541632201392128 130080383574260677040090092929024 -919854910121386440547123262369300480 427221901429692412962431691653120 3384413559496760038172453349883904 -377217305053549409244459463151190016 4363038462057671801017147123040256 6163508804475555317724583422853120 -350784762944003290751969808489644032 5357307655684622515977622959161344 3676246082234941073861277183377408 -826248049407556830113620380841148416 6720698946956546829001720242110464 7837990871846493522804514951790592 -284635822532333799902398182682787840 9482854719905618521890694310658048 7200425631711571298220123642396672 -250246200233275053975106860286476288 8313922201921148159233052379185152 4015414160733368158745613530300416 -540793935501232980770869499656142848 3643185427071729474680797603561472 977627464092655059840217806536704 -240909928856048077852373696183795712 4315234446272024063564813596360704 5185459673645590230452173268844544 -232498936120359345315487905057079296 8761115206636352523676672524812288 8757974466113117198014640589635584 -715650946901391129179311810136768512 4195380359891918624494962192941056 2360945151411589404232697230917632 -30343683710399749147967215512846336 6465407432830564624340208672833536 4054884418013385755020209919361024 -589084422226700742123414882453815296 2289745217593528920832102782468096 410188750629455059595123392249856 -24898046657270571258153409355710464 1193888971095429940552243341164544 5472263180016308076577399209197568 -422115014806726515809094583145463808 3529538053417894278178570674110464 339093460527395930978653399154688 -85196447672724923201139018530029568 7411848390421956968980447431229440 9309211247393139941319523495313408 -507365083981343584752101036545540096 8989663137099303548254596246798336 1899737596078537726959294963777536 -34274681583343627646867586108358656 6585214911608479476023487293816832 1262183687758271686123758081277952 -162698423029933843568196472191057920 8960493412697251050370439529365504 7543767450424296838337182843273216 -809610295330341444657275478665592832 4714843839687426313492969610543104 7100476886416765532985141005123584 -658094795836564897256190290666979328 8289598638680921315086858230693888 8682161472108622429989551856418816 -343995916659789072236994377518415872 8783298247771170537276147343818752 9078957936284939867992174194851840 -372247927121862269090024217682903040 605105757391772428346377153544192 9660997409063644101392823543136256 -875779230655015234838834441051176960 8161396471615783043586963894435840 576000679165370622084409848758272 -538539651633862961162681160006893568 6328979720074102132642449622827008 2205271462711674660492545886257152 -641787524866372201832028725997207552 4407514447244114580976023872995328 1038855416316052135787363429253120 -265140485950548380229695774325211136 4734323740936740354315081811492864 7138178690362750993540134597558272 -206469204163514520143041795698196480 7570648786108378775717156524916736 244028978228689741357263177646080 -637354921709315077330111262254694400 4410251415359155227513679717072896 6227067809342619281986720293191680 -8286791651327352404146104785960960 7058293861352942423164192993312768 5609396751953588140219598341406720 -368132664124793248675060327213170688 4044951672593031871928606069358592 935144077695439257608362636869632 -693233469327178802994765780114997248 1192544187664183841802175293423616 7493884529955003016510272943685632 -850088440603080338404564016845291520 1295341160956696607967284348059648 6923249445225132971421090470428672 -123739114828834885501818851781771264 4870953345278019723450698101161984 8511218993522039531421082700480512 -388650655503968925338880474227933184 7397703962614426652039756302516224 8202007743350632093033481002549248 -941763696583838341103505053075898368 9032090432239367711570583401529344 3645392586307615200617543816445952 -904833259625909032410796942564524032 642796834280159258241210058276864 5824959783413080265659030253338624 -532973574298827734195978485945597952 7093202845418823388259067635957760 9258097779926162818433546727718912 -503530660693492533950215279660236800 1318040866177060774019564746833920 2366311404410343978647162491764736 -387815310348361954074644554740400128 3066685345611179901786891386617856 6580578151597870419195826871992320 -215988641287060580579511051715870720 7140993561406077604425494219980800 3516917538695950371998091358240768 -716944491424742829675929789922279424 4439871789943801122137650969444352 8908269269737376084328827869724672 -15984516400379431643631624487174144 1060417663814249705098688304513024 4678147203194523912934472867119104 -646352366812596663919312584749088768 298242649782350196382964912226304 7648155217925589969875000037998592 -954662634001367503450363872266944512 7197759345601089307531925216296960 3427606816216347302883649831043072 -938916636392396500260957027959832576 7506336783271130274556050229166080 1807498076287593938247922971836416 -906054783350910742530287801974390784 6714440774289790836355077840568320 9411042657880249626511405972717568 -695128773741194145239626782173298688 6910851887811152637774746716471296 7033722891824187471227122480054272 -556911679492942714982532693467594752 5476461898794145945930246586892288 8358960239967981257469334248226816 -500604853188982067535554852199333888 5255274229288030387524036496195584 6758099519140498427256105307471872 -415866730960205066036923592286928896 522908930431954924125711134359552 726270307779754211777184935182336 -613277552329199123820733465788153856 3981383925518373431809387196841984 5399268756582933757746686470389760 -636893624613636617266434736576790528 9395466149046159653949818944880640 9788888506208257924640368284925952 -699248477381289366904555457826783232 8752884235978001382456873088712704 3914668316746125901093716107460608 -704925509047929577208289712131801088 82539258224281739341207573626880 7877993943632477577514549518532608 -18498181623345708719711435182047232 196862632529397190477679517761536 1923575379196180199824103592427520 -413623339293726220983743647164923904 151041182376363991676772757274624 5709301545270106952604187422097408 -506093218033512792689396094087462912 6669824304680107185790743958519808 900391126768572183890525979410432 -764958882250821344816344133579833344 9736912481752369673879156519075840 6875358290057356401225928070397952 -427462862875864377718889182817943552 1901222877746877210477938195038208 5892897101882653835788758433136640 -622278158030716502835134252506415104 7862079492056461030671617099825152 2096820362920572683085296003186688 -412112894764209052221239901097558016 8392442838146537618194113375502336 9989377749974612492670724334419968 -704846402887128422118762984408875008 1389179684528629802937044615299072 7915159437700063468532400539041792 -227612951941173479400698908193587200 7534475228764738509042022254379008 6000956959988885068971722896572416 -179204209295084830169881570076262400 622810335834442544500554065772544 5827537034279366330687194176421888 -437295065480163109966359113716727808 2113346362366141255044190540136448 770749226471335834992546055979008 -969262402923009903049853336545132544 2619914973155690688664655703834624 4219158706884132551826877148299264 -667827546799348530429430457222299648 1756718135162677591995468025430016 2961982368066530378479821408698368 -720260887011459912214412389907431424 9394823962810564549704667126300672 7340638145566050278935833782255616 -718186089958291532441953167401287680 4328611030607806835814326140403712 8372282384759972865500348946579456 -142901791452203497912146669355401216 8157984064716754518748439563468800 9826086624940100539339497225060352 -593959485690111711081007272270233600 3705240704990470941117267941785600 462235903789769902598594274263040 -275772404471669731032514147540533248 4485526991168721235440835529539584 3501420233052392904198733244137472 -196231716908333247046943714385592320 1732931690713268021221669862375424 1205841292532402561001547756470272 -981121594211574919912464018185388032 5197998776252964420517571346825216 8738287543059458934760870451871744 -936212503834095508725218846703616000 6627007844745523906932253195763712 394429122522346369860188743139328 -584884023389259667766461271361191936 7108132441451902184681180103704576 1491400999653424257099823394586624 -901642844646866249805717514221518848 7118048815430208793777565511712768 1574356759058761309848555025858560 -823904943402482924353923074540699648 7730702082412233085803310895595520 5436246833197474039116435833225216 -713244106219539748257145908472315904 9227982193766964228129509217402880 7172956754939260249455835926757376 -517651956077260985280389742774452224 4027895125873356539145061016797184 9331473896976797466877754989346816 -178281151665061698812624559490990080 1792247783883902677778747562655744 9382365779519728090494344368226304 -955692431366819478225548027642249216 798594275196924222421614280572928 7186977745196114989515443305185280 -824377175174233488031022870964469760 702590395199384713176584690860032 7587934748089501415279698099830784 -657321387299581938024491245287505920 4685091715178109972048133337645056 8432876080834548467699837583753216 -62802742549357528887572086084599808 4164887022187752897794185118089216 8419067466675600945688847843328000 -798937465641476908917671845959827456 4055858078275983470629003173298176 878715263011925544572405692760064 -303056301005184761895206314756276224 6552065885870154353925303583113216 2053013990949395763906228166590464 -926460570264161032508682837505867776 3552947507688378211643689529245696 1732709593072507983977778040012800 -426352862266617221753535212134858752 6630606075692057458906058987667456 2614079590805843859548526119747584 -421736561999452837442025179075051520 7584767546107999288760638214504448 988350030578100309831265252540416 -123508673762341596978467597916831744 5337473708819342411324744353710080 5458219036384517089909897915531264 -109513030514181535972583705168314368 2770283548898630875968963214311424 5431888378700415578126506738581504 -290099314922758092669156289121615872 1588218282320391216447175297859584 4876681725931884730458695524155392 -508613762662265025447907042718121984 8929757763587356345164989248569344 7913829459933027792554274156707840 -719449054385208567958404888440864768 6892688662926285017547804149547008 6668885303082346034505440244531200 -626971233496476970848881877649981440 4242713740460654755801399384080384 727273746741191471224924149907456 -296947804893625175338022645264285696 5391161809917841168863885730512896 3981111569898209266395057582243840 -158616183802201919457776048715857920 1076142158928952612785985584889856 4546566575679733920508515603972096 -539789327267374306811285126384713728 3808496376772189999980726087319552 2505189131205250441310287719038976 -338528434949906947607753569446395904 5997223522134391774922546029264896 7567388084936432668305146224050176 -319692397030083355822149649395875840 551151566836872078080049841963008 6499826226478819991486424338661376 -182832063648079190916917593357942784 7694396713572472777231894052864 7796162425034024073513556349288448 -132853045234399878574773932782518272 4011210832161740246215583628001280 9035645357562218677039033395183616 -154383248848703439184291264741769216 8365502055575588635990659935764480 5725511564149038615507122612338688 -412047830057568185247927413650751488 1749678513716844187435276896829440 4395861698146788557868894483644416 -759236993182033390491710412896075776 464284641382529479789883529625600 349322834020818348289421440188416 -537007591254450607529591258895876096 2906364888319332946214932031995904 5528546803785828897181225095004160 -464406113698889779220087879535427584 1058882626121779835056832947159040 4305666901754635576250250096017408 -6954235384117414760057751872733184 7909287692769025143882539841093632 474940306670116869215973908938752 -246303495863710814118007586083045376 6709728498406792818191600044736512 7502416356192991783914508809928704 -859363912159850838428684897572880384 666437321792922238567037844586496 8376785264148369656215441325948928 -342307594153446268178180895659786240 722665345499126518496447220940800 4503593172340136942525118807015424 -271388007941484218690496774344278016 3151983076663489879416532505722880 4061840937242146882303008211730432 -22896041613127888361772492328534016 1197050943108031754974428754083840 3884335959612031005444033407352832 -703612951223863211699731585573060608 7713277960099332469922236496609280 1848750072886186550862356034879488 -732293611029927253133783035296088064 14773975862400877268745263775744 3619883659084986418864245218213888 -769982192856953611840917221259870208 1829528960338849759388273190371328 9408315135031025639195094718349312 -934702076024883297885468464177479680 906635344125095161817655421173760 5202051507414038529721125264424960 -447545157883767347247912939381850112 9430138731762342459524205007339520 5648682887498252412482325093285888 -543690363973365142422722751596855296 7015850248422037237957877548711936 6095023102865565471474544199860224 -844813371047866156135571299271442432 9847072675530364602549769114484736 5741336090133540261080710615400448 -93973051445579585913207927884218368 7904321219507374774111753872605184 4718522423582578670933584591716352 -616930598573794573543384118435250176 5024681153301712137317445873434624 173834650854551158241894730825728 -628972012331559301789000361536651264 6903456320386665021803239342866432 2297723466058928451035622216302592 -838211123465313093767923227502313472 6333485252033990416518634247553024 3966717959764126530524530083889152 -329143806509812915697972537976684544 7152383067012419070532581557534720 7338797848103729729902520546885632 -984045784919205832540410497592197120 9007249560163192423791871058247680 1667913770387384938235335029030912 -806131538456155355946185212276244480 1833225911287488297922881411612672 6323674066772713909822259831242752 -695777113191951515906391448955650048 8541180144604375426521612649758720 7230329451186531557800887860592640 -223557336000636975404248492234768384 8726278310691475157620532778631168 8474255879180688863021435017232384 -942582564892404869049293716959789056 3993926615538525612781807429746688 5976596212889408451000632992595968 -316503180660025483155087929666174976 5439826119961166291160405383315456 7076621554471285321785426011226112 -512588550139378014533142288843931648 8200300170647609767893467752562688 1663310907675570658412727738826752 -359124363326173828440770856221671424 2498719340754213994254615590207488 8919271018269839688640491186814976 -114917046679189371974632172674875392 1182750313342853161659540214644736 9741477713905066892002412696961024 -178946348890652133986080740201201664 86243361027389320999715664297984 5213778759315968742053231298871296 -265689251084131023609990473177890816 1044509426199002139121156616093696 1313904420332826153078782873829376 -877235394397449561973171935925764096 7682655729197351975533512444870656 9562492236271447092367907060973568 -524862884676896683290747276181372928 1892040873670299845156309617868800 7478732524667400960084246127443968 -119651991464917990964844163284074496 6834224940031379118663532082626560 1836667473657832515153692016508928 -266184926369465009687950885545574400 2484732493393070139168906337583104 199575154716287280602329506643968 -270059484704240421619745101505888256 7013831040878786793533781141618688 9307320942204942994551644220293120 -58095965622311722404871839510691840 4644133083063220699812529289822208 8978757346934851460697992787394560 -690452321883653205091296693274542080 4243432712150765021561432959877120 2441411034324236824717282965979136 -959353453185386502525963911064190976 3995668650460047250649735829127168 7526661916755556237845411584278528 -871649908568672840186598066875269120 9566287643154809075827635224838144 3193778762121399347050216731705344 -190589439144062498908703594507141120 9654042667477108207492805792104448 5583073038916178065190900081885184 -671438227935350053122085784253366272 1336353382105413392020917264056320 5061405575934427315991200760070144 -99853474568276603070715196287746048 4805162148804338699139512373608448 5029139793673350486451766685597696 -608393511284406625086577775986343936 7088154689870393442762077857906688 458261692679680173517725254025216 -692375658130266195388997500210774016 2002119715245742989836449967243264 5377743831082503609901657920372736 -708783800632342066586768928130727936 8477879903863999283420869834047488 6207608734324358958120710774456320 -241271969226846770362913633056325632 2412970162816541193319878292930560 8183159195425115258330479134244864 -95232921209506518576963513296617472 574731568215495124826516478754816 3608349792999953680270480046555136 -585009093390293236955747940170727424 3028444749638140847502464076742656 5303583792261366455487090783158272 -174411042863207421567542193224155136 8852585135993437821711646956978176 159738471601132989763394750906368 -512928561062010517052654816661078016 6578460689222846268600340126367744 891038079733409056636665394626560 -409402050261358201103445624296046592 7925662721830048691420565038170112 9948773568733999750226928272932864 -21938214595757676216454424758845440 8392874425926449584851923490570240 3157562480940046982167486395318272 -774953287266311751018659952952606720 9331844154373419329015304765308928 100694494558570817517163707891712 -369145761356362543854439871935414272 8210598971981515771438558202560512 8470157129912418130340805636784128 -382020073371628368678661877529575424 5532736416539314899634472691433472 7218536363513507228493320254652416 -592439473629811035530452095647875072 8569754953437905464506452470136832 4169679414579691766963144960770048 -141273964813799989023714328264572928 7098564069551625948178507269931008 2228280389692864972043479016275968 -821197989613366034508095985893244928 9084522261672664691100164942725120 6892676724750367764393050081591296 -404595731367096595745231867733868544 6476595794404279494971073658617856 129176286238252450248700045819904 -464129730872224666329896607687901184 7436588570011665707463822949744640 7555381987176535599677577539616768 -755464544703299610998313419366465536 64782467632324374003317550874624 3694647707133359631464827019329536 -72088500102507886840209821294133248 6540941639284913581175889335418880 7416771556455725559384313975275520 -205928048711476091069918674134499328 6896469672456159906147659589615616 7470381964886124515454742119317504 -481484089740766521473834068488486912 6199982621799010928699216718987264 4625593592580523741918580654997504 -214283146318273620216848608693059584 4536623373373990978137497486229504 7418355872792344240677364535656448 -176080087686815053426797782132326400 7653811504353625365711831693262848 120434159344491325911620988698624 -944775725827008134759923731520290816 2492913140055172055039723511480320 9754116678563606587878446678933504 -648441201789785937947685174036660224 8207405666253677646511804971483136 8880320195866699868131960800935936 -843041161905080354187197277641113600 7585348495604851243456172597968896 4902081683630782614527482779402240 -396394021446138465191946172621651968 4439152907241624747729352780677120 3501689613725862989710233547309056 -525408504536961877053018970378993664 6247748089050518753438157724712960 6905540232413385257400540717907968 -626482703074016817067020554067771392 5691371584074431148020097521549312 5915365133766948862728396347539456 -898272385269762154659361393137942528 2891850299812143322246934832349184 3718170412241337059838976411566080 -341725635944090959204541466358579200 8254505866016326382630180191469568 9699236100017379062174031978430464 -205194572040342680147436494550728704 2698549078187786739789989190565888 3321337020564123302349384789786624 -218908310076118280287826445498056704 5477236821998693604176569347080192 5653720808787120036034802377293824 -303855707754411311571104793073025024 3995610256634307410185106462081024 2688028760999088593225381285199872 -399468242944733887514445344048939008 2084322097602075966616378732969984 3558283475376408022220144480616448 -141723256065547755403503226801094656 4840985343193538193644613531598848 240412891341180390234732867092480 -231454229024610832027345323974197248 5983802505387929486097040631922688 3044820751929591826329856005636096 -969170287225928937028116291344400384 8068723282497965766451230127685632 8160430489738216982489577683943424 -464750070695667283695477027181166592 7787611333686204944412022832889856 824085137822590307066355478691840 -487578765839809023419749391505817600 1430163003511974513404239962701824 1502805519735949504459507664683008 -362199832199082124206065743560704000 6671988652538555258995663645442048 5385901749546660721379368973107200 -759780765448485256771081172953333760 139046807875582697906246393004032 2192890546911949154609533932273664 -338656095850218093697995450240466944 7256957525937446834181046905339904 3605417690657691377265364858568704 -974785548355177445694302723344695296 8261770286824993920963515963670528 8132582885138098071742592084606976 -501001951864279839243398697090809856 4176288283337526159047629805191168 2254720505042119473686617606062080 -699338800845168046127301000561688576 5153098771160826403254117844647936 8183813525596189265181517534986240 -258907807754663704303999124479410176 7394105128359045036726266305183744 6298610570525215559080982773497856 -939210006569573499568956029832003584 6098104964474053599945183044042752 8412958796916717900630554929266688 -109159236694457559684700400594714624 2376251971010859074588976865083392 7343074931927771549695892206387200 -916371872250582977823651572702248960 2122961159236124062076920196497408 3035969825778945624609473588887552 -333589237171744520556037256857518080 8694726578712959074898817201471488 4924463346656225579016108411715584 -41662913245767903594931965948592128 3628955873807983233268078889402368 4762751390872541603482618816364544 -551021393022291298688446328744181760 8618400973206025696335100223946752 460871136928406516686264962383872 -917105853760496397110232332072124416 3505883105587212688341293433094144 3538946137044882791243073332445184 -167311465473142975452833015046078464 5099650397965823522533693485744128 5314257093916515984850813380984832 -518287282156663255995827514964443136 9277368218664028228785719828545536 6740176187925343018747241093398528 -679812745075919270498254469950603264 9426167454157394600118769950916608 8506950932839238817004244789362688 -245231505761044183367203993136660480 8335047716157843692404698477756416 8073390863507101919264596209696768 -376301615268306525088819487619153920 7171984140028763380290393959563264 6139730267141830150929524948205568 -526159372496851566589740748418056192 5847766000583805257013019268874240 7406404753316451945099947572985856 -678450177656684043697466244306305024 9988518605475020832070366180409344 9826385400576974971927817166520320 -190388513906164331419977665826783232 8216384108561612514261744798924800 6865775872254711615832245974073344 -914232293727651089489259403931549696 2794491581703867123673565604347904 6239902754081729781959894321070080 -377234085692847088981274726401835008 2673977465512829842456274295324672 439096224689628597776183522754560 -646258221185560406810032891066580992 5437976395703490481347318926802944 6097669861403032445848316901588992 -214233910998724623746060143613181952 7572408411299292379760019699138560 1291730730819276834923693209550848 -972919858215221408819136456923545600 814772409254765679762792700182528 9853228308999169268121653485764608 -954778784541437744517713013902409728 2062573081901860168725275149860864 5663494606033784312316712150106112 -887569618644140232047022655842287616 3720060769632526157276717877559296 2377012091603608307323256864505856 -305849887355641235099975622571589632 6705726846503182556601529319555072 150763817808925959760597739372544 -785869328015997810321464392476000256 9277910605812888477180684018909184 8009671703848655103817158368428032 -871037377018225685007602127359442944 6517626823201521430017715086557184 9763217643499607187561644283658240 -469447564869070125531961326284308480 8942741304020754576311928984961024 6630569931080080790009826737389568 -265831295870965850782946964866596864 3788337298821953309005292205244416 1972724755542430163668664699584512 -751151768723618020636231252544847872 363730124636314274125975440588800 8238673796732898300581122582511616 -197902889352811395877118521498402816 5757209848664022129409865212231680 5237069838634257847747949791019008 -714027478090204317893624775995031552 5595953618027051144800527856959488 1107497505568587569564707610165248 -467030052208226528841683455870763008 7891365210459635059603709433479168 2515816970359682043912357989580800 -610588708439111589141815063983685632 2996128235070091320586790722600960 9352056451435899840403442713493504 -409287878430843394617661980202237952 8678356593935937663613430474473472 8689497804510632392103399767670784 -525211493328185484577216133255397376 1084206013282961928223824583589888 4423841783357503109514610731909120 -972807712639846013956063881580249088 38139915697225508314330848821248 2807197806720407854616662308290560 -26741265075646230336831600105357312 9312324290764497533139537281155072 2805392131137979823381956203118592 -144666099236285469616474097214029824 41770003837148578993698093662208 3526935148557550202840374984048640 -488520740314959242188719654759825408 8786896102691296979785582827798528 3437622123509358932177172104740864 -599398959492656049970412618040475648 1535208070026210584254622453465088 2488878605524748963804370947801088 -452472410393489009250869877896380416 459396269099701879111909545869312 6110732319436701759236869378277376 -388167301199789234632520062061248512 5056048494976869993885255902167040 7390278252674340371804528278765568 -902595683097376744362616782279671808 3809824860883060942852867565289472 6660982768539872774786004656586752 -634368739327585449866391949714391040 4659898931235923734026949199134720 718141710553133018701199539437568 -855439073252803829388138802613059584 3519024237228436168864177282088960 7273950022081293396939369760161792 -350820495698654156355638516430929920 2163136181194277221636325563695104 2015579123917364992370871340367872 -519575262268726746627425105371725824 6287019838003137888896111658139648 4145220939179002450926704548380672 -694596735426761610567226999296753664 5012393072023348786045806266286080 512930231317050754219576892850176 -563012371471518318678969343069388800 1173404955454160332322860833964032 7871232506427943650186339165405184 -229138935560626704575138715228176384 8175824916942360636735442173034496 9210948464233169032242686431592448 -92998467714171588625881068631752704 3873477650530823969460295686946816 3627728796003240098806875211956224 -559549060761819438557102463493603328 2783584210499513298677796266049536 2697732229296509070184499210354688 -368583041114568823460100537598345216 1879348207862920537055142522912768 3841355677642587111423735859511296 -154179857392646669224006398062362624 2794316143868291842098741817376768 9378219816288004259869361805721600 -733157590387567623357072616949022720 9800528360765502621804889223725056 8157016091884362614171186071863296 -91958504588511429653899463891091456 5319799791713804889048888438161408 1055028639727781132324932096622592 -758904792827208206416398005190000640 7280753363449680913506327467130880 8478745615379676078449986971369472 -811143614733969024395041533268590592 8865383707389919479782008393039872 9436272717722035706309574358204416 -558271079718859551794335946960273408 8506116080711232357347279348170752 7552043105195070192695003301543936 -662241236549620842553136545328529408 1475366269710110575918220729909248 4726429896398868266861361427906560 -171564719222087712344513498383908864 885395671837323223165404220227584 3339933626133194594099875949838336 -345669877214992170214273949383000064 5867219822662071286462192667328512 12592650200645356879033340526592 -327335071626575870131304495954526208 5365542514608078389186514053496832 8175461112998600301257904539828224 -269052264566111579947477313156808704 1332337748868065289052977633427456 7629975102777136390237032179302400 -699339070747202985936815871269797888 8072270002905222339919976337506304 8354578678194156723634208682016768 -255239549977390071813940500800471040 4809462960080259166540781666172928 7517407027855206423380518770835456 -201444310040853131836000194825027584 6616346023804987284710123982815232 674080137292757849887441032314880 -573642291497835630552126451739525120 61229574705854353553090957803520 624806620337610918431068004548608 -569885647100930020508473935498575872 8309871165519186216046203756347392 5765951161988748667240299328700416 -24443470251360423220435355923644416 9443356754712284116022741384036352 218642849911160329495360623869952 -417138217665183155277415919638282240 809774390413488455600114010947584 3727041602755746601780319535235072 -430308230819830903222973473067368448 8082243880361948084489424289660928 2038992239326498660067432076410880 -48110292676623313003382451218677760 4692035883263617022299636875919360 4383183167229712842931976645115904 -612832874236533555157488904941076480 841412802864618814726547865337856 1720719097679590908802620740075520 -645469949533473723277997377895530496 5510157731133613002441195010392064 7131234930587965397703255014768640 -186783557742668084708695412226129920 5676957758727167387066393740443648 6251587162321907996609920181993472 -47874912113534216283752311461773312 8476211211227557034782751719424000 1859175578412548781153278136156160 -424963458093630121232041048664965120 4358355317070697164755558782205952 3258908739032721525643629526253568 -829929989326062805808913776157655040 7199589778725430361334922304552960 4795995737937502885532401177460736 -50962212469117927462898817109590016 6655138967961828637730075335196672 6813858401285957563527860162920448 -859024073143401896422077935187394560 8978092931404170414143300092035072 6154546210131515974935147670667264 -306913949734855757644605637961711616 7095174389246342170180396978798592 1837805603758104702018339347628032 -548240448005292090109554132030324736 3858667916845294206816354253668352 536471504581462949519944522399744 -274369673009847675527940194284077056 9267728975865893892562464804962304 56455946916686692257990816301056 -861397987281636342017649196801196032 183665483356893309960189114318848 4192657873617672144898047214616576 -668588356782991381293876298110730240 2297440123970400059248118461366272 1582540248633865958343607964401664 -149622607797789304268627871627476992 3870612905243525833093239229382656 4470449919967539957895875568599040 -457142395978319419728791285438349312 8058885660353712175314839214751744 3748205501208574626054254050148352 -233828029986952151804125969236623360 7552549874262518815525041195712512 6563111841135059172563723302731776 -124969498514377772668381820794961920 3629727030019679583974069756755968 6601428002131067197478743197089792 -847171996662563704265829782508273664 3789327743493934546025092283891712 7586593750121569896008978299617280 -799562899232585735084402178508455936 7794682525286954343320365832339456 6336864036463045069969502473551872 -637657724626517375501736667034681344 3603943501311918558119914234707968 8733277329683908697262502008848384 -826236771833925586098738269444374528 9330097280927454322042108892938240 1873009984704069943503067151335424 -276049452233136650583544129642299392 9098191499724904568291754023845888 8948591654748619912834352637018112 -558246220759855132030843216463921152 7342888133045637592566671173746688 4094545850582062114975722007166976 -920983235171286998378943948605358080 9747966181419151820668280055529472 3536697035256001966063390640046080 -599046242360805594436980784551165952 6240972008895581623281229653606400 2150619181953125368116562597249024 -969370801015691543836462194748293120 6712334654490862809950912365199360 2410561451237304535188524255674368 -661595211805958963850984646485475328 5165376019527394162242725179555840 6960387848502103062693951437799424 -46289319467782342859209995490164736 7943890632727924127918388901052416 3543140003484428380207237082120192 -518943708672345998988926744361172992 7436787282494428354252291203661824 8675716317927245869283787096981504 -732567034449556015616476858390937600 6518364255589669443528403233800192 5635276923617116279604734209294336 -221887034447626158165373127063764992 7089394193992475634322895521447936 373496935794730435854966596829184 -102381890035389855708345487704719360 1943471552896897702581992534573056 1058398255168050530727178824318976 -133786694642936249845156479106023424 1365377825001337895647010847981568 942852939382542978398327047979008 -897477447678445713103056649620291584 3598990719293118652626642208292864 187830849836964177146350384709632 -628820341588586428292693193832529920 5045127982031317236273460279246848 3167104208749570383343982257111040 -42774504431822903999751938830761984 6176549294229106359681933618708480 9289579367192119752702430801821696 -373399586809724086171013655820238848 9280382646439268594149169387536384 8719453687234927041563618422292480 -91401598569856174959743181921452032 8581311170090275264015509070282752 8519714983709399540779884193251328 -83423394628675353740044522125000704 9054647295212495054659182324088832 8556563751106374936288554305716224 -618014018066091398634599475329368064 918530829805139443916424672706560 5353772420648591913269377651179520 -720674955257479777253546130642305024 670196874155192192042315280285696 9232382170140655759491839607963648 -195663836803368200277922067303628800 5230220095423241969706304119242752 3104406893495190247824722906578944 -58681921736083504913927746579595264 2785183470638857888656367923757056 4761953237514776984463033103286272 -710898041272624944377004444098756608 3119281538871965552528029783162880 36321061588657943192430987706368 -147675390209126036744084779991826432 1188382608251628512367979825987584 3488894221431436715210765703839744 -438151726223546833247303695389949952 8374270062141648018442046234689536 469127459124291607769908022083584 -624985320841442379569323739208220672 7112928080566940727461141635137536 9979482808588622111088222008246272 -34123256047014484201201952236765184 9246407971294248552100102204817408 3804260986851812147782597415534592 -976101735736161391177993967879847936 3209262516264824055766153554821120 8045119421633774958603687486816256 -106458682472674310064862260084342784 9383587004128047349642390038118400 5298153534784952420118972313108480 -829028286854313413803628077250510848 790674340726567353686625919959040 1693883944420712728280450474180608 -890486520952920914876645692477014016 8188665281991882688268634192609280 4003968557765049618050979609968640 -522890065288760032851013803498799104 7388105986938771124712539728904192 8397072753259826475987897744883712 -681260575166781062344210287486304256 3952680860528405135861566213718016 322308397551029672428693725642752 -577385494050009394841109654178627584 5284081907313885462628044216729600 3114544118659207173659047701250048 -509204790158706467302772978135072768 6005093642272797356143455760285696 1147906328507939402038183427309568 -614110845924403093089943213704216576 8811323310393593929574495285149696 5136381840419316847412717432078336 -972007212177505164231121159856324608 141196293210214575604100912644096 9307581522362998135560760245354496 -780459582433537397640365982670127104 671456123819500047214603331960832 6349834682356361398713081455968256 -281552864518988877167210900500774912 9041072245595069548137628573892608 2649056538287948043074726071894016 -580465726213059049409655404507430912 8926857079447644342274337661779968 5354683811029999962993073139482624 -296994440424001661471108833849901056 708397449460803599088537334448128 6151863508085020917497367715905536 -597646918709321466841456140563251200 6166155483182325401332633982468096 4827818295095074930498331358527488 -511700884051386526744126788766531584 2003579052829138815326963378421760 1652005695485945168661779591462912 -74262446689873272871311347913064448 4671913504083622748422335025381376 343802353152977189845579283300352 -647524206814748021427392003077832704 1381393923823784142329313937588224 3720341205843619725327656833515520 -838078639004306573844862007980851200 5920498687996212698458357139243008 496509208724122893694873051856896 -285635422414083870612620865368489984 7959272275902799075536809406496768 7399661087565581340520040751955968 -837342286351819084157169171725025280 56515082189790172047876368105472 2596308763624743811348663480877056 -416975452759988612910434526989123584 9819729678620033884487914545479680 5712961238633620803455342493040640 -894934735890502401223627483509686272 2267629158935478030616078223147008 1800029671585710366110720670564352 -50766637100883406630801185230028800 2063116872114751777782549079654400 2861732431003036065496001423605760 -133430269133693280135565107936624640 9878670992139982478484866557018112 7016076578225977269058127989309440 -872285063816959309502649035420336128 756700357878330851596047164112896 2769995580150048794272388433838080 -115717444090859197985335101727178752 9065804261710738698922081021591552 5037801130231853302010059102879744 -814897606581039388235835896380784640 1647440079597813330237149394501632 6651107222693202603474820687462400 -817678321571436465712315280660627456 5295121826749879795023404603539456 6257353829046729414635686658572288 -77002066635922045746023927023403008 9152927461434082179024793687293952 3010009107772875875380050335367168 -270922475854509076468036049293017088 2936965253742984312875880682618880 2115651315920083046842574821130240 -309829828870974558696393699747692544 9047817632128556713047032407785472 7748361072581309210816662669885440 -274521140716421963553669443011739648 6305923126324768017213662448058368 4885998700476743018703239579172864 -972355345130352799651434969660653568 3701788734885318538592946734759936 4261841207970007596050898262949888 -639362937578171222171069036898549760 9089317543075774737273801083453440 5412039540235401138997216923353088 -678523526944633402828125961078177792 2195973340309311062990263402102784 6421895697977629963554873518587904 -579703091485995121835746799944466432 8158706233979385025285451920965632 3889450571106664183914672097853440 -890721642958941252588664589842907136 4369765759418906696516170179149824 1019743967193429551278596284219392 -188933417656772696444528873906896896 6171984858779180009275839842615296 9313310641411812388719113187360768 -220990124101421146089442414881144832 388035383787488397384792103976960 2821474577000017605966564274733056 -440985985130185986091300742915686400 3331482470562413578824526518550528 963719274921014097209722476167168 -305193310099027264001377354991534080 1048496313879958943967887526723584 7602294938304771814108317844766720 -571541217424910715565498980255137792 5875383982714701686555600173924352 3129433902836832113669174407987200 -84871246494661489671967158663380992 5403921125065347667237684541128704 5937483224821379824264316597567488 -241958681706732890759033845589213184 6933981958931669631087024703275008 9700586771981779990133429013315584 -266735048057918621715037015391600640 5752198322816577938918128318676992 3199649100935994457893056861437952 -645068247359120126969945622671523840 9609629035054965278481340537241600 3617558794222599025675327317737472 -83023692939001932704522668200689664 594386631023351241610878427070464 1585061644682678050686854863257600 -257971090063468616560242454555525120 3807432209132109777108590202454016 1828701312268304943885032546631680 -940577581426108832485919591982170112 2947891661326516903023119632957440 1607223250172768560088488075067392 -821066955258135189020057139897434112 8704392115598939496071404483248128 9547080031508812373859051258249216 -856375348670584484907075829269266432 7496709791866876471800263880998912 4567606005043637315045192754003968 -338237136567994082980175505682071552 6098539237109774863478852872568832 9238803236105809575843780542595072 -361559632718589089080905190330073088 1523829685974338274326270542086144 9789379155535402546497968209395712 -441629634896198210225318808405409792 4637388014248320752182945791344640 4640526631783040040008021505474560 -643609150894917063007641721462849536 7946205231046431971908779142807552 1326750779769703310093501209772032 -777308559211337908951312058638401536 9399574097983332667265204831125504 3271440479525437753503165238476800 -379697916596708033443144815058354176 1954874063554132537486100486160384 8730701409759983171816048635674624 -410696632062345586319120391122976768 1462829736791120576255362684944384 4394039574344029079709087078285312 -286285573113160858767580102158974976 1671070824044848222168787737116672 7432404747490174083284789691940864 -131432432985342507700887372647366656 8298406349644031770167143590526976 9652972338079251586770695595491328 -466698644229329415954530889508061184 4796366006095562094039032431378432 1456986402831621244563121112088576 -772331554428189142016629167645261824 21275317997888986135840663011328 1079800235915838239872634148880384 -69668394857446702649224727130800128 4888632321929625277001398120087552 2730166501694055297325967960178688 -291399600530998310778333159873314816 2973589534995087702002616152096768 4414622870250495146603226515636224 -431886106753615856236177504275005440 7810889388034922299129359864168448 4884643031930706438811703626956800 -639501987687743526694411592974467072 4745722631896879971058152443478016 2761867962258681476963764868743168 -112597789810883272965235288804687872 6355222928210523672745384299462656 8916365546204477850913622995238912 -769039282164962586500889290026778624 6617120549460247376146390444933120 4846342906187690731102235132952576 -932425712259079427776371949471531008 496665361531189431392038341836800 2731079358103924492981293008551936 -170281696851605275282765918729404416 3173204351217659908425348141809664 8865949278593832279795061126856704 -997226764185076641109367526350913536 3682518029027657715847747256451072 7575462724655856903707993986564096 -948308012817398354162637405163618304 7222725287022622841169482935697408 3824225123968752868971811667181568 -463436313652743738315923868321054720 4374171704156450091968739774824448 794440283577264869212141477953536 -725068623806214002108087783053590528 115673484403224180182137400459264 6816256445719617846579304780005376 -663206901429937615630806537709027328 7081467035545978739253821516546048 3413931156995566008589825288962048 -343311495121998359981649061922996224 1182974624564265779718201091817472 1494026270343170711914763843010560 -355624246543830288012382641797988352 2726297600573246501020484331634688 4347894224143037596297271950966784 -422329923218106954376754360297193472 3910934562621257185356737652195328 4699545498228371306740346402111488 -535890036179393644762491846685360128 5898953639322948711178479280848896 7468304926832639285196938585047040 -366575735431285978874212898159198208 3151551266257751175423820616957952 9070895782794871468892044803440640 -395789513464859242395207444945960960 343568906831296025084251850407936 2632383964783034753123256190894080 -631444598765286413269974974946344960 2911459342908603838865439805407232 3130657956544302311854278170378240 -633464569562609862296725214407426048 1486700381012695709650143313657856 813032695372296235958582386884608 -336798620826185742248533316696276992 8067967854582116473726070230614016 8352859478928981232790592345341952 -30233476824470351592560801951514624 6868406865711393826768580633427968 8959851174258663795455425519812608 -63573403155984639443081713361616896 7832248328674620758997160624652288 6205060136974116429104676293574656 -688608913153849132269358022471450624 8135443892508462589178699954782208 9229242513358662213816595781779456 -683049467562885028837397969168760832 926744704440343552734818606252032 1444875830174355620881518563426304 -27470736172212566627234055555383296 6791307873545851616947105205059584 2591577142801216811339908982505472 -949145961597252940316251441164451840 3723746273599081964437271232905216 6093538472052454579498420606599168 -704262681584909631950587437739147264 2323471694403864203913543322435584 5684301141630073529777962249879552 -87218421714735939055436421796986880 1319624752680077543552305361584128 1052767928243010499943158666756096 -267857434668757505298980919016685568 4274286122142568568367765616852992 6662592548529037650465191161233408 -852897720169866893702074148811964416 4406454335239555770775409214357504 6056502331696401096478268833398784 -351970272667352959316141239804362752 8819504801304847241365310293409792 4089697779900309007228187139112960 -825238614852995547563524032867336192 9840490044156757325473887092211712 4414365476903523476462760097742848 -680397732767567748289594736206938112 8950468701579978719077857985822720 5194400176833058108039331045179392 -392524315957073533834516649627090944 3247491342880580097777798146424832 5362207401223661753223578424180736 -139161793513709666507349859825090560 4573356915844910393758782129700864 3743937333067371704315081742352384 -65065122066611378027588027387215872 3000363285749003804002422282518528 6073882104481729498541902591426560 -944232817856940485999232841609641984 6790254675507870820794750352752640 9630000103763478256646215929167872 -673134726452315155132346629852495872 7163252445445100229721430996025344 7397455888604406305974471798816768 -408205410495688458386994304907214848 2732274440576763937874446993326080 2904757865307647900261828278616064 -205273054971391536401694099100401664 100925414237624383111680812384256 1958905072032008230222187089362944 -822629397142530738392971512551309312 8141065368319291114772335373058048 6038462579698934962996998341394432 -40251160957251525300676778321248256 603281136022302174938014270095360 9884204519500270729162599472037888 -160702929653950070757669970890457088 1623239662213176645931625013575680 7801306870482902817250347082317824 -82807761515219049583429024147832832 6381650970297758873731969052573696 6921707294067337856088135073529856 -96777789773740163611670045802889216 296555857212215449661623024746496 425896935662343447422779562917888 -366064398829968578254958188837208064 8199571927166925535726950026313728 1031811690084115579878618953678848 -523478468300637570141863388450390016 4416812704732582243592739187851264 9177207821852413850986802006982656 -427301059797710348815025149103308800 1112636957488244532126703316631552 2763544915066126444871802062635008 -894694392065817025102255038958403584 969809608306529427912037916213248 1306945854893833160888911218606080 -567673618856659605526076175991963648 714769534581719745131751768326144 2667925184811006694952556581355520 -145373033751093617555240389294686208 2723909753614206799231679012536320 5670208526818341513599945405366272 -596956492332027920031933349371052032 9668138340118641606332204160385024 4683857952137440420084497891983360 -170225257473696485747733830265995264 6267117533224760869759195335884800 6179894471450250730924342159343616 -992909017273648359328006563891773440 7853424713356804619573813510668288 766391471980086118955099885666304 -277055164754944107460069979857092608 2955348947526344613278178095398912 361663168890023942196739220439040 -488667176514296891713297781073379328 8697924684576096753083639566172160 668896034993206399996765533110272 -448059551727713068016989405349675008 9045554842149238717886427360657408 6174436985044700654096447700992000 -415774184494935571741204782581284864 7931799034933616973867945677553664 7567320482284552970158994802868224 -653749742907766616323516263980597248 3724998922514774653528449858142208 8005155116351143913862287394340864 -424630529003309979860437613406060544 1293061707840245633540670724505600 8927265596735730823847319894491136 -214870308245985170937313019136311296 2137142431661440513442266879098880 1412971220808423767548573591273472 -738194559209672186806435396594958336 2703121555839502135750007789191168 4955206975003475221050521418727424 -460006826758460622171737525021835264 5794731967193198157550797432291328 5545360228583153743077261474529280 -168687979415630462350663399799521280 9566184566664858817817003583078400 7304373278037332354530020518002688 -969139983931548590023781652912668672 3038148942516661659328521365880832 8877994236501631619204916403240960 -244613829062271479539819697403854848 8522396144553348472217715355942912 2524740323872798078145100869795840 -185987780085163256892507139596091392 811644309965668637698272813645824 9499865062677213387465639929577472 -894119399913133052467350152434155520 4970046685438381548451299132964864 4773342996427060339993712235905024 -196641403401876902658465206076702720 3464039401754054626512851429228544 2841659447082829666663054341832704 -82399892560141621631351538224988160 3831926012523326512143739616493568 4746543384471312206179970773417984 -469566934288053917807373292014665728 4907116666757896745937499341193216 2869085501716263410483424839860224 -193115871601349225170461120106856448 651821402153691227408302834974720 3943708922272121870276175576694784 -991983333169185214733980676650958848 2399343590294197557376601429114880 8934771825390655703213232263004160 -552130088136807379556378810704199680 2938682472814773612451720429830144 4016986870426509174211660333711360 -718570089846676008350871536525115392 4839239726964062847619836938289152 7164756370443958595543483241463808 -973058004008299537429379724798328832 8061198123474051957203411492929536 6457990821205806735392842843160576 -513111256629903642885384081638424576 2303079581495082393924690232999936 8381138408845829761421269199224832 -812326980276402664513313527639834624 9750925333110475695578356887060480 665144056609980629159033090080768 -374554748918312708030261162854580224 2751106713757193747849464910970880 4132843798081154610499523591536640 -68934343721888947172879394817441792 7514406048778311979240072836808704 8838493629498243066544952709218304 -832383528568852070225379567796748288 5060237581199793258850206758207488 1332414173558238659664942412595200 -561615339372001979837661361964318720 650032362080692155919685734367232 3653930165992654299771111611564032 -363827919384430242520444821299003392 4343022247877547202204309976514560 1424446751375537134323011671818240 -150069460431454007040508943667298304 6402179720806232491329096784019456 42666993812656104452940449710080 -83127958481185451422797022063755264 8869707675093188335166258581340160 3298744307726517137010430731878400 -18560827497152077233880706502885376 6874643512141285484009192442298368 7710231411063323079844574569431040 -771051611845591011784444337291526144 110659069544609317088882474352640 9244549222447119264857710949040128 -231528960028018412146533458000216064 3548187213430131599285453955530752 6962747857118335529854627209019392 -449219248174908824264546314402922496 3504489224696089423143775091294208 6216185676112573349127850448388096 -588300880904924025359883676692774912 5808847070710781135290616302796800 2402666478464223433841771917869056 -155337043606239147585439302854639616 9474202326657660497403965803069440 658849912806494119195532698058752 -402418629236315283067490248800862208 6137454177364118058022260654997504 6963697120603362590258798761345024 -821572871144400555765682285402128384 5557919131988159185835771794817024 1086291072015356611380995405381632 -197819510475415640959444553576742912 5318009324001484884596138220453888 8259618168837547076801883568865280 -783155951504419521699020029506355200 9209321856944851152955932124643328 3642386923711060987588128693813248 -393072855813937721584237024982859776 2914782416763528179405222448201728 9671294632410063391177596611854336 -833658047211194963030354843811184640 8980134219342551518636079176482816 9148784241365988690381725417603072 -554446528219245286781733277662183424 3153137791518410526834237322035200 3576611071797790095113390703771648 -330401813339825309462128659661848576 3049756164700625580739274494443520 1877343003176284067898958735736832 -240254803695085151991787379937509376 5267749746489905935032119860396032 1694109439132741822811230145871872 -608159962525017152989339188669186048 9515049213800875337944395174379520 4989947937155632516150869671018496 -546780499359802318429598909582016512 2422965330070453895294781998759936 5775246659447324358755844911792128 -835558415032793537540837200642441216 1271303411192219156887445897740288 8168981151252435352752305861558272 -412901978417213223096174909746839552 4970042480902903124156662797041664 6987116064633631281542634506551296 -35733345434158913813535395476930560 6262586859987525519474098012422144 2693266128509053316715517914906624 -54742542826242966361642893848870912 3502086237332000893186586315849728 2560385323448943614270800096395264 -150611626941056512942533311819939840 5392495180099533991431497052061696 9283680711050536062637128271527936 -37512369267229408751484422351486976 8810274014434567929616152852955136 5776847319598287303330510873296896 -503649200011250152900663626126327808 648275756330438352476420920311808 6286473464288011737001000781742080 -691534666068080495741788371262898176 8983620522684926333827818180313088 3630298732301249594523140656988160 -817651244360924500519318150520504320 2410155211942515385825787314700288 4361566466373873180506104707153920 -338341053227407847741649692156493824 9155827086407844424188677832310784 5662997790292253687754744217468928 -121719240952295278019088040325021696 9894311646642662853938098951159808 4821118653444162964540545738735616 -229283849428796970216752062364909568 2855047575097655996014608546529280 4823404520020132456918409539485696 -287895625240203187320799251016974336 2141641318378746541446286308016128 4814803029501980563551455287443456 -473114842109122510004790028069240832 8710809412967041082639192988581888 7066992529066450525465923435888640 -438198177267446132696615825413505024 2801864654317677189490087777271808 6385356981172581411246488825102336 -356886107292670404716500587972132864 3898662599478998065735220085129216 8876866601675889425163120162111488 -316840357466612713608779943018233856 535932955098910872426071529095168 5338311948861379774761079792467968 -663402489218206242399023223078387712 7188691923304366841392166181273600 1201592740952149411619665015209984 -980891432097271153997332655145746432 3575870121066123635092321065762816 2999577808962106260748698459832320 -813470936892075745816436539140341760 8399241476076587560152493350453248 6434756451715580921132872990982144 -63496103493619472486771250983600128 6751202353154055083983134655512576 5626848218363047598190759195443200 -117025674447792451169230912034439168 5790012484200324048015498644815872 7431773477049487062227993088753664 -342509304706994272536787129980682240 3833565643333003770355104333430784 9821618525488792008014397240770560 -849837584895424692385772323689463808 7718912783254938791999504262365184 9846356204459376100491873390428160 -39473600854653823511086998877110272 7251182439380230068275421672112128 5110644954650475777574236837642240 -667982515706905341621880159404556288 8328847940369239681597772423757824 5800453678029187733505104385409024 -718167713992302600271622481802952704 4271538715612603143296028390719488 2397169981406615458207664435101696 -816449238165545857925675347525763072 3017526741968325799515475339640832 7438332080118890679996164884922368 -608415586737893027315856492497731584 7030140145024793206092807591165952 8291864652256263368876481474199552 -182114443049305116502537888883277824 464862404068300413574965595471872 4544583587922543972127466072309760 -93919392813181191773071669530198016 4327209601761142341140173765476352 137353999395215342719047754055680 -550690705033670658371880284242051072 1728362223344976362023958872064000 9306082747502344343991364937056256 -28720314580004157126258816599457792 9356847313386732812245296759177216 4312719087656322515017318111641600 -883179399000921394355051460607082496 6486197095029534123195707347173376 9113918622835809396838320171909120 -201350851893874889428229088566312960 5884588523043511694563370816503808 7972544612467665984646928649945088 -454269284043839609983113777098260480 4056393958320778246102074282475520 3249932537933141096500557187645440 -301589387683027640190244341709537280 2594100383957312182758004246970368 2780538887999874382234597472600064 -450708772454351892340016499193282560 2719759588899418415069404004876288 6971783491290928904390992419880960 -794533130938701792199911033265979392 5626316002509315563015345402806272 3992593576889272954002698722607104 -538585329782146308317303153365090304 4598535374555281799152573492494336 5356308421258664257285272383782912 -463430801536922996496446801993269248 8461654621859552419387268067753984 5340308675407800427392102547062784 -278117220969203976143317429053816832 1435371755895039516729445489573888 5055016416313243297855574131081216 -99178861018029507522456577271398400 632090633131935198055356145074176 9238022874120389544056620725567488 -127718887342668627201971737671499776 1046251049757387587125988714086400 5795338678142509176957193372565504 -613340242828322126393638883210297344 6935441420839729869479880253505536 1490051432953143260629891245146112 -15383702386582679046563536624943104 1065212233001898693824603626668032 629316277002281096124137012723712 -288791966497322438272903771743846400 8820473256173834361294240528465920 8489210648775431376645723044970496 -128472725444689057630463185540612096 8018664024688541263314925587005440 6520625195805091095995252398358528 -500917789966046177500436358500450304 9956113312021132292597098615930880 6195548560837428116317162023419904 -260664994601131816705696248386027520 3473282112986398821368832962068480 9837264258008005848409311230820352 -7374174898626567351656571652276224 568902154229499511282279758430208 8599834394985125080071248516481024 -207187999141077488769202130656428032 7127253512368001018402445761445888 9824937562178656334324230025904128 -329621880104777428598674277141577728 8639706403038396359901663694159872 6774052712644578267650660746919936 -617895512333620033560235972505894912 6295503404925573864834147662430208 1661705347639934328785790413307904 -182251954267664525667935447043538944 3535857843506413016997356032229376 5161546667798856297114356148076544 -990582043838051880852034322622840832 4852978016830378481005437741170688 3643897167076675085573503341035520 -991000497671623465698825774030651392 6195639189487162318647007509479424 2483577614220143223061602023505920 -596599509688537584593164517622415360 3674107426759693097431330692530176 715002465134276815810556621488128 -50980985008136919438381321010806784 7414166263091270956059956223148032 488094790312726093752220929490944 -738150151895765680398702402015854592 8045937974441405830037162130669568 2125774171358317906143262994857984 -834664101715753284536082065111646208 8324656640565664988739557119754240 7053824074851544048512620694601728 -201194205918884472526008815173238784 7375196155659620662291510430007296 796817460338313892818129258545152 -108843611022264235267837345098891264 6106636098415258106814990104133632 2514502028591708012459129164529664 -706800956259965915079423807646072832 7580600161045400035755367868661760 8022519463297150615427971008167936 -232985647624349561825338536335769600 4184940963623955672264736323403776 349724868780129505703086272806912 -983038243048769998406649658745028608 3084262317304424953048886130245632 6131655024113559005108497587109888 -928137461390997644234796471483891712 7517522105485505737427857363173376 7624655492717301483607865694355456 -823871000281286520345838230473539584 9868205542724475332733741299662848 6780987567497955970734147118301184 -137830480175865125211390149107122176 8798672052899620048851716521590784 9154504573713238639703367146799104 -782382650318378438168195086849933312 8141727663913868841325911131291648 8288404962324524507539972510711808 -472131924260946432908307832250564608 9685219992778933483974055159660544 8805064823060662284562367225266176 -726647395166598308278108480209944576 1946740749075321543868795458682880 8676946766779757125483600726196224 -751535844367534005681762522424672256 5280953501067639126113537776156672 4630862817283877101408751773024256 -718716125332972284765157047834509312 2209912399630059130901239603134464 5418394418822357777439049463627776 -298383027076056325518972313443237888 546332650022233380193010521735168 2437715142541549485061322945069056 -259134175915757572002016255795003392 2109610704826169368047813746753536 9119061950810916184820784276963328 -450399232287335996640067306370629632 2908210722707705984098867810926592 8166967502158113242838499560783872 -789873456495255475808768806772277248 3377568547351784168992236147572736 6156861232178800295014169290211328 -923059198628157356444277174716858368 2466527857142380626732846183088128 863860112923845723086500162174976 -106079985068629190026872719579021312 1550050862866210604807178510401536 3447716179584009132212592679321600 -694981036652332057082612738550661120 7887888937221461262688418642526208 1358259080195671759394074464878592 -279835771479591217930858528944160768 119984318074320280721875313623040 1313102398628636913632723259621376 -729517997942542636144668893494902784 800940010784334872315887922184192 9587103775969282376126175094243328 -617989283627946267045056915791937536 2276575107008649482023274658398208 1078628718181069934413777698029568 -660797828086668437776776509301719040 8300237990834281322702280140521472 3019610428316806579942035657064448 -826529486431391016895746326575185920 3239052641254838268011904224985088 1511610588889007542130039167385600 -745433636187678126485605163475140608 2767494850670898078505680691527680 7710791164407537914409057620328448 -402781787550424328246799654629408768 5088238974678158472185959342407680 1324066762198900428905008913711104 -843072677608483518911955733258960896 490681845604972641022181438914560 6606955863584031247392126946770944 -224562194046345978985971823333605376 4918889688117694755941996560384000 9897902645904030598123072297893888 -426466033774662212767481314750234624 7815467130992268528736859687223296 2895519002503051673034216710340608 -155974928379636524725290424760008704 9302023286611372836384245433761792 3824808000007785915751737094832128 -180199502104822330795121700430151680 1330801602859063202031382334275584 4197559019168329736740096983433216 -900368273404120215157312096051396608 4560451580796324060903179301158912 5483337626083447626017655589175296 -89428087561650399427545135918874624 8110466591644568996387556312481792 9310593512483546810721767924957184 -53314218149906418645857330758942720 1454763377161374271768657179705344 8158842034882966703462692167876608 -557441466130840786116651935602835456 9630596704777891367010441514450944 1626866480658908348508639626002432 -513064567424056034434420104595767296 5717387576716206745032379361918976 8762734755714748440910959432695808 -193170124323160946520714453150859264 3966487608057190074373526205235200 5487062007064170791844264795963392 -669493286718612735595857675877875712 4798096933276466369315403076730880 5830804893410603332029479527645184 -447794209548058501529689926079086592 1971142916853845604826065680728064 6273460142103361820640028104065024 -504355022102762989535112006197051392 8261901000554802827770052156063744 2105092551550819741602597161664512 -269087321490606820405006018673639424 8209482440239780182212421412192256 6369392615515241186247156304969728 -463856473533828361816144426072801280 522901961209970816592651208359936 2920959686980011529080558789328896 -472820791961778627585742448199991296 8351956459229387945191228099788800 9583104406715583086826009481183232 -336621869217369571835805349500157952 8926540013535567325061155035021312 2590115011455398838980687320580096 -268190737016719911181524342885318656 3588018514624015254093409032339456 3954795036342972272024577273495552 -293359795450658992545521001555820544 752578129807511017688144807985152 5023481253827308627743205798969344 -754993350674380627049181469692919808 385569739754362359002133994405888 9440901684180185696309498842447872 -406717744849888984990768905244901376 9767018280351870636039751526776832 9808431711929424554961095756873728 -958988463837709678232221937253220352 7717542539223556478510566113017856 697099766756254193377761879392256 -27616071758416943764820810465804288 4518268991670927145592715195973632 8160729750464102807029927473315840 -740429136615994430146395867883503616 9294891938960712808841747644809216 4945178888337809678130719588614144 -728367279076728262099722694750633984 1819739376488519974092863233327104 4434314990988737071160608264552448 -139106196352124892139703266304851968 8501235494271835375911315097780224 2625270339435455733191277509869568 -376558501570341271945355348401979392 4622645281510022393667787503435776 7206227382278216975789277480747008 -416469779480618634503209212857810944 8278078885963314594615417842434048 3740937517562418236770155273125888 -632148914315545587328712031250415616 1331504507011863635101473193328640 7858005368296410820359180548833280 -221161740382197937906028998501072896 9073030109409977184585765122736128 8196156014134027129878392126570496 -112661306881093055002803451996405760 6735775726462643554197394675466240 5219992505676870653795559414956032 -237912990764708362967345098546741248 1712885383168129667356281855279104 5179531555075541265314221758873600 -524859472726547165375396064568279040 4910658454996162418869582870609920 78057252613321472606464758513664 -272826133705345484562398200855527424 8895889818361912531515881849618432 1459679173371459118511914557112320 -865911852735249266810570440601239552 6966146410060704785205344816070656 1987395954317990671346987872288768 -811020309975934454627328505401049088 4804131428710772671101382676185088 1396596420478054122399385646006272 -236664883932880323981427541415034880 9687584916697890610866119744946176 562062347478134237781925575000064 -159164484582309762241260065711456256 4639202183389014433470049620590592 1393975710431516548545347904864256 -689808829918850701635474233604702208 8850628976563685935987487045320704 3588550896243967659393450283892736 -847874613370264891635341301179744256 8449349921938025916829249094811648 2411123310703772049088451178397696 -747950548194569427991545770019913728 3241552213266875748697780284030976 8735427594855046480894539237163008 -504838209555578653465732898069938176 9698274915222699836498875617640448 949349757659764863468917105885184 -920254019101650234761722691284107264 3096061618938220136719299452600320 7153234966012991400374672683958272 -783210854590863646907884380255944704 2737644181238923824323236785553408 1701085616364005509139465655812096 -394160580533047678159653851350695936 2630924745419478481324158654349312 2920941912473934912035663669886976 -393163186787707274143025545210757120 1676420937384620989891206484852736 1910962261925622759787460332355584 -110224207225241547161546281300525056 1698701949365154803458661370822656 6467193175581668902681704382070784 -306406599692988511408283225268682752 4931638911800768778940462508539904 115027356095332369912520274608128 -156676007415869245922347150634647552 6638147329880986705630808745443328 262477490058746431091664972939264 -468136447795688347758350417098964992 298778792290326744169402578501632 4995911732114913575499049753116672 -97110182895065456128943284826406912 8046530059306577581577105005608960 1108020325307081801892047416721408 -740382412139920575666339109142528000 2740480940731671815874076546695168 6752674976721991484250872730353664 -467953160288517431389285674714660864 98116840038174362095048793784320 8889632027982379363578594719694848 -957876101906174179196145093295734784 4273421709284935662127096168185856 1751084503206716698379203523903488 -170941276760568500482444011704942592 8279281639112160489025984373194752 2693932501262030607443291675820032 -374980847543395196085079386189987840 1013871333519272885032870058393600 7535204545225224868983237397970944 -49426203865425247337707546546798592 9620444428352746901629013529198592 4500437392765427830963102334058496 -375334909885150494803631243484200960 380940497019177578122566636142592 2035279193212845548747021187284992 -761264708146722923869383784644214784 6135117876281087009210626276851712 9519158872759226412298691988684800 -253902871894776419879612433727225856 97049427279192181292797068836864 1394760847976947570095070008836096 -881462439067341913996628031222841344 5078561146560943635488943208660992 4103843101107572170535532071223296 -191848312725530929405762435142385664 6100408872675893968839463734870016 4773575928583817756455585322106880 -847690412496445419468657061282185216 4846528831588771376966667815878656 8416252626312390639813682849120256 -573910360137657698245556639132286976 6565404575579436505227149466140672 2010015495483034034651703095066624 -800776087765751919875868192627752960 6240824849997855716767688355217408 3578810182727062492746038133129216 -708163225262282332094556360386019328 1230271246450739976534828425150464 7582736728868859613595203373367296 -496862587158585078763421316197384192 9203475104391205765395630532853760 1482018956808340516021813502803968 -460365051866120709133690438942720000 5163084181535160087938782889771008 59239387547815590450043522383872 -128078947928844015336962972958326784 895723393807067886885274338197504 8643423538520100194970005873360896 -585667512415569285419330628262821888 6266707869230998499474462897864704 5810775522227217940803676587163648 -248298407265379267581535551758532608 8509252575257434454413894234406912 9531726573627235811106004213432320 -669142291439771779505421958193872896 6402022167987549328418094100512768 5547426640932614520252174784528384 -114533023940612626845531559375667200 6218605424758969209053310252744704 6210439083410002878938396552593408 -618519007395542571733176338436063232 7539318038797476152603992628658176 582355546990888328890092076662784 -894586651398046280746953766097387520 5506336393979160019231643153727488 3841907187682064891062821394055168 -962846905248245119943942721870233600 9664561007524832304164724088504320 5880139350908783986970356241924096 -754742999500568983555208210446024704 2678764836747842190354579160301568 4131438490126625843186806623830016 -673858452951387311183784403177308160 1040778221843838222800040816017408 8478849674257293074179007803555840 -286620298271758871105196796351086592 3410364635790677029506462229987328 245641455283316406551532384813056 -148509108137695051129870602515513344 4327571976617368939255243003133952 1528709128760472084886323871088640 -245612239385191204663985617883889664 3577570878103729694155881840640000 5040102502477841962112347493367808 -894323065106300217276963130322190336 3983426871274939870210462714953728 7983410458742975174355962015252480 -622785202900322600126337160212119552 7137724748963088671670441466658816 5074733190187409908416256357171200 -167088329830740751362630197404762112 2260420763367117898711194451050496 8677974393706787790545228327288832 -773676691453366370687527698925879296 3565084804267092120265310433443840 8142435375910995473799946379984896 -941940612284010934599398430399791104 1186532533991049122712186324516864 3856601421612720362275365697093632 -740435953151478635523728250824032256 3526988554958893121341135588950016 949009628964888719086405701074944 -137915586875898244421715968665845760 5866702094753964042045969039097856 4984357199460218595637616969777152 -147198007929294643096567468269764608 4352591081895740848339051010326528 9594599745789354064209058908340224 -178279531033106745326329592065032192 9015708879208015332609152774045696 11769564377509043040223630458880 -102741068995003687788461723358330880 9151858587303251663708240786489344 2486483166116201375093440053772288 -178383530348070843988411217614995456 6210259620619021336780741560762368 2833198947599803575670245418860544 -836661108837945734993035311471132672 5901536565253799436321519434727424 1271577440048620363234753623621632 -421695858617991396938822263630725120 5966275920655364021914100274561024 5882420971507719674292050690310144 -850854451545071716642796286452432896 9076155440960153591790606959509504 7215057689405583482057460780367872 -734580507683694242206444033633419264 3210735336279095401786456806522880 3653725911927230135738379421089792 -721468597479287061349539472021127168 6635656665842766376769651361185792 9356547665873001378949990577078272 -107036541556558424302315362997764096 2057233193664410704748722589270016 8439386832899126513023956507688960 -646080376473502132494261709313146880 6473905071678873543482045657776128 6643326515429599250239879393574912 -117397615281971190552735662364164096 7759820827306195279637810499289088 350548946304159472628034997059584 -94757320427783445519279178282696704 1636225924287324761714793052635136 6014107978939180874123379933708288 -938206851666693260876116251578990592 4188539624404092288920356667785216 3584140429252357469444919410032640 -16507106345132249630658122599104512 5003348844543113912050208038977536 184143568228182776315046298386432 -141757970862615664074043928705236992 3600009297055404970920448949747712 3314859448926268651152264103198720 -841164456278700949463899910065618944 1990118320924184072278211318251520 8271487636706776101663291350188032 -896592137248050949182061391086878720 7160483294709056219066916617060352 1632704920838559442589912250974208 -933728443690357613883707625754853376 8138937184991498669104761086672896 8092957035314106274565913361514496 -380668352597576448064489001393848320 6761148911089512855801012212989952 1989231416308283739645010587418624 -9472746247839316442954469986009088 9337123536558050837520105519185920 5304610952569856926871049063104512 -910520604423808855178252545402339328 3900083198186743891970702062911488 2522532839209298777013035217190912 -171381980103945824552874300562997248 1515255923288180708041905219305472 4718709297638798184591877159780352 -360163596031399296217870527287525376 5909123354065117719118896861020160 684899974618109146087669089959936 -149404701949138665571803753858727936 8509526333941626233495643616182272 9281998061655648283111538070388736 -252165332923741913295630050822979584 318072585506076266385754212532224 3325826354557210463809725232316416 -774531830170518642137811352461246464 5909580457700571489597218931867648 808497068443192554210085985845248 -163640322054488595933322127985344512 3226009709189981895772452329357312 6465370339563447934728611930570752 -575892625295725875844060302224130048 9817221937029130227509932240928768 962320739915206122996689272832 -205479617921037566784342321692409856 2603129039750683080081009566285824 4485690039471900929980175436742656 -146648061982099862154759407260401664 8297964437012422091508512754499584 292024470155319128491300877238272 -569076628500539596385328067550117888 2528540644454685816705030373244928 8840678373754143521406417436147712 -416862594399291576080050113981972480 3884182829298038787622156709658624 2146909672653458154586003753402368 -520869235410131088236105851897643008 9309917944718280879438897478631424 9446761389581732878457711160721408 -560726992399035333165339814324600832 8740092834906455227997964055085056 9004693596041682327715580515188736 -522273467427996257324654060166447104 7936761460268771135961204917272576 8944981522411109695466161366368256 -257533481848276939863281960551972864 465125208568445625883120229154816 9210700069452148751061742308556800 -472385779700684209100855800995250176 6133605724843757252807698077974528 4228965805829771917302288013590528 -878637746311482466094395359169085440 9552102494674042799041820143648768 422380018529217070958713260474368 -188671266900632240524546265564839936 3905217433951351183101496362270720 7397885066357330169604195378790400 -588269381151694102177128116125696000 7626361686931584182115213720420352 6638837153808807925144431303327744 -771336594085852415594599876451631104 9808469279524109525548117834858496 2058221499929824052791696693395456 -161857593518841429390556995742859264 6324252716753388651422615236247552 1071784079010088745092467671433216 -554557238259014742053404498800410624 4673628191856171673442833078943744 6679570415536333380442726273646592 -551098372942225701759852745926377472 6034842403443373663147438095990784 112676740541925257980056847777792 -65153044942640649673279861539471360 2050709629942862383235437399375872 3996220060750150910264242981568512 -668643065113059695216396912962830336 4682430132505967285350769553833984 7897186187746970165326724099735552 -406555160596096414075421288881455104 9143591559572646525812678043107328 1356863211402135945013280429309952 -380823099293358339371242341284184064 5898029269914151110509802593189888 7066573455143599135206691643064320 -563291226806489013146850462867128320 6029138830930217518819791737978880 1876029151254378116795325042655232 -247935884905992596119406321051107328 7680031694201217030164314499055616 4918660325059239023372109925580800 -964532987583279401308801689169428480 1549939041116251135490992520560640 7278649366639268924939118212808704 -129928776316166172551569841393238016 9218475971923840640341211558707200 5573797494207605085209678044987392 -499106054740854916294475454296883200 2666559641165550391157861486952448 9512201443264470809529984453967872 -39466182559605731332148460727042048 2235485127174987511092007887962112 8760608443673730489439817805332480 -145320513152190149377761365358280704 6561096116598602417706924668616704 9671266955176862310133682399084544 -105312186948254689791933518452883456 1402794007261294404117425643585536 6404340760581347704441873222336512 -61927192111309931635451174517211136 4354332028419407642601283783753728 4661619073051413233453499156529152 -867811002017937878323896762998194176 2967266252586550299300222593925120 4374136472862882922237265264508928 -996080648978577722579843119837085696 365454159373519335375109397413888 5853227765250706366151098244268032 -70972492968818014848134879215878144 7111119789197961790825711873818624 3232920092091706845886759284244480 -803573598575488276037391561556754432 1606915684781915376445360726605824 8815187753672983565083255389552640 -488387923691488101475680331631689728 9194102192145765337016488786132992 5205471443798143426830198439411712 -219368396303037244712115648713457664 5248018842382047065543838984568832 8842464830324907905942009514295296 -442342545110170257986598675018678272 4663792629736000587879188594163712 4979746897855464198291897517604864 -502002765839992350892171660827295744 5788976377528876644184889474678784 3222399168541748494607380192952320 -770427726965980955880000795946516480 5264801917456000378593755755708416 2249292177160296654165344098713600 -811143691564568071284244311296704512 5902734142240939820931151130787840 6208990393053507352190440928444416 -686408558125848876725214653081190400 8632898912389936440467275733008384 9795321408995753951878664368947200 -366238926362325879333288947923025920 8519348643809785190667345046011904 8731748900449080351217255182237696 -441495243341156433105420121687457792 1175087578825546023378668530696192 6514909026551763613745961685221376 -867169486002683353331018280380399616 5299702837797216452475038013063168 8978880448296475539553923316580352 -24086707059637477761765071139110912 2992307995470732487411956950499328 6491908726610742095118038573514752 -427540928999022096822832423657013248 9409639569611198875685136627662848 438781799139391553862389664317440 -820015498797475088787216305416568832 1109397724245344164972866318630912 8286285545779616254146491680030720 -231939088794976352408922003282591744 4888282284402800962330445964378112 5774819286964329315683257217449984 -560713331727991254419815420974333952 1353226708198494893305121738850304 1806952952079929936464227663347712 -566763222810537832323333481610346496 2524005904820487672154064221634560 7029159537063089030050472922185728 -76532516394086235002417113699713024 8019147717159337812466952424128512 7451925265006739206151549159997440 -407514439404181614890924959206473728 7242136022894632329882065843519488 6554254024144912301159321482297344 -680731673220388119903332153608372224 1647276538496599921055546659045376 579911338602490659396404029423616 -25837802880913143140526867563413504 6828883403132980744903944029863936 8968789675729867330272129930231808 -661911130535315632264033478708822016 123057188825881612737437038018560 1284791864824341926655979864195072 -200203334576796986309567616364052480 9333967902830881984520098748039168 7121834801623042105050703629123584 -851629386553233280828880539162247168 9750869221934646250942880328712192 361672804497352201169197519077376 -640199161135136250788694786144468992 8169154182113433519752625487085568 934461164681781604924903691124736 -19587653035533602582977387276795904 7841571859474125682379877578178560 2899175067012233881599073520189440 -944941169502109420539454375493369856 7428799142063346029874476430131200 6842793188762575007883098840891392 -950042579656426250989770550271803392 3052417659833045018755417031835648 8736231033437118586359710111236096 -640055714397982401983208437437169664 876391672232290738487855192997888 6560664657799967927570364209561600 -202626673575877148796867446757654528 4177931044098678215074360600821760 2579109852037814672025334633725952 -751476697239638744642617468151398400 1560218870639613116623019839586304 3920628745314253631704450665021440 -153536185851509971876812997603098624 9665650176699543617633936931291136 135850450422765041124486819086336 -103951073309610408148444813650296832 3836402510284153392767526187827200 5126899154238346566334145926004736 -473034245822436533742560751986409472 5546717730026821001318031746400256 1953931193609945612852818264195072 -102625185596960930412005931941363712 9313948790482348631655819755126784 2902352621473137883754061774192640 -911620928161454815129833635970023424 6680010456881168564904924450652160 7400907629978907688413717271150592 -582718573469755591673852512679493632 4354164924480704806008165740052480 1010966013406279912073827805298688 -749295430962948915662164032346914816 7273660556624130981997209274286080 6981841112662717652503211146215424 -607206179882579526238285984459390976 2606173857242636257617083788951552 9305643881939098701625034146840576 -249655605655157474153819475852394496 4540016056253671270291287826235392 6227564181436697930583457518321664 -278543385384855428358435316525170688 5166417660072479607705860699062272 5154063176499115816800948511047680 -952042748146985693743839665478172672 9937379798680163080622100214448128 2816949916620600488986821546475520 -907141022389083473778584128204046336 5113629809486438248549872950050816 3375476301428192064873981332684800 -898348422987645091487508631329439744 6668081833820158776951579349090304 5704804566624515430096216937988096 -96812865408416286197263903955615744 9788815811725994697347614505959424 2625367215778489236269250321055744 -888190887784404720539201762737782784 2196090637625089258215178072227840 9475351082461953678586989537918976 -517937938174796604701376943057010688 1788150413104370995270031102705664 3122982531642275439529238468755456 -870098140508468760715136008733065216 159725954691659713543375654223872 9388664734219951500084995371827200 -806485167269714744059110079414140928 5268109582337864647754843693252608 6204519189674227264441261976715264 -338723921067508241827553074969837568 8036692381906916816092003404087296 911260756902996471986967814340608 -6162589667238459831813742817968128 6230317126496913307985124003938304 1027935647870276942301363410305024 -888245456718507821137430304337690624 9967716219158806323319555548512256 9839601245282992263319182026735616 -87802348203488685347274821340233728 466978454222054905885436674048000 5930708004333646517628008417722368 -968692135115425311298227541257486336 4282537983444619907321400882364416 3606452678251167056019331471114240 -826801956304002076993045121233584128 3217985978305187497778800479961088 1199299421669388008131511380344832 -330872837612696140444928125219897344 1300664283255226831278162969624576 7471606184359814507303721037201408 -765702425466567315920964989229203456 7396809368852057606756443201994752 8326450146189109723055584924663808 -747813762951697446216841424084664320 2160051808205227100790705872699392 3060522521898762503344698372915200 -183929900002313976181860260454072320 9462089647878142482617295534292992 8651983270721939910581727080218624 -769195111838764811647528347566604288 7953708886960559943036312194383872 7298756121929407359704341116092416 -224492977918766707485346718382292992 1159289349981304189396568600739840 8953115065620573150320422887096320 -707809838285486837300209740645662720 1791885921744387888255925848375296 2682577605169945696364918667739136 -712833893417027524673910279354974208 9804490584549095376666605117243392 8204146544673420904486189498630144 -774176760301338623557170974653677568 7434020113555972033570126254047232 1946564958184429388154673039409152 -185469829069951886807264201906585600 2501568891985255609196517680742400 5998522781704688922157641327706112 -641518626125324255961540098693005312 1269198978443379820888248129945600 7335293025755501310000843123064832 -410684824809866011387437150703190016 5856821120887855384798515670548480 4404056083598121466220061032185856 -882580488711280444992697082979549184 9017282479248475323684509490085888 3028486002946766709889820247719936 -823799916164973305335656132623990784 3551033373694729880842522916290560 6446901939396039157549276917137408 -79422082935286064504223261836443648 9568061420102293666761526128672768 1674862184449925505312631767957504 -364067540153895425858912045689208832 228236169694859494963978258350080 9907979166964695429871516482797568 -151109273730991084552040463823011840 1404179752306081957020752410574848 5761942361283081053541452977537024 -378419086742341349481766558558584832 8428150207353248093150993356685312 7806605998209761862864063210455040 -323180520388530437629977806134837248 8566412120226903522652833691205632 6480691832793238842306060821200896 -887623245681128130495689196262391808 9166854332325385551575520219496448 9662592130082657385452416966590464 -701494563157976627955585026598371328 5162685476382060374465502309777408 4774275449479200637595589852266496 -586024993912628932656508381366845440 3661205554799220342580407879860224 1095546542701677634719588330504192 -310806403122100066376100744567717888 1580615841991513219132987428306944 4478299698963899178887446341353472 -258334617960404157466124711519846400 7168254865268191400392063501467648 7871118431259974547464286275371008 -815817738854507949135709887373770752 8066506311127093848875534565507072 8589481809619265820474197403500544 -264992461324538339929084911402614784 2807830064205376406393012529135616 7004899589908475980550283508842496 -611932922742549986971758184819064832 6830220960983888056803927034691584 6796074225155886867051076888035328 -866949446403274867919101990063308800 6300274137598744102804960011354112 5508877257688963719387559902576640 -452687745128110601607858255845916672 5726932172014024324632379352154112 1706392772478799212646543568928768 -405908951831153022337477506670526464 1943960252710770132339001284100096 7336298747366848965277735146487808 -547417751548356881883172037157978112 4652245430120046458074987174559744 5885911901510147891162484567965696 -48370601969037632834056526942437376 693148598510285209285860790370304 2926387212054238909904119782178816 -604734589936246867423056040575369216 4137592855617505807284199451787264 2758535186779585293482454253830144 -464968696839530511482632254944968704 669036246191827143113458099159040 503080494469220896398030292385792 -860167671681474385949465974314893312 4785440370639508349348935215611904 318142790130654716057481428074496 -396880405232611250929031126905257984 3836950138163354758392960149094400 6196511280729828032320588608438272 -645675892783506479750795876617945088 5929023293310471851521337431425024 438262675876277361144316376907776 -855819670545929505146899642085015552 3355828141825474670213758688690176 395775121728525523818044408725504 -713955392881289571030854668176588800 9900958494358316965320821416394752 5209074209364383771295124434190336 -427393073519188087129529310838259712 6280694738115020217832472775229440 9791982909301507910840931581952000 -926921896805114267122606746739146752 1436539300877395009312025609240576 7120472014955065054521338982563840 -529025486634573114040915510939353088 2620787326861537021730098753044480 3165332471907492221645486148288512 -807451926328341749088223522329722880 3327609590584365236934395308277760 7756621973890866166569848639848448 -283744706928954765698299343998550016 8443764907009546599515885997654016 3695336972246302615618394582417408 -163859800379638346970687939893264384 5879713409117521874121800569323520 8614782531546936785627480787517440 -82577654456390014141649730697953280 9974112326479097378349475895967744 2390153226297244793912356149133312 -810383025887033555663702177399963648 3129155396220331779077713476714496 9403841472474176862662301717626880 -135517250836994535954627250530287616 8637732257238176736784531457048576 213487043415720712447554488369152 -646338886022823061605600383708692480 1962616641355759678707749271633920 5426425121981548928744006485016576 -736620292742619945326571538549309440 8991458079519307801387839248138240 8773292129385622112866043187691520 -772037524980901918357005939830161408 8854427032966125541850963563773952 9988471482103706582946835045810176 -820402308571709153077111437647675392 6502430270335813597620871129726976 9546727708279664945523107009921024 -576067236863637423349749997725810688 8220395191917191100250496262209536 7857638306868111735519302838648832 -754477505649591915453421637441945600 8106541447314241714011011792502784 3617532897684036472310785233649664 -600865469341764526913901192688959488 5060550365798109408221127101120512 5264709937945228983884095783174144 -91447275948007990201055443884703744 5535488942527368017487919923068928 7084250617368037714692737924595712 -685326444738155064623004781826277376 6320140297765145605967148690178048 3511088047931671810503070424498176 -112093796968826607872635316352319488 7273857744770610284826488781930496 7973608215188043689408835579019264 -605694123771261599406566743182671872 3063216348552140011257805341196288 1358648937286975135471006879055872 -754521744427194329145430878833344512 6596931952221939042888033268400128 6133488140489507857082781548937216 -962245969473596401552651449144442880 5040350634795680470979925059305472 167962784651261534842298386350080 -30243087600566674452160259028942848 2575437242611338461425132818661376 6077106556635710024031937832681472 -759666152274947476036906678237528064 1282753320049590155338798541570048 3757361512049626594670720686489600 -830713590308521230775547986549145600 733478866061921563625292654706688 5289185558519644765155964605169664 -727532062742251836824440877883588608 533016036051467023901088850903040 8687249513238374228228057149210624 -844633832403392721902281034272079872 276757172320617630800111932014592 2249188085998361854721555798425600 -547229505529473416924435700045053952 3838745292447747826031271142752256 2262070473431576184493782591340544 -24055416632952934688277602404139008 6729869261506537208125159787986944 4653673059410009506267076600266752 -575642692470068691581437901411450880 4635132432983076888334220755206144 7956185121360978832087343207284736 -317084526374722680863545646066434048 6870693639500945653257266696028160 6045242514386445496453974944907264 -428643067354867068272813601638580224 4794060176008152543757763606478848 1845304243015931818224580059725824 -610718398964441688438926120610430976 3249558924906806710759157185642496 6295341876302063297713584377692160 -383992049163437091424258357928656896 5256572270030982842579415461789696 973304356056589595631023281930240 -57799082433990280916662322689212416 3633982209976251342496229192892416 9701835087380717354869473950040064 -127892720494949181048519739561738240 7506850791732770486629667369385984 5848806267296763563001644777996288 -625197895065414690770066979875192832 8243493447285873108942015866863616 3862816242557624171114707160137728 -966097274606216717204811179093917696 9090667937158942906471090262900736 8420765317835773622167724577783808 -923285660950027683354668508385378304 2888365485469323058846034733039616 157577975222845728123473878843392 -845795093817196606473872217714196480 9666884698053840797928288742801408 1281374680761103939769269999370240 -298880306738235943914968357470732288 8724868778282791313215075538436096 166435921194270292221907469074432 -841001678953472559415216495860383744 5484870803250582221729604751589376 6421871654255378200102183511261184 -450232508422766857200548802304409600 8052395025357141380832386424504320 9026660455696597999878907463991296 -912166984614659418349122134109847552 6175548334363918477041178513506304 3552454099779554567198443227316224 -692622571133656528610023270296584192 7751002964966630958293069464600576 1855956555726217960730778738360320 -114624287761343204583546682276315136 2312896214694474904046566440435712 4385251780794189085230261602353152 -907240586741295951236646038866493440 1495458980702078789962869541699584 8493328104338656541506604294471680 -76942892822759281807812272588849152 455653587082338854348950213754880 869199843104101030738736292298752 -224549589363118688448498254175272960 3439814418773214487272614755565568 4058156665916788137370101164802048 -508271400687242730673265024123797504 2631784485518888388584188088942592 8508434877460392037039122751160320 -50063392413546383304762607269838848 1642954762851107224365645659373568 6260421902715403947257815552229376 -589735978871431745632210730113564672 9758123577302384555292170349707264 6263417819193815336444568885264384 -793214389468929727244929410910912512 7938876830335394400808425463218176 9601313130886111527417982178295808 -628541363882892037664875721487548416 2929633414519122880187858440683520 8325959288049993039754022415761408 -218557589449195939478744087459266560 4469489981627910164496295491796992 5992622222148002060832940459294720 -375068763519405578403172424039268352 333549456363038869746858648928256 6660022716637015914853163918688256 -488733044331960201912298257231380480 5682912355621747088023637853208576 2563689084647654470837064291057664 -317301008337670064672242173982277632 7175463032105898494599238476890112 6539657521567881092926462364745728 -618525076485351122153593278283382784 9274537078980438875922550216458240 665067601239691385882437910265856 -655330169865395894808715679869435904 6985946203268837523206372272898048 3224040586150889716169795606413312 -788427869656228850818840493243236352 287821519214299211640664800362496 5864363791954667497542376688189440 -193540260343843570020174397079289856 3585493881165328174225094720094208 7367220165268841523269756199632896 -79400219568352341705509531115585536 9438389897715199702411333699895296 5285860803719457169882892822642688 -719872331779475305277086794061447168 7388602400474404577610057667051520 2940744890888946163436254073454592 -619985478749221451520039551187812352 3203674058166907813246214378356736 7265078704189804994877588303249408 -578862891029606072143852223202328576 3913361232943254534942194850070528 8367250812517979008503645602840576 -668455681705620529410308802779021312 2579522168603068823701535468814336 7646790616830447098202486260891648 -332621095948046803094584544574046208 1332162951126279811499711247941632 2290439803267508471829981500014592 -349687062005981685933254899360858112 7362498025047862856954457649840128 2905807815174313768446648874172416 -687571854379750731582102349715341312 1485879812674948701859037631741952 184278331488688957158117831868416 -844643245663105754298485142825467904 6948187945853145684319070333173760 103382798099749161390699110727680 -186725719174447508298826102719119360 2114203595741602521778522796589056 7369564100242937857377682231132160 -413953922691412367931080814595407872 2396434489374501771520425762750464 9487794430856677655565392039378944 -348667876814163585544596412191211520 161894309035050216945756397371392 6414531266217842790091548249817088 -699172873191602488255987799468015616 908838199076127766974434612609024 6547263687448052999406816048709632 -20729975524149966807260021477343232 5567390532452637404090287131721728 6289652988180865160515436450676736 -430464574687503596244487760420798464 2911391192203283828189067170807808 2575363203372864342115371576197120 -289128550289564119076741545902211072 6809781267242485057604996762173440 8961719018368707603228335078899712 -106497059031942103166381278848090112 1481915708447343875754123530862592 8724483784291220446199669747351552 -867066346378896798829142806143959040 238854859935170829333798338953216 6598390330388757501294100709638144 -144846652773398066783597375111823360 8451244909041679980860020111704064 178460395164892235882942529798144 -584699682654279603775407962370080768 8891946924100796619129196753453056 1546134543626588559810782025482240 -40534513820339615414355341902610432 3847750569187945039188274551193600 770256840943522081089638985891840 -295756112904573904321619952589078528 556920436380907937917969478189056 8965127248359961290946578418237440 -192006904594922169607237536086753280 6835479265235720269486835420364800 7284321435014355325018661776785408 -100486218798555566089253523548012544 9707393295504635608107119596797952 7355520337294167043793458762350592 -886664467876747833492608265704439808 7730288164732411705468414607753216 4127122131739130827299579725086720 -220810620727174068565709373837410304 786438874027905472673802465837056 7903426845318417442484494048165888 -535499702049048800693157944656658432 5203091364212072729669049371328512 8873868247542785192852420342841344 -187486760869632113483811219906232320 9028488421934343430522039095525376 4654280278419418405955684091822080 -103688987268971175721987181367001088 4407160610440122307971476963196928 735156947104576121887114106241024 -276205075340401043973256984387387392 6407000475019128038317891327623168 4994419125116860464529802717560832 -631652635585708017444042704970317824 3846169229402220783581121535279104 280123577978715160477285344083968 -838263047214795557255734771744505856 4866477013283413789412291292168192 5484466954064105099057602712567808 -896076688796292205157733008591028224 5583409977747560903172684112723968 3508460120013820222447377910333440 -681549692717547924437485372364029952 7359856995382154192069996209766400 7132708682391111100094401195540480 -55333417736553824520577039917383680 9133477005746968901852313509953536 1422029481825388921822279066714112 -226478916184001042550452695198597120 634858494367174194004881066426368 1958478560664429670953366488875008 -14346879624296905419068533142192128 1312234037593880766817600857440256 6940520954597365953461067060346880 -462680905529295664272976174634762240 6686031015475708294444545113849856 6040700033402786200352658080923648 -631484246158931250032567803294253056 8622160120309985904425276457091072 6878592356295788403280031554469888 -867803180715036409203097380033921024 7518945748209204611502057013116928 1527456182044869119543804998713344 -635641714168572177819858004397260800 2840607090241586683903729584832512 5936633233892522576379026719375360 -123456378135220615485770899019268096 4502176805795573704219380812873728 4739414652607199625273682820071424 -374398435105787243959412319840108544 3421521692881056063825669154406400 1719058579278626458923635629359104 -60030850259399172299227098117046272 6658726625407334498976871521189888 1810340134818502074522654021255168 -102021463396527218133129685100396544 6891606524333788620192189540990976 8633775163674110750455863957258240 -839900664670825049017248856663916544 9368789621585769934647486448664576 589037794818743634713478288113664 -883658610324444901166106583150624768 4072440529743046913558563461791744 2544899010378575520285918538760192 -190055940903568820725309266427117568 1415169797498107069777425175937024 1207641939248878145395664007200768 -802446376593792477765391768755372032 1047128283429230364215223039033344 3257532182895396889393344725123072 -418637539662271123223682755124527104 3198605589104135094694240986333184 786923817610365958872193862467584 -136464313559795829926575501345816576 3597732445911653108307381310193664 9299733441178167257186247871823872 -859142489625239924203678869397438464 1048567120209184750908260525015040 9238359989479427792689104479584256 -805213339817313180218149024661766144 809257030978747774735237630656512 1298280895585822121103366046089216 -25106746727554072950400243271204864 7857457781858766564877536514277376 2972610027640889817370086548176896 -862477396594159230039184355205578752 7520177223943348974635375222849536 3731223837976524808500468074414080 -332533337308050615380657527026876416 7925586636381340689591097370869760 7989568855294087987629369222758400 -137317222520214744230237245022404608 2651420277112087771250851326197760 3451473363360845354615000065376256 -827673736874359343043246320389193728 1890811967624537078352146075746304 1363555417212520511283793171054592 -597458317372844940012582646405136384 403953929388169452170503708999680 7116968973301476891681290597695488 -202852162260544978667047102013505536 1513862839099827734100796975874048 2325566554509807444110205863854080 -210896397645550136222090578544820224 1038528645727387819608240105193472 8631975209254417553098731526553600 -618107185001105698753477740299550720 6908356675339376605139052974309376 2318980788528113458521554852773888 -552925544671877484844051356524216320 193257730160788942531025591861248 6082798703689662741409710708097024 -789568874839952202485467503516450816 4178857861923606005236065252671488 4869606957679794110551659544313856 -804480628066708990138891091960659968 407951393622567530271211964596224 1943906098757237796567734246440960 -949204616001466256194648675845144576 4459304466468224718646328510382080 9698875475175675263188892544663552 -392542077903724067288847861004894208 5690382283055710776033199150596096 2569077095666339424421484376883200 -219774293448578007506389954285535232 1910904408444297450398305377845248 8838536503840112522158732117803008 -900730547331660248163124981757116416 2977883776202509740678534874005504 904699401512724646959740025307136 -868756097986022059321951952310370304 7824961638733512819836571495694336 6319306463361535252657674584588288 -668944124562387485626368085479915520 3839822617091091147159382035267584 196451212416287558168858220036096 -566133813234813482215520675645358080 7565806751255533848369671775977472 5330736590165881441296997186273280 -515949939154328291471729436863234048 5188566527631469566630114308915200 1916774822432975811927207829307392 -575354860628784226450512243415056384 6932420578000772369764369194549248 8235431206256083190542922139303936 -43124421947722709349425939610599424 6842072783328318517602441656008704 2649400951348999502517595954741248 -378554484605063675532680592604790784 5737430299900979537596208346300416 1948075794097451897267641200410624 -488991265878937210084152757779955712 8268093208469188379841487936946176 6888972407030459352955176584478720 -620063311925509952487734577205346304 3023150030602123259233705475964928 8560303783604659257783854714322944 -297486660513673447301064542476304384 2837095119091302641275533445300224 1092236286608551023653283583492096 -779804027579453850193269253382078464 6214808983284943725519312280092672 4931265475302092686153523746832384 -339244012123624271713322431772884992 7085022386045818552863673938870272 2318671519220905920128938233823232 -470808215999439082072908579507011584 7708140777015734686062968230117376 4339198898245390800472966365708288 -989198236586570968449292566519611392 7892018760794202133699850085072896 4486098024124599238393182361223168 -697866667549545324613766563187654656 24547846834936935155671595220992 9193533966766161850980780180766720 -622327025612638331499666507051302912 4362390241441379159042459325956096 300901988193723925197770975084544 -417753455745872647922939799197974528 5411571499282163439670872074354688 6835776709930238774179463239303168 -836351389094595848315899988664123392 8354125472137033812382793303326720 2077252223129833872550687852724224 -898308507842100464207556981655863296 3299721348194119398483094879076352 132110290547403805063787101290496 -741103421068720274628857681112203264 3495801282435977011645751737974784 8079863111531508150472694913040384 -405701313573637420620617457753653248 8288094761228443189237265266114560 818463708109928064125339455979520 -989993934958405262203448539089993728 9143092364484242950311313596743680 1532595856590352531210326327164928 -627783566211624869358078354480168960 9460693699253910930392283963457536 7301443447583541948063472053911552 -550166611772867385974408471312859136 6484118259415145853835514728153088 227822609726968592819243404230656 -856900588549841573971183647829524480 5147431481398163134312223548112896 9371618051838257968374775680073728 -243716767509939602603895919262826496 4323225870211151261000017075240960 4359789210920221719275783275413504 -363018054427704434584540440577441792 5889325410620882476733129893609472 1653274272196231426400689040916480 -256015413997437427500367000197136384 2293805958672076289487447116480512 9907156658270914959948089781125120 -368296565683478878264923751777828864 8503160728297073558467035753611264 3771947329010616570617585194762240 -145981871799254091474698324875935744 1672191999312903165648517115936768 2280294927346162902197852702769152 -781694860685423234050105670295879680 8520920355697209058427013664079872 9020423357910226279375308933038080 -410003964583352169519678734982971392 8789557739014647071509341370580992 1073224478515467409288130725937152 -218135805101081073473111985167007744 5021197758889186304849991711064064 7803496051057350046013381591171072 -22443415851502105356253220990615552 6141353449731175385755036061532160 4417248501704583968781836245532672 -14148786047372571246036790382952448 6579739756551051184925450059120640 6256753969099562877013340731736064 -510237583116229166712852243850199040 639484987833904926613112474304512 1975773126714633750417607923597312 -596634178175349182952453397645623296 895343241392351089198342242041856 5139317101944954422426108455550976 -764668498005688752367136035819225088 4555765207556713455315169853833216 1021865732405092865334210165997568 -723876432193461629125549405694328832 2565587456612928738423999083577344 5897855270479335117074509932265472 -534593671805230216736953488782655488 1833744968533757177289628115271680 7549983614521212634562344295333888 -50677968929313915244883099865055232 5777404475626415513239603153731584 7364281059972066161943141211439104 -636176140650820004909820405511880704 6573731295793824795915036961800192 4968697523996411594403160868782080 -34941604641695558247896050489622528 4931150595722329816563323171241984 3013491026999699526104595568787456 -809937939571435445406216844702908416 5087404378908507196249177283624960 8777133529800889850464330754031616 -897174146212610145865790616781193216 4320209733862942900807418425376768 952207111600503698746072985763840 -86346865041093492810219154441240576 5343559737920004188901528544739328 6995646489411788745837252714692608 -320321210366258952726528225645166592 510284608723818719308771022077952 2890059236500003341752256423788544 -256183672308271792665272159119081472 6581252503588203223213315662544896 9915315858526849719408974656176128 -592012378212397978290144614652313600 1452190421422702885782566274596864 1894991547221409344693106175377408 -930475340362327494506712893239590912 6921643198997540411004788272005120 6097576610861921902446069191540736 -170070551568155863387780755310510080 2883490738412500464979060031750144 4714668529228928162656327246544896 -707230525725947986658922073572769792 8562360262546882148253315819896832 6724721701368247255752199395868672 -648571985258098731593554447837429760 9598857721112548891843747131686912 4101705824121064397199003107721216 -372279115572943492222558434404335616 7484410581325017606434389743370240 2468942844042618155174049827782656 -556827495819584635366627241036349440 9433526499339298091946606533279744 6734226291416689327484240035577856 -770140371128073625561022183677886464 4509040647111952587664907151867904 9105889160026843395058765473513472 -751176180659324775424923619865657344 7448814019196283500512419852058624 4068403262810434861935644207218688 -518802607772502408851308485204246528 3594680834277160086815274478600192 4028072708220326010059517801267200 -127571530876663560222291428106043392 8002395113081007727329658116505600 1877954001544183408431928589680640 -444770136735660447008157980149415936 4692347826665194205356022516678656 232082388715890886421682749177856 -127006606183400091500389360440705024 9410742133833049281811710639865856 6405902020239993270698025875931136 -787733723701253113082529315999973376 7343642336029315604518931563282432 6642356169355160983316412562931712 -272948635817552952711012088434130944 2614918741113877427853027711123456 3198078472789814675963185566056448 -264886001151171086138170170320879616 8579664431920096610917654047227904 6177992779191992443671530830823424 -801951530639552948631644507161493504 4925667811430451033170158710423552 2103713639037713254429115977564160 -430638442805074261153639882165321728 8025332040929130060575848647360512 6616429735435731331616622682046464 -722503238335359204762264260011098112 7266370946991736137282501522489344 2354155779167285975396489776594944 -14482307847102364802835752001994752 5436454307806508967481594632732672 3791077815960632165828037988843520 -80346642196419902538276625834835968 4438425236389672850353076935065600 3346291931023324222786019916775424 -645123388142316813745503350407823360 5296048771951885868844795285209088 5378431613300719207318322057052160 -971367488090517030878418476084494336 9309232156507303843337939906985984 1115407181204091391131855492218880 -238820590885278086486731020291801088 3167203723850244738917374248353792 1358867280144536177669804702826496 -430194641123891231466842983592099840 3057289539401573434198887604682752 3906365517377540215312709048074240 -250667498452790683064241093171216384 3192328326406995237712743427473408 9310661732258124636412524313444352 -81881919304610178471927385209962496 3699090166404461369606320605364224 5679639099151185599912268517081088 -925175485148568766864058234217431040 2139852031104630872090567904329728 6125374439519232765065422197227520 -994002376029690594480419283792822272 6795711174869139943363843496869888 6547014689358185807807692327092224 -431710991726927991532211841812922368 6168848422540797804393774928887808 4433539634898176512700393185083392 -176578332401238204372050438520832000 3926073716414531336541748053671936 252891027382018119827498412802048 -648874319986751106169949257031745536 5522401089910408595345358345732096 2587588192043762477241583146106880 -917560591497755406043715851312431104 377162299722188324503217915297792 5722022922901344500755263200952320 -931406853709711035940448524929335296 6691334416807301849985024421527552 5963728909001637446877643796381696 -890522169511757976924717876942733312 8226475151300426547929394632982528 6773064134602756155365376596639744 -802976392953356489695202940351938560 4997936516577555482257264545366016 2257090124690388970193265425907712 -596769462092046519229873757173579776 7252420264161248197964513822113792 174464998663604174191984413507584 -504863820710142145403562528662880256 7827537136532864520820470937812992 779480211891950790064815560720384 -718459308496322492214216873176203264 2065933471649725053907794791497728 2327095184847584375987677687709696 -252106691244498930553560900023877632 6413095075904555469694240972341248 8142526294651614459156761464012800 -217978793378339486756923585171816448 2624790589036954106638263541301248 5637731983387776200027390666080256 -574199209936524917395425492360757248 2314921002209530681562125123452928 6995655899340878918733256676343808 -158353177799831349202472673896038400 9829450786337428642759751669645312 8055214928318834741661244019703808 -241790870419196190568929049842810880 6724679467120166451238472781922304 7320195350949089594070168433065984 -462377518487642417846850268398878720 6693097727712159228131983205859328 7475334874282002704607700175552512 -19549202870869807042667945262055424 6598160003257114220324622105051136 219135058911315394127039245058048 -93206993728136020801556850396889088 8585718800273707580550730443915264 5776582253971108261428811372953600 -110066491462396729416774254495531008 7820182295886437147444261477679104 338431785107930563014996688633856 -354458501097010702212249148035432448 3093393082462144977455963382480896 1442990206901620979523301761089536 -903889475587379335880592637034496000 6466104971928361544890120683913216 2400011355349766556554594237808640 -544290865914881759901666151193640960 4392497242001961454881258317283328 2601468819149629482914117006131200 -281681358585469658540318066925895680 6142591886978279732291330268725248 3110948896391894418591095919214592 -392305688128270387681329778645794816 5104554902198606932276185067945984 7337206768304689239045888916062208 -889611980032173998585413237936750592 4063490879089670635388768280903680 7540884227572698748639464071888896 -951796726895378981788751571286228992 4452517372217219486711494802931712 4075264838343167860975034693582848 -28575738089377801442525997644644352 8326588694912932500990637767655424 3913719478438086535909442376957952 -433946919253297978615975086131249152 9987230723817550330577198904246272 4450339961000058152525004529467392 -864077950350866557548809844726693888 605164642411346142073359381299200 3929685991659234821005751785357312 -965257966511483669392296044191023104 7740099523468935516665667890708480 9808095850734459214215925874032640 -664775357508926864897044657597317120 1723391430380420443872583825227776 4194368768217879700178133688778752 -230843796259631098906188184090050560 7920142712237363600519467198578688 3908212013382578326417117487824896 -192933276484379187168099566952120320 7733447019003189593418591077662720 2551392233533992191842858882301952 -665207238456801224887575700941307904 133222246227880391571408341172224 7808127605674347354239674387267584 -873359028489170301337550287431270400 2910487819448375684063037354934272 1897121225653582642514326389260288 -81043957799785489766286186696933376 367488496560380252792191251906560 4988288817162085210393782175924224 -553622757224572112921425382698123264 4108431316212370472140890278199296 9521502717141186203428805186420736 -89737818040094695035696753512808448 5911568962465132662344768643137536 3994449071460263606988134064062464 -611726793786295577736207274996662272 260202827920356027753271195074560 8888518782801097330020419794632704 -613822477504251582958686330622574592 3162536274874799933382601713123328 2593105527542077058787783508754432 -19824985927846883549588556156502016 6013742782692828541965247101009920 9555720804299441515392350640144384 -324284126180327573500949096489287680 2652670761597709041743540713947136 3712375141151053268017360310108160 -276002550940736261244922761406578688 2700185557523111048683311052357632 7885586432083651389765319235993600 -93545787796798570923665355544985600 5935341497702477518664306303959040 6716858310959734461248836823154688 -362909975307321998099409785610829824 4146132392524841727071600615882752 9801776527264484704300075961024512 -468043568558081925846188032679477248 5897105795509286701990847941967872 7902017332828410250877140744536064 -362579740327210051364727089486888960 7118772275641856254726774150135808 1312771745879694886403255679582208 -625899038512212648068112609640972288 7101765128838583013527995990147072 3237667789609783849705607413104640 -471185565738507927093180795304542208 4891954405687854792525035557879808 9095314432526255134929321782673408 -798807456753719690784619172689084416 4083956489288311687828839967227904 6768527483844430211021769912877056 -560036765688260571987819803092975616 6539186823386537683898613146583040 6469799204288661763702835279560704 -114355284894556383651579131965997056 4529935303029827309377613478232064 3305393881739535349569793623588864 -6974045200772234416863614064394240 1960990577464269336562684812853248 2047118592292351111433641864986624 -404136100908693670340983091128958976 4460759699265516816327536271163392 7125223798788782081864912179560448 -686325265739078597153312111673212928 2853984336194035682295219396542464 5907115111467355943638683183218688 -162049647595908743081581966448918528 4821090253234063623795017305292800 9795424769471763557244587040833536 -978371806355182536847636834683977728 502630366160577822045951322226688 8912746284871527548933393329684480 -522669597071298537392153272250269696 5610270605420426371444961773092864 6172853225918761015301888509214720 -230372188022568987477590246393118720 7554615514484501900164317377986560 7668291873186819067084919453777920 -653760365046362998792867021387202560 9063543536412116849413882223001600 6176278513544021378338852832280576 -138977083966034841617218241898217472 3262511421715851108585489488150528 6703124724531755249550309145444352 -567956668697621940406150260620001280 6332860275384766528904387075506176 3155117371442890612794803705872384 -518798120514283504069186184361803776 5459636544978143153308478598021120 2636347369004830690160499291586560 -47340521366708336540980977803984896 4711805994469869312807448256446464 1401211546793398942341690292174848 -154735493956928663656631851821301760 9866566347853225421954365096198144 5351433282757382414583681469382656 -869559118037056351295890148969938944 1808511087891926428807068957802496 310067723630041142614974927994880 -797296007151849289332856428139905024 9793756374635231873088185325060096 9619252822781875134170726446137344 -588159096969969905685874436076470272 992010680305781692234788526620672 4771086230067000230350552475631616 -117688096142951581813194894832828416 5224189554270883767705703737720832 5609814582473801663117588527316992 -122570769737519348755490082599731200 6221825264066746397069571382050816 823444408302232527358027399954432 -545561166896104571214289408939261952 1781142935890398003670628624760832 4610377384764724915390634157670400 -970873053584413173105515682024390656 5981818871432125450944259737780224 4428754847165397842948796811575296 -810182287590683877564139092217692160 9158027294892209818934538739384320 9873573323111925680712858438991872 -181142400681715145357846281793306624 2343385099213831363035389839278080 9510496945257516107856626594086912 -210398730765430899084975292532391936 8465595178215350185135337363210240 4934156826291002147842568050704384 -861370700744578904481663606281207808 5378652232703362903831584907984896 8371276858146748360384003352559616 -398825129452652739434966505186394112 7409113847751956564841124027432960 8117497200710599218401047474077696 -262789309600854281427346153466232832 5253461917620261136228444564094976 3525047247291518229271912889974784 -911876805556060818917065036641861632 1076046771585472076231782843809792 346043326804547579782658936274944 -550476309741093149926505859631808512 2208768929050072571472672574144512 3856585822298154239580298203365376 -89497263508860413659930267689680896 8747569125201142746768220054618112 5816267636617489429866370564096000 -940310880076252068583320835531472896 3654688077661363727079153921425408 4535892924021681099532462112899072 -330444311409560819085057778956369920 9396114355848600502337329069817856 1705361667045600236136604681371648 -256705339371026144284443346460475392 2129844801350136215828191839780864 389196182173686231538837919629312 -890547560299746172045072965197365248 2866621572360930730544000351076352 2601569273748202823391594120478720 -814314017469830538066819969737293824 6149050413079718041290215794933760 6986623593170293904165634043805696 -861508299368372175445554502777700352 7056067257427152442436087088939008 5836989266330976165893903264776192 -679390709840886168183012058367787008 989197135548199098547718116605952 8193613696761398823021490921799680 -872623729064491590336964543591219200 5062027778739904556613339011088384 7835907527791890828996291030155264 -935258237518130021550032852860534784 1725135800154846934082536437972992 4748753068901610565157370898415616 -569922901881812264155827276739510272 9032127737370871486304991225839616 1137600734479706070705019495120896 -151793891260484813655021421905051648 1463213577972191271808844309725184 9677428105653041658836580770512896 -357938167197834088756050336365412352 7538769205904780159003763096420352 8829872134027094005130803506315264 -931351220202832256430190387924041728 8019738242351499157261613621313536 7097959021077113902760067583705088 -124277831662790324754010441686974464 334277986882194302413378234089472 8844950583717017791612190208294912 -760250810564138789156890361376800768 9519514517885559070774709461188608 3201876739452443903470166450634752 -954925584033455076683429744786538496 9283727070003397247758264472436736 4952298836552770096575383309647872 -743347608641266732304450930748686336 3163846278368957052166736986505216 6014087766778411990415290631454720 -932674060493139436495101895951515648 4186312827084381233197029477318656 8565861930368344901001111104651264 -64722916817731146274715258228572160 9984736051690185946713218057502720 2319432100327372793172970503667712 -64303702813513656345028611538944000 9314616619950563823381169559306240 9136596023587003216973492765327360 -679173541472948528786325704814886912 9186674753714035562075512341790720 8023251498345975295091079777353728 -499166458903089516126473020386574336 538329897320863293305544203304960 2949000081797208513984709364023296 -232739859159352363304308480229244928 7704397138634208092915312780902400 9445200733231933069698233498861568 -802326757058022128667631814805815296 7409452711521318419741973959147520 9481306862847151008937857052049408 -691110760999113826848767146828234752 4042944731705724973690422453862400 168159492365344923267855833628672 -449070584834168880341157461031387136 5564164344097988755361261275840512 8816595270551549543748824681414656 -363432733323183156755515548450684928 4255856645087489829627403954028544 5621250457794442813636398150582272 -226411397984171555753771953152851968 6689147505068914376385469656072192 7157004870854663950061818867613696 -277779524448731033536113818137001984 7062171361886217001679083599298560 3671352435489244702201086237212672 -370531204275163117258804989016408064 8724811462093467240604803409117184 9180093382609331240244641185923072 -317052306936152364736460004354162688 3798625678607201351282327442948096 4963872331860772386494242130755584 -315511229099925377471799565630832640 3091157176065668184075692519981056 3545575626274210403754032951721984 -832566901796517225174811184652615680 8605807604530108799473587773767680 5941437943695187076193999707439104 -207791442084385654153834267085373440 322866910545021555224392610349056 2192723476705775917323202104131584 -26205858056177265910103719354040320 2762626025879760633730761572220928 5428546896350450828652702446125056 -666782058527961659597245030586122240 9144564633392661265965556351107072 1926612340171243660571993601736704 -123198628756545582233955383050764288 8340923495201525854684155928903680 299471670995539510812328893349888 -533706907433984784509724458961862656 4839358069631941024596974440022016 6178235075179670435727462738427904 -108376253421736263061675240463532032 4348811541446740976428169021095936 3137135732337519996101720048402432 -798083439347619598283568703952912384 6779876935050813277662361172312064 4537307856822099266239081104801792 -613239686898858170615491347085262848 6167969030543709044377729934295040 7951387027724982358299665930125312 -16624966462854717991709424054435840 3881876844205847942967598814068736 7812379546616845220605578935533568 -764745699367266506517440936479293440 8092078197475283839212520451604480 3848299291569827260551835009679360 -96271743236728123607689553866915840 2506466276647886752709161821143040 5493313869073195104400074686332928 -278876182589101746250623719892320256 5979770823083735254723738866810880 1505832977137374972649622353215488 -602618147764761180765140603990179840 3812678401732780890900379474067456 1019078922330398208799248803168256 -225070213933158043122280137763061760 1226574424483378914521469859921920 6182580589038480279315847455965184 -119957557797453807163772111425634304 687910613877621349444802662367232 2747214565616902326426196766621696 -920824355764747400205502406750896128 6109365062717653523645919465046016 6568136239999705961034639566962688 -30790061720691026720467928360157184 5996157300575052752767085373816832 6809254559238887246210069904228352 -657298073217000925717192434042011648 1891808001425562666662054737215488 6746260006497766086266600120385536 -484839079188383250420152636918464512 7534734124925116524560505248940032 8380408800690258272670016224624640 -209208854629906029595705330955714560 7551225034424034536613205401141248 1032821478092425020615063274258432 -492867955364722532847167065439600640 7227888705886249123636542701568000 2172760285191561346092008453701632 -241340102071469812864837316738285568 2657484644889782877689429004124160 7166374278570434843213995278598144 -856900104106182144740252979382190080 5839056911321636311139472096886784 4823744728545704915605890782986240 -307140312680870682051171726756151296 7341523272539727395798887033733120 4206742470802904255478398386700288 -650287175038536238184745192216592384 5993654819633166865817676776734720 7474261657477175829124734217355264 -242217380187478270358335299996614656 6466113391760755739848474833715200 603220983024801670066313399107584 -783489945167515120621724175656026112 3174586054440774671710193685889024 6475549800423760919433195907186688 -206512463783899598344572612535910400 7190598877815840938613610236608512 8174707232390124876047381216362496 -90557288252901816748551163357429760 4287761601403914274349473597489152 5844861104199587895451479938433024 -574990863628490523070630068718927872 6355315558576523370767187758284800 4413182983461828435114999060365312 -237995078717542445589825270293987328 1978464930128868187596832446087168 4615822351208390133069776332783616 -843600681368269504503443091022151680 2801397123028738869150527319441408 9815305481996430567336175997026304 -965731274666171674197590870983704576 4496405470969141774371129535758336 5123836468595766934478772162789376 -280738244857080416664593690907377664 6110049288203205129322746861322240 4247900163799259696792485652070400 -704550063642888680840186032717561856 8055772208671629670315687652884480 258279356119290687008506042646528 -627378879629907375002982340978802688 6726433492420601528156283564195840 5968305740088784243530147716661248 -42589859904585336112541553404149760 9018607202471319818227245339639808 4358951446809954135519446012264448 -530922932469496807252125544936898560 3023483249987035029647616894828544 4370743271161665097589172681572352 -383540698841395283692703646941708288 5651647778822776554936813091815424 3106332921170785427340262073434112 -534297513517328342068826016996917248 182333365735075787685396872167424 4042116716766011778691081657384960 -625392254959682931923839128201854976 5753111358806519874746010801537024 3286995049155325990321428684079104 -552477557069661594768575822076837888 9455038112831684423623123308380160 4033864009610609562725508779606016 -123169313364600907871851085188562944 5857591431246200858492568925634560 8159336156611451030562787142139904 -164072887722413403826275796006207488 7872081995401526724078839149887488 1409071082669338333545004332482560 -527022209985921758724744665957924864 7696199348402580345822511582150656 6669299781025259175174667184898048 -673909083626172621042852775090716672 4138637486527335742638153277636608 4109432518622064050757660307357696 -366461953578718468609098901054554112 6190909779191874605156430478573568 1299725530306795370488671988875264 -387373136969284492805863925241348096 1921227852152693099420624040755200 6625131253771270253840344903843840 -100947897592158271488204407492837376 3332041330506896143483108069474304 4724781415923195478392084918960128 -741689038585203759499717020726853632 2726376106810380528707872315408384 303597279271363998670493199630336 -804521446613939443772708265431924736 8240157617029385954792153798410240 4502162328611390871515290553810944 -523435170040146482966152798317576192 4305120572533476946491759216558080 5980418752004942191427636529463296 -581919613278631291579189254277824512 988764602165562278968580083023872 8003719036548669789240896887193600 -696646041706214381036945596919840768 2632215069388254889560179933708288 7554997221915616905668752090071040 -51810209693276240242634815713574912 6633776762284552467853980272164864 2098168529609236766111014607388672 -837496930301865957588962864820912128 8494883648939392709556861841440768 4056859245348948833538175664128000 -581203734462791880347408433686773760 6220720692023802753736351615549440 6613079414181210127636244985806848 -441122807793419805909111688960933888 9643213392594963727682970731937792 3558729887290993395358536464072704 -143319790592326858192648677068111872 4376455076218120374012382774558720 7653978183115339354163547308294144 -276356580002141311926669920935346176 8675425142448904240381211076198400 6744067418090612453847596284248064 -259828164839655268547394148289740800 456065966612025889771014500384768 8103623670203793667172537076809728 -362794083324320608273392254914134016 9316042850833110015681737521102848 3074120912180221048719193363447808 -42216649616033345690878011718500352 7382560427758014054223391414550528 4878075788007279352229582623211520 -239595046664859275413800089332744192 9002699632577566364021566776279040 409123589840267293871003018461184 -807379338430782327620951621203132416 5709124638353654924958133274017792 3850272577702843060148347355529216 -548922187708232117379102613486698496 8305505084840090557057739022925824 6941297782821214822906847177998336 -990583881466702626465133872724049920 595609670058836970420419568861184 324108140106334667770307486416896 -879897707781114315457463403774214144 1351955485021541425155294005035008 2852967278111419067880941580976128 -291574508686212374779580621082591232 9272473265551263916264591303114752 3872639206333425302355895967023104 -458408683714824573759415646393729024 7682548244016560836638675579174912 8010233029075534675234794053304320 -962080172935973245927907990804889600 1732652622229476445203938500673536 1924784972585731212037005596688384 -537809309806088891914391015521255424 5147224213996901074529463706845184 1902115528100802093405724053864448 -725862226922719529794942881104920576 5589391240255768708655020456804352 1674311121110312995935368528265216 -182400526207635872325941240161894400 3662117964509224267973910633381888 3606878503426788808038034895273984 -300365671011781864333099743219548160 5831123379252978238940621911883776 8427237146788017593827604027146240 -115122826912933538264760317894459392 1219357374247145249597716118372352 7773043727169719509402794260955136 -212902961563431869003519697767890944 1738604704691080283028857875857408 7932830926308147454113332426964992 -136835237816395414223239300721410048 1466869863503000160155910811942912 713126377719495808997061470191616 -185994200817749063505205951595544576 5657163832529312047347958873587712 2391073137864620639710923947245568 -968734410668449784515715710125604864 1878268850823195991685631332843520 1086840750761403337877974474031104 -181423918066287883569940321307459584 5106734402671757587296606864015360 2062343569943449730375282619056128 -332515612476825582088759443109969920 9397548326476408653326684117794816 3116303380033366268963154613501952 -354182667429506334280233889241759744 1616999112100130134944308703264768 6764261992850011381164462821081088 -25867811738126445759481079587143680 9225258795622522927263616763691008 4995890855285064018430886989004800 -281483591041122935925269754133086208 2174614608481587258639810591457280 2978105374940409762917356845137920 -711021365045776254538110180802953216 1111026953425038673562399001280512 6122551446443419064938911003312128 -446630898723987059403133799800766464 8341447691824560520782597333188608 3702962315696584517418586187235328 -238003661266157292982505467828764672 9384999466989455445971047379107840 978660907431171030067267887955968 -422051219554458909097312923909357568 6553012160594636117300220455288832 1307677602904186640052018128879616 -678666908051478250429919854319370240 2705076683731006121539498693099520 9512504876241517254650203111161856 -304551816933965026675425190258671616 7834449091317252478405673616408576 6945603553893829201558382191837184 -327818405840570839969824552983199744 1145949077627918369605419771363328 1767633875600633230602045252173824 -892390511736353881502665300651278336 4642775065850427473991791452094464 2696439664119376493959353531891712 -635234495738386803088349491787464704 9189160378124865665381434166083584 5690313616581267103619868163833856 -601083066792950481070632488176451584 9641479438264371492451651673915392 4189288468437591359332988322054144 -345393971322095465645017778813403136 9191876346533604137540603854454784 9839658638250599355937832407400448 -290837974002318964220014363781627904 9095738022598346731091331678994432 2650422936943993377388876630327296 -976319901666561168566967457906950144 5181962692396199964429186456616960 1674310051182922721305381939707904 -927962944898670610352809563385757696 8766814539277302028002085008572416 749944642006278113895534034944 -161619676197141293481414575718924288 6037462714336426206712112823140352 3769581387367263337378029273874432 -163488990983871714625126031538782208 2908912702780657554022486390079488 67215436246414351440370083037184 -838562047593829324760684205520715776 2161366280302244761965912272142336 7928893054808157832319618238119936 -942410011929591670800643585004797952 7453256578216759358678491820195840 7974759159997698582068112308305920 -879750622436888506792323727778381824 6488782308266908884247560130134016 7452353039695631420888586848829440 -994297053386538661038847712443760640 1599326177382260791538722736701440 1221182459182746149382046707875840 -908853714051015765687001628515762176 7929203622773408106579177938878464 7235947847644680549230464978649088 -957266936445432261896457552887021568 614488810252227647238636186894336 830570682592975179996700702932992 -57823227997801120821259218605572096 7007540042444825491373635823206400 7466308633172230956319055846309888 -984642286806170135438878605930659840 5449494122129541989709789888774144 8849515396797551597265722525351936 -412786334400862871865467843695869952 2551741620205588491432043703435264 9451164927344700312257281201799168 -533187720854622709026220861934272512 2885629567362994592988380782395392 929388907103280724366614312517632 -299732190841053113414995704209735680 1083811829732734973035541430272 255769574422981285342272303398912 -442812532410341336302645204574273536 937403040769888157219214875164672 7262569507331879844180067130277888 -967484088345121914473332305773461504 6023497004820099867803281082286080 5550089351839968238455203584540672 -131767280514664511346345598739546112 7297460858082611963633901141753856 3302557326402149238147770447036416 -289195284553747423275876447714017280 3028384163754626001264990127915008 921968482387502651152911829041152 -677041453470457216842065575646593024 72851984841248838299763110576128 3071426735523939096272250895073280 -223948743753911435548274429951737856 5314290928250879247204289781694464 2713737354016229647336906325753856 -480115782168984456636932195434364928 6314654787175902144936591499460608 3105250022660462208792367472836608 -421777452932335184841320851381944320 9300545388580569754804517496422400 4454310742754561885295346687410176 -635474435014955295719383859705413632 7423600963181308140815528205746176 513751022280624643460772424318976 -807918699194546798254812981173944320 1655437186310532986854608967041024 1901829986245473490851381219688448 -959996707148500549256277290127458304 5914997100712419233617706318036992 8090846603521298193005529456967680 -876132451855514240610031417769852928 9325256007440653199625693614309376 2681690154104804532293436501393408 -373047483087339648740139530606084096 8969572191383923163670954417061888 7976434332110504445836025070092288 -415659588956510803341112236457328640 9059865041504898959785754932281344 3418841574336794684534597691113472 -466935868085760895936707284806139904 5170112675321697171266303114084352 4872223438615563543694049496006656 -914461360443900526308850438089211904 6701709470960337724188782837628928 768005688287795750923223110254592 -850740734103069184224254161305206784 3637661587521761273357414988513280 2381069498575318998034418535235584 -942315477094740276573302481852825600 1621703560698142081046649711362048 7522669602659361581075855658975232 -869751782153710252185779163126300672 4765751183406404547472097458257920 1936937925338619628176601371377664 -277548357871946083503771895788994560 5539196695707688725599127305453568 5676294476088308706254016667975680 -514639238278965602276384452215046144 3807807900652991525628821821718528 5200797341871088854586256997220352 -375137039900004944620344166869630976 7029829303834923236690047551930368 2872145439538602519041738310418432 -909130413699844490864657285188157440 8639212818601914422501956151934976 1980132480716249628754740934344704 -538591537658047839022522990195638272 8316363082307535811433334975758336 2216413602022830739287142672891904 -473762008256158966934221710669381632 2958120695578474095666578637979648 107271977398172983417930061447168 -888990982783820706149454117615960064 5083521648406330576255155294961664 3545816995129627103058029447217152 -830741553895478390601770457840484352 728687483685353739925017726025728 9056487383862843542248532975026176 -802066008252201100208548685092487168 9691619928608295853834241535115264 1280857459464879609509101506134016 -2434623182874888058310313197436928 2263837440818470521483651891331072 5629405723687107279031512351113216 -300845660446000229836807897530499072 4044562449490692287740800185401344 5074924615729601302449438387601408 -422227924387822966423598378063495168 4156651857755363560952592341139456 8420290144946745964459382575988736 -544686933602690475508446718513381376 7120748163747570589676080176562176 9824665071472389833177724490874880 -133069854914864674709492063983894528 342008755489182675807839138611200 8426989105062313898555582384701440 -491385165880021427553238556983951360 2053585707044817568042476738969600 4783262342299647158235583064571904 -126116410236816370839112044706267136 8873723911639381907400497051992064 413921485425727395259136316801024 -583776383187492579099572704387268608 6064886025806233067315082848894976 120277285008738486234446810841088 -700013765572996964027532274760155136 2436470764558297726300273332191232 6783426470743368996580987802484736 -54453923519173275261007922605326336 8864621119910574335657486785183744 7892897945583515719290486907731968 -178446972127944827430836802664005632 2184217743452686090187954257395712 1537110867548588514766522515718144 -614877793548430803973262736808214528 4447812906752943317416512990478336 8055345705013075451349733094719488 -348925841039398984929899355809251328 4027728849317540298818547699679232 9818083734100212228349878033448960 -698849340030818335892298522628718592 5845993751025015574952651788386304 369266436601788031374373551079424 -941778104395621736925271416870273024 7600456252718456128333157691817984 2177750596415904135707361129005056 -290408066548920947945645185781727232 1834258121984806917691909032902656 9561761621152916843638244228726784 -377588431736675345972212005234278400 4421554303457315228904318191009792 2704975608957320782760072720678912 -923635281268752683829063346060001280 3027422739467855526831915037360128 2743056573617127581972408819515392 -935944847862153209536730005191524352 8178391558970889642407494345031680 1822391728811644939836404338262016 -789315284857302286765686421125595136 7495864545817912755745837054689280 3751457934500491656280846167441408 -459419747486299479138856848492331008 2331475801018683912786287259549696 7947979704947311581152997156061184 -580333939967204879332142772358479872 2896070537117820898472570608680960 6222955233745390561149630319427584 -910566996737417646146473431507402752 1274686849909030799191364341858304 5953094817497294056369290987175936 -95273919333071184548895701266857984 6142800023203982616180723246170112 6556115245983463800154761369485312 -676967324226613560417971744249217024 3292067968350493817597635709632512 9499705405340477314541509303861248 -858013477095281609924766627671310336 7599314091557950515831743677726720 237126682022719809695229226778624 -961328686961410237740856279532830720 5310808170879728771540296826617856 550168510459037280199122981224448 -707820191292179701192890916481794048 5526637185941422501665093495816192 5269437169996592332267501297598464 -649588933183292398585363236850237440 1147229624798437666601217694892032 4108138172750294099774647107059712 -385925772002029273277701479181844480 1457217997941192974001981232250880 6724591699853899262278195946192896 -508280823911918197365317927039926272 8241528650054512201622002941820928 7265658611386971126808619897585664 -505844603427556647725641791688409088 9268650781691135044343289241141248 7000352638873742040622867557646336 -407367510176225682324925540651237376 3030553121406864117647092339441664 7631581723582922535143429027921920 -735430310331220885462969941198110720 8170930969344340406296943240675328 9149655996419599447265639474921472 -480762991561333706579481812420001792 2892109044020153337688720343564288 2690152164110260444275999588220928 -236411382125795838866937676174458880 2926389067922960688269554232590336 879163977495099119259559028326400 -415746761321920893508382703166160896 6405688640231540010506837664202752 3314551602601769414450437311954944 -10359735895803193924464281842089984 2974405046839179396354717014556672 6542997995350685583717283959668736 -829092256933031889423079588820418560 1033905771957753097794580434124800 663294516588989902561471205736448 -406601238687289639320514313267970048 8638125245885155256459898182959104 8899034708165220260045344038977536 -507061718104942670733381657557991424 8188734513386033490478212562550784 9726931805496491598195520744456192 -274649859594425637589833199996895232 50337383743904670927346756222976 5214529566676593527535888710500352 -760465243116818430943181209360924672 5584716201883229598725090085699584 157980514989842498343473715871744 -630107033536095887215159245650526208 9773425925246379812500034967044096 549995998419575276598818877997056 -758869538996201636445488040202207232 3998764823486497841699837473456128 9649270068173776538944468301119488 -427510130525888169910967853924745216 4816999386506185272833106946031616 1118941880552321102844286208049152 -627277578404903282494956885334032384 8723595054486711469677091525492736 4854527920099077858865348362633216 -270987242288907545473247275233837056 6422507578983823362933534939414528 7761821741521831574522709544009728 -901953640773153725185000457073852416 8449877547916645138086336602832896 3932734688259052271180390600802304 -19177900446484970054347057931485184 9326804986629503426108755804160000 9980169583843877795604971680432128 -752550616676660982365600849263067136 4806973952412011799535149664698368 3570625105851243562100972020826112 -660320439821626458244033981406248960 5679911884604952253547660380733440 4087300119202082191556611934257152 -938774565995361966195940845315686400 2416725435469248463008140539985920 8891105184185702784084803495919616 -989425916067347530297529174377627648 657772092312703645013379314089984 6653768326381163369117099315167232 -454756205949442799695054598609829888 4031022124554947289799775838273536 7940279243173927131905539868459008 -538559351804763813665010339545088000 9951502591344215059242407606353920 1363138406366166650276156303998976 -125926523800729218918776457196994560 37813842061956822935083956568064 4786428439017030506186682671300608 -509420295724443934846124454567739392 5331689909286430490833442268250112 4576052263782156221952229346639872 -209256084554631977905397256075345920 3921393144168353032057786726350848 4752259401772271111891811699785728 -761908976842216668639012958093967360 8208983605915717821153221640454144 7829222131542096228439423740542976 -27561038165902746194282280206204928 2684139862634310139709706416947200 5881661667536418826764165484380160 -431077811513381520054752560107487232 8757542382482758798878728362393600 4555422969687171913761375293276160 -732714544271823281215747020392759296 2321543179922995307288154003734528 8511595630645648006360087224385536 -427991870327999867940324778818142208 2797406284118245817663128019664896 6771093630022510478372710759006208 -877857410213257841467563427747594240 7340185290960043607810272651116544 7995448593276332466234618015645696 -167015497801605506532188113908793344 2753170177183466568816597537914880 2271931081580344729869619424133120 -866494695941045820997195566294237184 2598414260196146545154288510828544 4903763533270487384960823598252032 -556865996899711771982328651887673344 4053127428527699132715422034427904 9342910093068440858355233445642240 -489559304860179736644888772468539392 3314662371290603120559653669306368 8987356669970518641169866214604800 -208920438969106954090952644152524800 364649855019418907466362557300736 9839413249096388306748407617159168 -643663015323721480290233345573388288 4235718319642437706357038393589760 7728003629098802176211509053489152 -842469076559029442542407108037443584 66588752628424958493464681512960 4828721405386803031693251527573504 -82300987622715927916420854580248576 2655932709224702275588118085107712 3287562259862946664306237541187584 -775614551447663707679288480688504832 7421230107839428287784642490138624 1649954669138448174702590125146112 -597262325036459503541004179240648704 7233350076056276536721909269659648 3659660964382533191261942370533376 -289014839442644553156866402873769984 9786577757765710420331119058616320 8338749296818948350453840856743936 -379595208206305459502304396006391808 4933944295188311906038404431740928 3450432900201551526413057075970048 -287906910628661458084957075460325376 3209044851890194904053854561632256 3336807657541640524248563692077056 -423025301207094335692418650155778048 1291121660441771534988637754097664 3563547775619796262628399719120896 -479343359384302020755307441241980928 9995878620834942496116244031209472 1652260089310933330712781396115456 -115125592173466328872147280728162304 9825484603615275877415253648080896 9936885259483714533913845005549568 -705813092785306810722954213849038848 3457375361318292080539984363257856 6078565651674602459389445533597696 -547339894141872402082728080429809664 6433119619324937720487619434905600 6092618221243611923765474938060800 -943255021536766064183926657889861632 8759761937355864971061884719464448 4161095844415160784428361653944320 -483744547898751522763252221972840448 2524808571275080067470964906000384 29959792513274053448734613700608 -58440403227673357868703041634435072 158213304351469924120979094634496 3353038353751672927709752578801664 -356731489562695176068350582747824128 436833276653115221312163400384512 8846891312650837219062501672484864 -632805023238933001653596407331815424 1087830553735395722129841600856064 7213144459573105920452781752188928 -724340891732574766812884267167645696 9519210696516466671116466178228224 1372002732064579628615895590371328 -327696095884991136543217878195765248 9362607305637067464980722159190016 9667778106721395326799424029458432 -705389945126978452443626111384944640 9951890546468628789034217340141568 9440574124597775573292019538198528 -643849021781168729381480639234048000 1504719362034512994681012598341632 7347992944770922848011262529372160 -578590574513257505814048460333121536 6693750883549853759096916056997888 7638496005511192445919670636118016 -121551209137923576309318525504192512 7511271236625586661881022748033024 3025603237556473542666014462836736 -856798882006589176739974826413785088 2765836195847680900216500680392704 8001692495966679647681073723211776 -977116537025367690125026387594051584 5604089494485218529752993054588928 5934464824293725925448650328113152 -841697307059246497553228773938167808 538358114898478473079368601042944 2823583676402252199431714275065856 -193928034095253407745807379884670976 4441496756280197602478373495373824 1858395781346831843937099578343424 -107279005636899652961933648853991424 8847436307877222591403442718113792 4205483723093869277262207546032128 -145128707041773911175535006717050880 476047265768957659676268155633664 139330737854906833519203353362432 -604778912749403527542424218382630912 711379903427016985234733218660352 5431229214661514148092869898928128 -458330309659397991337314348144001024 9393974044003378411130352589340672 7200474999343654433168618460020736 -813312464488724444519186301112549376 4400908723855805973155646405607424 8068348668613500938706860352995328 -864198445223051686509498699163369472 9784013076011890953128739539517440 9501394116743765642510238524375040 -773892225854506601102566267159576576 3129731838725182257838739911868416 1347161775501094962913305891438592 -893239706029233819032870660564058112 404079663402607290525511978057728 3635145504324959966403732443234304 -215052015301570317301346472436957184 2683763283818520980494499562127360 2587768170603868545827324945235968 -853136812785163886000605415822327808 8653150717403134808114004475510784 3447538726218317714280137854287872 -53592506995539269427040266240393216 5495615549880532828274665560473600 391533172501087598069963175231488 -103381983555630276478781975515103232 7351199192585225421156845008977920 2122034740564681302204578558640128 -256004005002927812293123147588173824 2651263846423787898330825877356544 5962302434126374339469794466594816 -394225913921979535372336920835129344 6931348773417214143760102372409344 339217840628384147348384049528832 -459143430145267250782708800065372160 2862085142624230601291474904547328 3307879478522663018622864710434816 -983476049245540689943533879168073728 5462168925891122008545592921292800 8012716946517598282416139626610688 -454925798125215771902943931890925568 9506854734704992015858071901306880 7447720685323448221266283153326080 -518506379858956244110276624748904448 5951964900021642042959094240772096 7131509249535251242962344262762496 -77991972315893794043835447766941696 6469673861718683822700789564964864 5108253041294475587362571904090112 -967425154683783309955107992614469632 6061209953291643278710201017958400 43960805444838374162440799649792 -68351599587011697417078999573594112 742249056976729449818836355252224 8260405730223817418506117576654848 -506465995403740727386668310839951360 5004441346376448954950080190742528 4935039900949618505362355550945280 -424875526167446571158921410603122688 315829218693781996613228828819456 8193045721635323355652030220730368 -945455426244902595898593651562905600 323118108401689930367874923233280 8937159426752775838268678767378432 -448499620496371857110014721588723712 8106098856199698991944377519046656 2211414344435530152534010652262400 -740287111919344102480350846818189312 3112312970956474552775312955932672 1505915276546851234768550371524608 -270280671997170335237863569564368896 1050493230767890836062053800607744 7676078686952790490899619763978240 -800635286518154529552638250059825152 9502074051758318803298038088466432 2638016155285822199612269523894272 -112874000571105231320795260741746688 4603078738177236595251462681919488 3247663662974331452880612990386176 -224385157355453159135035821773553664 9450820531149913364237428275019776 2609849490766386557414890125918208 -442664056155826551840390638032912384 3094364377191720959251785491415040 8223010754877938547069973260402688 -982927479333529347030124354311553024 295315556387363399189959490404352 5581043970087359690450822204751872 -527314780277279370786683079964491776 3838011465942844966476699553234944 4492491420565578908077460490813440 -266822853618043408119937252217323520 3327318545535514033066592297811968 5323654610147302242859985001250816 -191941254688762779733346522492829696 6762717984219292988761500133883904 6458647103942563346337302489071616 -922411291935464401363317914114981888 5453007215410211628171972476665856 699981763071480080058760606777344 -290585797010018448009571431654359040 8530748498843116391035273771745280 5323281752382184496995718991446016 -829069078106404463540282801063460864 1015585556121491106124708324573184 3648562341111235853194622171873280 -546043672998749328826645783217438720 7504298436546915380041571150856192 8816703233112322834376430773600256 -67347214479736237562192531868876800 2288943094535764350887268097982464 1308600619847746990788188248735744 -704393529463787772377910057688367104 5237071387545832061045654597664768 3842868826885636321376051457425408 -831607721289219520175661407738527744 8051996122153506375823472434610176 8495825495054356939249469553115136 -108070795354950561442390717191159808 6978172239548975867972394292346880 881396021649975863193906102403072 -160916933588576776283992872781348864 4910034669546581942103705900810240 6003194313943360456920547343728640 -876499786735565797347707251702366208 7738660298296935031319417703104512 4650903881046263061359711483854848 -210306568758093382944313467226554368 2376615339016191774404149833105408 225296683715064320842055634911232 -762270510384359465473630673504829440 2544828560157080025896623835971584 1540483680561378298060936100970496 -224447438556576045467622442654498816 4872342363069411056047442123292672 2579471242902172457256689537646592 -136754249401626900214463959719215104 754602020870421519231586555396096 3765954249598743207046997637857280 -486149955805004936721472353789280256 6128331931788170383823382058631168 8793884956493430047722689441824768 -176232535015802387484475778026962944 3562446063356120439803184976756736 9535253901547582586296262136430592 -964911217263970105378846145897299968 6113326465223184541451956896399360 5108759564765006372841507893805056 -990307522260361185581226060479987712 2742209683563828596214606321418240 2898889190572052685650764939395072 -577419373530772316022444210264211456 2939808695419245427632560624631808 3419122647589264185849750157787136 -88207297322026824014093802841047040 6389741666793055307225301902163968 8637091074913127674681950212194304 -189497221486458725463826070228697088 7333699351692786912324660005699584 490185906396908549963999405408256 -623559580164364639330731070911938560 674358690007425620053025965998080 9006266548279327886236137635708928 -540174640625576699949555316271611904 7630884361012786789851739774255104 8990887315131438735802794451664896 -291345868293203944175365598046322688 251394770006752945255064144969728 579744687468479897831073569046528 -550950097429297240682190836617707520 5119670635497154036146293604089856 7855186579756075544527305690841088 -451634334027831414710986972636119040 2229457888001137309972624490627072 2553556182238955522988791706943488 -932778469876235220204300196856725504 228777109285722698028660679507968 2094953553401190069543647039193088 -701783068679280904857707984092921856 7532569646637177449860060248276992 5748939617256073044447902029578240 -912833999378716173415742689136082944 3650926664773758787504346442498048 8844521329185809755052583770128384 -475686834179044176280349771594465280 1241406157129143253606808202248192 4434327642984314430509458701418496 -526888411140289488521931925137391616 25319850348196152120402799230976 1746362875702448975965024042352640 -851518797199247529564137732515561472 228627994769898479195706278019072 9749056469671835435674887759331328 -348961658134539992119742703786262528 232331795116482486796785981325312 2900656871778605975913226001448960 -242897892606290108159440273260150784 946099342950376399205419158863872 7817567119713537615222750085906432 -885984953630270329829791457764966400 6051235767273567317446945975304192 9544607075959823564864244523466752 -4843058581545710055542770894897152 6346613163707518995903590206275584 3343916458178628545123204875681792 -405036030467293263525533110350381056 7964568999707494300872612960534528 1070807987197625207298475333517312 -392795320543867689483445823552356352 9786098173133429163902732548964352 7570740650451723911031992210161664 -2885498416347628359613490334269440 8867944998177295325369178630651904 678530216641071638586167840997376 -266575317850096412818136386733342720 6287452067481037699515538194038784 7520175426382447088454490744946688 -599936624478806254127367138679193600 2929142801976921151933636319117312 2743127404521642672984229043765248 -757418998090409689776588705975238656 3449958435027357386305628268396544 7704224097011770273702902463725568 -1312360017827816288796823573757952 3632266102273407410081532898967552 2175813192431682944463338324623360 -335916607790243199642930124150538240 5027884014806184152466726588514304 8919084282352137534393223036796928 -317871559847327651589741538227257344 7893347696261551986913473678278656 4918168281825304364893855782273024 -25089223712983320459112370751406080 8888042131673955349194081883389952 4054415784512740221027023860006912 -888861193652766846942291989767389184 5969980095580143739704298746937344 4264251890585392868403263341330432 -437109229404219207724175919006351360 4957272042596727700281812630634496 5223741432335118604146143915933696 -154323811423652364054558249068789760 3848969411396978629561084423438336 3038454291274449544321040375611392 -215966154080502464256619574374432768 3089583032628379791167517500637184 6629647063036476009744890968670208 -449104685451638740933740733107535872 8024384814497096711571232606126080 7709300434801084733307921811636224 -947043133321359293104394179725754368 9247909797879881749423714289582080 2901690921478382439085423420506112 -523851729504652774817553392219455488 9429048557072885911050857964634112 8586727278862535642014457522028544 -585313704490871358616272921820135424 5095961966598952722521265492983808 5540421176196346388326444819283968 -87623923057378339978565303847092224 8595933225307792322593762553364480 7936216931660929416062447013330944 -392312138916003349457717740145999872 5449636715727447104565025569767424 8351000593391547534650700025823232 -197341754472746419833469520308076544 2233779005082376210126011354841088 1404764338366294505991469524844544 -698881361648069231201186172400304128 8567084217195028941554772713930752 7601074628619062399908098147876864 -778573180150308044981247378299289600 7339665392517036626820119700439040 8685742511939247893156281280626688 -796456437435103522492738394321321984 9200818596683183249343356757606400 3392841943979828784470768744398848 -274641140104917285406619335756087296 4607327830101905140399948290850816 5833801835322437761939975604011008 -589647698222737878826692032610697216 9182186406765227625491716303224832 1321565368050669904469356164677632 -689569469696330478211091146343448576 9577028654920238781277586730254336 3545757256547676658806768768385024 -464361999442146653702028809102950400 5089764346083184282648320038404096 972065211094651010917875501236224 -325954609459808010624512557475430400 7286928638054726509004393617031168 548648579283101043189170934120448 -510891810700457294976560665412501504 2323036407096159840098597593939968 8106078556499207436015819273797632 -848074995739149201038301758209654784 4841020843055113147821885470277632 8681380930543127352186825391210496 -979311408307754735795255376292610048 9432168164407917072385296056713216 9690834794115277550120358715064320 -68710301002984961923747252518518784 8372929742656649542579329871904768 3938137102736048314144481219706880 -898589784464977178895055977816522752 4697328074052806953848893066969088 6876273556494213699909339653865472 -442782643629040085723568552623996928 7908521057363183792080491504467968 4552808691570617715064672918437888 -839890230388585763750711739092566016 5442909106752451003918613049507840 5364447370964688046573126527483904 -629363820027743418662568445767319552 4716446965120783382522928188882944 928339483767176728978962002214912 -680339682417730396831348181384036352 6890778487871198426611676574908416 9454276865451939125509334709043200 -132799977016599153540852053901836288 8333252873487211829913776948248576 138149721203113563092682079731712 -727751371151093877767236618616307712 3073793013356346133379969250754560 6763680183685955602948308546355200 -431135954643991233731181082847477760 2577430997263479481371422456020992 3009308811697599701564807876444160 -565744084699107961540862095617163264 8176568219393196460521552980475904 3774516229113766255701778721931264 -202896476488742932549877245702832128 3095470137381893566215279265972224 7854735516606144170989445862916096 -44193694640376366352571623423344640 779170239526521932999064809373696 7737719482272005753047955644874752 -702209819514195272265406455411113984 9955124030921090879251313395236864 9426149932957258143115209716269056 -874124312235930228827968761304711168 3440295536899017241167707863252992 8900866186641661007370187807129600 -240170101077973113496608945851072512 1263098670209070646258195165609984 1533903224379282380026010159546368 -519601990291532942800969885391257600 2638575375994648861016777266561024 6165018877418336558427175397621760 -214087392143836566533898283385880576 3524116932645946108877237399846912 7663221999611803480508993726578688 -150498834370928514059424857786941440 4925229615192898551322056595603456 2414315158112175097768697801998336 -535818896702669610429329201675894784 3051813581536549416172761703776256 1340562307515110860835050246635520 -252080308109127540732369717816197120 6071927558376193695207162206224384 9306707228301119493284500783235072 -166736675746985244568552428972015616 1289265889593747171987470107541504 3908728103391179772026910136074240 -394253873368925289659698226877431808 5088156457299469401042165522497536 2828007793195158625817730681405440 -563015331488426902125955968091029504 922864505237407307296138311237632 1779126792281777548113729978105856 -466204238703304806657845893485559808 4337759247896402043446066052857856 3719917178228900435950590190682112 -139327560301121783488148756798373888 3696870510177780155154765329727488 8451030715464191917989404845539328 -543124363667296022740352416891273216 5955157516505110931030267163312128 2045419729512609205430833121329152 -735631578771614051618482266730135552 357466015890022924067168619331584 2704926754041947438791192364449792 -829256556284491878876376520839921664 1455581331316771008172483590225920 9545227034504534225504428305154048 -287984074730137042000857405327409152 199749442793774604147910145736704 4656634361717553582649217300561920 -59462213818863666263751459399008256 1351579818075949104821697687584768 6057760663385685956521327400583168 -150972458737907898112694893135527936 6138494938323323603627424650100736 6550952863314699057702030431748096 -44136240064892205130241565379264512 3718546142151362047745654066774016 7305786107767910559737034922000384 -928716449153286114243665716530118656 1297908644181962850571614311940096 7618089252704421015629067567759360 -835714136135909494694600097759494144 4809467490043351742491489745240064 7380085660834270988999770226294784 -467756093414394398218662881649491968 7089228998125490185529587939672064 6027775272134761622833285356847104 -30373853898962032566523372456902656 3982529798416322024580917808332800 7011442053318898944547913398747136 -967775474292728271814617589771927552 3213222997742919792952686445330432 6140922218058995028684996924669952 -254062747628450802910096615790346240 2590450453578200767256133342593024 7235648768103068963567245463650304 -680025384480588202139343756227248128 3394258341204508904247453670178816 9913967744041179804665751304929280 -613097096787938108864404303971876864 1801264123870749731390688728186880 1913020544533574989722117545656320 -522162381980448797954076442330398720 4906320748503662859235359459377152 4535457556883279556721418090577920 -336473619009704996278363722365272064 9041773848037413086353056308658176 8003696087329098305065581073661952 -478644292033039087017805207054581760 353713882502016075028929219395584 7246294971258574605888221993762816 -605930807678946345230301216636928000 4967864794856921172583151648636928 5259353022753889149599016867069952 -466507611479724729908000547888168960 4869356092959766641296515287482368 4690242762979804371764289806008320 -183055789544819508538353129703342080 2061455567772455535937739955372032 4702619228647135345383820429885440 -735811879271672875802213638054346752 4516751301703345707477600827342848 8886235659388756450242213376425984 -31492160094510428298277402089357312 5325219566281327776667810136064000 2271314489426788550888385773830144 -685072686524137246494220829220405248 4785731782557527932712838378815488 6665962784144419479514950974570496 -721810918969003945442708781881360384 8495754261943942947190942424104960 9736327476619995730051348605960192 -727022442008733128402028183678877696 6694663417584521520932008646148096 5665030762804226051550398140907520 -494280485763933769834075284834353152 880759079197133441093558731800576 268014237962647427685660540010496 -950058573439810550414740128643678208 7059359164937258882535988391837696 7238087636011752620784984002658304 -675805074910373929417173925399363584 1354698171246904764195436543082496 3325218071725237013393185871757312 -256860453964694723632202336526401536 415251490820466946641994195140608 8802580417477178026357666340667392 -423145482322059351217032933553471488 2589900123976927034483703470358528 3246865409867192137375696591781888 -490324297844588213290225257167192064 3048672074990660104264514298445824 4014278425398019909269104011247616 -737144846216886815696177678891614208 5144426775165771841149158201229312 3901356980290641321850226834669568 -493941894426733596429079741980475392 7035892687620749530244910896119808 9042313373802807474299956455538688 -163954122823001138938532243070517248 583574607169135304748520053932032 3035769199119642460192525518897152 -28292690703487082862489951015010304 9285387359673709236400293089902592 6359033892966898703981656154308608 -155222968086636134071626647591714816 1194739769488495834869341326671872 4218845916180992119705782844391424 -12178699104614137024867757962821632 7290102515958927772866565629804544 3697342063369712594702070011920384 -20200169405939359422086406985482240 7482762585938352174691876958371840 4975192655223544212608030915690496 -440655547723547650032041156665147392 4114743934527744217599213700120576 7346640634907013815402425300811776 -216049973386113139011355807867469824 9191637275746150549896758376267776 7023848052088152777576792685805568 -733971315697944563603368217218646016 3259885315934193428970702119108608 6716135578381598323620149922365440 -908417374215129737712005790612586496 1622379280415776012406217641033728 2007044149257437146405936509747200 -590674550286127343029088698845102080 6441031875410264087632705358921728 2527585541587084368731869271818240 -563392201389043323315164561046241280 636704502230792086431498422452224 3265880871389900569208672984498176 -309899049138565088161927380271628288 4645818899350512991565655947870208 9971660525641190885184939780734976 -962839380837582246944957545328934912 3427328846891848781531824028385280 9221300734932851486552747279384576 -90568980949484371781436363795070976 6310811388096782782403689851125760 7555520064625200508630035117113344 -114600071657079983301228665220628480 9001900409292411182141618322931712 9472577713376581179432918061154304 -767976495225332352824873088050003968 1678446008885735538301303894573056 4759417147916768443252393769959424 -338017187599222662920332544223215616 3597797414462504441116268764856320 136557290543036456316988265857024 -487504963238415149335366917574098944 8044651758311144714524781178781696 7655010289406670790289089030520832 -705904018923557431158634496844103680 4587324229528215814471020152094720 4453420586914934195089148567617536 -871656569148146800380004074273112064 1831416097186427516032835743907840 8133166244661939282387717610012672 -29421427506459290224319140097687552 2715556699318630567807201899970560 5564984884808031599517259310039040 -156152925517565927065848214204710912 1025417598293940372975953492574208 2238085371754812870662483773227008 -314570527609287775931172856663113728 4608307682802394405947405877903360 278368444361749992278758738886656 -667629234701048215830025766657064960 7481241700002452570965108951351296 2036094023521593787698288542089216 -638170580798994666991846487624777728 5895461485836560432666412339691520 872171352043504274236598369910784 -38869889084378251457843850584784896 3767153564234764663409143302848512 1745096518677640446482186063839232 -413547249585312153990726558572085248 367864811308787870371715620012032 4621020952215001270130526184800256 -446840775628130970150106896795697152 1595678637111461114497210582564864 465145511321350836396240251387904 -426400484624361916563238158856093696 1864328236486049139496400212459520 2754129627381675711192822303424512 -273789064310668061726055098839203840 1395425641138236360127577396871168 6105924656210222483943248462086144 -776863262028931188737242507933384704 6807020676081554676485186094366720 9546136243589605192285112993054720 -172772143067574926853884198829162496 9168831304172341666511614354915328 4657531818311604319197879315988480 -74280636949640856650166838619013120 8577833248191153710238687394004992 1718387064096470663628327883898880 -389885903540448197030646014969643008 1062983776259801670179535617785856 7336511989236786595440155850440704 -57840259058821409336562800226467840 4307157132458229030576692205191168 3866107123030107224707797486665728 -300098173611180965310068828598697984 4610986783622257373047976791900160 9265648292091810779213089143259136 -765231316853206232671526441378119680 9747126830008169090070801163485184 7988946864352997832130042053787648 -371644801465913389640838641273012224 4497207489620919448902854472892416 5287111208374381549609860068278272 -510030162770217522214589804916506624 3895845886380798587767842167324672 6527056810695981733735686878527488 -731376890401871798481610488428888064 9261712290274396458754243987243008 4495683014668039202642986864214016 -950753683371962467415158778071351296 5466508677145639908112614037651456 9690828712188200348879115759124480 -280147337436550925392512910161346560 8402206823258214549915569192173568 4331163659018282790467127304257536 -301866874187769671892769388422496256 7608107087448988964615345192042496 3298454348023108635373236366868480 -291757470930937347548709208503353344 23996097303367352815913164341248 4014496771307994245764493422362624 -544223992864605364737263910141296640 6191285677920533257484327180042240 3863826223959857425034946208071680 -460549276360263927093634433281949696 4534799341499515841560136529215488 3379176036982014020309027649486848 -250130492881427225756929652131102720 7004229467028911317244442507739136 2715283602251103861945925179015168 -260577419067608976935768086898802688 7010213194819516705946585289195520 8031411765476887899576488108752896 -844913602789951669172884410285948928 3796161704757899996284778350379008 2488580987354986613375378082758656 -477793470047925961683025344013008896 3400580036312331160108705599455232 2725974446629264541051370967400448 -107798745515433878942474424184471552 4785465834292056849578080373571584 2804398459817562386358050947596288 -295902841086007175622353241262522368 6525258560192643467588796021735424 6519229637021117870361036504170496 -546530142361039646178638021221416960 7616247969802018705198516644347904 841266316344996768954441464283136 -257076169932045164377644003191947264 4292650167080664463232143663824896 5329322641357330934552587921260544 -986873389391841315778416930629615616 6168490207726079802593712816521216 7674632621540085175981410254585856 -56650037570666004506724844515098624 7382398968203763031499468793970688 6780792907598306054006626930655232 -463346889145603879897272159867764736 9284024095625752339981168430546944 7645843840150692313756284101853184 -201205162675017221212584230151782400 8470437516972931112636217078841344 6662389392018709365849433965592576 -254413481140602775729327612836708352 9113400095172516261026085644271616 732282973072460178003738975272960 -520798461681158445077840218004914176 349792694057835725011357353902080 8309055695116649902455635910328320 -548050098900669945277975063624155136 7537143709985407646878152242757632 5926667139226813940582214799458304 -554227806999797471583898967656628224 619247185677319525427979820728320 3664845272441646722949314611511296 -71066343853750991148453079243816960 8021809223053196902695185653170176 6941569054700136631873636380180480 -724698313424276220242428309404647424 7229961677542772712549982014537728 4998103572969877502417171004784640 -144714790001880726528953594845069312 6698485818561538478408740068392960 8860515467437164664679935986630656 -289874987121777402641583891330105344 6120100664934109023904934456721408 8451016511504629933350019531800576 -353060780747304595395193963597004800 7126133849070590285577874659344384 3790236723848352763338444326830080 -198782516371074053611732177122230272 2224139822196262400100750688518144 505578677231079386469526587572224 -384764384687362224898896774859587584 5599684610517826967192516043997184 4750547592249454864585403859468288 -419028467416833676195383777777680384 3632022452372279507809947220967424 6343545162160516725513941260697600 -925823348130753624218798859430658048 6823229703259594627353421667106816 9744630105565747405628068386045952 -446655439480824138819851385227444224 8470826858295109097593934230585344 5407055895776520486138963130580992 -991206071033894015753676455092944896 889089006141279261374814405787648 9522056575847421205457844909899776 -194155044501216499139927080305688576 4378478710922675403605264987848704 4050667703707843147688376971296768 -780981687629694812838983795449266176 3990634847771137454336751081357312 2721456403864727822151695000928256 -620641787644063546635742410849648640 8572489123133911477017244849930240 8815785071559468346555912020819968 -235339713450499862696953661077061632 3477824354477969174555240309981184 722550071422490673429474617327616 -233181419128963658896578811776729088 3866429016705187958814156894765056 9805407557954720324396097558544384 -111007900523276863612565095219986432 6992789447084811980398614754099200 9674145526793116128814190236270592 -556281650987736918026085074380783616 9750302559280467042409797291868160 2027281386494317579522642917982208 -505779950008791894984936184715673600 6735311526228129193966177596997632 460504103127810154329614141358080 -240859121059999932147555389545644032 58402360228298114025693680500736 2097874197999929700732240517922816 -728630740542678920876018571432427520 9505998796935161631845971897876480 6523956852206214977939168152256512 -579046797931454182796510248740847616 4881983375800743691277226280484864 9106786423226970174308444685729792 -241932088634944201383734648342839296 2042012032156744267333317393645568 7766171407713124232971354585956352 -245910261987011364737767387351220224 5948153378054587969224331017322496 6658755565961850100180131277438976 -688698936195349821509988485288689664 6116924904981693613634239093276672 5205036815054694012473271453220864 -8585259431245903719722313349857280 9560886772932773029620837288771584 1096313643277849834565484530368512 -924646137558881961294666792246968320 9702437302099464821171195723382784 2514713552731439494284882925846528 -679317082980750996056699137305870336 4816525070231946414966536337883136 8043317132361178638286787753017344 -983133775446083973348135667400441856 9085993124464640945868891735719936 42573017242231953411056850698240 -387183293473574109612622052530847744 4100082879419608912426837884272640 2955759570936683197725851896512512 -170692707245124808493517611064098816 7154384736489269122990853077336064 9098020657869266959846182785908736 -37451280689880578993901225121939456 6017640169959260158375164479799296 5596608086336641934601838372323328 -221501397977113339654204305786798080 9079378622083794968588054463250432 6269381888981917013179769842302976 -972106593888439782925725652557496320 9579518072503409677863167830523904 1930414860519931321668386032713728 -907144785821950764544955919747776512 6520690592585342841859876958765056 8171148909996003700370538766532608 -278785999596255818104760127681724416 6823676478990934509230569912532992 2360086180387244759902841791840256 -175184445414979536659598990496497664 6672557479622807615509492830044160 5371008034058175899296301662076928 -167239008996461925177922855131676672 9733105891954307653602560582877184 9387781044042836207882166530473984 -748949043933047127602381387160616960 326257131194719720182789238161408 5167032509920538192551159042932736 -502375287878354785475644846839431168 1981136507568482523941542297600000 9267823684726443259206109094739968 -221959669730509704397647832986681344 8876423054197185512612393023176704 2102980893221640898177373971677184 -170707577565183769225498384662528000 4523742576293904224811875454418944 1199191302499633653808300287852544 -286552094581747330705807403395317760 1913034294084245922644933763661824 9527724530279164571299060364869632 -884587173010010355557120387265331200 400229824684480212532408921096192 233183404026170357871080680456192 -53246798555800608748879328242040832 6369163255509199900895365864357888 5695648020095660841101678799224832 -240802264713940485227459497731031040 4573733784751584336000958582489088 9906637361532553390671543589142528 -537069473892667528298458346088824832 1049042334539767933493323619106816 4866537969088510309442456981078016 -510121646347651551112215841787084800 848496707821177606543378254659584 9530492187359042695926085232623616 -369485681038485969343318779139981312 7459316848917375942301758345183232 4157124411805428748345876009713664 -297473013337731196711689816983470080 3596187562351666150283097705283584 6903033906096162967737096833335296 -174760369514897103260679109836013568 7672821324544295854432956553625600 4076383316545762924465923374972928 -221254761470840949634848535946985472 4664956943413307393299508323418112 4172952781561065297928926460379136 -628961028280286964737821759804276736 8200919955717073124032772667604992 5828573701213904341930629392236544 -773967851819317971411053334197436416 2796538303766510420392035745792000 4280128409145767860755092276772864 -869225915369885464436916558109868032 3985645322488126456687222419619840 4529147551302044575288731344306176 -215242539682255711803941803033362432 6218126675218597448042513753440256 895071211199801363670460522299392 -340084538452331092216272718137393152 3410262267015560289096743782449152 2978296062087647875574917232590848 -183973403144402792281024673068613632 8340049609450370972665529635962880 9909352800358317560428081860050944 -956276501086612321032425455942107136 5082335460093455336678037705981952 4707324145467891001481036660998144 -965201835065843632494957570880962560 1614170213624897814761391945416704 3385914376067020604760311686234112 -611487978277988429637441857729331200 9978723785550965587236779334828032 5052268645966521058202071429283840 -412375619214642163984451304243068928 2520138064469830420510297026461696 7060929941983393946706717886644224 -314267211573282473850285804503433216 4552812372627945543246099494469632 8861203816179285431832906525835264 -337208716617729403419909162671276032 7331611224369150906063640816779264 6109838557713830644456811611029504 -813911660630573722807011034175373312 9511842542257797441631685923831808 265591291743732227703147428052992 -682248846254500401468455182026145792 346929790825407717537745750458368 41417857135658966230654584356864 -71470223489370679471768232081227776 9890823022261233827070008799264768 5281419207167970243715601501519872 -557721201247173487358162529918386176 3181282239108398495334977857650688 3292159123530793063258787149774848 -802371269107539318901219213340311552 9342037499870504429453376273514496 8860037815451890512468371392430080 -800744820494195541181378671688024064 5747280185648763380621920463486976 1065640471256921554937609021554688 -804276345629000223059698649330089984 5888122545357024193685082966327296 2446588015449436094940607017910272 -963779400063241072223431888746840064 2250826280011479017654953015508992 4091072598388750842343701061042176 -42593431646020305220587385981501440 8489980834809110131594424947310592 9516080529494261342024453062656000 -699386927271560922239887616321257472 6256444401992445927060512320782336 91293604227605521373393800134656 -462366531676362624677050146176892928 98294075434652034253915324153856 3487177192701158078637317172494336 -640864569067275886364450187479351296 2329330045891960899385349566889984 4450971757971309063991602479890432 -516907368683860467799229414345015296 3344654423202163578872363724308480 1184920354736333058028430535163904 -294120318507025644690513282964914176 1020525156561738196944993889812480 8359226486033365210928817866014720 -305375151640434427983114952966668288 3054702781909238099928989835460608 8862474466727507718113996985860096 -185149342111765713610076535887233024 533092055483329063860883593101312 2231163882716669750818182690504704 -308574078932575534868481013905883136 5363925237418150333265527745544192 6914216841254640851136265259581440 -408894213481019558698112460764741632 8561485386699035899983058142494720 6159114081041855774936079938879488 -379355957019666956357850759847477248 3458768227537430804304346046529536 6648947962008526148719100448210944 -140607448293440626310662771387138048 8392896751918495199967946555260928 9079126067261264938170598608076800 -543916995441411278579492950854598656 6235236721984165536601223832010752 4875221166468729765570369585938432 -286971158759841840632136370902532096 9031475907818922125459852193955840 5857135813557887192586989565116416 -764364195142315610544513699714957312 4583783380787850279364526352629760 1635403001177995672322806917365760 -980434147171242813463065148985966592 3695312205547150286621081140723712 5135276898454792106747558228918272 -28891720154231896114498769271128064 2175661738406341782446971704836096 2002302911297046528458026788061184 -366531825286009161046762361070813184 4633322933548191758809660745842688 9211373236347665885745548678397952 -837749602777855985759239579287683072 9937316902519032521998861202358272 6007905420149594368659836320612352 -919796464273586806843987724739805184 296332471674851067754983148486656 9118168898251095571380429182205952 -2299895630293034243929153917157376 9098706616503076276769170726584320 6049835623271093188591806706614272 -435961999319353472270760004741496832 9994804271138294407812467056967680 4244345585426899881561279571165184 -649404060314392737865608161319190528 8138747752008336346638276087513088 7205362516615892787154354865963008 -34997591011095815610055435533418496 1974558780736163136688719914860544 3033762216790781910575065797230592 -767014677813436526645123464923447296 5562802569049582375507709397041152 1024327271652115392080344738955264 -177689101461153790573488792485756928 2200950640377933318754659985260544 431887908951965428694615930699776 -570271154605636065680574979852206080 644835696773499399759716323164160 4822699468303524251981717943877632 -282935621462927433833894313031892992 4563397342097121330314050176811008 900375530506417914340169314467840 -245426443024420922935548368578936832 9543994362914131082060823162519552 3932208159835526623497268873920512 -909044008100163281502321032734703616 9036137822920730618744355290087424 638596542015457819461616610050048 -840061999865365123271674293250949120 8202604697420360636385124461576192 4284564149448415311469624789303296 -557314098592629211222804861928079360 8374305884378423253518046025744384 9671169317467787884428401634705408 -21054742708821735378317393514201088 1643132296047495244833446474809344 5042151485667518656078798273904640 -625979280556373173999770900788936704 7947911159745119603806169024430080 3436723862503511546456600886640640 -959705475471964666306839328130596864 5430727736923198447380095733596160 218451719116469340152644054810624 -448592395608239606874882993807163392 7863126414773439515362241586135040 1929013235226931304780916177502208 -428006674552553969353190184660762624 3383104966775658620353493858254848 7589076950691560679160388220092416 -35845969628242556964912402050056192 9247681466359676222631505876221952 4662652800375988262805464116363264 -73733563453661184888382256106700800 4981624440537268860552752675160064 4061458066239092053124558641692672 -853585601348266996222636594760253440 4472082167139682831780958053597184 3451745137195039608192322250997760 -767663206805490691519804530243928064 3867306448427566603899776933036032 2513472080625622559260398111948800 -179347432135524246552009534884282368 5218811875812922595807227325448192 4094198989104880466039824160129024 -934206789947364817860450935470292992 437699035715172040140957704781824 5217984969189742050133190698336256 -324291185322707314790633900479610880 2196643605984004419943779427942400 9283393210524697402705052562358272 -762209200365367330754009177071288320 3632323155999548557456933864341504 8185616496404129040899250776440832 -716951517591708254981113747186122752 1907392928487847064859679985238016 3424194988050875395585541341708288 -175375265612835878850954207986450432 6787253459991298422192977276305408 693150104376102831347835892400128 -910971197800407952157120014774697984 2069816717921026200329903587459072 3565356561235021285958863359574016 -228793762319751351614626205215490048 3049314147663029294897910062776320 3578081748904868750498633797861376 -252420188685949504960015561046097920 4828903399477024948406248213053440 9727563699164704488311610096484352 -689010535737595856634704004986699776 9106354870783788729201241322684416 8451193057656736134867890577866752 -345230490871571825192103028010778624 5150649986711169370753944057282560 7786549293691253822995750686031872 -995995134970420429781254366541381632 2341777868994369989735373307117568 6834720807117772028353144736972800 -117458385496892984484725574642696192 833983767974935595321723864481792 3363885825264469578409293599735808 -608589757877589654984483922428035072 9770459690769846564963488496615424 2731791319130497071886584590106624 -377117227582534296812017379300081664 7119406071276959944049490789400576 2134701884411693659043931281686528 -660719756138559616128869344510738432 3691908837051428185720543888015360 8849208586667913900578224562241536 -782169193392776885586034379601215488 1739321214151208853939061967028224 3812068933805989465307148479102976 -173947018232294143906073966666579968 1777281034671689259620429360791552 3064324491141598286996534913400832 -446938514466790433157026690778529792 6434701074278089388411101344956416 8151820639299689979210382880800768 -408343650289283120146492713884188672 7000410079387729373213977219170304 569288184415932278599984567287808 -211871637116929056234461158793281536 8436807158192001127841280680787968 2103127633047205986294576774643712 -189468765175819472902903189668364288 4353314296510472777780166957989888 9617987016862921076205829723521024 -671125091491767157525201497991675904 2338403167828542353743014713622528 8014890583032882527607551206359040 -321497767348295155812421874277679104 9525153608541074467107061838643200 6085622264737593983325299355418624 -385502894550672118901585425236754432 2186282292224401036924943226372096 4843866650264394267009279647023104 -819861920800207327178857788618047488 7517133401204702532812849115299840 9086758745198497756237783413817344 -921311415991247970341240244889714688 8066601891864496757461651275382784 8035876076412467548319331727179776 -517347714559509322452949464841715712 6370415772391200666247198639390720 776683981126728326034392606572544 -118808621970011297150624268627738624 2234751630754312443273167861972992 3067481091994369135614229848522752 -493491675543103932628956020387872768 6429975837838163794204966021758976 5546550317526767948031106612199424 -149684962299372194118253797523324928 7121840007016652700730566648004608 9107280115121852589648229714362368 -746188477982048043097300775871709184 8325375959206266981197586911723520 6105924587140965245389617011621888 -803769506716059613805468325892849664 8009500886568309517631607797710848 6702258293091594065576921678217216 -988984361312815104209733590513090560 8964896912071076397705068141346816 6745076010242666428923079416610816 -555217560703510610970850843386970112 9122804244436235632946322234933248 563659131573644979035519886295040 -387254974439308237078751261526851584 8047076924215539408174419690913792 7771037781035719923338911063998464 -153812527117802080992709462315761664 6219312791409801578308656001187840 8687517962122971110290219130159104 -866560548883603648767711909188206592 7491309724452435576060802307719168 30514368091581933550905518456832 -419420184482380875290831122826526720 4946326219555195941222142172987392 606403925511801221506403124903936 -71607614166622427512910312957280256 3594325047959897927553145607553024 2581041923251346983929808389406720 -963405249722772995434966138822328320 2236081132589579204262424523833344 5291030761971464999604356227530752 -234266492228629753458589982823284736 4613269303725751342408003611525120 5411033884640899157359621673320448 -383478105102796565535580070464192512 7611567505014239149272375893164032 5594325963782433226208858637074432 -918514907959052916824383939470688256 7339845539895775495135952090693632 6709841454496788466454753466908672 -594312506149024319680635296918011904 7941233345183395832032721983504384 5785856791716724787274632765898752 -738242337828363095745856717316947968 1219189755987531411550786925101056 746201589897586699301789223616512 -101515875532715306446294436177510400 7379485911397918800074845676634112 577994174406742875783548364652544 -865316637327898929681249637958156288 7543744005354276615840755703873536 6481942022531362266152873094021120 -627093560782233828344242944828506112 4695037129460304572990099973734400 2527678331614478424745869318291456 -585336775661620718491474723881353216 1261991569919300066781413368659968 3073348606210437820847869917134848 -368189018697016259869423747865772032 1552264065640032310211354705264640 8877958788843048815697506655535104 -846829876524305229022789716473282560 1487852807112879372645512146583552 3161885166851535883725553547608064 -988095351394922648868861416552005632 2641476338015594775591041315635200 6331459529677648141257145654968320 -696839431638096004615337646565097472 8894328081323285966448464576380928 8710426746119346404207303092862976 -326557128911245481213486225292263424 9457447398487864635675985670307840 8711315821270146185184056994430976 -573124912636653631122563961548963840 981326198788344843890037440380928 3106588315853906625467619016179712 -855504484997015316088747590798016512 1433688100985405061047840329957376 4397450222071297804831668360445952 -639639353524927062863315566870921216 7418819064459701800990112737132544 2390419441682510424749012076724224 -694309572355354425583697365764669440 8823074711871978343359309793984512 6181073380531579922740168022294528 -152498897355745538160145026837905408 3219412669701451330389120712179712 5359234576759950541859815929413632 -99872643215129944309879195878555648 6266144424068016760977214882709504 6402500173028142372381590388998144 -41193114572085352937916402220662784 83387443883210004539774980849664 12963070311072272728386298707968 -763332063139842684917208828969222144 7785983662575323090858088960360448 3639409517081263896682291322159104 -920033356432749044536263012272570368 1490271799049846220641066907860992 7771464000708213642028069985189888 -806907522552114809789349456020242432 8685062323618755148787899135164416 2030764060982357581893945991888896 -354607970918652926093389276553150464 1898964361372294301704848630874112 1835868167489567724672182137126912 -804311486749309045711894993807867904 9533285897586462708231000274501632 6756242993031258721414496351420416 -141537688046439557284238630745800704 6657948609036257242361569698906112 1104666293763327827966503036125184 -754626699134375642580664910516060160 4262273277786513625138880514621440 5042125911504156960073736345616384 -220852330560992654284922785103872000 8882665925349283064741922812723200 8198210726195463286255658775609344 -635005459847415868878316601429983232 2096882666534293101198684591226880 3871297747851776719236176199811072 -578431410024641368882863326372036608 6728508448927123219034902376742912 9144626522590831911688880898703360 -330535791151919558963567238712393728 5825742125591887641635471266676736 8016786495820587241719743494750208 -142892312867117175003625071860252672 6018272011424479744899887034007552 5275205904454524919624522520330240 -82091244594521857087894947119497216 8230531615721824671209503441551360 7437759002400994337111020348112896 -647403145148289208961421481833660416 72285914734477455426322029346816 1790026257974648179604956316172288 -337847720714440842841096440067915776 1958614906569038079133860210147328 4397970720770738978404161625784320 -407679036418011843059810271301206016 8190277822010942993813504249561088 6210529527823053583319786300899328 -477119652548422872127990367199952896 1154441527948880628029658390069248 9025116055621419782180576260259840 -484392988715240109458689480466628608 907514978666687888427458429452288 83853943633900190757485807665152 -457455577512414436259110146686320640 3333112490340052078307662276591616 1098847143268798109036232197537792 -32245542893210336557385972010975232 4542686615968888923827754038722560 2811809477656663725087529132621824 -211967861904443835755674061840056320 1720825529799256284490487973281792 728008646225896746784569308479488 -458972584465294407429244123300757504 2442862076399902579921408214695936 3179382697466359833093478094471168 -908616874187320627105388189842407424 4057587014502063055347011144384512 2270800499435613772481606126141440 -675564749490933355797610192768598016 1356615997059318846007863513448448 1705685697523049666358226437799936 -313636293931624136822455766033104896 3824143733377059574977150295474176 3139002583298457413944149725413376 -692069519178505297992918781956980736 8918261999336596519640537392742400 8484072762633613138804449101217792 -514924759553165464472724443653734400 8028582687421584280372894674976768 3769498618286831569672207285092352 -79388930344818698911886797864697856 7847963312506660901478252314361856 71845618479498981915151019540480 -19040055075784847567119934470225920 499112795119810712664278401286144 1668757974136661390373378307653632 -423664650961372445420662583531143168 3243891254461122692273232760799232 9622160126140667880924513027751936 -759099502214118259322390796933529600 2639160224518042317609732482793472 2365415166643639087199721416032256 -835434480915119412980658390096150528 7503777560216866751221639344553984 4593019930262418076370533573722112 -838768460252156839842573126557761536 1111892083154745268524132557914112 3602253228787403992588618465017856 -761075537560900931214493922294235136 1665767332121117835420119443963904 2517196122364879203383005600022528 -157756355560563855688798570142498816 7091845914999684083800204887719936 774204351103253328209997098647552 -772119573828434539718253047602741248 8628264539435224963112254018945024 4158651462551517467758457612402688 -746964436772743611420244737441923072 4146806769090465400427605466808320 4141943340034448061413435975401472 -638628098976828268395130501902368768 4780337998173115706350606275837952 6573633200623444871275090907496448 -522302903665984487969829538932719616 1102964806039796574825076632846336 8988958725476485147339462052675584 -337886331135385963830424479832473600 5692017976449705022342953909092352 4834464544158496348003286348988416 -582051348304085974085606209677688832 2327984184824298023974607750430720 2620302495394089788860316208070656 -996648500408399637392391557015928832 5314737114487224588711188404109312 9591580375083685451939865190989824 -418518082372657943075747865540165632 8627810636424704727707502317142016 7699658914009653641335173799739392 -825276808000854042221996270822621184 3679933460540684093054102481666048 759175946080134645069030283542528 -448786298819183643916821688215404544 3671664759573842058340749702856704 7408896561007934291915511271784448 -995483904179781693462301707476140032 7295955491630583321218735396618240 4517937503830073317102648391892992 -167919128837578604661462395395244032 2718782028006078851780121685131264 1008512422716496737722401709621248 -830952117509548415202060936673230848 6796049309556779255812905246916608 81119081641111142691363266494464 -393778319667590409314712845620871168 9002816839301207151577540157505536 8470399224797147536564512547143680 -31976030582436428074476501471330304 7736323418480346788506615179902976 4099508334225035592792778915971072 -768892827560380208261478746630914048 5406354591134085206562242580971520 8741517547557542359089517231603712 -544896261347673567510267507616251904 8229079018629762437570132487176192 4515291566570664621020040331788288 -948998651441504312775031469446791168 2217678480809524657421608590245888 826285716228538096180848505126912 -431715289748786292413138627089924096 8945094971299139058371577616793600 9119228040077636785823754875830272 -140536895235979322702639973128994816 4237265178895184612838983646314496 6529547003459047652378762817830912 -536847994312706171532345306888798208 9639692720678639437037720999821312 1588450426931616495160156137455616 -41979453359677469135956985906200576 5931486643932248490381098382000128 6652917905618705362393004098191360 -234878869203070575980411044136747008 9641095607844739296188756133937152 1536655701216754912123929877282816 -191124341019815264664612012499664896 7703361693579427491687433181855744 2019485581871419395281662506958848 -359435592980657361999633378906734592 9762733570345789312404835014803456 5896878467899623758576696281792512 -379081700128932552753011505244405760 9798014432841535156402930367594496 5623190629517580892745209032474624 -314215568155993279476748985040896000 7877305238782625200773808001122304 8417248996302468014379120883400704 -582892574388208429621653430719217664 5666179860902397319351758271545344 6791409847824095814225615852142592 -805375081549845656339854705366663168 9283340482606286951151543091462144 3595960262369708523425558299672576 -68720757830480621251650910645387264 5436948563016897013913054204657664 9314790860481670834896696879611904 -663415476674425666512498428257239040 9908385734739512025186916754259968 7145423132241925758139067136999424 -883552775675642023829005489890394112 9027525422712497230782228997341184 562266566206829393473525809938432 -879680054504321499394887911741587456 241058528455238273198801603788800 8134731761059055423608368790503424 -980540783695741112932003061463777280 7767072786460795545163934747066368 8832685020220423666972488236007424 -43159425966878691443779914837262336 3766138986852593159898899402457088 8527668074031188934303354730840064 -181685993371832946873054617028001792 4282285034125216180851232619888640 964555425707064445655135606013952 -493319558563558353519691285135360000 2398380698530751259116116513914880 5096449386225247850078168653234176 -877525236543699828249924293430870016 9133193252295303167280208846782464 7555446562678727914329532851552256 -921344468291051805231446584098553856 5665077612950920605530728937029632 8954607686432478631337599898222592 -567486136378301448883812588421382144 9751750712344962485300374697672704 79249938873023923511566520025088 -651510814879182708898269980744744960 5719281389486484791941558649749504 5054845723357561548111613395992576 -449665847321907299502712775174520832 7839732774734325542776106714660864 7558682448000939954067197589979136 -662122424264884416006902040177410048 18314978159335165810771056656384 8529993451610286118471887092711424 -338332031630581808571217989295144960 32572477224288484784149345861632 9642913880167338665345106594234368 -845494281114775683728138336657735680 7659769370942398146139286839230464 9827808852959163759460377904021504 -187622038961378384110755802901381120 8285652987442323843591833472991232 64911030745913493668955592589312 -996261357701568866996886378496655360 9426519344500526245937060362846208 8982694959024072604474932006486016 -518127527718644994479201660757344256 1412972120312981473126153659088896 2562633912521113207318987568840704 -249189310782205447111000704411500544 9736028455386201730729669849776128 1592213654246388985260369657200640 -909985114283593920096423197800398848 3213122041189073431403924044120064 8748452780041529823263451357642752 -718737507786386092097077462714810368 2238854521593630373827232999145472 9365031717884446440997047215587328 -538183371200859674142862490128613376 3924794007388337423333517093240832 4680405386432466888596743887257600 -712805781993823078465340996606492672 2834493545173317376136791394877440 515926522373657889624246013919232 -289990810249266292562423796685864960 6274263757213091642598907915010048 6376476876579531011191005369073664 -373334082589676427558943782690881536 920898249686608153195481109889024 3468692276848355773615546910638080 -448017767213430916742122592209469440 9173488888809805823894566136184832 7452940705108523792253738415030272 -64091856859840647239338296940167168 8065813575217010352341035578818560 7714328508618235643670842994327552 -636395227008146756882133665850589184 363880944672692364829155909435392 697497603084912650398845095641088 -957615153433834365105059183621832704 2258477790172530450127047758970880 5941569153275443568400142618853376 -547707695830470375717252634217807872 4170538985860470315644964562796544 8322655144564058782017650646056960 -396961929921310748758625325986873344 1179915274632723171590078224924672 1379704481734569755591590633537536 -805002032592642568319130795335745536 2768040680989195828567973264621568 1044541054661738169769046535307264 -536511463120867780145890264562532352 288085306102112170473525155463168 9390591131817130659236235492458496 -805600787231209315230327090716868608 9585365021503390587636786902597632 652031727384754669852444200009728 -562086306904458152757705077860335616 8424838950401989310699461926715392 9695032404576581617226397316546560 -176967829530338013458938035546619904 8257127292934938509896410495713280 7731454411056723885723299342188544 -920294666352569287135147180754468864 6869207473590114070952872878538752 1879005713635023811781164579946496 -780037820165483029133933434934132736 4361302211263316223447992977326080 8312771835845049307653439188107264 -438458420159419356784593466134888448 703940325716421659537153860829184 9058872377147440859201011837829120 -37935341489234941784814601856090112 6418297531443741739437296267034624 3303841491665564272212665912262656 -859074440671494716311559710732976128 6256693416948577053621900695044096 1238881046290474022005724663513088 -237046815090944422315731818150625280 712774881873234112236593493311488 3183169698331177685799772870410240 -278530597290218636463730155753308160 5428457102792627274661951577260032 2232797420837830155576213759852544 -764198621121403122390329717610774528 26712696648657817762694082592768 5739855785128160641387230820040704 -151828942360028896228353982341316608 1240445807426376549768191444779008 8792328469342378141707241363865600 -275832617247408134949302379653103616 1736987978607007275086565127225344 1886176665933364538922873019957248 -397272037797408603736113655182262272 7067857371757685343466902830186496 302631263661268878698276058038272 -159479046596535831092303585043546112 3954981099882569124378529767620608 1480532840048088654781818744078336 -359220499167991460975942073627705344 4545562367643229956978721635172352 1522400058020523601199567034384384 -563037482087572801813287293604069376 2640688876378697977450633386524672 8039442146260878769982717277765632 -208119593924267156278983880817508352 5772696098769959573434298494091264 7742319403769654687583391384076288 -149873020156962869629545601986199552 5207298163580840578119258393804800 5198087254286477844914600660697088 -92711670695451579295599707578957824 2886551979549495373023224101076992 8872410180989729668975999276023808 -469594347496106161744346577067048960 7494913675113492742780915330056192 6218825354917243668710992795140096 -20220881709472029420091521189806080 2052177566938725432087238546554880 9773428933925604068170402797453312 -160788579993128690647535435751882752 5052635214596786428399686311215104 664700367940345630555125718188032 -191208421177306720705271791903309824 1732407409602923977199351102439424 5440926667048701944528537034686464 -480569649624648367018605449001828352 3429295704147295653189097202122752 8530859841608893651065998453768192 -732648086199821803698537530692468736 6122023972417167843758520978636800 6346628468274589001335037495345152 -699402171314457931811254995980910592 9874241039016913805904947582074880 5153023603687142117129820041117696 -535869740234139491343781728111034368 7277364656374826872640593121509376 3002248041645510569767529302982656 -396205767452168158101279503468724224 1264228788787671245500616909258752 1907325755669568702013086206263296 -778509457893564417500480804491362304 6877466882847706639383142177177600 9735033772446213046569199523069952 -767142559080323190913768772570447872 311652368446686261054372287873024 1063982197116725270307647214583808 -619649917664446237100471608617730048 7730327311918783735598822300057600 2508971327278155965369981996105728 -92598042199146359883795931458437120 8685233480140567256677451424595968 60173958931859186529143013507072 -498712700323047842683467925699952640 2537491116386122967239375561162752 5351200289240394117483676037021696 -376822604511029364250027030860529664 6215003193432315077688418585542656 4081188465339265760166467250159616 -801183609378322814495089600483033088 6203272377088696245083233616658432 9637488623929170463224273041358848 -772424406065719822150955629757333504 5500275434034173045831291713355776 2983615481805972119201692501671936 -665785209336574626204044217703989248 8497559982020338500562268526215168 1709677517372997083511243877122048 -241065632324050911991590202451689472 7869039035382496823612772217520128 109514051657250169167973044977664 -966224419932653814934819659505991680 2911709311176487473300347885191168 2615333209899552415014736799727616 -972207138777873323933576748018434048 8777921303051548430212880450715648 5393047608114033757393495540105216 -651138070324109311696332139144413184 776493931020866723101798033260544 6661790615812784608213876147748864 -336305330178527728514810943910182912 9254765007499475894023561576185856 9872951137172711222131480233771008 -22813714888473517340882310799556608 6142618224111882120246016079822848 1572868391932915415342294167977984 -59135219027593913505000120614125568 7246541755767789216672576660570112 7136945671821856699859285542174720 -578250198452745918946104392506408960 7059331321937838584288951326998528 2593734553721997211632249490898944 -406935443361870260017357088823967744 9784947616715819072859975838597120 4003796513948331252387956691828736 -727564448566990764333700896629194752 4510365549914868669458695829061632 1736091975675780568778135264296960 -345766987464143794809478429177544704 2315346560265357309418178321842176 6749484174665687264401344331513856 -276491141938686399002144559184478208 2250652300495341406400021201420288 8942666549514407114064171867570176 -955450737117150241840628221926703104 958784929024958476055203595419648 2080564186191727267971945002434560 -703404764272382464885701403958312960 1911512368901070619916116886028288 3259358337758388640268414206607360 -803401766678019383259823008087277568 3901961866051345714979878345900032 9890395510035523961107089970954240 -438987435281705498831238511202402304 2646169835481971287488558025146368 3321090010376669812855041368784896 -796358228418018027217835478562635776 4514758032140213197179579520778240 8753333076390039715829436796370944 -924328334585681843736360894263721984 6148958448986997056568544817315840 8273465317716780412096078944403456 -521742916479441013919359010321989632 2616767461461007195523543593910272 55407770035632057088320752058368 -494880573192371217100784403111477248 6255713720857070004691552715145216 201784521427999142875849675505664 -294384177765750441969313782586933248 4670251080663355069731259495219200 6493997609195596470638448664903680 -174950186325340020448342529804337152 517427053353659627764873542238208 6315179802024583524411862868295680 -670317005273142029593067836393127936 3889724925390679397802863491022848 7024762858011291859489699695427584 -727072310827933195884608038943850496 5203552890352216292314992821141504 8606452701299752655765340363423744 -918630083176980963846418643990609920 3857241914693400187522366633410560 1052462808215874932072408074420224 -385709172418241352272073023788417024 8361844601816228301502551817191424 5845342930040224166947486240342016 -921121348293886706163502073373523968 6233318071841276423436526812135424 3672868521289845329130537414033408 -49303041728558946873913992777039872 8064823868939977785010838715760640 9930164788549333827321108205928448 -55238219491580652828797955897032704 8888442950658333523457553136091136 5205560018528621135719728368582656 -199656399257038098686584901985107968 5089611998658109986034923463507968 7069296294473161047791024495132672 -128436317630014301708149017374883840 2599529537773809226493111430021120 3167877940754473477820430208204800 -98520994056598127293458055249788928 62750655639878242347511491592192 7494398392569100664178871168401408 -177221367377780424089783003556872192 6302420007892893375600721991303168 574954355100625191559523026862080 -523709879474193980291869520942858240 7828553009520664889440314029244416 9671959701848384305958767470575616 -455552502550701660177492147733266432 6858051245486822555144091217166336 3227473604364173307927276860473344 -50408354642936677597648340457095168 9587907363451310916753708774588416 9621689688974294448618011619229696 -23251134942372270851503737758810112 6756883243567435156528491577475072 6657835350489737965997792360923136 -848535028595533196557945908521598976 4658724380246641312365525388492800 9008974562025999985061851444543488 -157412350713266589693912589925351424 6194573304116875947438204681977856 6432651553796411457665767739228160 -956991875063671687006619549327949824 2665378018152498249082058729062400 9744032396234801645938538631397376 -650578619876692513561406717516840960 8920993875621253060570838575611904 5964260747224759720962609834360832 -952781467031904869782795893262516224 7128646243501037406434631524286464 2249361307200871549415395094953984 -621336462202819929962312250167394304 7101319496760501690840740238721024 2889792657297980608103458868822016 -112569598492136188782353045694447616 3140230284330725841003893848276992 2349918616261295953434488080433152 -623534264056840341807422711302979584 7810051180277200433564782679818240 1604473803537395841090227598786560 -781013585945830221970112973255999488 9451964621905009904355311100100608 9116916320008859890165197937049600 -652016898226684409246100117650407424 6108845727590152173747441057660928 7734531693551538852487702593404928 -615591780450276261808529632248463360 9574013038997766569980101646090240 6145119994286520618837167591915520 -97945288813656414618240816636755968 7588695499618801433836889193840640 9854273150169188825119111677739008 -141420943416955933666540193291698176 2055580279922606166056724796014592 1906593847997822017779287315185664 -195703656408132714073165049217679360 8946114883056198634082934192078848 8444330731519400136031025919688704 -526644802431370459634709791292522496 7405528416096755308673958638780416 3187020668336928801364756379205632 -713511697780916848238133993512370176 6154450836601887087852934525878272 2807812096305375255588382303059968 -97069348702597729898915214762442752 6806853747066311516445717968191488 7195220560385835275997849298403328 -940724362512881657297732790298607616 8869308272986691874000393981657088 2022476033545452575462906306494464 -137976086578912773270981465419546624 3390938044245743352074866928910336 8653926285358083028157782940450816 -227218248638645904500668660575109120 1494172667874856560492125643341824 6399628708772387642744563644235776 -316161692641414277077552198733266944 736892048140843525254242990292992 5707205811683108095299727317270528 -267089687768782381954672952382324736 8818596226208738337091495225458688 4134362238653337319029855221710848 -305268861078438841554001989763858432 7624085990202532260286386176786432 7522047857315188686466878091034624 -76610629437372488233729315833905152 9696108312342044378178406162890752 9820944523501364224991496253734912 -938754948480011484487707252272136192 2931465460967681745762531965665280 6130473064911451906243027787579392 -481047347811835244755282265659932672 3406668724089311595900517513953280 6659550079703841118858318824079360 -666134510378064601005121443360407552 4972012690735651530964203823169536 3368749800769727460631368374943744 -905679340705877302280805643049762816 2579941007690441452361003745411072 9310335987102882640381203353436160 -618450834835745982504483004186886144 4172305756801029130421516382502912 7160027012351665338565777615224832 -302259934473345679287560525924270080 6418354546780742529730012713582592 8790621743940920795014193687298048 -571577495808583079840995417431998464 5619467428975063791397888549978112 1434814403420573766994402666872832 -616484897003530822115119257509429248 8053370888438953177965362648449024 6192382679036844571324712782659584 -927048625933532128700396712937652224 7994376799454213892442441885155328 6396359193271177103086000606806016 -609443672680493536804899206786449408 2671127169782010951618952752529408 2899383431968588362034294535749632 -735019555429826483281231161501679616 5016829604372153464397841360224256 2320307554908777676596277084684288 -431182948251968385426978538644307968 735635340537214976273446944636928 6786076560335260507523856186998784 -603749718218583272469341274841808896 524901424815194718209246815584256 1191066691839277067195768895438848 -125463919220443962466551464506425344 7495803877051287147985297072979968 5693040761799882482767236270391296 -706603485912793978892910584248926208 4139089117649383505043585952120832 8664018932263877296550343662895104 -466706468292238414980928087800152064 8136953807394049241211411271516160 1822674610386455979544531974488064 -447211851395793535826508350264180736 8278005405539718998896087746478080 7077968526907894717278815887818752 -133566244060587877400842338706653184 9571901937879268210205250583265280 3005683543611653143186388362985472 -766717692184316156131582778877673472 5169517781276051709948158386634752 2717114779875220750492460960972800 -443279529173261223720962668927909888 1961991606398717916521585189060608 7514912076398396908701659017773056 -963785343557122353995451011333881856 8834017335892778642510735025897472 5818428455370975945584304248061952 -683475621853314305160988738122153984 7034855099658775085460466532614144 5227394888766774535843519263670272 -282789853423594794523734887494582272 3535006495611694293982077706567680 9884996042877517257949968712335360 -821732026582862386599323504889298944 530981821741058147333578084581376 2436635493806740387342526227415040 -827770613101573990388683823575465984 8019242231021764028950050284503040 5676784683372199392086444904284160 -629020362349730973420546689509359616 9388185039076858200802196698693632 5725836785826130591885986115878912 -142978874888004506112054685855645696 7588315173728838772800958989598720 7681185101240855635286053774950400 -350337102754368751823003510321971200 9329738677720691518625526761652224 5937738817555038043309563860484096 -88228168341577379782087550173184000 818392097368906328588997634293760 2018778528438546847574517545435136 -792787937211194021899029378909601792 9988922327284423129847196010151936 457949756987128771916086414147584 -239476875854860356182917684796588032 1451746832502442727779177664086016 8998006371550867230124624905764864 -918919879622847023724199839916883968 6400747062650318293333110186573824 9568287854312222610887519378604032 -324648495828391492819722820621697024 6847458804840389711529389359890432 1322180068998774648225677067681792 -467053834784293728837910040512823296 5270175523412171014711675558297600 2809261517347796552874955859034112 -679961104014529597389833549729759232 5793979996260635854237134376402944 1748177238237066326320734523097088 -52250874846160249696880994195341312 3324142647444582992767129426591744 2616338470997181853521124249305088 -87721279893177348896745782880763904 3509715007085455208770337043906560 105308963913861970533240337858560 -608528821581435458423784589798408192 7106393074519923026423085248020480 2337483475834579950982757101862912 -694023701283576561328415847936425984 5438133088854970973659206325895168 8563380039217836505928734957633536 -790596196166959423183589821961469952 7338607811811720497017855949144064 9268956924099279349834874458472448 -389452318534936611911533212119072768 4423973276923817219693787763179520 3368420796681733190263431680229376 -366873006752355268758938942256971776 2502233134040690504171836116303872 8076419602700305900129013175681024 -789438778081565670266868201229910016 5600536682993645448613981430218752 3910669840892156575856442780680192 -678558162921226432637872464407298048 7340757453755331258669095821770752 9791117983727164637159895368466432 -966574704736567909265313470806491136 95003366833215471004274384699392 138194354716743719142330011222016 -517661023984343390102305488645390336 4688937874287121882142957021167616 4001689732532736423381061645369344 -349528826224315113302202981694832640 2891506925998366697114985364979712 9068571527346156998253737372811264 -939049811093468232749731323460976640 9940099397547434693772141003800576 1645664566449659174912387117481984 -885060245618081169448806770968363008 259949887758191499625734334316544 192755176390258035919744535625728 -655914525437397287901992348119203840 8911706586130686784733845273968640 6856196998975079950835043482468352 -370751993919995230404996950694821888 9428762912415769029484216705875968 676724496564676085214841738887168 -69437648313756047203916974741520384 1151884587544526059372519555596288 6345799813241084849392634690535424 -155932743457248950839178921364160512 8204979301440616066402058669916160 712177172542288208431875662807040 -522921833259085051264228886394699776 3228251074286011174256178005803008 5985661958897480726026010404847616 -185631858339632610220471881264267264 3879183065098852404409208036917248 2754017432657720409096224531021824 -2593010170668290961710158616461312 4232640008661786981033053115121664 79570765673127001744586821337088 -210941524949733115200410094984495104 1900672686284118819503899678867456 1365450186346962342750450689769472 -192321525804634346800378179693314048 3204249126839632305454235409973248 9856546108391224621506437052366848 -576906735734994434037985290336862208 7560517110236051454424851681378304 2349347343813326413493846367272960 -567740709818439810335123437351075840 5828207493347981339096683791777792 2474686503240048773300702821744640 -657671645723164830443103781656723456 8207224413610818846706507695783936 9111663353184327314597736903344128 -345803908702557394459637727214174208 9911662153445862656063905816641536 3599687857789215864991410940805120 -410098702309925700506555198293934080 6810489180342561428832761614958592 6653387903794241035274686923014144 -475133452051303990824161936809132032 9805747264525020914933798122029056 9233008508412353032933478137593856 -685367839434749698166368419551641600 2590163728232254823538543258763264 4157977491244204260363494343311360 -756725552805657346336797869106790400 1464868679115157752654779167801344 5753203240016130097944615746273280 -832502811032014824187502374076547072 6364327000126910852531509369241600 4481684367269494589122419506544640 -762217667283017343794140351708528640 4825143094905952658156744903491584 7096127881842138524217720927420416 -992825724886878079756104022483795968 2074510132504292238934730415800320 6878185179107298308953268509736960 -72865886453722580292740915593740288 9257090561606235406371821302317056 1425339037912706355590536661827584 -26543739063127344472535186131648512 8025467476567741975657800064303104 3066733293312969182262692570726400 -103559662796328307418356618348199936 9356122609772447483934846513840128 3368409762666987282765917500473344 -622059665457867016893425699851862016 2494106549291773450193582853980160 8743703628860628789204371076284416 -879969179420303044367580447228559360 3378902884659080716559792543367168 3742651830756773000839806373068800 -742592114637065083913827660045746176 3446175409967365784887389486841856 7344104780144481729948540270018560 -550887888148630758934541276473720832 3581720422643406656476960293650432 8793269309942599442238724089315328 -696279347995964288881853570306015232 6809531392619151260444493103497216 5784601396584990767747957474197504 -939584125779826588293237573630820352 7982532056842580086434557618814976 9917412242969075727104073640443904 -246890957443668601546348460534398976 1413603197359746842726976672759808 5203881295787977868805162041081856 -432184662099227772291173921713029120 7604524007512955919291716365975552 2633807940643372407386769778016256 -361178163458928248830349852291366912 6668875976036366623132502315761664 1564081803396570048838264263016448 -748309074639415559346942348909084672 4974771596450693567462115016441856 5302161617014344558161805564706816 -349896365520768946676279347429507072 71179046227772388288708434984960 9098365718733134581226109174546432 -119008838562599228210899524893278208 351896762989918750831947911528448 6543269063074244936094504273838080 -775331672903012700272630785223163904 5862199731134690336607082708467712 8995247964738685496862159715434496 -800240826737330692550241598218174464 2719781356076586371286124378193920 6363379184199881810235139098148864 -983710506621695153047017917318692864 1968276842228387851121119209717760 918107169059589686956962789457920 -228184564348790718191443698436276224 7313929552100297556346494999592960 1602475577229982425608156006580224 -811486239711007544895668326508789760 8351859991197078778831640761204736 214912667937005943428613865996288 -939885076193272805997231884721979392 9341500287435137318806575866970112 8975368570790739028357122384461824 -170256459419879500142929567425757184 1292380917815104595154920303230976 1996378165222977480650703977316352 -24423868991119175058426748525871104 5996322628475729548838986502373376 7985556906166480142448319300370432 -571667599515758031202968940553699328 1161321927996404442406578951290880 875336932991762807529235017629696 -821079984884599720820107812513251328 1123473132523113647130551676567552 2862530466140961130824171262050304 -684397361873508408897937942048145408 715257434640409165796511135563776 2700830067850171929519148696076288 -671069222582947820279818213809717248 9400976873034420137778759568719872 2965954476106781010752214296166400 -979438723550499064004488011431542784 3366136256391509444466114002157568 7958384207714960360381474576269312 -37814685750896524119250051402825728 2118702124746978323793959924531200 802676920142943237615239672365056 -291321589768251337210394171355955200 1995140731886418888026604192137216 5662395159553755526819137867218944 -290235796068436647718771744437174272 2412584226274657182412667336261632 979724018957713204242159083978752 -630413521675562553630690314024910848 9390694713314766656153991705001984 7319656500614214378773927832846336 -172898935836426234364936305590140928 5933438554332555582595506567643136 2284099733397175118111117984923648 -152109941410719779473455700502380544 8672835198145488317546425216925696 1981705463634011492285492683079680 -477336463303955445822971333897617408 115995215364497946546851993878528 7589462443585991849411240014118912 -259875359799091087347737879845535744 8172892974261493844644028179546112 7835462646318414811949518664237056 -210318068993112112075679087867199488 1148600092903858224786700213682176 7710910802681046109417298919948288 -871165909114940205421911743391596544 1480132745644810238924534551937024 6318218176825114827500015639855104 -235986152242045164176381371207385088 1789506961236287763249914731036672 5061267561450195362842200672043008 -450999202094932796029380054912860160 5492561360848632717229033412100096 7715904013677999151788666281525248 -736921594333647819361841841436622848 3460726783180320728851671731404800 639744473489278058962597395300352 -10274518314688906610055891468156928 4161817104860008611071483516551168 3712332707404223646993724628533248 -571843065720027626025186889650143232 5913663375871209479358104282857472 4134936350961896009067764960460800 -598875131993876680778475984761389056 7371734408756211436757342018863104 2302871756883143597486448236822528 -307322381954067751942825022840635392 2567513757513145054234619347468288 8266067103825623279870644072742912 -334866372323564623367051140973723648 299828382996850518716028087697408 7224252789125191623845051260469248 -460531547693963752356572361926901760 5483737979897495672813219357917184 1813900009176607875490031347957760 -715074120650195657217655657329590272 1660630948792703637113852863184896 1252640552228105013587549569941504 -302595848725578511137204396804276224 1578891180974370795967820083494912 9287731738295257546473449828909056 -467414972523538053120917890144403456 219443379563383956639404921978880 3407900405583019337867225148162048 -542914206896154590314063065149079552 843441943815107866432036856135680 4209442354808069248215736857395200 -733618016286842487735752522874224640 1112541699126041904439314459131904 4078224472071087527697540571987968 -289551382345472999106190289307435008 8489062475205719775777520481206272 5951816103224405725953103535013888 -555113929431109649060817426830065664 3707535593103481769549349561303040 251274580627391323563995139407872 -68594831042953661762867164908355584 7905956538323173130088404767211520 1753679355103834381794392913477632 -287889110041905026336910533044731904 274411866566808532378178046394368 863827147413924725991537656201216 -949233722227125089128978395225391104 3707212003221073038608999987019776 3326916016529956644842705510203392 -12333656202009040733042444718833664 977785284031133491029058791669760 1873280390810962781507934046126080 -543601317938946491806462074274447360 2643298125629301026343438589624320 6358500513541226845132227503718400 -553494803267097585941509577757425664 4160632011049814227232492424790016 3987641993779141087891039092473856 -489301567596602674362703648145801216 1353233970563776429643396508811264 3796447986456393387576385423278080 -61474817236602403386286286179401728 8287312626257407528921718604169216 7318742684787770121877166028226560 -197329266335291981166385411678797824 914551970512118593999748229758976 6776849489859040121967484378021888 -739483740995664049333952361982328832 7333840916804856268620313659441152 9293159315572478807349129923002368 -46797523680812064221170891986305024 6456594293848016836245158520422400 668841682989137763883548554559488 -139305407712099996488993789609771008 5402156738128275443480189055533056 9258208769636622339633844322304000 -706507872849805668043105220450844672 576984819284447632297689046056960 1288372706604433107093392409493504 -128601340196953967285612461776961536 7118432843900378010958351371862016 9472860553509838567761769591209984 -242216808483061501826930146868723712 1182074991174504347151831293493248 8379600967231197656368570102185984 -901491015027616044091648568587190272 6715862914200084517972765520691200 8446787647158781834819116826886144 -363050869335691824427797990934052864 2645081596491932831685615271542784 3456333076022804343897136228728832 -636637993805677924015203040305872896 3465084873860622951720587653808128 2275953317170508200586548638384128 -998551353463273462534105192135131136 5669926799658233296979819382177792 4288325953780479499879048481341440 -176007150761809346281334823106641920 2186537593262973262469024203145216 1751594023146819427033269449785344 -772042623353775132558022898490540032 4080629640731511987676235540987904 3456428968373970187012899313025024 -394551554758126301485029093749555200 3286751865872741740492026147766272 2541193857566755307587445817606144 -859804708588936825704482479578021888 6977987893739586316876613347704832 7701825911387180489865346448097280 -119535770689331319018821825257799680 3347351103529982318700292542038016 7039080487102654930095750032392192 -254757645474049606981464547253026816 1185286033019280029077487807889408 8243788270089014119640736854966272 -438824069996950797721961723588509696 4818658073613717948994045211574272 8720307841257706756521259316543488 -804091719811943398949972863717736448 1345295707429076042740108640649216 976012867101924678328064453640192 -879911831425629153145838465674379264 7539813635711659779143235014754304 3619520556595247920967901939499008 -111610759342134228316649319869448192 9389161657419883755508545397719040 5982775802540743360726243035054080 -458880566298869220843110503020494848 4121025484643472683937661324361728 285931514878427528774177251131392 -686987097789771922645764773165137920 5704385638549207757163508667514880 2987984744639537032518394718453760 -520243324740577368143909711834513408 5993387153637489634346251828854784 8238259082350304899607559286030336 -573652521203413303414954334963630080 6536220142210137436717987471032320 2375317904634501253445798963707904 -701220721695129596548261228041994240 7449757675081801640650773784166400 4080697510503185945293908732805120 -509396178530840405526161359772844032 2196182844262313633069854760108032 6588159186962136064400863155716096 -707660374288795789750009830918062080 86227100096155368881203559006208 1914216798287379175052904734130176 -659034834992148517339385927972159488 4989722853806739611483186300715008 5357991379214902253504669675421696 -929590361629201751514689857956872192 9662943116264619991456476704014336 2304392615191340478729989354684416 -811500833694207898193287802406305792 3071378382563838773374655825707008 3347798370455157875279644596371456 -908550740607633339913876239196094464 5991829045453195864486637423558656 1483754165303007676753079493984256 -780653595290235240427770714773258240 6909174491356255693901478815072256 4244029340792882295560766192877568 -523723699791646960061953571037380608 5074654576491877132171047797260288 5453151520633496302770691925606400 -295220429692923039425990364888039424 3988138487145471431554279172734976 1792999707270083011737694427414528 -871168168461625099424472848685596672 270502858843048753590771921190912 2955125697075083539881233651597312 -720269380309441348527353723990573056 4248805258940986476413337624117248 3095223408128084976858130680905728 -256513016771927471269261675614699520 4659969679257329216437207997349888 5254294299809259254889705264644096 -127621931524847034126852166938263552 9988203063899226005894867693076480 7190383824571149052222375079182336 -140199356821652235740120629876097024 7092544470373664738644837183520768 4556331561649544176536702710448128 -254877566042069920846411725455491072 5872450896380571723588275259047936 9486367137755767834780712745041920 -832277809551014101027803792272261120 6229037067467814373782305239990272 6802108900170262450245100101435392 -553815783863774127645655122611011584 3060418926587275289300516791648256 8619401922309778538449783064887296 -357367339495994453795696675494297600 6801800857399427691329955829907456 656079062810709682101565020700672 -682832378015422545002666919834157056 2738462158365410796052134871695360 979737903594487914049031980974080 -875852080479523270492524944713318400 6337628670152622079001097444261888 6682592802630252029837034622287872 -547110051769999409275872799440764928 8475595509421319254950075678326784 1280314802143810942654895502655488 -246049500723072077016304430142717952 4332600452640417597743366483738624 1541618281556690080360102035980288 -800565191684280789030973547862818816 9678277809543426841530740334657536 3205735222077005150500424937111552 -561188507261541043482154359234494464 8036348727159494714362106797359104 7338988986607446176440810746150912 -84997856927171073386050509307117568 6540398856034980443866649111560192 5655534000040770916570622744068096 -487618946747377332544307336314880000 5879293787141230747793099866505216 5967753080291218433804224996311040 -742578974594715103774536776082784256 9282536492918360085938054809780224 7027841678656241387339717061640192 -829432042274009856685761352425275392 1453793797109589991091405819215872 5437881860318187266283048896823296 -261868761594562084236259528615657472 1571191805994640268082237885382656 6667991946617785962147176362541056 -497059373555838357215238678246326272 7724122564123835518659025692524544 4097078897768319683512968811642880 -137770105763841637810313439221907456 5111086210322031140788293316116480 9253790360192599529998976221708288 -602483510842816411614267975732822016 7146234450311976951026365444915200 5807266076271348837059143573438464 -57530844792668686667199165138731008 963014132612271078677474957066240 8003148646738993155224442134069248 -633040054919252242959333974297542656 2085622035655303851416468255145984 4447663939532874719588491915689984 -911780178675500938226248758346121216 1305538839970537897451617999912960 8984022494479805832474718206164992 -100416239740323034844204108227805184 8728067410676492881809699250372608 4548569210677987352183663964979200 -76035759510735901398298775861067776 8325350322078473482310572100812800 4950687305100868896791991343382528 -934662244609956800513131162785284096 4306293524012392197047179655774208 5199594691524031527418365042753536 -505076599205840173849199300057235456 5093614568536743963330164052459520 3550391474497606841788501411758080 -555652814801369070348268327665664000 5337653320510279235723257544966144 898483736318669586315588803756032 -703157211479194247567449997122207744 7518042160537493782113615314157568 341831658231221642484056647008256 -329748959335709261181197768187707392 5677088615252104987520604957573120 9685433276090427071358761183477760 -574704736149779178227101873848975360 8197161269126831132713101008306176 9633262748343868814644129623441408 -230227222324127185692832783333851136 5553070132569945016013985585037312 8367688063152805916854479419867136 -934957768018204281938526105751257088 466896969985813720171409905287168 8133160832060553512282446419197952 -50952264620413737378187125146517504 8614522433425476859970041505906688 9069647892572924105218906902233088 -636006873737493086982331669451636736 547037806144828336427623788838912 1425678221004856926475779768844288 -107413348426613448130310254563950592 4195059193850349213709124522475520 748462811046655845979218589515776 -929844523011332429926595947598446592 314596946256865792985228705267712 1059660338588122244440244409597952 -819820416923054340177081403877359616 817929948001236752768573359783936 6025557964574837054310931966722048 -601986054974182343825243908803133440 1754859146823455903073653433040896 4381046627033955699344991877857280 -707857483028228035448392387800334336 1479124270108395183527022909456384 7561192286556856407490849004322816 -294157525132451973405137056080855040 6258859943050950644855496505294848 1321240177053694521331063441063936 -879482177314220971034373561253888000 5843901231876802622769692028174336 5587576902296441939407449884721152 -625562854967816740513561570130788352 1652813026989732475661564275326976 1742795278465343133658491220131840 -17496800853359349850803150465794048 6453914958192675684005576393621504 4597289888255496526375091255115776 -649937754691265844714192543284199424 1467086579222491020535102223417344 7084350330519250244105524842856448 -304365296747842835783332252302180352 7072889065271932048451613635903488 9241656485260445548002759227211776 -641745916398284721461023464184872960 3063665555833347877047973808439296 601359122540673819965997730234368 -898004245929228111566484350127046656 7765615208049159519389364384694272 9771262335701560520547336252817408 -48060897100793081011452747723046912 5237829707525265825072082380128256 500104205313195400958549359067136 -89034507257252655593218181265620992 8707747686741037664946760588460032 6109951209899089139645065459662848 -975920249512347362853369821788110848 6151757464357403513960158170447872 871947782269455493661577281798144 -777384094240576171174957503521751040 1252315798773756458973185137704960 7250148543237023680345246879711232 -439599605994544606115877957855608832 4961594664095571273983651242573824 7626627411123016155862298901086208 -605083840062273323598829587940769792 7235856491361433870658593148108800 4488963676625482014714070294331392 -263897646332833580212822780080553984 5417396840766373057062976574455808 888645850107033300622010797260800 -895625915538422705534029641747005440 8362436339730910055726755386228736 7489625859282613516348325843959808 -886670006677835893743711195097989120 8619344490953028206444686648279040 1011828937264359707675539108003840 -148954970574112058981209030466207744 6419629219231958935218847397969920 2439617556328494524654105898516480 -706654217343438640676043845795840000 1358570764186480176203308984172544 4978886727922451226350053530533888 -841437185928124957946627194009681920 7265287380759921833381703389806592 1813413920492672711054086434193408 -879818311018221266651092273936203776 547420015531216579176125901570048 6326808251041302600346118867910656 -651047315482170166308020834988457984 3705605426909253262917718528491520 6119421158148959734937385818914816 -588392244101509802687539233662435328 2078626601023235296615305744220160 7502260175758221659042988175654912 -82727004202120195206284335996993536 9412190200962023551186391942561792 9465690823091256115326745223102464 -219826434499692416534238816756563968 4725366795633764736092244392542208 2252401580915880933874335869829120 -722349504382081197969979367669891072 1707138461985533480596421539266560 2090185715844015867788437252734976 -134138315606601010390434915704373248 7629325238156509631480473317277696 5484004247485755471932370538463232 -512603911498179407888208860427583488 3293322919834775284698327990403072 2523373349535607979435245298515968 -610164811345231614806771581912612864 416876429529160272153925604343808 3860439636821106127709576496152576 -762291080676595859399532531656163328 7239367590634862641962059957272576 2042318911355640067265575262355456 -380551420416671991337674101915385856 2061494364955924562686192906141696 4431127317435696429995179500371968 -209238165881839335312436610987982848 8196156159981569694283411042074624 1894445124355702318812091633369088 -891839930909504430616963605178875904 3097340264141848346278093937180672 2819563640578890092403128746901504 -147621544185566421963301867801804800 6198606896096986759472880535207936 5961192833217478969871925224931328 -911860067552203846727831121184161792 2464494978274956947290092073910272 3442075949931846510926998414557184 -180363521589284577208173493187772416 9894992544126203793803174555418624 2005697353348487773249264783720448 -968134370320400714429146282701357056 9356480239748781703140557306462208 4389703712958812222688959729238016 -951861255023152877548709128485994496 3149206520767035638776068332060672 6846258497055262441697516116246528 -294963026437010184108517016706482176 5152651074402050087835960451530752 5123536917778998632754461989142528 -717465406901809899438395484406808576 5653185573492726398819939276292096 2182519029572899178195627561451520 -695052864989117944857059173486034944 8809671394457508267971132587507712 94455482595658543356288341901312 -672607595429196050413404239146516480 1186064846093129306331456638812160 3879079833604120275564535021043712 -214962220906667809742889177294307328 1868199939078305864125338892632064 3170622934205037505567489311899648 -256792774128580300925185706384424960 33415641726290570985633455538176 2485148942372131605828768167362560 -707719309025202227168729200701997056 2679269915712788252022305456128000 6593347975833760433361911355015168 -160930970437530077447084141162004480 5122228989726976735374071352524800 9094000899927138764501209720029184 -751113562080657992969514526084956160 8378328147596289158487825977442304 8885325068762533138993024180682752 -80047736283098341830564508355002368 4165245898619135972814719891275776 1961633637180918616763753436282880 -48056174600893092612094555070660608 1521577411188227501247372824936448 8338711340832218578250298759839744 -215248564307007187599703193052774400 361691212992393258621565510090752 6087155300713799078251137119289344 -861026024672333129420969111501930496 6391096716768180811058709532770304 5708320400016399233939960714231808 -625549665245330262842818177370423296 5428362914357815209834925460029440 6084389703658006341500620196806656 -648096423581677156690591324217278464 1152094113020406348609223462486016 1773574825746329701188019268091904 -118655953359640298269493892281794560 8890867625368892542404987839315968 5891532078662934833810681511280640 -30267837683948981792507328183926784 4624863049583664602499893163982848 1706793784857100479517869169704960 -45970775034117442153747013085167616 7678068774361454899790908194029568 8418788910908522331184868611850240 -340447478084804611370186635168710656 4133442792256291888929571059269632 1683045660211178071990130882641920 -294566453300549227098148693331673088 2608643041142161271913403417362432 2373406662704436817485147932721152 -857450007883131725761765204406829056 2194296346060311290781445495193600 6754699951526142324629221828198400 -989982546054080441651021336457248768 6061799152198057147542059182194688 4807298355863455909615678596841472 -69542681231540283161617134373568512 9800709994091382747614968931155968 5786659210970198134766234857635840 -198897264960825088579110724643586048 2540018925894452136381991878656000 9026490295376304999755674340556800 -390372761805617977702812843337842688 830842186254961735690721454718976 3676177953052498061766076718383104 -297399104765399101198767705735299072 1619897223499047823669966338523136 1919439206576566138717650513035264 -814432994760731589681501059743219712 4565249611467887578887399088848896 1391028366486617772372995220701184 -425521622221692436939080456818655232 7878635333165301814042538935320576 7693789611389921223428167104987136 -571985578695412671941279156277346304 1927639960993449754653071090122752 8814083843246706724352765194141696 -745460011043026926590002899699367936 9431860505372515204389268893990912 3989586480548572516452659990888448 -512699816848199457033913974720036864 4228114637515124205077310212145152 4808349372605100199285774952169472 -673872811532647401894183911250984960 1494466492872277829411083080695808 5428569167087091575263024035921920 -680471256272095817075411423881854976 1793873210734016798429222359007232 2554902552970916048004061004300288 -453943617132297537117356032872415232 5355207381373093736353373297311744 8790383964102483008861039883190272 -857215617677550065558356032894271488 5102603360271669141801697571504128 4305499693409944979552893849829376 -747316487429529159572730250467999744 5819916622998074176502160645160960 6610313620679079562829401369346048 -571724442061779865488563903148326912 7184654065428544995042464735690752 5471534195088260151042429769744384 -444434436559856283357995142138036224 5921014530803696537394731953422336 4112080565056137567550799219785728 -171413842074787523689297114237501440 4377110939882714148947870863065088 3367066305521487074711583651266560 -312800989261322576239692555279663104 3931000802997718427424207600091136 543187767927952225751829550465024 -15694224936019256752837715772309504 7639468800001760902336165430951936 1538417176171566876473181996056576 -516071137151808449475720743382679552 1903393798726237294935176191672320 7691976304968841777654513237229568 -231472331108812939084049413255987200 9967924777509083031671502457012224 2984154800363591332723184476618752 -109888827096804236245915966055120896 7907351085487575685046807893639168 5860098987152206339626315227856896 -994090109204163634693793611459330048 487259778523324915815088711008256 7763315720903797723531438628798464 -39848792307832929377958334086250496 1081626228065022770804479682936832 8500639240207913415784333425246208 -506937798092242533581865396299890688 5197922982499340394576636903686144 8332511479108092241005971995885568 -488463382965194854562712875759042560 6640249222173345784184890057555968 1584464467987120464157300416839680 -588613061346417583824590822810058752 1705250941402521103650484966653952 4188970443108935822113855118508032 -971525975064037993232313438594662400 4084279228816743875407889291018240 1663355863564401924023434958864384 -225065290691671556094260587637243904 582455232514395685861454816215040 7239119132889410557899162951614464 -874133717215620745294355718712852480 6434924442949188862577957056544768 4198037148533586617145183107547136 -937342226389368156426773995280400384 7342907941552295779636034823782400 8396675581600247683520571459502080 -560355294171752148140931558754222080 2082160710876469315035982230192128 5653105446222346472063118841217024 -847683792402276796169747467780227072 7019276059525445314804290114551808 2502479915497492973581103802613760 -784478133294748120006081485243154432 4116194210580754545405242720124928 5210923115396410561888371712458752 -506096535518149734872628515213148160 6629496794105951958214087528153088 7241298587264391615617639607435264 -163518629953322469561367062275686400 9579872359059680515426128622518272 9825767832140579220282129803902976 -385653930109054113700534001795596288 7238424591709398240807528079294464 8813683834778949482011377105108992 -518148263787177951215229456768565248 4382036939672246165546950713147392 5858938792074853902680974214299648 -354814154930382111919152440239194112 3683572505805004018608188950577152 950579280828226622508814070448128 -894785258703645715823998788897341440 3731389658675235895675384334647296 2609631926141131525727169514831872 -865241219149369451380297504642826240 7166228426039776301100639256051712 8301566405875891568256276347486208 -744729111310873553870855941629411328 2427403041409249671999949400702976 9057850104513973766217096241348608 -283982402809011716549239943930576896 2610683345088674716443972774920192 7822911712993523846669444004708352 -330579928258854824574600037353390080 6248376602513726521229623880056832 6088952826636037585991840915521536 -552163069126027079794625412864147456 9284342338923620397994791283982336 3201016638588689323003458520875008 -268453759434459304393092419402334208 9557557862747688748730161291067392 6387191539001703998578400107167744 -36525974913462308783374270879236096 8650398777857665818637976796659712 8004059653384967161107515906719744 -291640760191676131220328350245453824 1444213115507616211240475854635008 9631020627986621743361765347950592 -968337532359727752347204176601677824 6446370597023361010099403777638400 9591845079946519820634886196166656 -683819513524718408443595954568822784 8295302522807840393944150963126272 5049127116449541799199128500043776 -890042356893866256960038774383837184 9856631025035464449309235929415680 2995877972054709839506005527887872 -700157609188116896924194661357060096 1746566131962153974678744985501696 3442848283529332749511924901740544 -642828655005606830390790542545911808 3244296813668780181827154941575168 1143365534574367211074765436485632 -434014653069819492586661503188336640 2952900815536115076951711420514304 2801924461968886025216484513415168 -978370472185307960858860661866758144 7998866423538185260468999622230016 4826962718089586337389148333146112 -547698154519758735073773776049012736 5770190822461450040911608806375424 9180597648005240193389931213619200 -543903252419753166920546443658788864 6026485585207358842018468374511616 5866747023015089991100064004571136 -575440709559413965092582094998077440 2028171497839976882901092585701376 9534888019109274888039892885962752 -646602071601527751965298404479729664 945170250184563562323744271630336 2307285992471803999606498477998080 -553346426388438056409127666413731840 6493082097161820758143182873559040 1872864236579398585033197027852288 -143413339835137728920010845121937408 1606899459187410378624785048403968 4723270962297392911684710512459776 -93073879907490259680679101259055104 8466458654627497400768513276116992 6770088583841680842824973675397120 -814030784987590418210264761986187264 3587452271041998881569297552900096 4004412946440493073376993754480640 -437173945693285874484833935146614784 6382003172254655759922915052617728 5527769375305545835153104662691840 -99503091928770262296735971450814464 77135107546615375381508183293952 9754500294066437828261187246096384 -862751698880341871097202772929413120 8772585525705028129717312108363776 9647609139857887118333653333049344 -397727250623236840644168224776126464 6939953509054268247258751597281280 5303554986792958378162777678151680 -481346346810865284200920939191336960 6755424349631491307003208873803776 5344472219751677494223749729222656 -56247151967369318569812986590920704 6475917788984321873485761332903936 9794261958607863673663036191670272 -546189403007848302882579053985923072 671703001973263918812610116452352 3738974545519662226344629866856448 -535343005928726766013825198558543872 4632887805901880888295783149862912 6355998617437724740777170226380800 -194116556916191043106422747635384320 7904836347046986134801261266993152 4450522156193228655070226212192256 -412029340915686127258806111701041152 2055781010987896802347534916780032 3900928720512741173925673118466048 -226909243670493251954763637754691584 5682565331430758363259704134598656 6657831156715696888072237502955520 -333503458476631157452408380536651776 2221035749763154051217784611799040 6186705744509614097269307918516224 -499959562700830205940889611564744704 4611580876308521208873060814290944 6491139223716607141353238411870208 -807669761476280338598624489642131456 66636066341250987512094619860992 383374630809406707203186473566208 -425947471339860453637087278527414272 1098855503189173939524413127917568 2731443249587407500679299584753664 -190715690423903713286789137281581056 5318795930627793228677842988957696 4522105363220242004004848680304640 -880643139380714698524344721403281408 9446050994332998447812389038456832 5499415230368631627504166117572608 -586247604321130347888515823368667136 1438807045996795005025493467529216 9571839827659471172930092495011840 -849700550915769734274078160103407616 2910245810499169757198235761377280 393245338131634374100231424835584 -574543770843001826899458318789509120 5088761924846144282469576766128128 2206285182030842398034861976715264 -629052311116134448889926254927544320 8225703881525504860072400014802944 2049940490865483667591650409971712 -41038743893953214542526700421382144 5087213165230705769642567852359680 5415188298385133487953153013841920 -347357340335093288378208836128866304 3109527829461405170591114870128640 8733519473719219842163241039953920 -791255233206908716510526148448354304 7398697471221038166157130293313536 649900595289757197675803757772800 -241361327333545689836193533038428160 9404080732154927011873510450528256 5462066990002019897732023703306240 -308243900837554584227132184004132864 1443422414856644079791932279095296 7151375652246154983336034045001728 -717537849113257552750358097649729536 1558393636804056934597831050657792 513955500420088349226741666938880 -895184289168370544783363796566540288 4101367413156393248231654038700032 1259730376397934363163151271198720 -268136381244237129223543069750591488 8259462634601393344545103510765568 4208149083520301194329737004056576 -7519416019118651222893164752797696 1274153343106281809603754268295168 3109219191090748129791033194053632 -549205064567942911271823486381719552 4603023933368476820859180613107712 1249999210948635143555698665717760 -911644471660765577926103493704155136 7954589715754208221869572385406976 232674085189017223855556282810368 -107614217533969116808793315013033984 7787371981965103574327221001650176 9085601670915383116521795234037760 -412223199645989907471917933200932864 4218798504167004306686548555857920 8249688037599543176867182838546432 -212805121663977195807207457950793728 1462581998970153745827864464326656 4975369526803265718703478311747584 -640262782331084926334485946051854336 3194352418572853460397281716994048 4614383632648274579492214342156288 -534272242035120418043993762341847040 3594302476370933322164516031561728 6944450625838374246873984982319104 -886293005966213334401630037199552512 9284319811828623891203534008352768 718204152305370075649672166244352 -777256333659473727422074674233737216 8501715172548664740231849118269440 9700836622029824070876921218465792 -926097846858251847355240066593062912 4480481848956128609233121098858496 5751073437259292675451429545050112 -131965433287074928497201364422623232 9082946084234798186932035213328384 6471991855660249504846801212014592 -49647453723720847775569393381015552 1233120610392685087462059342299136 2046873233818256943715164006383616 -677804894678423276799772865679327232 1706249233278167659602911135006720 7529947530474197238659754242342912 -304775405729552245484601325419233280 3167113113670973087950604737708032 5420672507263920342359423231983616 -557150459731023543265229034198401024 5789221957024597779915953177362432 3621110113662205413648413057089536 -61794448178426708973914569811427328 9960487628295940954438470975094784 1923674191238633236724361451274240 -645255872603323112307635685414666240 5709035340646278956366989124173824 8848640364340721979456850633949184 -15875871721050588695644494926708736 8502342947616922685412207451176960 1054543946398850538290233590415360 -385524089452664797976484198739869696 2117938197168036215962466825273344 430472291563790368175383767941120 -819350726820058048289569963717427200 5070785776724642225212458480435200 4517078345516631015836617172582400 -51509876219435646639055934052106240 9465879312075892633618277854085120 4740961507203332891675968252411904 -254672618204363710351886544795598848 362251600325571668902392977424384 1292162547329840542242519438589952 -735327780442084912320678364534800384 6255107663815398853511634938232832 5085894074182660488243413379973120 -438220492872756805026346325457764352 1478836932296363022962230768435200 853640659023810695930699336122368 -828582097775446881866995323767881728 5303344331477665414600647839318016 1059049412341894301448626048598016 -719805089611568198714558319324823552 4777352977570931712328838097666048 2521054822958654700590010646659072 -945113045559699382102398332913582080 1410029576503382826672622411972608 6071712076902102548681694549901312 -20504873287290073885094277921374208 1310478203971107033810576422731776 7925792569787828339034802771460096 -926173629404528472262944386912878592 4798878593919931442812515189260288 5161982013414379688422723393945600 -458927735038233210392369809609195520 6861313248369221810415874670067712 8587195302949508253457033111535616 -54318136448635526167499336591605760 584054263923087958718258056527872 4849823948881048352726152732737536 -743066108891807117106903282083692544 384856469308308472881719208312832 7749291273663652535295820588646400 -131685809501435914473700303600353280 1222952086850158769794071585095680 5567015831028449904125448414035968 -309995266255929289644907129089294336 6883791172219201072681688682725376 5212520433731509317681851299528704 -729499565846011020696654602569777152 2898521924988390567760566037774336 3231833065824189952434863509340160 -17709472768247064484834670310064128 2498457541768814161065783232299008 7059399045861969977501605603311616 -345619245465138879880757931168235520 138604798547011490958086892421120 5209007174684622767859555073261568 -809012962732278882968307164470312960 9007703041049137681812564222148608 8427519113440218788587905690370048 -990394324433072510088946352364978176 3047239659379249296401533411262464 1939549110288642210891691622137856 -828622436789160880615540872854896640 6980954800594226019227980080873472 4934445516568270693648738304393216 -546861460014235810233461846860365824 5527938174003361990684432608002048 2118840954404446290096583755169792 -616729258517881008642214878043439104 269952360423141356397123002695680 297360726486021061811578223984640 -560483467885930034046737909117091840 2888320052200509641502558286512128 6015588848864265317770097898553344 -796507253671433999510028471098146816 5819074663509565169037200291004416 4450949840289985479750955674107904 -500093197920301431560613938098864128 9269446109002160865700903842217984 6965611756552281059827489144045568 -556500093720190644456008710531055616 4372842183850718185543021772144640 4624756967466903959576237582581760 -608719361912294094468382815445581824 5363604427484313108528213356707840 6585831371728346037108384307609600 -625139150030564457113549006012678144 1009248372209915202768365292617728 5889721989733052858072862665211904 -581473585836049547978939799215013888 1937559452713579137299960834293760 8884842280452905629655228018065408 -504823428486152845559073955989422080 4881470302180391706331795960102912 9456432402033532025539027122782208 -711276816582336925757947745547583488 620923879073995294743301665587200 7832478727927937455120623784165376 -847340573335825040692723968397803520 7795245187561017584148381421273088 4761655304678839558129306883325952 -791594076811031038751883497933111296 4178375600144541233386565830443008 7759316489788614064260040523513856 -703668888522999375202310319901769728 5326630708961817291469856832487424 5699881425166037709030866454315008 -479906272392595517550214280124563456 893572285834992088192326857392128 5092607707928747930178525534879744 -991419844476723137890533253870256128 3063832708922631875857371669463040 7405790997971073639532023422910464 -603434634500595456579009926592987136 5355139539229123365910055449788416 5050029383940329435374941127049216 -783517396710736961865227466516201472 4938747221243924007416661400354816 504899144422426423765126610944000 -207056326376052524136736555574231040 2048670039816010197820469017575424 9799530874749866816459400219197440 -369809858273755749373672974538768384 5635904962752754613499270422069248 7225950116807211974828461324763136 -852379703364086411882578957310099456 628097632843783950208465157226496 5858474037682074370708609657995264 -225997471894124028116158479387852800 7919406308335051345568361078587392 8734664529995720337958753009664000 -801811282996063603964267446516318208 3486595914724279254449871761965056 9099489509787738412493929147531264 -396219517068909310045869287621525504 9888270264869481548817462586245120 5126818368403714860653444417454080 -555403086857309836370028633849331712 8921831650492961449460771137257472 6914287001385251562498590364401664 -157462062196452351891861982630903808 8790360973441356720384943356641280 4550126273510180852060679386955776 -155404470565559538904742350578253824 4290470674316541319048725578907648 1919563721763658059913843804471296 -4161237442799582074221272317820928 3024024622463912465991681336934400 8887860636486593159255778897428480 -589022299901855298689054481760387072 5412080953205420206455265075134464 4437516857739901774135588561092608 -995225308909966894705477632800063488 8462335855532147163120506106806272 7232094840585937451648182869032960 -40754430583828477375622090971938816 5587418577350279931039305466642432 3403911755677890303699088056516608 -61735109664035307359792402689687552 5619443729150890460346603171479552 6161397918273856760908382725996544 -87842577876384939529866699738185728 3030786782645346382403762821005312 1978294082168405431709958792019968 -340795127364124681514272834692579328 9701038541242345688410638409269248 6675933347412986928320577110278144 -435633580642380455400509039248932864 833449020821963473821344529907712 629493738076998223453744600711168 -62586746105137370316813135821930496 5799247959090888218542235608678400 1645528418595586922958655261245440 -983112365392594719386284509565550592 134378112445087973707137817772032 905856569440387971028628019347456 -9969320794847900885830950356779008 3402791407792720515334082645721088 9897331767952933313083262233477120 -551203759797599050167450417844191232 5686235575324211687125430197813248 9881040085257687508120960726204416 -735430421356978566841699328814219264 2546244628901733564411773886398464 5323471289771334579566442193092608 -811677278285563481060115181757005824 5378782361594790333886778994327552 6606173461493201327605058514190336 -376783793813693519737112214219259904 5553733227919705175199058422136832 6862626050282415292609130318004224 -255773398930269843361093087739772928 6158636307784327621815003275853824 4701334148461110466371098991656960 -384307653670378046540226738757042176 2334183478576306531199480909266944 9409317890852918520998179888955392 -414059776660268249755271794503188480 2687220618978678336690880375685120 4103482278215331350632502317285376 -854133303898950180044118666655039488 6459186669701301319453716904935424 2058457743222327047181552312123392 -336750604815678240688210617445646336 8709180123875326624312418252095488 3446192048529207318354129699471360 -719208585574468230015100097736474624 3073596887428232764877810289344512 6993447929588372260874427299790848 -463497341044730526302726115326689280 3536925197957576134277389220839424 5556505381230143394166243636281344 -105506443021720283084435774165221376 5583144357962115536608332527697920 3038725378916686125957116929769472 -819236822131570873068632259518529536 850383588310400179467757425786880 5909559821811024976878993644978176 -237673534086599860966460316218032128 8840685726711561024261752736448512 1144463511973520403422613965111296 -597379613610024855038451292389244928 9512461797744285342446854814564352 4477775602090239785735087926018048 -811263410781129939405574098254823424 1031276341226496749627940177707008 1496498023931077899000990442455040 -271343944600204538010765087364612096 559053864939667887741316552982528 656883044789609324708425742942208 -208581173646950631034086329151389696 537233270782746716876757857730560 2773300807377222526152539098841088 -584969436641557977575866609214423040 1010186345321840739609275055210496 9825623011148166848721185878835200 -560267889324668734846323936932659200 7047396397376335269752291566026752 2506735795459873909401310390648832 -825146353774738856119245993079209984 4891399341968126891903457173700608 7367225659305124529923817765601280 -162369388183486928201652582614040576 6923445273353338081284542246682624 6814667613233758959383476116127744 -101992017803448454190201261468418048 7417845542335619715410086990970880 6859771574591408846815688499658752 -380743272067212952597610329913950208 8368953482283914366064419749756928 8026694135300324003492289094615040 -386053927310962356681699117624197120 963639958167257552333182494310400 8213523655349515474409793620279296 -917235426969922186410620491613077504 2284087673949006458120237213548544 4683899119510542803112948746158080 -963478396279260070082233261847740416 938779566227096200228928896368640 2171965875855557799287682957836288 -157842035649953588009584891208400896 4705425880961016923603803203174400 7173682282884018879736299311333376 -893894771079902286992126088132427776 8452439781254332109952678944047104 881324234381295546472726888710144 -374161460596010604418833444270768128 9405697350780600983027606471311360 1255029972674007059824002314797056 -498403019684999195906636782352990208 5481822059104383378661002048438272 1422985883351033393892759401660416 -246614333245435195198584821645312000 3794810790248995101731623301808128 3472910377351664365495544186929152 -322776857749606578326955383391780864 9663491069571435508737982408425472 5450456442868458604806110370070528 -90546205595905885808018153789194240 6725114373744850930200516837244928 7037431664333103478547384824233984 -91819438223829951536250161725440000 3625168849972075433467088589553664 3177654042173926877894921869590528 -661922580320066627098542038509944832 5518852869742161853098948663705600 8841762185582876239119069776707584 -442413974884050069516861134008745984 8306730701272985609206220657262592 3084312713422345575939219885391872 -247399929192558597275972749859225600 8984433343568383872093133064896512 5470258389745221379811279462465536 -116180918647803676277298730180280320 49074621840901589145339115339776 6302154454124295988518676393361408 -852198944335503834305768606952062976 821599138833565466348834397356032 1973365686165737105669970078990336 -349638133238697935401778173704142848 7232306924988761846729771889721344 9283552054292398672949756133638144 -779221311044652028620655527383269376 8365324886195956565413496140857344 9543256734079651005101331355533312 -150740107512435503052978957806731264 4348056265483258530858202000523264 6737034810360731759820995647504384 -498885744629539258033555117002719232 8117203949790120638712469906259968 6698430454937899315734898397937664 -34255023887623842553533835610423296 3977457132527096086728302577844224 4062438116990116610207649638645760 -822660321211592081527186489220268032 7885733535725970121930149845794816 3713658690895969943859966737645568 -351850409609878946107723984916185088 5923819354876559347962883317170176 6986781179721508395765679853142016 -363832813950773486911526719264391168 3433712790357984857618506160537600 6004826418320374060697202500567040 -818999219337222364062130068218970112 9759041438002915760795133419716608 9082248931924846875137079594975232 -861998835185655303601536071481950208 6201456266143755000228780806504448 3056085102255052143679944953692160 -11185337924044148052126249395421184 9346452840723283898371762944999424 3067298858412055393682562129854464 -893290282113740025949708953808011264 8287348916716927915144474376798208 8058572682361471492184183765204992 -457546867553216898588441915682717696 4403942524199278331077975708008448 704235038008748897999205775179776 -801160069714087193143983730187042816 5451716174569361242984510937628672 3497732716608132525594883527802880 -999450578676833781957303291250475008 6376245729774024033105907321667584 9684411508464644564360465550934016 -159033085859331272084379042553266176 4318190876322597477377909821800448 2817846057690344554706275827449856 -696990594942540712502745269119483904 4360009888630687613816605312548864 9381605399516210091512913247338496 -19665708728533181461287529567223808 6411675155679739804563000914870272 6542030742442781526848814618509312 -326393512434636574848807129929744384 1325879658705054615716456772403200 7399821262275643150346454873145344 -343135747975663336792643506616139776 1942392789852794228623222060875776 7987630037484396359971698290720768 -326731906255453370168372974139211776 6135146442257406720080782169210880 9362461456158821640703205420564480 -72643662653288587655851686726991872 3243130654884191250253491453558784 9745140726113355561000810921852928 -223038119366127597183103156030013440 1272987512801719171061249503920128 5102823961203849134030379840176128 -901823738161270918787208304092250112 8384132925312625678315689745580032 5544847689202389700614122391994368 -198930153169272389705687211467341824 7125480386275744730780698343899136 5496757537565792289196705314766848 -366951229906590992160327320425463808 4608373751960752606626850701049856 2859750198507061604070581277294592 -995372892802825898649281642016800768 3410597927107577044009688668045312 9362123301552506828377544340799488 -61555381783201379905771064382193664 690330485400468529643893175615488 5963212989415868282089881517162496 -424826585285064572956653187657367552 5985813204110847232525029074796544 5321755653343647363212836557815808 -344858976970506195936254949104549888 697736792092206368194858751885312 5275984880242180696245774919401472 -249275634496468149633944428537184256 6517218440999537860637661077700608 1123016084143067627461692597731328 -852494448423698237457097368432279552 1736331566888972322929727370166272 2273876414203127035443177934815232 -698424259363318749430376084201799680 5630033702910725374958430358339584 2231792173554051934196251678998528 -44903230324360734241606878533517312 9054422953310966996281455273836544 7596370020359657536965441310687232 -230995747639733136675585780193689600 2951333546072061689383034241941504 8699126770003449256298293351153664 -21726861670702853306779015426605056 1444625696140252192782735328149504 3426693355049418824757374133207040 -828815742990424521860271163895185408 6475049147015920826533444094787584 519637575928285027854503502675968 -409367493570436148077589190055821312 6395118448798870914921285227118592 6284775550163408410561675771510784 -856905216279093229830187899196276736 526595961787206576908510406115328 5886741793841461016029936591306752 -449496373842042660498762278576848896 7785259932191467499680014660534272 7609077408948136362200295962312704 -516933317215967818966393370418610176 5122880684192822031104777553707008 6228507255536245005963299414605824 -836990286145301159621076277281161216 1759594305909181172925031027572736 56582276530945875749213996843008 -350563868098364746344964972823445504 7377954998410229742985964133810176 5630316819321015176266321510793216 -589571373577578927746531972035379200 5133179910703719765095031949492224 4050118565306211961073188846174208 -56502320411729209216522084937629696 6236062804276871627383742713036800 2911387144276786467590035835191296 -819840975405129119460770416741580800 2628021936687047788970473399779328 1864860212847689349453142971908096 -284584357921246953912273319552352256 9227831935597879828810796468535296 2559478714732371989981345462878208 -794917507309931809960325676359745536 277650779038707595322068704428032 3264634824827024112557612398018560 -507585299626947110002760352381534208 6517308899226440935066980801576960 3653740777503459499441246609342464 -590219730663449532108307471924199424 6747867666550828794866174294753280 8533775256238731529005836701532160 -43276609034701412150321234170609664 7454471624201037132092793918849024 8209983242547575557353031424016384 -999903003696872964877068799712428032 4504076327518933984280519729217536 2369430370047385854868103404453888 -477459352473842938690978728982347776 9544799378035480987998054187532288 9883460662891169733635341186760704 -51458717390482274867260120725716992 4729502507739662309810449808359424 8017882655740161318627851305484288 -874413384856444527116046858255859712 9255817173999209366701999724167168 820638497435713777815367884734464 -478315992051974255777540488569028608 6613718404448483607505229345456128 3189279527005389796756182339158016 -852871414474966710022598626063155200 3733393021307001227131806736711680 3166403576485241558582081970241536 -866346087960716622609810965244411904 1188057268354697991104016978804736 3297830118926076182642128689561600 -388084879399550539067053848651628544 349150073332026438020522489937920 4846040242285712142985575836680192 -371371386791503038096873029032214528 1670419077376009046385962434691072 5828741689395100718461378780725248 -999449409513123904823949998126268416 831629689333413914592662400270336 3806596270210447090246740458078208 -913842279034801049582409585495375872 4447855974488735577407770595426304 3985371064901072644987770124632064 -403940930698447933997319385379766272 5562872333079120197955758468366336 8015746884619470302662168988876800 -673469302089726036508561164208177152 6666246316574457669613717490237440 7943769127824253349411117852524544 -139669172535656401027563028779892736 9605698924823119225643604031569920 4416298690166116019386691176366080 -251263872288756599076363336408891392 7905655498506850853034007992467456 5204400560242020481445436158115840 -473974251392734047523624135325384704 7539634484534441171515226397343744 8401666123159442991925572709384192 -922923276301666159276847118036238336 1410997507894219638718719038849024 3148902222017961087385055822610432 -953293023694861819634662030979366912 4254363500797435481879274093281280 9703569394766627328931220095500288 -61774945218973053473666242799730688 4058186483004769767673988554686464 7442366606940286836855266040872960 -999973181651492749840811263598264320 8465135466502373596554047650791424 8198946132292053781814368282869760 -3905277392643029366521823393480704 4490725415647674656007876444684288 9545490115281712859597939092226048 -646504132021281744212857068749586432 9178280922041602095022172627009536 7838542282136597182419022104231936 -200365362161537975824184389599756288 5450070547768127957047799367860224 5531324176303732387719212517294080 -336742862028315958183574540241600512 5559721573213124659150873618808832 5718234709314009697383939873701888 -362868038206909217011750998848307200 2830121324259323470801029126160384 6707847537130841523601932564824064 -297566738626737070384306863137095680 9354849007248621641306374569721856 2256326676095629071647233634467840 -976023756103629405674239185488183296 361131768209527415771790904918016 6588480101301961049242415747039232 -634403590455674685628209363184254976 8824642147102252677513366734897152 7637474802805115915796117779906560 -621035852231861144126018373180981248 8598960475501442328128092918251520 1150802008356991124463453902733312 -467050364408589966535164762792132608 2551180041672767318821192375205888 7509420031077383811114101098151936 -244866626059121091031951762182373376 2486101618346479862890073474203648 3658140050818928847439314412371968 -205961383638285162012479820513935360 4244697299242374963807365653069824 6981915666066116528918743266361344 -658680614239311486264078173103718400 7078796122775444499808432823468032 6860966871981048671128245153824768 -552334402314603072591339456376602624 8219585144877477903134281084960768 9982895984562716763548048789864448 -812070978970809236656739658087006208 5464372552969633459159513847300096 7710657448103332493446841379061760 -163896592491985505473077431689543680 9116355839031132579358688541671424 5004120789748553619636357596971008 -564142296453317208131148792096358400 4078683476069230598677917090185216 1001552824135055067469228586041344 -451609013475359668916049154481848320 6211371567142259481550468797169664 9286750253800085611948230616023040 -984215143538237279785586144944586752 4163385686795955375172776842231808 8751692963543767242266395335983104 -868484541640318964576557652548517888 9932809548422950329681771432509440 9933707285950647695749885194141696 -900570802248732409263787630158413824 1421045309421995549046113159872512 8457183512124820439530236626862080 -816937207008811271493706046821629952 3907766006726304572161271693049856 6343148378892981581741630387388416 -722636847029822595291624015700951040 5632319053717570052677831200079872 6811551799071068591328697300025344 -63379466054818195111825439757172736 6001124636556318510972825910640640 5910580508747976115883331238756352 -137095102235647412062081836602359808 8651350053820396874024692406550528 9974567919592119021995034589265920 -633498542129081188429010031706374144 2218003452233086597521591127506944 8417875075163399115646993656971264 -706846556967778203666282731221811200 6182049616587386111501675270242304 5227836101392577631277488313204736 -488010991835378042038776799074189312 4535003962434109538010473479274496 3714041908849515923275660220432384 -254223376022879968656388020563345408 2049885753521781650661060013719552 9449169883191755286412318637817856 -535535617444977525060284070559219712 8952427300268622640787528009908224 9708219744666512960689500147679232 -930723241107893869454755121997021184 6533146606789494242392050658967552 4304591394590871947022632224817152 -644153488575638810946007093244592128 5805093336208207850227215867314176 5769421364061283762204933248516096 -614333040744757505209221317761433600 1956476680927391726233847513219072 7866997047438305677130817526038528 -980878521776586967079781110967697408 9208904631181696912528892588195840 8414966413234543395058645788000256 -258687298281765266250356153101844480 9863016178171705334685859632381952 462274951226768821510740115456000 -220181631344803468716075919488319488 2299088770212293506072398580940800 3229193839824211491706726632128512 -476602006705472872348795819012390912 5732256330507416087957586801852416 4268639190388216171078227234652160 -868381219985126784350713936619765760 559209928758798660589301469806592 4231201348409491896100793400426496 -408901935103129508795342010720452608 2518939268655346784872829756112896 7494512056373933288807451605336064 -882386283088082752017748551492698112 8213121201518041913332721457823744 6322745182818875296112368666279936 -932175044568040214727702598696042496 7017523205505978148858250204807168 4014217765788634184398338791571456 -326327721447572385325985726638063616 1378242422510423180773720464556032 2277745883296053949998491320188928 -602031769772695812642222033780867072 3939267436231449869267057936171008 9865687804761901986168353908064256 -826978704077742958386656511315148800 1836390767654647937500459453906944 270033331942671237922060513574912 -340993760279923528335472369095147520 271875281118353198401466411253760 7701230647419953354754509980565504 -380740387500899835554468312352030720 1710710721219421516749999077064704 7132013559425130024087263501090816 -619905421496474081217947317059977216 4562546956671391539297552498163712 7907046363009724657567164006400000 -17213156313111685305423736248205312 8467513869799794102600815096102912 7974910405211063935645626371407872 -227762153401043864192431776212189184 6051631040018669181464988864217088 5396072403786728137763119372959744 -520774932286821226968375140529733632 9851927764584681755067545081085952 7658830129852545169635312092053504 -811101495907086586529206503271825408 4551998879366382703087468953993216 7606829228186691394100870114181120 -993105664884808805068973618633900032 4391463500863534631942115685302272 6604058281768088149299476880687104 -703872530865974363025461422162182144 9886494707227359006664951857152000 4171384238014260620292574563794944 -177778941556440652104869838883651584 1923546364915794584678681020465152 9326162439629565954499934704107520 -625157453001029631413793490697453568 4551993304051190433614914195030016 1784127270300624037520775019757568 -530710478321436631101608196036362240 1260411292351940592579876292132864 3804750196329983380065638252806144 -941545283296659610584757684995620864 7278357334546137343273266191532032 9997500124083225974913038844690432 -596528157820324800426552482961817600 9699275558817515179755590652002304 8556156965362344667257159777517568 -871201754580288596983365187328278528 7922786463543820997118652334473216 9177371792787229171928714688069632 -136188560862901932869368259538845696 997089844141834373041026683109376 2672234765922227531228272434085888 -79920348349765975665992675681632256 5032328296213479222588373016248320 8199878425682800297884801615003648 -920476356077977390110890683921334272 8746846713394007697176697380012032 3353253856748644531580906225270784 -793591670047550103414232002909437952 9131386132207289835773540744298496 968732085612649806441977082806272 -812856739924097374483038613413036032 7613143013126415375226038464282624 7915973789024628633507078130892800 -687081289117192238580063038750064640 9471684277081324216308932037050368 4015599386128639915542375213039616 -719214307016834296603613034767712256 906160614883520056535296430309376 6373173195211515316008206406254592 -442550957338369497324691327549440000 7108452832313578302791779845406720 3435777141079163359898357112766464 -407164546728349892286280549439373312 7607018131586878261243219089031168 865503667335354920188237544685568 -499549040890981507499929752926420992 1777175994854616457073909630500864 2085453040511149867828813615857664 -675683743036943986834967650474393600 5811041048368112893632871447658496 6637636651025557505152011630280704 -540557566891031485996805354868965376 2249362710264902045386576379248640 2138316505270739630449416856403968 -764057837203983144390271199367659520 1956943506105695721834058403020800 4499610569025356317429874829557760 -656928122292667611260531282687295488 5793198539772533237329591151886336 293626900239480588245278086135808 -221542548381872592706160174083080192 4776014300642054404734469445517312 9003078731931156245580024633098240 -664119099529547993258740296873672704 9730765447696028484673669911543808 2572306199055663932698354400624640 -441051732262065223348491330391113728 8318220973091663926781183787008000 368169324974663233527695026421760 -244975709641984564060340386780938240 4130140647434210985510070281830400 7765986030365485052558647723294720 -726083628597014228132286970166509568 7330634655176704784191315024805888 9006678356784483292938998464380928 -84924786736087685574653242178011136 4875050861905094546825185780039680 5547316561488151780380795645984768 -692180881733042749137214839212474368 5913920041584668673256544356270080 6448382985848781317689703818854400 -935159999360705499309745667489923072 5485646586122332550575042796191744 5746162407451977206198702782283776 -644716013290925151247204812870123520 9677633897868598654572670165712896 4067668733247310971938314637017088 -879277856846278280446537931920769024 3463086107208795293393417800777728 9997150643767080126279825754161152 -685439013106632440776033968987308032 2775267010725028376661829502369792 9686817733238608370073097891479552 -74997787979861011932216118474702848 904382872892648290064687920316416 7190134792748751684855712838582272 -498930370159885690605677720023072768 1001991803261526046986563127083008 5183483297398454091558007324278784 -569504506633854407037691183660793856 2111701741079654645263493928845312 5610585190632055395450348967559168 -915723271947944678297010770332876800 2565641420224950411192874905370624 9812123179603220891975237710643200 -830676153801169404136994696912175104 7013848534451217357519976818278400 1182021477314761238941369353895936 -206493056365225973318684621590757376 940763425861140267013203151552512 3926170086145680484311784971304960 -332021161410676175947388282891927552 8716531306435517269523401266954240 1315603550232362895013865691545600 -43896186537362781450037635049324544 3216524605272998883132552094154752 8789525487324387045299603688652800 -77525166474274465786233289615343616 6065394564806878836230145269825536 9907952677878723888918628581507072 -963357254717258269153812379760328704 3384675947977155564653039937650688 1363424020343167226832602934542336 -995292049769233202296767664149757952 3096229091350291122130833578655744 3403362773885239027858000324853760 -676662004785660949913859204128440320 9219415216066105181759520982958080 8607860141400035614422531403939840 -689174887079586902465894492569337856 5534975267202368891446625933721600 6434772009588592815987912075116544 -530778539855475538951572142669430784 252109914791993539004592608509952 1053263437617473327759377095983104 -203957712566739209777962459674443776 3879665864169918413037590284337152 1132764265784816268128888184373248 -847425156037284722626842982292127744 1117024968058316087851052750077952 7018019840063236840386097076764672 -170433218538586543891700512114868224 2795232744299922398199703234674688 5729645062674282455489054366498816 -508050470571377940237167406759280640 4683712844106558289175432866562048 1888405351406113735574521370378240 -172129454213794940410726022708723712 4118250910544605556808794276626432 2105948682714573794683303816593408 -885433844039380823799546102834790400 236527657167466262283784149794816 9402232400199845504584028407201792 -778332074470037426483386417099571200 1452876054628898051049482472128512 5503497784722513379144038296322048 -658871360831771800652369865992044544 8048408955901832730514366236983296 2929399188360935791477949789634560 -482370474869158808156992714173317120 1161396152919776737560576196083712 7998766957588091490651135144886272 -704299741914352107044365336378867712 3217773827885518005518666989305856 3898399276157315465047951284371456 -689153897364128068834194129682432000 5684965069019332772387795027099648 3495248148310841768022899075055616 -92729903125464243090914555157544960 6491858929145057048409233810259968 7618614939931208849919159199334400 -137316714311554991367795747349069824 4943395873332281873018635356733440 405531439216610525297777911529472 -505605470631890287478406109240229888 1899456594947739623185493990047744 5170202783545696377622539641290752 -875085741820014350801062555853783040 2530785864083289074949556885520384 7493855818131141894156602742669312 -788148751479501782901117365212151808 928206760612077121486473339600896 5899820454498542786070983856881664 -243774749004264417263476701325688832 1706989629851568083191704840044544 1297717281604206718184898984673280 -217188776268502149896993166128578560 6083782912877997278406997507571712 3531845960395652574837859793502208 -792676394005254673090075840206602240 2626646280054280858297768666464256 2931127670178123171557884058140672 -862033505662342715485672298342514688 9999581490996852889446316247089152 412906326257587493121359783919616 -819573986983319708127675541994078208 431287626880223841630617428033536 335714597871844588429943188226048 -476501340665059510964176364836487168 4535603926787262682815553001750528 8315663447848926440220822087925760 -195928877950772912678498764578619392 1255142729265253891577246669340672 5539030193473633606562625234141184 -303174123702545597433178836120371200 200363368561986595660948404436992 2761144429925361753782076282241024 -34230126898385568456688194822340608 4953242908458037778426117211815936 4511832687155548420987871442239488 -127703693445103530555622010069712896 9489265612971441473397007400828928 6075751161314293715744354522365952 -187781565667606555250025221903613952 2930265054881392727958851390799872 1443308201550159923501864184709120 -356913719397109644117749889656422400 9468192861989889219172486738870272 5249171081193132783372655885549568 -857762584127523682991105921465188352 7477277314841200538879990800842752 1653626581611527925840584072232960 -142104774090536448478372129880932352 7810616607237769862034380124323840 48348760759503313984433338449920 -914498640064850760467513001795125248 8454371640603475319121708555698176 3810726502093912297976557373227008 -802063420578126431713268284277129216 2244465520600393763804102516539392 6574018558431773129333014477668352 -931551034092502963961837534928961536 7019638059803477175507760095166464 8663604537204073764482678148562944 -787081124724066669756581751646322688 798053806881217411158849347387392 7853169380033916031466845824352256 -597043041932881274331452425843507200 5722978701199466850761340759310336 3254301530594499032509898349871104 -526484982667979018286230890400972800 4072851042642572878691072796000256 2312792379890896153014089977692160 -409516236501782816369731226459701248 9265061056512518013765238308995072 7976091547791722361074325225734144 -524352204425422124841376211061964800 2938252232843486120337885517316096 993009873290185434856734540693504 -198801443646359175180300104509685760 9688623755771526398623543302553600 6898253057383268232130930954731520 -957645874771432981034023797515091968 8498389656382437951713726292819968 3902190076299300123166336207552512 -393567910324590859106269688789729280 9640911656532219982381173776056320 164205504177463585991978731438080 -135019130498754261365770353702338560 2255986505959197834733565364928512 90381091715814812162668909035520 -186140711087678340693853482866704384 4713275566312828036703226465091584 8876056807942119270392001386774528 -632091118687701871879656805089935360 8783515440870644702309612588630016 934103669791552027294378032627712 -731341648076091390715955434137583616 7548792905402482972542036479049728 5742239129751811354399683404365824 -821885650585450544913374066239340544 4345656406622431850202855949467648 5699792899586140585896864039043072 -814680773135574268469606935953408000 6916992322567090888836706872590336 8761694874341427983310537692807168 -95184593126718803499853812514947072 8597385400275278425927570362990592 1159297157347613608659601451909120 -353291789827815830588620426002300928 4051384593850993332833739645911040 1547848780042658286259421812097024 -46477708412770147524750210561474560 2578400362398462806168518843695104 5222886440168012064249055300026368 -763508626427106379627046160488726528 5514747404557849550827197493673984 6455621011216026575883803807449088 -223024330644084947083792160483442688 2157203996227267768075514439270400 6617220532783665729945033810903040 -732751029222033218993752628430635008 6093405988389446220763850673750016 3223561867290637142472955252441088 -178266371670703650019484379197210624 9606198939585381886574569493364736 7062451059702360747118914732818432 -185195682900039121848386041623347200 1900750874802665341681091175514112 6560079426989353375650310631981056 -927300805685840064135973018135429120 6451633615474970449602980586979328 1242508294569807059882296918147072 -71135858863444782976204179712770048 7569387319811006054239824362078208 7006704906330761990204388565581824 -234320560768900330857837550601502720 8353672344306406293192527226863616 5286365868870550861502689142898688 -571598338152990153164378554379534336 8494689214717981095078578104565760 453420063085147729743915148902400 -644881529191419068811881547971952640 9812469400986612160428825852772352 6650551050656941477067185830494208 -339354668487922826028044748968689664 7337056416491054425992019442663424 7973979148015181265432531081101312 -511378654090521519433267065678462976 9998802614958571809310394533543936 7677702310137177289697531514585088 -81946572418439017607073214853283840 4917051539823379154024214625779712 7632986310008766567728807432683520 -872943647238528118930070606289305600 8323355624876020759624358056427520 2312152998179161694928232494661632 -481904989702312190838528913562402816 5114922242629881206878681992003584 3875711897504914506688449579319296 -325736697481270152863979927620288512 3510551718134597894010833129701376 1149178247034088695636774644350976 -240551567882562319000382172181823488 9541162974581214056314473879175168 6826693980014032431850913024442368 -118221415416983151570754868715978752 8357955952100780403173818137313280 8768739094819610625914316047515648 -910315399264361183471128397488324608 9670537589565794211515435134746624 3406597394281936201653251286761472 -770346114711587891549723081792552960 630795068432818104934429322379264 4803850954110537593046254594555904 -487654849418335945136034262850469888 2798049035273546322322270311153664 8380067643509545793267170489139200 -356089094375950729767379212204769280 6705073957785279979265109025357824 4964141930503455569260984387239936 -826781783499603631262927003049787392 3171535578750519039639250974801920 2156092137243752583756632297570304 -384663062297105947557417381642895360 8404841508533663664784668815785984 7244210403720011850438365008625664 -794115628967207991372482967077126144 5546800239696485443928583372275712 9134612285225211421716473668698112 -923491049825820899151792541209198592 6692174264068731013060605425745920 941534516055989647043204562812928 -735220680173983842380234135663804416 2066977176875506933253712711254016 3233171993006597584538489279479808 -340686553530184264982618128781410304 8395779680022596595941292818563072 4787031932475144055557243589885952 -675060056443848693355310949492326400 1316161377034397502185086153392128 3491941600902747148773128551792640 -397509060462641084422445804038389760 6567603499219611534153997266976768 3176295747079901469772828479848448 -273350272971469190559050205755342848 4362544044133477255218403982966784 4601569911689504786824446991138816 -714014066460879184430882198753640448 3251631941057297821809216495550464 2274463975210033087855972057088000 -873281555540617689011698872845598720 1193492069608058125392278110339072 553917232961923422478484935540736 -836355996428726740574295591596589056 5856663170519886960920465902665728 6786317921481652001833858185035776 -470518119901326822380739066991738880 8061279988393313532173498200358912 2116524269882363284259982033289216 -41552632899118977676050789304369152 7517627923534885991637335064707072 9587011028987644046656776297250816 -648294712685108956272956022594732032 8343298601177051999929366210412544 8787895894327935433897929378627584 -33994675184971986447056273624006656 6169224494744700302458036676460544 5666621936247813497377672675721216 -219839298044924564152324142730838016 7554544146287982690069852811427840 8186881055868034819510075821916160 -382110428270657931124407330010038272 1378646888819600448602960532865024 3369771273648010391601529982287872 -35757218030991006074264372264304640 7509328291058701935780102945112064 8181465289389652528129463765958656 -382978776800481179752345846929162240 6508841554846097527344057343279104 8913795278374029920791111846068224 -40687072784956739374729404142845952 6762454561148236268049652951023616 5531894516962827283058635149672448 -85286345118298472920580180053852160 241301409281298858898783205326848 6929649356479206777785769999204352 -713039548054844348528664312476073984 4689069651839495339677425082564608 7880356369984721623315049412034560 -689272044714062799400054366836621312 6151645912779649580799452476604416 994798085980297765963558838861824 -813437778476657351467112446054891520 9579230906562424476016186323107840 5207222736696386661056681013673984 -870845666143653443770339848343257088 8769665783663259786633266436505600 5877550553311040494082806767419392 -636920627753557065475826904016617472 3135349611955807686052033494777856 2430966105630849644059182556512256 -623213375470804593514661255552434176 9355084788423207802524914291834880 5099975085403325250587256537743360 -267512788041786578575510102630989824 8155537137740019033936016156131328 2949219199834662272397992813133824 -874256565595266784748122111767216128 110475032296567424642320273768448 2879919275881383584773021047455744 -460785595435005631301705660022915072 6498566626811608700586617317883904 6049347158292699520434561473314816 -516518508119355044108082284194693120 9765920531683370193159235643113472 2626663009208258934742321712857088 -777070929731722081513184004273078272 3331692699096515619079928785403904 5013554392283496654357211495006208 -523830270220640289531311673502072832 2362755990946072073924981035106304 7867372309125587243272996109942784 -217375881959078906422432923528462336 1590717777554144524203168498712576 1054452628504744937376986657980416 -928954627631803203298708491727798272 827068010860966673336710996164608 2534033351392364563973813257109504 -282790036835004258987478331689009152 1793891778890451853585816748032000 6966515823208173233810263695687680 -92381520055829792593835725200293888 5257966282955796878594775046946816 5126645500256522040098903753228288 -478171157164538665932631885291192320 4233357709321558674561251256827904 2695546418165630193837758723653632 -662072643926186117010286874711818240 2746600859422103453692295523598336 1610323481887155011028207139815424 -734365819029017383925603686418481152 3687698858580604377238688969523200 4121896558161740561881494177447936 -619162219798283522455474541816709120 2390015038337765824492853346172928 2947922826223122431410229921972224 -412188978647671942883316770900279296 1075706747296583691953509641486336 1453141189325334619735189574647808 -917475892555459173226392702119051264 8210912161838143539692024734154752 6840328576267699679681277218258944 -813510926108212111440922036028833792 912685099632503370437710009335808 1261160486388344251641531522351104 -232901663617510267841435863865098240 2439116695712878680868193610760192 6334056871432450242005391418327040 -187131204566916630786463942299353088 4667664097492779703829868364955648 8311968253019634983566317631569920 -94240904324033085487869512900411392 2757781349216863288973522966151168 3380617851761074772395169503248384 -32615418062012183382608388456185856 6234701406859073855699133982048256 1664727544392342315177707546083328 -784607368821693638409485551816146944 7930056861873579129510497466974208 6555918331061605345390186807164928 -338858561054396731190744401527701504 3910781498324109488252653121044480 8228582844586218504048276368523264 -705883548921984346573933878941057024 4014407594872869395779099824226304 4635870307414475379105566770069504 -11441649616978050915210195929923584 990052529921202521878880575291392 5218165405211154482344726242525184 -150679941351889581307419356838232064 9949761303974883126875361791442944 1588911613830295553714730930536448 -412608364558073002549281019876343808 8435642311879305572800233339879424 1641465384105690370953195882020864 -317490096877813735105084889011060736 138306438929885267016657219354624 6317388083390853116800338619269120 -178391615728056150374761547335467008 7477838904135460499011804365586432 6226127241967019982441447119912960 -347808832203235606300164259426861056 2589328280504426370227016564736000 896891956513820350506474248601600 -877785853463447107016568686090649600 4599085593645742624379462746112000 7776022624403268615578777253052416 -645536324644988565907414103290281984 6257036164482417397701727343345664 8312465943690434173749606481920000 -720872599051098632927489561613828096 3432279809826869802263039407292416 4769373455022780603827267794108416 -414307513169801863589570496572686336 6654954001977325935410840925634560 8689030058304892539422932033601536 -817175832205689909003804597060370432 6199691549122456714117810667651072 4300358945884658575420546648899584 -370330803661293636269249701963890688 9718025277834314177904941553680384 9449782990734319159425443192373248 -327082361120351992239360889623412736 6062122989281584061616578893971456 131306758320783231418498526740480 -974760909762748544109213419701272576 587658134753447730269490671255552 8676710950268440442714454252060672 -546611615829339730224112838392152064 267646141943686211865799741669376 1509314408222779125272316882190336 -330977323826391266191234383506046976 4380479004963198547266710567649280 7773415487379744258153846793043968 -531900055269910974424472016218226688 5071425795477752616562529474183168 3999235957606268021698922901667840 -301341748864409584280715536134832128 3540344227128097544354135527129088 6773766831547782278701187738894336 -250373716827478196862838360860786688 1806512958281474703744112615489536 8238034806465623667790633616015360 -319416672398460708170063841704542208 6873181855123036945546900722941952 5062406709274863656054339338764288 -540023551391723877980634130608553984 1310285691635263159567400061370368 7573418420329229220854614091366400 -412933403794915365201628329802727424 2692066830739296371776389205983232 8910734315118267195048303328755712 -385297453074475613687078660580835328 9744772917132867347120802930622464 5785261034951460478757019649572864 -188790666984635162748719525131190272 7999910856397477598444310824484864 931989022701828030955088238346240 -186149175550257087922084019987021824 9329206099654404744033672636661760 4854061596876046307875670456270848 -813264189921148239291484580599562240 5007396798539981297394149863981056 7653449068137166157576373199175680 -32347489732963268132648398681538560 8290024483775219143442913287995392 9989418396921976997421804712624128 -898005752005286174281189793537720320 6959195283514652775229713777950720 862534011212260881335158709420032 -37916382168926823857594067566198784 6877361901338452864330043964260352 5856074774421068242555944101216256 -958377050840444776720091316190445568 8152686568784579295033989668012032 7802211403757340949518313989341184 -902720473841284655977194898419875840 503408310409985482559752599764992 8572374017875907422874046306451456 -531000652935088003622964719473655808 3206134039345118981993442823897088 1146147776296827637539641518718976 -894289273030971231681098207411044352 4934119677768480013264517530124288 4527581262777446706307176912125952 -427685625100364853956890719628034048 9807391601825448465589579854905344 4155121772150561100130315524898816 -761226581094369694358396536054874112 9079333621700996757301479549698048 4457535732200544224025017057280000 -577626560320042656918921847783817216 9363751322666294855847570623692800 6444176709958163488891952252846080 -35870559760279671516886526085562368 122493941713435616135785169813504 7122387538198892087706509207666688 -256140277126997159093447320334761984 2870961031920365807143992850120704 2726252385273645604471497534996480 -203663685574523583971633196148195328 9289706984702982884539634827657216 2973942103821152967689662304878592 -693860204882879531759545612406620160 6674058762811612987461038914928640 569225834704044208739689863053312 -52585633590044654261163084851707904 9770643929120837943962201168543744 5657670165658332169824503647436800 -869094309775432970663132522893803520 8321476780483757761356959016026112 4959930837611273675782146731540480 -785023226845844672009662747176337408 779517523128279424010149649448960 7304738772083595251169869749551104 -370730349234697208875747409011933184 7526695657445371392306740474150912 9943343154648602345320195588882432 -336149196712468119375851289046941696 8976420100249094261928337808031744 2435176461732281196018852167680000 -750378125715085777178395115538874368 2493393080795183191673624089067520 1806222191113857123329545915596800 -341895008828356172347546134573481984 2871978435349274378933950952243200 4378054867544640188637406386192384 -835754389268869845308493774991654912 4457547774782448084362504720875520 7339239023944588778811607186669568 -6610669585031305955278138776748032 8728735154209185747097648344596480 5790632867922021250954075641479168 -128950218750278095763221737459679232 9229769215257432283696834858188800 6588734969454520662802980556242944 -92704271880715993391756422007488512 1801347807873791920505088993394688 568927752968151139877135254028288 -923281657670272460368518405957877760 4061695766246831219129733393416192 3313725963956514723172396835012608 -702140538671114906398464890367901696 3357998177114128554450218137944064 957678975440863064714231624499200 -720576543813867892654066324757020672 3794757885802925780762900287193088 9464799434610431362892900794892288 -598352224151892348428199768788828160 3710332333533003036105804603195392 9629973037548151020396732722708480 -44601412389326920221284006533005312 5831083733163742446810254396096512 9299954637710170107760619848466432 -167846853782431131538472037999706112 9034233399708495166695996018130944 9231049561325002130169279329337344 -237562237627567379821744068975656960 8628686846267325386316814435221504 4463340617375278915949949098131456 -269256628279366952867966434618114048 6043295847768892239305875814088704 9765024054424573476493123534192640 -3304036285473516126917603893444608 8294002709079275769124898973155328 9674949453516608885302716421636096 -503155443020241543492027298355347456 2511057833568548954865330250842112 7545741930809367613696400068444160 -68667080487901400323681720784125952 9244721691440825325740631689003008 1273569664259652459434987871010816 -838566497431686686647605085605986304 5066180052629360643789906388189184 2400512849954345903999256904073216 -506422850034316534117446872140349440 7652072201834293841152974591623168 697184856875739308068806561103872 -617028809436079470525579969632927744 3656875363977945361629555640500224 8572847479139555520838904540299264 -635505499859985358876272785356750848 5727767208378715435159305137946624 7898846865809329261428281949814784 -464806771695588460216718687788335104 3936067511284531000477169710268416 1123881352011290428912945965563904 -546904167105580454318705953885650944 2478965123610026249548501121761280 1285951955495705450575578068418560 -945541781089380138911768992137871360 5234626153724009549388372858896384 5763550247014384370233272816369664 -61604172839460130626892539357036544 1468668681978457121013383728988160 1981078259590284959651555694346240 -521069894886005536986737338023411712 9666806205630558563828078431174656 9271805271765041879388889697746944 -292263228550797393755132867832184832 964421310249373273827615971475456 729760597688393489317189866487808 -657731154153864108172492683339628544 2661195030722917273242120088453120 8946921147685009537210076178153472 -823400109884365510834741880740118528 446127271298285071852850672304128 2099104324477239234881445536202752 -671568275928408732516371521498775552 1799997011584725714952221364322304 4437704175443573840219864140087296 -235052089860693000115033259416485888 5064403380565879440179660618465280 5754387177963411016025091084386304 -52843074571255196663698552489246720 5151739731567024007466981154357248 3833739810138238750315835776040960 -758755469301549762369127456310296576 2819214728234862938480497716625408 2833783211284816131972610832465920 -882893153596433654049263782058786816 4222060920016740962295624998322176 9362663295540645214549695862407168 -577565301521449935983419733261156352 5142812873524238149776896786694144 7604454634927875616296026597490688 -613799624245006106515105843706331136 3908733066240286977573767444692992 6129296816110642294886050184560640 -430426420035074624955664589524041728 6932934052222821757051933579804672 2323660909417813429124786368282624 -475438610160907486789777997615333376 8757653043713192603508619536760832 3195397311945865168064602099941376 -95087837890224179595274122759766016 5782582192094151888238195744178176 3922912215677086238180653299400704 -469929028944195781207839456517685248 6904064512626503082163470476509184 2487439374247922466325689888931840 -673456432719542786346511914281992192 6737156508658325342705744892395520 2384772499166719528168887609720832 -633285295910028614888219660567707648 1681777298417692193670624102580224 1626636660139148846386344611545088 -596984545939749838383763678413455360 3531278075861713073985459622772736 3645914386717512404353571750936576 -503623041847661360444719211214798848 5634624972792915223693092322279424 2730791585801677933498035708362752 -397822257481713890207714269657563136 6564678295425877988130657497251840 6467982244437958653382862483488768 -515935508957548244737530782959009792 2166684514925751895107124361953280 8645852172169222683164736525172736 -461508922905976258821906166722854912 3097248022167894602794315104124928 6499110361769093423525556710801408 -746558735763582535545577517688553472 2573387160262368136332024175656960 9649428385410915071700875132010496 -580615951150527506285944130347466752 1275352037567191123548762999357440 5052701567741205705816679074758656 -349064875198797900337286427157987328 4961285976574333647428042052599808 1226867300825661459761755487993856 -687755880282442775449609736204320768 9191239605183711454193986087944192 5068151670182749727883774698455040 -471617800623971694681514530287124480 4304352991524909444731690278715392 3036577198344923446618599100252160 -70635543428825182677073052164947968 5234796971004358594338437250154496 7770374802301598395601433565069312 -723730731629637724767768697834045440 2266989413406987910869959871299584 9925167067507968320561650522390528 -860232190454157637731206144391643136 7174571892274406026734592147324928 1359110058168808808616661050458112 -284463150263740293664737069709131776 4890069150888489452906739444744192 467749530603053068789012716584960 -541255266487133516082470277758320640 4680556036046012842593082062929920 2230403078984376716900000950386688 -532984824882255543259490146142126080 8191887385479107720750972155199488 9206002144824469959838449006542848 -812183857421690846781011836555755520 7961168302253729703260757749137408 8496265737502141862465397334212608 -952791860218967027837205189698256896 3985895307622274602545147455471616 9275334328177033302206400648183808 -388751035997109926743821571426615296 2267715045757733724793909154938880 2629674798225858447610352091791360 -393456800341911451957151141784977408 6895443229019744564636646176194560 2670111622221825311115933707665408 -608727229220515812720921653284962304 1034335198360005498998612140490752 3496142263089030045172631626317824 -662860571605646196175249964798050304 610165140348870148969636814651392 1152283501509601148939088464707584 -950788314743348122890156761604423680 8772891856850484481810477218791424 1781539120505696706570282051043328 -696356906055138759174630093417873408 9240679444792842710069342776590336 6457546810160970735314267239612416 -253733654356649440241973849300664320 4815789255824631582689441358020608 8607382712040585893702859369742336 -383138487223054784301150708583890944 727716787608011028467715395289088 1960213540428445235138804441939968 -888729155910122465770096903992639488 8319759707259512179107642791165952 3835309603192506730985107847380992 -594218901240866513110547993569787904 2865443186757752711302136551440384 8336405705742932754590328667766784 -646697781280363787839378608147660800 6790496001317532946475650205614080 9088705301305238970531470381154304 -216678572180664467855247470892154880 2761566974645353656422239498665984 9036972896070364622874658878783488 -867078211751794575415451819375067136 267098656859614404579169260273664 9901038729087096217096214731030528 -917080130810043433625946550534406144 9685929347332181284716438118989824 2948499064572611030042439772536832 -818451661862778862930420697615302656 6854458060272503511475694946222080 6877446610774917517707434669375488 -390122078164405523112140597511585792 2628852054696600369008666480738304 9018271510094987565442542199635968 -9277405816349774237563187850379264 9010931565704906437240146859393024 7535651196631903796722557324886016 -758741506828124039369153517635764224 3067481437340660516529157831655424 3583187708784041690246994106253312 -42715720131411679623879424498204672 9765940065361208339302330721632256 636875614258636888357212828729344 -814337045090330988409159249278533632 8669559164778770923371621496389632 3388427019146797127882505132703744 -560492043839462136301680009047703552 1879564245099480371638963558940672 8167408940462152334678695847395328 -309594612094305934560881045370044416 4529629338753539913241300823965696 5086316536019541629360510563516416 -940471451730266834521273522576162816 2638021842716028010643809286225920 7196253096510766318040691752566784 -472646833678766644759475467629625344 6739328732952339785496952729239552 1174280624952365739280758160228352 -205902888720221558965286129708826624 4683752437992797895410672067411968 6546531167310220386556191252152320 -74299127471526725708947232506511360 2217864387740140734310332235776000 5972823997770122494770730959372288 -579434334595983433740521998894759936 6210644597744329421755387306049536 9068790548686649354478281723740160 -819035259719206124038164835112845312 6029649589616342457142806388408320 9098953985850674670147876713136128 -287616188701048926780158211503685632 3063555660625568635125050407649280 7683357342401137471804040084979712 -755033965720017006031879286089056256 3397641779921320546551372114296832 7698081410286037355361231823699968 -295469037703796070317125095491895296 2974021666171826917571739963621376 1482019725883407220103868256878592 -164396360307707775128789409454882816 1935801856866631733819649460011008 1341896829059090906351062380183552 -140744552813547910459845834983866368 3139001692951137861874087509360640 5680437450559487239849744550330368 -290361351123001657817549373448388608 272026868625598367979573780414464 8512782770666074831566903982424064 -277238628773505626635395480697176064 1684227966363776032862468443209728 4751942873152194754996759594795008 -612447344651767123166652748288491520 5368309961427766315709282251702272 2511907471442087887459440738172928 -876446895943963950892303600842702848 4535053043027722337150094893121536 7796912196199783860217371112243200 -426441458822666646435189709411975168 348124735159730451538221658537984 1790327799746242613039509922643968 -198995710294659380467908109725073408 5438043256908006486125018634780672 3608669338008278344908389872566272 -970720955748067650800058329546620928 7921973261977343285770059625005056 9476425854283180203039338870603776 -228957379406232380338330034589663232 3811637646878401933888398653652992 4062578943707236720352947773374464 -919889808329863832128151482177421312 7445131143225928317174442681696256 3540379892755891715734530317877248 -257577025780607061802734785520467968 5096338738808666415496207454437376 4080185691046908021157296890445824 -927607157494285385013483301234540544 663183141538895703507107510747136 4167282257440939471067427882663936 -329278703978702423402000418848374784 430440618607086527160497700077568 991349465400033748408101972738048 -769112352965918152011543512296194048 913224307679309244068097138098176 4127562985204788442388433905647616 -166344231325947000703565553710661632 4039333446557716314242563927179264 944307372424651778756909274759168 -16494583852259716191216204297273344 7661536467310568230268148884963328 741632417276792310289203044810752 -198323768919236486108645455233548288 6795522687488702617933874492080128 2681130095251652775331737947340800 -191911034049932692842643028298432512 5869406541006535955684269236420608 3573445675086216212690714400653312 -677035481911304593431204650396155904 4566988048215192150096966945079296 6153991725145346997696994341814272 -444652924992694363760842529543553024 9450586544483817524285438353735680 6186685430995270171292819697696768 -731895514182295110394162877661446144 8292826377395357702087864550948864 5491431592272934833138190258274304 -599982676654863655960655883975786496 8762515131065411480111244696879104 3441225024161702188835026323374080 -622204896918332648096742047723028480 5576422224552937008949144080875520 6936560718716186324243379164020736 -624441474504398848732395426774253568 8293082766831784483007265001963520 8882205337102838717677748556398592 -417778636132247832947716549800624128 5500915515751716392984820196573184 9565685555813138740264094874468352 -878106345171516845005130398789795840 1036719118664799247024512827392000 1994896031976578228614264317280256 -387623370522255562209417109591556096 6837428760952427347975754160799744 1549760680536975942295834675118080 -436529723003112600207873101086588928 4530547704461755704729883857911808 1281336721721959720347631708274688 -3127412422720048426355141231247360 9566114380510746017984895973851136 613566454925333666759631410561024 -735934940042808034024310894950875136 9319993710517729647770959974760448 3599220671846568925566778466107392 -618219333641424666254916424266940416 6892634343206532023421533501259776 1470520518463209892912088018321408 -15144653321534395672552990543183872 464036707115226622745909563228160 4369403891174566183091293745315840 -169751083337684271270751195271004160 277196355602450562503857095573504 798697434569984809609747727646720 -675643191631741016892043827221626880 3005738764440163035751802705281024 6731137661689165172909607997145088 -649217391987087144071423823771074560 9087021431478805000121591007281152 993995926137591167106474806607872 -719532870930811675914055159186980864 5102475613779527956982491586232320 9544078380053813780746794275176448 -598396500654792716683060198424707072 8746331237455692814197175021993984 3652535135343443580947508387381248 -141940311417851696982428035095461888 5691304659905483340360444930949120 1304453195244173348468226732851200 -179296076865255274255046858409771008 4077591227541837445201636733485056 7281062098517298780034395937964032 -934831475177989934658937239875092480 7733512260778662927213688084496384 995511090910756945761985670152192 -353867137603028981613407057706221568 6315226814885085730680981839413248 6754960852455198553675502079442944 -920783687348576089211647684870406144 3144214539358867517257260298403840 5449806123838937912029220895195136 -180652874846928187343294608214851584 8883376681362362168593923430154240 9585765168109662307085437892558848 -239637227447235499101282648608210944 8261342688663759422720187211710464 2243242539872727711006329233473536 -493994963109730032004471943474446336 2713850646295277946546717575872512 7939809005506301939648195224141824 -589586000985806125365951294192222208 5875283649388378311762369004437504 1997600574926112985593184371343360 -9204566117063988262376097544404992 8457634876127075095385652137558016 7745586779416086407364238154661888 -348715876569561729043171628256591872 3482456196133439700894168026972160 793652521088044356408613638504448 -346289814335517379583785522520129536 7100997266896367729326970699251712 1371153350549395879741968485449728 -440412588464452749231172570960625664 7762474977190224149174869144109056 1543140074706174612271077670256640 -744399964058665284406504125320134656 2068907596375678482230440145977344 8395431013275485549987506782470144 -587229157479089241545479406189805568 2461070227941700415105395941441536 5625398221639481248278104474910720 -354165126314626697504383100558245888 2663223967518044877164356722229248 3559017613495071510461353230860288 -731122977611847463228210920525135872 9706469259232477940549261453164544 345618444179238899598166639771648 -647975166548970521259716775321272320 6068898019427806128789743554527232 8926204488529653482341138373279744 -435789408631242688394140158733058048 6908525834801537433877059414786048 4735901672889757053344760893276160 -477693103659758726325817911587897344 9307283277913297198236635347550208 479848286356653782900710393774080 -444052683293186515889262384103030784 7370175269033668037580801695547392 3534477161060107077895841107673088 -693814498059452683713568934954270720 6851074458841885369804492933955584 3055107091609433439371496448327680 -655048274313037880846534460263366656 4820379296118036510571543994040320 1846621422939848723370341696536576 -652506321620672576585901174826205184 185720230755059771715280401596416 8628973238476632549845090581872640 -415503312869282998685209402334511104 6275888414988139635628080260710400 2511663215179699492242707722534912 -193990773054768294197234363889876992 4194853919008115072571557105631232 4945315659419406069761487283421184 -256752706701841123458698523803910144 6536487937187093297632166681772032 7126523280984904813513404644851712 -752955588950327174730953336301813760 6498631234598116513110330884227072 5602074141474542641550449786748928 -828136884018722248827771828047970304 8163431688388524293207581500899328 8317481321018039049705552623960064 -706379974252741886599193667831857152 7159153407534155933145098461642752 1548168969801385242077044253130752 -584252119835041287153807502063173632 409110927083251651404348610576384 1559405633736405748414948833230848 -501702560417150522333192155312422912 349996317186709535566742677356544 7153054935249893469349444845568000 -401165878725062383574053692670738432 4010141254972685818152511229394944 9890059320360531750870009061048320 -804930553588239156529596301272154112 1010425060001565167623546844741632 1357336717159752141575510963519488 -800390449915235041263995284334051328 4284675631956909700233689818988544 5715191170561420297073695582584832 -921667247106141588554690321782407168 8500376259180110631097657930547200 413966452075997304275617697497088 -712529811385425279529768365944995840 3321624553374279189535475663634432 2819309128534062664891087219326976 -817602140157317869401611280775643136 6382502814042926335068358704103424 1628313345826798690131731579666432 -881924877726654361841869338041122816 6715289563257566174101411431710720 1229758489100762836816447389302784 -606663806196567140007286974338564096 6957323276310685347462948595957760 4485041788175493135916797618290688 -639129889052354937505502720857997312 6862812485347795317460347392098304 5019145274222252793492414878711808 -133412772644130422686560045817135104 7201172463267367526571715845947392 4114958848029718975257108509884416 -598602034446565984254743050641735680 2948039018274780406915303554940928 5424903276629069652089783294361600 -346316766255038414009058308049076224 6149313774790543304903178328211456 9498085840844026375633214973673472 -278952500639177915299557535444369408 1613486970527013235033329891278848 4566261315256938891841707989532672 -171322116355653595633812684092211200 2112583890054223235005621674704896 796443604767475540482971242856448 -597033858394834256517916541589651456 8848221359487130133594259505283072 1131758519598178031743856252289024 -53660976752510580520664431901802496 9389094071634269145246163236028416 4588204702214133636638013971759104 -610713844230713938023960659833651200 4384721827671690793085896681848832 9860925252429034117937224675753984 -554428104097800218317744139424235520 7612143695817346355010621856022528 5191862791629420125258340217389056 -451705864252634314071617143448797184 8678640468659856246173542599622656 6755905638180127494641836957368320 -754324468531462161512493098037411840 2983375347195953404369162851057664 3932539047419946259404995363340288 -721381735036021721812250704398516224 6646879985485426416145781305114624 8657217561931638970665149300473856 -609344177488729823345712099275833344 2280602330023209010012944179658752 1170228194643613183012503015129088 -182718929255459884532845355298979840 2737685980996789653457745936908288 9848327232517770644215492077682688 -696092623233180338012098808325865472 8597081419244791091816378188955648 4606575179082212330198975081611264 -131551920635038848851791557609652224 9684141479988359469833413348818944 5449324311812152857659639962009600 -228741141430184408075249277644832768 2764878124138212537394445745651712 6894855221312972953731653607358464 -464886820973249135960833179552579584 215770627341779124449122120105984 2511391267870260816468268187385856 -386970040049566557894604407519051776 2517810622210035361307101505781760 2780500055479675698626666224943104 -556987061936050273606409869890420736 5885258493970708357792514334261248 7965235593482098559612972565528576 -741712039825372934143198730498605056 1585723496629801783662566852001792 9861326832779452638367251578224640 -242052471101367810225918912661291008 2899413155412020731524529807949824 3404560269437479870075832432066560 -66409552596613897720445446681264128 8485170878171281384720312834195456 6241013320512027954313888100515840 -219100006075585039096604591250210816 1133105654748593206028589317750784 2771345679485719116823800498356224 -129695376773027696449244752068476928 2566292549771091171200719088779264 7785905887024112527866309694717952 -420383581126118005396633682498813952 5454499240622294827304212083245056 926971279841202285877299406438400 -379266620078220443078953681951916032 5659662331561546247337632908443648 5762599531314746228102392465850368 -779906689964535953641441333044314112 3013328489809031582604811103633408 6147903379662242919141261912834048 -784751246327036163062906254704771072 3262737571939721858277696314802176 8029936455604930983301623876419584 -911269874296999762375861085765894144 3861700510571071590980819752058880 3804864469548487197862572249317376 -878928995623131213803962680081383424 20731343548312640640213468577792 2581825034505222793370561067089920 -936339954332793718506858684683911168 3335939439302013647541868618055680 3333862439637671080209758816305152 -271394505809605262499119247344533504 6350230911465627911979731030900736 8312268007991765741880196693229568 -444388757801700629376907677672669184 5020703112234340162505420532875264 1788040970701283323971737019744256 -911290111351703850185242373362024448 6745676435109536637577158906085376 371755126551447604639432913715200 -261030343406413219088900986748534784 6538510574085927144293404585754624 2032346169843149406274282217013248 -107603592330429106360844227853680640 3241182198414760158996997735448576 8808969036753948666339323163967488 -165695054569008441641121846371811328 4728818613786549138539868116221952 5045326192558806285529890942877696 -223440072122463239494044337571889152 4846816422706746003415804055388160 6154209842324668008264298804543488 -805825804967319470238749450544611328 5758880802427500657599725483065344 8859153374670173373389572986109952 -434396139964593345171298789818892288 7792214019870361219510545034510336 5314271941022281644269099986976768 -991819664557368655706412877231423488 5630075254019263531209759838437376 9348628191916362726985506790309888 -579495256017032074085760903422148608 6782619007205891206993738026975232 2695056177149209908698544271785984 -495441517456071713609974538815143936 474213168453553072942079333629952 3568549131620322882571100355559424 -536037166453872091019804805445976064 8353781318486749101574441479962624 7759547134638846868352348677210112 -901655223443503073034056468128595968 9323473713963811282162452552220672 8374461595142235855190039627563008 -328349185900919864918298650858225664 3631860739512085442740928198475776 7215856683960086490930828892176384 -383235173604036889853808699288584192 8866593551033001681195295970426880 394403236745222820189391009349632 -366538299694065942403386371850895360 747298816692137612428103959707648 9550233026478340950824391152762880 -93490734114099795447553041396400128 7539963464047145725466151638532096 7218233504613404913755362225553408 -637728883888489866609042489371262976 1696954577016330646171524102356992 7494075352188344617821513858416640 -137821738446036773740971364379000832 1532902071120169098934391492575232 4208214833355871831946293258747904 -320774429142230414509110252143640576 2672780935481992379455319029317632 146328714547654874655842965127168 -119437442976337564326956367653896192 3239930776035439096461786850787328 2841735207103922363914945659142144 -70686918019147076450777283594027008 1621888637193458267372177042964480 7216567105388312136697735307853824 -919195586619356585255227404178161664 94357279966878627165024557203456 6718657239946003464960721903681536 -646328376899860026465873771079139328 7576275106548475529626985680601088 6361623614644487889481540239884288 -448889160565848416477251959703732224 3451917520253222766177089977581568 1648099091684347624885217205944320 -156808354935982039693945818935459840 9014658877138355007911460773822464 714797065967377685309894762168320 -918277825183526199597649786451263488 6840974825847842554513449367371776 7591005471277255876148584561770496 -16211751007993316400213273593511936 5009538475060091221646613896232960 7564054997843572397372684627869696 -858844530824112730297908680133181440 7569376499108859603917892315250688 1383886337876526982090024974024704 -789508359651959921274740549810651136 1931773941555288521756303436021760 5258993021139710066751665575297024 -280292664742732675919818071669211136 2452366073900934511143598430355456 7343292516471704387103221360885760 -151825960872932011428168831613272064 983603711548764085566586954448896 3905373490061456318609922554068992 -965716866244515750188430151567540224 3297283886401878955072376908283904 7418475822679614217293747602849792 -457682982951144210037112949557952512 1341293661028591796866949356453888 1817240410837742698121758360207360 -821141294903591560391824129593966592 35978536680645016491049846046720 6217397659610434370418854292619264 -191893283303571946819405107548913664 3680206869221972580523520970194944 1856106322701470432342177650573312 -632448206371738933877048334090240000 3368325433913542802471804620242944 6038758621329422971718444876038144 -554617481555095974781864055607918592 7424651474915266115117747686866944 3186912598317754456336320497188864 -984253458446947532712410738530975744 2631834040440070621620739445358592 6759849072785658514564748769492992 -4812617881076193259603575114301440 3279563797632577616381184420347904 1043591029810669610276814726365184 -591532782591201939771805652511358976 6048439043710309985852755586056192 5427420151872028763141720724471808 -862602404799958349174132197281497088 7179853422022843289493360575774720 2952229849855612254469772091064320 -264111099118423837936586764337545216 9981402352131241764776563617824768 4086470005849143828058830977105920 -224148776935089865251318094603747328 5172550777207726842237826182938624 9108005549422061959115040981254144 -492306285590730208808289597866901504 1019894219257689667847135072092160 3863937663422596663715162291699712 -422932772376937927517758083880189952 8684371263997321843367781771247616 4691648077039159727670189948403712 -839944181612951809792307525270372352 7708086025858182893157833223700480 9441446912793836305275927746576384 -639946813151460486731091905569882112 4860482166990753691749509278728192 361335813462976780171987069698048 -513673468502777997948812110113800192 2241683814565734948910981405736960 4550499252547551445912952858738688 -936839157039181983215647680635076608 9286637400511877378006247163297792 1659036927779498665661178136494080 -31361012258450174451006688221724672 3992886350429767076115497850241024 5819395906329418176292168516239360 -711236881041671682451340037116133376 9375936620753991117858675439435776 453726398887216208707265283227648 -858061134723252108041704587061624832 2801755236489880099299933602971648 8951276986395517092799281616650240 -454638451642398864201253822230691840 5058651091275863852529644501729280 6034344049551707324578351441510400 -837343412270216020703451940787322880 3270988148397582254951566170652672 1929501308760866300564297501114368 -298325135907432644159161009199644672 8345877890544545301331361302315008 5281043010639402179827493008048128 -882567519965241866113798883017490432 8912703926298781178595819969839104 544708383691645572747176882208768 -679747657824022416845200989848862720 9645264824200771764063954083512320 2761371556432073805520993731477504 -789091193212810430395401283987046400 1555088572290689702084963953803264 1854964210691545982057043453804544 -753642381020820093282803026705252352 5949260748516565670123661944684544 1411227305442888905515942377684992 -442217851896918273381576573475356672 4199564283766984714481642065887232 6233632687733024058295117848510464 -586818552403818086844887374464286720 2858646690286684817308302593490944 5649474578245919657177390025539584 -808938222678717107432039558227689472 6451138583480491647016976370368512 7366066942465888721939481875185664 -351281047193856141808763649939996672 8627177513167708646121110547464192 6292143701369664922210616741986304 -836029468285743727680318906495401984 2391018061279453253997836439126016 2712827441872937650113463657168896 -732983909821417570196108072714240000 4783873729059593894458458302840832 2475981208271963339937702435880960 -897895355112864525619127672331304960 688019089155106016319092050362368 4474962517846375408818522089848832 -176392688931534632082661603553574912 2651820188882883034942748013625344 8103930719825523189078706073108480 -701129992768326053210825318461341696 4040030532850819646555213558448128 382401925306773727405495900176384 -23935811972288169476094187121147904 5184285891731374512872804212277248 7645489954196120607917714285002752 -854803182834199288553272590808907776 2716180969857218977760594897141760 6439147495540165584253473253228544 -251393379402677270803219096260313088 9900200905064809548293763869179904 5066166209434140450053438052499456 -179028928187164618177438708391739392 9390865704070359546840421142364160 7995462668254616974352753673371648 -805110321344506446093041909140291584 7746658226287714983840674979250176 1408133781935518242712598301638656 -75325749508314169489395528564211712 8364658551832120784689911505616896 6860691149969731176976470014689280 -68844631067728654540096695716282368 6889971950017767828341334250356736 2059079256783435339178486406316032 -553579239512313709552592540439412736 4453757029895870024132078182858752 6082592288246578723692823957209088 -114709387256421382510133375381012480 8334880153153636164015351517937664 6831083306108412099556350950899712 -768212310536361401953994875181465600 9087967706203287916418012486303744 248659533435769159777342346756096 -471739208718128820048315881162276864 4254604789822155290417548446662656 7323873658567210114992496095264768 -476595454856944737276503559097024512 9950174248424274770077882133774336 7984059093774817588720713852780544 -48022155258969717956971482713161728 9252486196081015069401573587156992 2083737040266706701584570960052224 -948177914374071756004053869983170560 3382892579916310597171280921755648 4519282730908772400624263678132224 -461552939936999573850153810692931584 4152389085349283050817178874937344 1253936328791609624176851702251520 -664850889473221333121395109341954048 4368487966173453646719487267831808 6067567594960903453167537967071232 -757563896008406676982711010642100224 3406333122305114733172122600865792 7375635297499898717636880842620928 -751041794929234100848988857099616256 1086426036378811810401856163676160 5567302806627925019430791009009664 -588985895617319844393320818541592576 9200591635942690414807562160439296 3190278844314457664050094340571136 -126010103114775438955715526150586368 6089503380311351292843072067469312 3959447384906711258099728317939712 -592589493380745646963542410871701504 836604204796852753456620887867392 1220615386613642402462698041245696 -631904230298756950213789923661578240 7558051202135542649427412440317952 5307613089113863453170822073548800 -848749489213484179983078559169118208 9646598954300292560745350003949568 1155157486303155880343425832189952 -969007429235026063497160932320083968 4003102278277255857693537322663936 2846086279411660542013620482998272 -138331146788066437182029489579753472 4243562879431334538081568475316224 1199330689367780806724603562950656 -606843971745608494286260910308720640 9657022946251811963980302505738240 580968114896012157639391640027136 -342699622216205977017128701581590528 2024771795139518444542033185996800 7135834505135125487844456054915072 -899384232702490921726865829470928896 1528034264053428048737339860582400 9993726602596872654282951535624192 -29709211962419464569545329911791616 6249724655639164978873962581721088 7462604243330653741413216221659136 -96609861170299061191121984422936576 8612027253238015172284601411305472 2247173072229151335301509642452992 -384169629798411528474478592925892608 8401384824228734035439679185092608 9881399698479821789351791999057920 -4926588665068340785964098540011520 4283625147850654160184321075314688 934296882133204790605225394176000 -497481378270528778292762354810617856 661530582456608672967852734545920 6287830383945710236326268231483392 -277263118309943181587529241955663872 7122040177818850711995917661110272 1940891330136331428408343190831104 -281224768039518120578065539090350080 121210946126785553186206978670592 2893117602439678866378921867214848 -512885594193852850795005925511921664 4331198016830795496012308858011648 7869689627636633752768348210331648 -681802555809902579716173541993873408 8107221635634735611300898544812032 9549295742610785947875754381410304 -167419275301362336233056501382512640 6554427948405642161604790304374784 6167992322057159768092886750461952 -747407839891021007584715429099077632 1836004880263344224118399859425280 6220376975916149194907570359238656 -463089178262358167100920900152721408 983757052122944051534523032141824 9299009038416204058271848702410752 -315212260926174172677112362671538176 6557341728188386958574036856078336 7569740561015173739516424653635584 -894309251383930056431593472670040064 5152615643609734678055329177010176 6413237104582755760596238483849216 -848480455521418469059927317158035456 5048697869627359544094268862758912 7366212521771926415988132952408064 -616885896517784915453898146168438784 6417920742367765264421594259783680 9502565453294263311971666597249024 -184325279134997102441054215658799104 5431076042905965973048707881369600 7853227046226145125071705757188096 -561047438566980200522239067989999616 4955316098083775041055550781521920 9159936403072318564846142857674752 -587078026074991164316030163413368832 6441084353075145367598462318673920 6836309278839287395263799512530944 -550391992191785211945409143956832256 7337003682467817385845326797078528 1319471930927434677733107299254272 -298847364854317594257490377028141056 2870950957322197266730924640305152 6248516968717128991065169744363520 -684297089341181368659407534165065728 1012914841401492878790893420675072 2341469074014732749930815085871104 -19108815434847987813984244263288832 6503767212668221974837812793442304 2428754024987412958028240506585088 -780638474693130202638692513315028992 3181894315112714468413433404456960 9191650266983193278028105925001216 -693120910923664156285490566669533184 3675730865707394092437777491689472 2221183871129871483803491922608128 -704469446495886488690294817520877568 7015053743725220375799822720958464 3339159977011401108224989424779264 -657235893686545408826511140426088448 4538042202148537928905698026979328 1220427161696386849346095593553920 -742858629815504742766620714716889088 6588226427401459870209069637697536 9814907413884706210666356624326656 -458419675436247341274874812678799360 7431130712080334763981673125117952 7863403903665543743606211181805568 -530167077932623153699914074667614208 3887954272289844169012660098039808 1162237872916193631576489365340160 -308078491822807126969764408364892160 3845499642210458740653352036597760 9463796760067447743908308817281024 -618713280029053584266938444339478528 9073272124464008547122245284134912 2330787661088538089381040821895168 -535544458085465550046313703838580736 6393686022426021607767718255132672 1579290475622466779193607196770304 -31999842603778628593565372610772992 7983940262965517607798716432908288 3342535990649124138362597227364352 -632899533233716552943580877695221760 5888977978119169991711563005820928 9994162780251895129016078721613824 -910367466549819896887211706040713216 4655294706901634050764317489364992 2153254032994792835497656617795584 -996009183934471738807464173986906112 6753797108354209059366575733211136 9174561686542470439829312840400896 -684318067246478292500989872412033024 7978478002448171219104039952187392 618459952771074900294152233156608 -982651773717023661132360139971493888 547838975890841335247661260865536 2190178540494183410768985655869440 -861855580749805631335611346964185088 3475136675768515694444177677877248 7493834757064608839139984240803840 -842678395719053975881642452698791936 6182739862639783461320860972875776 2375822834699490879951162453262336 -738165467859118614939660925964124160 5547306230531626326865287143489536 8095208648483549668581329204150272 -846902517022267792333491759755558912 7744038365146941004834414134296576 5342883632862737020839775273222144 -465563537609234782254726013895311360 9896866221513994824091138185494528 9288471134010526663368145306124288 -563471344200074378706118535874084864 3244916710853257079525444859985920 5562319601159883278918860406784000 -398262222734505871258053175773495296 3611332630701600245566169191284736 4301666735798163689850665170894848 -232118010499844190211912949416591360 267527002573037671574658103640064 7566217981027133213992869066440704 -766915687765388901176291377914314752 3672656963417584247997997437157376 235604726159428526215390891606016 -414275151880195105219780291510403072 2392632208517905070951575909826560 8724757507638684009573821590798336 -921274715584605710091419138576613376 3959402103590265840832949354758144 5187297708376677612915189935505408 -170607819066467787307558209209761792 9629336848752324315929698807840768 3510289381857196247582365643177984 -802282906878362914202099985967742976 7259593201309589621144787127107584 6693953180392981678956567181918208 -160819924095284208464948103267483648 2583530318453507845857862181978112 9950587750084345455778893844709376 -223232779217578117777520061661052928 7201338951687570275560287941689344 2820353674956583222321163689525248 -716650526997892743115391315495354368 7425926902627699736944468666875904 9927125208735309049179664470245376 -421350230073795457245322617687113728 3084819230788050925746477307265024 64762722090098386132673992065024 -649593800759432281812050978453585920 3946003045966679634705862262521856 2671441322107628228331952234561536 -355922356406407676706174453688565760 1072543926378217994453171180666880 3642293989440324712952177964875776 -162128270083182093087208125667213312 5521453138897277793777564457631744 9796887272343362396258064069033984 -52420808234552333259733082652540928 2971962344316599565095786183131136 4029246916915728615720348305850368 -564254803331496545897488920011079680 5588551960966457087368516905992192 7172607053601488009270789295570944 -293062794176301386329257566336450560 6951823257857143901639611124809728 5361725226984320806516052551794688 -795156282332933694951570974569398272 6121254144095417585416144467001344 8075270189935957827040662779854848 -659632395931873365551711706222166016 6547403438132956534559320571904000 6003096897255911269845595513159680 -106742359218204564990620015683174400 8131061916319087706492758044704768 8389124048657789745636193817591808 -360279560400052653596342851658055680 4622784519478214408458420654964736 8320260072024681013954700663324672 -513966828105120477495425731030679552 9264382845332997589907288862228480 1079928310888006582414127312928768 -884178159426355164270927200772947968 2020916546872418602509874373853184 5264774181914979405365291570429952 -786077174220055082535025846689726464 907689096321342570863038509875200 4693596439864040981652279245406208 -303342725986006788326085302641754112 6552064292464612618490978779529216 2193778541373917567592329795076096 -68973796969030131901641368698617856 4712530265198140011521749272231936 15377902206528563091296214843392 -761047421387813215362455772218785792 226613604228212675913448264040448 4377461591479825026249093309005824 -264427907289169052260298161821581312 1256970703212025536020689329324032 2387897717153671751144230302515200 -247117314259796196208741594985136128 3244661741347124729539490345910272 3361799688895658262706637085081600 -468868209369154524610324018122194944 4698450547978904921425941679308800 8714592659048659075609265310793728 -57468490596021894890573753667813376 9027164917538844781080524185665536 7952819776473033099273465361334272 -562734199941790091489158557736108032 8607778913522149972716658207227904 1436873811211323445907757157318656 -860735658062313549305842962333171712 1194308932313186868009005383417856 4141877973934311467637501436362752 -243091865282618767465581327020982272 4061319905907315806188282727890944 1272648326657155594109790961270784 -298496253944512098962410815799427072 8261161594078095211584770594045952 8512811545454367756802527066062848 -49459572377520710506934089390489600 1675879515757162967791614528847872 4240066085471042217225133595033600 -317827788183207549953396720311205888 42350139764966028247380829143040 7249537550973950063714331745320960 -497896773786404357663189582624063488 4709999224384761578756120260902912 3467838181133394797920951382048768 -444608900451780175396551908080484352 6034021491207547646494175481823232 3461337033996030075653382849167360 -92019498700147988050641086840832000 1090723702285206637654206155063296 175500066087777140028440376770560 -592786485269468887378302771671334912 754275253334169776773114439401472 1069258427827004694185533568450560 -89489680512583720698569364271529984 8088101788202592227535247523184640 5844764117345740620136838053494784 -905608469285988953623817522985828352 8705838544828401049110627164880896 9593854573655944092009583674916864 -843066468657514524241122313994502144 4142098378420156514113618528174080 573848037699773614155131921629184 -775750533274576982134607660101664768 6845129274928806253736082853068800 6437081424036369368722620681289728 -775798361123791491333301015897178112 3475875024527483619112453635309568 3810714560865582903446716324773888 -408031259751112520531999228572991488 7868581686150125792244100545642496 270889242084798935479730646810624 -643840265176234803248857352694136832 2146857173465699011347946168909824 5633660989579200787530320193781760 -110295084775017096435498839741300736 3988094760845424510335378977193984 394693062966727530437626738769920 -147154145634537531448381542624133120 2906652504564971579109026037760 7558211765237648107948841973579776 -953742788655174809228550113981366272 1051468076125305085695657930391552 6774044877650563243600639489474560 -371582415063983961366974704146972672 1800284450750332341324660120485888 8768191311935626236533336105287680 -331648635537238526131774814603444224 2001348120043208015014512061054976 8578168486158595487767573741699072 -840442426632311040363816622374256640 5295726119963176929946967207837696 4160405096407490413537890664448000 -562785634802665751261386269823860736 4678617284253168617956964814553088 2541736293866197294659442128715776 -302689813861472353923087901260775424 4757161561994910939324008913436672 6689203910992241667666823329349632 -33895336719350248387604065428701184 9061045698996549452026937759236096 9588411286553344089123671620190208 -455995218798793016425526396301869056 3049496367431490090320895502450688 5629960049011884780581230609432576 -690294172897548261219248937675784192 5748105443610997322355930812121088 6279921438996130600030669446840320 -157253885209934131607400963926654976 1926908777902801964134330804469760 6863763560207575481171828791050240 -43797623582687961587680359345029120 7527896270739435008075076917526528 3822512677404559535479685709299712 -99899505579081654049853340626452480 1446529813843550434203502945239040 9334678049430287589360736592199680 -619869188813186070915374631138361344 3725495890208674431088619880972288 9078795147392529804391113864249344 -942141766473443068248648788117291008 1105486638027035870485123969318912 3719048973803125929291825092231168 -444573868062416808930587836894150656 8871904520238813695471265551220736 7806489442341347072777224101822464 -931734134353189089954554108585181184 8438391681736393830638234806255616 996353908462267701582240772259840 -903743895099467271425132641587822592 5535000342462870284216241859067904 9744663520827947255511820925927424 -361907987113080149367093778450481152 1204293682675052942952504483643392 7918266796693627967156713846472704 -524881109436758713707596748402196480 4451301724528293419279824428466176 2840916169207284135754707291340800 -283530724464516398418663115233165312 5664352441113892431916531923812352 6472510212900708053993996156928000 -441218223949896934819488382964465664 6800473837712819854449384892661760 844318073827030769584498376966144 -861308837731350957145678404193878016 3797223686445032378438005131575296 6252842416262712515350484075151360 -767939363585305595505182862684979200 9531328020426504674170173420208128 4810617166875081357215522627780608 -234826959253625798914076723952746496 569440289296501815986088711290880 7613946281285655199869178969325568 -192398273242895205383518557248159744 2931749837646872196472424770830336 6257692094163856269815759901818880 -244840356099642900816527491164274688 1781759288551863510354695848722432 9342141563404735641722809229508608 -361594461301422190589029021468590080 2550434591658124299629233134632960 6556648923209045070564401812078592 -696695511962508224701388886563094528 3862260156456886524065977619972096 9864788573578038734072750635220992 -827785146509284876219776889144737792 1739636035802518426479161669320704 2564498886090450983523682170699776 -133456497532798485023438645529411584 3514381866565906050395612259549184 3133457658106664711804880244703232 -229771770116606616426005783212195840 8261365059149776018737344093880320 1318584937323598724365914271121408 -848873489731599317275605473024802816 1513161849123568971580690539741184 600807356142839703685224206434304 -853993428903231088209121302865248256 8637797796813559482139840255885312 2841790314369206919329356250611712 -688253619692890318169757932450742272 8278500460505288325037539790422016 8846677171276340153940243990446080 -604569946612160273602686685471047680 1651662917271989096032510618370048 4452127762327033140847227919400960 -772558003254957493196918243779936256 2297154385668734205098201236635648 7364979844076698989794353848778752 -459916916122721489943099799741923328 6134698265066234382172511658835968 9502885185591685345315376051781632 -831287155815494381723239320473567232 3784657322624208954884082024579072 9609743644462521747224932361699328 -770027861184951084091197421330104320 3791526992561723150147259524448256 829325698248462495944939524849664 -377540809844126398597467528545435648 9187832147319936611932884483178496 2564925577038101130043555598827520 -72582778957537606725558791091257344 9216764644437618455464975854993408 7625481952640616182559327723192320 -282590259595563525544234726627213312 6708844596365289287944455514488832 7734474526262171215039793270358016 -726056171838713222236403752270561280 1097316790544202109318373989941248 4525814494889300609366464376340480 -675238425924612250455247921367482368 5341860839803532626039241504194560 1106274362127114296823710379671552 -699061799089021560175451210430545920 762844519789764510528745974530048 6800272704441631758263748625694720 -573175791133413641546364681547939840 3860218380377084192089090920808448 8755872997549531136784676834770944 -422146979683562789948714630674120704 5774526984698991909631548748464128 8017740705288458725630012309897216 -208683812267032392404003505878073344 8936102948259166922120040617607168 5491870110885689325267277135740928 -644984859431570176635192182533259264 4178248760865984112060439017291776 9496582053983685945682939449704448 -991087851458566874763599011324624896 5223458661271119607292428443189248 6528300830967305284120787252412416 -314971735375019324245004411981529088 2262148417801418970754900144685056 8341142240264985797929660657434624 -18527647306609096685073826976890880 6231872519145281475958684067561472 917135691697528391267932037971968 -288610498213557538802106162378440704 3062705576052163279347613018619904 189590461214027897128277891874816 -339266995423744169929025015141892096 4644632399423875970380396591316992 3002849616270468232047693674840064 -368470381810518560583158612797423616 7610156735307744026098860220743680 8711367427058172770285836927238144 -275191346903992866081095016385609728 8588945961858788272255141459001344 8163617197769854820898881910341632 -35118027152990413031222953914662912 4100416269227353540123531975589888 6119802793458403631130845189767168 -767640089934356903884702682089259008 8794244469966187326625180815458304 5503415360988373568813896594096128 -440240076757076604257769321391980544 6975058503880837474382465520893952 7153419118428459300014480039084032 -576787394381281909614438832431693824 518814628243665285296783420817408 1300910926573512517737158541312000 -777869762176783816093340806355615744 6283553508933640477976859156414464 1319439904915413530233358371520512 -581657423112253442345669730922135552 6914877264114231711440637307912192 6235681325576408794885888342491136 -453005991289533095121847939890151424 2835532031191638307367549382164480 6883398243484242790973940162363392 -231919584150582879999734438455934976 3724469620247504664696228423925760 2947506421738028775117364240842752 -40469731740703975270025624771624960 6954738159770270259217578000908288 3769542884931291869045077286322176 -477204805414035926725501744660348928 7129503954256481113132109158940672 4332097970991557007809526351527936 -306750606995357227682510580098269184 2405800932905018813442615857381376 7389086754561867929364814075265024 -66504842242355758911327959502553088 6544269692855209062224793939476480 1411741358398496351495803363131392 -162007043410558600212558798439579648 7253197218313961826095704311857152 9658603995946651436560485923684352 -820409255148067780226565917040967680 9040333691076537668175210888560640 9770927834524872831532507921907712 -293879145046309990253088278858170368 3088565133349024786899457286340608 5547789153927357901317516136808448 -199716911989958782044017891402055680 759806508805988436755289844219904 3747403634509165528059978899783680 -557923145357462795318553565653368832 6611879015803946314826558908399616 1033846730329198248314399168135168 -299414870931508844602262304105431040 1809845882660527322387786036674560 6802890706661271241068735736315904 -564594139194105139651611913894232064 5353406527448844562800917709062144 1386920012291134293096567752622080 -633270898993598853084313851848032256 2051724868941699824657282415722496 3997307671856052162771242379640832 -29694734990187281690474070828646400 1690054499047626467029557780152320 5541549662980264318591104937099264 -86741209656148316682001548255952896 5912137830990937517316369327063040 5817956289712960171493559025795072 -146908373424649654095610822283755520 9560588680435441245294914481160192 7181233795907799011901068409831424 -436939252770514294254717748744552448 2979309371491891795306908072542208 7266210297954108352323671279271936 -313949164308247197161501021605724160 425945762950013276274898612781056 6706762980802331241763484620292096 -226015300851087844235815117763117056 1092090056447284882177300944125952 984225509095931004342871699488768 -631756718021418049867737649951801344 5177982867581775014719692793184256 9498787790236862217007391228035072 -547943517736582538918993993144467456 9995351022484026862033511867482112 8022916004020177757381257743826944 -596047130338338775568620041185263616 6877783016970909876686234178289664 9424026284249169031174241812217856 -66649903786513652349958125634191360 9513658650150324815728794843217920 5531616931373761076165174152396800 -985296432504979683076218204326985728 4311160526667336886302698236805120 3169087317779011450330782340481024 -908206947846889260635017271782146048 4906870367337690068340660701757440 8586802942186668666459866651426816 -811069473070091372715293090638725120 6569396889675631161996705391443968 2029015759897072650762933533409280 -281349679629469772943155573230141440 7497665691437247058108330473947136 2708350531144774522073888703119360 -120236337376892918708064035629170688 1137049809278609911932464142483456 9152296180231956658677410999304192 -249964280755657177699921298104254464 9064083343111156713958729509240832 8726427716902383820716381650812928 -238120803078543117211124531306954752 7320078535669906325966554354679808 7048859988645791258214473433874432 -972128240868549808286543424050429952 9373852610426110863671823643443200 182804119171825074025264096215040 -953874600511228686198122437085757440 9428038098290671658319354297057280 8163346016483069554909905541922816 -799722352173158247505394191011151872 4609589327528006411826041127436288 3048052764248765605561387022548992 -402354198029325302638528414443634688 1039364363627423682572692081344512 8184977869953610646229774982184960 -99152827985172199386463362168651776 770467833896078194153752717426688 4037697192900630307598478516158464 -951867807481553098086537974993911808 1562044366938350782731199033901056 2303841229476527400223622110904320 -553802545215700240022360577749811200 36669141893185851560715492524032 5964859145800074717507719897546752 -216983338932316976434371271883489280 5480674471528641931849396081655808 5751752222515756076770135013064704 -132267184356472102254054142193434624 4207248255878485218346226553978880 8898718584803455522032838122668032 -800943866543069756368525432327241728 4373675635967108019986149819809792 4904109252698607938186135667212288 -185704854155188346081775523849043968 5084070034599159570211305622077440 9022023797039562832398141353885696 -763594732839737136609952566385573888 8014466764230139911360465575346176 4090307358337913052136582600982528 -910847589555052188703807272556429312 382185746879284608208345579388928 5126820124523063671915805092610048 -145559470511533702825743198556520448 8032829000845894267831868452765696 2390419455496361930105813597159424 -89528323138811349057927413724348416 2582578667912583205981051921891328 2749848966906290941018500753260544 -189056453892775759314132611958308864 1260199547190581854511160535023616 941725732786203647370465202143232 -203485258743473394023868330275766272 2157150222956756181848277529919488 6633445759532705419629924888608768 -241519300578391599708778408995454976 686568816154507685772961934999552 7926057919401066728291793301929984 -344537609155890183064942751942443008 7403552532647652884422055522467840 4675127347399846214556258515550208 -207340880913069009204764586272620544 2914207209952288057168433908809728 7618490785508460449008139796217856 -76869748561084275555717637356912640 9645222445709348740928276787101696 1507272645956829451573736310308864 -614415408564589478445899218446974976 4079540855292234141586892110430208 8377082027307540093821217209843712 -114236469079680692372252269287047168 3865238841826047968658397226598400 5003448199982393909631403442569216 -640559767960205296848026632097628160 3587637206346385855339089637670912 2921596124425168788734533892571136 -268681814323013206257448770414313472 3833261510350148436167214676049920 9861426463047554406256972463603712 -492778816549531372438771830523691008 1095138177365958576762551277715456 9722475169893530886128244885553152 -376716333269086782308003954305269760 6030257419643623472243587976003584 5373817259112853809293911448879104 -888734436924273538734571280614293504 489469711602954910843340593299456 9798285558872913248043196047425536 -219277414804375804953454818558476288 7588102080758856424879396485070848 4673952903868964270834912191315968 -61938840487511916094955605073068032 1416483076791281839012321595228160 654652704551086503178003711787008 -606098631386517040676060623615819776 692370078579733721125076993048576 1475280057460241306545070358396928 -182851273550369511644352180496891904 7221930240645243649331320080826368 2781638891690582210230663124090880 -832792637533027891655020129827160064 4407394439049024135714338529869824 1120095158610681799099211600363520 -933271755308814069285642642607046656 4572823263194619992687657747480576 123347381916555260928126714118144 -301060331465564149570542590991794176 3583239428135294765421282396733440 319703837924912908960446847909888 -204405670418744134996469727593758720 433701072577914379380743825522688 9645614530195155914946403624812544 -501450179923255820791165423852716032 4964872605534004903036760818188288 5524837242283168956520051756761088 -568435794445327768028345509766758400 3204951407764907157695409671897088 7256356342756948997196251050016768 -438041642783409033927618967411621888 8667785955803403874226808045961216 5383445131707189587072994464759808 -342374721460520478129839700503953408 8435578057148114346185442254127104 2057457389718397063412559179153408 -862424337731448890729062831514189824 8149776892183740185933989747359744 6563754592290360253683617897644032 -285706002461748719852478557084188672 8406820970238304773514571628412928 5966316664299690505314672054370304 -544344461516718775127332781868187648 393594862941747816927658550231040 8004959147032011609055733433237504 -787990588693359115714104238136098816 2971543044715509872587317939535872 2143291280144947523790902617178112 -871468366984448066325969668461821952 5978814697835124060323426609397760 226950140853696288589352219443200 -805427820830384927243890323743571968 3673758387038587659849013632434176 5250521877482199277155899666333696 -471271819522190296810451837464346624 4366462177800266274279454205280256 650918971949094786022197426126848 -897282719741614372090724439719673856 4310090717695217567397206212739072 8254607210962221581020728735563776 -627180162678554281754423870160371712 8072200214300393648133411205808128 4786269664318587627417115157331968 -465501940358030590550323401781673984 9396207973258880001696429236027392 6062289971948035203143194082541568 -958255276853860069721767427314810880 1684664199274205681944306317787136 9351875392186964997897128241004544 -956461575002034569230470366516740096 6334062115215204077071700473151488 2978669713503124347781258663690240 -906908140714631289675733627295498240 3792406304728115019397582376927232 4950054324639000932392522295017472 -740238985492951226367764231058620416 2008967340124856758351175390068736 9598435193258820924165848567906304 -66821947610275731993458335817924608 8346304283692285171599894483304448 487512060121235539319720379416576 -99980724020452170033832978095800320 3270848965684796261588139100864512 6600003198887843523409377186807808 -704125869046897951130815462792757248 3634676285985931802737699670982656 9405818240165771673930331571879936 -846636711099010381587709669253578752 553256533825299933022291151028224 7286592835167581060443773706698752 -470878141687136644413312941923762176 8734388173995440781300108250578944 4284999634806655831511332382834688 -839441050467531407887771268406050816 3391179374712018541374674298732544 8112631482899843742043037392437248 -769762094832190586893701685482356736 7092487201730723211850033548754944 8039145716238344806723246117355520 -775034493897520246532057123524706304 8271716269079306063694560053166080 2703486666150330988549235305086976 -978896763607434352965901698654535680 8403600154647683977608590662828032 5123956235850553758929767725268992 -301091125798687039878427469666058240 6337478682155743504068241143103488 8361031888391172394098819025862656 -426481546644526476821821098169466880 1721679226360731653434968184455168 8955011518752691819047337284599808 -787329425107606953849303012974002176 319157359803799285191473920737280 5864817386403838669174825906339840 -157981093124740261817695644831186944 92499191132214769921579599003648 3321030494420544953017177856802816 -612072440735736319931515632860790784 4441396894229032096667737591382016 3579728479366020469220237413187584 -354951986501044305871386372204396544 3049928249958899327163830429024256 1666951306853340494182467978133504 -655464409909374801229341154751807488 1635057292511314194848833236631552 6150228126304791911560268545523712 -184553486304745628278922394415923200 9835346923389423406073821945397248 1113393355582110700033211799437312 -617354555473032815473037606211551232 7287679663384562662360036071702528 7324121645037506635915807049121792 -521458111825637935135494843985297408 4077930077497348659436813599899648 4698738119178202895076973982253056 -987578480902660014770210232223137792 9954219483832802682778425726337024 7272681829106440606580329722937344 -86786307819992360928657163631460352 5220853222059123592484556382404608 4188349477601268707338270692868096 -145228631621722351062416823649566720 4960356668891720287011776420118528 5209203632145174570767959738810368 -257309190232330624063107224347607040 8911860221452363588541341935599616 5118639069550236554635473990975488 -614310742164688054895941359069298688 633108133257805460264429497090048 8512760860693777605241756280946688 -391830708426164242805829632908066816 2195520967739899318986002862702592 2722226132437101654626483916767232 -554012971888876907406069979552940032 8067555946327585217616374109569024 3971601673102583862557764218781696 -215328643639815055400994981736873984 2140956624670450649313831385300992 5597250961816607428624075106287616 -933206661766770365653666768521003008 7692008175976082783702477701120000 4753250861116235737423263830114304 -998297066645475293962967756807602176 8550867098664621665220094018453504 2591200717541995709754091692359680 -829086012246641122649123802339868672 4716603315978386364677231495610368 6056086432218992026171023116206080 -317532314615356012507227430945030144 4627180007330368744631575982899200 5071612572837009575110578337218560 -381225412277430128578444166191644672 7574338411727302245649280183304192 8069980422987608368567423099469824 -941229101260350673712955784830124032 7816795268152646015528748038750208 9713349419787911370859391739756544 -511645580251901249785898707527401472 5934900810003036814935565761773568 4615671144384165136574946788507648 -548839152803463151295941805745373184 9930558943820663735584824466866176 9388321024217123376927892683358208 -870740212887838787482488893763223552 1019235563278885685750145556152320 239498559745609553268454174228480 -654790770301266153220342138896646144 1863269492208791744868240844652544 4492873682154960814705299591004160 -203914497266734720596556486428065792 9220614510783448255941305801113600 8919711340548321502622141110026240 -196544367223316868833841983820660736 6160995811392875502990059083137024 5358477690524664731736268666306560 -946939938497421550194752040227307520 6341716049217096559080564030701568 141042492122316915283217036083200 -369784417645371942315485559456268288 250325223497815398662938678001664 641803819919795055797968591388672 -412837774476817622503099187981189120 3091736688765961196414764010438656 1007541913928251539086087083261952 -383284375338299447981071583630327808 1123601047833887775795036328820736 6292933396505893259806906876166144 -803402175366147450928093365455028224 8803741765365030634764931520528384 6838553798462080611519150417772544 -684906865756318185823704735008423936 3078383940944656742574790212059136 9924716375883818966599550667587584 -843885329295930474148677823649284096 8057888462980746475100539543617536 9521030559192195057871302158188544 -683576820492843010709268428870385664 3023803858817924245013458589843456 8137879840725859340842319870951424 -445062045157159935728088234783145984 9051434670723617433626479773614080 1463896758105643183963825026105344 -140577153584018893309145798525583360 8354502156807022527294257108090880 6940214875153652297929930118791168 -483845069633056770264896853671673856 5954317732208113570836639041716224 4167526579720172675232329216557056 -853422331299356365865300181609611264 4981658211907198590642019282976768 4497232090553851984236292759093248 -443403035282754276125781235458899968 5581866544797984681092041072967680 1509659596463723300929672390377472 -95909891027222312778314518192193536 7136772541211481530530626017427456 28648636208615574252373548204032 -94934189657440060895218704408641536 3568257768852884461423477009678336 2161686209046003182214067662094336 -97527057496795626369217357431177216 4996661650732416848851703968038912 3362223294385801421778140583165952 -198650505313697027764651101832347648 9550458673142739486583749066358784 1507211591850570895341387138465792 -23067003533937490124312133624659968 460744366719107210374521903120384 638162547260970827899529433448448 -518528911690830955292573091558850560 6279652044508809873853496078368768 4322906369696794118498727246168064 -365893583510078859010974660031414272 4595289033951880469457810415943680 3612401979160001347701156641505280 -899474284884330637932880561900093440 1062943926015206447878548806959104 332602693497135950945428199964672 -929139087367627495652516341022195712 5779991177863344249621542537789440 6623637535404270622788449808154624 -198396515227877787506625843610779648 2957865207250804789647074184396800 584429346030297937609383812792320 -591151008769152072935155543496982528 936350877322568843528496769662976 7630260024457353859180554610540544 -970173293072817718407536084955168768 7741988681951455421800292353572864 722325384174670225330503052951552 -271789288397803555928622532118183936 6004773317427968064593657398820864 7618820526387205349125620687175680 -530269888924084112337230844601040896 8976640077953752420322993451827200 886295289809032660476716189220864 -382977957129413114371213197221822464 8813014473265427470715100967469056 7498470784785092356106710801186816 -234406849212936861138664787867074560 5166143341125192033064514540797952 6243068040282489892145901550436352 -872850409458125505381167369140830208 1080713919708594320024940075548672 3612242788441808927219209157476352 -149399647591709923871167050655203328 6928844577797537132152875330306048 6945164574767358798501799954219008 -260597437905872954113319028958167040 1666584842629061731167586691842048 8942682383664451421898250574102528 -316108194265297146128673289359327232 9649771648713878501056907829051392 8882491207438193901493626265927680 -522487931271150370516390406497763328 816903317275723898436572241985536 8610172372737309352547179449810944 -383569922527635281163168443835351040 9005537196482109851822811133247488 1705708550045660036575179304861696 -769106786259818307249836367298953216 9786117218669845506100967709343744 7466275706051454063301667831414784 -881046026364015149414055486991368192 4298665815029089714355521512800256 6245450135398677302125433960005632 -160625771537685294087923741711400960 417069641870812891349584890036224 1519495999780631911655970818752512 -74253574614234318545421620614266880 7784958840172150766112746481123328 6590641916256968978569677810696192 -657912159159221763245813561829621760 8302592804818339387630669763969024 9091227371180371330894189352189952 -529339606840580571889074151874363392 2327578888079821730273299823329280 6075636330885110855448929157251072 -465647810838162241896162328236261376 9807732734430868922732404923170816 6107959696455306017070157131677696 -552799664659802536984617718426632192 4200053849352886403430949274517504 7171819123741848365826634598580224 -310065222463969828370935405877395456 3409600864820715985370574131036160 3280906915536611879192268854263808 -811857143877422519004956213003681792 9659748508826325259905436500361216 4408748881058689089049906741510144 -850907020604367124039029098100555776 2038268740725708247962153553756160 210136462750429841500100196564992 -998208435429071634930780769586511872 7495385214491574541662546946949120 4013854885924722423836897286553600 -849050055168998235064575148764954624 4503437119282445101313284202561536 1763024131206557587524441016893440 -32945311219632845674757392691101696 6459318668275299439157761596719104 9075262686200241236988959049908224 -691684949430903344579423752886943744 7069728548526352880670471698251776 1227482707884401104718178262450176 -458990298866361258990334942822531072 2032586990645125504817681347379200 7149619146245276524896446257823744 -874466432374188704071008827339702272 5741770468623461656771389697294336 3325574765256083236148393914925056 -51637648450440470723935311484682240 6416304857480429205181203151323136 1539307731164678732277614674706432 -460420283279954313687368905860841472 7348190800638893236193445569101824 6187869460982897698560869706760192 -713767035531712234386668060474867712 3396766810428924461006710015787008 824916163045726806482439655915520 -852423373967411561583948361325608960 3042094911473846348103366458998784 8256318497006886655753174512566272 -238560632000313826510418946985820160 8961013613596782812382721002700800 1037657940682488955173951789596672 -533424190220683113002492127325716480 8401074675335644867806834131468288 452984821875611594136627840024576 -71473345752436358081603626629857280 8707163191272961370723480156241920 9878273909468338730290780265512960 -212125776563675759645186547534266368 8581078446745493944222864692477952 9879334672328124114421281500168192 -125737899614060385976232571444396032 9822096105352396203836491100585984 2337014472412352454966503150714880 -471300444064197451780377588239695872 2198262427428890455009425356750848 7250094111402255991738486621208576 -893939206298820430336510708638810112 3347674130096885995009719876452352 3487337516311174017783084886261760 -355658041684102772459637378495021056 983249968389320785145316010622976 9909232657077125932355725203341312 -150611090667125510674970380030967808 8761797890919358003353551129018368 1047659633510933140198338372567040 -577030475401228790044588658281938944 1500088518184761345430719976964096 8767757122183016887444236916490240 -616459283088959652697739221912256512 2031841374864262980192223103025152 8843244312724450920174959324037120 -815401973450870089560358547061997568 8292621932988424027974245751455744 5140925214802709566341440402882560 -25166101192118743776641416008040448 6921349647224739701920159628263424 4675931160560111904511524039819264 -865058414400918045876131787488362496 1012429511031186207376793327894528 8397154744107953962564899431251968 -667110575650398584101404300887982080 8481408624086938055291722956537856 2466245187431956960377905780621312 -348684324215928664016985925533827072 6662270211206505516854353349050368 6755174121952838618090773520842752 -220643696891150137654907943933444096 318134158433871670565262266990592 6567552527420549317402096167813120 -505495559097936122458603241531768832 8882788621452594948254554849804288 7090008569512967091114273136443392 -607359184490490564055719557493424128 5652888256175288483630006700867584 7935545385798656451065816184520704 -801323439748725237683705679966109696 7748384634266966911839180540608512 8550029403623612472938892812615680 -400859585037035411925121772059361280 4220826900617716803072558473674752 277950260786218154089589162115072 -916316101642551136394622181931220992 6730267845387385802992689816272896 5738812082954791191646776032493568 -192718119641151999463659002541375488 4940261824149797824069961454190592 8999235727348909426178330785218560 -290232356052816009525507614675304448 6508528926856763018129494304096256 8388969602819488551142100171751424 -646174035362066882754066209900068864 4133529468072291516448312985124864 6126930631922784518591983946563584 -607808520832750469815687104725778432 9671586154838896170317416545386496 6251804531949039878137094363676672 -231641484846246731192747532964855808 6357793074768722213644401807196160 2007353529075457592344093747314688 -829541888017395020651776408578686976 9002180495500600882119474082217984 6821390065965725050105553131405312 -656223291938665883861382409977069568 1249838627927850870508344058052608 8309319104373855406041057724465152 -246413931556497955095510772806057984 2157268846558280123653738322722816 4569597349668789079041891249422336 -894326457881272921161849982171480064 8349694036119238905987475508822016 1924032949450177046283856501538816 -711001974957279709794000287410683904 3530173123135749257568962031386624 1574563111537411795301231983853568 -789483176040381532696383808685998080 3950162637476822703187158187900928 5010076258519988591918331040104448 -924096345577821409097752949137866752 9037889408962270200912142139392000 1344074947991087775751098909851648 -546129364288428903918757616040280064 5371569670898817252322079114526720 705711502295407052095002786136064 -225147635661311167877035875599646720 8252003214651608214858741225357312 3010639463290953627949773268975616 -278220534649309609385135992295391232 8447547394777538117076746560864256 2786999928534287977905055432966144 -868263866391124221967205775244787712 4127194809355130696090821154832384 1302902017892721527619136786530304 -232021564270686133398777857730150400 863637066627946818048748454674432 5766709007640612997369797168594944 -273063748614791872304810415253094400 4187056887848844685313856650608640 7536024366010784477116469709111296 -933832458040686862782975413885861888 6110202255803389694855835384020992 3095927313139017869543824374628352 -902535433511148661655234831487860736 3958889120562048669483074957869056 529123432054070737556599801380864 -354590701085812326121245593013583872 9810494099323480800935434772283392 2560892906085426751549888893288448 -164119075459360453263578931797164032 7795795699794777639620336467050496 1365553916744553910139441253449728 -327954433977740775224532954758774784 2107636393259730815957934809284608 5204892551272962989253828110450688 -966949261615028387921059464848867328 9750016890048060444426144579584000 7540389203287243421665197442465792 -695946485306085086455621943518298112 1843274831893235645096541938515968 7322646903137668414351524877041664 -635376926202897742453947993641975808 3696629835223345756325256659730432 3145228920294702345632682111664128 -211387968285397683285228296773566464 6899703843100578515384496669327360 816506335957655048395696793190400 -133907203315159120567554778729545728 5562691989844096829131168153600 4109600634180338710948095725666304 -275318520600636979247832118566322176 2648038098664177354809686838214656 2134765563461740985954145809727488 -440193361026221160716440773505056768 4097449373134152913523503630647296 1517938947709877199299917633290240 -257697363926650118518282353666686976 992841123742948279813865274867712 4000949228500934657161061998788608 -946784869909073367552685094712901632 8278719621588498962916929095860224 5791288866672719667464748864110592 -514468982853330631093223609639895040 2603116370888841209309142173351936 5342474664218170476003806318428160 -159626107245370005723456228844109824 418504447590534717096984148180992 8383078486924420885559437177126912 -270006143054265326022519331003301888 9209056680806858915278315853971456 8133550920934921779201798458834944 -102950755122523561872738367806898176 4416536023304687958817270382198784 3369626796553678181824247596318720 -812027452978528317358089664683048960 2132896399170776002581240240668672 1714723268999262632269568777650176 -247544073839928753194239392642760704 9344017997770008231119112521121792 9596033754806305454584859992260608 -371482610559947508956366189304479744 6683468461367017928698029332758528 7015658786094905832625079232495616 -171096960138386724434284605092134912 5271837323604915130186467553312768 398430151198433572637134198669312 -693876564109079105839667613760749568 3252637188341076619649930879827968 9474618041898383763919746568814592 -970413301365158489432914549788377088 9336977839032173013319286263906304 9761456719650649694730333420781568 -665438310872809900174984158031904768 5949864865202205088553515612110848 9329919083061987645826867677626368 -499725111919758487975143671018291200 6520763303933870004114895390375936 7796767465799509184555744627785728 -100774174085631615620842811845246976 7300621611267869085876370221826048 7085625168736684713875977772466176 -404524991528346175408843075941826560 3539055891061733108840637638115328 3806066894217305069859723146166272 -435489419130028855954958326687596544 1804882758923764040549171726385152 6803169566333089314490623755026432 -704896649569177464364244694535766016 7984908883600725097852274126880768 5095652589833345859110075994472448 -447026988186920192882857480961392640 2892459037053010706683804805758976 6491720567710332792101485202636800 -380182833412424291513733684744159232 2650833259502009255979747052093440 5600362207627061981341699807379456 -933287615216248805493326137088016384 9750934916514809714210725894815744 7712824046327373735226898710003712 -276624275849516788757142294912565248 8931161346102653182686292472758272 5168716947719090281210868173635584 -666316210373371181009482034186289152 7103343203586728406205350096666624 332528281284666287085631326650368 -955258414518051605718934698500030464 3488909806932152773700912435691520 6945662308483913138768937750626304 -939479135497483207457071351468130304 9033093865095980111807396351836160 7848172893237947932718102682271744 -129287106029841210060332184192942080 4845455918688680501637096824373248 7460103483171386720636313851133952 -831356701955403050934710184810905600 1462553474435389415719241588408320 6970467877144850147505200242360320 -949245327662950212627668742434717696 9754597959403215841140823354769408 7361828279798905648896055189700608 -605520388919768633610093003251122176 4147349592177754149176062777491456 9056959712234668121549570979135488 -942852018922501000302595753918857216 7693432518705589393922843744403456 5962733768600342110861003572903936 -607790049325981571734600341044330496 9962048146507221674404667308638208 43921685886168228845729305591808 -19442366984788854602372905454010368 9544666172843786741614641084891136 3499162306172804535795893302984704 -364122070897505340968164992879689728 1454253352213586380668218986463232 8765622470140298173015949460897792 -984015285793381841349237066638032896 202587131022984522464129703739392 1468422118490868325320110299414528 -404359670384228142917486371575693312 4547552703701224344596198950174720 2967237339659740014653575092240384 -719567779409187544523700466654117888 2374076123967334101727507059310592 5189575050714264573769709080543232 -514781445311957524612189713430740992 5618516392504424561229843973275648 6548578088871613652706075068071936 -665392686399997306403358478939717632 8948765575956937055443982175174656 3626533834802651772519471778889728 -858207956295330122174061609597534208 3161047530118345430707397707431936 8392144541493843377278621679878144 -819947344947859344793099976384184320 357500696077736631087018404741120 8324009778519434744138678306603008 -397221457572890991280414196689272832 7346187189357799078932338888933376 4600692217503944369425460395769856 -945322150178099573594170469512118272 1136977343526998281185538401632256 9241705344832431379129794796978176 -736124641382546042922544353272397824 4635506963984433260398533710708736 3799188670965491230924569988562944 -546965018596048909432224766123573248 5744257319570663386633279262162944 6937019702795652742425651745652736 -777913967674035871068080907724259328 1382114430611616827799874647883776 8193801485740227605166857159442432 -397481796005644328853100505170182144 4900728549436398550566375501332480 7506978056188315879636444307783680 -513117948949464455247581997239894016 5329281859323861211765570105507840 9789116917559161495119803447246848 -759234641824707555503812628822622208 1229094004500823687016994788343808 5585154108029895568163965692280832 -698159390122097523755728657520263168 6294927197256201571212132440080384 6802656996272208967017290044276736 -814295070874492485798138450540494848 3438695466243049989884796131606528 7960893809831198859343798848192512 -92537269529153060332232423438811136 9034181129251389061155647230312448 4114330488123078976864655767502848 -889179128207104671460268331507908608 460021512868718729160985805848576 1898872147026043568934672838688768 -341427449411173933175831873823178752 1555531218660636427966171247017984 9045617343813495580456953965445120 -118518519742011781501258096606969856 4172600502825885391729602208989184 6633787994349833090426375558397952 -479482892557529805089341021005807616 1014524638256923562929789564092416 9790457883242776363597260386205696 -827555628324790031005850853913395200 600495282311771663248501327790080 4543614970339750352831252269105152 -50189294970877391630913532860563456 774296953841550303748573668311040 5323464802585945182981900745048064 -579770533625357056763046347937939456 6382444665814102026111822027816960 6504707915129924186576014190575616 -717891746753784342920207958223618048 5281692775510654242098721184546816 1392563144768319020282887532445696 -96982384283729199547881711093153792 7434943152022410247578596998643712 7465600228878324674996610218852352 -273182027080668709969335215808577536 5590300295784271329575939428319232 8428946334419456347140105036627968 -402284386432328920528243253428879360 3596075795857112990624493948895232 6518501668369252526199282742591488 -113005890942698128885834226220400640 5278510718714359521785123285499904 9755687753409652216530892572590080 -656623481441878303382109149995204608 9541496913890610792133407931367424 6520705086635790762447736477319168 -294955131063517198004112671041912832 559247413470373157883633666621440 3023146873022945450704736356401152 -542330356772805327943909710697070592 8733438681779761547889356356714496 6104219954047906478601826321039360 -160920794247163766859711648530169856 1231072669502695801527180185305088 9377642641493028817708153812549632 -19644835558847165112331489003962368 6721513201584151168248411039203328 4814338012646017529883467263770624 -846141889070030714766966750235852800 1516068013485713052229354475487232 44341567273228220500772932026368 -649630629217073150309146834382094336 9782120228763018014818694003163136 6807882483914076329537222578536448 -916224715290836991773783866361249792 4691594240804215473869871701295104 1314152420616974467589271499833344 -317316802149599646412905121354612736 5569915518966643952171285441675264 2845946848049545722845509135106048 -501976766392421554886680321300889600 634561038911218775288735997100032 8250168474190002475361442438578176 -360873000439181852306051042260287488 4563191381062928940774484825079808 1736679806854894463189418896261120 -150186804060494042894447942131777536 3895881449206805921287819292049408 2067937302504234383589468568289280 -442723332409788254027305498546536448 1174772161574415321875136030703616 9394110251769471477512454954549248 -201150336724108443880107982660304896 3294843504918351606107540314652672 9962909694928976002361433429901312 -600203461854748394622194681947095040 6312687770259062068208626344919040 9072842954420112770790277718736896 -185187967102880237401632268200443904 5043209450108268829721683740852224 4849198600706043598457650194415616 -270893431889279776940216973134921728 9949693836409107493843643200962560 3078787550639044345871130431586304 -31228686978657439918531179964268544 3439135231310853337828706989637632 932638330111775458982779580055552 -551886179470706034335023772135849984 1900157511198127218841933003620352 7164293760562570947067742468964352 -352116483589972042529680600363696128 2087638767154720230942805202042880 1454333178631641872185979131920384 -697629270551603041663904548449681408 1645607167377225781930929713840128 4186307497366105648154072015962112 -246572950054066354925594620425404416 9093856514873156046215263522127872 2902052591672187660974666444439552 -931910553799540344429398792821800960 8400012180931802118213240585453568 1997156442609024713987353609240576 -329264455348132365637275978861379584 1721310247703476739057386008870912 1042442630114105876953740831883264 -268695227637278258086222990873198592 1439094710840640510107920977887232 7040465269678452686309167697231872 -961488222717792899445110350104494080 4947599987845241001053736969175040 9072090747047872513015287520428032 -228536868347565989826369042784452608 4552606902787588251947985648222208 9127563524022497703871401150119936 -858266147886331719729011698920587264 3780235816961240946740634060849152 3842167580551021510444633183748096 -424960507736748076922087514386202624 2231831276246457595111543981211648 5667542154772339502317355483004928 -191409456060958767726440053116764160 3599245986599160990633560817795072 6572535171021297798875123277627392 -911469189477777717500606312490205184 4091889315246336588209845191049216 3227597083356404265569893627199488 -37949018880583830879139769071173632 9843389506416710765427478455386112 1029128306502275914118500884414464 -478492635395040274717136883476856832 9272099873546556498535777145192448 297216608551832602997153796718592 -597441230181282051229943791150432256 5258991063917414399039336813166592 337012167339639102445132850397184 -612569018347688373249822807239426048 7714709939772317083274733477167104 277958527062045300224870278234112 -527816731989091049594367481854558208 2356610803601215950729291784781824 4453961270147442394577632701186048 -855791541182676003871480117448409088 5086093735320560273443484608757760 3834003652281458307036654516305920 -689900585083259514921670489562677248 3983962557925811264845303324344320 5108756711090563988005181437509632 -358276054334671326430272075673370624 1216900991243152876891105126252544 679076995614508832903072602652672 -433492004699712287249974367719784448 3272356576397594942749773135872000 9396761873406669808026249672523776 -894696247939453163662878303596838912 9327556524676049946904765023649792 1447209599958146006907435096211456 -215179914203570030797561876094910464 7416972582268512024708368148987904 6914473227638653761298321819828224 -616226260173343148711208891665350656 2151119796971824527472877587398656 707922598946976366394111260884992 -313003711642566263127486062422654976 6673415328516766952235737972473856 6915081135892435933067775743885312 -611397607733721815956414393170788352 725343219782619156077743077064704 7546490196109310643029368184504320 -743630379225103409609816462707392512 9555208165169303929365385478930432 4600488410138386052115302803570688 -930962861717099569451961054165729280 3733738410650894565082139545567232 7374625125756156530096507489091584 -863933528901442378802616760981782528 7595740544427458531332185294635008 835625684486936111313268749893632 -429521124656638143572483378451054592 1860640317835891012767348198211584 7671860669332592084081936217145344 -294188702078307329480321541458624512 1569095611893924923389530116980736 4053153954398611261428678524928000 -305764990592025470783990039180214272 4188499209239790945629439004770304 7419507485323492524532554010722304 -391636637914243503076899828996767744 1535567423837575811007926453141504 1515366570704762719084618721525760 -941313744842236013420322092025380864 3453077521936650669362695884505088 2801386770549336417053846647341056 -573454478237016286031290341454249984 3864537056751219548895325076848640 7033693397111405545361210639122432 -396721930679124431404743365303992320 4577105867078449213447882691051520 9484098221355401657477730924494848 -571417325942677446126854107178205184 1807245337228378680499754468638720 6925092734500413841162506883563520 -436098397954158215917786874637189120 9312663082412187125807907264790528 3123155694536965530268903944486912 -234923841770987443812389210799734784 3797783009955646454163682843688960 1551692696495101656312350045634560 -70583270956832402456862448481730560 168394137595694559756359890370560 6376636378911485213281094620676096 -936627493116914655174157828857266176 2350585992924818998074456263360512 3558785237100781340905952765804544 -601011510653011758298198038273851392 9531135500381633577320369499406336 3142865140029006083773519234072576 -262395252218011625220809317588926464 6273036668646907703004108939067392 4574051410926754842930728772042752 -184009788413821395502901185193443328 621045786183562668454270405181440 3110036726173982894877016502304768 -849142393687726354011497732526571520 9120634020410270855029787499429888 4755884259943292987768777507602432 -117591588263235929485133156840374272 2190419267651611401420237275398144 8392131473478516476217391272951808 -725008848698682766761835116669960192 634798923155643600970187624415232 4329241410701176034183317437808640 -502720320648197571826716143423324160 9863527090414400924711649212891136 9777291992611426335531809896398848 -935989352401779674008227015909441536 7749552361881806133047900468412416 3230600256095272331883995465777152 -177365482579875547203385230851309568 3793198125905271536205915712651264 5751146606069126489562617873432576 -984377262218811045193746569651814400 6778175213940016787895446910533632 1528939583269195090667369264054272 -50942309566754587562992233019867136 9527859795494943052637476805935104 7941416274114903670030896275128320 -909146040050537997257532273093246976 3497627988404821792886881716797440 7145946886821704182369327639429120 -596561456706775872065782231733370880 5763406319421704845038982694699008 4907089087825858565786897066491904 -189400788752402423019864351561482240 6075767976403793542165555975290880 1699215191804139876364558434041856 -479174228497060331846094902322528256 8059526511146321650089670148620288 7367626010066758705962037643575296 -123743661587475978252294717614063616 1374366452418255364277064110702592 6975113192073957464405647644688384 -495630738797097446401001607881818112 9635130672284610666104265931489280 5085657000454859332672618357587968 -717608668237678654722731779177840640 8110173385218059091757103348449280 6542289168932202019167770580615168 -147663214914083454187561846545842176 3803091897614497811364229219876864 989865898409487839505474476048384 -619186744909883329275981230650687488 9111924115974865607772240433119232 3297472866580349995144608741326848 -939963892361854152835450796922372096 8554439729424290279797550770814976 1547881191394313246922108385099776 -548980179632715003089026217687384064 4627582235483602274077154784313344 4782254875330390920369173361065984 -662039600676536514430648155138686976 140304883206512374229121577779200 7835116942308344668712195590193152 -844291712570070584539914440886190080 9290660127295874217582370972762112 2410980827616678977087627660886016 -954502185183272328681258597478301696 5474186277239179004169738275258368 1603594924257018601436053975859200 -602134079295256341393086478429454336 2365974936854119009647973726420992 9927824407255489920038684237758464 -83653537422926207401806367064850432 5430904927825708669459936304955392 1662218077362208457790568408285184 -544666045252962857905418947337912320 4023116116162920223402817239384064 6742428801952919737069388225839104 -427390735496704596956519902400741376 6506840543933500406731171503800320 2622853748368238834716291431923712 -657280509251929111954879769730875392 8484516669272462531700291109126144 8802450991643973356127487145279488 -461823114727503672693863953488412672 5372233325063456799788711553269760 5730617378180669567311216308649984 -124749600461069742106634021660262400 4505174284999409947369512017854464 7427825859431354616591617110310912 -839802086070913242483213826864971776 272691198220756295463331348611072 4267481454488435305220261787205632 -680605453375697825641734667998593024 5428219212443377445654385609670656 3522968720238479600144775058030592 -704968337129994558329040885650554880 347193263047045312235496598929408 4121949264557274591314583782162432 -495509988288110700806769134570307584 6998447454295465089486448029073408 6938223301797847784465898978410496 -481849480716292994650126126868856832 8964598293043181875890848593346560 4192295561725879079047187769851904 -239873233839824922773774360935137280 4975795767998636435973809402544128 8198025820122980821904042571595776 -401210111982649737454867303406501888 6715997184662557416519138453487616 7367998729693361974719040752451584 -539428328009286846293335585601880064 9526459306146180425171171071229952 4097442053909264433514202242482176 -506422793293901912948179269897420800 7175970666945376376621574830161920 1144023909619524851882679357931520 -903721098275700447205027758456438784 5441920782016573086899929907986432 8247514431764374083764461280165888 -267076904889224680925371423808028672 3549792362102630586127790372814848 1664610991576340819387460024795136 -525567232737374278325074119503118336 2388537738959195148560516731895808 3261172273511817084930030177353728 -34165062031485139743452101888442368 9625856475384659854824009883451392 3504817950902850934749603930570752 -400834511231470533794421245365714944 5353017737232517878827004144386048 7856843524558112932395317863645184 -17073160631608416765681069159612416 8647875823740041071259131087683584 6267899976757143288004035267788800 -649806111676452029406135971825582080 572687520247221688944597472903168 595028072759169574363769058885632 -357927812041005632849355342117601280 8542506422843619570033731873800192 7897007292928106164958146561310720 -119635271401110184522924931971809280 9522410527818839737857216106987520 3806251548588046567031568091578368 -434940996894005316082634321066721280 4928195683903213734576984820809728 2878916107092153302632642887286784 -406677863289630906734807278566768640 1105865255344031545498221613678592 4463832418064710184295197531176960 -369575373297525692066305603757146112 207124161016118628126213351145472 9130480736213239773835133089480704 -941707308121392811939359610969784320 5502192691874469009393888926892032 887981577371481956521309657628672 -767200270672612733722441357153271808 4776244900998319686690157602275328 7831145110545125872958090021699584 -477488897747713110977012543365578752 509426977799072407780173795033088 3168746558147584808355735992795136 -368024718270488658876560643735945216 8499832746848451492572115704479744 823023630463027647040434791776256 -527966585963729319578260743733116928 6348934270734294387981198672527360 8710427598077525599194680790089728 -397900943914356784219603083863261184 8787188819372185887609612247498752 9406626804310756331388138715873280 -805135856743538428894258638977236992 1469325772179423387195968013205504 3638549201300708360335428419584000 -182874015013725553434964663887462400 785041907679275364143102269849600 8485130989537544508299948821839872 -871536690140499545629583924334166016 4212882684537216114988525002162176 5089204793841918033916061984751616 -122847903989611872779500007182041088 5494775721089566793022912835092480 9359861211578996569363105687011328 -634257918566994060800854454903504896 79472753385857388267744062865408 6027868393694595842635788017729536 -522568453487244756008038425042092032 4835911852973840106743489768718336 4469523944943550903371021548519424 -904446799344317001234051338264903680 3098553242393017832664902806798336 9027008370234906853173655702077440 -626756009947872764572813064052670464 2035113619715251491784770457698304 6718927271474701277323613389717504 -391380214425420326969858523895169024 4201276193039176811194885198577664 8604183410321191741050759285833728 -135269570458003439377315490401615872 2515344649696882093144562179506176 6008097579430120792302961746247680 -958123614823929145085436672828506112 6859772004425009605654493838442496 4815999046816105929729786878361600 -33674777101120114158186308080500736 9469145557882913552571143678853120 8409933189279189063364572275015680 -89022312176961542475575775654313984 6076585958186894153974113881817088 977867479034622137158936683347968 -960865727978340102957031230814552064 1766230431223852887800637990895616 1129276895567464040258189951762432 -277690526569768260959094561520484352 8173541029111566692954840821137408 6344465727635531574847858767036416 -631456032294928050042736051562217472 2269029170904260235731871641632768 160082101773265645292257546338304 -212767259298579962814284037548408832 2856812278305103641459905620082688 9632997034913874187266125920731136 -552175714294559670333107248499261440 5201293294893004090713270361522176 8066377394958186828249882851016704 -236048153576170418149187295083757568 5353544175063908712914569947774976 3957095134506207336216181732278272 -331472656214166148761224102641926144 6387203457258943446013545631711232 6407613951035062365992441178226688 -551176742087509236049318705274814464 1169637783014678328290350175617024 5057421581921252734155420602466304 -24518481731637744223370865683726336 1495981844934540832657205496905728 4383366774644153147877402070745088 -148284372258458489580028876206112768 6588430224005579111767888841670656 7327888266371136041927821437698048 -281620281513346741956944785313890304 4919027197594242123105376684474368 3006741320763307101044978808258560 -364923337515702764671576457751822336 6463189813656877121288208908288000 1646410217567251356397323658723328 -636710843935121707253756657911463936 2956694949784936989475031310401536 2969046756211515535576573675569152 -226861980160480939088522426735132672 4605189756412627075807009228980224 2710298250823454983580838224986112 -299166082269233842259493797215862784 2457344703307715807785132723535872 7551358819797499501972062306566144 -316157816032654008066342380514574336 9693006081963807455225577622994944 6391712628834605330231128422875136 -679776915865680310785524804037378048 9021739589179004316727210684710912 6175343492407697236117503415943168 -8937047246274731392992931481649152 6730115734401992343144381900914688 7604937235948405756928023131586560 -926773918184424475953735338691657728 9732455890643376483948500657111040 1050823519700076769285696284262400 -611771691978684775171347743405768704 3956429205400682597914390982295552 5063344699253054713124582588416000 -459845064630807382449423195882651648 9444021738215081551445006925955072 1441622818148881396653758301077504 -490503974970218289927644946500681728 3286218359069993327365168377626624 9697318235815822317435911275544576 -314735852893417213961390726278283264 5438211799247466881475410894258176 2395709871695740210799256985927680 -354212918123483465654162090679599104 8009872850933696722972229217812480 7772049171606809108902009964068864 -503358386377932834023760818943819776 1373343923426433087572965131812864 7092263254326065390760505085263872 -888718583611921695238578473413902336 3726648406900992907679544637390848 6419827363742600581453724377939968 -309076650648936456531807138123612160 7281240525113421088020731315355648 681945228565212281304453591597056 -870585680573421680894961174875996160 9586936429486076149400051340279808 4125766016493228977146221478019072 -259957229375225575997126413834518528 1526246131194012896626613856239616 6202634723868606434624629161066496 -836892748353164136518493728665501696 5163816651074199742981109121548288 3738477065109050928422588472360960 -958398828021688780981268771195846656 4937450024750123812972408724258816 5688468727795621368615457592967168 -39973660957407771510780487580778496 7443315881186753549471528284848128 6357750800683285797691458106425344 -969187644624463029713967195118108672 7448235261757204822207473140105216 9697653768530759635767665524473856 -270105184322712402168958947342417920 5790769241454333534539300858757120 3437418580211182732963449302679552 -950789691083467954139460991535022080 976043009617520172057647434956800 3238942735285619950337642435969024 -596689018696427289300181042847547392 6847651578191202697802785075757056 4020337698292918192264487744045056 -206825558827369102635631899851096064 7804539763992157995044422463520768 2436103492869809884508019711016960 -162292552874596644852501133786087424 8589524967947195776364772449058816 3564772289840984101123255751933952 -51155467145045973840160880121085952 142288477324961788734603406606336 3297404026630660171151903494766592 -417364894223741486154596988720513024 6305437484340699275961044435992576 2811366310860978832698575211724800 -891527824683278874740392127998459904 8976775304780388815196468463796224 9459972070335693225548489108226048 -582609183029690829973383855361490944 4560724151333288605736911585148928 9812249346503673287868801171324928 -715623272841458177743391274011983872 3680591873974984252672522059776000 5983965216053841851793942446604288 -366971247669787320904823942955401216 6633989635681120796276480286916608 4598018180886761344297136495263744 -29087029760442629033211682185281536 5686913536250202939395627133435904 7062175601758425947524326687244288 -67455931239780837003326489207242752 7415211557065980642530162974392320 1253407043390604146767647224102912 -685216786546190881340058777373638656 8869039816393070363404989806673920 487611495391213076184984266473472 -957050805660066792673454048701054976 3420019900027953618730347892047872 3144651696349145164794441997746176 -181812710690088824873750263748362240 7955675495566677412428148786593792 5577909626157377218395518883856384 -100232066161643114148634907664973824 2732541323683522095215887211560960 1157276359451235876019276435423232 -819668972981480468016583352923455488 2179385631245643144328720993484800 9694083816522074882394389917728768 -876520509004061104555745971074498560 1246388670300402174736190756880384 352169181574514647070636370821120 -746724598861906261030906666397204480 2664744334632408101318327093166080 9175793530749985257624056346181632 -165161983421887541394086219032297472 2691463019562595028665255648559104 6491604833119978586148819949322240 -140236509466671491637818689786478592 9747045009582875037237334452994048 5484192226806093187697871081701376 -430118242713076584774917369098141696 1178577778142049046171236779950080 1967710276271169756546399119343616 -21644460875456840786761373657858048 7245109825245384036154102587064320 1861516028775651656371590465060864 -369641895475156104697318672118579200 6613413129416567754067506213421056 9646128630697143889129100042829824 -667708125550093238904362522988511232 8470020053321885392773574742245376 3035319043183296879530001773363200 -270070870848557933627503373325434880 2202856960900445353469234420645888 8513610526195019548549469809147904 -302895487514406287106116117409562624 3572233769814850583460859858649088 4411967823914321865785179390345216 -925339934326151708650596734855020544 6113205417780821567722360351490048 1860731746240809665341323825119232 -380738351280797915848932154400571392 4301723695879757305794670928855040 2015739270999721773871049358704640 -235931221860461561283378275961274368 653889628930321140375691020206080 6398991035633620026566350645231616 -531238075848166109984631013301551104 5246236080682462302776851154599936 2997448122820908046163859900203008 -532496068573204737701053470213144576 366894853626395990331837642702848 5354452383290846355388523345870848 -999758046278454047957009961989439488 6179332817743345442936300054249472 5625850310222834509618202439319552 -699980843779263003196501322683645952 3143801848215418916399836357984256 85064241685873227714560367001600 -312579101153492561359594156095176704 6304493412435431594110310533824512 5730440621768374320610593199882240 -81892373981970365689653704037236736 5501597463243970089990649997688832 2710287575968852250585429700509696 -814040268787755942664654433936211968 196321017508015679453466005078016 9006808184823585134833627654258688 -358184685008198182464955416940904448 6531831116968081051330105227345920 1368464829039004240454807524999168 -440738864340513687075763744269139968 8293308344426924627291486858248192 9732915533287096986897663525912576 -805731063100734459926035527146405888 5899548432015020283149729696579584 2000478071958362889564045799587840 -206736448382385215918382318637547520 1909839998259712108010906872446976 9762398855856497554528406123577344 -653822640117598702955233277600858112 6069775029025611525873561965166592 1934881796399300605780223462473728 -766704097913713163905382783675006976 5881688703071628605081949455777792 1389062789418750508758836849934336 -798621765593755840316994797371916288 7325781176394189843305614693892096 2209931285505082556259158934421504 -60049042204106582210393863492730880 5826157893035606517585628043935744 1530930117377725346281232292380672 -719344069157684499498475826901417984 3727785046397512502813294044643328 9637661782167246913884278696706048 -137250107328238615928673274081312768 9138332489298159750422801883856896 5146643448736734923625394274828288 -928883313488887857186113581444235264 3397844537278166106720775509639168 1881794706610255032351076521082880 -838969204838652925199200836695097344 2182932646400397276212968166522880 2757038531855034821914175882657792 -562073340918427029997428398387888128 6212527685061209472017850290929664 4730262697401669645789489713381376 -346356934277377128016955761269669888 5083241752539652115740443054964736 127497778414409382609551292891136 -747345510534442243212887387512242176 930561258325761638224506361217024 3841119342309734625542544052715520 -216755589216024444876063310373453824 4092861039809514481765977245614080 1022382718865839010455367446429696 -312603347312902937805601322651615232 5115051508801692095577416903163904 8765700443742044604004114439864320 -453271230113580632055627480611946496 6580676400324819842617043249528832 3994580893506605163119974425821184 -315268094099571627138908837380096000 9526049038843571144468259034628096 4044576400144311806495841400651776 -595111032811952635382695270325157888 5374448165736786898072704093519872 4173874248144839928005749177843712 -721000031144552040207320687673606144 8841474032597610083013286955057152 8835255320335190553731271460126720 -560949137378994133346785591553949696 1139812891901426929665844403240960 979667640662089788365536906706944 -102940473121478660772040119756521472 619222736696755566631991321296896 7930967758008737633774645255602176 -157786938417005903000610054539837440 2664526995685392524801347539697664 6543933467843487483358610884395008 -587132327562130812277573356336709632 7870428113085904935412620624658432 9962300885566436355692083508412416 -218625795594278930157474855027474432 2543709728899168664727188825702400 9643045743655233872856223062163456 -732691834243618233328598889005056000 8204127454643035887229829734465536 4690193238738740173120189988077568 -278583263880169970869518981998313472 4619925506115089028798771653246976 8393153238051883959536838407880704 -10274248107717724612352430479245312 9927267995727138121333882954448896 8955066234573516549166379359535104 -356771096471034823510399586876260352 1709658367430592116517642059120640 3569210936021067240265481518579712 -817743872871872427717548549804654592 6507772244776837358752506715308032 4744748480440447733668659987480576 -834148839740347688294327677691625472 4214113776535927587202726103089152 8116608291326019807548921031426048 -750846538998494347285887161393479680 8843630608426477240893147480850432 7955081831109815142580306476793856 -69187910244474692674382383535882240 7113127408568200003089642016473088 6045075367401989815620017168842752 -11692824296932811307602732988235776 6915707575517707095856308585234432 8634963640741722397994565226201088 -440741274893325482831806062940651520 4581489921762371458912656218390528 6982751803038315660237731027484672 -452588111920385771818571309518946304 4669176546730020601175265266106368 7786345728870198319357846500671488 -821760864896362093248985700398792704 3436607532313336211540502835625984 8826417483722746522271034709639168 -545931585238856314246359571903807488 9834523241966466111890367140855808 496836318554252938944463677423616 -289097861157247881390598425730351104 1330943220174127591300659696107520 7469689121517641693901670253068288 -368712516793338538176980092866002944 4428197677323417262991774555570176 1821031616238038975122689472069632 -968899088957826729206362143308382208 3017539895919175603474858759946240 3380847122779181013473719949983744 -295351647459563496951725244754690048 2627153911841344869562761128968192 6220116180841293098018299361361920 -689038045096300151947969954714746880 3977373327251802779008151760928768 1206705989376094526367132083552256 -496562518676636533634046592873922560 1800970065486063514076619584045056 8430563903304467226028119961894912 -683470210798288810424392265047736320 6559338285916175676166097474682880 5044049552123855713038141411557376 -349467740406973933354054078905188352 7991140373787586745168550430769152 6407340206164719498194107951480832 -970343372147321533232209313876934656 9103085267742853211479200128565248 7710146750777439012222711378214912 -283013906877592985789698513775362048 2930174070123927492501987229958144 274882907042029703765190489669632 -791550995082040106948483462700466176 7032776211841394665430411722620928 1872142182484193761430256654221312 -893233290206790912978854597789483008 8712338961279840577300330069360640 6608950626803328490796133157699584 -329839276204504937011788181384724480 3662012806472311623505598876745728 9743560015659981457203124615774208 -63323854627999977664371115291574272 467666767627446304409305068077056 7196873940746182890671277929922560 -879381667695013602268638952653062144 6614216990123215989838240232243200 699044413187078971125262834466816 -522826833300626937145141822090117120 3334194504607881756917925532401664 3618754486109111393119091772358656 -435146103447729375453659987435323392 297630429534692076740152720883712 9656571872340442091151856593010688 -387785574923323123476086639741108224 2797126349862425270683474350571520 2829751361610201761152365678821376 -125929512653040694364658689986527232 25324159289661872648515718479872 8470903203154585577440176867639296 -103639453982115842462609821786963968 5601101531220657683082410729668608 9247687503792784748814624228376576 -939299475092158162529381320514076672 4833773429281657021155962903330816 2692679249037491007933933452001280 -215604048994202492912322440314486784 2154321795756680001265699127296000 6108264168679626720040543900925952 -151479127429604551625402041296224256 2588811997101902408470121871835136 3635799743903898583198462617059328 -879008145334181352213328225162493952 2359611773520871088440715260198912 3675783549131837598315419269070848 -309806535183514162415750947260071936 4131160700382199485546785952235520 7867803041894908450029093850710016 -331127471163128886010593567989301248 8376245650843252596048072236072960 6112214253184352482993776122396672 -237092784611451416461436829533470720 2408884318849788844720562689277952 7484032493590999548473249261158400 -168556064508905598560339431442612224 9175724875036980084501311444221952 7711779271174202157711746505113600 -931669621405456940716777862460342272 3149172617363414561408208177463296 9579903794128493021120599966089216 -862784102805389263227598030946435072 2734294524653480411399171034054656 6983501738522082292091897591627776 -218989036868874388863648140646940672 6947135305025843930665206849470464 4987151525206138119086325656190976 -947692299808399190670780062310072320 8304733362260478739727995845476352 3311141759286296762039012929044480 -280881016839146657691875830910681088 6104883718723359221844375530110976 8194783786856845907285838103838720 -31181687545729102668421468522545152 8181018430775201884729249487650816 7531353437080958699850238684823552 -667257593214179651974885113329614848 1299411110861384122534526887919616 8237666825614087342271310384332800 -676888616933654229157492106415046656 3192930662397994399080968055947264 4755002797160681493507143089782784 -934243135501609985036022239285215232 9596197417179770558832965582848000 3979555438854890122888885089337344 -386497543895796188006161665881014272 2411285652896316842427689214148608 5496062816805707231932513007960064 -244460763878870494640513797593235456 4476557159034690649190888764342272 7649667324868953357062812846784512 -169090417690693366793030306413674496 5079143810735587867763800643993600 2076635118259566173207582830755840 -248198959154003599261094808328863744 971893756772927617970666433675264 1039204577309409556666559496192000 -231604606548209918716426023436550144 9776242583089172116118702196260864 7115271218838266193851905264844800 -840035224762170771278918706893160448 8997883138155554109833110043492352 9028132974858546640042407336345600 -923060500592749259042326674459852800 4209217985278836449742149856002048 8481052653532990092238129134043136 -971975754899456539041661949698899968 2973476006276360871870725456134144 5501873565938306604304198354862080 -541560029563970329664203236113907712 5561262599188122037274755586850816 7666670537308956304195820332253184 -826511753320143615247983681189445632 1034212463867551817251414826024960 4081321368074436954910008740413440 -21974991832999296950127562162438144 9537424653708310447484161845362688 2778858519650696076294339543695360 -250830660235951198841934081452670976 6199705905034387851755398071582720 9610367402284399789737958594052096 -388669166725911443933713183314804736 229739766213690631006149287084032 8849004040907405184196206844182528 -984622348938516795156832344243961856 9668873842912192927618900462403584 5989474322061270883771546813333504 -41391265499296386828223306174300160 7922739028558742660543970218606592 9422893648185179850963656047067136 -866563550765821297168505708350537728 5624778602336238262263427018784768 6723527391022887232776939449090048 -363105930223345596527881652665319424 2086505728884832437915888683843584 6338978992114119138887411282477056 -864662720435947194641297089134329856 4532617381848797074216852987576320 4134517841958750595683275943968768 -640124474452109481050560380224405504 5565668207736613358241419658002432 2734159383762366919423849035464704 -340860270281368471010051450088718336 7327286941999707551235409576984576 2801671030612887659855391810912256 -166601150298459910131369525666381824 2251068402523911434592262966738944 8479395518389444923671487262490624 -14880663556739373846439703307354112 8508503987582288838339189052276736 2014263377737594311745733312643072 -990912449199667026861828528020652032 1993264851679412623292952985206784 6205883465341758290300713224372224 -753327934172362926881909323142791168 2847196420664969866226211833774080 8776997346610087653420744449196032 -75382513073601171180961120768753664 2089128721581280407599079233683456 6338165460463413059342334706057216 -687100696230929857766670883818045440 4406141842336325326675279005876224 3677635212141344218634749298606080 -259010206832793465506441841361289216 9688743747100353485383716296458240 1555501786912288610825221502402560 -454748678313576870716442021222940672 9901522680968662397186521144754176 3762432705805562492155513968525312 -559943971096080334394600352005488640 2851666124283257479354718099603456 8705646225886481996857562061864960 -449286409067269361879266257727913984 5924609396963275377031903543558144 3998144875703227986193248990265344 -944633564494400492610065926721634304 9589237032656998681881037280116736 7883465211873014661597770752720896 -815727815028603031483690787532701696 1575891925732509088757224266792960 4124969823410174473057060721262592 -796865277732571351419738960299032576 6944182100175493191881940143177728 7596259092009429472864028365684736 -868706040845269516136481461368782848 7903408062245181143217368534614016 431351551527188213258399443320832 -784542762483316967701014456343461888 8249883632340481897183642149453824 3252703045635047158745812317503488 -287113113220975645185787827029278720 6591994780279145488762671730786304 6734700219298879924969776804265984 -160676503578201949102873221303107584 267307052496084505477441543733248 7007366435902684001129491943391232 -886464746767849561966119381454815232 490586753008990023171449850691584 5275239146241478617928900800413696 -130312529152707793403714846888820736 1263449628763330818009404165586944 8934070967448087423280590918516736 -63201654013238046473834221757530112 7798127131673249590777261047414784 2924828188947335871557431707303936 -148334479239606534022867251718258688 7255417109376121802147023103721472 3971484331292837280505101096583168 -594225947963212332931554481165828096 6894213234576126089535658552983552 71888142818464155124681513369600 -221918297274235088588233189458182144 4429160047212913887382870247342080 7021653454255707868011084076023808 -815866498010420364346778161923489792 9399148570607622056188970109239296 2725257369197016987200208664264704 -471900325231033146916416944437460992 4860815593583440636588828869525504 5363779969725874420825018435895296 -239344187282387934397617553541169152 3587870321135626423966350228586496 2053718471641471979835746114600960 -752451780289811745823079497662988288 6991529216481050191906272790446080 6327337911020500509323913389408256 -154181446589450757934045529452314624 6125159116102332748445321378398208 6866726320834555498491604553957376 -697773506599741757954066104067293184 9819256581173140871722564877025280 7266341427703666800842587441725440 -417959161909025297229462981717262336 6303095412944351654594804262633472 5613632969256850282841322526081024 -56611885983180679643244077080641536 611586993220691333050629953159168 8634599850611814432564957568565248 -182838538666008094632566338149679104 8752426048601305831991762908872704 7308024846315951009990203160920064 -825074632018763275238875782052839424 5191151733159817393305715684147200 8939831361904321553523475526713344 -910109580230251451078582891913936896 457566370214949704539926188523520 4695421880907372049872500054556672 -562950649089582753335079973404278784 5520718722897379817391990941679616 6289695156412097985546857077538816 -505061539489161015194297276414558208 3680836860923295824354487641833472 9329685216063943155158312378433536 -409019781725750280433295169498906624 3251508707661985277978453936701440 2114209771313229560294170173636608 -156907424109440715883548913782751232 5834422209886897964292539355758592 5795245203527358371245768231092224 -124270615794268603452904719953952768 7507959107797473184565514291118080 7622987936025094318547902486544384 -484587614676468296550765101739671552 813281070234639287880670269931520 2986787359598109386076479381569536 -288245785058062504296801453259882496 6803663153821983969726170581172224 3155310622173685750800968648228864 -337187853573265523763149083993178112 5264384779232568810387185162256384 698673529510521404396342542860288 -932204806678346806479744145790337024 2263621435866227049462717564846080 9195619753132066992767344285057024 -896579797091520134927902210474901504 5446800436667095135504298925883392 98710905096734304501002810687488 -822463281632608599827678735489826816 2484140692513956582062749885923328 1455379768211981288456913529339904 -342021563130323165017666248438185984 6163110395518165246489198705246208 3715947331315683200926177942306816 -806587397201668622228197635868590080 8765199360500601446422548074987520 1974930204757135234493114619002880 -152819912917712154033406544126672896 772540687332762085260588079906816 3978593443543588812370140958031872 -389455450923224355732431282928353280 863248954894552312791709872291840 4281803205232165462137130123788288 -618822352411627343651210073147965440 463619875848944276931731485884416 949103293921550620145786285981696 -20641478183696329855117951672254464 3340738495407000206249831149076480 8624687099383016335926201067503616 -510614034668691128670709978371194880 7828609581210211397924790554591232 197841211147133436575205476532224 -595864787793226929135388587957682176 8209598248556004690337625632931840 8501925941427182464484230404505600 -633817147138235916312508861775872000 3482949897185561422662975514214400 9787397672195815830513489666899968 -350572315391025933526166852031479808 2009526032698920048253942007595008 7321271481340377939435574446260224 -450615813626138598485148342065037312 3388468860346218914239299603922944 5586163504593746192411358027317248 -618423846875867133243319558145572864 3839892378068216828232344126095360 5872492943339555159396202244472832 -603722532437384965496491689440706560 9841510560670877336577698923806720 6053970632318768002484997231476736 -150589754684227976610908995701440512 8955266030797518670098626508750848 1164652939647128050783415152148480 -14512618041501711815233628994011136 197696864482292624610215612907520 1871033858710464705578910628184064 -584586291084595211102803021036257280 5533347955251626753630283895930880 1849571137074380855822692284104704 -738168709588224490708138215363051520 1100384044539015971243833033752576 6836401074113375292025003747311616 -554805240835508301826006673816289280 1037509745589900067494200904515584 4743872791023565529797470648795136 -758550826331168694980441634760556544 8881527775330334225079171545038848 8797942725677696342541419900043264 -204791902053738058278018459056996352 812027001388651879625669556043776 9884916882732742785575350261776384 -679475991062434021334519068416278528 8554833766379546564610693791744 9374959721477318933632874994204672 -128284038227458790433217450979885056 226932286516921627857230351040512 4893533128238816347139446170189824 -902867274408369821043406685928947712 355318057944086477660394298015744 7034180888859370629307584533757952 -824259097449942973751090727641677824 6227213887551516126349312766509056 3477081366693307850213110554034176 -560907357004723240036827353986367488 3106147872303173116419466237837312 3536683233502337729549207624220672 -720920190118368856331747009987870720 1851061797611575933679068187197440 2200336416809810438500732157034496 -814505023839103948414492741587697664 2414898964335882155136397925679104 6909293360554697761288417664040960 -190331343802884807957295350392291328 4851645563019508451899175746928640 8786148549606814863785147454455808 -925017707125294305032311121932976128 2000696262863555066995017684877312 5405436272972249655046118827884544 -701863840097353718973399110967623680 5278744740717185883287719958806528 5386496982833772704401515419271168 -577732396188589926548024998743769088 9670177962529809866079683100016640 6772814430402253486105398700146688 -221207354729788392679615706494402560 8451193889696237524135659731681280 7583013556144295886314938791100416 -155633692627947283016675763362463744 7533900956794784884551163624554496 8339107282903013026325818020724736 -609903751237261960084443403191844864 1395863082114573355020050126340096 2704106343761393866748462733721600 -370662758039343816635027876376215552 7066657280337571401567955610238976 5061162342053048955431995052130304 -223366179805240465149381562089865216 8908751936774751898600121177210880 1698161318335640772252672490209280 -110406379854045757287183958191112192 253959995157398940792816981245952 3316312001524364515576519667482624 -818056449886396027540663440515268608 3106131090946201159922794090201088 4230176435414184757759894997696512 -205011295268265951348459162438729728 2751578394326204471056455622983680 2704587653832906476507510683467776 -116699453017334186002571332287463424 7843013359587011358561286077022208 1276151053644571275118491356626944 -680044554202509450065979107281207296 7485996375899751763766940820045824 460330754548222608321653042577408 -483377154593345500277253437418110976 8373791222009143173217950722162688 161579842043258224615993750061056 -631912698291474869941392449761968128 1381626900474508792697430869016576 3391127110359737295045251775332352 -563104150561187363213051415794548736 3391010493131090471398775713693696 3303005597237870260408940771672064 -905291961377361950793054733845135360 7164381593845683809667316078084096 4172279080425960797223581156114432 -268284664732252100391741984327335936 1536058383330267824808264032321536 4436161674282873703892320939671552 -342621988706436114107483865848217600 6502406954247073157488702860034048 3449675376924887477182287088451584 -115317906797478381116327504048553984 4933935740269812493044112844390400 7101264711870418569246562106474496 -747154859787697863681143771165097984 928792000579930691605173224079360 2591958784215486719665799224623104 -392206307797339644619988635865841664 9612366778349899217694234310082560 8473877386188359762638500649762816 -420147457722560166886234776705957888 8580197921856581665542999468146688 3760356877422185529952165825609728 -513254458305090763753593666617212928 7707076452766674552416731951792128 255240995132610240758808450170880 -456928483444461274574363296381534208 2586155412615596007718341390106624 4500576627681205974996391594819584 -355220524709420320367263094780461056 6770385609464035935047877633507328 831991295114572943934548428718080 -816244036375977727802709306693910528 9311004185044467133846473846816768 5014407187736213971941043405324288 -959301538486058345135696281295912960 454856638738068863304160071647232 3152437983584555580503102477828096 -464781342107234920354875123693518848 119556931777474380810832440197120 4615766722069155327325224214462464 -362127689639880818282444036583194624 7870136229892730941830636016500736 761314860966151099515751744143360 -569355621081339543228605967997337600 6736127423411854701481216104726528 449865509288078639736037052514304 -247766777478815243449168539190034432 2827951536171787193237987510976512 4545593521778396409614493535961088 -140902640919226753836788528252452864 9319826502173037898152099121725440 1010254225854953772978286635253760 -409491163771285623565573166714585088 3028007647903269797853240762564608 4727987442715869930603576947638272 -62589717467012199129307647144099840 8433154546009493997990517802008576 215955686970830835380429514604544 -694683346983108455540488425695084544 6012491661165830185286839595696128 9088049270270226209070543510962176 -41722306045502393088632029007839232 1869211897621512591477515246108672 7145682019245063314307023066103808 -727041263313080323689961653102706688 5568368262164610631800788497727488 921905669109484006974243456679936 -364130414369363972521817348021157888 2756556830339062386859759416377344 7666782943897298691415229186703360 -17989072933562238175512598929211392 4589557469539348168181516490244096 8639309110106564719446329946800128 -137260075572063458933529172221362176 5055575805840701317838291706314752 4696912005756765948502685213786112 -786470506702477959783923789871448064 529375079663018001517669167136768 7875536909773255748574290433277952 -892935856174368780496321314132328448 294776469612809436798857330556928 6914466390450361649562201781960704 -518850738948778849755269147643609088 9167183162938133670364082654412800 6387067304748258706901658561937408 -739172753482880746974341559343906816 5381702920258007350407595611389952 1882739176064808263399233659338752 -859291211856530007523372848585375744 4726505063872553129446411534860288 4537116618569006970293955613163520 -619350106664498710311933439608094720 7731790708190116573900457738502144 5792745808042978607053601108918272 -400048810853672306156506469397168128 4203371863661742136235135510511616 3896698678781102611055082490298368 -957117992772498901284841385059418112 816679311563247626314374564544512 2357186097952178745186549267169280 -19338341289493337279167138885533696 8688954069553147669164460374753280 3833659045826484043216306437095424 -367749311536097308838481687818010624 4540333924973345743814816029474816 6552506472216017709542635993038848 -653473438756899952029820705600176128 1086188938075718632571040474071040 1787091828488507958634068322549760 -958498998273476550779798002316869632 3941280825915003501164089267191808 2431038169176563814911282151161856 -302343869714857046660173338515603456 49501260585557918663488225411072 1223651219353495408165675337777152 -377760683972174511505978763975327744 1228112936025402014780095924797440 7826960439117872383313536777977856 -912201106092446011338201409167294464 6512395586769215646445853533536256 4251217312336085593943621125537792 -910802964939513884329989549424902144 1443531534884530605500370054545408 401271233446499902461996360007680 -266530669774493735311855759124332544 264525894514866327373714817024000 8883059259342553541792969825189888 -554156239819828481615120666766344192 8939834097358924961129138411798528 2542390277086779286582108161572864 -732302174258489096039373346183315456 2175437490149361543731016013709312 7349666807464248629543150731395072 -152343190822799112935818338236366848 457962910937978359702687720669184 8329670961779730518961565890248704 -831965570218970329379815225500368896 4595020133710805829975670926606336 7116638711996992383904182320496640 -148358233140530380701691741942579200 3080798768183500201254173420814336 9901847089076720723807462200705024 -88704260001783162313923432726659072 8795940537379305875285084620193792 2958413450648503937034044879929344 -660270040553446859972736592495247360 7640237579918996443477846765076480 2534374256871333770353878520299520 -900566027453365257190163330663186432 382470293981307483855456829440000 2607642888741179873976635281637376 -420245823626047402214981008072114176 5233226643710500941804617030696960 9464309012409739721180317585768448 -433283584191490384408111974367363072 7150894515649889101617112658477056 8383707879973509129669627160297472 -49210378252320945506567621057708032 5313865729355193199776956873179136 5559383826917532454161341101375488 -136913397635133789764366052752359424 4681618607228139188655806163714048 1732277561645143753124361065725952 -613257424150117199163044042234658816 211210137016561639456979141263360 6660188121315976883854947905437696 -710745654984323046581740213079375872 8209771566455476075450580179353600 6866672823841076613473783418716160 -591769428003457383586819943421706240 92101208956013640409086410358784 3235016057461770594033639014531072 -619889645929529707957367347129352192 8783209728296101155656832710082560 5060809803907101147676648134410240 -891370552573852291066726799544156160 8653376652710204601926056329347072 4266967911197125797075304434368512 -299097550251832822515290288091561984 2303230071447233701698455669309440 8763510514011209053339386023772160 -467635518951602544889220844180471808 2980762842065010222514828893749248 6164341564295163197476291878060032 -779160753526155082595115519180800000 7734231637727083658934763242127360 7147524065117707469608702479171584 -918931702055368050030159212058771456 5414225762729418222819686773424128 912814875468612485201724704817152 -952781076749021899764239427168108544 3526603720628716612317926385516544 4174754470577228002124238182940672 -914285890404555937615421091231039488 1426344971388441960681368222433280 816395713116363474345935123775488 -322023769388073898920667976973680640 3080222962720025655757360496377856 8165296537633197368279557811994624 -165214810877992187563180833430831104 7003678400636887242952844590972928 9581417101428736819742796222038016 -145430728013206172315855244872384512 8519520673812653492125447202275328 2736822628909308580109169073324032 -353407067791478895485614777316671488 1267292765379267831768186953400320 9507261690871853412789992191688704 -227464573072638062556493355174330368 3290035899999692222998469370970112 953672606285061705546148584882176 -737614845937091741693926230003286016 6933239982766580130342212321935360 19715208097330722635185374887936 -871409349897427227058946710641311744 563886867494030169497829919162368 3737085459158812854060228441800704 -548511481267229525288909105535123456 1950703391931076558278730606182400 7108086547669371127027951386755072 -712987460984137252125414121434775552 4458441511930028906264798731173888 6500644318772733799070899015516160 -267519435736030759184814881344847872 4905462795203714609483371507613696 4053071064045927222195601377591296 -801102421457295016642316845451313152 9878515520868260549110039381540864 494749219716451394206333833052160 -920282489982459000805337706650402816 6853161003521420445764782617788416 206974750148596721267471867183104 -523592384799286581365942822451019776 1521661925626569292694593252360192 2447259323423816715810506591436800 -714643080378381695165568434852331520 1454009760620278370581183280971776 33266897132048224103754398433280 -537411289323860269989944050396954624 462627045725264653300856325668864 546381131963611684015013512609792 -684000189127618898845560249941753856 2649160238005424170144650462494720 7950499323353899881265344272138240 -572901037378985813454940147265044480 5375887214381129666925245344251904 9346706718779148686916182549200896 -747192511751482160365465148753707008 4983759321310639171526868168867840 4835734987498944612780473243926528 -510710707859507670160915479029350400 9136905656710966993487122556518400 209993968901898342266284632178688 -941947572050535347172234284354240512 555016633343784628286747140161536 2502838491076552189823330589605888 -588974220860786399767518081120731136 8477279230347797943119096852774912 353171335691760531893045948317696 -126269753297339156126607220974551040 8200158109685091673276702772953088 3430282071660877326034699278090240 -319589349112001478211913676127993856 4619746235269817918965823806898176 7660095998735932183403666304139264 -438416756330921352238512836515463168 2830123540892389345912389768314880 2827719096813063491418377253027840 -614712071386335355638845124141645824 1600575928129543573656954908704768 3652378967118325480340849495638016 -889928405590186747141825028717281280 2783062810691313497283902396432384 1151726207342955435503783690371072 -771558326237672111503795605255225344 5468008512776446109034854234456064 5806525388002862419969183582257152 -524943124570921617208391748917657600 7476675381056098549176216166858752 9331783321288786876104412982411264 -732210993093308944435686030905966592 218409596983402257341887539052544 5572088929803688742191955963805696 -837382042621086010284477569277362176 4881017995627825924197208345804800 4172053180455619795579879144030208 -107267442066383520630074180947148800 1184059679795634923640214280732672 2955690187590166701282585256919040 -257562417387496604576708172200280064 8284728140653545244111892165689344 4179257769037787628848302119714816 -952254224517832336250165644908036096 6776144989248285523857605583175680 2557169958848850963165407902433280 -97178985889569322370133016121966592 3750571677687405467972068880416768 9239636428811430932270133620506624 -23716905496231644904548124013363200 445376351822649771230157850279936 6892700418469715659772656892248064 -668597537865966911934582660333043712 2595308060117908806585082544390144 772576663126105810311541663203328 -527745477651534192437311461790842880 4611134039216946987593266402164736 5460392804933494988222912255754240 -658460009995764687999965149876191232 1210619361296726655095806904762368 5378362130204826861468220125085696 -165299690006494865758108173392150528 9536546538846388577675392369819648 8025623306999607079534732895059968 -219534786930073782887208402871648256 8293271438448907612228698958200832 4047827302995121786473823114100736 -545046383379147523170335294440341504 1194440066719358668377205214543872 5183019091059113142733607071121408 -830219114851916288673190308560764928 2968189894361836576648377543950336 9576918448098696604825016955043840 -250493997928170626569838180886904832 5911535930938365703380133212061696 4019136076431695470734673209982976 -406546446626603195490379350134489088 9485116581148476607898552622907392 7014151313520622781492212705263616 -836888280110062119703716726336126976 959265497649107824791364059529216 393305813504335952504194565406720 -855517131240615370592843008867041280 9981394825698578110341854057725952 8435813614248661398016309151662080 -45714201719171101575907291705638912 6792099716245884555875858406965248 8654180957064303660740516448829440 -29050164492311984900115720602386432 7251321605226752126676584089255936 5178631541002758939088633756385280 -427415855467849428921150060705611776 4281682091772956238307484502065152 4521089774218500406279544315576320 -16065710001681887941011763080724480 1854331222520652524433203756269568 4272401115992532054554153781821440 -906636781580375714750441469977296896 3620475940396495421999762483707904 3241014501928648911276286177968128 -810721971161822915305571527377813504 7976589557785310267242007251386368 957046274308440951705581861732352 -549934556364565938603452422877609984 1274012175543496849584019243794432 7428743591150608345573330524307456 -570434554390485222651217785835749376 7125688570047827854642550602203136 3411080580331099911772299696537600 -696719165412509131123798254641217536 6881397315454755278962615748919296 9697367690987629277526379643011072 -246114623245195250485426986780983296 4082222071391588517991177051439104 5861297921105205893522926157692928 -896962766602287713988270183457751040 2395421764808640769691657787408384 9790762793009723606861199295119360 -659016374220473843721874721982119936 5533876118522249517509263442837504 4639638879865575593618983656357888 -753416468163046775424284883901480960 8988701092637421651980324601593856 8775567459245503925816513668317184 -292710997471377794698701060901437440 3475036664817393753471178967613440 7123075248295435422890693396267008 -414223958856083264979154531981983744 318292174818686416600955149615104 2600581028843022373599385424494592 -339238672989054701946317102987083776 493077191368971473322618480754688 3043030664900293724342640523083776 -476221309731555825140417736208285696 4404585794176115215309915635580928 9635531775255047034801523607470080 -647837714526097220436416341435482112 50893520443437059209827299885056 794908947758026419985146013810688 -346135604828474766316852583984005120 8540947843384169084113026809856000 8289336354606513548710509845413888 -3296684246190009874793197765394432 8746586681289393445158554871791616 21598946269439979181517133840384 -852865467450946034390278629981421568 7942556800428312742797204772618240 9333538482533454730757369457803264 -692282307639165834521380642552283136 5122652822343571721669086959108096 2158013042408848217345750630137856 -169403263227248362833790044683108352 650540242517085713565302854254592 7973324274447279433209426680479744 -957172476291044396331281704189689856 6558774708719502590390255912747008 8805193524312768349307863966941184 -300000957551350713308050445966508032 8256703074978707981056200333590528 6806455982859323159929293562183680 -893303458501384011231611381256028160 5050462586648660712509000518729728 6121938678142319407786778953777152 -257740430780535346532269371120680960 6046348305256733831966911044255744 3120081316315387059070630321192960 -750533200128385062364425985005191168 7656301970341308673655098757349376 5780492970267834449778297754615808 -43833396357448435097631084859359232 8771600487529607227131104652689408 1187460490812625867209389773946880 -841626480424934227096906935564238848 1625154381045206741714509884293120 8824727587224641372047118461566976 -219865246577032210467393278157258752 9332770402622029231604863730712576 3230467952012335560400478360567808 -924980395908933482948458471745388544 2117716038167043568698185746481152 5067127068801205524072522670145536 -80945934488921370552974576394960896 1832580507560696011872270723055616 4949307637326548075584385380777984 -787400807801098388199425781111193600 1108929405410874139229977841762304 732749960964571249431985736646656 -787615315194501558497977239638900736 7634592128006957562167867918516224 1529064815328360412354250511745024 -496233107507603762671452532353531904 4307837968581537936882130856443904 2635395483628426712223173211848704 -618267948956424567444015756695568384 458133355244330635123617836302336 3790887122708568041038046730125312 -344582103265358392018656203427020800 8036399944555475344925862104399872 5180306852858282508050639169257472 -777106082196997361668445082711228416 9861303083804697568638934078980096 3985742347731115242006053430231040 -175094237582065544215449880982716416 6486057542395167608961093144150016 8554189995991883677580149296988160 -914833041645942784464713331660292096 6006037855368994538780301060997120 9005546347000431546702040125145088 -642682231996434818715641201117102080 163848910395991663405334165192704 2334128561652532927017837685374976 -716080420826593161061077703142146048 5524674768056931086519963263959040 830376946773172685263772036628480 -559183457699740110706176719081963520 206654606488037813513522750947328 1686428690617265665806040005869568 -497449377513594172658512938991091712 5817066898291785545289755839692800 862080240235431704978624402685952 -75038036362938074455896854670344192 6083306459801391165577045309652992 6697773637961554185847395210756096 -628642448576395901013614327393943552 7966379108556052929408535743168512 2130122340841032537189331545096192 -954214358862003144722457454652162048 3556008997474701369031785573253120 6920856842624762391432340621492224 -955056701509432114187498942147592192 3801120108190060615631045669158912 8695130358830176653174178576334848 -266328422947014728685686593014464512 522928312157424854019326615748608 5329012828653296723709409909276672 -515224768534691784740257454568243200 7062718899173282977248209333649408 9748784817109893453624820732264448 -828534697629477180729965034176774144 7504871617066599137247885657112576 8680128656205629976967998326439936 -311840933722546244790846613432041472 9151394345627180193333233781309440 5888593839138187578754860375343104 -53606324552984802301874832700080128 4849449829242827882294559926910976 8653717079204990734329531829583872 -628608548540252806677386125490782208 3749403420489589638517708321456128 4605987088492329957770916479893504 -960382084452072394167089766454001664 1259532713923887067588822579544064 7513726844449686318373148114812928 -46101230175040719561314023298301952 412736534410663218277295046262784 5570243158379748660111477674344448 -284085069799300751610302774359621632 1247603785353939492547133519691776 318061485474485009508116430061568 -746749206629056512432485236564033536 3523916304382443751598725703663616 5922578395487453356839517571514368 -667697328280110092368526209628241920 8549392023628141204701984088653824 339699611213614685647560421408768 -227398910746444603639971435509710848 7702071827071954276543067978727424 6292462661539609263018689068793856 -648553786108436555642717256248459264 9385380350090095996583964345106432 997094727160244111361409546190848 -251112875530740059699367677947543552 2029877357469406123323346410012672 1914192875837378530205965278511104 -949126761354989084938873649930174464 4132445943282030863926790958612480 7424589706989349470303935208095744 -601867859629051476815820575098273792 4488878635656576621087424671383552 9885359487661133266003896083415040 -215165985315430819928089812996718592 2372446751992510611259923200212992 7891972707350277294515177083895808 -540345181438224252623228044249661440 6477595088742255685788033225850880 4961020000681159553579681006485504 -947356265785190414077631182636318720 5092081196371487370379173067489280 4083192721370762785068038848774144 -112805165066382704296342784204341248 6822585418610773201688325081006080 4060955217721063083694618356744192 -614234763786967712014421951388844032 6540623313103937067482209662795776 8184796890535373847410687258656768 -882232780236474266506513759181209600 6396695789808680701527943635009536 5549930781296887816275204958584832 -874723941601039670136557370580402176 3168036965706446681099254840164352 1130837019281874090590623470977024 -908371971488896316391118003779928064 2056529432896820318915355729723392 4064788181437670385529277906944000 -393245741549087626088401847137075200 1266015560024611426516882721603584 1608076254437460533189667935223808 -45413238580754919670466370923921408 8602550807041317834038658126053376 1174187686025015968680335686762496 -973958303454661484605830151356284928 7290423160126546933322261773418496 6672123802586908633860760406065152 -292061888960079723862874687149178880 6209692522026413627894165403598848 853286673319863284800482302754816 -589242609243039240569224350564089856 8646058767192375982289666890006528 2664786525834733755748204761055232 -781696240555682164011805594368344064 9931716682772859048660886108504064 2583336205003097607647118822998016 -842517667338897322165989216459161600 3917060053574467798350919800717312 4064518083892127475987841950941184 -806506399126873661316109572671275008 429996004253403472548554422091776 8711230375042929749135617486225408 -854430898492589341749516486945275904 8682118252420459864078587554430976 4095897110437258966904557342294016 -688117506140162408428379834014498816 5287282965152629003003257279217664 1493175749831338008705337940508672 -241809402501455109518864435139051520 7433342062037847697086630305202176 9773249696812860828261984256393216 -139806165115197912493199972290789376 6030356560166104243326885317050368 1084290819416388127905142462742528 -9573259702122015732979821547880448 9089830830008729061698575053881344 6885153989567293275299743350652928 -765178443696717103402299559757479936 6527879069136233032071361069056000 5422005306421081752380613209358336 -907908323645764549526938049650360320 437309293791294707286067464110080 2035442783464639543684151436640256 -683839680199229708896981855504433152 9926462587713118323891521575714816 9881315931593669415175078004391936 -770888952446139238558949291279253504 7711393442090718336514236883140608 2366268322860699636838351062958080 -400187026112135020137463949205438464 8756479791381951764792634201079808 8476659076804966438161375855378432 -359484536013174657068010240911343616 9354261113105074791091633448288256 7114173812463642684668221170122752 -855639057973590485893125342939316224 6577984418778724460857280040009728 6672081015784761850467449940475904 -591027376758795856723123456085852160 849070072577547023425969636507648 693654982238099586607396811702272 -501447189851200229754442239006736384 9715850764785562174230645430026240 3494357201873269798692721728159744 -99255727152198643969303570381012992 5780951111546362132323719704477696 5197005262989738689859785232220160 -629410429642984081383850355263012864 6372521247439728130853908410007552 6255017544829962300786316933070848 -857917697341188534279554151286308864 1816550362835880928068582219186176 6307506856218803723050798062501888 -17482014568854492583914742034202624 7167953651976625277601301680619520 2652858019389362022781702694240256 -32818053487434587537753759497060352 4316829983912485444600425661595648 4947375535432898593978588541747200 -654628502869637120805482612519862272 8327557911147961120007628259328000 4035204900120140604056151093411840 -954584044184572113101821013416476672 7258470283736037371759498593566720 9894735344173152622197177120194560 -973943306768543723312141829102632960 3453659444663932937651358516903936 1629095640459226979057217918992384 -704359519781890798509239523252109312 590915676742014242217582860959744 3904422227912577056810384616325120 -164081840768662875143833724565585920 3634788027905195822440044277268480 3213461072328855425751717364367360 -615433780680422332378139448351653888 1999607819718155883984762953531392 7664052556612196125815014604931072 -361718406924322034632604973682130944 7887029602380360668467926182920192 208641801833118327564295599030272 -525594481549134056446113701131452416 647942599909959249635590839205888 7575946438649533910205706813833216 -567969891395522365126513025915813888 4633762089202320454820704223756288 9868615297310373093074781964599296 -215014397532944507532599114759929856 5966759197106412182275251748470784 9745089594652897256874456324767744 -937409221505432205018344295583711232 1488502320282388738354712154210304 3384165137088036169817153882554368 -967167115473148117813942616730894336 9104158624290396062774001827577856 3627194627583824306616535567302656 -596758335419606060448728271019835392 6044252184881890518828999153549312 235911550102918016490066526863360 -439111044136933569111016724527841280 6964556570611888290952610901393408 932629082896493658951504172679168 -318072974278768702420307739777433600 3108537513770701410092564447494144 8634853285020224939301137251565568 -127014110969073825045795988490420224 9086725385191705080702741562523648 5845183908140663681504500892303360 -38077974075336264635709847960027136 1799767530306431581612423461732352 1300329343087696771152497627627520 -497637921804720183159303127286415360 9787789035152938269804277941665792 4433267299196691305927176720744448 -451838819967134256441298772341817344 1569420924163152578055077999149056 6351950773951671704130649778552832 -603682946999233619407641211018674176 9076068015987763336527161912721408 2310711688407786393518839059972096 -37701353376698276682230381762576384 5813094101007165099701030340263936 3591781052694417930877289940123648 -796964632758238504108765000258027520 1405964626232744546564486528499712 8788517237466210003920952345231360 -515198297223754890526798760372076544 6799753914315157426598899844382720 9477715097563127549124411324891136 -175649422212906825540639632664821760 6326384868176985025688012536676352 1034622485573243837063977261596672 -442474015143732827455207214097104896 6237619796435606966463306148085760 5290578397111079325285218640723968 -995075753977702739070436100917952512 8942612269632009731377118306107392 7509475463770280212341574219071488 -70870852216134572553853685081309184 197805783407230240227255220436992 8559680549260932387844790545285120 -411345394611140833434657373342924800 87030095030774201344451042869248 8306846636966288400991110907822080 -205537929122755625741536127587713024 2589810735677414522914746486751232 3253053446978628287998529948876800 -242639827785455135339238911582928896 1643264534113586919138419110051840 9143228384961236342144607119736832 -372679196040274191463355723320131584 7977644608639601276845461877030912 7439020129456901689805855399084032 -369155544198901961296752389367267328 9292067599680476132875834088226816 8006399310097712462905257421176832 -874256637515723152439571025085071360 3994046656017932132376003330703360 3787623758203691941174358099099648 -399520802648939019867342242765078528 8738877775108322778692722767167488 4823335867359540001631503921446912 -26546640959617509515653172254736384 3352691845329807864682777212354560 3661962680526599130844130783002624 -970096573699828127676261215225511936 6937160856544585620627832946294784 9511258551797405733394025455550464 -741269296587077995369841441053343744 9102361253372938272945834798612480 1441763870544240673739421341712384 -901233478810561716861705868984451072 2997679291149291446369377813790720 4624448875545488614905565797154816 -805383372726237041208892621972307968 3263321236972498838398532736516096 8808972981878658612617184530137088 -577789105468533840360012695010803712 9495436007610489471949777668145152 9629634394800415557047716331651072 -221856844329138826299364662726098944 1695645041744916372691135596855296 5610881261494446184207714472689664 -89120843696485451444817031048724480 2319518350966384725471814607699968 4062790578357780821493866001596416 -50155942713891249629946325783019520 4757087714702146964108578664742912 6111382285410903560261827158867968 -301185604968191682730484174619148288 4323685924218007089121147790295040 8432963138937769767006430174380032 -161653129819858586947450116524474368 8807050113386441010952930412462080 2838951496300585911954779595079680 -175443436487692623500592193856339968 4892754218468005667696738241085440 5769473367398596761195264872546304 -628337005689651835236046672939188224 4003209890835124703787307914756096 1228926165219583457418232054415360 -542475349156514669521221921336721408 5711523302962424900468517535481856 6835398961437683779157810655264768 -359916338750446094536075156306001920 6780607847969254090873740403408896 195711009236810047043933768253440 -713796130252145200263648048511451136 1075605192090502618914346703519744 4376925046765950153876701041393664 -217449500844127310203791807388581888 5401965866744353256413420626903040 3234226762927241388161739855495168 -96860719942898279848279786202857472 1396100800592777954692062370594816 1429575549963468650701147175124992 -1616733421653521938968384850886656 3541685906631371942564936531574784 8710476449940484495945464952127488 -360873418482400268804633607398227968 5772528907291532911699206900547584 414864481298779294750611024642048 -774910777386414110244683924503527424 101038921433473818345632130138112 5610142852823458021571820309708800 -878189547697781554244781195315380224 1632324699354584541658220249219072 6101846400036367264490160130097152 -114208582933194941601930268259647488 3538136423141809527237676699222016 7181866690434146379245393658511360 -132643754909778329468154564436819968 8133110494250452205115910333136896 1265124392565412921519683758194688 -853672624657685702863463371665047552 9581605825248852099634092369248256 1080531696887719509729422669250560 -25474161503148424459713664096665600 2515857677219067074861432725045248 3820050666882380436787648553549824 -361055550320963136196494724515758080 8574533389071397073405683316031488 3651867210626480512007695142748160 -19420638568872687024607950993883136 874580261673276656249150044635136 7195543504069629343705715206782976 -218592733634448593023723572494860288 7322298503510350474947756004737024 2407786427386157978810114870607872 -85008642082056248952256431021621248 2261201966549278049734393577078784 9102119133912919150305116434726912 -837045001840584008849061753066094592 3875252535794841786180243063570432 5168748000500683420960498066128896 -891599828151451305220395234372878336 4480641177812838389126093000933376 2720664502856874414577639523090432 -304706412118683936602440876056117248 8158140103960593989912344192352256 6823515518339542636820588688048128 -501322837690307910056609747837124608 4738987382925993149443769702023168 1240211311095982195520545587462144 -899398235661221834047383592364933120 5717643241571534920467097359220736 8269936881479900987580516852039680 -919286406481732941529599756560498688 1318149181793150938786469471322112 9371211390418893265167227897774080 -48873262936031762662936703806734336 5163017122280106485782440558198784 7302368893024556700185694656528384 -107549667936006919695637232106864640 8583300287320923806531765445591040 5335547332745041403676181009530880 -73785462972947798670653385605120000 5114966363426800094768037684576256 7081138464344000251403538658230272 -36026671756150928574101452541132800 9893456307525064010882261815656448 3581101524868849558111126007316480 -455525418440170685753059742178082816 4242416413985976957721692046622720 2534166452178071338483364308975616 -27643933979642827610452450489663488 7761099458695972848530931918569472 2070743974736794343989812188413952 -82593564814092410859213991180238848 8528413052770676102125351767900160 9908273688915512005331177181282304 -652631728694313814697801286143705088 8439618701233319378757897724887040 3068111152764950770920332577472512 -214195961837765651313668118886219776 2990974860124517849983356841754624 8273611541773222126706699546918912 -939410314867866218201335229323411456 3344692743005650165657671296876544 5429506658162422905558573586055168 -525823981023447908851510141469589504 9171968099570868198817289530769408 2136777577708967420823975049035776 -892628008254828126347859561338109952 5827960254429875100135007725813760 3801449769238109201443556721426432 -88137406134423699088311385084395520 4016835376563813265447205082234880 2678889281261476527214072768233472 -760771443414200733547465690948042752 983076386422468146627055129198592 7883324408126985651468672748748800 -507935829942440903329687695972630528 9535502234968372563299826216730624 7435799798955288827087390460870656 -964253774170708041278209302160474112 3853236471221647749053447955021824 1667836902049759015197387238932480 -512156927893248991388473562675281920 2455949308841749427301268630536192 2730786890072365563883452473802752 -675915649389253976892503714267398144 8784847191623292548051611995340800 7169792196372010309668845828177920 -541410687938003420995797447962787840 1115364474232641786734643320455168 7734658006299533812786284969590784 -578132660532525727007059759629074432 8422297273123148502021108909735936 8824411491490580221208967889551360 -303184897047268844762522659485384704 3036719446596538333480411404959744 1545196581276101666375646423547904 -909150503078561144567834527739674624 3233022444000558498412708472291328 39603620529906509668343296819200 -291300654803331274329625916455518208 6044342667684083309675330330951680 9343525653683749137401798088196096 -469793735367471758219433416570437632 2924051980898597847492095840878592 1135763766623594947999457450393600 -335716339672319775172279045258739712 903794036198789592994834316001280 6341649872600337880461041721147392 -730866350011558127004513671755857920 4921288071792819254854433682489344 3960356139582888867320834696413184 -717971277392627102517817761628946432 4915058092128388004988663845879808 8831102114656863568948374974496768 -796694994546601524052362377386000384 8132195567055060275214995861536768 7134358585849493919636724442464256 -734521707593369453320642690421882880 761900254490573015494217345007616 4473475992775400075551270313656320 -499498105653806802119885135846309888 8422182283032571860194239260393472 6883007416214923548521975693443072 -396733537190017387803928769138262016 3255247587349767122168820965310464 2692013115776604389503326117429248 -603084512712969952431186468795318272 8554103984844963570499976226144256 2802629971146797999705584488677376 -874143010704357685373102228796080128 5054239684786355254137780808187904 3321392817073777671080127993217024 -304600064046142123303774284377227264 936043890665272133310597186977792 1343426636782660031950479037562880 -460736186829269309365212721847468032 8898401890417158218552406255337472 9157729946894654445812906928898048 -642253554587172706282754083733372928 761487514196542820074949359697920 5954955299492679901936338180505600 -45509513513601455319372299497373696 3947380378888098485875205528879104 5141211181835027881728314120863744 -891406654141197899122729742711652352 8553865154997813027206068225179648 9701847105387330345868445553262592 -626424887051052411804332974311211008 5266755731271409489146057672622080 7185405396267317494334570390093824 -774882298225582975845204347668398080 2667137678680142374675528655306752 9999379318478391688332016474914816 -197483928690583657099987816695201792 652657913704084375562949473861632 7110951428042773328509440675020800 -443580880909620678639857297101160448 8492071514954866393295719516602368 4723506903133372854434694518800384 -848966868753166472069117424026255360 7315301627425109625940846932131840 9010617302868475388290478303608832 -531787594397052180937776522531438592 3783967572422257461082246130696192 1891812337994731861774532316495872 -137170454928543932042014451658915840 4875962235420236355743607402004480 6044758838781912882264212760428544 -861231192106483067926170955686084608 4075033926373140220950452465827840 3317648985298327120633489740791808 -290627132206191004265045946647183360 6432403106812396719971952211525632 8898002336358296063152853386002432 -447951759229670898199008458823434240 6259758904062606919643738723581952 5021250563585883811637145557270528 -288042030919198081820682347473797120 6553107609298348831529248225230848 3923491191085377437280089661243392 -89660670193728506075032054250078208 4959090215169950643570575495135232 3202168542814922735668685826949120 -639197831280613500472967539053297664 7802395580748097412653628191145984 3536819471948545948020000010797056 -122586826856401235848394245333319680 9120158643365879587810372002775040 3089480427413585672757224214102016 -359981418797388117585853952211025920 5515464374531694897356025400131584 2557269280555601649670193242177536 -666092808054136999302415451844247552 9237209634164767440400077373308928 1044488345213790990154553419104256 -528757444214822986279034190770995200 1093151574568286329724183867555840 3210698789461220984765022258331648 -57754432208252205087180650618814464 2349544518145953634505572051058688 2718713639412867361668146250383360 -206151426800514293944236325765906432 6362953408174840067511210884464640 8260353300105317531434324504608768 -522493248165399848762470446248493056 5586088083814118863941963821875200 2320251218054709353250811772141568 -87366152978646592627093214695784448 3242675241351240617398233284476928 7103714590822757610406366997905408 -698310389945057746451554866863013888 1378350503291035448631990127951872 2198373912989797849839705822068736 -871324151491689670764654348338200576 4366414184000309125883964791193600 4366472938590391910173015743135744 -49871375756840695519287389013934080 8376347743341335770557246454366208 4456886756323036671555452178268160 -682139582180494477223182220782469120 7020894888679356843094306692530176 1784558698419141646186388547174400 -375399620654202101753093628968828928 6021137051459274574991315999653888 7301291312022856465955143471333376 -79561262475860668440663180353470464 899517549578767374450518701113344 4072057360940080943437645189480448 -667924948420723838909206102460596224 1631398650604723167348194199732224 848699729245404276002899909148672 -737799147871706460943491063154212864 5973061341670131780570391643160576 9285372173326479361121013978890240 -560078827774728388684387230846812160 376470111865545716959692445450240 8746081751224403818653191382237184 -965212989033423790321170686045847552 429633300917150365229544347009024 3928045657791335955890876784312320 -595914156378853661612343582269636608 1371887298326549857902290626674688 6367928381099583828849082358562816 -458682339616126733156422919439515648 1875079233861710035243170720120832 3276285911449550585216033229897728 -893098585809337298195138809597788160 1316102197267326157985008924491776 6354446491431133475673468091498496 -412966971973529660119717836880871424 9044613063655319354694680048566272 6259428954371884193474772213956608 -261347775416782928393882536255684608 1735817922244088925437875705610240 832042976076684364989459517669376 -754216726788623436682744178875039744 4889146368780407575539956689403904 7294497744400314207483698291408896 -679074567375074292433449102532935680 2019377114302960653977307995701248 3175573808152122329103960090083328 -180920231471560329450163426434220032 1544015203859965344038312508129280 9037454295129812853367699125829632 -244239913658548508199425803976441856 2773481117469768470296407360667648 9907864706457094243368782857764864 -951475547546991930224860716037308416 5201752971269253616508467142459392 5593942919304133398372539414085632 -883173204620121913166910176148586496 914327947933377954569721672105984 5262351696209782097894109861642240 -540486232192736040516293093606031360 8258890336720000475650342902562816 4266521132413370891519307691327488 -905407237961021435204690914591113216 434156119241695984221555500515328 8372188030558941583470199977279488 -792050847848124732783115183060942848 1881752414054354912113552238051328 2126160962910792100491434022404096 -758037340799051996271818621168123904 6883736213853872952429640897527808 1122763774917453416782705585029120 -740631461959012549601752044915392512 1335351484346523411494631448248320 3617948265974268588589322086645760 -771397137339115743296263453468000256 978226080637184594792450581594112 6858914594521889181274571886559232 -823459185861936489498069964377030656 1598668160049033232604203040374784 6488135234356292707445374841782272 -517753235222204617182703791282061312 8892595262936927661873795818323968 293188392388166036558658052030464 -439352866437601266169258690182381568 8533283311305960347881646799716352 7326905435671541131563199862145024 -652607849502398889677299861631795200 8777586930856135911876292562124800 3368893527259456670611176589099008 -819596548100210079453839574328934400 4943159184944112224767768765923328 1063196152357710473495222090203136 -777777489448624624413229739310841856 7134637892221176686859682452602880 5023265784562866623178838368059392 -370383173054070258033479733651439616 8383027446056097971489390806958080 4835795812874550131315113619095552 -657152845286674467013248075150917632 8017137500473015281390640724705280 658912144298542995652381717299200 -273548373753348477545036121037078528 141084423913873695379552525615104 8669358006932290804925964562202624 -170301022689796251734588937547546624 7916532665835376862510181244731392 5890254236266901198258471086063616 -219482914400990696290028093121232896 4451846636871570335940708654907392 7045223422477717827163609557368832 -63538487007458109784854919972388864 9514601710436021826903715977625600 7175542351912069054348310425370624 -269380333750442711278531340394299392 2644904035667840935813082960101376 6782336205461777058051332532862976 -848245801238752676443062019536453632 2137746109356238137222035838861312 4370764260106527043294815842205696 -224511048872753900264842896376594432 7013093567049086281565321495052288 1596860728347257831259017018605568 -177933159953378235702037989348605952 6791153424655138857538676882145280 4138005821589775025528644267147264 -442077900070599913296447547142832128 9340824976028225994783136499630080 244247583549432051466269293019136 -810184088874040913182532278186672128 2301184195237941858452675443556352 8806681397192367580658338642264064 -990301893903703745304592269176733696 7985222243880183994006266420658176 819427771154339102823457574879232 -390411185285014277261584712832385024 7097714798547254242158992328491008 4925642763797652651114145825947648 -668940333064249295943012260302028800 3510088948591815887542895769550848 210699450452107306041781566570496 -49282607607084092326750337762328576 91381977855133851797164314853376 7859717412654705829265351905378304 -272761017778305203804966331497840640 7561558538916746932461414601719808 1351018007760062464907674430472192 -834877457580559590035362179106996224 9290062812461801001024049018568704 6259373827187925291105266899615744 -984749822592343077083749761471741952 2146699507083788781903682824306688 8253973599563801389646467834052608 -674913105745704385649136710392479744 6597195934107876304802944659750912 3590208620882509674173350992150528 -380157248782868413305339740480864256 813488164160653466701798941130752 1787308266326766060251151878586368 -835015499857771058176871626535075840 4522598843250736757761070323466240 4660843466707322350484026959069184 -933751869263891907430741704972435456 5307534558301437979684165725978624 5953388407659236851918861060014080 -289546303147976193107268068800724992 5877975121270173738074595519365120 5943911379676570754757414952632320 -739573768947307712920241868862652416 8469100745063355016241305784156160 1133966800964447768247520079118336 -560735588137815744620472501905915904 2977208045723437310028380859531264 3789569090826474246747916609781760 -231450365606016311546028732897558528 1770497213167288672070141363617792 2151364507643103974406179698769920 -513583874849462182709828946394873856 8353987370113075728248810451763200 1915422603161202169374678827663360 -711533016479381601493934517788868608 6573832031326045342372718125776896 9223028656486948259219855502213120 -554075718823478340841522116245323776 182337089838158946094657489076224 5029043981152882687023230350262272 -87386206012069075166962250376282112 5237010118522773413624278908141568 7416082831687196529845468521299968 -372281789737643525383145819476066304 9591850933142944848869548810567680 265027121999650983001291485085696 -353393333659715459008998302696865792 7366099260172994421788516330504192 2228813924123316684114315978997760 -894738667188713443936875823834857472 2059674866096955008125755463827456 1570003996648521435278697058795520 -8791835875993723059189047166500864 209048954446317300350963450642432 6631636869511492636195223045668864 -598131389881743861783531702156525568 6730104262844616436588801760952320 7829215269778513247364787642302464 -272154265325446569434150631792181248 6767696632096538566148367312748544 612847053401621201008911737421824 -463317592303580419854530985324445696 731185172200965422725539762798592 3552262408721770988859064569561088 -807920456157523060385640586456072192 9837695357646494858200756820901888 5117312736055586966156900988616704 -968834621710478933941509648438788096 6635353215999453690844158837653504 1441526284099725980194121885679616 -711934115369490802188633471969132544 5113870630288414635323648232128512 9457992425998566658810189577191424 -449020753275071019986470323978502144 3600883265689668885079884365299712 7381780187044844564581229845807104 -674041535272024234535698145268989952 1159794467335391905183672098095104 1938047598369185530624693650849792 -863414210436006332265745542386024448 3390071591282704593059554988654592 7606906179407428655122636240584704 -655392781544043963180594677587902464 6325763853518737325156900597137408 9609598999997770550922211194044416 -943079333890853339643739109830164480 7887548929798836236911657789423616 7726868470892811351413851749875712 -481601281393547883853309163956338688 4880495004018285886073562512490496 1451433826882500475086799932227584 -193564472003159416817839250427871232 3742710875437739991695074619555840 6414881044333898050284973132349440 -29262039891260017587098413835485184 1368931176837326084322249188311040 5550482170064113324387035334574080 -264828479565373752930979127536648192 789247521953226678568500416479232 703368110718139984511023513075712 -280125224257766642387359300243685376 1914612969088826084365380488265728 4990953849108490257969400606883840 -77169690372037885156896150181117952 9264943731569037096057096749711360 7030368875698485492556635928788992 -833968467319832643993099982725971968 6171256871656852690211762409046016 1027594899000289087847279299133440 -610875727509346776762114463173181440 2733681229821818593219494547554304 6455005662465106534881554853789696 -162071166075407576517593767664943104 8940373759814621454130530408726528 3000447273656781993270217514418176 -155318475643881989374594917815287808 6166064978857254458983626028613632 458692667993505635097957160189952 -646252266186453405554616626812289024 7285716189386534207323977681993728 4294282337474523740648095594053632 -317586269369861341728659648360218624 6100002096089101853315587058434048 1254121342322493575274861923663872 -923989995515403671593774568364310528 5238903790102121959747346797428736 2931479469929121733162875456847872 -410841577365666624503269205747957760 5587748332042876048283211726323712 1888585336071045816292694040772608 -370518176333638430037809664779878400 1567241964034417895262011374174208 4210648214937298840425469336092672 -364991201838294447849343441294065664 7734666710117987355099930149519360 4218364104154205912414697304358912 -60266965687870334698392335255863296 1171603958734780303394909083140096 1006432111916407583655992844353536 -245449763397148674541305131551424512 9437190533928597083832908217581568 5243341383221077894530722173026304 -333630624198188649848144035191980032 3918703905785887415819185506222080 2187331680223775951913869543211008 -183451034336357139677861793889255424 9201612115671867532307996189130752 2991483065988525991630609932353536 -467478788941057992240106076628844544 6387973941092532765443963932901376 8831875631744965707544667952775168 -801753968281740071459794604984893440 1039336244350970250770675014828032 4617951902263484859000934365134848 -310794289012419497920242650781319168 7825205486685176590104542887018496 7397445516206327201079687190151168 -342079619465371249935090609110908928 4007335184444774151769535885082624 4494086476169445073761395812597760 -694194461852927472927979121336647680 5143203852745926545227063345807360 9362135399389819015985247299829760 -795993804484611158370064411314356224 6420757859572442905500264018477056 4522873793134573100612694514335744 -115670474713078006675542502931431424 9307249747483671088958058520379392 9759101982444874649810322048679936 -163383784009768418374226856611151872 2308759644525575870203442428379136 5274862644203973055182824500363264 -904752575003397994628062567433502720 8872285566053261898372970692214784 3863149114992044214830622362828800 -813497653264979663115077176417845248 550972090232038742335217177985024 9205520087200766491657013865480192 -888740855201787858174440570582204416 8758099828601771791814790240796672 9756987037555240233104503931404288 -199191289497969153425634171300085760 553088399796561856777651302170624 4252805860835886286705663366135808 -449236576898299416059042534082478080 1330572549810170634668826144276480 3390327156388657495548189997006848 -817761911460317426871568615084130304 2915880515434933066819573831958528 5506404437226080128428690605342720 -414936715713792966546891956482473984 7585373807305030590687115665735680 3980867264485241150113925507842048 -160097558146418014781608514786689024 4870929841900181338151977899524096 9799051408337423384340172673908736 -581242053511513465026117897683992576 6527569984065708991627200187858944 5899747400856136384276124422635520 -547112929131357621928763837967761408 4087792162436018002956370684411904 8790974268273017962103867539718144 -508354372721709856523449717535801344 2115338757000007217333523990970368 2297232219527763507353025867939840 -391236170533909301614727886230519808 7963313930003375585923514018824192 5162693005867135593814546546950144 -174856941339982281148259429106319360 2228739249447665536171528700297216 4231248482542246950357919833522176 -833968028881493463893908769153744896 7085292563422058929631584340410368 543352180906020041567033161154560 -351581759910549650372111994368032768 7828048331157417959496978708561920 1647925898109541229135357101998080 -871138900759940518773163354077790208 3271092584905807282388777847226368 3224626059506008811144359501103104 -902878756398403120333760444613263360 6512187553345301329799135132385280 1059742231135087262469498385465344 -175545410012712984187944925849976832 3616631325542443508662231483023360 4377657484020673734586516715339776 -795567842800421879957874675332153344 6194468261247389562364717212631040 4138402216465261332459168997572608 -727545621742628509234571796549730304 9852126130116952098697264815407104 1441201235897880731855384945360896 -848034333147928992588410960281075712 8975782786270470973173735071154176 7187567963431126463399365644910592 -975797173705847091287574549729640448 571800730798747687763815067287552 3977421870553413188447385742737408 -402709879623031789890576331499896832 9236838794982177972268529382064128 8296144772387231878593071701557248 -8722012163899379202645531360755712 8565935476808786170359737973997568 5716126369829602501571822168834048 -918738546899971827197648842174496768 4733320762489020735177094867189760 527052881185974975940931753082880 -471589091436538355392645846179774464 5758400434906299750580601940344832 7107660642663051907782773517058048 -4517489665855187695237766062276608 3874781685661130953536448665485312 2049644918905953758530483211206656 -942109960167948304954951109737185280 6088977392232241329156929359970304 5450850272712173208492250281017344 -766763731475143815274258442909384704 5487687309141006525271574497460224 9579676781185008035914943177949184 -396079295035619746057528212769996800 794981843343239674262005548580864 4380166791389414386902963872333824 -563696654078539786405909939959627776 4160364151660213614922836977123328 9505768400734258806479852629131264 -557694473834239450437130631329611776 9460482469861677295212407317069824 445363821099324899581344685752320 -721361066442997536922089773483425792 4407607974062259266739568115712000 403603971692041812092491581620224 -253052268896234900196484500198260736 2686897735206904506950632672854016 7116561691706997884328784743628800 -512977361168423795232249090624454656 2348978630671666853956598487842816 4052428420349026619015784269086720 -665709675687340239613662122741858304 590951922707565376921461726380032 1490473409701016468559472401317888 -837384624470209281087888866787983360 5228259941718199551948755327516672 9254374932438961150073644118966272 -330528078884899920803161749107769344 8175845875207106277430890705453056 8411414906505838485458255813279744 -18666529184813381201420042939400192 7036862413520075798866428868689920 2539987873112859861323490441297920 -677462763195198639201573245036789760 6520327269073979681793957049663488 8442705969338365535819119978348544 -19802179444053557085938729701343232 8297727713287524804010800928784384 1742044013643416308005682339119104 -630908274544093530239534724729012224 2436578897541903297749909793406976 1173211188954241388464549463588864 -368852604645742201067361611177525248 3377278365022549506480892312289280 7068801934856787547098335934414848 -681679877651500108622304776315469824 5859975646298491588473218272329728 9526896457031632637036674202730496 -782899040202056932055032179846021120 2043632995060611485672380884320256 9491319892146865306021134034010112 -897530410390504074823861803474223104 686169593628083100088526314668032 7949527017004750922950700181749760 -351420658272750879719471359195086848 9313929734184493790166998509944832 376061801785233256890613777825792 -116077436431394134787197150846517248 6870105911123619173167153033510912 8256693381063561919569419162353664 -819151713586338444384733873068572672 9836219904979408095356712956985344 6320203235367827510126654594744320 -216637494466493040621073952470466560 2263880797196935480679484195078144 1797481851019560322631487744638976 -333541139420494850186900145839276032 9144809597369884619935083319525376 7380065057229043432917817014353920 -413098272395720599120012745499475968 1820891380464127506782668921503744 7083780252323334238775707250458624 -53978083660693903353947413505114112 3821884417247294233572563652444160 2836978044401351471615896700583936 -986167979358336162183373309847011328 3979667914512490901583430001098752 5496182375248519689096536772313088 -476938629298079897894122069010939904 2897928500023619546670642457739264 5420757060091403932041208936792064 -20844406056409987929226494420713472 7480176619043960543085206112829440 2230163567601881853514130986631168 -886497814247694995804554442062168064 1496532558271248897500633236504576 7548514291327582160010498061369344 -405878447490250014067876738357002240 8670141139709044765869394016337920 6685292586886042326089042407456768 -736503385257106993506535155299254272 2691453367089002618557750583492608 9713256626708105173470304712785920 -358294755563106239094027063654350848 723112422082791988534160362831872 2618611542782444716441710285029376 -811363330755871447679565164420530176 3677184810608081377081875952041984 5287859040788309949346678954786816 -952212178381537761095601112204967936 7661709666990201791071944467021824 6221932267210942320612731504295936 -689489004830522504206342137281773568 8664877418199213719462306922889216 6412569267405514787416141878788096 -94273288768768063576889886886592512 2788997212291388825956074163011584 2669956362814490466863917614235648 -875527892043963592350613016428937216 7907349287926674951787428022583296 8124236755570537200735456256327680 -955178137813536845436743917408092160 5304800555975852683081069038141440 7345508608256695828360193095237632 -248182416981590197471723390555389952 6134430047964703543874273910194176 5052292599096638008059205513117696 -43127445300128695996906411898437632 5482924207306486548918205304274944 321474653739555321665077169356800 -394290678671438159798492798396661760 5155379570481702659363143044562944 7639382989957789381088217357352960 -176306333477184966710461528966955008 5109556384127998887365048379899904 2104537259100438515052933829099520 -650544985907509365163481988560060416 7100166367602095844481108818264064 1918880090273726949187004821143552 -204359117238981940031222684787408896 7938350447759411893991074955264000 9285596096155844007029017168314368 -817439649599105788902750512218112000 1465408140467906524515074622619648 9650011341280643279864265791504384 -533285395747912720260598369477459968 6202504366246526831562854733185024 5678881978080421028188957737746432 -65524011064549298923750835055755264 8303856380290376929818532779130880 8194731734368952322539978965909504 -701115219369051044703328415124553728 269272023202692284952769107853312 2273505679426525039185491994345472 -317802243734020965906730896647520256 1327502849003426496687843141746688 7875597065823168683051454436474880 -230284192455951843897255878092390400 3305319659868576636942764117852160 4251748114364347480935762942230528 -771874684015239676546690763452317696 2142409754397903650186563013312512 9788174767539460112352296162033664 -376631561796462096333695305201483776 7349679889293427900652311113891840 6411415799005645878117022560157696 -394622847591112682011734180871798784 8893214915972703129499021007126528 7627870507314489401949046236512256 -12834864303220441224962330750615552 7522530097571375306813700736811008 2605642101902622439212174570160128 -236687032381890816122185785611911168 6143897755006217971177469870342144 8476372420528276580075912615165952 -25118930767814969600245000596094976 8919550359978251824492551342129152 8028662100872301795092609527447552 -622766466706597336592305094152683520 8978172206716372298834247436730368 9147599704766473925501977997869056 -366699968431074513081053261965819904 2707054880510135246630749246324736 1767205265819828638143656035876864 -759889083950560099401960553285943296 9301848766750822999896848420831232 6092567703853439029347886024359936 -889844919827044531916842101333032960 9806949564869172068185597666131968 9278971112314320406973258781425664 -480434556629251331647483363742187520 7692527954751037262487691422859264 8547754145885399463456388459528192 -984686118275648799817738608904765440 2984238373855820326061667971497984 8176816307217068023713262852898816 -185468085602077268365145527386374144 2465269285961004229701492734427136 5791578290688327278106128636968960 -982147299046638629556640681872588800 7419610755207364433999159241998336 5045553162456537273573203391807488 -637894876562492782940369328367730688 94118546816689774290231806132224 1240809878489931144717250848620544 -30631370635704024153753501294395392 3770220280937576567979779142189056 2787226732665799748745245029826560 -548093658173301223293894197050867712 4260449442358375163696341644738560 7564194980311540823367608776523776 -17136452425099683220756669298376704 2385534005957234457220955785658368 2704888423477021199793794100232192 -142409883739748023671978476684967936 9963222714362769183949860378771456 7014600367245264030804872366391296 -552235016158721079412081799968325632 5627484559111242302734490593656832 1495049444085394703337823133499392 -495983504389339933386907597630603264 1728666400821798930118092374671360 2420053621073233850183757932265472 -971693900907471473513543316099039232 7876540549837641017393502341824512 2323071810260772815626378131013632 -892518697100433972496399498917969920 9648759326353915535583718303334400 2307957369515443300181910260547584 -277303862481646001717996864592150528 4493785367283864981692615283965952 658936485820706764738668882034688 -821018979732932950567254559704481792 3783480066860440583548694563913728 3666027377491295233298298719698944 -595750218474874026879868614219923456 4314203494395394297605768880324608 5784022230835188329185377593065472 -927196219791353714514002106193543168 1880952262032738956389728594690048 9429416680719550930217856221052928 -447529620783707104360824225251983360 7124276793378373971490625072136192 1091121775053543625597368817156096 -525844056297190501359048539894710272 2989063400225240316767463857455104 8014707827576619688267246567686144 -857390083864285813854528438970351616 3107877608284435710229723591213056 1173764074430046941591589393268736 -981363507142879682322779312698163200 3265412394498236675371844228874240 9500321140879244117220219257094144 -968091671509078660060695621659525120 6082255148312249605721824142819328 7779616457420403244723477726363648 -564372820785233192721805177272664064 380181764072407062277192205467648 9624790250772906961911205337235456 -143987523661720222804056331866079232 2795282337610245564779691413340160 4504082305040024578339029089517568 -132331549772893100075972238705164288 3837056785199820225269853899980800 980751827069017243489788504309760 -650991882251682479256230949050908672 1961876148085397276469464164990976 4035719857236918531002123511922688 -193185804349325353870538344998371328 93359143096013815945850196590592 8100528128113893573714970375356416 -907589327278658944937411402023305216 2939564566533935027845137487101952 3418310709344099265278246081527808 -895582894994793916958502962140807168 4846717302102944190973619864600576 7020625692242570831992014430535680 -978944390715062391206049807540944896 8106479008614417807243942677184512 5715520781010676501538660373495808 -561286126329224635532545439261786112 4823255632630760749856110606811136 6294825066368976310238016792690688 -793702647534283454044446341753470976 6994158349412396407936760875581440 1309949985445079401425895400931328 -935183906152696018534130424632836096 4070351241899883801459368698839040 635459181697226967605861530206208 -176729055117208324613693766186827776 5044279691966404507605581904740352 2093821686412267305184739876405248 -206728023634980089203897726922653696 416407269497951784499660690817024 8223507518416474715119069788372992 -303309102446981710978503395822796800 3669550175448550008998600867053568 9051426915560301606185189871976448 -136836445010338975057562822323994624 4872472180347074975112237531791360 2684049791195254403417599996067840 -384883633565238356050053263305736192 2196566564171132633556833529757696 7671722803748315413173794328543232 -854334441528337134259782132405633024 9024537038771574931701863792246784 6806857799649420787742152213921792 -158240342594262661218526945779646464 9662798011286151731304755569360896 3814229322725876375107781431132160 -814736727764887696721404504930516992 3199326683782763127673487693447168 2313375033304102174228737479933952 -943185658648007339201449798106349568 656128946211918352284463176613888 8468392707638615385032703399165952 -792916802850377333884485627822473216 8077369233054503069411541791014912 5534396184335677214407112085471232 -998758324330915807310785156185325568 1758532437785274992613936452337664 9176767894070804580136359884226560 -526205019514920147041107420165177344 5987003604668225524930025193734144 3261853316842900589200124697116672 -829498235659055116323978129423990784 9203298475355989955276198060752896 7883598378675566821516242426265600 -402269217535091408414928482770878464 1754118074819536306834200181342208 9883484067967846370962254057177088 -291679252221649035525462141461069824 1071634295168572194403616030720000 5096179363853788767683547322384384 -527692149801596820155051062765551616 6267696121845205307182170698153984 1881662353376737098651279598551040 -272521614005535849486791837201989632 4642437360996392379146048861372416 177100359369570263955125426978816 -868783492483893384237371937307754496 7797643383947045867276523521703936 6208993544527860301508483783589888 -737440048502699353232128010532945920 3694292034379322809353701899108352 2149012849790009040110978930311168 -957060833099377633339942628858265600 6390254161679849521708811774066688 5180587797129473956383789676494848 -846408751590977036079824398941421568 7245396456946783024901049766903808 8631629674062982803664884409040896 -120112090721743091450556785453170688 4750965521070830711915953680023552 8033949758645985279933813748662272 -754138350743321188309748123464368128 23682758546785576840282979172352 3552233118164352096043473920065536 -435605722866102033661564913052549120 744397369582183188205571579838464 2584492697500242911986851877224448 -909824589100095298299121025339621376 4452198537976142210431842061910016 151723212751728324104879024898048 -253817472282256386937399322548895744 6971709848153526809304378755776512 5242079740396047456559681073315840 -11784435460169846285654629904547840 5597275791480191560503341430603776 2926261806519827436637864274690048 -292412528921327544296196952949784576 9657065875849087441021287996063744 7049657036739435945744594261508096 -637970258395728182311733623359799296 7872159382560690179611089182916608 1674082596196183511844177311694848 -833258103684757768580091221601419264 6523375213464993786388053460254720 7196596131083078727311648714915840 -335485486547818858949755253234335744 5945511458041562634573568878313472 9648481079148182526087527734968320 -453887477406634910503224113578901504 5552476208702311962306359091789824 9811178743881196972003490636234752 -862604149647836953929978663980236800 1162286669523746939245631673204736 6918678301568191985800126312480768 -579703107741104406110517988291510272 4196932082244396887116929461911552 4416996746637236370995877469224960 -554629592599833007492844188189327360 1972416660568600660010272871677952 8162257548762379502561134750203904 -368326866827723928403149751150706688 8272223544758640771214790751158272 4708378305974861306092924463742976 -490157204862388362452580519416692736 3782818518818053138956753693573120 3191923906195984973112063134007296 -6698023371974882193669544063533056 7756554630649753793518967581573120 9835356084669181294400627808403456 -846322444901955407999378626491449344 7817810206299158733481156613767168 4214874735273002203724573065609216 -60250934179188182167663974042042368 619054063927802728634192989519872 997968654352953509450440400437248 -473742003988064392558898461158670336 9078463372513201604866907532427264 1377542253812225578848540187164672 -206743432379105570430478955883528192 9677973935971341138281130253877248 6906704521515399464100087476518912 -887852719240306159489281357510606848 4029718465451048568109497774505984 7379349396674678168625013667659776 -764699960033621089921921882332856320 6192642192319920714387800744525824 5279088202070686333561642976018432 -371918483747546824736703484088287232 2350899836689086058093648654893056 7397237967871421970541989423218688 -702501296092438547384812478591401984 3643536906051726371787872472662016 4384740048877634986235623309836288 -693764071801069429129972210328403968 2519483028188122377150285209403392 5485104711690181516698940763799552 -916906561734846809278669863948124160 9044588375182663570680020515946496 3441279483624171735233885015900160 -956302799111361926673667824461807616 4709350675288442067289521436753920 4213401786277452228261515551047680 -946982385956629657712122069365293056 627263040126545536222710458220544 4626918682672537768878921264136192 -738290422389447202052541338288652288 3938526058718594215321517636452352 9868562950074981661683045711740928 -598354156856127533878025811455377408 9105429684753543608017298296668160 6542954453287323889829096412151808 -819245187073617805975483140366401536 2660069607873629043614281579364352 5789780979682887420402570599858176 -342697770482581317782342897030397952 5505425817166787925108879326707712 8274082637503848490858586635763712 -223539981057174480571691552749912064 5923655741653673676548800633634816 9869539201548839413354046561452032 -232928586861887875162330260138098688 9934004558774119241724702379474944 97907563211624033570135262363648 -449777034135185901114986689883799552 7622551637097818995826767838576640 1825494000631438108241894349733888 -316551803484916405254182829264207872 1366749117437232332263258809434112 7367510579381141653084271963799552 -564609861390514654688011273178710016 1179665267975697162459852564332544 1372006181338842854185278692655104 -796727609178197821437151676674867200 7960084857294167094426462471585792 2155348793351361667439364625399808 -744106389304826377546890709747892224 6026249467843721182774775431299072 8315891148432582622342000165257216 -262164988433040600544237069541572608 6583151980817596557598586885373952 4391552764838382154147978226434048 -109158477598879515172416372502167552 5679549476016196632586557230940160 2172921938139736614345290029203456 -575321176514269423381986894334132224 3050781869742089946717675478581248 8847908075985954257448645462851584 -645757541688129591956453427553239040 4477882767948242208645531616411648 217308118106992283631709977575424 -477786456605930500579287996439724032 2763639571723681931463327251169280 6632085671534390036024349931077632 -79134356294808178208063067504246784 9140750767415465915763507972800512 8503406422960222106514428350431232 -574398770179269821818376367328198656 4433875440837734679096852379336704 8918082429087214499542804914503680 -488732678279273063152538132171194368 480519666452705873369555498172416 2987150848875695222110035963281408 -995742247952805912189561854335385600 4510141277082598426095352532697088 506566461622542556239953202774016 -837620944010146732730918563561340928 7192027227030288952210722295644160 1924546053750645336239481450135552 -596916094122827812941290676009566208 937536930549339729760805376229376 8322794313462992405333147740274688 -535160039848926393545115591765917696 3358341917797074711999772364898304 9522130499918468777142405713362944 -356379430625887038199071623738294272 5086921559918763958361938796216320 3821497286453353805750767057895424 -758384591820402254265418022557581312 6487865454529336438723006917771264 70522190862284163129947287715840 -453064156195267300458195871309234176 8478181078766425625589699439493120 902846085185656917929595441774592 -355739799929543721464968968667136000 8645911583719358053516104924397568 7516088116387230999850160215818240 -227531255346290310377734701423001600 3501693959452269761869476674928640 3812275636287543818832908633767936 -4994026969354979776618041777848320 1984340532644893209843333263785984 6857543668955163412384800229556224 -572729665390044402129761333074198528 7264280249979718246461951514247168 1885217877351822199149377825538048 -30136439265906534368394598322012160 5619229624561336288827723292344320 7717165452347668286091643100069888 -271892767084073888025863975052771328 9976096858491245017644808896774144 3558772367135990884301860375625728 -31135529093797492014057013741879296 2441489135303060674674005519630336 1110955028017841718006135748820992 -879699905881349401224650894333706240 1361392859205948831035387312865280 7905527454214798527272333304922112 -626253604312744116410987844219174912 9707702002944551040382337330184192 332169848500736701239802057457664 -97949836647365229588747296836681728 6722864370847212053660185843990528 7491169984528971693120388476174336 -685881481693008579800597161691840512 7870301329062756717817461410365440 7484101024979340308693652024066048 -10342539363422582481380343428415488 8715640045331769647827738261716992 1935231172309458694309198350516224 -783855734401011258374550442494394368 1902668229339923572123555942367232 2087381031513869033032121629802496 -660736984411027341453926736882302976 8711747662355998888343954297716736 9925566435881934605959976603090944 -935481388645509813534256390358433792 9287213400973475650124358820560896 7326080619752559972932856594825216 -758701215664929765246616653701054464 5558414880854713118294720877953024 7530926170452164941856164850696192 -549162518037815517770372800504135680 1457366070157330109062537180872704 4425843345375953260493557068726272 -124210312692829195363555525988974592 5073189120196460635375161323814912 9456975569018899206688889062293504 -804943227897110847820438701357400064 8480804670115107442072162070953984 585779262733483450670745500254208 -343878927128597835088398994366267392 976786402660491818245630696882176 2794690249692659942482404647632896 -421225181077754810909157478742622208 7671889468696178184499084574851072 7231640618252628500259037991927808 -449876050403305245154438759602716672 4489236486654536655384216701239296 4044791743479889052374798459469824 -560158700540998719876657996088999936 8127956165993128532481965960462336 1849591671610351173351014045581312 -819732775294026493514085284957913088 7571201868030519562827137783169024 2936518143426789819992133628592128 -348413228388625357550446836157775872 994220739314276518006044818931712 1005880987216562752488716499943424 -222095245019430687666151210539286528 8660053854805843309773805919928320 8287954640621959133213573609684992 -978285091748164483692694878518509568 7488642102898971414666796817448960 2134334373231115144954511234170880 -435629236615201757813890209420410880 7834792214877499931949870572634112 1880174727698255185743846605586432 -421345696040124439376757803802689536 3411986797603212287227138116943872 22905462100192911831234718466048 -673340076992938552262011772353904640 1790697056284730286179199953666048 7501802933984252258535898597031936 -124192143903250014394990966391963648 1674651922183294442211195588968448 9061451546846880505476563093946368 -135631979031624825768141223326908416 1076984574274565188135474161516544 6928340613253950308403636378533888 -18377268403006198926334035576750080 8493298799967387008025340579676160 3087181268748250169930457181847552 -760524879598516243132868565821030400 1767604213517432606441070781267968 1281101103261181211417880161157120 -322265698574487871818778164995293184 7185862433885926744095100294397952 9454876306326941097740452168204288 -860001929124258247801416008052244480 4061576610009918815933921140670464 4109118008584518277438335434620928 -304312975045326455303849613545439232 3891808682412618915487628098797568 6265279544591840202294362292355072 -863918828032495528304200178202574848 339309417933258514508782103429120 2807436556736860930684095863717888 -100603217684837115174672967051247616 3821462762874621306541710348648448 5369814409904773548262287346761728 -217491756306967283914368505633308672 6436447829504214265232129039269888 3495058112018831382216729870467072 -35652914458573725256357476657266688 1373020970585400578127205219958784 374674441812028267008482720350208 -667690413909033991035845813632761856 6772562422028962845974343521927168 6584090511140202145744304547561472 -617662675749680044177796341421834240 1250556515876720076857529904136192 3540410015352809691974880907493376 -44204321994051830463953976172740608 586871546597605252200187622850560 6360357392705785442725768154054656 -824698873161438308167465824895893504 6599692600242478097061127464681472 18227608442352064629838375288832 -941077184845538691665930087452114944 1438945536412797314315244034588672 8910033606075655350278024790540288 -105369030409084523148624844969476096 1372259786170086506434617199820800 4760041978718448037079365116231680 -341502325330561528176090679823302656 9517814938233744052511588912988160 3951956049455719906071790785396736 -912518349171391085687779441567072256 7666283076430790966942053691293696 931378509422936911840010563485696 -660883879748760682263167839145820160 6900745221182481035612761024888832 4033642424686560757613112177197056 -896746169778507470462192133068554240 7192315660949202890757461470347264 6430521930619645622423634365644800 -386298261225237096578863995203616768 4257548549406687064136461349552128 7128422549402322627690199462707200 -413256640368397111750224283191738368 9859200812433518662784643175022592 3487391206698575130717631914442752 -985724635435544800574023447626121216 3343460743793355206411143327252480 5903416283127116322314459128266752 -460486397234652479872046381725122560 8852699869725659856279085527334912 9755359071696859379983188337098752 -193848422485800011252692896106676224 5932380066413653083457154430533632 6368627268006004071021464965349376 -307766873265444203877703590153814016 6925576545191050520466701898743808 8171086429854624989302688938196992 -304718735859845872560103133842243584 5148974991126021799940492535791616 2416464678783535605505315578052608 -168420277133431760617202367858737152 9579780141661016488359361242988544 82203954239995729324905211101184 -278548530677857241250425494464102400 4561164175811859278776092806086656 6445155233320493713562272129875968 -859695163107669651870487147253334016 9163712604757869271654686970085376 9198169933126411605005612877873152 -172367974209867183553499846378782720 9134775250645281507654252149866496 3513861105403281951588247830265856 -48836466683673253961918267890073600 87973758625318573297514512908288 9634518766703126397387088450289664 -654322982237485879940407300148166656 3380904612443750084741861732253696 2601787093127614422398686791204864 -757486874528099325477242007453696000 8921260246011300274011159725604864 9525212286352873078466229932392448 -117114387244678555861298060577472512 8352001501053740960778583726358528 3233351492582520290917265163943936 -858825238876144419389820272444964864 8848633531809042931339638113042432 9174177687304205155605950557585408 -552288790261824474075368388516904960 6733688652200133022912968967323648 8115046359289270092320957328785408 -83539956311945149648493543159758848 5398130336391776787855069541302272 673116421198838249656942977875968 -907287566854171274776293826805891072 1507704763319716297094930146263040 9261557598839178003369800740372480 -764481939789332785540352500836597760 5933218905107926599535771164606464 7224810488550147659126209540784128 -84105316828216606594567125629665280 7814236100353788513621543235878912 8283405848980567004099919627681792 -947657039382309875562131999718113280 6607454482991290346728162531999744 270647738143278459291677472325632 -830884353332943703334917076819116032 7015439040173314870915852427853824 9020447519852319325901671725268992 -827630806656431577087024676344954880 3558401925502686677137359468756992 675811179641089393364952495947776 -168336766835157671400654806143991808 6888639170779283071118248209547264 5124878938127938745530828338495488 -382192723094965703769141260752781312 6987383675373902491586853372690432 3799149135387071516873880760221696 -790899504532813925865314835377422336 6348057018591986753685879158472704 7302100447192372535959371959500800 -217029201872013737472976354195537920 5955249055420843067610535712260096 9743812917433003790779328990543872 -879780636509180835713077314016247808 3354314393930190460540666402308096 3930968727835116694168931158458368 -23012012576864032383157080149721088 8326002452482746125473266815467520 5730714521643497906321463193894912 -134538256677966754561357163301699584 3509194833813627610393163218288640 4503685761264582989167646159667200 -636863817107881935635166616038146048 6557713416276738292171104833241088 9716858554130019845917287592755200 -889194369024798329904103130969145344 6185550862284272733943907410247680 9441594229748759106302358916694016 -101489294880960649220137997582729216 8002718790503139706951228937207808 2479114433123973510455610895761408 -756477984222555887326638923308859392 1033172613174343773551109666242560 2308130389615003832582772256407552 -694942053583617125982762770959958016 536802843522361783999529278767104 7134208551754447476784179911327744 -718541518980139828124870984530395136 8275895842571351741442336978108416 8013232945934063185048119441096704 -157527638032020132548427664976773120 9718039107215681425132727610376192 6122090841330708477069462880649216 -517783282109651631172744342348496896 9149956931829935117137302654025728 2413397747163923033284900917608448 -13623952401172041924782724235657216 7253908556113008535941703144570880 5468393614226418606911842118795264 -755976247052368476579441434643398656 8903776618503716179886569416556544 6723768710727723922786160734109696 -46218078625327092497374758769262592 8344372424343138503666351051112448 7558109797064230499263514501185536 -671078764968727293823792128603455488 432080795866004112406985587032064 1281014613130078606821869630783488 -270977854639394219969102857635889152 2096860285286839158812446231101440 2165199586312730726879660521553920 -306169919620378943923200886671671296 3550013517193078055940629333016576 2906333827828715177932059945467904 -196611957503862095982768489148448768 2674900542368410719390438772441088 6481154547080614250886039796187136 -403502273395458515217231490018443264 6043442705814296016423366036553728 2837270758029827085143334532939776 -452065296089042232879679182649425920 1452594995190280343321507677601792 3240708210620548747083090457788416 -912604869792164822576199245810892800 852316905978981779532619389599744 552238973787410153421539972743168 -223509294379929693164889807190491136 7021707100149140882348258803843072 1310015891889630526277304352505856 -589845180685007988897020458458677248 6823522369341689424447647915180032 9929100201837090191979248460234752 -149094554967739330886338286979121152 2129842196325024674409182723571712 5092960464043910564571371316183040 -505509238944356572512734225616601088 8884770001990393096996358816006144 7747801980853761178854909190078464 -321478515275759874972364409378177024 2611530554464759535882406931202048 3728525740770823779114180300242944 -759202633092686402885538060315918336 4023206339554344536232373447032832 2188881538998506942946031712600064 -773350446867779682887453139449937920 9849191614695289551288976111828992 2661746987462262052525284828119040 -332464503953463514349522205515186176 5406604835679002983358447193423872 7148865686313162552095705814532096 -403127737521990811840654436164698112 6895811733349428603965417650651136 6414136602886414425084868134174720 -345830283092710373342100698567802880 6576027798835254358362615554506752 9878483178585863979922488865849344 -520016731607700903080645813222768640 5950364843179527161724112484696064 137670514201439779926132620525568 -305933585975467726232437525124743168 809531907136712950723194398965760 8054621811915415666647384440438784 -142276900730108474490949587328565248 9465147255504189802452492308447232 6814977398310090735973803390664704 -784203136628488344334654762423156736 9004608938808210977929556607893504 1648068196959949650266220274909184 -534743499864732663309042471571292160 2164907073787203699184447686443008 4962376060671655958766585475235840 -330334652142528766008128570459684864 9314258115044963344397147062665216 9508882483352889503228529920180224 -664181893544537582513403239904313344 4698712617136511731922135091773440 6866381748112110833978042690306048 -427872235917124036414080691604553728 7067638505421974858076399853371392 6226826095140911201767795814563840 -144643362988008463351033024892370944 947815034633470357562171255160832 8274957568607103066399059608600576 -857919186857201269986720113053663232 3656526707992273391427107992633344 2284731045279418384620576059686912 -124689322969830096249576739779379200 4416187777233939518194771833126912 1519386044660832431765429212413952 -203870191783755066971990111335481344 1315809070671513720581030405996544 5947566128661443986650054814334976 -304571158562069650647525369648775168 8616003254199983023704241170546688 4497454687097471460024502129262592 -212982506162572019724796901967527936 9517928591277137024928078658273280 8379908154991442808303506606260224 -187014434632169269222497812347879424 9034890175243285492282718492295168 1442824561282355525019699538558976 -710345596597052734159678036462534656 854675844667822530911427813703680 2048658863006135308444903661371392 -289972282002082773312069430761488384 6088624213992501987997768130494464 615433083260445067843099693154304 -447827253102644073055120644110286848 5892816770456911452442369110048768 4635168001913910233986628751196160 -613169355587976187032159030763061248 9447586903902322580372657195188224 3162937239706720095590339577905152 -452644312221538161047134818493530112 5471032305986807972236183151312896 3010722444235773633699910946652160 -281601860761781584011995228349136896 9901056153590269542528778957225984 1314003593139622710264214620995584 -238149205103839198882121184236797952 6401251466184746335271681542586368 1300404527427646145160564690649088 -306956153977296243784086659457351680 3438089392335115480203366005473280 7583491834409508625421635418062848 -401607657071373236245927514557382656 7084399532385113008929392201564160 1319384863666974936688620705153024 -804778226800359631170126372338139136 4469283910082906308563070280007680 5259857343405207582936026797047808 -272233561027544334264153020957720576 2135231823720339869370742378332160 1868219808945196949445467950809088 -589215496152428943881597852133097472 3161617399502284762907234288009216 3021896264212658614388200222752768 -964297510259665927939669339920138240 420137147567369666009854216503296 6175866054183636515402343910473728 -179351887958592268111131925981167616 3908160228014480154064284727377920 3603834617723709986872803601678336 -126102353762874114689882964929544192 2100280686841274759850179193470976 103558180679917520818391341858816 -294332840130594592686897496961581056 3513389926789544249452542405115904 3967910850179190393184087183458304 -495703503206047433781046120045084672 5781832686443987168144339125665792 7276006382803677310178167294525440 -437977274141784777211888659249233920 1145710134217541480354191488581632 5782403972705807060520277752414208 -178885342663917641513196873024798720 115494531276540918132957721395200 6844273025545214088115841082064896 -738561653167767978423837863018758144 1066161146484021742040503906467840 5703238663439551374277600151076864 -95568479839210245823701933835157504 9471188908897791609854765385646080 5431950568750910659088891575795712 -976572806624224741225510212001071104 4313336660749333636124922204913664 6876015843824453313784480060669952 -746669245526961193506685667111862272 7166010660311572683580693647720448 5970319137481363656881925848563712 -430274612190948837114538757730598912 8353508574474540711004344149868544 4761653801865434365672794913505280 -305375211910988258545242691608772608 2738449486451156207444428194840576 521144646296669466171039276859392 -430638643851596774844953422370701312 6268576818605163391658341949243392 7984999647336564518218057050488832 -313281363458409036418202282124902400 9961947820889925233987687546880000 227466240019536175937038871166976 -401967168498387879422742736790355968 4787971786031082095986915787407360 2095913023518076729409104196403200 -405637469090846139862587468605816832 3196891314298923570011035922333696 204409323895001707551929806094336 -593740545018896801050979594653401088 1628367940375371148723518496047104 308348745386491214660860695805952 -885789951186196674673195857360191488 2004763595533479304108765517709312 6162106402398462238839559709261824 -36209093281997506144269870756265984 860503034311727136407903432343552 9621924819293651153602903248207872 -891456562065699132718637482598465536 7554496672913762267030229266464768 7909379859568893907297999442149376 -443953563509200437594100199099203584 8489600740702213514322418975375360 3111886550181032824714681340919808 -840877175586453190389950201636847616 3010195961910416430397229753171968 3554797009320225554739617301790720 -89801195714339503556645801676505088 1678757329059788005219901393338368 4347680259296200553511732419493888 -392532360081621934519572686637629440 8761817057728027193539793751375872 5143019608290109154095919802613760 -381169529263636951498350922397908992 3860197787533293982376219186823168 839503421459890085441367256858624 -812223015926728806041044537911017472 1209715693794319655517583442968576 1831313616296298675216013051559936 -62151744884073108347805897347563520 5149966384453141328293400196153344 6367421479998446164583460131307520 -780893693443081286637495745136033792 3687472643944090029072510512791552 3064416605738473746820627716636672 -395976787226544233520948043243847680 2017296847996839454393083354939392 468468193731814775179902074224640 -31685057767905572838032978103762944 8602156136000863687577231209529344 6321846949440730344644648185626624 -82919062114262816363169957527158784 8432050784483173592422390412869632 4881342061442003858356803792273408 -395562819271187751609991837595467776 4863546323162421865268132150509568 9261009125106625184271676863414272 -849096374182147225429941540660183040 4048335505806716057363732313931776 526377666476026567315706280411136 -360881362621221255307304107780341760 8480610117673859156206223976562688 4097893047989935686194669102825472 -940769677368485321811216179086229504 9828738530563359370130087580008448 3115982663744076575657235432079360 -951501965952589566075144679943307264 5511639472935553293873394609029120 3003862244139368119918098703712256 -575672585086445157392654835638075392 8187037468085870988145520688496640 7357956494323539315665555083493376 -196600201471782119302645367735058432 1760458881480621443224112499523584 1006316170118279356199424025952256 -86222173512781315890764253858103296 140842910815114399151236648534016 6595537555561692115953556574437376 -281097905035150511315548751905423360 4734543600421557806096816973807616 2704850481304142068255925068627968 -372281991089102229381180242654134272 9150473592863065669450507432755200 6220098354132221447999780533829632 -162911685809031744116526324973043712 6850323301478357869170256932503552 9449053351898632518585500196405248 -802120483025528036742308203692294144 1756913453626582169950630803668992 5171841140272621192844725033369600 -341773150645957514219673132545867776 9635937414293402568042672537206784 357481386473937882561972302512128 -477254604767851039902485913800802304 8331711213523248930518511539716096 9298322023668856548536427997036544 -887066132790999075098814713039945728 7085208466451679340179891085639680 6134191408459063087122004821671936 -588612087099343001318842557804838912 5988589343987552507913865581821952 5468706647474063005626694436388864 -252750112668848978844685943716184064 1868460833902535216348059817476096 9847185906449180291739191108173824 -47943107523523000945651595048124416 6296739685451631997765947129593856 20068757862850730038418552651776 -746561304887735620786613320993996800 6090048427740731121696884517765120 6309713198833240775550773330182144 -673150227977213256831526858664181760 8185017508333819503983891090243584 8794415422332639283768173430571008 -566054228310627514834496497190436864 4033229300657096950698786703802368 1271543269525205170510559774244864 -197630753327605096296758358178791424 219595372328940204668103195361280 8657328215453046993840293673959424 -342071363864142153827913767499857920 1311451296261586631169539919839232 2441675340033587027814069412298752 -45123604076109893776021577518809088 3810548400925406447489302952673280 8760821740799074141029444591026176 -233618024726873590077109829330010112 1254023652410424981287085906329600 3926564536164507662760626043748352 -503269984273323030321729174591504384 7483779702328790410672961656717312 5073566488005993727931279172698112 -636874379746056314603604545550417920 3527889203020638662995097818234880 815813087330860319729702586548224 -576791849739154478886507932849012736 9208162980444221563440151950000128 810546550535728974951230465900544 -968765325992293011859107655293337600 7946135155403132367852588303908864 6205013116404589594302315128422400 -551699078385336320102939207760084992 8231623584919771540949400285085696 920198965230903370631991798005760 -186500294130213161255396735444844544 4985041561636074612211945429794816 5973788129883791060252856680448000 -951945340700659577868005275640791040 2962786821320586448917396637876224 5305715406392959287130596044701696 -43979808326590142682948427881381888 282979231055513007359137578745856 9920665806100401828776389793284096 -304795261246591368385784736164872192 6125848382819474925460452567678976 6469980073196086519667510839607296 -173525324049620558924068575781060608 8827675694139780840169095028539392 9242955579064521172191722459889664 -790657460180631013623566684167077888 6028702954127517173482715627913216 8560193507713858689856148881801216 -219665752734728281883302359080108032 5312853012498359997015568760700928 7177730071114665894955613677420544 -905453376932640465796983821954973696 2243192274184298666072273095491584 6746032342699051644827295239110656 -602259221986877551932714760018067456 3485236750805811292838888325775360 9234212997761869356426044496674816 -512897170344662683084710181387370496 6194399559436216521322284080693248 8368517461237872955026897564073984 -262614751403477665932813363448905728 6803367145924026136772262565511168 8529521655873849712330824396832768 -324264811847362464106475809014808576 9478411602070263275443062740877312 6764101845767654311433908651032576 -309511852146391589598353743151104000 4858389000039725730550997619572736 2742120758830447019251993195577344 -444842250619718473401353887547392000 1940771595165861831211362793029632 493587483436553623894578444632064 -741537668409285582950984523691589632 1917537059909415935057141633646592 8639331574237127117512625126113280 -675011788471355380839299916259917824 337939791024576130004299869585408 7288060474363532103661977696468992 -630021285201065722007987812126687232 114675264649249400073431424172032 4521325466405150946764091740389376 -669021179627981238581874521987350528 3032102958658717821867706187513856 8274969215087935190743775845548032 -965357575184076772763970945863909376 9082827433005569793261090621095936 643572973259638314370657563967488 -643691406004051288925606001638375424 432444213021917686208062220664832 7317015190014861390213023860260864 -702791311219940280861941752991318016 4414646321425339651849827616030720 8556185133789380270081773192347648 -543610151984351697867777315111436288 1669266513137308888670697638854656 4018552775215674152274097657085952 -588408225464860328217783085316440064 570365304903914151944843102781440 2168581155346967932539838387978240 -206490232679338809196695076682596352 6597023138082354593559379336757248 3863162334959739692429302556524544 -249842410923356277590632300753715200 1628217398220225960897633958494208 5456819942390758024038522057392128 -186375112638226458400327388339634176 4689415589236828990157979104837632 5987790043924114306025538877128704 -349262855294893077487974306338045952 8741577187838331055368970579214336 2804312396467647822765006472085504 -214583779444360441304931917507854336 8807876468903769102721658845659136 8482412482120540456591442942361600 -768610679131228107571351723477827584 7675220182546990940163828225146880 2307380718198617589442783572131840 -295291147756548968102459748000989184 5102917962349564406612358632308736 2550547094943428089037381087264768 -609017804852144527298362790184484864 6835791741272686778624700976201728 4401677026393059939025310816665600 -358680357533524564850341719142563840 79786891897622439048001645182976 2735127651342256094186227338575872 -519121592024510060917948814895087616 6892600647010686696939833822019584 3396170479586717751489093181636608 -222582410141801609436445481950511104 6577314008860687732360308724858880 1718491296449334963858227582730240 -731393850617503690556540766178508800 5308513520654609422543818007248896 9160779667323695743849724861480960 -764954817480768378591410151258849280 5964984529811608615732050932006912 26830813638296566590688290930688 -162358097884885590858115345559846912 2702262924056623148433025613692928 2427649792185935836399022458798080 -961679287512420554180177188062494720 6951061602166673690346684749447168 6893926737960832318824648810692608 -145628532977914530059825346970124288 7717728464624636547914246492520448 9789771689773487132153004322455552 -550909562279203776374967086226604032 8352594209146439734299323956985856 8476233761293642912207952215539712 -224202109229974612018231657336143872 6669767510364733939971365659475968 8551749189331368633395414881533952 -68646952774015186207462619843919872 5474547902939013821618599785136128 2534489024336083963076222547656704 -912418527802373115962910562108571648 3880485470038676488829915319238656 9478297176899391457569431261020160 -398943800191288729577776592864673792 8991289184124529667207019901222912 17532597591383895174138224967680 -531992946317679453700705014954065920 2357545829394151427187291807809536 5755663339414180243922507763023872 -509377870345296066573536948052295680 4184281223903909189605018319192064 242239393154663327375843280289792 -350280982653695098641753476134076416 6088256405012012621196255532417024 4178090325409006602073368615190528 -508446467558474606657524823622680576 8789903665650540493317052397780992 6549902393022295887700591663644672 -959743652364713729116587788062425088 3231945309698725840286988795641856 6035716022074734285694542618296320 -553073011553768147736924467113230336 4981671571617610620513287520911360 7000996037831856401376057141231616 -851572813604310712554913628170485760 5331330434202814145474387716866048 1349739379422697902080768446824448 -794436224191144242255825910546563072 3998323448146889976280841766043648 1556778565485757119188747755192320 -274908520654809400506956938808918016 4352238304257701215365033059418112 9197058247618142284035728844259328 -761001968821184551038617132749291520 9915330443169433030053142401646592 5679564465917090985652518861668352 -637794794646530148449321491133104128 9696707344906322590151890452873216 1346989770073518395484848250683392 -151164092172008822527777070435532800 4218349778922391656248056832065536 4490899637708317386778070879305728 -310045245186078762733958902405136384 5821860663067636876037445428183040 568253709539167759919919136768000 -828542767974097373772617348735303680 7995736575838766341518370468265984 9891516055971227888086224184803328 -35041616017205714515816379609776128 5391123829355820527321827573235712 5759110613790019700371493432066048 -407890692365192550330298675553632256 2764905239504120359399456466010112 6340258797837273877823629037666304 -184885292846548559155841904790208512 209190513453561869493284877893632 2803854509943276131078204278439936 -103986370080993691506216272308207616 8133156142436067154800294055903232 5914496069673970532549011357827072 -1768626681337184827284140964446208 4150641568757116674908090924007424 188726298609924738936113257775104 -819138610964350007140644409862782976 902811495590079033311618110849024 2924045673293280038158607220473856 -12399819531907297393208680320598016 3227727666656722170880904505851904 6196411159267894048493177734692864 -451887009263829120360814092107120640 1564158429189692293512830191140864 2023610273776421413937650656608256 -585812561844629143324726144765263872 5036271907346667382544241461821440 681616792449335985071158577856512 -379341890420502634997559003810103296 9062389498435927746699608004231168 22056946357037809660056750260224 -252619135358968575897754108744957952 3279810104761810651893522164088832 6641251476039965644916689941299200 -431770663478851975964015685133139968 2320455422969552931528016448716800 4130760481654255503865655014195200 -508994260739794855831080224375701504 7275695045763360908297305143115776 9524372248749932675927505408884736 -226175342826254279256966675784794112 1860016871627777057705472947126272 9619583073324918836814239424839680 -379840525722745056948553451523014656 252072110757630974244213577744384 2815621975906559100869002978656256 -881508529273633091764607373545570304 8772919752052899236570385688297472 895048895969192950808330859708416 -11332837011217380572790618442432512 4895940496666042170806484825276416 454087218727043950486485563604992 -64369893133615435578599648461324288 7856476123888348478772943041593344 9476803304975824633579275055792128 -287392406834025704370205541405818880 1849070836721857348831862952296448 5810240907107937454812266951081984 -657507648013827149476947692416401408 1465793900482131954237448187281408 6869087018695157202507860633714688 -568828487603148729975905170745196544 4182050418495056384721876879933440 3998982862439322307284488027111424 -958822452758462180760015270850854912 8020641192981834053385841809555456 8076813788651753266324428671680512 -594937581357596437551886068959150080 7523711201762892798698962768887808 5051488429828640708516169010642944 -256128634880682393697651401865297920 4224100322854496931926298358448128 944237223055479710800358330597376 -530739236434457527916980621920960512 6605663516376111191961470918197248 6729803953714220506533775221456896 -779646959886429469369028161891729408 4657678160587884434578411186290688 7798841780608043031472747019501568 -397432321609339005862819755439685632 1832282528626590141158103969693696 3918674827092857337508662849044480 -765480967966666272186610767489925120 9125598065174468841027154047139840 5200425923954943345375045467766784 -789202472806861689373762345966239744 3098105840381738210971117921763328 8835538298606962419167385891110912 -980376962192857807571898700287442944 8238481457872299136765439722389504 287607356316926372916333593493504 -32989864524587126077079821031047168 4145157020636864451719323593998336 2066109730763360631386416282075136 -70458997006543023728240158971002880 6175014841375020704579993808666624 4654712119505272838497838305378304 -523128161111726603538008402525421568 2780002456849225999934713562660864 6915782032224145146543853910622208 -153576044256639885753776676485988352 2557909122781054036296179147341824 6155383783900274625071350628220928 -745352806954123005874103967408979968 1914462457613797489780066730639360 9347070215765760304404485931794432 -587095225062443155710243695421816832 7276738764802994293000024583307264 4376582693728984082310339103817728 -690329650320333479135166025200304128 411477062120528914000481372602368 6630030218025590186278631568834560 -641196397384203419581753548790038528 4525934064093551565821074225496064 1706994912023463428262203020541952 -294329859108693307747718226589515776 3256547830911931352905373687218176 9080955875553882082974243928145920 -186587751272763858128106943221334016 7342128594238857983439022451589120 2808305534894315205043823233204224 -498388219295520457299864248463130624 5419146432800674077915056858726400 7297013124538895060455375159427072 -840547590970973573726902228380286976 6196491968073616277729327070576640 1581137840451946867326153379545088 -571234437303348574947765339197276160 200805648062765194247634677661696 6036944928120497917189834615554048 -164979204123376414780951121740431360 198825466433636670154511942156288 3431267043819453707903114567221248 -324070694255053679238799641022562304 5965292032238029420032473094422528 2320609038372553082537409173782528 -582049683351750431579186398660395008 4590546541827415214240329912811520 7532080955980543173610569350512640 -342375559376573493736638295719280640 8746520397214235441520459682676736 6932834650685374468011802249658368 -427313646540888399818207739278000128 1291974855047973594631456526696448 9729739447907067424970896419323904 -274020166476887812550896264715173888 1396252669033669177328869182537728 1163800563266573136862990571667456 -416603882583704109920277315872358400 4890714949112154570318934085468160 3649235882584945995907770888486912 -434907524256171060862277186909896704 8228115153635886978638023929888768 5762991910548050095844891811643392 -417374105056928203013200501985509376 787489824752704665165354351198208 5537487155020929927613189994840064 -284025231661208192689812701425172480 4190715231955525724793531592081408 8653368354150060949112700427829248 -27331961484690653717913567171182592 9838608587030359598406117500125184 450529706849545868459547415281664 -140286166199318556871812269343768576 8443620549583266315482790537199616 6981012591111118372813677545914368 -9924263116309139346361032355348480 8531951698691826979246910293934080 552553351791266236786934171041792 -602283263120013603170272955598897152 898771258367385965404777061810176 5035889714826544443852290722365440 -105095629229775889080344458328801280 6691429939236887172229600372588544 8310210718532919613645643210293248 -181388159091565262502163483237285888 3324366633238381747400094712332288 2292435330905261661540144161751040 -158995452605727839081378743891001344 2878338814077338306780019019481088 4034122626441540718046855957577728 -337095280117792446942107233410875392 6381357757766423533429837520699392 1522647181771204733687923419906048 -273743822755524197815426204261416960 8265700653415198039825197368868864 9679626464373511863810190401863680 -558293271413183021415652862638161920 7292571897908988655159270971539456 2010975866708678169417056249708544 -891036807342603183026386408719777792 7099901136208697585376286465851392 625509507624146768020547869605888 -409939235713991876588152225712308224 3165001694833885781513676429197312 1520162232790892650111156535427072 -579710619121860977027383082493149184 2288205672909057430740551400947712 8067297108475028247203945694363648 -869337023667625027006979756735332352 1469602221824252204668264889974784 3677236156985340060627633218519040 -864573532855428181408588289177288704 285189303877859518631180486311936 101594200070003359394508847448064 -784776855796660031782609421433044992 6130488265072535304491741481009152 9514061633564773832130003029983232 -833514255121410339076627542745022464 5676983688998258386816217433243648 1591008853283111456620413833969664 -270237009208672359859722468271849472 2313297819620184870275861706702848 7835257977837439722605217826471936 -729396215210739223059711614412390400 656115778447217042968278235873280 8579744018846062583059752373190656 -730406296455117177577539990036938752 5911579875207624568932770754068480 7240203148873504579279879573340160 -687560113222776126649998919308673024 2663530358575520314303635431358464 1477482174016322936169237120548864 -534050414342520977584970839969759232 8282297554438740151823740268707840 2963376290399209024438872766939136 -636460910804528627832318553478922240 6459227573007021584385732968972288 6337768236600840963283641622855680 -119726661587899618162879824656334848 2084107179443487857109200254533632 4922921763470548005472230468222976 -62264131991276307679828242518245376 8607719342310619667912340916928512 3807636661248069809137708106252288 -350109098621018590094784366026686464 9745601985133708322939746421571584 6978649011948370696786739665567744 -716400312155102518946415136361938944 5124841252313416527095399599570944 8462548549348643904291953293918208 -843377490365456461090259726220918784 3432199599673380843365409849606144 7385365795227705843085113385025536 -166033653881295198923630689331970048 935108986144588928379852322504704 4241549486695368188348697860374528 -732128384046585384706895353930055680 6729602845018323279686655014862848 9254320591196331157366201301073920 -284586435701721822051872063510020096 3705450402337396603804713647865856 5874370420004514724478512932061184 -666771922052768803502921819973746688 8375906122404811220708653449347072 6649367542543262470747020438011904 -221389437193151211101162229720940544 507765053281664311748603888533504 64375123073415176057525412823040 -969939249904806235209565445151522816 1922195240146702086094654667751424 9803109278875265874348806657540096 -372332677894430074943979630217920512 93678619035080215209413531664384 2230839505288729746820069324750848 -517580598223837320080647312587620352 4268528682714351288768854080094208 2134612554420000751429148118876160 -371619195526428840994460053201223680 837101961484497040818454208184320 5908495267383097992330396760539136 -120967371594867977003521811601686528 9601092889114074133230653261479936 4169415139550458157106929294376960 -976347566371403771172575786261544960 9389193551398215285111957688942592 6321263609835568092640635810480128 -212530838087975326196789750605545472 2825288960350538693070896148512768 2519036996956557753555923354255360 -333677955183709734560252111307669504 5725872293396730174596500248592384 1177555875430164203440765226975232 -966121346099436040125803112309981184 3319142613073190208707572002717696 6931529105032637662945895107264512 -966339111477054075319697869230833664 1436108997941674849625109358968832 6996582560556825645199356327886848 -46767576779092418296655693274415104 9005477134076746178159299247734784 4646415963931058189457729997766656 -641183157051189687379403655549550592 6240672755878722733117131271962624 706446859241417106013372855353344 -277984949974754260315129540323049472 4780832770756826607380587826118656 6788913195503344086172353809088512 -557434735010914702799941838999388160 7428030268501560074997638371475456 9539278481147890792244990326079488 -392718053391721155640281995851857920 781503894142886491975721282437120 8047621078245186390661578337812480 -757118160852856671678361306073661440 1727815392168545287654935009165312 3166088343470795796178885966561280 -284822053801303904763213919484379136 3394750373677005639895874032107520 6687053455479592644571642581745664 -961637635189148342904469994948526080 646313972434911882141921825521664 738805115259513146339757691764736 -977170714296583945071435113178333184 5827538911670965107633800796438528 4464604189794903740301972829372416 -48290463745679736316924054699245568 3176270128422572251631146554621952 5517125322766260970764944304766976 -943285333111169074692031037143252992 7467138144820526213946239258460160 6000555843204596330226535245021184 -645204877865726108278773061087395840 3985672801670791093273998615642112 6574025880709073174256650542907392 -709176592090950745711611367034716160 6999711895539531890866609503338496 702013608796455369668589399310336 -962240706864690131089985784443305984 4170377997581374856060627994017792 3078538285429381741878980332486656 -944053433178601926146879374344847360 2610017928699861498504053396602880 4269788770522983807152768715587584 -602406364376454098286866626391310336 139889349150060140027536398614528 8774489503665611260017372439773184 -741222563830981624959967531167121408 8871148392317154360756930047115264 692236213375572297346062173077504 -699495271688771588282571275743789056 9080407718091704109103169335721984 835044638293122033853054888968192 -276008075171655066267750587927887872 2812527558999455591699005099212800 2588752338350648854984583335116800 -233743096573106450293224991321227264 1120469606728928130216398902263808 1498251280156443101302608801824768 -432258864033659291426538250404102144 9584257529769162344592457726951424 1699735073380882634162070580363264 -883588864822953489055401232148987904 3412811123776572449051057839931392 2161610142067759749360309032189952 -296021257872781319923698763607048192 9911110635697357365587816570945536 4189544736601765868725133614514176 -264569759004567875832478118572982272 8118977778940598533237727607914496 9648670575095778957278974830444544 -252839424770227501612273799146766336 8637161141399189125230623199330304 3062463095827800636421720766414848 -583671600386494973751196827812626432 5089360833085758658001471220482048 8217127636690688946140101270831104 -457291446536998982393299380794818560 393607889515519409284949978644480 7116893511080292453068106465542144 -632565159252700270724216470137470976 7259984644097407798279792937140224 9989422093397356964973477193842688 -208162283220239230901908452191240192 4054741436023434109166197309177856 7208881598179089213122623685263360 -377297138569841572210037573667520512 8992026716262050071360029520297984 4827905273367598762578449503617024 -374645015176581018648780633314164736 8675219714050101176923125639544832 8848828059675002653710069360754688 -908608931733439485181773037839581184 6611017332296090227598369170128896 6933777209015799611036942704050176 -385666758079124120130710842451689472 8783505071524978315250667263885312 1587561721702400693819103189663744 -317911697814519136646973547108892672 1327713378389851531030424939659264 7424994474150849155759602504040448 -261367468992600998864985470770610176 6943050454208197683765994976182272 5778891450449668834604516508696576 -172992545959663058013450946297724928 5478385401275326763022874931363840 185065332611868187046367528484864 -651796996643237040164283666149670912 7776647812916879588315835507146752 6455420313883264674208651447107584 -76040279279173494633799932509683712 8536846312563125922985541707497472 7397504990720896680156017685692416 -342709153866891152310550763845713920 2802184449579531602176502417850368 9961364304757104112568461628014592 -154898139861278885427138335619416064 4119873414651019477608558862794752 9221175918893437435960502912024576 -351434464934842695566097038887092224 9729450627200306724747696245047296 7735216682007331150114153872490496 -824019004512175944619793034638262272 3918072428137424067415476124254208 5108208614988620353536753011785728 -97796767323952876044068379196129280 838624451587377167500509255303168 1337585108093089232584997198626816 -698322074666553625373206398646616064 1039976304545635590536714797449216 5938510448094300945608723153289216 -688349498212966489492330182602653696 1605997170173743726255167189811200 528075351869977720748450949103616 -749604545271919257433790504727740416 2199070029104885604007699550306304 4551448686455411940060659386941440 -45817792201330739198908222199037952 6454114798910644174152938932928512 5354449411396564993321533318365184 -79570319342912870629839333220155392 9991491147556875347704915091783680 8666241538861962874487716796432384 -584407171093212500194560792282005504 9803125747014274550532764197715968 6208610447846566017159293155934208 -255629591050571498100112331263442944 6817259933831636268243323812052992 6616012594159887045574212804673536 -436190185018913733648917805211320320 3891692600871772982836966629310464 6525451215323616323710023559544832 -633660728895035589787645023587663872 8193341556058035037026563976593408 5410815624666447147301632972161024 -76117714967623936725246776302370816 3708233663388453914745713526308864 7234102123767121860043950576893952 -850438717271648402409771383237115904 7432589117874854503719086696955904 1062089484953954379499401446948864 -165349365754258763619214830333853696 2163615219377318511317559092969472 7568997763572023654637438416977920 -775690120062188076205066179538059264 3981179269247051519651452708454400 5856757715062429482413758391255040 -422460368699003803327752722024759296 9022666818367070890825397003354112 5534472044106144608144334088306688 -880982858016315610321910088402468864 451524088937211198244868021288960 9817812605016421418873773069697024 -910922419164183196691653151032344576 6806681322566571824777912618319872 1383026909390877991747008851869696 -44536585684374657547433189369184256 2661794703380986442158666386767872 1995114032540260031273221138415616 -329233740605616347272096872895873024 3896688720798573855011114225500160 7292840176370752103477897976610816 -488198192906475244240223194916585472 1009782402490813779662868595081216 6055920335243247949556314930151424 -495988401250495107822581430567829504 8711624235566762963674961239080960 4519441204754891420615523205906432 -955065022436034611487457714957713408 1965285271476383522323985156014080 7444227503351224184194634184916992 -788771307709252322627980364395577344 9054834549951735317861505020461056 3847309761820455292019108600610816 -316071300626959177575885471372804096 976128945590356596106193956503552 7222366677711034602081222236569600 -526293999453833975231740877150879744 3575896561001513437368176846307328 1715188572893697731128687115370496 -29704548962941636468424591684927488 901841181799956840720661838036992 2373380233530485802730254388690944 -249572992468422545779655781046550528 9212808375204026924027826101288960 8631283970052913813349065941843968 -754085734298701508574559917343506432 2893025550807234632976029643177984 2734019778925005948676363427774464 -837474626811653311569094977551073280 4017736290141152720789620849115136 8837609870251868229945483203706880 -801753649919313173984781872855515136 1320865345200014290488442499366912 7451049547962152262184499870171136 -542478924428088820352011779748921344 4390542104953218739123497258188800 4098037276434937340785010300420096 -61561923201571351694000133611978752 7534099181136126880316276567179264 1344764064204075477663808273514496 -428900652642185512420767044093345792 7942299230553683356163029417852928 1836782852140455399748962443329536 -377849972453229214693330570126032896 2227919164594726115784870812712960 1717171668109287292758685678305280 -500918241129355321801074181763235840 5872658298867936695563963324170240 5101828217493707464056312321540096 -650685322191759592723203557035081728 8461035736294646192364790917103616 6358354882032193541649200414982144 -840421200295167330491965349449170944 5918374273265467870888916854767616 6691709744511429089766499778822144 -673961383553564731223344889682984960 5496957441248196040990534557237248 1520247454944068823850418612207616 -852498366127635855041363892301201408 9848848988433702055197156925505536 9787987013897360698836032069566464 -772617247303636521993106431219335168 9616488355565493198248190469472256 2067488310139827185449078922149888 -569064101257783548883058305269760000 717571569392787228102062126399488 8946652704905238090819592765046784 -65285893771394334649837341774970880 2404577359629944061286872908824576 8696961771289774032702734784790528 -157749301023391082905492664338087936 9386274004354570092188458446487552 6481698163818259996594315617894400 -256574969035788682111033151477252096 8793951461590214442912618171596800 7980982040010654794962890943102976 -797631308764747598099764174720598016 1286245275485440836472222859132928 5107624064265135732043257284132864 -895377200946739441535794982072352768 8155018312276814180720560622796800 7491803731013493643766072994693120 -452929798835384010253871204502863872 2353843863393412379514459480129536 2178326097974641816359650631614464 -782076943354550461338100190800773120 8359299676366074870699673757155328 6840960778497261633569669053939712 -909684125534977883724969996386828288 2677789652148962283708101766938624 9010886956766566898327435855527936 -621933153326145058122904758585917440 8902361803923138719792870906134528 6777431208430959357205825818984448 -834496841577253216615976924094660608 6838143649379311460968406559227904 9677495955506038963656150025764864 -863005840172288123789173686785802240 2862990451078559143930918223216640 1183320135180411100965412907515904 -990217067070668166220326778074824704 2774676820117719913491510203514880 6063369319830519865622930510577664 -839212566800665086422185679079342080 7652446927833773363377833976528896 470681542353178468528344881168384 -651760055009703045848397193869787136 2303705437730185316705780474314752 7799158587109353876512163890200576 -307862724635057198653227064950259712 5276534010934784948484711636795392 8421909417748109468714629861474304 -968560387974872823842876857597820928 8743493486262049651847121822810112 9740834916651597942962829872070656 -833553592127714677774280201974317056 4030637552687951400168428585091072 6142563324054372739257013660286976 -458844117084081055168227262198710272 317881669628186088808004540432384 4148065536718177607902652547465216 -577969859282037327071419413171273728 4832777803791354904873311259328512 3063228228420236795767257133219840 -689073684765242317452783222089842688 7707625569645428740450747907309568 2245775180196473314877961616228352 -397844303489925444099769307775369216 3637857223704253645053150405591040 5352002085266345054680499200458752 -211039983778669161458380853085208576 2944655582610382635368729001590784 8956167487771687680195365185781760 -123136306765181390061080349815865344 7166148094614035070675754539810816 6717733826901371666462156508889088 -571476725642430824948152966540427264 9778169587047610903523961199394816 8105543147729569953064591126691840 -896221675964922382082665292194906112 8092337901099870068817247325913088 3788124618819307784960270386855936 -472402738536312299329499023661858816 8234273318403932595226002298241024 5134558497789210947690936783601664 -36618198876293504676905201633853440 9684636840462866294832833199341568 2717595251802408841155070402756608 -512191160396792749247448161481392128 7168110220803439051167837726965760 9603365400636245235816908644679680 -226010329919341115923048174706491392 4964049079115828903226595084337152 9631128171475233927362656793001984 -833689481173855663798393708308594688 1694338314049775751436256862535680 8215927552979599632774396244918272 -65074951219407327142081251214622720 5619620057333784141069984567656448 4260256210098044882896261891489792 -333492095792377981683624865775484928 4116281781400686788612954378993664 891983436482868545458293161590784 -421911624730673455461376403001311232 1904485787842861393933929275195392 7751305678019191861547513185042432 -63526889081523905739067734529933312 5828639739692147390521384194015232 1111152513964231152971567427747840 -397777462339995679593325446500974592 4882341596720285975827462353846272 8496449200673239372328119773954048 -279243347247909476373984894515150848 2964870504616654511508117671378944 4815563866966802332085294787985408 -300954099023986986156984285114925056 2574857812794155634148375057661952 2291942131808412672612245809659904 -465395350448724920826566710124347392 8177613418275146819968345776848896 5601515091188549413889477019959296 -59750511393626641604054485787738112 5747550989304941191363458290941952 6866335134405094234459039036604416 -602899931826165913487586555624161280 1602931644670574079611396945870848 6222682787533091582139744781336576 -30077474779289021412242519752704000 8842002400023592997638826176282624 9501949845132573640031138066989056 -756622094979703451488147249800675328 5370171924713680355151669245247488 1619309447575340815377017243435008 -966207164669982507084439226257768448 1599953364559722524519266617655296 5521898843097027919932786336595968 -119961769023750405498718439797161984 7488493336781850249749496133058560 9757156282952923388279911081836544 -939360443288658842174086443245240320 6943535982629040511406856933998592 4969076802930074792594928463511552 -787033021452801865789272715134238720 5463602245663703009144309089828864 5270755257134092147984837499682816 -341595674906853613271450067916554240 2451148180347039788564648443248640 3412182877433158364270361151799296 -795678205497685189278315366303399936 5127681226244949847306987401904128 1124876087154272993125535393513472 -386292506197584628540313624853348352 1717777356677588853968306614304768 7520602296910169110455793152425984 -668906669810050413614243670982131712 7505077031651550983579545725042688 2629234368488976732149376985595904 -286485721620367821835987464478523392 6427667393568404260766794077175808 6692498793449041034748049336827904 -226459040271841229835636930856878080 9799496447868096295899834911555584 9103112951080878575273288302329856 -763402021032822920648339864460197888 9573304883353187961540835689889792 53801275158708842405885563109376 -878351843034421928448387168266616832 5406087052515485105828999056064512 6336095651042682071959028939882496 -718692892525937988979619357677060096 9607757941169407349879333095211008 6369509212825209627713271519772672 -38959112849931698869868551685013504 1929434277133517438503815120683008 8111624379747343742297640861171712 -566372812154530057884541389688012800 6106171081559295073147002080460800 6248506502674500625356733018013696 -987046291382100652131305530807287808 557949199252176568861513503211520 138960419098054415002694401916928 -930313179511508768985929590771810304 4607466461708836374015057953030144 5948709938482896203091495106904064 -63252113551971595211095828422721536 5521548140901125814205522236145664 6136424235502858616955960473681920 -432032319056238815082980214755557376 5025157004673671109051534402387968 6008782391358255373435704088461312 -169113324930345750032839843149512704 6916781266650102252314699879153664 574596860210395613928997368365056 -236463874049555972173758679402676224 7535774055449022179602472930115584 2515023759932345960028892586573824 -332496983168846815755524483932225536 3774908510045909528393975343349760 2084473315187739174171418210336768 -914046548587280369118894126213890048 3452482026186356914027182881243136 9647153529878601539725829987106816 -477380014601499955493936430122532864 4477876966954810484002235799830528 1256467854693996854821125196087296 -999200144847471841456210740347142144 4532177925342343942966749220044800 7977713490030844752217443229761536 -451413362351593602053850474427187200 7212754800532339565293739658182656 7734909248650169890210372374233088 -567964315174072393045327201574060032 8514475250666414236398281025388544 6063802947715838261516135420657664 -769651876745971360402027815446249472 7241795361564369741721836040749056 7454582125770077155191240808988672 -213498250431501711437885171356925952 7675334497207047256418533720981504 3518991985538176142654439600160768 -696977648276562372868629591779966976 7393569645863533792837985370112000 7049891100183817111547971647832064 -385144353695916178765686888277737472 8360970706907835265976407672487936 1509090408615128577052173924302848 -968116496272924814269543216758915072 9907519871271466077159597526745088 1836016084700922988898696711634944 -102854013846326292198337931426922496 9747691380435270760057514064084992 9141780113676903074944870749569024 -279131279113005435226580568307138560 1856344209998307543513904334241792 3715253685139603499523512803000320 -937534512948108830138624268518293504 3528686188149850971182513459822592 370975880591583986019691004952576 -464283433085415747166413296987275264 2234747231220711445278737400070144 1350761019671400972497873442701312 -527732864223088675428550418873974784 9455256902389111889005248033849344 7063623079392402217764244546387968 -798941288574766129397980170559684608 3831287683872718681955980221087744 2746556730916159360808945333567488 -709242951862164432264561783971250176 5654498122099977991589603129163776 5115202411721179938997346873901056 -490642478680637453185385599688769536 4688990654408527366670090200154112 2494597878706048290708116780089344 -689783451550896501770773756582559744 9725685356727716816958505556639744 1595581380085406861875207643070464 -748523121819355057886383185185472512 591709573361306556890413136871424 48671748937265092980103593328640 -507429514883397448661318282768285696 2772375059479685298851197187260416 6091955531152161654080691379372032 -537954497251109792362910076001845248 4584019037637770874759219328843776 8963848613917769851296113108189184 -887753170838267218721127521251753984 2370737260456333551951018010345472 8202542449062049122002703472394240 -32273212347936337933671683659399168 3219074168144645367826215719665664 7910277544893597969774746405961728 -903678254243462372116226279563329536 454418806317272619577071129067520 6062514255541743369336371160285184 -344897375609834504983717596134113280 5934203811249657307764889680347136 8854378454327786340243379740213248 -796844597329385256739460004744003584 1820463051616969255613355299700736 4680112523904036569289200158900224 -38908453804938944687271844255891456 8593524254317786609984881242931200 2704461057098852745314389580578816 -130377301267380934688591511673634816 9218148651833521189620898680799232 5031755901635124951504873309863936 -64467964599935414384408605759635456 1875305902907117452738551334567936 1925420361626374907411790129266688 -605857751592836778806869835410046976 4079231120814695899265615704096768 7332676483459498690377311611518976 -459016587536020220653359924219215872 5352044578925194337211000784158720 4925670405694123210607453286694912 -477442440413666961548778019357720576 8981919928361125621210036366737408 7627999891706140420799949325729792 -789500979082209488510748020552237056 3461685028365035243253100925943808 415563360496173106949900489195520 -492589060619514334385284588370919424 565034912531076538783348872445952 8315351504447349257164436447166464 -610623845724345344135823715861528576 6118268530945826909649039685320704 6969700871817425968988955558805504 -834124350669105696309711649370013696 8776301569736465556265623984537600 927659825029658719358775501783040 -83069114680352057525315016450899968 4090729619071846183882207090704384 7573871700112224740121577651175424 -432749211994585691314587653464129536 7316982439421739907846335568543744 5972297940621751833766442980868096 -755331727774892722700410982294880256 9156610679698315448981107253444608 875995702533792991468356739530752 -472317709886622563960145818702315520 3465105234921348270591039762333696 4423428818989433084131729542742016 -675901227777432415033914209966489600 755144923788407302860954084048896 1042394602581619561597029429805056 -587629066505432053921353304868126720 6264488127068794958585506912272384 3589987389013778607891381477179392 -151609132177350327326105401898827776 722312652348396263446306625683456 6467475659607195834344289540767744 -651365636484316114547294834738069504 1274666315373059905202290276958208 5136637703325180314383068839280640 -447839218766205380343559782104301568 42682953891566468009122211037184 8622101356562663813707203046539264 -681291895953548711080434830470545408 7030059772157497171367142161907712 4869631139540564386336878576533504 -880138721755680183276708569167167488 8109302181270299635856992878198784 2494452115163325369328753054842880 -294334838320462736457743057886904320 3061390671069130988576257389625344 2991076958727427036624961931313152 -924979076919100653481863610003095552 3021422179721487529667810757181440 2335887037085360518586496735772672 -331401987990935868916075193775947776 6017857290937062061176149776531456 6405707716448072657715267452796928 -242531409602589031939206730175479808 989595952816312785925547927535616 3732268907877194809122249697656832 -963081764717444758004006430108024832 2657158474557552609977457918869504 1522669397252438594179910472826880 -708558016435439294867109531858501632 5876993401939524194871117397098496 4032814313049885583964279979114496 -742808034106009562416900536367316992 2143708269468424097986991162916864 8171923512429550270579697300537344 -800095055937990338867043620257529856 3799123221982245028547074023489536 7828991779835162078131429075582976 -247574726161755459663741383811792896 2223381287300027968424544084951040 3340960752709154313255543407378432 -30529435445853449852057530631454720 4222707332310692642338089929277440 4858652111497019516733198428012544 -554301674011756471088805903222177792 5526906078473471359692486184271872 449822555115512149241347425959936 -942513503035896071940515934010081280 6939782920504573681158276761255936 7750246619075760255705748917452800 -292602396037361673282698580101955584 3247104918197273994695351119904768 44094675305612582337186239610880 -516236805638432996853189452106825728 3482174412113722811220758475309056 4647291327920326241672847593308160 -509343645511902812965819208637087744 518166410679786009676281249005568 6753681996991380722473203228737536 -304029936404654055428821409222098944 8527409214655753812388249539182592 1267617695361274679337012625932288 -526518965664608599936299266933260288 3742467504866057796699120151298048 820663781508190258447895987486720 -596849169547216108833953349426479104 6729380529408348127574888177205248 483505274945684422266475255955456 -409862744682664424806282230360965120 8210713650458331784578790691176448 2281243145479089980849801423486976 -558642153031450630297907878397214720 8611553438919049335489316090019840 1232359519621919700122371136421888 -274705859924123272240601930552836096 5239704129412835572407346221023232 8243339015261425437417356803440640 -68008568376916790111824144947478528 2930882284076325416665050855243776 3466114088088370493005613794066432 -972633704516438124044059394829189120 7680078880536965388012807729971200 3642732871869833713820021104312320 -466817980672898966032418303350145024 8684289672302679963540895402295296 6640409631718886355611067694972928 -372800230411593526245187500067782656 1679457614373625391514181615747072 8765757244162243285495171306749952 -950713060961111405553043511065968640 2723768420285201757317692680830976 2636129196570102505244484140269568 -107292637327864224976823212232933376 3365495898396933684333545896542208 2453641248307423649473342249893888 -306004642491705420825712585181495296 8204031190766088024538306677047296 3198628281965351971610125720879104 -63271669416764545968007033143689216 1376927764728508208445406517919744 3478882214512732741015392181288960 -38700904493120462286337370415431680 6174834107553700013729751079321600 2208377991269940133244791334895616 -394336868558520709016089384051539968 340604798395691028817342619451392 5941871100305346450183104745177088 -852199466504460996738621579129257984 6675582107925081279971420970942464 8027845869103722829492476817965056 -22172986034068313935525400954273792 4094430185060967453419697418010624 6537844509894300646720190218764288 -564605601398890129741775084927844352 6264405000276433541351854925938688 2779425951379942565370229638037504 -787467671801220477266284107689623552 4317961224621471063216081550180352 2326867490368754205998930481643520 -448683082059861852219022552978161664 258088464816690874366114165424128 3669187447537006824974609148805120 -769366144460286476431549194601234432 5839462406116648472837165737312256 6614281915628312172563278740848640 -102183237029406269572561524454588416 4811385908403174235431510229385216 2813544231742439545871849876357120 -772850121003002232898908074278912000 8576287874885545755407980244762624 2522387861607907071138743202086912 -5589676979969077705883460304896000 9969684198544636484967805956915200 6155229770947989213094910818779136 -265028564576823829457631350368501760 7969830099325950159128802436841472 785784060372023878418316270764032 -815221168112030924971135269179752448 6948335295092383983217259757699072 2605684937855350384821764853071872 -252784048280154251262310778356629504 7369533397464248585701135535308800 531922742171974176902961814306816 -900772872259884954818368481611743232 1319047952463296838802696625455104 9140728636421541144965022123819008 -651582364119102643800198039746904064 6098957106019129319920279880728576 7303749266909512422593402490585088 -248561158706015851189605553523392512 8928864927548534727544848145973248 2620355278567907991223288670978048 -977496274162120184969087047977402368 3307190635534295588314107988672512 8615350663281992163771041882046464 -350152219150374792852696582261309440 6067565527227794589679292434612224 3545432814707090462261298407145472 -700274763885732316269474216423718912 5196848001866139502837315772874752 3348582978417613441505230676033536 -105891809285261934585880694342287360 9358610825394538776224480540753920 2385573952898791514056245922234368 -733440149494723605240317344307216384 9010332069574496137738814104797184 4471817801518313831868434160287744 -682184184250776647343306361582649344 2821410790491570377577024563707904 6358044269572976898174525324132352 -743897519013299206037653843053903872 7934376057069249712968024652251136 2156061454383742270721198752006144 -681879473164471185287372138143023104 7947649073721248858347710959321088 23423245263709244626010667745280 -754535803051272177308673777021747200 8631886700540786670770002977619968 4789856726164272936161230849048576 -128650420170364693357546695649394688 4746435408096686545504434705661952 3708045063893004200678264124997632 -312141173035610591319608140400427008 612959743976022791468423546142720 6772534374874180091137737569075200 -406904753619682010652653676897763328 1675353805559284898176451221651456 3338763976632787344425672494809088 -552299452275854181760655268065050624 3879353183977590023770908143910912 6138781892399922873273099682316288 -408805818276428764227516091827486720 4402589386952483278663286056288256 2937937099578414477959267895738368 -411615160873776716886239925183184896 5089716553386173990702798711291904 1248868077698050723456060642820096 -199776983074920374633315442062524416 5505635781633509000189351410270208 8662756388330088230757901958905856 -757453961319324218456701679171534848 4620771074539254178673430938779648 9970375123079965725273490490130432 -535303880704039165471061637226037248 4776169992935402725661130161651712 8662544400624225814325804339822592 -631312799024330341249336380101754880 8734714244578296928987500953731072 990391120465944681636530168528896 -897570538392733125585245017993117696 5182221894065513749423380347486208 9553324187505102597650603367727104 -770413906648527902322940451013787648 8018700345828177954547875987849216 6468100358375184657353419643682816 -971475764422346765822722388980137984 8772646900582288062217201658101760 7643464290147595918997766451232768 -864648744772355981365846955251466240 7950303416999200532262247800504320 6461885396239351924188719085518848 -668220681460452392688500030073470976 1027426623780621510816528051732480 2294360842811733755779477279866880 -34517254234371036677327682266988544 1173842279814857975191797845983232 269589279456280397513907178045440 -896959905191102964238310924496142336 1506073078014865241096870395117568 8221148177521735639154306762932224 -840879225301656864464659732607533056 8565141552561790844973304657215488 1679609556540388069245032001961984 -823241982833644763324803710556569600 2458182544196268429162481300013056 6916675413263996088240633852985344 -940519156743561752551119466115629056 2009006895621953701660720858398720 3733537952810225065086410521837568 -299459767134022154725579130838974464 8929182854576027940331421714874368 45210021952532547265636882972672 -315915590724133044746704012303138816 7691656139785406267636159159992320 3500792505530515198990834192089088 -507465108851955555341112978240962560 7595594926732278750818592788316160 7653895441662610020710576056958976 -980694022325588980425251021429669888 1133483659599502808309672980774912 9886248777728732849939300350951424 -512421285860866688648128572254322688 4875386241063464095757926616006656 3008470910897027130450217246130176 -51273952482396630654147955638927360 6888689124853950334444162579955712 5183413055988933540916436723040256 -322217900940679890444570808664719360 4739301088551743426512689978933248 5617327599166438068464093419798528 -242143566690730577788651533894680576 4142288750901219550866445560709120 5852396730870330416190803532578816 -310909134057758626996682156274614272 1739683925196488103000789032632320 9910631533101672477432611411591168 -890655242237226481706259288978096128 1277103846234558451857768153350144 7580940397198673775774195242762240 -611131883856142616752215007732695040 5041068525796963403971266720301056 6714431582329916643018077349347328 -286224960394512687440785281275396096 3194631804775234847768218779516928 4656513767079880161931617011499008 -624796769955233476356842863632318464 4726915604399783834674780820209664 2197277275690242485889957239980032 -590959293144696340693495512639209472 8719233144610565212137229215858688 3293078421027883211118213112791040 -729503857272786428865890700566200320 7259478134440727653466530012725248 3706503001723142976697044115128320 -915304855839670531504236443302100992 7768588646583157293383397169692672 2479049587449574218496294529269760 -961035540215752476823579402814095360 9415800959579471202528210639126528 51842337228598335941819037122560 -824764992475892124609053934032519168 5204114126591160819459388512141312 3210234368205079656521219335782400 -267781524536677539963614402665512960 2226971982656660577147250920128512 5963821183259906688233180883845120 -312372954096929576822443564744048640 9750115784973623954619092319600640 3535835043186796815062898418122752 -507636773898060273768989421740228608 4395267192493187898167269775114240 4611215391419497042201481737928704 -643093193464366941973841741350961152 7345729628261039809519351528161280 5570062743881216685245628120301568 -983321314969792793892435150510227456 1840491363634403159730133888139264 6770910530668169206631001491505152 -812093450997325827818378708868136960 6108312992914883182538477325516800 3243384384040100180096300554911744 -206308902411535062949485453552648192 1506486243485884140542352733241344 7754433967649797260771415073751040 -491484142128031182133152682839375872 4482394874633243137787478935601152 7976945313422456121493941494218752 -320323546238607035352964552766521344 5022627279384600500036617732358144 1713183111848705501791567642361856 -649864151291195156400806968957075456 2378686460908818732393457111793664 845621046738972251679095036837888 -581626927051372950005886113753858048 7317860009282637065264484631707648 8141698905991839851052552700297216 -583415713331862209466003451883290624 3070389004766835381379379203407872 8955464233615982514361062674923520 -890988940388087212566459988949598208 9977413341461768057401748031012864 7985765555108892240856574435786752 -385527257111178714039498756409262080 8525932868588934203177551871868928 9917954963254575908609856374833152 -712557334849103488464720570123026432 8969357339242181016033448863727616 7756362959510649173820702074077184 -756881209498208399430965189104631808 3480885124339806790077561417236480 2027125697253381399971069182345216 -671205580587770741427817963572953088 1650204238252846778848135190937600 3646147173026726679949673618210816 -78078288969878003994082604256067584 4835573508026015207876189776510976 428036997254034781774934697836544 -844571308595374336550830139760443392 9543359116668618962637475171794944 2712379014428235564156688332226560 -775480971588603006234639521961476096 9293332768558053104655012693278720 6969139122861771074404193102987264 -904519022408933233511707403001790464 776157033631039986457487398141952 1702824797611086203322948357455872 -915980677353992941161057199830597632 6662640361144724595208816424910848 4827591245366647051689296767483904 -860339823931246137300847196427517952 8785754498741472715625669396004864 9342343984572526821563297886633984 -309297394288448062291842612993196032 7762781718250603454387231049908224 8114945746633501586712847252979712 -945688535651144759698336145419010048 4864125634759764562392721733451776 161726508142951857639152978755584 -677580130589238924900046777889062912 2413678831177831322121015620796416 8966044874225012581928273365172224 -764889364786056250283204248174854144 3612444974774123074842191208644608 3877715841922649749981879410360320 -823139479469516699059852999575732224 6834276369291745681428593864867840 8869990008614558485883412700725248 -597909832091179287347047355654340608 4337270568001206266487161239896064 4018906096250541610620181607874560 -18653912386488124306002100562690048 1357962220339537613756550269108224 7451207595027083817633545646505984 -67022223703285786458482899089883136 4831818243082332566721169723490304 1035468895194146944446854718291968 -408569795628730056280253191153516544 1649910454696980890690710770024448 6455607648453201828176696285593600 -840492062359965182744688672066502656 3484919113869201710157779747995648 4678164776597652520607895292739584 -70541206415292914120024761600835584 9754221448208473277808733809803264 1167847240128274352575597256900608 -990068653846714926693238502598901760 2507652153346999634217385339125760 6201488663681558743765042010783744 -414586621686502613731189418375512064 8391633251620541484926898165252096 2337045684855338511556448872300544 -169396573667695117270678091828559872 5516605256952834426788600268980224 4084353682470768631798843029061632 -324706177365533991145170697961078784 5812489046427826465689407479349248 9966757232526726962628170033922048 -92778050251913999323854407485882368 6787209224026954427830301903290368 5918654387101360005119623351500800 -194085659532397276658250665965912064 3136707414251799379531864056266752 8205901242351960130375811329949696 -580623039272986569838823027213598720 3688131413486118339514187248566272 9573302746550820706577454100119552 -629905834721347084919527603626311680 3578195200845311407700641635631104 383421806383716205473123430039552 -35669817933790982326962096881795072 6943720670732310454963983488122880 5486610147211469703510747173093376 -768583836857461100252473860158390272 9056083697390170613100805290459136 6594759569870730011426944773521408 -131444841227254197713194078657576960 3372637775054656186309442508161024 5402660278943086944062301236363264 -764777196360488678433669797203935232 8382296293645566485980845149519872 2093120699488421836961225027616768 -165830830599515932761658618252623872 1440316305370541443048658387861504 8012368526971604843135771424587776 -403055483937031676964350751894667264 3718645646490597327567707669790720 5615734420954171256187517021454336 -823490852001334692021606575205515264 686435092141275762780058513571840 4219436843579051789086398642913280 -288755002013596082503114686740824064 8894014693416124636041621545156608 5094384272533829232309446121619456 -631024040931167872778083322680049664 2114640454931970181294740400504832 9545510611428539937739814817759232 -675818194862539483836529633577140224 8957088188332807747565220129669120 6421924440481607390918738347819008 -562486533057900693940787949498007552 631349861980339676766992993353728 240022601363862492648042280255488 -522986973416321384641385981301227520 2962232187434458730673871289057280 4592391725360559372351369902030848 -602158065372917689827408714984849408 4564919437703128049173768968339456 4522345453336293196700758333980672 -837505194183117790986885742091829248 4867569399949323725838843763490816 8666294131694269260926793436626944 -172598680573188609400683736151883776 9749025185107178558004342848225280 5459114342362348201447248365617152 -353643789264201891170010262279290880 1032927488087514410112555438571520 9501073946903718221794481537024000 -893149066048127422681476436624146432 8231527875201090002920529312350208 5958601901869780939856833444577280 -549975033089305158523282107161116672 2303475548141167711338725554257920 8908530186084482723363097115885568 -209598158992505988495049128597782528 7315835696095150721645855891259392 9699838700075762071020948307312640 -115834264475874330739646439937277952 8074767261587230237462743442522112 1835588610864354632939967008997376 -65477672731347460868619183044165632 3513086971192481108986597581258752 6798322786600350855312275954204672 -177089628212314409831481177746178048 3124799491492978549849211264827392 4679859023478779235992219095662592 -253045376605219185682539216501735424 4048206443790268201715318594207744 3513015911557312115585940105199616 -413772028549601914531960484788174848 1752527420197484664118970979188736 9952965827954152963091094153723904 -992414085598914739187845017502744576 8387056174936475121541035430248448 1109828871430215432349404251553792 -781114047104645780644302310111969280 1882349191596427180123367518765056 7009311602759244783656918388310016 -982769297532269791875765928722432000 8408158704616868648986758963265536 3777960708122984372420492514033664 -178659085528581418300420981906210816 9775302619022422032834617835257856 197636943267857551012889651838976 -559286714174235596704698094562836480 6742728705825005777624125486923776 9865251260237709402556869659066368 -554226671726310112420327695985934336 1097216492554608679614997269053440 2601626336631583853656769847885824 -809912118320194838531624580077846528 3722717635052478322856821650358272 434908097883282988126054788366336 -349126415404651501926629438570627072 3670464807896445245175142830571520 313386195400201005259539733282816 -360924009442012179510884918420832256 5747890362738601848790340310401024 1606333869513034162557527884038144 -25092898200153265936943684276715520 9057927560742395613224482331688960 2828336419652544864477476531732480 -447915386380286400913251000188403712 9493965528553948413943177197649920 5656102256100491860538030584496128 -307162270818452700496751251343540224 5808282610875814855360211629113344 6242012978666761536173365446836224 -961488720961490051991006390029123584 3717311000621952869149353397190656 1215003644711302226488665380487168 -733320137220998725164195107393503232 5193724564573824654619840601915392 9688479048342344552360373859123200 -153905697727632076108978569921691648 4047539566029604019158915655663616 6931238202778915729186519424958464 -669473182464790673251172594900533248 8112195101089461116563350532128768 1003291534106979189706808704892928 -688397823840682698949866287643230208 7006453937204744455001996892569600 44621391018235607733306849755136 -886620713237868511150856220111273984 7232894347857149675040413138812928 1572538891994474712496255361089536 -576266348398144596857916276623802368 999694039951195258676230578241536 3806291776463248812234429215801344 -789537814134933544867439743114149888 7713092550467376638716266772692992 8763022991583127664382817500921856 -119254599267261220059576440180441088 9225145589278995801569701616680960 6844215370114424646723071840878592 -38369756900908549270846543316910080 1006826385407577333841501131636736 4176787515210871475230867447611392 -392347140945283444240248073697099776 5796813518343509722954035179290624 1296761114914041440059746393522176 -904772128108183277128795404005015552 6835397902271732868509538606645248 3686599177265097983062855777255424 -106724875148675721244013638505725952 968766184014393745740007515095040 9323541936790802978610552831475712 -997582664460419023321692406395437056 107596727800108315793296944267264 3342249670561488660606048725368832 -768783953769257549182667430834470912 5682362202548131359975293069557760 8559265225464666640781369082380288 -555876230310768963691739989730656256 34367568544249128043758879768576 8608560615607168697593046425927680 -261384541309058183858211308246663168 9995921117546205649404089505677312 5790806036921537353826171988475904 -755588421775622924082503744697139200 2040828901673673292721342845550592 3130946655978810164089470882676736 -713174080080919024299397539394748416 5395490283008911730860327937507328 1129372382660318985067347226656768 -591260306428444251056513348383277056 8969593249398043500851733635006464 6115214165386269082109698600075264 -431540250172693967899993866925768704 394270794523769481928383903301632 1681338357680363588848607142346752 -148530037277664011466674933464039424 3178457583557786397681262713110528 8223061490237322809360547217145856 -219431347349104948944688171330830336 4813689937877267452313798382190592 3373986277932372632051442788597760 -437359822719730713482519424108855296 7975953178647973476233334424076288 100391941167405028859653973344256 -963841444947615235729100335143190528 9460384350116006501233945202393088 4118024175482352177443740737077248 -504648236933801902911697513957294080 7517456783879336665788542821072896 6819112649902270092921504232636416 -338955910380304719198929313391968256 6463139299319119250549468492201984 2427152446861428315361037743292416 -200516369349712660038499165037133824 264162079809667492605591099015168 9724560887190179942282682146226176 -677875349435096937017489180850126848 8317147825356095442773353886121984 2327748230174467152328574527078400 -111656479660662849178543444050575360 7358104522045708352128738731753472 6505432809085718448506598741508096 -205884513059168632634235589987663872 5942058009698294756009747154993152 5157920084188601914985224293318656 -966586801211135354706625173743730688 3866054237054500455102150447464448 2931998410559751116390898367201280 -113787391294489582513384111864807424 9881265147083703414207471926902784 2195421223908572213945278226497536 -733067786637574693181326819197976576 2677407379798142454250428885368832 7009844469468203969222971060387840 -115809923080619994222163341174898688 927121344616365033740038565789696 3154059666412908917168693208678400 -26092479981594678335218353740709888 7549985622342302413004476229091328 8740521748591992938305986720956416 -714882840848747913200167141276385280 3267965996139140637774764427968512 9053696399932785325277249145929728 -445259471954082962381738935660314624 8847424857842727142193548568297472 9691273285100328455075090248237056 -324274981747581980055158128790994944 6269655460377014882320233416097792 6855942950496382881468593509236736 -195357625465955630477293734728826880 8262790755792732539173363907559424 5303031342723989690943920125509632 -925087674373365037167706954870554624 95575110556340898343675320336384 3549854417067021025514990075904000 -39986869085138793428915560327938048 4967503370260033211584258225733632 889707822636926664576591271559168 -877456880572493885237951957244575744 7507295682363486963026966800760832 7051598247709850588546582469148672 -59368257428188142182875797248802816 1850111304537764240652713458663424 1213312231585939225529931035312128 -525816182875674807023893517105627136 9492541660152011237619741096935424 8615163251933769683951609578520576 -480200430805689477655417137443897344 7735471620833348348011418365198336 1231303206894528704140163156017152 -111469076163039312992752379210235904 8693947658180708166783266277294080 9035480514750550967076152900845568 -716120681629704237287157124279828480 6218801151533595817883849289891840 4173551419628473272614212163600384 -600881668616618862088790064649732096 464515459708008507519159981047808 1000149640773243260237288375844864 -906377034172092260876714643529138176 6595843998822160856684202081386496 5191404091536014783813615576154112 -322014642285505275076190664570961920 5366189273852518913623213683507200 1009413153661351743862737289084928 -185958289561831744676940990942019584 3746228834870553127672366204190720 2835233508860704611281316628922368 -196159974596977566798656152379850752 5471435181942858816540323065364480 5558890271712953296797552529637376 -315032018546533623934983058996854784 6820291623396242306750549422243840 4701096558964183343220336403415040 -63602039347894082511283643733770240 9863873497482690369009473357348864 2053269569869201324673169302224896 -378511305650352933239469130909745152 3677853690085008749487227649654784 7482125767810175318415376333668352 -915848194882862529910748506499317760 2826543198015158324595235150102528 4289889090830724996003312361799680 -911532575432044949717652143251390464 3535879549323348939654439452540928 6137852021401803305304407203119104 -759078674439880478120770910277337088 540652768176011764890785349107712 5528350401580681962778521904349184 -594984889797861388010300562743492608 6192741274534581593286548113063936 3889649300455689612743900397568000 -529268043800622987459157016233115648 2486566728846991580910961312137216 6231693208306669086799231165923328 -98545684944494349350138092267241472 5059185522158461993494103006904320 638418081686808145953910192865280 -654517143845238768373582249406234624 539545033897278042043223363289088 8176403913873528834416050704482304 -67530394026093109754498253244596224 7321936561540138506428835996631040 3346574272253720154957920837042176 -44894913842705712883393674833035264 4044036596497684659786833398333440 4712286064191159078884103096893440 -896955135000942743777577375767724032 2305898996315355103730192516907008 3650119426914519300166333117759488 -414849886550878059513848623720824832 988426700865190508988015405170688 8923130827180147835172800402817024 -208961320851834884712239959728193536 7088247957277772532812608647987200 6161848890831651591468429720158208 -995564460751293975423808743315341312 7337549369990984712877687435165696 5191885383137061383445073729945600 -672832586480038444268342966879256576 2383041392405742800950335681593344 655626274221548396384924511240192 -606079107422070711353735761818025984 4282686396506422180486769872470016 6014911789047033846242806174056448 -465518133807933823181248349790535680 7700260609906864151603345633574912 2173212525727282319278427749744640 -927562081410501967393235756382158848 4492606060653251105370494640062464 5948952394131967976678871298736128 -840489348624768014674886047825920000 885736721559634504052232090025984 1615969682955582502470256045326336 -880796289064865419031550995728433152 1575286513441241093448147560038400 531227009792319818057243460370432 -235126079403635658736483756199116800 5916445088010694306383656264925184 8789211425590905735103664736960512 -510969971899199527704206693655117824 9483918796953562201785017361760256 2884733696465458657497792162824192 -932558900150316798114575029857419264 9761008659075117141191162855424000 991282786828002481062858603888640 -280013519110606241148325285309972480 6800834189329905111212828594798592 1361672661428078895427575890313216 -502127275031962748674425584164536320 5363563680787572754370297686130688 5713990962525667723727153024466944 -977481992411459288721842907608252416 9890852804012485512284041740550144 8438348845783667614410901433614336 -84438739557027153366616587141906432 7810839788619773120416940814237696 3479450020820175120424386139521024 -98837944238639451668576045400850432 1213194961897864761594559785336832 92227147125813484993700830380032 -763218955577167514610686486984523776 8123270250214822272907117196214272 6295152162385255498649152239173632 -402946335028794913423644638354341888 6606325337643119484618116733861888 4811202428365812214145770833575936 -429996580057185454314138571458478080 401246954888768656833602457174016 4277690878284269602329990552092672 -625040076251898775524078865560371200 2351084110376806229260711168573440 9530761984052261746689213202432000 -405818750128126396530989498919550976 172750654789133933774470121521152 4730499178582063543154195828834304 -361374963961155588477806058466705408 5966237760513270640199484682797056 6360682638958167135521643111120896 -213661169607766728196713886007689216 5370835852102940750683006629314560 4251510331473497553407522157625344 -926106555002793815822365491711705088 7039044370118383001295377733255168 469268186092036733199499319574528 -828277300198515391062967462528024576 5769296666241707535921847845519360 1635183015764313173625285231247360 -4761124899782108742438948790337536 2786490245880379614574834394071040 6626063643858976442717260423888896 -780050233622473643990947109755944960 3904690334503294699332705594638336 4513974289949786890146291900219392 -145679470975096802238955926797156352 8964989468711205793554332632743936 2511225226149922761280766083072000 -144301130748924732083185546550050816 1640270679263458381307480438210560 8503431051520857652561469677502464 -278056897777580013206824543336792064 2439352868331923802690973394272256 9669447325888402618768848098164736 -4704706992061696653424690085232640 6387785978638458984640728042307584 4919069525486871035511250809257984 -847782935036455125238347823249883136 353366770771304317756556368150528 7663635175844261167475438301216768 -366686585171956690202944485845893120 600783970984840511789949689790464 2710752209089381240412796008529920 -523294442863140904774432997802770432 6711452921536044338381916892823552 4293334487814965099044939107401728 -800326504836844408431995761641652224 3756471916473091817720357826068480 9830350519476563763005135622504448 -11784567346243796586435168549470208 7849216237699386580009222865420288 906135148178559126700688140140544 -257896810383629737869929730851995648 844214610549233749897405735632896 2230552548159718047568931160326144 -632808720576295101059459504347807744 5711232175030464664459905402404864 725629734868377351649273780895744 -12666214329499002129779443657342976 5686907388306277758672078190411776 763372108983441991103960286494720 -648699966975908483692567467307040768 7153952029631387160638657314947072 239144380647739049530382792785920 -890388767544092012174010058526425088 2572928520080981303472660829700096 4135752535184094158234686085660672 -752999858553208386180425900846219264 1803961912515100832313545563570176 827116454413202674520990444158976 -641372375327271773745088321153925120 6193945085401163720449606427869184 118045486450778841060862752456704 -926374862109500161463239524581638144 7016694656326676434915865867059200 143152512551987113627044747935744 -167164036926422131227418794779475968 9487600719612166606631731736870912 5075669255227621372106681402523648 -629722196341530481164978867903922176 1582610643599954854844944282025984 6055147396888701852039685490081792 -801304472148394483922831515418886144 4530647136679321028162466726543360 8545238936169652044228246567387136 -558838107337602143260843158859153408 3921171015847476401573324124061696 8596559348662687487233741503332352 -233844557284260034271525106326962176 297921376282381136319381191524352 5781981604513474027295328079708160 -306759391200366821805993494107389952 686336002217589823002504723431424 4293497858493345650943759170404352 -672213960069323474648632809500966912 6568755939133646990736543772049408 9471281864691405459532640587612160 -301221448748600229712882270176542720 5504828118597279511788431050014720 2946111473971927664895322442694656 -185894629870453840909405943328931840 860044317352055842388281076482048 3062202865672650516407192544870400 -725776760604822552068077815578230784 3049636730582479265859849779412992 5065440044448005886508761157206016 -781129815001439723440601715489898496 6615640321233151929382793507766272 6471527056773500144894807445078016 -604768267455678851566866997213921280 9603941224570183485598302151376896 7935039852424819914142273096384512 -795972397801001593566323950238040064 7992165899248979523895898587267072 2078167897877415796182861060505600 -489378319640070538345711071305662464 2919135619768807600334847990562816 1476105845005451280063969034764288 -699070482698431728437988296056897536 3606379325204649743959687404978176 8433897536846568040168486841876480 -665255619605187884583306235039711232 748269019971446609243143462191104 8531829311149864159506580740505600 -847721999045236971410416783916531712 9004678041221083150696380714975232 1855828643467856694017321445883904 -902333285899265426617677028354162688 5708158165282255495001552468312064 8486359321506362856491475584155648 -173067838077069704698487529415901184 703872996289162232994955081547776 10084756657374342713200359768064 -415300118319737392217609131740102656 7109546351871308299117638725926912 6254429501786460168330717612212224 -135216614341028062601921392376020992 3843456110011309326796361572548608 2457419881542839746121521218715648 -301886477437886719744567287375462400 7632030614593757285088805120901120 8464046888270869195507855481896960 -231929224676890329125312807020003328 3615684406067558877646849692401664 3600846238439399022029089003274240 -749937017983851237426328779364499456 4878661953659180978356318413783040 9525297663510831123039533383286784 -861714647006262258280453491073744896 1853689662564995142392055515316224 9400164752156770335659611077476352 -843424435978237107407612611276046336 4791104280197168225348463225733120 4165996342163001637872602613547008 -432055665039166236687308521264381952 7264136650867069049524086240182272 9577488176291705283317237530230784 -635412434450961831914304699157708800 5174941631397775545340466764447744 6204424769456349155850311627177984 -147185472101579926251247819290574848 7549442261963011274555631486369792 2557049011155860668308508981067776 -665638515045363872873092950484058112 8551807205526501595073358011039744 8970171431155977702991351485825024 -869578976314103188570112112138911744 2659513644649342860954370823946240 8878383210954639495284276491976704 -727112235023631981688151013414928384 3564093120849087232424680871690240 1322672038506838716301016091852800 -434403842876522523820927629396017152 9134552647996835443272859605008384 3189617144319702219381455986884608 -737240904923168989674496350782226432 8838541480503069791910510188298240 5145267033790339211700468568817664 -595184624401861487692939114850549760 1578401246915100669969720640798720 5750070549403709599291255434510336 -969232722393186365700246383187984384 8880323870819200531259451898855424 6261988908112075216730057940664320 -633855448246908298350415494208552960 2490061808129491624188073140551680 200514197755603596476384123289600 -916693578052614861602858387099353088 1696865227105960797528260851269632 8023286445653484270388767864389632 -558669123051280350705244787712196608 7644229436553885601312737400455168 3646342141487726813371000896356352 -433374403748930771736692328291631104 7059308535432073599480919081615360 6449760710214660570615167905169408 -232015037262226062624771115117969408 6111960582336262868874764690128896 7153200147686761054519738859782144 -275676949819763226326440976154886144 9467280264990787348612432053403648 122723866639182698218333291937792 -522544044311545531124943873049100288 5643095250678399059939568985833472 6158802390946220481303286093185024 -896988443547420428340816510120361984 5992965270534163381387313576673280 6317579255627098586184662730670080 -330593691065761614368618606390935552 1702998752551933521700116414595072 7730482377932195775473360197124096 -459783058081603185185166229485125632 1410827826558108847880947223232512 2094280731851965468696273259331584 -201888022166466929071218821164957696 7716457411870514784125696824311808 8189389746114077344281918011604992 -786614192981584214585254220033687552 3926368638967047043725799727300608 9711011503776462740953764995268608 -255373586214838713276725735635025920 3323061984037789930075928353832960 1556016739372453762382662555664384 -692350438943525591835755978929733632 2736411540328638138811330877980672 1968225485089690668284775858438144 -493589991606195334658941040411541504 2337571246153261010700377828360192 494861290115741346651866973339648 -640509784280172554115505991454818304 180411017668594839319414585688064 7114348335376609850677475894362112 -760496113510408651759518397572841472 4060928008710605424415203215278080 385524915899221864209268017725440 -761580161142601082073055248475226112 4399539738645113089937443464937472 2755742333166954081019310605598720 -229849517877337290480983702245474304 6051310847207528931350774835838976 8697567280278001989048669831168000 -279295464983636145447854148421681152 1325816704236106182521300849786880 3490864303887106838358620700147712 -393301926205002964081683344033579008 8660401235104562491204006009896960 5477909439392554019052117328658432 -278826739323011226857086439192002560 1041642852670684658641516445564928 5213118143062457383214390267871232 -525576385450142645955099270280380416 2448354907662246316553285541036032 2674628214375949564689712198713344 -56134076305040483773343845031346176 6258900313721281583706032654254080 4332094309852905832426203712061440 -917437828228731224556874566784253952 7415764017364797059285424323690496 6369882216437872243825565658775552 -478425051404641786866668329876062208 9858107599832936231526513938268160 8799056905700262568002515520978944 -987501848020296010065171231264473088 3809677602235958034010986367680512 9150860378310715292818128347594752 -282948564293830410661917118418649088 1006814533167183560045652380483584 6540079272637513692763797856452608 -128025981381710512170993831666253824 3285521463118400081594157658800128 4189716818807627473774602568597504 -112145378590881813360435151820029952 7688728773165797613572132261855232 3826386254336002895680144028991488 -19819829129619189765190591591743488 5049927111862176402996970991386624 8188597089845007296830728541569024 -161866259798074369797363394139914240 498805905159475836980682144350208 3004860100076586751977784055169024 -545248662106973012880510250651746304 381733586174260741960430539243520 619155227689424552838739714375680 -758486031831498958123364900994547712 6473312564689124508715035031240704 7961693151336193018454410872750080 -474254461597635755378776895479873536 4091136966683167982570248201043968 2884805698650939930099126349332480 -770001889497715144269921822141579264 6244406661955961178313064120844288 6460672841716957184508284683419648 -885659485310179283482517731712958464 9016404562437089321872125727866880 3521121812870303858025389558333440 -56546277637394265873531760057253888 7607457162916341967891168124469248 6007542931730143009854515635552256 -492643827840132787704110329039421440 8687637984131911043296072931737600 2529163657776785430401132546490368 -456825018253292696846295226466172928 6760790436864026375984175130869760 1569163045727171821805590947037184 -204821471092608498855330881537572864 176304439511136031469917312122880 1668271378840841005938369045200896 -382533802890644626506853251769434112 6788537847880541346514279122075648 8220406589748693245869023614205952 -790478935963601382270776509934338048 5297546857568170423558610284969984 8227422760019681568721861338988544 -223357603241836351215879170404909056 7286751984444217523703435870863360 373338590929888820327362687139840 -159838567378640933779895457304018944 7966110985099070199002445505363968 3987087390573130251118460675293184 -338884284309785737407798476361695232 9046113147935454381421604523474944 3405531232634616264543904230014976 -273483579558614820314215827986448384 9048247099972365359703725585727488 2419609748166914344825078291628032 -658503809725156057488175475617431552 7984289798537069477859135605178368 8237072014451551489554727082917888 -828905768486996772060707443582173184 1033419565053978956127971949150208 9427938478784010695563228710174720 -828604421965716186646287563091869696 8972496358982797475522974572347392 2670858155977710398525057208942592 -352565395454190417568541366751854592 5166330918239634306547821999816704 2294887865481506354848761341018112 -218119935068424308947853961844490240 2220150601266601088695063797563392 3897491685053076526579355157004288 -448334702055171085040774273902313472 8231840992936044356020011289018368 3282727244830880459624774155370496 -643402176962331071805619353950355456 2649954418610774102790514858262528 4332799611823044361872152425660416 -893929100343970476840835117559578624 8078577910073231576393470619680768 6332678468583642557357942321971200 -685963614271159331069458617745801216 4412157496389576589931087726116864 7224518470270868447508287495077888 -349145553226226045408330115008430080 8316506905494226423601882288095232 8977659504621801757003824786046976 -341868621552973450774470081954971648 692409988736348460817741630144512 4263723928417719266817261095092224 -813850227005530649472673131186356224 2024198554707814161137724322480128 1487874502168376796012009482092544 -151592732160909392065462767062089728 8390480662806551899024998067601408 3949967365111085416690931336216576 -464397980628644231548990156884148224 4307381557242867850477485288325120 8503102725915794119758527206522880 -942563116218294375215599580723806208 1990837604228057849028643571892224 8115942974686582439015836945481728 -289827064806850465284724334723596288 2467644976774912716389173577121792 17615567774765507468281061048320 -272561772062912018518376053802532864 4638051952399019070544116956790784 9903483279769373774648090122256384 -520891505010121290073168012552175616 7764479960855232497396962480357376 9851414466890290084273689632702464 -356140495651540135663522080649904128 8068704867898099921845529910181888 5840909426289321549985427520225280 -503439585499250308627162422346514432 7951792062006277456148359603552256 1724532995941103774489060434771968 -776885723625289745742026883995795456 8512647720367096153187137907326976 4175834157701180339229480936538112 -397899456083283893091492470475194368 2208723997736532175200481414479872 1775407886866873108195849451601920 -573889457378020050501098025372352512 1375680321206426115034090911563776 2159737011129208109358746079068160 -89409699785499502126864204551946240 5168947239514006499394253846740992 8672948131264393442254130811764736 -253355985950217507439968018401067008 6598126841300856259864461360234496 2097863503226649738477975753457664 -586473674980113607786158456506941440 4312468514631378445189954775547904 7031446897295223831995073930723328 -227144405856882736254558066043781120 4986163613437597025944183200808960 8112720022293593235224969783279616 -829206344872668861299058707896729600 4828571125694839327950357395406848 938834136200378221827763979943936 -708827301784554995374109699069706240 778950455215788884824896575635456 4532471667456654738593016776228864 -333652222878166348458677827161554944 5598360898914554296247097569050624 8857082421596178062208851691700224 -239456999172568863980839599383511040 9301006908615887881778782378393600 1556139432423352928059455308824576 -450234793074715415362401305257574400 7873170736346837624492314886930432 3334639212606113351767580548792320 -221422477682793173094738691708944384 5221793737231728435516958151016448 6320573755227629415195314017533952 -546571993740958631407787702541615104 5587350966989372145595398030884864 5432451249786455492084503339335680 -919610978605092992126282643011534848 4935180752242028908385417442623488 1793155804821743528007653635653632 -281492569392636182082583522608939008 8967726243432324212175262583881728 2453566596602863025086002798526464 -623405201206209731362793204461076480 2001382539215953042349706719526912 1851468026144926583751219043368960 -182875829487248153115810339902980096 758779491292628820746827726848000 5840276002179998727316966247235584 -812422542889123351746726272855703552 9936840549191801105654239689965568 8112146488718589433345218975891456 -845975118125073788443118914022408192 3807086290205239830912616762441728 7667401284461177900204076711280640 -657161216053672723824991764465319936 6926735977298162265462419029491712 163650451219173500113843071746048 -225195562421185405931572301075054592 5058237713940458732652479536693248 7309053600029979758043972423909376 -548121814526758159520684172887719936 8822100979487709518439541198815232 143042962690499072475064235458560 -740124435189715212079589555833929728 2044065726493784605593468858793984 4927085570277606844617244207480832 -337550333457470971018958259129155584 5078840563443440751409322595975168 3353618405192180701801982552178688 -492713213418823984970858887714439168 2560165040235350262861185859715072 7546932764252760535697545416933376 -95664120197338181931598631806173184 640588205963397795039550015275008 3411174627574983052273966718648320 -234351335316774579924138514853134336 5862040575753227284754237369614336 694638506838677806252822743744512 -597584674158428591490761209044533248 4659486281534029361009553668308992 7191800762140243703074534417498112 -116088634719354697166094372507222016 646467732081254612061235422691328 4516449991714816453115842998042624 -604899470347213937344582186073849856 6150864447134308810384391400325120 5594114111162674874891193848692736 -607155005873584352604076638929420288 4462326968729570203896213449736192 1228021490754218274322351038398464 -643968876253684036353359860004290560 9408225063591969326442235994046464 7307384474507525185652714293428224 -879932059590438491985913425856299008 4116231928679594567555438927151104 8456384832236493083022354173394944 -113907564739304001553021167323840512 133997502569066379647082301489152 8494717753066597218774378652631040 -241205090351619383335011910309380096 7111846141473196028919197611327488 9820999451186576040233349410717696 -427477885782054078944126372295999488 714525832477598395153611216650240 2366500461367099479879653334712320 -690173474218833162448625022544117760 433744944725503216486316595216384 1820635494587172939796117383544832 -444400138121066965053725730702098432 3109816574994080890745995812405248 1369813405642591276599722924572672 -310466680041551780093882213861425152 7421363931602035339608440824659968 4294889131306944945116805263785984 -743257531924294920745942679474405376 3913908905316423422704248808275968 2590641750139112090694680351604736 -428012146183069448065147131930869760 4857746367104264779583271202717696 4017593782478769932371785878077440 -433397610945765434417146622331846656 7315679518712794467531679147753472 3241073359320519686347259402780672 -448726458530955714343246681383895040 1353264677999077323786969963036672 7398198148755556306996079817129984 -400105750465154246229722681718079488 6456059099995178003331076132438016 1658172980092196175118792323497984 -561920144619083974892946082595078144 1230126135367445271905112191664128 6461817672315219378054560202358784 -582715517912067042316109809574739968 4952239681360989333483445989408768 6870301284842931501931778803761152 -625483564175861765561777487932817408 9439056646494584679064230072156160 6352435715929932709237101397278720 -81001169127958114096628775851655168 1909954414273345484146644348829696 8596945627498449872989665007501312 -687530258026761351307935995515633664 4341855835787015228285550086586368 8995816345123069700810405088067584 -171752910185496548286990171309604864 6484305802797057375090531364765696 5756619387884508418314441769091072 -532638259960959535014600424512552960 8770133256644378791249029225250816 5347689599881887146377901416382464 -65586197190087800759843184500015104 4072912518873407276998608960880640 7931583043795224718973436719792128 -508458848505246874325925006265024512 6256840087704884614955095895834624 1696012500722501583189188846551040 -340148802968216602997732619260526592 6287692645738509543234803159007232 5203041712593927941522254309883904 -300651902006359795858385463697997824 6003167347477407917156394822795264 1410450254593213010504884334624768 -731221109188461678574421881986744320 4724423620180642041983251274268672 9039407005285302378213604390338560 -431670039608683722265971698394202112 823190229394044744726428264693760 5549404782456337047455466952589312 -760902589260385155423144984268767232 5738520196709201021464438319874048 1402736399376886643848996441817088 -387070499828378388509482984130215936 1002061550424799790357159469907968 6913391382189457170648525306855424 -231518779697640751360532021248000000 7818629964120285385810931435438080 5967877730564412114271841904754688 -746088477951503989232621761803059200 749849758052523867869620884996096 8022837982872053392263642697695232 -680322432370138548781252854524411904 48179239084786421771696118693888 2812357011891315829899310976204800 -687697106412189705134428375702568960 1718943762663294815754635632967680 7318476943730073060246311588069376 -729840256273615027827138712542642176 3043767220754971673527434912727040 3337987639602771843839086972370944 -966459013944765444948163891713540096 6138914366905690772657142549708800 3952111291996790238900789922758656 -120092684683073231377467702171926528 2447263715248393085271694859304960 7544916568441144758936646910476288 -652822904979894898246555981750206464 4818393970455529568473383268515840 7063762441685258645457219836968960 -462201913192344021367990013537550336 8642769734879588925607264213008384 2851841004908153718431050517970944 -772426140483440097602042242384527360 544395290531980719891924245282816 6047034911693359887287707794145280 -165092220590219141235323139025534976 3362852001242933146868589541720064 6407767153470725693125293217153024 -144813422277263747614586781648814080 7063040602506854201273682132729856 2629723522711740213622954830856192 -673054265116646870135803673638338560 5458746378377079269654703607119872 2369777131775193095549046717677568 -570298289936566380102150472480063488 7952037492602043309638565106810880 31151734273199854458765127450624 -391125027575815652268084787337494528 3141393801305262355167803479162880 6613506777506963558436801007845376 -321749139849569353163913467772534784 5801786134892472209829462573842432 3351982490776561216861898859872256 -951900990592363292490545763660595200 8781704774811407031275198437392384 2029443545347403653020933458755584 -131944794444261819144473142292905984 1027858486389352941939854434893824 1754462695088362940702478236123136 -705730082720606056512031513087311872 6112834813433709708269071269625856 6196660129730057652917946112016384 -251468491028941650738812079828893696 3443692622364712402073272555929600 742172449654071918235167540379648 -766583691522029582069729734523092992 7940015628157159978868985540116480 1839106647075451941847141451825152 -811370890597019902474951825205231616 8567758077991528376713066909270016 5934296604329464658075481314164736 -39903231810933785903321734373703680 3178200768944370192159707530002432 3817522653218688811055463348043776 -206019062720356173165098175821774848 6632838130608372990361368298258432 2693986233090987677600124023865344 -189703694110403843907633699516055552 4652593981699731821094701226786816 3235714944368190259745269317894144 -468974179578847104891671723005444096 3833707034969828704453640637644800 9955610317655561335222891718901760 -302990702624360865431691123788611584 2486249441913287019224440537874432 328986098549527998964745958850560 -54550855876930605884129031118389248 2838397154109543898982044380692480 2586285513879318697677675525308416 -484836274212676783958787507550683136 5806109095632783458156807511343104 1777453812226746401888285646389248 -884639189845201297782858487559094272 2008797869048933283313898726883328 9051196249187190650590204941828096 -412225108890160904256721808485515264 2529623899072738627228062890065920 1251102172719772972377140900134912 -820697311961134695148785752657100800 2070562275394069697461940314439680 4771818942150542699065132114247680 -325368958518297533857900781925040128 2033768461705810511507915077058560 3510318104442496445687374232420352 -128035096369181109705608531294552064 6799730237462073466181557686370304 2096565895369713354170626775973888 -398155994432940039596379740307456000 4441351949101639330347616456146944 7552416902458089805767115951570944 -463769734696614403615429834034905088 9109263864245084037117339502641152 7644479183800143420656564243005440 -999288620557477488493865172205568000 7566825293681091950955880979103744 9250120019602183074562254150041600 -517953681536458304571230239913410560 6806413822337113810509610522509312 9500628069228720791138380791414784 -886865071992211315346306614993879040 1557208532232424627929006177517568 8158509027362443747553848741330944 -895259827262552158284446465559363584 5161754288255434366345286166511616 7343947677078078284517456075554816 -860219661221525924278041624950341632 8786713411647680621223011336323072 8532577802128046644010289914183680 -837185314504510638189476156775858176 9467227839528900525159546498318336 283156827216333731428816750903296 -580650553846769956017492609139212288 3028306572440101242064675813720064 2780330186854467827313470932516864 -190380361210929810315998058069884928 4903634135064986301904999747158016 3843654968341612232146839528275968 -436011406850022182667686770806620160 4964213243444566452085233658363904 1962960161017079444705469957931008 -86188559328846679607214923357093888 3565886420712970317289576162394112 5183212306453178335649917564878848 -727765095927767039200517180304130048 667428891647701212795911352090624 2312101559761554672812643646963712 -384057318141803749429440670941052928 8034848659745622469675942368247808 5454398231865453432781825973944320 -906627980350125119971436899130671104 7986337136118212285721399391158272 1222555902234860355124794310524928 -322364676202501354458003051095523328 3560805238294388782289867683921920 6408063233490354635390176574046208 -711429745739652644745489300798308352 576421484632278801345981649518592 3449166512496626403689648317530112 -928091610566398946399542149365366784 1242772431460524319133804697485312 2881629100554200577192744781348864 -768603453602679939366933279549685760 7225965785191037065459417179226112 4768890368913241953547002929217536 -421083181991304337709124738309160960 3835093975870871290672364365283328 6049949568009570136896829676060672 -34501935815946499671389175602479104 7095584618159810517339872193150976 1367648205825966026020058602405888 -790020354288060303790839431067336704 8143455511742091853055966566154240 3197443822144121379660261159337984 -979025115822878618309328006891438080 4314865958808603382737554471124992 6702946225813964138096007640514560 -330161809347755464210360799718277120 1977790059316998427545793716027392 9530222224899602122116825197051904 -597527598825797391345060798040899584 9631835551939920972508941730709504 4758442561970122959865940761640960 -793880385200335895392111714080129024 4736694825009271803891795565215744 455491231075942195364940467929088 -890508186338275742739272175890464768 9282737201012561639825297861771264 1129909263563246220156021170503680 -109488738189191224139390980710203392 5052693068078112314249593569148928 2919499271760199359274935836999680 -460178199517533749877666807703142400 5221716813638695914591051975753728 7593350385586605077217555892928512 -105484278927472610581187001923403776 5719361430821340086417969161175040 3769871770799448315103855016673280 -727854879892511291241190916213440512 2544678845384821146106967873290240 826217774335192741021823820365824 -164116359429351262915464004036984832 7304346019876293533034325559214080 784350906365662383253099106009088 -824768153539323369321306688935952384 3196818454050439972593654684450816 8486698570615360253937520071409664 -95624952802405418362027381908045824 1084483187508889639411180065783808 8346100362763499211295723926585344 -746186907800360823907862869285273600 8925026127501765179516286027169792 6663972170205193486056870410977280 -816502903232767384735079895295590400 6325306581064650466718111783452672 817020289163887942005415168966656 -958758887532796483789717539534143488 2156166604711628845504387556048896 9363550952365347451611558239535104 -573820476492122000968289365052620800 3197287990108055930000260095541248 1984616965423457227662237032775680 -164308437736614536992493831744126976 4200833390060247580466192146497536 8006060193022406412737806480703488 -635074533048890975916206528663650304 2035473403360217765607255947870208 6760180324186834388593488431153152 -76837873095140739039773118970200064 8637408868458716015215654576586752 9850377383936000225474865233133568 -312311427851373292569791659287511040 9186895514307608759374886591266816 7457854412062620471084568876679168 -184935231291392695350397264210165760 4709384322333706808015693602095104 9133973014024291312328037562843136 -153629811154788376026812285999644672 2618067112475763015132502802038784 9391359589359165919479188974206976 -829065624595682144764821593120571392 6965571691390885313991911587971072 8049269661522648322834281726476288 -212337599667156573317670912795869184 5376365299252418448732959168004096 6563037542485815710546058635378688 -439245084209457499592918536476950528 6001178646266507763431013810700288 1663249351614039657569845583544320 -560900920321964191882125646936145920 3537780383518603749169699122839552 4704430307673709840294775267262464 -202137456748426813213992592376594432 4128835898484244471700573237805056 8091254047829583699725318879182848 -170226015654466328274736683631509504 9017686386742773491462566108463104 7590543504542071902451745081524224 -677739031000771224565680965093949440 6559662495973695828947643603615744 6913666353596171665002826274177024 -406195993751580608305167666002264064 6135029444345737993968771372417024 9177812603207131636933719922573312 -29472168597130302065358736864575488 7557973859470346716031782404227072 8196380391372284556885221321998336 -129428413496222410593947761629986816 2715341719799810712970762620239872 8514332833596166838036754281267200 -655013056362129863731182748081061888 4137865509037579960719493161811968 764248774683166649943364854611968 -347610554300093631042380999096795136 5651815070050576760235730764038144 9372101234644759173765284249993216 -998472356033418280139644801571094528 3459613597911060086182619618738176 2980298829119592654528659140378624 -402594845646267988965245161480126464 1278940488663054990561694227365888 3663423146345205411379556906958848 -561614170208292176491284363678318592 5105416326295693965026847533039616 7776114932394069185623357466345472 -119637112094704613454855032954421248 4472687350700298942313830570524672 2591971758586264936374129817288704 -856019797117752493214126303503974400 7605042165254667381311259153530880 8676808488228142477777413544607744 -736931551842378548583586624142573568 9124278831331293136598067639746560 4700482688451378778257587966050304 -830836488063367503667069710590017536 5154462768947124093890708933443584 4726708838953795372424058569228288 -679179736158684200281187872246071296 6073921778198666572003616237813760 6461319745204743386331448816435200 -378771305630494652469302352123265024 4952675255707165474259145880240128 6001952524118953422312480677298176 -300498861358090795631108640475185152 1672356077706118099839378828296192 9619947176672787776713552476241920 -319555784768462582993405188421713920 8790223058706497157878264740446208 7003411912026999899360355262922752 -314288251129137030100282936475516928 5148255884349805739683769219022848 2556368830544392552473369029640192 -204461657253340015278065085130473472 7477109257590746923795609961889792 9665885719986237146495369246408704 -458526918165256902030072044073254912 5440270795675081811677549841874944 7772030988790007002217224765177856 -847950750159066966873616606434426880 1085692314279897431527463155924992 6736037144765022061381444601643008 -921965931882755767129295954242437120 3969061914656898940969807748530176 3210498110598925093217459693944832 -304989132557188885450229493052473344 2488690785865804453109562385367040 67773683724811663022069834055680 -851667108447597836531898303878529024 1112518746854056981852218982400000 580646893599036725426347887820800 -602737632349514059958143122585681920 5990768362424105065278849117323264 4709921663750352548105248271499264 -453931121484952003753300062235525120 1674556361364568186423182815657984 6191946685618506747461545941270528 -176234135252636688050626539275943936 8462358190681432084665551630106624 7099792068383806669102224701915136 -185292584432517617820555679564300288 9059586735991349516869528211947520 8544379929808579472421169741692928 -782835116128659148289177892180459520 2022811825671159236502563980312576 4585539920521258913571652658790400 -59698179421211728755722538243325952 2312779333398446250534031740370944 8400427847021944798973493837299712 -789047619530269491172932782166900736 2739690633129359567273593569017856 3449394154772462693626276422352896 -285046466103034367292174839209525248 6946264533964099104361245608771584 3269457450326694153742839600644096 -749171729792143935451257141783953408 1195075415766660507964732388409344 6656539509513586874630757081415680 -513186232535018799641981013943386112 3071607805534313014529903755788288 9385260750205732193883673688276992 -683475645473638272315177377078444032 2803749169273879181523000410243072 4552460849153980547541652325007360 -230801210319266127623759846103318528 2967364926490486841480584489861120 7231444011892120262188270520107008 -792579811445075270738919963244888064 7817037086760341855851910719864832 7286732162123709272429151458951168 -213295014321583119642734167337205760 1440360988034752437055412965998592 9063140864611428461699311196962816 -151323273525606458326478495303073792 2852573825898309613599230997299200 2685317931967113313724520932048896 -202449067330703041748075668224081920 8687335014720996685703702739156992 1413441952722295622961704418148352 -761636698051165687937178909278208000 7534981655538306739410714539065344 8607074179524131290902796160729088 -215614964960093898865121295519973376 7496309593057611448760246093217792 8361720003746026771704797099720704 -28909009002189347160499603904659456 8194625150296919811466542704492544 9323832264967581934909172492533760 -984073549304839511447730889926115328 4705347041587242962805596675375104 7826149644525968904235686712836096 -947108040387049848953796058735968256 8662194432166660467590740544847872 9084758434291709524692568574525440 -23783910737517869387645542834634752 2213906244167361414380158235705344 8196717680206570110018583942660096 -673954128579741345746821293170229248 2178896512359608166793116838264832 5032173991566108681801895375798272 -184656090264473265978771523455942656 896253371504856327792214939795456 4430865036413701957915422702436352 -474593169945804343621679631799681024 8095851597689385464776104905539584 5322337694290766879349905851154432 -515903352084343689217164814860681216 6670630555495066871791460575870976 6742160085948530901378713687949312 -907307749013660069336724152759877632 7861712799101530094650155471994880 34791259969915158488217999638528 -90496257491035321156894145883668480 4601985055905697217254558716133376 4390785454002021629695270343147520 -443631227272461166121932545398407168 6578667336448995177159646502715392 3415282375409207479757127607648256 -925789512810111698035863412457603072 5443779535520317743604237894418432 9744178221137756600877539309649920 -887714737538584749110108679116423168 9796307025904732048466039969677312 5223051252299565775044750379843584 -280927441662974275464056125643554816 5555939071631281924463587686875136 2680438111550372047917029062082560 -281889526521833480493514802608472064 8013864337647003054092923506262016 3653786543908912273434789296472064 -343848219751296425815661044171800576 2882833097105682033121543705329664 7842607580805939849508301406470144 -924831553601731559726443780143841280 9072284690075449605712872055242752 6451030080575303248853143562223616 -774830565092464696743946489560039424 3439077308760270213425168281239552 8947171204940828792378976555237376 -403044174623313506993700437456060416 5566970165976569866557295431778304 3182162507638955013833907396149248 -706828808516229350794148598025027584 1885117237068350394597288557150208 1029504665744651342065021401169920 -756865079383802533107045940942864384 4068224361886744849434635797528576 9680382564667467611350170561675264 -480569666954825410406895399135608832 2098277316500483646939009990524928 8231408652947331349624667982790656 -834036490358442028473414862300512256 7301969217693438238033620504674304 2182999965066217915234204709289984 -917589532252054087835569400320098304 2665921929637642417896963969122304 1142095135727887333125326993620992 -820417797211377364511725995518066688 2008992536657610134417670322257920 7108151619022009874158008810864640 -821929922178207569887693977621102592 6227876494759856787432534899163136 3857341804372269280507357881696256 -722617400040651872250008933006049280 8890741565926840624451501865041920 7296903841797199729536644602134528 -911664259702296113448860776449179648 183532172310998318930217435922432 6239290366463650297891040096419840 -973656147227275637041007889712414720 6471986258822176778028560462905344 9402748021985702951968569680723968 -826027635780374511383966223100280832 157453567494154158766568507441152 6820927015489299296421925542166528 -670094238908630147816205134334001152 4145155272226542574833214326571008 7484026314966960368582514903613440 -617461843597490392320485116212150272 2888474244732866064269298620170240 2123376694896776606032776589737984 -79043816299429408176611227852603392 9774443488336682742282189656817664 6924646451567106521006116859543552 -985470623269665136603774929686495232 3612728967717879481711462298157056 4828570717384115567692724226228224 -519039499161533077736785893922963456 3473242279608067389914922728030208 8094866490444706170714761392553984 -713438930307023214432747077886803968 800103652790509637675442772115456 8511953481643607464196126950817792 -843519153149430465239595428769431552 6250786816906367795356737583710208 2526603039367516327859158723330048 -274223544742778889321520125381181440 136857897473344265904822396387328 9089055372564594037430713359269888 -963767762727069318066783161759563776 6757744386730876136220454599786496 8174070629178748975651035564474368 -559071253233814650233775312760471552 3692409054520842660570564097212416 6741231974122171133125964257558528 -979143239247553338988231311793061888 7697274850909729758509717329543168 290928882864476809912682643718144 -884118100311815075493473409231224832 8844156433791781858133511227047936 425453090383727529238455266574336 -841311809679762517592190405845188608 5826329087946560711940121762463744 83363071680930110587278282719232 -532980652761260479972753176583471104 1883046707723132424196327095664640 7462171252486712431705729429143552 -186826849873271768353256753177034752 7373359551620267362974030391934976 5237357762888872983768656877977600 -826893179334491441124492200328036352 3559023204228315919304153895010304 5761996031751806090138648372576256 -351454428412695890314155581205643264 7855854386253201365618712274534400 2852830308979286231793035869421568 -239126565905941896566953030962905088 1922669297010171889483698002722816 9217572665185776440472221605953536 -331753500993786465380758130253627392 7114136209532229498373601553809408 6878552963512497959337769654288384 -58925176812349307286696034903785472 5717785021600405232642905985777664 7580292832094224230112815359197184 -440332512806460576427271624912273408 7821610499253343749557859228057600 3311556286379790488463767383310336 -642881371131017512640714517807890432 1865820653142591875693632183861248 3472861189299651088415845286674432 -888554357865857991842762097929748480 2450055990127466527272918059057152 6791604609077320773221534958354432 -242389929925088154372940999172292608 5114516141473608264005464862228480 1086050123836302373293098321051648 -905801140302661789958165517719044096 1393746852380747131343338144268288 18244555565543078451846603341824 -607422226632390896607883141905907712 1717246229221712238859340751044608 6834824083106470526412933142937600 -493685009809638694151599229576937472 4846743074316841178514315202789376 6321821534938764736014039755259904 -149604624409495493522374471610007552 5307850400729557241098724502929408 4088952274630259101917893361664000 -152181776647524418224920378919092224 9325285876731628709981700105437184 9515421655546243542096281214124032 -155211694043144117896348746303668224 3011783273112405267930461258121216 359374266007128624586785306968064 -535773918454478014977453375040258048 4425969481596288198455421294346240 874010803652474810949102448148480 -963478880417983309006443047322386432 8931776258915147029178057519792128 2133337878916371339874097998856192 -874678263452756101621006492707586048 4898481311225265861667626363650048 7979800070047110349728339665616896 -87728694353150133609823670206726144 8002389262936994264009330179178496 9763334927001534453890509736771584 -380269006530432103961756487246675968 4564967545066311687641766740099072 3691238523830354012333816277893120 -152703582191435541375429506561474560 5541108955362149267907269672042496 2180193794788930687674770224316416 -484594337356112233022444165299961856 654423521072703078435110283902976 7103852938443631802509194843652096 -686008437783084778481504947185647616 6332544962539623875735468929712128 4972631987663694236080153426919424 -941991570981249828644465214861869056 1625798202127897232773262612627456 2970614326527892205462806536912896 -187137742920343011489582829195493376 2303787618919822601594044921413632 1588010090839282887591328542097408 -565133382032093067249261200510287872 7193737194498236944121130267967488 4467142337968783567954092146819072 -429327723989662295530515771114389504 5344836037509290199749217337999360 1026900798415317470036916608958464 -982416559395426634850141449882697728 2606540092736261694703880126857216 2460640600436498563378010782695424 -623507027360178442422293152772653056 3750471238506883113943333064409088 6538733945809439336296099581263872 -939454662986286690053947394466250752 948885383950004063427949615906816 5773271922703897823215692000788480 -343157859309248218090504181094809600 4483853002546531848145041562271744 3568335886697973111033592671109120 -894208408527190086401433114161184768 4112368291260215682653615986573312 7589760050994315700549646794358784 -970741799777414716276449404549857280 6058706571240999916860896423444480 6841036794876710091002496057081856 -133314920629577760073873340644720640 2725324833710380478856840274247680 1908463150427302631180960392019968 -409783673487153325439127401363668992 8170695183513143487302505215295488 6306007582455290781167461358108672 -190273959157980942647149826894987264 5097703679145275232411970646835200 6329413060920948463344524218859520 -995558407916594930639091876329684992 1640556178073033274929855084888064 5636719504418831017937091533209600 -575997018118776406332695416324227072 8506082488921373638048313264570368 8416006457321673810790864916578304 -959891592650233701618000305787502592 5759664561484190899595277756268544 1425755012564198964814220852461568 -296887953260430898941847346729713664 188314691207717665863898293600256 9307880179780034743839921222451200 -88732352104934530248426533989384192 520066549525845714318717815357440 8013578065105750698612595802243072 -948366450385175324362003201971453952 3676812849295108042498598422708224 5533446044317182395520055989239808 -897029634742420987233060790770597888 7442854517760416486192868403183616 2663392190534718285912612716675072 -290746185252623601909828084828209152 9255196980619022250305061639946240 902122139885000370871366169133056 -701622105972251673881377246977982464 3631815472009492395522079210864640 427471287911606495848302532100096 -844840678284980252430981241845579776 3844090594890782252974658520350720 7955276474143199971424057404948480 -217046500075061611136265691437465600 8281770094226341300691280219602944 8795368647808640225412471001710592 -877126902914123399715868228374757376 9199281882702062467611179398201344 9484324325481105692171754128015360 -520309564130943098274794828222955520 3965302089070007995314637291651072 4747606201250355813133044475232256 -391335463909018785001850985045295104 8795216114698669482337095334756352 936777006402926595700595160514560 -917639214899837050268343553805516800 5023658831517665035038755066478592 9482989381812550092810931153141760 -661676537133075866355296948579205120 9526607901840467003423432172896256 9121016423190581685982985694740480 -490798242724130086832521843056836608 9241919825448391507191540377190400 3663823761174221705514211575070720 -888738463664092876598767255585554432 6400411387140249975510671699214336 553704846102575687526648150753280 -529683553872395420707685620642742272 117994199985539782993174369140736 1691025540471260559401788094021632 -129987343924817619863289955782492160 3978370334283257239759307912773632 1503387795518548646887468929384448 -241962975283643780261819319740006400 6556449691904746620663888225501184 8521261984153075948047940844519424 -41291339234408102362286140862496768 8176918101915240633740720672342016 6007015482279180352169632457555968 -339072364712632491832551642027261952 269709610026571519991087582150656 9648401696377581316378007510712320 -129537675115156755432670832294363136 9464487221036646049607649492729856 3838685395808602793110129805885440 -256382523600770381033515920956325888 4064315638149044273887332626595840 2009731877117472076963655110885376 -229285714352587341087942946639052800 6204974236338008364878915386212352 2107193330870033683673219090874368 -95466236412154760859393594037895168 7828140570078958985144918257696768 6653001299530862192019682462007296 -813010227290728070739323801353322496 4706720453959241007653337725665280 2747743335248784142098442892607488 -300364669004372204282206853361827840 2507166773826112088817381580734464 9103395517989515115537434887061504 -476673563455283606799790560669335552 8473356032478327829164295010123776 4488065159261278868812563390398464 -389860392676548088220993919463194624 7055343946115460263727736649940992 8190666490955015676877905745412096 -554524031993076475504119130886242304 1685073714368012193527428252958720 7628902134621639493480255106056192 -25944766817992747639113832047050752 5611294628068413957715797959770112 6976625222239036678663577595281408 -604558517222529894794834184427798528 4132494023017511491681185689501696 8701215489874493673686906053853184 -164917356755385629360712373988491264 2024867009007752973632049743134720 2667376137001510898393676683149312 -918612423976065300693094489730842624 2112862771248918018778305711308800 7462384666227695867664456159854592 -694686870874023856819850199651319808 1315321385529625255796426011574272 6422043791716644673657353940238336 -875683132538495409292561822213210112 2660161843742757351426381844578304 9479478499060120317327678336139264 -825377615122172092575081672438972416 4751461819439037905418647330881536 1008552741183835237672699515895808 -685267691263022610334479480082399232 6724471241906530828918849024294912 7567471374442601737827586385379328 -4886246891346703757199301081563136 4713747395781794042151075376529408 9539892870482231160319784096104448 -356983644779871237512362253615104000 9179062376925504366146647618486272 608470492866045166552050491719680 -489265170982217798105203139156115456 6187790761351840290035251223199744 5933231082775933372066187052056576 -694103246187652644101996903175028736 4532834852829503421551673784401920 3596958578820645372255748224974848 -60515620008999841921475551126618112 1695275286303569261007128018026496 9345584060616366068469173592260608 -433700669499769644370220825339494400 9967206398366379447656805484724224 8323008462546512946067143009501184 -694801366891916663324610499826417664 7381010874492219697358068596604928 4472739059290113518197532776202240 -986348171592644613533044224368312320 1655906823721723698299237144985600 3022683894668189076949827198124032 -660701309471858708559091803294269440 5012776431167823113326106540769280 312396977264591178622925281427456 -393942340532056383787075398623297536 1513141422045998843762070112960512 38041515017909476428701845422080 -755962809507907519704894578312085504 2898293579654331517998923041996800 1046661298589532154738003637436416 -191016861508861344328002578845532160 1482257838858484362907088301588480 2168188326361384059087044401430528 -809616533261389909165255580482273280 3932233833748262439526909184311296 2083167821737995960927254017474560 -900540766706251926563788107890556928 4048130677664348915870244102209536 999507135214860304698871837097984 -717171799027880486137655695224340480 4903319979686956307356160981204992 1874884177860986941370998347268096 -604692341678361798102730321365565440 4149156996251825675116517303255040 5881724952089593034082419908542464 -30020136139705557419475059234308096 9310470777991092840744194458779648 1108844952332764957803146670768128 -504445282536080197609667552704724992 7086101543586795434644780668157952 7196559664095900624595184005414912 -263138956299910815855015592844066816 9053680533498423213728402971295744 2954599722809825369782268616245248 -264479279584678951425806200295391232 9751795086447822109691817578463232 4315082103503563983491829145272320 -129140806161524887627030769445109760 340146594152731327217185673183232 4073716106355434088243885730955264 -138582661910508700923255746367324160 3025827129705723036485327630893056 1935094608435636612412710372507648 -175751572249317752140764975695134720 3578479041836699238032462938374144 7926806593011733517882394587168768 -595250938937886493920947955726024704 1326155093677899179985973142355968 686130062706276017311180375719936 -40092234470323909658604982950166528 4111513996046505890449111390355456 9679010478581215889543727937486848 -476683808196226393006316459055382528 5725060920071270654438986645241856 8420117342816398817544138685153280 -309142508806573412061215260634251264 6643292687200062576479586167554048 6260210576626209486349952111083520 -142282366840608838051478682814382080 5155254075959355565362895239774208 8205478405936883098925610282516480 -554872052235226880114553384048001024 5608840963652759904731080593244160 8063341250604572040938763786911744 -676972926202939577421795376106569728 4387894050810119440875611544879104 4735092942978551449301573986942976 -783568945357378054282711266062499840 3277166543796862188914471333789696 5302584841821466391228526631059456 -293366131987431032496111437498810368 8830078996170043869570264855478272 2344451864169998787023668798029824 -417367475302733114364234112578879488 5337301548386984261292621490552832 3307186742612579522088365723746304 -896048234475528766121657474868051968 9179914328129072305423114756423680 5568767826984913592333936665559040 -823816339641478521495041303390453760 2967137319551379920173058530213888 2875977514512090038128651574181888 -433141323178091370808636926236557312 2756351776518455213734777843613696 5001774097796978032263101117628416 -359088383214744009707328270227210240 5911857893682704252500876374048768 561236139256561947162115563323392 -934788994438431468424298070714351616 56135681983875756171166419517440 868041233723264980118537509011456 -438805006550903887743610597985484800 633077000645516294440205917618176 3896245606205882842674279405846528 -856583450511443373754180902357827584 2584323071419538430806662295060480 3827256319287112244323251094814720 -197667413714137877767505962885709824 9888919483291491914959280872095744 2480291807107580859021661927636992 -639411497837696272982979820625330176 7440226548401010093836395176001536 6525250473496888052819755809112064 -171614174298340141528168803724165120 8707970674729116966030338475163648 4295181447386134721216443708342272 -896217318442642003913849384185364480 6947722534500310107519874509045760 2030267344990200500895804137930752 -481695101453202117736396261959925760 8976244260207622385149816329994240 2450995719358740154800248117526528 -662834195675229784531286056463499264 1315043730871302098579709715546112 5700485544904088692375054798815232 -403389830927844598019321003090378752 6055721859200164410150678425501696 9603398594876816388305818430210048 -826762860829525588881202416105553920 7545452583572045328906407760625664 7041929639180212955900169867493376 -781443616845019988665842444942704640 6603960978643866028757785711214592 2214928552137557299532423673937920 -494648787381168740593551226926268416 2649400982029116383988542886379520 2986969339874480662123803001749504 -784509659268049614185504438843604992 7275218838283672056357702546227200 2405327637407590220911256627314688 -370289932513659967005026091498733568 3248118453279757946058835320897536 8616877686400376143087763533594624 -11206140088082146268867141044273152 9099176821886383665311747902799872 7646791071239339879301312266895360 -92027380273603158606359692480348160 6222790920516698306510885849399296 4680850541130564906629725805346816 -199714720423718702620091944500461568 4014607085587935747235636077133824 6739688723805080369053717936209920 -41713080337210203024916419333586944 5295067350421146890123033561792512 7651518960250758119590044442296320 -328856587773058684191253326892892160 3117718936061308575346809443975168 2626782685870909216215504441573376 -298705053695586925987414708773191680 6415597027263464748398008938266624 7524440713221503461722228948729856 -347230562441347500189129010051022848 8437012790746166647888935005454336 7874993773468003719513118515134464 -720113197307922096396353740757532672 4540404915539255769279585144799232 9488308895175423020790606236483584 -774613350254011208354514800776052736 1414144655772146893738817976532992 4713178405983735186269962623778816 -352304417231639417259558306035269632 8967202585549503154908475055669248 2949288081225907477152231076134912 -581511817014141670998150044520022016 3637989150156582961289228969836544 1322760924851078495029063940308992 -227910619530336620337111813912002560 6271734194637828109412027116552192 8119103454647216407350591866535936 -906786771886035256485379222292922368 3018518664878421936114023631159296 1342367359870014175931968209813504 -507717926548861825592669395073630208 751305064575686988299307992481792 5179854532491863779407369275965440 -853977847177854398036580188943286272 55659238064507814863130582843392 7980102557421429491969033114746880 -650345506330438870435826763573493760 2541585415521998879426147459792896 3461181788402547601449296731308032 -753038912772248189951903197778935808 1723241743235865439487659358552064 1372370144943996682963884458377216 -921661608014389923814480972787744768 3489697541793669266984520703279104 2844974690600353199693227850989568 -489496398744364706897977680035053568 1340645773548939376233456255107072 9346463182441247851177857532297216 -452705194537285340131140659046252544 5551264674956730658495273736601600 1370877257012297518935937980039168 -564829038988350557477934448968204288 4099257563149556231429782169976832 641566150592170897766295785177088 -855225904474222609563016680609677312 2650904277695622868618871511711744 6428431922851994662615655452246016 -806576417595343512087719608166907904 3216441811617275669627461741576192 1370793632921274991328403616956416 -277978913395164389124719419427127296 5122065431759498814769451661000704 7761293492315686484206329287147520 -124507116290543884812895749213782016 1153722266167884426321150609457152 4442172236505741438001527302127616 -925923988256031162191614034516639744 4358720749756726874914266453901312 8853531975637625561961306605486080 -857655061066320926908610260129284096 7610652608498963524381656049778688 671205317407290884876940213223424 -10704362737525466724214633129836544 3847283013323715849510198032990208 7623315931545930636075865697419264 -611643871287287947304110320278044672 206703987933973858941902828601344 1268861273589344149581753235800064 -482113776728417053662086196845608960 6438776992546628767068583089930240 4465304126710036163154357329592320 -492781327553266182238205566179606528 189564263823142061446180125016064 3070095075363426064125807411855360 -99722217391398512423770443183292416 4359026801572736943271048051163136 749411184184364074889268305068032 -179604327182777256773321016844746752 6346274884776538617754082380611584 7717719854450728807649739609735168 -765841285264710962281688088600117248 5063660957700922363330016728580096 9797239003025101413466414803582976 -627135124625004566281890627495919616 9762609409818215475822137043845120 2661047971574564333831652565319680 -931411210927055371376496139642601472 6520571906019386232481334828204032 3135084857942391002219228065431552 -662489579103406160545456979254968320 695857037433948750326362393280512 109697950766775458808248225759232 -656863440503695400361239284916682752 3021808516865069231147531930435584 3977197900177666573184666362183680 -697880303685457234219821142854598656 7696386253138914435108741868158976 3306704684988877206828435189530624 -972605232255625777515086208894500864 9976845854477114393977147248082944 6829489122381398899354135745789952 -70215768920480739317190653540040704 9534330416381279678486721400406016 7853449047169942318974977722810368 -493626863614085407836804598212853760 1819209285227505187228602349912064 5762426455959778233122443629690880 -783393494798345658269727918720548864 1932295184754506971224216153620480 3397528954260815323322991702441984 -740998480931708622250268373911863296 6607174286272287450974390002384896 1352766235119475940944643314679808 -935041993556871352721262437484986368 4893841697540214996464391788953600 2543013508378092862224580743266304 -487037189279608642103165743599190016 339001193978151534329140619509760 7945464599637553074950598073253888 -48423436790356786638499891709476864 4736032200934668937228565690187776 4813719269876241725890922048126976 -894032215737561126296937955923591168 4739776049576383422637468595257344 215099980984065053980372984922112 -179711857143998985193763806176608256 5943567812468869019404978075205632 7497660908168211439812525992968192 -182345103407306182537517881523961856 856702076688463320468572342321152 2426206224339940432038239972360192 -721444229093829142306733332382089216 3196093632216316243513293171326976 4657942203834052577131454923800576 -367718174770611246925025323039850496 2352596060711187111601038218493952 8259706146364001005101903253602304 -58850158576729559502262342940360704 6565247469460618036117216774062080 3791051753655849818799620749262848 -862563405476133986225558451667337216 3790541480058732813664122126204928 8200633150540427983706451227967488 -39908896512885212875822995452461056 534662961510742108956021009416192 3644086971585620004076500616740864 -471764968318811757621005204643119104 1989411183004001858416812849364992 247924945564826134200200202289152 -122933202846272775158577113241485312 4498492909048408543776568416141312 4828257367866094594368565713829888 -210046859380043594324812795547222016 3212969673845321329070918925811712 8268794453199601115607581067313152 -228261806965805267362578449548967936 6603496110687859430252160493813760 8041025233008710801040951599955968 -452021539300027687458794792835612672 5693689654794279850174487419944960 2340119694603548545705930261528576 -393099687962482663692052212041646080 3910983397617952147145257161588736 9067388074487885166282282668916736 -399959583862915641355843722492772352 8148823863154074766503009656504320 11162905631191748311759647145984 -490851067115291141916506275121725440 4346490032214067836225358256930816 4648126792514418341716262788268032 -361751091631175445575502840526274560 7652356870208568267751400620949504 2377832535616690613981644255657984 -816693688930529307958557241834995712 7786661450026064732784397815644160 2151563416572200702256084674412544 -281974039597648909248217575252295680 5344339786687464399140487574847488 2521454509051209644420037821333504 -97393517818104385106993182689722368 9991262116030858626002026464542720 3120521199603028231323700143587328 -336566736714195769924946247100137472 6916922139465390806840438547283968 3386265933273515199771545071255552 -320171031129174886716651398479478784 7068822030401916646437325291651072 2669170764755341228543690936418304 -661655497272285230479043375891742720 7615786512731131228184700038152192 839350083938122981424458538942464 -404805075062253150649984436402126848 2307774620164005320052531886292992 760847641290974849014709205598208 -725226250013489550507793390206189568 126262024418914167310033660936192 7750263222300871844082634681483264 -356291162092291197703415539009847296 8710809308561054475456459392942080 8128679138063356495329323894439936 -347985577987100452807999418156449792 4630843664289059704809686822813696 7035119270282022088133948603367424 -793205640534146379150539278600110080 9627060749817375222436421269716992 1271002280783761201546364744368128 -663089508425697696827249608739520512 8842331993606581808377012494008320 633019690561018810423116962988032 -554511817287796370506850766459764736 2492663081195152454087754901356544 5277261675681913139571565824835584 -595060478502570698764847501245677568 9313939345216531395973722861993984 5316009079111542326690220154552320 -769295854709777367495303169447034880 6187711725531729077641470304845824 24449539800169592126542033453056 -26082797894914271552205362315657216 590139385810166825723467682283520 9888564524357115775503004424208384 -517535339498775969909966054935756800 1154444191281811917518029402931200 1421264231013113497015702976987136 -831920573725793562341344568842125312 3354060775285095302934526374707200 3190034431443089069828884779761664 -102147718816379764263100098285666304 4394760721225650416279700583219200 8851319360754600068756944862576640 -20767619817783662394918152699904000 8576311745132553673124305205985280 5149408081719336076751053103562752 -46125340468625368777050358644998144 3817575373428074634075730624905216 4760616441029912324572614961922048 -500577372810357094485482995347095552 3253062299697038265474537935077376 2952169696858112037828447371788288 -59169012787862743679920391904559104 1557360477451599735265319695941632 8938780144059729254481906477563904 -649310684822964903145420788974223360 1544253138703183559873626927792128 901061806858815745579670273261568 -889385015631531377683961876905459712 4348919181632312256774790350635008 9412242910409968569073063920926720 -954376532132855865498895368352432128 1385388531331327694218608756391936 905259133334062194712674754887680 -973861272491180615433586856136015872 4456536258282494140113995448713216 9640456554613031707594809677971456 -565744433116682087966540272085499904 3394601409509349183442939937816576 9064004337971162959496647825948672 -203326605688720121274984315962261504 7792199484378357341700400196091904 8704526112836789240710063257026560 -87013510992455339403808810855301120 9724278091550890076090450613108736 5192167561653650816249691082063872 -468385349938792444865701538797977600 603483041420970341559890916409344 3353765508834501739809822375673856 -771161928842469819558008687331115008 136839654744523200274713165168640 6753893808169585422411591910948864 -431733584744164772155405369411108864 126415913046534625952176046866432 7043110895324096142019120169222144 -367189926414053838109361902551302144 8153115153990092441693110520512512 2551662612013181730903746584510464 -144321602130501692301149514374316032 6159320960051068421416301333839872 2080485282405307402856757630861312 -795492498387548097268688095935463424 3646657942474291270484778960289792 625235042829318358356439706107904 -441137060564001084745256557101449216 190744692584139840248827325972480 4786148595353345925724089532547072 -614398960087756419499062058803003392 4948409193688215231855417444270080 8863436535764680483726784691437568 -155285190862404628442866612688650240 878648542998339040580817383325696 6289301444788222359091380737802240 -117000272619774062639508267630329856 9580796908048549703345858137817088 1527236675615369118362120772124672 -76406228768951089268696322278424576 9754919701125927998709732976099328 765790032441230936522299510095872 -119571810606119368453386269538385920 9617959264455635015093596278751232 7055785541028481572185042543706112 -679374999454638636723707018561454080 8047385432156704294557471446401024 2871060505579484781955851824922624 -183672697327728145375159014379225088 8869847012810755046442222418395136 3351090388476075205312453455904768 -206270475401999480210877152820723712 6031968466196201333443381147205632 4399459919936083956335182423785472 -586761323714924540505644521347874816 5071672968379012605424156463333376 4257182352302203137053854137319424 -450195242906790536663572493048479744 7076447175801661527319626576297984 8165480536492096922059599450734592 -748791339675428066234494649441976320 8016806632807273451202522778697728 9114302786392082679133538862759936 -805192640703946092729340474213531648 3070422728590383718574681923518464 4922081560101387809269630789222400 -435700074449803778807817191003521024 7001687221777954119698516644200448 1368561158932796912094498900672512 -431433707953648391887031978522836992 4659598029558118239922824539013120 3630199358391504739735860064288768 -801268668083159557454179365266915328 6472002751536478629394043277148160 8471204052629397767952934729940992 -365256141315031975275455548399550464 5691833311317525602341275182301184 2209198487486016319955297827291136 -352649423781410263679080735394758656 1873053915159478744850783931465728 2028181191755124673770130667208704 -815348552210287974446474414174240768 5558229845800949718657341197385728 9675429606121007683520180384694272 -627442050127742432322165263141175296 5835086742033217642294827389288448 741948546743383348664515984097280 -167254121313544410143695758025555968 9783584196058879959823741572087808 1883136372299677636974699853381632 -638227744467450928658051997676601344 9529531810028570531415668144734208 154278885178155903458915611836416 -742981068897150924234485343163777024 2731241358002590046780690041667584 2375628607685854728128663040032768 -297463159954739360998168030993186816 2577280957063607891077575508754432 218591199629165213450644163133440 -400009279700864167851070366024728576 7337141448302720513189642607001600 6774094090277867966479606753525760 -462836167028820256494093920607666176 1946226122042770543967426148564992 8375002461007230089147672782962688 -573734172258171638699744230119571456 346591145025259031949731809984512 500368623137558785326350619115520 -199148416790587614338966155731927040 4012157779264327887944568459493376 7704723890752407696003538991710208 -951162965012453270590550194671058944 2818859540569833473096136320352256 1070499130857754925127963628273664 -885428022916223385761415922471403520 913097302634531752617342866030592 8511224819090762125402894577434624 -941869849900004306222339761438195712 5110854320464963582316189143007232 7381428709669047436796470906322944 -202264738100948881707860237995737088 2040218647805550651623040140443648 1544207158985129887552621349175296 -155293818646208211500720607413141504 7192215459656570863242823847641088 2129269285977546741588724665024512 -152993071009968836008053159502020608 8619834472558679437106373826969600 9018646823985263588097592188207104 -691243520577234451233723164093579264 1844259225318255409424541386014720 4260647909244219396672955690778624 -897053209837142337954520734986403840 6847751827030213812368377372475392 2790747036108755890572078679588864 -485237048450212310986527630455472128 7527764338182280256167319785439232 5220998078388261873910088632107008 -165645906510216802917551939682041856 3740267477565963758526628001480704 6594447747741403370515557381046272 -965702317961699603289781837248856064 7484797879489377597242377423028224 3762719400471392707323661727563776 -946559578740788731300494401005944832 9978387439266992313304093424615424 5307892839133000502202020004888576 -113645817456212467095673063023312896 8299853283881179062113490842943488 3075935953197768848409521916215296 -446261279657182618151587638109274112 107267689979584716334551676223488 7425769827188996419923225996165120 -92489082527270144904053112354897920 6931710911833761634492339860799488 5961678900378536559265945665667072 -221490875519308291740982644293238784 5231700635264100350999547430830080 9609540807274979872750559127666688 -116168646736913331803012809445343232 380562453779125601146165392310272 4397353047928353160811226846986240 -709006944859703070700486074728185856 6309289278676924269956793387450368 9987416495662060901199608960516096 -145946875755184748598089870884208640 7109549781226894007197789436510208 4372550234640696788939483480326144 -701147213225966641106142555529019392 5383067486016424312215521063862272 8901736033623557835218805223063552 -235923918426246476395773849960972288 536529032635174107253027733766144 2914780370553295161576644478500864 -91412177158203666342975490517630976 274334918398485358286537924542464 5559714372208075156372235801853952 -215188598422852136951682958637400064 2891263147115961318322150030966784 7721100695851454978219771890237440 -146786542697650270587787110036537344 2616464776036151032364959824609280 9177736837081211198167140823728128 -777372642305689731900387714985361408 595008594336738026108632365531136 1347172941549531641228661314551808 -321428057117030026624297452393463808 8834243191369151545557064737619968 4276433654911516238690731547426816 -132725474354853657030836573125476352 6619407946477325071694369256374272 8192370361077833751716072553185280 -757153936852820404082124243238649856 863786891911018461268756960116736 8050044073614683653580296741191680 -340990391269951055848375977924100096 4305257954632947182916957917675520 2258676748252208340193232551936000 -678015426857342418177063434766516224 8327915122052131926743615191121920 6672489526968024049290258212192256 -7152271450495480558361700309401600 850302556878850924666330164494336 7019045029335578121088292012163072 -266698880090131890246221526657400832 7752672772024433597771179530125312 1895081257896122425391167163072512 -6888429056752053019868975626977280 5869558249786034549711136370982912 8584822722168398776477742866104320 -498512249563846559449359428846878720 1469893736544059202353338022625280 278747419390675893280438684221440 -738908127763363185410351433600991232 5304606279811636810194170566148096 9780295278913521468379172396072960 -364562074645726845388152966054150144 6361893968548388288586168791990272 2692415136722064473905753657180160 -654896412793441413409388609042120704 4972497453133840372358850310832128 6836962600443202296353359822585856 -302316801859435430297488416145670144 3472092277348724199995570405769216 1057890242697966058148532385218560 -18904213414967956332050113154252800 7003955937075370558247768860655616 7418528311105935149471595254251520 -151936984669921746156611287176445952 384164072639690849532875598987264 2896723315324908550650817222279168 -984066746264457281800500764519432192 8619208990901770963506506690985984 4830857158037028037531344048226304 -888026319140781729167973956926308352 1485999605953238191240568002052096 9595656047755305263863988121239552 -78703813961755593446892660443840512 6388462709975663586676108739739648 4840444340638243007553993132998656 -96257251694326450304356252114747392 7170081799967688354639773821829120 1390718394121189203537620621066240 -481060489539125143260604792840388608 2831819169314668982225970382503936 5321818452807814790265079561453568 -263551264822946888857723912968994816 4254527990553787182393984410451968 4111853085494107200520702379687936 -418677749244982859452619089189535744 9201165022221936974386513787748352 9614953172025481196146880424181760 -92737539027080249755682409994518528 7104404749335432288005083757543424 451268849258871510663582263017472 -133405019121673878824860263502577664 3798022639557979430089087923519488 897471166757589590629733747392512 -206236262683704105339069436503523328 6565678576808135133206418378719232 159936817214724987241550657355776 -233756182939985640156031413599076352 4015652163197632105772916804681728 4366862666700417809728698501300224 -972588589327353097588626196325728256 1017759754504068178009459169165312 158292188219212307775731093471232 -585849545343472350168372380862251008 8893223605977303148843231604637696 2122997256301719914539940862492672 -853139887662905439845438005574631424 3300946978440865091297249578713088 221258867280798539801030566084608 -373493914468165895217285296356851712 8453400546976849076079616050855936 3591954863391923607093259618222080 -445259133966667017686868023587110912 2567705054074055224751661749633024 5304814198068122561603055466315776 -141129849916640945536368541685514240 923163824271110862293216935280640 1638589458956103186222854025773056 -579270834825406936374469951120998400 6923547220003877538467192942624768 4382625796284783100681977088442368 -329102880001768316430303938094301184 4152508353701209572032728434475008 712235552554176255309327357706240 -612082533805356530736578142675140608 4195290317684764515317270135701504 6898851908763277969834808004575232 -112660281413619132499912099918512128 6327547169376588412586540511789056 1984583591602812182079265205911552 -432712143385120552717040014002749440 2745878433801116610513595176845312 5201176060541658563061437029154816 -212072163326725658298461673429663744 2595621322096206531228019810369536 188794212875566687064767693062144 -298300038786479878500528284265086976 5024552534932716834095015164641280 8121371629600220044206626580725760 -254053448619698655446201885375070208 8186600636523207492264410732298240 3074277266090236748709335954096128 -685884820647834118484933287876755456 8337356364582964529510934703505408 4804069169591020351585366388506624 -479952735856528959829133611057020928 836369683891167962216023197745152 4844372848307311477292896197017600 -635306763893515377660369016025251840 3143040785072357116234503496400896 8670256697771740102406845725933568 -910369539420151790681151405935296512 5979134367168114290785183181307904 9603132545257772568745670720094208 -678461327484252722197841899383947264 6965580759026095094426569940140032 9090004809524866096492754564546560 -204152647840239988247506898602950656 8511723110017995508168523742445568 4059074970264771895299047245742080 -286466412342222246178680222141906944 9037942809258788260201976479875072 4782241322226056086120426926768128 -886851067653476674966478091855069184 3421465913237666782978695210467328 6122794792439809814135597107773440 -348461951664439367479909447578419200 9727388250567690130985447921287168 7394553652500708524871780728307712 -350265391573227912064947564765511680 1198560224004655768039518147444736 7586376182443902146485418404610048 -91733811344715575651639085374636032 7280045249246657109367842223947776 4225827825336428562741425810178048 -720273504579916687188082008396922880 6389102033379578152577416250261504 7015919739226955365262726281560064 -548366856011275229158828371418808320 2805767224006628878024420347609088 5126448416516030497373862448070656 -273031130918251707133749827987308544 5151522427956738376039856049487872 409524916884743996935032163794944 -392066185749777568601009392480944128 3325322861288780932582329242615808 3825009444892736370006267432796160 -504589860711646337920537480482783232 3377871685581333343927329993261056 5941564549586478384433886358667264 -588332345082991364632872982912434176 2707235578994726568851889830494208 5005894219745547636793756891480064 -678340004195781633426126248253325312 6414103381018137379578593790656512 9545948454610776410139746755411968 -647914076591617714411777822767972352 9330130533475848825480082471518208 4986461289915179268557726038360064 -496420925518306450622733804803981312 4973687189022139720786029878181888 6678023220094532670092618586128384 -200574164062748284182737658727890944 8866017509129848604776403600146432 2888958615686596233290081198145536 -510474760662404281043544596138688512 9475443517829831379369751174184960 6740878237067554709528252640133120 -842741269934522374970595165354328064 8711060523283985812784686846443520 134626611632095960949124614848512 -605045267061689893078655558609797120 8732683943108281492019776768180224 972575387994807046210199253680128 -605743505851990012465718815675645952 4371463963634394229521712483926016 2233189635753128907550618214727680 -928853523923182304408671997631922176 1859829176293497248143382675456000 683316206334931497900780122275840 -568783954693315176280703243420434432 4372838848139681161815770875822080 2814193861527588119489397525577728 -215618398990503766705719472012918784 7615830321914287181544409356304384 5914458595723835975697146004373504 -385265769604900220201299509942157312 1988024368031824607344251797241856 8353410614390262545635821712572416 -316400496034623398866455003226177536 6818546180642012535844394785308672 294421645764536894082652466839552 -775290640584289694959077167017754624 2956168051439829091538465540014080 6646384884421685763320127210651648 -505505787583769698177334246408978432 96267656124913894005369676496896 494514577538514691726451174014976 -862733350514428680704708009638494208 7638186096110196256427001222529024 8862575894556511372184602349142016 -209688324960110842198414769132666880 9118326309878849233505320467169280 3731538001063580584504053641248768 -660619789693302258862132943113945088 823590105828109919213282427666432 994216959955786653622434759966720 -424018472846367726453899543349035008 2560595717749264871729325215318016 2901052730966291391847936139722752 -270240573440216354174632917953675264 9423247471175319753920272981295104 5021864630545025051734716081766400 -176276347775099874587365449012346880 8482075065909175466876889685032960 5402502044589059172828960438353920 -978983882762568846889323962424098816 4480967383481797449006413927940096 7572014553827873035978019837050880 -663388872097411146973337647086305280 3447346657529927257154072958992384 5134976114996825013413344836583424 -607962538183165539721541714985353216 6295948427589981688510040640585728 9695078011320641762610000326295552 -457783806792767365886904304391946240 8451047877504184047569354818060288 2594163381472015477806632963932160 -721530637453518250509548874354393088 691435915506414065447595765923840 3518486049958440128223437303840768 -379689075651283891937370593644511232 3198237459352645216316316465496064 2273129353916678634085005389725696 -91679802609803192060025228463439872 3223388913207921419020261574836224 6009166020674938983866374631194624 -777642573269554123900672263545946112 1241465077485446119790110461394944 7910661399888522188297662613159936 -826707519304742283573146851783737344 4931165946387566536992954083442688 8498988228432999099838210615803904 -521061924061917010691512090060914688 1982185751324514643847765628551168 4158201507718120472928158864113664 -645211382023994075853294222910160896 4283833093734845228149818230046720 448970095851847266431391229804544 -977292261016574419807825479138803712 9075777259581586273015814359613440 115795096765293725261627534606336 -922578290917147497690778626248671232 7697150842334522769082212235083776 462568475371866159593795528687616 -572766509797858659742812673729888256 7823245398996978693064786261835776 1962703889800491064555980774703104 -35606521230156695409367268406067200 52283668074238291914626793734144 3184608507483429205894395391377408 -87577792670717978729322283182063616 1779076815236020337693120083787776 6705897680649792077749344542916608 -742168080602291678575226806106849280 2830448582989409158579448140791808 8834598790397315183191889373298688 -311524083221296218078369571774922752 9491816661790229215584918343516160 4802047395411800740437578446012416 -324017344629991852190107980737282048 5799093686727836634392030043176960 3176316587124808133237613441056768 -904320612009845127948043639672799232 8955947617525431152662291635240960 3025158093619814600384370932973568 -633702443943933081904821329956175872 758725291240928617055872459210752 6157114018784396369195549377691648 -583765970985313533077818109438459904 5277143821155456766539288241242112 5047750181077409361918336924909568 -955249879049825061719417896979922944 8935541300657088222725181687201792 3819456993268280589893040695410688 -476791538128902986685018469063196672 934842861351458543484316545974272 395625663314622836554888359444480 -876943998484880770336037857564557312 1554616340615825372051160441028608 8068630348227228915354527095324672 -585282420659269800488196508913500160 7248813571940762187967059346849792 7913203973619505102413994896916480 -301088866756938077928170215411023872 8862486451001592839188439283793920 6310625683717327951630338405433344 -160938546068592271996468331066425344 6051028105375435020375987547275264 267984629686640633043106194784256 -501712565616141419052708036110974976 1497470150700153828912700946644992 3623429031683618517789016225480704 -774971244274274138492103193524174848 4233445292351142365573072354803712 3638118267428437991286353378148352 -412653660703495969402139993123586048 6779957310970522030223865885491200 9274919246925272098197489502388224 -373406890083679577036892347341733888 713121120122891477380267425923072 6790165667891378482309071194030080 -749967724286085035159500557448642560 341859490469203225267725513261056 5304377691933073217378017253261312 -919627820429752667517018672212213760 6876000106371368678756883542048768 1486917369956807129863663518744576 -479676009522432621071946911966035968 5149821244137943123051824612900864 8669613017879979112134204396142592 -573789214740580755871971769606733824 8488277905632406296016875830640640 4509463087425956153740079862382592 -887304284279312507841558152522760192 322450707162876736965331059212288 5033058998871732143538504791490560 -335754813297047876975604124553838592 9231477848730608171111197603528704 2933257161321199388903680795213824 -750352109707469506591411704692736000 9985374021180651755320376404475904 1719944000999799116589556782071808 -49692105634398749737362340121149440 7779069830399332897561765841207296 7375999958058449005877694476320768 -475507096943119789315551783259471872 4735286463803326732642017083392 2506116332765611410621485631406080 -485067875232465957262502037039349760 7207402900393102545989894062211072 8151245262065616423230059365531648 -467643533325939833143356024986533888 4310904147992348028213131567169536 2409069332380672939933760986546176 -8793951686702347533812809833906176 2547653706901526357100662030860288 6039636750005197211575144327151616 -424684430547539897305462364977496064 1497427436019678443060741973999616 7662122660590175172951496930099200 -577508770437836580237212586086498304 9107283418548572386121465446006784 1377639937619467872473509181521920 -474657129899300606456115877432524800 716147515305952020049578099212288 7975220564865591602569057509834752 -433473300406333728160876976276504576 4558499975904953891085986618671104 5351718089270173624132379613331456 -983643332234232934850100895812681728 1402198109305103188887086494121984 127609710675182642176804865966080 -521385294206412499085554718559174656 6662771702758671281772048276258816 5060737021885114095241920805601280 -88083753487236038407352932580196352 6224258334034411047479853388398592 3135736690546753657360958684659712 -322414275119666113196186561461354496 9150523483973302282815973527388160 9178720014731300717533520132571136 -140447600464777843323342067832193024 6137546488407331345902680152211456 3014818620763250916906674830704640 -102507905608354414278305368877563904 2027016813665173116954334701027328 9227763054206632894674301295263744 -549436672182815051074204997989171200 4419608077434801806346362787201024 1834809125412399765562306370469888 -560011994904821435255665700070490112 5297756352363933975439555336077312 4447552607528535382387601015046144 -974740440371047544990049388390776832 2645497259529663371070781542891520 8032163311232460201827244129124352 -123877150815899448324173684096892928 3003576914148426890716943103295488 7288171483992670583503388441313280 -491029748973271010606230762952851456 2306125814260717803466431330779136 4391346083879704222742637937950720 -803736470061493125298449178114916352 3818495249658721975936324732977152 7138070218137678900386496417628160 -165273434617186115238399742341808128 9608918538452655805567619496411136 5891165714188029614359626303668224 -163114905663840977849929845807513600 7047070957730029619657433805750272 3377358297294805130155661711114240 -684866907670396808263403444245626880 8695258367785500763228255725551616 2393900722263758949347780173234176 -345074987375023782524169447580631040 7209334420500780386376426561994752 5058062182460334190264003632037888 -414567321763447313117218088970878976 7309466298882455293277647772057600 2156814599649682032308334295515136 -209593143435442628429389048653545472 4911518098398612076862377813868544 8042614713297384120791579859353600 -297705221942035470041438867890896896 2880994515925352378068364844597248 3247548270677856486467788739706880 -717501360023036283220467619201024000 5948129899252041029724879179481088 4523477386342061346468586118447104 -175247743193681522738794341202919424 6194750241713443127172948851425280 6846012314250695548469777421828096 -286725507235738073114663686663831552 587407104267199098256184538300416 7970500848485452256408270863859712 -177019715859458897158060011612536832 1559888532556846741759037917888512 2329097865944006252043266582118400 -971009377233818050209703824816340992 2208460889331650242162991434825728 294351236984596456195717609816064 -923785272649480058464496155000569856 5056221228037958749325363735691264 17412076679582436205539589357568 -71421257301725146237417127443169280 4530401405231232468815457843937280 4739057902216746458847448158699520 -133152486506844331798488175872049152 6968953817635803003302461581557760 4896820768249010830680501344272384 -554711675642523968195712726197075968 9084217401056300339434762761404416 1733535156543678271648251588378624 -497665803811194657517972479031640064 8276490524752611270559175230357504 976336935968515906784251487453184 -989092788850771667120542421948039168 5926123120283272176130993590108160 3886061864031810143048937752231936 -343619535342843412030601323421368320 216233749939877680797184941883392 3418589053246792524041671141228544 -435791616147656083147045295523627008 8376573228896125846889379819159552 7684661443548287823676480623214592 -439070891294636454051347992705761280 1438098672383002722870233254592512 1657760675736593183016324775804928 -75107459971863149114428415774031872 7816819796963906865090458680295424 7808650919659088826183552679804928 -222180176443400538758716694198222848 8515244712118995538783805080862720 420308595784267046824632412798976 -576294590167159359997423359444910080 7590875761457991858563114336256000 301382504614879429910609356914688 -801727590666383815236775348271054848 6482703306696050457870039496261632 820148664730018261740103133036544 -886434897091849698861299498640998400 7953446810093926198163867374190592 7831589146165253895296686292467712 -394897751171663683797329168287399936 929223904630217215259656471969792 3890461574889907184262062301773824 -192142471908756568998227613533077504 4257686080406112006341765946671104 5498772752437951394448976467984384 -186479871209028158702930629041848320 7265290948254024324412126215012352 9392871100702707024782064378445824 -206493362917491071684043771337506816 7774787292532349350440837671026688 6430539462581219425796276078247936 -625830848012366782411640148989050880 2435015465744159954979768798019584 941787798512032874278627141746688 -338989990602654111338809116386656256 1046732978399812281749481516433408 9513799567459578586548144294592512 -150556775075011949091740932657643520 6555739810820936082433208525783040 5740127132181165124579330040528896 -121849629997713548533587093105934336 5845320240231421160788945396563968 689385567641848961974905130188800 -80809186666410904003355540652556288 5981310619469948288455813810356224 6194508108439572787405805118816256 -982710669653064680022614739077038080 3964517633059921582087253302181888 6189700222587266774777282428928000 -190312863245961456204712082560516096 149927809818005349797973184217088 5434740642414968635966743128309760 -552754272973599751794955256772689920 6203273156925200871995122152112128 9305594822868363477527337206022144 -367401865148499301666954553614925824 1162116599795589617409082928398336 6687692652954642451787539720175616 -759405117616917971078400603412496384 5922901334514634360928475962933248 9445102100769553061200909226213376 -700537987189734961192023425439236096 725010005054320449282739175161856 1736050708553302912803601421172736 -657576341362577025505230648921554944 6740655505437830015704105832415232 2586391775576151504313136237772800 -177469375779225012619372807686455296 9766214028200763727895153598267392 8263773884292236861098197275115520 -577785286065383866166052654229225472 8927651571666758362371353038815232 9867302159208128112856373095563264 -347851783586415704663792430719434752 113742982019942338056705179385856 7977195557967372745368641499824128 -161217624835081983494142691502981120 3603522941441927639748692034977792 379915826568374118145050095386624 -839558770419157373124736732652109824 6340965065328815210025702289047552 5203970364764700511468221242540032 -486941453075764549777792084572372992 8201758326188600336043128813256704 5146968777872226801483582961352704 -685158116496740514226379530614865920 4726011534691477789934662377799680 5527730961857510564014897275863040 -44343913287698019366798139552956416 6027752745039765116042028081217536 7811220089934446065035859564953600 -907657301551940476593412716556713984 5955599363119874936049601225949184 2991077253474924306810086742818816 -212572848954043839789702238705811456 1971005289157459260432021985427456 280174425453114045190754873114624 -100110673407787181751788012667142144 4874381732174637426371329267859456 3638022118718917540911159214866432 -420396330115453299136617631876907008 4700717757410502873222090338598912 8582126224473064341736706159935488 -174931667128310807295532078353874944 5323967259659514903577224816885760 7697661079146699186457342268932096 -904874491611150823356353340730507264 7845939650174402861171767060201472 5782888814934692216219894078767104 -761266057496639098806388678859948032 2046351907735928597415313711038464 4959485969951647146479542824075264 -454301810034675024475558568557281280 3962485776573507072610898045566976 6835672096894354300866285715587072 -708530913004855315955587239655768064 8015487547864054181935799177576448 706451753021265631854717954949120 -523954073222371938057944446456037376 5193719282401929886010094724841472 8049961504032998973002126909767680 -44765346153295177085013919898009600 1050366603353721088089114221215744 8605348915198140227937192307064832 -727670929440414566203575547507769344 7930535850906036951132441965232128 8955558159587612230413969931632640 -9058600866284025128770312727429120 9709022303662703436914442587078656 2053647932432041152942835266224128 -87165151680280910162474239382257664 6083044134285428594899916211355648 6200201069062558001619995834974208 -32707204356636007791418942676795392 9498353043273573825419800670633984 480521744947254461127485760208896 -964604028454279675731913262957068288 5536968235913176966505586950668288 1068112301623113059068906555047936 -824496049414463479037976020879671296 7104899919468430179384369302470656 3789046648718588046128767647612928 -612004284735984910136409190578520064 8427988342540686028005276850847744 5271447435833494296177835904073728 -644273447173893011426109310730502144 8353244475972964817641837420347392 3105108402292985678148003130507264 -962485405756584324420368320134381568 35923509246058221037089479196672 2396972779446285514712711862157312 -323152952909407793088133493919055872 9273158482737707233976118316892160 412513993122449980089073871618048 -366762824706493857103155732733231104 3935638164712974625347731690881024 652457590949518220105712901554176 -87900024476782443087707162837778432 7729986903894463036862184292352000 4439705031351389666459460908875776 -391704636417721161139602663917223936 2951252054126795658962983165362176 9586201715686269914375770639171584 -643795510214885739222244060460744704 3587018279339924824015831774003200 2101241397308385128089157915115520 -703262457558599244887255194248675328 8609937259284216582524552473477120 400295270615314057362035791888384 -655737511901632724663774662902153216 9212531498778008912631058562809856 8893209804223640641711305499082752 -334961373662026613119401555199524864 4140018594150629953420318327439360 3350664213297549585220666835075072 -867237984129861965785904210308497408 9431232126995410348790730962501632 2952132446982016590364254842912768 -887572423314910508201666902237380608 4133307921537384797800857811812352 4393465759835380954152893738385408 -410679325114079264823614695607894016 5459506835158881441566017586200576 2785460093758931704786534453477376 -347615218374639144470044204272189440 3630454303322346220383298517991424 3634327880253790733505261444530176 -283989678787827692837491743536447488 6436126820071626494602648672534528 5290045855829733138453733104943104 -71472652447427259282875188963704832 7478741976038045937281030802112512 1404806928722105190710710206726144 -743447108277977820248291201966407680 6708149938569639492326729910845440 3608256192455936962952139926142976 -675376957395366417471156904569864192 4351928138498348689230675656572928 4507131842836580994828202607116288 -992782798808961793125719838526799872 5580501028780231964471701322858496 7468952814312291417600055534682112 -613406380548020745337035704267440128 6839600318973163077466829516439552 3555609639862173006463293273931776 -879956901684461763370027265927675904 6610478259335387122045722189365248 2213333270855451390447371142823936 -752777162424212953728980468887453696 681452354895977876378191210217472 3848079112762222245707211278909440 -594536206740500899355803140766040064 8964588913794209160926543866757120 5021242358670288843176689470013440 -518228905469312164930637895972159488 5137783120366024906924507000733696 5862628087609553616102632433123328 -929189179778606063506150729147482112 5670263738489614982040098806169600 1085692701067744049088736079642624 -723055140607113046074366634095542272 4484989012710700138547819652841472 7894778435584311450740568335843328 -346340341959631850196054838857433088 8184966852805130979537534668767232 8798443326882541978928300307775488 -910923818354495057353466666914152448 3463348667560236049209558111879168 7578995168981880383226379541413888 -673139828195068206065426874947862528 2912478104907575960950711498309632 7557423932074969290232674071347200 -733276474287824153501058857607102464 3825773389337942989260777488121856 674655698763515336161784512905216 -644186172367683946116647490523496448 1624286962560763738791192647696384 4179108141805251997739867403452416 -249211566582157888739609346169634816 8729254028822968880225622178136064 4401827152528455296908439232446464 -137191803026539418628962153924657152 8882319014721521406511249755209728 5176799830743253877382122666196992 -117994954475116774080603179806883840 1882251965250488656050806904061952 3234525188561213682059233510555648 -826820972059788745686648853905801216 1919645261255305771458234920468480 3613725770593972062333801865412608 -725137711577858475054717255416807424 830978545973421505112828620570624 1886679916657291256478015602819072 -948560406501458693554092921508069376 9438429681942948818727459509764096 3874479755497490277333494281535488 -426892758389504640243630918844022784 5261482271352462553272560197304320 5142154125505085684994887613677568 -636072294226922541899810899461406720 2138503542040765643474992992616448 1106202166547710075729709920944128 -337556294586465486485988214822666240 1646391109066401770165254857162752 9368024398401196079402632641249280 -454724035276200520859723259034206208 9073631717767463869711963406729216 8441547577926743879490855831076864 -416151363402888541575113899895685120 1056552299507426374237492493680640 4490950529676683289225002139779072 -885955375541245472474470678553165824 1694778574968025243627893681029120 617727504754913036466532588191744 -141720930928293915687386531080699904 582333945579940166337246858838016 6906819362706021976607603533283328 -872798974902185740767755360672940032 6325253431021662731937534560960512 7093881630675286789577773103972352 -926185719284013172566517992245952512 154639115522988150104765266657280 3744767599976880719515637629583360 -988690922585061721516301551434465280 7012580158843880262074044669493248 5923921359834918697330083985620992 -166299716821358138829707896049106944 5529859252643704640544053655502848 8633069823314831287466478421409792 -811159389225845859903031625927098368 2013965171677036037347302147358720 3109506641017794408375562641866752 -245633229405586044134966126647967744 4742958958330853879173930370990080 2566127679331718721141978643300352 -552111928397382412451637797033345024 4532325028984664404513836740116480 764987914040079574311560418426880 -209323156806231374373355659636768768 6419715844449164452007786152198144 1098967948166658557323951487320064 -516598503111672659642734990585757696 2146411513759915542638215831748608 7393518574315096879600753585422336 -998530227111857314418592045514883072 9098819462082258729256407378427904 2917414237603095257225904923869184 -363331734815368910487220812857212928 2564019017472110379740004630921216 319831452383363395019405627752448 -996696650294856775956976634995671040 3502354696978035698078582078177280 5410627738990658692349784546607104 -788728390681490194521187505236082688 7553005191098506893270055659765760 1581602462811037357862933602762752 -17676110081102775340705337042796544 7542934911626316503058812535570432 6944287506861735815076440784764928 -249749319438937406982110495824150528 8729608350715967933496180508459008 1504825289146492055001002957340672 -825041320552018429854824950474473472 4927196058032795074128513425473536 3339864932031046758051437315358720 -899664640118840001828168142392655872 5799758476836710112515312781885440 9153425537444515758831772486336512 -714644133606190916574533296297345024 9469533325718231066578658390966272 3872253644369735164169155812261888 -261285537765908914700670290475614208 9959816951258111119391482496155648 1993545232635099305225557404286976 -642707884711371480448462302230872064 5361742582418234587551976113831936 362876428074838905181495229415424 -2165925793285425113157600708395008 8684144636393468941942805718106112 7880914560603514486219916108103680 -255908351454634164548821369894207488 4651283870747173071448983860150272 9561041436740286744909420584501248 -6721024307207926482348610418638848 5300524133768475360047417736036352 4806584313289922097174211507257344 -65113241897921536672552656106946560 5688418577274618583076225742274560 3770343718488252721321615195897856 -83328361550126438031925904857366528 4453383260260554574695073180549120 5961561296105609357821420593217536 -103231908909480537817437362035097600 8554382052470624992745113966870528 9277441781970733433106611350536192 -708286709901587009359200106372399104 4342763638755641828337709599424512 598423564819323792468543365185536 -555936686768470736421375699517964288 5228460548458822604803085640400896 5733507008386960162827754385965056 -977563657876127727935039940186865664 5793316013615969437278590910595072 3331441779121079822554569233137664 -588053703214577548046841488743596032 1609949287074851289910552012259328 6205203105150216281371511231610880 -162307312473834022278753034193338368 2898947030239525624991989918334976 4078628961351354454391100012494848 -188082221338949547485290260468858880 339656455938099104917487532113920 2659428135457694622023978433118208 -459975213219465635278607351187243008 5344665636248693002354542130495488 6088707693840182296983351811112960 -140331879617828279182735560367144960 6681895192858998677871927534551040 8706149808142847148818950348865536 -471824802621828953735402405624807424 8523276689360937403695684516839424 5220607524343564632444333715357696 -91428630384919976486537443779018752 3874623277831856454262981304254464 5524874376991836991667915391500288 -582282375789841937993865089165295616 552972301389452205337507293822976 9251466008046923080711177389473792 -384212550661248871813411734361735168 426237230123439529584354199076864 8839117550033925302582253296025600 -55243596351447808223772998736281600 2025996535038945738207630276427776 5987807727838054956553373466230784 -929201703956418464583078087965540352 8273587643898511774737523848249344 8874209137603702259862239700844544 -542450251120753812557772463932440576 8444064301217332684623086564147200 5916223624358897196337762517647360 -74181586326103394779926867090604032 5688563051316536345635411934052352 4684493018802883258099802268762112 -162242425193391886310006185091137536 8730533418526374077449459963265024 528616856380545999967950672494592 -884239579861232599755836318877220864 2677979851154779168881554539675648 5620454032928322842244065464942592 -187006927856619703705499763751256064 2782017509007578605819701147729920 9071036076876601676495110719668224 -366300209696050548047331991614390272 2455314804043598983633739291033600 656040891907178089326739495845888 -467798217761292043469646131978305536 7187148396710241358497871023833088 2895234590487132430155974063423488 -222421994443797346936836202382229504 9560948401115976004465823240421376 122574386702402507970846807556096 -159907647785070982101524510991712256 8950747825319177181213923884400640 259991071997558754365172334198784 -340134382126526905093846173126492160 9573368264603325300430086122504192 3662145443691888328099934525980672 -565610507600055085149716131570778112 7940938172377350953260917798731776 6612708599573910375921708448088064 -823594536949206628675565190543048704 7370160108709942556614314302636032 1979473100156346897057880888836096 -787541266921268575862876236033294336 9729559480108400143906116856709120 6008573028596183168833352584134656 -230097362957557024734205975061331968 7817468484198743735968081922490368 6524423757215218746608862701289472 -478551144883273391247022709087928320 9609759059540404948432296421097472 2914142006565957962759782937919488 -969769758484892614925741001503932416 567985021162480709963748994973696 979952783363934081206457106169856 -687274712634360411182445111390765056 441004744978941707948725492514816 5399123897201382758485314936766464 -759257580499511006434062812399534080 2512427402169410942782104246681600 5965205560577392249103300056580096 -575759750246900343169674323311984640 4486814963418330009294072549736448 3869645417500141861703501765148672 -236180435000778241921206153371451392 946396555861827995442994290360320 3126227377141297934682988679790592 -689501779125121609679570073995444224 8941501532778878125279589550784512 1738795448697924762896692578091008 -712910601749986848208841298096947200 9040249254864693862862525128769536 9339181719416629812121312805519360 -49931300690494855528665513451323392 1408900122593862036099145675046912 3797326589459737637790767120384000 -347979302170494771756835720388411392 183223148600708113485544455929856 5132322800204711403901399236345856 -34541497794033398840800454708822016 776755206528116536638172934701056 1199339864461391497444903629094912 -736157171208456672647129427007766528 5064621833934252525232870605717504 4076938777814776086054548843528192 -705828360593204125479088349025140736 5474821832046042493208397963329536 9638364247329208146377670213500928 -7334913647853600592957764964188160 6621842970614873824902645347778560 1647994959080858021140648192638976 -708237916085320654945504521231532032 5672158154568738786445953085734912 7061550377908086759079670894821376 -146252014079539658662354238396432384 815584537841440254530371461316608 5701883634987301716103860083228672 -913777671926292588706211726694023168 3452304862911551432043202261024768 6095654459241775971890246119849984 -133455255838760412987516884428521472 1455438442971366893749866187456512 7174935301721292666159417373229056 -608365302025610430496613069859323904 2573424669549232926504120129421312 5018263315589194866752678348718080 -8001781345794722247299223647158272 8437810770628682809486137245040640 7605645311762287474601566945673216 -300390402080047343658019753417506816 3950056050352376897817130339139584 6010370292055240480721442126692352 -423078137408417300566521106860605440 9280138913655032236197526890348544 9210383789481402949353631391940608 -425861666729611267121654123116625920 964003317015351522180085307146240 7149611765660156587788260220076032 -387559619430108950496034559467978752 6137179483838638628273076756807680 2822471467415833435270125088407552 -51061988602947050842129457121067008 1533904189900685759242887000752128 8789810453498573189301250723676160 -663421892496868498779538196193607680 1600126436862277225202623866470400 4171618014420167991522564725800960 -768765514772707293438099338685317120 8049275900058707740692634289569792 3406474725806327328854222290550784 -670493012196289927380525586147442688 8426542478230926993076283125006336 4385396546531193129520990231986176 -154751623461462333834550071133208576 6648471346218112383600360075296768 8525173779534432005686812425060352 -622714577152273360020067569822072832 7783143674829936824137818879033344 7030948328486758843388841517121536 -2543894927031328084055179900485632 6635918455670926903529461260484608 7270285992148608621593480199667712 -499759897562214839202917861067587584 6532603117428926780343460867080192 2605915860586817100597685469052928 -211739154035926559518615878869450752 1969954230974259590000392613658624 2392422842703418707361504363020288 -802181063089281117021541794226110464 5526145012277995688769809431920640 7719637133813902922715013599723520 -83112459411359002917142978669576192 4424832013112683967115008141164544 4834291375158980245131190001991680 -954413146209132244424670782630658048 9516924493751447410095706066649088 6078090804213187800415670668099584 -376178691743000914390024190724931584 1720594639352105643047077915131904 9031135745391517534692059180433408 -750539433614486299961705512791179264 3719913153273493598907006682398720 4898170707923286795239716821139456 -96877096034079334349174004753891328 6643660838474430029899435161419776 35516559184021291502927872000000 -21832804890191989413384232254832640 4287965061818979712040130366668800 8650634500724430934750461939417088 -375404780517373428127775941713723392 6192597891942930239247392224313344 773924258790238480790838923231232 -774160719437565946952061705428926464 573912582521849695854486643277824 208075114603648177635102463885312 -34957526809559897037380464603561984 6369898359149265615431946848960512 5194144467483763563389497657786368 -126692320361355923118247548058337280 114046897033583530154239333498880 6114627196926770576133369536446464 -961276749411889755790174184460517376 7316479971586732840881930018750464 1437379937132569258650022214369280 -571680494961336883265988941144129536 3436195211091469284475770635288576 8691906113883972455031056113860608 -370176354467622574123799744765493248 2422989031498828436820264065433600 9733285267205566523539746631712768 -906009252268742817803309561906462720 4104295650204641919263877699207168 5594422576058085764111901264969728 -65397273656108810735679275454693376 8069217018886816856849139760103424 6361820810499994126687071155257344 -679372944524355945570570150231408640 8023283148331587603744201486893056 4294733449775033970559226025607168 -41089411989100311716155469743521792 3415302937572880807999052409995264 7965876682162598360901901692698624 -943417167047283338480338472546598912 8981846467856208984131819421040640 7541920306616442565295717897732096 -583875717818039115761942685588389888 2650041769857292902959916330778624 9506477391470748063258213202526208 -711936027678605519185756045554221056 2632341194847151904692210377949184 4564915793430742538134967891787776 -590094533221289366350306345253601280 1729393723275047305204353256652800 2606732314981221650611215345385472 -994426401014309693721476223257804800 2419258252320652648064610314747904 7912995608663152351361030791626752 -511010480829221199653834166498230272 1274455979380557531121998599553024 833111317572127715952353641234432 -679798177473050045325539974146162688 8367810424671264342282017255194624 2218139102788499180253321365553152 -538018561330344874918593023512150016 1848960398117249993306497399914496 8993026992987696458659892098498560 -852133998629707417056139544323162112 915572464055147072741795703029760 524187357666370540832421931122688 -457526871565145061503864701831872512 4201087063960750488881795166109696 4531529064632262073431256324898816 -60236607642951198496381515128111104 2241817494084999205652076754370560 5103341512584300391335151441805312 -406706946199902036608645536801619968 5900256604525862826551260305424384 3353308319263525642894099594870784 -260095822191601332688681897465741312 2850815898518922622791169312030720 435165019955099383357311306170368 -814583503400273004830175207121485824 9294252253344242350602495195086848 8854850859477897398317309816209408 -43130613263578691686177410283208704 3206296756115858512744280116690944 4395458645663079997071045632720896 -506237514191945819306935948706578432 5842598300406417530242944915734528 225596556907034236530583362600960 -401574622406682413689803123940392960 9470283305695966373490949558894592 4687703385217139623259611160641536 -75768435701258472030833033034596352 9056541382811593142494630183436288 1140591840061380127919057989009408 -476615685171889446769663453176004608 1788104064912948021209104834887680 1166928641032792748000774061031424 -925279869226400960200941432301682688 7151910724826742121183613577854976 1983394825892528988257493845016576 -808090261494916498807729777878761472 7756597659996405119966788364271616 5242358392860089202634656313245696 -232805680361823302012544767500484608 1836218783749948656883550134468608 8103360537223622882409164098764800 -556805271919978639928536241960648704 9885996867656604534240804807376896 5806702499074675751283302011502592 -433269127614378766827150571340824576 467851141064540883831322115571712 8268711347930116696955101250584576 -672911721011046836155527200885440512 1314451728889239667410952114929664 395041253782068796711414599254016 -753118192684432307261628426372513792 1052551091251267512151900172582912 2100196724956999811973671072825344 -384651561291955465151813145092685824 8317478872601908860212524659769344 5172094969177903666251360213401600 -466480003210360705738891528480227328 9822848886801579439072237320142848 5009948831350634393701261319864320 -393055380024431486001168167498416128 9429288561253414777309366908354560 3162736266096925780936147595165696 -413285239605140528773882341469716480 6660595464270687348306338409086976 2415495104836577336960495088828416 -159408856526818167392651098059702272 5794097046375297883940511971016704 6401982784361498190904854658940928 -140528668775089179773871106291662848 3094809940200542737542400578682880 8840217661183033608518396433924096 -462671219607540014587706790369034240 9203161727245481781357868979585024 496732251967608720608815285796864 -682214927668436092812863856804102144 2199460966885018618696333092978688 4470728517176175682543644726788096 -100288636350558170963748077038469120 9259812823806440470738054242369536 2650201872445681874093098200465408 -351990546837482621074931949699596288 5618333351457900875829675464589312 2990192656084225527574931032768512 -504817907015241681122308387053240320 2661395588312962046183932101132288 2272274403191128051410202093682688 -884520870894019270797789862784139264 6167678779145215413930497738276864 9132659509052876223231271630798848 -894373418979031651882057650950635520 4431446682863949507382036498743296 4645708356339919317087932951560192 -422191708264580356915541468623405056 673204516945133316915447371661312 4706086420436246991816522893099008 -353263719964984554175042613774647296 4150019005187295914000778784669696 2058246174588627178528050098733056 -49171974397913600933933562959233024 5608242021680617082813904530178048 1529475744247636495659892119437312 -180201936582894025757656509096919040 4703255136509315420331402598547456 5358962574195103538815161098829824 -713976906145709147580766173809082368 9551085303109520735913920820150272 7962582209620726558625890907979776 -195197244123369448914984209550934016 7269010490710305850515724859080704 8521710740077805479957379499950080 -337638052831906214130390920480161792 9309052729053051669809387060330496 6974879862367917669280488991227904 -531644199955365209882023138168930304 3813527786300377357610145862909952 1206163580704355550008738813313024 -843114915436210258927521598397218816 1540804313967558382765293856358400 2580737076448831831778198514827264 -842225757842330074332540200038694912 6927217450083480798127998243962880 3659701078694509522853047440506880 -355455397673721712796500176037478400 7908941641808465003329477461147648 9483059600250980696357806230470656 -120525640328945206363882501215092736 9380000642288170353505193043165184 5976722837251164039985852529508352 -92262833976892627927815255354245120 1583698739794862599387578948911104 6458567888542381699613973349924864 -202280252350816910714998929078878208 9892564398618503109553303821746176 1363203626618760967877448079245312 -443868996452978102043168376635785216 8575291044381751316993542243483648 2210065549862729154442724844240896 -688465528982060785816174315444371456 8418695384090375916039067458863104 4033124098126217360554607253651456 -426019152000658612157424489065349120 3730471665941014495815332324704256 2960220134798091074030229075787776 -954095283270314449717469881558892544 7595076818141147874554577514659840 4764673705206492880484220849356800 -191855451458517395064200422165053440 573999439522121400522537705668608 4636319580712529494995784314126336 -776475902485664515384563660570492928 6637332275498199933752620869484544 7041134744755201764138704495968256 -18695513184424879064821618469502976 1655765013012736504652481586790400 4504682779057476525670140699738112 -929314830373951260876613320756428800 3182172074177025097504011751260160 8851521900142230225828097090912256 -256626811814660693170780752442294272 8451191849590828789057255722975232 1447501486203735312398644353695744 -266764668012252580917653116163194880 8492664838566061795656491874648064 4911647399907152334190214870204416 -214810817145463084170166657263599616 6352153426902530080656567274831872 1278262232989567909258253238796288 -361986761721288621558226399482871808 3348601673951126492091134943166464 2292162009763694981600066161082368 -416724614077574041334140785509007360 3596905026571760465810721007992832 3750115488974562695363077389418496 -693317399048674815408277782697869312 9039156330906783842578594439102464 4888898176550548828704760917917696 -29388902590691625622021073570627584 5440220645154079026138317991182336 1152247966311297690823842835988480 -186691855178662339478953003585634304 9181324778512778712612237253541888 3006030421955099880006055469514752 -280119138142717128204908850977964032 2825790198596761992104246977232896 9794194303752988366082508758974464 -433777994772334453654986720689520640 3394035849066876612102730199072768 1158792933393257874548023302815744 -310097097624977239143763299274850304 3102036560027258915741721807552512 351300861981314169247423136792576 -895220897564372011621800813776601088 7763746677747156886753704587296768 5981047538692770807283807630131200 -261311302276734863512506805438644224 848402155569609735940903192756224 782609717297491334166732167184384 -478447903893755546929498348301844480 7796532931079974761455790403354624 676364296899960125564788202799104 -358160186886801884382795474145378304 6101839165298786433022479187312640 7035991306269279474537314406891520 -611897124662525867749260135355121664 4556111151058873117928154747371520 1760055170432659374120125664854016 -301250206091489447040992374989783040 9534702460577362621671560355774464 1284663911124425855641741858701312 -804256079433957255858885681798447104 1450717975986625412482733824802816 1516615564586630244924905578561536 -7783968743112150545519873374552064 4836922595742113130369532162998272 5130955974767475722741273409355776 -667718540512279888618691228103344128 7150029545581577152877951841206272 5626854063850447997892179615809536 -328276120459719949664555061861154816 6435669438554939965362218746249216 7559153758648368427020744258486272 -995939607274220314571298279792836608 3576338660922219908271855007432704 3691251699304080814874371867803648 -272985836618028141988183790179057664 753341070342172747721588896432128 6535575014760376122494535646314496 -992370074087906705331721888702922752 3116449686972916439253832035205120 1393018737881341528619574680879104 -490704619105791582601810124168232960 1551014413193910987834553712771072 2754319903165776769296157934354432 -39584820483087059464101675713691648 425830880317836752100136260206592 5019050178573857818093814196207616 -867968022630574177115903342988492800 1671231054010315188731279484911616 8269926931206396860069790781276160 -823129397744862650609950044368928768 9964829982971372067254066036604928 213399557083098495682066526502912 -314707215626440057896530218393272320 775830866351222724811731748519936 7374497802992790091983675971338240 -226830071109251047239400659303268352 8890168713887182583815593779003392 825307997278004664797625906626560 -231765747291310261310764164841472000 8782103220553737690270951744208896 3653246126191999140556263307345920 -988275768135818171509749512851685376 5645231981215665137146688058687488 9138098246273709303211380883587072 -638131821322058236263051052894388224 9925758484651646680905680651550720 8168754055425838453102078433689600 -577884664551115133733124566731980800 473706049383200654096552280719360 4971127580628240654906424438030336 -161095623886838828712236541074735104 5231094437031500851955022862221312 3716936030629755855356460340871168 -42069025542805066032089955611705344 9311800551602767213054256559947776 8308933870890192713806980900192256 -388134561437461268460338825868083200 76131211123873607791021700153344 4013931847906897031227744890912768 -774149672660668329059413990442008576 5610740107745512153084028665200640 9147748578341992109594842348126208 -629523818757596986883625774565294080 3154230806068457090095980845465600 3019074354878089000091486351523840 -65582365511580206234294796465209344 620681045794315633562922705223680 3506717825681528953641169934352384 -160948108849492361567098304618037248 4958758814868818910840225330626560 389102810360322191630236406251520 -426821691908304511354507064424529920 8928669606032218008214598387236864 9095118628973344353168899887333376 -897792528636425851513837592864882688 876485317270275122058003386204160 8809860245654702984443619371384832 -656325501475498924642885023159025664 6870301624084395717792771308781568 2273672071149767250676453447041024 -425939929599020684823764741528748032 6192641734858616368374640061448192 6372055822273041336928287217156096 -424153268179394375535480658857033728 7770897236700458238305083422932992 2109815436271576260274067467141120 -103197397614006722244760090915635200 4615492277193004146919972290953216 504071728134946931449869820231680 -783055743832270061431336787951747072 4975260538809069387352129476231168 9979711947573035851966674301353984 -613484476116453386565178918338297856 7216823542371120310511099646574592 7051077451210497697570868198113280 -872328552083942643173329314770845696 7542568117317809371847447382327296 7259322899608684831474534586515456 -296111564776614487671464087603118080 8957721440571084764437375375900672 3344642449689517533549259814600704 -934903881044143582828288309632958464 1039245571207266652806764545703936 1579844662808728362484181795602432 -475260844429583851377223412301692928 2092443678060332163668498580504576 8859776917575247001257930425106432 -2349929150721538794077720277942272 3251366114064078433740961345437696 2612724570062622288672542066475008 -372352004037557241702523532008751104 6152384820353499199592297249374208 3841645783193537024544444533178368 -957576975931213216829774137097453568 1826504453308827213532095601180672 951302214509312066545666347761664 -5746625367213187434601718195683328 3474699494202947177568479918161920 4556814426737455282343629427834880 -933601880033300051022346419605340160 8540247602564301237567999646367744 7025038185525736810510267034107904 -31030801813470212388353068685590528 6680553949294151050632362740154368 414961041371437736428752437510144 -474324389435468909733195076308303872 378895887183612108180842782654464 1176611706827934687055727999057920 -496205611948937264460128248940986368 8898155950157094715457673271181312 7474922130935560800158909437313024 -36142734730527852171812074183196672 7467228335927632723061027998007296 3554741292641269229696100847321088 -240015697889622263589410296108679168 4190472685714317408228342566486016 5881036106048811156555566992588800 -775811368205000036453610695858061312 2756817735924729950142690274312192 6974101675574003520157138372526080 -725522370576093618187022263423860736 5232065232858218836358408181907456 9751523260410633976062376291598336 -45618477630425072453884392872345600 8854681762980168372461256258355200 5104719433396514013552428401557504 -359030750137993432153890106889994240 3746127324158439865000199414874112 8912796182086588445049033385312256 -82048401332415369252635420749987840 4558407522066612486018644400144384 9839260146410099676100886263758848 -943963843360361104779107608387649536 9245344531287679652548488057585664 8326722678336932181424375779557376 -129022040957176580006518923213144064 1736261328531864778354372204560384 1113912897917387512587474530467840 -420112915601807627343070477271695360 7826367973569678152847306864459776 2277899758109823155485411318431744 -137168501059056395738037808034480128 288860220149419585542102963978240 2739218054504004663463298446917632 -233277196588244620029758616094375936 1756925457819343655592800886456320 6216019471678427641651560169078784 -741413209362646839839331220478492672 4403760952233631391749037560430592 1489882253572305202633028564680704 -115902053957742688319337623741005824 8885783124105538495101045420589056 567331418624919323469925014568960 -454597452138830543956987168853852160 5544448990154114846351768076419072 9327074640527596089067217962926080 -89164499424704878910029343576031232 2641423422808085802410227609370624 9692592822848239006736067015475200 -56031834257988754538462376043216896 8561985621034712580413086094065664 9312648996672464118399185522262016 -411095929974033941702147042306949120 8175089317451846183877749862563840 282396585351332443340063706710016 -589811342299422490075718902861529088 6236427027292795375331004207071232 7823139085097152006377206448128000 -57972262911243493899904749062324224 5934792182773185156790895421423616 9480453107977858053651836082061312 -158951920018364008624293989496913920 1131572320972477402505847079174144 3827169982712577409126253977403392 -355379581237222496132037539425943552 1567959549526763041165009076879360 5257554716995143709103415321690112 -808526757752008666975563051033427968 6030390159664989897002102808379392 1535705349333872431653310395580416 -170114385492705719791565100963332096 6995124400359218554666273929691136 6974476040809140675018328475959296 -574613412058494788373703086015774720 2419123769993792664395426299904000 9799779866734907419465340766126080 -695016341703738188411594675125747712 5861444427543505456784264950448128 4702879745840756954128726662053888 -748894241137266459308670866335727616 919557193410858182892092095725568 7792618773218010840761291568578560 -796176625488171553001096137463037952 8612782622846045725746715942715392 4954831630433084046306781408788480 -856196960479640230146514441853730816 855895070612289444548919022321664 3493220471784615966424168700837888 -278075311773802647524869531123056640 357411459730592551940323132047360 1737667899807706912904930108899328 -284855886666874159305879107330375680 8197311135851456859657949847486464 3754998738746889669250719969968128 -425877200604468306455162846724489216 5377597963133793504878808296062976 4188164961369044569577450165501952 -91964564018293459384027386705084416 9432083322937761071729311804817408 4821212987726517017311838468046848 -921103541416983461330021284392730624 6198772629255973445045070942175232 1575370862113362803001116680257536 -728888509546342982900948193635205120 2228501012147923404005214213111808 8183456557236521848578536313454592 -834568092849866648708619425210695680 5375975248767191115357043950616576 6565555183751428231383459232219136 -528155780779747143491946947117318144 9217934648597543213291922327076864 4210458944667943017326267905081344 -879539271661969059147419270770589696 4802045102000451268857087249088512 6067489190077345044209301205286912 -924120418146108417345287349302460416 5897119853621304969303709733355520 9027841375651429687972704544620544 -27663268402792556415673687699619840 7496607522841135580797380725833728 6238574002851064579616231072464896 -463914030855047504019945983492227072 8282037864628005139345438763122688 6969684613938604032144740867637248 -635904361178534009654377453245693952 7300196122281300561265076929036288 7062465114761967449517441847132160 -166259254361852352766313905856184320 3961732322746218535481836170117120 4748322807407446074462363816296448 -741202598668188585632853640469282816 5483233105087912067735061950103552 7228617310131275723166729709289472 -409426801259548733487503960315002880 3921222170279024076333621941633024 9337964757651607716530948837212160 -963463519364118105958097358711422976 5154131382459844154747536441081856 5859776757288072378112545688387584 -842378042459964639579387251212156928 3768971389857495879999909951176704 2385560404451069743426407004897280 -958251616471663691989170986185392128 2291493094950037952335236166582272 2759495651649778400831083374444544 -186354423345145540963765810532188160 3258138913763385138058596905385984 1341617089801393797762331292205056 -139660725403254715634366515502907392 3658750003834728206220061434707968 8138842712570627256922443939315712 -171479205213930419545924745088204800 2861719376801560958021948688826368 4321426668000260256301922442543104 -392155769743067066063888349971611648 9590083806094657306808987529773056 143558383373407663811402869506048 -132351230928677175291420561987600384 3529086515940394047204533207040000 2092064678456115825673866802364416 -157781568457157664603349918567890944 9257641632654872544282326736044032 4559205543390685181298884263018496 -141690430117530116810645899166351360 6516160002231218253097845668184064 8361322434537162718270423729963008 -595066198259996846987328795059421184 1884991544495467432600655039037440 6349729063805731690395769732333568 -872388562898350331413522831951003648 2604650680947799323684911565504512 516005464549219841204374814588928 -250153078998645034042176051733331968 1231128736184557003450096367435776 6527335077820390243108476776611840 -167085605825644884903281600990543872 9407547102665979227093543665270784 126248953351174548412963970088960 -548906549242440732250317602483601408 9247265000514347650475241724968960 2526449078618223931243709559996416 -240368056478676638166565719126310912 6643740047769787393872590339571712 4613279714512973110228481952710656 -659938078970441775216707439047999488 9245559474021559496085311051530240 3538973795807619015080902356107264 -501438574487430697292475076643389440 8917486649350864279155762398232576 1489924979014219087775573622128640 -974249061727568057946728706217082880 35387099618287292181940103282688 72677021333243143744256596770816 -38790941334658962463967554830336000 3617651562727116083108155194605568 5779211871991461257725310878613504 -288079474936440892475743056861069312 2634161926347319962632174887239680 6001177692954755832018246408601600 -333283537878067047977199220199260160 9958344694559342522159092270628864 6861040277230559286779256017780736 -982058748800845791887399112119681024 5239880234969902515795825843503104 4519436878947160724793631711428608 -756658442523824432188565900452954112 1105559702430881780376886019358720 3313386513744569892815631957360640 -124114658839599523333229528708284416 5757831257819143525993689559072768 8469213251401073252867549930979328 -198698111256072696703904536051318784 61332858403579957125916611575808 5706216773127568919165443199991808 -429951783230527472907670694760808448 3457398732662438542099358714691584 7960152558247207964083668920565760 -512387005971998584663222284137267200 5994681425783389859617478365151232 8312757843749873255215360349569024 -167676103178042654234757558962225152 8267476026820634778186243146514432 9335323218321601402041959916240896 -49449626678951974085655663017459712 8896774509397161148025441980776448 4841860853030349386725502346067968 -969771497812755864722486658194210816 8765883698101166593658360474632192 9908385406259484002773501120348160 -375983995546256499333460183866146816 3192768452239140376559571263553536 3566503123377340844968231189872640 -856974927425166450323129053550215168 5163640025091393768393754416250880 1455434359708140740982485010087936 -359494475116660583787946311696777216 3718075780159071866125214979981312 2301360575623829419228175940976640 -138332168580724627794041851602796544 2813390502776212904789948793618432 3156227730665414187184141616807936 -441382774958406692495705355669471232 7526205374987395726405993005842432 6436962976962502278719740370223104 -980414330759505188716602949634097152 1228318976890290142163878811795456 9352080148207663912383402628612096 -804695935345931473896526843515764736 9383570175224694000251754002776064 1522490038867444523896117531770880 -268013092131439832052040938475749376 7605680444754693472821986428190720 7523016325998028176443738301661184 -910340716751889282840723812180295680 6480978745428282154729450533552128 4567894095064471091808270389608448 -186727850470133794054112458397712384 9175656319073349607863897227788288 2718608831378859738194422297264128 -684674686437029461957358807368597504 7977761396291080957774720611123200 7116286436314225195540697353027584 -314518875446780207512395973765627904 4255998681474717054905652873265152 7277389883587696265486906530201600 -971989003207556744441060700788359168 3620161299929458070724159993806848 4472944044041462876308130595078144 -280488799540026308058244362004332544 9443979528542291616269796372381696 8856505524682436531731256160813056 -285913016109508257781270575163899904 6825569582598166666486064955260928 7399381293052479075195232037371904 -258383453946915619566395764097679360 5538247559599738795933137176100864 8779611666168198385800484447322112 -151863080702796600703324000404635648 246274667528249838254173362061312 9191640493237348019932593397956608 -595401415677081352198640018164547584 6609461793800179495219790191001600 6267862845100887970692010916970496 -767365780748155474956177873464983552 7811167946854415937312187593261056 789510269593765091320816507813888 -90942756652306345319186922607738880 6130984096822197692630747383332864 9635498594828324793596029976969216 -441303934864565409557505806054719488 1228993976683437811081731425435648 9952883075739985130347536817586176 -434939026159536354698117681374035968 1672112056279208754452785480597504 9872826511474807258080874778853376 -676335463612772151446596500555038720 7607811550826189000644032441876480 1525831402997569431448129797881856 -602174089981580787009841616509730816 5386801111160014974970497559691264 5733289126043115608017204225769472 -325109546337422420986470757384060928 3396589031635619467878935751032832 2328158864346245100757962868129792 -508031537166205673391867262123638784 8803938575880901329425267880361984 1284712506629030433363471093465088 -532884784366406373861243602692210688 6178485507013685581229466979401728 2097300764174302036489701154619392 -639337021556282365766471162680836096 9387542983270752945131065587007488 1423544985840020501605851269693440 -462469459518532367237060227678339072 6662206002573482158159250493276160 9009567061306723238374115270197248 -893301273835162941039120709769494528 8035931384780700689565967315894272 7911743556951480560555600893706240 -25633773015062429279883972038361088 6559244169603034720650046698684416 9941687938338210758000941050363904 -571429252196001323208268182739484672 4149991602782914873883133143416832 1059413948575779167980781012254720 -892301631783167688855346264808620032 9860126613982262718651627542151168 340888043787258162531295352061952 -512177017737160949804751506229952512 7049758938896009033712129567358976 790258029886022237631471977234432 -428624766069341812338600760171298816 6512826772343228135596204440420352 4296904238720703572428998930595840 -537442415049316138494032859025637376 1081295754896152763171629158105088 8763149795524955993540594472321024 -24858016955829168498762696351547392 4242569660915607806991164082487296 1620244368962288819961155215687680 -203309693163348544271777725981655040 7229320034704005433676896195837952 6449065341651759927874671395995648 -825055772684182746738109484632113152 8456460616832877802534266157924352 7589848275721888388444588920012800 -86561025701862233688195195203485696 1912700784608449657434428898541568 848478511190524282732167687045120 -903469782049645381842262329105842176 9641389790554090502865919720554496 534315143669395738713922438430720 -412986520473108011007559922685575168 5169324461475997604006105083543552 4804367143868513158680625624907776 -582912954064080491587049013060304896 1055787495395016652038302926372864 6827704193199330576613571697836032 -188985934725536899888915540315471872 3127153321485170107736895768231936 3206742980741347093637624775049216 -180452838905742190841164980815921152 1132849535484372825955797617868800 5672489060623622703099012460838912 -913005361402695150445072708964188160 2824220238172074448448783820783616 5402981144132332496069830920634368 -376457909295583532385525153306509312 1255698142987887101423789008748544 5920460073445226535644915541475328 -338973326204193130059150578111479808 1580264332331400305246094082703360 1863541949182529511399088619257856 -594140102707398252393387324799451136 3636863243822486567796190362992640 50943207398309558661061634162688 -588102692252415239820910395299725312 1423887091675870695881052283469824 1486129045600294078597172566163456 -316147157548763694241356374461120512 1754986719840351801004613613649920 473486328036899985265089233027072 -886692644015453226493541418868408320 7537810719779761447330891817811968 9339025531272833905795045370363904 -140888142781742261608740834057912320 5568151681531223836536029916954624 2696640281621439775486526839848960 -546312290492796024958507395529572352 4838995636467895110758107533279232 7686967488552495447534142903812096 -450965455415052121673670589960683520 4034908660439117880259823452291072 9150702787102890043442184234991616 -780624049711429099195944901931958272 4629169000236351721323985612308480 6372242120648115797960498620661760 -987417472350569796642472447939969024 4515677169975909563507561199566848 3301081578987564628657849468190720 -122770272469717934075166960543334400 6549300285761947746417442769862656 8606208679872842733917994712301568 -943892728723705134744230480681369600 7428610071292738446824431763324928 9870051300334564197687794220400640 -837498880031342069907334269486759936 1243584725813418975795634765824000 6083888156850434555155719187857408 -239495685349045383426316097646755840 7441004644602786547060428354093056 9592348295333717169560926633852928 -315264129315245890628919654592020480 8560365596024544577655791796879360 3293832564099541561563607600201728 -406155103588829977286622462185832448 5734629479260644259647459107536896 298353206606796421052602978926592 -735246635301174160046065073856184320 2260493777172170130218717557030912 2487777358431404133138192144531456 -948919700931777507710615413646688256 4175909187036348995325011232292864 7341393157462152335791622922960896 -991806152942316255635237353038020608 479509067927774419847117445005312 4417811025840131003120332023267328 -909597923581567234618283807245074432 525604599140202560932262956761088 1143430162279553261663651773808640 -47363330305573187070948473709789184 9004710469439000893399827333775360 2147394933954506434524967788871680 -941812482120081736865525718042279936 4025894048943915474275135314198528 4625242027665004518374105075941376 -374193843050869621409053881743179776 2860023808291300406754481673338880 7611861891878952812539108367794176 -247614357605227017990843169689829376 3211234098481485500613176630181888 1147850292506194649240649949249536 -819700323983654829044734632468152320 9440948961108069444214300300279808 7777490983523707506505765393268736 -193648273368720925825260799775473664 8545027737457533561137059942367232 7935530586239272184541493466234880 -774259811461216947702079265580253184 1847192102840409563953013744205824 27087892319093948956356143742976 -968221448220098524012203138275606528 9680593904570513289384459371544576 3225645938978751159601700911710208 -47019012310927948445756730174865408 2858123652578976334804216226775040 1090454290931620535362887375388672 -767511916990310955720575684731469824 9303463010686235930808950838001664 9727433278578194235289387392827392 -710156842979381472676828272301965312 4963907067303892547286862225473536 4551878151246806715960008674115584 -381069284941257738503193023414796288 5711283839126311141746235307720704 4843224221484295772631122118180864 -735156691385084816674110798229929984 9208630491814481501599351560994816 803708648803666786147778626060288 -66962749628004728016974304619003904 6400432968632521485265412980473856 6014807403137601200153140758839296 -914010175737895650472207783064240128 6686688646021089379932979962314752 282005217737598201438263578722304 -496500254500754684850469776249585664 3733051963875664020675043990175744 3574989637618767313634741161295872 -872028194684842122693141832549793792 3290398710794346168545527122100224 5990548591927225540074115466002432 -545535668757174426606083923123372032 4604083784358066230799199765528576 3886568820388355558124022971498496 -599283186045303436220096336967499776 3441856173330139244207576981700608 9905560723081167741484678328090624 -80143639948178592514074458542047232 9838526088122134808007656565899264 5900604383978067614731575712808960 -235803265752851700543865684542619648 5444578800247025423941957847089152 2519125031342620354909226567467008 -55840916834412574187179621526536192 3533312419153399282959031969251328 5411731202717068533436195536896000 -903656269420612813878092007395557376 7011120228713076025455937744535552 2596668550322122514776612103258112 -552502883142148547948661860563156992 1257659008908391297204998998327296 2338685776178733121847189707948032 -698615365413383383653713509707939840 3386748881244537067101537821523968 3665744256424392944832252353708032 -230134883035267387258647878500876288 9620495358710257772844647735885824 788326609527718229039141707841536 -631571263948334675501270065028792320 7947149203202326110195686966296576 9469363087171440368551266751610880 -497731409701909648678459532006916096 4703730949492133458522054305251328 670887258346106468926961173397504 -584586364080119190333818106464436224 2047675338405556944684289653473280 1930278255204554723701493493399552 -115384370389494936891476698114031616 6917989527649082370505753344606208 4304247698401893888070450298224640 -103627284512024399343538959711993856 5315723277845444381427973895487488 6373176325162991266745077091794944 -966957446515545508628789450841784320 3823840673374008674406967269130240 7031101133373134603711637257977856 -283243044439230994293731552045039616 8090207814356973298968770094563328 6537687687761540372044043949965312 -766312395723271521025395866728398848 6659477142677074501432559334850560 3894246240901820184626332864348160 -660524767189587936702376001639809024 7791395235279664304313146158350336 8475246171900303252886042219380736 -164001814646130400672205328015687680 3123978981463051434242655555420160 1151017116857089464627459369467904 -723379264632107525008777805907886080 1393120756653552959804329173188608 3515952425642826864389595194195968 -721120910474669184216554673929191424 4522452522497334793883215229616128 2857053123682370321111444659109888 -230011015783230059759263788715474944 3952006546927213841848266548838400 3082054042042981949253593553960960 -369290226356035558346519183362097152 4865543926242310276382039449010176 2695341441123306040721155402235904 -500338265929826557650051591988838400 9545029479488885966718296341348352 7966093723309704525858669454163968 -788339964415312619177346718247157760 1221834664761102907921932199395328 2229075962600808054291443218382848 -789258644737806768017692053819359232 3661910832194068002687840533086208 4283334540344430649531574811361280 -84064102012892154335110500861345792 595452778856819673363423963381760 2612526949030128932707865632702464 -40493187369385387087260706070855680 9622897828701020565899553015857152 9752560007175872336836047470067712 -618197520114886509277174836100071424 7508396129701646766988263159758848 5837160295475709990123769524387840 -799153749317909124473211911902593024 4009649985470431503835971660546048 7523568275028347750732908543868928 -216601547635413506817924211660554240 9068848928698537401355733418639360 9081040643298165475614679998922752 -699969214418178017384806632898166784 12143935717471505220502921674752 2138584697796980464100266999808000 -551640784048599630886053176804376576 6913923501346228380095952304734208 1853384369062613855287494890749952 -191896932950673804940520811634098176 2819686700498958214036773956222976 2958955716525113643284010822008832 -367530133168129837241760633214468096 305363752412011492360591222243328 2696445178074336729872271337848832 -376234915969413313505544631952080896 9606722354923697247865342097620992 8167079741376034914150212723277824 -377132013867039121797103658739957760 6405367377493008044610756288708608 4079133753277828450867695994273792 -278839456877195563587094183986331648 842165432361433761655220449837056 986183372442037965392461260914688 -431905986805786963809389991608451072 484652368275179350037483116036096 9018520518946294409253756612902912 -860108890911202232615873043559874560 7582476311424612124874875523301376 3770948278821342962795194963984384 -370999453627474821411369211802943488 746656837664317394377984161349632 6293987329886411160734530266988544 -751045027608185227798064462995390464 1647324105515369028448070018269184 7164970166472160244525546816405504 -136824303140323218376095661427785728 3509766812372231186842778347765760 4999617775274052763806832386899968 -549955234007744650952086152781234176 8505463936493108497058159264792576 2825882242520178714670135490117632 -87790778342825739929981106868191232 5703689368877550792444620767756288 5056397319781175052048170292871168 -235502891793705779269162425840041984 3838805663414461139927837815341056 6136303237211075076060386835824640 -422616843682618751021884162455896064 4788376694383512435150199088742400 9464215038891728612233446441353216 -868745169600096362965593306519568384 6967771044864662254679069334437888 230315005309246899633042422235136 -879528110024238323282973001376595968 4940535911314018778486631076724736 2141336793951432246654156589236224 -436850605764197098382718043208810496 5885601639053833962839388066938880 8161318295462875654713802867343360 -670005257589712812927189801618112512 2610128665104378553820006892699648 5271187098219946004066239409815552 -761034848749609004193983141655871488 823990031412756255916416407961600 9592807962552727388927100956180480 -673049174413924086399067279530655744 1278589869350260619938546566823936 2285840750594300361401178896990208 -499992677565999838331303771806629888 9786070594201389254369873363992576 6587548930041599552545216559841280 -417738847657698233429681479174062080 9915338783171131487167279016181760 1521350108153857156553994135404544 -80738683144409252610745107618988032 1255734477941373712746472095612928 9814068886804196782038890871521280 -186105745403692214160446545381556224 6965573516579491940268656017014784 3677399180713229462289209368772608 -3398461939766899889993580567068672 3696375703861539654817997563887616 7712727668887201111845124205182976 -838460678123184965386970300803973120 2113357147731557472045891986653184 7185922625272567894279861835923456 -203734231731966025922173308667691008 3714670331720587724550065845436416 6726001378110125671088672101892096 -416825798756805245078288633205620736 1439895229731425710018973229121536 3652062182139892786804109401391104 -506123003298947382799738925591035904 7684816609311074560036349205807104 5406859074499210139266536079097856 -284222314790440694602647419932901376 3237828926788834015070049877884928 2042771280872639093433996517834752 -618742159132794522969912757364719616 7732151403705277957222296855773184 2332685738306313933861346196062208 -521845418768501319070790959516090368 5609917876932966747765719032659968 8929090543532815805372506824507392 -400009443327025138647182485472935936 350155709007851262456855537909760 1222558458109391310788275912835072 -536396121211835115902401037132103680 1550029496290740915623720657092608 8493996173298961252607615918145536 -408462577129916400570828595631489024 2040420200148901583817647964815360 5045049164180420274056425921052672 -908200201546921209435196979589152768 9296833846884522469954062961868800 5144671398297328904092367521316864 -465295462984201981102118020652728320 7608156645422584491948488135802880 2865246420735849538778420188545024 -704698178289663701027333637905842176 3850196998866020566548320188628992 5586313065809435573419743666765824 -480778999914887667061096115274252288 7675764873868639159429869697236992 3373549661286509515589735501791232 -60107784639208769302575314248925184 3852757793802949979657388314066944 7398515137889350304200884192542720 -571786168278790941212498734442610688 3360363349682415083607719304757248 3745082102305401287840968004861952 -919433650237040556338471624968765440 4725179935391398745403386406895616 8768775492737529184234140092858368 -10568173734202148225067157576220672 7764848729252299231282921048375296 7256600800122285113554080607764480 -776966530313588584525881908054196224 6227541807898267463808956745383936 2387491786420231665553795845193728 -703055116193322017931280467240157184 4165160111546254975122219645009920 70301901543865394063052992675840 -794578611105406345875538184719302656 4860272048967465423730776085626880 7880569860503989232203659000938496 -302632071443903939569975698686738432 3477628856433993009349024704102400 7212953932087263318708922559234048 -724201365924561370210362958660239360 8231232895788967928526203323940864 2031324727644982203853562934460416 -898369466988446985328670779589525504 417304152015058895069220343644160 5264982778654398200182179908026368 -153468077702278526515388198697304064 7820785528329581873014979193470976 9650703972784740169216031182553088 -726775702756725904975153504140132352 1581729942183384283210617817399296 9951810107584488233590759744339968 -760544722230325734023903337559097344 9211136686098013596905706505633792 8494873050863074149491336175157248 -26654430392716198928988378704642048 6930842613763440172862931858358272 2709639865016858987597526294593536 -565647136696113358321530090511400960 795322096362780663892423320010752 7726585125751869377099380255883264 -670079678815652091127438795375378432 5448222223522069925370054911721472 9165736914892942897437476426612736 -632832760939299362129290936599969792 1809388800547951703412140742279168 1940805131700313664391994339753984 -385124446653541414880175065229426688 9395290600699770600138326084157440 1358136408667650168759206184747008 -48576418548075748926563994518421504 3329230407640689890868439883448320 8705056128923722218040142577270784 -717428919961724148135542529531576320 5304433359461448380205253890408448 4538046191767215397320179390087168 -850077228049886083914814069160280064 8057642897298877709417405816504320 3068453255548387670898942003904512 -768784544023595642713900149538553856 4896893739008308776795303959330816 8829439333524662781964955626242048 -415224473179549576813539179129470976 4827624633001143890859446266494976 9861410105419360078770436300603392 -400621319297761094250068954438434816 8716003708084600482519164496379904 7686259464941609339294975101239296 -524817725167430957134724791829266432 268823013972020647446956543574016 8276666516746452300335898798587904 -437361977940676935337786417201807360 2121677848983298634992232498724864 9361003962234497875156273930960896 -402313792149974543722676292014833664 1262716855319554730468118739550208 8439893116877567202666478374486016 -960243976544551703460958979045195776 9243337521331114939295920688201728 7829069867000133269809845501952000 -4986929491805438266218421174665216 3264003529811044492780042824187904 606916108784834735245681798152192 -912084163481383372880579245293699072 2874427649632533899655186988662784 5790084186981693257430543592587264 -294283387204477681730279715194798080 952326447417488265653690369572864 1358668305198593776180602953793536 -820116971013854761183795036280586240 1855918648890067621361259548508160 2646047523114092294895043096870912 -361205066918057399377101071237251072 8917892811867366373284854963896320 2694877091988835821788327820918784 -814865363987340667922079348649099264 2806478049088964643969300112080896 6244671079780323481816954811973632 -756535125955627952630734847945474048 4159860395928601158460569823477760 611177238634793644767183326150656 -328002784605784606108592164162240512 7223120876038099550414575109144576 7806008511504641687587930622656512 -709197467555448399263097172430684160 4582141141900647897207184780427264 9948714259985651794196729843154944 -755933693317285957326810885216272384 4712072656555001655057807237447680 6515591735410058809839851742953472 -753940286306735721998933014572171264 6844617126992502036568312287068160 7231547926526395039295340669829120 -59056483059491404171187088602955776 5593975804983356640010651322810368 8029161279094440282710204714319872 -79585773787422696605972276581498880 8160090184515683698074109645684736 6826567826927431253083774932484096 -627493047625346966256625702796263424 5450716568617619811794895782281216 535570947111853374383042823454720 -786394764031634438731226707178553344 2018098257234943629913445518802944 8317240469535946357921582713667584 -177892861424969389380548117061959680 9551418642162483279150514557681664 9288224493744654271205741321781248 -664421290722223970332910752081379328 9202543455750862116965662119165952 3829280927222097011048509253615616 -328603021250472957136494411884003328 3518997571614806911417580443926528 5420200943310549979982284768411648 -120395757502310838293489451851055104 4560127037602163398550062324776960 221891241381406551687307561271296 -468104627385219597055990189430669312 4505555226407871543088483563208704 4546172136422344088428756009484288 -631353005237162535894114607084601344 4214250621343396586849041979015168 3126409922337373458222798166032384 -102921946254298814240764292948295680 4379716844265042020605907318079488 5929427925385868624784076503515136 -888500790939164108573568677158322176 8002387018676226531105871103000576 5751196075054784666779511609622528 -310974782888850257757054408081801216 9181689446780354782307797688123392 1563303219053373521051628077056000 -630249714582589204625040500594835456 1954195586859019064630825956933632 5542621051544071849961487182331904 -169416642956226902532062389565652992 3549165982389377931924618826743808 4924268094209166674700242406866944 -661585527264207042225026022464552960 1628640372773818910606978665414656 5175924023106531543358765149454336 -753240682521282302652606556374302720 1887132981523485819864824189812736 9176063046509557678867732569784320 -309120031260041687301404284359278592 214817672037984979968200508702720 5689467802560184692854859277271040 -471987331210274736381977476370268160 1301357639340421461423482359250944 3292017713423503848414917959876608 -394766738286620918301559963483373568 1056476304650854771270649584287744 7523925565763215448234617617776640 -715972537537654294975809545859760128 7555569834463184274007493749768192 9895934600501354762835525116100608 -952847238698916128605503704744853504 1830412457122041670752871531937792 4738381278337941181830640340828160 -166350900185443513720276859672854528 9981263772727302681831316146618368 8440718600518038293728220567044096 -795650661478626807188469516307791872 2918699535758333809954620618833920 8968265537414653709279743105302528 -32183669610083764618831092588216320 2707566796663373996495347883442176 5203844693714696853895769107726336 -545056871641794121061471083441422336 7704154824176066973035552594460672 2441762550089175750736607182848000 -484380253221006717661831493784174592 9807255027190187596172129640382464 5437237262451402560305237703262208 -12257117015225683241814918097272832 539575449637493879434353024434176 224725422028533964739143366868992 -969289456978394091245478066790596608 9735987513691339379332712356642816 6789880109169785080101335252074496 -458477203312191561354476396866437120 2321460074653509735714169580158976 2962545716532550714788330325671936 -898616337051460420695394318909702144 5151422309547216533587532156239872 9785074144380613836117208580751360 -414207668180460074284465567834308608 7100262325970107361236168675950592 7910882756081917667481974267183104 -607224395752546807685829129266003968 8857877076529098581673150636883968 2937801145118266759765271146135552 -34729795338252523230609277833969664 7597200185915590356976093672505344 3924827731211886913450324420198400 -65637569020402136957833490036948992 2567736897453591778934142414094336 9858767430145117527781787865972736 -390482340406975584190958254434549760 3352324940510489843538504502476800 2407928913525663480416401520328704 -9863255044375223260675642209861632 4615069222808715171136033897054208 8423543666636517261830918015811584 -418934983659655690002064833144422400 554481467118650103122960475750400 1384437075788525339811216470573056 -763737848184558081006211279976660992 7442799804992003320988161005322240 8288663252123640588961427409076224 -610026616947085190500452336056401920 3740395288470750847662814830526464 1086537282447628244704594050940928 -994494531708797217996362383366291456 7402261210873155869715142237224960 8550205420192743219132627834372096 -397716754690439664714799281545936896 9384192648202379371102757915197440 4660790413361296594352941138182144 -324341574160728842011588467252789248 1298004519666864614609924667736064 9933290051030254148893823199084544 -983132742003523282500290278120751104 6316340581940317438108545987903488 8836641682502676522409579346132992 -859398584786673620965906058330505216 9726074070165758175081031656275968 4079611769079859994121778367561728 -27657150852592163621909347115728896 8962088815251610095673875674169344 9159724751555508799360703066537984 -931186890026093616793382722427944960 783122505327584923010495907102720 5506939433028380787503378066309120 -791040004443225345582077407815270400 721940652646280410052523439685632 6190039606782364778573245926342656 -926651238646018276800555812768448512 3539076259831483056244331940675584 7268920278080318884055250129387520 -571030775335384539904756056993038336 9079692749834121952423290188333056 345885382541404087173129470738432 -52276767712920941722480920617811968 7257023137634501841768835652255744 7279767065005359361518118358745088 -355763990423607125174762852510072832 9611123913941490862449906600116224 171189626913553330418331131314176 -324082854370054570613373484522274816 9943112658698324823468745634611200 3465093826328408202142678628958208 -175587169077055170166430372189962240 9827535921657855694341471731712000 6255079886832825381825399253630976 -885797450451855219280198338787409920 5896212276330920130265300491829248 563372461483105489090700111773696 -657670618875687253667877964172230656 3852862210392497777835743750651904 2116750478414053061445610377314304 -883382379778974449142915286467346432 578713692546094477385021641457664 5580545485766203503307714843377664 -538620525492734602846611050703355904 3458288733497284937932267763793920 873119060512132982708079230451712 -477535893040630033464889052703490048 3929142849249158509194405906219008 5291519587714203340968279955996672 -281991260360225429195838663358939136 8002754626553767312075158703833088 5627289932944120255931499711299584 -528121851763524800679500947176554496 2132152424341835165132189929046016 7736740578226655355294357942960128 -92072686688924731615044269353467904 4820797192655096283569583256764416 7803834746008078812953764780048384 -291656738490082899644765356179849216 728306649735292766261311742935040 2191832370606810454691956624719872 -559919170257494116285733394320457728 6110673357638844953443914861248512 8560813874569291957832461225820160 -78556799928113900986968647787347968 2778105388198608396524757824045056 1174531939424673214246197057814528 -300234549090857378557401087313182720 8159951525281047724363140032364544 8819392436158058505525177545129984 -402739741414129531731306237411721216 5973803657076686650097701136367616 4988829070560991498121956363862016 -436382696549436930939038550907158528 5404987586116779667533320836612096 3779888702178115678998887508475904 -295118577318882425328429696771162112 7262510548586435756222951897169920 5675158590248805405214333019881472 -633396387952658671822582786331508736 3127508349488805215129060576854016 247179090291872000528853038530560 -583407588541639472872628059730083840 9995689803370279108332800373161984 5709923803330990214653531754856448 -768921909555843283723988419815145472 6254612289527040811385789718986752 3871489488060140306870330068041728 -778196028697754257533667182217527296 506829244599810193506183363428352 7779188977479007723710812545613824 -264183979303014850125805826282094592 4972574723677364043522000398843904 2902149194790601468909438917148672 -683574168713139333313208154555678720 5369879699226625969108339027607552 5080360202924290922860514319007744 -377767337186433862606943615602130944 3762573173362540580720211054821376 3968828132146164404685882108411904 -466929687200063169117739373366870016 7744202093537250629800311891427328 4029194770783287499543093960507392 -604063327760859213581067790428667904 5946779176688845991035678972968960 8122922034824190137294813275357184 -365890402356463114791810434504589312 41335801874886773294172934766592 1116381053331076768324212131627008 -656801089371992291903444424327168000 293604466789032909922108700622848 6032378262223651592242193311465472 -160756038822251732547094144023003136 1739073307511609223781473155284992 5724417278568652903552791351394304 -557839400732315833693423323710488576 2285663684016455128684432768106496 9066358140335651506670729288482816 -266724810987126413546744271234662400 9546539538617817143215967554240512 2651618027125858603736777415983104 -229629765510141046521289264703995904 8640034991106639935635715811966976 5098878053606898784658180913758208 -805616649898651655130584695363862528 2655743957776883984983218897027072 5760516308532396382282176006193152 -851091613911205084451307327665995776 4504643877468020603508578001616896 625619264693409803453951459196928 -755260103854509037775388784323461120 7001096051835391060184895135416320 200379764579324270620321660272640 -421245828665786146733173174630875136 9403778929368364042869489792974848 4506193524378363068266048330399744 -734117510670390479061880977565417472 1805171320219755109834092324061184 8139726126470708983224728551424000 -336640306833916173308038976242712576 2613492674549339233624316157362176 3983401550417521216550497188577280 -496353274052399338500350975783469056 4829902107372421046071054351466496 137172223274206667376481097744384 -841301846346080685826481699187326976 3062864582533671048959600158048256 6398107712325674843241878866886656 -864795730740726313740185091535011840 2637987848720271543219640904712192 4937718644057552399395848770813952 -326829755509998465981973716564705280 2718726779549865372040351998541824 4049949237025418044374715662860288 -947020661455102259070992716004327424 7288591480547156447243688401174528 2782462660653263329556091478474752 -262699192093641237815525784676204544 250270975899734378538771826081792 6489485143350450637612138780164096 -139074903165432763820385761113407488 4346529468043113430251469103169536 3268026755497901059130860333170688 -211218902418593315942541248337805312 9116255135783229836615774845796352 8642056949522544197653464099061760 -796157073153517913094137474543779840 1965048164016051614524899311222784 9717882888391769213796265547005952 -782709965157015126671827280093773824 7226748148892722592938534969016320 2722127584462029871131532392923136 -688130458165896250745453554949947392 9353635665180696493259304831287296 3449407198212498725348990768906240 -721953710736318827711574836307296256 3736459705725497633830684321644544 6316266502864487995589943810326528 -249743605666721992218807007860228096 1943090721999249302638937759547392 5509121133268332229751391245041664 -349831338074230213043883283356581888 9974023125468682235486318540881920 5011456521894131695010874407256064 -908357827754196757834902586741751808 9307422386900210583584514236219392 6078678179535195388753852636332032 -158379723181359834186512625630707712 9237498923094269833005519708618752 7579994406460251359754569400713216 -709372261154765793853683994139295744 7298066038590814203409429767913472 1127406065749287365061488844734464 -918360393440008379699175756235014144 4576528013800541880800175867297792 296657717927233156867625314156544 -300867369846799493306326488981700608 8784155224788277484981424672997376 3331989330221997591710872639635456 -590407948921997993308875479022829568 9954072796210233492325975086596096 1554038851154674853985219092938752 -148918393308325266612306966319464448 887568009694565164835436945735680 5013888789054198889110810837123072 -384074514979120296383592974214234112 3608991543297120860622891048239104 4648666375139419673334189553352704 -171604729443216594993750903527309312 3906221846143217603220859219083264 9145398349576432642044366885486592 -587125886129488273118473897444900864 3832903926471983237802696720252928 678533441841295034191937739423744 -290700563539818611830776515902046208 146364974327057532730921860464640 2717744817674711285782363559165952 -374546313435813283065224718610071552 1003982711948250895896837336596480 7104422118583199592010441901998080 -681395582586360418526472499349159936 8975296316903513906272255422234624 975672677046816068040351868256256 -255885894768418766357136774990397440 6099435637590283948450568302755840 796356706325648887398951391592448 -969995983414946275428254661805604864 147103118930663901529554403983360 1157997834812884370312177119133696 -758473978907180496001892015415492608 6347782550744745626185931711053824 6299013104187384858002272471220224 -460709445921233370501054860563054592 7031643551202113462959805290250240 3302396385669434018535893159116800 -211776764439337870875386523032748032 8956290100991887649263426583134208 6437581633796756332735637179334656 -433805247114233256701445701621514240 861085875014030814558726714818560 7579076330842920351292955964735488 -377083516172879794698424401208016896 5630472359661995497116284743581696 2143600916321323729909995540578304 -345679473886114556393757059873505280 797535874817745548425235693305856 4948307142631687438107776242417664 -236480779209713013871500408450449408 8367985283773283006316425200533504 5972964741604131266932210757795840 -309351315152731094904421693469491200 3213018459691437434486167831576576 9482858213673849557827073561591808 -505416537132948844711649332122615808 6957447703958053443517168337551360 2697411523768658452629918417158144 -229714840470087184435614660092231680 4946991213819433028856498406555648 4460139657837697123546543366864896 -62356334788855166554266627597139968 449952736209932378484750044626944 2128612891125776012624527712321536 -717349277526992064565429164857884672 9980376501242233681471639111335936 6339190608294200688665253535285248 -599710104036517651775373737361145856 8085069997284412299681127601274880 136744638926824665281871887728640 -647175497102663899271066257912233984 6752228515656824948896200929574912 1504445666314751289098959188918272 -470293628008989561696048669396041728 9580148105646287725994915215179776 1242394682967970188803280568582144 -811439697266339316139579809460125696 6110200634770146678090164449837056 5344424575954625943283600422076416 -292899769799229864522639682859696128 1980920700666775208147369836150784 8079908732089417207139714077818880 -81736041619523595065721369156124672 2241519297181679661221915744272384 2249948269555543466798540983894016 -827787462596384391391605596681666560 1006107683889673613043264382828544 8754567358252247376748126788386816 -331047436760573582014498767231778816 4188634741575364839360881823318016 1492746552159737780507886575681536 -403714180229557495690818350980530176 9606748219177943726897373623877632 5091211093031235935271124572569600 -178813365881012603251795924554350592 9588167902167810100540539479785472 5014155790380796023682914626568192 -497657371088702910032486439791362048 4421633810552582004437685161164800 1466923173207381388237556166950912 -915995389872842144321354220190040064 8118896402162757609290996211777536 2104814671214257129215139808018432 -882503636377149271668488419571400704 3329758438877620731008073580150784 4664543188447293088792647907147776 -890315188374217155119420825233522688 1884178235470588955081608691449856 6395091856911113112568731963228160 -416753299804943044384034712557977600 5058585631531179150861562451853312 5767464768693103376127280216539136 -592683868424511654561793151042846720 4178166008651816279316881681154048 3916251128665139044147186464980992 -320264933539443374874089494843228160 3986456296660100370094620705554432 5479466161379082380824319709151232 -886945425062129522656694293757952000 6778668227351968465670237715431424 4531380402921129821539698449842176 -715694024185434538924106091985895424 8187200937065412135094643475873792 2383106265707845391853631240667136 -650377011298747884483985956338139136 5193227492473938269876936983445504 9676525626297864631694947847766016 -545181861442348732842515392949649408 6064093645814197738685942214950912 2789217114821961427821658271383552 -876089156355030904700847527479476224 7105831162850462785392543830900736 7003909000993151371987028140883968 -841107399656250742126729093955190784 9577582849815525281331779674832896 9298182203914694621908787416530944 -333992972501256242570330176894271488 2796597130478264890452814342389760 1448904534479443342746527884902400 -996215387571189971853085517616775168 5099654148092410318651008422510592 5508829527956388689088505278627840 -190621605982229525618406504387313664 4088410017910888125636197574770688 8389794146962062386682014151475200 -42924399196702406036957318225068032 5922126320717950159704340368982016 7158161782423970937489018872397824 -183648978087158385472914424422465536 382428574054138473429075782270976 6821825262681294312094566784696320 -914568971680668934357566201090015232 6490131649288951578468255828803584 3185677610344914200060537847414784 -584784301845709555095740341471412224 7443957226225610263862897704697856 722604613768069396084330508320768 -934591827883517063804058034317033472 5556381212993543776128798864441344 6494902167045322013480417811759104 -652894150732493270528002852210606080 7571690994625581186508617194405888 8913805845770232175846442884136960 -499469128554214115185420043353587712 3533947900234391893364400386473984 3715832299783551178337775276523520 -428984876800849002718145205258682368 8423110311975820866923922657902592 2487131577074003815379390611587072 -157714215568428937841604423220985856 3586456427582483668031403955585024 2552201497684786026598713178193920 -354643937230044947724890196232110080 9024489375055844422120601334841344 2598863462820742500247054067957760 -415232724945703383901599443625967616 7000485469487241549594681403244544 5221810684354921915059762364416000 -298770359934055680440025297740365824 5739481811337483311821409233141760 3512141444020187898191058686705664 -932017859254175259813041432309006336 2669788374633294090333168225746944 6496960303805733120161936868114432 -987238564445739792834911315540574208 8597768894505859124165312681869312 9104722463950251497323962250035200 -484774730941879609731078387513950208 7889285094657669488043411225182208 585425685340260088028537787777024 -679289470571375787709657837163511808 7931616930332581284918279918321664 7084511332612195767894782173511680 -223471321758906495173987467662458880 5356001597315175343471349051949056 4380329422224631591216400455172096 -389584052485323682878383995408613376 3132437095494379138624389396824064 8812001624374900614832110094516224 -229395010936811833882758284576817152 1607460839669695395008874511597568 1419144835991083106894522771046400 -118352738994302291843535872548929536 6903128347836918074909219352477696 8918156353158263224148870324813824 -650957064403943454637730085927387136 1188962515448793779607882965188608 2757980431621206456633178353303552 -973145152143513353615996081443700736 7007371883840797986942360672534528 7855632253275711671515342155284480 -670043313026546012627401609538699264 7097719187319418470245093615861760 4011607072032445835233571591159808 -717316180601871413454888951665917952 6105624159790729185182422294069248 5116332353772121668824555073830912 -529509876066253118813247776250396672 2993606860544157091515844448485376 3528998578251294000961473698856960 -250365557071965220079650332886433792 78472645478844179000340774912000 1004895433272016458783293781835776 -774832606222709812156070576089202688 4001843149885200129933316353687552 9928458691032013107463251581468672 -976420645917577600048005629708599296 7362099177099632720451245134839808 8159507434405514833518842286702592 -386773446418813203417307139692036096 8563606077326693714061956780916736 8976986285523292471650156225232896 -529036044827800044737723981906313216 6437184302475782605815362002878464 8399273821411394541332873936371712 -305647135384446029802986993702928384 8463750025362321755573739698782208 5656284699942992918270193455595520 -957051181067844206476550086693224448 4929970216111912659545000503148544 4451216322795046234750261827469312 -881176014391456004085493631471845376 6393940622010572283960981029126144 8549579870914789879031900298805248 -269075312581732720103448946294128640 1729473277916695185401307962802176 5837836577060637180522240946470912 -32892809025974166164029025393049600 1596242407702057004650530340864000 1949872561706063064908004782505984 -738909502723478993452439723933958144 3561623791102019653723342327775232 7478194932997227201328443553742848 -607673505743020535595191738633814016 3602924595069605370334196466188288 2214419147364881118503558187057152 -50297449846791235795564683180638208 6924084647356045604994148321984512 4774677587040298776984860426764288 -58399403419168838094343468430131200 9328633330497857464920830583504896 2059267619839207387014984816918528 -388812350156113393215327938270986240 3018621383656443121057577578790912 7263053864471757066692167429259264 -870614765938764297941628955142389760 958217174920510553159081041854464 5947748514196126305119172319772672 -245178813865829258589100064070696960 8113173710387313667671071119114240 4241963809633500611105388033474560 -307253721885668050164370469262721024 684481731130557790506821686919168 8190356008925287729055746754609152 -272781610920733922291282654953209856 6709613756965545002169414673498112 6591417883365402805363571593052160 -720252568844864871033075137586921472 9122926082476544038721402613792768 6110548913125209463662916646469632 -509184568284043978441620411937456128 6528587806566781552347634454233088 5935559206571073616052472990662656 -458436993729479898912516357639634944 6318900650847933567837151395053568 4134516362116436503242964104904704 -942343112049371766747989954002944000 1644750010780048399896104163868672 8633538726987684375227777838743552 -140945138218830657759431621313822720 4350806806621312393824965125734400 6251771574148143221344997900025856 -207201471955764544098889179009646592 3101455530699710070280465281974272 4076145228145975498079714783789056 -825080360056212382113031996041068544 1439005799921110726732485524193280 2530575092152360074013217073922048 -954526376752403639078523832784388096 9070154371549486792100470591586304 3431699075246817074065403086372864 -137166132371553628042314516084555776 2384687970914526519595241813573632 8274500517174643752433608942419968 -293040590832075711620012802754740224 3965542521479937851089635644538880 1653758162717565284700982349922304 -873114806065849064041049562338557952 3991892892421950825649431637917696 9156037629608120387427308847235072 -915937031590735929544949607956480000 5279048680306117260176626812977152 100818022701382108713728855769088 -671748929290989131397410527836635136 4331094303299468151815959098687488 1773514378001331926131193585598464 -626120094994136128385453333403402240 1517242641253279070359908840898560 2799554823850152247964503807885312 -686721059689777010144484936332083200 2140040969841546531401266720931840 6267535649335235238717049391808512 -265184585027249833012549828520968192 7295971936798501473847245109460992 9117236841300027009771322992492544 -661041334964660872135249055593791488 4167651274487335607218823032209408 1721665043924046667376755040321536 -232167069003066541143672362744414208 7388147025330595454758988623642624 822341807295438218821759053856768 -764789603527332590885713667717857280 825771954968015779011025350688768 8669806009200005772123594368745472 -26428928212946633136379424139116544 1448952258107193225604280092721152 9954644903750113968836087568662528 -756760849272104623855289181887528960 4446244429222983736958705563860992 1954298839876628192056671142412288 -142496964864648889234662733104807936 8179603671450029293141252452122624 3369550510002022170623307235196928 -959834136999681818175639633375789056 6068284700020855170653807917924352 1820819002252238836486588275359744 -85914128381793234155920727167991808 7953804969653235872693714191122432 8805961584305519501505274971160576 -11528264238268634547534394338312192 1197796288716687590522902095593472 5898793671820663228698977938440192 -161571466040130139887261022001561600 8166098427303696413368528486268928 6291863843892128548160845931085824 -546789381865599482156412011840274432 8248233389640632555937317183815680 431436122825136227800706109669376 -642455459592160257834006876140863488 3700342250400448658283508757692416 8430532090605048418007714684207104 -149374035362078525245866068599111680 6168826592399196315912844762677248 7942031484727306928082873114165248 -24911693528276705327783546714062848 9119418655103202059788083011780608 5074964240295954907851863002972160 -808418445845016717056374357981396992 5282878544751366069206114912698368 1847046666329500275321661540007936 -683288742209587942007802657224261632 9486192728406027735304718681899008 2157928048986324504843445046607872 -341521783359762518414049613505888256 7828461581115744795714457643778048 3542635669019259306204554086842368 -318999007410678022012060242660032512 6411407591037637615359974885556224 4928963680931530201588681425289216 -289849771304916488246453066807640064 7377415541714093746514200044240896 1733508722713113905044074375675904 -888788788861680884099483386958053376 5295002544584102056681429675278336 2852920954495286674928155221819392 -753195977095393029191986182187122688 2757349518892447932182707140820992 1812783287093361046800751038300160 -112551480922956440044651941717868544 4433260050645260410254575016083456 6469539712528463772142424094146560 -39648000640948568298283338498572288 7157419643545073784455418316062720 6109220691477522022486398635868160 -591177053917107296700546929116839936 4997798591081257996920752147791872 2079620003775645813884542026514432 -838270278873230870736885432920834048 3731021745288759345230385837506560 7233975777286596723977829681725440 -835647834324854157520132687221751808 1892294326549175785559326793400320 866063081438104530085411559571456 -528622940863891885186631942784679936 1940159592887417313226950820495360 4324764565989858579783039257149440 -730660253565522286318505138627543040 427721639914923669720674062041088 7107893048289247163217102166294528 -791660208240582660142405335329538048 6982622045672670249758296914264064 200357542993264289909512679194624 -722619134618631704829333132692946944 2619483540380561169301639266304000 5773821946796236074742787128426496 -192231043464478335359870859028201472 8260177024125416001380805299404800 1590451040294928066575618740846592 -358506981064568307349347539718504448 5320266721298097221214089833873408 6625955556973538739187312192651264 -525166992623634530485764584166653952 2036068262069135299448179288702976 9707643813274173080046524547727360 -337679331592600265736342421364539392 8049983684177504329556140272648192 5582940814663939337394609725636608 -655959396944519240692483248300752896 7631393724343907013658319941271552 1600447713414658967073249852129280 -735581634501818812879962983358267392 8757359754403573090276605146693632 6750291100911163817209711281831936 -932990162473645975350168437890482176 8718257171017940219228336221585408 4558287042596365324695868398370816 -707026652891175267872352278522363904 2890444950416060327094189455048704 7935065867183220868276726448259072 -566286880873285991181144244906622976 8188535142339017911844358628311040 3138316185673807455292581683920896 -627548437610521860295297654348316672 4864302877865268664524681406054400 6074649564218045305235468674138112 -818760079641537289731364289708556288 2659179029909426376024024921669632 8454579291740169116902080898924544 -46613659109468812074138694894747648 3871981479091082238217969716953088 2714424804702005080965067848024064 -272449443381063201924328327561084928 6917912057606809306371941885542400 362434322049306133915010045313024 -540944719097628943253200857718587392 7075893875910307066493651061309440 3650230943155543288237184363003904 -481733388761836702672361228077105152 8522019733107980605370956496502784 5269072679860873171927213426081792 -660748644292455082290316456524513280 7342967865819143823270779201519616 5994631725014664485715155789807616 -928534469435658203016614397840719872 9939849277327183635721287744094208 8753519233574185828997041408180224 -410998776784505419252640331746770944 712197483004219272457336523849728 1587383697312178439800979323879424 -496554375336492361360379192887214080 4795777723559968712825514380754944 7138469380752083536333689984122880 -584053867237163049842291934230478848 4502003314420856167527052006653952 7705686153183503265993804893650944 -446361328453054303479651332704436224 5797471435927364026555104948649984 7091494953393012347134661210669056 -206660007191453449861320944952279040 7700985272079593522691510559047680 1279120916975439911936226060402688 -61958478397983142957053772841353216 8778369837954651570570485565489152 5221342872132336388739997856956416 -749047193914906145450401060542742528 6643948873239858361696059018706944 2734372518173904071646192253009920 -824939020079612354775457009976213504 1492668302280958360079929670893568 421253395323047349032580735303680 -804054122133502310049065861178720256 1189540520679068824101911120576512 5352891019226213029028132489789440 -380014006927312219636330919417085952 2286993488308245806004689497489408 5474092223890471004457144988729344 -360754462196491918682145162742726656 7863712254997727566293657936986112 6989520392097316198746042469974016 -283947902858504137118698522256867328 1556240606946413539784964270194688 3712074641679146098499190251323392 -878854641102569286216735262282612736 6597052720334858038724255513837568 9143465191569245544086889585180672 -595134750672518593438652805198905344 9915732963017751111848006730645504 6943635417899017976214526783127552 -355480853787083235322660900652974080 8017369347284331148543409772298240 2008250747781617714148281417728000 -5235291830839307572245410189672448 7730365320108509117236740408475648 8623239575650871044845090371534848 -594472424518139373365212679354974208 134021576971435619045870053359616 8998364755184217166963649154121728 -462165952866162659408690604870205440 7301779305726095723894307259678720 7126861538393007040160235694063616 -789387627997830506519615787952504832 4540961746139770980454110288936960 9744614734981832879478828930433024 -240623017441690697985252250756317184 8429972064036211582457022081138688 7564315203423432800970201395888128 -59708118524697600135426387900104704 6676594005108056550224712674836480 3587614610182130957072696304730112 -71740730137403669967337438249484288 8975096717125848460474830360150016 9933540874308727966769691349745664 -135401864302645258404988959921799168 3623399827061722527871578589364224 9012765445051095981164054704029696 -229138870235253377169333078867312640 2707543632527000979979124793671680 2514262451192367763664338579095552 -219626440728751564612172804213702656 6674226864556035277603544357666816 5710745521426824099609970015731712 -322078307496898312441897637677891584 4036908366588845676412583035273216 5820459630322047576120578300444672 -283224229729966876184929506997305344 7631793309082887779911076652515328 5491831250737787054484990543790080 -961825646881158935454623651833315328 9824739753857066186114506267033600 7352482974113206411381118758551552 -865151647271177685079375980573753344 5101292400413346220847451005255680 1232051760837143423871389439885312 -810213646567945006937244408964186112 8781014600880680790766988075991040 5927502915434669551616028672262144 -219854026818883236054833088532840448 5049026035571028718905014746087424 5991650657246217948808252688957440 -68182190357452645152159451259600896 3525301734761055363906190660599808 5834484063748339241386761758179328 -796168461287711238626743093200683008 3730963494258149351334936102043648 1856679064230314700741416662859776 -123210622180442040854515440735485952 98084677335849650374528747962368 4889982858807923292767866931118080 -520502849327213964240356179074613248 2952013889397337457506962368364544 9353737581151120798353265505861632 -181791049139809359817216652287672320 7384626628243090052118502856196096 5143979472903867492401456305143808 -265555209936539334014569899442044928 9377131595768430661272504241225728 1410281511150802011709634015920128 -196926993836525491960191853248118784 3676118519979483963451279239282688 4799057293740671716559793994858496 -410945627596094204897166362169835520 6158488155737494172449477488541696 4638658517500787525545493981560832 -971122974599908300004067468520718336 8279461333686205769104554383638528 1810999064021926184108408103239680 -225071700689163212030360136783495168 5174283482030856927357729673052160 4640796861362273720367298704834560 -912723503575634943471790087926185984 7204261730036266461489056788250624 5532168835910113128317724397666304 -975494760156719856297129615669854208 1034017516929428970641635869196288 5786315235451773792077669417877504 -633589789694702278978069155454910464 2274068393903582160065626684522496 6065141597017011981936148728512512 -332660186207444347914976207180922880 2535539657342294208905697187332096 5996295077171394379401987268542464 -489973784554335346831843275575394304 7384082474213443069631344209297408 5346266895051888640806975566774272 -245758979376786422648325078616375296 2430356039051824371666679479926784 7256737873660405133285472218382336 -723351980855057691165366325553922048 4480374793608938805637841875369984 5213579322252110948544594411782144 -764799046232320692980070339179446272 366009250720951543746983505166336 5473583826080752430485184752648192 -459559451955838738520259407095267328 7409182191851201109277231768666112 3918662971800049692955470207123456 -870167564117393881490527754110631936 1893239291854176313776714498965504 499542011261875509837438803509248 -400022895136719418697700593637523456 5816975185900808410051617637793792 4494705444617461485846186692706304 -959804152372664558953038610046124032 2071559141234594369196608916029440 4291786423548724141048950587129856 -851833479289385844145871585871396864 8911900325002902573763365527617536 3152953958425729613796566231941120 -509351930398147274068958436420222976 7398234712439695235440531321389056 2342177558139338516092368220848128 -966475331305656101648431308603392000 4333483464334600999459696494510080 72384757457046581163992402624512 -332299909394704810246954562871099392 1035352446784132920530469247778816 425096769826875914284560361193472 -701440893790483917118152842005184512 1331882580932032205318445217087488 4703576683233905004200518093897728 -483759875977202336040120769019117568 4226001746544747434733312258605056 5248428572392653956546363589132288 -762924724473485544220260542695079936 6082421418763238680994401981825024 4662250856208812351332919434805248 -126421669102278923580887815793147904 1947252072681151882605800582021120 5060595249565268988060106676502528 -288385444437089568957793142038331392 5605092924289415906310957507280896 8821867244523356375049579446403072 -606959672502373466686235578602618880 2551425337182429683657717351186432 7670080204096769510731278868021248 -557552958421316690087278090853023744 3616683665068808582138468631576576 9225044778572692580886710434398208 -23823179193245792418063035865759744 7207011540488395130377954285060096 8532578221200210056480013775011840 -675747846381739940206168659342655488 2252346567295145927503953547755520 7346424525548782583277252771840000 -678377247166501672135456385501495296 4251912915734462115980119633821696 255065044580323871167677519101952 -301758818687711054987874782735761408 1633808138968052599246725943656448 772022558822954267968092717973504 -451796982387253142101067052175327232 3059654365019369389579897162170368 9355805419535704900897817141182464 -509354952370549569550616295882358784 2092952490285599645339394401894400 6254747309145903184755361165869056 -325990843828035717932188002099920896 3385491228038182368162721174650880 7722905080484866055042281714483200 -460924110040778502364283163123908608 6839652313153236770028138681860096 9749655827663728952225948399304704 -708851103680674978496497285844697088 3403631790741952298787735152361472 7458971622287290256640213711323136 -599114158208732734131635443300564992 3519393742416254108960432349773824 3824219502555392155118816374816768 -697092135244300873275845977481150464 8467079389956298817563241702490112 7957061306628308621358139264991232 -335745076925024382313013237191278592 8372419482873383754570256617570304 7460645586334188774597491618217984 -934398032328451018982738030766325760 3600133476053443664709232109813760 496823586727978977060267250155520 -664409390688972033183045543744503808 1836336429464430950859232071647232 1125534905846883906935372705169408 -352592734896587039680725392723804160 9924422656740599847450235545583616 977419280320572656554305927512064 -449269056883814433845795280989978624 1014254110877779029858419814170624 2912436110151585828734151310704640 -548420949551873575558551633236328448 6261197980334649816906121498066944 8086350321829105147572399902818304 -66383402408111689142014331876016128 5832944080073026533105877972418560 655853872003416731839368391557120 -646971459261726334055120993492402176 4121165301345220739807958014099456 4506821503601982893575223247896576 -657227888362362426669919874093940736 8200080645747642891893065274884096 2119224459396464622933783703715840 -674289747479999161810104484284596224 759100552928210039082862967259136 8514444956198451030822376712437760 -821709104773040452983333685928394752 7916630041081270092362847755436032 1757132852597681981422613695561728 -52558656670196062972971452943302656 1007299700823683299746904677548032 4446167758935893105456391183663104 -426322358695845929864684912311795712 4672164840078807510199322244284416 6549574750556775003160046326513664 -829562422734469347176746076250046464 2412622650484131241071836959604736 4162623713386896217217773221183488 -952329783472330460786815432367538176 5713158641696901062164776973500416 447445298523766018696855389470720 -323832259209343700041225191399882752 2978297876514815426100323273408512 4828939356799904248596680834809856 -707848854939488464998002320908222464 3850179480718299709684360755019776 7134723125135791359889530614185984 -39424499715990718914886053482463232 431175206478029444651248787652608 4482901075728573642367687072940032 -744747929855212997892262711210803200 3408840598380423900000899064397824 6795717094082411798159307491508224 -839390968791647212071665027648585728 3754598087132931057973439802376192 9140106654637689142973212806610944 -281128693848258120451309115409432576 1704248274568564707272520548483072 5708162698297760788788099831300096 -966475142069295350173283203361538048 8974685723793927049312960212107264 3366347832734235382804739168141312 -216027462719490686449489573467652096 8055954795309259421695525548720128 6225010295809732891442989378830336 -299379925337707254469254984662777856 623392737545906085325955512926208 8823789812163253000239287095001088 -350731249692780677374606765851672576 2178095044813684099088204701892608 83489263156672709286612952940544 -75959023417441325074154432025853952 1482296639094366395721756687990784 3212074297194032633196868792221696 -741234302227948478625544261731352576 9801230558807669594826758969884672 1880024458767730557752290861645824 -696646739921366361947612710101319680 7014415100408436893246577667211264 1893477386358788887604225506279424 -708891149637225522568392615946878976 6393176953842396924764005989351424 1838536599559654547370527701336064 -481827429493002349892667456553484288 7422262666935449853382932771635200 4856761207656590452548303981641728 -136626259868990158259663374622130176 9522705849524837593026869277491200 5071491947519221002304288026787840 -26716215500277289533705838275854336 8844164961082578836874952076951552 8882353995761558251733467147534336 -629914970103938261587310214593380352 4969030757195175158404249959792640 96328931252798589587973256249344 -955250428513921480475480729139019776 2396819268449272835577181187866624 477515004714284264070931286065152 -67999792451929924055715229743448064 8327149077589497487364587528388608 9118726729709742953940181009301504 -308248675023049724622196191745015808 9851241670864769525951628916555776 3827913635166318830367704891785216 -676748777978293099732337992814034944 6655638665005506387224229675270144 8698936951680652544208118403301376 -146743639774862037655936431617474560 1891349741927196006885969216143360 9093570437330024535052473033818112 -266924493295659155864303942548586496 7609876791894686478533193306734592 823891517170214071728251099676672 -146689004135381623338174461478174720 4705309234500467319921408171048960 8273130300770966179040530744213504 -167467374737551814287760813360939008 1365856453269455079287542975037440 2058395892413298776153545345335296 -251933389311329826790665711075196928 798658047891520233684728622874624 1287063949565323979432952661540864 -38720309761658633648792095770542080 7163158031332051015566673034870784 8110909861242041303097680202825728 -276912086830484890426453424118693888 8757246423735381551680347860631552 3083412814516990085569208473616384 -306706320062298899057771770581876736 8431488637978234589792085479522304 2463495630285771622064480837435392 -151880946309990354017896033303920640 7333811055222906539719053969195008 3774805691518514223425843013615616 -722824795081399778802003679442370560 4603975074245103811131463392296960 5074548921156303953789605967298560 -952949281544644625952528089854509056 5230216018264841829071353813139456 2148760640313770102378074906558464 -739135354395890463230989690464108544 6892303100962595455821816298209280 4695680643585846346059618451456000 -854470376884734854870261155940532224 8226025948675831169297381379276800 7530353949349057398812791707533312 -659493891451322854848102058734649344 3829253260750335005755933429071872 8619315938790560865622460731490304 -511954533999654414760708053598732288 7054941191431662267411604197867520 9842323582657283460675238805635072 -446072401518651920920835113313370112 1695226687746551965449559499341824 746635553971957457911275809931264 -502205211724118131471783315143393280 7196929331997525640519474944671744 5212508914627756629918325699248128 -305436187312443953260663235632168960 5894258143192721150807100792766464 6181563309934236696888983796318208 -505911250126046865039439094876209152 8196211970305075856601331917651968 6698354085503133119471644307357696 -813749202277644315698876938692067328 5355821687824326801669614854995968 4755880308713757029358485270167552 -441685036996471204360829667570089984 8250799238018804564649550844788736 9428639546986765714835612903669760 -369220371978921983084121968317825024 5092112388895795909479886397374464 4484242551076485583988919189372928 -151350204745070723311862486520561664 2708885669742205604178508099092480 4419691058379621812096500464877568 -187678758206284842899056735788466176 7049224423526100938363041403109376 3824760016969267266646833765548032 -814195844204759984089155453493182464 2021208207439768452830342573719552 2642999769064587700381833295298560 -878347704498713414185640221703405568 3804453835376708961202807756554240 4820359740917320212925772139069440 -857632239707422154909964447829196800 7802545336961912249665569473691648 6089486316572522640617186336440320 -310641242539199247575049313930182656 6394481754995358471547126741467136 5982425279924911689328527155396608 -83791342308321046028926288545185792 9820721432711496356665243790737408 948014910688170666296833229193216 -824152249448763978860032010563354624 4973895137958744083048118620258304 7508074315857264653029882804043776 -139576528234794863202543616342884352 9469856043723783373272774028034048 3505570505225581766301085738205184 -91548136134925022066249826236891136 5244717902573461366559886081523712 5608276486951529689838411266916352 -664453504640779263542288910557118464 6490076836771164869699722352263168 9872635280930740743590496088096768 -813852134259825611371700775118962688 3758134544048721953001002244243456 1556782045440136073307573182267392 -664783786396343249576437824884834304 5055225092883359559898936914214912 7011771978434327342613850027458560 -552019378097037702923778705051353088 1418192077133624953001279886458880 914027531344580393653113039355904 -497873530244275763627100039936999424 1854153488221315053442049488453632 8929422633078316198497684994129920 -149159762295548338036361732556849152 1278238235365482428458182627033088 4155880199588395918557573097193472 -452628154041861026871350062506573824 7135698658133377094669032184872960 5473900158254492688706167073931264 -952552319505304316302449618372788224 3030299108264896416909744511385600 5083527504655169475247161800130560 -829290064657747906199856022212837376 8124380855034261378804547797909504 5235251494189990828045137810030592 -917545096263004449471363195837874176 6455309698750999890419953109565440 3949580538221882141944034315206656 -620180988631823050924605812227702784 3642792751642713658857393181687808 9107019981663663295361688287576064 -650824895080161071357959377042538496 2602179558296442345960843757223936 8935666127457941925529516746211328 -384510770009320656698384586563911680 517041456053241057697753735364608 5134329972875080887138993263607808 -687475775888219584320806436630167552 2545894084763024317972133533712384 6307312879458697607507179615551488 -547310975932829854544568113753489408 7282498299592026905565298513936384 824609328340798672801989859999744 -564774980878238161809494145585119232 9297167918227608247208581347147776 1669263188187710940694785130758144 -484390668793065379054720490653351936 1118020278882442551768218735738880 7201774923583029947920778006626304 -507942821144116420486452344187256832 8349682271418567804412095700664320 7964126574359171948930606145994752 -702127487574461925671263102369267712 431534609439975257160080301228032 6663167852037240904272975709077504 -820504081820338605773436655669084160 8298440481778305597002336390086656 1372843228577037902142056454684672 -372260175877624301611359600946184192 4504723851181831031484128113459200 2240732850216766828053912170266624 -71959873235145006215430153412018176 3241347900893632268941250424471552 5215501900653442614260374324641792 -771383124720358586986617779183943680 9165681603472295885433496947130368 2266176614046407659416193308033024 -335337221465048727176853197997211648 3968653085755048948406426837975040 8294019935531914379482582092873728 -657653763860861866640736855248601088 5081462177651149094459847921893376 4000951974716975411135806361829376 -554472579192151613091088587233951744 4314497967195630287309902064910336 7650488204820461570001307992850432 -45121751877289588563369708337758208 7291202422952675928056149093384192 9899069868511185233346172261761024 -556773773546752592379044031314788352 5649645125354059418977084148547584 3802377130459863664055822766309376 -706489359172791440914514104817811456 1168059600808131881212166279266304 7708869812542575569406236234350592 -990041552710942804039331850529800192 2538413586880443351228392700641280 394134015733147020612493255901184 -509174023890854992420706196962410496 2173527273652720724954860029476864 8296657436092660333958552923144192 -529448598252543509910400363214667776 4842175275528173640745862882656256 6642722415610226072615299592486912 -850945308827809763386322649268355072 5530177855101717025981286771064832 6787717379292167305826247215415296 -653343565125096541682198940332589056 3889250851660945082990803199983616 2348787943524428741299038100389888 -932885561094181688899295331900981248 9424727856011396264379474918768640 6804150568791664880742661617614848 -639252692196812370421303832689508352 1631330694897526595062744146247680 4223898116603504978583707763867648 -198313881950958248945086235924234240 1069408616926832431411367170277376 5768592406571255982161906527895552 -651863590436387851540953649370890240 6751130513682380310749084037152768 3292271370457741668946751719997440 -521036076895540727979068136022343680 6956337650244467944446550536617984 8971902203332100683894433060487168 -834710931232374013148714110780702720 3469846718478655572968546781626368 6382127455658681637355184111747072 -165639885720540634587651200486735872 119725986833647773703773848862720 8094374215427705468472583016939520 -196682648882220558653659419519221760 8813140778304396649558936542773248 5808126737398195754320934459146240 -660158962776050052427368423726514176 5655842971548066737560018357321728 1508871401088488302645183397232640 -483349798895839593890298223099117568 7577473635243162888180298118332416 951502256330232168944203477286912 -736855626835193211500200416784678912 4984872489713637032155160235737088 7233669108347890833919452330852352 -283624453893533566949676884378517504 3261414819753024825034466899525632 3104314855676597808009008354689024 -214143654705418784316877614935441408 586608802009479557283710815436800 7478775495706233547269021544480768 -949530268037902699057969697130545152 1068398836627548772129669650579456 7390381834171977521643789098156032 -829228579812304828785588378607288320 5945169917125416111330101427175424 1942389586175448263944188559622144 -301463996254623563994090684727427072 7747672011623728683252663994810368 9695944508777648620222684566913024 -877443619539423494276177711949938688 30029705442767712080396051021824 9658490831044681421010360703385600 -189713126995105775949743398336856064 7885273655194360445388393390538752 8309466384543834160542606484832256 -523300160470431534769876768043040768 4020993592637628272210170460766208 6981049196236812105558909763190784 -28458303524764745125779727146024960 3018822202261455564877728187416576 2934190604470032782139446706307072 -158267025381880177067130149738119168 7107321169480017706792065418919936 6356897975998665123610954922196992 -875685124743152819604229577288712192 6423628017461126811972591666855936 3464628774135715223384836156686336 -627770463124440758466006716080193536 527285289864581940404783155249152 3905285885508995629016929286488064 -345928936838281677334188337368399872 7447965128874933120497687342350336 4626751917975300301068300332302336 -975246457927980244284091713741389824 7566780317873583456086317519077376 4015163268385635372933857018904576 -416431056958848294382561908205027328 7538606392437079226064186705444864 7957625755701836401997957853872128 -688381861187513092441175736044224512 1129830487153904206354955601182720 8838353183464143705943684702797824 -521466570463265432245808867477291008 1593948148921396328027915431182336 1052225759063362628227496050425856 -323128599399055467154275929801359360 7925687651243007519785162048012288 2481950750573469583593912030724096 -634131726482639065445330478660845568 1467710430688916594479523663183872 9574503613150827364690886945406976 -121372389263982609736238272566263808 8884404669053737506862229526413312 1091492135251950884443455500582912 -383966042815847212400355448148983808 371488714719845370725548936921088 7203553872191596111688498017206272 -363140949117607134837696055994220544 1102664143854082185363682626633728 8985288324974049606856626382307328 -674481497764808759467415530895310848 314181515002201117220001571405824 2252724172992570499495674196787200 -266155348890312200904678545507221504 759031069832317981463137187004416 445698228631465993913500302311424 -844417811568717101157511861077278720 4826846162221173276684566134784000 1564081761955014956307107398287360 -564652821358653459288177478589218816 3696259723674268764435735012966400 5595834848577984926820424300363776 -240223696374874049096019135810240512 5948818413760379861159467963908096 2350892227373313083287753820471296 -807170992907960069960999070439833600 2678879366324701768332448842645504 5850432303560551182663482347618304 -174353115349289698171631198076403712 4052655618977410356526429362978816 5255963436093153479493054086774784 -58624187293601711331816991530942464 3867074750516207171909370691715072 3256225683930908152914670180630528 -124787931319953181235229289168764928 7696470609520062502577210092683264 1377026819315465211939422390452224 -420297885391491055819868685968867328 4433449185828512744700095919816704 3172949817649954905871382141206528 -32063927238393870469083910656491520 1810130523407098738272609025130496 591271093137695304147772295348224 -13110127806571445716957262832992256 6345641436091928384511618867789824 4233752940625105734278513432723456 -671190220608973223706014741910519808 503315125885718883414544752836608 6545588691862906005054116830642176 -483258522494815297747694238520311808 7283357926128211475674324197703680 3527655256191897858021572680351744 -754888142015337467772482872676450304 4523905157978540843369784523358208 6302543611209789322606433200504832 -596947364154391647754401717438906368 9323348887162957579358117493211136 8354971937013343373538441069330432 -752488282105003053341392880640458752 9432373637300687657980001490305024 739852963660541128190298842726400 -5844352090774731353358827840864256 4113897012190129733969652947615744 2994455247306034104676223438290944 -223299139758923668285173536764461056 7171503060292102712860242280972288 1820043793457433502714539313987584 -463792526770497884405089555001114624 4733186726862026021769733147197440 8690113754966200150662264693719040 -685977204096814948811005449241362432 546207758808733845129288656879616 2687557263062562751566034988171264 -803401046077870825223699899634155520 5066245647460148834111668965343232 813350696125661192069575681769472 -52635365468351087826000757443788800 243058375795895786310454699098112 5581202929022488373011854670168064 -701076899550197817430844777475080192 8647044858428923512773972433305600 8400336377175472206789865952509952 -992071895835012195232829447312769024 94276907099582952727329317584896 3296423727230305635342623612862464 -345352655141039723569912267495440384 5220714874438251706224737750351872 4311492141885268998452451070705664 -649304605607934287513941172866252800 2186098594217824477232081118691328 4501822051016558868431168646152192 -531096726821411997910440997277401088 307718828859252590610243066527744 3744601360206006219870997508521984 -221959498129262149724022413432193024 3501984803398171226983550081302528 9683994100069006018846533902925824 -374563762540052052642715123352338432 9512937337502481956112049272520704 2182405282884958962578118760464384 -621575443182487155416577542969098240 4341946450622899942871227114192896 4934011122660298887970070227582976 -44797091578364153478255789010321408 3752373385174033605834218095509504 6041874796256455707136892973613056 -721511310700518924498492091132805120 2001973959412046138142209194590208 2734677136245767339021597937762304 -501212243891374858094190072321540096 2062967344631590554929068897206272 4762581778605689492350359209771008 -418758461467569417652260502113353728 9894349175848204585138674993201152 6766842993842884242309941680930816 -948627089080046799640661823957499904 965465618784002063591713489813504 1319584105732711597649344224821248 -912012167378425182558135820499288064 7101229997950177136417371091632128 1326911539318146596671257437011968 -856289565370264190190556202181591040 9184618029174893104872692421492736 4551336525463985660810095526674432 -825871741391071191871010705468555264 5983339718978882968206086315704320 6844830427170259558915282963529728 -943135399850860196859129180366831616 9860574837271602924479586282504192 2038865248095572673973479324778496 -880256861130528440645519948472385536 6214559039592350383962167957258240 2023479632168283616442089805447168 -293458851899147593853213044455243776 741760779287432573906638447050752 1681892448169663193489690339573760 -829259781758487880074272263186153472 970433297059147781913235408551936 7758873284603785932484640566673408 -331978848437289901580281661332914176 5890569926742651306674827772821504 6915109938308431292556249564971008 -173056053369846411594450461003874304 8236002690568440103836751086223360 172164585834193853951661504987136 -522125935830604278704535604970913792 310822098484765176536323458072576 503100811035977828440733948837888 -759637970616227023224777894417924096 5690696189784411368316601335021568 3507442283698896444600518275235840 -283753342077972865614874125946322944 4488000040362258152327789775159296 8332824607604486246317544664203264 -483956006024612772322054486865477632 6748458503356753074190481866358784 6310127067362480417208637497278464 -488869281490739345416297941575925760 7249268434367860943377761625440256 5340040102198540285349103033909248 -704221744646706961632576015718940672 385283590089559954701150278647808 8154709828910939010754520320835584 -896970174162241655490609458754617344 7157427803966700654318502102958080 651268957272925797101782784016384 -146653152379886510925007139524050944 1162743059339539450608352768294912 5789459535760084674393872770531328 -420642013379644066396834813995646976 3905860380104774837921185083162624 2937352215718291652737210534330368 -870351819131879780688190483468386304 6764516747439343928191766969188352 1942064405939911668326858072522752 -754189204239753651094002033938661376 3187547224388158036222233450381312 6116947874119944056450668057067520 -397016179112983223822530375212597248 5286936310883219646189006086995968 817548334214670143386662310248448 -949330396027813642297744187637891072 7646263842810004766089767236403200 2512071410092586557608090558005248 -795896894511850404872399298072936448 6900498012944492254582784193986560 4568050864994236333510792950317056 -537552302962946483933599677454221312 8329069668088418333279348657750016 7518278049170480421272232522678272 -344573217389681612920708699248394240 1688108833288204804805933028868096 3832106832280171258813639966064640 -219287220031911836414711478681075712 3123086896028831087037731714367488 8948759733521949373578401038729216 -283446534501011505717323416236720128 2521504584398128602812455046873088 5223259115300647810869438411964416 -864130789617133242635230999732027392 7801827060620996079972042470850560 1682031242490402367623964328460288 -444957863505854057928805631987286016 6228754400809804289954332576579584 733950235017169640533013144010752 -573488074785837891534013649653858304 455134047799474831688120804573184 4158968514649743844305967173861376 -628926109066816724090648304969318400 675628163169857297879240426913792 4693546683839910162783502891745280 -821557682766850482037040041036873728 9785468275076654027963913388163072 6404719388659783175782249634201600 -399143559025484734306187780844158976 2776598985551716484713006340505600 376022442734471979909573865635840 -358449436323642791316414475429478400 1760955741716120454613828884234240 1826264928112480844789424116989952 -55329329346176835801222197511454720 9592654984191103171181921741832192 5248436049674737025225545635332096 -13362794297350846496834595279863808 2003540109798127512403867663859712 1146783281953110540822773692891136 -382900224243787996531695706290782208 3115160882683808581975835074887680 6887530661320657568804923091451904 -810672142522992141984719792712450048 2590197884941818655021123663560704 2454737791962430040839814866010112 -955244493909935242820673113319014400 2121185844138505774748543632801792 480185529092772044575137087881216 -804922145095943535450811782418923520 5555218184160427912988244544847872 345991555250300480441063468695552 -113784862350705588519891618353905664 9487101684185155659740306967887872 9974249871292372961220453558386688 -471193043838914213079753044321632256 9591398422435017763066896915103744 7104021123071163701253261712424960 -567958760583070574593482669351239680 1587193071525172937163808192856064 8651549971316649537101937804050432 -178599576792946245412216376603443200 4005954115210621450991559960952832 5775877833191051707006159327068160 -861950285966160593772945433581060096 9419616415909793264485735323402240 2018905831283235191737364368064512 -772860142457102266319242553748094976 5761987556664004720831583534186496 9520308133571207638231849508012032 -43302992170072728184536121540083712 7795639141729400059501377291812864 7045802304241460918370898408374272 -52145121328227381916081431271964672 5839601026962143513004698528382976 4098434254700592752414106086014976 -657404689041442492639729699627466752 6771563918288929781359858574950400 4051108764381275937202639323791360 -645796564167082322198209931767709696 3636088784184070997077716067418112 4293970782464992512129734579060736 -650000016572336058601082604289523712 1642737393223975054608095325978624 4420916674812515711323477492367360 -801365950238494963923218295007739904 9609945621982860951100190311317504 2213583685823201159835229972594688 -329296253678540618840436651973410816 4376395508059002787043904768180224 1340118905883948071537461264646144 -223921502917238462665677032944304128 9416310052738384449027429751586816 6369485623511849492437902911602688 -667894814577455417670994917752569856 6713751037901691136140419618832384 5639244997544721344865273433292800 -437845813158376661414776624321134592 4564062717044378591031684235264000 2615097539235779449572113847943168 -844876670816443845059149554557911040 5946154843185825778200333093175296 148846962174527528150420709965824 -308160685281383683585825747396198400 2701858278167374581583108869455872 35887020736003182789847383277568 -641486049219025249056815334104760320 7986918082562651522581094490701824 3820909673243453585055477682667520 -137058541529906002040951475227590656 472892569935489463409911336534016 7662886643424522725749443807674368 -193567016431921034045584684924010496 8859722309212822749078965836578816 4577097256904543202565632718536704 -735304505769741256433428320883834880 5268943877255194370756326979534848 3251890131107041512588349922082816 -472176136048345337861970327603511296 1883693376375438711498223105605632 5303943548278631736208606294441984 -389094720797040266217198734039580672 8185005233968849599882479194341376 1458319964959023922994687275696128 -564308225952082167709754928629022720 2269077694287193415912249383452672 6397606622979407402910138541015040 -347007527249868363929293904232316928 8404027665269196956552955078639616 7336494713633568552248449823670272 -52651441907285905619018511986720768 8387262777668656507963721809657856 480294351320748005801858464481280 -711586691671825267301378036657553408 7504547379381375397291984183885824 8918244571781010476372133882626048 -502963789961151682537551383368826880 7869954097663990512785110306127872 2386238423684878870268520851046400 -386928309050495824235425206099771392 5229578916150605625439562158309376 6093156806062894378294766607532032 -604171083303735514151829491391922176 3502344597804576864787750111412224 2356002912213701172686616333910016 -976404384992165521784237521765400576 8328253732515549586377864114077696 7005893591313122362231424934739968 -668133706306489600980402821293670400 1401824755689537857623213765296128 7075210164589680506152970694426624 -329949694872051151120746006108438528 1755949424314699865868170445193216 1696693508716856007060557372850176 -215638223682264091849439559605551104 3759625408741279199216570883637248 4254679091523811470271052397936640 -549785643211975480590483874583150592 6975764972475325086573754555826176 7077944756410262648969326218969088 -764064432297823924901728803992109056 69168562421654201624990480072704 7328813358756831902298112346030080 -841128311161106505662010739216351232 8444108962358666680048668972679168 1705484429165757793288533491843072 -986683449280283207560900218049265664 6064123782224965202670461263020032 4599487860188119393211487583469568 -801167829061494876443135583872614400 5954778455540661983015246128742400 6339737546929031664513602581168128 -239439302711551178167063464007172096 1011019361499803226620414589403136 6459454435446352094488967931494400 -24254093099000774052687991019667456 946226853002839485448109925859328 6810094363454563565044811176083456 -103330850497136242514259735042064384 3645227986040449151405412122099712 3070027125761055215742412077924352 -699717037120941495335083554893725696 8131776529917151778559141871616000 224942188346818647617761798258688 -185649732996980743419564123475673088 5958899197664341856465593850396672 4480707696723475154363951706275840 -290080705400028004470993391785607168 1211449488463518253332646292619264 6477907068928776915369301276360704 -265567183575187225180522337542340608 5888421759984739844462735312027648 3367737291120666549991626917281792 -986633395974606100968498893898645504 6665593257433725117298276040704000 5403543505554072454580290826797056 -668688284122947424873332225209270272 4674016814702077641509050951663616 4171421055004342014621370166542336 -115594248368706532964992262057492480 2802976237024159096138801841438720 239433534491138349798911809421312 -729504562387957492794969384000946176 1372346382155389819648389286985728 6842502964991784964610221989167104 -857489202573203985462219272511029248 9357696372526713974377486798028800 2423352049501256980331977685073920 -396820375098150558201747723077550080 3528996551959738788852504272568320 306773298634547274468414210441216 -495544838341132251242044081091641344 8532434906073616748132925710532608 4684553753586353386578134417014784 -808965806108012845941934175817826304 467240187190609497780536486133760 9375289632778897267493890861039616 -317309190783115550633190048267239424 4672397414523634124211860726087680 3097862855149690982059605705621504 -111120500021968932681873309153886208 1578234215098069519148330241753088 3145463593152755281065165360988160 -189780860201755241348381376220495872 8220187982823751238495295607144448 7488048245048185187519971704438784 -200112227787144505102717999340584960 7837401038951115285622777953910784 9184468002788872443474894691237888 -571104580696785870107760051414368256 357471287300479049271140335747072 1712688534263116886231004066349056 -22013944076435647041757072687366144 73570565086900683887511909433344 4293821982615343477287904589381632 -360269921558684938369355389215965184 9993081257177898819265010061017088 6012925531595653124234554822885376 -679460450897430058235111655985905664 8495047730385020073353186686009344 2711889372064050278738250568826880 -577256140902223154773332923032535040 8679615261814276327524651476451328 1384715135705159539449726651858944 -280165297204520879665042113479835648 1196075253501466397651202941648896 5387595343968358211207728753278976 -658816136622893248062894967785259008 6909348440192277576606968304369664 184790220014224624251519390187520 -399526022012532423529913678242512896 7278707438089809060965772030902272 5368137678118957277749092907220992 -747895171704496288322047191487086592 1973924469331936362089797226856448 6204887241199220021375780285054976 -821939481428968560745928257030848512 5927962034600240034912734084595712 1872950752734005295711623124615168 -115544936218558342031048429273088000 8801410835441829398836283013332992 7340090721842212522821473315848192 -399206854044179153586297168803659776 4406524460033437689969384477425664 4332018806190168318894495777161216 -164494571474928788630729848787042304 1883373944930340248702445485555712 4327410977576834403919568046129152 -366018267368240494785684553804546048 8751959753005977868176440346804224 628489803265114387412715197956096 -435853955469197355601698426311409664 8220330241836804048186941693231104 966948098980893186441337441878016 -502689477244810785961749406411653120 7679232404899217327566573879164928 5566824104633935804235463004258304 -504449398831468915499394389585690624 6864974332587117591737863103315968 3146733569874659316939416810815488 -832408934231945821561195084153618432 1792476209048657753614984245411840 3928961527537040741453220269785088 -579640232450568100334093924172824576 9037855662167631916622143895371776 7485190333896767597974700607668224 -250269338879533185696175527443824640 5209744613177593911198912574652416 6591032884717217721807753678159872 -570691966696552494746699490748530688 953355727662081048232449055653888 7224068435606773985451514301251584 -11486242332169867593336110532526080 483010804818496140530801090494464 8061624585691050218947080731230208 -140373296394483465565530973777428480 6090056938165263012554556108177408 9505102576034721828282300081635328 -626987460836602721449588847112355840 8569351724426538034293390075494400 1652792602964575065678783132467200 -250291191206436687415405591450877952 3770346980473417713494070214524928 2904002607814630311897946447151104 -959121724114598868548927221636530176 865457451177622572829964444368896 9865007682458252609596259322298368 -76083100766155555372744308183531520 386209973424273490059577847185408 9430441842364188623745695812157440 -754357780303142902055359633235640320 4562708904367064365966335036882944 4119006792869346477711275572854784 -950566902638895390395957997824114688 8093335050926454376137583109341184 3546142867661947382749036437045248 -976547648622846280900142046346477568 8677508836506410802262518194503680 8884671642752630477799225668141056 -434185418854249642625580998462537728 7127128277256422402418972926410752 4052194335381769607552739320004608 -392910578722282223819320702701404160 1756135322088077212788623935537152 2897098144126175487196846576631808 -986782823321067248217271556521328640 4456399448811755085557534021386240 3838300093255681709400916924301312 -425009397703666556499052059040940032 3185658217858004978242801864015872 8610188424856568487018757019926528 -925321146912027252693374171399323648 3262085915863018072551179239292928 1418453142380687162506783483756544 -494925004431537585821521740266733568 7997169258569971408852873126084608 6942784610348713207813970566578176 -86478487660786747431851888270639104 8361332010232469802526541329989632 1678910694209258696411165455548416 -632188700800219225747947165363208192 340191829371008660391494292602880 2969834214795999039420390017335296 -923828266812777276193260085484453888 4910778903786292698721411940745216 3642338366595599361022469343281152 -716694153746033014338106198532816896 4879025442936766814389874995494912 6607344334477568062460142729297920 -632591811985170483835177934918778880 9204945511326076867012760268963840 4409504992114083335880472986124288 -36995916048053433265491168823607296 6016976804437293021882730588143616 809752973239224655686852986011648 -299579822957995981228052037691768832 6391311211197993309168385088552960 5959672788478316603077435009794048 -426775427950630297579352926392942592 4598361221563898612779019722031104 1538920755375520175289859454271488 -407203280290150573390247999918047232 9915559780204384944770989621772288 6724847091484606589648208998170624 -698081545440583081943707605320859648 4906382065073101746629194429759488 5431400249911074560915919333228544 -840905849968855883510731984401858560 1587429525077864112045287419150336 909613306517358202593272731271168 -514661987107536142478973649119346688 7101587793692729419904700129476608 9701809229231297464430625598472192 -697984499297060613823235588702076928 8665025083708825710666041025101824 7045189466871102869743630301528064 -889160898537099592910783520385794048 4746981850881071665335433942794240 671675304821385896740215815405568 -987146445683714885239926687524716544 4838932034196131380317023560007680 940485009836776043053990826475520 -748515665189137220826962051551199232 6399648107364122876694730498899968 3019025742507219046255611705556992 -810328659379456401668192756897415168 7546908238493913556893178666156032 4167665172937961822382497449639936 -812651647940542607233776197335777280 3020422587583597315604620970557440 3319858918377956611258583357587456 -493920619019326064787122905556189184 8228485414084919252768403776077824 5404478184396517357261799240499200 -65665794229371656100149422907719680 1805314883995676955755488514932736 1239810657877824103151325641965568 -520023939806072027896774307017129984 7730637628182292466217858438791168 7975612056803990365459590833766400 -78753147582092150297639276918079488 897410652995745997818423215652864 8718847842057642975506511727427584 -498605408828710281530004539587952640 6413673483340729127004599880777728 3859934682180825631865696946225152 -68315082431519150811950976444923904 6209312438680956662834250123313152 7079848462750424124066245231247360 -648115821340324427046886961515069440 9778994056016100911917060553965568 9705584270397321065400994136850432 -278647310324291819730191096402149376 1900507372197292952328047767322624 4135281480895020869001322799562752 -653526444714271106763743793839603712 503510791300114971894921633464320 6093410684118758013917681604886528 -44940438634726879865169889464418304 9554269263320917474565412450467840 8904388992307943293907493665636352 -681063681883781434265548408232083456 2895120670323946927650219457773568 2811945040672352770907661972537344 -539728197129652648523475822261043200 3947231086240415159930360407523328 4126332481096871741222166498115584 -568500417343749913318308676559175680 238728367607104678100930343731200 5673619119290205370216825212633088 -372435267749183946596095094484369408 377870747061852205867709778362368 3366770286862090742467089550802944 -586872171160783174215831584386318336 4628638385497186050116138817290240 378030861859893201265753390579712 -264258809217082085313860735149801472 2712448172096513758350718521049088 3744857299890155012692736380764160 -801291511377442525814934762982211584 6787492573824508312842176307396608 4031983742235640568610329125191680 -137369710303963527338429304130240512 5422404330896970758299039268077568 3808821273021667824703517847715840 -773761914554495727036503756810223616 8162207326119706760632432165126144 6011116492674485058558994780520448 -827072528742603976308681770409132032 7770540962241775428019599240593408 2548107101851948423992826029670400 -780925528118783434302803519475810304 8942032657182341446091963826700288 1109195780457533983943642281148416 -429940779394006605295372620863111168 9508991350074832986591871293718528 8857947385559664575276333941129216 -252054194570855232455365850115866624 7334553395204754584427888736468992 6055151998973464384379864303534080 -892086073312090962948820058085785600 580451859121191134538505950068736 4051591718457123240204310641901568 -955645885087076108024295523155443712 8033911871728512746283903102222336 5624479100670049393373139752189952 -425470051639667517094368546048180224 9032833464517996558049333154414592 1917043229876016736767084490391552 -413625324293428579331207833529090048 2868461252700553728493460922564608 6310430715256328971130515734134784 -804642432219930704369297592623824896 3827293073312762988691598421786624 4246260921381628393119145560899584 -115268836484094065054217844952137728 4928868685032509346214659124887552 9182607903080707116774193555832832 -275775265112722911975675527688093696 4059497795918408698076405298102272 484533523652028584334624555008000 -794628638800883671788903523076276224 1913019093923163965548100828790784 4818941653590138108447527918370816 -392399123425056489996127156695990272 1382796215390064025438420880850944 5300177652974314460655550017306624 -280713856686374077741132521360326656 7424615236658741338329367925751808 6916239298573404263467954942771200 -769142156636597470836718760882077696 3227953988751637573447912752414720 7507582380081729319570201540296704 -224476523007110571209473490451169280 2297489471683806829628885494136832 641949779908854003793808062414848 -464755152813431213621722797494501376 6975588093186578951945064965734400 3764496457874508300557597445980160 -397820062850530164358445919293669376 611833697899209701587608819204096 7354758096765315355749190280937472 -466543853823039057986677440038043648 3329342668381490290143582125817856 9835021684846067494732693789212672 -854671950192453237918589135420915712 1985073333716372452213409806548992 5243988807134599092327495264894976 -426836234205909924793977572893392896 8956621037726890176769689800146944 7712859217708922972833764228464640 -781033207135996730717130735707226112 775625520835530422876712344748032 3156060307403923211067382701228032 -132057510183790642011170302330929152 4457773616444969193821656760451072 1851110572696252098651850249601024 -79286076878176580631854230343254016 1744512409997410049244238176059392 8389666833355935254998205092331520 -799039693118359226126953585544527872 976058446218280371846183663960064 3716619681589751085712461063520256 -22451157258860659801578537949855744 5344678354261114882421184733904896 8385701884879178744742917005377536 -713268652801327856430851123012698112 6457273812842816996556064293912576 8501567484067962225472667188723712 -118477318116853022431462477852049408 3784397864596538833248200144453632 9384946032960410669678188340183040 -702045401001631571108093690866827264 4112088703954886285911206230228992 986381007288382538483563063410688 -158983554722611364818318837998944256 773643320623872612244555059691520 9676381885994284781049466568310784 -237045902334167988877137054649024512 9941371517176534302585214128357376 4467581358536809351772207400878080 -680204945205122318339274312878391296 6102712149941184993062714089668608 3558179063443472134739191954145280 -669371545547182639879844456992604160 1721904146995816329353111076339712 3022062543820888149011305127215104 -48091437016858331926054406757285888 9795745696021240566351001374687232 4311711953823705633800974648737792 -758946364340129301031349957571903488 3394371737889545540022255426207744 1996136365085746209303250333597696 -661061684280449883778139784814264320 2742318740627282742580338910822400 9048872319166092637450978468036608 -163922931002040208201143255880957952 3181246736194411976243371241897984 3535813206940369890910289684070400 -595322608863590427977709608572551168 3704079983382556919605134794686464 5425376605859028708619057195122688 -767446603386627702855988382250565632 248910000606512593044538163986432 4942212753610649397697246893441024 -840266139376969725888131558163873792 8901423949031049998454803576913920 5725977228807817234651414838378496 -322489582577373989744665747875954688 6468103285775498497283789674250240 5771781653611161705963556159094784 -909637990703370332458514549110210560 2707154430947538394372491079319552 1915554512747267262418116587552768 -782386823354181777227189525973827584 8396701987803107310028888721063936 3791739810702886033603305760882688 -754709613353360461935039534736605184 638970245633927451144136763113472 104759670507448804997619781730304 -411236942538052470319260202415685632 3410776171071212164605370416758784 8081290862093722317270534890455040 -811903916043756245834878890484432896 1698081287762223977066848063586304 5010888678801748151380759556390912 -664564534727915608441980801880424448 2990549655124008096266602275667968 8488502250586349378073451378507776 -678824967016817919267525688299618304 7332472838807747448895189890891776 479239857677137263675993852215296 -847787546510597496822580886269591552 9694305407550950276099969694826496 3651212742316890298667136930807808 -908558241863167993193631246813495296 6460167131815461778169528051564544 8817526825547343931365140977418240 -497816256015257420443171022625046528 3844769504471910067195706127417344 3473499801936318265958895712206848 -113134295758545683646643266289401856 9827477133335246193049396081328128 9609326813196238897007596018860032 -428339831984536249674198494297980928 2298938352381813019379232334151680 3892867838053012499978883767992320 -160357176893830830282756226155544576 7535888634176460037492860912664576 7387796389151535563906507476041728 -418906464013518997347159957898788864 8682704542397027632489922394324992 6748058765061202809156454831882240 -33632467657873122970916117758869504 5850829343186439780773719693066240 6114948809668205257181029501763584 -750363769123701647566795543978967040 8616594219987183626628293791318016 7789009299444754708159990585098240 -42745186889742785197586412233293824 8431705706753043189001703978434560 8803438567223461798322971772715008 -127804658527891024735837267951616000 5158517893268922947620837036916736 6562573859624624781374115838689280 -432459732531142874639484724260634624 545814549140129005959682428239872 863871292786133906758657105723392 -927487087870273503154651696132521984 3739718342216744713286526856855552 657779916545277719814617197182976 -649212052242645931560739677421961216 9864320477369393860397695097634816 2545352436009113315727524862361600 -287465510610395401397919873306198016 8221626300782167660348466622627840 6146553327872951683640804522328064 -218242067292869349317591147248353280 213763787808047088335352328355840 9367342191498172751458523263533056 -773828273410901432965101883534344192 2870859906547885781174011402649600 6664801334902994134682296089837568 -698253619479751763198670109807738880 7923212112191783303261389911490560 3923379812982870232159510530621440 -967964679073708603811128882357075968 5020536761952653043545615944908800 2543982586474604410060922968604672 -552986072745099434958415096656691200 7955544451752640137425128727248896 9528948263215631952064742990807040 -226742970664297250976602811074084864 5427916738882907214697108315570176 1837302446678726092355344275603456 -627077087160397031301233448776105984 3218121988020743543243012524998656 756460278523718302305911671095296 -583673004486949734971693092919312384 4899806993864687723294808183144448 278109079978629023370137919553536 -276296960240748494553224075435573248 8530762979079710788653698707881984 6148493005349845981897590738780160 -231577449442155075741442974710497280 646280359122176020146595496460288 6341256943865378445831788593938432 -441055142832410791843602897244782592 1353469745633536290499129207947264 4009340636332527651138385202905088 -434580885857562082970321582683062272 1702534262226534090211553586446336 102187448507115402982827826872320 -567665835279056017181151686433964032 1812057419907136471277038238433280 1327851753638427580925351219429376 -519892497837780726280031275763892224 5079483346883056753940223141871616 2854859706288130899564272470196224 -722093788463500351603917383519961088 5062604884465623336681667857219584 5247509115234168297773236431618048 -363979624482821160060563595974410240 2223935928895180891662063931228160 5369662315785642870454739477200896 -929542661221113912671687254860627968 2130358992444259868297572636426240 7045619631668305381789145982042112 -955349944405742147841997368056610816 1979348776914965408186394742882304 8599229610577993423366986710122496 -473610639925440044518829559396696064 6095415290153161212735345613864960 2202510223747928405666054864371712 -416702006185231556921534240132169728 7547245333934275152727558483607552 4372502013714287236859729654317056 -496018536473767257120103375520661504 7575405494402056310456627174047744 3488399897151790277304170074603520 -912239038693359472295613215155421184 3740225402979277888465850278608896 2155289010275443124590731646205952 -62664331154515303231076220698361856 4522313132576774779015884594741248 8335550349759072282415236093313024 -996195068470807524928168935280345088 709171095530184223012396499730432 1717706682382053385500210631802880 -272240281107440334851960003669000192 2768729104905400422867758428979200 3879776150822157480255882201661440 -454796558763194669332518108850552832 5169969031715078722809560932810752 9410714917113567570459805607788544 -933822537182186033862657878284828672 4361502842579231298562343957430272 1368793317357874272625033564127232 -379451408141434288564551942253051904 9269369788717975255193177265537024 7922135091453175982286673985667072 -281113530775971895349399005798858752 6962203010791904286833039755968512 8697662251601732551544928374620160 -991771456085297568052243556407967744 3020222490507271335894065835147264 216915915401345664008558322122752 -838756555469021264114357576702885888 9276528368350185194952794933559296 446992694171289167677393110827008 -376922752522496968740654678108274688 3396073561802129444110339657433088 5258195907029220858503752581120000 -772763142318900047330509992004419584 9743040832484848107381343691735040 5197727951073907305351852136071168 -767840527968588149130388274413568000 3031261161884017043152286311776256 2153831287620465456654962904793088 -946428193978107724501001147189821440 7803334692856671759714848675463168 9740301440528966411306919033569280 -470294169497999654829015233382580224 680002088000205413849303890264064 9929930278405089120638165435023360 -680064090282053805698166581853421568 8095504981809121653191308962955264 5169733325714575812277083532427264 -892956200275078775060784705993441280 4400287237922402133024196110843904 3790159152452505233396986252623872 -42464102263234416454437594625736704 285164013700557278067800645042176 6284320147391895700536251383808000 -855839245730775322040320180631896064 4457078788226485964460396180930560 371288508580918351119065968279552 -516713518073319646387697156930666496 6173816679549499996140524613402624 3979686108090731507558801284792320 -468288756338582849105178105686786048 4224804693035759952079899536130048 7633338343147030365959286689890304 -866657986080141024648419744906477568 8650087115389734112179538295259136 1077833307986933927993849367494656 -296955935203863119316546257749540864 4250395586531225351071683760357376 2264667829000230943520334481981440 -907565940810425965077657797103976448 6262709238372250185706909714087936 823990152685008383328483490660352 -379884024419886424776088405592244224 5976253261200205650331237456281600 8207978317190385948393983453429760 -879187646863228991136280183348133888 8015074641803802319355211050647552 4834327329429447403946535643250688 -558072136720656249640964536735367168 1893610299855398869868729233047552 1916867196440620614459204057432064 -890143153440349787551738795044896768 9359090233499160010316148899840000 3169223109525353245618247825358848 -681873550675582605007545660906405888 1871840563934314578605067886133248 9275128072395345371863967395217408 -185704061169387857386685769141190656 2364782192286597134932683238932480 9037274500806391723882293823012864 -438507456277645204377873179029274624 3371044156247349539442722382807040 7576431567916892284017958061080576 -306538127846969393211981979415740416 927701254865943018815780988911616 3738523758646765571628818875023360 -20277387792757938983844264242315264 8372679310822635549998830237777920 2915673710151590722511891404423168 -694699035899167980794500119147839488 8446920827775186364785518476001280 3431541772681663659202905217433600 -658622889456856010458071624283324416 5783622911611801476621074419417088 1671767019990633155332879759179776 -563769062704700890693882530207105024 5358364754353344583349714573852672 7609109889369048561416613985779712 -992529543748784101888490969908641792 5969582342134593882478460425732096 8631753641196633835870104183635968 -918309042614686744993378096048504832 6589086181314722723977781351284736 9348534020347814597120745325723648 -490894326270480620257031211603460096 3966440128578144792122976395853824 2578805046676854035944129320452096 -813953458639957997385932694525837312 7529867060909940378206102018326528 1995625830473660092137532356034560 -384397760442496865688471549855662080 7083683147249649139151906401157120 955349652737054493115957137899520 -151836454655593687577244324979539968 3277853048879912625506116861689856 6202132782564160952227015744815104 -247760729859195141955902714725531648 1600115042083188085650311950106624 5441942151644456358610355500351488 -452209570777286958144020511562137600 117986444822224063638275524395008 1586852956644148874598850611904512 -477170161157420380985938090185981952 8307917973327101475848621748387840 8405851939688173177420312532221952 -977554905876400733415307404413763584 8273854758788335399382135995367424 2895621701362394475797409811136512 -90420258108322202996205798014582784 2117680345237279184860735340544 3083760795072143459581748878245888 -861982850757361500580831290556678144 8502072392610074853396858508673024 6284254885697745713943050440409088 -354240520262960196972586303162941440 4641089717785878604003163865350144 3241324629298859350945702151716864 -227995615669807676476458199920148480 8964450576934775773957311319506944 7775140787042463536827048185036800 -939687843237917241070691155338854400 6742708769941269306895075807068160 8732540850607514921007590477398016 -73493122098320047778150460344500224 7454449791007024078697529075564544 403097205677006771789421426507776 -390044882932715061812520503776116736 7507829404083035755573227240292352 402856415555146690025840772644864 -702245275001596441393166547196837888 4111113107992869901171256383766528 8797198027871853498395865395494912 -287016375619594088955522306994601984 3761551066495293281400170613833728 3785365404542916684690056709931008 -597442374344664085575845095397130240 1088579383955043287185671734689792 3130257484510415287828050830426112 -252527786732552053798373654647537664 7786744899193628736759786868047872 3723198673347584762446944919355392 -292327743953601103952714930826772480 2830529780187179071735879012712448 5078717313181861390312533867364352 -793392082509665795094118678283681792 9405136690222803237891548855140352 8442727722701682851370167286366208 -563803838382194807625807925893660672 6431891176845306176520175902261248 1515229257674551162364932229431296 -287209525864847300548885485396688896 1288677250950424775259566444118016 8306114210473002743111129015255040 -889232088464091619795220258168504320 970310981638856792059821575634944 6728061722346361617070272431521792 -968326630964005712303144866525741056 1881097124466703826408444019081216 9519930139481735382319847322943488 -594336673487959503671199011837050880 3137551596478199121319111316996096 9115892341854839826030981747310592 -886782579491260644381393545966125056 8228250019698181006147829660385280 3052571810923846637221376652476416 -301261232778202417852776029676896256 7936626035391598873091344191979520 5125433723966435616772555777507328 -793860020704505137227039673784729600 2754557274693489642270173962436608 1773740420766801621422570622418944 -733324828285747747330205058607349760 9464280923813403314964435526746112 9967782211538880351069117513465856 -138356195448627208281676205673938944 765588567637602964778536780431360 1362864873360211732291762614435840 -464374419799156204003501464501616640 4363820690673254416303336688975872 5970787454711633769187310319960064 -317279067065069379073482276915380224 7377685306122998452327074366488576 4204935825042460357868660226785280 -408711935186213206770191587273080832 2730826133955700725584856174559232 2760697110797193470072109733511168 -382414773304276254420581428389478400 1050015925733106969396604664020992 127854057529706067161875918880768 -703560173608154269702189666550153216 4146495892563864909474238675550208 9514578962319397775639120554491904 -156303696388991888453244815157493760 7627545368520509340014753372700672 6488651912255687194720844273156096 -424667627058050114369161520937435136 8732972244993502930366417789255680 8647970590908409177165820743122944 -552764182792070018371023762033213440 6382903415058089682694331093221376 956697151704225761406515299745792 -635720439096644521414419590823280640 2924103890591361585668775347224576 4968385968986881518806304460636160 -367355351378974647589197015498620928 473885892857203089913425476714496 6180286354833109319110243999809536 -687313894294526590161707981669924864 9458446210789247916984277707784192 8059237745694968124215180662931456 -815628822525484140202958063006646272 3108856909879071368950368377503744 403740676756793106544714806460416 -938750192089889134915891664697425920 3192627821968356365088342912532480 9154483893329724604848521862971392 -623224823570615669983138172136062976 9489368941163134427969667211460608 4310940129890517621281327945875456 -633762519778778202392004779877335040 9973711261897801943195655042236416 1523981281190609225359124712128512 -192439285166497705350880558953005056 7961154739992156715504493463076864 6800497126173859013250207031754752 -905005401445522602031370900282015744 5704797571379027576768711635238912 3946131951374148156040927892209664 -628105566450824009660222442945118208 1668796705303285319943286788456448 5544095136483857485463451907129344 -376810278314795978013023398461964288 2647278896046450973089448247427072 5555732708391193516181076947501056 -40385033873475321710466518696853504 7419243781318790327222759688503296 4060851178762121587842196854276096 -796789331865069798448690813827284992 4928148971895034234164669229039616 8323387468255557025576462569177088 -686924012402558723293506959528951808 7309884691269962075214541450379264 7544083358869260620469533786767360 -465040630072186640211170680895438848 7550842028334876795241827607248896 1202073725596048157953017373523968 -519490602126795637190661547503910912 3297133853911032281542148306763776 5943136092655269164233088233897984 -750139660309292673871339517957373952 2691458752062684801488666430013440 1605465439409019912497645576257536 -16839188308985442994391184698245120 4080898241568476293354342701858816 7083385713316570286671369273868288 -251604253404087793468449744211673088 3324609635336694640656128491388928 5287177845504857292078382344830976 -815472743344767296125555014163759104 6729724131952778078634922592960512 9586620361379718585736256112558080 -285921177549961079143513951517540352 3815121418921535221603291356987392 2978525937862814552045922935635968 -677928429158123639789225233331781632 5564174939121893444669443051356160 1301275524167630138404890837254144 -792053809245037191863365158003802112 5577345609969864067351849524527104 9793559214116457310354765768556544 -652323325020529522879472833015054336 3411612051685054959282670188625920 3672519371057926695772303583608832 -345651421963332482620982079210389504 2195907662595412111145434792067072 4332255984323958963951785912303616 -778043903871205226489863083701305344 6155066518489448214887506630410240 6809783467009286421293340448260096 -982025897547564470688506313116221440 5884649296216123909506644393852928 4969275176171370341218642695290880 -297298145362886353085194181535596544 419801636375308697740925795827712 1884131021507137298289136267952128 -977897327046908841384141367929733120 1624818972654933259824345470992384 4786683827595325692181608742780928 -567814766836891277695928946648940544 7410042008728894613006391758028800 552202035525076271392707097657344 -865131478606790718675095322477199360 6893242934599856843453384559165440 3467356349187931937831761905451008 -834665915419144315410129862313115648 6983016342134929658808124573745152 9822467771917871691773891514990592 -922339832106437287095413715947749376 6310506852908029123629845592408064 4472830192947534612356007439892480 -313073869507001253436411876332273664 4073225562882490751464799666700288 5525040170062846221050733217710080 -722013765871106994291428754821480448 3759441007676481320850574643560448 5290574396730963357580151192813568 -5106698548762789774632771297214464 9137979046991041173470967381360640 6650064902060987804045879621451776 -925223854791729559502439036972171264 1185829654413538838404671146557440 6773044482705077879070113340063744 -713599894698992363775109458219237376 9962369350937932595194694104776704 2179427082604804874712462877786112 -787473383278624109558948250358120448 3212211561073662739469899315281920 803563734166707891961756024569856 -610451701449660139768467646436081664 4479378388282130909521797089067008 5916022102695661992692597018066944 -644291222455385742121376308067827712 257471858849282901797702842974208 7907017675761154404552009865756672 -612304719270620741599496628638580736 1032886061303643116721765387075584 7899440734421552834944188540780544 -741727048626588647959773370688471040 9622312131271863514458820903436288 4153389293005671046641905395826688 -522000745753658795825951928909561856 5023016381214687236236416154337280 3373577659290711108210061637320704 -995891169850614928715211203160309760 2485190352289738531911729338646528 3414389046572350418112466766528512 -585315154901582633062205819612823552 6444196271263704069287898068811776 6251534549570922651529730391539712 -801652151482861783017583159281713152 5597805176630571734397876594278400 1660712363959686071064773384994816 -932019998829884061498144939132846080 3408042960791784095639776310329344 4403028785151116517728839851311104 -200283416059740335444408781202522112 6374744838029678486449729753317376 4977935738998192812615220538114048 -799770932217931902665400741741461504 8206369355426867786091626913333248 6794319105352772663777396518813696 -91534384672984505307855254064201728 2674542780358385729366886736461824 8629279913520165028496651107434496 -231339193667843266149215246290518016 4079770557592154090017771250253824 4652595169846961361185727538266112 -865841763726326481258917072679731200 4242262629764343718751832578719744 2179632174814554422532762031357952 -106957768938225913209982678479142912 6489814607952163124750580048723968 6997998216334142648068341843886080 -848938007894410336017856466832588800 1271537606670289508241595693006848 2468771988373129041371677069410304 -304095719416631624180641364988395520 6113622465412115440029613504331776 8419170649019753641699497952149504 -545039082095067919616280244594409472 6338590998600562169709155512745984 44813702251130427769896967340032 -266354124732215359762565847303847936 5150877411017791986974577905369088 9526900532585833584810060882640896 -10774350845912398606371340685410304 9818788647678304803257802121281536 7573792123947699573113074623709184 -583336895013145418187723310947631104 8595938039256943092978257055711232 8036946332084451561025893742673920 -636304311604990360910028940546932736 9487623349508950527744158981947392 7812173014558122571441096846475264 -669323703288058321900649143127244800 2999066190608778075365816221564928 8880387196813930695799991642882048 -409171269827445147592192329565339648 8166329640126047912171418700218368 8749810568523670299616856550408192 -901434776696229952715370757424676864 8053020878539830721086508926763008 7129302751916033472549832227815424 -948511247547312959644060617004810240 9511565154719268255656115246727168 4520572288854894822614069487337472 -352870006859704729535787231373950976 8549226017244531365222079522668544 7118226574304836557646483536478208 -350073042754057336011705174114435072 8752145862643742588450081070907392 1020899102724711939336460132417536 -846615236025084138100726347706925056 7448738124089086738146095704047616 6039691689900059898160354619817984 -439032369514452584889245934962081792 7626493083800938043027156260356096 2656517510201716068669366323904512 -502378305405809632685673247756255232 3522075474284733300023180249792512 7315380238068231990193225421815808 -391072911525028864666759029229355008 41959129863161949283768218943488 6284211616859004868119567838216192 -105362221238814871523501396671332352 6870831391521997563475157137227776 7553731027604614587322821527994368 -217057424320975717486322434883715072 7300559754354013938024803928637440 3605848228428890010321668473356288 -695880872820287128796467908424237056 7000744067847709000631447998955520 3417078106822956242692033906475008 -974520170745036928475720285639671808 2534017250122524843746708173094912 4244007099288145481907868180414464 -168065753663404772621699450681688064 5357852595655601866891357923049472 5772820627770902711756917154250752 -358404702367286576355946418222923776 3708499393684711900625229578240000 9272906024612140335129658470170624 -720347150920364199568793518651473920 6492267239225369508478312477884416 5212770391237955029286925597933568 -415206122358564825461238598968803328 7116335797841484047739018209656832 6143870258957288823167676718252032 -117881258038107164515182584524701696 6951140662562074619157477121327104 9379597686501423771356835593846784 -107606389331048822923999393729216512 2608383246925439075791616012713984 7441401595240737795054416491970560 -766680858511595827834201816560566272 4864243905305972206519636197376000 8129159114140097577053078920626176 -473834671604313707231385629579280384 3667822441183552334419549183016960 7026835088220451755034687295193088 -95730298402342008642283350792339456 4982622795377347219387131726135296 4502347606209655931903419034370048 -149324295203749428177258655185371136 2019610273586169609432317038690304 5461474971153692666909872994910208 -251605014954737325153563294335762432 6598201540551797700685012395884544 3389837431141362601528190807572480 -252224574212413485973196717772767232 9745139267793920196523928162664448 509326908540131511371347605323776 -570237651752395245742243698811338752 9760570757585063082449690158956544 4170690837435097026858754418671616 -280257326106040327608239438870609920 9771603118304078262538582731259904 3770576863957610171419822718451712 -916471136950548960319419987422871552 1401434694442872313187088614817792 4446972041767116318611183740387328 -501477427659947839798686243694313472 593521702396593953057310246961152 666608762300793837927069240000512 -664760168826440896009586709612199936 4635562691424828661193388553404416 4926295764630567040627294213242880 -213427617783433683461109190066438144 8590085206380417391195266920480768 6677687334324277612930437249761280 -248329805652877864055154078356865024 9939359803781632014724069026955264 5438268301867756151406255969140736 -319773224113502884419637027050356736 6142672441029846547129612151816192 6517541903504870037300581532434432 -122557717565798645808257680233463808 664605932304416823745810222022656 7355930649090744999554495402737664 -208008249919650993241027241719103488 2707531192395811858674590045700096 7824563268165267140909137420877824 -705987094008695617616547130346831872 6084768179784072659842794518478848 6445510801668543352029911351033856 -822159772220231288306735002515668992 5231446708057654976699600312729600 2053666333218055780422110115004416 -923666555135391955235243554280308736 1936257747779564806638053007294464 9467244754367775048066078636769280 -905194907258753009475533859377381376 8561600622386527496857268179173376 7815545872064880741563258883801088 -593955851993183242075847052912230400 9288608844590023769285255034306560 5300431365263958879075342162591744 -984858200289903954269749971240615936 8362492406412770825304107340791808 4639318295609976094670153414868992 -35110776014242477982826579475038208 1305378392035857545403508147093504 6323739887281740978854011162591232 -850719631211717446134692066581544960 4150826201604980597038011396390912 4921725063016877685188492529762304 -297391645070237654607492316057829376 8220190587848861338762423964794880 2784283963177961070660220421668864 -585150549607729667602574471858225152 1819252609321653495631171792404480 4038235295683316393854588835332096 -64940082425661089745107133067689984 3894991150572048960973193844097024 4970786382005973371202797989527552 -124319610352121428825145552003923968 3106431487616321491580546482962432 7941929714604425187393931355095040 -266310184531791312984449865876504576 1133086782687421430142659582754816 1544792236239176381843285362081792 -220619675543262690765445515356143616 8150470678102537592530747537752064 3398931213542779708560340391297024 -110386639967971247377620685828390912 3508939323963081305792486595100672 9719331606375969480640081122295808 -504257915993622696691792396813336576 3652175192037083237363202461270016 6646712904517814103108111088746496 -290593295810481429649056180144701440 2422197170328330064224673370996736 9724547816122439170464107848531968 -451530602769703038618568019450789888 4007944732202262468128489022160896 6143388000230636769154016579944448 -537969490712024571463947292248113152 528515460835858780517826056683520 6487868859309632430386146174828544 -162014176463270393591331346618253312 7257631091986449575614968592596992 9069833139491073437057593058000896 -341052246917964467878896319078596608 6156018279541187203461738267672576 5579591400622999891064301987823616 -24797785469909896288967366885244928 4375993414991871016869749583773696 9775435168702276065208484541497344 -243660286571657827741313097374105600 348507606162785280716671228575744 3475116996243134983896063683854336 -870820091944255747292753168475095040 5870634079324998459837482094559232 2967525638492549311625129132818432 -355933509298920075418868807066714112 7257251254237906412680889092800512 5011422635356774552605278905303040 -708073994131514187968056153394380800 3337322316858507310252067408314368 2418689078285909717774289520820224 -59933616869391867685546728496300032 1635461304411599546270375754072064 9650599023559801892034691224043520 -128705200886084771918337293370261504 1014997035698007254281904004792320 930395480672805412903062895329280 -507808933047850886777853329591500800 8126249541945245075135812595613696 2432936375375616847682461029629952 -839613589774983368425986735120318464 3101268733421775306012807875526656 7692431597229541291904020854603776 -75788292598301415225047572572798976 5961410288780134330758004723417088 5949403366689763960160422899744768 -749211231034481477984511096730419200 5192499308905274275678037462745088 4829560983924238165974994831540224 -213833747715583922795953386304831488 4257289369260251430644944235134976 4510919941256492421108463164194816 -405571605718130204148240156154920960 9365682459038539805314986014670848 4174629471905328493523597097172992 -913901360067191488195927419431944192 1384931438457313575952377377193984 3412417803597153765587188499611648 -877008616168223750973621097321201664 4119236607284281120622644322893824 6034378611519581910252349579853824 -111533546940526409884185379026763776 4283779507753431298858757100929024 3080310581086338715398283739529216 -831719803834033591464496576531005440 1252614618904600575425946213941248 6364177891715912753917376895909888 -477177649992920817649109602056273920 3261053258465834182520329323151360 1904088976947625257060648422998016 -782731433635858625021072504036261888 1915976219322932916579584385744896 9758010255791432323124935522254848 -654613050575262693152550713619906560 5420470393053277880508168825470976 4220883888327012276808662665658368 -787459075757503727930477947459207168 8765468131760398609383437908312064 2955490675352221621862619924135936 -520765956390379763131796073438248960 9635705539854384266637052752166912 1115875500038561705105120120799232 -993418795808376493280709684563542016 7604879139922577057405862466813952 8612557445852604713186885061574656 -854345512375171247643917485881688064 3702737229295278318454311229587456 951754256994496883505323778768896 -167906089551087533724378632036548608 2676765502123896990238331853864960 1376534281835283025614253609451520 -405385333963854799286416152876548096 1015911113987635445219853504348160 5662386871755051526217872657350656 -153110164057026622944917920843563008 8440235991788484677484486445760512 3506207378609165796926297051496448 -251596692038259088115733469526491136 1857146967045035617117489397235712 1708233685459619561054026600546304 -634080553853647693657408188213886976 7269997188308111856332544678035456 5256385178005550231665880940412928 -172906340941308614907469764017258496 4118555178613563803189612157861888 212099305811908087173999795109888 -544045583973604525004254465509818368 358466292615669023136655045820416 6396881326817713663472094781898752 -547077230266929126720924561803575296 3304548974932038155219368515993600 5266237533692343568608802405089280 -799063741151513991448041877187592192 8120261179785560503300228139450368 8315816192823285421340513443774464 -897753023863949062694235354100137984 7671416263790884693793657419988992 8531329534275490672168208865165312 -423496395715481579107147238395084800 8164089879196997139030347001888768 1719510158197680053046573050888192 -68565279334260218456984508287680512 7210660712553875747014971154759680 9670873670334173571759667507363840 -686219702837510282693947709074702336 4674374097727920134016765528113152 7854751780589793849348348335620096 -505226184963383053454727860254146560 1428278322789552439477076022525952 5982097921445452457986282062086144 -976391384345780312247380942025392128 8777979247125007976736839025295360 2640026261461332111373416756412416 -634746002271092666127660003444654080 5868048734053931198585531157970944 7798510543020719527491937333411840 -719625818109122395746113994220371968 233941418496667559788263149404160 1680664063997850388785292172591104 -82259878778329632521899609144950784 4027928472066297997553677499367424 8752482829102826707763211232346112 -571482260913379934060812791468523520 1459580738959614401550223694364672 2884740716286236803703061222522880 -292184435232408187009887683840311296 6204998065143460325372955027570688 2895812617240285337922302843551744 -8278563810433457204714880960036864 1969704976526036349989957054496768 4160563448981357162001895033667584 -636735207875632104237957044166983680 3242479172282733616106348637847552 1802639025242300886877387924439040 -775778076218567678897911043148742656 6423355201327246159170014388682752 9420689342623735356941731683631104 -692426743193563926889259980747177984 8908791254383958515395568452239360 7433614244182762828617824142884864 -493087146152724073486519026113839104 6978061679672118258532406643392512 9864357193005900788918844085239808 -430564757359325287511695307936104448 7430424794591698452774187677253632 3153468267739693108187739054931968 -463484891547381949035869190316097536 2709440203878959202397455065808896 6194701348408928273199879369523200 -538287902344807289907389441503133696 4596263226849867511148083584958464 9872842658842813693306163485999104 -717805444509710089324415349480751104 9007885335991682304382364286976000 2840821398986502735551426048557056 -226523498934230355757439539027640320 1189503378261372845771479547117568 3898908719319133156081005896925184 -186755237763050177685793316941070336 8102291960892699472809813776269312 9224274807455812475975154291179520 -250326976096295168788474856030076928 9213876116443036226523567986049024 9517984723975843468144727386226688 -395094603969357974981494633645735936 7548908408209772287652282106904576 2375210160042941348303810976546816 -180400006844430557718947394521923584 4982233225324515908501329626005504 1304164914881828908702757881380864 -937149098689370894619663662114144256 2953920057967481492144839320403968 4027990104906113459556818664554496 -778096483360658668042950570068148224 8055493213913709837622376017166336 707891262179325320441071096823808 -63938822196782398917983353276727296 9519536885319164101877531666284544 961841254859227139100910016266240 -851612628764127925652479741215637504 5893446406050505392528574017175552 824650019782132140841570993700864 -73996833228179669580304763498528768 732196700910570958893346549923840 6512556401573066107372320449363968 -83552620190658530081320162883010560 3930196550846610942818857368158208 8998529944946377180085278168055808 -633491047163693385128177418073276416 8849577832444962786196952356749312 708619563967828435985822264590336 -836306848979807168869518197789818880 7498867793730864649206753518419968 7508442117128727085455143994392576 -651260819793095991229136936709914624 4276555779990297286117694543757312 8418891747906381916898333827268608 -221080318439233347270930003956596736 2428576765015645209164392333049856 6629754360928169779933928205844480 -342925365927803411842291683957932032 187782610440089984033293483376640 285014150028343548382850710503424 -348448406769036461117512193685848064 1184992481246479175877671088291840 6822142819787205851088448613515264 -134811932364517518306460203351015424 2947596841575789763081742535622656 2402794046824505979923448429805568 -763971770201589891401366150741753856 1264344068969132526239268080713728 6717536362477859950653837378846720 -580024170383459159356246238208983040 4603226125805616404153841232117760 6272988859083636934860836779851776 -958975341125536520120292118909419520 2222885234528737747581823883411456 81385476606448757095839230328832 -407548630042416529157021268386512896 3570287606756768963784857337462784 641713797631319328800637380984832 -524205911152188565992556967627849728 6848233247612541347285599002820608 1817640970411352394368454643154944 -570390583829977977976644361611378688 6292957768708171892751507910557696 2719885218507868421262580033519616 -455709498933142053923726091851137024 7162366213207306640133426679644160 8625195461856006694190563765256192 -490965292461017292231001236098252800 6177630407388178563392300877086720 7941555591913792575587251568771072 -257344161436331921088174234745700352 2444096846403529738941948911157248 5355312525596154010773755078377472 -870886124158211892242568822248177664 7184013897775479321451535542517760 3897284376210261391878071512989696 -517475146652962582158828001225080832 1779609985849716099873320025980928 4842565846439137699477643969167360 -265450246644399351236285981060497408 6719610520677413886796739377102848 5358118679007175862219044152147968 -778256316924088054067323726951612416 849507025412462934949522827116544 9177159129650847582845957522325504 -936141097520280107220907439610134528 68341724867731434936540587884544 6201430592231020913581397406384128 -7238443958631290551196247912349696 133681078354977692784275851575296 5936918709731007522906705842143232 -47634392547590110534194203476361216 9965552480714030596204494028013568 7668593086478386342797185881473024 -176064579727093763718117042776178688 6901378215458200793599407745400832 9925954840758628053231704825921536 -502823500757289389436111736717443072 9362250750244738025175786230644736 1183396877589172265317950325522432 -864629168207506288839163066783367168 2902919124465923887216452830232576 2726868053347354937918891967381504 -209241874259231738808131706410762240 4388626931712296150472162533179392 5482962066596256648315265213267968 -434930704462802214804384734911660032 2192569006292185871103225459900416 6537228042065409457102051010936832 -934152351824267781628118663975403520 2287258140968087735799472159981568 3660605507562957589173766931349504 -282430601773393173519324449385480192 1127669960095500657719238610386944 2962705329375318689115088651026432 -619659756172332516598532966505775104 6657141710418483123806053486034944 2425371818911799242643096826019840 -859661863451086863850506929991319552 1784203962110591667604261569560576 8260736490431159923675662643101696 -635428713011486848725178460854550528 4193146570379131856819216680222720 1645088739463307342604025871728640 -185953843863985825222369423524888576 2679815991628003839435699933675520 9642125591147553541555837028270080 -602809181124238026064183827040829440 6370444078956751899100579561996288 6958825207302303999047789669515264 -252826432869060592333680988003500032 2763688514178777947652676550393856 1253619516185474496387260870557696 -491607985615068167554281869689225216 1751233848057393616145791594790912 7185149280055510408558370277556224 -197112771487114928454052097336279040 5094579781339244473267000115724288 2446898864348332422258866161451008 -637615598899616002191442656461062144 9559890461250515547239949226999808 8106314050635321532043228681863168 -976967949745095298071018728274788352 3385737171350659742014798049574912 721090769175824072452875275468800 -526226411323424229416363747977461760 2323503353546716107226063642296320 8938516997265703793827594310254592 -449103122635166204623720277130346496 8354703204142688297042492665102336 7064867807378556979907248900800512 -244879937092846651059795921364582400 9393423026761934922594282186473472 7220387309650940448321962327932928 -285080590950700317397971484253618176 7806134833409874801394030850605056 660231215427911336023056101408768 -719273940738524357526773691385380864 9196781343564422991307615175180288 9977285862089420555593311512952832 -820268260219162263943534705524080640 3789006327198836540112254405705728 6259083689352656421348286151000064 -391915202486862820486675254457925632 5595503285563047271183542871130112 3543340014625232033480391507574784 -330208957226803127191493724935815168 6841451041036558340829303371988992 6025427960008075190079584626278400 -330288643676979757048963639904567296 5811028760189292925326538789879808 5355407552175292900540228917264384 -163237118858896507541219121907630080 3916435512863672987550918052413440 6898438351847797803942076391358464 -110160001134710502128409330799607808 4558884633707472107154734581809152 2141613748603946514803201885077504 -777996721026867470892870112339034112 2638064425362812337447550863802368 6326978788992201902795285925462016 -827747817352874851495121407392612352 556918430008030459471014557384704 3352638230116490578895044809326592 -971669734643603901062545773290323968 5310978053318790165822926701461504 8166038900586133630700831192907776 -182458909490069708528868956758343680 6216993402113233487489219084419072 8695445073023086612465329247354880 -116352416537608251409691065251266560 4628087457243678182314060711723008 6705500803737711131927895372464128 -907856572572597215358829949653876736 9909511552085672221485210760380416 2109683222780774878846858588848128 -350531067455610753464654969138315264 83535250583752469307139993632768 1422297594520932000016278612869120 -777155607813701950868892624676192256 7621316064286595533417386172481536 2089190685953534880469218406432768 -8156203549262389793631390884954112 9440929890996362232677549079527424 1305066517703538465591882411933696 -21530336895461929559369096529707008 2166347600669661079385360998334464 8425374830446783509711780732469248 -207418342516655237814527561736126464 1746755922657246811364188437348352 4299161795678708537656890221395968 -846052032414698600015022517032845312 4439868553982138794895730758647808 6036019554801154274378587354169344 -712096153689325831699385065800728576 1483664548272842992177542168838144 3357012138080574327557279392464896 -969159453610651932923621024175489024 5548620499921495632885952616071168 7717708158819318403392505072582656 -343340393240856260438944968299511808 3772347039678462672016504581521408 9542478439827338683880912464117760 -319274519955747888776488659158302720 277063369984169506957175046537216 4921781628601598181540538183843840 -87114707016652926864045097674080256 451715327190302557441271019864064 9756647237340390381753151250235392 -754696633567291615859797483786862592 8965322542248574423102472832679936 7544950388961656804163697942462464 -12419233240727735504530917830950912 6577475571216728475248410528579584 69465449905491736278486415835136 -57046089308301460124758443074519040 5387801919072836010456059788394496 8062944299966620792944775649034240 -869567662860373391699671747936649216 2669437225737524408501072616751104 5166299424863000755747296076890112 -639788147371737323567737576404025344 3664950745144734443322359723065344 4010379232861660048762803050250240 -228441318925011088016337672129740800 1197272365318273484258789484920832 102598030475899759590473218392064 -517572138206205947337069939174408192 2806376965158039998760851681050624 2021620958495237291655384719687680 -379848395486038262373921811393937408 2499692291853764090827467688771584 2658439463771326131228803682271232 -14931085980047304823274712613257216 2317072361883348744471536545562624 2892255205112161520035131153186816 -977132344637335032074142853862785024 3459878424046147302865648085893120 9835793729800881898804174032732160 -294355811010680569433921763936305152 5557797138943067756305145434996736 816553328899479881290771448463360 -481379536051562623881660945106206720 2390375092154939940313828346036224 9281093004903062437034122920591360 -698752581424444115063328504662720512 2508167491146798022477011734233088 6440870942386575802397079478730752 -307493525906283067051367255949443072 6143958822926326879845115955773440 8341909515764615800831761788698624 -762211145184700468726721537674051584 3227245421743921910454422039691264 4347632210240837383689036923666432 -185841196819710037366332670315855872 5241205197684837682635728119398400 2934174274469540312445008977330176 -854547030627414927889009506336636928 2247194612279867176064341755559936 7458233453108392766301485974683648 -97901629250361642793679705866240000 6743767371423396566723679391580160 7532460353134043619650743606181888 -383623235197531054497200121462128640 3941505025021403442354893596131328 3929895461879709232930437686362112 -929617686661688417272419336182562816 2328942647978227076783159656841216 4218881810539438464092757976678400 -36962686017114764686032658417844224 4628772493245851296373723575091200 3261016096129459677894348827000832 -387934405420363284481935896379129856 2958110665474273077390130425102336 6783315376626922868197956612259840 -956539204066857279016390923057627136 8702648144977997459690062581071872 799815648705198043234577770610688 -502572194961392358230200982085566464 2500033140473125200615001726910464 4373226620631610586520688498049024 -827823780695230154819919094749331456 3872688934729852534050316976390144 1499061310329891498765430871293952 -693320621297468055774451303551336448 661741004384633661715921273618432 5583536514569594972858939313487872 -758942313675050100854149640024489984 399158110693058169217984743079936 7329149792580529001372771806085120 -183903960360101263303538189537378304 3991421013802404234446055212580864 5338422751282741927255577758531584 -605129687051796806201943627782946816 2987583109033711337739657127395328 2539979511588284982088933960581120 -567243375870917205516641902788608000 3750459240418947928663970004598784 8125311378491808442946947389587456 -457197567586794682900883451813036032 560245574916528352052564331593728 8218165395075496824668080610213888 -574026815849989346512442317688799232 4318108532419153404891985654841344 2990768701039790745368910383546368 -387018075075191021209248700120956928 5807091493446364891846784464191488 5733721573490230245274129625251840 -844361266380129684215665869776224256 8014602382501234978607804497002496 3155726170043989454330558328864768 -637563285942317885076735638881959936 55611941217946360317912383750144 7686960855519565792387591753957376 -141464949712884987337724132151263232 2857030070056811076831890643091456 1171889472962406183466025028157440 -77970585722468940884563304973860864 4602330806013934075490065413308416 9883103874111576210126422006562816 -756962766392190423077333471584059392 1584924075294110733786232685330432 3678909933743141786339863800315904 -938607392652423674608792456042381312 6905876270136008314639419537620992 9190523757340248821195383112728576 -597660025166385193104662180883595264 5622586934956519910463927723491328 4915986409714307693310288880205824 -467860376126495375526873488022306816 5348909531936989105330682572308480 2028508066749776317707927966187520 -111092222517532194525059048311619584 5018333509452335753882541972520960 8076272606516385340061250838593536 -536333821300531347441749263615262720 3513392405885791896877269604368384 5064321653785134071699093722234880 -955763298181500600121740217586548736 2834295813630011977317702797623296 5624947290523243527861847407460352 -629099497185675334253522921973612544 9634973257604443133222030755758080 51753080962776757320289882210304 -508758187641828450480448410281312256 1146827035880860328640088853446656 3113398999418273722060078242070528 -788367485889115014587451575587831808 292678045065177288098739702988800 4233623197073312693847009295073280 -633836578482169440544889342716280832 6817057300799455697437014859186176 7947502094403592233242213274877952 -275860026620385089867159087590932480 3801761930608899481755184315498496 8543905966589658353385026220982272 -472455230765008438475600172767248384 4159036183318468639630663065010176 1356919595802584796561581174423552 -172108648214681613975537397312520192 3842503882341027838701451400445952 834445917342605027026960063135744 -935774928738994633617289905663115264 7991908304799058115001702565281792 8004522861918588656382528760840192 -880988575928542430624074741615427584 9076442651395108621617217677557760 7092028633671007488301645544030208 -357794445343565840340764010561404928 2857678775762111651994094467547136 3833795956650797563580414479564800 -709915999835931258683017320877522944 2265620739810056521029522546491392 2742878791771408718087290663993344 -954712543771068064966588252754542592 144524500337077249591266626240512 5394643531094130104513549857456128 -413665994394539808691094198627074048 1095123294923464701636667133394944 5774766112346051864485668541431808 -530740527663955206051454563972546560 8094662371465385495335709729357824 8857466152266435561986416546152448 -610517505321953850620973246478024704 9942218425700298145549101815562240 4873633100005525441081508695638016 -297381333158722065500891551033720832 1554070769708295523544890534264832 8396041815197049080076783004418048 -136275724948289230405660469459156992 4666111580041729766352302320386048 10921048634353938617245848567808 -681020127826229173328056612164730880 640971631124719165053433783779328 1625931708171915914395736004886528 -485962049923672713323715567808413696 6856063126061891160334213027201024 7902507887062792086946812893593600 -211023390080920192471657317847269376 2100247032086983949438884075536384 3867609075544604027795315336675328 -629493933041239308942915231239110656 9332993996971369313863965106765824 2414822776085386738985760288931840 -470170097669300530458481172154417152 7560623333543739292291609447628800 8749578562050961803854147825434624 -294823337917644129375629205735211008 4797792654446069623643999110692864 5093898506225094925232981363654656 -871799505831441808210405242930462720 7470020552498889155181462742368256 5701516876015527412286110895702016 -866093460110042820364057766055116800 6021900635140139979803661380354048 1650910588627497431421393716641792 -69553955275032308560267072516390912 7983666490467472305747532468715520 9646130861144061557827638357131264 -674302045610961206408266314019766272 5404151964913704774412043731075072 1849821555094543343046390397796352 -446094051723965076048256580490100736 9381828517933779241170511840935936 6518032729359671222730385786929152 -862376389501386203747375290655965184 836159846801525314910425219858432 1286279771436469748506924224086016 -942754274258890360964735741145907200 5754497624277045017696331892785152 8651541496228848167794872965660672 -779223930924009075358757421920026624 6573553108689795466068877224443904 718686656628938381747365374590976 -328699370253911240353306224527147008 8008910290702689435578742310174720 8640934197715212318392803024437248 -851540223973041667661765959053475840 5218468855054463709505704945516544 9413319093004252523872845945634816 -390083580919353527941603174098403328 8532274181861903983105776235315200 3101598256331307685335799116595200 -41780289689962606071413855532089344 4514487185438279659893440443842560 2429615361544777895019186332106752 -457172893724139461499725071633088512 2917414438706043843058129921114112 188193192408874340640938874896384 -978379216980079977201365923766730752 4472281574971640151096685183893504 1878761686103288454262140360982528 -542487965344967716435580779581407232 8759667732054788971272593949589504 2751176599058984418285521444274176 -532876423724630477408467768991285248 4891822534490933227098419985645568 8909090168159350883855665115168768 -286234602300823938412650704922476544 7031980241384164016372391222444032 9069357544477468496122183304609792 -991484737742376117998922351079587840 3016780900509223819719276037668864 5993818931758910534624196249518080 -534160001689096847437891872244105216 4480582171521012331814261576695808 4252151001081835671608984334237696 -290249149882279400898727957648900096 1650048604267317773645272143888384 1086593961595575087013959986839552 -73373852665063734248728289225998336 4296318932736005193362130727862272 262365270759501232434070652190720 -538909142504992234775445571008200704 203486563309796756708725182431232 8021598530952964504294191831973888 -136259185230947297342374500007673856 6405537276798333373855650816196608 6956515671582278057089587421904896 -587244102639871472535303758398095360 290889101689139979086831890202624 1566779949752851663980079551086592 -636702282551759266055459282463227904 4742165086286852433839616155451392 2998767563871857772096849872683008 -501721663273434936305544638186389504 6342697308034027885513537579122688 1829729296907267276087123207258112 -959593455492516613879140864885784576 9806123232322936805815326273961984 1527777414103283051047434835722240 -638416205332894925770972425825026048 8047613168077089845307751668908032 2741729804184049493140342696837120 -926281193865844841012193931709906944 3049512628362723592079444870692864 8929522010040474924042309477597184 -296948588989530730596365335462412288 1802892020659872193036868265181184 2235834475457441724216251279998976 -104898917978181905172394894476443648 9946621395491146884638089796386816 4121863176632069158383023246278656 -756159675030571848877482948199186432 6348558766502508278784509771513856 7953446826960191286047636633681920 -310000756901561730111185669710675968 2288925708421733400150021452595200 9687591362441724050228375873126400 -105400519892415747941834433362919424 9301053896901099218709385289138176 5034340961315932519618464983285760 -688477551386036640486904760843108352 3044663097757333621150454403563520 7573218395374573773994281993764864 -207449403526609938165323615434702848 9527899116156563540190267971731456 4992247082007115648929706727702528 -751018287775217343195330542850539520 2411321530388499251852399693791232 482639245711420337899943745290240 -143827967510217018860122497374748672 5281863738638544698532299884462080 4176102024799805580072378578239488 -977044878909825518284430169711050752 6110611646572531217075862876717056 5857751259005769212238729920380928 -587848617055974030915495586294661120 4117141323449561980798102707109888 1233605383552312572262479990620160 -814769595578214344927836785577295872 9908161362157865355955985862098944 6977584231842204257067401723510784 -286194132476103580150303706377617408 5733185090136587982922126614069248 6387090739056839277185995009687552 -637424539929939228639410857940353024 4656341304191000113181127142801408 9908995213427739644227724620333056 -906499237851797589461548945446535168 8473028809084971510014978140667904 1568959075647806716897773634977792 -586243420855168974672666709526052864 2245519331104460488573283274326016 3165475948143692836498294154723328 -749837864919515021774826338852536320 2606257842098001729049039736930304 3461113381338870677670483804028928 -463221197294821776825515275548884992 6018862191270347979397363337789440 6267898553774437292156254653775872 -399493502921715944481927867360346112 7103283836530560557990601694380032 579917908670989592524912865574912 -625057054102643753720067386740047872 8382244839809906748034258093211648 8482908763622480256367358120034304 -540148515887014678028434452781203456 8639818920137553095818493925785600 249801743746854601429546476503040 -980670041463006722856332417071841280 3403695861236459450993318196936704 5743242240233220014973254681755648 -166712127785193260761583864510414848 113840624385630061568074083991552 8820613418221874374540217504759808 -137207829785338163165641094989873152 4965712216355756111651014679986176 4733748779722416916507890569707520 -480560215199683002214994813200105472 7565860271220102104021436131704832 4284105765625383662330444825755648 -240841650790508903949634752393248768 2357443075279402026536140321849344 627331665159434836680824959533056 -935140658647408892855485925731336192 8650226069371865626693375809814528 1953815230288939810354324972765184 -416772594512919180345626114926837760 1671595891096523769926554358906880 5496181336001245431246368660258816 -144344799972245950811059379515686912 108134311761257247857473719631872 7141771550149454732630954518511616 -633399376339774492067226917636407296 3115018666716510922368037934858240 3931653854429426351206406855589888 -177626747264506998796863381014839296 265101420648894517076550190366720 381559038686004724225292816613376 -499965299628173840423423268452564992 7166992574640344224023213592543232 1811909339981974131222487792353280 -231891100384544555732947078920273920 4452167439096382932144780849709056 6058231014616537062390428099149824 -388102068566716581769949292533907456 4877246858144956312282415853731840 656287271158082522380428732530688 -132504501603548177493901681677565952 8971949094920352348018553783320576 4200720782368956030953805991378944 -953859328098124587403050140819259392 5572190693821745047209219155034112 3325035543395426001276393341583360 -370065288035192002720567425442512896 3323041455606645624680037463621632 3370315389288516440545251806937088 -962298702159052779744996380240773120 1015478199921977876096685342457856 7611505935138856066611939914022912 -367430969528958880467943927232593920 6463890495071788837648645922750464 6556229242924932899129646529904640 -721976014836403559196979310169686016 844362828612913017017416372191232 708518513769432669508219669839872 -466674144727929316026083891629522944 420240403637391871559508875542528 3365008919365680120749043373572096 -287269133206206048879700424825765888 5918136617751696803481114403405824 5066153000227884048206096247029760 -6496670896027491516306869645737984 7486623036546648165185802595205120 6123346541971378842532601372082176 -865847767490761778060504671004393472 509200380875336243710956597673984 5565658216021555579351417481068544 -993329260885351112735841469924900864 770173631268049325872168663252992 8463148340226550897517658556596224 -437048218572277672957936858805829632 3148122283761314072922013562830848 5575723825787937417800116785381376 -656534169340499854401497589402828800 2772796611050570811560880521609216 3305427892601556904877731264593920 -758226638665740807006256469804843008 1766626265836246857936079765372928 4826087994194107512734835835666432 -831600215123542040124199945734455296 4429879220005973891896633427230720 5297039641800855954005997792526336 -201505862971676808307254258185535488 2156105533739106354309773731561472 8182635975084923047200252959391744 -377536780649235499773465736704425984 6700001066217816315624009647521792 8876999688647744694315869693542400 -666475504292989801821205267683999744 2743636678864827852517569216905216 3873764514015287272588910188822528 -617056977904634285488279968567787520 2418351810974501163222099069763584 400729764272660631583628592152576 -52739387633507363474544258621374464 1891125309433531405530429332127744 3141196952400248997581773386809344 -165268068797349190146280403071139840 8040434104507702545828110804189184 5184949662511653844708536596037632 -687335052851225411667947801364398080 6790627367506769349455893510488064 5898740483388533407453459286851584 -736379911192636983577229379944579072 1148030129875370928809904198123520 6773601448391697155359071314903040 -553986107839985408427272707554410496 7625659028375701298165848614109184 2693418520428095135465534486740992 -759691661758843930574224308337377280 1344259504060667236720760372330496 9143703054290791785920100208476160 -676809135830270964977970041703104512 2989620777274996647610646588817408 3485603669438980531109586404376576 -443994602118070440460528800965328896 8495544882315603348861812446593024 5085266779546798565553168164323328 -982235167942260856055522913383612416 3886122852121222160950861695549440 933738088205566890779624085651456 -962438775746222824311501467366195200 503222440264311938986436567498752 5264236674732115600994118655803392 -511004944178268436268839876163534848 5646911181336292861637032826372096 2294409788319242201574289711300608 -627614736196373698768279895011229696 9889208753750531179740894928568320 5069664226878390526708496782589952 -444451869104049504567017180722364416 7076365421393213148125456639197184 4076016238251198751742276405297152 -228945525538560433915882605283115008 5352463009701843205612835891576832 835962211955180885934511493218304 -402421781249592000321270204715761664 9137978759952567955358332460466176 5096636252572442735203219027263488 -489351983585087304343730695436238848 5431134132826969236899189978300416 5876920024317714860551452663742464 -762591305884686439880560393850978304 7924218668895045065641890372648960 744718552490016389838485827092480 -945902808412738867281584040745893888 8439336114406006185695647203590144 9361376477705737534402203544977408 -31123443049388131458146188224626688 7608751660740481648333135718383616 9220179998655637473031974153093120 -101858535475043882669293128143339520 5519303306612154639741676458868736 5344233067529325517109609269035008 -669447669145819224842643567038955520 7527665865381292876279935190171648 8924939443976739770542797300432896 -91380460713214104446648082828886016 441134672767419183077407860981760 7072771605242345912707534639071232 -15982527260665686204050346583523328 6504596664404493535732864179503104 2798506155775262874841352427798528 -377141108459388992624597857353072640 2042949360518267657109702617071616 179924786189530296688651286872064 -930280078446376933697457096845426688 8894313191171765156946329024331776 3447339806527782198909270642130944 -22389841414917431761365154419179520 9332260492841668464590378279895040 5406317542360938344930275049340928 -360149778169017729833639704386338816 5239911188002119806138620443623424 7836214756993691938153512854093824 -404437910403445309846158819521986560 5322674933974472999649245564764160 7451116756117159417199443490897920 -27890297823872531165452668206317568 1364082613357538109010946885156864 6477400012822856227348133068144640 -115966025111528757031611233711685632 1759770314769287290585523855294464 8709744635913287360755694330445824 -408192624390927590697600933230018560 9571203293517353664008882900434944 2915998706150443243720013850345472 -112130064007532551538555166987911168 4133494158552228378194936869158912 1616455733250375292210883378282496 -663802095832295251267934695001686016 5996486894158042716426776298389504 7940324409322945713316742240927744 -455187795525093844735895950701101056 9014299162562645684412230582403072 404212229948725618149613526581248 -113692393020971239186376101101305856 5248720105582924082055265000620032 8174519032048158462887037918773248 -858542940315933028485778208024690688 6250443418517300300886272055967744 1300114739595283449319676352397312 -578590310436173520974544923900510208 874492109067374789434807108501504 7092248001961990994763433807708160 -970842420582639323549150987826495488 8348326595163504866605060644143104 3316883252449455615784108452478976 -348225002459926392098621969668243456 6741969506259692690200478483480576 4601596282555636774085919017795584 -612609826929956392587791186347950080 6608602767520429117693104821895168 1933185735091006051640117467021312 -284762288658735288180250784559005696 2852189203432520766159585179336704 5103067442286343948341498775339008 -618436051311248613638018245236621312 2778611738193893606885071857385472 2734603055565736974259175223721984 -997581596357504245697267116848185344 9999980965225020459923156188004352 2735220708489444986132501459107840 -39222435834725530774594266937163776 8948462907398345980169167665364992 8010374425368972096491485571055616 -975465952508239390276693156253663232 6258709861409522809108988086452224 6692121635899694105070922033528832 -586024036225599824732252187681357824 5298147687693352827555988266549248 7489330242829114355768281737986048 -473678718324460322109101280969359360 3756095524946400027210950599770112 9151572281029466826617365349793792 -779502840079127156388118151896760320 5328499104177715858991083799183360 1344137656863118948055905231437824 -965102895163127883057654988510593024 1784835803575810965898607972057088 7939334308549044061619851397955584 -496018559628895403052357249606352896 3344299564017160982979913355100160 2813465857538995712541550832517120 -860250395589030768502150026345054208 3172583838514684076044016882286592 9501736983945657335873499794767872 -33512116016728307274509158166036480 1808368397597059335302341875204096 3185647013420426789923257315229696 -381719469225620980534237103847899136 4130289852542171639234446460190720 5104062863621284760956086138175488 -793543192748511318555232509297164288 6233117901039079565092680405876736 839257296963141643246297776390144 -514266751205893223415283164928540672 6268988872707236059251552378945536 3142971768595007269905080099274752 -346122132013787563413212945954373632 2566745815740234320419752673017856 4038128683983579719146044926197760 -506838204759950881434561982438047744 5947287275094453654742854577160192 4265076566761656321839513957564416 -516234603032162650232919654217547776 5167905833804399239070129540038656 7563544754926572850168885239873536 -737368129070080947818554956059770880 6273822699592072723841989453283328 9045059197688671392610211873161216 -866944716233224384491858974874796032 1537975737867526343481104950886400 9963463283463002874161607491977216 -76058167431623345308577400321212416 8762521005784714659848584087732224 2132733508924790608481404839788544 -979663436114347959387326424014651392 6651761826088897458390564033527808 7420640429948830768515442259525632 -272535514218531780825838100720648192 8133534541783849300212585519382528 4836519085797100223558522628997120 -369770488147360609086988762346422272 2575043633789249384599697993236480 2446300663823552429019013356453888 -898476241689165884468969823105187840 3840917641066428987567830332342272 6566781395784143259573869057409024 -978843018179474090259088320009076736 8850824706390727568496874580082688 2867041114506524966106978911780864 -289428756482537737803447814745751552 3564139204973128953080300804505600 9617564571892302717129492585775104 -694499133833931621296632870478020608 9525223538336831506758233762037760 430645598701822965767376077848576 -393176440005950527675059635201507328 5476885046822984758988589401899008 6747045933036943347000242432114688 -38555248859549218579160037456871424 3467890566757928315777629064003584 1126317757689991670704914640666624 -958777419919991408578933070707556352 4180207081673395275008001185939456 6403106613805245261559120667869184 -469989350145943819939020553140043776 9323193994624791691062953855942656 4940501872824293636004338091425792 -673229450683787005537026014982438912 7038225321460304544462296370380800 9969081055089427956591832841846784 -315736469962618617457711315058425856 646056044848350396021719183654912 3273330500727574776455001179947008 -805185763288036082004808208295657472 6523823643962108013719915765694464 8086577999441670806138130152816640 -343182010393074265380249297343217664 3641945410232936915679613175201792 6370825265962129602788396101533696 -379840700084000178421264833824423936 3518777649165557656753892398989312 2753616685795013920604480922976256 -991093707386755032756792387868557312 4515608004598605587858784209862656 5993408675217740906133374904565760 -791691223245217111361461934153007104 4541354972674640979565079814995968 6829812228779000619350789829165056 -950302903214074032346996430650474496 8514866822435511042976041098280960 4874474657288135547499762145034240 -201164244142059279609405225213886464 7831986789099988250903598629650432 8006349526445878633322878026645504 -604034091799261854033431678215520256 9708442721893152609560987342733312 4861013423427907783379724798001152 -656575451631333152293797374105485312 721372735828025699558741166260224 4018998081866140170383777058521088 -415723425769151432273932776537849856 3105022380384625918855739368013824 648874844150124459374556278161408 -360345623744223417675461237365800960 4066482392982068308745251868114944 6545607200107321110473469165830144 -346103683662146737477403761520410624 8626101886335891361767048840478720 7155311802963525738957242007289856 -242650443794164298744881156903141376 8566518808704924946752012761956352 3103333312873607134220743776141312 -21662571239681602123863166906531840 4906033960193283959714311886077952 4357873827419112391284705701396480 -450684524144806108347436251320680448 8647689964355805522573242874724352 5590518393044914534423635347636224 -547193366702025749314492628341882880 7392648391144148553726982948388864 5320584424251549018769981364502528 -959769681867431827859720866765996032 3885922934624967768491359387779072 9130532466325930771839255161339904 -195742501765822719149636060964716544 6945348068618572613374717022175232 5063990764596514090008298999775232 -275831820731468547541816930803384320 9810054971297053962716489728393216 9795918142043857256599978894163968 -539003171586255750694800246418964480 4903904582613433655980271203254272 8360252760651147464479364536598528 -917890895333380295405433941806546944 2080448870673536186258627458236416 3013222944984272176460038347423744 -180105000390061443008906970888404992 206456045957645148385588023394304 3973564448699003197848467537920000 -655665786920454235377729640706605056 1620016602361787252431056516677632 2946807590087015130832940019220480 -769260202620801059160882701163036672 6942256681913570358456259142746112 5149844730649517573388280161894400 -212814880581256787830003780225597440 5459778675009920792321884241788928 600044426369616761172742354501632 -965747762553241794416571618869379072 5434657055108889001962586568130560 4490094096056405896274047720751104 -850608830541310704150018632070463488 6131648928372629433819324655599616 7451008474233598563508948830257152 -379350793016484372018259871529959424 1448906453312598365145795976495104 1897803137809107835582182500335616 -474345947630141271449232454381993984 7620677198343986466450743951884288 8820747671818082185202821178064896 -502811815265661941707662326119792640 8385247066946049817311843937419264 2856759026908542593793186389295104 -828863593994767103204242098938183680 8874688975541925405714218005561344 7218336677800317150415485268918272 -988611750023819553694426720402145280 220183536644693599844641143783424 91398200397225717450734991048704 -64562006101232824102325487000354816 2090926718778676496092002143698944 6099610209653830547293845934047232 -300475594660833944982300781445120000 3047616271927566902002021874794496 5756465658918281200771788382928896 -76095289716559449426678201708445696 4602081367329026472840045661257728 351507103949151314808995248603136 -704049121608637166334651380076118016 3907175575178691911719510310125568 3004672249737525936272780864520192 -179703090269166508245547137139474432 6332014350852872075284966025461760 293798610919559561229437744709632 -677024390204154264159407357806247936 2012161071029684884340835656663040 203037214837659570276430411464704 -800417184228188161203438753176092672 7736143627209337223935544554160128 7359506257849522717713629964140544 -287780856560267505272556643195813888 5264513314718454505008054445015040 9074334687937108535269470280613888 -52676697744256483260663575210885120 1567823578200349658626490764361728 6223416911837905582636785073127424 -225258445076936136332996783869263872 9947982360022930026726549297823744 3038379802283695995761736795815936 -137585475036641876248416756965572608 7414480561264430220717222317260800 1918202018836924518753524177174528 -329213671012148519277944281862504448 4548750117974554771074033257545728 1866424439744002637696625832624128 -931578616446731312293094864923394048 8404983908737644822340921693569024 1499824582396992816126625270726656 -315628813795597645603798564131045376 3265979368766177665513069033291776 5965030613935652065769927775092736 -832340162367656980277677706402856960 4218752641064589554043514467123200 3092933814396620364839904377569280 -966900957297241217836389477807816704 6172320546498900351363140072505344 3589405168486586351581754749353984 -849720993622203267387663738671726592 5875867446454847215622551276355584 9607217784467463617261402612301824 -517085288381318387296910438687571968 5399942540601147867053593200689152 3652477420000635054508625547493376 -861873411551968886056049068197543936 593954065356398203584041759801344 3502899692204422223341027730653184 -329844511823207735629595247466512384 8240068322374423856958353539334144 815907992637745640932228584177664 -448580335478966019002230244678565888 6691550297434879756182112002113536 6882312082988753427332085936291840 -910618024595105451764367608797724672 7705256854158330013140587672240128 8455804287997952170748613675188224 -166269553693074352595534325168996352 6428027221707339497877780322844672 9887530661946438410418863543943168 -497831517388331473402828352418480128 6131547753849568822093815694229504 8235778608077679370554294398877696 -288025908474942867321972548379344896 8186492954896079678234751779471360 4960769158932220878497727666716672 -401868391307024825009294804302954496 4025517990553863040415794328502272 7338293372447630578652973849640960 -706507323080772763832416325966233600 5800328969448173007931432897609728 43813370270077739819651410427904 -318652858847660548793209590370009088 2937479455598547329326976019202048 1402830524847266041102941221289984 -292015176294167889853400395305451520 2539728560932733457014132083523584 7323315744225453123831182842134528 -802334169367859487387392547106062336 6640615443853121157066765633585152 793327545007869352689723584282624 -586890037843044612856946084234133504 4346930532624408288944537653477376 4134198705261149691302999287136256 -829162643139129166255362866784763904 4284255792011404900188994859433984 1245401291167249831214775913152512 -26668922544989976144602340758913024 4897982854531812685238122043146240 5985237975776728958785563758952448 -800943284263818431182246750824955904 7520568084945198392854878210752512 2604457569959720737951334667386880 -48940472593720217665574470156288000 5697814843997942690973981794631680 6666966614550315987797306402406400 -454606201378549860997169299622723584 5171642957372834577841145107185664 2243886801550458324885601840529408 -273356581908165673199245456486432768 3517372015783414737785103688138752 6732461373292438996776531078938624 -238974562535308765526173731877027840 884533621460297603519609722372096 5325011474549595873679550976098304 -198794702866406478939580622325153792 9863121810536188565972605938434048 8494137351623185000148313179160576 -239754589931132847347585284816502784 1000915434982346798646306617163776 6901568251750211179405576949989376 -50679876793481064066539735792746496 142096224399886536623390090854400 6606191243708305455486957344784384 -587847648938786667473455833375834112 6815770065340599282715578945503232 6724360057197945851714995786612736 -161356913411538363050744282251001856 2733403329566579039803557105631232 6018419699905183412580573570400256 -380629329348492075228958323527122944 6287565017466207912107013048369152 3326067431717543763685940807073792 -617518959720362972093450234407944192 3669378542994968121429050402013184 8168850987024279706989514236887040 -668392054829397532072989604509122560 3085167234314294246853713235804160 3515353635623050889627612007628800 -408794008263941733177211330918088704 904313478784691853178954437361664 5428945696752299572261951073419264 -694468712918710700201878157149601792 1704045194836518289743636997341184 763375582832995365435919069872128 -775762731419811760124336542884823040 8683936177792566930076189495132160 3674674387213782870446130128224256 -324034471841664293538796632436375552 5381932238822494984380109945831424 8981888164812287398945158602948608 -544003517442189186249081284372463616 3367404193008007051104970656972800 8255585591529420806200364374163456 -505817254935005793302890146080751616 9518379298319336788878167507992576 1174296158250087485373221563269120 -16154073000990059749427661645021184 5252153407782268750550294195077120 1024987066627568040282456900763648 -766301905005553509748406850533982208 3572872974998926172131503797960704 3702996185367675419018907822850048 -911662493689165250072584077340311552 7009094260759817642225604157767680 5880282550867948730079610805420032 -804753917305451703949672768839090176 6767333934865111687134570222714880 8460418109550429395613048975130624 -122183813972237565811237737736437760 7800137951668420185193256952266752 9401588014197449036650532902535168 -448001695829315558899294587966193664 6813819066810487011770148235247616 7591865111627292816305540221108224 -680464790914193415603307622413893632 672077072460902938797546953244672 9359567833281442011857851303067648 -359266801155899376898810513847222272 6736857023858400408777722278445056 5171706106839907025887975914340352 -9325355426416188125639984346562560 270682247908159345057541604245504 6572629973526394120489410471395328 -757913917040173124354374758159089664 6085746290179064907715069102522368 8938749758999628353006684724002816 -365527118141490905805287507795902464 4623145138215093348232633824313344 3814153898893835752341795638345728 -297699727156391734716763604277788672 5637459045981642699236805925928960 7493965478503443527401267234078720 -371938361344646592711039039066603520 8447773416020129084404694517809152 8598608858382926918688489024258048 -828407063719369764738998783935774720 2537054734575737459455927183736832 8659175563416262570549822900666368 -355680956898841887150912805013553152 5182311409742103968191271057489920 6377716829005677089414456650235904 -860459866869990405580147759110946816 732680054139903436299568957882368 1421271123456813071330909855154176 -508171099014576884830279231143411712 1376013242791427032735909779865600 3785992089765105108368939152310272 -821208903124186174648994203581808640 7849620644096543898101220879892480 6213625967969300739684418929557504 -187324476877957827848388506724335616 8139173105908800806135136549601280 9082564009934513072549243438235648 -971710356589259215489702570263314432 8053718310179226010774838844588032 5220738416205232754449151684509696 -355313609598756408944558654686756864 1253704322318900551953390673854464 572967474421719969586265647480832 -112214648698868083891009675138695168 4032163349269964905850687102910464 6805326869795467795691006018453504 -137342373621574490472075314614763520 8556579884660531307308922250985472 2645297774919421878825171554402304 -856054156292291352621993776195305472 99986820950586938040814739128320 3077745822554235651726773665660928 -843368015615445390307366558421221376 1815510602734808706770149513887744 9526495627285814810561112258379776 -405087230391424112997594145293860864 9769577250100193422872075223171072 5992504260163145209860585389293568 -259934769929002574112867708764684288 5082130610428210043681872717807616 9918942086029371915489583229304832 -487726343907716998606565771608850432 9278512627137713139104927595888640 4008316831653752585662038666117120 -536377830661404010644787458518024192 3522487365672998891788354807922688 6435126511061664609431027839926272 -371211817144898005996789526683451392 6011041917748209183562290490769408 2492223150361129600710345039544320 -495696150701568268868919098611859456 6234416658654102538334985810608128 7622655880212121795347253622210560 -787687298572489563258045170228133888 6577209096420692348782346569252864 7570200524429896483424256355467264 -802500569349986521966750098710855680 5993425666834899601969789901209600 7728716403694408404874723082633216 -69398418963329617716534674676776960 6650521341027359748242623623593984 1276050083276872255291422828134400 -546318106095938329398465650399117312 8377891415782999206170542099922944 3539959236188938242253064413118464 -659544954739496168475421425430167552 8913164371750096832012319201427456 5109624347544221529335621385977856 -5467203703164462356834023861387264 6488706038581517384469636725080064 4193410949814353226779670549102592 -223208271741091397078071616257130496 463789363791132047219242991353856 6757853766169531139945667344990208 -509004244933792977271427164985622528 7915786333182440937394035044122624 5015685656412185041466881256456192 -527930259584860818859201210005585920 9805551157067371827176972046303232 3408909891134806159309362083921920 -94303670578687523410411536240345088 118433515301063431471565247610880 7071115567653891435411097031540736 -100762520189414516009910529505099776 4453935983022552187302948783521792 6054575708420982482156287655149568 -39354635983786730258572372684570624 4350186037559980801262698180378624 4541775799664426733868576088784896 -16955325353954003479543248152690688 799753417213149166777728751370240 6310735239683642977692269301202944 -849790649102929847185784937084092416 2667565734302680066010513483497472 4795752038885794397505287985561600 -152256132548090387466107810025046016 6695098150733961001236183048519680 6713285459178437149276537316442112 -153637578782218778169966101635530752 6797931260929423069575708718137344 4790388165233911332878338479882240 -10378437429174153932673581546733568 3795994364379518628769580860833792 3069033862751361538976139991580672 -426703809550261893826455243591778304 8227381178231028260381841837522944 5901320650893691354356893335158784 -983014124780098783760144097001603072 7317999492847746340945467384266752 8970759311485672183158162631688192 -989061296607432912421735018226778112 105061721943341968900611438018560 6092754969354118944762299412381696 -682202946664573555660982115513663488 5957502576662005002347266623668224 3715752952349678184335852590596096 -25478826957697762792094016492011520 4440630556623100732886653350182912 1841781268531017884878688216940544 -302793555084563238098331943647051776 1916988108796881252456624681910272 4002401119482364871904092598829056 -245989312787401700504313567914229760 8111545062993587053305912803459072 827933080678653318561202498961408 -423497135795942698758597820555460608 930299233662122205749744869834752 8843109064374936373798807535616000 -432266661876496424308362876309995520 7948306087143930663370036233633792 634848083579953146760343104520192 -78276214780630084041820550643843072 4716652589965921391733578802397184 5384827742143889566772423787806720 -752792632658636510235738904513740800 4888277244775410736775210404413440 2535951576358263964305979393179648 -301530032913526935854606912531202048 2214830636547249250373906598985728 6490716439504524566415908769103872 -229387528086522130678764578556346368 2438860129748792742303203464314880 2958923632205273756521216528613376 -940058936945628861813942850695462912 4724772910155276651153320845508608 4218915313341360986196979459555328 -319527740210894933845630626434121728 9919263072490870315485120375554048 5184880538575904096899788015927296 -140954782580213359010638419573342208 4765044648795070108720007043088384 3597121943394199912022137416712192 -668590575339435043243125285888983040 5334556673156259210776225958068224 4607331681582066402324909842759680 -365765846854236277571096173319553024 8928960359385983506811611263270912 9974657343228360902193093718048768 -553724109669975693000546515091980288 6802836718473958987191720005861376 5150425655571079235206050788409344 -945765421105366882185528951466622976 5258857135748819587111300276158464 8753764314167045508571154501074944 -376361212179507202369291604910407680 2863130111171326136105609912647680 1996740030414905276239741127229440 -825138958490142571841983212454674432 3013840339945424658830112967360512 1169252463595492877273308413820928 -149238288471909968856993197782466560 1010757545648138593778189123715072 9338070944174354966637338014253056 -420190364785359786910202546664505344 1143713885051102402995185657053184 5123035149949800454857727439536128 -994364651947106441011079516335898624 1790032775840153304738940089008128 4900883061291544842239013617139712 -306740137747827554652208237029359616 9826579315976850783294055570735104 8176897383142584512420933959417856 -389693017067342964437506227122995200 8039738479586449601671192429723648 8775509875936386746656224375209984 -696019107863998447125521155236036608 6799723013485933439847472042082304 630093912690339404635259654897664 -572976254206056661544834152240513024 6194780138632122224703310686846976 1572011103302047838950379678072832 -820038609073525983710627466290659328 7767169368056330625135278139899904 1085323791479747670301478037225472 -904683264410106368756247556509401088 8090975298668578822079347630800896 1858593727806938198636343148412928 -646575347718732961330614789709234176 6432015645934230229796680963719168 1565999927008895559823536087367680 -5517813372957151428215072903659520 9079182752514038513188335794520064 8844933110063261574581089254506496 -230999478257445594798718017232437248 966564745941242997796023052533760 7853205711934990069068877703151616 -854608311971263783078205203190644736 9606271371604465070936213625503744 6450018848061408651959925320187904 -29503468073969211188308359629504512 8812592347617598980544661611872256 7178141124358605238242092817317888 -141390965385021401134933193856647168 6474145065097963910449968516694016 8588579738574813706511702256779264 -27986187079042839329566125929267200 4945270596072174902671454880399360 3648328540130037036165363646070784 -297025848166590680562015863056629760 8446062309555532138158787747905536 3788431622342868862485998849753088 -627082394699555865569096101403820032 1679749122988606665297200028844032 2736512742479402337711195183644672 -907664692086653196079301450501455872 3364001667313224262302036339458048 8737535935943655175411229781917696 -816561450446298160679911729798316032 3208574161417877276480752144351232 4940552546823446441196027398586368 -68045813802708546578284725596585984 7345581233669702970020820030586880 7107737279217613516439053985120256 -721179582674255069557271444261437440 3926992327719664965381432992071680 6162938933487416792663183216082944 -19678815795469062365320432890937344 8498862376198723509231637420310528 5803201492869877495295227084144640 -720033459027473782821787120189833216 8248504481939483930574558165204992 6470181548761152702471483502362624 -418759435104771767118519590849609728 2980255009174997625417611434000384 6314104153669891547319638205399040 -230922496492311826913506812030353408 9603989674227246363606140925771776 4441896147625254987892899706830848 -51340438314733250280106328175149056 695503335716060686551436390039552 7951958051523623360665999516893184 -968481001947073999500081285451218944 8192649294475522127310499539320832 8704206231639414230968504816762880 -230051622853779854864448305005330432 4602654596999291968723392288260096 3368711342827723514435036384329728 -535457658367825638924446639146926080 2665545452175427148028651426021376 5471137152409958835096353140375552 -874497915872309195405040609883324416 7886030004137646171654562435301376 8561857919036539494191252409155584 -770730149260326601809173940860354560 8479386998807674879306297820315648 2997422562471397567285223340638208 -521587869826476806278472765708173312 5061153575270164186697149293002752 6684714833357509689926666269229056 -711615586725739595120307834409975808 886274620186958566064337748754432 4861187499641007373284148013694976 -933432473258812393696536024775131136 7900189681256840472599494771343360 7531623115554339926304207690268672 -415434403293968862443431594549051392 9350311943522957720164722592972800 4071245006675167057614513446584320 -769144264167283451407238361044221952 1889756873724492071586347110891520 4358558510365970072356950691020800 -109705474874132114830070321321607168 4869163608251625489536565815279616 2230135901130120424682307465510912 -420964454817189769129815341684228096 3092194986653469942655790960607232 9183254539448696753282826704519168 -270730815430204569527630831116353536 8565193296488334213025356704645120 8158628028594573703454867316539392 -343987649713593592413729096785199104 3202967322452624212201146662518784 2364013817627672059752043486642176 -248671390897208917515989383171276800 9556271092459161308555128254496768 5386459763637792409026012911763456 -327979558698769061300072717486129152 4351634634271928796579258597113856 7554643090364126786018328065343488 -733876960584103424596815065772982272 7794950298741032052731868266627072 5826557884637097519121742266630144 -854626664782124495529305719865081856 3894449607672338090885594426114048 3100065286371947111127753519267840 -406944664930151201339536159780372480 4520691234831620486470138891075584 2219447700166213085230436070719488 -156087079475027016293046778178043904 5863190355386743160877935614754816 5908854326446965948898575948709888 -736119746816202798531462455307010048 5544816421503995604984337526685696 9218809004019655618510075652472832 -877035260155475848293759530601283584 2387395602373981270088747233312768 7897437769339072764454813223092224 -998043091434761425452962189592756224 4050365834904434505045059540353024 8436460691211690292654333723934720 -404857285578752218835523805644849152 2428919220854399847973428846919680 2149910604183970629371733496299520 -390879278216119988795264090043842560 7152592016807156757101401589415936 975093448332582258941383332069376 -533216734299509179742368613397430272 373338698388289226209846135619584 1843666922483868831247099647492096 -346218568582919154876291241736142848 4347700247382930904292901200592896 9521109951120034421088340234207232 -403145373102582655413742541144588288 2871296807179807668530257416159232 679148779830776431788412532424704 -88841227276060954280036757449736192 4190192579587451055452382870634496 1955334343239228397238724562255872 -594607162500879463385942195703906304 2237465801602149893942581527576576 9480963877425421491265436817293312 -144334611361845626521288201941811200 701775194969054656317437520117760 3589877673386070953219510904029184 -988944517782790801888462560861093888 8164730168122315660609283657039872 7493584896255123953262896737157120 -919503096086285621060836069704990720 8281453700692368432449908641890304 5445214774126051172528836789141504 -893896577883274382421714904757043200 7380131261473505698711694668201984 4852448146590990373923386550124544 -811203679528783730111928542525652992 6511300518299910283900785239523328 4727108317838575430059053723680768 -911178942943670124861753465411469312 8262594949187405580812588907757568 4978495025723863994737520447324160 -146469821932338807382104608631422976 9947316014897656899633883184627712 7725058458741212395684411155152896 -138307034809541961833981879563321344 5577212512236571451830018515140608 3662952130445274208611135049957376 -514390759699094907691835231471403008 496975752968780908293978536804352 559144063755802195923485155393536 -952691993454501042020086031633612800 2608443198819990706600715734745088 2931625021607456416497923493199872 -887008924192290249627412215061544960 5859483644506111734295744842039296 1961455905933994440069190755811328 -644698874574026879734654577246470144 8525726190682668989608050867306496 8186065497925775833699039032901632 -984829499992365290163211319709270016 6124097481365692669450843116797952 440428121289819584383954148392960 -347797265102580153894980212863533056 5718306482768837644057189111824384 7541589193353783474217250350694400 -458037973229717651822952734009589760 4887236282713256605337821412065280 6387446938341437107403159960027136 -357732946393149070665738997020491776 9901753513107993722906133533818880 8359393158690252610787350306357248 -305887858756920299053292936333623296 3109920821160796984563073183383552 8734445020513806177789348740595712 -111169547180225010578008725616852992 5814407200720269146376002387050496 1739054441555264180603914670833664 -713149097981058749273360218831454208 5657123756606478955143299839557632 2249025536598042175187285742452736 -825842112851778710899297307674542080 8250693458358568702748023786045440 7989307067070125500809618342805504 -214328513774280721721667318989193216 4133754232098396281592355483549696 6786511577470758182261817012649984 -732251634054080999256235536715612160 6891642994373379440744493534412800 673342533033566336423456072007680 -987586055923850068513825614406352896 8252262835393085988783411280478208 9273662927713691233136974992769024 -398904857302942797491749566520754176 4762700890348633796948799162155008 232595520644062943695648136888320 -801358228311448675945315272402927616 4337113853326847622672597064351744 6291684394915000528972625521672192 -606525700583858379345748121901596672 2833395366671215021495965565583360 2319392727462760154950317146898432 -911456951457109688081917602403713024 445962489846848242528102524125184 6137391984261211412145541140709376 -877793600695756837792834221840007168 902322950780987609697522280300544 1368993151971019632943726749286400 -192279143670799492901837492077985792 4386983411033316120331647138660352 2067355926226193523199839674826752 -81772757976339299771730181325062144 1071567056333448590263289705922560 1039571492890166941792546746007552 -619695080238855240746955022241103872 8561190345926680062646838290808832 3816546572167663916667245170786304 -307069645837644093371845430715875328 918310747694495687145351964262400 7964340196912130905097809281679360 -997862524562806612598159052025888768 6179554491655330445243441257381888 4189895865578858897759125286944768 -739471529660263633494794694314426368 8664453339985701472276941715275776 3633529404520824680665443272228864 -367835052971108686175146730441408512 4468416359564771670130783344918528 3783657214717195655544686189215744 -459218390870340808591077010971820032 223143277831013204075269224136704 2957458284816470109718178592456704 -629197218389221932500313357041008640 4489636200374794898158223068495872 3451378077370939139753255863582720 -170572721656667283742509384635252736 8314316475412317044727432211333120 5745257102050061381395098747535360 -988365742107054965193298117331517440 4196657557537548815945955396288512 8944752705801895082564932318789632 -753203536776281926859135255912120320 8963300668319980115469354204659712 7045722170866255555942399405457408 -417982761843814638462232148398047232 6738398320005607070051974514737152 3412059051490436256390500472324096 -75075014646702254997743716553195520 5471101460602672295672869449367552 7687639588573035890114930424152064 -694297947134280623949934956713607168 7529817737771822459551217983946752 9513105709419112376483420376662016 -362222624882837764248238345957670912 4926667274587062041329841930764288 5604538961177195450020688795009024 -883949803505551260745895478088957952 6695723612472190516194937034244096 4324185714906232370046697337782272 -662897371693079827874688314443300864 6208231560357362067802141774315520 5512144185031328093741259235000320 -155936817582392505702098069679505408 8284464880296296175688833157824512 9290731034978675210906330965475328 -167831140636175959493104740608245760 8200154404052472399296007833124864 6389488458062884255659863276781568 -234169843268009375268574149971279872 1704623061928276551287393038106624 3896949727737815884101691698577408 -422887132724083734797903683389489152 8275801885919606873300739700031488 7633719298369343178804683603968000 -972999530865360352255129147834105856 323013685707315399481148236103680 1588168322140898517449582359609344 -219520445213795172597581111994875904 6508564779773655711137193330212864 6798656626160374047567383927717888 -252583830002626512516468321130905600 3990876732395678391838458232438784 8710129494818754162656667290828800 -742971966329714653996918581539897344 4732235384882450445665225370763264 8304315149453043545042154994794496 -922438677078245082300520511989350400 9118131333708822165707741781295104 8859642462876091757684606361403392 -979277178564218360267926003137904640 2612274535398527826615768872648704 337264195631607188007826382389248 -832056983560887835165047697432379392 2925610864262784333566195871514624 7558374882610087346884822544941056 -722692725133472724239081920593395712 6192680862126311745706943817187328 8177015607590624865088912496787456 -2983280195383926963074266312998912 4721732522877040776621871712960512 323326712850134830898683232387072 -392619380631032889893872763699986432 5979073428229280552795777538195456 5252798246589356500878042865860608 -324539121338500083341721500611772416 1776865997913897307130395122204672 6064508252738388355876418811330560 -877549399742623754275579432777285632 2491110574505541304131151093301248 9606970244697031790139161649872896 -100222665321964132348317631472730112 1576313351374528978090368773914624 7138617270335734636925096910913536 -93158892302070655435028896742899712 7197400885189458656527531930288128 6953672091767499582921883061846016 -510839805980364231486732588216745984 4914293281911152703002607634874368 8537100014091331842114747767980032 -182342590413695411639284209354276864 5185386584666452154185202475728896 6146079717709350609278097302749184 -903737209374989425561601708105138176 924088403940095922877576851226624 2547703476739508969556616056668160 -480363505793288401567594111077187584 4767185368951014807263112085897216 3855262179764137654267006572036096 -472833848273510772965324163234398208 5747576715420670887445217702576128 4329130043360107328353324391989248 -644836830360612614275975566227144704 9097976277661578441018547516735488 3498289765177862563406907535523840 -208149297914155214335006328328552448 6596559152764641189208317231104000 9611056487817268880797464115806208 -350596703096536709482110288641654784 694960088899996182290288080846848 4652932346566233372760105155559424 -386023720167234061053657143868129280 8216287080266210434646322200969216 8336860480630307684859057396514816 -22326203498663936643401183792201728 8268836403461621419844512044285952 1198848898863872895051382875226112 -181557239528539106434054519059906560 1884529665300005554663532198363136 6648425621254213260986093494337536 -283692624303194711738308989892427776 1366915578229732646998980167729152 8180638118699090440819744652132352 -930509463059857815705007572452900864 2520001974923577772510738991022080 5142345099690795862843578315177984 -264211854409470315253039902612258816 3730607987270331746426933833891840 647699042049180406509777121705984 -936724730341997202690094591318687744 7896874365617645830258345920954368 2410536905559778885973420506349568 -326249590303977381549005142734405632 9716922337586054356470988019859456 5621676493230251881455596727173120 -749662629511979200648795375842361344 281345585475952448920202193666048 5106168304937281473334505086386176 -289578712897974872249067987865174016 6939596586792768698575458605727744 2904321127389533088733618136678400 -407458507929996627719286443667881984 6728695731294065916490075810562048 2327639820913827726748017684905984 -779741964594770926918560388361486336 9020891423438754848040169842409472 617263761981702878133288116944896 -556060575185760359434678169132597248 88954019636531292857830607945728 9832338944410429197908467798507520 -94154915837178853094431106648768512 4364043875107669816060984359387136 717266592160780930339738862223360 -958809853595249913140249184929054720 2326100494198570198602836711833600 7275083642137151966494422162472960 -304625673515765918236501156267294720 3803794583798084282487949670481920 2827551814742502592548482039414784 -382980567653679886065979178826596352 713685064188733519112961444020224 6943874330629278128109996210126848 -33561568637909180110044665063931904 3054053990268415198329385301049344 1208388238169285335896152447385600 -837565774856742809157703329541783552 1267556718033300440149734388137984 387092756387805511402861933625344 -351418443856318623309083536665870336 8115214118739813142923621768888320 8629782246269069183268128433373184 -869596242006932383003394630429442048 2909582977612590217405024874528768 6874846594925744619373915277361152 -397642601216400029457956519437926400 4203758793352731672381697894121472 2591000477670539595243980773654528 -572914496088699102736893530844692480 573374912625177806848961326088192 1416373490144851949092076829802496 -455703950167091264228869188742021120 7334996495983592650256041277128704 837459629849972337682789898911744 -745535945710238655236469608123727872 1194202355950179706044751695314944 7772927766901127001200892556869632 -658456621360803168293010578761318400 8682753134849219204145436193456128 2716251502961824080751451025965056 -47744962116327109876888653443104768 4241922680649539738081126304972800 5648154018116997629707005192044544 -271212542507346303355541146319192064 9715019510831773357692792835407872 5388742834847138832291347925303296 -463841121995313138513324827129937920 1737436838937723702409113530007552 3790923626480687884436384635682816 -600584886794028682746113323813568512 6206742741875037839415151104622592 1580514972977389529804693970092032 -77186949164848199485951909023449088 9784344847838805281895601980571648 6229312474812955062647090113937408 -220395426257821039780083833648447488 4981215014431397969703623037288448 2091988950719338338063357587750912 -957932045030261592816640341252767744 8986686920064949522414060844351488 5226733009191948656845332689190912 -764176891325483390468107657078112256 7410493144000495942933722320338944 5676733022328765632635954282889216 -349078923552977123897959648010960896 6742549447189386692056039383105536 4393705544442495224451587888906240 -817135107049103976840682272936951808 2758439495531368036198916166778880 3628867877811063294840469408710656 -806885905161956339731214953672081408 4390290072004637806114678323019776 1900960552230914063340056793317376 -539992920845021589384075253280407552 253682825588084149109180940156928 9394053426773980773761377420443648 -45677254260685718791523752975794176 4219244888453886669111337498443776 373402071929400135126003426000896 -414249657576340323417667677647273984 5738596108682664024636036334223360 4692959500463611277387771158724608 -301606665186018818200621179478212608 5728616758712531119072194378858496 5439535254492386098082902897065984 -594744817560151165212379811470639104 3075604479170766813506632784281600 1913335912634124529009370228326400 -918467676349387013255172223714459648 5708165901975105888776004877418496 4644398259201212361029393257070592 -449310576101268576924037974188883968 9805549770869606419089560021499904 2741679105609606395070889632727040 -874433579131031421773316091822473216 9809650124304856233573595683487744 842906465976210839084168044871680 -496576216158169996022259525550604288 1787310940421135993145297052106752 3375407441559824435161667542712320 -717718172768444744227272227574251520 1486572992232484750819519629361152 6020330370810715283073298650365952 -45431249874060404246859544287772672 7403364078999745734759625036660736 1332265809647016972255100936388608 -636072777900450476110919983932899328 131500230073204418702925329596416 1067574169608523472200936886108160 -55392521924072362949488563665764352 1839446539330650131768325714214912 174142180908675153399905028931584 -647557959014643903168249688362057728 8623581204106740240309026765668352 7323558265891369418136351200509952 -422258909337310114905013237709799424 6215822493792137384005032724135936 6927159080833031250541132633866240 -540255937582486291869233817243877376 1754065471225790268183032849498112 1374935411536197338687229931814912 -379700935504166608712483976219983872 7441946676402646646754262854402048 537761919142376044848966711377920 -237030554935664060432714178697887744 2994307323989852251856525689094144 6616057175470524150234073071091712 -778631084204161690392600648322383872 5055322953218261875860624059138048 9677950266827281806397030289899520 -85009226816379171991829076812759040 5691198927791626565509872546217984 4334277408500274707026490658127872 -69510518533384588203799094904225792 7204743572743166667947327742803968 4258449975700738039840748488097792 -798073137866262190907775203323936768 9052070512568952987856269775732736 1052094726010765437782130910298112 -980649859608453971028670384414130176 8365065712154345791132905290858496 9556509890021995201055773394206720 -60438036644561725916151704065146880 8233721645650648892680385498972160 1001567405725225372047180895879168 -296578874991818298219135240023048192 6547002089565602904971713294893056 4898874184704818121948168802271232 -510118229647418837340372057685229568 9397957595973298480480208755359744 1678302406720671605914966274605056 -114517324594395288795594075718811648 4845862871803130910115434741104640 963917554517760817365348817829888 -184333426615152606466606486056337408 4274669318573237549202286930034688 423833436899341906344891132149760 -631125826294895277997294858637672448 8110475585553907321728171090378752 620660434480060998989530009698304 -165257039350628634088666711927554048 1746243237428940780956782742732800 3825171932932823151289772080627712 -384289748957882831964421641883090944 4754905055045619307697624122916864 9560041876886715487482502872825856 -893457317745653170152549502723031040 4446345173912443013384656883023872 154763613843815523849144583061504 -38205524254825762856618597579489280 9999565756596182125176063619235840 5751044971032347661066604338216960 -41557012966655545438792500773912576 1800381600317986404236961725284352 1496931618083866695587409136975872 -149533252146161927308409714805571584 3456391750782190237420465038557184 124048717239105458406356661829632 -338832551946799322261243676420210688 1133430655404058358510055053066240 6939824443985404791470737076518912 -697784052982806705073780255556108288 751206514996415723712416690733056 7837749794686161375849803983880192 -441648692982489469946759300736090112 1723056625298993872400599010508800 9840071717786096217176290187280384 -744494467458366090558750498079375360 8454764676796835231691039169314816 6965430864673766933228870363512832 -707892552533016975863765881285771264 2556093880660555921391368687058944 5549644092735883613239488070811648 -750920834323570387891946339432398848 5214318295842801629290717530554368 8907774134941107561578644469972992 -602384267147842983036739616686211072 8375143465856206532187491177332736 5375324544398039491720978347589632 -960693103095070832164837364894531584 1341988770180721367517285530468352 2219735360353446679615460670963712 -902202761597893643465652246922919936 6982186069120595207935890118672384 7946208508449649679912232370044928 -604136402701826184630583177947119616 2081283863992473299623208904818688 8682653981961099587988484534566912 -569470966520511379971467184407838720 4681828402876227175775811504439296 3451969704774807698201542662291456 -178086577694364715672395083457495040 7893426534031126178389364276461568 5581078802227442406353686004498432 -430067435831836530374915794929713152 867879338230585889386685995679744 2639628761321726449414179443965952 -174996946376575979222819626444390400 8355934922421338356151825798791168 7668285297013493473305633405009920 -790728613457392992632623585168457728 8337179454614100936950545878351872 2282975696745652296570691500638208 -902367994566446023990788849624154112 6051891779838115798162539959812096 7349787405154333038714333394108416 -717414885567842500165977446568427520 1669128449502494620383913126658048 4379746206944132599193225612230656 -71164587836126671272936409694994432 1361210889691016918969778232623104 5568676869855150214669170938740736 -496528154752214257008757663179210752 4836868711960788060136002331607040 3578112046425245250371129698156544 -168891248805899375969595396422893568 9192987659067880219803461470912512 7401818065600349128828865092780032 -62350484990554458209082684508995584 9573093736844062782041015862689792 6874523520812460703092028662087680 -305992969420111894565941490978127872 2742230304035321816641081096273920 8707526054270609772783409312038912 -938492228634785451911339189569847296 642171163729953574555633326227456 337432741023482102633908873986048 -842288583292470915745084527005925376 1340860556621424285317330357977088 9835866338347622799659527101743104 -231611346558030935469883184549724160 8286366646280423612192678846922752 932885604366611787149498170474496 -340186281645813537322861376334462976 9706710187492854805263114221649920 6681825837140183462760007025557504 -747051578007938787310307292863266816 3362312308107119195935498309730304 6742064982591107838682356990869504 -511456748118690875473861932444811264 7745270074268352910436229416222720 2000167476365409316360506906247168 -635837768765387221484923409622106112 2271847058335837460203098198769664 3985118014228095029170707550437376 -377484138289480217987402136008261632 5908182496598632483625149482926080 1214712472285373603652304795336704 -806891688254879706686749357656506368 5852734150134109276662700680675328 6698859958118437331020693721055232 -421756519957290898591911795899760640 9926636729943063010974489261375488 1067947828733025437631648966377472 -909733510375714121837625063560445952 1878304554840132249530967552688128 7404435571969539873312740877533184 -110706295444927537637278046048223232 4897142041748980142945664197722112 7408833033910254388621241923665920 -557416560701320222212508690522570752 8244958495270566421941021474553856 4105738625503229777188195127001088 -95524078815450607841635406949908480 1913917780105999334718946020425728 2227034914154518198556582863699968 -198853033853373068457893900385779712 5095674524380933954773739756322816 9894556162315818862480478481416192 -531835895954831894903824989082877952 9469396623705890760580017539776512 8323788456058568287800400564715520 -668954584454826699145893778521325568 111486607104340810715416781389824 7678614202473856054649503076057088 -863141096023714266001704833326776320 297394588448086902533093437997056 1028388883159304218855766593896448 -592998761221198579250015866317701120 8727618630176473633483249141415936 5005246235568932949280396236816384 -668978101268870143510537773189693440 6409526626709272450012963514875904 9079805464983813403415001526435840 -906843793543195481887154434515927040 6777713033892231051180016083664896 6328073849752481483885607418593280 -648800055486953937108329696984039424 5966653575503369756122100740915200 4343982958344657570443288698159104 -835219226236300218640405370373144576 7165859384418087566228471135862784 3289085064632001578662649791512576 -263605651115772462733888363379556352 5082646166197221817427117217939456 1981084788217229448767254007119872 -936632892826973987555594747324137472 9941655774187672251090167704584192 9079597595877907084840139533320192 -60827944756601449705553261737541632 5358822404438038897035941928501248 2947296989906697602579124375781376 -128360014455043670427931556215521280 9057905592462278494714784657702912 6875491826781491387858596090871808 -536504294027797969017042245066424320 8999554566246598613155386436354048 6818760409556231120265616803495936 -425960305134881488824251748297211904 9743848444922282332130956273516544 5129838290215239385592460149260288 -836102077653491598074741923004809216 516885559604530136066336055361536 7598237522175822105198509867139072 -539856877367550424265924248208408576 7199903307823521192527876734320640 9188752536267297203537606873186304 -963431236285114491471702166113091584 1875293669983703217629048606818304 6427725842649551852040886436233216 -731835085324669005655386795343347712 2021406282881152860511588103225344 3556564348232901911305246574903296 -21217188641717114948994748773302272 283950349257431236632453731844096 6716326850367218489489804719292416 -954556956848838008910784912177496064 6750568159969667286614875538718720 1682420275251231865270131299975168 -637737523482455451690734877283450880 894968526154310066264068941938688 7996576175899080203763542852108288 -647320215749262716871841841376395264 288118853398002719117524900773888 5372848963905261623817930104897536 -921035613149022326379712014410842112 3405148094511767175893932889341952 6066234923180819173884529412669440 -90181041886973755574124060581298176 7180282724100430413103921687953408 269874799788732289717453994328064 -137200423300451962330076507770191872 2834461941285872358942605611892736 3046245246611468166009176442535936 -431403891557998961286457530569981952 5514287665217168222150047830114304 1828143024952552408173683662651392 -612410016875360974075260616457584640 8131726001765540384850966873112576 7059550780820958633728552424439808 -372880813668373274212272988649160704 6697590736657748782102071656579072 870280316169384151003486528471040 -936819465613499320291117827436314624 9340916396724119154132741477367808 5058193734334469345549235242663936 -488546101657672293823945885268049920 558235987562555036036996848943104 316544148562221814626587414364160 -816102273911212057055851181460422656 5001550340733832027097468476850176 8361887628110465757193028709122048 -993703039348180579285701696646283264 8482613632257992487739343861972992 8062134787166496114771604013056000 -78193444402557594241974131448872960 6107098864905626818986335876939776 2137602943129601552267686732365824 -439878434644247760791204330072965120 4840789290991296280236498144460800 200848858593687444923259990048768 -143687842397711314862544924237103104 9787174656580034095177061042749440 7421724851191236985239457373356032 -529305691319459688297896345600000000 3387755229135822156352057270861824 2610456218581962088244303022260224 -27647813348410631138946102463561728 6697252717137538034890843407515648 8905245074321117049463048958377984 -982347700270380122224756260679450624 9057152698898081717920053434777600 3948866190139411983566104025890816 -66345276430826098840709365961326592 1407915580268886989530288028123136 4767233371908211262087623958593536 -409175601739525818868948546619441152 6965161531546677664150581644623872 8250095280804878944833242656669696 -849429920821945085590869028796104704 3935455654853628470437024349814784 5731772759308868928029053606166528 -753962687632540411548101504573374464 8866497471392737316452228650762240 202575661069811375621018067402752 -38694494800564872141436206702395392 2898383740081324604407278670446592 9393201583028814465346492375760896 -574487309224772982736989088710131712 6359914683371404896349974916235264 3954668370539660149356320113295360 -333943888387834184746511072611008512 3330193632540776698700495646097408 5935208146663239554954369678966784 -955628978851851381000011327159140352 4570944879316075787651515584348160 2993535478533787817216459120050176 -11135265603250208832611847860387840 6017429180059118348413958866599936 5824800416167226669918860011896832 -783461424446310668853300538623655936 8672053365630976285331502470791168 2666168849232961093795751466631168 -37926629204681600060630140480126976 2021334076540309707781437332127744 7307134870056396059956562475614208 -192100529128068949610206724540596224 8472518318966854356137760918601728 1953329249063405412088833697120256 -606860543058360849254040302855913472 6047915304548580818688979471695872 930961886968629437715962549764096 -107070866070743123146626640583327744 7214214629309569912564952271421440 3439226549204958506396389694504960 -549740031464133072381233689696141312 6805246361842070001693916972187648 9796596456025163941857593703530496 -254273636200030765271043103709462528 6791573513249973636309560726650880 9638201298775403148323660991823872 -105416240708821442685202663854833664 1181178995952303422298148231446528 1259923169667424434580215151198208 -195713580026640888431639663051014144 8587081583889270760322751199707136 7690472639380753042770740568391680 -364170190423879576784197807415230464 2826930766351725292710583884316672 1875582763915082748304320664436736 -903370602460301109739466433234993152 1077068553025104935665375389941760 8453054353221157936035869432479744 -314559896725473093203558330659766272 5592961206078308137919235252813824 9550221301615025460688228431429632 -12958590474352943711142929487626240 3316142949520603588317838409990144 6015513626135173857297089406435328 -934939018634313306768088959968870400 5476763749127091460749735738998784 3783990403421991120948402979864576 -119837543228916849469105349863669760 8979035825923648208115098374373376 444867895705112457995152248537088 -79104506618808398113591516383412224 6603610819844791748402587610644480 1059756418228385456261807122415616 -838983991733029909436799997565730816 4099649712048009309764889851461632 3874473036529034836985028601184256 -617673496174791558006815413382414336 6940078619841181297418377686417408 5561095407709697681382673207001088 -34887639457032061130714623961464832 4520015115960500948360455643987968 5927953231032409490270749005447168 -449888358964425545270384148571226112 8072601284986515671880415234228224 8283197373513398751428029538369536 -1828644395763805917863253356052480 8943392358392811220942582391504896 2242928653062705212672911744172032 -58283532441160122090402472519532544 5005926330244878162217383174864896 6310672693525418592985122699476992 -35035880004670222066645657892945920 6781845777156258827745566149050368 4197844448908646238887335572799488 -640890034535727831507899414703243264 8745315378281744815625261906132992 8706189291518274135739025082810368 -780421563037062012776044835261906944 7467962481755324875060745066250240 770016282604727322514042185056256 -185269022527961941842012667652341760 6485270100676947463618789151604736 6839062022796554186833241000902656 -719070612922900978159518744139792384 3832365192752746653954051458203648 1980674846342234031490037561950208 -139789138499124989239177517522223104 1884518281282355202632182518513664 549505517911064463277626075643904 -883519644555363033376843846463258624 7814809856554615594071681996423168 9938310689006877947799847655440384 -606703018216816590669983582252957696 2789704910474663088382179436134400 9854242706801269184380844558516224 -147356122255045407958314955053203456 5509955125729136018809241401819136 6354991718440584891778333369434112 -777602290691318556014673433729171456 8724578270525940769665403049738240 9001924927342232379491238272827392 -494218632570991697402431876034985984 5606888164509331876847421514317824 9879606186751551619364085626306560 -698977350423771293734761046839656448 4954516709032399489050974869258240 869786786988308523261361219698688 -36781838508030690712732705476313088 3585098649861782267429337151045632 3354155771184116158308548675108864 -690191682418649792070958718283415552 5639402065274397727510264696274944 2068771648020355623247369660792832 -725630693988311435163560687819554816 7548646002863110520366421652799488 9516213605704676958965111902437376 -786209573265503259036535895359488000 9291145485293883611479697954701312 4247562449787985295517720602738688 -58649315849705295649845368227627008 6634096047882108654475115128422400 2297986775566759258135713344913408 -642637447894746801510619934109990912 50581366781672055949788241199104 4438627175520869967763393455587328 -734153710073327983073231933787865088 9250392808108361293111980690767872 1326383670795022544129283460169728 -864155570365534666089281307440840704 7981570927303306882186607339765760 4607306865732332911111316583743488 -400857704933203442105702166386704384 7463430155200528704295209340502016 1639617914870222522716411496759296 -883317994882240760578461200281501696 7018412032007445645265806007730176 5451958155890863582674957186891776 -711223197055240048219276772296884224 7535554306475017347135902234705920 8517421119425610254366972477177856 -174279759305997962988019501802455040 4745288422225592239788692407844864 9035935989643733633491048022933504 -821686657441915514302425741052084224 5672339434839301173425605705728000 4722474512855983223875366373294080 -395638158164046474487982786336522240 1626822062062078896137567534579712 7736160469926541790452605958225920 -508622209184794422461382158597488640 2245950915831958872704125650337792 5018282801720651043541057236107264 -361753266942306166937681304242618368 8359330445161607510172508012675072 8858001280102428721261202160746496 -669995803844694443636489279168839680 1500822209603559275179730280644608 8391377614392915743745030905397248 -73138873585147680903281048689836032 1936228051963835159631044624252928 1302494860622910103703110740344832 -94115522090459837887278624047890432 5534288481185671248874776356192256 6612551178788916254446290097668096 -57895034559462406255321802604544000 6106562066885808904268847207415808 636943026569006211731349185757184 -87623434473707560549005691279376384 7449157721490088148057784953339904 2109831735591951848497558264479744 -485073640385340490512115083650269184 7370109602081208161487311473737728 4075593216151225273830096265805824 -809538274227056001843190423699324928 9226618472257700679854214661275648 9552734322325410015518612722286592 -615868935097489346518963394459992064 6723590273370165421352248485609472 6487594841214668714523108002758656 -820212035687814043456174855515275264 4587500734238768364609615091990528 2536638368479785889628002931703808 -546582394742847705531008269766623232 6121401898592966926736127776784384 5015448011659850743967407979626496 -628349641198157812850519122993217536 2297225337845502144098028922863616 9777759219995628079257223084113920 -911524973885847134670648485062115328 8945919076450872828643663799123968 8119794409862661952666471027965952 -747026950920735605208615130887094272 7257269315782455671377666829713408 7362224710011120747994929761878016 -811831863505319772223841336096194560 6764159983235037815256850028822528 5581056404113724529005182991728640 -733003228294394232703395115114168320 9796533822327218037851482765656064 702766376431787243662722174287872 -835048098073998661732604740093607936 9627640171925532268258432229834752 3740788823566969334085334536814592 -499168827895528289661476458213670912 9757880033255456785177593925074944 2000218939358307207814611814318080 -391716692406983417260370542634991616 2284427237724177490319134297161728 3354390995148022700567844725194752 -190522116005544866131134881655160832 8167041875981440532002978853289984 7112153422877989288746281626238976 -897766272172049415667586694866010112 8318101552787369405488936744124416 7502400012378648673554398015651840 -162425165691537557501188364285509632 2046806808552167998139076660166656 2909345145571159127660504272601088 -526966542588820535031680802337325056 3002017826628877371592521881223168 2988933585999989115538507732877312 -922628164951426729825738408549416960 675197008275960249047955693109248 3855504927108294556664420594876416 -406258605430228455316117779206111232 5474847094595638948840804303503360 5563371012398400688180916865990656 -184123632831754703268223003331133440 5157701270055885309646840417746944 58885065654815609437961953738752 -417489434545926724427082528507035648 4010342842652766695436973502365696 2598546490553213014465266648612864 -769177308796936708259211546023952384 8442186496072347402970369456340992 1893269015297608971497325922877440 -656000262877073892878279521406550016 9632143851069111491605021688070144 1981838509164312245367837653204992 -643315356849570544657096230500827136 1045187061697377942698589125869568 6418588240303539715897689146130432 -103857178874428522315264091102380032 9280192229464239188181226964910080 287126178279104173687156697464832 -969328179805100326524941075063242752 1790837884606049877416437866299392 7159693191262106427056002527395840 -620984483466490528140346765944553472 9311781266574259045637350366380032 1329126858975658327779958981656576 -118208462621117777340371416385585152 2976225370028623117576296051245056 2226006326206708955936312604491776 -211430863538035356625589894673072128 6578772773815352952442837165670400 7516651635276085346362956412092416 -141511718044143646509459117032079360 4372339806607845932174172145844224 5082018713504167035449248254525440 -139706282705494561846149549085687808 1245434367187984024085655189454848 3386037982436329269601862179356672 -282403652308943663160369333307179008 8656242862421765844284683327635456 7768279440240381557872733433364480 -875820979594135318712769063711408128 6749365558773189392281006491303936 6136895380384067872706384290119680 -31224488942526562443361968170467328 3469133191674245422264038044205056 2344733560649993004476609406697472 -664076452403821026322391192936906752 1148107315931585222049176930484224 477364057300828177938440939110400 -138988283938935230128426738228658176 2300384770849837802510125841252352 1308886611455355022592073420242944 -229665333563563256002303386248544256 9802093491822987832166364276064256 9816744086993320207301981933404160 -986903454524273648929004901395070976 9040967139761151360182188221923328 3254894743694881239094753937588224 -388530209702047765722249772966871040 7648910965164227978584553110372352 8799439465089555615572823323443200 -343593514120147976791237985539457024 3239057992495990851636033855946752 2880796354548445643949718605135872 -734446214734376151209620123299086336 8608545763844791127477356909821952 7866387981717412576123541132410880 -364957085880523283606341271083286528 3182354032930518222048658594988032 8557616725070315470131731726598144 -468969297592797634245410907846868992 8942841411668837343012914489982976 4624264948808259593975747196223488 -326306849657890205410961879363223552 5634214114547097877645655004938240 4309557109538894112001949524033536 -779000827486889598446257572191141888 4495397297889250635304617960800256 550994987248616994976760231624704 -692164452271326725731675567757983744 713281515854578381721822405066752 4981291581916700610424015144615936 -953558033407115501238286228832387072 833590202198600371543445302411264 256102979492790150736509155672064 -416931701490989053513769472992739328 9845358913441862292385426208456704 9850388556089262915922651527512064 -3312279771604625700023741666295808 6790061678083017572212177205460992 2478326282242706610768494202978304 -459980394857761453313209072611229696 7338886904870801501222222612660224 5126902644954164307973933589594112 -126722011931209967471871310627340288 5422707154460343704407895152001024 4147828657988497873110147044212736 -251014298920703845329251110471335936 9510668344323831605879184593780736 8525143132011152214201985631518720 -840774740467965466777664234566189056 9431460472329469398552373958279168 5137304214216674388061114714816512 -714265034109100640026708159414403072 5149507629104328236039212562907136 9284676479335966872567454940266496 -945682037783023642102737377580548096 1665877795301015772053624905007104 5911299446705559088179587812687872 -256087413935470611694021822753275904 8590026666707135562786370941353984 1062339853823536280967572046741504 -557212204658215390436764575871270912 4580046499763918907187268799168512 5354710788257391002047811745218560 -295402747093030778828168007516160000 310539775724833453052161385562112 457527493200783498795374943928320 -261288432152508017328618543582806016 2925617329925296155108812846530560 4618252189871005519857045645295616 -787660933842363049725638994779176960 7535778959990307187121771052531712 7607932909882313755981770754359296 -291127309929785457179869233836720128 9415140547481318841514424675598336 529941935711121095292140969263104 -146434354634775691570738344786657280 2906879900691518047509615139094528 3691477381305208719262831926575104 -251909292512846950390846822457278464 5539777769529206246118508434817024 5105228925708912866801762831433728 -171694593768699435357880880635838464 2028467409040972160744756896333824 6537741471793491322252995399254016 -28503995938281682934162041125994496 749714299442822005692973944143872 3680267132730286569401514763223040 -548117116561990201910215241097019392 4820876398898039776785394544148480 1066220014637330728171687064371200 -471570530679136120018796513884897280 3496309195156687075969443643260928 291524502939435410496102013599744 -751194760897039424840147836191375360 3641398394819820613979876664279040 8931093490144830442195044649664512 -748474649735395585253716208285384704 2162598040022449337145649967136768 370711473528659389172851981418496 -616982024384515853431091621210882048 6103339779161900373838053507072000 4135172067723837418890828445646848 -909861853236067890776786574350745600 1482012736742745378908793825394688 7253399175915623224251353718063104 -759972436607884098855526391078715392 4764510047489640263394270472306688 1639444180951001595891076980277248 -340523498937706030884073508744200192 9240692709254505133343890663800832 3969131007912531807307609397002240 -947265279071449883453566720283770880 2963007741575555157130472081850368 9463166290986142348344572919152640 -323258962224401908417690557615177728 8900157010220272421826086624559104 6919642472071004943590202676346880 -5464116710324999800132291233054720 7641084858364340807312921585516544 8170656510654338585226018251866112 -210060958794362600754391516413165568 1001177981519936049105645407830016 537279130832748607568764586688512 -661806246673522853619753303719018496 3710531727551107985373601757921280 4110855935667523469661118899683328 -442851725720409941730764807271874560 4154669421104026642937603306815488 9171717653923001836188859921072128 -717101236310392643392599806223319040 3124752897704639179589063851114496 3008777417121928826984320242548736 -999078571137278005555426218024632320 4992022456119527666735936343900160 6309446065472954023082332904226816 -876192361609126681767344341696643072 8950338302516343158793798238076928 667586447518798102349069850509312 -812459707954176658240311165127229440 8106543889625545314910856582004736 2875542767548801070080308713357312 -933201928226840193068313056573915136 2406686724547773433131604901888000 2515826329689976664926678021046272 -869745671808464943638020520245460992 7277278579211059938999618670428160 8242109783788047654265993063038976 -248664850858842766020791442734055424 6658636042855768164566714265108480 3764412644890188634921947524759552 -980126173350838774146460990796988416 2761090119362848066084828092563456 9080402769056449273604242002673664 -259576832053554728603136647619411968 7301931240183831467248906238164992 5276376891002115262248353575993344 -626055521775850185479037496055562240 6544276876993993477119662496940032 9724434529948216306925975166255104 -400271966121063651253543761820516352 3603850393565935555443836942548992 7752538107065088156093598796873728 -117558350257210644746359217336614912 8440790980334127021576993294516224 2872872166392028612243061787852800 -91779569388541911268711439576072192 1794596508231858336471899732705280 6255091686870223546186871993270272 -203235849771713290560130544857776128 8090555216178568326058637747290112 8989154019365100585338365680812032 -900619970397708787301941965695746048 8970845350260297030334195653672960 4127618680360868345311530493935616 -489504727950989867701706193666834432 3181612808974230337502131708231680 652584072516145547788821641297920 -916472168098297794909649736568930304 6278819949358282667461861085020160 8133895469082076727298348868960256 -714820774189249110460626696524529664 4235647502551773832471643538063360 3461182813835970065712287171215360 -691413990849429364275257738998579200 753531975458624245864767388909568 3082580068511235152326182297403392 -272549081193995074006970466912174080 9814068616631990957653034423812096 5560993243089943397562523647475712 -95754850199209281468368492368494592 6681071112282554624016852805746688 6282472848579260709582249671000064 -158292156393055276228104159030673408 6451231867754132366186762599399424 8331165664138597233514918409404416 -489235776914474453785674243312189440 2720974621069846124278785341652992 3260873927708542258259010967830528 -539111066525096969441948841281585152 7072834435386628491848467664076800 8543729409676110193812055269572608 -217473019808306162115008883373113344 6961517409870024619437881812844544 2981423301709542823501074138136576 -16524326032641084251736743757217792 5031007915664628782369041010393088 4116976356313227552089870860025856 -135005850290307480648645443963584512 2163605275208640684169640045182976 9237220907671604020194757979406336 -557876495417176205257060239645081600 9202551169472623140106171307786240 2095052577308030768027468283510784 -852696867927492668550875158140682240 9483123168790215403952856291606528 7419912283165108514998415934881792 -970980000191315706545696585809920000 6095248484014367787702439362166784 2736041577679516429162667430641664 -651441270119277915320062466328625152 1987518883808567791485107767869440 1453625442059224946834180126277632 -926669062387902891374344376688836608 2242603310113361829457921537212416 9066966748595239108743340392185856 -991833712141416089099359334755729408 6095960847246838691193685545058304 7928965115301458997105502397136896 -490134255757426877365475661121060864 3561171730146369979557599707660288 1908843427166684418230986930651136 -311812665878135953537345074784894976 214429144284840680797202823512064 7135930554095272394655824139517952 -997704055529335000459019510756671488 2704244795788254089573271871684608 2515498630364851719018867582828544 -293095688065023415075731713132855296 6006441406755563402813595914862592 2283506973101483905690139411611648 -180877249118424873937564930913861632 4573904560590376847267985350459392 75060983079591822171727563063296 -72472696127272003551875091962789888 2141036297531937218511073510948864 1712802256375766808970749110386688 -437460114732370093975448421184569344 1608788912417428706866038929620992 8506307031925850282258265312067584 -594151164359401352714519173050400768 692127920730572367904229124210688 7879311967805544437428428231147520 -999223669331666011433040478921031680 1876264043685844783496494630043648 2762925857630175564974523492073472 -997959694617316504787973537525661696 2311427938457146774642644333101056 2585457564956450311626503047086080 -934116900781813986985011735896784896 1285047879682574834854909513302016 154570605657524874854294429368320 -59940809582785387714166355014975488 8692886123193442784274118701219840 1547495701552294794507095874994176 -456357039878083986764669815527309312 288872047814522850287405844398080 3799036891512536205482507777343488 -204640946695834910206847799542153216 3320258188450762301606606713913344 9379827926093345533027349862285312 -861248943622975567223647492345167872 7579611480201790509148913748934656 9621489653258200502467093436825600 -553954634772023098824048189405921280 4419712888521222724116678327664640 8360164393128444930015242779361280 -856884158783189507832876083078758400 8631415078279595263286809934692352 3318025327674437748926617149767680 -43374574530083215644450738426347520 2882522318880243866600736548716544 9522800834662421678492562403360768 -615336787442239196407818456861245440 5711329321545705721305991571570688 2138992158971528464630440316108800 -371359349047225953562699980337053696 4952359156920690452663651417456640 5520605177312389628758587896496128 -212331888959884804979709828294246400 7797492844844313685516854419783680 2672842618920600799266758759284736 -496216691845925683941807516890955776 8568535890207244329660304450387968 8763343658721836195472456865021952 -205872797512393919061632587631951872 9465492035434410794312966950879232 8708696483607522225830253605945344 -698706462847945405349786476703907840 8575758118209385867780694321659904 9873084673896846208764148254244864 -131855146040407122474093428330201088 3240949907955991739418245676924928 2498731694949880212660997324800000 -861817366596954435184946463658475520 9128310708633610518131915834261504 169963599117522196493144252481536 -3239380876832743488415325457743872 9183774048051444254760679371702272 202594321266595165664211246252032 -241945917842292077697077615527985152 5595671235355099255406341616828416 5277389612515566140314667632820224 -464382732445736037799690496490078208 8851183995789446890933197735985152 2162860853679833135306886680150016 -898397863493727970294983654444630016 3713942507312067481314024283439104 4478511488619225727323158247112704 -859413265100240298309428995292135424 421256287386630955642720165560320 4888244168754676255673954976399360 -940745291042978495275512387235479552 5089438115838933200507978444177408 9543825759214439229611546253459456 -673314740490293564925071059148865536 1049762764549316013688437243641856 8293952145590937312630631043170304 -730461095415822556852133933747273728 4795256761294397181107429561073664 7922606333031347216686589203709952 -641836958472436218982021063373750272 1722706899385931339337788622372864 1015042548797517706506290669289472 -743637478852788340220045090917187584 3537056686867278333759163341996032 9197121251237672167677540735909888 -467569272196022205665894572020989952 5278179685282398474393882487422976 857474651226253468094564761862144 -677374403565770281066790540770541568 3645528135509453029311251287638016 8382130566591404083158828703547392 -911058873624594433309642743282139136 2654508027253731449506759536803840 6055494005059939882169734631784448 -685143397687744313513207526594707456 6169843041068141160698016715243520 8625990386961133038040719158149120 -175557148104743832014241510537035776 3231335609988869523851338175217664 978944409181093491616592078831616 -573979083541554729437528745138192384 7339828476156946842910066359664640 5849906006920089849362027942772736 -641531740557474529208771291700527104 3087054415655841255017152696549376 5393983565695844743143843099049984 -89428178192287409439386243648454656 4609153469195772076616554813325312 3678350762184896287151635874971648 -749658511066454964532031015387922432 5240961272954889739437873869881344 809989118230566334450465501085696 -843347826860873555461292955510243328 7046212232302602524448304119414784 4542243487562345541442989243498496 -14709731996012944616084403457622016 6059750736980500301207695068758016 7969523860220843874987725817905152 -627851479909416712186624374170714112 1477603899941618376846084799463424 629038487257854810541710379057152 -401927037431215256022993413647368192 1084274315940650083092082777391104 8386606625361388592671778263793664 -453462630600812522801902180185931776 6971590521493780395904279223730176 8683868054714951083034924508250112 -102063527938066706469967371981291520 7305779218376623991488043479465984 3842564302458322314814297890357248 -786459503941025072646073362275106816 9211723461163585839740043552358400 7946334372893578447705171914915840 -71083498825758611499378761197944832 5211942773847527095254631885832192 3350718465552243380733365052243968 -283054619919080965429934519962566656 2171601204535569011756283239333888 1697339672361476843685704963719168 -661749987642079808336145961149530112 5855685027840576909333423850520576 6400811676541651541528502320758784 -176001882632887942220497232911663104 5532030380830840764117828279205888 9624153695107912454408823573053440 -59970242290634510423574102784606208 2651444299311463689043873770766336 9485963672304723603027827814825984 -4528298585740704186777086105485312 7995234634534320859120757052014592 3994298653629783696755720120696832 -678027825744163667125337564458778624 7094588915891224228127337690955776 692151081814532090123860626636800 -925426281195542630892770627904602112 8663289473008261090039948887719936 716600136524693454549651371851776 -271259042316573676990095725898498048 2257291657115062384898640858578944 2887610878831533773794296387862528 -186465757834411724256196359962492928 1331124070611087778289626218758144 4115848159620194981312932643602432 -422482336191676318177597044058750976 3796983783618077977987142802997248 9299768937987328340606175919734784 -571988945860185816508058906847608832 3948123646002204941032214191144960 497133777062621291669230144454656 -790964290142588913753085241729220608 2448714597662663617792495065235456 6408323640173163624819918339309568 -567762099476808300696365946751680512 6903195718705732882212951148199936 9805344907390509332506217361178624 -401315624129014311778094499288317952 204040463457586346865763505143808 905216942131736972628361314566144 -110826805192218149026451033748930560 6168082677482274275279531898044416 9748583369172530857995203413803008 -372738088606435521195499625667100672 871300209455978148932817535369216 4746531259006297584319417076940800 -944691010019730237054387628034490368 1657681380505713780836145039409152 1171873515935908825976058702462976 -429156869564471115025299178333929472 1248811103802606034500817591992320 8341380276461778191342245540528128 -966233295538431895643221191510982656 9006309149396575340863707492122624 8474002888419731485171990648586240 -495000776082460576711365505511849984 9377252612530678482913410764767232 5450664160021996923304274879840256 -596155792508104327407756140982829056 6789461468132947166516748081954816 8161677032151541024540244989444096 -210126357813603791212160368135634944 2085261171321508227212657788190720 9238742396916352840182714798702592 -819898744507965073606437366896001024 8884093886171686276722514852839424 2771685389108432425197340345761792 -74471276191159230773980170800857088 7010533346189099845917009390862336 2891515955244435544006206894899200 -958669734002759324294099463575699456 2615945992014502712832541914562560 5558722297345609290314733116719104 -483769212101380205027377511409909760 2544704193869943098710912592248832 1743404288930829925008185380306944 -55543232220008404925128948406288384 7442449722971212060641341156098048 8179537221608649766457025197244416 -293425529697308634686051097442779136 224113831113226357193768075001856 592395680895071300169447352827904 -782789617251773749378973735510343680 173740520727558733397839453356032 7237510869527500938881409178664960 -537042352056839042033032521318400000 1887799104022933362544093136158720 2666623961913587291411949346095104 -751398827718056164745334603810603008 9141268145320669292106648404361216 4878300766950183920332275487604736 -356174699479940687779047174714687488 1227437125715632261018655540641792 8350406147649965959995188915994624 -477640183422881588811332813305413632 3234869491111451369265434319650816 4676273492074202706878970718060544 -865553263725037264167989745840816128 7656913034726054552518493839818752 6242983840510325194216047539912704 -407031489648118733887926328834916352 7963859520829580934306383255306240 1412170944462143110692031657148416 -916821045576554145826996176755359744 5759400556627165419967927751278592 6076767249218895040244352586612736 -127827782603979698314446021431656448 1277625979781095588704614631866368 6956651684350246820389638750863360 -674410722190636493240928077048971264 7407922622864106123387619376103424 7355514522486884102023737577046016 -596257774313147314705390466379022336 9190140442689740863130198228336640 9326884898983081244063916659572736 -318681283723148733663691824089268224 6472168578340013422858381194952704 392939713096813355552732413427712 -355114219272319103935713408637206528 9247676610968969495024726054010880 2723522466211286460635782024527872 -701018055139492255057477853576691712 1237311038319405950147426074492928 3502461129097700209075320856248320 -968779825814717201092258108190752768 6959321499565685756878804752531456 2864632336910443210797080404557824 -290838859768891815133286086406569984 3575224265982851574009099806834688 5348934763806471561795903497961472 -874712379715463234809800661376434176 766171861144598645899553608302592 8227048769362739151272270492598272 -896766589939685016896036718981939200 7019798982065728114374304497401856 5492431047720521789225383588003840 -818308875920415230779471156817690624 8713665069096252439990418924371968 9922024733579191259465293783629824 -714023867243467730727021252911824896 5632837945197619426611078899957760 684257607198242685269148514123776 -905386977895865760854562753984069632 4412041889176301244098860806045696 1653234044321028604737075613270016 -900418597221704642172670056855502848 9508909096763524304162255353675776 4023049773779941751119419774337024 -655719829240652946632404636098625536 383880399018722438072057305497600 1391564376960903549341591643619328 -477187488195871201988355256324456448 872489774921444640077214430265344 7233988148348528606728732979232768 -332055027396337268972573171120078848 8226299533884780255564270321795072 8611643825024281300607660472664064 -272432107147781552326348393293021184 6730404742397846953308867883171840 5217770411795497749141562259931136 -588899827234922789558128714832674816 4561858557330476661414778787332096 1648700672414132452219317055913984 -391885470126767414952530858406313984 4533589459467292706603412129579008 1898022461606123243446598463651840 -772331418707039808157168674124333056 7246311824737215365852860268937216 6407916341712421835426652439445504 -352262296719817061027691632821010432 9392306238661841267344200496578560 2773839315418219654830443303272448 -141385493144633836957439659993989120 2368747900681181042841003621351424 2987060261667514094698714279968768 -191954091243791455506573249847754752 3299978208905702895463585988739072 6376050061307216163538413650182144 -882239041787846550594729910277767168 1382979858141233987243324603367424 9857687677004321822880257552678912 -66181269366397866130056258145746944 8358927444880893405887530566418432 794630656058327329504216207065088 -253395637788809755580702157875183616 5462606429831890806320018533384192 1710811091330686343994727290896384 -11214556860400629153920193096843264 8231185565209877352055759410561024 1215159974046027345370668062474240 -719957056171711909219160931665182720 3216013904894692684072582809387008 8666513114645619530686396358459392 -999334126799577422709534189808517120 9146564824631396995305831961460736 5395668855452574297408673016709120 -324712915690415163319572510694965248 9061101581441726723655833976045568 5438366346439343118237903458664448 -715968199030490657200386346686873600 341447599080937129099392689635328 6184631418939640598140214835150848 -939488914809883304826059290243497984 906917318486322570378268112846848 5278905836454680667890629407145984 -89342080059679279066761431154163712 5786235977005836995270491332673536 8600688165272471904109772301926400 -3159340489066811525460390376898560 9211628558909114821640425673064448 545110796081564401581062369574912 -780684587749613557393133731265380352 1329769108175685523137439834570752 721420702000279693125439463620608 -241876565078755417925663432005124096 5114973757825772401924153697894400 5901214177332472039059373844070400 -372099756809740386847127772038430720 6965335196396639046579275496947712 3952805392581761568480776461221888 -747551853727384803989180622424768512 2574404852333948542635428521443328 1539281630470754587014632157741056 -191387043229928321800386274029207552 8296487107655443985918328832000 3525475774189213213128740680237056 -677065726315135096187139342364311552 3859949325131228834694414664204288 7537261754853375259373573345640448 -76520546895449666364977509155471360 3346258477371981709976573644374016 6772981357813297453283303200129024 -587470081898086024487098889025880064 5350485806071821046912817523851264 72128444798903315648929213710336 -98061617550057121517650138816839680 6243237826024589307779040023674880 8720166202419763639288552874835968 -950580921852735734565199538741575680 8321169876709571956777313542078464 2349899317418935704200028063006720 -531032792783051484700832735896272896 1348584268466705518670292203864064 7935792371410820800603900455419904 -565842270256129268150742843993882624 5778356832277975630777267588694016 4502457820740223313349983307038720 -385457698086040523498343695321661440 5332833915554221688252713861644288 8721695107586362917935302483902464 -621353735870735671379619921145102336 9712812819818630477059793390403584 8856778475902421249648266269687808 -504683826457412339958933866370039808 9186897835346662971051237739331584 2516039362747939351341374623449088 -592293163796532149674093370570440704 5126132237898860314394902753443840 9880263020594161837135358072979456 -630214927865065094283747548758802432 9311600013931400245832053090680832 1560470011636675016469836780797952 -619971209418594771889378906565771264 5302539023213020313643617146109952 923612505021755414134336358711296 -225135544401822702620663362602663936 8950109046916288480624741393104896 668349920688848726118429626466304 -91236665558485834067578378300424192 7930338977425735606511657329623040 7409486989503133658060681067364352 -198591418601032009105188197599543296 8144226511344807716527104736624640 1628650339913586684849593237110784 -140856819844839057751990620081094656 7229261246381392473620306724913152 9803312268015176901821381981765632 -367598154216863555771180755628064768 4859186692883772132800078758805504 919343647636183976115524121657344 -588247584185201419780878599278559232 5595727208392411917091546060554240 6119524421928008514575321696043008 -438993866284189930046507000537284608 7745380631092797802040377781256192 1701828427621007675836005716328448 -906998463103442135997984113405460480 7561865075821763781084207619506176 46196888368973352410781845553152 -855740830147152105688955504335781888 5743238866133042634163319266607104 9325193904929880790883777720090624 -948739861720249893038584541845913600 3556104401684446561124193346256896 6382891615020689212489849139888128 -779135646135303950588330148844535808 4159215004411461184905197029163008 4498322337364978489099110536183808 -254392406314522010343725846585409536 8549237594656106251013164309151744 8463017695565999229264753814667264 -13288258210578614039640701287792640 4267109840125952544413475867197440 4386407619383693944882764189794304 -428266208189344871547180566374776832 5333911452061949788660626622513152 5848080510621352759714601051881472 -803048813389679651347246144915767296 9080384156406046408080651464998912 5022964595846589063883583393890304 -506110209989231463146141985202503680 3477699358858482383790438508134400 2034078805597021099919049649815552 -687235689545535595475152020583743488 8652042969310548499045730400337920 2149458592378902117422270693507072 -149563566480572596849320425353641984 56035241199153038344963860987904 9482516637420974818876008572125184 -813734245001764058399189973709357056 3326177894897441123858693964693504 9565464282502852869681344646479872 -465901975285236566733410821340135424 9667031738731730033054175683674112 6968736652164033578364856287887360 -94300837537709936671133488723787776 9467135600607358346590102342336512 5278081430450623615300987542044672 -638779227315982699199237341216505856 1592678703386667805030492086992896 3257212911111692496359387541012480 -792894448139765126506545768965341184 8908654919240788318275284664057856 5800001690799410667354909946413056 -134883253407451615396073357115916288 107488536508682726058320944168960 1852552485776474022249047131160576 -491896009452720766492000858578878464 2705010735844899615926556725084160 1130948036620037919541216789135360 -900786685677319220504922435644030976 8834481307396640829735371762827264 6124400661036794919304460765233152 -207146884006544334172386454382051328 1399336813292067701628660835418112 5665340977714158586979530754228224 -278866636833442620442027255759110144 4425643843899447256824930124169216 6498762287569391941620868795334656 -560157198604951988913837423089156096 772777019613201276845188299358208 2036831864220463543853976796528640 -800539334392682514894443212401803264 7029494190192148177906512556982272 1702908211441920838669235264684032 -153143286127151196619071207539474432 4660771808419920086744849704812544 6986638194679143455615075655614464 -364509412500722959253993598354456576 324204376355579123431460294361088 2397072517172786319390629475385344 -599223057000182940849993568621690880 2958413842092963762329413396463616 7091041745731687937178672992092160 -291344204720872166621744694692937728 6460090773142134081196860045787136 9251027108751149568420317293969408 -552897838406662081378333031839825920 8917395425101306642019474900779008 3237227732846896525873163330912256 -19120765613431630362996275425574912 5930785429881950906703695273000960 474642519681721502884108338987008 -404593292444077489404555747940892672 9950363454280984112399350417588224 3102759542858925954340418129756160 -461118826937579649967247816875048960 4559483164316479603899942798622720 1606847804248802343076349146562560 -455725831169138119265501347166814208 7449027512767963827236868724883456 1513511142150617163277727850037248 -709859785734740924778559555911024640 2002428537853084105045739684495360 9923462497379342509577317321277440 -926664732930893854844370271342690304 20660824257558930416168175927296 2499188632819113324784315785019392 -139539703147033444055885498948780032 4156761912624536584406960026157056 6061139900619431892366448792698880 -282167594391018819864478093192200192 5934844941371714219197608734228480 2711849725974816792450892266733568 -664440618245354938937741708955222016 9207383298545930309158045376053248 9199591165823122376051725992722432 -425820080036648352197544564821590016 1442914849086425742166236589981696 2277677476232378179141182999756800 -312214054295269362622345964131713024 8234887884265932985637514218831872 4761216204280116883545469487153152 -304810598985068868373638963630440448 5449977062391537499124283534737408 8004976554668920999526033006788608 -476554415638202648944538370638348288 7313474347379321867238960932061184 6837676228601185759944010568302592 -468183708850629173451762106086981632 4799264966400243089382090811113472 6010938041503075339998657163296768 -36746423040739161773056760255348736 3866985254758294182400336221700096 3008722447995161054520181765701632 -327699380089277793796157454136901632 5930450211833188087815922075566080 367091895925332080237751893491712 -557393566056234014067693962869604352 7800901449413762110646697016164352 8759027550587872080555239387693056 -723356234556535366132680119820484608 2295722604046287189124346879672320 4181642403162241771298675327238144 -927436030407051513432225137903534080 5755719693134511925769485424787456 3791988656840385225125731999154176 -3322334810991188544682665814523904 8682968820478673960181977344638976 9704341541075014469428090043891712 -262990063847376979707983249184653312 3947437989824918675749097862856704 8996360256608214446086062631550976 -311419378325965529413179677272440832 8184397668008948973495875486613504 8844618053576475834514611401392128 -646912958053516102389933793217609728 7460307982833727569098643339214848 4446919851140707103836557094682624 -226223448857526576236385380205592576 5086735720453205638934906823245824 9721005112961564805505702952960000 -948729255371567268769975387268579328 4255785640707729163496961773404160 8739314388701773753779343073476608 -728697040813470530141079865636421632 9792416200997774808708983270932480 3864976786482292951749381486280704 -80699495964227930809938274991210496 6453758441568851755265893324554240 2115939209494581301392334976450560 -501851777666934628432178478741192704 4905377981361262196001742600011776 7075716549921692779299377659248640 -406644551822886061350756446988402688 841909580217008073399514748157952 8863865997503661388868790087843840 -359130433186114021454961969721245696 5549316262981267665836152318853120 3588484388094768240524673056505856 -94400792172805513274960381447503872 9451007294695317952737547162484736 8470540069984731350994391264133120 -523424268949360633228814371214327808 1055224982020908261105581309296640 495005127116283680349997919895552 -711177000733334310992179676097544192 2619660852555321933526478085947392 1417413219565807865380314906886144 -213283219489137687540658127826321408 1349555168699410110256411119190016 2908692987539182897323454213652480 -659604321624094862227433319963820032 3492259033683994274864668241559552 648481094137104945014287561129984 -919034354475487571608529907681853440 3274431882907022807544484358782976 1226423753346956250174335666356224 -582003313583397553503730210372059136 354081195632058649064369515659264 4253582297615275907316827270676480 -928014523455781929607594037166997504 9974040398019487560842185283731456 3748018751477020101759055924559872 -42563791906437870797084034173239296 503643291829387986167696598237184 5171026822680583321333824443383808 -933554817264874430475579340009504768 4390738918521501575158920598519808 9859573871301587300324143395766272 -367731324168051797255557299287621632 2823792609330724221656012744032256 305995629213959762967272561311744 -159110547767853561873654385022599168 4466117466415030657453222153682944 4085018388092333884919753018966016 -685913105357225779478742601463496704 5943303173622880324349253843419136 3257281265972374387164576760201216 -636243409503994503690951038152474624 4161519957965401823782076703309824 6818962789282467495805324747603968 -190006984841145444935741206597468160 3677683694082723170975098630832128 6981808340546721477398359898587136 -975422431731037340482517910532653056 7396390405440019412273128179499008 1147701970036527766131589186060288 -78814015792865498770307194713800704 200928697221394312187535536685056 4897461760232550959162948283531264 -993885545519453470302021564160278528 163812661378027702779224958959616 3432699497820006025770284580077568 -583586155233850254644761994696065024 1741610987462745629669093401427968 8000815919254891186036413755817984 -909330956629946124638387458203975680 8836252840083355381922794376790016 593345231418570497822343257128960 -311330761374795488704869121237450752 6590252226536087471321945695322112 7862311796329081243837546830495744 -236083815020237222887872560814358528 906556840940373563735730569609216 561726329674187905398744729780224 -523545116379131294154042567368376320 7290507539478785524346177825275904 2634713224522410080687697036312576 -490903432977928443607411728152788992 3803847030782850410365016608866304 7928630382341702958483740620226560 -159639985683241445402583083683676160 2086841200239538299148758283190272 7476935209005350344604789787066368 -479202463366056307115095594243194880 4920040001990799727469490650218496 5065196944048530668820167743504384 -850830030864146698489328297953984512 8314269683573442382931651387719680 8828304477775196738189426845286400 -472356700930424337191926118333022208 3177615309403103467233073610883072 6618001777407381261729765953372160 -958779342049392074267373732418813952 8006235277802665684864460090507264 3240056367254747016190021450334208 -989867672943469860255275586043248640 3224647823630764049525240590499840 7104033190228357278007760829546496 -382553430370957690084888228852137984 5212111208728589318507955872595968 1884067730849136790608074820812800 -117142501122954378562232423100186624 1898887941338733994711791368667136 3854078111387366311151758223605760 -438712324059549016855663001462636544 3951625729843417811953141749383168 1478910561619914189152795215527936 -960909315926114808077328753497210880 42964813085367644196508379643904 7129886530512038095664681614049280 -315493255066722026236322815640862720 835952303123232283300506514751488 4894104366954256576003677819502592 -906410825782225646611573686084304896 5645151192328619560708642659368960 8647233287501542098940896072433664 -517114220085462762991220073221324800 2696522416333544903163663171452928 1929024567041588064990522907820032 -590820038763398540286188310350528512 6927315981192289223121437418586112 7055672175023562970802692326162432 -392210106195496917321756031296995328 9672768668199268440924033822752768 7257148933009172218086639139815424 -222102070139873599280021627597750272 7884330220330468696801872999088128 1435310442378012482480321347977216 -547897715372375577388308647932592128 519901020522219395665869196492800 276026813560443286366572861456384 -312763206951727704370016345684705280 254848800135989366561606576635904 9492540863449241522824083301990400 -369185997929277715034746657200668672 505075517099288419258662421266432 3315262997260423644428215066296320 -38226472875107197186716052114898944 2780944499410525751840638754619392 491951420120978640540854439116800 -991725434124646730936928957995417600 1371034574995503361399057905876992 3054902730085609950320191378292736 -987345193765282966552669364468842496 1623483367369710569630416773316608 9418109480627511450131751621361664 -995198802938675987502415333174542336 861407636655420777847244879560704 7559927498362298455873443617308672 -184092347315213189880626799787900928 2049041342564730600558360866586624 4085662591462245471305604108648448 -754993469675224929198912304834412544 7122307389405636315290021209833472 3585239407509643409638746925039616 -460215893346627111515795359432441856 7660693462469961835124351064604672 2622245316636308372676636961669120 -929609122053122846307518265050529792 6222145492214614862891382948757504 6729594706119573408404743397572608 -997381006507274234593492609068433408 5634397040426194150729494619488256 6298873391891624562236213983969280 -931980044274102077798144521864740864 8232562561942241822896187938701312 8977722373155228728452708453842944 -233654664718285718627713227859951616 3046720972054561802597102295973888 5943470084167659203643389083910144 -167040123508804886787593220801953792 4912079528031478255462747094384640 7892267402776338868632707435331584 -908898899475617093893899507443171328 3213582839695705670729345756299264 3282087728033043089345988448485376 -901009669953334838139453863171719168 5491277350589998401076674714140672 6734255927320399601214758668206080 -8923880518657128450798968245321728 7589937573429265509957237676703744 5858098941761012021769553926160384 -725125124834680350264558370403909632 651640648413692298492887334649856 4920485388471962059884139890343936 -570234631625192351967878774788194304 9011986621215810510462509001998336 4017625047124749580783474549194752 -577962494662460135849429778963628032 1085536856822026719279061349171200 4160843427731145807578921003122688 -346537803256649627858976737457078272 6634298146674699553416875933171712 1013418787474615565909987562618880 -517138681861565203504721062208208896 527039619776725126387035073937408 8514395200174320788414352662200320 -340924061088688703237179945617719296 1150034019037699718330563719856128 5968073699883545571999900472705024 -382728418726650674600889901943619584 9071368425832872853480073072738304 4806812294807224332354089027371008 -23724373631675408973237228547342336 6206506977566716766080380642000896 3998378087189431109930753286209536 -620463844326281659983872747550801920 748306931464209435770817865580544 7023162045907962067759840857423872 -718575263975080731688501395941490688 4472037010147902403877273532891136 8232428896236830512663774869061632 -237864274083977282643061321825779712 1395008215876332726729876489371648 3001877359071901588870834008621056 -462052505936067594987057706052878336 7413212448120274321123904422150144 1636641140625188877916632422285312 -431934793684135787236052277372387328 3944582146406609949692072298545152 3526212793610022096919878927646720 -688934417354038436324284821976121344 7769749850227665377325702453395456 2999830675398399225695800689426432 -710083965859734033125975318981509120 9180379865410772640907720952643584 7841708194617294726578656759513088 -453825483742660234568651343931637760 3034485098268872753983858594021376 4299372275914553274474320657121280 -485974329809649733909235157197389824 8885999274905324531526998662578176 7777831718579843855603047984005120 -76799250864033772823931312549134336 2019558761442691132222684616720384 4751350573370222047576661747040256 -663433437517463416792034540781568000 5333009929070937410767600385785856 7374857457656479177515287957209088 -678982492163298515732255881551675392 1906061105613527245115576782159872 6142460362731849893562710912663552 -27242516887366088266479558862045184 8187212078538559673453739748884480 82376530692103294968618477944832 -200592938286707102290531437298843648 4886556327780027944673422518255616 4909200285641318904211239530921984 -265561747985029598197944198203703296 5697877235151386357768591629090816 99822033394324294742019323985920 -449079244518319038716737614405173248 1323427193198068602113351802159104 6538652817680928391075557070077952 -288760977407823921146115894267609088 4922901681739269546798914176286720 8703829844769333774695748197154816 -162241676832908047814553640980447232 2287522191923281948037638850084864 847994209306053369877649621516288 -579214108520222021906960598016458752 9744685444614095698963393996128256 6411758345436534177600110390673408 -445805213270064093040523576707383296 6516759123783432662266074558889984 6194925312679850029251672485658624 -979304977915142316258547178712072192 6963713132885267266212663851483136 483099012679804605233102411792384 -395550520835289516705109124887609344 8903117038445065208140552606842880 1339131201323181864590350829486080 -6971199739760607457992275648315392 5794489861547031404958009043976192 6418548836758810772664841161146368 -31166674604501951031183534091927552 8306028867047576027226868690190336 1960779099422704857965490826379264 -416647273929903528259961872380329984 8077983373739514611681651282935808 4146288798637851883574614611197952 -72334399288326714783828934865715200 6081421241786966990179870089150464 9908609674435140606057184596328448 -498813594400187226497747666119688192 8269305423750114291974911406637056 8689822461268020697450529708572672 -339986245704627540820731748935532544 1956183041614867768467997623058432 2768549729654142129391324683567104 -421419711498202884516524432256139264 7925189862271047158090818169864192 9901803591507326552055894650126336 -393919694304544375854915142276874240 6287117566304350010500709863129088 9980818548959948578166207384911872 -385225093983774004817193809026744320 7976827745934470660731289617825792 3851059388484511554976611798351872 -962419674879814297650972626167791616 1087410859637432910029413253382144 3520068904923208421360756607418368 -47278503007342100359397470799659008 3794165050333149300043226330169344 7391336487287300981519288620810240 -391613863170537139462506353002545152 4580626178230432289650967748542464 170280806220529615212363751882752 -357013564996323518888391404987351040 1653640297429669547686990226391040 5200321019223973743251830113042432 -506194474633200142764063970587312128 8396386126904523767868997058428928 1710042302256211784654399649873920 -516499693715026931838560385024131072 622883903797761028613135218507776 6167307892416244552904985859325952 -192324407915875939777202527804588032 3285602477683685113202944115736576 7818720083105723091457754047447040 -248354105952954815106092324049911808 18374265384806900130733038239744 5921179838785694374825519931719680 -871278201756431244073556956539781120 7916175774253993618837082881392640 2698665551173091344814514569740288 -355935448293302110847617243717566464 9752261062720362510444251572076544 1548921204801328222335261340598272 -330340720622465120282544481457143808 8418721391139752241640278616702976 418591892481602057504097359101952 -986444957959354428415992931054256128 2601028091612836050049920894238720 7554657231359256967775760496459776 -214659288558462917010261230720385024 6999456812470173627268898935013376 5617046668709098413718120584708096 -567059648545403307202098891749064704 517699329143126181837540635443200 7775284990912174322078873322258432 -402448837455111264022074689505460224 1515562824009954371246463712755712 6013362931130435314826246839336960 -155962548202996065671361079155884032 3150464741945506726582457825492992 3265199212540318130255537123622912 -19534578527586029875976123625504768 5063701438882067650877974254714880 4377162286259973408954380432965632 -672686338602253344233631771080523776 3884676904928355246802563453943808 6370885340733133274447066911735808 -217470279853037091007145539327229952 9385795778292349503751624010498048 8488653015367321015003861538045952 -346586461207090162808681122840444928 9899184373512752789064021276884992 705405439717959060908387407495168 -771936801895137745496398000438640640 5866295207656357577824670985486336 9895833467419848955410796867747840 -215902028350709823079498127977218048 2194761321474719231918276654137344 1182294543702172504483579901771776 -582013874841568204412857379639525376 3378123340899305668767205780619264 1593032879432125735047912260370432 -958391322626142943523581482844028928 2630711009303293035084447160991744 7076184199430471806251858598559744 -352148956065596039406437780101791744 9409896347439671611142561704443904 3005919702416846183191614322638848 -705704446870650764519518186913136640 9583922763076877283124662037905408 7868461074646187860103483300511744 -67771389755673981231217288855683072 1464167994647835336071135931400192 9528006341926585048146825260826624 -289046158239536388368243599020654592 6287067259174366161265873012129792 9953565442304402239823090479529984 -587647300315448538009699281239277568 3815928722797619806119849151692800 6095696103994861083112218503938048 -475552180536794301632771190119464960 8536736362099941812556916831813632 8694968626051307088228560224124928 -695441092358908524736623943843053568 2159108657327394123098724207951872 6424417356489624692902615429677056 -186207844219703690082964359081885696 9526100735223734272547851801198592 6054438174369145398575896077533184 -70750400284326276883862803426836480 2033722446651027470557807353266176 4946093797062737327286301174530048 -746812032849328701290898557830692864 9252937297620088529404374844178432 6685244970716693209401743837757440 -762593505121077318703648379496300544 5715464195507276470084749265731584 1136454577595697842347821701791744 -965956507248841918638339552817709056 8374502476925080274462388128841728 2294567592839669213968825170526208 -312033017549824597125816145504370688 1832416291028964294731136896073728 8148318954611962138578818336555008 -490795429773337220961084150678290432 5151870806061177011019443538493440 9090346352045211812597785641877504 -842584937106880170506353613503201280 5450982361878310177017117020258304 9674287309874400311747342753595392 -618792460870318489379559311031664640 9542470609489937876371303330480128 720334561423468279318381856817152 -578606257604365485802238460804726784 2028267588241678594013241383321600 2357471358873862159373321113698304 -891828839812226186810702899181518848 3173269051044517212440397896220672 6041611770734683094470588268281856 -940866257473593163202566239178194944 8061458318292472708588837569298432 5827871579950022694760147111116800 -506539321696821423926335445747630080 127624124894933131566986957946880 7618982917730330151759633933402112 -647438519360143735354396747369545728 4037145741168971843683190650699776 8523343489205219645531490361540608 -432200034498059359055608049446158336 4266615916448004085309766606258176 3569902044793079978519621789548544 -866984063364750714613598015526535168 7514565110515226923200770664824832 831545451172105544930798126235648 -862210045184606105010742874345570304 9328695399276098544973703351894016 4731049224197279369723215429500928 -736073149781255466833143859588890624 8088567058364498303548331948769280 3141165241054402925986757813993472 -392703151171315601143830989894582272 3966450117240789853177139288866816 4064360718362540528861134289108992 -618681901731739524193719535783641088 4204413795901910981126051950755840 3643802656266662163386997068005376 -300743291727953592743846328607440896 8564864008414279442380624372957184 2527120469475714737175922862981120 -358544243820537024193749738808410112 8403947278588048551779359673810944 9968127559441218884718669609304064 -375101274940071479412925080692326400 9462926959183719936900884238172160 8064221376339997559947009086980096 -108727527652766667973354554134626304 656237283350886236208480449986560 734804212512290918421004722110464 -288740682537637563734412684899123200 8932068467535937480259123084787712 3410775595390068264900793859047424 -629352163371518881379758716647112704 3977494049266552754003181169541120 2378282106714654717892825895141376 -1727963785180955261903261117972480 6970025625271775100064072294465536 4108412011265185075465127844642816 -596884149336176038308582099104301056 5253796899229346000654890619109376 7863703796776190131948857751240704 -826502442501229410420018336457818112 3745915609677197720172054437691392 5257416892852421842496054146105344 -553328749552409602282650448076734464 4764343454663449177840707870654464 3995735963021042165768917652340736 -132262407106033407667368099538010112 6591783834872970048016581507678208 116671364915733339306767132131328 -309551347563777882013691184469245952 1755900426604197251790862760804352 1290625084192330718032707792666624 -298866813063232598910643075165454336 4874039968632665318714464649871360 4109170206919953273667708881207296 -710973204729160639094812659075252224 3985095979931132237021713103060992 9400475060711252131902395808481280 -259135593511314050698197746501812224 66015426261197547011021436092416 4188581657549222778219601374216192 -618871333474378193293348647664091136 7916133704323921965316717282328576 8259506818362744035316412085960704 -451897461951313429490088806113607680 6789776320464372755836666260750336 6121752154089004338662321885806592 -379976210352483987697195310569750528 9149505052058557376005681094590464 6828405740386268093401793350860800 -146039421145386612907498434769977344 7069903912636058436533508821221376 8358497428983646176082873085329408 -223194567664475005084679848880766976 2062158149550054823417974506913792 7601991758633668411333195589484544 -409393102735123826490571473811406848 7947491264544207629412763376287744 3182399407891511747207585069006848 -560409370077237334632620282303479808 5553231972807216211821186030501888 4325957219965244487981269214298112 -320907432242054518537282833252089856 9732105298958285268154144113295360 7565508416213698673910743258103808 -302299089753180471887501384176631808 1774634646055803382578596095721472 4606661710654869739095766325002240 -366496017850894545419999514160267264 6051655492051644705175312040722432 2445327795607112517508474987347968 -892245820079958425066283873549156352 7398801849421443877870544300802048 4845112884116369245287644468871168 -883425684634548133882411384527912960 9105696173363429798688283017871360 2988353024895183115380997975179264 -449365152240326877060422674176540672 8623221451141891136187864358846464 6489950378175628497917625667420160 -947141623440769552513393404239937536 7106832867215430538002103753768960 3201495288379683505225162817536000 -905521502107112930260674351407824896 1441660652863360338481925997985792 2345226320756001063445551506259968 -861082770602507164895312939388502016 131207392120063995956378149584896 898744578939905058486190627356672 -923677098758449298662383595603099648 4975940398649536415150105201475584 2519645199957834313206740572700672 -615443075244227179144357309898031104 3249678825643497254541517345783808 5960410860960252114766671344828416 -166456699098824655847743733136097280 5057459890963302551032399000502272 1849250776892821330952663322329088 -464769285042904978907564778027220992 8155625988747529155804585707700224 1674574797487312182531559809613824 -377920629331493221502855482127155200 9712818298436860767882856747761664 7056544920173868552702751588483072 -336057895166439789989169788706881536 6336520915955211487182649408094208 2753756904702660877521484517474304 -725698147472639532446019790420574208 8656831476489797083443694778974208 6794003927593731769879901990027264 -87885355508182057226552296450555904 9919251719153336844924717627342848 8293605609541368085968548029005824 -951122175140366096487158820779327488 6540081971307175359687587545481216 2875324694863448158110376550989824 -887091551949194507016827307577835520 1963405654956642255060196684464128 1739277021232619433199483236646912 -956103567196006501595531065662898176 1247180526814287627828062010212352 360906632657641207512740736794624 -202203247430554923110557554952896512 2761095247978175065295560556675072 8626828106577434252581941031206912 -691589766365971698048897095426899968 232164572957940925174583499161600 6365556779653727218830837412790272 -657595277527757043617057493399633920 512697061272402795070823499563008 709092537090056027042513263001600 -130155408249407982356322215845167104 8437862445485968938984557842006016 4353995557810769379305503431065600 -940263842918026081141637152052871168 1850962873454109931680577628405760 9628001171345430804655170920644608 -709857326721537245143995670656450560 8914947293111075376310751315623936 5677489021269146337907535524134912 -508824061284442937010389105229430784 5231727168844040567010559935905792 4632709202778102593197995745869824 -504231894770927335239405353769631744 6674999429936585830570138166886400 6108920205819464917173149338959872 -589247894397201645285583597596573696 2654169709933608984892310282043392 9906274354291565075832672964575232 -377416797820785541821543473022500864 5752200092749778543767666665979904 3043244044908748137455333341659136 -931831328332958992031325526337519616 1654537075540789546670658018082816 3303482893115414532414991297937408 -266140850142955586317606117301026816 4376600489757938274397158696288256 2959081648590088430499315373309952 -543758484237694558753777942148415488 3060539811315831763662829768409088 5829203887913349583000637886431232 -914234647540048337863010415198339072 8606571628806012309493819971207168 3936578076576733134422706164334592 -310783422886923740798764269822803968 3228651002923070372910339345874944 5899630834226283094898699229200384 -892854042263581264583146062856847360 4786769083481030888766904731697152 8927452619691906196207222965403648 -167103317161768126932518164469121024 9789626851914813131472804958437376 1990976169818143985465208764104704 -981574517780247593258799039221071872 3410918268818671999904008592424960 8152720631849594730394046410260480 -979162266348306465184899778425651200 9283381170995206260203404182683648 7367888214310469581572663886741504 -752888652259617518100729691782512640 8090649914277679193411695952265216 8513750814171925473402361764380672 -10593682447966861017361217834975232 6510977031219289543742357938110464 8056441026788323856239897790644224 -404321848809072141977875068689055744 1695036547048554395999904395689984 1236980939728730391695798654992384 -899620700383611407337105451644878848 1781967843849727500870803473301504 1171317241097859997016877724336128 -924489458768736674855718816929808384 7801215356142461550008594593742848 9697392738620428236043144830910464 -787335283185930334921628733738582016 4872818231307636268586804518584320 3675930506926616071918240177061888 -510661489100003963804178348173688832 9526294424945368322900339934101504 9197416327346755067799853519077376 -622435518780904338336025562981597184 8107275620769633994420570384498688 8725075179912021807962527706906624 -298267684396892055575197059779657728 492898958166774419671958589276160 6954618868447254367368085220884480 -642255739253393702688268460381700096 7776018720720115779444705813594112 4165150420683519902089020847423488 -277616171279074284949723348459323392 3434484514541798173652822177873920 8319604564467815966303222035906560 -71510601608386259385383324254994432 2060175522557208971782851166994432 4422926122423772114778486741139456 -776956652090528758301050899598934016 4178229604818753421164782479736832 8031977843292685631358229039546368 -105331760448160754340019077168234496 7242533125484952730874256071589888 8033848871161397886320939708186624 -987724409198274046398835522707390464 3472601543982883598074163778027520 6044515136677791676401260284608512 -831118861769238023094282909820911616 9528491793569143702857804360450048 1027484176409622817312186944192512 -905054786286258544996120788102807552 4905312474070196101439696662429696 2339680566577122283947737521061888 -116878708569606636748548320083836928 7663576947784741120674684089663488 6175496957306542912024474315390976 -99729997438862965162811091180322816 4054093741937703628219053949059072 9983975387700608600376495906488320 -271903272981833535144569860064804864 6470171110346230229780411334000640 5104565957736230991276376024154112 -5425298647774536971404281965969408 7249146676158248275446898781847552 2154574306085242221316158833819648 -379547341556725605562122564370694144 9126834387142081778259734227320832 5397190267919038944466746977812480 -482235159052114915008590269705617408 5358623193052418252855036885336064 1081529340960550336090356559380480 -75768973050257196518426579191201792 8317994436079946415412515960782848 8549615558065461048993467259158528 -374578033555618724426383706030080000 2675583891320495143045133928235008 6869876762981966125859678281793536 -851263697915336495150023805868441600 6459787315589799072581134541914112 20627849590399216863734396878848 -699603930328397672474430207208456192 9784440999600739603028140034621440 7467186158539160591600584912535552 -886302939549684201310370477329350656 7863599903664790047579950557429760 867375086648526856331128654004224 -432066719021018906544159804962635776 3273355229037584442526620889120768 4021835822298343104060987262631936 -543689776783970769103808731193278464 7008963881614861040582657560281088 7930358231774125163075359681282048 -518646717828146463823006131279626240 2574345796891542187798445735018496 9916989317566062498459127992287232 -590014963477145219278439772711813120 1604286361509059362103609880739840 9902082534062253081157839488024576 -901534711241140826898101368719933440 1475643668010077972954001340104704 3102204658719269064509140269793280 -418326522399276560859198506605215744 7062283178979564848528242830737408 9840419257746208027216429954629632 -935583464611329260044264918107553792 7394224422734474799333102975975424 4964554968597395896816404543832064 -97782023674888740159819373839646720 1252050355515970538284799399821312 6764773291880551427023704187469824 -6563043552470998005611176505901056 1656612059675015401184384478347264 4372070958569764596283399454326784 -306235672272273388565539694479147008 4321286594940155863789937763549184 7348799711355005619288185195462656 -763277082757603912958135819835539456 7220310898774619447757927524335616 8807993149096847152789335486496768 -790808152841454163168961599427837952 1647346638715190970911005861740544 2278538412188044849098866305269760 -544404692697701981545929725901275136 8944793231477009045171014448709632 5263267031715898940974162109267968 -528899768258783323452746645452619776 3063708301193939279679751257587712 5770310667942734563266762884775936 -306807091608454808222948686880047104 8218920130694561856858811701133312 9552270846671991954929068883836928 -528364849357789593934804718041694208 7660785544782519491233676399738880 4219850629225181245681949080551424 -736161549430793709575369687071457280 5401241869240702252842319949594624 2227355415527007512443099375730688 -549846218975457524415642417970020352 221973474774037356339720919973888 2933730192751246151568981386854400 -753481923922702402583880600771362816 548885812672297925846449264787456 7030191667929711335514530704785408 -164111206466198871985240671868944384 6863553400742732408852314884931584 6109237749111526391962110405902336 -414272104297593176633039035931033600 5352130950836457964576347743322112 2554615199740832612760151413227520 -520046709639635490952485033786474496 1531800058004169993791621067440128 3455684623623446811080028806184960 -473651055769753237730530476188237824 4810376194120735817443545255510016 2850623998649164677164818856148992 -371895854994888345797363884112216064 8424613362045411820046158592475136 6213566444304150674852560920117248 -870632439244653874716639363852140544 3479310647765878464058567853867008 1719367550785922568143407394324480 -723148156945872529905300272280764416 5607759153540292682710386225446912 3420060689770447970050607901835264 -454497564209112004371532599026253824 4974992221958165005490065648910336 6590805970074893908113151917817856 -734112166320741892216448311420256256 744069432369166618746970265616384 8412570758909194562237183769444352 -932910902346710241027610091785814016 4634818840920551948416304229122048 6463515870425882051849176242716672 -441126239368758075896415901165027328 3185844711231203742357064303771648 8178961882763720602784652324765696 -404975415598509758439141502988845056 4226618452261529527326301963157504 9948911739827215072914542574960640 -11198748478301524707193074063769600 9060018753604861089444639058952192 2727329748306132164986054463455232 -49558324728815746738956688848584704 1407927713442926816384836222058496 1326614499881940287321928110178304 -192985668727347985918791474267291648 851965379452603777761956784504832 2675969700485301734983787310219264 -724548852492528819117570803139346432 4731948025547541286519261060136960 6335252003055870849114825220423680 -623097322156454236724099835217575936 9404248268979645630984282330628096 1442863019224358894755279225749504 -81567278004713400314782865577476096 769071400182836979358968208949248 5887857702355673042039789846528000 -33925200965519528129709696073334784 2374899966655885811455850532831232 9213602181231182119262091240013824 -978357038780858483310151265622687744 3831784323086592166484991520276480 428367178727820092943311619227648 -663158982035278060455687562842865664 5900752951610120093201097293824 7913036814425397397315175378321408 -357513622034133861967916656075210752 2638128569583190944747177482649600 4341917628288223895359383232577536 -275218013436501097654927031997038592 9995243267131028745831313947230208 178739670856459166470067158253568 -432158474490363836350100649055092736 9722066697099410773770378042933248 128542952721067053263578571210752 -272831444774643638903585432139726848 6565162122982777449475612558229504 5545240874295702589581301991342080 -723085130449209469949347584460980224 2950871264670701486859956799930368 5875325522872116748912426336911360 -987563490201752913148723420981100544 1901990348244630940001338059128832 7267669500451400112699751859748864 -126966664817783727203073654347792384 1065842404283293236676246974234624 9402632546806118376954184004009984 -951831331886433656712797164402638848 4097739194699044632210425881034752 9321901374192250787567592882044928 -183332586724304160725564800972619776 9000819867157869238056167801880576 2612080900932299221229734518063104 -298584180190420995202609088726827008 7834530994625656139840701752934400 3127160054267476188751034513883136 -524791637239358466430245057341685760 3877232325979510917323561510109184 7282683844310085648964196461707264 -206423867532786290182662703393275904 4788458095736643651974694241828864 3584960343682464609009546928586752 -532038366983961856301466748836642816 3223133053354470093424997148131328 2571470754380249350144171597365248 -246675537758684708350672561118380032 4116537110066962313101014548348928 5691978101629820515970519872307200 -126241217701029203482955376968597504 1605533204774706974702209020723200 2852858910292334734831541603532800 -144316246435886887760325072492953600 2213772035065121702314926862761984 7690796936977995867772755640320000 -918257415452506687320659875256598528 5951804895734414819797719702306816 9432125376001571096130421964931072 -400486133681851180002026193483202560 9903659670916699258253424401055744 402889913700456508799124928200704 -984810329195376652057938681059606528 9401603682581275280202993363845120 721062465662686278011274016063488 -40036753244639818685462931673448448 5568485049816090312730047231819776 599171975966808881803372131254272 -309493745617242071163508342743105536 7720487916788916821777053755899904 6937773517387283646918382902575104 -115721438625396010032756993300627456 4215672108794260466450013332963328 9324629395944333925197845532508160 -18228072928346517617819853629947904 5760677563931283795495025131913216 8730081663079661902141685149728768 -46836881852368846006694520721244160 4002252816931375218053888075628544 1612955517643523044729044588298240 -181222736886652019821414333036888064 8895863177323575296329305678675968 6182819504821154301968660773732352 -928444523529693046119812775377108992 311096577093445379787609293717504 4136943922785753404898483518832640 -433340690349400382311275708524003328 8993485422908896552179512595447808 3526153145620207619185678779154432 -821273619878448293696705510401638400 9274351773754470804820818695028736 6517653910939727970691379676315648 -132503757383075689197078081687257088 4367338802058435552357325756956672 5798610008070888996523419361083392 -619495901389098852521159465306685440 3736720798600263142280167111524352 8238700493026643863037914048888832 -303936174770354361081033556678934528 169273016876071835439330532261888 8167222031069205181773558044426240 -645517862188373900136894959244541952 1539677901021575616351686293979136 9248108168068764003750836934017024 -668737796549486523798303571965902848 5603449116571964963900816405561344 3852832459321361821171153134157824 -816929854809268223101323613522886656 5675727860980509737693392911990784 1276299191877553363242403699359744 -292087098021598151524589089912258560 7852465183327898586431866603044864 7946277313062608982354330864582656 -206891648391611732859322857945038848 2224776876764118075529706910777344 2092025818308214131352332513837056 -474622355906746534103245830125256704 4904132616333729194751515521187840 2415106463520207088148944330424320 -15754225930140936349794905270255616 6393993736716829497190951499595776 3065073359750388226747682628042752 -91308108522531357234245917013442560 8403857727574729540843119122055168 3936089743632029660622549870968832 -74714941945428895893122089620602880 1421804197373547143091994547453952 5590520430097909398744695465574400 -29724771607735781758409386816962560 1693724894893449232123862085271552 2172228675699090092092118150414336 -623987072154807664142470001662623744 8493878197500253184508835479420928 8980078405966633791403823623831552 -303646790077559793935936237068091392 1735192942542453472909293856489472 8705064510366975479455059904823296 -485679558901897736325826881815314432 1006807979964949066282566462472192 5803400097894238511222113244807168 -806611100957260519088516326615941120 2529769828381681918732054074228736 2563150479909696516431173291868160 -998353694954808607772938920121073664 9500373775153106460881581217153024 7396791133832261043558786598436864 -730935979272212693084109708105613312 6736447120372548519117328020930560 7718315205957682073745558840803328 -871949175014666701203803563274272768 9257325090220945546721601565753344 9116959467575350193843682290958336 -481332687824761197608404483896770560 4630069751099884100838365507616768 6492736856717882702433708264128512 -975697815920172630053879578957447168 8217750912475970620379946152886272 5266155813016424212260666380124160 -442776260621751938525815749516197888 9608609933814528940535076339318784 3168207471373031062137415946731520 -501233618064765706774435567027355648 8415107608425031077561607701659648 6152195327458315486236689437818880 -717234717258793615981405695270453248 1077161491952454706265797863407616 764811963487793204720429487357952 -54153492049481145563495109136220160 5467368566145006826995758581940224 7370413879307406867218656420429824 -613174960789505481376538947980623872 8435680273970863086518463218319360 5917332698737229828447335018921984 -691641143106429156166499034703331328 1880767767323392393670832540352512 4157754354356170829960562864029696 -729021041087737584856243924656717824 5494653602115611757728380710027264 4890298549283673977644975921299456 -992839417763204758105378794070081536 222450073698186465920256260964352 544516844586230715060436087078912 -136451804257088985065108570629996544 3086500751947729979609411705896960 8279259224132175217950702887239680 -47434647673691570716426711129391104 4326201230630715334077276477194240 318641495473437655040392519745536 -699074677204423073702276081534369792 4368736195188255287158060842221568 4916293073996403402053520231235584 -20883756557816173229772895216992256 3979789038733139777625166314471424 9790256297166895832095866346274816 -425571508676005295394813376160858112 6371884304986885708753561039405056 4922261676800009796114516247838720 -317463806828150971595772852531363840 2872715209173166578295491902046208 4781832863245788920271242363142144 -918194926609778431478557174308798464 3871747942177264962824393677864960 3882915242684445049056383251513344 -51254634619292256526582310636617728 4506784791017888682889913544212480 6129630523636975292784069218140160 -822545612032078513660321151550750720 9376974354563509279969643325292544 5045359213324134168743187985727488 -957161339958577398413103127293067264 7727671115824525306997699506077696 2550112369503016407800586547757056 -635703411100567740973877859843047424 4832131965574347931673859259891712 674096706785341280109421339344896 -585081054688220485962199284269973504 8832923417181560733591751614267392 1192656172127950819291961382404096 -970147602327647428313976976491675648 4683108738182358522957669890785280 6600469342530803487148002265530368 -32005157508152118070729365283405824 6176235619283472964083960273436672 4120108244118053476736647112425472 -241994627623004259470390559091195904 6182880181296804538262442949476352 8657524019005957775600715569299456 -243086291981436029992183494743162880 4518922472936236404674472093679616 400342578223314254392219953790976 -947834868754067067588413167851536384 3479433600227546684212887880204288 2956948873938969069478386841157632 -921033380487604898382729361859018752 9591317225237247273449713739759616 859902595631004269475517815586816 -86090761294701071364709857680687104 1673873043092599779548306136367104 5010869639370156668393450660429824 -937813083505938659646648615314653184 3373156625093150179481157191598080 7436965157984694749568804566597632 -480061371645963014608483256570478592 7086886777829186129000984960040960 6737949723742272472595484750381056 -517330497936943949789772510050385920 5550401866266075681136505962627072 8949360434665854301054529364295680 -657742332656575992416317843158597632 1191685833762538477938429428498432 2573622350493745943975662465318912 -413058326424897247869574067511099392 1637590726485417083910660282122240 8801998906113035118466237678485504 -247413647679084834943354622724538368 9478156764597821119814197166735360 1394162616772051848305774879047680 -222479328943369446895916663498080256 7254079089407297080614971898855424 7237167406725788116554715110572032 -441422416061904753066352084871282688 6136993690471248753226485317238784 560380223009608417615999653642240 -369129988709685183840719009554104320 9008151149171051628245698675212288 8556427167313877066285090846277632 -351878604763701374649955026269634560 9661835045796832248567970169618432 245238662210376972288804844994560 -261259648734223493247442867458146304 6549959512765283285176041705832448 4022127195827220600959948996739072 -126586991321464770525995503074672640 3569511024129836202307922213994496 5072427439930698978282966584655872 -441787538210463897972695444653867008 8613193894059199895670693946195968 9129319675363859230618998223667200 -835868788061042988897395238380765184 5609260042232224358609219903029248 6811158572536199745139232380813312 -354568236424510344052047698003492864 8897221880728322158866023023902720 5825685755005292024826228952268800 -405810172794590492429760343905927168 7235372820413512014244729266896896 8819175135600186168394644027604992 -192066923994288637870945382223052800 6889741578392153566470721828290560 7684529070396092660717827460694016 -214592048845627297620562278015303680 965096795131528875932984612487168 8129863192626273739014385357029376 -986888351417605137869477942292119552 2667290693826708333102581065711616 3316563160991890407938293342666752 -440575597966418714822330026335141888 641285322936618297053522729893888 2056914354766720941310914634711040 -452132935744787508998920281868206080 8711933044360252285297073284186112 5119026224919468428256538949320704 -797371509060996749967470320060203008 6939290610150843610286996240465920 3369865899625449573182860542607360 -882764432568294424892574354081054720 5216135134421255350387196685189120 688127153069453628639156681834496 -913494494499527319226845067644764160 6105296732242010409443536536600576 4320599483495845798944273353146368 -545467705218987045626681871443165184 1841740260819309283381681646993408 9803332622971075632098650915602432 -319318456016160677589696065013022720 2456453064573361307302783480758272 1625378047516217068593458146443264 -905607338617708599860113296920150016 1022208780791255915270840193646592 9809147510622306602204171218190336 -553574286825552263506884869662703616 940831306394252868036650504028160 8189547718004922766741139949092864 -75251236111474540749524858644201472 6397122351775051353913934345142272 9425381447787520448619405497073664 -62221971908956798092002256425582592 8541080954931314069682787794812928 8366077079754344453140556363595776 -516803695241214250628667940674732032 8229998566380380027635054051065856 3500915755792093983626870617276416 -50099505486117895311603429200101376 3112512420229987252852573102669824 1771332754539665809734567871905792 -172828766161829223585428024783273984 5649181282831473555352192460783616 9011607726017580779650610819497984 -566988105290694400907253817949552640 5922558192483921473717441514176512 564397276177251311805355410849792 -231436251316591712007501436510273536 1890196698704313928115619264200704 3114837615176601284855717959827456 -73352166114456629318927499692867584 4010242349665050115573050352074752 6743865196421568361134759784480768 -100000247375026487677597548139249664 7049776892982157814468829817864192 2887368831493185760464553365209088 -982978554736800686967306333781491712 9579051586566570474584701749166080 1320386681595168314679560530558976 -713073355920087018538294543378284544 9776602702923192482039726272937984 1863731732168596854860161421934592 -548279572154912152899727816090714112 1084629961066983462144040629174272 9056923090242708147999064895520768 -398692976849175314077949159842775040 4860556738864617425371126587981824 4822729062765679144950703560065024 -337062878037944382732028615994638336 6365782400294622513198908215132160 7946258548459839269675547450408960 -109702717588685963440428879722840064 8624460364320762956561147527954432 8036816798792846412855637060878336 -649638185833018549124906094321205248 6780426203881934312851570004328448 9935312130718411258899578948157440 -689474406097438586117348614704463872 9476202333659711575874281068822528 2828169051646461062709428304740352 -716465126135084891205795638673408000 1463549598828550682315834628505600 7345352215957539771287365985763328 -551264243550440374368201166966226944 8487623558595068354203572777254912 7609564311201105752854915627089920 -371282938986509027995870223101067264 8873822481137331265937373048864768 4332915633451868903633691082752000 -290062945908448847509027260182036480 5345447953852210661913971690307584 2203543970991180664276876064194560 -279655819702042562905573627384561664 2494110109076849583308506574880768 5007782922370963541698288904306688 -747452749893571893449045037633503232 8416678294879031904597533576396800 7057735874889513169770399792103424 -782617444301945191694215571667156992 6981421733230929916307516153659392 1820750311202504294734741228224512 -771315141701858644391888253796483072 2472844939404000121581076303839232 136386319706121335321370352943104 -78023178241828573839306431423053824 4648716062094292677188582153125888 6789749928075364346454774367911936 -188342278059505703416950346829791232 2090579556449170988377796310466560 732415834366076280216123600797696 -556933591320268293989651880207187968 2405433093244413141630908631089152 1744098822401815595953944996610048 -915783684390201794058825487567814656 4114213543862618232239792033103872 5805945568345420113180125537763328 -965273918734495094170179331394895872 4678409577861068222288634086162432 111335031806747305114200965120000 -213644502449298217011457532404695040 8012099918425614179542165159411712 9082244801115241058857991440171008 -57248519547189958884787163943141376 3388284784709034611068622803566592 8698510510986533586888630548299776 -179148627618477697483231991250812928 9273536885137902097224249064292352 649914891289668673806525259579392 -193956167598518166986135480093900800 4549632096526289927072626027528192 9698679128225934350213395435749376 -101995858066914754952287683621158912 5862256760285543496947729130586112 8428161858490692128193112503746560 -888318327548008558283313453350256640 8651330959133397640227920518578176 6925254048207123452402915195486208 -168423196665035007169692578984493056 4891364004820359013554221106593792 4964483473023800708905263161147392 -466214072766243785458230382504706048 110794830610834879423747368943616 7771304476853380135513799350288384 -716989110360006369536361705662054400 8909369308764812128032491059544064 3182303647574036674909663228067840 -485870818918096875995219630864990208 4153601914700496102041624938283008 5369288851659264343414949978046464 -467857937508412238131989366687399936 138055064545558202601946457571328 9588592638945577585414299581415424 -326821545609153760741208773628002304 8929875275819936937421939650068480 1474667385856104204503182013890560 -755492063417094255141891576864702464 1243358555670871140959759775039488 8180187024869045068114699409686528 -602225071224075962882554572979568640 8964205094136016616875739018428416 4999365350881013158424149542043648 -281342238949425214319225482065739776 8028452191660989047282352739319808 1619749375356950374457835517902848 -867303204952772782645333250034106368 6725586726691966378840070901727232 5023590445976866262762618915651584 -185157924965316640629013174137389056 9255004474388004676424692301561856 3180503759171189151191827570753536 -105764844145031392913940846955462656 5904187442391223661474032369270784 7753517924428846900090449631903744 -640726802517050755724324714064117760 7115877704109337758087560147501056 5844784420098644893901235582664704 -410860016972089113287326474166075392 5851590403277087710181708663881728 6214378476193863126855460203790336 -693381848965845788645769211948302336 6752361398473320067302390786686976 7127670203891566739886441756622848 -510418030987339677417924546275573760 1773558686087348182726348906692608 2078000229019007559175752543895552 -208521786062295241629161935144484864 6766133944798570481661012707639296 841884692245604193450886527188992 -817092065500482634346915537656741888 8735337916464650339220117262434304 2180807026656159550050989221347328 -827109840873772926590839300485545984 1599654828414937611306608495689728 6645920262062596425704851594280960 -60064114340819828354670866915655680 2754138397216975503606516560166912 9587172003452888289114687497306112 -777963235198867577823084193297465344 9107403216483474362661151029854208 789017649230473296394086300778496 -707717698663146008965468352868777984 156422279428471003270527074697216 2712282107405086332529273196249088 -343004832926212688613151199381684224 9614378180131040876868742250758144 9372872387804039924331674316308480 -51749898616750229829028247932764160 1837582789245270687823007265587200 5961633737281931848612087183966208 -436268682215195949972634809013370880 755405379621796301585471059787776 2758058841161378505671074935472128 -806588630005811908401324922136166400 4516585152524608327271525843468288 6203426175124179548258013846437888 -394421838622596421508882051329163264 687537700857096141001449812262912 3340335875809306275048131527704576 -842388044898947932606329021844684800 7024177935762026371341948601499648 1336926584147975877190660850188288 -19615618467690088023673489955225600 1782914118574209552476096497188864 425980848396037809543760169664512 -676695796556054040350908423419723776 6953344532185091765747412971290624 7477188017133824570288846650998784 -665534237853278029163054269605085184 6076661242276217071546007023517696 8007454465357988926769941035614208 -416743332941121892545001427243630592 3087475956465287691975497642672128 9976700167712675069066914077605888 -392317356289720939595441828786077696 7412576973144106569929462269345792 5963295807646880635551231019843584 -823989149621097064436545814465085440 6911775792049621263897020527017984 7213044106328107045782951252983808 -953239491123586127983232806855639040 5829279872008484848404715848859648 3477757163189226530963313645322240 -114396379473709235966292646455934976 3696603097488045966028436783759360 245433738129777547621412590583808 -641899521690692255901425904832741376 4263224882229272126478259455000576 404463756285420970871397923422208 -127305319795417346541331337764143104 5117478556754297476871064945426432 8979014152391028936251277815316480 -736346900453206023334109331903741952 618185854845415302471708449964032 4053487250561806628311720498561024 -990727901593213272848521460034043904 8433922099390356759654726788710400 5267529953021933580428929168048128 -454818525485735541588588257232289792 8628908119577612409821069270056960 8589510490763010637817672976302080 -406088397999789915724425212534456320 1069455227581436889555283843481600 2701185536448847447962209535131648 -739596323934310791395721094272909312 4565681954509013879579333982420992 7650429890825419196763153071341568 -796648556227672188804496857053003776 535181648835429098357293859209216 9640166002362215947751526406029312 -134347280668776615897118129086529536 4058286455566749045721293532430336 7290103064012368661857539146645504 -759895763850086842721527562816716800 6812848243356067746035416784961536 3665010589580885596191381958688768 -924766448409785503432587468477562880 7991644683677465526293469669097472 1831899252365224269557860514398208 -779821394333077996561527185573150720 1901878589459103273567104951910400 8198515140111964097041495572348928 -523403668136781336704264893529849856 861123665234541801904710187220992 1870584146421571389111993741869056 -322958254722787416932769550546501632 4168442885404304231765908912078848 2015374783916417637209609984802816 -378497182920646223749398948898406400 1436129190183766792304718572945408 475076445366950102971059458277376 -753032625305739934877930177916043264 3075796313023679661954438770196480 220539372112537209553425983864832 -469751559800174699184330784330743808 8134565622641756542692879891431424 9753159334487649548376913481826304 -58243212747498971031622183548878848 8574186883701946457596804143775744 5068332001798173247069567433310208 -404069049357151043312913481878994944 1154441663034984260798526993203200 7171074616277517914065728220168192 -784945960768765971066993976100782080 4405679017538137298780135563984896 6954621840341533423592066034696192 -563443465723739224420773762785345536 3963860390906586451136843079483392 1124759192044393122486575324725248 -393189843965125009312592763375583232 6775160615741942988788462375665664 2196058353650512292981801377333248 -128460111711307405655213480779710464 1547409001161004009419461737054208 3537354150032259389814867136348160 -422658841053585473352135130117832704 5788134467190949375396961241268224 4216814203937920405312130573664256 -285711300340881236344237003483643904 9245512596247160202009120304267264 1629841426662923225656587290935296 -270791378773652618097134763270733824 6296199002219124374738215299448832 178877841949673228149785796542464 -421419008838103381547251565691142144 389211015465599448851600512122880 9698310224742764704134508643876864 -546436483167538853186065227338219520 8641245686707899026193371872886784 6771160879619074743531444306444288 -546925037354999459726645896113291264 5592237676797401132573385950232576 81138093444999236662700422463488 -331092268857457809450059425627766784 1101201952596244695612783138439168 6384385139993764886242761432367104 -157624512879231199408506997594652672 1900335719825033835499641062293504 6675816151450784640055189813854208 -892124645542542603301267324088090624 7768246529985868599817610071113728 2981478682199447074058685068083200 -395059798541653166979577266269323264 2291197572141088917259972633427968 4933006357413115305481032586756096 -872345488069378630202486956648038400 5189719518651357477117969007902720 3426350946757044425920796900196352 -723820887937216186908053837302464512 6446544518231680458552042529488896 7640338671558946293680289693564928 -807472945328815947715886271388712960 7361804202344123709675826663391232 4232230264837328296443350838411264 -735167880317954956435719517282238464 6677434685857197168777824670056448 5333438878093207948469239017373696 -472905963537572601204807125715386368 6942134134710214910105989911937024 8350139094120374945370966025306112 -916588573200102114857952619807113216 1970712710615087135558264680349696 3772506192007513582494262939877376 -653118230101627100738330020485791744 628019926361832715440544441958400 6147766587057768376007817441574912 -730740817037053503724471155043598336 199983734968806970180348361572352 6579360712452868477715702890889216 -581677073137822566390421995497979904 8476588935144818854622879029395456 51405786599580460773844296138752 -289200459292024342759507335980253184 5291937211026641689440861969973248 1162643643988239647405103386722304 -379328178063863616393885643031183360 6983956421369109460251547042578432 8309171197923939217565881538183168 -211683904826720311715641581461569536 1115865999517337150959124463222784 6563243957928898575341440779419648 -115104571327792673196959375101526016 1845156350379866846875829242167296 9701773007841036622604510490001408 -597169237852311706280045568877133824 4857764075593496875910374155616256 6399676868338564584803928213815296 -679602864496959627860402382900822016 4333535575130313899929353301524480 466255859782435118861457660313600 -86172638236050076872819178892951552 4757894426030823137497542945669120 2175561506433593738152515605626880 -849491169190379477221611289247219712 9218080712992589993449594038517760 3668465812513964260919888029155328 -358748626243973279242304012905611264 5730020635975325803239374717976576 5563229273811085180305888952451072 -436675326646152736808610675780747264 1230546408198964557430768304914432 3261750521286596384248192498139136 -133521648120192907897682636283314176 2186676370717447636949905084252160 2643216446394937050756835581100032 -463582974053732195038021998602092544 8297339137987997922995537730076672 8719350067348147805259416173805568 -112518698525187692537913062893551616 9753955561303232498851355847294976 5721573255106420147576847070134272 -984841321044882735983812521282764800 1191442539969140888217922046001152 8025451191061217604560734635687936 -319709164479215323922559832923570176 2031509891680021350629935360770048 2353376712787494232258176847183872 -347579161432610131273446250573201408 6242416744207279063155897008128 8503575335221265328579016956837888 -975724148605276027323796668391882752 5182729352377331609108998550192128 4173331081159472746855887238332416 -627333619829778191931806026701996032 981593241556497503338862322122752 6081954780874032630560743023968256 -65410783586221504578380004090445824 7958271676801953560259723582767104 2946632695648268827551686838976512 -473309368389559325647248406010134528 7125708872800733281328452738220032 8458643624888108981235235663380480 -411579776536699977708249393710235648 3501921217992673160886987670945792 8199023149529635563553926575816704 -506879898948532083877100054854500352 636044232927770148447644393930752 3205316917229221617244752505208832 -390312864776975500746946529101611008 8036340574446892473032265204498432 4112318598200517243127544818958336 -987713240355588479931114569116680192 2565046249902271095743809796964352 8734341635462508008927919222030336 -840005415571476245068595237975228416 898618872553170447017567512952832 610097741852352475067490053914624 -238045483200801245406990733659865088 4487295932644177480948307457998848 6620262731436656437166049700347904 -290951718129588778176694204575514624 9510771115304846670874857642655744 8914986329786635363586746844446720 -249777879265443320011767196831186944 3723883080017408301157893376311296 580317051366716999213250192080896 -386806234641533201041962532144676864 342823023930638448353737418211328 9349469887337490192814784657752064 -429465677626112511844799236521590784 655574596311849693165852706209792 7993119794050674202519177137225728 -329775448281759130835250263556620288 5924413094507504292036035645276160 4243553122551753214948320600915968 -548718642286040823526018349554204672 7344240426043282690213243749662720 2462069368723110277675222854270976 -836678457956457016601163884746768384 1604246677030683789351310149550080 251776968631702400482604021186560 -285726883446261765256553319907721216 1773784787160637481971899764310016 251033139650303226718647150968832 -964920174145294607461103619637510144 2399055549423943501677922852274176 3605160102312595404042847404425216 -830640909630189373303117822667259904 1354795508103655907583161624690688 8669073636357926942809254931726336 -420404342034719026430946995813220352 9453969657773013862011780447862784 1894347396054491350128998035226624 -308863729692329863484441069367590912 6194153491799073581646360459870208 9855128966666767514064708826038272 -813142441849699208131012381137436672 2200535790909238158509673071771648 6047186929034206392165372805513216 -347541310877374734283664559972548608 4284919728557903449227850095263744 7823735821197671487698874077806592 -362142758551390842426396975774564352 6905849446465185621444446648270848 1298548825648880894210473480683520 -314533424034532581611253318476103680 1383862575087920118774529802633216 5519647626028657414831646527455232 -701852634909374294937019203568271360 1771714693753846282542174512873472 329220578013657841789374860099584 -507881232638130344572872763574845440 1525825885990196765929748859715584 7294969162506143158377322446323712 -39235508096630830074144526901968896 1066931134467164484877632019628032 8697444912654716975027948821151744 -728848636266107420574803718102319104 7244149859278054114344680986509312 5395881008924655931043893487861760 -186479090643261739050471780404690944 61205902509383204553077184004096 3243657422799807570233779606781952 -792392219320963308351190337979416576 6424838241787229186469157069127680 2283745574217981699516714767613952 -45739189804242008604030012716220416 2315000817866147097328546880684032 2572543636600222767542043353808896 -421351084710153578348827166120083456 9433987423774796242878943224397824 5467686158587647734618742555934720 -877391060140154773590930580721106944 4690851914636220952130471516438528 2979939759294287351591398474252288 -523629969592498222724141923077980160 6162214320465268007330545804509184 4234845557625867613033962175201280 -303554771911134644243290764206931968 3413356350786023288695170814443520 5811613332435653392479702080290816 -264049782504348810505274580623425536 2653606604012092615177559378755584 6520584347754774546647433202368512 -651289675741708857786833670487670784 7166540984959852418840066237923328 9095723864736951461450129988386816 -259369921761402257121352715507597312 2212450183987183008662721900052480 6633106455168303153678178926460928 -740087181788836844065499564514213888 5267942796117750181363050591813632 3314939953827255456695770775814144 -866420593992341568470264184555175936 3424925247061675187648937802596352 1935620031595042040375991062233088 -110604130838347116001204641921499136 6868333548001604730416534105620480 8335108031869151561334811372027904 -616692595836536555381292370298404864 2708360966507286006311378497830912 8955389222751278139010865264852992 -948701971289581392193795613618339840 6027661795619027519832009155280896 5850439965079316596369615524724736 -553634949544855788367190341529370624 8847325761814215046168375831035904 7134578535926447337935520135118848 -790350976486111795479665074338004992 9565212981844396900072707269328896 7655546203183992859225937141563392 -995038627552755441551030981941526528 1264650969690906621789390801731584 8012189995969497080888207058403328 -375823122555055910362992716367790080 1844567518342620492848942775533568 8853288092349233575985737675833344 -829105217703983699957023751580680192 8777060344124790948469373166157824 5176549710523000513488260192796672 -828069635255732397127505255707181056 7136891926179047836115275521982464 3686772783807241779150008870764544 -966144361299902495212487780618731520 324448563548708406597116873408512 9497796912678866350391441919836160 -753336722982579526405259282756927488 2966132428375332731920115124142080 6959920323317991907408326458081280 -651753675532554071150016379742060544 3211439483834533413987413120778240 8520066603880326515133822764318720 -501387702890689548526157042383060992 5769262689112216732842201026920448 4638160091487451230586936592695296 -692709974295800023538599248900653056 7524255750289413477238833823088640 6656320930216348454431384418648064 -261200817818619722136737463998087168 7286184257967475493824677875286016 2132790206543202452112044040650752 -452761508319267045485215667344900096 7305323503991349499854477324189696 5701575871545914393846603931713536 -450285458104919064413186463495094272 6993615339036009137560999329529856 3779818359415020662549670292094976 -285300714280726785143549533175676928 3573582189809456844140546409627648 9700471870879138392579799357849600 -702913788331820238264496978464342016 8418647533085549190673509979783168 7210014507467699241397914395738112 -337352262425802907144357642309206016 3484484592584152197280177944788992 2821914744273718702035677430677504 -50800793848895867490719730939985920 2368683113314601066605484923944960 2134595902044307712605606385811456 -991867926239715413391406695832354816 9508384382767166207004539667611648 5927992174063422522576101630279680 -500360078076360691420577240558075904 4983134042204893385194253991280640 9839949990256601007177126578749440 -347110186874942863684891873728528384 7310279888840980112085769714139136 1034124696601283619484821459304448 -184717313022707987610942240370720768 3833094949808273424946162632228864 109985528070898633943778473279488 -36666615599842328618974313187377152 1583780480389459761455323517288448 6601898540651017977896652737871872 -346551620814095077723462972223782912 5988132430693608823977182423416832 9275602694178519422745496596250624 -43365246380992105778775996382576640 6925243852336703216923344130539520 998347538789743443935059815432192 -46302140537833349281323597585973248 9758302886536797751590059625152512 7519498110206858703824758727770112 -34603734979711780391204691141197824 2552756186826320342730196912177152 37837607902976660791597171998720 -847666013285708850242340188166553600 4592025620296424360299346574442496 1008560094141252740528034816196608 -383737001709797408685847810108555264 8810054309954530619286202154483712 4933023490221203502103558981943296 -931346794595170947162994733387612160 3514574303727664656340093237198848 1124407822126996472641893871648768 -945756805436661159416840906130587648 3145115138270031896694942710366208 2162830771076257591314545752670208 -33614319263414599534181782766223360 328918931836075720308177089069056 7525482835803182393154784301416448 -714622514531092528150367150731689984 9913249555239987460114197851930624 5396444859345949864884439995121664 -570709579122015897239628542289903616 1159946731877355296158814564253696 2164014652163930701032866017443840 -805485829619848961333192818369232896 8664817154690900307045065433284608 2792027781329811920255390771576832 -244115942890644557124796041163440128 5091102631567601764947320174018560 3998299266286121429877879644094464 -80864085002971492090961955286679552 5040476250590279836507428022648832 3801692287851613930834390402727936 -575655896152852375908407957870608384 9005541110926705798933487084896256 6623128954962068896651102067359744 -35951490664501958656108238611677184 9043282372068622419600952690475008 9929897398830690161750227487293440 -23936583487900223079090881728348160 7396191187949573332420544568492032 6651178566314429791309264586801152 -108840010605685940512505528668127232 5081833816588920418762140688580608 2994291152046554370831968618151936 -962442879316641209064900220365570048 3451514550652624966902307159539712 2792373641948861397806061935656960 -949548561653277229379996794692304896 8303586136897292032332830211047424 1554760728722221672864074377986048 -399660929446384439316766648315150336 9495078380686569123501410766290944 9923718321896065619464984209653760 -350246737120245038700658794988306432 3230136932394225153674910627790848 4296973560706989764694885527453696 -608885200010290346101141449467756544 5739933886106983050192072615133184 3027626591327381942739444929921024 -604453143862258226969433590691004416 2627059411792771599588345547587584 1941390403952483020612828630351872 -843106568289536043056942842877313024 8400099906756514502872736708165632 2401064729915406222122162633834496 -838589926070164774193934157962280960 1442422595592302614965982687395840 2366453454611422709282212931436544 -947482390698972901680985471593742336 4289428593176416038995446332391424 80367532833125456072023111368704 -983408521225425254455535048996159488 5208900309678943627266667065638912 1481216866034892020409489376149504 -339553899633146460938454744438931456 9483848682921121664185389700612096 7239972981403253926920340646133760 -38417564659938494399024170505601024 1076323235044152543176069316870144 4330863928621442325031011999547392 -608750272791189652179216417553383424 8277691920935594536918248706801664 5838990544363367545978310874890240 -806012038691361099165882856796848128 6247665866419326376018736412884992 1278287790286664229149169755881472 -241488710051798974358733770369007616 4067841636731232584661205142994944 8772307697571460838533854614519808 -26681221141147772789408658953863168 9543034261860695942215464124416000 9320614583985046694594455908909056 -425328230749547306812211175354269696 8985766566454321758202954420060160 7365357446721710267489482910466048 -858758205424910404556838492142829568 5526674989975784273791938109374464 3507078631707504685660430428798976 -971038116941594070736291243942215680 6253975741571070932416650148839424 4345853542565917849440768659292160 -223018090097705438274744949575516160 7678302473989078674551767801266176 3288524321191093648464278445883392 -614344149316889351795278974967349248 3180285270466086697509515438325760 3518500364428816461560243994755072 -726502667164908846699115509622767616 2103292784420224489412016662904832 3078517078515305545996590611693568 -920989316376193427535270911550685184 5683010136125951360298098249170944 2868443387602339992010000665935872 -53035666767452960446439574697148416 4225408203360137436412725107359744 4552905529524509131677704300527616 -300272612807713278654870783474532352 6324343910322829983548708105486336 116836155524408934628582454460416 -300345161599971128180445178369146880 3451086817405288132926802487148544 8757074736026392489762086707003392 -641988600845201708106718135118200832 3342984470296820104371491653550080 369081332478768474047272988966912 -183920241375697877967705915523072000 9586515363004200875720893246996480 3711593317793781118692212326006784 -738599194410730636462198146287534080 2061192680389200570912835819798528 6359700884290787070767558236831744 -101898820203414894995353186695380992 3297701641748010380205809379311616 2598974816347958259568364834783232 -877897464449831344191133678024261632 4006532321543845946008941568720896 4932037320758158273715094922723328 -990052857884649789832049884233990144 8851688142965518019769328799318016 1549194051615325468378409398697984 -655174023209170500246374650445037568 9877020617406444095802957258293248 7364228976804057425108592052142080 -386265919560619237854979380408745984 6556475660564980859800157954244608 4383706726811370999305452235259904 -932185290993922771726307550623170560 9530739616618659021429400211030016 6292275225616097066782245311741952 -121570745682663568696000027851489280 8120779842534956551305390890942464 7735005813379439882297946507575296 -267377927223127008066397616283320320 8792332216416553372910221623558144 1630271801720313918193726579015680 -387667941462322965626285928780660736 4507626607711266690864189659938816 8827657861325884907400402240012288 -135432402228834612784394940425699328 1604426409993872885277078499360768 9891866592400911929531870040031232 -804349591256406288543141249742274560 3450931841984012059569325120421888 1665802809011601977811567403597824 -307283097243230549249322359889854464 1536182617583713981176134032687104 7402660391958025939329173296250880 -669164704880674569151429355807703040 2623727422255004902229849732546560 7767488678229177681094929056530432 -786416941620983847156904778730045440 27839749688429046125170090049536 594632331791324216523633060741120 -618741390682126092733828374082879488 4727891277140084968805365828288512 5432506363156562024406078678106112 -800990180646075772388232780159385600 764795211362725469411557068767232 7802449599615525971540838549815296 -324238633898524993515459332261543936 9218889795959113912783960335712256 575364559438802020862135839490048 -818709903804876487128931256921751552 7316265690469522105790845809590272 3008787976809105300584904479735808 -327454376025122303946702823782088704 7177014479629557869216441781190656 2303791986169107813486340977197056 -541705041267732601941629038562902016 7785218242944414866321422279507968 1030904947885640812718552025923584 -222596837578574126265046320526917632 1706928724645265673891342322761728 7470406039288494889760635968552960 -531798425252321728923650269210738688 8411803062733201954003795151159296 4815526756833423436893690303348736 -944138769760560377260438047038636032 8159343515673693969089801010282496 1244791781798904033666328432738304 -913153703621000445626922130363908096 3153806932010306146578679919017984 8116661278655201042962214685769728 -519569328739807899151254777147424768 8642142177780546959985909350531072 3320894104021968734469687986880512 -869999542123308128472076327415971840 5817756518064246614056818723258368 434052981391512827960158450614272 -407342470565819364896775328707379200 1500707178071427540821703766573056 4611572605376081143234060257067008 -38964177637518603854568445574119424 2448429424280703452286944465125376 1351486879148599190106087138263040 -375225704541435152826425820997222400 4107896535326869616024853183201280 6264087578256623761629396714127360 -873202952068461208526673938430820352 4423622329130996123693917151428608 8599008822356716638893257116352512 -740656306813042981956582226123554816 1721865107267843336010900111884288 4893904625985660476498636752027648 -724708097181623839670022001563533312 2257563946718380300212921396363264 8293849713851389922260464319856640 -294172035689970497782327508926988288 5525737560260685553516777815670784 3470389739616480766174142109057024 -654647183093079258190068660312211456 7326386800549846364889383241252864 4995678763173214418355303470858240 -261404920984930430291047627683266560 5385528752038824693860258008793088 5827100382296772116214127834169344 -139199274951314130738076432226844672 5884641745208171691576427987075072 2741729374350447581380032751206400 -824906161156180307964378467067232256 1091391255476387975248635578286080 7487070587457884222041950286512128 -840850191156713661202111334252019712 1885427752830606500574353004953600 4372772177276676396501214687133696 -923445383792635430733080570949009408 2622443519454771064017568520994816 7039531864918761955999095518658560 -606823308977535485727040198183747584 4517663392090561493347462708985856 1951871678360795744229762439053312 -832030666825957531863180913372299264 683480390582346996594215315570688 4592244469765869757806080291766272 -982303088540071412967599029136392192 5633701283471248706372478091395072 3058852922048735614752748782747648 -99302608194154792205335143838121984 6933086035831140392005069285883904 3626955077812187644996100326162432 -898021322385696554524618763175723008 2656886800472733629346218722197504 1061688790294241338714212712579072 -601318817083542614461598406434357248 2898097728555038766883784955527168 7568346170459753401175131134361600 -824484192016652323222668455173947392 9438080107982256015123603515244544 8456920684653587153624831455395840 -561354668471847683594323477227634688 2600305773450249108350545730469888 1399201073748719498162938300071936 -240769714492909128795753922980478976 6267992132795575857971917997735936 7822829206376273274816236269600768 -743636138087831166667483410172215296 2618002404939879929662706246746112 900319210518614102417720957992960 -427234649415969112582563052333826048 397039540001501801642758055657472 3008213638822306578915501379944448 -719348088387612964026628824379686912 7277302736496539921907073945698304 2422558648732411386367625673048064 -725072385554141226934475341703413760 6261222743981391733910604869533696 3265923773359473611996807737376768 -167683569468286993537723635920273408 82473001776825899739985479729152 2681496931001713557922379206754304 -344095252060467177706162237533585408 6683831873866319591801703056277504 3051659353667463624776919224942592 -602910416718932822220611647866667008 7589623355086803136065693724704768 6789415698675080521765861504057344 -931316796473051859784244042200514560 1371890179628694676991467820417024 586836984629730594468595446579200 -363209568395765493882374049799077888 7232442606224289869780568300847104 5448883327917004241075260467707904 -468426270621885904695918067309346816 6503445302126876729308436429275136 355810650679675045700739350396928 -297502226288877006612067203604807680 6696385706963818503994783188385792 12879192914107029286728518074368 -373544417862084313209829387145314304 1137720289870104080650947065282560 2521176234217775641822877274079232 -530278551978113812296969105056989184 5258925978750923281861349413486592 5300363398795321789886672962322432 -60228017889381400596590154284531712 3789236858485842854132054201729024 5356481846616534967416799809765376 -325412773732666581920596269780172800 3530286869823689761416846984085504 2310072843988053748672616705556480 -236808897464308188333588883701760000 9110607002067794376265775569698816 1294465681800001575781402085949440 -667722122988808943839732065550467072 6875094450966550138801700917477376 6273513493249296988331325716955136 -532765339657086819884177206238248960 5807515468858088571789475095511040 8259070163327737103007506459787264 -22395420541051350177389223914504192 5974570383074665697799066913603584 5903140439843547133096181134000128 -556434116561709423670357900298027008 8274052376768414308128716234948608 4902153896076451202929312118341632 -284524526683173330436242227194757120 1901611598893944350055211095556096 9692305372921194457533794477932544 -359603669420345584781831588357865472 8422050591415721305557924212375552 7996520532945992451510308454793216 -770628473237416959602660149301346304 1597353999565777641267514560217088 9750082761155882777109203689406464 -488102403492355924605882807141531648 7604083169465349867112355787177984 5809772803190266799682464612614144 -952596959910756452663985239171792896 8007179173180274497299980448956416 336622566606691270376354008268800 -372226815035679444150482322895929344 3495334862515984058467334733430784 5885125271912750176446836578975744 -632310628752938585766278967458791424 2198292950627506986513414618087424 9552106897260055938411337586049024 -346102349492272382849556473217810432 6122337939057886368166532154916864 3069528236181587986177510831292416 -267679001242624385746037218444574720 8726439025745948616218659795238912 6111077730303472095768374356738048 -335193635636865707779843069333995520 3377904030916141478029215186026496 2556328972590771692832823493787648 -372364868657857148434127619769761792 1612317930440278331448984602673152 8949127898610170349967684615012352 -55818353872322957951047280283877376 5075307219612860719234861580156928 924745687534985569898391635230720 -945159439558248239010603451912552448 4046144756402020268347898275561472 7848279331462437879386520028184576 -819357721551872590371754011235713024 3092610982827839838691023472558080 7150914357889076311532510220648448 -321565179737446052095776860904882176 3564707626799069114250831497003008 5164795169779915174650264571346944 -199298461686526295909622134136111104 8624790510457818899100422304169984 7013232424334258123272676821696512 -485505722989609597233448843468603392 6653940955036263211531464339357696 8230924596659777409430123366580224 -481312085632178025450591656291074048 489834788181254596681346121203712 4108811915326953981241525427765248 -930258388830826200789057977559547904 9400591443104420770409860657315840 7823330499877903171737545483485184 -50299356635890662397190704740696064 8658020636696954838009307002306560 4843585130312059495432304885497856 -571590457654602649488458341978996736 5993377760574664549334017126694912 5121072233162451042320160418430976 -476433748089702316877169777117757440 129431903547199899322199006248960 9673978674556155988783100361441280 -425925179964745760140105709193789440 821533063570381109421770627088384 6761228172587862370444029582114816 -104511511354527057553761167065743360 6923766968977881218012259031187456 8380228441447131166309868145475584 -487320103864617242984785215062278144 3182128441521526284177259066556416 3760772882753794155955668492746752 -704442425415916764053123523678306304 1975432904375208921682196704526336 1823530921130282196337043760480256 -194402137385877124325324305605853184 9178602074269320865142337232175104 5504890976369267983946728633008128 -923290078582602519424815305072836608 5032105443311502833697723353399296 8160606748851853424659327629656064 -301732258736013167201607138452439040 1449045677466938298118875304165376 9065702186078920612296676062789632 -196268550581053390876883939607183360 2038205566683346083498311293075456 5793796962923140256134721882292224 -950566451780522510189017352372224000 3492167941468126832085469684039680 9226364531237404088427842174451712 -805267548523680318387557659991605248 478402380605340808362064410050560 1710509971683667464404984525750272 -120035349573629009059362507044421632 2123377262868894436052230194855936 1257320917266508864222043104608256 -932827682650527971740930637347946496 4054853770490104810613878518972416 8069515375451530182810745054429184 -394412395307736233948988793275023360 8516544641014985270076376751276032 7363555418464083923893930986307584 -970777067568718714264514917751062528 7486653667203667480472878556643328 8679050600876361461762021805522944 -866414992320951594199208845994098688 3644477046646136477408674984230912 1286733809533093472565356453167104 -403788890067712632722135515500904448 7979128263169869713853370240860160 2616578834337853894281738848305152 -804552105996044716601883119075721216 9534811255177637301566935601774592 2458107795794746114356026598752256 -247845174689370045590500006363660288 6885419810455688380617824539770880 4680417511897480933996545280311296 -237681706262146869898791102843977728 6083928836082114557778557820469248 2213138503497400131088645013635072 -53949812751340048685451803088650240 5677274055564175970815264702857216 1978805527046487753743842922201088 -399084120220429820436679562669064192 4313932699896454640371748904632320 3929461213819278838735283918209024 -505147078802581824578224837693014016 2734918753750514017051783318208512 6019263415513038349004133082595328 -186506154663608103287528273079173120 6115591838704739097063031952113664 6717407846910652061752576639500288 -400326872737646875174803806711971840 6339817892168621806221903452438528 7916746032029978905574944087736320 -650827665555772934384005898364256256 5677463485494925575445910418096128 1551022163700613751656936097447936 -286563399450518199978780848965025792 6910930968125232525226652238610432 6096283245929605740667921827364864 -811846944836863939197401476196466688 1315075996375414494837377373044736 9953825987125728012203104359415808 -390167164213151596389165821241327616 7737742531240953086630106750779392 8139630399885763510233592926044160 -314351758539320346787794303762563072 7905873173642919080497645373882368 2543468083766718687753024252674048 -74790596440707087797620360565751808 11283547815245215347035240136704 3713566217138950733073015975706624 -143124609037114738132896532196753408 2594120672896366104087104862552064 3881968286424618677359128264835072 -788994938370148717071428115954139136 2771507900406011638635783375552512 5107497442955793437354629334564864 -252023797115698610706097746426724352 6597647003362633114012483055517696 299449259067969263415895905009664 -442423948647890009226400810223534080 8508593033357035807063123427328 7672597103915019491121732358504448 -731869848582128705970728695282794496 7579729908805192165484956567470080 3627148102864742751370771907477504 -402911038257411593172385032277327872 2309571710147817921513127927611392 4023605512930188824391657705177088 -901262199198284659114227106624569344 1797323120815084965998540227608576 6042895777940904692787107682320384 -907526650884509708412239649374732288 762221395956851268711162803388416 9509068927575506528665760239190016 -306039858292478214861931953143152640 3625033449670193463474991621210112 5934995653949691399615147489099776 -492206528167081986003868184200871936 8756244255804285170307453293690880 5348038383244636823779282790645760 -377144038726086537427639921008443392 7608224501380406079518231352049664 551734642374654085485072413097984 -154970843999674986904822888011923456 582828724268477800075599659663360 9752855121674097323423301682331648 -825313770029508873925467686374998016 7029502613076955090700705990705152 1221495721161043874024983973855232 -850533847736176759522915308865060864 5632452482983304561370421734146048 7649366343360450972192966044549120 -224098720564469259807526956667240448 6566375087420095142275243755700224 7806551957819456305395680682180608 -826645150537926015207317452925960192 2218602401914256065584642446589952 6267118458908809213997607393689600 -662809028013824637494932210389614592 8056280397669372724079171483992064 1392613637583200757131584234061824 -492361234377558687990077699871735808 3455248928005018975237826060222464 1399765641042085967803044308451328 -881562757765248908069088070717145088 3687936119597505207358292834123776 3940333379909556709121163039604736 -302350979612440638766459791479930880 4285041064642939410392397490683904 1309814402510712261655777865891840 -949392318846399709654386805754036224 8911439093610255704841794585886720 6289176036201396438607029036122112 -672271961653832825708613209606324224 513768598736166185142816247644160 3628766658794034584517588146978816 -570221938301203994070619960704499712 7611113875228339761932329136685056 6742628418596849117829077940568064 -58124704255020094498404939107139584 6058892166557852770989597542842368 3857257012052695594989158053969920 -551204685744541305922914703326052352 3288219623288532913862398315593728 7018665358957456826983412811169792 -464482433433905755954588896047661056 1954110306398022998707013907644416 5712100511489930518397264047636480 -450619113010466928473292934242893824 3363781855374787626953512761425920 7640020833519389278088460725387264 -695854963393481165103560721487101952 5714259847348689647378294305193984 3639602026364694764859252247887872 -823829283082253510001624400531554304 2041310270053005218204188464381952 7688683897107663815187899487354880 -753221315587913977627726831905931264 75173216192688706330108499066880 3953140671990756997388938915086336 -599983665472107678162119988948762624 5255891053224652033808442075381760 4343029719054804258751061151449088 -129927799918956237839480716200509440 8240302846332520933689226285809664 8507528422300388758609433834029056 -903369284240599922866645745144954880 3296152576623636674363841872658432 308315641738053686817205207957504 -783756177253753906667668395381489664 6566885161518462754440081007706112 353550338348389731838705086234624 -985986148856959117824026973183148032 3542530601574482628253302860546048 4312034509115453170510063627927552 -119095955567598406821469075894435840 1167752472959905670208155298037760 645322104780222631661708070879232 -262668510631475541274127671314350080 5817479032224556256570193018355712 8381476351587757488624119196942336 -904133995673070959466634331878850560 5911166134055463210934592616792064 5915437946469051067251813697716224 -623402935874314103901054293317255168 7426477850799884834005403012431872 176544672422316854562224483598336 -70709876174262922975658277492228096 6835715175391585060148129405337600 5643172645546588296926565819744256 -774145259473041015047872947138068480 6620778965688597795554783817367552 7009732997721149232670996722352128 -363988924566640992851000793338216448 9258541514693964099690073495175168 8704036453606340596790113144406016 -362163679106400985846198830347845632 764555303879158581802539526651904 849376121341143509255783494713344 -128288216173405085391126860457312256 3635685426191426666804156320186368 6261881174281954099109032190017536 -375847234228644232297807590830637056 9195540003492295674179466997792768 1803165335696613149074891546296320 -702818202259035288579085771028299776 1148460356032806771451749514346496 5851444799395757993873036919439360 -698180308831908265468237576654553088 6207499413193523846580048001761280 2593980331268254503590075058618368 -970829181934565657286785327479914496 5324576810469415937772017237884928 662340475939753380109114119553024 -207841001896248840950320271219228672 5420843120388905777798414128381952 9697269446917295223567079996129280 -62044632805810239297708086093938688 8077388860376889323446784380370944 9852166420956586146782078822252544 -209854075187477632171674184462630912 888236169247006707144637554884608 3324583892354700433151352123686912 -257030853696437513550432822225797120 9387086268027345129190768141926400 476312050462490000000921871843328 -516126828474169387907836359903019008 3681847272159129837113532028551168 5283909780614056335441955265708032 -149504834170692548755177945696305152 9652370854046428161625334843703296 9931459327815029464985361119707136 -559836916223427723268264170769874944 6255190139752534273276152651972608 1743552104788611299887805643096064 -590554502437240100404129092098588672 1340327499570954436748886470033408 4583645209694635533137664354025472 -175116225469858748878926556612788224 9137001289651363205664606064214016 4125544933524453193105110162472960 -240409124227885594211402295766155264 8203112838871724603097653618671616 949741737739584853843558044532736 -377190153467509589187183897661669376 1017610822620728660580164087840768 427510358319695866258302162698240 -578687407190223464987552325514035200 9176660295326786374708262357434368 820601258321056397296197213093888 -570531902946261420491675934371348480 8362668488998748398058643742785536 3023148867030184012020442921435136 -971611759279166563721090535247577088 6342504632984377223672701497901056 5439129303840269936155116806602752 -393651367412589499652921637241618432 1063596257522428109219032746426368 7673878814657478900021921291698176 -850248817035523398047261908283686912 9135342610252856887419166902976512 7839556859518767533007761397776384 -521786464712041950951957997922811904 7771004043398318639634926064893952 1616903953487302491972626683002880 -702023768126495459368962173823877120 5094468490776458787445385321250816 4915532647894718111613153183793152 -899200781569159182135641557314830336 8314358046439530700855361021149184 9438982525977200432244847181561856 -816915176790513549589368906371301376 2872812931369551534846154628923392 7986674708938557186210053041946624 -691440321384397538466042484212367360 2456998891839246915989989073354752 3643750060381940753269071930195968 -581145531831759941809138198537830400 4032463250089637652108832776650752 1087024708178748087357235399753728 -581344193582961920436906298932461568 4841350762065716686676895834570752 1888902481813820588962727264780288 -882604856021670678708960755670056960 9826089753443361812180587646025728 8554088829177850000230891743346688 -125637828433192012842248439320281088 9678376171833601025642208159596544 7932724706052870028239404730941440 -627858389530609248727930723486400512 8785276808367055324027658765860864 3933133078745977485209690129301504 -602520774208657287711183056253485056 2860670771691105117163007101632512 8322440719203505828304615754432512 -344945581626834253039009984602439680 1967167164541208885054119413284864 5053584125026496326434183079526400 -442882162280868135421730417192992768 5383317848781178760399380033830912 193531204858923932302072289951744 -559942440019694576466395509393719296 3943058333070396506034934260957184 4529804619980133554659767307206656 -854198885559469192371856788919681024 4486777256080928486434462427512832 3254939464748234896027202248245248 -545752369096821404387872088797478912 1821079571648854037053237457059840 5450102550809059157452852771684352 -481331724922653072605720952851922944 1797855186164661373150027587780608 2435006038948806423582252487147520 -730427632438014693194857300656914432 5718111739986076965806602891296768 7123209838080697037421459504365568 -251077970117307689941112184266293248 3965922012277988710864966624739328 8374205437488873965113058802008064 -565923406346885271605954451169345536 4780790969394761585384515048570880 9957049466049279953482268262006784 -713694174667174079110586295501455360 3651465456800815263537541677056000 4642292377290174661139325975003136 -589087522409705812553586280188870656 7967947081078327347419970902425600 4854980133007095533107788466094080 -168771719595830086384628625454399488 738621078011471361979586548072448 3406848675021714365542280120500224 -812427772682874863353128677890064384 7414983603176381418063888495149056 9559977321303199825628651497455616 -385608645773793056637793053188292608 1778556625097927939662553150390272 5842762949824163588749851820556288 -935737149494343223705515362434940928 3523401476246943877634755244589056 9059385194409436507504754168954880 -767661939036057275837329050412515328 9462579549653096822513260570869760 4297377167348964073694634159636480 -515228471087133048798500478620008448 6155277213642092178202835128680448 3712784600989453181712523860115456 -525002518445723893485726684327968768 8347687168957801733461078557327360 887716585470174657944029883269120 -346711317436630958957302462401216512 745671220755339009560232408907776 4726981381863056906544187812347904 -323200514996598509761756112321773568 4823133934333167743432113665343488 8893893850129120660137080067719168 -972326026208269247937863862171205632 2010811501276990881804688071589888 16196451961746752717728593739776 -736547327752343044116219366536642560 4601511283028286761220806411288576 5214372835135968642916050668617728 -461890793953746009935343997037838336 3123313410069457498390199409836032 2875046208165625052777771859705856 -401695319705393784401116278827253760 838510153793583345056187653554176 5387485368929883231440587817222144 -131401501711326352410141785491243008 7507692078843173039279807460802560 8593755117137234240714688260210688 -651255761295655807096150920838250496 857473090105029104029443198812160 4803546388241668205722968011046912 -258850378789379213080240609971666944 2679264501507202712594718335696896 8124249752912405364538482372902912 -209429128700863836127246860318408704 816483854960826409524127747538944 685990883045903894705097196699648 -638081624175468763222633376299089920 2760084712417676063173421727481856 7157400740803786135904858180419584 -567934705649896652467006512616701952 4712322121263413075559866404175872 5254833675226485988542976161218560 -18194303398273650134747448554291200 9849508675950753504883251221626880 5426315787036860294233909129904128 -361268206895549627884612668704686080 2526983765859176391237222992445440 9345934153398598133949588739981312 -707414861245848959784571750366314496 2309389082068632212911004711911424 6218473644154181304300745997156352 -102537816934911817557819676868739072 8194037107253417679010943383633920 2089587189891621722892512704593920 -187561433447685227854676403310034944 855260066911279274106695983300608 673041160080604414488616904949760 -993469328952506097491150926394687488 4473383296392554127429417778020352 1077863246347167541594615764221952 -952739467975998229086513282383085568 867376947173861986545846773088256 9150756865882337687375508192362496 -329409422426578043055296791841865728 7668989271093685333927215459467264 4102550400844335529195953562058752 -643718506674627590357577888836878336 401682779488474401542619086716928 3124369828651047905953476264329216 -608203908550392449885371683724853248 632752294737548988604617297231872 2596573377895442213526623955714048 -183558126934307520899608426273832960 2343696494561968233561554266619904 1460184037419604224299485880123392 -62169093537388753201440442848116736 852676491573411753013154938880000 5347621008581526148189880447926272 -644924718271351728742203096251236352 9494981515104975849096280950177792 7433028778536671820941016262770688 -510042509826767345700184260943544320 5340196961116241147785617891917824 6858570611294440210052764252766208 -127745459714400602477614361735069696 6746216307825424481604312179408896 1337194669215815944671057355472896 -780854807600086018453504614331318272 1250363767101197671692274096930816 7419141796279106477732158349770752 -597390007406959172345373470255742976 9000466625953698094015053689782272 676751254218654113576834385838080 -17158438627953004105846839916363776 9774966234349306672436990495948800 9930238089392858988710890081091584 -591025058216624854378465226517381120 5005709018925565596414006662266880 1571079918227835125126755122151424 -209155115026897127687272908195889152 5098362048085607293433017924583424 8400423515109389243940676078403584 -327828538785624339097335037519986688 2706962423619380547266815440453632 4939369440915666335922568910864384 -262018113185491759241907437901447168 4955403321953215557565266224218112 7503033499452399840340298350723072 -562723463247296633780777539218702336 9686275470414412534580475840167936 4986425883698153575194106217365504 -283293225795906782920383920649273344 9217655729013707207745425316511744 7021494831509632989318214045401088 -113354404053207093388755521178173440 4818210164990553971992324432986112 6468026574046851908559189974188032 -624032638507201908685517318267076608 1072742310380952042367471497248768 1370798741617924184819527537655808 -574635552997614148924001320785936384 6514012632176076505681411002335232 9743567509808329613766075921465344 -838386926581930726597540737208811520 4734790734933676861415007140708352 2439773824302987609976471627497472 -851603631397497791527820674226716672 5169841635225841982524190447632384 3302634710508899399383428892721152 -184263684338864397909481125576704000 1507307200215677679332235344347136 7559552485324346868457453918355456 -51532505886902364457164856174313472 7338299432851830781313044635975680 9684136991466822851104990589616128 -742762156596143398576067761506615296 892419360831948986652640476659712 1998321922910683196226399025233920 -264634562249455949841306768354836480 4203994852408551168823097775095808 3041943894991131438150175827165184 -923700954025104213795928087862444032 7553700212710914079930299042496512 8307295549499997843674649956712448 -842290904594649300421387982225801216 5076488902537933099278282543595520 6477449314438095994500340326072320 -837344784470324225052966120954265600 3635738372079051944995164654665728 2108393050764365605996406337699840 -227995203916736073063309881347407872 4855025507968089058266714940112896 8721473266303958352641970195660800 -161586822183852405483435813968543744 8789964487973734446937358095876096 6700411772511265661594749481517056 -389687331200139112823878070248144896 1491271618314187397236640347848704 2556386189030720780727388785868800 -576962980966399608432674671752642560 5954027367246396332620660005142528 2464352028569320511077461566423040 -266383738861598068847265434447118336 791431469506358571555811955310592 1614381677852610211541032108032000 -732893968360399787783959613957734400 8308899849266734388590714084655104 3724419095148307141745397316190208 -110639539405619741778223735557324800 6855778717098386364674066574475264 9883021565544861506269599984779264 -695081490911128827886295684506189824 587605285562784142497597586669568 453134578089424989996688364011520 -326484763530397169938631569430282240 589589770028552622684381875535872 7152597025754430677646442521165824 -501130967329586177349072809459974144 5816413011768165820246957360152576 4184591725852314366686033549983744 -963973388529483452836826397917839360 1404272691233431871736362959896576 8073699976205329546883112435187712 -118012682066349337278099079051608064 8302557567419946782227516685811712 5626798575902143269394491199455232 -923396890703682961460315769345671168 3685949440021548931505230641627136 6382510905395292507613297219993600 -644325370153243979894099270996852736 5570858350521686484496617020850176 36356081017837217153161489285120 -311678060086406024876704062976819200 1678303252574022194696527735160832 9219706098401149309799288121851904 -500759905057025292254868434172510208 7280044813308229761935853710475264 580306969059522749403029219311616 -607274216111354622355005943756881920 567466881891234177207885434454016 8883085886567039559853120627408896 -687095769924499834993773372487237632 4554377480714339653591374416052224 2628664519023715205669148948430848 -481004776136703670435801474344681472 7915227390354847034751635156893696 7577821652583259155796216325865472 -834987858917928908329982643373342720 8715017822607614601485991467286528 8511958513561973061218120316747776 -36675786557595812495362072858591232 4258712907577961391693401075744768 9475407248893189144649672178008064 -127129720325070071053179080564277248 4167063021183646158962728558919680 3980037427409334623134431869665280 -336846790802827601680958749814030336 2816834337035028730328949970698240 1391463566254599463967472006201344 -815273552379913102950825728969539584 7705429670102527224260752324952064 4759739979485548392940522371547136 -589541801008569203989383118317420544 6561257302928232592366142343872512 161254827573941422662538418454528 -820262918934457471097397032517632000 1935549609001250133161051703738368 8637437558759701291909657214844928 -521367388113913482663462566602211328 5137359633095720148622914770436096 1451957047222692974447402258792448 -910260613028625989758909947983167488 7617441382091032818188215270768640 1146231148686107324469959637073920 -946795629453758780886599104343310336 1653739252267251854695675413397504 6980301443653581749509317625643008 -821182544989142406254326125737017344 7223480846972164634094740986396672 462376818046612180561203086491648 -740314397686269749848609674009509888 6601948344221527307355631462121472 2740794976441649884678728387133440 -321303671836046868443945260841697280 9150172348891383241649550983692288 1794192777265219326339432809758720 -168571628599169313292286744191827968 7773503930076530619764783175434240 8286416901207415310757653506949120 -649449103583021765564473920695828480 917495249664255354034864546381824 9782098713287592178703249495293952 -976230820056980229188845705589948416 9525313698763826322548846300758016 8777185883141104411684736361037824 -776646887721862055403581702808797184 354541886680290986910466044854272 8533525981871833077349177964363776 -561882603985993254746169796242440192 2865850360893828934871555705405440 4978358087271848040120561667407872 -14865631600395343465228507218444288 4703021283325124452632281881772032 8397134957124172774076707950821376 -762952817186509145194252820226768896 437303194997952129930679096967168 8890418111130535382164832818036736 -851998532986540350213566646722756608 1561121681527230019322779225030656 6753524956889410232845576523743232 -323642963492790296853360424079327232 3356919348053179695082527042568192 9471620418451205878608416984793088 -492841010345220433866353260487507968 7910240423998779998831803533099008 2843347584409175017171027541098496 -686903597151524151205321417678651392 636180176626480159984589475938304 4347187430120934679528406566043648 -222432286570064331695341200402808832 981197192027302865553641726541824 1877761131496409308200169927344128 -412692932689363171000707898964705280 980707767632331109736010144022528 1716289020231859264472240384638976 -907382197999934646443046655884263424 8307101360875503490086715820867584 4532918914463153065913512590573568 -879967571208382196817404533292400640 6117566776551114218435409860362240 8207591238599438824163553656700928 -800626885696009338938134295759290368 5092913274655750065347791104770048 5010692103121355641859434409361408 -928112047752817272127979507601637376 8423859492198371435361707533271040 7057585713417388443258169231147008 -84262245430212167315421837645578240 6073380378094083819102939541143552 4051935092270900441797012412694528 -421140813688051113416275846563364864 2054690899262871768525764604985344 3938885569138940505770426636435456 -231021847377967574063671686740312064 2227371271199930260010231010426880 4355642420305612445305700593172480 -726170650526428911565897807473672192 8494024667153611007088301076119552 2875960955780945971888385807089664 -684515060820141525068758171267366912 3157660579162839624643271733542912 8813108270255779710246758568165376 -316198132501111946348170642108448768 8232478240897824276978326466199552 115045403826030231338887547977728 -996302383890404874607660369130291200 3917260684890383449926023084244992 7120539570060564512695031122886656 -747499387108888371735139164274819072 8995425467254957500550142054367232 7574493089348669483907298061451264 -98609086848935118257091997432020992 9226023727112010500776928133251072 9489717870373427822697572108075008 -820814521553965112595111090013077504 2050812034054707915813505688666112 471210623598822209923920850583552 -843519142879532135784930930786828288 5997095543859186275721672721956864 7037072697309585589931294127554560 -238198320347476170983148199807549440 3997973019175605836314521093799936 4109689305607776669104860146171904 -18137780899618853051125745821155328 8806158965845920455790528068321280 6343026160169653002883272183644160 -382190028840080949740713520543039488 8318694423593871219612446722359296 8783508129354780850833553394499584 -579503899446072948186569868448890880 6503656008040959191914351012347904 9889567558060242568989702057099264 -756861811434625086341901258510565376 3538607303955636664891665725521920 9508614941681876684659447111352320 -292473995666461566793518998578266112 1851917319361657352439540523991040 6055468808527189100176625065000960 -933922726754026734361300701215195136 8611204661661125093759613283598336 744418171237948053435791263662080 -837911156654031733613013094348357632 6998736250426934920371132142977024 5359051813594663073986269096706048 -504358709780098697377894602146578432 5262367108235252581265634637119488 9301050125251636576932402789613568 -957867874675152541247554642482561024 1815588588546206585562423931961344 9475253845354578384606099748683776 -877024275029135825916038461920378880 1054103473616213240399845310595072 2255285364030571072136761445449728 -496319365736233580660353033058648064 6936124551822602348800838062833664 56013220716042147869538142650368 -906145483137375111328386852266704896 8570739267032227761607977472098304 8746256444560202112562971868659712 -605695057693290475933032476189917184 3026624381954729604144265043116032 6466796645620077954175994517520384 -206157617811434270441707650561343488 1411799498918293149615336328265728 5419909674187660243187561236791296 -431436050726015446851415433640148992 8902608921568992110766539510120448 1250843023253452202743937655373824 -480052553855667166608915498918739968 4099144238586191281426708058603520 9605443632941785441837417058271232 -146325025845268636065660776031977472 6743319478218284729092204518178816 7910934850011366056528614118129664 -120947117209986882699338721290878976 8048135356879034732964061139435520 7901975671209060051771399100956672 -493857813964306134549139816699658240 1691469084897552907038180555882496 1034370973050400061756588423118848 -823079839617939197712054946357051392 128365301304839677262745485443072 1054858867799534374970099750666240 -154829349447068626910073023744704512 2615656710794025525221094076710912 338594113486623923055027241877504 -761345877052633833754811241162866688 8529381601284211329946429513793536 615344180049940705634440850702336 -128695474783959864964827935924027392 409629942887965510297532487434240 947314243087112905251395024715776 -727880080064135006827087138981412864 7879893884428000693584659992281088 6189182028060612419154361838469120 -401960855726616033976454614106505216 5110120758027441687936547736780800 3273011014027069427540889023021056 -129755155410697993614404965174870016 1254812280671674320937347977314304 2378430159012114047233773300350976 -114051751556919246711119203834789888 192969366915334209616851954040832 9992113166125667937457092998201344 -421867452818707580575744850437079040 1513132326783085187922680264785920 1105039079406775329210922159833088 -12998869987644872089328383483183104 6625384596139332998467445309046784 2818740861712903221633093294096384 -735246315253807344205020698509312000 7280511354500474986641525873573888 6974869727857728890899802575863808 -305643427311989742827036486414630912 3586657131020070428917482580344832 6654269082590792029259525703860224 -633700634075617635197795289222086656 2623388641368752655930561226866688 80480874262754980548508961996800 -613542162403479265214560105261957120 651010472475685124367900697690112 6147169123323738724287132681109504 -906195266236081087804552422736527360 3734720678034984997276591184674816 3184934321707929593400852408696832 -523102633382845124988048532079378432 103381014352698150062668321390592 8069387722603937682344438883418112 -548871413032274662582851417554288640 8755880464070176859094777403015168 4081807294044565043517917782605824 -253012039223338553780172253252550656 123089406783612958374712487968768 1068975609216626177935299194126336 -141874368454528944665607171064463360 6930478077529555450445964970557440 982947746530594836017135719809024 -57878050418570651867387182278770688 2975488880190790265570046131568640 2060279097950019244798552659984384 -106670715977768133832924962997927936 729676265882536435302425778192384 5080452698204187132228637250551808 -113118138958872425104121860223664128 5438277126958463694629413217894400 5832008478598949462786310605373440 -756510971806858480276576212749385728 5794122818589195447941959612628992 5703178627057689789083870769971200 -310188902934717891568000912452485120 296181336972297684974287210938368 7213649154802619091201390939209728 -53566869925839861843685988009771008 3705191966690736228595982923726848 3717328841144875736294297593446400 -43723974177296793558254408773402624 8217085895240641856268637485137920 3520152793081612490603973457215488 -699878649117535444843482842765721600 9615431063502847173577116051570688 2888753489744316797932619677302784 -139740371207866562149566871773380608 9505829918406647432627417203605504 3029708848588329562264289155219456 -173768145902626428860373909261778944 7143469630040276123351897773965312 2028566954821763109558719667503104 -668940462800187822556318653134929920 500517866634660804939727847292928 9844567520494107918015086888747008 -138805980499124808062940201556639744 4123942042926573156292658190090240 5652897084318407591767498626695168 -190011656890777579134405859298246656 4017746912792762150193662575771648 9214557416132475490974598191644672 -982523616723150659362330858311647232 5779905492144037141275936603242496 2355241308726224553215432908079104 -576940069586735782760515822348664832 2277988972934089227244617890529280 2687878409185453203710759508377600 -307456779799256305254669808704684032 3129726654854449813661553669439488 6016201862762282235812579549118464 -956928990418044958612906982600867840 1198743966505199705753812176207872 1082199592821392475917447216496640 -966413823770280551949891966106337280 6385378452154038572303808729186304 7454456898367524320662514774835200 -767207452955848108913741866695917568 2895356324121454228748320846643200 8825012771368041189764759753326592 -987855739370675802682146108177645568 433064279025027311578848692273152 404950864297952947725872595468288 -637123707137333732599789211422294016 6087977077117452855392125352673280 1235872643582704634788431821537280 -380411202828329801833986190770962432 6121984759213947834145807299248128 9549488933429559694992796511371264 -406934004761321042935494805347631104 1321160344530813594141624727764992 7955216123095163886786346972348416 -487041899054538509503752700029829120 7224672811703179576055133724737536 1684820525556517506529717412429824 -790483020213967131471966850477195264 2999967945382856497022766690598912 3122504314737295310442931098222592 -465811680961696988263025843055362048 4820245853038450208291775787827200 7062673237173815657515895635312640 -116212621437431926676215177790095360 3051694188859958482054870005186560 6367060287184623670887738637287424 -920678655505859686154442581863301120 7126144901555799320899217117937664 5181949361917691291054589492592640 -575168807861080685494757201583013888 8125631391722875952888603983478784 9965309969809550495346902540746752 -410980210202152081334827075499982848 1350193781336076999569085393010688 5146730408538793898499427230810112 -397608692900234345404934871551311872 6309981242459526615191141425872896 2509841475112375210845026639675392 -637758132879993602025774978762276864 6081249597123733078345457881579520 3764522222379379506643545983287296 -196603276654459642093269955945431040 7723633029218051287641417718956032 2366537626755885549419968507936768 -624863808011674349015739099863056384 9887275079974219843585706972676096 9142888204063367470631481220530176 -142872010631716263839712927849381888 296770571215441715068781937557504 1184631870218626305788580871536640 -265098323878353001776790220266536960 8090795943335996604940265518530560 8764112507708330128089274256457728 -278462665187182175600816161237762048 2111809521007943630804207909470208 31650924704990771665188520198144 -373569336321511031622140124888825856 669317055376915246908116154974208 3050842352823817378633979457961984 -298285627604816645946698634035724288 5933163662756539131928432349282304 2897003062291631152463918959427584 -117556824090967971844277861045239808 2685962000250921411456691494453248 4562043758150458701794529016545280 -686094317538993388668014416759881728 8243236064700338785170630926925824 8981175870649076039850553084215296 -997324211811772346294835216140730368 3779608810968050282103082785439744 9525810691033014663604523170267136 -643128760442721244767384511432359936 5877032364889212727053069351649280 1114926132147546884596710365986816 -727127665542881696320234619121172480 4648420206148703420772123924234240 5571431050608977677977332230389760 -310738135486719074204169065172303872 8561137871314211500516920614977536 823200716959550109016037160648704 -778261337391294536052595440635346944 6407603438894267285285820828745728 6699396304781775182475195668496384 -943672411712370541038851162810351616 3148586153911601794339003684618240 8258760527151362914501046598369280 -548184314104580713613338726365134848 1155849201436429399773089592508416 1181783438065555407117004807602176 -126381157717185653777966378661183488 3579825480033718385200552363425792 4179711031954518636692248723456000 -446445031517828390457695283479314432 3055055312346160702690342255722496 860366131196439829844106418323456 -751469851563815512299900815598944256 5774693605152886005898714390986752 3553716210827330156316240308600832 -169093794980688613464360880663691264 4722563004703350171241830269583360 76212758324547316962941730816000 -891248008596335573496865000729346048 6550338397202073363775849196683264 9743449884012524260818874072563712 -194502958772428719215309843570098176 9711466875867857993047490147909632 3349307345842845542408270790000640 -728978285536000761744573071695544320 1744326980446776124088283757019136 8727050346489051408184495170387968 -892043272830101723605904806874447872 9238470744354410858132647771635712 2997715546272080734580774530973696 -616047706976234047521272034880389120 8551157173535455273330608063905792 1425568741816827226265236338114560 -522061252051756180493419965524738048 962542670012474173301666577645568 1254165214470082340322840655429632 -142274589858088013291036364570099712 4667832300590775883319268119412736 1076423439389197144411358147641344 -994754696085231550616081897680273408 3005474919244530761195144681095168 6104997859908172845284220586688512 -74667602374949095721103942532202496 4622456069548486462753136044933120 9456771173762543812487788563005440 -85990144484811291792618364868755456 8591898193478708120984527612936192 640532409453744146884747191123968 -256084591324651206685551039631851520 6877042138360913373054635274665984 172334738445461180706538884431872 -912513908688624072631170769251991552 1069026926361981649099573262548992 8189785100294075291927246668824576 -476675584495343853770121702384074752 2474872968985543662010233765494784 8249795917277208011814732111544320 -548407096724201732091020027094892544 6938644707521190732770563397255168 1250066156640461102718028032770048 -898899575518911200224151037672423424 3497555026802763153201101560348672 7805300615270831557165439636209664 -466424747101135522491458250495492096 9238092433994562604072091695185920 383250157063869878538150046859264 -420875481473358981224825161655517184 3918592369626186198489478020988928 4940937752679406699177253485412352 -136887681889635749117075323959115776 1907710943055063238097098648846336 4525851598917855221807894899982336 -768241254820799330032196708007411712 584372501116131013405766569689088 7774240987886482742942367458787328 -892931741868856171279347003441545216 7092793090832925627918026971021312 3896799081176683800862697413672960 -44281897078467236848647898138673152 371623324423783421881636867801088 2147350297388463596668277592424448 -21496578405419308520053459518488576 7824247872437012573295648635355136 5197640616693653593066219923046400 -776615119446600920470622031778414592 3199018921945574421817042864701440 6358435456002441620971604662026240 -838771093321679524430103805979262976 6150700988916205009804350090903552 3199720094554316624732912957259776 -70761159829011745558009034185900032 5408742081985393298763276921864192 6135106374043598256409365329215488 -54525594054749276336562088334852096 3873301769047796711920241192468480 1805147124545133616922447923118080 -344281795096781471797740756279492608 1898908087482658357702088504377344 5494171067111927290735680949321728 -18254035565427925368936635402551296 8315618145009603447912118651715584 5955209453825578256381302013952000 -377653891026470293205132300760645632 5189384197800805514526768930750464 3065109054610085178163996389277696 -328217079912634847945533641820471296 3936469656554654921321187085647872 7157721791677928710835119260172288 -572271683323931692224392885843263488 5632278067528740179144253710008320 8855439438209199268847219122372608 -24956737101841614350406954428399616 3213544034803210574295769852936192 2238201757200394227005787905982464 -969391901451972016114123651955032064 9622280630186204182203548179628032 6937399290290665580850474127458304 -212817907768738026603112682208886784 4623653150685176956120151808278528 4964128690617082862403447953555456 -733405773760139566398862979648978944 9161783678913863032244696743149568 4956832966773294165654234384564224 -693099543810551800177941639600275456 5738880950532185755735341230194688 5042588791557751585856838172672000 -471356370933175507339125353011478528 873301785288280237614129620189184 198196437201304087704582827802624 -824266870292452337632439659508269056 4876234729178916727647456827801600 9327624460464570731083239595704320 -150362668522733412973664541943529472 4611689400736586605618065792040960 1372665987075733857562788863410176 -649152912624641617644613895479885824 8505009832379639675821182565744640 9805640794016213164550613308014592 -443869432436245573608601183661850624 1084365942396105036008008345190400 9761801676108528403084517000085504 -853058360984329980917043869979246592 9381092441063282636580050303975424 2105559065115361379133913980469248 -119466639062501838466329315949674496 7671147308294402879962807242063872 6251031687239041888512612434444288 -168082562207714163082142634697818112 3906842366555219217056937279488000 9824988526268693922542888931033088 -11032015723837659356798334720278528 7896645424683767957376279341170688 1856996320483903245648118960619520 -792047309996912198634503040244121600 8432964129034463439101070772535296 1783628182670620651729111908089856 -573609927753157385009506724645699584 9222018380337217158653739339350016 7728027477822933095346661845106688 -579283394883317447585097793715306496 2126345873639888493153086198513664 9918245131769958777534022537969664 -227235707402911028747751418964738048 7626062797731481530072128511016960 7794139579323213553722337433485312 -853886323115114810883528853662203904 8665132734655836066764000742866944 5951052404376115214667438473871360 -962836955104728778453710210420703232 3731677180723952707110136820269056 616920925459927705953003588550656 -218284437006670097280012781373882368 3515826702389827597382767047868416 3320996746021705170022606772895744 -357976117738796826141241268756283392 6066336403212818437389510787465216 5607495283769368962354459837464576 -622081445094182582114408971727011840 5855759420134369632164740635557888 9562467549402992807057820368240640 -111923502132954224929193485053984768 4262046292470731074186074463928320 8262673406273959599205201681055744 -778263884580063572505474248201994240 9416882160278264925537542233653248 2380620434089240402352677396152320 -964156239748450854907690039979802624 7780481868083754451592029967220736 2041742243172550421564183921295360 -871913704957096018593351336682586112 4324621683749280477492852725645312 7564370473402523855751895555506176 -281493582440076035542843968616136704 3860751999294846146774933694316544 1853439892347647375953533148856320 -516619915620233326990439375613984768 7674915936000908539442677906669568 9462741618621021344248545964720128 -471445334921915872626827030431793152 3739346780057256408992612341514240 2710486842609880069115045432262656 -579305460981713648558016892132917248 5760773701879368052422642424086528 6021821696016989593137867256758272 -337169949935837994513886454067757056 315862115134444602233055277481984 22400151352181954817489169809408 -850082801816264568823170371470491648 7600040330269956534470464147292160 3940759003982229298846889163096064 -119445929214040710981385944905547776 9678621737515470944246846493556736 4385302005041063902324289330741248 -542650665534661164436245712138665984 6912186928176671368706565699796992 3241573585947171738244045160316928 -632358346186267572838755817068953600 7084480809413580389312297519022080 9924927376545401581694351579283456 -84901415913092088991574976108691456 1605665613263631218059588176707584 4307539539895153501609550220886016 -401909506746494022338878773873606656 1068812567018272495528390158188544 6084391272488257207596428940017664 -976002793378374080780885568639729664 6803038695994298191066977955479552 9666032757611713663785416903360512 -895288128692248850987985437525540864 8805926945559359589979889367777280 6324705944333392020019716605083648 -680418284509883001683109765877596160 9714514591528222230478015430656000 7649681320016540974415226362396672 -571278985088287684858427694624276480 2102109425206500765332709469847552 3989776139209973717629133744242688 -914870526918622759075485365691219968 7840345741085958762081615263825920 4695348940828192138150148977983488 -155445087761331380774245469419208704 2564054233347626274792361691185152 8522748724140852813656099896950784 -767873439332163633082706782742118400 3385616691880413733613526654648320 7949164490196157477680438067593216 -871018018974752108952028730305282048 1013224684785643826989830288441344 6270321659654745445007880613789696 -140115741932443782281552707056566272 9756758061284630685750325992751104 2222711032386773110761614143913984 -311710878524532587219333602313502720 7641704612753689011363536479191040 3128274129884056959950901146025984 -414564074979522346333432523463327744 5971853905001626117270855923793920 8377606349859439518605068986220544 -873807693911417630084013171140460544 154280690448084381742479817310208 6478478040524422308301258851614720 -770954464946209486887812610392064000 9747679701670124290762544179576832 174053478801119953484223487148032 -983894946267334872106938001151492096 359951099956438568355210069016576 7788154629652848449161629821566976 -727961276425445172885819811570909184 6566074726086703602785841204690944 3302443852938829005903838136238080 -975686633582385235430008957509304320 9164237062395870455709962363469824 4947444053007388137072565935931392 -102196226475501654784836666147209216 4107969125403146236134873366528000 1689881214880684681223389449289728 -770212600177900812658784938779213824 7971179013566803659425027473801216 6819721420875664194361398904487936 -668283573776229403972540571676835840 3540106778822099345528732034007040 4340214751314514516294705520574464 -221525685087024579068737471756894208 2327812400418348424558735953756160 8330256482681229853908589065797632 -393885210609146080699144908950208512 1270900681083711885794641430183936 6397527648519528800536746879090688 -597407756468380036896067895206871040 5928154769561909781799683764518912 4048085330331057248503416062214144 -185784805597257088977053855139233792 3819040169711024097591203456876544 2657755348796585991945636146053120 -403472679051324373587139522459598848 5648759665243743521924716959891456 3382845020606567847694256666836992 -925035218794898724536056758031876096 8085664880568620414630190850768896 9661097538234603866674981217763328 -201974364125714840074245522732351488 7112762651312690042042346194862080 1180244943389796818281395698794496 -487732612359108218139240903282262016 3995464916820360964894374114623488 7113593516874430598199164950020096 -11938565681541890902910130175606784 543085369920932777363786170368000 6302854539939381964229662182735872 -506689819136073014750428155078508544 4602935493724103177084083514638336 9593275064008065526888608378650624 -229022286471923046868196355857186816 3225922281165180075594672605495296 245646456521565086073781800140800 -419821989562728825241151227390066688 229988830320403640359757857947648 3150370294099927336660161345355776 -346217450334672796368241626902953984 2179273284569320130385801889447936 3571938511073283378251654963920896 -25639324236184669254082249759916032 2963503292391573221593035451662336 661930362193712589381155875192832 -411559734543307817704956430146076672 3076655495912411679637481443033088 7962686570954867182455535655976960 -88673950577515485565415839951224832 5350075853435386265653886538743808 9464958732787024261314925765328896 -374770619156733586274062004102627328 3333962023807603827258286864859136 3378024008431115618280705900937216 -327417661658182541892749874417369088 4923856130699229973624092507504640 6446675363995179559715667661815808 -844498559221789462514483642759118848 4173371427254515122210916540612608 2703570526681030894157344507166720 -843059407220322779119869280194134016 6705858246424946829506301929717760 7483822060901534475167525802868736 -975102521227151389927645002063675392 5181108662698083509452383094571008 55477604738628643816171877957632 -36010896959338193295609637835374592 5429496956538248756774036400242688 5321366281341351920323420171010048 -549423041261982010972625166005174272 1216926364303564834142437450448896 8173152920430584617303265370963968 -617876286946352218725756960348569600 4358419594772978338465045391867904 735184021028929571936908341149696 -37144639354411215746785670242238464 2325670502876612685215190684270592 5281512242792282137080703452446720 -551197044322910165659974922995236864 6891139227880328484991640295964672 9147995616157152068567302630539264 -840511402913002232070710826765385728 1635717517320368034235314964791296 3057013269336816780438395858976768 -517224852684761085908151929738887168 4548906617732112459008442460274688 9086263599640793040040023142957056 -245898665441080953314895220137000960 6208325048786365243561496891359232 4353869688710227547893656369233920 -474316746328897924891199947598200832 8720303972911279830251776201719808 4959936683098673499022814848483328 -996273672857772133611498749583949824 1425174482139508981436529571266560 7432119053682477768884125526130688 -25160651336727692160999619433594880 7269468675034587530223491148152832 3812976328463892305101674822762496 -758297448435071560148317943562764288 2010848387336330667608619731648512 9124395276688894730908989978050560 -704274598483143160201689305530236928 8358660333043483652000262310068224 8088595974343723035413075644645376 -164617112227242173519803141112987648 6094144912829558621597455492317184 1331921088024615872579176266465280 -157171496224850102664477641636052992 611839939487681693166612590362624 9961119216455218651539601734238208 -58129454515255271123372198869336064 7382439466251173406931195579596800 6622227719009526278106196930985984 -343664030222443263578088948558200832 2164459048548400514274379266260992 8510269878936967753257769347579904 -225297043992655316477998797451952128 2112316265500101096065353591554048 3398841963381783403480903218888704 -57192335501146817037506695896498176 8624654878372872614726658013790208 4001679961839304459582140705669120 -383215581393950072304866503904198656 411739169667278243307180441731072 5304842358786132382972922080264192 -681131997369682040383024330522492928 83142553631859006384217060802560 4290178583915590421659075888545792 -353304646473029116549223066237927424 7149893718498505412500631907729408 8684808470138181229581995591335936 -421135225511762893514393881021513728 420201259503431334285841822384128 6298537605870745354480867939975168 -873673194090625922851911796648837120 208933878420217575481955693101056 9698053049365004401867027269025792 -977041875952540332131046493276602368 5346387004600554704797812131889152 9991735604922211464062744649531392 -206682416797280692233794733517832192 3399667474649959234638505362587648 6807172406383930269093225398534144 -981920578937831315359620795432173568 8278426814315473512115086842396672 4830104445657103193770733885980672 -594093931995692074484397329879138304 1066753265081723525232797224534016 5208507869085405996582273856569344 -669818645392949681049760184882167808 1403748115375589692837790933319680 9439978819188992480958897750802432 -721397385311975238092082624556171264 8589567111603140037900686229241856 7734599248657037157739890126880768 -834065680924591371928800695907516416 5948651170078963354597523393085440 554280611728694981872214178004992 -388102450264641140699872903863205888 3487109631490833184791946464329728 1587369046652749743747890956730368 -678490758507162083338542630467272704 5662627416279993194169599103336448 8682467499349339323164808179613696 -875362998908026410653687671563485184 9063497017797861882761301737865216 6866620892625437029637436349612032 -682265468787652170220353956484218880 1429389108793264054869379988324352 4906556747647461541248388831379456 -920266453258697803526065897512894464 1831454406228475891757933383385088 9746996783999852421538673110024192 -343742126705684106791513337356091392 6487815913422007152195137840349184 5765241641669281649294793517301760 -873889376401326996165755565718372352 3410347630359665963622117257773056 6485618469624146792169354182000640 -158217605270917914286311185380802560 7938087273337685152005416657354752 9389249102310950663570094381072384 -746654719789401180861730935124525056 4491662958925999289894792792637440 2466626035195869871743977511714816 -429682110823731858361741462300786688 2845666439466155165508173220020224 6904896279297003419063194442792960 -528933607559176950472353080938594304 7596937289375097526674047836880896 1635775740723275017417161659383808 -55150064743750005170725000402960384 4779911646466930640382853807865856 3205565080227176431122524699361280 -433613035235956185438736977676468224 6451146535090142996671583752290304 4031488426255101842208281575030784 -725331947561139365926123229700685824 8450079996712139905101180604252160 1301507806917371911837767639760896 -292040268809913576325189779796787200 4022652982803382555274619010416640 3204475252488211609347173872828416 -461186196081417679450508574278549504 6268894212997267278363435603066880 4141398025485273973088101754470400 -905680274162710578946265495701028864 2543349041093031333477839599042560 4418483690780373963811348499398656 -70086707754790130248941121608613888 8987173303496381957035130569621504 6446448546049816571749052696231936 -770450016190960131149944841706668032 280612828898441269118700932300800 9873501982543112363635758430420992 -22386961598487759605760704424968192 7143174429606528810327242851745792 4963151479726648896569505740750848 -3143770573851928533023391085494272 3513937037295421607557949781180416 345956016999583944202008366415872 -217282152834997780624187447679385600 5309033285615712684202606360264704 9009149310617206606241847226400768 -375769423902547834529598145602519040 3829580213971484347597889243971584 5246504896436226987874360984862720 -713465562644372959091005073586651136 4868437733356375709018858517954560 1125978332053337133225913519964160 -38782791704368041668470166261858304 9512546763539104603083676598665216 4862600205046921742049572582064128 -342040178638264134248959541300428800 2324413764592867831224200010399744 7152737821791435059242298331103232 -677516701999530837561467009658519552 3270301386956176058178984956919808 8684169888181629204127635187171328 -118399039602206424366861331394985984 5148289357919824905291319427989504 8807958445938043066329225949609984 -440024256663987454471545395106283520 8453014384756724168849783278010368 3250381381397592724169712482648064 -965248608307245487373280484339482624 6283258761304585600267962007158784 3161056804961331538488968838381568 -862625946919265826632949063800061952 4508299034763618748580355639345152 2024492349025118548585734828195840 -131786062103837883206348311952883712 3048667898082885267144233306816512 4120318781213505157225104166354944 -328385678665956866339068119361781760 1080525410805279707783422749442048 4484846670814537143793859837296640 -74833763280319683877132730374291456 7871035238450767456591337515646976 8930481945327690846684545663631360 -23021774559087243161179695322497024 1530844293519902031446106546634752 3460898658178406583014980210130944 -992204827014380263610946441875292160 3270029651511123891066604200394752 9807898946574040411663442003361792 -589479095169145045340011392437059584 1515107600818514113163220607827968 7302429936369374739514824681586688 -436085572134223801501623852392775680 3029094130773959442393822841012224 8695283083885858981495765995618304 -311121316313907865345396550534168576 4006695245522360074724434730024960 7373352849518075857587829364228096 -241617779497512293047613227395973120 8291800612441874251063349968109568 2736331939588822678925064093564928 -690182157828243183137209518494056448 3277279750140388161686881873952768 3454260322335495581621195779342336 -536479966127645460655708814161477632 9997867219244055235520455073857536 1145769719242924155206438754451456 -736041699868421672097054689717125120 651514983468512491325044933263360 8132977074141957002852342257680384 -437907005091332474609019575825596416 685964117682900229003545824722944 5585130965416401279611171682385920 -955095125758960130127021280132595712 1383370597870830269244443977580544 4531096485151457818277994288906240 -856609878272131358434777074034016256 9201767209312983159356889430491136 2967202030139675723478694369427456 -268971337496964600274116251454799872 2934572370208968256289183694323712 1514475790033410831648692681834496 -683464581061627494514495123823263744 7856217200100265723158600095891456 9205084181322151340014315967086592 -505238871082416654535688284979331072 1783104965382841446665101168869376 9873073449540592520568004375740416 -993385540472174331174342458311966720 5186269235596294341459367811874816 3392749327427680303575390654300160 -119727828906410019801963887503343616 3682589573751833489514416153034752 7041233041028531427532380154363904 -649234257737006976923069374900731904 8112112737267339238357817821757440 4599324771891597842884890317553664 -85467894982545984071954614127165440 7505576222083340342540498047598592 2453501723300759569491578784317440 -39525254702101250343977285436047360 2865002964228645593805817313755136 6457628796352482852429352195325952 -239583655305462746327614480153837568 9344517019383165655041102707687424 751319492609289235247870737645568 -154437317854169671784776934004621312 2105905091500630938578836451753984 5600843548378689166728685475069952 -600168062642566099228743722371907584 2632800223420585845011102956519424 9254955806761726971779354663583744 -485603614879595437488119081106145280 2936908502473366217140351329632256 290032425524358151167758210957312 -282049753593349298344441448042070016 2302187959626992693095734098001920 7716669160084287681182132623900672 -237542429495852418579051610445447168 9838495485092820232816440555601920 1237167612682000454830737770676224 -986384932269841036386386396095447040 5446853321194485497831908790239232 7529932446928753624780140493930496 -253930505774340114047292996671504384 7489340113271922745434790273482752 3332627336497403988078399575818240 -714175341079929348496923455983190016 1086322430305885232375960042471424 9724818834695419090007305255649280 -82707515507899973562471703075880960 2971225498371036832884022195519488 2579422813163788537889963913510912 -143750557127030204034478903822123008 1140881980949059986129621111275520 2010576128413129057304533822078976 -293287580505805719069444500904476672 8067154088095932785502734744813568 9491189887580103441789786693566464 -625832999093301672515022271671173120 4742339206993919545880659368083456 8923887942146088124145937221156864 -805800294103419140068168470523543552 1751240972284158657764170401841152 9713307871731788238286910757273600 -931079912898848180754554199109271552 5170130601780143517770152627142656 9077066952613812183659300696096768 -717666257764180544104236304509698048 6630383098465418962956076399460352 7059605122063587473514490635485184 -418822456386355809996044941310033920 1167986200215233032143370249568256 3407324802670708056098417485545472 -288714072745543990223336418949726208 8001872692496000254673938234212352 948814064904067312586457549373440 -944619427659719721924356900583899136 6570798203354869397276033479081984 8694874994827174065900025475497984 -864965203915654983798343589674614784 1377082809219042096817267638534144 300822362878617884203364282007552 -253278635067452880582677989838290944 825513906109202165478755626123264 7004506470832007612300896076038144 -928465451289658093929865608985313280 5215848547213825036698374109134848 7071792323566389212628003003039744 -749939116769318954632072758349004800 9863662971148678340733106995068928 3819250048242221693312770223636480 -805619510539704762286769780673216512 2229714762526572312309917120724992 2743629599132030044805434255081472 -450488535338560139523134952489091072 4684731276021303195985725299359744 4238719625751145495015119696953344 -166537633067990607859051922834063360 3185893490972492682718377731424256 6762269879149791760164204964741120 -764747181983260159206195327993380864 201386316625971528230033845911552 1028003691117196619152846634352640 -918375644382924029567096937118695424 7924992872175104876179428982390784 4155907502243401685729135749496832 -658473985659356196423320463111880704 7792933330801938583435332632444928 3050994571267613622265374073421824 -137203482998151898779936302414430208 4074788118146766912212808421605376 8465421852606853018567636015906816 -525877802977071175714758004846886912 4446716095978142090117766300303360 6579909054151729949535233221066752 -813687628951699986307478669154582528 1939435391228405005987785862021120 5441266431926822427250787570679808 -4220553106998817654635857576984576 2911552329382334570014261939011584 9911572269295903712016846720860160 -418164464294192853213374850931884032 5446618238421510185740981048967168 3308344128509457096334000277946368 -219355224055404517395121796838064128 323306101535880268382884574789632 2057610702664873586321327988408320 -612811026049641385190143711344852992 4119211364653359588406085009014784 6686261252015218491200724705214464 -227702236747412413803683576870338560 6695880528249497745841726207033344 8612656320859490417660224258179072 -796259300630400230303419214128480256 8885248536613959290440981915107328 2555787302313983115546290349408256 -502104821410690960014595245303922688 6019360617283685427277425333501952 9054815473735202670653075231866880 -474938540703063000880645545618571264 2257961970336136558285368468701184 218265084552341543626631463043072 -414078166586554609942758028314935296 890251494629979440518389705998336 3087132935706827652752470655893504 -530052444668900725884875519652003840 8470411884501750677368109784891392 5507152109978613593712560600776704 -385306219034499962436990449729142784 5410192732616599516902409805758464 9229619376160510143926341363302400 -36890699108987628931766904695029760 6478510355179115290314454023012352 5114371154714978981084407298785280 -548485353463724004516398428258828288 3751992786059451249655087552790528 6261491743971839916956570437550080 -870130044039683629646550292928397312 90212417342662042712968062304256 6235639154292760946175619218014208 -247002776071658134443453237696659456 7479585046895499158985630002708480 7939484373324205656561085950459904 -432842500690451971062747158580035584 7935813217560552899740363984470016 4600851948566551320982882292334592 -954521828308822591068528176315498496 7305229731576288129661335783866368 6621799605079168694586662130286592 -154225140042967863260947924580827136 2992672586960024384177634526887936 4003135420314836012434089524068352 -439607796110140817689011576046092288 3504575145250874140167639935221760 7568853849793198805334087484571648 -600522898345133097676944186363871232 8157908329270950384992055092838400 6520223022907264164437631982108672 -108699628011179144387115106378448896 2183176304010550383478548341981184 9904684444169289844321734759546880 -430358082469113336871548375581851648 6606773858732369102006287266217984 693364041595236431074208155435008 -152331257974392527610154312490024960 9699926315389661259904527659696128 9984331278423858519742862980022272 -310399156626643239325285987037216768 9006496244474420669613081297420288 9041900928256274981411377509302272 -598547678064211116831225190914457600 4988727369507366995986646055256064 6505254683341921728680828260581376 -621995932770965133894875566810595328 3093594648619347126776996575576064 8889965862885788339293290569400320 -34370303231290746190303389426909184 5139498950187634927655590832373760 5781354979203304688662559236030464 -660867866950259347296900372584464384 8963310580204343309436643453173760 7485231739157762036899506565414912 -883647496072038585214568297905782784 8379475247030612260119085846626304 6441881180147162510655244998803456 -36289297295924348374957933425852416 3845662788814799030242994668175360 3727872716966818289584831782191104 -426277845876196949463370750448631808 1424202169685535452141335368171520 2584342477720298869750823647182848 -501188135747925782445723481676972032 3919640029133916465851151310389248 3918213772227868761541553147609088 -78227066561578869743268983184818176 5043479335789425807061813221654528 1520450617559224849980863589384192 -714795105524139354759755290036404224 4314905868965218410660595259932672 9491390092114830475901171618807808 -961160762802916528251705455569534976 6780058378035182164009297360453632 8236457840034007465674069858320384 -915327693453678587777653443949232128 3614921771041834646471373410533376 7588314768470527730379165104340992 -325006610520166020761971080938127360 4471253119057520814603127712907264 8835246575075181054195340960333824 -533010970625810488033732539497578496 7690335372448709065740366154563584 8926148400324915714182614249111552 -194910132577297683554854103806902272 7086636972275110723315617358675968 3291500318652033654805751358554112 -231289791191994126382942672782360576 4894896160503709505637655810932736 1971996423073810598998530827747328 -57939989492266178742869688982700032 278889979256052813951971889250304 6364929894932790555102798206205952 -645953733225837771477171025293082624 1945597757479517770186442040934400 1283682073573937046977224013512704 -325181223468081259433483389265510400 6820560024734457795918747515486208 451426512588368878156818247843840 -739229539898359676621324032097124352 3559689282233795363386050540994560 6098778136026182645326392323997696 -207818406423940646941273516427706368 4886386219662728248141556192641024 4155191585330680084794644413546496 -775731903661662099281628112789438464 9907111585766443333507530312646656 818750038959002185287662118633472 -117922014324907955615280598806953984 8522710771206534606366892477120512 7346677135626720940964923922448384 -340646506498565814223251447216078848 2775478748177360468584670003462144 1234464310082688685649398901768192 -354866330641850533936604908139577344 3835998117700847291801953542078464 3765541980579869583573632235339776 -919181024536502419893708539029356544 4820534825697578332130921142026240 5467861243367905853823891558891520 -566998158645141212559499266873098240 2553953811359839526160407130537984 9444407258737217461791718671122432 -158485011735945723671244551556694016 1344159109374112116598268401549312 9596579387074067913111519155453952 -180461710371509013584657937248288768 5389048439963283053925554924290048 252646857055153384113655808786432 -465136954540492791182000827274362880 2325727027019778377266455625334784 1338237058917290576727015237353472 -646403029692664794743060219413135360 4157175728950783498934209698856960 9747329093118767987084418376269824 -143579961563843917503362215276707840 8394959128551112946651699485868032 9419789096767888716334476359106560 -18670607915163916099933135509127168 8954748926116933835977181808820224 2397053599013446819700199586267136 -293034114739079122577821591014473728 2590055110159641318901390770176000 2968893096314546709509056346718208 -742412765694148001016691380644216832 9234657656609519789059419695742976 557993705388728765510648575557632 -121416788907738501212249965497155584 2495542151714265423082204134637568 536903833808737961027860009320448 -505465134042704017185916247468933120 9223209344210102235071914608427008 6144226676211101480022340532174848 -20283431737562320115446144720437248 7762114871170057306223279649849344 740813202852494492137810754011136 -412730061409122546138657542589382656 6550936359838961012888970746396672 8732582404768463489251750027722752 -915871290749003616053657709303562240 7392222639694397680341570795077632 320885121696500546944880949067776 -578589482485083013450571417886130176 9501863164659960948893488624173056 3119899762820204400487025059299328 -224238107746649196359994807832018944 4556366338534218565169351214759936 5783335510835338666095834002620416 -786643863691121950817495674941079552 1358402114388617861760958479728640 5938154916531195353665966341881856 -909541142381167026901823492498391040 6816774934993770048848102485393408 7378905724871308690250439782825984 -107978633957485093873777331058769920 3519948169094606652778549526659072 5345538524194127277902276417552384 -499297197746085714912937304718835712 5653505336470265890095347965886464 7866259065548506708419394024767488 -740916007606134248806985600780468224 5893331027567882796163679742066688 9706881795371145823494148626317312 -99652484309941169355695998252351488 9214600196829796838696230089392128 4201657938859434479625013643182080 -197555777117554044381345722253967360 8135689275557847049774941570334720 3066704553861404472734667025416192 -252182471640640221701668433865736192 1469980292692007480588645326389248 9207429594534359691397228694339584 -668980187024431632421137964672745472 3248569083543672960618289009000448 365219590921453871816488198864896 -501282070058540753687167368142258176 282970237146173853356191364677632 8610598879448275136427468685049856 -192852440045869199059835539270139904 5834368522551908992733079308075008 803650175147229910802239041044480 -346677041687774112937304749856784384 3703367339216441115976693775859712 1309780182836716050830492275048448 -410264709859034025479389875716227072 7299745356931280905130438106808320 7168164649585794021938758701547520 -374630352803063543946060527917072384 9279774873271593946258662114721792 6913747107146489025733274135166976 -534389650684597757017714177580466176 5240907607142778919381090598649856 1079905618026790281958994881806336 -900520179853969762908488999066664960 1999987916877466083783736664522752 5383624413313899196196528395911168 -678419640035430824284548925646438400 3322869904587959820737772766887936 3533785568803286175776500738949120 -832918020376473224721147605272231936 4261643066511776938269603656630272 7061164476702930675649681324769280 -346472592863896918943378667288395776 8278256937981239859347144749088768 9844989819617182559764900504141824 -37838176649804145072089766981271552 4755580782472279020511938853470208 5359794305528876812928792133632000 -73571567304071161607113724309536768 8311217732697485722039304354529280 7534058402155069875365098035347456 -258807571102434995560098084887199744 291237278690629487802239097503744 3686352475638992404419310233059328 -365987316774171242774128711453114368 2715374459631491966664607916883968 6936217179136189328986802237734912 -424321532780375590679308211763281920 9158256243535114626192856726896640 1742491785576277603492158964236288 -173536162879976764574431917404848128 5816935169889992097050062988771328 137192418568711580093508728389632 -321209635854764564654084194530492416 4719086103581039171030596123099136 2658018758053791495531057960189952 -101836511241956801990413424995074048 268884801816616719276243419136000 2025775231048542409693180813377536 -266133869676374478091857763873325056 5816111726354926282302210984378368 7920285215243133325318394652655616 -841909995229243577166536804608770048 2621126551395242396916122573078528 5813239004882685926942031084519424 -552517474975213604380172697401819136 715665876754412252568242970689536 7125566207081154751319232502300672 -791320121257482531966535318621913088 2882488964978276050276620961841152 8786414020492304948108640840056832 -762944196302724405347137437531373568 3854404504345423316198631082557440 1847970050142229870245060267737088 -101109141851125237657788221925359616 4351791646746198581336291474931712 9466049200619778310651081689923584 -499260007375768670473084719949938688 6453396402901678961018986521690112 5431791540746524737974227659915264 -829716932038434867223526922126360576 706783478750010795665199483322368 124292936716550960019711874564096 -837632421555232657536619158538551296 195117906647240351687851590549504 85094207673810158273704465793024 -757800135492541583035052759512514560 440482680501662962577015071309824 5754080831399904253943936979042304 -575850969137378301762260237157400576 2989451250943666286455035388755968 7153830150149521644719787009376256 -286099981633988342856084822754852864 6403762138228374244172863947931648 4385090869293377798575807891767296 -487853318242778368874068387125264384 355871514444422938930697306374144 4956900566372761145964546521825280 -227635947051455324300007663621636096 7978532279278154731033749622882304 1347668039560857270375466911399936 -550372053553999933921683529265053696 241005516550767789742857742450688 3872929540615027388483184982228992 -707712068926484545481618621967892480 1453301193612562419357316416536576 6873316731946768319425787931394048 -498775963601655336007809110617620480 3406342771726295578365292988858368 2838605621867685217277683062276096 -74792066941602907867324913255710720 7920766757097711402380614531284992 1644236313932171410582509549780992 -272982604244012947091412035322249216 1507820883249703451519404589711360 9524408975147879256660745088139264 -664271893125974156875987830177792000 5595921677950554053120436549451776 8930608769188196981561931178442752 -585656444328742849514745679790997504 9480774966316209995589845648408576 9184886976962347984327291191689216 -552074023396544471911133028838014976 6227168093518359765181414735085568 8050995369496091361765116287647744 -195875418679957279884341066598449152 659764365674316615199517227089920 3980426404914758099353392759439360 -950751447180405497983922662348423168 2445032633562506138027256887377920 2378987147669823270617426799099904 -742875467195217191246656169886875648 5375266961088921159639184447635456 3643655781354993298385737586049024 -467200844372987954579460520914452480 5726754029403962516922839611736064 610160725553204048586535136657408 -286581534959747151357284784506142720 6917638582908674568802474320199680 850213601465352898578334334582784 -935602066929104296278224246732226560 6724947113197167029911793793236992 9979308520511132553757226193387520 -836984968480920333929127243231002624 5675031661982311510232709302583296 1760002106325195118698453759164416 -428027410621086852302241685833777152 6352169781478311690307264153911296 885381820933077824434941387079680 -141470813311223538901709925828788224 3195225516778476781127768066752512 4021018422301212980550189088505856 -58533707408517187064139192897372160 5499892058023432477745717572534272 7922637216994306115554247746519040 -1089312711250620572605847533780992 9399456066929216271896209096966144 2388279829843098375531211203280896 -974208947380700392469732746615324672 2369915482448479140796585392209920 6890916794050515508570714493943808 -749524053415908217412552518656851968 4995001671071666296034748885106688 1401184175069135071925367734272000 -974795907956953349872627176137818112 411811885672419838275393110933504 4930460914589637290697375638093824 -503120171859057930132827383233773568 560087685908791529388587289149440 9015717572265030375632211869171712 -582645192586395644618002709425946624 4016392129937431482292529019224064 7119867330297309247223912468578304 -689385635180134113749959029964144640 2491978131128501090004740444520448 3713926128160994425864059040563200 -829620799726756554761680283376812032 7867585630826221764201138956009472 9626673129277813797808201130835968 -921693576261105739538259127398563840 6257709529428469247460414819663872 7215632487906098691115111543734272 -364905580479195205562904290437103616 7174077684610398220275591856259072 304553716133737262909323376328704 -745500616123700723702899332056350720 3505619145224154154389811121618944 1343737184829232500490430194909184 -584166112798265858887750046202200064 8084880317100132370541224768045056 849500281868718354644797996662784 -451547682756310875437003305994158080 8106861498934451310417609815490560 9539323696447489959411720212447232 -624409000809030754711541368689262592 5709313663026093487166985103998976 8984613537045289455407149078282240 -533742551242938576914327776100614144 408011245767744320479792925245440 8495816143433087811459520170819584 -979320082867010155238390778415808512 7283523215639746185281283897163776 4180934556079012226631711854690304 -999725814114913509374060678652887040 6276684178237592804417683375259648 6122443189135146774743923189350400 -456122645532490847235423183927508992 1358778128284701908792551013351424 71324760619914471710965513584640 -990312844834885280766739317946056704 1980551138619350900840840453685248 7060482553785966695060862977179648 -689358102666301598717462911312199680 1852065600389769143017444422451200 1633347236055432023356313725566976 -730277414095628981456306672421044224 1784907111860309361564702029643776 1636210550650996941268962009677824 -264370715105829031298416291830824960 4754093852142992644822893192019968 4156207069926435075337215182635008 -747371824814300985554948354702573568 6595802326441373311209378959851520 3874743158649869192325732920983552 -861444090212897557774051443652689920 708604772117470095031434423042048 9405900611696919333590611083132928 -618799241060508763401256445325344768 1175092472605394116874449402724352 8977062412413555277780404605550592 -908416848981229076427763004649504768 6560751146326870186383306506895360 3847054734006503626309356417449984 -385958107376500282022663699992412160 2058378429520983364256039690043392 9844790373396082001062727337902080 -142729220549341244596646295512285184 317576646298012139298775160061952 2950698120246476253326376513306624 -618338068790625855605227268417257472 9996957317862200008205341579804672 6307737977000806306823104391806976 -500499635479784602161312340708950016 4401429897985766319378799217606656 6476216380384512808125625536610304 -446032034439666506746471466724753408 1094943333229623288589130366189568 1681160301005824972267596567019520 -537735212302332161446065387165712384 9127514021304309350886968894947328 4798985219433519334647484467118080 -469002632519606742081460201645408256 6291069043111666617213032677244928 4135798654644864094597903556804608 -503503374156435243988182278816661504 6513027610866919538057468199305216 6544930388939418464750861719437312 -118052083018023330662478835525615616 8178359064736123920221741739147264 3115535099018989878135414675472384 -329155343090125465504508965006868480 8523842573782812331099947251269632 2571514861363316444446349617790976 -172678900537288711620118767581790208 7457032901174561760553538787737600 5506107095333351343900241969545216 -332632796154520397484209385890643968 5716636723257417550394547540852736 1971621189014232331800331436425216 -610880131807079415591325473901117440 5416084744963813899609070494547968 6862994857068624112960030315118592 -48801516949860341300398114891366400 7063119679768519065046739157254144 376905994773070921507694819934208 -469798048569371584261612628407746560 9107768618489388344270416376758272 7175995711525761464380996127293440 -525102398095419769567411513333907456 5240342069671396295135576383815680 1066961505713412439844171494195200 -759439562207014731185961477926289408 447376179244629838910172591816704 7762282180868320639346025600909312 -96176244264441011434747465180381184 2527320812148957977776827599421440 6396992178389657554643624868708352 -803866931797499037163289843674906624 4968453353669546966775709321658368 8500542934889410748792029654810624 -174274206094999798808509434986233856 1764139889216614273740743991361536 5383186969285149483468216382521344 -886855039032885119720717224828207104 2802439695362696365141496554323968 1084557093109473650926348362842112 -602781061116075021193029099850825728 4408267294710143489851066865942528 2127080119216952747564748586876928 -607576167922338267070403968436797440 2619635953822479986632828007743488 8091881207379341557301131264131072 -810430080375436512706699516174139392 3601862208124161945759175799734272 4012282041145477343256417652441088 -856492640614029451775657344338231296 298844560596361554444900661985280 2077731190639416424973717091647488 -612407524581806935723427591180255232 1652415169138196299483368510193664 7171983638073491512140613279547392 -408484015248676774810592671615156224 9914708102225439006480732036005888 9371844770034246259856059960131584 -423827802314374816361036454836568064 7312955442085420123257783256612864 9018836774341749341623351469146112 -249601752266383250280595407891333120 9819572122748935697898063364358144 9902343003709495026391038742757376 -468148319458732900536605529476169728 7426935051132299430211711878037504 7923077279862019451519122699976704 -715966613668761839062719718701924352 7533627683199598732813921056456704 5388135466937774073901129930899456 -726794815738232236584616073598337024 5197366446646323030047988874477568 945012170835316653118128316743680 -917517068875354323477129144343461888 7568709202276034891195527032995840 6418099300997575460922009363415040 -766976152198177220889952240388800512 1228173924114814753257960247394304 5331073548915939779155380546830336 -853038129754577290799531685687853056 3597028973786733692296332239175680 5163185557161169285496516848386048 -583988244016271236654443815636041728 9405781277328147138735764750204928 8310587019467474284716485299404800 -749479348599891029417468731062222848 8495973972528804540271067083571200 3210907060773026780847343459631104 -216707811207205584508690428824911872 8207548599093048130149537764343808 4404390739779592755451187647479808 -109574752591181261497889592342216704 7107591904066937126058467189063680 2426924413141132488359417273647104 -794436484433152938076212869864620032 9294559170932281678151575251451904 5411016016490271550118817525923840 -672695492999961556442712270237073408 9206005601807758102171450454573056 4130346553212995624240172641550336 -115400202696853931321324270287585280 3173428290913290218677872894148608 6703645209417345205996377042059264 -940777600807249723341438622252400640 3344815072239793093213450877796352 406451866553110969582026554867712 -265050644170321674119259379548028928 9750216488221529003205015229169664 9897898888068419173472515167092736 -275621997197859495019024444454600704 6508902504546367458781039857500160 5894885336475008031228947089850368 -311992242247906973398605053837705216 6330353041853963634512377839353856 2134685408563658624944474637205504 -280405999876938416368947409218174976 6650241389905275266300705301856256 2073196291343825075352058959233024 -958624281436130364822355644753379328 2304662830956722941962841185320960 6860825171782875249718158669381632 -857136099458741153642448251045019648 984440835565243018222871422959616 702496341850676281118427176763392 -958590010597416714508945860786651136 8416137760546478410889155338829824 9308637165764695250448799171084288 -134602565049037162268215659112431616 1347523946201959392669182392795136 2446056736041191767985319823015936 -554863894164653711016932557033832448 9142312179026479482096358109741056 9176207153682308791313075519094784 -9349768132254587813949534533320704 8671144024512217430036738056650752 6988860759835671923408658862440448 -298553862020935018195837727354650624 711864447855992152913385449586688 7076681586196534996281752482217984 -297968127043870405682331457645707264 7375307737917488594619401538371584 9881612330936087073424354536587264 -283130299559363199801882343523745792 3106864034812810248862050264547328 2077958016293805194395078858113024 -817862318028853735029575283594231808 131675083070396818403323270922240 2191644048992592922925862775422976 -908342312429261080394709576129183744 8824320881311309146702950682329088 7086679066780474399096003624960000 -431324091322057083251172265238200320 4277128998899124282710455085957120 8805340222696778344893909905178624 -135105891416028717065684500296499200 6807762917762239243839956620148736 5518924924130636429291649648033792 -169203785335117786472166462914035712 1353470823269952923044614900809728 7861631248848444172045554422906880 -382813179464181136111622993355997184 7498254683135886905436285073096704 8279683417513114877452396988989440 -481810738569533681096596937110454272 1663876894899232135447031987568640 1189427071791038884735742566727680 -880276413465182080552478611391643648 2862293493766732135218013641113600 7260428378865211385379328918290432 -366945847221772734221388353634304000 4370907705662610200215924613578752 2452985335492248135860822040641536 -419204635366394498214617123873882112 1974209096264655984387442543165440 6047133986198993831810203754954752 -893881024833040971779599590414614528 351421352212999181342438882017280 4353842178847447182757437848420352 -349189648772788399478788475062321152 1670509931703983856808053585215488 8851208423247133851148014065811456 -264259161774667580384911929448071168 9768882300609457345522807181672448 312857276868364339691999635439616 -772383684744209179006949882748469248 2582046432140174229777158040977408 9004134975589288705971908480335872 -854262127977760469808536034723495936 7479002129414910731444171558617088 8936286758380755582220006970097664 -609151837254518027315984037580898304 4826367713533127680295086835367936 1748276185365622851874672909221888 -98664668830478312123253943263297536 1890675059852636852284629620621312 9253841328939249028915038036951040 -283893646461876610090589904319807488 6403173471957348548500981091926016 890209684110674535632542166417408 -231682642455960925528442527715164160 3100474861377773284217741356564480 8125071486426293118247423449235456 -25398027939549432871181870251900928 7771782572486108569533603865690112 7014144749556950364899293005873152 -500481529720766726320241113953206272 8578906696779045476564072977661952 5258370454517476588008514152038400 -335651449936806188924190821544099840 158491014265199445038473152561152 9859131175781057971074775526670336 -333322572472117730741842042349944832 3316375625319005244598775810359296 186737239687096124633203873939456 -847518214241353271411583794618040320 623804441645074884846082745958400 5328420826671233427849523853524992 -984210884316744397433124130345975808 563503296485166595366897424793600 4745614049160994682128597493219328 -78964831289608045793736748280315904 3079333083157431531451706605830144 9452154945235493508274115225583616 -125044450189296876805253527551082496 5998605420355630841289442609594368 9107481747295900989069311984271360 -332828850446399250842553908142800896 3832498809307578531352441620791296 5433604649117064856986981993807872 -646167664469876761866176019566690304 33443259047471414061929462759424 3991363714479345249719552342753280 -961397814448228404988207992139677696 9148611037029743218880526925430784 59705432889613977353647109963776 -823833229926530006977322604335988736 1707256336430667947578683817984000 9565876281349518362925844387594240 -403308386134687793504271985499176960 4957752327234817845777870140473344 3298432292203268844643069749886976 -328755789541635345913986105271648256 8353748204076873686929749229699072 4107432272127922299990178615263232 -441028203637859942980705605921013760 9135733925663597933815991290036224 4304445084598908482435363215769600 -726767333674667640316417752881430528 7933642988877976211126426338852864 8793077076936200410580050482561024 -684858442132750375708630440176779264 1448572070355747347518622003101696 7242893297521966400386646946086912 -725421461623848678157282094901886976 7408158723361478694747543059824640 9644858873548654449214663386202112 -75767567874734703854527662862106624 5876792511212840641739991447240704 7315631469657430721248231348502528 -118092065334140576375064614741737472 961134471598562289277066488578048 9144419348834121418562782388813824 -214457495959236590429607849078292480 2382049381955924280361694598791168 3074789126988068900685976206049280 -451330094965151091482423627058511872 1148867935427194325673338705281024 6931272872205190792800595049709568 -968007075777713044979337999616573440 4614516802503240033707277603045376 2514713663242253266521551999598592 -836067091574384597260261894828064768 4892556727865003889688339424477184 593521851296549307355762484314112 -276594226811934256540064220272656384 3412288149033296345889676659261440 4702502312014377611472559736356864 -217084215374343311021080916292272128 1228129279839745989831335174209536 4803324262973204869535096996102144 -774302194365183370407417832009629696 1979835700690812662113315032399872 2402779390060251559968305343102976 -683095652539824308561430331407728640 2958191121224679297178109583818752 3882350752169362464115783949615104 -513961597541237101934320267829444608 470861909305330851940081495703552 5045596158070658424253485655523328 -126804404286173704019649403386068992 7260799044572554701931502649737216 7742483554284542748697861499650048 -987604285593855294637263015204880384 3965302497380731179111518157406208 500859765262736185077490878775296 -752185861960792778065304669623681024 1479300079469752196447230517837824 8337727854620782300954626181038080 -171361082399127821226046174198235136 2110066248788611290628973381287936 9906446646757613420221884767666176 -275679933761931598299455648914472960 6301011766433226485607461032034304 7942185437767573255013199324905472 -926360931841357111853992258981330944 8026035184574022030634234387890176 7361148036223004577257457748803584 -434062277112503884401467208612446208 3448134499849844228377758712987648 1287979770160448323354956708970496 -706383883066784755214153864286568448 8964113197508353677846135865081856 7332253183478293030163775920013312 -279640564924051587125047721967222784 8622622208317422726110123399315456 4456522580853494316502154571939840 -637924316940492345337429677544833024 5098722835641118168246193229922304 2563298954331731111386555386691584 -81646264089602503364432033226948608 94937564794651421709960275296256 2533351844495150125097374879580160 -332831828098420846623622481756291072 3566317853488100989574097206771712 3628549071197689605735172011982848 -204361598797441753919480152373329920 4163970002683961235066509053657088 3683632887533156984716846314815488 -745811223623499385498618166582968320 2109405896602478591122053319884800 6169080820457966125451852170395648 -100647077219586715364005151078612992 278879900001271462121575295221760 9887194478376271635853461201879040 -127587136062104660420783593924591616 3668805618833639547942919278166016 651209039110903621484281201688576 -649429834485245115134013324767789056 6650268469934453719676613877039104 2310954698215124491768867336486912 -468282380536249680084652576452116480 6970939672881286553646262938238976 9632758232694428384068077870907392 -31845008037367266403940777173450752 240640309542977282553311995625472 1416444618849279045737494211461120 -695178123311704063536212772810391552 6142647801707774807634993953636352 6853171248542421266999881196634112 -404427558776756174012788403930660864 5534057315909699990044345423101952 8623761147330116652035290267910144 -747355940066798111262003048080211968 387285075329726148922995871055872 8614195262235112691490586827423744 -62907880363012199490177010682036224 8773735748985997134727745667858432 9822723693131555627389545198125056 -108453093175573994682456147836796928 5836510662638149275131134894669824 2252044248739458143841469931192320 -39322260733882599211858840537530368 1941905683444462093148657356374016 1568964994861077707002109174480896 -770587622179967789845348009459580928 1688696079628935781313993796222976 6136734180240583022156227425599488 -587055949241500812666511802142556160 2552965251788483135772336624500736 5243202367878712617074990795194368 -404432525263555490947414035861078016 8508319482111503199868954609713152 4111845296598262350233378565914624 -356020905256108665957193806635859968 5984457940823122271516039311261696 6427765900101921816421717191426048 -351806889442549129353037915464138752 9692255662995232083045458657673216 615364154322819118713243883798528 -294103247570572150863110058314563584 1913788139355993996838988003934208 2106815855602100113177023755583488 -378999957833665140437587989475885056 6858200783731421412597029029281792 3957380020849696012991354321764352 -681463126091453643269420933892276224 3951412903993229723503101015490560 3448217608171743094248334723907584 -815425515875112871882180758494773248 6936445427773286400098953831907328 8799689034203954219718368389234688 -111581291668994948427777267971653632 6777262365239172220773364056195072 4056708893535314020484306190729216 -489192271317314224300656603504312320 7266125249276177177242278855442432 9070997801567084341228680054308864 -257328541680721344300478081540292608 6000972015906625095676981300690944 4400516588771204688407716396269568 -878279385337996928603332719681732608 4778031018327618702443252568555520 2063614324897659488530235129856000 -74393745732060410025319201448656896 3502058184072392702678301795155968 7408649699720435508201273746784256 -782933833514664082681968408639045632 3101518911949847409169715714588672 7684489396679156740177618421153792 -512339024156649643805449899636424704 3973856919782974844782147356590080 2807188040683588377975896582127616 -60428020245281023318798458928758784 6832556539090019692992442585317376 9041662971890179478764514768322560 -885748285977694868280828172657754112 184813169233796612829993469214720 6171449166023482026047816058535936 -955765141635102595852756281316081664 5676839928776000730451127610376192 1929675412601669189412699909390336 -364619659567021581795837856104579072 3043702748054567349657401873661952 1931219217077025701686846011998208 -955393610564119775484761018688602112 1239567239759761668182911892848640 5132060872238031788348308008730624 -296771528373378048432424991326208000 9250550907376284999230888658075648 1036214039699853473587162683277312 -953345356437408245949559636209172480 9004513038748018200437542115868672 2755977997725900457868750382694400 -94367485006331593664520154758774784 9710074671265385495425105732304896 9562584201968367269951141664784384 -264901145978472176546973597327949824 706594437211307433802954545561600 9728440458508978407964666782285824 -19046130455740139591837835258232832 9334244297220303627643684936220672 1375987172777618904252745739403264 -31031122165773126302397958457393152 2975914254009932530786515137069056 514369996833466130929271682629632 -337340890081523192238541036805160960 7756795115262679835189094249398272 1210664739310133330436136890269696 -374208086466360698988839131789918208 7099997486021168927426714840072192 7109254213923977738216282058129408 -339888984249349014472046055763476480 8010244839874373644729862091440128 5418729460343461726911609117343744 -310689820433837495188482783344328704 4729750254717867581975842032451584 1382686340100962012774353720049664 -896010621312109887965800867957833728 4301311170502527345679617537081344 4004601119154755322902229404352512 -878750792528536378766664527496871936 6900313438404448224637413694111744 6934964557848200803530731260215296 -22788532047026840531590019737976832 9476384802077502350023455393447936 5910452954201545939849584702390272 -921679127354144773782507173439340544 620712258237301762210462464737280 484657060952078641528256877035520 -492450557518967404167033111451795456 1793018381280719063742426524942336 4691074497365988634331503214460928 -673056701584594415516673976561565696 5408089317592158593093712587259904 6463687283306051072841168824827904 -478608058274683538962642643860848640 6885907051950124292976445923262464 9245041115176898295312038659883008 -94378962391158127362679826062245888 4028543232926422691047240456208384 2309633671467659676547427816439808 -644525414839648018400075635058802688 6998187359226419034586352638230528 6506655938713340071775606375710720 -578634015394916567145773345210892288 9311074735015336171799594628284416 4304688759075326677584712650719232 -967442161979803136488320192187727872 4961177209601764284089279061164032 7945690703763255956723116669927424 -996315675443817873020177054605246464 6894088948119686341346045603086336 2636232736626183121400707336372224 -849269281692421769167978361169903616 4222329077206252139086996844838912 8028721302162250426104235077664768 -862427230272848480969253706925080576 7169443634030888176740802601418752 5428957593486660868194419821510656 -773438370048745264743702335686967296 214915836277622791680124354822144 5170586263962424129351599681175552 -275614978235848974104091466225680384 87427460084276554793992922857472 4762980727907492941739713733066752 -655445127316496544003659775480954880 9221871952125416446218063669362688 5670545857094183023955593345892352 -326138460231113401105998830268055552 410205000799250278235868789473280 908025883200355679385868147097600 -808540960987130450393620180480557056 7147866032815039728012126771478528 6593984219884994312177655958470656 -431729478108802519615735328434814976 7970478637660831747765567479611392 7409464695795404693737920863928320 -395464718824788302967036197744934912 7975910017267631955428424701444096 7862808954364489955017851158921216 -735996718860222251591675868400844800 4133403595919337543661378942795776 147417648886888273202022237339648 -835864214312198498089037068767330304 2813929804467568183349176115920896 2330187856396779014337781735358464 -547654978629991565418928422978060288 2918259386955096994630840348573696 6820156854030910257890235093352448 -503941771072739407556376213785149440 8105465760570405344610836486815744 8696166424060068099782502426607616 -503188663086217607143254332585017344 4960948753756893191473223901904896 4191449786093939331207872615809024 -163027501121693588841346443572674560 3327684526274984632216273486348288 4817489971420683413912973723303936 -881069696534320792398289334096101376 3356028817635357843925481969156096 6605575423682229851345122339323904 -241863198844878632596564460141805568 362306578609577738989237381890048 1958808611708724268856594248237056 -18153292389479315259178474157375488 8766237424394345670886990614102016 8643014715723076214539055834071040 -357323843558860689660735831591092224 8969886999221380077932747992072192 2782730638262702919096410497351680 -998594623513816722466443273367977984 4228190282368790642934377242165248 3122033229768105716199373183909888 -445494514674432618457772943290138624 1414285490198292208878110608719872 7001824427349765486708501801598976 -766479720577272830885770057513697280 983515649534998041154116472799232 8794257742136876684275980110397440 -433604706334267214941729347017375744 5925557381708938660210245164335104 7311868851756330000777123691757568 -480305201026393604406877110564552704 4511171894374375886890807653826560 3885418566427268518721137873518592 -660945489724934985742969650626428928 4231984148049605347472652007112704 5681860525311066266291857533173760 -632688597581748508550399878276055040 8834688892516488953876447332663296 4354977003916798650905028911431680 -371213668573586622498807037938368512 1215010013676852069381790953897984 6767473702416279157249339398553600 -952800174855422527584288978847662080 5050148018303292741162116459790336 8399914328305926736627804848259072 -65570968022296494977888822619013120 2547208088637298269152464710139904 9637895263825657014929144047206400 -441642908509562153570985251992240128 6314478905692873158014280094711808 1282668351202356735714256714989568 -206510186802101581327465116392751104 8415869270220327877447717251710976 7250749580569978952925023819530240 -285145429465814452968452178638274560 3859870895672377827015404931776512 2627604798463616797224655109750784 -32392731897979226732185916706652160 4050505235586433019202976260030464 5588719229223167922033491357728768 -555056197138763226131791605678473216 50938396501571235896428773507072 7091552307971477353288370162237440 -357445630125739022829928213597126656 9637734283255588489721058886156288 482100947930610957368098920857600 -638099427827168952076486764434292736 4902362867394065311618552016404480 1735890478587836234471485825089536 -573907875209318195199188474787790848 9816761968957797878747706842677248 919968142248811351341401867550720 -121482696135639426085716241183408128 1287649745295643931766996712030208 2284309019380964014474715086192640 -985625897654419397728529462086074368 4388126870851863892239251931136000 998408758662221649716096066912256 -373275557761142228739567943459799040 8491146861560010598193256405663744 4083724659343261485020592482549760 -69001970347728087230697075082526720 6627785527979963536279745687715840 7708273385003408610621384908865536 -367683580354391313123293995393351680 4276443393320632704617894232719360 3089101272804588040389303365271552 -158858761828568027210423566833025024 8818548347576208024551582402084864 9418985360385904893466084479336448 -464453080621599464910306882590081024 4240547730127407132147771139686400 6651859453036533384805258713104384 -563766922358860372628028554892804096 3304732286150767088544641168965632 5116540087791926228127993449938944 -561744464178125933382080629055684608 1403959231204597702636287677169664 3411611403882239950267118289682432 -84415885687909628350987661052215296 5926280811240470969070763781390336 7842638668924261204965528837292032 -71958923362942980380681893901762560 8555091901270117727261026198487040 4166309341678118166662925625851904 -875579528256297808546922562018344960 3536810318377812688226436341825536 5184170461045758036455790835924992 -206650645762011990501749099740528640 8351877222306329299886726791036928 7113073963777716727506196892745728 -945367705185527508208105641832611840 831394423927952279802209485455360 6969892697961312459521262440415232 -533607725389568951447122746221264896 9698147435850352334690439099580416 1164467683571740421322023068762112 -914248494077573257564643332517265408 829212439701943219581162186866688 1148345092717609858020927223103488 -630644297504268749316029152827015168 7311626856620976443960252073771008 7240107623391508845042473552052224 -321740330034360125935347157646180352 5175467581087745728404677256544256 4189998829953796190671524228759552 -303479379342804909727886469266145280 5381624251307066246892171756044288 9888810277328084215734946993537024 -424397825525188132462438777075269632 3761566793186938264215676440805376 7131848882379681531327505858822144 -917267866470131793515900529786486784 7529893548391710420454417079730176 5180393296891216668266209166229504 -644737672851328876565867372331663360 3671793350315134350849577370779648 1569092289996739981479833044516864 -619253577009658713897904882612961280 2875259993432390508312258563538944 3009500690044480072149233859297280 -711696213532768178833279550673125376 9549928598747986617069119773605888 8096834584997961438836331481399296 -502120229079748792808122154735370240 2650171515013285712713736398045184 8565009836369648268076968941977600 -622001702978659274668630953397583872 9040835930180894867976045310509056 9852329650444037774355539790135296 -4147769843191568610773910371172352 1518979297305945113890104568446976 5088167479104563860735570263146496 -501706318634938574660207724982173696 7287900407111871924697145668534272 1497213030577801853915434867228672 -372460957114350508630343442703056896 9490617049354296618280303976251392 3729122377121965681646755727278080 -170435620506439633411204796668444672 4091234576764538821101173621129216 5835956266639913036323212345999360 -993843203565987836778232702306353152 4469044754808141613613090535899136 82622771804490981100832618971136 -918111712433611222003073350526566400 9076317446963646310643939470737408 526930576527122557435698042896384 -631423516734250817281098524498329600 1301250738998013528662244509876224 7477371569292858277346313691463680 -622110731810983976946087470009679872 6785662829944537648816264134524928 7339521274582848168005695273172992 -905663439238069986573941036753616896 333197912970396356553179087765504 3522241910501943321881137851138048 -156006674879773223338562908239953920 4634785827864250999579258594000896 434336516873964600585892705337344 -611520337882655417215153009250533376 8979534050834035917241430765993984 6670535920360387807320355253518336 -432315827265465124866966806843097088 7605838835717703460672436833353728 8786275339734791975816499057131520 -436402373100014111435084270841888768 3258616378459563074485866477912064 3612689685445402233545117168304128 -830246219822763552772260948068007936 3460451507868869657883223493967872 2076283643936182339719415478616064 -906828412864341157831974271122931712 6438819257474825876592504332091392 2834956000049923730239243096686592 -201670067247552247243360255382388736 2925315399761654902445106159157248 6831798045635339777386640543055872 -372173052582478328362099877089378304 6588955688606539055801574092701696 8514162659462022620787095789109248 -738000082769631130675761935158345728 5033655404888020950820679340523520 4319197036924785197922629642616832 -914829531860001591954942991506866176 1479922451093862525029835511693312 3853092720156628246195875983917056 -595668447504463261247043004033662976 9820961200452347268462425592037376 9755129828306456726078993234657280 -719549695120358338970709239795810304 7058935473511593397027084183797760 4950789813618702189474297835159552 -476451309599702422105724034882732032 6959833834791087342752374947053568 4685281092905866849548164558487552 -354240008829097185216332593838948352 9040798026397157246442365404577792 2676374793074416148556278652731392 -591485986804544245787694336074317824 8241212190503693659741334590717952 5500214393741765418494991758524416 -101933532850347340779088586154704896 6795214072089137253610745250185216 7327416097660704091236723110969344 -612646782668464374312340207916023808 2858259458139169347218107080376320 2770988365779760319305891293691904 -839886884838677479928637515303485440 6560563731926236141649539526295552 3833460752415885961819066650853376 -94390443771319525654937735249526784 7554656964239461555382734118977536 7162192377934510671039693244596224 -557331273349885371358222052902305792 810310457747381032124548976214016 8713374136162414201220848613851136 -774500589889165919755621167236382720 1707952910007060912450966684434432 4312403879217167045491885864910848 -958686617387792021905874373620793344 1625396792200310704934889927475200 3451101274670793736372036506222592 -169832867803196865059726473314697216 2916397214857206282058472343207936 9836128095891468981469083353481216 -233756303320833707258561156404477952 4698523454325556963223763450593280 2270704350726092457415283507724288 -683307418902890759319064126360125440 9277376443498300426505032155791360 1012892675070839459939245805797376 -115161070511059656539625174431956992 8434989872913685018786740748419072 4046497994553777541631668496891904 -846976286503571086189771565238845440 6422342154386184588212142409252864 8962583880978619074027418409762816 -356562996620051895762094450301468672 3198934493442755821498351602368512 7242067218281671874518462742134784 -54014730857060991635034012198633472 6660627844942224851037325747027968 8237904702149487107073955590045696 -153781752874863911552664938779508736 26322437351456225186198123970560 7865746639730968579568010996482048 -60314439904431663499492029804576768 8115159829700177606729050355662848 2639062631302935414041071715352576 -468110034605169876560446380228739072 4458048988453381090518091792646144 8037506920520581655615489838153728 -812753301113260072453828113267163136 5448939394598865010652612422270976 1828634079538006919531572865531904 -798134955484041974577557537128710144 3041844556418115951991997379641344 8279901203159995147770446533885952 -372733592298062236528857115512537088 7744076179942742429173349439504384 6211280858661826082611891955302400 -704395684684733772872248166266699776 9382796062536770732692028226797568 3103480838640503149612642137538560 -270080068491578901956213659448377344 9854328632012665812102112312557568 2817694427137344235044319512231936 -563666534500504835917622596761288704 8704052977000756447322781373169664 1891353243404452824277095267958784 -825947953630468733513130618182959104 1710898904695122265565820811739136 4182957975866765723883686791741440 -589067580402041066732678853253136384 348925863464188285769508227907584 716427185494391313623925433303040 -825714606527473860572742157663731712 5011793970389811606136433615568896 9256216763394804349495168559218688 -471731001272355638873868607676219392 7042642691657051943325491752075264 7681098403901979009186139679490048 -379767992880660485858470099098271744 7848177169895097466323714359427072 116428250702407534995696181575680 -984032813108223607236169894167838720 9695025837560496482797638333235200 7078626918819316148933806386053120 -129897690000947789594738316325945344 406927180633068776594826296557568 7209640971219649605047149555351552 -770167533449207743868849601697021952 8108159559596078112428083503955968 331417938928407944695250751062016 -559298760808407356421201175834001408 9768346262507468557840607717883904 1903414153682136025212445125509120 -721148734665661278292437661644750848 9904296717775529440458009974145024 673959172733503475953089382449152 -616476818988760051034233788721790976 6516459826272606249965356180307968 1596974169526261700940062619860992 -701004308892630644697046176506052608 3136292613933685381503156960100352 6974979068907240655238569285124096 -943808013991494922365236844144099328 9224134080488069944618948359094272 460810778171344218248243501334528 -56695001858560199611561233501650944 7862284507487927270253161850339328 4238806152667189840293003423383552 -401481730283846175300051363417817088 9553407507691389125104742764118016 3758273362944751131782663838367744 -429251860167838880314074034868322304 4835310046565815824238648861130752 8978261363232819919560784794877952 -337914507579027473351102221130924032 6814918408884529190084988922494976 4632869259268323696411489385578496 -720869097850116294228209845254750208 3898344159734792756126022841139200 6760444898620177755792984122589184 -527358044037675780740098767213035520 5296362491391487939500893234266112 3701681547504437964179826267914240 -689687264793615424397275155723714560 4302653252211700644937125446287360 9063808542127274500426458910949376 -433717927987643786839299774918688768 9171229632592060143996845395279872 2935450736772633399120733642162176 -861488099268834325818273934935588864 9402321854516202536870777557352448 6190204148741710359140075344756736 -814507533462834956367639422160601088 7563191409316415098945037532135424 6497409309983990670737623427842048 -256116546381201458346876704196132864 2814473438071478440480468893696000 6120955597189194172912900260233216 -657196730431623810988128097552826368 6820338117435207556986118453854208 7433864774317940298552388018503680 -226356246000685192227585377045577728 749036490469200338766543326281728 9906601709718611589339078773964800 -352410505367108614364094379111481344 2208440953447914347894694058393600 9161640832010016027965869267091456 -443051723021490076832667251052118016 1413454517178150021859709760307200 7818882945724005763074362559168512 -650554022379440886762397824685441024 8315513178918401235768514040561664 4707006224545223224366141659938816 -486271346103789418838977874174672896 7409602117732227082837822831329280 3380632596065053017492286139793408 -480804042285301661968796732222341120 7097878100156376979043428637605888 3912566691573559929089651959136256 -71015279955705545938736941681868800 307142347965259917297884145385472 1278258000826386041904449634435072 -793705189203037578260082108340895744 4218902490922951346026098653659136 1953158285935515532116007300628480 -328785008477991778593076855485497344 7238480928563467140613745695260672 2255293392418506882951627837276160 -267694977695831789356669436359081984 4064398913841362702744099722625024 4912385516883055944476823505600512 -269554591990637047332419373107249152 2676265284654483091849063948091392 3484510894381025216605761610711040 -208411288109078382777707368103804928 5057957481884727044730357165326336 9183526927353175840108162270101504 -441939082442701300835323620370677760 1373360592668391502510652276080640 6145078779367035113532495939764224 -856223396825286921063648647647854592 2465518948719951229969561462767616 9776691253078379321590740141735936 -509443551381670481405100315191017472 2387360559973711526615764432846848 8363502114590383231159641443401728 -197951128184965902788674169633505280 5182002785185298720978367053561856 7077869180625852296744386032566272 -905621170280128110920238375813251072 1152757384897825377209509843304448 252872307273214848421424426647552 -866747892880805015431893482748248064 7787097765819605143389301723103232 428297803090328225033287173668864 -881434942593867213800022573083262976 5722745482004237945569089662484480 5183865787718488747653179069431808 -951502417886030279182580382020141056 2743562341826442304034963120455680 6496643221027389862143480375017472 -185433139703339672392858062066548736 9963438263457907502819197648371712 3225976075958568372172705532739584 -549544182519047695381301459958104064 7455652105165029907840267808931840 4395193455711237118727756296749056 -560686045800806123710295301561516032 9178969216976529212800708135354368 5158574572416869357584638745247744 -734480449532732134261091836429860864 1212973963416398499592513901297664 2257974404362500243918224648830976 -228493129963796173120317070052950016 93438934177339830748117139980288 7100526455151800712530374640533504 -877629825198193781564469315538780160 1596141884034224696237164865781760 6887546097921417768593459320455168 -858392069458779689809484217862586368 6842071148481224283710345353101312 951764568032343522494907206860800 -392344375684750672079605184572948480 7190686288974379976750629914673152 9132919587255657190247597762150400 -411861997351503972163854915698950144 5116627245644521647459164422668288 5540864456555257194327154794430464 -695220219288394324415585927179534336 6002516432848067248337577157066752 3944050093266686143266198984327168 -240321844206597585610489433037996032 7004998627629169337312410880442368 1572226959354336028730455805132800 -254773816073760699519415767053369344 5035822482096245843038078737842176 9616146183712796177412188075458560 -678859745149383323372280606017716224 4982888666864534706052759176609792 7317865831798946941410457224740864 -237168664223188589878620168608808960 8956636162713887442028579654729728 60218104304068394317860227252224 -476966065966196330496117521445289984 2569997460038407705535809947959296 2682064189255714471879647344721920 -14701000086470617929803010907570176 5101538382114965104703717005852672 4753260505880803518997526701146112 -545047802049771871660499989191196672 1781600552242562429819693612138496 9425541438260895301732850059968512 -437171670091491696207501641505570816 1553407206135791654364942474149888 8363315684181616269927331886268416 -950311914685677932519389162412965888 15185908692221915097647435218944 4578030865819596965926026088546304 -877844434567200327144206247208681472 7504938521316870292109434311147520 6714151184507964008510575215640576 -737859832671070225048579057643421696 7017694102617022931652532131332096 8382466311170730792456403248218112 -785709470527308709558039482692796416 9399624837999331146096190911676416 5628836560413803424492529945411584 -831083517307594830493157385004122112 9747816376054758703743820472778752 7830251379502372216109731489513472 -824077009161629089679068427882332160 7070730262048559939709054079729664 1371202646059808770070616416976896 -898978846990813096901868938384637952 465440389379897940579761359159296 562604765307112088223777076281344 -206830839071388459219355807982288896 8658871895603737363829840727244800 3812578128318477177614014206705664 -567610839411839529754105367767285760 6523536689885508744074240733478912 555390530356177712865091830939648 -945499571631860488119908043606458368 4422554448149270268925587222429696 9566349507777688852212443712061440 -799094465088860801515295603863584768 3567818210992856287904974323580928 8381946352815702420577127485145088 -276794828472326288114421194949656576 662319110968483460247972195860480 5801382611133608085892027671117824 -796832286313193469450685093743951872 1660208847720165439821177264537600 7509200302022056784367138946154496 -502537374353645803706102303634227200 3834852220227607829691906870214656 5576479278279077579863792742825984 -295341765401428271027313216927563776 54818661721352902772826709164032 5172591680513449413012851460669440 -339392872675811514095884543073452032 2745568987966251355627269621022720 4394821279481461675342819187752960 -534532671098510894755729694519197696 7647530718656349386915026699288576 4218493709567482746356681630810112 -151433096723735524932288116544241664 7262822218763392091214632592605184 3916762813035312326708613173215232 -87272694831668313325833961017966592 2510917740589766756633737028435968 4402179056685441042156916530216960 -578937382956257325743548072577728512 5373514882249346709907630163230720 4823499830585328388197165194805248 -603027892073787290446424754549161984 8650643411750659651489515291279360 1381060659944904561548406370074624 -476136677959832173862240569138348032 1652750577528469493143156771782656 1210027397703806022161614581530624 -60534494988817735252173113687801856 1837436496119572022889131364319232 2050110677209280197336546796371968 -483676719616517580634399604104757248 2537428545652608001424089050775552 618607489299410063494983020707840 -494881771801356016358337669467471872 4669136288174702050962209513668608 5029182869118170257280028001697792 -333209295153394223001546479154233344 2225357603635143581120715672256512 4182997043222442592630629252202496 -191508058891066774454152898140962816 1094994239011841705199179678089216 1392160112203288553435023376646144 -501014157374729152538592440806801408 5745763402894764853078380660129792 8289833267045004999000464572809216 -531678319283016137070112299976491008 8888863510528323865368023032397824 3558921516988544363677525865398272 -186334400671806200980121996520062976 8078744214256750827433586977669120 3738335919069143255214401769177088 -916544316787386246110003660794626048 3495962711310112305820232033763328 6969500822287479652790107400830976 -970609098784908483702935399157465088 2679627253994036765957226114318336 6061213281293652791600448203128832 -54860688330978193763117790161534976 22633434960056223894765825949696 6300431305077795181935281959862272 -215098820283058987454973146680000512 8113925655296369270828933243207680 8831501630326584790804491021582336 -213350453681958173332185155037560832 1599380606164613456466634497589248 5357860630148365130990535944699904 -611892893506304105674711038905286656 9878901650804067652625104686284800 2944055414101867033974080591101952 -648144124759896933275273280318603264 56114229241995004949483749376 1618849129501103733850580193378304 -193547069674372760326791358727585792 6771544398424942852343188865155072 9987029805463162037350213003247616 -984104894016867170070912365162921984 4866997909532140223951831641882624 6285039667135448584669515386716160 -417612852014658820152580292369973248 7708420304409044997759264387760128 5158043362077883710334863759376384 -298658699412211837166908124856057856 6901979651944643978772309216329728 186986905498456347140270151696384 -378037248669985766778876985293668352 478536515981709497678816436289536 2485762493562149184189380339695616 -994859836658893778794400748169854976 5506590933651691610378792329019392 5027662007757558064127262234509312 -696624593927427393873172135355088896 7134991663008324439146437195857920 6911673914468339045268001281540096 -937637839048248384849121148154150912 6056064623600268689192769726447616 1938495011141903363378688468975616 -146354570958879195883224782226849792 9023324964681573908668533293711360 5782722070156133707050386297192448 -656253344651064000395386884995416064 8607112763394998842863033916588032 54045608199380581890170000769024 -666307971187511147666242852496605184 9130307286280077041443584996278272 4221162000446639491808163493052416 -750355279355859309966249904037691392 2970258088854149982937690943782912 4139933264539054454662483371098112 -37599849725167859413232293974638592 5620877239264980394565453645611008 7349929364763274938141194848305152 -778363208475516032278221261388120064 5748346631282141512165053943513088 6277290189181093781834903708499968 -940053277458756581047077442942926848 1837467410762647514997360687054848 4843865503558720107679786351984640 -461924333296957468194770117476745216 9237808870884408108963130551304192 447160378447748319075648887848960 -920591786932707201340421596992503808 8722077877235842704845353135374336 271600784039208390145674519248896 -13113263564738862555064965904990208 3307940165759752330667985274404864 1839145901720225602839131237384192 -675061382943572691305853968080437248 2773879220918222195595328878542848 4193704057939701383438316181913600 -868636868733134827816701054131634176 7789328585042310894781125441355776 617687979937931965821617520508928 -648467917697494255385319930958184448 359136285065742180543812467687424 1651083831352884701157157486198784 -669285913613248730258067335503937536 9592245971052569104209332790099968 9032220502822974096519722908516352 -478559636031119604480831698950422528 9202228832150089853573828888756224 322721992855649799087342649081856 -632135776728267020575274374480789504 3744754995527684753060751080423424 474248863313250672876739436216320 -594407029638909699126769435138850816 888339320911041656993212276932608 1575413361877037232972920680087552 -274735499663705614430384913813340160 3226041663080331933961225915858944 2588392717419490233450886019940352 -832840678848799057374634226736955392 4796587767547268615645137970659328 3697833825670001776582377015869440 -68268912024749135539565753932972032 4954580346640893164581913291128832 6823914435357033470641946474053632 -948572001972321235182981884678242304 6547502247122996565393362995118080 7006362996941247318142505032089600 -203794493738227993204745428434681856 9080808873265134934313298416369664 6693396332926202532819777385136128 -608589969964142509659117608459304960 9582773623537150058101016587403264 4176392893320997338064215741562880 -222660804127153208024196958602133504 2742514986223448036826684797747200 4334307374488211619571236247437312 -514731553337629458771308573756489728 1340732845466011892666474214457344 4282090189988881036792999784218624 -293031732556474637406413073464426496 6539924300268650913702912077070336 5495637300191436273068368977723392 -452709572454686481900565215490080768 4572506828219092320145505456750592 4934792574491789017719458238562304 -190106670344337484516154444041158656 2057762038470375771107031036985344 4590003143058983142248048347840512 -83475958167955590644617260860178432 6232226019760219945095068542566400 6513626695634192206543823893954560 -254759220100684200655555617546567680 3739414680509046671620480161546240 3550753880033949744913765277630464 -615492945138494784379527042435121152 4389324062499368157842936768233472 8074835435263642501076820814725120 -29286750099209170343892042662281216 1611237065930536106464806229245952 1327557262367727310475885149159424 -938213795787980474639717503778947072 149553634924379056097557900951552 875833958993482333158766937112576 -638617878466081165873448354874130432 5928282944283451956135379158958080 1139649617920007924070951514275840 -988512599414554603854824917407105024 4524668839960565690310928021585920 6959720524041573609875726204403712 -759769692451515920307813475256631296 199335089175526272697792553025536 9701988808637917638035875928473600 -453029440323131651120880481327906816 7088401360816383292856181077311488 8655396896448315433442976957726720 -307549118622920466934360685762576384 9062301433369749993257614769651712 3595563311731756122510065554948096 -261315494022718974019101954941124608 3718491737944299675695506062835712 9745997342366118988420914362712064 -519634678223589409723495153080991744 296169931431769974073795171844096 5853217527938730173449241859457024 -818627962613222005562255429683118080 1394718791860725692549249019936768 8320412737168343104308669877059584 -979884717407794479941676328013529088 7710133949881906370633002741923840 6849165976941714057866516241580032 -464340944706250609184267397989662720 1086850745528874843410132465876992 5922356661663449269486262769680384 -233274173235838633382278143806537728 3116074033841175047816284934766592 8543945764631258686827577399574528 -725677015296272281786542719848415232 4985811681652908269982102862168064 5798575062367582672851808720781312 -428586986824690550000778806619537408 2044319943791114474690009423151104 5351766571211553152933481248980992 -424115778156831057494263462660931584 1467432657810754171801767644233728 5968498329202913731855087694774272 -182292042699396404626615274974478336 7540168098795590639042913957314560 1499233017957557501712172113199104 -18396212238336670560871536744464384 3311386459196136844990600500477952 4593903135350526011846598691127296 -217054546349745456261382957183270912 9057607337251139058100073675096064 6922186126490816919857483785175040 -995095546769116544236662250989944832 5640711424018153131575439658057728 3967606248973591637231698454773760 -346055280128763722017146116664983552 3557538915709083690407119000961024 1693045448020319316432803197878272 -539016343368692804363811923100172288 9828617323459600309026037537177600 5145106883655570000594827418271744 -747422414393908873053983726127546368 2625030135756178050422859498520576 1306708590824520477624596525219840 -454405529482641490777859497102671872 9299551899892636046406752049037312 8583307301036875940604603634024448 -629834213256034960954311222524641280 7999569983202825619318260725972992 2640312464933328957682369920237568 -79299072309482690079935141030920192 6825630206870822446266975726338048 2304019649967821678464893555048448 -424284898004042552994108445430906880 1834715612408106296925187496476672 177100750814029656904929715945472 -917908522329013137594078833315676160 3063754199633083400951887491497984 134710056143046865276809131327488 -762051629213566485157539528944123904 8836324627352038004486982804176896 8458765386150134367001937790894080 -861214059984667836699263997019422720 1338416558493213859566543425241088 1647064214601684853676791212015616 -461541955115595520418224740470095872 4134474838635602510626742272524288 198285243714846759494126420361216 -381867390800960034014096321517977600 4042893850498798146994829581615104 7034049091388319942514260232372224 -778749048752558709918860701102768128 9893874277787998121278106169769984 9268983069287171305464853124087808 -973548062281942171798889605632098304 7628880783464220502515162399375360 7926733123349575268532145969168384 -192432837138772310373578560199720960 5508340214072228543779721632022528 3305711217823821073472594215174144 -911716989627744592800726418026659840 8266392454483992732770757232295936 6163825595558812294011497478094848 -997402666067677664764249989177147392 9628556497528339324668611255074816 3800296948641053571777732391469056 -671955764437482289888582588042313728 7644736448165837614275781004886016 1990072419432626944939859648708608 -259911865144421678045887694060388352 9821382564734134259544804691017728 4353486935927012848867374977253376 -594162565073888304417993284837703680 6657868170152115533996607496257536 9267142451053848515472871055687680 -32970231829194976245327230178164736 1252426961959462996443985447223296 7950934081078626772143520914341888 -335652933162672000865458094488944640 4898554902159675229623625533358080 6211838211136290967655806322868224 -593906927670846718455070901286207488 2312196555660575528186665947365376 7543188792734594009439071423692800 -266909928147861491651395263613894656 3128409163316770550446897961631744 7467586288279169529008475856699392 -534177195766405864486446360189468672 2162457762806983064504848703553536 5927411227618982132794901923889152 -240784536352576279436189424834052096 6838050305193651656752506731495424 2927862653959887173457577561292800 -221753328687702514274439531971215360 2494090988366347972811576030789632 2750823881332963293896864788643840 -72037031656345816394572639032573952 5762895798623471386151570844418048 6083814091588455176842037772156928 -998677538647609817593075367153762304 4551020901005080649572283309883392 1944170949467615306128526470545408 -293099808195487385091086979709272064 6308337247452978304075200695631872 4925691436080541113535381767192576 -502069043725787604392705844274266112 1621877589364860854517861342773248 5824854467318973032520837838667776 -542809295129350174733131264231997440 4192865715095876605680810773708800 7258925956679758212013788642672640 -620112551385070391390872354953363456 1825765931074613137284445383950336 5965440798355151737871278385659904 -470308934617252073619718690735915008 773958730165977244062964607090688 5481802778732489427784507978678272 -444873569721546425132475671828758528 9756638987930828467616827469463552 6694904949153746448985545620062208 -169329987079499394751699824737779712 7588168659581513428084873395961856 631523730985664380476384188825600 -382554014030212890904430260275642368 6011352405882762567056128049414144 7943223369627626132199048317239296 -910127564228417347290372878523957248 1651084634160480716315622304120832 4249922171365743968105009149640704 -306391722472910504551379028836089856 7831612850646041442888383794774016 9216336921951721850162314177675264 -622471787199613973167768026442891264 8913045676026900916204754612256768 6127426654013958146194133368176640 -13596337536725173466686211034710016 3792111010649817869098523033600000 1577081213316742532909137154539520 -900612657768662947605751066404061184 1230549245007141566152949350006784 4326880313687088723416946040635392 -451134059383453157145632404861353984 5648121112519096582349284739907584 6929342179480400125141419579932672 -691328628352335237323847376891281408 1543045031260772652233467633860608 9263503180111289134748043529158656 -699349021965786865179638259991445504 6635909589138665708927027905560576 2790799744108490265788236517343232 -230178566523822021396213331847544832 7549695433908240585439196915695616 7021706691838418275012130241511424 -556120556554892977976719123404554240 2282230056389498902606717195911168 4139438399914992909219661025902592 -253562120426487013380202706298208256 8952679549582216325268520665350144 5043434779054078995279716712185856 -467483369589921566066875816495546368 8913972395550667534855404236308480 2110366132742019237233725947248640 -892770633331038538969223682529951744 8848006272509909224356990435721216 3827415195339130165361217527349248 -4117026425532234974602362013876224 2140929120912496008079667584040960 6975483226844752589208295646953472 -146315200832484037149796496324952064 5962463640374683472770125292109824 1003072612515861818197971191201792 -702349883441339072842783631146483712 1819932762305418024291956399538176 762352966301450128280974996275200 -420153516542470166491058334056054784 61725684336751256858059390058496 8353538589613057632843864949653504 -237972752842333296231477682590711808 3047801383759612745187027503284224 4658008331300231246456202022879232 -335879466490190272121088282233667584 5257830512732331505427729428250624 2653756599717996971565162480795648 -616136561624156797370228557578502144 2303400027612165109923248359866368 6110049125489397477033958686326784 -821146464121853456957747534623670272 6514997008734831758586393493766144 1420056992395143413482176819232768 -266297282651389309805417502160715776 9127545278241263794304663068606464 4930703270489334944260173447823360 -387419898705460259265908222841585664 5021247244741111299332911617015808 6324242025032521983464942059126784 -97320414346670712365303070376067072 4934084534014636092214264266227712 7370710099069750632373870911291392 -994572544926615604950154599076986880 4957599419546651788830142913052672 234939718081339392792277853143040 -634068201437342515062808278267330560 8725733651654141283304744954101760 5300354223701712684433441730592768 -929914818891728831713526779677245440 8381637970803402292879486101749760 1860511179041157831267547013447680 -961284035820864024489697690718830592 80236832917168036607889929928704 9807543111106196513724281011568640 -129858216053749927659807916681068544 4016798300162962816640882206310400 9640197325316013758965508139384832 -988193419331103455175298384870244352 7452660947380362114689298289655808 6674567354015253212888972740526080 -483123186747846240859689025974304768 3603958179599051129577734097862656 4804359600569584992822899108741120 -491787378878365728791078550424780800 923650339736234355962504055619584 9688885679081592950557727013208064 -427905449388017354927569628230057984 1102239076992089214597200175169536 8661515481143975543225903011069952 -173640603393287462560838129597546496 9989717511800319104635630979645440 961872436622096890680661109637120 -628865005919298426967233157207687168 7106279998605888055146200021598208 2331766551320036693547460851662848 -751462839196887810309682229812396032 7768508904652410603328762076463104 6632830071540321162766683429928960 -577909860277791474834367625792847872 2655142272641112550466385451417600 4469078641345497603097181431005184 -209537848525852063546979147409522688 5150397487144043632381437373579264 2736306538900706558038624121651200 -152086470906932866780992412229566464 3912583327082988744720552887844864 9230646131210687267045496544296960 -329656480041012385318113088024608768 2500393640990165451388927476760576 6982673415021020033320254311497728 -145769635257761848256754366371856384 5505968554318554347419935927435264 8196919260177624052926794807902208 -813125747396091071687664693361508352 7234504853875627834100062361747456 274343556200094343853593918963712 -559009874359309941821999896147787776 103977196294948838749088067354624 4584169535298947675757355414323200 -67093700252617692628443797412380672 12544453849526072907245320929280 7790166636191050543728593018552320 -49989673237834494938133782920691712 3710084287150686277214875443789824 3396362812342490903172345170493440 -127940823301018366708078822008291328 2841302348293671825025300109983744 8431220390196588599405157709512704 -880645262091442130469140453287526400 1515323963482687522942361083576320 3704934895718965415814996661633024 -696904052241706146073732583547469824 8035837753556568820158937174114304 9608681610572396061480338782683136 -946509391254225871184086109991731200 435649175992028092094780645834752 613067221447787932735731497172992 -701240628432568096340075873279410176 5100059899245777664068885445345280 9645150194874538642522258322489344 -211196028764227260365792850082791424 1985825135830300802875477664464896 372190185128499291044640035176448 -573188512522673341082465298295029760 4183764011764924454004248436277248 1220948779473799459764855264772096 -80398397714534592744293815828873216 8120001798536173401672724510670848 9137064684715352914601786472398848 -168834272078991861946969761802878976 3025447787807628611872359456964608 7306739545108300892347152788881408 -160070389230201206676275220292042752 2856520585453438581498055317520384 4362504155499739802337287667187712 -707756293133917740838840907906154496 9166977378431600150239730846400512 7207731080150623514387817617686528 -73209421732465945602040544901464064 2938080809201879176516059153825792 7987060731415962658863536253435904 -910782252491304673387221507855351808 4243360789795981792647325522329600 6430032323592187976252041837150208 -108917182987184114145199304518664192 5749340279631469002094263675125760 6871141606431931251825794357395456 -540203880261989865175046713377816576 5707621744893045035531502339751936 3531307799305146596397199501819904 -970322863650319072851812218591772672 669182352028428439341534371905536 1799488296056419923700440792825856 -467100362353856180017609244944629760 5419742673050744820915613162536960 911707394495821588526477007126528 -321259141381284765028084708129374208 5917850184100834835652057543737344 3541910372857565566766510327726080 -519068710892934532238649370263683072 1311928900700480831639021384892416 2858706500990305217949034006708224 -37262070083948983044415363626303488 7110413943830997741850706374033408 9569030564215650023546036672266240 -75955120588609226811860188840067072 5461871428993610200261598304534528 2466005921646379646112761569607680 -673728582849722925761582037213380608 3051485305082067045586099050119168 1146055021606162373693991313997824 -793188451206720926893358837334540288 6414341847048531684751488619380736 47256567487517307835265906114560 -121696620174723364510517666745679872 8329449148125030693764093553147904 1607969555198001186260655083094016 -119998853888324865264525415024689152 8097823186010874074677063459012608 1055824329251362990135679712755712 -147527956912521756854505029012291584 1107176232068618545529920908427264 2798791874158251211502037260828672 -141444141723895792037455938789048320 6004393636288407118276687506178048 6967880115741968194631979595988992 -33610534825554713344395769701990400 8414475607298416556583936256376832 1750749538463896345375774424956928 -263134489131876410579804762625015808 7479885144161509156839350067003392 8782431116325199311313584269557760 -599078037321334269162495203161931776 8373034222210630296561142797959168 5756284905178281551280432503324672 -173675258689933275496745635059597312 380372638508742255410176069730304 6964150130214149979296896659750912 -212826158459824148364630479756853248 4165758223083098482936951697571840 1151526629088165979481214266900480 -194074359878705535144169000012873728 2607967438040166548462183129284608 2088857030630196339084070777520128 -62505765665455449408923131780792320 7448404101896578087882591012126720 2668878715795945135454821959073792 -6851981221967707638016863597756416 6012548080903009846616123244544000 6206460695392138600967622692438016 -46715692134911351506472955023458304 964227408663350408970059846254592 8394777785316118756790093983252480 -466429354740202531269598441562439680 8056008014421506700872743435370496 9678817180304040511565103714271232 -211825320558851626828900583767801856 5468798177232556988699445133574144 6272280689625207109295145454927872 -955233850301150337637194945691385856 6275258693459023369104474643628032 1330001447785034528471719406993408 -19525141342613125943395635641188352 1307998713690348876489145110757376 2611400293539642487930876208349184 -866438541035341521647858630764003328 9388213003348529041194232011816960 4570014782639718493894338957803520 -336827033281639968756849086602149888 6087454176100048207324787746275328 3507433039536027794750646379347968 -181346387302253075428743279787638784 282881353854347044665561932890112 1992975989531097983460100553048064 -937039485427659275141914645588082688 3094474079005577396797230695841792 5895141521756073508480283259699200 -862855524299246411254090749114843136 2700430728708108424156741585862656 2531043808536115216607964559310848 -23062111887861480341018227723206656 7946943234459109092122879420530688 8990289481475828563210922557964288 -943300289311981646665175535177433088 6866026169002622696219817384345600 2017969233607636707808468621328384 -183507485524427875896500054411706368 8992145966143512311830246194151424 340070850997902348754776894734336 -945302214765517646697977435018756096 1933246474531088955506980980523008 9314170866600233111470420166443008 -459430708077507479951060693166325760 3949740214029083648535002433454080 505562184516780201235023176663040 -477825627226066559936159605407612928 212011877787105438333888635076608 9216167853081695258559111357267968 -879740147364407546750616723662045184 6809648229421210374207774744641536 8615646519227580843726747807514624 -471862275009279038081608768714440704 4842381773854367267064311059578880 7074874504497663751240025808830464 -691205354114643570154781968556883968 2981355048202435398503531534090240 9346412637423372522507417881149440 -609857590795454406778023085606961152 9079444385733217976252540693512192 3351201347506420727345565635969024 -488403935109985634595660743110033408 3185403186991640018236458093510656 7994378177942954671996611715923968 -575246388465511142467274717349806080 3694917744766884032420901680054272 790318698652646980700883503808512 -234660641622113239969999055222734848 4038515076382569171435229091463168 2489290926746616755560231603273728 -465910096240384161881622226055200768 2218707888431195291314489078579200 3522266529905339561499156719599616 -464446051694626362125572520322007040 8880759303974447747709792694566912 4616925822643825755610934123954176 -90934810058413890090430973903634432 6846013480875046937058126956855296 3019963426976473180928639452053504 -180743899285966414275793226878156800 7558058535174282346563139197206528 5712398462796331649015570849857536 -764141829185909132932151614201921536 6064191759455041944071221154938880 6485800996349758611424583085981696 -176419021616638140033043135245320192 9616798628783245625861873055301632 7011105987968572300134679234740224 -885687352441548127838750360517738496 5413013845248400569324970488889344 3296149234807773638504160105070592 -587112977958939456854007287163912192 4727449960108296419110167789961216 4439927322386073372771959382736896 -610877833964965145793067891225001984 8764728355362109319405464606212096 4132979156941481776190839846862848 -608819663889896204405065786236862464 7934753556912473576341983744491520 5894775479656370875770965118156800 -72733866346191193007883704701288448 1591229663027267257287948659326976 5283446886746610492532428069928960 -503782043015052716886513108700364800 3902231028755603279696888999182336 1362698021123252168721425043030016 -334017948776165193691474688991035392 5435051199618780410935716744265728 704734236149565623681973733031936 -915010628876000188013600548776312832 7566140748872751629294660407525376 2124660154049557027127946335223808 -655172918456026117468427293145694208 5854552215248931165550633755344896 4423595795551057637065161556623360 -358226458177514171384662675473563648 3519450037828767628005116949299200 5427428131109383699970683450687488 -318915513062577248124491870834262016 8443114591032440930417845020393472 5912683515461694432355899894923264 -837661686801845677228122836276609024 617638775019654609664465891753984 6883087248737803322789909799895040 -480489623807051879939513124619550720 4233864544405852394569833620963328 1054917206369867473431582656692224 -60333797177773560067803105787379712 2304184076759741576097650989596672 1545457299572672149183153804673024 -578701630515529895486473515260968960 6855385063782328324560130993553408 3098436856947436476321598674042880 -247976762343773152256040472919670784 1249850971362078445508951631986688 5376082778441950929310005420097536 -128032160887404547824139130279821312 6765298403426193632226962351063040 1273241525943686871798597331976192 -765322730195123886030711502986543104 8077717560560146440739821501546496 8430683034966089336346168457691136 -945979293924051333039234700279808000 7609089578907117353275965048881152 3562279731544898178049465577897984 -424309182963818311075092235246632960 9821637876534145849070600207728640 3891970068240999636039011751952384 -463726230479457902189722954471833600 7600548138584679415150670153515008 7214107009042673555634177968177152 -374726777257097035312299916086214656 6860904381078229154926800026992640 3147694071529794741430671430909952 -737450913553127388133575777123827712 5660090754053255200472479406489600 4473824891305575435886723671785472 -967805955783438955523803892781416448 2033525923173628552858225155768320 2053363738385335583780586876043264 -335705984515491466839536640687341568 1907531248481016805097024031555584 5408785036157959645142778472562688 -918150401675031350980404104833007616 6423960357260158682528531561316352 668648671750434451096054645391360 -29634442623842088841328397700300800 9508975789149408373900992925663232 2865067638031999079968827653488640 -443122047272093567843302999737761792 9718546309169143524637410127249408 8396314264461759624001003219582976 -149171496857439921129565959716077568 1685297350158906215396181886894080 8651657892435866870507258576371712 -697857805133932881754793816067407872 760528691882471313340232177287168 1756901226807993946973558947184640 -231259747834686284892274110695997440 3845179661263706728583453697114112 1957296300610000154461469461708800 -16850493177756284597248519703625728 9078794915609463760627189631942656 3651944428967010303118726129516544 -178864025696137050756713008336994304 4239455807027628706788314829553664 5007820423948801685724509602054144 -153393109002118421722994835103678464 8098303412341144327988570996342784 2030602736514209471362951595163648 -359470671840536651245319080162361344 7147260807812869966099978148380672 5615356664752590479711117636534272 -215649551706163180841643174099156992 4526416152397369609630447084503040 148303767561456939970188520980480 -425056771934500434224278069542125568 7322969575045054006047456890978304 4145035308525420804629653587230720 -72832582352192316331015129222086656 8723803107829304744964923076902912 4622892402208290231859552301613056 -300202206206495459582907741590519808 5197367108262988679729213838721024 7728671337294765672870356002537472 -46707483004198288859482185739010048 8490753791634120509856387273064448 405997249722930844155960597938176 -493640984193656746673789846327132160 8799422261608009834613597244751872 4423470497475047218199735838965760 -71248155340010963073013380299096064 4528453395461666647820786420678656 79162833223422303167721355870208 -106191673495484670236641518390607872 625603789703507373085285725241344 6549451191733848884133964327944192 -606115502351515816819157217266630656 4186618082197619857375896369364992 5532123416455152657482930230132736 -955928797217013221733085472586989568 4300149704394836912963193392857088 8507280791937822694352389251530752 -986787904668699535549743153182408704 2328998326268041603592110833926144 2192210088419248568242662277120000 -116510467222925478104456042924474368 5578681744838064230482547308494848 5115212039619483209148592788865024 -510768212885259491893126303074746368 9573718831713125646885926605946880 570571141613440327142215367262208 -582125700834772309508915165153722368 9174773411785151660408796205809664 3126155741824985618038506949443584 -244152567541755529598933131235164160 4791707749079990905380508083945472 9247162599454916565115269629870080 -736946956141556544645050247139033088 5232066677363802983708865572372480 7518666503197752148456479045713920 -226977833198440535462008922774175744 7628159380224243405763613208608768 9585341729989942169764639300124672 -114073693744328042061439907080962048 3936880734373886286867686892765184 6086338818691690941063251898662912 -288901275196644957377581722456031232 8422784778684965956015412779941888 7050196451994017137915577638060032 -843605133966134174935032901920620544 3598478187621380391618249926639616 1805933193879439571303765259583488 -843185475393690497980003377232216064 5427104108340960915894936950276096 3927835925107680924574328933056512 -134398165760619555926097683785187328 5352468976461495300380759167074304 7150406210332889214991311709405184 -391901438299952081272417040660955136 6194747484735963873907618403581952 8142306507288468693146753946353664 -765368287192427781743446611820806144 4349024041869314336761385708421120 9091376989255668232034353913266176 -838163513992798067861857067207753728 6614965892464533799513917252173824 7662203546174180422196024517328896 -389077437164161942930089679022718976 6635198524564238694224229411323904 4588305129185004542862640348659712 -354909000617769751646392182542172160 6872172437036308169796831611453440 599048762490172918713119471042560 -950515602729037421889416605605036032 3482082291412020762803482497384448 2526662963634363795033150797643776 -34259363469855151820441446449676288 3822335127341906138897739482660864 6946743934359696862841176380669952 -274499099153157747252779421181935616 2386523009176043976495761606049792 1866992048000908284418105622396928 -467653141037092560306159281302929408 810289355239292452231209382051840 7420815487101385300546235918188544 -172705110226213071273415299957784576 8477628526427259140882349598703616 8163435407834994784314701809451008 -930510417681943350990897657514295296 1675414672376445797472624613261312 6643052171907022535642274085208064 -568157949558049101817317197384515584 4034598127810596398168613593284608 545923752051125644672839895220224 -779277818203005669627810921658187776 7316582389512430167047175980187648 1858504146113502882689907968442368 -123131017471007598252604011243896832 1319636213476012068513537899626496 8197734134980340390475434463068160 -6094123745342448133599695732736000 2859861656440265699956882550030336 3523274675357527689852065253687296 -132835413183947373521754480168665088 7243370932640977770557451494490112 6876142412930804034263998122688512 -943553895244804951500912102295470080 8271867455984853830930533357453312 9077163112084773439168090157875200 -972736089184658224039952743317635072 7882625292489914389211214407270400 2131581868765939025682236172140544 -974669384320005376470803913851797504 5250997985212514585531676184543232 2888156836526910383977027294199808 -202882382129243349177000127717441536 1091796400268496557103622173753344 624266667791028489481201802805248 -237531980643443361575405326134411264 5135900645515228767666236859351040 3831036289569714604455195333099520 -944143101367705079591402265634668544 5642797525050236231570498634383360 6158575178503986103126967933992960 -642408620720449327965015212378030080 2247594540916926374718503095631872 7372202328437196288095679405883392 -805123813174310315603097961168371712 7651353389805576780463632996630528 3705895540169230110414678609887232 -548133542188630788722685345760542720 9498491872931040927031296046137344 5841300866024727009284594046337024 -701250679027007304299747212036931584 3839188230512779968952892418686976 1006152251386458347655194673676288 -823803426560786730884915649046380544 707904537402426819466957372260352 772358202048705790882080268222464 -563916321944986220970727708148367360 3488243469515904275141488516530176 2947718842329905244684858786054144 -399392176696384156760403012514480128 9385417682849303358492727513710592 6381570167596860927245993677684736 -249222398047299485297531532022382592 5987845278566473686335121677877248 6498544211831624582432840438775808 -382640571911088834920742782731550720 5742994634445944820054726159630336 9070690693637534927137961085501440 -208711377291083586666506443481415680 1652467180184534503467694631682048 8627541349395783326548901828231168 -72144144344480798580323147443077120 5466229086787898946455869604233216 1772071786438177823817121721745408 -9197610490550916664797150855561216 927551710516517284539283850395648 377861582729680302668371948732416 -470839653027043576840242437143134208 9629990046031573651195412371996672 5511851446827563340257562252541952 -33008249235794413845906496354779136 7879031203114423999885578248126464 598245875013954420074761397731328 -337235639557171041795011560486207488 3511121200730689311612704103858176 5287187933916877049617875923369984 -857817262707380884482705680112812032 5678082914456659627840453568626688 4432188086400307826258111606292480 -385662789764659026653908933588025344 8610176459052948799611152214523904 8731308653344682364382419884179456 -595774178942335668422131159819878400 4167364510752247577036291519283200 8120970720023704174043837887414272 -639335383594150331998398097701994496 7942022461586065822706339365781504 2352399959358364035976643014033408 -507129693453291961502901733878136832 3835525064747922377633976173985792 8472700985435180998283320956551168 -29120268071403979563184007122255872 751919705611772358779139145072640 7167936224421036928489888956809216 -919425437576188284298620719285141504 3044061139396941338568916012630016 8674485724831392394462022785302528 -504598213073399718443496163038461952 987732790621728977719291627438080 6572751404704194596824142552498176 -1110675074479535395496908931727360 2867149288931685918318148389437440 9115360400829927831781836526190592 -799179523793697692048337958323879936 3836548585440638672215783984070656 7215661781515932031148798387421184 -868626564186833626441612560363945984 853876988251836737333896044085248 5026965616813652286645632996737024 -483696500758029106925721611434721280 5035702785514917179384535162290176 7827703981060797726475309404913664 -77820293309491693715663640328142848 1524043030646063607040237367197696 5142394828087224247459503931392000 -955559396061712663913160626040471552 2978196092578081891824203842191360 3299207022013891392668905100017664 -533439855676678080656600179205472256 3751231885630195948857038259355648 884910043667105699039211576885248 -521622344776656764282491083018993664 6400568597665056204724842593779712 7710981983588465644962954644291584 -558108835907554412746688764701573120 739298564609891595085784706711552 6419440288204067327980638471979008 -361922139432738561733799819283005440 8945580478197106040352772011851776 3047901869038303543596203852693504 -919811443629527746110314981374296064 5464114574784278006424696109662208 4460648249041339078356734102732800 -487613860184666028133408402294439936 3537538211855591899398366264557568 7162328571886750214452361027387392 -642935406856133626331604005272158208 2214394110493521523968507539095552 7706599511548645482720415228887040 -531118463212414843905282629605261312 1339228725469030664914251691327488 8018742596942521541102362647592960 -90072696699631557618130669763821568 3040941525957085318023551656132608 4939622450147089723899603075465216 -104818652313697448980036111791292416 3331581290313891532488402723143680 4597741138694523539236493801291776 -319628407936248102915817281570209792 6377426999731759589272787598966784 9483861566699763914376659762937856 -689368033184828819200860947979698176 1223700522572934224064258146041856 9677008938085642160685201466851328 -851906209342917639908151901386964992 9036016996499992883645087678988288 528707038330415580554320205053952 -245683955011279418906694727147454464 4862528147606033871560280010391552 9256478330597138138920076684820480 -81219692831022468198685055519817728 5408245412091405238606327904731136 9245650756578935872484643914645504 -889269192038846740328163501517307904 4194756089353330214541569195769856 1486782540679455707726859439439872 -934103230755679633196151429614534656 7590624130715309826601002305847296 1226803580334059328550760246935552 -724626022114019352164202321404755968 7507187196324563652746903252107264 2693094531392200221314317291618304 -886416960479007927414512316827303936 928472444810167239446301161553920 6100223421602383333332713297936384 -984959846562602631619295496271560704 1060340987422333782039883432329216 4350573667256780379398436171022336 -55221705224178878752706127196061696 4289030004638954956969761090568192 8995228513943956959320626062950400 -367333093589146281755276584645820416 4903770913855609051451266546270208 438166260046961354260907760287744 -366406069489857532415486895474081792 9846013395565304299313162092544000 4896245892970210872232215419289600 -819886597117934109539821985667743744 1736853942980013426370331862368256 49237535057977479779024579330048 -611660150922880944589431728276242432 1855664691003506806742246257328128 5882527888716392118476305495752704 -958362603008551348716929239503339520 5146445061681587004953750067478528 244238617267796232436099290497024 -468745904933589917888401121409499136 8699643351205884070767280594616320 1652752714330838189258419120111616 -497350650162626803969873628169764864 5800046421010001901334123805409280 6860101742251342940857640052326400 -804112194723659457880332525683867648 5071991162526301230603756409716736 6658576339610546512483803428028416 -930529021684658453164841219032875008 6267648886358876363578149953339392 3810990780877267852301730578432 -184321802469146563946362838792011776 5612168103904644733693722850492416 2928868406251350557283911909507072 -279330007874520512052233358603714560 3395024529910484985787679711952896 9559822743431208436777468911681536 -988128110942499219389138419748700160 2867264635129993016811284410138624 2340861337631998689800676402266112 -22374981364756994174861652753645568 2216593916771989458819542299967488 8794677235131890334083431157202944 -147074188672453654954931285840101376 5483401942174871462652835931357184 8884464380007983787478382557528064 -686982116732803239802399596105170944 1953409147603131724687193032097792 5318359700769775144510339791454208 -124631317550245437723735688849915904 9948152065934332551593965628948480 669890698014517854898379619827712 -182947885555823873013196178109497344 4900345965471816363039808548765696 7375617509179970307004808051032064 -277165438506510232900980837768495104 651386558493440136595280496689152 1326385070806640034034249308831744 -326030676622965943363836063736922112 3931966694283148522004533280243712 1484865847758863991656748091965440 -60613350262700607915229347846291456 1542117978600366965163127920918528 9888734122810117822430343268925440 -255579519804845225760396322967388160 6118992032599030327820533643608064 8546516787722924986209479451213824 -763841781404017246562201242932609024 7853691389255788178950597860392960 9826905306729008887294221524926464 -252834401847949606241148858269696000 6502175322352558246216088785256448 2607719319536179256721030932070400 -481439151063071987144197186183495680 8065880562350391115804145658888192 9425152904402926683782881394819072 -318860798137426152170745010958893056 7642834243190867806661098304700416 5387019111723696201168702077403136 -515365954240221190112032528955080704 303599763024223700907811384852480 9139668527469396781982503659372544 -285251540451475863952938274761211904 1554625455797417121840534984327168 3578522189403189541710947292282880 -622203768239928034070908873656500224 4469681870736229610832059862876160 84360252187630560788222109024256 -429650428734160266722249366745120768 9035051541152988407114493602037760 3232549810119796996714454965026816 -313764118153160100295577030721798144 6781514120496773064216537208979456 9038995245930727557266271075565568 -202982396729956695163442392077434880 9444036921509899861809951359893504 888894166661556748589924859510784 -148926096990386087855709979548844032 3545284519865127742787345291673600 7475735312583359552866388996521984 -348235982371187249823963111313375232 3606104937188105507225462099673088 9792234179279849881282383544582144 -706191053943966155468841970437193728 9047725195156479819402707145326592 7497414653241973437273811957317632 -69607578942140573191055137306574848 2907436996807627748833346124251136 239700337767199868576209018290176 -319024903807578015664240674029436928 9551933246223945773109069102448640 1697901507252653776477491977781248 -91074071949602803641454111909478400 999354625075979796948567845765120 7227892107614132397463842674704384 -240621511670568678003315100641918976 551769865959195401704206084603904 1059544838833246944202530748366848 -288592860948025998223915298695675904 1825708974045433103867407365046272 7578573007997322524426838040641536 -720295142670131816005640862799233024 9875878944387359134324898555494400 3538282611861521296758442853138432 -216292127849245678220504761643302912 9940171353634748098453786960330752 8180066333534411398129864629288960 -406028369550269141363173451924242432 6023013169554172319160570006732800 5157452839938135659836794149535744 -465426177597002348629785963950768128 4323682246213091978775560498184192 9284436808292077939419764540571648 -827382514857849999230841449135210496 9029478122106547103416043570200576 9807688243712368361050357490515968 -767463031468339703054311714107424768 1503414880204340163882285021528064 2649800201503127387146010767654912 -165647423321369071649088867074572288 3187538826078639686923546863337472 3175249769965647405657967684485120 -991583027425135949182144621980942336 5263214951600300616132443020197888 4098056031880470052877780469678080 -763532103221040086958199621617188864 7374911737538876560202341518671872 8831197497343729456616601364201472 -217327266644079005233333591099834368 8025218765516345696328302049886208 8734086033571612789296658714198016 -599517177687979167753274122211164160 3254704773419718256310138416660480 1723130389708648527244843984879616 -674435037975691122866351484855910400 2209785055343815982437612067487744 3779470910047043089644334144815104 -592930474105505209930197450310549504 1777647509657406810156272883597312 3303593165953801806046105543114752 -212555507505683136219806819659284480 7314341280774756072283633686151168 4683996001958402894784104732033024 -738923282860562752847771948267077632 7685227562805640359759002267025408 8820273300288435000066035274481664 -616681898857216791973633592024629248 6909355327979366104915900727558144 6944054742075399690983015693942784 -201919073516395164071958078958862336 7874665091755212035886918886490112 2565947330850031266993921255800832 -94035677999333026033106616609406976 9336231076545636329364334724513792 7872123047607204577094722627043328 -778269331370511134493098267845328896 9861117962815416454250172115845120 1138066029216901863135115374231552 -538735615600040718114744351858884608 9261532810617149828712819735920640 5885998998002510124012513980841984 -199470992104083286117602388921548800 2027322237597044829093668335910912 4863006152646625762602271692029952 -411727378369608184292856234491510784 9749920670665081256792746125950976 9202603062299121790399081554640896 -67549708824253865126837605348933632 496195721067585713881194728259584 294847567637119904174906913325056 -11385612637050432952665886576082944 1885833153981070842610275286253568 9855751737444363449397429137309696 -545658672178022730619424401508007936 6300468894195357151103476207452160 9873390254437699561059839192858624 -36222193448914483885645922494840832 3217022033480616301002474387406848 85575780208504612403713010565120 -1993100938561324515040780772966400 2647413957106866997838295800479744 6775805753953140496459491071492096 -728122915412242631132565845481357312 4341646380984592955731110090768384 1983331662611605611314613820850176 -629710445829465601189539524565270528 6452703562585607704380249332514816 5618324848742397072269759888752640 -111907097976501957916665979806416896 91813369188708963176167247970304 4466653239001425531446968079876096 -620634184557602298827237815679451136 1351772881517646297661310697996288 1624724819556850563626421498937344 -784807535878821963371208627130990592 6617146567271062201038187687575552 3862566464631251199682190296219648 -411234481534972829585896380647342080 3746405516108765123686926991228928 902810789479444420341892391108608 -299362108800777470498741104939106304 2965911786001596206008395232182272 409764446737703141066235013234688 -432771947632990593667748065483685888 3780181644537243465532905682370560 2051272884764334323421422653800448 -947452827180117262660451647835078656 709685730271761436714076838297600 3335028865542055424176448681803776 -908233435107999027455597386838048768 9892683323072351198367448752455680 4798917512375651876397094843449344 -909122470636091263475505546592780288 8561887372307764309913374323376128 7470106554488569955832613354602496 -810213092193705318687617353389178880 2165957812647615518322812338044928 3404431706323890011819855501590528 -439243501302800168628081430523543552 9770248135949998778127540107083776 3799260000772867201632588519178240 -442907956846841202503767934237671424 1771465353370100427863962092044288 7105181439420765527422096367419392 -627797223817725301678260344368136192 7639914646996640875060566941499392 2393674849921121823108809657155584 -972495266741264668805566143947341824 4376343629046354777416667586625536 6715141877829277530099573392932864 -402622863518568282787905712982851584 5173361240267190157527173633671168 4051379322440537063514579853639680 -254754691282092236758906288440606720 8535738945153562092843554670903296 3960411128628333869043829413249024 -48381719591323711730681803784060928 6909136932918811182664983802544128 5721415594829338812568776113913856 -510423051149610042883451671824826368 6016277217525063890642676981170176 5013736088573808006588491781636096 -996312873228119305399291214756315136 3057731206436265851967168839680000 3552285664898492920405871543975936 -839140979530511449372543317889253376 9411784934897662409573774036828160 2128669823579665753163801974276096 -898166118167830904469223186993512448 4545505459764629644626082675032064 6289311083447962399150955827298304 -399938507656831221697907490834874368 3638527721162012469309838360313856 3982393667428514860510955211587584 -326120182100716364891016157724672000 7897865676061655173548939851857920 2684691843948945211870634913562624 -683276333967676196655263730085396480 4411961298339792112117953423474688 6408240108122490012242967860871168 -43443230763407609957044641180155904 4242531288909127916614489712099328 2906501372362458425576074019602432 -925499731704546794234548524989546496 4992366599008372148871445172191232 7996395394531376967097831628210176 -955462682690527049622155889297326080 8547402217153122272408642797961216 8847940812765223369767403778998272 -356697537391344613536674413883162624 7582156987437915004710303844794368 3048106981166730608905735397965824 -896327081835412766031560852302200832 1674224213511247612883078521815040 1603042046490238829763760847060992 -121029427214336291185789520851238912 7064342227610171929400243969327104 9685897063357604607713437575806976 -475427595589292394713904366026227712 4555554383422790286096334789279744 8603661797200391329559778676441088 -797729802558973736973594978966044672 983569273905554345140495182725120 6685940303942862177670128988061696 -248709017250793507308251069804445696 1265454924042102821337084255535104 5372663410029962421068505091670016 -403771466268737748664865392932421632 500579235407094220904028260270080 5209666906695642892603773973168128 -688344511331046556531048491914362880 755108221965751591466230465167360 3233933158951446799024992110510080 -507369585344536403155909591837966336 7901421746485980529024567210934272 5473003829895651254280913164435456 -901452732629124654862271531047714816 323866252429380652144790861774848 1493723879665811242480552581791744 -554538692376718136681991889445978112 4503629154238307112054067489144832 6631476490646071828543753857007616 -305462912270306539902353759608504320 3038168506874616686942563376037888 6095852011205011512840538799734784 -492220317194060641942459325624614912 9187405649766211287403122313396224 8420143131896560316507850979409920 -764956975156785940045554076706930688 6687598610367374104287037125296128 2219949426553857611747894514155520 -694531581614164039479635239149502464 8447831280262894046005940163969024 3484163526291958059440423263272960 -15759804911598373772974286956396544 405547862861651463172333340983296 4388893621425130926975372251627520 -849111992862689858636678194983337984 7860704576871057793367364079714304 2308170967493110810549845032435712 -915007647388903155639462808371855360 7309298652995138156286739386204160 7237705184080860051154753686601728 -346057166522742541815488116321943552 7414848123043803133766821688115200 9955894947640694828277880925978624 -418637403331249777685661969849253888 7792886331755287594292639030050816 6942037282942470546984276250853376 -980577761369633143444709078770647040 4524112023173902849184332853018624 649548330368428508602904875106304 -670334470937426199965074017616920576 9752283281254009953463206364053504 7216793518075362929321051781332992 -549900348091218012003274165105721344 4961501101940697219591004854681600 9054233686094023891018093126746112 -406831684808602406240799391142117376 3956139452905049270702604789219328 6990050494119771502513522500173824 -414082068340318985985021657133088768 4279920945298172008141271865491456 4660198675446615416589489872568320 -160077709529397790431395937198800896 1642862794101773464255443316506624 7547263627261889302266755845980160 -249970595982500473425550795400544256 5318823776679626244760719337717760 481836322898472614747671602659328 -608704252820414776162701755654602752 3205393410988652802871101038264320 1609483950896100404949299268419584 -50301812118955132638894453596094464 2537856711785960041456495256141824 6984049369453697528474675443662848 -457249538721601566301602980204380160 3261781239483335489451975885455360 7559048950614360803547020305367040 -475462866445539817766383398175113216 5191146649038460222074612430667776 2547184835512989920132625474781184 -65011463434212965440707695323643904 9423251672658385460379070033297408 1492713680294365179535447732256768 -877992924316816865975634186769268736 3493935740894520828960851227574272 8762248195755658289796180770553856 -72883028700760125761755545600000000 9616643438445169173084993019183104 9412451514858414298266203666251776 -453173686031296980335051422526603264 2884986278915692851550355665715200 8051958533035945559576782793867264 -77480100820649073099468382626906112 8833130874924330574073141154283520 2592651836395945349657723647557632 -292852896267164774090091823991095296 3190209761820264449924383383748608 7620481347244691985953348955144192 -534709010649319234555100312750784512 1364155608692125771542760953741312 6341069336070822749642048023822336 -914634589381545761521194983867023360 5801819111163830841523882709483520 7542760910587301316761956248453120 -653783555988088377198550127080374272 3281688662115599855587533980172288 2440044991775921370608646475481088 -691780555593872867558722725784584192 901164616228972032349156296097792 9805609148687213919516399115436032 -512992019706865907128876324068786176 1221400424409699303987841763115008 9295498820332853803227164740419584 -289007139595659020932579966758944768 7651884299292239145395852299730944 2568913325834474130463677451599872 -167355557489566009449966796443484160 9246008254521577591490256553639936 3082296775573287634524582208077824 -907496232729296391010059046212337664 833310344721063709263298339799040 7360806823786888382270415145271296 -3067512329133944644812001849114624 7563967594394060293611916357533696 8944197867760406060653342688804864 -894067485518740790235898226285740032 2744612555760490290316218506149888 4985620388144410529070523592212480 -8513063966705188400208772585226240 805955862439509038053575930937344 3610576364641424704362313875980288 -772835098706684543352231176555200512 2393740679587389351491088053960704 5221787142587938560992339216564224 -375174815309580844152073248468631552 975313076034334531650322717212672 5125272559159680134851501058162688 -271535232986610988264791637535752192 3943898567119673583708480871596032 9999352272181739951959132598173696 -225981866708682964811154460988407808 2252995797926809470832138182983680 9961409492429000845482340776935424 -597151585246478935838412101897945088 1528675266798406100049620581220352 7020617195631891311182272815693824 -54943742716059684568117924191010816 2328072721165633934629572402216960 1899962155949280323744144725901312 -312291802056000036677323883164991488 6024833672323688204093954174484480 2140198547235521140111537768235008 -734232574702301287576948707409526784 5262631917504074710064893844783104 895033497757574549254359908089856 -15862912939974453335967126182166528 7336077785670323723381622079225856 9473795353624532859666771646349312 -58756828480749962235254133716156416 7562407363221251638836850338037760 2377379013289191416351298833874944 -956752862343917092874728284455174144 4663677245148552555842615751213056 1231222900044078487168982576005120 -610275453604556476860736529173053440 9892196139885734025271872734625792 7334206371013764706742450411012096 -15914477231852613129634002302402560 9081967201712325940681114287865856 5626024576777444762525016870879232 -370494130145682918850061718899392512 8369172881255014177536402641649664 3370955664399982592076258486517760 -145910016777200885268626026874798080 5773870307465362755555881302097920 2113523327590412021953290053877760 -907730089725890769158223984236429312 501951210982532602819366038274048 3679495236675428024031645022552064 -318433266271549875930046252904873984 8016194813161312661844250614300672 5560595122775226890222842083803136 -140974497321283761889147881336602624 9164281844809457299123552233979904 4936529781650307515154962160025600 -939676616274813325374391839260409856 1412918294839476295077173800206336 8109702446096413791300821259911168 -711851283196184194375841552812474368 243680785809148597674768330653696 1619590846255424468348241453252608 -794916118389518573901081837813366784 3874674707092225322871052300189696 2558196907292951467122793583214592 -914007281511555994292032674759442432 2405510375997589125289296613343232 3070796944925566167655766130950144 -132806977878300896240000539796963328 4770368418896414764585685260173312 6983004202856064972742650115391488 -64169854432421863054012021460697088 2213681695058057893346646861807616 8044519280752962944383394420621312 -647319177701495315772034585844514816 5680065381788111121483380320894976 2888405751733667966974589589782528 -423588859830136819128515049740566528 7933314764626488873513387393286144 3067726484200992326178741619261440 -272072884637918847606857782538534912 5876496856370200547616510519017472 2658561492153144623545522973573120 -961721639896044369434773314311553024 1584142899739653881707012751884288 1147032481145927038830062791032832 -627387973612385307938892542675779584 9733259720669908414709040047718400 2896094137192620109499277605076992 -256550026956038144118486364453863424 3493460617156073757008036739678208 8126249961017406181762527242747904 -82612875777177867989064729315246080 1179649155944418654711785243803648 164536427098612662586401403961344 -867200610348135567562772623602483200 1972237905492454076605411832627200 3436145151162601888992847011512320 -706723853809048037358914566342311936 4219775916160388011274220372754432 2120866894730002527304442756202496 -499258717831210763130689831439433728 225909071333142363759029101002752 1650134623123263950410568167325696 -874807295173171650214475498585587712 2576831892577529007165458217959424 437217457075651862108894440456192 -16271232143552869720261444914642944 1856214088815907336065337807339520 6795734959180624381721263141289984 -418767330478264753222923936514179072 7573658670106676500924977242963968 8414494198425944729369363838140416 -406057546621316582875433322835607552 6523736565940210061615219238502400 520195223150248047774671136882688 -585472509056687428277453853131014144 8274102056014261530528362033840128 8668770892625250887466121189916672 -622443760887031753861005326411628544 2657200938984498536011288228659200 7768948057254128310886223180726272 -597871955155612540871431800445992960 4954786522591884780619376705404928 6494992705102921978675459677749248 -142619802814137023658782967407312896 2916840869794312401931533878820864 1148403610868014399618274880913408 -665992509141478683365027474191679488 5873705679046220679189253100404736 3841053474254325587156076530237440 -614344317548257254204281845182365696 8031700469568006509587579124318208 9245476614348990032480171622137856 -770724665514713391935259560168652800 2804920679299622426103050439491584 7319871427930041506479752618180608 -430790322569656195325285742762000384 488329137743165021643820511526912 5086141329967031815088858705428480 -831301843799211637104995411664306176 5525885647894875980869084276326400 3802397149226710319847186175623168 -187959635191187796015829289055289344 8537230994940937314235814944702464 764290055619495523044324066459648 -430019951650312804171455453437362176 4986010085574320123616011722162176 103969220110006565712769096613888 -135051678264714093731158259002245120 3984838752350379784084369537236992 9241682655023628372971253953200128 -883872911761182435853732867733454848 9201079654221219389163737402310656 6107630764488982856013195778195456 -118493336435369490995901869907247104 7506367085448120414508205949845504 971372551962851975543635524452352 -343026800418885203462995521415675904 4388695140725435476872332836864000 3138169272372998233208637683138560 -741755986925815768791821102826389504 5334182346310265295301481890578432 6640954913983743793143139054649344 -316310553193601519460114310033833984 6397438659373500742796400606052352 7783355571943663850513608271200256 -330814143333049831391988095169593344 8757986172505968407405470425284608 4013657049975428688452818183389184 -466503722145994349121391530302504960 6994889443515106848339251953664000 6952712641569290440545658296336384 -465016657184691077200229818901200896 2182478206097875227568581336104960 5029589613420643992628384906608640 -895365305823630552518565112636768256 3942590101775649873088455106363392 653070902647444117362842116554752 -666321784139749813491790926172913664 6645740636557808384179913034301440 1204834029718507915033578485841920 -305919799708496673986420493867024384 8270637805439314941152454969917440 2501524975343699466127107027894272 -67905327387399010357904042144825344 1117656155615894364997416382365696 1228336373765760168652463845408768 -361024132918347614862042751985254400 3213933020017659831969477543591936 9698771394775178963035690329178112 -391440392701064275025280737638088704 2799396073727000238533452354289664 3001340904950162683015502271348736 -913792856468767373415737393944723456 8701732677438190422252921393512448 4085215590052664404875457895333888 -180209389682972690317705653751119872 9687671437509109520472324903534592 283099343656590564206714783006720 -877896171535393600116675503078768640 7256021942933832891685307817132032 4458369845933600861070874676035584 -284221403413667989223363416676106240 6412559203568785899215164360622080 7086686901774487117303015668711424 -677637188591693155444433533597122560 8772347953074366670911071083036672 1698854258401086148915988061487104 -984709210611650344526394348537905152 8342272645882058462363212715130880 2102303105770896662177679750987776 -319343402540858590066896015743516672 910722720137155627024590040989696 7345123319517627114698910189223936 -811028042798334376623092083080560640 9015276588369881759047832374870016 8221524742523673004782335945605120 -775720434861794437840703138989867008 580822764320626132194162638848000 5215225630588686536960634882359296 -897362061753968613252675314152112128 1215414053204840719747312663920640 8160111887280205749973849175228416 -649100780318745471981540654186496000 9367349312672525363471438938374144 8948799462494293621388825373704192 -563574563719403995457420665791971328 4550760293219323650771068850798592 6821036626711018038068053305982976 -937821345541991165124254851984785408 5799708734626432240155218707218432 8286896083633798242600085415264256 -414235636677560282243323378026938368 249249754723193891929059254861824 7543197774434280310514824459059200 -871160612920747533509208645371428864 5902952647812304480193471005589504 9000698690734227634883816994111488 -385500143555372743703890082784083968 3041491505555454894492522179985408 275064696976889992550949723308032 -895158604553087399966536905351233536 9457777808692302119850942933237760 1348892804035574568688451607068672 -93715430117903216248899382659776512 3471985298779818569330174040473600 1566442231084964199086406984794112 -989801535223771241311878764986105856 3320488920840718354380136114028544 5038474983319326379252854193913856 -516980231538274289026205936479371264 9666845187050712529676867878256640 300050732339353432665933173751808 -652157305661259214329543836114616320 37908837960977835935093214937088 8495209647400578900854783810207744 -971648843228932858395104483167174656 3005700836081135121340359042400256 2978293398754716730201734295584768 -943598200422848673073174626349088768 4861295004740475164977088815955968 7462807003739912595879211204345856 -645969070354443112212512371327893504 8638970682275630211977468528558080 3645675914582292087048246050947072 -190729860073739132148296980828782592 1729064338504031997062010281918464 9352289246902354575350071646224384 -377961877266908401564367365020319744 1638809080553029735029738691362816 2955518802337700691004195715678208 -9518100513680668264958448533241856 2103673712014834003313434384400384 6250729718686258549383964317974528 -336965790334048892390517718531440640 3055793963561652255459242128965632 1361430348574136103718250874929152 -670077550584909451797494843159085056 7594414674498939300999203846619136 5922201416069965642360672044974080 -894293587307938816836796181035089920 3748592074791834858456054669246464 9740815843487478013590239367397376 -55552137575997690298171705163513856 7721233970112408768999825657036800 7574291325140928584286117637914624 -828593704591275880998949020898426880 5296863933793073118663060647575552 8853465636307060383974500727783424 -970212503408127176917224754813861888 8312858797251308628310540377128960 7745521021871489988292935099088896 -903054613960623665648982506105470976 7497327283524990356359077599117312 1566951130849954352977771749179392 -97871583437982332576925695457886208 9117161466618567549221617017028608 4585253634166152458661138068930560 -247832602821297477015801549453000704 8798174119684318621456926567825408 4482265198546508143048042622222336 -865043200413168339042406147005874176 2894195169627525577640038469992448 1458010494548868087000221811212288 -825722131708268376165501507857285120 2564404008411268817149947289796608 501556699603471877601413216337920 -355645246384511186855145680945545216 199243307715289953350983876608000 3603945791670854158943061540864000 -458923329360496843503848038636453888 232776087094964395818872951799808 4419702147649774893942725333221376 -510367104030187635541649670017122304 2095366837092047946219792948527104 9432578354932242180158325235122176 -869895669014143273243464663461527552 6405989520386468506029790154719232 5140982431242658366005629543251968 -229764213500661328290710965530394624 1263059079375244046089171400392704 8191155295174875866739152697425920 -76623798924997667198381278671929344 6728553760923684364851123664715776 9086790734425577739516411448918016 -454845104452550280448713052609576960 2744163712296038662647063211147264 8342384951116824654392718044168192 -638966142534871424901260791947198464 425437940821439250525861275762688 9487281329608622659906358678126592 -594160008064833024125891209792061440 7341031821853199995526721797357568 1855891931073445060323295912525824 -632681860941806922700636381987733504 847587876366715103816448638713856 7229373170933140798409543442759680 -622984428830467144171343523484794880 4815360312907187057120233597698048 3889212510334580921163571154386944 -284984742646030858367325970662162432 8662822537319142169281564317319168 2514917459846372796310747355283456 -587613879202949665519253527451402240 3122793024933241661968709895323648 8081418341466069819078971408515072 -790413635245147872096802288718315520 1758196653368594113029025579401216 7277737853381411140208860850028544 -265453032604988855943329517077004288 4517742414096820335693313651769344 3914519575204296181975683786866688 -125476668514715262045815559761690624 8057400271226971349164990041948160 7934697022007871114382389628895232 -721008760454346414868828934878789632 592041213154528889860335689793536 9946009433050057401632142607253504 -111571225124382517372847107872915456 3315286063095634336511878521421824 6754661977068947118758842238763008 -431417150906129433882200132647124992 7730042113961536159519269460115456 875245165345378353827198051287040 -606104238272986253386472184050876416 4941974976824624905840684676677632 2575680792763092531902516266270720 -297809013470717639802497412299227136 786254376266145903888690975866880 1316386636910948699807230763991040 -358799639996686949877583051231330304 1383876310824739546340544500203520 5884397849710126528414492708044800 -719723919935525793809309278830329856 1067711375180334262750169740083200 6838368195436203128857207104339968 -851580215179053846811098802779324416 4308801888830819417241445495472128 7172229724181097579640365179207680 -654190276639772273032144774959726592 8163424366111221942440936221966336 543451706768133400834169502695424 -708370598062710294699578407463682048 5120744331286161679762840111546368 9794819803880362273349213387489280 -247356933184061830265963294259937280 5183742021687785724819431988658176 8085828143788599912128181123940352 -812687341589891937789235546464190464 9334509081913837192947437297205248 6393081144374342996092813544783872 -794068752370199328301568999584432128 7548444135853585665188585080356864 6569675663411926908981192700198912 -844282428741360036024248431869427712 8294280394417715519582186049110016 9604152865325555904714660464558080 -186789116938876945453895137473069056 4442640866953971948315864863866880 4942352016154131128904891498496000 -609589256698544699972754896374988800 2809876973557117648278034602524672 7660240508114580467513459247939584 -450584023880689014625037555651837952 5725563349517136787859955372785664 2432012294609491657987982889058304 -823261887420947892463533421896925184 4846973244839505125170445717340160 4135122816707391186007672055922688 -766358098406687037319487673769918464 4644060512905620732500613043060736 129853111220006150968146275598336 -87400082299805107299516023899684864 1643835342995425524472716965445632 8163934277495785361081499119517696 -705517201479173083978411389736714240 8148245584699179738635405010927616 9808957319325514345563960639488000 -24684786333244217834571318161309696 9880948497191375938706669270204416 6499483875046053689242378330701824 -524305962708068076374123656903655424 430704276513621649184138209525760 9002374013351187973754151581515776 -998002871116955686121379182350958592 7794115138051675376381095734935552 4118900994738645182142911021580288 -412558836181360662082306778068942848 2783362043789494005267639931240448 6019009129146450953123584916062208 -170986767357431198995390280134295552 6451551081230017443496922114424832 7484937802045326938191187972980736 -955312586574188843586916086724952064 9243202526287544588186369908539392 5024287160744188151960260877221888 -736929793499398263245543079262814208 6995887018518681156722494772609024 7725495987257273215718857434464256 -165777891957394084979085176597381120 4068165146782944424835832575164416 3335242276230626142299336128593920 -285687205692533804384479343600992256 9248143841405583956585978525646848 3794011674422240974252504638291968 -279726571350954929925568591235645440 8316097054211366684611350221553664 5993425296913316775255593554280448 -250598740083603448575944498763268096 3764563319079023728874544850534400 1483172273255842578165739944935424 -818609231634576128041532175174074368 7704322947443365108837725599956992 2844793760332694680786658427666432 -588638854227450953901525581151862784 2831886917814091244777140719190016 2754615401399435223263281558847488 -164419849826611631128830217369419776 626546863803056321962572607651840 2139510253748807259076901765906432 -265773849270568273438130206928797696 9089137186885061501670996895072256 9511313811015058288885133530365952 -700242259670021467223925128481996800 7113516611751863510940096267288576 5328405428459615314525929053618176 -988740960245501629299468273830592512 3003640590146060346869813740568576 3765322179402872023976447045533696 -73351766171546935695897205760065536 2785264317833722780818210992160768 2352730653548860579276515155378176 -794404905699188449777217007695953920 8813211824125712119990159436414976 4528463740232042165541215685050368 -285596656037128504439366450061246464 2258901044055569395342399827345408 5898724001435674667064580984799232 -93253654563776263327654805189427200 4933360037608125938329222192824320 5618405433474080192118236400058368 -373069491835449143078254440188215296 9497142725302922190109583150678016 5353847317950069222086314400153600 -374805665346134676054991446766256128 9957415446788748823249692540272640 6627911179111290541054093885964288 -55909840514700577933783499488100352 1235603215362853876958908009938944 6033690305823217446104732593553408 -116449819843923256894569469192437760 9764279500862076309734033532649472 2938223441188927530757740870762496 -801355741537909992552583057134059520 3642337600572944798315501569703936 1442133085641172966117578356293632 -270011627874946516370881357996359680 7514278759747476869816284444884992 2984104691284143351484733338943488 -631228756897072771823831639981555712 2566654800302651627031189277114368 3662058219822447811590219083284480 -731135107671701162545607467104993280 8184727590071964653725972831404032 3367517482234643208939694926594048 -9397887658628709490753392991010816 43821429338129963731103487361024 98821053610456570754624103907328 -217909178687854323479555241370714112 1586345865201499682639708713648128 4061313816271212247031540667645952 -208168353850311103403361886762172416 8420716240294574117324694751281152 6464596288235759583032284624715776 -575521111089724130068467635183419392 4048930860366079735452381615226880 2903896587058102278994680122179584 -239019890886014258195806788522082304 9989922444348674582694109697277952 9427056363541970552206382573027328 -362787168792984876025497977020743680 8854591131278019146452562274680832 3905013132339546202635552587513856 -651220641645535138223200512390463488 7719692288625567718101883472052224 1472952099431321432683411878707200 -154142538666394918463878549253128192 549911933733512554113170598264832 1069388182140236522137999942615040 -389655823471822642657097356993888256 947362253753334853300277546582016 8822034439054195754620510323867648 -471378669208309062493589608083750912 881292450913778365566735974662144 4965931303713094141514855804305408 -195574456151413146550948584990179328 5100971220557925592935187966066688 5673435774338945684663261737254912 -335140039264897049960402265007194112 6061428527932269788212170770612224 2566337329132263279165836613386240 -646315411988896736606092148231634944 7994719605295871822863809292271616 569856547934053124046717590700032 -56758719365420446768394497725300736 3855326319327902621486973370499072 2738000383575936678219250233507840 -22653110419304236966025340739649536 3767454871170881199935061848227840 3270914557463172310534814697521152 -370376569985142709177068091825192960 7909378404301871260656955966881792 4036070597821964452576585951739904 -750368795110923041789310298641924096 9959225208686815148626866803310592 349262303392710460227876066164736 -677159226327422366655229475344613376 2975716158649870893846413367574528 3023916012100324166348523345805312 -901513996947732288035016686549598208 329339276789266259259996619407360 5371461788168739699538690557607936 -603492354067971915306589138054021120 2181156052563413194046128609296384 9787714727346455501357590815703040 -363940237636120988064149725402628096 3124848751666663512700637809737728 62466687271412074312808630583296 -312731249440105817961908569412468736 7740528094860597446198363374485504 611413408201425760523747674030080 -529802040589749971601680119791353856 810528488991179283908888501420032 7336538525869137223443998425743360 -691061032650946658017021831763984384 2778175450028057359915275597643776 2350135961313137253853522353455104 -150269584708465101956631817533521920 2759126447314284319513136292954112 804692438919839207712034247409664 -791662754819479906277652735656460288 7361145002968492911013087678562304 6708579036491865312269226741858304 -305622508136983327466545392086155264 3674084915082747577088814715240448 862945742939132835684077059178496 -477166523015544463709148412282667008 737507297142388725655973182570496 7379034208154198775436933054070784 -498238430036383503043216331191091200 4264348485994779741961784406310912 564230164529523054045460755906560 -734329760706984273734813498283655168 6117353330525815284604924875243520 5231640052432999375519417372770304 -654676007606541167737789189506203648 770676063766328321244164750573568 3790421169407118740301812867268608 -410359079077848930533676691935461376 3541394703525327879409509773344768 239283233276297395273266374901760 -216368103306698860281212472098029568 7455766772880406268768409605898240 5575523711845346926666544693903360 -819925162608626371576047858152898560 7878602510450509222364875302371328 5595103398367541723908657637228544 -547230430096411723259660340767490048 7494595698935417791317309640409088 5640191791090741217195244851822592 -95886747165885071745098145127727104 5771793432125684024665361335975936 7001515403639475209206234783678464 -655893660242798111379123630382252032 1582968612817753866372399883091968 3099026689842814713503335671922688 -613084231862702233187008217752797184 5025953131739880515962150689177600 2219037113540816241464635465662464 -206180776547877049243640378018496512 4868870814792452985243405840809984 5215085121590155373477413993316352 -876163849633140788511601505194737664 8124607476533288844557845283209216 9415229246536459810384792136974336 -585197962173733363995259372681822208 5132928124956255285838126241546240 252691674805467938831684952129536 -384890371280247405865430342027968512 2814423339753469534993356144246784 3970329272539839353607496258289664 -41044135323989832691647675365326848 9001481079011204031701450844274688 8378976911609411355216836684677120 -864849686570299291394671628479627264 6741565701567180783822087227703296 293230054007515515088459316330496 -308074792800505146091357815550509056 3960586497394649606222012536061952 7605306208500836100325055194464256 -455427048396672192459404935239303168 5750986753734267266477940818313216 5551702449069706433577060403249152 -136952764391649277786427715605233664 7219456879837944950836224067633152 9819916466740729342326549493317632 -815239068684514734008079200804667392 2689212784881891261282505029844992 1176449083701743552427414368813056 -801724463493175162281280909659340800 4512584321899056920433372063334400 358280769420486773915771002159104 -43628049651900290093594372053401600 4667178919074841320722841907232768 7775124002633077709573032146632704 -877561563692700192923686885325275136 6991954248006314370504405400158208 7443465585197573929970598162726912 -444681968187792020694887432049393664 1122480079773607718510338970222592 637047876044569215966606155317248 -791756428583149991391988779831001088 7112861606150272637281407533580288 2960225367819404680423695135539200 -802720682249854660407568293561368576 2822559632231386461658201311936512 5865928037321444490070440131166208 -235753269652784814981737842990907392 6522149815001313560877070689501184 2876341623964787296003404710543360 -635669083056244017204147182953824256 467505360276188224988779055677440 3568747758167561473539910989250560 -149239809583333144915396656355082240 981051945857904239924680738209792 2610883518943284869084410768523264 -197992890924123673084086016351928320 3231308310386276474515614806835200 233803456215428225683486498881536 -966512822098350988496446383613542400 1952325920612781060186635101011968 800203184757448792902227871137792 -471945491335581691997153821231939584 4899323792587724543001975941234688 8776864446927328600052289939439616 -985997381035142198172706216297365504 3341477769850017628078023771160576 5386387422210845767642181613387776 -887880294084643634484495710012047360 3053640328946949578175424699039744 2245047016546486549937918335516672 -570663787797839202905287048065712128 3253565889662430351812177629806592 4493157123992864191208510183178240 -776967357654807006584318827476025344 4969414992873118397088939385028608 7186837385097539108273080615567360 -13178974046388146476439094360539136 4379826033362186937789481150840832 8909991732591918066049472064913408 -317365838107565899984459099770191872 9552397231541658024538626601254912 5950007359050735506923420607578112 -989319779776422344473287238338215936 1932611934396209143210349495844864 8031779698782041679280342845882368 -40972903676365433983805298910953472 7024898379585426101009051822325760 8710474406782665348874230873194496 -615529512744255166738604531805847552 2298449763078753785398140354953216 9184036500944485109097494499819520 -753321683051148824524500436441366528 6799225747992123097805585620402176 5372269472727847339442287694315520 -701210182212083584873006057130033152 6248475957953007095271571587072000 2306808933033937682061775094153216 -769810054712155626537269663920816128 8605929161636771728650721013268480 2565654835190768750721725376757760 -810232128039676413101156261846581248 7428866000215449316816336854188032 3038414783323732840983954188140544 -249338142049377324497600429539983360 1212390648386525387544760676253696 132278984839234110017118849204224 -960335032723676893242713948169437184 8679093194284584287856349467901952 424294187859593833640259525541888 -637567203951191471606794161208950784 9483507244806763708184596825767936 9787572770789925166845064038580224 -434398165144664997680491096782667776 3632131890118754403719709938679808 354514567159020852431074512338944 -122028412306616394373214850502361088 6611200531399806195825409123155968 6530388494724812661618471797260288 -598943400399389278650693690389954560 1706590266134213996721157821169664 544472054463619387228792098390016 -6135889549443891371548551870939136 116812351294247050839524456267776 8784718187914661702283986731008000 -725908655116426726044769430339059712 5563469644860781849599745745485824 2851976003004137363837192884977664 -185030182789458925590962761931685888 7804141219948663858694604915212288 4504743285110293904681140203028480 -132131943219891830001537320728133632 180314202685793694060251898183680 408193367235044448794881602617344 -424589667515702554585341914330955776 2446090396900308590529045812215808 4410887993995241411493013915435008 -496538857556485049173404070566690816 7735786812406239306113833655861248 5213963676149892011538442801381376 -762297099316136712416580558083063808 5598397553190829767669361907073024 2196387167396996476808099159605248 -274610180460693837977984021188050944 3578562787199974037167252460011520 4998004140752313331906092743000064 -418050959243679291989210999950409728 1135816199794508849943782489063424 4505458832101432678901435192049664 -491373997037335934872493898231447552 1146030417620817120524713743876096 7473088841084364643683746608840704 -135002963573858900718698123956846592 243850990623409660366576735485952 9996535060180682476599317891121152 -915767080567230870541503718326534144 5646869489036826357521096554577920 4400859449868270946099299098820608 -874086775132979050115445938123177984 4283664936735016340119354402144256 9522915838566850690367362028273664 -204501804880558002578842037335883776 8534410457990279585057078515859456 8489239613905236694265994254745600 -293349933787644345754276885067464704 6056869661692706812842439365099520 5782014801806459050541581756006400 -39918172061573093276033245220175872 7854240831562155365719180952207360 3893891188322895937277908905623552 -299153947764432583990003349833383936 825307556682964686092294103760896 8664446588732929381135213173669888 -765332823264744096835774012800892928 7831610979359268101613455742599168 1749806464364347540613675618402304 -703687588836626012093807838317510656 886708498325806277660483245834240 3879912011637757667018483743850496 -201556916904759662423796974853554176 932459013168336192999767352016896 2942917997821255529764281932316672 -491244907501437932209262233485574144 360822537291462324132085904703488 6289507866336128353715432235991040 -55672260570544338147463552363921408 4597777252626383903122531423354880 3944944056092506420339234052243456 -470046250347188256018235408190013440 9768761308422499240298912111656960 2849364038217609289519085643628544 -666112295528613206812479538111447040 416662803923789246669229526089728 9584751078868914913363063124000768 -728872412552028065740013088112902144 7523047714968672814218521415254016 6064808406864004720940413190406144 -409228533016433223579777495889608704 4606644473440794358829754030751744 4129701737376998973928624101523456 -682694791811663269294430634570153984 6576249934865156770301824957677568 7349561113739532788236015168913408 -507272632591658456506132424567029760 6051018930281822456158242495004672 8973558213292850421095010716876800 -960493436736711220708816146374066176 8001499487780390205650923704811520 9988506725606924624021666691809280 -430311245587278220527404058656374784 1730915554813673347119518016602112 2567540875931465882305845503459328 -902782171383152304596751340458213376 5125688949830921997557189067145216 2482840131233203692894496070041600 -431105783540620826726006064441982976 1114174980888846404901221766791168 6293247220351483090567243027709952 -529832351089085296783242032096215040 6887148937023277475416719119876096 2995884195096153740082994479104 -415040908100192995022773822131535872 661745340953802856828398852898816 200344124975033232544822923886592 -762211861805097252139197362776047616 8909182829205466886887663202205696 7559663835799148757021420794413056 -382790995440008392102491821583630336 9757844969332309178432310499868672 7204771761088877770648540487352320 -755858802057597206250085770757931008 4657696734849145213637060294868992 4841210810277864565692166314131456 -952253188315264336857651324815147008 6114225159115046556768677344051200 3832230702716860888830120642478080 -255952914114678867568432300842549248 8644679854679269495116185705906176 4281914862664119527454845070999552 -763299615664546309466974753594015744 178753802694350582230432415219712 5172392909722866874039833234243584 -517190218088172079305621366007398400 3350256145761741668206098484559872 9476545274587474724331585913487360 -515247734199698670621878089345400832 4637969418154064911516553877389312 6145912782589280860645446001885184 -406068231790474288919021486793031680 9438295171988386400805424757473280 7868996725960331039030726371573760 -858749728382038104944715756730318848 6710919542110373632453992849080320 8280039540019429687661183687983104 -97619139303654295782101265693016064 3525267994071241938827118680997888 4606355209086581682641323148967936 -417691400126404407527648384786628608 7948322160786066796422785973354496 1319294786123092611803331109584896 -338271358946315923202040017903943680 3187764635456843569128683738234880 9794854040420621554445635175841792 -313109543371102090324239900714467328 5141441034639104611104624299999232 5965206983560100550794089884286976 -826072359001636354306906132939014144 7956218651790604941365920034455552 3884755576931709644614578896633856 -968051193404335785868531471969419264 1106658134238926745017244022996992 2540325906446922978582648665931776 -268988534639217263748013142862462976 9824093140460165920239816338833408 5295245253539115719692397662175232 -167181557646181004402660935028703232 564749077532449498617474663317504 6474855581618950036161793494089728 -289897036194932455385028743233798144 2400924758208876295417824569982976 9440545589301573320353562880901120 -580346846147877808284785740963905536 5424635097916680900256486974816256 9529054756695531378924880239001600 -495688590250547654821019556396400640 8713087631838093496133587463831552 7803215680863100998680234801758208 -263515790625364948282363110804684800 7483423659653171338308392492990464 1280752218544857356439228323463168 -248176599693508085346197934725660672 7334022745128859544590939796275200 853295570532240784413110285893632 -957587037870618734718557620138934272 3450079821711187458199978835443712 6974837258198252885131061423505408 -92859701611608414234900743357202432 1912958108886164089021263865970688 8630206425836156472721892559552512 -909753582119317468058815178167287808 6487754690497115219771945773957120 1176856580213021065701877906145280 -542286781405324322781456975983017984 4656529214442080013932243932151808 9352644621856480256518728064172032 -815363971689507864604071937922039808 5073487780665910537950913888256000 3848156946621251547962035910213632 -249010890851174192607694819115925504 2334139914990066974038992737009664 4049237099471186596054210537586688 -741747617233885713815453944327962624 9055339628916681379529231316287488 6309219247527591035115717938642944 -802143819043493097837764010676584448 5057579708816882333291693127761920 7837517898724264922941507422388224 -990787263262732728161177132693716992 8543860068150514232112889987072000 354872186373915491482288651239424 -960243177573540518200179565906624512 739515099145111098891607360929792 2806304741950931758146931650461696 -52016927218928861536874948441669632 7156814903631911955730785720336384 1929892803751678069521046260678656 -75011233499408506567416090638417920 9271289892523686669215849527640064 837764620895829996686726607667200 -76715448118468461970222708118519808 3271108257946246013099393522073600 9471197080080856979008435257344000 -261214984403511531466391051502092288 4488807496190711889842549660057600 4857464853256754867217222705610752 -416898656556399680142051699878526976 1977551409049919759733314694414336 7729176735582499297600970866819072 -237277264742396435522365179843051520 5238434263201744155848259238100992 3379694716597675156197959660470272 -717732537639851389768688950279405568 9040173720521840620781374869078016 2594567012689279791453769201352704 -285905160611448412425361614545354752 4039285844202218414681690726203392 5151603379557591028305937320378368 -694167711284864921139811874471149568 5653510009228487159693731069689856 7190274141227758048343767367286784 -766972244459202185175487100559032320 2053969898228792996360170015555584 8719991980359123214361367653908480 -596130138718099906561416278082322432 8960812036678141587310349421379584 959926525265757967566686757322752 -486560398329183027313423617529741312 5348496972827230698830347571822592 3494346863207719140183218728206336 -85379938986425956954091411285737472 3748022412615670700681626260602880 4303068780163327695668611190358016 -549818653181274724452853454133526528 6190231360804582465637586680414208 5211557638665025574531610089357312 -108582411053134007167884170994122752 2472258323999819930895926631071744 5407772968552154399910465613332480 -627104491318294673992757640001748992 813739246849895618479253985689600 6962675065939109170990877421600768 -250713698304835703471174620607938560 7315866949979692447227710780997632 8516178869087488461752915057442816 -575060049235727039546560143813509120 4615353601092104814707490328412160 7235384813844835288826689416593408 -723536510521462242537870561975992320 6739980174112243191804067135356928 7278381392082243782616895388123136 -524439596242599457414792635058487296 9827057985686522194774616107384832 1130841265258907319186040519917568 -870872295255799984875017853521100800 4945732576621211246416224336216064 972567491640561717982797953499136 -517742903685699907069268551475920896 5665226544834262140572657080336384 8685389516331994010005516769558528 -574648274996746007712614818963783680 9468314027652092323054251461836800 1381645932197074782460369115807744 -934118799595826728252032051948027904 657559883585214404683883926781952 2252955718951561643179006803050496 -850548002510906585275474576890920960 9950628688726796242261516660768768 5711508007552594201466092705021952 -713730190353766186605889956490510336 1522423779367575948444657644470272 6160928835020932085896030481022976 -628213064976894891751153469950525440 1820393695898154328731810942418944 3441946479604673742099446918807552 -902978651228140595363673995017715712 6812312547547955892050049110114304 2593530691101032296434133513535488 -813701151301846758416182340715806720 7343692850367074628179176586215424 5861613940060984024352698478362624 -709143110402961889245805139051151360 5307451615745760060398969477398528 6442564346466763205683800346460160 -812872632341750531666311894911680512 4867706362976629973333566300356608 6560542795184368652456767770329088 -989461133248123904819106712907677696 24907997349072137913411777331200 3149639654406106795052734756159488 -540911745778559525905282230434922496 1776280113195641445831982622703616 7850222284738348386942186631987200 -435693353455099539341240886146105344 2422056294460629944784600025792512 5597500861015232095123094825336832 -908631964264083057443723951120318464 2285304895124795590575495393050624 9200593832657080213581571169452032 -274052773743269722204173292747620352 1493473742579295096545930062594048 7387270985910807076971706874593280 -142085157040381529737656269774258176 8325356632736204009479900005138432 7287716646140865003274211436789760 -406120071809338770073171272430256128 1203268267724472927655508869906432 3816508255416590624178529185562624 -14441724541552893329162064938139648 3185456086781097428507778198011904 2002489120684186233447374349402112 -299671022063225409259518479371862016 9648076485461928992211234698821632 6610802113285176818161001946939392 -280605434828692242450221349898027008 4932545716963677078364739229188096 226767948712937891390420498251776 -389882680216587345124906322005852160 6809643338693775430893397384101888 7468871015409875516269265600643072 -888806394387125424934929752760778752 5770925327449284214491926923051008 8995347386194812897464908802686976 -264092156663097117419790115551576064 9109448334379139154036967193182208 6339252095286471856881118874697728 -424839791727855787189221059444342784 8248489169663388143688364075253760 1507707399024944143524133890686976 -377167304348275592069440870832668672 3602208543070780280746024602959872 5242213519664685833325354804051968 -959950885464240730812454647944445952 1193676076175983892972630777528320 7710902005218044459211506229182464 -396758988248559302805947153777688576 7579140712951189861567433080307712 179188434490213759258312235286528 -859911438504079499070162651727265792 5440702639813348385594791035928576 3285999194934372277492949001961472 -144589132506516796628216833464336384 9455909261524035552253018483195904 2297166483506044663323647285395456 -472199908659450103562348117882830848 324190293668268473570607646113792 4694359068784940353616829262856192 -641182119468617738566649690697236480 1632619279613221009302430920212480 8222003651725435088560062908596224 -779538197121064196521041054358568960 9308999440871545999157033116368896 3790404756523516662005813712257024 -739326577761859628811978897570660352 6124244400771327903667217988845568 1927965168856689649214380769804288 -218239269522117897926941439172804608 9531184861908892429518690356035584 6148408312779645263482464686309376 -953102242907243018330796318179459072 5946787442964672993055772013232128 4234039455710864938656360667545600 -927962064347176518263548146186452992 8756484989066537731939255025926144 7753752635676042498448626613747712 -671369697297952724543704887954767872 5128372396377194042660012322455552 33061226188741919131450954743808 -907551859031220044769137319668088832 8458860420438297885301653823815680 2842555606623037436667089205067776 -266468215897055608979101251740368896 6837810052363793964689313509670912 7321448068934041251097235419037696 -626441776565972180905863806766284800 2691496870763222225980996701913088 9288802842873006883410045650862080 -526309134155913000429481627897298944 8079891061989328926659809464287232 8949108555273843443287733055782912 -647254379366750289895841274963951616 2748827119449813272636739888873472 5360145624847478199122165808234496 -941129602698707271095657980560932864 6903247376696753923827602485673984 1292183625262638685142907199946752 -207423137402207036969015921531158528 9346579842715650401368934843416576 7368259147137608310517863995670528 -658573182578877364340453719440097280 5026236176028499784419818803822592 4832804177709899609970622569906176 -337018510904407096699047447176937472 4831096614164116014798879475105792 9555939196307583719807428281237504 -315019526574003859355294225833918464 4978041537128894108183585089388544 3381171153256630731925717858123776 -352282602020161489489737664327319552 4321452848524881580561003253334016 8969922581966064640711581356785664 -490560003975059277895815771474362368 29013749571857374571021343916032 7089209478261503256512918229876736 -197173261225167059900956947146342400 3680502339827929176698546160664576 5213438928421003738613188596334592 -900350842239930722007600817711874048 7351234336339069918667850576297984 9278905908927990312564607810535424 -688117085641872430969991452006809600 7501056033359197638709170336169984 9882484483538984244196820285128704 -521384293579006640880948883784466432 7284948743464070770678341574852608 9496399353782827974848336285925376 -106855171573581112881592015591047168 3844198499143735651417714640027648 7891545009439669252708022253256704 -58062573184956369252524843526520832 5504426034687388777425555234488320 5327561373610293856398367822708736 -581207858733267292795113012931330048 8361017466462395582821934848540672 533775745281079562369114283442176 -732976646567571816363719914732650496 7789010937344263965730935385620480 3430884003997765214303445950922752 -288728990450927112613808144763584512 9539774444931244527662589775183872 873119275428933794473046127411200 -528223409395462226201820490186620928 4908203538020632921476858348830720 6012745296677191583698253489635328 -509540459509231833195472492993445888 7961486760468399870076040182235136 4558821086691115551062361297125376 -118848618391102401144664081165189120 5794241362360022210751322111606784 1277906231755503929424840939798528 -166740869948040842247977100506038272 736244877533264072765873617633280 5804622320308276070998041706889216 -530141783760482831177786415959244800 1531029303998372832362713256558592 4739505816944737024442352111976448 -620967885933666380814971095849369600 7944349664353768480230111549849600 9548557894202889545574190870953984 -872644271756652685206888248464375808 833893919161705587558202686308352 3147663600534171513518048967393280 -953948590359107424445829374583767040 1595457678467349455128065254359040 5784671579686690849744225799503872 -477589476527369096167669365441822720 5730415555665111081348495126298624 1445975608186824570167595460722688 -96054584063621441933774484410466304 8326879399116116260910618522943488 1639479376907839396993449345417216 -502963682305273542742980102834880512 4017663485148075721260197996396544 2904433682877830181733132887130112 -806935839466789144173885442681208832 7052082951800218961295926680879104 6952567183535504441563510074245120 -618974317286831135789781042270830592 3640769279651966281553299143393280 8748556309336172516589840772366336 -198901650853312777332560433774592000 3922685064595083893563972093214720 560928038177906935774451129647104 -737234254468917316053081904159653888 4196348530774845820607849094447104 6522407257498865816773064621293568 -354897405451843105176318922991861760 1078477753901349048627894243295232 2053666845934767877244733790093312 -393354093941384839115110659246784512 6451402866218751038327938837643264 322349713824087625928378930954240 -580638643848555510784802311601389568 6723786159806186964635736413831168 9173555148309675264037154478620672 -397085077953203283174685214983061504 1958821509301218600865418134421504 3768436196004658200007332170039296 -338151680985191182142933408170377216 3812476000483665787397242450083840 8119462496844820428956506402062336 -996314145442499947992467268618420224 616236920996002059482445505363968 7633393775839927920108264417656832 -692662212237154441606717409821982720 6361791280450485138035066382843904 5979373806428937180168949348696064 -502339946176718975206164547674046464 92728382319623958104821318287360 3589598799900401662671197516595200 -454423255693870178342092046426177536 1773723851274218479430966467100672 7216076727681588017121772095668224 -70189449425542887662981980442591232 9399932655091926449840594125586432 7368310717588905526990541783302144 -439795864397889619590878423775444992 528346692818157272672029867245568 4562690015439627934542200269963264 -763331088427572723911383568122642432 2069322060504740117542865565908992 4919145721446391656655882943463424 -201257494037560030148635517394092032 9274453408791249633316832230244352 5955294038937377343934845973168128 -629785339383966282310856573995450368 4399346771900377299286569552707584 4811713690611410519323139003908096 -227035558590767986053087615929810944 1554088350820449912673059760766976 3947544217789221306617020056338432 -540119488337154367477576741706268672 375395459712371982942658493415424 7153982833763649168740593715642368 -147236622185314979318035790310670336 8609017198816885166254750324228096 6723104121721797877573598385799168 -104573660059703905814187653495521280 7462592595245622424206936358518784 1196974206804096314523946055630848 -777445562060778026572774605775175680 6077923011030114574045467709014016 5428962950832640616872484930584576 -174032528405376147685546142847729664 9277934278009361679822127873654784 5390820901386459821108733486825472 -648530804798192397164885724878602240 8402659746933480765437770987470848 3245423226614762660010386352242688 -448151845316188549371738706346508288 6071097240867892875119812361060352 4276669149047630334718140955492352 -261618428825995390818047570965692416 5164124274772871665887281835671552 232080199710528886715053603028992 -304068939403294260948738587148419072 3755122090362042343233650706874368 7297726276765107591444523122688000 -721383212436936652570482937906069504 4287031411462371720839708587065344 5385407448238103654106716564357120 -24305579485212014857325875854049280 3024010065449032166061116632334336 7016603280124750797702880886259712 -848450219702546820114483248984227840 747916332925542078095057586487296 3126467553192872030277051346845696 -146082590440070723829956437174386688 1506545008837405712352365921697792 6507919749020857528484737513947136 -197792869248171147331880230462685184 4942117616520699041537113194496000 3915566923098264091268463005270016 -210087769632978798637245764825251840 174618534235907362378060958531584 4367810573219582242081376999309312 -936317108438762851155719353538707456 3812804447360981015266687776194560 5667573513062868988003448575229952 -966099347171612568265982585692225536 9099129715381333351150481420845056 1284142505211400762691357497098240 -386997577008346594985706279554514944 6311501973390644348083868058779648 726092140594402687650633741238272 -845732718760233635703073014548529152 9854408696318612783055475258163200 9424987766843758821331114571857920 -594004457953092720647657882732462080 6546550229712902969559700278870016 5890771583491990575434426103103488 -935491107382420443436717918805557248 161912267777812277494146278621184 8511642067825006889385381941215232 -254526660928670393353555308854640640 3975063008642857186459212480249856 3570746130322517165196625345249280 -196360916394921098188409710122631168 4262697471167452131719070009524224 9390234929480118958261726651351040 -953886129886586257827431590242811904 9753451497010270978616786209996800 12041919997672631993800941633536 -484511833510195178341442657150042112 4441017971403099355142236368011264 7335382739482626820304367242969088 -617504164850899293297873331173720064 9391237496564700946384736535707648 9080894057029169021587619064053760 -890208038265720547028120564372865024 6950614439647484740950066290753536 3786728617992081776222387411353600 -890015056556771096109087812386553856 5590281327026138007386082519285760 9579457382213908224442960286056448 -861187567813414652811167068871196672 3198824791628899383952906397941760 9569936451403534607265143529144320 -174086685891343908964323543685791744 4255512672621478781235430101614592 1287904859045118644490089984425984 -658034421729477526374858168916246528 5917390673490806832902992828563456 3367948578820720653816805839601664 -382837004675689043655430925791002624 4576452206233067214193568358858752 5944748012499214012711495612235776 -476543803769504891077757290567172096 2228621006529161767449345732378624 4156083168809628563849787574583296 -789862378283206974693121182039801856 8968700135477986818626475463278592 3214444980664867256892200784494592 -629290044416552979529556423035846656 7622852836575536207334113504395264 3097620766369787587968329666527232 -723977043178400140132980311168385024 8547649853620516078180375161995264 643675342034754478319623708082176 -370699210784271228596259401016279040 77446265006860955623254160048128 3304537552525246293183829710471168 -864565008892427209318516039648018432 7300889952694064337076950109519872 7051420551799654627559617327005696 -576854709849649111927726980730978304 959769311688539596977428882259968 6387809432865716207723168426622976 -48698083659038329666684166770524160 683450636458797745633033111732224 9327582123414702512248343012311040 -208734440647005882898944385076953088 4141694920678136910893975791992832 3603445038513639369557979042938880 -411385151650539697303645123900342272 6226910890512898181582587229634560 4469092374029904024596980692942848 -114570145455417042252998002836766720 742787908915805443243709416079360 9842711358201624450294491104935936 -124164465398369670027673192850522112 8006084620480093372952622810529792 6819458413824358168283436298534912 -282857271332760824405261799615627264 3359095098399743553985633901871104 4002184781393480890311587424894976 -263410318964305563279679739142340608 8433256067483046912874775282974720 6769148782488736105986668275695616 -726177884030063995689222878280024064 1304703045292218293902847393136640 8384973735043046079233060610506752 -281306887892698760071527795777339392 9832486439497210061211676138536960 4211498109169194109661267812679680 -720962248064825488850382157007290368 3849944152348405407320826502447104 3198107090969128266885460559659008 -695700683345986133565418514392547328 7216772446247390222092342587817984 3409584499483494147047034256883712 -105198853194052658955370867439173632 1151052332732605071449440278020096 5433940937093218238735117931511808 -910349553557302092594613163183308800 3399214420545203747003035163820032 9746954273474739204045906873679872 -535082635755886428698394392197595136 6317272622025122064755387524972544 6981121752580560855744400641228800 -518245085424113716979365765800001536 5295877191701297284866611617988608 8965012387250662125640958424907776 -549029397317150802758291997079896064 1607437707817639029285914283081728 6621829885733280683036141074513920 -544071198963243232174224378379108352 9010751570278536721922516559331328 2919022333594585313257467611709440 -97204336802124321401760498201919488 6583598180867795422074920090206208 5215529427382488067280362104946688 -423135223476142651388820780717441024 4561480916296323297254708296548352 7133272331709455295181218098708480 -783095141109128415158557922918662144 3012661107040682237602035897729024 6189936593256847476366071774052352 -48580884336106306238627585380581376 956892150845342343953225281961984 9117720779367740819813699430645760 -725609480681074101160805792072335360 6317252721478112656812430776598528 5056056512603367017179160057479168 -247851908569303880173736802809544704 6980253534340932826116200960360448 4287013432800932647205244579610624 -671469583382471936208842817181581312 1751695523097493902184474002587648 9009825940600837318930333612113920 -605383511056383772958467981620281344 9990272904000075604131377301159936 6081790793072952221735061083389952 -829898281321355390757617401512067072 9727813513876020353347504763305984 4279575396292884312198742468984832 -573340003079439695414191980393005056 5675474354450428121646237887758336 789056173189322195653774685503488 -919626885897851705525016352612417536 4281836308880604106873493199519744 7205767030471451736107934973689856 -590559682085659809765978287332392960 6757659362628234677556073629483008 689333564304536539445325809582080 -66805221721516749220598885715542016 3934577404905601959053069740146688 2832578986002681926576479263522816 -422113842273137023304606888100888576 7461898965935806081305783568433152 7769267674384124084835108347969536 -89083823242476153993022664874131456 3232336140020458377035544851906560 5701304579748314779160206186119168 -59139774066257697429361837832404992 7426756735046992623844302484668416 8157863615926624238896610493333504 -626554371009844716238005975562321920 1492407063558650575455804117221376 7722105080415617811164779402756096 -531925617659146687324964376608243712 5086010462680655715344061403496448 2246727889903350594785300835205120 -108823188406015275448139531992170496 9702263371733908372132543726616576 520086314986749255707390784831488 -180089205503064102154725261729333248 9181247804320952080956527906652160 8494272481752859416372296789524480 -334733642495655258986968569589268480 6682698302961042760923682774712320 6667848801914026087543623273938944 -25923459815174641907024964423254016 8673569294822597577947605557575680 6043201642467816239516585044213760 -835674970425916557257340122531102720 514873995109582553985296849960960 661016667639518009938263863721984 -855552574468242101593186076479979520 7306803224158347642796615013498880 9384824770601244434225427608764416 -326879905576199820096668734240849920 7031234521197314308103447079026688 1824669310641322284757713757929472 -842207679073515928590744603836022784 7396611370188956219083575923834880 8458931670414975812322445605470208 -944007987672251311673879533482672128 714025102291473552863224242634752 9782910114240755286035118442938368 -42136431031937026870985961662054400 3620686348510668473045465274777600 8590586991075881809897275336425472 -916826721318535563294680183178526720 4684931904284805553264236995543040 5979363229875495618684595852017664 -648339139624004583687523491955867648 9561731087192862965765173489434624 8836885426048352532573312534970368 -74167167474289565741119988922580992 5551128080402791983358214978666496 6076103346404925514051531262918656 -521902166383615051550237546105536512 4611540080461200845420369933238272 2465519998728664563571067963047936 -574097785875601307505528919298146304 7052321867582892983948739998646272 5045529798821414864086318930984960 -581330595012088113117560141097467904 5030498632164204872867430682066944 3868839938812663903463688399486976 -487025274836446822385822282354262016 880701970215584975254259001982976 8473676363427984862228781153124352 -65725881874378584920358492066283520 3904747887132296149943552562954240 1269210902805444848110260298186752 -602202932435091899198364977268260864 130827755474471400438359690051584 3401582984079934474236497915543552 -13932562176298448041038029904674816 6309694558555135475774332055060480 1270571136651303084351230322933760 -842181637760636067631446090168926208 3858186708127354909943448312217600 701582238985757653187525844402176 -827832818547165625839074575634137088 9034169392178420393833118159601664 8046691400640990779991868661825536 -632453531241075032894129821366353920 498934181234593053584776457355264 7719359901280156760494988903579648 -979997573778615555673260804506910720 7068791388983462290624177065951232 7482710946417796566744063113428992 -743705309124898022086768760784420864 101326118054576388052320325206016 1540980146300005631010573140361216 -125829039684063225900351328490618880 4710492547806274692355984600334336 5915974937882792939268285170450432 -298381376693890296495244637231906816 3585609331769623609283221246705664 9531034502386231835010074081755136 -391808277350148588399692876378800128 5989456219075166820773988363403264 6215113968225977101773075027853312 -561000423488814673686266791648559104 6289729208715676074537832341831680 4404107965663181617222385194237952 -477021944230106164145765603073851392 1814981386403061620836081093050368 9461026682199144169884115936477184 -734564587200769743384328949471379456 7033499101028510713833199016869888 9819077752371123697914788718837760 -281675124794432599571199130358251520 8763602822002007317540957023371264 9406769838503703010215775034146816 -120521761425373025754824821734113280 443847379190993527755250985861120 9142221742322454559169715162316800 -191508698985800479923217943672913920 1054959089010843343513217461649408 2417975378006254856642287282159616 -788566704614304506668254370149171200 6924267514927321985893437964025856 9664081412131111395524246887202816 -248889356551217786913935359226150912 4601104368302978439207409923653632 2233581806174458984466898065817600 -778445923493177665861598986004070400 7827932472242398187720466709348352 3730857996979770761623374930116608 -197880445391566109460833125961564160 4035942294119143648798136294440960 4894422051437245822196493374717952 -809028796259382048329227909828968448 524653323177471937891111574437888 9172921900728012463705411356196864 -704505548833363739340071934340628480 8230920132713529354197207454056448 3360540491434344143471280058793984 -204303457046835731408874242459041792 4290215029379890372872863821594624 8989251006218947860653007565750272 -570002364740210135387825626914226176 6620322368665032415609663764037632 8946947099478977535541072040558592 -883433338476213343187982070929424384 1017979365339555795180193522384896 4694558390681374770034403379773440 -984322315726794717417479287133437952 2235087792801601354566269579296768 1512119522386527007097813995618304 -904753687731629145750963961934643200 5256177948993431411269567135088640 4774304721566154673205095312654336 -564120975955397407981804791009378304 8994999586823929150643480245043200 7059590994882308508883483573092352 -333258879195453351737293266579619840 5722983647182306662581419594743808 185611609630032756608754211880960 -612838645519295233683834168800182272 9419409848514341246692151089168384 1856085521045704990651205663326208 -53727870197907462584514215745159168 5466932413065275221601147456323584 5131905345710902684624770144665600 -66415920728796497926109858541600768 4692989794931576212345932381945856 857572321219644688708296463351808 -551069349837312691906671903720341504 924197758803460633725025839480832 2881871018911271114001238147989504 -420121897788396088732524528023896064 5142502655561893472972677192876032 8445371536972573203772809911730176 -800474154360012930088326290191941632 5488393154507970574246579997245440 3243566309061064281794913486503936 -124697772557303250368858701378355200 6940026099130544867368771780608000 729348618760404360640417910226944 -378355994920304962120008234377936896 302981034068299078012894518968320 3565184818270626202613396124205056 -982874418930555722532454483315654656 8294159465195190370161748468563968 9240572088593327894774250960060416 -43006990913248894707341934502871040 741951460329844530316579887382528 3775381314349504463835763826491392 -635056180847902422717618893419970560 378050922068294301069927323271168 9283136526340773928061279603261440 -136877130291491748025445687691837440 6506604316059048398790057183412224 3502928723351072061679091106971648 -336409225062817075403342016543719424 489292428660096422251262478647296 731583687012555482002745657917440 -491182647770503531697314875406548992 5446683251466330193607993107415040 7298946798315205243689058508472320 -433632515650153826589128201468903424 9215309370198772706404491988041728 8360732690629720678283431332806656 -860083736135026975844084868427284480 9838915774790604750341054004199424 3298611989829727995478983651098624 -371956990042753273578737411651796992 1439657463706840005683373248872448 457436282765078231707017422045184 -830062728509062519019308555312300032 7124277485675157079103549271441408 7082426111165993144218447025012736 -864374843199214639631144857693585408 9238251029112933895590606381514752 9523135962119050260245531980726272 -127362337312566221744477605866766336 7038271992026929817034583552557056 2686208760184845729363282404311040 -906766985224508744169837879145529344 4735709849798282704187540992163840 9095255043947209135211896603934720 -297896678864745828543748434154225664 2432632294595755970007442776915968 2903495058910676485695267714105344 -997864278460839523451549433198542848 5154167488682678160718074958839808 5299869378420412505054976906625024 -216127853642789832691749787642363904 1864279269455662542198911004573696 1555706372510152938646456307286016 -567358026464816529146017818261585920 7836983245215842350485156357210112 3480945952767825602908793379749888 -481358244998917745856516917251014656 175497725130046888043534614528000 4288714280430674672785865884827648 -375036756777260239309745202369921024 9704551201636998391433662553915392 6196256744109710311930783323914240 -658625236674170587481060832784154624 3180412614752328981282014518837248 5157423877860742483591609920258048 -431955219670264583787813376914096128 871977924785050987391160263114752 2212639059759666288630715530608640 -967567985251463463178486228042383360 478279555520751232155400603172864 7303509336454855011428937121136640 -763511616194225927931001052038430720 9448391367917816573640066205745152 3899599731394184492146407069712384 -473464170445752036276982293060386816 2792557125038637866309897525657600 9329642650283423916238340060348416 -22485286246537932435888016550002688 8042949587448068507277948427960320 7054987522756822171201394268176384 -654032907914497742973275722120953856 5556804256616394829082903476961280 5944674469111186614110212633657344 -100631946657519040364893344452575232 7613286337410246837080644380524544 3931786373429164078570078933614592 -479699350290281099384824175953707008 2919644197158597185097108750860288 1786804284916914436848519819034624 -631945825576678718948390105750962176 2071319414935299126391336282882048 7323072439670617178935277450690560 -85159369708169361986302876460253184 6533186762543027684126945655652352 6808062981295719065926138165460992 -584300976681869038928716788593065984 6655730408076600980394067112230912 4273956916951625135706851621470208 -471317896538315762942026100064124928 1230240100024599305353803325243392 9020087832904313589576796878143488 -586040883570274633721160142375878656 3023501617040520634280857831473152 2221107636781208776193918359306240 -299744884165041471312254518293430272 1401956553160588832646914218393600 7530766207606491370074066418401280 -962650322817781220856345417899573248 5964047731033061545970930188025856 7566155923010328327387573169160192 -762817206322425762483423925422260224 9369575528206265930897006396440576 9544842785012739769693313511194624 -184423528942323940449733691190542336 5870390176117927515220800014647296 6104852010429927021006703848062976 -179500232631969198039763459088842752 814636322760926181944638176231424 9250021348750660979599988448296960 -363914908803626504978465871588491264 3429960563325429828630525211836416 4238637008623080574464490584670208 -422843834768528837928913976229363712 9479487631107976578540069835505664 9023431548753609878506483375669248 -347358310907352065206101816241029120 6987788497790809351391231357222912 6175271396577667855624021718597632 -540369050970112712293672672856899584 8516691345503819548412596650508288 8343709919936586409825803494752256 -743410909179976358969708539040235520 578306328068507806985993385410560 5008099963707749113112203167268864 -366601920890014470375224942081867776 5772497057807171210075423819956224 3230155489789220844849790476877824 -608175323578882356037684877280149504 3292694080943952788790037788491776 1263509054127319134869454843805696 -579080720352593559110289266562826240 3552475251438223588732122259521536 1369486320387751452170302018027520 -964035493379475293491389847402708992 6982199583835787955719695123873792 5172820421948579045845761276248064 -606816562067695422848659614236409856 6276871107549217763042429721640960 9336737503319205712654531616047104 -48776202222339725719540331253334016 8144945816171558491858709159870464 6734617210726357484966788389142528 -367857675433620462709516526109589504 1294790381603143013599747910926336 5342811589235700943937660373696512 -444464294981074409827590646129491968 2134956341201114488668014424096768 4112754310685209590392764520988672 -847152709319801882248774356557627392 6906985705278683314112661320368128 6655396967670061089046065242439680 -533005374474435573573872831592136704 3694421747250999544775011408543744 3315278007079994650292280633589760 -115977617517447818255854456805523456 9661197714951945024851102780096512 9736118640388485110015789235175424 -651912770090590022849481421413679104 5869999709612950640132504827199488 9038738205639071320113222531416064 -448369049724484003604315720411774976 9157716498196308524589903303933952 7607632926179531977582815958007808 -495073188848633160325175555846569984 2413654139652763396731269107679232 4832517521433212057728168543387648 -2652905659047426525104775964393472 4396385861037293048199797368946688 470427480060629749689905311645696 -82146935307010793064822308740268032 7378229325066542522621304789532672 5856689842238341654038741308669952 -127955193692440274974875986174148608 6179437656457470524341723242430464 43472860892181107101888264798208 -749001898074419073756357790915362816 9615011756192731699613901007093760 9687419980241673640089587132923904 -987762453900013021635471772936568832 7706500788494128931245278122475520 9295404773088971239186250021732352 -751374969691393645919216001385234432 8671241038993765986682726072188928 1571642505327814250577579934220288 -814885507041528296369181789981245440 8668744044379137324932632240193536 1751793929881635608432561824464896 -689370364147033890588150083618865152 2582264372791836370929248959987712 2635119615769567806587883764056064 -57184416667589531587615740592652288 6946979265782002153658293006893056 7989722636463307355841884799893504 -41328946877811833084912766996709376 7270986679668342314861081961431040 2533166351980084397059467577917440 -656255186114790035027603012211179520 4872767468320546113278866003853312 3426267138429337823904054495936512 -307126997972329316345472282680885248 8595800935038706768236670816878592 9365983343850081364456846022148096 -600505923559331692119321773808287744 1334392769490852238584803676389376 9673585475648988423924981572829184 -506551452366547430070197463434657792 1236638219822594211251079654408192 9813884596250212099448811401773056 -446341694987530506442438549771911168 1589363490549260577010513206050816 8389817978819928217933397683601408 -253113716321316028887181101436502016 9635878165457072544137083099283456 3489318050995619560130694329925632 -612840289306378517569823747407347712 7964842827460946777272507613315072 551747696576129120901531109949440 -854690589465394364760696594123194368 6546026541149965607282718122442752 7178847898462031502212854265675776 -683257350417172201352386670487404544 6471375834531221856108227388768256 462404785370697396113740555878400 -756254029984153283181845922908733440 3128871665739756568061056640876544 3429525840937430000538441501114368 -582531693360833333511755372072796160 6805502553227960914616931709878272 7941499178281440655772655701458944 -808027360899116528872014316100911104 1567115637472571141376251325841408 639480738804458619893885951803392 -104473161175590650831564160328794112 8486599626539216157989044817494016 1797972064408276444135594548789248 -710734764323695378575209050371260416 3898189366946002140776942192820224 2284288225434225218929618354962432 -538311811896805486611324603650277376 1073235170236334941936932358193152 2281147349824885828153153589084160 -563259849889178828706894904232509440 5106414143843769934160839151976448 6948548107128718548697865909174272 -669355400557671217340464780728598528 217151177754394040531216668557312 3907277196401618946628346173194240 -849768255752211778407617894608273408 3007109375340713152276088703942656 9795246729663490316777721876709376 -894201983044720788784336550320144384 4797692075522829564421170643599360 4247037462567006350295299971350528 -487984290802775354603578765093109760 4475365550411405587436010093936640 7711320488197686631204708134420480 -434665893341999485932268260394270720 7279697681658840559231842505457664 4420757768080382061736068735041536 -75072585078773580497728136223391744 5252426742737686359386421412757504 2391249226555423648137138917081088 -71091585585747710508644109146652672 425655698840617374821436234924032 503150715960063929550368501923840 -450423025293561230793148565731409920 9225334426662339300915763031834624 9363441066314805210274648083660800 -676530848974514241316283706121388032 5525658014776277844439974023266304 4185419128325941921298924592693248 -992755220289808881387531675323334656 4718178231543154179503300552949760 1324743317008446737985928370847744 -836780508617012577590952130322104320 8680852105655838938626620880060416 219180080816991973089073048846336 -799835426455483354242552572325920768 880473156658783656649621541748736 4750716456964117270216780881592320 -373885091729642919545797720636653568 3929361850670973059699341713735680 7513283316889659058620524912443392 -597379916022278658545413719144267776 4508084726018703849854163782467584 5703633105749352194810942119215104 -135411052285639742936898376430518272 3651935984559325238821855919341568 7000321644399969945979292244508672 -891365147343777603726189071068823552 5277772296229522447865812967489536 3708139723602971828644876294029312 -212398389972263032777268959083757568 5011777144538872127503141470994432 6795931149521384231001155249897472 -368907288440678345850412412346302464 6047240657810749015104108959367168 298877948230858105384674009284608 -334380391544945066997874441827909632 1334654353559451404123857213194240 1026074892650268663402542437236736 -178041091237513348911333685438971904 1559558025655447567164965405065216 2068585369563957815013262193852416 -819397741898223501338565945220661248 3736372666092741191730176920125440 9272906782925767963460374836019200 -161565958529516311233930632731033600 4091982274092364308645064283783168 2116244103843477558207532587024384 -70500023195378948328665817911656448 665756177108264124374108633825280 2792556730541764746717937421778944 -752500020501970054580922200881102848 362455794478976459658635417485312 1927641204396085892632055786766336 -2995820323369560935093235630473216 2047904394506862518113061279105024 4052888000028313013239985041571840 -656182214224494493520697038974484480 752152450479431830074460299329536 1069828054666439339215671756062720 -711876859690393747111043872814268416 1034979782412937402582929130913792 2048623677810736006633117381033984 -390344599466950234229868766812962816 484656073907797903442237676584960 6059314137200900543247500131172352 -945528397220390009207194744910774272 497599480110541276702523420311552 7534094549819458109175664962699264 -386529077234312291278025775252504576 5300978497292712659301169404837888 1487987123673519850881197157646336 -392757568594355978616738909335322624 2924886347937596950422297558122496 9229180816106200847496473772818432 -807232263516714700686619209602433024 9784264852602116702417375092277248 9352687361112246799939579248902144 -69929729312398902250021861636177920 9982595716873874484872298356539392 9922278145016512395567530246144000 -868761937049228552426932374561882112 8448129365051198895955611563851776 6083865496273533176111592707719168 -45275207343573820182393179886059520 4939083931344652943009608179384320 2848749704138673789949993348497408 -280721708204682074686417903789539328 7057120159269424172811298382282752 3299004019060130300991409013915648 -143955628105592103770852011162992640 5226219855740900357594932530118656 5627630314944940019119859821445120 -414397802278262351194551842659893248 7032583194497864764049734638764032 8143578960054207082149141008089088 -387121549621449947767628977806508032 7940014100768463917073957509922816 395161536805979066726586400112640 -374564862383053608648956026265010176 381626919219117541421522282872832 9258025275785408524760927254347776 -460212633372536285521652124525527040 9492500389977122016730872576737280 421000118971830205987183065563136 -464097312537267244058070507086413824 1382787354962628842968418397192192 3451447169022372236768741582438400 -927515489895569695506112791319674880 2820891272731582993209397134491648 4909324459982745110841867477450752 -983039965351392321334849953436008448 3928557259278400782772246673358848 9946040151246795930375173691146240 -734198567170539831935315696546742272 5877987734876609010958504527134720 9302592179712472019458875998601216 -223297941920070474727906296641617920 73458370362945868179673893044224 1579146765999002368867192090394624 -643707636409120538377702784886636544 3966727366640801679741685547925504 348043278551192492710580044431360 -189316287181812898215999457680424960 314361673142378700999202160246784 2907578884294899691870736844062720 -980394381851821433664260247283302400 3878629542581670053326826141384704 6416007415838325724167423829999616 -178535415022795752505716122274758656 1827035533218322723977473728446464 7167923735139267221429826694938624 -135861985029658715584132328925954048 2047522954195540907389019882520576 6189108404841888129787356717776896 -789142742934519208139427550481874944 2524263658931802862579704527847424 5825652543898452325689036086706176 -278432640684731591162279015766556672 6307964039684954384294842275463168 2650006214740311350894686006935552 -528569380227344925683337210835763200 4592403078698093419372524953665536 2908873181016089633558974833885184 -645868059731531134782260202312826880 2747308130824189675115434741858304 9095222615729290239586945378287616 -268769206445126581563633487707111424 2037445145238273856676851762593792 4585759170592402866342025047834624 -384589895185238625968280317961699328 3140894170278430855773698215903232 3143718566418274475410638390689792 -455710318299273855211161563747581952 3542815412743886901420908521455616 5454018630556591683073587437109248 -78505289006770680121987704792547328 985294460005047277856376292900864 7883453110983290909075733116616704 -948883142376171579023034428426289152 1258963231327794208835070846828544 3375717157566897243816106456514560 -427835535815417745110051583749521408 4275816594535217214405751129243648 7964749047336859625624619272110080 -16643694986429189044108479011225600 995383278401770375533859063201792 355491926949411181369785493487616 -62290426485886510237397700688478208 9027089383195991538999373925974016 1208205069745684952103366743293952 -798708059862743473141785958589399040 1238164630474893847218044234891264 2791150605965787882429201812291584 -207924066246292839838145494449651712 6664595792940965157612454598934528 6199829314957359841462126477574144 -975522611947787544576895936016416768 5338534592951381796364757657190400 8793300442554887166911066910228480 -158469221454155351323441740583534592 2157351792166371337235526158647296 5395799292905349638314664979857408 -829191610578695166478842278858194944 1549554656538352326335068744187904 8096048706005169029761166877917184 -395872813056584278783408375712448512 7168529586421376723158611957645312 9904611372056418008860037832769536 -339477511347553953244568101043830784 5228072430620603528565496945311744 1617845441890336495676652093702144 -406939297425374394774873324711313408 7690695277365927322859730651578368 3167226372217492940775134379114496 -804346318092149824699569229950615552 8452158090879163328171416903221248 1042520672785110122956289564737536 -710044927735544251648936802688958464 6614703764999107096833173867200512 2410501990536587137929747583991808 -56184428187896021843242687129452544 130030710433239827060845354942464 8061885615601382771593106031640576 -622143197996461123843922255763472384 7008007943655347214888144931389440 9266590649319286183484499993559040 -68115662354870936286369684995964928 19100309098689671781515089936384 5694319015559053749334423755554816 -224544690656764149199019633218158592 2510722942551599768725568574455808 8199265130851137903244372825079808 -867679598079880131280915444256473088 8177098257003005283511299863478272 5346492306880808414966569964142592 -595119915317749651535555782907002880 1199716220651354063440396786073600 8830063711521652822779930716667904 -527897076169114581722425128042627072 1270512867150227945019319246651392 9096806259687802466065175675928576 -297421194323859527730197118953979904 2338597008054332608580181582413824 1934583056099153235977996452495360 -92118821215596424616172160429326336 3476054536469046323486388444463104 312665865140027261261786604634112 -911462841435779552238249113269829632 4445319298448144637201968619585536 5830594810724045585561353086566400 -120809442365466576524805338520616960 1964125652080176426235101458726912 2836548218845613751892125828513792 -522635209221616472240836294817611776 1561897295580345819055869768237056 7408834093076208758034027792826368 -548041641643046176226971800376967168 3967259280038009510355723121328128 3332683455382258637707870631624704 -875898369582201443724780303667953664 3013720525144258170867410427445248 6496363228463749422979276733415424 -81411792608474135862633777481121792 2812115328369723478229828822368256 7446420722694930620049182177624064 -771626019873824331312753901712703488 5311180804570808560938394618691584 9718996437477786094586330831912960 -808576112842533497509392082649743360 1046720648779436500336051614646272 6393169534868136054112383129354240 -644512990952499295599230990680064000 8516485844983346528565040479469568 9402424462783409949577662431232000 -55127967210202976315038213368446976 1699787881129990552942054496796672 5219898805383480392913393215864832 -434343347008583247097290562337767424 2133339745546532770451623140917248 6212058615622137167053428021526528 -409142481354341052880362460883714048 6006137243092592916537016236113920 3115669741007244796257547581390848 -612478108464546963301937417753198592 2622986915170790994634763105468416 2430649767352283950166521667387392 -866408007554099633986826182514966528 4560965231546033470527461836980224 9555926828298066860735373481345024 -950018583918738584779344107488149504 3230537650025028862130735265349632 7825182281107248192826786780807168 -287659287760216680610919312355491840 8878136661280903646099685341396992 3271080456388381672074641777098752 -666857968660041292891218220165365760 1191878768222957906026416631185408 2625383705440375487495132334260224 -663723394829482843773353745990025216 2997262045467459400222729733931008 2820138954848530692579994772701184 -378040406668473291278811041896595456 9263595678443599791334262654894080 5656717459003869337135260622651392 -290521674345169490151280536138547200 6843571957342456763000447674875904 1981438470016439850937759542804480 -495159857145394700254680879326035968 3889854268340774459431481260376064 2960797502986988744108162961899520 -193670551858605950418605582682423296 3307147380509405383156298451779584 70210040252932066856931862511616 -948477857565029444152680543533662208 6948747511908263150177753755549696 3801882916691031574846648514248704 -338326679771042274602766050818785280 6610046608591043352505959191674880 1945236082629100061139043803463680 -720181014855061592700701916419588096 4274093668114544874539515379712000 3410130856332355787519128177213440 -302146757750221671195187085949534208 764336798307790896121270058876928 8057667823659422667024658935578624 -429196630743881163072219209625763840 9227092837682520123476312783323136 5782137886301819194435247632547840 -845927556037882887302055558524174336 8257110838609779897917373717413888 9186021432110120660985952031735808 -51598015017093025085009883931082752 8851562640734145144314334193647616 799911590206944760336244520517632 -575548259610820303700400797210640384 8186713330150020791753445293948928 6534385796245401934508887271014400 -477935656990733163150990250090692608 8650039628201661319091984774725632 6854198470211143195482724126162944 -982224625699207240687693632305627136 4792573852040125796322736827531264 1640841598656110470648071215644672 -909411289304743715922119078210174976 6181085748541096781812222822187008 5160158563325873887221617562484736 -497194964024800976325458924616548352 915223448909332072152430475739136 1636596170922506106949123681812480 -171775115069985581970759577034031104 2101342293950212404591806717624320 8637589092615740209382874431881216 -892160190745772562008843275166810112 4476788843132199440515621940363264 2960780070774789060760099631398912 -847075473297870484043747324659236864 6032709485997125032018082235678720 4427865781171839674244074582310912 -957833255113928352840816914560188416 1393652445976721392800317770301440 2047076410247264475202410503995392 -934320385323579254129967232337313792 9931810074504900245770749823942656 3802126199722991097622134039511040 -529876477765862565130908303437594624 8371470018285406955412355461152768 7172133197840968521096227868114944 -8026666990066701403012280040292352 4577577952905770402615914984898560 2493717759075447630910797744439296 -521841350468309106559508693376827392 2630344755339202164330813330554880 9975053839457420522009760456769536 -601723088686985412530430553098289152 3630665574156135812785460484243456 2328808431166961583263181483016192 -240518560208075042076092675022389248 8218963873860872136579224245895168 6212089014496088132733570536964096 -88144798819272047481702084859920384 6686749204276900638996098566848512 6771353240002549753006794729324544 -241720953011521254838806280828616704 9375233937622817364570794272751616 9931418369253899719861625153388544 -553458793405456802351098725234900992 3389586150401583861178409670410240 2093522689753765328123081787441152 -296798978231660266457801818321715200 5753200546003083800482742787899392 6719558112081789845384613867814912 -78928309994104167436723854740815872 6707995526463868473600174783987712 6993085800329060617806698449469440 -296032231959091148892052276138475520 9675333609363854080300179097911296 9755665479620599905006236305719296 -511528033281526677962333865337946112 2305687011661905693364310333456384 3702823011711547405449408565739520 -285024290663820440200046143812403200 4198034565031352938998474616078336 9338070864343659228793120478986240 -184284108640053239201722434481815552 3173191459729991876779331278602240 7899973475201647261824830840766464 -454205165214065867356963163858796544 2892240468517210209314265924370432 6600099812767695254173983440896000 -718601984792932171045747786602512384 9777546449400847165155893038809088 6868205724731178796206692958732288 -253511296985201631972661650486460416 1288377374706041745418432223903744 601305768342324853574950264504320 -738187677958686739488833963886116864 5633499419514136569030480802873344 1427692857143459990648387383853056 -615566946026403642249625241244401664 8125812807079542404982689434173440 5772192660756933181330347069014016 -960919326340184721875271971655122944 5659595344428165483874522828374016 4051775135530053458608097155088384 -98441118835256474949054431362023424 5734375195946468428681245618077696 1458381871023458791910652627648512 -228000445055453968385800725503934464 5217615594431415687993213247815680 4831837076754362400257346105245696 -174726028745603083248108496484302848 6477614040634126225937130089086976 8548997429365970078248935423475712 -653687156839318476204625841732190208 6730964752100419853897295833595904 3877169264052161141497199645949952 -312691557726080502859655339730534400 7068928583793834005422071531700224 1145853684179612109149162310729728 -494141851242508542210438361541246976 9856802106383192730051973593694208 8663863893878168843850161110122496 -48007147837757676859475381639446528 5162031212227830888332256075579392 1551178536081094020622787725492224 -325450320800580416289896771839066112 1625230860990786421984056896913408 2591052218544670821920945840586752 -89762190565563872043411468724469760 1189532925177147210537629730734080 9971566406275637211833049720815616 -321707204739032274920637585590059008 1062664476848393689971223089381376 3190560097146999329077051938308096 -876125296257546626572214540322209792 6182683828242239342536771879567360 3118397685981042608036412766814208 -342873588474304728188349719353753600 5998823506854836699768057050955776 3515180712220452624106617565085696 -752687074972147212854801839274590208 1177823704139648654855414122283008 4935102758721605824599148527091712 -53849068500323700214761962979983360 3497137566204130727635050811097088 5493608148479508289726729674555392 -940273618700287227372181986362785792 4517141161847062954311877132288000 4953224882250217888358441620078592 -137730710637118839203617975247568896 2335197165611157617948534138470400 1389570986125519055746691330211840 -44348010263033760439551200350699520 560754511466460967201742671314944 1128338583214072846404406925590528 -281837738798436246023979455507070976 3571213956358953332182062918008832 1394422759387478431408705702461440 -712061663093908970034037326088241152 6736779446357726866703833332973568 976201452783523319384276562083840 -897238709305674023561143777868382208 1670239989163222241639906699902976 7710799708564596522269753909182464 -774251189197428479795653122640052224 1318159766055618281725569768882176 9225135884602410087870829753794560 -560111375540688368623727725823131648 2105322358256727450137714503974912 7897383309876603794516706833989632 -663945189241732220663012707692183552 4917437388825540780941332791164928 1159619618994812316900602540982272 -82316374591716954376570822281134080 94738938247413371173104926064640 6405197258614271001709808485138432 -70367491958920638137183375265366016 8714981469183664718224292025729024 672216054070738761061680191373312 -812968922614898269508544316217229312 2304628136955157873701377955332096 7295608505828736682919743107104768 -913596752496752539034774426762608640 8525059395805116145035466265067520 5281089651974123519442356612890624 -496977326088309611487254920394964992 1896418694474776889303142705922048 3686402868704499156552300097437696 -867428659106802250363420462528069632 7832651218444521667506221300580352 2699361601271334290034339979722752 -98613515681799649524611716200005632 1623454953345759723528086819438592 2982276981404753681022537393242112 -312776910868084391661217936324952064 9971857901076766403798514310053888 3234904191217842161428952269193216 -687537367619408863787966007764582400 7262017757800310815783062865969152 4495478203391935996111763305136128 -524644318033455459004504876311904256 7378984788319121183975566831779840 4871906027357193992644434279268352 -772812160336817135154749286274564096 2425785168619502504728163357032448 9428237010272182545156979315179520 -716314682211044570423437951387041792 9572072481934996407090610029199360 7405213100199198784747696602218496 -369546824976245572307022339255566336 6781918582149336403735741305192448 131020631627071296629767109869568 -635707844988251861318795844877549568 3014097771681539568357025421197312 9204671655944920803438510271889408 -703926169713124171264245987222224896 8217735307056577332630943181045760 6119497254359107388978944177864704 -47929294876220497756708293780176896 96684212562375874634106011648000 7622898048822723809586508713689088 -410737011561364848175186059267670016 7578315887874969396508067354378240 7295050450296049038050813848584192 -162741705500511061862701017237291008 3033959691975731549213218708652032 213010340085584203050751134531584 -991083791743333368488854779303297024 7236065293860414314926613999910912 4717789192677498669724702710169600 -676749696560020525034432238010236928 4526954491619734803269389152944128 7039042440523788614914395101724672 -590692245062205221157297633261256704 9469507894349998064221271487414272 9278265266947355205076748674793472 -114411992794496532510767920569122816 409059701978245095270658426798080 2402709885441481350845902786396160 -350402853256127678238304794555973632 4839500227291419944941726214389760 2034199420153371173434753875443712 -778932385490253374121150068237008896 8209213784147408125724851259310080 6957901295354810744392273664933888 -103505993123899664528620582716047360 4209941836934944888908231617806336 8711209680845565650075851440521216 -301054320496174095952656603308621824 6270255568973509092825759014191104 3549656691628540485906827743068160 -813190545120964012098321417649520640 7534987352125751856871276760006656 8629601051934030275647381130182656 -602988677903402395343666917899501568 7556750249410329070272661652766720 7665854474359011579477658972454912 -92949535721684523860359910195724288 5851019262862808076367779738943488 2486465118385503621753463837294592 -337757154338730732547182772663353344 8931146270266237656104434738921472 5975136872253598754752775690649600 -557298169524745784803222859133485056 7204889899601394643957613707919360 8692996087470479264750673552474112 -420196954664121624130209108767801344 4786782248193319192016874236805120 7500723426440371508681708671074304 -770422342131027327287976895258296320 9765824347637118068311930120962048 3496522037873139099381749029797888 -359014525557875359032733542431850496 7311756632457084982263514465828864 5506285242600023909385680013230080 -442146378107593878670469416771125248 6911105360608707536818877042262016 6997942863471940831763581651386368 -259840037417508023310930435393978368 1530355866930649585062674287296512 4790293169334890477504316179480576 -638871195176816452625603869798301696 9169081981603274072903968196919296 5395022931300044421311068003893248 -586319920166519237532259035375468544 876609242962371494077630523637760 4961418785664956734279436032016384 -712230419343504371225093936800333824 8478559122006477314335724531613696 8540772239782374008874327867392000 -407997563216563648420842973421371392 8471740181323521945691442420645888 7047830493484396510949243243986944 -335487251485881815638560600880054272 6489193610160179359181732761829376 834486249623795320564435541557248 -185309253275925936691379234127478784 1679834193189414550729388470566912 2059650736439179188853407836274688 -528654059689328965820214360512921600 2828160080708212108002756747329536 3744013435382344217567566365720576 -786414674604148375116110519206936576 191423533096009839455491179151360 573703701796371481624713237626880 -630614528798879486213225802966761472 3650238282299108421044589687734272 7847687171423182300699762528092160 -685125074627094418345122686771920896 6065849209264762765003348684832768 5512028378319302778477618640453632 -810490488372746253983861069701971968 1996655515976563484792520699805696 4141091236878513274981775960965120 -801688134354299279230576150280404992 76933915967607594176904802861056 7537755155053173698824825150111744 -425589414158632226351368941525270528 5266540605905046493443847173963776 9358039015654567711274579850690560 -56806492769032347852760517942706176 7902237830958803405245405347184640 8077480489884755697161856549388288 -255019660974236402689968837268340736 677089959930822388614120190509056 5487329950941080782077797599281152 -354138714809048144672510706905513984 2084005682545225523333082682228736 4946618078173081371308619934466048 -323727003935108095486786110658445312 4263467268809085508590499589521408 8453948042822357941504951858495488 -783315532495990642367286791624458240 7753146053708010108484984936333312 1641438445267440553672270250246144 -371331793073329176078205399464935424 7228174669866154721187577135628288 9528459004586880134026174639636480 -945236919872015091494014548078231552 5493808727592430061249713856839680 7989003113667341753872781513064448 -348149090177711019216682372000907264 9433143843253044218648311936057344 5556819641014160572358568301297664 -196124152286757468743409172205273088 4797675538314563073222829349535744 2024802616138045252297362694471680 -362840966821348206788765202983682048 7045067176026102028652792149704704 4436577323506751296768804932026368 -405528677955273851577871739304017920 7610161827138129861088471792222208 6419391830837979821439557503549440 -579480945126032446021037672793899008 1812852521539922837463911781892096 8154972570446652276065533996040192 -653833955256268049256823810829582336 1321362966801555089196595292405760 3992970858763283143660663558111232 -729989094135869576564500240437084160 2935419753060299803767744413827072 6089071439476123893197844078657536 -83172112148166080934857449767174144 6645945877667514078932198842433536 6484958134304278604085451076665344 -310479760888415799465028563226329088 4532011908197296757117763176103936 2125484689034891556238837856337920 -656704531042008868385037478076088320 3883645107198373450910076518793216 8886051355020920550525708537954304 -896509359360087254004778667626987520 6189505584210491550787925197193216 414957696503162270963607537713152 -898230384368656038468809551981314048 2684447362008318802635041598865408 6860062010226585975211376433430528 -392577915089049795346531564119916544 8456234138128981336271652911054848 2871206961418990810948139749474304 -178652613270660044490370052442292224 8922838259399214209589629182541824 8204782438721750915228850905415680 -180506490943057673822866478179811328 6294670818581212136661813467021312 6042639010873869303698764083494912 -913882075179501522286582989703872512 1079478805806888008027054370979840 5413727617649727404459076523917312 -705152227471797120613230545031135232 3962211675595434324607050750885888 9747437384159568147203935495520256 -186338218085080361649234690464284672 2069639239980044489519685005475840 568161553500736847276699279163392 -695848242398777146997913301144305664 1134628920031366048925129990209536 7868541728447130524348600475975680 -302027538927492768994696041842343936 9667017140275294352362077962633216 3259078362061012712527227521073152 -226005421248024068590744464548429824 5096644211891118713391068603219968 2869207609928779946487370880122880 -376812681197457269517808857742573568 7889414374643331593868571505065984 9421547877709652365609222457524224 -183398448412080325647833059882434560 7570517198897514828263575072538624 295855481306242601253440537493504 -102462456571864719539653907583074304 923378822260396150796493707542528 2635375160956844056278414835843072 -455985149189236920498509759031279616 379874895634949617520332345704448 6222403900233569921543501418332160 -100337462372107069640961819286700032 8691492127134891530299519161860096 2655666085528713172724205140049920 -869750892247125958840158127833219072 8447864006280722353191103181619200 7959914230355330441861046206464000 -408493835656254515900542495393579008 8857163006327861182057328203005952 5001195125441100127460256343130112 -870762992381428642101280121599033344 2443333511371995754007673173966848 2036098837470744846313159196147712 -648233447901305723239204986736869376 8337825576817166681044536604491776 4910157985825005823918286795964416 -984041013958913821911950185535111168 8491697596419596238078608618291200 2510383704204042599952367082274816 -161361972213914516129522296580734976 7467863901495938170154787591421952 4220266375146021393668676777934848 -561599496024612718211469938803081216 2825524443725213713346967168352256 1178500997344146083584134084558848 -270912152598027214325811287404052480 3386398407779284828537844848918528 3064876185417760717505580792545280 -386449325763698413641006664638267392 2178497380425318971164989444849664 47822838697237717893695466897408 -905177293453285657562365163076583424 4408875976695603123478473847341056 9116095699468120155243477760737280 -142735583161508701980766745024004096 740860987840476985015952218259456 2529241287480451987836012138070016 -323424686841568954605402134570598400 8324283394408500135415761877336064 4255115801814223271085659499003904 -558162688221260951293370365714104320 2828986738682063251411356792913920 3571658830123405297156345393315840 -733836751771523699896534379551260672 3107768747667317662538060785516544 1585029845797109018640994195734528 -118093666341106556428477697062076416 7176424480967959261910077324394496 1295458831246469483051106193899520 -652579091084441950129159142450921472 2116956820131265047607701250506752 5857338454299093544848045318864896 -762754644484173453623329844208074752 775191186839577702244157866639360 3914925533565440431201225891905536 -457976369543690050748120726836871168 4655909813108050125172808429338624 4363745986765699911863878136365056 -468413471326959251583143321070993408 6511793471799842876629462445719552 1945014552960457853914605586219008 -73632875333187335227935284229308416 646833726634576644510124093734912 7956418994463847605506072467472384 -670602356935970482682023081886613504 9312950871580699349635686127894528 6106983933122870069344016200105984 -729881521844143220222732544027656192 4954117497267414267348253788864512 3524011653336782345803175091503104 -960047851407284315311660600100126720 9874659580304375870082699459821568 2632384560382855882086688988594176 -468444644132803349693419230876139520 9983628206900638811916957187571712 3398416457528949790985840666607616 -528253644909397979988448854740566016 7893607188021749978473884863692800 5665988945024506457226865239130112 -761603538560679313113407169891401728 6084215321935969829198981477957632 8206537828697072095809892329193472 -585484073092399308044271791070248960 5937478684096848749023022433697792 9918564423472340399826835962068992 -510010050541308986672855866090192896 4848520068755523239484041128312832 3729021026071246776966785525612544 -250396643387183584589737784244174848 8890021441426229610768791819517952 9369051960915583722451040915685376 -503771127049161089572785368980258816 8560243236110286498011322194591744 9109242186055850548713106819776512 -456588067668775993405696988311191552 9829238051079377097287523769516032 5016701719741497226010620170600448 -809945224905341881205245294336278528 5220405480806378602008274385502208 7974294063311038657634402142519296 -17871412787294607402604407585505280 1323518483464471048197807617867776 3206640403154255985940934529384448 -665570018603125031210286074097041408 9681789444504657656751526342819840 3342924704087165496485123327000576 -881054169094287162435210005547319296 8673102397522621896575667023118336 8364542017486585299027253780283392 -821561661046278157383643333939691520 8897110278551777573740027978973184 164001478842691667023420920430592 -937566075731900076895617235636191232 9287185568735493851167907840524288 5312483306207592894626336392347648 -407214547433623709461299141757894656 8367848050573768052132084698841088 1786798952146225557508970770333696 -889382918835939621577017834434723840 5940807574363255224194089887989760 8050797122183659995366060124536832 -106172804195941449185609394673418240 4952599277716858526830508002770944 4296439083726224332271491095724032 -964281950919285814892584221269819392 6291514785700558829833195985305600 6052742937391326740479188586725376 -869714904930741383290417152480247808 814956446502807608238151919730688 6217858250909292588240372439711744 -725522149134450340895100074784194560 9112193673175995139159706583433216 6576895304859419168815273278963712 -820270358699694085990462980888723456 7458629467300858323687980576800768 5966534758507922145248033296613376 -117079838994038686573960806799507456 9182881218117446919890712230100992 7539875908645265621628685884850176 -417376101401596945076753127471841280 6389356932212251765305166473986048 801149307529562700315635335823360 -57080123830266452174854310540083200 1064363218355883900907528977907712 5672462135599226120557145259769856 -362065808381667477998935119958638592 3673592425148947071887985973657600 5182827651703073413877761189085184 -180860769511377195861425039335227392 7312454848589599115404145042915328 3265827101171801412586899207356416 -442926199707011992689657825082736640 4315085698625368908775102707924992 6754415220187436095148842916249600 -112804587537014759433997412286332928 4438634560762603544951239313719296 2212818043566466486194037669756928 -885612880910017711626639454414831616 1829486973291885696856835955359744 8645958265047421825378978191376384 -287110761398454284123860457438052352 7356804143397438903356248572297216 1970531488652345217223914336288768 -321828302445848976009475062184804352 3655869361432951653293964174295040 8281476628389062918044052285816832 -237353703943452388054579206690963456 2870399588473648411417198200881152 8930466054318040171640192642318336 -215895563297743464340162619805532160 2388343065245692861785066568679424 2573461139588824035286800274554880 -706077285891436442305669639648051200 1548420146135176222322587187806208 7321283984436000016543566683701248 -629398016956125182907587148931661824 8144511006243835991546156506152960 4640316410957963204746613736079360 -370436873551777735574167239855702016 344148387247272602802842593394688 2202082964828160429126727831126016 -430013181425084964445607113506422784 2291701608806347138550563078144000 2750270400257336900036768212975616 -621526084256886888289679344561815552 8802592909811361604175072493305856 3384536384581349974667087346401280 -817476669443242927102031996961947648 7921834591981269965690008533729280 8838494699425632476483810842640384 -86821109877817627346416423925710848 9955541011087327858788003330654208 4938542727686408018165258176692224 -700361334186642476902370234626736128 443693026997242458765937912840192 8311585925413406826838429454565376 -315461755313492213734031697331093504 2653466919344035330125103932375040 9130275042298841643767089508384768 -523410375331447631494946942395351040 5979418149851681652471702208118784 46604869969258852915956938702848 -276553184367989001548007188711079936 2883320960379428560182925269663744 6037111534760539643409070282506240 -323804406343208326434916404104790016 6043025041060301710728498702712832 2648951509232313451588416274694144 -745488968662306682974259044293804032 389601738328931651775267157835776 9110207514025775588662510260060160 -503099164508486084167045071755018240 725717993328479638851002122108928 1789143579417102981617187939155968 -823467924671497698594421125588975616 2287548731608046735029201467867136 8501918373552964005748740131389440 -884660320336628925224209094266585088 418306140366084770054972651864064 1700619833485388777455638313697280 -195562569003390952091696457918185472 3249966995495028498531069426925568 6805225375949619620902608488628224 -271115885876575310233804011818975232 5760327165640116536999651391307776 490637568199072689437220746035200 -999406515335554248851524193947222016 3783316518050201392912345027575808 6279453616012107727341823461425152 -344718218358349660734558944005980160 3658373203997312078992268735807488 1706810905455537516566662277496832 -578347080360235552165856587599052800 7656918278508807234663298287796224 7358478333122578029405772143656960 -846639987023274449123855799211261952 3444297577194675763138812427894784 5428882883474282081004787307905024 -381557673817617529668606224362373120 4387750040334331460001264604020736 5358731786549742041075177920397312 -569803060599462595033376840854011904 7959202719081036427514168507105280 9600246143304117942555553749270528 -980178766175134634301413147637972992 4122853257487295310203314759532544 573550138596364922437063462092800 -908696571677527413478737513541533696 4596233888746068378360033654603776 1676811753892502021282961020682240 -763278676094419351866803895345872896 2389554800094225633732138438230016 7575011526419823770898710541631488 -726086113220417688445886841214730240 2763899379754255921172292327964672 5510224385130353832793486546436096 -545477950874737960031512649718038528 3039578794544515441842897698160640 7494888762566799002300087579705344 -894821253690180869411972918479421440 2410343312535105661348919168204800 7735709015332152897462386827460608 -52056539952219593076143802812465152 5529552456327919313904485667962880 6276729580826289340290212890148864 -106573035869399087073376044385828864 2943644769168650298023730013536256 9879445118641756963171017701720064 -938183820516053564247428688219471872 2460385703052037610933407761563648 5076827766307295530639884778733568 -784341772224981552432739332017618944 2659321675710326523852884310753280 2425221186164518376530527909838848 -875275379054122760502705781970305024 7639529365966596789932526229520384 9343143080480604872705064917008384 -719483317553771640233581518178484224 9735167634597961031936434679840768 837052199355540353932435059113984 -846661133159939275374441007673245696 5261275932687662708485556304609280 9432850007494184162208392262189056 -390322629984401758281224508265201664 9133449707748575621838906071187456 9361510651471249607220589683015680 -160821172849600791520310505714483200 3057764081354051747236199270449152 120128571094612372305168344023040 -909002428002283037928973277205626880 7930339694297808430541592982454272 9977680731180410570051124142800896 -830079614959038715482473279143280640 5341373455513969172954449702813696 7080314320803124394666511046803456 -83620089015287931014198163618660352 7130474231261662141501944539119616 3044362477013173603644276882800640 -940854098433659846474070420369702912 6714393460576965347768403186679808 3856389427802032510171589510168576 -351482290024049674859192579354787840 8467929089190070936638493749673984 7589841902099726058393308133064704 -142810540051506933876530231396794368 7578896076005782157958550694920192 5486809545886188869318956451627008 -217224038844726946339190604874907648 3042573315667923269434721154629632 4918345257811013631093541380816896 -118633966081719271305274171792031744 8870679637544257708157993436053504 9493179781594845046303596927254528 -143172209154539286081441968754262016 6005082410207515580649555867205632 8456456318652848964504473097469952 -350256764864492069673868258118205440 7515749076090211428455601347231744 919410977063443402657722900938752 -493221467472249475067976737569636352 1818302014894267048566794297016320 5428275596843825432511557899649024 -144230124073082815448439476707131392 4991204713828518880146049470562304 4115065734558275114431168687112192 -785266433461718673514257800610447360 6912819406683266888495501764722688 3126941160304062116186176192774144 -328181198406928715335165832209629184 6209719072472618931788947168165888 1137966596999337116163284809023488 -812071784841839357361978051802431488 3698863191850116741483348336050176 1530942358010165362845481821011968 -400970002019641781455024248403787776 7053251994939364853333854343135232 3885078482226361049396751072493568 -193669561661358200157830717464641536 2867637812217899478659943595245568 5408901393975839720154736474718208 -784534273020410525259284520022048768 3918925383251536319452256925646848 4190128335617698328128177869684736 -500708003082667172853023708932997120 569813480198260431709895758184448 4628119979106145762291911751630848 -331132009641747204576835250742624256 1202856895157744003693508099571712 2019084701526808610997801997828096 -402748779571000971696253716754595840 2450661991913730215873748995670016 6122960481104830130492672124649472 -594255833984505906031080728111874048 2030827930373915283576175584083968 5262641046499518253441446060228608 -36070792607976905298677044407697408 4277864926869666181520810726916096 1125721680153728435877958435995648 -201888224127797644747813536097370112 9905835835678811736625090693955584 3317463614055512799431709142548480 -34612999183433364697360851907117056 6987887019742377317034143466389504 5625108846774456529235261429645312 -201549313818298377721804232264253440 3711742776207683661840180299431936 5751857750474250395031138509783040 -41712729464564534086176499705053184 3500144750084554413866310789234688 9429524259544892482847849811279872 -233725322511357853635543019749900288 4477753747373348580837146306281472 5042347292272845037978820970283008 -658400459089884407425185077136457728 5741883651995897105988352410124288 3584982962817809454370635785437184 -542602591708671208806160354020163584 4446541898492790805146840229478400 9608742577138932233722595163242496 -171545289258157953064931925107408896 1497421914355692713923453518872576 8939333164621637431571498479386624 -77602847064432429174856710558318592 4440925431629234470715988832681984 6830745051752722590745359185608704 -863186521905075611893917609730506752 5632138510237760601290731990024192 8295710816021887766129460371259392 -738438927319105339832197999247753216 3334993371785307058592359917813760 3271203491733158347909018622623744 -158804848939371670709078155010768896 5729735586918030050636166256918528 6021595318666668169143652928454656 -627308940447108132080380900381032448 7554227534784798453955496190672896 3013966749390381597778186745151488 -841880459005527784765023199537659904 6648678696502482899063176735752192 9671478170755244728187133676748800 -396015790385443959275614660810768384 5929631846314653432166742453387264 1912075454903909472141635397615616 -7809077513967188161527713410056192 2358072870534388307001908754644992 1539661653904193619949938446172160 -989478517331925315936583479747149824 4380959220532030301287632020176896 6117438125897802264419716290314240 -826459806415532636893036788670529536 6732326637659635970762250662182912 3238506408730641616902904747130880 -506030753116044251586345146039402496 1674039302782151220221426345705472 9262748278726003732432684979322880 -582478968040591638198827891585712128 561043204796142591131722398564352 9295475826619317102758238143643648 -754942886690699639263662441337192448 9508369919396834591426874777272320 364292444616499140105278482022400 -932617633840200721841980859435974656 4110806692360103594693461614264320 4301844057130163760504526449147904 -191131529432937858919621034128703488 4237763456008566202017435139178496 7224371716631451277573530868252672 -935165614832133492043671556881121280 4727431229238053999895161377652736 3990088203883803748673526846980096 -919738068571118901598429102072659968 2226254237502921073252056629772288 194066710325524186536326255869952 -274327017138902371439839174331465728 7008268981274706701910421639528448 5404490064264613565310498729099264 -618010450159731783109274477850001408 1970180249164438992414005893529600 6888653890507969293955344178872320 -304132778061134291588852062667931648 1746413075374032635490159558656000 8287263507274654372699412671496192 -272013649174198525047207629217071104 3549342635999885764304071966064640 5099578087218993186160056815583232 -13638770586023433004223125470052352 5985565799426519470517220943069184 9294915193689220638953526658072576 -263431393485450249039025064678260736 7682040681298757522691828387676160 4451912739762456983005435086766080 -15947859543985887235860266743758848 598738731816924529750788936826880 2960692843852936402875297208205312 -881193822953299019711053473993719808 1689997583460000949682924322553856 8993082806363614185892147651149824 -464450753799405725274902617361743872 4720384808993069417142287033434112 4972260643473418452580728561467392 -330150759200978194053090535391887360 6491594532843570590565010681888768 1777885126782036944020638512709632 -441172073168115846863124861284253696 2106990645634860097505919491899392 7807940779164510962857602617180160 -577594785144762660328479491014787072 2477560131925873480384338045435904 5471566394575526873660800653852672 -28655641375990712415423092502822912 1577637035350099214782936511414272 5139815153380098285816075801067520 -520581469664351740678712593590779904 8390865251539811723618609973428224 1009194803094765352554756892000256 -378879142448917521987872584498151424 2699369927459180377100546618687488 2872764269848100995254752469057536 -229552593128642872888595488853458944 7972528528064090199382088218574848 1222027603878135399628826919043072 -228855648488107555563329723645820928 399636763536465573678686589157376 5021582151176111183691038440030208 -830317311914163388553444493442940928 2139047657681271980649090968977408 380891692702598272825895413612544 -687820670947037370861522482532188160 1076431759472218084036262370476032 9212390691979568337587625881763840 -450233423939550783651253233714724864 6716065682318369153893507304259584 5261256707571174779036268316590080 -823933999787746219137396761931284480 6233176305626258481308648161148928 8308646216807784555093634867789824 -903831380612225315775964797904879616 8130138142510111234787514154745856 6355761394809965997122507790876672 -264504720822934917736506496808648704 7768130580478713437984789844983808 72231036199845982745616508256256 -7163189101326727631451390073634816 1453801877700519393728015160573952 7618506145330935322945288560181248 -20089669767782658297419500779208704 513074594848156113636380731506688 4970829609403160565647004485550080 -189541656095504746449185956723425280 9598177945759390665508896458670080 3923196547862308013832421500780544 -167575706734728337500837271874568192 8674616972800790973133107125813248 8966611308148540770376280667324416 -153588799841057979971730944596901888 219417974218655528738794831347712 8021557197813642327601865822306304 -606381034232726660855634387296845824 6619827752690300848893030303793152 2139137188775913762326475280744448 -983620406284399669482226206440947712 6949445394904138503129070395457536 8169595201345311504966107126562816 -774511294073440439979578334868668416 8553004656584774915154570121314304 9707759464981417677397628375007232 -210313148976828791707751380844281856 8396748193199402455133268419280896 6286457258612183103748152888393728 -939783430690705918815413123019702272 7959029588470662411107013589204992 3850614514720060166463081626468352 -368885757236209566659698075149271040 5097376472618184577607175340294144 8671818500827213494035064379408384 -27707362264415015178530496672956416 5589099020873539758283368807006208 7766117645204051434265079913119744 -510343662971675847887571165781164032 203921492905570606304712458240000 5631102127289279631559578590642176 -516849995383922764844243445455257600 6475159576463288587399411036848128 3390717848571873249346473938649088 -838166698211357237145434811682258944 376564289538918850150568250310656 2263733704316053230192606608097280 -164932222325561172875271690583539712 4925068160295260015756289188560896 4317032277703200646624237502595072 -759570739183413993551872387696295936 3333138039928122328513455841083392 8577282557825535592489955178315776 -644906133283753588322581128083931136 8833240441652082946504153528008704 2118824037961371421406983383678976 -871227969179355820301856321510047744 2097160899926173164186192880599040 7699713293641424567586053439881216 -923468454048576588623001198283194368 4842339481298466570366034473123840 812955338893249229551715057926144 -231167723073178242487937950554259456 7108052730201274105479748852383744 4852826653397173573736507803435008 -728857537016889977249140534897803264 5684533172678071741957682428379136 3512123244337121856544008835170304 -750985221370439447109485359515303936 4036131489214415644750523100299264 7382366741088793874628247172415488 -305742504155598997054872735491031040 1452466567162795126640715881250816 5118738325240143008652843315888128 -342537058967406107593973730568568832 1908727620454659967658474791239680 9663326698034922208993183359041536 -393269316483549493468600499131383808 1986290755995110458731269135007744 6321932420243237650031603754205184 -458644328804610128315616100987437056 3663765332011752496420480062849024 4839992582139117537949626732118016 -956879059643351400456584777410019328 7744596265674846778869302018703360 8136102198484361694396289743060992 -420614016512336621640319497519759360 518822174595006168990349220904960 3528456728394433836423887726837760 -250261745918294003098733608534278144 5611963885175947055986331288076288 5716500338963666767518736238772224 -718704559002448770101652354276261888 6654268483938557029538749015392256 6649592975895059243487787004985344 -97375374333788886744464094461427712 7623130515809149369198217405661184 396068414090557754885898082713600 -490227753779838334308718447264006144 6100049158100185798261738150297600 4462991092565165545180116010663936 -43104980333890606631335965608640512 3254274106667242146732585145860096 8999766187083293226552136206123008 -417241548980401727066340136633499648 7806309523693260377467972053106688 5746075241890356581873537312096256 -520521867843008089052581432236441600 9545940464611981821098693337546752 9287171846812527081880199270236160 -889497286192961734368966798401863680 7646823904715568664426552770953216 5640626960178605739088398553972736 -564794924875778794942225214196416512 3493078532094350719795411183206400 8740322732204495444285628107194368 -921148917923145016506336498839191552 788083232851210886601884823453696 8087051637232976620596697323536384 -446124371273454854901314996945289216 450628706181096057892822788866048 6328015158126831655400013956120576 -746420580775673615233259629103284224 7704025946396302038874842309066752 6728138166955213946323350360948736 -424738709184487442067519977111420928 8473255003802810934765309571104768 6049549622506247003280403683344384 -516471443970925474141075559839432704 1670278201508308350485136786063360 1701694734287892201968484998971392 -457550770077112917224479718153125888 9108989856911558820544887415373824 6863802097980275165212378316931072 -649925562066046274109611880833089536 5412814256232171316975122297913344 4884773191502249597416340038090752 -384011911275559143930620603373977600 6630597878485488848361102004715520 6233630391269260715957282760818688 -738537127446296086137794587592228864 1713496304757744546728992699318272 6180685982617845235446849657110528 -129313112072495009457978653257236480 8415161596612343331438623432114176 6643352646803638835821928083619840 -307274607780324217488056865825751040 7205224373150382204562600515076096 8340085681940677685172291151855616 -882759594742365801670760058358595584 6601546126829732853661391048933376 5660908433379831031258908790358016 -956872447219333355195908338137169920 963389592350088512816039254294528 5606350597414448987430135000989696 -135025423485277484017218635673108480 6687966516044825449738041124978688 6280227698019915842812859216035840 -265933484547482601889811344096493568 1532173508316697303704985197871104 4131019678666956801701693691527168 -297107772028068266314354329837895680 5698627595812142990685665228750848 8776258055300807449551791781314560 -872263649158263271501859716495048704 9966684421428823950966316309938176 2354767254915167467662228857028608 -766841427710539032812348686735507456 7270688264795811402557935908290560 7857012690125100349726507478810624 -521336057811795854181711933949870080 7067800971939183487857227724750848 9761109248759795123243825103896576 -447443069497913979269226095238447104 5807924908777810679765030102106112 4174672920324142079519637133852672 -293623422532646324962311902265868288 8028741216523109898252112587915264 4494094079380392324665235927465984 -364195041102861333043920797089923072 313356841878349985302823030489088 2776056272975240931740465800151040 -703304515505055729831937751591682048 608819609365434560891468296224768 1398065940118018678012668601696256 -536933171408515057388653025383415808 4014404976033905772542536884158464 5393500943152435298087665181655040 -249828883053194482564221145955958784 439425363863726789143364972314624 9998456605439567625979617473462272 -852569830561869753348206251558830080 829750280021447677639094024798208 7293650452141118626522198102245376 -720791218973443217926662183467352064 5171835802845320402807773074554880 5988090529582169105495778960343040 -351192014349603129041931757502332928 1085206068986981203395913241853952 4977658050607340344322094178238464 -675437260962001517655232347438579712 6786698126099362967803285534146560 2673144209842776683147968334790656 -672427185588319315643022533747277824 7912977433555376026130992393617408 9869960911176919514733610553835520 -557773238477485266971485573484642304 2666477065479042004290269997957120 3916230012343198238321104971104256 -795919573714776507428131516631220224 4202973569871778324394575080194048 5680366186768955789859518186258432 -236105918234058924023224786692866048 8455837308763280630422663021461504 8998907122414400762560509407920128 -930957303291022388194023649990148096 6283433184468176916870381439025152 3270361592156670154872428777439232 -520959411807894123670278756827660288 50721944849461818073728046596096 4381489717051355842343310637137920 -922797514985499470834376021783871488 839153390037891206442093668990976 3795759049823477849375481190678528 -308547292324155352711863843623534592 4590134518405458851657314111324160 1581753999719488993171990103719936 -519875163594375148461315720266907648 1468865437238921217785761703657472 642702392539404439299463690846208 -864750032197322276771930744580734976 6491805412232901510593308738453504 9980623646515791812541167666462720 -870616484566570888978950259778519040 9964111187808920094448493701103616 8483621768552940156741725330604032 -80577875478581935705851055352840192 5375814828460215503404794048937984 1797539859505666349933179466416128 -31608062202734003239194088158789632 7778244621587681847426292220166144 5315497810761117432919668809531392 -709444375343759715405695605157134336 5861867693792184399994775943512064 5975412476045077271673887258574848 -752631682226964641336579482718306304 3871970111939696397609636993171456 1877016229535207177999184203612160 -707042390732822055504962534399541248 2124173784431976097863678130388992 9274695566640409689500987416379392 -955171087111439619926971620651958272 8122251697027825671030321908285440 9745012968859776453351771155202048 -483559629329467360496620805510135808 609294314031719373296063530139648 3650054846755714498356222592286720 -248969962963125828387227311569633280 5388131560202208519931219207520256 3663170847881029411760779827347456 -712563685041237024380162703240462336 3877438879561109988608463465349120 3499370508415352516863830750396416 -549981694583587173128016699609579520 8514737652960660980005292981878784 7607421624665626080170459363540992 -704650829364093413674422730225614848 743291234813816132060854699950080 7722537423456744688317466599751680 -158239829475459823329961961785917440 8800994791721078109907086613676032 4903274210229090239066026706731008 -303266190329362741684810317821902848 5321499627723976820414449279041536 2650732809560047249738920544436224 -27843525657538596809659161493110784 9325749834421638527158406866796544 5875260219736411958018444680495104 -302308510987980088161218792836300800 807489400370986721705134754103296 431378843420755048793811783254016 -727576092803181158786903424840499200 9734115669201178450933230742798336 6450613734398029484744827853602816 -113392572665933437354502019159687168 8942625874939337869217231538225152 9728267126795653499882277653446656 -787189165653955846965760517365301248 5995638430617880377415009843544064 8198060274632456082559467830378496 -649056488940739621298196091286585344 2239258201961475561460272902176768 8158195145209034024608962617278464 -459548396593982488178049952828620800 7453829967548419789014787338272768 5714811365097194937854383550889984 -305669540240389891851527472684204032 9693275539415561137206208480935936 732821671454967681453658243858432 -469870782457978816616962110714281984 9754908337026956028858744143085568 1243759339318519946594128882565120 -13356239383879124951118171458240512 7013812858061984686848995942727680 2756693948371150505188523327356928 -29359569403374294175562889936502784 4287906968845564306814561289240576 9311563640588770251007735892017152 -714669431773666085244015119179972608 1034103459007091262707425186152448 2400494932653138575694053697912832 -480577734234502030811181605070045184 3381497105619646749460942383218688 7337286815744371122115482602176512 -25055582538845166213844257357168640 6021168520260616103531821255360512 6625014027128949354721753765511168 -636595210043993495021088562959351808 8161329602702242410276021992423424 1749623320516037305583465595404288 -322861125458518830583243477400682496 3789823007271480545296525339656192 7231929176496206851708119305682944 -451991800344849536786912299179835392 6216485489392522846704774875709440 6483783672302933532540276473593856 -769858969679401653753781018100236288 9274783818995685964570284886327296 8592871021701806753168560926752768 -150375856865215904330680142525366272 6890005867235239546374867470254080 3271567601185853876401514848714752 -361332608817524243317612116889829376 3440889166019150142386448027877376 4588568974380637970340802979692544 -417460366350501519853490816476512256 2623421582303383648378136127602688 5063614124420493473694207495372800 -105084355491219915637834850337030144 9823851324904883950673997548486656 9037240393247407613464112476979200 -923723605932891060028450446438825984 7248880766281919278777082205700096 8816033033454475151062211521150976 -622171118338105416870050497831108608 4673073591702573554506093945683968 6489269781544409687448601139085312 -778808484187734008417234517357494272 7833517511746168374372345866878976 9023533745657678507276886582755328 -75928602197284315129771241127280640 2345740418205576608022784792068096 8958302961092466978757826496692224 -905080366615543534324392274895568896 6219634517714462172968072020754432 9460723955332733202424751454158848 -463229007252756862230226219390992384 8582735667824563745069916487680000 4452045857414429133629131549835264 -286426758818690153458890734288502784 4911951692551401449909548811812864 6823288457849676258720968012201984 -587149276737732584730112372775059456 2348160188374849178299040614318080 4551365871276811727974396864757760 -777061478746711315915057591989829632 114653531204610448688346453508096 5652752825193289632166962800885760 -149375658144168960065710412179439616 4206877025251436501380062349623296 5658632971486257871029844762951680 -753823964470353932097238599259389952 7920743021936807549778722400763904 7163174659132452320360570252427264 -532999912808882529157764678684770304 1158093737925488856833714364088320 7789790197117977936785974207971328 -534710973103765532435847211621810176 943437368833774607788627237797888 6790135186134316755105862645710848 -703652900259629988014583782509117440 7104223783731046706312421402738688 2236040651408433916714466997698560 -72039636660597353034074289740972032 1879031814328947957044147096911872 491201799303386436073074888540160 -170949532361797559696132705896890368 975165522639734496738504783953920 4746343637397889518081746531254272 -25051704855017193429347898480394240 2346526785339792550425066223960064 8136518208472582807557947623735296 -611801983157967243439772358739492864 4787178626202540987524382011162624 5096746654392106908894830625030144 -986735400324905370093779391302598656 2204410542174059841674732334219264 6720814692308338381323466973380608 -287774112410435304341167201348222976 4915988317786023928188594735284224 3978208424976726499555466803150848 -581863596693824225079696745698426880 9761172012887233181666965962358784 4447363412433263386435214209187840 -726194766340028712826550142023761920 7683398086045463955204611864788992 7104350071903750797272487718551552 -528890089541982504370751945383608320 6626885116357895372626358297427968 3610363996252540385464681521741824 -860381407864201374745406349718323200 414575669749258549474779650326528 6695270357264484713344984927961088 -71201596335297564106710008138301440 4933190304069021555669707427676160 94627245478731144190987968970752 -575558190434283566916567127174414336 8873726134377273794644288565411840 9164548813851738359363145465593856 -818304679729483967149151728122724352 2689796670936295209415927295639552 5093623920158014244041618041602048 -483434821255382405493752739236151296 5246729252151607416300018010685440 2038114786081242439939887565111296 -250949645197002976068800915364118528 5661951206816738266003607629332480 7398793280689093247749827344728064 -455526123860277718627930424070897664 9670662548400339261598363740536832 256667731022841055073793394868224 -188568508204638454784867639329030144 6138854352046708491887594551902208 1361975399055928938638278760857600 -37275355347215265216904189511204864 2987329749799384081689539766124544 5460206581732503201416010870554624 -331102062435091598929900090427441152 2436361853342385567878807354867712 1410157662236989956735077812535296 -685886301418628443253371038790057984 6500530842257002001912632027643904 8224269613097786144601328567975936 -645835955458729647318348081531977728 5888954772541242747355311506456576 5466179603988387246269541285625856 -457213699081204351071089755057815552 3919039978845240418147918774534144 4324412488357627259415940003004416 -421883410561734212738776357973000192 4235976961048659731016901631934464 6446294103263930400933807548006400 -188750741103996495472633054861721600 4377859102380870340420421313101824 9869764409222399036767081284501504 -794414506815258210441353281893564416 6897306692066652231621210462486528 5329191421015635943055858925043712 -384144634813321658331780780774129664 3147815501259379386948118640590848 7165517229431657939119247215034368 -327522261657642768242918893390135296 271251799573509802652894977064960 441307877103664150175448087658496 -256051838372157455089988428877529088 5066544180552522182409992410234880 8373951399771616547958699520425984 -653341538260085118380927579827732480 2787821453236200787866272407748608 8962540041115344509814505249701888 -927715904309477121171562334364106752 1289013899690921100832123966717952 2234674426227633869288562243928064 -542216725211556443660019457404698624 5324475012718830609908720134520832 5186474504333703046925256660877312 -656857557890239997723396340145192960 8753119934269476782152346777944064 3081514858571466800846534409715712 -739967868805331630226586907730509824 8464291086225437986770414676738048 2043084010215548068456206172160000 -433703501930875071856985991425294336 7987748553627520688528210052251648 943039954629691416381978711162880 -718304206178011274943629198429782016 6664973819314752911396215038410752 8576243941377726542067433394405376 -194014447670021422346585816959025152 6405995737399648619463961334513664 1170454140712121620230329029623808 -527392405202090379885837291903516672 4368196561964459844810330905509888 1035125482991227800504399594258432 -890824864163210418771116888787255296 937120865305711586365624882823168 624466269016908469059219053608960 -604453449034519412808041243097432064 5514949632331716773368703347589120 686255824348417370782949951143936 -480695572882036107891157021484908544 1752642559188016588186698827956224 3986462105362557876192663323017216 -575992862252890553533753340274409472 8235467659429407770289952266387456 7199721735857875982581195497013248 -997442535207901895338509594299203584 2774506716657033280578551394861056 5309360619519882199127840000049152 -350382722012102180942249262378385408 1861681273793218843841930167582720 1189609547917856449145980223225856 -320602825281487581054690132337098752 9502989020395264384578228666236928 8607182905055144120558521528877056 -359748253725799017943386323060523008 3129111077372877599652724374241280 952543883061465388474597097078784 -162185041318619718933867056374743040 291969412040616059552343273766912 2658382687926416589694005965488128 -174520507678799853664848548796039168 9106486938427047546223431285473280 5198666221985744415480794828505088 -580037061993962501039220777170239488 6355076361860205024437931908005888 7397547487432157527600853946466304 -756149893568036233281457485850345472 9213223784935814997528648274149376 2176708602815501816104926977196032 -473984874301462072586749066384244736 4193556975820257920472400831447040 1159290835928444438084499386925056 -856010058290657437591729599271665664 169094389177002490859041973075968 271690307424824390368312030134272 -826276339332027360611904442110836736 8795802449169202467042040957894656 6742717476812136719966064877764608 -849068994864317351888797687384899584 7483123849425634558567307349590016 1991234125032408626414202522697728 -517812934269268079298646379098800128 2651497266721965965816054274850816 593987072307874004979784978792448 -690442195838618530727780747057299456 2413087587509397095743726689452032 8067195258521448462827777186332672 -874829258525832759525458655370543104 5512747924086358904002169754615808 2924002473523796430888756068745216 -735615276285829098707627867618934784 4254989125249472649126816254001152 3352695498759433258611353050939392 -623736600600148138013407736705843200 104201998710195276026906276790272 5766773527887399290594546398789632 -860068668138325079898436809124741120 4749336204351412666414823599243264 6520881985843215855717539217670144 -283999868168359659721037094762577920 7157863814251304718986942810685440 3428441048169242917160171021008896 -933667738495872938604058393154945024 9217677642038418304827916908756992 7189804849162859006044443324186624 -520467715572119381745719516176842752 9037518767830216600776979861471232 3841602393082543907193706772430848 -289136167480999243613444248103288832 4807211828947410411416290263564288 8334320164973942567851104950812672 -343976278139445667675639254609821696 8790655727175239339608528287432704 5339265132895825912104596650590208 -790818911006135848443564848813441024 1076232627917294186505891393568768 9708047033128301203830564483760128 -194897572824323030609553817413353472 3199216196027575474622970778877952 2342382308055209689063954826919936 -551897191282313596505299588397137920 8209988883879613500464882956369920 4237021358571224429745367599284224 -335033156298427999346971649203240960 6154768671589032538530428816982016 2609731330730992109063892432322560 -802467547875461337260054492978610176 5209890123414373213772427594563584 9519071863806586851669131518803968 -470114988321254874479875943840088064 1319899529088668311285307596079104 8870795448912894934119036940713984 -294814988925770474904269367357210624 7710954601102763563486422153297920 1154722203652064868377763772366848 -211942992515281197367885919529467904 1619284195787180553192187774369792 6367482374443310074593236563787776 -900429586183119953569507702650961920 1365224272562770412210699460673536 6357212731633127581359877092540416 -909365372079703857780564063105843200 1807299030668193087730893084164096 4547443522313104632406619614871552 -131074936308241243068736824435277824 7496438575243361837182185367404544 3013657777883084623867286525050880 -178763152319054325701857619971407872 7699646168369528174094175852036096 8061757620459912184508463464841216 -43539689107663619293066050802810880 7846246148690278776251123255738368 3955044643846512962635063768383488 -113597575398854793524025571785310208 982793055095378254130137459064832 3716128699125968260126299505295360 -940226224844464228640121501079568384 3818580904697912202810983735885824 2198821270507109372936118406742016 -575389507950343418615418301351723008 4961651723926539586412987686060032 6267186469871412672401391984050176 -903501713646131444838565826288156672 8494549138605464561191506445074432 2571368721794185837141863281197056 -989917758759365682971171876564369408 4699630044951028884289701235654656 7355069891266936103643213115424768 -841848875521679731674653290689200128 1698174651866561875232732586442752 8337411381256111389026027854364672 -599774454738092779637277508797202432 4307408437773297487343484795879424 864234346125291530669096718827520 -271796016757722256913687403070226432 315072461439772762291005747625984 2187400613818014748489850755743744 -337175039868428988082896084846772224 3180640742117173204406158651031552 5519835216956949176059122444926976 -701648186695369186408629707592433664 8977360061263433933219592098807808 8037432850601989213682900905492480 -572935153946629063163478904068374528 2558955646344548355388569074794496 4180456738327517127834767498149888 -775970634364283505933213009665064960 789816207846548525489901671546880 9911760075140995276202973004300288 -468647532900215611069898967633362944 3631324285390346536885596461203456 1737782110061777774898406615941120 -511958344512909639985361766966099968 1315167995804864271727398192414720 7874629432232242147256698056736768 -940272919875262865848073107235930112 7504185371394317755133767402389504 1441742068030343060663222671507456 -42169316175440764582568376716492800 8998502639238958118617123928408064 2955344996296809231328638161387520 -361223599305252250379340307572457472 941933284173522604550318783987712 9734432758084345991701861196890112 -711034237641162855827692010927554560 8932384053605699828571241569058816 9200555987181161331310936629182464 -266456138437605014611646699897094144 6997252327328657545995921743937536 2574198100701813315123764701167616 -8664721984707817535143711134973952 5833703522182845316505539899817984 4319158683388770164752040461336576 -438545357283148446344976372726759424 2468555917404040183941822121246720 8184914880147934285557397672951808 -786804275858986930137268523271979008 9167122552479329107709597252059136 5428562589309567941543678967808000 -948845755099343205069800584186429440 5654010453824351732385006477115392 851191598297119376954040940232704 -896520379756653596198568812844417024 7491516697106197483354675820363776 4631210364953015269364390644678656 -42211372436957570968892249066176512 5735873465799437634265020962439168 5607110389527170485981375518212096 -366458350707068649787449415173144576 8589218091800712406037977712558080 8847008066569786724224221887594496 -548313923964236329428177838172798976 3848906404725036604544185551290368 4660340639712171532556763450572800 -221026032902266940851389706084024320 5722080980538034572576996257169408 9444807609498851637829938549096448 -119859285139934792168630760266268672 5795080297751254246714916426743808 9757024965914267571055195290861568 -574100431365158061135690504790343680 7606333569912272851698229257961472 8478532287574216121850165557460992 -802002350710958419520145981700046848 2066946934610536743038799044411392 9853832097204781817059596126126080 -408012317295785873802178874625228800 6996627668398024334426008727846912 2523671331522126279754875184087040 -844531279969000762080248464953835520 5222795565921360601028860212936704 8033362848494306666142034657542144 -994156104462953689035461135154806784 6570409084658515843810208887341056 1772968919208815042723156378779648 -684172258721840353189822180397940736 2512211469338839156532897564852224 577465688760920479524187306721280 -510557595290782376029166037326888960 922522763218313062911574317989888 7511786408659165544707150139359232 -591547040416602899919069155466149888 2380504923572926458709189574262784 1692854688751410382694643620904960 -961564299540977149960538062594244608 9215573562344896707659146228400128 6324835717117087840487139713220608 -375803177787383560849511179266031616 6333279017775179484757373164191744 7195727232756320767256891184119808 -173606741547637775074514406618431488 2318350218093233885380548491214848 4944344039262215359848841127919616 -370991129940864794205812623665004544 4690224382112467550004623500640256 25882263972929711459804909666304 -914160780223153148051382596660101120 2383534858622386049349755804319744 2565099469014516069078018469920768 -219596036678512013257725865824878592 7522030138064517514388436749910016 5744024312239821566563839247384576 -806053003999771006281551785100312576 8423904738178089213381641261547520 8584459581289516462734201248022528 -786890814114873826933722865784061952 2337515876424795835894105286639616 9336473189900830016333374520557568 -831599801380594512505739838067048448 3743564745474460935758176787103744 3310865524558268323986118721667072 -327703706786279521781462628669849600 260125405424463491822295168581632 9415862099621250067585327458942976 -97246211032235428277139834021085184 9008217370281778981923345588551680 4545279000979410407622325668151296 -814941162018595377232638452692942848 7847722764929304209847677370761216 1596624506577632123680709721194496 -528665150321411462191516596477886464 2752231293805544394761957395136512 521965305226552512536799527043072 -992169961316121440579460598761259008 8328572110899522862427424405061632 707024955063827972909273465225216 -36935274189066350265462539012800512 5987109135679133713948372581220352 3670780203624697506945622402400256 -218050076856235444666340169685663744 1923696007566381778696609338490880 8994382242461570202542456493309952 -347424823729892276580755266508685312 7086519834620727174313275427913728 4960892905044246095611866204078080 -886565326012701294591734673563451392 5711575330875026462954356006191104 3552468196280716073897751054647296 -857342395876231822693227857430183936 1090496285687609514657942956146688 9750526713892897732081724713598976 -38198750354782329590471820415336448 5466856346087031500517012674707456 7118834278403253966983359358828544 -557369374792038893977149610536206336 5520311237147541812214430020141056 1517424715174198454299379971915776 -408064408506504670892195410268389376 9065656742048668119201861228036096 5181895255510540059946910190927872 -237945932648626675731334931570229248 7566803204128721984458175843139584 9097450507551680998126894459125760 -681564062338838282344228731425390592 9382614421501865978348706325331968 4158459832853966499439468211077120 -703949826693264176399051049442213888 444517626395222459848246050160640 8057585604080643007441076907671552 -997440362656778630094952651072471040 9959800433968520704530492835233792 6348199796426577672332579790913536 -810521970185926974525813798704513024 8879403523313397049798519435558912 1031369109731013518830391902863360 -645819725663532704692716769390886912 4985427383010532651954708250886144 1608154146604309439398666387324928 -409169177637060396885115332699619328 1596618961942555870987973438734336 8666876653073784799553975847223296 -23893092460909405619672971323899904 2718056136244564559839397431738368 4642843330118973398279920140943360 -614004527297136165021988447838011392 4458033623974292576501283208298496 8605876077610629667509440564166656 -726054870949189004964896719476097024 1985382426495920544730060578357248 6081624599400247319392366102577152 -246823110146317882130614986410557440 7495730035863349184902297695551488 7745974900306719354359170740518912 -891276717944028543700947566734606336 3780913071776594991967719911325696 1085865119462657440393734406537216 -41880785043936577874200917461434368 4282834989148296040903191690215424 9723108271627651122054969092472832 -990702101812161114901080310791798784 7576617901628696113679271609761792 7904365205218189596886676734476288 -977821243933577888463743851132092416 256932945549974730698004753285120 7909421708477341475109540714250240 -573925504194827146060585892487102464 7376956703482171045658450984960000 973961854568280054416804962893824 -798130461020868091618207962413137920 3860754163724917565373422931804160 3504154758856128796915039691866112 -788658948972256609124660520587100160 5835132359538716286969016483840000 6183675054198937578521231544549376 -104009751029211353300357214638178304 9025476895379925689967375273689088 3470800792860421838842878159224832 -889584772010655673878614658338783232 1557339582151286473912576349569024 6838226159048975903578958185103360 -686131886077095745751442329039798272 6845562601961800214390227473530880 241215924664941237105327742124032 -922327953238437829926907624535621632 8136304495327489614255940867981312 8161643544767671218267021715177472 -190373804452258664004558606672330752 5967773241853193206782511126937600 1694061674063436559191944921612288 -425250070930809023504804791871078400 5771017822729179847399297551171584 6346206262796062467477371390787584 -431494981627346595251018226309529600 972628680832923618753639576764416 9237963652911760801482377418244096 -230026872160525439000134557120856064 9922473025937789856768388581294080 8566021474141855060313485676118016 -811672581090927166043420423618560000 2692935663049209234652602266812416 2115851829016159144726262230024192 -326970115864185225926671070947966976 3794623863989782860942716239347712 1573993945211695222926410294231040 -189314782020562963699598894158577664 5066915243809149030546956315787264 5575811164824805346626161122213888 -647759577862487230635216421714395136 2605038855645626496515031485644800 9100823728875196559291574275538944 -865883739322168859503201221338988544 3419259969776714760768082956779520 1366669340169758291192154633011200 -232133224792529939778406883195355136 9701139230676398366948631343267840 9091863546162345665313293291487232 -827044359198981328445486714849329152 6378308746500430430889713046913024 1547222171598752882588917621063680 -926211185827532876823485981256581120 9201380216657559514485364950564864 7172987773988323213437927300268032 -690685570990796329800194374326288384 4713182547554781231221893773656064 4202875207581604140283107255255040 -96242332608939470727365250089222144 1686046401400180460234221713096704 7706909227555718867835606446112768 -241235825794192060459615368329035776 4128472332428375615658638404747264 9963161273468664730732178662490112 -61285141812000337803693586059886592 6632960730014721742303004326887424 3962848562792869572358687432900608 -530036301364329295498503781443698688 2227170438781065734372526577942528 4738372034175072531980768444940288 -63943945409723723534146013514170368 5776145090876002872376941892075520 2100869987101264535641564731408384 -249734140881673466412227076680581120 9264715116062772221909597306224640 8553279987151632584010976743915520 -406169911953395189090443853924663296 8158729095659234990161803398348800 2394848400052271496924254481416192 -862897238882948598658166354480201728 5265814468546616669995030229811200 3277342202654064438501880964841472 -530710367905551035188415395012804608 9515853396882723854613857045577728 6803937538786115488624556602556416 -49111450159767032072406768489070592 8368978356441467173001810677858304 4775336741921962053510979414654976 -494949657899072117409047766850600960 7763373608117653208688132102291456 3166698760052724936644472239816704 -47556092257819085373277906323636224 9506683545898862104253752143773696 1526043495109419607984465619451904 -622252760037773329537551890378653696 2175886967602776675058921687220224 2884294114030140191101525719777280 -896931636431884544786504505960169472 8622974244508099242176441940443136 5708980936439217160777593423659008 -129756274268816511374967461438816256 6053995007573461659108446763483136 7500604239523342224014949486690304 -929038254941045559779210657232060416 3678057216516921590199438102495232 8703189503641023102446949351030784 -137942856852910207376209487866101760 3318111619755003909065489663393792 5691690728481057833855120979263488 -534313058127279605865910298296188928 4849619289557313146271626657005568 6570200259188444875986740208205824 -365822423943170251383924249560350720 5186900076203382333059615986548736 265102636423827500226743770284032 -370149090780757387361252324711333888 2071491963759703230961483771805696 8650468891890107509159109064654848 -365517154807809074039578801138040832 1859680632802203685252112219897856 128898534882967962900838689538048 -629514805135857716058148108905742336 6392400186978781818260119734976512 4969512870074284071552138879172608 -511941266981373364126732297292480512 3793140643949727669931768427839488 7411200332519472555755300112564224 -948534545374784835250540829579673600 6266623010894579716777718600171520 5679642192317718657045761399717888 -266925720579787308439259303322320896 7576728008700862440725006092599296 14371654064617792023738751909888 -760408204129481383514044931518758912 3156540220516231336987680237944832 5471725218424551491107400288567296 -387636500439383624711597906970279936 3378132169042425353365450009870336 5549496075775151923145385900507136 -559440799000159217095490685403922432 4096883786512189703522461901914112 8351216024266846876289373724213248 -529701929228512267412479719648526336 7544310755548178496594307683713024 8493135308016753031677760751271936 -17959443624137941671799336455897088 5541533322218333926066833426743296 5197284425118079238460792559894528 -188712962469217318600347687902511104 2540108033260318594892249419481088 97629368208886471378734120173568 -119568323975306284982381656051548160 860737929795606809175288455364608 1228397874571884283377011463815168 -580372571858338375461645632667648000 7136856148436241276097400334712832 7638509745904624648874216698937344 -157989756483706096743922567131168768 7690162978629086832004260039753728 2321599918982961666989197765902336 -508062728987166585682512175603646464 6206266451512237073030977868005376 784668498808303146760895004147712 -964854867136694247308207004437184512 1759792883305838313447185692229632 3030958051282172031852300113805312 -27113385791095192509417529238618112 333372747497124295364259048587264 700178143753749583534727400259584 -633382019711372337123055366867779584 5050884569501358779649507939319808 6980931895868620904267779657433088 -591011861128923988976209562500595712 9050590684943555519895559206862848 7115154558563863643660827953725440 -555651330500435425506505998095876096 7966833673183239967416017016061952 5372774060498956573486305574387712 -5092401762736883370165278078926848 4944926890725956960829498191773696 4291522189961045911954267937177600 -871563334127751642949722357614247936 2481041679626916264454627912581120 6952263951661406582275516414296064 -10357448483847026305430145688666112 5261362048240571728591472184786944 4716011321705348850272092240740352 -207395400311712688171881684017348608 1255777355335656318541655015686144 1813601106162654006320520769830912 -436270081710443705793264028515041280 8727450611315160951942305124712448 3540528416328507761136568381734912 -654932099542771734733412682755473408 1555915721458374214352758594600960 1112665032270730009446536158642176 -318361527490333368181130679879204864 962343469388292172526535695138816 2019153329612111061637320010629120 -7066511770498998504549094860521472 8307104868457585743149520440524800 6327841514799744965709483059707904 -702344841808880332237081685052620800 7069831689428948466537331880361984 6847556422630786331515061580857344 -559311981516431967616716594292457472 1492358666104581865730460595781632 5684405478388924437190595544350720 -322663876552990097901676147804995584 6468183523556688161052013059112960 1048056596358537421263504783966208 -910060740408664699959195262221549568 1564550624186313239767626102603776 7094918093454463497153144038621184 -475983489635575518167830816356302848 9031773013271974108448478294179840 912104797938465848296975221391360 -19476939930820311806837007153364992 7113436294139974650563141526618112 7690706495617356728305700569088000 -192063019785452774655852231373357056 6923182722159133749593662877073408 3178956734152222451046007162535936 -489865648388602246444676725069578240 3849410039184396789479197546381312 9355106882632189679720022337912832 -525739195285589752127277650856116224 1030054121864871619457474847834112 5579336538575266866096920353308672 -829309604877303593583928367195881472 572290390029197628720457862610944 1223165938133769178391914683039744 -298786185646331819051670330052444160 3579630235295685838800185462882304 1700520481098520921249529890603008 -704804994390496065260433975206215680 5657819811361334963982032766500864 9673230415361038395121810813222912 -13774382525174411113717127889027072 9684049234961994161435299838689280 7813493155614882339363262425989120 -369486851117003900888000657314807808 6950066530834637898726685190127616 3794443606100230220390214775341056 -198884501706256360982691081174908928 3832463966406057316158991736242176 3776295776374566266268770814132224 -26500900245968240345300860324020224 7507122194041182144170477278461952 1333247625674627917647318156836864 -589522632666651905482987412022886400 6415652909708640867105400548229120 3374395773107501914375708483780608 -607203542673045288537941550112440320 5728964022395612821976303737503744 8429665143395759537072102740852736 -969307939220257140003164093325246464 9699216795070194241959021848297472 8487293297290584999347969106903040 -706701545568952121695577811745505280 5273471859531796141415390628544512 6450103006392019698510503224541184 -311666134603213864176040455906000896 650934869063572626120485925552128 9671886199901910558736760598167552 -263296898719477854183160850809880576 3521228449145330825611697224417280 2709503577420069606910454090694656 -848917996726296899985050531583229952 7661212062254926080247560933474304 4941522479930549037164458149937152 -336744762222332501296881911375855616 8878367223248026841590432069058560 1576123783305262302279074792341504 -810695912679025346725291766122020864 4453805396669821564156098620948480 8912646720620271454682969217695744 -113630756054593426968227543582244864 1625564052747994605223612971483136 509224413836150516679377051189248 -423667338011302295058839344705961984 866534402846971646444732388737024 1253780022427974596504732620029952 -467651472554617845300367481305563136 3865206542589407126015447960387584 227084706063666313205661887889408 -984250580475717160807006818573221888 4388881623337195741696009191817216 76186966191972442637844556546048 -304027291829905466890452851037831168 1919531153803022323785928382873600 1594119167304692229427947909414912 -962067891974928613802822229305589760 7071960713953480454980193172324352 2876458505260814508364058652049408 -234552994040050974352624338413289472 1650618145171229371662069242265600 2324516105740280696229186961932288 -653128811145045987060671482565754880 8897933094202707914574193538105344 6120272576717137195210868434927616 -957207156427758347352451021793132544 7979835437874992803705513450668032 2478542454565370222236371917996032 -706934376023004744440356341066760192 1903128404619032248232694119399424 360379869398637302633013759180800 -384350586648313416189022492967305216 8558860808306070823398784983105536 7616070045161170571204971160666112 -157622689820749838150891066332545024 6934418395997461736758431465865216 2177146068367128815644787311902720 -791174476968877648917016332648579072 3059992461317864886181760572850176 2366886764778152734974092899254272 -801890426112030702087989714640437248 7410186000734218313135405813202944 5982429550477234634340955657863168 -703322918156312128007846889932193792 5642431168284357946495694834499584 8803753540827139082709392806641664 -343578672170296289750402865643388928 6107750915479202571383308449480704 556206174233960610380598164324352 -841499256887894501992337506555658240 6820628926044379077010337411629056 4097938059134174126154087011450880 -385585608798202109891188976200450048 2950490246483955718211102396383232 7710933142486945247502756567056384 -857948862171945937831852318727864320 2926961112498409938358466135457792 9790386335466187872094752205701120 -749518923302947929681814767278227456 9007725248821345472619428322476032 1464635657970465003689289936011264 -293570988119432529205508969771040768 5210835645930053937409811275579392 6997896564431098731688559049179136 -379492757442580684654736416857653248 7947738721431529847933442912681984 3678396570031904441906711578542080 -686943253435063958298149457955389440 2654438580942780267877778497470464 9825148215889746646260282418003968 -835575440573798461873667935400099840 2786385930644405129282620965781504 9530763812293279937880292308549632 -100475139511439287413343063319248896 2667769114887050918778457324257280 5240101449972368494194026098982912 -155414859147414710006028675118530560 9309318809352212947301234005508096 7667024865306781946059561837264896 -799913768000691220541158904205148160 7092595660141942934955741753114624 4505382140291465625278700945670144 -195836899964716946467116970059759616 6055803946745252722455666906628096 7084692471691828654088323394961408 -911203881798217459300720261912854528 5670818496700408266107470900887552 7314219187980291099189181247651840 -548046891831918525220959148683821056 9322029120684393701769055777587200 6586572336273866020098888528035840 -50101891038602088087866717218275328 9685666286473680456342535875330048 5936599112519689554677429218312192 -214453776541814030418033344925138944 4620509455133925356274899105087488 9410240531770071474039603549175808 -653473869525088701664731354619707392 9126107147571943588235787074797568 8887313441493405270304989558865920 -714949331591227516395156594730467328 228559022786517596154783636389888 7687254583820024217965929334571008 -281924844153533090419412642637545472 187244742492882010858600339079168 6247441507651533229757240103141376 -506152594883073846950280488145649664 187232357617099487442023976271872 7342276899842260931585818562134016 -496811029461789680248393602177171456 5872876032311823662290646071246848 9540808202935935285563997059809280 -213990929964505268178760296648671232 9397379025823318323802566278774784 9922668170926450012526434010005504 -211479172605706128395122075813019648 4625625805881642258124129211252736 1919150174005419218062767711846400 -395879708877739165796725648389046272 5014866047491014247838716937633792 5613666384519050132725075065962496 -970864434080632456465616238926626816 3345053822256246169280884433223680 1145810746873310130077489640243200 -715513577999263946585065432778014720 2314638762332708638737118514905088 626884439675814516747817845784576 -914450311982063137624123669561212928 6477025468007648638157394743918592 1361673871098186010560526674821120 -570346117015649320494045949461528576 3267405360156632032594965961900032 2818283550869674853190115354738688 -803617699642065689919045552266280960 745453286208502015849443906027520 3726752501115341001419924525023232 -38661189623966844454505640116617216 9734340526871830747508668448636928 3417752306860921623093577517105152 -410665321850412383557304934255820800 9954519980252297134460756501200896 9922748499299775066350965621784576 -238297796829059112994734596939579392 1773382600448957892135973220777984 2378791770898098800477714048352256 -811829321371370195721152278829203456 9539415841724481724246007643897856 4937848108279899732551721698721792 -340402125503902992293852058136608768 6628404135663635851618610376081408 9082932175022732896017022407671808 -744082175960570870637611245115539456 607520945394958902907775985123328 922224988439569216441412225073152 -436342260005067005180936987223261184 7498022018098924324906686060953600 6739215568050369769946827508940800 -486614506744886708567678422934880256 896019931288000886932942226456576 3222290988011761530263779844030464 -884419479038378186724667373119340544 1666153459004512797560097768210432 3651124434706207425709881075695616 -426426508912000924440967605362098176 8049149168238549367924328052555776 5397431563048583612215947595612160 -507316055838204431716799066014744576 8683983287350031114994799867854848 1352700830630196972473391194832896 -487255756998117404141998020740775936 7482813052729730958379662700445696 9725293732755625553867874079080448 -831743722436185872905046768637444096 2721766307160898575972685846675456 5916007653139182747162862103298048 -482696370732235179224668214208233472 8343878279643565958853817463209984 3603465912291075632329550219706368 -95605493088264601991757173555724288 7512325021106149280567787939430400 409415462272004589602252490014720 -464745340525616726481257717154447360 3025312938611599672246322985959424 5278671163596629461840403068092416 -110949188608517431545078674320523264 4465751837282665425081197001703424 1929146256181941188524745087254528 -935954316482276987468938366066622464 1379790216604456873231971778560000 5470243427472029460998168569184256 -484898528118660155713747236516003840 3620335919539384909539896905957376 1143497731198903648733393131143168 -660055982028540977717207317096693760 9138852565873024793689732004446208 3125331142427005184610634584555520 -269527199642901166857060616845131776 7965095067617302308245982416994304 1940829089487043677868035940548608 -15876272739027990703647347944980480 2358076738880814080349887262621696 4618681125079423687510754301313024 -128599885646231361087794693573443584 3931797605494445854063978826694656 7483235302702225014373948801941504 -556526536355984111565089015471276032 3082378519220296937967413756952576 532744893153823484089083721940992 -686710553792017399919267198739152896 5645966717986563048647921193975808 4721742054078382068123626226319360 -290894815473272891818137974913105920 2488314391286699656533939723436032 8073617563232627082922052210917376 -162193898824089187447180759431905280 6402209755863428371809730734063616 4230002230219806538412717519142912 -376185513798500327152504793997508608 1737225830567115882320318120853504 72982314835624358791223183409152 -786970467589636177700180081445437440 9230641894390892191957597347119104 7611360435663515263329010978914304 -337732376350336691424777690605944832 6643669691192840007375443147620352 568869161091875215243338059874304 -914839690720190877600769607714471936 6702097158964956041587566193934336 3868902162595686277889850238566400 -226748768937262438241294820971642880 297830901189213622524638549508096 7989745387632342972020814900101120 -734268181861024884532219598090534912 6916432458712064011417811658211328 879010342173421450760933911560192 -589328798006284399400434344497512448 3967663136933514143864728871501824 2110206377104121416337787990310912 -226539703119227739064963749889703936 9747247292612150587049055602343936 5499361615155313765255681411121152 -192087266714994830589121719001153536 7049118705226097686481903600795648 800717871702019454310463083380736 -80984731081283430571411654553108480 1717136143672422333934026134388736 9986329162437394713297726631575552 -545863976248130204969367913940123648 705503247849866488011638920183808 5914106694619263524745260293947392 -74926440556595473123048731554349056 83329816080124330465346178777088 896302472017146356190692593631232 -509553410925093368686080742821724160 9397083701064905444954064610656256 7342049894607800574913403968028672 -161512472573433249327682629427789824 8520064671233321716760010062561280 9127065122584451125329855214780416 -237884399198115523981920194497871872 5957536830068529371327457671512064 9635448766682524594798535192346624 -855018885916320097288565618466881536 1078376849550495990670498639904768 9130354105746656443335225771032576 -903135153506895020741944179945373696 185317426920681585960387644227584 7126851519050246827017382779682816 -720136863948088493094239304043986944 4390122753149134013641405306503168 7742924951147027036237277073244160 -323669187446948053469604503126802432 3838851416006063273255707437170688 9723988305322727726032630507896832 -659925445451811611127082335831326720 7528433432576008007992074152443904 7922647346847882983237531251769344 -227090085354626200325669574607372288 9626326722209523200588872379531264 6940174332612275553283087943073792 -184623228276097720316303166761074688 1287331155047283426479437263142912 9391172996236592458879595848925184 -978207648854759026530532613433589760 1271208644023850330404815863021568 8913716135095518230457253441306624 -424056038929398448790545343920996352 4586032849445900636961813804613632 1228586193133688520846513725767680 -100543179270353814283852043530534912 9836707313844263570701525425586176 6923052686912256733273625515261952 -126036613531013757536919136902316032 6844210410317730159012053816180736 9496627920138513416161812822360064 -638653848307612507578273853209575424 2261453122964391800721080271765504 4008154150219741847079551215075328 -132615427260009844407019314922651648 9512398593021808025894322532515840 853790927954335323922255080062976 -553281054359400485370170002987024384 1700916028672443402654593654456320 9188477492738909294029321350938624 -684254016502085480973219005699457024 174873084669877056499029010022400 8184321157383252123525005390643200 -587477759969947138838442211299819520 5662418836406839487236480025231360 276402411436777431397815235379200 -19510592449924762146159209549398016 2864756938033057458430674405949440 9782641240179170708753058640166912 -917834682307257499253566054112165888 4448012432804738461041399085137920 9366809291056684543046436679319552 -589537644532811265724904455675052032 3659886709348091745610850705080320 9771967470301279487007093881307136 -420333407439593016169143352638308352 5373097429359740642257078518284288 3827185245838093186717672856879104 -536068245098939729917706512898195456 6119284006384343170223340299223040 2739682552538429011715479620812800 -127750109988908337250079974304514048 5263519098397009473289767259996160 8004381740453970123130601207758848 -497165316775327576332192226767536128 567461925146953488196617262596096 9321020043443331793506056617852928 -683359143755986227342599653970411520 4828634950592429219265590838951936 9508077043054551902071401073344512 -967276736244750610627734610749947904 1325028584034955587844378785218560 9730565645367199775148239587639296 -234583155788330995633999001629491200 6806316534630943252877412954800128 7310551315724683791886600290435072 -310236001438565579365795538617237504 4414409005153033376763769973112832 2953213727511508933521565489823744 -357123610406227468486409241101336576 3499138127364448130768018161532928 4192895171419514715699524275273728 -834106449021554054372272661120155648 404668311203168849567250024235008 3183893043375400040275661828390912 -95648245414798055529151372608929792 3370384350510458536065212212051968 9053655752985420820526168767725568 -252100122835925357793264716207882240 3277409258856703593440127102222336 6743898702275904753996325158125568 -513971551985024184730722647073095680 6926768783146688616334808796102656 7000825140720812771503279821553664 -415184783920595748884115471479078912 732914522842594635718423698472960 3328356973246015072112800312590336 -459662266012243343582918580490993664 1705513162512496778914504317599744 5748229625661450463362810166378496 -478248619073061011062139448889180160 4381284299413993007558068195557376 3962718753224232011209391128707072 -650995154340871183986284207055831040 4329894139757683100606036537507840 5485999352998933107797722358874112 -351943519339283025196328767287459840 1437543660866267261148893213097984 4398828600344815196601353699852288 -482775691739596718894426443290247168 4741819069058822469054092294488064 2529909904494199029079878037143552 -45475661937850318648641959015481344 6529704358227194947293379788013568 4613213126533077377054734886633472 -669558002092871274158210812129312768 2276694416802130519309228779241472 2375328880341426980528387019243520 -735752808509181209365218071129620480 7833367110781950669719939665887232 4948719262750605779340283445510144 -593449699485232925303094702531149824 2907740170373905715936789811691520 9232048829483491717550673030545408 -194638422570396421244077953150615552 5119784012263512866201486816706560 3360465795235815420486568307064832 -206641512529556184487051422670520320 2222553189477204300132513407303680 5746172115180975637733413929091072 -900748003640854069704818955210719232 2532884495838696398075082685022208 9366703675558467552564964239605760 -312779592397999070807734624586825728 1809966469589173808729134918008832 9828508258687119804744805843468288 -768206612714319450093623166782930944 7024298048363105153168624450535424 194000232856441793253684035977216 -440696948854965619158857894611386368 115435586344947723043094686334976 6791049863076179513419024606167040 -145785136012528104447975610726219776 5212355739819795737038324397768704 5007377469017503878458366763204608 -752234338184763877597761696287424512 1746812546549787199900784063938560 9294200007462424808557653253947392 -32470617064798991603645327519776768 9876926054393437293564331884019712 5985590742653332974772757142175744 -577845179563887096835570684647178240 2514508013821824387972385325711360 7325652277091547910563732238893056 -124356057881969731474229370736869376 1648063774455257840485965833961472 5733790416492332787102674155732992 -499366514934460085922490413247102976 4850105943160953134660809740255232 4081832917358506748817754921369600 -973201492915698567708417835780800512 5053347834187613668532620483362816 8203407380741218984276922860568576 -255432905714113282263734825372352512 3733612742653301895963269784403968 9271738929382063983566244536123392 -273414420476386249609114765993443328 7080126178768979026612222328569856 5614484435371410288930273636646912 -871895552422626177239790186561273856 6964310343313352722666747603189760 7696392626761077918081527261954048 -275090283680677377872531231023824896 4059582809259609928067943273332736 5338514824438063735700394455597056 -370511706530788580294076404766605312 7291667014631648960661230081540096 5150300302239661641991914382163968 -80912113738449040863079595920850944 1229844659909077734234381275365376 7130396656813400164342390270722048 -17407146929489524193937529436635136 2882471799885871779321584008822784 303543059300986277490305540292608 -179142312391634401757602493954523136 3018796446913822512299297501872128 8894506289950192294875796483342336 -822372718787037588246160762227130368 8664317225864157666708491467751424 5138055156663399779893691136606208 -24822286351313793452015401419407360 2698252658926693005203361025228800 1626916608208821186953175952785408 -385943388872440197829236284106735616 4817587813285119719747071072272384 7529551114075833356687305038888960 -492682682857849184343661841852923904 4309806683309906356227154410209280 5465351401759577835485905467473920 -803556806896160329104232447318425600 1726907526235486020029694158569472 4463568661857013530472531804291072 -937149014958752912286001903509176320 6185901401766371799068401763090432 8457752644718009141980529011195904 -365855597698889875596690945942224896 6099002847849292377496811114332160 8260678570932990093568715522048000 -568486797158011245254256991943000064 7289737932178662810477139461144576 7501493256366319806964144202055680 -466324784186017263937117543240564736 5577418872424245989355185363746816 4633767776632527418773748592934912 -594906351506401749326550558453006336 2260397049729091621151226793558016 9458424262427808604194188577210368 -868459927583022158343961867750211584 1973725116755386217122780785147904 3562405267508800652811246399127552 -551412504188263205443426353334452224 7310703115096316623048271045066752 3099012257152599979396617713221632 -977114381804421689630688279015718912 1458364824150893498186279245840384 6673852807882246033593152131039232 -404224959391691635422079896103419904 8736025609694929739442036798390272 8501714739662651263557204495564800 -737332295414894613621172126439440384 2715616018828418752510243324821504 848438559592354738738722336931840 -441247986525398905071606925900120064 2046572072729682971594264376508416 6025720061170464010299068098019328 -432560913375298936938468584519106560 7865781700601703468477455137767424 4073807433406777986779838591008768 -988370875445218456477615859232145408 8076201276709009369353232307978240 6400309139637386083088960713654272 -748869819236597122650177114975764480 4896159912503406493701484673236992 1059860280659667794468638929453056 -657991910164640188595779381764292608 1425073917030121292261631079743488 531391651501040023051809526382592 -16919881516455180096134566306119680 843589259321816277793063913390080 6188721447523193853544934383026176 -131144490728172594230721503303827456 8851136594536897577204549532254208 2931405760774873964436965019353088 -299304707595828278181056099798482944 5858366171818260752887485753720832 2838981462288522824499525184389120 -620664471291937318824032972467863552 9028743491189850476993324295127040 5793113581686739758147516168667136 -123295599914668349832285335951769600 1491063683191435116792105429630976 5672468739400252995667777439137792 -14535062002747025901635135095177216 1918964419027171429481117701373952 2213681645907477019360743196196864 -489584972450221880806194006846341120 604648245445595546128768254869504 3784146746570567168726454878863360 -500693212963087132635797147216773120 760829122285120523728830406328320 5991677557695325967854613043347456 -961090491762588116976083845955715072 9743422955935712654598158373879808 5106678236240520391851667313655808 -597836340486997627858260163242754048 939561991289015346534752473579520 8540493430709351199103747627155456 -845570056905710153943819561990094848 878253653988670788057831982497792 9614200275408870548594805310488576 -667961387975485465447056252539502592 7811606961317615708997871976054784 670038005812200628919847952056320 -249271616036671438380030046968479744 4283078632944597931042346496950272 2924620537810642073777059364077568 -483412397689257771997611549876289536 1402088479612918437113368934350848 3501525047191225963344135765098496 -979520958104253338128487530304110592 9291126343060505290631971392716800 6729091885229248602609910760341504 -547467670978084277684334687741280256 5221946098470654525717532398059520 4169476317981381990932749060407296 -120664730313950540955256000079724544 6843525653645002752228022162554880 3179163395192222000270986604183552 -137256403844901066419725766160809984 2777957664381175360214969142476800 3441999287353781660879430835240960 -541857677062948823519752081532518400 7737272665099107608105512865890304 2565260294579804164603943015415808 -140264548199287964454653032983953408 1518092538537587345661922753118208 7678206446551809919243076493115392 -756828758524949165986158332709175296 3309375823437651477905317243650048 9416880691197389908848568782815232 -803855119795136340162090325604564992 4893288039936929156728329366142976 8059044930902600333641004234047488 -362426622543405813941526605263273984 4435232688975461200835535462989824 8163049672396060223930844305162240 -866356009124153051541039025112481792 4252134563622943876895973725700096 9611465434938957274130756294148096 -130909131795531466672991918570340352 1827316581895501644184486286458880 6799957540496444387335688679325696 -963745513217263689523608766566629376 4864431270556025089037123360653312 4988974279945447518377915701002240 -179487517227920305749816943029780480 6275625275903141109350019501129728 1822961390987808809380456595193856 -333546216018243720301950285496975360 2548251776996815925305741825540096 5282460543808319112564589750910976 -695456843230461245516472807868858368 9538796056655018368106702728855552 772585314741566481379384272879616 -924558637475954403461142501123948544 6330585177307949606796336220340224 3722074779491191787475698066653184 -988773307735070442993364222900961280 7804625940905298472249222993281024 6134555151042591965500657805295616 -400046068748267753715093749196914688 1366138703907715909633511820099584 1057923106854312445320660200194048 -412219218911490966313414002781192192 8530267095127053944001821400891392 1557899346256940384228397788692480 -578681469826229254705289125336973312 1008759578751493800428080577118208 3304263870619335804728201669771264 -994012892967480619475933462049849344 4858854581815393588172223812730880 8168839942248092994358404758634496 -660766212702474122963329694866341888 3904038013757511969628371967541248 9803453937533234018221273837993984 -141952705089593928852274827428364288 9988821765227447582047384499126272 4872600241505391812296929175404544 -689427587925784462581733892672192512 7215459288226467436154325175369728 8162398653360734100850797650640896 -226525124781264400109138138651164672 8435198985422226898879835134754816 3721019443046641084733884177842176 -448849098354188440556632851578093568 4424146508887766278369341599645696 6740987938881409994152193237712896 -610187133545625106061216474399244288 7509139051469462417691096142315520 2539741783952840499527146954293248 -300350250922690073177406369974714368 3685109680299841287728613973557248 5081507161167682794323405879377920 -56073531671773252768300807529431040 1143009861820330533078828392120320 5771897259220237282473467149549568 -598615554806836795264646785689190400 1775407062536399229765084008939520 2912744188259150532739150030831616 -956538187489277957908853308717531136 4601977214806858486915115801116672 9294433125304078671481505432207360 -77175889967916530997417361675386880 9305969571838933523307644418260992 1333450310909802080275370059235328 -902975585240293938062100322356035584 8472073913425144660006472907751424 7549836936055880444695906900508672 -872604286680527798908240211663126528 158851224691354156180691906199552 9599771443294446193769866032316416 -755205074402006075111328737499545600 7005367856539954287968874022305792 9199823563740290697109803234230272 -82556547729962793342158284909445120 9964253888865225687243806868504576 8238798242850730677380675209789440 -413537377187203430309859474068733952 5418465070146803010582073770508288 9890024162792834883311073518157824 -694740373085216203000869391301607424 2925464841309292934170057176514560 9938768953161856518273336086626304 -372206706176650523979882785989984256 4971032096587798572048294522912768 9779100044488312294027064017682432 -902252199343968918580553159872086016 6135779455003590758812761775407104 9200907513707539044851223082565632 -54295439305660018056779475663716352 1981841335211050466569056461783040 4863957179960026262802046113546240 -505643635409541397765268251235844096 5500849248542820018465980446408704 1738432779094200894596498528927744 -287320451826245047088259559357153280 3144504631095967366173048210194432 9545685676290120251225355277303808 -707394041751633989660674194208194560 3887683488552343587529978510573568 1938432619988459984814454786228224 -802412315081624004647065265815683072 9078649862833987651145330688262144 9630937834330900259238931905642496 -227206219639587157118247527895793664 8452914610245281335259616317014016 8648515946899138069791935677071360 -469368260886949734091677343716212736 9898404244914597993902349318356992 2818173429983656732557203199754240 -198609303688538250248111409367875584 9162256034913392351641594698399744 4258369630461146168750190706556928 -245629511978039371435215264170377216 3558308437073682924917252048289792 1834085675962190227442931513425920 -848956838553847880136102144026607616 6452800082820910174331203468918784 9455673285351326240873932331679744 -552750190873369447033826144965099520 3762363592631252396558856080064512 2756518535110865516491463297335296 -999908696464095751935155937164132352 783211405485676207095345275994112 7386073846466298997263150352433152 -880618886626221540047111309823574016 2220202549348506625106308581294080 8253136939113453391596527223308288 -149505567961006855321194281291481088 5318667751249636837801735470710784 7430541075631292049013253607522304 -77915345563417054519365143168548864 8740422319426840909169995439669248 1197450050467030225379228162981888 -229950590455743201306835990215655424 6888231626721625173756137315500032 3252696034971508895430318019837952 -322706328922341327338657810682478592 3907509330251405149589988624564224 1398945979917922447044265495232512 -468969015880600563284849127984201728 3139223142789083754793555887915008 9790966813687883110729195930517504 -855469429452523656116577055849578496 8502677060401567878653524976861184 9417536670029410519639633462034432 -532342631351905622328392607558795264 5334128603719869149393311154307072 5864825310385786431655077943967744 -35419196857944292954695543096868864 6317744531324782078665197061406720 6381795903328617873615072788480 -40392802271037398729196636976709632 2914485807160923205355450763575296 4046381074868607666345320822865920 -196842372190023905893077362438832128 8547218816946457718349377847689216 2690080622438496811984417672134656 -421187177936388710319607519681445888 506621665584788009439944626929664 2179368394031567475832332547522560 -17500158518365618477565821182803968 9536085252198333381483606132654080 5377310804901832931565068982681600 -878157036886987517339636240740253696 5133702965277691029639878362005504 3870650376141248248570017602338816 -931694554130116982305059852037128192 2142105830227023836207149760905216 7704609482447800966013676771344384 -199997992011260173057415773968924672 7067947272773908222476226578612224 4988010181564307399281071588638720 -858226513987788784909544833268318208 6215493604871569373031920316710912 3102771439593287250272886877847552 -540088484067614140722095700574208000 3070353805757584285980415250923520 6014058490034844891186877654106112 -954578078450370887382829191470776320 8852518804371897272258083273310208 2601817478187714170952403937918976 -42270440744377787126546441378463744 5842368251156004702192564952891392 6612120189661240440430761277915136 -708799676185013854029734434689777664 7063461641361027040699989488566272 5151628929145660702050978581446656 -442263409199158138040103680767688704 1786248647120241252923176199913472 1480827957598726935665664543686656 -697742999498831293565843815264157696 8653170175906890280031789535723520 9096327350486040382287448712937472 -293603432064589658369394761327968256 3610420336159022579567490725052416 3359403930164322822702441470885888 -250154305207705501290588945558536192 8567224193558169626035009081049088 6544812583563541524552607042895872 -343324351767211498368299112482209792 4281483749211776994693964898500608 8630985960438692790546209167114240 -730281763642822886428073722581614592 568098497678213948273896741404672 5423545394502379914922725983911936 -532494490416430897740614116101324800 8605121041139237894236639969935360 7941977541033962196342477380648960 -290907581022653475672173258515415040 9088136643039620854899612546236416 842819994315572659348678476038144 -839507123471728932464851629371293696 457812757174879774933174150234112 2654506312575937442545179574665216 -200443720266791279810794645379612672 9015796781560387739605367047323648 400037350737778424754173988831232 -41342847395743793321669268529479680 2077461737844275518381617598955520 1779086398640354932786241394966528 -375982408804524026923459090474598400 6438814890225540952930584428019712 9010503219991482809956687826386944 -987060147274716068237203245572816896 9088147646374251610308436704624640 9080753821255257553247598513487872 -629978596514965954211528711860125696 4463385691483949158791319889379328 4227765912460193843399726506967040 -879077515732831098105800652115410944 2824668745447473425171281287839744 7339009115885105451547338622369792 -722218142004396473148036929772584960 3985601907801842469997968598499328 1261158962052061772373471231213568 -220057797517792948645003528543141888 2653185305747150721273724749742080 337517574784611745374394021576704 -198357550869343443386935849303146496 8221894372036155934241685455765504 9820431589623727639397149370744832 -788465841972316006076974539474993152 638149140004178558055801914654720 8207548946043539280386781677092864 -175061161052065767385982758482345984 487931982949850596484323106357248 9137389785120192042992642513960960 -479202807948555144521657193596977152 9615050145065474948492087726702592 3662674495705628568883651145629696 -100338342923600903475806204552282112 8701821677345655826362349144506368 4902663394493676068311077419483136 -360000871611510090745385548534251520 9356954324239953364321699075457024 1696434386878239112832085624094720 -663430968074101555426663391131860992 3307215288670221427238913072693248 2225854959721090177910038775988224 -443856823613006988212730891511791616 7766889739309447577013592277385216 2643543823344861139305165863518208 -964201683264925360707937354651795456 3099585279615090300854556168290304 3596114302949696946115601149984768 -338482502239889447785201539647275008 6900588842697177348587863890984960 1013628188625830577553220875321344 -508404646698898597813999056673832960 6318362959428383959674513528979456 81303209481288803496602393116672 -529323607842117034024748351628509184 3851480689801867319637790318133248 7122265215069574595822408194588672 -21755951176056894339052034651586560 4654307379971475587295021746880512 6527187725528741532217457281859584 -784699371647817595132176568799985664 4159801246841646407501063374503936 2681327294159570000990851236364288 -553801068889853363525552285381820416 5027273480004414881848972137201664 8409671895301473816161359881043968 -240502390988367714490940362885955584 8314561070916172249878543097397248 8599235061568521279937199330033664 -504329805676030063461420889920241664 6888460117903225635001294619934720 6214582126950440956930765099106304 -367334875552450239099603589129043968 2801056796283326280310877897883648 6738218930940495830066858490331136 -979476022956697976298222636979191808 364669448609276643058729500016640 3634160429364596746674899488079872 -185226912446297693553976963995009024 5848687144792379606191114133962752 7566642278814059480677296763830272 -96229285957233919825048846926348288 1913361649511292724381715724763136 9277411297161257835146058911449088 -530565635458914494272674440071348224 6518626611785748319215726960312320 5340494666825726170435079699955712 -29162650975370503725614978954166272 884563303462175601054628509122560 9543627722162194602552232939356160 -634299642361110111430711561802481664 6321658360706719129867784869117952 9331190538022005428358362733477888 -971540798768904582473530023306330112 8600471047347082719144626289115136 527893271844232468791737022676992 -359403162835538029937689253665308672 824485322818005410016640580452352 7130410676536278651033319846707200 -77626965942975793850503116877725696 2837944015517478456961944522850304 3164643400188473194790901388410880 -240743140741173407014056464962551808 6621893228594274782538945471184896 8521469254606748419823530756014080 -918900891772072139541200322848358400 7937138547144659328380127930220544 6930441979015746649469420950257664 -286537477908614246869499196672573440 1424621833103381959231569087430656 7069772862717195725858810194034688 -967910151699978377859986631925170176 4317542631131014542525458267766784 378349835843686957760400137912320 -471001878288427353994573906406539264 3466314416947761940019340858359808 8597900180864398636379833844629504 -355978033158599249229550525079355392 2074283075066838290440572872163328 9052686570482921224355212188188672 -292213732074431683946117005802733568 4757836983912635459123365051105280 6989394048669206086358770072420352 -400563270327927470851133159860338688 602447135852472027964665009012736 5705640104944480714615932617490432 -921314067770951647737300519204421632 5720526051455796186288275444465664 1093395709558422021068097497071616 -584642422530235321787117789184524288 1659277260440053824950845803855872 8271752611741818600587178016768000 -791456088819162630819835835878211584 2845051694024082034924103864942592 5978501196364734510461818310230016 -373273417415301563099761378469085184 6437514393357432526927430697353216 1591154862422751062429374856822784 -637216891242265518978719839466553344 2062162417049965627055316028882944 2488131147689015013248775166623744 -532790423892809953532661292165234688 3613638027902994013329784179785728 1583205921381034360003710725128192 -738923359386225904578159022675329024 3407200115612569752645165863927808 1006489650731557528910038292234240 -526079150237939571219201929435414528 247490992251894163111675852488704 9840404088265243239820920103108608 -386019807678375534334794252196773888 4572926356550835338582058648731648 1274264398833588013249665167261696 -356275714242864218322113098655203328 8957500606251636653279443731611648 4179371319279391457561364985282560 -370262881218283603862904355933913088 4024313200352024011066424590073856 3565164200851545700022760633270272 -533997847128424971896030963760627712 9266317891493225422866472687894528 3727801477751578861854626085339136 -30053664137950595069324593131945984 2540519201671685926955809756938240 4018426144749091398234942642061312 -549836070850362463233391359453822976 5253490044605739628909268052213760 8407451097025730929538466523906048 -159426825954814642355469318411517952 6210900990233168920510627040985088 3774942175561639702786985001222144 -96022700622591293870200555353145344 4957641836427216898430761638559744 2012061680253675229900161956184064 -478275840284744973618366813371891712 3718016274964386082038689856225280 3087413760309967751802186541039616 -48386354220594266140656888308563968 2018969634657947796241049490292736 1034059126345784857349694183964672 -1306064271297029144105588069761024 1308018804578866065130731557879808 8466958674046374278239890861719552 -941682471242448852781578287610593280 7477103059048028785263762454085632 7582547651993427747794984745566208 -536473172137417463319046308390502400 8903908908772801734243661153042432 5294002303195185038010669242253312 -837024294447194405430436051472613376 2459616365924122450832482755411968 6235524919463400367765131257446400 -361869066609730794406522747378204672 1429221581125785895109135173681152 2871894359901772364524182170501120 -523517521299932907834362332845178880 9074581016589221451666741711077376 1376456236111865485315113289252864 -831629383914566744345713780985954304 1253800744253042715084418237595648 8102758284115732176720996289478656 -380228105632587248479635725738835968 3910876306934032974920875792924672 9322248789827700490548399724036096 -822452824500176990000727152614440960 4104743994766233820158339294691328 1492224699546846120258987236524032 -358455643894608057927937134449131520 4163405567424285824474620440346624 4099868793300520751035547801092096 -845920309504341722457539289892782080 7300473895159461831021328341139456 668470394054269298848022453551104 -105339600461242958014931023091990528 5305968893004366556222656346062848 4340581929358452809042930872352768 -107772428780503612534095787543494656 2543335360611618792030159438348288 9838268046972346399469381338791936 -555513204492605901244358497224622080 5966278981537579275332825689096192 1401066951479228043564120486707200 -642849470359810468762803228293201920 9827601478099503527580549790040064 4144894681307050087455016823554048 -762478111221513155360407827473498112 970463543980730603401492364787712 1138213180405603573460978706153472 -264653084671688255867232768069992448 7289721938367223568190111863537664 9178470539261449068358617970769920 -3584829844694431644468800269582336 4329368501681476428532224723255296 5630743347554857958727782915637248 -924478892295487154442116899979395072 308016513045860470563344629104640 1906427643563676886763749339299840 -348815984865855639233077035260706816 7541028764579050619923612359983104 7531546506627481904822282566500352 -487209812782874111049072554436198400 6817109218201244064146936559566848 3095502174155353789466366581932032 -765690520683431887766702029050740736 5561445649391883876182441947299840 5171189611572995690777893987680256 -363660977913293262382073295384084480 3890358037886238133020173782745088 5801522306563103293774316898877440 -798936686760650296950780198282854400 2113284560707694146232463390670848 3075506866036982680679115776851968 -764916065513722821198657694021451776 2356705509409352311306720638926848 5293935946998355925061598711906304 -423956735124130709885638685872881664 4815817278404123468187531250499584 4551473166116092203866842514587648 -539475908806658297521070766964080640 7691550016227090820411722865573888 6038874678294976305648333374881792 -870595080033096842402247322275676160 6797030755662806798030173817012224 4384921149568125209503470798766080 -330246628975836028223910869527953408 6142289375028669720712120759222272 902259566478438129433184867188736 -644882583494295975547388876365496320 458748720861515115491289708101632 9662540433702494257372824200019968 -500709371912895688044427192341364736 411540647526027700672984162238464 8115001168564960641571238895943680 -508880260975723240773416027611463680 3402827164012650653231537966809088 684083277679200341250005048229888 -525592437049009473236807802358333440 9562153711743551759171058847973376 9902648400013662574895264729923584 -242671602960735168823169415771062272 8529455729510620205299054598422528 115838691031649515374716297150464 -379894114424563136729761101620707328 6522501515002937425996731402682368 9421592514275694338774784198836224 -104714351661547324371254894982594560 3772163380061028487018960054648832 9723456896933206210786469808701440 -699041180641329103742867194477805568 584383708606122640137090781675520 3888801592176743913609267934920704 -863828414403175531164339776641826816 7440408005199230197309756732866560 4170534098185448090166426486177792 -849276626526750134680943343859400704 2723699001601954739323819289214976 4298050695008822422820605204103168 -9873571095902127978260213148942336 3119589970034847418902703287304192 4090297687393855784822992346808320 -838471852485885591665886885050318848 8805447021685612964769005746257920 9534111955303879082596507702001664 -821730404570903815734182219475845120 3808309270932905595480013893795840 9306535327279528668347648282984448 -317598569650958941447347149087965184 6006565031595336348400479293669376 2935503222146541037001989706219520 -424335850571394227975466717806592000 3858690941238949518138484692353024 5080095186447692466714342332563456 -299247131869364407262422125296746496 6799492901271088808915139196616704 9916705092839241200747437277315072 -917712043864028574886466939000979456 5323264248048311974954423409442816 3783523456971434277360184628084736 -36676942996335527124769963914559488 2972748264750949660775493016748032 6931185543929763669108146011373568 -240594167622965050491264029064953856 3955277198372662347388746010198016 1098501555874368758974325599502336 -86781694965846261285113340366946304 1933780943802828030014876307947520 4441267945775809001709575319060480 -945136294316907067003891507798212608 8735032010496182835268354580676608 1061642138198081932154327250501632 -724096510128039933204924586333831168 741380315258953274035624204042240 47467951884532696755593614983168 -279431486685982855799573892233691136 2556835793861212754563099730640896 8130603194702803637084604323594240 -183757268828897966091208442807058432 1937935524917482788285727188713472 117924577146930956928078430863360 -548084393664643679265318074681655296 8509940732053842483399148414435328 7390422425863936004967663394619392 -444512924401048077064423643331690496 6477169682638797922699805965942784 8614661809532185657710946772058112 -964537200799451591807666479863693312 4927411169585306276243546251984896 7221097671167147009042755144908800 -243165999436605435128822349900546048 3995882733526723847126691235233792 709382854505394466437913777274880 -852833792261393525769198104679022592 3862610114153013947971207633567744 4458711807526108836724125007347712 -761216225022733036466420367080030208 6136937187850960636217144849203200 9765166935060950656539489529233408 -108689929974325449945239035628748800 500482096600879089627876967841792 5111682359979965340811036786163712 -787842858039320658288448474087161856 3679248320132522642429449112387584 5265347262685290771929284604854272 -878495866225876368831069748715323392 2452044651501009916637577377480704 3385026691614615356984846268235776 -825795300810011437492509623537631232 4405240747574713938298742178316288 7534555138065903609161343825870848 -788751692648973401879552588221775872 6146463985671608192913040375545856 4019184239050285707090629366906880 -901393868433170561927785134984003584 7668261419057460927056066249752576 3962793223744521855484114126241792 -335157082136079312829428129251459072 6245492659737641736744625565073408 3628668806168159202932152409784320 -435276977706938717792863882315825152 6872391479899678677524052738834432 4659213430063418763117121941536768 -394627594016272597287700974083768320 9693739163968932174193601305116672 3700830652414410523558801108369408 -53372392105794994643353434635370496 2089592169606992863401634665857024 9321814951682194202393947358101504 -841325997734842702062018813893804032 3536334872264164182453389394706432 3787098407165957910752428902318080 -569168249788998551306333060264361984 8833044378688401380883947449221120 9448504245781315676920565718843392 -866078618770063366362711822428012544 1521349322212525364588170121838592 8499323058089715964187959187472384 -614087451946279239894146631291895808 9773043992137025351824859197341696 4571538858439113709864843552489472 -733724479830089320004313518457225216 5863730387764023633515028565458944 1597141835332256355420203397414912 -850454592054188547258962716143910912 4702792968671182284341585817632768 5419608364199130988825803407491072 -147600578700303530270862288206430208 4748246531617228562552009539977216 1519737568134797715700252533587968 -859303242235592482965104741509496832 1713896767634392840786949884084224 6047733341138474630525425111007232 -123364219497762751609731623052902400 8936220027605729426016327969013760 6722565062574947142068881380605952 -27220061886090516207106238627971072 4896875368902408724943966828494848 9663697085861031613861744628203520 -40828805499511302302352691599245312 6887723987225534228114893445267456 8648329646919863262976656040525824 -37510307131991753256178335430475776 7740125627215272667994865843306496 3816499154048850667976332314411008 -857222280856771777168193384045608960 6575376988611902602569540698112000 1350396403606818782854432109363200 -119330065906182563792306066369282048 6401960840656670788812168438480896 2020728183816646554673375963250688 -691717829664263988041510644766212096 9293766018812764045300779062394880 9727227524751777020175230213029888 -712984906125217342486396980286193664 403116687151851254053179517566976 7435399084376897260006652803809280 -743191973418904275711387315810074624 1655212383895286423476001191231488 719225993657022164244566386933760 -167021739262793254220004646962855936 1178205345553918851411680516112384 9360131253869132881016583257849856 -642122256924989149614104400766173184 5877476480340035334314378550837248 2649611913621438878225950830493696 -566320568357680483407780290746122240 2593196897639177260329089921712128 9217849873144232886275234848571392 -775837135475833625851509468406218752 1537670237157370170181512306098176 3282174072316604282458484670201856 -874703752846467835290483767669424128 8398738595274240210547033293979648 6146584884214018190244787934724096 -517994473093485323253676962184429568 8346702924432738980756194219524096 6041807781495369050656418335555584 -761162451529501874842622954800414720 7661488858850244895035597116145664 2318172660321554995574231615406080 -958613932569448832681559339328077824 408312500500867049011186407309312 5552477479732652263920451436150784 -891043103394070144336897462700605440 739526311291715645126651014021120 8920865350896807018162059984502784 -22913599288052736853012301970669568 7504429822654829588741422999142400 2203627825417055998904435153567744 -880005962947691644207384494583316480 1623365565046247500189505987543040 2988465018516189255184618446913536 -65092440808951295263487517031137280 8566450360199693795133171425083392 8363854150781059747225959984529408 -323071717442796202661655904773996544 95235591275137856655759480193024 8033141352558196364067391869550592 -399857967340428150224195348504510464 9635159695722234722987582506926080 3835991963652097828328230638059520 -484114674564343612964959221035565056 5836257217468300269104369126866944 180091569357231757014228952678400 -88542793691300851833624916771471360 9025562897369607643540030492770304 5869515074591839505936792065933312 -240870497849226947751048863918587904 8939870657990650018816246025289728 9574137400628290145316529221140480 -594625719118270293220930362749747200 2661156107610583199577880613879808 5018588139717001582164494767882240 -425995296429067432930182818995109888 9837333969834549214344488897478656 2586068469679801256036949238480896 -508507226428430109107146665326804992 8979619573839536526219753132392448 4900706289461197456168144603185152 -1070410436293147091870818542551040 1649999849101319126161722473185280 9080175375429942962393802782801920 -6559495271100305184621861430886400 9269510383652029898035303471382528 3126509156504402337198243017916416 -304523262322538167617683974030098432 7309331050532941899823000590483456 8321626304914507707526480673112064 -175195989970378817917601307309375488 405440967175856017569250705145856 8574247477294485932367520286638080 -77455986387053110578591250578931712 3589891097509127158025503075467264 2123766676312745259703179598102528 -105698548624123127079324714916642816 86926731502351589912312935350272 864012494081448177854802194071552 -548216602703599461697905844457308160 219221489130398661475357043982336 5651850186176717670572380987064320 -863806840563266044426044091651850240 6791156614518632740400156559540224 5171854602784819484115658633904128 -617242927156471387336230074467745792 9211251323133271346980644460691456 467558132688567711888383319998464 -75553174427356440319121547159666688 303332858394587680294070541877248 5625638509806068308970399841910784 -835089695806991770066081854538121216 717797785633502642627249195450368 8688754775284417416381993905553408 -829279844451936920197918463319080960 587703683189687334950197367144448 4387769231718291519526023286751232 -603495018572645483117119727221080064 6665660895422333031152025000214528 1267271299054423446099398414565376 -561961306063873421354269507040837632 8495830973672587230072532910473216 9271546182210739906571423899975680 -529493475439940227214277070787969024 8031019106914136595176100642947072 1838487647947320089443284398637056 -624917447628955947422250428251766784 9533893557190911442509751493066752 5677502535984339085691340529336320 -231762591442958181250891336973811712 5258555586268198507530871413669888 8828296441678235434150189804290048 -569574838554608549873536381413752832 1462839631809217529417378067120128 9572037619114796233256046994391040 -917184380706989725864870192078651392 4553780297913956054929389098369024 3307638197206968991539337157935104 -353613903242908244283507720495038464 5896312792289724351380909952335872 4310321047879275872045533314940928 -79996570249190028775029568574586880 8382822990887724645163681315815424 1854533671316148444369552364535808 -164953306506732268644441590895476736 1796788283069977454441852666118144 8316323945882601127672008761409536 -646885485040105664645326797298204672 5188764269936213464739788990971904 9438509823027179962610705313562624 -153629137474768269107709807148662784 7950894801858563394734519675256832 8137449336687190307092802471723008 -776216723556594515808197554470912000 7004471437588975157644302672199680 3696136438075961187631348746027008 -97545751825211640482001512254406656 4772204860221962717457386336944128 6504238052040493731730268803301376 -292418424115076536211420243432570880 8125579377624125607529190881492992 7194374376443170038518644064911360 -289128598749955966061774965066170368 3609080934649046090027687315767296 5957856220072072165131326123409408 -877480681858741782894802957427015680 7501221253801475109762498585165824 805095557420392865688427568300032 -886349738706221436878639900848553984 6193849813225111028557296808493056 7486591397322474355823266970468352 -944657407645957455220724101044764672 7967171932195541386924411691466752 4422081254005416430432250759217152 -350329738439727677120758464248807424 6897875612795452696027187157925888 1621855332442071901494717425123328 -963432514789641984043800613959499776 6533711846460966302155848474951680 133351093327528516318765732855808 -431979270768362995534244072019460096 7223825828005333058865936019226624 8917344803305147140419152391438336 -377051441040417407986872844877299712 325547646211981566463227306442752 2877639698440267044522560678002688 -110018049128648184747587396704403456 3575255166812076137221279912558592 4196555944023648138952618637524992 -477385547722313472592582436638949376 897776595346074366387974899236864 7689660151633935437616244227833856 -519201995544696260779610586432405504 5490249410445003302780827898740736 9697685653351853011863559963934720 -908701365488011601093659701226242048 9565302040059683349288189599678464 5572906464886923507277939272056832 -138319371740869554087816995943743488 9398628082669618228985558321856512 7677938229450279080944838744473600 -312214559134049555453885281013334016 5419889236348650751387226270072832 1115147571224053413534464204603392 -874957048087014525541535577534365696 1132155081844084045775760143679488 9422897513479192906475795271122944 -43751345054844308116810381345685504 2420873566183456430067451623899136 4084773913860732680678154201726976 -820363216162176163816658546305531904 37542040600059572154957612187648 7494867153446825058292495560998912 -559819606210217829134392366630699008 1044222063811679541563412642267136 8029463391890566993382308120100864 -119702557119266163724827781809307648 5779180797686991119394508816515072 5357065625212539590531649195999232 -691394781717271055076478799702917120 4854674018226653661869053986209792 2683604917430802438443317520760832 -790349716386828957835422748735700992 6206532181808494482449741616513024 2823472394996706396499874242625536 -834763300320214444606223259495563264 819471004656352021169718790455296 7181638957566173546330952719925248 -276970142395401258963127316300955648 5286093330617902967462219720163328 9275050643794625959109432042323968 -974573158152486795103303955722010624 8020845962816383032077036959039488 503771862652002905302479950315520 -276157881760969063912688455333707776 2636307113501924281322530519646208 9022084109698456830570910357389312 -441349330995715790592750315930386432 2379553484896388903955190396223488 3684120569622631578744106818469888 -567004655133258380734858389952135168 1806068004686326136234484149780480 9935330368790618234090065621942272 -922757046845718883364108076780093440 4801869771623276465222340948525056 9459497525330803347596842765385728 -829448003547175735135141143779475456 3384283601028166041860794239418368 2884646116488287684321810348769280 -969802222825170212542330262142320640 6844196498053252150261201726603264 9147518202059768242869836229640192 -192506254672362120837367463139082240 9760965643542319337712776655142912 9530414124769360067743175652933632 -270104729324327895062228252126871552 9351201202910439846168427625447424 7839128371010215212076627340034048 -808847546352316853511986380479135744 1679112037740634396627673026658304 1942420431749265652807657976758272 -607466348094088926516193191373307904 8732410617310100883769662795415552 3552446878855827258700196866949120 -677528270480190018025961816466653184 4087456830824028117535336825880576 5798976612037883735350136388190208 -195367600914735451659376906742005760 5226080171072841343160220173467648 8237321009489004810396506913767424 -286518501868001124902665114567573504 5845460354733080934062463091998720 9094459969942126356199378404769792 -404304811762841055439789423234908160 8610884877160709756824537031245824 9799166616397212546961531973140480 -957282087402620645155945786818691072 1156709159505054277785805966540800 8592036831190467096114325056651264 -339281008042501400025646984264155136 6457176881244376895590133097562112 7595587601402563682216108225462272 -856592346207406175330422789500829696 5240171809601727445605507968008192 6905482721225938034629722159185920 -135290818265335432155621215323553792 2400079037832343145466467801104384 4455853615441044041198649860947968 -918998314863635601800221904116645888 8319201608681070537076369193435136 5796220019652868976152324935254016 -376126187094270706201292135548846080 280628968557423183897138502303744 8973239024392257366044871869071360 -703062851310533943758612274729713664 6268572558814277793014994924732416 4414238135669692181143843390881792 -648075524191919493252148586568744960 6485392915000098324362084759896064 8615306903249415643245355470946304 -158211382519911030279815731253084160 2128167363453683314732638618517504 5761101702056817433569513151922176 -729636244508072843151235314272436224 2758487481622299979600411083407360 8597936033781291329387532870746112 -197105766790337915182531108036149248 8134441184232949947348074065035264 8910033834806307523284605132079104 -550275298012569359518055914761355264 6110824430981165654146627504439296 2050043278712762379319211959779328 -605609081016598171776456168287764480 7517333949637509152247143276216320 8465978363884581819600777198436352 -606857731792507680387705369180241920 7219377813337717433432248521064448 4703489754111962910797432069554176 -935878248548987485922816980991082496 3419374273675333730653706974658560 9947524848076752495990594057797632 -716436761530150389323488553919840256 7612607185284615632726591063195648 13913207277153975211036088729600 -733654501846924658553247307181064192 7515160267024057039136043466489856 7963193353836167022411998918868992 -477306338205905287949535770367229952 8875149465487209734188841840934912 4937031452782545443784462218297344 -900246113884535807783900608408322048 8959543390898596361635551611191296 9409909286473721035682542455357440 -844261115143459097532387116521095168 2941264721866895098734339199860736 4459710816273827063784982221684736 -352542389913750354044937199509569536 5783960476723120595654981269323776 6045147764084342478431054548959232 -29667093440472954144328132526604288 3251717709659714538756383856132096 219662064714823265600524236357632 -750184673362514915491302245935349760 1286021840797495976896446525865984 646117206413009069906175652265984 -944697880230685417175645209755648000 7158234366395420969005855881035776 4623355976162867734577894257590272 -18831298874958860899688287605620736 5990198222867959908693156089036800 3788252815063727534337890254323712 -707475012531289251527694628394369024 4615591841444260241170396402941952 4598554621194648456565290560389120 -182127928444285834896581577785999360 638889346236068823045362669322240 8044825561299624032825251752574976 -282623778703913814224777933110640640 3631335393130963899477154215231488 8914029328004557563625054649974784 -392642417301687720120732252553347072 3491761924799164996518386820186112 8798126743007059024145289817620480 -183587181169435371243020884929150976 5584659194255253436965615833186304 5986578149414186023164765813080064 -376795459825008553424186740786069504 2600243770688852549015465128624128 7142709813352264908383645803216896 -314189660414127086575920851644841984 1852332541804346616082682309771264 6985778187459937559501267540115456 -308162595295686286070915648913932288 2328061555117197256314216979103744 7623802485400195351518965791719424 -469118466077253739946131076558094336 5383545526393744418965110283829248 2964288041544957712143980626444288 -341061672902647612050499626998956032 9658029727029109376983961970933760 1855823046629786849502842213892096 -794020359106714716082952147549814784 2733572442930572000621875316129792 6596939655182261566737956372217856 -177673552245995632057001907838779392 5695263787470130320252828657909760 6625292498408720320684112551608320 -859178940990163460531647044116283392 113222463401823466850994427527168 3722231243912020106781005124206592 -790191486895309382757245814730391552 8835453540019917180034467672096768 8610753256217317939446426273579008 -932864209770983312353416892175613952 7526103784444586725889608681259008 153101660094504143378497440579584 -70047566274993134750941929671753728 3092229642265893212682688913211392 8225448153705744881755729134878720 -544738308193012415399011134216339456 3507839829936670550940196121083904 9270857369902490510655118716698624 -328534709904583535196950770328010752 8169376622048073084766734463795200 5220479272843738285178755462725632 -277481352325723779394418036252344320 2455288921318888223856374879092736 9785775898775327680252343012556800 -290542420538924622778835450667728896 7435572281004116950053104495099904 1594271051163634726743872171409408 -199329471171145465956554217789325312 398988862242961503573203891519488 8604671276647352715330237044359168 -86306765874267407834707842528444416 1085558204927032127717186316795904 5168429792539542425732968144175104 -257481817570671382028130612299169792 5912991288060321061042178505048064 6960687205924948560040783415083008 -84499642733090622125260661646688256 5767698939595882714027725875576832 3645662881903695131076870092619776 -16635116272889626058858840163614720 4111871797893884762529623602888704 684663923271316151676956389146624 -235761705440220171999078138274381824 9584651698854343469982599356612608 4491264623694480673753451649302528 -241948071683234460812569406118821888 5795262264213775458557319285047296 778497663574214593042040630542336 -245634398569295847481343124933967872 287574994115852574469926837813248 8443942917585915907025327584444416 -796302735687108189091180175054340096 4402659926161913240865068449529856 9597462911484965141032729751584768 -502372820585128442337311220763197440 5216853395344118804249725479419904 2464826463063398057944319594070016 -861794910215675190406494604308250624 1891840357521810452976030621630464 5991780193590234661892844047826944 -186254566545641915655519151992078336 819000200620809056445612622348288 5900936809712620658803411710377984 -455203610502275721990477277902667776 6600756313473665538834437343543296 3103060929625739958092811120672768 -849454304692380498740719593453518848 2097866654701002399565642456891392 6371423076646650404746324774748160 -937448777498308260048113326582923264 9385138338088477351883323467628544 8177840966906432696169817157140480 -286421206217564111638405401483935744 4561558923630598174628154884227072 2343542073298958773097105136287744 -90798112381235161221760889978355712 3055554788368210907711158448291840 9607306376064205261113197194117120 -23998292534993789484543257811615744 3587540977806167361276668725428224 637676337304783752224299550769152 -263710592632787990745741020501114880 5917406813149787486673534734827520 2467685620669865367995543126540288 -64512893922539452309780690618023936 3701850335440817349802825038692352 5395834668442259026668090172637184 -122475557387572300335512891548499968 5200076884233836754871223800823808 2425434050403847974984757769404416 -730791607968120095221540949646639104 5787834213315959466769140783513600 9966397376760089291264333050806272 -983156865022078209512122476220383232 6551760104226351262875883040407552 6449051903714852505942253855834112 -207617247789560880552952963069378560 1813653299841476227161362851168256 8427730844787725444839067623620608 -882191717092472463435496817822793728 6675723932447920267205354201284608 491980630847700210245158718930944 -129133910805565655814951598253146112 2493810133083092433442793972563968 8364661093892801387918096194338816 -506195739642625880966989045414494208 4908845738070079242848435536134144 2407129298796049626162589157294080 -866177292605819317435663521528414208 8954535556869919075076579681894400 467148520897799437828552097005568 -485146945047973180996393516115427328 3301287716549413581769619149946880 366976864393200201764537303564288 -179791045655414394557641532259696640 7458812400888981531148071599079424 9271228918248127021361855559892992 -728250537207252389748550957138968576 5109638339639397005312947921092608 2755250457303438985527247547400192 -892624517179067483924761047048650752 3916960108640191531017217863843840 2109048914428960533853399033053184 -798732707810262871131140059679424512 5219834409461359665512490731569152 3977048926852771963224214416130048 -541118945597736316457832539970600960 6346181305755400051938419036651520 3883814601245386008350920250753024 -732823202911449660555511131210252288 3025576461432031089443500854345728 5143737141579463014020183769481216 -39286734240833411951883599837396992 7848478628783582002926330388152320 5049716378320388623834444153749504 -77181032195974762027669394135449600 9493070917925314280776094837637120 519033126106007189523306087710720 -278446410086721347454964566922887168 177876533685778652684878058881024 8502554239973590429317046193881088 -501552548946238721977824170586669056 1759948928654504661434649647513600 2659142708769791414173331431096320 -850859702038880034582575633217355776 5746303158995012912736433988435968 5055447890529928197980123585052672 -127524256631557096679450954233282560 6671328265015694920241898349133824 2440890753594009324860783957377024 -374407536598155976444389204191870976 8789771901912019982291266615377920 6617369406359186219880907374854144 -995574879548555766583301435868315648 6540581913947768064229082272890880 4475430961005510279809316933337088 -482959653696919384776367838177787904 925031218628876249622900688027648 4476601186187061429188096946077696 -455298872387682376509006649904594944 7052560124801310615991653815549952 7670211129690967808503635356155904 -873687940499697570195014543623585792 7687775266756151195329887551356928 1789872782314364292637775483633664 -983242269689417739298013485117472768 5461634258568847066041311880544256 7639748844768395798013240477220864 -705177976642321950242088898955051008 2758704682430799349627870825676800 1768459649331991410533766256394240 -15390968705372201513973586394611712 7267720194369229570689545103474688 1779922722901650568119900329476096 -431139920808320735193969173299462144 7489248086214768804909661806395392 7519556603781973817235471083765760 -411920695001030007268393789926932480 8182328412746482004932212591427584 5690824143484328304021967795650560 -746340739749490431357685951417548800 713613706753654393576151796678656 93219268086445705761416949006336 -678294595644597109561274537468755968 9748341076237265583775110790119424 1979175333086629552618405976080384 -603862314652331695113307085313409024 5902701027831063253364954273677312 2556875530542582495597894714785792 -225781538320205709778375643454504960 8445159124089721939199309863976960 5725304903109038489821390867267584 -764657074136073802305360639622643712 2821130888520065328469129149022208 308969288769583063822010431832064 -743118511869869992747218157413859328 3757066102803904337898341662720000 3363399078016281482127963005648896 -227052647932466208595323257662472192 1960562739810944166022189634551808 9073506295366786732101186336325632 -6363540820272396545033234066440192 1329137037979814340066889242247168 6589306696311380966229815213424640 -906904110909868305386195248861937664 8673819464193429221753986331181056 2089125791128554714523998374330368 -896651256310675016156317232373170176 1958545035081099202284981348990976 7152859839411812746425422323908608 -362494754617897140062699820454772736 3364369289004615683936997005590528 2559763435309641449553395200294912 -410282964064171199381368205683458048 2727812734666295542320236339396608 1479931408218259974379705548668928 -333143395435384282144587623218282496 5794674000148646934549886423531520 406114282971327209514816629637120 -432931157051859441978082777047760896 1337078581570144864579093469855744 5435770337075110470359625475555328 -977270278343860379796728730544504832 893990200842516574281263233368064 4995954672473628128291373631668224 -7144706554527485108279966745755648 175194714277576393084894007263232 1334591636978394738594680242438144 -552125100484755582640394061849034752 772415642562693988164318384881664 2136343357276240902033552776888320 -257594902893026755961632844601622528 3752944276938982108000453528649728 8739382556273359428800237270990848 -310795987854977373929003746156609536 1585228472344347321379428677713920 7300263358064010150532871287209984 -980389141322975550020329694881120256 6146795215549907068360607867600896 9478646241195786611568759774642176 -602876663443969328940187790472118272 7716680320027897194443552568901632 4013195998162852830321547765874688 -909656071622319848853395079209943040 7499272034361802750095628680822784 5462329197298143491178489230393344 -69795141925913665410725119491309568 2746207192292194196451934573953024 879605131813080593126721195081728 -910686645253267465081380068009181184 7781168958005186941395769904594944 8678903251637123162863832380997632 -616435008094146402699580521297477632 2983232511053542593537912246108160 6031404017122674705725067165171712 -87869261739070196045244591773843456 3106065704927386760427251007750144 3693965371249059403460220289024000 -839223978860118274267795640312397824 6502634205078449622129962448322560 6521045008122892308865592013619200 -159012296885458983198200221413670912 1396047573771506911672730745044992 6660390788080686477507290770440192 -629979856309312675336026449327947776 6506688609475763510455067918467072 4473338400415742523325576460107776 -820612615473909728143363240980643840 6481201538418238305652481990852608 8822631196677589928680340909457408 -302174166048130866999525032100626432 198354990878120466835925744222208 5542394479195627275806726424625152 -66899368728556688272329155368976384 2740977309773337746634974487904256 8142568303221456961421251627188224 -819763246354579290640369502925094912 7453191407114744762141599103713280 7945930641926937996420824233410560 -612771468371825411794343037128146944 961063823326530638661009920753664 3546580145924477301813473294942208 -33487236967539175866548109386448896 4083891549969363135055871483052032 2508593035388773433206639563898880 -225631700600676871643206159599403008 491061505221655652009256668889088 1996384746052914985127392936198144 -886455621045284776861417271554211840 6722686710273746614223827453870080 1878859722965848486717536442777600 -807276689845738095061697502694604800 8371941574529751536334747123843072 228674252369185558797166053425152 -671621768014379234847256921403031552 5787204958405388005609222914965504 1637901630639720297347253962539008 -133030894086469595322894427204091904 4813683089927536264826339956097024 9768500576312077252134603210096640 -221881589197442065832738191820455936 9275914155543501390450205493559296 789053976474934126262022586761216 -965282968701528370138268540539502592 4039714949833469439618182054674432 5907999424871994799057795559718912 -845023318797398454099545663282872320 4354119480450453465834855512145920 4238221127616136937824082360008704 -782624627499988695083820961098629120 9046666802486328079782579965788160 6574121932721633951825362518278144 -938902664868816618737391764487798784 2762423742850484507458288119447552 5413377508001231404016396723552256 -904813034526043339996064385844903936 3274023710965227130425677805780992 3093604744740393242231989258420224 -63858359015914601533683019366268928 3868897172118877214550894495924224 2174658541989408489592990503796736 -357484826661010831811627806816731136 747267946543030074802058861477888 9910257015914166169573219217965056 -701157938415234010396244958188142592 2735501774032889282453659428323328 5276152303503671095901781531557888 -558600899271084200118479481875726336 9585650199541964969682749626515456 5708868488409318816335899249344512 -754622701839831226840668908776587264 1220138133781852704079744157614080 3236289729054854251676494712537088 -704080501590890997199949342173036544 4037545427261526499282841673662464 37662530831744782408356961714176 -290465164731744325077807472412983296 1315425043805545713874441234022400 6733684461478505815744758000123904 -428067811590294636872434764199493632 2975038478657527424017172785004544 4765453380999958122633896552038400 -89977394023983578812568811698388992 6835884150617061238016175501213696 6760356153466868919002928431235072 -811445028425822265135583690720542720 340721839353113391803727565815808 6649543004954128045199607981932544 -564902814759800553739184058759380992 9877473809649715789927947268259840 3885783547756819894999115733401600 -592848316687286541937003066629816320 4205385744539129136991361436745728 5892104484002727027724014999044096 -49780228176946825461801027943530496 1126527310793575258885597740138496 2907403865531487246304884614496256 -133474787778293473761307636009009152 226546115139559215638226067783680 605826000112223356008473263341568 -48282302610162948464076934787104768 7502096174143291186012385473200128 4524481993532050340287743101239296 -742480584926227563261023789200179200 4229857932705547068807992567660544 2825820942817004338699317475803136 -523911104974210396167032205385662464 9000322968533226699049629229514752 1269109091241008159005349750243328 -659945170623040085055934619732410368 865984014937877589142188316426240 165084206930182172403720924430336 -315461123193845129035968099324526592 5054926054783302778536498112233472 6074982201816986587351620360601600 -957441689864380214751363664319610880 207915902362578074024839449935872 7570149036861707722631635387023360 -389590393627302691335353329537515520 3048338890942477702479705024757760 7411484107494016441830081552187392 -861431180662345013450274073126895616 7657017164277130285505718962356224 9407790531545479584891791195766784 -282755829941660097340098981581029376 9427514346763304799003428471701504 2351509869535582307640117819342848 -584999332017942120866633948445278208 2454358668033548713482088645394432 6746402291534323290271037924573184 -753224927509718102546920232261255168 2669044653110295430538085860900864 3549383210825579159744177003036672 -599107194302196989806914718935285760 2312508709322340603504299043979264 3899470564971748876393755147501568 -877891823368203718352124392515829760 2418964198592579206139072535855104 4430538962778433092392190715363328 -672318309647061138337173694377361408 2927473516793069339246420083867648 1341703308156089079267912534982656 -692792298870318982401230330686078976 7317176950421438001097511377305600 621783221624121454245758812291072 -30717640979431794665540319935725568 598331783359087545179328726695936 9456878772506562017915886089797632 -529217097828354057615536841461596160 8877881743977765752626602231988224 5539717241953510139144079851651072 -782570255167460586118300206320582656 6364507182842377936554939297824768 1713428484136651463097223173111808 -770414108770118101340796458167697408 8892700887592385111705795323494400 7009672910740493536747464169619456 -999734343597929688849281148514205696 5045518109294829319040010658250752 4210632670878138162696855620681728 -291927516725090840549601444821467136 7993263104520653294325853077897216 5360724471274491921700352514064384 -9892484105953796090726868129415168 1122737456254315597803728811327488 2887932488520555160545364765835264 -843146528060397191409323187181191168 8044737003435411411819491082895360 8277885659807809173026264353603584 -214361176096137444858644748304384000 9445565317012200337930668881215488 4217137666443251429053546421551104 -295079711566071656651350036589838336 1386650576362257321466732912574464 7249440508864695614050979171794944 -250639374914488431906738082162933760 2022506377163997231485466588479488 2373407407204213516919815081558016 -903450064708826747931975607140745216 6034507424886701516556831324897280 7089398073100339906961460114227200 -608718889888668660493106758230736896 1570432653975706844170297859375104 5873493666765067393418639420948480 -600548828167059603609531137220673536 7321019331776157798518407869497344 8103757151672521479456494408695808 -892960510412035176038550398883069952 1376358701204578762161378646032384 7724881860386111737653668704419840 -698668571037273324019639377907941376 7101181866011702628610857259499520 5581129067915871451287742142480384 -249133767905963769846304043683545088 7563119158481603847617514460676096 7094201016022217672684238645755904 -840085069351174638567820746932879360 9107122777219970382617382003671040 3471486307846776873957626178699264 -961918286127200939542477019132461056 4176048050426345119782540519931904 3225195330237713143623419393212416 -397984657714224874300293707814928384 6298463973494779452841831146979328 8665028328827725614954726784237568 -386970925046007876894566398749048832 5681918988206065074692375260954624 892510557453802748384196478107648 -236639312493490304983391266551103488 4680820495311930526858505770500096 5171045344738851373261859057565696 -191618729215662793679518910969282560 9492986839425398972069734468550656 56005999792315244695258245627904 -891051182483908600744325398436773888 4907193132889624920850244833378304 2689276491559642175367074902179840 -686438370846682649221886405817401344 5939808342989710836259083203379200 318865865002669732938039141859328 -584435533403335145819252236901941248 5761800872949295870175682181988352 6021041539791130057880335347089408 -758797970131292801897654390932635648 7057840206991752166485630176460800 180809791890953412642192469524480 -213785051895169132146307843535929344 1816038983974643414982866407260160 4139323793559850311233413092212736 -976334633665723007129568246811852800 568711869288159723210673972314112 6998087573953537701705599592431616 -927476070538651102534109133730217984 1645352398974042594237952500432896 8547036489719595292064810314760192 -39412653358209784179062154490544128 4333424550083124433639201258340352 9226806769296629071664049360470016 -948863765012645072267347439562784768 508690079650515363170726478610432 7249765765878516959058944820510720 -901414173123643052498247169574174720 9966652269487938621241909313536000 985873854485501024734408060436480 -246851138913971809971136092987981824 328464169158353030477092216635392 9036960098227244699120789526413312 -401702235921669361228065905099931648 6561473401525025325200728788041728 2902598429699511768952458121838592 -397358418252085927428324981550874624 4325148887603324144905129392340992 9386594640813162318267903182372864 -814296091897019033816376638911283200 693145207543841731785839584739328 5331289530897093880542371652829184 -707335845715684870047118351501623296 114716385924184167383773181116416 623396387923118040842751688310784 -8996880169288104908515994457079808 9317847594626661961163343786934272 8818115858687538582993876289585152 -239048664179076790852896083224297472 8742644757206294552068406437216256 3706653655993301417851537504337920 -426316341436309026267876530644320256 259268518999493879728365090373632 155010450556024483059979597643776 -592724343769247072635335780243341312 1261495730460610744266156058607616 1636533762902798216961873042997248 -302207857062664753086461951434817536 3810661915830280907573263673065472 3727437398978998485450819880615936 -747369657173320694657050455538925568 6934874854882511486674784011419648 778595523909115900197411244474368 -511985609579778407233267357588652032 5612798709676253387233455205515264 2716949763588306312489453903413248 -138985697949800627573130570307207168 114741891018287129640127371935744 4948052991351202954420156299739136 -35742652113061639315663280121315328 1712482780436700247577599189975040 238658730954644238592641828126720 -551726740940043330694533717703000064 7177342915745434597795301022498816 7221147247611206817121230974353408 -594107279214452156313591740324904960 1888927303768379515847999091638272 1104359342442760630492893674471424 -47415796153937939837727610788380672 1268311977130518086066308300931072 1525682159500467555949940645560320 -815850211474808505403974068186644480 8019519650844608712797379216015360 9314070973868950147728085027389440 -710548092161314569548884430546796544 4323439994719380932395496284094464 9380911087066849947427858716557312 -471925274210802546566446417199497216 9891974659367674133185218941550592 4016031833575753399877796005675008 -239466027059541642449729253971853312 5524173970405748774998260769095680 7200740500909260822502306473836544 -572082706114481856583512293984174080 8360126202306235243290432559382528 9838025494626312647232513745354752 -15744712074828411223197701136973824 4285562694630003756845642752720896 9940092380779070994784968138293248 -937182605522363636755594816182550528 6991963817596797172010349039190016 545011924127091919346720722386944 -970177049910601968888264599541907456 733759121088743198642110549983232 1306979518805362701268476491726848 -585863685708292440927405985656471552 1119307600276822878194124193792000 3417096705659507891089199075426304 -337084088424914703487924404192542720 1020286271459181199878315579539456 9473909045057066765626698213883904 -553359246688357484801071352840716288 6992116473583219955935295794315264 1262721018413477918116410134888448 -439333139581432800087398468225597440 9934221200767738647009850216677376 6738463294661283838532540537241600 -688275903092918390895738054258982912 6194398919342426717300726679207936 6846369822954775766765976145625088 -968190264374224232492559672320983040 4639690014378445462659672930516992 1696212376777202036039038896439296 -336632791778343944287271186824429568 2683818145486887698557808249143296 9054589320458918050203524514447360 -210983798352622254658301477374656512 4234892030141955288227606733783040 499832982584854826265634012135424 -669982578996658353115136400623140864 7938408876921880526624054164062208 3331874412253090906273473724678144 -500961687996225116591976872490827776 4274516725551247144620045360955392 6806036804530486315408832780566528 -125458999814032764457648491495161856 7374707736779394862053953426685952 3441589858195497475733709610024960 -213701461541092718700001218432860160 4195280290632977367798165813592064 4890273185380500750361913752289280 -638399984122656541807926558125457408 2136265523417211311548351993872384 6027229417241172426971724419956736 -39300987781546485567441249733967872 9711387815472457064236697776029696 863636401958867297610179599663104 -767000429182866579560863467193761792 6853672198145971578598281174843392 1075420441022800296014514963349504 -676271976597709229424812307511246848 2726821043539264873024859976761344 3344790198082240862736812253118464 -366415145067090589062612090412335104 1553102242717637294304984957976576 2950482838271132193928561014341632 -494977905958233804314453538494218240 1454467782230753839152042153607168 9286306637252121002079358206083072 -905368821991515935194985727751356416 6528707497043283050947242551672832 5093245645134895935070916413751296 -143093480856587345562490054117425152 5398562558160651969941253883166720 2732693026358193524188818868011008 -354435974480215081895356313423052800 7234862635804330053382470637715456 4703107599980980905648918152347648 -25130362612516738735520636695740416 3015608659797555957522112683442176 6712080969828921978705475564208128 -326108248337501614473559104670400512 3193695425068848884633812682670080 579848199896857863561663913918464 -504489239296549645182299310613594112 8457495902226264622230701472743424 292715446893641816503540284129280 -934941809200109816874999541590392832 5113296576287675837470288465887232 3618903172395534514349165707788288 -436719939451529205179286669110542336 7284753587713973268551214668185600 3324766429841750175236414809047040 -538044770874592712073870702232469504 238800254625159619249846205022208 2477352660369251269855018529849344 -13531165174206314272755032730370048 3297056078359822871471873647968256 6501760420680869782379735073947648 -376010778014665460418656925994975232 2128158232854040866724898928590848 7620454096792680098833905404084224 -775331933145021396093017744541220864 1158435449264466796208083729121280 2849485415744201207905918358913024 -199027798617287331241912156102328320 7573548653626643258092541773348864 1296667494451347205252173881409536 -338108740032169191723136206434729984 5226374689971245200784041588031488 1942187917216458123841233093656576 -531167370509510293083560829555572736 962037279433766185910610438389760 661937673709575287935710462476288 -925372792174515922561180221139058688 3883726695840601459979618996977664 5621911918297106433086365471080448 -905461828670249175036791454546526208 28542124258253596029160324595712 4302000197727579426858334603444224 -652705933693688906471531723458871296 9626997388485914536345274773667840 4239547522471020289244549225644032 -269788252850851886134929814989045760 7255440189025184287817864230993920 4299642588376897716356663889362944 -123401188121500476024893725885857792 701079514792394105466244229496832 1395903306937363170617448118353920 -494330790566401235095111652287184896 1898723454634795012032920335417344 761172298048361280864394160373760 -540001001924735859316350535853932544 998239052750820277770184342634496 6094971168597510863959348633141248 -803903161415843548614472715810635776 6597859255135877072080263161315328 5223284913538047463340668557983744 -715164006750802694093799863764385792 1605636939828911029249354797940736 4210545683448376177109219623829504 -34764634351243820304598428649783296 7562118482602473006489041171906560 1595126520710722553682601558671360 -137988442990552871799911834378567680 1142846750552718315081595223015424 715466471974868371664295503593472 -2391360802482259198594598108659712 4751620061502091458106734929772544 179719548132238328578521293651968 -534201930814423155328501801157656576 3435169249691648581855681661894656 9375557565894368758436837579554816 -738142118506311430390245627858518016 2785303527984528919673580780781568 7834492311005415044316637918396416 -628681590361128976137869960046182400 5176700647175018532675728682516480 4937624053416842009982868052246528 -399666293886217525669110785083703296 7117429168499262220588532711292928 6870430412876225607680241600299008 -168805908388865525156455704357240832 3120639015740343670812540904931328 3734804497124130675044671977160704 -998681329070680321949888725383118848 2249998805416180353731086631567360 2756920070967317667706374809714688 -372470559305488175981951068363816960 205467676727799384971111714258944 3702852693713424970638863124922368 -706464053800361294067805008062054400 8557443368781703151475340357926912 5796607414514189792688299409670144 -267905721961303822302081838896644096 498378726070404895322265329074176 5499529087567384750667215537176576 -816475034721394664745583916569591808 5982563652121074444926861847822336 7282488911185816037093475935584256 -770971506132451757603830536580628480 4670232305299144551918880782548992 2890379674908059699835315446349824 -896895603415115320115934599999127552 2083034304932539068244570692124672 4489795672026633948159622298730496 -988242328473398379847845815097753600 1021603142821748464791022429274112 3077266386821910830460749962280960 -975643963301530122561405979486846976 4812684856359710177519216063676416 3527435950865346730902489602719744 -851121421721895882602320036339122176 8657774492281527725403500523290624 5284150532346774330740594490474496 -784054439237266399100222595376611328 6357076597592909428836332122144768 4020382809186530175787731731349504 -544578998018284288951587827856965632 1829320501737947171060904663973888 5202074961641295752803565648740352 -3828195946717900407986916320870400 1637283712200417507094345734422528 4622898235486038607296110979448832 -984827651018748234620999625324101632 7497018791001877032885519445393408 9097684165737749968586973353345024 -984394377010449454393292462699315200 845810964811143083793848366792704 3498975542627399370835022112096256 -777639082498729819358247221905588224 645842813739851625437854754144256 804761860655499231772123074658304 -757043047541652557844177416383102976 2922812146692289017117051220656128 9144076826978520529653696798130176 -820306382361372666682815499726749696 7691011775305887951205340431777792 5455693636903176023795368133132288 -877789242868540269317297430857777152 8442329706792951798291714711486464 5024634562565784908432385440219136 -981831280026618430441461724886335488 8340307190086443470276309502918656 36864190184883154970941809754112 -189091799124550963443913784618385408 2356252842092442720656582984597504 8725459854580803958993540322689024 -503203262894369431919719206625476608 6780379607041181648294831003271168 6948852642317472207471710167891968 -977316118738301043475128377944309760 8230426479207789025322363854520320 8835952042811538800844412526002176 -245127255864097891128280351592415232 3467196756263841769224612123508736 7714251730872744534228451127721984 -841139373422981617661702879221645312 8130129408011540234542169739755520 8706855830037471220130673999216640 -836284880412067042480107703645503488 93795064392681179016388038098944 4570142587439678417976590308737024 -522774276966301641524308209808965632 7202661883454337166672313274335232 9045712651326277640978365729996800 -302244535694182632356828091326136320 6095101275966058989590361336184832 1010453758011575505196355904602112 -803318876384294426218452726442885120 4609536845206512068241376650723328 8739329031652175803686556184608768 -415354407226583487795260126371250176 4339065188046010815182428692283392 131386805760464934344107118034944 -110204512269419674844156291702587392 2545335775924394207218860176703488 7760840749824693354639753159376896 -231410098977954022095520945550655488 3976458372428707261932881945034752 9183672890394647577997435062976512 -625262711195532286108579826407309312 9843713321977359527999321390710784 1091625180782251493410612394852352 -549944936361462532595409229266812928 1300680561052724844459729293934592 6032679668909143978174947149217792 -207122768192944606698710414670168064 2209963399056826375979376805150720 1436951856934740697976521325805568 -434491607646406004385539453867786240 956419306704392661763348167131136 1701506561573630240673625500811264 -15973923707058068143887227287502848 8590679590761766355830388773879808 5456606915437620196834751719407616 -726640121947789677428013758836375552 6013564566356895279161663786319872 8728820536023755702368354705604608 -325084482801756056777875465768534016 4782471136640989576110291069960192 5396582470176072274316219037777920 -643813820085369848966947525722374144 6860431432531293730245317771657216 6793166467388200186276959693570048 -936602757298765647951351919398617088 9762496628651676045348119718658048 5524137583249268715969022808555520 -883913701938205652689892534921461760 6795235110184582090914925138411520 8889306525371640757680279469948928 -335570034893860496840062660157374464 3244705900533185703893787467579392 7090249307431833869286486992486400 -847690038773607481309734897478270976 8598090043681161717685124182573056 5455693280795445567129101761773568 -749507965471747458775208737932050432 5281728123419860043277791033032704 6426061090481204180218712957124608 -709520663948560999223917594896498688 8626777314358442470159588152836096 86257695416442775508987538309120 -526701341185134614780078977210908672 4487103974466599643137407029608448 2797856470734707703335846393413632 -356497825942472807360242325538209792 7965391089329112511247820408225792 512751697262530130020985166888960 -404373760138520683997008296536965120 4712825507073443281768689514315776 8919194320355046622885326069170176 -555567449239331001823610382743240704 6919521206659425990301602661007360 4973897610950164565418910341398528 -597775562601925385015245612701974528 6819352947226095307121317451399168 2143135442004056061998470682116096 -827893986105248900809061595353186304 4125665195025484951329634997239808 3345653580849838241095583744917504 -918699720252462593568778540806045696 9349202830755485307433217876295680 7367445615486903383894292026097664 -481011158373860175039780103800225792 4899760631859413820337832698314752 4375921547892493809382848227966976 -954904244215482272046995857052008448 8954172153527856718401928416985088 8377281594800892347589893231214592 -428907934606212332848661091806347264 7552277276097852989359962781122560 4341932828449306717147344622583808 -745625422817781876859480343247323136 4922050565627614561704550869237760 9196173289463100560976151549313024 -924965749020393649926735381043085312 7445119163608456259718907900723200 9073090971570524443802278693961728 -150894376054704796660979949524484096 1276474516149901866514342976946176 6891020670295649352134347821416448 -962750723096170826609382282101784576 6079929836749994636428074733797376 4626878385728076555740171779178496 -410599849835647324548985439362482176 2356109402641185864098281236201472 1140578115085999487874005527953408 -702989638658542046685717931367596032 782214958717313506678519776673792 6250115693168672113587174506496000 -632387726758909089002135045055447040 2405338384383864351448016644734976 9588746268162428953550117675204608 -889427008557550725529559680860291072 2194898138654483779699108730634240 8299828891760222623449281265139712 -181940391680584581151368057423134720 5776658394675223437606989728841728 8835495964609506918168328591638528 -171154984268152172854470440109735936 2354988293389976017797096327348224 4707978269879402205959437940686848 -473407956039625659639756234797613056 1213987041037576663790956660654080 1923725031004006123810302065639424 -774697248845292675425700366262468608 1130438739305762216452428788662272 4812603666870965469356779689213952 -860009661481462422362221115699363840 8272721769669027327419618535931904 934046325974525520431255165861888 -843368525974240495376148916282064896 4785046534690966004148107523129344 918442823046780285622288727932928 -603116405204154627953233196841172992 6915521297061308134700696511447040 9573572733585549843882220982370304 -59895168084731857850623277068713984 4338183098983462463407919151972352 730062966842874663133536275398656 -932191707121301868087044496370434048 2537858200785513152095453402103808 7904971428026078812348212756611072 -225523712271191057638386420550729728 3931177487288343141274607671050240 9926142930589778964773122139488256 -577087841031015841174365178104381440 7323537266185070126061626561921024 3177938523259104512248300573818880 -568569269103581743064276415153176576 4057447544750806149713958367395840 5387873740074045350023272914223104 -645493611423756702758461484178604032 890718870914137042945413396561920 4934336468662055277251275870175232 -326696896251086654614841193062727680 3426545658859689375621940795932672 8446178509316217624500865092026368 -641629428175734504644595408934273024 3234509897807995470214963893633024 8565513575234995636655466836131840 -984946358407614346426165844621918208 2994046757645650057356091943026688 3331323781799493026492359714537472 -552075957641042942548507418809073664 4253021204171461803202363514683392 4136979425699740500450842438008832 -408999646951585463063915058664833024 1066044579854168596778266788888576 9164110666764765886809818561249280 -165396274251614057348087177604497408 9607667264973291754655523721445376 2016024091326365065237301326512128 -744234186841095059481874258789924864 4007080606383101050618197584117760 2785308609053474525990349357187072 -291884918974563959477055082194796544 156038286295031821251588210556928 4021423487262623806948325086724096 -136033340153618701828771147048550400 1490148306243764045872024772411392 3950048430275163982568768661356544 -405810411261474696590227894544891904 708848110404835495118937954189312 7107850582258101467860955926888448 -299063220522569032805575378308431872 2677091942628334235257663993675776 3312156284465473232575633121345536 -155833365276453615324410859900370944 7974302701112648832151759762751488 194853066698301377446442470211584 -928418219984928380667374776201773056 4899546791337242343376139912740864 9592850448502550890002855738998784 -823677413747829905134738394006421504 8516626568898678647928416341327872 122001324402556557059292756180992 -461707707027902154970539504179347456 1165896230836725311721837372112896 8137336411277308657996834464071680 -853239363839552265337279814572179456 9760978686982355369435491001696256 3903860012338380815626448232513536 -948445227448455209938989050197180416 2398010250792621039819184735780864 2839847849234717639257797261524992 -883574275444959919796719917341868032 531693661495378238538832393797632 307236307669419556916750788329472 -298017638090405739654503896738430976 4358606393655113448515771031355392 5803519774556888792695295973523456 -328245224921125474243211473373364224 5613674156548631048050134227091456 5074036800847701594413933835321344 -821753987175516039791685141184643072 5574630565640974746569528267767808 7404412598174678672720413610475520 -234673294155860328920457604371578880 9686134258357659764193744667017216 6152171467972747220732455168245760 -717607898102070453694568342354919424 9844401735132124470087015863418880 1296104512854495680785329344741376 -550847068221396282093508163404824576 1803380557759937835196217294848000 2475509119392228568242702402977792 -465828112413288898980388756185415680 6597773779676757855995904682622976 1462271237610980378960450415493120 -192515722987549892930295678137008128 1646986414475184862498376644558848 8591764503198007094335103089770496 -745947745559419320175498329090686976 8687025413881349559983335809220608 5884239205441173498218945900969984 -490586824778638057648471403925602304 8140767697946536613673480317042688 1822769937817916710476680737587200 -288969119429052030367972793117573120 3133012770528361529704172400672768 2402593610506713766739267727392768 -851331488472272630289977825168457728 9901558946852891914070760857010176 7925373297814441080779185265311744 -527204163323218172892009530363215872 5393097358033339717051345629347840 8689795927688080481439517203496960 -837171722993915249655850271739215872 8071666048933390573778910845075456 6474112753495683646272612629217280 -250434152424863643024347689276932096 9123979156189860421971415327047680 3556923155595026594850645290778624 -402025794227457768196761582215102464 3970101329411679781353312470695936 1338168232781451969860735359516672 -518022782338008932026027204939874304 5667677444563408852994287984443392 7579589798960145455830346388996096 -522685163151438176329412374094151680 784939070681415922544825130287104 9679997452456056614182596592533504 -42852805331466051519692969995141120 9266173988475836767010698626596864 4605131594369951549724047183970304 -364691861016773100902740983736696832 7583168233765659665808442848706560 4454972324529478352733321469886464 -735087374661906045525563570057641984 12029880468181579564145109368832 4588134792337053249784945984929792 -833677264318440188148040409985056768 7240416162012791189357224542601216 7518281817767531498134880345128960 -758229754798919192765407057428873216 2167676095541969656856960105971712 5211924227213969903370338121547776 -420641610676726805974718557315923968 4788615060664532620298515535364096 1027209756108762362130263005200384 -252315113902856204048508227273359360 7796068664828614727585276551495680 7501585564357120377008724415348736 -939425572100928718048178804191395840 3793070058642128110428040894349312 8913273591527358054206087662403584 -730053549573055609613187300343152640 6433159400500275271889410567700480 3365859290977556965256858773225472 -192083966255598778380946512455663616 4443049946109352265388502892412928 9573857906967510009387771582480384 -565073160511136326180721052381872128 6265474339577594184136315310702592 3525362154878350416479789453934592 -286963313836616588824589086077485056 7814261329170857099329420270764032 3685389562352667954656148541407232 -455913903436638622004039183409086464 7626577876120512305006108391505920 4372360500805210031233938191548416 -63070247010236865143067347213352960 3800313957124476202576412040757248 1791674785996702360968196712824832 -214192155464521794734387423348785152 569148984836882638504668996567040 1519817560319073000881887834537984 -415871840678044663954028990069473280 8633558579988311237355266092564480 8856760781227040946908340988936192 -660932477428647571118185222982598656 481884738823005533160753971855360 2066958897361743424380188414181376 -906054988537444735547438802267013120 6796086485707003248183054201520128 2058124433245279886711332666343424 -256568943031033515149449148632137728 704253273028544020044981620178944 9029393994456052361875660294062080 -619469141465946173263608895185616896 7939469323511291065527506114183168 4336812848847254714247302434783232 -895110072358833321858586450096816128 29541684111826335140355441164288 5425761028826068163088041642033152 -738038411783315002076367603841892352 4278818087933021795308879757705216 4508894045424903994267600311812096 -838104650101780017660138964440317952 5274738936481089348072875088674816 4717774205829016458033828059938816 -388436053949789590975859992700125184 5165709192814136911815443761594368 932426397661319496323452270280704 -4620021239931031357318544758931456 1052116514710811113155963832500224 4459412117415235651205040531570688 -860613367426786739685861731935977472 4656838182896963117085800261484544 4675077612898592970729406634917888 -252180838893587205012022706246254592 4493616468836672976754452046282752 587799076637993451291266751922176 -122782919178513865141429364611612672 5097007005819509300436614005129216 2644572067394591661293655342186496 -349967577383144800987944196436393984 6801890727735536571172094163812352 6133812815717358137332235161829376 -172239472168299744515903085009174528 9671831623823804110272563477741568 5081446321978225482201587832061952 -514412643461149145060112615547600896 8503274066674292031439544447401984 8754203497448879521138810233552896 -231457195636602197505558194019106816 4148552394477179476420652215304192 1163733507063934126039932510142464 -272598770131924775738202572124585984 9271717975773930253568198913818624 3526404638224373444658270998364160 -782636543788349990295433652620754944 2451099667725545107674856786231296 9805414124970805458824856541855744 -578820901328790001638810704607707136 3959649563529997894885706657955840 6998672752561157797112781765345280 -755333184780686447136176798338908160 8920135323669072116941083149074432 5798127545188875638841694941609984 -252709118075423522265613892145119232 5508037553222664402881158529941504 9004929685777615246863413507260416 -488166467266654816854844871679148032 3553646643244126703160004110712832 1252449862028454327209337974423552 -698237560675930031526710598694862848 9763367209371910785110442046914560 3311338517599173576647230187634688 -278583518136967896337239988047446016 4131626649027036299124864601554944 7209374855583758958926200464998400 -780178495207280991556252678811025408 3317269265769624087851578419052544 1725207025556235144686316766101504 -477405862072812428513101267133792256 819102954735558745327140260020224 1029268479311754859000628173078528 -29440822200162844979982097522360320 2134811468005710542897960611479552 1391485092491463511143126447161344 -782962693298351943110876540178530304 6514527173273104890915003450785792 5053332066054413304955581639950336 -302550444619341546224446586822328320 8066907687322149912715992579964928 7585971809779276157082463515967488 -612765482242503348687766271909953536 4678485561956201181849702834896896 4447604236287652491044828775186432 -466244376670496291715077902367195136 7772124934680315676911245172146176 6226743370554445803277089215873024 -375605806045935089425143847737884672 1751878832712023642648183029366784 175506376745507523082580205240320 -826255716439387677268619852127404032 5463562822200295107270347954585600 7966233176194696343607952971661312 -950319346475827779067501073582260224 3176841781553561676424689940955136 3936605635590094661775204502470656 -750973024140012797318061356620972032 6143458232482919742748821632843776 3904277729295368424912682364174336 -414727074516525730054788594798690304 9912350864400538162633316688199680 7988351603438181109012035656482816 -764255668693699318777861798600114176 7447068427542098447365407015698432 7569636147478039812095413107818496 -554363790816586854711970673259970560 6620035767643750884794415819259904 1384478619188036273455918391230464 -344303515537611002463603198718377984 8207570017871511987615490870607872 3827267443893994694798578108334080 -441199511986367723905181542453870592 7040571133825999655516829021896704 3415253184601163283426867643678720 -447412287279889262845156419015016448 7253510573936807658630789088673792 5382379177267643671467550973100032 -763793452246161790818316854073753600 3245589447915171725988188980772864 8204850035268804024781819151908864 -582636644698135031575855001835143168 3947820822438831994923358307221504 158126392095791513478578590187520 -314711905311185352003229409362313216 1100253579458536754933109574598656 3894297000836495892716175184887808 -554059887286251062792425012562231296 5242276208618038911680176430514176 7216147795025781639055671765762048 -467976117673501579980160273831952384 3996565491535600781897613413711872 2729736243252302948006047858556928 -594085547733592284664409152060129280 4011196227600479706312559642542080 2695231303371022832204473987760128 -368704869241820252637308095287001088 9615826942609209818770682429833216 9739343404156227417113966244003840 -280564878208410218535382041866797056 7658086744518598584326135251730432 9868754455447869370021197580861440 -90400007093320779403389330752798720 8972183199806287165201207275814912 3508331879275431798011633439080448 -131414915025591256664963416273715200 5113525274677050896680101638832128 5772793923768130214923874280144896 -120965166533526124763678417971314688 4709934900584310807744688510992384 4153161970052622319768165859459072 -110670913867858420598605698450849792 1201613989307780267687647373164544 1877996013166437187380377278218240 -178960839662922164695639868301115392 4107249960319112013075856987521024 4729872909379624084726941053091840 -843764717107840961404289777288609792 7403813912560891610984173233242112 8150989991707160790926549168685056 -697405321223343559438723181789052928 6895085031071292803641857930166272 1172716137041083483122244020862976 -323564861489534283148275962368491520 3249027907961745020808365002981376 7178632817589636028647263763955712 -216365952225764007071318496835010560 5148443031630644948485262125563904 7593423572866904324995581713842176 -353114858642665669198706328821825536 7174094521222775045277965478789120 5395595094095332072169891174547456 -765707292272575261405973377827471360 8880204907976211508901870145896448 2303251975314705492351924802945024 -499070119864613851672950739201687552 4986730573891686798958982636503040 631295849217736697666649278382080 -317880390057657642418916496787898368 6396293027415858076678568988901376 5886209990955066957652568091656192 -308080828770222968709719497272983552 988598072303803572757722667417600 7459923275880628767274367862177792 -450874213064509900629086213895094272 8448000421254589441077109111914496 1954950769177951672926388556398592 -563952918691085630295189467131019264 2950797814927222196150821332189184 8420001701870593872405125549522944 -699321192254779711292559641620250624 5469530818642642449538077392109568 9935877861583717840444075966201856 -215830037607507356800941631293358080 3521476127054278282762705694621696 6343639049743003202180402481463296 -990643006209601310378822931725680640 9862828112915845292482958379188224 6295777571920491710016539427078144 -716806516927976249900031795724812288 1252506444479439479099588660428800 135992230451636199977025391296512 -35055632775974400879845716682342400 9042069249574111291052945441816576 1630360462386314241751033369853952 -866674700928869629544470901763866624 1492744834429532208631971936468992 8656734729128043939190733140918272 -719057365994804648393383342971551744 7131813545231914229439022095138816 6769108328935293252691561487007744 -58081049601868370806479167237914624 8367742858804327537739243636916224 7400457412682326615427042752069632 -982809248718172233991608238908375040 3060616056425933547023741719937024 2511256567574186870852713764093952 -393366020194708568622572145131651072 8794149127116675897474666905731072 4456670927898452068949731395502080 -37841876747173829723782900453736448 7271249691376264863322465904885760 6391287497559966455147665127636992 -674338253454180931051624598123577344 5210797433584967252103828885995520 3007001534052192709636490073735168 -696193176562896099651957231668166656 156908635232200463206790778060800 6039730356654039364565163015405568 -597129067374901578886294888463204352 9346946687622948184545589347745792 2837758329608489636316182873112576 -116508718539971842583910031044902912 1073225440984457782438792131510272 4456753040018830674132483633577984 -443254387122055783576668513809465344 1049011748376719310877005323436032 5464612725968795413378489533857792 -96469239499035920099495203773087744 9609138681923533181165397992275968 1695888272573881438953749717450752 -306608081904874339923996437792161792 2191999423946718892324895345082368 3460904964179524046565400597495808 -226674057719103462470202453949153280 7979317215720638319672751336456192 6704873690286119989350266610647040 -451308760667193494231137959656030208 6603847603481708120946413035061248 5394271454613730510535448040833024 -281450126988247460728426948932403200 466713818428477919859235195191296 3005706239525282161477360078028800 -881781922638114699083612047139667968 9776947731502742299704885193474048 4787856410600871640997108492795904 -230122915381830192658385098831298560 8893739765055164138849664917045248 3868886667687106762377516340477952 -468747587521038472728902881018642432 6421440488600040057906927327248384 1028024385314561150558176907624448 -472752221914143868800336489468657664 336855546309828998868280413257728 4702147921052119590266113045299200 -533400946678554666540355174315065344 5545228939172199207183891814154240 5914569273820534868210806438232064 -775024208061400185539450814326636544 3951379930774283233183767860346880 572817070405091420595465148694528 -572734431905388890699615891747766272 4626053397938049591313522485100544 5177734755182612005728714556964864 -485503733849895833347123491855400960 2098119950970896988042678480404480 6351283549240516947797755230683136 -212100827278970354155876928895057920 2234541498917172381667256996724736 6640581488246507352568290984591360 -905875833275835631036151202138030080 1097145284019484980434233896992768 7843063490189336338380909384302592 -132772562123607101918311567889268736 483944341611878218119466815848448 8442404596385404478575409266425856 -25685452472709590674950060117065728 4518848174286992942656807426326528 3546244336932505264659670209921024 -185742884286757807835719639272259584 8541254954366130063118080455737344 91372529536902871458513097326592 -895903799226066716486546429969432576 6709153782789387217735510707404800 4879667940786124276703920885071872 -718872683742269245847158248412545024 3428263054459136968152241783439360 331873553564307595728298144956416 -479645997295339693858486261167161344 2230422799951312231748895657426944 5950501285781097836784473759285248 -203294936629054757930636007908048896 2127543137409063579837370225131520 8040717907109950019077247588106240 -221310608139340195359306531093872640 5779622814724588558157377855029248 3656326884140567106859753195700224 -679229396726406480747321734079709184 5293520369896145982731576240242688 4650150666711065196527816034746368 -709499143174250254190057932418187264 6615226524825582244114400075055104 9362227274494602650590669069877248 -37313308343249526668412791352721408 8091786357327862689871375575810048 5170336327978857145709954462646272 -116533422922969800563019367372029952 4215618872815750981692787703939072 609310983273677211772998370983936 -271016750142415990396638931764379648 2156904671088738345061193019817984 4127002102021163383456722212356096 -702301469782733844597510720353992704 9128434292031827506496513893203968 8983558914420402317623945378922496 -118974646239424506259236014753054720 8762233660263656717829045145829376 4109804008659882398662104088313856 -56896525935755129974569767584923648 3506654347734430212563180403556352 369802493174241604205064166047744 -178100223185367084789226313151938560 1872822567251023469163837038526464 1424275906467486808041601149960192 -160150185326131716066187467793891328 2255278322686915639119944064434176 6106795084978089223628873306996736 -215398373961264831669983463920893952 9393115941803476032059011044999168 4625996295061327281721841702404096 -601813849209199248645151369807790080 5170710776097102179790449081843712 3322692402071688393510542731378688 -396574145434806723462904932909187072 70221126470671638233783029727232 1398998523599649400649319228375040 -741098022128792732415147525973999616 7220109387872822743403348109557760 7145552077642733252957628608282624 -165625106031118665420767460908335104 9249055024579215678962761235169280 360960815843076755665490972508160 -643926128372097938853874750948638720 6703944545317314857683541456584704 4528157376802270892037044623638528 -282979548473185916549557804412698624 1750607291816482092527406505000960 460446883635448348599209565356032 -903854758800435336984043482649722880 1130191607846055446624513678114816 6393058205916210011208083816054784 -838879503529458970165646392442224640 4442945584775209912176601234145280 640157137005024009394388484489216 -756774730774919968214175472123117568 5322226346868375402778769045323776 3153664794269504455492784384638976 -883874875290696271487069643876597760 1411117173795431132670939531051008 5729699255016956013034134378119168 -344992102296377842561226503295598592 2386066092829688151183991467147264 4358510212661275194425809399971840 -799076792858039205214732841455190016 3677480506892276275506137593282560 1783329952034772372683293137567744 -236305939910011486668918720001212416 6745028007285469397637815240491008 5317143650874952481874971725922304 -688382355291198913235186905558024192 8061140570845051083053316828037120 9702754208350149209774438672760832 -56587794704712918394853040247013376 1137241290076205165665031116816384 7490780650915817183774408911618048 -942695548849029100741099652389011456 5081501453818800330493762180481024 7898003971479533756217391686090752 -809430008935256534095230361791365120 1332272878618375704215897509986304 3100708875671573287804838925565952 -244806232631980715663529753784090624 4868022635238349993586930416091136 5710871754344122169142830249803776 -48712931433841220708575616021037056 4914670175393116938122547844612096 1276689443465729138335355838136320 -947304351695734342152900139460591616 4182024948737681872360300850708480 8881971433319851333405815454302208 -143417053122673125208109058317352960 953149046703403693287861070594048 4176801092890497178818129942282240 -824566926049430844773391478302965760 5448159084816437129535314796216320 3957042580063041883320541914333184 -795531149598734450311328253215768576 3133314571710724729385877128609792 4673844958174456068091075358621696 -883649360995828882298782887341719552 1729401903615351404326293283536896 3725669990997064313870806853615616 -842859908933071512944613344828981248 9532162040515012050402378921279488 5566070986995701070974563563601920 -766173231057802657771857113409126400 7420113215333348025351827204603904 8265093288558245999270818658385920 -363354627484851817137826362206191616 3624942148642352229869573568987136 6636252304388189402213591692607488 -198014523189387699357680946802327552 9618172768788753841108631236378624 7131649179800226365365901613596672 -787815140734074618691504824224055296 834316855326156162572229812420608 2343744629552854882743155079249920 -852282305577786687569825068539183104 1276440169098828524950875963129856 4663767229047885619914253229096960 -959381028639595915412762260481769472 5650346278044124392634098001117184 1565362177091844058945816381882368 -116094190850619966826183915420516352 204505670655059431046593422295040 1101705608578482599704907682414592 -634432224352772041854494732053381120 2964000028302407531850033545609216 5966676323619992654465191557201920 -996496882105570569972205828922408960 3409487259323704982308800576880640 3322111507830242460242214429655040 -583467357824219310527011622808977408 2376651902700330991078977489076224 8572421689300663713910055564738560 -83785537135336923319775298070773760 5220139044399486867850161068965888 5998052184876921708319695634956288 -432857747493356362965759763891093504 9445877142193937390834886343917568 7181589860106296235768314350010368 -342466399024198454359106415105146880 5216183321615133573777907385368576 2218444209001782522191330058174464 -25948072797403928833774945658994688 4001897962402985685780345223380992 3241501020446185411011788733939712 -747352813968657438780956255769853952 1047921854620908671347169647656960 7325330002733447579834847309332480 -656581487905986870070974759447822336 9064762197436878506752571034566656 8460116469477672925976311885725696 -629910817463255686128924423903772672 2590683215312125614665599908052992 6399052126524820611710949164843008 -307242733694384381361306997119516672 143544432719787730725195936169984 442694366648227609879907586277376 -237876295107949335467504712141504512 2074842288066638882159957662236672 2782467695624041067953171824902144 -586262076383219459576521651413581824 2844698386803066370165197586300928 5627881210345084946306703313338368 -670166931236864505524468325472534528 7723663549364253948388063089524736 3353172530569596565442473393913856 -617835469779125345577297957445697536 472347017498424111821756429238272 1936431751870992999001124730044416 -120134766859725824282107706192429056 2845795903688502498664046147928064 7040755843452146597655127745626112 -919510375900176997048668888682725376 2629920222716798288968126723784704 9604359474162560420966016198115328 -386711118747174283624534446484488192 2919673978909849446771893995569152 4943733923532608925240058234011648 -158663364351727800350409306234945536 6700876959790060976084767874220032 7510363336959998083179371833589760 -380626044839269227669297864613298176 8404344229226000952694852418535424 8040252317625256380001274594066432 -546775111764841159931977193565978624 9031720472642659872679263844958208 9503468608079959511763959066656768 -69987885938110416412483941669273600 1948442892310694163941272865210368 1384702241165078213507118201307136 -52258064029414514215780300040962048 1173922291917810633747477462777856 2407725916676727536180207850356736 -882191529236115440019659472825745408 5263059833383896425588042932158464 7545447662164494080581835771871232 -669082145674346547573494710821453824 9880353988485361408247700670906368 2205361492709176168944623897542656 -661825638607218800071156132550279168 5237519208629272789366154129833984 2418348226614134737229411591913472 -756220130413206010067552485876170752 8911895982328907366518457077071872 5905390583932114357501118918950912 -588699418950902656743363978712842240 4509026269677143874985395274907648 8534369180106363429791958587932672 -898071890495116288244408198570704896 8178732068348784230491026664456192 7514593543009642914739561959522304 -122229808027876618415948120545296384 9211275099735730003883317304229888 6787020725885076297266737600004096 -942259202418060032480460537528844288 359386772155163203357834714546176 8458081803810785283182507080024064 -377474443012634071897867954295930880 2117755576797876000584714258743296 3940718304831869761122185076801536 -478817826447881624588501993373302784 3657091625288544017370673349394432 7352416929530139080040189995778048 -265302861647927453437222430732976128 4753081698601662767310170409140224 6250654849012484827741382913294336 -472272582277503542249058008966365184 1287583312320529348851350640787456 7103452517008537736291266068480000 -882946659947637479556120433796317184 7670605309537587433184363070619648 4157900329763280836462737671323648 -44750919326394718051833557349826560 8551507647000707511894301036511232 2026436812823459453591907899277312 -365746809323325191004549326806450176 8404540648297410669138315654987776 1994668985300563067641069010157568 -867668560353136819485811643743469568 8206105527097500022957985845215232 1429690827092517934179899441938432 -350750522625632395463255054379646976 6968344876239575468119031933829120 4246643830773825308762536560033792 -335829279613499423683240282973798400 8345848018201154767296506313572352 7131933627152874400412494102265856 -642211827118240923762017986779545600 2680900977790114880112953216991232 1373121282388845801417759612993536 -624875124995543244598575158207184896 9084996668539038939023043777789952 4960481217811341807514755927113728 -762377688397867562927629970616352768 7716443128080255908720589368459264 3925427393108517583076284633710592 -107339537850132879487950038268641280 8448123958554639714443523547725824 8930145155396264443865124439064576 -551964847963299651919133459938803712 2822930658703072722034796628279296 1229386863976841576719075384492032 -102447972699613605827809686350462976 6633040448974377908802191592783872 1916800791093209474602725254627328 -162013090420306616240288036311531520 5850277948314386531147201535541248 9589252725616113488929004588105728 -71621870772279115272008237324435456 4664879399645162874071653290082304 500471179201772390038710429679616 -187406235428334635119047653097209856 7117212598627312771692855608475648 1275920789477357923533520648536064 -268370748294690643494698367177457664 9582261550774930821001565253402624 7332283381249294257090188831358976 -302174117282802866601258877383081984 2083677441427472809605898325458944 3959755957260521472339008613777408 -76175518875490398688420074977492992 9933024601667643368994511196782592 6715027563169218908001858683404288 -281582898376529810436060253742170112 1152475349176365502743695971057664 1760727638926566236137072357277696 -804270225623728227800954326029959168 776714427547060540493310933860352 2435232167649799021771782537347072 -337351122707367952135204322416787456 808675083676175934144751620587520 5893682620111105030421758361993216 -600244296657088280104735633441816576 183119837275279165932743335870464 2158645355149223943470811539570688 -422326470782452394714811914141040640 2491676457323215309291593291268096 8273255463760872532791523631169536 -639664417365529580485143594040033280 7348314841498416876414213524815872 3908497156084423339833978066567168 -777267515997260974471992706005467136 7555229027285376815599235817799680 19548372726635571408672957399040 -267677880539306466278181786741637120 9981122657367510737172571768225792 7229399693751640209286960649338880 -861986451173939610868722369891926016 9526874674436411388528203317379072 5804465762242899643800587138498560 -98598597206284792306645448186134528 8770175328178653096395472271048704 8471470450647148568567611224227840 -510432701640879963198366982170738688 4845805399004826350270309914902528 6570104927100371946126812383281152 -524065155909911572375019069611442176 331892706559125208500145208950784 4940477552825008306651103854854144 -651383846369072736322636468533067776 1741834959442692878945257166733312 3730779137687318995105559858905088 -605030683203711383631169874458312704 1636101056044915389918548825473024 4156217391725720069502196619673600 -235622611315203505655819768998920192 282725744444108080138883510042624 6010312188320385999744534661038080 -226292457648436484066774550967222272 3503178818996033979773685216575488 9672705636952033817186361979961344 -230984373000641528618665387136909312 9331376781141673867963368055242752 9568868848303043240641178365853696 -31692791200177497288984810682843136 5444057055092534818093888297762816 2319777902638603243230220150374400 -60455067095709919742546662238715904 2902582971575873994121997419806720 8228363264430849065385181629644800 -173554307744296027889759913297051648 2131200406931740416377022605950976 6621149164777399765507783620820992 -823769300333117015826320096338378752 5901900591823386509133958841630720 9622080480906884322440873942974464 -936593429919806263689799682700083200 5120596039496612831046230886842368 1586185607608329128902861621559296 -533619282525262043343434293260058624 7630855842582848471875547769602048 3616741424905584630713971468402688 -517711376942266622722118834546802688 1190824035087255987200227327082496 6904483674089075991721666605481984 -491714650509773630033900993612087296 6061045196415496742263216626728960 659137875450250765220428910690304 -567534333810342416915590647933566976 792534316110069852752053750726656 9134930548441758438371209672392704 -137484064005624365526455455437553664 297839977981662745417116379250688 2976614177111214312973226571988992 -102657675242502395102071401043984384 6620565855852351512670956660195328 8740989276828521423113469411983360 -240824735665389317275579786725425152 2586918460608657927461486813249536 6266361666318070358844703034572800 -142001329759684197318430441336733696 9861878408835777821027890796429312 8922993231768078141572019568771072 -398669580720916016442091348695187456 560765892431698313166876915531776 5911880804513133650211250758483968 -222819237120267005327445839358984192 4933727815908499000120540162686976 2848103021672515709060919666409472 -102109904606438353969185877460516864 1272912781266461079447435607015424 5918582745680222252803463053312000 -484923947581791630364528124350169088 9813910994744047097423886469300224 1335084659547584281646612747386880 -247287689151470921828686563381346304 1186090916106937290699432603418624 7364460089877034227426151580565504 -737877290055331731916815498045554688 9203450586341383415124505976111104 6017473221025340345537592417058816 -667213419457014375381960625326391296 6961924008324957519763476712521728 7831896275617680307968577430880256 -969139916760975787123706786274607104 3623734016624650741121274366394368 8421804267420223758622569512566784 -714021120998051994107676251977154560 957203851702415560415852909035520 6566970171807251843056532002439168 -389826159868068140055298437684396032 1027805152109681276865257247080448 6731586660158398094952052362838016 -785689124436722901468728743994327040 8717224659468300046524009827794944 5820637197250966060586293786574848 -213769017931415464772633849726238720 4686599678946225815579442156666880 1198353739492314511768999946092544 -110925737729719473838753197443776512 6266748866181268025220131079585792 6397643647177264548125094619119616 -204104100000748895797762578689556480 5676016901260683304494150969196544 6781399659989171877713803583946752 -705361898419275543323231057757601792 5819419027420036619185294963376128 9276037479530949900798028582748160 -594554644661983617347781355643076608 3966919456852070288370427219673088 1001030213208535778889612881035264 -965131669531258137934774897580441600 3168313875864992562420551683932160 1391934236808238709360213576646656 -997028186324752423304427656135573504 8326271295864214397745131990024192 7757321100289377081039397672976384 -840548009014191990225484793518227456 7405829494302219672193296842620928 259322514895832131232909735493632 -196958410629268854042130944347865088 6405963129601659289509461888073728 9579150478439721266941810205261824 -600445419411369678104938671090171904 656378004213805493620828952068096 139003192086349440837624214323200 -237128940464140158513877852912353280 6208584950461487341162609478991872 9539566038533335819387340350029824 -114489976406780347978402207440568320 6410969265818807080529870811299840 9724362403438070621422298840694784 -11860216931378958805042174302879744 3284916772355817685703547970125824 3164167746867049514592446269358080 -181894376154757153406482854069665792 3858138700513545967960781225984000 471002559494791948554978010857472 -603847029819193453488627588138008576 6531650826794212336445093205508096 3883029443781277757542341906792448 -883138341681870693827998443200577536 3865137699587304007726151126482944 3680485621435390176005331502497792 -301383774300647537569343864202854400 3462774880679290934366967812849664 6716445159302567643620908308889600 -803753476587381309237887204035919872 1403084628581369996587725731397632 453298786912130997740669428039680 -874497283447725846613279834065862656 8972111257532826130567491294855168 920063758322944205017373026025472 -986021236301797408454155887909535744 5919237588568007780016372825718784 1174037767097395496992239291203584 -115728122969870183177209387667161088 4880450401184771782832530076467200 2762085474680943781520870985433088 -242551872704143254866424662339878912 1831844370778179745774943283970048 4752299397864409042713005501972480 -540193276063442611559522492697542656 1668814507437066677084041859039232 4233735849258572341956767750553600 -795845167363943080591248130329018368 3456972218242447553225074981994496 8553858584929314022019965351100416 -370995274606460822680173261667434496 4707147938557249015824158119952384 5752636643378797715972334089666560 -840584613270182272885989529993871360 9229807825151805382891368938995712 3702127799757630132247526270566400 -219471287029781450216204455334903808 7897078134594061484642809780633600 2031250475093906321525210345373696 -397301305964288710461452735307841536 4067267641038312526070890742415360 33130901230344449608280526815232 -975869670972769594976725711674408960 1691598800821642360295329349238784 3516014012384473305551543522557952 -440188105927205984950746970811531264 5588900721358115088292945846075392 2399036873809108256811627128553472 -894091570811997836471855530979098624 6434423679030535573902288473817088 1091423749711152688628071653179392 -619773329003290744827379386203242496 3013114434370058573302211041820672 857449724865707213450618960084992 -555716253051103770610857481477292032 2103966273690941616764174733410304 7496886423954507305598544850714624 -948192306540618248164490811375878144 8543788316218562131099308311707648 1697097205950966282577366535372800 -620700251736848351925472778501750784 1318493806718590348043278891352064 6542082504839789175646199551623168 -368866208576371511069665812608450560 288042952185979800503581805641728 4713381626906711104584957573464064 -923882411573774962590126434374647808 3057776615129789552893633832681472 1117385385692245865332288618758144 -595471410685487309453133065631039488 2311635644849246882080598909779968 5015858822359289002963890622955520 -24162211263596937616261174442065920 8030109527907483954602724214964224 7761529720190138492147443607535616 -36587626754945663381925201218371584 4365647032825343535884205798981632 2437396477119105873202889250308096 -733203631058399158133011630901952512 4064831530107108698579234954674176 8779082049234752168142025051340800 -700978951994865188907401994219552768 4518731535535468543968406891659264 5961070236863541782844623873376256 -916506970765994999218992993779318784 3644263493162436489177360209281024 8057091359631694613221708027396096 -708433930806702447181610099153043456 3296278200127260668424587030036480 5257423022325880436631260989751296 -788360467232040610192263185493393408 5186580887302788125087972531896320 7688219904080924629382090580819968 -197029690577025602558687392462536704 6497223378478084012740759873650688 830291500545957113906460983558144 -840489443090480369046075953798709248 7907446655463541247263843125559296 2675737485200617719012602180272128 -330062398191545923391556333785317376 9670661757802394982474384513433600 7957805772651085421739769537232896 -676208085804661509228321980515614720 6097829457379537061673562877722624 4080603893092905293013303959748608 -74139040871043695828390685016326144 5173660956850179982297615873081344 7033339789038066598284748677709824 -811288721673575293637431415342628864 9426427157781979676801992218378240 8446776260088719341412680166539264 -621362501060628377535757536641155072 4062854753258275733803687248658432 7714635492223119491937715217235968 -134043631555498343467019208916729856 876850157408896709319493695832064 7351492537150250955816065480785920 -435732385594078808720030481103454208 9203197824311078210281641949003776 5990691231623298522849039376973824 -679390293642867079604746133830631424 3725993255451859469615836988178432 3274932978358116836469407859343360 -904120437282566224948087410128846848 9222811813390381421023987274612736 2334488854961797715135979111579648 -58482889182310905745373806137966592 2304746576319997452867254555246592 3932022719523454487281104521789440 -679936119764534099284663884945817600 794101941681852688180680769667072 4521825111245832510363117765525504 -410871772699233010341193154864087040 5450654182120789208619193464782848 7102715532924457068207725359398912 -791921721357060787085687977913876480 5866314021409710182101991127252992 4022474448748862651651967663734784 -162488465925311122986933605571231744 8145888980863242110216363889917952 7316856026924371403983927113678848 -741154176424624798724995285235269632 7799554885287877628332444915597312 8306298192465639514850410608197632 -947183615596657257765217034542514176 3637433937536899778426792386232320 7502579949497198496687478343204864 -913345134628575165184868154632830976 9044283348800077695968486268862464 928534185108382602928767509725184 -538479526728754018905392146586533888 7683938322578103425666759882964992 669264362795232866947016146550784 -823650133805855360310443490767011840 2126903648238928932041811407405056 8511638778212138310038571578294272 -257307659926076656302629145064505344 1318630307627979762366685531602944 5529298788532241264699808912769024 -238963445217958692468828600912576512 5983923169094858415986015461179392 7116484407349622996039209286893568 -511846469144505449025501240141807616 4773084616035807139133692200353792 5585865407439800191545023095898112 -227307369658464384766279917582155776 8957941584041958681270640051224576 9149365017387594493497885541269504 -79397056819981390764781980654501888 6184174042079567132518692425826304 1663391329693446990663544530272256 -17067994478290304975680620413845504 1376502521338856368263710522736640 3170749876285382617675538397921280 -108583701977695661016333893458984960 2645879297045005591850195515080704 2948933846872629943180637081960448 -239234809262357278633267949712965632 9309632344555130367087371609964544 4690537423069138306634974922539008 -630765754668689770239912362039574528 6691934086412957148144226829074432 7696543916468411946717165928841216 -937164318807007894304074109521231872 9487444743332758938349779990609920 5178152819090093647555954118492160 -684848107531302166743805386584752128 9013558191912301418671552400982016 3529585179841622974520198002900992 -328535280068736944753831281313185792 822659253890536706154912188203008 8271096657485088859134629397921792 -720999828413089608149975504250732544 5336717726745226793936932371955712 9120680132162015586399010473115648 -95210103220487288162475808078692352 1289647348375532919341656313954304 5718641340053256942659788420939776 -636867789867294403596621688608915456 9884820844534033225133063655129088 8438124815495900184719811544088576 -800734160020429118683640139444387840 1232371413303868278219000600592384 2214907573954133564886990446395392 -916490938182245281265558644729053184 460957829610671376203964223586304 8875625261603763260956476591570944 -499245716879889584648041253241356288 9360256703897513605801715672547328 2697765977695350006100574901108736 -622679364111508022102469722350026752 254408698879134016189384232009728 1813588873239239482980641890369536 -886050399264703965565300793212403712 9988484983005048113604214682288128 1482703578394964434152164629151744 -277698497698792756200111807941050368 7173539356149472678848740479467520 6044570811915192620683243722637312 -497248106313193329023450208454836224 5738264559481576433204075666866176 9787801565876263934086625523400704 -412103108551789871833840392068923392 6787951158750487971352828964765696 3761125012589018779914134544711680 -460688021602510867150208745733095424 8618692101137987085265216963870720 6570640363497713016252395874680832 -265355977716247976884129289604169728 4599583565250187867621451039244288 2971285041954864126974736444948480 -232407628749379876491354333346004992 9021303560423937124234941698146304 9452037755378114349837397283307520 -844348015921893960589229595113291776 2106405560671787245299756374687744 5838650415668490825135047166656512 -23673606465609039650585857767768064 9018306342235067975502396785688576 9109410028389503207917332685914112 -604475863855425856726383106117861376 5682788537388050185137771671191552 6665821817684582817097064795602944 -809800171641206586706780611042869248 5927818390993621009995239599898624 6411442235888620656714029843087360 -134906112956843812691367722049601536 6461204211717337766211008560365568 7940878350912290323947343390441472 -926917528547739664490215281038196736 38232656574039131695190711992320 9873084403724640384378291806535680 -502292625621355924650911146277076992 7223873395024101589797707075026944 5502403626519203645006383851503616 -488037941765023115365249648089366528 7006431064763458296678068544077824 8908467802640065990944738689155072 -997062153066272646892748549482610688 1957661909823688734035390677123072 5737646321719485791657902718582784 -364972991488342299999972221981294592 7267498066048354093126587108032512 5624222669792067808152958588157952 -902075501715559913218471274429284352 9578185861237042462429159243120640 5472316076753352769012880029777920 -691119048035493879965920193023049728 6184524556986374175383166111449088 4102660334441256857583818391945216 -987476888305432459738542495649234944 8524827268060155954206254684962816 5009078167747292351180386779267072 -246801500121373873590969050157023232 2931626005599324652920885523513344 6413691181068522147580364445450240 -361765074194785594295411954985992192 3965339061064871260477474268512256 8847984770848334605367971296575488 -73700888711770429602262068139917312 4154610559055543957169227171889152 2795296354280711333634781705404416 -379771390870712428182713172821540864 6683601027913137048955665298489344 4508565259306124550537162480680960 -481392083384503318464794767686369280 762593062522327621339691672928256 6394675397170612281927155593510912 -466159048833756030179318556012838912 5899601215188837909051949856063488 1808764100175762246389566254612480 -6182555600163183257875973014552576 933610286458018963957271639359488 9078055876001923947477255919239168 -398054153708801815054187657189916672 1915548929723048346799686572572672 683610083535346214526292433305600 -918243860592141494236366416677699584 8471095740065720609252245441085440 7956685521462875882641998617772032 -367747677104104668930709496333860864 2302458572941660129065256861302784 9586870682702919382540838976356352 -231315262340720688465825117721591808 5780038190723847608812166115753984 6678728469861676743025695895060480 -729596682995181728310270652617588736 9077316893253992807380605735010304 8766244375145866002077875919912960 -250968949869941620113217406933925888 1213274857385177924011515608825856 8030538874479039753271409930928128 -823472053242243926135271867465859072 4950868557743727696597288619081728 9114625261853132748616153396412416 -928435976716499897043278650220216320 2873281033683020691271384127504384 6348205625047712984150230951788544 -496147414532984343000285351151403008 1179055201396671890067349487747072 2400381938174000552735582694932480 -584506619204588205408489683130777600 7340484565499780649477047809212416 4701132439508778470480886166978560 -693167275476937648347637943407476736 3443039518730011174699706502610944 5048168016254237101356739234627584 -709687984662550977332406915270967296 1112414892131800569215322052100096 3707757323875073139066765079216128 -329119235697828607330589508211048448 1523441604921059785849050436206592 7512118522779957960092348976201728 -997728611466213752610942112420069376 6241094051091252485645878920478720 5574135745510881876184830526357504 -272725592955923201519455680967213056 1535887516899340788176057492570112 9275558303209394710470284455968768 -93580611934684353287368244105052160 3808167587600996685492944365420544 7619114885624214272296493210664960 -428573580715380550136208154871988224 5484532846694802124478824778301440 1556748869670027760412115523862528 -458250006734811364910550994665865216 6233325549123360645037213465182208 6169746101760674125355834111164416 -640822798962903543870085332408991744 4549356294684276695076633353125888 2497517688212875255944982579642368 -171912309610857753772759014348685312 715378357758108591314893996556288 433655085150834565317021256384512 -897468385291378441879312829243195392 8722482550752794282408872920481792 555630843098055714953497296240640 -85455392740117631783184251047903232 5409634867425423111496624066527232 5644045980191888419196874705076224 -292180592979065998935977620012007424 1183697436973099240458174362288128 8394915741492531970676048705617920 -405002372733109809942841625877151744 7744091657985057433262666381524992 8527358738707136875192945945346048 -257881159802740437111746549331787776 7586149607043042548651809149288448 8566669541201579932889160060239872 -189346989648971370036566511230910464 5254536167567536833889900066504704 1994648360172456783595686718341120 -287385737669593148620725942147350528 4591762633163795563480240208478208 3727328358781809426968856550703104 -658611343826389080767014987941019648 9419983659970576654412505145147392 9295524940945457195361636559355904 -216071631261576945963986724111515648 7924285204671946918763518337482752 6179266332565237700544475261042688 -597986127291063242516031148159664128 5517470532530081568542719679135744 2340769784902414759633230181171200 -857086751573171153711893903625420800 7014156449844976138618444273680384 9229053270717009977891749695062016 -987035039418669188795459405204160512 5513131017715241623437025705197568 6431552098159144518660675604578304 -964439301704510920949721558029434880 7598397523410636610524045121683456 1777968727901969236303101200171008 -938584697194388140204336459460640768 3565174864944709933727583072944128 7550662264691570817845112325799936 -236198459789185480866772699754528768 7893168393131963073365758363828224 6292843754900437705892853490647040 -701082841054203138104063963548352512 8653346499433169744214758808092672 7195185642310230233657584788701184 -539252950445778281937414734011695104 4695915330257751075079279372926976 2273093289135399432415247584985088 -331270803039449985779162836480557056 770671440158687493286121084813312 7620184909513134547082140207546368 -970217660206354930653540958934663168 9276674468081960190818064183328768 9112644736325926512697566411358208 -66472479877681278321507140072636416 9651192139963223272891560017002496 2274466171924421157247724155830272 -827625472736941024398446684918513664 1435613428655193080877965406896128 1851684838561379422779901856448512 -581892359251792570166698630128336896 8260203052697669325563188626849792 3237430362826664378843632999858176 -753698714122854581763039037136830464 2949190595469200475062895491678208 8374981327819023618977069726171136 -523763810768635010167815128718770176 2217103141964593764366978807496704 1942901190714924655739893125742592 -831565501401541835226945784488394752 8301611025575670759381078043000832 1395595724680245187320927662112768 -29276090235315077731049073662754816 9727084062329428775370352182165504 1649827005529417174945697869332480 -488908842393758596152654901152841728 8299683263303604343645102674018304 5998729120369487614023140613554176 -212878107049374713044215688721334272 3729155577467365728571857901191168 340346864704303818795085258031104 -584979507631117727775217711891611648 7625941463250645338229897045213184 2992683115967084552768024135860224 -807445281394104987704052116686372864 4469951220729582814872613234409472 4171778026416421572599438368571392 -670340214154916610639553773650837504 9407607436847751376768989445226496 2162080783389496214717131632148480 -819744640666924417674346887865434112 7599445664954963246158899761381376 6239166537468514895714587829600256 -121646705960075207148711238036357120 2228905172948164325897991081689088 3775919651967668735230885358469120 -455847224227930131288604682880024576 6622564986320934832658387382042624 3619266703114674001761998395670528 -328872655627034758854244899898785792 6269743583751012527946776623185920 382349042383581044729974865526784 -149150529992173301377815619875897344 6288803344202497909945885878386688 450698671313583474979413388427264 -988080298738522056573632255384092672 9643988974363764317774679172448256 6321771740525491254219569669079040 -615569578325794831817334336690061312 1849243826141301576222530319941632 783158206292108318904804767170560 -51864721116833279992006392223367168 2613922922229652507192897870757888 8322756429597933742440580984602624 -475313401678717201409385609633464320 2170109945346139510639882951196672 7192322708397684047676333570916352 -791472178448263307823211259820507136 7819836774508852462215335122042880 9299629561880618389943766046736384 -514509569993955446926246094946959360 5377137638954730699450316526452736 3823073916695914474616911470526464 -691223544984283082601849419324194816 9518030551741527699237154722938880 9893999984174729994558155842912256 -789699742504078725899957005954580480 2338328572983588096565949577035776 5661230046121265712306568755675136 -745959467396340994407488167688011776 2263503840750538289756086495870976 1957979955071021212283003968946176 -605090115878879004649993285708808192 1683477002394172777757591396679680 6391760151359406339026279481737216 -23561788607751121677139143693434880 4267702374743404013433337231179776 960308271086015491881627126071296 -822558253220859403362131998672945152 2140146494747628131826430933729280 4045706772028854871622607242788864 -735353462907232538910467732176633856 5637185744758752960325208013537280 6650726370272677204950593742831616 -736680535428828945015541919087853568 9111725598490229569908832429146112 6107631671702566919506274950316032 -767712155967895205651889904334929920 1874124330492857692010294838034432 7941785894470147293061223326679040 -721267970208695212202658364131377152 7039842228728648620747581724557312 6000094809862485329301350016614400 -483575978125508826632911837307338752 8249559353213703352926959963209728 1652418022812638107858942663065600 -350512632904007798417763745858060288 5604227759222980807411250260606976 2134520287870756426837229377159168 -82174660892279274804606814910414848 3899962652699651633469381591171072 1335316216268014212850907590164480 -95492842674109124977609723588116480 9550691175465893261903055296659456 7009453597704917204634386594529280 -964561373353466014237586416656711680 4592886123366077265352009105539072 1002647729890553065955884856770560 -799848739784020844314988666479968256 5680061852683151869839403531632640 5831971627876338469150728787066880 -766445662130048004192785958036307968 8222682398592757556335331554361344 7273172625885328138626016795951104 -774354976425839686889612914739642368 8700396584011545063423004322562048 601963693635203641594074152042496 -449487838373815968925292887380328448 3231891421260787706434551447289856 4482872093732504389785151210520576 -54245719847387625864456598578003968 7024629685103914263899549454041088 8775960034925145621615339708088320 -585647178135145387120137914204291072 8468754727835325051455781923192832 665109141586788737000172091867136 -104489586802231311431010559830523904 3164215091259991884650067854884864 6573052915795672437018125379043328 -940414912671566562856159748523294720 4241068402302095033760390968246272 2998915973881247327426379578867712 -610920478025748540091050886537674752 8139741312817940011425512269283328 4122412061727759032035371879759872 -378701522098769538210882698933698560 6432059573337225160387053853081600 9525555475929966205649723662008320 -451765552869539668243728761708609536 3499229081441798214136192301006848 6153675296274643607905016012079104 -189128800563443372928362852279910400 7512941917164443189084673466695680 9040391765579491674959208597422080 -516870118347925598636529236811186176 5776176667135747184700533847883776 1678283970597927033345836977225728 -356172169156152873492523552411222016 6887140021340434542137253644206080 2369730825025325214019277314588672 -558544759545421647291323857420419072 9782919022214571284938332510879744 6729663268188029320713836181848064 -760011233810118115212291539862552576 7279821447689544158526341889654784 5849468337213100681462974871764992 -536467121902466243737737079996547072 2414560886507851227510243552395264 7844345656788900900432695374381056 -273370315734993066943093637809963008 6103187643601213738808220317646848 9424407815152626320184967587430400 -351960241858162429491541962888577024 5326247487955858594218324065779712 5361751126575295501255681616379904 -408720756811584417575852216877580288 6241591724895786587945398511337472 6585213754141366240942655610552320 -505342062536474634500243432880996352 4166275667005149262301645812793344 5941711317039745618573563747368960 -396531034260541017109257514121166848 55815211291502873395634102075392 6562241111514870303482047381897216 -137028113249470508747243753547235328 2921046009740694570690378234593280 9198096833385836182369560606801920 -292049901056198361946998407539195904 237065905797694804858522327580672 1300791318980120627739111869906944 -230329393060594807945870625837416448 1997168965623324020354202086670336 1652431534475417561346156080922624 -941044913111501239534694449461329920 1044554856415402550398417626988544 4140515669302930208920565836677120 -468331752652015658847955854582349824 9340873896960444435930561325826048 9604269909335389039981845670789120 -388891790629514687321870293174059008 6153299827379588020258933863088128 333835580004337960598961215504384 -873983083285088178017028342208790528 7869271703471869816135201299890176 2965359787820696622424449779499008 -420612133648497121915302076519284736 5869158141568901457962912989577216 7371116465741616336014036971814912 -902822276535189178371672679349485568 5168225053385111481434224533176320 9348072656921477533842085444059136 -121827901581797397096723203141664768 7175234333716525164771682214215680 4385766765538670599350589365157888 -934279849403354073441993013455749120 1849355761454487823841600819167232 9836672065684431313086281655779328 -83704025941739124519122250879729664 6023132468586213992464809587638272 3823397233353704086874813009756160 -622998195167513106464734081502412800 9477627641910623294693780863582208 7636251298599299555115510888660992 -724786321715863512491650024491450368 8309838210770704582932955790311424 6836684270354360831177112435032064 -157326831490030206029920204432080896 3701740311251759478437147375042560 6962630082422576047588071767539712 -595335268907228500944675577471696896 1713123146140302942086418703319040 7058779572406269555891947062689792 -741728266555626525491392818530222080 3281605716507508642005746144247808 1613843048539360523105496593334272 -756915402896450917389635608450695168 7701303995809857603195246529740800 3633593392132221647808712587345920 -828121181607561338139468235767021568 7583043961123073440588264481226752 965450559813849607280991953485824 -739012804288486600384395674401112064 6373974506148459472939018149167104 5961144147120739290324263914962944 -684512605642012986879358273450934272 593202381462308686037449397239808 1259145351346881316579042131968000 -649279278460379722794288962269609984 7752721929396328840458426891894784 7023997653297185743754692594237440 -517170220720096440374757097073541120 9201267048703175628177895839498240 9544335340514773127134120677212160 -117103591049763131545492361584836608 1062129230792562129926526207000576 9710734701076316184651041031061504 -254633732826564078922389441765965824 7925142728138292103833691736768512 5646887737870472984923673920012288 -936741000622499777358127496708489216 3238277437116645709628386628861952 5294177134669500114870721843298304 -423693873732804240905846205697753088 2651647025988192944203082537893888 4462031798975937466499496245460992 -337688092947417535299410870069624832 1877002565920058859744144847273984 7748787278439950559457891615506432 -533397384902082048717809804407472128 5012168702494117140493723871739904 1660469212961418760259009861648384 -423845210628372206311262152386674688 68656494316046920258938329890816 484703842029515812839768146837504 -920641624316756385600001542511919104 7785271417562692317519010955526144 1330933016594680997905589526855680 -548127415283340005593434631559970816 4656415533770984607262903449419776 7032425228711843624340686662270976 -789718994881550270833711648664977408 567329499791764589301033074688000 2604827885664160762891177505587200 -590999956345788487034970307483926528 7215226965483382942243062559014912 3959894028604360945619787623432192 -171498545462031315458714164233502720 9697139902864250423184732622684160 8113773845163299093298181010620416 -620099188986268858187401812785496064 7596121808211122713792893906059264 8715045789931700465556875278024704 -867284287802709652500851704069095424 6884038306731320704460631153049600 4947443772073742084013866493149184 -209821205224015465738204380242378752 8917889972006777511417963090018304 314369417544255704890732806406144 -39061470832884116110940581344051200 7155441449818359106582263957028864 5169898179287684903834311628685312 -594031268326513097308577366273949696 5719990777772261615529975521214464 9721303025878823849659068326084608 -211001968217269176293640725048852480 264184982931071613264376948064256 68359640564738561573863636860928 -777774282379872982995284939855888384 8919523302920162741750585987432448 5683170981609916973313255186366464 -865257258023266019312654247677394944 7449446542196845389516471307075584 7107549652952592386582475922472960 -800540277974737487836084267122688000 4615837732553742582048849569775616 3127583621368477261357596582871040 -202323929854160774499898429156622336 2037229893943045525828478588420096 2558567875456818988236343533895680 -740535563813947404846297909657862144 1446605874716967854924830703878144 4716993352649760751544464434003968 -211532771432746384067856844428673024 8518990723742568494277673869115392 4841648418624621700031582432133120 -216630301143227398233429591940136960 2575700218982529911875157706670080 727582527906977493903057002430464 -567408846841158411702169060287447040 6293640245783402198002978342830080 5817565726511021317755772436742144 -677472346981091282690443274262413312 5935440524661730070292838377062400 9542884838783521038314341385895936 -16961754061626467756731655096631296 8006696925215062095498411002298368 7172465744847774413156071327662080 -646989521165559257630561404431892480 4982789764229945990865816939134976 7042100543079782623182984314880 -966286894670408157155236106003808256 4215051939989363066470086702268416 5983002443958447479277644456919040 -534491595839410844013921255871741952 3726733946772757451620131656433664 9911509265676372675453530222362624 -711597160919354829651215937469153280 83768996309544328160469944631296 8130433943200293893316013998473216 -179775615136164495458117189457936384 6374485310932752279181721029574656 5022469910802600258613318483181568 -851916245062251291652362812042248192 5683053120978635164609299034931200 5121666884663592537044547132194816 -851604084710942380268519726224769024 6347898150248995767024164133666816 554919643437524851309048085086208 -450244920499753817785228011719622656 3649649497808243748142043260518400 1468358949105119224475175555694592 -962167354351537568405746077149429760 4070655970482559111689186547073024 8964020075948519458043633204199424 -241297492975976621863178809827655680 1935812794184415950898048389873664 1164540312037158839666608529473536 -509535281240815925679910352842653696 6490288543543380656612368225140736 2212636683465207208448662907650048 -883380304148635099230354066083151872 1362606744670701227993770747756544 611659056766405071557165320241152 -542727018854963468833807867131723776 2514622069071113955592572762062848 4876102182551475413109429405483008 -841319578077324506988886174004674560 1321571113788695319455069747806208 68892967787415504543258890993664 -932033693551410067767736351319916544 5502116548117942268301375893929984 1828864406669651929883308380389376 -920090015872297493984370971388149760 570096530591704199090519947608064 9872642802706792487327802738081792 -379352707780670428614259377470177280 5544266428091773658467437027262464 9937233111057591584326640361013248 -710120863172887770463130274441986048 9692423497619858960794937722929152 780344592465267621972974451556352 -420681459726766241894161512461762560 1373316375174510924202181333614592 5316716703568945134022281853403136 -514912304696061236948956885370798080 101185236082050094350229523398656 4783177431760233342565215058788352 -665547436930854634303180985621020672 8608668986478666901399790294138880 5395886426182653611846567588790272 -164948253529307273449859721646309376 4162240173058149380442599582597120 9738994419690528000958855265648640 -312538271101036277561915398699352064 6903218033936341150959892734935040 3096152724967937643703418771996672 -252896368986916373298380762234486784 2728249306818190560184571325841408 2102449269915317850590305996242944 -159135796399869198231560321792737280 6600632172864768355049843309150208 6444119843521117980840094005723136 -695741224481290478905772660309884928 9768383452471546073180191254904832 7826553151418567940289352356069376 -959513803702694033904762702765490176 8174508742533188966593814736142336 1598895449269552071940780209471488 -9244538003023079914270722929721344 2302096891986416984346180055990272 2871441998093800560962388474462208 -416733032534832244282726688401391616 7990425298071602957627089190125568 5664489677365821256858216316272640 -198207983051849692635233825832566784 3186967989569097782645269815361536 6262276589822186962617759317360640 -906596131104253458823436989984931840 1955062798135686604898358869884928 996235832914183928191813117018112 -500453642499213308670120719686828032 5621048514006633785528678719946752 8263786304504749329604628086521856 -389254982833846176683985425617911808 1126669967355913617774667062312960 9508801528699623556665857061945344 -879519471505340718675728259765764096 8373277726264215634427709560455168 811838610705176244614815801147392 -364832582978699662016033446892142592 707679186933739943558128383033344 5690542080135163977690670123974656 -108537984419174588506781658315227136 2569203715371482814478924851970048 9945284757063475660496047706210304 -805672225590047832997127583824871424 8220482837911206594144270242807808 5900122613392836211741270885793792 -467547785616869947547608929454260224 604592115799301892805552848764928 9534541852981289641013510825574400 -390763179971516846838576797267787776 9610100999610035925504374582804480 2427353417418809912179390442110976 -108469191549892805923398676989870080 4488097601293050134485444591616000 8130196359808192782297682281496576 -121882501646115559546112245705474048 3077177965648000890970233446072320 2045605318724637200348607976308736 -174739477635030276264791202261368832 5367544111963256179412305625219072 8888637814713345896774642211749888 -982394052403619914179154205537730560 3309258550697163287327790178762752 2940314716934503192040211327483904 -159577681631926382083534587175108608 2211803176093411064347952626532352 2768748812058484720590227767296000 -56841139785655441944666061454442496 4616091094840483132395558518390784 1522734433268348549141618055184384 -896656725181182964962676364315459584 5540919147800791055107680808992768 6062368759118814130967776902250496 -446605032847429931456112840545402880 700484327603449702133409861599232 5056610239275911248390358537601024 -668894125237117691658565432759025664 7025126344236463824765912386371584 3034659888301633026543130482049024 -832520616833850383694440696108810240 3768116678624036546083025384898560 7406179385981499693076973172555776 -644151745412700419704097449116172288 7084171612228043960230656241303552 148978188621047937304429764542464 -174701940227142833458571201268940800 4895535625098554148785827023421440 4924186146406794914667841969979392 -727985529179938331363053223150616576 3791923166415583641986703017639936 548722139537393817904599323901952 -413428669012117481765031329719648256 5284376357143029775855224967135232 7088742805035567837450157126844416 -873981431827854389879781904210722816 8277792621131084561825323118755840 885676502545288757886798673215488 -115805780099963865667090272680411136 6171709316347935255296622137966592 5773310567934997985196319013076992 -974629555970022820671714195274727424 7858301330096200785393400334516224 4991209257605462673223182918352896 -792595413565572724512069725601136640 4275802422859970727638124069912576 3954477967378481960514803059392512 -884773121956911340885325905030807552 5877751454799163699426023408926720 5713510456865951186679261973970944 -856320358323383278652154025772843008 7992723637063077645641998296678400 8833160615234027454986393382551552 -391726936072858444353377679234301952 6905376365884556543641361632460800 8113440542895277137821955862298624 -671323777617841453016296645657100288 4177696277596076595288977537236992 6487839593327503830448319282282496 -446730695252936891042740867117875200 1096839700426218766187515598602240 7484972416216194827456552909144064 -675971475357696416283584767683723264 707508394228683497328836962418688 260606925756164282072966725894144 -738368835084979645874869820157067264 2718842299223418622112862279041024 5944431795492901166806842185089024 -140300945278868477466647569748721664 6683535752405135845236038986366976 5541423350232270511214027167760384 -124200329573898814589983273456238592 7063853596865557891118371277111296 3138664792508897686817997211041792 -940668765656232778088901900398231552 4112564728802091409224669018980352 5490310364801886297836717929922560 -668209693574104766618204851226542080 1801867207413939174720548244553728 9133200525422023779369822004969472 -218352165913048636905040154367885312 3327717982978739862861559042670592 5807568058637982240392712451784704 -282866368380182182405585520260284416 5573566491645441478668035286892544 3035482410809264713592982552444928 -10552076130014984189584820502790144 428639663329261518706108776054784 5964950009285288834358833506680832 -913146516892817843524921046790569984 1880916693101905898967696750411776 1257780420167511806092301398179840 -818800215923788856422564655372697600 832033188516987745652333546045440 2615400203137759190610277751062528 -406930996284020575609986613742927872 4772401127341006163206409000321024 7051184635538965554148149381038080 -477992973550256171149732321899315200 5043432940051621728337299217842176 5095240033776000170445580277907456 -724870534834496588018731744992690176 7221580137101574237481823455150080 7411001332998240149618710758293504 -681425623648856403759525421301891072 2132745523878991458105289462513664 3471364882773805292059086485979136 -982534028460134105523079572904476672 6567647692138201531354328300781568 7427768417313166938217439215747072 -321703956575103469397076817580392448 5778918441490912243707185090002944 5651847886660542763320211222298624 -884119165189526649564318708256473088 1059504908757954687020633719570432 3513474140375563046812583301480448 -258431964061108978814217780281212928 1828345373998673343394325433679872 4550680121454977354799133025632256 -996009196659441776795887078515671040 3584377786966219701753262372814848 7596598625104483911822354669371392 -815044427238308979021982859675041792 8060598727093017507108914030706688 2332470817095312818287952281993216 -526766532867706478461100042162798592 228029924674609343336190710906880 506232671213100165913154856943616 -78189245451618560898383929201917952 2190963179136755282004766363746304 9790194217627213946909398279389184 -894848026033367765286106984347598848 3722797588847611521573515522211840 5473132282498426187378716414312448 -371868775794500419505566817458323456 8962757341673219152788047980920832 1385272485127211706657801735503872 -38270289774416057546664759357603840 9538974431048145066658662094733312 7637711435937877813237521378705408 -976460143790035305849196298220077056 836500013885543401642689977909248 9640518360928092744716572799533056 -335499144924050933863711416774557696 5440110292484995438202233907314688 9327213801717501625084959042568192 -95956359401298692509404745768632320 233348745740699271789332651835392 5645426969595344229209128487092224 -927223380732483957188566174291460096 1533937533041214499815664199401472 6895441503580512634845232432676864 -598431519853990297725642895049883648 9077867529812417275754902919839744 885345783779501489363598547353600 -170499315772979825940600919276126208 8261515965121677156453865651961856 8769588493201057156829003198234624 -324223907419378288551030468850483200 9616675198941594677514031499051008 289602874797440652514241005223936 -447079504340876268128939267481141248 5901493858282350696615435718098944 6625648950999263499089383117553664 -682424867137945727273068479993872384 3029705904321751787371654472007680 410589804449311418997605857755136 -847616123606192566872098393787727872 8206509365522539799260906406281216 6261080111994341073825913938903040 -324817410954264632056910830874132480 7133096052677142200213364216430592 2883700710588247321514278916194304 -642230144658875242610073132079251456 7000360234375664086532713175056384 9449067462213646395332737999306752 -362059058551560549447648018138398720 8855910735042777677595845029003264 9635186880157399783546224677748736 -301905169776426883439015947942232064 830684418519477040438811494973440 8673555049421480789007439530819584 -230996007881741795602484592092643328 8247569268857450508950006210232320 2553364221008964967342051994632192 -419513834015855129146370825966845952 6298392989033696592430997509767168 8359981665299884524927788878135296 -183213976866094123503907185948098560 9733146999415390375124145534926848 1543718319428540905523024555409408 -712350299731155501608777436660498432 43226176132340364140532847345664 5344237646643000984658854075695104 -970791768277406007634693913470566400 6058462671086341690080053627453440 1293741044202562353455812841570304 -415073125853823503464292262883622912 8472301773670195776580599876157440 2935709031228364273543352967757824 -999382791489777483549412558385446912 3457497150208019900559537228218368 8471676612784289543939401573203968 -83354669539838385735296699192049664 3018711866458635911903908756193280 6370667963396975611465145929170944 -901297457169302708410974531699605504 6917712589862832902010101156544512 6150883197923228458858254052622336 -262822179259380368234559516971106304 5908430237472012896579615442599936 1948760397213611822883035592785920 -911105960928152296782855931399503872 6519044422387284036394108602810368 6305528240367514067793585165565952 -952674914238024847795424918742499328 9824904323444115353855691029741568 4122190650278955802041597233725440 -20309641121550632424288365372768256 7467332614378664891210615926816768 8811640195121400166675061458075648 -791867455910279175320964330017521664 5721067136894202133901961875947520 4057084425394802563933845829189632 -354252152384052934050807692790857728 5665014913236129027885321225764864 8706812089923573658246100738375680 -302375295397495157711418757029560320 9086903497121650583402086674726912 7733770790069869680932309409202176 -946065018638757383518264905170944000 1498946160577920498946364634300416 265884303172118369683504640294912 -566146185901562938806198527789629440 1355941305827520384977501459316736 7919822952312236827079897792905216 -954031001889447569195702205496164352 6048664827065010626666605349699584 2839379248018388179597121760002048 -972788548437940120988529340534751232 1730936456218812908835068385951744 7298850625030392771053843677970432 -783343933446219149392205419863080960 4203563215478059192870512449552384 6719980352897044594949877510701056 -267679251664346985301153499960049664 7715117116960807177601496521900032 8235288799947274291471981479985152 -354176064665514828156590540711788544 2458727952389991490071091486916608 551038093373551845836117531164672 -337823988588641561609167653360893952 7955993675900112514638314150559744 4033169971990070612488227427188736 -204991399265921528446267485216309248 5354967447866025913196077857636352 2629665311518485831166722182217728 -450924827179249957267591399003389952 4192255946316762474230776399396864 2471486122436024463128841387245568 -761146396865691327348595724421955584 1340044885115937944742656756154368 2984643237714283143088331275894784 -239894815799497626568066641944379392 617226903550066103042959497756672 4340230381309197520460719945940992 -793308127177969854427618100230750208 9212741076456884378956574253645824 8790141519214849734564249776160768 -342790882971992926776545494729490432 8911417415421022216437561903022080 3205137970207363736824055865540608 -655924222399183278570581878210822144 7963645029452181154032546983444480 2476196438044313807513774985314304 -574786764297255288402877219243819008 8778994111545651545438213239734272 7410883364908555557131667906756608 -303479129226018352905538481046945792 7708324042136297480850809563381760 2351100523260408595787086475296768 -624155623522805557771001674407608320 1469390043776879125233776055025664 8484068723864353931712935617363968 -471705701724876594571123434872373248 1531938907580315477583477289779200 5393353154922358086843152566583296 -503255115333267834542547308656984064 4060555504000803687999107382640640 6731899794759617535935303598997504 -44994247398184425868640636263989248 7998436581116181876400707187245056 4925483525533078837738234454212608 -471396942123627007843168648429568000 8924475091789858563156387345465344 2737750834380214726871809104281600 -911696584951544688047878846808064000 3161757094931781123711028122615808 3042961333756769378569236074463232 -10559773521929033852727753013460992 5986443716237907778172613918982144 8802279383765682337896452740612096 -31685031547833738975262534709280768 3625616892077144859182430876073984 4891271752084967347240608492158976 -601726115569530534783794866947096576 1479162167787306216467519640698880 2106391370526076189556420277960704 -788436344853901822510646588054962176 5157443325603058879758056592244736 7331898922945524281070597632425984 -410738556437788403205332568194940928 5948260121788015414750716169814016 9065931625915658788414188645515264 -326036043052674880134515694761934848 8131206892316278490123229523345408 1364084535243106137476430412382208 -972873658058240382572922783609651200 5375855908293593484830519049846784 6061209851938069389363306706239488 -242860427118858848577228448490061824 4357662479807039202413413180375040 4760819933729295565978039199203328 -570311637155326388144368588087623680 8774211531288698291447450442924032 5927003212286166366450195764346880 -767722179267194862140446203757723648 3005957658403577108316661026390016 8699210117817439370926788091838464 -416201966477598404804251528854503424 5231738674133943190569164774309888 4931454220645086694008248973918208 -828383401829086490110629498299875328 7156493599451826338455428238671872 856074020686559898690266870054912 -215767618390423317244767024176955392 7432723509609580250253467091730432 4183125482011366308602007133356032 -266705351272985578729729989172789248 5974381367559465289097732935385088 4714933126633363782793527675584512 -947188198700592392551792591278964736 2740321802216473275444248163909632 3713577046998334760441713570873344 -100062934809205843825160562099093504 796189213994899952152620646268928 6872642275550448908225565545201664 -828287042860685883278433333551300608 3728267484704235567617254707167232 6732311744455704749267285039906816 -666338155481047340094799245463257088 7424143981266720039724531945832448 9359260535010383664146998028664832 -916993372492516987596880779627462656 4341798100525529472587811006709760 9625464473781962289407444471775232 -368570177264400559322270623489589248 7734792984476840228933571096608768 3320374887114305785341120847282176 -275678706477803445724500288140738560 6334160549627049370494143639322624 8751705300873170102171264721354752 -312641731847257480805330304907608064 9574804198558256860646457714147328 162553113913809319154017527398400 -213893150945476584797088676904435712 1435858784076874242530227829866496 7796879591454206095177206342877184 -398876472912759765048323009601863680 5665887458887685216814719117033472 268101108776770853883295236620288 -787658946387589204205345286383468544 8241469484101290633396470323085312 4074297138735396804462486147301376 -896876960612034946987478857478569984 8314435932501555612544561663967232 449427343730642607013317641764864 -199639621682684065375112042196762624 5986318169512566227659494709526528 4899218101915422572452184269520896 -365144449967909297351386904943132672 39390974259790242656536013832192 6174956883487708788008105258516480 -346813822020503341727278936243568640 1631088928492824346561324414664704 1119672062784836866092987886600192 -541770748219242545037091505438720000 9649458940893847101076622647754752 5996241546445386471538132221165568 -331719703093506303453952988552364032 964916554108241467379440483827712 3798206618498202907531777929117696 -17202646275340692599774925543178240 135038679548020656316693339963392 5150604941834400755026987629674496 -282810339680277237170182988582879232 146148978532052898764648746057728 230092488596324026380179042467840 -346854895289727283796334848700841984 8974996294811588888486854589939712 2494149914827476851127309161201664 -885905548892290807826371470077984768 2885276312344972808281593604997120 5047925618912983490571656105033728 -641732004070191095853507914663723008 5372743460522058174895442668552192 6692906102671220170510396714647552 -704771344326463263502951939800301568 6483388568376464756482700327518208 513802267304308789141289037725696 -381703856065093333351719785342173184 6102455366007883363169096624504832 8360285396076840381608219327332352 -866299633691614045819942549860646912 8868195388569754513648897551761408 9862592684796578023016350351360000 -342742729860332510871404131389538304 2831532540665685593618624003702784 9867082694220183780666598037127168 -971272551467556504427265996141625344 8306567465680709698882585728385024 2512679129609055529854459982118912 -267005726917071270796512301416448000 2841666027912767171139743300714496 9443760206349477130649200945528832 -456373179957452287384437858051817472 8639846201269680135026627498213376 7048809055235867669162999943266304 -212561857697816598348272657938513920 2222422821093686486010529046331392 427003550863105733424075142856704 -532023767945941600331799753610231808 2719080086770881613260010580606976 4400569223045068184990582963175424 -650127147633539242859309474162671616 6002442329196945783558954312269824 1020444987849804474693709272711168 -282080613556781300536483224439750656 1840086375451276218031504596402176 7041184539168472940090165368455168 -551730559733321366996909761568440320 5114371587600993034219804224913408 7810476842739015109755450232406016 -30631885439446655892827630966145024 9893535028678999570910557075668992 44187121434928494180157808967680 -935525104179087527040822782300520448 9292865177357096275730090940170240 4614553043812178104792248951504896 -11066408018467205061546899689963520 5098797545653500414200339564068864 6486028646334620682815957991686144 -663780127569491167611292494153646080 9906792046862946410384308268171264 9588526199865636558020658411339776 -545441480189761493003430883189850112 8729052438090476438026825228091392 377962095636074183848745376940032 -713753566391840984734836297014706176 9260965721181780273333761430519808 7852220369854833166329275280785408 -327626938182766220110451281609359360 1340620025910332969800900825579520 6622156745309881916985949378576384 -576002369368443781048634473369829376 9297852598122053786905739356274688 6940681614396434543553492602060800 -647724403927023501552804227893428224 5568045924842077345268446078697472 9149575089312714893596930504392704 -143569323170138250759240269523058688 7018188666388760041856294186909696 721119519388828001847427284860928 -640416103311547269463013788892528640 9382648311091634109207884200935424 7478680894304084658565454741110784 -759554305581686638394448245830975488 6294098589769078812163693522976768 5831679281117031235119391107448832 -692642123163374125784213639919566848 3083359532440312156431542311190528 2506403982191405641024795691712512 -968371056522897316510496396289245184 9153395973662476594412229194940416 5809415710505936123098645858877440 -977288485163673281359751666038996992 2153513675259147319773122690809856 1484586869867207805695324957179904 -631154580877777002313295295542198272 4248082639926076252396406777577472 1440204959552350888721342118494208 -470177126291337516723470946288009216 1605033882309225115541158544539648 6198010876868543560945662378901504 -548915223191824213801869007690661888 4467864287658001784374298924810240 7843546204773093545546166579494912 -733903115072876780309785669982486528 970200143880764406245093009260544 8103727885690391726597162909302784 -178677028736506008671922556162277376 5215567314299960600930272751386624 6140021141767848497514545286217728 -34587799011809635276406573856980992 1652671980699199210708332105957376 262144593049036058469188994334720 -962704817986229068564666174610079744 5905968042713149147017617942249472 3263197642812842197821843985924096 -736725728058385398973619661564805120 5442150918806708587170778813825024 5537792666492524888433744876142592 -215298523756844062179939345242259456 5369267567966904551063429702483968 3396334484254062095277039774859264 -982719914071537576970326801146445824 3153777443402351385766703556198400 9143916053616224873028010595319808 -347106624488598234183786212066590720 4146463883418109426319011310731264 7607022004589915945288600507121664 -395057861537146945075676176455827456 6373077173879070843449689059098624 1328014379817031721619880285306880 -345779896709760296400487506407063552 4051556290717220548259518651301888 2161092929928774437298786845851648 -393794325566072808836521331605372928 7209583258929254949365610606231552 6221290125469314738504199682654208 -759971297499321376885862247455260672 4719456302669839411601339016282112 3884214697252865346452024979357696 -328447455798431313114354039270670336 632423772686149501242793118400512 2687038376239127017712447108677632 -416517734915636299662124027589165056 6637742030084095388250652320727040 2402433438849066115900573648683008 -477944277264645743745592751355330560 2602182550109400937286690024718336 4723643886079358060570530205925376 -296633561851698237001481034330537984 8424609552006803633039720843313152 234459430390836277258801926635520 -695000333655120418236701255244185600 2393166484395720476390864585752576 8605983568896247394997460604551168 -144938065650120046494800261526061056 6781835639593658484450545056612352 620196570434598857359406531608576 -160034174182026374728481146348240896 2003829013387996956537500809035776 9821303071452718701137863089586176 -953813534479135963024116711623229440 9773542563997904211188435501711360 8135170103144152199243746731098112 -28105452982159915796012050084265984 8895756284690191415640557719912448 1683551238078983572202174726275072 -614979998945252513002880479579340800 8229874969168310669222526016552960 741186799012564222341005724090368 -557789794915132065723804537929596928 6965277221643063195045122294153216 7498181569581460265673807433302016 -553603549007221710560022438776668160 2155707005113664645560578240151552 2882031522101357487476554082549760 -264759134776923750824054538958274560 2669974029862167182429487550693376 9297715105511769201783119277981696 -909426110859474639362345549671956480 5435766038895083938172841628794880 5678690695333361210107212249169920 -755571927598405806310648013150748672 4002664864928622449975419937488896 4140171879469404042076236399247360 -296680541659637591595336823811866624 7121477452580355668285949189554176 6416187604658620549705541540118528 -164799153130232006613798930914213888 1082084630358518700688992532168704 5614665252075840588382077792026624 -484596837929688934878046931398950912 810536216526791812406199210475520 9548443822087335466530986478534656 -591729324536360428177930247747928064 5311076633578176870728884176289792 4715788808044838983085444296605696 -805128436458614596977449048828018688 9876739059064965508378784157401088 4356006093819881202826960609214464 -564510876862482162817351111663419392 5074054242217140584191019624431616 5621299469318797797761635810541568 -661196384842828283329715290729611264 9615532448286094524642367861948416 2611365901994600759539660742459392 -328873418557688166172621799944093696 3489469130442765120044333237534720 2244512588716302856191556024532992 -242123042403814285420536540942041088 9670159986920782933820306073059328 9414192105274351212322922371743744 -831087639893129955639948846840152064 6626601622316998116071028604010496 3404942434329899798054180130652160 -240969939365519723359798920067678208 8061939132513537156487526496600064 3855640923009998232080702664343552 -966800223781319010818926863697575936 4245875334842649114976146256035840 2593738127320925138334350883946496 -427935716032167727843500724718665728 2217960786703192085655535820472320 5610347515199606522322937972785152 -96298900647719064655673117017899008 2951806373346747148380270552416256 853829454965597229248158900420608 -896596491545128123797297308574416896 412831373700703082013306384285696 5871554277930845506136051751583744 -610994717685477571067408634443988992 6665083229433523067210117804982272 4694946054110703947476927585976320 -637070621894291822442904938608590848 3056415383478212151333652560609280 7224329525429125623143653200363520 -72131147998366533263821246302257152 6438977648437834711521450130407424 4098215018443301169691663672541184 -726731724526068229836299515363065856 9702953042105162398707905174962176 5876593636016272648505744232022016 -16691421469912539860204473437650944 873750882058674619398005165391872 7871837472019344934081712818749440 -960153808731747374263324108233113600 3494713266071765869638463061491712 37866600660484579297905331929088 -801980723660773705472883567961833472 149239174037412949799436558532608 3407500882204271758095609996771328 -994852497344580473092631396135993344 2789755584473816470034621046718464 3796348443728016021289390391164928 -178060977884767349196236860052996096 2648611349857321578656462545092608 413481325861052585047928227233792 -106367824885000165248335382843490304 1614186703286784065987273958621184 1138992524666628651822151794425856 -691525001921449263929462100838055936 3323511657937541448308279962763264 3651892955212673912374035136643072 -160172601222105826864327724053299200 5053872991831424894577071483781120 1259363714123120020382260423294976 -981983427238163891036769228997787648 7145586113080045101143330006237184 5744834345465683546553629055909888 -199521010749406195252959370547298304 4087889537681911232809037195116544 4657852884603799033498386300928000 -341430114990915260099881224776974336 8670791825607734414603135947374592 9698176560641552586763659200430080 -754020042222297195481534173408133120 3120877059646162422140624892329984 4536725399855228479007374931132416 -735039030324008990833450459800272896 1996457859607341624889870575992832 1611535985810754775287709915152384 -938052011115071395811614771661242368 660705095763722702342450120228864 6620033228635485305245079628152832 -450902970712335197583452759423713280 3793252640623146527571228183494656 4880004526562188222933773221625856 -402054595280855415292483649188921344 330118640968968999225590175236096 6221343363052023992583741241294848 -500225356043794064302779503774531584 7602537793107329194445809354014720 5298395723314231087156331341152256 -110109250993885142684651653712314368 4724287728684925550210455103864832 2366693180910717952087485564583936 -644656917688365568085876318318624768 1963844104500137491023019049484288 2459081099949613373298553481330688 -618263130305872315530808051707674624 4458659606138259969737407669993472 2223721170397987140147082040442880 -146569141687779714042037866892099584 4440379552160354981976664138842112 343216341057643621348233057402880 -143542028353058241953205306729168896 8536373543596260932633607672954880 2342714753708441403546527823036416 -429328787182433951235329426922143744 2298672988954724277686944890093568 5768916572134809765728337266737152 -523575805206511341533464804567547904 1453967704504056493035362292072448 9540241810453963054338275077521408 -9947747725069955284217033616523264 4068917894499598637225544882585600 5485153588128432435709745593057280 -537910287918782522156029692356853760 8962435064262704951301819160592384 5397476480548273367822465689976832 -321006980339157601040109113310183424 75708621909914399187020600573952 2155814038937976585883556838899712 -815985609947402916920424688825401344 7959555502823902072620617329278976 2628543405564504828917998719860736 -314839292169450005171142664522825728 7602415422431632615510753666924544 8483049581182362789465890706423808 -243159251756633840337132034558263296 4439712566941291474401688320737280 3507747359232064634449836946489344 -849839101096704746524564148522582016 4535428367679435706174226359648256 7254155590875754624156819536216064 -626873855800361746043039459502456832 1452305176677801342470424711135232 6752123670837874431819099173552128 -446161128420511883894356295177732096 5033930029344243142016231788249088 8729754473418834605838402192408576 -806468186963898278690292036202921984 2660059442683325113144905142632448 4319865813599926308928315977629696 -109693019246896244712528589386416128 5626388274867003812924040643870720 8657313399027397639432201696182272 -788382734376959251069519529278177280 7064253497874913502598177272889344 5160366384885400542284772578164736 -896742058233002169789886753190969344 1882599565122621856980069483806720 931862533426174633586856546009088 -225170781977719877636337696986103808 6193871729302234843475627684659200 8970279297019787862047961569558528 -810962200125675025881192827845607424 4376072392504162337078980529618944 8584304249760511662092714420207616 -949191471209232563690031155525976064 5826508851589866689336837043912704 8931097865103143453154720568311808 -262943732879389630841456273832017920 8887336806732727449114189949304832 6397471098352859290633442523348992 -71497194424008546524154094994587648 2869632661372721354344359729823744 1454905785074382651931537616928768 -373610426150780448272688108665831424 5366828156661393068473625163595776 9539367695972155999313068443041792 -525068605410218550932057414153797632 3560279112076760306271195951529984 8438129678595632693781338167181312 -126859530354524336367752068951179264 9539748697292636680078153587097600 8148812842953180076131920845471744 -651520584226620445758385419995578368 8654791456529345868572177968660480 1582549644749103472961305798770688 -592435824447904703483365977080463360 9430275122160918678071694877261824 3066830020756047403099807182487552 -406192037552213541138228369913020416 161525746397545402726907985788928 5570593832947950637428900251041792 -999580555664244369432397584743268352 6902451381664234711274075138818048 1912509581692087594809534007214080 -12717175481809461746338063416557568 2703062462007953406217707421958144 2809891605746081198894661628854272 -190102892341300864734531254786981888 9873986935282809562189786920255488 7612789639888555189749340019097600 -915091340488714586960729080269373440 5628569143067455018825789275635712 103547340059094886072716604997632 -74582013526068468101067352643207168 6138318749883145898715878994739200 6598053132146608491138550922739712 -99039694202425015361415858121342976 6131215182267472060695456174309376 5262864640848857182779042829434880 -953587839532866528597219883964432384 9725209293491369030719349035368448 6568628975530424880047322516422656 -569765128768680629095786618841726976 2046750780259449026796289982988288 6282675765597500627743849653993472 -49057626521203948300219667296813056 7832718831857841017864463413411840 1986199989206858032299270775767040 -697929128631938429123748344444747776 4497309792379190515673276147040256 4139166262264042993982077971464192 -53885122682345165059018027641602048 9229082169829969621872724131446784 3105352776775212185904271262220288 -934097786725239822475054109813637120 5038655615787073180756202611539968 9988365901942216655251455537577984 -464488008885224011655024251898953728 6758019267545455240518447340191744 4930411536196114503536790128820224 -676241407236369084056126785809547264 5300098523509655140369621588115456 583599340135758250611829393850368 -900868978816687148570601018007486464 9181706565774590608882394107740160 8207773246503513687385232621174784 -87328261938105987870023626166108160 3083476871197644291266109239197696 7398260300416906995650514011553792 -35329238836880865328672331207278592 2489166921223822772198941944446976 6140772191672973214365694587568128 -369488809896634466877868566130982912 4690947357235107077766316111691776 2964997578730690394434008000757760 -17240768417550989270277295915925504 4037044122998458103070946374975488 4347214884728308446776666701692928 -768684380061954722894293312401833984 2992975399761958830995904326008832 1711387036536877153533752107859968 -998477217624346913398320673457176576 473852439205861225622325545664512 6505586149659898558589722895056896 -744708704339861792860392730277183488 9430500398903734387116856443928576 8417977925975108765565379634266112 -981698148105664038678752073091121152 8236687550042954924941952709296128 6743320388484279204578113760526336 -572927460999662466383651448530403328 154930409221168666166012311240704 7208140556855287363045245820338176 -847834391367519233937726650720452608 6931587696908912794946157884211200 9747558342613996076660292046553088 -879691190226916559421482491722072064 6441406361917654090481902924333056 5216810275405330934824091862958080 -207357876093991030789043057586077696 7614349556395190498001929593946112 6271186376417116657244954242842624 -312587918943788483146138208585121792 9292235947021814530987184525148160 2862946707912247711289001071607808 -452897846538841362285119650104606720 4308679851291762194956456048984064 3748713160623340495111344946675712 -351835484234345171892042810035011584 3339871499047132468940948602093568 3678454859451656522267102743101440 -277385197468789332678877815171448832 6477952763212557427130364015411200 9136092766758251063746671614623744 -864072672401658983435725281890926592 7643099803064292935257831684177920 72219277604000992381859373514752 -873381043062230972006605415803518976 537970810629292830426920239759360 8899051360540914740020766530600960 -885812987856851726260984230728171520 9517452096758974954875841140490240 9707434898816165915028311267868672 -894257153578128292842909954908094464 4668296225996471355545721233211392 9543994715969449973812754856804352 -390702622148083858080268495769042944 7663629869097074376605671756922880 5445119428224125872620978988646400 -657920558601363225801006755885350912 8765619935788644504164016179904512 2959047467305234017908595059851264 -56880878114873313005124217118654464 8140856631837156344143611294646272 4224927402952923629179709245358080 -48079855811229085803020584856059904 2148009568885766081102744221908992 8774868291405438207046183922171904 -551251443035769624111329542380978176 3234460200091683967069985209057280 852762932553933915968826031210496 -271452678995362205126213214423482368 5669681821867159878805371651883008 4888739595246029330773423903735808 -509533062379436073423940482091712512 2137794112313434303816171559845888 4601343939597493252330521941245952 -448496837600726072615289883872722944 9515612132433294338953346449145856 5760522685206970277247791470215168 -926248349977778055118765993639280640 3424949906302427038706173757882368 8176880096777929122860146454691840 -121691699083372321922559345355128832 2946841479676784991074374805094400 1010513375321273966150737576591360 -750135921411557478457461245258760192 999425684711148069773284942544896 9894362756580241853640272164945920 -241633650140041106144919689891938304 3723603534153633708716264332984320 5815338946057573620533957595496448 -701771326142302867014198972794273792 4764086546405485440887757480132608 3282639494430876629166009668861952 -945020486979332009070769500109930496 4619094761825598438326198842949632 3663727943997139113084510812504064 -367731158391755382019383951104147456 4549266820449241280609523356139520 7511525985110091467393639114604544 -209589685479772898275786529584447488 7707725417882741876213453835730944 6578308840700634004604646464684032 -773596877417386695550300767278596096 2866589690592251801666202105806848 7524592994629731508235576446812160 -895429672780315038442216367258075136 6203154395185160435469765396398080 1908106785376483566148039527628800 -953850254366090858676241586481790976 7811235488146064178359454364860416 9030302558790720461015880063516672 -352194660738887443012353228818874368 3971369123233046964962237190504448 2174033173895726794296007877197824 -227280898042591521607029224927920128 7379598717139746794044369848500224 4291793977609090806197263188099072 -206771554842340136261439499943280640 8217040125782776364439255514087424 4670956201449220513221582541291520 -627804120248752347944090498475491328 8117006872154455684580611775791104 7275732502847232683108410450771968 -43362643061680404494957657198690304 6070619360151964244058658211627008 4936965107347154253665225469329408 -749991055393906974335344730693435392 488746934530850530502093316292608 2105041257376554938108958996430848 -380239661388276390955707628018204672 7897451072189877274194302539399168 8015018575121942702699363702931456 -768695025820875146304809003602935808 4100414083274405122943870568497152 9207576403429182882759191402905600 -660835129482743311169311071363137536 1875660588616873320590875140554752 1627893246470525412070261650358272 -69642848258124701832613785296175104 912273502991735048857660262711296 5010220740270933865314520943034368 -147826110630284208494392098976432128 4414321296194584350605786199621632 7810816963724864896222462532911104 -681564067248981109115935185812062208 2536393232631517882783674543374336 23473025863130450948142953136128 -893352098351515786412275348015153152 8330989319089438464907767753736192 1526875198815487277311108247977984 -192409919164025702670193465772474368 3417011480453918999514097714724864 9318219133815060318362562778365952 -887426850336889464656202473960112128 5563627272853549992579067660992512 9708640350634672323441162880811008 -949880308084785886823026153484189696 7678305145031035601379697539153920 7000050383282486636303089127129088 -421063216218639139129497966180564992 7816422929209065225698031968452608 3413328019645182339424778438311936 -305953011799386227547110522828619776 8359104735532779477374206430150656 1176710400650548314379758059126784 -439681886713878612712878223824781312 9793617125905602511928470695575552 5874464368947236117008372622950400 -573279085028270818014040067462397952 5626522996685954468890391085056000 3854801097271445491125541526306816 -995142445301509403669685803897847808 4146450073955418831889329190600704 7511603559558353444553193383002112 -497314350003830021821434077152018432 4233202546611186385419478868426752 2989159237320999561995268556587008 -980707868863113900126883938748596224 3356124475151045501902233840648192 7098015793869608997076769106296832 -832282160478211586484929013001224192 8958362099417982653965994557440000 4348947700062251727672486962135040 -479160240718371018473805860827037696 7277387622460663444699678194532352 445959261594211840856117190066176 -458593963121716783920403555719053312 331298487943996974277621004107776 3515161702020763921155227639611392 -683966875366062344777846367906168832 4492937270612872175098453588705280 4831524981400417217124262981140480 -249014734179584102901635497311862784 9986196307248603182065892118757376 7723136615682417834743899780808704 -782504262363742240310391089171267584 6858247291584237879959023429615616 636281877680103941543959405264896 -220791777952638756392018115802693632 1405351488010063792080415042306048 1667491250242684193164064024690688 -593599325118208982550606795193188352 1049523851819055861792967816642560 1516367412350113642107343317499904 -227296299116566387901889152240582656 5595119270906729271129182379704320 9590969875618644397029708278005760 -288471537354618682251990617173262336 9958853718648998530104679932624896 3448015332851492749430608072015872 -945316343930047691771500717250969600 3905639195782423435150922545627136 5118739973901091918435878808059904 -906349684909409542499259939754606592 5530194628749662048101707510972416 4778846295336232211656342218211328 -711060978549198573330920987697348608 799142388165133521234564269211648 5055889539094154605620815024095232 -696932928585439776232037965759512576 8802449740532312013154507951177728 2091571766397739190167474916032512 -619368988849271637160090497171062784 8919998021400298771281606590070784 1881293534380876542265894010617856 -952868495251466403195329124553981952 5391948712739859731644238664826880 5743161059901714613239840765902848 -68549688558729046942830779651063808 3636342408933992743277039269707776 7665660842945196268388216205213696 -488247273650017686692907897279479808 9953162853386823460710080879525888 4877606170514765581813434533543936 -784652993294506232181111230908334080 4931156151118844280316269386792960 2259303574665327417579730999705600 -979375716678824977481417208717377536 7270497272139636367503160017682432 7633205768891884311325399316430848 -985710378524952189985993709074776064 957528505407389274429698579890176 3397485702288338412461773752893440 -18745183107237637488476204040192000 7182921236280750497020219106525184 4423540081924514029857484386074624 -639847210769014380912291987557711872 617666714716036526273024168558592 9150375839986564984350402381086720 -381380372744704645351910245654331392 1785044226839984473827250504990720 2937929302973544422677949584506880 -217552066468685129236182046106189824 7286508156411231559155073022951424 5872088948305533166476172076253184 -779660481466444303736052480447873024 8746557733025854368343557528354816 3632687968510467422235197284810752 -883614651413840009153413596506488832 7439534647582839551484000020201472 1102737946652878782557680954245120 -641292180363499329845664541506011136 8200965080424536901143194327056384 3155622654563199131052098889711616 -552617893658847938848041978686341120 2131285358912709036348171324751872 3059840116945204460325707888721920 -977971623447052862464648192270008320 626262424159433852197944806080512 4912378767234484775578915500457984 -539491577327596985387497517144342528 2249352396174642256215589439668224 8576309137055028549178328350720000 -853925668706378150965624726362259456 2010966338559749883981517171982336 7646131940932967472113709339377664 -312508377874787615604697435622866944 720557234745372072151662161035264 4521378716197511648647742738137088 -934900239372128345478174053073158144 4261189725368549385443003143815168 8447517698961807605378609722687488 -462762778940505405047993138319196160 562407224105316199485575088046080 1099882663497662825641302573449216 -10980741729115288289446318649114624 6946554027048963953556256832094208 7681590293579345321804628106412032 -111211744827582640899287207251017728 3742031864503036558744875790499840 3273722202926161431606781959733248 -501153126818626899792686757225431040 3841795009824375253310745184567296 2174933461193128815664796218163200 -85693286136557868485834181076582400 8612152918183195700028384191971328 9034681391214769328760030526177280 -516497255867075658398379321856098304 6727407323106031524587107187163136 8313893784844782577682250079404032 -626793958033764014785174474411999232 3985791406801850466103750371049472 564043824712892924021340184248320 -986409304185438201715540819552763904 8094061524473938003454562488287232 4334047141280648781720868741971968 -525430462674543821711622200128176128 4714507427386606789460234623516672 8940810740277239079330993957502976 -937684248996970483299329162203889664 3415027769719830791431433962389504 9656107125656686034791229623894016 -390375141838086944647183837314416640 1619461472625213101709429055684608 2803428477559879781094844985769984 -711141389434599234711071325329293312 9127459377605156883000406768091136 154924497716923421487626553655296 -668155290721233902627989066591764480 3620145301461405188357472575815680 6149921326936592714163356667215872 -816748845663899088702165274945650688 8195929157799520902525331125043200 9853481100261379558843445697052672 -615485557363789447225283534141784064 4873189050571547354537991662993408 9847384674187347807033360836984832 -737739512160140438921530470022774784 1105551207424402173004648409989120 2748752900631266701384797363634176 -87660389297407469415482054087278592 9752680775288789026829260501811200 9188130405583489919304939356553216 -383977554556091845482558947552395264 712542619042169568062572930793472 4765199648791636474955248166764544 -726801799734952849351129742778040320 2965500379702337394509232094576640 8089317841149829913849464086331392 -152547147998061954861818699612946432 5528652643358086149971874966142976 1862566891960728176642673407426560 -764972014318084999332538749370236928 1539127413363107006678999611998208 9221098961567877045110067431473152 -426334847908368127645287782727811072 8622147638737240825898456389255168 350492234871896195698188313690112 -227440496974211881809586966029664256 7223160290344268145859513785778176 1164396946311772861741598051926016 -723899350778080506761911823809642496 7287671954319415855759939006889984 9058349994951573167167224170938368 -996364265148618067317216696078434304 8113804489634166166947168520241152 2699026779323642630678585905512448 -136994238213655091177770877135618048 8419098042077213086627213116178432 4758531497464943036119139972284416 -902449665551129670589134102534815744 7738889569315041272397968149839872 7280896171964389290084727334633472 -848912574470981580923872620461424640 6932003975465142845475117800095744 9268646805886309945976737853603840 -367397425275604521649835057568808960 7195616218470570376718077529161728 3119101879634647335235552704200704 -13677276416034088294438398727290880 5074323421787661507409542626934784 2355113503926263476211676950298624 -390992825436878583919027113624076288 1162781260923187348393372921364480 7149598802050816293909763408789504 -186558630942131037785114674552897536 7317506737398349616213175891394560 6998724094281805146421888425132032 -91649598996214124271587464816099328 9683681200303264186541541576146944 8238012082924290485864554253254656 -414914939912552616558048966883672064 4746743988159523694119966409228288 9854113901143176512452614221201408 -680065052574289771448337231467511808 8296963782656168248961211635335168 54461503020175904031364840685568 -700745929239508020688180366517731328 3322632075598941448829091448881152 3239247207509940653308029205217280 -195368481466229285494221292007587840 5236409721283605639223050156113920 484318318454968481693909800452096 -775768481697580810945465456231710720 6754550672692311945193058985836544 2830980126465035891861546277535744 -659241944180688168752886613811396608 3060937159503070002006121900933120 7023826450677202309180938254286848 -530375918634198917480420261893242880 6480265387442504515524656235544576 9199481817064581371493698662039552 -655249243406120963707403057340874752 1218936588698914443710188633456640 6281543918527255380874174882906112 -211033834023186201342668263257014272 3649063055879309132575515544125440 5408727210304339075849483469193216 -482333492750319476946609827997548544 1250578100421403295641793938325504 316890449776311631170560570949632 -886722426215944243965518141747888128 9345157854757723566906440039792640 1739984237379298480273911766319104 -126969985672300469224881214489362432 1548537945406226573927658689658880 2435550559847622938487015893630976 -102312896729457608005697405347430400 8249876425230605805811821157810176 7047742591132025256874533577555968 -296699299628487088534871266616672256 7103790422965523722812242870140928 7908883099082770457084742198099968 -255978190346770098130221570243690496 9701867446529379011940793725222912 1831095471489273789243977092825088 -910541363342534210261671101555802112 1322664205117025767416319977717760 557402354261893917078094081949696 -6277954121527236423487965049651200 8106511246490825463405750383542272 2076593930967786272689899584880640 -795914569197743414558815287674667008 3367725127266510994587636398555136 4099173857623635890812705128316928 -672742327121789069094282476996526080 6189596613461926037763666265243648 4737161806796557439648363758747648 -50507926665299622413478963091341312 7015782642717744821975886843609088 8123562596974128354016950268985344 -703689239523728157637280102663323648 9162809703278116114207490902589440 1373093976681427028179981525057536 -287623042961830828465924750754971648 3841260670982127180298375170883584 5193794938017035976079252446511104 -899540672415879623391904488203747328 7325025160587545203071768800002048 5349369329585490326192382208376832 -376214261176426925717325367352492032 6828786786200716296303498491854848 7508505730161929315186814052466688 -589046919784103428826543075025223680 471077837479290223088727001923584 433336025231517833866627457744896 -192006559242291652713413615661613056 825091240116958856002465706278912 4100342563125519065694213125439488 -632237679712834999884905985335099392 2531194129669633724651639404494848 1934232453652623809123429975588864 -480123341544937311571312975863087104 1205228049903734622873990371213312 3751687586201618646903426742484992 -508468506361731182372352587867357184 4817036490534738732353032862826496 2049901128762309816889959289716736 -152004492904788669530234718892589056 5391561675590467411714589581115392 6795167987965096109415877620793344 -903349104536182394118116056707891200 3519033955718875405532483727392768 2467588567799173283732732923346944 -553442994683383988010359701865758720 1841354847755575003896551995080704 9922220170262934238190367829655552 -223945016666338260604978624150372352 6506704898034700599387972631003136 5665167649053248702575990123003904 -179415921982680121716149429152514048 5673539297528761789396467977289728 5510427246893186576606375840841728 -857368417403863300665359488608370688 9383049929831195869024357139349504 4874820728167372340850928461545472 -957284379259524107708049268806778880 2023530973888929236368939554963456 6284036702501579029736449204289536 -151380135391681057291490386321080320 4121776985905077464051797347794944 9914570606562741703522272673792000 -21893059226303424774583382066593792 8608057499969347198073841280614400 5234008345795521972524014463090688 -64325317443664605720937335414063104 5717121579300153923220589235929088 1747391615602626795122744088330240 -180347228923785646775613477040947200 100073275744960624367685861376000 4383492484083301197757804848349184 -142418956556973458179785487747645440 3778044273906187007843476904607744 7549829400465976330910670274953216 -912884962376226103914884520745107456 4613215384607697480006123938381824 4650544786645666889083934757355520 -673310441088431388410880923950645248 4327382574314322345338200328765440 9848759779714262283800757376385024 -110281851037086349178560002329149440 4118123791936600998824779343462400 3605163479465186655610126710341632 -196172416729111645653536363876712448 6568251954671382361267696276865024 6123174515020924411831843106586624 -597147151968666827172054408617787392 5977465224779391171745641970794496 7663044891592404019952219188101120 -373579081743688832382274926725300224 6520555170760583296825855517392896 5666978993595415958253893891129344 -274304020343680755748451365362335744 1302700402584938792542576079536128 1711773703764686358518828692930560 -370881697330555072392721088586448896 5197396398820408149005556791640064 1455545539760111789876302275674112 -955127952011913756112414679934959616 1023573820877239284556745995714560 996688266843827993986086761136128 -711738136528207267660180967500283904 89225332957007581866227352469504 9009222680529987853263755945181184 -884650017940463242076158124072370176 8744366076407574515834644317863936 4455902751290063438226229659959296 -905752060634187106618999577142886400 5081122170228523492222334765367296 369561360758502859362394812973056 -756238089106108168333074779988819968 9075008653139595730532002678439936 7788819633074327149068017727438848 -508168226868297615468839235137568768 232973282950468759526958881046528 6726847136875802060426474906714112 -967046530275261966233948726732259328 4742001195182734580124177919901696 8274230582342906765798704251142144 -310520010651496645388252280795430912 3657069136582690173505109806284800 5392627494943910415127104848920576 -443637290537318392637456676779196416 1213973914714430591121116660498432 3873477275952629808509448733327360 -839910078540410314452942141486268416 8670976154550860030736652239372288 7616235147383607912106131231604736 -960635278021952047017629575825850368 5925193172506868435232418252718080 6346250557068227506946101343158272 -618748358728673242597410263697195008 7773177243975176690315853738016768 6635767178173243746237179729281024 -590852537154158139213820884663926784 7910734918701259870481934138212352 5451332575932792784642530416263168 -661738002498206087006331939124674560 7775325703876385653390755080699904 4367324238938730393215834787938304 -130530029073238005018330864874946560 9615023597671685821197659066597376 4693372458726855867098973780049920 -335700649215997259878624183854301184 5838609114813485299235984018243584 2825154734382033893121895516078080 -675485312547671160403463532007391232 7429582727644790120290654443536384 740413218960028695595691028774912 -842449566699556953054792205851426816 4433619390642773843420701343612928 1549894026919600265926111479726080 -152914889416106042593983293630185472 3582325305351698331770772520960000 2433933635713014350778713583386624 -972189621893189739777451184883761152 8223795992172743112183521443053568 685871834267391248873422051082240 -742885047611230293151368092030337024 4267357164979582262734057249964032 8051824098255463510037048846188544 -712438601850037743554470954707976192 1126545888107249044010462284349440 1265150777245395981792393077719040 -147487135910219723814137964961726464 6698080607752587969909346671788032 7308029047799016716449000212922368 -472512452088687449509378164950827008 2215341683876046887901495948214272 3951692036889666915607437069254656 -246748220731828458974206512553000960 1387487755634143140241351917961216 9831097940527355684648482055913472 -746810301031356472404148468309819392 3416462606119668201613087469469696 5727334777797864732864644391108608 -796468083516493835162067921839063040 8370702357446143715808068988043264 1866867658742681121907322703052800 -698487407315897672495865424032825344 1600548642340802606138785364180992 6853371660284924628458178900656128 -659036588890181280618823719468400640 3964335850834086750497067698749440 6467964896713069500880181115486208 -406246686076923587466138979059892224 2862769050391194989688481965408256 226569583180668412451829219065856 -12023806722720452198532028838182912 6439945268214908877268276534575104 3045087108505788399104504090329088 -930690594736210498540245029989908480 5944183497408840558432380249964544 2815010156260599464432235421106176 -526493133678273768598131444616790016 2124089487962847691902075807989760 6988908012188264801974944259899392 -12776214343954663546071913949298688 9940750720487499122848591838707712 4865318296444177404967203098329088 -737809907721328064584125955757309952 663458854392973602999484039561216 5060886061226854378841669525045248 -86532616471611155393227194690961408 1785481755356043852709816025743360 3212912862663684724750028277547008 -66798234659852775953275955571589120 6958798306853195980001429315125248 3582764083375220148995129761333248 -654902173036172677165437432237129728 1981425339036680858764200101543936 6896297361519646128091610293993472 -454809271102299988984098516285521920 501334913576474126368821427044352 4732265637908859999861853577543680 -432009639853312417379342816844447744 7722681447746383886318238909333504 4896467069583535340626226549096448 -470559709659233236156238439072661504 6790013625975242261014394729136128 9093967796278700696225598947721216 -649079788148215003603058179591634944 2940449704269049491077272216535040 3076769000055848216891608382046208 -30824791392864482383097021511761920 6847273465881892617581623926325248 6651743327001719353557224943255552 -274695568567987930075871106184511488 5134833215889982976160893652434944 1074653586043544924713404136947712 -33963510964086696030410803339329536 7689569509170347712316964159356928 1356745097464909652812347117404160 -924282844293755151062694771711541248 9292066888913226438674567789543424 8068961332508611682833249593196544 -160151404940109309049653748048068608 1176083436098912886388551724302336 1913254116784120769053667274784768 -326273939674318338837489689022169088 9225992230682965385062067533250560 2273727863002807691097160678375424 -511631683569044527839712580407918592 1651448803525197059236489039183872 2061761650268581044613587725713408 -581033746789056847255559002113703936 2673688865827696686706412268552192 8579516622167142401091969262551040 -345982709256445301205395872375898112 3292657698444085216918955041488896 2900743552251219819972380051111936 -686842001280323687560229565809819648 4081655574503627950200464563240960 4880510228754658424278535356022784 -274436900302649188981520093499359232 9786886191981005004541631846678528 3708103804669235191380137404792832 -529583151443870444301563822543470592 4740600570747866734621934747648000 6284297801481171126779115168858112 -606243791841334727534138117410783232 3837247780908407978160469074509824 2519936625689705978388197559762944 -644809043429722653541009001885466624 261740476742763235173784426119168 7187990571115551321842986350804992 -556641893605318005672020846198128640 3912526535820029369658518479568896 8197382071161961440156265184493568 -91536031990206943246472747941888000 427620928957993704371132806725632 9430451326019149098814238741233664 -565483503049587002590286779493908480 2679394866838306944189734957613056 2128040430530577509053611991105536 -119961882504579574050277349444812800 8440696406559682872969286442287104 8863478172808739813494010274643968 -365975865609416667454261981083598848 3373445137238560663010550275375104 5619742902337051306823474804162560 -524890210929127298618621043077545984 9819551938215869248442824799551488 7739226996287843608481602885124096 -220074752823281829480786614810574848 5546207729654323691325733461819392 9137601039087717700432539827568640 -822156414250289009229006167494098944 833898536664520691614191632515072 6687144100995593087706761934143488 -476707045448208284637436197434556416 1480994189660575077394805560442880 3334015741822708527367189237334016 -757968694225753864395096703513919488 3146662748127382379435114438328320 4055590938810868976645874965807104 -29013287574278997328511358294032384 4615904750367240226982906581483520 4046053186806171250296682794975232 -95129873291424659413471613738287104 4643326236648439884848379874770944 4768619560600451079186557584801792 -840593786073135140022926151394525184 5850873893816958274580376117575680 335140464040408035119732824735744 -656270068549947132749910840841338880 6441950227304628661994863024144384 4776472090469464117771780237557760 -249473717338298270872615659673485312 996021444338571706354334890459136 6317252727582938092484109344440320 -768912546441462127359313815900520448 1643992711577424901204887759486976 1359437253934462405282751030755328 -786644346449841314108442110494507008 5405265160944405069293186535391232 2140022963552403870592447369183232 -970156688639974561850725139444924416 6643888863037486838702409324167168 144236625233043419902027432460288 -742121690743754300992859147195121664 2032734336831950221188903032848384 8336543408613402926131186988220416 -482333279588698936945433675017748480 8807508408221535886436613471862784 9699286244433556412041585261281280 -603698395153596936669617124022419456 144754595685657116899003382890496 846520827424488908933630953259008 -234164277171781579078915444147486720 3208271732351376873503104060882944 6408665084392347016492389781995520 -576069381349489346954465138289147904 2112428589205333586452824868257792 1628719976566047664789837037174784 -156924628921844012735911180548177920 3769989074220051081309319799504896 2960035767465821642049514444423168 -110831227125063763296255845649612800 8834845687021543335535229043474432 4443622690690609828084333492043776 -579597071130970739309845885260660736 6962638546748937764683045914279936 7306290434524053275824218812973056 -997254899533541097204893741351960576 7736787020062628454860064783597568 9175250027575565425527536578723840 -600245546791408535879176575004966912 4603487246308085499777679366291456 6087690136854704802872875689181184 -765316801111152413039194338469347328 3586618711467208569186092018827264 3471369388161607575132030808096768 -311784371813653869926247258589757440 6300924712986618249919775958368256 6952692076353204970928646513491968 -462608839030561836431759366871318528 3606151145636811064322671868116992 3602329504577622080959725044760576 -350456352707312568300702465716649984 8557376395462172452217151039733760 8031916664861762373993161576939520 -961014596505614039897571084478709760 9788201023238166416679696204824576 1175949081149130465803113359998976 -63998842976152632134490107076935680 3519932839952246930930090784063488 5121552850937180544466284168871936 -622939140355194607782765114790248448 7517091417210153205729884226191360 9639779761915595648460544330956800 -731911583721211066529697946465730560 6706362553262412892795381884125184 1593003225057950892341684590346240 -326389061521711564528831930315046912 5790310122288763051242595446423552 3755198826665977495453757253615616 -341642455353210298753047665571790848 8166282836077518920267766920380416 6571346416072453392574314153246720 -550659807954812971549964643287957504 8275611177249491185601254839549952 7647963149237201242131192052973568 -416054240428766731417533925895962624 7777844883292131582392265185689600 9332022071305240528632598841262080 -806072945237304183295661333221998592 4727548069092526984415786909564928 8136511208570483043533039410872320 -910207699691767566327954945762918400 1275695816639278935217694427840512 4140176139260288487798078816911360 -653399616675193590117087052799410176 3770184552345350017256679165394944 9892742510548448612252648933949440 -325853871803874471855165072954359808 3522082488000684857635266134802432 8274469674653240810788235719475200 -118444489408827798592775113760833536 7567305236025301703990592879460352 9986847654763957327559354407190528 -752216007149027509232627998615666688 9281394733963752798022595397025792 8209715568842872544426859675254784 -944820096025488993431271008962084864 3235244091182066132804883332464640 249945258372195897624212172439552 -975305982918724627660091212552994816 9374354669950394170378596024057856 8964468558648629294809871521153024 -776675435738205911069167789499482112 2464369588158597325163706319896576 2946484761570647898980650701553664 -649141839627672207394369902944976896 8565298113679581142928103116374016 7314739055743181775169139570114560 -558242777374354878466444684781682688 915809777275041062337578289594368 4811780877243539522835405848182784 -185821931252072854583149242720714752 181623582952426961397727484706816 7568539496364632366328110701871104 -878780181686136379805652905086681088 7213350767557788307308086409822208 3742308515250815114970902271361024 -987378440516526569996451146278895616 9049913531481773634633110757834752 7494392528611235983732117862350848 -570752170582396149694181395446890496 1897259088185447172047381297364992 3878798487127030502645429912469504 -832722020835133179007223338425647104 44993109786705498140383140380672 219835362695617025137855334187008 -928791635764950323828609279783337984 7932617154855233215705271091855360 6307309207558608509294023194705920 -895185696333768731068273580620906496 3119458743588327568195048026669056 5426221065966661209168412311289856 -619323485527438937552209471632048128 3917147900671432454537671081984000 8668251295034567188793523922010112 -241810396228842069172499436756008960 7080496799982353668106271456231424 6540067580058516006342402603220992 -835931340239268611046503639175659520 6580708869984291236699765974499328 6124548117734433696142727676166144 -482470626410765658933968645239341056 7550111695598204395162882965241856 1281283626934379592261329401937920 -209060864503990555836924928660078592 4278072464443132336307170105622528 4887141325203377259967988237336576 -320848709287264856166940708784046080 5635998534064868550781691571994624 9744477487968466708168063060017152 -427206303826151498667601266093326336 476590262331492127658535498547200 3723328722408313572354159953313792 -879087659412978784803398546924503040 4639373364486117410698117970395136 6000275023258068718334974573412352 -127870967848837032332162845177282560 437115042202367758182646028435456 1047118859686289694768734087938048 -94176746388957900047229909395832832 1101885818921653847363445258715136 1464674310910591523585416052604928 -57448934731228934910290512092069888 3171785293712460208189814956097536 610361792807546975536032895729664 -956065614970103772057332195216326656 7458101810642122797420698440564736 5237278211299639839020174517731328 -635512113968943101142051983332474880 7770485405224212308046774766927872 8774603743151583749125263310454784 -626356273292909112570850611161989120 4921511853431255552897830080217088 5759826222141391661072929980940288 -608820251079290577723979806640439296 7941639923719650926638708339769344 4059440350747807725405635816194048 -398900519565911023671029425514741760 8863956541666086789735510521675776 1107793659314087390462882237906944 -7740130983487015498912492068798464 202265882098305827335903777914880 6179137915299190983154269549494272 -49413836108818829656292996449042432 8984088684910415728220665884442624 7776364228283846941704197586812928 -126656118808282882433114994552864768 7407313885623239891872254009540608 4581964367017887793300476482551808 -557800577310009803618133012864040960 4793813044548445053353908116652032 3425758786717787117851782489833472 -589588241012438383816303987029704704 9419782744668603384864367741763584 6001452691989175066468407327064064 -297398253964116379794844176674193408 5793752086865005304828984500944896 3208526327279314486077459317915648 -338557552520532238045148022787014656 8129578091365986988662819311845376 5857961608812124676942891952635904 -412989654241399556674745048577867776 5554733785578998192018372746543104 9477253513115164094293917902569472 -492082980802152027897755324959948800 9383115753392637961734956968312832 7741174766565317604257603275194368 -976879502710232930563790095995895808 1904518447843845756862052429725696 3811766038120944833426564950523904 -35580174745015362686927959834492928 3625968790129304015837724999155712 6682393660313889777131265636433920 -333813618953132228060303146725933056 6746678443379241543261618402492416 3384281591602876494096346376044544 -596082244163508194323653936004726784 2915651356531840943760760692015104 3130103419355135995799491919740928 -324734791172446921651520891045019648 3390598023009267685632433010507776 1076402025267346062333936406626304 -53409312879012920645530557477814272 9685907762787497057125857553809408 6172018630149110315825858753855488 -974933558106082224927358337517879296 8096171752111383628425377504821248 1497819761445790102580687047491584 -88850964723152171162658259179929600 7680006709532851027451006800625664 6600948563346328505455375602941952 -848041693932430894791284017374167040 2200000676887097369282817432748032 9397942211575533890126048537870336 -567411237608721603110115611955429376 7335950805200836524808631564107776 434346588419720279047933555376128 -128239855115203128116492607787368448 9581887557065575685716135123091456 2757736192225082284609086142021632 -816314031384383611270226059322195968 5013178036093533656016154110459904 3762403169651227491371078324846592 -216097969001499950758046153522020352 673798219791137240882666882990080 124457429525315900787818250633216 -410426212209874243029299420731539456 8354219867779619898713722985644032 7417664609015549631589182890573824 -654027385833714566857949861430427648 705973778660789325246980522246144 9587513839116530353161022849679360 -835395547381863977298896161198833664 9582746902668113626305709060653056 6538109239332424731832222677467136 -487938284632038349475982064348037120 8864403483163648194658790832865280 1076853469100296888379133680156672 -247162481744348395561812937186213888 7229303586483673410291042592227328 534388122137718745707531475091456 -872742084665903812771365594823917568 4817999503570437302140772936581120 88048482451550577211806947737600 -750587871808223475985519352752373760 6126439348606676681306009795297280 9761534685543370344263751598866432 -3288004776791350914052692004306944 7741452809615687004242720348700672 9666485991296541315132692233191424 -731447683611157224616132480543490048 2152330676809766827748613234360320 3679942801400514145092713475735552 -940779889599209687042152290454601728 5003991716970666688236605489020928 5992942500894664637384555197628416 -543968181870440299895404317940645888 9894286411720766526715534134738944 6788379175983884729144376970706944 -803644021126879558012286383006154752 7456740457718294853715718920208384 7144397427200459086317656939167744 -187193324901886186909000701317218304 4968438956316061601298093508132864 1352133544748493047802520015994880 -28212506474808798863037471075074048 1546098627745264352151506268454912 4886141398480636470123465766076416 -816491224031286713198576583844036608 2448215355027879225857919034589184 2114899587532026151274550537486336 -769616266522303969447461931626528768 6380349646046764427922962898747392 5365096044385671394481315187261440 -106850775250935242397335042064908288 3523218969440009287638382580596736 5454078240157264074342846156505088 -892916084083011781663472105790898176 2788681979276943063552878159331328 6848894969130173790535409526112256 -96976532800488655847014456480497664 1296572619824578333175030587850752 3865505572980438125923139961487360 -984864811333918123897163060592246784 1197565428949653398204874741514240 3409565935983672443739723536531456 -663478687962502103458946057611771904 4770292548364507718636372565688320 5531182035510517402336725395570688 -277357025165159007336132354607415296 7193453259862299276514904544116736 616199919769235726053313406304256 -695916967487614244129869640044118016 7170564348785226344601908164952064 54437511500916633522108704489472 -18744099824281406183931773557145600 3667835380217601182498777630507008 2461967584786376743399103423053824 -683858197711319077470736958575607808 9858410853229911089395679767822336 152829373543598855828063639306240 -660370557537868690256959767190700032 6600590043022676463561859504537600 6220426530837330851483369412231168 -288405456375334684477861398359048192 530796346092256714545905625202688 935618068542063819703673426018304 -793050856722938987681352811248877568 6575327751409307010352057373687808 3860056027423100899459266800254976 -810793084418475009707185305162874880 5847190371647990157392172191580160 5654213696270205802202678203252736 -184237035746405332082963794110709760 1400747271384799890272530133417984 4417981454728431787689362575065088 -193360917225877737240954631306084352 6473888585069401739474259838763008 205626244218467449603241245933568 -495552073529706958583495615762661376 6604624812388578316396975584444416 8539571809120795851114388142424064 -281718541750831761696431525240766464 4296654721809298848335572966047744 2161395306792281536685068131500032 -799661129414923636553687916353683456 1672747749224589314672093435002880 7368932272591570640900889652494336 -840280752375287262301001511927283712 7551435480927350827045354228154368 6905417023593360700604532702314496 -268504559720616466081403306290184192 1452965958697534512585773959610368 1504254584670641209770943304433664 -816810309649025655080865800084520960 2498513313703177372227634223644672 1340284950656698844560802652880896 -597996662634097922439401448660795392 4880351315917698762558695727431680 2836146489595238796299736119771136 -626010831225066320659924960294207488 9506585616494703702659938155233280 9129196990021986999318456878235648 -210390683880875042281297735032242176 5059002171102375719347356356837376 7634336711800960518380843413012480 -305921601906661764016142264886624256 5359928351917308296244483028156416 5194137010120357147508419548151808 -534285502153382754594439422585864192 7125434807159389325492955285291008 578054081807326263880087710466048 -99727454390105075994376416928989184 2883215958951496979410218513334272 5581263131170569175408706903343104 -222081489112542796423103474659491840 2936099916805503408179867409186816 5443944874182433038966725107777536 -355768509582172586827867238292258816 7191864140337968324127945566191616 3445004672069102538685985799012352 -293649309109260296136197950670897152 4861709244795497402671465259597824 9533005519683187879443106684207104 -785614798896240000996790239718539264 8162352558475252151522334722752512 1331860463751959228107137040252928 -666198124369058150799732739718250496 8951164828456505837227566253998080 3664651158991236772968947404242944 -917520294959222705288466652635070464 9714316932106585058666140657516544 3804748191561305742998593299546112 -249451379957863254456918340626546688 496288742878045453371148817399808 6283407045385109243990576734404608 -6425880141813654011706804965212160 1172894050920492253134074964606976 9871593351742984616535418931773440 -970522696860042711083572957406035968 4914953187397418402865448491155456 5998189220025899641586145816477696 -326993194705085200733594174657396736 1006699570704310073047573847867392 2490942489627383813642038758342656 -972723512406442533545642652667478016 6641600785933279212727872662798336 6068416367062414855951606905569280 -413628606347579939718038770411372544 4174792635375934447457761291665408 8663739237500147421867856420143104 -780685144113729059167608133677744128 4521715301973576747799099681538048 6176998507615141390526037564063744 -117188226656562053396042032059777024 4336987503793910921692141492109312 4828249626516630560514453484339200 -593858769504366621238810903131979776 447777101030795499552407851892736 9167117683274770010054887454277632 -954375531505449933507313238739517440 2007565572036726894894525903273984 5340921460575164019506499249242112 -992632690577525634567593718018211840 2076476418735207409815206093651968 4396264868850334942975902298931200 -301392731181972334799506517295890432 9748503969535664560401913930055680 5212845696850156098361495516086272 -644086863957209275598850081708572672 15670453121197053502902088237056 6223483237354618390575660975259648 -717482251951672778382711504129490944 5486272215230981628519987867025408 9395288516100395495844806685360128 -207677668206904690872745422667907072 5723649408917412990818523866464256 2392075658851035624605374056759296 -739373343333110610504163477447245824 9747286845056835965444266393600000 8319086497318241047261492082114560 -965533604347544614498401394976882688 5442405409328657286719391261523968 3569768666126139580556834427109376 -362161394454452353897370032556474368 943779592889463923409679898640384 6541397359775014661402638665383936 -819032723105271459772718818825076736 4589440023323614402485367468982272 3493761518833878674651409096376320 -521897812086537729361049038941585408 1359191996813942126911167483871232 8226670646291989418839018651516928 -896831511880481128960899026094391296 8526175823140865127078869459795968 8443540780024818344096809313370112 -324928325715372554271703466787209216 8735232159775503847952533424177152 8633741834347433227009512127332352 -424366873551115152391572174479032320 3778847858335800524792162087337984 9680072297554540619408166543687680 -249514761772119413176496332910624768 8101878047869492309015329612234752 7915150110654084057159462610272256 -756893491534320864456546007228874752 772332796703977326952673158627328 248454805042775669934071270604800 -412942349941146011755191720042561536 8724104646548487325254765854588928 1917604510608927633126595571482624 -189605616514196572251139935293145088 2218473858719344301278650211237888 6576079418437132160590820856037376 -85145654591522776583543552934412288 6562486393210679721809890078883840 7576169311470186951894460413247488 -229924383061630771698131392811499520 3759903289077840946912899782148096 8114375643862295864966018207055872 -38270070482908289258408057436635136 8680614394886660696870107740110848 2809088756659004786721244984639488 -628072932499174707788343257008701440 6595036397146165131225175584407552 7890049516482858259030690506997760 -171136056382995039607342220967936000 2259748600382147382630710958358528 9142301263231572551829507501195264 -462046011903021840197551810167177216 4737987660358612510345806905081856 4078224627075868245610077339254784 -761363894636086131416638661091917824 4430107325847941116439605389819904 397939452720709229715135215435776 -636432902897190989666435680853557248 1503120212405981312247981559250944 6852841086987313761551112818655232 -243871137417940130687313576401567744 8004022271475179213443225224216576 4371062667270034479986224308158464 -560252549740991906938153068866306048 3777134071672010227593064638054400 7212235357946435431612174550695936 -864896581572553052115299487245664256 6039659181851445264691185858904064 1731718127623716769853142734995456 -926152272561315035905870316531875840 7115719947135290985665483969134592 3472917275900190240173558088073216 -261839883870824836699107828416118784 6858446172885631308864949212676096 425597825440614764115831002497024 -167979093951601975822220308739260416 8873832216494034437567944146812928 4788065707346099901342420134002688 -327451371992769247999335943303593984 3782034073569405225019955788906496 7264773691621071490213984031735808 -722058386956506199952850783811141632 3490450054674845294235221797896192 7910614050838966178160381207248896 -350953909171546135737648655867314176 9385751972161606268227753976266752 4728922385625695798460015544631296 -824317248555639381985496992745259008 2408526487770506327913003051122688 9901489638680458091852804235722752 -116520758274124740642930426577420288 4368174776316827607848277646508032 7697396148605624209670075599290368 -326073042806627518826885708882378752 8026384443868541487715613937762304 3333011174626061965796041916678144 -111579604941534969601670269403922432 7217064294103838305809738871341056 3402925349775167120849296854876160 -543128655399007547429333103022178304 1631491603345924875650982421200896 7106590985643301741875483583184896 -852967188404108387975941999143419904 2416244288111542640846752310099968 7471506257896001367793847379165184 -964569806685829920975585337327747072 1078498596998669150504458867703808 9685064137771776357837101661683712 -311426592814483504208230565051105280 7064582910273629227380737923088384 6307076740572182949682314502733824 -266355472397191653227027245721190400 5800599918951893383077989640568832 6621222353505910232417075885768704 -335212380415549529976460579834953728 6529636322689301772472583744126976 5626987528452910722292367688204288 -332817545882564424302348755869368320 149980017310679706499564617859072 3451547249042751992756124046589952 -937648119669289723911205299345686528 5907244259419325549263745309474816 3617650093646239337036924833497088 -144374403976406576237952216688754688 8125752861289816209845268279984128 2912724993822777755378552064180224 -757974223976687913696560897786380288 9043539329477167895230935201742848 3796772678550508755709608295661568 -796093322061371301380754924420202496 1264798886902262174246281527951360 990593670615014779150149240225792 -397242230756849595752827709837803520 4230104634331652647451538111856640 230601311583030331600834119335936 -349424938240044849432083479314563072 1387647726188841628787068696002560 7007458757707335788300497525407744 -754784285466218087125363280041738240 2465741895266475438521982484742144 6123520552167633335258480117809152 -302017284221587400918368759417143296 3476998857023643984063311231582208 8423997161336313736978036548435968 -489438308214158135064979299450748928 6158457759915955924605174257025024 9167226414910611734146805210808320 -362321321103590218659669745491509248 6813369701472086286692356020240384 2310929068796356774336599326457856 -484280426941845847378279865100795904 2867678605012808277198299799224320 8119142736919692502595432389541888 -559914766729893193837272852082982912 4743647724540937713013556537982976 2739326000198512866207135279611904 -410566676545123226410248328498380800 1444006630995274666739581501571072 3145002185232449542728380875538432 -504651932281288115005736969297723392 5563968994953968448856656172810240 7399091328692456357017625548554240 -531580097380700825317620008114716672 8687600149417431813237529083117568 5083877026412869551720403300253696 -924035462187006692261157231313027072 6326901280560786752196533037301760 3810917494750086180109828656988160 -824421731544131304178223260509405184 7596073921869563161033720461262848 2684291024964567037607163660861440 -568277025454673839555073063774060544 1310908189188238823296167730741248 7288608205044520883608581627183104 -762219295280187017053340917162835968 7332350225587545173984119279845376 5264243881841990539444435040600064 -131880493583082413900866139942027264 5550953359439290102274079147950080 1782614145632865120446223178792960 -510313866505951359665670601391996928 8935237919883033928274825220980736 5635103837500709785334199288332288 -961561338914196481048014850980052992 6835358248473472447845928896823296 3243938786143161854575901671424000 -700257420592172284779262156776407040 6594050347351173557963155360972800 3992900598883297735813007767764992 -88483737194042563912832822808674304 1803515144492785002508887208755200 9527038256979180754932091372699648 -372034850819117442537292065138540544 181806321542425937833361508663296 6942740520231910624934809502220288 -686100126547052726609305689510641664 3366841495397213865187100619440128 623149149005011081305135243067392 -141540530442507585087549254580305920 3616804155300493666291078414729216 4627726821640534731116830586306560 -595414535324310937672203727884255232 2896473928842994828052916571471872 4778067893625519988956598143811584 -854251632815094936472941265145561088 1238619150608112498397777055711232 2880023505181834590706329158942720 -670887292095843656885991519870255104 6157595050974676796653241775423488 5684022974255038563968998430474240 -545447214052161554847598431453577216 2076818962113685009075087702228992 3593222979588492800983169100677120 -604793315651044170379460422628540416 6125966908119838560445986787819520 8098574036417250551479055996157952 -653502845854549377070540799269142528 2698963643670422552679685073928192 7467987237693036398924463209447424 -463957764488933977295552794058555392 8272049135408901824660301294862336 8545207169568399951206024912830464 -208398185182153829013873316763533312 4809171195106922420807203718955008 1200868045046890297109525798322176 -18961180016653412061142099154698240 5548560294721000959731756492128256 1197079125348917566119151006646272 -455672311017896570443679323951988736 4539146680546931734964513372372992 9123234538214715621513087571460096 -674467352955041368010705057232191488 4934318704917416006575462228688896 5093611530625617504084629554987008 -592808876935247037790438170929659904 5153220088775399813055589264654336 7723758460775965425838208034275328 -470582922376083106221840953444925440 2830919179817178101799650743812096 923296274201589909951376804282368 -493673935127729439322299888662740992 9645519832096047353436354633531392 5484914515736777349361327274983424 -388017060777343209862210616364630016 7984705561324175290190384865476608 1751215640665301504813618790662144 -406357524777564105385503010597109760 8742932604682625515159230665981952 3790394351841121482778518545760256 -883763284699432797913113300377272320 9880297232559131401814768407805952 379742602313451561500183439081472 -634045563329593613506180175682863104 8491889540783322858763083677958144 2386656314117112919364505394216960 -719241419192636391305958358471671808 2444468336441346933924888085266432 2256559496137372658319745565589504 -602729006555586345765368695827202048 6254090855986311987145861937233920 1802460414409495945633725264429056 -512639458691285253907608453181865984 6578754643201546455192427978293248 5435181339271645187359992308563968 -157881622163172471851025246902550528 8101624189732305326190518551445504 89943857947252811551619256680448 -445263625974769339686411781432934400 5171906041202425929770495178178560 7148054045867909925388175047393280 -629503358111114324916213659270643712 8888871802983642082509700366073856 4931550466051569123032934538805248 -583171989762110283967911648145965056 5552260854605297946519072858439680 7530296175698430133110863501983744 -670145736639807869182337845265694720 9107385521808094059921225749102592 2353068209502940680111775698386944 -837086891250736696225925736574222336 9707341814041273435907681803042816 5853041109163699949748047629516800 -509833262282262989745676946627362816 1792239592782159791135845299257344 5632672339415708718855565309116416 -190875959665664528143826807894835200 9306506767408035546070675565314048 5956608032050214236976471823351808 -699698019215019308414442298648035328 4168605723447296034044001363427328 9464510567805503947671516997484544 -914423950926752503556549073843519488 9273996260661828340701890162458624 2677918129327028662605173380612096 -29634901762237858524653686915858432 7786944761434477684252835397500928 9741869724665002610926495960399872 -555726236170034132937685660300476416 113301797021844775352130498199552 3815197195808893583199704237211648 -812466768781496170322075022658633728 2912028257532577714678233326157824 6792566108538175651262176977485824 -296369485291341494182643216479682560 493412997308530216179829978431488 203572224453813031744612075569152 -571739223741077685073783136983187456 4632214433246803257082348872663040 6137454191177969275148686023720960 -91892093131702508094894900173078528 1973446605482273107142788488626176 2126694723019483555963388194455552 -146078034631275269641704435739525120 10952147514113910458649675825152 900500484684350189034566555009024 -929748470130001210918288609983332352 3720394698180484393805065844948992 9440267443449417658968780444794880 -565200639684977667918834100265287680 4527834578966018812273445327339520 827877261197909146850951847477248 -548367879793809307082664375117414400 7952484257571945845146631874281472 15852049662134132587216662167552 -202271070192773584067285657650724864 6963940698382818230297904491266048 3000164576318655604432050222792704 -627265672546700316588104047883452416 4257475570938363913027664237035520 2526264749675097738649440964575232 -448354003663166008872872067171614720 4575519469194868722157904319217664 1808963601652267673597440895746048 -479166515764845056931195384942821376 409630251449314862300211122798592 7762254420752009949700549962104832 -998517878370367793927894830784970752 2392956854513852859395486703943680 4239895160732293847256496324214784 -92002256932578637483618837416902656 7924926320980150307226802808946688 6090603962735617467761810470862848 -90007702533443090469283377165893632 6335615183772106468454574711635968 6494306919944358813331845996871680 -440723768743736123139256057497387008 4281055888587362453519526499713024 7765106371248603185992585564913664 -580360313137613761070508865365213184 4298924658986473849821885406117888 4155745273614081653080149161148416 -145524116999735816745448211365232640 3259973838461676681347360643612672 2049661588147911597007418052050944 -847486231119531751898392622228570112 5763700251877526880128393770172416 4189720814531130954321514802970624 -103114433554626198718832771319463936 7493361995806768477321292400295936 4685796811388685122660692626767872 -164466827484415522835880704405929984 4061903240855866723955644496347136 9975233156400860652683901139943424 -858611760175418375147740156517154816 623466653907929028477274122354688 9132279659094683341875339602165760 -962313208881495904422605813715042304 9759332770090237300471809833959424 3068644940501344660645137486970880 -390674158167294027481112460979601408 3637198710520579941870904748802048 1188899424289541800206354433966080 -202642435182524204720756310732177408 1811309711817873349133689946112000 2416808152346687503583348034371584 -526852714425996659115082762223091712 4503588195677179096312588433096704 6567631417393115659547848956968960 -19189073734117911006721175229300736 3388139087183157363328555851710464 3155356273411712841860439351492608 -933066334532674370404512819681689600 1323318552154363997459999182815232 7457301135142356533814041189023744 -522299299414330941088869292806504448 9555139477171982105449377715716096 2776737291731034143132796562964480 -841606437051538265247326916917067776 7253755017488292557862193277698048 4828887047953655480130638314471424 -144438616662020458642547633341595648 3680860516253502786190657630240768 1449322885425395032152264698494976 -351747282871322060509485297106419712 6378174178238048120783128322113536 8441826684799677253743152470163456 -396578892164902755258616314255638528 2186123256510989622585908661321728 2058459993587921656908570714701824 -1375776492438080519929165986660352 8575818631971228451785688322408448 3208653875720919802900279589863424 -290161027034795291664893013385019392 6987213246485601707017822820892672 968688733890798054980240371875840 -196665934338427959596888408539004928 7285860941309685881566776336056320 2815726641145438030695051907039232 -456797759011375032142353559795531776 9563072184910168028599719368327168 6351359863419877122633803239522304 -852731645755121882348909192886091776 5818161114802915171611960257019904 9672036937055178608492815413411840 -141620890877640419937122162824970240 8568932071770129450032990137614336 9798117986711467566146331235844096 -699952139036777112179262097121607680 7751628107382074063110439488716800 21160874356552635315297164722176 -435863318583578659540325619902447616 2830949810474193958322212884709376 3479000333106571232144104555020288 -494241159492723508026045593620054016 2780796488554621803261224365850624 1205990113904928882654926067466240 -797476690424900210199101288065531904 5193660193226994796557454177992704 5904646139432218014465174636855296 -773861412201331001455496681190588416 5129621571443335230916677150441472 672778321847930035219240283275264 -475074290048303173569556454433619968 3992920427308634305062732264636416 1754732221609375302388621303087104 -113500630925999528824762219045584896 2809192106373576469257333875146752 9773706828076017032993157064687616 -940591017285630018568387394772402176 3691863171999549877534647816028160 8938325386038618259175442401460224 -800307263804339321001305852891627520 8411918022143662290820470172286976 7549285662456078890135891598114816 -640249756844631800073296438685073408 2613672330734244156620201648979968 2577445066136939418509008001040384 -676912272998986106093992288746209280 1473579344916602769618129580457984 2933587190842615547073855626412032 -228533520807781855585959324738912256 9093372127053161365771463988084736 4664070308969614902664797102276608 -228591635568184332464730341195644928 2675209974389424180689586656116736 3341375677351933300647344946020352 -704467320415279220013435799201644544 4422757718222826772996109686013952 8441629759116381452609496429887488 -794657629090641996572797400453742592 3631834150676739781763461915082752 6408153708583522797703265557413888 -490874143806055709176856297514991616 6297054215407856153265632849166336 7219070060657767457544073847504896 -270198912981597854319222247997308928 2072453738049378438158770514165760 5482721902754334000525311985319936 -504974894812723221058051707376762880 7973530811162615145992816286498816 526471190241758895531381428846592 -166013492887058718323862816916766720 3773105619068665490520459637161984 9860875184791142093921058857943040 -260424286713635226029875467869224960 3549959283408848541173264001531904 2700148792736022957945882247430144 -298423531400871213429661625195954176 498468908020274620023822937489408 9107580895527404082842842305658880 -35711409071701271735724818883936256 9618587954446502805221780584660992 6223557629648409960485473153449984 -34331673185356716331697722540163072 4844846985001478747908413977526272 8125304427740289264677566690623488 -71665787352379342469888169471901696 2913775958361429317918033925111808 9157513515161222932789006547550208 -29549553370117350047024399905718272 9353172137324287434921403408711680 8104333730867675792654269604167680 -770473218942847419345745972039778304 7383205001049509043784191154585600 799801438640809614117197358039040 -49696111208965819757756045827506176 4498006837230738467224392761868288 1738859886061600294598375775404032 -932603014711996040152378688424378368 7045504821157800327213329160339456 8911385797719725405656198447890432 -179753372526377802359401774841856000 4211840416107992889768693823700992 634893351082546626324756319698944 -756435915845941073077196511894306816 95976867434418936707262107877376 407330693630494545356863190335488 -996461397172894183572340584552071168 6384691655375904736284382280548352 5001480303479673933045466763624448 -376940984342637491730200717965656064 4370624751966127474736069332697088 4831398025506220311429036222971904 -3005054616620490670070513021222912 3614228695890284628232872705130496 690576120151596119147727187607552 -215431205124361542681500350043652096 2187097980596151888922633784262656 6956601274418473250990622716723200 -646344379123526767883779561846996992 3944640587778730030129160946450432 2834002642540232017777104282189824 -207222382385552659201116504741380096 9337225888466902490046054707232768 7310444817588171301407555525279744 -41290381852315078675972406319775744 1129238112197846518866538521427968 6987300497982745810701893607882752 -720684906941259403931326989396344832 9233836465044247488669773568409600 3668603231398376238026959926329344 -170602853349800149860194898350702592 7970452564594609748525059548381184 2608706557478402099456334377254912 -413358168250123424841622969997328384 8451067507878984172361941298184192 8227311500137012764371193476153344 -390817870666472000853062873851625472 2010731509092715884853428922351616 4454949220305124997723964282241024 -45273112698117536185626476714917888 1792483842939721597759395140206592 9833309196840319356939787118313472 -307478888838029182720962253373308928 7778919575282660063157387769413632 4077899799895648235901669332746240 -211964129601791569946974623841124352 8444082806409336225128104222261248 3227924432678624766943868565323776 -749130226059667581627964052956250112 7126627731306981634537793993572352 2768341364697788225416855971430400 -631341326035681716783658705956634624 337159395306624913643285002584064 4424289220705510946915993155272704 -912779325709001946269801974551543808 8603899885600179332406739571048448 1930973017406193144114585754664960 -421531089697977608257031386104332288 8328317998008181618126250498326528 9220657349788589495847487671369728 -40582428770051934455401705883303936 7769538035997049112472979094110208 406137990504527546999947453792256 -92151714334186792322128059863924736 1215294803323379055737848293490688 2647946300337676740212643319513088 -78443580729808779368739594498473984 6109322552192539153231648621854720 8483456655569064316549979174862848 -13752786910140345093467684099588096 7212037411486329653373683284049920 3249251646554425592307160151228416 -845662476395048799105782383867068416 4371201919052077711903282828410880 658289952254504110205641475227648 -851407187592867315596788680179580928 4767314908347445967565799638958080 6352545729357549775469183762432000 -660665806904069457399097200008495104 8003621328166136626277411832463360 7704715641342845781867215210938368 -866287335865587896380596423745339392 5538521858628347988394122487529472 1113717396820998341315043488956416 -937098010866065559426827071411716096 8154981235875963731914237746872320 4453111770412419668473042025054208 -680351774752286658094727603586859008 8823428424351306203461514564730880 969569043862908657204010244112384 -757264300159955651294148931126034432 2427755620996753725207957789999104 4209520580111557222844425398386688 -437217730242635645024815539489341440 9748203525319163412310949953011712 7031935729142787609030676227031040 -537681674820913347875024529302487040 7548651572073477354167297843920896 2708159794846955823660800801767424 -332221795581286849858263929101221888 8043013969556338017552425543532544 3469576195756123815285708396953600 -950460157688387456112627220836515840 8853905980108418043615818213752832 5780428684856526918153312040648704 -164547245269835008980025580357419008 2120888451646982591259915673665536 3871787899880260807180646050955264 -114937529100796544048707770358169600 7270869753878347003903055719563264 3394563602422573540558751433490432 -951147400922189592752091029340946432 4221080480873669874213757072179200 495861500824542060312432778149888 -168648540738658791104593560724307968 3144774670333690959990686497112064 8309029895275049904201337531269120 -828423132648413340261092086794682368 8319835151010228878210980217094144 5587744560393412253584724619952128 -643606887713156879985964039054295040 8632812066151101073361989617582080 7997832706975049306868373050621952 -541103514468614294999283463157186560 2631098451710994668053633219690496 462052953335383120464208788979712 -419008456248720166375601547690115072 21696903301302954238004860813312 8816295653717936721306722341224448 -958472390936454353761086816141705216 9587974461095504875992735624986624 2901583235194642714358361557565440 -712312269599585892280880731560869888 6586041261020982132120537159172096 4274888904833435305840821753872384 -838482702356272027619105930242686976 7363775652527094383705008495394816 504380457097739434363853761150976 -607048031666606372533964992189300736 5426224466090341831369634837692416 7730655606843730963391570142822400 -665296265171166871016746491616165888 9259903351102601936642510023557120 4911594782499553349030365259366400 -968588056514790715467601763066970112 3473747396962155538047590452953088 1079799023193318262788656004595712 -869043302922738161685336170306732032 2398289322328825910133507684827136 3436282051225476333605616665755648 -786078041276447051320232416678772736 2772060085876008014464776153333760 3932055490035252622445896750071808 -443126118332293605408088260557668352 590386713716209766283046614466560 4869358880617362199572040363540480 -260899214585469871655719645103521792 9136670498763905548406370976399360 3626981669699946023809405893476352 -111117099576845447844568492270419968 6165920951515203696068519041957888 5820819988043957115634195963576320 -597720453863751740715200676141989888 3209384906859200169803074695593984 1437354964673855280201576258469888 -266366091165908383431755453788323840 616121476496533501247878305153024 8100335202810711434443372569296896 -297637118237751343824435011563552768 4189908683340656627232603182727168 8627414986048995408442020887265280 -530728260198012328295542175492472832 1579929014533262789872990199742464 2817677934423045265982598215106560 -656727777039209097167909132471107584 3316380248926646504902383703687168 6356973504236692930020426614046720 -287659632647651560750249205005549568 4888524681744053996654776790548480 6455059328277217354938338125021184 -135106507280566480595488762536919040 8368077934057959357136332595920896 8046671589081919875086665727868928 -71264520696097811557076114868273152 9522322160296137203393094349750272 3195573500386042872976147755302912 -90382521033916066791703385609338880 5232998066593379307043563623153664 1510243170904364602763824433463296 -674016883489429547527227467064410112 6655101645964062080954907465089024 4060138724937516447216147051315200 -778297514409235462938490401586151424 9399308734556243060881788931932160 5147489213607235595713371040645120 -742916544909388655374317835727667200 5872953143193953551922351875031040 883146826406797725821092986093568 -1737915773896487186562988801785856 6849043093549304805648084575977472 3131134392754644489721965715652608 -790563393374070059650194884379279360 4782676540464501193769108142817280 6714932418370241041004721273307136 -701075644665993996865029789232136192 9757520756222375154893420480167936 4019777082229086816343545517965312 -240939066821793984316424208282288128 4324215802166421554118698085646336 5282091245828276923354495158583296 -959366188069747808857285311154094080 2465172842503985067989293001080832 3000275957473575527388468637335552 -879367914548133204037700884681981952 8782530344387402754617350553600000 5374042568139986169132335876800512 -213751613757429480361269317425168384 3769299555801165631271408137928704 1010998535268747924397243072774144 -409547910311331670718477286355501056 9398874091998941276476931970170880 9091414266759467266672901786435584 -798197605963055535264877600363773952 1558026365115569092805577429483520 5345069107804563822700610235400192 -700823909481912091657471735501946880 8801518587742414797202641649664000 3868889168306231408383415709335552 -104904028000957527375524511845711872 9372648917779366560817924293001216 6838854970312095388773645346144256 -23554826691091246217497987294167040 9637706751869931126003668195737600 3968065925349841163026895235710976 -99059076010898915048500084401504256 35267149731016752615603614777344 7253829225545401782745054324981760 -669411473882892905009224891550924800 1920845306577252421898246213861376 7016793763116625877310120082276352 -533527241813580648716630795810242560 6170880940643877387090602846322688 571226922394925141994488371085312 -785550697701579418278674164747337728 6982558563068959021522152169930752 8969077870156690596521702678593536 -404339352198653971764827258804502528 4103203297271262735065616050290688 2935618454781622221883369672671232 -458407136078393488823671322138640384 1420336717838989304944482538487808 8720343936719100533818954839228416 -485344471830623769406382343297433600 5903522417446869115907976900640768 4692137022449947688935291388690432 -439637709121637973313860863868796928 4933106967016470516792551075217408 8776683266406142062479472611819520 -114608567715069170880696699146207232 1748148993031747415257366705209344 2746170888018823169563505736024064 -619744785126958294700654464761593856 2741687671289543154434262698033152 7723002822599928240851800681349120 -439119061576214430003518013957996544 7502343046192228469017209083002880 9282866092606177791112433515888640 -79887762553572376589286210210365440 5442489768762219224945203376816128 2955468682496813634014406189776896 -268045529481514216078188632428511232 7589974795677659676090084074979328 9673505227106359107944667496316928 -715639084288500956285576907071684608 2059403855233002022958809464438784 6577304674105683692454128602054656 -570551569226940050172128271808856064 5962606008294350285376124522332160 7366419508239539540408431833776128 -471714177387745092336959115201871872 6401560713969076875083125991931904 6860888285913217176214382724513792 -720453410962017104760187746835759104 6423321744623492657906985742630912 8430611255406437106922745258573824 -291630070882507056531367168458096640 6691253580373876033574519741349888 1003707257056728958253276650799104 -724398268867587685000010518333751296 6911728594952434406757941211299840 5858215795429336223416604826796032 -534571533786378017007466951238221824 4315745521228525576497134441594880 538702558639645949302056960393216 -2008519647649325353662145003257856 847294009927739174711898564198400 6362031778877258938067104598851584 -130951529109407901073017253874630656 4052052381877653143797556433649664 5943691253071957314121901109411840 -685306986099081988919509261551140864 5378737890794968730845844711931904 4747405787903654411734687751864320 -268132684677006635517965998967750656 4951438895350409874100871967539200 5282165128457771996581284462723072 -937934320913656395431617573943246848 1895103818723648243258834502549504 3064778771782724824727220549320704 -747098149592945895457827489847443456 7157400314022596941980387518709760 5975634868433334290872527740731392 -734336137119189823368780793463701504 6001974114768464238496244417167360 2405222798693466292427338045980672 -927969439701847933949113338085507072 2757417204427437238930419988037632 2145667778423065665716708098179072 -50930802271457402752418192161767424 2340584697645659785786740613054464 6244783690524028325625932554436608 -734887461556639418831352470400139264 9521263445250781724109725497294848 1511206960724155658088366062174208 -313465363445965478234834274038579200 4006146246863444863921082345717760 8267265701589571335742101781479424 -766489004405983379401436066530459648 1979895382413156739154301396451328 1601085699771388710642672851746816 -202317774578662717679502061253689344 6957102796650756473840016878993408 3973111764515829384005689079234560 -472850024088300845688214572974997504 4067269857671378401182251384569856 6153002465568180277089372077031424 -294015003267172252306714756877647872 3937325726358176652611880635858944 4912066308063782201403314597265408 -354092755413763326418332814040629248 8010831763839902322726561944436736 6962282989162327778427497384771584 -32246306128799708209868852086964224 3077790044704729581884528276799488 9260474344221125481077144375263232 -523680601342351291696729056778125312 1890829339924716523732591200698368 9038431042454117037516802087714816 -820876881735822674724402454752919552 9771195833657188843193246806966272 5559555327337424147373802626482176 -541707723102583434501378462378360832 938704693500908751944191676776448 2211010335587657518948307418742784 -522006309699751110682061258578984960 8257856187270849892453567101403136 2515857026363838483318913087045632 -966748012189752257306845027506323456 1493974970064079608058318654799872 2031672528620064278845426663161856 -324802233311808856578820439038492672 1614336459500597173616958330896384 3691659364633990983763737920405504 -879579417604247312549605316854022144 597834769567020043814658549743616 6544837807723999352484585774514176 -882982525198234106530788170545496064 9359130045354615019649639267696640 9650109353567914748824155026620416 -141042868167595334903556940463341568 2882271612217409256633216039649280 2208420311453543264195918658797568 -809340095234573755441250233049153536 2464594002181797357543537166516224 4952724595711546751415542263840768 -375223818452392449547828409474744320 1565965210036239968006625030045696 2587739403524600825585696359055360 -213322119132170789720079072365641728 3248000483585873584249476539744256 6149007380680655149928060335161344 -27397915488043654784334208480313344 168504319841946083043195718991872 848066813196181495344471325278208 -516469644067572314155945723791671296 2473254942639228148878682005438464 6528090620903668101071470174666752 -304611958864315043375212155354742784 3833094219122349383789801610674176 3595658144916970478516804287201280 -28603974033441521989987396069883904 7817857949845586133828141213286400 784293052884337217979132227354624 -599513742582501651479621626188791808 504428280474863869591748578639872 4997389166579586875393938439536640 -879597823320447357150856858656833536 4839091498138945225324428292784128 6056034636089455354527604270956544 -222809615609076517956189064146190336 8973006165961370828216290053718016 241317297238537969028801549565952 -368991931557368380844678018538405888 1683522906938142334701406198431744 3386915303647895295372317750722560 -396189289530060324604194960269377536 9264290600306631128587670745251840 3444097150034121415231773425532928 -25923869113174730477227650400124928 6206104953568843963842113818329088 2164362566702238689636485800394752 -520074854953062086195954863797436416 4524382440042234474710161984323584 5958500948368346719683158023864320 -941873586647603835835227920886923264 1541375859640147041388383604572160 746526116225482706116701168074752 -101509367699631699214614652847652864 5242924685592686737375047610007552 5424538086487545061446338243198976 -626538923770289969896192711476641792 4369854129994021372355378916884480 2945799897439519437795789258096640 -991683375408058455824519637323743232 8056774338213585118145145397575680 7470630740350166122640468674084864 -887409307232134309503409517792067584 32962722707638418881456453451776 3570889374775651159824756815953920 -561434337896783349689759882777985024 4216279762293883765057085983686656 5615133174809239310477759069814784 -191070012542472107964722073537871872 9982100816913085876643383079862272 2876417466868990178317609757310976 -991268615541969059864551701658730496 814491730499168577463659958108160 5451425015957283549044199569489920 -818213800206425681310747486595317760 4413013828656279517074395530002432 9955402230580440190010530862202880 -273881087531912671368890322000019456 5501796812768105211278817941782528 4037391667615183553190745962708992 -626375764137264861665072804511350784 6623988074886367382069934947303424 992099508342201722893474478424064 -560857036557018797327485269293662208 8680713412688675094991121961451520 1688981638350529471752105889890304 -905550266045085003406986996082540544 3886825338806060392025425381949440 4894797227189004485440518945243136 -545807399929328095111242895866200064 5762941413076555007146911441354752 210162712344309449147926007775232 -477241686472080232213932922097369088 1603321733544942922991501288931328 6743188202621182563246764833374208 -609698632873375990923299712183304192 3141981304004349380087176084062208 1263917600647308972939108350427136 -915049367957816002715739924748828672 5659216972708086925636586709188608 3022019407015837497544911464955904 -481588148251216691584524670893817856 447524303663760421677283414114304 9932690519563114480763388299313152 -756212033383318203445369128899051520 3444491779633021910313924235886592 3263427986810751719596596456849408 -385305789646315309796272035145449472 1316408169252638759115316076216320 5888901719195215838302721078722560 -936661047800427269510050257754390528 557173655872518569637904757293056 7898941622216260020965890127298560 -127595245977221933032418926523318272 4651412618097446427653416528379904 7128707259218153011510910811897856 -764809596755396824277716771402678272 3136360122941016395296408567021568 7323504065839671232058028994854912 -453911027196092670852368954973749248 3926967924837268874505132722618368 2267462348140073271346521364758528 -234122746914297205697817047380000768 2847906917267279339139932874604544 6503390426644658217657950070112256 -994291300813957753960103158963240960 5636444399530215110094435181920256 4545868803194672916254620341239808 -260204878624001776743974336385253376 9518315688338547276982336733839360 3112435802145890501402377823715328 -854512800883878699935632722858344448 5427300987926090002030409367420928 8104662859280335628846053044781056 -861248311808264599045328482473082880 1296448493029532798862426149748736 1152698133009082779583269197316096 -207726175866026599841226064239001600 5436857817751520721371099559886848 5230637517632732885268165742821376 -489818323228032411850485162582212608 9142154118147695556599382357835776 9989399836474567435489580972769280 -588691836724757772396473912332910592 5164936814722683727554649580896256 3149366976410741195818172682338304 -83109706265924220172874554900742144 18529698267387285724373882765312 1919484140942519829286433260044288 -154748920461359279547858562326724608 4302980226955726985360253430792192 952509023293680238318882559885312 -469994883731953010685648734850646016 5743093623016055285218316803637248 1373694165108619858833486175535104 -193231301846206987827943594004578304 7996296806562964480737127352500224 1689053213754822126889721718112256 -773024473099036653391008689276583936 2998603289032306451001542224904192 1111327716964327672946627698491392 -375540819854833261494042076374892544 7407976475965314312150202275856384 9700713281176111625566833476632576 -884744693711543282389292237457457152 1820039285017219078266508011372544 31390716072718577973355706580992 -42299497739513204269044862780702720 6975598238458205076694832859054080 8657522218392643171583991807475712 -337867404630232484855630726097272832 9542911929574139143902340652728320 3028291488894658204645814368731136 -227910085711477105242378404154572800 6217926311022476632399684543971328 2815588968955083011242883607953408 -542006012686171373563863405328072704 9651569019631336290885074858016768 1067921959822166615556650302439424 -218012787880194824783877250790457344 3863476211008323403241757809311744 4221635042638126483146307079766016 -17297593938331661491339956714471424 2706772525465886367950166047064064 3829364655719106722299529515761664 -509390654604857680129589973966913536 3399218724830056291322249881845760 6471494596271264598476593358176256 -786203293003950129713742739046137856 1689746153820267215322661137678336 6479752786701509015962632503427072 -109582901916536130337246650759643136 9897318825866472323628946805489664 8757034764509546004740161268613120 -521735553705063224404662311553335296 2815660160623942199000630023946240 4912526930042756724235027372572672 -808565373692968847776086721453621248 5548327800106870660024187849015296 7010215006194269809253895135821824 -971369423554759967594771218593480704 2596596790681144632308283627012096 5547396518335697120472576498335744 -327905727727167913524544589852049408 728072616971028770159257439961088 3930267381751127763212934502678528 -721427291728389574792217519936503808 1602808584750505957977751736549376 4731410195989474895406351079440384 -282788170066014523302482659394977792 4497831476173447358579451833090048 5923223051662055649158869523890176 -627590227339883250009520689362501632 9205525529034056194719708633628672 5247660357395123239357920424493056 -579584905495954603656635674009796608 7200283345070814901354122212016128 1123789813095558292332677416615936 -776834688097451657233804731829190656 1036031612723617071393204844101632 8289103582111149337319328740016128 -823060187907430229088247333401919488 3305142102096898611827575697178624 8893129130504021324668084387053568 -442673972874315901434870713546702848 3004662856674702004182050769207296 8671632877882657052732007915716608 -536349460071258775303302567914635264 3887010376912235356577139739590656 4065671678220862296893876248510464 -925719349730597469287581376674004992 3574812603325238731711257893666816 682704673727443350194390575349760 -368956081181877014937565530538639360 2087090377909477654459687135870976 4662748499333231301543749004296192 -306584609716147601099221874849611776 2170236024706868946082601317171200 2363840350828245680628606892507136 -203033165885898979468033515096899584 3209126967062985650611693780205568 8710368826621176574100355971809280 -259615213057769914636052903799816192 2554038760288395140065340413706240 4567720333517546577808580528832512 -853495853423880559017853519363309568 3878929079584587714385463249731584 8098230505994491709729996921634816 -847601655379178817990185437695574016 7323641076413358295985963116003328 6897049281853415473596974785101824 -256272847773693000949047230816321536 6628855667036307764617207758192640 4699205193005836292942621453582336 -754114091393745137120824024604082176 4382543978911901189223597358448640 2094936357628669493578415457959936 -932500507673052243996548987388690432 9583197712512101957498472486666240 9586188520293864729654854202425344 -865482004172401168571577503903121408 5442279572512432106100807060946944 6797900862055472103895566202699776 -800557460241884742668473320104525824 9413266296016582527922695810580480 140310865384215833748154850738176 -678353638341817434359428301730086912 7509052381758287072922528177455104 726612576329411625995609896386560 -903491147172881629277058729984917504 1001350295508862256767157835661312 4780403631393046559598062585511936 -551398460439290913495643883248287744 7367840578222441506244252166782976 1210685886312189864811660708937728 -818397199204549878919547496951709696 8988989449778051417597180918104064 2235497232721323750772200737603584 -743029456175424876780900684186779648 1761578471052161585645768482488320 7310348787098489828263024933208064 -337189310274123500614051786093756416 3712531541159237412387943434158080 1034304051933864683702398964727808 -493855987375685582345407822747926528 7517906586760366237002896389439488 4430191657653797738108805250547712 -189948080930017731487508865128333312 7899581056130986629721609801302016 5011764233132526290137516064374784 -925381287462373615120826671088795648 5314597402191464292945129916858368 4309003777363223000382711147790336 -538489891080413192727185466706624512 4303136619254885348276089753960448 7918656910143287103414581946482688 -234910852019956089654322070649044992 3185821910911586963961854386241536 8088854393124117746277284805869568 -853480564755667028374057445073354752 3984855831507261152141253476876288 2732373862032889032634186866884608 -754036641135125144653196898586329088 8434442307998914303121755062927360 76798325324214817067228542795776 -636823902267273572448912144175464448 4504730817351401196202250110763008 8730665593628033372411727412461568 -753225151711368983531416531066945536 6681183505057045794109836291473408 4243019078457003565042580005584896 -137896676320918062329157331110068224 4440444014099321383016863396528128 9119228999494212999986696238923776 -237224468416506685183734403022454784 9056536941836437916660171311939584 7585470838652846541059882154459136 -383133537761496541809023028329185280 5107058361027533890594620217229312 1586176886923610498705447182139392 -163712367387970146707364629629108224 7113884914978598964436642744500224 2511181499849876416522618190954496 -4610296983005527264023627358535680 4392883068033031981782176351911936 8235834840525760510256273812357120 -737905195987065994801512897528725504 4776424027600248577901154766159872 6472110143072720507475228025159680 -372218972262589673676484414225252352 7539631807387657656094113484767232 2059384296979873583937950628970496 -199821245617523204190555881227681792 2395676124901100485357377983348736 9676780231987240743559889189601280 -505326272864556347617977208500387840 7610224113885583461935834210500608 913933858678892711138985653567488 -483741388520260122630054815448694784 9793615771992151448791312318332928 3099500871030948929794721145946112 -106557883532206957307832976499802112 8455290783095785325529350054871040 8358475014003662057929096206221312 -999505358927358315997320229744017408 2644807357375344453653000469086208 6906761920587834298233425638719488 -354700845406376004575106498807463936 1831480669636207401079327923634176 8478248058190779454676558111834112 -130699430632646479245017258959831040 5785924816493178309883338118135808 3735273015457350526103786052648960 -542154549516176142001478446065123328 8493732265138896598708252707913728 6352652216732622613736137835937792 -666798925657884925360296162607759360 2115789580657845612731208178860032 9291445146621467414822934112370688 -145354334817470634936077336285544448 1109965605726869939183110674448384 1249681896387227427040386774728704 -532526528898663310363762130488918016 9995193119662437525206416773611520 4874334539734063632851157469102080 -229091061401155719044496874165764096 7291018802250433611455591874560 3187183401973932843538610628067328 -564742854830312256472638910963384320 616054122493983637712727693066240 2474658172099207247569558142189568 -382044485612271166200122538146660352 3933198188487758318804688982507520 7634767149822783878491064038850560 -133079419075768473892688724070760448 3195873106458218925509920920961024 2307611241776599274929341174120448 -73714973250983935156612582032277504 9850726669254024076869036501106688 8295738817078502653046378094133248 -806628562481533210134685047752491008 6553927250503833393646913888190464 1476669262540729719617237857337344 -850519688051303811850744407099703296 8160497466110160399583606286057472 3722211481503528634709825097302016 -544064980047311803207542164751908864 3723854707435011971125967983738880 5982885490540748581145262870757376 -831107679126514733311596584752906240 9159600056788345290913456947462144 6122271100824460886944280274272256 -345734525113741936930760220538306560 2616024498251637316980682201759744 1514425352473936269148706668806144 -865960735497212473062402532030021632 6873927252934686372917117013983232 1546021114657236426164222015045632 -43088366080761409149486563424468992 5848616656181740872415373395230720 6691651046780952672687723141660672 -508769408009849473465057039079178240 8061327171676649172186152147353600 9525218939304482845175398839353344 -84646144562737660235156791326932992 2462386683284518138305722821115904 2160124122004470155000181826781184 -956407963450024460036753430467837952 5610116523398882567993385906339840 1634134534978522033899061934817280 -955431188457312333824548549062295552 6149451408591753932047395984506880 8122127316926836662027056840704000 -600579813116546752090945996866977792 9380189967812931045110095949070336 6610626082902193701919336949612544 -888529514391830992399337497613565952 6009676017995022423101329025007616 9275152209762145243208804913381376 -945299651626575073555190553048514560 4201119786926167231152623506685952 7691901886651545813431909340938240 -993779157426801809289399996684173312 8503840770770024891351903590416384 8926995849193092358839719438581760 -493599742853324385536992355876339712 5288721818798846315852242886852608 2735515084592719573647895545511936 -463151129756087661561941907524812800 3802360952411739770898834824101888 7439195453729250481308170828382208 -766481410674612480423243679130451968 1066736772367424267940699775696896 6140051838441710027676404200505344 -131590139393096902828370896843964416 5869368376207830663272250734542848 4051707342536663673920306821464064 -39842199973999558868262065677533184 861668459357978876643802387316736 3190444362556646276045891291840512 -636178972311793789802811397945425920 3278895569010877970827223905599488 3002227705160075543774840951406592 -838704216901523587681543457844756480 7426466373137685797621153518321664 7770066946819859852470584315215872 -497707259998087329448025176003313664 9491772187937991435943630956658688 1627901839778166046838366211670016 -756174753602108412158468978133434368 3007207492033970075497206927851520 4807208493236373964149791670665216 -652723330197524312844663101530832896 9498251408236796149845291742265344 1042881616949602493810634097950720 -467322446453389174851855139196633088 5504960266071236372497847761764352 2055008619082590383347682305376256 -217956391747598828261963096712544256 9287532367248243120761100501516288 8080202928612623089707816853700608 -375820971169185051313818595227598848 8221865899704384331263677074243584 6284686633139052615053809446551552 -143554686711756451894371853539475456 1283905178177655267738773390098432 5630112448639950651403737071878144 -527649541781171314479935022803451904 8176780030571401160459941662687232 5052831031963551309590295092396032 -362637245657898063403658796504973312 8870963332688103550545548126715904 6259850238822975446712933777670144 -484817394787911534590180854991945728 2510169070031512973109351178829824 3207914002625668534272814886158336 -645260868535397203792508700900458496 1552104033725101499875624822505472 3286307623044841426031783222181888 -418175147008279145871109787695972352 1784287434249245906904722297585664 7724639034815458290273600772505600 -397931307784227115199298196490682368 4816887745940496295399161258311680 4934234557348243459315470409138176 -490501626677836248939042155565940736 3258672891841290267246545334173696 7038658742137847765930093108527104 -9069241410125189347342699131305984 6347304289345796822041499736735744 9098322786083444080506275186606080 -340380565319354743265991038387355648 2809733423595047307713439932088320 8506289613527503545418884260560896 -642774836582122736026914668148686848 7177193986914506933510716769959936 8805743299755777775030274816475136 -46136622487204033393445818022756352 4361955855242432558357785746604032 6590610516524885841504308612300800 -698566015233001527465543522154708992 1524197203259742800548121460867072 4673293268554906701200936996438016 -944138549698920975601779208320188416 5985605597468122109802781335355392 1829667782287291944236150220128256 -346026265303873375667735015280607232 2123696143208139580251571165855744 7019263476599127499852080341843968 -835309284548027080123152320050495488 5116059381029258222944115885080576 7838979629468384916497842716016640 -229398706284298082870285887336349696 9653973055399937232199949597278208 1999123514781271965064029452369920 -310976926459894090056952816175415296 9127589202591846007059196674048000 1574880932710704875930796299386880 -375476156776041895829327083821072384 7251701711543300768213451803721728 6844337048493339270966707935510528 -120691533787352203532645387558977536 6286297985010882227586148585177088 8212175048065810692102802833932288 -127663857890165775218376133104893952 1050522854461949229642898766561280 4794782472647861910415214297219072 -274650962357694317523397652716191744 7495916380336592666775701935882240 5222656151425509716823013517688832 -693803569368591239772347175220019200 4678505982928944432844763935277056 2379614313324407428556046207025152 -646892032748622467965734186802741248 9132445422933787485379229244194816 4444578046864153741941838691958784 -4326157568940266168425087884066816 8159794018560532429371825578835968 6162553007706972145737686799351808 -561868142963934262680555229508796416 3029028179835440218945041589075968 8998348366875903075702404542365696 -449164703166065438405369525702754304 2817135599477177168257496215715840 9763502793910477982433251663282176 -186188054798169500287872610930262016 3351024627879067221326815723257856 6288317937053907930293031382548480 -546487789977415830924041894972358656 2983166662916811360871053267042304 6588160573159901472488275180519424 -774316729762770069763358244416258048 2277118911035392596437350108626944 2223000189282585597240343691001856 -282232923784615683355854408825962496 1027623795060835293416474072317952 8024616421816320753505330620530688 -198239271488658329950153579182424064 2872517317968466245023454413717504 5168005665175451322174332332933120 -663793232036678932775698597960220672 2786334093073312500416916800667648 6744187717980786298537062548111360 -406899836668342262923092078498938880 8131147075507829771507058025168896 4019819664875871719608039398965248 -154098563500680705282926226842845184 7878780203308291312594496553746432 9099680952196190859185614313488384 -177984112825665953416164555020566528 130506630874457676658829697220608 3627501572799565491957714057691136 -42156737102413208607270609077927936 9865210845073408635726704299474944 9373171577856464705770810601635840 -485741459175227817002728507276525568 9133844925238271464429742878359552 9428441399423710197843392032931840 -173455264790909180951241243416854528 287976318107916271467740547514368 2971276219916571607430427693809664 -99969456267106911603757102244298752 2187804926570623958689701259378688 2365048697762747837026684916203520 -75344041133812960073551574126821376 9022956446538038652213336450531328 8092563452671506971710182070943744 -543575845105280085144524280955928576 6496644571888427054523294861492224 3305763190481017767452731210989568 -5877201659116225267018847567740928 8207616427423166130544925636296704 4198611673809482131059633532436480 -806698528349600214210770120445263872 702672452064356720471378543771648 5861583455251509579313650646122496 -531422035960289447946255767588306944 7483314588775866551276986838286336 1184635443817554232490682264584192 -286098596548650469602933856161234944 523809113323369689793419538333696 370663504303992605712720362209280 -646197117733106214527802039685087232 553250344439821605322624367329280 9149388413307034130238785166770176 -924398840867690960470964884641677312 8766801873467873451526809202982912 2172912451432363709671283967918080 -632789203351607928692427151552544768 347594587039109081290904346558464 8649282571543540922303397928894464 -798176709333305032797151203852025856 4783592454704175230850328535498752 9705809097387858209887741821321216 -54820701264977512386366480232480768 2770701334924878029651838010130432 9820032551333987416352297943302144 -920654169194625150288448074031300608 9580599982365252749290697490694144 5512008812357149134462765307527168 -220832746630928389559285888283836416 4104613411465915338386576112615424 5665673593790222870514510271086592 -890923245856611338513628428144476160 3628375444736868580389162678484992 6855964579535033478274289464508416 -188390524561810788366739149194002432 2561418596364626727215067505360896 5957236286102653526751163008942080 -252370917326042582972871993196544000 6580591561907076559796898281553920 440336969161933705076988333522944 -626852815939571183953762181653200896 9541483787567465151809132158779392 8470457331584413582455754689871872 -360167960758634800137866298846609408 8099784828715470467764698851835904 5826778353535589046375592505638912 -642955973313294731238389286308937728 6385910084617600349859146859806720 1516424185142609312884797143515136 -935300627931987612739319576135729152 4219203378786905046543045641633792 5094966991963880638933014245539840 -7380967508850832017322298751057920 7716726823224100598186639452274688 692097854993260758874152849375232 -448984723018309546582427117859897344 4953210623035248729370345617752064 3681602839369084013633466227752960 -846968951634205007398702787235676160 6859285620993577171033424113172480 3596283509958239167747571478167552 -27401652235643313524430883895902208 6599025863672743991751588228104192 4213164229064841179443263520636928 -415714273666255150109444212353138688 5675960975769750882781405806329856 408421543750469617962523438350336 -775857063988396617303243522322726912 1010732884803186829283449162956800 4412188761035556814803528700657664 -867294278896726783172633920094076928 7254797815500492967788417390739456 9236276973904851968372791585013760 -795679529237401583536284274725486592 8693131782519859657849399939170304 4307630632111019791467244171558912 -543978951845283968747101886804393984 2207619433402614889782760752283648 8880420774789938197972532357758976 -927642580166531795284980133353488384 1427342640036563512265630097080320 7896736690374879245891842944794624 -195614640123925065207360785842438144 8757747169183572865453692771368960 2243892567207161257360547815358464 -248700771774786550199113199292252160 6192506549473533624880441155649536 9636779980143170050840147167019008 -352245378369494307693544824050286592 1729514327069958591199095245766656 893861395184423614122656744341504 -33804801168918871287549463193714688 2848517231047421641745101481836544 3874664503512778729475982130937856 -57469343082244488543668741672534016 114821577693625726611727792996352 5009737932042627973796363933581312 -914570551217446502377316315446640640 2198039107908371854828473310773248 4357656408641400500462756309237760 -950855448645505151766529958890962944 4901094903149864117805340017295360 3546421807164461194015141991022592 -353756415143225309725152340820885504 9279533622636015647724576887013376 9816465895042995525076006660472832 -788100995245807155939246860408979456 6865654748034063316251261964124160 4847390479759898672026507712397312 -331536829634218994329604794550845440 2765946953775076683495883256365056 4264602347184380019083187054444544 -970510948498113275548194842802651136 5046557634560423355199432150745088 3907371952808548553244449743831040 -512556729568649780489520768954138624 3722454477497016092294180308516864 5800072632214738377681894637568000 -113107412229341641499262594293170176 5455087074853819133708325785436160 284589568255358438746290248482816 -995353536909487545672840589183287296 3167707321524663183170513047388160 4215232593979988019476111896346624 -607184467416836468769472399869476864 8658935916947663353819143954497536 8943069930478142544353931745558528 -548293991006725963491790620549185536 1222064936637341608616085480800256 7665312762640668197890345115058176 -39033235193756447519619513069862912 8979550076929791810321721224855552 2885825925074174581715216279535616 -647204672023575896343264900088332288 1991440383866510427513979666432000 8521182777910132454832129557135360 -714379050898413181952917718177939456 6375979241164138995356427207311360 3239012932201172978842593040269312 -528913120692622348573392098419539968 8355039037709948897691802596802560 2117676654540991566493817849774080 -92546741519156508975807407362932736 2758602838582045577384133188911104 4454192739328149077100706297544704 -336684188143790154476826126691860480 893670239814442223815785361440768 4066343623236619139258365484466176 -697239329159212949933861813899755520 1128676820703497267331629431390208 6598984251203975531322878705270784 -868235683817595493382819521859944448 4589004032957688719997287608090624 7293478838158001019697980522889216 -27840634496142633171686640924491776 4252216734051142374263275936284672 769561174580713035595247215706112 -470796824944978595719491263624380416 9365336041208811861726575785410560 9267896125902765749996775685488640 -554996443036225061212613058836299776 1077446381348356100876809736814592 5583597957067899771859689262809088 -269009497669408594480646905588088832 4697564094719482634443094608576512 6804193917461102617331866361921536 -125037246901068763228272225238908928 7372111451138132107039645034872832 7134553397701512989362446720303104 -749411560032830707802362058599563264 1631091746830536498077420270649344 8238668213708679096732316415819776 -483808713808913273634661051874148352 6542128087008558451691286500999168 9916425767997094152779146381492224 -755190748330964995672329375149195264 8628131286697150476756381635444736 3305196412659411723064071583432704 -15521489941800485814608554039967744 6786047120877888061849664248348672 214564298989806182532484608032768 -466889766534503555813568387875864576 8591307032693383214978423955914752 3418484661232533865819574854746112 -621471157245183122128739535750692864 8189998629202486140202302293671936 1414270411309462523308532832403456 -649637360336999381199809520661954560 1984686660383737235095902350213120 8895470488080708839840228191502336 -37571229323172100758795671593549824 9627477918720923095653186491383808 2029266102743151599070193173659648 -752368766085099364712366747137605632 7808587739511900073126527244435456 5166920516299532052747538571198464 -886647999309730348825835930275282944 2037907603167292352154390444900352 7393919912121012009897774777630720 -846029575728483017355897185033519104 5888020325481863888437727325061120 7271334833698741840452996625858560 -676371112331868475475001092727635968 6330243538090644217884822955098112 9708425664259148240085275572699136 -663520190619910993316625564005564416 6207984473391623828917163191697408 246377539862838540395161589907456 -720721477611963137567841702876545024 6350607330620022713202741298069504 6883313534047778137596549457248256 -427819375950800840142187774221484032 678971423162046704275072957284352 2081921475771008305781032647393280 -811633244694494912811304350981816320 6970037568104304263916229272535040 6737300003364987932460876570820608 -575843462971700821710798775153328128 9367334353451747315415671935860736 3955044301552634876016727372595200 -379535049250714589720948363749228544 1581695432418503577588738780299264 1686330813416099991342840511725568 -704473165303436815662380145405067264 2145837906459042303277054512070656 7830705941077146536281373478486016 -17611664608879358749464799381291008 2983508655189435065073745923145728 570528672529881841892635806007296 -957122463165736583900608500638679040 282741988509077430762386111856640 4048362621172624455829495337713664 -997180946640828301991382344255143936 799597942889013654875933836836864 8474030003785639307177001368944640 -439596593377232880825461190678282240 6574434513164588221067466276601856 5444084046133778227196556879069184 -625372870391201446990924865465221120 3956792099078446152063010159460352 3777022547721961034528218895351808 -523212559631645067734145356315754496 6527519081335904013428930539159552 7504125471702760580837539085025280 -43025465484961503777375359630049280 9659134638313519542021183456149504 2088773388068709818961579680464896 -380436888823616748497100137069281280 4711708009810303736864923579318272 3219830466489136983362581592801280 -238575636966454325094853304899338240 6474579191886140303735610216022016 8637709853019632270842845269590016 -62450647267255431992541767863894016 6215500552570675833465461731753984 5646570536872290749674553855705088 -845779316870248357580028897862352896 9941413823546286216409916083535872 4675634165617874846681071620194304 -516817020989785883530711235737681920 8544790054316058906554902146711552 8417706549690201502337361443291136 -354646208386891751517569326166048768 699306520733828300431961903595520 3898303965592119533769195629051904 -374021630995739750037015243601739776 9175962980303029716467527777779712 6928990513211304129946288172040192 -89708067274754579233464014088437760 3549917759928015125017794472574976 3475580066638240272681556726775808 -514980396590183416482354569639100416 5907824031530388769001848679956480 4740777743179911523034937826476032 -378814858308043111560507093107605504 3260690648774128822805496569266176 3428461891266562298460795266138112 -697044327485271084944992976823648256 8397582535663110112264201772728320 7802984897874351411637654533439488 -119341945079118174374044893334994944 5891541080281298940606043090059264 2918416156884862236333362909282304 -34158121745273224222339463657816064 4187865511905850157200034303574016 2905134973706411938340418854322176 -529645556251044601290260176751820800 8737260986059816526716596377354240 1676769149722839831206918818365440 -324494177750662648453401869081903104 488985122680011788682504137867264 4999054371552626406071117388185600 -792724779903524602429275241631973376 7710849756283813046409320397275136 4106343888894542202026037482618880 -245538974437732097799964983405051904 768890558903115234107895689773056 3187832301073156223078292648886272 -355729827240771467081971759400878080 9574889456048162403014821936103424 2100806366359036812685524024164352 -180541790474448560873212047003746304 8483691733685428870865008612868096 4349243843046312472819323201650688 -756057819126392099174038438521339904 415285658291469349472754722668544 9730096482283578209370165200551936 -539047386743534271019597143692279808 7625401017906029194637768015216640 1551142033757187413968349325950976 -332260038104345245913098171271086080 2627890699479088286050727447494656 570027822675704857685279792693248 -148053027180407104769834774855417856 9960349090333558981637013430599680 8116323719648707359599986403704832 -345481092772042037186984567231217664 3161510867633244978964412520988672 9806724872964740141734787419209728 -966577083389033295724326294214672384 6937489011726815719687240441397248 5505940923183522287217214551490560 -275182627109548508058601006267629568 1830558521517087874449790939955200 4196388146183963001885012768325632 -644560255232643103485293785675464704 909239297389951936743913226764288 7936458684251778429824808314208256 -308205570443866837193263165399367680 8252126094991603596319829000192000 3202174683049819829094478755397632 -138042049327484093042409949034971136 7397635649195298412613843189497856 1608487137258568460345245161226240 -544725814840478812079547098551287808 7719456102192671667383054471528448 4191428003498719812081658640728064 -959994591032856010023172245523791872 2261014466213121390332849734811648 4096345402795856987746899836534784 -830839184163451659402790386238750720 7769285666859414952056750027571200 3501853805682303549282475162206208 -547796022789420681961231669568471040 6284264295626835886839054402060288 1914639516482616076350937603506176 -396629563485252959140418687124635648 8406480321117693056697698961326080 2128156294102208615066774597009408 -910876966292618342061093628590161920 5180020279464703987948994265350144 8098628463595402870623899524005888 -199163245550273663530372490743250944 4312884177669108984575121046896640 1607277127849267618189587035193344 -713383562867104380860792413827891200 4524655653725400388479786346872832 3124938189116756610025122307244032 -321684740382666224903743541618933760 1464770140297324987358473950855168 1041854266299603232921729588264960 -337556620153847435925204515663380480 2410908111611537598292197105467392 9918947862447512770794362985512960 -725883034606772885276627591975927808 1126649791980086330633262880260096 1291819162754624841359231582994432 -8020350078283576086306994253725696 3061325991160950913820063875203072 2392303872151403038858047354044416 -275296992621371292930233329633984512 9590441210392750917922452657930240 8026714032794917234834892738527232 -446961694368485618153342240322224128 9083777054202527656114596777820160 4339555450585308098902815313756160 -706381670030356448224005686516776960 1711531223540324003823312592437248 9345477584002732882414310210404352 -690380052043584638366269230981054464 5028040777026924189175254651764736 1115462676861421756969102633598976 -774106071987923585950693563230584832 503425042616375844494580702511104 4725102000178794400880162857025536 -460994729803616935224398652825927680 409698807412946059513565718511616 2755424855891740009251903222317056 -246512812873599829230205407170920448 7564368080241799687686073673056256 6703512513889949762138996027162624 -640267483825992351592232046175453184 6403222168815527880260733093543936 5796715817670002341445296925442048 -336007736659956325922931885406683136 9662589188868492328395621567299584 7008514405765645966807443968098304 -108927268081717814859724809064939520 3141809717648934783976561545576448 2219742605852463704530718484856832 -575328313867252013407161531435581440 3578238795111666405180195980967936 4951147772075062125250415047999488 -917322350598549374027877435509309440 5902744704980527859446070045048832 801403359060672631633112668831744 -363880743165719212138892666771341312 6816836695210660912207168163282944 3235747146907869700199479485923328 -184601634811199149464661154408169472 4076830864404583957643222568665088 3172936768105092285555484619964416 -331344182237870014468980996516610048 5846932711181221921937174789357568 3165278321006374044861939153108992 -155166547418908171324427490635546624 6903768214637660466182592862879744 4992843876415452140132162812772352 -765470037895800952612125657834455040 3006895943129265435572029087547392 765429189630312887360413516169216 -124825549698451113363001380857446400 7044230460320346856254140850372608 3392708035729911778262340750802944 -773505931188951354246780129145520128 5175391922420226920499680250953728 1930181326658527340571401580969984 -156283230527430117173684993955725312 8893029662949727209067151676669952 7949613510188266245382549996044288 -534114752624061962617267410496913408 8989433193703092005282730144169984 9855330383924014957605636123131904 -349095297959218223139334075925397504 6728597961551300143506201499402240 4653641282047318337493516557484032 -961390269947380958695335050136780800 6350129976434657972551388495872000 6181310093495037558025789156360192 -743829445059226155358082695511932928 3427474633405662802927387884388352 1072012594766979643330576808673280 -508480910463631595973006644595392512 8052866986859798157098076579299328 6521077196848719379271872206077952 -479421001334354104296959604856717312 7879667447165657878701322851581952 3308941647498892769481891120152576 -621775779385791584772584663225991168 1826584996598955817310167551180800 1727139457534110688645588258390016 -817615691952739563634514925568655360 4655566800058615867404528243441664 998243968053545946307889687691264 -382481744190144471753355387658567680 6795960475415531915985095741145088 6617275016821424416300151653531648 -724880183030954578289055120366764032 8158841030972420661320121594150912 1448362254788982419370136574099456 -894736543707854221824353328621944832 8675024014903175849423932732997632 8777983011065447142902083937632256 -678395160929151266595781691687567360 6823371088791592396398022493208576 7247866128987729843142229313454080 -981425593892562763208302343558791168 8858979792703319293719431346126848 2312391450395704494744325802950656 -137766919395146894959465950045274112 6087976285071295051293870467842048 6306254921122771716614468109598720 -950667817111155685384798976354549760 1701776135641023707023356303769600 8690823087996570952823475483443200 -574281284089321276702940292630708224 3119164111126697220498718254432256 8836907121103848803018305263632384 -907887571931994467768651946722852864 4060774390255192555569971206291456 7384594373500416155151421283500032 -352787339997498863311186485206581248 1953561961646748232590891990122496 2074294643321173005111506744901632 -645489270156585461290464174839693312 5784329352578588960402521930596352 3704025375020133243886922509582336 -998897209739259381924496831026298880 1771167506469685327967636582039552 2905129307799083702350803565019136 -448238874145622315823761113906937856 6965155474194889026404845535363072 6943471537556339198250426935803904 -146312109699633217476936791935156224 5276441526416328967789431700324352 3701806300579421364811622359498752 -718540526327820664478242892119277568 1259496864059407812992903216627712 419417698497276167653140845297664 -897882917890873458003394652316631040 2744981132211846591877469928685568 9775691467546567456071576765595648 -83679826702457328317344229892292608 1381118275538338679732334676148224 8611271977274533879636138997579776 -585122507810169585253885872617553920 840559906058326887219881264021504 9738711843624654460108695436001280 -205047977429923150692149880986533888 4243662928771597412598004007829504 2093113249834042643686774477422592 -704830262807760269072947531560779776 3038205531072473255696767150718976 4665387273976730275469651462848512 -219692041404387317333303635314999296 8632310596121814612868476073672704 4953781330563512004205868402868224 -508429384972118870848705603649404928 5483341733921965224584305130340352 1048457464493496181282503550566400 -341122552153451144709163064089378816 530616921690417114738003986612224 8110468631749974272701446500646912 -545065947219027177708596278379675648 9411243675984010310380713345548288 495999495390097504778517005467648 -159471561596110628108016429159153664 9524868866440928585414592235044864 4674306359989935794295428972806144 -305965788083861072758209511541440512 5212618255677269547178597015355392 9435443183102651078048447725568000 -154020334826429811389877775761408000 9988105010170402038477206958637056 9278334518260182660084430981300224 -344167272393621051713449413685805056 856679359251956727135676154249216 6012900602182693142948453206196224 -426396049966546153624546000169336832 2366984548334769725084392579137536 9637053367301583269110650396213248 -935203722259497748121776920364843008 5221966588512657321109234162597888 1832154616368228874444646677217280 -181184612899242326055305045652537344 1047724087740873615668602753515520 3226705601231030252322397081305088 -785349801604020167074868063421595648 7098328658298621460752659287900160 4614862492699457230435918398095360 -223027500597410866978374947962880000 6457465955257079485236925066903552 3623711111899047355543330853224448 -939399000339068883578304987849031680 723860560005656590092254373216256 2544420236262915772240367496200192 -1019438853824543358569022186586112 5695531384396549160249117548478464 6130626852185497863048726539403264 -647871573001867292551605662494228480 7199237767110045867528624430645248 120426792573222011454709506768896 -852087664131580932583728727409557504 6647826111309951744358335371018240 5819788962441454741659603066421248 -684423098014127010231652508470607872 1365791880819675770701803098734592 1713314078884457450943200236666880 -150655386185142600876479444793950208 7728289935372585860380879883337728 3116775823572617684119769208324096 -651718686693439614216914831075704832 9694843369142704555726959401762816 3996343016264231848254402291826688 -923683689712278747421956329816719360 1249764516567704633081290943365120 4070336116912885959739726540832768 -828981219480680861643970246887866368 4802764732254816195844763415478272 3249907752763525063218663163691008 -257524998210321858219932980116193280 3234079421397029447179049535275008 9772642508483567657122819089629184 -532603622764622481847733337674743808 8363837619677616962317040348037120 3632462033203397051962393127550976 -801753675834448702248680972592611328 4982026707079645052924025209094144 4295123420429564413169419100880896 -803931644411750119607021459436732416 4554783549586295945671328684572672 7526059005083413753233362701516800 -148791441968132522042308785248141312 6894481074047049472586457760661504 7976872334954133546845896685125632 -859567982511006677046267359333974016 5373952237290161378362702182744064 6429501773265668785821928189329408 -482189233547052393363265513779625984 7308034617009384703171381010890752 7911790559050545420455638386868224 -767324857000118442487595236329521152 2703560521152121321680164658085888 1681955895436645629557485242155008 -32420868626447203361152062720049152 2050907868098054443205471103877120 948010488183478568286202636533760 -863214412191572675969380407459184640 7797641867319788304772081576312832 7395804198346562405384859372486656 -218016984071126309775125564000043008 9887344604511666993736589617659904 9050035860715918868031899552448512 -247886639926417171192049207485661184 3092881218511898954721979239759872 2475507476836107111743978540630016 -164827987303720381511576256012877824 2149309407189619557647879210270720 725935359903198370196772792303616 -232095765434985973046879865349865472 1527992706840065897966212571201536 246134820146385045028117816541184 -576734222952550603738039573819686912 4142344868181874431173600686899200 8786623742414520327213097999663104 -961647686088523446022957037325910016 700820185746002036812364308807680 6686308501315397499009666211905536 -809518339119409970105813092825825280 1338265475993654428895560626864128 4211701164325949657851635303448576 -557915229283913076667748573096443904 2826470690821991889547528696233984 2540897317033409013243186342002688 -270969599503360760616420043799920640 9400976406415875332415071820185600 112788450176872032413987779903488 -656099062308756891238700153252610048 2217358065372558534663621243305984 2305020169237972032358514146934784 -633236178211320155614363122965413888 7508166339862005875719171987210240 5884845290110548236573219022176256 -791101782955703667990626677645377536 4219972660659414185216764566044672 8151735268246558523230262604595200 -925555891825330110662312797879140352 2671724553685343136113163067457536 8781658658403048083365563339898880 -584644144527921380621620906064609280 1188194320369940579908672192249856 7499636418643319472435898085277696 -378776967572438494195973576745549824 4416870160664621715554094754562048 8309508925749065988888576563085312 -252803403868556340145054653379248128 6297046121003076109963350442508288 1092312129512754482428240933683200 -136403559599983375609588998542983168 6561795353507925375030885865226240 6813942733091815914579316933918720 -9218002281521097173775714518827008 516984264188582622968922389872640 9663190230858062970437315237773312 -546696412607228006570736590316896256 9978629274740953241511025365221376 8142787109645147208844136398454784 -649061178625484841617918987417419776 2563680915068789447466462652399616 4677994347709351736038864740941824 -786778212770982429944098011249377280 3805937462279274963957865382936576 2105651158189360128607210765811712 -541879910622581284307899876512890880 4907737810397422499450613240168448 9809311793170883704754225666850816 -75680561590557136219803095616454656 8120872583411769445103111120093184 4800892405728060628554357361606656 -742929287768836730050593273019367424 6703881316019545518870988507316224 4327283297101538316278906530824192 -731039783525864974620567451880914944 1472287659325349805020579274686464 4209190506096173542537630570250240 -643973814980148201955864572244000768 4775192221781876423032104992899072 2191890785955427581968134313082880 -569923623717288064646730439200866304 9183221838006158162514675140395008 4801146868622307470310871375282176 -756886188100105668888477138971262976 654972205065443357448917389148160 6764244149274676949105183947751424 -972116451716378993123900602254884864 3752203488921122147346667458789376 4479870759996093013952714562863104 -871298146829039562532830492099608576 4742842156865522404657493964750848 8942727730997740783422069400403968 -231174151010719064171352183845945344 2999618351503485311238549849243648 1128055833672952433398932456865792 -307316182053253026476047370630987776 1211110035199160561024854055190528 9376484348382567179969440086228992 -47119026446445657677704966759776256 1210364173821380775509046209806336 1355081789802148722414016394166272 -678906032872058063693130384080371712 7712846885036134329469306966900736 3372132301592838157971260715302912 -114249723982863808930085781366636544 2927214474785149912244422780649472 8185537152022668764733167374434304 -444851718164774566007019781473959936 2511414493366865578313752078450688 4968436546289072921809254669615104 -998640457618110536165920526783479808 4464714098816535352272826205732864 7337513451057249804995205456199680 -836854111246951697097539825835180032 6453874341925425178421681429938176 1871408039708917209570140387016704 -303833568660491205154146904065441792 3846855045240900830395682147794944 6503745073965271422584580143579136 -912318339610536291097531089099423744 3576917297089045738588794257408000 3862176279059920377652594551554048 -596704733222686226298347247902916608 1627864215323874997271445970616320 621402757595642154374744569282560 -866438634730922085851321773408124928 5094545050552735646711030627696640 1043281264653015639406095995240448 -566352915847249592249581419169316864 7394182248398413079865489960730624 1587082840128341044294226964119552 -103531437587358779052668648622653440 118544623231363046795234001289216 1987366525622055860272253563305984 -492518066058770425613657057592868864 8115793866275584340401704472150016 3176020485582302768852310217981952 -811079287347781747167581812654342144 7096561454472049745762215148912640 3447347650679032494163048234221568 -662921689933205944672941244281782272 7586983398400898904798938915667968 4868607169095570103657409187676160 -247310653436474005864020143075491840 4815207793611068107632035602890752 2084099316817522765767378993152 -658190143137529378687436769653161984 770932629730414403924342972874752 7165554413290908865865647577366528 -656431346699136616889276676727373824 3484285890862829779164552685944832 4332336172954569771346738693537792 -990081267885032602954512426946527232 294285049606398917997639025819648 3771261025030516449240421574377472 -711585797625229789777824720630054912 9348259268514514122265506848178176 3662708999365683838833851614887936 -663247223578670539786949491209273344 90095882997125241999219144785920 7588778445226892070957924726341632 -68979461366045497694630262771548160 753614575720424078531627241701376 5255440904997333963982922040999936 -808053099494806838739487289069535232 8794539493872278076077631407652864 2584471346342824785712887625678848 -677760460839509009088651595094163456 757148525912264171305671367589888 8683438209240534981130792789344256 -979499506185455166786781788004941824 1955501998283784264197903103295488 4807256705005545362722027644911616 -463633255701071366792851902292819968 3546409439154943182021582584283136 9887442167046656439373551150039040 -753449770579637167136839211329519616 4260477018238001202471856938942464 7232008818677576539434414499692544 -143091622222943787776733416408481792 9148548358837827486894786776924160 5073421369213674250653132669321216 -393488316045314469107957007726411776 9800776579018865186492124409888768 4374985802175072791059073268187136 -436895401820723363408435451416018944 1514071979236074354289751313350656 9892355299923811293665130197286912 -563918100378151005815682723651518464 2177884182290618843404428208242688 7142262276254881221575428087480320 -480280539583772378261373341617094656 2383543554731814386669406486790144 9690981986745534785322943139282944 -977284023820590052415481054610063360 7679630747839761725162661823381504 6936935412431349195674975687671808 -812376291816678806875208921250791424 1121734965948017062034661405884416 4391484233450041970388327766949888 -267372002744362540474747497371140096 6139634301064792852719718289637376 7949470037004480654208590487224320 -723135063983910484224291310141440000 4297286257765581512463080017100800 6340430833944967614953409761771520 -847804659617295987656095136099598336 8500429634901335515205966996963328 7275243425402752798103963160281088 -760294105759686082333305958370902016 423561475776050572292145469718528 4293156576987968758638571295866880 -268125440438277695865946844661022720 1887069239509005825381528324014080 4283622007137740286617616608395264 -306117268980600998633367545153847296 9081393084747151881181287818461184 2687022865912495362829867305402368 -395704052666977324479538010074906624 3588348977031446618320485396512768 1061528716937755291732137889234944 -858056612804679116483002385951621120 7328747727141101394833724269395968 8158454024503146952243676352348160 -171630633815203209416932782422097920 9408171491424406614277600233652224 3884858601218666022573091437150208 -110934047616291630155391824428007424 2861844879032933257016190991073280 5070709134065254027962994837684224 -471781533341417410183814792882421760 1280391084038854322582492574384128 973401568588676037886030072774656 -40681493963758882138217701653348352 1435522548303714452603834841694208 9621572939711956854153694314233856 -107742234217068906183434159498723328 3995807397234405896581174385442816 9210639175007284841051965876076544 -352849886960645468381867548642115584 8455854096225075716748004523245568 936169679935116785726345954983936 -365249161458322915621755634145296384 9762100312002689165704010414424064 6343404694603538060488491870978048 -89281388360296524176982234959446016 5010934994708855339339551418089472 706074233259363674530774167584768 -492425290946902675848788785374429184 8358766307701843816983840405061632 3458421594790900751914276237606912 -124359723784180910763604410588200960 6825769458652866831105538853437440 7364185981189935121506805181579264 -897356392302133750616008522360422400 9389795167464727751692902773817344 7882033055672372331751564835291136 -974212376500967249071183731626082304 9335657400175503833836908892389376 8578642193019159693701276969730048 -916478542360367383594721739146264576 901929205424581086898567042301952 6961472939070201863475442923601920 -113153297249098900037067231161483264 9067799973585177115962956331352064 4428713583095334057731606859218944 -254397891440139317211832461712949248 8169837555640810542128093613522944 7900072786146960313730158550843392 -760306487011394318947498139471314944 9205875784530094759567407349497856 4025768000263302055612235424727040 -866270818533242558889510523275051008 1731463742955966761309658782105600 2797876655267774729251837261643776 -572593115083917230655223664283222016 448609965256389554141285675171840 2393479023397118788410683024211968 -283042836591861400385208211795345408 3649864540291496558781940029718528 5618923462234513024695024924753920 -425796486696941903676466085421383680 9422902285986788872559509060452352 8690269863279298013301305379913728 -359114105860260930458845758468653056 8416433779205875896055154046140416 6565181896152706267915874063089664 -64908570557333315496557659966930944 1512680847613405425593945073647616 9957922759253024118530291827474432 -48073254427241344632176143989997568 6935872059964504121265335090282496 6321148352625194885499235176808448 -520428301430279732065166901108539392 2331136587246417613351601827741696 7930828936060296313617896680980480 -752651354637530416293764037404000256 9887197979853528453244587253694464 431305335369456010015314418860032 -272507988604718127450824667807350784 7224290232395209875686721985708032 1553459983204783844595484065792000 -554530510236208619666836013619085312 8322072653864659548400662863675392 4659772477296999272942255424405504 -32607715759955122480318264463327232 7523118542820775763855254659006464 2962384976902785810390934945267712 -477666582508426220174526890563862528 8298884974859736812432588737085440 9453137413722532526300791861936128 -361963104436212499903676749128400896 9806441472568393298914614450323456 5767572339809417994381022399037440 -247473319735944899001414906760134656 6945141647070663159986151703445504 5677884783759869198732001957380096 -773635484773388022540333813904441344 7392347590819915796048247993139200 5855577581048929009825033020768256 -537620394552132473160276478749835264 2820330576837054726522732766298112 2889377035701806025940577917337600 -838100411275407898908285598275993600 9551483332832101853197294156906496 2517753339753240888003615592022016 -232486338337150990222473316475600896 7012708153985352002080191843139584 1715748270982506256035587932815360 -82559720603555809493948511631179776 841405248804252293693423340224512 8177795418470193595892268726747136 -714886483900767026183544747757404160 3992155488110121526555426397618176 5945527324475923593200910446100480 -114978218987156303969713607621476352 743402814019272067128846903672832 5491954407354818307689631761563648 -873335036586557776572287832085757952 3611630861337448236381611810095104 7678083025867399430245762002321408 -479569348767738564131188953292210176 2678410829521017060067249578049536 6474136295262663541575521956528128 -174029697049338405525323443710459904 3888147882180781905060178392252416 1943792040455534934650955222745088 -63508420029826411820462161187045376 2695991136925299711517247521423360 7835776269061053751034620604841984 -280279480075065879560193313723121664 2012450536486846722822243839115264 6722902770481396107671967862095872 -410308308846838924009054954548363264 7145548893884065958689332105576448 3244805942164422796955476199211008 -667198533186782210001465104096296960 4869718192987172045563811346776064 9789680771032868146796189238427648 -275871380254483811964446098201772032 6914336154100533741566930209210368 6695103204175202443917843977207808 -390438852444928293253046268380315648 7881835067770711749212292855627776 2505102914298767820087853678854144 -48209361850082016863101656630296576 1511799211355548644444064851165184 9463631304789692664176721658904576 -817825665312471494703572685697318912 1508397080157636669390081423835136 1752701562427429351201938664849408 -114845812736753020163767769111724032 1313900326308161212790439459946496 2553967287685889611018518403219456 -615184812441813265271208516639522816 4911244413440289447031662792671232 8023011446619066188860111552774144 -594554406965231055781087978656366592 1808822044249222945835029436039168 7298856086782360279836146989531136 -77875599564048586973929759565676544 4169610679035989703074677916696576 5111235980349696042005155360538624 -575683825544650901245103819573952512 1662786499188148618961099100782592 989333152972780493121112734957568 -906708628322406257452744027156774912 5841995774073907129411576767971328 850762351474938563001062061506560 -743362653787776451263637114423607296 3799909661238131503799578493190144 8053253130609457630661071859613696 -292360051567736887578579937108426752 5824395213067299637031204202479616 7595338148903804862439663104688128 -509167077619432334217043716027187200 951001734956082126286352528965632 2658958625423581906008660133281792 -31376917561333083548265087840026624 6762652496846904699919062739714048 8299500535475043938557648772792320 -925602858138167563313042624664829952 3222633893602795886552734846943232 1954848569221468596937889155121152 -703976376984935857089678929754587136 3006344578937329067416457861660672 3447378275231224067935436414124032 -655424024120208615607376797784604672 8419658688821158461715340756779008 3624700105960616127237233456447488 -461474401180344187731445336370053120 220044860543793907344188991602688 6822711290763727750936011426758656 -5042772790425021349760325520457728 3855646349425235795773151527305216 3398279654163037325022562413969408 -211430714786980015831914498165309440 5657850715242969362726290639028224 9836229477622303614698495879938048 -74639032888416735788134519330045952 2005245826632427482717694160011264 4064751700636641065686387828719616 -925680460517722659519432138787127296 614680679441869431969980090417152 8345419311723389925570882605940736 -818447484221768739832488097401012224 4761082802642085962027234297380864 95599884964518864680547487055872 -136882344905201771364083813584994304 577277276554567485644191192580096 3596216020869586536134680718082048 -649615257123177606277480999945240576 4435406197216443248950881225277440 458289695340494541526582754803712 -629159042876476523962899362515779584 634552269075919199047823854141440 1393617735108891524885461432532992 -722312787255133610862523423624527872 1561712820789676773826206105600000 8714061181589880321809473161134080 -123490470472667904808304798821515264 3285595408712326381242147542138880 1075096066647272433391488578093056 -17684746305188599783153742571896832 6217925809067204764249903863955456 754777773372171732595955621429248 -8325979136444736537386809026412544 3175647779769551870143237084676096 7894027744839329908391524689772544 -271126858887817343195150615144562688 2893794375218438849175835581087744 6883755675410039989261760634814464 -808884335094784322856265175516839936 4392731420613767727157955384049664 1639748137406197484203000790515712 -338109172950493164437179199674908672 8527804422988209195628559280898048 7388414806493697792703733251964928 -163578612397522884110414925753483264 4403904155245210582076388318117888 3305869923453006137227777975255040 -982541589216090688516771113578004480 5404354600998299215975696574709760 1833709932238313157718700034359296 -65615691548494546654293689139986432 1661351045665611928313336019550208 1288225145500807578957203827064832 -958340090496729568234746364502736896 64628935112434137840260913037312 5685896904948773789523563069308928 -376933833494552999761900118168567808 5697209265940455190231406084096000 5719620070623362341755516469903360 -380973659153299315877988460249743360 5318598866805978338750905620365312 9045541061918450903492664211013632 -266325203763165282318808065299709952 8107988808332575894038820492935168 6739883722946199113328249056264192 -317852947564589885912028235887017984 9624311614795763420355174105874432 9000385712741988104674666151411712 -467601282003111191184664197152636928 5114823114317053036520998696910848 3426749860722119659602553885163520 -40663800872620839365692078761705472 3668558057540330722239506146131968 1216898490624028375000393833250816 -432683351381877285505838156341051392 1378040867114659242512897204551680 7461525996055673640961027948412928 -389933905445981858756258754608496640 9645057186877930336331511715856384 61638515722717194121114256670720 -579918109238193470990056911171223552 7653904879219402627859430756057088 6077712630543643957252615655391232 -797368609619578076708867874396045312 8188955651610215295946529959837696 5707143108915901493975471108390912 -110928657726518357145737436344614912 1578332729340611703336495550038016 1279923161305456465177939751731200 -391769641623939877038049733793284096 1225647551403044670586994898763776 8107548908178671363284238321319936 -562655845671612039628176731651702784 5565075731426981781406108266528768 3260171189321961907083171415982080 -908057489370213272896012992710180864 8985746120906285332026368045613056 2856457959464516729564434270257152 -385153140355997112488046734641987584 3218395186441845291372688164519936 1346008109050688456235543949213696 -669526749696420599253134308968235008 3875241954584787737537734353354752 6630201388361254664216113833836544 -838553197903186919890134362929233920 9727927808617402322647115536269312 8914297258067615183810657477722112 -682069094143470458288196765588914176 7018166718027319576144700449488896 1345164332082600333330842877165568 -22962419484650463810971843856171008 9836196668721363393068762222559232 2584574889451318696165702409125888 -552143355155088356403378272172244992 6200483024953320697089711413395456 6448110120564320079131599026782208 -216107945525347494160159939902832640 267843403816035924954009273630720 2231749732098196819948245348253696 -209337494687434621856890078560780288 7681399446770712851154871131308032 1656128072456719852464975919448064 -58139239347670649664484652814958592 5040797499514958279434074815725568 9090976495698903056505449796861952 -930601729963066052415107305222176768 4569005129717512685926763240357888 1814002066337961393139727269363712 -628863151730602280559617830624952320 4010044610412718358838462650515456 537508082528066637066080123617280 -979917452420238955109459812365107200 8220894531248935741452306784190464 9773997873124867660400207771729920 -184644455993245121353977052511862784 4610816647877254665802507425415168 619372299516645725769009421352960 -524252581647855255421967644615507968 818809993905966245702224972873728 7975991851506777225388316780658688 -431938353615408855777352122164576256 531508736952430196405190621396992 4020808893772919252901705518415872 -383892733243071547570417971620741120 1286531779809760820983543629873152 5047157026284845318135774399430656 -803485906496192658184050234378682368 4983998531840811040825558601564160 5797504134317489899487417228853248 -368130338682603310885943117067845632 8470922397590958354800774834290688 3015049224171928916698202271383552 -116837987248095993604542573074972672 4745347945890741151699045810438144 2196016446434245985907214739570688 -288206916545244242607612125169844224 3035535893988891228562873712115712 7210584624052756180271168810385408 -639989478377496287223457722969096192 3427499788496861662923478255271936 6743328091444600575506532257497088 -136865548010794770459009214568202240 6228112429491010141589335730814976 8793082425124939699907588526178304 -690233849705924482750196789054275584 6752086556047880743626330261684224 894352339259064785589441101037568 -62779731183966335149887884326076416 7682604123409326543353237118910464 2544810206917445350159432116338688 -763861670811278924326654822550863872 6835011996409963721460641519632384 5690809175106309796615673727680512 -852245848387911901123940380192014336 5111872368644273292364355253305344 555378820910913641523234635513856 -128779928359353105751177143578001408 9371736578742821949143378133254144 2742813348892987951381473266761728 -454676304347769779418073036404817920 6041485302981906263337964517982208 5060188844504259468572742276612096 -327885709963971584780047967322112000 8702456733249660165087067436482560 2191999399371428887677507739844608 -688713154305577308717458632514469888 9326492984920107503789324797739008 7031357895783556929181073339842560 -276887620609435038534811124005601280 7772950404506936703768066602827776 633028997688320199903664234561536 -367200026543952541487120980002209792 6322298916751830757996738688057344 81804510691944644002244993220608 -966393077271589782417938379891015680 4478000241791678408594531375120384 3255122992331978310206905531760640 -844297611903830945100510749198909440 9597574562812090311914252310413312 3834210040096838737579185922899968 -576322569704289835152625020625223680 2308932345302348551311039704072192 9729180600299314603981918961664 -321429258790958472307193122211758080 6455310928339785387733264740909056 1209341234914634392764245828698112 -703732181856753728542435474967363584 1695044655267187674041245233053696 1309872512350392754765116202811392 -409990498973620018580242665664675840 3861401819421504806934120255979520 206037917637519872055579812823040 -225520959430692317626886290078171136 840253054487134098001226436182016 1597837016606057611842267216084992 -995163843239900409960745464443699200 8898240171452138717811708665004032 7399285704606048079311359312920576 -182282416743258542770705336054579200 8425667637719808960513622985932800 3027434095857802868149661676339200 -95875967531014992883576001487962112 5835524896829214743381396487667712 8592946103239968712855458020327424 -933350331325571588745267540303806464 5050775887016099947156126910382080 6061179284245483029879688234270720 -696826846579857503043305225416867840 3976501707284294357856413624041472 90237489550750645589150665801728 -823192263070436153155643839933841408 6185593012045044736994508971966464 6242176947997376511332209894883328 -801782471977703596359672880017965056 8188265207507280925209453937033216 3313285353035361651138052971560960 -596731946459283568083573164860243968 8603172210091613794950803905052672 1775575334703654088959995972419584 -541245973303332471162539471294955520 7376618676252933364070971328167936 7693548735332537662305681134321664 -385467213786552383462786567696809984 1387398599117696095975566863237120 5606180047253895354873096987213824 -431699920414898425861023197657300992 1490648227361480040062723481927680 288643168240876002158659686629376 -166912585444413368759686899683033088 912106220921173861757388897386496 2690586072929224316767151637659648 -59225713322588357233644319574851584 7705816659705536998374932914110464 9238576358248426349909547371462656 -708636085623540512822442586483458048 2593055258801235584248264238563328 684208242618571259350176449429504 -473726964521829438113098084875501568 2911556682817767700089004170936320 9789891407877692217926967764189184 -256199939523830684014474513627480064 2715010405434201306677813165686784 693446846012398143869884592816128 -157275071061772523031499896665407488 6866384937975604716839522367700992 5306844135721381760449766479626240 -882222113777497331910526305602371584 6097252442245955401043799168778240 1661182050521457944725681380261888 -360055807978304427097566449630183424 6277106231763750185277147389624320 5396726750824066079576422426345472 -211074820031652914791714133291040768 5017306591688349249092341706260480 9107458365190313722376342334341120 -881045818112537657545514672912859136 5009374933958878388925763464200192 1492859113752861173870208349110272 -67004011668393775583312257688272896 9103138075491960553798431741575168 4095322184559665474187220549107712 -375417422620962372240915373886537728 2901903673602699648902172883550208 3533775773534563342639063738875904 -209573523465020548867861491321143296 8849368718332219407399285130526720 2349475992862438886417600159416320 -693625518555190622880191228770516992 1686655301354853479347246799519744 6518685231289725885468840474705920 -332394886198034815327275900509093888 5160514942190544457611339947311104 3466938282228039307550939970273280 -503915291786716040145868661740011520 5481076790274012580733540020256768 454574269879969199842715731230720 -127719526362334647344494316254920704 8375460140323826029948314501251072 7648151308137611698069250030698496 -463412335550169158226555668967456768 4536651188745707112749426903351296 4170441662817570965844417153335296 -692800828818530614163504091226963968 6086010881478673362798334053449728 8709972708022723256609623167205376 -865522513102423135669110156099059712 7232816759595038786597442715385856 4746278478505527522270467860725760 -547796737564618063666414559231475712 8020068056956115512473138086543360 1367167176688099181089333943730176 -936358680561556031236207892513161216 2557178585889020332549170224168960 8357966907889028612767173801148416 -254497870305430891095152358856851456 6553359088088664016336167379140608 9590600026532749753914305491763200 -31443340058172276915299520973111296 1678074833514093419223098075381760 7303866109816399277871371913265152 -794195067290473914825940388083138560 3419967155243277502832316858236928 3859388724485449598143718343311360 -51898458136687507444403134980423680 6448640109023548316365818395885568 571429949923977607413658783055872 -833066176888557309862102384601202688 8440077189462338211540563587497984 5174316914159321288664499169001472 -905493155747163673751938391515070464 205833493149262850740064949895168 8473840088765882922280344233181184 -802082114601606513773748588061392896 704630848045852575256883792707584 5129531995854725350641920538312704 -806578725402420363755778574882177024 8806111596877687792855142725844992 5003838354873608426650804559020032 -534245763824164883533981266921652224 3600669265506102473665242688651264 7875861116778363183519997278289920 -948304324225254591908526224163471360 6276125533209909466256999886880768 2868763594227330882789887759613952 -117435079389398611395172284632137728 402124044317268855012915910017024 9647792180904409650812317234888704 -753209955358732289031772839176306688 8547308658050661512312587997413376 1590924965124707387377196984172544 -616636864028870132480727750205767680 6492031811106101086090199843209216 2337840966068196464994375243399168 -981269706708214421872574099800195072 5730912042926617142261561245564928 5720315976478263068353391197421568 -913651715083618593957575310568325120 421750542597018641786209547845632 411957208620102564776642919530496 -524814125055788742005649416113881088 559398614189771998130844263776256 3342956955777426099155613312352256 -911744128023618701221596903793229824 4781239410653313735546211135389696 3477787098497046562037112302993408 -638773661829626877794650779727953920 5727083137897943394473509902090240 4941930908230699898003448085348352 -384557151282899328044214211357704192 6322575961996481857353972969373696 8488860288873406204615290733461504 -356602263695775975441050722403090432 4245906138974911123078082656731136 3818423798579093733701051043807232 -398587767115064395687731801039568896 6368136393000619993993123983261696 2511368353987417548000549912182784 -89812042824718372710778884121952256 2344818667635742918821047196188672 7798940853665465756863976536276992 -863408625019725494695508802495578112 9647849243787789528155988355448832 7485566128219438490198359106650112 -612485490414301124125240707256418304 5039209474493308759245994638442496 1033583379379812348683151174795264 -311332292756117215578865962307289088 6814237899793034204757937944002560 6624654717811553379487326673043456 -49911565554303772059895734946758656 9133036153885510479625022955585536 651860702896632756319980850511872 -442323267427435196467505224325529600 5404386105136368960223799368744960 365077816997408562966793912582144 -832990011424611955093401279766986752 4250306142976305665154016088162304 6486321290893837328407507463307264 -156583688987325737162800479753732096 8582199338027488675656174586036224 4489174084739655065759773085401088 -798319938463891114690760825548832768 6479506451944572969736691718815744 7596988201262140658379835337342976 -398355378469230420839326297534496768 9347467203188654446001851872575488 5777344761619754208944601625001984 -28343375518939142570558102305767424 3651702980280896713049007491907584 9437268447618323276853454990999552 -415190744439718105098632545741832192 4669709309032992603097832039120896 169760321334939910967874988015616 -983192633351891363877652259156262912 4641685500574643848069054879236096 7948986524113754539386111870894080 -759941950977161788246550038305570816 4105806183661140800276221944397824 4448490787848235373077978570293248 -288218217883875791807260992083066880 8825787393720263259850517617049600 1673634102734636040478481365073920 -35067660090093285236467427272818688 6821815779026333837026023855620096 1035467952643834232900613780275200 -837507224113072934500475800897191936 5176643968027070969790422367338496 4158051266415298855650206161043456 -709949927472149873436152560573480960 5405269313276889037074951466647552 5457093202172091805727834649919488 -86958446269726296731352645719031808 9759830907460902337377673282584576 5617511093017653036258515094601728 -488438806633195560171110510175977472 5226773184864158751378331622440960 6719769313846321046311639776755712 -974413162647836504222802912284246016 7475329409477623630911062186917888 5932044908276911655458504045494272 -205356561289913814101106230044917760 9638287569333090580499104425574400 1051216895134901185946395554611200 -529582933532366413295989917722083328 7828374180718646562711033264209920 5215179078241902547462020485087232 -914077262559664744890299058527141888 9961725671046171604922052774985728 8810254668045828305100362009804800 -39136821840840805346875903303483392 8118542107897460990273288618901504 2894083826861747741148561484546048 -945803009733653664988892039531724800 422432572972382956199917305987072 7233361100913784290711905597652992 -716194720852783061398666803087933440 9131654054561321674504396771164160 2550518140575063000089952872562688 -706953097341624230397999094509338624 7970588744732999227732806569295872 9519471144640830464846988656508928 -178051679485887360984855011068477440 875517292234889625659006945067008 5425112468968310728791609036505088 -549707715569974699038575237431033856 134579061479591761296385420296192 4722951870093760682362558459412480 -597174552756685075853373082437681152 3050059431911451655734865692721152 7177249121807495076099482705723392 -288697958886247518854652801392312320 4627437778307949022940985548603392 9129617103192110341584847569420288 -417891463667666072020637639654768640 4621522187408811851328037729599488 422650047005502165485765462589440 -801316854009974806002560283111849984 5943717204865926465374401578663936 7450852999909463916298282370859008 -595463939485099737550090912676184064 7342859854107791099809150202281984 5804671916671013684796126079746048 -539114315154221337933027342228127744 2356580470744110370458069891022848 6082441624819182129030812716236800 -209479150876326065335928420600643584 2084696320042082698447636901396480 2586346851971636313034939575566336 -100965950445836778285636461701103616 9201486053177402896518670930935808 3081476951735316461477015219863552 -890683728603012594282966139686354944 9757051201694294916741482183393280 6575725041288727085893056443973632 -795681137144386535927644485041782784 4639090008583736937093060391600128 5256189908692225663005493372649472 -267203953294877715750431591701151744 3772234401307054817493923798188032 1866904489546614886284048281370624 -31521464911620467606845858311569408 6239482470488771853028464047161344 4335418350833432745044426822254592 -799941254814139529174683861278261248 8825475811083028444157801257762816 7108831752087097750020689481433088 -836638025857034391540739189931769856 6851059929454708080587531270225920 9076117027512119473573904179527680 -666625084530517695402514492063481856 3293765857899806851159196962914304 1267455132147103062100376821956608 -410912821273065447503470551092953088 4394911710080662315519288174182400 9979124784115414195829798808322048 -750564710616709062436804513587265536 6092478627167690605230080022020096 7033852636980180857441694850744320 -462859071203529103989025496138514432 4576218408304282844382406027247616 4767454970646111284326445929725952 -29817496574271807677386762500440064 9389941267196502747558172023586816 6547685093171397100632985074401280 -663762103856151503311803972461789184 5590775973680985879112910607745024 5594912457914361145366753151287296 -971340872778408360662658432060358656 2594501806250536979209278946541568 3615429821901059764363080520171520 -926205129462694438178468240776232960 4296741855086603398328227878404096 5512312658301532403459524650860544 -61668412050081921908828821692350464 3315693462909950015252038733004800 6534752673437017521400309243445248 -813776128282029452925369150292885504 742976829182256677693887271141376 6038738921885364455450722338603008 -18772229187534854424962086278791168 1937569791379129507579087682535424 9023739058889056464261652338966528 -707913005509348986005968547513106432 5775406789663417493524134429196288 253146876474030765988191659884544 -729487576257189924882187416837816320 1664383789895545228732104102117376 5333332435212103785260409547653120 -781835348480736701243981924797513728 8694979075227668060210218477289472 8659328219402685354474769655791616 -427380095418059085633342608267804672 9868558558250407021604114354143232 5578178899372446249506189397196800 -404065095612855684679732592335912960 1757827375307228864847411075350528 6496362442522417054552700416425984 -850755482967212540101115314826117120 7693392376765910628078887936983040 7405395828027759189835150503444480 -44217005962949802637412435067142144 5680186661013541291898405704957952 1905327639872968482306931384385536 -965732120252375194055646325589934080 5853393914429442593435668621295616 3383234839308729137306247651917824 -348471188412761760176364650256924672 7870601957515941363856881125163008 6964748369128071194310562438709248 -4215518534818605938657874235359232 6576741595811869756992228436213760 207794190251133958560808196636672 -622686109031472271456002959460007936 1918311577855651109729789750018048 1496216451775748670911144276262912 -575603727806598415409444056064851968 8583783715724339966969614402846720 2605686040067057022014638151172096 -295659132086424689819977277492953088 9783844734775377990689067670437888 7275602478361791860235949960069120 -113633979683390266266503308713656320 7194282377013721991010880155811840 4963366712551411793751041422393344 -810441430639655619432852124864610304 6191413379918706343706160864952320 5471468726186334990023820654411776 -23554445153426350484590386854494208 9712466096479965034613415354564608 8450482838935660573637781999321088 -333332593011409783537824231606714368 6555941660964198155570285052428288 3425153550954178280188295478509568 -229010847422266350284239648585678848 8083817877951695642374837303771136 8178206482475573744312343165140992 -213636573185582860511223754963025920 7396110914831649688337200611065856 2167258444601826280058141989142528 -897076888592406687175292616209072128 897294579163926855428825078038528 294397390177896135980909372375040 -726538791582446779315532918094299136 6457297478934462457682820367122432 3251960917517589081463550149394432 -977587783044817878026004482507145216 1290247059422743310032015586230272 9289857281261210523244793612468224 -811233275252921599801331270329303040 852117195690501408577020646916096 7941038015958052178326220817039360 -95429701316613076177066997328117760 1995466570686208991950072662982656 6598892580254552047464016609542144 -415791194550963075753967387158773760 4724033583509267078655266032451584 2988058288027566160501934607302656 -896155181387367342294606671949856768 608721822756404348542171066925056 8462555877730771690730277140692992 -883815549196338883575346161696899072 2585276075873913269129502477254656 3802958595725841586331324715630592 -698564940535004152277332724679704576 3001291096723037984094606816444416 9855245837201356803595528986165248 -149213852001071266289759901292953600 4210645939996413073129558721429504 423771552357784252182880063586304 -494058607926002379556546562985295872 3507942957025414919680630934470656 944797433860999756069130519707648 -53281946881064566375627573124136960 1060372701820592427355550213210112 3389324098110240985644480910589952 -920404187908576155934280401473765376 7599210815569250864850450664914944 6471094415932461550338899242385408 -560454032723009414941128602461143040 2352872461205435055087431429652480 5144614286263369017453921190281216 -154634858436858020403219280083025920 4169476235098271805870435330949120 7521043285461929637737575556841472 -429221540618349101461015618413133824 3766509853662886791665555041419264 9168278934465660639812661232533504 -453870315839544462004212002327625728 9947052313945366267238423539482624 9191010863748580668439571665518592 -239884662459323511413900098649718784 1179586780209026983172233238675456 9362436772342780073228958011752448 -790110530990759529531733218970042368 199637393917362154686707440549888 2718673469845484432189082795245568 -560835864505218073878119486903549952 3202573690659443747129135554625536 840940637206600446562417277665280 -635332589894639327965406442815488000 8976884231414352536527428042883072 7463996638274635172655734942859264 -867559768912628562255303915983601664 1303998153237004446958352385179648 3058172013803755599136334790262784 -117750695706501513194746837519564800 364182285341338068316296442806272 2746338688910921600927703192567808 -583976328498041657823581592604377088 7316726289477404952145606150717440 9665796147450042289899461131894784 -329301339166184201031304971626217472 4087395319256466656441707729518592 972540778480551499987801455198208 -885084617068482439769050134716874752 2907158095694256024032181999370240 6996869870741154218589793124614144 -927414482337601069353297846414082048 6136873900245371405220041927426048 2464380393442691059654640158113792 -594260901837036438994378951753728000 1757468247174103669725600436715520 608012787525945119668993207042048 -377105275109138774946959615867224064 9800120566454315552855025818533888 6569805472980565623051993611239424 -723323575764817852388562826904469504 6191556693441099306270180696391680 8856525546501694175976201943777280 -897789543009317634961767571726008320 8781242292307097666459143694712832 2644393398253967692556571164803072 -376547705375425884523037796828446720 7332773015904454337514632097300480 3683610586116399356635577793380352 -811278273431038285205833570205040640 7354588086949175677806874376273920 213647568128685525655923351093248 -17601123745829559062980628668481536 7836093296583990987625871016198144 5037136139020028355750789849808896 -561315657803056936929661292491309056 6326546799006392764473025815904256 1985071387255514419100538674085888 -542061833439534943450469711061450752 7105073529062985540385857073053696 3707222185277642056962145683243008 -6828436342653062290954628301324288 791835175897707577040891273019392 9615190284142424438182616875663360 -864599366526702635964882575358427136 7165078848957422535783441665884160 2279355250317883442953017897254912 -245810719104987409993832886909796352 73706748277701845103183919054848 2519964451822861765212217668534272 -583154914685645421495135405665681408 4607122903658374521552395837636608 9999373672489739528679752818753536 -773108498666248895808973947753463808 1813059002999851664128966851035136 3325613126501125780155986807357440 -659328073443511176509231190174072832 14172706746378648946119549124608 9397077442610169374297608110997504 -947470307414571094089102553541246976 7348958406222751607292030567317504 5708600420207743260278519700127744 -519008513907109738948650151303970816 98693761527207122199130574684160 5001496238983293859608696692146176 -499129698835765252525643730090196992 9378139173248501247836335321907200 7614754174656736054138243297312768 -77991116909404085686788946810372096 8805127791343462799575076971741184 5118828289220799996387129160630272 -520887667811598672629912141280837632 8527713912558312817607872759201792 388533415303952869788082071666688 -380747030285001004924625899583700992 5306857567553464899632010058792960 2370852225971620189130500054450176 -357349005700250703098917752171134976 6444115752548867776000222937743360 2052586712110949981647292589932544 -282740493888122405037811955075645440 5364897190711981552749744748494848 9162518668990702833169521673502720 -157931149464817090097968874342318080 1123148689078327825377953461567488 6539397481754241059453573055643648 -154286500977423332138432362209869824 5281367068744555485453846260482048 7286646407335142619686904860246016 -812788476428727677169503657009348608 6432065966878065296157943183441920 5539386679796704654892425105375232 -178670052249676675069821486085701632 9808857366682213449697016508579840 6966237901430056681813154084159488 -522141581196414746851732186227277824 9099730413472824407869265855643648 3715469309408825645539664697753600 -794957202393836888007665897638461440 1472273341802561042078309451563008 9422205106049135126511702704652288 -295167306114711421282111644009234432 1780212630402065477935351744954368 7101847084349978825632886317645824 -389449260217240532648192693686501376 7129780746195188017222742431498240 1708748146725951343752273058594816 -928619777342473522173699860631388160 3935746210156858101037651512524800 1365440450990259459350255743533056 -146852033422596137937195462727565312 2829990607477102422619405953269760 1419959984018418851355986612977664 -71289886644017877815541427836289024 3132062983565183873186791088455680 1353007398215330990797507295969280 -277747880084457175098544026311196672 9797164857932427450230020459462656 1505612825957473256748977815027712 -890320113300643597406960165995937792 7789808955615924519636088267997184 3684558589332525191176995389571072 -537538049887428941003757631502811136 6466160481399542119047476663025664 1704358020876388666954585749848064 -653753820867985367971831620862738432 4327507553067544624679985174544384 3275719522019991648286902834954240 -820461653986119471688948511636717568 574142386175344686553764701667328 4106523770757686003731911728431104 -418583938845355090919588787090620416 2728351270334995681711743584698368 4931918981142692814573796704911360 -221012585232583955659268320911163392 2093662432729642505360087206330368 7451172500423818752956562986237952 -666113298145894804754956424885305344 6371375173438830375789400497848320 8081595348131894237367347028426752 -804802130527406503969168726018752512 3846343391550843852844450067775488 8043644889994123476379148163743744 -271065013669962002214973096127889408 9981347445968905795194378023600128 4465870044864439536943901672734720 -280386973386057523211768118854549504 7694890833907976049446958303019008 4169239605017922626264871016071168 -528334183075665385661170883821043712 6635463689940791279689754990346240 7466385372528581132218010890665984 -727648137526790568755177118763057152 991235101589394684670047825166336 3323422263533202924606892107890688 -103629790300680210511289431718100992 9940992671128886310450348066603008 9269281726704210219587023314878464 -281820831953339322853694230660907008 7477491204513953754518715707162624 9590476506098963415510155708596224 -859246423004958499313953829736677376 144080822428881182623509566717952 6190100719196442362299016615559168 -229280897691911124060511473003134976 6782389892796766029610792580546560 3472533975063534075695550875828224 -991154410896299642096457387574558720 8175356024030946048264728840503296 8550555585096646393924018323324928 -775930952165608023002533279974817792 5110396441649615942701876839972864 7589725412248156941945765797822464 -593051658912819656297783677107044352 1661894102140166201917657340444672 656757705272043669196655084699648 -736946618459076568895971333523898368 267724755639221185867626458382336 7718708741053901136628830850514944 -262572928393766028181785630669275136 9070314916181129122798071846010880 3714917196060500955482399564627968 -17883858754503998335031288333860864 2943358303233472832322914899460096 462935203663526176013983149981696 -699606969165781411483372136448393216 3148140389799831430216163600105472 1080304711571936814661428542701568 -347206856695879568443034087951695872 8095552912644646422244093190995968 4354266901811361144661763367632896 -778878280139493191718285076617756672 1869335990684028670598521544507392 9335466412175943015322545125588992 -835648043651399629863121147601616896 3812340971707564684059400848015360 4791656738891785449242160948838400 -60725154320520719563362358750347264 6831385503391845305848570195214336 442796296432503708561045932998656 -468290316395048003083553336012570624 6002219015781253483740809289269248 758763053833736161342688663175168 -256379819220663524900537357066829824 7772690877410007037735544058544128 677563164836115302858795041947648 -419345339388271930474083050302996480 3798982677646984496434750989271040 8409152294658377399652923329216512 -727462776379156263572351092508327936 8151355611682287293330304165478400 5180762726904950204754897305337856 -64203337805350287397712492180275200 9167453503028181699420781230948352 649973819354997033214198167896064 -672648160329500553364572550903889920 2137325690677176719636925037674496 6794117081734265591982450339217408 -455768982828709088726668885012512768 1901309114572037060959228475211776 5375883335273264241365176144625664 -364329455203159244417513066139222016 6913795592140278966527205841043456 1053737202785858002338382599946240 -989275083240427672408020601888833536 9110386103335703243094624598753280 2398526330039783697908015147515904 -223208896190587866844413912615485440 7016284129613296370353169647009792 6429125496906404984089602160590848 -571129296119814113729957312438730752 5068933874223042626752952810864640 7941278144463244304565567292964864 -104541758983560634736067333589041152 4108995538159445272635692151734272 7282506387891981513195902352752640 -432629088390166939553015145961619456 7809683392819589218265946858192896 428642569206696774788237802602496 -676398727501251582662521682388844544 1107418965598923654340157259120640 8186239380744952042765231748808704 -737624006929882846614697416440414208 669859014296375226362531315449856 1990194894514312436900658145132544 -834702452969757395031565612506677248 9392579747092506180681206580903936 2809083083042650769276882894454784 -415259999977534880593259007964086272 236429565049499595911632663871488 967160037536174873002719471206400 -313768135842825132062229091219144704 7700276046507623198470377255731200 2650889472031412589962117922160640 -353324219972935236437540846081933312 2989632836723164442910398905057280 314316576062617898573586522701824 -347932442133531288119508644862623744 9538470779722520370300633143574528 7681433669497122068046372157784064 -836981053841926067622297943471554560 6770159414746197663219050809917440 6351400752911746170439393934835712 -886016013260221154547324161542324224 9886245314640618119013115728232448 6478188406248627958320136229748736 -252588632863264895548469981032218624 3952124633236736835105220668162048 9749749271598764605848683519410176 -278076977801205912251319956507983872 725604866815650845074689875771392 5998892079684731111367735920033792 -377609281286037471259798710893150208 8342822187937801498538631099318272 5107602383023491255185442227617792 -455875547737687210810878767145156608 3404875953808404542820510550982656 2752088294949326508102670918615040 -658602181758530438093653924231774208 3052608859696994651774848790953984 8152042618720611327453987283664896 -814298074136713862258243009947631616 5518297990259118026886578320703488 8413410788803109183321161492070400 -692443696814112778678546981539807232 6540302150114779798071458972827648 7887692427557913850345637965463552 -241925100498212515119753140686028800 2435477165359550822126591114477568 9343353869277800402677054746656768 -41218138232318516446098069234122752 6890385420997722209032151333076992 7091927337875695181509633727528960 -16630472288528676701711363595042816 2694481469240829513236449431912448 3641994005737540628710213954830336 -366074149002029870019490742515269632 8519966735724334420730003685638144 4099462848753229448318687975047168 -907639360189215287929204077739638784 4461468304662373989325216109559808 808197015671151087299302449479680 -394492445660464742593598341664210944 7427003516503794516792817867554816 7924067970130919102350776986501120 -249323394565237844254002625940291584 1102793500618028752349101916422144 8867456616082011265813494823387136 -516654184469071163779001812743356416 4986551596189714342910348278890496 4082423028135118321222352078110720 -100277732804700760266603833065472000 9433027827729045689019204150231040 4232281651051942014967572888289280 -386546798230462035550807282054856704 3305993755500553680779317222572032 9669242046389554837551620860936192 -423970306544541377551424215771512832 9650130169037531695871928534302720 1140960511761485171385901307133952 -454862542516758709042883311525953536 9684049182758998552000923827175424 3344336457785527126699344119463936 -324380551709428860874195393864269824 2864556033492522111712370783944704 9119324750654450495237852531523584 -916544268792190183453416859082162176 6696663043903553579240550693863424 9973363620584113937965611749474304 -199625475492912945859090808288837632 6660321713295519044836326614499328 3980601498852253795605307310735360 -35577296003653408139668105780527104 4067638490982340493493024818462720 5412230238144077174484611092185088 -414288065875695097815187120581509120 8597998632142507864764541663444992 4587880776142671678290254266105856 -447720397896510173773810947997040640 3593451917469959108950901003386880 5282139841332881212845848241635328 -687994893002197222007548411400683520 7192940378187657147433429065793536 3580961157061247895414016516816896 -511920966896107805169161013469118464 3333150727260428480030656119701504 1666631574555918172608382371889152 -8502532763681859828388920811323392 3281476012793070636552706789998592 4393711532725024317800683334008832 -974573063686774588306066639425634304 999136028912476288865425923506176 9444004060405966336588850904694784 -826891772169093107265629826597257216 4540931873796383328723016817311744 1595505346839693028328235228725248 -999267325059885309771044275481477120 2198169115527545860434907631714304 8392728102120633173755972202528768 -4835585696218498217012337276092416 6116325844789711814486399459000320 5786724276218012599146118320750592 -45027225322460645702241498347601920 5136451272916413353150759282147328 2004004056726699694981116795551744 -488099021597153709428173334705602560 6122263041756409059349595405942784 6531683290348860600699146576330752 -338885866301634792600378112749862912 1330910012119702339381563024736256 7510016632091796921478326683435008 -734255861489742748413132479320293376 448620618588114784152363764547584 1978071738930728710036469672050688 -674153175703683393834463110434390016 3436047726766128073384652986908672 8043645413472273496031605620211712 -3565053308389924588071893826797568 3669495195560344890165380912250880 9700158733225506233760708837769216 -313202414023749916680328693273329664 4550934286549313055613178337034240 5915576321717626540685987674062848 -400538485744450832164942569875177472 9899680226785295634548713169354752 6088353929157862286211284849393664 -214492408737883532386816351111479296 176672948497434071166318796603392 5412296359505430984598431926845440 -119636856762838965767103412537655296 2330230443700176692990806981607424 4602747500589913091270652995829760 -647635096430851836611130828391448576 637746555743213635195234248818688 7212809772711520055593717418950656 -577502874939151508695732854888333312 9323392039386059793734004757233664 6646421282339606627482960469688320 -604758562518806240127276019596918784 8190578795810419597228604250914816 4344517983378862162475399736459264 -869353766581624825967920126579703808 3234932826263419687313491915440128 6446216726866203138849134386085888 -425088591735097025674125415779663872 485437381495945670454486929244160 5421772268410123627300978566365184 -100109305957562376172951215794028544 8978788206322521796070144483524608 3910644889956320172449921297809408 -898868760790667915250538984754905088 2866688995432738264978346641195008 7957914521153188774950942732713984 -609778877067672108868971821742948352 9249638863087239387123724220104704 9808978959125605747503251893256192 -280530186261534394617582847042519040 3352578978227747837153616087482368 1532872538018246239525042829393920 -208960910173830966625634108103983104 5609578652399260219658190605778944 6281184005901011342300063585009664 -654943894680153135781280720724426752 2962099422837803742419849610002432 1853614224919102437808515898671104 -28820706883307100603120067429793792 7111305433665397536552949720809472 3402919129709571407275524874043392 -808378181206830204237225770052747264 4065729104920998412358560541310976 1811861640929514253012123189772288 -889668714152185976695686451506970624 4919154521961807754079771828420608 8068775428630408612010741383299072 -776418481495466866292735478102753280 4283915638741238462928719697674240 6837296357120115880006906370064384 -10498497088223349005846883386523648 1781145772698575300623185821564928 5675507177165219560402396913860608 -289485464382477886662636603348877312 9443263608577159026881722662780928 8714880575594247277253720990023680 -38927941424091444111053862809370624 2403733183508370908092808822784000 417726431219455875214613491482624 -767972724122314484020268142277165056 9225339127048264157688501479931904 6579723429602972009527603917488128 -454735976709565775528437171479379968 4823848067498837522390641285267456 3930412327068202241833211353104384 -98782092355061115078714418056396800 5629372397412842473420999805108224 157338535962022280293353917513728 -304808088446529658435211108330504192 6355550975934353293864714308157440 4657356644543411155719490319155200 -753548531515890937275515955469877248 8984704965450208396211500856901632 1462082298874064431419375447179264 -178313818126929753701486859217010688 8942459797882270445400627288735744 8091503745925259780392113600987136 -489182552580403815759123959571808256 6391426377816228820410468281614336 7885436353494637424776154707918848 -761503095951785190119509840868933632 7584323888118481027512489698394112 8360696633557465528686163418677248 -232080986515695646473770299423719424 1972699621974108878714498801729536 7099222745449105574267284191444992 -243717929003498827912039763319717888 8821795807257579926401483429380096 6853583344086049891815376946200576 -104365227436383976662462647368679424 7141305615318470289100805844762624 934885915273399730464336858054656 -238713786434348074915511120571662336 5559405830534377788378636313690112 6520984238002692811758157720190976 -590445163987706468868530285181927424 7553831568138711983619956262567936 2486574972151728059375606525067264 -445609279824228869752226530197504000 9083768328861195962298274821439488 636783527289464078958752876724224 -654736274362686662918247208533884928 605971298484615645516771239133184 4209330637464096097851908311482368 -11265748504508679077473943610720256 6359391948120219465485760161906688 3579832496802084390030734442627072 -645772417223267606660349685930131456 6316397310238845010288627513556992 2769993280633873310559466365648896 -136029768717119766230121570912698368 3334152555950061222003310485045248 3379420667822596864706983770456064 -456086643950872579574829482550231040 4264534130462214334767517646454784 734229202147387183088662118137856 -739134343338326349508600296456060928 8576166750664898608748500841660416 8228313949001756928185044396146688 -56956797602043617947430904385241088 6495728398237984539425299499057152 6653725154239382196100098900885504 -967409164735474004401349812004323328 2577291499884518988564014334738432 8234114764727116108008268324929536 -783524055749947636871085126609534976 4573119911186365900280866254356480 6271283986498487495775879662927872 -607407860685916344378995067737604096 1532889736843180398017242149683200 1087584800764428867164967865942016 -814730645484913434664582485360246784 4633526964987789185507491162619904 3808626045149899213265415599816704 -52715779723631327683797349576998912 9094398416933009514344216291966976 7372248444845552930162305289682944 -424221078826515083969322443618648064 7773917767925655109333957321162752 7234117612570875363423853603717120 -345627397855437358251969245628858368 2135976889999549421182832206675968 3644626758365982062901739359567872 -69493621653250182339710996113784832 49334207245649147764177079631872 3357532744238415979069850144210944 -762542894681152772595093299928236032 1809609594874056229400558117584896 1898431097114049566941372722708480 -739425073706221285912847225389580288 1083079922712180883860825632145408 1852286689463370939190986609262592 -446531994861629124801721877942763520 9796210152614110686763154138988544 1416983826896084198791940960944128 -981531732943495405151165800087814144 5476407238228728390159915200544768 8453387994730646413216096299515904 -864991584291018696139984366878064640 3825983039138488988436516216766464 1617633512492293394968352143704064 -990079390541208163040690636601688064 1429155591798124873425788644360192 2651936595851341966327976619409408 -992029053487713890936107021960740864 368286459576634208809385749118976 9457428831935629638072083362611200 -299134034431911117699521722477182976 4759714997869595684523806260461568 8888975439736684100854662660358144 -998169793268039735559637116456534016 3000908325469357274940735628509184 7108770036364170950033729979940864 -566602070562211733352110051119071232 1949076112264653088868284491628544 415152962764073112981839290564608 -672526521598869432790750685516791808 8444266823738701212574983353532416 3015664964367308206535067438153728 -226916181661893209761168230449152000 3228289002645038512206869365260288 9738506221831928592273131802984448 -890251050834262567258693206777266176 8104909491837183392475214835089408 6285206359711013790247656370470912 -76156810747036596697066290693537792 696144940165685878959580779642880 5977973226488036856803326173380608 -618608165065590989193702989967130624 8917939589892390970875715025633280 5665696074787051509386079316738048 -955299959955577467367797374408720384 7256744710848697245021592256249856 8205480501297696702509715766116352 -746684712086569018122565112683298816 9534434621106440391542265754943488 3379679723644368085296158745821184 -166606394197185409146434479988932608 505925781252765434344746675863552 2108767245576669327114061465255936 -341461232741284581619944880718479360 6928036553996966429309790295425024 9944422794226173289531474454773760 -372294008743194740621465525887696896 9307284618012894738404359142375424 9308678142796288123396363416240128 -535199439115660708371136663246602240 7972631891592514828426859388076032 8664861746762974758074007177658368 -885176974907263784563991489640660992 2770226010083481218945293918142464 2622785411978020071734930491572224 -209150298671156990286097875275350016 6991155586588452447663360439222272 4352265474879016211718754468364288 -443256940296035774849654011740553216 9842825049634158356254417672470528 6183852688748900929487807430262784 -743835793711096406085976481324859392 5704800414292031462314452006731776 7642017507862816627128116682162176 -863100941496477306362980753125408768 9509425176010687250481461917122560 3407515199727060809268255971606528 -474072338344031594223453812480278528 6281312234429746013088689403461632 6791328030451214479227988425572352 -686556343675102627399821378772271104 4455161530386188271515542057123840 2466922417672022153879108632707072 -415298456737281612656276312319590400 9895131760571516504169626323648512 7858218519574213060465293025869824 -231865490914920723906732059611103232 1584416741306958151694085076811776 4574105836656694213562048945586176 -465857687742306078856159130392985600 3061963679717769516447018172547072 2870142887423458119507399072022528 -741196488018007086778374114615754752 6679382623505093033383025358929920 8947287843692352038145872483057664 -161803067220178851872469064840380416 8252014350019929164624654323679232 8079153968842647434853123035758592 -910053498320071204747237336650088448 3761692496521259725502896043720704 4442380248406777026684816623403008 -719127346737977061110976254090149888 3372650953580796859607341988839424 7922064731823815877953687509794816 -744670666538141753068215460624859136 4927269375742584170480559953281024 3964608074420559568632803766566912 -346545447438288224240538038277505024 923645829691819585731404519964672 6403096451667354048925583515058176 -454551075470458878011024589665075200 1577315422608664821965652697808896 7251056197305694998156548193124352 -390700056249133828818860093309190144 2039235889227626274108641602699264 6303842531538621101059031387078656 -878827644862667552090873190905020416 2587837474119689592656750201274368 5298907372347673848167151297363968 -955273260302978729352838985187065856 1143239935646033077546219808489472 5962263036686469678987120442605568 -584347910484488144390833123199287296 5130188046808415917822455951917056 6392054486021125545780140551700480 -263834228783155575603146125742178304 7843088551635986514024099940925440 682802531009931795398733829505024 -503901041776142069854392724412694528 2825812773238138738867963533721600 6746163483210049745558302093213696 -969081720420090624777382650271760384 8535389036608015831154604474630144 2520266710466529887367835382972416 -700865459524645180067130341530271744 4407754416087913502144678368116736 6407219233896440351611326031724544 -881771649222028485772707759497674752 971814194422254100434153002500096 6492722437841519761914167977574400 -734946716645348862397837098503634944 8409666565583197654657650116263936 6289747093732566463819396535025664 -677377999537401016870028456398684160 1516551601550523858889776172105728 2037328250128393697807515542093824 -466014678909667455523965737151496192 8897121949607899414501755669446656 7816350231674388127647934298718208 -773610927151569499596332158699962368 8593986811996179801947750610763776 4450935194287169559086398672207872 -682029581090971153538777375678922752 136295792409960085589696685539328 8509609875149539152501616553230336 -847809225391054005267404447864061952 8934335887227722747855766896508928 3785691711565450786838776555503616 -844623502246892182570014323739983872 995522105006825335770267458207744 4400893165982794078300607321473024 -339745595632613219747232890191085568 5139717515671022707189290429841408 4357597852101853007709338767196160 -863257234143750511813399363729752064 9647005532836548808272840967061504 9428741054646466259671940409065472 -629665610972573843848381050841464832 1647869059300200172948982654304256 3207678348828161233174713497288704 -44555401773642512938918031516499968 7066342854787333853251003486306304 6800474430260229418498483013287936 -789941170991723911505389042343608320 1097367616495723491047513083871232 1875390320648496977305904208674816 -841262180707450677477294040816812032 4737048551302450304659673401262080 9190120545195147631787594584424448 -871848034350880006853524118453616640 5059855743339186098928742125535232 346136773791995735068451226517504 -251108434277841440942472979399311360 4117243330012122252409123912024064 4586098146476778262801859982917632 -546178239075305858334469734134710272 2917926528334528744502102818029568 2293814232656929361192663109337088 -733631830924020924353379650091614208 3889486577580124069860632233508864 9407901777614296019194529083031552 -720076811733567339761244493079117824 944030856762977864106067928023040 1701123649129020607194395217756160 -663007230161435177403078864801890304 587198932704768431004758250094592 5317689329240880502478309905399808 -681017707918326954954725790884823040 8045232426874351192622368422887424 2646069052403369348136912973463552 -460300458252714076413642247998799872 2313491630614071768616357301583872 5178061040682269685757014536355840 -207059860087253652746487533142016000 3659057395750335238283814523371520 8863551782213611732813085419765760 -583575227618056348456130112233930752 2199798275637981977549304257052672 6498325781434342597395830582280192 -339655169118063627490711997041868800 6725613301713460246230359512973312 1885159775221167199264410137788416 -700944509554903651878973463926407168 5255768218982824520267042530525184 5989895433037115985430334117249024 -397829621331159217475000845698334720 8996541360351117963650501707825152 783865724895310994079857212653568 -639731162974679157719902492716695552 6451364775145916048088459303190528 531279602624627573590606821195776 -822317589348807211399715178774790144 5862344521446984097314822791626752 8039715320106689072313124553490432 -608984170578025409954646062769635328 3699586351209442073036505898549248 5769795053865901744415463805288448 -390517780714335080583513329983553536 4100843928748820071926497680556032 424433473374166448691322147569664 -196327823304875883670938663721631744 910968181413037497294614020751360 4859387222846112742106783123767296 -635607719056844791220855899605172224 8971165713494267255427430837387264 8179727538834306781782646148038656 -242877539615685290838694259146620928 533030943069251408077518865956864 9211847976350678913857741450641408 -983567046999311487763942192508305408 9160311540434935718085979302526976 2708775043848501744638471373324288 -499237452388765665784581789377888256 356815184143793232944199100268544 8915328460197776427200463918596096 -593803963948578496826478861817479168 3148809875638020160257791090491392 4273696025179808789550346132258816 -934735506492472445419250130897338368 7907328668903392374031467388338176 4946355655960156245521247131140096 -511488246491916923023354143090671616 1981621807258673178575823913877504 4004492844980219674205729241169920 -362617537206974399823607286468706304 1571638598592246678995036148858880 4544959549615634427337315656400896 -60354306589584259326969523218677760 4684220638607428799807708897214464 1215619710334295523866414214545408 -51835856118066079666649633407369216 4731757967732653325671167382519808 502399246982775295826337074249728 -276959482531507180185342402583592960 3401940322361182988171418573733888 9597320386956316111809620914208768 -525268204293069169181282883063513088 6170975586539994950852294253477888 5626667024028008690570011892252672 -849418110809458054540564267886706688 437179746685837909643821186023424 8222781356482752869410232177000448 -37816239212278789997620612875419648 5480826108186468263643783268139008 9717083166203754881602375697563648 -614680243610651922057067445864103936 6076684136240382534294116755308544 4405119581912510834416977455349760 -141067820212308380978928816687677440 7121075847654645125595901619863552 2966181412271981823027988226113536 -342643524660788531876548544563249152 1921427832613380735913959989706752 5528249337568434546828929713307648 -830133434762526464118683618947104768 5354609928400504889766283835342848 3177440516317929900377210135511040 -128718800676702787062244771809460224 6087360693775872773080120410767360 7296463299945306201898941402841088 -779349422338140676417761057787871232 4226225994801726808758139494596608 9901064676224452304729807683321856 -977113359401891265979186740723712000 257781436717839467933824926613504 5543953130776747718116902222954496 -132205701661164727534264759256875008 7289548841489378574628990857773056 3951861957717869243433503766347776 -60823675570146068493638194792759296 2820626623124154069480829907632128 8038189058354344286241453944864768 -520555307665687585416675306726490112 2854191416306198067529170395594752 761502372063746402323069747068928 -333244917187223449959254092775686144 5971250356288106546473088923467776 935016107129258675171107675308032 -771661212519468905629743100750462976 4963288989203195687272133561417728 3130297844419309456770257804853248 -290499613766788496563509658052984832 8993678704319806842274367559172096 915877729929824916787189059158016 -13108340323252366303673378924396544 2663820973790769029950376192770048 2895684440914542817803539216072704 -430237541896543853937935769889931264 8520893049989789996958859424432128 5644526640856385674157302522839040 -885154739357755436464020052984725504 9022871463876953150771240800092160 2446227321538473616249955375120384 -179033149683359767327978419260489728 6445139695366158471505336982306816 494934718336343350549454119763968 -859671632798524674497598664080359424 4719714024496839104155221068087296 4788440411822702424986107349303296 -778198690137484326492807957598699520 5783688917805727874418566359941120 7153236316874027439832982563586048 -929023457616510393810804231966294016 2823026759866214085359036117549056 6682725972485218060512850186600448 -265057704692705143468254943783157760 3240322974084472760552422046171136 9228420908826053089550408968306688 -419049327701289952159569746289754112 7806981609899948450000829597876224 4235702273628004584017891694739456 -494088838994990685071545468993929216 3339567795897879622974121193766912 4733027889199150763657460447182848 -115942754274260556184174430561239040 1296629579906171372658284042387456 3567751245382353675944541019963392 -194070084707039374356215942944391168 4285237081508453108092915339493376 2141733265605202726514564177854464 -826818333165314663407249071179563008 9780923902887541279025050714898432 4391741755778292269971548447703040 -569829136107501090482201964109103104 8835590610505624481930019998793728 6758693197411211914230372985995264 -300130743152265252441887995158593536 8162599458151893021701513676849152 3982511855091611166654051339206656 -754754192878386497801470093205438464 3301347841919210787697340828352512 4526181912425331303794113064730624 -270203937588815520482426242415460352 9468951080615747940930515602767872 4283470955318296008035323831386112 -483168252706407740842826484242448384 2151599756182300521312863354093568 6706161762285102883228082012946432 -382031963889530326083000996198350848 7906763693299301855903352059068416 2778757314447519159558635954110464 -408385444158655841612600619309203456 3180033664298693805503662558019584 1020810850369435520151974586613760 -942358507603331499444677955821764608 4075735989329203128857889381285888 8894698791524596805137258304765952 -594762395020324585769913259124588544 4628854376635578881471400078475264 2865683190938280424639140888313856 -291950227363168121476238752478134272 4741434598545399892308887049601024 8355129503645877753575869121560576 -596781545071512210302012087091593216 2877512569070824563708711963459584 9959730800368471577734959863955456 -750523601002191115225137057644937216 6149096512621810748394577026088960 7912271885988320235794694078988288 -39986553177783277057953926400180224 1825921876673904788786578653708288 6655312064839674784212700947808256 -204842651119495658608257374357553152 8015868146978635385193425113448448 486834805305880413228723960020992 -375335339883207454270815129175064576 7105480824471315764864788295843840 4548999485986003636465848719245312 -298974813973012002192843159925424128 5633748905745424411652959835783168 5428446325136238280266877690183680 -713586890682727465080142181720653824 9889071809193687483609248367116288 1121549200208330918277613386465280 -3163862102703802433029216340541440 3369258190870419100227077203296256 6751432437741196127741112156684288 -844952178550542703385632549782945792 191601540619967437935410013011968 3523977188065868585857163747917824 -449388973616759495585114029496991744 5178395922541981583080386816114688 7463004420617042918793566446682112 -190952871035022400255847598194163712 3362399625621108973258865870110720 1392719705886109894698438295027712 -659931821254144632573655275389583360 4782298452730481982886463053758464 5923227457300483812207235463905280 -62903062932204293752111179119984640 8035773523400667309961157541888000 6601563021749930723769819250819072 -785401040633452477808162162339741696 9395078949182963140495895506714624 4802669576694402135400049134272512 -482346030423233558605734264996626432 1999860561829783859568770740649984 1113945135793796465785974919528448 -56584123282486577837189964337512448 175001030660767382087317233598464 822369248088960336598029593214976 -916822945770570762727279842727821312 9078046206662067602407486201528320 1934656318553535734442084595138560 -575655657076096012495427525800886272 2901310052191592529138179519807488 9161450867839675598549170796888064 -490474740083688541919575006397857792 9678637673019089141427819511808000 5608412264884019691538699079647232 -43901355755624502771892339838287872 9695543077327185382033515863867392 3992184820109094070750293153284096 -151929165822091911782594015920128000 1512732969170557113584564117176320 2982549621010976040870653431119872 -718328947516175341977630738544066560 5037597758804723485053394631000064 1648907424046267679730980876189696 -537994982560807792306254089241493504 605662150449660450709003816665088 7587160274637234627434798435532800 -686981091265329022151603064674451456 1545180590517074853694081958150144 2082950791352329448182576947658752 -319430470170657701260406899144130560 981145111911706414209367623598080 691535198824023241948191979995136 -869160576156002135745388090482491392 2585308837228473250786776853774336 7486354469442215764657490863587328 -302639343587644626839110921178054656 6780049279719854925642939773222912 7988077522378786743188549208637440 -713172272972610738563087839797444608 5152420920745650076142094589624320 2571747159531110069019096173772800 -934477860934600207602657097219571712 5075342914472557670651175341391872 3296206862610858916261821698539520 -498867371728493824714614245190270976 7267776804447919318560467664764928 2828827288553101776451882035707904 -240984060250027178716528756316438528 6357529990939129708793547129356288 7103186284757006152879712426262528 -473395111814446442721784500632682496 3630680712956986024553032617820160 8622300968549983589612499064848384 -312025864711864291632668198869925888 6582111399438463752165980324757504 6104034403225021146609745198579712 -774062897783096556022808737891745792 2913005135286373476783613905207296 710666487133420894997269706702848 -296994157026864819718468000446152704 9643267661715922611079438208598016 2972560092036688564171761973723136 -251848589468497830231723260849946624 1880029750096863768099930742194176 2548082015830007667241495564386304 -187454865313503976003862825493594112 1459425940065997197607959871356928 5777828288324332693815010216902656 -385755239774340500627543080159936512 7602687015081553206671697881595904 7897984084746379024165374126981120 -12334742244972836530829828735107072 2385138427703196247266449697013760 1353860804685921288484641757462528 -813031694084631798296489971754729472 4134437000868711715653863746830336 1437620730306842058249442152153088 -390886352843477371765945908728954880 1419412827414373913561267158646784 2487156368348446725484843961942016 -464591105873569784822342083504242688 2119480030607244114015601886756864 9939281606105845321426726616563712 -630120791898055450098477240657379328 2074269259499321683878459880767488 6326512361363182591701369816612864 -477087256758721584109857848929812480 8238778632394609511229201879924736 5073244566703209983111316723728384 -166974836285453057195816077766950912 9518687884486999373165377779400704 9951120754931822577216723238256640 -301460915856866839657598022062178304 7315341170712555697907035264778240 7884208538899141354722397620535296 -929659486821208062504425930430087168 5608478690150108348884410274152448 4294921625541708937920300959399936 -614072509240568348503199211438735360 8520114523954412784896020907556864 1562663726830825867189853823696896 -545888459189484977890275430175342592 7728025115342325232291034590871552 8892036686978505021031257600950272 -677340684646224610469249405832658944 9795170447768444486891927515430912 420507173180924187346787077455872 -873434730064836695178119548988555264 4353133195819981978051567165636608 3256800253700772341887245209305088 -309206736977164880806575470853226496 6921248313040285308663206382665728 737853323527658285100895653855232 -180223148349868185253327499796938752 3303892653806138881349215137562624 646117026832937410597528786698240 -814854116324180093466355680516505600 8284682914592506424733071587672064 9229273306729484569706441490825216 -542583065289153318524029675352621056 1459968801542428032821358611136512 1215867707566030832310687404916736 -359511013919194296419207032711675904 8032516441925816997170936864047104 1596261996635302325142336107970560 -574887512688282830274871376941678592 2797531529991262932937186939502592 5174592616251961553557418068148224 -731951675378146112148469617499570176 8602940096160503668326513086824448 5449697496609086253884550554845184 -666644593009986604404771223681105920 4980601578408806650737835152244736 786778549918089902316496476962816 -683078238400876037428169594420330496 3102577607076523353351219113361408 2791966526120604489960440450777088 -995298773219008633788268311685890048 4252749424232442113953362761220096 2106929668306886002433829329960960 -294164884536949963081258615833624576 5536944192190925203052896943341568 9772110473814108707903030964518912 -813875560138295947651503147632820224 2242109799402750770691505265836032 4003714738017004721691109978275840 -792401963973009466517550966163636224 960698470471197819268024391172096 313380899414454623206601278881792 -802017355982035034624324927748046848 895890390287369957307938743779328 2040385320462438916172701035921408 -155779001833820273774940506246086656 1599700713040230227221943209164800 7064186008786259718063781905956864 -139734206272341984638881486837121024 6802767302843124687033685898166272 8127725036053887795202141779394560 -307537836299405731915080822524215296 7202543069511303426555589720801280 7179067920660654876901120692715520 -843586625504199112458821713323360256 8658709666974419060563111049166848 8677944813058484691163420383248384 -114768185661806455944087886180122624 5522203706765807295277037015531520 7665327948987896920248119619223552 -115221893326384702995509671123484672 146853414730161610571945206611968 5334483947993878525551772944039936 -104454390016575442255624637801037824 1673705972886426542261974308225024 1883239636078725551921507275374592 -488829366650131056017019764551450624 5196285830785910783789999386001408 4353847141696554388304295157039104 -568252527333277615259889415816740864 880916232862332438406326856450048 2956134677619184045955493713149952 -933377555602199197726837308248817664 3595153027562882906844888865701888 7291383523643166727784748885737472 -626399637039032936706651835038957568 9186107388001633593717414413991936 1066799980142315455250575948513280 -108833497557523260862166186850254848 8476115892953335322049249263222784 7389320555543067899315577207914496 -315522667074514462516190100792016896 5602505819846588845343063521886208 6440012964511338989149584680288256 -601271863655934609353576481560723456 7862391189861122105759157746401280 8230691873314994936715974381928448 -617138092525202135164245639713259520 913403406653534980450303185256448 4876260725466852824575824990568448 -308925415424035639207367634185093120 7931987094084652733320672969752576 9103062097501654182830546167529472 -239741893542200843024984067270508544 392397519341875118901712002220032 7521062386253753154284521405808640 -996660497202175711384086016621019136 7594921357630864444470336423985152 874102110785141768456575219924992 -157235840941214367939995091255427072 1049643804758739276821130547036160 5650593090181042590592808012218368 -54867248924724619870301781818867712 9481517389181165343057232628023296 5142035151900656433964462865645568 -976781973807990656430513874794446848 1616298419923781936905918665981952 9223687208059764625327794891522048 -23219677054451518691333775162343424 6958407192545405825279839139004416 3679124758257181499724518616203264 -172155020743041985063103253509570560 5971236516145299647033212175122432 1631952492444693369723840815431680 -663577328212971726868836618231349248 7496271317748090654729301607317504 7270912520761817134498262248587264 -383120164467341153226763046571999232 1939100842505333906466360581423104 3432752852018354487758173780312064 -743402723204391552935436086098788352 3873726775997770021179857741807616 6344385393157378779508639373721600 -341824907239140055772929452874399744 5948269740529079954933691929591808 5321256780630444068610199963828224 -438445942757059068794108620358811648 9638404568848959652394183455408128 9920487870698116348413762831646720 -114562945232132538207870956567789568 1323939109351307640208326590988288 9975292245575795742136541686792192 -73928765099057859795278092730105856 3325207743821125430635021260029952 5053024691005070784314845507354624 -755777010692065677016651512137383936 2287827654244295746641913914064896 7006260364098749036097104097837056 -111036668906196311243530903601807360 2591732939500553180601184052838400 8088729626235283128519063345561600 -430408551972809384468263034593214464 3268508258963337626188891086127104 4807989114632564779796735671140352 -253314095160061055110305127229030400 6819903921577771619303836090368000 7654066438523029499990188669009920 -312019558840111344737350909343825920 6634928592784914425425164003966976 6078652178590646804667329260027904 -782283991357727895736751226175356928 2800633631388222955829518126809088 3088621705038571295383933811687424 -607759699256149037856846894732410880 3393685657983483375111260023554048 2111353511875171580755140790976512 -902283411560050446897854132109967360 1414734107984504957837277149528064 506921549538196604563043534241792 -120835515883629166215062746390593536 6263624133283325464814561324433408 7062488676447625150539959717855232 -746886051067414528762310411935547392 1658407649897835816254683985477632 4083151007548419858831682710798336 -796614485055477324123089853046849536 943767709968954132834012670984192 9697043947548652777187016655765504 -344371191233714093418734958449524736 6751004933224512043232940129255424 8866187041566004978064445671473152 -185963641116435272806112783541207040 5853376826115324224792771436740608 5946409986167203126844157260201984 -102733013365229438492800028713680896 2068463712707921054041926723960832 2629639301416696211268919437033472 -680610344106965781013699988849426432 3995886703226724086282316358352896 1411337834639631651097616156983296 -622976278430044405538003261023322112 9394877631675089240518794288300032 8386099527813914253271333949407232 -120205218856391973040970279744962560 1564427203501902174309559308386304 4319548626415595867266373585469440 -412950087208493234448632166590971904 6089028617337248894096936074739712 4607546021007097606061296327852032 -918063438636166806943098393342246912 998183399036296043838996922499072 4698532296282527288487680745144320 -18312788735624311560420542499520512 6595909318824130735461952997294080 7312324816395133663998442358177792 -266121214077683816503033106100387840 960847374726834037753340279914496 2151895441705056343985786607108096 -58030603253300542928994677150449664 7474902528188461956697669087789056 2610898300032204854863400601124864 -829837768428175113378458677616312320 5372996881116618617426701589676032 2187969371833007560607039276187648 -362593402378257784382585948243755008 8451772043826465833257913024512000 2270016345882050410894093749059584 -238629964673665839200969070208876544 2880462186508394429281194997710848 3194276647790322263854804314882048 -210877398144872788696746181638750208 8375095220354506110769221290950656 6745095031203793054704303123464192 -886750261142030562504976687154855936 4980693318427487949611081001861120 5046420633143973868318263577935872 -549461013273133271071943508617068544 251876103049356294742342035832832 5929836754287719193808209717493760 -380656960163112159864784630428205056 4472210529150322951283205379981312 3158424683269440601889978376519680 -917050272083889264423582753246674944 2156609650235061754596462470103040 8361324003367412431444727866327040 -922972568056693771077623039481872384 7535936127469359419173597607886848 4242186991015502140105691813117952 -650020737765763385334673677360300032 2519710001138266659490189245677568 949179334876289946917129349496832 -900303525824579150778184876402147328 6320780278129112757930773647982592 2470222608324218666270239173378048 -692393815879815053820985987691446272 3831587758167637579793500154626048 5697236190964852925694777892012032 -124329597611063159797346748657041408 2954167944688403893043571892158464 5538752354578625510245572441800704 -101246691404654447043900596698480640 6599151244631865172140079978643456 762621771293776314087898741735424 -570361510884669356185631192577474560 436879815186048353972322618572800 4733438339134244925908016898768896 -382474047408102512167435060167835648 3868912186595061284033867580178432 2952948278148896424239996577251328 -45822121963276021375835431646527488 9991435166810536904564963847176192 6508728847405431857807092806057984 -151604554898366497997678579919355904 8719337249586350075785938278023168 9880995711154826730808013238566912 -312270788575540860967368617342533632 7775173645093984344212309356314624 702606085106087522964653094207488 -909692127489281398084379450475020288 8492728161508379242361192334753792 1420079106522803096396893408722944 -938580218986323541519758073092112384 422310320516524201574020583260160 3302461991261663013991251034767360 -316031766104271387005826818660892672 3586875473877632047577032707538944 3407751532007500000852856191057920 -280090356569632005831026110292295680 396266018256786022966805256994816 2957573261093195534418622873075712 -428924734260626900552821653570060288 9793709420082548406082111719604224 6664074345586383963324596841611264 -19448192857829677576122413829062656 3337253220550461726078426475921408 4841684400522791293099778810839040 -608726794617252069214799606503702528 2471393941822302753204699507195904 9703910102195060090854147341942784 -155488420682176425599327443852722176 13709590253106012406695237517312 1120635412009587654481821560733696 -816031694633679034877208400492494848 5869379533099028611619336002469888 4381733371609095655312299225251840 -506441090744351879863275534250147840 4934181018913210346457620864303104 2000413361370067086258409960374272 -226075264585107413550285976024121344 3301006598802976558317846686334976 1004274833029318098296681655173120 -471035291425839458140065622992617472 1798026129373872870942493137436672 8641655518072079806542790789169152 -318532717142933000369108516824154112 3445820914599119427115952289873920 1572125026517646923983102022778880 -891953544835640302566771909879398400 6521944438805503801010352050667520 9450258963378531555608291486728192 -330556149357603356469252442766180352 707967218646754836942972577120256 7074020157080961231904906718216192 -453452717717398536013514976624902144 7584315098364502852918434594816000 4927256488911528049531946000187392 -300563363875664836925053917043097600 8023261751076003050702429763928064 133368269181371881039539583582208 -543230580158700018398884122555580416 2240691160969713906464943637528576 4132136584986887704800182042361856 -30474175661812585442291465293135872 1799549945762499032435470458945536 8953441569089442774682460212953088 -611459730828698901984548967516471296 8918385370870427575803828976484352 8105663409230601711289115961458688 -991043344463869292054153952766197760 9075408452795377452664914362499072 2187585707179595446238395043414016 -832220402055917984944220098309128192 2021578991366951323073932179800064 9606808771328930703210318267416576 -895085354785669707583304255175393280 56567578325136399291711064375296 851166137696984459251863521329152 -779549688771124182522380493462175744 3088804440576156905465382210371584 4132493805048297241504439129341952 -688157660667399368067103914215866368 6075252382245639681955370046062592 9114049437919193345913255282868224 -360735825378622131438914636395577344 9879648457784573011638180829462528 7987167901930579298314392067637248 -122227922243769939423374928609542144 7984721656489188421824306774802432 7697173871384793449866259404423168 -501118596508036122465687892754694144 5972412103329443608708964813897728 5355009324402175915260469867184128 -183113007338359273285782838068641792 910115898677031411842277330386944 5191882432765657596420008175468544 -278269861674563245854075810924724224 4541204998491613045297896579137536 2454384956016570515681246942593024 -206248842831799411204513929074049024 8329726130405245378553356524453888 2915112876118546249335707225030656 -546718777587738764764269831671250944 9401034861601848359360842747084800 3366711945239344782054579285000192 -549961473013860726999632426708238336 353609694643119729281213745070080 6981575818304887590516435911180288 -767717204195436838969282537709371392 5039515747330943489772352866091008 6067600907421315888730120537505792 -647472685463246701841952127380881408 650269604627127840602828258148352 9526233350920431672718006067134464 -670442234455389121306837166105559040 9669272687808010346286273693483008 9420396825441595842088363634982912 -882998192034232949818159572346470400 8655420901781427416273734749650944 3841538526743398635116940312444928 -248412548270615128735903283022921728 941618525486645699583300419452928 8081915267718414792338360718327808 -714014021065431020764679330471084032 5659977443303740314674326056992768 7383836015131840304660052071940096 -634479522362878884369078256280797184 2694716710071001143379514741489664 3901808167765236531829676498223104 -453351293656474852336642108724084736 2321715954425638578798666398564352 2977130383735453813569862254985216 -723540781553117034680450601214541824 3224309596902777551427851866079232 5946993279674198663849986012217344 -788464984575950576428801060228825088 6396713664064132591518921743400960 5285617597465783549419547065843712 -632822539048548752909226913841545216 9011200105181636403515607853563904 2747317592956272575142053197905920 -195113460392920989135132756214284288 2451053123087786323170236886417408 1288111329743608539518994741198848 -911768913377227203862490551945265152 6799384211076804194967011366797312 7681574594515402773241973016887296 -565335547888961621447366423343005696 8059583408263481157308713810264064 9969959225206758153670817612824576 -369459672235824676933562642166972416 5997343888041411293251309066518528 7454867331436353971490054270353408 -508113744424819953322893972632240128 7121633654538002791738641993433088 9451842350978686868984081491689472 -124864368065937609701125646566031360 8751546529227141094159041098153984 3995291560531746916855725835681792 -822759775918050605665829772511412224 3838382688860868478448869260132352 6417199151838690798964245440495616 -854751274264758276439737178288816128 7590659302096856758364858610614272 6275942036306282933548243535003648 -908887993634947974513092213012955136 5494530556009397159064170083123200 7345159599215709001631079877050368 -622124558258324249566856327028801536 2447054740878365682285863373897728 7331731562648466837218048509739008 -810694546608804287652509803203264512 2504345512294355754153962698178560 2944773443241665020533437456449536 -249323867808607486053840003759341568 157476797647372182389343519768576 7925799597317631690234066328616960 -417205414902837550460794816771915776 5829369315563402228479374307360768 9256103705951232506042111611633664 -865378631762005174422620286419468288 1377112993176192971308383636291584 6580249806074129080673275857600512 -223463607646687455306289042618843136 3759971696141516141309455799156736 1015453872213665756482387774013440 -608137588189416119752470034382848000 3785085990712832863066268909961216 8035996715544107914712799709757440 -267075661654923323701901315402629120 8860093179075529675142213062885376 6533085999383102397573404540534784 -466680309663453875090025202856230912 3123303019200912959828577308639232 8266992736555734247777161697034240 -153499442809426819611969806401536000 5859063178280669500277422456569856 9915652039044602623217033107472384 -830850508657211575895622011752284160 9328431240862507025329596844212224 7289969249407002069384267877580800 -889885561862884419637886663767621632 9110938721691715401441271212933120 3553227351352063368567034971422720 -69119023984548360950188442298351616 4641067124674037000033362119753728 2343221803709534926513760553140224 -316117444813657372820558305772437504 7254321798362311896547444492599296 6047725503092049194482573783334912 -744644872277104654931969942038249472 9854499757854361614981469973774336 1639459160090456873205700222779392 -497430891131719644574989452369199104 4015436687828364089076118502506496 7886155183993817613289324581748736 -855151649939387801010269620086505472 2033470154291678059532213448343552 9087855715634695070910983601913856 -541520049702924534230958831510224896 9355376602547123404631762842681344 4570292883997907209603253700395008 -36910735582364742958922292885716992 1119241492729322591049737941549056 312691899817106093173442537848832 -339808576123955956784469828297555968 7574195138042266047445982045536256 7838702418457515752858990189477888 -652908821386033334947516403591151616 643937702887446633798637065338880 3405910539195981896988522562191360 -815012498401830667292206062335164416 7099706666650556602268900583800832 7814425160362956444459497211035648 -263276658134634593874407574233677824 1429607354953863406649062562201600 4037103688105163548664337400856576 -934635058363563115040204581542821888 3622902655212461446643344285368320 62498622691297417425083613315072 -530202434204428625026039098315374592 6553076722282976061904245791653888 9022003657000463905079522786017280 -862561947395272281315344989321953280 1396261071999800013785710983118848 4105498667420869355310126716682240 -821037034271551191263277520034725888 4914436308395073023914744848842752 368728184919146446704622918696960 -620705817528140142275851338448371712 8499467258907015184525449647620096 9443865823295906493183444436123648 -995943732924699528865289914120404992 9662769081493074629392081897914368 1371451986443555201209581141229568 -222060356936175398189673814410919936 9265080121967612161683082012786688 4448516008956279906713365714567168 -696470140898681042708605601042137088 9316932369631361772623722130178048 503165633739287029190166715564032 -765642912590920885067851808353812480 9789059935954689727673120912834560 2626179154023653580380002093891584 -80815290111637452350723903197282304 3739115002315199509775731654656000 1091816460476897728965390144372736 -727490769411388197948820947355041792 1015370756182741829733005341491200 7897647661684121577302805358575616 -932371593878413164652315760027238400 6010829012067324204346527614763008 2100106211474690427886769115496448 -552957160361007989964219053932281856 5904835589281644271893924288659456 3885456514704974238852190079811584 -693885883208015826597450109637623808 4217735910013785707686119717470208 855546262674249474269773891108864 -380383631979327541921007476634812416 6305708070027664565908092613558272 6789300541214084316952800769605632 -134151766646163629400434776507154432 1780766828349765272286136276877312 4169649913762085558347059158843392 -717271715632742157679583474955059200 7026205397371452946442780913172480 8974234646830144458648675015458816 -534638758319172037448937182544789504 6942635449734720652686966688579584 6671342499655373209891478291087360 -355752321652284487795114215777239040 4672346078907815092878194151260160 2372097951763496134205148718170112 -951225230728598478348651653438111744 3517533406268407945494642554830848 5099076032351321790150687345082368 -135350493082203026119279314686967808 7759331212569714157854480383606784 6258583694509069260293920018923520 -784595832851253174068485711378513920 9189353119191360847940062413848576 496203953610883620997659818459136 -588705899954042404598654971611709440 9038292496782709283260597742338048 3084247434861931077923001985925120 -219176202059873296463953315617570816 822438992199821073902410500407296 9581927057307266607598474509680640 -111719607218121082430400430285520896 5451992679469596081884013896138752 9320954247509592135048307526336512 -186447877352112451619652046380072960 2151495485440294134618022226165760 2764640741849060012208339025920000 -288371688225265634981977112862261248 8565761108900602028106029230718976 1391356157852092498002517998698496 -764702863310114904625688315435155456 5466000207214252530672687674032128 9633821545323918999960005988319232 -895676075729846014179322893426491392 297879590338366740484079522676736 1580873634491971360714697618751488 -380401794173823774837649127822589952 1288954924079211636760863322406912 2973806094105596922225450259841024 -738099835283136379134524304761290752 4143526561868385310507607735140352 6970083128750194235537134838611968 -771215994317796898105866441323446272 4669597530328786842713614236778496 4523716555430677258544991231279104 -87672227214906137402438440923955200 3489007441588813905109601612726272 6473702286694324972599039221563392 -457277858091347240285015899220475904 8205691273228624838754927122579456 5413358669672589083322065128259584 -834530348410245958751908078163066880 876187404353014780867945330376704 6194517774727016414639735552606208 -56086406257035667582729984491388928 5541256367565818216765907372343296 1782408391806448770023194454130688 -513141930116982755549268894893998080 4374447539730992923271518664785920 8518624770630800905841595721449472 -324684026461452048725071079151763456 2779286793242448594266823235469312 9119940562971500317924940736102400 -132122468469880777665388226637987840 8563625210402833881402165491138560 2549323203949765831371441651580928 -663643244491026920946358660972412928 1280558656200300436824921613533184 6161842767463019585926406051201024 -24345243438902210909260314836992000 6088314577816126646569803662229504 5878585170982933922583329336459264 -965437007522131741397321676505481216 1171459768678920735269509314641920 330333583702847617783314524405760 -144216088604133279238147115990384640 8725144039780389437674841496879104 4783763109270714317668595538067456 -567873339195426308245767181427539968 6639093068917667578009911025467392 6933306854732535787332002721562624 -17130897834097772535191768527798272 5458251831471606094413206204186624 5292635447077834781222605697318912 -550357584251918425926251811386163200 6727381468009022046141088905822208 5335896074666235123855277063929856 -201687051228184444503057288648458240 7371766473157375247182784679116800 9994963299142679176005626366001152 -571865998569879826837520559598731264 97084306965654902980939526176768 4890470654460625529789140399292416 -629852539381628207399833286456901632 7311208984659204657996967354302464 7859783710543718508794386283757568 -975547322620932223407719150360985600 5580840482044590665585810091278336 4570375539515113063697319634927616 -831854537676762128372412337954488320 1517657905137523714764583643119616 5568265141180692851653536859029504 -188684264321814246507822854782844928 5563224636389592126415103386976256 4244744474816684822365272799182848 -308215721633905471013880332539658240 2428254694812905317412443229519872 9833963020399507279100632715231232 -265278736944432866313775621349572608 9256150652794889038671933809360896 292239346872352361640104604729344 -249093010239159195346663048027832320 2045415403704879086069693930274816 5367617606200702992258061089898496 -949824271104858351870830175823331328 8574085769090904930917408781107200 1637636710860084108080949529411584 -816041946579576799260961572751671296 4167130519429538673465394081038336 1697806660253588203344327876804608 -928566841155423364478140751812755456 3140484457134087899733438263984128 9620820801408974987853840173236224 -124184890774626196646456968704163840 2302724639426970477661054589468672 6332882039509523496667525075173376 -124010384712457233814812882743853056 2490330468878475014912293900124160 9612005522571644921116559933440000 -278044058462543659954047410977636352 8009825360693212364970341020205056 2233036447131316797544191544524800 -730435594516884956125306927441772544 9725930326809763300756701879205888 9679789856574769990750934937894912 -955805728775727485472755061461352448 8450861196841887914749292749783040 410274665079414124774527554551808 -896217097305934769354695488841973760 2143228852206562116314419586662400 3442140709670723476448914071093248 -476087209083542058257108039739899904 4368839136592101480054259653279744 2659740002080987632150481215684608 -939780240181999899552912984560893952 7097518729478748393788612288708608 9624567207529421639400421368791040 -746408018872563480954409966555365376 8555093646628026309850543878569984 7433014880086045029316589541916672 -869385200239349631577143287457251328 4633759048238781854200082745786368 926858718248078460169413405442048 -715976788174188323517780936664023040 6163272475247528267515070183899136 6758488444442928023422947096002560 -583302633224586073971857441454817280 9699592718374142610703930003292160 7628283391851863113026957586989056 -73835093485523016206818466485764096 8835002664159085481045416686387200 7147383635949873196891203732242432 -134639745149455637445730787674554368 293941606723363685217771387355136 9390993914128631089805218681978880 -430037745337050337368531162695204864 8189974844891000548923378042404864 3779429940724475998151516700540928 -323739850455099390023302369471627264 9739040889154203534777412843732992 9274380022012202145489649645125632 -560428279252213696432147791066693632 3033356407329592943590381891616768 6431581463890646662162328575803392 -573660290676043199499121454586265600 4662217932140446446769113793560576 1533850441205464177663037696638976 -538754216537812247650321804753371136 4646121850290964221334197861613568 7141248589220030999517503313412096 -282453255366119753650437714083840000 6084362037186244912668796675686400 1817448094258752570234641261264896 -275500878486050055544506175090327552 3408315073867443717999595607818240 9824908125773696606485877371174912 -878713386236591264420037974420357120 7364867520371466211176506420363264 6363884910967642304457664989495296 -514124063259381118134895519083790336 4357550985088893365845238711582720 9352826935269491465676870228377600 -651471620798982608450328794071302144 1186637127108256510881695684100096 8559196261190312403886321696768000 -481308472330370172472087495690944512 3949829709786995485122532296622080 753065420452527515802293705375744 -274914178456741836694766998182166528 1978032275473979817066379633229824 226102771816215850150825811771392 -742644466699664736076744036437721088 3442195965835961584721925951717376 3029568786289663669042890561028096 -779569968156332935146574835554975744 4356789693215178816212573205037056 3484503194473116563513182397661184 -775879451514163288389541461493809152 3571276786503236487783748246437888 9788176921208093608120951618142208 -278725476128240984070727875411574784 899790691140262467139543874142208 192448493637698046431180298911744 -708672393757423989528859879864795136 6521323123294932818161684428357632 2525673177526636642780241006166016 -19715151689687591252609249774141440 34425239393089731525654886744064 8248244265598186180607959919230976 -184695047722988674654002537186721792 5901555985368412821774363065843712 6397343012619254466413996336480256 -992174929487860675880117873909170176 6564345800622065399662180835524608 4541114380603315612876380267610112 -520561148413833996887687372195495936 8738870670800235254563576351817728 8872066685903700195856042346676224 -584536909003866945617603538219696128 4225100340169374264748633663471616 975030433951614452469737659039744 -563836930092236220296991917211648000 5837486815810845855291080716582912 2286573003612339003010658074624000 -948267255150593705876020114669699072 1705021532245898944312790860431360 2097641714147238765006386414747648 -573175515406427304044980707535093760 3841134691370771576649859035299840 8960590691246184607416623852158976 -579192284258589566678667157319974912 106755953406417247476231205552128 5288867775735492618069837111885824 -194789084405940551671080660743749632 3923487519185287762606180936974336 4369723629576813652106681767690240 -80525460385421015308929493538701312 7803780280440784407343979823104000 6934397757055504812047376108748800 -242995318762797253737292405409841152 535807574139790196440738044051456 8788854401975832297073477433688064 -508755252464987931331747302562856960 2427773083889068848875087293579264 6876575950223985887179390199005184 -375274448212369704995568196337532928 717690823930861667500057862078464 4458818287192154164154075369701376 -635943093360331036486010438317768704 5662604120109929406835534770208768 9162304578215002184620076376784896 -707571077367458865930650696885993472 6724996886087562360203587102965760 53483139319240379626813231464448 -348733838182731121916481914433175552 222458267852342358629373959995392 5609588166734336999736928163069952 -360459757384244891098316697373769728 6768180126516800400225513043394560 6298276104685254932852247374069760 -106872006498221852827869064214872064 6054349627266371276860721492656128 8787786785061487407480077687980032 -971142606990364633075666669019332608 9856813514976134527882591637340160 1339673398130533179365180714254336 -740137537506767606590910725743443968 9662096249182412105714874336673792 3736741807463803470166171118993408 -323047780900594644793326586264813568 7326346526576476251766833887051776 9607760143988622584325020672065536 -854470388389960574353658297607782400 9795095103767102484273920775028736 7606385611638726784231997704241152 -914259342872892008191319910761103360 6756785311110862884177333698166784 2945610958702603202024338138071040 -977481471012633916456716698759725056 5352247716965059494002929700962304 6970369983077418808697479185301504 -630644113787923205226029267917209600 7737363691298129377245414650019840 5572086522829113356999708712632320 -832350609069930555947774614559522816 3659835952465828755356847668461568 2153059861236562993332739438018560 -134181879629115705623775506134466560 8821787668358832360962581025783808 7573046601811384579919011586768896 -383655055607999805199560349130424320 9734728600216083454531141753634816 4379635057572278143539979126571008 -395374864319591632655153193277194240 6161222085941408359741598835146752 2200492213509146519531631075655680 -674423151902736539946665529894240256 2989536594369094155260800320667648 4084263147465581384439640446992384 -966386775234911866287320635545747456 5053840486835220096639980489670656 9921751329554516412075535115485184 -604440522153789825095973922437857280 3794380407482577763048608757710848 987596932858541797022905520881664 -43263757604567217055122226132549632 8825119192726267201470912446595072 1524538065692956856844337777999872 -34387984817202908070421225692725248 1337394285859747343043380132184064 4109997761345949404818049710686208 -81161297898686260887132827633582080 8653545059963562085083520364969984 4908049884228491260463276498092032 -381036541038918293005174327134388224 8892965630844363872708766971461632 188365939283814673495442266783744 -636048637246782462978029542403211264 9911721222702121092718442426925056 9168113821481784799620915076792320 -387045227736298526593066732559007744 1783274896972481985551377799053312 642722646141728847884274085396480 -54939076186442610180648902145867776 7772544082329036216421511325548544 4705228913836165741708614146457600 -932073343239866834574921114639663104 9105084613128237487346785823227904 3095806723157958088905883905949696 -468869989182323037514589793870151680 7334224906885884552257662697340928 6668640049014237897508943678144512 -794577535492600694915069917679058944 2391232296298497274090737025155072 9303018473110836040320573887217664 -849486692667254649329111956419772416 1336727692085143660763772830613504 7766270820012012327145081214599168 -314542841129320792346109561886736384 8578316400317537457697496728862720 65852886018116462337032714190848 -93270665229675908146186217488121856 4356350350271951598574225491755008 212145879681570336261682025725952 -53955384367582941579794286987182080 9958159965014518927222689610334208 4505105999207985871578706552553472 -872784597305808762090010554086195200 1941072019463684885352342074949632 2097608045579096161007913624666112 -554985448554794542430627192708792320 3436596625675669740624179292536832 8211419170397681681897724447817728 -387481229584768609873191658388979712 1810379430904830828045800671543296 1485167262153381294353120275464192 -238386330049611023795430804693188608 6599509390377321323700492213157888 7790860567957389361808865117601792 -810417578742880393457418329363841024 4136676612897806630093324942311424 6375828933844471704439177730850816 -547628432943527111489096472785321984 2194833368154168026656230837583872 2708876055657754704075192159698944 -816620153776098886510860116579844096 743432021693580774882123823710208 5542026746993420929013592077893632 -527308832948322726208571085424689152 6731797363020070145565136875683840 6073125006382055450374039639425024 -873018846270226323770668780775014400 473266932118213179859321776766976 4836908576019235220139354890436608 -453362682865735863195790194329518080 6718387048755911871066386133417984 4288929204694089082655851386241024 -501521893094272695434997600761151488 9672940469471481110611041816936448 6808706473898383840414484473577472 -659631287038717577234903183673786368 686534102234264955907078237454336 1783951843226488119927665772724224 -108040853203114323511924938627874816 3996211772951446909662977771700224 5310484815832798225738958465138688 -71937181146989013395132263912439808 423669542742811190678425536823296 267650955892837414595858471583744 -161843376483681848870558199980228608 5745440400903152046107469386088448 8418465638744700241063587069558784 -723735332063749681581705320189657088 38858890439749626817309805903872 5836712976347541129953050672234496 -148338395258604288581334353498341376 106422998088887288913979915632640 3139589650059116514970781513416704 -792458027333268572316509692946808832 3726079208290960260972212389937152 2519868444304269374471254145236992 -668491345139563442821746594699804672 4709424249356586347361751346970624 7183928408502510041162256301948928 -619394691709540101137464808085389312 6178702884349842091289883355119616 5252183878777890825541412051746816 -885898531615220131490493840228352000 1725312796059233429541078276505600 2262026286617811911195506277089280 -861145798174237762603855504480403456 5418851045077828243263097701138432 7616482386301715303989311904415744 -828091627283536785968914212071669760 1626236607177424370138712677285888 536639589459620223836274743574528 -262382488048634769426084794231422976 3619348063026250414285712835739648 5564352935884411535052459269423104 -162917245310176629147750269806706688 6931384287092639162142295072964608 2726319521306982226636218117914624 -583575054171609355181723609821347840 2879226383362319024542917060460544 319835022929878315655291585167360 -886290672548936849628487674367049728 1348866551389282135118395455045632 4827586873460749640869221649874944 -478276990738273857943190511602892800 6647517056919547467688882938576896 5505176226529511169460657484464128 -533968076272900190566190090326900736 343417788995007081668978830999552 5989375744854295743779924015579136 -517477500160423640225858129519181824 6276312150907772643273604465688576 7952739853358014476184709207425024 -979259356812209411645032196378460160 485636886024864103728577006010368 1471724321620768544463408745938944 -505955182351384217259577333939961856 9852578613197176750247065973424128 6709939951873065562759149515702272 -881320015807785805234304213565046784 1617137788201029755387166817517568 32948907140122168103714024325120 -85387045048934241594517213425958912 7460539164975962762891338924949504 7697221410775858393623675115929600 -370528470914976975756120479670206464 9564380169821795716729632016302080 8898341560892000285417372599189504 -712477621873918912836421642052698112 3707862498778250871418846095343616 2409306849755928665543172081844224 -224999559814901603111841188508860416 1633942582905770496450968529403904 8362215253709720400928300179914752 -598259267313555015672131548174352384 955931010544631072760253145677824 1176859638042824754206268643606528 -962193264853411364999148320711507968 7987895955069753443939270881443840 7914498796871258934512034233974784 -829468835156488805355877607550222336 6005814109067288762287511415291904 6413721438751543612474395562344448 -962173631082951599016143539320913920 2464410127647562504896213818540032 4626320506723048356747208367800320 -657182316794889017474492630453714944 1152059835038590822060140202557440 9276989610504270563164951960092672 -994158486340622131474101359408578560 1305162012505419335970974563565568 4659723399755799191638473294479360 -755135224469840021907537275838791680 385715125666477464846088989048832 6853737862046019889777436719579136 -921970758203458523293760518621233152 1014581767157149690373509761466368 8161685167997877025064812715966464 -6845727950618070912669388827000832 4703065875397198903661223626145792 4455727545237553623954577801871360 -796582453168327656637679936263421952 7968985975407370309526105148620800 6975705418130059869653206525018112 -471550890618529430269893043671793664 872910910472579746383389339418624 7378829063741457365177147861237760 -732285289798388860675008558866104320 535230925875377707940608905052160 284285189675586708359179445207040 -28799080603253807788702942829215744 6508975559792976512201976738480128 1543089234940801725185137055891456 -614958587816695647501463149634125824 6647504193059580717374212205969408 2431467710746242475510138144817152 -742095368183872895147028439183130624 2690691405889594908406856401551360 5745895842063806842597835202887680 -895320690258246701816243893655568384 9996115639307338783181337578700800 3071047082012082313590388650147840 -947357299227750809777571392563183616 7861733738895812607521775725576192 5289124060765932791806503967260672 -639589874218478839314352067915546624 1196594227864625091955635915849728 2937103019577888016680948795965440 -757270320179500084796555128121327616 4732919229684982454719527245578240 8123092796849129702053157764333568 -987497171830652396540669118476451840 1631213449784741991659572425654272 5639599429948534746833253140791296 -305185335134927479741243531456413696 1525474930488349888475131447083008 1210179301481426469312335462793216 -953827326731317822516287843568975872 8096971245568745787612687012724736 8726282768532895471338760909619200 -729359752035654072089530594406432768 8707013407431445252380192743096320 9433339781892060218444671268945920 -271922470464089749935885393713954816 8169204153054365870962309116985344 6254506810719127078880313736167424 -793378758446034080558107026438225920 4351856725807863109921095699922944 1871942205075918554542383837478912 -135218043586486949300215541791719424 5999685750625783394409072834904064 6775973891034292155231098659405824 -163604484099031206835120177508515840 9144779981384852151924173230309376 1576739148922446854704340702068736 -398274077982181656420275807582158848 6016640918667036811799044644929536 1287787423590823954545279351390208 -406806718193719846682735380111818752 8940620897379153803745312162971648 4050748498699715312719605545304064 -93831596913082833824740081190043648 4375024888001213940551348614332416 4329876191776359755521014854844416 -602362467116406728002123991214981120 7136863813007421713482382009434112 2750502580205290394457346590900224 -96168785644347231723270468741890048 1758369935931336417743254132359168 6434839570798916556911778176434176 -13064940231834613118079915614273536 5799750690993279132985332858880000 9841607783964400260510658737471488 -851486578530809114285243296389267456 8471937920575854855347534729052160 3254187607378900235707552156876800 -454570046905864920791015331326853120 5318075971893401432198255795503104 3947857212647725348249187855106048 -983643351554285865550214487622025216 6648069131878729494820454339182592 2760665118517701345418394717913088 -717474834426756402584523434469883904 1785952785069826272604663251468288 7631753320699776207005381954633728 -902755893143651229516628444103835648 744544757210563141223138205892608 5609817893609549546888580273537024 -645414772404983178933780696350588928 7224263241353966466584053404401664 7623259207904017280436196295573504 -218702046168846290467053658064289792 7447633077718574813837450601824256 7660782787805041390889850558742528 -552062867744024543292840860132048896 2150193482706368951244021848604672 9162858811499431924060715357306880 -335488332008830588518640501659795456 2112012173958801142638996950614016 5277050834681725458929713804214272 -826856903710826532967617283640786944 1707207040920255057250035886456832 4975623443248272017252087041622016 -133282140991816542472732277148221440 5938287636633879361018854203457536 8679504614397694892942690277654528 -669418356513881932812184494828158976 2936601089034881610034673767940096 4303811837017245682103620093345792 -35187804089632680694812104097529856 4205741607634675469183373165985792 8385181372365886354043998371315712 -551010218659590598622553449659629568 1926311099251972221224619526324224 8112681806896094985004652716621824 -299109681386754465413646333553672192 3412244166374894240950593081311232 958412192532091704681500061466624 -266538694578989279083774499163734016 532980591445299316130121638739968 6030816053909868311113685379579904 -600074435349411863107153013428453376 3103493882080539181335356484091904 7066940071320245898298270412701696 -664787927996995557838479764586758144 5864503479675138076891423721914368 633017120872636205287645764386816 -945261621495005611801246437625298944 743934862502583674626941156065280 6622553144841980711074629322539008 -861470091040472229412806133100314624 9809153752210777584976858458357760 8137635262088269223574978244378624 -685574648666107180819688790343811072 2242644511218993811793158606946304 7530461655551474929259462113886208 -129064602972281670529198844914171904 9604767157962935447061467439824896 3879113623444514862859886817968128 -652714797184369182230999527204061184 1521772302870944038199569548312576 849182898238052390769538124218368 -99335984681336885368935171061972992 1349945108673823383165281111113728 1337106195838912989819550193156096 -563098061991066324964283297078181888 7725298317074199850459405790216192 5173739460034900139227659966087168 -168199129715935098428043727103590400 7350237869652030565452921140412416 1566058345409925693165929211363328 -146928516783773067021064524978454528 6738232548457475992171833464979456 7274857970897463714318052795351040 -588514718453382230184496643807641600 8190360525074530240801534071799808 8637081637356335067533095513096192 -562027752020776872561616383966707712 495525261998969048147042240561152 2187479037172039455806053465194496 -564837268979379946693051599623815168 4449357971497199902631908442374144 436404725180130088692759929028608 -462584269293645360964871393730625536 607965452290241551637235814629376 2948652815061715246166265328304128 -801619633772049105815884403482558464 9368515225860198763537009735630848 631996555207936473119434874028032 -466402562306831209675529199909076992 182304838147898379452964522688512 4721837185063506988612081357422592 -476183318400351781914938391463460864 123765032856698259424576131825664 9245792528898781556127210347167744 -688967501088993154437491070930518016 4813921503754936689947115683577856 5800651996015076684240860232024064 -649557833372972427280055002149683200 4189722272850567471719902169006080 2735443390968587941279616146079744 -307520663692284942432748565447049216 28050019664085922206550461513728 6482868378238371493761004938985472 -965101687359312144524074511767699456 5748477727299170937837936193830912 6795408254608805018605496211341312 -858648672363677521126402950403457024 3227602497561989228536728444207104 8838958276432623273498744385961984 -935856453427694279020836694421143552 5334873441268425663507692185976832 3187716067579942866811685999476736 -41314715272482771364023965419831296 5915460039073832598663853510754304 7698307012456467216062465133510656 -38486237918503875532081674814750720 9789935944694361800450208033669120 2828611962083790194917446539804672 -801561393720655550595436452738236416 1950027266955131296266992639541248 8185836314447392264840957529161728 -90405776691142631797423319942168576 2288668712624046126285473663942656 5297693026369203810899015592050688 -662711927584959256738950998074064896 7915711286981008346336240095723520 6385748508447710695687628901056512 -922009707381951305358709938949455872 2343082518194962671750668120752128 7571139393993966287430966522675200 -583103399624290951888617923953033216 975911041723636051520788157693952 5429782961959709158625851547320320 -452095046854382367128655995783348224 3814246193070782799416941269221376 3759577215442572657850420098498560 -10351266523081465433045673017606144 5204695702367949055207045714673664 4699980013408594807485517334052864 -458516913576138238350045339543666688 6923552726249811416464611644276736 474659528165145070431510481338368 -911625839592779134113318129522180096 4439682611714794214069033423077376 1681836108263181575847633439686656 -354036736068948730013242490133413888 8890971882297046559051898991673344 5886919448310101019794616413585408 -747353668139819664875549744494018560 7397090047607653412018883261366272 2728253434575384235088572500148224 -884378747286709361849854361715343360 9809611070763032311335335502020608 8768614902007718985616850608455680 -797618430649345936998986713940361216 7680353604742562275693690863222784 6991603694710366394096494892285952 -448669235522336932517389635659235328 8035447653920760901027494442827776 6457420431396130101376388090036224 -449505269842941578594748753854332928 1756486547762131355780978554437632 5273805126463088728262513631690752 -673296949258627518900824871922565120 4422687410796461125175994614808576 7550998021480549551407548613001216 -636474058821965302529587179805474816 2984290470837680856483394802941952 4624553763410193129145011892387840 -562766369235028642265179137066926080 9619035674176368491273881198264320 7176101520417902412161451370217472 -326922964920193916520195742268129280 9723317717272834088180386629681152 2973278977791276503494394839564288 -923372147520319566505997588630601728 1367191854399315601122278936412160 9550343462030535300283541269512192 -643124154183657964048555080610217984 1005250430595534828819699734675456 5578863074259206050296222835539968 -593398507536188696602035115113054208 3464155905419474960086819133194240 2280874986495696745975205628739584 -50082834492574113553974572192104448 5230753439512184459926630624657408 9910056671636723159649998551908352 -551048914496093620311574891246649344 7689244353510100256655892822360064 2465418366744299317602022166888448 -761683787504858774489524441616220160 6661029574192598653708210848923648 7203113691104043798492959492538368 -359107389615440255783643500291031040 8305959549717904051501394217140224 1245636106820432469101250718203904 -950249325552286219762132631540465664 3813506568624862662437170057314304 8344535781207667261977993441968128 -233723873175714375196617031163052032 5760275206796773365988948977909760 3504236554706133133331494948831232 -381852685182129692511281986897182720 2317306030830856790682953828007936 8554345450397342824914216426668032 -41688643096239793300304691208388608 7179577862725334600551878218481664 4150718252858057947076078369505280 -183984603422239241971745536404881408 8693300840628446597240512067928064 9101616012170269909271223507877888 -836725392978820366781329687376297984 5340215843938850990616569484148736 715879813973545708179427157868544 -953204124726558739019997696623640576 5541221913056345261953491327254528 9301463682167115589903629795983360 -960368154954060987151616674505949184 3584251124215320296920844496535552 9318223683696829547111374793998336 -531739697387388981527184658422300672 1161917482054517513465889623638016 1129482635580028597094041004277760 -879643712175279683346849188125081600 8974827443910778276442655239962624 6892169208130728859601377299529728 -232775787745446725520863391016550400 8284313748646155582801570542125056 8701589168917674309528355132669952 -677289596822919275276412815130230784 4996231621021316096077611904532480 845628838687229963917446210387968 -775690021456464537655943992830853120 5121068406257579496812210320048128 3518478040040968309923527645986816 -3532214475142625162028312013307904 9829467058030100643808887122690048 3985532648779989233535539491110912 -764828250293571569443700661291057152 7158649773074795171749334163128320 6853402731536980896031637071986688 -279538957451718402090943262452875264 5101137781099800027695487706464256 5424876704659990808378343180730368 -791252240679781564513997146732625920 5572786220252154531094174483087360 5686913958374776763858181064491008 -676480124909084114838615305507307520 8036844589589274560432811934744576 6668071117524001239655390111596544 -902127909443506058502255017086418944 7419552187906380171337412525424640 1537938394346881635203260304326656 -195628384685846683414784524857376768 1597254065392940449685151011569664 425369351125278958408878729986048 -397711675492942895609365208458330112 6773105294266833333399832953356288 4652885694470074686776160072761344 -508801413211731379796983323767603200 6059569666970125806489289904619520 815982266711698810072129494581248 -476273498167994432720245698313846784 1387592089340582194509274383646720 872531408913090675547848426127360 -802959840350784832388047963345125376 1222159412110625450403865760366592 5367149124652426034802324817313792 -591007303940124825175390874530480128 3608864177488001001808467494699008 7748231338186753170971171777150976 -631386249838270621110858865321181184 6379169252622495477317462558507008 2856687694048753328788576271335424 -801514405327757268404113744624353280 8260979621510750869913698381594624 4860583074394019467542744166039552 -460542641390989821366240706515959808 4615454362647829179017210907066368 697361111332762110158896686432256 -454010997011229717277216053129117696 7318309707757677723453095390740480 6814464527396887106182913997144064 -344195284136033978898448863425724416 6335809771550086428792624164896768 2189838304340907076676772916363264 -54173390811833126041400712250785792 756246804870715493070695189970944 4964344133702034804767735697899520 -592390949715579842287200265729736704 2818320696339783693471574287974400 803571384924036391644371951288320 -726921034812791035826391975232274432 101045890655457925878692056137728 3415453473623200271922882227994624 -19646307134810721237124711343718400 7261752170299180947090469535350784 1918010749903716782489332512456704 -414480338329462005479303729045831680 4007062558652403009047845215928320 4380640180531391375556846764949504 -563701495274348024998858637602455552 3297976210948825973513403441872896 1224997672968566118243258364592128 -266238338254956480823617631310315520 8911566953665622226812004321984512 3935044386692887018348885630255104 -287978993382504717774897661247225856 2327150565337488626545288617656320 6302724361897376254261949796188160 -367961144764800298402493171597574144 8958556295751502789008675494166528 9552737048622771810852243935068160 -565525392764675658912942761460105216 9826862027128829542180152837931008 7398834859425332685332502955425792 -955935544126853063250537172019707904 2540941988936181507959354835337216 1122414966979413590618748529672192 -771042368807121695322090445790511104 4867532905334442035948023709696000 49837347458762633514605873201152 -730955880794572175797497015983669248 9917592651362779960455235412951040 2831253372432518456424433501339648 -165606526563535603259085197106216960 4371848521687538325565882064961536 84771908740418381745551172435968 -632994313435471381923753691415838720 4924674506979201975642353607639040 7532447573761390282485216353189888 -312466010616058281028129028690673664 3995383725727417063870374113968128 3500230753522448163030984755773440 -446453530640761076888553131190779904 5008949070394113973981366307520512 6239468547462854192065521265934336 -136419731579698196206850978588131328 4358465444061541297520901808455680 1945804598099589194892850461933568 -905474358977948721390451030612770816 1047156368973154629056018117558272 6301535098888432238296672210255872 -537464224435842816145936987105263616 8627133039315470866479823160606720 3117998145736030516841780659355648 -269186877257860407159089158122635264 9599131871241201649142369636843520 4343719347984502904564889583353856 -481386628009097124027609008763305984 5326177519770958315180706106441728 493704731601750728960807335362560 -731515357622320470992208891895349248 5434254063985413051185126973636608 372857118144568846509902714109952 -809583110159015592084843954048073728 6662208734975670542086064880746496 1136383458048510052131426778742784 -121701085352881827133672634160513024 3326355127241505573778562945646592 2847631569834157158860509295935488 -689698960555141570515270538495000576 5533348208557570948896884904689664 2879976734865835774570215898087424 -505508726130489980271122345724215296 9338344664469408118018659787472896 3423348183933099889186644160413696 -28748204866501281153639853884178432 1522350665813148732221427701252096 3412812474637609064970120022982656 -362757456218138148626425642810867712 3038548323100279968991709189111808 4892750987162956404073725547249664 -290432642880920242337247551364792320 3247734154637381751570688406192128 4426456775293717990866161779081216 -990788331365647505785602422240968704 8651475835381214880294565918539776 961901148445958877725459765788672 -690804695042876982470679808840826880 7473414398950509271009267940327424 3355195542046626302436815161786368 -631427205021458536802441412202201088 932472610766638693500321859108864 3846331778802540751345767742963712 -749371739048062539734784611278913536 3969063317720929436940989032824832 9139240424300477697753554943475712 -358625151569631183847461650958385152 1555841634673518702149033464430592 3450571459686811650717191396917248 -194886224405303325590694144161873920 4555798675021907185251041494958080 4642699583710567535502007990222848 -43056067821716048140910059751211008 9162308859528763628923090964054016 5905056592419724318090818068938752 -172798955286194852796049207486054400 2288405493708350709241690762248192 2247567216739043320735392122011648 -6012179328484650027036426501095424 9046047470221554853116023610015744 1315891518980945553171192775442432 -471824391943824998755308406581493760 7044607384482427396384275688325120 5339942644069536293973370490322944 -749808064778974801662046784408518656 9499173335334286690849609819881472 2186603218773878622492109863649280 -937270496193110207340443866696253440 5281236347305719644271058660360192 1998758854222721965053591970381824 -586511624446008512270854332272869376 209279943194629149334225555554304 4636067406573018484740101676990464 -479394176695700035525187395290923008 9244890451749501700650027418910720 1883370630742180800017119062261760 -778058104041383363482577809686134784 8064897217329884339294584478629888 9762553100591849010268770165325824 -711459400049404463524476271445671936 9339473352356274634115544902533120 9975761118568532524887646475911168 -481870762108911407325213358819377152 3556540141796841919103016089157632 2868146579949199726424595571408896 -965044288144238839518213148302639104 5217821518680665183929400796643328 2157131866664709076505622678077440 -142242331619152315528974099598540800 2419400181249479395402781747576832 9315443766065836194273877219606528 -708184004881064198363446678917218304 7844856922086911923445902828634112 2010165612461190086105809052237824 -185068782475309785223227096585732096 1283853012126535913496346273775616 9451706771096735041123188605976576 -270479031175858842549967213886963712 8179135696513638420375708983361536 1838600272504876438609063661535232 -997488534013424365160641434111442944 8654800562553696582550273143078912 3146307844448412261406044072181760 -253782726820169145403912516003692544 82367834582674759490584191172608 4872044797102642585670568359493632 -730478990468291158503929645040140288 4751599675866076999280023671144448 1455354640748486015635178502750208 -563894647509477160797533605099208704 7401991805624395491325878177103872 8678253070746121558880224234438656 -652729187970911872545149413513756672 2736534393040931662480320218791936 4267493417239642274792027308687360 -601262615402386349599771547538554880 8150108327821601863754194360467456 8584465494397961728936482067972096 -708422514607237927584115267509157888 2607689984484792841768820285636608 7928547693091968081543640773558272 -311446181189495106525032478159142912 4996414235286650587553309751508992 4704627065986586654902992525852672 -199839957581052341317886426900070400 2155578828787922413672190764384256 7105845121213108662063084150456320 -919222823316018041918499193679249408 4153937221737195118124142736441344 1784397097673959969754849921204224 -487887299859404074890873413736333312 6079354335191256667545409079476224 9705268011949452262274055389839360 -757748199018089081558818310741557248 5076910245296843668240241776394240 5814294898537913366339327128240128 -877191726859068206271097525048967168 4476303620220292958811223182278656 9270157013915195251793762659074048 -45481314219767722695372498297421824 8370963754225645224410946744614912 604241821914121673838476931366912 -24317774260567099077258043451244544 4339793916615702404075710142480384 7562185695414093225122892309594112 -644764513745092082038458180568088576 8344796198651915903619825898881024 3522209482284023849795434322067456 -126879202460153976358447961792839680 4239598678506768309787915276255232 2116600628555690981232650039066624 -997245955072250147656433109815001088 6966260732429789188757806326480896 4514385103701637290517861524045824 -671898291921949184279866730367418368 9284374974349313315123646074716160 2684587593125616054434650025623552 -946549636572359158155215926758211584 6406927597904382811781254650789888 8015196839004255052553901691633664 -298771116269626084366247068247785472 4543917018723230006264870224265216 1163286521072404478404091822735360 -959627191437303211345227361822965760 1010084655029656033801243514109952 4603448303277073043933079044882432 -558688525559811038278961882013368320 740286068067708783855105917059072 2029866090067395267430720523468800 -2508259398100354251163973204312064 4744067142361866382752688352788480 7509728669448039698992678167379968 -569140157380911066852085370867154944 5793540479842164214401669313593344 9806838311091331005349617584832512 -359241981912068503862087433918087168 8696126885429236244356726217768960 6153322308376416659130502908739584 -98726888541303160069151504897933312 2366938663709477397399434017374208 9218787620577918823830215477690368 -855533629862780010423304493796950016 1173337678229894497602405004214272 3291601579110617169429413333303296 -651610011798704098176332121587580928 2952584234713045416465292517703680 6836655329799847535816861892476928 -649480875228162368294615403970166784 8596041275408287132520332981698560 8649199791701669502385485248462848 -451264147861817025860461966326235136 549640419310087282955781647892480 5331255550715189206705380943462400 -875927005164238865891049905430986752 2414589934520765865501700036493312 3171570025550967365918424825856000 -332833731052444993429503963056570368 4777230791131918631342238148329472 7005446057268151393259046502924288 -965630835892352397500952350046552064 6519537088848744563931655494959104 1970005826000847964041962613374976 -678256975886095338693727243277959168 6454447574648103392140867340861440 6203990165288189457910396094513152 -593433587310876261619978285933920256 4794816789018819235198862834532352 5758857144044879825006211603890176 -542871368078995310942760039100710912 325096665945161458851591776894976 2475956687169727983600362443505664 -220580985226774802674595999262965760 8172072003717849088727720199716864 4084210482511602735768083858718720 -274695259560651307644194286987116544 1723919943653946211133518113669120 5637777617759536473820835199582208 -644452689231063818483377367764959232 27849498858983592508153514688512 4995916051817818259188510376329216 -32704261974840570417408800641253376 9733252987887601757234148998643712 859677586007982819901878019555328 -48667356496488316045850449572528128 7343626317642585492893387905302528 1742444042029850203145174364717056 -516251272950638765110750117986566144 418909055090641413654741577105408 251818197365037537646632207646720 -920667527148479309007265452492062720 656465289443478764266121727049728 6897390632428049604455794110103552 -633455122717610428450483672535007232 108062146861969151629682794299392 2730743001058512143297268710113280 -932006053381699560514621541810438144 1009913400206681745594319665889280 266480769100428063451643736227840 -241754160657463360127866851244900352 6309922051931016483470101960458240 2741590596895973206899151870099456 -735833081073684637895523981810728960 4179075432653686472595464431599616 3270361090201397710261895793999872 -315084373369140732216520955878440960 4708579466873753565913668378427392 7905568486501798574568608238665728 -605725482443586612259927471794683904 1370825777153135404289192267612160 2826077218690205206006961872568320 -574493143538095984837571759120056320 2513925716516347958732875739693056 3267712890210757000530495772033024 -301132472949697917741574420697186304 9754336091348557616476854939549696 5771288086040943703526113269514240 -956350361198552532666826000607215616 259326126883902000284764481781760 2694781643285123107559300050976768 -553545586528013673187322512969564160 8702436386002786063343040696680448 3990657543684766472627722796400640 -387937725199812230496736547314860032 810050442509032012105363803340800 643230749203949070807198941052928 -668540314392152530247719734252404736 9277491036039590654443350113910784 9831798950422291964657820883746816 -577144996564125851154355358732910592 9911561491639512411778763620089856 9076024951304383794371743591694336 -769836814635308379581796528880091136 4403180636725743228942629707186176 6467542479370155881899703928881152 -219058230916393162865073691041988608 7568597332979692587833496396890112 5779875785566869283208718287110144 -156817591989240530463401536038895616 8473250466130691424438350084308992 4871493107483092065858925390462976 -790968179171383399380878555695022080 9007803369718846840065383267827712 9559352441350937916663895727013888 -67061004345474586488173008487710720 9993525912973136534062545976164352 131445555693934907215829685764096 -721865241926331968544426795349311488 432480558736843229166895619899392 3841379762806394832098711186702336 -467306693736636904790760750055424000 4179139225266960289578187317313536 3947336704791044868247672131158016 -821384917412548607741916814268956672 2117106413631271655870102054633472 2371779441345832663798499487252480 -898107197231462042791516599010459648 1413799086848181968537432340037632 9205219480270458844198766320287744 -467249186255813522098744109140279296 7165436644699974819270770703728640 654252935575421374285662807654400 -87505652566588049298065655978786816 9554113802810632891559666752946176 5013817393229978974145752443387904 -646444071831673970108860810259333120 3370765040217178011682907891957760 3826218550140866442965437974052864 -817119544033908131902718164231782400 6791416199923381145695724469485568 2227232888242328428660557929775104 -527586877502120104264625882929299456 199261774518150506671134631526400 392623548293493380893881556533248 -465340114894879910734027077957189632 4154105865430231708664438521331712 8194373149632654952790234327154688 -502400380089164613682106675130007552 2148683052051657484552847572860928 562481868100851186533355814387712 -661071469417801378838996826894368768 1716054655935155392812059618967552 6104122416088206749381876242186240 -969600858234125068797501566772838400 2374439984770701092645695159009280 6186474361264430317644387335536640 -518785671787066421822150843327053824 5947529432943614863848514370142208 7861044656415352775533595667202048 -698862207716061815262268719013822464 513572030764799312961049825640448 7582257784330367008266869658353664 -572201072450988229694512608070074368 8369789200183950084913683650052096 7579696791342901727161415819591680 -866099570760224466792489881585057792 4825751121379570924853100881641472 9932240059722033476408221890510848 -317177689314402208622046041700564992 3652874310726567793917252390092800 904941645297408758963552831668224 -727712067120203855054084806113492992 6796590850852288050735179521589248 3267218059319225630855211945820160 -569344746980757054655661697256128512 9778148958867092478103491927080960 981528401986923791166412599328768 -76957338969712643870990116382048256 8200383570664593186113329291067392 81167348665688688791594888855552 -782563249700551819572540601110888448 8088990708348610137677960050638848 3590062129706274853012713225846784 -464333580856805134343028232272478208 8654987685259246651395506899517440 1606473176550484280592920941166592 -109478519218707720399906434048851968 8831393778276624695952801699725312 6658518334176853203017950990172160 -364868349318636781495786998476046336 2220715182373819063691971326377984 4257970104029985294681983967821824 -566161552010247749378686556376662016 918120752844040682100715776114688 9231399902756564174375883362009088 -614213948127827735761735792992452608 8641940771284738015735568138240000 596766418914337962883494270992384 -335029095058514058047457066185916416 1590485889301274429210371041525760 7866713095936104074562327149543424 -70544372998739135633124815466921984 3531460346228969133059752840921088 1482327266698970110869231848390656 -445794807358031896997691375742877696 2828929376394571887342148737040384 746915353141674372122060875890688 -82164043198630285266653294920466432 1715196854587576007827897605685248 9029206012083300775352815860056064 -570548559369635781000333025121140736 5467713149628891143721411137241088 2702884059987123120491392711786496 -805444570339467618916521380868521984 3854379335440373815536867646373888 2230520911987956379581482516086784 -97150058630372413394196913843077120 9607770617740274425645194985603072 6828102470123029300570362868662272 -484172549943053683697981512126300160 1998486128680976125846570615701504 6809217535041031253916618432970752 -800201500466120430742211907003875328 4619818770090687364727133301637120 7301355060142162760801246360109056 -831128623141589212970373196384567296 102577870518123981315367109656576 9584665677135668305294252826427392 -326240901639747900910230896484810752 1088852952297727141453603341860864 8950035832008287951515369441591296 -30700075329420311568241007486042112 1929528923029634137574378072702976 3167064476724814570619223245062144 -630240225262408767933407787665588224 9560792265175173401730922603085824 5502209989000564051166767123267584 -620523178395725594879621382417678336 1935572014823994656655429972525056 6920425125863575254096290064105472 -87586286578571703421985014662823936 9263813880110231909207701383544832 1633485583676304774307260812754944 -717975461933656161060209342420090880 6739101571108899518050437741674496 4410468625324892751048657311105024 -335038134595389226071715305773596672 2013477870270581039942567165165568 2760348457863934794166253672988672 -884638191977803264631755647465029632 523242197363247222742457985794048 1005866488509502200627513691996160 -744437890064496000226177833704095744 881447073279736700093786253950976 2088484241934335831773436218179584 -672727343930773135956743822600306688 498791458655409165171598437646336 2702671898806015128940673136328704 -812272144970403575244013219797270528 8267773694140978867292268132302848 2235637973502920381558593555529728 -341540186315955033109703339980881920 4177451012766530535462647189471232 5534824585304506863117777200218112 -344384735663921326133150037147910144 5293400693233496854179898118373376 9438597874279506498926273179418624 -401417100790341211085373804183027712 4104340203887574860288630317907968 1129992112474375743318693756534784 -429495054973550824454598473986080768 8084164892985445060709748563771392 137930764275266949055531987238912 -820859678303423308845535759037366272 5781762606144072194626231556112384 2154268714782950946190634113826816 -212367793315783151470027660951814144 9977759621152980370961390752497664 3431162458411272245303540084375552 -984687720662618249676045419536187392 3145662024701870145412677261852672 4087359750325632734328547430105088 -280810361806082126376620149186756608 2566118231013487614702537859399680 6614914495488482734620613724340224 -852262715517835166886991512213651456 8083097320565069999095978028695552 7920211627361137251658987070291968 -150935634420278158453299096812781568 2140778689268164592490452120240128 3693023574284675759523140091248640 -453495925812448010124205528579047424 1197320348356792133363692814204928 3756288304402038449156024883478528 -448600517943391003869381453605240832 4360936210605168395039455548801024 2242047069007841735114398319509504 -455372569788269893119552544686735360 3162670172363277287378939015069696 4968708215717279415282338652749824 -45692419788043532523355790020444160 5538179562450985401734273347616768 316409115129508404274575693578240 -483654479156866405762721713062150144 5636295179004202316999813098373120 4577036210507311292479158802710528 -275362351155307146493505767460569088 6236648713570418069790295121199104 7702562522497266766320356133175296 -555654430683440569723653690669137920 3645035532012425457577161884958720 9817565438219985136301567738118144 -148966074701296383508660934288605184 4489658992985385895098686185144320 2226107684966453930301405758750720 -262876091073508910282153945877970944 6366487234042014738576596340310016 6173147803124984765110259896287232 -310769646584915122848596032927825920 9628070287572154194548420396449792 1249563024136373506508737096974336 -635767465824712400912272304744955904 5789515699138908575542220733546496 8973248704493552210405227671584768 -170657339163157427377274562776399872 1604815244704166803157235909263360 6575721895919200725168196763516928 -8462147134775288980737381246173184 8750699527058829143303005900111872 7281682192148112352867507943505920 -33753751070911227791461010374656000 4595186798658668601300961172914176 5806393028664519627058460395307008 -694683033835760722717855620601479168 763177455188616933587366363267072 2372661424554181459876752077619200 -681549440145689806655331567275081728 3109667375990946249154050505310208 6662492336474967123659967453724672 -160390079672447663338768921494814720 2898064409989800895649523817250816 6039604525942640772539761989517312 -183431973650317833392084778452254720 2908298330312579967988452665851904 5686428756985748433656459082858496 -833411882263352296444804808572928000 8358884314180668190092815472001024 7764692838908415042359874618916864 -235891284474596990056453926929039360 5462768724478053630304540378005504 5260734750552295935143883078369280 -884737955691598189841146865438949376 9886804632046406759067114872504320 9146282927048454192020666355548160 -636849576452398609321908065833844736 210007026155786311691364726734848 7738474148821813546685055285329920 -111361105003470966801240929526087680 2118423129989057914639895985389568 1252288821546364987572882304401408 -726881532800321850699363846633553920 4788244120128368109898568625553408 655930674324197413583583635832832 -100258564462783461760208126770937856 9287423439166068180298874478395392 7445422596585502704839126557917184 -173487421969049742310887357392355328 7099408168894914928442688497778688 9461469631025614235635570993790976 -871910858116080782326084212526940160 4211987321699778059780147933872128 8176296757172765717934629472698368 -251303475057084804086063027869188096 7340079655543149964530696274837504 8648208315491440941891768465489920 -688251056858883787759739343776776192 1861751650288843171367557447811072 1810909502247167809190453011546112 -358658622522525594488763436735922176 2994410641420107283599351718346752 2220490379958572788543739702280192 -308229074532940132889019813281660928 7719585431328914358963742265311232 6181329006997764858788439983652864 -51018386855134622406866562961113088 3795833365338985246355410510675968 5194161244184122456267262288461824 -57412349490355521770387000419942400 5278300098735799385616609412382720 5214110595555528398676322280275968 -910902050833277444655369712975216640 4301520715897085584751118063239168 6009265546537052991651857314086912 -135431410956519158750333534549835776 8534161082269803785289011646431232 6057555301003728566702538737319936 -202925552194059194926952672321863680 6843815378512932492265453011337216 3360190308059977264395308987580416 -430870509253405901933963486750048256 4804507275236436866916407972986880 9491540420957374765399593264873472 -264734723451089118394386905649119232 8215645904045987961136924130803712 2640988270586485791940090863288320 -27006846492316832657499559190069248 1175589388096300302612876476022784 5581545745625585955645312768933888 -381821786113395970803590114591113216 2287665579171545501004573800660992 3963719255628117853679994764525568 -334321433348474440914132904662007808 1657339586283626232860214248341504 2435376434483943051057441315749888 -509393371404998494624735001669795840 5206046286792628463867478413410304 1639198926882894323585708869025792 -508129800468634302663208258093711360 7389211269748959850561007366701056 2544875724969950808703192593858560 -500804165914688387913517967215689728 8908573628398469720765953977876480 3248325536444333049128625603870720 -479185619086325070764553748172767232 6402331246953245627347567200174080 2438928782409385485820485234065408 -557945454672626543882385376875118592 8188938836520715469525328506912768 5877613259130659813242902260219904 -924487908677234176534121265481383936 4962114424400062048484284382052352 7474997049759915107557018355892224 -215898446484052779537017582284439552 5100452180177922089682586673610752 9708637759423411134457450678190080 -815005110627125256350986259203620864 7583571650066124464727304871870464 9586974399286659444573028019601408 -971729420195565756383267577764249600 923921496447729473188904742944768 5458299326368703516034001918754816 -84081651872989962242016542174740480 3226029790921260930906520924717056 8374795073937917833002982926450688 -275562110294439120167708953898123264 1337336397041693529716251487633408 2647553683216480240113036566724608 -600851147715670379237697225016475648 9837092616397184654410738307170304 5235095984529125659283864598609920 -213814489818097354944491260357902336 243753857922020361078871219503104 2529306272897568984989421155647488 -932648391057897890626503726134722560 2950193311453737745426763575459840 9567883759854560437861963792384 -115729461279756017130894136057004032 9222615282203955857178529821097984 8126380914239308066709239075176448 -188185359422472669225664797724377088 2769748669711968271881118788091904 5866915612900932932265924758601728 -900734813453171918386093387256168448 6308434387863393925249608296955904 3708298100752130022908149027045376 -943379215126316946822813074749128704 6508145629072518995026574072348672 7004793196177953556018486159867904 -236924811382693737628227852394561536 4448079089853892585690282208526336 9001181985655738923068796746858496 -166599489791071815896579173194399744 7667409575312295771562685811916800 9256187171985060444979765316681728 -549009995113556157917343196074999808 9826758958347903912702763390205952 2824807252729740245884048810967040 -194677570340340229827511391652675584 8114640130755917712866549562343424 1205983331972042215885259807916032 -278976173264555119243597199418851328 7247739388010334469787909831524352 7858893200044572733974692843487232 -347260679259374994558794832759750656 6001056673140095292541500601139200 7970401018718602248469393214275584 -138418354888898244112190102376022016 1558105466952525402377902817804288 9669140990086334355978280077623296 -790525102390619669036374633369042944 3398500138479579262264401647894528 2618343589748295419779155023101952 -732499151881979087065138749987880960 2631772100643106441628364029558784 9603270269651119738867701210152960 -40721826992262202767817666019196928 7328598437545831363185470735384576 8458953205809079454157498656751616 -306915879374147407349553719423270912 3282626566158266856838119609597952 6645277787184330063407005835460608 -790702632110130808822220074589880320 3167123615050330245827391305809920 1597795133965081597645444335271936 -812941899689729216951056381773873152 3318873656128495446363198470488064 2020475489251398819061827456991232 -793542314652089230147634677996847104 2799677756393141509477710683963392 1524766584502260328803098123304960 -119717907438037234543318281276620800 9303134401095113050650717336895488 6141096409439521454444996731076608 -687669778314759392951356494014578688 9845299061296686510983161778798592 3298478516070025964649773120094208 -972196813836451654105784785169285120 3965842924254884194879818908565504 7996267201339370512016803348086784 -851796659111767344004640291411722240 6752585009688922931602252208537600 1573536546828744470493339563589632 -889373660312492663433666928238919680 5974833439276552309632557033455616 2915040396553082825001603812032512 -161432001417478812725636774282395648 508000972594766535341475345989632 2369359979737910021985674603790336 -21172735322490257952429893916557312 5404356506017601580096658539020288 9823263441522775599749842511855616 -652931744575858996622816982796861440 7204423134335110309864268720242688 7844917141101257813726524321300480 -248445135912008138743274720787955712 4477590699070168309837054095654912 7085828962288391237598957692518400 -24665528275498055961383457735573504 7182790867897231241746353986994176 9104371522262256413456522509549568 -271122975074102169793689817890947072 803862300991608966069420698894336 4184241382816553129617865891119104 -718727928445440527944955417843466240 5977520086447758466269702961233920 4129866036791840587901695506251776 -730426067776342681390567614402527232 2102296483499404065169833927376896 2719273249961953502584954276544512 -890694092344799830213175462890307584 3745493729626285337970460076277760 4652114943516689378491963090665472 -768461401305954165070957515529781248 2120713931786430160699133295329280 6139547603725916226619804194177024 -824582946823018800510660392389705728 5747017711232845527703933165764608 8475975695568565940174170141753344 -531213684612516161529315587711303680 7353156854828382499337516890456064 3560278020626493321290413345079296 -64906571452657071197523329717108736 8018546457200556955473778317459456 7175252690008572270114337066057728 -960576999635388673129722734759116800 9330341059809860853756448833798144 3220480816198771098845904178774016 -69312720163759058607915422103633920 6421826116580576446193716558823424 1416519384117065583736589717078016 -665933823607050674570351212738117632 7007829431123704886307418057736192 2940128080766176310739026166415360 -256469702561263216338524485269323776 9825429580837301276385472715685888 6116460379319565101746950271664128 -837072762391142693885170747638284288 9050326974834026733992581709955072 4634973322095581358617995413291008 -281654512941822925169841359428780032 7000432350124371272745803415814144 706317190863708469189435646279680 -476537563993256877288531663635087360 9065097366335061892806321324949504 5413888277448794841629997458784256 -890195725869524884106082303451594752 2844226584961803951891704019156992 2856312435413885056942989274775552 -697423295561483064087432667332608000 465667786058817401971604090519552 4410688721249388157291719615840256 -468461164530092407396823829646934016 2998331487570409763171369301835776 3819766431394120063324619450351616 -425940130340607229569286283276058624 3120508630490561057037163436179456 3154124409285520794806839605723136 -795191166276177468208722763191418880 3677826938535856589142477798113280 636196939512986826929612206899200 -970785302614567415855869229029916672 3621288650769139188028408294539264 3511905004281348805127133284270080 -101656082385963216146174568501870592 3065304244092712279597909511503872 9970102221010561593112007895154688 -631595574518310066687337250961752064 8279854937851682070541457843814400 5441804961490696554509863944716288 -86261610809749240630779258978959360 2616119161014018239243885958135808 1831376977627757920155278789050368 -764594075704681788840344575113428992 9086915889706459464734162141839360 7954313279923230621523700877361152 -414598065951238401180549757844586496 8002894352663381130810651773501440 4856000172141232239557326464352256 -783724488264163674731622498601795584 3025602032542979491151971195289600 7883684084313550582659952297377792 -486713251730967237164352272024469504 897399902967059293561011990167552 1511319612909415306198124517654528 -475473951862543370846234591618924544 646061164306438304976211302940672 8873622196771907341060265981509632 -861624252392059296681890977702477824 2885281390361505120301770594058240 8809816381216138703813694757797888 -570447157083836515196403271061209088 2027874433828480857134751805341696 6318319963814262808994231265263616 -520212662903400681928881630997381120 8121844109924411470662857461334016 7349807018662869228544655221587968 -754541380957661846394962360066375680 12685062597432085998184226095104 6940674347374538214214053404868608 -448973849992794890909977903743631360 625987917923050350002679777853440 3386268367875793595677395363299328 -114639966712439889713339959756193792 5809011990300736476947893475868672 7825715261379435597847604720828416 -707856172783613321772620557559267328 6059632279145194711914228672888832 7386976000393859566905702318342144 -485937666968045502159146177878032384 2639785763034556581959121630134272 1022361525765614752275343473639424 -683757981759147248847189155552165888 1947547672268385378841323125080064 3933130647196111230678926817755136 -939458089041609752656103386338295808 8706982132024027681138670290599936 5355488084703981563875834023903232 -976930759069842210898397850209615872 2870250355737984746979218981650432 3700121928797714373330457698762752 -396287108729458302147594700613222400 348308637321668675187118237024256 8999181000268114273251018932224 -668186103299341816948516185612222464 8989499813967303812788987768078336 7651302144781892562725522345295872 -797433807592296569007882448817618944 1029794054423529007616546725429248 3040036463099674036274457938493440 -678243029972715090275245375923159040 4056318018719613961599130137526272 2067442149237501580093952282853376 -634904331908599286303436355976298496 4729994002920156655758482738249728 3522512001942660795750895239299072 -478933516469552372524901103975792640 6297802747827594594991627342708736 8951998676673965101820456514617344 -444130973922931084923493922205859840 206108685577603448415823306162176 3360499050836621488838876562718720 -649081548336394543074442070233972736 9014975163213927398212754865127424 3811259666602782048024326444154880 -353104069042833026914126874852458496 8299512594923212886778905695879168 6083996771870634189035527785676800 -226878965986312538055512395440193536 2997774466628383888994452941832192 9632967460370397676477501151379456 -156079709335434802153349660733865984 6331414833199584777202461101260800 1968453692285232070405018284457984 -765701140062020887904407560805941248 3007722971024698829234073176637440 5823305096685662980742407132282880 -763566170253223767461674344888926208 5127924738007559813706796358434816 7495807679380867247693978807566336 -36641311912351952564344269972701184 4234675771883769350322328308809728 3035641414238359765369130407952384 -499376698634717435866602546757894144 1102686244167890074691221543976960 1768713596457114014092569614483456 -428254080279626469095892658853773312 2117164644743203844045943246684160 1172186744181677383657773980450816 -318586999919891913776539146788012032 2260049411467816910217775088140288 1238063861210144133799141082923008 -801578263000714187011572518656933888 182763742396666934091995450179584 3896674392514346304547882165862400 -987522391322329190400631522730180608 2212299502089321845025001621684224 3635619086860860335895845835636736 -739119371652536135854458783727091712 4454430755606264241254434940649472 6269855703300884002896559770435584 -74486467328716779067988009365274624 675251495366132373814853198938112 5092095559992444289471507272302592 -71787047610289227571202893163790336 5889239344218555195304246134177792 9523891773770332443889808986603520 -25857461186505022922769241508675584 2067396936990314842532685528694784 5341537886962500404823857744052224 -439429686871385956409461563488993280 4775111405267127259419704249286656 3808758539574347224212076224315392 -696757131598708993531247493948375040 8816434596938630889451478377824256 7829534375795998999656374277767168 -162272343724904212426515545826787328 5943599810853187156191123962068992 6774462106466131354785022916689920 -26207974941953622981051637850701824 7731986542423145966514083475750912 4009549412652017456745574064717824 -930815553711486312563826016345128960 7489182141381076170054063729147904 453377646204582908373672575107072 -467347045635580646229919380407320576 1371952490951440588329227057627136 1658268422691083165445765373886464 -560427420780780286309526665519169536 6161165167301370701019878397050880 4336647474848410050255713076248576 -593941214154797641364691581845635072 9608191714902268310177556920795136 6449920333818866467771760011902976 -215870957215533057517639398017990656 6790682623672009187111162301382656 4172681551123698869723670274637824 -79502849138279695520790387965820928 2845079821009561680526431959908352 860905041443334850762400996524032 -619823438744446356069303724462309376 1572368612006129210168083008716800 5020053711179844338355205528616960 -182763282123763736709390830026096640 4811035324427109377552652789874688 643607005644537084432549488361472 -921569000668694550384585985266548736 8584085182321850285026977232453632 8854352045072512842977718587883520 -845998833995763785400276512382386176 1771481672609153821807061432795136 7504655857711272926117300931657728 -196940902634480092642288003465609216 2159395445637772734389395629539328 6602001085953792434800080122281984 -71996939084602587237263866981253120 9920184614248728772708757718171648 8467615868653328016296337196711936 -2201325615339737661545998920450048 4994787938007894144091628979093504 6871804348726374825101944713904128 -392973158195647545013496732507439104 334879153196429069127037891903488 2814065527144651010700753240064000 -34358614369783494011592821385986048 3639472215191856857926887710654464 762706571322376789867161901334528 -873180476062192990315340193974976512 625903073400482063856420469604352 7201268688755172149876792867422208 -508841725235241869807182126816165888 1445263010118876057998090368450560 8674301853349571124341667176382464 -603396694999663060177139140028006400 8396641501668968313198250064609280 8348437896487728475256509219995648 -348552622775760382960606403452993536 30258089165967830493464690163712 2366685645320816144145258152722432 -684937592918868199444538452206419968 6418208264416482075856346745405440 7509854447956444987426712395448320 -536368496992297776404312827835187200 1780674323912629756488990886723584 2872657391028570637535439092711424 -174294444529707651570689630246273024 8594249459887343806445112168284160 5709581582327713760983506453790720 -925177068360162066774687338628907008 9686160428120841436240734786158592 8575865115248755202730671269216256 -331735566065884612300002591657426944 5350673372424821938801777380950016 3493192515221968601643870974902272 -524948180308354271435779949461504000 3003490778676841217812923286552576 5428120764217679782184012467929088 -380999569189977291249455938941222912 9235838846736558454460577830928384 7996019782841191532882569847635968 -854496545943677428918018715603173376 2177990118559837210153441025851392 1989064845004969940902996307083264 -770491296941530070067719984266608640 5598433198899944980408643547561984 1414069526687604117618709298675712 -241403294649365293896243498618716160 4904276204684941621781051620720640 2092080409804373583877903994585088 -492095267893083952873525893383847936 2459098000974636102617907947634688 1000519703171740098716846736277504 -346498997774392652850536668498755584 442184878992441676134292597506048 4246370885658666602977957322424320 -379870970563225914143288802265792512 5157522405917138190749209810960384 6394459277050942550511396979736576 -665673821781709627420201350923812864 1786874219369285116579351562813440 660797368417792750836423581499392 -215598354542040008849132544159907840 613675189613586883708289806237696 2745615415988370932223541879242752 -871358685637355515749840905408872448 2758820146848944848890918114164736 7878407632581645631921360857989120 -703373471695562348244944190521212928 387562106760524301771547873378304 3075117389628699477685461187559424 -76542621578804518234202420562362368 1972866055138905894506240967442432 20082992502529643436546885419008 -857468640256054212307318861885079552 7024581327487200300922294564290560 9892039248683717664963599622209536 -962300255010562881759168041855221760 1746846419273291395797697286897664 7352909540736191280307521592492032 -253309168388435248008960998446727168 6968139559955785946219931500544000 6605095745405399334103083711987712 -534014127678826097379657251647651840 4861412236039408551253835167825920 2100972044262618629752012956237824 -163523171496884489893183369619963904 1614128773027174871898612297629696 7838147517451592622222438463176704 -84491515182860208052334864489250816 4800732445934800927529602820079616 2881114534881881322620636272525312 -580126722817851266752231397203640320 9657187736860487523273320809103360 488814101244302881216256224002048 -512048742657251995444225153832058880 9491221446973580360386600176189440 570487035485822872413380412440576 -746431788418724600229445353372385280 7787945394267854528218964347060224 4717921163623795508097401271353344 -589291008331474881544828831712411648 560842912721692524511898340687872 2262039683113165393518271559368704 -295928069322902159060114971855683584 783146479980579592024742539821056 7072273044142904399713039812657152 -921788267212227231225669372505751552 2740852822213949412613136540762112 4145663987754848942545747201490944 -725880513638075419820416177442652160 3093910314519806942315589505384448 7041170235459537411886953976037376 -467729469052131274331406333475028992 5382318898341278696140815881732096 1384272837733916335858534322274304 -557694076651337323613186300143730688 6127771725639263113943141234769920 3573237199619049112940328918188032 -730207087389953929485865106865651712 6902925918960101113613983894470656 8126272640064771841551986608570368 -671052105031301954961650800272605184 7441073834555380239126216797323264 3476910604668367708994013761634304 -938300587995729364851589001301196800 1516270224393317780960476435316736 9013464861540492831582077941972992 -73535944355433797227729193944481792 619191333912259135270030535557120 7022535382208648336819121370955776 -21433736395233398354386682841661440 6057001030934357086580026560741376 3907427865933840976962035982008320 -18810992499546613372205254756532224 8430295848916742887097165781401600 8419166912707018062708608384106496 -919820047183135073634258939744878592 3378031648427005186327171515285504 1802547489378981179902582507700224 -138114847161460814063789865200254976 9566923010672575196160495284387840 8613432826708137853285771916607488 -249131002035558912220124567966842880 6326236165024296816574169341755392 5757356847900356560234971440087040 -908694484541962196508826561813676032 3811057785779404822798559896141824 6631893667258644330293761272709120 -512619718035079138297759154585993216 8518356089963140285858518721888256 7251699623891511793162588514156544 -624342861709328407708833787387314176 1859021114103784458835356211478528 3159551369440042198755657822240768 -11948670866260187969753492320419840 4496803712556111706159570864832512 8871012272090787425359810445443072 -956644019987945464592869468080701440 4385380798316669995202807628562432 2931060288547870441424318481039360 -510590868262097771830544096684933120 3325492161941870685645694778212352 7018644653998654228633060680663040 -647293355070250833264178971298234368 369244987143208085071007930384384 786676363775457899339234368552960 -218320447478183150803400957584474112 6917628327126235248276789656551424 4388118690511559216656559600828416 -987959161621467777703817126680199168 5243664167243479333628648404025344 1378243073365651484085863950843904 -643421863638130243725751455307530240 8126518729224791779809082398998528 482128292027171600898036324106240 -28601512260230247886221437504061440 6838109412839051026950480164028416 9019311669349545393491090222350336 -867231708778451663234817508381818880 4983611611307059081725761766293504 1049335976904704753210200869044224 -128908280574797407988091599234007040 5283002387560352688508992548241408 4321803338856398330547713182007296 -483746987896838240643494513876140032 1681796680143162051506645546041344 6229379181012690349512253054648320 -498931762145242573090263962031751168 6612613049516622619424281759580160 7995430451901085163850613529772032 -695264114863501850121273213976576000 3744030440813354130530406731087872 1622031740455663049444573266837504 -10414713357774909978582512973119488 6963188405075056799007018189848576 8441907766830020331044006751371264 -863616324462603165853265912200691712 6933595090600911552039346969247744 9421575307741735839979718836224000 -72619289822883377138740715073830912 6649788810128088636101412742234112 9181522071065243469702745749979136 -294317480921928717558868448951402496 3681878696466504996438921894166528 1453853679934882942194993332224000 -120623963292055543838326501815615488 5018264271953359516001285034737664 9722553599352381317346502314557440 -867191063212472676801377251805364224 6471977284831516258407554228420608 4669570500898402500067508833222656 -8042223105243776917214071554572288 813933027163666355924743028211712 5097832963787550401856038443679744 -517036971338561031649864957441343488 4991665523096590195222809570967552 1279456446637965665353645632258048 -884921559411060780606091995731984384 4544425959929775829148144156803072 4073459713866594013027893692596224 -667438114385750110856764499641237504 263190074312843185702789412028416 3007102361624761018203250515509248 -883732113578528691955845328627826688 1669974020979072776324787847823360 7272345978672914918047250531745792 -55385702323644575710418035246366720 8399704758336079357600045171998720 2064802203313037001039288165466112 -705828060636021735357979149463453696 7056088309336448496866692345888768 1345013335518563229097260788744192 -777888407739871645340418069365784576 7944419168972538977582890258268160 2878816140635000036717768780808192 -684701492060566421400856833906704384 2682045251177697454699985063903232 495303365461157884965751567155200 -180887238062306449488821475946266624 9683152545838809206724872040873984 6017888908638358871957513231663104 -782370111570396523608575593225912320 4761689433760699514207155792117760 8318347635842562755152849359863808 -864789772676675518485473834142007296 5278082472750312896830004151713792 1028821887817097466265619134414848 -897000523766878589507357024710557696 3725790283178214106487783226867712 8583837140596148895597964803702784 -262812108269820507354743972036608000 9292675124198820802040152476090368 8781700292394694695296949639184384 -663928568858715748777222572292964352 9096489603690648401971189844541440 4640486009410964098752447973949440 -108481053392651391563591627531354112 5308696228564490868990158758215680 9327335521537972206550880457064448 -361934389568504396101422257629298688 6791332218120427815638855502004224 9387141270886644230343949744603136 -772212767753652422362454353449582592 910007506282656785915113595994112 7140936348018542099057896666955776 -279148200223335792253301487243886592 7411403409199106255448344379785216 3114239517453608417706658972565504 -359556567081422681751896679916765184 3780799871537895031327740242427904 5564945398380193047682849899020288 -715149915151310972667913887878742016 7494230494980040830625934613676032 4499084751369077481644257884241920 -541544283442300952314799534253277184 2650731897689851275548438462201856 3770017082985691173220232019836928 -496303458748410836207411321915834368 8904846881884727126969382839779328 9229903319953685965040084938915840 -815818597935813592297820189190258688 7569453315243491646903721004105728 9857418439125981007477184577667072 -682191992363512331040724369985765376 1439150620913521080680796387278848 782687617173365877715289344311296 -973610093366278464415640090874740736 5377102401556338094047163448295424 358645121417687421923529848782848 -86280828382190120949702926637465600 876401103684257045273902869118976 200874554029300691879636697612288 -968377301819160316323941359038758912 8101454193730019171217637229199360 9589626435339408123937639081443328 -504837862822944297832133775142682624 9741753248627287017448388207575040 4005866929730323020946785947353088 -795784798471934653001367051099439104 5553920950881685977862118672695296 3691160204882316776891475619217408 -817978861306878802223191887546679296 5175420752463925867162509416333312 5434645271937753619641873874288640 -658747002075796588242846687541854208 4656255234736259537455651796025344 6464234828302141676943536753213440 -218149803149668900767506261740617728 6057027920622027759257305437175808 214693132275602621779055384461312 -722618339177759618280949413696241664 3323306292503171340653652015579136 2856566054058980214549129302376448 -771442631305858020286855976398618624 9673518579107743050518179719675904 8341930452506484442946038151512064 -156712741102861975569901839227813888 4137176701385941322579086281801728 8752649524730804631177191500021760 -361432470061975243110511939137044480 9033806699603606578438228586528768 5894262447477573118665563207368704 -291319752909732197297580647487897600 7567886960702047527822117495111680 3568685502100221871859733985492992 -620078813450407980399938511178825728 4044915098147454444193568480296960 9957263317332888776813042525536256 -455335478328612503748566734759526400 4138049983828248717718780672737280 9459021695481721950904678709460992 -772161725935667336301357217622261760 6333478946032872952968213860188160 1629688618724131865194190749040640 -857685978845235420063902842813939712 255408318644726340246251585404928 8721884284211170633142356404076544 -475680659118297404431393194430693376 915408037263227463339414420193280 3215816124200805546576462091386880 -63113331194299099651856167382024192 7522802755648064829710911177490432 611355689806204372133837474365440 -119328889842453861894958234925531136 1126676578865967715491926801121280 7345393160704815993441667369664512 -163423615119758762333331422449762304 7593723587249802408404731138408448 690818139862240833533491017678848 -628480906655058696128442132886192128 6420162557216073683924486121848832 6614511570381852457482450903236608 -282638245855859914673636569673367552 1883447913495356783675507044515840 9105057522337620534680291163242496 -23706525964530826017665898220879872 418707966313421055778507420860416 8288764340711181180092544874184704 -32909323598312001419633221099847680 7511033235765523637097540010115072 2746705386522466177028824640782336 -789973035417637024027665083211448320 536112043311697749229721301811200 3456253925035268025030035629932544 -888600709999097341075302273758789632 6702161846582161897798506509238272 5783053131215798341615982439563264 -335622335126188428392394183531298816 5918403737298133491744634067484672 9087565563985574984027577484574720 -553466678348791680511672101342543872 9044676420330165824245414420807680 3290883712684625682237340036104192 -654649031456824228266743768104828928 3322709726825487022457776272048128 7165420082916416882273161045868544 -186327355489723850814104593324048384 6680729935183166644737407740542976 1175856108489251672356656974397440 -779804254846048230029155365973655552 9434593004884696461457358218854400 7730410584558691176002007022436352 -410215084256601874522604207446425600 6733487871984261512636255180947456 2966932670989083213009118539284480 -465419551068010463534399565066141696 6765761252799673105921374156750848 4573144307963936555485487955968000 -753846880294965058467074317532266496 4750560227378767136050485036843008 2804661466868868988896765856972800 -681329143529475976550560897838350336 6706270245271613475672306277679104 6857259606942150919883402296426496 -504645508483758588180719458997764096 1510804302737320216882477315129344 2402374016537490228645986102673408 -923783496976322803525138954825236480 4258847802872158775699878080151552 3341876559490427295935934010228736 -303974257502327001571895961676939264 2264158537790781252563977352773632 7511219842701947161902053897273344 -520472595103097439006127104142082048 7351494985566382298230598051823616 6240441165425764931988307123896320 -171118884385746372484034697902424064 7716011314622105639813542802620416 7619104356617154103706103601692672 -22041527810667663480406923370561536 5405050060153331790007987490258944 889545988504480183865129014657024 -545038292174211188026997335606165504 2826948325941002683257580941213696 2165573642986517953277419686199296 -473448438284380013157757844574961664 8027984988852077019973951005130752 8441527459410523103674914039660544 -41743579158098077696345262153269248 2784351888205042202626604302073856 3264509291915534932092423164133376 -511888228818719683576035125655240704 3614744971583783673226149052284928 6636290450716429260958772701954048 -755017431827626341533253903975448576 2236979933939841121058470154469376 4268193177627115828229198265188352 -48315965254489496296263942435504128 876352326995381255093992952954880 2932944439687316195336217941770240 -67797016860410889955118514740133888 4316278186834535023309457509580800 5299181646800993324211125155266560 -531419170714029335390203636673937408 6070942850284998854974429403807744 2923010280441493316982846722670592 -716039630954505986957686329250414592 9245897198794271243729157578817536 2635202510778864909439868428353536 -560846986732711231961588104188395520 1256962958810148496100361664200704 4914480897414734757107847309295616 -511683095274792041679686418409979904 1953393104641110743723133313744896 3841558167879637835660865180794880 -74976545692544115858594171627503616 6804183059974016732171070332731392 3780394585554856660456266096705536 -165938395830963851870961968154148864 1006328226514035010124089361694720 6366409839173825501589599506399232 -459816564914595779747144793877118976 5448871586187424815976833093730304 8611302560385168343264737250770944 -393968588716410229916532850638716928 394723319045549298066935963975680 8788478007396727212267478620045312 -309539056027898545659779304919138304 5526139363236930811281706491838464 2166266954577744484825366775463936 -739845046806016718897725494769221632 8449901854102079250313145470681088 205275759991776783806556226453504 -172712851938507668451508910213300224 8996331313001286127046963591380992 6718390106585716712492281477726208 -849370510996969715345483788011438080 8341595900731001490279902042128384 8234794644486260941525852593586176 -695294640209397412309114037964111872 7525232109221670553928407552360448 3252098589707944100915718448480256 -892379529370021610391470931812810752 1201750224701575047746660096540672 4573295180203308093895223298490368 -446952132662653140122278438880935936 2806802104141704078838309473746944 3391439905719491367246005899624448 -219752998255921834622849203438616576 7857626112333838722183613084860416 2567645901934687467725939865026560 -606352678517687055516586219633901568 9076442966061284273982703335899136 6537724570768468016472888629526528 -545815207432191545769171728000352256 1749925479410331019484128776028160 5461803424135833330450996888862720 -269473806772526546795251022174355456 5468753747874287884116282350501888 6251913949776835815405743931129856 -974306077254840990497819111515488256 5379291129326090581651430970490880 847365041935204148592636468396032 -114509890044237912341884349221699584 3791939711332875914639791112585216 4086334868010442477458595959013376 -996763474884741213455881014626746368 4904266593652904015974327268671488 7152133137133678099023367210270720 -837876850545091763483534233845104640 3141492191223139549992874344972288 9232763549091743895504363292983296 -140567913000621174700085871313420288 9688265398161682009018815379144704 678009596669378481716795568816128 -78973125530942994077768736655278080 6266959011832261033334724223827968 6770676897057391105509438657658880 -167294387941606662700715397953355776 7577623041454072704197651597361152 4850827994203745240427910829965312 -526548908121380751472324822825959424 8039805858164289037508166419480576 978076307557106687509373101539328 -904569149480265740567969101718224896 8004392823619297769305147508260864 5565977595263661026786204455010304 -644416110585273242714932322244755456 549654647844940353106465135788032 3810683323847305689287878391103488 -52903878066527293972725383661879296 1617732255465488040393473945239552 2488670355735821319224726522953728 -819144033524601368934590614280863744 2947397464423949901697714640388096 3183422672225871705147704889835520 -200487383970097383387240626560958464 1699125834184743958036172230361088 4000362020549346055348318812241920 -768802600712349549210913223118684160 1289361508720293031729656701648896 3878145417224858298117897771286528 -316140980803077299174273333432680448 6167477071797083187362600843214848 908969532981048527967731587219456 -546956655499201304445690525876486144 7880704941483085368515124311097344 816302500964393576256748084264960 -330110413287245149179621563470708736 5083315847033533697629291137728512 9104969242354640672436638349000704 -330012295510668841615816710581911552 9526697924128943883342267990147072 8006220260274067744624143115485184 -115524236030123643002673706714529792 8431820773621904003758456485969920 1790888741237687852386147740155904 -372319727248700182047145554041896960 9973459565138274237594246238437376 4034112017603784235151496509915136 -693656971532968506763480571133820928 8331352541247228888548297957965824 3632382630514118036533264359882752 -819372622392274269234941667271770112 5961531118253284783693111618437120 7374670757075506391897121952366592 -802780757779763738161983450186252288 722167716188560082448735702876160 6646293979494919148011242102194176 -624686356807702617206985848917065728 2417513561775225358047869627531264 5282159606793783096909858338766848 -66527649801216816818380437180121088 6891040526348688932097675359158272 8398420789518999845748467187056640 -292863349564521131791414977171030016 1046583412527509260661436056600576 891625863366141846384361290596352 -766353113209707022724237626299121664 9054683092873980573318170661617664 1181716194573818883472959041699840 -720126031407879321890239093500018688 4500775734660839435533810738921472 6473205256035993392156916316110848 -639739964509865573870746472344977408 3400881456811674186707132502507520 7136239522550154344887875862003712 -530415111334395437443003277998292992 7066776008345082815247278453817344 1935627318535614446052781892567040 -966385936853663324606492454812647424 4742898146769099001304963061121024 5046374063930924790935879921172480 -40551212413959019045983642105937920 652182439962732570845923334160384 7821612081897444679858588733145088 -54949593589428133580076555356340224 5835687489275290437690643944833024 6327054166726074081180831184846848 -162128564215413196196912664181473280 6840274204344953381963639772151808 8465721025793013865044507648589824 -434244361870678669761093814229925888 3396972955699799772033978801848320 1288349258482001319682630593019904 -835130802966438303891896083287113728 4084290494614555250208575399657472 4877828929772193286351184382132224 -158451225950763551160813875210747904 9394764377785181874852419860430848 5765267344813921974742609708449792 -830985085773798077451884634304413696 6311128487741391128305915603714048 843111911241277981619706210025472 -811935629263542677964602602489380864 3639014245784375557638524090974208 5978823529030654733375253212299264 -550329242802112143763174895556493312 8645333128736803003311782128254976 7329523031028666920320315640774656 -332088666885535624755646120408907776 5831661617121768390311165061758976 7695040306135729233260599341744128 -648737182186293592430705569379123200 7384466560991428720232166221414400 344683137452657442139061211889664 -625560108112528697067751098088947712 4346423174061965125744250136297472 8452505197953262814458416654712832 -63455528773028734919751708602007552 9492383886311700530235400265924608 981784584215576262351533333544960 -496414370139639143051069555908542464 9983959937285996030540029701914624 8287933886512573643264684751585280 -846033509687530066788887486925897728 38763590635992109260747315347456 5312991594954710644875150908981248 -414472049913078150515863627768004608 7919349091895103122364924241641472 6686635377758263820843243775459328 -368074510259089310535056246781771776 9971371784765129381570470962266112 6991727898283694227841537202454528 -824178704969787114872749101930250240 9198634274551855466022941354885120 7251597859873456641066829929775104 -129553853080082364829342839317987328 3045691886808092890754830418575360 4008563094289018099037756412919808 -780521605542787069486115020387385344 6058253765785572678569358199357440 811224255103362737658234805420032 -452816994455094138474132873249030144 9002131266007031071356737558675456 646427567170484241797921219018752 -806877791876959396408212998024331264 2884660025700353551697575457849344 8731451784234589868938042997211136 -672691341434346666310868946495995904 9458413824012882672738602588307456 9606072388949495446840384317030400 -903872962860240782428444897654603776 4497447794653772173939671402807296 5362682491229580955251863606788096 -150448014299522840256738572443320320 7783950496669426769763452233711616 4664196704600718895104188601073664 -558445021746762176558855444345389056 4080517954067655142322601623289856 5433320711428715624466421592883200 -130052266940681564828647319519887360 8115502939446573843146821943164928 3627500163630710136775606508978176 -186062879596329536731261215552045056 155311112741738908550170622820352 5926837000142997183362167897849856 -789428257308700356252237445858328576 7014370224350301941940840285863936 5596834030800948728999903471075328 -697581124805156939703299161527943168 5296390513970980977920487733592064 9645772006235556057849028056973312 -846024686377219085191147803780317184 1266486476175167500454409665511424 3142469675338194940352273806524416 -415583852110618384832379077716344832 7648500680995355915840881027973120 3485062283148252454099848896970752 -597515826538608241070630930537775104 2679168038131505456932533907226624 8756058018789442166374126539767808 -812692335676766848927744511025610752 1231444128860396835615112807055360 7071244447037857868276380156821504 -540147346113432715429544573064445952 464447115608765116004556846661632 5198983869683791344530984884240384 -298998779655552623920044895465635840 9956066624588245390905555994804224 8216909327565656350326585055772672 -833868552704846785976019549832609792 625260854880570597048381941481472 6860751040504050197765180480290816 -775630447395455816001004866652602368 3883438622686031618178806014017536 2400032912266746620510067155271680 -432823759281647764237264049999446016 5307103982141098989545177592365056 8222203949904711383485099951521792 -745990967759442707907875135494815744 3076744988617910798389172022280192 6894811920189914304193403537063936 -426571019916994409425715256178507776 4926504388997689422618537895133184 3686246484114368304473467485421568 -302916735626674304170446061918224384 4772346044651012477130514469224448 7446225180156986356245594271383552 -105954861392124775220869367955718144 4361282189444057426281542587514880 2187881676688410328036233174843392 -243086716459477708287242865263771648 5458928220514932609830250505830400 7876047042179443252923677657792512 -857662248869571361911106400327565312 1514298606839926967484351214780416 6703088811702844624418001127473152 -148953930536468604548881469872799744 5234686337401628376882901420081152 7022667752308430781941935249555456 -114506328428024999221529156050223104 1943501587954092718371498029481984 5245733491575201234902933535981568 -426844249960251014894399808782467072 4232895985130878090997417486843904 7717090946490649649648570260783104 -666887086840538816368101849774948352 5954989106199340730036963843768320 88959869780543999573421147029504 -195501106093332144826514694566051840 1578138599023936665472359083278336 4491424156706552333775240135966720 -726085235123995452464336420238000128 9330459239763932531366302767382528 6195733672669473383041415348486144 -150929107106882026499779987194773504 6073724322932393009702814959534080 493013394099085097124146343575552 -237368899525957292386496135252934656 9688896558091556987221199818850304 6996058847418598566505362717933568 -517415149028720457981086974091460608 3548108100831735637501037875560448 7920210748389966914530918268928 -442135091949003928419049271256416256 4528323945053171108252091164917760 3889436915200542511805507997532160 -91189351293269707278223665725964288 2161396442736517773184727645159424 8946808969827319322997247665242112 -78829057409235989889889168279994368 1629346910437566643655660667928576 4831117887095037307859813665865728 -820389947410185637330759611685273600 4281364866199484863102105287655424 7033673008422977792237907793149952 -392751626015282751256048371798900736 287828938188562244020108798197760 1261328910507966966797952893321216 -822570754853415522611413185483243520 1605332089973982871031529487728640 1682159874673249464433572709400576 -45217670112539297389339572202110976 3741196937200946271941095724154880 6019581509910952277698402343452672 -532467906234536920441133098850058240 20708741279232099536558708752384 7737588567439247107487689848389632 -648887338268249254253911490525396992 5057035074354839328314421363605504 1240505648810114696570998244769792 -272076926252843778580002333031137280 3879530734040243996813606673973248 182022998872774711747611491041280 -279815047526156213717717050869153792 1350744422551114243331913943089152 7265831821828042033981496957599744 -317139059268468114199836116830388224 3358222345540411037709323231821824 3248891093834393479093748362117120 -138509987522323674983003902760189952 747056229009375068022886524518400 4939499839979299590363619444916224 -714246805209227204070997521944543232 751845844505156157630966996664320 2643980952707435776128744521990144 -811141260616635733288522228705525760 1737925778243687380924041009299456 7153096074995291688742788052025344 -405981515033320791324018301892296704 1162795371238201369255798800121856 2744579538047576277860265354067968 -895748459820875465836659733858091008 1780852472627517288100585346695168 6599645202042341501168318544871424 -211004824718311062378405382204686336 7999754858595192931581186908618752 5772961063043562420146094469021696 -406509159640438499813228220333948928 8001786185498632562194158444347392 5173910710201262660852368980049920 -601462186380225404699321685359198208 522754030184763398490988772065280 5996422366202230641747280267313152 -75827238551590938396184781250363392 9397643752209030844000264060403712 7839849680605643048014524413116416 -13027539154968575801798939453161472 733461461477425611566772744355840 9722042650324745139560344144838656 -751964607962485808982069804959531008 8028222959032023739747239114833920 9512780140791528096945808353525760 -897229053439065455252587248265199616 9686933001210418923583580003106816 289417677029872446863037647814656 -58096634392188790414711016315158528 6157526582550767839314791895138304 4367654406598664487257786340605952 -553898951729684750108726018869035008 6318061282570685749355903243517952 3325254663037078952551240416886784 -880175744054889030009748460457164800 1142618033692878542780884936818688 4615442074469008057789373642440704 -941571688512091313437707684664049664 757663152944815459437416829419520 8985382510356447800926308608770048 -158301178294817339684560081478746112 6889864354326162340749076007485440 8937750899151864831725933405667328 -983200964708651747760513117008691200 1744164059520674713208629879635968 7601112695116606520809061621956608 -100669832178044511523791007488409600 1987950132347013524669292315934720 8599224830361372828750030726758400 -515797775687673546601650744404738048 345061756373853174704850937577472 5681258500933828886531774672273408 -901017698897841566089304883945537536 7598132981261608741196307684655104 5160524594664138597101101922648064 -25504120215029998621090961158045696 2851421874125695384500792106942464 4505009368461869629391083342397440 -332683479894904670408642664830337024 7452196584432040102169293036191744 5876853107857791681425042267176960 -433367453642432824513913270241853440 5313759945038345427178026904322048 4120051347000892816596098843934720 -981021539895687953412275808419971072 3723260455087354930230191980544000 4034546588039414910245378130444288 -195158853459127760638523010046754816 4393967461647734611331836121448448 2913839595969921264066715436711936 -511652951771497302665371027473694720 9412809978322461125870950056722432 2315575729929888796458706001723392 -176478441101640123202437761611071488 2833593891864878570196377280708608 824611804384632737699749320196096 -542900169742265264864947577181700096 9315869750902852304284777231417344 6532134453248164364879327876087808 -640264013450288441715534178778349568 3684226687076121590296864545046528 496874322087364752560316003385344 -899913259169743226128670429145989120 6354710810954335760587808361676800 8918477218347508776156400009084928 -262637776873842745622067709093085184 4062364369446726755016797772054528 6585319805578010578856116563738624 -147287647748190633530409148114534400 7147319910801657425600548670799872 1706805675486636628009035501666304 -861127931796912440482485592767070208 7015936779994695799776173398949888 8446815867788808435392087825842176 -481928020852952035041169066598334464 6843076159325322244785971077840896 2383024555793364823026457452216320 -556902031601420767444977611389796352 5854578886967384705747404554502144 8908100638409978338862186402676736 -506034160156250647582084723912998912 5501642910326634147999799509516288 798410348459695633837359907209216 -239902554141912571481537702860423168 612906638427003443515594775724032 6203174527515233581333637163384832 -960246403352472857278748780901957632 1569744946931575650361200651272192 5606452312281923553770366071472128 -314751928417543940449591748351492096 9636282554987965927266816461111296 3535297342610007900471238093438976 -707502029166311454106260168853422080 6501433865009005701504826343424000 249170484067605070857019427127296 -455559413551898072352061846970171392 8111857795388909322624714045128704 291072151892901241533765947228160 -907222772964373770958706269308846080 1730245316766683000879605031632896 7598310655648926550680596050345984 -472424953385763767309117223749025792 2789623200560182231324629495971840 8918557224345634702003708375334912 -213425126564947404222794926575845376 4741530137841248573054975349882880 5963122832041288489978117476057088 -721413461750909982098124084260896768 6733771504163675552141856988987392 2633690670955296934645081997049856 -844575473046218969373286544766402560 4806153691031413509733278233395200 1072188801677621628987455349719040 -897994344390780360920232996011769856 1262786817399629429718870055190528 677183743107323266904164346626048 -720066411951422436569097099039211520 5671491453335735202687020601180160 464132158871352415098746806730752 -830229476138631963643593814894968832 379743021385614253393966920630272 4720801753822578180971379430522880 -128573126028014650776036121910444032 9449924012449562996192040059928576 8167848978754577107148063954173952 -367440660970729737538361531830370304 9731294363175453441211687256457216 7138212853177138819542512811638784 -299128059037683168376056072693088256 8730828009546450197305761325907968 5279529872157790316244258888089600 -467952156901104043279082024612134912 2828026593134658860047120847601664 5806286433831046310851428835393536 -663206156904529195281679086679752704 1161478860639976759937137383571456 425319057809146398358061285638144 -789207841386706033691015058307416064 2558857561935606641808832953581568 7060762262363547786869775588655104 -769598177628267684707627364324999168 9226808061849844066016304660742144 3847798929857071720001368724865024 -97858595371890749210937608848277504 3766711891095246233508431196585984 9468420611724124834127687723253760 -906690805190393580770539460152524800 9769224483223592865649395660488704 8225718521423495345065278448861184 -760040171499473298152755275084333056 360935903296382222551128804950016 9164031322383306763565239766089728 -892296475755071725286756824016486400 211688820540085348927875615555584 3560265649564561438539510047571968 -568499378381174236446243951462055936 1684541249864951044316954030505984 9429671951078006562521366417899520 -217767832886303378065457068449464320 4540095910299430348983403315986432 2327474970393132505948133479415808 -211073146494358629155268140736708608 2287689199165022805981265492180992 6875711759992178565352117917188096 -66708561255670439409629063536443392 9456862012672468212921890718613504 1242463162153317213086752306102272 -206757418007659476256194916062855168 5198601296480648232755756319899648 5482365984403379341063084960645120 -677041509135804005110838121264578560 7918197760297601468029186512781312 3451585042315675842053134878769152 -498776000861757395561749239153295360 9951951170741283415893623504371712 4345212481513119905943937966145536 -809750465838295552128728878309965824 7801187419498494296790914624913408 8745482029415755216902622176870400 -345636015674278451673742224861954048 9511230410998076023586776598708224 8581565577729116660805569305640960 -288201422674408672374729888864665600 9738134070177445171148215361208320 5216505783262333579055601157144576 -950647161243101538483060949968224256 6293084812142092047127955915145216 8859246440974599265921860351557632 -348715735488656892500753091139731456 3607580240955237564289400067588096 6497251473179247007549825107361792 -782260763460836574296872580080992256 3352257988713837872243744264159232 9904749692049588613788510334222336 -537738057153471657975461459322208256 2663258973133372015264337871503360 1254552334502583548278110785896448 -404491604306069820888179343607463936 8868505540515254093274572675612672 606385434133650267222097556144128 -734387454664160951783356723951042560 597586364024560758939970076409856 7711752834291225073271730008489984 -192386355574530219006083252900331520 5581183326275391835393623534338048 9266895945874079035503395295199232 -947701439026065656357679250391695360 218591960995206460337125287002112 9716059441355677859813255909736448 -952383444559800360546525286462652416 5867159669664573375663877161746432 7961120323871824694235514240237568 -484773288811191146362867820219334656 217852652819660808296433169989632 2431336057518533430878012222472192 -905585330944666864635517149124755456 3125394010960431003138013645504512 1604737165248220816472813980352512 -32908664023265771228728849279746048 3620575245236982461772659322519552 3674336028452106177991652463869952 -525071175449180059519303276700893184 1023074021031775706008490520608768 8857918448057562844830418075648000 -875614488725205028682366604401442816 6815355670280793444804904217477120 9931313575033744466435831175839744 -427200803825428709371010517701754880 8763898099214038803495494803783680 7518231416992998388086391376445440 -125382162050070938595435299507011584 2463898021152813092029223965556736 7259187938297641197368008505294848 -68163775286162205603735517412720640 2976487383930823906645283381968896 4593260844708943147497208670060544 -78536827560365901929371556925931520 8344144002230797586817834410835968 4326891926435391248454876062023680 -506322444845783880231774669036847104 4382411280332093027530377059631104 7771449201148828222582242660057088 -779843894264606372233770451957972992 2783869792192197800901732338761728 3507822554333452507748490094313472 -921969834101715890606518053092982784 7358731365325092517399006439014400 4783563850338714009975983517466624 -934014397882881375007114315595513856 5661141704778054392964031291850752 2107885201008088209245795770171392 -716331485395598384413946796969033728 1021149790917081980328271604088832 1832863844992611051810490809319424 -175551185130549988626894914242740224 2717651418233644883678505346269184 1205034459931474404315704468701184 -954747580605378732130229192809775104 460420291747690258016280149753856 6914504315756976269677053857497088 -762353630399750068162787705257721856 1633927008166493801942536337489920 8423201864705404220630616575574016 -413752674806399301143485840042754048 6771148338134309427037006033059840 3152080391997363447762333114302464 -415004079337615862431980788392132608 3510250276112376139448977146773504 1477401652249072195663465795289088 -982169275429205967162767626158997504 8501485347372293327412151193698304 540876437699435097835949046890496 -707705507722866061579014154282336256 9363661484614502626798695151042560 8858710249316042132379895171383296 -298612356024190493044726538270932992 6326675667628918392204713642688512 3752562128912826114984370482708480 -226128932267660132234710222561607680 1870297961420039688239501918863360 2728968323002269501002729505423360 -697339500791004300217749215589171200 4078641263344026792745362645843968 7101057653281134335515287883874304 -787826573653844022424776724570963968 7561130923889249652177325803962368 200166138973953137049234525126656 -993104541726419472215264959737626624 9069257731576883576067074914516992 4789873648712173816983262091804672 -136964210341324891368099329744044032 2092229504401520465365611099193344 684876225643353788128975439003648 -306527891386049270509225821851353088 7352798234755355760958670106525696 2363495325301108580799287255891968 -42319360461507314570827584254246912 980379601688661934925264260694016 3090850889414181083501404316762112 -457085903695071261150120024427462656 1199720359169986958210924424462336 8201000304009077136498417429643264 -268124388590472276303269038299021312 7817679325198930263688429336264704 4204139215939655735606367196545024 -239463701617351741554100191245631488 9950144695403675257870429534027776 9280645647385750337476958032494592 -994687224965789998277683077458165760 1912929951220568426639117294501888 4540157406448941400089043417432064 -452863188482188019443614329314738176 6025757427662198089210855965065216 227427550294467374927084274057216 -454432968605829484339660766406770688 5548510265472251022180532103413760 8777121026705267773356338516590592 -718391942882623413869399220238155776 9564167592620939912848789381054464 1898054200579672613985593229049856 -334333838365182908926115546440663040 8839303728740949567252534684286976 666056458610957908406660587585536 -494030560913363280129430626385264640 8060093565244959530996617095151616 6193759468561435020661237745713152 -784247343200808379783842510093156352 6733925624574360289136869677989888 7695432418249239994453081523748864 -788048327275852019687170979080962048 3728052698579337364236789016952832 4927530711161852492602296149999616 -429240521103909524125526569387032576 2499450147818454098848233264513024 3008605020249892722490870236971008 -207877926969737729619596146370412544 3540181755954275274493647835365376 3239483682585508538540304449404928 -946574010782768179741985990349160448 6946403088792748470889481626451968 2338319450092971141782580536279040 -883712436257819795079049140202635264 2500967341935587663333364762411008 2853043675173888274857798712426496 -300517832793496912198075676975169536 5413116622334242222913826712453120 6316748196671434072728861172301824 -912499080538810256479253610509631488 3399056296701988595084858832715776 3460234499006081296641223200604160 -152935440693225769913468737783070720 4346371190643330508934279359102976 4889214778896496064233104293756928 -151944290094012755249527502271414272 7078414079155276843357340283437056 9313440576909315861475324470493184 -519593780085752010359995912062763008 7534345990220632360439147294359552 9003235710672896431030271295356928 -802818567544757755524500433594744832 690236840362484001958556906553344 3714017396904519585136966534955008 -970127757850638314354720384799997952 3293442624125129153345866063413248 5627193434231694784561717744500736 -670395744611124329542083970565406720 6065313932528815476409209477660672 2824557807940005478180093580804096 -977658552633779337006337835665457152 8411971376342010176347607069097984 9149051102949870425602745769656320 -853248124584497670795740561199333376 957241799980120559970964736049152 6896703840306527679133770571579392 -388402760888289548093617873042276352 6201490894128476412463580325085184 4206011428903185389285017196167168 -533043939804868278481861117017587712 1151548192109972055569118055628800 3447645185965686388911984280076288 -270288123717245234845113806554660864 2088775885635420882440511310266368 8840711505030285176856383552749568 -308333870363843929639051329938653184 6841069184705488053084010460479488 1093016918766180626821189820481536 -643207292909229633333218002094522368 2709464132433785859376825392693248 5921634025782272804664058056802304 -541312829023431601577722877698899968 6908848627981177026482503497547776 6730642519183872021626182403358720 -105210891853137853241104722313609216 1815245903976799485516430924840960 9501581409872147992177502649843712 -355687754724145247293668182737289216 6799292771910446754872073503375360 8921494802253716307378304547028992 -511399089431740517241387783313948672 3233756024908544097076930460778496 8094154962304149374327123647397888 -739384683167171683073461411418996736 3398524621192672820367176362885120 8875244160533907883706060761989120 -315310411517905275990668622646214656 5505789234322701498909955960340480 4310083205076405706549674324787200 -655353437637720615251506742943547392 8241441773135561682428026805026816 6260524739713264685892785374494720 -470368818760664955458924513383677952 8053257550061735857914358561505280 1210126510598582341379428123148288 -841573302096183985776048696375377920 5518016404289935852288049875517440 7512920613553405591013544647720960 -119539763233992262201164148865236992 1920329549705290332938519806214144 8393402156311055413291744594231296 -362386976224828736292452538702102528 1355287675662256131885262513897472 3588117913109050978219205685411840 -70497852024259512601512040332263424 1797183535896402089201039315042304 7590899863488064667121858922938368 -869859949754594309582921918215880704 7746119555532910202873982599823360 9810187653010599342368949981413376 -885903588122784280737703624748040192 8567506080379676235872597815853056 2944865045121829536456411191443456 -728674601762368402537894251258183680 1224927457582548953108162950463488 9387342196950057152104177839636480 -365103085791657345045742002236293120 9268929839413487832840058366328832 3650653190075623473474126573731840 -933296831264514318069428103197753344 8702143959412783091467485481795584 890459399072615704183106147713024 -77264181046768533416883139299508224 8820220128722571419625790489231360 7178331783878140340186050163900416 -823905501916733944355435000526536704 6184159799730863061414365682991104 9237829915084678381938989007372288 -464516675902412169470341173731131392 5604584609362810399705072517775360 3487708043880001127845738806509568 -816998791374785868081448167346798592 8893221458413497394589263930064896 5733793917969589604493800207548416 -415866781875668510875250975739740160 3899098008058953836386292517044224 654914101330588444126445695926272 -479962310752527001922649902544846848 3943925312563999155460047548448768 4214525331735141680942747440119808 -253661795194584902284016680888696832 7079066625579300181153919574999040 7162099239508412516274925931069440 -538511672096732559794455793664786432 1610923126917520016309645790412800 2496924786726255119198644911210496 -123085856276602211984966915608018944 4434906830256993291192458448732160 649662846131436004763220733591552 -447843201650839765942124941259309056 992725891107867383162861460127744 3659895319521997756493100677595136 -191376456361558111573152003482714112 4638470871317088589969307375501312 3928452635481076657246978457993216 -603976434187379107340523701194981376 7827684436621521081041628241592320 128003540518899191417983800967168 -198602819620455003541430602683121664 5425344638154825723921601329627136 7602982143393630563306882069430272 -392343610299025888268863204753408000 3394071332062186478396232878260224 4338249444418853653527155900940288 -224188348878139272503554462911037440 7792034765891352891718357233958912 9842726229882679826129789164453888 -255728099414967187350123417733955584 7291298256996021878987362205171712 375869728440229592030453289713664 -576469043323989175146357157372362752 7450191448814662600948997609750528 4161108631496841055970140314664960 -686308022896441579706491469010305024 7057431190800805381677201940807680 2649216362995103678985047782719488 -220790411272545611853699566291386368 6825135844202035074816943274852352 6526615337055213273266388446740480 -291811982354494405744824858722697216 6004142261904079693574006554755072 239084666641078862128088851939328 -182040464706652319099156977567137792 9866511978982892994994071540858880 6999289687008592639173104114860032 -670817720345735354569437259415683072 6133915423984565550039120035708928 6065726180024812101301402710573056 -323517255081962866774064058117128192 2738153718045290199709191212367872 2979627631656024941204300185468928 -808481173459565367365665492540850176 2151788670343925599515422262034432 271433561880666756465877999157248 -359256764361498039828057136243408896 7459065135291584301738084888739840 1405743620042252358992505767723008 -963924772604611392395214184058454016 5208017910450845289476034505211904 6580330736152104157897432655462400 -350094778069992422893028044655558656 7152899990508734277462914410479616 6122037698996747676665137065885696 -277247980077724983890416502229172224 3410400507178032273877237231517696 2601462124756464911904167386152960 -130493347986648527894670760694775808 753694827315467841730037512404992 4477849498533584923166797992034304 -185050294408495412560648261584551936 4220711273485763651520723010191360 8129776433927165655815586611986432 -175631736182047247670694466845409280 6974710721376219968366310829588480 6840966510421433813816324206362624 -832778312537054202394658055072514048 8660913633294397032881033693888512 4398470652649893183655070268391424 -304717151573184887322931562482237440 4971910834677246310916356747296768 792971362589534304513318679740416 -393206632579509309820409474151612416 7447523604635369396377081132089344 4442168208497920730200599903076352 -146517430794981655588913813785673728 7035079610378935078877155718856704 4856570236523294145456957170909184 -639892950102660092655716221056974848 2517102719871398354061051192934400 7719586934142320704341758841978880 -105733632233885851989175946885201920 1940610662142172969514984609415168 1034005204175317700651222923476992 -792926953430543660878637323855593472 9622742073443239289169434810253312 2993181881221886792969830940016640 -688514557430136055371220874109648896 39753106571512576940271831351296 9166662183806296474301476271816704 -191778303612151279890512017740529664 9621520696882552029944691657015296 3844039052067188047215583773589504 -803946939979982585695276514303541248 4179525023670328382226254614495232 1689435433902648940986403953573888 -526459863466965828915374905748357120 7613387376847203383691720511193088 5001057678928984563178829101662208 -270471262778296742472807003470168064 2683893666015890876434037746958336 1853070376398391224797068148080640 -598435493688470377226664139730976768 5035730717502274251287069131276288 8779614690265471898537336665800704 -519519561286339269058276398108508160 6885630855611237364927740841558016 236759757284723694600971821776896 -179019462022112327418059869548183552 2766356452002618683655988235468800 7280117566098314034334662068797440 -205228213214480843616076644799741952 5565422694257739049071157335556096 750738782604527808734314704666624 -471174294150087416537476489757589504 3285887314876592627761836887900160 8168349378856474157702719364661248 -418103811700111614925060939840487424 5163059296616167628789301270020096 679841016837999913317841667883008 -101800254023536880802787957323857920 9716806024262144109438659228336128 112954089691311690957941244952576 -586830440931843935576473966942879744 8655784561481844380207817093545984 8277188937331463231756132501422080 -530183057611033760864126283104124928 7118181452649786651293405767794688 7482553580888209619617355451596800 -555880811729764106325307608411406336 3875743909703084437061773138329600 6473552436835964333537959641874432 -571141433384623012585510017406337024 4593238308456708487198433542668288 4347198292264634204768862415618048 -967808114839460540185163757827129344 6702273649861656221678231158259712 8005986307340500927518187106336768 -525100149788764921400265374512971776 8019041111564427149890839386259456 4506085647753112680536595251593216 -529921786026383410719677299782844416 915609931900456914497922867920896 4054621358759084695968623605317632 -756189366600426096145291521573257216 1657219019273656687547345455284224 5986648288021919735945918748295168 -598738307340766899861865102202372096 4483114081158832741608028331048960 6775354552664695798735872949485568 -374494765399044571261182685009149952 5296319153483487549280769967915008 1479739061648635893800404342800384 -33566231027514908910570761416081408 5771181700019445907527558114574336 7124609607504974123021990302318592 -247122189040890762464751431108788224 7089481265909548150755913480798208 5309123947997978215221494972153856 -941708428054579088813440869020467200 2932131178208818822480759330177024 5183158293690576941816642684321792 -21667227644076579018467383699308544 1838627090070873984362734134755328 5236079363282161458639459691003904 -232358213083365025088676680114896896 3005848480067871266884425581854720 8349402074699564908658323171049472 -904719882626394079433907841198456832 8060912190174262664662571687084032 8309937276119100373947933899358208 -19554811137342692472158044813262848 4793898542978654792993714422677504 5079039750253770526251711578767360 -864385415192479219855942405299634176 2515984442771753605784644419059712 2352116881337216321133693290676224 -193764360878229843318372534860120064 5833827481607470567256012873531392 993740275096114641143746405597184 -163982129350334975258128060612870144 1593548321637911595181400706252800 8761192392692566240455192953749504 -246927533794647210376713423663661056 2999530760764874685850477343539200 8870106107021668929957091126280192 -98543683384746590208158129421549568 4988161721525170599504462766669824 4923241415937273148050217780641792 -473319752526467030030161198295547904 8990778192051140645180021999140864 8341091580079683056942892112150528 -18930034971144575963451551297568768 9684020567632098255375240420917248 347255058600667273605921332264960 -918724942969342443408368345905364992 7822556175325590513211999411765248 2882473189136050481705587620970496 -229386557514263427637847893282390016 8560599466075002939081690986840064 5517171709346825743060435849969664 -191945119182425059328181875356205056 3606779035872495268897854488313856 6525105988693529485126974318837760 -816478158829659818849688541395419136 8745037467265064457075729165713408 5638847569526786792217011462078464 -82596762527753509756033808914710528 435970010501157050861739550179328 7518342105851136932812142501953536 -777953100873810239955798506258563072 3600256224359748851813230944714752 3857778127874834896106256286613504 -681869415670012894309289229132234752 9477852521104152589850390739025920 9864901399238543380840378743652352 -856824998465128608944302243920740352 8080099769239560917252614572212224 4185754317142801960150778819641344 -346468275521985613575361995363844096 256139366649270678140108362743808 2526246001938591096241793747910656 -876790074525110221900878096652828672 9321208233023857401532804616945664 6512122035292796735946503110000640 -369925754252092132920997259086135296 9673639678753102786603656882946048 6059114964204421985531536517103616 -811388211955195885177006889113747456 6663173186412130129395592990818304 4310918299748916709261150083088384 -984260855576743292483942749432709120 8455526688595035899650231916036096 6717326219879279660375083518525440 -674164399601843810679372612726947840 9558193032214919001066635637293056 6560974581014816487110963598721024 -831025302561464718071071947404345344 3359734014941147308142831597518848 3055162375402375711279615976669184 -272052489011873396525506715470266368 5764041246344432860163955937509376 6681222296135689673416986826113024 -134943063175336789944953334090694656 6926326327118249959382607353348096 3740665143471789214149740469420032 -855159399016897007280804386113060864 2282841162215798432849388384550912 6440330203898661005020636959997952 -744483549807534766239919999656394752 7851265355975166186168601869811712 6365969748678409731371873815494656 -954501762390170494965254575336980480 9795692057836833333468573447749632 2473895741228843743601393838063616 -568267607750013506461192086351773696 1485698604526058288881488808116224 3569400299934971171256830460428288 -933320809976961204985261773658521600 1170420229599474905522910150000640 6687460660295785173151256363925504 -547012430552180372785420490678206464 6427177071117089621382550767271936 3978473441453324379240886486171648 -660383802010893606637241941165604864 6724252284978682647629028606869504 8499486456395800679721886898192384 -275412409210867596516352253776363520 104335926878789079148626282807296 7350021385715604595916149354397696 -97276473841310604407674721942896640 9600916028295791126425791950225408 4802100482490355519414698179035136 -985677642597699439045952755157958656 6500634277907095434425369324683264 6713149854721194452077128370356224 -641220990741443714628877571210608640 3293013831711839679339832432132096 1685737561926574545371538888065024 -790177935404823731257110463233654784 1877767436049313823237066960404480 3827323954223308593262665377251328 -652047570333759498702768991308349440 4234080039693797064064735859703808 4112514099296906126169599708758016 -470728145556526000134411265656225792 2236432992252597139143905672953856 6559129623159910054788407756849152 -296822141878246093392369884680159232 2364050673006896117006532821909504 2379746752493447976923619991224320 -713058380094285620706220749914898432 3816465769466767123102774402744320 8626761618346912639432772347232256 -595147197714795683532680208177954816 4166328546875929443314109677305856 3372932854216152957189099182096384 -826998259332663611540474281783721984 5061014632049469442091640952979456 8439488675143679363023873607991296 -509181891199076710673245034801790976 7844258049184026340082358216032256 5206968332109959135023964669083648 -567170019827625470333030206514659328 4443092043667129235465480746041344 1905283927386773642905585012703232 -221260037269912931733919280371073024 2365510259239621921223235118039040 9684414224000570166246519892606976 -844877043159278055158760958117019648 8248459989616783023109442499510272 9349902351650867612112470103031808 -475342398868494387850762172749578240 3619593223449808137547052677595136 7579054552904313319324897203191808 -175050605618846477275236545100513280 4563802299600131102311356385198080 1422456352353110367362829170769920 -295448961515245312717793669758844928 5210792724041803088902067979288576 1844585524631763441888138278993920 -542413603154254915662215028200701952 4289942996134927641278766666219520 5928795646378023650887306416488448 -687827585783308924481256169207234560 2853261356414782514453866965106688 2967999792052981093663663869394944 -59969658936315380006916475221704704 3167580984201377929994166914252800 8013309353757972620697819567620096 -429283463436935316391610826205691904 5031685104463138883339086997749760 2945383555918857584384876459589632 -330245382981527030414378503537426432 3560322899737039261049733100077056 8251726662204993135986778985988096 -272554297797580984657432234480893952 461630987348948483882807755538432 8586787141769151075628812643336192 -503662018321293693980783670877749248 4570420727187009220150446480424960 2743823649618008191903848579727360 -892753330217847358918881974453010432 3367706417919146150414554459275264 8910846267297717954090390784049152 -816368488827533578202671922626428928 8409489953414245779500482296807424 7952838039120530943802468095492096 -454048092305962395667318440170881024 6865952947989795578517262258143232 9016161604832743374291959642324992 -368647795594128823283686737824448512 9849687736535837875376456218968064 5651990480258449031096951510138880 -834317536794457202504216048643866624 8902902511730936059237614189805568 3195511525252349324354670194327552 -453596546152477091322877526337912832 3486940372279297659568609338327040 232134766631398010334064307863552 -663510599773739635894130082628763648 8377580883154479453461589151186944 4935180201136175878019356945285120 -658198723231072738907287445156397056 1600577756370562341308786318245888 595886368352995622503717254725632 -140180749288797942620061005667893248 3292665082081619024784484970004480 9090063505807130141518760150827008 -106532122551520236335600671645499392 6774350739125064378337286781140992 1674919761654217248801242493222912 -696946929394035170325518205080043520 7730547189874067197508147258327040 2021776769008424878043085158744064 -633985274333127953017820572781903872 6833833877926581114611804097478656 6402184846369146196243237660786688 -827544073949104616589089711878832128 560054163188191345679945338716160 9610349145741726227959129820889088 -760167775194174149425747378441289728 1144568367553909419790301805936640 5648899980848351881030459652571136 -835081914989395785413731475146145792 9707352963223446755721524876935168 4867689256192045594563079319846912 -518240671161418717641282255547531264 3675160290212821011959343646507008 7653994170821952007857391731212288 -845014049073661819205565908716093440 4134454072316567302256000885587968 3612934059927628741301385300017152 -801858600791419050826946737747263488 8463183619066498307221592347770880 9667676761775501281330380092211200 -49163468374961896048268402977931264 3923680042282570424370319534850048 7352853543123588902205305695240192 -511148649777427400409355013620498432 4289775763214947904625151269928960 6762939794821581249044637793910784 -186142006457187424367188590167326720 8040675355143281997283700638744576 2282230874615146480674675615596544 -433623708290016086533391413374091264 5165880221958872465427566931476480 2131255621655424585040382228692992 -306363260481996598157534783141314560 382071092977760401155351644209152 7892623514521218638315421870063616 -261894799377302957163626790398197760 5901971298403238916625693837099008 2319832136422832757997585481859072 -81052952101471968242230813368778752 1883448097732041434545467389116416 404794894123370715115599417049088 -910174315999630900815497266276073472 5812790640402415067406456338776064 3046003916145192400248616769290240 -485479242323582354189677941502246912 83418338607607997173170421366784 6229828491095686206084343794761728 -448622267829495604233396458952327168 3538404667871043952710269792157696 9524726564538107446447889778212864 -672952355841932040847249668799725568 9572394791629826106448597103935488 1285276387730439807523083773804544 -837959025293487622438971157336031232 9382735573350217865104045679575040 6344801042381257525306627972923392 -404731596953173466891299501524385792 7056024608763524747836057951666176 8290973234543535836406718075502592 -902608981550808678219592448331481088 6517321350119070861505110848045056 974195724618736830575635318439936 -21242040700702733006923033087049728 1716510075572931749569372507602944 1376304315467980959086939679490048 -411711550972392237995644001219248128 6648260723187139529596006918258688 2668218744292833761952684329402368 -418801664652475991204268304842620928 353575610055227367397578871144448 9730861620980842110230389348892672 -907261971954717067113235384559992832 9416668399586790339341571590193152 9958973315480953073733645126074368 -630184599570356978278937216287768576 4565997953546115357611002366525440 9193463841972279355326052614275072 -794602929345532536460767409395990528 6239023891667616477267985350787072 7237032844568230089198304346767360 -394005906832789839870891891726745600 8371769748766659415484991012864 7924306996424405167858002467749888 -215560367960719345947586508999360512 802011126123522564427881753083904 2807390687529620165908630903717888 -321630970419574125098853676062081024 2196966980949612483234350181122048 5700369228527765727506886723371008 -720662212863227450012229163382996992 9839268701328599089095177851109376 5788245699445913439651769152962560 -465361969516595416284825371774287872 606975520334971330576148842151936 2026350780153661483239434203693056 -205271500130005473288722500972183552 2792667789321483235854123377098752 9284994874586204083579279883894784 -842050062221330729021351204453613568 3693580457088183697828279729782784 9254951279851049419507495082131456 -630728269861205690638051387717451776 4857626205352606564922572446629888 2006741317985038707072709976653824 -425401462576915796554640993965572096 7087239415724510362623919473557504 8989532661257384967962158247706624 -633055088560536021074194131790594048 1152616263433207996879086897070080 6410797641074250974415067147141120 -16700718793724861191787929183191040 16089170936317748405087259066368 3687203688447608791702412638289920 -79333463529044508952967073205583872 1397026568408992987713012825587712 7760049340010673892385644580175872 -857537261524088311089867907689086976 9731249195422235666938921257795584 9288140848130754745017034789093376 -850946163464167736915874608024911872 1879346043432848830226277133713408 2190640811134104825771100861366272 -881140824971014780896037012632502272 4634099720330485247493907847053312 2657286376054475089169952974831616 -101593173815076680779689880327290880 4514398240786222006593475684859904 7396702136977208357285198131363840 -780679194024764884683898323810123776 9523233911441885314637449905831936 238624176695795434373390490664960 -409942856220754855317836249861980160 751052876622325049147576138334208 8259929837410304218932000638107648 -738898463311795763291304280203460608 8329119537675775642220633369083904 5215388181593205121126092412813312 -487343204480641598771163285193490432 2216964571717894564311506098323456 243283426860472148271266265038848 -779641831153472762123648581081497600 2616535375157601808995112726822912 1621797219549978402319163652571136 -372428083781008726825739236562436096 6997247800417978840802557555638272 4026897349766834797851097807454208 -200544420502363128110988119467098112 7550412409986913673482712603688960 5754110725266170633638459530543104 -916571998212533732851389057852243968 3741419418577139488334480807034880 2144000547158472075852064330088448 -918084942080300287227739221172158464 4340752580872580330946863197847552 5722013910521543047590820144218112 -406312416953693614235534673026482176 1811281699999819962926186138435584 9103473462359357613568176288694272 -287898256159590427468268701703208960 1918938695963854739465573725372416 6066264618996549685582666250846208 -905839556272167289967870704558800896 5299195483891386352893658012844032 3297186940989587636980020343209984 -257379593158732821924655718434078720 8200436089771029270379866963836928 6228292019659068814485172145618944 -897286376593671208389067417677987840 4495616652366382924639980855754752 2741477709875235950111134505238528 -865105724221186871967809631193923584 3627593229935137182229398481272832 994819570775606720608056415092736 -597470666114334460503279861135048704 7109816536956576763183305142042624 5794488050172275995807689983655936 -474181640608530851531654957809795072 6152955535590787679421814531948544 6554794048813165839420163025272832 -118585344941768193785234620573286400 8205268163588929265083030343516160 7548296028300717432116670076289024 -966111806938859770135409188038246400 180305977851521532369736589901824 6135476880089548944351599383281664 -989241342545757952872417827301097472 3437267982800630082558477924827136 8871340932280702110404837904482304 -893794077279153921849338303942230016 9648492369521286499608986814251008 4324770654021761793156713084354560 -782035717964391267956329300562542592 9571447199776836173539899657420800 1094050216257153888528032910540800 -746754822565679957453464416634798080 2765700947498166930301101195395072 4166504191919278746392837029363712 -942719384025499442580756379186757632 1098012363262462326344677870010368 6466097588290826584103086148550656 -621448071504264027409916714368892928 1247254696482253180978912793985024 1699802077380527909048197616500736 -581125223161535824188981470272946176 8580293593186121117106929011785728 8198930893741829450022217767190528 -480247865612013339356003622140772352 2871907559950790036403253820784640 3011321595019892552286315718115328 -722210040369301882486915411705069568 6679796776020390869474675949305856 7340684496809887988445232395976704 -46002123581220362125928954872201216 8362742689346829535643748775493632 3569689481406073662382947612753920 -561874107318131834127212586047897600 7488846013066316569837372075671552 2531762267509515114927631370289152 -724616887646236303694724590326513664 62485281451350460932682678272000 6739691362562722950931394026536960 -623057031908068090799867851171692544 5841315353970348341279270390202368 9150105441588699368952163045736448 -245234757455112345857577487221915648 2826438921168325925767963150909440 7717612310962120082413361985224704 -900489336450583050830498556893200384 9815693240674508774914668250529792 1173156525336410538397626489896960 -246879686930315776317186621935976448 2438291870636659368730332491677696 3449918877926060097213014567026688 -488961471563348166302313422126055424 2260921149655164308600176796237824 5238979398170847809844045238239232 -940735563560849602008275237610717184 537937381553241475186366179442688 5801240560932529643487353383157760 -237165205962582780098761208824332288 437465595498316671339279029370880 4009410916131190864705649536663552 -734117494415281047213157199541960704 5766945471954744112693743238250496 7612179950940137372604275483475968 -672732357193024492190835672734498816 5010841768743032782972058251296768 6840887973504184057579493897797632 -316959824416252432893747923345473536 2729663421392961437053608049770496 4742104558711156903325939875708928 -572134765119917980282802156553109504 9668081456815331010396576653770752 6027658383129708052557132311035904 -300083692498937436844054643822559232 8212915697945155022727821396017152 6066081838964997129825350158647296 -784700620707070313154027633091018752 5949412891786278086608241934991360 7437369440057187654758460442017792 -459310944700824838192260681610297344 2544921394678441892277620031094784 4913927904480529590731858348343296 -872828435065433981299887771691778048 6575728733107493989825821408231424 1049426109703993531868260773920768 -174290152493060084148940650819092480 1602537486346830300590336794165248 6061909005964282738085706476814336 -589101231236205584870911357149511680 838734983836532919148398470234112 4462356653783860486921507292839936 -676525360479017319077042689073479680 5382035006751096178618439103938560 8056353480543683058831454495571968 -493815174348470188522786279932297216 5470234938570374568721669148377088 6909951261272285824084213567062016 -243600252602121882888401263850946560 9517530972917691232816673167769600 893368461603169259459152309125120 -968767220361358231067522217961062400 4164868343520504358631297807024128 2438385041347074462518738818170880 -153903999190010187492753546714021888 1602894457758910435029157299617792 1614921676497360508410586539753472 -249903887633452881957755730421350400 2761382237391502550648833127219200 5365660736003703718175644093251584 -299612577900365657028926437540757504 4778698579227826109722804944371712 690562723656242348594585753616384 -780648933975697330692681619763888128 6822802545693400540160988945580032 7500810611920669938726482684674048 -552647739194836396414000696251121664 2830024372742206140576241689821184 9224978248900615010515256430559232 -742724357261307415370405452816842752 9862663636973345385555425734164480 5833627522669661946956482156167168 -735478158575556158262271945427910656 2678303500949207561328770016083968 8329347176899199214321422189985792 -746565884461531509286840593912168448 5985291122767303975730301697523712 415201059365817891871280787881984 -326686438508782885535376728756584448 2416393192367179147562444350554112 9310020795529992835200292669620224 -220583053957095327823162681327616000 7657510730243147942160093618896896 255577117342544045015851346165760 -985485359408838454492213178678640640 837879078351018177123244797067264 1430860103618930215764819569541120 -489214668968303108171969808612458496 7449604659935236835145225980608512 763513663334073856915344386424832 -266304508789809600368860680100511744 2207555435029779423348905352364032 1642196255582576091633418248388608 -699108318988433359529940965795037184 9866365575346380846053902717550592 1518697471844672843455162000343040 -710630194684318313228009326776418304 5365733871081007356519293902651392 998742777802316285107068792209408 -578613523923155033633921611925028864 8230775554265623831533783059791872 3508077800116619000095741141057536 -35176793658028975711055564047908864 1842043885742065584365855146246144 5071957730397836869296986913767424 -225314227029934177010673876666941440 8225122711007026513825032090681344 4998070532285872389945017721946112 -751962271015070077922579158308749312 885124524283066691792085612232704 1516653624979348353693438181376000 -66068119938413464849030078634393600 312204699764225489518760132870144 665254568940458863317689913311232 -29688173786568765506067474151374848 9600414790049567250931688818081792 7526943180349535825702202963394560 -885577602543879046303235970581921792 8832470726893562060538046891163648 6731912796758098763357237232533504 -298245238750706850792880021025325056 3510119884757769242923425717026816 8265965804977898255242792972320768 -861296149317505647381054929011474432 5550129756242830505994782859329536 4842858971430749791098554254622720 -437503844836117320964706947932618752 2391155013545321578662725194612736 7976320350587086909770633511436288 -633463398713960140584316572903931904 680572817051346696072315375976448 6589212185501367467582556636971008 -216646904966198469324703950857830400 1043044273808322795400169716187136 2132668641727513453249787848556544 -658595990442674381969926158720958464 6688384886909454080172258026848256 6405984924406530256439785302261760 -686615044549831644697011359007637504 5413129985097064664777925020614656 135890021337914069761082664157184 -779860340286367575072896615379369984 5338112048231388740803089833918464 88961449372233058715041313849344 -786219976722464041693514869130657792 6402085822462306362450544871604224 6763065812822078362697343055167488 -861089114504493703257880088845221888 7939376479832689604487111308738560 7017234983451453601277331325845504 -870154631106777074714751921364664320 1757379727699032846954405044420608 6589864655147105479527748463493120 -896227900095932975701727432857878528 7848391457117134790007981743276032 1175775975114047174619286426615808 -146641894896439840204012793588875264 333390293272549532036108243697664 7044035381348533527056896801898496 -826885410327057218688307255899586560 5433025414298006332792275269058560 6603463495180842012999905032798208 -513920934035208691499148295173832704 659490201731811920198528973930496 9792279234918055266917669146722304 -466069489070662437762212234394599424 8034490108741855275693736248475648 3988283757890160638291380069728256 -763912996331336673512232200563589120 3792048231104328247765888573374464 8967861636025179824251860447920128 -838246626033102197353965241111674880 3342640355035679209410338169552896 6574399300341485332081324651970560 -855798811641476883455048138979540992 3127002630430071078822033789812736 6263121970957253590865114367524864 -802910583561047497670572825139740672 3750561903941560786337308656795648 8261463303220110072696643740762112 -316796625212730115966436482373124096 4492055330450279682025554551242752 7522293353927801366517884974530560 -748129346758581521212456568344281088 45658352700272861738503665352704 5103976692812969142962211872833536 -686880372929448561656321761639137280 3026205463036660661179826927828992 2441827285252762423380759082434560 -123072688634176453174351961918537728 1348595023152005142431422870454272 5143320595903438704019702082961408 -588973726757100578973506911606931456 1545969146656653084033368687902720 9488770310804754540582137522814976 -591148529055891660754191011350052864 8656864968530282259178834783895552 6991727184464034121647440833544192 -699022400592419035517156902278529024 7463932432694025684717975977852928 2244042777829866569628305890213888 -263118473878303588440707774032117760 2965561097619543011564547286761472 9301513829635705657607022362755072 -491278227553141631403803688858288128 5616957961944930510471501715603456 9032999357338379330995977059303424 -226181516506997101685683608189140992 8239881354673655658947161157009408 7078590636068822697087302021152768 -187394924124740504049597402144833536 2388647707892845845577483706957824 5909842284313673757038902027223040 -57007569213057389424851549436248064 6837707849354896441482717914202112 7407706406047473260400864753876992 -173799415934190300566973098110222336 5529281581998281612983238943309824 2060744578372112636612132238000128 -886268705056264260991667057494851584 6574549586138274471495897351979008 1062289984236179260256663487119360 -787270902429207978109059517963567104 3150917495197939508361124644913152 4825855049827698648468853310357504 -653926205294494547291734294468231168 4701384513898914784251238118588416 964079014072012416550023741833216 -993251986833185643448218661647548416 2034911135583026491449695855968256 142508973851155425982131212386304 -907177473754007157680504892599304192 4178285148022464171089676977831936 7859347560516397315392605228367872 -883326570065641146452652831721652224 4694278338205714669363333836046336 3017276922600397447321425459281920 -5570327986649860782243189639610368 9457461814311816011281191279788032 9805858852887714282933367798235136 -95761057465238542240611005510975488 7768143055946630774996922131283968 3969575393535562544797784257593344 -730142909059758109571825370893647872 7370403611315313216585100800557056 4404271046250676809633483355848704 -62315626962446268556062216752726016 5677682299627643910166551203938304 1157670639047231350106839442259968 -256292783186274854058263970471477248 5832586536032216946180577103446016 4626739671238034560601996084117504 -31808023768392324732799998876450816 5068310728867251954008633242550272 5388562839420767964052213018394624 -2639898577838963838682675393069056 5115443149640044987787303819673600 7307040370007821060599889983963136 -763655824947225240324000157997727744 14745773702837456310998258417664 6376055828568120018257180161474560 -726176981238249959652988761722060800 9471613071598613811424760252334080 572414417074868682720513728970752 -500266232711442940952151334571737088 9856979192879715192027575962566656 1169316856465200454492807386628096 -53868197736939528236552568445075456 3150999918932079895152018650562560 7014356391916520823955710338400256 -761153914986207202794705917302538240 477364583831391203657113831211008 18964704641445233940850165153792 -58445881148335640442722198614966272 8732767166597604887902920156119040 9406072339243264006948089323585536 -600906084082464863163830715788820480 6757244523920978016601672800796672 8935388348474954067180082159419392 -760458342240844157766650481222877184 1953845165596760706119252085571584 9410909678366792529455724714000384 -370837385557428679469696761766871040 192678501446555133432057055674368 8858883183480080626573732608999424 -217531790148420023037330107475689472 5226168078081825660853837356859392 8625588795849276018320106170875904 -225120280268741304222848954576928768 8771063509929718878084067762372608 8387063202466278472740298987405312 -601903690219294238374837296094511104 8839440146767228220052875291656192 5976470884133280574203508039876608 -108681125374195276688588210280857600 4343320240625504866505654402023424 6401213212398104845664918439985152 -547563745939475883511377137655349248 4954286652072962032467352712380416 5940932542355040733627545559236608 -884815410395165704367379744840220672 8988685118744659062491400940552192 7029434147705461157041104608034816 -122928452586037607756981890334064640 3174945609355089060756474986233856 2063286660909263046560398381678592 -417587514902141599776150402895970304 4336730248585455458041194885414912 6777189937876704405873636654710784 -467447196407055706839168548144676864 6445290151585781044663444658192384 354283776461245123645777253498880 -845448316809347595980396220376940544 432816631796196303553222926139392 5978460566283632787751497977823232 -705739070427209503925704899656941568 9213504075299366001174568314601472 7402147737409834484549705319579648 -542656870040682710835449672857812992 106991579576221736019113157853184 3409668218823265704790536667267072 -890767736230175929208033745951522816 7271769534563863517042403560128512 9916459003679221262490341486886912 -540599532056715756297258533971296256 2488046659274177039653594153877504 422324648800751824094846680825856 -72948295224055232030504078597423104 5818030417939369046846184110424064 961038789507584050192174708424704 -208301447885708315516376090025132032 3294105363367157702943167922307072 2838034550522665704321147104919552 -674467278274577544200634623424724992 3158479793587137298679475948486656 6666899136223101855475001727123456 -340632306633323719963305014527524864 2181025931381012410136809778970624 2868195996731864600050122509778944 -844173055631472539072998609199824896 7169821233623487889521596986032128 8105985005105772457374511274131456 -254505362976006579883952300422594560 2029517424924485143720755023839232 9780847616335885844284862657200128 -587541685423349019598488733401219072 9629373651928553916671316738441216 8941686339101987046067379676119040 -514563504963212356267023282454134784 1604088705139836925740207453503488 7372527287651107068621928655749120 -38898587536717403176625124419829760 2059414847806192837925166779465728 2184482732301580382699018596122624 -443640078952979458304306029665452032 5588995218354277369813779053805568 5362384768653831997640137146105856 -281831566192761108921804990051254272 9822105242056864375746285510066176 3108417837108051128619381718777856 -342987718744446364879141892926734336 8177498188692476047079795880624128 6575839068910312489878136232607744 -761533580202503625095222843720859648 4296894101158102652673225534734336 1792146065964014817141924904828928 -627165586025530750484165459882016768 2021663430631208710913585678647296 1353932768482260474621034514874368 -598224680567485659908633374756962304 3925824451204869885471102561419264 9390275874227394027494523428405248 -566045501455904701132794066855002112 8859551525665006185739449177997312 3093295748657806551904077584793600 -741709801643940446335020447291146240 1987358047481840620207844834148352 9616978676412609797692374760030208 -610079464798310581823411525179670528 5929237451551232851605859766108160 5982407599063382603715027243368448 -634258744528208828586956908918734848 4875212296884055853132096947093504 7067710036332298261695138774384640 -175471630261511250196536180126777344 4684636263256017829188686042890240 5268426893846861231701385134735360 -868543159394302380153527640124293120 6753515106365280801820181138505728 1205440065237300482365255258734592 -291372254188582753221690153324511232 8484829575143028646755457396899840 6934571670554797326123763452870656 -915633578613837196460505183928975360 7187078348694646494537540136075264 5665764214730933597232618169958400 -747961404964974651815271206112722944 1530549065458450843016720128409600 8503215890817765288230157033668608 -574259243906060825354849178464813056 3145897640110235936506589525049344 9577404429324230714860132078977024 -60406049382728874651075661264846848 1535216517486309231078460402696192 8584355525464312184841019699757056 -443820380528106041601556162776399872 2379036263600164861925398054699008 716696309809505350724113898930176 -920547624985703982111567723305631744 7269037807179162258352960576684032 4528363216564209857127850209968128 -778870242305091714799127728429727744 3454922733097498414648091218018304 9179171358814875261826317886160896 -440263261103719089951761739804573696 2777913290278314006441269351415808 9206167127378854798534669848543232 -65227685315411210557254850981134336 3116407460433861992655604525563904 3546389916238544111629825893990400 -451347733610686655267830430338908160 6331998183566186681418564168056832 3301794281461499748010088156102656 -244199609610124602066740301034160128 9749211764415898495634501391089664 20067545140330638112649910419456 -546936212487831654812360359173685248 3599705428139930601907489475657728 7015828743708049901133019125645312 -168828668257466369448876899668328448 7983488063871352303604206305017856 8311848046774009246768998878543872 -577294239889305264006407253473099776 6812726630993997642509572856872960 1256259118211861219501272662540288 -818027980690527032289127478690054144 4610543239195965025411584330039296 9522441927550924027844089912229888 -340590673630104365600735118384693248 1122149319566265357455981979631616 9346129791185290851428392390098944 -872804776240094500670813479194591232 402812758324358448512452786126848 5351833799285238113668033413120000 -566558404098897915402625517514391552 1373479767375769051142925869645824 9295820380871297486526467121610752 -630625405659469283330839004521168896 8500484039108398463716867304325120 4835032190804543792959331416145920 -170375875758991780428850310177357824 1425300188526243737020340761526272 6058028301753660753739901611016192 -285211613960965000530850775641882624 5301817942348244650712300414566400 3343294930803669324230221564477440 -792988644987200797399944844558729216 8460488132990735696077873016209408 1865632161105541774875131813822464 -960736962324884205153960518530105344 6484028029918894952412775345815552 2150614108593205543254540821725184 -593557913861568948212727380986298368 7425896686386231923429713656152064 5755430477930880988258086663749632 -699016366612577173997595157069824000 7012810263349699111551630714077184 5321932306954155195592289697136640 -362372445272189558995117879678992384 4211783276446328263034387541524480 9632910306894881256156017197056000 -660762851972524313980003044516954112 1614222550098849593941037506625536 6917923783918338321482380264603648 -380551833244811316970853034855759872 8801675198010786833834472229568512 2657797478638679036355124557512704 -425819640988437307993745649171431424 9726194781419069650785474980085760 2620432122330243621383472704126976 -614439632643939136031777945932529664 9751960646131564949527642939326464 1260278520046260111101483963908096 -975084422368152670891961640399405056 9089253687498067964487620708270080 7635151468383837878698819496968192 -209733719711257495174348518763528192 6322752171959536560846690794340352 3703271543562236098588917486321664 -136464736657833724822091890492964864 591604547358084899412724737376256 3015933939782467249624773856067584 -112749188661944968852066543643656192 8717490624600035064621032485683200 4943713049755172662468487057244160 -474443022914002840322065035450908672 5415462829196808724178062557577216 1570040248718898582115006795481088 -30450849769069654121502592552927232 6121819199530204994309981938384896 2604292512231251495647546896809984 -559990388554693232393875048710012928 2572053255841087947742873919684608 4393780761066761249252917813182464 -415890841253789733699404001343176704 3927747769449367204615275168137216 9916643595085529227397976639406080 -829769855805451029663431419712503808 5986842435204860438154576777969664 8033376967966561002239799525900288 -948313431237638384204698739170869248 7428910322115314484694908330311680 2805090250124920309395281636491264 -680861833924144251468426332010971136 1747745355709657089477799596523520 4476030512391326600737855769673728 -367911613933016544549665702596837376 6729386622096864981028221824794624 997774187847225820639646105731072 -324320928112960791375121118669045760 2196870818426239374580849890557952 1831739780713385507786837435875328 -137371735788971204133645830680739840 2577700083189451720237045644263424 3435565219390146617105556267073536 -122710889330009919154895730243534848 5931979770907428387610654454841344 2539805757750386249543990900686848 -366417628310490321316901201215750144 3040233325818538034526161096146944 5694524915233011223010590637162496 -299310388552888970981584475514732544 9253054217305258404690722518204416 3193091956186026781062520127881216 -550318326531284547503655157378318336 1987967449391786372161779055722496 489565871073915157545813524086784 -235918558286684278923552170662952960 3437201296519573177873675830951936 2660078832117820464205297235263488 -24774822564910609488234823846723584 4693010188276615876166638138032128 897315110647484455121307555594240 -979568115033455270313676222576459776 9146967069650897342017436932636672 367822681466694970077415284408320 -440293031189112154900852144747839488 385435510733444985332482153906176 2358091535387785052577618393563136 -358063622266671610885466133909995520 2591967339133985267968962356838400 265147245362167255312236887932928 -502027491998114892764920774381273088 754130228186397830926363143438336 4940519120799808092021688773902336 -888980765803212923701096549244207104 5439111764169669198406223686270976 217342644738137680820591065563136 -830132839293109353509023562883661824 1670921694110972548512730790756352 2455751895017030957531624216985600 -860228059588599553932739762381127680 6618984778529809605837922504802304 3227395257788432485310580857503744 -926246131726270583476237888833716224 1703211239160655664906907733196800 9738589988718082119371350404497408 -124288687053191857411913264954081280 4677141197597117486763042116993024 4853234918983517358747461867274240 -173451163370626056170462982057230336 2601195735895953417718513350475776 3789144533628778925585961639215104 -536386747362359513713221991011450880 6685718649949554981082596328341504 492413597116351587362851944136704 -380885670486700997061648630268559360 799971233540146606797101379616768 4426517087952613141960435389431808 -668542929521626159768400171785781248 3016562560704075495356317497819136 555714364387290756182267651948544 -346961760621083322075683515912945664 8897296656757550078459466131439616 8163705786314183746914837208236032 -409624781355643763064239249818648576 7701513386199633394971953378361344 915409848637981863683416949522432 -490291418991231297887449125532729344 4770768250836511984590355198640128 9274037569225859648055700111753216 -140370920502025775032812629083029504 7139838585536188133207946200875008 1656363924304763886250591476776960 -183907220799387689158687304800272384 2159614086295244052839533700448256 7539667948947222760076011057971200 -71641496567652371164476013446955008 7826941241629085735195594920558592 5818127048685484712573055017156608 -637108892482621523243092836022747136 6563965008113559086184067489595392 9514860305744075407183138682568704 -406137646509504586938130609918181376 4864250877580369536291693672792064 7249847616983927316902606159216640 -73482913397735085630887259325595648 1486841769597107637682464182239232 9631646610150590865980146719916032 -330760257129120959342965209799065600 645712651115896109285349248729088 2046842200955342186145894960726016 -110552528516235196413748233270984704 7261457855556139546056217008799744 6089770624182454699851943084294144 -350256668248644270862617123410149376 5232527618665567375446476129828864 1513637893889451612383385720193024 -168994449310111920286111490732195840 6568338100904406533462302178410496 613980998885092481068155124318208 -624560295534353612430381847941218304 3426935921209303217659914791944192 7635665532100882959278138112081920 -192335412057332850122268894998560768 8549387746970991671096372411498496 1507426576026004966718238542004224 -727427144380364528531818389685927936 5467149468026231450762835979665408 7525714641172943456006772635992064 -665765187738303008440431018059497472 5948921046602878143204868898160640 3279398982448611764210402360033280 -456429678225911105635310630074318848 1283546073015620307942034427084800 7634030081251392103101389063847936 -805148224805080880085069445516492800 3421059397665844067715414040248320 4949123690670640672474205933010944 -650293033582055366692029383013564416 547315686481390732642299028701184 5285374777999953231868148488077312 -594897776162741806324121339953152000 5899908620918296734702880616873984 6479606815951011496618612909670400 -793853023212683139026234105776832512 6840464780981377722384531085852672 1620896496314148745288010646421504 -149828161679747292708151078982516736 4633569590680329238855833989677056 3462374789328424659884770601205760 -77348617596920782771082726970753024 428723024957102490173058695823360 3859783398578317038901736847179776 -668053548602819142847942875343224832 9954453149727898587614756028284928 1619394187691921773764602576764928 -691151125318091711117532978089033728 6750960798613741938217159067959296 1714626828594656476623584479936512 -100099221167964755084682151963131904 2901696645693530567259588682317824 3148545206111913430809615320219648 -83484554211672173959726757704630272 1784719112621292975388464487858176 5885003510650725943601639058309120 -182676345770166437316734686762893312 4361797610126965711373106560368640 6104065827532394000092125850501120 -391440293325208946308431787602214912 2623907328693440149734992342155264 6076559905039351113374719100846080 -276124475218639815585399278609104896 2719885745038431735211629077331968 3189347237115669396381658943324160 -544157826774699656570162172477308928 6049076012342642470153182643224576 2021687543422719442302164046708736 -238822221947391184810345104693788672 4882056024184840203571796436320256 1632492517112947196215058510118912 -101430999934351892984459453744021504 4054262942841419837718593405976576 4239297205804431979598121575383040 -324394168525287913567112676560076800 5290523421879486117149401596035072 599440061034648877226174598610944 -71732934749638098045318629213339648 7187937569972518869303267327737856 3930934460614739378680057831620608 -36415649941496764946658012629565440 6262794207219482164179570782109696 2524192637685777396795869239443456 -368852274168217203495509971435520000 9458982551347759179845596480536576 652865277802305675806627275472896 -221118606662676097298687997381705728 5920485879391653122492397095223296 3207335272814294596063728125345792 -997060496089023651370353891152494592 6581648252265073713989852120219648 8619947212283662910358105832292352 -432283912694220136313161261336494080 6106283217975429330137545273507840 1863269257373313559729229631848448 -741119312876501346346594376018296832 8119608872853626684879310667382784 7551429481883382081484168091402240 -270600703186840321841058219296817152 5264024146681838077025794320760832 1258646051852490557434191786541056 -772897461953485604332912355080929280 9321769648842872363006748528738304 2415641078639488150601106269929472 -605544986112084365250286192462659584 3437452411493132124559581812621312 5727712914682466835345826207760384 -191621912359154425210506778171670528 623829472411608539306296560582656 5484533522125322450050988931809280 -229425513592774997573303704511053824 9619768438462905992962084544970752 3724145724856158434897911043063808 -53306197180486265350147573236629504 1709331736584643920265542551732224 7703095797516949712144041974431744 -263445087741780581660634301671145472 9776114268624913965971171061006336 1877748365937606035239563436228608 -735754459356542912036927922535137280 4794090429034561521493639509835776 7855399907561536654048631711596544 -460775598516037471872935814884229120 9027894660780520334946209990967296 2135996807412821322936172849135616 -84037231834113399399116569357320192 1738265521598930000373990920552448 7123325327074133982483775156649984 -519493024794705606830519068626255872 3785140345769313496439384793153536 2442006665160634068706476496519168 -90242614137850381192235789460701184 7965913256608179247401453102301184 411486036111190658600586251862016 -137184452672195753497128582355353600 4596414510452376680572795987427328 3869454604424038990360531005603840 -343665887476083130198022973441441792 4468339606394572006487659842109440 2410037580041884308976530746245120 -529024021348756578527427364397252608 9180460820064036281627384597184512 5686176883698561858639836735340544 -86736429340766031010205323266883584 9089028240332421127541933379420160 4930399837512289652061459397476352 -122334264796296674464101815923245056 9422283289911069449761115139473408 8139246914812423271346377672622080 -913822522123485649697789098552459264 349231568329706483313105533140992 5274343178646979550867316172390400 -207494220138516523919887259135901696 1717618356300906231797621891006464 3942840814543309918727654183272448 -60760897810265745067002366399610880 3890905301948683836985346875195392 4271659680171857084884815813017600 -197642753651520490361777396440367104 1707424785125581676188809325182976 2045359188123062457790731472863232 -612970713012150874860902700455821312 1253814650412694855818027531763712 5821112238106302371016042241589248 -908992735485444716892942090173939712 2032180066762579029296767007981568 222694475808116524822082718007296 -815447116240030562645722488520048640 3877613939766076662014344104509440 3815445047193086039008582360367104 -43548165075468205908530208702464000 4031245832467513285670633268576256 9081095070110776024323785228288 -549536098519066190841238185320644608 134206463125241556700171887181824 4761769117383625735616488609415168 -706759003514315861395554124290850816 2857119008604045023842433744502784 3574046938097412669823489308360704 -836081322569841532010439943965900800 3617327604371337473967132627697664 6255378555011300489395146315530240 -456882720490492038398608192955219968 4917825337845129075061463957110784 6606299573138246549149911286284288 -682855908324567669949507992683544576 7182460738626441540012353077116928 5389467424898197094068537509543936 -270021364551906127553216833493401600 9688715007648787622934186144301056 3043217591159505965131547585544192 -665923061302357805117815682618097664 5740542508180424175234118301253632 4232107591705107512946918932086784 -635314778267852665914504196831313920 4473182090999694345472053866397696 4914984465857249844864314834419712 -140002737580698989903322933998125056 792556440999168034957356425019392 8495245230145261157790607961227264 -184214055976424680153609494559981568 3048782427659744268661350685736960 5839312589990816856622120069758976 -827880341529054770570999687804878848 4092402803282238922006091855298560 1261960432650397981453470348083200 -845837652767358142804930104500682752 8327745353176297598994245977374720 1941066169319672286723142592757760 -998300598206540978132657505640120320 4899742926422594441846569029337088 3309216348733399133607326426071040 -167890472555484486842280294158958592 4125907959235906941610818279571456 7940746261746154508343981258047488 -726219957766434165047670743614095360 9341811257606285917652090169065472 9910290580076322454619334564118528 -825410497505668254264206087891714048 2237010817902800596386881000701952 7854302834323554230897270767747072 -815223207092140374582269242459029504 2249589608040961924118913486946304 5240967147674192919175213260734464 -950199611004156774245352687953510400 2010073729647379228893759722749952 8121551829181952216113825768800256 -503129687559570011458199140123541504 6614652374127880314690044300361728 5900202511932562812570006372483072 -392991377130558546673358575614558208 5794227546792507333571466030481408 8551732027291377656736969515859968 -351614394632330816198694238471323648 4217186526015237260180581991317504 3888472838342279391289836054773760 -296553349252812633194022716414361600 447270047977288466115801420660736 8984986471588692527122802553126912 -1114733554385888566877693975461888 9539164783610531450613385190703104 6339370718887995510456203515789312 -218661335582429871786623468746833920 4783095348871758670339886398046208 9170832623646289003818307284893696 -776565010780513068342216455306084352 7270520513054291827567009055375360 1368834110152781918241885161259008 -650204518301552510958183417148080128 7020926277650002633790594412969984 8746857432742579105230230508273664 -136178377467580662551512566743433216 6059887425178985931315396730683392 9571855407055361219287808355598336 -843607988477300284388438359658201088 4757158653065063685981980982247424 4578028015197567875386291219595264 -377219217057727935934861153763590144 566131144572320932368897607204864 6683930856331604621293615132442624 -273118315863955275897936198150127616 6697170941206211504193996693962752 9554269257216090885972229275779072 -627735959499117594718538894028046336 7634441622636755556175737335578624 8515936946073804861325514173841408 -923541605515206637615927365371691008 6698816730721248983654982618185728 3558903645785504615061634737504256 -344145538152753723945645304931418112 5086680990818531421071696289857536 84764641718523619658782300176384 -434243759501242697493951072427835392 9982616504715787844745716519927808 1769140852324468984565681212096512 -283536654158359956875716866342912000 2786207049639392346040468796080128 604826495514057183260039140343808 -513893600112827276772112489533931520 1685933043104286199154737537875968 6147763653552630253327273450012672 -861803093431252540322145536760086528 704152621983633572087118191132672 7136486847403785216129961851617280 -896590217573721844453426546245369856 9911344508800227291928050437980160 7728261763893138692641931791433728 -508551256954555178504567682316107776 8180719202333633863903667166380032 2664070515277464046921565914267648 -268829151164029410484711637131460608 315868547064427004612871131758592 6559254411571623976970810600456192 -246519155395582676426949943801937920 1426403517166550089453071224537088 9062498957705279641190542891548672 -929524334630324918791206720895975424 2818719990987880253158113704673280 1826148386057918136520138832216064 -59101694094292513057120953324011520 3224138501741197477097936529653760 6332873721030700885213056023396352 -66041000252720247779596782358495232 6412472997423742641974444860375040 6811345838036878507632141161988096 -146926263727234986103937666249654272 5047774892521155093027691981438976 262467595040649477929649590763520 -949854443588232486935315954473631744 3983475422285576061104443497644032 2113202258245804878047319936729088 -509174361268398777863064227604856832 5822491313333214204635302386991104 3510113882661387779526400296353792 -275113276030951692866242171124056064 6611372572164111843652592757374976 3166217987273214140125059418685440 -428238188166909207071435080974991360 6177979181593688934364659792740352 7114119058253677021005742272937984 -234947383280422429977299869115613184 8495472863263859294219718214287360 1450952555200129663562317259866112 -499777779889713550440243257508102144 9658365353388598261972377551241216 7716627239054169004059616010567680 -3070483081136671850868862082875392 7567118417224491094063267910254592 8341622495671170857546789983092736 -168158012591526093412892556572753920 5045431765011268702388266739957760 4473955169096957571722023654129664 -1472137915910287511262304237780992 8580934152283647768914731328339968 264922748455857290071671444602880 -933291626005894901815519217008508928 939028616519957704225735946797056 2527198482914816203142552625348608 -142862691837715548921210577849679872 647049731586820188588652458147840 4390204965018887315309488230105088 -74868220290450466910464326684901376 7910712884404297078332939690835968 1083197639100121482749147632107520 -329646165064553260466634361795510272 6626628657852209047310317182255104 488922025415934085378920887091200 -163713220949260453357118195146686464 832297339221556798491018997530624 8741102300539560784955978626891776 -793927102311195066992751022211858432 1560437597232607337971310923874304 9850475357834127302126803825459200 -866818897871707032147351983083225088 9174652207733806470062090053746688 6470657843780565379553059649093632 -498264497874271420453808300217073664 4094690274025187496187361937588224 4338656113547244138189450484121600 -550438103868264691066587011985965056 1538744829398524530922056507719680 9089738414559529166635421961027584 -190382337465413905298686623256412160 3944252337906820183073731008004096 1887760392774987526924169350479872 -793236532702861239200748465167532032 9926032980126592548501488050110464 7064108690696354654006667930238976 -86353311383879080101953952234340352 2534862735663579232098301425745920 2144427116833870239075058751373312 -437648713613775354992421277825761280 794101051334533568456182781181952 3284649757215368757544266508533760 -808298750553714858822001503275843584 7238608297424999140803256229298176 471106311415261018928299009638400 -266104939657169983870091625137963008 3781043369486654933522628437082112 7989743344474523824949580821168128 -988924276122879634892237932821741568 3442353314499284596886368960905216 9648182366475739896381160676130816 -567739703671018892319321971920732160 665849954179939278762098070388736 1872332997008509293056374616358912 -49560338098725443341170786898542592 4363398551211574132545719661232128 1704324148152884182827296375177216 -847688738493955497077717040952770560 2116911439065445222085967753510912 6184506021114255482789458431967232 -758573104211181560321273536236748800 1012891649637416995676255365890048 1759619543883489929753058976202752 -940529494105017417634566040197267456 2336288070986539648730122961289216 4965853982570776936082654848090112 -10787310846732737178924011606769664 6246565333145641939777030130237440 7500545997649970960087769906413568 -786065064555321851670332769191329792 306057552144659503594225058971648 3477755445459020959087399006109696 -576489998684029964734245913287983104 1277616299679799303192378070794240 2286036185673843859034313165111296 -141320077405087688576917444730290176 5246438862614597002902513700044800 3758050829365563458876407350820864 -369953643768457554402685883162558464 523765144478819162268731518746624 572707026297356536143713358839808 -72226041680950475455320748541870080 6426877247075700471593535648301056 742821701808612748374900496924672 -554445690913064061492566089686581248 5472951215540465563417655140941824 7874236451294292867800591952248832 -203992958117723005564638241583267840 3484852531994132565577215856607232 7405216072093480146814686629724160 -290734551446591130933015789078315008 2969760252335808804810135481352192 7090629407643557075151676139110400 -751281517674302290533760080440983552 6354773877538296294190068529102848 3081125445127615977195585006469120 -760875679816045492778144843987681280 7704968781003759594879022385856512 5233925281967590052329306145685504 -692631484769668385253115399327711232 1706589074934571450563916074057728 3807734409467958007079657944383488 -591116551454085201052195469616218112 9581295353980563804024024070094848 891043001140960737306801610948608 -444808675541085390612757989568806912 5857557150211971749416517926649856 4347373054669690890153778959351808 -581383938812198653154847140335321088 8096784520412482132656004947509248 3388615236355027476005113082937344 -318131393441300870117864824664752128 8262887704257436575101559756554240 1470522748910126696919497877487616 -21738573382402268636893403812986880 7398168623362658076119973347983360 3183906398429198430067270245941248 -345774263747895850723986669498793984 7456167917292397441766447994896384 8803119642390250284908515411623936 -236124093153525305608753784666718208 269664841426837767201368066490368 3605449609211312046825036299894784 -666631731919825870172539124900167680 8728313637975028450095562548576256 7784805676125630678366340478140416 -119018450108827225946075284614676480 7374305026589565540795945578397696 8247025770339642587550889352888320 -691164649048242063711594820218650624 6101351894572448893549443440181248 5894478297425035872773960766586880 -462242459542727531360724086490660864 5663537438934097810708206238826496 7720324165427517826177212778283008 -36883589211404059883910543867641856 2242970551121733366239980530171904 5028207976214373750061331529072640 -975853719054694065357658128090398720 6068666633130209631328983687626752 7799276146888312402898564358864896 -111059187547905366129654511817457664 6088839405375710657339275402543104 6858089807834811955601652196573184 -587583803175163698350805001611247616 1312002706551690290784047072280576 1598127188173853775063024966565888 -641248466209925418185385204646936576 2141446945517567248758015675858944 9626654191199797933550043456864256 -957473382384109988121663024270409728 2956844200991064934658343415316480 2145524523208492595337238239248384 -422044880867551387813173111811997696 3213999770711362640971260481241088 5640701716289153547119223904403456 -141331873922472983704792906330013696 598756205470678585054068752777216 8258503978053541199128697256280064 -736633504705426145583358746153713664 7038668615633066567589431714250752 9997259708539560630561057447870464 -432228578069455987810493562106150912 3222664802141045078298157146701824 2117847631482733240053821918412800 -764841027348178131035550118494339072 5327541175263377342738208496025600 9698636829565208217843440281452544 -212617633055731783207747210874716160 2084272832771778804837173126234112 8175675811583775255957148983623680 -82037383695856713761767717391564800 1148663692123208660931192599609344 3142015394697066673239331260334080 -115424217449658559286072306422513664 6925801436594234145731182730412032 5661248049357995078818796520079360 -271523339708701427167878408700952576 3677604002750771168111019012653056 6920123404511908368719555174858752 -96594533091848063446812700281143296 6910834077968347228561501755277312 7028704297005383972313836709478400 -678685308552598982804838879409995776 2477176709816964756148699522924544 8572187196022682942189377446477824 -235236409125484652072423600443883520 2773206351822616778314743514398720 4720592949875384211729082920992768 -841900957072372063414613030427688960 6144268216558198831140074713776128 4679107598995459205268718233845760 -394644337540144629288130520197103616 4089825532497275627719071692226560 5642813862759753906258930860818432 -51367905503192493247029031594885120 5867134586695043895596505221824512 3335850930588382188752387765698560 -195452359662389988964798209059717120 7076077022811028578207819609669632 8777685535690814639042270704173056 -649903731209331221317532932208852992 7359594430374102102017205291974656 9550864157176311996069352015134720 -67632602182922440923434179891298304 8996265911564421317563431514013696 3551423278332414073352666914750464 -567200230806428981193212462547075072 7713467982577491638601980332474368 8473957654649666884338423269687296 -868091077881694127952852379552972800 689938882951255994516690777931776 7944896114847179957976609891287040 -782973845580992330145010601802334208 68478732389006258410195926384640 7249458071506385722433815512612864 -411015714149945134341108733868769280 2305482525813415773798030062387200 1513915705156755833295707016527872 -581484379575893448228427828757004288 2650542312754320376544503676272640 9474952480110641955895631230795776 -15313798474009479238870066920423424 1861725259504034243077605332877312 6249077549444230998357009825267712 -729339828433233907409502994876596224 2387729566258669163476573497589760 4168338281525657911960249240125440 -468734216072082633427888424376860672 7199616616210105424577825169473536 6634104311105522938659368884764672 -709663259274560299414360859883864064 7462638918861755393620475021099008 6576138691848753053834926354333696 -429306423886863111407827828785283072 8137778930270177964909484182601728 8890997012812955126170225605607424 -498636418923201610829449504671924224 818627594557432998337058250424320 4624376174958398799019628843499520 -106596579368709960550110344377270272 4218224028041688802066873341444096 2711211573851867255217594111623168 -463079465045462818370583886875852800 5893592765193048866410618236698624 3151463419160786519237069335691264 -447269540908022618029469527709843456 9604459627908811055586689933115392 3693068111101344765585628057305088 -480874321300716472654490904846925824 6495937507694116007525563815165952 5012868725344771889783509081915392 -111090494229699248818145390028128256 8389503992260530734884273357062144 9223871650566118460916076451463168 -103389989345008840049635048493678592 3689160748986118152326468547379200 1223237447521216448120609889583104 -324572887803629362045526732567478272 8480389720897038738263349078786048 7262764891812630672235278985330688 -30936484119990874531418369930821632 6445849444416278815378927742091264 6445488891696246125704763649556480 -936751851872889941370657302145662976 5742739714090391902902794552606720 23949597159576239066700964691968 -865232182372501665687684490706550784 4635503732679383996775521016872960 926938956029270429780646003998720 -244076655419799750738719268046635008 6167504204029256097251380823064576 5615884637681702004126953664151552 -101721054472091185795822306543534080 6632492280750762588562035522404352 8263354421977339516300940856524800 -785159555710328566192278227327647744 1475316243513772779742083321692160 3621849675143694324206983689797632 -892475832978011324113710254563262464 8100008446035899920657743448375296 2903400465217552801985695408193536 -939294566420841004516613168098705408 4966368562056946831320436422213632 5930758692146651692867627700453376 -757727249482999542088846068454260736 8349397851693622203618353949442048 7313884493409678299953865506684928 -269802624622277577801269960528363520 4539709138665633095663712376717312 9671399024424320320017435988066304 -647978506113668071622613193260531712 9166708819036191225323156701970432 5419175268949199613171069198794752 -343880059176881990698390275514957824 2606549808174287637075594984816640 6338901268765903032408503421501440 -367938044453711985348883394762637312 1239098038286998160055084152520704 7656727820092221871473070545305600 -709066214518581880175710247961231360 5974406723753612158465296000090112 6947497523273089465084671086821376 -297806553382446201054414765257916416 5068017367435961331465643511250944 7897410529648499376625955756834816 -502478514297703042523500777981345792 3017648315941253816576377838632960 9324060499790825483051889504288768 -46622199792774622183127828853161984 2894506683195501425396866468544512 6292144633158539855042211974479872 -144279538968965968917110735157329920 9691281912140498977380357176819712 631200095005087493385970232852480 -506154340196147830206203950685749248 4169665609773614812613122661023744 1308725346899226573567944925642752 -812403038549665922070307001325322240 88405762424979559250147823058944 9871334943724029557883300462198784 -544471745629248410420286390234251264 6197244909184193294496517574361088 8976920174923379466669930689069056 -87499754307895429404244035743252480 1877955126726980569180249715113984 2763590816557683860440529883889664 -463104141363189600731548083925549056 113313302311747002593968128000000 4113942213675877107549205161836544 -137618275374459826395958467354427392 3393522422391206888326872791252992 1539719923405268182821097219031040 -921889209749758867853352153699581952 5271966801641115409851022760214528 4480423361485840084415591917551616 -461027777193277795768945947971682304 4854395712713102489570570355605504 7809143277559199137027292481454080 -107248963964531656050320435146915840 3059231332157957412377130937876480 2536788876902402631068605860544512 -979000119762721062840087727791144960 6430540876406687268136538840498176 4814061116301323442149348092149760 -215277028287796981305371080423112704 4388122376225499531996141390397440 343375295336158231484041474867200 -317304147160781070289617050174226432 3345406931426727118964909605388288 6250559714974945460034831587999744 -155577828934207073530184258797174784 9065631355174404944824103535116288 3741685689217812005289471271501824 -676987205658788469837471286665674752 9911964599378626994003818552754176 7393086843740055066373763838771200 -735841061862735598486598024135966720 802009273307213215667910434881536 9286993880730122990664368466690048 -778421217730175813802482226046173184 739405394278841799395134796726272 3818796093028707577855899420590080 -712897400827210767574445351803813888 2562107869186594916362629565906944 8191245797895747616226597025087488 -644505699023509893301535558927908864 9968194403779469801612600057790464 5994245459992753317085657654362112 -869067520407005295494405684702740480 9655418773862153702723924407615488 2108460079339301461990673282498560 -582562814336405858585399018536304640 2955014564569494748572508728852480 5706753328602882290828421552406528 -739742690508004298421347421593272320 8485406209593587828458934067265536 1493007232067166176850452527710208 -21015304336786102253329829307875328 6537100286416027236471565656784896 633309423137974692203264802291712 -704002656299504322348439113704669184 18244530990252686494891044241408 9493403153318357238306291922763776 -878595489773574733270299899137622016 5886864767826006811226181090672640 988546033629761925714229277491200 -811398617867228228793791679754665984 351002924488763391064413248159744 9758928259287093375197078223847424 -882401789828059723221403527987331072 3704042962237113068686770303926272 8171219225131397435488409852313600 -499166360602301872736166537299230720 2993596916375478976137549248987136 5197221722350873790058040957861888 -32551932426953307626470227146964992 5299844545704415655339871298387968 7243190295516617905435195559903232 -206069104986002938774179354146504704 4462299495651731002981115821555712 1813898925435365230812114783830016 -67417787627382132910847169298169856 3005823567521176373482093224656896 1077736411725222763311456088752128 -127292297373907737578275717892800512 3744443638568689392538775778754560 9047584818191638850276575196217344 -412168521066132853554270764229722112 6017992909208159434266497911881728 5471126532810760970606646090792960 -968247106455050245556219870045011968 663022147154974664135904298270720 6292409638873698658976293269274624 -958987243918795987175755142574112768 7481359543767471597628305056989184 304139414718482667396136809005056 -697000279019096812906769128269807616 7896745535384263441913104130113536 1166069215599556763723973374509056 -311714346140228819616481064706375680 2468432802228565464420218526760960 909107704074262697733841282400256 -536217189846940849642841442512535552 8547849269161496873107839879479296 386069772987091462406253479723008 -603715451214944689814119183475015680 7159399410758653544964793542115328 330889243022397728232236275204096 -153852202416458610032186137719603200 2168064331600029151477093130829824 2212032830846950772806372485496832 -458053015616219767089564807518486528 7631032377973517327024337337712640 907604380780051761238028857638912 -402977575310147709592811118417412096 807952880681015540070576895819776 1307295622248450786482878471471104 -633950285189077527138927025657479168 2001859876535052983347666413944832 7291959943176926106529575190134784 -32099833279232075373515146975510528 9251908827892115669941382790774784 9695596213556320746766163110789120 -377542064728330145376306221950173184 8077356249526484969813436436316160 6945484871984485655798747578236928 -823715607505560190110842039201431552 4986825749370780394505562371391488 5639814434042646047468960784318464 -667576727597246446681487894611230720 9464386628299555349719147960336384 9045690710673865262564528007151616 -495992862898514305712644040454832128 4500885045030236624244639730237440 3653593982422487525205709269499904 -992583538988594731110931453800611840 1880280112861619657435670470721536 3839877187064373312873405194698752 -511473386906952076074484484926341120 4865955235844607109231711185010688 7392852537751171663358885349031936 -149541947710410324944898867922468864 1815129348108385271890344119631872 5593209172629928006044442270105600 -342898512918942106272861968108879872 1314954847579475902378629606146048 9082862659642525052295162221297664 -148576875844438972389874598768803840 3315827415653834543597086723538944 4694889936830048490709020156362752 -343941342975802333060415494400507904 6542515973063713790007960177475584 8263193260222997905137230027948032 -394241018873847521926133110215278592 7251158860828308432290639148744704 4037053384027591840804587530354688 -64318722959695772324435764560527360 235652282416758629914169900531712 8091191466334629946389070132281344 -433627494573075406712272490869030912 1026457192628792512380134890668032 1665492870378702143591850564386816 -415071967425207850794514527450824704 3181377006276767754163172119937024 2547424139687709897323463418314752 -791217208595354462141730253357187072 9726047131327508069569729872789504 4618567686952832823895924135690240 -735934987123196263630497996127338496 2173159731792025617624869202034688 6835853917509329489539155837845504 -732982274924229551788258885388730368 2545998377027907991478522982957056 5510345418758866742318162329468928 -475737178696685114481179494776307712 5381868341803234560214653464477696 9366599159219545057901278117494784 -946490374118435474431171617074708480 7787856256221873494080769088290816 4439136916482598799738916770414592 -649755073388606337205339709492953088 5203804129650440804824745548709888 7189289580432318144568824531255296 -469647180777161965797637336546148352 8907041513449699906459620754849792 8933154772274769062522927993323520 -871038053458253321832302421538242560 9077066426083249446171003955707904 8536135812908403732235981382746112 -835737829461343209824111524111712256 9635724571576949391708862543822848 7065276914161640307693489970216960 -497004877617259014487096337559977984 6466824370399660428113872617996288 3813535853077454966659577532121088 -944121357001615686612535480619630592 2249863647658801485641619221774336 3913911516446361840946817250885632 -52711559912375995442196876523208704 7301635953814559521943841392295936 3218781666380557415882341272780800 -245620675942758241168588234238722048 7955450644000848245681380434903040 1241526817783661483272576809566208 -719342280759557058996743132520906752 6099830942619702463261874052923392 4540089326417078973749370466336768 -239076747537009821635647268471177216 6789968901869475309785354831134720 6204794524897696843995071509430272 -773088662469262888075344865912684544 4100194756424976420782863017836544 4909360968411478017859112899969024 -240042748414866910350781563183038464 2098900056597963277261535673581568 6346248271365903816820356947116032 -34279434138390743539798817697169408 5801029498910714418372163215032320 1546162306795311967292096948207616 -268599130595826007186028396726452224 8568615847054790822673589909585920 5116945720725455172775959204986880 -686806639793439272942653499640905728 6947376431336756663375445331279872 6569229940741710196237628721856512 -310810946510861469968465913641435136 7561005906746884709909847225663488 6250183344971132397488853441576960 -613392884578205396501142192152117248 5096504226370736993099552867221504 9979336013507650136852684668403712 -436487064372159840001150560644366336 4378820422261652478288505897746432 9110362922333066868076889159761920 -445298513143216537858072445091577856 620746127908393456444318517559296 7227988716837371064609541411831808 -255097626951407150483288954419281920 6694640029374109971488865035223040 8521932332710880066524522903240704 -694467447299412655172487611215249408 2560829819582787547536891727314944 893285945828679381176922115407872 -987604678941682058655114474438000640 6774990189906056074976775714635776 680975838854938519514405371117568 -991418023873313171572026476091932672 4674804786003272665714738665095168 5839627516048112748114577215979520 -597185601523458728631797028776574976 4590121312251615167645811589775360 1170082259229844744067209414836224 -787832802999933928270171381946122240 1786341173080254343762246063095808 8039332008508594985005283559866368 -76486196771065205288374319485812736 5843493566546893030341078278995968 9515569084616178731760192780763136 -641097934415255783317480888344772608 1643550238682723173981550119223296 2837765737821313737059476558577664 -392853033516161107925381758056398848 8196824347161712229693581630111744 8097407519920730240995305600319488 -516945160043609608872961390994784256 2012986166278111750246810133725184 9379092329655244950927001442582528 -100692860873612757873137196235489280 7139214643477630051510978051309568 4174030896802354051102521186844672 -652261974211296082319562924227559424 8745853083515145640914325140930560 6705536085630072412389173054406656 -570015512452710841139302254782709760 1830007384451604486439236429414400 2647231301399978854983321847332864 -108732818631880249020654019957227520 1764260688009648998126408561590272 7600809185361277055680464713416704 -730084193004987345752454079583354880 3004965067771988733443704595939328 5380759907518691732126638364688384 -471326248290196984212471901189046272 6209345445632433905381874100862976 478272042901939443365462753148928 -560338759974425367122561588506132480 9606120987506513607089081290850304 7636715893330686458477935767584768 -381790492461508390197219318720102400 8132959552941822851691791236726784 4606475667033950692461422374289408 -168981833731530848156824776822751232 6150949435900219747498165618606080 3871206001728269408230499478929408 -889080665077897773215663263355764736 8893015574157590330901086043373568 7616144297712246165302947598041088 -658690851310103768219347212098863104 3284454906974207601353602801598464 7408997945791182795902267689009152 -967772884163582189933483961763233792 9189179188825804398901410417082368 8501576720521806246789296890576896 -89478022476355270889008137811001344 3403015226216099130520104542928896 3535202779597001674693365022588928 -569776069574640246920823581026811904 8419144175351834816577608259469312 6207202837323448471837062532694016 -749459774024917297989584779107893248 25479090216969635739438298431488 2408396314385111952181941271265280 -851430140532904089703010115589767168 5511984748716219565290466756788224 4327636760931535621194170113196032 -107472981073235897513904739071295488 9854924158443076448908572247457792 5179572842116694997626107235139584 -870081370909201200600712006793691136 3417856106327771293727327986384896 5189108966983323118616445297098752 -765777160914922159844341844705017856 8114972892679524560806547994705920 8109390444387016716059885646643200 -417264995558928869679519450877919232 5482289438440953122463112719499264 4585567298350348507890029936246784 -501450267184013344559080645628788736 940536431388118697861750793961472 3200583939439831989184504952520704 -513858269756157776431744334652506112 2681971950334173446231707795587072 5132071751247996977933285421219840 -568772357842448759018550930329042944 3317632636827369793732966822707200 5922806668699840144368680619212800 -781495982097785131104235016543010816 3430562217781085534597916332654592 6322429506156976404822437348245504 -854057226915506372400453367105585152 3506590977245733102346772966014976 9392214093384849502509913065127936 -408224522402127252243866997093302272 3717155176294912048022594527428608 4724957297406223312392891716861952 -923764947563887099441330651328937984 4881203595601290689023312375316480 1188273402288219083761389037158400 -525157206716151319044157073596088320 1746954464717174871487617108541440 8065892396120320608854661524357120 -312261177334249035092169666884272128 2068143263538425620207529313173504 3585350702729041006157764629626880 -213599378370318404693229859067920384 5042223165477799071320652304613376 3867777731447291489678968257249280 -796475541831651295439615519338004480 7824275351619677786343177134800896 7242518946100680462651882211377152 -271549170924904615912272057365168128 3980604142266507711719634007752704 6165377853599093753472288552910848 -461927260803647335518261776127885312 6910816719482018423846729695625216 3299962317896050491036976057155584 -830841189863210750296655219495272448 9678710401233883697409616416604160 495542339551650790996798326439936 -699655458274982106132489654700605440 8930855658103400505372028654583808 5872312482742853010767655246757888 -120302523861919408922518495436996608 9155886266174916056619131212922880 2800492904420477542169550677606400 -106261329441406757662048228611194880 7417302082206953880475911562723328 1737985446152179952608225852915712 -241286346518287558733937556670382080 5481773692330431262176229306925056 8592931455632954752250841999081472 -247692964447263150740490653444079616 504126890655637364176298417586176 9794769264967312380350452304183296 -667321830274665906583039798381903872 7884924368272138554054163103219712 4445335953876250682091725788282880 -94633941294221334481936968128135168 7114512620977598518141865020096512 4134220607524421136173400187731968 -583164313070252897675879086116831232 9186461470402541974690806317973504 1085526165101159474860635868626944 -405917443283935204517078494991089664 2851807907364541085827118313504768 9331380053888278512347913765519360 -428523997283193506865997954039152640 4617662571892427085633959013384192 4727136943726915378896827821588480 -474399875089507086093037779881558016 1486204279090824614821519446507520 4399678612796548866607063444226048 -127902996975978985444534209537376256 5519629498467262482495572017152000 6249449477024675310094253442465792 -652555683916152385296957480315650048 6248096827919299755781414495191040 6870458529100266753991983610462208 -393745552144927144236458100060585984 6415604556748541120668557782286336 4490474986866073381263216094478336 -983856619548462856963947972601577472 9007055713832577309743777925038080 5117465533232938674407206838861824 -119127520806461103857803417624772608 3503141254453762303483254725935104 8519336126900313049354432046694400 -300300760576211508645122725193449472 5893815693269109082448082524700672 5552159081430002335072787208601600 -863268828539545368115745859951394816 4125322333928420423020309204959232 3387621650970132941879360840794112 -968086892268764133502418158457192448 1889901317086294393826467129589760 6065062641027599966151099165966336 -977279166674608498493553167078260736 3819170717674613210733864493776896 9276661289555820093980917006073856 -659664704316140939345303475832487936 856646743744940174574549148368896 3106219053210593228425874265604096 -41257581819433217378059173501075456 6465574128458542547754188940509184 1952283908990527281238186412474368 -346749595229915564147741338850295808 5299266948784866388716109374160896 401533271923990912351153409753088 -161050647788782714593910090593468416 1866761860611979826338958151778304 1596389798382850396079876630118400 -629428505956727108887697903625175040 9326237921769425892989718165979136 8523280361261026501908840937684992 -174663971280935367358547851795759104 5068231056005765961272143420325888 9273011544861608871935915166007296 -498386445612239237246283279639773184 1198662413199700344737431463919616 3553984199198207668686393108856832 -168801726302907879999917350759432192 7873484946980273064007607431200768 1087944578304569417085398636560384 -556039324618420744517054260335083520 2311952343892155808028057535512576 3865574991663684567456261049679872 -818838853639873528883007734471983104 2172731257097324802050536664727552 3655471864345758132709813842345984 -499976709697751214744185882848264192 9440290450976807882407141623988224 4929766204590992462106026326360064 -643442206663772479176696085381906432 9601273733446208019856812761153536 8184818422877063618488396419170304 -113734421522152857347090906341179392 4378795928787121573816649704800256 222706587459278812663503457878016 -945104289724897246137501809702338560 3367545269978656909298773606268928 8943881446598729605237615766798336 -769949611505707230451539292964519936 5393469253329467377995326385291264 28918584854203525812124475457536 -471673521086671733865990711257595904 7636235114446350226286844378611712 4991592467849983447644881903681536 -563562129562356426693077459563184128 5815367505929067895732434920013824 4227274808724158746286309790187520 -378290073427170603390106264601100288 2049536997786735560434033983750144 4222740058328522102444757553774592 -933506841274476444587818289784160256 9469826874438617904905943143940096 3978521217284068430381133946945536 -107106193972341265441373789400072192 9641286311858241920269333477457920 1522411850348898001718926035124224 -748069631456408848608719087018704896 248530495994610768344360947810304 4275631837362689455834240821231616 -771883093422343868545637931223613440 1543750276371303661547637425831936 4559023885489515915532545405485056 -720457830439791121176698594447589376 2513195339285708612978063404171264 193143980420435468645722222493696 -403787917810514158889139776685867008 8839356071319727935025363420184576 6828821635207064100090131551092736 -180477379197383596609900391048413184 1262228701954922411573451046256640 7376582636046945608200481887223808 -667207770705236171504718185588850688 4328309781979510191472957567533056 3946376807892969302688120463949824 -148561734242341085534651162283737088 9081164697971539180040368716513280 8663450174248883331511650535604224 -441288105782409544894261929564962816 2865822501028144701662253987921920 5072493481461354168248808366931968 -910230073417496809247192692809531392 4374903275639143837025504686243840 1921124725063948442449813075656704 -495623999862344225654551355974483968 3755762368525921212600496670375936 441045246078764657101103486205952 -655938065406568951985866511711469568 978640670695111277020662525329408 7582454221872242158377170387337216 -362466048800343489931941833105997824 5341439784083095851650669495713792 3322857432172454625100727461085184 -96086727441724224638223005780017152 5676974802547318233572670928060416 534633199678167148597686042624000 -706698269644688054159431681787822080 2382430816162419302492552820686848 8307812958085318677949489623334912 -400986602472733163388187910562906112 4997573002724680506267448813551616 8598154048158824925633667364028416 -532934888587546925291972310295642112 8953205104775312812280018750144512 1221888917015796847549818492420096 -638501324918157695438190958100873216 630846001842739892546051864788992 2407118052916916057081511592067072 -203082684907520897317719254295904256 2553849603582264942347518885232640 2602798695563090116623844469899264 -27313999261649166155694657547272192 467850746567668700988084504756224 6461591425394387802634366580948992 -687635769098058166517644429610713088 5199143355149481611658809483198464 3360031917096968429466363189264384 -304670933315894953733724880867688448 9548634839318801370924278429515776 2713902778613868422058298855915520 -360159643972043634589792396447318016 1774020589858100930001987807739904 8356193081790964588999259990261760 -91175132717846786230444301530169344 8951828367453717972377869798604800 7120487884441839883906024441118720 -809526696696242367707199112740864000 3417283278863403545969183657295872 5294402532684566366060881658249216 -378836057959919207852827323614101504 7661503256203731989895469839941632 9466582050462472408333365102510080 -105675631724444241595970234857029632 626353761972217114715612206071808 6049523050537164700804449749172224 -961406918395668550859038103684775936 1093750651626533793216545064747008 7890522856474255814850550492561408 -855078394347019153657025635635167232 5532347471318209803591031573184512 8965611900247337513026060438994944 -381731354688703404201410177378811904 719782549428717190377634883698688 5626267985738267314603655857963008 -981606437566571598891031922087034880 9379630589046913253800221368909824 5527241222796362723486215807434752 -83587825256337062760475825734156288 9097507536702534158467540881244160 6245366970217171492583831330881536 -27400681053512478901117427755515904 90009431255164525709766439206912 7598409665741916320268368077651968 -229120001850518284316605835038949376 980672766673616170563808056573952 4020754299224347370770670905458688 -235013570840516660858529017000624128 9145065074936114273742497081458688 4272151919852128418497892043456512 -793555282627995871284853524953825280 1588878427298748453298311035617280 9422042888181256475457063718223872 -45029938287526208071758096355033088 6420255783181895663831226985218048 479697830137031714145760983384064 -458103712386510268309141873959632896 7512550799804239163605739399806976 7821374558417362653886370614870016 -574931484628793803008755561410854912 7576395977463179633941368681791488 9625291938771409401963722351575040 -630182022936312724553953256136507392 8687912705285096366062621387915264 4562656603229841378955039317426176 -979484791211534107518773771422924800 3922356556357536055674137510674432 4597526677997241216894356764491776 -346768307193444701275071884522684416 5059169652671686587648665244925952 7830598165805470614359567014821888 -574947198240244685595593181415604224 8410474977775815464960264383758336 2466853037377917222350176670187520 -633574417295870766000611322559987712 5611976484968531111743814927122432 5129047492867304410803296716980224 -825854286766817436269300964908859392 1689850518206822574600778231578624 6728831429395859027424641481179136 -376072813543949053733084280106516480 3030158671388035786276746660151296 5917379292525568622246730129211392 -858582195581495198374616455486373888 4412968031570710438070658214658048 3213938346683522699176595721027584 -449657668246341428912899302809927680 865821439358067415062274346319872 7692487666963815932238716699934720 -921448817868789468919987468974948352 2023795190610343818731733703983104 825029129897161818727307618025472 -959056986965215985900607266382413824 1564099539513505732339722560208896 7754921691180829541403217807540224 -496333826453356382419246716819603456 5457568855493515485926289768972288 1449521625535859536732831386435584 -253106184545438731263195506219679744 3667977783473996787273126702481408 8032959650163056693860671497961472 -663562864430905204897624236169887744 9767181849080787632395709606526976 3771894878973438877826183579303936 -503977872945021058345147450248921088 9321332144902102412310818309799936 8717546933826401530174399364202496 -50256226446508049629453913730056192 4713121580988246211901141999943680 1960273621304274342469153819983872 -989171236511594388026171687056703488 3359780467538557754077619916111872 3949529657014954162326936836112384 -307083359574286913821805846577807360 6942877475550191667435537541627904 3436729910698060877773314537291776 -696018436173854375092194907737030656 8709440108433559483436596872609792 2308690261179058220838671181938688 -614828488298301437803313442343354368 176915726521707134458739371802624 3953522677221783720296594632867840 -302731539950400297704048795712487424 8891614456924688770756580042866688 7511533967399861427901450338435072 -796309044623804597944399130947223552 3557487902468464939972180278509568 1728354363775672774478430767939584 -27333317124753526448202247267418112 2849755075747115847771545264979968 5515373957746346627227486389272576 -187308057541463943440888206368702464 561470089137715902317044212695040 3932000307595884239884671533449216 -588653160978439176427387646531076096 5963252469738880245331107753492480 6016187139981180989296635082178560 -35365367394430028239882204687106048 8681572549479239821215228707733504 7592727898795069642161631218630656 -396749320266852781974504306238291968 1396008796506715114183134034264064 3508772104856951633343791960686592 -450510978224737777506366028496502784 3775243066478006121139771273117696 5408364772483679521930956742066176 -633055860846279814116371387025195008 4679899441695493297118976042598400 2987568768688245082988990169088 -488477774056673513822654760526807040 9170389189730809851957831593361408 9589276311877062059290038519201792 -310279919093733491890217937713233920 5294061323300861735988173731790848 783258699279824610538351765749760 -636747382865738736295432052864450560 9312392005531388467001664492011520 9715166032688124483863625229926400 -376002830040769184896869848498307072 8897053980086851913320256398950400 7245414972900223911775148902973440 -857551216022427265744887809161822208 7121558500878169722740769558626304 568213920654805147639321582370816 -969539735156681681721459945771106304 928465033544930276751980116312064 2018636180437557840688126858625024 -814120834409422530723705384249327616 5230094645394864703685685525086208 6824281125259549382984559604269056 -24162458010503846785672631749181440 5180386685381164011700830185979904 8607228917057514155442413817036800 -84908011616805139436009904421208064 2348646433667765118200214376677376 6309744965434492868572994984738816 -24590149667465754074820729435586560 7297017329074373484750011495350272 6190106721292823825696042036232192 -780937605578234139350722513576394752 8782590386874089775482758502547456 5856445748689761775801924923162624 -48717833975271002860310629818826752 6366784703311822959686235612774400 3827591540388288357507615879593984 -339817970978424186678865224930426880 2945888530477817038869869159776256 6819345674099374695031704293212160 -752536176354658722846386929421778944 4162156430747287875604401648304128 3983174749338423316467651482484736 -947929732686439878902247740177121280 9283148794600914937726499110780928 6065471127635571295635391377309696 -735372809750416290641459691183407104 887896605471835819060928547127296 4654092012060607472077548627689472 -30987133504957154140586244600496128 2158823958273002815029351246987264 5536124503439058095119762785828864 -775202592417269298854848214304030720 69171595676167399093233856282624 4955192051119425965163104257966080 -880974439093861659938365715477692416 6058003822092979337012213876523008 7903438416625164586760891053113344 -407031834230617497507511633350492160 2658869659248644948284513991000064 9648496119241326007488975208448 -166329357170812714058980055578574848 6146952550399376557555616294371328 2151126165937373793905250857385984 -15471953285065456479591470060273664 7456964989961331845713580276056064 2035084298477716870419737483411456 -379062348680541869409128795470823424 2708902633731661865762072358289408 6341313114953226975513378750988288 -50246924982684378099241513864134656 3732382353712812030652578967584768 4866395527442973194663918783430656 -900329537082312004147746830244904960 4359642644569902494507578580533248 2104986285197374447808981235662848 -576454220389254376072867335989362688 4249377507671798183091818414997504 9883072548105362222312087168745472 -770710377778841688441861319111475200 3604048267904370800832105171386368 2104853776959076084427023697575936 -537194117730719427039677706322051072 767837371626573369591691149836288 2857011021467980863876311591944192 -996101556343422154363239894687416320 7393579347487709094544027162771456 6982018122380955941548930656894976 -753000925581055478478308723444940800 9280821920313237996773133346930688 2261142776020767918013354111664128 -933453438744075469856416341466021888 9350550045736596940138108856303616 1973078371324795468660625765302272 -467991228145384700132128388705943552 100910154164522746493583465906176 1465587620125152578095746570518528 -826143566258805203218703936340885504 2848529390244964709990936787025920 9641690805795123063503305041772544 -51619782843246735856107352294948864 9328768474441383098271239562592256 6956142532883513681705869665894400 -332996903875635813297028949744812032 9353677524850582560361432188190720 7381183389584095932003686780239872 -528183534735223083390317844085342208 5977718739018498569247543795908608 9465665796981334155391152204808192 -204230776223827462118889667178790912 2280775907333449161373049847545856 3196136443593752743323615090442240 -824394190445339935335236518063112192 1963981641604388445360754517868544 3460187067073415677902380368658432 -308869324463700976098013722190020608 6243933470864520057655566941552640 1706495394559858418940606114955264 -235854275365554039427259852457508864 9260033546010873887415496276443136 1561781729808625565754799712894976 -368227465491800336275663373343916032 2272652865503342864395574894919680 4865988239743669904561238968369152 -947642234692560174288260713519513600 6021755800333877544037796693409792 9452664426786451556389854356963328 -673895793452763350689646849860567040 5107942864773684561937628416442368 2353243308097050592904102373490688 -920912740539180086732267806131224576 1329947666805497160789735696760832 8886284199637954718306360377737216 -181245860962740674953279012807376896 5014971263835747937413083273625600 6576897334203388251681586596020224 -171395513189186710444689087558320128 7173204655474034443941746170658816 628587143174278680981843791052800 -102111376792274027841317815384539136 4443907514069665549056048592060416 2195258123402399215814571521474560 -490742851358951464734539131259977728 5882199874725091520203009399193600 4365241188027425776731172051615744 -200152466510195083829597865922002944 5393389112245236234112080581492736 2375579146409221755905763801300992 -103271888770526277910449545510125568 4760268049111621319545097497346048 2373819430626170455963583186468864 -498887727174170202995166076173549568 4257734609893871775115326863179776 4367053033076654257888342359146496 -238103102477514062751975378100682752 7191690064124870463605779260768256 673663109580139477456787209191424 -575485496726045554935969470629281792 1349084211107299087902915386408960 9535898637552884075224345444614144 -161710372003853869209122268950560768 4739982395950209048879219288834048 7239781985694667326951230078451712 -883653003742911804975439610850050048 1138213513542243218341421098467328 6030999599964077735420978459049984 -293838428474682801219992136271790080 4639492829284380607048489617063936 2019823151639351577934476873826304 -796336329780858159847121371545993216 4416367516301954626252971054202880 3790231427862606201141520777609216 -639875862911097203873077365802270720 7372139854400643012699508145389568 939630128180483851854323587743744 -515450488321029431039392389206638592 8141457762814662030458544958996480 8986397181383168565250204626845696 -110847287308889296814502411845500928 940824226661455636785267845627904 8815167942113911507256547848749056 -926198913611706508063175840934920192 8217490166551697415089211882602496 681685042904030836348049973837824 -328753344023533457542083740455403520 3412225515335350441883565721387008 2869997059468089870271806806425600 -372654119474701783427057381298667520 1217568152989874677420542184652800 7498905476492974726267095276847104 -155471240099969052239481886669275136 477792559623232508629534782783488 2453913444266192880434722973417472 -215962894716283723728012926060068864 7552145724223717257613978867073024 3601404505836474328481581647265792 -421073330453511829915919592919662592 6762321016715075499962238129668096 3125010817582174740139331616243712 -915971528011104188902166450973704192 7125846244138763865541560747687936 2106145857047201015695029500379136 -590292626798213933413482018595930112 6461888004316875895213191333937152 3290499300479023574137437067149312 -946869723427376265068576448880574464 8465804279962455871780854878437376 1977922515352303487336384456294400 -545860548812803192946972277308653568 9001272862954805409967840331563008 2572386571922959679193643678171136 -782932860182397702161501318360858624 1330990956011528633732145191321600 2723729557084887345160319108382720 -449783843770651171047860092247474176 2123980031745908803477356356304896 9031804961057495828661811795722240 -440996704959697852698445101978877952 3584004301316963599671548400631808 7713618400407972125295146579263488 -781247337741618316431417626968719360 1845204281215391327698237318496256 8886306583937822531449942628630528 -483091317716726049150569644663242752 2326812823698510926326544375742464 1944984123406390294993892290854912 -473786805419929379365233383461355520 7860712528480709143021971461636096 8973592455937937443706120286765056 -290058547290990973193202056845852672 7132201136539571721109818656686080 2247069289628566464321152280952832 -801067967512107760130491173490917376 9046483044567731570352475804270592 447542753600356427545620194000896 -146839689126054047271383632833413120 9277906820349574618277276150661120 8607454100155781756595427872866304 -988362680419479196771846902140370944 6379441975111829175149396932689920 593069503302428072402047815647232 -564028489760681707354725572526735360 6087636391211898244971874882682880 5559311344299657464912903011303424 -619220371513851942368441098674634752 1202083402644931581514226574819328 8545333734018137608066635457888256 -405282834434801950253605724172058624 5915027990780203568157043428687872 4307712019650299791165313955921920 -561422657010362833574201222947143680 5077677012736375214399379052953600 8567007196905033289057870530215936 -125966482961718208018643920070115328 7051695179308289536591009058652160 1490246723789344539641074830802944 -446711091697883615990733937773117440 9757538291236363981944910690385920 7732878555735694627947279672147968 -517059494120281436734617509777375232 327172913400701761467069742710784 1327328505670532359081522003705856 -13758854780204630043248073000353792 3685744923492942995159131894054912 4985958424530885787704768797343744 -730445086757332553637751337596747776 8696223054057434500451528924463104 2652707515623358056729631130648576 -599400328932756724414328982879600640 4007691006098766256121519204728832 5148762435448040688797812856455168 -68701115779998044190923798756720640 6236660877424575931037294853619712 3469588820123997587460203489525760 -549804869979247171058226236661694464 2858982424104571297933034143088640 1763970034405257619553974067658752 -566392428289876737746487927648550912 1645297405271984817126426418348032 5249634661252535145301924105945088 -839204177628422100895609572682629120 7443111069910649766479552422346752 2092391788286245942981051465859072 -161244007665517219902101138157076480 2629312576926200195355048570519552 4629233572686130741679349336899584 -672060661024245106521285667560882176 887842592709232984075772908011520 7586045287150456729122945114308608 -147989833992639482932659785253781504 5082801766450221799783946352852992 4017614947951291323953394885853184 -272805474467411648502549477710626816 2964175438510279226250501988286464 4936091973804802140766389277818880 -888424486994061816252832968637153280 3145385191321607284099758669430784 4872308636193449424555547815837696 -530217855833783738262768966283821056 1329846180668674190995332664393728 1540736273773051279634461840375808 -360091696688965537885161533114155008 5049902919239966474999661267517440 4800503050592029697087957930868736 -474118352794791410428772843723423744 5569076164503246197894958052016128 5982818795102451793570686014849024 -815383844071528320352074976188170240 6701204657510985576209510079397888 4598013328548467910986948260397056 -965774160258782771507431230721228800 6552538892724910823712840417804288 5507454061665132997878944064602112 -689797989708490657245335689478799360 7915235854681209904768113910480896 8934810096043561127782260018249728 -661101756152136472622768278520987648 9393025265607359283913697064386560 272511178219095314490417779572736 -308088922269971381471601980755410944 7248357105346686656595960000413696 7996376636033431537169222175031296 -122086252254840717289138993963728896 4120088335862020593181952776863744 9171915517499999158747294368530432 -889085071365506151782745326082850816 8152308494864410148356265340829696 956640084164232243983184358801408 -640122338246280220949614980482727936 5350436673275213214799572401913856 1520101459618280723398259109789696 -879737235807890920969127960061673472 3859488347044524431657187820961792 1703889425764884931195964967878656 -6780594693400701803008889668501504 4699752983598844734396091286421504 4646517568287719560022044297920512 -664159653389822450374493642157981696 9112957137188806888845608128348160 5411311784896138710775559115243520 -427093042762537348989053186082865152 5423798098224866380502544645357568 8247134706130845615310871390584832 -885985454633975233642214197532033024 2713214067659191762567383377510400 9206527890359075380470081396932608 -823067690542968315279407921911300096 7719613834591427570466614589521920 9986405742132349954743732784857088 -816057315143333170793255418208452608 306199376667498526856955308277760 5941890211858610771863645892640768 -683450923455527135981289428773502976 9676996247700923867792914207735808 4112852769672345753153723747532800 -82910215648823578152711958038577152 3890879595751631370162443703549952 3385754176781670231438390718365696 -448663264573056542146017886677762048 5160339476727267894705170029740032 8712988061482014272054493997694976 -108689905134257422540441665744666624 9470076503465036747019106415280128 7440611123320419854225086319951872 -963870592573387533756231348308148224 7092301210312797468807056395862016 531183449258493122847782647889920 -830060258760764614921169112366317568 3783104967886966093234551851581440 7346922292997865946390424480382976 -410508947622656640213285793781776384 8310432490746065787463839441223680 6677290460464608232023322756382720 -545424548039400868780366113265418240 1604924083798406987576598090219520 902944596375786240166733390282752 -37966060371762273455134504522874880 6081319992089822551307546502627328 8331955827497567263493450704617472 -610233519569087194624467556196417536 7783830245929833510829513483747328 6345786613192067753974315343675392 -377619237414764324848280143677882368 60240585300896907088639706529792 5408836637289375472468660102103040 -620216835942370770406375896765169664 4031580111018376543193569039482880 5725677553666382214181753311985664 -208247984779817356809613667511304192 2175703948079131717622182258409472 4587420209419104329807252179386368 -571122783681523556438642704632512512 1093971710020019428495080699199488 1509310179112009831639164485894144 -894102001724357727728187131144699904 9837281142166762913384144134209536 9624003630332748553624579806855168 -123146301229078062317020672923009024 8059930655080297772329053909417984 7698577581277167418125744051585024 -909256866796340119782247573753954304 3862588741472717381964190453858304 6874236037152884825200712998715392 -557314801717924166479131019172642816 5910284726528258891021668887560192 9874662679575735515809375517147136 -867537954311022867524972450544615424 9289004180299557436185250805841920 8251809150351779427094653835411456 -464279337185147792877295108540596224 332501224226577708746824237449216 7206645162199638693800473708724224 -592032881029125747944132197383929856 5416936643964387382372666227818496 7354135488701524766862248930967552 -338246385736350544719261614431272960 9756955745281555268136203005722624 2644533571063446205093134225899520 -926495892645743985865025839700115456 195484610363609895086290360074240 4777879070056030589040723614498816 -996799736548108398447695203747758080 8610124191648254258985138103779328 4929967462186846124115509339226112 -706582550947873952905630476767592448 8188291048790438033607542242803712 2345149417081646060008877722697728 -646264407591273414801125317676105728 8648421557361378572054189169442816 1978714358052337579186642265047040 -152514669392550720474608934078906368 9791104728422741520314369939865600 6099961903550628976741828079386624 -691533657770523985711973087420874752 8559751459996144946083085215072256 4681939949797366892396105074475008 -333579028166223506452633725687562240 1411740675258951973851149319012352 9566511430898071962464214797254656 -762638060415907154376401122739879936 9978191958089280659520894774804480 7059808218661898978927143446118400 -439431690886205276511247343204433920 1423024611465244029166076295118848 2456441801827963515029065111175168 -972655658514009032098682933520367616 4308437285131876649132410783399936 4399491502300651974948196037165056 -807357481963867420362860391947042816 5310121332660038978298585058115584 6258790986485619883572186706870272 -189830386123396020855549801158148096 7295578845349735539850708414103552 177997903503344213156211669860352 -251914421245803436275297518752890880 7580920554959487718780302287437824 1282273482111365856565315630006272 -196698831597029640607985104674881536 6863502141905195821066274258026496 6429518949119513285449808137420800 -593440542937389342440929269477539840 2324899949973764109618507870633984 3126582336075673497678512824254464 -420747591621513684506618114728787968 4177562820702639075882783962300416 7757757761429208296098477260144640 -533862550326497892927997522967789568 7394038072156405881788020167802880 4857117953390430555355631126052864 -377872208467933015080355297461534720 5975273720113479319313426243649536 1893729758548834901165165401604096 -531035390582348070833223223295868928 6418674185433614149338565443584000 8959158978692995406457153249083392 -234270629689270766862235199533481984 3584146756776352508037264270426112 7753767158958394351993909709635584 -806058304333975009946139753531310080 5839485769751770305863297894711296 7180490940156830187759036807512064 -608038866968335970127539235647913984 2183355852737054828534356347191296 8245036686841524220802171496562688 -62512999778962397636855904665075712 2889838244123362371306701031735296 7350894135522523241435116133679104 -41124262812253532415320700481437696 6264668271395119956143995411759104 298708449527231655662591324192768 -490273719000074328893836558919008256 7273135538723038037607603228377088 2071843335281299938358857306210304 -181208630412054483925650897115283456 2692364525687343471596017232642048 9703316357907500930240582890029056 -429536903593462205991174045140254720 8163000602563886500542561279541248 7210107785636515677817526663774208 -170953123423285468727664167138361344 5692410177551151980730180691820544 2536528123269102203171244030820352 -389605239412229814969257616224550912 702669019656358438670576625123328 6428084840353187198588676367974400 -506299955649349950384035844858052608 3754111345989568397363787776131072 7951672128985272567415745795850240 -417302952694974499776401070549368832 2425146975054997586733332185481216 5574208922029740318829261048774656 -257543671838681102892828340627963904 3817617966836298613091562894131200 6522097897599524041245644382273536 -773061320266858514696634140098297856 1449835725658482356932959463800832 8707821646148815758181928143945728 -694452264441877936402946176858456064 2572913533232499668242538482892800 1249730086633520818225134048378880 -816811453202535751535183107415080960 5697345874308245082494890210754560 4960527632019610166984602816610304 -799474976966428576574363041513078784 1375091935869045895960155194916864 7587528716002486863881617027366912 -351727931422931377165602587332837376 9289062383783787766568993563869184 9159949165578710272892414671716352 -132610248991593789317504585095446528 8041200376096788812430650575421440 8507606534040649666704861713924096 -318812739186541937223560818038145024 7269281420295347267021168451780608 8522230317749811372910368224444416 -61240165409008153282482731718017024 1953250271551114380109978902986752 7255801019626450889175640785813504 -898655554751984562084500439377641472 5452960646197161397868084213055488 5605789566935068415579881037889536 -330576400067668718882556543022137344 422523821797230309753216256966656 2062947747989320317673644784353280 -965280425957706560596090307003547648 4184215044234737793149656725716992 6091788488573692580429467198947328 -14941761489178616997939366290522112 7608695458972516813641350933118976 3924529001673178619399435798446080 -652864794085111542890651671962058752 9335105371314487368782016508067840 3161554230116535662062299544289280 -860695120762084492984605393530388480 9165720982441735112249333478588416 6416919883856148965284724252606464 -139698732379696031456056756840431616 1347040849330982531328707594813440 9883125493992987500503095503224832 -355776914239393140248464064545554432 2124047964482014852207358582456320 7764339286090480963789114132398080 -229333079533266875822136895247220736 5350105843998613471076395885002752 498515148753297116144671718899712 -81913356492474221144126793051013120 4305561553376212268779547123515392 2265790327501619203975146851270656 -749245270771525607016870780667428864 5338217306017676081756732276080640 2890593332797747448170868423786496 -114474391921395998773054762223927296 9936563424116453115531283266535424 7343666725097860478268806464012288 -659510740946133034490094947326230528 6816118718273856805699930399178752 1697098609014996490318171667955712 -213981608410497023354660131321151488 1855390893930170347122170081050624 5609233348990890361066763113725952 -706807706395009107724408087277207552 3713659733195656919545974133620736 8156661555074561452098968161878016 -330681474850762019794063876794875904 7455358556444641916591478449111040 4288925882796903276055025858641920 -714865390059569446617573977831243776 9497499856376397259001352547205120 5629707954703071814012774721257472 -629118703252890513535793521674420224 6326186045183411488966636726124544 8345218999730262413519420194291712 -457775962334737677046874752503775232 7233833294199504804898510771060736 422417130266796744278950205718528 -413080346213036935617056533242707968 3734230415495687713556204563202048 6255443549585656216516825488293888 -461325175955473460861457565415899136 3303239210929971708732399668953088 8929527250770814888351274641653760 -276980238385288704375977818179239936 1616876154981850004092585766813696 5526680669696964303368731070824448 -826982588661589774381891482221019136 5241700723925566030681280035684352 7556048944767896096538950316851200 -649890393955533868932092495478652928 5475733787347154213963827014270976 4558041700988535668400407495835648 -507320448325775013181939462426329088 8481939765356666463987866491944960 7098157047367916571764280992464896 -899480429889930033257219105048494080 5889379759572538250895319512383488 3428528462380194096672277679570944 -161799402697971419089148858943406080 7020442311954582930730853416828928 208262355529036106818292203651072 -169284302031197001472154408545419264 9587944779093627887264033369227264 8682966992237654616069393631674368 -276807330104882554937654971436367872 127504701538225640237321498394624 3437835718434614301170019896131584 -106696493983695873907422998399287296 9764220040161358047784128405831680 6878055441660330704193442939928576 -298324745624549378992699363752411136 4743835367672223354293151556698112 7206436174015760073688216854593536 -176516947701782430309799245375340544 3237729400926720583745319498416128 8471311444165639646034119477952512 -889201829185155413249872548421697536 9585257502590071578817420731613184 8576749477803975796826815766462464 -330771740499158244947046760661909504 748715787993762150817425665294336 9831907508582887537170364380479488 -118059523088195840714360487516569600 5016816800424208104972293440012288 5031133618998950820117012916731904 -143608021461712704280859012012965888 9358011321555102695268400985276416 8006362680396727860821509143527424 -198691344560984250838357069615071232 6574669560600835317450796479545344 458027185587847175864305236049920 -449607779336956861923407976921563136 5795683066628270343522299498463232 7531509005049642607874557261905920 -82269453209132019414177799148142592 7135484100739130487834394532773888 8122635312530658064334567082295296 -189837292679645095438954484107051008 5395606579466556890008887469539328 1376583258022908064649636820811776 -919326568374184436473788697694699520 1836786824892868644970803002081280 5789604858707767761183092768768000 -451903093067978473459296707582885888 9439031052412546330261064207302656 5720221485586927375425741164380160 -880425761686231734358622497146929152 5723481958028217851066657303166976 1403459374499527036301817508003840 -680688120237903544292382824489549824 2023883263385548794780354498002944 8566900651222142864449375697895424 -409552109727466359263305590087090176 3315009773112199877031778232303616 1438822992261853719109685632565248 -343228014108739709548040181218541568 2676018067259253851468560051732480 72785683899825098259552320618496 -472642976085123263715610947924000768 9625935902649229739591654711492608 9905341534370255822273942892052480 -595939429546001430216231185303994368 3221429715867042497589814862282752 1811599748299565735470391017603072 -73742497179857762399314740275838976 5498459455122924301176937056829440 3232792643399476802010022001246208 -745907631822423740164038956081479680 3652309556144103667340970601480192 1875481613967312717686951611727872 -639800390447224739149639741951967232 3095412141105438986717696983302144 6138600165429493486649367857201152 -15479462820622648747593720959860736 1602104939150342119769585316003840 1925880699619290659348964177870848 -37549098204338702734873580231720960 1840146688110170504434649751617536 3815504841030443657608553727787008 -987802724058214446691863401844441088 4708184803542324624446235959361536 4368605622649374728216131441524736 -172877722994384389542722847941591040 4702045268290944655422608174481408 7823942644951478112751889391026176 -612752277179716010088461750044196864 6361943242535924468564020705624064 2021156446646959996894521266798592 -91156730836722012201565263132360704 5233594695235496004582144552730624 4301301603964457262009513181970432 -222621422495532163786674867647021056 8112584511480897492996203741184000 9478626263870495336538929381769216 -306062640241139482866576408172298240 1626020798671517285022224286220288 664102523523295949866351208693760 -580350341363649561098840241149575168 9174036177447542973659007592431616 2499967484282104400272849893326848 -754755333671889138137165880046387200 8607913114915363326866390475866112 627416672395810342770308215209984 -158240889298351808323408994544648192 5231808691469422902440805640699904 2953279422091671820328658752503808 -92503618999924492693047844290953216 9859749890923130764353717701443584 4954902340065348018712851081330688 -258108601281828062619128160134889472 6878427648570222452588574677139456 2445664392144615827720041863839744 -838240231985783930533821176692604928 3473660076395753042888383608651776 5113766417854228140813357076709376 -262376747896087894496482999402496000 3171669077085511363346225262755840 2724574902883225181239324316794880 -425254543313922445858442959449489408 1813969905239836756986297814351872 969889382521591039377678960427008 -505038722575209470106352038145163264 7026508405171510543421597141696512 612979398926112992965991669432320 -898358932720479990731842946036924416 3685179132715617328568521277308928 3942608714426052738612045644038144 -822024452568112032352239686095208448 8905650701149821711360840752431104 8444418173358055479178240225968128 -543213969130773969130382489764757504 2727300998093128379706690529918976 9343029361420367379570783005179904 -435443397779250325666109199382216704 2786450607500171909742222892859392 8814159016825217599070246172360704 -291965742383167793077151617213530112 3909158222090215569074242193457152 2760627286855635986117194760060928 -105096949904548618466226889579036672 1049235321203181097518241847181312 9387456026521106688092871914946560 -805893014625007860677782958910734336 6293678524145334556948257505804288 8223751096195932661001184731987968 -781452673407136157345622341367889920 4380556689922272567280676999528448 2222611409827698565478520817975296 -192390783027390966874059990294855680 4032480911032489508463476448690176 8999951100864802625280003817865216 -782443146796189874144345035338940416 7773696325796736150790740350337024 4438966126829955647806216937144320 -238710801882307506796495418962214912 6094918565003765978229685908144128 9528520031065435391314544618897408 -748147822405361824832404497274765312 1593597294773123628150568481980416 2590371406996651920262894794571776 -869741535422891652454405917902897152 937156885593023265898762690625536 5072379145278417971109169184374784 -263565106145392791480929492928561152 2008012108275976969165636177494016 872105588394082131263240594784256 -330396125177809638484373010072469504 8609022020475061718093991627456512 8139211404189410970800024255987712 -806757314639887279781606092179505152 3690171091152693773610376876785664 7446793795376850474715107767091200 -185185713276210476997243088400285696 2037373912127859576387948481871872 3250306909273103687033425858920448 -413492930463059346121148827380482048 8954161566212976657626988835504128 7207979218573288035387826054889472 -458478340575554881616847605050900480 8420380177996660190747299871195136 6958271244190082389836016350396416 -254471698646740196696081981249683456 3393749739239429026607429152931840 3026379893909277182776240857153536 -387264344453708476461837435694743552 2388364718859634616159654736035840 9080609800018029920161160880979968 -429467616620494547273547673172443136 3150584404794305214468462882062336 4530618358838614232169499752136704 -951042175703101106467852950681157632 1005812164133137151688652057739264 2243455936747446059081286704693248 -476229982910807664098194967763091456 8309807208587905553913129069445120 366127576522565209301104050831360 -922632545628835180139831895806443520 7588706453802851603490185838329856 4938428156667993635886607781330944 -344977598943814259467775176903491584 4165234579014130948639598751776768 5593381759843473044158026581278720 -527755421360226976983161988504879104 813349635355509359177483096686592 1926091440870103931735861664677888 -910815165234884032972803366105120768 8543849965924642104525466432962560 5984869482208484571668882976145408 -689727689993019114013240869961859072 9325171783093196479435818936565760 1441948698390226881338759788363776 -767716320113803648167625426368200704 5821541027467176821343227375255552 1715094356831182079127305653846016 -625041115984606242563870353986158592 2220649110163047856946311067598848 361210467840585328700567653974016 -779226412017273289386009009149968384 2799172663614345383605063626260480 5116723457318473324255559165149184 -257070944278304910736150173730209792 8652908046837263231567977917710336 5160003681549147651138544616865792 -418901905444715957913077920007454720 9294844393464820123569644151767040 3621631588644488465728369248436224 -452146705916908907885380006676791296 3897223415748552384689750610542592 5558075565728870047209379617308672 -989094905271352396660368349524393984 895483632171043563681275711586304 2467064380333377924063313977671680 -607653030526368212571134898856787968 8560851262583903035325421262471168 1945354359280132852707260683517952 -779940032561495491941771191395549184 1407602224646040580534450947883008 9043458195243830361417209515868160 -465791404641431882064173904424861696 2759905770052431822832384908197888 9816173084717558509359829729935360 -560672420704924481300584572882255872 3076199965763821262413123328933888 1121435511828210162499090330419200 -638967694776509515236872161807302656 8526050400740190295311101603086336 55682294742480155280892581904384 -42557752871776512433844391245774848 4267986547267232007553661148332032 3210900518332230786374843626422272 -405926062482780173572114824145403904 4173195074496329995688266780639232 8027822833948629018879760294477824 -304452479848347002840225687026008064 4672403932389139825806596802347008 4626896860239962638313490202230784 -221195008138434316628979720499757056 7006842810304180747577471883280384 7251499750889226652221963113594880 -759265123315418534360904111184936960 49396934588145024152681259728896 1497595623699623347871024278405120 -779802626543942514037186507223072768 5612007992159015879670766218772480 4975793259670486584973915536228352 -53420088068935597352283426846146560 6468397482298699768165874022744064 8715574742196066009855261212147712 -508074615365057063761013834185179136 6741892794531046101475878783418368 5066377576964890868183586813509632 -810138793033553989062441598235705344 5272247078190814043449012825096192 5759728849947911149056102754156544 -154125327258908765793313742626226176 4199054725437741340514515469467648 9693579148920265298820136075001856 -337732032842905613131734853038899200 4579415312206340341810529015169024 1144394249899254737354721725513728 -104811832713269670964337620226670592 9891839504662708847622719270813696 6488401161098886791998960677421056 -377898509557626119572987479767121920 4809934104961468422291205482610688 3505316636326956284185688592613376 -45997531122194924625901374639439872 2952297193096724051059900845916160 5628666002544224010480745130754048 -996351763820997843226751212887998464 9963996776451899493701287589969920 9649074992254375927583063536566272 -46870257569419268906404263728513024 7103734017042196431530889196863488 4736605315437508173717088029900800 -626559249930950688032876976935010304 7175627521862250771574701097484288 947941207638748477357789435396096 -975427880511360863568941866689757184 4417515613541995452051361412153344 2837654166324883151100666928168960 -747094527240983441233874235420573696 5625215486101896214657408379650048 5476363307773320741733703027261440 -917927611385259754464489649874141184 9595118747780216633918223378546688 7216344848086158029692023049551872 -752272391471461411496983390958125056 972891535931862509446033154506752 9688614705002582858994158816722944 -112791040346799996813984518260129792 8003971508488091363978295923179520 4121399298772755079050534020186112 -356718058613317185692470708535296000 2846640581765348096468643217408000 7380802374449762881190671660613632 -842966986350980405898595698072354816 9266776335228276733512518553567232 2680228423360684538737101207764992 -135436040065774616455624840999600128 7859459208791112074281297716969472 6332183003703147972254284268961792 -65925839604961594336417733532450816 671790942714777835813013515403264 4650265378920408503131825525227520 -143476638993843516845493250911371264 5075225862753697024546986424008704 9957779203186127765833266285772800 -868781059690761423173428034762964992 9686701378473143318739988386938880 3393595265773425974321237073068032 -799792324331371953986449068011814912 5858246991006058056813909744025600 7057484106008313201936511040225280 -928879499140557342942343290962313216 8614594681207875393461725293445120 7157478304490608460852321757167616 -592846869341518913916412572299427840 2064796609527379297899895913971712 7286500342940095839529233148805120 -866933590330915420730535072696893440 1645185535975643666685900389089280 4611411145821828967588633029640192 -229045617884681139457273264655564800 4688187607270913933578783235768320 1632811342196785454296064944242688 -99174057082323383823680229292900352 8040086972858314496045604206018560 9025400461532513012926388035911680 -155133421818644351363925920121356288 1475587223697609171668458541154304 9406903828032528126321191613890560 -120375726853884877538844190313545728 7019308352657260145314808509497344 4648087645328045158664350489116672 -523404356996843042571596093779345408 8935766069339804322105874792316928 4479037934159640613483213941112832 -601234651815429337347501665923629056 8154899705541554462107740634349568 4817163669054761798922409091268608 -633888568632092990552025285106073600 3449086101240188858959793762598912 5334939742209849907951061241430016 -154645389944817448200961150888706048 3009333966788797408639393640480768 1324409432954455447133448096972800 -446223803129721128266520109770604544 1949761671744977087271533266599936 4292990978915084408798556809330688 -521050315095952714693449753871515648 6727154625488370494678967093559296 8017780012136224537291864286429184 -518843059191977890824870476990382080 3593738604426762966203549658120192 7836788066494655477724086230056960 -941762870012751414064889717629911040 1605595124652993348974975893110784 3432548307862046117159224295292928 -814449628333913625629743685188976640 7216778084527015447368354836250624 6332198914631477605939750440534016 -530083302947392994178326389927706624 2746798767493068298387349967994880 6485662212790458224811271333609472 -823533440701707340783585318196477952 3531480160840452755800795058798592 8415212761805330658411011941335040 -2549830140889981228180076022988800 9542307639413255879736121939197952 6440618103577985271702827986583552 -200317999435929928262819963023130624 2881828345672349667758931433226240 72508950268937482871118952923136 -444996878009720093612584393838166016 3025536431607364712237025443446784 6840090474054060459707890954928128 -24117772514539561820586325399568384 3927230004756314184291912219885568 3050007205948313072331136901840896 -521909455552596850155358867691667456 5267564234056161536583475560185856 8354691084782499110853617536466944 -445716870056004428734797058171469824 8364807965752056382162011785527296 2075394765231720675029364422737920 -316729393779917233867483565327908864 2134497180593990353992032905592832 2592133623398827289750222474838016 -110282137499166855803287312904749056 4390898753990096286820580697571328 8889976132482081182788409815465984 -75152336084191876720485440191201280 8374907864261693111141508889706496 3831413511531705132606294266478592 -557671860726818170307025633108033536 8941666074738224858767923576045568 616235832598146999703967765626880 -115919705183571656914684035637182464 8268738286768366802466403034071040 6186887135290988527103372701990912 -423035891910539834938769497816825856 7183970337241652193896510502469632 9852581466871619135083392429719552 -304354468652580891490032615788904448 337320857913289590951769400147968 3836949983158573464019671078404096 -148218964654258574438977916656156672 512167284677563228226484046921728 1482899939158556564254087106789376 -962463468319058890947236852762935296 761168834960246694053397613510656 6754261640121165312768552336359424 -864261629215988424410878699506761728 7038624886280608657916949145059328 7283575182192116290668237718290432 -249023073816367334755706833081466880 765476729021378407578581531099136 9932286532238120575141114145669120 -64556232363399612286290516835827712 6936040272219739607183757303349248 3031737189783635460762340687872000 -797516538399872182152930660777459712 9147605748304410193199784131559424 1021150441772309851294850862809088 -598978148011611927730753578251321344 3857443803225804347124384589152256 9260512278684977101778009695715328 -162402243576779618045918399447433216 8117077145848293462476197541707776 7643341188785974145984845135740928 -532014359131176016207225103602155520 9201428133679233066411723809882112 2411387703952845212636082719424512 -201033205646816917902040771711729664 5613455709285082822207850504257536 9382240960427899016223251503251456 -86151664470764540123353932185468928 9630732198724322021355438297055232 5177082500453675526124430006681600 -855610255540188889377163631206072320 6271833461089172486259230222843904 8029401929473584388661949627367424 -951604121509015663166930095886565376 8548268226468709631919476334133248 4934062180394885160541628946972672 -356332234591383570965673572653072384 4739338788180118014996048693428224 4916655669874256968181175312973824 -473380151168686422477010544053190656 1078013868333009476071034368032768 6739874389795393113362127952805888 -584320985860106661436675377005068288 3689166546927137735594677383462912 8868699833545736206966745013944320 -343967718136087028323628934244597760 4522259500497192405344382932221952 9128489901252386235903714378383360 -722899275197889196398557799016038400 3179681686415836605161141685977088 6868264956701243732228513137164288 -414015812999779866738181056017465344 1585158038989116338413150930993152 2209806701248732243587829585674240 -897227044209167118072374131190398976 8569863097182948382325170409308160 1190219901535353210268861310435328 -373055609257566334753754567518715904 5990405038912741905212929208221696 4981478718436101319934921966354432 -194947300867554156708530839181328384 3148607600317769238979312135176192 5573904518874678007334010336837632 -631957963916555081769556393152479232 4226379608600527766905968593469440 2901995223279870284773027517300736 -386906179616602183168524112996859904 2703759209059591946208612244783104 6225400820622528505794329931939840 -715565949381916529448095400979333120 7556530340774931609196151279976448 8945403862975739141516755694780416 -340221931279718358484452322586918912 2375275816233962725106715113553920 8623924054442366845788518776569856 -465618359725068381248550126529544192 4549437177215870955867578566705152 9295940278555573006629978784137216 -465759546810601440892659666322980864 1736451682542462669670737896275968 2446327944955680621148651535728640 -578697071641790813319623184073359360 6152147032806035631984396644384768 5385508360297984222901115878899712 -447750773111346814682618204908421120 2507597876517015257596547213295616 5472280576891776661914103484252160 -846866341384330593506907559049560064 8698466715617226544812337385177088 654294680077880893762589725556736 -323540085491016203124670816824852480 7538440739108788278336213833744384 4704871707588607998591534731624448 -668608609482932815486444777137766400 8588886137341314925105727766790144 9503974445358532048840897121484800 -756151451634625352374056484824154112 4413748697460868775854222212071424 2369626716997125903152472058232832 -768005572310652158793818537818324992 9372924900805650572926533421236224 4024375895410204254475181694648320 -381914683756247269004537505769324544 7989075957049561416327898098302976 9931165106716536171843256103993344 -607720734592678687897876754547605504 7342336945381359517365561188155392 6760854430580251084642132227522560 -880858017736947908141339054216052736 4327885207915550935348737944322048 1737281513513543760978552966610944 -804826428677347973686557595557429248 8663846334288891453303164053225472 180551141327492802129247151849472 -946609082277433081256159420348366848 4600262104909734584510559209652224 3259277857432692704063423594364928 -436176881045466592406793918827462656 5399661536417936757213576791326720 7174222425772111395227804425519104 -619904701811133577593152793657475072 9672964384212456550463986775097344 2589505505139465903383267199942656 -287081768043752349808112324017389568 6430343916990862444156848888086528 8275810201346014461076360254193664 -690171691950593014797577135088205824 1221081180253698065782675695730688 934081503460898896673106569461760 -611589958093155677197205131126374400 5802513349887320683436398272839680 3284969911637366344732786804391936 -426229409062463501498867670732242944 2963809625141229343008516491706368 1480482460796433408005630400135168 -251997908084013226146358470828359680 3187789569526416614033692871884800 2328031222260091099582242781921280 -925303055723179111695923963964162048 8216277039400570917079287903289344 2382148111115266555738886424756224 -172491460999307305258204821100429312 7508779166470921966291340188712960 4875553217625089225152110933311488 -982871474863820380627470753344782336 3267547881632867191060730908508160 1273722648726102401082221804912640 -250109410850391592874565054263984128 5394020867774933494199402425745408 7061997219656272314596115913637888 -249223581315983128478618489920159744 2309175639095745708685982859001856 4557900340031827615772818123259904 -414778420736640433147695504218390528 6061391763145179968092485055414272 7657963428240175855433058963423232 -603566668103228801147225321309732864 1166958998465189197610512015163392 4200459793900177706147809100562432 -655745680242104592150941462089957376 5932751556451470854900845908066304 3269874238547220700954822390579200 -39609755662818671235561519015002112 5995653503401884339082532900306944 6076262468053860695979847296483328 -299883047898168654989348028056338432 9948119643821237938719188364296192 3009080171616043381618040069160960 -60851652652204908902057744265117696 961793806060297297169426379964416 4814029137835683111082810748698624 -944555840658929533294139760588095488 8883563191601824867670450522554368 4416050149537553173800728137826304 -553057423233308491065716371072483328 7984242678218166793649939147653120 7928289806946961543839406920564736 -748301520013346121629983025483743232 4553355026896601204034090062315520 5107238571370705714713910096953344 -671347810775890957269829688550752256 9229806804374995405786533712625664 4318993885071068824004275357089792 -316345293295933147630178630725795840 6186868211026822727050135789895680 8528873366188299255341752845860864 -764496636053072851999830922525409280 1351249093205335680050878614601728 3974487738867184108418966451388416 -442361179633228041398260971555782656 4755589139340241412588340120649728 6463091475941993806515257143721984 -350281383366736471752046091138236416 8628612318887429751292569426329600 3155726183857841247917736001011712 -32782036725774767045791520995147776 3815115901914163420776038873956352 4255736441894276810665924484923392 -178022506249915208491711717271666688 897816947545942177414682769358848 6754380638300883703755236234493952 -181583200785616753844058411595988992 493336600246060432742220543557632 114049455960527401811943824031744 -957288952398496660624823441504075776 2188105447565408415019419639480320 1592004773520910554857814137765888 -519812939133666698830555964533374976 6523445140208339261124890706575360 226241587659832166981460046118912 -883967550111900638123760381008543744 7046522350515574234149449937977344 4763013189857941436671451174273024 -736822602600660423100930700886409216 6309069654027585003314069437939712 1505016651724248475618094436319232 -370899660163468636197104547948134400 7198909998715661377224173328269312 4617486461678747078626571873943552 -845258804096098548239679460057546752 7845345359437603157350297324486656 3311526860736268106994496206536704 -455785377630070951568651961361235968 9763984410939139886642286167064576 7441877116528470127974278064242688 -143154612374312953270539003000520704 9205961494824690431408520130723840 4871053632506174653863488737247232 -780684673630367057953833013443821568 3359299292553147480050747886796800 4637663443116339016089655138320384 -530078359310785780443186338786705408 4226052793517895208014284893192192 5736142708334391513287001454411776 -944139605381801610396597296958537728 578018563475287317187859037814784 8601161130685673569596528423600128 -164601650272841372750534814856118272 5564121885775867688538357230469120 5201072374638034806039442614124544 -391501758385403198013674779689615360 9557247253340883670169820877291520 6736366405211372091930316982190080 -696116035006676760670214926389739520 6304342349854548239776679368589312 4871966977057464500542169096912896 -471223057141074899406732456907243520 5141552630710824913480445383933952 8996135495634524128160116327317504 -376933492747129451374455095929339904 1525222174562869831073569836105728 3814153071510949156075190911762432 -883387164234368140353572676705452032 9240224221601401587294971216527360 7746613810743297096383937564901376 -533856678753072683699522134345777152 4694418639996471234881898856579072 4037466578730513232055612687253504 -674725225474572090504368499881672704 9670710603560528443553490107629568 4956404108343160170930408586739712 -457660596805381193223149475793469440 2726883410117417670480953750847488 200756206704809631427576773738496 -67930778750877023432922941209182208 6756927163261404305664117665955840 3302013012711107321207662909063168 -836591286200919085686406299468693504 6889178847048831934167570182045696 9529069580830204208944709803966464 -180783470153948099307998980817813504 7546786755113119776967079787233280 7274116507449084581013607178829824 -90083188492417346455382521454526464 8758301457723408626321537833631744 4303875141489098848062987667767296 -291161380797044316021996091965702144 7691176604303704444041795557392384 5886562674948557906273686228303872 -716670217508767277841616288805289984 3425514255626580122860661661237248 2768464441484120858473518136819712 -306944459595773936405866479188180992 6153528082121510527042764025102336 7526827597711550772747739800272896 -986037540472521984583136750885404672 7283226002728294877274084917379072 8872274303307864970790380777766912 -197208987689671075525703261103325184 3386418412732279690742030586085376 3928254816398048009746668614320128 -747055102364049640876722357499068416 8665142037126525761719927218110464 4076059504037526879729919723569152 -346417574146488254529870472994095104 8536220015732985759687693104578560 4333963956180466319381162176282624 -734174120574478990370043428958371840 1454940620266877220979112245460992 4071765086302445395178035154518016 -698621415183138929587040562907709440 9876096903509486709143826967035904 1115400902830677082410226221580288 -793788862212664288713508025100402688 5976924081033165331947405566803968 7599443718494104924815652477206528 -641480088699902892842298259842007040 4050123296372253122856121922486272 6979506320497917231819767305732096 -612528174190258138936969647974514688 7536720236528954682163737684606976 5462129744972217496804637496311808 -910873685458211300179288454569394176 9135200424965674379900059784314880 4091325222280539264236292973527040 -99081441761541242048831204569907200 773050618636001147892938383032320 7064255381371338868137967067594752 -789051995762730567002373105716822016 6499421258214370567277027438624768 8667304195979610970527089303748608 -34363188423564161291613818689945600 7750180335000601099146149121490944 9830178607693536744620706251145216 -898833960882978167059817248034127872 3393512734580884533129513277587456 5553726547340392974237038777729024 -929607083073013396696384291771252736 920891174610423697332629816737792 4094312500957342784748697900023808 -299965443783271600929986257214242816 993856698930838372182368119160832 8709244304880646395833165763575808 -330623228974417214455699412422230016 2936958140277657482317711808659456 2218248488331980196110964982022144 -492245651241634215893546811636318208 3351450535937798005486328270028800 4695487323785793969499822058635264 -63986888047685530862882453064777728 9623757929564776875748517855887360 6624149843001968621487664658382848 -590841823919729165318367212881313792 6073503427252714594367503272509440 2912451924382954060230878384095232 -251047155084128251554267395795189760 2019678098863875756682994081857536 3940318023139492823637596649291776 -490537308821959786224128068188897280 8003690231080259406073574568493056 35849301188950500356503973658624 -54451922874233662764076913358012416 2739730960753937085422537682190336 5937225235874585872238912775127040 -653470262818363298676060112270917632 1001392403828077582019533698236416 9742585415899484180229493935308800 -124968300980460677184115095097049088 7847060226790223093161095902265344 947032290248763071732706806071296 -246827333792648512614704073433677824 9811515555335500373404084030406656 8591452231316403041786806421946368 -821798937968308305283279456911228928 7908557548925651611213967667494912 1853887589106424556062818997108736 -822341548741201167615435257426214912 3084749773715662397748414789976064 1203661168831728486880030501109760 -882642880328288890344988357464948736 6183362211292804419269522746245120 9998920417282036031672809926164480 -411323941617275050553385458933432320 120649990821489024655549754507264 7212008820934720226086515938164736 -683223059793209872903904824678940672 7336979746203963794489705062465536 277161371510000386956251096940544 -836630956749692215955205591578705920 8368773694065318672250693014781952 2602069936313282799181120694910976 -363133438202046089994860547310354432 3011390548532808866351529322348544 5334987963136260612952319674286080 -359774066697016961314208846863925248 816995958403162816324902164889600 6737745569426222428587330942009344 -768908683327803465143324781024641024 8746065306056485666024681669394432 5052482334536325111547819034935296 -549798161099641105475465134255112192 2479176415966693128762211409330176 5241944039241841627789276118777856 -736836589609217798731540389376819200 5775830660669154566284091464876032 3840182075308444134016924237430784 -816309131602961202226764234321035264 1453330795783743382011424985317376 8730508994121100987991987524206592 -138025711876408918388486987812175872 2641817647148674678609832231043072 8268656943723053748444200943222784 -916688823347432282823121853065723904 7219539116282988545382070748184576 9393302550344102208489602378891264 -576807506915126635462893654230695936 881518323256415635920894566596608 8685448031429986121997401295159296 -478590236217738621393956838643335168 3443891525188983406021122812018688 5792999920934321004276279622500352 -548536934620583665483424604499214336 4166863809798025514781823515754496 2114269778463187500760852129120256 -284255749398041136994825809644486656 2076923180652697515717809728913408 3065587302195181612260498388025344 -653347291907733710786214600256782336 1381458999833036241308655030370304 4810856332911283974995336153268224 -15845193323828529356216748172378112 3277196173595746450512559095152640 5052044391604715095584061018603520 -683764772074559440505996376430084096 1203105048998460664063762441961472 8506386195123039778311732260241408 -867813450296047333494885090561359872 5801056228936989003674988593545216 3130579606916148771401742883487744 -378896095764530552405320176509124608 9015502945801527683165447373455360 8740341132990511224686407562821632 -758650320913060322974092155678621696 6641296851000959746536368718741504 1354095317882580442385680722558976 -319612073710376224049194679417176064 9513876289949662521641825472610304 3663039285245456910106466738765824 -375772404314576960216264534543826944 1455666545760921400456998866124800 960457230597058884715653703401472 -585100859594732391225264341954592768 9730847490747150427763543002578944 6899821264741021411742129630216192 -938577935714378490056287445869133824 4547668255659093092540467485081600 2753987185736138019953531802353664 -663996954580132951794068354360147968 4906571577886962112782906177880064 8680418758704167172252867716186112 -983831801379699595466791064782766080 3597081334835976917275246164180992 5272084375233926306285353204449280 -646009507973881018445061581313146880 9176692009725045164139117214171136 9859351693830128931162648672731136 -436714385165463281886257840507584512 1672849290616818594124078700822528 499014769018689467729844556005376 -165732697947833995195417042423382016 3791606180334201786156985622724608 145577325401063239783924736458752 -181880156359590042980886242979217408 5387059097054395056238557491363840 298676197836971125049695376769024 -459583760535938463755431835867283456 1164998516280118613324359513669632 6958598249614226188190843569963008 -363996629628705615940690861650608128 5862391666341177650862535309524992 4925386933176104105554800369729536 -982545828042462954842577069418741760 1127610204647285413814584823775232 4033730798314089304209664805699584 -221565407161133128960936291654959104 9814352093806621973403090250891264 504903276836233522576005491851264 -880400391598300493145596940299272192 275340201018992948295602150572032 1967513603893815556605958722420736 -522660717020572934625145986861760512 6361891956070685446525129341272064 4449170359046030566362508051873792 -518176279059730198473553485164969984 9068812521623379536606886914686976 4141385731201627416188585922002944 -514773086355121177590564048756277248 9593364948158024470935667474432000 1706372764473391632606518547841024 -188251176179996233449247921288511488 3747791503698056354953635620192256 8660062233196682700431379356712960 -465811057122072493281755691032248320 898506851304461296500344000348160 6564404142244811360074691101327360 -491568024769139333875359058436816896 9475840987289320736318793858416640 2135325714355241081485675945000960 -383861067408609313992673359250325504 3514142725104992572572057884164096 1902356732638212235789744899883008 -252224366265871999943936049571430400 1771226264112181118322902969614336 343237211782666950111182836465664 -695356119839761177497049164857475072 5235286353957774825279347740377088 6093445984481583575124292172513280 -101318129763493020150933310935138304 5234269061039678872804554105159680 6010712657301858000091913503375360 -475822989597081003401582454494986240 2616632985238972071065285843484672 4572947792195563131010276407640064 -596269397849281345547073821889003520 5221885893270161005484840880963584 7648847289166593945970930169675776 -232996647625795140418520033118912512 7610325294513470662254526346559488 2759919488922986450745006497988608 -492449236844194730121382901330214912 7435212999314423409071528140079104 3613829189377801559884274509807616 -48551846051151734330706169195134976 2438777422028592431696266125115392 532371522671993425229411923263488 -855150837938470535028299009122893824 5383689176105188879554283336368128 1056552327135129384951095534551040 -239083459946755244185221096953348096 6377420079660355563092096921370624 4832329757029674144921318366117888 -135826090798982489645109393657692160 7490191686844880923620809656762368 1747316271601283063122480437657600 -898216484925791934190978199210426368 508728063264949587239752374943744 6787144599374179221579809863761920 -111331145986653359130467376023207936 467481046381727971019253197307904 5980828804390750516250393593249792 -536513376200113992162834422123462656 9121933757360549001076147417513984 9084015824137657961440886573236224 -166414793738498726928876854577201152 4502522646495945952511195736965120 5223912817587582885042276546904064 -402368128297468278460799385205735424 30023835380077492379172747608064 966982341625979488476506632486912 -831254588264286018796731943008337920 6809934053658397690103964224192512 7825386673311190869192047996174336 -875206120756298528889457799258439680 4180541817685564031465602246770688 1026735442886936942675472060252160 -76466451974847674916291818786127872 5944694079567308933183190570369024 53575491804007589102486477078528 -137897128864230971582594062036762624 4303122647078387678018371762257920 1785012612191100092651350182068224 -284465477085934033300141334937468928 4410232072022827167912223550996480 2147348340166166776034444223447040 -774871429645015842231360886935650304 1493693789353209628803088701718528 5569058039994265136316227432480768 -653557215892265555991469619075350528 7488855971048844172959835733622784 4809672769542198370787212375621632 -319004957964837870143752227721838592 1409888976912715984902717144301568 867338007195263545573778418302976 -996095142205919314249208064806748160 963350164230068988475051360649216 8301828516475053183053250472968192 -743749095054251594473037420210159616 7413660117251347049367706470973440 6804650456176850410935445656436736 -221228303655005846684051362189148160 2547950514554666910916443277099008 6910421320808051801143276434620416 -325542340347009367828829299783237632 3893201094222865434613916079489024 9244007357172207537410631375257600 -967612648507107628952531134792597504 9908675812662757198211765476786176 7295169038560844475918300951347200 -35719496906758106800078836482441216 7463056638871155720742548436680704 2548992515864095011973624229789696 -639180532612369990055184174036287488 5475874541942602638337397504344064 4485263736916297602689455089516544 -125240560451458653398859257265258496 3275191154594008157200611310305280 7536124834423208458259619888758784 -861683867708504555103242922399629312 9876164742601045514672810137485312 3540377600948742589937107353993216 -409295600823085208669594588324823040 3951188353279726144916897560264704 4611397095418835328809013432287232 -247982046422867834752369105584521216 2627206154670747964389506875916288 3444567961778690161410626394521600 -285272264099974788539823312120840192 9008487478588759814294615325933568 3039291445971044205526767168913408 -815842479422540521149889843512213504 5123752373229588267270899444482048 7075643976711682399994631342260224 -390232768723862564342436934618972160 218849309848211148772926992416768 4074676761567137282134153764012032 -252624652689868371689146659851206656 3661483884888061807756655267414016 2546897597450332167822787867574272 -287864564535184566596259638033776640 5675876006922518904308744738308096 8708219063405311811539604030357504 -786888814240065986157774546155864064 7528003603967856993971711693029376 1967301795768024727424913930977280 -526363318632084159766141332516503552 9349386577912642164651231346163712 863269025864392560404816231137280 -356691170334229707880924505826131968 4005093830110183372576396293439488 7604550620923591873146946406318080 -2838192126218131564632262139969536 5460426448926344705270235923480576 186374622286365740068361717415936 -868396817965612906371978828565184512 5179574335772861460114349049774080 9620435280886840230428633034915840 -110717998106472582306244261977260032 5858505219444944986979489206501376 22521011505449050532762745831424 -913310766564141556807694354527289344 241781056878012782900251052736512 4797570460108347319520239735013376 -53238520104379354101984684712919040 9219763179754994620809796734943232 8904672243804336007408313041944576 -861460277067718045267238294057385984 597367064802835427780535756259328 1305804691539048443088765362110464 -522742865853833043955754926100971520 8941973976318130116896956449030144 4717133979868131468719101197680640 -520887242563425351741078597107974144 6272330282935529699414381330169856 8326327640427309079006096406872064 -252179422678034454375151975784251392 483345388878295888105388136988672 9277783330595904584883320995708928 -610531499535466573363691683032596480 455025531080435288455456665632768 592819628679092978204851474268160 -246634438879260911815604368029253632 4426846268568265705282833324441600 2059927688039280739166613848195072 -738393924535781870388757538281619456 4994121556097678123395585062993920 9720082071442713873661392924442624 -265971381878170038179059252900921344 8791284345044434867504232645263360 3460991118121573423754000996499456 -806711876338491643485833525190459392 2840224368138487136966138214219776 6343936248840604445982680699371520 -127759414212739557132634263207804928 4136525613281356808023903569969152 2617267746395479139604879323955200 -899448379292599668111184772724686848 299482757213279046160383041601536 7247137165582561222031441257299968 -530370016845366995960018136710774784 9596461546361462757205666940583936 4843746008080341759240724683948032 -938727723288575747307832604438298624 440954669632022749556308266975232 1140764860160940660319919984869376 -894253876273860644821405654382018560 7831121545807056607021237473902592 7642200711623145658974064152150016 -822802408473607985332510446804008960 1644326495882041207341661196124160 6330600398991910003626222083375104 -369867681052062604476288828635611136 3160433272817693527607435967070208 5580427008012222414137649117790208 -822392742680121062267389602005254144 9105223453547145394091876497227776 1087341603667993111978763809193984 -122899603537443676643744137133162496 15628625735627684481833679978496 183974333591937832199849081044992 -663401318369556594473590876413100032 6382564359343016242547269409177600 6977772231081219778552510810161152 -860739716237283770393038847049990144 6550946544947943901999460333387776 6779386976416252570556121820954624 -442833450045084466475587951598239744 8219219497274646660634666137026560 3880890201863447382117232773431296 -686537744887466394730352564936638464 4332084009576498989763899051474944 9557678107382457724913926080036864 -208277102045506604514239827555647488 2992680635266637712481733310414848 8291492417718669186228498999541760 -445679813866573359179880324780785664 9308906761354966868301206750494720 5139808503480901236942746178027520 -684455962762510159586694975331500032 8866981384885162562999098242236416 4272014040453999377541820179283968 -959482270829373456706928178911772672 5284815893480181527253307787051008 5606971137745128406985821604806656 -859947734217928832946972744199700480 3853767703083511547805899717345280 1291928506856550764685718334734336 -777591187174006316952758116499324928 3285304256205075275895019348688896 8388437439168752125401062390628352 -376477212893454417316422883089580032 4176266034123762411018480384999424 7379203026770695042530878756487168 -269438800603235083367347670793322496 3283176011517048490824798895603712 2027641550822304314658782384750592 -296213659452614631842097030892617728 9679847720817533799430675977207808 4443169570569008666809566519885824 -32593774756717899136041643872878592 8278767798020939839938558318084096 4690850158516872717328863144706048 -708539598299205107436250789146787840 6120533876799677878085759396741120 686081861698544126835847017267200 -491994809799212114411655254828384256 9236358600936223216828780099141632 5213633657389914352658854054985728 -547928188583063671380701504958627840 5663402083126183939313481570844672 3631444588332934252332406615834624 -453082355039993507463241064440135680 7376280567744786419664998478381056 9420955861913737852622911033049088 -258165812945480534515873061575589888 7311797640168794160221273339199488 8723909131638246648625533292642304 -315335034160161009820731326077075456 8457053410861096596649397884813312 7824910289303843147837231855566848 -165576050592839850233886008785502208 1336080171474659907856756033716224 9210346221886719131688113920802816 -179233802259215243740662777390301184 7071359734928345074584966205014016 1522458815663019391554833421959168 -307104461695507193785034504744730624 5114334979422884854256475813445632 6309573026023764568857219482779648 -123202040706894934128609931277893632 5322305913875663569201258827874304 7700146938393008051363027609452544 -380532765193557475379611158485925888 2777693191301405882362367762759680 6555223375466043832369240197824512 -507649327055952070896087168272302080 9867397629434717825666573035110400 1349314932735816064925106398298112 -257122614075925565275985300057751552 8989576547218827400094759637745664 2448032373893376354886121034874880 -434670768123094052188278096517922816 1124517196909038700978575251603456 6368082027182700284868669711843328 -547912803764198089360612765993009152 3486107372967599107519734456778752 8859814865852953297849734934822912 -35290322633802399248223757605535744 3237117876028258793954429055795200 7786410312081417568386053220335616 -120047038435136256626387056657956864 3623403997864671929320181013151744 6275969325147436907132628515160064 -720515073538594623870395995310260224 2392261272638353624170536516976640 8353478425854117763990449538727936 -769218166144532875569398669526433792 5450756873271107382849144371544064 5131134740605062246588601291767808 -403669669864980002462333711148908544 2935674954349498197517623160209408 4058485421355451852551096671141888 -944140214956192487053991017795551232 5038421122509092409035524493279232 1504390641932577495207614630330368 -220039432896770326403784987228766208 5480560027887305833230431716114432 9024938158608276388282890727718912 -346410675565325837610955384989679616 2797616262398817533409273168527360 1105901026982013390420358612385792 -788345835683801785673053813572894720 2606076214876948768292895507611648 8462226021684598225374962748751872 -273665400704901257588832924946399232 3177826781339841069006708270956544 1873731232939266034111703423123456 -637541940139134273194147650459402240 3941522449524576767787457822326784 6073927780295046882479137051639808 -199142549967045933008376666370605056 5781695044933748453702365454794752 7336587024676781840128869320884224 -657158480238414873788548848572956672 1189415274806051997058228352450560 6949392032996762530304177484070912 -525919742227619548816430610021089280 1024238683107786321949201365204992 8019843320557713758042698628988928 -860125367453306485627599416190828544 5636280858429000547991327839617024 8474672928416185386954765616807936 -467364360398673810007260051873464320 1052077255409424388545066529980416 5823871648829028993499573398798336 -440421864318076676975837132452003840 6397430724630115633947067090468864 6379445611675188904733451208359936 -790529170995748219428330372157407232 7693451142117429605815515760033792 6158881614055430215324371246907392 -749525733548285432654177345910865920 6139909402900999501491049177546752 7843949254204388235586671539650560 -855496343646746883552951242810458112 1005385169280750572669819435352064 6037862300679607318747937767424000 -634924145560329381144300740000350208 9304719939311490294880828120891392 1786700835452968346057476394713088 -388687938655058331996915026913918976 8358011301910568348721234439045120 3350237789469694562863443632717824 -426267973173152035475782782972592128 5159424546479461517586159363948544 3266844363409781636512250517782528 -530347506178744543398151902310957056 8460779070581186998466350843691008 4044908247145309385948766163435520 -504136332928338511960695666720636928 7804462095899349062914225291132928 3248419098599207103521271991762944 -336567752216707110558036215138877440 8386837305548351918314693169512448 5718645825522381996473876503068672 -308086881604922087281412659096846336 6685591264221756740087811927965696 7015089154598860285703854665760768 -547709781425772233712638943802949632 2324959324738958892209507680649216 4194570590733437609680102567706624 -210140433462922529350460480904232960 1473819649949454918194194206949376 3009158469041203042018456254808064 -867951372802282709318936939519279104 2981476732686176034879598499987456 2801210207530963974730701734936576 -55659766913074710541975297112145920 7494015642838298682988429060341760 4279013374112609722470779674689536 -882765904449194000691705777580146688 7071751985180371465806215894794240 2378301210558891240505987179741184 -700573170785225081837516120326668288 5384938444815877022781591068344320 8003827054364850254217213667966976 -978435526926986245962371765274411008 5703317352309170283512632549834752 9517449748092217156025134648131584 -676022567321013083228306228796981248 7344848154716990968888635632386048 1113997133026282876183123368869888 -806775587860141194076977130983391232 3048731604760636181228803179151360 9805114646275709419333026316288000 -121048068637412991595166724255645696 6886806958564504411879699529072640 9966761430957379951251127802003456 -607809620370816204450088598856794112 9224897859167055040827326348656640 8740923204617748198755176091222016 -850538448475224759069620224516947968 4719699842060154694557760227377152 8147413572431762140845331443613696 -729945152860377844459841792061210624 6286873365297367348480806777520128 8933960507320603357404429348241408 -854536982792983471195864867421552640 1400333568621779465817788818391040 3616239304021068137526057527934976 -797735595006987747907346770073485312 8753570983605554632720772023451648 3213866091192098384230165132607488 -509277159679566257903465094084296704 6711352199817676161972165704417280 3985137001456693208566649648578560 -656766835863455611191348295656013824 5074061013388588751670099799179264 8180739072200526966836429286539264 -538610909501559138393061758727094272 3282101658767985378842173423747072 3304349164894183664239191391207424 -372300645702344659873706599491043328 5803519002429408794316649632104448 4922999660294009687069760285573120 -426020070582386185033471323937964032 1601787492555243488321244105801728 1300325618984613792887222105538560 -399043888092462023741025941110915072 5173234965908337283693532686581760 4949368539480437190588156310716416 -39342950492159148791228427692670976 3373182354261293169859508190576640 6215137948983795909422307545710592 -980189752071606151698955800294719488 6771523268289152558772938912825344 802203864137605893841799172063232 -630160523937126397393036707499081728 8499122343890690127550542174486528 9404188181998991087982254384742400 -780887434651716606241853704205500416 6593455863220449896842702822047744 6275667626766860545311341453246464 -518960822083980458768232992649248768 7558289387232289172159350915989504 6886248316589236097397864538308608 -803043125837536028941538934499835904 7270405771613046317387832897830912 457835632668580596647980806701056 -511093174986566617349549952000327680 5477415038334624561137143448076288 6480621081719420065599210435641344 -303055351598178317474719861892448256 1865809881591027452279108409491456 1003821436630683515236558529626112 -31656973334904792165135067924922368 7924076227249506797941847568154624 4650703444728469983484402326306816 -297666287028776121832925141653258240 1013830207587725162190011841380352 1433133623708258982960672284868608 -709450503324118479009393965659062272 3334699792384802185872623626354688 3957290753822435772949652496711680 -102643819959759156695430641418764288 721123172818452675200062744166400 8972198519791407580620643559800832 -978639772714465260314089550476476416 6308293570303512545072580317413376 6681163607562451409845728040714240 -363969838880274065138700673538326528 3250200013587308241430343223083008 8314412218863528758523841703051264 -123864733523833396874090842484113408 2937165739211357976506717354065920 4394958477344247260898057544269824 -32886881017070466121088677944754176 9735899327352908777902711660085248 6163561555365057445755045327929344 -542195035130810110890614457762840576 5830753264651487376293756374351872 9562465197683823443292779198808064 -684767073111213200689105779902382080 8078880082781376219190183017316352 2518782446522587086657435790737408 -951408548290916697455358134999580672 9217757658797981577044306752962560 9327941491039919532588824684134400 -505699339151936405240014773826879488 2794505523200248488921088967835648 3165901877725301195699731174522880 -117339087853688945169023300026761216 6122424264870980974690686277255168 8860072101142731532241825301528576 -182559933913019704421991676603531264 1569992386952632204537358624751616 840937946245965714014878996365312 -606519884675780105959997868573982720 7979121709967635796551036626272256 1879899659594579000970430388371456 -484137225106399243168808987900510208 8779059615784304922164419893395456 831541461553428076516316763127808 -135053490588101248971942706282496000 8697064812442993769162759674527744 8250822391393739658335940153180160 -948797855939544708793100081018437632 7770448844592486097438162546589696 1742856619610073755081970706022400 -764032727967932241741311419401371648 4435793231313421121662434114797568 8090904889888638131990833641029632 -335168145473022257729615325881696256 8562268869478691423156561579606016 9803042842847738717712509378232320 -722358863356451022582769101173686272 4479357101537358399334437529583616 3323726077193269542810388589969408 -155027953222528612786584951921311744 1633064801180487118601136839327744 7000809624289355680949021450436608 -131558600839501690244359081565356032 8510518838637692858391951640100864 7608268522427949118000751752249344 -482402897039191593234911686727565312 7738220415009293282605595577286656 8794712323630328810167230642782208 -284170613862605125785604382317871104 4770842371353897384331242696081408 7459154198163481508729465522356224 -932378078251432601665717449684680704 1063118286214365096907886901067776 3341995023430557167979574367092736 -624983289531483655570375509834465280 2857719866356930438553414766952448 728221708515762645580749108936704 -838551328534449100747314020109778944 3224222331591782230617355710365696 5765495254209552524150759583907840 -685096211313267311629866271414157312 3445195778288503487352517743869952 6037676471975488075072244182679552 -488097477795797913511545587565068288 383074567275926596886628776542208 3933804750537114055970226723356672 -613071982802004010358951951516827648 9810957155904734296133750143057920 5052800352155954867312205437599744 -791259906941480769075222444366626816 3000272213451814743403584571834368 1228654942491242810667722669555712 -124423420430724868245799440859791360 4942184488486652969144646683852800 4057322163791684969325466616856576 -883957777699519328625278833133617152 4903367113819710785152535110877184 6129800031497840796733595229093888 -61871035360406341259285745805295616 7197997125439527093685079020404736 568366361724427335972083554320384 -990551356855870866245023546671628288 4635651493281758197306430591074304 497872541841339406568232413298688 -130176864003281461163888608968441856 6296509832647556997771893860728832 2967841290579158486498048997326848 -776020074870366384740688032780255232 7835676885994070742739822160379904 8685466997135706726351418920271872 -232247932126843995257514843168571392 4263764765706595587492237296009216 4000659063037964506072735119572992 -564512747771483414721672391463796736 4208515478675322142330234536460288 7943104108984725392438245558583296 -96649721725564419508146892041093120 6765797722839263926473678150172672 6612711681979002627921606032228352 -901532272013185677824656955630682112 3634033441186083190186409868656640 1489286595108204083239103538135040 -196575390507973835982715733789376512 7396530605877200359062541978042368 4544956117207636001421325661896704 -116947794961247381635867032202248192 4432748363222673256935804417081344 7486416472203611171071066858586112 -727862820966388557531542718295048192 6045114886114143865326184834269184 2403737104057790561492906432004096 -796793669762361350758577426407620608 9511515443189106688306215800274944 2861688004697180255209430227877888 -262801882239058603276283226286456832 4656085490435716079044798642651136 8309700880874229955942133100707840 -503255538431305932352248508609200128 1054427605447236992313925606309888 448100293363919185698492455583744 -297600946434889434016967387972108288 5667360085508033181996791868948480 630836581152212157108184311398400 -140626625220316686393828732928262144 3530680885352304270329479807631360 3009510182856678700725294640136192 -917040687527864683193033371015970816 1426118512603222435447235063840768 2674643813690516840306284299288576 -707072765947658475052840906796302336 1038319748135645166013043781402624 9464836302199306291490747265843200 -115042535028377271268061183951765504 9627778034457395068409230227668992 6818346491876408587009215908806656 -295178747924375684665154314027663360 4814584325880076001067483575353344 6688294979788404612569751103733760 -909076039217181011246051596513050624 695541675438224934941164430163968 8773433760514537142800993614823424 -494142072989087788448152548638982144 7292051548109503916749140512473088 6424993169662124443393422851571712 -491095494725146446017134295345266688 3346730670657703953545435728052224 36292173237137451523988604846080 -87298188060455409801404107932565504 6534198080992444607457564607643648 9260974428052648839326255108063232 -761124978837115600189695708738093056 27005887657115519972506358251520 5877404364591328148101288310079488 -140096981813458822455212961806942208 4512933562723111520308666424098816 2384010266346892468657861322342400 -344570932737732907184903606618816512 1867333122298510002297885325000704 9524128075370654754003462274416640 -910031726963778303030023805596598272 4076841493161018822718942863163392 6180640078073874525581530248511488 -429497112358905002780564864347668480 4685156582375387415510126480588800 1646764421240412585358723024683008 -59144098773383464315867075851583488 5179542523073441499172439165239296 4274127218462847636616196143448064 -71705880389318180711574858733977600 8756487147391784291326817998995456 6773711738096348940413202516148224 -27025766402387400473858551935139840 8909405100321472211019800829231104 3176700326952304939444200754118656 -670599868477491733349306633723838464 3356663090650442532059463228063744 2911427347576698419915133202464768 -517406540564969934750555087143174144 2480412211403743328506494849122304 6801007782058196537252051712737280 -602231833779153003209240874166779904 612467458197583517878065047797760 8969043065644310314871689616293888 -291024198676206250156115708140847104 4592343337063729104363920384065536 7926032296087124446531203859742720 -623348155928725612593805648119988224 2473294100587040407681932692815872 7540695580530867641678050782871552 -93782343653484726946869153093386240 6111072549485152369427027398230016 9329699607312604814346506534387712 -860333378968464204281446864041017344 5540585142474547492727945376563200 7953067308534437992019454916034560 -848190572584926823155910252460769280 7844906782517029925958165081358336 5761142103407265830351748535943168 -951264324823071533549088777674162176 5243933159524902888141371778007040 5496941858799893276796979412729856 -27559032771079684198127684963794944 2090093010303931189698314561912832 3474474449243196359365737976954880 -497958603519282093855858234365050880 2899598187413369107483060990902272 9944678961036775638958982345785344 -528938539080686064110654224466968576 1917858344170823746612890571898880 3136260947081806832044761384222720 -241297994589553537354161841349066752 1228546858658217680858425646383104 9999463771556499428606966887350272 -766240367254771395331893361152884736 1440583549241643120675272494415872 7548983887297217202463217071161344 -334195499660928592097750362622001152 4395679340239809250113380019077120 6076745148905086574456061365846016 -848763597982893609029945782643458048 3742364893546438819077900600344576 5153668554609242832555801411846144 -782356411794051204962747020415598592 6883081271216712728731400439595008 5854496176194772830226132538228736 -517100447618529434060168413440901120 9618964757336330497363907960635392 3970967314151975118604125339648000 -85655279465052669183888527873540096 2239239945418803152602948735860736 1876899930025148148093280780812288 -550939773867879372700685928851570688 4253725902832752269308628022853632 4217910124365402657001567351209984 -309513603894288834650754011073871872 8571490473546335847997740987449344 5506088995399657692895513589841920 -45537666031983130197161808783998976 7986008859663729338673984434077696 1028048611669298804364827860926464 -863472819300094556151551433518350336 3903219522310113131754534276694016 7148612572675751980475185750867968 -666389690632586456782180787475709952 7616604743163561818719446829629440 1148407964303448250268957492117504 -653836591085798337536928600417107968 4252439160171928992768702634000384 1109445636610404509165129585131520 -353116079026774886329202709018705920 7410277516678861079081731141664768 5788555446133104282698659605250048 -96323085011895323088734783612649472 5501728364262876365502985818603520 9297912505522637895578219081367552 -927784910340379277735424805283299328 1813189705968221783414540806914048 4667367033481283678063527584595968 -510030479752640839204244366477492224 9668183144055104295405461593653248 9934455208956712638464516914413568 -842471574372598540705435763970408448 2330434160473599043783904043466752 9754304376950298827046000082812928 -673580511753196888894273249383284736 902581366508970035071456385171456 6949145325265830939528201068609536 -522369682555484571495810167308550144 3597844322917018887281149533487104 1253334833997347843856092941516800 -928492531260177810389389438967873536 5993082449630104040533445434146816 6486587602976065802584783247638528 -802041492800627684951122497324974080 592646355273589619631675190280192 7247835120700105378450724024745984 -72204479346266717423794242073919488 7346695011486373176738970263879680 1820173864041040464124431124398080 -577177442964354541278046967159586816 4888035582776695383686900420182016 8370038918198302818378582308421632 -735199498462156948728716736721846272 8965901950542880251798058424074240 6068603290269216684747683897802752 -471924107502164304179875235783245824 924248024491889966889458129174528 1070723191825637506907743539167232 -89976355366343981566760527316647936 9597074914918995454018634697932800 5102910305487409750682123758469120 -875517821054403768364285618913542144 1291594169997868335554172970598400 4957176646096008866104903961935872 -708000745744100518792039442816172032 7882245732622605137960747369758720 5680466377300148165162065117315072 -402988556601412369164439315145555968 1618221957741692987318777610764288 257437470356654107415108774789120 -384752193747082498873371460787765248 4806923811048247167503435665768448 896975734161411079858586252214272 -374635990514811406839982821828722688 344319939870157383433888802537472 723234907925915835670356868202496 -101202381316467843359699397129535488 6855944880090977267849576140767232 6511964691286086787400967617773568 -707726258056632562851942086641451008 1794062742018341157097890841100288 9750054703239661522982011651751936 -972444014681926424925033436880568320 3933634777505918424552793228443648 3518796535040580217420683275141120 -792837747139843802411351518681759744 2760198736986849902244166839042048 5500205471954098202465352321859584 -75557852606875858145098969930268672 9058686421066243331865632223264768 2069406050016718940824105182560256 -907554060562422779849840945447043072 4142373234659444172612342904782848 753299539152313982456936794161152 -599963277821148700277817779729465344 7504859433293768081967295808667648 6336212948358459402492815154872320 -24733084970756881660272529744330752 8989488138254568908408352560644096 9998953396605808534124573952573440 -961388956172627146307167525753847808 1722992811162843056836703955189760 3901584575020096218892891051786240 -403427996315367719984743436840337408 2287870272227809442074757636816896 5344631226233186416757241475497984 -676478025353484902613049742546960384 1736465685399076356708274364481536 7787617412560869427817426504908800 -739482818883797230171557243291435008 254879915882013912876422143148032 8847544589760783445093937378754560 -69667328744407941463831595225972736 1357905960263753463340967814758400 5055644136126092339304964865130496 -655539218658189740903477683790282752 182926081536799045624191220973568 600376862865609457456669043720192 -448960607204709745321774783309807616 5763837204143395204793282525659136 9453213723245279637517932353814528 -3593921981972840663406578201788416 3390061083798520270128832942440448 8799027788618090403227051434704896 -482218377802945149806238419862421504 4416928430165695990194877375709184 7632939280281998120654414595227648 -341815061221362607790919938140536832 4660031356591113353498473766322176 7434333863675691562157923438166016 -947798260663001348334839264584925184 1132432217680869814613362272632832 2822133031875871993425012262436864 -147598686016177952727318263112925184 3791024867020594169801190370443264 3632370924121266250681682220810240 -134059229535984483935028174571700224 5497214564422960733823639920574464 2740726464971986353717181864214528 -137548448597421863784188658650710016 2542763765788448106499661417676800 8518700191410428234310989926891520 -710314776653730136959733466832830464 5754653115467443599869263004827648 1749758260304202788187314900172800 -25183913284101079475525837186400256 1425051782983784668318434401976320 7224943328320885321605541238145024 -593615445267652193217748364477595648 1523871218612410420450010226229248 2960081523109835916752471046750208 -600647215380475509376262012395323392 5796808481768533368156143510093824 9373271291007676082262092913049600 -104780311184915440589103388076015616 9886593697401670970533115341045760 5159009832096869845994852977737728 -703107384220367349879861612378062848 6077784129169653015921100928843776 5599027136581429251242695409532928 -392279577959877805455924755123142656 6890203790724255953979415516413952 777662091521721006252231418183680 -367883193807411592429164188785442816 7663854197184751217856973438451712 2459179517495193867067603539722240 -669364383354131837982431712911556608 164041623834784555826299751366656 9247751615728848434703244896239616 -951554363105701191597543041645150208 1783936649170231886732887557406720 8993452904098841113576748536037376 -824416470315228761774868356053073920 672234926131910392832421850513408 9354370486438904359145167625650176 -140308052111508423147591619250749440 1711430382153903036978246023380992 3522077296420926055542580788068352 -163650374333867556238328446574395392 7226649568633335888032577494188032 6172377677003325095207671592648704 -65460931662546906817647122107596800 5693890008228963319448235151458304 7788846177415703558526607103623168 -273795250411444916303914789895143424 3290492920752035231953725408935936 7400467837283401329756203372249088 -496403793396491071821874256460906496 2237069821142213071171744685883392 5007438454054504331445956029448192 -371488986972152837229404599969906688 6568089240953054971891945964568576 4189241532355372749532999905705984 -444390392698889016719638339189211136 7258578464266025489024603549335552 8753676764869993146248376528928768 -334448287302687707185617629953916928 2051827187118022166106821539921920 5480118489833889739061895530283008 -489932658684708041558428336447815680 1402474506746938126307264269647872 5697139968529461020225540154458112 -158978511710148896153306131660275712 2077408601615139577188218048610304 2002081381628404609463964722528256 -718983686229330144116919396781260800 1006062987411610969564520208400384 3757661374480157830924677234556928 -207205201498409280001990801680760832 8485930971136328471432118247882752 4057221529613038888675432068022272 -221481355373848983504910313372778496 6023357135915357355420112987881472 6860042669942671786367264158121984 -116420190534498967308385234360205312 716255353542060465429277824778240 9496198760856054986198926734917632 -852808628435063962899866015072518144 1126869832649175283103554875686912 6842850457405517687599407082504192 -602109445612970340366679924010909696 7845641609880063227515706443563008 6336965660738384246253425317117952 -318665472581042108534738926583152640 9408734479126082853840182958882816 4386101570620097747283326483300352 -370274125206628594001701623688069120 6707707405762917815366150216744960 9302050101124959681914709685043200 -777287863628110215322804381684858880 868384960592359344080914063818752 9000750376352949957829814462185472 -323472833968018673944853839479832576 8619633689290396361915325363519488 2555155248984377020359509016576000 -614931633442103125903360842073636864 1022298279601581478500525871726592 1372028623946529118361530157498368 -808854320412619908469975002686423040 4896443566205697531788258650882048 5988129808802233635826284806275072 -871913759242439078802813122055766016 8223833813073371125115639922950144 4185024824154656154333597828907008 -899100158469122423457419154551734272 8132470734908111444704118915989504 5444128142355406245747396511268864 -288563732337370440590176994367373312 8124285254378181817420327151468544 9211967821831962283291390922194944 -372232434037246535596803906428993536 1944764675284709897766381885063168 6234560305313134281088319579226112 -440514274147388856787743158424305664 2267443476078901927806155857330176 1107007586927369006476101769232384 -376430200270360377653280128779681792 2087568545663876621329714689081344 5555881190522253027900077388070912 -254083854354878014486216024724078592 2600308891192073034822554673479680 1387003751549582791868550251282432 -77871032715222865589333907143131136 1104948662621427635543135452397568 9427785053722520631095474897551360 -53873974539716331137697720943247360 7513531539799633534005163008720896 2187738644099664571452417393033216 -796294561826621335579794040049106944 1897905293271623677664438056386560 182782639033128894769297885233152 -170841712408356096811358395880701952 1897452463240907011186264530485248 7576080698350566003618484448133120 -197386377243085396286970602838818816 7226299580257092735577905155801088 2370809268746640548454406916407296 -920689480841114026755168108210552832 5969445816649913598816537725108224 3067647947283741417020406703849472 -755254396982312484669567982098186240 9945246649124375582372798912266240 3002195398214408343216392580890624 -230139253442777508118076867775299584 6280313526534351644806140175319040 6381719501686100786873876422328320 -534265033531813398069049564927623168 498651809324080528172304757161984 4520007763003082869044368040263680 -894733217333322678245767169758461952 2407793893906801683507582376869888 707049164552300827062531310747648 -901030870375342577025548267330469888 1207467835408075400662449674780672 7358877402092434557460818199314432 -635295412249292469087929352251768832 6607355971801162033297341114482688 3451566056691278008440261013667840 -88087052871564386842241598467604480 6199571329062978607272561939054592 5189594024129010383117721203113984 -399845391637280366417356609317502976 1024890948598162597880764682993664 6945829097756440322996570135986176 -360554351574842172156921396374536192 8337346202445073316877397550694400 4649531885552146153148824783159296 -705139466977235886028920569471172608 3146924003715954963712633099780096 2016250777238036994155698897027072 -135907719613420770302462147197665280 9477802266177163197128425292693504 4306804985756739318734456893734912 -105353503739182461992343395234742272 8004711243444825849655488512262144 1105509888098931501669123920756736 -140941014558227404564239923500023808 4841265796270896273118569443622912 1504077878857139209108994912157696 -352828087699340929728002391661346816 8532952325420377234619856068804608 2897849031317494857602216916680704 -718465071499061285875863511699030016 6967128649817091630225441110884352 9905437867316462076440602006781952 -718040523575353529182132016081010688 4174220721229976198864374702538752 7898475444840771034381231136440320 -747465954651423263102557561041190912 5417842732255220551923998081941504 4897682344298467016429365899558912 -938964863109452980862650063320514560 2731304800612959419229577427288064 4399263115525039273807276935217152 -405402569601536986129962111342739456 5766418160642299390880636781723648 5536264510482317390453202994855936 -590525766564539368896658250087268352 7817835703684236256556335683862528 7224153456657000420437046773940224 -627805224696960761776245857316765696 824097387612269341829251314221056 5629864363868492958969371090223104 -851661877883714534757769135515500544 2318997810825388459368164477632512 4546314740781689431956834685550592 -844363877674528024717229730195046400 1230650855468629381195258748993536 7187631036119914738516313593872384 -655458232393556542207555055556493312 4732169762423958091708355145891840 1999210011017200293562094702297088 -625077270762227077928840025901891584 3389593977686570797930674913280000 3243741376975056736655540926545920 -287679869862615205687868079661383680 6457122719581818490133743107309568 8435448669704051762420204487835648 -297467628502777494332689621457043456 8097209992532786722305033587654656 8150263771465620205954666191650816 -721631203508204050137830202225459200 9081843819417056385227236619321344 3373678166092278328739657852911616 -975992581917781505717676220600025088 2943163386975466002492954419134464 1375574236037252466044219894530048 -522562139800664634789492832793001984 1211927178837935356700280771051520 1887117974756326955375845603016704 -971343804120173664579219257502466048 790532706545238741224707753771008 3160242318550662308399858415828992 -588376349533721053490252133752111104 9562551732308894722946914332966912 511685888670527283223718856228864 -903386252431318435712577470419959808 1704377797098731067921814993764352 2943934719714820069692654223360000 -320541173135068206781801000838627328 2472362878727884800254930333990912 9587344756432653697352899267395584 -698445156298005147056918184333410304 3719845495366207302872896876052480 2457553508859109834580121314394112 -909646665567561794634418244529684480 1873887368880068348616227908747264 992155594942740586420811128111104 -933142563027181343895356510419550208 3089103586134614741228650802184192 5322974859369436038785154995453952 -831139430071598898643242600487714816 7646141409169875231351254059843584 8596812815355416950606193261281280 -966457632084630849035569210480132096 8151228634265215118436162147975168 7456691848399837041254931254738944 -591877846796195609345876858840809472 3376525558998075978367382335782912 7818978170353679367915717504532480 -466967532235283358722372843635474432 7680990201849113893339862554116096 9671018455989855421770004680409088 -590761991173568792520515865693650944 2759893055092422660601581588709376 8834556775722650704020234462822400 -445927129877816995555790644842594304 5490413207904572472143366320029696 8114665012622497454180191898173440 -927073382146801604375906091477762048 8459092945732544490019417095143424 6237064895429684988748259028631552 -960111476133372237143800043825790976 4107502986416799912475908108189696 8417816265317908004087727409594368 -516310823246646886433017309295542272 3256889004958908343731236378771456 2872194728944189109007579218968576 -105884170928574403854795170054668288 2169175594983722918602166323118080 6620413447067046335419427739140096 -642650709088076675813655471626125312 6212469457001689425217096079376384 7245233276609913136004620919767040 -385068613014948323663884562745786368 6426583290044588720087113119301632 4883300564881899902852010375905280 -347774637120053243762438491701510144 3107397880857024030771405146554368 944418985362636880786123466473472 -844909343873394829553190688983613440 1511657196491198994207740404957184 3069003397860564899656700702752768 -906013987188676866021926623774769152 3335750743109601954824927815139328 1591351063524948834539100746809344 -850169350037114195063378687698141184 9708747045217519183212020519403520 8751698626398683336880923644788736 -818484973329523855888424118870081536 7118413735399526407113649508319232 2477413035992577935600868871110656 -400567018275817119936507936709279744 7286659952730452825402409100509184 4560267858214457496562929588240384 -856583921764937165135682785920417792 5062116962884056340974984016953344 9953092708674266618100258590162944 -3517508086180579384139307273945088 6788501356318071221537793745354752 919327687557273612559342360330240 -808027617610985978406052991600689152 7655706190604958453268056241078272 2388208957497027327297105659166720 -969078543871682033532038060026363904 5819836738272198792799850527195136 1302757657414029390441330497290240 -428854308179096446078554843140587520 4736239477493167997597338776371200 6229355435090349150541279446171648 -787461201998370406161621963161731072 42386270563090894549236152532992 3266519577671117007565375527714816 -164603993960016463679502781314498560 3753266419263392820833001821700096 6581219995539587436822642294784000 -726506325701905453789537541122162688 7550330247267741534030909497409536 5911392863012890001706462981652480 -35875786023892038294033052704178176 8392991830700626240404282585120768 6464709133814942035519521276559360 -262592214661459943511369705156771840 3321901190308204799252819865501696 5473111338047531763809693250617344 -845960929460121370933801329704828928 3466324741799460804941666186166272 4790663313168284696647852990922752 -183493164973401634907767438202372096 6399443971518537113431909576212480 9483459542701891112138392939266048 -506149882688139964068026211209576448 218805729395706972103030807199744 3453084442008054695543386562101248 -745546566163895193126765017151045632 1271235437014557583280722579292160 7598045892478272289801025072660480 -496842267288070989244730560208699392 3497614169784893044949681744904192 3104394795657879213138524554395648 -323243499499869372820927689158295552 7054756101122495152190027649253376 6202292438452684653098375319650304 -21054151379415961132228226288975872 9797845000154753479600218981793792 5598974737143044516259592358854656 -329150583169863869646345093613879296 9577359765130484001598710386524160 3490016457469643203352211516030976 -781674786181812579284246624875839488 6019202937087925133628241227022336 7728994432930927740654919394263040 -663982116000160806337391341546242048 8298287557223873875710087599751168 3047839135590981790183257622446080 -842806660673741012605058718512447488 6118341845603203288165246929207296 6279066127506238802913701476171776 -821813676097357289122612463064317952 1710597060467004492261019441168384 1388683571845320497048210815057920 -887217854144499203126728381224189952 1004347995734325612045062960578560 606953139087517388189910482026496 -32993236599503309553122873647824896 9319419521430884478960158164123648 9614172862243051009186573584433152 -305365547764356952945940126345723904 7078340626359384834812365531774976 542738869208093928137121832370176 -772160000712778147700250405058379776 8912294598494071459257745359765504 4882796899742423412906803752599552 -956923737469165227287274408642609152 7951706842905515153166441417539584 309302795192966395023893899247616 -479768938760694507198084389625921536 8981549681725945717127586496118784 1932647254677712221906192455172096 -517783734652964429745716631017881600 9012635564808999682756554109485056 5079181364516421621224397353254912 -60864961535795033713212711566835712 2607603681642787029417857080360960 30271115739739539944346430210048 -148714138935887712044747810385428480 5290412046829393359246918659604480 706649859142766488661346188525568 -536062927129622787706012890713554944 8719343480413384865111048647081984 9856601066756553894679989444411392 -985473425950559599233571829244231680 7449086714057912458248494275100672 3912517784455193281529404805087232 -529167801323443028597339463012581376 8283786431228884272395280910909440 3994917964371677618998095093170176 -677700042412040938506730187494785024 3424041827056766872753470015799296 7651599991682308239082600158724096 -218019015076149101721769942334832640 2827174932021978009640632521326592 3714795635901424732008674737782784 -223718340877911498534595433882189824 2326419690808190476259603119079424 1167344251867529119103445079425024 -935936556075889739202155501993328640 1567655035860887822124217746325504 7436376378150441987363661049495552 -841766482701520432159357464993595392 9860082771066577742445884311863296 4742756484960067666359818005774336 -862184468530136995147302967284072448 9852774284716397337650398928830464 8888517712873706767160057054363648 -360384895730090619274029143206920192 8267232854299489027647426695004160 8986976978069519195562310237159424 -880078991578401806883558070062940160 6220082117776278815579747225960448 4898065044878688411864280493719552 -372650290251265639180850367876300800 4342226090131222643205003668357120 6006546859539973893927784786427904 -901661636505938375395498420737146880 3122947128477663040462210235105280 7881648560583661767971605047148544 -899120562375190685616492552118075392 1921728207760622916069035606016000 3978491088582324442008352486064128 -57666396926461477886588484331765760 4977750863605824923891542052044800 4863056424439880819668758701277184 -493606211276170433434438560806600704 5618163126724963700771718407651328 8036359041249752774150836826669056 -91009535846742379344215475732086784 9941241495743508503391602135269376 6486376023580925993488814190886912 -251650362015623663057773356197609472 8318705621926625125181817310150656 951935087512779841235434061430784 -174826126306802842761414640635215872 282495331376940022773806905950208 9797361072848477015926924021596160 -758581931356567978512082386173296640 308191815795331759081329623302144 622152020701304276969129894739968 -691339509048000471034529745236656128 6916313835110539204921222410272768 2942858752037338223694531778314240 -935521640703402773969512779994890240 6304537916967782219997278728355840 8112231342398397458266064970317824 -859075337783033840260455430222774272 3620626697468440701014673538940928 8599925851017746455128451032547328 -608944972052877713661122827874467840 6013163277701561887541674714857472 3409132394033877527205423943254016 -232758134529741832720205190025707520 2324469175762888098561629416849408 149526855747523542765633328381952 -614150020989486379357515396702797824 9413474432242281953047574967484416 3585477214975783630044751466594304 -963015273974965007235064386977529856 5696565447910177417008492639682560 2889111208708586637872322767224832 -871892644701184840477418000075456512 4537173512633754912598664597733376 7476646090498680232821377820786688 -560930420970517695521778177012662272 8226131372228338880375651280355328 7685589563083672220462472247640064 -498641651476960726128426019872309248 6189037940806540265350132039417856 3591214924279827241287250444550144 -958671470570615117972223599776366592 2921577376688662434557262827618304 6968146998848726928434172117647360 -858037132390481549119587456997392384 4564584892032470532179311426797568 3829209760128527539707774291148800 -36878845241315700956063549098033152 8019335713345942921959231440551936 1887754418306309650701499274100736 -31017326848647666501744607323226112 5444840398129476671298565207752704 7817748099131776719884847023128576 -102905000913772533721526664429568000 425007811360965026245537171505152 8032373487563568362030527294734336 -81986924462059226204018477732200448 4740620564939422521074782096588800 4516920668373282287101767743176704 -50466604659292777794409527821467648 5944708708703860918885482919624704 2970878951560030259852857703399424 -216532917927097002935927100879667200 4000757075325233669189615140995072 1714416613874405941724983733518336 -89739444192064819013651793851711488 4472642447014461556755242451730432 8403061115419511047823482201047040 -93560880938504610793855372866093056 3370704543321598786179426240430080 5752160871837535058543215399403520 -493579590139110513100762003154141184 1803520314549666806020400385884160 911864523585730148846293298970624 -931771121687107659604293216634929152 2818366427408507675296767133351936 9129744929514950146552032607076352 -130463709017197754511685656248320000 4082735171035444320788646786498560 4719297111951646414658639228829696 -637958411428075208227233322049208320 9143652962077608892565418330292224 7244985653956372853202323138150400 -599893484324461004149596742500745216 45930355265119162221616626139136 8956786878344278493203462300368896 -358714779578365190704209011325009920 1466123426444076763165902560559104 900244406861685045608119795712000 -404228946256077869431268633447759872 2839847358040884270398602666311680 9404521900286762585170859503124480 -436819127015960098053084012506775552 8210498801369000048934115208069120 3376549650266710287635540837662720 -359055255929540308274283203914629120 5222165383878527270656254628855808 6629290819257908351548096807698432 -413733775291449404694015127184211968 6913959417227551723064099606626304 7362983854321028966912875290427392 -759795991246396873394924838075760640 1141728186414600781038117755813888 3794567774336831567809916457451520 -653550218705379674310408639201935360 2890141354725207382606687229706240 9243330165321285871526250710827008 -953248518850299312430396726965174272 3367824815842430925279650346172416 3708859547251260712931535263629312 -454984520004937638266279147153129472 972205730854621250152434778505216 6095748977760815251992251497185280 -955118711733452043342634898599968768 3672714948932599751744241331601408 9320984317903517384158043621556224 -525606419917555664689485210114326528 7190513784643943394317102422687744 959301946165820926186555504066560 -717419030233438307279409200056238080 1686052005947276086203447745970176 106500586350999654537628116582400 -996588421813546913212633996928745472 8207483860877050469051803491106816 6705705195941652655371651980984320 -496403405103483620180259957851029504 5211916708490330877468870755483648 9865338213934944094680728654053376 -759139551235612449819628530498011136 4836350561928102956031958648356864 8850489385540176182366426806353920 -251329341848450207805341456689790976 8927176665897523811213028200808448 1054064347952717344159481332760576 -913581274897114299648598540527075328 4587566279918976545636602458669056 7795697403521447976226660808654848 -505880092195308175570671023496888320 6816469437336025152232468365967360 2012994395768997011585029977931776 -365815700798330567477286715967668224 5345757625365316524892542910595072 6148037062233920470178948848812032 -971386438055734919879163281716281344 2542610155042061307339552361283584 6833147521743485383800264465580032 -759713437865020249508859296394248192 5498267205250262487477503404277760 7856957742521209575843541171568640 -375581868428665698656319472603758592 6352234008581799329747699895369728 2577122527711456104992559826206720 -843387682505995957879402892774866944 2046203886118585861314937085755392 3042768899647422913999842077310976 -342670103017731185271136753347985408 3405927665899244657939370389536768 6108121162114383628387262926946304 -625530725245075177072803640292409344 1133298306827153488429165647495168 1269678389600415358082824607367168 -943488574436166868033050115617849344 8171268347166562156625050462060544 907921477372245948152534567747584 -600001751301200316476612152787992576 3201787472425183086967712322158592 3754817596614843488760587161174016 -605738390614135576098346671752085504 476279738860209951996348098150400 9064683338144425010852499053084672 -254315872647753887907762650860224512 3895562340136908027621145676087296 1852478550943986510122019484336128 -66859122495615088635453721618153472 2823565246384334215455768152375296 6980934729624385483384497570316288 -566012076973526287058190205984964608 7643392780760149513960199699824640 8387007433584328267644663431692288 -305649438281379796444922474097803264 899640990181855957397817887031296 3424316228887163479535625296674816 -24915759373397596686932954207748096 5522102366476526313426900595245056 1096494352523880664883527730331648 -512003664888528585670969670923976704 8059132833254972740637218507325440 4006151895904508012026928375529472 -382681524029333251760935515826683904 1088652822937084222719409193484288 7954825546079374968843639621419008 -623387121362327900294455141309874176 9840020704545475737359094554558464 7477695977400915451045750140567552 -333947964968049282122491964086550528 9986568621616895408401101342375936 7446268600948095202145774356922368 -695239422290665783485537828579835904 3486084050774033808176639922667520 132006770410000039864051446054912 -656158029250446002048146196110770176 5571474700130739849805597264314368 3452742377613759305568966261342208 -243207986377414049515242348005556224 6057327115331065604315349239463936 4558953002382005791547101473144832 -452514926098337678781833535459164160 6790113954644951419267213774815232 225801114877194977177462823190528 -724746468525812523459393314420162560 9886735957862936152277532478013440 1268665450117753976834653962633216 -923067596995231281246880491500470272 298799224024509791491742446387200 5558677573239842339085693218717696 -195140802290389098420146304217776128 3786034267153580122133143754899456 2903149336430143214634116361224192 -238619169858754216731450426299252736 9536723567035089994544940159336448 3431163812324721002597689247924224 -262906573639287500678811600350609408 7817545923560900495091698753339392 1258591963915803462956657294704640 -829893337989684293542221938505547776 2522445417289321816046181757747200 8116557212068555959935437839007744 -912686394785800510712514327865196544 9510659924491437410920830443978752 321933499680504344407528313978880 -601575661215332253631558799780216832 649371659891656020685246703861760 1263223232942543528002788117184512 -789433928910670589541989171547078656 4101500638266765300334675684753408 4220918138681125080874519036428288 -248430436728001095930425338968932352 2482671100752320628908115437289472 7403645110810659278852492183470080 -570708530339154345463222023904821248 6298201987220283403868703767396352 4190041097934406594492037058265088 -272013851905660957104552812639944704 7054098941852269629841178852589568 4814153275392166424110060892323840 -479377804279334749808660314213842944 5835731342952415066108477866770432 4555941489641439844579615323455488 -728504076739634534277986831271198720 8416442582773704134854129911595008 3944755682275295008521021101703168 -372000638870953710259258522473594880 2030894314198449136621106065571840 7289718737742291186038046101340160 -551835212798380445731979245310181376 9099467862278623534942900306575360 79758425670677541756766749982720 -183830832048599507816818486210985984 7903837843306950764343767106322432 1917540409434304464141194050404352 -440163229333088331492243407208710144 4441313279295247722567721080061952 4654489492281536481238682003570688 -832704938248777295624451528775958528 6738431178057127877437235686014976 4718390434165816975354800841424896 -310170535553687665634208260972085248 5231288771503537769947975913570304 8382061817233849649222431683903488 -887178631999027834826921686725558272 7549030852611340321681381368266752 8921224528180511646117893530189824 -926222233984434222775444456488304640 8110686337566159958096783117123584 1992818270946194450424470410625024 -752339960586754416918967811294887936 8294791607512733239004026705543168 4418732193019795875853874715688960 -715043154410889353970817802900078592 2216575571241381140997849684639744 6205824393033085982888832723320832 -65635929983202380969729810690473984 8491460616336342037478456499896320 1614619763199983767169896808448000 -996662120289202262723674948335828992 6948349672527192119436019331235840 3177204917775829197167067131805696 -105888338909558153836391342912045056 6639615343655133639182116599103488 7085732466628378484065015009640448 -298345672004510698743441437115809792 5702453691660339569931000899174400 6381780614100176064756637897850880 -835894693042901578105649261610795008 3741965442289361195695756183339008 723621459986298925375797241839616 -315856852429042226299895579376877568 1503457168103627508731277939310592 8911719367107541620603945366847488 -625685054362834251741980295400783872 9060841144078803735058906796261376 7668835753991845201507373155352576 -872583080738505000210950176848740352 8658126164655446850427301285330944 3937134135049768347218584967053312 -500950816960586348231351300050124800 6524183430659486140687112084652032 9443208934197889101063461300862976 -486831150953991224432711867796815872 267669943121435161646236342157312 4405666406984114743732065840136192 -491640760342686337022787594284433408 5384492234004240811936176385556480 4549094627732567632705642238574592 -747075817732525865066349506617933824 2442202187779900526790455859347456 979805015052533522760048427663360 -598732196995521517527130164483325952 6994641476963488133135549543219200 3080526406458510600168165238374400 -345611258385941216884714084535107584 6415758500631569294091366141263872 9567857239762741534283589815894016 -499053165634192766844174562140094464 4724463914072690537286161475305472 1004215030034722037958816284278784 -131561981659636183202037939633651712 7361583202258456381314772167032832 7713355399461490381967357934305280 -658633536595780235714874370567438336 837195236600899462365534509596672 2927460338266929818870025210036224 -882347656107092304020881030084820992 7126114405984887529491087807741952 772203863668806515479944867348480 -875154555549612257038387107745234944 8488518764823524769255592541814784 1115002259037809402496582594592768 -107508469231115302999909236868120576 4771987054656404064958975945211904 1019211963204085754147498180476928 -391049107478773215743381329204477952 2155766270816259180889184634142720 5011706385756026992880791981129728 -962939377337986906949335685902893056 1795209869080365540060496840884224 5198878102233206353972814961180672 -680834466111540392558584799755763712 6751602849763232977347878055837696 6016918628580766278673343174410240 -779608637002632448097249531103543296 3827805816848887758362049482063872 1820163241389431899411517852876800 -539520383130878123487617335959748608 3078526410217898020988436057423872 3910998771254279391130335901122560 -245270740631485737229386181840470016 8620945542548450976314721126318080 8181156417631732556546903445078016 -612798978340401866360121868286951424 8462838053194946099856045995196416 5475095718107313708871337981771776 -622299719755528184624496209236590592 4311505968214223527844397843480576 1846465560223667256930522156236800 -950900688660385730489610506164240384 5400064136096951729774163262439424 799717363193308320283368955576320 -134845951241245265430461284788207616 5216688061338614266663136569327616 8657768352046630631977707594842112 -31042419669329432599790432529940480 8243142706700827763828305730469888 8285408927626272988201050999619584 -979497255118792788714037833856188416 6841933752567901677237216676413440 727372925652813319966846389059584 -919674116897645376054738892099682304 3282760182713098157775757468762112 98207585303549231499521189478400 -298081157615687008864901581961691136 1316048592815447659718238757978112 5039653330533362312029776564453376 -890820069582594440988467937773879296 4652674831947008854631631275687936 2141870242446361344057216690290688 -11672525896607193774493184519307264 1717229182349146656904591217524736 1236400159050510948499978710941696 -375670170852483983334781283947511808 8750931602600796030540850682396672 3084536983202203677927476201259008 -238823277165076182850669165557055488 9474468994847617122404498745065472 8403985865511329974496941320437760 -919006384903319604536153335702487040 7494688685409147946005379470589952 2421106099186728239779209392685056 -879586642362663690586296997453496320 9731711289534497924295446767861760 9496826836776636213696840750596096 -538450263472016812738735815685832704 3838306864427129876879997099048960 6803777918234320003460794566049792 -196661780622677588131495708643557376 2276757635338460205909691036860416 9945447200609596072564436963950592 -370309610139304759040637983543787520 3732503009710716908469063906230272 7622681305475528209111457351073792 -983814237109691886545662696851767296 8874412120638787851663136457228288 2741774035491781000344862856314880 -404253316021539442746409238493396992 225544033143984692328370964267008 7862631313709701168379596705366016 -832358175811097946187620255921078272 8281077441199367412758342658949120 1597017209634351238448093335650304 -504976340313291521158325561106366464 6167986300042100498976252786376704 5372571375263783852010134430547968 -690639449654290459115936005230690304 2888505887009453744389178135674880 116081022356056623858171217182720 -606162589655073532718417815707582464 8051154477331173020723997738795008 5782157651762723384342266943373312 -224460312836902417549283326320181248 7955210986770811682581620010778624 4003481055255646034814019630530560 -831540398150701887398092694886547456 6564995330657837547412140888948736 24905874360555505601304743378944 -334398839591649850200915332965597184 3959920405575318945013690521354240 3322390458094195347259658371858432 -223488625177033459702680437101953024 2151679324637800195096995732389888 3883399665841169098129284930732032 -795072818039979928653739162567966720 3652523435055418383689109422997504 7181575774366573228359592607481856 -440559075114058169946095905532805120 1049692632046408889500467483115520 8703057784396467807714774351872000 -459745314717050180554997349386027008 9541795755544334357125538466758656 896245963292032227048921254330368 -167299102161483941479443665510203392 7617073470308757189987037310091264 4455197113130873410755127725260800 -459010762738047272085279638315597824 4190213290651080818856670479253504 2756150951808616181321444060299264 -670318171211648703172841138995331072 1542073673566763138173435732033536 5383570179529670834350667671273472 -657821755029668600540796074275635200 4342004778431793533235807404425216 1357353934455150580813043169492992 -96298012121138591603083210517381120 580052837697715711147047630405632 636309720679524095675808394248192 -684762650873431580580020822124527616 4096739191198018516514515944734720 3237241804772768892616212008140800 -525809338740114933655701506695888896 6337772154097847322387147644731392 7421253357911321901356009379594240 -933238494452596847368079785699835904 6369678783650508087466255020195840 9865523439330214122095233426522112 -937559923216409513087330535641972736 2099325749739893970232021702672384 4246035107346811447295101169041408 -452970370330771627277659088055435264 1720395047283464249322142743658496 9304381820041904851184269186301952 -89246885039909310928562337655816192 3433469209526115923282808843272192 9903226614055911121985136228302848 -289778186184898332530360081771921408 4398265072298722696581039651815424 1737502280211944699792614997622784 -12155759659679126511191732426637312 4691391240902865947106710292267008 8730789295246090490928493649461248 -922859582720065663752553754131431424 2502227647713434720124402109775872 8561275276384771107576062536581120 -499873227946537236221602036451377152 6261321740260527980528942314422272 6884305131530259546078273702199296 -610394975914606941681708761822003200 8615894494936438865359472676569088 2531655967423541086518357683863552 -979733783680339227245429928683896832 9410369800994295080574177744257024 2736636384185439794721095518519296 -499424118565935593777776013676118016 4147029981152583810898856178089984 6780689769748122033054101425618944 -33307775458601140238192150346465280 2866304368310335777459041002848256 375664026816806977544355590438912 -26765860117826369963010970905214976 3340915581903522091764681214525440 1130140057313434738834751751192576 -516475084567873026164647349450702848 5817578287914463287048314646691840 5661019066982561248714444620431360 -32568381513658239901287125723643904 7061731966739997056910121391620096 5929838427523957820008256663191552 -602500837721007601701471259973386240 1026184133950407316523047295385600 9221903605163442625628529269669888 -629771194269262921908354101874262016 7704106079771505095460332098289664 3066099723356105524571469292503040 -334948859144240751179507287124344832 9159630202356353214248503060987904 1878675487667270690245791509905408 -646387643493795558450637015040917504 8033747381972162775151449695322112 1216195405286956297126558065229824 -68567247613657692668671625948823552 3889854929957440685573458528043008 9744456669446435890362945661566976 -321860966452645617512484134717489152 4229191965210880244041260388581376 4058107993633899674948865223557120 -675142690025704200862642555636940800 4519995849402456485228130032680960 2894279865250139013891003806384128 -555536705821671777714981772036407296 7541471030265978037412670283448320 6861213363346965781049790938742784 -242384444799470884398322531463856128 5493916180488905702272792468127744 1648995028598729234015102598905856 -158782911501846292576178908767977472 6454980912632219293768010671587328 378884174685934958715176113668096 -169417616288493246159041332424736768 5319693938327696419131813198299136 9885027938460049133336449236598784 -724140708115401114843621710209482752 3478517260810884951911769665699840 8951307107388234146795811669803008 -372671998272061248378034493920903168 5135685219296542489646470677921792 504107613336154834098950949044224 -413620979496118239150814830048313344 8554426564712001400086828962283520 2974610384645846493295741920870400 -944661155128651504445092997537726464 4651384744417909247935432531902464 3276709007275396094683009247084544 -285599592433713231412628878383906816 6239466524223711697792391123566592 481552326902303201812185077514240 -382307600345587395555842997062991872 1662935933026761157461679468969984 2780926178455208015127086047952896 -448550800025381942981467108097916928 2034480319930595387861660537454592 5327052564437438804332935133528064 -972856567031602278558143646078599168 9707869991125746263991582111825920 2589242493431545372534516318470144 -900655466530674850452436058437058560 6249332231911891283151834025295872 7937780231424980258632489855090688 -732056325827874146582471992150065152 7326524842661784211055747887267840 9372973807924016644026028271861760 -943882631048877844752324630423797760 5836315718752440011048323676897280 5272415993504269983349440715423744 -110128540486782206227583497593159680 6868141295076529045959756562300928 1643895239634569980933105998888960 -787175351016777410348133390147911680 3218693552163796770841811310608384 2868382964432632221600562588680192 -218531060017840769823683325613572096 9784289820404217617246913531215872 2408887594648805918710571531763712 -351655095863656812261835925180383232 574166623291520983766189815627776 648396616483705542767286671114240 -692246663830212189690729915089944576 9553999650864381921750740218413056 9840431978811043778040416448806912 -297459434247169877220694838017523712 7715828572979692864678158925824000 6929525455362401419219846997999616 -755530101523750632814742319166128128 7061967460876110000016026192838656 7220058187343107200723362062008320 -457117998917718221155559346219778048 3065893977238715820294315823857664 4686518249965391588041343962710016 -918615580594549023346741491250757632 6951788287578544402786475210440704 6873835675629813302793411642785792 -333128027946695743512788834386444288 2286360902343250096506052097867776 5335033376486396801036939880824832 -116527528804288530867826691256877056 8377861135128889523564072369389568 9637596288690032036448658127847424 -58338864305916740687472356422057984 9997277458470346954728188810362880 8537086402679178268602955968020480 -696872802910199117593998483848691712 8842030460992225816680352891011072 5969063350905170964981386647175168 -582491370297292650092189012874756096 9850740059644550105907490153562112 7147929353897610633523346014208 -426138712645878748071903022360297472 1630534179439270657153350930268160 8837279231316778572763945599238144 -93353441737635635456485222479036416 1381194419294865997285600012533760 7670389147976364050389328350674944 -432232762610485120139861437735501824 5046708281121554285516921828802560 7697214146806375935041579809505280 -303184167396965833054903046881935360 9208823483134508161588741533597696 5324626701579650245294474118823936 -362734117440165557625372020498759680 1845614780301065787473945132269568 4708066311974490588767487954780160 -326977168106546031771896894361436160 3607928487025984851990394009812992 8347492225072093622299771946401792 -391418024190414344332375507303661568 4169345312556487378855422733582336 5671906832387405818256143538978816 -480710971966135086874193307122008064 3391273712046785311981806311964672 6353131406868031327033316545134592 -562991709168640983767730806138601472 6034045410605134997044523350097920 9242136069892725651509641130016768 -718469980170378296314679074437988352 6834533517041803549443224502272000 6667358428863915031586567578714112 -175917323551752153653590563135422464 7979144669948645780016938524606464 6692855120110718301546404923834368 -629142457458750402947386305195016192 3466945590691489864730407577059328 8862083073090270126734518689726464 -170994501864770781102768469097578496 5924207764409863553010509843267584 2655871395707676106030122398646272 -371329045142973373518876165636358144 7291029052850211239351827749142528 7065166283611322808073793424064512 -553715193273956085090927686218416128 4954983316241490387395943805747200 5679639889749131031957752351031296 -155831794789830408742436881146314752 7258574987364058388050488951046144 6166399334186401889436444657713152 -722411389475369532124699682056175616 6426705318426406059482327803756544 4360683482307391636581873130405888 -274554983851890805805416160774062080 1362175156890790126027089087823872 7443474330457583429506528662519808 -472620134940975813581893073782177792 4571957603881937654171412014825472 2690567116380742442381404167733248 -699786768662135627002585947358363648 645447370571916976194623230705664 7599692807176108659392589032587264 -729217829474866529258956043866603520 592190467413069696994675154485248 437865077435509807098083657383936 -764945607722649420846325399780589568 4113687944175554223091673951371264 6473712614598435402435699226443776 -208341145424684880736545833335390208 1065617331695839263644713916301312 1928111428249859867762975062360064 -556750420358870192597488450932834304 2364619375766482907696515260612608 6849650240437043172486469029724160 -736346615371129484576365739797118976 4291544538924183203547243436048384 2528178558241130764873031227539456 -768968663316932355626054975051792384 6993207696677190068687833407684608 5600077834000284248467646286135296 -52984683679758484323526088190853120 6701870583564096443753956938612736 1527325343990395223374174363844608 -686819239116910950116704582945996800 1326539238763706740383978188963840 2784458767024571983885165374996480 -382382626861229880631022724686282752 4492275352648903056713820978282496 9127190997789817239491876237606912 -966643996154483090041545596157820928 8261198380388062030285628478849024 8682696974522808020832927514361856 -925974243827974953406402072057741312 7262007575743741797429917169745920 7764051513788236133688113742479360 -456873639698179890886079365819400192 8741579792863441155636098936864768 8100548119253036065871226136952832 -599622101264945714485252832282804224 2789728039274306736269300380729344 3336179775014982101128127872761856 -262446180860103437889163247388459008 1212740041162947843381564444508160 5565478565941475515566458253869056 -397596814497430414310458365656956928 8135778884878984799974227487752192 6198654826932511528525664763248640 -515058067825250865019969119425921024 7975797271437821893583509521432576 9933543735692197285982269213769728 -898839582644552714624760352056803328 9735209839614137903492737716453376 3422169497477598011166472374583296 -52252091090258162745608614545719296 1721924709159490522286164333821952 1730786945601916773865357462994944 -446675028930903426463195765284012032 9033413947396306013224189003038720 2977608856998789126376353007927296 -363171010270287619577660448570343424 821362255447273100282985604710400 8700537258776296597030852670521344 -816959398703134593541070372823105536 2694221823924062599355520226689024 802081135749977935996656577150976 -951432417357609483477820588412633088 1256853915560545855091430595231744 2710631410296346516027131438301184 -301753983011918023780074305424982016 8280730659552883231048919257448448 4090809115405673883664235672633344 -371135843677320711247905457904287744 5072335904067380712460041926475776 8029272368554276806238842208124928 -176500493704934459125719044752146432 8322063164104873637660441366757376 3919650119150136569173713121968128 -303367824791899361670285228536496128 5134901176253792900295627374592000 7699455203341056726213755305721856 -573448776884834940310617759561023488 2593222229258034125049265381179392 4873524859563519391691794748014592 -832498081632095688206128353187463168 2917406487096391916942770235768832 3522771708619660319652213700952064 -604328317077992426731988519200227328 4649379091427206586273605913411584 6869397575898970130398338856517632 -87477164355602313653136985316917248 7128032810530859381765435226587136 2259528788443710747282187380326400 -804674137464630663301972446779801600 3406802050553259266732690381996032 7243673350946037368401504279461888 -278449683250977848192024734133649408 5176650289446240572711088659890176 9125836371543469364668604591636480 -98790718453924853557513064401600512 6681427785894724193973956912349184 7651301105534615999032345019547648 -464839978266462843285748643836985344 8239999870816779987503672918540288 4761050953157723107481946609942528 -291798000256079783098945329780752384 9691160071047776700847932907192320 3768932440721659141405135668772864 -925033264925411132891847893278785536 3498562865297802563564775843823616 6355556749300082584255159387291648 -573020369072671872528429809265541120 4794654182758892900223942312067072 4078615429769897195184278051225600 -938518689980759690468020204888653824 1966822762241596501362587918663680 9705473443400668043567980110413824 -678888861340005033324316888789942272 3169109594620478209073534801543168 1848935394978419709847856815800320 -673245240355705292419292239363047424 3594276874579869191906603365826560 4996858513451281423564159429115904 -228526115702899438149937718892691456 908255493459927577477291857412096 6736070736554880780680410685243392 -835655993005299559657242690504884224 989578870607018267687260476407808 8926199818823844930578594553397248 -634726552987109939254476690939707392 1234203958655287158798743976804352 764854664354417085215586939568128 -255469247738219018685517108273479680 3684465945152673699568014258601984 5927800166735264099009673687990272 -802439189865609875663390685182033920 9774238049176442332455022742208512 6398651329063320588950154688593920 -717868426381056480633986752993820672 5388496604496188240326636129484800 81429916726155694436843247370240 -672395768185703646734617971540361216 2552377059845026009306255255928832 5916865090670005605795634792628224 -929792992609676730456635862589374464 4591292882189377497271975217725440 9722027417879346243439872197001216 -492119696549095591797995329407680512 5582407743799617695238988165545984 7357795349435462792385613514407936 -331306665834975346941929935712813056 5882306770410885812884587428184064 179887332158072068375716699308032 -971808472985831831887684810326409216 9664202591607166869453941585739776 2559983437589587306752429235634176 -912580987535306251130355417836683264 1982639965948796949091035249639424 8747512115968968545068686782758912 -296728290993313098645307610942668800 1453361239151662446288939801116672 8671097794540632568515346904907776 -791933665245497676501184002067005440 8193419781361523011655252517584896 2443845794394403748059500418957312 -938820330939207311044448474932183040 6661944920460155149000353788198912 9717888835232743502844580279091200 -756491668513923564291470481424384000 4188932809497405754348288570556416 8830936993963959641458872804179968 -598463655561942373264649746223464448 5381916829849438371765929061122048 6396478506117071146438170163281920 -870390269296543767613469690219724800 8007928598999743479549619532201984 4622104418697443183389002845650944 -606923379548531588928047006619795456 2030627566177794179702970222903296 7183158808911413108747964738699264 -237992266841817191257953750025764864 519171674829829174824824513495040 9215347582543858238788969770778624 -235927608863589640357177966400110592 5429262432580151680043163653767168 7629745860990932929194400703053824 -94634092500348199341930034086543360 4612324085114808348306271807471616 4747149361682284737211909497946112 -744738134287703321100598404735565824 5496791292069456354941450359668736 8837437975335106299444823091838976 -216428044190526289502709602150514688 5211167123009469266609291994857472 857008390967654440562780117401600 -929932605678447355679167213520027648 1854934504114377835759448985960448 6738452114798996519551512048828416 -865868800756469447438091261573070848 4004731435335278968741718512369664 9636306085993508476200644310466560 -14959248318715018320259669360115712 2663258474230512864950396475408384 509119020963759903244836195532800 -329003052647539723926721695043289088 4582176167434653417487526776537088 4221138386557988487194278824509440 -722259729002295357017938486525689856 4822068253118242675891375119007744 719594567055965603854790449692672 -514143589678899155990978787427745792 7344124077382643074551812812963840 7745701800186779354201302432219136 -463505896137946265096053686467035136 4651542604193744011139430983139328 5902267424521034573888760817123328 -983023807636910860807047372643237888 5593223611424968752283591100071936 2409217855953288408875046746980352 -406149024983671520907655727508619264 9007230694206846515923184118661120 3072116091229017470482126685077504 -814438801008783471504170812004368384 1796587759212462280806826868998144 5513993732761345034139132147793920 -255296578229633189927406400304054272 6983947668400073026339365135056896 6714131987019179666235642571915264 -407889618742262786681654050188951552 6872754897055591098403624765620224 695213997635976987614526161551360 -826441050131622873852093251987701760 2011525190795207243646104225447936 91816195235447256434980094476288 -290812624004572111833435835300052992 208845165551223552016514895839232 434033889756927681093512567193600 -234122265230645306372484194260484096 1431799634799667687065387762974720 9474525020087923087681069986611200 -372156209072878808392308499509411840 9386624810956458805098456142577664 474395813399003292967219505397760 -663855733604377447967153087951405056 1696971725242470982164296402731008 715434780547699961673700398333952 -886857695257536319175383252526432256 3610142670739261211290564495933440 7089923920204261761174168666112 -859478040745052851901350607281192960 7583600480109825717233143250944000 3091438339910273651907905516994560 -475193191278736673314856350387273728 6687147072889873296852247354802176 3972920639825964731054576552116224 -767116702863792454529828314381549568 293624513183582468340684093915136 8734157826945117388768011888885760 -649085151512980552202812439088070656 7932044732649178239751177558294528 850478455228143702435718146031616 -410903509074147662190147035792932864 3160481209758044308792651066376192 7395716348197183301980011897028608 -625697786792124292261401057973764096 953455925902299781450495091015680 209943198205783594453900942376960 -785599951121437063838038606194147328 3931133024197545590306163279265792 9382753139044320691322721304313856 -926628213785525282576838053716819968 8910834800396958569918231981588480 8386124768840637169087081940516864 -186488393487089212426971235353624576 4988078775917080538844179537592320 4097039472700712588777444050206720 -538454600294240679722079961317638144 5790917566976411982562696299020288 2169075823524692226387086342619136 -334059196406644404807194573426130944 6045664099689860032009692191391744 2017206802737273492070680468914176 -369730607196974542509587427422633984 6544646382181811993676669868048384 6274704010422316218026926387757056 -746543605666710368173751222870736896 9907793602327956574910000777920512 3694020280463805785035235953475584 -932728165378703871463008417538375680 526190615892148976875734585835520 6188296813547213782992344250843136 -331580866755426882651740203982520320 382336916918566999330173472473088 6238985042281153858697789450485760 -304632868989167078851183040371097600 8753486690188840673977265895243776 2243456418784041274432963448143872 -25073769268473494482979427390062592 719443085402920710548880409755648 5894089496447269536587956510261248 -845775317120632380880227079253131264 322389269321185073641082664779776 9937291391320103781797256763539456 -905344056423156110689164141441056768 9756433719193419185690186317037568 3522513556959059291798774006939648 -412621135017596671429439789799047168 8189243370105267629594599925743616 275681008196800226559874987720704 -185205592253313899243913108785201152 2080381128278939935839887992815616 8211181760480827875380271597486080 -196619379168789840426329576637988864 8213620901614130074819705868124160 9523201615257656613369587620118528 -678086093090696921390853144214241280 2120371873496960782857143865835520 3741889160394318248113723339177984 -221096468338887670368992429445480448 7087108550042332302819181190971392 1609552901356603712948297437020160 -729650819315897046501177083950006272 4862890619159221295403336042807296 8270768968921402412517405044506624 -407162345502083347512297806633107456 3238883194754205950543519773884416 7541261055037818463041612115083264 -384794205993154703632106561713733632 7898773790644044708130745739116544 2417617118697571062087862083125248 -797289390282883869587526825159950336 9858770890180820693793637811617792 1224488028703799120802038375514112 -113168232749854739463811082303307776 9274683333716996895543365447188480 4053567609615250869450208255672320 -938390278264893200262752184242798592 7687188130926233126367367402618880 1054314589445221538428718206156800 -623069103542567545729870331643953152 8581960626400178262514434763128832 4272838256116545767129070828519424 -17388858834129996037030832188162048 1431819079489569924244114392481792 1177179993567771215457390088421376 -236592688468339612120678514470944768 932654006204626763414046462967808 3076325068841709107578754920611840 -7353445730112475731875975200243712 7330505565532552764907793657364480 4101049304944628678871711712542720 -385666562247680475943872049929256960 5009416987022685531023112107196416 670506323042471029455608575164416 -136276071375987543306491299090137088 3307255364593056248825829016993792 2367902560987668642433676980781056 -586749121429678430764030768153886720 1394465131774074865951199824183296 5741077511691750615763552563101696 -931297087556932670130162946646474752 4072565445531836813557643121524736 8871946300078002871807670766010368 -937746480662633689746387307295932416 9406494174800204255327045260673024 3456589035625630365977731340959744 -874001258669750196357051367957725184 9683099236134429996255859747848192 7571902279273220843115699922534400 -156286561812104930245835376235118592 8314038595075755297031103312822272 1885560545054964787772353876590592 -500881314370926588552742958232764416 2491808135126214646801482970562560 3213608705554151342622940908748800 -889195036109735617898491217377755136 2437432833595469915452308734345216 6484486013140229199209821244489728 -88975016156730605719559966812012544 2922758677326514295734337733132288 5975242226736848074355909534416896 -599712452023963945179113414352437248 6797237582469027293840533020999680 8208902817028674550558185454829568 -734101881559689368976431879494303744 9054488862807931415429455812755456 5454903803628433209091815098023936 -964229025162393543779927197493493760 4434566423680884388047839188484096 5211152309636232630037039301001216 -664332759186611904111269892707057664 9637928198655463148165792683524096 6763217411090762608026788812554240 -205975672449224440151956086262333440 6076325474725802144535993865207808 1369935952845948166101872913940480 -989757273595976798207360237643497472 376582223706390473706006298755072 7783955100358390800808203887050752 -426328601537037442505300353029767168 7043333654581523270096117714386944 7397278878886170322771761501831168 -262410664797212395466507123664355328 6057626382161775711605872989831168 9949258971225980125025389072351232 -520475222347669094836670154449879040 5290391429410311127274026258399232 6213390882143909250993138083823616 -633181554382001540406254735208742912 3206572869571634102809166862090240 9726938136072899931084457192194048 -166150342380236415964806627102556160 7692131544457498816186920787247104 3059463625669137973330969976897536 -17224168734591272989317899546001408 7408101001913843579715477045248000 4220640643684195993419623176339456 -648159280627228290880420558313357312 3696055279267334513861363910049792 5245328475764371570721077355085824 -664407121377324704884635644087762944 4107652925263096748731732288602112 3585598363771722798964251536916480 -51024509925350144187116810611458048 8114886652801953433641299189170176 7311026328952317668063498008002560 -217022216495289581114592661866545152 4240981476232564505271639620976640 8840003291077886676232567624040448 -988529875842478170325635583065456640 5028429445970997448700408451039232 445714250070608895432477282140160 -466325283039586723309479054272364544 6977885649289133989369237039218688 5949683314759434571344997330714624 -538170074432367437290989582779678720 6478809046328680921439648912244736 8713197711282559694769480422916096 -202893388725771783588384164362059776 2932471075120629499560098806104064 7245479757214391746635580619882496 -811306155132576790618710923492196352 4527911689848148701905151131123712 2170215884667770883455111204438016 -336114865603200675393801913857212416 5404148325297931174070645564637184 3224318276145941953785237895905280 -781355290495941989248328880699211776 7120991432965677165942883422830592 7795946820683478580295508391100416 -932461608334955000082455599050129408 9000130279669724820082367779569664 932375447385133125231218733875200 -717428636869523275328693694585896960 5554681449105044106995717971640320 5945244100607234466874446414086144 -723019125835329066777367852995313664 560164331620591147437197533118464 135645933894159266907974656851968 -963435481401633312628525336585306112 4698461735550218598322469272027136 8252263857774094005828305526194176 -734407754139554130127486241829027840 8426820521281297545982904805359616 4283318951791301296744836492165120 -694937914133100188373805765155094528 4989035984906934089692032207421440 1858968680932870412775843096952832 -201260184152433452425178387193004032 6104741726830100671624251214659584 9692423172192245962060370586632192 -870518900303917869309669786255360000 3145923266476590936103018251157504 8101885947276149202157065589489664 -12130348171634270325569282904162304 859240151136471981257024237207552 6509724787561907320612220894707712 -59211736439252843899912496540024832 5861991162022973976043045108318208 3219938636257684871954843553497088 -860771384526817638717565571128360960 900225005217537526167677884694528 2856693861911354585849476847501312 -89796125406737483420518056003108864 5375227606694772802161863976550400 6069801921765692610543670911827968 -955796742449127618544439845460115456 9296325581108494090339191665721344 2964291013439238497750218350526464 -262249399372993059996028634564395008 5845871397215584083901365360787456 8815431822646271421060051107840000 -909594031792765292871868972789661696 6074248544130717392218267817345024 473393449021569804113938623758336 -234623062348916769103460027508719616 5182497266073926222580567683104768 5739720526017206442798988339970048 -504881130418415996804666039505780736 1723127321117406339449867162615808 9907067609212866664240125302538240 -970571026788029661847278930240733184 838433006126510850051480198578176 2206745807062229350472037884231680 -215931179811557520806210160514039808 349701238025213413205432344772608 4287464374678610596294344642134016 -659347713809053835203926658845245440 3952948873474572941109482770923520 6896274202039887904576551631454208 -186120005074292539121514836356235264 7243773042574371746311614421270528 3702337678288827727969093037326336 -758581038689976229047839830390603776 6098037351060735402508445538058240 9126120413637805204371898588200960 -508843623744318715915386739247546368 9502397136633041218870510788542464 6186185651068482813197103931588608 -176263659971126650288278560422494208 2865736895139533907621617892065280 3165521240221576176594906899283968 -87028817600717943561199200742932480 918088716070580747080004611866624 9431575652761556126920882520064000 -101819222393999350944412590361542656 4249921394581651482568207594684416 4704245882033621092590262966812672 -647592146122739497361021418885611520 5744087613659260861765862931038208 9305508807064830306828256618217472 -732551557620049566398027735484071936 3896249021747616180706500140859392 2736385990740567888605537313488896 -449530028046087015369058068908212224 8798092108917513329160316338044928 8047017429782292123378480651960320 -119665887842838596391285702269075456 9802299069121745024943803305295872 9804075652197289454898552170872832 -15250104892409128982686283478335488 2952955399323248459792159948668928 1661450599155428370351669439889408 -275920032219713687241948972573523968 4394687801065146580894701139787776 1349074018289291282028807453671424 -18354246302520813006876405118533632 1757324628142774937685869708967936 1723393671588776035400955920908288 -689423860838211176957973644613517312 8407873258010289941259512631525376 1113828943742138202050525134848000 -924825265060155619325928293332418560 7794083495775087696261216219430912 6126196667279365452547892545847296 -884440062825716408806718899128107008 4506651050138391816128428939149312 7161497924294222179090031922118656 -931997077790193918049881883500609536 2109069062177084666166012098379776 8310027464173796471069892568678400 -642811687585020033925609285761368064 6151449479894387494308059264581632 3094247776829339799949830992691200 -116969884214771728541040004705550336 3836070261077257488728646823706624 2915059001494460485531199852249088 -785808420394986893291190859425906688 8167272639051513466247455185043456 1978445649756973083798833769480192 -763837932860528097828904342862692352 5732478303823510847608008030027776 5701491277276874846942532907040768 -802935258498770551972226261944631296 4024148804240220994904614087163904 5464438137038984879572947249922048 -349924678600367844467746167299506176 7915176622711146121667798338895872 7328158284085981484242782948163584 -631453367790254334658252872718745600 7784524332700953046822322350063616 8680525530065298204953608212971520 -14746191336023163972815274471587840 7485830060954794013436238377254912 423917539974546571180292765122560 -335413488294725519335155779057483776 4910802278182853607498882486370304 6839303155212293508136662657400832 -140932747002159949955902498431565824 6630179111519789634855618283044864 5616131124391007203351096538955776 -790771096956958914985884274818809856 3906823321018801721937197512261632 9929453470668964923194717916626944 -131871488241365714345437846556377088 2465924603176358326120203994267648 6290076406381908645038131106545664 -897996856774518972565953786750697472 4303346549989076247589023318540288 7784307613929048315685787047821312 -100292977152533664996786916344987648 4366202342141989273856886087614464 3880512966087605060378956167905280 -678790234279700973976878818216902656 7273711503847906941096612740464640 8531241857601358873264240256352256 -698208461045354091304071566595194880 8930750016581679120577764496769024 3894316445526398994586030269530112 -724155119602000242556267064058707968 3885284010374538232879414891249664 8762176994929562101452421109645312 -727908850292253929952322177640431616 7424971022976004650513001403645952 8363270083542383866058416658055168 -932308438255683515974640676290691072 8994267969243067537667027103645696 4094505619654446575476269295599616 -434980167514141301652529635196403712 2376567989966636628957996882329600 5462998288639458525167404313477120 -208283653894034702693043940051910656 8774762722005390237405904319283200 4576072514332068345046764684836864 -267038878127534834542561710305181696 615630494032750027143370405576704 7287272811623686719689344770113536 -145179983491567783250774600101920768 8003028073624198462470270924881920 7247243365919159689264255803064320 -381315613515261154523926293586640896 9345548009648938660386593459666944 675779987116780566033863014350848 -128271888847552012841754722914271232 6502802937759422409865002833936384 9238578682339893279421737803448320 -346355012613172062189520979914391552 1257213556410382570575112605532160 3290548024964906493071544413061120 -227467187736916018429191617513521152 7029107429319789423877407702515712 1677588024905672136460625921441792 -507431609528853834115177391341961216 5918975147884617797022914833285120 9107396043106128447056868557193216 -511197316617762905689294610932695040 3862219616967920767872717817905152 8184952828425638276306192968974336 -819744669342067697204772687444967424 9152874314443509467923064962416640 602248326672749492196932453400576 -696540789031726638579402302189207552 3125029631335526767955899454586880 3285515135594404466541060494983168 -659458477829230603100196551413202944 8057273516435723605762740584448000 2033386571642210624455835949989888 -805682913214277173787497859490250752 7711930849524209750243088325935104 6181430708051389360923750292258816 -835526140538748334143074862809219072 2984645448242521853145756439937024 5880455297742889855567648614514688 -462423337106958663652306801957797888 2206773577939978827638475759550464 5749770240273311363393219681320960 -965741076828763800979088095710281728 823745116586114784739109636145152 7293134061280193898594849771225088 -969064349221518956350518964697169920 9694540614648591154014744181997568 3388003857304108250619241555820544 -327303531388040831414981406006181888 2745181448861587167547839857295360 3386017011961931604641551904407552 -835652053526237597987009347633283072 1054301025579448060774197611200512 5846527224095235541694227949813760 -269742889229920110542715829226569728 8181332381997869999149271669014528 1623497436243169930307250014912512 -318151459359953003114626573062373376 5772425377996891371294322092670976 5618426612760453377287023079981056 -606696106605748019242901001585295360 8905142601140013701870596915200000 3617641518809064424166033916428288 -851061250346270722417404213496643584 9790322832943797685217494311108608 9684512831887660458326832711729152 -289634560946477809139348595837763584 2000396099580700548423505454039040 6147199186008638191942121975447552 -114947557920111278795203774146150400 4187237652350282257635046311591936 9190003663899119842966188339494912 -273964122901877274206545157516427264 3876742953787532609212484801265664 1590368426219276728551957367619584 -746219433181324079147794779313537024 6200362181666319027028179149651968 1076709088702926945481718847504384 -785963974036866738203677649656610816 8169399400844812288120019908296704 49075234306987481733368001855488 -993210276999367020835517102961983488 3938684093573874322966453973680128 9847725097629721221600997053300736 -807671715955640015708369940987772928 7284493845700244952481546364780544 2861918050895179212502466299953152 -492381920910632001734065167513157632 6994258315869548520930130375213056 8526930683084598030936456510308352 -777723524568897193087246698215899136 8038880294503436461076784852500480 2524229308828316803180398230110208 -229073819938522429656986991747661824 8156871519541282527179440245440512 3688788614197899242624569061670912 -280704299585748642003423912943157248 2986041220339097418259315984171008 7246635626484011758376773228691456 -253175529028952727530839948920881152 471873393520968649798486172106752 4852111335136686972522793155952640 -814521751268126105694436096737280000 9457381607210738040837144095752192 3737229070481115804645212368666624 -305678680067928479897451394777481216 4237889906895077368805537326563328 6310741993988826633748332519882752 -579853663765969872237218645627895808 3094478622782520613413611840208896 9703953800867404001359444496613376 -505741752415986173415763372729696256 9742089294058935856142013828169728 8250680445598648976035504067706880 -283068283815328063261598166739320832 7450734618852442499934698833182720 6414088228403435374223843984932864 -930701595347528310172915703042015232 2000323587730921049756891483209728 4398207416867933255188270410629120 -473384581991426970183562420463599616 52334504787198443150329614696448 3164940097330800841061142016032768 -170984510770753798004938842749009920 5553448255640692442604228212424704 8367038198532179158097920557842432 -784470721594782846751857339535458304 7515787246993743309460803023798272 3071905073701171496885813424160768 -48797712726751901491062537524871168 9902805332657234892425823162204160 1969117294246877737819531621957632 -821220483415007264903607035029880832 1551223120444143266657734972407808 7990965669690348799046679252697088 -737798717103518006456485593487507456 7933143136829518896641239838359552 2185150555664968985831185225613312 -803628494456977423069028638433214464 4089191910337418089975729312759808 3489865336580942262677039591981056 -985632014594747746561931381923905536 291889814353213281473118754308096 8904255378805525287266447393816576 -467522245002758800094012272581541888 2412767876734851772750813252812800 6852611920375195280576800574406656 -874072415781587316811272256397246464 2514598783662488667549094513737728 7986695025505314982943885153533952 -590910620319150249528330699153604608 3362254710984150223188031344476160 6833049558606796806438911958056960 -468018468677121593388469344997998592 4683513147631929711807011796025344 3223338035053406733699755683086336 -419624306358872244212277554632982528 5660785976768610972964947786465280 7760766873300024870006147029925888 -515654466966480518978359055160967168 3719530036673522085298959814754304 3498353800335639194061883828076544 -115904180198609458784202007991287808 162701262908230374942877201465344 878360320943813916539146200940544 -98435489708467299844926097858756608 9662009874218735760513688093589504 4792419136029618777442786733981696 -821252030248625122544644517420597248 2586874530153249702574522336542720 6991428240008525448177149542400000 -236562108371905131607952992820527104 3252240213127833349395922074730496 4825603868837295181065155162144768 -505782055084406388382626262846275584 8820225005636155145813742481047552 4378973641563580893305127196164096 -31386937330493452245298937598050304 8686840655104620879168004964745216 6951415526510387482650195995394048 -88355263827618496639382229566357504 3894000162503239322120575462146048 5457705267414968703054951808499712 -413505110668244921470074878599102464 9493231092635374937681004351979520 5572020734604400632918211028844544 -466845593547469848027441778686689280 5569197807545431453509492001472512 7599215431467865767238559453937664 -133462683633575413388274631423557632 5409449146179705498682512575037440 4428000839179842981157082851442688 -948312301484166158639299392994017280 3691414204210433260502398078550016 6779887147787497448104196889903104 -48590333636177190364210501865439232 8912419795216507988776276765704192 132517065529995070401437279191040 -225103184187283703364391919327117312 7318543012888430108004251804368896 9877080015142728249027900288794624 -632816003455129902111705842273222656 9267343871363509829771142243549184 6990283671873444450483488277135360 -37662345772851125714364397787283456 8746980296216310551729053630464000 6283160603169772719824558463385600 -631438341353925313359691104584204288 9763576208317229057434789592694784 101412933613293144304402598723584 -413669285498845475175469049983270912 7393634427125288909862577803100160 5271599695718846497031515839397888 -666847555847990308977879628300419072 7773380804139619130334850406416384 8379853965701180815672761271713792 -481479053323386871733535754592190464 5919038242096283070721034951852032 1162311557495151107424636045885440 -761584109976753244999648209440604160 642375210587603068566115610263552 7565441318569504714671716407705600 -973637724485834665571210985910304768 4877125799941153686340728617172992 4777503697857935250661875956842496 -604552367771983051198866182734086144 6152279378330527207768694462611456 9740276527982271517904586676371456 -742854770231985621984885143012114432 2897944186877909494507683501309952 5613461722142902784895462009733120 -753755080200303386227775894294888448 2025572143607470787170302764777472 6393827691944079877089114718208000 -932125669387330515752080622265303040 5439943807117201948284987274952704 1937196856835726435863434207690752 -436099349206363988258589968101801984 7945052728167965865365784361959424 7931852209551894425065534353571840 -786948119779043200914604382517985280 9792595801927271980895405770539008 6674485726983883117354488833245184 -756960713612043250151234126827487232 6822333319645347171500961675870208 3448588149554421421437414012878848 -671985015884057291117215714950250496 8605920873838066575127951196553216 1193025886127743270790376324071424 -413394538949372551474295494735298560 9955349359866901044809346366570496 9246454531350059475974968009818112 -495736722196955885892706982164430848 5600967837887543938597146922582016 4748711597623772181975525077549056 -94857239792652812987501436727197696 1651378629580734554286986262216704 632466355332934260392098923544576 -182594630465102423059193474775515136 7713901086984660014842727786086400 455331731796400134649938196824064 -458621025762059309417684845891420160 2439550778007088416708343768285184 3229408165435390901855935445073920 -634680847238750702748066185597681664 4041975418773736681866949774278656 2423738557067671827324857682493440 -296412342513745354694826069933948928 2311495656276452443953243889860608 810609343895070101640666446561280 -624645113012298695110382541596524544 2329923708744622535219747491938304 661697597407375456481414253379584 -363729488155569827359845543248396288 2221712241608267404495246579466240 9023808608001793330829546437476352 -356668308024829999126776399274180608 9759110876604839431587110747897856 3997216839050954350930323398721536 -253375309943209082184498101780217856 7395321514442922656151301412356096 5362664504859115523701900495028224 -151509143186836725125210975913377792 4715855610941535095678594032074752 8460420717627954519559025830395904 -782684013094768307857386155687280640 6240876722905675408419485451812864 5573031446692557927994811098333184 -612078900878559482964263212454772736 1094036334672792328902563525033984 6323548690470204640131170990817280 -41486304258119974816007362285928448 6993159752027812929587119204073472 2469410611771235006435689731457024 -790488158606950082706474342677479424 2664046239772145663244199371210752 5616076582045428624811428723818496 -89360688667601312853595743439552512 2216871124730446481083307846008832 3239958861579363361302581929312256 -588985238497344990694781526495723520 1887023050978976921082422492135424 7050416087404793750927383065526272 -954809379208041775406618817777893376 519701199722925756876759645552640 6095756700639815581561783144415232 -177088050360476649497298264349736960 2678403556394297600899141026709504 1853885496798024246775305100853248 -761935139306076349975079830476029952 3745657441150332757356350091034624 8076914557916501682706639140945920 -73195263892792482647510910268080128 9412259438460998636146144273498112 7819409830255260138041493747138560 -887969192587750967664201574335381504 1766781916688041239253088223625216 2647152729145998577195884786745344 -671070578527946740354561205629616128 3727501243795266182485661867573248 2617300047236320328030896823205888 -246200841453715368334325101365297152 2272632968008748480131466644160512 4256300881810565861337472918618112 -136440539263751311880862731234967552 9895724005098084343084022696509440 1563312639743901040316713516662784 -731094182848596592324434952697413632 446364400281494482636266952196096 5086960467613045316195180062179328 -512395545580236681775552840582823936 2386450865799633491338692172709888 2717475031742930157849069370736640 -601025744713412413260694785712193536 7463551546540971263347715121086464 910231076056705710605322759962624 -974865336476021592567630555254882304 5299104033963589260586629457772544 1906351384639723886276412019048448 -286060170919118762497588905350529024 8995424982165949567362626026995712 775193417286494794481943877517312 -398694980863994560392758644720009216 1508469945062733618656746330390528 3470412325019296012228444750348288 -612961404953244347512487760728424448 1857785083831256073952061558882304 4516215674964493397888873816653824 -754787855827649189823517799552647168 7990981886127615931590113230848000 7521145678812337247485810064752640 -813260597479656602200642359113285632 6344018502151911975490792032567296 6103760616913123474510631258816512 -10573274096951309689825997468205056 9567940742581511213903116716998656 3657064887553243650613101169999872 -445816912561729411657890948458741760 6955099249782305338592129525481472 2116602737730356090173557043101696 -584277365707049430499603770924597248 4651358345924075402881862071222272 6399499172428369776738467678519296 -198089316453224997350820461146013696 3443193586937703184564104697217024 5640753065718825524961572758224896 -608054539019413682919385385131835392 5948803406993222726052746287382528 2887980373257912638139213067321344 -578025179031696066932579273975791616 5624304012837379709253656072159232 6040607639476462150949172550828032 -658664701731473608212964536467062784 3262983868307515818038695670317056 996841133090438526057092896260096 -834124791402256732666518503075872768 5754533165580174776174384544481280 8930910464516360625547378956435456 -655804445367139399101347201414070272 9728245531489531925922615610310656 8462525219446049941190350441807872 -839063212144791801884683513750355968 5060590237565581773218474157408256 7530130757205615641139644932816896 -53914375203988026858262321738809344 2821022350278148138136946499125248 1481308879278193590886687867666432 -526060915047919285284568897981251584 8749916755046417549723245727449088 3575191412587944406703498455941120 -404856077774936554088919623740162048 6392561144577760972834261675540480 1005984554900347388164859267907584 -753509391416097485369386786682306560 7035894945695370786117804554715136 7000585867226209099322636506234880 -608822792138172616474078986635313152 2535628301142030885731115477237760 5529646010773768163303137558396928 -354021167838673720422898454392471552 8454791888859706185267045898125312 4033769950157075550880484621811712 -59912141795465467401238780418457600 8530942894675384766127111472676864 8403697882948894946291684260970496 -96859428248204964959311816376188928 9907101950159117164205299113918464 9301913360723479595294136618450944 -170746187986128890214826424427085824 8257145646174572897403226063634432 1635685130544003942911144452161536 -460924406467821572412067784029110272 6050740666209826664621291880841216 5937497497850201353300342575464448 -405116019939595893035966480924016640 4560525411222824101156344897208320 799647723488434910737662023303168 -986371892678413922716534339440476160 4089458908611603083172746121707520 3311452981159187480985803096588288 -608623495202379980509881179610021888 4920554754952215774286646484140032 9566966169000503999129565723099136 -953610229818640950950044522977951744 178020478144721392265492453916672 9463625052439782029191943727087616 -294637688622989417648788299396939776 6423626669652503490350121071149056 3320421040307605321011124533985280 -78432225410770166575537051234467840 7735236805180166142470507787714560 1986254137055564644168483093872640 -219808256659958911021386268976087040 6334649852749769863590836594278400 4713352492958273851925724227698688 -891973940156749563341402093974978560 5319022166787185151885945918717952 841096839164248002360674309111808 -938594499052044371827017980567355392 8577136633173204788144119207690240 5133458532487644629699060257783808 -705784337127357401080411309995982848 4689012542857947017953313428602880 6086018490794447778756109646430208 -803939353613826074448596398159953920 2997034634974688001128521254567936 5025921357429603217945934537162752 -739835635536179500026368733053190144 8355360490789990950129522884739072 5283587649051083545439240754036736 -627917774355257071333769154746384384 4664108846742315163166098931580928 8345541281797389678624556531580928 -56956782726938080178714549992554496 4403636191449622209662494667964416 9885682939405026943376230453346304 -960721896173381784702581689504759808 5340582100955355732127547205353472 9132388065302909761389681008705536 -162821473531170395634468125461708800 3510044543808837652298249046851584 6767222120824177711042754882043904 -361312244016757589993724372974567424 143373733659279896791210291888128 1320316848496371524295623098499072 -41536781271707043322717588466696192 6016318142353663459998874428506112 4554558110129673160798131246333952 -614054857099931030348619035139112960 5191025719815934496193422546698240 2183604054124152593568198425575424 -920229338338976225490057920203718656 5722562266034255736536775843119104 325742978489737721832785643044864 -903459848466174662507474478652456960 1062109694062310977717215692849152 385144209326238669802089798959104 -758176135576758357959504377474449408 397684400331466838782055047757824 483367938944382702279311126167552 -965321024138361717412432938136502272 8527305467391897445345865867722752 4648419403341106540922530651176960 -801304650649661010934404062969331712 9635753608828425818640109094830080 9761745523491144154148259728719872 -639085329617513401145983633012555776 761683784367999127774999382851584 7817279760378627303155281168433152 -689275544839977600346744205923581952 3054825803440163558636941312262144 9830724011230647030140785072799744 -262906792625859253904416119539630080 7360528077678297375381787787657216 1500713322962938274327156515405824 -959540321789083041204663910003638272 9975261871277135645794915231727616 520097089590726469015347881050112 -558152527210936073633529931094818816 2345300507290231560364983473668096 5209844111412004331810039913250816 -227795520838071651258487888962125824 5476310372647132809911776170737664 5962698451371252614692128352632832 -25787356532345306039670340621172736 5936043067860504406086471177469952 4179230567736356903945138385977344 -508939650245318585437860212254965760 2435438018173177062613926511902720 961504669083162472295117300432896 -169430716760346275856557714314362880 8991590819540673073224849473667072 4935180214950027095145782314008576 -53417474014529708498377677389955072 5360081717066780428587627848925184 7164661964039931704078958260649984 -176738305825828108433816369659641856 1333451959570749548906524792848384 4672554661833382094107904816709632 -210144737614668012401607630848524288 2665356538013801781595716366368768 1905865348158782313662210054815744 -897273115400341260299055585323646976 8333728562145364878741334212476928 9934871613441806294757382595543040 -215190820814371014133072228692000768 6451402747998912061097275266433024 7437902681344342730657616977985536 -114851598894620254905573461073068032 1983989574090633326322500415520768 9457375930541971882017695025070080 -30130001203143656697289725624451072 2104728489644503876621807913009152 5125408565822824038940626122702848 -95889352170136599161227758981349376 1887929447831160883788313740181504 1408903111354407333128400355196928 -827165654422181370726265742669381632 8007113239108020361734968456511488 5901199377773088925456555732631552 -345036128522231949291548767976161280 1064142664970083572190553686671360 5429863885932857647256825170493440 -315913716445252251258224625420599296 8034171851630133694710678812622848 4486977308663286944008397565984768 -321089954363500614202117448397750272 6136152298954857287550602416488448 8877117982165043438458984288223232 -252859523199098313839042366495784960 8223150511667665212051147137744896 8265459306082657762641620739555328 -496445033356819631112384691828686848 1801636617819112680285822324310016 2935889906240615041640459399069696 -322365331477276695768784965445091328 6928240177125839519289235239600128 8788422034359413397660769569472512 -225409788567587031343591565257867264 5780282163000174639060975039283200 3272070319274392420796682123345920 -785902186169297919390863582379900928 8363809765916758164779417198395392 6357353191481080464930579681378304 -615501080968747861956222580414218240 9033092423642806376449769031598080 1396407527839305754547622755958784 -406119232818217995352853915428192256 8261570168225790366211036355231744 9768128358640748157370389994930176 -12071960749189095453227668255801344 6465963784446897337998896357441536 142646345189186298425615373565952 -272562946746636955462924977582374912 5967202568057459531253774557380608 819314342184986969176897564442624 -392965037545436066385029915926855680 9098580885541051228307595779375104 847036969636083658134790399328256 -881953628169524606832032314858405888 1014495679231945122133077680717824 770791136740015148133348129374208 -940921848505290792293480615450247168 5718289400559542405242961281417216 2735520099644820082786119651950592 -129682761964578340700708506649493504 3464281771467604650123579214528512 5629632205443417616051469488750592 -903644178161124237941255052141264896 7709226060977756291221937912283136 254379007720017432801283365928960 -365519014516520354045366053214617600 740450596213203003180321890893824 6961172837147579954924319949193216 -28942917623291115451463710934040576 7403780583234214087537821403316224 3991492583101871453911992472961024 -138970139074615966813098742336454656 5986119529151478148946515617382400 4824929874558892603036248672567296 -726105669085210574639193787952267264 8619279003580641070523753860956160 2852682364140226803931413647196160 -152146536311619676410160081788731392 4189255902081155104297012678361088 3694484367135094808115449281118208 -121044796853160292704393612127895552 5834166848936305789011216325148672 3102983250771491373750523256635392 -667792132407124783661703365925011456 4669360508803978414273433708789760 1789551685342053561557450022191104 -795249039199816125555891827088818176 3263166444183708223049452088197120 4332816308692705211062690307375104 -588742873327663472444262236609839104 5272308681798724996033978109526016 8209100192464250069171759984148480 -95429428959506427833793720073846784 2499405933376986526605977757679616 3495620826495888503096864560644096 -324758316266513029519934626535047168 3365439905440943793389485212827648 5034617033330152728921818712244224 -38436099197268882075045004123832320 8361875240182272245322869972664320 9716424870989294275675371994087424 -380880054550077552040669450197794816 1558186590424423283979537812029440 6182591291520787752407115931582464 -393520873776236883343146297065472000 467942216414142590208405072248832 4429316387309077793785835165843456 -951912599863263852582305277660889088 5352113782691640399324719202959360 2756366361161038524378945589084160 -477053344302544494517975035794161664 8506600143103612886135007139069952 3713573686712006867375946614177792 -261156428909958018230813181339500544 3928738048355128071510447787868160 8176908850043347355357606582419456 -367287641487712995931514941017686016 4592487752797828704120813513605120 1740269134484225368109294288896000 -739772956847218554817533929947398144 8285750037260604074709932847398912 3855337950546670003730988580995072 -723933375030146698965369313699037184 2710541980555279776618146045100032 1178337483870635829231322465828864 -452837186274609472171596289945894912 2979074806092239337814502309625856 7736188943862511433370673359093760 -730436879921431236567911766188621824 4115016719981508565391596350078976 2182934896765991597709610417389568 -940053321474201164227922140657090560 5482988267039554625372449960624128 5974989512252921956564000181321728 -44505684465505583633400456875606016 7370642728200936977991643722416128 9058482566154305351043767653629952 -745905622287589360251057545710403584 1219861770072546789505600294223872 8189782522896666472991464441774080 -736019138286335700909884777026289664 6139643434716849459715178022043648 7405495524312704325521158948519936 -136630856772962997914460229126324224 8086930156904597864349446942228480 8877528624045846303651990975021056 -780640830655662821665528458478878720 4255485885735597252261578104897536 5234330865750540717064753600528384 -502631156688002378174243392746160128 1384993077401954185396820958511104 5069434315766495058069141237792768 -29653090176806026761158186900652032 7746730854753133690415636591673344 7356950474912281095906946661220352 -640867252282130373196534076701409280 9428950142579718423348023341875200 9390581101712930793881291886428160 -473537522349032439708709118923505664 261523388049277514791700744110080 4271158223956420688596223030984704 -287760772396630274476176359613792256 5139860382493549246569983359582208 1466378056708743456138983811055616 -708110079748686702056008791187521536 8514962852925192516120571690352640 1912523417178280854169750935175168 -942093231053986081735023521693696000 3784983230493256873821934249312256 276909277201187096128622038089728 -775455486639838647049815410706743296 8946854295637732838861398928785408 4667367501704027676288778959323136 -663655515326849561647358041049268224 8318315064829514012958718502633472 8893641537851094019852629922807808 -729056789327365870779980762778173440 7023330103158416835765726303223808 9170676441607317380242213810733056 -131334353238999846944564600817844224 602774703143906851572980545224704 4647331531220239346919449567428608 -206909210671743517575139436781371392 370556680739868197363019029676032 1689829561546276126766893325352960 -621677411797364578651759378318753792 9912044746567683573558742924394496 7677182046273212571881792551780352 -22625657030882814159474395772354560 8057160067547693089935819727175680 5482061252768291312997427828490240 -712612026314190137499028230682705920 2685365730768947311959463916732416 4370460077973091699812150974349312 -912425358137895192229160906202808320 7573918533392656512061148401500160 3077167491896347320267802222264320 -376698922965213578832930909917806592 6697666957192560849045972154580992 975443590265394333716573690265600 -122993428812176927605258572496109568 8580534579754316721083827145932800 1635050739309079701085747318620160 -541813540260949711321952018445107200 8630016074877971587471742303469568 9079595288652705243211718360825856 -948734019431840196380024129072398336 5040669383101234844361424786948096 9099324670028483420366887937114112 -90363199335736403645021163492474880 2328070681060227217163801455493120 5764450090664333839176078146404352 -423422777440305334578301235965722624 6983597558751577025896685334691840 8712738664238661473705254958661632 -339139641075698085310654136675467264 218922257636417922813935438790656 9469189391641361528190873664225280 -7186917087114788944881253233983488 3618022179283878813904801412153344 6704795021335177732913338148454400 -252115262753083473856409099151867904 2250560453018259917817074017107968 4429333188584726403080611250044928 -540663880608155365932124781833879552 3448873576242324052827308711477248 2803809079726875431570567115833344 -820607906774047546069318751498534912 2226285689437998666830297232834560 4256277901910878072151962476871680 -996595037607444647631421132960169984 5511713581243285516427915757092864 5927467349556251229642469173886976 -533913815271065879499143311299444736 3351949720264763658157858935013376 1888998914509400963153964761612288 -898643458277416969069236146763988992 1681909775975874540272763164164096 2811985511092059559165033413869568 -734450032757522397344269403835858944 5230196553656262074403394791931904 3869216256613483662418299748089856 -581741466009642654364948644694589440 4398314585778350125316810295214080 8150515546451644456538728904523776 -838181649502026982346872855329767424 6621673507247975843089739333763072 2416133897053316389984974493712384 -512832558791206700149906569202499584 2045069636730378292871922580455424 4613787657913798903101616182788096 -801726804885538415399377309693640704 4809461567777667169860186466680832 4219420478241829374302106465337344 -65191254345608299479314771874938880 1928378903904026436232008794374144 868576700800723219945444083761152 -100939580805567216620594947350855680 7006277096305139253916744124727296 7254196144178571021015752403582976 -189908197524560214630766155592105984 5292294389646498151226595254206464 5907660983227207921541004165906432 -678747515378194346314540391713472512 7438237517105883877757539510648832 4701597869332078328025414876790784 -894890260491214963717514742403694592 4249897005513106608818332693954560 4754902942818541769151253986672640 -238610521984766005039476444984508416 6661907750414756592301883401437184 371639243061138764964255802327040 -811084008467678072071233503045353472 6866680104676824159939647984631808 1849236563776020039884255549980672 -879486951339456628088176276773273600 5567098365273402910231506886590464 6850616205448345298621590587572224 -803514011324314211680928829846585344 3538705222598357720116398236106752 9274705687336747250755248463020032 -786953108506162461796202713807060992 4589618391611915665365648267018240 7728131880598629676398591912968192 -656416354618225713421502810402324480 1485923109141393423087251729940480 567819883603313712203110627147776 -374040942873633372258659009044676608 5773332734265650971702402400387072 944757212090622946537947963326464 -960497630937766818388240817908088832 7448478475719905377047070304632832 1884400942525022203106487135371264 -566199155513640088397510072544002048 8173788406168189714866789001723904 4479038904337658209240502906126336 -960734725828391635711813878540140544 2147174104291673116368200571813888 252271228498702898043421787684864 -837545816593968705275048419420798976 7610309661466374940252672637272064 5720993642656755321056206411268096 -345453380681875236029397139242090496 4785736100656232847079983072411648 7336636753073207342441033419980800 -349506021425461668311096651038064640 437003380113801782167528171110400 9600900012961473732636087576166400 -122634867097104642454489580456378368 6878596207775947935822736196108288 6494216458665041868145182382227456 -56498121460790157426187808981123072 2319927118508001819784430110113792 563978409462175312144313903742976 -275810566794249280359570472666398720 1510030234543363606768243080953856 7137143636752427911764614301351936 -512765291318035929428086696806711296 8403414620691063733500278799859712 6523026353323958783135284620951552 -303882105764888110033803813706530816 6428869980951030937974237755867136 8291890042182939261090078451040256 -457397629138180533869025359843819520 656556191317834679351800613568512 4389014059453822707536615236960256 -942371175317120150449877078950019072 3130825255481127722147190340059136 3912122867817821874177628287533056 -72887692005174015042388650832691200 6279904789672851143734095452831744 9088176840234709100935288255938560 -518950782224635549059113506421342208 9072852333669084332833077838479360 1014776597479633329074941076701184 -226460951971083640006294033334796288 4687211248338656280428457203073024 5037033687361802583200262279659520 -466995346461313018502407036988293120 4124521001468599843969077595865088 6584895483215794595754677412823040 -160942797010062453951672457424273408 5974108628203866503382029301710848 1717039793859951856574726215303168 -350908187168077688743443257016451072 6155297579359430560692194754166784 5860260102808380082870337826455552 -202352392759882882879023849578430464 3432905293087977468724470169468928 7641785238926926935512793703514112 -758333232715057808481898031872999424 4823621754561160849791903193890816 6565374747730015799171923688030208 -701767024285369277114155610402717696 1464816945950052595662937053462528 1904940536706731929889866285842432 -230140107004067796321086359583326208 9998725950776308919322767934881792 2611640297720171930650137455493120 -324581838394807309296766991676211200 7666206347835880443255189338587136 6134648280311451966757907267059712 -24646918752767884752872228706582528 6806022078696972351057049029705728 705596865260147716752995996663808 -28076395987024507876885665536802816 7762526302044605257678701937557504 9638149218659805976403446509600768 -985912270500033955963960483010052096 5750424680955198566020174852390912 2864524239263566431515793785094144 -772143118402813135415017961961816064 2533599557740825797955980888113152 6163420558225105631248469127593984 -709340535819881409201073964198133760 1157308161389217481785788311011328 910436908109618894241381545410560 -340349778961318621303060196914888704 2416918155012866935215972769857536 8435483993037966694260758275948544 -143282821663653091044718280938881024 1296217702331756853904346777124864 8394138618521186407505896079884288 -589505624295564098475327566148272128 4884929889310343729807887257567232 6299663238980219746987696994648064 -240759012763705985064161835122425856 5999829796438300743912521920937984 5359980217116105665206047144411136 -587710741630126737123678248836792320 9789886850286898360644913554522112 4799608028600257932905898510909440 -253768865712474822900051906136113152 7083012698942471477111498263756800 5478736886360148519340876064882688 -622671074315120660440647745342013440 220561590646184220226816548274176 360080114426506544319134697521152 -34202732705450249380548355702128640 6295939045288596255709896630075392 9208646926220962307858779795881984 -277947996996253771602690186663690240 6423443363090387044183003631714304 3470118486208023237952685792559104 -315751501918962661673980566429499392 4451538749105515142016596543799296 6890458925996608674089997489405952 -34145394835998455651671179400314880 8079785305300181282470721019183104 5402043358309504472049908862418944 -244511411578896915835568268601458688 4928020149370677050813421935656960 8394297660339423545746985364488192 -131580249664811080418981641078177792 2250987022693657792809692286681088 9620161737119445948462524805414912 -186353393272464649954495560268382208 1011509422936151348047823910207488 6827696302949910684057848965496832 -363797833391681841056147501096108032 3593918538492901224422295308599296 4038126580913740910567944945139712 -183619294492391017230524330507501568 7435192302064646592175922810454016 6759146226940677108988079427813376 -348415282548776332322833235997360128 9702945145750917070480503874781184 4995706727444886411668843390828544 -145938302866596366555466469254103040 7325950757980927955270688885964800 4326239384667982127198708894269440 -721241444452155774438476592340533248 4193042991933908577737299751600128 3694872055139713701974984940847104 -430824355101745272393441857987674112 9588001036116998743383024236232704 9763152569094555722595747575627776 -229098853723977681434661427158712320 2586805000959188912343979871174656 7084280583355976356619740424175616 -131547479077204261149104860603351040 456129565831376253857912848384000 3534728262219814230994569417195520 -606052392124234479381637591489052672 4761711537126920697831286296805376 2417150784713100723577221940248576 -77753836617494036491485279420416000 9270657469272499476697128758149120 6736931626412381023870286519336960 -884190378126970115415549729373683712 420972349698281002546219385356288 9721923877823266203744401304322048 -749143052649733786211853838529331200 4725574564990297511103280306978816 1782715295580635439293968383213568 -773884078519027804042473587513229312 6916894331802699877222503627620352 7949558025292375387642205470457856 -261641772353851362143034502862077952 826214515402440178454831933947904 868279388139897215452914418450432 -675666913327382263967117939209928704 8070046613418219417234875384594432 6192909383988028511962295749836800 -35620031770141502387720694198697984 2572094090077550109430130078121984 8942423037751794841821353697345536 -318994671053649939357162714479722496 4458796883831742446058368168624128 9563665780297771906972425620815872 -152452355986145289878504156090597376 3608509072706081145025667524460544 9661749125242047531544105325690880 -889367791804011100630533943079206912 2482859176769620899783859685556224 4200898254205111153170841398673408 -990466608538374399989945066491740160 1723968037203278056014338213281792 860537042121335541534437561860096 -583076632030987694592834199602855936 4132613467897095729390444185911296 8143874212690950004608171941822464 -540425309696619714844511722130112512 5056160163170260829111300023910400 1467252863487332754085986189705216 -791520525241231775901177597271212032 2412298200934519263071619797483520 5208734960255387526770584553783296 -504835958793852391912733532055666688 5900084546895292090840307411714048 1455967298538771035859513023397888 -596035106859295235571347128837996544 9621059534559162399576752165748736 6710929346536334042638195397492736 -846739197742833709290835901207805952 138936860464809467844812834078720 4805732064286445322798284880740352 -150579516233431966596329196461490176 8803473600466493100058060569706496 6857117914453002127006558006018048 -940853455578918611099407559509934080 8862161322969048970701723291090944 5311566245262244121754870401204224 -749488380161679502883749228286312448 6557541968059843361314523926495232 134019997379746577918648396021760 -309217768413761416409733172220133376 9792328585683874466903899311702016 5030137654267183335051864160862208 -577969588304934333000480601323601920 9282850812614396349176493073498112 3719460435357790762218194311577600 -255261488024787553859120407345364992 6714973398454246631788124802383872 2333120807644804047499545364398080 -97816088252000878150232353951186944 2428173955076440903190677647523840 2496876872756994573338501487525888 -730175953689411366423798555873378304 3922833224350943124384244681408512 1938981546525704662767584132726784 -608610415430583646465277297193648128 440662537789516903750689787740160 909373247081423170792369629954048 -478643684753460066618027126351200256 3785578615732738009842282785669120 1862073367436265324289079463903232 -863934387677811831658006179825582080 5783309666499768839861906412929024 7517060993760910217789721043533824 -627980428669345921040205795096002560 3703313707136859318765944416763904 2102719734330029716088594408407040 -136968916586115549375826149775507456 9770255952473546062667714658304000 2318722923905984207628869321097216 -516405884695403112725769727684640768 8096203802698695068802890189504512 5243777657573063500834845367468032 -976820136130570205757570199920312320 8640801667954036091738544861609984 2859410607104187849388457304522752 -339753251929349916225633098624139264 3628890113210975825743193460178944 8996309814392125378815288343003136 -493915532761550729322015969993818112 7202107720843367317411383191011328 1185554991568174272513801118023680 -184762453517056715119154983952449536 1525819668977014923113320769650688 1265497448381067976532216239882240 -740607316860397235771184734516805632 7961793656533559893200938855301120 5853474720182754410678987886952448 -913647571493090324596733434352631808 3035582750240412371136387682926592 3858205469677713057707897049317376 -36870746061292569797655442497732608 7290419987129316985423046748667904 899786544912603935029457510727680 -950662788973798625361294108441706496 5097633628077264768312038958039040 7784564803120659835079693791395840 -63906335616184543759772140217303040 1420564980289937593183059501383680 7228713836471403628789362413535232 -56590410444058633381070064372940800 7507068583484477345540900088971264 7387698705344293270281538481684480 -150992766493323905981290815221137408 7644530958406803093718810918649856 5679542721711012976530494012260352 -488011886957041426249801466564837376 5322047837389146944955386062438400 8142580117072708648752158949244928 -531420396923089581277687645984522240 3407038303003000991090816155910144 2940487781528032111268821775417344 -892278376430877111242162402643410944 4119833845340070740711835722317824 1139939508554158034233009821974528 -742222201133093459926320519124615168 2577796460629626073001077059354624 7811577213298893046629872946905088 -803809529212546190573270373127684096 3914774093353950198080908489129984 7170255994400626345314108305309696 -704946048209951425791865133186678784 6646760228992078090985371827437568 1084240779406198105796263154810880 -504006944815262142383570742010707968 2546654334337051027227663189147648 7530991172735545297511086217494528 -685011223919014408174831064326340608 4429281268130523589152593355472896 8938662885133092857491557084823552 -396520494777495005434002343209205760 8854533498818320228615240860827648 4788352534045620887328409136398336 -397441989895981495640054601437151232 9330792327115152378040868336041984 5175592476957857246223396069441536 -394621655272274658946127013661900800 7579704805916986032619480690982912 2424989304016474581900537475629056 -819632700583018910987241016434622464 8219836764858721435805807030566912 6426719140098749831098376273264640 -971789584205976233688765949997481984 60704934435367153043065052069888 2260417237314570500211928490573824 -294398122908999047794021476289478656 5753002754547758740156788288520192 6044044300357932637344643558670336 -913739215166546004217147012014931968 3793602672045145406570501771362304 9204595986515963496242927181496320 -215357900301469221282008035680583680 7571297743515421470980636214820864 5251718937096012771941743260073984 -495831834256239440504042195871858688 2501093831211240628356032227180544 2462437004228354069358113495973888 -613737736391710168667811419154022400 1296898922190499083474466764750848 6339791137567058657423571227246592 -975568388701794504067616410920026112 2468201115078644819950774521954304 4282617071467723846845796295114752 -399040652348567176579631636914634752 5404691727118777116820271020376064 1246191942667641232792603898937344 -958322952854898982048738595827613696 1543476996671291785908340138180608 8977296305435103009840247015997440 -919965931158368479349271239218692096 1935514974911704149945702072451072 4856755468023391337925397421490176 -82125822450696362424994387720142848 8953080552803279150401952262651904 7494316384854709242639604829388800 -664746365229292579014350843706081280 3427686968062016946057481719644160 9672650121376026654435822826160128 -37667640282103943824640110573387776 9062648870528074388976584567554048 5254674812988319284631435097407488 -605963441935531837408901285546033152 1357002989714742202649011841662976 7499899962986627888214248123269120 -890922060437792029531551356996812800 2045533556031246600044440216141824 450603170406876952755860555169792 -280291767165997730748987587308814336 5088432793381072304902706345017344 9982247711743432547364251105230848 -778927804376194200433374448014327808 5683215325032661445616008045789184 3679410794358757630125776088072192 -12489328539797038993713352964833280 6401271813431619284094203675541504 9501746387769919767254815974883328 -607731583083061248217832449818755072 1954531930090579044266920279801856 3971618980990117403621228499959808 -9954962823460012086039994167197696 5579858900852457905332604083634176 2120614910932002180051151334932480 -594833256314990795428862408089665536 880021335195225375356985727254528 6265636902791765945488139190534144 -468789823663825589526342282292232192 2210051428786276201944148653113344 8655800326562631449488264349614080 -215454876674671024405509399650500608 5190594633991296703528402325340160 1076230518742629365795360541245440 -384802487509519623151087682414706688 4255819031394638144042198252912640 1314102131957454899099767534518272 -708812968043362895175019413461008384 1355667781978804485191754076651520 5253823415943018822939124650999808 -762773530808957786010348067020079104 3801799433790938548025225549709312 1281985132679762881209522645368832 -981458098108273612253851431500513280 6942311182817592979773641638019072 332569005010315829457723018182656 -253917768900102809723683512648728576 2442946511007546904142154196582400 4926506699275302829161293744701440 -611756199969136800791646193938595840 7926843887381796487483207112982528 809910231310410980758295085580288 -462060562175713874408023766161424384 7127363082148167261590802025938944 666487645789171175685643955077120 -367188434442969541442390123914199040 9736249403268874602577852941467648 3641931826448485199959919809265664 -941413159063389200664468961420640256 4967850993103256936068968632811520 6479312459766414138362075063255040 -27955581372408638089722858041245696 4919073327816451135219932543844352 3140034783234336381501086655053824 -752741964563489362333563932490334208 6560187472433236274879478150201344 9985263197236411451323201661960192 -704470206666532255422609459981058048 6342512002808058661490301450846208 7682315611263916059823844035133440 -436767043475391879001300631092723712 7187515831112537140809288971714560 4102346836023281754940306286968832 -469484237065764853686315103050268672 1496512442807441415981283032432640 5116066505256024705714375450689536 -37677107827160027206933967645179904 9633291764072465937151194791149568 9729523875840838582546111322390528 -863066231144356938197789878314336256 3904180028621860466943191806902272 6198081839806749422775323846508544 -53764382748193022236519266978365440 8161468106932095360231445624782848 5033950745064485969039426913828864 -953104051090618841819695895048880128 8820612569316109050310183698300928 1964667319304551420994666864050176 -23224963893553767986748370574114816 6228029663462989938797848419106816 9266617858329743266303162831601664 -642836487043602302614236598686973952 8946308600405536271609777669275648 9479576167449312200964658335580160 -830478811809931971356571926750298112 6616632762964784445554139435368448 7697885060283883724549895430864896 -872516568381160462484278901775269888 8559394827825531333348266428334080 5151512626583189530769988178149376 -154754541917997895060497815310434304 9329299449944891136842755639083008 4234450657854760717105202613714944 -372899664722931286783222134924640256 9755479994814557940810442742956032 9663239656797965997570360027906048 -820043930877918436302366550104473600 5690132945724379368573082923958272 660415834461922888105046598221824 -797881766519369400913861068200083456 214585031576312800402756310401024 725889358662266978718654664802304 -769748508376414953458170730098196480 1481459986353043890896186726416384 9268117475991335793509408771670016 -72700818651594262060452005694930944 5831154875682022201733977905037312 5643227149503024789001292205785088 -424305664897854307487599564595134464 1618720604776656250289920843710464 6182492700499960242367563158257664 -475388357653907268213356068698324992 5062011382722568719122613722415104 6390387006107202553650060202082304 -29050848907426274777619591298285568 2172185188891134707861512836349952 1922072135732666442324389461491712 -516289980902239665535681582671593472 381667219215991472396111051751424 3853589064623002731157505561329664 -77487538740686138711288805882593280 410077082436063287620356777443328 6162245075446950582598459298152448 -231344666068490461241922662051086336 6869789839964848891667518521868288 5667613321865906667815081231777792 -483133632070116014683498879047958528 9098907849523639069440137679077376 104981691369924867470012350201856 -1847619666245184698521884861399040 3207175950062411404763939397959680 5631740230261648006576596928430080 -403148644886835317411027505853235200 3923936916808005714937988316659712 7542926960016662847561195939954688 -28858715239752176765923198003838976 8745729929950528258467027813924864 8906705867171537827437615058518016 -649896571776287949325718003455623168 3693999199478594924299008908197888 3295561136508864908160602399047680 -285536890894559998536867757393182720 1716339878467696720533890036400128 4314737988242423088530675661275136 -749052071151072125092264123859730432 7065657803367108599821094717751296 7614203373780303587692089704448000 -393480373896369443704086443858067456 3669584774201366911815224504877056 3624463831987997980758687816351744 -365737637900376051926923465650601984 5729608221108909615360990399954944 9121160281714001666780635152252928 -88090460376966327358754835568525312 27174931951850192898479940960256 6725256098518315220949119382061056 -57268977738601207466346052044455936 1076754386885636730056326690897920 3853527803308970441651628976111616 -565857868236615390172007735939301376 398721229979813367005406893703168 9891691753217573377060079851798528 -87273761554579178423507753224896512 8672399866343817296285987946627072 1249704062717880845892034389606400 -652278218881598802521583548985507840 1741472675178602247347248459415552 7331603757848505183753540248535040 -624747302458947088811021094478675968 1389137804940067083036813321830400 7406493840763642327272853480669184 -128425718951482200137540795898003456 4345256880191272129056153817579520 8908321824180541537224467687669760 -550926023481006578162321971046514688 4314306549362467557035228352479232 6411916191398517147216931169763328 -313879747904277017669848402682183680 9738478538493903228479043629219840 8979906808849781272463375303966720 -136321207265129283861581070776401920 9161579154676231314443851194695680 2244902608521413308096524310282240 -321027777593052516536569527852335104 6674653787286750603196213562966016 870293054100483980904925751148544 -824320436914210030594912197307006976 8008525823241681306051633259479040 5781531674255368478264297695215616 -862037588067509136766545998284587008 3755868932679277070875828995227648 1548483929591211021106663766622208 -405807382693989655970831937478590464 7598839993252925331681167326314496 8984262366626642198533128996257792 -874184528236871910085313278777491456 8584023816601830811877614748172288 4804630536259454150843030482976768 -754651785055038473234251755145920512 7329907360351159419818657183694848 6712266950485408069536362025451520 -813341177511233146614147857172660224 3469884332171508411475257089589248 689275776840057047810655704317952 -682238316126544738623512218884374528 5453205705267146384704034350039040 9997555670339349442673772626706432 -710688642987189360316998091599249408 2073512706400674942174602706550784 8197494044864289197779524809392128 -49232068942939419081741428420771840 7438343246167326781850768004612096 356395774031889479968685631209472 -546484336931889038222610272547241984 8933152798186206001083820758007808 988867893572313636974554773454848 -440610656431177388041359668832894976 149185778397508926906029247037440 9969334507968302744073345410531328 -654130793514336733249023565774192640 4739859342134966939378004950777856 8379265153582612555595859500204032 -54746661881639186486851435493326848 1173226313941239374299379697451008 6029567145963523688171551535923200 -34322967495886230425715801025675264 8863173874059664109181493158346752 6339616270756013059012911874179072 -469055056967858066648926192358391808 170661218046015071060055912611840 728967147768967165482122264707072 -670920660912875208904846540284100608 9528408029735404046516929649704960 10152982536778616259651567616000 -706680319841680497289263125412970496 8526875776922263214275775522930688 8154410294960434643992474799833088 -860322337406645751041179076089872384 5046569360871951793849118226382848 7344255280858074131086277156536320 -851899362752286426941082958622097408 9304358084881002151503881662627840 6402290547802885513162110810456064 -604020882596463109895265991100727296 9553499468731697391990574457815040 1156053756354177566699317845032960 -310825761165573642431674141621878784 7085017980407391542736812605702144 7971195687465373985060117528182784 -587666440897030611396997773004898304 6354238112660929507494078617485312 2278977325297670731437656376344576 -769938155735745649731805516989988864 4213138997195359299438794898407424 7433932435277638735961584805347328 -601580155068633977338395493065031680 7199706288495678436423577790054400 6865967041438544367380730801553408 -935028118649139196221972013882802176 2433150119200827210685790868733952 5554666023265722406497767827439616 -810022459547269698924914155666276352 2148548053955672974455576750718976 6442321284456431803842405272125440 -934822851534197591119247747013672960 3258346277861607447108591237988352 6434055122497855925139140987846656 -288536383844819475486960906502406144 8374013766349770498336297901359104 3385911341208307439811368776105984 -980018997327206342643356450846408704 4166364961660113089517702982139904 9627965653013392722654070703128576 -471385868821721554860156362598383616 7669385491045713693686347182637056 5660347780531057914656093368221696 -807329702398191847359406098861785088 6204553762403540349405846199861248 8746011581936554953783348425654272 -822426389069338427281897826709143552 6441253758134224610148322967027712 8968257883604911771185347515383808 -783308086295930839464720332708904960 2499397974058309107266247423164416 5514821460662586163947342630223872 -491515934938424338631629577876668416 1352945555115328212993870978351104 3236605755719658740421766137511936 -647667095807782640399093189127962624 1536076593774772942206652272082944 8879055955725580499662519717068800 -123507274876965908176630891298160640 9996184245869764523470059573608448 3848752097025252769461116323495936 -698650015494950031937241088134217728 9308247319434830373662452841709568 9216507441432156871866148349542400 -404953537356470507095083454730076160 2004854718429461322515901793173504 6791868139606777971873459627622400 -360316271541789285883692105338978304 8983675580799630303486701257883648 6658368782118400822595578595639296 -896731947528268799076789705108357120 2144346647269613090391030375645184 3325688972457741380306031138045952 -147333855880258354334600563792019456 4947660401857709465034152587821056 3469346557868848041789553190633472 -296630150061608386894831852034457600 127849246632967708368446039261184 8247282852072855934847727823749120 -629434248869281255468480481848197120 7666184195319079826797035926847488 8882066310999036093852935700611072 -225768036365179664376792472908464128 917528446957241386087434753671168 7111015438625259666286653210624000 -693304511578182953051140703823855616 9125707028593374303039986822283264 5042851425635064949688526664892416 -202876394314981478384856161539063808 9547706615377429214034048602603520 3179285481881860961233008171417600 -794328212241334534883793827379806208 1669545355942861297748064094650368 161470780323191140732143210070016 -17529383279673275910299983674343424 5520730429290232179704325384175616 3149689074241184386514100978450432 -551446763682010545827723993017221120 8314781153026814709612923123138560 5988667285304981135187263092686848 -227142236370703154329831673698451456 1379102495746474174066073050021888 1257068431513235928243030624043008 -822527183160750396913792030500454400 9366823556376479137706211249487872 6209096419914860820765385821257728 -670322891721672647463051063440965632 8681436564338975798011037329915904 4612456452162177499132494098726912 -436906562383386340159362959023276032 8744825410489944802090000096165888 4645505050929633444388308342800384 -613707458707529380981583882001317888 8612108062043738554442255354036224 9314927441221758292907330268823552 -798144640025793969990492455987838976 6578580198515076987087331769974784 64365023899956270709099408130048 -664782229709757563395244406803005440 3800833821834954737181283382722560 578357815636695919260268012503040 -914219361631842410911788451074408448 6604765668337600630117440386236416 6089729354007563173120065350402048 -530659771730860181190713041469046784 5071335243606300281319557632622592 5160953637330957242694888065073152 -390786830661510075781435760341680128 4736970866343376861106459272806400 4740924618091580388036197308432384 -212357305663008749724892900800593920 6098800627784448630567042847604736 5345421635189073707626123371741184 -769007036346060957781457931125915648 9883891235999097158859994643300352 6920898851194602587853821570973696 -557841154020476437720348233775972352 8629520921611238783976226018033664 1003329012713727963099086182154240 -304900680917119623223598257425874944 9169071137930038251948092929605632 1879937075236895395020002679586816 -390358827702399639074449000622981120 1317159662805217757774705298767872 4202162924179831280479087821324288 -812375527810957751123777701676056576 1271253655168088338018669544079360 3356318051309454791564470526148608 -735919036280188566911925469168271360 9180983323532156821649179726053376 292118683165421486196090751418368 -841333811527853002698870040012259328 6623231400515468657069198766243840 8663256272662861043114846713806848 -208023322361300337458304759566958592 950889578621269487115448489082880 467306460504329866819174045581312 -983346487076145315413442160291217408 8253033517277211176210215294992384 6943795630998220719584377726566400 -912524318740667747999840430303739904 6595257607492019198925972929773568 4916306927953062095080574651727872 -345478562913449896548443120121937920 8821213763258048845350079458967552 3826049554996713035838535638188032 -48481659046377689386279975109263360 3485538542830935762552322898526208 7559330699297348324591327711854592 -169640597194629322209414652870262784 1453466929823963552147603017695232 3802872647543352705672352223985664 -773995887486990908483009716189921280 5359940667723833004646675637075968 4368633396579536634988032449052672 -663754840602305601905463224803786752 8595913181965655373924635387101184 6549815248983552261956598363062272 -362174508116471132124779641588154368 1446257152714450499313462434332672 13586579483618962917337298108416 -279035849461426515053542353865277440 6553125204224355590705347427303424 3421127239809815014619484191195136 -869078879256183108457096327511146496 7237149690527529662312113053368320 711171825509135002336206744715264 -908688934700843869061379781432442880 1352932304467517006845748459864064 9671155204100360136923819941036032 -329709916766571920752065351092535296 9957633699054172746009925226856448 8389213883657165798084716185780224 -986661409867154546380535867212038144 7406235193252594290480559371059200 9926486488640242546618041165152256 -172426533538495948914706146236825600 217867745522342575683564770164736 6886427661160377509403351352082432 -849369298892882940357828264121597952 1782214768101659816849250791194624 398858033345726193256655335981056 -307002935803656768005459459614703616 3099357684885634827351139647750144 4502159329089406498734697485434880 -812809941537691486360638184193261568 598270985611185037358291392397312 5883258798582419060930340836081664 -393230827983715909236791286572253184 1566514745987156992049612542967808 2962282916689018133753518981382144 -432471301011802055103979531068768256 1362969993007982290295132941975552 7978678021298000077371188875100160 -5455648717607050096570645354643456 3817509160026373638313582815870976 87142480096239355795507104448512 -495706297446659601991859396883251200 7256766447345750625610374911623168 8389431024553646659526814632771584 -725521714531186744962930617679347712 549252411982680105457417040429056 2784663134653223214451158226567168 -312898207776224278521052312524292096 6862173917205094509132412356657152 5934886669007907786099637937504256 -981323219349565097358353145522028544 6279368889709379139002168103665664 140070155093052732822288886398976 -227460286090809955084934126046806016 2082858510989233906464232837218304 6344015863394270546534620549087232 -29421734058724393201364308271824896 9549580565989842245308221784850432 8069354265900181875238401023672320 -449962612119256551976844154011385856 4743901762258196283089420426412032 1864269620034482561696869071716352 -609664331209383542852426605063569408 2438516055929206939873206845046784 1002642524496942470276021837889536 -740660842836590034710923271359954944 7971586950673121727865575117422592 7868268482479647959785713252171776 -795662956544645352935241532257075200 8356105778090826028802317798604800 198132899342186189522885660377088 -123387025981556096520125523217612800 6652235092354423559116380444819456 4536241853231972764878110099243008 -719595913987520210451499918326497280 5112967232958216198319854659305472 2202861033402233006946029513211904 -946978752259701041133009260330876928 6210631184382709410396972005720064 9465114144146725952722134735257600 -448376217742485834258716093606526976 7815491478619258598185953874935808 1006461007976954077455563769249792 -437233216427232443073576870166396928 8677876381419519780349852912713728 1660853043381050380061153098203136 -688843224073760332197711188762558464 1612897033225647814208106994335744 1973218499640306170830192677748736 -702876911718723159686766375058014208 7098608560270127662782059309432832 663937468847238848937650418614272 -223806507740840154055786928441131008 634775904866813292974171526004736 2416373492923120919525097964830720 -395225825105878306132780947366477824 6710946889259347498222927801745408 3494337186158836437197949906190336 -749191701550020015064014309438783488 2998281042301908554525508032790528 4331176882038390409440894478450688 -868617882727559123980065587987480576 3271853711013301461896815894855680 1739346060681058361932473702547456 -267577580856516397066555193179504640 5302240820204876486463282175016960 5439463502560435149990825828548608 -728833097015912028395558954590011392 9676776402029958209598356717568000 2492314620207603634045853682892800 -292671874396825564809022433465991168 8879830380027266701751891867467776 7775626307754279430091658735124480 -727381109534484096299843299684909056 8302758755946542052761863641366528 6528165832871322215175397188829184 -902367693534196096117089772790349824 5002402493040348552206160612032512 9883433862191436411074311517896704 -51487924211740782693580663567679488 9414410313045808765868039668236288 6916709473276598805764851311312896 -8834252975118714537528460593594368 7679655781658708313631497035710464 8408425989929525707374906086260736 -515782402518710243456466148181147648 2367591965394715645690890390863872 158663071895769856490252875595776 -176471571965752665301210794257547264 9963796674718961026832577241022464 6546131989277763034777999477047296 -391706194019114680371195782535053312 8151776971307463526636784961191936 9779119834524507353272599388880896 -937816208224076194364195006085857280 8766386204325316900009212060368896 4966326456790144079788711767703552 -229167083024188854939134216231714816 6429918822501164156833754182057984 59770065251412875388658850463744 -437181907162283904375794385662509056 7759065994990168268797588006764544 8911346757991753853465868241993728 -366750396069461569510937041674698752 984779952640548203699193908297728 3096711601778685296245769582411776 -155251478072746342929730653223124992 5443581189906725205694126703509504 2538696516001634919139355769438208 -144739309288529430805496359727136768 6320482434281110952331039725322240 9585548363402238708276015700901888 -971026948098908651842522880027918336 5346420447490455836012910802370560 7035680046007246092664830506827776 -231904643899943586462080982891626496 9048429562285330698181221342511104 2871137886633822801816423290109952 -946334847161823243098215869262594048 2762268729040066347635869323624448 7799082529288347156014042353500160 -900575676724891080360981762662203392 3950486951940331192533694822744064 5818006450995399150480367747596288 -72037197737578209799910022528892928 5352799469549041240235773249191936 3464785055924059814064003406102528 -167938627961956943472478034728058880 8098060121600158447297586366775296 8797809459125769486137617540972544 -724312991786051163600388378696089600 9730771835132044337694385280909312 5955381643489839186449343847596032 -250573268325004727240549172393279488 248665529427324322811560744452096 7603437595315722706166329364185088 -708472084079127542837169920128581632 5328601698631070901650038697492480 1749621360241327767113792942505984 -944829726281897633486838963095207936 2872767608611550736817842649300992 5413754733015635226464087244275712 -649748044766569350940349935359361024 1159393576229342477494037428305920 9740857270271350604017722101596160 -215555295968177518125891562365779968 9236969880237768898650825547579392 6183507073726768136366733563789312 -9934443751622852088502799258615808 5576886830045761258680650437754880 6133924798576926354306021852184576 -524154260369684836313555287232479232 442057887761515906213121959657472 2576166365677903169910374372737024 -531971033880481715441072946783715328 2797818875512320298495973577981952 3197522116516868898685590364487680 -655718584626347603095206735514697728 1748047569859357401266421162311680 2500535428728062697940987511046144 -761079884043151042186965979316092928 1241313548286020410050988837175296 4199021729247703750178982183567360 -892698541222104709088042004458242048 3422342922835469297758752103989248 9131472109621680920007679903006720 -679376640481714095556193602487975936 8700551123494395518730750086086656 4047714764373088628436573016293376 -671194053972420773491082920581922816 9217058127141163078917477655117824 9316459181592333369802064234807296 -706730170720831214557087559436992512 5736027873248594436451163965489152 2222280781654047119357193146597376 -745803076143344102833994780700049408 3265812620935206438507721967796224 3598474429785768966967692795838464 -30568689491671462644880660190199808 7123720417186751541414925934002176 8426470442312916697628915026362368 -549408122786467319775355561377267712 8363646734479844711045351157530624 3662346389673978479119018861002752 -815532077719147495115000826841530368 9232367097356651797824316551200768 4070384761568071411447359441207296 -872672428110109547646701929463021568 5395545456291039654071026088673280 5726511587568741960461888788627456 -677936572658527442978106515216400384 1253989399003899603500578327494656 8006868726487278223949932817022976 -672729925779896406760155120110927872 846033404745781784116828888367104 7784993655445968394131841021378560 -36532781323724384386039719575683072 5259559884896837861116973609385984 7691362692418591012812759505043456 -102644298578467446488909238495084544 2929585285633061666677936195895296 3895554689379579383823341673512960 -69593273876091973883319535792029696 5037582973059189859194744978014208 5324133880113407846922885852561408 -324040294344825496529725720463671296 8651496239487694196327362366275584 3632399701961974199596153802063872 -37686423556217127981896043174297600 75367429392473604997385524609024 4418441544072017560900347738718208 -521114744618002850543356239849455616 6563732911048714047443545930858496 8450493991170245458365959750287360 -366302193315749104548509122895544320 1226601228235525099033526888562688 7497666110509409317656549727928320 -110126749938519524199974385282449408 3978675663122367895492970682515456 8200317512267671178881461339029504 -14041081724895765163899793809866752 3715741290450795073542395055308800 6538818200837013514417673494069248 -984148586860512263719254468537090048 9103755616300656177034277580439552 4248446126151248217672619468521472 -720966687937720416441454242729820160 7816444538329039169705623987159040 6766697864289122806976695272210432 -442428524546870165835749093086855168 8065350358974364228532780530663424 499573091671170939724731357593600 -414744014946909091568599400382988288 713281076863738316453994607673344 20392843595706442896024778309632 -382367263047357073890102925909295104 2822363188584683570033212801417216 5334621959425697760864933748146176 -620902412538897224812459366520193024 6399805445266006236647082816438272 7006883553948508383899548269936640 -681115431576944745226440568630935552 9476784775208531376657245944152064 8978200645315613726044717299269632 -216816128329276551506306459236302848 3424216911837023839037114411909120 4544563936024867425214459726004224 -4542894558817188639118428026699776 9291642436121519454077603324887040 59690952653018120568942905786368 -741394625755052501265996307394199552 7688153520256389623415655492485120 9935181478348834962113432012193792 -134308194854326500901611851315412992 6008688569792613417487035034238976 9449260983116647357724759389372416 -809011312959984865623139780013326336 4677735482229091178452080981442560 4693841109093765336054424492048384 -561548879919996700474164817181016064 504379508442600782742775989796864 7729459052237604360434355726712832 -978017539292088992546892447129534464 1053915491243461797992188952444928 1765589847551037672497328827662336 -249390923500161518620770778258341888 5302195767619082665742331249950720 9158460652605320084598877988061184 -289246764039939751694485444108484608 5375499154850728177029197407977472 2330957609544443427920710559858688 -139057414955892606768638587234680832 5345832806652853181064770689695744 2923932775511103705619251467386880 -877859962312170147414006458730151936 3503242823473694881879219184336896 9541685915591961136629821147709440 -376901597495937393520763142232080384 5271537574737609807544267059494912 9524202401647601803195482286063616 -385193643300808198552448991311691776 9224397798306622206133663443189760 4256369901340327272581230992818176 -788883301773564699217827138226880512 1018277692672365908760315618656256 5693910189709615898146129825497088 -863794771849033602742900718728904704 627400747653629131670446485274624 2981628380105441442425324074696704 -939789961373981647693322560848527360 4549107001846911080370880213155840 3742635247450337488800272242180096 -336934600198027750891951858592514048 914977616107668326421834598711296 207479632667206251915564151734272 -114068376850078674495824309587542016 9167695972491104690134582791503872 2376259964062066093235493415157760 -585105045210829208881174684532473856 4185646729160223983395524287922176 1652190415873530898321040551706624 -914401530280894883307266992032972800 2006244898344579242042761167241216 7073834986941096072996103420641280 -852907350731211724064362985917775872 5359355734713129017208338458345472 5806813121915967469448251756773376 -245152561541464154494734036482654208 7393190879646584997311850664165376 4213015449133869950321042074370048 -783015431198887633529553987987046400 6958811436228756644004553585328128 2948389720470685394946329172508672 -48880824767056141663635153686102016 6630479795228379149400739472736256 881313048414181494783327149752320 -288941857427126725077968868861804544 8043027230965588875912638753669120 9665782516119209757746556181676032 -186800299581600309023557757379280896 4811532603734771513181716883701760 9847565096394907869196966405603328 -169909517405865827687518837814591488 5099164949375677009197801366618112 8485495722217764752930233189924864 -700501997418278677108524043540103168 6515213044367191535617522448465920 7061488132602184503768575369019392 -879903518779049466923602023362330624 3052450330595468457434878574592000 7427447157627049996000206337867776 -529491963378671283466441231851061248 3052904451575201790094872229707776 5709200134307367233495846711459840 -8179236384841967894862450042863616 6430595335869156238074645229600768 8158384461576557715627852278267904 -128656580051069792471298256576446464 1664963443786767453626910839406592 3572013047610418319704922431422464 -550488757393242325486069849203408896 9090120281652037953671300957339648 9458885903735378426234956314312704 -998495123106973844354876238821588992 9368508749436246713321549765541888 941363483858842240286370564145152 -484051390280743344361449095929266176 4460023016033760583483055851700224 1713625547958464911872279783145472 -318522882470121972996675588631560192 5042029572453124693774646359621632 8347735092084301873980620591333376 -875811540724222653211481559040786432 7732151310060729849330149344935936 6025128111391394018030548840087552 -349015782805353105222721287214858240 1818080611154489888258142603575296 3156147167456608642377589578530816 -705845382764329508227760976700637184 6466881295144523522507271623933952 4308136355826367567853930778984448 -941986258531947872456990928494657536 10392256031382142073306993393664 5125548669563043583541300823064576 -672743784127583236251906062069792768 5953121257432683858645146767720448 9659293649451640375252078112538624 -829899334854100654899350556253356032 9058714956362446737725593487409152 2705063463763311796862323106250752 -515954479012950559458210764375982080 1961311418078224019231698436751360 1583149231471648874288570628571136 -398231537132328953645234634258120704 7340139757941856070442217822486528 4915146071259043431993256370503680 -27515058375497155116123702052257792 734339152610573311129920055803904 6091268530218667667314705256415232 -505027119899391876513259506263654400 8871389736597281920104667392507904 4097075052392985010181190434422784 -618613563090710550783060854892920832 1247497838323282626507534617280512 2840503152636220230319707000930304 -539155485488905828511562273440923648 5929842940620785308075195482767360 622196511419804982766365403250688 -535061651255506833506050251184668672 936419121672437682672957294379008 4493112404543710303598377802137600 -488338947843816121338016504798511104 6210745066156753402898537485697024 8346582437253466614439423720292352 -196254911219938277717249369418235904 6474099877426067177536089367773184 4161618323307988725729383812169728 -286846882049544876657684044935331840 7145829319333719874528180369883136 6616203642071468102056194777022464 -37423500514332962030084511290621952 4281316835614584821103238070665216 8910826041323096700334371506225152 -416616946405327054848925713561550848 4647759195398317212959065879085056 6365783944549581357034696291123200 -465706346706726707911882018455027712 3806553277648738080941545174859776 5568958971593456627465410039513088 -187580912481879030265292424600354816 9673289255886643505848262475120640 1242781468415618659249396876574720 -472000435982398618066128168311324672 5496277567593876643144628856422400 5034180551770392524653039649292288 -474965321791468233906531527502594048 7247218114130998274157921727152128 512712092614851952437565843308544 -675214490762414494433205657941311488 6519105421238135706508123237777408 6440397114253757595553864181874688 -810894901217353298149396750866055168 1288721434711775610146063095169024 8611453234574004590138839183392768 -562011326394136211962169984464977920 5817909792621581050500646103416832 7412398185783644200422466824175616 -335157120166313014977142431439388672 4106478936141107586109211970371584 9721776986045331097937867956027392 -389975603164702307485145110843228160 3541459309707635922610907410071552 1107388098502228978665139520667648 -986177961097262796450890728425390080 8042869796366743537310795034525696 8054989191062300815845577879191552 -683992409994962684985288924090859520 6900226939116106313612380705128448 2475439080533870128407632456712192 -137822772658728978055382411344084992 5617932495688582113805835622678528 647488327167274889061769150464 -67299364855397245926951804249047040 3835436916798633862668916906524672 8369405483327543802262544164323328 -781369955019594834604133919993364480 1777947801921539381709787073871872 8077033049484336294846139448950784 -183641797488862854860669263259107328 7524828679107355690804624767320064 4173962878130724234783237492178944 -280163038162772028395249301482110976 3721083022347314868080272627204096 3337189139294516651043009649967104 -393273136046959098577774421810872320 1238697309894755808193485354303488 1497763335603785870270853285937152 -113909162521066796499598332831727616 8457020224329551225615234900164608 3126749323398737126363283226361856 -365885322388834703092602187764727808 6114870570550863759582906378354688 6521975014207113636105708109824000 -622520701396728505364457796646469632 8266522451341728815547357771857920 7568141524949869988307782730776576 -133999839801193631643298478119976960 6464603710262434324441251375480832 2463305073568025087363198067146752 -493710168420889461303432866338701312 3113326657991327080676246943694848 3486168371818451354094501395169280 -899568905599935827868826126583332864 8924027127911285682423698968018944 4700934991951531266095583993004032 -228339721882836121606528624429629440 6614101338415972545408641011810304 1973981176107586359227954279481344 -488185058849335923773133821965238272 2630678060659637414103630066221056 777673067228647309795571777142784 -402415280621463352820073621549481984 8047463632884903705690653140713472 3327201269742614277574730555850752 -753417904308524431546341350508068864 875598949946376602664437783986176 1891641253594590286735203064872960 -438532411387301896878587458715910144 6817493561337587780771703471210496 439701896391665287274817313046528 -372023147387440792168039822976352256 7905065266457988162023660284018688 9742551217748366985598013576052736 -111465693657964957009274099053101056 4581371766383591803562822952026112 584388356789053977145680318169088 -663929133502854061629419305203400704 5965237655658671211617432738201600 2653087560579675241167614195531776 -924116803769232731466288132077387776 6726359011138872608130222178435072 6499092244969136990480068285300736 -932838604441370922959551185534582784 6496754020396340449723643664007168 9947488359566698547614461785538560 -118465229617372142420920001311539200 2374770979813521206493499134836736 4561664402438511907133630867046400 -828502895463993454040247046854672384 4326763305013983227396606069309440 1690441827892102186386987784601600 -604692841302062900068866006049619968 6865001655160800588168281995608064 1784141805792626762409415251329024 -192024086557133344813370148353212416 317529941998859032830755691560960 9710547363453966312847156908654592 -357775699794750227976419736731779072 8390568606600477957400488447049728 6176636080555920335898096921739264 -530723095119761911055456230550011904 6939311485532480795302387953696768 8893530479071374954255691664064512 -552985821858181014181364050270617600 8966866360537782728963796607434752 7404737193571833215125649688100864 -207760541170452604525825754178519040 6347092817409059796728617380085760 3842593325895946371697614465794048 -661617966764416796904258650314375168 6874446247216523161171534683308032 5672418205143818472130933086486528 -434499959093351109136240666858225664 4620146765611523682255096512512000 8573189460650741302211763415023616 -770531573084942302370265713862508544 8384651789164970312153077494317056 1525286209720647326419674583793664 -289788774128336301871113114105151488 2398846456834077697922180099080192 507528059384558533734056211775488 -522725506305163506829842793591996416 4300950468882539373764595245121536 4833905424803244152406425221464064 -839571220831314078589898537551527936 1114583700884082826895813760778240 8325278358282134296174179343400960 -710380675296672466277126150658457600 9554580964177990114567287774117888 6353638380090841253531418720468992 -345280361070775399373064759005937664 7605673105611128340014581103460352 4487475188227383848680554277896192 -78565412531875894319965957968101376 5684202216024393714574819881648128 5659956250203517065300618615193600 -110799851892693386541867487975178240 3173632523455837384129432915017728 7862146922837294923021462494248960 -876977495352911078176120217270222848 6654346709242045004167437556383744 3682623145623014979554525996646400 -960077990305372048926108945431396352 576841768225236802335005961355264 2879855125556178965340963557343232 -396280704556917822542435370257088512 2856392849722735895969435417051136 2231838601576171799022900088930304 -476219269676378616415765001142272000 6472575717139362583641707417436160 7827246929628338412509858738733056 -511941697749561671039785177282772992 1833058848790340842091296384352256 4511421945525369706388029463068672 -704984878692535800865899421993271296 2553901212422705398206642708807680 935858602305568285401506469904384 -246506695018463389091986754863366144 7714471490608186713064103301087232 5038161942362655046161750468591616 -888800115505576171245399946368647168 2115659642107929710369533763518464 4987041679148938886458177465876480 -971246424739118595194321490975653888 2738612614585032792749490244157440 839086961719389831260543190564864 -861628764490346191975322501009899520 2050731272795365926549815633641472 7872612957091183545523929857654784 -474650432059724660495746036337213440 1905410662259343868818602078502912 1529226222679618131486806334504960 -858682913147244016276123584869433344 1616565272350424365697916559425536 8268560532550350949294887919419392 -427275222756556131313643871325388800 3709724365367204085133246294130688 3893773316930172746979605152268288 -682738711151771247758837266560057344 2717413776533723304014871353360384 3525611357123580064668482063564800 -662857313621431183705954076728492032 9018861482733082931357619545178112 1883544900349203770759772777742336 -579977640824020747077747097263407104 7876769570602218086884300277415936 5238036385431531038641583384690688 -223976167697057830161846977857323008 8155779204997043700063863115350016 1553007544618526715182302904713216 -343246015742018765667864706096824320 3853895830258673482169135830925312 3914336101271759596361622958899200 -536212681118533348359615436610863104 9905422433768114594487905061699584 8015283754312347658212819257524224 -451433992914384011009320808316141568 1591040526239815153520111825977344 9895414659012592631761523219365888 -969557598308803947863202456638849024 1439112011019149134407766913318912 3669294786870254823003674795573248 -846843078217212952250959836418670592 9281372079491679160493156698423296 8896322403947543951723079363723264 -612261180088174036877465260673466368 870829228892776603023873975255040 3481469616755471519386507172380672 -694648169517505627745680537732251648 9767853565365892878214370804367360 7031291398395797162524386804105216 -785226300709606205535453129088172032 7947610417728707891233488648536064 1071629481219420847558369224949760 -500045451346633565096705408553189376 2829829605384155169447891712344064 2229709483407090261536010527571968 -242806944692914996063840581585993728 7993390046600997253512397557071872 3877150180126602136373270753050624 -270877602807123986063949391483371520 1586522356098200439191125981396992 8198397961016024590816868321722368 -506519734236617876020862117690212352 6141926450670789861553306953842688 2980936548356528138626560369360896 -371174715255082582468949042037522432 8048108338210085430844028000141312 6079507603643765668317557891792896 -405880459480155954940663965597827072 7679478331345430766456386101444608 3303498274460769287237073748623360 -734985773014523889248446739656998912 3590457919824701301011535003385856 5181006065192315748957588912340992 -833628140794780478756267358754439168 5966892741539572950362666569826304 2151973289377937439827788910559232 -106724038612626415249781729825652736 4603957490080536127706702578450432 8207668636520041931907894381379584 -90914036264583181705736800453001216 7331340271813016660159740183052288 8217051697089523508715652519034880 -339160656706292816141135073490501632 3730093813042472893610946145026048 9252787125386524150680053591572480 -706688273335591906409222128403480576 7542514614219506204079452286091264 3567465247669919632008224977190912 -405985780240024480922634417178935296 547212336766819698624556479545344 1788674281247378215415809176502272 -314150894951979848600971316226424832 98094960745993008434531492954112 9244345062026241479334869359132672 -220294645051638628371361974026502144 7570848017412674919774660897800192 8686686032738663121101706988879872 -982903372570083999440968523911790592 6098121887021953904306461983375360 8496179919749144559762702459731968 -843004067380479539751797948766224384 9353083137416820877890471050870784 7286885926426663552757897776594944 -590681737014310240278994961771266048 7713922114318664047013312375816192 9386466400074773317371406407696384 -264161314670258002798348710596050944 8446813491494350508131539809730560 3971374772274110113068083220316160 -772967594977852825491457831040188416 5691174285417139802336405850423296 3354528871493738447227325002022912 -892188878318341188126959022169391104 9884603089567268106903704131600384 8737633306532934188723484168814592 -403662624217702015541822280177811456 1537660670619300086511407950987264 1496005610775560990269292255641600 -807400153014854175825237543621754880 977051416084676691864834944270336 2265300404203787865498009645088768 -658645418833659234467538569061728256 9534420645877528274066451569049600 5930657548303706233230808760451072 -756969538302358107382237159894286336 9540744080238434253306294913990656 9378614029867152907396123432321024 -328093895230512413228046505719365632 9242710796271570904177821158998016 2435385858226883576388742190989312 -741644090087223350265738345133899776 8284716420446842817594636961316864 3373130205076438759385662257889280 -530294555116588755700156070551879680 5573425110770055620320837370904576 5532246382730669212459914108076032 -474781921718276350971189050197671936 40486728921052416955321111543808 9059614450009492338595315620773888 -767585668066369151927141598941413376 6682029423484114812057578773676032 4473582074892160718474925895057408 -62287443313849762411413127871594496 3508735759142026955076087016587264 7975244818848031258282994973016064 -613631399824394111746030116561485824 5643871868642058884202597040783360 935733918299843420360034511486976 -190747188797129723942793200508338176 9555147668273725280322656130826240 6526430731835052938310823318650880 -607422908287497550511010773444067328 8745842529932794602985419471585280 6059256761099557385591114403151872 -269117772621234416898199321143410688 214845192662204168654178284994560 9572747065708392949029013838364672 -94644719244151568764403763388612608 1789269628097716112049711676915712 4196784631651584698871845725667328 -429746733417217960918936335796928512 8564065521919876043171724722700288 735657735598520712246862976909312 -244587005498685280562030691882106880 2518374908569755201427755767955456 272171942923951259869822779916288 -779750559258483800621103198670684160 627250870167563824571100992372736 6229136620957630815820638660329472 -826757019311247387242463587307880448 345395442377308021100193194704896 4344864009764132010150698359455744 -311411397536914605715593782366306304 1561463822699809293996706232270848 2827985263047748824729881818431488 -183576114157676620664978403405856768 1429482050773026687420829821566976 8533692244613796371167009002487808 -119051530008706747273885325002276864 3895453628419744685709588766392320 4355836529099409908127912586903552 -878716699886152917584153818431488000 6801516958100219392352832251232256 6012781818919775707841924280877056 -160761993821358918269951145372811264 9891333518484179875383418409713664 7527804797840548545134105141968896 -454487042826374678678341551900327936 3758069999226645943359241560522752 9103967524175822855622157664256000 -315654673686944003198153570117484544 5122408157770461583807353836273664 9573366861539293651537400231362560 -773566973151107581929298216118910976 5114859740965625497229659994062848 8873787323569636704221446719668224 -323668091278762155567266295430774784 4808562763374992535228301552123904 3926880185198702966876202017488896 -791950299893747397775969094461292544 3475704013853213499167167957958656 6558018983003741580261875009978368 -481862465717441005377748104854372352 5107402694257888459271767957962752 7203619351854959771997693217341440 -47833441356472012424263405974585344 6484215223297902605594708785758208 9026069780000281027060319834341376 -869934451341271880958721973819539456 6829208718454623135017964257935360 2582964372671402326045843253100544 -419020567903329210765141972025868288 7200217862355037370287583121113088 2964643239971425676818928107520000 -780026253834959219322523562023059456 8805658295571815275007006996430848 9543970392917750773702176729464832 -237450767417151973350317468281733120 7780738186846724801096235341578240 7017225648696447255528141989347328 -269028919353315727149946885462032384 408735980062145449397279533301760 8647770642732037903235371503714304 -451780188252853707995078415905456128 6602756805564726856335277850361856 2071679731215654149834549384708096 -863414908041286375284828658651365376 5141515858214709888366765171277824 2772383708042733396198388588871680 -874993266970264664955190302302273536 2507869710263228307989606845906944 656109150070898577943189616852992 -548615921780540223275315317727821824 6123485738498014900100949203746816 7932766565722756095341532087844864 -21642830583475398891979518190288896 6845635406954877790380402629672960 6174392112038978420626549603565568 -917145763690961712163851465033515008 2405086888727285231678832838180864 8660125904537704822347599387295744 -113878411128320822492759758632648704 6717546062497833753655306331619328 7043542645817814608044213852438528 -287910343279067597866244491708465152 9382431939270222834151602025136128 7130042288822232090230639103574016 -123161380265810225459012583213236224 4718579375955145928962091245371392 4552339247553350096227899088568320 -252979439161911548517146204255027200 1071914436632167627578301720035328 8229526296316375340518566019465216 -919236728278897501155431356458598400 2114191095698394027197498298204160 6895330337342394244229721294372864 -397016794672584981513054491575844864 5531873445134854575829925956157440 8758793683589826436965179481653248 -632650904827722832238813793495285760 9026468012430012228880491008229376 8499084713331573354081567213879296 -983569280430860705928651608388796416 4289520291753541957107159165566976 2501608686974444665955110333972480 -722067960007304914126050434698182656 2651872032558801099480130746580992 3521262573570578870992143223095296 -312088259393816420303790024236728320 2955836301135794067195784482258944 5179978049873235670593422864941056 -893768514280045902122380472445042688 7003151938230206692448267334057984 6904276081260202086125844234764288 -537073823439861359483249101411188736 9832233725013286249262775999135744 8653872812939893859556973258735616 -778245422123448906734955104156254208 4699523896817422567726748880863232 3316262653810957456965376483000320 -912021437712034050491604751335030784 9951651170172236549610899448528896 1125201247471132215368821564768256 -275536046131366934647995974926991360 3345395547409076766933559925538816 151639611631796266009596960702464 -755404849186375468955695410206212096 5513525633500287442628237326286848 5499358259525599512269574274809856 -353180760815747023441518411951112192 181667530274100057995679107121152 2104984446194916892636187589607424 -618985330173506235712646735804235776 2581356411766016335128713395961856 4994286547809303421442332970450944 -619298778079497314701013658133069824 1567109299187137603493320380645376 410184110155549576098874694565888 -880866443094225194108336527361703936 8452073700765487390778419373408256 2449175486761432111865353459466240 -593820419935302355322382704116236288 4641365522680305130295748127096832 1757863946700393574746609380491264 -616270646017061058617838181185224704 6300920836931166695117050649509888 2558294723133885684487108427776000 -865295988825059170511023882828251136 1865720898549826271362321462853632 5447885160366024980328937955524608 -685631419436349206805341840695361536 7013160789017944653706690484502528 391957071134528474177057668988928 -251164302416529172487570237348118528 5739291747417769338840884684259328 5048532928514529509698828733775872 -668497055846835137372731384363220992 2288296703764691110577856095191040 1074123332068723206136295457816576 -562423084073071843001599532833177600 3611345635752493614363189805318144 8152089576325706359374395566194688 -241926653959594776386437683731234816 5797601148799041914897919064932352 8257760110682999398467843672506368 -364576792074719170468061620153090048 971928820696074936485573707169792 5834651760234449336185968708812800 -866462496897596084003277835920736256 7402973085964206122183033108824064 5628451399051810688647923855523840 -78304152452451392786122632280932352 1050699850366336013331816756805632 2308055690364062103531845069045760 -565873858184924326790884442358415360 3882639683386936360114900894220288 1701537798591907166602087282769920 -371101305391643386936881440746373120 4841529012134178972326513061396480 3238825801786598281464117089796096 -551336353599423111742280497249648640 5213024280055258317121931286937600 1179058848721470839517930227499008 -234892183606675862059854047496634368 7071440063301672434252507030487040 1790913512593452380311240243675136 -22165365472753463347223854575517696 5573976571658953390665147694972928 473232806088765869559718113968128 -575204565150863425089990543854796800 4646487632979898376026741033402368 1389212923263171359866335914885120 -708539461968183983259158888386134016 714814614795215855990365354983424 6841195327030648426717553253941248 -337108257609049436759733644226985984 162738173542860994056527902932992 6563448551235787531695917778337792 -359120169430054347281090772822130688 4367118239515396493672080310534144 1609878116928869100733977765871616 -197769363779094049789836527497379840 1528524634051125522167427816751104 7176908647766328703723547924627456 -639890750561333244886836236953583616 3410479311215078018967846220988416 2741349593461513091499236779884544 -865939706371516283010653401548587008 5216797132215920206616046830878720 8753885126773933179465501350297600 -992120423279382560975453266210979840 5053356333850704754256696775278592 8768040993854521599247005150871552 -291887175256305280841250078864703488 9738763234495880089330320395993088 8552821779856258074904753413816320 -88134977641562719138210308557897728 6428916422787001731696935382810624 6555501559707342733140468669874176 -575045536383396548231289608576434176 7456208696273453293796121919881216 7567227339201842904696824579227648 -634930141654613878546726299581284352 4525611591684914214174298975764480 1788705766914984255379331388276736 -772215795855941789333868135321698304 4020015628090178012282162488803328 5264524563650001368385723597586432 -703026892974228542898112802576138240 1504471535225610255289145928712192 1621765265659628364130390066069504 -759738147768033285745908337086562304 4425195212299383290739338214637568 9047531519248696986176644381147136 -830226957625006059147188217231441920 8923892954145774762526817436827648 3402659418375959396216051198853120 -682983381063585971252073119698911232 5714152761321385268155077363761152 3894462741704510665586121606430720 -247322523254319193828470467432808448 7997230401664164144667333836668928 9169745691023319641797806717403136 -620825892367230819852181396395130880 9892088756058520234488444001189888 3404882672776858253786719321063424 -85152882880078530033792033319026688 4904008078175547902921379009265664 2633667572835769591768155680669696 -417573711914865515820403713258815488 5759610289310820451284475602534400 696546925774416450617718098362368 -729167673423454404791595072921534464 495148150547791139311107774087168 7625129175002577126046062075707392 -242875863928255634549163332695228416 2541902027025185709613889445953536 8634096090223588912483782897958912 -293268882037378373204775475670417408 6453209940208596501914918710149120 5070663257148986905272030773379072 -561403035659936841485922168274419712 5069393986537718923519385801850880 9114364525086096543911432371044352 -864666098030878447151907809261518848 5491414457860647443654100236894208 6720596802255470350901179225997312 -502913750455512373047091725533708288 7932760015572934895875037757177856 785333648077321961114104535973888 -822655578621507455270336273122852864 7608232339426831515561082679721984 4332709093684121049475214496235520 -63234699413023047376673985792049152 5665934626752968140996374855417856 5046040014110713129958772188381184 -913369494734010273149951963773796352 8807044519600783307813538160967680 3070115901594482086924919307763712 -336473805181122027541193129306619904 5192926418925088122898010903412736 2604223779739961573134166833233920 -62735148593996597517882701266288640 5812581357471037447726817762869248 6017878732686615289276046103281664 -372713085646259177855752955666366464 3256306905703968358948864809500672 4060126364637023063755829838610432 -545702821704992323527505138153422848 2238306167685116589512464774725632 1781092203583425306294389345091584 -357479082673388704756397582292353024 9776565913560814098424533711060992 378468421056069101331295653330944 -212573418813261206613814456394711040 3308910043611447752287705337167872 8744290489861726817240622653505536 -324888922003691049428469968694935552 967163365538185827044847414935552 3625997394494765236712070017187840 -705167057611486897863947640287264768 8209071720132479619115256209473536 7409494581952641833213182794006528 -604779497483726487475485011592871936 4141376864669366221586152567078912 663387489248868696007927591337984 -689795827282589530999817717350924288 2723465076296091509392218624360448 6290176974543710781431125792260096 -719785774203535330206566270063607808 8972338058611922877728832394100736 6399778891767389367837966374797312 -541141892247626240585131581396484096 9990938684205643907270805244870656 2234388483770606135009828434608128 -333007424343565010791915116981911552 6624466101449838577536108012240896 1108517874786950914828472565104640 -290420345359830209417646013383966720 1233438506740062427584002510553088 264082807549878722067250246844416 -804883838932451545888762810010173440 763571693343057459258960581230592 4894859191561259534771410421415936 -918780874443527356793030566605750272 8335996466926158079525494051569664 7109087392367133903195386811514880 -130376265674684910081149335915986944 1186984581132846570945187044917248 5479819285967612587574829269385216 -660722347342773383336545439467962368 346708410056720792554165732638720 5661556720012968770412141057409024 -385234372597405536254432480684146688 4504050780983276451910565448646656 6206372842190347932648440539906048 -322990243974496192403157382441467904 7443837414476857070196786752126976 7365093265337025918446919361757184 -325956813446082085304093115609513984 9547330857839698909570758692831232 1391899112973072017568816552738816 -939088008686273954318904135446953984 6933321629716626878674800165781504 3855488233291046425309721997082624 -842851082862752927654299551517376512 2867617633789659617797888205127680 5876541150642364434163735864541184 -453843670167352593891994515506462720 6417381790679315006856954740998144 8981946434313362250046693527519232 -476414209860022516804921073810276352 4258411774117091006746856790163456 6618570822460846139038084787863552 -140385226177946478252828890899677184 7640448373372802731225734897991680 5744933022422031077187573325496320 -616372284314673041409405963852578816 6637345437158074942705998787248128 4299027669459579010653972577910784 -163823056262487472485814134324068352 9442370646609470344733161974398976 9221581479705296424218997932687360 -371996635286262592114292716426231808 1888846712931870095636715557355520 5859365406244221317422845542793216 -189440430626032126184285254415548416 6001934173931734058484513606991872 409133758082984590694565080465408 -86630113473506780421800962404909056 2628005846178646568033954400567296 5918901986783810917287977912631296 -189823286655970610480070612588953600 1998352432295447934143210614423552 994863746827932206385370492829696 -496567783740614365056518074444808192 9247832112920807729409747857702912 8452494999030427555299997092151296 -863361001281977145613471390367744000 467993436862536226838375814922240 3586012135604001614894128909254656 -104212306093895339764429026293186560 862609867930315989582105655902208 7875221880914171289839158710763520 -99286838002549011598164172036112384 4307527618585501336338565412421632 6645731711717727297392929706868736 -962580989374297713145973710700675072 729221271421748206110574938947584 823035891014145325209104787963904 -866623770906774015029829916881321984 2606907811124615671449084498018304 3905803613417104602815409824989184 -848249658832396131273902834080284672 9251138944314961696014809411092480 5639703350687637265455011072049152 -833474508512169656938447056582737920 8475416289174841102925426396758016 6331792142701299706956285887905792 -178489790245047152894810297305399296 3510558357272354137750567454244864 6878037171303807078209693404889088 -275604602844159533085954295117905920 1899160012972838524540453801426944 7437556522925380959242972504784896 -989418957680826698210051490991570944 5235421643748844175956280241815552 1767035212957936115960500398850048 -263438619318934459976211801902678016 9446672960698796581051695540207616 6576904409279571842853309434036224 -108896052800692603223593285945655296 8655209890358407454809852359999488 8808219337709859988946483742244864 -975606647640222073566852755268567040 1775925815877931820748059594194944 7324113558341751221146766836498432 -40801244920407505582933009839947776 7325138571086433632433748228177920 1377671596762320064016405653094400 -799753293877332602973691116271960064 4338616989331962055153738315726848 5010299011672590860784402320850944 -35082077866839373608499617363656704 4328494990508516860385949990780928 470854989233927546335331197386752 -40367028405121004241641527268343808 5718342966622280834657423080816640 3527290208845500808104298047078400 -981297810156332099736189345346879488 339485087551898758983619553787904 5438013568801302908803133204332544 -676253803363182729311826805335785472 6174505034396446198965173720449024 7084252982901058295584204462751744 -506701625008548714048848045577076736 6262810468150716818859624757198848 5823754598714369269639205017878528 -974506690725394968755782258251530240 5513769123740022716289883326906368 6608778323575842800037839876653056 -168763639430923797076705633093287936 3940198492324385106569432836079616 465434889238789642369209301204992 -710422547071711993745955595898322944 5402310743371533921080377457246208 2750881357183680571577828898766848 -642385164016700046353796927034753024 6948679112553612584314439932575744 2216182565728137821669089850949632 -226650643955731115606774546790612992 3695166874890442571298618948452352 3506975295806785373172271513862144 -16936488099433799539750814261182464 7203200606412135251230372451581952 5112815478080550889294803901612032 -535772997417678807354624428459687936 9977764249417234118423153859362816 9601398722960869374949935995158528 -424829139068916723482151567019212800 7410382264800849617509341496082432 5213998251931616661417361701601280 -430705985235099652996093260083494912 370692863930669457657882841448448 9915972030752794287499022138605568 -844562405389520366490640095771623424 4526086397704772915925788521398272 1663630187168300544671055572107264 -116273704799701693238510853386403840 1375171335505913058244573133799424 6095785007205365661493659460173824 -794683958855478380595855382338863104 4019923185013275106505406355079168 2382822380222489462924437637562368 -580730367882749704941695835624701952 3726801681458327344123372017549312 3398172568135731216417088562266112 -236891300249430069718686093436518400 9887012283183100556847487215730688 5792149604577851910577927214858240 -222597106100605485589203020666634240 679966310257397556794736020291584 3881667235846859053935650012135424 -870909486396248671908644611942252544 5461219392233886817912555707564032 7993536336674284641762314932977664 -647682206279665686764085009163747328 7640421261059308779978068068401152 7614907327941818795515567822340096 -355565293867374721739836735287721984 8833517413170862590767344235053056 795211594793740929024352581582848 -381564929096376736516969229656784896 9021188851267005959006019188162560 6433306570159439677693537950892032 -457385563488891738611224390383173632 3700445498761445875011951033057280 4304297073743003380934444220153856 -798099799183691257829227291899592704 5989211120011841707533037777977344 2615702690512079485772475807039488 -969547808261309330882733780819247104 9311597284581623426819573380284416 749031492283364773396900403478528 -850762879792072109565926442755162112 2201707138221173750800934926024704 2776371654889641976384520003256320 -494828560192255342533233995417649152 5170168723533094813019826789810176 8075782233466275437025699750215680 -686327685037108877635058936036982784 2818967781011840098946602571399168 5713975131428034980807408995008512 -749230785214334445811786400250462208 5786367404555307161192628500824064 3826013686661769932842847617155072 -943541425047399567900678235554316288 8252377797855957890514420978679808 3322799710724820662990166053355520 -553207326743406256467697371644428288 1406621567533755530506212613292032 8353895972388274245376157908205568 -499875000089555171087634657970225152 7851049995773325581788132461772800 1454331411750855426324160827097088 -844660386064944091751019611343028224 3361607176559814676693836875431936 4330991314349239989565044096499712 -956134984598621875356030448516988928 6607780895868025733955396237787136 4314002457821167603608871711539200 -829183493763558829295539449715752960 836279435924452924163139005579264 2821030701041285094541669198462976 -995389643996848508687944342359244800 8852730403685714887073660873474048 4688127616987220792765494388064256 -562394529461644947050370169185501184 3086227599624795522938671992930304 9528112322689771801723586530508800 -89304238554598317301732170994286592 5057093038346976680557988481597440 5064373712377851939195126821158912 -548642267190613953681560491043848192 9919044857010386980485256278179840 5261978772427817525469042471600128 -336926550248528247662931897630064640 8300739443997303848233529031786496 802150276551991618767669809905664 -25437688363100396471826080698728448 1628441905887974965860740771086336 3770617408103188414771237734055936 -85286727426095043529064083137495040 1481919946715351322894793778921472 7033733767781737637133251394928640 -697506258545795736266120856594284544 4957042312669103588215825843093504 1055960997531172255675653589827584 -649569626825414131322820281415761920 334394446053646969735537865261056 5130387302688006389982990205714432 -142018934514997187793823002034962432 9022423309656872489339922723897344 478918338580251194923639663230976 -689825533727549334483086718827233280 124217540512213564140111236431872 1091420650439794051707712126844928 -16210592274441671726213447565705216 8403235830278186340314434857074688 2589268781414566886503298463956992 -431938720438227858491815305391636480 7049279308165558756442550220881920 8183848454433231653890863522643968 -923191721119397652302028991264456704 740500702240237978352557592936448 427177039185409831704624285876224 -104286994622121769464273399585964032 7412229488439400781316528583737344 9835027617873190566654583152574464 -434234902300709271713405662666948608 5187754042937063526389952645431296 4784022625606203755028275087278080 -300611875064925955286394695013367808 6944115324906499513541641145155584 5077439364931629351985571099049984 -825857150633073746979066040740216832 9156088615221037280070149135663104 1230952636732315495733295312797696 -288911098524489711714390653783769088 3942129088352216101422126117945344 5612053408561564785591225709232128 -386241459164520599187765446504873984 2672092098598450384818240875397120 1557840059031468562088243073384448 -839301949747432143980727391202836480 5673963085651389253554863586934784 5420660578245243548555196229484544 -688743300568879577637371838778572800 9759343398846672165547530128457728 6076348250470128630053440025788416 -488827088288329200260137065906176000 2475422577058132083594572771360768 9670385533835806773094333301129216 -106619986536999470042079785383886848 87084024910267067440075066310656 1698091494394082711837005213335552 -832088557384709201544431925861548032 253179390627472888770469069586432 2575913965860153569175079133118464 -920389290903249766090209322552262656 5253313727184284447476472740839424 2939348564634104850120794747961344 -830160271821214601933086734583595008 9504589725040193698368010017832960 8438547156060530783691910479347712 -883422609451870537304810501479333888 3142522025625997936658344736456704 1628131563600964146771922127945728 -909723518206629305839300380586934272 8876789286638395926020340863467520 3942599729673951990318196414480384 -86367517379008393425608897009287168 1544605891765933476430633425174528 4721713899465199988268447393906688 -13705168852666670596938720029442048 2501338302390429402992167912210432 9801212171835503878630900276133888 -745531791689552204144820467512901632 4869721172590478612624795871739904 316147001477933134893039791112192 -353228244997270823431955048281669632 6063536792242593156877473850327040 4640643992063249749884512906510336 -658930598285368010523843660989071360 6952452581836973754274665050669056 3420889189799169674698217029107712 -526154479775707797692928080729866240 703209099580018863049752704974848 6585529047067832241313469819781120 -665741100294910591551388779469078528 6997598395155483927354257990221824 8827590344609527535691651528785920 -968208505084259430664435744754368512 1921798826800751210188420899930112 2999440881271529381883078068142080 -944679247392567478343038261597831168 2327949380311919759937227750113280 1486016674348680771776489705177088 -46513589918476353922094315010523136 305150951137114021047487415975936 1242641634847605371380142851489792 -523708524909198788276437289367764992 7448162280236470682645093653938176 3780118086759448410149946312884224 -846011065726284817266090238808162304 8317496040746726425464153200132096 4970343807757697466402189885833216 -509473368547451628386425231634333696 2848048801702137411419979703648256 4752059768262075490326848118718464 -605550006884226668607397314928050176 310926702363411208111606978314240 7836451414701744704933432513265664 -417893453577511404713760870082019328 492721068862655942537891402481664 6888792414656501202551880961490944 -290268339389449105599506486029975552 987657661537186057483994873724928 4266012389257362089553924078960640 -139743450690815010713802064873390080 5992027113185553337791631545335808 1081940862427234686408403604996096 -464331597542042620574619394287599616 1199079138455795233182649447088128 9351349282835603339144482678374400 -685890214067746600887447812359323648 8828513683928289032017677956153344 700364370007153367601527690100736 -93146217223067450677620838972260352 8411643397687438946703413117714432 3138728225962028905759366744899584 -748611101740734965763994804312604672 1433535339144782144965884321464320 2110671972693641067546191855616000 -163887700326161968629927902074372096 5668152270501944207543881466642432 4031403620121675786642151771734016 -159700481551180722126220150741925888 9088054102689841260200370898993152 4454493737702915973393570055847936 -807300886934884317696205778979913728 7752444239401278332225241512673280 7094794236831625660723841034354688 -833536546801460927732424815698509824 7269684015317751481805856619626496 2147725250514395522577401389252608 -575181415769511142692322613844246528 7496973953332883015123218886295552 3324063857221389041263698109267968 -642616206377561640264492529462804480 7265759435907126717539541055438848 5615388293215326942704571783315456 -619901963235868345225064652113707008 6043376394111432119767906289451008 1856239170181234740967384603951104 -274364584762196452751009617046142976 1664461872403904221482741466660864 2905026162239875052865035865948160 -885793510507597657748959115559829504 5960934431303348193969980716351488 7483699866753496765647683659497472 -292686955118497498743093397297299456 799990629079468402335488571080704 2975393250302805618306897300946944 -946064591400708322891560308998930432 2666673125390309699153132185976832 5271171931791393934506568842215424 -342877442232872746426121367106617344 2589193285460855442656713481650176 8092109254913488889659553254211584 -610728717005844422822259102882725888 8330969082353379864782666997956608 4894602498220096177237862700285952 -898230053586195145738142208619446272 7450773666289440986501280446808064 5857624032939365905696894411079680 -712276417539154755581689190020022272 1728097199159352700883792388161536 7204716824246427801899169478606848 -872917113972097807829845857005469696 3115132407299625414083492016291840 2036407822791893325580860936683520 -706569505371236031989624319424593920 1046362056334112772670807871586304 3088654127151664178876454166069248 -374074670843333275166767763618267136 4615870171533101129885891487072256 6049905675943303422014054325026816 -159186089392174661468758296057872384 4734149511167072418550892879413248 2274744921085425170202566949076992 -811177974518379969268445592552472576 3991084127174015852977142586408960 3010212697169219942513461367406592 -103187997079263783177211108019666944 4774642186928100248675176083881984 1071913959252185475845532493545472 -275285890179126739194860479352668160 6781922960160060979609751900913664 6586229180429301915761428710555648 -766700729208676807938030980638441472 1230449253974697719129935334866944 533010210482744790207247163588608 -315637031976465088135309542727614464 731632739978464693968011727470592 1097336210658813765388960710787072 -965192848739243913140594944556138496 2459634597891504855042419316490240 5939930724426845914484724975271936 -976520280810242274416347924414857216 3681366330560986529094404768006144 425559754286457867826336163168256 -845882441923865546173164826969243648 4225547472008446332674305190526976 4874583388923975542209422991294464 -608110034205395082005846505509879808 2637790913879735859196210102403072 4976357134667070235231473497014272 -95681828163581790142956719654830080 499644903515141765496456442019840 8583891291497267648842264102305792 -915097487179254048225051856311681024 5716516500145525572791954921488384 1545478385214496073538288366911488 -182203237891869524969908111037956096 4533358558258703565869415986626560 7570393792026954403471181343621120 -147515304073838625171278186567172096 4144179177361666463318570780590080 4549410012699381971646288029024256 -670006112835942724348325757290807296 1590052617523687066444184806227968 9847113170525361107224152009342976 -427312562182864485492963851060117504 5146133239552262669885371888697344 8595164310304453869259152995385344 -879550699366659445802263833758138368 7059702472734189834028641085816832 3472396181600927361176879721611264 -656800155145027372644210398023647232 9014818555997968079416763569143808 6337729238314421909551082916282368 -490379938411745411586203666970836992 135558588752466586957395112493056 7091066787259660307102255005302784 -569752363829172241387752364089278464 8077684297250314590932766445010944 2686475965666805896985707385192448 -808224856856488245737563525291704320 7354410165360742567492177390206976 2255553826729018594864596491698176 -912464833930292511211616462415331328 7910181059995024868452894414733312 4406115093839586460627120741679104 -814893718627312735508537639039926272 7719107076285419752770171993849856 2673081057323292093726050547138560 -756859870755303132547121178642219008 5782085971952442392639660609241088 4625111095965981937851574626811904 -794246360605249138194743682698051584 9615929575451706947894578757238784 667850154575914026301019987640320 -928823563526361097805796199851098112 6262753455866129899324252201418752 1652352228483099659875390259724288 -721195116549112035103803873031094272 8340586978494721452850944256507904 3201492129196305927373877768355840 -723083761314044764451223218079924224 1793766210642234169182653824106496 7801943017837175870338104891015168 -591075011841510515734273012497645568 2913372911982546192791863642030080 9255741962031556405519577316851712 -484226051689050577591947413097021440 3608629584460644380680954084065280 325942687174018107293286342328320 -296725074569471182184026898555731968 6930689022935730891192055193665536 7600976605570354737500632041652224 -908003207363386186549797273494093824 1486895501426064419608920378572800 7777020445003757879009360459333632 -694268649682385078441657195577737216 6346223050257859859645722106265600 6246521637525710747107572259487744 -531457463847615022870132526743027712 2716630775790660113889283142582272 5365604389992395511940404018675712 -560577032308782503722328798569431040 3526234519345635248835818587947008 4439425163112414793119104013172736 -838652049165141860222068732307963904 9635464746680110314116128207536128 2925626667732713489311584556679168 -195895355472543045520309303593926656 3809628885459102049453130429497344 7667464839186559084829692189999104 -884666061564243522373841503463145472 3496740890394997791185074334466048 3713400511607664752371419395915776 -370705725517373715932165943794335744 1944675716818798721496982543663104 7255513434613302274858935417569280 -388446128774424630194327672491868160 2304487357784418868219667556597760 791497059680534851180171622350848 -3719230449890517167754410675142656 2783848686631695494366236929687552 899886023228336261690600154202112 -860982873012762233746777868494438400 1938815110308494640909626531381248 1845948206893752444082888571355136 -971079995311716490916811376462659584 516995860070620636583835455193088 4954114993595876327045762832662528 -585486073272143412913917288509341696 2062368838597874503983129044189184 1874237128525659616294696057307136 -34986759850890238726471450840006656 6031345408380133332919530521886720 5523546482375962895009032750235648 -740306135955153729825629499664891904 5490774121388948682102704300883968 6477365371024284750908412787687424 -605869634295911820142397683289554944 2776456530092326999886538167287808 335873684184049897325998811119616 -333638469731286024014716054028681216 7766674253178739908104703283560448 3532080571893472323789201482973184 -929381780559762598089034043456749568 9736111959809170603210760377073664 8948383490895214594692108922126336 -424636599938317784414194899015958528 6974414394155474572349514245472256 2769481607025137950827873438793728 -631834508722525474203065210074300416 3982693747828259770480906016391168 8835891501421991476743558574112768 -122466390104634529903260048222584832 4363545390786513628917876998012928 830437214938099017184732967337984 -920875552623934603252221038232076288 8706728143457348543896829309222912 9384323275996664798550388790788096 -364747921456764972093911718455934976 3771659561364983074753235411533824 3728953272915212027257459975389184 -506860228222906227285947143386300416 9882327897845903076903505765597184 2997033083010702222916481770848256 -700808175475340740617930646415736832 90812800767978077570214670630912 9221270021392726021428623712452608 -466941639368522574463052548665245696 3748109716315808107957063845412864 5007589861981677913773010570969088 -322719280643138868668546206387929088 6658484152891999943348735283560448 8768676112722956587932171718623232 -730373097089197698898761013023211520 2653693623726171251558458236862464 6987054657472057004092491309252608 -446509913888127441400318646261121024 4069690112929658616415647082479616 8545365047814697265773099339481088 -864910221848476293473238937323438080 5549898521897600855689215868928000 7123400723278469288693148694872064 -248092522905896281570160704661487616 3828000071490228362050032694722560 4123865047211869526055776673595392 -588374798832346395916141700872929280 4092695036478319089504168873820160 9116287564001149885162230678290432 -893468961676907964594841506667298816 8354717411154664152439221869608960 282784052334324945647765825781760 -586090882895544649049891679611387904 9838197894550761469561803034853376 9382898960894862928425882698645504 -33358081031200234257944636169388032 5199646625792086134933560609472512 5455323407134258901753678308311040 -834448516559409240197929995323047936 4068442646436485999448883648790528 9333952556822258327709375352799232 -164470126258871748911744636281683968 1406460471796259592981798558105600 2856087844863027019839073339572224 -498562422175304084711236176273473536 8920539793030662390836538653016064 8205530822241532921792482592686080 -144626047759719607478966104522489856 1267690265518873637842612341702656 4109354337812544174726344066727936 -977924743319904805533433351282622464 3420261150663530764342928512909312 241932908452639458085243889647616 -927101366594074980089790501882953728 6330928350018777646096060690464768 1810424764424269837134322584256512 -669215415916198172186048789567504384 1966582291442524270892271984967680 2276298425580755485478182004457472 -527577664983993837974872200637841408 455697901273180834846160254402560 9320497432516811928465688609423360 -197881799346689142223752476105900032 1785577259315163164826802180849664 1613261021406091935864476517007360 -980089779031265901720528711617347584 5487914193103215186877486236434432 8736193777456197703223839014518784 -206646623627399510463467580697870336 4279336480510210866006681454641152 7636166544668867379601500186607616 -605623609819101904633729598575607808 9399326820676083188917082729218048 4075180693826407455090129854529536 -140631822808785709076945201983913984 247750120195337069472578472509440 7988749993925106899502087488405504 -348598542455871802061967235427074048 980934212603698841382965630468096 5911907282837666691873552574971904 -146758755766760236065844250856652800 3780228979772947105622257112711168 2867437638363288749558753298219008 -126865237531656858419364869634523136 7910975982047738494467210523705344 9933498534206447030098955482431488 -62367386010700195825055653710266368 8566904031427147986773998894579712 9053952629707819477586709919563776 -312185257237206635460954356170358784 1082515733049422013583346240585728 1983550310978103287680250996064256 -854789615858735995372140224617381888 1035646895009078617356838675415040 5714673342903937203250636661981184 -525409017350828543081607145109585920 5794173426571502579494352146399232 1229994024678431593029449434529792 -919213013483275337098768814723563520 6780551477382656168221488875307008 6231078399900164153333208928223232 -295717561679114891674389037098991616 3876508311609595402329443876732928 1014300964076887166365718349348864 -824643439930950547328699644120137728 4855963321418620669460992342622208 7934526312185922547372402724044800 -545870745093354242848929198788050944 9453678083141187779280593716510720 9508301558431327264950006990241792 -930231353485623300549868021560115200 4899634156397612360671966753980416 8712661869626906429300598439411712 -18258785825663097382217876737359872 9639165444702924083853716688470016 8720180160782410668880597801238528 -170113235039176724786276960475021312 4065623618404059474859090061033472 4556713569932983617280197712150528 -89031690471384408468943543224762368 4094675615656732153988398314422272 4844463248226394659537665948385280 -178844905349415999374344840850440192 893151081214598734526203966783488 5217098566529115026801651406077952 -711317355567505900445216957567860736 7911023361777410809614686557831168 3903442094278442891125732193337344 -826694615274204946634517701589991424 7664112913765057646124403605372928 3538893977098589305017889011531776 -811901239119048682768693690084884480 1698373648335382139994234960216064 9695796484107893454516844809420800 -554557333799794781751136871721730048 4326093885192640170994275352313856 6912340858245847172081444083204096 -437844937051830238958073550181761024 7707511982618880288752050328567808 6233113418622366076192927000821760 -545028963110311737825460866013724672 2923536213265197835702535651852288 9881616400385460279683053434961920 -247193109835979160092054145063714816 1709017046967025695004036396220416 5781246523844497683392690315591680 -146297098138409826180811746741059584 9347585608820964425860942256930816 1890735923617384457284211424886784 -125150888587539675829737007372828672 8404010629158068432736910871363584 4368826553665783088641297577148416 -851019567197719713384233697229668352 6670635030202751120471953359503360 820304139054153629526709971714048 -670321750623234259542492162656567296 2059493409298734616422017755250688 3924720367303348046082742713057280 -330129383647583543526557985603059712 6193320627573480247633423015870464 6628767621888807816894823067025408 -485475136763287934550502957150896128 558236822654467485815942414336000 5769184927374857386976847130001408 -914377514757958538961768487407583232 6938493870618547986529177896484864 3529730822112093624372306569592832 -304421383873102209873569587182698496 8237919636794974285791206532186112 9946212631001942796391689729605632 -893711717434408643170638145620279296 9886852185251322919950955952734208 1785208104130250533955511068393472 -372261631503414593135719836098232320 322114849020324510372767668895744 3403360736832245316458444813762560 -195130599414755340273939432553316352 4918338707661191855166294746726400 1756215885296882757595175973814272 -25957496792211125741636372347748352 927020004327084484235466373070848 6585226069947890949344848219471872 -422874251543738574845736408823365632 5462265040868113436074753172439040 7412189696502625883545655972986880 -993109975326701248779507604819804160 2682912846189799038808139692507136 5125282305277822382233410544336896 -579817226201084133011192137224552448 3491159726946680888718177396064256 2815122116149074852007565070434304 -89970419382353646917760677060804608 5375307844475965924694601181954048 1346076869169681389462527053660160 -956219492154422428766978327600693248 8153721774347266918121693627023360 8143654598803048084334529470267392 -954846066119582355074242845909975040 6480942427341059334253844023476224 5935796809881853685711917857898496 -174361358370225168107939546557054976 2548714587981151583152955291860992 8059340274131478646156343394697216 -15449139131121545060179461734924288 8694903817161848384029612446842880 837386398075706432459272536195072 -182842862298066139299040961801224192 3874456072539579151862216645410816 4251285813044310049153829260230656 -831745687345703879319552074054631424 8877937477522985436171631035678720 9297580099706761504304487020363776 -366415817672043010655172102314786816 3589518793902274583902384543498240 5031390455135243447758987966021632 -110346352479592668252474664529428480 7838273701218310105999771183349760 4945581940821517086007063832690688 -981366758066816054645426043454750720 6441425722120244932124119136206848 4558041268102522191725762873131008 -274539165199893159766467696098541568 1937317076895204542708682936287232 3466113758004143277730634533961728 -765196179567972551464494084338483200 6624986534132434077469304504188928 371302439315860784730439019397120 -945808330158042389521320363100733440 4399262509163778492631753445867520 3048949183199742430042949158961152 -952172541418050737128934074061160448 889322280591914620339835811921920 3377026893941260679589472262684672 -272435391047132240633495970776088576 1982869766549879221954474024108032 1330582885423307710651361405173760 -222163220672716058061927727574810624 5622222292868433902968446975475712 1620225136136774532596368123363328 -951495727251409458973390404474372096 4978871596830627948958732804685824 3434669993243012396333927959101440 -114486386725296259239901874991661056 5639858257039654370876600078041088 5693681868950847717723002890092544 -303527363918161491171721111352115200 5294716044916394415213076042219520 2913387992475576512374885803098112 -845087271545939812543730929880793088 5928369299328450495616956858630144 3507082888445976990007185865965568 -197350941075737194752812250281541632 8316181521103326794934230609559552 5632816581674561590572331875434496 -704886956747403100595445214207803392 771371369364794134683758784151552 754165018884924877837317775032320 -213654262441645568147772616466235392 4640052353897943268606392326422528 3879922336489455379019304464809984 -820213954287075315284314643731841024 9205883760715035825639026184945664 7268078894272955505677123243212800 -534279127426117344687432655137931264 2502325546437477681399149925236736 1750476611819202208566904224743424 -701394930865059705003674075645607936 8051063492573707208806381274529792 4613732357254592119770479698378752 -659097588521832843486528751945121792 5519794341278931345379957118337024 626452151890094309540683071881216 -867011104229968822237936191858016256 7800056972439865675135077247352832 4980229914895744457097026325184512 -522133341240422775766813651532513280 9811316614122085553609035434950656 3017601708339061499807548145926144 -371313840205378046569670734465990656 4164974456317381306565148016640000 7269547104493437961441748577157120 -872391065156866951635157241267486720 8022274904578239456801742531854336 1306601624465266294763309599031296 -31834874322182097012540008420081664 7364249086163038894495511384948736 3658207733301505436351187975667712 -107810293905908430772849244402352128 9041372378197807761698946176516096 2699648455598557710273179719565312 -957041635617121381655138947790012416 4691221118971715033448418597928960 4030646948803189203016502571171840 -58455292257913191505376931013984256 142686407298169182310165569863680 8914261775072306470438659405381632 -364441388691981784605951955451248640 7878114152930514879226202948632576 6655166135530730916247957460221952 -73769025231209157878204557602848768 6237525974869965010514637093863424 3057023310202456298005430156656640 -113100617934177527642855500387713024 3045750886995091783012726364700672 9846320836631492493593194998530048 -877595904461994249829745646096089088 8187161536573095909697634774810624 2970851472377365046805329203953664 -12249572819314397279703739289042944 9056472275742109059030403166240768 932831393553472651822392590467072 -109025898672160972919558573779845120 8244852978073509450049099455791104 7642945384853697633781102596325376 -83546682826664430479521404963258368 5762295838926930152043894232055808 1482192552589044659896875904663552 -57972036254521199529555223063298048 5345763925261609705692789336965120 5854310639185737562438972177645568 -525461301937919202037727771890810880 5060401174503999971623176291483648 1872766746166079672246458533281792 -399562157470100475768722348025315328 3201781283039704254864887272964096 5617613174754297711477103228092416 -60259089329494218114589214394810368 508693442989255469669174453731328 6952596159426749411395871975669760 -47664025997025750319007382428975104 851977552463998495479781685985280 2389129644244296465770911386042368 -95273736996729460751926945149616128 514670499357786594744033328758784 8647598106117285822930085757321216 -844798284340983414955346234752106496 2142377846605721479917477656788992 5503553314112374064864012032540672 -247406844333766414989403614345166848 2076640822556037072122891852578816 3812368810050372495148282699317248 -943657381136030040414451934588567552 3289237095786699877127492475027456 8401136057921930581761470482087936 -976445364100613152214871821546160128 9965829051631111108743293759913984 1907104956686851977096889769132032 -782742623948732640415944573009788928 3330914059497911916944581910855680 8047244441121577915722573813907456 -717776945563629981641958531451060224 6328113070664726122031563292016640 4597002456798916834378903906680832 -348728340171884219931714807717167104 5086655510299717832958781872406528 2336997448510877396567201444528128 -700455396548256351538994050060255232 8535940629530603795856003738632192 4291833817092248249783604293402624 -643649592654366079631146917344313344 322327492238027789332758025732096 8818938436450578597313943655415808 -993955128469851449369204672985825280 441183566071934181165665418739712 8540526638763774721640587388256256 -841541338599351439695739409091526656 7219161114484490508015321762234368 3593777329488561171871403419369472 -652273079718484282480278177971175424 762016498745224871051410079219712 251530170308635419650319378808832 -782458067726776421449325636189421568 7203865361184283972410571472502784 1882279254091642917865568035930112 -135756146706040051015920024482217984 5164206908767199944939423297175552 2927964087893715686739109188993024 -509104811903286905098013372745515008 252327869257507870060628408270848 8630381728585628265643035819245568 -781454446930157894057942017969750016 9916418591567334366417520018063360 552141650744510587448210449498112 -83876874721723141329323753761406976 9144135099532009251512575613468672 8840073325279633781830986963615744 -317535215131842334198884196138614784 6008270734615785678048632724520960 1907337994697809237485395956989952 -591541641171739167398638117355257856 4789435146965684989198696777252864 6172042334629897863417556256161792 -502747864972192070436306581553414144 3387886653632877875056098244820992 6520403862582784987444883964821504 -509838416015546875695721862771245056 3548410093959810422428954355826688 4894286821558196133026426775404544 -820112236398856608123993678032142336 3939841438029195939989803208015872 1235620355879968143266557357719552 -794173218493709733180034902732570624 4067009952943842432823794906169344 9651928238356596876063193723568128 -195650291298093282236964521656713216 4057068566669466233839746455437312 3358993424973822639024678937559040 -404748008009644540221077471381946368 956925753396639418427589374509056 884513186673701694246242494709760 -345342088362854307997494646925164544 6412138153953174560498270919983104 1934025731252391649878061277511680 -991045080726788895425557205994176512 8065661955425447955508913044979712 9010509097763198707529866501160960 -987748095318752930925072264862892032 7252812522122302676483519526469632 2345685280260176324058931875807232 -357524011691056626162025079016259584 287732459394813821765197976567808 9262381412295825491910344484847616 -509450997581730136733714184430157824 7641108634966800617137099035901952 4490119099195236179732688304865280 -77766986319870638778157585819238400 1057231895280511572169409580498944 3369722429494076123383988014284800 -204190993879165007877586813800415232 5110489518715483793289264110764032 9362819469870588750828033321992192 -92389707716354461653907600230580224 7224057363202884838567554085552128 2136365347079235595585174923902976 -378909079385674613712702509735215104 1212173700883969059862397335896064 7992160967079988623359235906863104 -909389847350908126450214719950159872 7783774799423082433711101173563392 4141352404927363187038825679421440 -230645545651628712013008110513815552 8589924505139795149723565272596480 2986999124678146218095179833802752 -232293180116811120964620543129026560 7124157979435340231373901518602240 9224477049043534374407599334359040 -68186145176815873579323544846729216 5552671786576985594739049143205888 5682198873311305035916501416148992 -168839393141797732899699156450279424 4020544469843730937265383956021248 99762991765769517319432095924224 -681230993242680768395820341483536384 9073200621181388730677861707415552 4703418278457044375684394623434752 -962341549256234501259140262596182016 5210625345274282517225690577764352 1902015343674435730235607994073088 -821792088922605531356404697276612608 1600009227086221702198178139340800 4794964497418200132138405610913792 -86977340264661078029395506793283584 3832485253150830979267855902572544 6368591801876958139690226938806272 -515764169478825475748870640300457984 6131529251709977999424637320036352 2239455677146426641250306572156928 -71268750632575236679855374747041792 8938020137030204494207501773832192 3665567980444491991239485451927552 -866527694260442638410708413426171904 7613055734001568837289116939845632 3788342112771104655850539011014656 -208138070180919619151444691178749952 9951390804930983517403443003129856 4401716758417816328210822132137984 -770214637168134448745071565221134336 6695543920950556801030701700874240 6522497029533812372182643320553472 -271997999973312915454847060522565632 4237411273970347698006849985970176 5195199040958071268338678450094080 -226397721667890388879477400305401856 5894811294184120329392218108329984 8604720696482430306791603266650112 -96841783777718427757149605110743040 7624059244758206112074067196510208 3306874793106176903360301515145216 -48930700951470541537495059078840320 4870037489346166731475532287836160 2620254771766340194232940151963648 -997394862094953312818716851184861184 2849217596191955630574727694647296 654165469161476602951813199560704 -412905234251292717338433274242924544 1299834619654565879417291287822336 7909849389521685581954430892244992 -530583110783224908633808532685193216 4120471952472183538755257237504 1849053028483250556019429313871872 -449535458581425071720982015689883648 3204102053877426995995837911269376 6276916849379380820618960955244544 -30337313588341275465537217259110400 3680699105849832349222262523559936 6505818820801687727712505081888768 -162413942868444992003517992327446528 8555417271847164985880747901452288 3565018613836481071597858148319232 -136986747388278711862543502461108224 6889073346718040050159417422774272 8327787863701411969408516820566016 -3572001264752414688653172465991680 153532257777721843466516144586752 3683862815511316388318466512257024 -687235003750417462246186928958341120 9785045739513902584674277237194752 1646514041609391608139214036664320 -403468759502187354295580063151685632 3590108602222362528206357784428544 2109230469528342385298567921139712 -194621549310585862630342014204379136 3733268721036709685355016114667520 1784614519504085443103767052419072 -119122626240117970147185961916694528 4412450711973324648069058541912064 3938956455298863347591709852696576 -630371002135638742654562669023985664 2536953976072427254133926647562240 6512577147973422357101948686041088 -84397951835075423703286441985441792 6793573738221237235574365642293248 3630280861098209845907249529094144 -975462381841872097271817753770065920 9418091993159906321817234512543744 707995193679866050123038961172480 -855040496406459631902241140238188544 5642480875157907603148191370838016 462637820329241794551219383959552 -433646796790942489796883165569089536 891437632405475780307686785024 9364731872320179139705355320164352 -688316760745450453364740881381326848 4518347178585273033756462307868672 4670736868494965798928144119365632 -934599897923201066539989465902874624 4731868289721621185057809141596160 3119788246579180988876926117478400 -157354605535690590094970350894841856 7022773310947042558134637981335552 9437393658154611023498411765661696 -334856540715697205526472468824326144 1103682205847244409574966788358144 6105372087004793217195138575499264 -976571133696802504161112658620186624 4214475032314183036701905086578688 3817271874434183668237719801167872 -369812443653018340250408850705874944 5190792078496130037156360608546816 4413781101103497955062161984192512 -608821929831663917332341283973234688 5140414009416719357756603457601536 6742701469186845107631107304587264 -622380274176905169719894606016937984 9091588323053889627318468762140672 4174408163258312677850992420585472 -580853237732584267109589638900088832 7909734821555685070433124387651584 3059115379598390109169223731249152 -831385118550868609194910825127608320 1320440725037887454674910797889536 3403553315184934576110541796802560 -72020281842326952861964772644487168 4266896972834209651662654420287488 4517313732194344633923949094240256 -155059072047965601186447001101795328 2521065293657895265226226434834432 6420058493681843624576557772701696 -187313021878127779041964462144749568 8274220731818779640616318079598592 1074079175935075381963401847635968 -321357217597488234838291417269272576 4405836656292345093971548171141120 6442041947404633884530757240619008 -246676553871068171342787263168774144 8217208040238098980032952114610176 7197360629686550518307306248077312 -551637522694504929258646591976243200 4799596782721123787364068642258944 5892635220014142088155355435499520 -69164441890823215198608287143559168 7614387065682055576404401699422208 1640021306595396452296757459550208 -738973749604251344325865086788829184 6454694675427694001073775899049984 5415890451933331785916898156216320 -404223372954895131957870801169940480 3297449925069803715963287425253376 8532216147196305587760995613278208 -87157741360319475648025296176676864 3428770807518452674483737101074432 7820686983406922230895114650124288 -231629063109233268364523380225867776 3137603084046387305650979982016512 3249127329417870692028857179963392 -181996748402943036785792706811002880 8545482315898571816270966583984128 5124315942717235571591994205536256 -200712300035540242740733953961885696 9804885591778603326996194468560896 7763694746531517302917357518192640 -689002689899562587309316282530136064 3943006641346847018035001314770944 2519942845755300250810088782036992 -379559517621899849159163745178484736 7827502979823302130489771291574272 2482719911173725297818871189733376 -519940367857240490739252688672784384 1409616306626377320044406478209024 7600112895770943438163472877092864 -279687357180570145503275196843294720 7222203891871036103394496583041024 2278219102015198657830343843774464 -866411598310651205137684171107336192 7962832004413363465020672424542208 2759609993937540610103153428267008 -96831890519293359061412065526677504 4798032716934417229165553420075008 6769819950720400462814355956695040 -662260304135678936709419951665971200 7499348276419491815620701348429824 829003994914891992495407105048576 -89735032689377312687677951507955712 744192828478287103096897151172608 4611050815727622438788618407378944 -702986896248201451511536917871067136 6629603921574812294659589789450240 8824838805665755372097005611384832 -867748726336830088695993920191987712 3330278995884881796765116817997824 9442530554199736742166549718106112 -929873180978366281644368954956709888 4168982543203389390530650302316544 2473431780486420343897719337648128 -800513484771234376074288262140657664 5426756678891662301630713953255424 3584102310551819468491836834709504 -247941700204198820933108135205273600 9903549591472234212539036048818176 6185150757119555818796037133303808 -954372259416261154990283685896388608 9639547585020052566032796023259136 3890641964813149442710900402290688 -833874975122372437167773710211350528 732291900964953982626561586626560 8097964391962800256470611457474560 -726206366255838924087997448253865984 7946249467010777119192959122669568 6101246501700057487481368167317504 -495194096548957541132067048385413120 8332683401652558911602492058894336 8630895803064111845512940519161856 -27868640108668341292977578578018304 1316056797731042051717942541811712 2735480412114031792197980636839936 -33210986026948020194666403824926720 2713537935422833828730593110654976 3738181462469404714351226645381120 -939626291382161213032491411507773440 3833705019439711991635257296158720 396987653279828514963932338716672 -707079086999452984002898770301812736 4392972643621641862056932964040704 844762057244163470719094787932160 -332248937507300167671994551266967552 3765506100035274456313082471776256 2889046931006304887702083854139392 -125012743564593355833964576536264704 2472962796982870365370697778200576 2350565357035273350047359431606272 -512427322135520480212282252434866176 3218775698016704975331349764243456 7449589303165173526122411893719040 -265461344176500856839023492440522752 6374349955124838407786996361592832 933590333708017981805205003436032 -269115010425645291162898835481559040 816363132946076002183534111358976 9514414770362956063145374332747776 -133916178601728701852782070033547264 7591029157287579142994949178392576 1479552623530844304034852591632384 -654520767112009424582816678560137216 6017863507950243327531825563172864 2435179425917535911939966939168768 -540159601769213757182315231742787584 4094733435405528440531519356796928 6576239100349159102853467542126592 -778282829490462001556029303534125056 6865725583595192047342742008758272 3060344936499381467515906911371264 -858166361017408427226437722346356736 8647779321975201729132005230116864 6376685186280476587895258785775616 -584537463987978645545790885549047808 3470912887835001291532640639254528 2671104283526871846786342125043712 -781927910126047868274905750739877888 4693559054901841469073653885829120 3172821579963979775732229257297920 -612335400427850358514638301285056512 4150300127590346001071458765242368 1420948201295896866895344571514880 -756927729092684303626639240849260544 1269028288540110933095314754633728 2159049149080295621176359800274944 -589919756647213341350122654573527040 6367072561549591269146141319495680 6542088000324284554353032168472576 -714647878023941024225654609975181312 6946100968287595978762631419789312 621372160671154888352652112953344 -663373802110833363715865946108198912 1780877676869296445621827079766016 5424739509849617940658944108134400 -425304280712244068361684778664067072 8070918936443948868829371502166016 5931437979358386962336113848483840 -963904038991150070405968499755188224 8815842505968630243475343114502144 6216532457759058683758778456735744 -339171069518343800054473665355448320 7148591781781427055687432910405632 3498316869782331886121332171079680 -888932614841687952236016414639521792 4620738417590681380659642461323264 5225292640366686153544676187045888 -22442076466548549182537858233139200 9168432809279429268838828927352832 9879950426337355197845324339085312 -630034845276510153531637492579565568 2064541118147297274044552176467968 6448279834184746079610752945094656 -110902134425050388107641112875761664 5308422907422924477280456909258752 1907207007743380059074907122696192 -433719154196704254087712668743892992 6507325085310062280113232147382272 2952928242515785833486368515293184 -38726844745205329805486304335495168 4276258501062000880931951094005760 4694941146517002763357276359098368 -995882747863217479480277016449646592 8884024915792505451234284292538368 9394505625868147230877392155181056 -548242980318955791707901396009353216 4775854431440930093766023130906624 9449653423710184988409152598441984 -288166232483835659017546506696654848 6662915286453271221643429162254336 4737710968169280302740504318050304 -564424795450179101047944104967667712 2289362602948829563604212746551296 1071183038624718881179406461566976 -577605164371527464152709534075322368 1188850635391014129876770851127296 9489001156757935930506670673756160 -445603628617379252489130863266627584 9873264701607532574875041415561216 3818757472372897708753036165251072 -738456956247523947423137563460763648 2120166138141008713179448026857472 7716331746925335409303418650492928 -141047955035242755834200462618263552 6539405069547136170987167265325056 5600346144746363194658031545614336 -128723889999421676718973742286372864 6321383556670425351421179593752576 3620895725086594200617251361521664 -193434353164712276419575951327756288 2026251386325238822732545067581440 5303880602966920591829839768453120 -392808671902638955490572514732539904 2446673140905650578260753844797440 4745103996585504068544932410818560 -350144694274516467566658115040444416 9830333375907038220013527749361664 6886594198731163149990460175417344 -36100745334647732165818480337092608 8828894553215079518425674160275456 6772664552916188106948459169316864 -545633428456150253074618245896470528 7319733008187497357987454038048768 3379301992018078754619027724697600 -215796345983101459035444420204822528 7278413442669552917151398859112448 8985593494151765328137340260974592 -871692263712304406707720892966764544 2091636228336704726516545718583296 4965892426698928512231056863133696 -985790242401327550848029262388133888 2401456932621052949831705346179072 4770969241312570810667564137447424 -493460426981728472956019799503142912 8551546427317911738989360879501312 6493433378091281210793119725912064 -4407168833900983680856910471364608 3325578048764126379823525710004224 7848289780638801157211187495043072 -989983518311278694123088190757666816 5201571344048201232213075216564224 595055554994246856728790500900864 -693617407565005830962710092609224704 8073292542658482539453909097775104 868184375374611416310310934413312 -778534669410154295441536581866881024 5097128949714016685447199030509568 9760531004037430271143758977302528 -479492733825423688279976489059876864 7833606324364536409775973989351424 7225866291613239708467197357588480 -909060812199525076117182168529108992 4431348773378467182125574143344640 8825751256817313525330536774500352 -303287041563664637764476077021855744 4504279040381811445852550824198144 3399364855241948745119218366676992 -435044701161930183436706528213598208 6857791718389892889111568672882688 3272007776168580753925374805540864 -102553667487256020467750226484002816 7064591129003075989428371682492416 7949037468285114321885162232610816 -783320834980330164258912283628929024 430238608802430960722353040916480 8583475080406096796926876617539584 -68440754497052575748635798922067968 4228603320462732123411302005604352 5824738336627545937653896551858176 -253737941338477473926556783589982208 6022966644835089610993301740060672 3217039454931376332138447026257920 -92331598636226712395034243746496512 8111376209040362570504369562714112 3910574491937818558112745696264192 -311175893223097734288579129335873536 4139744807838732857781956691099648 5708125442316837599809219520888832 -533066051298712864481911968232374272 2377630522759622041477284160864256 4441849719603134834835875145187328 -619024398962715405392863577866502144 3277350567231052612033029032902656 7721081137598327115659665358192640 -687535051837245391348905593523929088 9310923991757242686371861245198336 2891911056118491025767191453630464 -545793606297142359985808413999235072 3493379080716837898608356452466688 5859546090914960269596056151392256 -118766705874591143768181832377434112 1426123108583160108576487612874752 952612785975587880040383681396736 -395065293937169024663277263894085632 2165488806172975016240342951264256 9859591794707619776070649018056704 -656388940335105636584034468724998144 6267370341353235095443252199817216 8045077399250082392134276561764352 -109455478712977527366954073242730496 795682230010651238133556234420224 6421179285214461353681527767040000 -753898471881982753590955168491372544 4103744642120437160696077451526144 9560468532497636553603650307489792 -911739846256869684615441306863271936 8043218714815597279826609239490560 9319644864190545861644616504180736 -338723049100973151122734871241293824 3018542576566984081670377001975808 5807788513722622550520137322070016 -675976926127895605320903481001771008 4305523012551099290442406010290176 4883065718548601392300905170206720 -502350482594821266669101020285501440 2086364929795415914944945893408768 3257978140401091210815167612846080 -660827789863493888947797131194793984 7843447362050523338944585637298176 5810078366864855064094386291736576 -331339006119589330032551200586465280 9637246022432556125231877934022656 9165099198708420131175414481551360 -795659141281506562919213772209913856 9626722275888271694126367014649856 1714312541182936287717656774049792 -220044009405622494691693561846431744 6168157553260874585515296477413376 1024916786828905259060756794572800 -466765296447834545505571233675083776 9508461774582942726155697217601536 6193003687590266836184146154356736 -806595971775196627488947501363363840 3810309907267307978681300476231680 367246335658806037620316023291904 -8686589796588947100312734554652672 9117153860355207004021185314816000 6573173257127402238929876962770944 -272142837315820029366073333251047424 3194661379318711935017595852292096 8621438741645299677012243326697472 -511897627813199171435339097860734976 824839297760513889510707301449728 6895445583791325493316022022701056 -825306830963040972538103594798284800 6853023182431111296993260726124544 8967818024892560891810041449938944 -855305800860816686548547200293535744 6171284406094921618843487776538624 8857007808280758947825701366005760 -609107561216813406496082077977411584 9790368814266051415091191971053568 7725714087570329138402392637702144 -1325770267149139834801813484208128 2030454133110896535195191389192192 7249342766749634581162964811776000 -272444423379052541160991378747949056 1359815644125005532496396187336704 2840197142261765542724458420109312 -533413405370733961722310425197936640 3995649442209823832623464797175808 1592901008235203016699792081289216 -939787518615887399907482453617410048 7499851610026526988855900750479360 24207942214100391053192398372864 -582001879122859594386776502468345856 3728694861843842521387245311623168 9483513784195146408360505071632384 -658154018110119360605482774589079552 3786172175783612519585886892982272 7819107938480759818921223882014720 -162352425977979241048619031736614912 4299754628096071147619220287651840 9217064368729634061690164895285248 -193089747632918845843114430268702720 2976133847979156068879796761788416 9789124675774890040396932632805376 -901047733365254806184619708294103040 2340291848931080971835998405132288 3445198331110620860489031607123968 -686789074143427835962214371465101312 8278573571007303399885682753142784 279415644959962712912168858157056 -411834073479720432851378389813035008 8243916432600905422633075113721856 6212676087361573245892633196232704 -451345807806470257688510778572800000 667569053695741081926700252528640 5186332655235573190352807370162176 -752659243111004540740685697329922048 4749933414779499275790411957796864 3734175595268875799793676589203456 -163539631013747594675435495736999936 2314329589722463078993993297559552 7427824671284125076500590798831616 -298208245286901098972920548308287488 714854790467425085832235833098240 5921556319300322938990424062164992 -570213154706066411625697338449723392 1961334560691718884245244750069760 9011219950473237484188349306503168 -888896040945780867471969120960905216 9611700264405993002641101454049280 4491574425637077538227548183330816 -450784191707948982180534804618936320 5728030932302094285267203396730880 4325161743754263384382796413796352 -115378034462594927066190627634937856 1471244425374724641735752013578240 6156279728523680862734478215217152 -878733614401400455686160344925863936 3941285813339400999588710332760064 1200749181953274962430958199898112 -516420868191355162383052970215342080 5102386834893688367964145072472064 1864768881139731522607154139758592 -433796144851732807835718348779290624 4177457783937978126480975060795392 8094264188186234879271066069368832 -221799260322652254983472799983599616 8959969908370999491884922324385792 131581132523476052867914859020288 -444844327934997741679946751149080576 6418390071217606047402791498940416 3808479184052082141851333790007296 -613392083617318323928539137337982976 15792398619906369563624181071872 2024064287297754556887942977028096 -388815926502755229372660263631716352 4328395949735411362248735638683648 3698694819933487474033481838755840 -10740804442422588430672214645276672 5289002847557348295030775356588032 5790659484385069922645144965742592 -998077248487709938269021065453764608 5671309958148371859827213008371712 2295825482485701867368968959819776 -483035169711040759032667984548069376 8847279788200985944827920365125632 408755157632253427104484392173568 -537851249056637117442111031019044864 1724746805783158946440558592131072 3342049794506788495986574827192320 -772299965424326029115063628141166592 9286236702799750898809278765727744 4707717617599677108560851181240320 -645544333499310868137329948278915072 1802642890536313654159150996783104 9519177887615527602408237127696384 -322623071500861287956567905095647232 6781935865461581381303698739691520 1498338625298135889339579403075584 -686296773388081677330451160276926464 8589502410172082964563320545214464 1874314633904662337287985813258240 -349617669062075879574065184914800640 3759302742938718466731565134118912 9090518928497319504342288475095040 -764629344715729957759483261499736064 5776374509189866355756291518889984 8138332362195226078857062458064896 -24659045282482508416303173281513472 6076635235226841898866300472524800 1621986666346992518372826323877888 -855317527447621482850053316541415424 4216919535450078048438311983251456 5382263071151508598860630353510400 -132753350536376936611821632371032064 8008196978815080817215140848992256 5110922848800890471779248015147008 -448784952534211262979111787138383872 6968075897772001977811229321723904 4074078691471848578620202424467456 -328266555688944009675589594053083136 951049323497728376375236133650432 4505528976813992403815018998530048 -976129345385529290980366337209008128 2201903363898661815788424572960768 1484917304646935582748045977059328 -552679773537057403498287545389678592 2381695517524228708413168496410624 4878823374824291067536804212113408 -710245793473020157382332871541260288 9683993496760157955506849697497088 4055630297861630397742102953852928 -785641288612421623925081350997016576 9725054924431354314998147461414912 476481635101639316592360551350272 -858952257996781941644965464489590784 4886891152780132321865015876386816 5840386746293544446391428061331456 -44868485777081740810261430989225984 6111214581215766531086368800505856 985839028450244753309539359522816 -606910984191849586266121160745811968 2471598937335090898836259562586112 5269006481721237494726518946922496 -850899847676222245251993386004512768 226714944517493189389223437795328 946295183288231227490723463954432 -866646136657416489604113626726137856 3344691284686213071798531627417600 3716229769243041111747570264178688 -967890180712233940841003637922594816 3829714891296467481427619688218624 7290213783550621205750475686674432 -334310455122153353980870816557957120 54715678875950887762331399356416 5590743823344299742250067237535744 -291773052961250228027971205398003712 9921512538096506802325063936770048 3462685848487509455925029504024576 -800872333718518884230535033246449664 8716847894967612135003814667223040 8596250564444487882028640911753216 -830977265850900483964348601261359104 4808941620184079026653753698680832 1755935581119480248592454412926976 -108717375997532342058011138090598400 6480108683529585523922182751649792 4103015875161603485337854572232704 -161503994920688845803279233713176576 7073553459279733790582124947963904 4727023390432897679426421065252864 -924984967972838498112642767170568192 9651534752410959551856953834602496 1202092504012671105370859218403328 -11898283713178456905151080438956032 656954322393991127133949020602368 6567120703200958243361454303477760 -611681386920050824663434617753174016 8855952051315834766404401779179520 9667750942204906919038885795201024 -445731624135226801690085549051740160 6889695448169945707277670575767552 7551235607925062227340215007051776 -825773422263035995841730692306173952 868099136355170875263219977420800 9791010217612726868745606756564992 -919128988686194442126672550546112512 9281473645459199597514034176327680 8603294310595104549500003144433664 -230670535116703411664045849752633344 8058959252892320159671649707229184 664865764910281394562915207479296 -281814781413452134326593003808882688 9672765304860526100640170671865856 7554318539460939765749711984656384 -76852216801295190524363867248656384 6999004928042182822518369858617344 32054652619217176551806843486208 -699475117289617945054261869480509440 333694685666172983952802681192448 665388805670401874326900478836736 -868667158532413494238838614382346240 4673944359711905086513463599038464 6891585979036380956294786301558784 -519137572312792901121650199600562176 2753583582146575852328870150668288 8889488828023211161704826335657984 -907865184101291606375633124579082240 184852611167667858700564997079040 7422104893095140298920096547471360 -722615915739718301195222898274467840 1519921913944188707947914236788736 1771194161321876086123647335399424 -213599449985838545184469741993984000 7610416907155075406850343076626432 188980893537862351510468514807808 -516470521554122538458935853014056960 3275939323196989207884088024760320 6669578697556683615806829518389248 -261680348114442359462294494939971584 7221654355920119655812261373542400 1903675588850780196741016614600704 -647262416896215724082230329855705088 9847862499647868110824299690983424 929939353320194529738520281481216 -118774157754925582056925582717878272 1149027881406602377226103650516992 7530744283820342926622493348200448 -683023651221787396308464748606783488 2715836771712968474197879987109888 8967663595920525938121221670436864 -667825277487701202131020557565558784 4028034630961342813407215938961408 5422045825991369126393512164589568 -418692662505418607358437651296288768 7585287954215305072276823252926464 3674245189542182930479054915108864 -485939249569766642817262400858750976 7555338395962592167112357871353856 4299849561030660200111289705431040 -583010718208003766327212794378715136 6925215535009713484779377123131392 2185450553181603998969198452670464 -993901366321586597674519404990169088 4850182274206577244459122401738752 5756065346545787958277005327204352 -166971019177114976152959824538107904 6843170736152180264151021820837888 7707796436076357218234835205619712 -740897217736938084316004630778609664 6465322124741866124163545886097408 6332096590350328387666651989934080 -119138001398957068370473831268089856 8966809913172902939224671434833920 2394058476185392139242888612544512 -450618264664255731135687074632433664 4114526124305572501481895791427584 1861614546070606846625971208978432 -314680656749809818543316893639376896 3221824168938283546795999825494016 4841180066057622219097095815561216 -408782093820779913459867869673160704 1446014250365512590773135492513792 5957157460542731359540134153289728 -711771158002732452366876573232529408 872760881034146078919376173531136 7218867220417810559390852115857408 -483933448582538206673745739423678464 4074987883690653881056365549453312 6861157390309653119364586495016960 -158255177339159406975622939221688320 5748058984908761440749463925686272 2754798393295377169986417946787840 -204840051330323222057531392701497344 6368888824446899361155787006148608 6530961606175238027349650246205440 -612205844853537729122284680012365824 5356455053625827426310516941783040 4563045355057025400003259149582336 -280889429471453868776962252108464128 3398491528305673827842903978803200 484640821543722138350879678398464 -688449319277048268910478179088465920 4076416894521768697256207179579392 7394655373473008526883690366631936 -792804397337929285933794386457395200 3319878898755660604124253034381312 9220629555939749783355978120429568 -890674060011433987985986705554407424 943163521161644758014688269172736 732306066535374601376945850548224 -947800222812511603482817870159675392 9396336100434041936059665349607424 8684697566363244034819098706706432 -716876770333191353693666277393956864 8304782376837246441689072789356544 8978721711987172441406288018014208 -32418354557768742524689905174446080 3748836611987867865579606369107968 5494881345745023089933407733415936 -608026937955004563140527344758816768 1948342299573602887592019029393408 6591707556030339241809635644014592 -291868403792354029532542263040671744 1610491698799003272335160718131200 4051588026638356336271545677643776 -646489353406927571052980238377025536 938365714564120493533329381916672 9278131518358833133321269572272128 -86089295703948253310780459618140160 6918168654251013567559759722184704 2945212730929485640283826784567296 -997357359492096663754536341211185152 2345928102778417630063912827224064 5263814063995280330557667879682048 -798753974327775875164719453204119552 7719684056082270891849328950771712 5884857730241737357877753770147840 -260602731340058096120424311650516992 9351497657508263525844910239383552 8741193953018519988069507836936192 -852152840329174933222823893152038912 7665904095297038909692754798837760 7587120312277626295920390848905216 -960946794908647637561273214191009792 4777360241540414170910933404090368 3195171975291030373973326934573056 -980633158559762941873632009357623296 4983744431159119514946237223665664 9572648052562990461605402527137792 -206543420363179473134841818479853568 9011718746408156605861103042297856 6904995694648303078151255748509696 -728972437117703624661375262321016832 4813601622557559374362548029620224 7232464927559724727120693062270976 -137907646267216485758649678392459264 2366266054024641034596375926407168 3406837869737621783972850889129984 -513520698526675875272729510604177408 2145421658582929998910169982959616 7517262647457835615791975483047936 -740245802333371326903912317619011584 7556441842822738073236504208998400 188767249462026757050063399157760 -694110483366103164968295784683405312 9181914169364904166690307170107392 384483226203556265336169211887616 -626969491713542233879306698928160768 9467925662612753334300235718983680 8866334536652784688446149404655616 -513537386385201119004386511099527168 8696162260966145632710151410548736 9079087546354828036170809127993344 -463414058622923123748530137310691328 6696324012763769855510500463345664 2571328105526935908018720620937216 -717602162089535021197315860194131968 1235123682933566068237076373962752 9734838357285347066425297646649344 -783846410391931563271108902554435584 7783790696537560850270141976412160 4841439613073227385006217689563136 -62364381673411106368292516790272000 3856545743322906123696790671720448 9428433014928043065671130814611456 -273798375434518124819347999771590656 9999100382028290594901750204858368 9516330456320589595697828125999104 -464249731335787710402877114799882240 8368749037876978386107791736569856 7676187757830096430852530025529344 -810237352313413012470315625901719552 9122474478982198710568820676755456 9448229787091312702928136123187200 -161088943987312048499181384124858368 7720094960426254952894949891244032 6144493140245697954276313799852032 -7147496960064357382447638828285952 1127105423482250637204515306078208 5756005726183675914795655916158976 -88747723733634382185366119522500608 5866780576415806623934088659075072 4363170849023718181102225654284288 -236432122334340164248338490015612928 7733854821023403596744705890582528 5453980729825265626454242208251904 -492033649636886912102978046243373056 1451057206625156511570812364390400 6795277866306611416376536368939008 -669232481637572538254560234601185280 6604162610817914428178867981123584 8077194547427729404035003498627072 -45810360106244859141400054588243968 1977081048661829635665567688949760 1409373321394328649981013503508480 -986701503209029362791386591786958848 4564324259671423816961085514186752 2129186027151493400615726828486656 -388642973597032521968420574839439360 6562747880582317773390580669218816 1305723219512458489006065918672896 -269392904543447557633199182937325568 8101393967006647499482268935651328 7807485878348272426824968123187200 -782403853035198180885857720818728960 1750185431684247804275796838711296 6432034349176769638298084335157248 -412944818614376230526788696040013824 9434521404905113513441978633682944 2480105688312577408779751048347648 -205991057573026064904813118524227584 9568998066928473889367453996154880 728066995557668632767014451019776 -627289533028434470161004762016776192 1304392082830095764742456043634688 8765429607801551295390818358001664 -84344331232910805497840780657557504 1077448396878472381349628850733056 5142220616788021168901400188420096 -863921113759511845579571442942476288 2790840893011128368071354485833728 6288417958766468370556616177614848 -846339165735894672567631294360453120 6445002505212398667404845426671616 6831791980574527664029166846607360 -110235090215718710916820584617738240 4964238045480448149711649245233152 7665556668900150707421361872044032 -856020581518594164992213581836582912 5332150258040786471443459311927296 1518032714020113422051756757483520 -901954513044624711048634364422258688 4783405230645051849118952770764800 3622708251671166137175255176708096 -567103791477289933611512646275694592 8040246263325881613012882375573504 5471968470776392979490434275344384 -658342546451072203351246362671841280 3034046337111615448182518309715968 5449250142144188025084729557516288 -94985486502354585890602503970488320 8971865358714315125930529810022400 1075656876105026757805097076391936 -507633753000725737400850324064829440 2331305174079847260220870994427904 9871648285533024173291959870291968 -722058134994520315210186154991157248 1871016199371812906776959037472768 6613400345387301353283071443468288 -893491025625168425979794196996816896 6727633711217791447871907600269312 8040355344964624899334874115080192 -820064216858210081638251579477852160 5373408537669404871131360328155136 4223443693167247441362337889517568 -950966737129451159714197348284366848 2751669798155833118983043644653568 2257022276441592875847892858830848 -959295539166570717966667026031181824 7341697698755731430237145749520384 5631425135385719027123673039372288 -766812122283556866533069478074253312 3725669596500192923661103660007424 6619906192910589779401873817600000 -967987035469260581981147794755289088 9450762608599329663373137263198208 624382360939826954384363850039296 -293822051308434061392555450772226048 6761177027313552849191249616306176 4240879501954320884453881277317120 -338639803794591101157019431009779712 92794021644381021643092103528448 5156215461856982800409524294385664 -586550589109478936016800767295881216 6260628660452366051593038698905600 9986566487866939718352054429679616 -500819570518802574281702473184837632 6331739356475069363218226444500992 653010666766833859774391743676416 -94067191247664592904571107938402304 5664675020980931414424889266798592 6644490631056368458281556499234816 -511736368374190753891479151706112000 6397618897344376154090045830070272 799634264028648760841815403266048 -842308366584117738902515173394743296 9100646320003472663495739447443456 5390968101725741684844560105078784 -689510777566819576704724197609308160 2295862063036105307236437420146688 8433813403091247862956424997896192 -41124204691835169351684282711539712 1842433090373941176038704296230912 6986043550887026012963178832461824 -120745326295700437591228835447177216 8692239454541134191129213477584896 3705723405760375201773842857984000 -254089168489119815252745659470577664 9477226370121551532193047231070208 7578074689442386707408358138183680 -467225900543439820376079099016249344 4610203703048497868617418742431744 8744217334865744220255859693846528 -865695844785803241182461758994907136 7031438196529181854595763427868672 5137825253260530092709082392690688 -740429758305483406900628496333144064 7955119412518350177372249316655104 7097442702337862589986703807610880 -477050967639955142944738443737956352 8241003913087062427987334821576704 1278333719405924367201124466294784 -598335961846476542105120900600823808 730353242816658298228156076654592 4716855233759540461830473840066560 -668740991198204022386641170511953920 8303360909305056909043196158279680 9357391643944038664147668949794816 -410069637339703699486543476785414144 3315835207602092111720249821233152 6637463454398338968027064545837056 -124481861833577090570793667363078144 1919295102456229185260027606204416 2458553636684800651408749541457920 -70472915464524135877253289367044096 2281227275992315439695492116643840 2774183613311845431339241202253824 -781724242943004742366492836338073600 9103289463500456906866630043107328 7030247530456210801423818378182656 -91490465332876711310889359169814528 6533378938689818042732335733932032 2453229665480506833250094023704576 -75754512638070382152068967597867008 1111928009797508119589182475599872 1742608473478382876166463164514304 -247357559173821695900318380180111360 4366992546942514108136199095844864 6930102514989950601986230703882240 -313292846828446285128795685568643072 64950957768792717763039421530112 8012531547647079797579251380649984 -409474163070348542170099064745492480 2543330726242539032435965460217856 1037276018334572705558985952985088 -198988821838719028760055697981308928 7322375021845073106373372901588992 6697134115058891379896930936029184 -623437440734964805251207348730462208 1634699400071799356251260493758464 152394932089245945485807826501632 -710837434988800145527150870855155712 4373510740952445277049645617381376 6057949875347220734514474252238848 -925143134898992201903635585304625152 9446599397392092529652308625063936 6237133555799304378411416054398976 -353866710364979773412749871857795072 7482953779697474642657373239377920 1760248476418860821783872840663040 -697514944145081718053505289057992704 4377466518992202863166848472449024 5622092426440188821687371749654528 -836350590428520558213936279145414656 1165680931995116596785816841224192 1640988413655759385912088643764224 -165078732130294831756169267789168640 3981179889422162365031896959680512 802015943125086773224155918630912 -422927447202665859554884598146007040 238384629976571634703982609301504 8424545481512298210216394709008384 -195823862363165757002576702499454976 1275298939727197701165869105676288 5798719602426343803207282472255488 -361598006822785376562850613352726528 7045268984727809297489087963332608 283202808538587677475296524632064 -384966559289449042461777618869944320 142332691766429270904866366029824 2810388220384663814085156867670016 -300484504461770660180228923038105600 6480179334854030757065207058530304 1016232955459722299274093811204096 -800665736268778287306056350027481088 7561303158047478104381987634544640 2081866649439370379886073802129408 -86441564737433340096125389273825280 5503504898187839056780702563434496 6482701734813388026859896075976704 -622620231858718317278785096178991104 8625766279895082588341251017277440 7871397020759585643578813239525376 -327557728345333798588748570642350080 4680932154348083208577032040480768 5301886314075191629401258893246464 -703969126616319550799998673685053440 1526684583789920850425275505180672 8237816689286301504301824546439168 -957243792889031155829729841666588672 564887587867129253338863584149504 2389938765599961318648714505486336 -837522925609425421842569333936488448 1810898049160259353914343426097152 7750578071579883562645208969510912 -21096415892410291668895041708883968 5824506707785447202981635581542400 3003331147363607809819327468666880 -428007093975776113911083510043508736 8538576139136526212695116501483520 26765576519437584443992229019648 -317790624498157971519122588284485632 5818780450120098810271346683019264 6245645228184343001370607984050176 -67890645228632903636972059179876352 6476340292262757818903639229464576 6660200018050338179787416653529088 -789715312114357611123564391616741376 6720642207896580757531052631654400 1273883504971506801618340978622464 -91621674354298960812080838987481088 1495592500559948400481392150970368 4323322393498867601708315102412800 -951300301404362032209206785012137984 2623149441600020438843961485819904 1749467496188997925608587484200960 -673505495362776542817132492858851328 5696177460501448189344924651487232 6919408207523676344876104899624960 -601821256303957442712532175072264192 9932716810598550153719890487279616 4183198575647115719105628533161984 -883210924059414907910122123995119616 5699088071943572643269349874860032 2548819184150772121503868162932736 -408323567810585623248703336424144896 2137268675340176794035337046261760 1307336829458908492720170260758528 -743265927226425051549251003119304704 2538535102545550899643992923701248 5179949978143164352261310065410048 -983891374220963851042751838423089152 9573199594886784315576998619512832 8044524226735805062046482469748736 -340757054597114438425771076638212096 6544466406674118931157143504551936 8234964557605437487897172489797632 -377963844631497673790773307954429952 4371869656479943412137296444522496 9269597850065974957599529231187968 -986938683515212080814653054241472512 1292550072620652792619583454314496 4413299054241234139092817534779392 -948191428444195864608987800722735104 5110348171572625804866595500064768 2382606493490085256364543033999360 -226151407968992418393740115978485760 4352639335106466474751315394166784 9540207141027687990724199452770304 -710413854877343414394785655506862080 7566596193085817990699360901398528 3973731458993157350088685767360512 -390241020185080402484705200657399808 1076332264290220813606538543366144 4848576024926570813285476312547328 -931033466299896182002918937954615296 3896314820733767404078583909449728 9025850623573686911564351866404864 -176167742506008574832710833355620352 7731120267591962387471787188289536 1631510919054549348078083242983424 -330074911939200142737676428208242688 3335672267552583655686982156156928 4843293178049624228071422702911488 -678318198949266139952154400908115968 706667030339997059979190164520960 6469611977177126240596372534329344 -374247260456376299929868847839969280 5071392843781681971902863881797632 6385346948015967675134201328304128 -892416592459471394029917761265729536 9988319650447757100991901429923840 306401226810760131619670588391424 -363328971400035613820847154010259456 7904025434235243678492747630641152 1915493880765584260030578257035264 -161007200616976858623495032860049408 2149525551884579870171777732706304 5305679895769948139505747234914304 -935914601308187336127710379326308352 3623918753878501270433928434417664 2093116422831272591585989502173184 -282486754384285432143605007686565888 6445603933989816071123000096718848 5777446167925879711512530211831808 -526257356702414095414610778778501120 3890931953748460724384013737787392 2179275112810339186268009450700800 -52493046639469823070947861250179072 2741658342342982751614482922864640 3473105563781877596172113418387456 -860166738834513489897447887609004032 7452788101325095464841663064571904 4382997726917640706715812292984832 -383724985900904372939831757152190464 2599376930937967028323692188794880 5603947666909966824683220540325888 -216279722367341499667051797251358720 2758207215834039268832254799904768 9949386309407395820204704978173952 -421391180507099955719483707564752896 3168965895758452586268081931681792 602892293602982619718298135166976 -189308635330023613115740560373579776 4978967886731078476580790669934592 4133880115012789330130627914104832 -540138353961881819744241727949504512 4209999042613455189281834673373184 8128483068994849494037439247810560 -817408129450755249693338892893159424 5406295974682520358144968350498816 2080123963662619862245249613037568 -515714951024257885911878097579278336 7836295901988467971257824624771072 5813379351167409438136463798566912 -969496925319601945974279897113165824 3278926287207617076031007292915712 9234733631547413442191465985867776 -95718113447272960735703621441683456 9974396575781209545399682671312896 5686791581594253596329942202712064 -731814544477707386279732320747388928 195673783936004099823970579120128 2004312231531225801174854613860352 -658747517344734741444264384303988736 779569977822070756881211085291520 3721195217071269017255365792759808 -605581249155455425875363731504889856 1089443650965134061366886495420416 7265051200431851218334552957124608 -716548294305931408827682238551293952 6036569832199436721172283490566144 6637706276916579697571293193830400 -293812875135601505097508132612997120 9617087906951308366255224698961920 915856280471244898426229400535040 -149919205133902389161250922449338368 7238744580365176034332173219659776 7635562171624873353912215440195584 -579202532064475999310535459168321536 6566106015307974696996798239604736 1326429191603559210153981153116160 -646252790650222498032061533961322496 1031966441431351823272483116548096 7867770437149331837910433688190976 -303562485253222004623726868179189760 3694008369915592695515589533237248 4589987557558268236679406222835712 -825756020239185529657403683578576896 5212310541386460504833859164045312 7949660294318117431566593232470016 -94712069372872691833575148569493504 9568187545561191258354308876337152 8684780765277277714285230641119232 -902351863681908662647048017486544896 5323853135340965215099644412952576 416542947681067450002588007661568 -308038744443434839131297895969456128 5328554360342955696646352590077952 9618078729253897058522463318573056 -308225833108770521214239701693628416 3481885494710002438191076113121280 2026637896944066964022016652345344 -561855890068160750833382386158272512 7291009152303202984330375607615488 5140101048290744915431221874393088 -283322016419146248285298723227959296 6639359654224514594408882541428736 1001640935299401985867602733301760 -278271980855151542192987701248000000 7402832802643913260949048670552064 8554395393710571588949544712273920 -783723701103314251687008520426749952 7406226652147946094612693152432128 7523451941785758545059466602086400 -8248927905926307188642087838941184 4506390494555628120918581277884416 6507520299367978521503404419710976 -622824914544273005181216863134154752 5685951042036042478562941606035456 6346350962516221991050307853877248 -836318513916054369656097667731685376 1914622572411838485178110342856704 8615523244390710613291443018530816 -272196626294029054031796644740071424 6392957679195962679115869843357696 2009477867027916805831770415038464 -106141348297896607395693165889454080 1731012632259655724260091976744960 4250235083341137248214110915526656 -382603079128518060760904066045837312 1547262763290711942373544220950528 5410365669833050728932086527295488 -973364660218874327764747191813406720 3845259992689446806086833806508032 3541128879584521209177093907152896 -190102878846199147258846029186859008 1728028369971101087951297074692096 4604251381094802205573828334059520 -565624753005421828680396138778460160 8757801251015433227222856012660736 9042607518123017747433683219906560 -11570298724661000002485060710170624 6112406696450938253992192578158592 2984997060704423046044948210122752 -875015542090270221751353272965267456 6746966301617009852721524109213696 6098778056195484601639165575036928 -970912150743829579583390030369914880 6915863794341618154271266041757696 6932129910582529197604757028470784 -235572416928621673201464349988749312 1009319269131276399765046517825536 2517966785778540686525229032275968 -529783861835208190316570102445637632 8473677904630532141150234552041472 6037985481871928288369590438723584 -204464786416424592438871312836853760 6024117647952566701680137655549952 3060260207144238431958155359420416 -397034900736538900086894011627864064 2669774528385662331682365212983296 4563140925032989809298789774655488 -961771716356849695746404807386071040 6751567498801613305411464316583936 9668042800822792349125363556679680 -707878875446604129502209007366963200 446379787731673880496493553516544 2410858598131910746017178765492224 -351242866626291347108136199953317888 8987559011307614083166137336463360 9196367530290588218155452482977792 -760886808173425722351369383682506752 4174648388460468512122087208386560 3518484006800619828230698618060800 -634345169913138642297388928375717888 9724158315138866251053441805713408 1042301373563384863854449282514944 -70090708274537684978912855886659584 9921575735109959490344354024783872 5771292640579325995893832802107392 -600663208249051901963855595392991232 5857616340740480728216052785217536 4115623932886092029408525273792512 -483308990618507543498121842448662528 9998958684882528738405998397489152 3882776368533009272386763272224768 -199650297191815342962131557668618240 1277941257289509305589994860052480 5931491898476440824737993521627136 -40876898950490065344623271437402112 5914617921528131308372021712257024 9500717388458974911232201717710848 -913153131771907449745403302933168128 5239012771991491702505512458256384 6720038617741506382432504918310912 -200089944082180389643969584236068864 8606124698069889403861125744820224 6598274030878699624309701893685248 -987744036373650919670149616817405952 580797027443457864764223104483328 5121674957545497311147914279518208 -938042200367520120071721743787491328 9341185705275917553872514135883776 7307210574822083888702752318029824 -601512550988051063767991763679051776 1224465114820956284679884327878656 8148250610512718747064215202168832 -910258969241542779659896664214208512 9072008403144427287607858746621952 2450568973155683410392416304234496 -145832910186271675796231915160207360 574645124182560244035006102503424 4933358895559064266157884111323136 -204341115300766878072118014031953920 5445094807372516108028684462456832 857544353895559256982976880181248 -535129717539429232360411949659324416 4397274437285231373019600660725760 2193140154415490133450396578873344 -158893875798413913123244094179508224 7487172451225315223544544163266560 2298065135956351586109210868318208 -161018422060065622274878349735100416 1694781442456318269129893202624512 890502466808408540635116056084480 -669673714964734125294095503521218560 9370921731567809198769093822382080 8713475272296333879402920752971776 -643852050653589812733644889596624896 5930105365886122575237655266590720 58082475978507792374910590910464 -222209494290416737187138661511069696 7575466181639146198962500041441280 5492950711328050008615773022453760 -41629745010063329969988863367577600 8501387682035515314532515085025280 1805191289836020603409175916052480 -979566412821017668253316283023491072 4863921027639024388911819365810176 3772994287064326153319568736518144 -50061692190984650109482235682881536 3936798131059674312825740059475968 2598100100161504639908046834761728 -294205775469832273587066140721414144 7252722039320108732715683742220288 3238071181334957202825201072472064 -326841320460518400160120239554560000 4328237053764716788412665269583872 9059246728568725644014271965691904 -491807632653374774523213201562140672 9845852112538713298925957622530048 6783322511615125544415793048977408 -472914747742582121541313744886300672 5222669208679398118593657839812608 5254550198051852666949911120445440 -523297691027069820978458208069746688 1995198952236912865142235451097088 1832046698301423394184036733681664 -792332635439668785578885713351409664 8879650831300762833156836165681152 9435274065082045053611221998108672 -96226191759439490620334886493356032 2019694365899935847034726624788480 9870635748256260251938615371759616 -14574688231139521033449399339974656 8437660532378275062965528432738304 9569056681775838392001659993587712 -870613362303505210369114865229889536 1147771014141580046713863320633344 3886767061595959759469143656497152 -426173300162079672642199074591735808 9976018625478731261561373554900992 5210364315363948811658160670507008 -708241431696213097573191375013281792 7298186016105788920121672786247680 1838521149145043130455566103609344 -39888751308562361349588209899667456 9410885447355443397297235078152192 9790958845211965520269314682257408 -662968821557144360272791128571379712 6412418531856447083443155296583680 836266728673469255156706335260672 -316163748181569090589713801074966528 3391750096054134762718879362842624 3456535507952036328871220184350720 -847153427625138731601234414553530368 7850434636260967041495297423310848 8213433864844103485333377428488192 -605916081199799787839824942902280192 5365650193182790026615819901861888 4973591333455915618352139989942272 -94877211550528745026306014705614848 3454584256115982168502197679030272 8307103732513349506649860926865408 -538026280657643042545183228172435456 7914146997120260372907042835267584 2809417046927338950895085310443520 -42722961610133135487160947750993920 4938042428938084856957497077923840 4116410818841845504305108948615168 -133712733470200901808339783444856832 751386885000980897017586627117056 7684609170038769000300292551475200 -795504405930691129115525166279950336 3374288949543378154544353492598784 1299503484869028925066523116044288 -139731207760004043842942458142916608 9192321481313025502775481835978752 8126722570322879696426026206756864 -115773907698963947906372047191670784 4371540908750304901950295435640832 6221924533570502338831109165416448 -205707164905867740072281394617778176 486186170274038575324724425916416 9500484359605254939660084926480384 -499572865332357698662987216870965248 7539995640563321924529074695307264 5164016315264512246017019634253824 -451676581210648724917793930059186176 9587137987934254246648594642763776 257363781121083603976851596247040 -930246576058331566046179106484125696 8010048247327716623785519988342784 2795331175659354397325554813501440 -19711545592834582712437828652892160 4540466264393011883927435279859712 8276518875812130025549176149901312 -32194471629950374488949047225745408 7097351524186472820770104540135424 8350978638925281633267427720560640 -995871330893620874567150242124267520 6880058818105948405697795317563392 7479128971745882299988394565959680 -851588467250143622844951065733890048 7797040607361003989014393649102848 7119131623348396622269151885393920 -771079544302333331120435192133582848 1975549636771281428262744750030848 5716262652769777089257729945501696 -635467687334983737821181691782234112 7867430796595876921012029898096640 3312115527007294955587883669389312 -804924008029857871436226435341090816 2328255435180342257899472479584256 4697273769595119278284075748556800 -825654338391324637332973378391244800 1230365089539260660446926559248384 5077803339298220815363634494439424 -214603649836505083528087608936628224 3858703940185018027724579041968128 6299762262887059580780389783830528 -391672812011917490502911977236463616 7950383318591338698005317964267520 7030952883025142288678065656561664 -645856742442726196466655850672422912 2234208664871894424416283223130112 8691128277092963326902293298675712 -429523301652708709513717190546685952 7829125420965283671946830691696640 2498034685435060476817478248300544 -23451725562734072123005008867229696 2437845050411349658873555035619328 7680683987319296172694292781858816 -174517647647618684400247460402823168 2163271893109922126158068906459136 7388555571850584716367889826840576 -419120594619140583061446849160282112 9752283298120275041346975623544832 2478305041596101680270446721761280 -384666275190808543945373515373346816 3719868555096593135745634066759680 6208822360378343453523071543017472 -145864496735063190844503490375450624 4732794333814870360440056129257472 8372934917370144986170502869417984 -532764041062374680231214698092036096 4587848392418720881262675340820480 7333888179918889952320194355396608 -906421468315942571320604207410577408 8860322588232152699171035624243200 8624414733001415400603542278373376 -865030769321064416703405344239386624 3366447551990271618506947743973376 969757913530566501500325306826752 -798372449707704363165136157681909760 6334762457388646965885126555205632 1865903391542908203080387999563776 -511195140536500320372413089049477120 1839868159970793171262016650739712 7118282768363775610883521520861184 -747702327401636089628506576239198208 8650066382803225620811821606764544 5015505175896805663579478018752512 -386478999393503310694059816771387392 6187420261410717343607704950669312 9207472852611663190851629818576896 -655045985216141948200028793603096576 1845824769343076578971428669358080 1673629468365556280884287386943488 -154848556894287423571189941433008128 3253003139848643285842188491030528 2391563988294713270939996565536768 -367584333289538416748583824102785024 4982329357167771847453506833219584 5965149193043207044286887812399104 -311099202525251459981218206604853248 4888345627263795638294002664472576 8860140403800420119455647722897408 -578440141629247673588963508549058560 6371342921748569196658158209073152 7774388552042520844799207249281024 -194599241985297927591357549819985920 8733098310540381436913086938218496 9873354591862318107515283686031360 -587750724556116178982265056902774784 5203418016580898789193449503457280 1494909567641372844063025266688 -576551473099314491482824818307366912 4518513851242162162997251658481664 4675869067206579955120135211057152 -940116180509628111942598721590525952 4603838838851308310496510289641472 2379249754119432470814007643602944 -684957988544913502951936929598275584 6530663874442250916230405933760512 3487193643973901666937505453178880 -364147073247809672629351371126079488 6438490901189644885857862626050048 279024724046094461848131404300288 -945523020055586958653403998451662848 6044668013685840851878040580390912 2165345515621673441922899402293248 -437243545508665518440229998264582144 5328355689301747854158665049178112 336145322932140085788888166039552 -458846679918087438004293261196263424 6734630479844631818938739186466816 1183833201091737736801660654583808 -823881183371672006185342661906399232 3490030074986623941917938794102784 5294865610788698012761873805475840 -154402613022064271197061321301426176 2285194528641859632591481333612544 3429426017275406581192747026219008 -806742833222707597902359171849781248 5976722123431503933791756160598016 9660726026673910249571622177472512 -984914790569003639718983127204364288 1451012801842178852786917945114624 3351800532023068092317252016144384 -981262117582050602081225052843409408 6656154366622060725374493090906112 1537793983269395387295650843459584 -813586124530038083242031034245578752 431840647442133027526525960847360 4612913423763940498792974926217216 -765878902728400876891619742657282048 465287162368944104396363449499648 8053416258743334215966133908930560 -324122488878469922939770263539023872 138610630220559646712366903590912 3377492607750619308028539699200000 -497939647263917576237119919263580160 2566307726961082892972480348028928 4602421471448611747884041005694976 -161422739363892682082913879106519040 1334381672511673951744584310587392 5128094021794385631807897241387008 -543250343360162268262427003482800128 3439228024390660688139298623455232 2467681620289749112060099526918144 -73543838958795122291615292247244800 3897217112799847638975169507098624 4536424106732963159607881754476544 -976828559497971678199720326228606976 6188100750583533370293642778902528 638797983847995267649931512381440 -34046107590776200551628629526708224 5663173464567505194408638236590080 3838977817741993277827529807233024 -566092318247555244183050618318880768 7174160924965987856964009110536192 3999562190902930668753599172968448 -575429120988570285121175817566552064 4649767154010021370466245437030400 5200524567178761853162955825217536 -154803743042388423062456334188281856 8955551187313214900641912456216576 959978172495340221660375858282496 -372283085877284325437231395267149824 4234628599361872786061012750041088 8257702513560029849259624403828736 -373666150753491819209049160047132672 537111208668398192907688123301888 2772894838254640930557915515846656 -988657235710539314755202092187516928 5238674162976285262002529979334656 9017390317484584201409773443219456 -455491473473774953824658257510137856 2433786223509344248998571276238848 119403230438951272860091173306368 -794009627322364454081159057610113024 6965847815608099979808136721596416 6011504916021642786576055889035264 -788633392103035882248387496014512128 1605082262897029313843485109911552 2974198950718885247543728045817856 -923411037198390123709105296549871616 4327323778282684180287616360382464 1887628824034588724907049238921216 -193632751143766276047120661166948352 8331258010518538737102935444946944 146011683972306163222250424107008 -763100772347134526337173176377671680 5057114653571776636698011371569152 1048499316454356034584319879020544 -602500743255295321117257648838803456 4004474204702113221507783359201280 8162135798261794921928027921186816 -181505084212191263549769962498293760 9608730840065963566400066092531712 5639520965152954946985893566611456 -892866853208410270357801246675435520 8978245832987510458958596448190464 6587283020165270555875399983693824 -84218574056755504147486775944675328 2344005212763321876896981933096960 7067589317369961004535948649693184 -189837426555594953804145747350781952 4224436431250578726423381468512256 2288963196185720903510569085042688 -979511984967819109049601099187617792 6967171405939123261530061555105792 7705145172151085078484356664655872 -44226333036973208729800636452831232 9006709368124519322544838430162944 1256778290625556070032467501776896 -98286312173856758919453498706755584 8229126014623999555955482198802432 9308870977507332566768643781689344 -646432891178826420064045537190477824 9578762713656817623691639383916544 1853512066404174166120797210411008 -352500418457919381339514216099348480 8445364070451928634384213950332928 8136622471505563412798041950781440 -874153682683349679780285313030553600 1138217607566908302744952588206080 2248157372009622703506985427402752 -447150923379661928982602463618007040 9290740656772151316003641402327040 9240684429164826914197372254814208 -391796806095209292211985790871273472 86277992064522154033661784096768 7679082963351578142920118254960640 -246739334390956080015253128018395136 5039196649022484671857017638354944 8482897919949245588332987459567616 -188991438866270984043903011698769920 6678246422999412927056351445647360 690352158933087801507713734672384 -904820380435439538409524425159344128 4406149399449104709659430890766336 8535936778050443110391794490146816 -647785154821892309444448327233961984 3396337847592802706178646015475712 9529856560430506944654945596473344 -461312220399600519831988150338584576 29241336592287138677285101502464 4867786565421092574315696753737728 -263654340036168281045586778152501248 7793228334789350374246670074380288 3555161146400625246867221175599104 -81766457624601560261561112131010560 6908918829553341389224104708538368 6052205101728433760773095431340032 -255798899524271438248639948168101888 9912584869537099436252144102014976 8357649304684950358775108349198336 -850598656806016009862684177437032448 8817382018368786235695136241614848 667156812304570613282125966737408 -741583202556397154103305167221817344 3735327353647567800975389586620416 4561460883715626000797671821934592 -837924878670697291353719545870155776 6700104841109375116919244056428544 3388465272933439770410772842151936 -143838710189921080900472805775114240 9987901756963110622290453754544128 5664565790442230540019030114172928 -183370035956626099139517289976561664 9551030877379580788821848343183360 5141281916042582147012147550355456 -950349547024473108196876065219543040 7508904329460829472963837682515968 9602250341027796228194079982223360 -581519067382757829713877710913142784 5117649145303993772353796691722240 6532322515451615148010903665901568 -925090851691905418580778308444618752 4126505290936244669592157189832704 9353864790351261322854340969365504 -530738247456954022374255224726487040 1427665471605344038414511002091520 414500579053857571589236249853952 -491664283446876557579377688098897920 8782444710871088949863111416872960 5574803039291293871071356524691456 -637401467989058299957411177065086976 7174933823483178343041421463781376 7789566458525295635904922149453824 -407193915185893382139797164651446272 8728050796689940488299218187845632 1280288260854846530456205031112704 -611828727596142281016325914165772288 5861582135070589844865535394709504 3057589443273660051214377169190912 -950393780586996799958363148604407808 1530138136539175047941454672429056 1666691070593364650265885037035520 -534757068830071917588974774276587520 422330554200171092669598586109952 8619356814468577543380121451233280 -151020150256101098666855611074871296 7363521435229765379299596386172928 79699460820406847192069832704000 -520482586967246212271683493819318272 9037632376379639745213840396124160 5115775682833000239181474213920768 -975717435425399072860913108514766848 4279900292542362136921534229381120 959294524139144743625707994742784 -46855964008596545879390430412406784 802949143729416199866163816038400 9897070520073388239642747283177472 -886340091889767322241579875395698688 9202722565486527073214394630406144 7208734431572335219311326372298752 -388567168665759098574331374733361152 1790834943391885396820394770432000 7156250007858517175446887926333440 -213159472922884506770060221561700352 7679315534743992615557569756266496 7692763424311860489176584770551808 -326782341098795294095019585463910400 5458917622438614049764724839546880 4075988901863663385263927537434624 -969849691521716444638746178616295424 8003217784488593543698863779479552 5742132887973654624101574325043200 -787283800634794360077677333881815040 3318058070558531720456301730332672 161432142801116093673518147829760 -516463937500312025143822099377291264 6732783421972301025256179557728256 3916407570114877416357797998624768 -332245610667572729084497332694679552 7498275983694511785671574608150528 4818113084492158012324782733787136 -347648453010784721603963373307822080 6857059548254965297255531679842304 2461576630139978929057076772601856 -166297140492249927837492229194121216 967151881771161210873731277127680 8588763904804133976199439587475456 -215781477652918311828310993443749888 6485945003773133874463090742919168 9816929441369868864159240968732672 -717292585882161236874499712020905984 139477945903215055170529075920896 7769420780122826586239973592137728 -919189246087249440902865772127191040 2809211248606955366565812740554752 7292177392634754878822471513931776 -451772662157251064204014185823076352 5104013121411005159213735153238016 7066835838967380445146866107023360 -323279980919940101206073160796995584 1618973735280331333333457863442432 8808749442784725704706793842671616 -238147063073058799343723713124106240 9086107474461430089517213197271040 461829449578179581182920246689792 -999210166301572022450497809492738048 1717877607120800602547343295774720 4975633757338531229962321677778944 -489126677541697333237008458141663232 5038709739060489499747651172696064 8625481781943639289643350750134272 -355080871925476074630985798444384256 6384246182959219500971580027043840 9376453142044406847281549084196864 -611835397675383001857598540732170240 7065023984760914386942930251153408 8900005947639390220413960066170880 -606510765853234256299754739250233344 3941889883926870820716618859937792 7281040025831195054341964668338176 -446204792123817876790337834101768192 7717259086624214026256017132617728 2330079138574789948524170106109952 -534927939815308351314754553862160384 1871959218215955401881475610574848 6418924832184430250720724657373184 -49851590780253935549081025698070528 5355050456438549506120570879606784 555779712016962997155275267375104 -348279242601444561064983104420052992 5856810792983744954961855665668096 6895915069250148492914328869011456 -596873875005281770586349226411687936 2502529720672204666435783821885440 5809065863320621318508580312186880 -675105562220753027709974086739296256 2895900903328090635837634225635328 9637490441408751308046270669520896 -204268294616597906277299927400841216 8822291258324224447300220720513024 9114034028946136733299074398158848 -102453400474944169167623965223419904 3146783110981989179928038191661056 2627692303266702790332317691805696 -758243153543014731111489143081795584 8996794975943800403420802451505152 209422139243249975999933664198656 -102403974843966828128865296500916224 8193014639621827435866481357750272 622027596106348106117215019859968 -2330022413282913333819072894205952 5601063889900102410322849684258816 7048271890346883104331668031275008 -670552153804170276182427599441494016 6362742528785511453325922041593856 57614785028174978935164724314112 -93048837232140240486954264724242432 7728967546295672091656489015443456 1644570228666278718214808300158976 -584383062179631781952320027985182720 344420549473512955033377480638464 777741121237005918283205313560576 -695357969118314570919934331891744768 5177742926365677951343136732086272 2022691255608776973353855903334400 -682461245812281548463718747095433216 6895411746404550666048210944917504 9400255265639080584437641489940480 -675118836443989056521177116918677504 7203747558860819750048156079882240 5452634796635931641732525050560512 -204649784576315368393791470074593280 2869249627655859449337874288214016 3731890740312477554552377859637248 -648084182496065554633536505506693120 8298522122623528062584750272937984 2577860489682577267984374784065536 -426318945060556788731207236834033664 2429270893228319837688358064095232 802894206886965078195288200445952 -107775655939439698118719836493185024 7319698854530347685492593675730944 6397919573343943345944934039420928 -475468887235216041436516358499074048 8811688139770777305775775661686784 1047258367826688975097104445734912 -834031132513691908619737707650744320 8094908769186753344443603396591616 9447306343366564599419376100179968 -165393539816360046051419464214249472 7816480208613446404704926294867968 2561269629144557841156670278860800 -702179047726328737572144043582816256 339023087084184609519241554558976 1536885207070339050111115385110528 -162579338388090787125432763495219200 8007381483837254787207561549447168 8244059247220436929040144335372288 -885344729919581168297929384147288064 2503426962349455888256171623055360 5450015881097883812684284806823936 -300200117081054281514196853348892672 7835301599731499460180632122949632 9751246658813438311434886538330112 -700347389813525513671436714576445440 676319230500315664178164212432896 3348040549827196659427228862382080 -794412953963748108427181620279115776 6165938472715337847229070062911488 5587787815418301882281781853421568 -498266435488649727823245976623120384 2643566436375380548994576152526848 7116650722294581899291416336531456 -515484149280416088175663864201871360 6254202396802626268094476939427840 9048854351266090333724843635113984 -559202811138006755148859365369315328 3872655806506124749357694750556160 3900812806342315380721955037511680 -856119156283431125228989803550212096 3905225625053094357974774777380864 1147578501805736028355498883416064 -354085852387653461227788267490902016 9118449199376082768473926093766656 7869206866954709830604907392008192 -896015750045066447637227859091652608 6342453955932811700645172906819584 181645680213821952745442023309312 -903755030356866584016768751535915008 1735348171269671723920739169992704 6826742035174222766727543998382080 -587725079511330095287677110018113536 1051570452609447175214558951243776 5356768152890319804507675246460928 -794309601948472730304880461553336320 9977398684697512484525100337463296 7176194807743954696245572276322304 -554742577166329177076234120534687744 5690747258280436716639498442637312 9256667947816985112256522028580864 -299734149620683716298351760445014016 7741964642885814416123500649512960 9426323556365667027086132069269504 -261168799121636024542149658871332864 1141983192705675592281885845225472 7833488615685620295305706107568128 -710667568161108521144420030509744128 1509350205884263779240176764583936 5928228762702216897880885232140288 -540721865937555285143381403915780096 1355660387579832178035638063333376 6433747702954543576518775644618752 -426700445755368364630809894941884416 6729920544919363512328211868418048 910281264966850726724684115607552 -689431662821059420230754256415621120 8610322744469621971320657466621952 1327453826717633301502395548696576 -90174659184621706449371771898429440 195749477940252204300475691958272 3471774904479496735410896618127360 -17284038002898575554633201954586624 2595307610365629665565916358770688 3180922165372547726715898921222144 -39171743509382463991588603759165440 2220723296697278065635366883295232 6961617440739824366130489066520576 -992914314847844759300020422156746752 7376738457321571405648392259371008 1843414914110578767576796772696064 -783761855450807180243063398027231232 2069305910084319811560232967995392 3188652915509071098789086560780288 -602198641008316491029128879271837696 5769871550677746224338403925688320 2926913043524368386355409792794624 -115337179570070505183250058097721344 1039563453740792199341530041810944 5850920595063699852162857927966720 -226765343010022433795136471103963136 4580990547093896872620991247810560 5858747071785169850148685799751680 -812080788803552236624375216395517952 2837758301980786049141827528818688 3263976141220516975631831765352448 -356066331137470233210335467554209792 1319201857957182061069435100200960 3695087828308892283153499641872384 -497247055540455816148243753555984384 4299630404604064355233064827224064 8881321415142658534632500089585664 -782929995706269158412247066260537344 1233997099564751453347002670120960 9048605713940565509489389194969088 -99465104737577532376397423407267840 7634715284623987662451004529442816 643272920487596919517468065529856 -874543529610027564713090731284103168 4633438020335729802825269493366784 8775712820582329099070675095650304 -376222080024256833878318933447016448 5700217889669849960194215935737856 7422679424475861248506225540202496 -854784718532385294862436806162382848 4052689069576339575039284048035840 3615285759222278479897366781493248 -542037895822265626468621630765531136 1705428695620536380361247777882112 6108838336243592584427164328263680 -23960402409261335984208641307705344 7374476249128223322324794641219584 4691726007595150432113753677889536 -256950123068606152848982697381462016 7394164733303105517298122114465792 4450870776842171833104324018307072 -120368419744854023866872626839289856 5063546822620936481404859453538304 9885365112126908427074987569971200 -112916414140090968442335858102632448 2866040391081013308545294038728704 2918943551080416566748030791843840 -608854580808554367433694716423569408 7567778052538550393079500015403008 9510794580293542393247884111773696 -710702673241059824108630893827981312 3870416687275062973099744079904768 7077282152254334705721943370235904 -857482664989909321139850854105350144 3036950728488147647297685372796928 3733811527257733922680456469282816 -144668124416357085232178256758702080 5881687878741155303111936316538880 8567177779349902419486666798399488 -617729488529402424312630106736558080 9768021380071841950244241326211072 619382426317807858003820580700160 -618847103875013328322321699846488064 6459179333610147751560646257278976 338294487495770857435179950014464 -962166783417252553148579539931103232 101995451940395838994956159025152 1326901371075429083674913261223936 -578038789862344164805389866307158016 2265736821350901877219431712555008 2482707116383018956591969576419328 -185970642443332670706499370920968192 2290492371524526006543175141818368 2791264463164542158513755838742528 -438151497111752977917148352521175040 1208352394409632237547852031590400 3910478398483702976243253007876096 -896793567164469567906648312493637632 7098521087751356014624650374938624 1290434774675700492968150173745152 -480821054026269010560614685179117568 9151624176908379347667619487416320 7679309778244529565972398543470592 -189381627005567943438183037709320192 4345453922490207714558909802872832 9123374606618208679788421643763712 -331478031998965618829656678532644864 6894001282206994194654167685922816 8016859024536631251809374421647360 -843241592734356621255655596092293120 776319088785113002835971271557120 8168476505173502767759224188436480 -399738503920927824799528241671962624 6649074399081185521920024963448832 6537708586114268080614883490529280 -108563988776888580218860926419337216 877397865118795109825837875068928 782528644424386842718959965306880 -405629222844707466372699129603162112 6808565057686269766359689019260928 9882024578432083698316547769499648 -323474230093386814394348657061134336 6068655864631057637519923045466112 6645614276263433183908871377256448 -711353285838539959666874627058040832 3752451499966708961147742169595904 1505835810893139263535964114386944 -577618363609363773995026426827374592 2405480497549374884965019967029248 2290931797350862544552708129423360 -974068322179297968198269534728093696 4159381746137606976238865526816768 4234122762083298519601817784942592 -139780915408114535468519347443466240 1265086094284803477430736431087616 9552186732835349583436615583268864 -561264686525524490500702309737037824 1687456211690098216323291415576576 3622024184242807967246803831619584 -403114137731372833590235105144602624 1823448075271565391010210458370048 48068778957301815463579263959040 -74289793802420482245100564968898560 476051341323158175104090607976448 2410354873080414882795482391773184 -382516961980793079314422102457581568 8793852139883464044638208983564288 2286148980654233065482875100463104 -249516176912604441593336449004994560 9481393363739693265745958274072576 52163216231695123090172599599104 -830664456659639382385735964219670528 1837019931973084296834445247250432 3606349328536596526404747187453952 -477481576678384903074861726516117504 407706887106650035524320475742208 5397485766152695669051613692035072 -607070188395639491285004829788733440 5559339176537636958026344777646080 8201989425447725921234262972956672 -472574799690251385467801036560269312 5735900564299080368386262423306240 9791002442530734388506212918362112 -251690895480777504146870642724044800 9824270524756600099618639713402880 1984882629702869828132832463028224 -526297442534398112276394820698636288 8687597039384634821141771547836416 6411452230656093459282880517636096 -546125625390693634717903048503459840 3679536603547279800030757247778816 8994608814810015929618721857863680 -449942097492366798745762251801624576 7894708511893380999682579587137536 1742592700688569737200892955852800 -728387606922329119963367487941115904 9887024301189713547846458818953216 782461577460309044374939667267584 -997811610025688787338467671514546176 2016565439227952208703602011668480 5380009605165754991394114737537024 -313831544647284836413641976960778240 1597782463499040245781637164433408 299709045575665894255718622560256 -803725005401636648035456485049761792 6330607371266308486319784165638144 2813057682544786741126152692170752 -915375526213036218895958433484242944 3399446336425776276248683358453760 826961093652293652691703887298560 -146641780805738549293429149929570304 6750431464062154722130922469064704 8764710851028239103207178237902848 -962789533488570628389528805446778880 5425821920218520508183483397439488 7258939480552189113305111499636736 -737269832792238223923641997877837824 5612098309194990606235479150952448 6729803628286607507799208085159936 -572209434937963601641557672048197632 3602585814183352547574155657084928 4527411352710683454232448603258880 -876422671094482281777769225513861120 7547255374799913517373088174440448 327214378573714997207613147447296 -345853278973123971515648069905416192 8335462731392758069852808243314688 9811695578389573675896069674762240 -110924802892882542900958879385911296 2357207186646415675607899265040384 7529991987460167624574263156015104 -96247545072514049625942147247112192 495207843031573859757868298797056 9454191248801890408638864831807488 -678480949749486768697449539107291136 919997426701404232024561645780992 2302151437384408568952063306760192 -121673714315074727776762963964198912 437945329030553426181305852231680 6869511769286775904508046104068096 -787954621001963070875387378859507712 1899884394211922419030671587540992 7620792028773167020903160103305216 -604326447244059007728162296024793088 8145673619057202312974330855686144 3720595572040904588434679445585920 -90504281525399074761086122594402304 3555061870792042716512500217544704 6952040932993212129103248506224640 -270809195310582402067648642994405376 3953679949106821983070402480439296 8592903212031834169357909352251392 -339378310897893391467133971220922368 8787124420397652442372870479282176 7730526603135101270545449485336576 -673942679870058257599784084832256000 9413856600187117481165523467108352 6648206315927662710327762720129024 -379925904474948837109616476168388608 5500784912532719529032696167661568 7162245039836075448953905942102016 -118616538142732907922166589136306176 9553729685352529783027145505767424 807755976520595872826964570013696 -56302570322751606203467070957420544 6127554861019816971323091623870464 5109921044686549175605862013599744 -934708574197940458213835525312217088 5420261065627933891613414859472896 4038979893739782812132555744083968 -88778101098606485980978678878699520 42438063640215469853564290990080 2899316860854956563822812122316800 -271264479751930705679966800676126720 6393969832737293709550097233084416 9915030092597479989854325935439872 -381240590834694106041815732754317312 7039231641723887199459965082271744 1021525724982468992478953919741952 -361100509858973886413793545934602240 4585262230526206675956210369298432 658365947111075569057296308764672 -548412981487792579168924200601649152 6468844818293133716220362134388736 491754469862391321550335997116416 -732772918504102885108107117353500672 9884238872656170947549625812254720 6456637129800744205393996499910656 -83914300028785125196551531641438208 2610074158095529343909441222737920 7457707059770971760193549381926912 -802548997113565516259756674276917248 9461638466508374437691781348851712 1689051350177074278839164315107328 -158524330802201044195535116316966912 8398075596621443182932956465332224 5274582406043416508049775864578048 -829199959570568857843690264655298560 8636392714537271322919368952643584 2035225003922584709037780459585536 -56729326372744916902616584796766208 3019265943134084011188190432985088 9238645873628636499474416771530752 -305141385274477041400047048962605056 9884748797854585583316614078529536 6911543303540316399861130451746816 -566127881085898362798661107665862656 3867062732509593604449646785069056 8265913711048449866196153121374208 -348573427394869870656019826347081728 6359871480549507418322779873738752 9878684449995567706136892640591872 -977375826675259180773400998337052672 8296886114563358163909509856100352 866777104092960536807270105743360 -875021128581618597074179890127831040 3119944413200099320161269079605248 5393120743191338548658649956352000 -452299895926105334371868812999917568 1779712508181400321451675734769664 4202003441766553154726350202863616 -906113368899611484716531116475940864 2774072513090571561441522230493184 4214184406337494668843073633517568 -976854553425527414394016035099377664 5557981509327750482582451653705728 573012849382713855033162311139328 -815718107941595196964967465695051776 4901017973452005008286250667343872 2188442673435262165270829377519616 -994285737477737598356506710724575232 5032360357562229738717224089157632 4576592081242636315169919627952128 -726828490802593028703502687558172672 4086825400721947314947095938465792 3189010239976468395597581850247168 -154819633775101846347138709564948480 948603008987078676064450555936768 1258541902382736154036229665456128 -798702021437954384711523639350001664 7633263650000913207888909615235072 4026937425301132541362515738624 -117775766447122781793593108170014720 24346283730147310015693709115392 3061936197482692738485154996027392 -951037679394727748014234145688387584 7878588129963287215388771838066688 3708205536402974845604137734766592 -235934657575811273703031800833507328 6034921885963350722263793612619776 2297734899227159388822499410051072 -763555745021138640718728552115077120 6194223972700685381045849790873600 9414742316655787985477321734750208 -941410838371082753879749503116902400 3862978411274923965796075542937600 9010732119483807031459478300000256 -858702598443039533923921220820008960 3146995936832177268378078925553664 658385252058261398078622969888768 -903726953594016224584779369054994432 2103314361255882359087098123780096 8539619635550332860062934167977984 -306315938241693887490666770460573696 2251704577505886921932871512883200 1459423064868677814190461245456384 -419548576878194287222032961986625536 3980089832952544217328461184761856 6624507371624726645503471925592064 -930337832674107331627663618897608704 3058292929212430107891099305508864 7586122767954169445468847265021952 -804589491587933024615132730421673984 9878252509160339153570160044933120 6636628078792181335796137041330176 -902199422643068104781316120738004992 6515131033600387396242416825532416 626240359182355043269131882201088 -134526206208719668932249357496877056 9960554230089688481199395713318912 5773512310619859580393318053314560 -718019937028007555833553790229807104 3441455842487181144506708736868352 6869094038515934772252377389989888 -927454023150435673008790745691193344 626039824563401010055549810638848 5903512688194993685792093584228352 -687087496993093547924353991065993216 3189511980177964139241465662406656 875704571549419605278341094965248 -729545514201265719328441234123390976 5402626697914667876975425844412416 1140136492545274736357532365750272 -54424718687790654746511021438926848 756602720169256137660390248022016 1926577719895549182713445490884608 -139727239605798655068330726015369216 7703614986796908497637501466312704 683968177077810071301654400991232 -174896161335318278794981189707890688 422544869049912291758597465964544 7570971821832521758455606317940736 -64778123391496668083364134133956608 1139437073003466176909986374877184 776990932447295811738378119938048 -826019524950448981446817494645866496 5228712931410309135267244682510336 6583924843998058827968401700290560 -897493795094483524967013216010895360 7293122112342838146149509618466816 4430690069853283392401689574113280 -74142329985473447330825784132632576 4895282678831563716612250348290048 3597666775906779937917299501039616 -852694613795886791626741390206042112 5161909748765716067047270346915840 1234519271500430244313226350166016 -894839271273633314647752928084885504 8311069046411062600809230419099648 7518304288002920484794358699130880 -559793967600254933449304930290499584 6623042721189320899314522615971840 2182256420070877836623959736451072 -621564093688399691284199107930882048 3067773160872442457961955065856000 8061325757851179024002880171409408 -97475514065233753944345706049306624 1127399016696606150589924662837248 9016052114883274021869325519945728 -520483197921640890775364269739343872 7444168576890096747030781813063680 1778509154776121387380273496195072 -688375899593323050900116194832941056 4562279941530942034677518733148160 2823947190255127751882282310303744 -559455748605888896356944496157523968 5080481476044895657603861135228928 157610940732766725218436384817152 -2641356658700762711998763196481536 7509723557698978364126467266183168 1402174848471769058412500457881600 -981527687188559179319624526603485184 5634972426817505860217335986520064 9651414615234592206534771138887680 -577236132028921574998142627916808192 2961557000352213548935030971039744 1376473539342787403911550812028928 -626255703098211907403708118041886720 4692703020435047953490557873946624 4626122233231127504608824821547008 -41854700180807678254831365307498496 7098889470808788358886918994264064 834634831504230537575083198644224 -292945581518527174883637235841761280 7763928329543502446230621787258880 7556824308567480707071655286931456 -743824508322637950854377919785992192 4637396880780581946785379146268672 9120012879823158395813265187799040 -913190481933309733240393661006479360 6929112919223731230431950611152896 6910959957830327559263934901911552 -432927156227175853738714786328215552 9087298272568093642889256400584704 1524424917657250488026101058633728 -928316858794306537223478022630277120 8528339526248911485564828835119104 1406903759864196468667631485845504 -26325721883782967829155332168351744 6973689354352135440170901565341696 7117964816760990375836927284740096 -347928085991254564223027202259681280 2339989049942998318604906278158336 9683080361020843629036645742804992 -503494098302811316243517717325283328 7878071868083641116904177769906176 1708624851970404748749240484757504 -71922876546136041618518653318201344 2553815518994373373097418428514304 5352084498239046365720054817882112 -166858767020929311289299172704911360 4845003394166901045786514953338880 352963833455022376641501994156032 -670347683205168442954629518517600256 9114871704068468119860667060584448 3027262412805426869850308039671808 -428831628671234005642149151933202432 6118386043178406348984485479972864 530538793083890037894896278306816 -870167359700991531067150927470264320 3126971462481052256138331913453568 2438961546816357320622470439370752 -58322952407950975772011416942280704 8812220968090593251955382297821184 1845963304253046698628175385067520 -417143646050385767189278637684686848 9954272821164888939186307184197632 3610935746080492365368468613103616 -465018748460267773495978230716301312 4806055242805716422723657395077120 1353019572830925621952836202921984 -117686307584564768650665350488129536 8911613332537162370574253673152512 5098743446955373811625902456438784 -443137636972557100147774445699727360 662108844045239333527628499910656 1228524446730647433461992658042880 -908663471992399453823528369536368640 2829214259685647846281482042605568 2934945577976990446687285204221952 -379637085501360341930234651254718464 6566208654255298414713877741699072 4885691710767033734764688788422656 -212894439285370815279479091456114688 4015816881684635402833455159967744 3228662549654527800769724897296384 -803874000904841507896728621380796416 3450739589058937528034052183949312 4974590021432633333836585281519616 -477765852423471514896627821996670976 2046515198583612258548411631927296 1315654133639380021918870620078080 -937993793608933827270907813571854336 6380355451696809216185166232289280 4325936307798666138744756608434176 -584437087939785018625502952057470976 1754680615821348140826089066856448 4108450417004195141609340734013440 -520637077561030739509934744802426880 4716677946160069990483398777372672 7617392138783612943220557985349632 -103410987340490337185105152202244096 7215972814651511279954760965292032 6719785059008431462793983096258560 -703945612867219605286744492802572288 4436289738493603258912851867205632 8942134659088288077623325211230208 -446722685018610860753514261884436480 1605099328240059176543567529115648 2518756516251496086907612097937408 -418000320898743256517956884131479552 6991910841029054435887641469648896 5490854877991678760668991445794816 -907688707914525583157568248423120896 9747130581738956231971184333291520 6868141411692167677407351900471296 -584787643865478740205418871118626816 7118657431398822177304923416297472 148081995348310730123195271086080 -937383614490879897258446945725186048 5197641032713404287700104499953664 4832546555632274037441318900203520 -140623869314874318403730272702955520 1232111282898093287035367292141568 2575695041216622903369650032082944 -802935100087688598254541479855783936 5480291236708832017471437946224640 1467488277792749382886921152233472 -684507223567066666832003303575912448 2986492099252342988005710860648448 25383124139932562709613008388096 -510591475541676939804274767064727552 9893627433366760966683124083720192 2402866253165349132653599200903168 -389289775071385420623450302947786752 9553800124812586778125854123753472 8528968392767436992186722077900800 -56847630753757614872433811861274624 8083670712949143147268112830693376 6975641714504722249865228240027648 -35046034114976048989876651250679808 7534863787197999149252011586748416 3762139382763415108998970273169408 -862827857749204628302118369835876352 4547066223572829354864885519876096 4124586293842865559111720864055296 -82273536689366024564501560636211200 3522527306509729648260837921521664 8431215551672144653839137933099008 -213551142908043623833273055110496256 6140453280653612918077663595200512 8718988946655996420874670021017600 -356803666317055190268475194151534592 6576648928660928318288551781335040 2872575819252605986967408963747840 -27006975923319275032863492880203776 6850640428750667496403828815691776 628912490780235416046117666684928 -252604931048778959579201922672885760 9531578476835807230246179901014016 2409969969680979117606008675893248 -731675116810222075939279908267622400 7767806855510200065469255136575488 5001913906789702036060907916754944 -649349042672051832565618728811626496 1027466589192642560166774922280960 867339288987041914132892619898880 -169813989453499301017662287704489984 2251212953344114234772460471844864 439590917442643472731571386056704 -431858436528758120032397250426568704 7819123953815076059789423649226752 5199673644461033131210584535072768 -728051368322458288244651604890877952 9223482192628299538667754747854848 8080433404644222805839658264559616 -706776043015618361319492996938334208 2518160088712328263431632317317120 7944367857932010239126987440390144 -873121070682164846980655527221002240 8185822135063121149540088275795968 5569303762285114965694966159900672 -639575949470350849516300432970874880 7990469335985413389836388063510528 5193114376722547687160834670198784 -652051285611171022110363804403499008 157219032774617808125973768437760 6498550826394091109755563309793280 -297922326364603362517677755651325952 3161369264132032959743065134727168 480728412092080310715272224833536 -874807285208209068344674114546434048 3638518501574434112337730221375488 9534188435249459627557183169757184 -198986234774516630197752620854018048 2505976377925345707109788371910656 1163297849834647944317106965708800 -991034305231930092975687711636586496 9967794353870158907891935862587392 1880451665484504654239498793648128 -236866810103120392407527598166376448 1818444307639849457565226598662144 9430198507129236373839595792498688 -116339227729930141744925510603898880 2349770986088412177938351516549120 4806599184970977473009509566775296 -196676875914519072441746954699931648 4973632209133933449031305316532224 7326755037759737297668137551921152 -376940133076159207358759455967674368 8544479615332086108816592101965824 6120485146208970676401478089834496 -526129612841616683371457607869923328 7178557175788382308626036017856512 5157509362477101582565743160983552 -202899237144068699310653089221967872 9863196437665458897482181632851968 8740065171487105364080475211038720 -566441781230266345201184615044218880 1400116375522306453705828180426752 1761093565858843185912318514954240 -438641874517954447503350318489403392 1809883835594845241446617304793088 7132624375160544771302965091762176 -563170740214326621476907644090318848 527092264812026545799735422222336 8861344785691534812086631988723712 -380625714361744303884422519709499392 4486048410895598842554337942568960 1624315660570774220479189783412736 -86213841241212637788901852730884096 9092230710392433317395845577965568 3183907423862622047251765292695552 -284149341825077135727805652975747072 6486458149515158698101753314803712 513329561301875601671307885805568 -586011566798326157512768789430665216 6594035911608544376638341208080384 6321468161700902244694332096380928 -272890183374670573870138453200470016 4068738972053031626143364303290368 4720815337607029320230320493035520 -823605411964597097872861751496671232 8274272219386966095565929834348544 5207314168153718319696872076214272 -615571386974366181380263499077255168 4723068952492738209937694308433920 8513786074541407449439458063024128 -146127621128405996230745187453763584 85467591969491974691756917653504 9835621652251634510295117202456576 -446780191889562231766970611045236736 5988046149374480586668143691169792 6638837645002641294003625898541056 -714399131692170834271651747258695680 5977609117035339022467820733595648 4154959010885854047242858235166720 -121557921547668980412148280276811776 7098722414416466915187764838268928 1653138474345063907211168836485120 -219536310336308888990203796416102400 6155833126267585979515199622742016 4839647794499870764634405288804352 -636290273071097086040673807820128256 4013917501152205200019179945590784 6375361152302002483129607851606016 -918749018907508993240060853152120832 5204809667025103809231677227532288 7258250173997690171929258616684544 -461842279699541355829125257862578176 4994814661929343870183528093188096 5825465884759034344371650794881024 -585887160047154661085729924753391616 6402582523036411880539193123799040 2860166599939743118988359977926656 -236685888828380756561356625700454400 2945065194401150549140590034944000 4856129743821979474192524575244288 -822640616900679823485996144433037312 2424809730714679843966965713469440 3277279874465053151049976316428288 -897049366043536754012597881596280832 9195695444083902451465604151902208 9116847524553138741230617294274560 -444480403320355784491590485612167168 9724856675514722602816023065264128 893935443580137183976628521271296 -746997947135875599842524175328608256 7392495698372784029120162997207040 2764474396223986533328194258337792 -363890255641027942336731843462692864 4979134091165223607596328645820416 2601224174495194844928983213015040 -680506457197762907322217774064861184 5122783267505373996951330329985024 8523227710120899070363709718134784 -876191207785718255858362536383479808 5497814468864094793582605844348928 1557813424097955609651840863436800 -574956169226543322660465794120417280 5472918382064234472449405423190016 3144794474183735506980390326763520 -261854846201524701522937133374898176 4672624541030346752411530478747648 654029680467547957845751226171392 -770644881838816767120537481641984000 8921365743289679440183473200955392 9411116116780967070728059292221440 -835134374707873282223313952719241216 3555664126952345563575755007328256 34958007800887470861075261423616 -326915220752827905956248904819277824 2627725520478366772219684518363136 1485817677879861083475739634827264 -909810918608765344649254838701391872 757774784353265130442340058529792 1223956187428262687729352295055360 -918502684813490296047203067810021376 5786010925941261894317575430471680 6387678570235950865754269427957760 -441844356526289532064612592023240704 6236876193132449013281144264720384 5227448336609673988027317491859456 -73731428322899628560723397023105024 7397148670164046001950845273374720 2020402777902870792115680570245120 -830943020927322509488790506708140032 4581577911654466538129339434663936 1047821452225327913885118951849984 -646636562501880951511319616841318400 7007433238799380113722641678860288 9274597998000592502349338102464512 -844007398184878111317921161786949632 7160109775327271670599921036165120 1226701644444957361852379104804864 -231399499994485859345400357067948032 4406807832802082098536706708865024 337615448933364774059348269727744 -858927513128478628324615640557027328 7306622043637161105223797685878784 662214022000829351369984572391424 -167706361237234320914150621332897792 4391017987005294015867780415356928 9140630191248257352251992872845312 -811043608573537972827582891628167168 2874567166930171621721451349934080 7142167644172616027861666655895552 -369460825144425048431215862429515776 5503734075561398342888610106179584 2805136389504368051478107651047424 -89396601608458402473939757634158592 9389317650565555358752761796624384 1141803762199009980341553335369728 -238520582208687808951966302673567744 5448445394142634684462029516832768 9966082406208825877635255907647488 -898789101795890209524980959085068288 189028397592198755301113517309952 4645011446574473124808239953739776 -476763575921949702492059347693076480 4885767885203676780867396449599488 387827798667640201186122496212992 -459630734053730968370365231364308992 2761953964248364006997172391247872 3515809270177627914034703717367808 -986172496366766179396416466893930496 6298896617388230765233578633592832 423992139476113603745889266958336 -570544175932219653206689132859883520 661936416493087068139171941974016 4100952913690603685442007232151552 -553284213272696211855385234316984320 4432108832610984093069841038049280 6118936409564623840051421610246144 -636136536197551844640600923414986752 1877795610581173997042230487941120 3178884492474649929686754246262784 -943703891070479848194950664619556864 3454444755684609534319702577250304 2216531803499779415478168776081408 -297614769817286170892858283786240000 2121106822132246932402692690018304 8517537641561497174529282280521728 -512476142941990195790371993937772544 8181298312828030281039040965771264 7003539003007301446630767155216384 -375079190901626223373155740386590720 4528761749846264341265577066627072 3087093355634439840104409127190528 -458924426908686543252473301415493632 3209198385858298394975209214967808 3976314223814402498108262889553920 -35562931597442251778792821174042624 6514037762691985072799737616269312 8837993596265513819025645148045312 -173814155138307043519824866050048000 1962076862284423113106881177976832 768543206232099351621674792386560 -389625464512095359810037583267758080 8071442142970291015754676915142656 9159439879025871916172708149198848 -975415170932263000035982979744399360 6978417019289515723993465523011584 5035111362266412230447321858441216 -563348787192651727989018128910647296 2995919894689027133029333463990272 8030263315181529911408422966788096 -943201044237004490028336415886016512 4148801538414589808885547155849216 7826523750350336428158597239668736 -430449061817639332190147977001566208 9005179096834820415260582521864192 6515870691778837708989726556422144 -656774054026789244090301878651322368 5792647189394448662761197598146560 6921709631972654849805246267392000 -128715468012024116803575113318400000 2720218115517578757856258993160192 9601012309039004077001084267134976 -156362178582085416618527454014734336 357909546502463622231571484901376 8501999477106184081630766582202368 -878322753834004022382602810885668864 3511783250728349777275930261061632 7822102600795097147299158737027072 -981549491360006692319148727647338496 8711653013407470912589432820334592 3554748452204763928173957951258624 -413422493646434814757259048936013824 3643000350576414153046398727094272 1283729966020319585449878736601088 -191466124855597418430907630326120448 8986628349711551388994970237009920 403740359038204952516171977981952 -862718917557640808917006361053626368 6724036795795564566727309542817792 8072645322900322645325200287072256 -781401025079703988626426477842268160 4551270740291686807485941733654528 5913643401598330922164113173905408 -248672368674422635627621489737465856 4480577859527133429579547754364928 6212232796241223940601337136283648 -579937011208214780825380851223101440 4087983210347598482977600353337344 4799315764724060307476122257326080 -547277833307324997035056738982690816 4500713582999488170418624241074176 124621784195564220735239097417728 -37032492703968121722112572668248064 8918282249886509795656577337786368 9062479109361266995603466761535488 -184679070804585671182364438916235264 563596092617386807628516418387968 7596035221383056977625887367233536 -58813972668893717626364391189381120 7265984546883722056460075163189248 3612932463469675440952725819359232 -684514728962612651863643181604143104 5293231119355786829512579940876288 8637667657160694705715564691587072 -198416180433488547393094977004240896 7927046967113842905012090664124416 5754697351431788747153442984689664 -652772972825197538243946721476345856 7418112623492914317208665225953280 358161086653010624425345478033408 -259181425320796008140059359783682048 2410271955100026679927297596719104 885053957445931989494443267850240 -696789566958907416458595251387367424 2223839537641155898232359450836992 7047516680400247485322502390939648 -871869576595379053240582306638331904 7578789078966410517165564533669888 2049227888140922380033613952450560 -812546914979940761397185237265416192 2790330708401946407209095856652288 2172350423147263684271642605780992 -679402603888927224299746871178428416 2570869581961188571298081068285952 5859343884663970045635722467082240 -221751289707593064663305558691938304 7192836675417768302527665391271936 115541671514121263946574646476800 -373621469397538819878987539834470400 1122355461784728238877787633483776 8494185004577477010438989551763456 -397320723347924806676677668034838528 9255416483996108668959778127478784 5184697069299979998443882401497088 -551690795184031629791879033518030848 6613066811336213354042922062839808 3677708675698676455852567045341184 -399015807799472639383617159326334976 6333555986241545258263219980468224 4556736907544601632454290454872064 -224752219573462024796670085155520512 7052786302652884952858215986495488 6889290148373055542819018757898240 -969150036981059211369306218863525888 8354166684004103141087111851016192 3171502894174244383833364063322112 -951922362920554665676522028089212928 1187711383160357788330017830207488 9659553138159427954819659227725824 -773200368691490827066968758118514688 1844729295615460462234942641799168 7711644791899753738956897167343616 -252565618737866162681815927091101696 9577574446849395021335690177675264 6356484099760399700498343954219008 -928559820813408894142968128824410112 2772875771195345860396251275591680 4729412232145243540468022196043776 -810417094764416416513540951596072960 4828302042821279230459821187661824 1827955610551918651670292833763328 -611051978114458117149395985440440320 5213130770482742720303220037517312 2555829310883824176658899754024960 -104889273921735246653956389513199616 847761430705864443390730327556096 1363014127618752971771666306695168 -513510799138363569066539385224167424 904104791453136947729817493569536 6769189335791552502845601143062528 -289212225754262427383461426950569984 5144692262917525860434916239474688 7540511047432378416033460996014080 -513893274850381517639617071665905664 2236793922603238148756636761587712 183341505082437939934671553953792 -809384321126946574016598982852083712 5439781710521574992296851143655424 3633144220187742574186893961854976 -824618186083855856998878222571536384 8252291921795141848548680738537472 5123910348172847560487465272737792 -127900127284771406170108546368143360 953478944191130089446511189426176 2122811115983838889256105510174720 -893094446663756403318950097089200128 7083713220695987106097481780297728 5665707940841297653229858043461632 -114425864172089516510686355191234560 3662106115321242635553148862726144 7285548142897517938608678320996352 -494235993804601079107399356923248640 5509423190809050613153279355387904 8108840018088778987025331310821376 -256254280726143915596275504537141248 7266851965368166500535273158344704 8258551908889064815259976877473792 -655168408957486973591427113591767040 5896747497811460244510729010413568 7466308456644574392746851516284928 -986204773315882648606079442244075520 1162443990559365643659778958819328 5645024589489740970304595292061696 -615723952839002217726666449757405184 7368441161146508609411221527986176 2072943535418345017950497348255744 -219761261062105835120277024084590592 1599556099255594759468664366301184 8004078147815532202321947480031232 -759267170575550647475807825285873664 9027453119674692675863339128061952 6689901579071314911816480389595136 -419542277601524269931894507160207360 2448197365605001076472116638908416 810143616271859823729609413754880 -4922105546860736626846043723530240 7986981796949427641659658860494848 821083420350746040314801722228736 -387912413392558748066574350338228224 8468765984475897696288197876645888 9933448566317927396725111136452608 -661301076852929339984756546224521216 5407748645500455199799887485992960 4733259625499652858573560421023744 -93991671703403953915178604040290304 8534781286411430553898040422301696 8606827422642617961449787624521728 -896002402056174723214259274993631232 4204902035202065770573308429860864 9699292886623726526538663476592640 -308417651639220865352585113824657408 5082137146764179449561189376327680 5394109732596295986115901952884736 -973375297697771792523587962840023040 1275896804062925043459064082726912 8480294496267363980500489526575104 -910136702836211875085688069689442304 934187478119259061656684664455168 1481837208315034707277661811507200 -540413695210640211461301165608665088 4016594457460675130701622468935680 288815534432795729584321026064384 -38269476698430995557687239188152320 258437684117867683026701939376128 433405411630448489297614139817984 -236543099516137435252296388144267264 4281249156184421526487956094713856 1208697309425956429831631049588736 -395620588374023558181706198073475072 1119618267991447560708638428364800 167834301368369468071969072087040 -638983291986863994664362880100466688 1831036921054553173314118877184000 858414906988089833110191560720384 -524633589314048769641077894996295680 818905325994039896138093177077760 6391980520508522016873294428372992 -916953589842918490622809632952811520 5856133829863474309162550735929344 1205646175171447001224174203043840 -416825467974344204773668700167340032 6206221534012548470345964380487680 2649624209509286357369287199424512 -825821505749052416821872846329348096 956679674998058700037020048162816 9740368937326644824374556594536448 -978486815491878199687706192562356224 7430123074688246245293233052581888 5874396669598394440212729800163328 -145805173095777345445841751355949056 2483842641458179890267983943041024 9378700859239723186617640288256000 -981038015362724373523507124425981952 9146309242659180734315684603887616 9565268597169779912230081715503104 -853043306177793870394777185237860352 1122093544579489140227915552653312 3749865999690860981983254465740800 -162235877179939077150318649709428736 3471474383484711990850802086313984 936047312311831771705624944967680 -814802332275598738461651913146368000 5680433467045634054185437148217344 8248421399641090035477526175809536 -881458552798555327209314006775889920 6411739666769286791358727686455296 8471822216665616954405064103952384 -6990770479659101748227357796204544 3741961692162774976039193549996032 529049025946426797598857647620096 -643522528603475845996852147696697344 6692415368856767900111176344797184 7262101408070823405590676915617792 -263573399776855663522796931565748224 2564882272862630627360594699747328 9017624904407114233944103679164416 -934165608877586397966245625918914560 6610745302103539637379358995251200 5188699735875575954388614392053760 -961683461013419493100177507542368256 7206035926055912159049662339219456 2397261586339193268427229757440000 -428206221605133088352759685067046912 8671478722135241794186388474691584 1089466537220273598545061350473728 -235499109650657864629142513594138624 9816629626485719020799248308371456 7880577861264222320535298503606272 -284570181371392710286770937685606400 3086895301715932431004335767289856 8931775046192626619748515147939840 -14495361703762896188222438251692032 6255185158432962786983962457669632 5604596856100074410789119855689728 -293860467277939303147843605678260224 666625649511965350119998337581056 7519821887378364227010155627151360 -987597170786128765078805665596571648 6575983882193697927062828749946880 4549683393752967448402103476682752 -990151955893511450254268955396931584 5909502238501907797718704351870976 6406222662803412085370653786505216 -217320669865298269462356195838787584 4651482181024035664269240602460160 7558877967567793694315337668886528 -539356080249278740174019530445553664 3449205676549264674625329876172800 2923557021025788424834810055229440 -830706314939577229272368331278516224 9538791159822757989120646800474112 6995054051491298102545378145468416 -425119792606212391636266833409998848 2879945001997112704394028155666432 2065253321718373243082849468284928 -692143704087695742685785158972342272 3544391786628091233645364944830464 2435952399608811378085698524413952 -155687283319641268556451128845271040 381219761949305613102337971191808 7877584417777230837258584588288000 -926810709686899548990588243895386112 338342556469812265323048216821760 8267159142092827388164172366741504 -655855879923078868566854030529134592 4483706020176463081664456897331200 4980886381869184565989941708849152 -62277140452488553189332572159606784 1834795695184516972163131024343040 730527731997094567893931902631936 -324820890989994933496689199337701376 7475027043375556183736871592919040 4500069903107726603685230607859712 -675869392026662582042063968678182912 2869829151117592113889036470321152 3824612792054694533572491086921728 -116184619355045464841272523954847744 5195499294833060024044994301001728 6506650281963250565754261241593856 -891446084538146759291077251288793088 1298473183847626309498117279449088 6140166737940151279446965622931456 -825817650000608437485301262062714880 7789420490827211987318246446465024 2230933798129528707060205189332992 -26744036931261849092304992236208128 6333741859439632024075533562150912 9180252132732480943832683425824768 -702939410221477954665902166748692480 6801601022786283483932767251595264 2529675303757817202958370129051648 -171582776215777550893830423003004928 8593241328249009201061638216613888 2975141034721740956671938557640704 -465326611864786143112413293043515392 3995719428865188392406415642198016 407081044685398906330407906574336 -992567363478740701120809337356288000 4875964857311612120355257322569728 6602506085088039299859075062300672 -82035440561463355804506447184658432 6815252954555186707079446464036864 5326004952476089929865225731833856 -522495446326722673324134490754252800 746577846338174712927139770925056 3538984602695912518894152123940864 -668939398227412291218241647405957120 9600547273712575609666258750930944 1343047790735011463354860672385024 -940426053144044892526223195830747136 4910572928938250244976925827137536 532508996811811711994066053890048 -245880069108516466072672960266633216 2662136938198113536494364753133568 4377131970269132051875799343562752 -361996527233650995612248966780944384 5761088689296897706856993433583616 2127855378610551615605848416452608 -807572774063048157598314832427220992 878270025430717917937862348636160 4482831386873118494144948019920896 -282211366665011043859847645119905792 6416598252644248850570226794758144 9553483097289650694456108319244288 -629113522224466854753704681681190912 6962720540649477969095886884569088 8480026684424145337545550270038016 -908866284539084458628436735505203200 2070315667412512803171294584504320 3674596200299436982282383016329216 -672684761215611442014871769973784576 3438280969829672568470236305555456 3544911814052376267617519854944256 -726360042553894181512709858463318016 9083246770995801572234500293787648 3052551657070897645697837322731520 -6009696085084988100959096715345920 7558916387120654401125223623557120 8571849446674679172285510251970560 -667491909349169721407713027303669760 9246020958720148254430473788325888 1433157320480020460867246834581504 -105858559774010764343012949785313280 4039913373673558522510947154657280 6790282992834859400017212753313792 -844445419228209187435036883569082368 7242597608946796130495627498881024 2071373053119707223964892664954880 -916172776361313076911696190396956672 2751132395378954768873099718819840 8441859895906515799958840728879104 -523956424274761508952145052718596096 3113532037239547828996547956178944 8227628919104408673336307797196800 -663873320724577186300790741833613312 873157127009677103609042704531456 7984309765100923406519884520095744 -857885016614087119321232452307910656 5205001906136327123640524795281408 3329310787782481586253635518464 -914785079310906479009244715704909824 7915706489898120357992505639174144 1546530631544925284060944050159616 -512783461792555194783379563007180800 7063463337568356190455484261597184 5264555651768322723842951028408320 -849154263200635609923644205844922368 987278741763666754370273313554432 9337044531418055930136519229046784 -860487110931866397548884409544867840 4522928221916926342001358578647040 5284530775353626230253458661834752 -633833429228900253196707202129199104 1708800005819921259429525545025536 7333570879171333020585743605563392 -921522277267688381231071693474103296 4660429948180986576899245988642816 9834850773921172647733491100811264 -24065169260085736684069770250682368 3627153470972160422878670797930496 653830805270980108726692086808576 -55504719489978860307314878846074880 8623023879259977789517963135549440 6321819117202748545688197205590016 -880760690491100528312818139165360128 4913665721759696290163156578205696 7690775231161061098037176826855424 -820724510627562523451319534808465408 8269155945417535672489591800070144 3744450624656937939437258622894080 -212229255554882171368684431184232448 3867779865197247179728015169945600 405787828653037954735524703895552 -844343767740431345433111431502364672 75592325452268735635302803046400 1908603163575387362186079168888832 -487919348466858478938107809546371072 5092361927330077632154484531527680 2954152712243005573383852247744512 -294476448808969825963857648671522816 8557655169198469352123142955335680 4444166453275798138197628229255168 -510263527813261597795781097000271872 1894688197127472796404825095929856 327349470314248047542595707994112 -388582328207906188070357642782965760 7325235042171155516629174850682880 2061241217585985256450015082053632 -654681568792626026475276998686015488 6113248582213573500520100144349184 5413692619743425471353089872101376 -67774558794191726810635012172414976 1818296307545384008276398294695936 2774992960345749739387785379315712 -838473448277772443960408187753988096 551580328570045102960700769173504 1233636924475325786574712890982400 -851709500546395198513264080694804480 8868097853662466349343282149982208 9272866097589260219322848421871616 -915156607012009610219129281573814272 1829956122561655757278108822011904 1652134619363877106051049651699712 -828709776310870966504342858315595776 6547437829677998839411288341217280 1384129149633328924113291385503744 -696026871656353504909326172628713472 456564100930277776495474437521408 9337111940676012823905192453865472 -2367249899025521346787538500583424 8716025458395503927312867913629696 1816343625017596917683343767633920 -879229173750833859826708620452560896 7852416400534196928234713891471360 8047591434632450335476312904302592 -387928400580860302353805831105937408 4060417145618492725987950362361856 4224286694955442848052553336225792 -631687258067198997736710655927386112 844994777536532649136652185239552 640807604934497750626720983023616 -875668072516879986543962620759638016 9932006258740833506457458757861376 672270915739105767355365030100992 -460004355020286756974798145562083328 5876670039183567867615032234737664 2877349818567556010111840758530048 -619120948707740048887756195161440256 4695130181950881554238971184152576 7723882979015470064870240609632256 -790717415939563999060524242321801216 5876195511044940771704145937694720 609720401670522177052193132118016 -336360464831837122439683864721883136 6525894405090391739654425307774976 7422805486970325884295550798397440 -845794329811475550722440998139461632 9816403387273912073912296880996352 246208498620516796974209777532928 -767427340274061785884705592172347392 1766217796094540616335556813520896 2509084572010824024607333965365248 -959200426032219182880884166022397952 7810815946000469942796475804155904 8744697092973270475342115856449536 -809451171631966687353355051896668160 502854964420462361180554437591040 2218723490798175284766900463075328 -136219365465923244865638004743471104 4005020371209464198977486063665152 6203093153789804222301240444321792 -338021448970850989712855787557093376 2459191328294032548332295426146304 2488641476541539480963360629981184 -153985581694192102498622257244405760 2052716893205370138833101170671616 5524278465221794271080774721601536 -560018193120696353036876151319953408 1392648546501566781273202436866048 4991130086699249125097226079567872 -387526877212709349577071211566858240 4580372799077427804341994147282944 6513618466143306945205604049747968 -826914843034906203047134450847580160 9391583595071642479831762803359744 4541931461277658749785042176704512 -62092193208061166732507577246023680 8365852793108222416190035395084288 9987540997035300452347872276381696 -939456367653795705500160561212555264 1808820831526703112866239367610368 5300606913610346779965330416467968 -828090334369099189468408626802589696 4875726228567411315815078925697024 62972119291675037141431322935296 -555551034042848596741947542474850304 1180219123629518726077112624611328 1101845781387961400471846895222784 -185380411157894773526350591057461248 5826711627417175953790821021515776 7060944807559623886870337378320384 -183018344757445018396030099244711936 4665023368679396050645219517923328 8038431406545016734810257257136128 -273448784095872409714659107553673216 2728849654906777172369520260546560 5880434967362280841707391134203904 -168734286923553548765191912931983360 7542013802754470369588315208810496 5991695155673744291945046922493952 -43310582981176512458776995988242432 2131908341554693209725207324917760 9574329573722668939007584622346240 -28171620452069513431435192951635968 2984099596401346528041539393814528 7285193879312337624601165356335104 -493927734436924753598093136595255296 8248559793360129789657033037840384 528657191714149083398859472764928 -265180154814381592132463423217729536 952407059776874972676522225172480 1865173769573484632511581201104896 -512858264106546651300110402148368384 5880663905243748302596627643760640 917184598815895038828179192020992 -829457977311015748631657114832470016 5086061497444150887899419992129536 7472930502324349112346167608344576 -455272142214740662108424346311589888 5439493063290061596574529836023808 7304407915179291920272337888346112 -479236374747165711380435940430315520 2021462727193621950027507053887488 7251865183575256938841423088713728 -319167983721913230690145313700708352 326925180236347922600885001125888 1908658458129768709845537085456384 -367736063998128819819833405219012608 5209026518020949674539506632491008 2167937309688987148603321902694400 -134284895341914928290028880037675008 3992119180784337205370405972344832 9944185803381479436719231644729344 -19994690204445160204988495232499712 8495644816488443422747937512357888 4409980184921788799308423531331584 -73625895476478294020979443684605952 4717100727319738694663384529371136 2090625196925759291916304777216000 -407234321980052416827906756645486592 2450831946474461566545849604898816 4784876969970494709449059500818432 -406958261045953447699076500745617408 7754653959168306636292496086269952 7307003646662288350623994195476480 -456965525063722904433564189804462080 865342287611800211769284762796032 9254621994829407366698602034364416 -199546914656197172921647221667004416 9589839178306487756707622996148224 9397313140901643621071577193381888 -864238276942914079040651704175427584 7699732782825295191592528521461760 4090352248209899797029497654476800 -935101012023895920047596155550302208 4254903169357959139934601568321536 2792382150769192942880665293029376 -401174210386758883976659138657648640 2427997695962805325712056156946432 4128686806939510884509457720541184 -364398662280584136033617961778413568 5681216180750225755580647348371456 4854999721940340277138841929777152 -547866963369757573256165708269617152 6149671099257938872329416707407872 5019817500171655688915603557449728 -796307773789427683410533837329924096 9945115834040993939140873015001088 1406750218187067772752282335051776 -830032765962105794189395233958002688 6265690237071438331138676757626880 9705456857041820390153358999027712 -141825096484749992553159237751013376 6051410480528042264154830398291968 2522718390032184109005116339650560 -557239877033208644867582353293180928 9833323462160115104521066295328768 3385685451999406090379757455671296 -82814274563381710787024292256153600 2987368893933345123366365084778496 2526677895227438544144938607575040 -743698002015867242201773492148371456 8145564592673863895158040591073280 6778257613098866881808577159233536 -714341096827311124494402207130583040 8640766874203095462300622490959872 4355880550146953523071185290526720 -306001305687015437261902129989156864 2998487678766617810872723717488640 4224665413626013709449237975007232 -468622381493919748308316309906522112 6410786800453427871295031163748352 7957456382927074963162864673619968 -264837697603515374179833619836567552 6317345975071638223893526984261632 6813510064623074885770557993779200 -175466265516742084217935602642845696 5746907593399239548446107991277568 3735213482634961731303657888022528 -831243760634219674364438186851041280 74365850956371655908349523787776 2420680171209319649900088302501888 -381679169012272326527180030601068544 1629043546529778878240954219757568 1908276259504819470790779323023360 -140925674364678509637276542550671360 8940247706477394971848723002294272 7036574805535837813915780279959552 -954097860979426388768996308658683904 6103917830490342421560641437302784 8568483589070020766188256427507712 -444454043645048657122397765624659968 6467961114302166053969603317465088 5969683662505195905687483695759360 -862507413426459015078559461933056000 2277976601872158497415219199868928 7728847447508445679877743141978112 -673689660051561566969442776331059200 5384145915923886411911592234975232 8580674672733098342854668064915456 -478383499981905191758627848117551104 305738120699560968740853400993792 2501222879413837266878020578181120 -553413545720425719376761318570721280 1844570818716927859716715374968832 1456206023979934107279558973587456 -12865807387398557034372145247944704 1197691405508595275211235062185984 8327392310022662322949517578600448 -525635594228595502509170970859667456 9798969888764452613824261646188544 8803036421953338453939706700759040 -524023998605133457665580515576512512 4904588801994159825985420031688704 3409260915705910851778363250442240 -675267933473184763326335726859059200 9760880054519971902173652908507136 2884953407050320827038669125713920 -280669401072335207689627399838760960 4652754096497771663571240232157184 2504167972993141433323354859765760 -154075581275628473947022036712816640 2949925949362797667030238201118720 7588505490954494635205075333545984 -717802401067119566276535259150417920 3805785007395800189404391321632768 7949190968520688213499730670387200 -794957537621245302796938994383847424 9859725857962316347270109172072448 6289656271688907151269063638908928 -164871074857662342071963920359227392 6394821257410297758416763023785984 6237626820912997599826730421321728 -888154317418636734487550163201032192 6394697649436788747792144297623552 847142095388679940040215446421504 -479461643065257949285235873995030528 5868278721944111416615521864384512 2996696570960508578859168401719296 -990720019714822041113290487388700672 1986477003771391673724805822021632 6175678162403020318935807703384064 -629150062840023580800482835337052160 8579929119916668197571915006607360 3572151232517484283058209798750208 -933968042989634422082000029600448512 3516768560714443274879484198649856 5597428762132788843872269237223424 -309657717106508070452532596692746240 9485379190650498525930972751331328 7749774649864076545063807354929152 -411503912714876636278783952302374912 2992395222392585721757511677116416 6150383705034914318875173207408640 -861377848062524150163615922260017152 4844422549076036274734466468937728 5377545571404433398428947439419392 -487674935266912983617981747392675840 8184213495674803268136459588075520 4334029546354642599005521843322880 -575616621406977570617265941863464960 6912523357343754251240813036044288 6662751264919662942893217916387328 -187534820125452408057251853542359040 717419122218338955579275245256704 6105570397281655233554643014385664 -776555003126450610662894757637783552 9546157273976020789370032259858432 1965953417214972982815631941304320 -181698017155812566496583970090647552 2854386393924437507379520132349952 8264153683651635631724326132121600 -930970492098700516305533278347067392 8561749655623442921246090634199040 5169263210923404390251566886551552 -233139108000776860023741420494913536 4986601283144585617382483968393216 9164417906728005495257626469990400 -896388448899755564653218244274946048 2378209034601782882431128968364032 9097571502791052974108133419909120 -559573287296240730889763302687113216 5032893406903673229370168872796160 8513435327851535515732564751941632 -325132129999568668311911340116541440 1046598890569824408865941074477056 3207703738754837701849062777552896 -319838587862517939528777539331817472 7258036637380255848042465404649472 6644904901791507577446879874514944 -639392952565271753077103797863448576 9900983274871321664366064833658880 5650159189071104499556402763661312 -363459167678953960360826112569245696 9288591122286939879370974409261056 8972214637927512388731517903306752 -363078501530315710909911352918147072 4775860758964925132358367991300096 7048194288270918692919263025430528 -593389987713199203837800325671026688 2318257483321246139024130678194176 509213206346158889948052839202816 -811822733642743802941206945461174272 1157859002103003397943337852862464 906165103405057251724471492935680 -440305344355439534203640874159570944 5807201247463213480062091859591168 7875009033541106202807945807265792 -769395610753421862240413822868258816 4505228047508483322536538994114560 4780844868594136489145281571454976 -414650850466966204835574362606141440 1300344636893327412602230376759296 5987691072220267775824212885766144 -644817809694682971236712789491843072 7242538178926196479398926213971968 5218850223244114499149147152580608 -623482152755936823849565820521807872 9179773206664454925092691810189312 1726693156130338223052736893550592 -972769165554398406847694131339198464 5196128729323704225377469604036608 6134883399869370172452212811235328 -630039845043659755396555969694531584 8430632867578823768766176561201152 7577957645432550113376659111411712 -265123226852802004721127648477052928 2899544742622884678978111260327936 3352733766359926541805293825687552 -601302018199259763138188313161105408 1972043466614429398508220578791424 9832705973554412784876587254284288 -770401649002870899471369855821676544 7811524620466585507269291699863552 2158338531205734453196135904313344 -397490578525713857036599186285395968 7919752099884843008104648488779776 6065383883847452973406067391201280 -243866157740975102116282864748199936 8199179431317980730693846128656384 460941579440876157563218826362880 -820861224559850518148016733371236352 8097840486189380681364276332462080 7684653851098779648523978896572416 -32882812411942026409597381413699584 5440948323715057281430092941099008 2623023531057923226670581407547392 -525168453464503912875528451516268544 2322615957736982117503292164538368 1321786208474942010147085618249728 -868992556921924281567415953306681344 4402093351047456704552454355681280 4939873356308672573916280348737536 -623400282104734760554099261841604608 3195664280988147381225699938402304 4186518442772281088900162239070208 -907714032607008955852296116341047296 7603617836339010835295813872123904 1413459217564074878632448208404480 -504013014370266145091040972537593856 4281873374520016056389229990641664 7613703226984348426561026089025536 -445754742386364243597521862613008384 5908891077420201093127322474643456 8320796283601915953216274386911232 -222101459185478846989364556839518208 9477794019820012847906436188995584 4772576970434892487203026672549888 -835239251204451525562129266776211456 237521366877026254146992080945152 8411374152100072349845593341820928 -799163422819630852689802979774038016 5977316472476122376876271261974528 9232000438134249884648888835506176 -253884733160344264947528507664105472 2198074524886836047482679216570368 9121822580360992111170050194407424 -444265954352307079941361977706676224 8936807020640518801331173093015552 7996786812743904274894321377869824 -627648774553414025954352523865227264 6088793109387282428021596691103744 9371192615054682747354849185103872 -687871831765866463924445274148175872 2389697969373275224752702980358144 8867976144603435420089451427135488 -924193793814389199748757225520234496 1765735950335225962659189664776192 2467425550176110182433963796070400 -678430565966284664533196575214665728 7603171092891985298368919274258432 6690270430351491254304000383647744 -527632898852898855914403894749298688 9217693935253967304458224531406848 8381634097800364608834104683659264 -878271022080889618914608302698528768 8229856522284127020902058330947584 529398447954752681989926727712768 -844330418836731492811837967515516928 3991906763244873453638750711054336 7666746413945689938738316201426944 -235361288205217588314018668213174272 8073209395947443316500648568029184 3480733532175949133341298834538496 -122435799578041922999959483305689088 7744818206706627193569469599318016 1676686993108493127426794279927808 -603019164143996570057250972750577664 846209868014779529954643115245568 4029810503269641007925212326395904 -582735271758438869562364187893563392 9843218913210404288629600709246976 3475819938785077215200719820292096 -289748684621536700692402671806578688 5763780442112339762688671694716928 4996839068761378898155056647897088 -58430883387150083142026967155474432 2265247687046815048543957803859968 5190041536651103200587422858477568 -575723260851742957120039256728797184 7561173343822226326692279206543360 3292665978533764012526225753899008 -296503662465018449689828134775422976 6251132217011700785519161084215296 9365580352726605413679386427654144 -189193949465897932776807420944973824 923724893139633520608412327477248 204145277596420162615903424348160 -874720413714789422709841432449908736 8657562071689651832296758281502720 1691333265523507524576359726710784 -541229555346842536175278815698747392 3745049310270726154095003606974464 6302488989033512700379538636406784 -658630699719727286169503451098120192 9662874270210103578870588282765312 4442415648518976131455253269708800 -669442545627941829823596502940909568 9955679777780364310439050430382080 3199409391502962861819672729223168 -474518721569401999554846304944259072 281218795347975589090429723738112 9997212684917618772079847785103360 -163912492884725431001304750389985280 8732343174319616120076460265308160 1619212221229402579534832780443648 -589106001891561405192650786233909248 38909065536043106054672249520128 9033385404391076825909480938012672 -103554698764600496103304582158876672 2958749849135471091018849891385344 812832209903923004673309943005184 -109095835399888876243283082022486016 840169530145486122763834682769408 7664777779048017257237510182928384 -188554948129194097048194253714358272 4188988498548660221599706591002624 9435021035931945589296836200366080 -595394400550146267876776206726594560 711009805691791210471636940619776 1827968789078058748507440011018240 -862740482957268222597247307838652416 5011864205694506144645573345542144 9100802397636455374046090112270336 -291850862677474614117620358871777280 2656716554216916573403327978536960 846343647283417906720316845981696 -352744518815452891421870587102887936 1419576178174077236201230981660672 4627859111909619132552417715945472 -452580870746600331017941968998105088 812452060541619068937405206626304 8893311844518728206786103705862144 -722125403542758697471572199497269248 8143426979498302317953349192777728 3877164290441616589581260859375616 -829816178798351794652445094958858240 8685519642171007569303366965133312 2661743700901806191014313749118976 -466651753367087282133693080505679872 7336673454895864206757261645709312 1297010206648457604242146081112064 -124916118834168864242977305847136256 7963966393544287009275522670657536 9334549800982873959930997623488512 -937328161170207563125792999487832064 6892662853927444559942978705031168 5529288526644977661423950288125952 -329587662781275122113975810057568256 7335015575252540321143319563337728 1256017737146792495932414424514560 -294228327391891668743714815250268160 4141658079112764647226664128872448 7649025034227370492713422825717760 -30572698901313807849332887728947200 4365680475715246396481561379733504 9481340922859753726462074510376960 -758425857695866489393780147338870784 9713593617742480162121950934597632 4843047529484645853786727549763584 -665393220684052568933050358729539584 9002573459572287379534820140908544 8930048320494787474470189251166208 -223988715029998450958004505599279104 6527997180021045165284574338482176 8666589941541690072962811132116992 -110652483616526372878581006350680064 7245329554300712215822569345908736 9282229263716561282623842199535616 -234901710347217989220640770859466752 4695073897299805958024120366006272 8751430114549653499015304174370816 -87277001438485375783531001541558272 279344034218940977375827036471296 6231392532307103047865847563419648 -702960261150843955586752222328782848 4669002553400031772793908083294208 8691806033863592122582921346285568 -360043724228707019644677651221708800 9336636044810085753573731624550400 1024959628886458640342025645326336 -745674813178533027209378451400163328 9907100048192226364998671826681856 2627737733483103489839954854412288 -41621616849960802761410369053261824 4903665424286256819655204478648320 1867640307006342724627358696865792 -106577564383054971343768932776411136 6831942627135659170807408828088320 4883286545159021992621833103343616 -287554818106567029446105125389074432 3151925669882030416749952149487616 8083318649130763044027438945271808 -783308515989051608625183335427080192 7908560419466359083934063383281664 3442040433204007045326709519810560 -809485813738446862439833772473974784 4062929421829101446074795959517184 9798964250484827388548249397755904 -588454158479813649412174523897217024 982377866385217725102653433708544 3308842367233696599047510341713920 -236518210036790149783644185533874176 7618458917553632160796014616248320 9628614309568109829756985496567808 -422247822845238876498619577317457920 8130152219092596088688718045511680 1427719079109636119208248907661312 -305162695037302727766279934615486464 4714741414052702629412224544800768 5363974795391744707677166082457600 -648452790970501924745556922575355904 8216565774171808137943582760763392 2387686283606075371144408616402944 -773319944981948383151610777682575360 3152261897946165289912726791913472 4943247418828924219091733350187008 -616251272793546031187988652408963072 7389048618995066569910219150721024 7710855204221928185143693733265408 -310536669834878535802507186873040896 8654381089477360738462430639685632 2591370599981055951115216960356352 -590911464220413924807330805380546560 9457731630923712867763927793008640 6746442648390804164916653311655936 -659790504127737003583471049466970112 9289477142660345230914663036747776 8552470405282249514362669050626048 -640701938647903361615172939504680960 2798870940658478152445260503973888 6522273972476473526702424769691648 -480199744400699332747891754064150528 6237718626948525148800025347751936 1555356020317152971610018493235200 -926893815132121080918910909871554560 8650726679733952875352287889850368 2968336422323012562030136202887168 -58214074171880942208546937438732288 5934449768375985898743391923994624 5798697789151009708453130779230208 -238721343820425042538068259324821504 3873089687697385034674491455700992 4234915200383153163954756087971840 -582435081820574682684381697073479680 9127086828401388200908443241938944 3347520560792053711920015381364736 -364654559460438891742897719130193920 5323123513371541356300461462781952 433190826608500096728472091623424 -711714239396243287572829301100249088 9127456195450687628672169284730880 436453598565967641349379133014016 -951181745526558938677266367226314752 5939310821137544734036261095866368 2715257945204632557339301824692224 -487137962975899921921427593794420736 5387944214870831713751083677384704 3380245087640504557962298700857344 -300868247943221839968341352215740416 2217595364778600874787414233579520 2646480042682877465002191534161920 -984956793155049379127661432225660928 6919927272478968411624213038759936 8555914214965775047023906470756352 -806370747472548751404063380998193152 3609014768793725910698751091015680 5753538956967755525910844160344064 -917715906367815004062966797607895040 5590435894136688591103669806563328 917475740561707356654345148956672 -835042673828807529146579482134446080 2321542674915309280150653281239040 5135406553018648373523565462421504 -435120354887076631290338220103958528 4131893186787503652012129140080640 6808552242976883601800545800552448 -996213278355564072916534274237136896 1176339734943204565482020100112384 311848112087579434949358362034176 -429431745079750848959028657924341760 4362147211715362678612070202605568 9413892190640826672477599025856512 -9127274124849403955984807822884864 8422635008657301054798550735519744 551395965894389239002051920265216 -279976273074942445333188302342193152 9755379484960578002445007243444224 8547046839146582720482642489245696 -316100942356417554651444685985284096 5539355889478292710995409466556416 4499926981029792889955826989531136 -386827245057048619646110952247525376 9384837886162950422337612689702912 8681553112498363653721625030819840 -720824535190071480528134472049098752 9904948175801696781727389032906752 2039571463384119549662681171492864 -769779453610728407638863349500870656 418132822466613384942018105442304 3335872951071492610853452237504512 -237610288603365010891414961790124032 6640815683724577559807252704002048 3357606986028053073877240496783360 -1798554872876007999191674293059584 8986643474698548654253860091592704 2751099250288962472757460536918016 -558651776387840482482969441629896704 8518408734998441128810466766749696 7598649209408725816834867840679936 -664044514517188260921117891446702080 5195035510618295205526157192593408 8815793334782883783661670384009216 -714434093846017677625222253506461696 4517665997115673322996847976906752 7248107401146183987335982103920640 -218068988181347287799417054603247616 4665331970265110774302675694518272 9446011762659315310375847080230912 -476138590734142343146416433403002880 9171221146742820275399194472087552 6316950769791594405567551919620096 -201608274935036201519845614074986496 9965946958360561938288442748174336 7275062809801269931562879395299328 -804061585358802892246225092417159168 3796892330637869897226531874275328 6593555499593375947482597668421632 -142478042194570773065961851322368000 2553520671615942357751309835173888 8255388011938482830997220956831744 -357614691547595978794473950906679296 4267404174787671751167336937160704 6791537150668784446618838826483712 -785447287260949500621073760561135616 5056405711985866236292921401802752 2658318634298173948911439876980736 -871546874610888611954446526335418368 1780840867588240544517402126188544 7362586793172264523142970382221312 -795640718845001781756137751380492288 9347239703707948002634403399335936 1675569537286908386823809057947648 -217308968423497395724463153094852608 8951630531504424236993790695440384 3291195256932718411465114966294528 -59422783421914658521451361145454592 8606971793882750615530813060546560 9619441030832865022942807330914304 -950579696253547426569299526347128832 3615830183424134169074143393218560 1505424452140262133161141016199168 -792274501359213304213024810247127040 51941956735260289489862645514240 8124913288857208240617460454129664 -423260967157196179923257338701545472 5148965535098764912046304951009280 2199365372333763340062286407532544 -108712240364556994516077756056338432 4708297676749210087647075652075520 9128451529245904616144783097724928 -851396349837578979740408542599839744 408811196686411258025827343794176 4631311521005612176805319023788032 -568594085282469117249609681296424960 2890532513526966788847154313035776 2300748301568977578153334680846336 -23910488659808806153524203518689280 1273932273951357530919444473184256 6859676104364819134005488560111616 -592798493408211345086085670398590976 5918906533613167428200950644342784 7014313150705484718228087687348224 -301713118459367099653588792563990528 226114169647717779596571049984000 7468922280352237539726984795389952 -120622802408368440889207391770378240 3150450098995104100214492410937344 6401762111307645359982940138766336 -564324344256326124243556152150851584 8797291419603895848427233717780480 4081816777699524365664956104835072 -64137761969782515964518846689181696 8239775369253854688829987763519488 9078009251533467695746161573888000 -310269348785408608670523148810059776 7277839433162782794356163696656384 6300283056333999753920264770945024 -446306267870336647899312259107651584 7671425185578553062744801463500800 8795350357533437640787608316411904 -197375508052646066527126113256210432 3422099926841982993095901499621376 8767485359110261709618253119094784 -939282313525067714030369209262800896 9228349534524709596705770440753152 2072511368904876721982647543267328 -591884562270884567640328648527970304 2171621906441959468731548389343232 8552022639454212501626366386503680 -361886550679259619706385050846101504 8591517313430479135285945324011520 1937476471768759131549823156617216 -885214417239566566172556113553129472 3589768803611713599098825639723008 6354466637575057838663765227208704 -576812258250429598871495786343956480 4835821387037911250859423243960320 623421369539070965432249913180160 -708530035213369122706805111975313408 5897425285262204192280047079391232 5978462360792121956096543171805184 -348145456480782476424545857804697600 5016511978196984686850328080941056 395015097832737909445285621268480 -905209948570187439415603465937747968 8674640953558613239546853464211456 3162700678695628154538406713491456 -201720026392453079090828114275598336 6617513877348691264604254282711040 9554475913599479100960558110736384 -275126714955416414693587935119278080 6562989252490148919912673358905344 2602829350795397995406427278016512 -939660086827369887786467031177494528 3406035269299874197604118523019264 544827401790042057683845475467264 -654100481939933722740919186520801280 6032483139326917607191053321895936 6539805154793176433336933605703680 -892286332379859933747974632827256832 9712362092857754060311600604119040 9485501062423337107473591649173504 -382586779097804595022879188966178816 2021675282871601908248682126376960 8990641015711232058205955812229120 -862545840131058591977887616787808256 6437116501773365886751320261525504 6497320174990420048592258239299584 -359672250508010684550557692915089408 8006220654770939134833846309093376 2953508671586901062826037029634048 -828614847662996913250239236221698048 7906197124289671908183921139908608 751923523359404453742878708989952 -446795869460655151943964980861206528 5538028278848477961691817855418368 6319797169548283935882539610144768 -857794036190493291102137794263252992 175840908602313570749033245310976 5007820029451929142593301801598976 -971861829205976514754579010473164800 8245691276423366705669984867057664 5915294358117838063761525294759936 -655673239105724771739473905471979520 2658299252572704379305794585231360 4111440408164510393250456111415296 -276958786001294822492801753266782208 4281251819517353248321891335143424 3604845489473261063480847955394560 -743148173384576789703432401934352384 3566164069266467750604237738868736 3274014789177559337935286065692672 -283675433756024830295638343508033536 2892685151940152087746909487235072 8610887129130503271182742908305408 -513155666238622005550732716351160320 4852530455157705654240960875331584 8729579129227808008616478219698176 -751111068872295826419376620918800384 7952883673492294676360426449534976 5238253969975462723127407932342272 -458430256784602565477889747407863808 7016421757309683867668717949157376 2422411208901037985643504173318144 -975373644814790069087233895645052928 8456453142603208604612428002492416 6408348577295148234639262150033408 -952232750823909820822493083606188032 7617760220988723158086775528751104 5069772774277546447008949587673088 -721553895260879946360680784360112128 3008618094370045059223779211739136 5651941181695623134702088142979072 -244345027851879313104934495020122112 1613435774653910179511499057266688 1986454972526842175872402961989632 -312979818650613504111554824176140288 7550047120096012080510927653306368 9620823936017062849288113768890368 -648591379951802281737531386834714624 9018112489799627425782625084637184 9928206031803495316941557523808256 -999088882888534037533789395989037056 2973520151648569476177092602232832 5284189538342218013006395391082496 -544807412829638184298972086680944640 2892126503860055455289634411511808 4041829652178600466190994461687808 -715276618669528905992715278607187968 1706284509065702351471005642260480 1517399372793902513827866124222464 -579249976530826400148155034608074752 9325477468040037591835748077666304 9422975281321375382169818522189824 -855538524734059149973202095382200320 1579406102754419930745442660253696 2458482566288193446947882132307968 -540279997730739231074137311337775104 3098093119316903036607883731009536 5223166225523878481909355376541696 -948248707583357182138575862097772544 6273510971107296496665758785339392 3703542517641247919534742593077248 -451579146164246719690171028237975552 3689872125174308101558913416036352 7556050122153687137339390543527936 -928671733907110892091727254216769536 5860567554636006776440956817244160 8524783116583120761306704364175360 -260341042482320972071166936843550720 3254966492574419469350991722184704 1221578376678250016349426060099584 -646477648900182940209280349913481216 6030868895391506982121960118419456 2904939575411811046080286237392896 -72974408762327484967275725169098752 4555404585767421797705117400563712 4212594018835237285599366201999360 -481952050785798188167169529293570048 4002919393839714965371230724554752 2695170935456722236143746599092224 -113075266556426947196966211661332480 212724383814705035472809842704384 3870427828748209934998088049491968 -478177586482083252568845026246787072 4071056976756034654658457428295680 2730279559137625411396767997493248 -896751970506544292473666254674067456 8639119233475950421014614240133120 5515471468078343922194585730678784 -588190491987588849894870413335330816 1899094861789502886644674235203584 3985617410419448343425801600892928 -16397212141355181033534416939384832 655662474088931519053927070826496 1804498170190503927725183668846592 -974419818622103385229365579238866944 7902056934423676215027879049691136 9592920518041025058387368010055680 -73526505485521057939465394435653632 1601977085199800457010301844324352 6910768113215976787986295134617600 -339225030258059899628571836039561216 4405948445757988200724847451439104 4718841472740457479554144608976896 -60579923325250725114540038654263296 3749069823474071565777862968475648 2249939201920333398133506480013312 -723818021310952124931762061628669952 1088039133608550293754089134096384 5619209547486669164391057607098368 -581193297725480886547112909569261568 5717950771625659311941874865930240 8455982389166458021235868095741952 -92126882365385807510005780567818240 6343983981625593347039079214088192 5207525563312172325001376181518336 -37118753387669417660470558550130688 8123458243349011205799043108175872 9415603438296350813666607980609536 -567257741047260041364779508466450432 2619437850753391991777227133943808 9286049340602112463509887796641792 -916411705350448950840162748282699776 3984814512181791345496857442779136 1384431917941295560564565035974656 -152018704885128771653299690646011904 185839411567263260422390828498944 4410470599413454659566259939573760 -107288285020662826992946494163648512 6690037224970114719159679262392320 1147298492375831221883466361602048 -723439504093113321144168195924426752 3621120988015557539614482952617984 3331284055879562649439279270330368 -403354178838868142110947945129967616 6810266815582006843886971870248960 4728793776413939801666607294447616 -14494943050672396529946295734894592 2415091868116184989983814348439552 7753409545848325220671968176504832 -230656039434290369715339530170531840 884173837815331617927500383911936 5283758417180849698790768417701888 -513337044196685956189201584992813056 5426989135116649361951836560424960 7247943378008375362802702625013760 -62712733002958575569370922577035264 4329364570370618852302293332656128 5451811419117711500623969819557888 -823868260326017486131463033846759424 2292483906491188433542264853102592 2288217276500121225810211267149824 -467892615350314185321590454480797696 3666848510748747065042642571100160 5742933657117970148521883694268416 -420313600992817751931553652810973184 1844417591705974527936475730804736 8947017522072770595677516005900288 -130157457194479921603537204615839744 2677430149437643504096196478107648 7892306789454805029824795374518272 -455964402080673696566138112032374784 5841740925840027627413629715873792 2850067358390158976071180321030144 -738947166802361242659647419458781184 1816416021699950445185509602885632 8971005439034833054958695244365824 -419423811279290408851532361607675904 9632289863261164968171326601691136 6970688683836593518567271935508480 -77418411558804069536937607700676608 7887652102985748473571780832788480 1239209468592498812882218156818432 -334071854460406516675360605811507200 7477817856882779814043115839291392 718103172780432469969521558421504 -249311134769445507642835244270223360 5634106251735698130581874991431680 6211689507983605064384972341641216 -66708090467372330899481392022814720 6979068121207950302753568996720640 5116626782078388983470563654631424 -400907323635616657618028854079651840 8299019423454066620334234232946688 7043330103953684714027959541825536 -508425389362514299687764950289219584 7702718118093655414440534661398528 7588626562972149631194692545675264 -700311631753611131482429198652407808 2840085102542592111461902021820416 7337636271485227254331684239179776 -278113475171449919071956470616555520 12670467193410068897847536779264 4546393939315607143717899172052992 -39869915129109895770727454871650304 8445088400643605596745310215864320 7766041719416738366888561136893952 -786431624389622085460233532561424384 7299911381785353872434170951630848 4335771332626835411068765964599296 -627530666003844787703933352227635200 4798476424074516076169229450084352 2551252168182913580785621004189696 -140602809829094782881571109748080640 2760040993826656076330772939669504 7074471978544517927930473698295808 -302112164714005613026719108224253952 6634317781706112741828369930256384 6646566906139612996589736150695936 -186425915074519027635211356543647744 1846335213363027306080838420004864 9450858365864391441374467516792832 -6508098135522295603968121380012032 9744280407280389036200365645627392 3528253533494961159500179888406528 -598527504954876628368338779434385408 3626899087908611048348631229792256 2875546078684547800929795852730368 -457045930429108432215542601942564864 3409124701834994079106839227662336 9315641124635147777925187096281088 -542886551546402262751790649726468096 2943768716383624677430845851566080 1292515182172751481568862364762112 -828854665483649690345689541804818432 2827010654130013394248733286203392 8498516609224221563112361463644160 -505432217768985337527009810562678784 5715075003085053767367890313412608 4483880280626247322438840457625600 -905291335082666189999883944305098752 6665753186546867360391331347169280 741503388992872756910882857943040 -548938932002235865760282628090494976 4016969335412522653003179337187328 3469782308742683051980466625183744 -208319621890366532010112060691054592 1161799254554065739998764485050368 3685073085935586054273967841083392 -752921025359386112473661626646528000 5237418740216848808223003950186496 3140556338047316900807517291937792 -380000477982082628602912855413489664 8467445694519183799046678704553984 842726241819188086068828948135936 -589468725602406780652814440119402496 426752606312380148424110099136512 9601522880436031646618299289042944 -616682355235604953352698752646774784 7295057012655522261782169921781760 6301848911972582416844917670150144 -1081899326345558367788950727163904 7537537570509239708495991388766208 1903256507218903313257414172606464 -640949216019041136590856075947802624 8488635351372057017274130885509120 4231019665933032337456690785943552 -330638083344303044326141733227200512 5583468018517982428346134088908800 8378374286975738629952908902268928 -297178742053680227307440931447242752 8432840930975878534517153448591360 831019143770206288799509940011008 -67576169095160427580348190573985792 9190091555490051444828807314276352 489885624894214621816259375792128 -409505436166856097195528804475338752 136787852510159849966118597820416 3174962878853481668276502445162496 -948498654209052089716163634387746816 916936913197922088452800072646656 3343359291389060683002021903597568 -908181052220120725109170276969480192 3081722589538856912931876591632384 6404366431441671379096426552229888 -229585399451671519601826857673031680 9736104973720923209233782139781120 5881561341919121233425681115774976 -449413912471306756237104531160170496 2586619470054981386071507292127232 9798728582873469446784474943586304 -592529941399797681062219871183437824 2737112731407846351854790766493696 254233583418760168434792904261632 -571726677483204897178120665866174464 8890752226967590987398980413947904 8196874439374896275969768115142656 -761966080240119062849602582084583424 2159307220910199181803325048750080 5452659480451975515049781673066496 -486182916704040137452807485325836288 5912742893279301932782738988859392 758357991924737764550015797166080 -310286437356975151725496469471363072 6368935944765802045364983463673856 6839743813679827973064970408558592 -692810093327188379553009098110795776 1836519591783205466634774980329472 8883745262470330380852577762803712 -438146041126474698014426007005560832 3141181082913474744657840231677952 8836505097105976000780038439960576 -724669421435305538848840915114524672 3055879601734578547371636479229952 1160669872766215770505886937645056 -246427696818476305849335158713352192 4188780406816926589229190520766464 9143633497469029137897459309084672 -896647582898572705276482183095123968 4419415370100833917251511541301248 7551941844736488407453598237065216 -241921015942910796972770801685102592 3417678195500774953320960174850048 9861770989671831202850846097276928 -579023833951387067706968667504771072 2568244380340700507958276677173248 1055663729364314205665308149022720 -540359462579012989617959303188054016 7263177156174890079168232264040448 5965019177715006680764954387152896 -775589290395613891598287195590361088 9771512604821769166682056925642752 5455317600036001741438703923888128 -675448073412026263139297382197362688 114796239969942633586339348480000 6723307181535166489382873393528832 -940526641743986973982150695709573120 6439119133719207177051381642035200 539764432868377709400018179325952 -352714477752956979975793959988363264 8262126966541988926592298638114816 2132166901526017709605904036397056 -724932737520080472202595797208924160 344240005993701846321615398240256 2261900133531211885349872791977984 -371417429917405986258665270178480128 2511611661594666498962670739259392 9383314243249572718267018841686016 -704170992516005788663970991794290688 3973797274845572508423034188595200 5447282664713629731586259829129216 -668929234762015926385571690755129344 2539971632100304453514925768179712 48726475519528313382532498325504 -339683687079260475566561523908214784 3335878707570956813360128057147392 8175532809675145227922775526604800 -556088981046131693231303251757891584 9693150006504071956741019247050752 775894035736971537426290340528128 -179904646086448364564323874264580096 2737458010240926494029206805020672 2893385982255016204044443184005120 -561718555826387581228739614228873216 2748230774793755345992697685999616 2807137959231843407451048485322752 -371205452542854661300845435496169472 9010868170640916728302966451208192 9981173386622071869634476370821120 -695908397054097127899146875930935296 3963854731104083650818906358022144 2940633253375670480298899973079040 -133539467112194160594281964328976384 6421046732482196909314830990573568 3989748408325566960941081682771968 -476243412175245883681995788434538496 638488375299322504590005857419264 3486211238451295604714286306295808 -836509673946526316504033764667555840 2255171998025650741372154317635584 2083628353124834229011530110730240 -856294628472911379723409263658270720 4442101648145728584201208181293056 9445193757905124175011841346371584 -758763725207714827422096296379416576 6830476498462139101500463609020416 9472695672309026465490938454081536 -751704238399517630919151880029339648 2343363539244438293013701486182400 9310905916398841057627153532715008 -659838036464716644719660959084314624 655268180679084539609562543554560 3497765823308983888167085887455232 -233890602560298574447331165884907520 6400625484020777212653300170620928 7682559434640288960753299366084608 -886441882773509934845939631685369856 983092266670681475302326672556032 3321900088096497585599194263977984 -504888738864632821083104973110116352 6043756019995587044657670100353024 6722645010265254328653144381194240 -267726157096758669498171591187496960 5951523988248164535685690087702528 576805890733054681140671633424384 -789538541795360595476259419203829760 4964099108364579993699324079898624 2051086270118884440701409662337024 -570969849309128672798721222346014720 6669317406631382239360961015185408 5441107881302417504947388274442240 -405208465809265887683763167408685056 1714635033510251445084040567193600 8687811282112705775610923541594112 -432270411814261739344632410319880192 1209408304931125197174481562370048 2421982433354013311290863649816576 -108247204371143652633172210742198272 8001479347741291278332305136943104 979169529314928425196524796903424 -768152497398596833394909380800937984 1746106863896629362062685980590080 1668536323195767488082437235277824 -356554002013429365330009493478572032 367597010227006862016233993142272 7239059821088647578190116024221696 -477722945055735778352915463903641600 8167621353345004752173700501995520 5366474540879027187020911794454528 -238143372940651604328111595143036928 5508751956560540582686294900998144 333365284028893308502630826246144 -215728477520498480999280713670852608 4168535612467265908437203772506112 5135127730131774346626559853461504 -478474097792766259062517720105877504 2778902703412047343526400422313984 2806146433871032531819547278180352 -293129857842942039667189788360835072 4457966208611509670600179112214528 4564908707593119294751154362122240 -389781492777348611475160658981421056 1074385847926196583931003847835648 47916400852112087538315770724352 -762559426583667771142823924880900096 6393382035290708837984847513255936 2395812733268889801160109806583808 -891877010558999688836902505951526912 9237513424853744687969630634901504 3666717182948652172066588391899136 -945646560055302529028004586436165632 5687128294747395826219480569085952 974689342787748079051752924512256 -552404674734935064352319236558815232 9202354213109208728119311425601536 6872179544396809564683321917571072 -786783013481485257855574000158113792 8505673839599595809196737485078528 4799265658697025620534262706995200 -201024013058615446417008383307546624 3746518618046303336355099328905216 116172883646989924042694583123968 -452263343195450582015228046569635840 5962679019046987204974422978985984 9860844595575679888777772823216128 -188765704509764008729516679349927936 4822793234613761339424685523206144 9271198904713809292383898386300928 -835560748755006065046747856771219456 522134553676649250239174416531456 8646099750328793137987405096157184 -930621548829875090547422731767382016 3612887763939199935522954285154304 529705413089171528935525685657600 -946760072135430722082184245651963904 745372019941474431793817356075008 7751965756980703136528975997698048 -675920964293627198891878638151532544 6977142547941247904336855835869184 7947364449840941953885904926932992 -150505782327290998395398613391900672 1409266677410276189170335188254720 6398019245053597612292426424123392 -909851485964141703708134146681339904 8285925034501137215851603693666304 7071500032062488000023871405162496 -255010581866864173543471653350014976 9762355943125486012449685285896192 5327583768671600168832536158404608 -146865815854491956504328137999384576 4845861662133023794982483956596736 281046263389835959914502171918336 -393739642846204349380012997385125888 7170376730229230996200076903186432 2164216747904109458599539841695744 -545751237658409334243417394241339392 2822071930223232908989827658022912 1078894167543681723119406231322624 -972099316064424368036692770093531136 1807940951388193413596462910013440 703776756987504951411571932790784 -510031380089383240493696371327500288 4924383712183881672744560018587648 4814507925765193499794034856558592 -528811093492131050035602315064377344 8362705565399598846864966618710016 6061840827631258563774226194497536 -744189783362263842093257841325375488 9872920076682094606770112754089984 6647886357952002374734816814825472 -418464010607184162122920307239944192 6995140308235136623437405424189440 305319008387568032448635463532544 -323715211862670303970772328732688384 2064928737082657776428951778885632 9818508087142545669383016419426304 -606037943217273513625885637529829376 9124714270591365788720087003299840 5686175367071305449056899396796416 -205298813657266271989102247854211072 3889598165942819167242458819985408 1123452402989020035326495409831936 -811746463587863807229324373878898688 2323442522066284864789368547573760 4841873971644469245595031317774336 -643584998126151318712793846511566848 3526601299840288857077749158772736 178256124233203416312005307400192 -416715358619070655829155987937296384 2838576065794672410773638875185152 719868000312545681238665377873920 -281758186384469031659938390841753600 2115088206946153959291984633921536 8390321794463559759441778435948544 -720558377479360180411587213482000384 6973110102666811828092425581101056 2001782004286881594627900353544192 -23742110882934437520789923696738304 249748084039569036900456678293504 2707179180780425635486035261521920 -315584532847750013544749413045370880 5076201653713836559447482699874304 6077455323132194613549549947453440 -545598992146076230257803407042543616 6472060026284245591860525479755776 7619145662128772693224074267066368 -761482177241974300833048332058230784 7671751667524544535604162012905472 2569373293905807055686655153274880 -75546875455622456538379348774748160 86818273091131614605025598242816 4397776074684940278803066806861824 -128414196171207373645969740345114624 2435133816121063913411653100634112 1270644385291833068652200414150656 -931499722372483085665178118069944320 9523938267809297694125378018213888 2981591650655081567395492808097792 -370287160658044375919668809932210176 6226700884604623455122839039901696 2242017684805874734406660159176704 -451932829568085210745325974045327360 2339345802937251093237285722783744 8644050916039072879183317121892352 -408965343907589213146754896462086144 6416445694958988391077839674277888 5143331629918185187977968566140928 -333787068051588683265067564335628288 1554095731405570714472374253649920 8821486289301044715125687139172352 -500618127717154139079526175674990592 878498762209235495958181178245120 7159745194599418273124829544579072 -634988448411384636806243236607688704 1358514471826379663224839820279808 4691055981412547747457404078391296 -678805290001045360271402972523528192 9478844041808349825402232125784064 646438874409850492956982078603264 -312659904006716221804797045296332800 3496364443612899979248461026426880 7250087693286127292472090444169216 -635126216951485580971216056860278784 3148856223829441693166836599750656 6229749915789293210461067450253312 -879553777309344646072438826972741632 915143903424923066038934000631808 2351625554975354774915750951911424 -509883152266715242061710739464257536 9493133734255745642790602493919232 4966653641794358312473087208062976 -468535777912659376532103741357162496 7772112196749215991124994025324544 7352859773950622538608911457452032 -508711624802039679484680129312980992 1028540897447737861782404245487616 6436852863785509363080822712696832 -506812185222195364561230287773630464 4231623041171306333135835829895168 2073289139679039023550608978214912 -690850110189144399047222206905974784 2554467047693998298703497170780160 5132987128195666895931861471592448 -740842146724062247004858292786692096 9400962483389959977295138252652544 7132922972665563447457517077004288 -292568505356309149137711470483603456 5337686857044731933595017546825728 4249985804317623427095535447703552 -901209074545005540111246655892750336 6958641509295727727585303713546240 2178740514557322347008488315551744 -987327289052787825763840562433097728 4044204948495636121517091352215552 9568833462004696505918671695118336 -475596343558865353762120120431280128 2620532191589185454541021386899456 3611208829334167854103319965335552 -367164568136284359112501780667170816 5589420429459611982741459884310528 7778249819272265508729903831318528 -459799877826202252396238261872230400 213508870504908366199937782775808 1635978977064302210411274059120640 -889540559918320578618231280013148160 8043488321167305091126593690009600 5752846113599270398514763080400896 -804944333420387020766112821985411072 3818650949661096654778484553416704 8112913764218221742090329320849408 -590658616003165120892008243205767168 802459192803881562445047417274368 1097897803005486875702177787019264 -554391914659825148602241977564528640 9105235598930835515829029523423232 2908234259818073392243621924700160 -740475598090051837539538967463985152 2660799926796448497184543942377472 1764437427555679733404014714290176 -277553062431796896932443367441170432 7955711615603362059064360369651712 8964135893421982119676355276701696 -848556323018057689954224338297159680 7396624794312012423889568095272960 693363834387461544879176135213056 -233049992035777839708319913787523072 3307366946850925334075224732205056 1452697426929828598382802856050688 -761035809966777432191563913997844480 8394693072827241385576863994216448 5304533499393847797699502256685056 -43358448860624806815532985664667648 6623640372212449072662511611805696 3041070885773444891075186381553664 -614103145002349727965161720964448256 4045874087831946522720793278808064 193543233626976287282758433112064 -322287106943037133627621384774483968 875965913073514804223636618084352 245587473200829840547774354948096 -362254992767527341542742943462326272 7604279412009101867062110086758400 9779829981123911805191732626194432 -845214100355148897997185549735034880 3977073420327303444156822912499712 4294252382248025327393936089546752 -135177735398051656075412947309953024 1137015459175123131957217465466880 5609664861596717347656253996793856 -787403104873081310551814369487880192 6444907917624102148749208598872064 8876264345515586001639113068904448 -8856940763003800030959818913087488 9974311083455825241431554933129216 6664266377489834409151045451120640 -374400333614863942493664342595076096 1478655810082995224652458806476800 9230942376996535426513502753259520 -631897816161254036312781798942703616 1127822018877902399243248562339840 6627423483207963000518151103315968 -839497658686680295977807255934337024 7779437151238402766261427734839296 5698665171115852589805929500770304 -256782294145956403431307805624107008 7200502751750939341359347297943552 7783429233551530226345554820988928 -994882259454886769696767763877462016 8035853824146291082454343023067136 8977750431071447676736891277803520 -748313053993910772446135519084019712 6717169364013992668695912551284736 8234446352317345785905170421383168 -326799336279717389466274351615574016 159059959569289932106235962720256 2728684492772320169961494287482880 -206567860974029544347448132799299584 7650231285801059333757771517526016 7097806954585686812126875058438144 -625766238143850791629844474859880448 3547197071214672837444773185847296 5533063280772526891360179298762752 -754062952654976283302683755610636288 6207416079193386101999483236646912 2591414229584140028993497299156992 -968071040641352208372456994474295296 388591535905072438648758796812288 1032609722169627783255761432346624 -943039311089430720143168769299054592 666897836313495995228296981774336 2672369449352037253651186053021696 -546899367004949490511837667054845952 409984510377882472976786760138752 7765340095451516677170456625676288 -724878132240683218887803122447548416 9973139680888484204173839300558848 4150547071760955546308762323124224 -722815303001211590843844266670686208 4318304460296730905397758902927360 7515129941875975222706935311630336 -91614453430957724220553145826148352 2884739036945172741831335708983296 8063343916989914751226281400991744 -48754379340711256804974682735378432 2453149971096142689010927425028096 9371230601721529977490090517069824 -773062228113492010683058006955917312 9067460283881140460387520420511744 1558396788278409019224745450668032 -103375644868722718301154015998640128 4012186802701952521288637338353664 6455058853949649073962912789299200 -717668971339118155045801341690576896 544943368163460794190960164601856 4708301535938397131026784004866048 -826307601693440764960734918987481088 6135568302389641296562767987212288 3390873990617500711292300840402944 -563553602374152472410354104026529792 4938800862480744534595680914636800 3658093239061375803463172741922816 -855926564857364791902466107334721536 6146935035304068994988248448106496 5014914102651205159176100214996992 -32308935442560701293795448276910080 2401967189351905731774563164880896 9933082884982569437222471490076672 -998460697227058077055844959201001472 7459149158536091283174229962391552 6084236175794727709790191807889408 -847022218908652543279555301741690880 4203598951779312101509111530651648 929842457058483076825750851026944 -948110520390165883583436479791104000 643075928787454435938198720872448 4313661273012752113492422935183360 -187626231477494137211125126056116224 2471120447205490498145999550152704 3614799971390667174239729853923328 -257188359057669394986602806217015296 8714803516915111844134886590906368 3506477147674682413436574283857920 -498492259095789855962954140489875456 7051572860835585108325815562534912 9144057279486831166384176350887936 -624867391868207353657019582069604352 3558473626835844090960385669070848 3549051584846209124764590387757056 -4581910907882655429688492791169024 34558103739118754235862027862016 9925335152386125522820386705637376 -848245005492944842309815186596298752 1526190979434761107305959419543552 6867007047136535002491017714728960 -584982409222671845473881386291036160 1637787949968625178908289631518720 9001411182947976014896312833015808 -456241964340947163618299764663123968 5262342300094544295046035875561472 967697853280389038182887552188416 -270652889168207479141544806789939200 5670141031624863446315376077438976 9563139102974289247666188784238592 -833318452181645432569363652396711936 6549799698819564995634801472962560 253236458167466406193800010530816 -253931906039719586248672684663635968 6776763222353763101784871014498304 8701598236552884089963013484838912 -781259038108351394162303760506814464 4914300171302438694790846773985280 3980986649452806879237822708973568 -525544160491557306910306145331576832 3591752376207285600691969580859392 6555242203033246500851481101467648 -315119512339314258002608661297364992 3092231290926839816622715191689216 3869218178499051690883783275315200 -906522862786914773481770101004828672 8623359431893594066490830534737920 2451955078964813330659412352696320 -209938587493161307652138341196890112 6903333740898991769738202643955712 7605750541920872381302358650388480 -790835925202174610421236028963553280 9706868110233121947809817858932736 6407296711647739197199884291670016 -407965055935909079162975187179143168 1180763616900632374383461066080256 6922143706557839092421025775747072 -686154812331864906278132722031394816 2613693198406854407259341954482176 6785731763538777886544126105616384 -887942180862871887005247667615825920 3034718708908561484471478207381504 2861550059282206117074813893738496 -587041365078586408060210414371209216 4141004487336641615908238157414400 3840343046721274505717491546718208 -814571404165697955696289394018222080 7630934095514041186600096261734400 8542038886898066456693006988738560 -133562883330638031524027540938162176 7282086474220605258057163818926080 120153389996758257095427716284416 -6316819874337924396062302751686656 3982371214059389232352989206806528 502312012351895775622877281255424 -179671581770718395484992250232963072 4472727104247932330080514055602176 1972945540711295383228059616280576 -352699851419797320108964515103637504 150778991946504711494940581953536 3357687532370594683721527882416128 -210710945867278655006726781174546432 1699962268956853077376124086910976 6121558418269202420390145522925568 -881336440054422811561416147660177408 2348619616101767572446543903457280 1048525797831300785276144448438272 -657846512318006056690753099117101056 7437476693454912749889373075406848 371062272421525202931864393744384 -884446270091745780259425854527897600 5593722993802469696490755174957056 4848600469250521708462557295017984 -504847829991701418616959058915098624 3028240801081653029406195086000128 4383132846285876047188457515122688 -215891537632991774909020964363698176 9108157158452184703735072823443456 991044483511415107602811570880512 -833151601341145370209112865663614976 2595822366379459294910039931748352 8998069267711995482904854704160768 -600143424355073240376422712024760320 6274065962705353864437114131709952 4385585187468198224349972649738240 -749953505870921800367167296279412736 5816913533142314565868115625771008 8891555290971468355452552030978048 -432585232225296991628305511273725952 1875289302734417429276000247611392 2603273057935497418870855611449344 -518225164886637346298633159408877568 8184238529493749856605294800404480 5805520123852820263626956848758784 -279022732574204607059529049149800448 8158380356790453987818546627870720 2429930103365390288563187740573696 -96634389812038132744721030784745472 4541581500529118608043972879187968 4702232349554938767045556611055616 -445126133161654659235846640354983936 3400647982862289290656261649465344 5404642417794511568213316961566720 -271709565762592551843754955562287104 3120342963348418315722012892332032 5955236715039028642791331649814528 -399843469363203288911361536207880192 4568106993036330289569286464733184 935876699186846768612198276136960 -402195574724783142320565256334606336 858598033970135268487008475938816 3792142648269792485599495032143872 -957021575988616135530787740795797504 4281595907150789979647937171423232 9507260238657243483984788000342016 -319120712702009896913908535511744512 6888125619778947205057791752404992 9990603131572028783219442452529152 -610814826483418900017484207080079360 38333602366447394773733864374272 4634798077653929457881402126106624 -120234902146223280103848006654099456 3196285598102919862778940400599040 9795726346580087071077866640769024 -760363548848923543363096292941103104 6087567953468106745565124237459456 3450587941639672120488326609240064 -838012481499359719488250894111211520 770468762632539400343192135008256 5797895598628187381046604422184960 -223972683826252313489928327117406208 7290825162601542736979356427485184 3244627799554362142167441065639936 -557684951233708655028228778377609216 3675249560292493969836884755480576 4763359096575158782141810568331264 -626911474644055241138329284128014336 800065027478086272608107772248064 8767804887252322439293898292461568 -799369174217972182321267738354384896 5775872765935956741355063815962624 7486985982427407328768797783883776 -930687490718130065303980760302092288 9742958586882566359327979159420928 1678208225994885322542686958256128 -630697644064386893045890262230892544 8270180037134781650235564044058624 4278890837670692196950344225259520 -466287811727204250502838863293054976 3289536328884880385111230009835520 3268418975069812874724172305006592 -375873805220372497960883528358952960 949371615429068786202698009542656 3585517370729315918858141856432128 -214112085021608712795890109497999360 5097441204729356803033231045689344 3739748280576979191578421708718080 -722495746434915047886774049840300032 3105590487544391004121536705593344 6750409509595888820747650163802112 -676124189973387793423663114871635968 4273802661454836333597406101766144 1500186548942495653984061339205632 -878875160174406413932470328199479296 6600024786484940468835797035909120 5130155303924322522753523674775552 -665813746617824552553959926056091648 353696405795849085717028005740544 633105955013882176021168549527552 -292299643570427109407930236161490944 7429601905214897809767483150696448 7466528957827381417872460009701376 -563971584344358254197083380117405696 1172912379584836059532750623866880 7198934665665437856814651477590016 -218195027984507843648869940196278272 3148527060080054217728207924232192 6113445157893966586502177594802176 -278280379687420882389156161292075008 5235104169526041092642455232184320 3249212849370956277328331048747008 -872784518790269649260823543164174336 9642210061091927522636061307043840 6978885098631893203941742587412480 -550887061577543831895925941027733504 6155225119712644942077699884580864 8580425026840416718700744747778048 -605895716703969177248705492283293696 3383512642867007288533445995659264 6291840527803389260950182268239872 -936693854428391922062561772451135488 3636127983573438636642499771236352 7144976675833371133481798246334464 -566893737451883297699254056813330432 3627042492023138248047454681300992 1252782648527351035681535936167936 -46919181891755746410320231080656896 4080146301316030295050874274185216 2493847887966873908044487223934976 -345507521607797707194123205855936512 2409710764959252038315223197679616 8119673219625166826524685637779456 -476361461224392970857549542501384192 3560436238114256581100737187020800 3233982821331029510001620953333760 -358029621634929090688292103624065024 2937991382513224578482160741122048 7470225721486922587701268602421248 -993565927767794931691030581379858432 5321218347263733297595393247281152 7249804929931155229994626379153408 -266385908957649773131016560804102144 7029248351285658564158673884545024 7643035909097444076006709879898112 -178053584590046915337309573684920320 7347941758055059675379206457393152 7148014735967729090047474573246464 -187937860769951247873273354539499520 9644734821927692309703309345685504 397040648318034523025656262950912 -607208127156984151383827867093696512 8777985533207448787489155476094976 8400166196936501400947024285663232 -812246420944882926433184971311022080 1817064162485545331703346802720768 2472188265222783685341248141393920 -555199928187862487610081436707586048 2354964340259858491479209940090880 8404156191597842191823297295941632 -177425620370214195257799178117447680 7953442324624801144349779292061696 1122689324315841810573155358474240 -714500786244892027551014423434887168 2352259565527258555427494108856320 6423238132742119848721303908384768 -82992939556380080609232489180823552 2278023063626807673318277673648128 2569348370597674239454489014697984 -85294975357173543151263696809885696 3131757731504357966843763480330240 5702123794172612453196410401062912 -843733482041567403674479519099518976 7671343067353348445429618354159616 2106411306409812948515846109528064 -901594114775969494738516805196709888 9969590969526401787225225809625088 974665629149722089722161418731520 -630371616620172593657615433924083712 151135346235885529438854494289920 5280819852228490597921884752314368 -329238006117256079603481281478787072 4596483568371280178281495490723840 923436235146680760904376479907840 -125340855529041735657362878931927040 6115672062672077543704829968252928 8047549152837989290990127009497088 -25175176769351786588708555664130048 8628438499032686498029834199891968 2730168105861034379129374241718272 -540149722776022067002781165120651264 730043350281926620158503619133440 7634223841646486043633586093948928 -960819247184229617289821949748314112 3154451425471103092452252910092288 1676962943850462218124397457178624 -532415202994355759520893320338341888 6914387707685568175998847951044608 9243628531043236198073869250068480 -106333766437775320108607209656549376 8853353447687930517549581523222528 9617907413070691169101466744913920 -33275272013021864611126959646179328 6098350860240149580903296031260672 6941987797090548434805117862019072 -129355238104332554628249473093992448 3774592518717835561199310670397440 1856817246084967946258864746266624 -375283657360616577275116361223241728 9938231650134354017570227453165568 8838933855079762901877111230824448 -152479591302803092269441480185085952 3721955373000747906849124089069568 967985022273788254902401026228224 -74706033219559949032084746669129728 619996898535260500811155180093440 9503755769364331649992033057112064 -741634780038441083179452353407352832 2311797443644964138278147097362432 9135727050086162582693425216225280 -281388539862265371128575160498520064 7588991083787981637780661224865792 6096052788368469152359908695343104 -875110624704278854238488513440907264 778285763408074848830411954454528 4862920348707480253486754489696256 -696158336779773100032275667644055552 8876612456500229224225674180427776 3782930246923464212150416020865024 -306037966378484261465418027992350720 3983189667117645983761885468557312 2634130325512287086813076084752384 -984702742493740339361716436903919616 9328209220000029719863707121483776 1387960469345602397396456022474752 -910225223941665833363497959506837504 1560489348868177352169238227320832 7644871707276789507021014271262720 -845756047108048118760295667303710720 2109028843459120862701044977631232 8706643420207033826314517842231296 -740174935823625952592583241618161664 6836118186433737663723692936396800 6337299029023250722447442631983104 -109128388380927781027330545810407424 7038178474366021555396300251332608 7267593850941119458302272705921024 -295429647487216282949576822999744512 3351911441902831299212579772039168 9482813549480101691644147262291968 -794663131851372389561962259011338240 3236793606058718403205264721313792 132258930735658734114999636066304 -559021003791758004295719492467556352 9204412567838833508516824738693120 2041730900596454873833614954463232 -446287839913816585564111723107975168 1607408028868174181932299007819776 3718591520164768867201172128137216 -566757741824931930994088031731843072 4741806877576962750014994128044032 8870616319258554477993705099755520 -299176332225255793118399622637682688 4178206288730012404571861906620416 1934925511937907874787032966365184 -643582430382001813957116213774516224 3956073678494189493129789384425472 7277475276163704720048198976012288 -980401763336379994626557656430542848 6294852101904186088555800764088320 5018941027865854987375181792542720 -622459700690009035809281412706598912 4080308196808709818128290015084544 4236651624652754893103284493484032 -234754967595615204437215347380060160 7950021453399410902416280814354432 9015786831286883612094640976560128 -943806723066933434537483785065201664 9050513107442881977821670261391360 2919649904507480225387504753180672 -444564683449301958216556896015351808 9366391414438301999307253656584192 6510943795537158975266649012174848 -21429674385187809849411907744694272 177340366602511739963082597728256 4577908310907214006738753146585088 -67147590596557877982607479484186624 9963218908980776366405339360264192 1035493353331949921441489524621312 -376602910569187549145167396522164224 4541340391084469810295999050022912 8381665466852331440889279253839872 -916773413558783133241189023805865984 2902742886875166173010131964395520 9620189511049609008155930419789824 -677230510880386009891188526806990848 4905377341267472968440937501949952 5553568911638599049802970061340672 -113220064793632581400215346705596416 8678232453327041632750341046927360 2030556713750400360727720918777856 -371498413117095464742269200111763456 8754722811053503872456116471332864 5878971858129421221518390616653824 -994872739309427387673719138118795264 8827510324797550392717917793812480 6228252293739139590353596308258816 -748564597791496260377555354322468864 7052862263776927388863836907896832 3333292060589433521944642451406848 -470601019855078170985189849702596608 4976640518197154296010886420103168 9584118454514777982090612750417920 -662730430831815006988829669959139328 8386323114454226248232679310884864 9062222380683372540058559984959488 -243284497964121785132470431431786496 7572864059667722350675793687871488 1017428817769067668115829014134784 -888413159435358253334658939661320192 2378594447665516873685882468564992 8978683960155805125792314809122816 -654946726646063110980992596130660352 982641578098946424443134936088576 4473645726314504458210785078804480 -52323546169401675328650618614054912 6395268378487929597669591555768320 7506424007140571943987270278709248 -16044457284206858559285745325965312 8815818018598925351135917792821248 9959631891629059156258595968909312 -756359809882417500448479350439804928 4274574648101830845484336372776960 8791503934357044765517854449598464 -274301004661425310245715899884503040 3707895086657563548575241605218304 7423721111119112832506792379416576 -857989137080030927679617994315530240 4397801825375959691301837672022016 5315101698267490704022119179616256 -579164175290456976577808870794067968 9713648333563304892240993009532928 533154349939810607890813950099456 -804304270880787416644509640622604288 6706967009189515374164723449724928 5534280345339336401271713236516864 -864874492623964747942894808038637568 7951715166040948522396808772583424 889576913908994319379132498051072 -87946899693787433439542591214321664 1782209361605100058876410471645184 3245137692468458397758909560389632 -813692575958186962987705711892365312 983204416900668246455987917029376 2882796488927574429618967597285376 -634536206032623017502029966754185216 174191275316139313781139887357952 4501055575272111298160564593754112 -411288290298430311025762869463482368 2190572833904030390213350183141376 6923905327360192756484168354889728 -89695369040623154756825787393900544 8995266202810893624974150996066304 335570240445565024972788107051008 -804740335454882854553079974545326080 2994707657885221916471728611000320 967901732767618464804020485619712 -389512183358296636837601737795698688 6457401074245950824648506555236352 6463689130017534697699085423476736 -567483198906649147264472135407501312 3140429468088644050931948153995264 6323418972941915994012458571268096 -923976415044838697830445123991764992 5412411159254495234040653450051584 9198467063154754457332755038470144 -335390627830525064714348018268110848 4610952966154160351499774257528832 6991473334035872920277376573636608 -48690546363145944561386830333739008 8931015683913504727114575362654208 8833207884452886574357952646348800 -631574290060748228947836500063551488 4480267914789408447918528499023872 4660444706298814886201283387064320 -826908967321469809640726781491150848 4853563233827141815799065950027776 2443768209184704424530864672604160 -388283165582715177828606849803354112 963465151268233056581269801926656 8927854709706624672084786562465792 -192008972555111015268541897080045568 5005540109716934515724505036357632 8869186754269171031288202171252736 -592536091155280567390956166173425664 2032705258138919566417628072247296 3801673865542721151852438777495552 -212529491498066828739335261394042880 4806322216504610546582158143651840 4597717816500957086971894660333568 -446720379666605570045261112038916096 2592318953200086518420846208352256 1818218390803244809189636085645312 -256434606531466514619762715777826816 2456542844317333355936732829188096 2110932050896422322792894138679296 -680376279163829658581857350690275328 6353332837939129987700669210951680 4926559720337012510959869007757312 -432728992109799163552235023780282368 4417366009280550344498374523224064 3692457410533355701303998450499584 -694359011176497386025140745662365696 607423861844150369519583077859328 6608775026253948439236282712850432 -40138388012112513685508264676032512 6697264475733381394951535434137600 234395685323943456853275720024064 -74839223870804923062861937221042176 7776607483688102300844575464357888 5282967114825230714476737324908544 -165807964455040916541649860876566528 6671310300168105334351602800132096 7713024192554282030075238269583360 -901670785078695189912709816588959744 1344363363439536280631000592023552 6016592624014755804625247244648448 -950427532016760743957541480883552256 7456947530121430304573418511532032 683406810409376848504742609944576 -899197112602004245740459671743889408 3929007192588920202560620948619264 5703077719654424589751388186083328 -885743709773778816512664186174570496 812593525904315025784420857544704 8757971858035593226990168341217280 -55150747778860516260371908152786944 5754641588654663977729485996818432 6189501718916479648197290579984384 -865266479591547034421809613472006144 2185190160312647667817762814689280 5323200839170473354733826846228480 -229062908882774034943335328024363008 5968662542682231290008501479276544 7300345972139662353247661115572224 -592676689671415451869864630480273408 5266699755181684109625013944975360 5027892704810786477653946399719424 -342079682030737047435298430143954944 1583349176595607142152804432347136 3671764572474426978395858092949504 -254125125750357456999726369837416448 1610571624966432595647123093979136 1197544918988973229439128661131264 -917082823379988343075318942364860416 3093107066279245499852809847177216 9618134798988171698857159163904000 -154886357914063103781955008825655296 9544270401195825727282656799883264 6902263664807078191361188849254400 -771701645998895111175525966133854208 3662609382911435017452813008502784 8065461750890720921397528119738368 -565822094691723071154098025967648768 7839639140457779802611732682113024 7940242619577769118414974765498368 -125806559682460050861198977603207168 1705128127079370242907189358362624 2412725567312687429320648165425152 -533385205001832516101652046485127168 5788477058115808655781182889263104 7882929017162044810219966288625664 -634218185147919311660007932978790400 9708486032173450565528259871637504 9190688617018183924885042080251904 -561547594515450124883654799081340928 6115293115270855662223069594779648 5226314007390769528818580844445696 -993769946593615313791725367933796352 4021788421045794943253843665747968 6200875005033141263925104655466496 -102102335875395076417516594423398400 74781891624709380324976693870592 3542118800778351850083684225908736 -19428350835892272150624228683546624 8524476516713669803958949250072576 6800915088727762730505286157598720 -342818516851556731624690499931078656 6303708101414753268059709563207680 5143004458727822172420018494504960 -488637124411770713070877302971170816 3971406317853736390999223637639168 8097172171632159862294419714605056 -465645967079624203432377971210452992 5649810737240795562404276307230720 5216730249488527203257174953295872 -598539274786994512830868009420587008 4002677191496585657668198631211008 5945424030016758508552779940757504 -343532843890953652381865831018004480 2971139556293374540818232878563328 5965243111305810978885048268226560 -296762613052426310316789366496690176 33453269232994518532378075332608 738430909685770781816328403550208 -600892184174404790090112008470921216 4581525225177610314415858373361664 8862470937622548466470020196597760 -479211573138447850677794809093029888 3965092078505119628775229281533952 2520531512026326522942723941466112 -728698148021686769026738219158339584 391774004064502556191918580039680 9738116568895988825707272883666944 -203440093409056639110858216809955328 3434019905996559476703219626803200 7806862602562989599663618634285056 -712606334317099288182620446236082176 7721608539502906074607575434788864 3940317926442531997909609854533632 -728006051476978662632368279589486592 1687162520174580666735698575884288 4054420173284903296191620540530688 -797549028045413517715787613913219072 6454222813674411921293416429780992 6859787101784304436660532955578368 -927181955980742020907560797388931072 9764351811608905493186165595963392 8125966315024142078052004672831488 -720685000331903777828069249067778048 3624790630204364875305849953714176 5555368397835547096013346510471168 -181388508889143227667616862207737856 2488533469486798091738382237433856 1341427395803262651496003090251776 -815646263349700172489702432089047040 7941009667950946141172059181416448 2924700100161315447198384719396864 -937605963887241047863269549594902528 6363628923737112695202714532970496 4868101064697201577726692451942400 -62990817737125266233897914390806528 919326791105128768932789652291584 4210423412522052565277237711994880 -246849062513500743677824404113326080 9796979343894485011841317139906560 9481572358307931962599866498023424 -187068502257631718423440500237271040 8829159569691676821650341539872768 7558652589471404095923281790500864 -242245147638055780158438832888348672 1371856047494421426617027324280832 8866966094131946080537085535584256 -457648036747470534438569043522748416 7524084756481407868716565101805568 4665136880531857792893340954394624 -169797951349734301892103423483969536 3283372719231132347624717589413888 6220108990597682094530247629209600 -594787496891160584178526703967010816 2419336430077760382720839574880256 476869080561754460030920311177216 -329606796928033933704797496440520704 142656739110142942333527436296192 8641779173591969057139868796190720 -304510894870867801892409754083393536 7988353189134698215913118266032128 6184054451352440330404415013912576 -145257426384973221966192791477288960 4220461527843706177959964400680960 467861604054755883185573216649216 -392888811201064611121223748762468352 2594307370424925595408679280050176 1327368521681347230931195894169600 -449074406082518330029386732090163200 78082421518371702851367828717568 2338431457527828498712626376736768 -893658476075096930701589910204186624 6203700211689607544866384904192000 1295723034154032271826722670772224 -712005484262944513223790868629028864 6442306233195304840756054384967680 6730885421532810794857637800312832 -510448161300468778582811152327114752 7483561138449602400461577988866048 5181945728406743702845622197420032 -975293531126564046561666057732358144 654602383607250572125613036929024 2083656604434978863976952648171520 -896015531973302859503416367210561536 745605443292065217114885037490176 3699028277206290147422243754344448 -431328728101463045207720431078866944 4648473228814612871893015116906496 2463989030485569485054980338483200 -500949813573172960121147649947598848 9254093183755972476107832105631744 6359863344703171417798212147216384 -192161205952346166731269566342627328 7155727094475475988148905215787008 3079900961586545020171675905294336 -110907324038432771573012060696477696 9664068156826688278678721458601984 8915924388834085388592878454833152 -142693147817398546986283033822232576 655138911454860644844612196761600 7292399399683379814240431261089792 -647164588036791428762726383283601408 1140908944362599952173122424143872 8048509620760594539713843110608896 -876967153691184229064646006365224960 5804042482180369483463650776711168 5758296563317778970635876129832960 -497828628986942993553593462903799808 8950281945743597606189476685545472 649087479658801956879799834116096 -769955585519931414822206035084705792 7476222600175963333144698609991680 9878860196392492627944771214639104 -345670475444416810729531820774260736 7443175344560518798813952051511296 8253289192893979003857023983943680 -908267176267864642000111221134589952 5565801443608423909635027388858368 8326102910133733913168840124006400 -238537289547525503618486334618861568 5929679132399777639422070976675840 9574461392716598930225090307031040 -599306670814323690535274950783139840 7663444491749435196192964894261248 251659634530982320460628079149056 -796030438185876363154769121021788160 1113542717299051696877252598824960 6915262192088958057738250932453376 -931817661676704179826623327137431552 8483136382927227175670043004370944 1067726420336635213704089755975680 -682747879814712783143889017549881344 7500078916113311780767375634202624 8880112153285546245056219941175296 -129994050509611866081923565474545664 6465909054812220237831924306935808 506405878601758139077410519252992 -757077450876312338463467703348756480 1694033422753292500687274687594496 3849140810463294127583642423132160 -946804651355520715215846510824521728 2092371734182670495021338214793216 7586886678666847041877323408211968 -316147731852928472443609903276228608 6246670290079604845491612282781696 4802615585454676010765689513050112 -301873163804413186939362899925139456 1517064041181912628406832265691136 2796290397126911366695199237472256 -619628427715414142250122679616012288 2533716695395210499879827425722368 4494027971832892037520849675223040 -54065000999174305555886221400473600 340628991017899371547583508905984 9329965139558324049925875355877376 -539947373507744232808373235189022720 1605311848581310054366016608141312 5049887174077858940821079465132032 -751037804534708620553451835936997376 7774959118379854042387866332430336 2558986409035255270959348610760704 -357317473436802137579643520071761920 6185178672240647226354049539375104 5233665041051003738867201053032448 -571924143690365575399725313690697728 493862331966815717111338134142976 6276863092975134610505869457096704 -557583215405440745227104981113372672 7109469865820902318485284690329600 9857349111034869379539619412967424 -347936706570103187550397996820594688 7607509863207051138113331464765440 2139027092465185069880198427574272 -36643261946764209072576373337358336 8298754735457496186601477880414208 9649171650628196333405794394439680 -376408877012432973811362017526677504 9111617368809660866888199959478272 4094911439877074041751539286016000 -821292357452177211503072041867673600 1380037957477836997956061586522112 6204291357056880887962994959450112 -589112800791932524448924925744381952 4286646191792561398653561738362880 750166013447979664930344196374528 -191974375844079262102683076719017984 9037120159374078289492438379659264 6179573963972937134287651686318080 -379103330853933293839058088390295552 3554123117843611543953385388507136 3348033712638903394769604217667584 -697037432739183809471241876257374208 3182001834026034630154304182288384 1266932521220583917635949192806400 -924435477328964064096148883867959296 1351854023460009036469030881329152 2084308762466954517853250403696640 -763377752938028606094640144422273024 255364231580336727404508937715712 6039480769069175326752780457082880 -434922538577401982064000047431811072 2049238354183550457511674527088640 5093070199590296024962850432745472 -325205105420003788146558923943444480 4374859078063940776206266135478272 7669652059486296775123054045954048 -447270316258709983710012891568537600 2339387971168486224111715563339776 9390767280419951599787059454148608 -485832966212726034565376711529070592 3170767702994455420615561832300544 6343444056706712199420559142944768 -977315639814656674055393340152610816 4706586484349092544346025082486784 9326094548335013845379584735838208 -935433527211008902885525601243889664 7949260186100986645661379064758272 9724352500710947886805536657637376 -362171962307705676157259004589899776 2383112077462716480478641597186048 8091866410872370008612647829766144 -914772702969341364314664168343994368 2287170996929344110055478859399168 7678932396621143526907598415593472 -104040355355841794199087593289678848 5105540522159998899620904559443968 219590593716518010279176420982784 -776647974069761783253672937864036352 3077272912396440584127975929151488 2600607711322915566008246915301376 -51053207157945097304708800697073664 1145636403540416136586356578058240 9404407266303914094167247011446784 -371154137757891062791867320336646144 2307523204338123379279446373564416 2193651263104519804537622881107968 -745932843804209513114005793165803520 1871971627667028218175815730331648 1900978845558528789340006459113472 -352150565657520836376853338797375488 617366097024290019236220348923904 2300484255270396141303699355992064 -304890357355701718348605202240634880 8303126405265637638031931955216384 8242660624501833426308354529034240 -248238097568856985227239744222527488 7659192248350414854647941037031424 7154695737340534026846562007646208 -924134724897096861232078299196293120 9028485405546095699239933677928448 2289413109577562805809710968602624 -897608786901002218205768918593699840 5551633203861706720084065878278144 1691791643241713161583108818993152 -594889502316527538630349668319494144 588909474249658535684793788530688 967142907780499394216032359940096 -386173079733250246149842058421993472 3961922577007442018543247328018432 7142424463442644720541377052540928 -809574154962630418072807764819705856 5637991174295650909270246168723456 985988196773262945776101962547200 -157328606088119664962270495401574400 1868357972329385049526454693396480 4465162959147251491364998456803328 -924301815119289108377148926780768256 402071669454174701137952768000000 5592759716699389585067332614488064 -315614246192728457324572215745708032 2207622334623437514591546489438208 9676218788540522194911589933514752 -126127217936957699105755622461669376 7732665327679609367832788943765504 4012569943877214904235200266371072 -443733340658642081740166199066492928 9915908875180897556702017370456064 7973862263666740758775285552250880 -781088492690496762301787692085542912 4229188505175178807411667353206784 6732342095783274322053463667638272 -897871718832781179243746962165465088 7653241433866737447679770115440640 8929433536663572257421178466992128 -79191843380510981766911797080621056 8277826565976261019954716289794048 9990432143868848610368852299087872 -674708040752353422286126219706499072 8296392634532863986614040516362240 5011170267823341314432870375227392 -885929753186391861064154430560010240 3311825085267291238599012560928768 5298066708464797164576303954788352 -307490417138319105917217087000936448 5473577214570698620998301165551616 6753593072258000298432094709743616 -458273156886295437475945688005083136 4698217110814462342517696325746688 8821396488034194226758684862578688 -925486281579792284976109470366040064 4787058645635153552976299708907520 3070253684295649149231499770331136 -408015559634763613675263866102087680 5180461246493588093110356803584000 437866397616430262122139288076288 -989914458299969372508579638085156864 2093561285834285192578557437542400 6128209921876816172251995653013504 -326937304486337119263249951828738048 6246512847771734878356526369603584 1876444378353680732287750497107968 -340873792326579126599010533515460608 1416166514438677035731987881525248 8635517218514310770504153203474432 -652783480102960950315451514152288256 7858320521480160844918159017246720 5663458637949467665757198050394112 -889691876418767927996991167944196096 7583871002832356898455229332193280 9969460113001464186771014592495616 -754327870051653276336108160740753408 1026444374866995647597785450020864 430185288336611017177339487322112 -750922595426558129348611404801769472 5234977396264330221416377495846912 3401768752872034056405325598162944 -581884225876610979762832614180782080 193324097119058104008954022461440 2848364866756083986630192557719552 -471567367465569578440435119922610176 242093339521055550911915919147008 6669055033569037122868363422334976 -48390423595854376116038469056200704 7629298520339887070442509681295360 9161098475541269778738090491248640 -237072872963869831643498697975660544 1604803278900546827519254952148992 6054566616210481832383113242607616 -277353943082462659781513228077498368 1499610890774776621405790684577792 458458673618383797518438324240384 -872171926199136836458484954258472960 5594424654552633126890732882231296 7303152475553590378609042599706624 -365515659001649488353490445386383360 2919791830383894254889836902088704 4527157196773585906925921143619584 -675684544463026585481600290806300672 891752871463332199786142922440704 4592908372579839283998901615460352 -588228704760436244199248241558028288 2299787182791143737887098941734912 7549984607670317871571319570563072 -199615544974385799162669066459545600 7288686791112352378522444056494080 5936939801477655730012014365376512 -912948501221560230038419502939504640 6816528610998270196069738571890688 6519733750464659976351133655367680 -432974825970244599526444243007569920 8489564336679467214487907148496896 9487609520127582127594868318404608 -114872529414592961748432625975951360 4781008831819926605093199755083776 9911232248059426316192155892187136 -660169791176247965666460058697859072 3706789056295183964304386776104960 1500079218766485521232137392488448 -196616977200936750906825292084412416 6917619069149515381300492391940096 9416890406635415274759531337351168 -192293360096086951062811553828962304 2335039962795377746649862348210176 5547671735339328875717227066687488 -474114210584266869127241727752536064 2129042013623292125444788300283904 3188571007544054950195903210717184 -983661146621027053019624662286467072 3798167532672061181578750279548928 195629795172776090838847186796544 -563383688161136649475644164046585856 7906096424094180730355342121107456 5705237565177482521258450531385344 -138002127586856739071464275466780672 5613984828919869082413932130336768 1824774391899950468065766504660992 -124653190272269573916365885324394496 6385381215236346720005331565412352 8788918469417925002060964284071936 -205947636781551650653952293946261504 3512923110768478983820601670500352 1281430965412178815408180438237184 -196228347898360700772871028376338432 5766314364227861285161220989517824 5763287398020270626982181654757376 -279396633102822059077950661894078464 1815203172430059300011078844416000 8278763510602350654120855949279232 -323459353788117009522725635355574272 2914763444952980986458021648400384 9506427798160423167295968113590272 -834369746701084185224218831294038016 6393291348333154743470452054687744 5411571852337482331422803768639488 -680769120302574466303270824200634368 6935976025197574162023713018478592 4763107077440429066259417001885696 -801642260679508109260954773181431808 9348668063683835668443606150021120 8056164122734605716433288728412160 -641050738075816420925267133639688192 9980589589555604118695798705750016 9346422805666089170812633601802240 -888108366303374579737142011157807104 5998325593558209619328361820061696 5419830751930774944405536372686848 -129305033592528601622599156694515712 6878250534445996403438616963973120 2047944137293056830128406375956480 -81230291204618527036524983700422656 2347140187629854270084067893444608 8918705557576741237324859830173696 -218123935588171854454453659267760128 3154553032880177180852406494167040 3222335784239199014343042779840512 -278547894113262745174220585331326976 3808844495465860156943538606571520 7524849199829473638285016553226240 -105324205517155273890291460446617600 5505738673886774607330022707429376 3252424500629405314150162260557824 -91435626496738301968264472670765056 5842582130067319418540703774408704 1918214345404887726446302870896640 -509558360851847432400143187947028480 5017742132301996367022007684956160 7716086548112634446655632772694016 -886529261095585439263206387824459776 9725939463514233778509505502380032 451193221271468863653591809785856 -827493003455976398571519366148390912 4430096953449862011544820781154304 9736019627243082622592177923948544 -763811471209617816539455034247610368 3092448823267778773977925244944384 1746949259323563987577377937948672 -747594753424969814920707236612276224 5407252598833989549937717397159936 4104440118141734822612137626566656 -388393829617164457755514910904680448 2261545285107648365208760810995712 7967183448246882509773602614673408 -735423045392435065690597550322614272 5914556649452658790193302131965952 1758553506560834693776430210220032 -994635718794330203853495628321521664 4589275720856360070676456780333056 1700593081936236617110888462155776 -510654279521628963354786504458108928 3799887993810338244068188805398528 7599970828703598754953524722794496 -193395275630284843374583488087851008 7653455368033457032533610411851776 20062262968435919042499934420992 -383248309811311728547935595813404672 2507209416384916653588741363859456 4018655785688779313106184828878848 -336072328428163556935687140911611904 8566048093657316449840394284302336 8130188796590586234259594918494208 -372725674844508716031765067872600064 12534208828524758527987545014272 3958827484669821066104846812184576 -19729731712590809375135347597377536 6607985070102751277840149375877120 8372591709322587578241676254117888 -802894125119252152001839460809441280 5681116855991061486548894269571072 7844788785195443706356707866181632 -540560350091613460798251075557654528 2155227316075395917258329679724544 3175709484731038441457353591095296 -796836826171815663650190126418493440 8432953738165921206382457885032448 7175574711060730711419630200553472 -325414050857190383326872104800878592 4242571400168690953909003194728448 2256194143282039838926760036007936 -279732401829202679900522831950118912 3947085035659220173359866368229376 8614459264039727759125106762186752 -465865507970139715076463456732315648 5879528429319166801754636184190976 6543820542433606987184147483590656 -664154967845088414232703026761564160 626935353167058642755019920637952 170024455173244272239558388613120 -70525270752326834796425029749833728 169515119469826554743422996971520 5978655545506072573384915947618304 -324847685108306173456790084208558080 610241738514288950585035474337792 7803055174620601907369079583277056 -287472303220619633781783471413264384 5369450965121157540208359975682048 8238816792536702892943817471688704 -460038791635296970098333867388698624 8039720903130905970318921506488320 3224007468688600430767759465381888 -292175344475133531414533767503544320 1090439124503067456996900276797440 3487032136873269251319618944892928 -107759759381775135396585389745504256 8226734570938954583100335084011520 6474838694407779100429616699932672 -202426998472299347763046901897756672 7160639898872602820027068629123072 7790857471738444739761037557891072 -338261092430248645335594710838804480 4113299319725447909242387845611520 297239847862289482688988530606080 -103036751889400494663434662299303936 6487075364896237863838518196830208 8590001806363436278818414595670016 -826157106244065282809394735846785024 8237146343780911256582586378485760 4349088440843847781998127476637696 -77670970858901073345516111218606080 9693260168831646611056969025323008 8670435069112454083122965807890432 -465789388511514609439501806773207040 1912167644674869912034047432851456 1919455519710793808758695134232576 -591527988315522447443782763823497216 1079370892396695879615728096116736 1531325436220995078218963411271680 -488561708688312721942754691687383040 170780139447450009692797331832832 2849303146825158673805900798492672 -677982653204791786461147587443425280 7325412495536848087483134282563584 8481546819755444247317853318938624 -893669680653204269272433231010988032 7079974489908159391226468344266752 7179996798509669207860837896683520 -344376193295675699115221665374535680 1009363965609339043243790692253696 7514872769550628791196797827547136 -653626096632176781787607745383366656 4176381675069567356157493520629760 3473510499762011522509752064016384 -386697611737328741379273378219687936 9607508735871764983854801201659904 1291428630232803445553144229003264 -459428076083052406903096185855148032 1541687072355799606827655920353280 81097954557732251905861405900800 -606620459010488716666001526943121408 46331472049407964017199060877312 4292115521281267672230539399528448 -22764819706475993015374318221131776 719634580014367757868625056235520 8178707613263395988944864204029952 -915081030422398473348397545522462720 2908582971059151960334027957731328 9474809148117784712586278513672192 -281927870875818729331515664264855552 9351119222823752011803516630728704 611525762586774627979007616876544 -273810606555167181900089581862125568 3914358981422072689061802715119616 7809015770559148048044500619100160 -339301742731030702489340314868776960 5480108054471379984206662645841920 7132388520260088307911886402224128 -305996508346392187828072395581685760 8821774357798999763925335694901248 8223061470318645003640938673733632 -561400095733213126480728488067203072 1881183336716573672242346694017024 2426026962651907475712809977774080 -43430561669615166328930499823665152 1241308381281551756720879171534848 4129573340029629485797274629963776 -791153752710506528184130266439090176 2975374679093958133544839779713024 3733114867745819207831525196300288 -170771260411689966499239896037720064 3178821163427507047310375218315264 297287910731504986530816983040000 -703946666399964869428477647543861248 3767191180980029643290940591308800 7367622726558716715208410455343104 -389337161417317250871562631385186304 7890936396523467434094999025745920 3312849574533823630233536496140288 -895604972598416058775748086740287488 50214285434694787087933288480768 3200233918779271609475817449455616 -344644084204362956177829773707313152 3723810371721292127356457318350848 2270076377607298932468915613204480 -24009541578158198068356110018936832 2055469753778276426541266452348928 1412578066395225742439707861581824 -134883334378062123164369521521721344 8983239909756492760522262268870656 9903782033883371208655237894111232 -590695532026499703463740203883036672 3929618088155031840542044681404416 7496586977543726763978472879554560 -279856976346546515769046833905532928 8989953623333274787380087352197120 7802737066408837914469889560543232 -546291800401038145718990127650308096 7704830101850446968369948835971072 649860480977780577854322536087552 -174920769102468530196559759874719744 1281716838799947725866213962678272 4317756686569986975367306026156032 -567313468714914911152530373633638400 6997366077069012497061902890827776 4625085715196543046223990894886912 -913181925765026530481452507432222720 3183739744242775310954070691282944 7392195278731573750367715080536064 -116929337559452249602513933294370816 5499924679635274177748146994544640 3460074525398969802029290986930176 -303610744175561011042193986937683968 9680050211054583370746300691644416 3650343622968506523521298162778112 -433179479210524217730723447054532608 2680942567287793393446967215915008 9012980352448246456071775552798720 -828999004887395657550299920485842944 4329927624089141341964925134700544 4368344727825146240684538971815936 -504889082532323530291361692575072256 6792632516937999220724118912499712 1560618601226136159050419314622464 -859013788077413330449293209965166592 5973134475143236226052477826367488 8610377934618014982415124877279232 -119491845059076748829909831217315840 106274799943885467225607632846848 1238513085357616366897138430377984 -252550011707225697669518973252665344 9965030294964500732227033055100928 3823725101497462120743090190811136 -67679441519829099780640239976972288 449013621048944809184532010893312 4609753045156879266883609710034944 -910450453459392726526809417231368192 6230941185171114632815705919062016 2710093594552132494962151433175040 -344869229686535676700758589854187520 310865665123417595647838990106624 7178559489118408433004631151345664 -890141611933805995466679277714407424 1512169046627592935124170723819520 8090352486449428082445846606512128 -270501029798746197890043152370237440 1083770712161406059052077334659072 2899485552094374547257071794913280 -359089840525474219597720148596752384 6990760419697549562880822196830208 69869302144383071981404025782272 -933920629653498935521588365448183808 8887715167691367508061539983687680 4796471062778899696238945269448704 -769967201690850910358424529661853696 3777299829406288358964523408818176 9403302801719372081695609338200064 -974882432557479008958646853409177600 6751624531004876877744940808929280 416334571963274758507157059010560 -255147858148478551047773649851383808 8567521257569666804722854468255744 9761380634201940539979361146634240 -469713760465338715978668475640971264 7104809894127541734551198808145920 3588464929591013921528392603140096 -529086809073599170229215323767177216 7048495532242602273641724081340416 355735279050628086814090545070080 -226933980258773827984367426027388928 9586032577746986084218936368300032 9278980130798948448730885012848640 -269341494217703808746024252599173120 1745583307367383923525049674366976 9787193321433431417213522985091072 -945681735675706028902495833798213632 7985632749070684754144781257408512 9271943263278183308982441958440960 -151679998992031689029970550067298304 2758014186124871098838675701628928 4905445200277709003228776912388096 -456087958030562434695765300229439488 207049173122505172648230977011712 7600456045510679800986244913037312 -299276018643256071577582182227509248 6504418279249928337890318728822784 3302624275146387915145939098009600 -407856638828110697982973620139327488 3157850799691533508397896675885056 684186869938275413919099648999424 -715037835061568462338884535956013056 870501399138160367390162071584768 9563238946554992778574501016240128 -267138564400858627397213563658436608 311086720464490513090535340638208 9481968934367689626103759985704960 -470973737419947985661804650426269696 3627510855351577381194031989522432 1960097044472050683019583538855936 -77157773473804550596607056340320256 3229755092929418800891882368925696 4626074042984833681078513320329216 -756569776342130791220983309344440320 1396736711507371612166612278312960 748441739218683571096073623568384 -721561666418449834597855842038448128 6396127412476705756651023725756416 3156478994538927839650153494478848 -956839431264823377874360952736972800 5964388628803005547357000953757696 2434721886343655946951160961695744 -163624718088791703559391282771001344 2821110731614703042648998231932928 6038120573612459465207128013144064 -247193836116402482641563060908589056 5013889963387576635614659476455424 5309805850996264390090704776331264 -940791666636282402107956204637519872 6425815923952821021285694547427328 2446841561972860719696524007702528 -933298730078527354484353598601822208 8074655963315422805411647971131392 2988844512366651679874284104187904 -867871373974889804765167656013660160 77962689600314796468628950614016 1342344085222828251870204501426176 -82278651927220700739546662783942656 7417711531283916447801993634775040 1599721853937460749465036156567552 -888088794183472114121158696720400384 4104720116810200697448019836010496 7549826602046941120423054507245568 -858728498979950896221474670019346432 8125922525759662777490399291244544 8705834955811421559499032170070016 -675613298405492170467385127049625600 6823077969904805163988038472171520 8156363652918739754314684266708992 -332221262372299420229067105936343040 619961845373552113932398218969088 7339064355184081354240342760620032 -24159853006252323981229036322947072 9064250669675685134965244719792128 4199841200030357184396122084343808 -912636018367812794279773635228991488 5924501807376499936797342295916544 3507572277504219809541279530876928 -292638252542740258253519580188114944 1258827786531944140245601578123264 2979279953557395771753136000073728 -671204665680858900442650118755188736 5617289345379796578857330317197312 6584553561616629052349436743647232 -603791728779715632649021027388489728 8355239876233639147231561748840448 4365702804759706458815680638615552 -672156410418254689122135521796030464 9855666148422018319701314604367872 8806578047477797627504506662027264 -640981514278086571386408874459267072 5174943152681645595003063923376128 5017614115637648204895440645128192 -666608536067957517421196975143911424 1356389687174054603014588554280960 5656026004885564641505440065126400 -375812707287933291702872012794888192 1849180144038841243246100356268032 1675251751450344098362594584166400 -552159740601359796628072845912571904 7755600694406506616437917532291072 6784077520458811424671229085220864 -615128560310389081645083859808681984 6787065935079851181683293525377024 9110486972349827508883670360391680 -611807971132488634466665764558471168 5015890533705133921637401588924416 7955226520068532708098143034540032 -211198941700747687993568668766175232 8882118664339250655073341307617280 1043451229975185633483970765127680 -695490874382546668312294457687932928 4692334308897588163275625924132864 1690092593172873886874500446814208 -665134965856725202043926718158209024 3025563023495123091050331010760704 8963171331474711642433919609995264 -374670284203717381713807071099486208 8686361202506030970018212001873920 3013987554098559469074621864607744 -553007045130381077627872919733403648 9136573037582489992116303755739136 2767923308499333517965867817631744 -563403202770492703754633112912396288 8008222483909184121745066719969280 9435579452228974448607930133512192 -475530724477984724752204282571259904 9362711088237653200652207975825408 5494621573051177315932040194949120 -640944632915106149378233108887764992 9385747486692481214413665894137856 8020022568431895497241703254851584 -144920282698476737761300109959626752 3831562148667547668080840688009216 2434266196533672324656110866792448 -7371225921748278771129908182646784 2388511759537522986594413221773312 4767971766765347631136340449427456 -224888147419968503136224657006395392 3892851227118873977225746596233216 9642263872751580907097863493779456 -748819724065611098677921206360866816 7113620064268222031336602823819264 9078797198259373579995590137217024 -818891922627805712043263049909403648 9166067102471553644277531915845632 7139468816280990380858265556746240 -145348814421627174272598308007444480 1520646655947616122723305911222272 3238526542664913955628340140310528 -144251037728074078764014571832213504 9119242354548011966239056959897600 4868373240737293579429216935477248 -314917818345811617545030056038891520 7334934728057674852520724191510528 3665240321112708901118932372422656 -210721462500132452802031929039781888 8447727798514630439730505423257600 3156882350927372400601397312094208 -891651434003702471094199926841671680 3295162035254692305773045785559040 7071511142855518080451268443111424 -104323928890441431388879821738082304 3154503632963776818649896511864832 9693769559790471574959409143480320 -917309049690045731637143362911338496 6618358814836307069807883232215040 3555683806477725697663116697927680 -882306305730878148817177793693483008 5816989709183157957753891519987712 5842939749282213985534323875381248 -31844377907596050570956747132895232 9218988855202683115205755270070272 1293658374871504417544193083179008 -224910572975969060837677635460923392 4314381400565777574393229174898688 1111360203490066460756128896647168 -114949546754888981502016758753525760 7427680774371563009237999912222720 6483143391086641945337591226171392 -324435153763622910635408078103642112 5343389075644439320628514741288960 9711669900344498389149167617310720 -251705032620394280671859814738952192 4158087231447203937295385583681536 5759974166980449936013047596318720 -695800280673612779434028682105061376 5675053318648666847134265208995840 9582528648798489357762408141029376 -609609223241341393572203252479426560 143925897606399256024632390582272 4883363372055092534898247877001216 -397873175388711478412492641765687296 1250690399551345349036313382223872 1969879052739135939894380270190592 -693497310645854545206716037848891392 3542532735324437741841597469818880 6755104205970932795566026966171648 -180794616146441488789258058780901376 4000825856967104753919275021893632 9845725363852289838273882126024704 -351925505285970047607825926014894080 4744463105955538405870132086702080 6721742564642607477279049977430016 -507219854205817798127840037053661184 1168858980702267694442155505352704 2052885777838710638414462887919616 -165763294604313839609170193136222208 8825623708375707632046964199129088 3510346016511174558948795051147264 -565099724602845582612361714495127552 8288637730163274502390741492301824 6510194405054420514567616680951808 -513153790274801441270174275927539712 9933534643481695483287590194380800 1369758651432625036476491723964416 -688775005813579388996094103258136576 9338852371430555956430466875129856 9073760680034537605335798744350720 -652007935055212835823991365411274752 2723204181471862445399873851228160 9613614006955182084607651853893632 -928635440343397076441954685317808128 2709014014886581788718490772832256 8864859076276672144147358739857408 -502299896385092846967247461104484352 6580160172177701614056978486657024 2518023260771125504590590307729408 -819788167269077422438533467861942272 3561677578186383321768133060984832 1408103347724837908403353641025536 -475479679595056213626693627796258816 5578537353679256076524922542751744 7877864611443821015176517833981952 -687300821422749412922491964345024512 4709222214976640199815466779148288 8199164617944745247043098041647104 -624765684715082797173297879223107584 8546122577196186750675547894841344 3006123388510152805435269059706880 -300501225905582157787970767176073216 7738127397855444517064321905197056 2806152841225723884716861977264128 -289130346357841879362290362578108416 5483781474414477126728947624574976 7443312583864859188669971121045504 -507514053569412621201568893786652672 2448633993012303556915538465652736 7217196057842359969757029260591104 -334212288275312818818590778559823872 5068042329133236234162751078924288 8322855003752496164596364498436096 -866820917066567803623413894520766464 9230035502764371041457099188994048 6472884641100278164658643749830656 -999590520843125676692375521678327808 3612049523897161995625866542972928 9357268906399171976334256199696384 -337122779511534307959524388776181760 2314062827887956616719055934455808 3375131091664370314174701351469056 -607790854121943933326319972973019136 5565783021299531130653075763625984 4691203964640748685323215426289664 -818035322459912046524655237270077440 3904267993938664676821358962802688 3686262083428935003629287282573312 -953855425269292378460291455376162816 9551765483720987698827556164730880 2578967167847772437731533815545856 -302559568656966486750093348343644160 6573296206536656011866100794916864 2636345956783560887760295548682240 -59840413444407150606502508642697216 415404946562073172004754560122880 5765285111610972233872005723586560 -779236440531651962952992645932122112 8400162689354417994962715059159040 6325662193906667627322371001548800 -360147439231726037675349121221787648 1519923347688335797159666301009920 6907581644676430774795661941407744 -477575841771460914620925546019684352 2004710795493396302092399947022336 1092308846004711482868297214459904 -401997059429824648228856912314105856 3078365292957525084882849832632320 3151679120208293991104608695484416 -409192235617644118910888349876092928 932067881994279941588091385413632 7777767149182476976622771239911424 -173731828108716597484364262233079808 5592266256587572060569967211315200 3870574322976858050455317403140096 -525407505289559820694700190687297536 816058771232568639104252188295168 5100706515695088918397157747195904 -302474802704356934373956624733700096 3677253256060899234404125701570560 8711960325492381630348216070307840 -192611549822030903033790076345647104 282916169128164384454280321433600 5758017574664683420692738455109632 -805557358769584249154256817071587328 2483243966605830463131201195474944 7821374596806504740351312043966464 -627181487493338287551958950692782080 4268406530007867230628288042893312 7142026845083201234272980775731200 -61668840058262837266864439176462336 3463344380141648016313360349921280 6115966369706095469127344907616256 -256785098046595036992177878366945280 6298372021611711645306526518738944 5213381576894952603216823535534080 -880971469721862580087114293009448960 986640739201376382723848929280 2265517740098390435948773762924544 -790161988701827366290422806685417472 723991956875009874543444609728512 8562100597311436852192025767837696 -731061150638977330728116378950172672 9409137583812784718229398607626240 1387785585668293152253908168474624 -877086890542859109520057741915193344 916944175563203913021450994319360 5332854325765526439957188877221888 -402892647111380988266849330442272768 8845029310975778787312164036149248 6693949579166350165080110444576768 -350382149392877247319051081942564864 2631509231730316045579168931381248 5206485571428034059939019243913216 -781383214062789264467108228774232064 2678324363965205324809755108048896 2537633869645423016547560133230592 -957595792325416995050190793428959232 7546430486759262402353274172735488 343163927805407453065922524217344 -685194282779587364222651523550674944 7464025561962885685975225439617024 8486293533281652438252987114061824 -806562823019804624702703909344378880 2613234851368764498802035186991104 5456240322232063957298620777103360 -414580922324197081535364183319642112 3697207829692183166219827185451008 3109383743811533362569953304117248 -699873860217194526722124878496923648 7800141723317883979891744058638336 4857671971758059338916115133759488 -954101947219667951495033996038897664 383228323869856392797320976007168 6396071740291718683126384178495488 -781609257426632751532706938063159296 7944690829243506741087704086216704 9393663106116546463078101148499968 -416366246204069347037690280930181120 9092165333530858224329324954124288 6593830005829760314368991151783936 -294936470625323628074134242833989632 6806289546642114867453592871108608 4695728417812390051416797679190016 -432599019262399907829025600698318848 5729561291131518170614937461719040 2742871210083339042225375022153728 -811336965720808596266485516322471936 3320376792133608725922835115016192 739090106008989006758416180314112 -222098691469874587655892145683824640 4294777380230443348367695109160960 9676228846272426800362393490685952 -247627984851244104840615127104356352 4575514873214931049028651770183680 3530994629367197210324093817061376 -791173987775334802468664207197863936 9282461198067598669075575583277056 7367498928243697618042152816738304 -457171473063639447058665619721289728 5753364547618014273513345490354176 3013164253358622347974444884951040 -277725525678781121133836903007649792 1943828416850576782619983250194432 6357719657309558420807024593862656 -245185269868641274337403510349365248 2927412217089893810354097462706176 5707272143304647491831786394091520 -23125995010758521042182995087196160 3529888717224656026823150255734784 4870454676720179461898382698610688 -732732758761786760817003110116360192 4627112757733805632394347042308096 8384248937784211490108958247485440 -555845378932295630842748100031807488 5488648906903022574823271544389632 6427570302308571531190923203444736 -107260726896630549728158463427608576 3704341214395839211004889699188736 6809147043377980955226543017164800 -581383625969786741704053744023371776 4162848196479355505763868580249600 1259728710870722671339355733229568 -177698754102559192221953478986039296 6291990350034046312836906503634944 334262028407483852294700478234624 -972984346322885715119556070259818496 5073585875836290462590859942559744 3598607186673397020845463067164672 -172766310904387332299874609735401472 8276331794548137066847732320174080 3690492574912850978136787186089984 -982052960958038564992585482102636544 9308279463666691074853617644077056 9270022964474348744799223266934784 -466752344261841219847236220518137856 6757486951942348508857702862028800 8823273559440845055262210878603264 -545191890566599418088059321486147584 4295839430986832969074553340821504 3171158487218018936522925051740160 -417646105360985242521076466622398464 3550140803171501023989330744442880 7445344883998726250572309388591104 -938575247284444912358799924449509376 2978891461140979652260938834247680 7362863333409228730671575485906944 -299224302230442824186053982498586624 3314583757595068038471435895701504 2777962337139397782734856853127168 -277324834866927755067919129926172672 5674813953113715412844542615879680 3897911535760020402375388504784896 -158679211373932812314223793160585216 6363785811886718643518157575159808 1264304378385931661930477857538048 -444203856257657615339750507723882496 458792585300078243199709714841600 522183516050422639802568031600640 -984467848219510276494494711838408704 6366892759517145511127493822644224 7171330164517207458052850879299584 -316152943706630928983162066422464512 2425075962966209986226638597128192 7376894970892981463630731437670400 -301637832776783714765029014828482560 4731294800640587211157687544840192 6441422650476590026493303030022144 -641223088451843598934126493570170880 5647259085113162062719690372808704 6806687310849100918127008063422464 -296602344885733143892806015412862976 8676498196539924616496893466247168 8476930885975889483907047882752000 -220317758392633169720115538362892288 3436264830877664888301869024149504 3591233515407353108229668812619776 -189829137834275129894913647614885888 6821345082449190773781242870497280 8457077837465611078010421641216 -565144772926293996474440929333215232 6851919807692636500180089729712128 4124946430543148707073504986529792 -83269744101079286548653095092486144 8948055584362314474358890311974912 9276329837051695634119952347168768 -931170684461092431639571456482869248 8279244954155768712593525406957568 146982581152597820799747941728256 -129487293482090151048711318265659392 1409172406092354227511371493277696 6572809660391417077877747501498368 -538302616708856042348931986977980416 9998652914000165299568668546433024 909570040731029498144877109575680 -397189938499608211184521339151056896 3917830783004974378671687702937600 6203807485006010445716906080993280 -366232159972173402413533479944847360 6348063218738905238000794899316736 8070060633141096751004300353732608 -679891466473852367806467772558344192 302019080198552860025307252391936 5433194430965037314961102077952000 -955948889355737183980931645951705088 6786226622058011690472260669276160 4085759848488299147466854744719360 -53938384436777512001466395525120000 788860920742262714877156377231360 5400895895058427438140645034688512 -228923928238586574045124015815655424 7618939662705440523062576699932672 7925715431277994862228741623382016 -3636497957375297521941551649914880 9404525473885689358951456289325056 4572766763626743440592651956518912 -65286845938408281305805499402289152 4983100651517983828188265208348672 7265162242345305196047721956376576 -366994260110246246085910795936333824 5747028298547724435557368140398592 9645278071796169099454732711231488 -501643278643173612761129074466750464 6485053957586186055726078103650304 943939604885717648601741617266688 -556060295623698732914177618005196800 9546847283588741337649395426918400 3345046080906782711887524507156480 -499278403736878366244024053982560256 4387095499903070137349731050848256 3212961987751264469565517384908800 -789739480063164954366640987966537728 4547716227936172665894032426139648 3776921695574100703701437786357760 -677642371000120689859785723511570432 2081947099084950011080869786157056 5323550529746805942706782785765376 -190839569486102950576291251706920960 3871731774890579568957991820460032 6890910913226386893161696535248896 -617429854955653739209122018328838144 2243835479748490510678360634425344 5946660853939644466856645407801344 -569064640291721933482266462710136832 5240536150837491323704937640099840 4701681699182662505084081754079232 -838209151190580847195858240505118720 446645860321810529455098304659456 1787625723683302902759703021879296 -161320952315225432284646994769608704 77035013712384096022925689225216 5706938917814912015128453317656576 -178850589836615975354709647804071936 3495484296354596308737538949906432 7676718297395177121992057588547584 -174152800455914197508025753561726976 8390777501139808469620597790343168 4028397105566944108007615862145024 -575596263201293810005068885228781568 2030298264289889056622940977627136 7605517603659287799786550086074368 -875974415740366453610982280064401408 9151376044590539109417785011208192 6453519812824649797804210320834560 -558082883845307741506200229971492864 9753427138621842409877105937481728 9270344155091208448462824694349824 -285870582145401867739585771626037248 685981147689201011304902250463232 5922043361296008305456879467757568 -239344036686133191896649221594415104 8720814621086592725720378688667648 613792357948086953893608478998528 -29358413124894155121136659649789952 4258493729628488548234004027932672 7269284020663847762433903113011200 -382464756984309144727054658708701184 4457242114410898417761843943571456 5935101846577266391236224447676416 -211745873955562966084697127101923328 3918829394203408497687002439745536 8990480504812117597432883863093248 -886502352726313314370796124815491072 4323143807241352088651287744217088 3455384744326651063403055302049792 -571534442449799384835252888482611200 8711918812772986713483332626153472 5324220569743260997411062360834048 -163203153802316220765673945487638528 5546556427081549889368209519280128 7264118402033420116278499661053952 -461695927230821762425185184992198656 1851804736245656095804918125821952 4164429433463292347049851626717184 -150467452543475281486833960251031552 848726116977800198226636588449792 1621820916321739591995362050572288 -767836140696096658530651510199549952 7702461381706735177440881083940864 6859889588779260154300914974326784 -942346019770813103510362140488761344 4071886836803032281654151197229056 8853285263250080907566422673063936 -854105001859381401875043108096311296 184258243652584414294776630738944 3904696835502534736582920107982848 -79071527009592370594423453339615232 4204084604524818765591563324096512 5635230610762422962403286238363648 -946321003689241822247972765729554432 9747273092453752891146363195097088 2692824745460419669841775406612480 -113896391756607103333415343322300416 7388041279402886309860486263341056 9906032379074888171813905283153920 -279429599521872393407457718924476416 7384148709138020487513911884513280 5281252379506300973023027687063552 -85395981840074428637303953638293504 7185019349214619999421066511384576 8974065224904802434058054321307648 -795032091503390268431306078199742464 6265137739987680173701542212272128 2750580750253372924119581353574400 -220893495535921383926082640787013632 5356015928651814458848915788660736 3113448468403931899276971978260480 -114965007024349974585717884050210816 2696192273248901101999475375734784 4267986828200878060612360591114240 -214143983032808374342156173361283072 9243393096819142340014078047551488 5548706871832759260251299575234560 -535130629991269512385773977607340032 3853299924593455044332169122021376 6322227173977117963412179471302656 -537479301322439682421820258336636928 24270236670581944090322010112000 1625754535739870549521980622635008 -735948541983561456714791454706237440 9653868892116331323445185955758080 8311293772048023550106074578157568 -765720731967171588933605168055844864 147199465690721552966623982256128 6326364659068628859815762518343680 -230232245551341086903237870088093696 9003433833660662231605480712568832 3408933155020553295850163555794944 -256930444367893638593340190968774656 4279024412783968693587201371406336 6272064521959154832063918346600448 -708279869135906751362142497883029504 1711017184398568351430629279137792 6096524223340562038215797502902272 -760896567090705351267653853376413696 8171845064500234405694602379001856 9143158911022582149802023039533056 -959830150135295436592498306355036160 1964462947019288279731271102365696 918011841628128811909625950502912 -386427296780727860404473283357966336 2458922182456040647959806335778816 6277850493631161070304694953312256 -93720994834127210592271033400557568 8022202986880068138585038004420608 5295222918389830798147352138874880 -180398604589175235099232212273332224 9117920710677849311703388624257024 3002687422977878720949313838514176 -775364266064420696304221558805626880 5182706479936044297863565594853376 3037177488125691319540502669295616 -737775060123377853747727941591105536 5706360808178648922299810808070144 247062205943430845353261168328704 -853117427141614715741148686137163776 4226075698243499746513733013209088 4764563588977086670548711604486144 -585847055970185398850374757972443136 8990802183570397952119840601800704 5167936714714945420101948798926848 -983444225304932766741801662519705600 461300185700051462642858127785984 5457468113856469503796930037153792 -456987029887860334138444662393798656 8154045115580347399718111226626048 4037607565109027123732355106209792 -244767223953065856310691210723328000 5171153061702706826538363245297664 9229248664354997806532974795030528 -444706186442190649523778530421243904 9694987418007634623066247771717632 3895727224390131694806311490289664 -806981428669375418129442045236871168 4084463252250933722065694686707712 4081852163997872253308967382417408 -619234210076290315086048863306383360 1063300228101593565914328712871936 7786578320181290597714906545389568 -3559847744834273639964197301256192 4591001975279043652815196625305600 6750396496835967941113625838616576 -160060697788430404946089836822921216 9589116722005385184979480324603904 3780520540590921971227018475339776 -131604248932638048255988588808765440 1280512197498064555218454727098368 2636719721762263273578393034031104 -71931409559291264465902596192731136 530294619704612404201229295550464 5545783216950596468761150791614464 -534845228792981563878730993420468224 9000018551564314323349457755701248 1070866256698700202515198333943808 -325206012961701056932773760409272320 677105749586899894887519279382528 5933725881383149243869712623861760 -636453470124484032314900314895417344 6990014073230761267716746020651008 5249167080813016815667588437639168 -866793529163779371419684596803960832 7672644096856845044592747393056768 794216024558845987090411626168320 -996457776666131352416609150078812160 8798640473587465324535294495555584 8261712703515875588881722063716352 -217753139687506958031321050222952448 8329710891855023352604215222468608 7683306952388041708124632594251776 -384998873803603761532101605728452608 2866866341340029204970723979821056 4124528845619851292144359794802688 -300362906826316814392487468463030272 9855751913972021165891138074181632 5436398254938499415030668046893056 -59693150673982684723773489140465664 3077881057089898404515747781935104 8321166926338168746213000291024896 -840192217004599685699315190923788288 7463797167478247203379559536787456 3147342950261728070312178862784512 -393955393778844882741314710195404800 9701116513239891773615735155195904 2678557919349487457409416336244736 -531996180071698265976323087798370304 5549199662618884200691188606435328 6526333339722894620574387548454912 -494696732851223897669640952456675328 2070750739803416499336461491896320 745436239335936433894694372507648 -813020025313309160916841335021895680 9195659170490647153126617638764544 3638529050500172086647728373760000 -19028728736825616989029723638071296 4993833579640070260244263481638912 4121138569714745808722064402546688 -424354430343913277529685053776330752 51275321519101262477519346466816 9942785413782090352816751988703232 -528919174297453183525835728733863936 5367410107016378347475890836865024 6259343853490960867723517599154176 -408122537371880987605676386336899072 3424208914129205197923571103432704 6040741518494476377121681573937152 -501768659031547532441403322718486528 9762413184140725104991638183215104 3952502326473883502856657956765696 -873559998047448910272448470026551296 9309045116684864536015772183429120 6332043721240989588248535727341568 -638571470667494807011206748912484352 3830831321684629757767614470291456 1768042784333179825700772153131008 -620452937105608517395849513522954240 9083121006301248653848396041289728 7326729951737796252686430934925312 -782469470736075155623439093272150016 1061872893559128652598492553805824 789117649420155873385370471104512 -481944072756754757481693302296150016 5272252840795102528705862605733888 4197546061663816031454783346835456 -962179785748577533477515173212192768 4913781470163901713242247200243712 4038773977199559674111867299561472 -487387402468002854196836703907348480 4954101517269826242187651559981056 9147122582364174075693044821131264 -872882342739551191595597330187812864 5195384795936316751077319246872576 3995301642838941815184293149802496 -602291794448229036778833771222794240 3613738830900272605479533168033792 6883583157265752189701807774105600 -597121181966370879503786747484962816 3691856417694367374400089204195328 1640397306677628705741172321026048 -757658665780003176658123970291171328 3503716264818666327045973481619456 4010891069184201907861679545253888 -335855341626436164762892033209663488 1076277344314034347473867959697408 1281842417809604630135903350685696 -611697217077274448440197256029667328 9849879286402689647086714264485888 3721143172292402366885758062559232 -407921030929799143363726095683682304 7764198572936587343716324355342336 4196795309558600726163845837488128 -46278797314913356125500701002432512 5411590527952316999828347188936704 1469800237353616950842644517355520 -880745989012281592348864969793601536 5026478835832933438136011580243968 489583458290895342633631508070400 -54326149138032988289323242727931904 6652684046329687806100700206727168 2748546440694215737992042919231488 -96738398482092672470835232652656640 8043689873510656599781953817804800 9253688118794559920327439197143040 -558850715855904685923945157712936960 5923269336889047685028971364220928 1128315876539004608246908746465280 -902961007977398026178400146132303872 9790781370323395950834183080771584 4944497404411685186348976734994432 -567846572372254472182828746214998016 1111173367822989610023530061103104 4233899421039902632609317417648128 -324201388167797240433090642590040064 3488812968978260204166376446754816 2347240052733433070191295384780800 -851423798620793364865290312970403840 4280705071224032935475933505126400 1141652952924070533044147027181568 -255696584786631818632371871321948160 7016720671085076236128814612086784 7843998188950457893860521734569984 -186781324311118940330962291183845376 547749002752946266063451602288640 6458753519195963922371776614498304 -824044404960190531303228623959359488 6181154362812548303555691617976320 7253241460383132409051562859560960 -706679162183196782361164742985252864 4551328891572922681356813087014912 2352626718995907419989084158820352 -870896981538489201531830844933537792 8103766514055230259458534482640896 2838075307980843981308896556875776 -25376635521173394157597471813926912 8804527054862829656391351107846144 2164478433326283378176616145354752 -443396188692122915584759703017619456 5850207633178995101872339663454208 7383243105936194098228591450914816 -454246818612405837746189118759501824 1827743857681534132146830275772416 1928224066621267722285555845693440 -324540257991991281245067974784581632 5245030337168871918475466317496320 887231139932441871250293579055104 -794924306820174940895160107624562688 7156143669383401925263801265946624 4154418074347403958330782306533376 -34485430293763025853561115498250240 6172973539622787230039284748648448 7714340451450764807522999972397056 -899021137418943273908770125031407616 153263458890221525676835194535936 4811035057307315694541883322662912 -567140069860962150313056493776142336 7784329714242856781474078268588032 3777348971360133768124534079094784 -190956196494746073890545909102542848 5683496100485221535370948720459776 5704149596359652772145125742608384 -780075430729153713151500929061617664 32260194581245658225689323634688 7771429306706647709075478300065792 -850342377623300578703736220621471744 9250234025700891479966161769070592 9571382621222229988130600454717440 -812009443065226745308447988659519488 7278216773344611723277173897822208 5316149106073478274821764300144640 -242650280472939444468513625589415936 6868882425388268246153383634796544 3241370260618208636285564311568384 -166842844548128962048848594286411776 2090877748695876892728297500180480 3585809072738220861709766921027584 -135853074923786012993668115165347840 7299582013880603363945221084676096 6342839788068707086757017205866496 -844832069821229507839520470382673920 2776394700806176592130831825240064 4748364036140781643971956230324224 -377143241905210796606921736605138944 4365913607370752052992591230140416 3874974798253408732131589189795840 -77961750297059932976961009053859840 1630228772373663168206658099740672 8463547656397523879324617839476736 -65828662650432831265748525439254528 4809249279219481471110533164826624 7457183894686185570490529288814592 -663727860617513373415301226287857664 624923788672111060673980715237376 3232803605292551600196560839770112 -386220967387823096730121714760941568 276415035804651095485919271059456 6174727779840022109915745896890368 -687296355329782619186847306236297216 5766182589727899969001839908618240 3199998642612371763625154601549824 -397844896504270919962647252130856960 744656047773347097662496090095616 3141184110063162128152036340924416 -383829589735439998989581795496820736 8469795656164949007125632396558336 6290590732562137227313073189027840 -378754819123428112735679774805983232 7960557317699683021006094022475776 395198848042307844787108564697088 -386848957217855486808203653864751104 2016697944413837854249720265834496 4457625743727580875271009879457792 -203445922812236666865781843156795392 6434252128011849769960023777083392 1254893924569309648470789219942400 -490392647220711484951435790587527168 6259279305616472140245917631512576 307108271086393444955387129233408 -534757876386041809086292221533093888 3918332721257006566772709531844608 785647000647755364043726180581376 -264054468354018926273321636735221760 2455006265422316351088612148772864 6348372993053796209457526875357184 -227597674778185852707740712666398720 9209471131122070774616196663738368 711131978316952786101435369521152 -340404646472600457750063472669884416 4661143613123912934093274537263104 3333581106974433100877831379877888 -284373056986723265779153779048841216 8286528042870242832034648584880128 1930256022857056063556113332699136 -153945175509905263956513694100226048 960691498196800777726343067467776 1192692396570624378953915774795776 -203369113723418212767714819295936512 3076871061873814509929835668701184 9435573803187911876962836407123968 -919749044037432679987022259363512320 5936610857301681697611695876210688 9519691414040572599130177524465664 -178505972959856197955647835041955840 1560919720873155326870538231480320 7499429383025125762260071690010624 -208886183005498749312538846030725120 8568216996054147968334538110664704 9055267457912567018967430386941952 -926816750406500936400323972297654272 1835510829208318922506885327224832 8573290722713524586157741319389184 -60445542345043633776723396277567488 1855838538485953647179336828059648 4200353254322113293671745139507200 -203143807375092125141247993866878976 1369068790719860635129115211464704 7597634240582095640950760030601216 -293498382586760095404155120052600832 7607991203958680629343326346149888 8804497041328513080334898541101056 -324541607036971265875351986027626496 9840886491235237512456530923880448 1741056921548736317905773961150464 -776583017933807184273236610840002560 4232932846614927583923585389953024 248400356341745595603318174908416 -341656948580551742848460020865040384 8764178836277456806785494049357824 9019947171953414426016878505754624 -224436409575051070824270558157340672 8578151500646261074681332706050048 1219693508666730717831650567258112 -832708945973479893095254794910564352 8718879713064885134475980798164992 7427255643096924134154536616984576 -643227362358021197083768771405938688 9426646980481854811441101881212928 2175047117288933641225996792233984 -659451951895838365226684865425965056 5936352791576603572656409195577344 2592880347496223616622489495404544 -246776568471781554222717674947870720 6569448561480503420737782097641472 7461988128557080290625504101269504 -463031638576252111018177586163351552 3208980652414409698866269557620736 9537334243027788765948806009192448 -472257323359501124036182790880886784 5577694473163311788440457647751168 5273680307371258501069916159868928 -802756182827768098042715550009786368 3254825329668248437641292669779968 5541102776738108935095030707650560 -667707139187920777662704234885283840 8553533536727468197220476107358208 5066020949450890895528427847155712 -857049103444462146046689103151366144 3482212180811356367640005550538752 3677287619978237375620985823166464 -620452456497024377184035422190174208 297769483266199404632028508848128 9470867185645543733031188650000384 -597814833512724827500294756756357120 8389347649111954110645469154639872 5411502584158390941452856809488384 -924388839038579752909559700601700352 8142351096308130426339856406806528 2394548912199934998081897190391808 -10905655408114655523493064432680960 4433467902884903370327924659978240 9676655294675572692058132753416192 -346629247423846005188648827380301824 1779829050235963317951337171255296 4164242032876510672364014621687808 -543328165496420723394707063027269632 1689634841734605683841378780446720 3686875042071543594401553637703680 -536402157486488833679578422474440704 9893418957899595019854243208101888 2935114560911492982470830404403200 -622649968358825054564814362641432576 1526081035076400414936380049719296 795226446556118787370418249400320 -855097311497082283801507181600178176 5373895886622240108508554591207424 9041758574150460538853308254650368 -357068074430004615985707118692925440 1056897051809943202462859488395264 8492402322708589138437723863908352 -49309810413523307721401211453177856 8128376581619777808691989781151744 8110860967937526449124610720923648 -130283359446874868750175763200737280 493394453727385598016187422212096 2368848364436994266208255497732096 -227258729808332462011663361146617856 5677414851601180352411120512794624 3744428492058813975777209147719680 -144727568436491034626857886002708480 8813510862225770054274102845243392 5465253521505998866726114385985536 -879174344269785873101372236561907712 3469177218826616202261246225940480 9242602500574157680439396522786816 -201536790715553698864907487813828608 3739174639543576064680098021769216 7136343959058382254628849055694848 -659798073468652219026724329420226560 3118363796391273900716482587787264 101936981336371951701233500160000 -544677989446335716266706969949110272 7665599758158819965993791646597120 9750301467830197175125253168300032 -423462827536867357976034026155147264 1811543650937588372652468283113472 4370815518944062478159351862263808 -192514956526757313112546789111627776 5219615698130429898034524522020864 4624091724553336893215692464062464 -120793643033521805845738244525785088 7785138590001604373461531787001856 1492243058891306808128609827422208 -12300793138565793603130556579577856 8738107308140997394224569118621696 7660585710169376436757992428273664 -609735342330172631057641027808526336 2241360837149412146587457736933376 1256021029812074369575816374779904 -422853578810702910629738017821032448 1384592095703768935305313834237952 7880064233485603434466463795118080 -666156022102221039941437191364804608 1991383735398679457869244131180544 6949255165218203007102413780811776 -236003056792330194195562808500813824 9990962430127986259163283460194304 9346205907314114005346550078767104 -989373079561088301329729539861905408 1353376966367580733775715246276608 6420430992286818195938718127226880 -289497671577866970749909400605949952 6274250256311750111941528278532096 3095998604557251177326149172723712 -746228368897396617757527199996444672 3294086601816800131639471488630784 3180550262367393707856419060973568 -772987140107551487221189220086317056 1292862636197341541632353725579264 5207456513102294608747423479103488 -462832238894724530965996427181817856 4895395314150558853298991847702528 9957862848800028444943477425307648 -682256186948817582803487883981225984 7009898786135545398434907031601152 5032235381861419600750526223876096 -247254520610830314694347204358832128 4743144842290379144276830037475328 9820398673264386939827338226958336 -947682082362595955935369203258753024 8660323478023817361879064236785664 9982667413550420564458673950162944 -280272302701973515608039995662663680 7047117929148978174547276670697472 1594048298011033899029681649221632 -89343738416931984201722776019533824 5108383280696716213193682760761344 9477891235404512296227658415472640 -592069101292379689204073977234849792 738784909203569410072970805641216 2346851085989448957954049034944512 -500331643540846004306550063515041792 3825509415161032661722117504499712 4533313100414600432108928086573056 -685466374019217216667463930989248512 8040741295320361568520391199031296 9348409827535922956823279886663680 -378197358120660973645895408411475968 1976256143754913144531608276041728 6163811347105281634313987560570880 -492276579450706816992670363877900288 4934519637085655516928873498411008 3649195307759252024006913548091392 -346248180867102499147186040859525120 6042120659738235037301743099576320 7849087145002820689968357607211008 -469044309538270605837898500664197120 995466501891094636108130906275840 8788988873541252628530570756882432 -57453004716361158021324789996584960 1412869938826962966113363295207424 7910403777810896039307606640033792 -630312877715209726638758561824374784 1332180615121544385690194203901952 1518744073342038571630808518361088 -9977497110406278463534754812657664 2484435446247838624825582513291264 2244518632254238835658986006511616 -977436003570899400769512451835166720 2948872349118918546291928747474944 1504430638024714561337679977381888 -997323732583191934142331885052755968 8940390938720877518672745033891840 5429451876324753654721739344576512 -115694804298170396509419429634768896 3570448622663568010543549250535424 3778097944374910315058415389376512 -728263298776881014511498220294635520 8555681775607051921665048516231168 9659439700032835938283324455256064 -381535469703260138578610992290201600 86091421913039757421471770607616 7064263406706860519965113416941568 -429021357306111566011497649589452800 9041194304657004345464542493409280 1334084625366442149170884334583808 -717586445718076534917904130023358464 2508777395012016795502231242670080 9374269337286404800863417176948736 -467012652944383444989001672794570752 127843898444227626407373578436608 8193474968457504457835385251168256 -99613152213779749663470161957486592 4014725144269755729778987155587072 5515116661096334629893502159290368 -198350940900396995979553374319149056 8017577108931836989178194279006208 223186580402284189637493326348288 -597578384541785039550679550122786816 750529323145493049021719495311360 7693964713036443277595580760588288 -787217678400073382815277527519461376 8136747138645023334070932725563392 4036918791189918661359486745182208 -96058461747449414718270843287240704 2001521129381330048124787972112384 127975195564206286430827167350784 -527756908726104268250266721536966656 7391814456991164656853682764120064 9557310353657375532461124170547200 -143061564600402493982885086521982976 8637495412241026601298812169355264 7463681667723372911948162406547456 -783192005221245257555061697845133312 4941266451258464623608726980395008 1254131556663378667960518177718272 -386897023838890316687109148433711104 3436296870703538405849547927453696 4706435647446449221643887278292992 -161415344994104526003955978370809856 3402956316621236204779269127143424 2689624786780970048823596358303744 -187339924727384770336202799659876352 7892481808218216322469142997237760 3031871828719476508127129703022592 -949433053358076138221773927324057600 8660248774116262857439605684174848 8690693485635707413178082744336384 -614521403004478037559995854040858624 1614447175986437576134807890427904 8116168286766127516690100657324032 -745250492986615250212538948729700352 333976136549250228745769840541696 3419920415607394991706398225596416 -142018120059008360852046574201602048 5795752921249944708948161403551744 9515108362887830665364653926776832 -292687807909656181245816862872174592 3203025175933949521590301617029120 4618812726104139428551513425838080 -517641169237435872901408104132902912 3045580491839320597750482028462080 7538883486832308605333939286966272 -951894188931984643328673808822304768 6641700360945972653347378252742656 2793655019554680873595432324825088 -729083754741988659574426921326346240 4217605167052074020843664554590208 306147186041088735621576359149568 -319340852897017808186770654211604480 1324554593188331169864256071925760 8731392593706080890138508138643456 -695843078700530457817138116446650368 440145032507233586423200454017024 7703898224479449994011895473897472 -854506265755655448999117531646001152 5683444754107962275364439150559232 2347628928885282080602609659412480 -703797197188194657225897810780487680 7592375666158057603881995197218816 6147747406435247968695149450493952 -926395604773115789550029123358818304 8401049814991945583838877785784320 7650475861386236733189273860177920 -338152060837916265578587789222477824 8476205132352890245534338833711104 5291040311643271148312195929997312 -886079720336923330653814603628150784 6940973735477502322414089224060928 4074353610675568040000879683698688 -56475015629686673880917959233241088 8815934290481280793867465871327232 3629953356771208050159985520279552 -791468662837370717621571816362344448 6193808912971803481461120028377088 4522658785988049658601899890311168 -620872832299737144378006243087745024 6781836734096339916649423857254400 9733998711126865336260437032828928 -942032395818626984683252192641024000 6557916887453246840838366114611200 5153387710087425504247229286711296 -606991249696074448436754208952156160 402016915244208172784345415680000 9379629844547135689674425764937728 -507171341331616945867908352961413120 6986493883351031039501668425138176 8762809410471724665437899685101568 -7175816024874075102205110061629440 4755637579840064984167156436434944 9023814129665778771736458740891648 -229074978672074051272556725638529024 4763174164323185102668610070904832 8663574830626905906415459832430592 -707610109971633587596493582522908672 3506138411282397689273905775116288 446673509927307590979092945567744 -119492167561515125630760023433936896 1663146632836019337317420091047936 9683927317090987711972992710868992 -990527421388736919916260400272769024 4497518192672273211816094700929024 1245493973736243841634262700785664 -23269738640151270340760766425071616 33739575506778027061363437731840 5432092858444079773790732290097152 -245958654480364223682145623476273152 9447647188933512991371070854397952 2044990253959775642010521597640704 -137567584734056562686833986709225472 1927294339866490949399566352384000 8836968219704075169617650584125440 -815298480194430170193448674483240960 3544584067180870505276497832443904 7019432479452306111972977175166976 -736353419486579694698043511505158144 3008438358354443245462171578007552 4696473680537935990133333442953216 -266530838615733686292907068512796672 7746696857704963928694876622815232 3783038140414979111302886055739392 -36858691756970162867628930586640384 3218756327052673905016290557296640 5477602546379805560841553332666368 -280897091288205625066558091197153280 7672198710375679829874336635813888 161368612651023994960966290767872 -945990344070828492516040522348888064 3095285105380545190256748083019776 1314616825006851572640433618026496 -580664708621499929344004466841485312 7346482773526980435797615526805504 842471851046612353623290275692544 -680011831000226737114361057893154816 9859682831668080044501136886988800 2198031840886476678410538720428032 -237579321288990911637570198154772480 4566004537428465579923530609328128 9137788186368556332773280430686208 -326358182543162526795492265727885312 2321918570591554349951582243651584 6384129359971011604334723754622976 -50105012386859592382537047604199424 4555872809353143225657602057699328 6773949854123840530434518755049472 -211637670779516804393134034113265664 9654364155893877322716619011522560 7956629198422660505805215584223232 -418149633079435316849138993889017856 8569002434451903425123320504254464 6473284299565130386005444035346432 -362433490604225402048770368572751872 4674274146688817278089880416550912 3268526847038450198834717866852352 -580069529864379418729134616465113088 1838932999091753917919959948722176 7670622138440939629653494499115008 -793563025720294270309234190292353024 6053714860005040502031706354614272 1736501542972580960413376300711936 -620110713146547560312236218259603456 3452378513757979885045315029434368 112227180205400247834612106002432 -143931270455228446085109576634466304 2040348095161632896895143808860160 6418555194962922692728132953178112 -711104659887617799921913359727853568 3466830939842378015225282736160768 2943264340476900222666629839847424 -745521313086932145390717769254699008 5982941924091779459600971888328704 9373931248696935662177052870574080 -297611876970950353452458377983557632 1786062198241010875636662212231168 5065833320133455894914505893740544 -805003548328727317744821919165710336 9584556270069308561473180130082816 8452340445733728188708835173597184 -124911718066575600827323094904340480 4489208048055295804634499142123520 1032069838692303745781031287914496 -583779399944815709928850636813631488 6290447110478396353898255480782848 3581332522774400101033861248450560 -650386779876053904963350927098511360 6813359677472711857009090982051840 1617728227457668485514051153035264 -469211611542079738711810815821873152 865988821178003010417500245458944 8950435729965229692237831546601472 -101261813991635464378522808380030976 6903320826440233214536737953415168 8747507450919773056925050479837184 -495665435349180238825179700892008448 5779039367661023522370278779781120 4700050786005291159234292192641024 -569709809323958079541347641009897472 2570602453257513153066291249020928 7891797674773012478901394878758912 -298206837046434969107051265371668480 9066007700602929443874574834860032 2582062993923732166774767698837504 -780545596835527508785840889140346880 2726354959808323994332348496740352 5857259819080681464178655375654912 -615811149434608286726685847176871936 3113914593576427582270264171298816 466722169191614948321551932456960 -148676939820352367346631457019789312 2413501245778449421601095704117248 5715158593443544966286381550665728 -683539763228344182040832933692964864 1337146894989272239313878127738880 2029290938511562031312266520952832 -375308159622024280896137469267804160 2206624530889212762583980239224832 4449919255282522940366506503962624 -950983375612776170008099017793208320 8556977087000225251864938557734912 3063206017595615710663801445548032 -254259491085327404868540631588274176 96332821122101667761898595024896 7892587336176711793651651100803072 -213329540797098571057128307274285056 8786720847488205426836898848964608 9191054448857698665333112765939712 -301981735183282079404699936385662976 6245433496836836345119446050799616 1752685215560672370084483979804672 -285500816317417788538747118006829056 8107768497491281261297860125655040 4896935311639722202245548698763264 -121657908388047138172981477526994944 7843667932302588755545330188025856 1314188140051962576574477473153024 -212257025155595125608849192811233280 4035034044450650625562649879904256 7015538216032523857706747307229184 -394462767890648440001684024282054656 1579679701777219945908380819783680 7485906088095680970159651465199616 -528792658635591904681990208811433984 2568020187339127155360655522922496 2187562200749344054873459406143488 -829468609879770091470886252119588864 9362919497687974626763296684900352 6547082925999028721382217975070720 -985903694546501779922042088241233920 6759180488056227259423017276538880 712704147665679558722383912108032 -260055759979941319874574641920999424 3823044882496851918443008810287104 5528053867152161392336317148299264 -268962281544720480166384794203062272 7788732423018737849684727653466112 679795572807747852568591060697088 -424203039467938294647575615010504704 50431610567858660089727717212160 1885960335553507203476243102040064 -546099294855725608101070892966084608 1976069691823270049409255004438528 8433438822939309752215079921647616 -141345646389406275742356418691334144 3676313869123504846416636645736448 6216561235599764326830240824295424 -242798263538576499441573755086700544 1726744651407551900608976207740928 5176031944225750606146342832046080 -273498910397073458644587369713369088 8641707562850946456912398519369728 5157086440126501071756636796747776 -677429493593762858771329587599114240 4640380917390898280844937597550592 5627858271886950808500468977762304 -714977682396124147388545718330327040 4618164998285880501219088457007104 7423654013474921179110774742712320 -530327771812685203980248702861180928 7500292974604696931445062676512768 5485943685470556792048981114880000 -817220525211545334782722949691473920 9814272219842185088991366217728000 7828103082314972058245122928672768 -654913221498010213424116790441541632 2206109341989369080104459740119040 6302629183365868211497273867108352 -735203888189719852714306728129200128 871591136284989799109204671201280 4295051585614503280015028302905344 -570707417305986930246623451592785920 8598931722236022942709128183676928 8692384171127557649664414593318912 -302650301723781140478485243820507136 1821424282509816060977823738757120 7613153410099785349459339133321216 -515962824169748888016965878220324864 8525126424380052865720861665001472 8830314981499992487378373465604096 -307166232842770907101142618803798016 8881698766085925962844096375554048 9473748897974709695896144043835392 -837003287096622559464653739993858048 2625246678000422759222676650196992 9008950926614471981866794606395392 -602691799160028300669994454220800000 9700378192108626283200309935210496 4253945403157425970127505226465280 -718792206456427719308612397147619328 7000909021170189906370245263622144 9363149946091873061563791965159424 -197571153656396889110688425559719936 6636182113577462385841071959572480 5281310530787537999815403647270912 -728650415713252299525777236284145664 3413493947802293904539772184952832 2597253870120673263891410281562112 -457953758426144584142863075452649472 713982828206038001601408996999168 7467124599425216008230735018196992 -956673246594452622884145962200072192 4316159621540830108997418234150912 4462942513926825767111779883679744 -840101277066311341948669536451428352 6872511856568137848064906467737600 7177448440651515045298960628449280 -500431904728206734615968327114162176 643404971264590864828670882611200 230141111728631758930699393957888 -863921102719481578383227591954792448 1221771737919858206016319696928768 6212386296476797832215905574060032 -591573713849130066937360151654432768 3517470454851873094826454371270656 2505496956006872391200566188965888 -643708154133130178751950003680313344 6666931519947052076041828348985344 537510263824402783260368430956544 -671448868784127502186942431391383552 9290013254488206626612410681655296 6692581749818571324081175560978432 -571809115233616908072566069164769280 8320498610176746428438570833281024 6682157300405747574833062376112128 -738358099160617904547239270130122752 5112716738159768097014392928862208 4080485183555857583618561698430976 -780598740503923515756166638385233920 1495529711857220337410863687270400 7767969170075043001016394738302976 -513359824460407600975719576157290496 8166464965253846631477453346832384 3631044971309636835286387043336192 -274895638094460291134550019483369472 7592567822386170156767776732086272 5216024685055207477958611986022400 -124891731738530192199314529539063808 1909288096775774503076452821368832 1175891571565884021160927261884416 -440400708216449416429403129627279360 5642138973477419865462559245074432 1472449465830093130903250414862336 -964479217925123233556215674651541504 3597513763812625544404581767708672 6523665644443559004086338483912704 -731774596051812695430416710403883008 3435483724392467292388913603149824 790024284160230594950924140019712 -757481945766597594170586089576726528 2492606478825489352362707596083200 5543734992074548556046920983773184 -244407820486865174300286677805957120 2635249297961127660538246341853184 2521026560887071278103625872703488 -642579640761677219004214976605847552 5933523145549181258742233701548032 7438693824038566780518699179704320 -989568166345652171859476075140612096 4798623558396953995648016205217792 4546171761844149351017156752441344 -108852976591717026379294060721471488 7294145081929701410365256931213312 7959060859221468071651133131587584 -793053774569602463441763968833552384 6625400091047911937519026903711744 396330265278951468126849541865472 -123497717006208866738636256647839744 4242232352162645024598945221836800 9592647109359734841535692611256320 -962943160861038623435642653231808512 9763519556796984505263086318387200 7214107438876275467394487913807872 -476101809966761494573139085890682880 8819025749307953005175394485141504 4590145494112384866970278318571520 -193549311385944605101782368010633216 5577555017225906099933830239485952 2336887189486341628292888719785984 -149259489968985522196838584856608768 9357703794553391021629462762487808 9135695054754257163743118613282816 -485042350568527977563931980379193344 3738426622892963014073318790660096 1410360180101744268146562478112768 -396120491750635586121897008590487552 8029405670442931878350242105524224 5763995559769675824014630785646592 -151731873976186318140212602977910784 3176328397923647102732681479192576 4840555677299194831913039247179776 -33296989998779894269101824771358720 5830123375751951546783959672160256 2342577577368533393033213939548160 -457599578463548785120867438099955712 8556309665842736126240231136428032 2582216179493130694254226629984256 -847557275825607462914573362807177216 273752493715931365963282687983616 4671194306715271874570055785119744 -549603523793446608454277368698109952 9688963291918995861260718103855104 7676477645411832670257244442460160 -432540703615734400600202336257703936 2589100779419520157537252161880064 8110494614224060881885646204960768 -525942928259202026663430966489382912 2088605002338228757924535511023616 8418596605780451037293715057016832 -224526566492501655323580431637413888 5388462364903516241394375057211392 8107867753181187138854477147144192 -218430154900671118813059734206152704 2483406353292343355067811531587584 8994233764987122601520858962853888 -133726003248489519241401502498029568 1905454724748443152753783950278656 7634740332256786620967769717342208 -606483624697352544186310143317639168 9534775640148634935073334768959488 2448070606157140557681335816159232 -491392433273878734498440469890990080 886849432501326289285106563547136 5106871424006881997593622463119360 -705944819065543229864595548071264256 1119793076494672114013243202076672 8138125364966174455146177491894272 -906018264510478508143429056997621760 6919992627817666506109561492996096 9884480109477896876035781064392704 -960817691572711911583076177967841280 4530815918510873248731530019209216 4416551426172918559299020395642880 -333095641046889278250938938368720896 5678255629047284102535228516466688 3113188268928898660733390688354304 -177913919225809117217140079056650240 2761977407714182730789026690760704 6443442280144414295379953368170496 -290283316595254379064843629414580224 893928236470261813180747908907008 1262486459118651040410871015669760 -749096507140121911030422918018367488 3276270038910363037995508487421952 4806717971286308202412630079438848 -593717182475923831078182921986637824 2035784563872876162764033010696192 1625595469346342830172751429369856 -536842664533226950595652185873186816 9355305162228935391069332148584448 4042835958628330174679980894584832 -426197090408297524463635108301111296 8400875041825450399163375157248000 8887829967440432910425266113740800 -281457461552677496786727433639297024 8714392474432609847217488928964608 3785505290313923132035489456979968 -992203039531061246455423806736433152 9588209193865577472932084776435712 8469830446863475765806210876440576 -348526416456715675571932420416471040 9532685524922584650246782976000000 6401367890019467472236917890744320 -837981788997163792643997077180776448 4768607663866089206793336533286912 7613855144575820234953360414867456 -734266324912321208219006456179982336 5927929782909978855781491795820544 1565743956644630750221978738622464 -504342048141645246003833879199219712 3688165749775754622938948936138752 9169800423710408306879113444982784 -715892565395528856427618715096317952 9628595035301041314552169994649600 9867643680205595677458727396442112 -460659071188185720008298400820756480 8706996962263525946830178423406592 4834040444422106525775996668346368 -777800264802202999706183507059408896 6720334906573108539062855466483712 5541354189511578446262653088169984 -393163806487320363585434531984834560 3759759005377432694434600199389184 1130719479421591928771950787166208 -763206760191940192739579124690976768 4176730634959975902974088438611968 6576567111288046983290924354764800 -169151586468520997161531236413341696 5432151141759004689097187976544256 5721602584052981703318131452149760 -410406056735652840687471252681523200 6976751080578137704941829358616576 8075006135928350608736280654118912 -809206014676744488064852007204159488 8990096244558885795252687591178240 5196489555268360068959347855589376 -82996111354905365317620064680148992 524418664133270651930617921404928 3335342910409271646488618374004736 -948163628483399528004924859203190784 8128153819309936809857648345219072 3063769040634022471776990922801152 -225177416176862303876469102680735744 4797838826109833440059335683080192 7065592902437302133513067662671872 -388341468504410573282030914876997632 7273344984368221003733020765585408 5138194367003888207509968943841280 -346676650024887193498508639002951680 6155191174867467331026802106695680 9475669390172468217378345538551808 -46993456516775119033583020210651136 1258829324682078268985651465551872 7053980827915044778792126299242496 -26393656746827032384643436849922048 8182604228402347606976135241400320 6838119224974038371510934120169472 -52998733413941426720138032433856512 2429267700312412660530286799355904 8453667548303446787112472143724544 -473419146962371760500164890363691008 5259680645300731075498449053941760 9385961861454242363239906827829248 -276341598351388590189703319005429760 5615375751730561626210133509931008 3882580150564546412393268122746880 -460072837197292201674657475277619200 5285351357505226184553246622744576 909556961954264097793060617846784 -39438941417996697270038696713781248 5022126374275017710574837751087104 7829855392937611398819096838537216 -114359318534394675406978161223663616 171545195261602572569203143868416 2858332963138055812275953236705280 -601483591523571462954584914616385536 6320590231075665025755522965438464 9268125620994912253384503563649024 -263638940037261136970757465207472128 2208463535798317164343533567475712 7428987893511162591097118707941376 -437546930095247203906550087630716928 8744399571500471256484118999859200 5969003890204453855952986127204352 -976080587144425003967602942548115456 4815394750550397229891889596989440 1108645696453176503255245478952960 -2992590709361950707690764926713856 694651495023307672433142932701184 4560729872496023439614485259616256 -641525395885356274465453673753346048 3963507450554739165874036953579520 4688991845608169624596955795554304 -923210419282888918540441575783137280 1039066963426874717629317321326592 261202349384786639867128236212224 -948976730564024353883392073395077120 296527536832812999681816733417472 297622068010116296785670766067712 -855472142722525224325373799734181888 1101859448055522292447537459625984 2479731763672480664969456975347712 -721087549632724252968701101040730112 3513063533831487244405669546164224 6501445540721740605885461550858240 -790361771766219128490654040860917760 2908951596661088847650806894166016 7418659038649596426326061422215168 -943009452058340508208036678715047936 1822200261827901335575826960220160 3498693063258487232173601380630528 -432680045707402179325747465017098240 4302815414824174427486062957821952 5783151518081263395065966324875264 -465879836191316534103429227170758656 9518276522681709813185091549003776 784452960474603183066955743494144 -607150934203512450934683676031582208 959730795438716623287675374272512 5581974229477526365879043916562432 -94760704007925523722788072807464960 8379557580172616680392919321935872 3638202772709541340995679802097664 -428878853380880899979925592274370560 8019397459748982568191871749718016 3798462203522833615740021480882176 -731065882493967584947438447679766528 9432947507064741804963400911945728 5279204840822209579328538903838720 -130677376344412280295936553729916928 5035944025389056978628034305196032 2294229429076115671674893935575040 -905725985896280401337901217216462848 5520112165504637143845360717791232 7797615631539759806164290076934144 -656026339155244030920878818313895936 1823909615225561611934460035465216 3726786878846530936223962318766080 -182007560852967745376369594150682624 1873580429769152598946727986200576 9174478914409624801366146960850944 -468811756191207901079862115924180992 8331027291942434477916583716978688 8433498277535201425571801873776640 -483943929175034226526648374195650560 9538656542409793940337029954928640 735879739594732209253043060867072 -308572681427203555679210993822466048 3968769415945223706861772585566208 9064253862591592888584068287954944 -655251879540587442294228729901088768 5465390659456764214313734536953856 7984520021262728457488889827819520 -52901046405553472186246243809230848 4912567982248434000790158546305024 4455140174572157369853046440329216 -15381421264773314136670105575096320 452081691665206479855633544773632 8426846757061324891669191697891328 -512718063078249936377914562323677184 7294758029810870348925432594694144 1149593705916456778432372027686912 -909801992857655387909323802057637888 2602363755205877767737271109287936 23144035588987703951406288338944 -748764516111841904150193791339331584 2012785396823679603951810887286784 6861734405443234779994350203961344 -399955419412071229894316202001432576 2886029288792278617217133950533632 1651353118381805814085381823397888 -368337693847918187369906920715452416 2377035978716880160001846478372864 940082167613255518632577507262464 -546203702553881621018190140330213376 2757022450503872330945927038631936 3616525174356424474263439844311040 -902444889680694685615014746414645248 4069558789786176210597748116815872 2258352908116269572974002011373568 -14740737035684721731619249694179328 4680170272979374118574116910923776 3695949519525774728297188484448256 -39250251135822857434426853528961024 8022749471106007486256065651146752 4097254093059390422033282281504768 -983127212862461466238315260117254144 3050219764678705748388151258251264 8268462578570900525441053263659008 -529799004817309879018080594013716480 6654474268445088243820091609710592 5828929200492694436001627949236224 -763338705619007885341574417742823424 66752622209665246174177698775040 4291746863395014134120497601839104 -438736713145063594657893493155823616 6583193427520144647902668949291008 2570075387541985692143534393524224 -553537904011205184351326026988519424 5236724539882501052775429815926784 7921370388694341734701447564492800 -277086479106888568186794012296871936 6302059642461958054632357527289856 6111466126022927389532584727805952 -507316996965188286420492072895119360 9693437424146801008071533530185728 9844869648708285038675179289444352 -441735264663403358638966079183912960 916035296562360737976497869946880 8562578616165881113281947425046528 -611285095030591375646110341304156160 2115562277623475268037829489328128 1750918822250722163476875307909120 -56553645321914992840399355469889536 562343274883061462922435277881344 7015436964731179073051355487666176 -368361298997786693255056014432010240 7281495588264101545898833340268544 9190022767743356077348973472382976 -972809329901921315177736299666735104 2291655773331635684851508181991424 5485783469318941330843290887520256 -128770810306938898684708187906506752 6649882634746144462807425687224320 2730455035362342779436533213560832 -635484098391454958724912251316207616 1768331941228992312179501700218880 5905655479136461118580788050264064 -247657114841903464320640486515671040 2223072243671060173433044675330048 5657103776228772656434620949069824 -796457377952215144156942224932732928 7579516969391777010501655172481024 2712008116937826203840590368473088 -790640193717670176596509992224292864 4463255739120180598151339346755584 5977228798854402142886637330235392 -330395159515693836002139074023391232 7884540167930924683998575823159296 6562472674340125670358020792516608 -248045768069739413661087240219000832 458648900251904125751058365415424 3222274065463861225902500904697856 -876105688867417988714114739024691200 4320359362699678301238169071255552 6674293272955857694143981685833728 -432039790561562208357861776492068864 1309310677459215821973329188749312 9806470617278267897942929274044416 -871901448996378934107812384707969024 9378957491220654510591551056379904 1600613917848803809858411676303360 -582469305578900177178580674701950976 162445868225109465045896410431488 7663075321146471290642556331753472 -972425152122142545296734559261425664 9306676368913449157912349087105024 4649805536777940336594258195644416 -654847830453855828204790123339972608 3483450137626064115225434337050624 5571688347258989675311316460371968 -299695251662590384911009869446774784 1105030846863477494152051107561472 4532014439496537131673104869752832 -769336113827948672929303537043636224 1620326580832042409859614291001344 5021618731726514623558506900357120 -191820100706727131123223618849341440 3693411564745818281483299666788352 1814569630100899517724587062198272 -848875173089179588496857701124407296 550336868561814970234593920155648 4562580352014913583461696494632960 -49135227215819098470461427637288960 9963254094176175668217125640601600 30765450780824197918351247278080 -936439327763705378549788257210597376 9097459346456239758476477076602880 3399672032240755397763568785948672 -456755620864439516002452348313010176 3816338969617356568773632458752 1888860961385400755334225474879488 -92476690235531733327237448814559232 6580327457300675230762712984190976 6153035814813534453333827843522560 -367580046002774192757280006840778752 2459774081456613266032273613914112 6768991125264066335892931996549120 -383165864085813170669465039827632128 716039043080880359241504146849792 7562850494680207162596702113759232 -637096448665547636702645423565701120 205636707208682376899898309083136 604570781508148061781823439503360 -248061604051914139981813802447405056 8552488601912902838173879618240512 6900183444599126012618157045317632 -684918048399041475606391060076429312 3447275673068842667360982411509760 4829929451468981617543397716787200 -404205590003251675650418059927093248 347176434143693476054335360073728 346285768639767992128421683527680 -933494793565236999544772741564465152 3813453553667979569231777968947200 2767355678719551737354344313389056 -501703676515261436401180541410344960 7256911756479582495273169541136384 4756221099025300552804478549491712 -902711019486394201220957789378052096 6763346095476602431967011687890944 2519561893585400732261283455303680 -404624223718093810715997998482980864 741077720426232645048536737513472 4161976763800944453317930071883776 -276561709406057548284157462931570688 8498376075650398377369119907381248 8260287823494366588960968588394496 -969207006342752337660419582227120128 4791038329258649001899681973796864 4469061625153048037922250373988352 -570099051426128357460228205753401344 6074577004821883837214138512179200 1967638111371881696347405212975104 -579982709286423217932629317821399040 234165646834970136899798372974592 9756410766921434983679031219585024 -3491104250752549826728599025090560 7255329179396045807976453486149632 5690949257323654072017433168707584 -903475278680488481980742380738838528 831058897317839964796569576800256 47401901196638776821481677520896 -415770200695492910370382153861038080 3035622451585052455311704370184192 8770022558629003245937264854827008 -487444500955762274061767283834880000 5750646321134654545481282143387648 905546738265888758864176742400000 -143101949619436981670843048708276224 537516138543705962997707821809664 5402708372492420518325378246246400 -287530862854184515662734359405789184 7767921346697917556982183389822976 6197884668526536360751318205202432 -480311850870773266349731265432780800 6522609080014424302735785803644928 3335275702254264491473674753277952 -463752254157224898388892109223493632 1154613301593391728154944101941248 684406304246104161674620458500096 -170773314266904935432346150000132096 572167683164447029744457626943488 9700612335383703186847904856801280 -409049497220864094866202906096304128 5644440921404549542965662676156416 4058978512993900651769293688537088 -612396558935779401174057701368397824 4249616180909967086229369112231936 9576385325031381659078028597133312 -883109602279030420886274138018152448 1135000729391971815777274263764992 4215484636085807105992448683278336 -221891183413493038626368075117625344 7629340802134348114928695576100864 2792261872401895520311618895347712 -779727540688137508802355243926945792 3098921867994955296442434046656512 6970858260766715108148924790079488 -288837590665198952418273010120654848 4506194663375012599062299431403520 9606094572146413521230236963831808 -550249654042850961150010434825224192 4589732626441276820236888531009536 6578319162499917845848123294875648 -261847663918289363225124771251355648 6553513117907214516196376448073728 9660162024300248315654378186866688 -260278040215853817160986884896194560 8997728442063723743751263886508032 2174911810631600067356423486439424 -566035385841028282287061679871098880 5967519792026731137136837842173952 9622108999336822640417065947627520 -474470603888227313020059015524122624 2854675031998712749594323588218880 646756342527826483274465648050176 -900777857761801012146386822378815488 8223803259194637135679951426551808 2675366868643854411755203659300864 -237596642037294919554553117728047104 30663881760891317781211755053056 8341407245980143448942237345382400 -833235351791243508165183326396612608 4021950150772252943285127340883968 590075006754310609745582154055680 -479456437501702268937629809994891264 6789785501662810755726089880862720 46934334570970889694435470213120 -837578303479502584719283852066947072 7024659439227463514860731657879552 4040622381276315173016086201237504 -360215825563015326157731489881522176 9960761095285049910553191739555840 120517025121885522626897116135424 -791407043811042034257249795569614848 3870390236578235247994054517981184 5730915624234569697496904832647168 -724866089136650557883695735318249472 6155167293859022066941395667517440 4217893410629476719927260210003968 -89074829245725764366706515772440576 3031754420892885405356674414280704 4871299818363155417848571322433536 -920328442782660926347824912234708992 2511044582920737172256455428931584 3980291374534456650232482924331008 -749709902377081788558372499793903616 7666278792064614498960190606409728 783727592191238910778688946569216 -702720631491484097065954965362573312 2476231000012188393187773123657728 8478247241569333087082796380323840 -979199368543057857658532261529649152 8561692632577417502420131993616384 8367105081259573314378297042272256 -62444570507296358874123894916120576 3434235408993529927652868666425344 2179837377535117166128977955258368 -582192164121852730317575697375166464 9843449317120334048371971385720832 5742637417436948577647060659994624 -380884765705011221287543461711446016 2389991849626103091559618802876416 3681451178135967388961315284320256 -792801138743842187998961911795286016 9097819472395085560069179721121792 778888314315875398424355783311360 -82382931574378086962647086823112704 6469746895442412418776040455798784 5494945416239530818599743081414656 -436625572687785787297829374922850304 7619993651341364445417406172495872 3186154437999715050302089302376448 -791008155967485474601804261998198784 6006044201363455587500235717345280 550220853037815431799169603338240 -324480431968996748634440514624552960 2387966698294291075923046947618816 8471572311362165699312861210214400 -767752967615106871415200686905753600 9975662337206196081227959396990976 1702522330155443137419606541467648 -11395116527400438467222955439947776 5055950805064801111667103733121024 2077703694590487565194300091269120 -881499178739545487783824967923138560 8362125093282729043902201461735424 7632030964596661153161888317571072 -712027060702602341674328256078151680 6299202793528905246492702369906688 7835074153901998692457321498411008 -275663450319808594310711032802181120 8516539002735358891878859895996416 4440941003316098159158205588963328 -545892617815378434381791616391184384 5890907232443201947691959652974592 7627329325179122628607373010272256 -953231104711350893723183400301363200 3512211301694275557913512179138560 2618475325859114073012842371481600 -936321695682709170120227191009574912 4754093245781733016568874309517312 3157082483340428325401806896103424 -123479191519032840500391558632177664 1948860096550971117556764080340992 1350611228120858496239086925250560 -351877694461996391490701637380472832 5467321082009347904665548952174592 4462156923576702310246300006744064 -757635132710850595592661376952172544 1167450396948722285484993922727936 2082153631143672083784599571791872 -628244694466063267760239128512299008 6993308002375808703385204626030592 8839643874302089070136558438318080 -376502473640568043090703285215035392 510605650440722492213167908716544 8987338780297014035347889897603072 -971512825666597369114805167508684800 3613082680197206188892162462056448 9617066385371057094468101623250944 -124804901500547544499496508700229632 2681585235559983136583043474522112 6945152498452924762396773771640832 -51784016869333305669878279405830144 4282162749385041351892825339330560 9141389033101640790147809878736896 -341007713398258828718157805161283584 3716050940441022785018289499144192 5221799763903400768252499632062464 -842113277649418497719683704218976256 393888204454360633751039738118144 8919222051239452226651873523793920 -994194563982707729643147370323509248 4121378563133836175689987261464576 6183035313327062251776277619933184 -915710976881925984976286164707180544 7128235187204683039469303886774272 8582255813020075511334168923471872 -739472796964501301742311704113446912 3069180238760170100741953470595072 1849624317797484030922335679676416 -31954014019499920822143934124785664 3531951021735602664195927845109760 4165071602832622363411234185805824 -868422662371981880539753851790557184 2313155149243994429569238560669696 7287726673192650997871811152052224 -606777086275298177653180352862093312 5940608580946847100807674494713856 8007789901375965419373708489785344 -609581407025435994054298007127457792 7123505697078697282291500106907648 5036979743668457851459866546143232 -732991233955689572097553882702413824 4093238989405018639080607130320896 2352751237235411770790740582465536 -192031474636774687806893802523721728 1149042840627380425281870653030400 2524499440106389023798244249960448 -867063165690476580684008166134906880 5684901632513788259149833905897472 4102369404559833066032344275615744 -901173457726255404018942674468864000 7681905454472121127818353375707136 5878235968548020832712224101367808 -815316634108903887180273174525771776 4851029058405674945138411039621120 646914282134357056380275672481792 -399977399324777666212838840429707264 3175549050610208730074916803575808 9252185630592262226244106754981888 -970329915122548236103263868352987136 9167109097676155444971905845559296 3986485251028466611963553527103488 -450463377032245488891045903861809152 7733525574390907089165268092452864 1660874104447583723308147751780352 -634313579834207991643233511599505408 6358363935853554410800442612121600 5497216119439359229871518688215040 -208486192398673325256088122644496384 3258291964246680465114751460966400 3866446101966895339003471705669632 -593092767452269991969884960939048960 8974520457253482863261448339980288 605335820456036113235212295471104 -722338681501898123181154478839562240 9440726957111858379553684443889664 7136993726982048187657421122961408 -48753862081897124058012975749922816 9752945822445503787985627116470272 9181763616448319614882708092616704 -290929646511177554286067622921371648 91808707191925940666791096221696 7773393927410352052823286895083520 -511960911486927428360288931212689408 9570317739762489659064368200941568 6188908969382227223297274243186688 -157846287666491510631563705643433984 7259262167877627420832041722183680 7795740087521808498220305911644160 -181570846219176020128932830656856064 6687561544727962154771300334174208 1812013230040959480142922640261120 -839336521313459679435067958707093504 9296599560814314566815783801847808 5852700811650192446787326392139776 -859463567912831876258641721069404160 4862331257259465709673469205020672 2448895632336308743881798084198400 -435986583931375503953108405984428032 5085082166617612449142856235352064 1666064489777163122000112342007808 -204928047811748530729658788310155264 4564318320539475309367517582983168 3707009321038311882047163520253952 -151312207428655909733717188506812416 2643530333204959260859876918689792 8991935987862940019623348741865472 -600925819523591887908276382187126784 348486374673418936071705826689024 6667355550614184083254734275739648 -884854604475365731028344636675457024 3521329381123888047204200475525120 3525083609872707995423387093565440 -91285827577574882361559759494053888 7064848678959029876185947707539456 8868903693114288404329021707386880 -804795760710283994620844707795697664 2377012951270810977922372148920320 5081080608358549718984180717584384 -63134761337972853120618795840307200 3035666662974106733257368289673216 6967628865682304029910136176771072 -911372629767790344561959721479700480 3735796309523413615867303498350592 2321766220114067911963098688258048 -117481657409228889105448918451224576 3927880271582839267634425683247104 7678881851603268198237158764445696 -261192751614010860845970019850387456 8633720232936486217378171516354560 2199914679554028191098693578915840 -700222870191396860371399232005865472 2163418536238525523856156459532288 9953419734017084763410180532600832 -770073691614429018325843095014342656 2189649875268289643431353884082176 3766294042104566700482851214721024 -798238361784660412909320481227669504 3129596473760029656475745088700416 3312148561586473479466853777539072 -933864026649429212083932304955670528 8968614088994337342917200247259136 7661951887803794803059557142626304 -692089500596407621594803861001863168 8344403134830851250954635334123520 2475237836751868548215703267704832 -468901179623280074171971357428940800 790419136384956674446472117223424 2409092080497295261816099499409408 -570326936253698026731995631934504960 7606598170369120613210516667498496 2195888873417350664437006862385152 -678572190415089145162978566793592832 1245394142365194064373069121585152 1151898174381390204697676053741568 -462383937230352410934701733560975360 4961727840055362740331145374728192 7434036352964326230904494238990336 -998463078029658834167942716506243072 9563146326950429274000274428526592 9797988020533847788379925324496896 -480504730138923594552620074244505600 8499808273292596664437611144675328 8512256710465291452726776719998976 -321729771536197189399258540802048000 43692728086024277287975444807680 4369556164873768448149894442516480 -586543943260434194008277071440117760 3456836644465318855192851450429440 2642218584352891830103967054954496 -231194396200769292986484358608060416 6929640379436131234485915267104768 1078967600420896502405524742995968 -192261164117580971174700669175070720 6347243962873051606742305364508672 8377868838089210894492490866360320 -527733956251263094005051166482759680 6647144621279002393365666252980224 1582219322084388084546065175412736 -696254389966040361773351298555445248 6786192586620699842286559271321600 9988824466949521966807013472075776 -779397970177631658187040935443955712 7061932203559039588893264571269120 7178739991156664233012454255230976 -558217873324838116408588494784430080 3476305213899978153417989983043584 1050156978128466246482267704655872 -424502124652657951173658158854832128 6744095302531587556395414062104576 9073626536949142990449111841374208 -443153957703327224645223674833534976 9379700997826852790967230751834112 4040808469391201165326297845465088 -872792513379358628314768136319533056 5726480344445638734170619983691776 590557458874885468136720488726528 -583430719982942626416469453014302720 5845466111232545136569138911641600 4901521417569856259601128356839424 -295976306470116784499127124192395264 4946427892981115703261592530452480 567067105206543338918391767367680 -238421050366694084510887505800724480 1143067919457017578481611855364096 5903322949702893864467640778489856 -49010531242559537842981326492270592 1606758451286019200136494308130816 3765643328578175770417763153084416 -707813751239541037667054807511203840 5435246645459763849011317855748096 9745173686966664935628746669424640 -378884382672827289112058548765851648 9115826377102470538377279733497856 5223624128914514685019174526255104 -585471118146398526267315257423691776 5294236573847339072396445586817024 5029826378587097813809134355611648 -934164607175112780648121029357469696 4602166578720764147288721653235712 451359422653200556257350122471424 -542974424582036042363486636162940928 1248681747038659467515398302203904 8459211985353817685306881706295296 -125060608368973937194061988699832320 4333939063552449231698438362497024 6644304033277183086984560463839232 -660878392168071962009207996824944640 703255849977339585235881270706176 1664080737601519533155915573231616 -55026805381163857323631872751697920 8310313874853565609500492387319808 56516747717002089051653274599424 -350808872627715799161937336115134464 6131390730613861114506949035032576 3693616729077238650384198009880576 -605259898366080339872596896342081536 5148863121829680649499966506532864 1778241163352829716022400653459456 -557261717854886279529462685956571136 6824856679021280655458592056410112 9622623512806147438476303051784192 -216478580559859023479754539665457152 9971938571743974155927400745009152 841322112854650705339620440145920 -342767923436873407532585961715138560 9751457240402857514059963589197824 1019028469352871651044204960808960 -144753867536308196467434205504077824 1071281836853320124492486648266752 4144333802780038092142212647223296 -299435349213104592690732662830137344 6059564389454842948576946937659392 9177464727057966023025417720430592 -367133146593657506026164937725837312 8390419131320309749907998910709760 2546642125988927661456676521771008 -861157587326408577766498326275948544 1040500161927204311391906786443264 3319415745477446859658703172272128 -910668081430921657069164627090210816 6311432543945959983720913189208064 9757257879600560130310983187955712 -830930688745878316005632773621547008 5229319039050773244255461024202752 7484349871116838347294573655490560 -257955261751444505171237193975332864 6759638620177516788460921374638080 1534813042878025404666176862158848 -635608855710335878443737931520671744 2439330048093629795036907236753408 3002450426028360008926144764051456 -160252446693236440564786786574794752 5198064037947112101267763076530176 3759295806001050505588609803878400 -917829811971110159908256792019206144 3756971724027581033608172026200064 3284498220306917122235210007576576 -306099697040442748567494170412843008 3312677767156782066110336113573888 6772691425737593691741968786259968 -650104227363980815791796887020896256 6018846307969723085807757117358080 9513944991760836715605763211395072 -943349112108327323342065213194108928 8405438189378772512993111936335872 4504425529953846497690872660885504 -387826467846081210613253364047151104 1089793602556435617254873713606656 9228218674947359278415719939702784 -732596409502182250607731571207176192 6054687255342123351698085832032256 261079981761501769961595302051840 -399529901381300222446721311789023232 6214860696531371941482674306154496 2202638773047666182104477970989056 -648649307160783999294162236105293824 2502664120115954753273030258982912 245479742423121909136949134753792 -235653029165480817218720226284142592 8896258922948031916348498245582848 3572072976533878850497822022696960 -310524576120318620266793299263619072 2775597506864988763734939778678784 7316574465530481251645419335712768 -309226459998258020975830968276353024 4997287371881414841827232923516928 4634284911993227981444635617656832 -392633278084021254433833064471724032 1577903316752210807489265364107264 2393209060937679079292551443775488 -511084754379172896173926525534470144 5822383243314040436067618808397824 6220241617055821452755501800488960 -922203858559546528569911687679836160 563409543988781877971859821035520 2242727188259077240929149014507520 -75861922218444025023237940414775296 26349646361913136868075121934336 3618707843170190860642664541323264 -952142548206074771669795016613560320 1900416976934822833702185532915712 8704469249452158756337053507518464 -878290426129683591675873744304209920 3956668917886126911823614398431232 8085925041654509837326573801308160 -850944728538434251724891314603425792 5253959709644634215758627726163968 7420572293057362551426247297073152 -611280319625352211893925750054584320 8446231502750223142664332707364864 6728375563058217688635882449403904 -221381807886618060254596914745442304 8310509577052904807757029184634880 1442739678370645008293310725357568 -40214124858005015204589755109998592 8108628840899539808358326069100544 168174976512486011547197684842496 -943259265883153390320928244386234368 267552116222681258895606514974720 1399132539307965731876320101531648 -267576989222174612369499861649719296 2141575637612434295304866110636032 1409785433804221786219526209142784 -213264172603136215250310926123925504 4517577830695919374364951216914432 3198678252906283169898304743931904 -594744228990753137621131325660463104 9122584470886939931141235479150592 9989167085502082528522581250670592 -935080342050868007098124464390406144 8069497521114754945617870882603008 779264604488992434895740242755584 -387661620715464499408996358571425792 2468351594269357628433953873461248 2034233417201540646925137692590080 -136966227241373880373521895886159872 4255345511823170153892790046556160 3168095110882856542837695322259456 -494412551266913523699320174814429184 6138274475529658664966757585780736 1300534358519162146042913923006464 -711622302665624300849718094129528832 9681370972286453984048910522384384 5594231968741543965759310716207104 -828351491702788728467524526823964672 8810716792838206867467082148085760 9798081131332243508891841900576768 -709886829359966931243377021761355776 180187682730024207854607691415552 1591154873184190138180713245048832 -900029392074700602435890211866017792 1235165052857830850302404034822144 6867314876594769151309075246481408 -890162128405895076618077820524953600 2307495943124672704639040585990144 1971533361835944328411684091723776 -807998436094991088622163662144012288 4001203983090267204188366146895872 1160453376620138641395381864235008 -659629940753745048723240692920352768 3982945240432426172414250539024384 8449133978346015054828704024756224 -439823505177472359883482409553887232 7651305604817593422894363077246976 5298076288816717312451329071775744 -880147397694939625927059910887997440 9906790883291005433788788803371008 744055837823276836082255042445312 -882571032511190809890095923013353472 1331086613527216291708897062813696 3216169922615655156655315268665344 -41202804938788450894815245031702528 720035547898701214372954508361728 1421944044755412368663614320541696 -902003653288589452150137074032312320 2095154499383280797023483677638656 9516562950934718742483892162265088 -882517457304474558265037940773093376 3206615774593619863433140898889728 9618737647695882380587255164043264 -168463569568971523888020149525020672 2591559811942591882029868418859008 3654475875038700354766901329526784 -277307024459885300841578204546203648 6432623340875408332704534327459840 9694904644270590944663022872821760 -306083089077460345724334941084319744 3006932773933199199948754665865216 4089093434484018568713257736994816 -588255039130479559835196974209957888 4526277150868856125761893378818048 4803165152085709339818871654187008 -260133813217869370074881096333393920 5816258777794254016718684010053632 6238402946078626015290504861712384 -554713489811110598930766403754524672 7742577102625565009503330215395328 4502178853610005914909522408767488 -219811429533551917949804458843045888 7211801217344407821200107482644480 4652349673234349257595472958193664 -194323046405117568184026299281440768 3892712584750503667859298545827840 6896600005502949792792422563971072 -358832344488788891381600390240796672 6395074601226572875096634479869952 686643986680605698539415553441792 -207912666606873721035166439287291904 3329611307607596682286630715785216 3985001472173532609131798417375232 -381256503037595793786208486418284544 9539666014147727238809732308271104 2299150138984726561748728804278272 -859569893745053561142894876294119424 261667037760722515812829081108480 2363422509546592217288149863235584 -185782558975542232962915654373998592 1859250735124794856217366006595584 4442884767108629598635955356434432 -49915810975758829640299972665540608 3271582096840501566311690296885248 7062900038252915863441750555099136 -663636163268586719050962449844928512 8598447506287075220983139283238912 438761378166647222003417995018240 -27607691636328439579857318783746048 9301112883274249199683865080233984 6925965057526144445678507607982080 -409977404631654171052946648442339328 8604795282170145834000398248050688 9366904105771434041847090222465024 -961607373760076765706037351304658944 3999748960553161845846901235122176 4241487594444785401250286332280832 -463654915261475092111514461754359808 7540568900913702572501111343677440 7388865723796085448915069557538816 -493425490743017231653324687830679552 3672650909118209481009605218664448 244358864954977386023748078927872 -169348822649079728748163808899366912 5923209942205173943796858403946496 3483438216316412526415201832009728 -820610757145202176196886749148872704 1546565221140503456909297532796928 5749860850452582437899236888543232 -559966735104692473545418270308302848 9552916106155444616431114255335424 4561201643657169552877784198545408 -997561364052683722679259875931848704 1585161738516909023800662696132608 6619844560070774893859484955836416 -66263586735961856038832102912819200 7105802541618737053095181856800768 1376071837720115747263140295868416 -519068827133771230695806095239151616 156399258087227779280288088064000 9484036312238555511877807047180288 -776318855957892540754705391166685184 4272206116851416192583384178884608 6301270413944273369478250534797312 -929194044899674090625127474528256000 1892147749437418349730912165429248 6716489258576608380007587225010176 -598350588949767918352700813976010752 157079099457230093987366700056576 8077835923146702423436567546691584 -402703009412076683556295044616945664 3736285809092469631177313933590528 4844662316816886033610143663390720 -419047582853411716338604753782046720 3824548357743431719706647173529600 269253826572039069227949597130752 -178496829907114369462655775007571968 9124038065784723924173003046256640 4402501148411058797181166258487296 -784461939074713097207429773905625088 4496763696545296546079520822657024 4513499246042036132498447251013632 -318049503470045654761355789660585984 7032907765319727284194950049169408 1297292623052937363560861626531840 -759593900679864302259402930481266688 4682476643411197047009355541512192 5891465926621465871608170655252480 -404075294348478000393590151332233216 8787122005714050122804371820380160 6364784020879253861486765407207424 -93755111401770460300809790203887616 5205271418843487979969866341810176 128972933281585959274247457079296 -209176727201976580666980073184690176 4923977597213756359823412913242112 8078712510619930537293318205734912 -733301091105128858574133931924258816 9677125108614423714069855233638400 4564965629285570247769466387562496 -307785832585752367921784308717584384 6466512170639726331955046684557312 5618853147099120442498658445819904 -205416125690895812151571528384774144 3252981839290019558528403562823680 5853134321315670712528363124162560 -501746618848287154880288503390797824 9789146713124266703303270970949632 4692999634694265414698484772110336 -26078475032987920208051115017633792 6783487243915981211524261379833856 7531804873204883312095124929904640 -729604511198101837727623836805890048 4256305623638046098871744383156224 410444450821512387486161420943360 -895511291934726890643000472312479744 567829456246209591832863739740160 8151067797938487658928523062542336 -562442503301907267137141106160959488 2745628120186941595163759113928704 7063159700435947288745696716390400 -473968459714851679183646517870198784 1085010656878528085203038725210112 6460241651486331631739026259574784 -881095361364355406653996753146085376 2753747404181436467490676935753728 3883357588202069357311163317092352 -220194609750868586732007210193256448 26602832120994525065594747748352 2029499165329399152336463118467072 -219199034923998009306925154099527680 2199615423484756871329132065062912 4239677725088317445011529975988224 -66548179303212117041550730637344768 5832325988158479608886228546486272 5288139923699269364120192509018112 -180827342878863411133736244568129536 834784570851779422012126766563328 213533505170369816293018924220416 -130904928239385464823022818137473024 6072779967041064827575285420392448 3174036937562021060136930033795072 -449053059974398675414030450371330048 2648615052437526405419061290729472 6138897066727183013048425069412352 -732595849302991312240188002003845120 2339718009847141976941289004859392 8113491628257567574028622229405696 -772296422662970373046839851584847872 2683669597338981936738758731759616 8500171649006955433937907065290752 -271714648795164646861793753183551488 6254453368981055368211203289513984 2655151991131551210673939593297920 -966305447452723697971107695935094784 4115719194300707374931753415213056 4828616153705341702872039956676608 -65230463300914057599808792053153792 8553115373070613588290162770575360 4132268382457938968054258647171072 -75984223894001083392818948090101760 8132889560181631703315657217015808 3161539871152191230128120553013248 -198819025551479970222486715870740480 4395652459709379613247380511522816 3715613524039976083003580526624768 -520530697443465994416219804204531712 5418130036334723689642756310827008 1082210910822197298424688198811648 -735008436732472645271087122873319424 6170085510531064151411818275799040 352276527012589089577697116422144 -88014032520876684755652953004572672 5279656648471916211149185122041856 5837017743319359679569314556411904 -33611630528544979103925968050323456 7444764259929488447532846748270592 7547857658587920528071450611941376 -131109635155135910197274631288651776 1532614562885304081086816679100416 147059480170340174948679926415360 -344305656493323679781970055463436288 2891958245506652677912276271890432 5492839881278983116025415105249280 -310465045609558992612157432700862464 5183488579570350013089257808199680 7329253346450462564037677281181696 -321099355508115694075435239014924288 8607758153307939047096090781286400 7482278391512282604468564834385920 -199109830904774625595619782231588864 9993782434443254662260539973959680 352799983792459543399626585407488 -382022691566045644624684718525251584 8479453115512413319958201924321280 47961009790451851631008143114240 -894437827801025055185563490036219904 5076020299717405023216795719303168 8685862966834204761601293525450752 -416340621089208205721776217609207808 2816944551565596111775514243366912 3755161292803822124173521391190016 -147264593747358723021771561708290048 965649801879586556472091624865792 8460928377042720965076869030346752 -900691467342161254158326701647462400 2028198343033678015829118403215360 2688374469665770070699354965934080 -764494599832971006081271059412156416 3942262067865671469095550466392064 8858213455097388506399099408351232 -58386979997215576803924151585734656 846931811599171301896854794403840 4955036143909276688356288569016320 -864306302901790919489683460328521728 5407334529770097951468605484826624 8178263906123297141941188174020608 -337515951432740082198581500486615040 8130379715520889814220327234830336 4214116426055007515449483671371776 -657005620241547845012905801635856384 7225222005360219089940537145294848 4721400814014560556579971368222720 -70462548657793382648910078667653120 9085139573750708141329430440050688 2592284474115321541348409496043520 -276762388667180527595908421222662144 4101135354480691448877578515906560 718387113521195429132237774258176 -896832782714858338642669499064516608 2138547891568336992601305178439680 8765144925613423345822957746257920 -521228877343216048193954230292185088 5319296998451182517506906538377216 4443658935051961193465896427847680 -469849834607829121726045216806273024 8288907471601086378805158773522432 1089354210462628102091374638137344 -280928046182545692171260096180912128 4231807050791644386206463553437696 545651793980247172571121592565760 -709444583900173250007004712531918848 6466536456906483791383751615840256 5314504813267019399224107171053568 -65993668192131459294202165584723968 1974548850381337391358354690932736 8648119007022625321088533623996416 -924775498376818631826724087945756672 7352950055649865590701513030762496 7628563640773859312372096914423808 -412200209750787190331500957389553664 8243898156139555208056142403993600 3354491466612861705389843402457088 -249779776089580210860452018625970176 6519505678355221774654195604914176 9746195572812285266936201266331648 -83712291507930728709124181691727872 7657329747772498425505166611447808 6778837395971367447915762007670784 -90354049382975676601058270300340224 160520799966090589765291154079744 3870002066537020562322089811378176 -714895126254740067383858656159203328 1082436724857014676594296818237440 3967036060266865318429725609164800 -937918058913176779415259588727930880 230502610051390742678072163565568 2738162292882466841962339039707136 -590977954497698075715266968155062272 6418324657571089213654397679042560 5380000832278043057605333500297216 -496455875861991457973162581250015232 629297027310501937048362774691840 5108638627833454865505571208953856 -822579551783395080936342709182922752 6716447842554176594713699789307904 7008607921822353882662659036282880 -781653148396533493199456063769804800 3847803903467616848378059814862848 5793132875872486079071940213997568 -215797071188457096258410869101166592 7952530595001928878765091298738176 9341150180839052883278230743678976 -229706377692448318679927618770305024 5592572208654207432441418123051008 6828140145176113596175957826207744 -756144172125670166692944548819107840 1380660052824914625329250806267904 2796983337192356743358514808750080 -494931258007823175351760148999700480 622029341464257121052296927510528 3280019076079424184122009758728192 -554351954584027957517093339964375040 8145220620207853423226819042082816 2444912019006156352741928813461504 -146964120107421485637683280802217984 7869010042624986765896641056604160 566824258113011956208429172785152 -411058785913973484274707385062260736 512768523113469104251119045967872 6498060990635983596420399653453824 -574634980988261374553316021780873216 9914596354201349551106708861878272 2933446169127373439689515669127168 -737647769415765325743083645944463360 1487420422630197691192044236570624 5064082713427170332629268950941696 -489245080833369723169180607466962944 278603249253493770586677269495808 3287258618073925851899047085867008 -722653902016102736896559903043223552 16208100046778459485376224428032 7122917574204500564913187857629184 -544586937712157974756581459370180608 1383622896335005404172092602056704 3020090335324289270190654625939456 -979284825200928443822316825989873664 3478511628636085738768188288532480 8659448456328427396282283037032448 -864170512766309514747460433997725696 7919122513441833112538484916092928 3029680677108881818064588759891968 -369953498547541386108382475634868224 8810488260215050448999639523786752 4997794110268747159647076189470720 -537534946639480150361267535467249664 1580313448261741896554065338302464 5154057406185800973628599626104832 -976698558280365038104900807186972672 7262245269646656104224165657051136 9912631314425482947810681012879360 -793870206554898079185165625707200512 4268649099220164917827420288974848 7806626380793364180315687488585728 -64338324219937015874758353530912768 3682686408653312188291608251203584 324277410079308728313027716186112 -279098112257304672671296557663911936 674909659702489589192577467285504 4517197540142686081958123157848064 -24300213360439065479182316996657152 140147754116603831923703795417088 1723885908216634362947816715714560 -154930138933273646482332403059654656 3702825575295104430798013120643072 6300920781675761826611349174616064 -677698638776781703360263507905871872 3613595666277836654538628446289920 5590618539082139387589562281754624 -399013501372399589561845247694077952 4690019847113396756452439563960320 4683196141631872356100695071391744 -624706050688456619730392634470957056 8940123971126808830485922853158912 4815509401399507926475509831041024 -703043696463718399621389941454405632 4268926726250784199639405088997376 635917335341392990821779532414976 -784482735413799995186049750816260096 7149575215789868876470234084540416 9468474305163939241358826338779136 -669163648892857744049890384196665344 6715936574203751700943148444286976 6409494014254670056439556551475200 -749101329625749230601818315606196224 9798766844369136717845984847069184 3065894476141576123529761826799616 -543651961194025501623375234156462080 9940982304835633794148746632626176 1238117656003533439183490541158400 -326582364048159436989195083881381888 3446003539625892417882236221652992 8061879017905181332154152420114432 -233486444742621061449802517003108352 7935638590241601432391384878284800 6614920379365024067865470966956032 -116763163929111577341202056649637888 5420764832120984847366268097921024 5564326815271810448760996664180736 -235852754109454377764325687648321536 6658983381712932541696133642059776 9115966519231831592982143559532544 -152944484370112306583099995200684032 6607764105353815623951206238388224 1061362013600750866287470441398272 -936700153705061939352700227277553664 5168020446264369578571065255264256 2959340431187239955945290010198016 -493309464113934340868341720237998080 8698353633598366137863773590913024 8017821996130775017296333782384640 -463596260087130133639343053421412352 5489632826000473481715093352742912 9197027405096739342390355621314560 -586405867397936545777659075207626752 3517093153059184522988128688930816 4012653953307870092084167667875840 -516895995264513067566870341892440064 4986209181792513931941340174614528 400667709308270120138834851135488 -180047156606761812627122176602931200 2174545189798340240645937199841280 4640026873379130833414982515818496 -613602298813814074529198850025979904 865121025062952264016368316186624 7759207885529852929670818010497024 -979098109183362756317337685187362816 8942863522744084308091791795552256 38445984379499592698170391396352 -996462396420296239930659364243767296 1816380968538241914191564565905408 6806314020197968542666592824066048 -700948884712297337529776499880624128 6384743084636272451970948669636608 2034802833780787832039592651915264 -708665890064351769389297188074422272 6223162826574266772588461903839232 8650728962383863847642193001971712 -750599482764063511721452740940922880 7958359880006648096651988931969024 8834462777629346419891838044340224 -224357463205335597511739372768067584 2374783140615264332292026521354240 9013312822676768175201736154152960 -364461852868603766646688649402384384 1351118330324945899258438756597760 6848199261325810084855425118765056 -88360991560131320973097192034140160 8826476351876056373093346322677760 4461947682086881224249699054125056 -239181679698934963923699570403442688 1317171912594896216076848830873600 4961368971333006599686862009270272 -521164121178716056217360092010381312 2087445946257527004696950205317120 4287018856163756340140349551804416 -912751247100952554065401130822664192 5025732429454126057925821805363200 9884346666398312303138269768450048 -482901267349541902148097718119038976 9162510616027477594168019979862016 7282525384277817269638609999233024 -107130536747599385358399869535911936 735065865650148475435194316226560 3963444755496560075386784455852032 -444675505284961032608636857774768128 6577573351720932747522870924541952 374219752860176816098659308404736 -791780748203280057610481354428907520 2437747090327073799348041812017152 6076192307923248831696017584816128 -551315199182735769561878137642418176 9719244057078914812474293936455680 4618067979147717728032688317661184 -284803139106312409365514485227323392 130091359281186998597828961370112 9543413382737163975276598757687296 -82002050579179499048361010086805504 4252435316400793512298487882973184 4607315575655613042018144938360832 -507952119238060365965065899875500032 8807398446996912123795897904529408 8365994115675788382352683338563584 -40047369863221086003385837295763456 5122495083839991535835352880119808 3732279544342655455652716793036800 -395957575334378099268666109267542016 8226171607812568059954763812306944 2550485130571173904397618066227200 -236044330337945081149134382349418496 4262736687423084859167622972833792 7502752346369235754102432955629568 -705545778330919923876613452743049216 496124044309718592935932284895232 3998496572652438557016318116102144 -468097877555112594717726792772222976 9687873536301701572335590315130880 8998531364876671611018724104994816 -752397405502211928323800336338780160 7732480195928885142467422468440064 8534137870587048799418072365531136 -889991754894224226631396202049961984 8312200414497124197241563123810304 1728376921550785298049506520072192 -196210036952808979488601391004385280 9862145451603930336361527602315264 1898359687475977281928384353402880 -607575879310122260665383207997276160 7085349468248246524148384016629760 4461063278090105249392021540438016 -56489252450094821855524374580297728 4640617624249531633380384770621440 8916327209534729058548307680296960 -818380109252979460231310826369187840 5951759292042767392249955976478720 7936532514678279046538726213681152 -839304949639773978856673843527811072 7230542557970366275770380340690944 9181167004672468005227896422531072 -537727910713316367585289454347091968 2956287066485812570408918697639936 5074278515049411404015115224219648 -685397415373639037294651675189968896 1685109387704832146362569844588544 4738851781521160864237190826164224 -743886771888647787959394444655984640 74559218302805416354910549573632 4802584500388767949605053669572608 -287152043994223624748928535436984320 6620758150218982001428514916532224 7270602998148666553760549227724800 -198065316575525962495021000532426752 1782912643388507658963563719950336 3451192435955917841244114210783232 -284996068214858423293211915705122816 2852723870754795132203113916661760 5476035544035548162126654834999296 -368183872328946687863914808140103680 9526761790468086849576025236439040 8413864096213807136840975789326336 -501697007045892874812420796274704384 8684225670877432932192705325301760 8086807235123046525666073847529472 -685074487807494134538661425512972288 7928888687558872908657698334048256 5599070858224861379460431177842688 -531970411725796991251881848301682688 4137591401954681777043967299289088 1045258297860204940823331690512384 -907034896528316617259102046236180480 5326783042573040947417580342083584 5656516700310875978361223612727296 -301850118548799576688989082115637248 9012195799741198064194900161724416 2107436839580231508697941066907648 -600516052059437779868690947218866176 9741627299696049448192323610476544 6980307847955859231649288433958912 -685776783087824778007817808592764928 3662794792543390848658782732419072 1151188827537168473640416047005696 -179861105989193605430963921248845824 8629267531696798105219675545665536 4715910908548329161173891232563200 -857418995173309278374276835393404928 2527830702010642091993209113673728 7644253182476227953205215615778816 -76740140081432387800189285794054144 898298883897392797608110448443392 1788219405006429107569809984323584 -176991214923503123524708436421902336 2303226861665062013117367448502272 1152772322595725994338540448645120 -998513082874943983094846179235594240 2162377179679499713978688121864192 1997795168808918093372536240734208 -841000652715866846744598380453822464 3761264364120437861238028357337088 8599961424605191711478261938651136 -426291434016912648838885938726699008 2296740903927340172195293462265856 9701375998895263176582963165921280 -80482719098917847414623219182731264 3514790096815521619698968785059840 8366189128630757190832135220494336 -710405987874057591301062521287344128 3211243304255212640458859400396800 1649921883208599053089056598523904 -571259825636265061534362020905746432 8264062668214054667718019646488576 8932943470760863165110571398856704 -81615693043322411959598757743427584 7406703521244302902076529927258112 1426155710276325155780813098319872 -991324753277755799166859979276681216 4040333497605122669910933144338432 1498123635017876670521425583407104 -718124132639610787863015646400872448 4410094673057092996524760197234688 607578815742548651662353857773568 -844009688966714036117434766502920192 5396175825622971506070935908122624 9745698875290592466683392298057728 -605018173291132453304166357149941760 8494113602648429930419995679916032 3962740534215251761013289174171648 -984434315311122006244569101943963648 9983065520051287007593434751959040 8396735783748328485917423692677120 -81359883734097108686446182229082112 6371215778565274345796379518959616 2696713938572694817081822782947328 -211380406149437298445249701017026560 4116863288108218938728484737908736 2651060860336291318076346747322368 -732774787262968471211438283903991808 3757188580938001971234227139641344 432436493195331155338280426274816 -642406728806455300781524992389021696 2605750758364379183235773094690816 4071336999999790822372103394689024 -298620027500968751577867320683397120 8223318354001320177098382217576448 9745817630925807467537070485929984 -82214726939014585861202684424486912 3450756715762199712524147707871232 2934437926271249782624188805152768 -393035881670184789783926701817856000 5365388349703423824211872153862144 9959940554575004760554184491663360 -738664592820099852134894853674762240 514520106102596833274195066486784 5888161509910913071650103153917952 -821510863520128525600930262379659264 4893969460898621269167367033716736 2565946349910575460176422357696512 -470723103619131290582917321104293888 6170954037332041244812320440320000 8057831759257508619337469471490048 -217240379360745748971711895850450944 7006036487367551105187284531544064 363684683658475075327752193179648 -278852547689022201721530064809492480 6891126804615403298649370200637440 9719807956650788179148863350767616 -162637982827341465793796393008103424 9804626285703301205437010071781376 946367223862854298326622927847424 -756339128869359467876616397968637952 6520099844767355912651818594729984 6702354725787173863307406871625728 -6022963103366061793364945158537216 820716934603590278718748266332160 1002972692156876276087597238845440 -165029765027841133430025135843180544 4674624630915508015944159473958912 6500150686789870468777227585585152 -341138050918341568928792887896834048 3660114701626833056542066613420032 1988420244085773381780474284736512 -389473402411171757181655187682492416 9980315526966674033617645143588864 2781211144629393582667980779552768 -35447525582780467954059277986955264 7569212196641605848569733930024960 9590717905634498149206603742576640 -778264827087051155268478015327174656 4372469938551685503604453212684288 4632293203551319979326923949998080 -575856428957731944471075454625775616 1579645614136914505900936472297472 8919814008727548000375139582607360 -210145944503675512056418785445281792 4755580972813789107053577765912576 9290287446058414188211813899829248 -877422321121564154732545118000119808 8084484126380009096661021229056000 5868592317059047921447773067542528 -580893896023533512892381684519927808 3251949826643237383216513958281216 7860917794165705707112773330141184 -83977535547057411848539575739744256 5871630810079419354688094017159168 4341534559234633774645300252639232 -581845058481678197746517290573103104 637219074007936776675285499117568 7783290601944600145651949765656576 -983402939949155748637183179516542976 3305078891269593553760355633594368 2638388692279940010360875914362880 -267308652670193307710937708128894976 9295118819870507599690315493015552 2786317997908298215861490284494848 -80743125777311590203578529557250048 3114502151530920628616842857938944 901667572205400759143233688174592 -246274949227370649618244112218062848 8546034443060750605758418602950656 6848961532534780383752897442086912 -429325357596971494772872561555406848 5332931075883312809303720792686592 4081191173166164427676270184103936 -356621315796856649277265998560362496 5547040174807754765790451651837952 3979953051109509326407107405152256 -871590357967728676131562582270017536 5412929811242453935676734723588096 5986900919622736245136266675355648 -786632567872505313855089849007079424 1352685189874074892556038381240320 6513121266666342276803014401458176 -143345685914159018944334051812573184 4886224971972864887001196957532160 5249913368971984065725610034462720 -639100426594294840715754669705527296 8720069890996436689546075143405568 3544592878457725101990972802203648 -571866976347093581842640813584023552 5021391078689239834331292710731776 5716243687064057637825216927236096 -881809991425878142596694802742378496 7047557556078264163080163110682624 5104456384903652606712932779163648 -788948194878958122197978648376508416 2286603766303045918581437610590208 8868439443729193458342277115019264 -14260365598605844493096550091718656 6541490547351694554844438099656704 1530678954857786159622867029852160 -965418670661444270488224054881812480 1606129494175358015227916686721024 9621332000690141490149255460945920 -210942614827772163123825908696219648 3831048881653272302297179867840512 7538041157422219076997791799574528 -213673718625647156678438614709829632 9004565355303293326819083740512256 9711098004669004997761866217291776 -569473930982367411690083267974791168 7585066768444740720993037361086464 3224877183636805334877031031111680 -604554152030098864800808827350941696 1941832548367158166574631395262464 3559337110957015935126803776012288 -670366085856424988704491246534524928 4148483253675165793649638982549504 432950008858936643963318207250432 -235477129433015274897387139612278784 8211731982623700841982247831601152 5693244028821027421923424056901632 -462837733070496143931646956783271936 9508175024661705913099591073398784 6538443005166576468993287076708352 -590338731109478877229195025692229632 932960934554103869677772224856064 2263245989942261120680954788052992 -554301289248888413307492478106992640 7709398135474592114816660065484800 7413231551964511708428194161885184 -863345656948416974274855360136216576 2728574417984468764326765755629568 7839997189506276281365662728716288 -734820035672386915752776700430123008 7335750857024466403799686931546112 9423495796887081643626081047019520 -150203208826818413819256107681447936 696870131921392002408574412128256 5036960105584633098134037871984640 -38833486484782609459363406753562624 2817175775149386109868990542118912 8843863786180151341784617864658944 -419292952360382296375771070023598080 5149621015027925219601923627286528 8736089340947970946404370427674624 -77263661027946833870835469567131648 8227748687807407869840074410557440 9469856881868109045290717142843392 -28331557226429448016483600574709760 6476625213942974134925657053855744 9371253294582746854405975251615744 -756720208151073159480454678694592512 9088388913876092690883281978130432 1439546556879489228393508625186816 -211033179053346939658142789622824960 1597005999091946749765741763887104 7614869725010403303377938992332800 -188093676948651571076786449383686144 2835364594116295537663612794437632 9840915605264998112317660333080576 -548808806263769863704536643251732480 2569841624949929249809593448529920 3561262077862460434671754964631552 -287762846646965822542450524914974720 409833684236678442198769457954816 2675760525012325746165730827567104 -47782904377267174534937808157540352 9092688010474221457165980522250240 9868753422305421700764212643495936 -20618678599921906554124976802234368 5355391647351787549604936706686976 9608530098239234142588293735251968 -102341589356845583393538460392357888 9442225251540117301554471241777152 7862611655707197456412654880948224 -480169176724298884384308991065325568 4072507630439653590633429596110848 7140170443298625941333713958731776 -338308556986783545680125756901949440 3433919677076223862014226659803136 5613342665655363348802723532242944 -727152253219847522001878013502816256 8946343280593248681592934771982336 5098659187271188299267677936943104 -398443713098331231334562192276062208 2507238616350199579887271483015168 2753350243283295021392432128327680 -530854643363927403046530897577771008 9496622728558752884686870565355520 9736583609698066750789813371142144 -831416969481680188708942377490841600 2613226591197763508914373017993216 1975878660777953504350289988157440 -768892224581072224315775713074479104 9361242376061900029659306568712192 49306496279919611327782003408896 -554821658487062194080499036116221952 3353701234184633283936175049932800 1548431212434238204152611925393408 -266647113371727467949343267163734016 3817404936830748068051953272225792 614778162146163139762724087529472 -447152321189969914011152629578596352 2001274355633553360170267086684160 1677148723404000299583811224600576 -364179367061907732940251005930438656 9971019886712967342611415322066944 5200605985398158734331972541218816 -93091200655794267597662020832329728 3931117998959921868611099503362048 5973707638796657201218032286826496 -321907953770475919229359196530016256 5287483855879312556134383229075456 8210358597879406384308862125604864 -866525370808128587933414844956409856 8615915864564320984148393662087168 8800753860408289680278899168116736 -725443724628755987282653568275841024 7447430400192426720894521652019200 5838493476920093071932810166534144 -804817891829117554053777444116103168 164344177225950344483809485914112 3294841870071256795754691708321792 -826700803830053325278695062096576512 6136069598943685064241421091864576 7765943759332462507363047913291776 -626142905617940823494476177688494080 1071658639743148825440930555232256 1891743487283602673800112529997824 -350758955957996302201253975050682368 3453957349872166776810729392570368 2929060229342824329980379507195904 -846407133109157563927078807669833728 9730369080448246341378252828835840 7607038739848718880944079817932800 -142121637385384517456027053335773184 258818498149251247287566587658240 721171014666041823518854674907136 -185732528520057377143952500689207296 6914236407216794495151118592507904 9985505057285660943025640449245184 -645707396371811765739644309137784832 4634531724130146755864097932181504 2894102553075377096744660379893760 -990741937672034839184118186214686720 7330738537526665216348131526967296 3771835214117359888668966474743808 -110692073804561007057644425809231872 2479928792157565033345787591917568 3477002711556217963824112067411968 -755932610339265771060877757243195392 2512364682535941271186711840292864 9140520558503659306181683725729792 -17691499810111380129156313559072768 2874008432914553239287527867678720 7580930422349881084767962325319680 -856943623503380171327212285505568768 755242721158876230673619511934976 6608660433712655905454955541037056 -158129651569609817213039917511213056 2072800751478928663632118147973120 8757824075910340298495829687140352 -571389480891369136163309180348792832 8548774364599606604235474678579200 7302128637142285137365157543936000 -415062600940947005271729226777624576 8047734381285674342083480279580672 3343361353017344687279341171638272 -48743708741722972010358285036158976 315305689792240361422729980674048 4203970002826289231224222907367424 -287732050323967229390182741660663808 1078705029308016526722857967812608 1701925882697598084684770520858624 -730005893020152354100934038872129536 3861474015000909460373684942274560 3824711636381463356574883351887872 -137254655161947430899179754281238528 8272501365183183433865006050967552 2783540283096517215165918769840128 -474343850834549662916241001587671040 9212565586418315217329631365431296 7459301883591772458574312774828032 -653608087793943042638461125984780288 1952457808675968578188148387872768 6247938977300704875467190805987328 -819284272888067902524245344427966464 709667498304378888388952201363456 3630623060578609300996102660554752 -293582221372683257987242532414685184 7640538578293765069152967433650176 7245252117990968174534791798980608 -586757549546963099062673466950942720 3410920912232925339557582986018816 3971979401676459322477551349137408 -34732441902877045197661661967679488 781967647677535293714739914342400 6530832855772551376848625990631424 -723789778771805719198480805155307520 3181479534713277699643582548279296 4537617499103300619799476444332032 -350263294167764070492466935702224896 159692847990809287719895787634688 7051927753753116727064299843878912 -804049629355268197881795340004229120 7269961656162222557205019091795968 8923149855850300242408770910552064 -671900271706572451761927284534018048 7532638346844150145119425147174912 2834202254527550640760895693651968 -836956351609063609423482057008349184 8889277515747867917923388263235584 8544848081272629214601926754172928 -934214558344926954831099293306191872 5932941066212917350297213765419008 5203514865296226975714810060079104 -723344225647661339618099342279180288 5815713446378813687588075922784256 3650086364707636036191503058468864 -496472365899197317780109737223782400 6829060139626600491727967808913408 2820901531566436184492425688907776 -269411045572691568822898749134077952 3892636157007918155872246786162688 7599432067356658583930524116451328 -534041700373027832786905196060999680 8623822576014569080988110241660928 8620664392517697302069685801451520 -93526091156036909367452238696415232 1520463796085364946818010766639104 9664500604273800610092637644390400 -411952566022026012502360518075351040 6036363178868462376941298546376704 1482706217152605863108336112631808 -859042449269650238146693618169020416 7719787364355287193623884824838144 7543157293253135022966866932924416 -413626276460442553657292101720735744 5446984544588594360085981677223936 4878631190968473774555162726105088 -14887390841590320329671830900047872 188047367505918989385170988040192 7409840829359539801822571867930624 -360337146091478958810825620522532864 2619971181028481535488871360364544 2145565467955768817491539623149568 -34204251971674037566716934117916672 2320099799366096983402794994106368 8721955544949285906532229663686656 -398529842056218270145114770180669440 8145096286205032282143242204479488 540099910327909582765318649937920 -729208805118033033969902820515643392 3576668575276210959968710158188544 6898773250573774212688465627185152 -176279284331944158688865464394711040 1147262659377617055171316258177024 5398829049822950878448077888290816 -50297601052918119102301822848598016 4421896111493254282237050502512640 5387606341198163530944874343825408 -219973224636619362976155192451399680 5638963152164771845171474625200128 9811179430073153491023231660851200 -199322951527899967381500483529080832 5377980599301369572457494349873152 8788682206206744778412252425355264 -373023373868822813978154178174779392 8195489116454685718063132948037632 7959063685268205716391599636742144 -636647739997987441156088310632808448 631700861976154508703794630492160 9478591282830457338395207382597632 -194309973228404126851113104145645568 7828110711549421974079497851371520 2450025557520985962285989328060416 -948228980117316704378155348386643968 5043693096480900969718536168538112 3942097740823125691487371413946368 -49766745237037649580819082201006080 7529389778846246746865724557361152 2339668493315102118600055229251584 -39471537949284488528518590884741120 4865656170116846164234164735311872 8563795473524915448768073190866944 -802815369060964967917046257934139392 7467302000587914122571823045410816 1517447659737157451316540571910144 -626066158179679817337383210457235456 1344157924279295294343081373990912 5490597501510969872569285073698816 -682825335128152235561705893867290624 9232715171556353279729004466667520 5936266014407028902869268351156224 -53553380695783882100641832556822528 3008141972825878533721577324806144 3525076319879722871910756979310592 -103097771611236741505491902494932992 4603782755303182453035389075587072 9968045794271330853312408980553728 -702751291178525265053945522626232320 5086262515547913301150984275230720 1020694024328813896872962499280896 -922349600683743307574778686708121600 7930639037906802710761999591014400 6414032798762950537910705541087232 -237103619141536696338189566267621376 8875120742901908959623080948269056 1686258780550502125500935545290752 -946186423507711526692415150038712320 3556930671266251749994768766074880 7034172846657583889596668924919808 -658664734241692102975530618322944000 5339435569493152478128374003269632 2051933484151583476680255942426624 -161940691149235750102163211576934400 959834972536174181514428612083712 3215937618343036096410890144841728 -15591343709041950247196081141055488 3928722898792839936913041872912384 9252660553227759559443191638786048 -378397373666726354121368977052532736 1850156498314486121007895023714304 8271029410940940770576248954945536 -184338451222370235736322333055385600 1671166661140607467396592436248576 9224582494118917931145536798195712 -609319184653775471430051810697543680 2288544530573593561739346613108736 6800351006523405058743824631726080 -381275510818295841708810771565117440 5879901311659576569878922861215744 6743054062588199513274412607471616 -532250905937707700112188323290677248 4384979435935463995567270375981056 7880703934520125455615209846603776 -538392293017722449742939621706170368 8023612259877984657895224881709056 9941881514496617741820168522170368 -597256510203449063055748982537977856 5009832178785260507268692326744064 2393170532322217548759519769657344 -299175567144466978253449641276211200 1696969213861907836867810949070848 1726756689332843273788308657799168 -674649009400099259843132010052714496 3420128361491586059671895380328448 926266002446355202230619056635904 -60806599113677477961551192067670016 7929355030700582265366984783822848 6747762599106051540454170765033472 -966297388148133772124799232364249088 5193923395276425125717467820195840 3693260416229412600712267791597568 -596795232427823607479162343507623936 5240917935046890502139255210377216 8588046637030374606424381461626880 -187226793094773067644704671766937600 8514740675453736452802086181011456 2603044552940045164038520634867712 -827113993979651249484183561207545856 3978002370297987155045258547429376 343197066790574025279506986565632 -708071809160357075042797188611571712 5007413232946460374271321188597760 9621992641518946024169621766012928 -608086732542848212528154895173287936 5359710001350720896130186100080640 7125276678659561686416623740649472 -429704297302976163330678450942902272 7162965563490173222308235911888896 912314527569708017662495712870400 -349586679667641209034044571884978176 8546353295772292162783404229656576 4718636804259482966670596074635264 -579658069077682383811519274519887872 3256585509017430095729064838955008 3118772418085348718854455326408704 -583058408651129392235295487626838016 5519486263171366064914206094786560 6541194519535058916170921540583424 -33767258241016368670133831545651200 6591974168964889845382962504269824 4872197001732586459254032999383040 -175178094612973989065596565624717312 9133720175215700781633786070695936 454997840033383206457899197923328 -935658070323745724928287970426880000 1121959023863486781863413957001216 5113627201408914277525400701632512 -676709883855275020470624531511246848 541727920680258102138442317037568 496638392012823597331294233559040 -406832771621697807738872801391542272 6678870478621200381129589470003200 1057132223570856008785224513093632 -902252671977466438021365803679481856 2559706987944758489280132358864896 9086247854478682623557679823454208 -516366215221697667783512902523158528 9247364719770385615559707211071488 1343779933242237197418799231401984 -232950622135005204590809740564496384 6753492209348702621236232122793984 3492397066638691085219753518694400 -108856285026199717805214788501897216 2261637821829100531799169062404096 7156443253932699249834145351729152 -31549206447062218558749370096812032 7484063768998415966793267106807808 5755089580160938139793520504864768 -212646626410433680630007196876275712 3010733063834969768807361085964288 1870397098890106588565455369142272 -712693994191112380219187690016342016 3583451873302461527866540698894336 489410514969618766989870256619520 -740187963765150861174507450369310720 3993687679837174360870137871990784 1306744187383056257529855258656768 -61189493478785762478051366853935104 3102137447511848615197605061722112 8013102083304297843079220442431488 -550673910899271224265891647972179968 5271464659233720188699679739871232 2021957059182293592928097180581888 -382780269785545275377430948892114944 2405410676660230118845944277499904 830355491209766654770381506740224 -433181821677955082388386019199156224 5608575577254579774792216866717696 2047122692421842352084792301846528 -289042663633636684126237538008432640 5168421948388290401096933641814016 6155655350526694280684016945332224 -766061011411835524564250690850914304 7498397574533704890616246366633984 1965353027684831566329902293581824 -619620993165256765796412953118900224 1479793534924956369095312252338176 7616445285325575138765977574965248 -866495049268762847981556491987451904 970226266097566126549999999254528 6058264835137047954695974524289024 -746698397292744970859654140364062720 6636328458906153489675186203525120 3661990284033928180333249118076928 -726348678184701308738823584999276544 5716981274456985216326937234898944 9411824082084036745547190942826496 -52000850009862355033222835972603904 7697232624370673582529232909631488 2444300061221679645124512989577216 -844761214351514400724535245369507840 3625140199508446344673055341543424 972927473336064003916857232850944 -46926598341604427658593796936957952 5149709967389010960199644400844800 5084380442903016639400173342031872 -211948842618517957669210192768663552 3811521081852748413833289389834240 6208073064988365472768957773512704 -531526120851071115116732824277745664 5392017632520246446402666053500928 3335806247924171194745633187561472 -90480203132160963969587798477897728 9595918968871091269347559230930944 9643757356283101776549995073241088 -942652337993971875363882400592429056 3576228906905370743595795308609536 1549964234596591505491272017117184 -347951491779540327208941809311940608 4262715400678311196058758806503424 4910456320866841574837967617261568 -216282508632867047106863626564141056 1871716991297535513070303608569856 3092288521180640409874082004205568 -986351759589189023713185871823896576 7165506308980139098154993696374784 8707359152883069046996791923310592 -493073253914814799811962357539667968 5848388484322929127154609266098176 3175460891899481715819271451312128 -652161623468366193345542683233353728 8060026404636333768875637362130944 5813953460423555410338534253395968 -132696945353626578652131342690549760 8440073390185169676746216529985536 1825965664334184031795491953967104 -647244013940023209386576603380711424 3498873058684857523951983984115712 8937750441690560485712772722589696 -93388429501682296382579861939552256 2267034774554130218902460976594944 3021110090472366629284901594071040 -571456321736362636576055863812292608 5988912109539486207501945106595840 9571180206159264243961790365433856 -128119010445440107777326669218447360 1238872287216613161228180719140864 8137036011554776184963995090812928 -351028961297388327704888074446045184 4560874866963679656911794230788096 3332759761852592454628419536158720 -386122937176940097412583345010769920 2010838820798261160399267679961088 7338226815147851726950173715202048 -636970998651529500736443081482567680 936973149197305196201711457271808 4207311498990105197824452568547328 -305268057967416250754361411376250880 7281862638930962131448124965650432 1220770854832952046347250160369664 -152978582997706372097579994149027840 2491095165532484691516970208591872 7021560586001816690553677817053184 -426609417176318916626890848125059072 6216837757366265406535017649143808 3505136097503757590574487685824512 -194265016450400906539412098054619136 9709649157703526101475296379142144 2962534733116598341559867014119424 -732677999821191266149852289622343680 181311553615326911471985849532416 6727460525352011410037546600628224 -650968295202122659353145979120386048 7041776042247678238557614634958848 72829388676994147198952636678144 -86708808186172374830947664851369984 8527318237607312629003875268952064 1414570287553845264919290900905984 -420347722775540018718519746973663232 3496642721498747564372589312737280 4232282050205427045256935902281728 -567078078491799478210051953938923520 3158605891418331879558655655280640 5784550424785925092231542554492928 -127767739279353330844245685300101120 4139091714965469553238224419160064 2644876768349565113731374756397056 -393553307756431430637230704583245824 9929213515639016642691736486805504 9887794735872723434442854213091328 -6289150259352349750637939547701248 6621361543927720854313745149591552 9990345270002311961932220053061632 -705701417388357521914841055119802368 2527780995137092147110336425623552 5985368898318514538722080963166208 -985672015925981769561398017395785728 7005158366400801493863827274465280 2979693711575822794095835700264960 -330173711065947135258816914177130496 4605508609124168632831994855686144 579973517891546016089104137060352 -449498793749944878872093099856756736 380999136441834247131981376651264 6588940064716681487307238235176960 -542594908421731077376389694386864128 9665452174984029512125230369210368 8952954101916767407153097771843584 -840953816138967920707174946501033984 200783942245829559820927409061888 5060639574517549179617526650241024 -396482573986743380479732267022811136 4511150715088003278182773277327360 1546813813972060182547379672580096 -720086302128815756927324852309721088 5968189947190610145392932490838016 914537352137006260509546572152832 -649381149239665028713193900049694720 5778087239740116730760699293204480 2015390212808152343773775564636160 -294810859440216082271625598172397568 1101501128834818836386246358466560 6782511359311292415810112986284032 -510946655056610764130381182567186432 8798367795592101454682989332004864 3679109705391855343776604102852608 -42153873236156814887157201553588224 2398972748059194794948461850525696 4871050370521009085230281415196672 -572903174659882758882428013955252224 8221874512930703636442518634102784 9733767283387714034498896452911104 -645796001207883780138092252398354432 2028852251080175892374593659207680 4627374512225237943446559403278336 -709325174766016206152728275587170304 7379663289589527543781990483361792 4636875786481319067788700779806720 -308049557968527380622369839934078976 1287408238301710449512728101912576 2841244332098539439808109283901440 -14805743316971164461782952365260800 5585321534343799838577316195205120 1390299343169428913294588958998528 -395591041110277572370825036852887552 3578101258007416603763965119430656 3950041804951258955955459705536512 -227716155975525196216586991482961920 4117470840254267771527910773489664 1318629130242188721566245304926208 -274595609022749360679641095688159232 1997182706016755935078371997777920 2017181758156888116080883020070912 -958916198137652590833031935046975488 340551537841890674721600930054144 649663282069863352195209247064064 -812030735192939234873158188625035264 2123849899802068943816699137753088 9481530471010342308323383796826112 -4846558707460551930946023524925440 3249793054368032397280326738509824 2179842378773366169910400541261824 -853505045546886356854903732573306880 5745866170823368353159719031930880 7364298578119789901110862162165760 -481489976189297213130793590374531072 991694256091692951328786548260864 2213287186731410246252503513432064 -923117398804117955383670477510672384 8077895893511718334991000154406912 3457408222422225605761084818456576 -870157464147754587667053674043015168 2408677647048350219744244859404288 8382898792350373299637857952989184 -358211192969365050766817653080195072 709648736754020596509315388407808 3973138772423336728070622313185280 -392102083205657016540356391980761088 5774921420903967294493212148760576 5785809494870163233650222764654592 -708957481808363910065364879605235712 6125290295002471782719765054750720 1061646249089011527980875696308224 -871815573685417698405956078840840192 622045200189592946743238035767296 3457083232528198520224640940376064 -716538936406629269541434971996028928 5895106952079173141351538320474112 4577168556031802291802704317513728 -710403691572206754264305875592151040 9190642678741684192173688759517184 8092908828201547939612584904228864 -569758427094029615477229085146480640 2712990875515751157815741209640960 3144670870866840712896183724408832 -722345422586786862154642254320369664 581606779735673071119373090947072 127610752974869942121985432616960 -985385373948463914110226299415953408 4039067206597159525837015787503616 5529314398608247616067719401570304 -153714635227816259184783298387771392 9936345243972700302082025921183744 6628410123946164944967705821184000 -66822880457236757172684938490675200 5678956553006696903185662027497472 6422657127989861872598563443179520 -113136143352158992682800126720212992 4508422177566797631737066881548288 7192566812707705883968249861767168 -134522038997867598437915505710858240 6805492363462366114809039212773376 9894694611290264638087191425187840 -282065200672644561344993419906252800 740118779892322016967967908036608 7079475663293122811622015373410304 -995524899238402713008891491984080896 3656378776967065757152663442554880 5360193724501637209056921385959424 -726695770024837970420964030647631872 5461875070213584146386064704012288 9776131323206505617611043547119616 -879275862186549604322969539328344064 3122730527925598439477843110920192 3079493762875177927263740690956288 -788345029507835474661094536884781056 3056207693952376267088338788286464 55439786890414384547806977196032 -816851764150978556218839443515113472 8452283458024433291433483285037056 3645844578194005906847398075826176 -489117719280368660373582455127408640 4806847008727466341644032345636864 6369577283699833324084674315681792 -857526803011652973203605564568895488 7405718846885637084689831036977152 5565481818769402354231395420733440 -211159562219262051302619659127226368 9513699713117438862192255191482368 4533775395629811851758430897307648 -362782869856318373159290017016709120 2132210936387413406366730563878912 5459820766462869444423422010458112 -31041397266799133463811391777406976 7042559319267772112279985557864448 7155509250520773519803296484687872 -707477997388265973059943065557401600 5395456989018963576043078252756992 6177520148363644236269868910903296 -243165497052896803257088849888673792 3387770787008834627667848658419712 7287958084065539517592591686172672 -377388479221171436644928432820453376 2123667936391963332113897080487936 9775435646082258216941253767987200 -791504073394519322944134920221491200 2758143487633411356166512757964800 9003078916167840896449984977698816 -793962863436053243181053531274608640 8604316899498945334789463418601472 7966388868488046970377622901489664 -916299966313066400566228186086506496 2848450389761582289765505710424064 2940554432472360223785274027540480 -592939707788884029988286544364961792 713216046952654229509529820725248 768278650269219256361195455643648 -333324044353017380327949760687243264 5171992476078121936478547323387904 1876911297176533700471237352882176 -634596890527051034022254847299944448 9903446158874554650783642642546688 9011648397540236153740207258075136 -418178706024744086214104752599334912 4425080387975027019037096024211456 4459731174282139664819595046289408 -435668942129264943805061400256053248 7967728173301060904807182605746176 8940774030745557586481523537739776 -26212699896925116999983426244182016 8025128244325010819017029443387392 9103448882949303806198167082369024 -899302632258259767186706139956903936 9778474461477829931080302569979904 7210818362069522041496969846718464 -179726048264022742301958322849316864 2861218766439474285823788912214016 3306905475966186063474230453862400 -750714290549300765711392854994059264 5327229924158583267294747054571520 9841041934879257007578507361910784 -37974687545693738765649783663099904 9764131140003266187238526733516800 4998921028222414800276679867498496 -208745863441553332101618051420520448 3245573470969996418663426035810304 5143338841684673190047192467898368 -953662617921598270374898970205880320 1458137904851956332642393816825856 8309690646614665328154611392970752 -383317258026731726189940587217551360 9924527928340738405530303356469248 7725184805221737531750532050321408 -153097917756336022256179838483169280 1117507303563251594218655367299072 3858978529304511426751781647941632 -151117185054657330645191778247901184 720431379458682322557368923062272 3803377265994580550569573945966592 -997721859951166831906647072544129024 6161900832808730827516867480911872 1680489693037252375774239538544640 -517809084650711392812759601756766208 7899528421857123133138743234396160 7295570411703488974844424288731136 -803062597971710932801184122632404992 6357766739239320171472784229138432 2230056151490349106094430178246656 -704520874761679403324784432004464640 4670601779806846187004941222019072 233003990385769401468953202524160 -33826869722386504093065862514212864 3059834464851727441462517968142336 2910747668920503325151278537900032 -262104721211699505502773170157912064 6747856746099309953901920776093696 3972643296781403643676378175373312 -508251808172219722817601945766723584 2861552231421303317128049932107776 8832372679269561222949055510872064 -145916863062896184630135192310251520 4190151332383651781658209874345984 1653438502541814937129000540045312 -330652935114440680058294941249437696 9022332722448690785467848737161216 2432990848651937034746992787456000 -568930242751469570477142559818776576 5993701140196885964473871548547072 1538048255822131566049773641269248 -434886760587562362348413468591259648 6336377448876250178758863860269056 7276607877597940387535618737963008 -174335632354828558198311361557037056 9521115655416504167082144649183232 5363383964690645864024537078693888 -134407745406501015237035432276393984 2929181298308066608134157435404288 6972073202345007427301997899939840 -418398968750735545923045990258966528 4805892176032072447438984602189824 9450367601369822865965052518727680 -107376932026979985971458052280287232 3783744962064786191706859088379904 252190494867064135666116887314432 -367383411276843342132973443687120896 1436938090517804965400312000020480 4766859938461948463597276784230400 -867334631405542462503376547362111488 7078366840616535181917480254701568 6120211332269369417128008805777408 -972202487123361805761568154075529216 6314484866347699817110524802367488 4966356585491887491700740925161472 -278606880070068596377059337026142208 1093454266097968793245574659833856 6719125495816042120167221725495296 -691645327342522319550074911874613248 2389433364259814399621508053860352 5150619554104689382227767629709312 -48623953645062993755328014301790208 2587288737923955577706012070641664 1169359463687275794750253100433408 -624058946496913874835632186311311360 9638070916578033828844875110416384 1779905408909291014924005177032704 -373701100792240710039733348358684672 4877343169568284991407150495432704 6617008925760824639517718623551488 -392922395939724159259876442645725184 6300457333650047353196160680460288 3790110656697274487469459248250880 -207772905091983760858239837726048256 6460425509154301684732956499771392 3874655937832840817191104458784768 -159374940235565788781651707809497088 5538895510043823884139711615205376 8350301356482223424405234222366720 -482788444259071185133782381648412672 3195682755500033463799018361454592 2290574081439006575370348930269184 -373322299567392979033962062658142208 3714539472143236829799263040962560 1976777382297518530380613476679680 -430804493294559336406824200676835328 9529353314363193290718710530572288 9089327854113623537991205649383424 -766101036203133957589668378219380736 1295938073584872364630780156051456 9952358645729685227623607554801664 -649024043615578690288023244646645760 9893539870255856234312416136003584 8037183814122979935618835754778624 -931666167284862536475780067924901888 6468402988544633646163292724396032 4807608474076426466395319808557056 -91597574490872474880407694326366208 7029067052544631896433688378867712 6035978132673897053413021350625280 -552092995297146188339105945693978624 9967928642803094934262137074221056 4747796389494733622555158859743232 -788818714450304768902748751590850560 5268597603668807492868362825891840 437248991893838992231102431625216 -789398636744494348477572905913286656 1643147944512643106205546089283584 4711833096021925917686033608081408 -690358100035889986558350808156471296 4976571782653451079200914769182720 3291210638278071436904940506710016 -528267706293483062909384388903960576 7820829223949511912762932457373696 1841365442779480846126238377443328 -241449352345437866221192316828254208 6522183108991259409851311160557568 7828193862917075413573170504925184 -983763892896986991077601266966200320 6049327822665397242287852108120064 2396003839488290173365889448017920 -203391580534855713063950237879500800 9251654803988708316991944271069184 4516786230540389825569203725271040 -554018855272463952637687097976684544 3651622410967265156110024582365184 9453786034940521417696109117046784 -391981306011402804940545465927073792 8161698963646717555289574074220544 6207800598857387535117959085162496 -992005347742245885403035805023207424 26826581475114951438463819317248 5936701955622373423141068394725376 -357899117728677849775947086112489472 2088646068357756675145339750055936 8736132952080591031767694032502784 -60204486200232446133345915787804672 5399104636748164307485420196724736 7187248369272222365927432911847424 -275022807651093072549402251253252096 9813259030105995977307323820408832 7908661177969669001025687767744512 -559305020979775838663130271847546880 808496684707758942715028497760256 2451667093349965872848692161019904 -255385381352220188111570068442185728 4729245685417219746373395520946176 2296965932020826190744642295693312 -402809618336499315034373329625546752 8885373509262355557650335889620992 3351991285187151302153356873564160 -295901660577331136133840393530769408 8096195487272288633948774242189312 5978881420901123282150854202753024 -827833656623478272361087052747374592 8029733850200453999669670267846656 8335567341376229825330146483109888 -977602613954639297870495751415529472 6852484981347262886304590772305920 1538415794630413667313549033078784 -449414781677834390823301214399102976 9712501987785998661164551202930688 7383192913973635355467074280357888 -608274242316345920641533522078597120 3930023831599374557426679510204416 317529757762174742248765536600064 -841239917702543368351922567442857984 4697776874471502854973447112491008 2996485937168096072642724553031680 -142797710396497156654274337199620096 772304068013851116715233698119680 4366926373378168147352516070211584 -541499696247124190836183231878922240 8942308202666000070828525422116864 5964573735978437750462346761863168 -134492829416601533035881036976750592 4228317270547304199422866861588480 3476859872361395011617774481965056 -834202969931175861208501891775856640 1584397163135151618723241546219520 3410114415821049545588021374484480 -841676754402122820813503685025857536 5828178583473583195825123270590464 6608798577178167640968214498770944 -357952683885239869090437448717041664 5220937162420520965319140030021632 5190040165871387626027247525167104 -771879406210203834350837510468272128 4543284168690853043360926489640960 7363066316444312016629463028596736 -31677277255245524849672468178141184 8907089190979281633167308580978688 7087282750580096882086698849140736 -989620116780402248926818661801394176 8308154558913484286239070673174528 7494495958156505133494681198395392 -156978805888124298736527907674390528 2678060604705095953151250097242112 6903673817390875186990099554369536 -97684156320034958364154507628118016 4684110528482849178465382827032576 7790235379443779541993311470354432 -810057414030966111814204097361346560 9642558830640824829989512705736704 6151448564971778802281737898426368 -528490283421634266998075280559439872 2206601131917361849159122088361984 4676065061101003129265205232533504 -234787372435470872339868074962321408 5857864098480125076132783397535744 111183381335069630092598843539456 -422289190856566117823381057138851840 9423636410291600567213540138549248 644033325066405283434256981295104 -469601503399010113662836927163793408 1952863736356995657712367409561600 368619133960518168356133124702208 -269135003348773555609109940708311040 1811573418874988552509699703963648 3581611511427495074516246619750400 -342658050093412501788734983254310912 3280397656611478262568422282887168 4445441114965576044395876828839936 -611985709103477192334075725019611136 4073804891346099112933910812557312 1687269081275522942484063161679872 -385263449377789447064562226832605184 883151786203491492956170631512064 884830269452044231688758608527360 -148147512640058671387790168631017472 5046468789657738669002541167017984 7812772119244074198568565691383808 -926275629614816557210292603582414848 8499294944918089841555065674924032 5200741327392221388600271840477184 -107351519158931348692135630598045696 6005460230821741684982183792476160 4271622035798888517828663180263424 -845514883917230941351487750855983104 4430760097950202756485421132152832 1384736425502345632164053950398464 -670541920568453209459298842722697216 680106791628225853679541944320000 6201594263761725324258525455581184 -428532172523684088436694849289191424 1068550850915982703286683453882368 7901321172219354109881398564225024 -463151664345078819250449490934497280 5171546718071178160948890413563904 7329211254997510453171625691971584 -351002396435547281105520649004122112 1222333589677299506115935591202816 5761426196100395780784845704134656 -940192234177684290312748854832791552 3102918339080246408151910116753408 306928759144830920725437414899712 -884212941089059814662030402309324800 8878977549237820591999710115397632 4208909388349735366164353499791360 -707639882512098213505389804335923200 7690550037301353844672072079376384 6531104519095931858189279102500864 -507029240574499140119458432682033152 5081942357883250903390914925821952 3137329443582032197956884957757440 -638691958029788841274923741341548544 648255765191295500032194969075712 9369228479439987489716061224304640 -706503335141318844496685121673363456 9065751457014042921517184085655552 9968003578493715482465519859138560 -181685572263670920842617795846864896 3865302338243610414020967339655168 180861518951232629559197750525952 -335413995588577125552548323132440576 8672693040486008244280168835710976 6125741118660311331038953849487360 -805780331700633852007581279668142080 6255592977319441878193846530080768 3768696880568699948199181790740480 -954452805557615402794936047016869888 742828067721749729316998710558720 3661560822294946122269739114823680 -522503435860991897279984154257129472 1046313554474057023417166526939136 2112641134121875910074542311079936 -74600330456830904397770722155429888 7827022237723905333137543884963840 5500996671507929772458213445206016 -397743174171104912104649417562259456 2324834913957854731117552591699968 1243712378661011620377129012690944 -454321409144780777468959744518520832 2148008374633710817109663190876160 722752759710077409778177727791104 -678040622584018759278306493827383296 509351335997818039240599707582464 6170440583028666204479850777935872 -55594496554704324477482223854944256 769605606991394137438308903419904 6038415542263143040310867916750848 -376716324989064118804234213483610112 2353455552161268769517135678406656 2816793513560005356162656048775168 -947410348125498862365796711568244736 8293820679652326213165057052770304 1553564284626906536300519821934592 -869132212160939866902570181997887488 1365122183117100243767740678012928 9327918105881919548060015750283264 -922510056401857122640437762720792576 9384880327618807554198252082429952 7035564480235524974672631996350464 -857989583493456580975858065736728576 5845190119049020665110002717949952 3769866841682870132403031620190208 -561042004196566707577245954417360896 26283092114546642713144081776640 4238026421618318576716121638961152 -924484783654161041805664350443143168 8253506967779420774884487444037632 5359134430722725688693888995295232 -248052508079560393521056253913071616 8968772968098767981791005963714560 7039888455647820764433133592379392 -376256745751060754758057408465993728 5029186412036981878971934766530560 4327986139894107004019736588582912 -256030867976751589051889805219069952 462405000287498135821113414909952 8067482946336384491465652524023808 -411382441750417744465982781936107520 4150751549900419396189919641600000 8098907832931519746571819630460928 -676747045245512742647283023404335104 6873030332028436527364269590708224 3981522802722221926314846460051456 -523397537091479148036153014080241664 4180646396988919481932745858351104 1783196636332264354063210961174528 -440764525945345097777891172797120512 9798759643364087215067347030114304 9491689785726729777116166030884864 -470621111383930047767499436474761216 4831961671772151788680013842219008 5989594870600777013030211175841792 -291400456547360123047660321131986944 3268891369458483127664507082506240 3577050258132036825516885720170496 -316904047678333409294498167907155968 8921679768238217856776034349744128 3233928341949883310804658324242432 -365900467826007878966942201364348928 872556335273637074306982303760384 9245425333988577599034463432474624 -277095755730644175418720894859608064 6252393271945935875981516187107328 5534272978568066528368447960645632 -772186430928537545766699803927904256 2106628132640117004670954291331072 6955249207099068761436295805272064 -123928796383324179371492100842455040 4940595576170097767643848181284864 6078131580141830934609505309163520 -121306800238249135890011584206995456 1126145852011789511531411533725696 1097490628869410363902382481342464 -889860871745120061535909684917043200 5429881732560607102994952541437952 4995708977810481309626237945118720 -809563475008551655320670643383435264 7192589266076829782743958956277760 4088701211859694611744858784661504 -292193885912482836088269507989078016 8106659350991278672798816889995264 7670112868754367513739061842935808 -163992948395442631900627856361783296 3336936774813495554245688100388864 7022373829009849206203051239538688 -580390169713632264471882549403058176 6566732827907241404335366711803904 396915063203551894853912155389952 -165042302235559633674887766195830784 5423907096980502364065984172523520 7297205377463968439069143489052672 -509999748450079493831525778868666368 4489957882185489123602523697971200 1070805254795435814565344415055872 -180326362044246404312760526410088448 7509823783566901260979620949262336 2280316903335306090392673329348608 -508790285929418835550301251021307904 2220645823602591707204963836887040 1704426177686534689763389255712768 -972040267542252793120622492203876352 6947317188605253228063039068045312 2331822364695955285470844859449344 -363779594366586266102397892527390720 1573321244934722317145539369500672 1080903352691756786606613150564352 -450533747448429007522587578996883456 4945649741523933228610353270620160 1715434703495271897225811315392512 -590473314051016776477326751549095936 5015570638693904236004903959396352 5440905810137529040258478207139840 -322974309386597853746332338667651072 489886854482999398553630627856384 1348904201867076714306978959065088 -98216299225401765044854283061690368 1227214782477955106999602193104896 1687323543790405206718761138126848 -850767601987036267370073189771116544 4602581552514124296896803009200128 351263203794493880661686869819392 -149874276116234357075158983468122112 6727578029875565067918245594398720 8751649185040727593916880646045696 -282324953761202816625594201165266944 2233907423952623273299285299429376 5580600582270048406510034743197696 -893374726334042770331793364015382528 941897911689026078147920950984704 8124045402150019798317011084247040 -804538548985543710142646957570523136 6792590571332590827184590845640704 2636662664983708831906400481312768 -339145809541361890660943731720454144 2129630042852941887852457645572096 6476682436487748946722277065490432 -405598816804592101493404844376981504 1079478920974314411537066734125056 6982796772740998719435615919669248 -712747790534536013977352157276405760 6512416394529805659117375633489920 2674969429864480783355603299860480 -618535091504628041351403542046310400 6729568539408804454193592562352128 8865468083689744200048580554129408 -408940077335524411041534275546513408 2982193612067886567812870482952192 3910678727343094999717732375592960 -784090090716370769543059066744471552 2971775872466278376023448216403968 9721984987184929916712828102770688 -919366461744604572093820938689183744 3382386877723839819365766483935232 5796737135094892309564355719987200 -515821862055998204377174221208420352 6665628643732071852020782711439360 960064502965049044724942104428544 -950758417986960325327054956966969344 3382585888006512454175198833278976 1101255874766711996426442474782720 -846179186791289708694669732566007808 3253089677526127283332162909110272 7374112517306134096158232349245440 -921081947342212768119354538028171264 6357516569868487374744898848686080 6184131998172997567468109331169280 -643544588876920723064878437647777792 3226930735178717267719883623235584 3741160823269085908055058102091776 -526884689572731631644248781925384192 7002268400005459400322135976050688 9735809004212107462744815553216512 -178701663188923726079079579071283200 1051278527974716215603972492230656 4317381203861079017673293901594624 -18316090879960192206750032928440320 4463489601461612601661739432411136 6885190062057598834885000259698688 -656993693683288146559652317292920832 3567097857761592524754931633094656 6000578279707457446961484293734400 -394519088267712964280473425023074304 1749028870117844684921680030597120 6027623167254192445735151402483712 -479612257515477881160259481953632256 503438320891890421644276451508224 6182819844062619670751157885599744 -531100799261615689747560723503906816 5125692884194193444544464348512256 3977149941714438793418279093272576 -989907897401286931338743463695876096 1319299454224701970704311303274496 2700104754822213678658087980892160 -345513923935138785091989600773079040 5955492906424919555714346387505152 2137329843009661552109818424066048 -12107612838165438375293274745208832 5711418828065057210105612126388224 5017251158995452271404116281917440 -85830864060294388456580356971167744 1097563274201093726015549125689344 107834435516874416174723103719424 -943752614956165796015997272956338176 4818368026370586775136381903568896 7778207104591789834647568706961408 -863265371354007317449405661953654784 8236907535456637711869850547126272 6509817103261733672111547908882432 -663718774305186313665529358172815360 8664143668472595609298370494988288 9689036322590312892421634317615104 -675104434617416320371612264135917568 4419916313599560522560489861939200 1958292615344671795830077565960192 -446957702898892378744286457372868608 3141554367459781684446576903192576 2158236417184773703645037212991488 -37232793332110179305910286237564928 5118823925023926061178791630209024 2695005856205374265876529748639744 -98500180852529878021274377109110784 8740957524041118241374663912456192 2838874522108759280299070248189952 -723718817796347990515961823181668352 5439445953732597411655919463301120 9626381471762878106475452973449216 -316015089590712490096770109868605440 9920581917941998912454677550333952 6508459615631916478075698398887936 -31427778727916124370752152543428608 972563066083457046251516152774656 4248236396520006480652663204610048 -390856947735703834037049456735551488 6383527536696721657485361284120576 9738767560303612514534468800741376 -54833475254640399882757423409135616 1731947567460455522431407621144576 559757407738044599858689155792896 -321551254684382056458445080083038208 9043204857532381833330521234472960 2834305206692835909408432892936192 -874339200557126020314764478156636160 7260443150796890911807791685435392 6041761496268380473550830315765760 -276033922338031348980194541966458880 7838375664735115803987695745630208 7775051652048892914681682996494336 -44243546899530867019939038820827136 1934455981985117641282482274828288 5565093925005222387381479550222336 -244911238864497485615651460673961984 8540308797861489582816836368465920 3721155959374082061966784419856384 -610484505927489495454870522073972736 2296821187806700297956590442512384 6816051880040431324477678518534144 -208628805359785637780613336223711232 2078513058490656672896237376110592 4643377225313769495327059447119872 -815826481804080637557898508672958464 593787816428285478374289749049344 1881776821593363778378383872753664 -602561591070947896765944881345462272 5431365466921572430768583047380992 2534691668129702456712365281902592 -43215226630057549685917902287405056 4658394596322141838624947854901248 3947411566755793384896259038380032 -554671875052876342367815042796093440 9298815753952881050341154454765568 4440165410785860222697415670497280 -7052235844789377739494569470328832 1990679494198694202467268761223168 5775356846350188729488806143590400 -283254315417779419383899270999441408 7065519141080059908274285820510208 8291650100966843350635026996789248 -709535586259151127014256366315372544 2003079995879251446315118743257088 1289074783374346511551314314395648 -80967367087666629641310800594337792 3922333825107177668754063650455552 4238087409707731171078797885702144 -675145683322962995452945731004923904 7661284982415427609789551163211776 2443767817740244887465872307781632 -339158135737595350684923658957225984 5697354335582195234675529680420864 5002138193435822920089924278419456 -167397391844243994023594820926177280 9863507521399833409939451989196800 2559434213252432640778335793709056 -688382864269990585392563682526887936 7084542856668945623705502724653056 7335197452727121877026464000376832 -597396287973448270613958625027162112 7917243834815791637317217941454848 3031062242193480374859914492772352 -184965079587388682821953797102764032 3300390623772118506881218003337216 2818119058060909858378813450223616 -231823908057033134895227225849724928 2586351329731735297163904705101824 6394182104429214320415981275447296 -142433939747989557338020805529829376 9468849428712704024550732808060928 9584319303799905577999453380411392 -151120743605926597340204567957078016 3361224333184462281768238042841088 538469405461262501576320523173888 -36459493831009124821581429055946752 9312741260169294860464136524922880 5687029171091181295941457094377472 -53520157869800168639980503887249408 2665983769685231901404008699396096 9360360552514942709269489048879104 -694295988819845510247120338576998400 9788936911371352127590082455535616 342551727476426850912342724575232 -543866358171543076008733891660611584 4722087117994661254417887292030976 5033619852823453269512792907448320 -141766323224368989256770390132260864 1209870402095801181173162887348224 3946046304043983134160263386759168 -253942786270189109417884730395721728 2150032026204530069895186208522240 2380953808478933467139877885706240 -18431656380771541288734530314698752 4582928499131557511704106810474496 9302418252399327135334558678908928 -155440931285573516296743101615046656 9662683644423097499772664848318464 8133461362212576986810811106197504 -367943927837299030580500513186381824 6823164507582289161478012890251264 3138912177274548219566949102780416 -885718876424973956067278556957245440 1995149058074265551553563134525440 7558047160313871877421564279390208 -356605239357921757697271949179224064 7402835777590606187930373375131648 9080861628811248973041163231559680 -861080565846101226261029323087544320 6555427290290002051158722973007872 5468992729673806427486887834812416 -276740673746366019847753462020308992 3577008003965277638822798259388416 7423306570211769041877117163274240 -101770032004703028959285555465551872 4877360930260510391325620246151168 3468248704794360415265551407906816 -684233948898493614077866351179857920 7403823887409683149068901543837696 5690412017260583374196277417869312 -126559318641535547149385727194693632 7000856179688553541204979738476544 2454951455956943224847046411288576 -435635783248650802020778837138210816 9147717603786898973592380185247744 7713240315726364479326836167278592 -833562262546959208187388502715924480 43591674835215648859345490280448 9354151217897295549168710047498240 -420197585098828938036193653233287168 7123811589233314722038342026788864 2210010990650886064480040073035776 -460430119027833063279832448421068800 8382737911529678317993598870618112 8585262040536333395395317608742912 -168389493230467162720589195836915712 5763854278643664662152763555184640 2943904930254541450102369874345984 -872757652286306884470125633648721920 2623423732919602696928695389519872 2768195344796710120317308863774720 -1548943169653486024936384582647808 1415292157412366302343399385071616 5392232321948182094672888038686720 -752013412513846387859340947791806464 6952519720922723670735977220931584 8539183669759698623374122670882816 -343938950058103549638455124320845824 238693885469927127307842423357440 5300407117386343506111578660405248 -68512601239083090780822245537218560 6450123154140144407283868593291264 3434486190830448364767203800645632 -186378623499235520704080932537106432 1846286752944526505243165864230912 313246301920168308084998938820608 -833757094304593252401222826359521280 2661759237251941087288180663648256 4077169049691014498518325973221376 -249908416452044808960916912108208128 7965057977402600642313234172346368 4956003487409317864663323047362560 -866723803447536637444051307644059648 2258885708808383373131134061772800 3043982564090548342945639668121600 -299512632925296527328412267012161536 2417762389442260268824962980118528 3814631790371202306232783569158144 -494548661754697713228379574950166528 9921846805885931560557413622874112 6548526542995604999728904127119360 -542201256196877131871310489801719808 6379161646359134932117030856294400 4844607317010003109057315165175808 -825824639822279857647873675841503232 2657466881145144183474367666061312 8999756617492809272124687960244224 -107397069256216216726691390307696640 2546098490780817058542315510956032 6134796200575220525281013428912128 -453595696731198061084776610102509568 1606928877121906690408933272584192 5280725848030363183964818979684352 -843855839077535078452856263129694208 2307850860617494328024912472571904 7442900325607424064487191803330560 -204357622202954070725884797526212608 313839522729577088758135744626688 8270356073622589049227403002380288 -83349615952541305075178243350331392 2753407992358632570677348880351232 8620335801397039855578289792876544 -129469788712504593202448367905406976 5054872014392995491685858673688576 1114668184642308025102463408275456 -323295499004883419232328428994691072 9994342533133761454200703311413248 5319756467619655715955190540533760 -278644058020351608667769163143446528 4778360403098634298815971695001600 5318057397632139500218102080077824 -690858269479461886649868796781658112 4282507355840016192173925721964544 2366126501390273655670633268248576 -285426213365008890453810028434423808 2272301179315570792863091853885440 2266870990908412554896724075741184 -855171411760846322814501740768919552 9285873376235972715064510359011328 3663896794897950878050214769328128 -927369031921107628108591551165235200 1087102258051718330487145152643072 2112488544152298223328140025921536 -843588697299463320926218946269413376 7351793563152723168665541493653504 6954820680201374354040220318433280 -358739875624250234142811121891934208 2156693022624341585641968664313856 8886913156748615614984561847435264 -595262563083892462654215308152143872 9988656313002105220151636624670720 8181095098009878645474219977080832 -391888053355894487602229210999947264 8826965051689929955771859679051776 739848169630067298834284428656640 -652812737069551306503185451068686336 4604039522370217842123732674412544 9904427933460611368335831453401088 -671057275934503622319653258843389952 9181603830130306065437327810887680 7025575218381031180984510006165504 -888665495913808371695840973406863360 4118197307696925386712459281170432 9475777644428327789737494068592640 -905095460222445063375123730315345920 3654997567990197657023604081033216 8496026520867144557495028333674496 -593898621619349703583596261740118016 6240123594506001022946495319506944 5562133863047900578220979655802880 -750154311947716071684436655339470848 1833212324450624440828101065179136 8051016049879604243698456964628480 -355033245427720195643350570988732416 9312123088424049892557260350029824 7957891237348763832690532717428736 -789120851662573728500225714721652736 2156541364443637967036033156513792 9660070689539876329820669312237568 -278083576730122203142823022761607168 9360852979484311411588364907839488 5520105421960891987079883583913984 -313731287294999468910316585314418688 5302909959092572913346161145806848 1294891586806320074450639576367104 -377192093841895426462219389395533824 7458754277235448091530050983165952 724512888460465389481710952906752 -857174815690364791358125751389913088 4624000867172949364957762029617152 6861290954661491693171609859784704 -56734110523202500816901423755165696 365398585489692064267238157320192 6818212878373990580368169636986880 -81637311043353013600130030958018560 4332231532290982287319958128951296 728961854835633753466602226974720 -244420257403920236076739551943458816 9262909377515910081949929104736256 2633796295610752655094824591949824 -516552275964488050871198276395204608 415577886830936741582300375941120 7584423604322102815996602080034816 -586678695653084092809508545858895872 7652373075884395748082743907450880 9892859921427453009319695810035712 -919050323723740070828911146561437696 7566345667607255890226713756434432 6643710439493780707316427051237376 -13520635656122815292010969446744064 1034087752234123797381151750881280 5630900869693427122471600184623104 -453709651565017038550267524101963776 7888142261119059726570186162044928 9230386849710676014824828207890432 -305636712142236753478376695185539072 6106938665620276445664414909071360 507725933722994139410294630252544 -957521842657907550964211976530558976 8501508701850175854009260892487680 7160951820751303004502282100277248 -837986692453401786004385302560374784 166855833261446525836750940536832 3924261192882372117819583522406400 -783000626204201741948961818815758336 5057734871527255198894217819586560 7543905084225508618402905106415616 -672152038325804945044580068656939008 7934336452421572183902951670022144 4867179879047072424247816873836544 -862326836124346168066901649647468544 5468851867619958678094744465178624 2579253595393808105197783652237312 -192018906298841365518543629431341056 2269442319509014335523960871976960 4431856363723975812629033589407744 -28606249025363665530329305819643904 15698147220662001955086543093760 8775744112856011758195966807638016 -310224465773061047077099549218570240 6989083144514903161152552543715328 1480000670292525640447597788266496 -825711176332139613792653885057269760 5415296293230223429374021967282176 8395488728618295229347894229204992 -866296057810167735736639810017689600 7558420822490786272457739491868672 3426951724679232949866055780532224 -203616691356674309916811006339710976 8500746877341073707677372381134848 24171714719013901886216235646976 -218374116845675714066880552501248000 748431213264036120341523298516992 4458817456756855426512383662620672 -91224279556894198682708813906182144 4678867980154563575712394631970816 7225361052986899865268026777534464 -191303542286744618307639067503755264 3624713152453066029717291693768704 298177134782258032135796022050816 -160514461118355477159772314803372032 2059112200770478761231524439261184 1829834846388639169390051177005056 -395664002265479184562060631751000064 7445025002801347782066237127786496 816950542000614054519630750285824 -785941069862157816921769779287556096 5539407114583301428856920788172800 3656622724668104800366717822828544 -538126952218071463740998313003974656 4895333976058241237941727797444608 3800408627595882906294362598014976 -343058028890076089842043976838807552 5705875651283588114234708823375872 4971729488389839403218911960760320 -472204013609872511522962810479837184 7218616050188845591277740052447232 5981999992041291750549458859851776 -736946418487621740531200260267048960 4655235742051362797753266778144768 5523141464960932885044108336300032 -110275257323249186045948715692195840 9952032381752906275558736655286272 4535464650429929158020730724548608 -668192909869863440456047184513597440 4283283038962390671612528474193920 2752103863583778055169800694398976 -389697118487626052324796341063516160 5726519061798411158383726944059392 7957641566880790186276588733071360 -259601816303550374282258902079766528 2301809290107003282145705428254720 2502729017993347925284465726717952 -267434624387972932462010847195037696 4417765342317788414189103065595904 5238057468020941092239374056161280 -695071525122375435160781160978579456 1247251379241681302688123238481920 3835372617573474537456753520410624 -563598705448139324981972100079157248 7401295069334197180007816349351936 7893499619957850383898991178809344 -44649094247493646202015891712901120 9433174716454564618225384394063872 6512173533622422843108205556400128 -46648429876819634756568567406133248 1791729090454390036533014031237120 755530984654956303131259483193344 -376727154769265907676589198376173568 4350535278384035401137992541143040 6567505296590831131573973726265344 -317898207974591043768276694499065856 7999907625092430064203555040919552 8059739312421220022122699428986880 -882260812374007957292121857355415552 9752452979456385543954371287449600 3532926531762096146037724678193152 -137071276719203461785505610871078912 257774644023514013643196430548992 7723002004374279221631961503105024 -420025249437647759114557134345338880 4864612177852591931466740349796352 6104290020533967929150499308175360 -278363636033833051977262862834860032 9729921874883303394819290030931968 3976817563526264836397397769715712 -217976306765060176024988219867136000 614636454238963144264356384997376 6201679353881208997797689378734080 -18944909736150975743689746586533888 207157223223001207553900050120704 8313438900894809129533384844902400 -358228027589069747980326408407744512 1604421987489181075496824058413056 282879227813417496359232010715136 -87441889054407442329028494622720000 3338661724473309811924301688864768 2450992557122949570882747632713728 -348990204465944150780226031774072832 7080647973074050218215819391795200 8967610379860692529701347674554368 -454196220142903127490871125082112000 9490958421451810053563304684552192 2766232248429288544067936711606272 -352774275405744054427835029350514688 881139833316497668106730648633344 4771245265780410779998458585546752 -395950220679763489916477859099049984 3417244051846332895690796912607232 4551129351707274591223244713361408 -709793446198388297124027610672660480 2539646975342916724628548130701312 1902833058337741217881515674828800 -252573181483698669880819256859295744 4991170761274317793483414105489408 3694932215846240276531808764428288 -767172691383328031816526430621138944 2598544226373766899381446725599232 7100434293008542706890813342744576 -482122798325243092832517899706957824 5562031597074573557975440391405568 485388036834951762024747256250368 -768006287855981256879751895971790848 2424106539523407057475368388657152 8063404880504039358554203104477184 -141384027393621424881784527452635136 8928421393883680879199041768914944 5507904678115197371772724687405056 -470238594721411383799848340295778304 9061396858653759362531876363304960 3549827924928637343187015194116096 -720828599655188551594252750750220288 2361498241042756549258177593475072 4301597619571440299957415695089664 -816143991110245067400065011402407936 2828445608749690358121802667917312 7454191303157370976358183857029120 -378312203470936182348591354620149760 7206112468965925659813795296444416 3263498679576751757040401476747264 -260592429248828529492117929590784000 8992935470938228257041888202194944 6082978186399320936365469636493312 -782082558986237716052358487898849280 6285706437437709406982079321735168 498385254697348807977211338424320 -965965953788905162177860211717439488 8437762829031720694064271539044352 5790355971577326586759204166434816 -497085358433239934885943062319595520 2101823568684996222182504825618432 6887768697517448809296003367698432 -759377790289619301489102895376760832 5364634515193113961078027846680576 11604984029021274677461167112192 -162634771313642579018406945812905984 8435732880617021843005469834084352 5741259232557353413794101213528064 -62810941715108065004993692458549248 7700047257526113325665008159293440 5504818971131372840588050555731968 -954440839284182231401889206944923648 3962206120198919860854104535334912 501624831838327535474858927325184 -16900440512495181290325252606263296 9886546351404527678231673219055616 1712089314409740440860591692709888 -607312009621239355442751738818330624 4497310153143533459497697731936256 5423263133102682026438051812605952 -369629220861348592034636863251677184 7827655641914550350086396614541312 5831184769548288581428500456538112 -905479421310464268329529918437195776 4989262110555513970045722973700096 6608891006441217600236288353501184 -251615980761024490618147066045530112 2685622646735937983288665714982912 6398934428607345302374276581556224 -557858760155793137808307481009455104 1736199463908984137278435262201856 6318758080221117823615858934546432 -253277315467747928757058394084343808 9098464288231082786841480564572160 5100263803308297960028534439149568 -741441049808748218189985396541095936 5823830991120224836536402328944640 9834334482809620310448464241623040 -166275807269360015912749028740169728 9052887309257237930331145261547520 6224765127677149386726902736093184 -965704984311572499020629067016699904 5915436359168334767489167461974016 9001779932874578468036938515349504 -801801328247340626009049363652804608 5715311158837834665998029292568576 2557759206905846282443922035703808 -888098910873416292080409845491040256 9627507614536651301508314115866624 194015991832403102603279553527808 -564448150323001345408555033728909312 835899876057144249373424271491072 6369915209575495963403755053907968 -423708816743451027455609329170776064 5219954376214894730012643058253824 2057408246160352173160608730972160 -744264341079484244320694091932237824 6801355010404546565684049712513024 9800821389060154464158565017845760 -226408247960770688918327491494412288 265512328045292845196282230210560 1956572330734053602755852583829504 -704701547604572290034174617211371520 1132192207395515656798362836926464 5615368285209920515586051369074688 -402244187584711482549858771893485568 7847207645098719783534421384101888 3180002656011069340812157269311488 -192757889870716427395099243145330688 7910723298243929834607000405671936 3583518402974537945316490095886336 -329990932842503749312456504962449408 4743626820083384568771038429577216 6692638373711109983235514277298176 -71813432125664327004960761906724864 176540498566954807335376813817856 2119214796161432848844564098711552 -733320260827049811352864103625392128 3768863143310664394938517435711488 5111328644448224762872992731496448 -178065890391159648654168999906508800 3039039268779121630356749854703616 3867412444608804920386031804481536 -315166442001921994819351978073653248 9728288000573091492036105740484608 4708803874792127297930692202070016 -728377150399769448027999901981868032 4138383358217941782505981162291200 9992309149258652612311576934875136 -452726144377311069907833784306237440 3594154950604037306772617670164480 4457788987028884296431648519487488 -391958368251407555995576457077194752 824499207454779831593137325735936 9587253107006109517918218554966016 -771625668696242527407525320240136192 2200880322190128595183206525829120 6910500411883570187885768041562112 -494704620554566305735812143892135936 5618108297340913057040920278466560 9461805183659230512608438392979456 -485311440696072193136606236498722816 7497051365067338492915489586544640 165964776313061648961032975024128 -242809508601989101119937194951180288 7040894616250008484977853413195776 85920480308027884836134074712064 -954269381414487171942058520899223552 3821068971420047059938254956527616 9123893258606165075581493703606272 -10642574260084710019816568936988672 1410937614307487611863793137614848 4758591248256546081096014697070592 -795454221204135725117738395755347968 1723817983189554095672561290444800 4123685788576249287566185962930176 -41767381824349887879947759676030976 6724411105775293394318284350816256 777510562322295440628297869819904 -996090391640748067221356401183948800 8324424987148274231807275482218496 950356493943096627833401560268800 -732549523084887491271546925911900160 1748773519928691297161319236501504 5966116978586500427236837068636160 -940516737445531472069372641751859200 2044023450804148996778961531830272 3926677932849544298535427799777280 -711278629980791766325274659776364544 7963905703254786708776819733037056 6014621104762526739120929355333632 -350745972031915976800174464013697024 9941908712745636325348245275410432 9090739079677220355551804558147584 -476927379179847762478592584008597504 1799243959963335502409114090209280 5472852695193096790636306657968128 -711191209793407196954200729496584192 837049178310678982570669821132800 6100209239165698347274500153802752 -321521264842285743263928571974909952 577322596260154701145535433146368 4853758114748419276999924285177856 -233116052315005068042560338290278400 3543419646045163221916100616781824 7572535322699522339779378763792384 -60991075409547180333246854698369024 235881923356446724929397182169088 5951414269568043010256475623784448 -764552043673360979733513707183931392 749194892193648681792391740391424 3800616482887939160664303829254144 -794855126428017589071609959565754368 3365262320041562757560693751283712 1783730757205298753359586718121984 -956086498104752298794956334194229248 6086577155740807769714897071374336 7867999967578205404084254497832960 -932048735167780540440574251176558592 6930534761334114347567921892425728 1762520533532139431501678369570816 -746594417297833766004197959204339712 4687648735413160566779865859096576 3473616308654151893829455003516928 -188518178096907399151516169055240192 4090484378817590416933640499888128 3197746102310666500397051043381248 -623360661396357242223132296559460352 2461502747510485296982168227020800 1869159235719946084181045638332416 -154568368464510096695492147700301824 8524261090494983525939183068643328 3473986417150816744343889669783552 -811296395910361118969658160502013952 9215337136419908831721646194688000 1959039664869681986128040177958912 -790889658819972963337931382969073664 6375196521354721858289538439315456 4001678850470358515960244948959232 -945121746804222562699017367131783168 4237923876315544119812694254551040 1992387036221599934366711231283200 -432713332943951045877049365884829696 6167121256247918248064553001680896 2885049337790628180158621335683072 -90832964889328217276609432240783360 1166431645711189815611812921475072 286143419701180084403134311432192 -445815753523241673522576626433392640 9033418722956314697143742076289024 2555315205725223715318048122470400 -937631328760093419571820358759612416 7342613987573596745965451578703872 3852532326718623031149083228110848 -811875722735133440360869669084594176 1906199238317599616647121199955968 5511935152353483104413886990778368 -424358381023265284885428719209938944 240244439593854051875159132864512 8511988355225246137321276070428672 -929928061984749872460545603730931712 4559166561970531791910847119360000 380067148560024941689139699384320 -292070307112401920972180444164390912 9287834911482169783133572872273920 8181159541478380765769086349082624 -874392966685142941781002208856244224 6005223258447513265836778474962944 4691235981495531102854694198837248 -141006512953323905292113651548815360 6100837731106027963563289532694528 7130322140194941875687226739785728 -149588966318715116513963501791739904 9688361416441712610819988835532800 2454546837695397956941108859633664 -985136185343279402611868235689099264 3461588000069633163637678327988224 1886647973528380294040580404543488 -599682970855722708006883178630348800 6039379729632218780141704326414336 3274297649229492802601489228890112 -414946999094841687940621333325414400 5328820730733002910086673740070912 3179030259069785568901957255430144 -471558754251935564205505481132736512 4705240752262707145456532922040320 3010628082325715993754262873047040 -799344667206680987695848878468235264 9038323182695131161210365964976128 1424486068984743462888082795134976 -723041208188834478238081844921761792 232818012781695343926762664886272 6766768678327374539487003147239424 -737277673575452180872792559711158272 4990911954101875398698923408228352 7623038006715401366242916801970176 -909997682011655156919236784300228608 9461966802874875316863805297786880 7668093220616077811185574012256256 -120713969468574826445161042274156544 4330763667416790636009508474716160 5997799089709975417444508456976384 -91338450922213313073766209096253440 3926174108048673450598024588820480 8484636817210267223391555282796544 -687030263554316584367689680946200576 933381560440940173457915046264832 9031897837020415093416974069268480 -961660036210016694572965012300627968 1352816434791059600469778830983168 9123331538882414113954154825121792 -738068498546195341282344277049868288 6343299679361756415510864352772096 6481715536118438865514008439422976 -24295043532305235633360933478203392 1030373522629853633127869763813376 7348223939624060673098158486585344 -642045685532923330869707048730230784 4678192831461460480438495743049728 4532465918666216894001840060891136 -883933034676415490799198239478251520 1269231641496777189882586720108544 4711131267901341771378360208850944 -840929592829749684354141508153114624 5843742038106197484451905260224512 6763944397354957755705639563165696 -753374848189733427995929890745483264 6075783046135384785997239748132864 8262039507837069648482819679191040 -670809305563292735937777756901736448 3578796086225900409585978002374656 5429863869066593712294560517849088 -789288715245577675374944949003878400 9688166575357789608136842980360192 5728609860164006397315685084561408 -605346545802525590127463985869488128 8748436463854890300077695907659776 8100463101255222348721532948185088 -114709369316372198316074617526026240 7035142776712272614807755785502720 7957531858962108313059464960802816 -229343451860012744201907957730902016 4330728126113661453992208126443520 5718430121422462959692002466201600 -214757936479083118458384945569071104 771481680592323494779814458425344 740798254393155231603005988012032 -176666421663435985942824244303888384 3881701613578048412278935502454784 142701272874398546013032758116352 -760285884513874956482964428892930048 3750262934910761819989253608701952 7055341743296246182203553679933440 -602091164417629657726354848005226496 6125657106177240543050385646944256 6008122384518416360686721223884800 -660219255912526897093660307361890304 9152299568145986409535276390023168 8771854746268492188758802081775616 -345709188306160685500122329522372608 559712319815522635487734730326016 7720073248504494747487692509937664 -254489459053127444962864845322977280 3205884919982999518867063943725056 1060246943230864224065184149274624 -30396389870848140064308967661109248 6148617876644667206838545794727936 5481351050913478533808079295741952 -227339129653702819301981700371775488 2436662685950932958738172109389824 8767431793047524433125295926542336 -860184479615911617157396276900265984 703674377450950144056831628017664 5197308052820582613122607204007936 -611027264071433749160462074337296384 4447801834349055323454057381625856 86743656723299962530021083447296 -678582141023800791366311779246276608 7178277969166073084966904086396928 6415116604486858972873183920652288 -998842499724251297209897162633117696 4124665974413378486224462094008320 8244478097069249209911703303618560 -315345412777053691285936635125956608 4537588150238061834799335822327808 2669342406366161846081511556644864 -145043583316499809756431604030373888 6054413493605515396015983345795072 9195430621001227952618414968668160 -358315377540938015599935658263576576 109218407576048988666243919642624 7635591892015892429105859125051392 -53892297600366004944853676251414528 7617525371603011929699831039131648 5301700652741493101633261000458240 -161361221093423166175216010851778560 3132585387283929140262503228375040 7020635815991319958160610154250240 -942132662526002774803866086895779840 9160347023430245584379481981714432 5888231554874096370696099364601856 -413328703641927809824837395271385088 5046813390007886920690458374963200 8406753823443530228520017264115712 -953311165799173479257415916705546240 2676361454886882270187687191248896 8668518219582880726896497156685824 -250893246609335455480569091835559936 4509117957492831293806522023280640 8324854570159506832015783733755904 -719348365494603029587323558637338624 1242520066979503654682047375474688 5977344911075364957008245731360768 -225247761592718237974975820872024064 2294935277495493879637619477839872 4035583580401568226066389696249856 -739269164746748305343246983275479040 6132251749452635375453560704598016 9694649211198327660070724500979712 -931626115198424551979247341221707776 5063567486138184851915183174451200 6217025022866943016106421823471616 -143521123443285278895893980200828928 8085137770359125431570813998333952 4146430997738885031759394795159552 -841001491097115683573331740539748352 4072206704186557803651541179039744 3475338680916558485493790971789312 -990180743291547638278627472615407616 5438938876103798572132074478632960 2867360849856359717286527650234368 -68796883114056930889668889958940672 6504221804923110294176640196935680 3563673027597638813574137206800384 -582665408941043147454935939806134272 7708363390425619249734946859778048 7294198623417147817519698063392768 -218176761664272717224005292292833280 3520634767822205197262342565396480 2552644091851740025349305977012224 -626521431115802290785839784214396928 2215378652818496858767741337731072 6736692724443560524186907783987200 -469922163643383575432240918859612160 4557290342522060734855451103985664 4900970111685739207169354800037888 -274184274136915526462727422042177536 9882241082287185167729918885232640 407189550642999662042109809000448 -87013135889613728525808107935236096 9529705657511017371852758715465728 8472104260096103475016753232216064 -986762273728887217902888871071318016 8953865087039863261533494768041984 9729024231000154136643323780136960 -122215637607909520067177955926736896 1485628805159790521343585288192000 7370335526626838303087272635924480 -227200236575208703543525018720796672 1377981513872342034963821867565056 1655049269575261919988492965773312 -435306990704163435174051296443367424 1107167806131397473748007432224768 1964826482395040830763011307208704 -983862099154064882659930072558862336 2843121094943838898696323602579456 9516504799653484021534525415751680 -239263023431296558249356142160379904 6978141176005946534775187528744960 5995548993167788433012029952884736 -505541902646217208176463152272113664 8142714723724231892402180496293888 8937932030522471936464727826235392 -540527274331745215882093684452229120 7472479647986393259016784185393152 8345410598747695923906710360555520 -579946819500694495605468062227103744 8830613195269574813849294521499648 1179631822033381007565905396236288 -301967117435081162667896673037975552 3126265267111183186168738610151424 121730907534225165720644248141824 -930343340954852784428024108110839808 8447786964467850855034533435146240 6348243823578948452329787972648960 -500619076819224466980268040404336640 4249376884444273466954030273003520 3622436433343003785000560690724864 -312051817383983232806134057288073216 198738584858074528493509046960128 2426133172145746114065775437283328 -288594909588161913185106067879624704 4749898800608630810064294718210048 6530382914753006175605504914489344 -17255474806513035624627052958711808 7078009824710486372420535145463808 7413419845951025076559180363464704 -725485012744540461505893571768614912 2495918982231797567089815310041088 6176580815233442344735310279081984 -308937631669579066285672493335183360 9755153491345689469369910023946240 627705192250246319524071948156928 -108106636375351449391982481453875200 267047141663722957332118421635072 7875536449259538684725290466279424 -870717071016377304633887646407458816 6231145869070138979226491144896512 144871923681551346918135039000576 -311451376017956488622086689629667328 3821216182520768575886172266430464 2164858955662582137886616133304320 -316956449886264716128015164423274496 978511515034113584097844384497664 4261534830726384528959549529391104 -242527078765576045988992980069908480 4821519825483858301173691775451136 3404986836060464162541482962583552 -453567074644262540861632971035115520 352018033058109686875544874909696 1614057305081282118240321652391936 -941900488116857025283179203319037952 7213503294562933614711783508934656 8944814812969280554925755729969152 -73364521451028996404455217429479424 9131395296539461594857690498072576 9632402747229488354202000075784192 -436692905486329885425454883679502336 6729929947139427903769469029187584 7973601760286969790696052385382400 -163224881143164631535763147374723072 1585886569508271771079670516154368 4394734568328732102734222813298688 -169744809976150077392417019534508032 2406465254791150887414032586768384 1828407556340141489980458863165440 -11680184488155808768270281855729664 8098669076810239505450450596921344 3394120038077604540124255035064320 -319769833023469840646364786484838400 7037916804361899198728717549436928 922924679757784954864199427686400 -909301854544298623455942609234558976 1426746232416073494509258859872256 8243816567497324893143590712115200 -662201227243299903634763282978439168 2400673741536479673164478222958592 2680469133651847729734959719514112 -586329391851586588102833504874659840 3285653074904553745464750564704256 714779716638288763484897464549376 -939995252719119010267866873913671680 2123560676889411648389801272410112 1361314744413273475721863238778880 -244912487313878007491501496115134464 7699164678717943400623322771226624 9304195469463835933639186378129408 -78513927220732380347044705928740864 6237174763009762949339836298821632 4626449973997807254817415972782080 -802160937670206943630379070515052544 9648238516040711427481578663575552 6499564410627156223335327328108544 -470405852870035564408129839637200896 3971020439619671984046186501767168 7993649452425674071556912639377408 -963315830735648270614486355862880256 2930468103933322264016788010303488 7180450147361921965681432906956800 -337285756808217673946931465914679296 4431799359148414674548407834509312 7420314345552123403701624187650048 -207448153087353565871138085737070592 3792153825079668816126941146906624 6476700980068893420770731545853952 -189287730420250631611685160135688192 4527732113493941246135740085043200 5937596359043234687725751796498432 -951811057411367878434261866372923392 5983532757845289868167935569166336 5834905177776597060881388346015744 -285013067535791776629375257429409792 9391267146282262437241680537059328 5407243012377242813469509105483776 -574564086878440479825079907987226624 271599807756366475609414574276608 3891898790636616968922360019156992 -15252045876667024053142251240423424 2024854613370531662694511143813120 1131455765104063044764572198109184 -991887895237583741737637163644747776 3419322717037887154846702252326912 6083621634508017035795691340824576 -542350365646106760145147416136384512 4451496938586210237130749004218368 6112461550410279767061506767716352 -813830388818668385492338933478981632 7734444907224723723350034683527168 139115747574647380513868910428160 -636606272000932711861964999344783360 6531972166311027322349552832348160 4164493396499399021315357184884736 -952722329564036000306731340055707648 1030847122032018946388564339851264 7855654946136927395509722282983424 -653701293064127013850845691600961536 7118647817314371853662359780327424 3892756840633526620863087069102080 -824973714786495819279318462385618944 3690443356180721972507645961043968 6276143224832877051161085883711488 -998934582140981904514365067811094528 5284028081840379708118312054423552 8661612652234507469410505240608768 -971866762107489577813119798760964096 6512745977351358276407985080107008 1175283520516975029241243299217408 -499041850030327599320649264040771584 9472875976296746397502375844642816 8946125972326351715929159060422656 -168276985437479844329896777709780992 307852147614173363094961545805824 3013346749404117285758726857293824 -375083189576174367172462502370869248 1517030535327577100236395347181568 8652433498779958329937483077255168 -631916937422783105212990404060774400 8420260390823195560576695765303296 177649296668253261054855763460096 -937794093665287961938801751408771072 8332658704022663821158810067664896 1866612686184135765855152753344512 -347249217664462089934168248318689280 7720813959744070535211595721605120 5750897715437658622982067031375872 -421702036133809434599679478311419904 2869163450742719548593826061877248 33439082139696432826460395274240 -410330666622394704025360922029588480 5521908382007395569350039954259968 5084709672669249788478098790940672 -65255193294111768587838003609600000 4041292275425226510393842253955072 2542398887260685009233981982375936 -945459080336951680930409929678782464 2616376755463940224598834283544576 5905022013585585797454555277950976 -372983818951014370487951319285891072 2929608858080157866991040151420928 2338390495914288053365684188479488 -755874102840908394268862983631273984 8751594906762530557012895317622784 9456101756993614626842801736777728 -739064108033420153057958823087570944 1508250312704368858789651731709952 3672634603693007880653683550060544 -379722707470331595895234093866024960 9757553443851063681456651282415616 7972504734595367607517150722392064 -964141243832464736207775891378405376 5259096034665228521880344334434304 1585215401276607414251982835154944 -503951562805173721541947648307625984 5494492015184282451344772059627520 9962434990262690037035333589139456 -375229770081619983006062861485080576 9195202369311719316591928697421824 7699116370251810023401595395375104 -358047944085706605242935177501474816 411229450228427058431175637860352 1411185085008660471050145739309056 -920152133447259372627357325401784320 2978604101806071069575726827044864 5393800182355441818203833587728384 -998882947308651563951318872142905344 3600700692865890350826471838187520 5361182898143278144462629120245760 -378614934772618524496417613569589248 3831610817898023412666237345333248 9448505042484087697559232727482368 -359547429243759944124308252079947776 5813074909623205040176271657533440 2919531672350415820647036325199872 -699868169905043300623843557914968064 8097896050915969582791847607009280 2773535091843229507046997722398720 -645643549129012881289040209823924224 1651060989591713118461166855651328 4761040261436855286602768825974784 -281047185109731827270229663959482368 9084131108975733602835137944354816 6466014347935238100336173501120512 -252316724874784729078234546213748736 2949672060545493802734480208691200 555654068594660837086951376945152 -195832163664779170189189147946647552 2878215207708030794859973133205504 7328260023528746919921530079019008 -469211124338412705788306037208514560 3665346963492561880837670909771776 6883554489935857436563252963180544 -850243996539771892000713857533214720 9189735215014521807982521751699456 2512886946511968256607579025702912 -666552821590468211695898600023261184 3809042144126057100082570384637952 8739026568853146377862874189004800 -509768847330382219804510005778972672 2732375631966088484562220607340544 7381499259639918780592600901484544 -131363866612523443912872256551780352 2121706370465650247265016090722304 6050527729848825380395334376620032 -634139765392108227691030293797404672 2512879452363621541196508478570496 8903801302319758900282321432215552 -954237626329391674858527634753585152 3496126680640727280979076481810432 5370839675955399001894365140353024 -418257423587601746929248888416108544 4777908966974709110110333146497024 4693964119863252871932542187470848 -395464508118239323925665861634883584 2109729725976979147281073927356416 177711340871205021007484286926848 -547673823859598623019866234978041856 8876236183193376987407682828763136 5988599040955112440157990643826688 -540543283600107304562012867195305984 6202269114654917278589955642228736 2788312047307937658914409340207104 -60863903092906850566052733891117056 122923423371094813386158865645568 5739769859916761707822953852305408 -16697391344125291021893939744473088 1118103290507379150758927193341952 6443267206125596981308399663710208 -863488718922702839086004578566537216 2203828975554508606513088376602624 9177202693237087428236821846294528 -472613168579368582084342827385356288 6788183165223196467115537689739264 9833311586948630807169769716842496 -785885321189510171854849973931737088 654096342173314713767977638952960 7338525665958811139606812888662016 -469306283478084416218852057254199296 3418638982746169494489821754687488 7833913142203198734996714146496512 -484887433956438413056096716732760064 4488619541445663314033308266921984 2260036624386136062215244123996160 -921119105202311096435712156426567680 3481173806908050130889737173467136 7563507176570449380291277077086208 -227927764232445662202328002804580352 3208176477041586963651554487304192 9038722523441393859434336701382656 -429117853985537320228001654696312832 1821273313573482832148973146341376 3062237392303796309912840841461760 -79123142826806035327681198154579968 1956918852969769594678877167288320 889106272587258286367874125660160 -563223517830035415900496973436813312 4093874332347493890074951129497600 1195515891601710523690959952150528 -956615629002679687011704813557645312 6873277022893101877334972139831296 8755547412055685228127809372684288 -431528406574920609186627967535546368 2188787425737779281726572523945984 3944251967985237356359534661074944 -666087235057890452135738502539116544 1010190078582162736073196884197376 4758683917011687865582759584989184 -397836286050644435633315428668801024 3100070748123912890527799920558080 7001765080212275444213361942724608 -449225195969061142490640484136910848 610703327618866333725564868755456 4635552085639484896133868389662720 -981104888717936516272772479421775872 8662898684128082781131421241049088 2889412512592289880101649725259776 -892915615894461636707312625690607616 9518533262121041615099079803535360 2828567816711581014150327090282496 -823308028542702441282863852834258944 1917520923302846846200934404456448 854972409776459118133451046256640 -452527381115701537220814975640010752 3402133523941397540422056002191360 4625620985827664322685699230793728 -918847734913510051999588019689488384 2337383111828141424100835911008256 6597695689459372793560144365486080 -258262442890984098525519890752733184 6289950741436730423137357539573760 2191439196274934335633106199904256 -298576693809992045712267098888077312 9458285115051751979459863652597760 2561429613513108123289564729049088 -814316245076428506113612871989460992 4178346707136407601538022265323520 7154940087247470818185818685833216 -238715853784664761324302600134197248 1098710910927416190928246833938432 8932846916793029366470574136623104 -645014581826702705151630015192891392 6301849195958642917121713307123712 238870580521990088247249446371328 -731680392609294131825326947529916416 5468360171336515169853734234619904 513375344573593391491025794498560 -865265057551042996773534221962575872 1075006623092353612164949361033216 4388667939424004175508416799703040 -870188536502675745520914461701963776 3074267873027411663697101251936256 3738517061201188282783029971124224 -736683127242914945262707190314041344 8397280930927083011256566828498944 2092982445512097482132801602977792 -808257790155447778478039029359050752 8216148236794890962986896849895424 9029947718076184451711771793686528 -909105107717542258552411601839849472 3397840817831695615613655201087488 894867442223385132825244359196672 -377975252855875572617266692072931328 2699033882027530961946168694669312 8627950753978776065895354689650688 -742269108250445025595882106150453248 6075714864749949046771424788742144 8499099585012628729916865273397248 -116132913982262521539576322632712192 3574733928269471039602650863632384 6058020006245929818762384993419264 -16679731533337563155620281815400448 6742968387630333210062401971421184 3680186428330551523808851326402560 -734985963325952326050137311847383040 1580011424453551959537458836668416 1060045630379604396513306978811904 -388381041522527628967321602713714688 2523584727827797185086356296040448 5045917687928983496699584194805760 -547578918366852641911040192131629056 6003889547420154728703601808506880 4681459375068391963873077966667776 -239323638300080137122724044360122368 716091718796298227779587199205376 7117445249850424135096029251895296 -887138474246587671634617616002187264 8868794143252801119781778593153024 3781342928012449016701685411610624 -493854448019277160913433239314497536 4932496928065148255113651039502336 7697326310850214932127982953693184 -653536469088638448578842560210927616 4266099878642397096212845362675712 6023837547930525784575856527540224 -177354889421358560784204861158719488 1323460048197176403432397537804288 6529606318312223349923649029144576 -65665016423612803246776537017483264 2493497130515562898586255524626432 2609604901367359093778467021389824 -420364158832338934835749705708732416 7112571586534845050598099569868800 9910391923418015001383805661478912 -614043224208706872037552356373561344 2851722637664984672115396955865088 2131615277923312863433557840756736 -627109431119826524921804819189989376 8811462173783591206953529179635712 1020184013194878087590078129897472 -378185716949413856683153809471438848 5960151198777220689462725183537152 3554798820694980387429184058687488 -257832583897978076810136721593204736 5827770512885362560974715636154368 6098915077530611317779190387834880 -470828847172101650280891794826723328 4717182266811386117977399493656576 5672706949072293846502745795723264 -829271973308639912926263048365146112 4393949860616902416484058351534080 785447783157308851845578342006784 -813851779857040751486844792800804864 2755566774059127104377983963496448 1229278107765710856786086553714688 -37470931020385838005142151541817344 8894729727690551313439292859088896 3998833867591550122282111608029184 -276436093471066659051203656104804352 8324430969325976736563187752632320 9895556256408978638850439734362112 -639412143452445185837193086489329664 3184725973617839624388648349204480 2589081568116882580523261087449088 -87049446783504606010614700677529600 1350240804958018569819918904066048 7832577107084375574194356261748736 -846191823984735604675173825837531136 6808616652712856699249378260418560 4268950839042295507488735760482304 -167092480176611359882935905703428096 6746501017641252559582014314905600 4856243286354558097911592943353856 -109243023184913549370149669259182080 5086476626242292908341542722207744 2095682254343178359492949296807936 -655682374793251991140024809735323648 5364512690966656772429372836544512 8410848853265331623015030942859264 -416279623142496413646150238673567744 6522997589297104357190247622115328 7942679309242528410525541788024832 -561461084629770391097881668014309376 3182950554114234441647162038157312 1094983880427614249776384665714688 -468169755427357904123284671562776576 39711420376872728971513144803328 3903867604787889567239702262579200 -355633305865954060384736648389197824 8395160604116179129455672148623360 1874584998569999794531319691608064 -433513281952319368173176729259474944 6025897500722303058183592947482624 6794101018853567958220286684299264 -650205258077077514089889411173974016 8471757754726651706286369453113344 1283955014032483121488459961729024 -281139532983550331940952602910392320 8885627706250807741911750672384 1188900862690301232461073635868672 -715767544769695299315158492758671360 4453716035998012063300744678211584 6811102045340620758791375852404736 -617095176877443956477692425313189888 3357707689275956393080906496081920 6370057387153653842389619978534912 -666750906422174146459417177996918784 4864734562342142033371230619303936 6865769804141485631717428386856960 -520888080944673967208883072679280640 6583272623001650794749398758719488 3201704896738674123639368529739776 -816068732417865228143340127124455424 3625543356398142665575142394953728 2443768181557001125586885480022016 -598845663550605702955597538082684928 3444457234531411836062943053611008 5790303527644974329639481118818304 -118893859946246246608548902033424384 8923966354738673467480425390669824 7704204428247828062445374554505216 -385310860563789341610960072573190144 250693655705829337487051342217216 3339782692533589869208999047462912 -810877119950649833994951947678908416 3599959471962015760576536538775552 8771528132288809368620847985590272 -285309286704119604218655201868906496 3357181213055425778371408477290496 9746782725508467270860986067714048 -682819556640435505071157061296848896 9608672027168062042847969774927872 2416878481295930726445387578605568 -142451825750304000466225192025194496 4433012593757939921116152389959680 5973542550388069924521792977764352 -912114117748317434206722825826336768 56213030753897008144884711817216 610029695553019864207385432162304 -76509045120167578259087246372110336 1943517959396139992366716471476224 114364603039450603590558494490624 -41094228649776542578644998661603328 2837887281114124872649432125931520 6600536037969100274722579121438720 -47728992563138604817227268686348288 8634631013904219615168999624540160 5644366016394047605615483733147648 -620954992943159089711756912128688128 2246365782166918544372129519894528 4664495309814761623331230476926976 -419249037770157882702738484713488384 3477613866533098656283063073374208 3011553601492600471588272139665408 -329821478682692077902107747593224192 9935024995457541209141287462109184 9376088742500827688683587866984448 -122713865297091744143885250315943936 404287286911597429073934939062272 2388744898902054712790566024773632 -48650654067793623395105572254646272 16171390515096872060313629884416 7999078248530240024612309066317824 -6135974660065771243982247927218176 830964653627621302081585074405376 8114459608798984107139117915045888 -795370222322190653557446410667819008 7885901513145726846248808542633984 3339975576395216051258311533658112 -238173075245599780911590546855690240 1071103482378871087544947749945344 3856097087147551864733435005239296 -540491252355006258407867629478871040 2501608863502102670679195422556160 7202256991968171915392799232491520 -694198324661649944837247273239838720 6725753380878390650874775063232512 1082589003212830005271805032398848 -814099762343349442817654023002259456 2558199432487366694236832860733440 2074023759834298303604246775332864 -829093618093109826576249917999677440 9829586845203564121057986621734912 766154596302819390228809818046464 -81505855275023859541213112260624384 2219740808291561241889081703530496 8013169939262120583570468265525248 -319554084240964825512100597248032768 9768688544870977621531022275379200 8754588789240362105557437030334464 -799017821166466529613912751917236224 5854207178960355566430728033927168 184093230418082261782044629532672 -218191633059399473962992975097102336 3520748376371628918159955403472896 3826817381602196645567449570213888 -314102699060202128863253456599646208 1688067116413448872503361455259648 9361667088264373186430036789428224 -172801849512534472082736168371748864 6569583763731851252115750262931456 9458775498863301534707505432625152 -369705455485742710802212771237724160 8008731015200805262126886946865152 7907876958399260542259630920695808 -280682731731049741150353444126588928 8121324404875327294050182707019776 3285971955243798889664091535704064 -648024555834654133857025006201995264 8423191737904242376626181567938560 3184766292085178412569322307190784 -113964822408276925495690334444716032 789777756009371023771564779765760 8836593093102896515668400224075776 -394582380221463884709192999196688384 4171309174946562941351010355904512 7878110298397941475926154416226304 -752475803017702920771852686485094400 3105326347601260882919001566478336 3255463176282261052477375321735168 -206511047263410804974933588777631744 1864949915813376648696457158721536 2278190161460684209548588694372352 -359565642048783652933485288262467584 2857132959257664542597474959753216 4446179707873248281440979032997888 -951760769939077456561515449053872128 3634549994760814993941794071248896 5042295929029320690088542140891136 -796459043209486655609154034408095744 6632332494432747886195150633828352 2386730976583112619503183233810432 -664653361310566942865119227076935680 7820119623799346851130199897014272 7982903480863553337160456929804288 -840496550998187815586121733153751040 5566097049300482265081476196335616 9829394076509366504246507636523008 -806992897469243227144319608712855552 3410752069041139932507378133499904 9685376572367188062674186504503296 -838794163112425230032971142633881600 8370596950759899939692063739609088 6973143573184418852324888809570304 -694105574389850259370664518324584448 7999131420096104757974058458415104 9036061349079975509455358390173696 -950352465176072774264008105776906240 8874354551143520736707767925997568 725025894459772652041468949561344 -112963927461953795398156764045115392 301338293225824863734569285713920 9817684886151983244768170125295616 -224693931526872148665218300765011968 2834998676341256741395884488523776 7446992705910146683656952520638464 -821169628073375326625083894278389760 4441225013126119653911245937967104 1666746953038541057203652798709760 -120167579312641708505791660807946240 3024662688651339100326826478665728 5911308046118023717467490183282688 -206431819646693860562846503881670656 9857963291557237686170450598559744 5238511335694731959015023612788736 -420481128273345377329528438884663296 8357834527027808821275278444593152 8975102881936035270317634742124544 -150236203006203899480884084402552832 3873110676642247556840886919757824 2643026812308824413075868674424832 -718443516064396601639376538629570560 7617614630921245811826033759879168 9780309819062136103965215537758208 -25875682881423503759682697242345472 5419012618195307485441785589661696 8598212303846048559608776919875584 -71126829291532113811398992471261184 6084708729844792897183475476463616 3016098561572509144496573113171968 -236511739158872540926392163733864448 712128199407076031347519811223552 1395263756406995912801500044197888 -699688280692860443098766477388414976 8048035834069333443014417740464128 5645893711890536886825521040588800 -223508964977472417813068781816119296 5734167045906915480586931878756352 4067081875298626238198654647140352 -566764364213912484337589560205639680 461326937249203695045202017255424 2303396937498045347086347064573952 -402049922156155521980300234701406208 7359299662826367112745690385612800 4815591651658403314608534183739392 -55643716999147764732810260832583680 5641728366933345215977150096605184 5396998464746241824568383316688896 -572189286363761060957212189736828928 1955785243675351253796667760050176 3982272664480118255996474056769536 -316704706727096337723408252844113920 7661085365771497076108356841635840 6140124491482418450668377266454528 -383908178637426965991914595105636352 4462951076554350961560818271911936 6063958253221340973687839744065536 -686507467203285680831101322622140416 1647293149430738155578307679092736 2532814406381544423970961870553088 -30853353369505812182698840689737728 7103059723359683519697950378819584 4073240365494288312285713972330496 -711421391692959493430451564701548544 7705048856071145065122971416264704 4471974381106568410568565505130496 -640352371539453588449744830578294784 3928270051895858470781475239231488 1384447084369848494815364058710016 -570176111401865010974417391485714432 8420636162174775929244906436952064 5911169307052692005912303034695680 -169608742428742527463242818230681600 9637658021279221618476377675137024 8538536744749035422969786368262144 -325202128072918198204770496207126528 5956417915927506960404580476649472 4061208957638410512828013542899712 -108816608957411527725219865736249344 4997508399594784604441138157322240 9045427064976980651596274443747328 -221316512688179609891818324185055232 555693943414546424323295982649344 5531070609861630533704439287513088 -709192279931941995343270234833289216 6803385298060710785525348529340416 5872503475399029198743935744212992 -142660835293119715227782688639287296 4507494667445085581040933423546368 8910765375608886116252680022130688 -741987321268773058265648162452537344 1708572206935103329336540136472576 362989118649240567698601076064256 -216424517074407942924184869605998592 2016070106381147817957032898592768 6004005957441025801463917394788352 -781530417027855499648715389990338560 332101548895461192149789109649408 8323081880005677891826024829681664 -651150714577833847823485389728907264 2747311240856987243671944580562944 7767647411486065755563715857481728 -646679043241439417745958786002059264 4684809817595166592302215428308992 9402067855188086053259855098019840 -759069529237003057613765031831273472 2842259584911228963047508124106752 4085416890694272064047285247410176 -295599736831618685483331581837836288 4966699300741411184987304712208384 1960165253485190009419753842540544 -841912974261268901006916138467065856 6301079241708029053015431030243328 7767687383002913393507145902718976 -766932090846773501309020489922904064 5212134127268044497673077057912832 4858622252967483658589282628534272 -134424397384927927474063064480874496 6880447147808558025822708915240960 786795202293782941140038210027520 -62829507687589354350758509531889664 4431295190449465394209599994724352 2772469619440279383253983277613056 -615906066737515956264701030148603904 8870708266485010374831606817882112 6436394822256356377020731448360960 -923402264033410870568942528366641152 7615857859404771133854983221411840 5059249382392780676977686292201472 -841689084738367538802392187835252736 1234303809945014453549169947705344 6412766206902664111519232501481472 -90413303556876862842029502548148224 5102790278821854448214353226235904 4889038238849214145465407208685568 -422587080802180590463044736547553280 8226900581979177486199147166957568 9696311735972169228108694342860800 -79752866464686578497825015873929216 6110565863300813355198550930096128 3062421021241114189900190740119552 -140199642513601044430841545670787072 6049941550383073113602925520748544 5254642889778086127913608442544128 -914117258370883560504617473666973696 890459633908094033437305436372992 7847677171999097587433508943429632 -273905562193244706999051802575372288 8847516812778208820486197087305728 4458297909764964685648084959494144 -288465918962923602484229325394542592 4140179665312835598066968625676288 2271582935258971562193203864010752 -575593153053326083918119808616366080 7413783014457608671634068112146432 2257697199456455939490298386710528 -914815745897966582441694253545422848 256406226784938780300462000177152 2886497208473264045016223640977408 -740037101188020186001983201028866048 8262117272626841712184012860030976 3515417761372965216181905740791808 -815267647526137535005081200324771840 1613980654712870157148744270741504 8298494938188360696183098888421376 -340838690311571691421070958174142464 8262745207356492285974310870319104 9591973061274139190593103394242560 -868204271164863389265789006332821504 3697560361733305538303495535329280 3791897526235376848803096619384832 -808002887312852326142347892150501376 852151401550645969930316641468416 9391577132461542799664232808841216 -879863460402464632448146902674833408 4547702370927101831491891025149952 9212346557368797079650340213620736 -734792559128837379295774010368851968 5856561974473949350613784771690496 2309576527149382274424590169014272 -544427308260194822635840540992602112 6040499032165288298524110753890304 8024901616721159070513557997092864 -230042264649541635951944597734686720 3145813834834941475864934101286912 6721672301710208198674050296315904 -733308247312968853225392575317278720 5450453051902013830269396481736704 3301260733217197107043201976369152 -775440181716515832131248148069744640 3014555189983168414740080846962688 8773964686867464595616982177415168 -906182551441904354767118788108222464 1826465385953150921245905444143104 4930877004408555871085507964305408 -930214394649995136534248504055300096 2798966567494049505411817747251200 7807069173010855488214546759286784 -860278333260852252490520808222883840 9506631098914097129298189812236288 6424964932165831602015177986277376 -845593342008211696413971690683367424 802730831551971606792748696338432 2351233235654068839297860597972992 -451290741703737394723023484643966976 6756988228129100496495924467466240 1852172225903356746622037548597248 -116492018261412603596598419317063680 9007282046688932364522876863250432 9059392522791565446864582622576640 -808099997866939845896368075564908544 8615656025853631842350738563923968 714969967847099240480093186818048 -48759757275646125196608303087484928 8221459324220543107415034608746496 9326480956152056013499767109713920 -941087986865405255419187857815764992 5828730263935896138590000691281920 2057167546630627769683712455737344 -556183489660911516461976961876492288 548163775443357325436149695512576 9797408400375156027483033257902080 -708710539824894107007192426967203840 7507600518404562751196862135402496 5633850405696100327956045147144192 -672340776458498564846432818122719232 9102257263564577362848940810043392 6422915740164179387840250800766976 -327062110570546150060806229008056320 5032188504087020306674335476613120 555877842524071713963571163430912 -244192974030978410873809987675619328 7199111021476035124712388218060800 8165249988338824943695278091796480 -313336262099905676461949026910076928 336491329398732199802172283551744 2421151744319929318706249224683520 -213652622024442010313381882036748288 6617642426648429329273053541040128 1876270713503718485167928189648896 -770173052160111378400017355305385984 2435966981198981682663650834251776 9996568021033989545384244424998912 -72613343408734888429049710987182080 3489708348681962770797770471112704 4521659612922322857008433964515328 -557734155118106657595552891454619648 1193768585269732328273495608786944 9007894527951558803562373991890944 -939736258886398282840811412968701952 6011096650435299001565101825196032 3443841498992645609844985403801600 -469373127997893722309454025610756096 2697177661427227602041022938349568 1381476579340990572884132175544320 -168605888092916727463560678712803328 8777581968007031012172444467200000 1176071920047571907654548876951552 -898476958614498710614213941503459328 838232925916448805303189715812352 4365314336918581208661999533162496 -395533043360843510329961213862084608 156111645446375505731633337597952 6484567563393315121814422293577728 -709637484028640089245460639810322432 6320362436847460735742197377269760 2297543865129430125927695109849088 -557541180309176215907955414883368960 9564103698654088747754658363080704 3598143077031018627131306519035904 -196012176932625863601163108752556032 5449347649423771449294485008154624 3638254960283538414395219467304960 -572726582232280332355111592176648192 8939682121459633260552254113447936 2554473995393105047367414737534976 -767910943924896390819639818905976832 465795590858778262802577934516224 6272022496523049547758668137627648 -579870414959992629849833935646752768 8536611099360659609399088652484608 5029958111645503749206982420070400 -7580900094429757460757821754703872 2137986403627651498277138228838400 1815579774216938982781733526568960 -946545937084861761883244190683365376 6522014453088573100889162846830592 6156706287437641103127638855122944 -135484885102440347759951660632244224 1221631647993489157966129986011136 4384201304396959326635639659560960 -561035497743486883745109152460963840 1835855512441577647487492416339968 2844074289739724111791178848927744 -342927751175351469652066310132072448 5445558594639693644383360854786048 9863779187775625456194439778140160 -171333189657559159297289412180705280 3367673490798366951554157230686208 7873846663272246730277290988535808 -701400740948187023419412994697723904 5805424692015371484360193731461120 5428708276074004960610902924591104 -240794361670296884191333850418249728 8934284025081340402573051277869056 4422226207031517843428779017371648 -858090789947812202592949027274227712 5510940745690526833232456286470144 9237375543851414148308985930842112 -664638284728906488256885723332870144 7738360308489325511405775125217280 4061648411092451502703030329933824 -592475113298753496183170542375796736 2300007195832529535528599820435456 5208748610056684339668822389686272 -42555749161893281181687089100488704 8935451223113205321379139788210176 9149718580966965918437727505743872 -348767763058942280550995633639522304 5469839558366873379685053379903488 804794655742587227469114832322560 -178264297725304070899002212354097152 5651603515230727820478277767659520 439569911631516583257347041787904 -65263084832529474896497809014390784 8111672884659813794654190324154368 7950778384128666540519457288093696 -369672313325433453153707276822904832 5226946298608267679901717280849920 7207889418910640198646901225029632 -751940244021975411997869418704011264 7742438741190840753195581607772160 679187871761743016952366446411776 -348312957846174352197692659626672128 7868767551639185623680162719596544 3579026585228591225734019543990272 -663835973933054296816005901166051328 9706080036130138932822207872630784 4485398977556785791150107773632512 -376969621609614684688549373269770240 9033005684862374946049074223120384 9852610103521396430290248005582848 -130387901630852899284999155239354368 2733932832936798190928755840516096 7637317299137012185719138003451904 -487023843745788552426979271209123840 4778338688124459069729865816080384 395618397896928077977616040067072 -546787194134434617964626347215028224 2026057013464059818274650587136000 115731760009124881286516610957312 -877167212177626433607445510933708800 6692707933585287654937003674304512 9823635995383158498382218161815552 -333991397874621648896239106600730624 242468482988498031737039874949120 6141938929191121069322783130910720 -819546512894841585056526079126142976 5528988154550147622643961652314112 6154301929293837575071027049791488 -965426575694963721942685196451053568 3822468664066040549069655199711232 8038249751696259610419005380100096 -983622435299546684797511385357484032 3312386316849620972742243824697344 9901848380025737678219658481631232 -655641858963211309958962061477150720 3843307282533956128319423935152128 1664951442646418109359827737116672 -384936938564983477558875491865198592 6086488293971859148555741435002880 6511888605837379938493004557320192 -512001707183965778794620523894538240 2949007766287065604167794975309824 4008600554425301438763196397649920 -2805711370571455619665029387780096 4461367005814648964697365009137664 6077764352947311479645000140062720 -918997553312985959434643911735246848 5045609703465967477047485288939520 7693560434016364243163268775936000 -939374356226624774608067463873560576 7265213837371894434780420411228160 8050532472576231648098245201100800 -418746377108099850946858822274121728 323123220150751877723635146817536 3222073236097409706331011907846144 -46746627244002832709823266713239552 2277964735817913218262568928280576 6146005558802821970150763769364480 -33794054814399109638122293730213888 6304078278980677086510032590209024 1107688865093930840000395577655296 -880482141868654600018998198431383552 5576577830910763003438404087054336 1603846637882811683151608190861312 -876997020392425166611963840854753280 5694786160060145884458275517235200 8315994054499700599530601437986816 -115891584100340892930010546660442112 3675805743090194171995858000674816 2182139411397771764142867461701632 -340305172446089076698282892407603200 3462623437415388559871563429576704 7996985238188193703570154710892544 -584382652576695512298768495890399232 1496507008683178647294839672012800 70078872114231216621100355026944 -792217857564902348722056632238866432 4379587314025850166732242223628288 7378278021924720701459552184303616 -77243277516999353759114794144628736 2315117996962085738862045676175360 2741551979292576055632127898681344 -892798886910215064324896200314585088 8323635021839838916903624293482496 4985038901355556761135354080133120 -489812481404818315052930630164676608 626719094908872272504177268097024 2705832886826749283400648822358016 -898919390855581139644070770075762688 3333792491371447453970244793532416 4415494725053481176433223561904128 -252140077391707415280241428314193920 8452889662361858226149686421487616 2169205114271793407963585010728960 -480600303791674475195400375609851904 254792644466192399789510021349376 6035290795551346956935863579181056 -48915592164527312081442476858015744 4027204350237982581080234683006976 2230408675822446273184104030666752 -641297751674806253794215026946473984 1166473103175177269897609525329920 1095421806492959033741185346699264 -807578143252764734955056721037361152 2969777511072761760118072248631296 1881057991094182148713333240365056 -508913037083345359662161396966096896 982219191436149110472852377698304 1807532586052474932100178160648192 -732776164373219797480564097810432000 7275717620404738807982526306451456 6476341428206992902481794136276992 -761479068474010450379362605367033856 7001370059168915123835842615836672 981056845742578345552892481503232 -770608887622412813404479756682919936 1557789966818285092272808891777024 8871540347821685211175311835660288 -868059280931289565915514319266643968 1980987264071380360212976993566720 1406723795117942193669067358863360 -484968251379831402516551003644362752 2457204897367406251205422118600704 5961224599818729909972642272641024 -263299988777260970082734014541594624 1576494799015510639825836327305216 837767253548645125280091068170240 -395246898856891238617887656992833536 4644353625687582529238918496256000 6590599832513044955001382236061696 -819221450502871002684948600275861504 5503669561419437485335539443826688 9559967037893054612085602275819520 -949607862137434836612684291078356992 4783643754983266046476397571997696 1223928826465437460718803897810944 -3375598250363355278374033030119424 5504259104223932092411811450585088 345889926318348024365450994384896 -432777114396180781699913063967227904 3682310706370990787559285940289536 4321425625700573280615915046567936 -927155690466211278963765984916144128 2213788292943942774468013098795008 9674981015962499674656873795026944 -66720349188096954513990196180025344 9816999610657717729029083925315584 8599391249712317186263466765189120 -413372963584782629711229458749325312 2729208558965863834564410378027008 7315268434788737666313500772794368 -169001887230148985897931913987883008 8145284313071750237881202028576768 4183574242592708327669601002323968 -563052064870483625934230510807023616 7106515999353887082942297626640384 5682797511378711857680282512523264 -140760033478129556463691166457528320 6284139978490279833639246823948288 5271338935980719768771346986696704 -813640175130259310426523180782845952 2872506311581423348239543274831872 5614693960847290145821413315969024 -415130276637050096226860986508771328 6591169296638670938936415717687296 8382280950689355547005961038200832 -792507838336986185729326889343909888 9128111386737176678175094020767744 6735126799735717163944109613776896 -942052776874503069855863714579742720 5893658168078128353789930578640896 8949186011502265290295119146123264 -646822784880956270509340878809595904 4611771265655848757048904802893824 7031199435751289702776991484215296 -177594289359052515402798336082706432 3719558174420440230191873994522624 1011513409502415810396089837682688 -279837164379756228613749650841665536 9676739210461680348475704947507200 7884553509170872433124511175409664 -512498287250989319285757220304715776 2799210217395177407683403425251328 3639337203282020266012063064653824 -270371592920341864808140220361867264 7711285410460686654411494733643776 5599419108952221730780332637028352 -716809462839910772151379576620056576 225251669518413595392362669932544 1862345626359467222823541525184512 -484173894382826736715374772602535936 4755941349006164080234032921575424 6384531439224290428000196660035584 -811198167412962988292451476197867520 598783431347400035180560471031808 9272976709669112285275707475492864 -464227539641464388355512788798406656 9582293220679222088295800113201152 3217254996317488869553037494976512 -581441781520430598210089467672264704 3497939612483611412880378789101568 3549150175867034905421886250811392 -921714427495407635617924886598516736 5440488942086306755202277881937920 7964264538244613250114316882935808 -772106755983586746073091472883712000 4706119573235265645847661179305984 7701301277221520436394857510993920 -545745772622976674456174839413604352 9762720873856243277997859974152192 8861395805036978421732496975593472 -639910854510219043137824140120031232 8781003266013611600951918213464064 2982361627876785378596470608887808 -406595864587430013831137085756538880 3392838944457844988150927979446272 5635794910935994307880742020972544 -90957776028356781811331754557964288 5736641881899915784364184517476352 4003592717344212010829137487855616 -976017661403621148361762554685423616 6280129252846630897178325358215168 4248195485505259281344395732844544 -830947579496125548922872544599474176 3969438060586673470588865373798400 4174248633298654312125795521265664 -228122324708040854079895958399746048 8961039166237267509806610761383936 9831471241939927712320987986919424 -605276262037227362224348356241522688 4881220358487797788313899333844992 6548646558899721802906088574550016 -665491656357860358578302800487251968 4277662276971221099291484817981440 7195699656876695881402880496762880 -206792139094874142671937643403542528 1057537707604430247653084372140032 8181329691037235266601733387714560 -134374688661749695181711487103139840 2176926766092990694591919669903360 188328399316833578313151684804608 -178858274808496025150511950654865408 3538085548039706983292257787969536 6678512048889683729292381598515200 -379705182610561464755083378044174336 6842004147533991150199305297461248 5294806530771001076816751110389760 -334304359347077263767899129130254336 3342957399424879228042348626706432 4077456571739731309953078458843136 -50836587483972630675308690406375424 1489014107454350011698061135314944 1305601763759370025636579294314496 -369164894428053596331742796531630080 8387484376406557683124048387637248 6682915925894116531874448751460352 -953822187263267038381285294743748608 5802137187091281642394323691503616 7059707865416898951335808340066304 -668330289812021037820590002536448000 7733093791612870819425406941134848 4562196232952609552685354710990848 -759355942567922805169739876974723072 8642433076981853870066436535222272 4977147138364647060139313811423232 -743867058527581223820660185394839552 9621455677732906586406001030725632 7222680622828876127908061243244544 -672286684602840210599717494360899584 908338030757295030801446524157952 1809019111123449688906677633417216 -409670747650947590549852418098593792 1505355526255049118039906604548096 7697264727160979479419616998981632 -66875523587123755339499007677300736 7786153004669965918839978298703872 8671445659928359683133063022247936 -191460186416535559715590110619631616 8187971873703692736919314943180800 3714400330872006217197368987615232 -848719453061131464243589860632297472 9642928558454468930959917243695104 4524478478240942882230943984123904 -431761566736366586909483962946551808 1421361907111330009185925170462720 9683964172470211769227482046136320 -980592731065547543574003244662259712 2068958612668710238731594304061440 9675499979564217852058087622443008 -558103665614225126002128072076165120 1629524333123142044808297016459264 2043778314955881278165009295212544 -849037686497583550834275165956734976 9920947734363462089993254634258432 1279447001372147276750044132278272 -127045839063965739604003833759399936 3119750550003219118229406686904320 3581160977860540885684779726405632 -929529951642015901564775778238857216 4691260398191778987318172140437504 9243076827609835037596553215737856 -771604204357410360810164966708477952 9350053185501097640518016319881216 1153129613330593835955437598408704 -498884072311989180221670445052592128 649098080787533523011540936032256 2812689126012108245284509813047296 -94878676531409422274466605046956032 5579532885525008931993922069069824 1199758000490542519200861621583872 -41001549688560917977045685957033984 5364081179965030131622950186516480 6288710225695077560900727108272128 -684236448092066440300205767357628416 3613802936731508549853466054361088 4375498944864683167479639645880320 -375059524316011624746911404491014144 5613446343849962477291475753238528 4157321398848957735960673609842688 -740081781773841468951294352751067136 6361495137466423239966725536481280 3207626279474003137005837403291648 -188863931932094343399716454448234496 808591170942481572023771013840896 2784259224106512328837262324269056 -724742413415785801223587243489230848 3737743514881182211229313415512064 736665679947759534191606134472704 -256507601881826539939596035749314560 3661429813817639945278078110924800 8378938415278265322555563264966656 -442378001367703069708132940456656896 135159588851868558463876171038720 8937296313001799642215775356321792 -133635056715118245885577013325987840 2898879069875715700857256196177920 7453827348709455012856719791357952 -647596955883396778943993911944675328 5436003735850413268645938613714944 9142648373358084755952346536607744 -551759975881125024348197474873114624 1719326038066528515969652405305344 634897313073520795795258490224640 -695154967945140752531461857597194240 3208599537530702528028676055891968 3750006349027998363935031070556160 -710621577940544757558826224815439872 621236109514044470933223582466048 5234806598902660135107426254848000 -797386176954529432055338645789343744 2119270030803794534997156113154048 342962680970992938865371937505280 -884866439327920900163911209726246912 8050010882426521760162712419041280 8705146258670597270056046667235328 -631404541463769337908038616045584384 7037467147328414497762392110268416 4088559996750528547061536024166400 -277245619365308763178718362966425600 7867652243381408943174154385883136 6107267008091602760508117425848320 -911840604002987796678676556845940736 8369313764831740078431222787735552 8813380501551280039219498347134976 -147000137639212939500047656101609472 9686102006667399737984006985089024 5844964671883371522321306175406080 -107405009559961877316757166156152832 4731156649466050270650434089648128 3125814214722692041303721777299456 -867532779572746058721806004535689216 7025451133027541171548626660360192 8011133988751042574957650353586176 -761992612126545793464469160800026624 3421396797010943393085445734662144 1968900699799639148967595369037824 -604297719956316834883276898454994944 9615361572697929046272267318722560 3504628884788856415318466780725248 -703257596577542254372258139925905408 4226454177421978782691746618802176 6048010590538485880629219066642432 -751104107725767538213277417043132416 4638265928007295189080994876489728 2832512944472026736610637481246720 -952671307531299592380706266070122496 1700189579700249491754625729036288 4977462624685034711966101610168320 -429328611441175027916330989537722368 5085833809070146730043103657328640 2071417901550138299865898550296576 -756769945549394486835791318556344320 5345337945081206659300796842115072 6401095153716284863121567361531904 -669898495004091718735824486362251264 3386340099889067890971368495251456 3218422779187735841571220414791680 -627905814211711119004430826760830976 6298777243182104111861019820687360 9396623760621275530444689949851648 -615716968537345857375289666634252288 8284929350703018666148915897696256 342136549527704821175444784021504 -765990954447936002849038998620340224 6850965490766366844172752641851392 3212681589929313564440272161472512 -242374352339722685271820313403850752 8370778525777960173317593474531328 7502874239664950181304719416229888 -838555071107000028052071282863243264 6754656332684497610732656029335552 8755109814470367169539731642908672 -430963794114196892663006414751399936 4900315006334773060564583077380096 1428083871701876601806151481294848 -712003006844496178661370861130350592 2055087607356320202847499336024064 3611360498276310260230217709649920 -552738631442864646453851547469086720 7937387898289843105888174132428800 2785236877040200230696376225234944 -84004450046216737357914277125554176 9689716801001690419816986061045760 5548361510116569509475322110672896 -903166799251172607238824732015984640 1396457581663347137898115508469760 3052095079966007765629316599119872 -856568636931798923511003288745017344 5691066766503820793517039679438848 1279246617257348799502794455252992 -660874311447845532881342234938572800 2208479931815654731216515766419456 8874508415195850866443349536014336 -344754317775559824350500658438209536 8297350182764183482705142601482240 8795684823373399419937848322686976 -30713508123997754379960019838828544 3465855264049664163258858444161024 8392657370965492202768730360381440 -77298943229160640639402940838182912 1747787990559435872794412578766848 8075912902702116821695615945670656 -768118897014699865086093200648568832 4632486821151282920368436741668864 7851250657769358114834182676938752 -372428006950409532362583868857909248 9959897365566961958417928638431232 7254179679091976215589138754174976 -72406942095373840073597560765284352 7423629578308208437441211612004352 3510832421465485721533293856292864 -213574307934633178827151881713745920 6697437049133077521781703590281216 8138681547763874080844398433665024 -648154417961231603360320745287712768 4051060673884357386618410811523072 2547038514759587379794018077507584 -883812808631197763895434378477568000 2378798680208063750907066337722368 137185664263528194253423151939584 -591146621191724465815674191148482560 4292173215101198047166745462964224 7749817005384409044644036824006656 -747350891839256625518563004382183424 7221893663147252350838938600996864 488380244628332528489253086167040 -136703165108460774414487505415962624 5163308363775294941245817959219200 6296585156730223500513301271412736 -920586837776085001581062210034073600 4416797328043841128850316557549568 4484065450766112481347643755200512 -505836702534048675597018110206410752 8890712545541629285404024573526016 9861946760644046993997240731697152 -604349734801631963584167651911401472 4647040206841941859315263043796992 9390135133445797973168882913902592 -967534771315374618590967705899106304 6443678983950636083001065864167424 4868819950451790093510077621207040 -734514375788946873380963726204600320 406488890750967826566606481260544 1212684854066967261892560166060032 -702518351383654731722516659229949952 9342803834424022498937868927369216 9282607144242805319081079116660736 -394711770019480098865373272285904896 4690628460029597422143958184624128 1941543495877333151969763898949632 -279993239420461519578338944759103488 4217471059303408198125327493365760 7423161956427132997663086016987136 -195665256693736682805671787820482560 1078892099810571706709656092016640 5692934516969315340476297120841728 -540595385545920252328628665691668480 8524989461352744888843882217865216 936066313354281024112804335976448 -489303780633031055139828120753799168 8605815944531807256587724388302848 1783223585931952670634722677751808 -649735330582264777155429182161813504 1881894048235683524575470404239360 659802588780842088026461853188096 -61147511753056220510290927236939776 5509849768193473981370268274130944 4615046444011975967782748452552704 -360135275281649820388170553188417536 7019079674186564621206860790235136 9071086304175888634964225428553728 -133116538905633100061332040281227264 2458544067094317849902805902426112 7593878240295877624402728349335552 -702399523148745284995208143542681600 3162904571996709951207469622493184 7145125844156388317142044318367744 -117311359813348957809665198115520512 3023801531674045750586933480783872 448939121296752256931484080799744 -120321149334822849343148730081083392 4255503026252712383260355907813376 7140312416721420210808505388498944 -793475631608305081478202126162198528 1272641814896476481108238059700224 4079662238923650919184651090132992 -633598498914312154132665932036702208 7463386679154011531124813959528448 9956338990969847479149719390781440 -467452507171417892234563780970807296 2799184574162558473124710046498816 9853344161809362451304982310289408 -483881367031845948720762294523396096 9628894323654628420423865914621952 519461167914693951962241698889728 -363385294071912068144228489723117568 5965641890184782723913124725915648 7976218881316528451399247435137024 -425268162584852985724189764176838656 816826699191627435216753114742784 5382511294061481921323763842940928 -753928525059576543772941818703904768 1461018768275359277120324617895936 1305195036323159648789734738624512 -332633885422687433729064907848024064 5016257154538394901269392482369536 8971209519625011643872805478465536 -194751870575559281672717761173782528 7639106633957509824429572598267904 8023688828811499094207635736494080 -2574800895783841697478709230960640 6396227128680329850978145321091072 658431967118853328096401693868032 -491230515029955544890009588473004032 3884548923600735300383593952444416 4525192071062197553653244888088576 -676784721744428839536192740485234688 643025359194288814389995312775168 9309868927089100459641981250830336 -247133975128117857415075554603827200 3503485217762534621906958423162880 8906548074860761686386436734976000 -492103291622511589957973281960099840 96796933816893716060616920137728 8975273866586802725332385611644928 -953936739251442971035491613185933312 1028550324243091537295108632215552 77062760014842766901242287357952 -273562813000282904163754984253423616 8155146186146034225660204941312000 9083805727637246692003325549740032 -444211275772449878449762219059052544 736001421026059839562894591131648 5218225312611736285174196753924096 -384090758879291373991839425319927808 5289233252915490426825917083942912 688232722469502751200940891570176 -7596292888381974086906063527870464 6676705099224502678607743865061376 4557731926673643544022170912948224 -87921830333169948240239301937332224 6068179009348554353025520853057536 6689044149249517834638454501146624 -103851906140300149748047602721488896 787284078635314384427448579129344 6881173977463772109805954665545728 -286593754575170304487188487833911296 9263828031866799437334215292616704 9066867258069854469586959854469120 -555888626437582608947440009256894464 908774079431040173128512129990656 5109214253716857823751331305750528 -866217187966115266580543109360254976 7077025015265717642840908031328256 3406787389132391783158639778332672 -643766850097716590638362414043627520 4471121158872661899060262933102592 2341464679137743662633787534082048 -846608480674961780803362141040017408 6846521854109473488770066525716480 5454035089538359899907017911828480 -932194044068717599146535143021215744 9680956635534470344165794980560896 5901097943839258682792767194660864 -57684645306647410894022337525448704 3305905784078922882307966891982848 9550306038679194854161479087685632 -605496301171440247775258766202634240 3880649063342882625142132549091328 18649744851619443652231583236096 -236890618289387336189302021182980096 1543038100427930414992567023173632 1981215606353025827447652250288128 -228424116262743290944268855228235776 8523217024504857838077715108855808 1283812742809777855186387905544192 -406972435910867920532499829071282176 8634079060217288130182426472218624 2588702038929691075434869436710912 -362426761634434689385145205866364928 7733219238588837673453195465064448 9526944123799774711532271337209856 -335683924402306073112771642957758464 4057638000114978218607594522542080 4343224296071345143337772216483840 -436098884852889206108523359954272256 5197927058053541342350023583596544 603535609677987732157896482357248 -266201432196584443228198907253096448 4722721453974179474816078343831552 8439384238635452606204405021147136 -379798928599624034080612923671052288 1792670256482222894647183134425088 7040658669309201953634686232166400 -988877967234952931098863101701783552 1520390436934021334395559677526016 7201356528143110448148045044383744 -837348422612200216116732093695787008 1206149048264765975301502093230080 3135210782298340007979785815851008 -707311679756753192754936512312770560 8864531780761643562765561922322432 1052864793824605359615357317283840 -516677320050385796648680666114818048 2674728837793157722509912966168576 4552532515150409169196328683569152 -596994174350959298092967581622206464 9222667951814546416547489319485440 5050219905321347754368626359009280 -520844422151510874871584282980122624 7053722381506945327832057186877440 5466393419935269006814222617673728 -278011250759511248288017134494154752 2300115268904115733701746531237888 3813998757706339885320443116126208 -852656648989690509704650321467277312 7173006108757492167277905375657984 6861856547388281491765834763206656 -635902231872723758784867328919076864 6815632809169992652054286009630720 4645926975474512772265770397728768 -989239626677958817953718043154579456 2323641262176749369369935235514368 3854475594660708038148730883407872 -372836378289195647526627075921281024 3117734265203668873656020489994240 2850768359127856526112248993677312 -175063111086478033117586898701778944 4552010946523577432763472677961728 5750920016854415674602583249387520 -356234986326270682466416664365760512 7623981265051634245414223649701888 5988872339125589461233749272297472 -493376620096151756563450029823492096 7964694990080287827350962877497344 9934768007368879428501110322626560 -630526672018355064663277299715538944 1383551095252473293863735716216832 1208536539116074643963288737546240 -53827080917466593624285801774841856 2161571700992021179278122452779008 4508754531179679566497927537885184 -834437763609806572001754083296804864 9108713355063736699481223740784640 2355958444466290846329640576876544 -922119744816768781759678917214470144 1827156362691473465142956775178240 8593191125525010806088030354407424 -189431511774941104888813198348648448 7577191366134440371162381752991744 8005841400412567382441347078160384 -200995351561442311519398944711901184 684487851446777942904134527090688 6596892209435745883794192778395648 -938388685233013804086852402028740608 3833322106995102934616779316527104 6873797532353983856041060703666176 -906531370189870270990350279214366720 4254055052768289104081583633072128 388081240785077426125771473158144 -535212556307818585310941966420148224 7682754621070501614969116294119424 4242560198783525483425297929863168 -877361691377674945856740492859932672 2254441372145681993351905400586240 7978653845542055813718400714145792 -192610055861070792841970950871187456 5289161012842117674788980097286144 3915780192595904732144486750093312 -508947779175552727570096769657208832 7348538157966523046989702438584320 5485556976801192494532747665080320 -262159792224575342813919508149829632 3812216387451214947848823802691584 3171816914466169736807017695150080 -334821304214867752730828748808519680 6490675282892861259138796303155200 6976445351137329070405280220577792 -694326053647341948238892605722591232 1346035952050108466252204862341120 1336312534055099148516107281760256 -657006303276658300762320488257028096 8199951947547951850826417030823936 7705337452703864350115489552269312 -502115993013384203961866603898863616 4819183198973213100705985654161408 3883996887030693630334707070664704 -779493350454010529389764555994824704 1619717895794170058396368025681920 6717225274086872374577659505541120 -198469203111164512475818839108485120 3382594663946637105799819354439680 588562373280385493875789135872000 -402122363292535342391767791319384064 633751962049522021008305178017792 3974025482041114775234405069750272 -817294686660671517023590864486662144 7356130050817875730277039358345216 7868415443326840304145878050930688 -128924160877352704882198931344195584 8337740818230121441911618385477632 3717338046918602876139980363661312 -93880926088472043860949644521504768 5730194019891642861991626037788672 2343266500187597425877316651712512 -815308352592538893874315758986592256 8493983812998470174990307919134720 1750429273531085562411337358770176 -488453822029494314273328427322834944 1678652154156611137558948832346112 5222850243353043244682960858775552 -320724616598249515908744708442030080 4639992997603213919682230008938496 6758067727963955464895367592542208 -407395557188864929325994066927681536 8478402517842930713375572519550976 2382619688882489864624707167322112 -4464914011476973479966360343674880 2497378041933959769127092410646528 4843547676280600438457038861762560 -613118852194057842826591234812805120 6763267156353453198222722171142144 4233715864224255285472190556798976 -367624893744895692789051561829466112 2779811381309940779817623942594560 3015173243508574405416293450645504 -362503692789041092058285468331016192 7034983119375535388962120552939520 7596111210134803000805863632928768 -492007266196579627122971160415830016 9794511816364933535861275197702144 3372957479724374632478796618399744 -399250136514756334987313566430789632 8479990743967531125238886907772928 7001261705163682007912868007116800 -345968067887920527994868412329230336 4404595399103327961905713723211776 1944723283837567540659129751175168 -384673168556891869998884971180195840 4989315610601404419977878786015232 8985370776335894157282628035674112 -682550283871613356948049092377837568 8906539883759018511513158319865856 1166255424986696036367756708282368 -244853542452249467968231302651445248 7483186354142301833130664024604672 8308536585667385701884889346867200 -978073021897776839249461369215385600 3543078083606141429473717906309120 4604932310862660372692919102996480 -73801667157945218871665743886286848 3672710273121965764310018943877120 8681591360180178554735204958732288 -41358700708095549195627725609500672 8840283051858461071632847033335808 5157544593770668752297217671299072 -286183172959963338451618623490359296 6745676445870976289789249597734912 3002510890639623736557868161171456 -178413306723610648235959574285254656 917694298336068922387733717975040 5609640509313115367509756898967552 -976119998526257271316510331965014016 3629509638869669550944218798620672 9500411246050828299897607286685696 -225036040930036288764218366851284992 4882782335018517331521492247117824 6382170942466637309816165577523200 -596611951515735657608764583242104832 3455546317444129152660238583726080 6692785397522735283399136565526528 -114355891404003761457583039017123840 9782692692410630100916577463435264 4103114165330105983677594752516096 -529230238175640301848524903235452928 4356898543070858364613649925931008 442481659017878931006094651162624 -722766328533543486339443789758726144 5281080980439984322078965080522752 4415744891371900678864517355012096 -724721650357049409536188996277764096 4476761578866334606887496110309376 1423284287462126959826823976845312 -450949583697455623249821660516188160 5972349979295794201385876750073856 6898693144826272437434321968562176 -331554426879640945448257714370117632 9565067869156902858466239333793792 7850005028674443571948273111400448 -540083039732238213481253792638828544 9203007413440873087063873487372288 189119486755652075121389051314176 -475699838195308927401364458416635904 1314703698873387932846689712340992 5492205525380788819289872420306944 -312197931851014111230148017618157568 9868273225207051921645614862958592 5798494176783575117764271919857664 -617018320098365187307901713683316736 4516404842432062383127657581641728 2141101379646015329622845474996224 -543863907438361986090963452389490688 5311407736079396309595261031677952 3344670126922718614593174027370496 -664249740841888412609601156285464576 8616585783288523190864665775177728 4324288143593367619041777080598528 -967780181002714492789862142740267008 891249441159334039095135587794944 7774768916321624439378574275772416 -463940740937804645126640521623633920 3333856021521540651561105728995328 115931095719410424758523549188096 -615526159684455788219558446009155584 1054680402814272142246644082016256 9682527461731185994092051989266432 -495764445022216763939917378168553472 4230433877911738166577393536335872 2708330054916623520269364610727936 -747953526616722961514293696638484480 4290749139491486272878653493739520 1516873332511797805398475860344832 -281772370909409969843418515072090112 617448821610754625093392530407424 9988547892980027583510869849407488 -224564383927646213830842421855911936 6402577587815009415088195766321152 8559612284992385887095909553012736 -67715189759457560948445778339168256 1977690117435135742739059518210048 8890130942137137462482012026699776 -48945388935187806142623187124355072 6611265814616832028078277629313024 6812908285842753613979320127062016 -415326635635994535562807280811376640 7594921603227781705360686025015296 589129826532509702108791779098624 -465384376057479049125444904296644608 7098012562564560309914508715884544 5448893032593591107695636937441280 -593052010555596986277041844097384448 4772194584520845014751340826460160 3465253730866260728818722481897472 -51818109816652689681320802655404032 5696337116389970737294779619475456 4650073092262804372289766373195776 -421774478650193204431386679688822784 89749391441525158769621980938240 2951376877875235491009974333603840 -829202317827913480702094439629193216 7602251572769068989635343840968704 5596913524082366593249854286200832 -179680935225073197180074500500226048 1460411163926316276038403329359872 8168470073243521698444898035826688 -745706763790135830599074657419132928 2690752536774137349338712279875584 2711345394562059859823296251953152 -595902167865100251124418863486205952 2768504922665266722482227966377984 7642430386295363749612844857950208 -661288669381149384799944382414323712 1648895097478305048498954485891072 3570073000211943500576949081735168 -14653346598511170251902797857423360 1737498166268602242015039192039424 7317622083596657867627816518942720 -23400081070377054072345169634525184 3131582152477853760943580598239232 8063726531634614973145299892043776 -981721050900369084327396593538957312 6920546194828816379328563385466880 9376268942082558707669282448211968 -371790104236963007922162136516657152 8832339024515270700768136544649216 5214670144744383082494245656854528 -754757211015713430477035080714813440 7473042572723638848618918634848256 1746741106231597745186472611282944 -876797633901063076835258877081550848 4211781495751690311815767716265984 7158559598833951444675305469378560 -456616807681488278025981585247961088 5190130776050660429915521642659840 3654705345555555412355360843890688 -327918269845029295881345895720026112 4631133894164675183754242242379776 592335260777776535826224711204864 -80691260453183444890137346260860928 319123453347765598074165539110912 7283084801432981759099444435877888 -267610687136727323220431319303454720 5484550783914688123194764983009280 8392348147756452532295801971408896 -178837867372288590492066564108451840 541182905535194347617140424572928 6038639870350821034483674205126656 -78420927442018232747022586241613824 2468008352489271774119845649448960 4215215210918368921883576079745024 -576651892087884942470438687726370816 7249511215444546868621209560416256 5196644301958981087006483363659776 -346507909260269286414496453309235200 9136259470095255921536903290028032 7852143463128064580365633758167040 -980402325220510703786180279174955008 5271332870919906502492368683401216 5512534662297744621041645114097664 -125654087978600252366241344761364480 4766087965628805168836771881943040 5326834588449046141630237462495232 -689277448564133315959423566037909504 5581116623128069266364299877548032 7794122317533846727657056775438336 -243916256747036488894631645315858432 6504742331250256207844993413414912 9134015223697081247503248116416512 -411883029237207839695154451184615424 4666024653972200390785055579963392 5852008365830993733279797003419648 -59629525177763212531580240310304768 7529659768933389754927835330379776 7949233901170376408376555444633600 -573585810864489898422311923147079680 7401889197357186925697488696377344 4326635721235648541944683652186112 -297427911643747998412406286337441792 5079826996973865792051212231639040 6427131485895905321658615320281088 -643258521203567645815960248483053568 4752523150270941984259730625789952 619910763063674972022323439206400 -764606134453951648653686563997220864 6312358360912755602497391158099968 9241510476120804789272293597511680 -274766034364691820596443124923891712 3314800958403566832038143334547456 5948485952689097448458529821163520 -95610036781962066763634709635268608 4808092963249995612646765957742592 6767800428510975518946278498107392 -39543834169684307893973530810777600 7742209467120320641359687270268928 6733817703455141802810044298821632 -250515470242089413938199981943947264 1123787053065665312425191153860608 7747029304962395124269389396836352 -124950855711297270412717562307543040 9861128657588695840043684576886784 2561059678491688847893752019156992 -58569290337044906643753558270279680 8754042765528140974656913957453824 9408545465215082790921917213704192 -189063386364160620415853426578030592 3021388643187034831796050755321856 8984384969085407127075118129348608 -133350124925124631712510756134060032 6577257942178828115704461377142784 4568798860121971809075647708397568 -583953080815901658248630884668276736 2622479619572779634316428470910976 3848868721962925374562339186016256 -63190156843162963767811004579184640 8233787547438585224530630023315456 7544723311605525338180308007124992 -571620670623282195234416829363388416 5840643100393240705760221760323584 4622252556930425415628103264239616 -218965923832815964034639164445032448 2397096368949329091670493095788544 4669105362770187771333017954418688 -960506761105278977977596091515797504 4370157334240415644469017232539648 1145793558809815047336628708179968 -78637266944056978167013521957584896 8951768148439370929175743699091456 6653725209494790523370314196320256 -546284168799693101721321025122074624 7615307333357161014178107413757952 4509217119538189063470991533932544 -929754281898068300126106582576529408 6736267425798499780274244189945856 8601248638541174586383039503269888 -22858321403703144956007946999824384 5096912941709361648511930026950656 2011367146782689270724026188169216 -617035388579747157068987268883021824 7046252449416367423282083765682176 5461005413573198558000590807367680 -375537965648603342347357501610000384 7564673892565717930824184237129728 1515119775434108744318549514780672 -570451178608577057343100793187729408 3469659411536422006174857287434240 6622224747115246068960711510327296 -422476303752097889419536235830968320 5976617378361929266121489696948224 1550661102920482317009431998496768 -109723371306604629008617529954795520 8771640164298957018428657582997504 9522388174199088229723828484308992 -999242825863421178788389276061007872 9137421399769076135938166685171712 4887251934230817761006512613883904 -737513391965697609818823803352907776 8801834316607308145005444372365312 9120005998140895303176011332452352 -500752457476961761292991215012151296 8080163092181878363957315032317952 694186023758452866472645434015744 -71237676432454833916026278180290560 4326296264918877699455487903268864 4550445755554073137355884026920960 -830835078908093208709407400345468928 9559482037606974867716105291431936 7627711562193214242357448353513472 -233291496744150208098347026126733312 6473000665781514847795269387419648 5266572736323054824587082000760832 -546995547167147822747598170309525504 7417726275587893539977605664473088 6086094468784755302645499827322880 -974320146309077020391869274099023872 6352559268648033392591504828006400 406762649435161911491365076729856 -97199338575238004724390368391462912 2848262195524443618119850194370560 3258854251942549544991920096280576 -706394585100923904785026098021793792 547653411254104065553214390403072 4381603488314586639068959346786304 -654306188408022340993234367498158080 8239384930376582553837552527212544 9904162734351528607102767355396096 -331287056759907085865703670550626304 8758470786004201390098506410098688 5389777642860542347333509406785536 -186013766037632446102777695779684352 7820101087927229311457996824379392 1463557498235209016609451364319232 -954207538956639397760966964629471232 8800889329779429465285379890348032 4225015544797386708473089944977408 -794586576104543769626799508729888768 5444980041355979728510992244539392 3369656470846531118480459961466880 -103060965233656149146666716608069632 1905803878032774503947857064624128 5983667957044223828788559843688448 -651979835137234404246724403682869248 7322276306499581183431477989212160 2001425642288474670970066469650432 -699214942178089535544919387151532032 4476789708904227546786415792619520 7621066019240427149591842931081216 -156691086452601409064339060924874752 3296796055412447925882753598357504 7116239160990541793418964128235520 -810859021091651114959268586014638080 7508104496762000792072526455898112 6351201995935018307357314897674240 -459032109456038938379196211788775424 4250436428476713582444062871388160 8128687987729352602047987989872640 -269861252501482837228373739850170368 8983350210222583044866979554918400 7259659505303425430502490859634688 -636324727931092544537780654507556864 8792083623584997223732891787198464 182071574458701663893717277212672 -350412500377517835608133113305104384 3146005357074091966243846016204800 6898557706135247804516531267698688 -554762851031522796102256537133645824 1174197931046017366376186569031680 3570661503769162696881548369592320 -759573214756663000193975754594189312 3774223019634844209696238777401344 7937303525042432256378945862107136 -945394981597362806746052261253742592 8013472170278085118551730635669504 6474746011838783792973437229596672 -205826182377138048955202457804210176 2024883173242025361432236164907008 8344002589071093924755869026746368 -893245722678898415803213571124363264 2186220220393746086114726567215104 856707163862234938917771789991936 -14409639749064124277902044395732992 257595864372076452813428274233344 6420000201209677096998070413950976 -465464827428184973613115360986267648 9864205233972874176225729046380544 9573542767597612354876723089637376 -613674133745682855015335972241932288 202193821605005130924380865429504 706422757211344729800192496238592 -438233112431089688672768470137438208 5050004413085815226248811100766208 3461428853845408265292350840897536 -753463999424958583659979736893882368 7723736371223595459340502898311168 4547860241464373364604218650918912 -447419207331239981117270032725835776 3499496868709727717134872407441408 9589502790580958525552651766071296 -781672185927444505979026615444701184 4372223614556187380208346209452032 3773121229144671265427617822539776 -900852620970491154975837187221749760 6549261786378388995920330066231296 3061885000005389337180255928975360 -824721276172182768508713368438177792 3883084463506838487814778948419584 1335260623913722300709733274746880 -796676104691677945378995870755717120 5897942150450698354104325352980480 7661789749766611889849135691464704 -677858388914529149783743199480643584 954968703619567548287803019231232 3076150257286071259977558559555584 -78715118060394746339115637523087360 70981497316950754124556664832000 6822501740712557024706355687063552 -803776796960109319098060998942130176 1296280799595834413092741952045056 1764432014954294539759495826898944 -299083899545751399426543573618655232 3854677345054595414800476724527104 2468798896531262553642408072970240 -329410270772789240392902651452325888 6918245002162900459398832429465600 9880956688293117960658443078467584 -25892813318299116380149210471727104 2894118457898880718297695680200704 1922791788958121604637137303502848 -24251097811866046033700989702242304 1228048314425041688093264307027968 4328099814460375822095893896626176 -225008284519488972373482390109028352 1546108834377123951612791873339392 8194457498304776085882451143950336 -178219310892153769210588351600525312 2033579665764024122305643588616192 2829493341983291504116767228166144 -616597340851148762520245684035125248 1987225376529734892767475272777728 3185758807542683536756216415911936 -209571742271848307904284955328380928 2267460717949590659921451820253184 635924646857255689376334119698432 -299295792579812472117724326007930880 7956646415718058656812371638484992 7127699657162793861451572884537344 -486951526520395934723925298957516800 1394402845026619247491204343922688 1246535479195225077867777313734656 -28036643697509241081074090650894336 6091802204391835066967001808240640 3927417990181479065111348241235968 -486022552386694882759043322147241984 2272566363162588523765078773727232 9091084885040864388136021943910400 -604484993413065857063225498294812672 9973711636475995527685749692432384 6754211798161509285158613755625472 -883757829019090782104088132672552960 3128503798451449038457250980560896 9892270621167462945297934120386560 -680661645091891434846783848017035264 1237895222173720606877752814993408 1603820374475080173830213650612224 -4745017635568476474596054295117824 7827345675653947793383452886171648 9017885151428528288920896553353216 -318685449858933100384739135217205248 6996474680879163116094816268582912 7098754781274154353713831414333440 -353588501109953665447064193118240768 8371719338750475580831711641993216 3819282926212419729956887634903040 -594153267284880401672148022445735936 7515529876617861009954279826391040 3451776225313360387188797378396160 -913790577031897758545335933512712192 3350113659622236454830187986550784 228751341728438197646120554856448 -280096395299357321461497459923484672 5316544885430466223529999992881152 331198245209810430692578820096000 -737813261551258864336017330691637248 3222606092044929816145726191697920 9148896425328504340266232498356224 -562830081526809835450096916512112640 1142920788186993241529792839286784 5223781238085745871964946502254592 -538951846371133896668038572026101760 9262246229963157772094994076663808 9669701615307402732485235548618752 -151630344714456147862294639960653824 638328051689306781617020257435648 6341131432476766263947771529658368 -970983073689053384757265825641005056 6796911103575448538817011755515904 5750257762701393905271292811018240 -315121995582713916469921477262573568 4579362374027740845074267481571328 6613260255460931296426565201559552 -710855345381570050829365480282652672 6421945862312483966220530738003968 6358740402554329451995912160149504 -853888092498125215843963659853234176 2362593697904108442802022816677888 3002070772516502649783530215702528 -883661002167075925474548191443550208 7745506853248656219361147323678720 6334682517407365560755610355499008 -78303904020604643649341845021917184 8638911169371918646436196603920384 3116351217224342353663039027281920 -641592564752803432851175064603721728 8745051608260195791754666203676672 441473475176548788245838725906432 -3126963714482421274505959778025472 226458794573156864594207299338240 4639793394773132873745204145815552 -440615748048708299976400942829404160 8275475928899977792146607657975808 3812774845189799764382203055702016 -381657086963702957799234331970895872 3271767747412762747710606711717888 9863654839958955403827446785507328 -585823709682321860726301863329136640 5436444655332915404452584960819200 7012729609548757600228018145460224 -298404888292854649994484999702708224 5414492653545201585155121489117184 480711246999675679472265082175488 -27368476185111680868409939276595200 7794655804417919064446562912436224 8698580382474470734355252499185664 -902935205131402516953521772780584960 9725832002908732356031680090210304 5475823424295994398415963669135360 -558667700240644744250171517388718080 5218668017289503767931082474782720 8125307921508520300613945941557248 -855759804342565899735472945839996928 7376266703026689803808110276509696 3541002837008733802646624888946688 -856124519648196304893862588855615488 8896820653433222530187927815716864 8921287961633643441520015367471104 -734164569603740810589531480046698496 5431656947908850405607622267895808 8613179888150173779027694345781248 -248017967338811582037202714723614720 2161076665945127641243645890265088 9316935292375061396013680036937728 -656391470049021365405021504435912704 7976911686295868033565873265442816 4852750076754631626587093237497856 -590070448537904479366861921991000064 670338359436565522263375247048704 5673931589222346443683012200628224 -820646590495452467661501285472927744 3789394019860067921129945278971904 9359980168317162461892018085822464 -766923237786251407280359950572847104 2255672599230498395371667787350016 9152015903682256872157916327575552 -122161662458283501032113384915468288 2136179934394867046543365916065792 9381768704177744393311684233527296 -49865659529553756689666231599366144 5012940709059789458100262686162944 5528676003940794112240663232774144 -112228463640982526347916948233256960 8124486109768136001922350956150784 6721505495571417079484153258311680 -786608030035935321472207665967923200 7800195438280576538625559450615808 7741534287747100664614841449709568 -483844412208146021407541858005942272 7325371269855925235809381152456704 3441162502578768097005643478597632 -464481379901160639386808330982785024 2623208863911595461407420576694272 7286612448676114944431086320484352 -508004637076956138216250445098123264 7077944791746990864676923757297664 6845927775237062022992912478896128 -218250312159004220961192431167995904 2655956402944051900349981806034944 5930222985577101339591673940803584 -387873906792416477852701013993062400 8064630480070668169897410872475648 2286748926536921929542621737254912 -314999417410038933345414543050801152 5138360893813233619424234772103168 2688644600943842579547577137496064 -403483945119729824331648197350916096 1470292176181564713907788913311744 9271794240802708689727214801911808 -678856137672526720511692959045910528 5542796045732195732031832565219328 3586636485973287492073996351963136 -427447407051350851353561589776121856 9786490194654803382117401897205760 3973066853120966216992354159558656 -921971600419782649141610455821713408 1848547158920360215227723790942208 9729072986166153360587625754263552 -322656854830971973294169059410051072 2154441191485683941449806261518336 2397144075710814751335604499251200 -940072262854460051844223732818116608 3724186520703479951272106530963456 4549204782351115352645340609118208 -405334216085402382716866707511574528 717409996275309138844878844723200 7964922792017519051740539873394688 -822250691763399016030724598230155264 7946105241618188182438457208995840 6217502799176883887063337770418176 -183620049447957693097435340770115584 2293493863318131106354363992375296 650787343296676178383023336587264 -718803934118300200936660980344029184 7677299914613522467883504717791232 5061407844770486494693928200044544 -158697397493689036671078302891376640 8431304617596456884509367064330240 1360377211896388205816661430763520 -215903508816568215795632027851554816 9042557921760281286557103453896704 15993666977198262899515450195968 -529156867417502641364666660757176320 1642061257486591581536147426246656 2867910677502361293678800690741248 -261401302163107369927395246751088640 3060989098427737096679472681189376 7433338058605317858624218966523904 -854972339331640831928497410360213504 6998316559381385402567295382847488 2981354136332238847852297148432384 -285487802946062577906955781157158912 1726913324176505026837150691229696 2109031043225921073467884056870912 -956543845291210615457592252605399040 2227771186023137665077214678351872 323477649502152129510211342827520 -58818388311592518810734956524863488 2832835094505463230897932575178752 8683454635937987700092465009655808 -45750758284901179845152782669578240 3132156261733999733145651053068288 9687350360455476883341984137216000 -498319646022682568747854594048000000 9511778236927812104287091666452480 4897048722138610055146775823515648 -723885305344168296448097710505984000 2083297884612576852652022875291648 8824018347838819830699559789527040 -961686173978485018576205958130696192 8489840436321393316808625435443200 872955364406138423268375500161024 -398210912394489647233728224321077248 61766480184072070670713008160768 2379157809945389003581569057685504 -471544728443012474898525842611109888 6062115587173584820084211472924672 9995853167943834801020694171746304 -180496342352766975886121391888531456 1326187383757302157351780708515840 1516359910492740857011149817774080 -319826977211613651377707265086717952 6741493988024373075116456195129344 2158478125281656059961906972065792 -637063721628189708518887091901300736 2056300106623307479948846897823744 5650261315301716696911610894090240 -250341954072232158634562467905142784 435524568764587399983191545610240 1100960114069871626030764217335808 -224187886979735940632829229375946752 1621798501341756626763089778311168 5446916231169467273581573171052544 -828682547894232173344840809636167680 6164659755390037951898547933675520 8875413042114834800760454740180992 -795792037495584501787982573208600576 4149133908893736831530177071677440 4238188812961443955810887188611072 -42653413625025110685257332248543232 3314012630994640774705436946333696 2996182625463301899049761054392320 -297274585913402238066456986493386752 4422374411281344596385671602503680 3111319710999194170305632456933376 -9833958972483494586664496046014464 7377608186083630409187850710941696 8916463555439336602037672946434048 -245390504168427973009911927875305472 8710386479855003225461005146390528 9186289382091854933969658796048384 -998055943939963453448656254255759360 5310474030467383449889137777180672 4294908499218562721135272883388416 -808852758510955205210354247245234176 9172895601983552162215666974195712 9103201142075922240322196515848192 -825971244557921526101199260504555520 8735288544175952987731210321002496 6544508089816344975922552710889472 -219019886867343993653329270100983808 7546720329847032272542873199575040 3408637882465134297053780988919808 -445595432676831864585057026286026752 4230371753878089335715057775935488 4252013879997334835444381139337216 -896394945692808996922274545164877824 2945701109972356982003671307911168 4174995933077194538702639099543552 -543585549432280537331602377142173696 5279251236560013658053052907651072 7723282423719110007642140413263872 -494015378825960130166687070842519552 9387555160938760870582986081304576 1136704929599015088277787269660672 -832194344487928544562245216942161920 2444928481040339016793455482372096 1321913164369138915842312376418304 -116002236019692220334032289825554432 774060957750163907225819352662016 1972433847183882794237610449436672 -191473338878919756471464490329702400 7866813591976233948722841887178752 7866199050689522121806836813266944 -482161431901316359754099813557207040 5064328736570344597247067967979520 246947825266526945933016894013440 -890389956637726757899060940376113152 5994171342527782941023618654535680 1819625817089676550720401757437952 -631760659650615677338961106073288704 374772236130084332870120788459520 924465661238816107888154081492992 -788888090064033679447601105579540480 202811268769151313202589491789824 4551989071888008998606674818236416 -610952741784699297664308782164869120 6172708007377066841538411320311808 921407568523761287211005507534848 -293154939013721489996843323406417920 3056443593346801405537542081609728 5783535237990082395552945094524928 -574127841043071132573291800862654464 986485399302640908475283198181376 9722762903806633629764303846375424 -96925769774433627499619992966529024 5946772918234108767457717866463232 255049386957937063654525635657728 -939538875029851932680534058342547456 7229871555504922289067320118607872 7174586344883297990100166346014720 -429776196950345890609179443574341632 9337563880359410803004432218849280 1383212771827525681807984045326336 -243613256313450701957112099634151424 8275450632617848854903653585125376 7364745028423516784253443271294976 -535336514045816603238333121084522496 7219174546316573647197565341401088 7143587380160747042122946368765952 -399506566438402920464784266591469568 5544950200772633981750011257421824 8709964655059498017608121473564672 -437115649061737255223355969219067904 7172035801072195986819379974111232 8941946867057046577642119689666560 -790458368126436401730727878976339968 7179897241967440047986665192423424 658094121073888156003795401179136 -161954756978268428868680793962053632 4040835824249200812549979599011840 5256327313762786422986139901100032 -683839429617247552213627986929254400 2253162373886735756732307676856320 2343606182182607723537253458247680 -970646750443756442506583304096972800 5419216688024047575065309738958848 3718488159688759261835249456250880 -953624861832075227756307185578016768 2758525150570558839534327473111040 8689618934836107280277566952308736 -218001978495113688831666472074870784 9743023266790746434084172673843200 2276981307914296544921070170275840 -281379728362116262427465354573774848 1701161001806904045440510019502080 8588063846616748128898295321853952 -350728105349654538159059964165881856 223616565619415979123084634357760 5334571240932577433536624444047360 -911023545722996420142104110432256000 227436340048444576743619865608192 7972308699259390781992804594745344 -486813797695468537285722129272143872 2726558897603373889598783706103808 4146955000967995740558853396234240 -656947691347626356664195898824196096 8479158846867539786843637627748352 6058121822466979427371014982467584 -957937494275780568190117588089438208 6007812128166926715113798683852800 6916685200823691410541067141906432 -433457402773601406325223767742087168 2834779928225385233236045082918912 6255634569869532532902947509501952 -273120989418783297379963291467513856 6173855528935963767632225120550912 8177350894708646075451821751533568 -985821343286715207479879964037218304 1989720044000484771860667844001792 5316666663558756697180471379886080 -10345989344005689558138405758435328 3558008740409371482327170655715328 5429014619585099004856217746014208 -585380217618347465149742075707654144 6510071185472958611402527187402752 8912544004894664716957511464255488 -652560425126233209707520641330053120 2579464378086176181885461852061696 2491904165615897272867518169481216 -26140580797787967459581757656924160 6307547777994989421649651619069952 8390429274987736681796203177836544 -875629072278247347823131405580238848 2596560670644459409211319740530688 2161170251071092507422116257202176 -578581470870753255102034052407885824 6063989146341539178984520745484288 4394179906814901373777094423609344 -309046272208896648962908038109331456 474827273801836687734967438934016 2972796576269495179372307373096960 -398272869103298306347129158728941568 7349527078302222092971818377805824 970858733842722714702785751810048 -331956376875968984066624785745969152 5246629491454015799836276418412544 1382382993059438470552288076234752 -130643743450296780331066144302563328 5845872276801462254377079974920192 7421851412588560771342724027645952 -594784090621086052137490184260288512 9907110709232977880867654982434816 3527708331060800612733830670843904 -890923437852979398533445464199528448 6879440477542071502751957006680064 1081009420994666068288655287386112 -618104334325014952106165154514731008 6272699261592783172640082747195392 6238896519753669453399626319134720 -770813620148363260818696440142364672 9363408042497066338607768667160576 8102135447321290567748979204816896 -806024370407609545214082119851048960 5599924739023020246353367126769664 4841759380707379363439781592694784 -630170011267431020559822073590972416 4315636255353095333462173143793664 6512092648038416440942173362323456 -235079763615689945711673649664098304 4263813984438725169582130824478720 7544865797745031128016970808557568 -496475284050796836273289188104732672 8194510361309291755471898052395008 3943677089654024680075409452171264 -799855906117082977964286280971845632 9076325309585361463103802251935744 884794433401417058910393069469696 -832644780673190153902406256763600896 7332315961419582305713342147198976 6713792308076582662872297352724480 -383957471772458232065024981957869568 4534023337606140850545121854226432 916746973602873825411310345519104 -40455862352986869358558794970300416 278581156648711662713885153034240 1819211223979337150656350529781760 -428072800927286130793522271757533184 402816832430345871311563808309248 4992102170422569040233959182565376 -426913489547894696420975965630365696 5076768274926461540140537327124480 2573445807394050730911373792903168 -552294866716847486014273894458851328 8199575913733190286305592105500672 6995278198394704163684063373164544 -128386882034074452586565259451432960 8707447675410551146451945840967680 259184211768927262706552834883584 -524322866488221168651625741192003584 7316781863361233160002199883874304 8700811034326756922760885132328960 -318636521091649276066286114722283520 6866283580820059800027121294770176 3476499011080012681710555602354176 -445237957774855110059569960462581760 5251164407615872813802456113741824 3178261324147768733386986850615296 -899250130064601119957779901650567168 4915398196247973280032659190317056 85428232918730733739514024427520 -226950602021794027929468321671413760 9353114013670752842381878185951232 9557617701079014465927504958849024 -899397496960764516242220065287569408 6897567528583060826968252959686656 4905841935998860448264114684297216 -212805705018296353893981196078022656 946445314080239360762383244984320 6448023850006631494034650986184704 -215507617945086035047416070026559488 6157901948644036012639704074682368 5663298730359201268323810306686976 -882054684797757276115881707777818624 7128568492525117712781368319016960 9384875050103525849207413722316800 -540164988898979463392883657079259136 7485978297488936264264889216794624 2848017156373137013464260904222720 -544853358119949457866345199286878208 6188586102476718481440795799846912 9844623846586738318530718419910656 -219810274940011628086119595363008512 2443899501648070237108192858341376 956075329581768405637278721900544 -737079281116413277949931627946704896 4470439914438629232497191112671232 7818922754527045748729004429410304 -167588307277944333179914118041174016 8315291313060706954058170298793984 3527845410703747221058405456150528 -101121388761687960705551038297407488 4305276099060605473754544777199616 8286280690388910679461216464666624 -38219968411903269889774928688840704 1167406320645771352077822454661120 2030505880089853197543835023966208 -504869537707560837507422301987012608 2506322043546272322730289258299392 4294192284505931132179817452011520 -508110653596905231723034782667374592 7750989422623735776256413721952256 6737077354618374000159795795984384 -359795237978685820808871571087163392 4979757793731693322839139582738432 2999285250338412518055302001590272 -820386132451982890047500144934387712 6867359246041018017924619824005120 3136353965839854213986846379081728 -708148836465615676666182705428299776 6592398571157803872171628404146176 7096932806371350734255634511822848 -89637092499259182576211881766158336 6346547731590536728488358893846528 969304460272325407114739790643200 -911525377968768123152075501986643968 2009298037367766595947639118757888 3789440820856182465815500864618496 -23284336763363209032996126239752192 6591658905270330083812581086068736 9843490438395269139941486313340928 -185286363061514517213603206810042368 7195800467583000255007376285892608 8675736490250661447395668526104576 -423037321926130345784093747175227392 655577855244602543963220744339456 8757636796595809165954990930395136 -384812702805187487233413607568965632 8638717392110561923863239528022016 6296571201419990341678600235778048 -833460774075470251516038583504863232 3258844897268867699366131430064128 4466843060376634961372982311649280 -627023656869660683876781696252641280 5491550155962439401667161300664320 8147439604056427029942049448132608 -26884637132336591985326860204507136 4829247884659748093620845740556288 8752476248272889203286522273464320 -708450509324409780326616765573365760 733216657161597480280570818723840 8991437904143482964204632355635200 -56575345367623870586117591731798016 8994378423265727320793014712926208 3542475297862863127086327092215808 -157736780680654007741170030053687296 7305973155299376801435454053285888 5385192284482599724861069243449344 -189101675662671092663642034370772992 9144053521651219741733619220086784 4734968521436008788919032813191168 -225965709138878026781370733851312128 6548417918818164906498568463843328 1597589837599969881465952445399040 -706582497577338873320520981606825984 8235212565598611007401655613259776 9483999031682342606481915283243008 -684878513571417679197052261487345664 4742644323968642540030758752354304 6428812990189321017020037369692160 -938261720557979046743359172093411328 378898723991789044845429789818880 2241741499228427746800421920833536 -813818023212197495261333943809474560 2359600687303131300891081979199488 1761047859365409208734513274814464 -263888389494326503542015369683140608 712934229200407884644522129358848 4098894405404410559184728202674176 -826846021330221676038808451430744064 1072426713549749897728074245472256 2950262590394268211148048922836992 -21148613683939326477697524850229248 9115070634520444440365129571237888 5970357176351204190608533978349568 -961933762651771346028157848743051264 5482785402224308010802216775450624 1537584942882522887131274888085504 -950601437089497573261818027543887872 7801118895819178165103754056040448 1644578877229326527331623550058496 -849789971587834377460589586280349696 7477370371988389430826264921374720 6849831233669133494274991335669760 -347485414368479802834397943159586816 2424820543707798783451894049144832 7584720560875200669665874587680768 -882670086199671844398702003165855744 3428001975398223253289936665706496 2355573204877802430193509033050112 -801027873400101301125866275263741952 573016091449201906177137241489408 3658341890200751844825052550791168 -710883022506446648690628419869736960 6144379522539034350488926199742464 4841229579537249071372114155536384 -50442118652994432235135902962155520 9714541676214012594551326915952640 7887439726887840102601658587938816 -80937084188406852546772036646600704 6768386271787676287713534132879360 6761709204778141644980217372999680 -89579435497248687369537154724134912 7096545210407080178965930433314816 5409297217826796343921096771239936 -891033200940814265492341228696502272 290564274508920581867973206081536 6067282802261963460745265191845888 -38698432594687099913078643452018688 7572150061588156060370946595225600 4126868901486081624231464323252224 -64510063946505475102356899144663040 2258197585744502349379280731897856 5708309763550939740330998225698816 -193673854163201404334073724666904576 9859349785758413849205847424499712 5056573970339268437209527238000640 -121610109679171508365719801666994176 2766350822880232188348246142222336 8303636797082594773319598756331520 -155918209134730065936989491872923648 538451845871985615432481731772416 64959013784432025680268610240512 -362265015601631324383317067690934272 8736112739919820995138100123402240 537254204472202352924818784911360 -540148096624052090598778714458161152 2168969865732596572826525203693568 3225611793030626115640082743427072 -479985159101629356446618755721592832 43949705413247135299201526661120 4813320854814026218983858762678272 -652658090359496681804865058130362368 8273403668010701591591425429995520 924869530343972189201269270773760 -193387631143710093579789451713839104 2048729798316638736021714391531520 43883283199571393947713220378624 -227095689176151655930274289322819584 4668286446145800661778530138324992 5935065830946566045939737246564352 -766399378082189438484672939057741824 7331125118818950077283174340100096 2497418024212245906361108540686336 -867935961298149735080246042649690112 5827642783259485887578526606950400 6599005287695218869922485753610240 -156674787496955610206112577084194816 6401964334424901824748547689414656 9869517142676588057709545267396608 -138520655056368368692510118125764608 3677255340660273762236892796944384 8001251206562594685160231029178368 -667395392884495436630089550031486976 1220070917917819479379677584293888 7071949145699147181461140058144768 -548232322910133163209457856904429568 9468590833404649291349805496270848 2704429758720344074056666997325824 -932562415151337302850677886723031040 8756280756523989990026942701633536 6595250926912709303806962499059712 -735169802752291369709023292936945664 1818840759374942419936401795579904 6756889956431061702440764869443584 -212524512896169485494847016689205248 7632235135778975132132306778587136 9860599369135277644798640814817280 -145809508537997263008946252228329472 490319702531811510210284130140160 984494799177265267452499548176384 -462214749137500574782192006880821248 2549274195477825294464300185812992 3596241321808326231153533094199296 -294773435818093961430197242381205504 2897073598448650126212118979018752 6510882901092297371099881793388544 -900893782110344706278344908047646720 2499588737983830816392938365386752 1285112185012559595738751467257856 -552759006673789481508546555779481600 173216721653809832669603398942720 6956518029406272856526307159179264 -277213032494047543339073688530059264 5647057956498585877231457015955456 1689854629097752026312138601529344 -820929323353991559338897103378186240 3635147502988812167799098828652544 6439773952031702987847279960915968 -30253640578714445108274821387517952 1922677515739618075070579458703360 859533388243097470321731450175488 -848718863111729265871172845548077056 1743774899382766931902776878301184 8840805690412684523847570386059264 -791153551359047971760048432937435136 3416752019373835583581624247255040 7778043640268860598395848829698048 -361252908262373736731944094890196992 3694597126778755510626037526429696 3077048487611802340687935149441024 -796564850097954676762039387330445312 4069952598107016121545725071851520 3765785582934616092951254025633792 -56355846182157792980625398452715520 8464047941331995823405953569521664 9587005057571378888269945504792576 -17481757247112962196025498369261568 8448607339411674481987408617275392 1731127164888928308304177094721536 -728732217204005967757250466003550208 3406298532709537136784521421651968 6748732027205467244593972338753536 -897715047712786470843032141077413888 6798065586647300836627783125827584 9496133827641933022019141425430528 -690053677866736204705324164261609472 6952474428844840330639364476370944 5173908863489778459533700077977600 -512587045748259870184468488650752000 4268231618702854686541760996311040 8918044508437212943046860355928064 -245229786828301623384090690042462208 8013775825880959453928355673407488 951016288918549420150701797933056 -322162326164091766989356505254330368 3120695854549685015229291504336896 9237225255002212291058573946912768 -282908076063865286791249555372376064 8408282014790465942208156683730944 4984261020070581263791475874856960 -234096924892924956229450609102684160 167842291367163408594676148600832 3574663674494312220348178247974912 -227503342979732675016096054299852800 8198052301499924275559174458310656 4560118929383530408739097639124992 -15885066909000032958037111599005696 9576925208508704543631254134718464 2426121255492706724183321994067968 -551594000842235341711881468983115776 3306521558006831771451618274312192 1175212913686498615271531671977984 -123473966940360327525672417247625216 8939873740395743423737648216276992 354294904120539571381003171659776 -221386665032599503496060360019935232 2170969602562440962219855566602240 9103013810558400110033000174977024 -192925711893347241368315154325831680 8373717063102617992855131009318912 1453440161408546880379836210085888 -170373686342887108551497444591927296 9941612293484542014300864806649856 7396318667321918528385971872858112 -643962457976169643126514275198173184 1139594946593151436664469815558144 7348682995825198200591406409449472 -900018184896845069726757778276483072 1151245604986277208036777389981696 8877531879926187013074272032653312 -725609828793712111066739380406190080 219908029550177746120164337778688 5759043301229024785252311608852480 -29541810277818960246015771421966336 4888335704617995674418384241426432 5789875071420737506580105315483648 -195392443618630660935074743729520640 351082265817810589106687176605696 1167272083915828341068611889135616 -363868553605443214172678112944324608 9970209546529958950475400476622848 3141679249516042561599622650789888 -796429839453172117026197184945586176 1155069854122991315345701068603392 5593413391358622224987320011980800 -64414082840953962936899068370092032 6916811201957924589231507750518784 5823618705614453008544092917858304 -439308830086525020440897454402961408 2232271220894331665615379211747328 9939024060806504498288058108477440 -538226156037611567102590549909045248 1859305037978282762459867395391488 4379738023551415205774693998002176 -826976464051110847510256408154079232 8291891677030035800825183967641600 6266181219535221733185590619275264 -52800072432871219813352621658341376 2935758070380421115460689061740544 2238291090244499564226034201001984 -390898712015125000200474093015793664 7063588825985876695862548891697152 2067704471701052009395994400653312 -553205581125396304265981910646259712 6108810437988763958909911967989760 9800946205099568514750809385205760 -964542764440608085291936400751460352 6846873093597380290040727271899136 1776875713351922384810981525028864 -994282615214671772172718726499532800 6216020188550500465681495821910016 9979737378941268854324061204905984 -73423915020895165385417601560084480 8687029202397078442565592175083520 6601834691178137793703655537377280 -831453003268581055973286457104138240 468544403505187261969305918504960 7781565250078886410465876968996864 -129146397867952409155493239933894656 1182281403565174494111374153613312 3819573301935577196845709666549760 -28112905777302519176548827732639744 2564794698990285089856291453534208 2021186696620955968564181734522880 -560159036843474819992473559782916096 9146164441585447321395853829079040 7890045482370213268479589146951680 -127916998554706077472020843638816768 5763104825196490939807264520798208 766155790554875086567455076646912 -885912196891470920487980099830808576 950579851852757746824859262910464 738278798700375304355387426209792 -787318087423681251933090012899311616 1929431111845313848520099200237568 3654665004117127253540743665418240 -684165194059445404514989156075569152 7183704049734714589057750778511360 9968431799882472391003627539398656 -396468220620562454421712685984907264 8526619141888918019544520864038912 5048608834383164771355738966589440 -734377842812996966655644892062023680 2259800223036439343846636302368768 1421494806794088197863251225083904 -57813152403034309881808849194713088 8553383995430455469010194404474880 3020736650921278971583628155289600 -766802850569944270540289786993704960 6929114782801481096095141076140032 3062112528717999713505127979548672 -892519873164162785074211772619030528 4924043583489006104822800917200896 6983292397282887086070718256906240 -805598077026151245872920160618151936 6193827798846827195049415511375872 9695345875366854862077810987499520 -905522979203091670712185701942689792 7766434201451830801873735058980864 4486914886829728125125097710157824 -57303945107527206248924448473219072 4085967960138710585556979358367744 7398190702153589543327092399144960 -71511432624420450228187381150777344 2640449641273236391734931500302336 500783593878505856810622501519360 -57742554110384307502100401165959168 5490720042609501038169380343513088 994028302152516903255247310290944 -302191589237233739378234862914764800 5046148249896107268651083225890816 3776303766373360278849071928573952 -744626509806217403343836334620934144 7943386003515256630809076487421952 8672885020186465386515250647400448 -521444924397963387509343386196770816 5745747257130958763636160186023936 6559340461107685017594420493549568 -932619466253772450376653072177823744 5384281652414821609311099334688768 530540521575534469349367191961600 -670886241323105996436832475294990336 4718960896097164142221478632357888 4777542823521431435132616086388736 -916274101206640767639028810806984704 6522864907583558977537787369095168 8880703680940038954097671447511040 -243570398786110761818672805464506368 5141990096262451624789929566928896 2171206588750520886722062404550656 -263690397283133410761929319985971200 2732818098755964487883503528050688 3272415011664890163975935519358976 -607772216229006608330499569353752576 4950963459998200444079163408646144 6515848834009532633334441045917696 -218834887327449378958633910361128960 6755454704011474750546731392303104 8977503393256288870685935602237440 -537325469373309853611068291689742336 8235682652762081724556578431959040 8196507437858617429097508610506752 -874156850036927626897507872241876992 6230834396943717359309691555938304 7149138723468669596450116633362432 -121617304382440934152907143570784256 6400665047226901090339097046679552 3133040076235780014711574336897024 -578271183723257304306175296848003072 3755562704335608709564586157670400 9668245226647197745506264337612800 -655581808433629853631070009215156224 5658726914324152674966521279152128 3969155421556366397474495751258112 -600235890314927882105083458809233408 9989424489610493850875138360213504 9493305469511114944681322928406528 -610681792253379844818615567265038336 4848691183835780543072812704727040 9920029994935183732478299026227200 -266778036701200853419581610058055680 9822221423347083275500020754808832 1786559557379369902031448448172032 -663458417627447656932295629992886272 8494487045251931458878613009465344 3322697711871285596373139345899520 -349699550143436198387315302828343296 8681725059618120040735156547354624 7533722668337181665358109575479296 -646969475032155765875383570456903680 2719123113065118492489735169114112 8492193649190886170690952668119040 -577418901667406439175405740109070336 7831259044522164321972526906343424 8120283627049858966404258666119168 -843876748897451218770011444526186496 5912865454296510904102442802085888 1504197274586143725753854349803520 -981087190411719391858215261187342336 6426777500191958919334714817904640 4033223554919072400404201575809024 -809714234839947607766140425282256896 2225647876556514498379496189591552 8263236090070900991535894046441472 -147525533474480255301337776495001600 9303791858165249137481282532409344 1713419981421146506615802990428160 -582600960403876123637684155315126272 3941291964335736592305089346011136 8814930556772345111313097238249472 -393368314811619782441202326962176000 7553238229109465018349690302758912 9667678715945385384128374177267712 -163382367184343545378331392137494528 5667732805134635297832290370977792 4791844257698406101158661525078016 -955020701307817500799239706176913408 653009751844224591287318074097664 3117538756398253632698466495889408 -671370603459646449738049701271306240 7484485426423503917502968908218368 4537631096701602976184842875568128 -440514330887803477957010760667234304 2743545010967817662955298708520960 660168529526970543158509531299840 -89737911430739271846623823989309440 302523127625250012952048009478144 5881214237897434464974520648204288 -622512449325638581756652944015491072 4778283732811543667313657314803712 7621239625782570945678996024590336 -17110571673436964470630143735365632 2652478434946763055114224203202560 7290494132221992101580945699635200 -566613079148616091968805876858355712 366640192681612992348561763991552 9968872648691518095395078809845760 -342001831219335312772592571019952128 1779513709763116501147311377743872 8089489366145011323478937064964096 -215372724616207822201784912146595840 4718245326134935420906488119427072 3289258985840320450654536239939584 -68650160452638756293619379360235520 6320418256328203898646131497762816 1047586467753512764498929707384832 -855024897350905824554433781344239616 8391360713367893590886428742516736 5900401252043027893611325363847168 -294350279269870780394586517664694272 3084031152028454270679207500578816 8142864992654757096854488543657984 -618598366433137739763672574867800064 1798245109272810422866256775348224 5601907719071184413279669857550336 -799155445705395623989607927503650816 1192783560908161922237773142556672 4493879525038559588587942166134784 -760209933896489838720542235741388800 7265073118113174226114447459483648 7330955606301471509714740812185600 -12166636825205100100467761671569408 857014875100630542850729978101760 304635630203579964066892882116608 -626850610878229202586710272055967744 4650325799037703555705424318562304 8454204162086578898038495861800960 -493491309185480603562475012354998272 9912205271280649251458240242253824 1383510756866457276424205518241792 -609385974888241791098168288519127040 7667871084586175399246364609085440 3727260097565675644055814842351616 -446387389390923359232760615991771136 5897144997951067059391470929707008 2068401103585264001761698784477184 -737664943097953874338934664808366080 1292669236566591409615706735509504 4933284891657317497864591952052224 -805210473495985308548578131960659968 6766129533055319188783977413476352 3863653096401897279385135180939264 -17567326615681076623437808038576128 3002251523204089004978294507962368 6543291118894084726824670890819584 -738333354292314738800842035873972224 7532447629016796303912422434930688 8902312463918755713254217612263424 -903436615964076261880752492114870272 9775333117645747695000091036221440 5922760323560830176373969787027456 -717492448842095692389276127686819840 8569433194848925913210764375621632 5504206133761017097803791662579712 -792456616027858759131809859128786944 2869586944117849166106344556593152 7074865891271344446061184248971264 -346642197154767769887178023667499008 7953914462655116790030682990575616 8601465564520853339023478370598912 -710031110643294254071503858601820160 7260869480980198979194371983802368 4148318088488294920484269118717952 -529957863668469156462675900374188032 3731826482528874186562499793387520 5577933267673731810183758896693248 -916765119012512059214040410441646080 8399739080811863270976876884000768 7715166238995974204581146345340928 -416240346101809752097392582532792320 6537712552761853872552412419457024 463293702464301147268733040852992 -399603051467926395806384128956301312 4125204295165278822657318973341696 1189083119243705065602624954302464 -105406440231168865334855608154718208 115350873856070081613887055069184 7436630862567566404162099536199680 -382348384697659436061062445460881408 2157178931728205162826860750438400 5938084785632486269418055600701440 -819004545281626148405754022443614208 9520405949412140126213907442302976 9935852852340060968392252207398912 -725859380996512421725980636838100992 9422890524338531641741473143062528 6045741365576771792475439369289728 -808431100368639582638192106548494336 7507387127634670991715087838871552 8442433804059712033407181579616256 -30687679202606606360622748403761152 1055122412142842934863637864513536 6666410833958512380842030848278528 -25407578140155887047571313818337280 2479688362800048471867380826374144 7886228636789708468912794726563840 -732344750073632002110739007909396480 9505279762280616680900223922339840 7709907107361252513327871715966976 -953151886449724371928384818013798400 7812782309009668998376458188488704 7308822886110488562476528212901888 -377041724758578560405146017814544384 6027738184972472674736376396120064 4624584851528514484602239323209728 -708893739461435709290710540335710208 9101842885371038918665044555202560 4891380781520717329971233433845760 -427671928084026991429683667307331584 9821050726890376562981654690267136 9210278233895206196839777157775360 -726978619124213760555516573528358912 4152098910729073593299829537112064 3481254913513682924607602908200960 -881663050852956121462512124417802240 9951527617454135866256496017801216 1519251101820255096016869078859776 -370141153541955262516064510067867648 9094078979383085327646383952363520 3764960110055582348258593311031296 -483761662080517772710285233589583872 3961688562713643167877654365863936 2826993111407001091585505488797696 -347656721641920046006284002420326400 7698901992437636156739515177762816 7522526025069588229797657947668480 -165834585287164794142558125232750592 9170575225642703117137428743192576 251017385330954836872771074523136 -841168972677258881211406480519987200 1678591259711746939318796248154112 4026294760469892017677024473645056 -552717229364462234623930721674199040 1347196871708558067530347571052544 1619042854559467152832170471456768 -428374339139998807281967189844819968 4399427189261641432609607282327552 1387726009800150072061059512926208 -114926098331162510968520803908321280 5805567213491606642825958678069248 3884147373930431932042257071341568 -686286073343818193710473683702644736 3582851597335546024992567105421312 7757470925572450309526475012833280 -69653181639828666079389370864893952 8085775862570054154375741644472320 377523577023320772583569068392448 -668751383615134390273323703619026944 3845232086725594128497091555622912 1796863340032849121250986002743296 -957743984572922852294267939974021120 1693583589192147489153854946148352 7030416633058764110030045897031680 -885472108032627558101067018130161664 5328786937840194452033978052378624 7481744711234287463301580501024768 -47975392752662235116176716622462976 4837088921448509956451572994015232 7798124953429326378591594137780224 -733065170128097335601335621419794432 4992202209001394568381313237123072 2526425090151377900987849482698752 -688772477944862988095423708148006912 1575444672621185037534673732894720 6025591958570592945274348044812288 -827613646774280751806139028958347264 3214489558923090490794717160144896 8401648580436429536340840305131520 -420578188682101463773876886689546240 4060527955748881812858699736154112 4956353244002496702736328063713280 -670187968947519401812755490071904256 4372973410297238612711429336203264 3288833593550712751771229741907968 -827867728870740969942989113378471936 251903543842878556633800651046912 7451692031997657930911368087601152 -206059157442234828315724102898810880 7737060847816078625416950222684160 8656189736954068978842622165516288 -63140815247739749252574793160458240 1363415614324623384309545698328576 5695797384865014699896746958389248 -446688652646781267026619438880260096 1190049547821137117537773838925824 3255243956891232828256445257482240 -801463083947710850970421237022457856 3142344315901951335005706529013760 2862042486251574819393689752698880 -445203907912588989603123895103127552 7482510896887850250545214955454464 8800701278337420640208904005877760 -401064715516019407396128075842322432 6674533602563999559137057765851136 967173306654450648126551027089408 -65175397198181231527809645543424000 4642534542848362228160484872290304 798107957782336884979089025269760 -438816999509604746503164775314227200 2390238192092065207470682540081152 8486756794018266084197862159155200 -843379392404672258336907443117752320 696978891184935440177402526826496 7002758825258563759870558469095424 -271082209432211011416535522128953344 2924734565432229207144396062982144 4487135547673928355321398184378368 -106883268426615916480260647566704640 37481204463015040919373631979520 3398224132482203573678840085479424 -754301481701202943223465936011919360 6216120164164893038025392386998272 1142851713401825088282888304066560 -291537979110685768355193728738000896 9224333846031955760541000880095232 8856546320529755165801690131595264 -688072376685844058796975383677763584 9163627396418544315041850262028288 413695491810838357780880831807488 -791634153127664780720236270832320512 3982860936254271984997901415743488 4847968541849779219039681727430656 -38237151449182121199077971049054208 7280212766152696769837500953788416 3629734448993942184007949527023616 -200639472756288488914689622307504128 4766791698768692832186911852331008 1809165947645976179212619534565376 -190963192606564380925528864284737536 7651454952720683346727166583767040 2097489564772701777541256311734272 -707351415325963755270725737163784192 4497030025493789531679813563056128 6236049846772360227941438290132992 -353659088057637413237892717991690240 8549936249779461602343127290478592 1183458292459773621259533006405632 -585258849704559781518621435108524032 9682317191755530878918125919666176 9064361000821892877241661240901632 -77260047726138870211866866709692416 1687743609414149461934197155299328 6114110386993682435736297344598016 -371987347317540638059765542160433152 9054066050968145253317770825695232 1774025566521059064444894333370368 -450065318214847122086116343253303296 3872564247671714230597065354772480 9625530217512707491352322158624768 -419012689555077299103235578037010432 9960417936388073088379892638154752 5978300686321069977492465578409984 -487539380838308326917604751211233280 6277209477072332378326741167374336 9955113851916935731655511589781504 -401609101962069303306712192018022400 2648099257176423959376650364256256 6992482408224522110704536449449984 -891923729049862736070805164004474880 7389838553729129243370405756928 6821205265747441564989441573912576 -579177952667533279854519574637576192 5944984808345783562441687386030080 4356224800494198483146771605225472 -499871301372189269835484505871220736 9281514733001605666237515191812096 4182342180415980412619615543230464 -900114381924024771702826056470757376 6827968977892861836074314845126656 6898835059941247967646068032667648 -77440246555530500197761611009622016 7779272857928386011499282594529280 7851630380350473865451933282598912 -621113207254637065841705124735483904 6209974339778660693335113474244608 7522670918183670557748072607121408 -95720632265834852624645291272830976 2745624525065136093419733247852544 1591435232616998668610640887676928 -396144516933598322030476014282342400 720092207127970683308276128415744 5624627426192130147239544406147072 -298762610246674462490930239959465984 2859355039325185653664294442631168 6986664319948357605525445777817600 -291573904166640884285400355707027456 596605281735287221058299502788608 6007425523903551330623308043386880 -30853626336484555214880741391335424 9229876124757081252269352076443648 6349514759717429278827733088993280 -240934723564747003110555846944227328 2640936873610432997664530425184256 1119273551025659668766809351258112 -537865365031001524666205528366514176 6866558848422484513080070427901952 724581963245633830958991639838720 -89492581799201758770976597955575808 784570392876484866945550940897280 7266990864094893146543409198006272 -335664925206564805213683686767067136 2709582447473960449179607550132224 7042845442909072644283968882999296 -923482188485276141619362261037481984 58910868548829217240825836077056 2677904416561300046824982662086656 -781633856913760487004468357084741632 5127060931511187688641650399117312 3583424220644551892621894849921024 -977577502728712729270641214288297984 2754445300991162461107666640961536 2197203514333000548881551549530112 -32953669261660861583893366671671296 8538336471145049997383265385709568 157964049903246576024152478580736 -512605778106909623338455093081014272 1904761104595866692742405922226176 8153167441313464788038733174669312 -293696331087444758416629207589191680 3257964355513690909263249249665024 3086353741949958202415224000086016 -180774287995904809553773856808763392 4618163054877436050633185063600128 8911077457148978929337833170665472 -273479864586139597893806340121296896 4440485984280020645894907523760128 4620074341301466855808951484678144 -51049855478149566748809954257272832 3848000689408197250160632417746944 3662402178474607066395015263551488 -769817581272953870189339774359175168 104672841134880381259149402439680 7570498732094653374223498843521024 -351367054695827243722803280995155968 951408123150826990235511896932352 7002049048580739828822612365017088 -886184345946583374576507755813666816 4634152884187324199400910438268928 326558680675340223302465797226496 -509740788202645167854507751242727424 3084701321006187378365489035083776 3381426991587204482479057811800064 -170083356992969624883799571377946624 1290432908045539782966565410963456 7336483100885265450749767498858496 -996463056910150782787309353048211456 9652972605199046999163721972973568 9638187334307930683059937497579520 -623071426224749806039437136785047552 6263722613793338626156692720582656 4673925192903235896327220976680960 -280342977825222730897647885105496064 7147132316820951793615728862560256 393474317454655918714308268130304 -682092478156631729614191963962081280 7118132645280792970836232389001216 1006978292237610642943249372676096 -443960154463030107714601817827442688 4763424863276993931181383779090432 4662577467136083606556538853916672 -55415319822906955506484245438660608 4563281863865122884542320609329152 844293905780113007962397396172800 -180869494825836687482090974947049472 9855376859492515927095872269058048 2271071986231335960867797997715456 -460366697803339363672764951446945792 8970028688658116152973752998559744 7100906844006195176448257727397888 -805002575766592432244176412863365120 9129406196175078140225203382255616 8078081926371200035256262627164160 -281096764706843655308299582515970048 9427978332081019356275995184201728 6603615721333665191007551055986688 -484245039844761578294691518300028928 3387615977353778924434998750609408 7550289887358846788627950219558912 -553576319980710536787078624151863296 9142173166736526922476466015830016 1200312769462773581982879421825024 -926043846098426010747651362369044480 2785249498355661285035032033886208 5504934057918912613985916213526528 -910918363284024979436025496125571072 9342311002196342754197199183151104 6264525823644757405693778646269952 -158236364009899090713107949256966144 9235778125766939543108671051399168 5468445912311228299626546250907648 -57573984032205679319456165461491712 9900092942504036257666157776994304 8029985216875754489996099811540992 -375523591887301800262681861814222848 3703515537361443009722660096573440 3210856747538215766558571130519552 -950172725485076826339404300572164096 1060794270257741730912310124347392 5864307992392600987436546504261632 -975442256422797776306702440382595072 3540185496923622187721188010098688 9487922475148729981327066726924288 -243333888934745057841393273596280832 5188669306321510413080534158671872 3621995902252547603731938969387008 -442549481317458589773675033639518208 3414435047813281953705772969885696 467091210813301881753869104447488 -649423825810667065347695566894661632 7229551903038195993567828199342080 3059915468655573973780718340276224 -391508617861264079884380508881158144 4804108961527796402277743606104064 4698318514068175703710537932079104 -249765239921861905804225579986190336 4906844581309940134291283084574720 5339473453358212293942445365788672 -265834792771677485069544960850657280 2799249901873552403974950853017600 3289642764056958190404560375250944 -886179420715221037130152711431389184 7413144286653514081774688792477696 8450590628021187712686013831708672 -170215811093892688655986316168658944 4888479303730647177199258729185280 8097604777136466782378216558428160 -589116449363966697243498162881036288 795370258981370900248379476934656 2680012771463758805546593968717824 -488575848587937139053806121287417856 2396864138402581198289735394525184 4143402600839559713974066528387072 -161926853966801253017818796866404352 5044751788555161313760438766272512 7734196992876098311737699070902272 -74535012408200304718646366531747840 5618690416514530271082148087726080 4850762953531222798308048034070528 -338450199375637155163734285207207936 8375880107646409113652695490625536 8948521866143790068126282898472960 -201772149808454438891106880735674368 9447616770140884219971319795548160 8681290863760684103052874183868416 -775617041286145889923410509743259648 7323651525589720420889125976014848 8605015215380834164415424681213952 -466957987859628071653551582004379648 72996864141478516979070897487872 8423451722462475235750360188452864 -205521723557754403694236714223534080 85933184506598529761952799916032 7893096595101845410275497672179712 -580087117754711094804451623352401920 2330496287559660592482079087788032 9525998438570288641449108694892544 -983330574568307437362328523654561792 4437221262809281341518973534994432 1079669892107611295089165848281088 -195314707363125890830934703459008512 4130205628194714342583819479023616 3864321407906706533540657121722368 -189212029309779985206074368610795520 3085086737122333799225705667493888 4577917326339431060042797004357632 -723648278233988515064088692780957696 9429772946020996739917327158476800 85340666755411464078717335109632 -658412675945299883075538375459995648 195805804032881920268963862806528 4282628698029878165470903988649984 -848447789059550672425482049365737472 7898485855627991072819452567355392 8657074560023008942630775843454976 -84395774839004839315308556180258816 825088635091847026353080438358016 8804106844995743182553964408209408 -247199357892249726704585070560149504 8549342554642483027485090352463872 7080465165414791769441138741608448 -986287839350866528966448161272889344 7667708191287777575541066075996160 493589733802148161564002809282560 -406162840086045483599312440243781632 1784175568005318050760787855671296 8401793401428840754980279623352320 -245964229931682405595604684489359360 4251556145425331143834276429037568 1263301278665960203610799982247936 -363189878959958718269667838275878912 3863611008001358462815675179073536 1780546726320444430371395404300288 -21312495152440382773673183953289216 7012030785606770313859093028143104 1587603694935512674532986600816640 -998852398342431887035336819522666496 4050604959499082894984844656246784 4406050088503792810675607787536384 -547638762329896303375494189017989120 160690558080485661619336884781056 5970669655440583417582238818107392 -805363836646692538002752557723680768 2653812631063128948974164593606656 4099570406055691120063747878551552 -168210059786800418002528836759060480 3468939982385006241480158421712896 6001055079734555862950185011249152 -811305440357379187552599149314572288 2792107928518867923349562839793664 2717688224462287202255962560790528 -795385748992092936074656744917172224 1253450055870990385331698747310080 6994507667014734604281185791115264 -438734386017933886076697229469417472 5747652624341720019859471826157568 6303975257746132849926607030190080 -101181513361860897123559905840594944 1634939614512515826540640741621760 5235786470073613681400216727584768 -636617132911349341224551600686628864 6659369952243781209183599584083968 5210793565238542631677354984865792 -992805408546503531671666729666215936 5576294372206595115512176538812416 606070245613172171070709625257984 -467925924666923512478603762485690368 8669292662355032362652706799616000 2996894801406674857374455305338880 -554797632999163489226128031966298112 9347636820112120773674523602976768 7101298030435657593402327851597824 -899876150074972750636626375788724224 7345731128022033437061528820908032 9121740566541772948116096073859072 -668978451836579861950229768069709824 6889071345001776860310468663705600 2715298845457940680896230908231680 -783234831313434277577012934850117632 8629031050516401902011960216518656 4565580285739706604698038838493184 -769207694441931604685802362168672256 6294645846122498158213367511121920 2986438772681696960270672397860864 -632156708628243400137212078499823616 487907894733629725627944267677696 4687609136870308473386471444709376 -881667500690813335775480414826659840 2856341389782250722351169792901120 5990870901622056392353607147585536 -933153992111875311035559243975491584 9292894603000618657199362116943872 6487385811589234137188565828763648 -221039848614513062795559300249944064 1129781618424679645259649876230144 3947487555507539408076235304075264 -987865168580562224194305701458214912 1827343018778478440394126631370752 4200190427040559414223486469537792 -720787643396933098150080326597083136 5177439118810438498193575728119808 4138950894353176608146861762543616 -430806202872211399985672706324430848 3543067573069545541628661183021056 4481676038029235207759621280235520 -441435781990845458769194616019222528 9574282987643353620819927099244544 9916284473057231773790853782306816 -504336225638484227480345528267440128 418601749110556852143577274253312 4519288881905107993340642691383296 -223209658816305194536534371945414656 2920631794260963202334517851324416 3704787723007386562792773084250112 -445361581505188662767832307052052480 1661643344878537481220333659750400 7557842616157561200979605580677120 -427652144487444125539484727622238208 745887081464239830613651825360896 9068675150285348952393778905219072 -50338961089158721209317781435056128 3353956317253991547533885618257920 6633398161833820583687959204593664 -661828171691014218050253865019768832 7470083605268999624578802147917824 5918031461318983351874366272962560 -988756917378656175996963194773962752 3095729460323459622736728315396096 9933574567452161728337056351911936 -810623183235365488854595447522590720 6960444493917521026272471537418240 709896276524451558940427895701504 -814779185959189881128397502083497984 7738564957051621642108962812723200 2288781565912254360227457116667904 -348716887322189652458840139291951104 483214664387048049662701632225280 2674517895439394999599662026981376 -925063166126746452513555451299758080 2042647645271427360326150902513664 2900853183391617520259620965187584 -612600359994772459234638173852139520 8668715633407598331975013115101184 6631339317358577112327031560863744 -465139953967638952409965104405151744 3882306499338753958330091620532224 5098743485344515321630091582111744 -495387639837101584690977834981654528 7354119401245537416683073822523392 8745259353041438850348690664587264 -340150288649154049685782003913326592 7604645939197813585880448862519296 4488255344453243960398838490988544 -655937392801616530393306499809017856 8942224124166085915043669659877376 5501546605008132633929000345927680 -747097601813788952345938531876601856 8957633869751150791847406806761472 7663582128603059694094526441324544 -20088790901228652900729399397056512 5764256572813744441698391433412608 1069837576710541612518779962523648 -575252585301382332189174408354463744 5843676297427865000342866857295872 7574392226439368347946921653960704 -989226397384975648095617180254601216 5607449109053190122260274767462400 2929959204168332398355799397629952 -611256921042021427085238416875454464 7569551255409089700709625684295680 4885020703644976107981968745955328 -12437031372412689303119975069777920 2935219146319673868609652583825408 9609939363528126033365238418505728 -435136533156938338760010741552513024 9028475739258652072006003244138496 1564931257033425195253542860881920 -740092587323847278990900406932996096 9958925034642523283686273094516736 8460269461653148360847916468797440 -172859980832982349756022961310007296 7505025346032826354790539043274752 3250128358352318119066252949323776 -728229317465191425014437781818048512 4147576836904305178145643797938176 9497573579344495091932183746576384 -70163445228088489972628446817288192 9776360627957139728614123299143680 1944565505340644057886257554915328 -621098639651768062029919513445662720 5151617305635920254183214778679296 1233859088132931209227525335023616 -388507688300331236270760570552057856 6259537211680156483669760027918336 2511071362097592631545184473055232 -871976900294999213997796070986350592 4463680531153354104452305530126336 9084516716670385145953965309952 -230130109314967920511566045954179072 1212676102702131894339386870857728 4111788626607554093777094709346304 -672360335083299054732313875026280448 2849904175000876369338912189972480 1284381635910874732418009256689664 -247172058630222324967152870349602816 6913748620721331564558867582943232 2837047206726242152968082102943744 -585798252028697126799569086247337984 2697261185768876009623978919329792 5314535821554642710994107852914688 -975214782738427735663011188438990848 3486833631598283508338815773179904 9140336593377287622326171392278528 -485364974342415496327601632732774400 8552890757944465834769235381846016 5564779648354938968383881018867712 -627668528399785853200606902184050688 979772341237697510359935676841984 5976711268996829613545294808481792 -352136952211541546629023047698350080 8714421764990028163572327275036672 7512379497434883338389663588024320 -901623508073580975103342642873761792 2121029227765308590675410636767232 9060521463984375005306564139548672 -566623568791266270345299836427829248 822488596271583748579301294866432 987120063762185133674256821911552 -652383650667225083669259683020931072 8984520349468609561965349644009472 1990595057986849532463454546296832 -534826711585828164250767888807362560 383448158779383191413322191732736 5385854130324897733934726512640000 -654464634896237892665656621274234880 8576556320717729919634302941790208 1426496635673971591419734601498624 -268131995046813360843836919904206848 5561418613856672944943153369055232 8087210020486960826992400927817728 -440917696329552624618474388852834304 1119999826522607860432967244447744 916060929033541461474981315608576 -971809808230774240776956039768571904 4798722298317735058546170267697152 5818769640179393165083009934688256 -326032884139379227436276758270181376 5400014088377736358556101381193728 4433625618417394185527715518480384 -21991137897578363310875539528482816 3672933377725683120380439865327616 1066646507534444430234422475751424 -885634296948717330112786943908511744 6565636565185881066027593538469888 2820690541666293221609715468861440 -292207459787965101607349002176561152 9517861642532897195008405400453120 7192106810903843359438485944532992 -174080718167266611466067342969012224 9272671787692514170668411430895616 1062480401211209963261298592448512 -630660420108783373369023949304758272 4362863633635768865532181502492672 1616328330656312539793082021838848 -789792382359992667879394370169864192 9320392638296655522118390025027584 706945042710250010838924533956608 -716272931891920906064145158158417920 7037969753301937194755565167837184 8084814442939897320022326374301696 -220641305658391272598979217071276032 9275823603672049055207233651998720 1950771660856236122646519115415552 -55728050498628990372770055832207360 5236341589048748179909753496928256 3875157211415793484853557432680448 -807006908098124717503070525835968512 8646407145296814617269254379012096 1345607951682976508114049964179456 -233214991447589211779576894427496448 2057376178706776221360079090221056 8432614074641375765928606267604992 -956720267497569326051058457331630080 81658972827461213822419344556032 8843288100384727569110487258890240 -796780312113443234772528341243133952 9751028013499354217596217102172160 6062807509514633513939283405176832 -68919733643838608474309285698863104 5441283922446841426322648570265600 591560426561166083580963082731520 -981069687022137783432191955586514944 4018610749969251156729755466727424 2334586035209567794828099192881152 -251927798679970009035489781244493824 2587279002567252406075440972693504 714209389793045229387088276750336 -586670520412593585025787945447063552 1201484792205227770464048519315456 6718675692935012548952868157128704 -930298534002972811597469849990725632 3881003228626901767638590485954560 3714177797292819697212617106915328 -789421236661749990758249119250120704 5331383656367472989565940280590336 6118924145961091282319091192299520 -166073100838289589013702490357497856 1033320745302500137772967289421824 5793916615010498515347883943788544 -814169324128495310838359489094090752 3643565673130994668490253362266112 789291532239332226566751262867456 -234738579694272277039691251608190976 9818014378381399319080966738149376 5747312834888309820720209836638208 -450084972685363620615521771536252928 8588054734487570826327016972746752 9306267876200654698599387521613824 -444609428750624483106137097505865728 303294794949456493401728465502208 3726835686215522887298878787289088 -828917532189227068524646687290949632 2993907329335947956023819879055360 8286797960835714730785784016666624 -649728155664243863482617238713794560 3493450846462641216748363496554496 8463454717470173964609007290155008 -833884077384872812246524768215367680 7415919996696617445403215353872384 7582776534619486881414005959688192 -881490622106066390015972754640076800 4616751918301771971502816935018496 8113266285497906191344163889348608 -396029242500074355845877357109837824 2711829205252698268509748177403904 9770723761643718871151639881842688 -649957336166258659160488065491795968 9668249687541029624138827145674752 6684380866420409366933376872742912 -952746375142119352241966404505436160 1598160440722246549118741634875392 9522344856209766798144818368217088 -435302023142296359125906902726213632 5502149880497032509583567007776768 7303739697319029621087458851553280 -937716679447025784307065285903384576 3668653894636090543928063148687360 3009076237252772511091517091217408 -910570103050310083214305931005263872 5368179052699834258742199629905920 4608904664499827689394909288071168 -304510772034948247617050489246449664 728592487786332740435807349768192 5347706175479297453423441049812992 -339837461212907702733598242010824704 2017608992501365799742446296367104 2878616324492319533605160784756736 -267092507314658214324777626879655936 1323935580246347523873221346590720 2918858117062853307885957633015808 -416785567398969164763385480137932800 3614575373130782779220314814414848 9258470828032790650839451649966080 -259059102479986562022839603731365888 5111727381885641127139536172744704 4949662565580807910030467200450560 -597802867849163446424879323924135936 4239481461021686717098346596532224 1424569229509635344119649452163072 -856266298673007302648260195732422656 559878223397343835667370682089472 687855012366090707335358191763456 -582411245873972476890021912108859392 1795198027601410553785610326245376 192925619092410181730388532002816 -333896269865164852742900997842534400 8619494528100488520054575070183424 2487168667288706346003267311370240 -855498293681159186178043530448994304 5069464132854476111912276324253696 2651392527757216157356714075619328 -511956323472849393015030625251360768 7313651059297648438881459437043712 4112898674216315310097538549284864 -781726215827609221978046999604232192 7620884614645201502631352778883072 8382342402344899652435733446131712 -696793773579997156967627123830292480 7186021326804206294252322165882880 2778946515647616014721949024387072 -919743619487305061946370939078836224 7315135482902985309353679465218048 6327807818603899639227783380467712 -894717272925138169536695153343856640 9146285711653637032460352147685376 2960833719720635945854618249986048 -294485813303354821068307455088263168 7114408388624736523754974534959104 715722638785469424055110711902208 -159035891605169270459053903315992576 7362193792315633979202741913780224 4007302361729982136552624555556864 -240300486288316058098503274098327552 6691084221412965811865851929821184 710159586032282221925330948456448 -619205510853819483880005268399980544 1455661067142690244942807053631488 2760690786325611149315604157038592 -753726791350900393482081710297317376 2581224405482989551666160386179072 6662103722786300462022772039614464 -805172952038271181071337320857206784 1016969012411541242260134880608256 5840246278736565781365978671611904 -207326526471820397820202538286186496 4298919872665025513690241641218048 1947283160799473526293404164554752 -652680835657928049508082266054590464 2359538386741823888843908826791936 3320372185392232553502996481179648 -983053500891704731292982409881976832 6163395397029080759119947885445120 8788424597942970999470126427799552 -570847483993138260729598442655973376 8356007741228267149268426323656704 7547595125864182782968913341710336 -162120869118311062743303611360477184 9174737443700832708006272892403712 3147399568049441870255591314685952 -630147210303653012161784909725171712 2384155765822234136631918712586240 3736431686198418466168433713086464 -169586637225044975909555098095714304 5511488147891488743687149190119424 7168849360160352407881597518348288 -822088806029694690119741272859082752 3020256429247621205430275831496704 6690915792636730177205711117746176 -481275851873822329821476503420928000 7022027957629360652901041687232512 6107558063901893040127258824540160 -418706544008233656569418762179051520 8461269876517310378176546554773504 4873611148591672257534075674296320 -228317159530618655399537127762952192 786851898307994583102797253705728 6659998306045594042522116848353280 -967168683504699818776342999743856640 3242996927818546753539936824066048 4723141768247254285218455549378560 -708064030332636903915294156056952832 573857811445618584020268296962048 8733433718930654342342499048095744 -391748694848857793686699011995598848 2390402450065351728912597080080384 7126146415130644165567819779407872 -268708106522811487993798330467483648 6360364268283220793848334227865600 9742986959464962112899152248569856 -627936414703266252437300554588225536 1855817813608473243109376154140672 9453403004276073959907719869628416 -750858353455928752820845086009982976 5495685327723921867849140000522240 1329086426945093625987528969420800 -974736630322987919626401555379388416 8385270459813074430373895065305088 9999857461657500362324280271175680 -628676632924483965300788242589679616 7194618235156272308077201541038080 6593064974590898044370349096697856 -951065644521948193028004964284235776 504552511675896803720621029588992 6648509997554040287095674869121024 -747949057603488859383884751627616256 8770820108677919801617166362476544 3585200765330955965493959196672000 -959150447567265604800743452415361024 8872746455152031833597709845004288 3388963812510001978981086285266944 -710407969503880481851344895407554560 5405640322882311938950034433769472 5559040505306749132620758431825920 -118887222216964610975557359939616768 1112354083622459273873322481287168 7503381590518367563050260132528128 -275750002070797466837267632848109568 9832890887335922183604454866026496 1357389853388887506308158210441216 -778113251114726752663105341730324480 851229411488720887855472239968256 1147943068719737199897848475287552 -447426147007579820396218121218686976 6306732068100362435761917346709504 1016183127313920371094342116311040 -215380686855337494686519536314744832 7410686030914534842818874090455040 1259337679446041116413010452152320 -554637692084792153713904477521575936 4016710268829312356662665973596160 3736726742388824137031890256265216 -666421632194034954074333079020765184 5408077486874641817879036005711872 4088490564253429735480484960403456 -49052825810701000484907199275991040 3132982454537520749086343614693376 9292585493354803747416685175373824 -39785025265513048452456778347577344 5658528984730309678768790058303488 3832305167132324144511660465324032 -676302341542647319518026181925404672 1387275729539138637344312869781504 8045400591583205285646826748248064 -489261369519116952765069635100868608 6919743701849469270899908505763840 5044450294329947984989472895795200 -359967043190887173793885376976257024 7708172373194153345341654908796928 493502291963493827223105033994240 -389593673386642047890616036609753088 6462402986008943538576175205974016 2245784708345401600313500693954560 -524032529933348965061117626038616064 7619556379183660538485400185864192 5256954358145119174088632605605888 -168293485744584254952437316180770816 6761306532977454410187150953807872 6215139999850643143791297639219200 -856939908225968795493570062086832128 4832103728078055666756366698020864 4222623706615469768947487333154816 -330935470761532399489541206387458048 1147864479599492698917770610343936 4836225277665944330753710602846208 -992404338026601420200672692092796928 7274306536032069185365029582536704 147686954386274081206745178308608 -929134745795520211451750738387009536 9358223777483707957004245372239872 806825116873996590083471377956864 -651856601224588369269965232508239872 4513839887453623797242830027489280 5696451191557937534173823295815680 -877863499088314848662123544922030080 4321275349061022871169612501745664 711216050712041217984236412207104 -123848556024103405785168789526020096 9355961078096524198978443945181184 4225080778863832531431183240658944 -507747799075053718109998563838656512 7741961199716377490916924570206208 7362069177379166208599713329971200 -318663755028303350397912678571966464 3033596230325849876814769774657536 1023230956727760885490076312666112 -972355518111604266851811886555463680 3022360627160980626908205476216832 440331961818859193566293141749760 -92727433682102381725543405507837952 4466064288744340488419794193743872 2469612437339206210234250197729280 -901191046226459017985843678272290816 804224502372589700835491828465664 6906614904485235932446054758219776 -443564637009449674818587140833673216 6811829800679883187013033660514304 8683940555803291505950200090853376 -13975304842805427005003396198432768 4544818379000436461251365196267520 3598283721115653279268207935356928 -31991649728174882503147920665083904 1548692484889075011622771391201280 5881301635242122285985114957545472 -324019112328062412571487438549024768 4235043126455367088946519507730432 1881329678992853211162126260895744 -949183750967126194078159776138657792 5815188611110203895363857381588992 1355203845811671378365843333185536 -416134088354968850737566584158552064 4498925334972645605991569342595072 4764460755031639802671085672988672 -836620466031974204678216575384289280 5282169526387172072331894388162560 2410819880779138898264824108548096 -614271164701623403365068623010856960 2229089574012962204263987321765888 2740024346760518000843291170439168 -1526168425947112610710119430225920 4460350911805221628064936073625600 4047146557463948270224692689764352 -167713232667933745753457671077363712 5153082496415741684369143107682304 938117918435334203266845416357888 -276678946454287295690764311196598272 4770542960279844481958015959826432 9976756027186760664218857860235264 -188290364740181347872969772144525312 2495901190859454997470022475972608 117695861891291026007278112210944 -806285706402825168353008154482573312 3324643893399832649715979359617024 1206873655182089180847272861106176 -646012801838194067261081658320748544 3367470424880172904073203655114752 6875193193939745648917951174148096 -886262775972292788000149892977655808 2083450737045335735251039414124544 6102976342087307841395863723180032 -153075980318810644123280592240377856 1842752629277440405004935554400256 8216267389979391224807622122143744 -692225860896042399000419250898731008 8485897787657193512390785333460992 674438445752022662542957972815872 -879982109061040161985245583215951872 2991739397117133456826212714283008 960318629670243091419610214301696 -494465292537328534341226845190488064 7105581794839013920000728369201152 5887602570135733039765047157456896 -209874499488666436570427345948639232 2554120424104707552742449820467200 3665004882232002555900985956368384 -659703513023600970333370945636401152 4941027303692725710113494037168128 7392274871762361699416978153799680 -491966656205762560516510504642936832 2566974356072415943881189794775040 153793582435552476945599183192064 -138381568906438304673509122666135552 6736753376343919891142173899358208 7490821201166223168640511708758016 -374323640157010101387217457117134848 4334989346555756185915582108925952 4863949421744297717524916927987712 -363830543868994368445390056278982656 4389651404112563454222917208899584 3878388556013474449349928007237632 -298690767339719135020767965056335872 1160858257344865537499497897132032 6068927018290140469256048676438016 -110855038681210340895908744296136704 9082462526850103397051431993212928 3686650347114697797193399500013568 -443603776339111336556989546292576256 7445261933734022549832366339129344 8558935667218406045750780302983168 -363726104270491798657288723975110656 4163002708334500068054249785786368 6813212498656305838932931926556672 -647256079284375814337656689868668928 9139605873852771919335279571238912 4435966107169639147210969276481536 -18919578143648930470605948452864000 2620001742616239576997049747374080 4970601305510657473107646809636864 -154899249829502580431418209630945280 2611498509982274684098077421207552 2613323608731727089239209531146240 -787616425467661296235025406946705408 7441595105382302563998861010927616 9507713830054001937781397934571520 -152155294601493410228350569288826880 8808629614169707423156913630609408 3754821593942547891551319932010496 -465301195161662198367230220537167872 5694411645925052294434722607529984 7734502033072537709418667900403712 -719777018978605279707206333444915200 3560609511519759867616319433080832 8444950897271884818175113266462720 -729067084518576428176851869422845952 7651224068378358717416187396882432 3031372418714271976745610283843584 -916301228257548566130787152289595392 153264831274135644580227812687872 1532132196700252125593831357808640 -410435716100224266990600563304955904 1524337514207738384265332788297728 9639616570817286107352024792170496 -989867891930041576587391957813166080 2767629977748159776893825017970688 7346154549275491945263071974391808 -512200414170356363960353905512022016 2664927658060789058908461488668672 4287607613026919155250797544996864 -761608634013285514067565021002465280 4733528524136527152272631677321216 8741988723118865614007126462562304 -64932183682288432929336164354097152 8778564442598894312949295064547328 6178385780048621834690254692417536 -197262743082593698741389139273318400 1877507247335719083984071755300864 7088198959567267612892291749904384 -576002468584039405063293246669586432 788719220544088717006317589364736 8451963929882371408836333504823296 -505133012203417724578861966170259456 8338540024649012688829302186180608 9392372404517162599594641328177152 -298517842194331615842137343373869056 1002505191548053684297479105806336 4279533260345965832117575489683456 -288180540309891862017856218377224192 2425036597810622841228355889528832 7172285347215505220330981819416576 -872850767535726097156902341513838592 3921682623439365511204867974103040 5218258598892658658536699637792768 -747374547134456859861289013061091328 4187164463621771790725754046644224 4080463318077528455890786297315328 -211253323388366219576377926152617984 7871835906241506785821743359459328 7634171064577495006324549109153792 -243783973332552814704277292771704832 4335000540231896451405292876333056 7032376384557908203201640087420928 -958152770729724106616337426815123456 8168490736760769492494469453316096 3786182070801709472747902275158016 -300410887261662064084437240138170368 7930442773840171406388063908134912 7182464101965180421531702407462912 -509720552062749208243431343535423488 4146859042599984800264545841971200 574040290624848866266345237381120 -445202690753682976026207505428250624 5138595189040679676070031783886848 5926748838379857451270683261665280 -384890285399493905304731059849527296 784893155376007289849671940308992 54086531423779247016945421123584 -751842341557154904407861210434764800 9890402038662467009070907525169152 8544048380607493033910713681182720 -292809838463433925960625015849222144 3128882329832921378226631383973888 5644874320559216918773791851544576 -891024996255048614223491770538262528 970869463952732045586152661450752 3943515464333552710766107069251584 -255312333706392953000610457353977856 6202035996813263415666103463968768 2340811818047546113623603342737408 -117902455700107428835911394484289536 4775063859771236303529857666514944 2485211239881026300040102035849216 -420536558438889565529928511036325888 893918631543049787160890200555520 8953294950536129669862136416829440 -13261052644131829540060855636328448 8337847953408007559811867447656448 6616256147364052969196307081068544 -257302503897980582053575262015062016 1670192523498027311824653804109824 8748676394309545405399152063414272 -295285806327167615864815073919762432 618705480063802228030690872524800 5755898328542608601042792600305664 -300989535961466977858869401000869888 2800353753992008776060138772496384 3616436139112229125064157644718080 -899938101568702392671599972837228544 164335023655217048661448797978624 7261926977198206307533510682869760 -121247601119822689345764458403725312 1398466384524201826634164445642752 1285610122884475383789141620686848 -20515719322601193149080635434860544 9345783787771110950847789291012096 2204050519037002607324704265994240 -959569439359708184068105773667844096 2107616440509730122036244325072896 8810670618122029180294401684930560 -651449784422252348273101625115017216 7348882726032354647884356785274880 8187271393391733065155616746504192 -537046437992144340665373030887718912 4851731720013971699845120036700160 5907710797559159209055082795499520 -869813813542982735109250531341631488 3829350688199222692121471344443392 8955351252950695996759393192378368 -390136576141630384424974409808216064 7695904757382505378887714826354688 1918386769904626841653355917344768 -91196506121105936976683401455075328 3988590744547457204394091576557568 3923600113062727518531389419945984 -889262724996004420490028056831852544 7811448432216090091118654063116288 9945442549374250648625721422905344 -963465505743824266151848600158601216 1817685094260684000093649619648512 220409887971512863311478929752064 -798147937725182381612605404948201472 1292381665367294444770990963556352 3772217076553256188546690257518592 -866252438122305957086621494616784896 8520612621487722210362667269357568 957751063561866807868154596818944 -57738289673812361954350864934109184 7421680959124969117435177415475200 6536434883841066388579576254038016 -103529380667200200587708138617044992 3517552933841420079505306762084352 478532873313523395674361099714560 -255233645123614614548660414413012992 8718013949346215035855496863023104 1056161981902405213735619733225472 -951741199809050952044332071130234880 8317833928233246978318292509261824 104798370993956285442145558462464 -621583643263045875072536250360528896 1823240327437910191041099016962048 5779266587812285987844352953548800 -856521146765064390061388846564638720 4024662929317499261965074262130688 3705571242571986708951911234535424 -993046318090394758397825784400052224 6373617738891739489246757318033408 8284758258593850733194087541768192 -205135147340261643006126383406514176 5012597117276798006330814355210240 9056316690907161216043819936514048 -153552994556078864125261547550277632 6899262065555074054761803270848512 9601517038001045117674222759444480 -536838159639894959692471641600688128 1235901373877030902578563363373056 8364060492498271156927298554298368 -25837449248259907402700985187958784 7141693515187474538700895676268544 3227787053631568401276013754974208 -253338502650820324733879888585424896 751208991040249644494988075073536 7618782716248015835484088292081664 -443517006066746347559322454832709632 6585927895016061224895177727934464 1400365453442870824301050195869696 -1858487171744696684736008173912064 1749864075301168306948320255803392 889058868282296543033762789720064 -508594903632620318318980154079051776 3510444524648890731004529488166912 1150347689326721347346322230870016 -114640726883085656445654602216374272 5136470249383573033256115295485952 2168870890976336748328607624986624 -487387322107264339660356757546336256 8709105912765804681593717920890880 268895670065142652965897348579328 -212563274218305428611399829115895808 7548071783096151352388434427641856 6323520621792544886713392868360192 -263015414615255474688335951318482944 4149708724260517704932349397958656 5799250619371406646079579261763584 -273357241788147946122918121602809856 8723207888356042826147697392615424 391332042282312219720166192185344 -722616649995228096941780671968313344 7186218815803010032320661963145216 9270275918450364381966794439524352 -730677879791023633487328446160830464 95649086830383340872273246552064 9642878843871893492852673906475008 -155866609572625731595363119678881792 8823843450347661386043219628785664 5338629522833555248717226273931264 -409270451566924864135049454171455488 1992162396520160446816139327045632 9177076639899862098876519046709248 -875822309014126329910171189848834048 4783972808221840902599861780611072 9771164433925105706127877608570880 -597053433274743883104616197163843584 8634094123844053938342431677218816 6520770590874444139173943130980352 -636678875383469553649305030651543552 8873305089418275519546302641733632 4011887643329642315477438770970624 -132712571399383986972005816170708992 1983110677943991287014933684813824 2405278750207900802609865713254400 -486473705497289539605377364881571840 4157269128391851053959572518600704 2281496960570522101821139689930752 -289130254347201122844394420894171136 5038960950731010425083048555970560 9316051378123905841501673764159488 -153949079108869004812582110938267648 8296494594997255813844621187874816 6525262097006628500687519611879424 -489615060127910274423499265104936960 6615263483006593715690059379769344 9516472197960320127251704537153536 -343104287937607181697586481130897408 6882405215310026146425174681976832 6662914164322886202270195017318400 -773390990297896179633328104853733376 293069903872745439291689710649344 4597723551477543714436646006947840 -501220817084899356656558062086127616 3161944249921646113967267830038528 9395393953466753271127997348315136 -617404457267646903792213128850178048 7873020837337894093832698579648512 1320635925281953055399410004918272 -273623608520468343808292220481568768 2259714724606230180667582299766784 9768213847913717437659669235499008 -782015978688188880405790762211475456 5457182292671694905736579841523712 6670072461573238293379094495100928 -870436743190635022688314811356282880 6889039383402400464206195972898816 5276898580901200999590721650425856 -68095295869164438383426592701415424 1460073353218080184344523030134784 4080061613402443793176160345522176 -971660197472903739744904375208771584 8749030823660946089531292486991872 302493272148126332212016209461248 -300062276155301517370721829098881024 2161388224007071587597846189178880 7304848242114386797872895328518144 -560863695291293282026622046414307328 6999708220587028921896109191725056 2868865160194851319810765237518336 -88161572863486871400314808249090048 6582397868426053935702634722754560 6835922195591728360335966805688320 -471831230559369812312304786335596544 4414842310663149762375990120546304 1495836704619342627415629913653248 -668887275421282979990011320119328768 9401200145008559939139133092397056 1389235481038283595207035515305984 -877416181796239376347639792567058432 7727204990652030776925911919886336 3224181056760278793188075066359808 -757376079377707643303764203598249984 6686617547996779452988885664006144 7092511521730008541203267785326592 -825956261366905297815755426755510272 3044483394026047305260605024239616 4510018186482414575912264998584320 -980784105637643537121497370308116480 8798711381270266317859254488268800 7520713263649536955179138312830976 -83446379003863029516009940990296064 9245013068022115540475432707031040 8413744488620415246842929117921280 -953156638860094946876553122237382656 4397841132223727232345946558824448 8419798864683050845009247708643328 -45461977341546479047205628491595776 2058566279860044179961042880692224 3503905206607995280653263885565952 -547296172623083881330007587799695360 642933263067877275023265205583872 3766129968367963965219768564187136 -65007102542052842773548869426872320 7755613249705121997137276567552000 3042845858577184227094098094325760 -136363469627988100782896381050224640 9926729338786184557493615943745536 1303253742469635973846937408372736 -543923379828703375197485398721822720 8481281487008469793023127441113088 19326338050307863967890420006912 -282848452162461063878942544623566848 6425218917680096868499675076886528 3110174734553389988815090325913600 -235184165328635262063103238597509120 9260232172558111901923554606710784 7689936320345117625569089358397440 -630691801166105037134816968026619904 7123989254463394378015112540717056 7822321252214007829731011347873792 -339034911340299295453690577450696704 7881097666062681193633303943446528 5840688808490875893412223688638464 -506110265044706313523330533904351232 8692289370226659367990186418896896 3241234471924279558833938110611456 -524582492135653011830952801685471232 9712408876987602940652634626850816 5087075804654114837641550534541312 -440404338848434460370149830037602304 851125664224864664928276644364288 4528744772042956862555587438706688 -722211831992632378968275506931171328 2200018167407115791893926128910336 9957264869296875707946586616102912 -257616846460439260924520234383048704 1442989285874185410673421068533760 8593112164878984573762568668053504 -834050492242105255467390158245986304 8860822426466757643608292149166080 1286207603484768826356902957940736 -370686271788443614574329467582283776 4157052125633888128389250793078784 4356844367594448165570082263531520 -733887287675660760225597141872017408 7868540201058434462553572445782016 1569343567684105139302646442622976 -529928984564728217759701587348946944 5072947207944214957777594221592576 5576035190455958559776838887931904 -930464158329476290189563154764136448 9183507226304918130978876106473472 365366171085624457826306338324480 -48230744913367651406141626169425920 4171497102063907353525144101322752 2583271230347420262705800497070080 -496106463489807832847563969519419392 8464152776993707034054032866934784 2689249726196638221435147378491392 -607311330116268219766661630853644288 2730225380608802494517361051172864 4544835731381938677372954081230848 -470157366620014365572323759502655488 9614142193196893066199070014439424 9967975073877628381615753223208960 -39027149078706956395599155941081088 9890727306437728006290963865534464 7689066379718673842749829038473216 -4812975958676816164219171872178176 6120532501363350969288933456740352 2649606840261519053363929054969856 -190507681203557740210092887307714560 3306758929534545220886386605817856 2562718895182197555839578612432896 -813258290282451835998119978990567424 3385104480979676560642298599178240 1643718530768655550665694474403840 -191786878185679469618702620330819584 4666631243649259138664196361682944 2236355178312245354378313433350144 -659813616858859238105759142696189952 2524138192037159643984188219064320 4284015247486461502855011503177728 -409147249859561428762040661232844800 9944799801271363438263170718760960 9340693215342118201593190001147904 -163546538645064373032126719343984640 3045113087927459984609855297028096 7799412666268166097967303884800000 -404100846002619488830506954030841856 8548015404526384189108994101477376 9122745615775016454421177048236032 -864211327478464679362161030354436096 5228305680495947585846438063505408 8895926354418349025707482616430592 -192262234980503204917747479211933696 4347127017712664831948802270167040 6503905712241460708252824301993984 -571736836343394182823947282073780224 4112926930183072432221116300263424 8212683881813955460585246976638976 -393046401672918313630830693860769792 2636176926302678112004291067641856 3687275039777861184530851035086848 -500901403444706904375246728135180288 5770239878479772547173466463272960 6686578525135069529917810897059840 -423163925763557129020206779086143488 3376765246908229422938089691545600 4264669097878082828084969992093696 -565109787617318638253735074808725504 2542968857998198230780712874672128 1706732084552227260053036331958272 -38747320571729655284731399012089856 1949087592979264554857997117947904 4137008575066229892480321688961024 -703720619201045798195857181787553792 7977801673316862635811604642398208 3819582937542906248451702382395392 -179644890398142136506362864737452032 2036024196527622721216405829582848 2286751826309531317607507968393216 -131687138151295283077328256085524480 7942181458910334285889304046600192 4614783564337746495982214966149120 -657083983096684676897401956676403200 5260104932326218842892290666528768 41628501689510602241632349716480 -183205033174935074803637759997116416 277998589171028148080623455567872 1469354715786350553313562446528512 -3743271887962589232572312022155264 1512761071580745889848376151769088 1288064060524750284838563932536832 -671921559389337419268031731116015616 9224492662171954596532853713928192 1134570426456251656090358013493248 -409750358650528864683942167864934400 7383716456689031306260542128128000 4014030604693943758470420516306944 -427907201906046316360720364643287040 6130718432542785956851280408215552 6011985037945924126861820617031680 -992076246762209828263907257718145024 2823601939049750620421469312647168 843262527122294048078882018426880 -270697111995636688185039300549672960 9437683570311639285163146849812480 6138049490481928084731633850122240 -750531229233656543851671758252802048 5715596229418006264260905316384768 7360904690226616133903780858036224 -532231224172051723898644150511206400 2062193941106714041714155821465600 7596388442668550315947392935919616 -594122152294518610057682181832048640 7150552440494155212352106272915456 724537908465560328478556568944640 -609957973133794809890257118244634624 7895589115008788670423594113695744 1538372358421252105582370738929664 -596317720412053908579267523467280384 1414697485992545848977899521048576 5059884091346293865465160671428608 -836831225477487725891393257063055360 5123619432105276138983921131978752 4352506981872949117512270775058432 -387619102555544342705203178977099776 9560744507814894784257512634843136 4986658025256965559610495469617152 -704685924318822430066642032768581632 5481422207245608352936723566559232 2555063111416410172288839930871808 -876455858650239850666430177887649792 7920694589146009759654652885860352 5917829887452754844637833975562240 -113397798929545794908276508923527168 7213123759270916385721337138642944 9070588722411704600616794329186304 -793641103653614194351200635124187136 6446578584349107458826433948811264 944919222750728008434247612235776 -292353731895946254261785423524134912 6415875963713565841828275208323072 9974916349899552113487493482938368 -948181357149699997889892109911064576 7179215176255345067907162606403584 4629045063782816417668208162504704 -759233788873289500340292313283559424 141437339690430345491023214411776 8528235952460302423023324030304256 -346323038846440965293618310133317632 2704666998214366752673594085474304 3881874398842130471310410133798912 -724175280291300883337451453982703616 9731909500061986397091125128069120 8556349976601046827123149079838720 -980872720133742016870002109473357824 3815967412522688643158600767766528 5570512919736239495167008105824256 -399574386440614051515914553961480192 1855528358912750192148930208202752 5564293212720514383092949102624768 -59350192154475612459673021243719680 465463785299335919995998112317440 9021081082100157778598900506034176 -464835359892301610044032895078629376 9168393017342654371067956316602368 9975953592515235753817762166734848 -464822936775284456049986129513938944 2002069380488055265196881620238336 7458223436818045270994472344223744 -160057115616837244883864702995660800 1179429698665499239285628531113984 7720362436080423250746240533528576 -145855257226733212902218251240472576 8697313339257705397622297344344064 1283732279350346574519602325225472 -565372551477989401584900424901591040 8477784011512833440305106749751296 8630896412477785344524303292432384 -259087436724837939795665540526112768 2147729617763680734469697445036032 9572014504129004378956103721943040 -963557618375961880896148421249859584 7161231619921019486367502938669056 4173628872804481825325006666596352 -469043823714607227186728187457437696 7740958290337918569097082896908288 481611589552484586959387960016896 -463655868808492794496909490190811136 4065225834278394465544561718460416 9716570155547836428921155170074624 -359891131373867474559927954503106560 399346710188508459746186447814656 1448725650422018129898912582991872 -972107999673834388725277266043469824 4651475756803079223488156643885056 2337401589392440512740369769693184 -602111208095961736095679454786879488 1812434351778243081092296028979200 4590464239365526522515938762293248 -954386112853805157710328173468581888 1592856617266076863272699182448640 9899928770466271197970515491815424 -438839256994496995817340618032545792 6644975289048571268954221694681088 9642375568572677058880519870087168 -945546990183074991758747045118083072 3520764543658313735565604957454336 818821711060256386729205120892928 -746927479189036154201426485596651520 3951016427682846180023785909911552 9544636757961701706514451386073088 -426282821718086689015284884987445248 706021962802256848414485000486912 9802453013004772045445107057426432 -488657644253739630954339132216705024 5289756266047906310609230480015360 8670363604218974047300514446573568 -755065190051196486872066576263151616 2876421352081680463088605221355520 8253129748869842388108475491155968 -55255019755867324445239177962848256 3760630854075592712132166374391808 6700704171473565046295949352108032 -909959624280009953387456746569596928 7082108993050921670492392993587200 1408665325411144111303567983247360 -849991274993517673125450105376210944 8317246529940147713503158106849280 4392700938856705999954746835730432 -118496014900340542163820228416372736 136830484307525393029335521165312 5459467387120182670353540390584320 -890514455864734795172442364188819456 6630445250126769651610510593884160 3408188589248402951904707204874240 -22529927727057703395419901596270592 5650585411796010936081400968773632 1481085220516209045462486406397952 -634450112810158045942504935418494976 4505052598911468965210376818917376 5288406166712238293900827629191168 -853191391379293968457724817194352640 4047711803240246342120921377013760 128316595289421993837092027760640 -221001687367001272582021736910815232 6736034134481600918692522358734848 9484766792270980542571532441878528 -109812047758196839238537577270083584 8734154432926262202238467930324992 7576863290782906009947191793156096 -437821042679873714989343404271337472 4638010123409249884912936531525632 5179352258050778363898937315688448 -925002053784397437475041977665847296 850363967092839361104193404272640 4222545349278290447040205245382656 -943960747012431249581076492928942080 4090165719499972240746885372968960 573941848503977863446749308256256 -736070185624335699208224953832833024 6500706574840073400751076019273728 7954759082424143072111482390970368 -184975803861847923913751319873060864 6706691265655323187274785354678272 5433031371900417968209671479099392 -897280207357875908018956238657159168 1269530985105771181872617176956928 1147483340140495235202413351665664 -247953597012247517635905205601042432 9377489325494138424042041112526848 1369888857102335774770440213364736 -616941182682157106291067983977512960 2502239486139975835641944733646848 2251849872825866421547736166825984 -388619941836520666087220130049163264 2203838195142087251715572667252736 3625407925416142661190593888124928 -599747115905568242990630069417803776 2180072458703894438279846677184512 1354705571750702795253607275954176 -478127349925256349321402287218753536 5098263286641948079032187085651968 1866314108597796048341713918361600 -275882704138371606098252989703651328 5842725964015448529999837171548160 1310216007436422227885073132158976 -295047937000663745526444266413359104 7131215149709010797808246709026816 5449832833946535844533942337142784 -680904911513123556372036317479960576 7054943810270625890648167137935360 9084692946919322388771635787202560 -207685168082435431625748932944986112 2245853849147415283084513926709248 5966344358399156674242355526631424 -799315322979333402888104899128590336 6316940355951959343450481991090176 9507770080972546205307205626888192 -996253333362269218233878698166059008 9158064652226708050181817968361472 1834938164457758250576776869707776 -472209332654257286635151489289420800 7249312340247978875386962345197568 8038084122943258379108043961925632 -316703557043699022205382433427161088 6046962465860425485799638293282816 8308863340837999175730459448442880 -117066684076583021092000978767446016 2927150089624468260594858684579840 455570592323666838838852750147584 -689232986964883896916181375762038784 7024720912405883465950171628568576 8344035163136556537707343774744576 -999966956140478280588485773014073344 4762948264352844677485660362244096 7051790815301099619525836457115648 -672445439488520299238279980741820416 2025666924589691263124922395787264 9595226354233259467879563099373568 -297546054083539607058654889752133632 2392729024948919200753058970599424 8061668235212812390775345765154816 -175564124431313682275081288392114176 9953423444306317101009782989389824 4739228969750622946003008150831104 -305165528383216320344838128009216000 6681417215446109221082786590359552 1743510252827751302470801238786048 -329176311335395923996034507349164032 7866470221214870041426731703730176 4531978038526205279056689237065728 -538677088476694663037752872494170112 8939514130226023013264160834191360 8982023468417209119670021079957504 -506013832615585906238184518856998912 8749735872325142729553649405526016 9036765082219863172805498360561664 -598937367494615176244650706967986176 3886223860878062979012495501426688 2795364224052385291252454897221632 -542870315461058470147236943601074176 4940328869590998479717621506768896 7809972580395517721524494881783808 -934187190837259138654026054347259904 2252176442311581719549070266073088 1330904297061793517636420221534208 -354781475743543834574426498888892416 9702779817850237968565593532530688 3819404375860682181193943387996160 -231568776567839242622945889032863744 8056436831410084738374283913330688 197162453518373442286870257991680 -385000538755939304038521416745746432 604303984336912519108160082935808 9212750389689011420281582206844928 -954635847858142884261264434921472000 6423968631245012618924876009308160 8095143979336809246037226381377536 -50897586040556554333331440208445440 413716833811018042316951079878656 6291086387784141898958370154479616 -392448858063370508806794865744543744 9747477958985261542644040532492288 2742718333075288713827090119524352 -426137810014324416737859082538450944 8482066323701578685176798469160960 6438218597772475753417156719542272 -93572559530113289098542466272854016 4617040005270193030430055286702080 5281278937661530905451051645665280 -245241756631874262424414698447306752 4002042938400177622332321308868608 6216461511687115603969877034926080 -360946910696453792398028501887746048 1800993243436287459488891890827264 5066279787303447865940856262361088 -385475087384921025481224094358700032 4158041831910918966337190745866240 2141008087663348540767936293371904 -316044294727031236354383636024262656 9343978195071793681136149218721792 7061281156896009878638862572453888 -288887738741524308540679943863926784 2241812994802023222941939455229952 4448308049258237045160690887688192 -350735535599540951945670938354253824 754516674392580356129230036140032 5520143370238598283671688093630464 -346671680778080272871308896906510336 5288661721056752120638124249317376 6468577328825115354164150730227712 -124887128239474496726315135173394432 4929773450090010639942788747100160 3158836425757750911414294735224832 -620112913297746272185723904440926208 5189757686502476063826579097124864 4263467161350685030650422103113728 -820205651300522020625158702486257664 2341455964557851044568803965927424 7392533196898209455310544411033600 -550705101340228556071178390883794944 8727658888731793336617809500700672 7762409095320962164279719342637056 -158529670546642514960636294599802880 7620776550730852016813843161284608 3723225896171893062392033126121472 -262267319425789504435276334734770176 5517242027534631043092641612824576 5432750056103445076761513302163456 -436883759734668265821341562263568384 1551833388126117701343215349661696 3523838812817293112422989771571200 -672253423746622841108202047777275904 2705193546556569629615572052344832 1551195163881497054798941853319168 -47170338471401790844689524574912512 21441847859647669828699941765120 1623595991927267207026572187926528 -315440223499151312184292626122407936 9072846974718905391293449103212544 8330212954431720530068331493851136 -778256891998384401076375134580768768 6656568477695804910086867575111680 8092789702644751264966214976274432 -570061844800702028745604432637460480 836242218332672830455516655255552 9005624420351551521254031182790656 -5875684077832277048219599103852544 7444967196866403865571046060982272 3031308331353500889577762586624000 -562077591859897322633096967003045888 6135608207889643260866901259059200 6179317861574980112716372335656960 -195552555829313397707690982175145984 9741069181198927694598432255639552 2364328854195782011711545858326528 -174726659485246366099885039407857664 130021259062595930727971249192960 7844786309151608776767819950850048 -562435161227586283955821349122867200 2136525483400154166025143009148928 8312838224326195071395772579708928 -640963481514592527202400143455289344 5866747334628852925629710378991616 3880475307900784699735625863004160 -932443613296758836674321761452425216 6237542855976310510575135320178688 1301843499293704741083223083188224 -719222112064626186301736050032115712 316255275652468675503148897402880 8692307310498956931620461300678656 -140081941577092096288429895904657408 7030649000295816126077928510324736 6209858095524007684856416133185536 -175287212390995985903047357553967104 8115722429009807891753608455127040 3963941442256813223427502732476416 -659557123134519907821205746847055872 6567786861037135154669825394999296 8811132885709537589230301454794752 -539328778227243956104942104583602176 3921344455019200058213533829038080 1161131150257030795577522261065728 -116775364529417842503760461464338432 3836461140549570611232730393870336 5734426379609920036398967012982784 -877790001354246265257533019776876544 2508276437699439261297203705020416 1021784915890344278182561725808640 -885401520780007767577470199960436736 3835192140110508453865941870051328 5531068029411807844011313169694720 -837129583306716448328400712952184832 5881654443560277647508575233245184 2838611215653342343956323010347008 -51698743317936095120208681569878016 6308851159217655384577821827399680 1344064113475091261224246101147648 -589191038516337761333005438718836736 7169501134456896900221035075338240 7715037513168577270497133543292928 -185855531635969712211500980615774208 7295243635009997349496177410703360 1385825161791042316037117563633664 -862906176749156360347031119383756800 7621050416873447732600183850008576 3727188657247486477571879541407744 -393694442546497391170678395517272064 9793905306518571102287104254672896 9350034652681390512838643317473280 -595321235588414538301652961457078272 708573995612911241758289139073024 6073482228047663603479108049174528 -400296080859595619613701039745662976 162468048369614425283142564708352 2807924578067802046415358086086656 -523452924926518671421740031735234560 8332721178059217096554981328158720 8976269977166111621881048676171776 -597168932984986341813277325252362240 3285251737098638615167729372495872 2241312768175370306354025242558464 -261754086465530665254390094297563136 7769640090105991353438716490153984 8227787451258348161972869600903168 -867666657704048936773627340254085120 8310570471497769870688310223962112 2639295161253794505916990200217600 -807221513022183593450249114445938688 1401424962138582435853109104214016 5307199849916973963322424616288256 -922280483932019364791002531792683008 4346527444803971512439091264225280 2394026213733692749051436390678528 -157115804902489071998641656567955456 8833386470710400358032723094274048 2369185736154390292634307999563776 -140096951453375624558755519009914880 7697993389713827124055858586058752 9674923196213703388113752752652288 -892715941561015404480289959644758016 3816619989626827709504622384119808 2626816751988336792950648164319232 -628832651224774561309133639425982464 1259248544452471647189149870456832 6578512474590944440953172886814720 -920924902804316607014343615461720064 569279816786530810772244911882240 8376774268522764682261363968442368 -649744255723502500855871042536603648 7406549317950507403558451205373952 2687612100155639176751579918237696 -792405226402171558323594838587473920 5705780953184477246881650618400768 5447132693583015091615668180615168 -363230301094418835247267443889930240 9678484369229851924948073161162752 2053177650270448150318494473256960 -822129297629539392468055090406621184 6141812003977041045098503304380416 4938744602404960384180098460286976 -127126725037935352257564116101627904 4448884482605848217492694864232448 1498042873758534393027359376670720 -458524225290376023634907653784731648 717715185371702954075577418514432 6515893938798319757646758768803840 -293775826151125303039354230838132736 1607232805949400144468006345375744 7364291128465409266684530853412864 -21489407932345866177301066752720896 2589583481793624187516143007694848 8866305938392149479704235257888768 -739753956271473485072158918673694720 2991560838487322107404293003804672 2795455136688179993859096020254720 -555095996653343166633146822130925568 7205584284172425897353643579932672 5211919413264817980064339012354048 -410578743574415675940383763365625856 2346250969683927236611519725699072 6989223126982872740068981299216384 -306143989493516173896916758003974144 3071524637300395640073966449590272 6736298378830717070617038790066176 -192610848541935201910804264863662080 6693070973110592620569137160126464 9314028168596337930667937069268992 -615294828711378261690818377979789312 5203313593886523249500406285336576 2652503804954762294529717243478016 -347572297816737770076903061294415872 2920979774816116576347058255953920 9263111348931425003075013093359616 -452412898592910263724299163969519616 5482402600290511573098903262724096 9583463972391337128084381473177600 -158649282877457922774657122095333376 212406019244584237557570584182784 4115430111130766631777443594108928 -485950463807900594312115107246637056 6054548187796763617729483049533440 6500651031636362650826181521178624 -812926197583504496569473672465612800 4053863810907130930320842164273152 9254946052934560672324955286798336 -45915371248904649556040989815078912 8803146027070232912835660503580672 5284670719432453722704945988239360 -738875348895733536616008248918540288 9832946964779222605393897512239104 1137838053804425640087668725383168 -842936984698721924659544133390565376 7916447046132915427803872083574784 37148348894859625720065696989184 -19707213375817808750995078746472448 4426256490928294065989054711726080 4189732843299183597532577097842688 -864459100943164383804607862501539840 4426269575809884902012549771296768 401579664609381552663887750365184 -671522935157669244591083853621231616 7179405396784040104583292155592704 6500123668120924625421708266831872 -159073490968550314619480696491606016 2779460502586378651753641691578368 7976429490533650088277175223451648 -616159219822090198433768130786361344 9098493038444085995660092194684928 6243303763149256161179891300040704 -447649630602360571051093234972360704 4363994888158606277735015063224320 2941953931724430908539196074360832 -959421406758611522996493463219863552 7819698782995711032621782861348864 706869092347646074123889697357824 -335329641228779582567834183616430080 1201453036365414032617224873705472 5841524328340374591343597268762624 -936392716158588976090635295715753984 864495653916857706768358329810944 5140487379329501181239264479805440 -184476470344453410371625316721360896 1134808622314438839840703711805440 8300986173251113590512182223699968 -610309873964457258135548472976211968 6017021150912450212021322731487232 7153317850260850580396823566876672 -25060923358354428374266326418456576 7874625238458203375174152412463104 4246660157721905060621135005089792 -507143024416942537696396071462240256 8619473255169567226993640879423488 3841006287918576652846830995898368 -741809470121891522153400175316434944 3013832661560393004318705923915776 2111125983162561492660644892114944 -834484814568070430332355727929114624 373774992658951413254479228698624 4858889780824644107110435461791744 -111913543549155847274394382818607104 5967738489543808534566874076151808 5028932555503995241930191938781184 -519221460778852081620844204311707648 4846942156721183769713218286518272 2672386378004764146605648167043072 -818025658008344624405608083872546816 6928781251802806967612335586279424 9121354986107620258566279943684096 -77636554639011651492705148390604800 5406836086890496568626278836469760 129835457986180562457009160454144 -427304986551802346283811882284351488 4217334123903804384883455693946880 7421180575889337154764291264479232 -129951695365980502474985550188118016 3940560464974714533020052079247360 8734292223336456198921299800621056 -960876648084242693087762366754455552 8946619162265961110197658802192384 4661244608066901958567730670993408 -125782451843946907265036237997604864 4877178693625783931558113243561984 6154858876509992570614652138946560 -411594037587304141409092887187030016 7726254390119817741268351249809408 1983465598489225340006268703604736 -919283157242736487572984669021405184 3403647382347493792949560452055040 2659496534812345187887292256092160 -618386678280674506676410087217561600 6462543872638083310228339242827776 9003587427540784231112196661182464 -983314132686557271127182051291168768 3721379940511268329441594492059648 5777042869845255042745836366725120 -301726608909167241104334084347265024 6184675691688928639027772617916416 6007180082546345824921011848478720 -936209914009885617150806101667610624 3918341913216881913031214629912576 7341584949873509803477895892434944 -639039524798234952442468765769138176 4709344381496976051543210488496128 7137883978070422025695825772937216 -311290485391642776637072831282151424 2488655749570360433538634304454656 3164593793064297658162983234174976 -967958108980195370939218087257309184 6623339426040673750578757741051904 2799349722483164258406310650839040 -973017922781522525967462728483209216 5102933966922443301111476921565184 3504325576136476112482847172853760 -989140722510664840619537828000301056 2463025836265600135154623810895872 6981995790284081431996715203821568 -897624222940267287796953334308405248 2420494869035763720173443761569792 978566479504268004712699192672256 -99106520172313088685910629449465856 1479260720418990775351002529792000 763873990375867379649143573053440 -659956980940463158839007673938083840 5679637800493141711123820828426240 2260576934644649005384068778426368 -251347798175177580725175793810931712 5229244585396749064325259589582848 5907403658949494642875673805324288 -900352897170213560734690275718332416 7375336620164184303638111322112000 7855232969389054187580141126811648 -830700370980500347639343328335495168 2955600103941457787804112486662144 5267698189852458782764362834640896 -783237602398918152281619747926179840 4335070737147448903449491177209856 6353938967102472248191562329096192 -109740777470466556072037925060083712 6265829693008844019645304165892096 2642249970271123750042910884626432 -795321789343532642186012497742397440 9948532020298512040132631253221376 8928126116671649393244503988502528 -739904665187405771318372432605085696 4648430371339007927702252664389632 7041346216691939942373091459465216 -543742886257208436732513050202996736 8440175408957382549082851780853760 439969950779388905629831114260480 -213418584071509654874303021849772032 5267005682673027459236444189491200 1408569116789602846500003310993408 -279858939876060535869824347144192000 1199991142907487251463229860216832 7424805556936812224412332767313920 -772790566262046441944082539910004736 2584529109232014128584982049849344 4036998146332817436816156231991296 -630970762006818058022326665432006656 570502204966788668615206794952704 2962917366231762267763466087432192 -61863421699110398445327069439066112 8408211738044217752319740847587328 3301274452087751734955823566159872 -286253727397428370118952181993308160 4847441655714323921828730002997248 9311593910481444893088133358288896 -841702989861506555167561937674305536 7879179806517737512514090757521408 6937198126339358873811634018582528 -779802570878595725768413961605087232 7766662221358275699979306311614464 4595634952878750415653783855955968 -777592831426285274486729870300676096 1830737235151680230014623569412096 7084099614699175751248229571756032 -178439931695745857588752709052268544 5255360157551840886002648141004800 9426145579521824436579715180920832 -886280230291610500869091340241076224 5061562055773308351127506026233856 1632474019629970590086292259733504 -501398339599455518265176229433835520 1884521623098217950261488134389760 4990824387938556219110119266320384 -195003570329155273042481003888640000 9941767695687006705122060531662848 4186977799825740745789461237858304 -716092804373113253932885524376190976 2199256359764277004063549966778368 8081996291440937977454665027026944 -471770198417499533321104787488374784 782932119032670669131243505844224 6282257103037785715578090314268672 -880306957986454235409854910628364288 9258610416003887686624672605011968 2350547995496533268648628846592000 -8519748006243301518070304552779776 155356272785932090318491446411264 2461531123145294921310685206937600 -778418671456214757973955708691939328 1676260319027108068790690111291392 1897075919761847220600159820840960 -349634253869929988911017950481219584 8296153666547197813291365007622144 2449050954708076255706895515385856 -878467175588364243861564187926855680 7836585235411937885999886957019136 5502664228200138090439681259864064 -737026559775923209686698841134333952 1379759381792078848350216901361664 5037912591217471268653704266383360 -303906104262583379936804366656208896 4143017273711347760926337586429952 6721946711249629433989447771226112 -124235418398740630365238137622364160 3386694220679118934870454131752960 3760172011187056947657509798150144 -594521614602499652617571420954689536 8191204163904101004295210725801984 5647860612191739485027395463806976 -206783922598946581612970160605364224 8853395864568494474228695641882624 1395029370587415042560147108921344 -876482911325619868080886378859069440 1090633483550394956097993236807680 4729047329042189285633450548658176 -246826773898393616979928797526622208 7411924191884605623454624068403200 1030365188732981188146164020543488 -414305686276245268653070209324679168 1166013617140439127680744339537920 7498349422676552577090123991089152 -964303846491502035837955924824162304 7182260131885816181315013550538752 8910335348950198081314427242545152 -621985786025873874558911563377410048 2071244859927700480653488233119744 8123190718544264628035234165686272 -96535887272593619825650163104350208 1167455629970036035993648058335232 566892359667751309071680255557632 -151470228058825981264793016679268352 8094562329834148402274020997726208 9279061473844261502753087103696896 -970722696150998585923346453185429504 8750627698348592869359541366554624 7577861108330981402620431108669440 -355147116835857012147019135164874752 140695688952954528027921329684480 923816089761487282339968328925184 -57401066091773064531076522813947904 787785975445791335882125467451392 9624612564019950307353262653702144 -56692726866638051459533305324503040 5664444310113852936693284339712000 6247355097351127515926951714881536 -690771007558482342670091173324914688 3068752643651348896795216305979392 7275661859231813231420132944773120 -483138507156146697459253303306092544 4259105251474537620189055186632704 6638807270703982350583504050323456 -693428065843131699027759953965219840 8229503752355114898765044091191296 1447234827171016264444876960038912 -886244338050810217582124267777032192 7081120193987475472498284516343808 123188478236834473291745316569088 -705173216722060354383925027562061824 3812221873778471020126633960931328 2686961240781706258742225244520448 -624386854815091565276171909428412416 5829890230282595249607256756453376 4002810055842614765946798692368384 -762489240653961217834127423793266688 70898910869002688023276719964160 8595774550358724140309525724921856 -643847224332887130356156620056035328 8884585513385870240566884419239936 5106895418578556057594546473664512 -520352898431791926499419784029929472 5361091092107751748410838800662528 1104996849815308164776855366270976 -96714400289333445300602972999254016 1644920453482200978052312387813376 5410132769960611692645733212618752 -111753153621610904135314602394124288 9981778479590551437189536053985280 1104086882416609569665454312521728 -770707524342743411888950917998837760 5076123566548864214847561666658304 8505761596104424498866428236005376 -441640830119215199965849921442021376 9206104670208567763943772454387712 8794774014777962434972664870207488 -896175317541535887723297543028736000 6740319592039871371367569151754240 5172158942975449416268204159795200 -532547380598160806304433770044850176 9177972532320276185869784442732544 5622966585415963398849198381072384 -636292236905547259554684056612372480 7539332907426117657681946797408256 583930958406103224712609587527680 -364988011329588354799867007997050880 6873155851126074490703033455869952 9992316796963567961812789350105088 -437789227324224350450196632064491520 4629321132744623909135722607542272 9767628495830851190673112802787328 -88127600906887649180310651252244480 8481850561293839756210374459785216 8404082460920717424516214688841728 -539263749400701346839282690589458432 9878054888127846374066235914584064 3314717997377424055546861896859648 -249903671711824775157493614694629376 2426045252927109483876920359649280 7229048613925128342469248794230784 -702147184680419205535226173283368960 4846412311057085955508930852421632 3715525558723171873125413370724352 -771461491105634591370485923204562944 6408209695434686676514895369863168 9691913538688917608024924758212608 -980261295631251395874474346743332864 2682042286992443027009246444126208 2599592894448655119583093498839040 -20913336636716890226801205540028416 4913135631946894740042795200806912 1649642455564663726108467278118912 -383394771925785127697341706378674176 6079399360149346901092004660248576 8094003574295651868337420739018752 -446185641112077621672232077941014528 6240636310414422781903343338913792 5243768895446790066336650215030784 -423256967712516319743200108226805760 6845318872229975421352919653416960 2047523913612118274473465852461056 -715979502824193914933793620146257920 2708588509033748176223428220551168 3580187494125602039491200016187392 -429268232119008492382618940751216640 8244469150706289971622043199733760 6305690499676947523149004865011712 -387468534880776450129645789222273024 6463373048097324763987360220184576 450666672929265626423643653275648 -61327858563371539472714857537601536 1206923193237006470115243033886720 9446487274789808336866686193893376 -457393593813402342194338761078210560 9753434775565320413009236874756096 6490069701782961040560381308698624 -471900720424059386428537633947779072 1616636927585414488062006833184768 9303399999357679112790887538622464 -135797030273707826216262688437174272 7149316534546292969753410669641728 7596405015213546752235588678582272 -736967165901120933409363905724022784 508747593890374799374226055757824 3481979322380470406272176038608896 -689405779919261365415187935160958976 3615755649939411945456715209637888 7567054259190260693176463619260416 -638416946488423878322918064610344960 3444578286630389602793704025751552 9038331346169170748909289035792384 -728463030925809553234330955531943936 7364452342422744181439608479809536 8587354347820158109533961680060416 -726799012699295585530567444974796800 2536612722194753660772717965606912 359914304489234100549992597946368 -367846341889706240119140986122141696 4743465062729222981565399410147328 4411171079725414907790710439673856 -941310440547764709086518455784439808 323985711122817259901979333754880 4882516248614529465436462127251456 -306621090061150496583872289863368704 4103697899432141355273567231541248 5797294719352424391293698926706688 -981645623061813066889411369480749056 8920095101898694154488395985846272 4879365619178023198744845681164288 -890880884888028817022494267777482752 4003114392980831403802752630915072 5459333765908738882257747317882880 -545566768567494545485344747500339200 1561591136305936425680515291414528 5259263606826674203777209146015744 -677688294355047545704120366187675648 4871024151607245674506259175309312 147284040041082609603943103201280 -622322777431175716343548343440375808 2331577006221860541291614697422848 6370854740756233722934699399053312 -881999197281926307493701151952470016 1485627084377172231631831365058560 680519393783739410263725890863104 -526351974048139743766398236379578368 1228992099291838313559184426139648 9855596858720048778228690868764672 -598771864014155475296557467613265920 9266591158983583833089027474456576 4048017529628642258821631231131648 -994779636784978065401412745106030592 4359832112889795338524670331715584 2200225978205203371205742756364288 -133465353818523745712191027982368768 4363110682212365594412970959437824 6359071924127712303332012876365824 -555475868131241119703404626113986560 3737515277005524792329252512989184 8805185195072508391484313437208576 -978219072724374419314165778659409920 3005842963060497736674916188553216 9626612578731028320199829327183872 -404813959252989937594924002525052928 3394554203254924172796342770335744 3763042380940129668634905438846976 -408084203143117877765714495779373056 9709889542567073987895578540900352 5399530001410067266272866743615488 -170351042105250914144184535082860544 1292477838652106196830265414778880 271602283800200432420782977581056 -367925878048564133314922715021312000 161364954564786221960626295537664 6887725878430986528030934647701504 -269905775591030479125745726467866624 2485004149007425127285188800282624 6714422120197833166530706589876224 -1724238847743222741056050989891584 3423951118576333473814893173932032 5405847582574545911435038260461568 -172145198185328910213556643253190656 1767270083866524919389369361498112 7656596856108883793078781841768448 -340681229575656367950817816232329216 5211304574178195588666617539592192 6865934613220626624677284182753280 -905900646229519875454880772597481472 2037962969843344809124823702700032 7236930134947448787144525161168896 -196748076271669059696062072363155456 135274730894813668741804550258688 4286170472454293197737314452766720 -175405315725486133288062896993992704 4936882416493219030942057389621248 332367375888680940506014449401856 -798683646851969033026551124320059392 1522324976482361353282293789097984 7788418499423773322439060816396288 -448543894239264547885324746220371968 5249830467857862103662699105746944 8714968530149614140762806667968512 -524184647394683313225504273945591808 2240650888600543562664710212943872 7428840083758207228349929316417536 -165348160710450702565184758595190784 4019524430709594230815845957763072 3944079626368608426214795344084992 -452761595884960390624970297902628864 4596365211889550207717180316844032 7963823888934315785772022376693760 -614448160907211070788948947770540032 3259283049012450929695356637675520 1002462730173520908445052307505152 -934928385455686878463323236089200640 8569149984794089156932230319177728 5536835339282832936815980938526720 -150725536844622742135386500797300736 4082054066344128782958915313729536 8342713747997044903256751173795840 -259491210084583363957672762750795776 4110586455244678111203535607562240 2189563867173781677726267793735680 -873808718159147381655831350033252352 5300997724013402087455030232743936 1367881673670525198168874735894528 -700194404220731216247395850379067392 1560097967440591208593869370294272 2764693133578418965736695275716608 -220094432599062065956459735590895616 1292103809606022125261297366859776 6489409934435210394265555656769536 -671725419376964622477225513745121280 7763722509700240710398672440918016 9169842909660231807954868227801088 -866520804729434527589337239895670784 6866631730193846262000128442236928 7703804254013852755822368220250112 -422374101115283562721563718711246848 86822598898861914110149884116992 6383827925657816784149119179423744 -214300780518861625050161511170834432 6565974805727718204790655328190464 7923864093696101817104731033567232 -261870350791366302073507175972470784 4902034778228679733276936687845376 4156498451164337777230171414200320 -461675289768012491812232165364596736 7742850784531473768576701345824768 3206404233587623293723617878081536 -463770762619159887078127002982547456 6094381826895967148558310837321728 3812394689722669960629055523913728 -899190603998788903681285346214019072 477068080082987226455479855087616 5963120311503487191174114170634240 -428225769189903384829273185821130752 850056478480270206275760838148096 5874900775332911917669584757325824 -899843607219156187764802693904728064 8770657697416117193263544572837888 5835452196242124927495459534012416 -160648522356131795389312875129470976 287738940475376954015729420599296 8953014483644920949722507439505408 -491802169607817928260817993571762176 3363390457080936971955126948331520 7498330740956890167169892789256192 -235427421784904801718554324021280768 6138967364996310507361022288855040 4267779866308555229069825466695680 -17346954243935698182723081213050880 2192259712409688328063221235712000 9138343354494272569959849320775680 -392931758749169420465735342940487680 9595699029555576350339349623078912 1715661570591215470947953794875392 -979584360778825602055263019444731904 4773342425402529503908043195154432 166892989492994117610375091322880 -932505276178272546091250892899614720 3521860266035259542797903718252544 5811211989973125198563773371121664 -416550434352918633641999026622562304 5864405740612488608917744038969344 2166663751659129116341846107226112 -338250298690404671299130386458607616 3400316464341319733616752520593408 9707129657516777931515117441122304 -592546381901543824090150403949199360 9506820407572595038862332672344064 1797356649640511017724424973451264 -808094094858363753444892777197338624 6470340656596235514351869560356864 8013228887246127325158502020677632 -456277328587839255715426235836268544 288888730870332374265127300497408 6797986062685771279053656109875200 -547720206047985348777024444822454272 8627904330613269552917989948391424 3102633317650654242723056999989248 -865890453416854237312294840457756672 8268222675743946701450943238504448 8340209853229690021045575207616512 -469831561692511176376466176460455936 245724830725009027490471900872704 3317534684452119715662200399986688 -563805917847609594131438313068822528 6171021176417790008352128003735552 3176126239219035965823302468894720 -35024849177945850327686856384184320 6541521268600846954344813074317312 9078562763289212700459461991464960 -680624049098389969164003309342687232 6343651563600062625657476196859904 4326703802871710737606672532897792 -379808102172708617598300013562167296 9729114207190461995720966760562688 8260172653823719512804550718259200 -645416975781385094360848373053915136 6853909701707376951772395356553216 9293507101129509031201123898228736 -209417789636934553725675689675325440 8480623960869076467638930795134976 4716334544718589201716341662285824 -508045043566179056384615448957681664 9485348064143033931087299284566016 5764015159464360796718527244402688 -793639618582548980702640426740350976 7760381054977980701020728099602432 832708226699277645150315664637952 -374548695618417842023609530998325248 7054113526494854093406851204907008 4577677919362923092070036787953664 -971098775825822306577480138694328320 3637447140638329591680951017013248 6598873807942754247487477180792832 -187196013331819764606488222736842752 6537215750834174465116869855543296 6743257401731016714663080342061056 -392985158824498981811284064065290240 3138086448037158714693352702345216 788597815389794364366634136633344 -523998190544058783788322215189020672 370482736750142027325315265593344 3489072427005930325802258326880256 -257946562191861206047161655555522560 9193255848541707470927343875260416 3960143355174255583171574675537920 -99361304623936582591824550042796032 4737275674756749638562751566577664 5430909493125529461118241922351104 -74180933811335647938347026052284416 213395400094001067964626869682176 9823142134669642995081966390345728 -961703745918643305535567480290803712 4258555753912762682611009102807040 6787286809236652598437433042796544 -143810738162681737335731154021515264 7631269153901407918113415961247744 3926741539777919939673914683162624 -386252229139364268039463015368622080 4985425124935913125464071502561280 3649881653180908679067114791763968 -963300508787084381253421141550170112 9644565272625270848531498014867456 6172999841419660249364868414570496 -697164616256114092690225951078875136 3548651607058569916815653837209600 6968107272928795398459587066593280 -709315353588306748682027983318286336 7121830503443015572863919782363136 4421024110842725688002034540740608 -641374141340402637121365020262793216 9368383001607958882819214772535296 477053302046480607030675647758336 -96277092031324011150799088880975872 6721346980283741525809856107249664 1085482424987261192400122228506624 -871007858734558947672938764176457728 1844916340094512256715265578893312 2495008256519470767186945587019776 -851814738955649470220883533915750400 8913946853671622489643605169274880 5947308600228368251395155565740032 -738301524831691608213961598893555712 6747044308951285306555723000315904 1309047797784986350172795702345728 -278615122015936380986825218558263296 6958757475669146824380388592320512 349499688734275487077039956033536 -210989824662313538139630068354252800 3639968096092101561203678037147648 4037922348371193745116384924270592 -67884973321726526157359634792316928 8073831996302205818089833903423488 3449614589938424045112588142379008 -21125772234855842834583394266906624 2745714453709063712524916947419136 4169081442785564811421000952446976 -847040875206834892138113301796093952 6118155889522006913751371921489920 7978749039491613113549561031294976 -88179813268586155966631103353061376 2549128803460884392660696433688576 3552649379854316482227912273035264 -861137459612522252969814783078432768 7270326382737618519085129498886144 4580335105553877498608809393782784 -984520111336412634097416812913229824 5125737961355276405221674423681024 6835042201889991882763305838706688 -723451639368046185113944669540057088 6568536016684398312533608030535680 6804697611832482463773744259137536 -172919398633044414559385944458264576 5460309085593721701097152935100416 8717628903151649712327219667271680 -509481226195646955075883568407248896 895844063618824558288936948989952 5345842958029305894407721757704192 -45726658116538632733967271002636288 7350252931674594874908353505525760 6813504779398766246403468225937408 -879372112889200133469010426626834432 67910261412485106160171256643584 8548448657833507847590599754514432 -320301568315776412559289261175603200 1309996923131497780548199746895872 7044857200797942454281733981339648 -142573065613093223424023672685330432 9531849197608875432386156302434304 4533862760690182445515010041970688 -274852030361437055453133024635387904 4069962413294415607481266008489984 6582359642267117186191731571294208 -889999463486428096007434554180632576 4123695735797340697241072749772800 55236638089109881788562029936640 -349773776003127653622660268933775360 7745730533533518628057649409687552 511217081694636029996722764644352 -337131759852923293854709209251184640 5684063863746908764696093732634624 5783098914487517356414798993031168 -614875825878905489014088500577828864 399374448781941286119361461878784 7154765341708676914841662187896832 -151765031011601076663946304366313472 8050205321304546438259903672877056 2308585436278785797711554121039872 -567726746269946549582559621404426240 3445718438365603361687660962775040 4051088360274796621169842876055552 -379013758670805706166297155539566592 173809214829706497388684049907712 1692017747367415755125251263954944 -543781740969988938213248859396636672 2746966226091288066672458725326848 8789656379186052861461412444110848 -341410145688110889020882463668305920 3444475604637310158532023274176512 4956045775308605497742692116856832 -493289527626284654858629923957899264 6863866995857670066606070694936576 8917284882090710661698742690775040 -748421872729558581147758286178615296 1226571736575157188040147014254592 7209543003426347964066889530867712 -478472564261309087748459650300772352 7293405506634360706219508626358272 5697798236116216886056683906793472 -603341198738613828190182963025018880 9076898230694279048136351002132480 7087058499270704213765280025804800 -393415519126145913178370118869057536 1577622863674852728015309452083200 1129544073421720476591071512494080 -389710896169638324547299043365093376 3273233423281591534623298764668928 6367213333011303628481976462213120 -173909073821218625584591546362101760 1665004181326268501355804051374080 497719810680832363150906805452800 -821571469803953176876831245946847232 3639740258818142121106503502921728 6544317540807623069754512134635520 -692255359394460458200010552239980544 7912737252847189443378774513025024 5309592429546254019755726637891584 -301525395219312771912777571963502592 7897352769811721022207443706314752 9072563671019518221279758322237440 -206322924385382863237348514959720448 9626588361533528099324755846365184 4077198329486994315582578234490880 -359410648911030936695262950207782912 7885353325003434873210548535689216 3109639797058907492542695927185408 -568362131544834781066141928192475136 5748182466953404539767167672909824 3945458199640249544605779416317952 -688554198838570011100683306931322880 9965919308755065597340388486545408 7876580750085140828343512728600576 -798234189053793411730999514752876544 4190000031914877524349728212385792 2395315024127626618461864222261248 -870026565048477181029564261859328000 4803510998890907023782365146120192 5709185993312238204659918887190528 -527396908410482673783915077473140736 7226088817483401599918707044253696 8367895677504555668109969353342976 -416223596287790943905016937273360384 5041713722315980227366093085212672 8896793347725802315798268969222144 -554984585333477936451513494672506880 2095248687818093150080885946580992 5664970668114544574172118787293184 -998619654379004702742841569295990784 2081234358221871940572561214013440 3585018602422100384359743464931328 -201636558569360177187112460713197568 4941137998655688537589419123671040 6555272265718145968506470395805696 -522871804488540040024321081089196032 3544748269898750140600077835567104 9874287525346852121764265205956608 -657384352305947033380731168699187200 2396721371329429355394373150310400 5972935787235764448602525632823296 -407286607642210908684522440051654656 4347815458495135090593108997439488 4600652331922620210840935667335168 -324787859085311640846162624048529408 7753178104295320395940993014169600 5387396341394713087235300115087360 -260300964015551601195312198113558528 8188969632943950543251013499879424 5786921048344740054420008644640768 -436948477403738808215262928325050368 6922698163916306788327832974000128 7587370721140549764945442655698944 -274653385330540145428582730039296000 9299300758895573858329558956113920 6308028044162616439321880850071552 -252646750688610981959095253532147712 6741607654881617264659371309137920 532563872294030295702146450980864 -287134252297361941970188320435601408 9993682801122740176534979804659712 6527648874038278792537466797555712 -104078279516473126758212439944200192 9971946357587405135457380668014592 153139866334764798537650449416192 -205925478977450735895905547140988928 749052640889621077094740151762944 1637094511000319787239904209010688 -950469358861547855195126527873253376 5713022816218030820492029879910400 2190021822767412049118582196404224 -957499882835385835513529693240295424 4773237839994348041308468712308736 6779676036615103943076488421572608 -650824238425382186455307439543681024 5288610977988340923971298884845568 2795803365892662770137073006411776 -214310046102586965085744542745886720 4947239280120426440545531502526464 7270639288608185787061800393506816 -271974333333146371183008907559698432 4387693441017081940803185037803520 6940582984986466099970503006486528 -677341884474953728231828435050168320 3470104538606817013494236164653056 3593910797143436614107430775685120 -788220755557546151272704468502708224 9062828397731702411911972706582528 8333515532139815486623229197418496 -403352432145790430795713722345062400 8881699921948841157984869039472640 7002841373317369136024546917220352 -41682252883996714042184798501339136 7833620635782500025276941396344832 9382095932227714929001413226790912 -341484357282568799719327293425844224 3047144635852525430313908069990400 338500614296181959774709888319488 -614244998867884106657867348708425728 6169392687081256829735345739268096 5800321367841425526349908712357888 -203970126023729935315440576753565696 3423053987409896888922302901649408 7333966719888553579314368554729472 -554646206387766512879967341469761536 9378074115709713717832703266521088 470372689065721192424048611557376 -276799007798276366471873585800544256 8017205896775253129418115263758336 929234613217349115216286984437760 -926032928142658643696052570649788416 866372295489905038244505565790208 318971621691816332292014037008384 -938787346114912174213132705981267968 9793262007309830285097740749766656 3841848509870266279703653300305920 -455686181785617395191084877143343104 5161437329801756674150676419313664 4833070150550661562443896635523072 -380820038985786299009101886337843200 2026947328965080713551540687732736 2474394208683735707551860395081728 -31336860869688162827155591942635520 3519416060699275672003965523853312 8430405206832522045162710963847168 -7864361993399633570891599028682752 3180880090785861280194368894926848 5942940801819066444070023889682432 -318812270997991792267401337937854464 3999132698483832882140646844923904 4501903165331218596525285788614656 -787571661151222030952052496619536384 2574198575029382172559942340313088 4245267851765857520730351670919168 -366318124068572227973193884393013248 7657528736532291179429665274068992 6821844612122447807367701518614528 -585945447018676741210174799938060288 7989614385259862807161584767467520 3129461401938174555975559147421696 -946185843683531614891989695729762304 3280712525809168939772109721174016 7667027765079391045894071916691456 -616601488741947846974233722883145728 9896416225239042448499306420764672 6431521103685371271095595684593664 -449436938406867435787364757160329216 9845616698233294940742765749731328 7854526732577629160388262503645184 -415552776835430139944682887669874688 406021040139240934357840923983872 5196937417793355601580628100775936 -124342756668530175477935520809484288 1048299997610335056578525425303552 3901569543677648214447653314887680 -799051850473352624489417761135525888 7061611785069662189451318698967040 7342096557465397760187935135629312 -301547280361370921807806453380022272 9849784720337272432855258819985408 1027127056097588121208448618594304 -141308808576674744820299101930258432 1532639059412249144546392914526208 350093692432602837477003225989120 -302691361802839481591600518812139520 2334750965560960194624081692196864 565594318924800367225776086450176 -729371264850966169137347676243755008 1678823075842945925000618364108800 6167988194299964363806628665884672 -74063774668772826438298196714192896 3609334719060361617758454802284544 4052394242116586077182407846395904 -310238319980736544816965620766605312 257770058805015128034906118029312 2075788791521773395002207179374592 -649415685230530570553578571912183808 8116626848721016651645305487360000 9286828867495620694036448389627904 -605533636922932870063699755882512384 3478657003786762129148775084589056 3441528870106085457831785666707456 -463040561872290580585279100775563264 4787502275996968803510845184147456 7805639798362982128050682743226368 -547294356929817258292041328275488768 5407684155933786364506837490860032 8064979679453167389011172216799232 -248160341223167604935723791071313920 4877066706109604380347675946516480 2632188328600541228506016166969344 -334648433354823183081195470241923072 231534341764526936988856363253760 1807705934632062333992951183572992 -490258130374678703276836464420192256 8960328763279504991863532624543744 8412635788820279657987965087383552 -858197110260019122813911731196133376 5125741950973953873636155786788864 4113886587589056749022749237706752 -786551534527484180700885298949652480 3048762849487938600381635610279936 4675321169155172188648092498657280 -204699408188871742719217938926141440 6858617707038050872001940043071488 5000616122405105917647216940417024 -462593848634590703756064554087350272 6869299896748340900392277379121152 8183818491497708035642709520678912 -609376936731370351133220809176252416 1191012745093519617619533878001664 2593128691678450075304006598524928 -288514251955854347247230291367952384 9271304653693930002196735423676416 585648759263862147895080612003840 -996712727808859352863513151325339648 4277314858283359254935590995492864 9482721806409008251395814432178176 -237718636855650855272750756069900288 9987802051520925027253918244012032 793368572638255615791150621786112 -566361915973887182492862006647848960 6010054306831991372737703718158336 6628106070794007654467042912763904 -306705949564664238239405892138172416 75317133023928119945145937297408 7021944201504646778014913777369088 -640919914732070302063461737697378304 6782017616817615889740524786024448 4272425041494947146619189431631872 -747951105633752910240467818733633536 9064254171152943105277875378454528 3364008036278773528734409609445376 -817630325651113758806809231386214400 2497582996005193110457871753019392 8570243131377827067472567389388800 -181806942167334713146490962636177408 7269945742181480205683713636302848 2961551119528084933526013012344832 -6415508120003839893919081846276096 3507649650849531471486351891759104 9238179699305560230725597064593408 -57418343899700266827477580169347072 5237680227588484553960685326827520 6870110255401814726195129717096448 -419468999463899414537980645539315712 2808936367792376262267820000149504 535836480961775333646083129606144 -334602508154696777955615302450413568 3496323647765579039335017841950720 3224468468298182408846910781652992 -401554241350806402304167896839880704 134542020415470302816795990425600 891905079145689223551011073818624 -35936900516376649958246363177156608 4846787032399953567036387327213568 3489022248857223376627918828470272 -806192737144453766554309027797401600 5055039773843537965827770810368000 8918224642002100594236267377459200 -652618520871518724831970064435511296 2230809089548513693256157549821952 3122655446387435903330193713922048 -524666952916001230794529283212574720 9720561606924413391412747313348608 266596015549360609574637147258880 -670044196947919646300821133820166144 7631071789227272051711932123578368 2950614938198707085283261534961664 -958487977106778713566186273123598336 1323891826318597880171094261891072 3628284185150582151084525339279360 -939622654155093497740982908331491328 209427984730649799240601781141504 3129673882442070687049919594758144 -883983292703430990547744683565514752 749407873048617632270157317406720 6554157407212645546715866730594304 -534849307058136579620743528113504256 917905059505559424033487444770816 927931987255899215704498464882688 -939777364970776983766130585092751360 6746833599984787820270959919628288 459913013015943841466526698831872 -360064055909382945166510137012125696 7926944016552756252765364787609600 4065116777214940319178829129056256 -357302043527424360839143911281655808 7731607346372594106306134217326592 157908669413342505610526643453952 -134070305597897559057358644278460416 4644571452776018756779253361016832 7337137440213577611108323751362560 -555356694238764781308110569933373440 231850112070974800862063647260672 8897223702864517220228432775872512 -14829895475864848655367342074626048 7374169706118379885108818448744448 3365791362898063115454635608899584 -318703787184816208048330784615956480 6561804955382724827330092365512704 7807756364285859561522171794685952 -286861974886314800008129474121957376 3265814487565367292624494806433792 1065004882717528754822539269636096 -948352888319854857952577290166599680 5150057590232234108223602504499200 673985080033504528608217551339520 -361447543883628241600123922391498752 1223298722649101395904792602083328 2296509605169466058724626386649088 -225899827521176845693452296539602944 102093800416718139447253764407296 2107757208919029763536240183869440 -269134226923018504602024109901086720 6445889311527138693218119584841728 8710909710956632782960312799199232 -899218950663674202922789599403048960 3028273121841171447091068825239552 4421007863725343979830662844645376 -705966652682265812562272312023318528 7065280189960657669913874964414464 991042316028930682938106897760256 -536838935760714041753765473949843456 5286207603836407938180658323521536 8648260977393005719805981162995712 -249536321651731656365077206782705664 605170873238379418188994953871360 3905291347260960831956223384354816 -639460603421306927307902629967822848 7414012592432863630701852809494528 3018007545427953477505835092410368 -284251031343088495410004670134878208 1514449700100925473906672401383424 6769207626066755087470463828361216 -968963620150544123817709514294034432 921874214121993839675351645552640 8257350013803222398586962004934656 -94920525456256864990554543206957056 6973746477147536708403695498297344 2858436337427917211229053580738560 -608835222765080865165097614207614976 2063375914122671781245298686296064 6017898596448681803615625048752128 -381370849839237733423263804567846912 4684433439882326595379985874157568 2669423253561026738243354625048576 -903362247643476315830654523485978624 6890318042419881620273672736473088 4889360901599362736575325977706496 -807080431137457038853928743478493184 1489811654450854426002875662467072 8706110332476445943353622415802368 -294634292622813251955904425091923968 4165092217199290148166030392819712 1860790628207971021520436958593024 -675774090731018423529533239405314048 610905412597605943483306266853376 9404850460727303726652060883484672 -480031677011165342276261164248727552 2570581346092811653669232213753856 6599239025711984731148286789943296 -695411357848677527188465729379762176 5835683312367515600570362953203712 6433094522541560482058335946801152 -752369397129678837870864173033848832 2776372839984458798639707030814720 9049210716316910839909645258063872 -15136230259069108925437728780189696 4232115506529816545458900814528512 1176517830006884980297595952824320 -694198454702524366609369369692602368 5031560180965322048963755930288128 5302958388830956832712886769942528 -123363361796461076314605039705391104 3379406664965982312978318847115264 9214132398421063682424395557502976 -266241212391111379242464237057998848 6631496319071408974254230657302528 3926695936086273088586903260758016 -236842502293152420446593785303924736 9378005865255019587131752249819136 976764544891188183742225944936448 -841250389710080534394334578420482048 5169265783664199569107689293217792 9727683229979812205379773909696512 -133050898659500175537497822591975424 8718295036895918613503397593088 3084731615474151160402145651458048 -123869366163228063972242285333053440 1470109035385668061404546629369856 6775095417012225957998718921736192 -428068759007425193981097575387758592 1084405072716214139982467915841536 2882139343471201277318048776192000 -890079854891516121985281123267117056 8521519589364435856232722951307264 7107717509100096262913127157334016 -343646825410040022065958902921428992 4228892179558633757177939002130432 1345479305686277905947640062803968 -238736433127055756495653552112271360 785429686276030368634886535774208 6578207208716267893944472213389312 -961182879511839983756231054467268608 2475297401858573417348341990162432 9682176886912359866181464704942080 -673206467383667033534347136775225344 9478615308082247126945573717934080 9284902958039864491751572793982976 -418074304151539175840949429187117056 744040086556341416273797382668288 8901161976570406319529606172901376 -520192652040223362415820283882504192 5826896447554136091705036515573760 4409058825796414070710925996851200 -6930650324433551344086700028592128 9566076992496131481727422116659200 9444556443926498580414229395800064 -234527635762281495355764216529158144 9086923429952974336295297070661632 7551103317655976672983123270565888 -968607086375551002634986570836344832 2952121004656545769687602887131136 5675766271376133443917265621745664 -52255217493335163883956842650402816 2376665811912395705533237991309312 7606153525335321397703566837153792 -71741648414195218557360053535375360 5531034661695989387021524517519360 3687145038263512614596095281987584 -360610242563721970008016087693656064 4412910807421735856951722273406976 9850531317057587593764078293614592 -556729414083366031958248606402609152 5161005447274346860846989189316608 8796078888052592785223751749861376 -415649801973959980359938553776439296 6139995484721376039986417325047808 2604087516718463638246362993131520 -4037259774876724378170144099139584 5610977915211653526411537813602304 4180775406802374033989792780255232 -433307430103055024498320553694724096 3421096698140734202370162044174336 2441331838842732407252810066821120 -896253665216631046872588681832562688 1367732430173423034440309431861248 9137843100239918083810212825792512 -419862369061748160884193190372966400 6345474986060865416144978987450368 6051381170051947295001888115654656 -222673582256827454942588882753945600 3542162152500204033890985164406784 6352544108324305605782008221401088 -885290683459371272865322108020850688 1901162231951342990963974495797248 5726747216790958968682226420547584 -621610787339194674219816248680644608 2807243981436584388867838164598784 3544742599334808840991555029303296 -906034641676727284864353889916289024 4798308425131881776808646280216576 7663423759162929010668257419460608 -419514217093783416135605197540950016 8854389408511835356975171777855488 3050567392178542536491769182289920 -386420914383311798672257066842718208 6789766822995562216563202569797632 4066251913898053568934561959641088 -192544837028035937081341847659347968 4571695818710388461648252722216960 4776828794761749416278326668951552 -307063412656479082974774933321678848 6170077446806399260198225890508800 3433163770176191495312476999778304 -164559051447246695670981543023607808 5096141308117683722533922236530688 4688768750161689845573300422443008 -80162159915339485154147231063867392 6347363763860366301117830232276992 9104624427087690311947061561393152 -219986006441109341785426106658062336 8277011247526093859362350533967872 3107928032030058767372908083806208 -540544125816431282835910214719373312 7036234506418128812250486202695680 4355699865476212841515717771657216 -376675029973260709136535229413982208 7574298744115192913702254318452736 3681186385733409771585073032724480 -160187201030257596300560376965103616 6873303840459101440701275675033600 4016766575003264951458688961347584 -797272044389575791532978242406318080 2048328061357238287204954033618944 9763296416856537204102810948337664 -562578570544378885014011456425820160 4199057476310395158108167349469184 5766529191794314869303219696173056 -940706290034214066386954408727412736 6438614650354083397268592750755840 6446223774314686601611015700348928 -573151629314493517366996597284536320 4448434704300109515616857356238848 463853271571831763308819974717440 -900489463731450016483999132856352768 229232748496912713997065868279808 7874517998874330650091169754644480 -241701923760632868669517322556276736 2527616089360990904883246138392576 4508453756878952356053488907583488 -808727332422197226705061427091079168 6988503995631366963395246528921600 6617509135521211603530735121596416 -50929281930165896957905017805733888 3685668179479982061484278546432000 7558472431331225575395358708596736 -176825161978946561098694595878846464 4222316182666171389605140697710592 5747367616725980224478548684963840 -860214149410641077617380262242418688 4189574206739256348791777091649536 7664947509534709498521937967579136 -608974138693767047229551729228906496 7575573278427891383319312281370624 7868845760076409663346586607943680 -535519468620390813501787817180659712 6924651279330109661438541337460736 3901423835390331314495495671382016 -981478241772333178592537869748797440 5435332937540329432689438065950720 5012694495575105106940824756682752 -624233461609237254445284629002846208 4442644831997359700313334773448704 5644306996288369754716474636763136 -379731742867195432167607463042875392 8342144491079191787904116650409984 1587628223746773524094697242361856 -808573018179543413103440020732116992 1153053365168079334758686362959872 6986393990619749228680837892931584 -128522043724724430734627382992306176 435519760920261993212781573177344 3630986477734523451257931597611008 -896578678538337586113131712669024256 1962995591809395430946853535875072 9563038149472856180414017970372608 -226217005274748629530712839997620224 5787700010318544613914835674988544 2091232392964077956279840593149952 -145843114746845315414982282623057920 4703852211851299117514062733246464 4426297622964667656849155724148736 -292963696937571405394300816244867072 1209387039709229685568294172491776 5091197936027973413475901868343296 -452749862703072554037820904697757696 8135439743228390186311269700599808 7227550156783061768179673821347840 -26439190893938617372022135662313472 394522141499458293547942281216 2760248534452536101874476209143808 -215911823148087709703435671123787776 8791432750397211359214854834487296 4554072346873352148018258075713536 -986236571951226981435496556071485440 5132907132958980045835891493568512 529202180835709452413686178119680 -789690455145228783523990123443126272 2134303670452427026199469145194496 748892846862581313849048841584640 -445064809037688832255467773986078720 3711428253960485864255993684164608 9868234334379035651696142856486912 -976266603261898792195883326951653376 9707331306557090265898464363675648 7045162718374362850773967430483968 -336658859006359702445350274419654656 9883404169428120923055023177334784 3656012619699937441509273317146624 -588611687461369608682997589102034944 6078989194200311509735986935365632 5664073429489707511339451028602880 -166894998019277440119328362828136448 420542937109880178756583237353472 835209772799876169662665897017344 -868458165404966583986801745755897856 9322310256901295005966161126883328 9895408009113395582888193596325888 -134432090941766646612915254030499840 1915228144364500838479383637262336 6932114024229489280336302310424576 -428446205667277806758412924351414272 1866818040857066797758442312302592 1630529271845570914185580461948928 -243656320712264369011293300218396672 6752068403911197247794748904701952 3551370519733886740328210512216064 -244383708203404693112958921912352768 2653521053378889571946386274910208 398146681732827185420320565624832 -331386201688897197404943371315707904 9984828789514587275596603609579520 8069940815287518121666510833319936 -81663581002831222262298375685668864 5036573857428987017388308996030464 5044960351562052815113550102003712 -88787179740783133713214056150597632 957172085101162890932878951055360 3059063043124437753528825866616832 -478537378241291238646911268097622016 3632113848492881797821036138332160 4580601902725113329512848902062080 -311227951923597925935565140865843200 4132322180303741135389635465183232 7311257015244105276456586874716160 -598664804231359816037585947476361216 9516336354010983298990615344185344 1220910220178221768336817038295040 -946645458961892793774057161259745280 1889078532115481510924000805519360 9316436722118380576590162751913984 -168978457821539403331781257655746560 453663883409108129010313309716480 9631132317702893612394247763263488 -902252297179560814535901172927037440 3680512435948974715692786540085248 6952685873153873768777891488727040 -254483366038059106016419857737711616 4386393928140842327683745640873984 7065967613018728939906928838967296 -102901287016365033521147790932049920 8448002464412408588148343190847488 9405840721162600312801900617531392 -911013425197976953163736384547061760 4181625799937129030000284956360704 8636108752273630068138787884498944 -30172328746699370760112187151220736 5707404198738253131667610007502848 1707443072348370678286704271425536 -753676527338674234061333755198439424 7316513598713322081731502854373376 9781061759314582102268683965431808 -484370511168708532272831093868068864 4479039963503609119888774954745856 9513111178880103360877461275410432 -787160541882080334589608940242206720 9479216058376732640177229557399552 6185386455411031218491510822535168 -871140229409800034950743896239374336 9990321956965984239635891067289600 2272393792815306555922630660063232 -250967472773962916555194203818164224 4888501313452319100009737116188672 5888850303748699339742580058357760 -628250877806832555539012856821317632 996107989725080908838303805997056 2615179133982834047234839500816384 -781601641920137508468547731660472320 5208771791059323020529567042371584 8367067235783653279186157895155712 -54847935201631595941365080936939520 8938013993742893530024364954615808 7366764492325122988858475364220928 -448771729066179048091022258513903616 7351796201910362291778703763439616 2774079450028239522584477560733696 -413310051178820823772372267169742848 3655279503962283123234463419465728 8049857798210697410260523951325184 -566163689596080811325919011201351680 5079485933437702573462018613837824 4204961782941255521253591567302656 -731557664610496122580602149861851136 2475680868461449375490224357900288 9735334905907083431515743808651264 -53540517150551716035812432872996864 178964626828273787478064498737152 7590596849583180481549859519725568 -443336847722660045244552087573889024 4932274328469116061489602385412096 8688460236467335753038563947577344 -801132388754135306263604213485404160 5206259462645720420390602343972864 8323232987080528768296275991855104 -52974734916246129147021368919851008 4715120402895481044577022541561856 23610874581143533671191496622080 -806581358167007005610540961007403008 2529542615939446675864607459901440 14803900408782814375924299988992 -624191159066009272489449714096275456 554996843307590721962716375810048 2146842406190631107386510160166912 -326176606603519708891052260343152640 2711860282609580548215637219999744 8602704436258170355095980826689536 -680906812782208006172815040077365248 3004345219738092997961694494851072 4115584656718440793374611015204864 -93993496141889061678849369256755200 7446832261027877896523177344892928 6865001461766875477947794585550848 -654173251708639139016945447441793024 9279097615403824300891975463206912 8354671686190763876903450681802752 -459277891021017201455767287318446080 1000312032116369071677618153062400 235692333764302762306554879279104 -166469330772255455123564048332881920 2828452286276589841247983028404224 3706073274468567004945080574279680 -82897092631714451094990141236707328 7080844413668339239083464011546624 8183538575712350616486884130422784 -609855595365593940486727929685868544 7423710924405933056377748379926528 1847043146381779465415578754220032 -372569724019726891869286536132427776 6677696702811811828604155891548160 9016071273982918583522325948268544 -798203408985903918386062182750093312 897097220594615415892703277219840 1949026557343471432292485438636032 -217157502867058589032283280521560064 7174947909222901350450143206309888 6807657788957231685250573047693312 -823426334608655168299177165373571072 2243437216638642715617618680610816 6937973531580500594488128915374080 -58392938061266390505379482688290816 8206837192224744181749907481165824 8863932900149733350868775115685888 -294135534179715159209806124407586816 4400271026141748640560421953077248 3644376007209179930797598853562368 -22724504152826192155222973370859520 6126296071869225459423863159914496 8214878794312576022516441244762112 -255776243476473297157720866599993344 8379003382224916309581382486589440 6570399947954048824821919084707840 -101056398430574764129076249104482304 8122972808572718791893337874890752 6532975712730863330355112623210496 -126046901517269410543539264512065536 6426058272143493469854497859698688 9973302792156095701595132090384384 -920777088114723829374352620158713856 3193588549301731821211090893668352 1342091461331038677056107982094336 -25790641811699777746360899477700608 5134641738144799431457849431031808 4051547002060383799812274455052288 -798423725692302469358673207324835840 3861743260588275480770752414744576 8973816014950547004414614910795776 -287731841302358021140891459091693568 474036266193715189778843271430144 2362833545475655668904174456668160 -417643906124594585058917365491695616 5758895276559269619546471851360256 7053608863549657573451504879140864 -918521547983146408714991121698127872 3043725093965292499875290392035328 4429672208963069321677066182066176 -18314727730006323930738887013433344 9090919127306585680303810869723136 3849823381183073693648764973088768 -887387941033830081594165470611636224 6042246449008077672104858805600256 151798251244135584067889909465088 -984541943878067383894598520240340992 8440469315389701342780975745073152 514956512488272345705031049150464 -915791856565748876778132569031966720 1357456653233170612835092510277632 6874620559869300129076532737998848 -421844117875810352380784100077731840 843221831024347804650769519476736 7612364961418606444138625283129344 -800465212353793689073624065201143808 1294756272439960430895943317979136 1515207981691217151468158754750464 -291051653749567448366431725076611072 5564149673519881965358188213567488 4060890877054349530642426561036288 -157073608169939551428923981113065472 4851895448404283054193274704101376 4594021935479708534836896875937792 -9313603229411497005868926227185664 9879263648029685642571230776131584 7789802149107746407067153644650496 -192555634298019083617178161019617280 4492323848404132649719843375808512 7472448226731431970448738210545664 -349735373223788012823312751493382144 670862580634890048894016180715520 5654311639488218879687431381057536 -817900753318412018165441472566919168 9282994732498050092916036394287104 8103641846915769185264139101011968 -754389219175946724743010131472547840 430691819516167800283804391702528 9051163302147734798931703776673792 -650597596832113763726545679510667264 8446289000123816842465716683669504 7699077600696045448518626244034560 -174607488047841625557884947516096512 3201245504348483945199462778929152 869331408792087114920017119936512 -692747120040800546906023139039248384 448088068149530659986142490787840 8786661805859651730278222189821952 -152338087700042352390171406605746176 762603605343239439402070878191616 4410198957612951176806778997309440 -849673824882839425412357021759438848 3135579682729096936222833323802624 1305954001052995703995875136110592 -150754249257259229637602954297999360 520273905915041449280430929870848 1790638215759124598991995988344832 -639050626935543611019025912430592000 6202484749685579076818198228631552 3991867505547687651271673944997888 -771811223525184958550152615443824640 3553336377735400057001068325765120 7624210070899409206103362005630976 -839805790918166141438143606535749632 7257516804954094540691609227362304 5750489159760428902022638762721280 -690514637745130141306975067003944960 7002917773432251637297995636015104 1812130409136898409906797587464192 -856220455213623140118470734546731008 4015796775378066651282375111081984 4742348409715233967890502854377472 -811247106915341110861456349222404096 982665804453683645904221661822976 8384762817264573072739821124845568 -408603307371865772761843389285007360 8841733030111560834957159654490112 8837642665338957234448791492362240 -222974900102964576359142226569199616 4049656713738452517388916742946816 8746542632614146819501679127298048 -786435626899245518278656871660257280 4811203214307143429650842543718400 6593122023660426704587594848534528 -552444993658464563593953315022438400 4318715772951439879622517619425280 3528018915892315398416407327670272 -199009617102738093838180618267000832 7344430777001467575463394005745664 2479106533717315464392370311659520 -537071131640048240201603472909402112 7740433878798082947118486519808000 6570738403412686919465135847243776 -661550952633235712771390461821583360 8798358732613503584945733889949696 2638374557389635840735874354511872 -50338825063073427627437326310834176 9263614941949229807248492072009728 7375012942742053476938045108256768 -725681846061922264861707858257903616 5185110349938425445514565178621952 6614775312775695588335682047705088 -319845853876371333947227954898534400 2145166716704500659637818509754368 3209010022802525482447582349230080 -563000679850003578099835125547139072 1781110932849467091495951372648448 5333576186466805576878889537372160 -128010181584570123184176783605891072 9106534405696441380669871655747584 2845411654196706889931426747121664 -600810962973026781094022703092858880 4864938781070836828774860664602624 4078137871429170574404108664438784 -81513529816745755276324261280612352 3324028668973577021616072545009664 6111934668931436957008710256820224 -707821469026575846319120370028773376 8869677480374597520232675740221440 4388561105098441916386475723718656 -130992891600720008799606808202182656 9561002002515442649587882578149376 121989665556086164101674504814592 -222863068284809294932144222264885248 1153094185590690567549893304385536 7588902616515906712674217995796480 -655051428781386232847096527886221312 4397793284271312648355476060241920 2912067151413009008306553830244352 -414986569657887330240058793968795648 4002171073284365338150304223330304 154246983490799745322261126578176 -577759886532177260106969355120541696 610703278468285459739661203144704 1481773269854218614120296162000896 -395190070271166906136424537449824256 6766980053567151891993403315978240 5002940824553686235008098969321472 -546333585380516192002768000499318784 7576896055189877556518800846749696 9371356765569569655547814693830656 -526603096737563316347845692694200320 1147702303173167699242407730085888 4170748660236305454776962441543680 -584667984614534918167865561440059392 358484050255482065507255702257664 1932743223807162237951838397661184 -380197301334502071449854642378244096 2218323666567103846216977325490176 377891717536249942885614091239424 -783091950905358291054873488079716352 3466528130092856286242852220960768 6550390601642334948598405817958400 -644843373463922338409539615288459264 1203256492262363182674354901090304 7225846116237412565440981251391488 -88184273841537650083407172581982208 5707633853491795722429791383584768 3513799521714048804722891089248256 -461175521647354197870495968012533760 3608026884652887828270211676504064 2282126869388734872359416480399360 -668428279232662731297839959932665856 245416437951269283609536844791808 9786581110343013108402891517853696 -541541310235226731018384124346892288 6070691673951209604111143379402752 1440085853914231443333828430528512 -128511795613901936923246714138132480 2660791821630228801670170844069888 3006923741634717635221693852024832 -226374745267789389214745650094145536 8065869506812767056803954702680064 6718062384289500090107518605328384 -483283024756223001368715346564874240 9551750816195295932503331600072704 9138640661050273138780700418244608 -554391925394919373065817535255937024 9358926871978019341307103598870528 8397764606531616778367833619824640 -776500822020159066697369454938947584 8799684809749797989704123509899264 6743803499169109300657646989213696 -224183043328856214867051009701576704 5907297036488318892415791507963904 795180357775464579556643103047680 -26437547411791468452521218899181568 2770339425238982711926180863279104 8651087679153852564670531187507200 -632689331837258451870910241646313472 4500985789719695900670591049400320 1854058756389675739703709674766336 -888292098378771673908177594686111744 3700242198007773065931233941258240 6221371652751310137553352904409088 -592196262873925849847924761479348224 598052136141738775160429219938304 7068965153582799522459706210648064 -213161071474779036544131929269600256 7317716133892953149504570521550848 6911296314875738179565702290079744 -670202800627472759398926111985369088 1250589214266846093905030260195328 123893427151654507302529544486912 -684789462321919790141435362290958336 5900935508002166358022133951496192 6240775887624082471319482816004096 -238800654092692357744250930715426816 17339208722072661016644341989376 7671828850528346687468347764768768 -496280026274857607215918262121398272 2005581282569081492810694005882880 2571952158096310356025743209660416 -622837240130634232165707614101962752 6622919575333729298321972089847808 5698804078999818542243087999041536 -160636634903173484410316159922995200 7121356838024003865387988053655552 5498302765023855373779384334811136 -209037789193229790422861961349824512 6273641932038223010145712811802624 6075702017756249690183532529319936 -69621569015641798161192040064352256 1581843173102200548860792114511872 4680374998319954422207187456622592 -297615964896131723864063266323955712 1326884219796876029846301676929024 1239426747627494872007519884017664 -19119669750181793640170434735374336 8215874659294968811096259315105792 9264035724445048039415368348860416 -755358373447084295664723289763217408 2686281198308754349396605104291840 1085060136625625626401647001337856 -235788162951119195323618871316840448 386280236356671543685478883524608 7167294764214753954703695249670144 -326626532125049985962221911911956480 3314333948988578185567972100145152 8016135054660684988334133695479808 -532092646695976938816114238242684928 2829716380570164915930148286496768 131900356760799647483058968330240 -623118665809502182805697710390247424 256826232496663698268205285900288 4709890818176534582781026550939648 -147928769645486604337709408170541056 689817755678194400639115180638208 2335444310884715749018062693597184 -376149483846674675120300996660559872 4404931069956782639648492390187008 959306282734989977183845007491072 -179638110512887942110922171159150592 1718780210800643195512822964420608 8616525304863409975488773919604736 -20616774265893987877915560196964352 198345063575707367283805766287360 2472129146815944662931184017211392 -682851671648330921850739560416280576 6720716658498192219625414782353408 1535451835094764457690656267042816 -989032557974724577221690066049433600 8690302638447709212085005125156864 1214255299580662450505163198169088 -821450583268881202264322575494545408 6912715665524237110046301267951616 9138498627715459784259795389775872 -520349846709178666160793658039730176 6482188900685126137750879878512640 3656342673796644469017964208717824 -723824350642769297385589665955840000 8119493896576903566021875600457728 9556159052739987877292571856207872 -739723788537982914799047186703187968 2051327873809779036914041218924544 2771404097886748673705441318928384 -271106080649039278772547351696375808 225342345714530091336097517797376 6215830747858312361760264021868544 -777898821322054566995436014235811840 2678295015099967692731119092891648 1710847205262546419650388761247744 -86686060127733440328644494180220928 6548916226611662224226462281498624 1500059720425376455487768307433472 -316240490404750858307450546432245760 8650094118344246594040285792043008 9406166985139379264866771517046784 -106944549770464642542247828453851136 7396557963787612724122063015510016 2390009527435218882876527127560192 -685903320524810474724606442356080640 8284945140359095451846374607290368 788532484626386418643861363490816 -49305709298176225673391243389829120 1756973876796289940360068880924672 3515230597225861495957395878182912 -785440877568393887417742504711159808 1779955344513493132813458206621696 9843142226057049722165021676404736 -52697314811945183963820720354492416 7800150752563951673861460981710848 5375384068063189556552836357029888 -277385140728374748403098360347623424 6001851228323641115520468860796928 9582931819502036895790920563163136 -151764960776084719572249402813710336 9428145225759534300607865772048384 9746886234884432158467766939025408 -504952448091470367842680349093003264 8359995969008821206052504877400064 2664815490964538496907723667406848 -946573448898637618156315957281161216 7969922319777028056952913707139072 1844725811004468444497209697763328 -381518048969228753372730683507605504 1815187573115492312624882895552512 1762860711377596161639717288280064 -844995352755369733313517375121784832 7782021452605581553122798435565568 7538412705767856740626033249615872 -613389546393511574197556534457663488 5944827072894616094443792590962688 7245869184472093210952203088429056 -185617094905319925328359330032910336 9046737955766045181075384952684544 5548150208602663612062965516206080 -113744439301437343343987132851027968 9726094681480012665539236275945472 5942114986646154612759026779291648 -13155560283015776554581095065059328 95675692531993134970387786891264 5712093342769196513490384485089280 -881993566470197453831214133455880192 151750234473087858073757139599360 5668551377860943974985373558243328 -244642649740658136961911796902395904 1443662356072739990246983733346304 4627472177562015956326195511951360 -583020121037558616992609638536970240 4658332912883532842352755821510656 9136616243456799035057833475309568 -816112583062720190043830425994919936 3775402866609872040633081530417152 5231121864011171608489679957000192 -130136500454435403956337688455413760 4903871652440242315744786994167808 6007875274581586445324790207086592 -344731665562837009172186301403758592 7286791751805702705057297028087808 3700446019187182023907064598757376 -32093066889079639958933844843823104 7080623402821235717274832644079616 9033907946248337146553208282284032 -615938287861026006290377577982853120 7204287750899492851295188707966976 5863770276397761662856897184661504 -912495010858614020760755404772737024 6473349533631575632502785027604480 746693834234471096533772971016192 -697428404974386397910840887304257536 7260939553571084712493218931933184 7954677874464935236125217737670656 -297375862603274272115477070712143872 2710185133467864631542419982123008 1140527609905479050066842584350720 -176204538148494979621448608970178560 175407862502965230808023840063488 126358409568113905212044668305408 -344821144050383958854507796772159488 4960773602959789975089530428981248 8883195497788762913185266818613248 -954822877023056452162828970494001152 6208930943114228742452626493276160 3431534287690554809068976370352128 -277778568751577812923681266127077376 5276002900345173997720267336450048 2997642727465151941464174006108160 -628104655074051414961402881945632768 4843526982083236339397272816058368 588010752730093653769658375864320 -435705307308499010626538294338387968 3687475445415537380935213260996608 4921901228485964290083838054367232 -503248825716624430176418239411650560 151598545612268132616010607886336 7234063745655815957534845335240704 -716123291078903249868404344097865728 5488715983024338382559621618335744 4445952325008181045981878201352192 -961555933989058131588150595153821696 4775131774036877783284150855270400 7271611923437359309025346297266176 -832298487804064529907092634577403904 6091244587849988640287404953960448 1372250192004313123820533652127744 -508652462333843336156045061419696128 5215714064886965053029190094290944 8958576576981530064191900853731328 -933944977643835943389833266976522240 4450651419312626249472369536008192 7689018476510851507949895547879424 -874715574669116923704859142895173632 4781461535921778224655586757181440 8318109269561543146465285216665600 -708646599496386891392614361278185472 1448553496094486568459972894523392 200524263196533334863588139991040 -170600594917923347162450525526425600 3126216092873022279136969685467136 9731302993268035528431288862113792 -585295622191917966588129041799184384 6357710717051426924032052271513600 8234142530948253386246927138422784 -143994922476455808707899617437548544 3880486509285950170219331127869440 2807564733062603450802859491196928 -677644240063922171121932593681924096 7270274694066481172460283533197312 3885851213373131972487972340629504 -968072225755235327047813182649270272 656055542566606785379827862994944 2851469815722659805765667026632704 -632397840993781706001580376956338176 1351236471889875202172975109373952 9300429061442808290645763336175616 -500445524304073243427507130299580416 961639647260469609018343806730240 9229264343500262549376021341143040 -332551131764919791171507409936973824 2444929277743109596280241732452352 6251530891484684770442999339417600 -544745622667257583015518674108809216 5194269581323088178463458423996416 2831099687960259337479152415539200 -24126059550919554985821132038340608 6068809825380349745904996057088000 6984508052680838358496383128829952 -61315759023860410712572603718959104 8228227158018329888349973576155136 4547173981978240765363675027472384 -329085636388999545709244679521828864 7040577326263891205455493355012096 2867835488505798856051826110758912 -452083070455726835376641300097925120 9410688741245559309819632313958400 4283113523392499962669007965782016 -905203502227401925910844962982854656 1483337951159424107001852725297152 8013920046616935327063950070120448 -84392523144936750611911356933210112 6333697434737977136032782902886400 9159885392884113108707795722567680 -722011637175168902674431511925620736 5905633458653350696479723578458112 2047038897907986967194475266310144 -266567524917402254281970804890533888 1077182321235923014555184815669248 4450075609192539793278153701457920 -595651545714185761133459382068051968 9511773023825174574230977239842816 2989199399179357286480337514266624 -494617180742192689144880033668530176 1930002872434703751253720072978432 2327836589988143905337949483433984 -41256966259831491969337186129543168 6220636994206909923956278285041664 4011038559614369131085228064899072 -663429086895201974067677613348880384 3919062779164857773003880995487744 4414519977997228963001802915053568 -972378262334967949228486627531161600 4477739581802928106201950118215680 3662831976402642351865935398174720 -444912848912368531121294556704800768 5003435547986817126743305309126656 2520295827548702340373675620958208 -207148929276800596868954674226528256 3800503588158175545960787360088064 7925140331925155217932030570397696 -822905152294496214856728644937580544 7318597375653938252214371398713344 5598467846803343045441547002707968 -914174437829253506584588291709861888 562755806365116714593979161640960 7657330880664319638325977627492352 -641924692112104932843377566234443776 5414255507695727014430341911805952 2231343580343129766345225046851584 -351775278968497715098273850253639680 8449834497047116813057343650529280 3264220851891795557874005421588480 -797928737887026461088733234961842176 6550028951367206955968019034013696 8937095107608940436719163748122624 -516963466544213955672577864659632128 4763376267772389641690030696038400 7379006847191373692541572732682240 -582111343938452137164547300297539584 3982596664277451092977525033271296 4522441529924143690686481762877440 -725262519042071270805072440260034560 3562787848420970122501974067773440 4325617341523898091647262624055296 -509100269284657402353839409257775104 5587315691201838606648808130478080 1444999402811134974646658992701440 -645136407803818763675752638984486912 8776816402528577917387749657149440 7790853030763287208083569472700416 -982104504389600492757689354613161984 3177542093046888836688673698217984 3616194143976874415325781419884544 -144919651653897338389778978901590016 8863777048194988942567660901629952 8551975996515294274992948369162240 -878882994972409416061514199668359168 194303856174998216829150548721664 985373848880475220274267767701504 -376719267980731627808722886829539328 4749311366978803329541562777468928 1610640308307141932404975643656192 -302827473670627509860435121449992192 64456937393883306830553799458816 9573090464097459290577974759260160 -217170899926214245905821870376091648 8742555261448381562559371967201280 3459150420057554895917801392832512 -629227790205633638828804695612456960 8493248125968231896990642058821632 9145075531821504485943415956045824 -729820023968794357235178881949892608 4628947994045858957291252548108288 7222611495840713085802721075789824 -993500164380806188798139921042767872 4296253996469469358425001527607296 7317808709003546826099167898632192 -662695559308605155200356197731401728 6344953111925098486697164388958208 336831240124394598411095393697792 -843117724246992014408003304879554560 3792452399613595239343788394545152 5875702617457028416943086937047040 -917717239767557937457968796772859904 6778821959370607248127225778667520 416757982455294695360520089763840 -591273889354080859566624904463777792 5372975290467108954164442456653824 2780733173321330138011270706626560 -601692335304363458978047968675889152 5314302011416204587535826868502528 3313095161738570547419346999705600 -67842445501779931773625769857646592 7543289396233123208618159040888832 85511487088171353367176024162304 -990300699899925877659929753587548160 1410200605648117803823993278431232 7270541296239593276743024308649984 -322248112529355634344242240966098944 640432786894669169256089637617664 1359003962238196660336203948621824 -327455061355044689740709445375098880 6044011709426206089430904158027776 2806736536938618322769397634039808 -287799847780922152400643151861121024 4251144877264589691746137709477888 8404191120434886886375652497293312 -841709533734947921894900160387874816 1299837903162609023092423082901504 5251255797631648515220361856417792 -878577774297440343956619202343731200 3666384084835992673179932131590144 7845306949041980604047929221578752 -408068605162631681957473308995747840 5089525135553012413349629605707776 10296068932718510858461949984768 -468534978636712222325532329760522240 7952911897174733994769236732411904 7743593328668683116953600394264576 -337001395037701002172959087180906496 8132705103861426650600950288351232 8412900601141513351701558972121088 -149842299589495711826914424649678848 282764174758408186959281023614976 1823967642182132496442236946350080 -465591683227597641591893021717168128 4204826476283921082692889806372864 6377788774331551994805516521963520 -251434102104191752687000045771292672 6764563548435457896416570251411456 2805150676347040797640558997667840 -646772691089973900809419435601297408 775365058897315412019764497743872 8809640309391600783271249047453696 -994714983366213312660707138133295104 1826492857426789199917182535860224 5660377451771497557015714146025472 -965956964702297986704876064903004160 1390959921033800203281121622884352 825364403201331379618227276480512 -548676297877503555255447375992324096 5072583104596344864956776563343360 6179486050859125075079346721390592 -77502878629299055469088151519100928 4995717290184476179566019215360000 6043246833192125690266303477055488 -410334665762138447685673564369846272 2510177167488707751860105931390976 650049811159155774230013717512192 -238247703808208422782075474802638848 9252354280390125405377585714561024 8743733964770146799081056102252544 -848690242404797547494316261563695104 4434997696794620702340163645210624 8933641108159820104250033830887424 -546418881477169453795782848973635584 8688345955539806153786883150184448 7320745005119846171804571820621824 -787950674927818364067415938383740928 3549316209878347179154641554243584 330100960107440057727278339063808 -173979603723551672579896028277243904 51741675422249055426997097857024 3722232914095844285762955875713024 -880629114036987209078370963237634048 802925824588262321322215883145216 2484640306674523281803462041403392 -966399280397607379396902695850737664 3726671251714578361132879158706176 9663713669167466549440526455668736 -446486319938548759839750990591950848 9418921785741847056042365064052736 5784954789741528758944264462794752 -474329818895739280758576556141445120 2154150077367574922567619497164800 233508490617158377221902410186752 -968396583641906930955848564657356800 9199261652070829303157757210263552 5482807384318277499359844425007104 -144512661870309960873002896870866944 2378247994499058696777241638993920 4864305439844625920550970031341568 -85701436841916520724734220867469312 5348013476802768518970133608136704 9124295698623787419532140497338368 -900017006682981034069813160354775040 614449819674835311709546774265856 5856191575886399140611628204032000 -321354705678945223053576506886324224 1365276923702897555525454528512000 9334918081238520042793600880214016 -866449988669957072042305961829859328 9522497151431844908863086628175872 3780979822470297800969502848974848 -703076765018631371212414879333875712 7905628300257831116584426632380416 2082195120891975900633282885189632 -498529107338679550169074647936532480 8133561061549934840332658835193856 5913553839823573411937286537347072 -382259290972980617947030670045872128 2300705018916384362281922103083008 3791926314837522144086649678594048 -974442582165519850732201322347495424 4603306906983636199137139830554624 5448475935811714343789847057006592 -621801460470935483303063270623019008 7262529431409044446132398882553856 9532467797583521966270274189918208 -459855052499621383354601716223836160 1922513954719727436630120483258368 8211448103243170348724732796338176 -762920935895614220209811235390095360 2329577155828790238286528280264704 7609005690748713284032748199084032 -703271599536273166692775902819909632 8416063154940086230882256420864000 4324220869421515366848288989904896 -641681301779885387248782627890528256 9706690463473506572578380230688768 4741120091560266260364649157361664 -904934709297032422979729501420781568 8251179453397955182831068885549056 32658440824828266323470215806976 -152708650043966074338727730203328512 5267749272162337654056694524674048 7525565535814358075228479446581248 -825628819857274024272064423493894144 6176679156000739530265605934415872 2547936726614854467989437933420544 -208443788489714016591116173769179136 2618265824958524508999466449108992 511693920110876244219988759543808 -806168114341938254235079852792217600 3419153474692616717507134385815552 9989898882663015728750087219707904 -362136134012274918429810513403707392 5924817858616593565498872870993920 9519762931137044785622491076755456 -335698925533371282678089423756722176 1048180526707246712786851362504704 5251265651208190664081596525576192 -213203525224133994040424352391888896 8703175586719932030077189744492544 1021689649819115869040426067427328 -885331757643403343132682900366950400 3191203244403371569728965656444928 860729024874203095762349443776512 -622966269091042250853578804652146688 6409002869077080155025359121678336 637213553948150888917907011534848 -774737810070781889207847456994230272 243298645492018818458996313161728 6449129042224684829826810397065216 -131154378306322972200049530334347264 7208006424531332400370649609011200 9016946094575359963286882150776832 -276832605727101626246931359406751744 8553936533955769583669614269693952 1814013686795289987862780243345408 -815457787609150471587368986161971200 7330836103114067379820932343267328 3569206970977678911807259305574400 -747618570356455058960745428225622016 8808648259104425786552262422691840 9212480967573985954008548887232512 -441802806483556591228906575671328768 630640360131336867509226029711360 2689118271019465621260159472893952 -295863807567024178184252886060367872 5797983393522158157181236602208256 2366535310373445842514405635391488 -119551130973064897920137413926060032 5809618097941199433014605210714112 8726140288498216270095281282875392 -68317638975378785126186986860707840 5526148786979873354225640429060096 4491098973418603020322070364946432 -48404192227712379134485404302966784 183833132296623380959718897876992 427145175887195760032911229714432 -990315815586888088677301500659105792 1983701961449781124831439702982656 6457907181696732644875814878314496 -962448630204282492925518309981421568 4152884809640546113937611897700352 1121682017007978921892625711628288 -723236488044834241688140472880463872 9559885401704446363043600516775936 8290556934464428787296585990012928 -424827242405039426655192479703236608 3299381784418948078053821643751424 1461618410253311564565923984572416 -515059701342435524303389020697657344 6267538977337245904528801183825920 3139675564509075796322967789502464 -664777077516737183993676722478252032 4675419084745479373115481118474240 489745978615298990883181130940416 -722463539416378690121854871941414912 5548725332530794125698192629563392 9504574950056102607025212573614080 -474978484218814864958254701575405568 5864373218750021605400645302484992 5567539834257559460003402408263680 -125941466506440054969491655921500160 1290743310244569975331873804517376 7795303570625318348861672400093184 -697256316365048350747138837687828480 3467395181708130621439693153107968 7281157416791521645689403001012224 -382369991962595988482086861224804352 8829015669726702036551911369342976 9751360592790476760449323422973952 -36074825477683522178499771021393920 8604096941712966135035920925065216 6092159445976121025791678761402368 -577657543424330477480020066829336576 7476788317227417544641265652465664 1191541680491620938725279007768576 -374218882661276086411156683363450880 4389869751626737560040622549630976 631871000773570294073073470537728 -944080490764124770333042029702938624 8933735638888510255695396343906304 8946019409777196203436894968610816 -925237611003553456584766918729138176 8225161469801352589417415157219328 4203555564720731125533460750401536 -555856703891250852048680426548494336 7047794480906111189331604540489728 215685741377655781800502966091776 -449350265970094564105974563270033408 6531015640460718149146354206638080 8447734878247428247442640385081344 -253873086469082125067079425487536128 397435000035701178481788648947712 1474794225134661902290061130465280 -581939233553989303193020662649192448 8366291868931655950817613641154560 8283359067903129688673220282023936 -519465972584521115490092453172609024 615201451365931021261614073511936 3630789223571199627710859923423232 -955813639634198187045132716658917376 7767112823994487703825156958846976 8451709569789913710783246370865152 -516519870049564771428979376702619648 9876979477661044723488109444988928 7316024409153827502246565953667072 -670715773345722644505008361170796544 3701955433565709756303518589779968 3474618580991236611767340076367872 -855219592472582554284455321254494208 4288431131736068797145464174542848 2192031228937113648272810732158976 -749434330941462003758567841993850880 8063009950052815581154496611352576 2891743420992613540988373759426560 -317187075583911658492927109377294336 4032387958291288376621440530644992 2742059839810292239903700702724096 -667275106263787799537941509673320448 1330513370043099290468748915376128 6252832042260431911751126626598912 -833219822971206002568840647926611968 5392890079870641463821008916971520 8589537644518062852130634339450880 -402934218159106704381724286982815744 4958647685415642260906587388379136 211340328872420584163749958516736 -200300218474162433054167158294052864 6508444269623291668343470396801024 4819085172872092720462680264015872 -387035065345969994660891832533123072 7353455024103998456593322556260352 8521403976046336804111074373664768 -890677165104582254122746031867166720 9775144200431709610731316692647936 1042110637265566165441361381163008 -282076166478931616129112749358710784 6827539890732074515422404098916352 88572651446881403934313874980864 -302159084716586736919453039419457536 5647438977737744363716150703423488 1169624896183623216148052753514496 -409735433274995090468260992983760896 4799768600859603274317102806204416 705704284424093182008536088969216 -341459585424062125234583313131241472 9174958405397357949902385959665664 9143251381727189219213886820974592 -38149699361450962675219826837815296 707660304111129668381612563234816 1833232872800446840173976650514432 -282079319872212172122667907775725568 3774198114797174521287900917661696 1981015744112177168184979872546816 -626158878701268537946997698844426240 5886595480797084257146075994914816 4001040725975112565901302138142720 -533198095636440064578821446449496064 8443141259698481752778776535629824 9081810476276527644654459420672000 -527277906889385495762532467080167424 410239780736338465568267146625024 5465422298680938023676270161690624 -466718462021070916334256438781149184 1209492871572460580443444939325440 999687113774965940939049408659456 -652748020315289039881521554572443648 3179308392712290935404134859276288 9600399990490182984407366099795968 -725877995429385705630731462751813632 2953438124668443589787250925240320 309529215589043977908273704599552 -241879950648773328100763747076800512 8435194819275891713971644834775040 6457815562950303617529824187252736 -956472895050847111238648828323168256 4739428873433026697796837393301504 901771964219659129134953822945280 -60595408129843739763758387957858304 8732609042754390312445496128438272 3119352564774604946621901043662848 -218758889019804056804952471697883136 4786343092539189919545078455468032 6843481370134277364971382901833728 -394157546910743251377044438822944768 3736382048394127200991073234059264 9759337868025447418211595366432768 -341401768326029887071400676749737984 6119586788506161312031415470129152 1240288999107468933370351303262208 -476279158729934546387606162691325952 6905653348164774687195138424307712 9420583859159208560817348183851008 -99043700852059779931724067631005696 5480907953187053185815766039003136 8798727209315486342943159233806336 -849164211354275842741124191104270336 343273158344107390723059183779840 1667756360363830180741631218548736 -303244537364041909077838445640941568 9742630514583444715948628483506176 9360327722091125489058583221895168 -353230985722671647814057008237117440 4954636305864353456219187759284224 3719915598637211647024947666092032 -547608690137185551439185945454182400 8872923291395023971064055095885824 6179389064005278952686209443299328 -408120484286797698159832453445844992 7346240276436352704987954015109120 1223918418730629275425293295681536 -16406054771719121001503802458636288 4673810611123382438297232193093632 6608075497649540353102283685232640 -170397555714516011093704486139461632 3296086432291193493616077817511936 5365509906810085600467500786515968 -658757328862417585990955290991788032 3414467255009575034239642958299136 7620519195773022433138318172487680 -673711896371201557663188386639249408 446878348831114312627077811011584 3343734078748772815247270544932864 -727240876461164560263063553198522368 7640401179328029744843999473041408 5705482593567350050162701433307136 -655895808868661292948747346518212608 7313402948502687505055806344134656 8148620236972788958687725428408320 -985193399766939330627234657619410944 1787225279277119465907831026221056 5683900625102217830693610306142208 -390219136118089974809706933608513536 1754656073196235497677200753164288 2067015271000754641329031529627648 -434528036161137437514022047797215232 5567558457669400824817579030740992 1446813175850756919940991395299328 -271680940915649427928037206328868864 3973164831675706933723952572268544 4769560260009741149549672001437696 -184446754849339522151741285285756928 8741876413227485205437209009717248 6356217431570440769654801798529024 -154820739603314191152789639456096256 7601827175232768026465585458053120 3372177724100213652484903380451328 -265221937338788003669459184358785024 4247583607551480329183830506209280 7654163457661189967333579594661888 -769839455679917980088233835179802624 1803413523269858544060803649110016 4035531775114792247993948392390656 -250327714491816517647846384649371648 6718573947387422830523947065278464 8295578349225145648200164304748544 -882835077941332564644749534738513920 1131965108516506759888236504416256 5951468742844364350242511988457472 -493868696649847181784669531882389504 3641627298968758475562326958276608 7646233146136144388849412928962560 -154953593486887372973025017410355200 3740229475481065541942645371174912 3110935263456863270037379646226432 -381210898959903889828215160922177536 415193502253038220656752751280128 8401822948344614831516053655257088 -852622732858697762008864813114982400 5602426690381930677978639699542016 4223673799277266636622992167141376 -759421780330439181565980088146591744 127858452406694668070143714656256 8749354442775259329889817942032384 -380993750521891487958107870285791232 6489297902425062744457746059362304 37518793580576942533573469011968 -113735456039781122841014320312090624 9779204235399621789956183003496448 601640567318925268799316132102144 -910369452929526204654915537164304384 1318848418702475049031935274778624 6513887168333845716691357825761280 -951779079199689185692777148370124800 4277207383864007191792092518023168 561218358645658525351255155408896 -592318888431924957737434500487446528 4207597524330242828935123955613696 8816715369338775955527570554880000 -854035640045690509793061304937742336 4711381021252424449933113315819520 7384996334533857154507735224549376 -825724236478946605469494408176992256 3333939601118595657032020095139840 9833524917806503481605430414671872 -926432835628738170884378122023600128 2039034430528824026266933592588288 9110558153257247044429326084734976 -298750897459907241930436905512468480 4275056352670215998374592122978304 8056448631447485208578765866663936 -337134928891441011764010822003589120 6038192176644455131058346882236416 9030085542218907471240637576118272 -165303115451945953575192020928954368 4663887518176621541773885711581184 8434836833191827038099667670794240 -415827231707743484602469573854232576 3102374452170392532214768633643008 5485755425216571293842524218589184 -8331172279966358218655508417478656 6738938203482931107526704659169280 7008254358242982457722817071808512 -512282442622768147934016070012108800 4562138387180310601211698860785664 6651729549823346562842310291226624 -54600767941443291135758120528117760 3677429601110058003011276357238784 2072330140837308791515866327941120 -273026995302810095437397546716102656 126778616382787877386374197805056 1826295603263465088139734709960704 -625706668527789665820487396903354368 5463346103428392681976821866037248 279631341350856760872830511349760 -373756768654537533593803092335263744 9571524691341986236254883286089728 297375120787094069741324943228928 -144203315079666037719622237443588096 9763897807244810215513014975594496 4044038248211045134484203567579136 -167976253705669447799203134768676864 7176488193750536188127078067994624 9611010465053461499544490349690880 -362624444373095596766036703429263360 2302422096797243872841274300039168 4916547544599676025264781045792768 -166246907305302713748160186924662784 2517381243354162911845152928563200 4416809006808989327527543352328192 -345834028890464356626485362166857728 7998729087536884044884993757937664 387105650927886477057500194537472 -579325677031424961088229239540416512 8137367080323468906827347247759360 1609651668905088363020806843793408 -646220849393709895898724946036129792 4555871579764358881265795033202688 9514189157431088856075059544981504 -128086477554585813180655118311227392 1602112242957178748639016950693888 5753776667736932614745852693446656 -658984029185976369626855705266880512 7309780177983452298386694612189184 5202912504729938097929573978079232 -521423301182853814907244959896698880 4351062548254924742189565981229056 6805019803307475491744076976357376 -272381462512698740663148178327994368 5486586921714864653434887130316800 6578649308636973788387398071091200 -159591584909865904507691033027411968 4910545521877257294161877275770880 9533676775454574908491263308201984 -90009725563379280091670381684850688 6914021530499760325253592371953664 3188544269808753430516826424475648 -693971608387917919659343963913977856 8107592491683587861473206581854208 7559150838957082674388130242494464 -522220634451876496004131593983623168 7840011503976652614702469419630592 817153420629711165640348924903424 -624456537590957696545408147175505920 228883521486710123881731293446144 9794922152736800055117818684768256 -316333486348389726111728125859594240 1896237472512034682738416210149376 3125391191018518794069225708191744 -580531778212263503559661645931216896 5486107915816140591007668765720576 8917497961246842945415384433426432 -654625617998387887242596006823460864 353937268039380420906772076691456 8554023013325433688975038715265024 -969695310878621913452681848300765184 4068730105520770431540930948366336 241329089566912153375378436521984 -554024080926204206279180927438422016 9291364535866281053583170489810944 9623104999405319494111316848672768 -959952789493332636731854891031461888 5035344777907978387235147345821696 260801631753983003468897636581376 -596508679396003120374961195683151872 3512002133930325350550202497368064 7159419297491808277016811101224960 -831151102068124739576471227742552064 477186527156852803248885369667584 3914912402585681150797290298933248 -652756618814076981242252057481576448 5308690891137190078953206799400960 1904283397355185077951754487726080 -748496256695395873581043446238412800 7519056900633471784991142782697472 9597485960453910168771871643795456 -614312078019502180315867700912979968 8398383608712161636837906108645376 944549699092445931707847734722560 -242763059547965688982448706603188224 9190189429638804977916919827922944 7102197559419431409979647523291136 -318069730559787234487911988055769088 978570289542874029991315803996160 6961154262886319175865670840614912 -324410251559305513391356676126277632 1850018158402639151511694737408000 9709549957269027398267390046240768 -147605907099778783340571690753064960 1086500448591281474261653036990464 5305848080397478885328309496840192 -817864924108173058452711806653693952 8878566867519660962445981734928384 5772034401827616846601499424325632 -518094760195981876974899504873472000 8825759842415928090413518383218688 8582709674589038636595130698563584 -202069899748231907888847079652458496 1006760746082820180231237798985728 2610170853254290913953292973244416 -260219807529674760352515647665602560 1309908704508750528324936189083648 8526271359384301666449870779580416 -474142007014923811871003795777388544 9903591200888591108053410894577664 401899228088170858335100651700224 -452453548298900803270553175471423488 5832437860507233477162593859665920 7241741321174063031331948905627648 -250177384048605476097512049267965952 5779299895616085359788028007022592 7461761123322619933953089507164160 -127733081687895624757234392285315072 5856169291335907176874881245511680 9123591162676303452793159557316608 -496150792127915743084848660955004928 2137852277408521971274220585353216 4986460898470719443262357521825792 -447295895673186623479050613957853184 9707576373336101034189161301540864 2752306703823733223940765515776000 -175962583351881226044302435154919424 3723984916157135139025379605348352 6579206083982082978134717133488128 -606321533777114151471199522815737856 4527281116360857275619433940779008 274401814939730407434166607020032 -228608065944708447175086345119858688 1821982136939553678862647241474048 8567971041980232095191875150938112 -343289966982473079642324538511851520 9440755613680313480480148563165184 1972476055252472960090505073393664 -581132807377556743421647768004853760 4501272449048796170748884359839744 6516439689285922346325586110054400 -390911184507342313845299894728785920 4975345771723684636842729941237760 5341075785141212366012585433104384 -287175706189442683855649082435436544 3316697172043594252007139002286080 9660205861111107856188442849312768 -556718882575406641053994883016032256 6321147715583820105156526272937984 4992712740561067679480815779053568 -398647539462588027341410357257175040 7956743666639287473762696010137600 7479375476925650627036365719601152 -935857260983664170518154141677649920 8830875608325262362589901776486400 5354006258414732470980509373038592 -154349033370400534406885733096751104 1006944873922997642878093321306112 3966980544690857579218434151940096 -744601326194639162339432183172694016 9961774699436791676931059694436352 8423968262223355245918566718898176 -166248604767856861697610522055147520 2331270587536682381669109099134976 560122887970455414680984563482624 -327922869204073751836180788222623744 9772247611764875208412155722334208 7330878533808483706547976437497856 -929317011205096894476034825451995136 9673680229003505312705245859545088 369706468789384918213865800466432 -736811652439610382658605236092928000 3629118632020278144780449198637056 9850463193979971746722813306732544 -290692970273643275820101861438914560 9233206368936937637656073301131264 7256710951688420115657939694387200 -303818678250247560447813922748104704 9916248300817551517720266187735040 7183017696604035034846564251074560 -248387758472059251610356471163781120 5769694913933502326921215439011840 8013114578690894138732465878990848 -598049863813040266959745268639072256 5441005484899599483206323696304128 8886518108077551707432687176253440 -455607444437511056340868679484833792 9562737732884058619497409337622528 1965781792470417164931204428857344 -224934932776468162963481298724716544 2761764689322395696739815746699264 8666440604400039801342098317246464 -693203598180990638536747371594776576 8148021703311368744106677927673856 9071173845763918674596770420359168 -43623213366235081186536939602313216 8683345675571497261758480732127232 1920907918752321903783937285554176 -359419970465039218412851262954405888 5427341452240971354616102240911360 7423074618994466567541614520041472 -73033598220727456938094018212921344 6660148544296002941964230267502592 7707946823226720246996302217347072 -753752433330742978325279843396091904 7525426799801437928587626975068160 9201321251807287685013561935921152 -55233232609660664527284044080087040 8037554002450341100438240259735552 7911417825610092087493714516115456 -956421439794850687865812467801128960 791963716040206191165479996882944 7990851437913400938472030576050176 -984071258057808134361163994530578432 6469280991291543127334581803417600 9307152418335945727025080239652864 -573489367090403328782006353492180992 4574888666976924546404854483910656 5459633344353211924077917442670592 -897277108554874344287166716652290048 9537462772408849024897996724109312 462195918459070975471144822374400 -760300606082878613314757953402699776 198698720799627728778126677770240 1476090239586057704084589911212032 -784319292688573792787152124390670336 9653957254982421947211904802881536 8921971820250027244161494914433024 -111279207362065265640219108840570880 9842397087656168772811580355117056 7695037590599805937217554213765120 -961893225351542289706920279940268032 3454197447697244327422138150551552 3812626848147747609389966339080192 -847208304186574947932757899620646912 5086839839242843449092298164404224 255056039909546001701363106447360 -907070632347911055501136862801559552 1340256737735696872521073847959552 6101358974305246701261578402004992 -527358921524226005043088896435421184 6099046871949249286736675405299712 3843169624157453478915185611636736 -646755654043742961845286379823562752 7691213389009470916959585209155584 7371825986061085659802551996907520 -53376370385222494745888027297447936 1201234173082115976832185029099520 3081097041865103918614217289105408 -380748513976062564300851642560937984 46921450792328666524763172110336 8723559270639079473987537770381312 -617933360898979469451217726592778240 5439936682890436618436232316190720 9409038269815060101409736220475392 -701132208259826068734731902777294848 7869501912383675272795520940113920 1301684121286414375434723667214336 -706897461379674037501887730310709248 2722103160056757358134812257288192 7721194655555613717118713059082240 -316106206040391547334140965054054400 9040084290780773304911637172453376 762354116059537870137436030369792 -909497354461937640990707486235295744 2927551534888783292371205059772416 9182728818489379896146701160808448 -916878234390014440737279202568437760 1739254355999106143457953846394880 7616447339244832785127797738700800 -874651455839343033504755939979296768 3617308046118209034946273792229376 1668276539740483503020859763720192 -126659196141095868110544885208055808 8631999556881407622547825714266112 4288191104584450560253012010336256 -972403119913968714719644892620914688 1694833883336258096644153118031872 3360825270319432342306375161872384 -528950169211902766303099382742908928 6364894134056246777125683064733696 5669241811202438693510358889398272 -220976538720713087299989484188205056 7407763941810211352510199372972032 3223448972560872951308686479851520 -176132764401988416150161137218879488 4468215416635093660486785990393856 2597317678151998643783626769039360 -788396123156092059971847641215533056 4955058977961422489597532398682112 9254835275088487083325964167413760 -761219425496401785172674479254405120 5936761437845969836593650297995264 4894243268733394786926148536238080 -547452665707007736367132036531486720 6393002638137208391944673257586688 1982923090068111955392920899551232 -372898045775916140982494368458866688 2240452609003796986624271947137024 8638648722583703227771060043644928 -842053478006755462168842698343055360 1197985927459412138901271912382464 3347637095137590350504177713545216 -229475944296105589748065445424922624 7105138680246323484124645852971008 7159161297783575825700821193981952 -979850181882124759323226421021638656 5371594340901007602669901154615296 9577727326909856914648309757378560 -153618167223533784498705092860444672 8709694879889155965426165673361408 9263339150868655074543085482409984 -281180266420158927607844667855470592 7126939553436307122527676779200512 4417415671660131902553498759200768 -220536531602611930615378961674272768 1977100273778318429805984132104192 2604645753435422063227908705484800 -753329820261405777734459324341682176 5389127745955600090705192290353152 2453345521343112157808509828726784 -735263346009891728338136539655569408 3264750562469789883424612328407040 8788166902139474548307531487248384 -401359087090733907502507086141456384 5959502625105609732196857995591680 7723473020274211000861135663529984 -467248660412040553988035852070027264 9473052746522892861329424322134016 3321260879860009855553463344168960 -444308755139232362017045522214289408 1594166017451387071638654857248768 3637164300505073356273604093804544 -186987179690522456505190455728668672 2360194970330904646797052610609152 2917031931519745828461445826740224 -111177587469698103797204111803285504 805709863871625642774292974272512 4827856091420412650552686081474560 -204235015660071740123255914773872640 634787275070611923475937571635200 4569159950134007464910951536394240 -418824360110511599395700596262567936 3694277019903138739870728814854144 1370723113630521105463972856856576 -269723536866721225213551944725954560 7146086946067957934215639253123072 8582115965638208844610668391825408 -396962135107844741775776326279495680 1261560986049933998150985751461888 4026786266411826015837148095184896 -366442201882482012015929456632791040 6561442070862198273767486433263616 3040212157293603925108712804450304 -599068925093871090853013876604141568 2751092735475870065459316048003072 5368443740696404692474955982438400 -201106005935865089202762062489452544 4359632476327185269741610556456960 9319693241725937630341479937343488 -884257987727568162584125384253505536 2180748103247444254262223829991424 3477656137566121201478662883377152 -401794927768114654733302004231176192 9550482308554267489778805904506880 7049959860302808891853450145431552 -671837096153917934492554612071989248 2639450517358090752357745391828992 3022543614400309510012434347196416 -85409364489320147603132069456117760 6660534489995126547530839834492928 8857515641170770392001414218907648 -594146278538276666836118075615477760 5278239250389103343526521209880576 5855956046413555675955116650790912 -271617998759476546451747305963913216 715051363095404877517721696206848 1968065193763991091701894854213632 -568234020556282323575757280760561664 1202659235736108993609454464270336 8174151573070575270001617731059712 -80921174440576541294744362756866048 844841304928661912350874864189440 8416591387279963927471858204540928 -684811187672892442726909438469341184 5363376244864060558133853929078784 438885452758699092436685445660672 -851148401706688184879458329693257728 6628763885576072237903933498982400 8601162180694386326737282620456960 -760007980431110329503791581912629248 7526918714502709084865454418165760 7859241613485739584661877870821376 -136318492149928203265026949195497472 2616263116234400198691026817253376 5423203554182124787257483114577920 -475062178698630098125808028555935744 8129777354954599783513586545983488 2192885950932011769710657534951424 -510686995518956771916153574811238400 380155439304443303223378598428672 2478248632620362247614006067986432 -935349474653593151729213596728557568 2842887346165634538179936481443840 1492990568930034062275572406419456 -378451534217637651145024339095584768 6035380062578606620516813100810240 6273622605568158885506521298370560 -726023658267911876786589866882236416 6706427773515009228009306721353728 4775610558913976030620287982632960 -180283033568348752419075789393231872 3213947233134460546577133012516864 5547443403819122196003514046480384 -650034302286155265129952816358490112 7623354670421581211791649434238976 8741146895664050259663768868880384 -531586752279899947210663913282600960 6483571910275311724200424518975488 9571750000369118596093307714011136 -354724951864885383218470330749157376 4713296456956529387358566901350400 976610788297258387831533745471488 -595269916968375576986581974344794112 3482205982268639382029662649581568 1593949551985426535768720563765248 -698398710469184643325104507154595840 3761407596363919831601298085511168 6992838500050721768824633127075840 -586888377800852118483161612118130688 9763271705412790896532703588384768 4910990354200152725453122127790080 -364291974230750380047792374093447168 5602510762777018245170312287092736 2055945161502782845849371970371584 -229434044150858714801114051644489728 1019358124296093792378720914243584 985337842407015334328307632046080 -326591522890814949895952451906830336 1921111047634948618837972198883328 1686353423394206106735659213389824 -320818638779494022596664108437733376 9609742795556757575916403162087424 8299202168148892113305457393664000 -904923860501713524779100333500530688 2323606581989035518234897374248960 8235392574838833092767215888891904 -804871477000796387548636810395516928 7227128411818253451092512290635776 7795303176128448111573473813331968 -516725036103710834300917870965555200 3614783045790352999121107023822848 1165849033739538454582758056394752 -678572559227783961402289096858009600 4340054119143148936915883019730944 8247444331545783610369754380894208 -97384060238010837477640525383204864 8358932608832949197266612872282112 9548701167887926896698993615568896 -895748944874406980533126988897976320 3719982806792218225579138983395328 320521161143759363944520429338624 -585061734065108747949732487325810688 8558751795736584775630424694063104 4619865727695783549569046191013888 -158033950331055983524222968015093760 8588898990439839717365298594054144 9946927197053626628485614275657728 -630641196406455403113600285526720512 7687291356316139819540361850650624 9035812284973261491295433288318976 -520645976017001218565727036949659648 5264793971951174464610826941628416 8214626457459258512893475039477760 -354475754979678060642389936524230656 459015382946647025396084461535232 4776920617663540900213886248026112 -100914163332311610834893627482701824 7389591435977527577143988679868416 9995115812333973266282898096390144 -697377626463353801669425703933706240 7188291881104081729126248786952192 8403176833143599012970873588023296 -806882203684582834786490691407052800 7928487521624004737078487775444992 7109963404159217540886808609423360 -282005553616112155606944387652648960 2988161613166846973699507437436928 5880323412732115343632350763286528 -49600781848050374946615735019896832 3316410217966995558822216273494016 2129018396682228114764688196108288 -160036442883801709795074827960188928 7101756758156768251403664747397120 8188236977720013865285955872620544 -817901304932644397870399597328728064 8005784228466586681374530238152704 3107705134634115432806390727442432 -221558381604039789121288920983666688 4977586710038525297862737259397120 5161980198987212714358069656551424 -159490096438377058516805556073660416 8125798748967521831826818429091840 4646368617933914897156287875776512 -296835797334210970592026203575549952 5281760097228888463646925466370048 9125972883214297278282597316689920 -260426126027225853115518513768824832 4554102464813657060639701148368896 7726365046693638482279334907215872 -63281650080623421122005689935331328 2809373882494584712254336303890432 6864686394518651238590730647633920 -807274231137470310585949321059893248 6599838207176218225362629279350784 569202096490727638301958448611328 -472521323859390314985639414679470080 7786918470399043164217837816381440 3118351158209548334954809823068160 -17620040895892571609468704735100928 7677641716544634356162301551181824 5113282812923151958038789968887808 -536652377544358074926981938967216128 6663661301387619929479755027447808 4851205728882447288940881135009792 -608765206751682280205388216228904960 5853819521635851248199130092142592 6290841930418805782600540596731904 -53523970067995238443689565633904640 2187722102234784728404792430297088 5738671678362245482424784132243456 -65457415281522747809209799835385856 2752484264647825119813297827217408 8425374081290395187810086825230336 -161418285690960123410596790454452224 7906544848486468369094021251858432 3964463669447900197548753632100352 -228315687649719005813429409425653760 8931235052204488233576363626332160 4969824248556156430655286350446592 -181090006753806575815075320937054208 3963355215244678987280377685475328 1039914197378251415212584068972544 -275096208624637519112163525130190848 6712280724611370448258446607253504 9019316593809509359651501495025664 -35044584009200877228630286310309888 7502007364577334715523092027801600 7637527329620578934438906860404736 -367539856815183293915928616048263168 4333841439657226599580335270264832 9747019823811560448691801757319168 -61462632891405459391987217130848256 5909842166093834779808238456012800 7676189295980230991938144140525568 -218299969196587292034466156602458112 2667909824988531244554655513968640 2013544670114864722930253768425472 -186420153756719820298203034466385920 2206651563372010975987429533548544 218520964324470494797519338340352 -415535174840124771608608510847221760 9137743431582674229455550511316992 1160020223062389967629483048435712 -146628166749887118739830051109339136 2216731363284104446640217238011904 4803603452729249005310459668070400 -123042229223526082496924476369797120 5666430403247225660629679282847744 9382942400156436055071395669868544 -17861392713198191361116246103818240 8083952447818278298264490261610496 9968224096542786442553393005199360 -285077384957016582667498036261814272 2221776003541424916467774836965376 493139048282825900598244394663936 -652628479760253255900001902224474112 1840494779176137074223106926575616 942897617390141052901362185011200 -3449603743479266394581718628564992 1079148773233058123214723724869632 9321759033900288715057453602963456 -336071734338750248172314139931181056 8828493505500049171155622566035456 1168004126673678946301655535058944 -761455614835204962767439313162469376 910099800459604553566199606149120 7930546324657692251217130099310592 -724317308518090309715892169189883904 5122133637720224846873030377340928 4101122820704953643220143953674240 -972140917327556722656518168356323328 2105743739404779529103862862446592 7757251941016897388140794644267008 -373323986294852939413324987516321792 3274737543278573050605897439510528 2630560930714279070095282632916992 -376868109212866013278147701158969344 5163986955637834385265540624023552 1053734660725178696146890593927168 -170462389014551129585757843164758016 4880665796723342908763606236528640 6881368981261500458934879482019840 -562733621802549950480812156968239104 3593072291585805336982641799331840 415734005905474256433431753785344 -694633320667635300408291616612155392 2905878262343396545000104293040128 5909181433224681330757288266301440 -608175935608344941228837004663324672 4329986045542584193143157542617088 7099245171190529344633151762202624 -729219639038246080807166380980830208 7412149239896770312414709900378112 1927996901725413007620944663937024 -516429188813021690737219744567394304 1951174120792535695856022149136384 6027364710084653342562991598469120 -737498802587704040560142488545787904 5920716854326114294781189115871232 7265632168399168606696924833120256 -502748837229390691843254910044864512 2527658845483021671496738127478784 2308161061713575358097243565457408 -134913141883816841689125789479469056 1820992642526911367189399129292800 9975811985961608134456813979435008 -400749640382990592890239941064261632 6496951461848760489055010359869440 1969661059884479342229417946513408 -883293190513515517544174843292811264 1069774091054417522331607858413568 3201616572261726739259095718559744 -807311998732219220261890837031419904 6868520116548888474599115777376256 265305470558956764951668777287680 -892602055277773179335113557042790400 895955177653950221773833592897536 2892849680085645298265808930078720 -354865167303091980708144423481901056 5391294539177765635567300657545216 7512243896030051053183084712165376 -521613169983828083620707114780983296 3202613118779462983239747296559104 8145462722801608610905272753324032 -26608918325665111440809234448515072 8251190630207830936897762696888320 6939573880117701757454653109305344 -912264949805105501928504634986463232 288221146999034767689300268023808 278770371662660779838737141989376 -89316127387560393233527793864671232 2169608786930613390602630416302080 2278589387039522089529615902048256 -488627329149197226585933879468621824 7374734893586857488359744860061696 4725394368460978057031920402825216 -61423269969965251165670094537752576 3895026945181120608874838290857984 6280560948084944494697717566537728 -767240142267908525256506779145076736 4499084525690838602934269130047488 2272715377929038226256687584509952 -250616990918860896426323984552820736 8669607649772560864165553202266112 9102928483999236176189499895709696 -26200456661178121231413581499596800 9910044730408393188659405200031744 1561729265957595214685091970154496 -332004715388914899321285824632324096 6162289055052937663858694378487808 4734464655193582560220096585793536 -179646043916614741043505261268959232 4173170148135783885159509054717952 6810023529497635179736399364489216 -150450449852662238992559921768169472 3787159789752243048246312949514240 4998602895435359361578221480968192 -809534109006079726426959845041111040 2648446011195205130372470724886528 6606423214844285735542068531429376 -274615334803849920074029966181793792 7965489052465799935687668308901888 3432621258702665104632913760092160 -485767690029404545956919714319958016 9346445214541247853294731913068544 8478329075808478357042688459538432 -624643107617475646949286001636278272 1735876856414243008747603333480448 8254510379113153870697119011045376 -430610280161470622521880102020579328 6363768051194491514217430914170880 4413064599352394300915576238768128 -152892302833692542214010645124218880 9355426036196054519062563647389696 8621882164799339176660628326580224 -66681434669958305342480860393242624 5826462084326280591036563066978304 8591034646393103321014652016525312 -39892100693545948025837066085466112 8816253873878747544970317126434816 8013956011648839255787624885911552 -949864014954091282742483962143178752 7883385881305407908401121933131776 9377845514017300060811629191757824 -594347802920407566144918608156819456 2237986968023083594019859083558912 6573453707152347024107241287450624 -266976718687263780265303739893547008 9823113599373440742143509733048320 8980996699553178473581431316545536 -818029301365299780121753983649841152 8968348625817874192969958269386752 599687226226884597842529583366144 -965095529628742563637360474414120960 4091461215129830798277488062496768 5277445547163734409691921433755648 -496261997041503030679186699450318848 1905030634169291772264388273111040 3540322587328006718875596576784384 -421853906543300946154036836299702272 9024602920640834610754004380024832 6773124295309282153461448116797440 -140324729234939460862417135764242432 8008479711489935421760905678946304 9594371857916601666303585809334272 -849793406693312041308194671979134976 227646860277631313463495735902208 3575572461454805903901795184279552 -142322629023723734570589232744628224 9795514105568281612300672619773952 5308156830176174764702944641155072 -253790944230904945341649320948006912 6232643328406484947045174111895552 5417849073593067384103520614481920 -644591449813611619468512809321496576 6203834465285815355528988577497088 4955422593167871931394994745638912 -54617015371753559690120634323435520 4565316480381429941580597901131776 217405725135950872701157360271360 -641200148397036419944565549748453376 417792045968922519774330953400320 2667131897605387879291089078714368 -761781303216935410773371877932924928 118668918845041434881124558962688 3369155582603211687520192329416704 -240741527314173357918012476571516928 4891400422656955954054405998772224 2534894149209514450981224448000000 -568793164146498091293019701602418688 4908757551731648064957682536153088 1780810744991322568277051536572416 -949895124424437940758777877263024128 2463828737555670139149783404642304 7067068002049072310448189045997568 -271297681107725997883593124527210496 6228745489783575573215279224717312 3100685175847398227371296636796928 -716991925765870870154581509748555776 9576307733716854594034705069244416 688287653207128148969761787609088 -626725481071837660950718776894029824 9046266786309545055986445075873792 2983351185253860357842800058826752 -975233809229308333672285299449790464 2442184187595583878114067378864128 7044293284359803999723395307536384 -915655072702880623062738983341522944 4222089898960398073503073880244224 4959219442952618869343616673775616 -757156490331736290513925444789600256 972978070556933356754604061097984 3355785347314301528904949118795776 -208097172043082367361898039836934144 7189566854407620264011134547263488 7551734941151983738713356174884864 -754405241634474598846310688776781824 5991061969452312948712188449652736 1916101689269989141241316130160640 -262241040416156860548355559566344192 9820719952869181687764179648249856 3973226498248050842112375346167808 -432452521572764146130782120300249088 873274476528448746540512248332288 5506921842758988244867690988044288 -841226163175659242061673739226972160 2919956587260040214876068989894656 3911980131424786336292460671533056 -176501810239695875206460679301103616 841467612329991796852925526966272 3718383549705287506357911216455680 -957210636158552384698532212445806592 7006388546529316991887546293157888 9508410331508721487499696246095872 -521833396364525316826107924440940544 983950153953783330839077471649792 5388996246284458815472079780970496 -618579191801073665065330769427169280 4552728258791302595292893890478080 9190531515555977366472512298287104 -739473116706932369998492965516869632 6733784784043389538325898477961216 2776030632795034715017611705319424 -456490060613021213807388787484917760 7332555905688089781082728278523904 5505266720093144765440583960363008 -707631225587955658822383761128161280 9823554475810188880787811740942336 6328054884046760879531589793480704 -895142359577848415670819102782390272 5146780334985757574650986256924672 6136323816241014068646833201086464 -819243413085400469402157583408562176 7124207715540791515140812418580480 7460250738766075758720851157975040 -451211678788249180220567280982949888 393771624010656127247189175959552 8433960413089019640150612703707136 -688447913186717472804205682629804032 7689081328178012238593505349337088 2401167324368761553011493683855360 -879097748037651621123807893031747584 1239487972156585853177087500746752 3454385259647163633122952215527424 -695176991568355729298060900443357184 5828262278238065613612366530871296 7895461549700918842177756885680128 -676454923357456671193408322494529536 8755495913726059120966106926284800 7545602907757976554785921889730560 -8062731602246321460881003139563520 9247835947534703326990187846696960 1008491413852956842181961929719808 -332950515862297837421954226272075776 2502096920169773443269935941812224 642631959184173600448374019981312 -356213412181425005421400096403095552 5659351987670335082465746032263168 2403691518836608855842356350418944 -42602693699606435863310281157378048 7663600139548815994983005613457408 6757346487437784867511101969924096 -177309319233889101009017262277918720 8221572883619385666096367629500416 7446875430117245198782833868406784 -42754436828230935647306878908628992 3405500092313301605495310001373184 6795670227069453309216712042741760 -911481145481312411865036064903135232 618819989721984000288952011456512 898002727099480258874096536780800 -507526789368582277092124058280001536 4864271831188502689828986991673344 6450314059256594464275166327209984 -998150975333572377003766933467693056 4650226537242972242477128729231360 8543905682603597853108230584008704 -448673959097304670806894553243582464 4382455709690360402731282932432896 7791815940997198363550139577008128 -760771667310915571799193696457457664 3679837356325129435433271405051904 3990458960183283031742761108766720 -826985085400091039644425081529040896 4874790367682563461635727375204352 3308629271211300956829356249841664 -803689464033481978346997111085596672 145088105161453436152703776456704 9525766851169743558156123830747136 -215281668132146589687261649726078976 3967111771137378006386841715998720 6107533344749122104023909270552576 -216329659432181870908808249007407104 3312267378581921090340921221840896 2520000852793193617828633301221376 -813813940036899431386686070215147520 7287935363576620206423856214179840 6038968940455660978490907673231360 -458914766292194483939519019970723840 6756734700076140728946092666781696 6103417679037774196810670304919552 -909265878572879915113456009136308224 6678285719085742545270626551070720 1164293561260472819382723547234304 -453735219169331768529187221851340800 2371883626152316435825563753512960 7929393295248662254264333971226624 -521260650833556347779293828358340608 6943976665671865845673680745529344 7070263974162256604426973711695872 -601103844421856607601651754708500480 9679175699023492207675551579635712 5684210760181452322435516170502144 -937899031042292010624816948443086848 7329018412577440228344598525640704 1074701645860347458517814172712960 -503467175058433635135647026214076416 383184005022401420738797456326656 7944774155534617551292017443602432 -808277047443062592905357895485358080 9598927984044947017527242205954048 1838558745971630592848131000369152 -943547867860045982693041044367343616 6236035625946532002496779110055936 6366071110490568864724687012233216 -138353239876666091553063112907161600 4169907833639622271818831530819584 3319983775858927771994617651658752 -416711388314729748827506732236275712 6088358047757817231147015868514304 4931108335450745770658309446041600 -464919531450561810924028324411867136 1011503497618054345811057499439104 2351653238313381003400967580811264 -502041512896894786365312484325195776 6243476582145867243057399843520512 2090280846829140211816140080414720 -319426818068484282179485378189197312 5264775875069895837284947059539968 6656179213151909945137528674713600 -40377512832692266996800554880991232 1705034672382896666454620456878080 4094023115330877837033011859685376 -883537131384899314795327670420766720 2869372871812612221841479842136064 6522900712954070277651522507505664 -282841276779244661025589163076878336 8036775715907054560672568169201664 913826858587109793662040966955008 -8920730960451901828613048182505472 1166302396405643582451283042238464 657666401640402395039528021655552 -153047147525326015731558101096071168 4721661493921989241152913471963136 6864501238192639602651361932476416 -601947614469544969823974087632879616 8134382804221061900470622370136064 8017534325182104076542227704184832 -453668077597024161614580870335692800 5197634476458756499640426994597888 2780489498844913095783425878523904 -361017506999227889019169234531385344 8286767790692415938112221842767872 4160481534911513848354776205492224 -755385212655907951706163928973180928 2097772518469183926560359289192448 4692172052640566849295293205184512 -866452879831352786649233487319531520 4596030247146729854713751217897472 8886678867625994994010443403493376 -534588451061633011228094998222209024 9347781668732233273645309051797504 3245677843065577847626666082304000 -671108757105635573956388719102525440 6790230344747145839229425424531456 6780569621810316188441332645101568 -226642365504309842513135829551939584 6545766799136237291213049819037696 6715999519515460539478905756581888 -637594500918407017086610721285865472 3226833891119999262513669066457088 6511982808086043220446456043274240 -521446389378844249224944713633628160 7870695886539983797745627665793024 9451994729083876894146920391376896 -435594735749886123972020202696081408 2834215835259588485723245168820224 4009833700343271710260722269159424 -313399727339843811675908631921950720 3394721408547201475197107429179392 5036630949544270251228651390500864 -158620891122060336579021630534057984 1384924366433541837925365367963648 5353415909750231148522566326419456 -188147774629261138547930139354726400 8129196284185496133751549307387904 4079329383355495386891752843509760 -312823121455223673425215168872185856 4349087793041032772982575577694208 7929951670104136309274647191355392 -217740721480632778382933328721346560 4317166070785690240516336602054656 1030589985043402027622717076799488 -269635324303408326399901141169078272 9930698347555076120500085077311488 7855957444272685037041001816915968 -480130605408655372230166604951846912 830846605707240827635136611745792 1969787430940293330021421840072704 -556115325076201548004285075152699392 9542575478884179262786921146875904 4345602286401428825507998975655936 -837967684672701738081783017413541888 3826620540406209645896918582165504 9480357273934510949799118363426816 -111319613546352067288839524565647360 934422478009125918067555586539520 2026623659251974803615092819623936 -319542304283624838945020543582076928 1769974927668383535146597401755648 9368183136314697217490326959161344 -314986136896656128342265413725323264 3730601781018588979361844132052992 7248983096667892779800354617294848 -556479501957765654029003147320492032 9170920611934182584330417661280256 3143861052557779688786548888698880 -380564931726788570037010217327132672 5896682669003324887513677296566272 4775443163280188065217132107923456 -659395271291037878519075558414876672 7664523395984466729785966007943168 4099142181614519764307544004100096 -821021161944082459799939414321266688 4221121863163573789583115202592768 8943715906833664571121398949347328 -733155740643818925221086748911599616 9858071788357599495741100232015872 2227770811444943504126367724732416 -509815389004918658392871759498969088 3658657106348933672265983901827072 7665486031389557844326267540733952 -559608945980300005722850753089896448 2693638789827836116827218747850752 7599058606282693927648078508064768 -203763227541739410517262816700792832 1218019963691994171192215762632704 3353229261920537431919146506911744 -143183544848588934665134663767425024 7817919252601174957017055421792256 7734102104435479663686011167178752 -728371528333258857730288504662917120 6481308375796213859071014654181376 7537364878889705757356664268259328 -112340908868604102578633766456000512 6004474243991180761680611844816896 7474385580116859339193333995012096 -725351827918246590019080305168613376 2439220858996484589622957252280320 21886614165698900157726170546176 -731387399524834612260408216543821824 3648053829738291942071658184966144 3560484522005099088983948502499328 -239484815083538331446440993696514048 1006049227099501249120741753880576 6816021745233861900433218489810944 -895376507946666477703555206250233856 8241974979085986236776576588972032 3604838070498997886986215881703424 -203991357575952625372231039618908160 7269562527280345791182354830589952 5254176585025518857669263421865984 -851612956786581362264525564087894016 3234852814160468325794504981348352 4308080084989144341687009936408576 -439856968155280075966806452967833600 6728450626125914214655942050447360 6097472783767368644637963377967104 -271906385584872674617372163870556160 7663575770398951232795748469833728 3384892953787531208059200947093504 -61285104551898250579637346959884288 87352330999733544486703621734400 2456241707804049388463220804550656 -794077902932832103917580331950014464 2346749776380284281114107242872832 7637126323347102238548131372335104 -990290534444653699302412450099363840 7772735563126631902499642527449088 3043713384520027419727116665618432 -625804610868043277265502842799521792 5122502723835878798038809280774144 2267382973078496978400619486248960 -41179195039036532403930712739151872 1346419249834352201124748942376960 2720488940696634720100473597067264 -67255526790836066994654625040171008 7885402325766351358045200110845952 4831086103627520703414575055241216 -943325024055062820987486388011139072 6823359773843201012302561174093824 879614246994671910570531510812672 -462124840186701065771680745465577472 8150752021527214071153261058981888 5899771555089202496426235807137792 -833333520788219266406595708615393280 4270135028691319122131239267467264 6203969107274070273651121483415552 -779369481966646070116064854458499072 4635851206622651862558620921102336 4424451386370397447300769950728192 -716447938957794662027747541628485632 3512342224236059408467772473081856 4467611774277025981796871479230464 -884832264334923184707049502300700672 5129329387397836225634879949242368 5972230015594671854721563707310080 -14357798655131932432936690459344896 5861867004547815163139195634974720 1299486021976713513169017460752384 -872292376750941487079513407361122304 9812374349832184707166845167206400 7157235267055566775427938136358912 -372828339684662306652766669566377984 3387943125573050839976748691488768 8107971985534051439084376845975552 -559938101512531012477948605059039232 6728936102343762585783932603596800 818501438418419534079645102112768 -840840561670436516166364964094738432 3563282117445209962520611311845376 3795464022864974958547943617986560 -468743548971057151287612586569236480 7626051780583000710458383590752256 5610072110906878551293992382758912 -687840404398288508294144507254931456 8090784209315441808375080338587648 4011851297614716484288229220024320 -479928550577544499410790769735237632 4340314051498387915987942539001856 2640785846366280164881506011971584 -946897663554269014868847868275326976 1376740945927695869135824638443520 1833657060076559334621735274151936 -453642910400814762013185494294200320 1938871138601213612252413208559616 8472617596179637232275550109696000 -449988910914137726424884401345134592 5686294859497271079660121780912128 5956848590389008274976128244908032 -810185109591631270894049583584772096 8240256059150258182590848372310016 1590575793369910890746662529007616 -387360242598773621217291570952273920 2277110328489190460959831632117760 7981564713342539486588275443892224 -989331982526864054075906871888183296 5609819771001148323835186893553664 6547884539392494200570644420100096 -558871059491418933053450079541657600 28780105199640004043336144912384 8004008643196761704969168771612672 -426574371291853869578729698757705728 908762221085820675430608659283968 4841750247055323332905074163712000 -684513065085344868470742132373585920 186549235791467107183623042760704 2722448753556011999753209347309568 -980623694849782285861035282222022656 4936124584655206494399737221873664 1789809542255157030995388752986112 -700362448294877356084582389372682240 773719056069675448964246847619072 2982245488028121283143516077162496 -722305760013100500230796999412154368 1463435913500842788488338932236288 5025132822812901986187819977015296 -525619267207678528032799347741556736 3981465277720924062878354836029440 6366235250244014967784057222463488 -713272004481123285529657564049965056 3754909526975036027096976530079744 4243572567241656893278927988981760 -718813874601790003289860401050681344 5987248227799783164333986817245184 4008098568626888434228962984460288 -97611189644818212574746987236163584 5032652208471087657966698139484160 5885310808921783138390987725864960 -623949774433548965362672198685294592 6756856533459837224023770135527424 1650307455933727114105630534664192 -32195471952420180737414551849402368 5159796601436984112983089010966528 9328814991451438872062256421535744 -758359685781009383534809306370146304 2471471485590447272432554540531712 3376391699898741287296738766356480 -597043213534128865898565992817098752 1097416947342865750005263160573952 5673288328402746560037085517971456 -322628797693110734869014151711162368 9083656286089609813199879139229696 1329578404162183475517614794473472 -74492888366238656083571225225330688 6836148899973865434690825717022720 2569804950754976837358849022230528 -365142285391872726665807704079990784 9586108677009545303174829404323840 5184318485715513202161630593417216 -529536931501640813707254382226046976 4055813042556455314252573811146752 9859223941233162887132516423041024 -697235895128803118986751784825913344 1009156091846819228704456954609664 9046245659226167480252034407464960 -511878922749688969752467532765200384 795604815223784627772515084664832 8263900484078702733666405358501888 -695513687766358967113891412139048960 2139017594996373089454853978062848 8301289173342144253114747044495360 -642614225212934497149168625374986240 5071362417280028571969870628913152 1706269671117176574942493798301696 -73274566189973149412576023568973824 3195084974047416018337760962150400 3285801055080341965494722628681728 -80230275734721480883689073634443264 9238274515624510075309318840778752 2973792019127312414107314602115072 -100005011740235513360646804367998976 9150038517419750408371005848289280 7833880433051634362773815781490688 -563384940285332866348885042123505664 8903353238691812475985806976090112 2566788943388046818378628483514368 -575693593046889310184902618224001024 652162920098745930059629776076800 3757533118323718420040191464964096 -393257923439213119803359541573189632 7066596614623358511643254912450560 8318123051396530153720611992502272 -928741400122931548779471420644130816 2905957110874409812227333279449088 9202847713058381864055893915598848 -930537111509591281609797302136864768 689006981004969303741625962332160 9261752482812869335328002966290432 -883871797957883451830336416607371264 186431502537261852757096010874880 6023472517450393822542351153758208 -929389559692418811949305369307643904 5485045254041878278427884134596608 4423443729059630546431969031356416 -859714864658574601367008561227366400 6732369117504632883244822270312448 2115540828164895105561681754849280 -312727655153414852950749707325407232 5131016152340267385181866492428288 5302221005593392863722239957139456 -850807143409742808917150085964365824 1722503240920328880729241533022208 2963398134354660577124723695026176 -680181326255215793991254668331712512 1736916097693778562242862250983424 7713198888942494194742362646773760 -673559104154779195892227908418142208 8527855764708855392016161333837824 744935469312456556625842615091200 -239856845473286321728268089969082368 6843788692980625429099247629762560 4929551823724405877608106824826880 -906488362066275625244430800517070848 6253538816363858175721888074956800 3754616692074307565581531235745792 -539473073310609223608963197415981056 463362686657333622228953197445120 1313333944587627769085679714172928 -314910650632745718942933533883105280 9992537629678813421344643547660288 4852913554891412656425990786908160 -487301662412995352493435011205169152 8972152728810665090210089419145216 5675475791246987640463453084188672 -724358071704910017813705090339438592 6424371967714779374156511283511296 865722059343496548142562882355200 -490284440819462156599780854495969280 4102546775042414298902485371191296 1754249047960114268118263646912512 -751963794116369067505829963718721536 7432308334713270938352408435097600 7721972800907971909019778357919744 -937571782604096482427485448185053184 6343034971446508176058499456827392 2510667672572509002174250566549504 -598321122656632458756859890870779904 1491313453408782595000251644379136 9911272974837490017551967626199040 -90235395974516711399794059046289408 7247327080602316454006593786216448 1670515476339060109500789867675648 -547079894161730756639871154054496256 5158298053702783301558710418014208 7572791469591445730565773504544768 -559604354596342207432505455531786240 9913949062321518547667024709943296 8831037763228710363684092487139328 -76721338097138390690158476968067072 7270465066547543056291605958885376 9164399906543688846581237989507072 -503230826538416935016399531403116544 5550610192833289804489042459361280 6325019924787962914475657756934144 -747254722107216475013609765522636800 9152465298252561530193132119916544 3070654897776899866626178823487488 -703546148874298718147799905300643840 8134126491562918139559600170467328 5672806679089768005034788152934400 -973935826983197666533490526544461824 3492703904396032369081606826098688 5274383668985364144844296157134848 -60247307382278454916149961310601216 5933090424877446926342107963588608 4633683905340386708032044092358656 -467931207061078461076341489028562944 4785136317487350482387520003768320 2719374708471072885205001964617728 -836076827641472049190084488894349312 4436237211678140240270062786707456 1479632110707433850309363321798656 -872808077164686263420459008353370112 3008881517441101779935626394599424 6578693768675359197980755482378240 -82469974669045222707500930490695680 6825141576126207255063598427275264 5756787379118116359759525834653696 -889526068070983010156082274641117184 1391725957787407708283897877889024 7063749318414525722968783348301824 -788388412878948419803730235543781376 3882052133141467365840812098191360 2581970277622208989394058923212800 -731694777875821540967352318669357056 898587676976448901850638747435008 8893670034758155339247649757855744 -740308962096112307333472271766388736 6411403814731561909964084869070848 9472879723370920475783851497488384 -782749520379759391533869547764318208 3808006279999113662845719228186624 2929302089392076127525827508174848 -787644322349241548170084071308787712 8022388797113723101515398703480832 2818825681660180494325648466116608 -696096532047223206627059004780576768 402041204563377989760919441244160 390659388103507614204547725000704 -825940366189244684513860624767254528 7897652756566918977206751607128064 8346441263585855930517633976238080 -364962898418721867833980827652325376 7513604642592622827398559170560000 2305099235738198396840985086656512 -145367206337789403325164109785202688 6300566941819355682849458374049792 5154683796660492703583109560401920 -913871314559747980904268744095694848 5073703415696571759718404171235328 5051712404861000387397795908157440 -959958211283452355932026921797287936 5764552864697761622007590479200256 5933677310453834670795370994335744 -565856016807926699883013929846177792 5194753134051171057646658733998080 5616441201162424108751461644500992 -629169737400724873984704913596219392 9856668506694625940537352690597888 472445614624076192841859315269632 -375394548966596353557655123050627072 5771473682961996903437882621952000 5263909013796131588629745039835136 -985604963299371457206785941197291520 1068084566082093094646758900760576 3852541888600080627661032369684480 -990313952043101372078445081791561728 2579908946341691224462528824213504 2933622326887434263130114392850432 -812098700111130417698847295388254208 8832327069473089512651117824049152 7324270629123840321627597383401472 -941031970745793936354653819268759552 4601137670001952951940158712709120 8500811927170834303304753028792320 -585732214294726143399486686333239296 5599346792100564805813512792178688 9346761255019901829784171796496384 -186790419208404927678201077931442176 7500708877134517566666643070779392 7146045872339404235540088213209088 -695225253555638382141870422664151040 1021949284374444139515581111992320 9061326852079716997029316974870528 -816059972443051612852606143825969152 3744658116132237379225434378469376 4037425678477205108498683603714048 -378628357137037882422735748502388736 6429623763258347497516715265228800 3771068910243958124194668449103872 -988321150771866871962796944546332672 8649832928772520259862816207405056 9860797486018216856780667057340416 -420730862812487504019458819981574144 3188946536351130775809603565256704 7170318090806574471305850238533632 -761294532517458901453983385284247552 7641852221403694635356996266622976 9291737636175903342501946816724992 -165345384409887644761453944773804032 3844328046249192016714396690546688 1704206431764943439823786299359232 -704086013706711739019426408500822016 9950062514214037684751788935217152 5491794139000208389971070129537024 -737416567568754314149089678993653760 9995726772312730232120550369525760 8494924490884881517389993255895040 -992095852467398400182022826121756672 9424414876414958694230265056722944 8941361668530748676515328973340672 -305570001803313274698757988530782208 6972607720767328240486925348110336 2459043750324142364657901811793920 -553729032606526100402309624502419456 6131578023742242311252708553654272 9507385796144022380866988687753216 -971849035126129173868136780946997248 2723196139270074552767453635543040 7956012773639523313349420715606016 -839946386369357600852638551894917120 1283866127688243486875600189128704 4871198762059934359814478235697152 -287883237698348248301637265608671232 6259414557018399404457908703854592 5457674452521268195662429323001856 -28346511277106561714508814591459328 614001709948721668011690429513728 7042661408713441416031815885389824 -419061907239513172559477652267728896 6940273404065497932891249226809344 7817875696723962046002442505551872 -369570979125015118448157269289861120 5147656159488743267175856122888192 5039019247859787133976681914564608 -653521726659318428285434506910892032 9941037315403954065070656608796672 9797031012646944552746554562183168 -360556767342733058778367347243614208 9094684477609875937623237520785408 2350882668544268781072396266242048 -760139014016209679972008843932598272 6591670978532350249160263377879040 618336986495555895358971065663488 -464798648285369377895677761041727488 4807501956021239052500428017106944 1637844882422514919447563893473280 -82057817352135922331065307776417792 9122105583208054845944680685764608 5212462770591694094834335257460736 -896901419628129636234453146623016960 8252685848335818430884312051089408 9515790060126555190782731216748544 -635302281385179816308691877347983360 9477153193602694242470121315500032 7730045871797148737091331197763584 -239281028594714823762040803437838336 7363664108658368537842058816126976 1942608642852669412337082752303104 -102293197328688361203654252042387456 5942731436004581521631833101434880 2476376967710273194695953433493504 -32300527255200961538768577761378304 8262138195554856831328854640427008 3508239033992631144109675007442944 -530595336688794764168682040320851968 9450222382828127539280070722977792 9690223834136520584282706441928704 -915444971292149788598501294244626432 5640342219682660203178997183414272 2916899059464689785806594357854208 -811229957463348614885330555907342336 9577066828876182227197123083894784 7013629235229492242533324611911680 -478129726587845700894638879274958848 5363859521315111024338014616682496 4301554075903878836746912217956352 -937703171667048525681053749148123136 9041110769553919167973257337896960 4770269623720226527338820509106176 -992594587755368162528426515624886272 3420341997858395656504771581313024 7832710329142334908461538623881216 -11608230555442931352430144517046272 2024858630616912718283347851214848 6302567443067654000936312125784064 -807136681279005040020324579280945152 3037100727246465297981880062181376 4686128205584991419719364223434752 -182679593324223157374758868180008960 7014787886051883529799868335783936 4469775402210987360214511622553600 -944965970340695860009250217693020160 4169791904051144915705619848101888 6987625535423151983289292159975424 -321772187865190530213373248328957952 6198921668597714305105571965042688 1559843965060062007147107627040768 -285454728871134214463341885850124288 2305677179608241119545000137326592 5624737428858309867102545293344768 -615614747190350759229716439135944704 9780019317410113301930230830596096 1715250600230384871571907625877504 -112959277957577703219465325127925760 3099413384698326640971639146151936 7736999135145569154951848432500736 -727123649843092773226335084814008320 306547685702678770361406739972096 4892043416356759848846554000523264 -255097447375073011932150234758512640 8958777797792441985519510670540800 8132423104924908805047385763872768 -176739770036577179981690933767831552 2143022706935686805287150800601088 2978707614234448675018346982277120 -493379780084515094588231433263775744 3326643553451392577949050712621056 6038229564659068514394316132581376 -20889645766354436297504398277345280 6663767965290349331318913430978560 4896957803397989340407703829217280 -448847123319448590291993754414874624 645039829566671580495569506795520 7042887786063766298790544034234368 -128922916728243127226703574502211584 9701907989070756909509140507787264 4826309098685761448278623927664640 -377773321935752123867233325737312256 6099017793256218055504648141275136 9308300085742384064602408348549120 -376951865953111001213140555876270080 3690027201949158640724037397905408 2270257558128486334732861395959808 -895398355363426931290149931355996160 3648798530596545198210042759741440 4052794600587246611136126828675072 -403018843335747536735187061610381312 9295192567413897454881167359606784 4425826232486542293129886913527808 -722240258248124328791556648314339328 9680840931624233596144828962308096 2706878008930412587613797243420672 -976936571447781237997799819718950912 8516878847444176265366832574103552 2034105764353948434689207673290752 -291425244965912272113896372746321920 4494681334878362319371943001718784 9886346991118951751809909976465408 -775647523851924554107044459054104576 8774710219765218088101631299158016 3690459371515039366297350335102976 -986081679264397131666713045324791808 2967372003170871354896127864340480 5290445905739044032174397300146176 -482440652518842476600990589924671488 3807077409859126842723005735370752 9241781394944407706487151105409024 -12005439341690217041367340503007232 1375052698090536746391182365425664 4213499770937018380664792531599360 -765302356344202779035327254920953856 9788022378672832740820375784390656 8018905843296235950716583661273088 -409991393020215643677748571368587264 2017689930288366658421349895110656 5461573485396234851098038303195136 -65237525813173451154116145382948864 8620111269154000557737419223334912 6395297004376269546507365653676032 -314112690459155154693851376244490240 3374204507226707760638484558118912 8237001605671610799466213093146624 -977400401017382735427132311920967680 3133472741652107749223741689692160 2798965666385292030511921749819392 -394519891683671597812882296706957312 3406630103433501726797654258614272 6915401485312554941034585558876160 -621984531446606096725864868430741504 4497098639765239900501777751998464 8329132743829619326232135890632704 -563143286216033145486622241522188288 2186041692444051041703001484951552 1899488835876561438335021738885120 -285380716173063336122661220143595520 5684741402548320427896213702967296 3264847220843609712786590882856960 -209476492501539569015153753843564544 6015481821144779677809926322782208 5317808744888564265994658645016576 -967308062711793171451297550802354176 8871564198150015323172028253470720 4729402891285413488429411201974272 -945478882643715539629138464257081344 4306655659376527546404330163666944 9506677869230095945434303073091584 -808232562688684658994980356932763648 5273638199052044761084609131708416 3063405626530521615811753573089280 -752587209892620850255809145074614272 5061883128170329077560443882438656 6937398733079985385430478152007680 -428067865265765611616359962980122624 4243494843893440210339267824582656 2213105091287613287271107909386240 -270103515535301570643422559210569728 7530308546760359710018757585797120 1657186483597337025751940591517696 -544594933376314491563115929797656576 98648943776892513437905902895104 5804765340687371532699252656439296 -450308937193664701788931859595395072 6746046954969339695567322935721984 3674402762279545052031170748874752 -593045013368710957022028274547556352 173479968197208080283004246687744 7898911126645347076636256210255872 -686061671167310017753504324752769024 7654272950663072037592053000962048 7491594632318801827877899370233856 -879663856914407082586030682998308864 98604958066077384418208379830272 745297334504384352214879765004288 -41571934507114012188613024830980096 3861306404450321115551126398173184 8113247385809031260629443037626368 -484059051487623088972484643263610880 6102974434015591606517557868101632 2217350698601289238221108270858240 -138583453211369326592546078986338304 483603443841935153482118543179776 3573838628396465940197731284811776 -624877940706343787949563255589961728 1067312966222944912090725401755648 7052966548332784992685103404548096 -122972577577874920845128371038846976 9397755167096481519184973297352704 886418693627179070396577951514624 -134612365221753715332538495225823232 1097974186254104865552609549746176 1682847727564923222647688833007616 -149488862467368543915223111075627008 8783567659124756351337089971781632 1581666045164122994354032880910336 -34618457623783140996284756309049344 1631947736803361626832767830458368 3631588744656264797611772472197120 -468374595609186048610214866526928896 1697620103915957348117736402714624 2616267445094543612348757595652096 -872590865391176273882417133355270144 191594038762594472695231418466304 4450210202030212972723254486630400 -563911807391627838504466662809403392 7745904176860605317748180306100224 952415669950780695328396045975552 -400487766123968153958903627806408704 5564645612727945984358776209145856 4436019111365084317586527583469568 -313267369549832503982204728543019008 764518588242651220935826311479296 9094781036234321646960637693132800 -671454290269311031080393579184521216 8703843459233901218964883887882240 7778956108286683839513149252304896 -322416225154078378927790701680787456 3214602442891415606207647544508416 5792250246465522043300451654303744 -17479778377297790630467695099772928 4146477608393489489903311468363776 5341016464183212385717525260795904 -495546183246100904120443221923856384 1289890121743192919015169372192768 4259867662426223318437610947346432 -819962473054855551066126334688231424 6446204853102933519393618072174592 1346911277650235584923885635633152 -949408108213381953803884736838369280 4152112764685732862787636261027840 6730452174330512572047710715117568 -366321380367847248289481834406871040 3987320875283953069999165309714432 7744577937010503260701002511155200 -81795211902547140387700850336727040 1731147997224809478544591406759936 2285248301912371507049094394675200 -341978758973518193783872007171997696 2982728342354594466120609013170176 1383559286354216180506637979615232 -496327174924036949684313508410294272 8184620146332729472053421285572608 3653659213436521206788715584684032 -574338512008083180448408972094865408 9590759955645891997007360798228480 5642698026815825810959371295784960 -48890324212458745023422948278534144 6646818630526843136443995691941888 7238251817206753528145134925905920 -435380092330397724655192547027582976 2218211742015356386118869062778880 3955133626887714431782226866733056 -668635609862845438642333949896949760 4436502307985435587181956915265536 4627044132700916187821044465139712 -366674986636150502148713119213420544 4284066236151789960412186468679680 7473359735332676691560088056365056 -214211116934965329431553075809615872 5371596138461911794693794846212096 7313589558491523747696159515213824 -192530139079356136723272519848558592 3892154102436628558448155535867904 9681146263515756969714331015970816 -72846641281206087323189841594679296 2074135733536626061227506400231424 7865762312771406733817874367905792 -684346884859921340391227715867377664 1692099048971172275464415731515392 615682574148346406430050470592512 -847502524555162398711703106865856512 6873997397647245521369948517040128 6398427004028056465534692290985984 -148570073879124280495234350634237952 9860445124399926189058276773068800 872600086148973856058082028683264 -722340076247262609358314831014264832 2943615486320257763123638468345856 7467948793564885975697565801250816 -487954833399534643977044169402089472 2117157531277877589948526676148224 1274783916593574532926164141342720 -501002822755747170834698139032616960 6563682324589283914472325566693376 8185190117070241540678647571021824 -591044010331977966458342376369815552 3500598545636673594870232701206528 5634825535039573060253811851919360 -606008870576900860780664466953994240 4584014199113328658575456462700544 2286229803273807664766954411917312 -350803589158493312811609732300144640 7384791311393365133471443673153536 4798134186204975687536939496374272 -885500249206042969166604567406706688 6482968386137080716898164365328384 8706049167859376208957989535612928 -545535879463723479434430554071629824 470264070993107039268549781618688 1571666433882641195787326412816384 -787606081511122738439888145584488448 8699023590711710431044987133100032 4064379331012943970845477130207232 -375464570195073955595791858388697088 6450186777934785136306124736167936 5442480193066910987767581169942528 -722594341289936581417438037015527424 8239914763831028920237730522202112 3599512025456768616746131656802304 -543085296563026697639190923208294400 520674884560813693305722618511360 7664630415994927741212895389679616 -543356213584127581935341761414037504 9768240006915461763337577876684800 7610915647834587354174386123833344 -242917215684473517812177329331372032 7797160374615790813465389211582464 7322864165306397512095612358623232 -793799740758194151771105459548717056 6088681361363192972647573516976128 2932794014147810503649057197522944 -2691798402061625541868868918575104 6564162954573664864422558756241408 4913222083688854681713111998660608 -164837122381375589233566868521877504 2224767081495395242392269910704128 5852341169196154232599071541952512 -932936148523654500893150948781719552 192444137149851513973455422750720 5890110724693972367698065541300224 -356253222896294696460360456064729088 3067689148389373399355643773583360 6013588970843491715821032288813056 -131761031078390179781015765579202560 6511001708930504522623422172233728 8243834728791250001247203741401088 -790983862262491231795115966490214400 4342320074410672251442460897574912 4278327790056995719420143294480384 -837338635019777160096069234745933824 5655523727392066508161168820928512 3147454088872142873753334656794624 -805932617393336102580970797790134272 5728102681181634821366450395021312 1667558842133124815558877057646592 -995729478873286118942666434333900800 8702673860332287503559731301056512 5631854798227649671019408039870464 -627126129713445993117037377376747520 5615894044558379459187118341881856 8071539258805415767590568456093696 -137379197634268150505214670222131200 1238918247015989316059953906057216 916725739061094474700129507999744 -227954243518469066506323702268821504 5832565447337979151068098650439680 7280314668309268704883531652792320 -804586990244224680165755790670430208 8406761931662162641870229646344192 9605535874915739185321195891326976 -777738308398330530899503455624232960 747952190499046681800159522717696 1536154576533757814932711254523904 -751492385545825741709234805982363648 1363892268504178947662851348627456 9091118611916827172549420858212352 -332956314745135110152182822762184704 2766846564255162234869334933504 5968077540602270064016532850081792 -900884961864977371105947628364365824 2934956793176008863679672748081152 1220099502364603326879978286481408 -87052398520390489060343437458407424 7422898491914521472650458121109504 9183447652040973955417214925406208 -142933038328639113006027541860843520 774901947060655607163866893516800 533198283447631982959181938294784 -863276370585321253448812985084542976 346913984303065483668547591733248 4333510398516238041352090761035776 -953389541539539832471596268496355328 6226447183076417535993632979419136 7824281530243716966233911492345856 -275621863626845753173577769345351680 8995450534806433111865011178831872 9569006718543934128089732378263552 -470547052680538735827638578797608960 7988615632870498610899406328692736 9566074062043404923961212802170880 -207979715093472775424869939913162752 7428284174185128450716413319970816 1833641422372849972540221744480256 -749454218358847572850268895421923328 467441151643164938351270237831168 5823140697521447246744757345452032 -821897386527345985193097569610235904 8698849167548119114442567701233664 3955074543817604778001264887726080 -717131105306445584771485870522892288 907763858536716391026294731571200 3085482825040671388166996147306496 -930582889338666074001012833665417216 449429262563797341182209581645824 3924071752190183437437599418941440 -562923682904828248159883346365644800 7011065776959633989894082763161600 567723087090977244006048033931264 -98314812804876545160269001729769472 6170409803471695065716430437613568 5898695195967263130975754059251712 -400188958511434162854521698575712256 2836199255902792487239691626610688 803139176969013291375741433282560 -915388083206003526403101641645490176 9394599825064397794995004357214208 4257071192168910182110021566857216 -511593018557820377695130756812111872 2703455726931964915332866073690112 418112155896952296595855100608512 -569314632312865299873962282635493376 7475616595337286638477652237746176 9232126442320894628253664121192448 -534613089958998103119905184838320128 8337271693535641962598485427486720 7288051098166974412376521467494400 -844239320632037828521990826867294208 7487519648891547794044842927980544 6872904680897110675511425999306752 -114900798173811362753494970802372608 7664107669982306116901103764242432 2423399484486335316906659800940544 -372292741278697293884782044514353152 6217935596626902392393346366570496 5679084545095755925355969917222912 -90820705093535862218697976861163520 5697744396828861067342030982610944 7630376316258387107631711232458752 -994869659521542859483227504303407104 1025935243318940170518436832608256 3589518959668494954027012002414592 -239260919125813818125904679939342336 6208605578642008072426087964999680 6663580779620367459591726791917568 -933754313401990030849845162124771328 6302923600910698179774200969953280 3431319664279464257977298855133184 -700699705767139217594498937220235264 3430199382411140719712342521151488 4708664110293372545651762310152192 -753178995104636645457136495758409728 4887787855717167917241116739502080 1582124634746716869405097662087168 -7559670532082947798261972923842560 4868367269321028421042386143019008 6827876510240668637419794954452992 -744280322747770443648824762691485696 6608471596329314711951903339577344 9053643693537251872304911844638720 -568911703464255857817420637744922624 4238992441885026147817696975126528 5700972804868988885479009067991040 -254614479678960891394860625403314176 8380763919286029346579241563586560 4116788578095838422156595314032640 -872960284181589991610376518170050560 1497907144976624977082599077838848 3945334103525319882957805378863104 -338388488033731561868283587176955904 4292263025525286689041265591320576 7443016173761004184051613110894592 -732460205158557865959995146529406976 7880160764482346709551013230018560 3126322635503500562370377537290240 -558165291845508566182748482227404800 4998989112910889713774508032131072 4219542586454345333845300202176512 -248888063941716343826662509510656000 9165971871737054603764498402639872 6346415656238253282932926737022976 -291354696048462263364270297479905280 2177450700252843300146618365378560 8615279804749772909124114010079232 -739240566890008763952852274918719488 3276990734435505464224639877120000 4526049269100928010606594240806912 -416162575185950858323184494575616000 2978872685776770287370064728424448 3759245399121691383407689963929600 -22169718389826946796637159237353472 4880191009173947911296697273155584 952578202484836007554837221736448 -595250158067183994642232666373488640 2806692170544782173989692340436992 9950415069226250003930152809005056 -407250863847529775884509881122684928 5972917777894209646418619300577280 6185287632607141123452547637444608 -376695194802572607882628194910601216 5259325162888203763468210542739456 4753871244837934093283345433624576 -383813115038535295259100947981271040 4362124750637212421920862003789824 5346370043663511161050087156613120 -938610593896223918334868152192598016 8021078402175103851592885699870720 8906101406587821129527861369110528 -256162987460138360393828187276050432 8303754648556638428516037056004096 1134156092756680878158269831446528 -571812519513815552801778947195928576 4255834925456703266304647468417024 698811458059231751683882300211200 -82340322173948816334732139197104128 4432697162692957714255818369531904 4906610129473514166871385679331328 -869520523261348576689749300636286976 1482578111500320927326272168656896 1228117435308377997490233223938048 -848351190854133923691138980973117440 9681406573501603980494581379629056 1658135512246885901017100931039232 -209229787909886358577882679734173696 8240511575105629922863203563339776 9005685717002312602928257609760768 -437349107495425852275242110650679296 9561832281634601383210290994216960 4629004697769096813054322620235776 -458449461471813795339920702349246464 9761500898755388474804239085862912 6956373166972306833586087127941120 -268170737963704390778116578153070592 4177517889389097526689088195788800 5676579825997928894096285418651648 -19254743730461922597203147772395520 22149268161688772672330523475968 1200587327902150964230263551295488 -525971028642376131888680103411974144 7489532881966121515167773865541632 6030784965791548108577962555604992 -453947065123004722294645315321462784 3620686670885869906865697734000640 9351660810217429827566983742226432 -564038964833162593609456281804865536 5766770470057594449168651054481408 4396017864767706312692485142347776 -142655149425915955847874900312195072 7959027810828438330645737654714368 2691641688703220150323844432789504 -622931194836369967007760149001535488 862876560695564060381906961694720 2197247229871608682579489508556800 -908832002660340541118683100550791168 6612721441910997821812197797396480 6046376531991589326976074431594496 -694385775849533703861041657301434368 873832030105863082107780068278272 962177179018624426843220857585664 -856106989573346935314355651159785472 1512114659286795074497039675949056 5792075244568374685618368684228608 -695185186899031179310550740507820032 8840399461879332144393162619617280 8289202501612002563929287933558784 -81036479394443161046945644383567872 4352666602424743449754528204718080 2393080801728826374111474086838272 -565731225903759157353221931808063488 9816547571224946206366018081652736 8291551272058126667002880637009920 -951278051284684170626543213550239744 8099080565992606196168918250291200 9391368511146833135508828410871808 -855441304839153572058578988216352768 4702099347070392299355932131852288 3307279709167632447517579313938432 -916430322238393795704719391066161152 4092251522732143623338723343597568 8580726369113262623855765438332928 -679168691226986057882809387536351232 5056882944898979281877771348869120 9160497160327079441553196482297856 -630558278657331189898924787811483648 2102949209503498125526337591443456 1867669289002411688979518407573504 -797079774390880297254714861135331328 3216153540412169959830263045292032 2903043604316287016244296279916544 -541298608763069038865072975928885248 8437769029178635719614673459347456 6558316157526051954725637167513600 -959947623035078491432458185844195328 6448593598118317978246480104783872 2577150211049482045247400303394816 -835546043136175797330909816988631040 8796546738664320398008457686417408 166396104682204380997330722095104 -193561143173556054025030242760916992 898591348876538288294171319992320 5411440601315671034915880144207872 -157196613275727810701784250134298624 1809792081762312148986193783029760 8926848645801397777268053536407552 -321213519668479811842521286622314496 6809018177807870351173703687995392 5357533050647278355174952703885312 -191992917891300652241955403797102592 8684096140638240501858287927427072 9535657331661899755263054135164928 -872816974850525026095500832010141696 2241619661188118476334213086838784 2589426767119265543701578832150528 -114794514816770754501609281472692224 3279536977014166488100546208071680 4466993984819000956295589058838528 -766597663350545801473968470644228096 3999306545966279722577737415655424 2819728535593553411800385252753408 -32352865517762673637476716588826624 8796822308723268739162030735360000 1598663470424546875122050677080064 -191070602186938005349953763392094208 6565876589285087738005711025602560 3973588934464509473787081536831488 -413136403893021276902629452634128384 2030454455486097392554671544991744 8010416585891181445911168610729984 -918656666893679046136988601533071360 2441654209897795293091938701410304 1256851781810590597387947910103040 -27729415172645444563126275811573760 2392946170502011108201431872569344 5447657275545682994416294926745600 -489551545512771979558760623944761344 2811600090319300074685909264498688 6145351834993008744475248857972736 -968931714934389631668168766234034176 5729876223293639497779073175781376 3064370312802458235338788289118208 -778442008084052052108900691945193472 7607682342962196851208342896377856 3735755318677970102254066187894784 -437128820539238413733551942280413184 781370655218662646285521964236800 1140299669829731907418121928966144 -401249659695503202767842888422260736 935831334987291742743857886920704 9604650813958908895018944020086784 -916358330885319317747602602627956736 2788210568880139894114000805298176 4569068230034003971757314230190080 -650317367612095094117071326004903936 7964293377445552656127673113772032 5169383932938153788785843991740416 -350179561657715061390223011695558656 33302435382764706299613972267008 4333473461858103568357603625926656 -464605474884987909689596266296639488 1511481692638778615454372148019200 7792030120760835209294329474449408 -841256746337037258319277222082379776 9808015549988835441722740392853504 4268210563741147067196821062287360 -210254790999658619664115061906997248 6872278353386849595517364340785152 8868961930331047757558798377549824 -947768950630812250442669305156861952 5749012615643073424815555382083584 306514661884938313427458489057280 -623587619506853234506590148121067520 5076161983049313933203865247678464 373283403833907950607982256979968 -305365610024786633926403359244288000 3338976736466129759236416455311360 5133915649936948464382303090507776 -113350437583941549193199137429913600 8591015198650789807151966861656064 7371277461729738729974624948322304 -559115800713817717411669374891196416 4278334949620489841437248094994432 107561864979910141556968461959168 -511294334086142094279340827971944448 8550147953499263518498429272588288 2208081817605762794857384315453440 -196595537702172611714262308436836352 5097197530252939184344633914163200 1330590844741985418221467891400704 -20445077319442728719958096253812736 3952976860717336034439222821650432 3632719486462389536531230054416384 -132117053884715944408723101197533184 8880463227007231523280748621594624 260468630338285195001356626165760 -198139541360149658616847204851122176 8216162357871343339024720737599488 7255684218161119991119956682997760 -536677899448288598506930475137761280 2240370281966617425561364736245760 4073082889453887592922337236746240 -366846885238996450391398069288566784 1403434985430983027243071062409216 6854341948051541850275591151943680 -793204313874162824071758672952295424 9484720787977637442063891561447424 5155741148635157813300297577005056 -410701927181470425331328432518201344 4409254075191060833651705021202432 2538556419970440003071923263111168 -698291128212495705113535426706014208 6841791944911326624965548098715648 3524749692086187681724872907554816 -647479119225738589175842137205374976 3641747687846869670368042429710336 5425979680244978845519894252879872 -95523831763607623657653527354802176 3448262740588232652813503184240640 6794834401711015959505866049191936 -930792421500051368852257859732242432 324027951475723392000993458651136 6675278716389590792073487633612800 -721552421229845147482417016640372736 5891489720090189616394612758282240 5615761847933842012722174116233216 -581305442995920091103464601939869696 5179205387795724291898842260963328 915511566557870012550615759060992 -801424174339715277601663350701293568 2305585605355779614335629443203072 8718699080597137180051127773691904 -261125316679603904095897745730043904 1456027895183724957848325360451584 2968678445275753724164528094052352 -376896400212404450463903113891807232 9869846221938666155224296587264000 9131463910810911963679654687014912 -173376015399067818666211044680007680 6458229265713324041984565502279680 366035389804017919590095527084032 -869094267139992263115551175100858368 8622089570339115713550651068776448 7588310784956675697636362309074944 -859662557221291765424426058818519040 3012625177345507677507463227113472 6734203466521781103289761754251264 -104107380831989096027347557518671872 6066075078554985732254599158431744 7916167219335496511685800507736064 -635314786547875403205250232491180032 8149983958482051354041515377688576 7472008216066713090996734661754880 -81326825914278103304579770107297792 2988205477605409524947175140753408 6739966499735655509567313239080960 -533359258619860535587573024308592640 9271762325301501314464134947930112 1185347387977861579397016510791680 -966309126079904878355417492896088064 6124005557110324990325380012310528 4881048661621570572888120328454144 -593946700660418676292108957217980416 3174925317363622709821911238443008 9646479385096043910133749368487936 -620109867560343745306275584300548096 2095390070297679065980775943897088 1852828814149051144654841152798720 -76198326434351484265588663219388416 279795425848897779253717132902400 3701706989634108889367046952845312 -412439204530492360461660506183172096 4945861552702137352087989649408000 2993749506345056662883951534145536 -750214083685367470298626035288113152 791063834001114779872921313607680 3846020532354358586599709211623424 -763598009068937394452819579315945472 2220885684987991015124669300736000 6819098726876352431958561451409408 -41267348711799448618601017010814976 2824194785280964447510224747626496 5547481238533600273140553288253440 -394818436759385036839261626485964800 2946573449864352097942688988397568 9175036051967289883451410962448384 -307635482822488395671336381526835200 281367100951377816661285455003648 2151980518010690241550405920096256 -253224589682310522902660590983970816 2854004939799264391298677215330304 6454240446989560766934457060950016 -688356575600331181007680932100964352 3765085273045489854931090804834304 9559146193278275767776209274929152 -994420279933970013136189433009143808 4677094375078125367035562058317824 8728637125055650343175494456836096 -446101749420815090045505493031452672 6255010448230900558111917318602752 3941863424072803789181906839404544 -199655130717473003516847101082337280 9369507217839553868071446387884032 4266700060964763914733919141888000 -245577129090160995301811859463602176 6747347708195802728829907745374208 3439534595028207136068877856800768 -169419767369428062475447160268652544 7627017679577456010032703768363008 7867128077438490582085907609812992 -191951011150970884583313322736091136 4183025250038618552537927185858560 9150815411660446104377587346178048 -154195136095897617998001088313163776 3750076005599135708443002655473664 3841047433768802037294109680467968 -10437606797389526092409503171477504 9339489422945998049332455358332928 9344829939067584140144198971031552 -283674424848596271693774620492562432 9838060329818806928049712222175232 489525706163144787282499320414208 -590602995991388169537899774057906176 276821579004177073664382614896640 5240666169218104405062710349266944 -137614164294150217818379336380579840 8083806331220237061593947145502720 6041060530867411715678111484870656 -760761730502241501336873265805656064 7208289976880048396189024668090368 6322280113759917805931509237940224 -858733337415751457334872962657943552 9371267297439360253213135568109568 2906056311308909091895991915773952 -70715799273023597944393378176172032 5542279444611081958921732171497472 5564470458878429473678491148877824 -781457455407458287596473914736246784 6465177808757140644431231138660352 1456173138300710865641447064862720 -92925800226005461236600058182369280 1325374971184568379344098993111040 5429653817060148812072114884444160 -383147700511313062119560038718636032 1786658542897068802280704415105024 7618840985749090686585623216652288 -375927698484579751902138539108728832 7476935476125144604076311557701632 9763350689029907652413613102071808 -635426458414685371940038812563931136 9871933155010247185722610896863232 5459695732454240567193678779514880 -109813114481107685889467295767461888 4895636554024697499620986383761408 4424388292158732750063402135584768 -511161878605215191767378880679116800 1005967916338505710582930979422208 7687456185313956312376816976265216 -946721464169557162052662022757154816 3588858364937858287926333927325696 247978525441414663848379782529024 -596249788004081441877073383074562048 6782672022162772570816873205071872 8272236279637326586243698007212032 -227461713651329015650917000792768512 8977576628082968358436420704010240 2316564591957768526717024271859712 -15178832149607349419985072382017536 3907741253841003460290383620079616 3794330686795176312808934549225472 -538719642821649046394991123999227904 5761973851607300733584635009695744 8363203079542738014711537318494208 -235772079451905884957904549137350656 3826785504490130203847806538481664 8057184872635987505398074597965824 -250753560240104918974718804437762048 9415771070369817886452595604586496 6641221430221333570988479120146432 -749643372994496323963155862721134592 213943720269985180915014840614912 6884058592617962196184268636422144 -473876179316542057039254886272729088 890048941428496336938555198668800 6780046426045413693728117923774464 -166977476559930793747550325899788288 5603542888987028639936967159578624 2932608730444719431128497845698560 -113990172406023759435524789216739328 9676670617713105825313408321323008 1052982135634351221092080060203008 -137780016192184192766103341880049664 7921472227886480713944020774027264 77895329492939173002626600009728 -309282538843494657775322267497005056 2485516075922102664670749673914368 2781817307525264289544155506409472 -703274990321370057052815407831842816 6205440909563944936863181096091648 5332336768280249170519986404327424 -635196937775119113340259550139252736 2155902991299061750020525309034496 4506305220199458067127200099860480 -930844776787854076994801636969807872 8212315799608846398640534040084480 9879750643927204294039502558593024 -264675863860342030859767555190423552 7398441999759632795099890492375040 6388569492098231965745930714480640 -777287280883662995127614640473767936 4015277409570448419912949772058624 6701098693614063910516518069207040 -186708452406550591645512970060955648 9233378498689179482678001536073728 200098071151742951147205430345728 -305943101980915739610113133053476864 8179474477399890666674997489041408 9525608071814686462846144192970752 -171363312765733319178436891778220032 8031629835109828670171333290622976 7593771057571610113608515399450624 -965328851731409741364249535732252672 1075538433687774028457816964988928 7119616843207890386137711359557632 -9366537731522013036557497471598592 5413013872876104156499325833183232 1188416522416688233141614141243392 -339261868375727454836653372387360768 7865001142169944455712464019914752 5171810336140358608282036329250816 -219427052087254214862847348800749568 9929710681383452288248292222959616 6207305789488734316945352035401728 -786842622972979708880867200256180224 8396644729921604282524671171100672 9905309729379862795708284415246336 -193249504526008557639081659088240640 7417419347238416866059444130152448 6899173543027588496542135532650496 -427372302790300969829945319721271296 5973666694049380979063730902925312 7094580407070893835974238940430336 -618520244339697042084235905438056448 5129104764562660384816196545937408 6089363394790970149012308634894336 -107850620804524532338740696681807872 6519157923478307855812396257902592 7326010257070787150764030835032064 -91852100545686711566715738459734016 8936979930229265273264989863411712 608280131146421277608155885338624 -224750657366861426378233626094469120 13860451731039146101436670017536 5417860156758395030278066914983936 -704467294805079439334399813407997952 2076974238387284076519744600014848 6184057202225094147998066893914112 -751945136133246947855192910123237376 256239873450838727332036014505984 2327060942202498218067696572956672 -922541580690219141175686842132987904 7282393427145373954235346020466688 5883963725974361700043185685790720 -846222071918705206143504211947552768 5309223103938508243371276701270016 7757730105718885366557239823826944 -331141691728427639029964352732004352 8162703136346490997268761290997760 871041925761686638491912749711360 -600096281386168588634436978289410048 4564183792114446304857140731314176 3755392640712277688090844435841024 -207594732212795416751939537187373056 7524192012931544528761812412268544 1763879895501142684648295215661056 -258198055539178996575212577373552640 6152759666021030071100591256371200 9130345274551122311518885347590144 -376478229775969633582776201049538560 9592314846338989449752644788682752 3471086875060165837163823861071872 -913575333088172788668658471481114624 3265886752214029184617690943193088 4414346822811564653716884240203776 -739958810558275690754727957764243456 5426183846770679760871405196935168 3689395876253063292397025499283456 -860000597714391423079166535077462016 9450079954996440488706453287206912 7542342363195013816912525802864640 -642782895581776545353478543585050624 4783611908551315909766949168480256 5354597716999967941468329428910080 -294831626334027947445581159593934848 885506121203369077981355857412096 2787903304341609992788429139607552 -68426490381504867079542307385507840 796624978682586179469959449542656 9934786655356010509732298398629888 -308153093395212223208414442854285312 5734833314253905587671219740606464 8334357120102542474512429578452992 -227979095577454735292798189283835904 7265125173653480528696145881333760 1940292128753419263783263702876160 -261741584367778835463638584873975808 8304454494879636037772865632731136 591334339301728361749807783477248 -558802450033546596487066468701175808 206559274399964054991263489851392 3270440021615521162551438509867008 -12434141286084450191021078082486272 492441810037353631460174786985984 3677242958836903956656155718057984 -42105301166469752828035987784335360 1163616705598602795638684179759104 9095306459393726786693542231146496 -606306848858340468727809540249092096 1993697960743193198461479500644352 8187257547144101882965566037164032 -343857882052728255920694379157651456 4596808315720802144302676748271616 4061509401854911084458225216520192 -926089515196555273165658325767946240 6062625407966010542825456929865728 1512445946024700605385257634496512 -572497324594730225694340809559638016 4412154968142748356750833012965376 2974328850879659351670837183774720 -302170940734394164675449844880375808 9368125147747268995908243780796416 2742246904208021263642879879806976 -803164368460332781804935230487789568 261509658417284171415710955732992 6537163764363127706931812097851392 -187272450687676315431409314145763328 223047429973815171326502288490496 8534524783411776706445379310190592 -233927503403591447390369962906353664 6120314290539479544986472269479936 2726705069456819994775028297105408 -386479448871872536628665996816678912 6842453724736778960399908594515968 9767747232995601910781458104975360 -170105403771312858263116930567110656 9678989723023618027542068028506112 807004257289777418996834289844224 -910307759222733845054475672240521216 7219590835634241044095606735241216 9295431612177847801133725726539776 -803595765734679502732262368713113600 678343786232305686160174814855168 189550589446555315958148721803264 -112951455579608622559099770053328896 5020337111576191757636130800926720 5717316208519688687859419402207232 -928204260980554238946248862237458432 9204406281756392697764508287893504 6281590969776899673608235283120128 -268787421240026177684634165565194240 5658392600436558895892978756222976 9044913797962704132891109016731648 -731183631280996386843067298565062656 2620783960470384269453405531930624 2147124196315174297422726734807040 -204010590633371165818895795681755136 252692436171509149689369057034240 9564719016724894789589721902219264 -500563905515685172753967872487718912 3063394851926544186331014363086848 3738977859707821675029956290150400 -190593258547212509996151782707822592 221827098765228578401125327175680 5345405274508465509382243317972992 -545443288678073359225098753355546624 2918255441830387048352978982404096 2695091279461499601908769126088704 -27756693429680080244761572688265216 3521157558328795496632258794618880 8712014545462758775067651426222080 -817990684044335871261919552984842240 5504277339243727502687963447296000 1365673613325881709101856373866496 -506619810022693365235177737676652544 8124047317930761814650063740207104 8663738187491434664727102223286272 -185278813955460249988303956297646080 2558918473246736216163130948976640 3518829268767436035442850003943424 -372371492426841356049963613650157568 1277971636244782897896093059645440 6141412477545879018108791958798336 -814912625812413431357170390642196480 8622342100586357180472600077271040 1846198704744612110302684978872320 -914911593592763808432850590867914752 6768962763443106775769335778508800 1858808323590325450784041471049728 -434216708205866334351829336863014912 758811247132442558593651372457984 6717427366774637837847741742448640 -806328361198702787114566707486654464 2953348123902845437831844187865088 6685836906681910831622333120118784 -451919884442370377659687528524939264 8003661324258273980637853331226624 5485339257171156744932490286727168 -212924442927505073149889855556157440 1943035576344823237220338042404864 8804249220624435776614710439313408 -15303962726130681223703330872623104 827178148613250025968580486496256 3851684974547407788680717136822272 -275717369804087825077003058195464192 20642098043929800000050649104384 2049349514316843412455507097550848 -448399937753187384328687446891954176 7618287799420960986449899149066240 2122227454003474050510356068958208 -946674948105220651717288844507217920 5008360370390558679002697235955712 2221564310583060058451178181099520 -210717201593699799657490860900089856 9586333884683101467823350306832384 804798164928869682199799609163776 -226170815082730000686859813627363328 9287096900360466881464725793669120 9202242967040393446738078145183744 -250209754693302620191102609519542272 6349179320647038915466621744054272 9156060055349544157793176417992704 -402438741160287775876455894330900480 3869402112945306493268348677128192 5175231584996359187766734865039360 -84812890202431180654130261814935552 9140962813429148224380155564392448 6865993172812585105884284098445312 -125905110682296484552279559285768192 1878553660388400207300544912424960 3544202754246626889981766313967616 -599024733396656685406262851874586624 7113868251841468291013643381768192 6089121738897080808056429521928192 -953488447552033580447950893280657408 33196245807603779090664881389568 8456265295316559930282511792340992 -407054700984964654533289198447755264 58631433195868243913478535905280 9481995471000041407029107167854592 -105194510546877744768295018984112128 2098529172921405710532615381975040 444125882755080495992526291861504 -926329185036284278274231113657352192 1377894761278057658054444780093440 6165118199125089262544593799348224 -783001214773599917114162894302347264 9010754884466695017686338375778304 9468073916013162978855665031708672 -655539373089519846210538887689797632 5573004837938536190679993181798400 8732313533759292782727034115719168 -923975791510150393155895854941339648 2806050039564594244093251210444800 3286699283801873853343535592374272 -929486258188499017598802267624964096 7823746931990700415204766508908544 2106667723473943604839978056548352 -30769913916620188581814859257085952 5664734616767752588567722617470976 850617191241062840270254086553600 -316320336341077090315659563019272192 8794285169116547440810637205176320 1906099072361696669531209570713600 -42790934503410966753967612603924480 4007943574735148656586905035472896 9929673406932065971445583633711104 -792482006815846954252164947383418880 7509733369833965708686921222324224 2903371025760180356311503469543424 -357979821671241818258795053052854272 9105028363813893565604046363951104 3330999028345145048338747585724416 -974769947919619910287184604205940736 7064516474246103223665945250627584 9810842356155667740848519406157824 -704484752799213031668172840402681856 6893486490856434331989813512634368 2992066752544180546793370827096064 -71929539115485759996539786424745984 1395833383246430701946826307665920 3223978577284667144702284133302272 -100391891445049762882262028888571904 1849753272355532561552176519839744 7069520481369909541177719384965120 -751547159971399173205287820523995136 532541438843582545321383027539968 6688951874991246287439908199989248 -682001121555128697424274504596586496 9263643449617730778855602598707200 118403064224118495667311083520000 -581933373630466594200378301283827712 9866497355951167597884962366291968 6712741991340746685809119694159872 -509564894600066733916418734399946752 815464715331247552767357892952064 9713616517811471060541739234230272 -387759694171660365526628957545299968 3064070783508565779274145678229504 7415357075011786879479929402032128 -550132708061908633534277574193053696 428741637607505427754243271426048 1425175479945228723216293122015232 -892406269507925685300925734930350080 1753130681872533034416736120602624 5842127416540177098292364302090240 -658688695784221577418288220547842048 7823352354594793223713982496374784 3561884613804577608404711759675392 -311560309004565256042995129700581376 598199506903854000582196776140800 4832778821515752164142307201777664 -113985327680076256109483734046081024 1331413384115881040233584614440960 7228243631088095087325280630472704 -896054562122406020209453435977728000 949857558265461242118435931947008 1159712051310276723386772589903872 -107385921418523407091395303196065792 2145925747451181812022503377207296 9803683388131410693629372505522176 -534532698393650298652892144177512448 5254825722012634293105300546256896 4822071547387724318857092998889472 -70106498251392005370575336708767744 7793005170273611050826374037110784 5385571419172918975048629245444096 -732193081015599120767439778260975616 2908462952102622439321004226379776 6925293126324238243979691437326336 -33676175986495812183395051553947648 4810435020832490287504323852107776 19400123982839997026667878940672 -498885327661388526861515018813308928 9538622187649694529088439988518912 7193248420958493059270077944168448 -846011505544627577850639622948782080 1349593990458169718113003978620928 9214090486548185464652406009626624 -425988017225048289981839176286339072 8119623211899293887554633418670080 7599926410106771608425461845065728 -454173139151867597563422350380105728 7017371186560931298197516960399360 3503278427741257019699977022078976 -692404637379993957828642347247730688 2151865616908048932227152416342016 6890924223786217184355932652437504 -552493369591771984850327627246862336 464605848865653190473343647612928 3800206112783541889179469519781888 -764230088974286562489079488076316672 8763502143329394291215054781022208 9621595403842519252219989493547008 -645493946651165191334710875762196480 9278171387073893356943529648062464 1801787638958439789166792017969152 -196400665459233156818955276059148288 8041154281211308016023692254380032 7581958241222623335075801678741504 -141334484911935244580100326033457152 2499426801049596777245118063181824 7703907523897725818210478058373120 -535788224595594373398707738341539840 4926579264776289732854302474502144 4962579901769743298922776979570688 -396943943468073365374005817345310720 3409507600465751918998891838570496 8892697604084343120952168135262208 -966859823612786775133234383376351232 6513910716205652200587450327760896 1383254496411307683795678571528192 -821616437621986959532781282378383360 3327270972411920066463142674169856 6107840022845067300511309080035328 -163571790646959624761167058034491392 5702650841417675633373834370875392 6850524669585024726955656715698176 -165850782267207273059831357059891200 6682273031943687910028383738658816 8467449176077761657796691606110208 -343657366882961847266061420670746624 2007063302252255119465753763381248 6051874479659609191475327086362624 -73023692542268374539957793686814720 8318919219904292059088999778615296 7335356362511669973831968951894016 -456095903549387223044722855694565376 6861264029637093957708238051868672 5042988568242443360895054332821504 -122355600169322030828906245112463360 6598059390601345714716512029245440 8849250968211748488628236535726080 -39859924500288489475473616742121472 8074328891874435639260533191868416 3477208517585627906068883741605888 -200573300376235856981689195821006848 7524669571272272878924238709325824 342510118060071036261878447734784 -122613185456640567210580056114987008 9746298445146873068357264020078592 8840729577336272934843747374465024 -805991498454271417681812379117027328 7052689131562355332516622970650624 8899038314048464837540708293279744 -317499492807349613432534605173358592 8140755600109225578987281964859392 4471033979497190057608672094191616 -715499425214409934357353511589511168 4573351966809656134720607100076032 5497249371987752580387987659948032 -519519977789294252795358026265526272 5464212617751664627473275366146048 9741941795919742275002966204219392 -366262980830304127811782929463377920 5394219589414934294495388531425280 2128465191883634133883631242838016 -601900516735828998406929929958588416 5331533018084414130525169155833856 6864471068049338504134790544883712 -368851564142903091433795949099483136 2192335483192220677527203244670976 1651852126181112597341698944663552 -89531988270890885753528279923425280 6444906470066105283562911924486144 9793743220684382645589554208178176 -368306103768987536715751503939239936 9011241604087181256175570535841792 5394996913489230749340775368097792 -684599186678017224401877259668946944 6093738684296207395064552332722176 1711678635743994105603454899585024 -894874449349108227908097402640269312 7186462906299176039800134457884672 8748064800341825224133125563482112 -253770427919075384425000217778061312 4121938545208704336182555260747776 6950166877974811337724837121490944 -887353816491100284901601561121128448 6497754031606390617492043490918400 7347525811031270365099501459341312 -234179959957953516334337151322816512 7227410559654727731808439621386240 6541139117522277667032138441031680 -128606784532329857632966222293237760 985779236217087768723012376854528 5297799552133418735630911094652928 -721095048738123240447465995408244736 8719890096673014407139165233741824 5489212920038121855109597012951040 -631563523920979922902231803152564224 2689957940149036145598211003777024 9260413660036449463328615398637568 -454832225422340491149630711940513792 5192138395420898642179451785314304 6466860625522450292786021638602752 -535037496031669454464420264525430784 9939925784900466614934813949296640 412111147846516809889415306412032 -33044611655020821634577059142434816 5706511187619985016685026412068864 9060365165329764750282875327217664 -500830402754075850326886980108943360 4905708488262662235286943567970304 7336229041645129882092731440824320 -558256187158480462647941736907669504 9313997808111529051452735982927872 9885310451561490871304656183623680 -122349746840882103867490128770367488 6513555216926860953594947163914240 1489652356274260951120098388606976 -95322026744347338714833681899323392 3315652518162674369558489652527104 417041241660713406488868380737536 -903076735419430538370929562006585344 7661723005177735669440535928504320 3464184686312596203297882301792256 -263892855587293149703707438115454976 9655973859104760331308931871670272 9098060380736783466141919339347968 -54766809075837906878165789012131840 8873893242972588541934809519226880 2815201868841259464892033945042944 -936820250319277182375925988741611520 8383402371554326886684911562915840 2485919285014792000933827373432832 -872309289886185297122209173610692608 3006009558939102116525070377549824 8585698674048459870358537244770304 -72266532975859162740982383357460480 8233054944417643003078443800723456 4404149191344104468896138324344832 -980556337050910566306886669102481408 6111160573109776471489744526639104 3917792303540093433894183542718464 -723913684214336416654281226445651968 5395576740855698837584580213473280 3750496926233470147099398743523328 -348502729726364558006206501992005632 3121718782694991745762001193795584 927195105973606682518068104527872 -874096184557616645918580879885598720 432072653914841811519610837532672 685099988811325949542227026903040 -92076201385009027597682169536839680 2500691408059882795828402389516288 8821301565861044250017953833025536 -528072794640306177807052294093537280 8957666052372153579503513038225408 8240120703342342005353114490634240 -750419452470975965227909712973922304 8033623707981808090887534195769344 7410420345112244955536730338885632 -238193828644309817929396440419794944 2709149914091323485485281440694272 6852950778039731699805971938279424 -747504500661803184884384844333711360 7629098159196178972635519755747328 2396994110685026123497443722002432 -897185829554102149154178798643576832 35701888985280299497169864359936 932839681352177228884410103758848 -246151530683571016140156471083008000 2217201212559682819668408801427456 5116462025202244752866588477095936 -462363512463968006674942691718987776 3295843585197661894733333109145600 7093615363087028143380126530273280 -595790418702495266704540150838329344 4009205291286051702573494316302336 2882025194577362448884209222156288 -504664902407330421943945929504587776 9614681194035923909519237047123968 3642372903988183077357951421251584 -332853036800451396587439216413114368 2959310201131920925304109630750720 6810194291522574744494743853465600 -772057219326851742102347490254651392 5377037437662098671935678903746560 9521821272052817195972074414276608 -457918354769015061838711541846769664 3880316470237909441623353162989568 1784224254102058018538825317351424 -68686622247720483575766855328989184 4323386990523936914941442583953408 6434486748666908825340387925164032 -657288041332742636779074395339489280 5767794928644010535792980361478144 8845310717364888221738135046848512 -629840767094438835764474534439157760 358541470850792745300261427216384 1857399158050810850565812838727680 -994359273097363324517304536982880256 2075589781239101336653527133454336 1186128750821416088412412224471040 -481493697451919174849661029966675968 2699367829045953479219849547743232 9637339747301236102531055586639872 -378194305322979954193750520634540032 466598188244111906356372371931136 9542154530622141813416922017955840 -681906075286414070079750807606001664 7831798740710392143662962029101056 9101363675316952399648257302593536 -935424904947220582553052047980101632 7420227849316195363433935089434624 8922400488338651152343681799815168 -953061890093491148693332807938736128 4807840535804542712967491525541888 2763603777114609707100930500984832 -532698879434949971713882782640898048 4346484733175909132653347727212544 7748097724684336317251630112178176 -417844812957247913152346434832433152 5896816459033402916491441718951936 6897354578408209478537374693588992 -136858623514496567021777994892967936 6828347318932825242223560942944256 8720945618802462132803710518034432 -482952844366390157576262729110388736 7738980706024875084392282097451008 1856791550649354555187299962847232 -549594198404363037717572478836932608 1623952108328756869794056470790144 6671032270931590610257424915890176 -176947419334123085788382981091491840 7367957358164895405718764099993600 9572574315781040258626641352196096 -305569048561231541259154958552399872 1763328664791110324054464739147776 4717840638804131473295038358749184 -906003619001942403181016726540124160 6193529394735732476193846329344000 7649947968287822099539159974674432 -687986814217294808332888768960790528 4340651433977222729934957277347840 4399051331974538737503995900723200 -67136422828940070628405287680212992 1686419374332725618414816617037824 2898322492581143532027827453952000 -822969918423958567342195282743918592 9488761818850689236312808031780864 6658136952173352349169588021231616 -288558022239970757717752496458301440 3176168559402638520313677489373184 4494775534074612883489555203751936 -866684496191443263603366914942828544 8089416258695410119388137993011200 2028512527643610502183499987943424 -124280062639267963512169966988165120 8886597337291586877125450897817600 5705277630338879420015532694306816 -888380182586150032422249797588615168 7871335519953460952393513317695488 1073166060114437420060925677797376 -76725101225069472703065311829557248 7362147967602361313024649254141952 9373571194879762122816830174134272 -663928176120760996437931404814188544 8917557675253501943867376748462080 3633372576283239546778370739011584 -306729345997859467927567554324725760 5690485861500934055115116079218688 519293779989932416532178966413312 -973903782676014151366378588204957696 5002719368610914906416952022925312 8717509521236497277499914053484544 -275440874266725223122515197771644928 6761522849543460816737731654713344 779244020802441099266326739812352 -990035051777878187592343268905451520 132520577768690459140743453736960 4038197717327192923976980672544768 -554499718053221321372964953356500992 829344928021564353704263484964864 4964449707758696414487675121172480 -685492748569629974039093373917200384 3389729063322277692018038526705664 1040703823445220064297045463138304 -269375159926973993780181626855096320 4327484634528089445514863989227520 301164995245031140226035206848512 -803179757724145959670606017675132928 5592583184361133447754382330298368 7173806679851271823701829031559168 -794466754752119116669999251246284800 2248681805072335035836377822396416 3638359923322327332242232491114496 -566015834886378296652437482358439936 3265918983985612558029324688556032 8144664208679499318679008545079296 -58204289644401606400202776789385216 9591469617156289668660482615017472 7916450332693371289314843162574848 -869523871106068716769439164558999552 8257190778591061303046889917120512 278111965937386797991831573364736 -697765930198547828577187371962859520 7575079583480596250143687968817152 1505856373056812880008265068445696 -448619931347275325460959102981111808 6395306237777698544145146857914368 1528600044069314351346235937390592 -840791422806475650698125604405903360 197666490183631771663851759599616 1661113279641026223977736039301120 -809550565153063215838077569237778432 2825623776193403187372714744610816 9504089816132131169594053809405952 -736410247767367689298833158399066112 9570434053086398753175192385617920 1697631363608942710785991640088576 -320678476246626535896212156318744576 8884823196527347200992051428589568 4624719455127626163337926193184768 -939966501971312722544935603800113152 6508976674214334597198959475687424 7233780781197894156303651666132992 -690914217978887874477028969157754880 2149551382406296461666646891692032 1706788195728056704688512890306560 -69064098657784254900863244771000320 9289984372241512070515205504761856 8718961111365601904082379757060096 -24239044277675327814308835717283840 8471762545704711953115416128126976 3492417126847091968851145337602048 -772982814790553487295194805798174720 909321084082716822616157949263872 9918190270101591483009961547530240 -580200274997522393707544999943471104 4054020895503071824388850383323136 2212398266585393489031295592824832 -149362126438931820679950459138473984 2495061939197846386897121966030848 3508259077334767516318049870282752 -669096864788278643445482418461474816 9751900368809400319983976080998400 3693603387837292054179767264477184 -749352631281635077629796789503655936 4822583511087343885154903220289536 8597552864978324782805862295011328 -609795304074316423740752686651277312 7873387973940277005819390914985984 8343563766553603432473387182587904 -167431015688205114103945021041410048 4061399515804369996042819667492864 288287163954399484633393198530560 -839260443720143491177960893212262400 3713248108927185010791569042702336 4013454521349236454211499736432640 -493457030981552344156624072617230336 6293011974864697820344517897748480 5033802965991646911302432150519808 -601749034154149117272252105709584384 6201246665493791316190826502029312 5266886099654927591498418185306112 -251206937732094155846825021806739456 1437502837391243022291470836039680 2480942087747957447720976911433728 -497054825722129468457755903208194048 8589953688238812988138326132260864 6460182058751924328353536799670272 -592309567952984582707317539203973120 9296365161180881902987253194424320 3676283183211081239084611512827904 -787844627887526515535936570957758464 7376709288036407090203065982124032 2316365626169065143426468829724672 -799319913288223515851907729738170368 6465874324025714870040468639449088 9102788283562055229400086097166336 -685814767823945780947653876380598272 9528325214556803257969914824097792 7329909604611929458565125473566720 -73368139197784352994821057703575552 8825179190718986700199700398604288 8853162435113078829696701696049152 -282439387053470379182373535504924672 2038960798152860142240529861574656 9040119078426886192834871761567744 -663849328517028692589736288030031872 258922291511275302105653394276352 9178770245082998087995464911683584 -38670180090578006241217579109580800 727277071690789419200836658003968 2142247831277521404625920383254528 -16295063484948014774521963145592832 7349701951218091974132651691868160 8671818023447231342302295152918528 -478863575906749180182060018618597376 3179463139402914259294279581040640 2238155725279346386402287074410496 -587200891479878425786247097819856896 7470238677387235947203514005979136 632238892637169557706523646361600 -955483538834972067621433282236776448 883960436283999918003259244019712 5461586051456289884009488030105600 -953300984088792016625127424870318080 3000670559444771858835511799971840 3914144132332743259260136445706240 -890541795307131269710673800484356096 1388536988628736760856989164109824 2090719999430857054682472729542656 -253679049542447860575163349733474304 4444688921407188156668816606101504 496029640958105932516721384488960 -734536360306860536460282294752509952 2534409590966687489715394544926720 92029239054848712356240423911424 -276172616825074401326679058024497152 7230701464702499348897036794593280 6451370860125407120087046149898240 -973044046749952831507833123483156480 2778621525753590658567762056577024 7658909827289322031710317974650880 -81076321849399814935162354506137600 2522077577628716720695226834878464 2471569279908503338294192608641024 -762965236933646610030188889032884224 7080603775498847157396580841029632 4716137709627427637717489242079232 -405842536539268737972380070999752704 8074584024094373335692266667245568 1715954278114865360573336907677696 -182669176211901137007345229168115712 3073266865615840658780125348757504 3532235100614881397502599644577792 -11799811694076694399089224187904000 2782390752112330741307657106227200 554366463214221523593725078405120 -550140245967673260902436123753578496 4811932358896584560256503963975680 1092552354714909452008207266349056 -907046874611911993590172090300891136 4991852022574613818547998275141632 3478985668633291607194966970859520 -281958791414740752392406062277328896 9888142225234042286674695415660544 6181212641470862461086249001156608 -53228265093537943292889108991442944 1714367014459256474782188531875840 9483089718191285032518496999702528 -906152937007585344695233875734953984 4870533445420495261899137239482368 8256894538910039732172066882846720 -988354550109241326580299584493322240 7520208193841831352861939082461184 2309513239543794484579368005795840 -814078733217653105191952302844411904 901069311768601680857267284475904 9281887767294382281516994745335808 -779125674361339898190614114305310720 9034326518215916668662659395092480 2842544548033001812752563571785728 -863623622986675239501723146718806016 3897176871110793023724378407305216 7040772779813899272064336660529152 -323042916854594229213916012994363392 3735218279717848566725887737724928 3149966226944234234429155835904000 -417655393634643165521395639346266112 7700299351834926292233464047468544 6117186039298015079306007203020800 -896690586721896609716231793998299136 1896908559464788623826106091307008 7493395836245957175346447368847360 -485738681799597092319199300216160256 6327892776689694271331362970533888 8015565569012179699974918830555136 -986299229025323139686602127234301952 2064379280962437643151686408077312 1805388554760782926246833675042816 -184143951627200922992930555275771904 8232806440574021898174353958240256 9263506595653023625701768871018496 -117130531929253880327677222416547840 8541376588251077165225096553431040 7761635529082278287006394243612672 -837408194044915571998153180348153856 8848622680426780176007511438000128 4343713949196968928046796064686080 -897136216371704141027000331282677760 4984647205261795541655251868188672 567143325741354469113569772306432 -248926861448886550490148541267181568 2996661149325431899046807282384896 5142941132733090854957974143631360 -706038546504684584870761970379259904 2139966044912365635409974627663872 1837423411237980898635260153036800 -584242559204276715810215052085035008 6762891745766218655682694601506816 9784292729334066023510446069252096 -452554342695248889422191967397216256 73385540794578143426923055808512 9069081177715749287251447853875200 -355932416965809392748670881647034368 8749985653303928418822005553364992 5906325072433048020719483813363712 -592020665248778031407297660847128576 3593770246703350069862676870201344 5829492389297321567239444885405696 -469881643368395593553501301732540416 9882306122959707609849781681127424 2290059508057662404034622075699200 -53439318366346580223234257016848384 1559260098924335000042165449523200 5507109257159621136679953361797120 -842584201936561951413585780567703552 5838551818542837879423815825489920 8415701601361920216901361038524416 -444493349521138302903771398081085440 6691296918281874117951633794007040 3225649738255918541474543362375680 -381519302168492729359490323371261952 5443200151801301631325663756550144 7797414730051636600821073435426816 -721167272267935220160080530177523712 6397493887911036993277314052653056 8165029352069915006376741374525440 -920788191327100025703499644092284928 7317484681578509825483009274413056 7369077633928394661233546472980480 -923791834462970627832637209278676992 9776616705779807033768391196278784 7205021199773787679141569453096960 -709065319396918569751661875308789760 5187362848798576480902640327196672 2518959315049896739608172358008832 -20609532482236468529278660724654080 3710864822611354766424418734309376 4406092626656609615342729368174592 -145735755311803437894878372187602944 7850241766213192076572410305839104 7892340731247568770118349261635584 -235123239767575179285515021401980928 6849856829355372188861225433563136 2785158814450518755434971252391936 -983623498797254383235093334461513728 1581601150339142828408812848807936 9230365469321355396745321137569792 -415541332265758309762554254904524800 9479382061707927455978285625769984 8091481614931333856672123145158656 -290274615045795266415920744157413376 6750656059269624669932241314381824 755310179567413421967444098940928 -118147819991999010241394447076032512 1630979819226376320143472724017152 500532236360443375876522733731840 -910160890875203791622652431500836864 5322510402776567071294506837999616 1204432126992887384322566820724736 -542264158172680903653313006662582272 6514777310359622189771130576830464 3206988927106236608864788630470656 -611377840552507717682247934054236160 6373027549888631948320258555641856 3345931963141673009863197930291200 -511158444269869244300524263470792704 9571069310093352830653640281686016 5548216273104409902045007429238784 -371624476540579840171958134984671232 3006811975140165052023842399059968 1871471213751278797573230344273920 -745025885158377186229507529778397184 4323751778459564910381189944049664 506962342333104538410271283085312 -391588625578551880981408709477400576 4015180626871964177648629078556672 7887211017737025967640507026767872 -601950897293827899017602903329210368 756092064284917893082605187760128 4957344163002047950113810388353024 -648451017447480188033237245973495808 2680703872526746338806739742228480 4058156042689262844771560719384576 -881833853287616245589835161635127296 8040607714102259059751103181619200 5103125199070706702620410024820736 -82159204457893579963394303583059968 9154474205519403979033419259576320 242483331698462775930499050242048 -956705831010642207977008524928483328 9959864507515441151032667467153408 5947848296416594920164086081650688 -836311421653583974351333900454723584 7663442267407345269009114361495552 2816410192804670809504287989694464 -20693623069886067101414547890634752 6678223934293559659651540205961216 8730562729002470199523906852749312 -84154808859635034152650192499769344 867041615561872677585565217980416 6158759204990588091159860310179840 -16422650619603545957503612500312064 779730685167520019291660135432192 42639186149964958662223416262656 -539000838473915087293497292368117760 8283829204217179838662166007775232 7056136797382651155496463335686144 -837651779438446676463954968533008384 7014897927107206489049315258925056 8164491516407023179592152825987072 -306872185455434554587692854262366208 6415113099957189437646218584915968 9508868692360663189544180685733888 -49868341669340539748463580163342336 9481805046315983913763408730652672 1295282707218937394226165230600192 -630378163718817237725509941997862912 1464060735145283652347040123322368 1113885440257600595157810883330048 -741454572158894990298689068102320128 1228088445603283107568138636492800 254681986288171673283428320542720 -871198364100127601782141385936207872 1448786586308437420670222031912960 2755757209504622520473516182077440 -361413151893934770909945779709804544 5336524483723456284464009623633920 2253978594893875358350725846401024 -572907236974864533082437653597519872 5416913054651024941254288405954560 3649788153990466427556421286494208 -816199630137139054295471368739749888 7284576363078934023625340184690688 1357977019898921880280872987394048 -772439267030688544733088637842882560 6562075651580502160131552706560000 3354759749731237640866625621065728 -536081479911938254734908185806635008 8620010734724728597111963056603136 8702214776503446388892128033898496 -516212293412062785149343254861316096 2275468135700156811413306745028608 8133276905892371934096104177532928 -892554864763284698125934841774997504 6332906990445360476534798861467648 9026023896979188468697677202194432 -696743452827356376377611566488485888 1445208975833395647971010256306176 6344743604919680604708348381626368 -885633467922559137262270970945601536 2562251852034680174753749617606656 9675339666715641565124410600325120 -107122692899441892664371346497601536 2148607046433646949949854351097856 964701140099206493048595665649664 -573705668097012809086765254083346432 3197662181867946933282075939176448 1805035167709070370722205254287360 -912210759808919061419720415197003776 3234191051201279348861656834768896 3326594067599469312848387716939776 -751996610709296301928142862454620160 9449576053417286620760671824904192 7871036881006889777781189833129984 -195155270982598631630505877761425408 4668902556262761048947334741753856 2267180166571071408936440880431104 -307163733039325884732802173776166912 40963948020313241111028786266112 1615659329907132895860475165671424 -151022626904417919762709960888156160 435362174369048654534240370688000 8612723068500780508826167911907328 -259451889333388198854326849611235328 1795158439819996959682801996660736 8165555571932092166748312921178112 -349109560389826188686464624485203968 4899064775155094255956237788119040 2197587691703124183612067153969152 -32014208855189209720163684793188352 9483674637388137802830408809709568 3676276588567291941020744881799168 -530594125049903884189937576139816960 2890841250198785577619043320332288 1854287222995985619840727070539776 -527153266886408886040429683961495552 1214467800003236387299132188917760 4166959798846153336547078001655808 -731660369631018786002402987640619008 8973587589785791063887249772904448 8323592858265216849648101969887232 -424408421443712648787216962095677440 4123572163160561055245556168785920 3872397086873405026793672996290560 -151421473957733284258331524362928128 2546454645571447943083612767780864 181301738427926993190880685326336 -391697557955288415362827973279350784 8161408191822487775947228312502272 1382128243126720140065396051935232 -960499321500302067786720319880822784 7531699598552330883257713228251136 9230195043485468482933634476539904 -264184588572469720943919401241935872 8117599400667081717928794571931648 1218877390461378386419214291304448 -520271724310801999535564990151917568 8497670673930887457280849721950208 9557297029283692871218958077788160 -812779299180827435547913871901589504 6657221082427646987146492232335360 3041360822505761716235428312383488 -551469000001650536521469603325411328 3377513585934043330904349078454272 751726691320656039925429800271872 -475999612849962449047291083941216256 8713765554374942661938842970357760 4461328145666747270375830720610304 -925009446308986118059730648124358656 4835655681506626423079331271016448 2901510623595488519206416901210112 -643650483636018132090286714424131584 9270970438107498547555752535392256 1968964767241732718646210674556928 -301490104272880664885946332095709184 700511594921726244791058444582912 7909483904632661991743604119306240 -524211496263533139469096529707401216 9275077717718978976813662049665024 7352479701366602919918077655121920 -394557647468258597698705788038545408 790864975670811586292067206168576 1948971872202763007183637991915520 -568559583951957662185804909701496832 7889956138564668279047252160282624 4430407278870607742749870164803584 -914964519959528017437091611560378368 1256666884895345998313473406140416 1873401587153282478630269549019136 -78079308002528646253753077241741312 5513133843761979268177492210352128 4865926126471460149450241596194816 -365668748720182531711801716623015936 6680658531649918066013841028808704 2486800116860852997602926848376832 -297813945297162943747519438800289792 6422553317761572549752722282250240 7403373163501219450156548041474048 -763687797333952682947568362372202496 4621158690422201386761238953852928 2025225493994676511587592151498752 -572248207605065670219781891663331328 6402869498635886995844535718772736 5652865587889362476052638026694656 -468134255619576182868887883604819968 922823609640711959127740592947200 8815194185602965787319086149009408 -142419663822279948102181326208106496 3152424049797199996710325915222016 9031834635350349341778776464293888 -731030217680021386198547664543416320 3356911784835574876426696589836288 1982563088453932007854441152643072 -186683098573728413346329717045723136 9823462594600576351746197582512128 1291698471419990450798456423317504 -810823649334867928165170252833882112 120134071235720742573314439905280 2550391361208524387349187354689536 -459380931268948427240793811519012864 5885671264944856155258669630488576 5691401456417819376211943296598016 -407041004273562834738850439423328256 1387668440304883533566443285118976 9123653248320810773651306192044032 -289686775602988282863749130329522176 3959941634012271563016500108328960 8814774026334672271289998014152704 -750262631219922409335137619647922176 2311392160714339061703264538984448 6537194527053832604889958571835392 -125962295965617606963190596118773760 8650762294762952936002879508971520 2978373611960617830474450833768448 -813666816052567908895271800277041152 1933020137018121413569726828773376 5372243881698220555553456506535936 -769458231017028415487901970190041088 8837225447284828775476498756796416 8309928343569993505706203771043840 -729366630526631768140605327272837120 7884368256147897665614146451800064 5441845978359645038896645276696576 -801920988573352059586168845441695744 5106240299413736388020340168589312 9946100618910471799381984068763648 -883765677617131507548097375618727936 6184119315497306208952073479782400 3342528745150105960525834806624256 -959773980964357814067190118991527936 9292925247471484577926845019717632 2989223511970868017868915882328064 -597181519118292454924875918510915584 833833865913579779171832500846592 34504655896220995405523690979328 -202599406824068426289442065498505216 4618788811363163988698568467677184 9390784244409409014292128320192512 -677803009664448406421670510781792256 1795073672075712702351237470748672 3026601991550036931789756527804416 -82375027310990287325332155760902144 5568785607595817374432767263113216 1664528980809536968242730553573376 -881685980172668928414544920871698432 4927303383552191855031153703518208 169276168350424136239027046055936 -867936971280645868328187790356381696 1513023369469005449811902209196032 3893369346471442776319595651268608 -516707912261918192790804358282346496 4554967545392783358076283342815232 2052288013252358280836974748106752 -790811470935963190817730607146074112 4237774892229209857640151616847872 7792448513148341991231223152771072 -380444894917931520821418166730096640 2365047448255285975145645500006400 6907534493677411785576270855667712 -525884746793422346745590963750567936 9092352229109954160108037388369920 9285101268316727661032581839716352 -218058173581187097875290791109197824 6075722328218180898324181466218496 7049843519351196210568270616461312 -332078226008213151629513136204152832 3490490762982442985467443735953408 8259431408344554053216099358474240 -329079212591470092671203464060076032 2987412634047242685250938345619456 7871118185663059592416945888034816 -844286470051348739797183951970238464 4981936390043672055741569187184640 2541113051813445507956759613931520 -285142297542722309008559988184973312 7420595217701644319184551657078784 1714222394569795571357231121170432 -779443386703902802822894093753909248 6089118493778180903767743762792448 2716035533346310553820371148079104 -324853496571436998570910878990860288 2310736584088216487267778309390336 2377535049480619034370492633972736 -525389758378274253010114404795023360 9149882155800709503386868760182784 75377715855029906073208922046464 -9809344305314373457152707892609024 6787767990326888308135983639953408 3372158896533009254620405566537728 -457751752055425742775961396495515648 1022749941403745545916153174425600 5134260211897955206066031172780032 -120439206968928624308496444556312576 2169630633938478814045825235156992 4031609065386741632140997254184960 -475059895121749151503521697713094656 939757403397468752958003141935104 7057909829830360488147567849242624 -639911956503356191158078861444382720 4911204375906596135448935974043648 8403986897049577297970858024763392 -121193963347740584880266434001764352 5697981553439774137357396644724736 8510499751659719406049926553010176 -587845820055354406586060788966883328 4749940279595496127622391946805248 2601172825065523443547386662617088 -213783792100822374128321958649004032 9772736070638442287976217780944896 3893751305604301054846810835648512 -35799532994253117024648432797614080 6912179076316394715537289003401216 5514465493161053224572597305344000 -348520045564525554684042230083092480 5432599315897764309169619202998272 4265800972576030509207495500627968 -192571082147446062998480601374261248 4245632550713550471896859037138944 1421756045516395694257000627044352 -327458069527409114333449343683526656 1277393044571925454406902261743616 9124266713575304296192260744151040 -78108546258938064973189640393588736 9643737586165586828867077459148800 5646842649947950948495125456617472 -388425062998498318480222410390896640 6732504611451064690511323659763712 5665756847959663724329352894087168 -655273343269547523426052496840196096 5685462036713232549947965049929728 4568888179352226505630220938117120 -610241140595597645073774982931152896 6304283859331846997123310903361536 2410398312341989162362499969843200 -367020273662791029500064684750929920 1678157957254042983312039232929792 6799049665406145525051049218408448 -699145045775407338200477410906865664 7634726720844631894534473310535680 1211349717004488137578318615543808 -319822809695825482810372898875768832 2271054239352961778075753615720448 1693159105720323911316319701565440 -981368758711755685589101126411616256 2566315876621270687084225746698240 6513713977811453768159593916006400 -798515874974669984404400275521011712 3120142411863200131373384054341632 5260639214308860548694386365431808 -256105671670746994988860289119682560 3225739214095153725263969288978432 7479615854080175037844910294171648 -48906837404792815326228236321423360 8615475812458047300395609400279040 4275580681326940858830122467196928 -829222943945756367598959020134629376 8826758492003502566511517638852608 1892405741436624731361779120078848 -391871946701552957517284719896559616 6498576245552672087848088470814720 2304672313007483359478692033069056 -628928407823739195874187062372466688 1273118198903824778923806503731200 1183066340007656641598495108628480 -917760217370809828179193245613424640 9279775904809841269732578819047424 8927636785921225312973455689252864 -354898608200839236185757059758686208 1330301254960159166837717569896448 8159577071057975525228709935054848 -402841255495818121507739552740016128 5104333909821964808909125069045760 2133709784973938941260545598160896 -272269117270804670848537265281433600 412843291957942169160481719189504 1923552859810210050948345421103104 -296996622330215275544977984846823424 9830661368375461819705651676315648 6843050717195651896059502696333312 -516312213386804219636358026188816384 4921376605081741582982430595219456 1924637918093991336245445590515712 -574423098079422256392733503394938880 3435562787840280362574792955527168 4591073114744908960520823940055040 -178651283545732953666711485589487616 9572853127906474633311556269506560 9984012064947975748275712678690816 -394937319584573881656705400195514368 4341062719004228693446112952975360 2519673018381964895036766184013824 -422382696083932405369898527478513664 3008559932327370686062321773576192 6582202100209871369649810365743104 -703737452135810872191239473250435072 3611063395875672147998935500193792 1783318116660643110310461342482432 -998023788141826509467856458267754496 2445175830469259316222176773799936 1564219053462348937984869417353216 -693132038671172152819225930095394816 7514654713731540390649882621247488 1332739960155035459997044085620736 -208702677586823801937900198825033728 1455328644460549054015681884848128 1879869025885149561920900508418048 -97416139205548439421332363990269952 4186880369324440918048836341989376 5506672938313669161160714777264128 -883332186307200634206400305088692224 5251440863365527066946431558352896 5847704039263962349057214773198848 -499332610758305659834377340933111808 8794729326008924852372727117381632 5279185787576766302754052335730688 -9707173873782765113845543514144768 1659047034661982992176380752429056 4673916745443136384812254572314624 -670404833988395109504174536980955136 7233739227036946740980996722655232 8473834332266419872695173020385280 -221956675518442670928575335472562176 1789000275051949901942942869749760 8793988984690930738441515645796352 -729865466105265134976115436377079808 6001917764100544121563601432477696 5017479594921644981839810594340864 -802848280584800156571554942998806528 6506279643883609683454938247593984 2726279542081109383698793575219200 -331915756150057877464029309377183744 7765400758113315696337813432696832 2673688758369296785227087085568000 -832749952377067074997004134026051584 7963750030880112734805253739773952 2932044841634283987283762212765696 -676509681527920523266784969336291328 1885919231144836911560121282199552 4615889999958437699135615983943680 -693199588771348270273865051919089664 906061640127259943807002699890688 8016303365217080492842106329497600 -833605478456835598366890325459337216 7333398796965472568457779258327040 740206778941655393807357051928576 -509558827500134144594801731066396672 5657135090025334619984094044356608 2563411060067749928058032406659072 -721717311300838682753999958043525120 5527696815909385520053279107579904 4767868469253770405113122963587072 -322036521907548291373047620493639680 1534086644504625316265635956654080 7925960709921391562720745036447744 -493061448042339174300518761879306240 4188513509896315485379068023537664 6944981361849789307305325418774528 -905677219680089641128088964706598912 5772179562061491128180426640719872 9450821598024890056340447124520960 -383755295485431717497041379244638208 4729863728181187814219774343249920 4510901069195321077568097656766464 -283038916737788375254368606610259968 275835599882642400191918714650624 9758807595580162139465094180896768 -475642590186362524148984308329086976 8281858959047703792607779746742272 1466857886937941685227343770025984 -756365412323939412461214042005962752 5370400730561456468762312208023552 4026891471995118900277919132680192 -199856472923521828390636833113899008 9385747538895474518005032691957760 2489179261605637485248522158604288 -190026582571247359189367180056592384 7917072646009664031555907397615616 7109385051978452210846664996421632 -288711459766205768249229062732513280 9524312691352253588249613487308800 8570903927211412319405470461722624 -51763571707828202373114847112986624 4739651707864537653020649563619328 6994909999573956470291755098439680 -303765059798218442022661711284142080 9461634487651136621489390677393408 7040962728566185832728532315275264 -12807398959960618412076636479422464 6297032492724655142724780169363456 981253178878466888480459614846976 -666936355745374103608463305916547072 7626411533547849814579545997574144 6443679998622618318591213309001728 -162957690294828904665067677338828800 7199773840548762870918421432762368 7737515090068065382525703643201536 -114662986052917713445397645894877184 4652718869860817557458673238802432 1670494941803089791972468106199040 -465515828455928606259971494783221760 8687480234866891205250248161099776 1472674395622417689711168068780032 -765996366578029478060083117996113920 9957238068597141232464052340391936 2569029562380099916335747233218560 -613176919874072090099175150093074432 7491938982415420907978064067035136 9674387996256039119527991796826112 -728737637309185768591390853551882240 8873995095978579891225312704331776 4075602424977364555050866016518144 -991101476554448664747262329680297984 1326227912484828549563325970644992 565439891556965182859272236564480 -410484490596437616917206261798273024 4949071980476626903728940101140480 543434345229392670917092576329728 -204463023933433159816383634641780736 2057324901398775929289457881055232 4806761628517096155695641914245120 -760314260928971368155389538286436352 485652385590056826975006496915456 9049313729842428142116819410354176 -893206584568981072569836928526974976 6814299610859346788204485321687040 9327717333375076125081057978482688 -539619748891639205492313754257326080 7794000213977944408193522858983424 592787258768993326246103879778304 -926788221405273821128130594443624448 3656176268259550752170201235587072 2206886025969876019158665327017984 -949535619897442159239445340768698368 4490924709916406061711847520731136 5088059627054603765883880941289472 -954541846072018919813024798845435904 9330845615296655742850213066309632 8360067582802255371194309831294976 -186939277465780203122683106841067520 5268988191446034910101656261623808 1703187715864140050349331291570176 -445508346031915865424200844372344832 229456216917387100822034379177984 2859047903767934958242229343223808 -860913099141063437264462421533130752 1041134936897562164712361408069632 1686078864954828724488275083919360 -720891456700739538210129395169886208 4905459407289684282164753813471232 7773351264932869682332318568546304 -362895158662734049004842358212132864 8045230913299507500875270368264192 5148257588266160670894010792935424 -399068876177532884652288477847617536 696136062871985896836185188204544 8867731223671968369125278011621376 -431643870710000705346451725791264768 5555848172809337286061867325718528 6504192566568685281413168648683520 -431164956278715868444187104508903424 7180693091152415543213669016928256 9261053849212392135500716761415680 -138724783062747067358129504275922944 2807005432523079898632629606416384 9366632623632325493540558171275264 -177805424982475425054238556177825792 6386336273609978916459615759630336 8846266457273865026514757355569152 -971288633891702055679461556534378496 2235306438115685448404939015454720 2449786385379957044143368779595776 -904398245214678726763991297595277312 3162934576373788373756404337475584 2124815906254925297791849105195008 -200028542357483614926196734253072384 564176647617367011826377418604544 9702646951900010243886182148603904 -346423367509310467448903438828568576 252355362254023795831424010944512 4621393699469307549601132334546944 -651962944082051128596716339408666624 7266779402919593467599608319311872 725025555218306995028595685982208 -510307651730031114876920668499214336 5486741990780689411145264311304192 9977478867223298432709126854279168 -667126724474985295659900554266542080 509184640369839539365867136483328 8273041096708139471263038712053760 -297929323551489465559667620039360512 7760083880455671479478470548914176 6047071020968607187554837899247616 -240563723857551952410047440108912640 1680582662644718595500044716081152 6692666895193463324890554779566080 -740096856975498195500217096250327040 2497120811300794021893157257478144 3369377393205500524264082292867072 -779664688552729644106090233246777344 3708739517533293269088677750898688 9364117808413450617443624079589376 -931488694305766017859202228946993152 7175881046862798974210198221094912 5381317877115854744715157699559424 -723462538308696664198198162746245120 4556920079020614589967727367028736 3944105955793185609175486657724416 -167701103073275498723114415177072640 6674824165576257277035440943136768 7916218880378929118214786522284032 -915256225344629105153884684313165824 795619541057297583317982304534528 8804139452793734818351473068343296 -406170594218374149820036956569993216 7818081155802880261549217963573248 792283718509835490046926657683456 -76810455747077191021031074071314432 4211210926361942667009012438925312 5222125657958596893603174184648704 -514544374041656526868852702078566400 6688714833547760629740871432011776 7505773767941750447819112159641600 -342057383145731406815297588479131648 8944602756194158594097017446727680 9731027070153770601368793332580352 -445337085838863925645478181126275072 7808540798773070129089888221396992 6157875685236305079779061837856768 -693511540871179689789167323658059776 951925729786684845428241883725824 7830459589453945402171663434383360 -142342882798732706515747589043781632 8717715878371760250110746225016832 2402593662709707070330634525212672 -298800242120274112094387557248270336 353073450781568715687129463652352 2010883790500943931366776420433920 -994248537447394014779621035212800000 8209315910378021476001563996585984 5825596854847200164280627279953920 -218084644892123918301773190467158016 6338687313076305296051986348638208 7320913238897958656304166203293696 -984963500959587906957832657360125952 4668977511872059402870326070083584 5904937574321326968463021020545024 -198446131170283473113354715975909376 5901187183238815912120865978843136 8469133623033553629346175498846208 -901817040626631015559606756293214208 888773949654491791926079642402816 3685354671904767075950991679422464 -842879993866840497015232244320567296 972192850128392006027380151812096 7760528938456806365940456458551296 -329480076079638772524265418482778112 7261621112671294760804033320976384 1922915736173095407583500838109184 -165416797623722110837432848411000832 133662378164851938867434257121280 4694724760881739118253064207728640 -566834999926924232526684239796633600 8754221407041060779758890487119872 1250210821023890104740357743837184 -383879354428901025389986064369713152 2334039686069731647580375921721344 1855717162563562362805948497526784 -756293536601829399921764802274263040 280074370008024798253918279696384 7467560513012858094249684324319232 -472581480664845740326934218201366528 5877655804992500093521761428045824 6536447968722658377524575920455680 -724092878581246687278896711196475392 1586259978379243988461877781856256 3231668689631064741992661549842432 -864478191074478538427608556332122112 3588389883389581330470597654740992 6656217092360355544411187913424896 -100224151002901542142878868706426880 2893266644833831867814509870579712 6423830906851664295881340912402432 -448444383097327592884134743658987520 136457657222522835282556551692288 1044768437526806125804087746232320 -526716299070887105119255118462582784 9147503531481661452866763167367168 7161275137409090310917174425812992 -769761342636631588506341080223973376 126452923430539797435969358004224 1666512511963553589074341478268928 -718087205881182128401660717708607488 1029244504658760045871193464504320 8719359308458603737273448785772544 -83519402884689922548714649142951936 9372572922922793949044764852617216 9871830006398625818401003913871360 -852571989617891338009566116604542976 5498498006709477508186921165127680 3246273016440670745602698929766400 -910185383781521072626385036937003008 1283345661273118387635617481621504 5085391145833935780969255559757824 -961963399166150742918777873415274496 5576855648282891795331275496095744 8363630732959378534382072152195072 -402992184473389883199588200228061184 8934941360879223641415609011404800 5794724864489309826283214643134464 -828043445191796974013602461017702400 2677545200888452179482703080456192 8249001199379853383625471070044160 -783096507019089917103102298777714688 6277498873460235248872260989091840 6744311186211579333349845533458432 -131627999608358728274721235930185728 9213626578008753927388217548472320 1048074558153712415820516062920704 -251968359440263401595702107105656832 1700138908753508827938023402373120 2350734765146764445741930908745728 -856815238167845104394754424305614848 136769447067531816594364551921664 4801575461536848127806995938934784 -363762613755833758000811556019896320 7649893227891706500081601839366144 4609748656384716191719013029511168 -2762618601550486051300559929999360 5746698467076844145383579022524416 114558383353221178906460951674880 -853796503110012744006964457240526848 5503785905423465190299567470411776 4276334606429385535559522697871360 -323780423025554544799680130296315904 1736347827820206112918652890120192 5573438375231718043595385258115072 -305078674990105508266022159375138816 1684820279959600822100120114823168 8187705219327587329045207369908224 -991548263092608415966307665416552448 7074135566243701286201500228386816 4854469636784150637715883462492160 -943357799552812633049766286258601984 1771996037178523337625440337526784 2830060914903468070439521024475136 -231828112993182957038227455075155968 2287021590718434870498877683793920 3779606663404242222006105897172992 -314347074069654180439986892410191872 2050607153709346029576769920565248 6475183394507302048602864593403904 -155703278948225172602898453461204992 8334294913185783458587780088594432 138944971735855409678797426917376 -619780751743286359064923677736828928 1182590557704955484878790333562880 3072499433507228439260914610339840 -268780527264070766165586123165794304 1758189780843571479742298789511168 7095362746197288494114840669847552 -756017390091912972965003557492228096 4869744075711882228880423455293440 659945764164717835294645342437376 -453127177476851417122697516607864832 6665912269806660455854705951637504 7996066743498700435560322020933632 -413531376182775737200845985910095872 7043794601988110791662397625991168 4023006033666043036313341906649088 -121810244226081172544180131739992064 9376988831747693265595238191202304 4555192584247707587685842109333504 -900478229868327017769288246524641280 5168774056700639755856484434444288 8454159804849983208609317633654784 -595956677603717464741479165326262272 3487139559089628587332502927966208 5521013010012719937094897337630720 -423144232187739095442591991990321152 8169532719599733601036693672034304 9317820628160709421399191266000896 -147333967981083721039872418356658176 1953729825503279331528170784423936 8816164496340674685613450834477056 -66024890838371150895566328508186624 6191816903677571620565100374523904 857162064678474051411158587408384 -808600571858628334330318961470603264 984970564613701768633999291318272 5459532246608433179439282125799424 -81175650654995083032871748369383424 2007320869074473229415970592784384 2233252228009520871947076894720000 -928264545837008493895747299889381376 9024061010871956514091809416151040 987550564748441305472746861363200 -189822722316768377254130320393895936 6444982257714900415067653979242496 7568763515890960143807109899747328 -898672261320690798624687034766196736 4618816497753603223250000532209664 627667233211102532447997884628992 -811353742525031282132089381811388416 1108292739235064706569422396981248 8322666982990601338687074028486656 -765650332570908526677940515530342400 66268767025060116991839448334336 7322220945928354738593475602677760 -479438201236614371463430606430404608 2661455495713545578395659522801664 4608719023084806390885767635271680 -418934119058335060815735195510505472 5266999887784421170264826940751872 5078484617464781928311987923582976 -718655591434799305893805678588329984 7347713225431903256911763833094144 2347727710247618524262296738332672 -15585978049464633011860531631357952 1044860582803798178868751329394688 3959943181319644854070384378511360 -683877293362648587052838462414651392 4805065740684047464904534026878976 1445482634768215612871190469672960 -715954499559081381287326067172835328 3778217318581038121352478809128960 8307281279523589032474463262736384 -810539816778003913660016827928936448 2036446765822904916734332802957312 7567980225057012747115304394424320 -795893792338969151982499079309492224 4645406743894865858164798903025664 7190752890768126350590050046050304 -298977494427858922225841086400561152 4841101714825268332861492295630848 2849047752142037475678543855747072 -356775681259909655302077902315585536 6074057760286517877371968331710464 8126213314450158797638018919301120 -879422582087960285906909382018334720 5414266784254978617903871015518208 8076572410639096684130657414152192 -202544178009982831406611974267600896 1641327361912430906967192082841600 5367663403286273224183303012089856 -624296512641032335966754540829540352 6814560436614315731339437127237632 6273612079613510281830466366472192 -450897855779416435013967434605395968 1213446297893049811601923155951616 6297999544529612919604033726971904 -945257171496888692786087970480324608 9154498972218557460952237308116992 6737434669928532567000020930265088 -517197479962014326439627648258801664 6398985296000420911943444085080064 4762138522822067826305908384727040 -468193417317640957390725072684056576 5420272564813009926578836523188224 1706969147518591645715502179811328 -495546644839568230151888309581774848 6144748504248701694471971507535872 4069176340907697511724861691527168 -28267797084128474865324914848563200 784196187302742358306933576826880 3500439015677015229145035801886720 -211188157925866258933417581006028800 7107449195301604598886902613934080 1356370056799254766452378225868800 -3285500833334976617701045946023936 7062317062464507543715742138499072 529884550452539351782673161912320 -74804979252163018990188246528425984 8864621657202576725357874217222144 9161354310819430234994838857580544 -922467378450851579307554220145639424 3987282022845077157132377822068736 2231535268348500338618388268974080 -105071143528413604700583200475316224 1776640784135513689197562589872128 7813272809436857185071695306686464 -264532552379141657798318787714351104 2880642992451387382363917675134976 6686656879419837286910758307758080 -677732399561636438911611816984444928 5847962686775009232928004275961856 6337360664915479478747175384514560 -143258087530444039081432162116829184 3969639861579353805048909779697664 8705496240942014986839040437780480 -748368724151019452257820903194230784 9303618173396607643489970922979328 9433820464079435624907775863160832 -391521618042453615773254913426980864 4354383446918336858997264088039424 9064185843919963648725536896712704 -283152943492063425263403254574743552 440620602945547081559341843611648 4616173074927172119681974119956480 -875158670464997099294850594704982016 4321257907691584457853279016058880 3305672208775964096910201727221760 -20557765153959857003928400022208512 7144841223328495283437582176747520 3952786890442171898733102693875712 -148519192927292690664883740055961600 404663532590746727235917287784448 2290808812604879402987382152101888 -61996445498991281136760481713750016 4659540760915175560206516297400320 7113013512980304793461651167772672 -322425595938610224011162902081830912 8871268124235212969500328071266304 1688323585680573120649236351811584 -511875095371452301000529749620031488 7866396398497394053246055998291968 531045818509693700329929479028736 -99924765251127520710614980965171200 5150113670727946671388132131209216 1769811162493130151886193386586112 -884462759358819923685622542011203584 478108214762254185165511817428992 7974362057407378181075922080235520 -731939097219926841168801356281020416 3415781943471604870426270774591488 5627028034209345726257336667865088 -448383133958761484872642014717411328 3538454721695085336060762544668672 8521574068745583784811942490669056 -703190132967992018091760066226028544 5495333194836283373133330057789440 2453692562400365970456212806828032 -851883555140318937418013902676951040 1448569150664460153734127228551168 2500961637639117340878808044011520 -152362378179833280962815269334417408 4534060444687107027900887054942208 3163084103856949308379508368211968 -23374258744068761871210438060933120 9136139644532651510744366968733696 548498459252531625380879351676928 -995192866039877450868134308191666176 2693506924735738834150777136611328 43590106004965341209890541010944 -607573336871236715216902152272216064 8545227444693601790717571704553472 9231353666680155030104318249271296 -444147922633336962367121878935404544 4683840770178771061245691679473664 7949564041202608068165656259854336 -208517231023631448481428181071429632 6585918965519369380332296097234944 9820966752796449014379532523667456 -768787892943383615694085070086209536 4302262165531612348007633704189952 7052436504618150734023677953703936 -702119666576496646857184602377682944 6298591982450102409974403689349120 8402988881450964884379728389079040 -678805374501795132772791494457163776 7562240580053549890280896520519680 803177659486307098104272953278464 -943641017159947344264813655583883264 2241501977084493807663213568851968 9044229346798914224965045169684480 -649475198106177001406691752787574784 5724376281618381071964113955979264 4987099855005465629667564879609856 -273532109762992826642901904469786624 1899593809676789431933373150920704 5410234931527952105708538881376256 -918479692928411617807986155484872704 3234221163036758249350669036158976 8559975407400801614251109071716352 -384117874890168905287253915814854656 7350564026170407886656209946673152 3263629580595658032552737297661952 -918696159246121839700936229065326592 131520466809264315864718768078848 7699846874859527076355341457293312 -348572387967098593922949220893982720 7805684362807352991905269143306240 3634737277127757691396967505068032 -822708392277574359677721442334539776 2459111273145325172038331090862080 9827481787623002028980941692600320 -499222103449998415259122418703138816 778995226867935643680831526928384 1890801632011400002369610814849024 -254749648429889325222131169161641984 8524126344100743153555821173932032 1699609308686328274624085569306624 -311579275995024035018797149912563712 1185181235746710616663973787860992 5664566653161845928453984682508288 -517526351792172374922340078689714176 8053774938728380039391094291562496 215776623333334215425746479874048 -540732194714052317777266238717689856 6690761818073586851694212737400832 522538662273896292079832183865344 -976963674573429174176553818625409024 5063006814818946301645530259783680 773967004150830027537804448235520 -291538978358087898500488803267903488 4656023159194291497296302406893568 661380032592437847802409471967232 -13080277055503920344025005207584768 1177745724433076932310758651330560 7617100304741018382472596284243968 -498294987645004989027693228562841600 6591795066938252976431986007605248 2808121379426434587568176594157568 -573405429088884505290772020411236352 3051474660907580041140132850434048 5507595952204817658752174068334592 -777652557768488361860763792290349056 3196934246948612917809365303427072 7988476127782513489558756013375488 -348202662624419814723118833751556096 9665347394577725475825861760385024 1635244003853726344448713781411840 -754422025033779734701747472517038080 2194268260516387314171026568380416 3710697035533107552186646646489088 -871155861280508601154814514800099328 633271701986722312505199500984320 2476224027737791063415715648241664 -935820117998671250843304361705078784 3799310573418446117477383514619904 742673299508248974500117591621632 -576653126576968073222621322373234688 8262408535644904860385553216962560 7771145553254983127424878243741696 -464070744000610539354800386427846656 6205845153247295755587895542415360 4601601730493750759898787746938880 -511922742264328943588773625509969920 2815146270382141540618428758360064 3755665776168946480417062585892864 -556209306002009148990910182438469632 8759071712826344619823871186436096 2274620634628985710243330150891520 -68355998974601214326678376562032640 270873756333457897734087771160576 2803381727162558770678340268326912 -203794075085137491240626276704190464 5240715582948356560852398003716096 8842209022674451036859616492257280 -545385542120493539333125385532473344 9800321807183902974059234965061632 1940329423123483386305580835536896 -747400678002905953272165798961479680 1593520239146400048176444911648768 7032567358743618957511083092344832 -586292330912271953756542724804182016 9760595181990335018985657991168000 3327678946303179299124811210424320 -899579323017193890969008058891501568 4180926025735803682975936327712768 224976609123763660448054500130816 -381246107090526179613177669492932608 4790149657761962223404662938140672 7754169210583968435563522663907328 -778713956862773487525936391698513920 4363388475009205246349583218376704 6541966613640455058919433904848896 -787513623221418822323413142705537024 6029711162544138257639081651470336 2340680154058398569700891335589888 -18579918093662036937915100708208640 6036763824377593246703890932432896 3964868838815298207590375529381888 -199752828156019112111430043537768448 5824520326906626557948174182383616 9168256456521244718776931470802944 -520899852156795505943746768072081408 905184368066275512598391173414912 31086804111490301870044440690688 -359776327423705657163057007240937472 3553499717733664880350446063976448 7134157050372406345943628967313408 -910412592473999295380173051911995392 1571305105982714925207548239806464 1127225058703345826146541170065408 -913002843194005436255387994273349632 2683748048320709942998940633792512 8671340128917453799957724848455680 -150608390892225586154882566908280832 4308574063922499398678677582512128 994002794006001025004670231248896 -737752144603702917684613106290917376 191921484781777276977870928871424 9192076718438753040481189078499328 -923528423912483340107692421211488256 5466546362960165008851804293693440 5044023136763756203640049387962368 -135809476240917212537003550758141952 8769156354315292736265884889251840 4852699811066203158113789402939392 -771004116928973061117408438107766784 3975098543841159779883329653833728 1219359334521854932182576847126528 -155558467520853826763244238693990400 3038206165061436471125141377515520 3556779148171651331812137633841152 -595733565581638912657559807288410112 6416804003418253347848544690634752 8209796274846809665184848255385600 -626544998845309179988811162335576064 1889607740738203391864074728898560 8066527785160963727768693753511936 -380309619586192595632630661967249408 1000150170356219147906988627722240 9015911658087738467820480642416640 -945753739448814502115267233468907520 4804876504147221241112118811426816 7119137016031103433733309925949440 -92517455107291249110617570924298240 3144077310815966779613331920519168 1263640329724420291908577997619200 -760684478995332313876896629536063488 1611165791378567021875122235506688 8153704076619473897545929062350848 -839393494975423694606303779541221376 6256494262422563929572774573506560 3842270095173680238798618243366912 -229562073558928597504410021787598848 4058374222833016811142322671583232 9532412289716541737895986443845632 -397944570197301160433406907191918592 6240287359681254694437275486388224 6086845930053018803433130795466752 -17377437724522416777685615574515712 7589452052717448463771122519769088 7983291471324695282659864201920512 -569276131232737941897331987269550080 2856015666149886301361773305921536 6623442636012528880842258587320320 -815194156226892287183943775400493056 9531649969356990853242986606624768 7406583592879908771119814422822912 -387495061857060058824900734198218752 4571683803756187612024368099491840 1101894699267766835553056285786112 -989040391087787808558654883977232384 7023070184617029650280844456099840 8723468572920084574339547013316608 -656395196061526818128286695869644800 4153741952423871125924507472101376 2728317141253135149173142372483072 -453289854206480381310435102430330880 7734159514269350691266926200487936 4574896449767943384559747426418688 -346261714257279464665257268570226688 3015447269312562749812573816750080 8345466310770039761792071601487872 -429732317325411680232471346666274816 6318897838615045987301605651775488 9646275979936382188027289467355136 -917688109776898504190967142523338752 9131264588914479276644337480368128 8290648844905944096374119118929920 -585990499177200370304394297052495872 7075919519142926001052344440061952 7436223989283814615831740671852544 -268223614185136982005245126140493824 6604410819914038839358585315524608 349030611586176752139524544397312 -15172812130062865189032672685457408 1602577645152775307239566467923968 9880758474713217922948430041186304 -987440201698827775229734171137015808 3878963922486108353118160830857216 9755539378736990876908960404733952 -468268419137891863772149989240733696 9849962146075260263613358300725248 9555165370658130211595823605612544 -628148029555269389773803368675803136 9361813789700795899851922011586560 1384514857444561050244298152345600 -970743778647230003134157668504043520 360836297603571972518270321295360 3231147495582427166510652497854464 -366500954587482823710680584724414464 4841733244676725561317320778842112 4397327515206547422028450238562304 -487536248145084540363938387105677312 8522555917057510804536670268948480 4455230127791375281835993896845312 -929919529741726384440656203056414720 7898065347960994034500349468868608 4772869750080212044987504368025600 -142824072831811777035576725095841792 1921466916835321827853543254523904 6810186075845540700282949377982464 -739431593044530704861644518934446080 4788710308265295595773813701214208 7081774444327851435662096168124416 -940075159840807164143020361612525568 5897632078335895665244372371243008 9279420976555581435286496999374848 -83468854865454872803277421466877952 411976555008843414271532407455744 638481981758482152646334413275136 -747490765454971841720297018250756096 1097148889902728981468845847871488 5945543717440847289316548754276352 -127979468687253543419778760498479104 5228046520268190334535281795923968 2855313156493958123192514095611904 -477534609786218976101416558177288192 4801567979598152571969658679197696 1134379819139710866544083995721728 -173704576232013394298911161657065472 8125216230640420163956979909263360 7450290925526194870057448171896832 -458421086741657302033527236173234176 8287622976253445282386788655038464 3308406456698467807325152622936064 -852016226382614352708512231217692672 643464054334700734782414975401984 9744700721553463270141990547750912 -217442073354248352535802353689821184 2763333045580103005670368014761984 567662545701430280193164271681536 -974653947510608811859797914161250304 7066758437994366925409695312117760 9014880680031616333818347026120704 -479925137247191327223105092715544576 3412797986691987732975443679117312 1480606622928208166832148907556864 -443851124250701456016905656455921664 3072464317381088105385016690737152 3415881882301055702088294143623168 -495678969349229216021811220357054464 5383121741323529672642553958105088 4369432592236988806154377861529600 -967878272094023371241576690305990656 1471328120139205330140738363588608 7442942701046434369787029815820288 -198235852943226177577528712222474240 7475844559988324362234512801792000 3556311928496475369541471247007744 -751604194048593246288765054303076352 9806938609080926164435251215990784 5510193983203988996356000140230656 -735069383458785171136546309574492160 7772465517784082873010325672689664 1649613396790310588826424709218304 -587392556654066386837561920419004416 6311167337127852593954606897168384 5040776697859193702434231283613696 -330468215746479851136613014067740672 1403929601405713441038199915806720 3662151854098993551754593115832320 -693017246531172392786425597149577216 3553254753756443255763176005828608 1680704337971220790138217678503936 -620512949300020155056282675462537216 8091337216063499921259751578533888 4342916477374548917349548466110464 -393731666502100689486615823928786944 3701221700705356157562599117946880 2012597155040159539412191483527168 -271816664955625788883704127808339968 4677717686200135833443756782125056 8634956160407226611479543896080384 -59896954188047156170207188817543168 4073869915152357043630756652384256 8308627515169446645296804336238592 -516923704289736148512139071581061120 4154338779116524844380978721849344 765246592231243483768484928684032 -264936628456076891306568582571229184 1154500635594280574688384126025728 5116565066355466218708870277103616 -130871368340793907195679346719195136 3397035606264011340384611302637568 8382366043861254244223973458968576 -514326825965670437214995263386550272 2853219074620321469967681070301184 9336836395192355352090135465295872 -516314992142438746166174288332193792 1673462395106970037531740123168768 7097017709201739344932008020148224 -417799815854198986861362896743432192 2025101331862901752761073644077056 3797747662046440652984612995203072 -652167655603008505583858903326654464 4565014927848396144164329754722304 8976559975258664515826193683972096 -376222292880941257359750498292334592 6827909704481243248673218560524288 3453782314242489819821860206936064 -919068522568466499194885224206958592 6464445156585616684302012795322368 5161820211566248849698207467307008 -914946649137255173257115946463526912 9699973808682558335742255141224448 6838721880287825095942047317098496 -541513430378887774886752296175140864 2843501707872274201384136424292352 3243021493414749343783520661667840 -466218735765721613559351120731570176 5458678304450041702525956920442880 2860528481997936002461166387331072 -564025979527078613936042305361281024 8308588186798801529210770976407552 6798192754405886556828077876314112 -115954714417806711427697569351860224 9661961192778607991663429693734912 2516668766558466382972526843133952 -634309899827022935625660364717293568 403943926911672093126004878344192 1685279655483525912656256606142464 -22549273960369355825817218728329216 8270540513076530166979845278400512 311448221839662394817732488986624 -490276257298948837738337923586064384 3974856628536503113832180177960960 6023041078570437138125399238115328 -821887916527218331627625858813919232 1551316859126676190465594904018944 6547718889116615970678510832320512 -365327180501092478906488068646109184 4417350977938100610670879876055040 7652656150853129592168349740040192 -172255787844250482850138858681532416 2604889188419749009619339410669568 2855714511166138341373304547311616 -850658959602519172305080267300667392 9936774123925712448308528495460352 4246667863734640302306897392828416 -202487361844292531074291613376184320 9279156591015533476732859955806208 7615540018312801400427314969313280 -263394780484241555439792117348564992 2181260482966813650502790173163520 8452083709346809104630686202986496 -52110894344698563964465984009404416 6911974694873890538462613872836608 2263871577609356547246623752716288 -735192734222139990035998792317140992 2056128053649350096087177672785920 3752920299233574865265555687866368 -586281239205121845845674316728893440 7205768204804830059072535916445696 7376724440651106789714806574153728 -256343581322296571306513628624060416 2466483113117937022705702348521472 1397797435978015774523300539006976 -936131450398889654703173941508177920 1761836595085058738094476680495104 1337072301592530930650336345456640 -231407977952166324049316119788388352 7168696926799757514213057143767040 9324158501316656146878183440908288 -390567171380022347453156026270875648 401271288701906428292360707244032 8442499242281519736494091459887104 -530723918625905191668729162533699584 5158161618810238407953095944306688 7000865520548383016782838429122560 -111187862570724106346931526695911424 4872354929129464936037387243356160 1468995345108721391597993794207744 -574372123432010047018687529043886080 8273449153482508888987020977766400 9536015359187519235435812012163072 -287781770697047777450926609199529984 9982050330203029287235988794376192 1549426983772082596609906333188096 -307223031373347973738452146588745728 1259510042585548198060426545594368 2938822151378006038293249611792384 -877776387603330785202981845705162752 9289954223621091429344320107315200 1647178837823092827777184556908544 -264394444006425256550717677692256256 864447795203004047026549443002368 7001999906626894996123353998163968 -636618098878401186439553830031982592 8699229686832005732777480708685824 1374033615320564689190251053187072 -771257181677722315552946734535540736 5596463725857948932732903627948032 4177518942450224154587186283413504 -295902904726440695342591676663201792 6732028316431652013429747513032704 4869910373790576044248861245440000 -543941260776198210801547445241118720 7660910076835876500313638950666240 1370533755821442610144302482849792 -416959100128871783968050623239159808 1656441587740960042992257283915776 1018587510033013471452777299312640 -42470248343901672349387304963407872 7742355611346064312283081123823616 8553248556739431989013908310458368 -525980015578847862921603021491142656 9274824261787690318574805590212608 2649771253239587733870261120794624 -526395216643283968886359986056200192 3495338460690201701586447580004352 2672227617120172484962506021797888 -169326053425388535625430405818089472 4752803271815859323484431619981312 7176368285304821015811475713818624 -863193303475269835335854388783611904 1210894019485478445598145568047104 311942609083740743692672057737216 -725470199774768244302205134424768512 8233418436747641556947839666356224 2801573749011542537894872811044864 -210624983455819784706586167362977792 5652008279339815941019610386530304 5715779715560194297679075583459328 -851243368079859971335484255517016064 1815612985323776664306293330149376 739974661958133414038355404914688 -745197381058305874050076223173820416 2325875203641902695970497473019904 7977802095441438766117167787147264 -352545117753921509523402373038342144 9159857193776963506715996893216768 1288883756985642885996068739219456 -6359052791921770770474446306148352 1878714866636709052370499586228224 611080036864146134148326847676416 -607932873908451212859729655137042432 8594583178175115303633717286666240 2265454383423544254628415542394880 -87719657881218593564163760371793920 6787042456277303089262337080688640 6975208797386652395251785021784064 -98356777665624662047489445278515200 5093715875093494769412761953763328 9596202019264533091173144396300288 -489339189505239815883335876233658368 9908639000329289443962629694423040 7917638439839400110139348084588544 -946864453148319268993725040273915904 6549785539353971686053540763009024 1504476906385440644632884103086080 -956827260109792256196931405668679680 417498847251438901001783055745024 1214205436098131153696309358100480 -315321781407113356149703116442304512 4656589301422735133395024181460992 2988826613535908920544789935423488 -237245008958532188039644289483931648 9566891558737498755503759288172544 4551221635122783715468556562857984 -525862982032212263953091825139449856 7822791565055716849135170617344000 5234379562608718895903000995299328 -992791119430628100118957728364232704 2429288314679079868824330702946304 1631548643258214805899958017851392 -917109038283991756700530959519318016 8582859389361298669306291268091904 2726977615418494246730996824145920 -161906477660808714189837247897927680 178167196447408725196785689034752 4389913200045549993115157979463680 -442845975907836564557618069119172608 6084054926204282780742238422958080 15411910016136790325645063225344 -381893763971368768178509824848297984 5445747972367451098344144379052032 4966839131257011610905531377516544 -13706169480072531107387564017844224 1879161261685030490546626917040128 5365549839937792304867494009503744 -726760373603207185010813605630705664 7249781007481154008686934620110848 5560338691897242999159651706077184 -617579946931980613492476950490382336 9709634236871890139884470805725184 8491802633184256034558912912949248 -218170339551683071871531277791264768 4728981603781908940894658050916352 5901932065281342254214876221145088 -894685739281685802171133866161471488 4941214980556540374239122968018944 2382408092621086408796849609637888 -926448782026798493118297485275561984 1877432027659040341346902547103744 9789280194592993362665723695988736 -999997090593618639718280954638237696 2311351645800664174848520797290496 1434248187466260405183894228303872 -410879228254383235861048116388036608 7011959888685410125668728333926400 4959358898890023981389491778617344 -51542121878077755123737853312368640 7514486507581130340403138976022528 7252906887084774763647263794266112 -847997404399624372028256095075041280 9018043216963922972193770608525312 2366841850330876561894542543945728 -120605752027295212450418181485363200 604961981751462560553447387561984 7368908208950637612964077281214464 -53778917230971491937062394093633536 4512617675801024160296735346786304 1094667583590603216069316413751296 -895020641256610644515220349201154048 6524103740931736212988357609783296 8066146111462377745110292953563136 -148811770888800880765055308291637248 7592521758180806818292517646106624 3498021561890182942235095155605504 -157753849771908099861280319265046528 2466576521716243595929711475163136 7878098958874259222492177036738560 -458256188390640955684221964272009216 4974614012951893523080165401296896 1599276089825690097111819920343040 -170961058672211632474052045268058112 2092933756362944796518924857376768 4489530308599544918236958702960640 -176659596542993111222441974664527872 4657425248053423025250868423294976 6995345466461731556666625199439872 -191673259959272856362724447836176384 719004017288514110297553571414016 8913649307623532401447092252311552 -724957194081103748063716859160035328 3705600516263140513883732624539648 8395756248766428743492795654733824 -712378954023373621435671453963911168 2059210839337685934782784190021632 5479497215764874713435513227837440 -980822792423992252712974897421221888 9569464881345338809216326497730560 4729924757712155212883231303008256 -385956169762122048440202318424571904 3509502267170790599679201626816512 7066795759992134635106367789072384 -177683175137189921274545738134585344 5602119083549522113573979334639616 2991582183539914509776202535796736 -249517595583228679403036701498540032 68553839950671810769151066112000 4294685563433477300103814097928192 -437617011434019263846017711646703616 422237248403652438169917694410752 2392746564619518209119695180660736 -178299493435892217854357520015949824 4511356874172730959257972038959104 5956380555540597164242966570598400 -79368176336236557981800243998490624 3579161116706031795158731072733184 7901989296435067148252625483333632 -373546352716455016886692953385336832 1794329164611382250590331092336640 7780162935541514850879817591554048 -181883234302275095677108646517407744 9242500532400740071754069050392576 9177905580523623638114271900991488 -312666757192430327483556675341778944 1643313694537896320813386514300928 5587522657750773925349498468433920 -342152469594815180747596816392912896 3498945265025700100221382451789824 5187179919867066337061456821878784 -921505089015330466726481129480650752 4078466809500319747593500889186304 7784107696432794499687037043474432 -919152735992035469880782648328060928 6691564969617185739046748690579456 322638589786253879204423940440064 -658785667857152307194226389951709184 4919626188716966107238832564862976 2694385638249896280141075604045824 -448609145117322519908442935446732800 8043747363175225671050095600074752 8909012274388301343633222278316032 -53884913660735966033098781927407616 8624413406715667924640739245424640 3766260439553270058354051349741568 -621735800294877358146138137436356608 6936076877345432187007484913778688 3217263124454799665083610724040704 -246754901241227324652798256095428608 1529242996327563730067979377836032 6576543462062665457126432934199296 -220212283666630175185577910657351680 5178452069054539819884213216215040 6974120842382672710343380994883584 -135648831591378688728964662799892480 3271495201451087919293885881253888 2111632520446944071726758553976832 -252585932928105413900144580849827840 814278683627353953346597607702528 4282593752326570112417036438077440 -657538874495142074757196211325763584 6206085000818843558150799485829120 5770140633551306321828940133433344 -204575378225481646409002904419565568 2123248280683142606478410162110464 6605383143129450579713989451710464 -782973539333663237618931597932756992 4549832752417495871525493068005376 9331590019959198780289949475274752 -335946255039716747210149411675963392 5375645533911950609552354777759744 1234660414487925199685573769428992 -805287531626522560355474382253981696 5166055039619334595778937253527552 4047680331386490942823072230539264 -948972678679200835201165992986148864 2039802386115586265438601787473920 7284630219232554930223762368364544 -502353510697110707427491096995823616 5196373051602937429542370937929728 1381566356032549327221489936629760 -85706482614386574635576963662610432 1936515483420415716318360427823104 4317604115070874145826988930105344 -731520586341004444846021419657592832 281641353881818600770627251994624 2647685314921311709703238016040960 -910736183755201944546393280915439616 1056384730398393266061278890164224 617887208189817121425539519741952 -361483107026907476735478999872962560 9231578416892409154582687682396160 1149362440891111831922926940061696 -217784360953742940020118526611161088 8600845294362379743853648214491136 6132846054003286296401455809036288 -611603266206614076404237593082855424 6132945348082335413344518866468864 3914710573965296652702138245316608 -410647480778350651808250125363445760 2582011312961620601604668534030336 8424153217446419448947215043657728 -715106456329602708695386171436433408 3577169262416581228636000489570304 8959340546002027552784926969430016 -155784472854463648574616793214091264 443586344624047767375130092634112 4319700204765602883336963102867456 -99805393072136235423093347326099456 1293471015726277403043948715311104 8012287679776739374513176052760576 -643736820075250872601653343078580224 2882741097676231679770770582536192 9921804135699423408611698495455232 -374725798404815668767613489990598656 9305841849922083784287706796785664 3148918403118497698377883048738816 -48013006991148817045319864190763008 2346447843164230598844937423290368 8535294297067350159500765556637696 -116611171293572578530277946707410944 4636320424961680026224653693353984 7161295966692559628012877909065728 -138919180377376998981055663036170240 5546853861014628741848746646568960 5710916969643722489231064743018496 -280403878851150681429254436036804608 9842479944276323212737871286894592 2213681902265832779541678882029568 -723928742085816173601890314649337856 2862220802336881049300346842644480 4211699228626530412259726407499776 -837915081723183886502744479150112768 4841921888666143373982142480515072 1670682193489916184417446911803392 -862655104975196158816934751683739648 1078529285963505187441947132821504 9340680653938676232300647791198208 -274483080834641315581828176545841152 8664553792980075043432102900006912 280565528999466853543263571279872 -826671741619838780377304861077667840 533682918468743045097300661633024 5269027222016770614627477829451776 -588932678488203963183068924159721472 3917089496084254114782455630135296 1198862375189923412255058375475200 -851245767287705383375438135066361856 5219347530179479645491814287278080 3327277953843554973281965697925120 -917548750964925767542668650222714880 1379324105245813272056233409380352 90445760862555811167524035231744 -982145641604194034173240143186493440 2043597092993139071600282799439872 7927854053020713239351901898670080 -705205797768370545466582072884723712 8932903703399376830835205634785280 7479856470726790120950621295083520 -868675182261841205110262297796804608 2311643292554162231581811325009920 4866340133139216574058377877913600 -127575313324647554488567781067325440 3339949032053837912417465247203328 4720180697722774523217982171119616 -801557026538348633289587453985816576 3182476386739952018942954236280832 111451339025831666114888451751936 -501153369730458478437807471571501056 469049115600963863277021492674560 6328622100859207565648829521854464 -382091854323089984114152917992210432 2285974965801365797368464989487104 8131598200017992602143802502676480 -651708129270344547474809418275618816 7193824275572547614061666079080448 3348902991648681527907639573348352 -645228707217245421361442158771437568 2902271253852536266236352836665344 5517602348471598841924386079899648 -674571701457711346372703475160055808 8662280523144276312515131150958592 7791030342938049125229912899190784 -546899272539237283714600350758469632 3388274581129588594134304937738240 6705572293206480884167358187307008 -276612022183611634316195277909786624 1877764436527329738686850043740160 6723968313557805545183938900656128 -281733296600185740352006042354188288 4136920086271275662949697076592640 2223737469718363304831325141204992 -528445384459113426969160638498078720 7194996877048558996544003321626624 3914737824417308539821581796376576 -170024558282648490270332693573009408 2787731472389280441630474213785600 1915737133117426613104740698947584 -431713246628665584837096078238023680 1805439719953770541449598335975424 5205433962138983088523586285076480 -471459288810382815603286640150183936 8498900326080627845763500949372928 4817557279325065265413248029556736 -260418578156498865238487464683765760 1232598352521483105367306497163264 7155959150098763916745636847812608 -231356047607600894062837593427410944 220414826245329055404632102141952 3595391033079558995247279120580608 -757271109795421068800974923166121984 6929184020300456181054893407076352 1415831535882004889141381110431744 -561662631252221529501560079267135488 1965458704543280878601387838013440 7378043545513003864701138718687232 -754319151172016935831454588254289920 8214190585313173537018315660066816 222460197446935808261634098462720 -18585504585010481436031994281590784 2409741935960683578834764357959680 3259211521154539667451704697159680 -680140573803490457930969894549979136 688369040746407860437455420260352 6438129992361882892438936769003520 -192440804127785436969222788790353920 2669937612025570818390054961938432 1727304424670444540893067802050560 -806847019014025028814455529571090432 637803317774270734624507952103424 1669184422539807282069117570383872 -522665913533974382662184431226191872 448205426825541177001070265630720 255407524994368910940868846813184 -511253679470008359026498887892336640 5046333877497276197112294903119872 8684791280470485512827690274521088 -914665165337968947175523782525714432 1643831965842833696444685356105728 4514970237815289287327671396597760 -184692902467005034668536928132923392 694144701380569189070905509150720 8039760022689577872039487675039744 -371987578724146423434512820001046528 4112251001653464133574576572465152 5851682548554079475015996095332352 -491698434979809936797264638466064384 4618854249584971115324726044524544 4396152001748274915446741174059008 -88696625945366538909704439619125248 2129528358665583338292045051592704 3885263492704832426774110085840896 -321402417287323033795113137706369024 9151552320570440639471304216412160 83221402162872273611446047211520 -758626102353725651412432764010496000 6753411635378458000678341696290816 3508914653960890378983912251588608 -85646846132688799339377754621607936 5753627471786210690989746670272512 3194483526799534910335025709842432 -40361920837416887658085505640169472 2869204845242274335306541327974400 3742805011669558752930733938966528 -809603793627145185616512723388989440 993572948531585643676478891622400 6158039267779073293261445286330368 -484680262507469080662132797994958848 156769116330362557487044769087488 6003024781507204083632505272401920 -980143111326150427126513389835124736 6985130930916834771769180926509056 8179937417365504377504212914798592 -781987290810684359128859311589031936 8733990164191536316814838850387968 6306717905582355255423312745988096 -96109364779341520494565082131333120 4595441026717437257918463973785600 8861829793686640337910875773992960 -698631441852318127659754969412665344 1530953278461685068500863794806784 8564835683378265081703415171514368 -240644675622090510777163312877535232 8477997879662708504441154879619072 1306234804133257363312538093092864 -142463157609278360030801309923803136 5722826389111120193394789419319296 8559177783626012450555659382947840 -539307063611365527983043586096627712 4712594986547875467039475803095040 2452551922523730407617395951665152 -539452841310724743323724249795919872 3363921346648922107628490011443200 9784459121057307946771031370235904 -560692028560248645232713959697547264 4938524426649767510710561710014464 7565539929509007724587868510748672 -549801492689252035067360104668987392 3215563230136809570915756820922368 3764392394340276511827412186562560 -922343379312740170074338066534760448 6066852769498452295978343058112512 6545389359205032512885204325498880 -876305825869399158512148664838782976 7507886777131966195393773684391936 5858355656625054107266530727165952 -272300946426491684915673114127368192 9882868729978364829250591188320256 4930316201055627702919518413127680 -703077888786892937105612714499112960 5858589838289273097379067077853184 3069382389755755456196585680011264 -503917881915861974453049700072292352 9505120599190127847592631782604800 8093919772072771278453109206024192 -292304251979625723886356453461590016 7562895367685928243145095604338688 1348597291988064321134150310428672 -573661650456117261019028433844305920 9511765359253995289767500171968512 7877206564878690387975703015456768 -556438151581551498825299910929154048 7861795915132455318436230587219968 8214596938171189176453560958713856 -536254754549967770133200188001484800 6627152754725869016923427901014016 4954099279113883944955871051644928 -776797375501087107090641321396797440 7206917746550454455760631361437696 4191290421900501335607303175405568 -544921601220198465366247802094485504 9493036366718878194392682784096256 415152907508666515093880905400320 -94651517069454910460415067402797056 3406250990266058898730514122801152 6740562609556235251072344229150720 -80685955978968109473664507419033600 1065141488032905352789431808950272 7408541569789241501665971962642432 -475800589651280189485677314415001600 4540886291627614052677929867935744 5361424013692753530803786124099584 -273852067652202938856265765154193408 8283419460392720577611711427641344 4325593862721351152147810786213888 -295785979140619020647003022208008192 447664109604070266487370170761216 1522824739542883335263864144003072 -809069860173515641567971614516051968 1561003062582318276445097494052864 8817373366753327149894362466353152 -669835806189908486954998122481188864 5693794132744060258373232112959488 5473645379089869272340346865451008 -126376644543830888690551651309715456 1783619828855070689258173773119488 5943911820271608859965301769371648 -104761302024211646160446268974825472 9600224753757558018047024220340224 6955601952452792320077803198349312 -374205690018522669280530477891977216 1588530228774381117339400222539776 2040958834118763471180962541338624 -480978976965523524166920616856780800 9688678952024748304154203101593600 9387659549900606234508490780442624 -796471031418304170938263049571663872 3920336988049943243886371822108672 6525727651154592771134390460743680 -243306804519278040684192574744821760 1257656588119963830195197923295232 8342187434490319634993032116305920 -201044833627898212547912848671506432 4798979975650767228963432322564096 3569216543620575007609794531950592 -189869300031662556891406439788052480 8655360602936383482305886508023808 1013351866358080187855798104227840 -187914829619311514351097643760877568 7916580905232251848256772563271680 1889727985372971503356711062732800 -376042792571637789367871713291796480 6433958364374661975752584051294208 641243810217224172822173702946816 -546763829136390234605976447354929152 5856584231396738880097680992763904 8500471892120506843275141438242816 -433518789928128704453792630338224128 100013649278023253301048939380736 969720749589993092243157336195072 -127494616282102503003434720994263040 6054234962603409939611428193304576 8922834410971467394882763824824320 -171094972073740719661478015265669120 3346772083627723597464236183257088 7691791748899262028454475623038976 -862145760273600125776579504140976128 8574638238546959501180187982168064 700245525384002601898669129072640 -984824657111617354565159863363567616 1724973893900729199944910763982848 375193568127555465792771443392512 -763292492576797116404747663164047360 9112633324680571997031109083791360 6664192792660251053327477152677888 -813832223687311822560769552766992384 5584809272844268554876284968108032 9300318813179710156970908241100800 -212062118557237626669730553462259712 956405452747734401081857974206464 8452309305412413529660240944955392 -531315594192166959763661591007985664 4554886328276336215660996230905856 9231280084902984392116589234749440 -15986062656806723956460930514026496 3376495543859558480067109232574464 208532339511353174805566143332352 -466867385908755525023824249928810496 5761431357000038854328088726077440 6840016290572242104163545968017408 -495143366803252797714965430055993344 6374713278636202720774420877541376 662033279022269209975531308580864 -528098831043043138207668058535755776 9342311903305100229097095180582912 132456937107785056565883769454592 -677192349937810041049490372249518080 1827007734712870236097432812257280 5677349468634778670751416714264576 -452907171927924933021824539965784064 2373691030226388538226770582700032 4754158535103585437414925990363136 -607428768050760923736344432264347648 8561014924957370445416536066752512 2216375157894679163138740657848320 -497759077166759633615713086012915712 6803229096103063662072655725461504 2836848729078959997161634275524608 -182595620357414093693711899277918208 6838032773232077853379865018892288 530139062497367067525090841198592 -403824383280411535051817911016488960 8680725734600025239064993138212864 3494233788897885091150154038247424 -952402568276401211767468592965091328 9736487442518079713826277108482048 4443852729179583003922622763237376 -677770859851522417260977405158227968 4714310051951030694385907790774272 5333928374609851245943410168692736 -593537033181991834860956469201731584 5374310746852373768044127589498880 6057215318156396716107303158284288 -497180881475463265849211683851993088 1795996748931293002824649644441600 9068660309284408728647170867068928 -838619079986083627052082385758715904 6174251922363235973127721889824768 8404129882091943391042966829137920 -120517364797791094091055481202147328 8807489972098791890328236477906944 2118253652808309003930940754362368 -807621982392393829798197288564162560 1550567866193221837812105050324992 4592380011258682381505793265500160 -784438422565605843149506662209945600 9514101563640065512851147755356160 7698809303763817719454666353278976 -493087032976830873880752114924257280 7341236491938373124811081654468608 5344536618726213245303500711133184 -223689562064833942959798655943442432 7789162802732741317610398306795520 1849731130600169291463104586055680 -245524657721781108936860796891168768 8699211625287455321159198364925952 9023231545321831430227323447672832 -667499312303916583723208962157314048 2169626054824805364109213490479104 1015151616622410640392985495207936 -621833293766633902909060284717989888 8570955803171647034736116055932928 3817743011606366566072644513300480 -836598363588284072349662228319830016 9048266949920579503995374555627520 8560140412926278129424282347896832 -425599204815998855010397909099216896 24811096430748121281293468041216 1451304941393710624162471301087232 -490367145711901724972095902851268608 8559197102387050793740104095498240 2891289154165337643923361188806656 -411246192171604384345399601844453376 7069192679242996028027234370453504 1487021197051360099441393180606464 -377840175505715809842355503405989888 369736216808108301157805208895488 9999388593321376643192082999017472 -220734635914630500781201308193390592 6963285832523943332451051498373120 8777943080990155462180939212259328 -741798366604579135517532268410175488 7574558651895141599896550080774144 1497638494989080085648964403068928 -716743394890533002672394145307295744 8943152866928995027967449426296832 2358486625500402611508769170915328 -681374994659010717118583513253150720 4296397792028456959879945799073792 6186787319337992042133929634824192 -778653281723436114983928898275770368 941691223021322797633398089187328 3761400177389657231567418315243520 -160427750346412805257667304300216320 9568146984549349080040629208088576 1743433491948525569142554783383552 -60545458949905434445859691975147520 3978723960827061620502607366717440 1299703713979046540286047949946880 -133090223550706617052496385013710848 4162547239546143413771785534963712 8387251788147878122602827626840064 -619230568099339035003166313450307584 2969866500218788664936913914822656 67750031447018031511288451956736 -771321555229489399040383497084600320 6272318358573464816307557237784576 9643573294459769266966495945031680 -648794555181295031291994360457986048 2938583525686216798667405891993600 3552384332697602873993050265223168 -861773501847125854810675089690853376 8201736873677607455731141794856960 5201069022060734423810679368581120 -684001502902372711233727774324686848 7276297403277237068246701941194752 230224837173228752345880372183040 -913302486122844248828279405936640000 6515491575558982739547499440111616 5074088087312941192913577503096832 -579195396861628853725422050802139136 1300160613459137277714048829358080 3569194771786793987774166641672192 -250648890310064286031900808660910080 6761693178682386904821431520985088 4671391031295619666332239131574272 -495056021761527578227991519101452288 1023695669678987198428728990367744 9174333812483569259050265110118400 -751050693690140696424525737381330944 2949919944214003485797373496524800 751038440879697020744266592288768 -59790889817578255027065834403004416 9232281376300615320849608471478272 594343365237022248932106653663232 -41875609695787628265265663731302400 9388526182443717157235607851761664 309430464906823587057202121146368 -850934922235830498043604040113192960 7088219130286482845221104945987584 3972762827596511937205294292008960 -951292171094123866869754288012263424 3763915660330023193017255939014656 3465911232430363761325155370926080 -923555738819748014441335518014734336 509610385714763824158096115105792 641984625862787576535127041245184 -761726559616640924608734776220712960 7764959926170535079830131421741056 8480409389660980949520876988006400 -342551711680897190733613334899195904 3681236952274162098836684853477376 5281879939657757962323231047155712 -169943827654817092675394421309571072 794809937665037515088502441639936 5890295864153721221596674210660352 -35954837899350082445551792352657408 3187139270415576032819421154115584 9806889293651834027235113982492672 -434870868779781290630676773685166080 1712569858458599064373424172302336 7805041507246067609445650166448128 -309436242741625656977870600013873152 2545186265307497207558020798611456 4923201620948084379522001279123456 -351504218411420654660827542575906816 2750504013949437771899474806833152 6089027980295870654989713350328320 -440637548850276271391767036791095296 829133459137239037420903881244672 1024098129615286915753420099944448 -465921631440692983628847892840579072 9644033753724937290430925152190464 4995479587124322566342748269445120 -994858486233909770956900797329178624 6964601138108673025564541192241152 414332265445047908093543573356544 -58745200804604682652034239488327680 9692260978899655874501238446882816 2776904750329253911417905320296448 -72775453344090132218017482583048192 2427696008343667751411731331547136 4741882491750513459322618833272832 -797867835176158518404118745974833152 8593169800391096209435729365827584 8770882246525421578988184401870848 -599166294044768199868033263250440192 1864699431776368776063838423351296 6786570071045872142751024761798656 -110568593610203722724397917239508992 2521215215637928454750162114314240 6326329068614918515582182352748544 -886260782387631649629171377657348096 4373850921850314148562771516588032 8358322101658884666744718372110336 -693462451237742424580199999042748416 5700987656631366455594698584096768 7278747368165099588765412149428224 -473873748368609497682603919166930944 6725240582086856977473356404097024 7724152103330586119583062137241600 -885550434397794120599349807963701248 8133439352490905064000332719194112 5881866864152153540615317475033088 -643499705864573124577966690637185024 2938174446530837634516272470294528 8920878441883223289857233611915264 -906289598034534302389685228522176512 4746139507657129766951356479832064 9335947375296965051305101466009600 -847622212946445321501616980994555904 5187599423623518486159493953486848 8976847574085663194347819814092800 -281650469176762549756635580200910848 3735886944277974983251084462522368 4836850407871735411306218884431872 -283483247792883582444733898652909568 2143907169240281807638249831661568 1907373097010098066004492356157440 -123856817145347635490517556630913024 7836379541497540908853347982770176 1315507743816719666565879468916736 -784701383027851745687332388801085440 538382674389855627651273870802944 126530345926432225280554327605248 -114803002594737278577307574576611328 2348983697926760954916565543813120 5183563418564006276800139977818112 -677041864453396993193998983471562752 2866899171763846425181629806804992 7538592940686318281162334582865920 -783309537316514199376189817094144000 6478388042811237450642443701583872 5398937469845028515088844663554048 -644024617416440734297260393028911104 1932111845908073586033459701219328 5654959107895706446699319863017472 -227168866557917417654540293243928576 185925048135989134494122907795456 5525088010306234447125704611987456 -141829912680230609719584831030951936 5473994824069285752344457810804736 1157377741182071373939817417015296 -660551702549063570333133010687229952 9486108008208125735558246498828288 1488131161777010842469147139375104 -119893549688501721630326666215555072 2583692906242970188317825970470912 7684695818227065040644679133036544 -451011012107419827079684815822258176 8990837269016423710367800803459072 5224895421160725968183386013958144 -454068042288713836046203609470205952 6846398146386590934581621720875008 1125236973010946192371270333497344 -433288769969797460407622271363973120 983516713357562735997236417658880 8700414708520528430844744155791360 -6262554732492167437901697235550208 5152502211587969250112177579229184 5123423313886186822554252061179904 -590175495720922186074485923132735488 8780500208683607687774253826965504 2709830565977948317381512050769920 -432817926043392373676247551699845120 1783848708428717681502108006744064 8082162066041481773170645360705536 -217282837250112075113377336802672640 229896869280095805819490391818240 5752589900690501334089071566258176 -464643549336937997357153372730294272 9929565350726743420004325423841280 4579004186840728736291569927192576 -774887391383377172967793968969416704 3424183593271786544263605577056256 3015822291507753067196833670889472 -362490676657678314627408168734425088 2761860658451845712785461689188352 7289199029640794291589532063105024 -14451839546557233626886892970573824 3446732056331196345191954286379008 6300673238852917281653268928266240 -129429765301209943576573661910401024 5203465161475091189819657414508544 6887166527292668865130901591293952 -950113130563751888796803235280060416 1946537704680004494969014052716544 2939804816311380578533243728429056 -771163806956426197213509830681034752 317346994596885472935367755694080 2459719552924886481079783470923776 -370030555907947069108480847114141696 5895035889391591430115041560494080 595320025021603904975928748408832 -251200070746342253066123725445791744 3829217143766062500494808826511360 6548467553570043453840089658949632 -221821758569240638502708128312721408 4580449582927743196534559974883328 7094883275128235457141219428139008 -967449585329670762404424775475658752 5761409097024837759929857827930112 9333743048212642405780500326121472 -147860403244122368914465365331804160 125606794743282833183783891501056 928566969434032099335173182586880 -695888276545166076427595785959374848 1239727050653066086966808234950656 7585573727853700583286218774544384 -710235131763926640003766874965803008 3853706842371176084181404893577216 618396080327104264603301243256832 -679115653674204462797648802491662336 7509243041277822174866485524037632 7558589918988515298313793049722880 -874521619627901239839311890307088384 1650600472018726067503316131119104 9150078194189100199668558778597376 -617263930367032049124080105212084224 7207220081972406750846131934068736 6415620252760070951395373587890176 -863068398175464848482246011532607488 934351736092546015444163432022016 121226829427411815870099919732736 -964742409793974700107859794568675328 9679979834558959331451049563127808 3029043663982581235166789402361856 -395123682434681877944632317849894912 9189520941606336854346184343420928 5399672872889206292811714886893568 -880518184545450068678696015782477824 9739453279445327700395776494534656 9139559608544458842106290881167360 -616055736995808534584641817440944128 3288768563639628808941953030815744 9024840049624044093595014697844736 -976121945800662117822981099113938944 9801321314834482080816290485764096 8594933561048232152141102032355328 -787626856684957230224125300408582144 2159830441250391969394303527026688 2626795021596110577415800987058176 -873268494783938316721416583780499456 644092997631510414334191076376576 9942878407964847441881073226612736 -338738764092427687981906956652642304 7798755218355269317565761147895808 2408853573025346152342423957667840 -336590002031448781833978903628087296 1595528299111677806800142629601280 3490243490331807147198981454430208 -906410845102278577311687277893648384 891022210246634515482356087783424 1280288690688448009870950749175808 -713203760305806518916236199455621120 7819703507956925605811532762972160 4500040865856250753214736360275968 -406492177954618232598123122039717888 1447602404368439875712841477521408 9529753378086354248644295487651840 -715210603480813835485397576509816832 7746508425579933777613618306613248 5701688126181887628067810695970816 -300356516309137756965203540443136000 9194416804985100254039240538587136 6081274609419802668233120924303360 -997452677508045853976796728863490048 643077684906802310451836902965248 211122570853242387810580961427456 -98814866777743278707939996774432768 7947252905972214955101450640818176 2934782568062953415073639029538816 -636030907200478338820727826288738304 6914526214967834996711615474171904 3843333832980159702831948789448704 -195768173495876268849802460591554560 6073734876514742894710216022032384 1139292718629599619519046729334784 -538266639357433753521087216311336960 1304058749881958368947164722233344 70543083110184850762039426023424 -531503248881644941012527921821122560 3523099160743668235347358608523264 3411944764458081797927893410512896 -742472551536773313252567015042842624 8969223490904283094871134468833280 8534539087120714540491599916302336 -317928594084781503162385243580661760 5852366979799193883065460612661248 9152909069805305705053036690276352 -858417258125177538338030709286895616 608217023120904714726016360120320 6238697159468094679899367683391488 -375423420560446271350633868906463232 2068928972108387189612544306184192 7295284665692798203930888718254080 -250322062209899067484255661093552128 4877314551388971400484875501830144 2304549644531874774910039188570112 -529075305308441305491965861565562880 9068865608701934315584006647709696 764611927771699114454323229097984 -584856991413936309111429422443921408 3130198211098794971044697635553280 9072742926602726894855014355828736 -621524090977161940225421712214196224 2408370972004816011710427423571968 226383464385664854123527282884608 -577603366923245865127385514897309696 8568716786742372672799335354728448 7247903635222181050787357528162304 -387365953001109273035508067319414784 8540604905508817500570056642265088 7285258316676014309224353160495104 -713620147398933797967677937246273536 6253815359653236254007837069410304 100861274673859325819721466511360 -395002226650264511293083574043934720 3755347353291006258691634601394176 8702740535851905332493195006705664 -921314877781992952620471193654263808 5793417624077457396436088385437696 6192192501553904684732432179527680 -792377876224680859321787844600528896 693997936979714096306315100946432 1275070936687018035059255188389888 -96055954883725899777233830623051776 4745495976665324058919573349466112 8058867162870734416264568357519360 -775413069235777694696134531069509632 160869591037865940535028272332800 8304077061053255542195194100187136 -527264275198421108215083640796741632 5892180194873237986298874195607552 7217264773467385380847392368099328 -305842526571139443577567007735808000 3481508951230942071144219100053504 7940389574320133721260451782721536 -195255263647927928828791146382622720 2513760526754187369150494422335488 1552746985983350590366992111239168 -146507400595663118996130754914680832 6172578065774736780189016862490624 5301626219006146727422668109250560 -660855546578977284964789548652429312 2495498740080394442459165749149696 8584293131258455800210570581377024 -968471873769437801009525948357279744 7847859841519838100336412872146944 2375320211859701942152715529355264 -812314647485086533138571797637103616 7767910696418605693325290925719552 7928669835037013640393620725956608 -547392993650147561628607310238580736 8926017755664365198851214114029568 7699200927735906676702288617144320 -820741890411093045688673844177403904 2102184107591177982960619701141504 20238538948336228620520122220544 -745855499051331994639959834432110592 4514649036436991660834236187803648 1018640282445392742179599449849856 -759505521730382865850554044729262080 6561806496585270953330041157582848 3197835116031984851015161073369088 -100242447843479405145694472757051392 8020721237369100912776586998054912 8107217718137728099275887916089344 -332318095819397132676809587026821120 4418249134537960812747965195091968 5107670928225683808993022662672384 -691880773840856847587791348294483968 6704295084799411616965026595733504 3544315791771519774793710111293440 -547345851291115069139134457933987840 9846891353818246258347831174627328 6242011021444465868461036684705792 -715863571735890842485614140960276480 7386756926850375060011295776440320 1586421068011913913853860965777408 -610262233666663508258995284366852096 9483561613677097288066394987954176 8139716361882104184479743089836032 -633139562835986068193920281175130112 9306727558681727354223253656698880 4598856115419861785336256430866432 -595807164376502743145030925686931456 3666803187990747419935835198324736 3170013681195048188775917896597504 -378621324374989564405861103957966848 546812276096069945325336009900032 5044124722649953869919783105855488 -763567221796093070504607563116445696 7881936774929160534097777125228544 2988789145690599222903850846388224 -883554652714530273436106397262544896 6577276998476682957193282622324736 7095089679809877516803006273683456 -380496571615571000125247831377182720 2432384165330329602514952191475712 2993082970878272296328141901660160 -825757016726580129897100942780661760 2751732566939883664564339716653056 2235486094300590371400824507072512 -105278606654542460797701767148077056 850422859821438640113140319125504 9806611818573582169039074362392576 -492630964294900566299048708226940928 5858460633477693665779216816275456 6594684187480243616500987390328832 -797064094364715816117914674449612800 7089282010029959984438388440694784 289577487923176793589339951988736 -303202568668218503171501424977641472 296301386608942790421565191225344 8970810346249167355713521220321280 -512158937123147254781710384911876096 3573019212869217950947045162352640 1829984660910271880973909370077184 -360956674523876395659972015644737536 8951968735261318482153474682257408 6555967879877961566294307292315648 -900362338800133829928551890554978304 4284818156485557576535294049517568 5486008150461935910925019656486912 -826350440205663927812293356901367808 5338535698215500574932717935788032 537858338024104985740996725702656 -857850406407953427318759521832140800 1090623390481761702594027913740288 4305178266353407321427965279993856 -351885731991461973251043281948639232 2566356457551790382887137806647296 31950652049418258056686153498624 -934279688232264663605686710877290496 5413230906314182234158337580072960 8320714289701375748803433416622080 -104845207820447999175138739786612736 362564931373127640905278224859136 439048318429394193658757089591296 -385754568549391807094293828502290432 9512404110029179250260822712123392 9576580428578484704692284099133440 -54186976802413344083366524374482944 6367274020248393516987849329606656 3735372378605656881600480560545792 -295724624496310401748440978563268608 5258882089737069284814413346373632 7863830906226955959964602529218560 -282512133057175527167121188328570880 6885925435869873832571951512551424 2356917004317181013096555429756928 -844349075744786074709885143838883840 8537219465075744974260198652772352 3888655632187684317095082122543104 -811911036066562087619668756804927488 3556556600778612441779455777570816 1413579558895804968774575943843840 -834740939479715239525503773066657792 3235466351536632957646434874687488 3236225994749400903339074102755328 -346731892173814948728786368774275072 8593989067018387187063300378591232 1093829805666483406380237250887680 -668706768049750391997049894961414144 9898757624257283615050726331383808 4214839519397487173363344460480512 -239779499195728626483868812173115392 2909576691530149983113460727152640 1114706659450576194491436203245568 -220142182542609695365455256733351936 8254743369577730602882789766332416 7917322760125088501013577482633216 -737340385544763337224943913163292672 8452351995517599487325564615786496 4692881371857084704947821715914752 -360538208575206710716341656624300032 3409482643425088926999187181010944 8467253129980345180060254786813952 -602517420843921940246344971998724096 301523529382535227908308110147584 4234430355101855866880052781121536 -867648117036831200906689478582599680 2609728127053646432615235082780672 3042715749604435755680017158242304 -969728551034782624184772942830239744 3079869925671218121227319879139328 4106593672925741762051737521225728 -64214268341411169939715334772621312 5286155620417771591988430636056576 5084970553679628211804770498772992 -338025082972715649024736889887784960 8191201070737569100083222450012160 2236947339955702143539267621617664 -662640013367419942190781575798456320 4964398645367497078297208884822016 3733309364931662625191761815797760 -241036089200316257932593911641931776 2165922949827417362100882365218816 5170233428016564027732279454334976 -525619328088104407166975525557108736 6295967746351017725851476139442176 7197908070276654515226940580823040 -397241759808291920891070414409695232 3067688624911223956163938620538880 8691266251739841974455085513572352 -762315070894268613372715933460594688 1276713015912825915109212097085440 7915351839525095588151540888633344 -106065120878457411465112310647881728 2595983357710967472330215784448000 5557563999578534588957111873437696 -511243402988978720651181081302663168 7033555170762785354167894862200832 8284148070742573765735081610051584 -887307376487231178861656987247050752 3639228585209406761374910576066560 1507327946616036523135248946429952 -757044624928294755210842596842668032 3369208081790971118988626065620992 1970050349003664888286896755572736 -311416619660515649964227475428868096 7993560777945822819103556631527424 891794990543986456674669097385984 -219366007525349903722504591301935104 782597688529438979186046024024064 7158190560264678886403490453651456 -87276172107390992626294145605959680 4960581443679263551446405003345920 8499540337124712455658825142239232 -299135267236054366979160861325656064 511100789893603213891130370293760 3117471405448116631114343243579392 -240771718507728412004051555276816384 2915905338993692339487913891856384 6470512468629890142093977459884032 -20534664537935445877318108762341376 8110005093132127867994463600115712 7470276346335494807137430395682816 -73319787189736757157962940636200960 9763561066463964398449121264926720 2492542518841795972393793625260032 -882970499569055195880430324301168640 6840895034766516431624791367090176 8591007139582736826635777386479616 -46171253553653867496604392774172672 6352961157559802129715338820976640 4094819609266256776361232906059776 -896035356360127252594832603764228096 5574022657387193727721578950557696 7452747457430141372083412756594688 -377108374217076160050588546653749248 2847566661195325487558487743397888 1841594214894727360430095124660224 -429716793720453265501532300393840640 2158994460887174478231673069633536 8097253126285423503014083359145984 -250308388653625467409047070993022976 1975245628113091948129077990260736 1271273386896462352158150335922176 -661578927725418665867986369618378752 362636500672594500083245295599616 6481708045022504579708401024499712 -379638222459787545672861271304699904 1349750870898748443821819461369856 4294915918192825897629904957079552 -349009573854384110551887867950399488 5469497143969672968716045275627520 7123039346227964449970476069945344 -258033721527365104812776482182004736 8393120881955636173222862523465728 847315129302092121913067038572544 -292318584950686070811208123160723456 5670800154222211224969736810921984 6040744227925575390414552740921344 -924800115499059379632567455559188480 4519679656971433932201240362483712 6105374891528652710432928304201728 -294540097460317536322025140135133184 9874770531625694457739560232157184 4141165434174182271191794013175808 -724881290849042902640250060481232896 1388954598127324756894274264498176 6494504673010541787192859067154432 -455957595205216104112815114672930816 9232579818800852126170119082606592 3162764319356533971444432115859456 -927943628880765656379280927531991040 331043851574504485344890996129792 4706471372986263054531147971166208 -319168068832535014870094127388688384 1041077482569722029727757543407616 1238399879014090538239915966070784 -437197630738697221258480800029999104 7531458386305895824110074036486144 2655936878423451331253652275855360 -187427787798055857397632959799885824 7259081447870157947108224361562112 9295539605418737396771526446940160 -428353998874364175523596669936467968 816939472649139066623390577065984 1204043800342691923185373265526784 -343234552157230047518390774818406400 8996763711297821331469866083811328 8762326210798960678006631069384704 -724795226766916515324251529728229376 7273244571211201891095572060831744 1644937053654900713284487323058176 -473754779357731109571692569982664704 1985843246525430647327782915276800 5876771075568111696390269081485312 -263861199412857381476019621649711104 9506520313358998911765956498817024 2269787788683604564240015822946304 -101050039653482614210816450416869376 8222711518727344744789644138250240 3646443098041574327841267904413696 -172882100606849451685890963670040576 2407909539509219692265503029460992 6801356642199230387583315945193472 -19289680579045180190144569626591232 7531800555106177821267227932884992 6622664481502931382512170829873152 -798509829344925770222958092732071936 8469195327995039624199539701841920 9089494445335612548379443107725312 -662113737590530822679951435603378176 7967135007747058938194786298888192 4790859382236792274400489940975616 -713070613974942318373024589590560768 5623991661125077613018132655374336 4438454844665678960448487919976448 -783640571732833005019634101550841856 2009570572568001483921893105860608 8910707376280018242458506152116224 -439139149269991017766711023615606784 6834641143413521883281163552817152 8996331960804101712523267793747968 -955635971128594362122389557807677440 6015880679854449466525229529432064 2694864894402150667077551086632960 -186489433524732611519066574818377728 6173021657747410520719373212057600 9513989286032999449231483950071808 -131602488744458545678092845585530880 5205986743208799440394507253710848 1902229059871941929603830185459712 -748652132374518200285469368976932864 9078055495318904927315482701201408 6113529776738297002744764679847936 -582661830909461392931571971227910144 1137077296170299897628422911819776 2512552387027460098947448418861056 -203089814590353019985125179425554432 2035260425557661677080517730631680 5322017286562825673355536849960960 -795035174356218443047140115477430272 3274357986463677093652021989343232 7494823316635965517758430898552832 -263378763850664931454408073672654848 3720802790291583756618902559260672 5211662466617712156646447192735744 -287090403497706566244431694099644416 3789956927731048422848310468935680 7499799152280322361688247727292416 -230008124621834086897919231292080128 8878473451212330048919106565963776 7976355001542895386796367036809216 -537778540778229739552773829344362496 3423390562424522912322321456824320 1531858718949704381958148356833280 -327758616162870349395296783727329280 888360191636064913698568018067456 7099077941322961749354623346409472 -943956889418787647176283088708698112 6976772889196862194841587355222016 9305002762578482595325910391455744 -127106725984919887194388572498034688 5038383852714317426469466510721024 3219827663413489285716810611556352 -184419173570178969827490864497164288 9987286333038106754141390175731712 2693000017529775157752724038090752 -64753504119120586517923980042567680 8711195948161159228576052178583552 3954174410076770526031489959723008 -68718728205461594257805439974506496 6443251876983236106538436314267648 8409535036680154752310123243241472 -344804457266926548023345852901752832 1040788764664750040862420021280768 6494373234699633121980135814201344 -670135074320842118764282672421273600 646343103330936489022909925294080 9742831356159549989167236133158912 -293080801794791139014771749645451264 3914235596074390992232838066077696 4241291473173283943445530280984576 -486608712611932853054871283448152064 7864506702722874064254053317083136 8348359924490182390051412474068992 -747890428039343829164701918764728320 9065667513600232830846761154117632 7650935008179508497817325403111424 -95843316714384136803948303516434432 2092782971663295930329658457849856 1238351667244919716128432295247872 -626287705235150167310291999268012032 3483300350732135279046307639984128 3811376332982009457426330019692544 -900300464137003529930686250887413760 8503564695703391964212710577537024 4118539410480363439612573314449408 -503218768399019086881617834273669120 955923481059554700489704301658112 4210825364398253105283024587587584 -325567207281100482150299772643180544 7417853027326728565544015838052352 672027032450713060803855721168896 -431454511192754151523134641172119552 7043077774809395291702749351116800 7382694207026653583910569752133632 -437486220295555744587962693940412416 7984739094806212964383296369721344 3787339831276781207944383782977536 -146217905486983048171561002828038144 5993940086659676292136879494529024 8838656040760045674898574498856960 -607583410620804069108827365115428864 3053249840919095128045205038563328 9917421688234894115707675140423680 -5766677325567945448597130294853632 2838278602629691931178687384256512 5696180027137417356068616186888192 -170092825308157360083239638956769280 3176453688290631740143360395968512 6397833479313911324420190328848384 -473306073145242253624012389404901376 8988796816169955560057125549899776 7683298168738890122123760665362432 -304810704185875373421428132456431616 2725378264687013690235364636098560 4554274698971886665765867585798144 -960845749625381278206535965555556352 1547734465382599952392083254280192 9243621053761154282316191810715648 -855895696613910089313166442696278016 2932234756654041525101923955376128 3133374978014167988372298249797632 -775796716871512681373281851772239872 4930442045580878664992849414586368 5115052385335159277599549143646208 -606068540948821043366181255191199744 6789487558065433100719520665829376 8223946693989282946231978719969280 -26998835953054824199108918643785728 368471133866052430836928669024256 6028828525428148440412846290894848 -904110405093371819490224783291842560 1783420853909128287768972024086528 9847038245596181364154364522921984 -983744350527295785466491398409682944 8339906759494111250550862875983872 8062084123928781808870500790697984 -946189582581266810305867968428376064 4972745593160704086220422374227968 9378130452563782617638920882487296 -391807026910892216105507346681167872 253710927998272997430587012677632 7699567866287753720692595239157760 -998269866599043590027170624735019008 8406139791821117204130044277948416 9859065078994997336142479966076928 -286005033200865795934349875914735616 2516650410266419277629871991291904 1119829830520321705460085922201600 -42532775826735844931949410658549760 314154600739241917076012867256320 9368569505742594993302558690246656 -268390594151703411726289424275734528 4918061306308811452064298700898304 2065063240932395623370436418469888 -320004212189021381227382696686125056 2560540635059272338574935291068416 3296093275584312193945381030068224 -897202461747280604617063253520941056 8741096720567756604786020957814784 2114506273457433479943112068431872 -693492530330472185747943518021615616 6719423144665920775606409218752512 5867547749113650365436524427739136 -156220507518088453817516831291736064 3862520466442732381924723376783360 803738482757912927874682972012544 -828808774638941255476944686146387968 2114385302793352949761141471444992 4729875445335477522901190263701504 -400764910036087161779714422002941952 2460531574053160722022472821506048 9288963616235302540035731853672448 -999508892028687285354558325881044992 1624438949221494226889039182561280 6797780187587103521794500681793536 -130985759767752460138883728046817280 4818079652363694227478765541261312 9056765807596233115316927873417216 -578180985550369703425106688400687104 1191998271410362468265789327671296 9167954890174359704234237955670016 -2720610495489529457641245418455040 4493249425878836443277650311512064 9872428876249096378085700028858368 -401805147508729745726328503416127488 7087159475743228957494403273850880 7897442122774504165147298544746496 -985887173379081153411839610656391168 2429099320686757611625673501179904 5704852858224383719434175054348288 -143629047057269832513700595771637760 1807496267965252399854947802284032 8692989445280309150253595337162752 -715477698178497510979800381870047232 9849399701770410696501336968527872 2953134525925177351003157112553472 -31211321605036850977201326204649472 1698199266613345627692596241367040 1424892625998120982452144678371328 -24947204536348260130133809574182912 8489997743543160371750783124766720 5653168006194424379739700025360384 -58657311818797827519032021387051008 6664499972711471576729171462717440 9669163096504967104516745259384832 -332401787844140804884557097137602560 106763860522101219109406666391552 8800510448395052104521411683418112 -981925166791649572215712629819179008 1850471372168788997139361523826688 1492616051742529195568060971352064 -188954230860840927269968478338023424 7493777990376938027573456679206912 3968834511873153899791098373472256 -673492673682853460152854341025267712 1251009442604397713178878300651520 3770047464993378203938109882630144 -648680775013667070458030532379803648 1239453562141079555810162997460992 4127219361137481492747227320287232 -729318033921812785973059294899208192 6933984493283323299938957984268288 6581532150805552857923343624437760 -231092624332143568349469900831457280 9079763809469290945823947664392192 3012356031507515200674221833322496 -53288906647588988171835463933362176 428856801173328004987705066782720 2035561167574073101422821954813952 -768942455617883920178070231770464256 2549501481645930263043533464141824 5875256122659332858742381224132608 -548808198679254652998037679575662592 4686328476136564127470045922066432 3590539158464025442007994284900352 -327026199619564984645774003908116480 4436631383815735812878300610560000 5586539538408507756932182952640512 -689358765916163597692734420606255104 7580924524659488534396679713980416 1984228462245603185340206085570560 -965841318696071748162345357176471552 2395769654771658465417513813409792 356906664751705837627887866347520 -951429537701439340780337614913798144 7752389974936932512447681552973824 7680964032085929915449863221280768 -725007748390485610894588333401309184 9766109341439007799487932500279296 7253621422456338831966479891562496 -664083130458148441721641561866895360 4712973151060178850852003750346752 4290302986987668801296284176613376 -516689131442876555758296187269021696 119138387437599400638857674227712 5821027878672741585711734733144064 -970361303850020330333337451627544576 2974280812585733528217223165902848 3576499282332146988360091423473664 -502549540293597982092080808181366784 4912585303949819911901552803053568 6345481219940312923305928640430080 -734502204328979561396813296163618816 3544221231810926266851676324364288 5405667088245315892881961957457920 -635475187210514515467673349478416384 4389635236825878060356515351494656 6886384226555416293455241290973184 -864865987676080663820167857022435328 8897908950731079148793163631558656 5885957353249425012790541596753920 -856374067406049388642403271256834048 4946024327780696775023376914710528 3342972832973226133534293268365312 -324651588036310053159357213088677888 164236678231307700232171099783168 7796449021398693693631401383952384 -888343646415540533286172217963446272 9407905761128148051937331878297600 1846054705030262340488547971104768 -241025614432771414410631495660077056 3802166753025807494481066906877952 920028223124640602786939321450496 -221924776737111403682023245376126976 6327670510230300857896628253622272 2398529073203412022277296378347520 -698490355522644198578781434738114560 8465561159644304577754909831593984 6098732968272962565210617111642112 -422596213119828342066413828566941696 410090964020424847245826162950144 7303709623872691654141883472412672 -467151886465365177082599525645811712 4043134279856314132012484043735040 2624823166154828284504072966373376 -802336909018192478868999450436567040 2900959193386707053872301205356544 699596515773965882467882262069248 -38087675642329177693818091963678720 2690106907369105896347736685412352 8198840659588966637902075474739200 -672334736348769558050138855665827840 235844750258634549675162037387264 5289786800007962494325310433001472 -360952901735918829850264311169024000 1237350320591883054198583128489984 30268885292822551289351848853504 -142120218875019781434332166773276672 8356280135237571671765440457080832 1892147347231520025144957564092416 -360039746254215534604795241291579392 1540371918723437913790863709831168 1852178858936288419381221760434176 -425992523963579682592312655997829120 185160637072238646624647596998656 7038205832276435073377325895647232 -511753461390704671431105636074520576 8642494224732660822421309369614336 7204108219039252917662397658824704 -279214463234025452644887095169515520 1152212414246729433055204099489792 8948652601396477126435495867318272 -125250866682699496438818288607166464 5472154274905220200906107192868864 1472852469163220529484819448463360 -902416193218231458101545261674266624 2354186911779575429451089507778560 4751473290996410929670465953726464 -79349043264545440940893061418844160 3402275712280992765777002404773888 9689230500453366440875973154963456 -800744239290011901321642457134268416 1524928394059416372521608547401728 7938991433638124280958834112987136 -105992418120065093386970739628834816 79161689570160519400495664594944 8785388757494092212312402330386432 -693584779903503010134871826466078720 99444687107668218781472154189824 2838655904422378773634756156325888 -419483400680600139008985206567731200 2962011848965459357837050970636288 4857176021788556244164188749955072 -653814135779586630511066618339000320 9646724577803917131266847464751104 6104264871547595081286839808557056 -973611719213312619447803132755574784 2622798004061578346037667329736704 180755845145195999094754471051264 -348374688973328402267286534984040448 7198255651678323435410870274883584 7717587685453898407123664548921344 -329237458803294736352598203863924736 6396717124099833451687762475352064 2611383499973020236551599228452864 -410093510241471922102075096989433856 5877954520717356593985472377651200 6712163926198452268038601788358656 -671458322834081619062506067784105984 1714697587377501611245933969801216 8158892553877337637820340100923392 -479445317424344776655151305959931904 3996907757032844757704258711715840 4319399355290790116363452937142272 -837188706669611404182779011709009920 1202739235629410060245836566102016 5050776686771281803326871685824512 -231386871385998706494922445333463040 5843460611798411397227830312960000 586302188326177959270282636034048 -773981295653925630690569994836639744 5901933799877811184592303209578496 9581752970332727941942712905760768 -571050084758206674953570300404432896 9100173098231915237828047639937024 1429145489572253034068741241962496 -828365195779405231141380736457637888 7212348007079283514807598329102336 8953943143524719301123221173043200 -809497971558635713089351238744539136 148482751368256471000765809295360 3424441121704862855979257129074688 -867550281582324086662471139568123904 5487484237117987042118942354046976 5950267547764330822637168116105216 -663558366742528265958647260608724992 2693824164123063155864838630014976 1477140517932751594682826140680192 -606461866531225354105501691987099648 6680505315400404674676068228005888 2608367374386251528571091270238208 -332488558886637362689022067411517440 2281475785940762268501636678680576 545581977747715109782983230357504 -563533011381858903216193829953601536 1052257172609297991225607148535808 6763698644383990468395201600684032 -846512362163321191656480873767763968 3468660444230257430493276179267584 2551454856470500173019136038797312 -585462012818954357189269206280962048 9402963317774899381414315155259392 3439505003618465537396483827957760 -246698761210628729092874338343845888 411133941612694826810470041649152 3010836926266251818783816741289984 -6860588610650612411453550794637312 4449488210899439952002266995621888 240370488274467182307682870624256 -448138496717424887057186125332348928 1302789556048972830742145698627584 4621313714994058622334996137902080 -227800595590621008985780650923524096 4933618910797412853831505056628736 105589981910924909989231438331904 -650925246288286633979961793230929920 3288006232518640001459119412215808 9827248752664457774658650940375040 -821829337108405029866019940913381376 3906975459631900498342117682184192 5955595605284262358477539488301056 -148964581045272334496354175819972608 811281714087815792146558111186944 4970371623129414753935623909801984 -185006738970939460457333852691496960 8020428592809884267185037526433792 3184259145387122910952598175481856 -464644907432072435658933888123666432 9517601249663940575626593610760192 2576355029585999364755556921245696 -916610417856854964751973234746851328 9485268979172343285859495459160064 6701454810015553285053626200358912 -538704352773431935265836879140880384 1921766952741098350995745607254016 9237842484197144979764773411356672 -484986384129052787095968976438558720 4571645224541933123683037860593664 3196147038617658585553301472804864 -73613747781511342561827990288728064 6254482902082977074699047345848320 4781676031955790492087578242580480 -725682969220311745289369106830589952 507316123881689853238889618079744 8428959945831612226494906050281472 -886754174401020805604590047316672512 9939431924186951111634562177826816 6695518035173432170495993398165504 -434251729555199359834473262223458304 6351859072322130762340088447762432 2296243296139651455304694493085696 -710848274124092209442841768679702528 2678148098746743446968326594494464 1538688035083151285102678208675840 -674435537599392151045510874701758464 4925629714252790607259000608129024 9681887768405689754398052738662400 -754934424522932895867000134026919936 2784706673664172190503506490163200 1905295567762779755117870378385408 -65885924764353148139814929976786944 8618808348445052811579753588850688 3664072423075036822627429772165120 -7507421215218398826496584232992768 5570858510183081418949565911924736 4759204051894373377494991981510656 -905188441595914417696709174936731648 6124426606725938634885282666643456 33709827488054738693016204083200 -280538808525322825630520842563616768 3881611315012540272302564669652992 2334824550390542685756521535504384 -617070982853241158907597667975561216 3184850194057434275399716829134848 1609446639659771482773589027979264 -38017717749348946574373074900090880 902785686591239584513109197324288 1784448896855910800385988808933376 -714016249281900926703056229639389184 6320029501448606583301320078262272 6725155145016881000775443961348096 -449167531762095650659994409512206336 314654703041229339897674371956736 5691523738105580910873758989811712 -457769076943741045551341039060516864 8325810224132962463276509939367936 5616391139629356367485469787684864 -597978420848994817580054024764260352 4967486734750604972414109600448512 2359915349293046227208608942129152 -579483921093114344797003487704514560 6285160042199707409427300882579456 8003911711598321604003237575262208 -336066981013571471238864660980563968 8297301036153724433465472110821376 6297524192060512521723134290690048 -436814680243046382591505535883804672 4513330194038275781700518296944640 1010439087433469147538847069896704 -328224007473876808488571707215314944 2543879936765843057744385836843008 9335367834968967875330922327834624 -312734278312526938207560967194148864 2165914094056594378558658943385600 3321502944064621803845471019466752 -173420960366909055400817731292889088 1692243787080472732580789016854528 5190993231685994786140100812079104 -611139568523086476241296427610800128 3768291895437984859645263327789056 1129724013592684314596683806670848 -273037115057697882928502951529938944 4857211283762240295366610191908864 6575994234673100379159509422047232 -863607910450292189815380583338999808 5693853634886334477545422559641600 3372214312359642873807118641659904 -757130977012764694531443827251609600 388448830192153133716191771099136 1277433252528450614466095221833728 -610079809846004945304002710051225600 624247589970294992086545515675648 4579885150720480503778510645493760 -882767056587662950956513708705054720 5262764290656269873023547007303680 3142068953050778168277541652004864 -63115800942597012973367647182782464 863975268780642446807621118722048 346859503317719371034080957169664 -573194785884207682534752063707938816 2054495117232836832425010272403456 191238657703642563221362015469568 -744361404858119724775248057142870016 3027071486166098661356333529300992 2474082303671300322730040031707136 -498281831042609386732957683603734528 5074552414924534413265232914808832 7377810791488107392819804319514624 -969301406081909850165448838626672640 6532249966816893332201664195592192 5662765968056228689940491230248960 -643951566545410111165280054323183616 5512634874351816300768373428453376 8179797077185605149059954161745920 -627820341763926700852928364633128960 5343732394202808771411753520070656 8576734210021848684998746280296448 -150083076637440937374401492351451136 6197391340448407877689537135116288 2349779673040601785289732043833344 -798836170851296078206123195697725440 5783687861692188528684628988395520 8562457232534463182762683838496768 -815557091109482167759507350913810432 5785673796768368969794152487190528 5659818682419149805952688518594560 -89945613328688411730466382016413696 4165158380002197033198375030226944 749730009268202332970274739191808 -177347384330748766059285866103177216 332098910137820267596775891664896 2503823105523198922163915881185280 -596580538558067584545942069256912896 1248724764175658337352793114804224 8604702770023985113209258360438784 -675777917194446890296189847823450112 9593980192502956751833678225604608 3378201160944483177434852739776512 -419399917982401791570273567160401920 9193543768139709543329143445258240 5089930159072868435446984890908672 -894871956750618146823496084066664448 9391774196283356536669665570586624 4273996342019232230442376382906368 -70633402007916813263979946516152320 550408738713605327902898787450880 6104802364916609974374596568154112 -854465198006446419167304660167950336 4124071967662637553297531084996608 6011166910315284409412757615542272 -986545122691126990829373941843230720 5820324312903275791190795061559296 9259210843923170613114591378407424 -849146772070322948067975579649966080 8141876169016020029521864006041600 8319799577422783621861169310990336 -741869219619222829246664266230005760 148923742972430796982298066550784 2340568461289716000445202698338304 -952258902857611320427752691593117696 4216120665220240028928038313918464 4414436178826761090953330665979904 -949903123618733703851660631508779008 386499954650559350565914571440128 1957252235068488152690448306012160 -274503383679914293764532833439711232 7016810997278287963279540789182464 3544142199043228348754486993354752 -82145116388540800452579395308093440 4250712925667923216349571332440064 2636531631931111209115471113617408 -996667069750760652789755218266947584 2569008103764281312121705495265280 3551241575937276708988955756855296 -830905127431710362218659175018266624 7845490131279431484391199915114496 8409860574627621573916036031315968 -887954276262371647120016903604535296 4175013815041671633687611705393152 6482351479317348309090692753260544 -744687278336199444930491267067936768 5756037420663258051428406836330496 3340216618218818253123168052969472 -160316452812312583446176368980656128 6725392340016935004334246445711360 5889307961542418281962049607041024 -293942019566714542755273727067291648 6932263676037316357244005390483456 7893094246435089917267800393515008 -285336938683992131942352478275633152 733831393446431736781181942759424 5971699340943488251389107920437248 -835661090303105236105669771893145600 3585025718939839932753751622811648 3221154669286244752549451573231616 -770395345586189698003299120260841472 4441231219377862420976335639805952 5065462903075442557088521047244800 -500412807696873349400603473353900032 1750616437678189282635847221379072 5177983899120022914654361800933376 -152116478689078456403288046740439040 3678202955484353642240285767368704 6084744670301408262411643445575680 -510748486494286699459248256312147968 974656721175905802588571199078400 9982129005258796979344595824410624 -617793754425291736940377062942703616 6591585400271442465833230322892800 6603632037520304714193306505969664 -392746283815769756424629524065419264 4488238578514324719733164551962624 9880178823874406398276829525835776 -295802258471275864519091694652620800 781246930629515436558872127471616 1549990029781579016587415182639104 -67578458496992476746598445368737792 3480023959653488235343673921896448 5249378899700244991217714707038208 -126903427919507657151542628876025856 3858152110822751532101100332122112 8759301086646239428145096209465344 -516314589439521559531034326490677248 2556217075666727243448318271946752 5186875249592210919016188946153472 -798763111090370927465765414092406784 3056653253908784751082362288209920 9357268815807036586277947972780032 -837404022998988341611911267414441984 5170537762102369100673898715807744 1772885688010464712463761583112192 -709259663341013495576454833746477056 7974132794098297721452118434381824 6002093271005377218152808973336576 -161822092331055869396385005282787328 3261231259884964760061500754755584 2223606699128947454353762330607616 -684122914671345642278384410092896256 9064950135315662571138795471634432 5796033170171939755371796124139520 -290924441252557916671229852217507840 2328693368954713255664584189018112 9410133015909162877213067448418304 -577559422277874370077640074924654592 1397147342626736554529785183731712 3400782145866361134801804792430592 -407809006505403495090445584217145344 8985815247894447221210203606220800 9641107816192863526650871256449024 -46700335381317009668133613318701056 7709605593217361955298049605500928 8813227216232504797642075668480000 -186050950887934283157482060216532992 1235675441622374258947915021025280 8860009194220164780171009418330112 -238523887883162915132056993997520896 2523670846433118634797735308427264 1644456884184236250722501797085184 -822843171050555607964786781361012736 315809061788419170361142627270656 3922197001822586820610424550981632 -449530750491435048899450407638532096 1579941964328750425473180883746816 883566195077146530380637666279424 -163238638734992367357866231633805312 2571352031029350711853380119035904 5584749611040601707094154844045312 -668222300712403507435019794997313536 9857831891635471107422668774703104 7905453097257735173070118665060352 -231247935062191760829859681877884928 2454636465487001140807232269582336 6929296981047063740015449739362304 -985262682599895657592976159176392704 4961240538648908319387162695958528 7084878174467081986157102000766976 -638468040136680389846694874102890496 5343429570639435825302897636147200 8237726829711632276671776904183808 -672830691806037182327160110915256320 4848930322244280726599775492767744 9835753038359547566073464443895808 -785133959125934587737140731540668416 4122768346947881494532946753748992 5973260115513125884457744546660352 -882217584653969362174596830619238400 9578198824846381603386151447560192 7484337983539715204869622759161856 -573204355870062602708656721456267264 2008271930120403040692155078148096 3696377948122307964182208943489024 -173314164966133349927141746046664704 9076625643291050568340354065498112 7496635250673129619649593503383552 -931454407211942935697068666956808192 7249130128188542708497219099557888 7301583700223718504287261863968768 -337021054723296665354744442499629056 7317352283851024946107344658366464 8545152768413749720530963889389568 -583581537934756706729588712886239232 5300759898076795280460683591811072 2388721199077880517048152191139840 -520836347201683824003017512492990464 4724456488993601348659098530349056 2976494147393245716208864452411392 -584148524298062244920849042398773248 4962561269200662627679577898483712 9821121350587115903107314439159808 -823299679855764792650784160333430784 6146060752003630004924079677636608 1502297427435168429345515235180544 -11411094825807255314363154861916160 4340044334635865179529784407883776 4638515441866286618877829253693440 -473080816637311925509330480480124928 8026427853898210681403703331651584 6600999759219432137437958740377600 -106764347105997732760608543894142976 782005658919672672612556927401984 3960478981533742738777733345574912 -684855642981995306939134414113734656 6819859498324330256235361088831488 264455458107222590542800767418368 -248474749576195247966968427575246848 118144752902123524152840519942144 9173310112210781953678156775817216 -746785146255181068058407703500816384 5672902074142273890698173467328512 5254998493462863982088845202030592 -797425619466576392320525061979111424 9063702983488665030076765392863232 6030316616276961345479315222953984 -777505107751579216282151046317342720 7077502027157204296873924437737472 6770827604978755222308069895569408 -387587128483877203076532215899750400 9692820067574790035705648035921920 991483078902452475625088623837184 -982653789846940933757032237623148544 1395577101268403246045998736211968 86896100845335048842607434137600 -831000013139207812766365745699356672 5471965749135641941932701365829632 7083944832671821905807478097969152 -993084381807250621601807333142298624 4538010123933522901353829998002176 9582201982615812081111582640177152 -102740567991298876209759352139022336 2489880282262012552778823222951936 2824562351716950424178731635441664 -359158898851843622846197058051768320 4837258949735112762217717177516032 6190709668301695678937193064169472 -425639824161906196660194477804093440 3559906183638184399609477954797568 6400495220043246870405177860423680 -131040255706331784420281995023613952 6075377846087871623866927829483520 9340308852287096679248814546092032 -770829734312595738026660203576950784 4053220834073591546951711118589952 4507833729264984456859673675431936 -552492560960734334239491418203619328 4337847922376253872360174364131328 2460913281484276015757283685302272 -213715316358640338798892023992549376 94722969011264241619855990587392 4659063947074225350630637907738624 -899584947538776042226525273080201216 8414890418377969630363981740769280 5612427475996791375970699413815296 -816332478660956530518563892293009408 6323066206065315436789779008585728 1472217410206803472924261872566272 -42805275449557851439472398135459840 4477272351366312491719193039732736 2592342768191687550018836632698880 -866204333166101382327233404563619840 7924649532093856120972008820310016 29331664389699274661474294824960 -925330014542718712630774255878930432 6995261768644837573965047262085120 9306600395579757003484875636867072 -295134780428812086415923293265592320 3189498694193424140924993302167552 8102608850277119926450792073003008 -201247962386874854855213455129968640 8497040759007849539301270515351552 3129764243972011782829747917029376 -375271431759982690686034852045651968 1807507621302786446876102853918720 5584264374314845161184835324084224 -904310306083540346087596975336718336 8074362379258304292612251859288064 3674931774455930257836422585122816 -811710345460472872165781949068083200 5069350284812962295178249363259392 4292947286347567663347195132772352 -433609484194577939653719755136696320 6171777566802630538919077761515520 5266918712109528832150320541859840 -410178174058218615855765055235686400 706241438551640688701162674716672 6192760650155225150759762533548032 -586577442118340167799254188306726912 5133456423312980385449281708883968 1188717978252760051908390886047744 -700691101908595404615928916524138496 4200904422067712410231741974839296 2780263549723990931923444049117184 -883937781101575406075165032690221056 2069755889493007675729047776657408 784091417657876533067774901092352 -881467120167128501866789188073947136 410804110141813816060740544495616 3480117237822302942381029279662080 -359013813077489759798189998064271360 3468220158736717933654251755536384 3572765489818135033236666932264960 -215858624119280735836176785042571264 3492290104936049965977374109466624 6849706009318993377582104585437184 -33600866843848178677894866880430080 2231343690853943538581894120603648 5080333208830635948843511060627456 -852734029317730095579628470680944640 5814425570826166315923578000769024 904796689218895060476749517160448 -88544765195901492705403877535514624 3597024402382086888505595750514688 3462105990440924486210277727010816 -189953124552352322511546305478656000 9226571539227895364350817832271872 1859067368650658460313006513324032 -880923958550135345145307205478645760 7827200266770741227235327571132416 3712781681298166276158405237276672 -51283545623379862781003150858911744 2611360007356620350543465111617536 8013618311451417224560789812150272 -698182018409560402834062377140355072 221213671899876241605186730065920 7986328519839480262706718547378176 -646163927722277084679335270441549824 3602921719872285410455945536864256 626266303267298196894103436787712 -63153184384349931886788250922123264 5945905003899219043825922365980672 6179374510042811947052236326043648 -352588124802448543729755679625314304 4529617666093218303157257203875840 8749345669887546243179532097945600 -563618081736598220198092916832337920 5520812461579913317660603176714240 4846448375838365733639440960585728 -132590002886735358517091235606298624 165044706688491394636569613697024 4797190806596489960377625186664448 -776647075578218931245466458129432576 1767205985744315044700559427764224 1480058945898426215451187432390656 -21934369117212289200650388835926016 5479306510147172896493372258123776 1137657683799860466782498788999168 -858235733100997943910989202840354816 4374347817422543393272718501609472 8385916033962700438398416881451008 -872909979379122452562363855879012352 479942769538963478200831512150016 3452176043439606390067041948139520 -748446059083610874466596184125341696 353383133056112717668316579102720 8586132645831856698653146783678464 -604362119118283772836725941635907584 2636999680593375266357315066920960 1228255789034076616458423106535424 -99861739059400466593942439022559232 3808603663902444694418424936267776 8811577315826535848857096312324096 -637268911912531824010550811713077248 4193753513111508919989536852803584 7998154545394723443086774073556992 -643690551367693167822101453205405696 4083276024690784801099161289097216 1914091753517311510302199266672640 -474994051374022263009032565206024192 3669797448099187000188567755423744 8247686701259333057519729862770688 -375902538798261373210738730236641280 6579596123705871812220046266073088 3426001207030130675731561143336960 -446981723171712140307206419001638912 2678462088358553647853290204954624 6153855095254678953930833438703616 -993861258874737867641982425965264896 6915378883043475760018018264940544 1371824904120693473271841508294656 -162807538047948292053305375082938368 50228374226831304966028732137472 3533703131255292842476924454305792 -220067985053125587608232239168487424 9428788663106789594904492177883136 4716408815740129076559650985345024 -404331955838989854587069421555023872 9594888535815998459422064454402048 7564642627919737705951743262588928 -7795581849087931634027192685428736 1930354655319437513205318363906048 2549889343125796173173571838803968 -764748907511085685687975613206364160 8937948550864472763318547557384192 2361396730330642998355634652446720 -38878112785260795305724625683480576 7017341515320491655837896182595584 1915417944216832116902721092583424 -174282661202488123419451469498155008 72512790987659741102336154533888 9631165376857361852690229324939264 -689223567415024014541054873224347648 3253377681611439310118592138182656 865323301987402522271598973550592 -514847789293257600538351117214416896 8235076770799857070739103147884544 434220716266765729800247209623552 -529886509040248621029537165871153152 1864727326978782377902242286010368 5900079846509367234067568963616768 -424544525031477976658793676492767232 8176476272166741716605155869196288 322869477180991226351242411245568 -696897021164597746422889582220541952 7414537794570643531804428413698048 9227742699250733011475527754579968 -597716370383517855468713393766006784 6822341701088599279994374396575744 1128774725532366673084372345683968 -242652240472314218282942855009796096 9871274779965090841951389658120192 757929514177623942909467824226304 -860160020294880737603701104783130624 9450046584228208160959320744263680 1544444020848544534461357592936448 -955624377807866895998680349181739008 4168319638195139317887216377659392 7908986933886349496347594812555264 -285548606746270754842239053045170176 9508283734774669485688832053477376 5350462909055240560485859294445568 -236672636075333102890328416065683456 9144601094275013933010342492766208 20046068054047356836508078178304 -894309575266372161291754425131466752 655621117978518386460589006258176 8618155297013343734876049726504960 -244678545816533819948459888738304000 9947127274211275378937313171079168 2828768266843224156230557009707008 -131167060590281118241196714559012864 7039810015427529528081280864878592 6215911065470201222137218762539008 -541904944247776868276872282606927872 653049169202805328107343731228672 7791305077905085665122886724091904 -145263968573474854794940108068880384 2379608096311226162200370420383744 435913999074702374769187715284992 -615703106049647548557701264588144640 1339440564274937510875114959273984 7189324682744606684857544778711040 -1962356750770313120989168254582784 1953985898669331267220521950904320 4076620181461589712749746599231488 -153991570583521713957540911499968512 6227562446840226694363021316194304 2142262291595440014137369837961216 -440702416040533797173137973012594688 8436298175543901077117978338656256 7354553511167449875006450869207040 -353934506136994925631131228517171200 5393882104134312066227203823632384 116508433228192906718970394968064 -933257676289615752669696275337183232 4661241732869583151610984348516352 9660920752590404687016934531661824 -501085886030723373715516453057200128 5176679233053168315289435396636672 5514747349302442376478486805086208 -68041534491031054038446798117273600 7184449943396812754749078395420672 5882101641416194812612791230267392 -515830105076933674313482569689071616 5161687612735815384490317854015488 3763441336346759130156690833408000 -907583369824480087574284141546438656 8210414954652153089834688284983296 8682416593567122780052203853840384 -904234117769402666758481405198467072 9431075149857869356202047926435840 248371506379367113838623555846144 -333529748831230037481465005150830592 802004856907347273904898789343232 2308762280230803716632646172803072 -977896479310569803299048389750030336 5006319005673893401580035293315072 8181280180610021132162554331660288 -624120914245752801145376971706859520 8494900665131842274731792898457600 447637995096294399694804019576832 -488878200646766557018490880615514112 6989389124209242120198358799745024 2329833780100695492575316095795200 -808596734050233557634550208768507904 9117448756884219469813949877190656 6823648563869844254594062113308672 -667301731235923008890734644440334336 5668179233915486335315203917348864 69337107813529188308667009597440 -743380054736559232121421656202674176 6824942496774277958161286930890752 721600413440591214009283340402688 -679296516828525786308729559888953344 1960386973495342303185830972227584 8819993778999952429884426898374656 -797691838217973202486462380259672064 2994665638553942644298909273292800 2313277575175098759313757239771136 -988771978780275179230920566795927552 9770018691456646385469615400550400 2500286097501554996770292941979648 -833217124881246033308272625440522240 6201177776393520906442593741570048 6881886081285473382358921271836672 -439616795931842438986500165066555392 805069321640364943541388372344832 8023375760227125326863681273724928 -584957182830976337530388885975072768 1326033671657340027692896581844992 2207871731866790312940785528471552 -737204521033754446553323925674131456 503678945247530637686387911950336 5704087064015279604564404509605888 -359539412879546842345325724436529152 7906044198131040994030108723380224 3742297307760823055894013831806976 -376533835682772671315198415747416064 9341238135394419746787316421623808 7146777614244931414340388100505600 -543406041918022091162496318268506112 3839253793059252661402896741433344 1526722809948858752857683263488000 -617867051578033406514659928238456832 161339529301380348628377851133952 4924493260441169187969487203205120 -40415193936815521471215925670707200 7313430637945540610364582299435008 700881107818569678111684161437696 -577935614053523236076116730483572736 3290036208561041863231524158046208 7768612783949958317649739294703616 -9252643778129062279195350964109312 1446302957509045936232698853982208 8070428345424625292077826157051904 -561450751103390015033551671047225344 3378692435103351708291804432433152 6554678407867360894281149889642496 -508764028389974714377507886073905152 7031506295031507985220016961224704 1223963308602614723281515666472960 -40659477240562808534275510392324096 8546528033602057978829804713017344 4273637523895669047606391582228480 -426012296054936828999114454015672320 7691255127407104136073705104080896 7103777258253234843101521061609472 -933627668004190299179669544207646720 6513104763190605384911459322953728 9725669950807072922180163955851264 -33522405382987748292358285576634368 5336349900898470033408641300692992 7421825846134224856792408900239360 -321063391041923074151227254774956032 5428366790413266764637650768887808 478787052221711250363554272903168 -245409274252375422472332688616325120 2892524364764004637534045612277760 9928019174613541467627786518659072 -782480886630603484914213041943347200 435083227157508701525417826189312 3531491663077942085062808309858304 -740118131773033715463613640920268800 8673772330060673014575355291238400 7834209942147314372048877046988800 -440472562628630389595986251359453184 8909704910549008990760885972631552 2466218425121366300742569844277248 -400963534366927376151352217125781504 8039188573713949174453256266448896 3170735845801066208154775040557056 -784551382596969917380403075710189568 3517404440948920915574215629864960 5708649781735000959555335949910016 -819262277330124414970440693921611776 7012677647653001711381476448141312 4675247013301057996738855159463936 -465162504509694508826838576431890432 6825108902311372251469802207444992 5750193377540711677160976411525120 -541898336733901944935807477073575936 7025621320975538911767719734935552 1126566669844336391751449576472576 -49077646739471754994173775003516928 6435224125799649664502365383819264 6656974568090638200747994013237248 -825344401651278847848569030651674624 716861243213310612471123758022656 8573863359836381670913494432612352 -656270450857743777145371038763188224 7682568764738681089962076578775040 4880556497115383642882611026591744 -233940427829249547929607761534386176 1263994105168179666662359499276288 9492857364441613716084027759263744 -729210128552813237921150845965041664 5826741249507035010394914285420544 5495026470642170308726242018328576 -115225502488181316455849329860542464 4848457564038853659077675239604224 7411718570091880908540565042233344 -789136556223870157415566830576074752 7998440619885441083492220671098880 5358106727017408544859369322315776 -121411655264639022535396151428907008 7300620555154329740142432850280448 8494846084397121609727183654223872 -291058624556122128135611430018744320 6501702927963886840354249400909824 2783159604151237391760313781583872 -260377327766012161110657912339955712 2729718164841488601425500862152704 8324478671430849332609391639134208 -463194706663832099485895579219787776 510026183838597563966566762020864 3363773421728540485486476332630016 -549518688215192839792212551256768512 801616000674175925098004982267904 363395443879552836132273144201216 -940017996332610459605052438620405760 948183872099795482923265880489984 5410812123189191482832011527192576 -159617448026415502549114176954957824 4659241598490453789480983052943360 661020935139428813575605385691136 -344677899434820161492924865542356992 8542011644155080351028310238560256 5050971533960031394603200715685888 -167120476273787125152188901107957760 8818161341106933162553632553435136 9678637458102289338469169145839616 -510592868907037476561195474480005120 9450382321098511394645157701746688 8974317363707584075684634813267968 -172270064379832214445003072014909440 1552070326767817097642586755039232 2581201820080173729151105441464320 -708229940046153259145804525586087936 3518381007088954319610702137917440 1496432100620261686265812231389184 -91057668403022622094463193254461440 9459877465881132771930587627782144 2604874576149462688261568624328704 -520472265700640200547794226186813440 6063954931324155743547766519889920 8997507148834760067448905115107328 -148038067914650904818091947068489728 1353815887186232397569252118233088 9993401096933721330548797001957376 -274996895464279394483456511892783104 634507521999062805127246697725952 612177176118974086823796489060352 -95172770694197777193894440373059584 9583906695539566585743590866026496 9814770136191224887266900732542976 -724159209372381199142605624933613568 7372239678062667584966707227131904 8695274383119817004096455492763648 -598245653257703492884812080806363136 6422230919078806653199990606790656 7215752244399447016275521021411328 -122445960588366634639103254539010048 8228504438098458596385466766852096 38501711819895119593814800465920 -110060394612253064557724542376607744 8477668252347188365013925436063744 9652141902351110636531177572270080 -675041581102004432468131313858117632 1083600321662247505063176287813632 592048202295190586940222045421568 -433388124995464539309672016484761600 5445299244070426306530565674762240 9892672853977310114823172742184960 -651754811110977620620308534385442816 4048848059001331316953296765190144 4169786855266515960182114132951040 -980282155915707598051684020417200128 6857001444520109663357119607341056 491750005916144419238924691439616 -588178827966149555945666938767671296 1429473724585180023893870879178752 6638040243853680020564582590316544 -52682086719221600401896972841123840 8905202086416021680237513495543808 6254698928558097545301153841938432 -648049655250418645092808929012875264 9636784385781597060967008500187136 7863445589860184812050468885757952 -56920255911419068223529730959212544 2247764059539230377958615191388160 2388597965682566820295885025443840 -504826951767195866224993964000280576 7553544267111622716658541924450304 7617424283015473644411722787717120 -108757188092405816496514479125692416 7834579490380885732846724150460416 1472417283209090919707896486821888 -906883014308663122127650368769753088 6286896535538566377129460738555904 4254298509275493625514938811285504 -98350377023223428728678398740660224 6809445257147564434618968679907328 3924550672153385749888169377005568 -829553946461728690158397514489790464 4912245084662807224541228564480000 3522085937274947218513520781950976 -297651033325852868272429850603552768 9773098070916472995758183154712576 54875922655269602876004545593344 -38402524423571782067299159885479936 3594038667960243364750483506855936 8156711757798558694151071417237504 -439466552444452620216895726231224320 4526081222991278625256120130732032 278803915906138466531709527523328 -555537434862102482596135913532686336 8738611234295443284430371248144384 3908780602578938627034591568855040 -351320375920137964576599158024044544 3304029509375045227364612491444224 8286674421931466417479310561509376 -84312486897182137142243989284454400 8199952879336825630736507656470528 780913735819894247253100617269248 -232412351249279818773852341724512256 2737555852105362799863304153989120 1613430619859093406331063058300928 -718133959337335305144911569325391872 452462034421433652314580705083392 5861446329510395103069387630837760 -138567831305623286918044623336112128 8778967089824292984246854637060096 4273037415299172531257856770441216 -756310293315867217345575722948755456 1506741417147378370657123831906304 7831580657263600155941691478507520 -601303354054074109919043539519406080 9737318942068785791254479304130560 2264494811953082840724935618330624 -621334000124672456328453371774107648 4806193077709878518003861565734912 6538309953531451721391144297299968 -161547337196624276352161563335983104 830766443100132973401094790053888 9054936468974573493712809585803264 -352947765660465670787109001394913280 7908240960393556745733554267226112 4573240574893297136012850297307136 -35260469427663368255717904239034368 1492332758804581389536084730314752 8237251075036633554204922866565120 -851450670339835294308368149521629184 5768648092570097731577485264420864 5803857215343544651748365291225088 -214177201413844630307816006630768640 6431772484174522978548450597011456 3848409450844988044110440897183744 -753530141589604577088029721658130432 781674085143295797109149034086400 2478431641382568129299407108571136 -502394677356979244754218153639149568 6931234583081821087486234408779776 4642809374512359017320693188526080 -440626938361582167797320422126518272 9690413769074955927820476727951360 2102009030519945933440593650778112 -444820982417265846149648030158028800 4179410425024209836312496571416576 239773399118632880488146689589248 -147092974096702260493818355039338496 1757632033872234051567176621490176 6394236382707411357319966603870208 -478094328450731238401682976324714496 4314727743221421114374072475582464 3656669568709973342214617747685376 -676599273496296862861594258866962432 512104152076756228351392688898048 8904961373072444618482311093026816 -43544820295691592350346269129965568 6464278339685387065821529672515584 3064595801409661029506760937832448 -233302949288908659051477106417467392 9761063634306710349326979900112896 342550969162798574063280017375232 -103647550097195354865791635489292288 7122372087784279517870043003092992 8130146140217930452361809766645760 -486472422852750420133488867271507968 7660450022829021825114012842459136 7297359837116120850689662503616512 -618324024736717668498629094711230464 8738716894287627797048463684796416 9832910285927656264633117113843712 -123042225388450811924551972964794368 5143407351550136375225670757777408 2690931842956138404261514574823424 -265939575572675127311408984844402688 3774775094594026813288562481430528 5192792417030621855875930792132608 -129901739286023298606116021047656448 9456007166352905390351325625057280 8117123587684264256198895168651264 -591104575360365785819925362065276928 6493115779543816020419961790922752 6001080633979239753235638396125184 -559401137806476583230956190740512768 8924846571066235529466483524501504 7008242050145482377853866656923648 -726156504031721896891060869945884672 7852650333549085939621061357207552 7370843037141651772207266850144256 -136207679364423545650955344167305216 397260923822601588577365433253888 8703452667301312498063526170984448 -863775421170774561992792182607577088 4853666835243455041975678402560000 8286252185772822425689945221890048 -894561545692134919532247449302204416 7192831288839886926735185918558208 9538710745513905997172696051351552 -174268518542856250189778519408508928 9954161509079226831244272523542528 818058006107140439771861491908608 -891838004030220347711101486464237568 4802155374838838542488201494265856 5531099373888486112570980893196288 -218600722703522217118567355641757696 7622034211646231920746654305615872 981442958812121225875316981891072 -489669574776670462386218611008077824 487676930560608205551242938679296 3260068010030224234751369804775424 -294362122402448539246946536698937344 1289514520814445551744929448853504 5879951382349882464652432569794560 -101041168187715736127091272855846912 3966512614248433652128758376693760 9066285296953431844215612703244288 -620750507469051700268498403102556160 2906402750661515186987078921486336 866100722758660091075348756692992 -748344560647159483499397470551539712 4630322964486669368944216256806912 2795795461829392236915677208772608 -993903193985274908991770160728637440 1654500536431940622873594119061504 1533247297750255072826312278147072 -238583232382765105545589188097736704 2649249320795999182855639639523328 2444748990621654175691821297958912 -9139191023082730445823369415753728 4457823642641307566458546472091648 2955690793951426329536604139421696 -357374963587448624457322800529539072 4529899640454445279372305667981312 8826199998928189534270540847513600 -205415003912510207357173629733306368 1876909706823406124024632591777792 7798453648955971585187228348841984 -591058980332828261746452245881290752 2360823012518956563218556562440192 9247278504468103051889965252214784 -712518292745161637216129591126523904 3249902423045249478175705702334464 6460143562420778295692263379959808 -169837882750388102766361819247280128 2689959048465569371384267476566016 2320349437549753690793099965497344 -613404891802139578436667621314134016 6315001860517470302534548125122560 2164886771034298848959297853849600 -991489820774948028549520411605336064 6150891306141860872208466434850816 2693734207851432526046051889577984 -101621979313421739253553258427318272 4028194372785388840715976223752192 8144890455600333199942211380183040 -952284038923606027112869040861741056 9344565943367796814024366817804288 1426719695783721713583911677722624 -191336501500840011353406998080126976 8147612585766848069951355380301824 3916644903253449355788377204457472 -418607455354462492551464488462712832 7711013407895840804288344509906944 1746608923420913245230210664628224 -45975055725798708869755885083164672 1785333706110997817665460207878144 3403928504750545032941745039474688 -203017636760925394245434395911520256 3264689014117285528727605429141504 2123330139497578457546442149986304 -963352767154103321638921785621610496 3934253776634050565187026433343488 5385197365551544754717085516431360 -696320813233011414483402771428016128 3016992805331976051089059927293952 3579691361523614639652381520822272 -866730406821400081459278653090168832 4047912632606698438153162677288960 8430209099374872957405884888121344 -425036910592510098098666292587266048 7264321853291247400461638578470912 3471210588887873250563194930331648 -609834764831348481805557638025445376 7432936180454987620790971058356224 7490970469238613895864583859470336 -817678770279674122840123581891870720 4634777408031855075238647533928448 2231126889198929198843797392326656 -372321258630021982708118689949941760 197445233739609872072163203219456 2796454939086256947262028655886336 -507484722067035074382247818975772672 6557831844880141101428652258623488 3722517003736562671281718366830592 -738150772975382424113445854196531200 4075409683910868796031485465329664 5105035349550503577139526145933312 -145867335296055929628697537095401472 1168626828382016634274427864875008 5203984883390439301394596821467136 -621630060111786687606274360472502272 8912871699563175446324909778665472 2294398487184702034605253760909312 -385645124433856218223852562080071680 8450506971645849687206721214218240 930212042076997763572539984969728 -839388697634800408278985897714647040 2079780936799334387350544058417152 7840666151866313838833328155787264 -322339787798221791209381462852763648 9528770763751773819134104542642176 4000982864784761475057400382750720 -176537434263400952582503787179016192 1164249765891168083149439597805568 3402909210116184737696498038341632 -633064924918287003706146850619785216 4817919138412167625330606611628032 7981192856435552759187731510198272 -907803631940599388030712497775312896 5960470983277637179319306042736640 4500050380191326380371969310720000 -138461653149389183713948102832422912 1669797599151629834787754333962240 2865930055278193655571474607505408 -635906548909698947633139412709146624 3522372493802261227192148729790464 7378169472921364435376031146180608 -930547502241581731130448192026443776 969366639561380979980222012063744 3355218902629335417627108035264512 -556585236155645591109689118434525184 1409591209842998064002489928122368 9028709861010849671229416782430208 -613791982823375113826118653051928576 7511652670832081972242257121640448 8258627073310336383548435397083136 -806455389514171248645739109918179328 6614541263145169098423243850645504 9668573671920313780514146037530624 -542044349835201791798589582787739648 9942777801413904371944641718648832 4641640078067270082937669124358144 -644131540403019300583252657858150400 6276647393531826331499893723496448 4637179878022619021215057420746752 -120416492190840048523462413907918848 3583058206172552270626179749249024 9758692164894545086587328501121024 -916508789989401089904236421636423680 8087157774605143284947558986678272 5863750880858440299664074220765184 -58462281774648679615645493753806848 3695354920227626537164168568504320 1096583269548236748621770207002624 -226354193525473951353789883327971328 7301823616864523545403797257846784 4262781241106017800192375591534592 -304528356090204560886274624180977664 697132724557149264902789508628480 511071918408347373257293391986688 -777683192920397434496260830708891648 6091938051393582307220921071435776 7446352998770796920993518687617024 -686120856325439054727339976052178944 9235993857494563319986405039407104 4294936879509985409082697380265984 -400542421853633178464041510826409984 9311935020115775979597015206068224 2476015971342786511443925571469312 -827554255354550036488609910417784832 8920367181241826483384438281469952 9778221912760125336334525282648064 -900778999935307232967440779788156928 7476502173667440359839178390765568 2536105589310549952743171506044928 -781854275290826222951543971828989952 6159463004147321428149297053958144 5052002590242650073587988241055744 -1261585036934384764533473087062016 2767263599459404493237849048481792 4729821388078907454009790779359232 -378604538520612793803642208509755392 7766716584123782691267921299111936 317022784539364707664272304373760 -59951265335213297151923288209883136 3126149179465512394307150876246016 7751146818833437875471811405152256 -782702278034999558648987453669507072 1922635369031260807468450242887680 5374328552038568419481474247426048 -606617167906183123968602970425131008 3747820344503195530289307780644864 4795281937908473039684692101562368 -885657791987636430391464119574200320 1040916147340135275790988986023936 8656319799828650735258519478468608 -45119481490574418141092715201298432 6931763154663166458701342518018048 3186130681315934199119025002250240 -816725094988178371789944480405127168 262814781945445422636807256801280 1442126259214318488980915948093440 -435448607482817411552576428631392256 3703344756866038011297478115065856 3042433121335567758316985923928064 -415769502785276824618530744299421696 9968800307264571454011247511470080 9018043705105344776138630526664704 -49103788038079186933182451830226944 2779893292327370799168151183425536 512107625926309602683351472275456 -18668405613829628353332695411982336 1955858225196087122741304156487680 9899808346251431787457202482053120 -739798825788719476763849882341474304 5134358566479103608722752196837376 4607199259279289500689224559493120 -825224501173443144170997765329911808 2590945284469732713392169472229376 4550841220244884857237881757892608 -677646479015486596671790229894463488 8184018025258530113643847023067136 8716700694628329118346483442122752 -818785458619363427487648763646836736 4414878413833571626971441657806848 9620551448363209065977447517782016 -583445605178107180257398802134073344 5306916162482155055311121333354496 3770734281690190998598649481527296 -551764388458880252894201931584503808 8078531420690879389776809105031168 3599910253229886178486643010306048 -523209407618368350480365400400855040 3526994498747454692553611037114368 9371186339733681588814623425953792 -375246353044274838209675281288921088 9785919642131321401655168182779904 7298144440421962200374836459470848 -814665093879541577500533512596357120 2105498669573356907668455095795712 734730073524441670280348566552576 -75828780058134795044848556564283392 7244564934424986423917399743922176 2918720303681568787647677935386624 -424400060031804962166714365066084352 1521531308593722076307172309860352 6097685165970103604201268797505536 -578578828141204031377470282243506176 3402244731621071311799100156936192 8480185334797923803412775644954624 -401815880063211724108872061846290432 4170261985109788467806607188688896 3069378182167863737605357756743680 -593667561013503011873282124127666176 3307928012667035274554580840480768 8702875368181670337156966825066496 -598293907430159229659810332237889536 7939116062388444421609792672366592 5824593796568783654376918193537024 -320726921340382684257973124275896320 1022017603898397094037232413573120 8285603217604341231135879447183360 -131480817503608745874264161247035392 9436476175084688426164391843463168 7068684600756067322961171916521472 -192983431460723552521941776110452736 5199733576436906956300075713691648 6191125500158061035665082988625920 -749796527733466504420551887345942528 8127713828563894583203748732993536 6953886205514290755026776185896960 -749637380575027484664632998356844544 6831453006294351460430895537717248 8160565533932370225197665191198720 -61010366282448018052349643097899008 6325869135880313229606049885978624 8988120288988112261689809133633536 -564291158080572283414205960021868544 2369985846734451444057350929907712 2250705224860088821318728911159296 -952813923557355551330573883111636992 9728055848252839278946873493159936 7859902985000469312760109804290048 -185243915442046778781019295774146560 4225631354062024389785091169058816 8776361615275565294966871217405952 -273271544673517194699866069989851136 3756024192086611338667092785233920 8877806628707072464250662012583936 -718193276076602049078417664382074880 2970745505428031816198002516688896 6058160602784184807387579432304640 -405190450680885150981741564349382656 2390798709854734258959065131515904 1837722601290406544765524893499392 -19234119762754325648918178684731392 4059153881760217541868981418196992 3251100386820233742158036880850944 -189740925270962120400798401800699904 9605956483936311265908697908379648 9282298561127556605551212736020480 -648313243692300153002860793523339264 6421205427349941744397171755581440 2067947595071616309488154883129344 -272942867294798840983752787321946112 1929188987728681662260473319391232 581719961503908462783643722448896 -171069443574727414050303234071855104 9354772759086107140109623334273024 4258896114390704294296692436500480 -39700901557772705937364568560893952 7983962407773293595723627650613248 9279740082573066034656579027992576 -972586933730108272847400067269656576 9587879743077718508763078090293248 6800097034822992162307257516687360 -310381148093345284654490629001183232 8097950264781522444761109001928704 6402830721371095486585315159703552 -250874565776021232630446457450659840 2879533308659382404164487007436800 8191378071298568082699919502082048 -975047033711320568879417035914739712 9538167259205750100038440936538112 1351121953074454699946443815256064 -22197882108498436775636069716590592 9172510767653375076731705467338752 2328945979032650748661126884491264 -603341547156187954615861139493355520 4294931420810431194596985656049664 2376546603472489134054930485608448 -393845648326123175690453483966693376 6274352206014704592803027472089088 1979334669652364249274996223901696 -432530712521717343715396415070928896 2218341275306961534289125744574464 3821661412392950421065968809672704 -939084604711011278535483255873863680 2313363191825147187953850965295104 4425335391213688391869084450422784 -718609086410492915180823761649664000 336284381320260369213280414072832 4397345157678933844716256418070528 -883818843525847901187253593251512320 6776054495684653080799183714123776 818800095835456574704370306777088 -149113330876637975126443340219809792 3411892543151555701682319833169920 5459207405614363681986705660837888 -136557134372047915217623451109949440 2261792388939651980207884804816896 8494461616936112327278569996681216 -5404312462454970378639285820588032 6606781647628213952293611079991296 1320559677119438265972282617757696 -473680295406166402956021873294442496 2887113578000994063123307821006848 7391044482821871834106287336980480 -51872850352003547867359574614867968 8842400944067084828145634510897152 7433310052892089908088393726689280 -786782704169212814052057772179062784 3779382685319469825288639715737600 4775888365524667476144077913718784 -592772964299325843328909860354916352 9296151449639986749625305458016256 4408414875732446103130923612504064 -40787805225811168831929182756798464 6058144008716309066675202306342912 7354558917664010209440043492179968 -69591168190605441136953055342755840 321913734219600730961261306576896 2232661701213159469599723616206848 -96032023556603340540587775763677184 6445763609797016424792463608119296 85000458229838428930483788185600 -639167988504632646599582931654541312 4995923854527514903063011862249472 4890689261385566960702116102930432 -671275456130136722884598000703766528 615640444306253578193344172916736 8249805431612284791893469668835328 -280376571918972738547077229016252416 7160839902304381268306228557119488 4586242838487910275537792734855168 -819595520482600491149958109001154560 9273419104337317179286015054970880 9481781966666921428092567603380224 -97615732568384053199594423373004800 1013042268570845924086458534068224 7657194454929016356992394826088448 -979008041051349946143272647383842816 4685105894562382816731259501281280 3758525038181401262342148169138176 -651864798400463147202771713173487616 1472110707914931408159409736515584 9849696104165238766743443570950144 -938665737134492018496279107122233344 284387544636851186807358974066688 3599480826827633489052235152228352 -240207917742986029410096762417315840 961836011076474312840917492432896 7399146435957742065353540746870784 -150146798589248540569143846572654592 5344211968073650375628049338073088 6713987092300898145423664286269440 -609409822179810233034663922929500160 7884206917865897185035222079504384 1544388017131116432457086976131072 -950651357899228549548338848695582720 2316953205646435764814971989393408 3687647249740165074301069752795136 -579304781476742439094950489330024448 3993688929344636510981553439899648 5143394294296247973455026435653632 -437698095694503768051573350318735360 2102348671073400850338997440872448 4159190455681521953163125540782080 -982630530049702981659195211750834176 2501505521496557922519357939777536 5020934377259684388438925241221120 -871642925342084312735716340377059328 3113531587487269264438134073982976 635974416695238157717100069650432 -175299587047621292912060703954698240 8482746393802233605236021650259968 9485534405563864695124864240975872 -193339321000971525803250361368051712 1371121002162173586652363250204672 6468382104005759460561887766249472 -534247244290023239356627019376885760 448465861136052744798850844196864 6709560240053389464353489601691648 -895447316335993207638400740410523648 4540063449797194802565189229084672 4143641392297567594342280796831744 -419445059391558610383303043211853824 832402133441713060723129506070528 4946030767029504417713277108224 -257033338624777090383777281408499712 6135728874648987214434724585930752 1566359399040099187346751354830848 -196420219639086309113671316674707456 8635022381517953965157190809419776 6578410943960154525482902160932864 -871042161778555418951027810893824000 6494515229645305542957604020420608 6515787288709441572934025733996544 -683423945155674899644135368313274368 6967518382583730593400031386009600 9141846406909300385011988397293568 -981917583955632602403285976846696448 9875626157781763060143518468014080 6934611216894654963004286462590976 -934511593044311220901721837689372672 5756281285481184603737138273452032 9679867199239964771225060367138816 -667217875280082249367130426746863616 5651272360526513925099029507604480 7341531899579897918104153962315776 -161035480576485047059650668314755072 5286315663094142054536251210465280 3307377478910398220501453625098240 -684062776271134798077969433976897536 2273950172507955389924615886209024 1251487811461746418802635457953792 -123320462708748150848615012110434304 3177314682554118014055217522278400 5821976546557947517152473487769600 -506714880986799497486479950895644672 7955541860541380101362921131474944 8178846186562508483296928500547584 -217279094517301627573870634408607744 8014840754887081175888551814889472 7349476660661425047961064756477952 -937516194027470414296376888782749696 5263093294744264143391483702018048 8535525749381792330600822196928512 -70878817520207873017186639002206208 2097891657839832683024283041005568 8635268484491823967619207361724416 -430514515892355262344640935168573440 5303852288692345883364721258659840 6424489624190699879192403153780736 -652213354451348954219763017768239104 2026575251036467882829539365093376 8520156293032162309020335430696960 -51175790850635269367619881531342848 6371172463628364479131704079941632 8367038744981419701305825841643520 -306408263265320252068415981202964480 8722942913321000327223810726035456 1443744939468275311490826630070272 -154728266438504571246901618798493696 2840422540276833523296875145330688 4880436336967926350465732806967296 -900650016675283789613422225007837184 6597451259721737958533660938338304 7074825399328760659222640638033920 -625295360327223408289616618256859136 8324943718966927518366069684174848 100214335849345484749712098590720 -981046653881622125704704455713226752 5713567423052369085373441692925952 894766780417035897346418693636096 -925061328963291159187509191878115328 6300015992042969087083951188606976 6220642210361960171848231995572224 -723703149885281609476000544108576768 3512399333217607730191884127043584 6261949653467301555738068155105280 -770164955435159614510602291624542208 8283940665202796075923554261008384 1941106744145366546854376084865024 -87959941130413930369943509598732288 7085737420320247536104354466496512 1223121114278628827714236782215168 -116220268074142139357814516608925696 3917931282097516970668041724493824 4689244543225830078044343585734656 -952792184711281070588950139075821568 2119656546079235451675159063166976 653255151759873851536952797429760 -222429581275149347364057756624486400 743438785156002872676081045864448 6786088467831061455668415626739712 -945531876181052699107406941264019456 8208774711376390767697626117701632 9977461106531072456329904800137216 -981687870549566493615962915038298112 7593153083876902166619529544728576 7169674542948502522468793241829376 -108089217631195951497925814346842112 8573032698430001265503235351773184 5506640350434355331082814660542464 -382392201596968365596301429114404864 8915208863365823036493003331993600 3083844801450386506055629299253248 -803739254947014723318021362668273664 8985871383645567535184196224942080 6521468473870319492125259770888192 -74013332155280287579930283741282304 3239517440141588204424650295345152 5954845691323372725204545093763072 -908188657296457934016474808653447168 6879328236719949485657175611146240 6527933275292760112585875663093760 -773818713085072756780325137176068096 540018602619326906178535235256320 9476189750733392608000566689267712 -867845629249312349620962465796849664 4435248503206829432332262536380416 5186335013059568566250279410860032 -442628172965180500863991185204576256 106102264933332886026660173840384 3857250279270389513975019308318720 -347766672281175598500343639265247232 1207312011081035588342007336009728 868831050131744003975013967331328 -825740222592180622004136011672584192 6294835002828629220622317494730752 4951360410636152844994656153370624 -459338562325279358765634498464841728 3898986227750548883140511088508928 6324248217470413533403606392242176 -42633386506738396216960354529312768 4980839115702739893836478639243264 9527888261721889219943806619615232 -884755906104477832176852008406351872 6373115430718125050892291445620736 8472688225981203160994393033277440 -614994295571018891678608753212522496 3738305007478480769172387882074112 7686230836000855519699857112563712 -830190542605376380387878996321239040 2458712359180249650126197954183168 6665891062892583683511563927420928 -776742950873091751440506128082927616 7202435412459466481864446828347392 5642449219067468705901886486609920 -852527605154176861014342407976648704 5294830612882397232577391760506880 5155404852949978073636662534995968 -15113788143023203463858185759096832 6456981598117199956881815554228224 4593373998849475816678252412403712 -446420454415697305898366154567581696 326201397649498307255503524200448 1409169652167286827390751874220032 -918529725373772360938772950845227008 4756124901165198363752252265463808 5949861713727853292156977363812352 -882027426021035137485969626624950272 9930850240571258212475407949627392 4167071863140617637148150460317696 -189075163096297329642377194883776512 3127834963468489188188519279886336 851782709931863264859052855787520 -303940446106945159062893741794656256 7968980326366306584959506815385600 1422335238893900567072431245623296 -129283477547991629006390786227437568 4897980751461973876660022062088192 2749813448574252282556648232321024 -949584996458155438700425487767830528 14637745125218886109062787760128 924584492048115368234211122085888 -501990899857222488840326061003636736 3129976816516256252473939945586688 746748134035545852594870848323584 -559713794411606981209800559321677824 452823144352146249178364621357056 785395587874286141106479951773696 -538597800589423998744002491213414400 7248780796772352142104864208453632 283674453770868959995591053541376 -321440018030707842908338838545891328 8514952676973450086360609168818176 7811852491662756258973408164839424 -791705516501103579518150626512994304 9526761963943333001155399496237056 7082845708566994554130136274305024 -471781833298599652730971402767695872 9699124611404060390659792987750400 9266752475742707315086779677147136 -269128000336936350023156152368365568 112946349946047552526934511452160 8390751758157813685655069119217664 -131278657776627484526843745338916864 6985920300625447804787894710697984 5776886182798601139027132142321664 -318214662977878788235864753349591040 9588286092883320277440979498172416 620164401627448151520854124003328 -496656721814218906932415472775200768 8452715745810151841315955186597888 4120711522659366070227053058195456 -356946871987577009710086353628168192 1188290964929908759798661150408704 6852187647163558730309384330543104 -203790068740438732509598213071699968 7206400694072862925230553459326976 9892847779096173299575372854067200 -868549397790546296948561032620539904 5970905105082729991473028229234688 6188131000557527900811422488068096 -533818225058269745635799823128985600 4243361614126455671078090964992000 9251917338316647560799054381187072 -289809460051537603936540289992228864 3307100080610431111696049166614528 8461690460962592742347037118300160 -980405819521474254614953604633591808 5074600304318506107399493340102656 4723943433843713644459001095651328 -727500149855946766636666975594479616 4294971946485545157203067785969664 110248702492625664159812922900480 -26311679819750598859090523727069184 2292338340999001956620039144603648 3575643722192922906673925354160128 -65171811961644517273962476801622016 7025202349854473782908153304711168 2632440616303278728834207161778176 -919886418154638879659695974081626112 2286509148034632806685230002864128 1705266634361637640080709184913408 -701541843837906427081878600692006912 6224420545797465415784318413832192 3008858482286007392862157567688704 -940491001770108323022711366008963072 1393489009281495455492577085620224 4914193921815259641802504714321920 -232692465913401597611737171214991360 9636592645573234049793606935379968 5863799757296690065753374443175936 -678466008423779752939765469175349248 3613201604651054277706307392765952 3052780266472337084173658198376448 -590058375683661001079738858010050560 2668181563485996129502875554414592 2205193493766541581353664575963136 -173531580080977820094577243641085952 8029425187254507242452577138245632 8512696641299313441413058126675968 -354232062235204785327808866263498752 9755827410450006490869744978100224 6060839629878178048776363682299904 -330925951225945213612493609478651904 4570276744338924826450454883860480 1259729780798113090084530397642752 -431136335876720119013122518982590464 1187293770609356786226517294186496 3940390582535654291658926811250688 -112730340672330584259715727120924672 4867246540752839036054855210762240 8256262946094151277295037820436480 -124400146833449137492764822381527040 6586776461358010978228114152226816 1396320861180544568766774833577984 -356393875392836745989915002124894208 8885517892712139083074718461329408 9273960840630950277290340365893632 -660177570613840443620428562359648256 771100237228589454450309929631744 1561640781819254048773374874746880 -850435469412655528938514466266415104 3464220959905850348715364208082944 8109878590042622821154242311487488 -392083462177700913710891173624676352 3829083471955823448747707975335936 7311003175577383727298613306458112 -211145451299717140922203059498516480 156422241039328880776788626636800 2189259055707995894203760064331776 -673472978727031550941976204008226816 2097643269163637837515017485811712 5063695034579790168738003446398976 -573684274298632765612708989757292544 284273022769017750572206282244096 3195864895437797944917033962438656 -198904736771084561480248727095476224 139550480724085059378192364601344 7410679841529057163637553648107520 -312901112432722079538546537805119488 81665573576076397917927280476160 4049123968301744450428614622576640 -163301491945468157188346667486674944 4592290145579187718204067055403008 2364492699201732285737672015609856 -463051651124369275110294281657516032 765439842962038189429085643472896 824087707510973056317014753148928 -96828961632599671444889278082973696 3178891222204543292865053707993088 157514050575881374510090373038080 -95790219661180445984154522029654016 6176774245544307917071023442231296 2564275561913319319723822607761408 -843501971957351338455606611765362688 4084114017531705710783583500632064 4686878431159642834600500385546240 -235674290772850699332687986069340160 8242329753783680031205901905952768 9614868591570294019290739375079424 -839606090669584233373269251076390912 7894442175235861656166787742433280 8704664217913158889758380785664000 -234586540443540814504282584231444480 6180403949948798367047251220496384 4107648745302909193775612013051904 -238388457670481614553326317736034304 1822561175312277833765541092786176 1861393421660275681823326876991488 -111476297856512210624798319733374976 8620179003839570450240659584450560 9881960311491239294515390334369792 -838406830254425875111918158336753664 3177447789444651088927575597121536 5898717271705779574504024612798464 -21221891516628116080413001037905920 7438953745632366683839420310749184 1658162991429549961143124823638016 -413513133017668904282187801768755200 3184796374688753956561663234670592 9787270937323245892830848752812032 -418062653015329624582359035884339200 5789621750575551760534177079885824 5389120428334910803557454528380928 -468463659583653975654254670252081152 7369909607806670172558678611197952 1226341486221796350618294357590016 -703778291383097984584480998775848960 635274278677156284341362117050368 734133715054532382394692919099392 -425564563479650396304669657012371456 7780114530378421800851608027791360 8457565506594408663147306259841024 -256872580189473281504434895668117504 8370486774618475221171193199460352 5132468898332286053983600253075456 -32646386291194415446444050407751680 2255646189975224321645254331596800 9644050304747055575216444118401024 -117268422695402256408984573494427648 4960723268202102538680338233688064 963675098868688755547596474286080 -406096192007551759587133261325795328 8910480737914726841742944014172160 4944287994103231588852661342961664 -182361856751464273909729958020775936 1560346072130726418517467743649792 6098215816045997491116713130852352 -99244284877338725385022798877949952 2746579420724961790506733873922048 5610557372207925966541827963092992 -109783650643043713466455894693773312 2806760313541076979672070477578240 9190331940353601637092098689728512 -293395400764183298473963399055147008 8460245029538848337014192622010368 1247954137546939171353195182030848 -672238553731499960002477714894225408 6651213588796023746675271905837056 4036525834827256216016630577102848 -16809752070997076304478162324029440 914694891141838638639688114503680 7039408510251195987719573194407936 -171251404116978806394795372350275584 8097716872111047387989483645304832 9663413370798509118676086000975872 -705807174741365752501733489995939840 535345667316624659271665821155328 1195283667159787921866692742873088 -167910423918239765960940665960398848 8052486799108351126090913882832896 3809325590620572963743936190349312 -448081613686097937238023633356455936 841581736648540332409001324052480 999501676515306810789100492161024 -555046382861072925466479178501062656 9523773836360764156412960763281408 5673220417189516645197127006289920 -974873620752393894418256901607260160 9548416571635323579411542927474688 8321844314635428240153707649433600 -511025111767587938707506951826178048 1224204887718219747192323845390336 886102559503975256632733646979072 -165682012827445846637720413562470400 8109912677682926820009805900414976 2480841450516898072774350775255040 -702172152980241462098392943016542208 5123442390102721199144938760044544 5000832835072182907269064461123584 -967672871103132202921566339545956352 3467694427015963153688292430446592 7409951857459141409487810891612160 -615564361112336798807847835109687296 8570925691336166981325599247695872 8584361676460648930478903319855104 -205477099407411699181424871447986176 1147278967855231805708641438269440 3167547704025281568764094901649408 -701058317017671016610099741662904320 4562193185884244939932302361755648 6018638237760865875557660913303552 -448958490784129089568925150571659264 794476687600009872009960622129152 872211202288099496537585180737536 -738560427728839227556175437684015104 5045443575810107671883334778093568 272262477929138291056243248201728 -138069961389105648777792155442741248 1385899425103557274116808540946432 6274142528586455582913685702574080 -315094547874567253565070321259642880 3338224258921682524154065202446336 9275921464006950218247416190074880 -462233299464744554638257779942359040 5873052048880955561405885699850240 9509348439706750945339850763534336 -729811168148264807087896822110224384 3780219178399399413273893848219648 3996997225163053583578185534013440 -667796066831367285381746958496956416 8820103773957107521214185591537664 9831208455910248077794858921623552 -533349976781025874383730656967393280 4852271997988168280451057981587456 1311026022191819062438401599864832 -293297193432037500204163241999335424 9035695993172229395765781273247744 4954450546229492604018630231851008 -198886656317330423585445192837103616 5347432877308820432347682421342208 3863905152321567583027897336594432 -26492793395794521925287562639835136 5732160369086990700445183053398016 6961258647191551476172268022792192 -7324460045561145971555601966170112 7450091437863540659975998899486720 3790349122727668792642354076975104 -257853586033470868804003548293496832 1192983502979707616381355738267648 2873974552482022685475115540414464 -820863616402481542456458341664161792 1770906805039379356583146156982272 1474437353471957040797323613962240 -920130775528977660647930429366599680 2664689690933255056971012662886400 4531732809033388587859461034475520 -364314641623514720387359157688205312 20539277912334766241999036088320 8505727505411706629253520756310016 -453481980974135520819242423010983936 1429946551859865482891107189653504 8792742933471442371093052149202944 -927551717058842645997489846585655296 7873407763976472065064926286184448 8699559851439524803140583763738624 -430228629945471768086922694399885312 9826818463542589696789288513961984 2038754068043602201540414362615808 -284623384235274936279658253462274048 8909060998874184262567329624227840 3328151936291671833950083392471040 -719052883951664613115735789812056064 3465925949106637842787164359753728 5828897502960699581533037745143808 -385992538776431256706843199945048064 9752272595637967568255707147927552 9739933514932838413057811097321472 -406641118562607872997420591566815232 2037766733404417668385995667537920 5897628725758592977172599912005632 -221513899609669569583949934854406144 8544564217310150284253905320673280 3905834996282923228457762067316736 -281970801093746532181225455728197632 7683529260288991078781652631027712 1299270000158205529725066178199552 -702932157092854192257600390189547520 7429673740029960672304130858942464 9801105801076074283497559968186368 -159961181896609940493758008710397952 6587213540692172108897986805760 5658805939382824235148211505856512 -724993401924323472707075143263846400 3512245984934401838654013172613120 9552936227724076957161390723825664 -962478078862304866400300989656596480 2834290961291717967546762259333120 5001194838402629215190630635929600 -715575470297507406490965610713841664 8080251722167763247195555650076672 6281403315884174956577301876178944 -558710614508399268664390266382188544 8828230093190430949734361467977728 2872007303782116564983226153566208 -840713632265627635917083041666695168 77577723236446651936450048688128 7737508252879773270789583605334016 -17287464828353460606318086147014656 1668782231171515205075035813314560 7349639647604370979558510800404480 -891684870296243016319850696866267136 7395767821951519692724702889902080 6440332440450404109390853842141184 -14889970235642106266096615592820736 3958399908031464719364194836676608 9559655989495409468257434064650240 -488896647313467464588268421831983104 5668521530092846616132043843567616 866645384848406250881411637575680 -197823585980562979221906683265548288 9343628548989427462378308669276160 597675978002312365391697927995392 -85285939960309725325634401342586880 4547166684276229860396298112335872 2087000300365595329574397540302848 -999301707694488431630910210392981504 1777385727538271488390457481756672 6705232721722284358744090454523904 -278023633391223176068031928420270080 5028563219134809236872899007086592 7306114141677888963729939561971712 -109022708163454861423338066773278720 7383342119081596585652202762141696 3416898073007443864448709873893376 -461068944928214165996168061239951360 9220013008280161702972116770488320 243388927191263059501899512283136 -899649874229455719082761626872446976 4390423952626850648687998668898304 9015051716885378245345969300307968 -731094427140431751454913837611876352 1019752152190346569904255752208384 3000153067976339686576853797044224 -466014794845568111248354168830689280 6426214424950560007551663149678592 9855178722690897756472732876275712 -294927485068855440633081347904110592 8967131817609422749082369231159296 1836246081748341648666581421522944 -17371548820920212583623470306295808 6220851008204327552497345330413568 7463091280669726044260764110290944 -764740743615561266472438272563871744 5371507304320664454865985340440576 3849745489016225075670142672699392 -523632001977524632049632619400265728 3048178294107841491729984669089792 2659109288850978500670671374254080 -935607154406624024035333239994318848 3012836329959456563296704711884800 2544236984956206788652336897064960 -593849217763496725077548485729845248 3109115551285293393610231615848448 9122031160234146971024673879359488 -285031856634856150952629464102600704 7503898171720802377519247375990784 4195526892509708249956380672262144 -336338342297962564391194341872238592 3730742924006083934734191551315968 6352569291043209782334710846849024 -242292603144436263724961522220269568 5700296655317754195280635799535616 7039543841483820142697286408863744 -921699222252876487296880046646493184 999056463509389621147508980842496 3582144034238375827680894663000064 -872042400375035467071004778866671616 984763989509224978191984787193856 3981334054326815777085034252468224 -901851896969799194612875212284231680 9522673868006786849967501863813120 1056202272742040558857126422773760 -17619271065220353362155321652412416 727247943847177890443658031792128 4453599477077185131838818589081600 -159576457412741839040433482444570624 1452597128940235456909802286874624 5683777907476028948599806099456000 -974303530371007849203756007568703488 3685390289986181007358927189311488 9752642232859478585012812672663552 -312766289034424125711611767052828672 5948691169223513426793804175769600 9650282114256707091438618204438528 -192931039217754753771249868795281408 2081215211331880267875550983356416 6066548037863364267912685925957632 -690454913697738910190556785147904000 3528988049244233832371084089884672 8426761808132768413073129959587840 -999899087372939075352113036088311808 337692552106468954293901310558208 8614823740361594549417464658132992 -60487046077520098280480927362580480 5924286232257857223615213308215296 8088551403794523277122296856182784 -84988713874429244893058449272733696 4103517196290936392972766826987520 2558605765426704527952469615968256 -64194702351396126301625343226675200 1807840482975767703071055820095488 1425984868420687547335241860382720 -133811727658259840582312667155267584 4479933424374156952351277039222784 9751843588307879444212527757524992 -529580400143635173945052776470937600 4280431902034833390921424532668416 7128994527960927933522071502454784 -462800248567948033275577980919218176 8989245020988831485139751404568576 5435141726914941876840172525453312 -297316102370848740558637422107164672 5321402779008645175128574901878784 5421554794377006291512575395889152 -22405225463651338905877590740828160 194177311643938293630554509148160 5591445944608180236499044911808512 -559201583548942486054159416461099008 2590426707655858991824407430692864 123831344559560732942553629851648 -23659728797869261011977250290008064 8665347471630154260849691222605824 4602054626541312811785881894518784 -614019771035096984286634944524976128 6760452378954673542308005452709888 9081104752181814137824452169170944 -580817852015504021233217231696953344 2375805840029919466278908172697600 6249766486077147113018666361290752 -482267353345681013424157658561118208 6084907674110618128971354142146560 9905326971250551816053956529881088 -146188318812999484579702189498302464 6645303154139917737908164198662144 2768251408426157595598069230993408 -584396967607706693476305481444098048 8304674428090323215266387459047424 5888674360905438895721384004026368 -604487463466300025255062119051689984 4630262036309275283166901305344000 1076216927249152445081672677851136 -557363951621915299143714229849161728 844969504225495100140274394857472 2085045075777129365135415234789376 -781496390015781556178731200258506752 7016964235050681811962999580131328 8684086474350794568781348279943168 -881236430363852366133656632525062144 7150157915301242477374193665048576 6648911491968936481088301061636096 -935854668094510632518398993179344896 6914564507143618572783320005869568 195652844141722559729869837565952 -675322945595510608815129528710987776 1087626632806611202977551802695680 4184960805863142882180133885575168 -517970277384342754891503151305719808 2912333896381251535619226540703744 2935191757729145775000689221566464 -256468353821219274441008767322554368 6544951308815023171902873429606400 9849135917935009302582811290501120 -75154277838581423608087618460319744 8762184960353064668233453860290560 7887919997712079030971290729054208 -493379950305758958096034239992561664 4754948158118140936317983873040384 4697712406427711018261569286963200 -159812779712686765248828773417091072 1308631701861242622343360960004096 5872956945523534804552538216464384 -555132908231730374720225619101089792 7178964363738310902243385147392000 5745595394794891823749527335075840 -945641534068080987231537242096795648 4344497306047762574838650646822912 8414436338839792831387025708941312 -916990635297255409501127103490293760 4658343756556769239769383392247808 2651702094864334260231047093420032 -13073675061644077566742913253113856 3334852446767025776936006755287040 5990377730152910125908935684653056 -29991391521786433420020080078487552 2111177114623019220326247185776640 1192329453742280094934581007876096 -16810192964407649036935520166346752 6577548609597070134942568936374272 456157824850546165874923921211392 -525246507777499648402377372877193216 6946585617122559483006274156625920 1205137923209271279887609034178560 -593224218775651568629963905124270080 7933232365467636473757247930892288 7456114552332609904027220406435840 -457802583471797671167527604994441216 1048476097062576708410514555797504 7546911643274208395634813316366336 -571318760372671646527033980366094336 857105479175075749339504389914624 3612074648308243974151009982218240 -582511828953899424747777486493843456 7539209657164540602428167282491392 5162165226331948026697693322543104 -812847953264016440760678767048785920 2755718528936792413403034721189888 8079056088589069619014836561117184 -985671035693696601170424536217157632 5503962189112391348886328869650432 9221414087123922329573185948745728 -982515123425169075475436934552092672 925924191358002710486107081932800 6600656046164188990602007554293760 -39613142307904340524180595873415168 1946630324284566270160983730159616 5805866494136167967242907797159936 -322736640191808332007482044058697728 1299507655671978038284749388120064 8651904663131230264165187874455552 -411689118821308898262964777741451264 7811440205777617547616273502830592 6988103939617230634002903765876736 -987308662199880694177387714963308544 4998454542285576173458966089564160 1469509993664149678310911425642496 -131161360313167457847066599614316544 8399250952022521100844784871800832 3228745163730179427023762422235136 -416161549253281335959287262141743104 2570644128690713704607329806188544 523836485047633632267336134164480 -216968871010239159604762166830301184 5913184064463549070994422718529536 974222707950954314108369023008768 -282462848202166961491268689717100544 491655037644826646636099469836288 61152024832884065387184931209216 -432724768928664096035663669694038016 2101580489808399732457340491792384 2846980079523673743258619679342592 -763836791152217624442808855485743104 6479779389350706470527276458967040 5840752556610181035336821970567168 -258677625245239174788259113005481984 7895349686509404280330414031110144 8753842792776477678466444050825216 -182898445354677036938489448290582528 9169863174023995148175828934721536 3188411907417997343309511650181120 -732305266771343809792240474203881472 6807593250239979958358986324967424 8410437080096904432019767652515840 -792373229480312463069390884397121536 1384340320717744108260498817941504 6713393107073035940460162357133312 -911927036287936619620543851717984256 2948927999781030350617653035401216 1585491628295609782619754089938944 -325722622907019063158734134381117440 6752749003594827623178108110110720 6551764810717101555320300056346624 -629979394105973190052068480239271936 9021074467537688945433168421322752 5491027081469790907863458648162304 -175826836461712761889149932886032384 8565915869405076569122599321206784 7975245543429131016689182033575936 -2600204569001637410871435956584448 6551576350964367817064686395850752 322472724593574657403338360881152 -414554272511993807884285531249442816 8329136377340566337980350882381824 1621807436943275924610283038834688 -965741362985908320211279334118260736 9781142201251135375547980845154304 7991445389408735273511003199897600 -629304041085137041871151791945547776 4712549352176112887403022055899136 1749313891547436850350533147361280 -767931284495467139097754926948810752 5363661194171982767173236311457792 1042206021556633551814160610754560 -570302188625387257293024287512330240 2134061768961621289044368886333440 9498708241700040637173243544862720 -487968702787251740665138962348638208 8793314539056049826531879344406528 3225115577545529107199702822027264 -550134827242497040553653906773639168 3290369441759804850771860945633280 7525185912982617021096059526447104 -470881127314245008539335552739049472 829631198958618669244532169637888 450466477551777322280528883220480 -120218845637213515369968577932165120 2928707982891960498113565813637120 6702692963276599437156133984272384 -384423750534977460437603271288291328 5930540854296774660193697537196032 4197553965727087141136931447898112 -182586637865889552678001407810338816 8206520213852387530914184583708672 9776165968057489811886603111497728 -520778503418384046047280128531103744 6692545632834297089437794048147456 3642956572073373351775379430309888 -542085036191422231646270841394561024 4207665691901826774573761242857472 4633521646030952676215872089489408 -34137585953131120137106960490168320 8146667592834142801638107723595776 6390898685820765078435588607049728 -795058610199651213622791282354028544 696646628164188463127285869838336 844785031039025824232926661836800 -208281938796367468622535361491369984 8976513883425595284333570040004608 4145708496943813208512375216406528 -963821407094234186116763357475241984 873519557121310011381694175641600 5160199469684008022910977517289472 -57104332729574722950061164286967808 3329312925019379538472986006781952 7201115097927461715284411595882496 -997486266081780617347589705023094784 4872250699829013930104079131869184 9365875263069467943677071751905280 -608435183392927440710380736103841792 8638773337520170998374088627453952 9246438723223518409532176414539776 -56923017031940499408915712817758208 9015490359822795997455893709979648 3273927620563524842852776704737280 -28075037891890134138709408126861312 8174490403107405796213424536944640 1640798371258923564434240871333888 -844189243561360564318775336876638208 9689339295053641120771348400963584 9178891730067991060783127416799232 -595929442287059662350541841231773696 3373693263451574312667201576894464 4214777103668752637230218565648384 -238805990772190255870986000374169600 32394993178480969007082751655936 4014963108344877590341349000871936 -396165796946212932859276191149850624 1365900414404980185645454383382528 540974488375846707705740687048704 -367712983007093363679360925355212800 2735439283130070919173718908338176 2904983489000954183083481454608384 -473915256850969342510294759836221440 5262844964375890342988272726179840 2063864756731673769341110915694592 -176537839116453694338169420013109248 5543006613507762564608979640516608 3659056941341444186567245427638272 -128062538252376633173007615926468608 940955890650603036592791776919552 9809387542430536749794026292510720 -800155087147518790707845785871974400 6737832572274035400623708237201408 2891732393082693069162538147512320 -835186235121858379404119797114339328 3197264009350235392968770667413504 7788527594876368978808982531473408 -116177211185219474766884809484533760 7802737496242437520387190292480000 6473141472579956575760206675312640 -966328851861005585323758953066135552 2092311903560370847509117499604992 6296488162167349290822407978745856 -120798192552170465395300073104998400 2180818989407366807853130894540800 7475145174179046122669693405757440 -432722239984880083595427102473584640 1707417026909853130911680139624448 625808722251862923201358480801792 -501962048353557070554258785771192320 3393770422675355202837361417256960 5934929214869751525143010925871104 -710826462747689718266090293762719744 8555421418074823517990834264866816 4251333088367994027736314788446208 -335405541700833045659655756643827712 5625831666892314186162912666583040 223767987360441319008519829061632 -879372711423560890504012886152577024 2959243665355019072182481665916928 1375646511447353722019130571227136 -120973899518136194422577507812245504 8298903019538020983245597214507008 6542427960200528187235829133869056 -630955046710427404643409991886176256 4474911681133414951338044607692800 1775350986697299441989085747478528 -182510118769290833044265904633806848 4329559279420849931246093337624576 5347167722693707499094247533969408 -362296409239246392959049695028576256 5697063270614666801548870429966336 5992281424127432755932200379088896 -781636531078460593952032036994678784 7234501283329113778155304859467776 1379508498601585657197859000287232 -774143340568843700486964865625227264 687018057168244574409164314378240 7691791156351854770248386716106752 -157551964857104955583218628933189632 6088970694786664040311140456071168 2622078891180538579491522355396608 -769221433788773984453869879309631488 4664996049158125195589887606128640 716401043358912075829786051608576 -373025113196686063774899834865057792 6393387788737760322655684048977920 6887496303508143133877484627427328 -325357022909883381733150793431777280 3383464573892965736530389652996096 7645970509006417730721132849397760 -292027320154059496953203050458120192 479323329815791430918860542312448 7940254361307348543513402139475968 -731963704987077092570379926447849472 4274953917878254160786329205473280 2373812898946813537242421741486080 -950918479282179691048320106797989888 9396383725760630359175986377916416 2369668846839218947561960469692416 -790352534247765019413448369691951104 3450360012325363188899815886946304 3261962997133879451703645428514816 -71319097605287745063862951653408768 9655371722612508257068359400554496 1530346093184804903427914063675392 -381830792369920853897555508994244608 9318827976910127834956442005143552 3215760950918676470444259333373952 -602859125089097369643887406792835072 6655172463054726531301054624038912 8326959540200347404793864326742016 -929352599653639941344633890269036544 8712365511726043575352102620233728 6893630550482804051541192574238720 -552668451338109343263071560009777152 8714817235785665895586755877273600 8609715847835413928991530130866176 -681597617022350749106168570646102016 7589202084449564252875462136561664 8498616217969444026577900965724160 -230533562017474443366992306239438848 5564794748766647670147264026771456 2043427723270790350601028903108608 -500854706728968496375216068437737472 6823123888262627090979783249494016 9097652451339492332077623103455232 -81423208503002631174104389538283520 2185325657311491328228975032926208 188794736353716778774819187458048 -30800078424907776662275485220208640 8712700289179765983188979787235328 3355660313305672651675205887852544 -286868889722586538095303897892519936 5042644089164546227812887676583936 4820613982789941239591204915511296 -558089122851423817553746503898497024 1601572896771856524403921934876672 3426037726220302082039392650657792 -965797007532817366917881322111238144 21807526142594537294965784969216 6933246944279537807902179105701888 -651313830355674077575950775716151296 5532278562299259282280181055619072 4003722471657442974090475406884864 -277183803432468897874967672379146240 9139389723052985882909326329249792 7225465811870326902986223216754688 -396717779418445657792644629697396736 6144891971327663002895757055361024 9546325372668030361676698418675712 -579630312667135104314271445196734464 9919912013031649075786335412813824 4931058973923487494920740892835840 -164665768027547319369678518889742336 4097519611491260169868482644541440 2677902463995616289810056810070016 -536008707688161277499076108015894528 8796506857739608150121335868096512 3954841643945164012332654662778880 -854519599174377659939393980938059776 7044282350094433941632716420153344 648440827872760036885732704387072 -512187534370014858280521096352497664 3797524459141560396020880135684096 7825581967199805154269447017463808 -438939760018621545658360834190999552 7459369196152768526614999204888576 319889583745921643314653532520448 -982919832086947030436244355190620160 6798322703717242399632219135016960 8085857078238287771816753098653696 -57720797019324784301090343074398208 5267205481949444603847539836321792 327327706189492881219308656525312 -580768168902525385152460903017349120 18068938149896524877943904665600 7908872244648096136838280845983744 -641008612958786837932604530305794048 8567292308926760844543031873896448 7892462162425365787688567522197504 -477319998267077207442547282286739456 3631259823451380135845397203517440 2961769451624206323512720144465920 -418275904449461067627624154705952768 795004597564688440622339160276992 2631873347287838739125600635584512 -986468169296200422848332095505301504 4695800003978121205844999592214528 5624481753241543192377241211240448 -402032753993982106982621141331345408 3338585428764415070755091172556800 9984405302244281940834259075858432 -366561050512512369917799210430758912 617968110640088683532935011237888 6983751505687017917155332977590272 -511039329572879161821279921241063424 3118395085612543842005935015854080 8125922324656713038736669687152640 -215244146514172868188295104143818752 9533329141849913837637471423168512 2670627847316529668918654579769344 -624829086314587670921436080768024576 1397582895450035408493936753246208 7270921861621646610076120939233280 -248058376588041956324189239072784384 2460747225950086743443356212264960 5754030597995790706881639095468032 -546222139095360537163881300124237824 3813219352085082196938880771424256 5836809077510682493277290161504256 -693126972198645421702214761536552960 1734148038408002977721011237027840 9746872179824825456069239824711680 -523888876629657026244288042602856448 6299014521065267724021383731085312 4476572110546442915791908965974016 -133671655451093413394653898017341440 8938322825507473375201924827054080 5858616804755225637143219598786560 -43227106573124839754919050324475904 5463352717990860362221049343901696 9431600860055748866969091992190976 -115852394160152013553489788140519424 981562409796531908062570577133568 6965001822006947134713579614240768 -342609841621341266560613072754442240 670544888442874733016077672906752 5313728847762784765291777014890496 -871247008555466456149648693138554880 6567714257147006164511875236102144 9439205602953213624680160455294976 -266744684444214702195242366125735936 3805012179552067864124430955315200 2574477040204326838159494103433216 -384873488970282467367174193769611264 6435728303655835945427186468519936 5250952935679133482646564543397888 -792460933674706181019571119187820544 2207082392838293873162642524209152 8980111024526062773570413761921024 -725430527236119152934605905800986624 176934179510716002278103511465984 6796066792367770167587010231926784 -932573879811193632539717990111772672 6244168639573020002026904606474240 920263457849985644336821456338944 -984067711621636893976013817595822080 8028312961401822813946466388672512 1821094567654574690482006110765056 -228997638219467569252585814051782656 7928874629446852335501827328966656 4473246815401841942364867377758208 -866886883185018978573649738280730624 3759756154755403603894865330438144 6119456045544448472267455700402176 -70019903720286031925627051181080576 4146510306783615939296376051990528 1924499871325442444072806489522176 -137131323108773401894072055626727424 6603954083147754024837115700838400 4140286152687906706951665788911616 -234064253986109489962446998250455040 9863851466238142600539327407587328 9000512519736229151668282406731776 -504610949642700943140849206345859072 4718748510842017041283086232322048 392370726351167866025805285949440 -883789589624201191424862059797413888 9237980669104210366657308475260928 8683340037291870883560963876847616 -899929521475159032451749297333993472 9334689901670681363156585343352832 3831595017480506974756687944089600 -637498198995356852795521567561875456 1590087193305413157474984465006592 6527882799344140869547562855563264 -904064864656113545932934335453724672 2865718098252446967688819313213440 4300391782413301231303131043725312 -974208307590902803520412289217855488 3725328514493564847865824853098496 451602843823675853176791231365120 -680711733202599113820295778671788032 605144731102900180394855572176896 9373864992249478939870303812059136 -777481825874280729791626318469660672 5045292132546204720927178091397120 1552802556814764927466241953628160 -917699137843615276849037852293464064 1479321805205365060132794026426368 5890922613788556126053289800237056 -232815121991743608099894529756233728 8745700320070321226127796292550656 5734135722953115363529940931706880 -552455341145142293888462565364727808 2268932457275033520251558550306816 1076862647246320441050461106077696 -507881931623414189438242934923198464 7223403799054466547344988065234944 6219950651837667716114173235560448 -915056675532042382461741073740857344 7614978502744412895389544978841600 7784741944872589471404006848856064 -892076091573164328681302639507406848 6517249981922551651410646281486336 1492784902643340672303388776464384 -748592104390193099572199783560904704 4031613432636027132263669461680128 8569797080227584638158596990828544 -308491685037348476239666426423541760 895077583217764212629801531342848 4146559304494117976912931432955904 -233823772755335156763487596313575424 529556894173168763325177252544512 5489539523256367328878469631180800 -429150924225390357759010825469689856 719486406444656157000422492471296 2854520454126721937203893305868288 -668130423787142640732566004055408640 95493373014156904471732772929536 4721901647002473389652280615108608 -353906982513057159567941437279436800 1061527195653885962645481109585920 9765955927138956234310764772458496 -213718833509796140401103519917015040 4351506594636488957975739123105792 8609037363431273809990380345622528 -231702138820331771327348499139264512 587485658050714662952724485636096 8395360601443132142063153508777984 -604317539128062210896265797649301504 9974622084307090145287263863439360 6806833551771806567699893318582272 -240894744008637361090544177894129664 7750428759013524160363012215013376 2609397217946349221665584120332288 -966004575249880550363532102469681152 3740235044691432375743521562296320 6302881457254753918238287189770240 -926223121740882997894027968207912960 9167061991171103977889134756757504 7623836689656140287665133932511232 -745433574232184488237910223872851968 7822236622608240067119342784872448 7706115708567034584870967014588416 -281331577705527333695153513265364992 2198165537272005158344274873417728 8182515162478036529227410717016064 -760777570014555621517900701528752128 4509774843538435968090665874620416 2105698725208128947769357973323776 -200727286596436012610335894793093120 6018713788969985358444085039333376 6490195207066746633851215198289920 -678160288734981590547295078921011200 7000192938491250817614887985872896 3183299144083059585288808305786880 -896884216500666313088354744203739136 5578630502866792730580275941081088 697004763148207268318616626397184 -524702579089841715717145472406650880 5304855288662941348162375765721088 8297126956888211549264457307783168 -221859394743111213879776050491162624 2597191050737828031119558734512128 8811113302881117704410174255529984 -423046035285751552690575394167848960 7683297074236208689924881864720384 3927346054012844042610063131541504 -490267067935950569806885525703884800 186824906638131594912444973056 4275980918525348544795833987497984 -502440957874698859323888068152262656 8615146693202625617711343811428352 7313054739216881958036685597966336 -813864363840211125010476977971265536 5042637384009943157512351971803136 676464719214218400516071290306560 -102355343273857624218250702015692800 8589289774663404962654918723764224 7774114820986029194127299391258624 -8984622828567253164335125604859904 426049746653547597778609426661376 9094855347093214827400154889322496 -882803706239101397283221313463255040 4678397119259414243778014149083136 1475502207303994935610705130291200 -324430710520848441460177885298950144 853865637966715840494144503939072 9451068569823203188752106026696704 -753055374744182634333032256251101184 9000331970151591958766495415140352 3894553899937222052622360027070464 -231079473249763210333370723623501824 3347055737330014059090257857478656 2620061272386215653961338628079616 -77067608886203434175924212905017344 5373398129934596397607473574313984 4353878693381006101907114142203904 -868004933133893552302487083333713920 9013855369487024510971153842438144 9630600272271993858040864339656704 -920711733720799344456453200162062336 8385781979865242020706474579197952 2944754849061727012215932107882496 -886759950128729784828612180044677120 1671207776310716258603300340891648 2695897651548709253593731688300544 -31911921877884810611306804048560128 4195105437635784715896188739518464 3766203310653043354449578848944128 -784450194547858950691168236416794624 5151391190748778296659357793779712 9114692536024985577270393790529536 -255534855008937701011826774074458112 4057840016024459508947793901256704 9381854445152458676006000856662016 -55153446173756602040684518773358592 6261731774175872024606366492524544 2483654593068582630105842735644672 -48324128379882171460934704023207936 3127415691495101353472149470314496 6858094365425606965805211013087232 -363302900641880461802467192920342528 1496794235984397035622962739281920 5208561344556005577175913608511488 -250197721859168620683053047144775680 2784898206664761180173004489883648 4712936736275995204648410445512704 -803723492265299945174101884326117376 8721736956494809332825339149156352 7510767533096968661931626999054336 -860156860916389558831432582773604352 6718853780289668335235201815805952 4613985099366220671815239788920832 -4741857647205107320934026469965824 2465397112283842305286420861812736 2914423589482726266600967492337664 -928322476110933857877720552622260224 1716257810841285349257381643550720 3410333516992238792578287867527168 -957568459173167370490881751117725696 9888251205519213989492802057142272 1285149666671720942851680152584192 -300668114166443910617375564342755328 6922335242610840799926363059388416 981425575750502848858721544568832 -459136999447718936087184898864971776 9078252233713103359743339112955904 9513642386166676290291396977360896 -92576041121187498924146397234069504 9203709054272359864665747258081280 6066782087493890757825124123017216 -43410257749274429032707081143058432 258295412895162632897411996975104 1692994029521389523576070590169088 -99199922958880548664189335967367168 5681050332423812810613632654114816 7671752533296574947717965078855680 -723242958312879469931950728735096832 3835460351107213280031748747427840 7350904847162066562190893247365120 -708906330039689123099986002463162368 9804203834627859716532003579887616 8549585866906344753835742544789504 -557919519635620799510442204144336896 4556671136186153419795809727152128 3842564617124496814258278941851648 -731084528057055709342420890042761216 1093813167104641872913497038258176 6838581076541797238734453919973376 -233721445292725536052284762357760000 803112012452524307154450895601664 6553851473616476761432757918236672 -633607232203858155843868872916598784 2367732675496195971467088580575232 6932106296693877040069367753080832 -207476866575057830933617374734057472 2861129433395368948603542617194496 9097628092951062610416438224093184 -7327601323743684878620184463540224 196924742749194335839228662906880 6433757917295431551508193415790592 -888607474544050490074741101136183296 4927313625520781111351917605289984 2685237437827565583932352647659520 -440005430449497506198881766133989376 6425530729047982704277467170865152 2128493277427558398724426321362944 -905996408043563600885337827741532160 6520989322124051712371517883940864 2292998513605062492415154074943488 -601725889987875999526964102734807040 3520889674363905167905591893426176 7653251546854046921636275147505664 -593426181291185605305187357941563392 2663566513948934906029701463015424 4071353610933929921585992869871616 -493715043972115817727169465791021056 8273524064597838567851887702310912 19993946496895891774070589489152 -592149351311626909693710010746404864 3946354925548375663537328106766336 516429588860900172482210365964288 -711435415046811021777625386353426432 9771284615595439420665175694376960 4554242703639982399737065589702656 -165499559866448459631528380439986176 7697170009143191959268454857441280 4557928450151042173491376958734336 -376905563660266968770527527522271232 183354659033287491692475841511424 4034450189076362982439422242324480 -231370254067925844140986565977440256 9230157991659906597622818447294464 6172677815710889897362172369960960 -333327564569116828355503660074008576 8636421266699739816663099476279296 7932393945845528675991364271341568 -498895672388058874824379043504193536 9596571584364369539854760759263232 7223084240232288359737643656806400 -841442456977313449041300186592182272 496683998756882805966174750244864 6873360849691275642400808946892800 -687591826747498601512490924609896448 5919841198641759960834529082474496 7031918349133580652813227390926848 -638555349908179437091552298197319680 725728186146487300609921978990592 1151326033108979408304836976836608 -808621566323970732753393371037302784 5304137455969479460277088684081152 8850570621127087605527046803947520 -927366785604328814827221643696275456 442690705509576938899743212306432 8484119282696081630431305244082176 -708772056715360005536043977234448384 1763263157500044517722794953277440 9981804660115171608527112257929216 -616237775748662849451600083668697088 3015196757647850713544847433662464 4961578932747313227549237898641408 -428586378935239370348487844485398528 2845428912933660421700115817824256 794542326924767025620223954780160 -244638903637968110944758840007065600 8705583194639248526041394825920512 9532348384988254379354278554763264 -304970948122372524119174405410521088 5682683508332416170112214177415168 8317706131142311106308531048939520 -955928363993753206286274186050535424 9683342093989397788586181327323136 8474552587084455585043014033080320 -136636435289224844700005767311261696 2098484283049419830330828783616000 201348881064977832864011276779520 -539444714530626045631548921128943616 3712332735031927234168079972827136 3606412089611621866992048761995264 -343923861666281037666151006260428800 7272487533023545775052318100684800 6716619069749447439861456369090560 -345985485557008340562382612487733248 3467854082904485701638147398434816 5140616742198273472126738489147392 -435517583458572486739726044888039424 8727958276834755138974836106199040 7352539978688767549461744513449984 -151468493175910179739676818534301696 3050442468680726278577190418251776 6215642048613489104128988541878272 -472415684432158627434959053158088704 3885335674470384133704992493142016 2879771472233253657697510223773696 -451399326882644121183790334839095296 946694121828596609935056130015232 8403606623362609093447799225188352 -350571221372975553850866167908925440 8240748908244201862293782769172480 9870168642144310203279705039175680 -458601576173140613598709534928404480 6490328120563356904346095076769792 1609250971192962172054214597935104 -950784050306776371033219999322865664 703852773366954129420339315212288 7323945702194246191894610994790400 -497694697485105109703638926862843904 7712084124081544186686915706093568 3159775912444521148808619083431936 -763340790604437731658400435573620736 5590417201655589987735861733621760 990659673756528026766237669261312 -813434762634142422623115688355561472 3299803463366910145040934097649664 5505671459626942016643400518860800 -577693332919395890465980082175344640 4758718377625987408988358804766720 9084035674085872105732535543136256 -779853807148020432809133950357209088 2171145219978088119276108332924928 7264434120136873811869211692105728 -723469997698922104950193406546542592 6641248837282327674725032278360064 8492759883615664966168298599219200 -178243321200010948903706929190141952 2632174000316313678042784107331584 5922082993571390574617812401127424 -756940808559544521151498535131152384 4433542623658721809729647865233408 6230140746111025170748871203094528 -846146074686127753783805977328353280 5970867256554399544288059011891200 4796710723061348977174544977494016 -625454223783589469773150085707726848 7240696871448503299629859230187520 1127730275806808094303787277090816 -106135110976720228353249650665324544 5144378397630382378295303981760512 8440546788484387124750626488057856 -577637562311364196610903281080729600 9366025063777250302825633031389184 1786877921949490808033078763585536 -638982689617427948610243843460169728 8416680470070541246025856595263488 1339206500830558074453994483220480 -972039440971165866082007156757889024 9520821885674490937203026355552256 2118978086250385913782149186584576 -273395963539786680543279400022441984 8147302499838190705200463209299968 1588142483910155856269590248030208 -447643475631798593856953307784806400 599245663598179507832922323288064 8942999141015180528260635324055552 -910476094059231435736744200408924160 7229009938013910722556922546880512 1489807162876903936517109012496384 -936708829644321234429098979321970688 6965509148285073647120604270166016 1208944153847191134468415846088704 -82545657839466758706029258998808576 6968049576056451152766037112389632 8242914960019002560865934816313344 -578819988572013605093704088525209600 3188246194177686157613920572932096 8283084412766791192467473206083584 -158007532230394501087171739662680064 9594390366161016771722938144522240 7123509187794516753313544680767488 -157882042501202818394199747012329472 7203229003569823027061566207950848 6287136449126959853331661455360000 -384428962388679843190179139596320768 2108946531839992864547631368503296 6771833351165392594001973372518400 -182351306838260117397155670132785152 1420750963998837554771289853394944 3421298216751554958797231349563392 -542373164154813576518260237323468800 9806088027208859698283931450212352 5955615911089580502999280908238848 -784622379612785460898812718196195328 2543534897424853876097512376369152 3780487392448516957275540009517056 -713507971768411247940916212402225152 9977620570473885724876557229490176 4932245027150258669383425651113984 -233849943499217612283788651774607360 9743032596889137410371445279686656 8294255699840235452817352555495424 -416109238285859106156403886238203904 9643255023534196468857013140455424 3036989886435959329640183756750848 -475167007039752574105846364164325376 9327712809516807831880523860410368 8159666209103957712288409800671232 -430691801785226473926131897639895040 4499088013354243626738217509715968 7490748572700803309144045489487872 -779036852993767654632879321306365952 8673913247369930244159218563153920 3799657826340087591708649878192128 -111094537224627926297344774475087872 338671511407225877877863359709184 506837113326352078674417395171328 -77704078519115773675563181861240832 3821703774018108356317876846592000 5382823665692461823278895803138048 -572014840877081971420464135714897920 3142515659712861388061810750390272 3506567647343140292166674720751616 -934967909243280260102365594014187520 5704712183459632185826326706388992 3861920142929436062617538199027712 -360903955333521845623776752405839872 1122799726135506848955895411376128 2120962988184117244482806989455360 -912641044355034483650193569244774400 7267132796076131458795915307909120 6067825290764401057251637514469376 -927052292445615356561820191962431488 5802838243084383484480341535621120 7199757403089870499744658520801280 -445914004100700264805494717874700288 788110728900139602266113747976192 5393441490160743970514011462565888 -774824350316544599529149146343669760 9990581384313538056261578319200256 3289546230007803350405676263276544 -108609560649297866126359799969873920 9240796557871935389733168646979584 8211264813547317837519880009547776 -304500711475546531574554061287981056 3051150765516234964263320076419072 3083675087829959352654970774093824 -908945066512507613698986807146840064 3945291880038678730656169456566272 6846011202881749028387129361694720 -848631672646010637295790844729622528 4413591806258852415545949099655168 4658045525920920096032436166590464 -927601052364118945970199406036647936 7643867239829517065474445332709376 923968619819045307579504711958528 -708537695650117077150113895980990464 6224998821199947725816083775488000 1895686191203208787875534865432576 -948465800195763312398649314894675968 3669438686835230184562857269526528 6274189676533063007218742111240192 -135379391971192606063837542134841344 1664081509728999243304185762938880 8893537184225976871634722761998336 -966986333289437172943949507772547072 3528766056009460690540302014873600 417020315680283551895554254438400 -772387639868508634634323006727389184 5924794366000191950108481843888128 3438351105384992986954797653426176 -445673287323308814479903167686377472 4557230272407670126815687810744320 6526299643527049294092687869214720 -687069163967481513608325536233291776 4147204757371491713410198090547200 6858713541081399128776162368552960 -548193857100232125048896638075011072 4817708893011801650112939692130304 8669846215552329865823778716516352 -854400744254200599632554422832201728 5887843848399016078394992336306176 7080384335086192541623817236119552 -753594176688760189806565986616213504 5177808918745753132014203303886848 3558026906359908501128186595115008 -672141195515697001664057591101128704 7791298160886094356778035330416640 8107929846534719088245865975906304 -143372388791961144980313168651747328 8891997030127831882531808607207424 5012138750320030868614651347730432 -115878590819170255592106975272370176 3856199474393132309427734035038208 6613791871058226833176629465841664 -591020876130667135434950578081366016 9758554950165494413148320885112832 8924220004063886083018264653332480 -765513111039833030605035069272752128 5160315581904970260571833614991360 9509078435805757873072819228639232 -774196833120009655104903556209049600 4674226003988905423914285106462720 4891988611547999497993519628288000 -55530769082881560014451833575571456 5838250404148323170800829007396864 6636192289529204815601034481106944 -938259947949765438229344375380377600 8789170473134602578573111945330688 7671715219007831866554534795935744 -579552613061860418978999389126656000 7613888005679753760174460870066176 9961712517095322377423421658103808 -287487188110848144889944527236759552 3515523134326678240069620166819840 2521528336425296390376611830038528 -497086646597793892808098306070675456 4383177254121267576729695825166336 6909921659101105726121233453416448 -58066745610887521388890290655330304 3128644594488451690670849880227840 1657893586180789870984236915228672 -426305093307952778164170687317540864 5737473384503035732549730603892736 3139612682161798760669163359830016 -378772283102772290954678017974075392 8561604145386662465751071007440896 2241224231834035260390189045907456 -333716086376074443397076819984252928 4620057481717998930790377731391488 7517690893421885699511608437374976 -613059702306154978094872070373507072 5150265238316513458785878653534208 6004473880174425676481103279423488 -488003591640638709628878679548362752 9503666149281755400502161054892032 1651055524787334044764528867016704 -51690005118246962266022070095708160 8250726347090205815143479585538048 8503283619398509745061718826942464 -659764407454446175727239398963544064 9221084591842094690346054658818048 5001463987293033256938206706794496 -468439740371629313600262712200265728 3270002150805581679437903531343872 2501509088990659837089028461559808 -260779116126055190031712800781369344 1975154927341684907106000252698624 340898859832790324255221237153792 -74896592260599476428120161806974976 1492323514641712451455836682715136 7212156432637139720837319616364544 -431359314022848738944874318938505216 9428799479152322981607516707749888 339227379538750860016915174129664 -848144157421125707627274901051670528 6016786933911501853279684235624448 7592015480307192717243178953998336 -299101255259345536852874686755766272 7972677796136484385370674189828096 5660016899051463714420045446643712 -258804475829572825688609436377022464 7766814235646709487021132039061504 5106574290926127580352145625448448 -411515915493863517516632512595492864 1057114040754054334446003541770240 2470921274209011652199659784372224 -227978332341865322135141143361355776 8730021744917639294178619339833344 5491627266844570444220371711295488 -949028845395066896766668363479908352 8134450684754174357378881646755840 2280911952385733999005611734335488 -196898152763018181617955547572600832 2878225521798290007570207769362432 890267391744457424731866281279488 -379343292370821951777994040181522432 3611324131038508006920588292521984 3737033122684860498419830577168384 -195663740957652117847421401086033920 4262376520042684829734891918721024 8285135135209549880430258492014592 -952195131065408049954945789415391232 4323866724056174030071439596453888 9294587601822495018064289099415552 -711125167919424660441304574657036288 1900733850901190571512165621039104 8853922795197919022958524273524736 -561434857610669172523735922600050688 3493373321164961554726593652326400 8737106761243145182538850092711936 -767903730206510279979291989294186496 2900988230638182904342795452940288 3396065125103470161268216248139776 -180168127642583596634507516407971840 6984966325993057388320398625472512 2202584566891139966281091832086528 -417488924187131619358300170646192128 1040806910696609542174203568979968 1206599290136635179438119231422464 -571148134449402014525507259347238912 1296242444455618601793520310157312 8312200546530815544520156670590976 -856039864721344507683431547699986432 376091357858246351625034116628480 1170717619038585082945322673504256 -198849993170790075315611625383264256 7785841488049577929708063319654400 2521933643931212336290010448789504 -414711297264641438428176981650571264 8871502107848896091616478708629504 6796109763406602754771785648963584 -763452155918982638921318013318725632 478342531512576952162104847106048 6473977818364131227287670841409536 -548111365064477053944989449403236352 1488750375821943938983535317090304 3563908999113735061334315841355776 -260402149769850674733443249854218240 8662715595535177702837288844656640 4861870381974548720957412331225088 -687234536636935150190522505482993664 9145652781790562602329933967523840 6799189529654276126736814402699264 -568280709296934258378739082609033216 7788351249827209057280327268958208 7792555226201653131747413677047808 -700078030859013822254861170182717440 6629279025325334469936798029053952 3594673436825775061823319181361152 -389872649407396741513330750251859968 3316386025344787936667915763318784 8740924362084861433836007774486528 -472288536345714368734234231609229312 2172027012844925964121593555714048 1166195663433654924445860126261248 -89036485966808293088968489612345344 4325255295147698939484856716886016 7086563235493159367415351576887296 -428846510031323270463961923938418688 5056813038074311036399790342537216 2707741109316150964400345938132992 -375033624549232126404061013458550784 1949897636966564745907996859564032 696373015327536654377170038161408 -187935663988632077583943775440338944 8430378705536898479944961320026112 2937811224373047787336494569488384 -681855563917408957529228974453948416 2786055007723255548285040027762688 2201619869857765423924223334678528 -128821624698069900207729034406133760 9322005060095875697511091903922176 29058975632895910223065397592064 -204715474662844015535922456849022976 6064508713252105419725418778329088 8996678527533786091274040829280256 -655818643852377765301982873857818624 6376564706810230003033235087425536 3069289572100657813008230289244160 -692535805611174956829777635840098304 1360825614765799422434920695332864 5148900855190584260829359133163520 -160899169347114275891581579012603904 4574876437105922740900814888370176 1277316707421475188360970653138944 -482445924177903126948176463937929216 9669229796599875802788725025406976 3474730955295262924654238372986880 -257259410053891882194729645941719040 324768216015433441088713128935424 3612467788907591070363826494898176 -791604302071661337130058217450110976 7499587351863558466883454343577600 3644814581077339291432387205922816 -645601691924142719728950309713608704 6580045535142442711060535924752384 545338174290019366054790101467136 -770889423699632882366498585165430784 189187328899622805852677088477184 8492104712247852569463477799747584 -206037120484177691201677421512228864 5656061664408533377214156288032768 6915694957254659912274996667351040 -528100655786464362491083411886702592 9569740759965637367063706637172736 2977132296463783112067075627024384 -654103427081736676185469088601997312 3689850482321805134705287485194240 3679657225812656231461960577712128 -123664366495250261994340767621971968 8637587024882630192973124292575232 4892743072338246218640239057960960 -807213289931173139679590944367181824 781992775141030422421286865076224 4309881060185646363227472986636288 -600025525902180969488813584742875136 8219173804595064188813662417321984 6077739718281849345004775638302720 -952526924882240979736930542680014848 7867129635507301795969625661374464 2563011812966035625956585332801536 -67030622535555108207907285424406528 2664089609964462127796833195393024 5730286355510145866289056988528640 -497630613315685601428020803567353856 3885893858984349831555923711098880 5911040805299336487058972270919680 -384130195566387305500038212395991040 5133753743682831594935805871652864 6751069508726703204963390834343936 -53612008574989150751117648733405184 7451783044382826177081835289313280 1113336800758828558856564154302464 -91443993428661103740194921484648448 4229157559851986722062867250544640 4730942099780830598192047845277696 -709283732379161109963688360416378880 5625718064447717630319235306618880 1580350461698159966017683028180992 -110174406796358637977555202954231808 7865738930665821772967913931669504 2327966487096505291629219337469952 -287610619844813563791413542932971520 6674937043439754074472931242541056 2676064782319844916795210320576512 -594774851722628288787950047684722688 6502385474108376690002360497340416 5611508333504482522484562521489408 -362012402321127256981184887822221312 4346670426793923734753856177831936 1071875573431853071305740071731200 -9564213570163995349283555919265792 251548505077805238181425909334016 7780500158358957036216892652519424 -884721444954335745061751652249239552 4495036855680031141406370638594048 5041460654776736947204508948103168 -337707860898763276167351502838431744 7544696127170359124700161229455360 6535846826983713038997551564455936 -984609547348778433360394547548389376 1784954720320632985027629950173184 59670307606234310027128967528448 -503080551455616675895557595762524160 1141304034475217078758708973928448 1284859685445435154402937466257408 -48239755470163423380229478043090944 1725682551500580829455462007046144 8527323487494891899741862891618304 -516565972370953901719845036961562624 7771163002333446169274453923463168 3356264506769595090113437806624768 -183446203570707045922232213222457344 9002313447386350933236286176100352 2175282815580409617382222784888832 -576219921889377171400168780930744320 6287127163522534093337999632760832 974632175498380009258279373897728 -662869066123372024780193356580913152 725657964655644123342395693596672 5252874044999591284594875612266496 -365076150127245742469192994730803200 6258839179784327001399089795432448 6051266875310564172780772735844352 -758664868730680870011734589641326592 2453782862570074744446028024381440 5009851740090801087664638142709760 -829735477920731620168892121157206016 876782516367875068823588921409536 172386856950199718515754416472064 -84267881761956283703289297602871296 3191791803215997363921523329466368 4101918937009723974379421852237824 -330732863241121719893081811394232320 3303786665333927499239211673845760 1330157760253495135930705132912640 -479537059093651983146126778575093760 984282777738873539943991865245696 2831066906687022703023774102454272 -997123560615920487260997175998414848 7099522417538129029822611040763904 2257790549746942620529757540843520 -852916613089733823652877879551721472 5848352921496921217173879837949952 7634580400091229354195865913262080 -940815181460449737799847673115705344 6146966528680701392867269764186112 915526223322124576620946921619456 -882300292001480417719741401006080000 611738557756846267303665646698496 1553884681593408378313174283190272 -327187889521825850837359273852272640 5588392116340623645738586651754496 4196071146288730505389622308110336 -210067336586571693980228834742501376 4831932411894849777335370124361728 1470365833132819179042332552986624 -592320360312824607323542218824744960 6063214375089360673736400075489280 506889422172600991255647991365632 -641114316796583650903809353461006336 3991022733826292216192672454410240 1068223900747246367510943074615296 -259692057721750657495981002655268864 7195516692608456368932594846269440 9547642042927648464296427967741952 -284136946468395096172391659682660352 6927429520672452823161657289080832 8599177243423925339177146520698880 -199919147167535509795282914769895424 6301579181296209039721086473732096 8052415767100886872786116357914624 -903608711168497349330097818688290816 1984167824159095035511365338923008 807299250515750566402397571121152 -697861499711287451255059097755582464 7491663025568625805148030018519040 7750378590022055941156942871789568 -205143707343620393038601146029047808 9280993343954845517055712013844480 5267091922550602045166206815567872 -221472629899129934756006790701252608 4795813002399916698990200475353088 2441299105115876589230643338018816 -317719919464438123563844402996576256 2849959530915489174097254756122624 8496636099304748025942671492120576 -679507596321406123362950616914591744 6781819301884141962683617437024256 6274588510667440773674024650670080 -215316049691681952433608822850846720 915572623716540998388428063113216 5247035328542908353995315668320256 -52037252609457983196645224521662464 8647210418112667505531302401015808 5345532798374779380405795226124288 -839015511576444405913443323594407936 8843384000444921499524006357762048 6857859089258707696415300468604928 -416503712941788499374260966182092800 8517639916692064654125348610375680 6079669077011870214010915094790144 -610017770016450389322476603630944256 9199224104394822138290343675691008 9590949402442906689521775772958720 -48594976545470408277955327211601920 7699054364438000746230675509608448 8002184351911516937453528237998080 -656310286107745342175896032755318784 4805933641205085394949151855214592 1575023865550076512490033699094528 -927330804112895341821444592295215104 9909695616961416295983044565663744 6366580452298812089950095009644544 -872423322930607123323189920721272832 270707019263924305328198335332352 3067581307100852956716045143375872 -318405565991545095243041291812995072 2524867083320658596935881692545024 7753039985405100682687754723655680 -996409114270743590556204190664753152 2379975430964146095104953075892224 2704712853607755723861881373327360 -772552748926073886238022319900459008 5103983615936785310517989530927104 2832579085752056623061809949048832 -316051350034335614837975568061825024 8364927987760997468089370193952768 5940288669069355786055921426235392 -24172570560436669934608817972051968 8864773249366435535015641406767104 9972906434065551711807232859439104 -818965619723457333494993241071681536 3960799267989431673244847188213760 9851464586731177717724231462027264 -97613066683706572862312336865624064 2582403784235274249068880219602944 2418133917869219838503219735035904 -124766291079602515743888837483429888 8948182170334930282722177633484800 6508658670408554905639493834899456 -876411704983259147367393455346024448 144456381916073313247404549472256 2731616065531605864720968844312576 -820478866003477691378305831146618880 9555755363214903383230509494566912 4655335444441135098493210701332480 -907988183992000811676577908821852160 2673592546695342226126930825969664 1303417085520313226801778278793216 -626373333494268418828166425540034560 3774557592933204737404299359813632 6522706510515723554015658396090368 -499170220955952783685628872332673024 7999257038943116264876648402255872 3985168729668803215123929874038784 -954956755154359182640697716535984128 7494050276927843225051897933070336 8059695464848919676455039468044288 -323007469647215686696437514611195904 3256031065472812464027178402578432 6335941877582488485201260163629056 -946087419049753944869128515283320832 9574692863501504229148975226159104 9477408086330541266604688364535808 -888563516098641345497006584524439552 8294407738703958956276189736468480 1243076374101868990319303139000320 -891241669909428052212725188631986176 3211326007318799310986136919212032 4076473992741879096150485052162048 -656167925108619061967988037672501248 7605146397607530528619654245515264 2095306452311482262275296300367872 -162059973307462092396636250369425408 948546509419203132775761295966208 1778706491822554819528906596417536 -996453445058986650085644931482779648 1315186459555312143240506682376192 3347929306810794095881834865885184 -488498223053253970702139027917635584 9235923282948403412694768197566464 8427765902606047615912672480985088 -99444389369101234399793979450195968 3857655129315000537414504940568576 3739527409472590492660121475219456 -622228906760994227928854744956665856 6175016559105226852916660751302656 29150365648672863641667549265920 -764784942677990133437677863388053504 739400009305159904694595101917184 1926587275672180478862587609481216 -55352967616136041818310438788530176 9204322054356523259738794326228992 3726471632018233380233588642938880 -205264775910098140949030647850074112 320769574395244538360346760445952 5994926655276207127275458871164928 -6806954978579848921212433658281984 587404308900577110007566320009216 8743771989826136115681238863314944 -986130641616967431222179793976950784 7804770568503784580668174901444608 9140796658145583102659392798982144 -156087550118648629975291706600325120 5710228482763086092049326696038400 2861688070714025352387974697844736 -104489387135712544245751853579501568 8867103959716222751445227424186368 8963986969247669824853687754817536 -7857468627316272929735005016424448 1911433035281049131270995720536064 3166392385861515163849715093602304 -781126484791832595694993800159035392 9825387153195297667494267905376256 1708582653059053601094992167698432 -76482159296151615290486676258816000 9678860622618026356046455969415168 3270619446017360041783399769178112 -294666570951933633692318897782390784 2974773236502690089161012044365824 841327034262202241894568580612096 -378174548716600523254922032149692416 7683351668784781724977421084524544 5417627959944174142130710063874048 -704199591752749205687629050072268800 775191931339354401678825015476224 4375386562851631073137994548379648 -841613456318484902682004483280470016 4990607939338859618202449625481216 547292976753909848706555603582976 -19725958619697223891089441962328064 7577988778044838990970506539171840 7260391399161320609379488230277120 -824911778167871881033757883115765760 2963931662680286565293505938194432 4903999024354188186691641418973184 -554352700489440474860413025429487616 8011342436590506087533680491757568 9193028074232179833712122223656960 -357288455851904335111610898197774336 6859068607474175746172516302848000 3040875148237377477111052045910016 -554775722246905447971598722498822144 5049421385094414179392188189769728 2889162083810688028896237071630336 -922177773391481641558006063358279680 2064086148261799770076029321740288 8767752432558530529962084553195520 -158365175363739158021661675701141504 3425012906869543051590641758765056 3924237984252031579166740435697664 -199248856479214760979492524624183296 5935159807516991025643952281747456 4618058489387931817292466820743168 -210864915527433372947369556246003712 2840402761002078116263430465781760 7155196016170180535256219169849344 -555235366200410127745020872122957824 5211216040889273836999372930285568 8901652834709523002831168681803776 -50448825077529093655415815030177792 3517458274131451875077942289629184 1476959130203789594454224489414656 -814791787272537519401248521902358528 8694617174699012048913583789047808 1436516988699198881940171003002880 -514989703269086068197506159445278720 1357719951979562920644597554085888 2286170350282115760732548389404672 -875799056421843355989561437849649152 6935947327187563103874963579338752 8089223815428825501311226144096256 -141539979293471008157781820979544064 4894014659331955924911079964016640 9623663529265575419955671442915328 -129245371965826719295346137054052352 8349579042976248393403261968711680 8667250996786043802912489174204416 -346359132743635995311388099071705088 1559109397107796318915212779454464 5932732483287350925528255403393024 -548658982344278675097356236035719168 4077080458094272854666531391406080 7427381504488440184111636877934592 -977768208065736211744614909304897536 7970804570105171112502688068141056 4653519738754506625442808686706688 -693849753270462981743789660186869760 4079196635625105486521500423946240 5644086599511550489695104345833472 -695902439599918418109972205130481664 9234705123878913623505860066017280 8204739142255305329309508352081920 -142190689886802818160540038838878208 1005404570924897947995073270513664 7217494227117975927012834926395392 -829828770756609084094983907007528960 3334014228247864835620091182710784 79452737671424071808968514600960 -254120026462676077706916383869108224 2438235371068783969556831307563008 3970083472022491826324599014948864 -686712895184380357889458419420626944 5942843963865174450996240204169216 8582881762899725677316278220488704 -312458019701785218332504162685681664 9749514380771498573160958316773376 1167070261400269855105890706784256 -384571916402151820621893963549245440 6416532599505640191603161941671936 4040732789200805358840128670269440 -121411743135268465748151296411566080 5907040145096619090425105770086400 5343595422018263793948760828018688 -673961554849875984909784984007475200 9556017810003118801895646054842368 9352732937176189487391483023589376 -429901954126501173512789374577672192 8071007064474561883917831439908864 9457844075901196188526773469708288 -917696943517367667519514090064052224 6841855094378399073012378905870336 1364199781692038539484235747557376 -402163694348696566895357435901378560 6697005640933235989453441696006144 6270234193240800385443654853984256 -465515323617148487215408472739807232 1502478878128563385377574375915520 5118743028678481736182925654753280 -195849917476083562637769472158466048 4275060044488982325846604783812608 1151108603569828009385984968884224 -46979989527039203141348043228446720 2384539758955672832262097820712960 2427290306340880415288629519187968 -376558129997638925800447003009744896 3635718017123152638257143417405440 2591673313033615989678532225662976 -468028293384970149571565331408748544 4148991103431442902169873398366208 5544698947660558252113833161129984 -618481313566449136308071491868557312 5100341394622823295689601056768000 5553460615941185826064545425129472 -70461808272396164924458982082347008 5003552332585884089836724759298048 882184252361939941877121089011712 -693320779098677776452646909371219968 6574842812483461028924454252576768 407483733352351012834461471473664 -985879315121013593682892097614512128 1750548294681895341644597539373056 5938067027992673010874672830480384 -265971941307229333952828648451997696 1190875703839715672220652825214976 1022078156049382773313484374409216 -215205127565359458019863178585833472 9582768299923700485190489997312000 699474415270475560264247250255872 -984797116927634261494430590482513920 39015255111204028760021713027072 4910593570932620463984572771598336 -161105472664623788153099797426864128 4411600108578382336258071213375488 9122866864320331472747512410931200 -845158071655243878974806723219423232 8549655911869529205803243362320384 1488862460035085180613087864029184 -471480554557763955682162975508004864 9683372090657453888444883061964800 2138864767138904499733601196179456 -760162136872554274853264792775294976 7449267536867168193371976998322176 2666409539605446479074001434968064 -830788729839797210754304448625901568 4515021350805282734247940804575232 741772267711070109581474025963520 -672240681657306556599653373814243328 3189643255775065728626153043787776 2693560013418493958910965102673920 -535608698676091124727792967547355136 2186844444834166339918055182696448 9892468845508804941063047063011328 -980926757543797753779018060802293760 9426052398049971131731098921336832 8150256518257576246663156970029056 -917099400822628138467735731513065472 7899289768537631459260048777150464 4179147035685683291368187907538944 -983620782462309021027001597438197760 9774773593032185033442188326862848 4062661138710724934137261437485056 -693614824335878684526035445177384960 3779916950435847596128470761996288 2026358667350668081498565348687872 -898053351512838618317454569793126400 7739401256737628425716738748841984 6264019407632627674615672446386176 -160697754610737163881503010456600576 8044308737552685828223258798850048 2974130383993815118694223137734656 -161780809430350578272269002535337984 2681899371019335325412273697062912 2337033874056500118522133137588224 -589145673515402220787992545292451840 4149259681297316107831780428480512 1279388400338632694205570820866048 -723385121330427178021792766427660288 2000647982025125853408397956743168 7567561590125002575045405005840384 -417580625371133488954779229365469184 3590306244777734035673710994653184 692652069807225641108706640789504 -681683226876223976761305400482988032 6580721954865883225644765640916992 2336394939044631507158850252832768 -289534460625270482826956488939929600 303247511916746697335699117441024 7379827630445922232673585690836992 -695611420780067253789870987331764224 9878127574901084972825747499515904 6363447147616105028666464407650304 -777934437675609250800686704980131840 1955031065266962958261418824040448 8011351760584071628149274529759232 -258696715071617508039420398054408192 5742092116701625706448151807787008 421978895640102536253876851441664 -391859434638838582750219973852921856 8095077259323222742045638071943168 3765190183881284892725984727400448 -502779202784200719828052781375160320 3818869300227683478432029178068992 6181774095679017203182125128351744 -695239820853571712155769214848729088 764928436473097665629766790676480 763637357243104905746987670831104 -304532689382288960222341601479884800 3442098262110041485377348413947904 3770860586729159024520980449984512 -382899018124912176364146872765382656 2340314329927909322477191299072000 4089609883652763188825156040523776 -50263163362840285215827892056883200 9628089492769966624121109054750720 5867946050612639958731831658938368 -109438373886301663143721416815280128 5666359870142619404717318547177472 5354172352338063829759378275172352 -843486696784239488394007615656427520 2335999330110476992194149535973376 2329560045991792276989073560698880 -491575864012089784276032388451008512 6223898872764645919247224205737984 3855557456976170293143048959295488 -284168859964572362506166590821629952 5796229378983162732475516511584256 6349180685321927324972861599252480 -456721753338515137789719112780349440 7863292356744402874064413004922880 5419818055441231215841570545729536 -425460315572579991377569657143689216 9489152980704860783928362095607808 1030932970465132409986265766690816 -816411474405872089694897818992377856 3271867879636135230828603670265856 4434239258595347384622319988113408 -939256672925228857246481836408832000 8230280781681912354043049206087680 3292797805236718055816221329195008 -999044962778294416475608590346878976 5516978427935915452965580886245376 4521637970069819313694055730249728 -170482504773598948307328213228453888 3135636784001619476492198176882688 1784913993542570148358946671296512 -576895458931494906403853647430549504 1485293321595432924076230098026496 970867776902642778720432650452992 -777894566545509059127627163344306176 2232191440574444330247683447980032 3569781488544549220727715233005568 -485568621900469648803132662028959744 7581911449383748673280020855128064 4487796974444064104846836199587840 -733683696248148995879844538549796864 6684865275763282198879853183238144 3026484548386717613311703700733952 -698741073824210887519986170508345344 4005514515909038473172276561838080 157737033907347738075550309154816 -913494720386117823429467830315122688 5378947107709498371043177300754432 3360240632056226777974667401494528 -959218096273165260804504760946262016 1124264244537222544902943856918528 2410806892594509176199691995447296 -755238924597753557509724612574838784 476910226411979484190228806107136 5968317658346022538043788634357760 -647184518699489717080569076258963456 5875483120184768586881553624203264 7524529585751890582171970669903872 -745518588311704710124571294026432512 1814690376690940073827756379471872 6235704492765195105698703019606016 -853101507733757902245576068923654144 679595222425478398167375295807488 102918060573232519545485657112576 -583534037803059517623196591828500480 4696042674543993935312530756861952 3912016802567326319137741965623296 -36723356010001110591309736468021248 9539356585179128224728680618786816 6754306890757493848564384367902720 -17796328616429435217613446600196096 4071943887476760711193712878682112 3547710680522827442768275008651264 -776948429769649947124166903172431872 4874175299865289473692177864327168 1621160369137484607019024014901248 -1817029909784244023886338037121024 7903826652683224946072152533106688 1064491328664781179732560059564032 -304032483898359319081909247180537856 2852065813428226005711713013334016 1535343144900478979051399982088192 -765743021192150911777501803492409344 5163010386445388839853967135473664 3950574459795829903477196688719872 -440475516050456154118258483938721792 243874116370640302187482244448256 2163094246350307615617759733350400 -572665657281092371936548108992774144 9160062542345068526486855580909568 6822699129961983760446355585105920 -559323096073774473874975762509987840 8500701830860105322628100023910400 6373924628852075229621482030104576 -695170747652096457543926697938649088 826337699647173145336383509889024 7874754785563659740470834462982144 -806126226311789442491479219205308416 1533197842578448112735843910680576 3065109730040603774353903632515072 -401123381425458516544898747028471808 8979160950524413628322654439079936 4648541967410728230078073748324352 -8220244938564792539171810271297536 936977177205124751081134249476096 2009178936386259637718280644329472 -37899807791230799406042179419766784 1278824373389680899756127300878336 3400571765379891094469705042231296 -661824216871651026516577918851743744 5442713553453067087902934451617792 6070316647099403340804214491185152 -617085985059374127586434210561261568 2806148484737878036806280461418496 1690490630604481938534125191299072 -252602812173126742866546473064988672 7985328554727596809936502343598080 896460856875330043678335975817216 -372940486030169270322637123723722752 5479953501174678311772491513593856 9740503803388940004805866931879936 -707715848004588887483272425589702656 6267832065543915679007085969801216 3023532870925062359862712721211392 -104641035798624772668906877050945536 7587293987889027330561175392878592 7942542901977687104094282658611200 -293763184352472401658983091961593856 6213304901677105448923159641194496 9190940933952823628788399742124032 -804816830931157902180532018118393856 1102774513389431005298724045848576 6071834017744197215856440291360768 -599982920641762846145342770432180224 8020525000930175501420015873163264 6767916304292258072763550543118336 -357083919157397679458185596937175040 2827538616297684113530974015324160 4727335447397701352555315063685120 -798446259209117098907001317352275968 9450941928595180206040108016599040 4511218411384431660681824512770048 -451594361066804554722201548609290240 5754240112710233217403697296834560 8254698323096763370755022015954944 -427280859393236235094047403450302464 2143513672533205695911047706181632 8530258481900735791744484447879168 -811070988196303741527542448523313152 755156710011955547132694137667584 263812505848973427993839440756736 -431269480522644696338207664982982656 8121494093920465883955334385500160 5655971327453880844929834812440576 -858621039254245506445984708530536448 7150689693612346819334550711173120 1487593103488292566580032968851456 -322883777976177762281302422569615360 6115759320274048235982083929931776 6913669300915162157731300241309696 -669352468606033975532319958370353152 9390364518027128974937684808040448 5189462059287539556877453513195520 -750116581163456471864207383856152576 4164005163304070244000531577044992 6102015579417203593104765900292096 -13690231362034932329156181143584768 5717565532037170031114614866968576 7243851548811507503381259315314688 -965838269733466017729317046514089984 1409134750957946872934256624009216 427260400813250803171574205644800 -892980850212474134148938743597236224 4958846422473693471190562488975360 7908564069843571183566047634522112 -470360117676401479564495655901593600 3909985368205487363506197550333952 702950231047344434705625054707712 -210624614948061048093532078013939712 3872726184605949134436014112112640 3206734883284152603117246174199808 -435983471633272407213074395474952192 5207055388608980088547489026670592 7972238813957598958635243454595072 -367808469864282541776160769815085056 8514759828448553272940398827798528 2752270881586958565325518028144640 -255678602168469724266868939794939904 9769336048615196863015022116208640 2049001859189304478329414587777024 -100560932471786102820151707440250880 8602796391193652033388629345697792 1572898631145472887721368550899712 -265325024667107348380208367478505472 1986108866310875725661758348591104 6346505816665244639959025455202304 -126174069998834414398128660785659904 6015993720431755069173012610678784 3492936644607079353218772766818304 -917709923303436513594756141013794816 8515502802419364533077607821869056 3924009063236829206161273185632256 -800981403646021082655000845185187840 3530306240787721408192658494455808 4282059600773419408110466052915200 -221373150352603420106054284945129472 7812758251473562559032828991897600 2066687407513608806388533410398208 -989846789808821481091604036741758976 4596172473875467166533639049576448 4473311433949788830639919332327424 -86016809172120066318925223912538112 6052061852618687278986808747098112 8896150935811970062225385306718208 -995904357583225223926225774892285952 2132751054700215917210848072826880 6140288024874607231316737807876096 -859014397041932121641150344209629184 7802781270088866410960806679150592 2340604810057054837700627684917248 -736449174095668441951273292776079360 6445418607240969848518591798837248 6368520954106176231412380544794624 -168665017585698939275135636975124480 2513957099382166872605604133732352 7599255860446017751195150182252544 -144528265980683338851464448321781760 5413902740819127610129166955970560 4464557841603480478010670409842688 -851880680538968549818625858830598144 3728639785258674847443781651791872 2509310088245729541258533503238144 -203498869269185633631351366406373376 7483205154081804373203063404494848 8489043920863136802438479916040192 -549085014263984033900081767927250944 2925430151964340641297125311774720 373552282552105303278573425000448 -428667359679857361659262252387139584 2511650652172058618318978038104064 4357693349956147460615398657884160 -440639514834861741771885924642193408 9616060393587502461883848545271808 3578673216647342374493971705495552 -787121532898229432504002103885168640 8466968607453613317866847672991744 5117262045190167920159937815117824 -49393256461491782528801714319917056 7981992027517713484554808558878720 5544502611472258144271931350712320 -590747594562074999662402055432044544 4445218512317130556475236587405312 5791729103015678002087493470519296 -97377546419716478340038862493974528 437836798497662233476652117000192 9357229246496087272920472528879616 -30088505606013393151201321261465600 9082326908579006023961083857862656 4621231530752008331380516255170560 -716888080417041166258090765484818432 7771835744051974455816857864634368 5998794936221903925278993641635840 -367820625069140495698563716670816256 9338801639123582106132722988613632 8031742481190261729687908571414528 -658813816700718296297997093457362944 7119853740408033825214797445070848 7302711199963356633214625274396672 -450013266109429860044309166423015424 2295277209856098498794198535241728 2233417109210332397757155728424960 -418777116385747817090578857408331776 7862772467458635199503282512855040 56245615580797336760610382151680 -431475700879667813519606077315874816 2505576981923675546306730795204608 2517785335085145730493169891540992 -28832527630888305388454183329333248 863272610224759130512691784843264 6401440879249230852018557998333952 -561549853557198976153447611079065600 3590285346425006903563623757512704 7276720207407998601825144734220288 -260312946704353872245784845525975040 9692439551343317288128078919237632 4887901889443579909819379702824960 -387719194901665011353105690930446336 8896469105383966665144964585881600 5783507155498571425008741603344384 -401438200151553924249516499603030016 4383530420151353740702490705264640 6483827315719869115775358332829696 -542237296883796934580113549991870464 3965147684673263334503581269098496 9447813691167568110407572925710336 -470182220829135441905371327833833472 6308213443033133771237264489185280 2973957810594120721246311891861504 -371142652237718295854236393319432192 6943008539282904442315156930691072 6062580683860245897439426245558272 -862464940661987317188874329974112256 6962024008514639808524384731136000 5571900015642063375759020904153088 -481211389841553625422027640748900352 5108997975539994656587196640788480 4619751738463339655588155528052736 -244431509672287852825818413100171264 5623105445753547958392392991637504 927705941438016370231717916573696 -701166380797752223231787793333092352 4213293997191925089213283718660096 1102093767858257921395157849079808 -230243067661392297737359700751548416 9954467461145861050194218828431360 3775623828306395553146937687408640 -123574670401135342485957734438010880 5366756656431184816943576263950336 3227376195385751055228576437633024 -411057178006988531883347174745964544 4566810297049590167682795721195520 5549501714054778301342902755786752 -851409979073471953902004141689929728 8349981381640296848007014450724864 9946962459027310103227283414188032 -634768884670677095749648465134616576 6675280596833603439777438144397312 8625401048312002040475520646250496 -883918467073546413200436333350223872 210874607354036174269935721119744 8422319442506215359284536187813888 -134716647933854729534237249017741312 9357654724721216145319675130019840 7683580526835552295100935451967488 -230207231551134365686682906842365952 9819371370160767774795704922275840 2646496598361609389867370320756736 -602176805096781756925931295833325568 1932117144946233442526974837784576 2554988175725790777006961752801280 -171075145231844913184208551518666752 1941465463967767693488177402609664 1005565967514717456067419160182784 -821664978096263258422643709425221632 6432308959819139459445706807312384 4587995548264035222861881962135552 -459572897780322358898576004248240128 7091467093527328113925359493185536 2152794124835479571781544818245632 -666692869567438770731272880707862528 951002909289460305135765395865600 4134184746898504391093211271004160 -610630329022296874461754054055821312 8539802045660304894949063126941696 9038587043308816728058774501195776 -468670024856657144610211901978181632 2151891507341785473459263629164544 9076567103617767587009953479524352 -188940648705335998247119243328880640 2405773831352962496794406657458176 1889816819514217402032639809945600 -722080815577450440973134313147072512 3119625397774750687308247581327360 1485219618546010879252374380085248 -249265321975080475061807076920524800 7220342863426407408776534892216320 7561771295697676629436319278301184 -965139169711724810740082258896486400 1005896198139083497106511671328768 9552704256588097830027784144027648 -276710392532046133449130230725738496 1684571974166515873422792137375744 8292933636897908232890455752179712 -391164693679641334265254620902195200 1467209832536482234776601780813824 3821493944637491346351837593731072 -314696836704611370592044763467218944 3379918244930169564817764263133184 7943564361042118241477266593808384 -28622311359324629653579045468635136 7383188224349148997984921917063168 1493294640552656786443072807370752 -532787216824058385901692787548487680 5398523438601980068220687714615296 2243111118428084133677375240011776 -234797443890226333080689500252798976 2473619211753318611824127122604032 3278243490809598631255895988764672 -669466582926002370681109236892565504 6846191228988236201636458896818176 2309075556022953234862761110929408 -314795363779187905076632855154524160 6469071826580006790728616012414976 5163474267357115060561543342063616 -926510255367015408327310218184622080 2487573815133227357463717039046656 3006110435662252163768862940069888 -362312738250039328534221254660456448 8091457287223023898785646714552320 1361589192341837373962954446209024 -687089661264194297238093783147479040 2327416400039734084298666720362496 7279841653745487606562752624066560 -328082177228666286269590276170317824 6189255411787244883302695925972992 3053655661141722594320475028979712 -379062616127505543406743028662009856 9051184459911230985519318286991360 3579571671047112564592021119959040 -950877531608882796266733127086374912 7204504348399144734443716548231168 9350547192062155708223287006855168 -565079061834772426479188412693741568 3149278180658637671837561515933696 7881097968519204821733927859257344 -3484834419357546318049733674795008 8592243243581136090152363309924352 8826168620718984548707848425570304 -771693861651159880236827302923599872 3444519386192763677638881854881792 2138886994829790384490449991630848 -721601331752143800214275207112687616 3406565561663838434991732858814464 5777964841436715411729783654973440 -731046900628403508010593031299268608 6753873566776911452824574424514560 7679374794341762291675249885839360 -719449084135419532815373154968928256 1076873071847393425997364815986688 204969732751057728903478765420544 -640345770620661484033394417487314944 8716132538317984023785910894067712 8930727150245218397925514716119040 -539352969796375045141278455375069184 7517312544672896511907615538675712 2989235301246828835861307144011776 -650807417605715064982811466017013760 3855174169953365922252219419197440 4081102484872461958096488807530496 -88177053833004597030416580438130688 1042914031353670028193971879018496 1013325001245701537438539895013376 -214850281127698456469016041417080832 3803968921026152119731463785545728 7944676857067009647290738397937664 -326675878935552263672745644963921920 4653862575276282013795875328884736 316575489986485924198535095386112 -66167162891800348681036895933693952 2155428788588049670456839210270720 4315127509144673237200197944082432 -753488018317774469589636348601434112 3314510450646718017870727756120064 4783974958838060527611173345951744 -747826990864677035589584116416249856 4930110319852133357067179810357248 225534951694922685960970712383488 -288288675705493172237296005554372608 4644331150795578749578275715022848 8576944044059077605662188443271168 -374130324135460437664192783112470528 8533337368562529840312293980635136 7548730976366957868300999451475968 -122519966996290718341093747389890560 7749527757896461456339375201714176 2773874770785825933949590638166016 -669575696098817509692645572893212672 3989792553697776718168953435717632 4539507285469958881151548869574656 -68032372423172365248225550134149120 817075143123228878613977055100928 4738619314534734728164729830768640 -115056547952070673224659962337165312 2755700398322984186770368623542272 5997585792584630612933377064435712 -3040938882334254643128543362416640 9233246572236849013520418364981248 4229339231567008357877136083648512 -289072466229248317624870319645786112 4852395865372445769092451677503488 362672104940156349673626981629952 -386712848110075025338455013973819392 2179259260189828868306340948213760 2969137519947354379481604295753728 -30087649894587609779584398016905216 102402951504086232234845565616128 45305453789980813122042480033792 -51610366053394494067043107342385152 3449692531255853248846737956667392 6996438588470179750789950816124928 -161319100581600736156373042799312896 3557689035739652459697064242053120 6845187045527020801602171774697472 -502006338656494940763155702369746944 7891105773954843089470504329805824 7552530891690534276208758917955584 -377372175355382608100810683788034048 2075057399619150372505366640459776 6663700434760140742483737351028736 -928763436166180520801725074722783232 1040822648149693312510671632465920 7183838532061575725648439400202240 -808356589892067114719133133854212096 2116740337799039135623621545820160 3939630693725969085075937982152704 -118766156105558350237957380150132736 6649467258746886565074142033346560 9708053454296846079697313765261312 -585116812587875532383898097648926720 7984535422526759288648323911647232 1789561770701661177721856620232704 -706187308146212319758409896514551808 7625023911111463196499236458856448 6988792176244336706675384694865920 -10298633053220934922131408949346304 720434759663687012536427892178944 8767719187719164113821866989191168 -977737640854531289455061731823845376 5805593573596299554336092316499968 238334157080367523430909356277760 -105264495125125446505004507217264640 8862389632966378651834264141692928 8289092838187288212848784158228480 -365840618647885126637084572280422400 2246598626783952712152781359677440 7504700540375485073045560116641792 -301913059164709136084242487756980224 9639553504233323267906755411050496 5735929265361502991449346539520000 -778248332299961804457133107511820288 3703550133061846041781939843629056 6468515786577435858678070095380480 -720882436483917522246913631906168832 9728338448894004842057053990027264 5512771306191945017773634797699072 -743890879904013842345351540715290624 6176630144476384546140368274456576 8195734660613677485165094505545728 -915097933127484101660286047376900096 7163904793818586546600119967416320 243528629875583933972146552832 -164081066797979348203065563209007104 4845993326122170762444443660320768 1275265863706463364179801753518080 -267695816382016558237706647483973632 5690719135951570134656077864632320 4374264098082772411989968394649600 -53184128756734338722374557712252928 2607110424238119012996537210896384 5997424707608574327621053700898816 -715622408240137622344037931216273408 8393110294640756112447922941984768 9678012757730099016755466203037696 -321888991385224145653424221923049472 6538903056121020732200083114688512 8657082643666351639563976772157440 -433646391328017699469169093561548800 2991378830583248397104118646177792 9935581500630442268659740863102976 -755838693358827916994700115749896192 4818016086876872237719554764046336 4148684262621688900472180807041024 -4454530949636912918421869160300544 3263064486771728537193958397181952 4134102361553505514306506391027712 -444249047812146162610356898737684480 4158462146183993776739567951413248 779341870375903907131111268941824 -993573761955925848354537866256187392 6284741657521226408945154005139456 3932020839079442416037906314428416 -538810976268024006439631004117237760 7847568972998646342344575708823552 9926712347169025861657200947101696 -149787503388797973138382738524471296 9291354580936163862453536902086656 8660572379416722574828696556797952 -824756201065927626095320040988475392 5877532949227794428477685106737152 2921802154528617263906226087919616 -158228772428663617728232716882673664 3584131039241946255190028598640640 8353417327253893703234113431928832 -861807257882096877996696762413219840 5966947196345428856681865441968128 5496296634653171136845540793253888 -20103590375899214886493859910516736 1880798557641802608185591268900864 1436306379482076668601490911264768 -324098646031848855487927792835756032 3076053617382716287821665194213376 1425377881194343826719430145998848 -183077950413863995934765985132707840 4032971207304315815029896982298624 6452464920027554529792140960071680 -513752458422742454581182112861257728 2090573030874640081789065736749056 7888003951887328773853804352241664 -987667601312606372676796755218530304 4787232635912730239982569911222272 849415497258169441775028438827008 -411541218411222250977488382157914112 7090840876527882535550223818686464 1450677075733317000695428589551616 -855413027029780994083181244882878464 6826820759380571044591678542315520 3651587402299524147252699542323200 -45243055380512322018034587543797760 2596808778387008201661885852942336 6810070815582758234070223280930816 -915922805505422116714383192558141440 9708056619585049093220277382283264 303974511994793854774509653983232 -680862707270682922658602706307907584 712028802526240653004791391191040 3339006716267917312446835109920768 -354317959016354396169839992675237888 9020122238263208264476694623027200 5183430999313643822382550888742912 -268906769188821521032895015912734720 1115385417079336152750974402822144 4304368684484025981161914496974848 -586417758685970071988796072690450432 7206498311863260698137730287140864 4159376229130234022490108436938752 -551582193284819871621382524943466496 6385135064716093018806341911707648 6598728107364464858372323248439296 -501028655047017971118657959807156224 9497438223536581220537459078594560 6603447206621906076988504927109120 -394857192096310135816172190805524480 7077875521963700281845413171953664 599941475808530901559550895194112 -796958663188961841796704011521359872 2476990095171514585198310379749376 4803588818936084532450012105277440 -830603614059065897602452363910578176 4879285367582980012007187713884160 9685307971909588910978647684284416 -24913932479840974080316556395413504 33161981639639874991973453529088 9905813721551152053710374104465408 -659131679174340491144192114173149184 9041701416018331054912916783366144 8616128298970051553146075093139456 -634336506393913342476644787563790336 3441872409686081876627610289569792 6628233273889319284531925987885056 -392840647049373854232762239596625920 4945353345233929441118420629192704 7913281583404495295281146703642624 -509657283729322328755876703156305920 7493472812041982999863720341929984 8048619124523915109262902601711616 -120350502147129158834174817248215040 1969065602523327673358846372347904 6200553475174816191479006116184064 -680327822259911637323466505512288256 1331691388777108641984136410562560 6603142979994502634908467758891008 -767708998129667459641122319306326016 1773687295299105044210885612011520 184329604140076329725019599929344 -207865904565761838055377553552572416 8914214037630703352841848766857216 9699389385336151997908445443391488 -166143758791621318043258016726253568 1148975638577198994168981751857152 306292498227332746659457969160192 -87789431752917260919270691366240256 7684722625031622645955882762895360 7135078139325575826616022357508096 -348545316741797214615177306927267840 705252323217818348443312230236160 6776965747927543194651102480957440 -711930104114648958431481922016247808 3925776925627655582379359915212800 4643617980098900208461537955807232 -582782337286872315162634262170042368 1884994880206504744558282087071744 8160292169745047530482609789337600 -266489524889749542071095521483685888 352424791174436368732584058814464 1187378240553730479076365421248512 -490026459424309270954425547803852800 252352740362647490787818805919744 4063646453163180555545517729251328 -432158695627071070909254544398483456 4526560374737545828549109714255872 8716669592696157698684335249424384 -278439337144303809063338096617062400 1172567246599298625878541576699904 5336496596230068464080352561856512 -446139085477243976427643660522225664 7168396275375480038775180387942400 1951243864903396289045214980472832 -644545301791838282778675987483721728 9402618565472380823806691250274304 9438053215242172624610485354889216 -84344325407959610720156488157888512 3977535939616555126115503154659328 5517703463082639215682276835721216 -18298160557265236151240106893639680 4538427698095381816992389104926720 4778341486543493703756729280364544 -94678741346082519441984835347808256 1950628130812842723110404533256192 7970766848953917796055900273770496 -10258745972947675798216167896645632 6274747168750245020995996826468352 8385104065037420942198975087247360 -760441824603562777542796287456313344 6831409172535904637732670159192064 6508567616581831855168245920169984 -786592263214209211576403317214937088 5697660072732028497745321012494336 7452321469540716003001187281403904 -300325896337270061917006338908487680 9706883094029188559361091708125184 7977941278154224759480594856935424 -884961979395385305569677782934355968 5097787792981918756825928554250240 6000085361544254222861909232713728 -593294007827391890273531778645884928 2238382623055406265134624182108160 8970527429337628100297796045766656 -933418618136328915332317663014682624 685369120835466200442726520979456 3176331033628875237392261375328256 -934509213316778296690119137009074176 6283039881155022744829529054773248 5139117994965321538349441614872576 -472215817637148809114089765539414016 4932357378483195035175628423823360 8452975570706990918908689522884608 -826210140731903083895260327752761344 6577141077749064261845319784857600 3845486449870466273768274883772416 -300526040239270130266011097880330240 2625078720499343840623626496770048 5959523451336665178535217588076544 -10326542049898885737345377741307904 5501053375231167628221283517333504 1327865337422878431953916130230272 -215924783309167656132772131806117888 3903831553820461006235617523138560 9894324900342887930843565360414720 -970224514467136869232795645605052416 54379473782907078586959868723200 6623082336598438080591686289850368 -210979186573543877234788268477775872 3578575515973835569445985755070464 9925754095879485911584093184720896 -908370695744376427511593666099544064 5290378548684082747840100086841344 7878170842839900364941343045189632 -7542918728188194647987455646498816 6795479033310328535408206548041728 2328869554342477378049162105323520 -804960720551598231782886449266819072 635280142635020748615333309317120 6794886440385057174203795211550720 -865640138893272494119748828315779072 4476270398352015336844196535336960 5364350878357086857953518521679872 -35450213707777993695406469255528448 7822611109115630069968540350283776 395340437729668574824436544307200 -924297252410474737191182018478604288 9175810591436402344935607400136704 1187820662849638383800276041596928 -763466439819778905821647087584935936 9156191895866349994670349665435648 4996984912134798133839390211833856 -689785752762890608301094625693663232 6900064793369897618947212453085184 1017607632757234345373120182878208 -939426792019842409104645598870503424 4029253054098214144231806557224960 9306233948221743328353763610066944 -60669342312375579062228337580572672 3054682856786940704951278543831040 360519816529876648229211914371072 -620798756731364536484813905309204480 1269509078185886385152932607688704 3609929086575444918049055092768768 -757223249740924033785507483972796416 9537364451560229645087309612187648 7573607372879997826673995186962432 -821354059904187982042240117645508608 9156097412684038930275941826428928 5979770663422340320270789975736320 -678620202590521283917208394091462656 81158821374893025101245231136768 9366555052236477387138347793645568 -21487010874635810955374065818271744 4447360465114272893706740242055168 4625007922779069124730699280023552 -443363494469919672470288336181788672 1092700611167730805593159332003840 8070527306367033322988566063611904 -3083295405969368791346658727165952 5704728803551010015008486336757760 9760956856840753880954560835485696 -741493951030508541524101491148718080 7965751642049145200921984500760576 7591355189481293204217400452448256 -766425914573822953138477678863581184 431615619348647225149959241203712 292171116336335244025227714232320 -956712808717215823190647210447470592 628085978653926332639378271109120 3467636813026728516596303902277632 -224718547574045063570566611753500672 7370972518230262463864652127272960 6750801316200463236003669146075136 -266029061265177055170957754085933056 2494803053798907735360353511407616 3759563000721571020998944093110272 -556475183235850620601675715151134720 7202669399125562321816436749631488 2065613278838585092023956914831360 -563296147592903902321576048704094208 96368612678760868043681400094720 7886984020211591392422839233544192 -398058590821689065165709337908215808 7989782023438154162697746352439296 6733192944775133894754800597204992 -351530338239839628449313067165024256 8587790639038407650800349527146496 8965100358672292924112308755496960 -560911104487417289261196250479329280 9790360689181153913857210329333760 2391310986772316240878461505241088 -656190044112354447517105571542073344 1192652709039836232480964835540992 1060033411270041810875793847353344 -233380109860244959787541005047169024 7544123060213900128184098170601472 9556868441025765853802493334519808 -206902872594708081756536211276562432 9662300059600383717321623516217344 5195856310739108833541939410239488 -521822832651283547679032707332964352 1383018603121709133939658452893696 5117039067963528847749202923487232 -493501256568989119999204529123885056 7952821805817001029218274071543808 9127721270235104824081386636836864 -832403174759346126611944139772657664 6098926205189905333168852078428160 8456128086692336998358191957868544 -645887990233969865971865308228485120 8797260193347056557098229565489152 3157743896296712281340067239165952 -356060868091913460734916554402037760 4836740207155018094064575373639680 4410096057650659211750608595845120 -259759729582778533218972480110067712 5215928556264363680381521759305728 7894551083399361096752414435835904 -276979258457939541824284482877784064 1431057859737527060383176530591744 6354902360821189838141075620888576 -699064228047078084646325946184368128 8350763478222189268936115076726784 2923660425995766128798105027477504 -758901698629413574297499233951940608 7387086079838323459698586063732736 9071970066474676189399534217986048 -295152667506194214870670146709487616 784417623326835881178471979810816 3664834732673148055068338917736448 -400721790581798718135320967555055616 8769323796047248569588728993939456 1895182449285447836770069232222208 -454114894350590551338576647794196480 5129726534482123572302937870827520 605603673740810785470030909800448 -907265353079787418336241798829047808 9583110645251642504684362044276736 4650561508090618607612988699443200 -26155465688016464732684758198255616 4453619942543898210813508900093952 2673140818876333061532759053303808 -912676927240744270532895844262215680 8940017030947047015667724827230208 5847084441483597514545214093524992 -344472872006507226629646501850120192 8102194620983536764507754017587200 2565041356122423146363217000792064 -627591606135074273283749261971816448 7985566092021531205956650437443584 9637570568679128928960081890902016 -574618153733771286432248422224363520 8750491324816281738695820756123648 5421225503250538803032003780280320 -327411370356599145373612867116335104 5753387648789956063608368000925696 8602834038619033894741373565796352 -640666693867051245315759478667214848 4509062154878352065864852555431936 4836323491056162656163567924936704 -256630575552463952882944542444093440 1173630510078209088360506407780352 829675410347673379535760316694528 -864942472112325444251276049607819264 5436906655800629553916962960048128 913857971280721297881844078870528 -812079353267946665967855336381480960 3581616204104394726294990570389504 9320904987335909478039890195120128 -647725371739274600901146803001360384 1554039300906953418543632975134720 9072319100090956191310172710240256 -578241778310547723844510551558324224 7404299526917255612140931294167040 2333355089058398022327788552323072 -27083950323238503000923818722066432 8482547283770188003323515525660672 5242702265576726131002051783557120 -771769397450529932628199511135617024 6612638973682888183502426884538368 704096378774113788979364616994816 -1243247711051274650983626398760960 3201933324955841629081068344705024 4020819800410587453200285971775488 -445331064744251659242576927506038784 2872621425996664979429507366649856 3071300828034255754856214707568640 -704751645230629874966236342696017920 5491621465851138719577075894714368 528937964114295086223674142883840 -336045311183269268891585013860007936 4049450306004394857587529096364032 3306570293254153189676311705026560 -660813735684363415269207396713496576 8962271429516943434228068914298880 3018722974199252698034714206797824 -355336826150681420455325156497162240 7817632932513540055721259223220224 9094306514200519986721429963931648 -707730612818905484902136474161381376 5046410825665599010915964835332096 3988904055676336091253308659859456 -649710288211850708460752270375518208 2459780821947945128501159160446976 120785553837178502821246821990400 -50240015971363797896263235174137856 9055465214031163863585787347992576 735303576419327725998023987167232 -138216254357403091106866810742374400 6160540532946027205866976834486272 863010111233550264141000350892032 -723765180664681859359982736054943744 9945243078577861526428041409986560 4107360340615899764647048719106048 -445272719187115630028547809477656576 6863354387407647632667795555090432 9489341122739006151982650813841408 -624723298136300642577080322738880512 6575078050261219364770927974809600 9351920022648182688312516021321728 -614964977419066687410906640022503424 3362705655914240890112970690920448 8027087400224334936146695442923520 -147115159805814830635260801481441280 4759553271195550402328361869246464 5815153315403991397776154330923008 -80007173067733489767638771026624512 8475496582211440246885369683902464 7392601669978730323346397201432576 -682210321714309076187731603792855040 8643056914634426497502175695994880 3521166774863960559307775346212864 -185299705370131403336209688678105088 4864195690484388090111560939208704 8706574770598854088863451508113408 -610232201959258019430207159860723712 2633670028960926715637435052589056 7374050542172441123997507091693568 -285295971995578312299932052631846912 4611458880211017637967347473973248 4906023593900030290491205845254144 -633038305161230885218757348050337792 4949409972369134640226565309333504 4616202299467745338858267996061696 -406785898394568833826069530657423360 9203537426475392193636608916848640 5184206158957868858629448487927808 -574965867568333041388366084456841216 8470990471517994769008016914120704 2524297873949186586246834905153536 -123110297657583944238091477289271296 4388797247037370444968684727304192 5428975426300557953884617216884736 -563377229703253183447999343155478528 6514968507171157375572466141757440 1307422630345641283999848179171328 -327428718400042667868222678605234176 8825342001134274915303437505658880 8410030931394252402095595848728576 -67217264177593060752444469989605376 6739276686569272789344276765999104 511077743977069751066323155156992 -331902386851237519496564228889772032 3805088409244117508115097001656320 6625773960432601506980610288123904 -945621898307745260149732524192432128 2244122073060745683578109474897920 2193751447530886744168491244322816 -650002981339128059265490686314545152 5861353640836575512863034199506944 8780325473906253436642188020678656 -447573751600495556886422777327779840 446998803726070532553743714484224 9538770956819226105998570743136256 -89491859353853725240584259225255936 8002720532808635571704907333369856 4430442089487812307150057188098048 -292092173849215342152376908498599936 9940529485566354185809278432968704 1262171474753534680273111593517056 -270509992200086128718377730957115392 3154034376235606568518922310516736 6433901927771218379461035749801984 -826305954071282413416557647780380672 7067112271745946480578402937995264 8003201267199005434680883332251648 -10669066431337810897565165392232448 9550529390484026934601556326088704 6835719016110306093400247962173440 -83909489963191745540578524157444096 1602780153860290312222028674891776 3034066173245977798886989607469056 -764600351361027986550246980659970048 4849914282783285861331625710714880 4443611070233282098052408973197312 -393002435252422400708142140047228928 3641847058704201807319483738488832 4274591550731053920586759072120832 -230553781132129328535570762271031296 7149033296863750320457512055209984 9736766933126448284840700070068224 -343087196301097066004247051845500928 8583663534054005099510811710193664 4017944170008498115115821230456832 -993705575191983305809468359928971264 8607445316506630170594555943976960 9080825933951552021624849470324736 -624171594455997901570438261666480128 1022815351997850382404648089681920 2247360676971295466576915535495168 -778183932833058897557892065872838656 9366534143122313485119931381972992 4158387557443864955234181382668288 -106538066045401591894596089070747648 3357541790350749337384088630198272 3402275618636443504963350287089664 -338829119601329262106212700887449600 6275421454723732151374188843630592 7733091128279939674052224004128768 -217388200485161714621203401697918976 4112395971545828905072617179840512 6195887280363447752596061272670208 -187909568390409008841230886723649536 992741909494597350673217042251776 8559807446847308824894715027521536 -947073819693667927097963189731590144 6834480557340325901204286192222208 6874712906249241632664549773541376 -947194908655266438609001339986903040 5750883574442528441224634600259584 9408605687281842551959882597138432 -367099227542397523722591437309607936 242950298067696488489603452370944 6975952781372832827360233943728128 -889976000187596069258478171233189888 409489968129023009872543215517696 688198406098545426417292354256896 -704937427021230643211981457195008000 8748483660952076004295270616530944 9455291412153993171087879374372864 -533377326653580604439745652496269312 8548677132148843220951987799457792 896586458856077183273097039446016 -341731312151268271681136532490551296 7180037213673969974691003256274944 9601832080673979640614275243835392 -725705929060367454840049522817630208 982654180943942477460517479776256 5201570762262230167454563180740608 -617664755824966916148963315189547008 3620442279537378311225660342796288 4374309632705159718680339152896000 -229500100290074611383469605736415232 9417009899061380905362753721466880 5826663865400284272698503536312320 -654884745097186387569306144419610624 2664475386844952645402976019546112 8210873561101010899848017718804480 -367939631805316617011397369584943104 623807364388774724408822766501888 1385730363942557616889857128267776 -17461449186760886230388181636743168 5627193441940720566016464545382400 8016035986259876479483316302512128 -66116343285590311632844638365155328 5014149670064575583055225634684928 6565009055633217034535688743157760 -776114143827063004515049945817939968 4343214823177824320481319979057152 8876733362751665003012168540487680 -625798949231035478271599911473512448 6973685700922511775624582637027328 4546327891680125941619626518511616 -307614879554837575080469234391711744 3510376373943571296788909156990976 595052940811896369168729115721728 -769304708075235651830684591769780224 459551130957751390339284516995072 317557209317135539459607255580672 -257085760313020811258669161955459072 2123053761974421614076249069584384 640519975427380893597455238561792 -50396143307536215641630488515313664 918519777319929255673577607266304 3962059782579253385553232485416960 -344288663767473292944473695857934336 4768705309284190566874868705394688 9772650886874407047780392526413824 -169448011288578380735479914082336768 9479710924604992225560110921940992 2708224077205850637449947231813632 -80101696252682771140772394822533120 107224680551611501851114098130944 8595656924562917634440819269173248 -998963256523384892783052029928931328 3861261649664439012233396478803968 6016428944775026765414877001416704 -397727553035490570364154356692942848 1935576437328686466435684413472768 6529412485795458300080476657811456 -804493989245766204837335871267012608 9376083997620934156852724815101952 848295830908345126423489597669376 -676268354710942522635817523116769280 1194636215618562848665188154998784 2845518637422225584215730629378048 -550006619333160815306226126175600640 5146246875729389977957340071067648 7761604887663823931193246017912832 -319280857727847355649299886205042688 9669942118390791901979190495281152 6829253559176027564773094887260160 -967229060066858676830504643526131712 2192094298573488052632414790352896 2969861253383623841417022486347776 -763924078378460611220948992087031808 8723939699330828396423133337223168 8602288440083800459060748314738688 -883937597385229861985165147780415488 2495492724170161761935714959753216 9116070321751095134373237919580160 -393077398737503488422108166281494528 8895172481518898229030201486999552 1443178269105069456811868337209344 -189716313363800574140823108642144256 6908383580445097687804320845660160 1257001818958050046306707876872192 -175115854202092408573298357097725952 9465451907308580939752427298488320 4097492184511589989794577853186048 -510707865158503618071580635608121344 862672223747029999517237193474048 2100432130105177710806335880167424 -882419508369137906534379217919934464 5132168814880127849717057860927488 3419967546687736751666933071347712 -435677963421154940242724809821126656 5775604895784917053294069980069888 374356620638735042263730328961024 -82697432708178212115910170356219904 3471023347962485933869554512953344 4749829725823462800932578258845696 -422067486609758132637813249100742656 4002147944484721690263183278735360 6672309915277087224891745020936192 -462669827927119248622865136494837760 4907918363034472410188239515680768 2271286422353328855023299732701184 -775195546465055195414592195198451712 7355779439214106708763074271117312 7806210929620022455435589209554944 -525494150126256876811278167431970816 5207986948261387539782712839634944 9317419216628922836008126499520512 -326740864516782043031798977153466368 6367009172590429301723648692846592 1618365949747016399217415514226688 -569197732032307400018129468096774144 2221657986301160602916332926664704 3556112049389361910625405761486848 -623713955287444110705599770571833344 8824311789100807344008271662940160 9469054513213427502685909009039360 -146551634158186589396688953784926208 193811872853082535310618947223552 7366066953227327221230067959988224 -614093548026291077691981432663048192 7800180153632185491835225311805440 671327425619807132650510101774336 -194401172333633517989091398406635520 1084875981157744576580436134723584 3101154882327847042060684720340992 -802058986530183049388017891535749120 5377877596537289616619401675538432 2629944934160544020077481780314112 -32446145163474495102453699127017472 4423473337335637232988132319690752 3083692412583757981602204314763264 -230196386895827057492355641266667520 5730199437149640542794300138717184 2127742605153039984199210954129408 -226001675755206091145639946826547200 4989320805233577092827908023517184 6947086453162883880992918080585728 -536243963265195357056541680491036672 2491059304906567081745652836728832 7296495680616842551708424133935104 -362008140644562887455893351192068096 4169898630918307849808988044525568 4133290067200610713529488246833152 -124343368088120546076342545633247232 9454836202776403265439933183033344 564303015620768209724947990315008 -511710314641276528741644552615493632 7343991434058239781364293989040128 9206749218924768425401542313508864 -814147064958663290732104592834691072 4127317047997137657129540205412352 1287667481412579615268455009222656 -256610073345608158014029104047718400 9839640056280313948345941104787456 4543534109331034243542983831977984 -895651880325639562336893670682263552 6178888448986579793329894453149696 3060758930957485867859181450559488 -94447923491807793908321603893067776 6961064541450166731185895312982016 9851698313986502773816437199863808 -373537136668189356736638397599186944 2843120121713410314485452263915520 4602527578140663260146212647469056 -381243329105023295677135581001809920 9353441749780821834814571033919488 7168290739707961091980934697189376 -155077466114263293125818105324371968 2562497098393761089143618624552960 6682221028606376063959556721475584 -832894207745259017135184460805832704 1383270462595043915369103128264704 8645134184470977771523903462572032 -44985433138027787261933015011426304 4218339211526189401192725793996800 9898486671701151674989834911350784 -632573060146208316639816446457675776 7637922880246913557219057604755456 7127827966970440100901701109678080 -11180059060028542586143193645973504 2438254350588355791037274301399040 5450328188316216080940179012976640 -145192677120492220774289854900994048 719278697000143187611440556015616 9108741319335408692794763660754944 -120893630483772085965596175787622400 1160839862663676345691901616193536 326295360406070772796600507957248 -442501962475580629219682202203193344 194602565795028777218024664989696 8530334046923706491757333942632448 -406701749381564693412791388817326080 498565247071306526034942733844480 2960569833083449443457931816206336 -48278194289860906685583766560178176 84647365925623143590980178935808 6544830513074401741813800446722048 -894794469231896021014952534675030016 6898064121698765867116823725473792 749251450069343829035254821158912 -38998398635836665288575994849918976 5591521181151124067019983379496960 8148033732079420234396235615698944 -669554934115148803331789792630276096 7359566377114491605665911557586944 4399128528792191530033854717886464 -699954808756529844642172613324439552 6705289643414734735301650176540672 1952231963961034462662780912664576 -43026884765457873169472382990024704 2877050883269286066609819622572032 5504298375734970841287570495635456 -424869898115725099828079617757937664 6874219661054226216968843950030848 700085617793736492695657537077248 -977187465490606702684050403197190144 1269671378936876230076201854566400 9790608509885230064655893824274432 -549129611424123303461523159502553088 5572167242646900541962618054639616 9082024656040165643320153924960256 -607762985915507329856568582381502464 6538417974400043751281795755147264 5743173902238803212051834722058240 -848988168085833792237102308188487680 3206980857276745705518765373915136 6560019772894712309322927308800000 -796827507377814985625175923837894656 8783232903193912095002889581232128 381147805861992568708662204301312 -135183946804092230152796257153712128 4062488336580377787222017546649600 4575279279329443409437416283439104 -330915901706573727872852885088763904 8461904177160098653484883157975040 9071730364750670951241649190076416 -256009392597889192151673748118831104 6042508708507195722064195737354240 2234080485493738610000928008306688 -160796442551467028576140964006985728 6254209292298738272015146949804032 7123496750715740349844849216716800 -819787344533065931992987299206922240 6658205326952712045694385783832576 7887269626479567340446043670052864 -137017865443584076115375451698888704 6461695952494749949510143394709504 3160535412862157518549821769646080 -839586195742307643371572630478913536 3128586983551630924336205242826752 7802744516063216243053211655602176 -7292368192793894723892555248828416 6106940876148515155721840073113600 3996841733972653272022997511700480 -358284211635112779147142434197078016 6368051898480956296495888250961920 4979709776960645074427450037895168 -882374935744130658538455050351542272 2200459435288323179372844349915136 7796065094282099518719014442369024 -860814375625171210020987098149945344 1547137511312869391427806733271040 4376110919515424674750448577544192 -202887431736788710553703521336688640 8203321463238846985088897300561920 2509585636781801460291686685999104 -819957377907185245270784187197030400 9112269537603075596515836103229440 5397961708116792913145771965022208 -689700224184563802019813737591996416 8099674178246475162425393762271232 9817559775365069041687039429312512 -198965643012091639770747057643454464 7304054806008810970588312716181504 9682401939581137618760458053877760 -762879875046424420970362523841724416 500872590733558831314587120304128 70063457036348420737702758973440 -271122931828789339887083736086347776 8473719331414402425734708072546304 7639618699010703280074277131386880 -355886804303158782554139522032992256 4633333396538405677300001278001152 4865472811351735838014928194633728 -425009188072185188997247895041212416 9950233695311139509058352678174720 98093447171149334701831947812864 -175478705963936392280736760598626304 1582212837951412270488491466424320 5953492449670592218528626453250048 -238397985020895864073137775110520832 2076950778055200841304873344434176 7994912668737569592164174606106624 -614068388339972772787557918629167104 6902840801212911547057455413329920 4333977948275641795358488711397376 -5956437090660214875125719219830784 3891404919161662966331522162884608 3795314245128283699415582469259264 -687107130458617418748543068836724736 7397619925556067300555681253294080 9577381546121504904324113038835712 -683091805071403287876533667315580928 3467733799880575791910945787215872 8929939363180707448129035043864576 -502542908244591110972475073479311360 1570129730662959201576111289925632 6596172895451755802033565896540160 -34083843590114628371158482846482432 7801537318886801252050842362576896 6239492801445295000700963335962624 -316577830997758653578980413711319040 5443837336798647443559016837414912 7529820431784869909934595549167616 -112578215540845528929887409017978880 9200105927941775999915647374983168 2700356115392689309773591260168192 -623501838051732193923410866795970560 710203866490595035461319001112576 4116517884950473230730221953482752 -450220896391858840990167767814504448 3589718725212381346409816826839040 780729718490529836266973789421568 -253617071668386832160867740658171904 7964923668550985657301919810453504 5511769353177648439359390596726784 -21814490109564997556742091477876736 7860773097497960054297180757819392 8093696237635452587083130642366464 -951662209584150600253146364762914816 7153566834536866554869521919770624 2180792356078053624739044614209536 -352014971963355087500029396743356416 9533997924629879807854084022599680 7241959065379387344427713130659840 -956443985426763269937026895764783104 580987298570945931306245256380416 2777288137101434131715570152767488 -841179683761552632027727808081952768 8254311222982940400864924656467968 8219170135747387808436345280397312 -88447168208278471941188646902693888 9948255802436749266424258608758784 4658333230602122365475585370619904 -989779237253573950251111687724728320 4627876137259308004156371231571968 4857241432382661512998247892779008 -365412872705580182196904781357776896 6230755863078880320908700531294208 3301168376075817104164598856024064 -986276890569820511731338636077039616 8933890815412735491345851011301376 2598540232098476367348057845530624 -982176831740215175671806003125420032 4184413440447123865328818784829440 9081804768927644027903311114928128 -262214971503201294704709271010934784 7359622405407210288778322083053568 1025797913422464390606109536157696 -178863723893755406502263463012728832 1874588638185772818411965554622464 2954965560754165545902017869774848 -267725921084945989404021709999177728 9054938103821667727604905888710656 5220637040579222403969913119047680 -777243380863608242511226779646033920 3119984585819895543936924122087424 3158103853416923842050798534000640 -227213311597121546583731149295583232 1388717033205688214851651584917504 9861127673596828756542227153420288 -502131037084826163807534025787047936 2824490817754213149802648823660544 6750159610397263001327125837905920 -700698887941270701494611812628299776 9680505946962736013882543623372800 7052843577400653068246202795950080 -604119452611416283979739281619943424 3657418142571266588241392954245120 334085030898897443398654634229760 -353814601824083932934443386080854016 6744943093693644593513864861057024 9401475745747623432381396162707456 -203711886376444278055010099838058496 853513640165181410892767391907840 8721633270591186728724849340973056 -930755271615039661306901688859230208 5561794699874426660133840485351424 3266425967969861560278765252116480 -859753107646828486602384241495900160 1317245847427384016434252629409792 9215992464396701139200567387619328 -509320525110629852831345371502346240 6237459262565404287977795585310720 7638116040385572152247409713348608 -32740990446754236869675967601180672 2763125656906590980203362228633600 8898335112095754128219277187088384 -532820880078257046869532492353765376 1403535355542247278027046972817408 9824576209703440059097064247656448 -996594330342138065475304925951950848 6137333805352271951100314443055104 4445462110015264578694703164162048 -715768559967270744789432757177548800 4608253320036886838198038586982400 4556980612701135556153082214612992 -386270800326924537570167022382219264 6185829760345232893830736858054656 1369046814730718023395046888308736 -33908234924936505840699383807475712 9228186274357142817043619451502592 4923988379526759570758898924126208 -318532951469805909671179344471392256 5080895275504877484247341548437504 8582288605054750645080133321359360 -29287796731935416030817885133733888 1211470287066870400727026692521984 955525540324908483364382882922496 -596724864931907323455408660436484096 4605683173478688873759773382672384 1465992629831157671297052638707712 -325768194474492361673696935764033536 3800769814304879964318405524193280 9393999664264909127976607354454016 -310110655245350183494583457696186368 8475013007960480369120997204295680 9345748637912441017665105155850240 -242400716764913156071458195556532224 6096830780164257845479703670947840 2878640533980792243643230554423296 -132188103035738993016068858064142336 6544294279974289803971054553530368 6606955320187203422020060946890752 -834030902792025967824045778189418496 8298235342022174944518449500520448 3715654642262497880276503866900480 -998721332552050010750345474104885248 4224778876327894865941831897579520 5178363684665572197536322199486464 -111082933473742573590733480806842368 9552797083400434203184409689980928 4817930130985358728527340078366720 -359478254371617725898930029514981376 7806728144811419332411446072967168 5586860188680952353059557664096256 -250351962496426222014170191806595072 9475265689885946376947201698955264 5090342122582806865905391700541440 -911434615151742283205786455467098112 2576985552474497545002599395098624 5276548937871247498668720384901120 -552787388913837143298888178801311744 4008518629594020778746996091518976 8575007165001220823736027208220672 -414951405382450066507703396052500480 4588113651439822727541853037527040 6519526050177385592815233798242304 -452990240722916195713838484646002688 6771222518563713911824007129202688 7121731600808427434137729848311808 -711309018385794118870486996410695680 3708632340913850617505391065432064 4626798774226821443641814303113216 -640343780405880034820526598925582336 1529555770164440515457185180811264 7878083467018093001276434725994496 -831661257390634310539486326004121600 5684724920595461687507335400914944 6827146954288090452259908777672704 -587630950749275207918705191275200512 4860285806227161561647586801090560 3506831607706198826118157032226816 -155269283569645822810412534540009472 1531992986359763986207929702285312 876690219138514439221475551477760 -806933160391945915306710129031774208 1790863784197025148616819234308096 3291469712570307514700200671182848 -633006208253644154421238972716941312 7821724835436279370236746107191296 9784679081895698711438908540846080 -879333798285426070848906716013133824 2914839789812456889843511982030848 5126793868824357367588405049819136 -403713718636090169659373263322611712 4751889836672434086749443033399296 5281902414549761165523121524965376 -970508041386543876677406653232971776 5250176567969003982892793606438912 2860628057010630019541424280698880 -236877320911023087658868822079700992 1466297375280098069410639746433024 6841005290738639193832888656199680 -280031268942158858973258326170664960 5043900214982204288495923989839872 9319508057772220101384746664198144 -889493869027533273162164544267616256 6196284788212079196010045385998336 7788437184195846144352122088456192 -309826568431688169734732731903901696 879624554980105687609087579127808 5547115874916828377996229370445824 -808009331200566426261253167912058880 1466564993729394484448853110030336 1607851168036155487146897584422912 -902489828053452955850954450908741632 888282967190708533994353856610304 2872292280717741208275459273392128 -690422858655461318133821878793404416 4785312240411933120689107514687488 6380357318326969493841186767503360 -180067429396887746326602126253359104 5027240103131355965508656419569664 9781017793522443932291865040125952 -635960909897260746669548023203233792 3320085071654240655247381771583488 7576329938984938891193623093706752 -625530379892444549498515277609959424 5122910286364001552607005363929088 8085699517710577674529499007418368 -476240034885250600117177066765418496 995069181331560417284758345613312 5486633598386315361678852880334848 -193460624504194268481287277428867072 6676727362252117643763318653976576 3379383051077331308364434178572288 -893396276248692394757084706429206528 4506877355367043283733172533067776 3211157621588318826409845053194240 -869820664433884836956441931577032704 4084032651515303286127438189297664 9773778296021910939572952316772352 -782721466162165461503478926967570432 7314110784824478550432183731879936 4794243019004138631779289491570688 -16766083922743602855065035862966272 5077587018075603074576403186843648 7574070652087076906285707724587008 -253389380072512723618114436474077184 999345408540814013697110914891776 4095064752823549988199555791847424 -571679046235565527186087686568935424 7349472434603069625085256250949632 6326798016781739125480101767020544 -531109035077596181506641798111428608 2575705749803754370980716316983296 3396505670007778136124015641624576 -443889214957760754172257656398413824 7528773823734065924687952114352128 730402119254908784893396678344704 -93217564036460848681019418171408384 6601940690411786522182740479049728 259557901573545533147459543367680 -300507606457798780919405900833226752 9461149115839273704622629113036800 1258247460262616613457479184941056 -533085823085133820581992883277529088 8568347135707012744758813674962944 9920919830003809181725828312989696 -822158378084739035169063826609930240 4359313938281818788621358284668928 895713907099694982211268276912128 -921946038335483052760862683566178304 3149340373761544894175033333645312 6068082364788586317250719970754560 -733915642315632827812055432262844416 2781169218942662418387308952682496 7997753549882685246486584670289920 -530253729364403250102135328369278976 6695172783968055615495932703932416 9589969047787145555824537505890304 -397707733863745268138141752336842752 1576315921062911150880275744948224 3227207818812508724159802423377920 -267856841349475802235893944269406208 5852109416029388779181459218890752 4286909203500481064811184164700160 -461367886721634058198509547010654208 2092667094277812742498942028087296 9375150124638498275395896654954496 -576454805123577262218951834361397248 7679374468914146987097673535848448 5115230822692717779033461392146432 -3175894471642187668554090773741568 6933539304852697411981446760890368 1194555752159131567998402574680064 -443667427445530386514033970111315968 5339266701726075625278900786954240 1188441244621872319426367206719488 -673045003367996708438872776920530944 7600504955681459742843083654430720 9715012494063408505784115363053568 -312116124070113814380681278429069312 2775556173725666010581861465587712 2022498875306624158158896937041920 -330634078074671970921656136543240192 179908889075052384532768749518848 8602015679205326980606881725153280 -58823051311070356135227731606503424 8180718568344670648475292939583488 3772678641082543567039832046698496 -891787627917168821585081676800720896 2531375139767987693172050211373056 3303239467288326892452583051362304 -128403541522392330393356237696663552 5020137505693697993863265653882880 2044428637037812671165104992026624 -890337267197583320293786533341691904 2349186742322077715585970798067712 920705359720156535474490055852032 -657413902329700549097210145247592448 7830505673577987699288035670622208 9709736205045308901491302884966400 -132995106276344008469245686527819776 2793264553049704574967889440800768 222011863646782514744149644673024 -691207573280959317569567542927687680 8649227361476471258410826581671936 1544206701523824965078708362674176 -264481283904434351153848420726210560 7715086174690028386549288006582272 7549266685988919786491287888199680 -623779560103091342752568061760372736 2620796449752154552974220097224704 9990602199783153850387847220035584 -303564755335001049302887236326391808 2738069756161015251832683091722240 6716425424521779758724083626278912 -347064471771493278348169160616312832 3810493712732284728083863918608384 962982203297211477481653203369984 -845855865412122146911916963947085824 6687181284854845167374666903322624 8054215520417630331389519184527360 -469933425266841577905120135205617664 7225044042330227716560545625669632 4924906138873716886914967682416640 -837602922286682955743253683545047040 9452900568725380084972063360548864 863438908303452513535565347422208 -118516621842807149985798586735001600 8746222145055509875663092590837760 8294906837095401706049567388073984 -345096381173403530850320532553859072 122723574944097893667468631605248 3667232454731605751378046468751360 -128873344336086277365860929818853376 404106864704038447774239939362816 8072728830375707694406643918831616 -648688641712016924605961668141252608 4279428573584209903710354391695360 1864527616690302295177019695038464 -329559000979165944483598078165647360 2957606926608925132350880227524608 3150235742703807808594336666353664 -561613441937992892842975511319674880 5223654004310314478125354978377728 5315049008738222338933551137816576 -229441408000304115855376922523467776 3451221189221334920820069731663872 5301221327519980323221649460559872 -450387177373141499632818189439598592 6205791303198500284661151926583296 3571780853848611302314909471080448 -681627304757129412206955387552792576 2374839290180235575162068357087232 9839807126486486609171520629506048 -767349295316156620549097763096231936 3449805772936108590248250642006016 4355759238637208431245153955479552 -614773307029799635494188185225789440 52620298344270597950629818138624 3167035081761408494160146696503296 -363987984209789002102010844624715776 9564465259941281696111805153148928 4798368960416602512316317057417216 -626424398467381577034541140614840320 4119980227453705314610080072597504 1359020195541727439611526427705344 -867643799229724517038595810816688128 4587610560377290367978907042316288 5723971936581456363892505197936640 -809680447979697639248702839730470912 7645497376222795349326681035767808 5258921407346274748688356014555136 -360568454824236541392592989193240576 6648577566473389809474287771320320 3610027115728979169049704373682176 -890605723825476575535133841533435904 4563136973803454427349249840644096 2861513159409013961222952258109440 -281913551704796216402093808300326912 704550869675429227777614239760384 3514418405674754109501547703435264 -490878956021784551719634607443804160 2565859743163833935902440337440768 9988716223455102046659955633684480 -184108467304396843419530782012604416 3838766596058784271180895354880000 115878022454707439368581488312320 -348084612965400715869004787930365952 4112643767674615339454289221255168 2714469780509513575834631308050432 -795421622827648564433767695137112064 7934154541214459299330764107153408 9630241756604954879766255758213120 -695090650218979866867082638049411072 9062712798227452271073740283969536 4077608988234062845120106484203520 -413816957567270057298516866026700800 2263693970687096783454403211296768 8836878814538297570164924341026816 -290291663436992589096142239057313792 2719254766292828113582613394882560 6855657485419338740074509684965376 -533992111420825582131546774896115712 1972417721338752492902365456760832 6753036633101943759631433475293184 -481793233799948049463357691911995392 5309576507856485886779674381516800 5731285600697543777193498255556608 -665269296226404983509904638926127104 2857983112900328289850048406093824 1670614801098224666762919098187776 -248399966742516094811148030207590400 5231437325756269543899456302219264 1567235248118376325670889584590848 -743830744873682834876999851034279936 9908653238021381604369553527144448 343199854448170304130972441903104 -499415771724197494426941846290694144 2321703451330017078151426464546816 1187518738790823287384188301344768 -248412171177897648992823012136845312 4170156685881946899012936336932864 8429345369656785005270621786996736 -138689808793802142354464164125081600 67123637919913466627348922105856 7024449935274459503629259541315584 -388048453339890593111400776753741824 2314900332587456010688994379563008 8033240224512668197783387175387136 -210365505179439628048600037970673664 231169678153564075027391521488896 3250433142190401180105533789569024 -140127553934806645303448888512872448 9831923375017248495797705948266496 2664209036373583237682263412965376 -123558462076126572086316432036462592 4970611817651453130275019462541312 348411422116534597021246464983040 -435063104888254340726134428340846592 4522159036741379181977131055841280 9850698012685567823021067774984192 -346679622766765814933918168553357312 2735231403262725524847518526996480 1805600614588317028450658938781696 -414785119651283990647631517424025600 7502884380279963242435579792588800 3276960401578399595723041831649280 -615837509414851087893765386269622272 7686188041489684107773304452939776 9977475275153906225261692575547392 -251907700556035350221953949449060352 4316667509686250456904098685911040 97714499769926786687326723506176 -892637314933730851849987445982494720 1277856174879049828238508903366656 1346842376340312862680414980931584 -585121604713419727845812347277934592 7692092050320635635819269182193664 7339651205423738577142999039344640 -205267095222400859674439345909006336 7479508514746927616276596950827008 9704003044174822723405597175185408 -517839256829149485144477087110791168 1993540193007708503209569540898816 3184634638857469944397948688269312 -277454785169071024111387560353202176 1224480356423593190192686051622912 4695434416287310201313002849828864 -531170354451678665056575502315159552 7795768785531818403447550743937024 8481399244837966493248922836795392 -330189679239131912259167538689081344 6266666629736224430674284399034368 6824257563573891681962041733545984 -442535661770137178810388862359044096 7483711358229545866236853915484160 9272400716916542100455351832805376 -29496125229516543908040263092666368 6888111828786722044294947124805632 3841318328017115814552708038262784 -89645759693300288074811307471142912 4467234566128886094311445611151360 6661884437378426564162545201971200 -559437483360721676619551199717228544 8083344943218609128976771203465216 5769812519810629874148808744501248 -788362862604810733213100487928184832 8067292380461399803256851901972480 3583512643422661024973974992322560 -617459243808318066450223576813404160 1241494922201131193153165119717376 8167503495766133355462574420787200 -315914320804564221517655451155562496 8025417712834585951795029213184000 6938692315981515220924619772919808 -967385239233302639942388049644617728 1377471585621516122512875075928064 9884765213790599802987700214038528 -493901927755853586419216711937949696 7660587369591762692910109398401024 4367972659053771851700431652651008 -504079465542248760950767776499236864 750724360675751573918182830768128 981150595186550056881714649628672 -889241034610322192561807353570131968 7002348797448045151464812858834944 9734931922492634415114535621885952 -772634793938531071006200260882071552 4354798075365406204151169764294656 310748513655182072914334292377600 -490691661094847080612534892221169664 1700127133291399515302433661124608 5760072625967586098774006822862848 -930557787467830001805423093984788480 2658947213778227966802955109138432 6312885862566711563773641133916160 -525267113339962362144348307565051904 1609843627082666200831707272183808 281073417144886228672424511012864 -390585463005521064250335776995278848 1059569183407823575239845272879104 9674371544983295531227803516141568 -6455132663456500822971539173408768 4764834240680896481213551948595200 8247549454245966886208963992354816 -562485825182722173893087745573650432 8626214326656762771832491607064576 9585014730670623807081490648399872 -267361263594797669380513251660398592 641241447736616525939328562495488 8566515508330615562271607100538880 -50991496120975638975746764510855168 8377397208118993705554551022551040 2485402894153866984776102890700800 -121582419669065296941052296781889536 7528714370742374597114298395262976 5985612001770401897785761357365248 -48378049549101154572561709248020480 9893030319635637488878531733618688 2812508152698695152754843747090432 -141771129615146618575120333851852800 378763472589861996806220831260672 7091175317792552292440443157741568 -321229387855937100873510079667634176 5663931693954805874221767005831168 5504033455955334363790889910796288 -108880950608832257255859354150633472 6227667095212840536305300985085952 2629391706390860092101729303134208 -684872716983392188937463010292662272 5134241685183075819901345951907840 8622375325507044637971704491016192 -707031533962416684107284508630319104 3835176932240401003544738286010368 9506907275334306251627286350528512 -885750052295761626815920575386484736 4674628967484677787517389356662784 1116958297195310457845368106254336 -344407598583193194139811025130618880 2170139415483629702476150276620288 2218934287304395443272132486758400 -588360437025883175439138497115455488 5746739477840966041177177179815936 4647560154435530002521695811796992 -186176640588580831108713273542836224 9239325822457039724467137097498624 1891949199668464219922360541642752 -164274639531398332332920396746588160 6736235857247783555248408248713216 339212527776373289901225658023936 -374611775020420307916689538784690176 9664079898556268856698653439426560 4983563476316171856083408650240000 -399418744318232807052344548122427392 616226243088986392478415583182848 1471911650085879109838270409736192 -8594464134545333492248542724489216 5627648778695387602402592159694848 9611416018156293553426733962625024 -251780364308298025372623489606877184 9875316866951678523169729679458304 851104402055382159388304690118656 -851482481860409222254445754937507840 5254314031537633269029186056486912 4523570429675398444827682566832128 -300129836685635705875703773060399104 4491108546061498539663853287899136 4891440664346010569305197098565632 -4051493065145615690134734166294528 2228016079326901993558161204707328 7361640027253947085065849701138432 -927037286869602698724872952618156032 5658516900706851014130521681690624 426702850288249257497739707547648 -479407092071203829966881279445041152 9396390521507368819532830309613568 1505997855285773780623861902999552 -960724467897282916507954015916523520 8064888538086720513397950752227328 7898182111037183999012596749434880 -787537340472112547339881501310320640 7940240195736927492417453647986688 5937438688004710241741076328087552 -214580286218464465122236616740438016 1635364794937734710918879247335424 8444006351039046549505944814878720 -604245071771610376766273078968713216 1723630541161217040225191268974592 6217824524033330956748478132256768 -997050827802381235380095339993235456 9083138458432124413533811004932096 7363029557762049938024465094934528 -803143225388611749553645015164518400 7652176472576299074926311112704000 4638705872655168394893701651890176 -710689085100344124733115705549914112 2997877948376645189426878468849664 9960248635734983911777279405981696 -279188080708526258969696941811695616 3441800660806544222832124808396800 9285836175510459006277349950881792 -511489203569073871695097455345401856 7713923914931979803951540744486912 8437706513700528792839226092683264 -761264767952081191463993790349443072 5818864580823007422569073849925632 1177829052328388808874080621035520 -499392173169411807466507145016508416 5832534190401025860571909083627520 7148596617253454824653099582357504 -886169724058370941620378884959633408 9676583730032719112671855313420288 7417092504528080719993405085581312 -184921268208094960671863033781288960 2326895267351329407067423076515840 710374871060039143274173807198208 -873971924567624602973393770040524800 4584651918350264142673357691682816 1971713988198865982473730093219840 -28043456863113743465237721550684160 9800875773348539606949856781795328 3239238178263872382877559978721280 -143649043045341669598277809622482944 2010351728203780818511880647606272 4865695418656794389554475953029120 -457401159784438089840410228787511296 3059298377599157491564038687031296 1347525729949010349954017653686272 -623954954081968748511497688757305344 2174188391861506257786490954186752 7755995815199239327457758331011072 -922884468669273813615322115180855296 9957372721346833496955266724265984 8035849043929670487837387039703040 -940064403826260997095454635800395776 1730257612654529903562189097140224 195917631887667834063144951480320 -308936882843899683269446289997168640 3312142264742594745884703545360384 947082545175753617376176859250688 -802081165499536038299054133655633920 7333752730466425667190312962883584 8666840761767751173002839998857216 -130515355964626287405291128076894208 9965887483845993612133616859480064 7268761164140410636503185503551488 -924456144237048330620278171565555712 8329614506705823794846189309919232 1991917076435208077332226745827328 -244708752960262152469990009913475072 2694480152112321920163421160996864 2705431441562433098702797840318464 -27076283596343680131948567022534656 1055061285914913989896253730717696 9700961281460259363616569799213056 -324826100998497914541972132206739456 9707299079442119956105738135273472 3314845327849815698653687912071168 -19413379455038115064309064533016576 5718118403699125231806357883060224 9428958167915242381018178904915968 -579088413604496419983813899911692288 7271878370605690695395550305452032 2928303822091719287990412793348096 -111911963402506138448875460740775936 7629075266836213855670478256996352 4683951112086416726351941981962240 -714669860391719316651888244626030592 3812510140326963666304925140254720 1154711269386693657365580278136832 -361067158981991537035741357085294592 2514186632863454309536768834142208 5205787390632250448348995418849280 -926048734374622405159810866350129152 4776027583574181108754350218412032 460796571159368723139484486467584 -734225168987546969142831252066271232 4446759524478278446854950096994304 3794031284878362716864730271580160 -185446816324556918893409055629377536 2073152347074564768647540658667520 6364761570562541527625390989770752 -949222150216326662378135304598978560 3682411389700217453964848003022848 4106600055705142822071288463360000 -402183505240419131830624004597612544 3379464289716655449360893460086784 7015415114670900931772321384890368 -61828382714664259171508790084239360 2830804418457252480057856829161472 3435408391152561483218483733856256 -61605182821956411448786876740141056 7154049272843590196134234885718016 9275442323022122090705764994777088 -881103019650968138018173192931115008 7819809416598440097155814084575232 1454576146997424877904850543706112 -944554044895587852634847384627576832 1524940861818309081000498639667200 520957904274141155676152179720192 -370780656187300044789868710361825280 3806171556403771281849932790628352 8782506491006659924784794851868672 -801052534232850294231880867942236160 69888667003588454423205532139520 8679775834073621092475103468322816 -956064034358258666284992203587584000 9119438587934525812681293407715328 4892296767882061323441924560912384 -830960513581810041025190844293971968 6736053384173378564558821800280064 7256928629876901060957416359723008 -169397774266555803840054999860117504 506917229835292137046365024813056 1844258626666020986164517000970240 -458232430349705703466536308798652416 7310831415746723556069376811597824 4390401463920996228361682822365184 -705820702001655351382143615943835648 9093381942240561428167757228146688 7480644368302114266523017737666560 -63235251942063380035868290201944064 8334857768853769503793273873891328 3809607262525276888319113042067456 -37759338706098315797323482956562432 3719880912344671495527102781849600 7221719675922087228747003075756032 -403057171739559396457232438539583488 5909599481714111986135786529488896 5442520600522183667299990514958336 -208034921972174321519543035405271040 9898363077541495034413146160758784 4877701574724511350366594609971200 -730910267056853806489446894582890496 3170184630509085698700814317518848 2617398470886727122162753904574464 -560114595334409900456142840130437120 7151017630825364397599468556386304 5659515051391567492836084148076544 -299797464729562708872348913866113024 5933139017329638497997621762719744 601876643241008628145386627792896 -482043701519532360360279674592428032 3176229654950452169077183525945344 2252579916919865257730977654898688 -356925601025116778765806386072780800 5534662502522731124256066437644288 9079365650765430046176315457929216 -294904011805060942694788023174823936 6314612654281396382691263804080128 1566178832589197771252323558883328 -555250202935182723920452359821459456 7873366424732323299779417101828096 774728497127493595348259179593728 -534253284704688436459641864806465536 630256251830471624253846482583552 2429190495785733798315305029599232 -81296751731691445609703811158376448 5123548805356121775179412885471232 4016179307139656688139079872675840 -41414770663437437025812697415942144 20954124328616942938768650797056 1575050603285377455708358181912576 -218020342346004631585622692317888512 5600270657949889039627835959934976 9003059413170119055317084527394816 -913586376639867350581678785622441984 336791939381452853326635264376832 7955665446992010960484863081185280 -830951155987444092045664460711395328 7909968390753817843698458681147392 9782892229223864896753554249744384 -804728817729427635585651258968506368 6869119173688456402989611520884736 8368240132007162508314372252631040 -397968607495361922651848525658193920 3130798815545737919871334559514624 5196512099229620510712869783863296 -856654080399503724251406478644084736 3777305079293867629702511031484416 3149553053764189841759302848610304 -332873893249832531106461197487046656 6611246311619111339866881785856000 8010340850445378465076288746946560 -588400893050565662812567534506606592 7584198181731745695467926204710912 9734787385486281390908882726944768 -971030024356653786172713640348614656 3940350354660450893534561080180736 7568904143109330284520994360000512 -209026731986174027692895129386876928 2372156061603176915544863206801408 4112346455013789911422511859367936 -846902864059838264486835470817296384 9015937913786443619226376078360576 6872867781023917943198812060254208 -808772985265216909700392022790111232 4227654056977703910085625846431744 2097474848096427407848871171194880 -48600293134783723887430594553970688 1152861244276694853465314290565120 7125761881652790362401413955321856 -141366289067294674114201217935605760 2254424518667040080465762518564864 7626100944059723694660318734057472 -337637452147410012655327232219152384 1156207796934165989389360695345152 5801676727826113618929894484344832 -855010960182743987074680124843491328 9670033020265146952373740926664704 4320876986201800667853916014116864 -277145111735977318618295543460265984 5214857407192647974229810547261440 4151241120142933572297382063767552 -903805717932326072173342312751955968 3993931084141385578712126252384256 7423984506562467118965788824829952 -162134218487206515225582955703304192 5258423005908229323068314686062592 7389256322334753671281958291767296 -882705270100098007776962991349563392 9403308301860479371099844865163264 3209850866265474906210987126292480 -341627286455972712852756600075583488 6324325110383330902240822546137088 9936328820327657995113183771099136 -729333169698959570284318807432364032 4068734753703701408261550295220224 2988454759681336063901589892497408 -287122908788485211296987691247206400 4504044086590112457361368132091904 4692979342702799063763921024319488 -783639428179322760991364204543868928 8810738021275159485469891735060480 5290464694917106920034705988386816 -237660834937660252951284988506013696 339900518806563470777643706613760 4244949729740240581322479369191424 -230918870465533751479139009805942784 6233403912565364249694669513949184 2664112714188816059266942686461952 -264269868414013735355651208788312064 3190823448096385516938676083359744 8640719463793309147985961042313216 -118711351929774027671912393918644224 3296633674830760469617821830086656 8574135756898101217089357063651328 -222697468653697358140317581138984960 4250240026271566648041359680733184 9435782843574783800666460059074560 -782733731477972894819330086712377344 8567332613580249568518785070006272 2488025951262960858776274284314624 -94594903635227042185439889934254080 4548836520565934703449574844923904 8703014408099325331029709656424448 -185523257515488721843958576733749248 6282007082566909354012567740088320 4848039500131373170171940284923904 -542086311470746742025718183233585152 973816576114565354455333416730624 820138984628721832112678496108544 -419840408774030624211576142212104192 2617204119548425692746783897157632 5670105385915747080654589830103040 -35511128228807763159790651189493760 8663917297227097315132825520832512 5224086281334596834560250008829952 -316600102892560785460634509337690112 1790666640544514520845664330448896 5453481421173637290262626314485760 -221433081881340426710262912389218304 9260600974687707658655547086864384 5618145705274203093174993465376768 -721049690027334697455328085642575872 2799561100775353175827045496651776 8678080960912557519577904542908416 -16716065887292737680070474983276544 5647775486735525289937624788631552 6952226555937769723327809576763392 -761167097968934080788299032031133696 5655768597724739448395539064815616 2293349174359411234993518220935168 -923002624604166955269815207100153856 5416233309977984172851136967999488 2678924047384712416556135187742720 -821836594072103933719485704910667776 3801925794085313748296267206754304 5376175665166307540434249171599360 -911507992970158436262341265581932544 3707113172708156009193785394200576 7062138393323884151439410264539136 -80515594582395128999520875187273728 1269670873929191067629829587206144 6414419432258231008280124365733888 -556258096448395740459518775982555136 6906654145316158376311619175055360 9119483268994537613826484359659520 -726118854057813266157634249518219264 374572418383203556032038597296128 8059573430362275748466641608900608 -112404415363979272621096180144668672 4815957887152029328156082825068544 3701980872642967963654899990790144 -938460086026814293353920768142999552 4607453646999453091759676251439104 6028780238484894367615300298342400 -857294223444518402300996607442681856 9764740393013256656951602755665920 3779416020750972784406670113505280 -157457539202811582772896946024611840 686597690692176460415420311011328 4584300675809945776488362268426240 -433916198685830857706832056213831680 5062696734995117831330830477164544 1076220353552325147095607952801792 -237957962417817102601018385320902656 1923439143802385275649902793195520 1435064589657671363375681155104768 -747097721584764897089443540670349312 7009749396790899517379818205216768 6394421172164258648988501290254336 -292327166424233195983857706327867392 446578922339010495862703814344704 3230580143683877568200484545626112 -65770199167520148335042891798806528 4694000355067364930885082664665088 8903889097213730829338458219085824 -967681820009370231806774955437195264 7391999530434065531269985446395904 7935829974342233986898520071733248 -733313887174852160559376097964195840 1776509646676929170993523474825216 5456753814924579931174527261736960 -218213820918647433204264429145817088 1784181137215684884561664046792704 1593739590571119043215216219258880 -790976452712661624341881934032404480 3003424629687785549907004017868800 485315024634099516012322193670144 -256000720798641007466230981970624512 6083420940227670157799387478097920 5262988635610212955080122555170816 -542222292992724195109197953865089024 9082337870472080822147622696386560 1020764419294902937489486892761088 -379636217369900540244533024640729088 2071081900612456406848140623216640 6474230020131345824717708822839296 -634630592886551303825280205756301312 6400200116306461536030014339809280 1859224295189405053941510226051072 -573154672452147923895132099480387584 8335157150851904717557117304700928 768982386461519493431986634096640 -113315197552972831664463059886276608 4770363106044403690965744754884608 6136841488893717597478859961270272 -743689130550100493245256830554210304 3889365692851566442576814649901056 2198099812011725390066234679099392 -163209503224317966513389315276406784 9139260090012006038253738961928192 8420624635361996307105129428942848 -36056184824738496644698870260957184 97010092803721323290310479970304 397796393952472690355299367780352 -664015746134268665716199493388468224 9596092013545941806395808832028672 401209230685103054896539606450176 -840307192860945137396067998455824384 999460288120577747978439945617408 4467399673007936498831513199050752 -470534843030078164567536259508994048 4580739574915467772504264897724416 2252449431920708523931021804044288 -404978152488835293802126885829738496 2594694914186201694185511953891328 2336172793857490365251370694475776 -147955023654791534564386710428319744 6671312114595274614259265751220224 710397947656689199339551802261504 -775348684034107963398912151587389440 5285190043798516573312838310821888 3588988410946175532919214284210176 -481126719269464481828409408162365440 3180798595788181379016973927579648 5514637870114411523346438767509504 -482689437650978232657410812995960832 3951933419558935984959363540320256 6387804040183009396259010386067456 -727260172854080393229757714270257152 9514922967069724898363604964737024 3780204441804446949631524012556288 -83517648986657214609509078775365632 397959921239834378007318469017600 8761856493557072787565904597614592 -376915664704973947920544074538418176 2298672067927288997067440349249536 5324096048451342487621685894709248 -710662410287813229655513949116825600 7914778775621047003628307900006400 5388102407783304680683643762376704 -939823545502769184153414962977439744 5624501200983857859161430972956672 7032374742001787034933292376784896 -657152645620155755168221590028550144 3720026364273632058837572436099072 3049846193093927319869036576112640 -339990930174293817849003602545213440 7811449061548440242928120772952064 8836834423569172857889712200744960 -340507028990684818157990413070237696 9602178506212734518578936880824320 3476424827598195479087715222290432 -916263552063568364400693138828558336 7698647681495757891520450950856704 790287392565112095642849892106240 -905439505089851955723035801815089152 8990145865496911972546278810714112 1863194089899628697144179524894720 -458426081903599824711602372844978176 2815313787288181201088087488200704 3159572399826460101683586302738432 -36575274178380844648739372519129088 7136761378215460452354871395352576 7067866847703620037080698958381056 -709952336035085929454323827245842432 5116561485047512510552022083174400 9774422880074842122581328927916032 -638114359492849502484114038461562880 4586223180485407140031603213860864 4668733947906453827036141102039040 -506978444428353383970008711043219456 5024935191018970707393309761863680 9298778275346132276948876977504256 -828069667461014922944279339104993280 7897965745320595853784983927783424 155363805323421324540067650207744 -75220033555419440888792534891888640 8741103207753144848449057799012352 4435895108894703340291453360275456 -593226665673757443315594062119043072 6820888695685810980254361059328000 2453053725689659395295113405005824 -183397349178950892000616890981416960 9332583376613442294330625982726144 2393238128869270946542864167862272 -701305720899544114645509280416923648 9350119227031754559866115012427776 5842244079866991213397776290283520 -75478839531783246357103056242343936 3440903130486621454728666915274752 9406835390288737779835945575514112 -908714259393326946608202469997543424 9209419563723185123057853553180672 4216473005315653121608504125161472 -248935287271359436318151894768812032 7120849642175367201554984104624128 5854835105980978052923270029639680 -495032537762638966506587078938066944 8117485237959391095907777345748992 3414736211954268067201759580258304 -253904122943904840745846402598305792 8463550482444260371143579737784320 9083309595035261021546763964645376 -881673450474841615100374521074417664 6539444902925467025980325195939840 7342743912309661719431076777033728 -421659135056220695608842103879106560 6090182058109415369143204655923200 3708776643084723727189775837298688 -556103199156359180438773398983671808 2902718081786871757547877093605376 2602215121122449103020068578525184 -448207007264637494767726666492936192 949521641815089447600495739797504 2430101336665486569382622888198144 -4272444346262743721785649509957632 9368092389445122885008313295044608 374228917192348791355591175962624 -658281446833693152514179498728488960 8672343346857264091392878219100160 5192979246592872118015346452987904 -557072233511844321012450842244022272 4475436169451534169785771539562496 6732270280886889265236424502804480 -322678743808105449101802665360228352 4629896198364934530586399748390912 1043718013332569670800832601260032 -626979963721079547495671299582197760 9939414571805450048434477899710464 5597531820152275974059072600145920 -503790574648204193227842217620537344 7932576487989190905234582170238976 7796892783794196256219274282008576 -45783728539026803193776416814530560 9224124850139051358973997225082880 3381849786560726133167725842792448 -12178091215162994266064943247785984 8091211485101476025719681238171648 9140117828395151026282562727182336 -839723295817467423908894014401675264 4720913118111233016044028585574400 8539042711008886589489478685949952 -563334453146523732631112139682086912 2257259339407956685049606403260416 4165113743436154483572060985491456 -154582124676334067564796324295475200 5563592905883799709987120558899200 904497499166469270231296700841984 -653553204637423859808270658798878720 6300762266388086272937052023554048 9995298332954757344023439218835456 -452766541511443491671933990719193088 9694000596085163051425581206863872 1645849989895466799705534513545216 -588543131823644511104140998764134400 155980488069113379966369283440640 7551159158659600293232743381204992 -370361343577358933300711545272008704 4275941261674677135678641904025600 3261390734589216527898739268911104 -996994218203228619230748592220143616 748747035773477576036473532055552 6017491913506437795983895883153408 -659902344530851065033983382727426048 7178219415678940039431582738546688 6853635482509464650077132187238400 -932150453055999247600895216876257280 2196577079364341008560045466583040 7794979076581740001646339847880704 -486700326230241377511595711609700352 3122964324250183616427441816338432 5572164686772368721608007997194240 -694262818129069606246672340495630336 8084479304721831391900275318980608 4452485034591436557603604107624448 -877710241908545693062536166799048704 7024371335392776791588971743281152 1611098205592952123382363922104320 -676237384331624887637094798276427776 9912179904325061576957081879052288 6520190600794170704484359324303360 -342384656423994999310914606040350720 960991790460933061049481106030592 5966132280101157714832445073784832 -174455403706597857621600968057552896 3287358455549801641292671536332800 8925540674703620153343061650309120 -460988799339641734173570728063926272 1972466316843357070624094691524608 4036607253046651944264142686257152 -954097210149598385049379410597117952 5890261707444157678344469957574656 2053137976553511653317533130293248 -120876272475366018494673127678672896 9150572128628487158062854124339200 9616069450461273743027920812638208 -199666394796002530056043986878988288 8614150323212548243145905777147904 7223142689313437103933240622710784 -903696913301652177093405800107343872 261243031668881233823251138871296 630428745399469130936035586342912 -797408032041440463680166525124214784 8572139695020758931975398557220864 4174940316147611757222948723752960 -587737559368761870450991477825732608 8693995619696349240846245133549568 7427659260500337518905623637393408 -812383134267298688090392993604829184 9014992948481441938087483765948416 7239388855856758153568247347150848 -937373030992389449976299666775474176 350838459307701839312278612082688 1927533969468825078246476039061504 -818456394792837097624190412646252544 9509023747612636730128132497997824 9941868506393311078726556320792576 -81193018018491573121083299086729216 325146234680194981072162539962368 4673504528627257217851760574464000 -550904656367894295841749338815463424 6377456629530644427331627663753216 9233321116483010889349937240211456 -80766672341566054765423011882336256 3596726580056962081487033997459456 5838943264383068774394660919443456 -303352183871036341794718105825443840 9499771681706609536724857692094464 352099897977371550076007734050816 -727531816765476611753977760075218944 4698116760621875032762200503615488 2428051631947123987767328937869312 -16053674102604262760206880166903808 9082404943540985064969638093258752 7723768564606036746287195214577664 -775739942571131409101280517602410496 952280598128925162482645877129216 148047728127933919037480209743872 -950787251855512657492063988769357824 3134432782793524956944491735941120 1626024667017943058370202794196992 -374937887270320274965168592644997120 7181899000432225144718176706101248 8724874562409957949974602095525888 -387189889642482796811551008618446848 4843063699823743389028216387665920 4957965001132637357690461087596544 -792373350631292135872206653435674624 3382589493889756455209810784157696 9203736106673835883788805095817216 -841386093354936205536369146303873024 7997191860839051742790945026867200 1787021077414688893696841785278464 -373931103725331027217358345333637120 6640236375179646427596997798133760 3772267480380202016431018510123008 -631506280356980894134504816772120576 2810892011453005062715773863067648 1100079214602765186400052039385088 -89401977088321774469371819099947008 8580737593469518617894918530531328 8164547520124452146287551897927680 -311845205364073159292451386682245120 8266479532505890684875453759488000 3730208367194622188005827280896000 -755112167404064354293092843712937984 4996399847090403952043964093169664 1502351321977931998869631151374336 -429352703634450862022794685131522048 8506313158346896158557632871792640 6974741057285739131164500462403584 -653133617375564169931248281482952704 9382204046740856219705716802322432 3851902906041831199864537900646400 -244233985039772745749378962072535040 8282382273032444111630153432432640 4948551059652609599850883691053056 -317280625436594651579314011442774016 3893588100692140296611865928138752 8984355264112438461869463439409152 -921472860221669764875595132579086336 4698841226348269458097800252227584 4972711127889792055656667940913152 -427216354420590632840296310012641280 9215718598254107729257235912589312 5084330788232460286339043603513344 -492695056744342738078436572344090624 3361452761401631516592194768076800 6400443040178277307842641906368512 -118598777271150022900889697287929856 9741594504608959290767510714974208 2773888922542396344379866064355328 -413170524905611901095821373144563712 2367301703234783515953072110043136 8709179798447712472656346508951552 -137837060699536558260852282311573504 6134182784471306435574081783857152 9802166464186483818221225910468608 -179635797185795993738179426369142784 344575850322402531528580249157632 9945464749437432657977838722351104 -136467198126108928522973445198184448 255975202320532660907108542185472 194414007741133399076994730164224 -625290995904923947102389139994050560 7449660131017275322837640530624512 9544837281819217456610229486616576 -706235609543732476596220776006287360 4625830839783572778451006847451136 8007269614540912483845530913341440 -760822990070965864866149553980571648 2744606303410579655331440574332928 9748503509021945190709904749363200 -499544499957291554186905958465142784 2373675340319685584323514103496704 3246075991007998518601455293693952 -415326612480866463417529701563891712 1826027528957063808180300441190400 1264063861488691995886037921431552 -517373019161807752918908093107011584 7665654127029153545875589808783360 8102445063578988103457335129669632 -622204225693384102137445385741795328 7486139319500560746695259697709056 8615157067204903915467692046286848 -666293709061839372425833186909487104 2275218354721370257453822142054400 1263716911023574582100959701237760 -899471567474317590398246357928247296 6625360604620073385684617492692992 5991895727077640282013284303896576 -769732125385214926619329383551205376 6503231727120298013113692574449664 1864656672601925003384130998632448 -767381340393471630736031285411577856 3255168190765313542411370765484032 5499134711274428450851665735581696 -618319967171619385303017206910550016 6012835045741046462630879754715136 6368403923910195466193125314134016 -360781095143713822592916039873331200 4562802099652769464402128968613888 8776547887627136514607795509657600 -915691996396365783672704098247901184 8395294893049117461668882573950976 4741929727236842402926639578087424 -985465186299503818455374177522155520 9476050796751259940565224567865344 7801151503617168647979758109327360 -324264666161250659057678373712035840 7765134713150881481632059419000832 1189188925083432574971300534026240 -774820757104921172270580161528725504 11825201225768808332590554546176 7153356467864247155203095234871296 -867095117987019302439736015371370496 3730065644615438443707837337042944 2531982341911133522589521505419264 -332414916381265065540450839433314304 2701333627135448287307346066014208 9040741882937012303935130591821824 -448615561709896920982280582197149696 1050865947342080234061713018716160 521708472142672098327505496178688 -157837880249263427305369064062320640 4434811051469053938149203722108928 5957397561420222204448134498615296 -931445713637570628286587966320541696 5467281931770562003777797369102336 4764929845993589682677432415420416 -427656229347681886419235359919439872 1079063933367102612456995781869568 3136759345467440692750468035641344 -730273493326747865020650334766235648 4464744525318189905127324065464320 2016590723300427968760189735141376 -656996137051254553598005305954795520 3247109018326765235346501556764672 8892008220751560006646432394117120 -586932264325805264304328689603051520 2512605963851635586500615544504320 5445446940260154602744494405189632 -973320528022082073392861584654598144 6576404331552875073197381875924992 1333975741778233866154149853265920 -969234394245540769864148879943925760 6348429735166176151685538376581120 147730237038867549279736888819712 -573231795603122755522970872191123456 887986055131580364189522483740672 3063194314255177795569563197243392 -699352349110450494073856361536421888 4218517587523515869067001089490944 5448234906197762436807595369955328 -226283084569092672045322268175237120 9954245854698935246500650056417280 6257624376344551465196288800194560 -422147693383692560114331348226801664 4879574981940096556268701792337920 8297265729686073436587182975352832 -310932474825607105309559420262285312 9509506878216141173162760449556480 3027822800138605496303917620789248 -948811853073324223421748740607705088 4860145360193062777507071098093568 394549744787722368945827845505024 -807986969284999240706086035181797376 1251804571864887522424919112548352 8489435569410516629024618240278528 -534771123314138286426380212377747456 618884364121227296763118098579456 5997213522710308214577797051449344 -345762557251275480142415729036099584 5971781687899342735867862157623296 9497421107594758111798701942898688 -128308070615376504519023730544869376 3963664931251752948856321206124544 8138186104406257647243417157107712 -553741644959904005871504495308963840 8656699401137513637888262622150656 8731152881220637152690037025931264 -393887302494594862460429907357859840 6525233481879728204061836205621248 1893960248394286987344936788033536 -257209212747042888919562529705820160 4474472335137775015863857610489856 7187615789860664625269416277311488 -1394569731513773048240563940229120 8526850591150946319887233613561856 3275449628629809465952778856693760 -22597326621106799192741330930368512 1544180874054520803189302335897600 7551719871420392494881672402042880 -98779092462719409329976481698283520 4072792925093866027666235354775552 6396832114190410093514632124694528 -455823478302092831593805345342881792 3158607308296213016195510004875264 5659426379964127805297062817300480 -556978204430580878880072461671464960 9775018154803507756982751480250368 6393616051188708610894261011873792 -540047033705672571336006927554445312 8954984604489731429953046954639360 4987010739930572813241808234479616 -35119065505693990602693037137068032 23847618224719464558042556661760 3190747321206122710808427703042048 -484827070279509076331619269700747264 1054724967258643870792358937231360 7848852762235653114023596259278848 -777245190122051751326668823463985152 8624565476259507733109771054612480 61734352818476448356118210543616 -758956666126422898713864341173567488 2437556042415493031096435991379968 67850811473206370321567255101440 -512391738131925029189265235839549440 7333869231079434435849945989775360 6790678414479916546276113841651712 -639006816471058017067240028997943296 9175123044053665509118706779684864 5643627279243031420566173936254976 -72179920649380499929878083066134528 5917578468574459897798533027201024 1242528836814803447095741632217088 -284106174985464567318409393731534848 8626706463535247844045902474903552 5296413837768747199507402804166656 -706114401276353620202683497313206272 7657312295641621512898247040958464 6742537789947114915499232454508544 -69680294730439027330620127279316992 3570217225604531860870698691985408 20413838645394616906880923992064 -486150113911150700132436252905439232 3356811617275472448218845182689280 8204333495507924014613612621463552 -621909763022837010604963461066653696 1702483414752135133440490019487744 7491100099227181022684331942871040 -566876153396627132003982511555215360 3658502255252323164732353280999424 6089416905598300251156555138859008 -608073450649461605678718710764797952 5817242423813832608395772821504 7926111218344008592391724117000192 -925479173062212310248669335389208576 4497652487710035826779479087251456 6743594461834650094789862621184000 -492604606769728883369917216974700544 7863076600441489380769667563388928 16437678022034125618302418944000 -788534469225561059679630275643441152 9129351587812653888046238793728000 2641666374307604584936458216800256 -690589795681650776213587651324805120 2084197634617977637241928391065600 6138268574786852243838131083673600 -340797932339831000401685374383947776 1429663570535680034928025019613184 3278888331220886727366712892588032 -759203245892280630670464361351348224 6375876186197064583005463128309760 2611118971637843007889534856724480 -143229592114503325259276217581830144 497512765905399058315681799864320 2567186526410762665400179525419008 -403755155502929984676288663323148288 721300481940801586280190735024128 3300411905860279106371174652706816 -541500466382732465651322963540049920 7208079852751933539577108300300288 1210758387400530575957312443252736 -730308976574484185480531346242666496 6228028610401864463821254938329088 1991216651378654715226110782603264 -987561602427770439078046955917541376 4098547499433260811651458055274496 5245316044790419450002555852029952 -590124923776427310909532500299612160 2735631889110463189539418932248576 9564915270030086441751566893449216 -160985117958535349089780526508670976 1161493988679387751838183053066240 4088055831103991408097815164878848 -943332182108102291133014261681356800 6542821363263055902840507596800000 3375413311622514551280099416604672 -586999870396264212760508650341007360 5064736547747796754080700632662016 7095669967690063821817315692904448 -93790813026206430074014660567236608 3880781889299769646955791181152256 1172717584599081789460421453807616 -231908721860162448790860782031077376 9650938192838098939950499748642816 8141702296958282319746257374937088 -343165971679437107002177551691939840 2043349407375166121224903680065536 2978340698653691001661983580749824 -105289306393869717217470213330567168 4541695790613886360803171528343552 9336954211329670791578976226639872 -553855224690881169544809895583285248 4743340346439181321615476514619392 5960750576687790858811889760075776 -374045099349391162949185082010632192 8674703323189177601917281915371520 1334044574018898196922484450656256 -361427141967436088113803051015340032 4010930660018028796261079462182912 6694653255446630308298471493337088 -551498298528613841143266126248017920 7191864032879568999109372686630912 3191313399021920442590168633835520 -744245228402913512722142046741069824 4501096387985696749497024734298112 3394120641386450874081682330222592 -288176128807204392585370523452571648 8696586983930060747535981536608256 3380275042867003547677210508787712 -483276781915031488728099905846902784 7180582001692580172606536129970176 8290936532720878972090489849774080 -122543682866980825978715788007178240 5713923144956987069700846630469632 2611129344035922112784319465390080 -209355383144820552157923987087687680 9222452022036389077516378831847424 977857915548965203670235839725568 -913833749086589417820135824954490880 5679022043431499062785443312435200 5897181583158082986417094603571200 -568136059505848014470117419324014592 8928387361498782901770684261728256 2726347173964891861880863966887936 -654889662353462104244659741276504064 7524060003596106756845677028835328 2116319188434052523960645116231680 -984880748071952054568001922777743360 3413027517120862452070769095606272 7771760271069351517913087647678464 -767180110753443883108983730557943808 244997293354960128869620273643520 2623473444449766570121604049666048 -443265254932491348383714095728164864 907077755659564423135791880863744 5308432684221182453211808720224256 -420655725736283085000508174774566912 5984293457171595430212255258509312 4650237973463615321639092903477248 -911287049664128081763791158170877952 8928460852683818149702105049333760 2020071924050979602593235689537536 -71855295925617307489765054459412480 3662846296977844120874420656930816 545935343276550666726439481507840 -308841202000466484054029472968474624 7704867281053084831497441681342464 3942243714626037081588734898470912 -495902874822303745981361771201429504 5172745139307467347405134578581504 1665398623636071051271402929782784 -90564781533349720130096207482585088 2394675702327912110113248793067520 5208111334467203137379161081905152 -569569663046200246050548351428984832 7883908707148726423478635700682752 4744861132625707381778418442960896 -996157428622121180766733875627950080 854028693978920884142666984456192 8722964781851743902169682321342464 -845981786984570264566342072565497856 9749016616374827927883625892151296 5163812507898953352246109738631168 -437317293214844246849614100230569984 2183899050402538602924789066629120 8390283571357034574845209961562112 -59055463112032606043095625164128256 970281823115128814177260245352448 9831768198493023260147251280871424 -901267652118619513952535933192503296 656849262658240374752632671043584 9011359847005682430824368138354688 -547469206499417262523240104383741952 7284332705468780339899007705808896 4210331112240278929608908906430464 -904154525480002311645944955487125504 6167829477909342530143115731271680 7391658400881058944884504268898304 -730107156214922744461245192328970240 4003326176531331940106033665409024 8845381281149608476817681197039616 -953158647319861641462992065659928576 4199533154207109131184386225471488 2932495315289218514608363203985408 -510762775915098026170772961233993728 5437040656090895475155974838288384 3543151927846492686853308871081984 -387350867834489964616783939781001216 3466665840672352815699209645719552 6220478181119326111643273948823552 -305534394339653524330254362296188928 4003429297515250296714037607530496 7888565585675556256122237913923584 -760522920513949634410232363708579840 2711345505072874208520717629128704 7524045810397983271496877799899136 -285169204836926748574427784245411840 192635105230735463516933139202048 9537028240362360436269056532676608 -597921493657546946549468718514044928 8230002299640704041711608942034944 8433976666311227360454415271067648 -886667902677289159459539878754123776 9165186775633178386515557011685376 6266362043948678967013646182383616 -795907608821346916520442847127666688 1368485263825599861497798600949760 6279934152351939416478404533288960 -386723604894752834979794913438203904 7662011607915280390104732632350720 6639142180191394952777470157258752 -23359848942409298881865713922867200 3990884413833122764185704559804416 9083633857295774477919676891398144 -515916922589946228684645464870486016 7558809799996208019294443471372288 9572143475553318573930466125021184 -166473701179765575982993037607305216 9488270458756296073175446415474688 9299466166626947545167182226784256 -984590862680388847704179041210728448 9632347024445706017026052750049280 3234183251543995422822994632769536 -7857402531811270648353066011590656 5127773873477214633212560120217600 1883205052587973679435960815714304 -689014230314950426134969286674874368 5837489195157717653308972623462400 4444670416215185192624551251410944 -319114450380505933338430063343828992 586463669403307205554476070993920 1096344910976242489043388637118464 -201617271226598539637497771858067456 8058795960440436729216235856723968 5624075483266637161543557338628096 -256314279730389694046350997077360640 9444487496518409431402951269679104 6852701495963804007930052579688448 -135704244731681913167331225533153280 8453975580312841893815525723602944 6975777097940339708434308252303360 -232962605433679598000307121988567040 887717887180630688107564552421376 1766380548202009227485120099778560 -497107457041854630621428242593087488 7812703102766725505160646901104640 4046437612825625151983763436077056 -197127932569525376924603007528599552 3259735639551076635645987585523712 6524892719195889420711702877437952 -517618148821890326949319803626586112 1571117843534449457011231045976064 4521101165945176539765640796307456 -756754078741940962757601433174933504 436558070410922974164415447826432 14098699792219966709521591566336 -410231143830555248788337892211556352 6208710656848222673207172972675072 8165475286604518804243116434915328 -374540939031017762417031787478777856 4443318533132465353940184684560384 9254681005777847064090093278986240 -46551413483508177609925001589293056 9734556518010223002403177406398464 5905404635939310647906815963037696 -438356739996498456613171099003256832 1983506397388959285985927323713536 4533020698399886600189632021790720 -33787830988324508023282243662249984 7863402605007501007739268099997696 8306538829030931250754225545674752 -425983212069597940011757433994084352 266108018793709606577153587019776 9041298716589940232945495019880448 -605626765057581751654113250174304256 292118686217834420204712149123072 9727127747187920315827719361265664 -121852298337462534490442775354408960 852848130131819508599948199329792 8860952701205727638068505151012864 -30752071769490730001043417569689600 5661470185387898643679510530097152 179019268923227098531860018364416 -355648541323892142358637109416296448 7020777491614204816075189792014336 9792789932243947595220294540722176 -346952174685055086572799668275642368 4220671872993446849662962005704704 8717521640596685310767284575272960 -536504298167809374555903410315460608 837955495332165333934898547785728 8097272282332655346831244503547904 -396622349301671027078136092642246656 841672960898097104854160366370816 9252198927338241300311917503447040 -511174678510013930345690213510021120 3628375506097101190409551934914560 5271254918841039375928385087733760 -609071269642975551945109445592219648 3215704680081453820738090794221568 998296643768963814845972740046848 -337985760231644707290031777329971200 9298883654404672465890526881644544 5280432448209930474956887819288576 -43239720001570430550656388079550464 619229854818694956405909446721536 7828370585596841637427759701557248 -974371116046346181633279909548785664 8360894091876152961744308587724800 9596807216639002724675451495645184 -797666580230867180404756088300240896 4552593309845898382720774430523392 8224149743041211905829163036049408 -600139316339707259777441910803660800 171995036531773617758948818944000 992435022586675481055836220948480 -122007616737661249668833489501290496 5273766894199324237236922698694656 6161914755834646182636801048444928 -466569482002843624367005022306697216 8812208624656367262221843558301696 4779199630184952616511108447993856 -535525416719479026886697690534510592 5346243264296973701230826245586944 6907291569805596013763643289108480 -594022476146416882414093004739444736 5078031723021420798668714312466432 4846369491970623674243862132424704 -881708989082988828670212374548971520 4832696876765793121945746048811008 3111026826947885699495411952123904 -808311630049120395556042313977298944 4790633609643528979955721655287808 2346630637009636101110935794483200 -370033586625567554167938032915709952 4266555534719852272122613848866816 7064913521581017603230929396957184 -551039672067496536888710176014598144 5076873948732497269885055132499968 2443709136876033270040488778399744 -699591161858750112267023963475935232 6607729346939604363142386012913664 1765477126296519632912434314870784 -114288579305516358982870029733724160 9864761060662844498179188223639552 5708226211581587169112934597001216 -11323733833908722804253063232094208 4266178759457727014233337210339328 7209771120029753687900447578259456 -251864956204588499008817124211687424 820032161064597639935759277359104 9423996643688845693824815662628864 -827866394395930351221444647264976896 6432761719176397676896052194574336 8779407149639592449454385699749888 -12347487864428429583488035286155264 1108333892794315872471447882432512 2317005192117483675921534353932288 -856774923994199243731470687359991808 9489564585054653734041654036267008 8597250598625630879195497779691520 -360678508819099271014125154263367680 3486255141278999665966143135285248 9746126338365722899812288219316224 -379582013108480628985824963341582336 5555715366771128646428569540493312 1927014132386050707276712344813568 -729104262163923287054328959986565120 20752318679323301665436849930240 7043803004954242204579991729995776 -696773943368221513758294373648302080 5257691655447161969563383315300352 9400710191030612295651801258000384 -128341020169445413767990791507017728 863628850950913494412894358470656 5440126161971767961743910152175616 -214289868388045508116479233079902208 1747010060123879213234254556168192 2362418806517773704435104313507840 -136362286359304439155065349442895872 3605398973601300751637536118407168 3243897609612820165118428358639616 -511785531003151703183556382396776448 8162884358309233492063863938482176 1432053603447667577435739442380800 -886993162280707114077266910371643392 6910727099399441021435353086558208 7537256290048995032755430750158848 -650582630361402567150831504141058048 8793709698237926929859670785916928 6192133868236074748431388689563648 -600279655993837324069226765713670144 2055887456921412818701075215286272 2123920366889829237859386948321280 -509991516469174217304584986537492480 7562968068273019211952537164840960 8343460083702393546208736658325504 -478266861628295758515261046437969920 5609526762625175440122624249692160 9025451218414776579641143375953920 -916262291499089926895444932870275072 4339966881459856626818989904887808 5958213589033437560537193713238016 -745164178322506853787139139077931008 8544965905118970435545514316398592 1032643051496304874356549034704896 -359573101743945283992201415035453440 6256839599563463963931740584542208 3581334951271853061268032972652544 -182043214626883898289845410813968384 6380547001563663293738433491501056 2395088999832621203915820071124992 -158040582075126885698036704259080192 615976672370387874895366511919104 5109734201310444814036259466903552 -113319329188662687183912131515908096 6641328101833088754282384324558848 8855057609505831415354776948310016 -320646376579032312086584113076633600 3864870767329964688168431090925568 2274188316163148837738030559133696 -100073038308984328594750704856334336 9488396033109341210862920969224192 1094794726773897490470342800441344 -403280334211905572157544415159648256 6356124119669097616232164832051200 2682381133895540370487079419772928 -870318914203127632319325075360710656 6140829438793038895500830659575808 4944250997533077454351308305727488 -114702786032693198467526521574653952 1807364757532673201792001511522304 9790862051752043355175160207376384 -518648941904605259370427044551720960 1395996921295231393292589759201280 7979796574674678968008892181643264 -434040928244376699880513111565795328 8126399838503473866762475987271680 7569437462622983058324309411889152 -231879893206689207491255382426255360 4368247986568215649799494384484352 8068448017947953771234120278474752 -223549769419729105399152290513813504 2789658939913847857799067860992000 4443797210551162546875492022091776 -353047876716767110882612223726845952 9859080821104693881867479394811904 8830142477169555904944845973618688 -489621831428205725688913777146200064 1940327719207129608016843868471296 6043173653620854529786033670717440 -294110336463163004583715718509363200 5641945397319010575800322559574016 1213918349987841977923921537662976 -878581143917284975696228474945536000 2263757175409574964698063948480512 2460863484018590104357350466912256 -548274020323917569205575919842885632 2049615074190268829282616628740096 9163678025923729598096919572250624 -121082039518944491595140266884857856 2356598501608543900605405303144448 9225598529820525952054168064622592 -102896647476951504765513662344462336 184390942232393440679125384691712 8228183996637989520466568460369920 -231728139952842559485847776721371136 1003412520189111426913460979499008 1713596572067221959652550943703040 -889833173759927100213032216539693056 7830821294984478263307751693221888 4707161757177177763761358091845632 -979439454580805951345370973956210688 1140165865985803093659496365424640 7938458043451017381583333198135296 -241451752468091554033403665942839296 3872051295323613940718137889521664 4175001110843100970747394470707200 -813335944347601798275682165703311360 5468718226489838237200847455911936 2549434387054149598101098201088000 -391682971337302302222768178961842176 3172558021806818989905949243736064 7046762325464199167450535304364032 -276937063875525521034860257286815744 2711078365607759138076837118214144 6925743836418851878687124177813504 -444241788393375550223132728194236416 7686622406165751980494548952416256 8426255223302004441113052410019840 -136329213969315994077483097353355264 9445674357209388819951879907704832 5105609271517553333557301579087872 -46817341937749155238530284760596480 2869721163981527953922914317762560 211542389275869901043727599665152 -19721874064395517273322149029871616 8560189812842677915166040026775552 7778808519555353715396288794591232 -363717473421744624514324546916974592 8641790626678877224185602229927936 8867735420498419859043662939815936 -79081690314729021501531196399550464 2580038123525565915966519134650368 1516053241554032372879387101495296 -766803596780292609255448881240473600 8110614481228220096978963239272448 4396729899520149770231067994750976 -322584435469716533862156469213855744 702749315745369868120794968621056 8804272245018091087936840877998080 -469211968544612645161003321246351360 1076201760820599654946061730971648 1383448899952602705033391528476672 -261756258551458293743453009749213184 584346372794503497141210822213632 7188948274351651535846625203191808 -407527409530224069403086509089751040 1292848217320978168767249211457536 2797535599440637292117390444724224 -482004612640138617386175067068563456 5918986594866701681318474306027520 2306228599055583797358153596665856 -872859560020758133423226111829999616 5879019560234292664643089896308736 4679693453033598473326559953420288 -295407753295003753170027732271104000 6407299741849838145608415077990400 384725093961832763472453444829184 -699612931835039433498879323961032704 2346446699510968580890531108749312 6267713345245430046782509927104512 -746698132605788900554614017338900480 8186313924991111612751741410344960 3942739640020249883462897525325824 -139159434181297339875659144193114112 2976742293524937171585124297342976 1009246172443114415540773909954560 -503633059161750209687121409949564928 981923720830193523104143718219776 8450199984988551968182505100541952 -464873528039832335702029438994612224 3292808717979212844707984957243392 3236194140608425561635631201779712 -627979463922038246756276738935750656 6924965500724983600244419966533632 4285484965176962214695056323903488 -234478052025158372459297574980943872 6904675273106511807951965985439744 6134990071481126508667622622494720 -766016727238784799632085991500546048 1416352567216835100564978139136000 4558769820144554334743078476185600 -19438460320881488073549168076914688 3001217906390327171402246318456832 6061083373423852906018592264290304 -544694534843952174035705788568174592 395330749919346507857453182353408 3256221358123178610014283292999680 -925381351872938666754374837884420096 6836745040474560328284546728460288 7246185834364421839374510351974400 -754641236987033755322458550116024320 1136445893695921241062656610140160 7794853307230572866719823471575040 -913690738332702819219153398758637568 895334440876934991774453357084672 9075121197866454900701683647512576 -915767912048460624351825508159193088 6227143607752854065703553039597568 478716921323003967555494479921152 -154872677152834543976263218561548288 5596155374525765110045456872767488 2484966297426681674034004147306496 -401361633669631079850778191630172160 6338025582401432393451648759889920 4231694509117198510333374171709440 -50252033930392268858968480010993664 527654116569467990014539392352256 8410384685315132760655572118798336 -729244234690298379685858633211445248 4071496295123971579419041384628224 9425747473020957993444954379124736 -326718628197142126125029661683482624 1304276739684201960545911610277888 6855306543731341350364060730785792 -320340355553048031513693763015802880 4886994932328304186779157802254336 351852330579237576931292185886720 -521231691674012863485631567430156288 3355479659315048275129932997197824 2776640304877188020739659284873216 -173224042243841326130382187316379648 9604278003740171389127137291141120 9558633492159707052575033393152 -749510006136796974326326944105234432 5844493964544791112707443712327680 7407348576572391954067501803896832 -283897134777629611927626161024139264 421906325482503361575495021887488 5063602622183001838589185030619136 -206645978622522793755255343683731456 1165592814725943954485387974410240 745338081201124418142419283869696 -128668791386470226757199997953900544 334351025262536898856259134947328 9231642958662071293467104475348992 -229451228568141377180076185942491136 1078298211279670471589329033494528 6344070367350708191530851541975040 -678582139948733106039769312297746432 4547522205077898105969973445787648 7242113964022379821316059942617088 -561362045206522753552223134533287936 547371634943412813219363563765760 9550620181847571095063199200837632 -276551501475604256400784546129248256 3846145940941182777701804003033088 2075338538888464970999063577100288 -129662607100229023824416925192028160 4717568743697685524651213317996544 5459976372820695438912682016636928 -497303261056687370029187189566341120 9570642861690205786036396412108800 4557212643749134921254306999959552 -650913490256206841767279408913055744 2373564571630851301753545442721792 4352410375702123168202411321851904 -504549237225727812092808631043489792 8004375669288331421179944336621568 9713862402816129695130770743492608 -976997190456576222410028887167729664 4093230319319092390230738952257536 4434513893813008075108458520641536 -643683860733072200038958885983223808 6318585275038357958864775759790080 8852118525731934205530838736568320 -404047298861174431270338184777564160 9346217450993158715370096346267648 715392484939387123600336831381504 -129885720197375150554414307921100800 4418660063457236896053606802784256 1944195743794471222300195256532992 -731382948916845755353665752482709504 9427862175366089020017766786138112 4502363406627172369812968435613696 -456731749952547254485720664622759936 4018586436074791263048199797997568 4746667081432755684617077190033408 -639201365296750819389439399593771008 728160814070898591455784600600576 7187341699644030953016907370856448 -555092423226968417509649899157716992 2472699128314896671998877146021888 1708785054308168704598129191682048 -366153840667285553848876142262484992 1958701143394198217845526642032640 3880956954161350536902083944120320 -149730333590454547748700937514909696 7241993917438147866050185473818624 5167446372344952398537344642187264 -55281841024641639495296432786636800 1872384793138047117621298068455424 1434264635686591563878619376779264 -2755482018699456762473269394669568 6534619423751354599958771537018880 8597820012152465058243737303384064 -800971921225859433833874523156381696 867571135798356772479345136500736 3039168323086544281011169076969472 -956583093046881764436434932897677312 8028871813637280173611053442138112 4266778826612667573359586702262272 -207301884349252102374812361148071936 7417162560252704824172996594761728 385901988961257758637855093030912 -166108909043535847234239510920298496 930366068843134680905781314846720 7146463371327179324031832694980608 -978413333852659343429649268704542720 2970727893635761122059638661971968 1299013025883395830902442862575616 -790006314984035386327710124688277504 1354371781341260476984402968051712 7174130644311875868514530166308864 -10710203950867452691959477604188160 9731962272474364370781254595903488 5733880240730272646103619652812800 -862935863569126895249513056401620992 8460553976470854441586576781737984 1308875605068312414038538433069056 -274289494301184552796775750402310144 7312974823810890269324180851785728 3621579290559678773013665116323840 -151548968471875929646863470380974080 2900907096404846523450574373912576 4251859059580840632920945146724352 -659789392009377864139129946720174080 5536340519152740066431283197116416 6814317434516004567465660258451456 -328559070010018716949010874307182592 7932137792848779849533290962747392 7362060989329838057405283412475904 -75475630778091926380799571794067456 9964277022321481822289083026636800 1720735311064443882358334675746816 -528627435327065694359005222662045696 1121249985580614835154396813197312 9100511010293725507099198402592768 -314734896891327987509678028391186432 2336665455662337540939633917952000 7135498848095522603688855060086784 -393046141896105291458425909736898560 7339941208172902228864042350411776 9833037588772346049947844695031808 -103114431099554656205771028159266816 916472585586329300446708888502272 1753290214884603829747396152131584 -69765691887887499313027421587898368 118667399165371929159979237376000 3240588354377826878358854901432320 -262126981456599247829058680784945152 8894861130664730610022913966866432 2647269988072634397725481876062208 -923860768573416711852955946232840192 6417220888335743026631523489021952 8730009324705126825672188528427008 -738143867189265029017303492318986240 7290759831838133205989514819928064 8492951315262678913569397680373760 -696195416124332610667351454473256960 3701407730512423987070517699936256 43582469061488698164847069626368 -885322754756758149196828202722394112 6683063898360880699831930924826624 8300697882127329498534622680580096 -106350394490942314692398278156222464 5720347340873616836789658250641408 9521062127742910129975633492574208 -509954227027937960667628039867203584 9502748271714960260036933332238336 3570712883878950403273339548205056 -148139631836735161872589810353307648 1229779453470334777874702944698368 7893922969089636629868054384214016 -539087620556441986081282408467922944 2027610280071498654114662842368000 8877239993680596842891934320033792 -674025075450225160807654020693884928 9144215777908240479253199635611648 7761869128960527365281923165323264 -430957253305699024787058005823717376 687302074687291562386575312551936 5219535432721533188327431972323328 -146409393539908302504334406669303808 3675895920383451193366478281768960 5790191214701181203233724382052352 -558541547261591062581928015444312064 7098647739740817496627234469838848 6938053956650791085726665749299200 -846742820094795868366883976281849856 1671121688385511690362868260143104 5305003624946459448397861897633792 -965988041967361971330443306948624384 5210328967454740704636081608327168 2045995865060310677972249154158592 -117550503344109560967220511964659712 646686986809012060796079556263936 7768619323338341017825647540568064 -687628142551532508683188782543929344 894155161874024846741876133330944 2257404389131018635543745304461312 -687387171357083686442103081504079872 6466951444513695734579010643951616 9160542240540575696526998144811008 -48467965399919479123695472128032768 4022220719592953145348406258958336 9306497713586676982762442581868544 -886314452364996593506092738519498752 835409572076292161352256937000960 7602023503712042352852740467589120 -234208023225701936929712423688994816 8713485804355805612907645039017984 1819723258352415454212365041532928 -60549338318673242586039362376433664 2914877219268626230401766552240128 8134204813563368092837780113063936 -33844358541798792727209807259369472 4691286890330162669646147022225408 2427844289371779541989635230007296 -32944115835851226912354024720171008 5938163388566584005137191896350720 1766872250590279036088937353314304 -966301195131249751063104661913337856 246505025340011261702494562025472 9620057033491424932171534447935488 -558814160670178446394474869251112960 3529346437534195103446758944931840 3854650433844049472924282588758016 -90912207991022784922949458121981952 7896266245499478879209090128543744 3266867100764965459104002945843200 -829067989913305112621969746054610944 4346720888928688878361982099521536 5821976650963934124335207083409408 -400652388747998015232872336018374656 8858570887023185704686919880802304 6349867176591125967977329455005696 -152367841835262157350514842788691968 3647277859577445397441925118689280 1621078514979661531339523392274432 -698342039219474431660831113075490816 1797135827686703481022404557275136 229126710874120097613188549312512 -540937513659265348342670179252043776 3187888378516456068406982991675392 3331297321945425994957647694004224 -23355189778006764411547571237945344 9166023996346618144899828274954240 686420400040292262426189433405440 -420801870563397198214467725320781824 2468768265874245544198341325225984 731686038921407134528694845964288 -691565451351048858591200450948628480 6745680027178928845024593184817152 4528101712326307294124142663565312 -879662804761665546503608288501825536 4713837161711914585428223204524032 6079313227730173946023824127426560 -755178140117598274381066785077067776 7941410843043054772101796805476352 5359941200359221177806650945306624 -564145267205320016041710974809407488 4081834298899659093286259429212160 398977456702433792672711852425216 -724699541013340341763175668636450816 8512190776393036164240260120707072 8775085034752632654599730677940224 -977174217487442540017419945404006400 1938363971984480593146456685150208 5406039347358200944868460492488704 -29941068474333819630818974739988480 8478097485355518250070855097778176 7239118626277524473208970147790848 -668258678776867095586180885829910528 1092781964974481205984442900807680 7722115917984029349370480709074944 -620270193847455297852325445291212800 7874580324010928643246482815713280 7426993750466976193073556748238848 -826301145385692817160127621669847040 5951908987358398467645814865920 7339064336713615920573505268088832 -628941102222795312884964638242897920 5304746708979469929990164706230272 7631065613655644436735532443107328 -876078461830782776039970860913655808 7883714929887369700905678624784384 7925081116821355369793979651457024 -189025637479592555974488915823296512 5367821987643204863489727006769152 2748334367052830995122544590192640 -470878479674552736682136443673378816 5014107973108497744702638756200448 8671458717182248084903707344371712 -23586181833277017396196450515288064 8737671010817921264364998096846848 3329984969784511077322805928263680 -385848885472739539250942501023907840 8431730737519577059634699906842624 8959551262677551973445941457846272 -372019287803921450025375366756958208 4214783030591049697019677057744896 5541105530663175470524521871572992 -406801098887216638716669208444272640 9175813202566340186717423539322880 9114812149723201750018614422929408 -66887724492366081681569779497828352 7517227195142642054508667432075264 3428046539842594693605275369209856 -53137660687594001724052623432089600 825912092440765355264050494177280 4967147689796971184479138608054272 -102073444191360400863209346010447872 7216077697859603883496804150411264 4291186420806428333318177332133888 -339881484678754279558322691363569664 2803418277032847058457118707286016 6430962081027081630608978262097920 -469488068279076959031322052986404864 4948743915886531618265088529530880 9540931723369719318125137629282304 -385187847482914424673610208607469568 931373036909531624343061546401792 1036433556890792406404997222236160 -776393342669464555915045018668105728 1263203068328154740151970019934208 2306004918770721676892027662368768 -455623756583322548388756169338912768 3288150132483615363018301886169088 7634540754001997020830012218015744 -28999658338385953991625482793123840 6674734565412355374500663663788032 8730402253440086260301441655635968 -28955073903216823875699401149120512 858578153341805539761105257103360 8443966818513040129751847173881856 -979585808124593230075853513775120384 6913931560414280207690637173063680 8772497130554623161000339613679616 -115351914024303794025192221615063040 3003202040853191855573541448581120 4107204709682782900819272652554240 -320979604246531004839521545395109888 1402764248481132665998088226209792 1139678409574567090111848464252928 -287358544218244374290107644774449152 2862325665626295847122781484351488 5206211189516317564719481720143872 -180893544543931444956187204645814272 2261091111924921152496648054636544 5216273769080598148916641024442368 -212629472513493810169228239854108672 8451355272472203221008194887221248 4634250328502475820728713006284800 -592818141748840624551782586595147776 2219106681124018541699367056703488 2484032335456311036534312144994304 -261946677891596777219984905998434304 5527930675198404229267087605891072 4360451850412877878230763662475264 -190443574183945944267548446127292416 5027052476866337141495087570616320 575419147882548539379085922533376 -704776565374996511744578723657023488 284729754878688888985219057582080 9404609358991680710358833855201280 -979013295380233405528215981586907136 1878276664294330846620342751854592 8290925796506043629074692068868096 -795730364488848948520919650015379456 9241880989875780105747769845612544 3412292620688570182577339372666880 -746780321924354272992743075635789824 5204271627206850678779024397828096 3236318032567991613772531744374784 -191270159204479706219324647837532160 792563730992153302585174615130112 8377007552130640068231348212465664 -430074541284472784890037231606038528 1949640326502702396138715715993600 6860778751469781454576633212043264 -557226310057745277899473692263448576 8152789391968587663621029514706944 2661211294706564069297261044039680 -356829912511532927725180119976771584 8881341420095652243915181219905536 8690505715127341758856544785530880 -484882086846782222518089940421574656 5535250365986159363617603717169152 5013873344744413484328280110661632 -204948337627115428191172247378984960 4770616959524977610171648298713088 3962047736944936230919153234477056 -56318995179260578092279112533016576 9489792453008730632070527805554688 5298500575842206232766675291209728 -945648495519545170596452149592326144 8974492933576850128077299843596288 5406678679919353664277285854773248 -641489811576824706922692069023547392 6763223101573379983972663251959808 9443579646003401438456827869134848 -79015664085983803701706122426580992 7051192884948527468284473161809920 5624310337308961453549409345208320 -233144685137034886516255829887287296 5052021767812757186604064644792320 6728734207706534143431740686860288 -997971651695919179626850936239947776 1469114377020969381891463907901440 9428865849163003311683012606820352 -842175125322345141405250008171675648 9883224548579943639305982920622080 4269614278290135251996717833256960 -618393061287962653874162890325360640 4762454996186737008852249801129984 388188638426145388396981130362880 -322970744545181737072397154974171136 749181443495301175302319281012736 4989294908695014539463365939429376 -213855712143312828113943452295626752 9823961164857257171169714867535872 6170707598169116285560636846374912 -563396103912939489525154953193062400 5341751834943072359725628016033792 9425447936018042061768574181048320 -158664541025328606160037797980798976 4606916981013325947860028825272320 1358701000536306931277075950075904 -347400713436307608918274857452437504 3681680995603314173247771014856704 5770519622394081854689976613076992 -670073022536449019814155245448069120 3706116816531928698833268121796608 918359984897089261750202226704384 -545922589252229908181011265159692288 3057052112618453963336913191436288 6734324965320624140282345021243392 -56585393811927578765495480625397760 2471995221699763433530115219259392 6557472082758052690878467393191936 -894383269906951926635773620071170048 8873463877930570768363800131272704 8397644466302835562288307033341952 -102241662482085213462064708488003584 7065648556151824926292374324248576 5273730849336721111904516527095808 -514197536153381784815153116602171392 5140144303315634544128279107862528 1371186824119415333579894846128128 -65946390577145306593250994953388032 120458950618933857714705639931904 2519045201872151857325250986377216 -103491080633595559216576194261549056 7141196782329054675661993776513024 9238418978904989338577918947753984 -126592836514558482694684437412577280 2607969094410139510317708512067584 9048004942123202997676561185898496 -882481802150554308357369889673969664 4753515565979070682579037138714624 2638623596921058413096531092570112 -822014062606252930277457790505058304 9940668924637495939353641188589568 8937453069117714243252624851730432 -90240757494082673824814646008217600 8292788462850180428342093953368064 5684720975470751741229474034745344 -270937929833823311806535149153157120 1105564295358406591555111208615936 275977603985553010705701791596544 -352915705403108914077994168004640768 4695408453731902550769916295774208 2075321571846596568040412337405952 -805286314162680577832765994121035776 1506761449728076531805288761655296 6587226575852801178129104881319936 -714058021071213187563452727927242752 9361514776176029987827999269978112 7024614491047656301322514328453120 -670123498940164150429281474712698880 98519438112990664211628413681664 3830504842791049849822588597960704 -931008833692678087663983734999220224 2006737248535664059662130319720448 4607994517521057507032455406682112 -848660132181853093410293715811958784 5286244153706694496577179852210176 3049252332190730104268629089452032 -194476903659510876686628926491983872 6711705766449460304747846952812544 7996918344699361047999192141660160 -44596302366551288794782352308961280 6405056206218912012854521596215296 6582962848686758670371162175832064 -900451702121911914054211717572853760 5745085414341073472398342200754176 3216430458279741622606306689941504 -448503918518230231777917801703931904 882345400302429327108090017873920 6897102754271603489276279859970048 -704245674754085405278381118521868288 3423504433437128981994053155422208 7782571252623880695262220738625536 -158254345857929579378324854550822912 5167784866192732579645502833819648 6676940921840644797048568907038720 -924054149310467691303225964844023808 5056398386656153473533446052642816 3568911142659793819025908724400128 -415346016064464688743836673137180672 7552839929214675770837451304599552 8820590455188449367395467108810752 -523987329328705816545062141198073856 8927707073428915460916971430739968 7856270942690661869066770832162816 -998123256648322756921465113036193792 7859161430959954789399355960852480 1862799093431559822565928561803264 -765239717370415380553262102382379008 2840909720411036825635107272392704 1029769596285726174737099994955776 -336666527723130394179405094085197824 3887779568192607375812293526814720 2130260200320484637116923320991744 -131256119044733819453344224242565120 6927564934788186586740931929571328 9787969273123811375254913951989760 -745209644994109579306616622673821696 9632963390921023317297297646157824 1912081071660657122375723173019648 -773153256387605563528161350152880128 8265165189390152229603753926328320 4377040635508761218963595075780608 -379802063747919307807108809808150528 6124213226717485374694094454915072 5473048989939844400020436969062400 -555268675517019528689010474966056960 213660192496559153715230367809536 6155613978998230017526749506568192 -184932857083874794056502046766399488 1020677493225372697231111697203200 9631239643222289816836135737884672 -585510479687834960317461435498102784 3362918153284402109071100397748224 2665950765786168529613728612614144 -728003753024992159794621520644407296 2405050371141313594693317260476416 2151401832693283825477939156221952 -920086720932916390906926953240985600 3748562351348401336044314790199296 3683798662133699627511322041647104 -491323862456112185545307747830988800 1556370642193291420796130087141376 5639413622767293654660236332498944 -683983669035266105235852828981854208 949834834724128636653108872609792 2115650665064855031760807486554112 -893954779439238561846466378119249920 6937632939319495244881530563067904 1205500207473362055600805817352192 -233501839221513145713436199292502016 7735868809359192228362513910071296 7703077808094071562758239578750976 -133099966212876924800521518941470720 2121518062665284797316476065284096 3484380512183656473587728032727040 -281807597750212883502029144345018368 7607520235605129090086611466584064 2800946922598424036969126666698752 -908264694099532890220269756632530944 6709426124595697283719653436162048 4755063473636331729800925265526784 -871685261470598843715541278279073792 1708387036795238170427736838897664 4361533989005373122664873664184320 -993151077576004513111757610152886272 2895626744042197995649236958445568 5449343271413048026341979019280384 -718586336972050363299674272991019008 4411748728847959207388096071991296 723330634510861741007056721149952 -123490929611063669879944069609684992 1563564380997396844515494620823552 7951898157936890469119945160523776 -130288935203129148736635338638753792 6612681296918905185210898099208192 6173660714031530827149158951944192 -671621251060500941918878696908783616 4402378687143224522346793130786816 6034935960941635230381929270345728 -868638539975617146515066964295024640 2626678685301109806828024368201728 5330426673055858317428076364955648 -150363811001175713420974940068249600 5179766197253477895736510379982848 5819906027974168334272474262798336 -413150772904439327982907340588318720 1422456117517631893993441806254080 5863165100546172486700276075462656 -130792621332661102995406353156014080 175400495731695934365510867615744 9198549988844167288734182027558912 -759896949878778089595188630880518144 1026445891494252345411098940276736 9243374639173520192403024277143552 -271345659392935729348505372628877312 9041924826130986486302057814818816 6500745746601737453141504378798080 -292058418584375924666641262009384960 3490697040287009643773306068795392 5553445187049451407730755997007872 -154148131752826241838628074824925184 5338180389278220567403358291230720 4574749343073209628716068319002624 -935406749347807094774148494396489728 852271329915038803850339463200768 6948913404728645923124397660438528 -414477000754640342428230952782135296 7486141169264458242310520187125760 820175991960314177674241466433536 -750311980325236727770717729929035776 1543188074610957772798997955608576 6356642879115454489965314378301440 -972478176179822164651792886772269056 8708357716535122349578895075835904 3243174519322754377961911460298752 -61417902465188518387983554306899968 7065030987715426868803677747937280 7228339620136224062012039723220992 -416499380419835742631968162535440384 7088052261183258770227750418513920 7406381728922796633777817134301184 -224542171838202238863333889677459456 9739494993267671203092884935933952 2294621470516168560300300282363904 -204349625158793825860039566853931008 7652679833811038988257370465894400 1726177112219904933593008626991104 -955104821950614478201836636571959296 9119931163803850950162532072947712 5564594613301180180432519765688320 -841904421157929049525412209002283008 1763351236380074929443094315139072 354431936217104858869208107188224 -983115862758502064214352828162899968 9145290720152300437449083944173568 2222774573298304231182308860755968 -144996972786450889709636298678992896 452205565154309332111111770603520 109248594585612454892409634947072 -523516681538680416733294507352653824 4817505030390836158454071411343360 2741575019104283506324504242552832 -610519393095936619839554890894409728 7745661274511665391595220302299136 6895986551009893616620549489819648 -833223074665274165059214142011867136 9884281289536736057150244537761792 8233759091973078709436390901284864 -927121939341383082549450766580449280 7602356786061387655530861679345664 5244766591722612611021882068566016 -920020533372822086238721510517768192 3098970135019532139981123799220224 862599297481700584345371106344960 -197546359717829680233256743289749504 9625857572939752851937223361167360 3933997968983593119643881107881984 -642024214294072081253935124945305600 2096697468766725219806654404493312 9977575335255607599068714192863232 -604009079179058897769675622633701376 4470513904526523054281800992948224 7858080822808568324596113273257984 -659042492973825132183817779622707200 8740406984179656904571362736078848 8342708617777518134723702780067840 -436209569282459102062087479813472256 4372633978555758639560749647659008 1448922391868631009544865188937728 -444185498841589823701806650606223360 4332213410834412790655562186489856 2593625204963458224686855222198272 -636364606731343092888144465857871872 9560969351671697016628029578805248 8007662951586595678732417209729024 -626384228294907566160535048335392768 9924540726183857176362668101992448 2383602977043389985693617881088000 -523289880764198619054002676093157376 8115947602950836186477600052346880 9061398074428692489797258019078144 -686659152516428141597076919970430976 4282335807873744835449757219422208 3844974558292517816781440003604480 -614237013473626140666926260778172416 7708057917343166375379333407571968 8505176709191889532269283894099968 -768971237961100943400144178042109952 6294403539373382819788354125561856 7298378476238637473160849287806976 -772401686682424425433495290599440384 5075302077183681926436951443898368 7432186708537349617700139138285568 -137572059572241490660045750028730368 4547135832597586459400397823934464 6393157935933684169740126173265920 -983543357204016723772873870621540352 3541699628554339864774149708709888 5129093027489692870415172082073600 -3170257834962007795331254596927488 8499749997686696377664397652262912 6558070591844182036120998833553408 -315335150400997745171376198471647232 7301523768247844679197770685349888 4450240095896478775957024734707712 -904632836466783490954524368018866176 8497872344494076790245368814108672 5942586071615342477620327783333888 -33472726105084576474787234252324864 3501636050715539007513867942100992 5772942152593248990140787532496896 -231726467795552075695688839250051072 2219928773798048316988909181468672 3241353922908690385136379781709824 -731716599377446171142142764685197312 2644249875919601515627084142084096 2497552683066764471215129947537408 -677883727872245698080489729555431424 8272792410232034061272056758009856 5216507642183468075256874891476992 -566147303074741464413753085997875200 893612504552956035772482053996544 4695991751895511151394652564750336 -894056596238116850288677823822430208 2379164002383279977059481087377408 4162739745777160987652154873348096 -611276129869243841125201652551254016 2153031325940360163933530477297664 697494534493670318488680197521408 -274896169153312202536709319074775040 9754108418392605021530032206512128 3000531249354908734733903307210752 -176231127850403979838637109457977344 4544354732924187849222047899058176 5368763216635469812716225144291328 -613724112980768297050179744015843328 455641194497530477420033012137984 648657353250740522492909051707392 -756016542050637892147142286016249856 6935866226686755745828776412446720 9468040801603287564210972781445120 -290693098324641994747841053311631360 962123758803430291216034883960832 8544573740802465217840160729726976 -517381142572026761452972725015412736 6794219686949059133931991322329088 7588481533167762892346776822480896 -88050574981632904743444410647183360 842998864559145934493928029945856 4688646252108914406517806402109440 -714934070523089579955243853071515648 9257158660108560384074570228826112 7511477097910402049092248200544256 -325773458463402360195673360709976064 8616876097651448624193850853818368 242928114870778594243735900389376 -52520991211310030366220776045019136 8806373828749103408561628920152064 9193853301514297470435937944076288 -957351371615580847754950638296891392 8276858069665720248646509948567552 3752518341252547160205833334161408 -244750593605086913235564133542264832 411891880909107769235273657876480 1807086028290346706326391109976064 -653585868339284347898046995777978368 5558706992778541590726295041343488 1185428377967856174012851134922752 -671815300567428980155615855469658112 4554949684951182685211730603147264 6262734843215727033800661663744000 -409287318696848277472053175869505536 4963387348440956577087009799012352 6541909446351087421471524581801984 -897978015075051308825316848245407744 7553014923402797347064787473793024 721374654661180433727633106141184 -595873054739422261384701279014486016 3789929164562325591827747849633792 5216870055428836759836885558231040 -757393683828084646386620692128858112 4531784566773783749498690754052096 4061935312966055739375081654059008 -898371987347272217745393017853837312 5819287870042774583492023456628736 342629070141622135789626419314688 -255278504675897987477061846622535680 1922498286335901769538412325371904 1964877082668323045551785495232512 -405584706960114913333018859115905024 4352957217639993318322773572976640 3811283068627045967515400030650368 -461918353457782181280139451404648448 55143062120383835650354365595648 972701617859691677331279824551936 -200971879372715498907648086931144704 662724452206927996661840499179520 5499827596084464923784013708001280 -914747793399809394871659758014693376 9063131862993064354903949618184192 8879292668689040440791150064828416 -714837822580446654501777075939049472 204246209574976771718857353068544 9561530119687895239704164681383936 -108258281813060492708301588112867328 1094969877571000562738848197509120 9335084465252736184599439380316160 -843181424118739064763313883415838720 9801134721711908620216697360482304 87846712138986061373197414039552 -218759988252933564239144935437107200 3024276914823261877017275241857024 4746098722571248479250003987005440 -794314283048259170601089028728029184 5309641648278383025384867862937600 6552468949115301414013738518839296 -721908077983483570436179416393449472 3058558548997874321533946283687936 8055857513707915452656511155699712 -666902361708714476122979962911195136 6387725911576481094436804032987136 7859776939372268611933049198739456 -719859306293022105228920991856459776 6807922317292407184530380509151232 903806324377610425992295428915200 -762625509247891392135079607559782400 1082950926712577260699827927252992 3254215269194048600920468161036288 -920103406336370073678778136866586624 3722413543511177792969712705994752 2313116964526611043207235363667968 -119790983149135737506143400190017536 6753016975099441200585996257722368 1287329676809168959246253277839360 -110990569039878705018982912793509888 1274438825049591615342359655481344 4980996125124596960757672233140224 -13379257344353165283632876223463424 1911386091489805316477012806729728 2841969672754200701382773039955968 -129798543996889900495235780064575488 6549813417690119047086670759329792 5356475158328196985000033364475904 -437037263966280405604910819981656064 7314392450624355309953425105485824 8056157175035498103078242706522112 -386925208257618520765764632095752192 6920621293233243426899229738532864 2475362787877387816843885072613376 -22816955847447427697564136629075968 380318151418570130643278563901440 5727559497330002552332819196018688 -547297715814567665568075043185885184 3751365973460183389395014473744384 7191005872371846727853481169780736 -352340531989150810738942623763922944 5698271771105737592037090321760256 6806204213978125497938414023999488 -40565512874800640623968308579794944 6683635534625605613202457355091968 1458666666774811790399140838506496 -79272158420195468482841099947212800 5638299980036727513056518929907712 270195334893750590421207399530496 -540443611287080939724516562055462912 4652771448879273879692829117120512 3602154188014299070912156416344064 -84536736182623788127605670992150528 1369208533695738388826872933777408 2087855998643335329519707269103616 -383866946186989353824423432069054464 7259808260659106943207700852375552 6106029221699726717283966704943104 -458214984005474611368596309060616192 6694144082457019018112025631916032 6831426216356056637160451953655808 -80082204028323321657355551792693248 4458614812963236356415488624951296 9603879682322503990112221516529664 -390705789036466205336485174624387072 2756246653818271361434815928729600 346100775027561630577237891743744 -332386939604142267864799583257231360 5875544326243394278499471824257024 6851403119031802360692529606688768 -243355255742921371216173907369263104 1810141339452631260284505099862016 6214089661591929015225443204202496 -456922329388707425578528249082806272 2767539834187432931290743255859200 4261125793012560169109196820709376 -962495894019230774737551519459049472 6545638266702765467349524427046912 9655716243131960770912059073232896 -976314091278497954992412835234971648 6112223610910447046455404072534016 6272832816787382440018083653353472 -128525944258744580505585617496702976 8563677688067715161367922450890752 6858046941201968281442619588870144 -650643034828573209715597363527024640 7980857836437325808296344026087424 4215433827000551388607831152263168 -13293559619850339924259284086423552 4313446635787810345274320051240960 2155441614058872028463559300087808 -686894716025730863111771665341612032 8757045767844176760148985427001344 3450501927440338719111561951051776 -72755923089496916023282079381848064 8918099864351827477187459832348672 9656997074288539703493524178599936 -234911742231476351945735104400195584 819086970081357800662818590031872 6652379408339147885927190585409536 -941275313997625104769109066759798784 7455536688293264072088927497879552 2754402170290936668852199243120640 -916809843148582177909237789845618688 144637797272738882635963035549696 8538498761134600910670384320217088 -371417982141510377642183686694633472 3865156921651380372261104437428224 3560380171432395235062632929034240 -608820609927022812093488952665702400 2097986504838897679696694838558720 251957476774784356738046072193024 -216615645669728748294704024862588928 2910923594897500410670962243010560 7590021364890708753472467731742720 -477292972581900624979461532515565568 6753238050359191203172360772386816 167628522966662860799973609439232 -983780103982003383616560753243324416 4337739949054041505981229883719680 2793976524837715076703014803734528 -492827016741579944163124000201900032 28189073395593286127223268442112 6297163691543473135640336995975168 -176130945483518368197686002658050048 1340699017236475507136557140148224 9377159472500381135287079825047552 -658107998749216643841480994121056256 1344629425268233853838266954940416 2762603985477971829449336253579264 -843122654388497473773969983001329664 4167239812932670774292453812862976 3616683863119343873674102041477120 -447644488069366361851677167199453184 2861515660028137454307347020120064 9169869796295488609874803213467648 -366210354420722087567722223817981952 9325248990672288347717016141955072 407222835475708798660713186852864 -187484423312344186278319544405590016 9254634227752823619420737824096256 7485151126798374176955170102968320 -833047600180981906733226452093763584 1455137974179576029241890756886528 2417135923793484423493262268956672 -209002703433331602626205426936446976 9158446473221047816376504127848448 7559704036046649720892935788036096 -947950310648827146014287931910389760 5023733919160653006858083031318528 9951327468174814853572317174300672 -395320425426362806255094158453637120 6695403309150238223226310842384384 6056611440962849122896120524046336 -413822341327156000563998299766390784 5131915781073414745323012242800640 8416646313360976549852147735330816 -304940375391152578911913744692936704 7732937936605715999131462656851968 8864504720651141762187757283704832 -739460380137630997727187332533059584 3002769063823101186531727721365504 8956411315804673644743728033693696 -572811146063299538139439718956269568 961724525515567062125825102970880 5937287078974588650042549092745216 -606881227906494318418972422118047744 4325413159580145613386258078236672 9712121652738797846621103146926080 -127270724304129782753289764297768960 4410570125275567514430238015619072 4635406638367136819981553948950528 -398875049187316030394944859389558784 9294192398146650392599877660966912 987562932757959317466306268102656 -553823665437229242861141507121872896 8192486144818767390502760713551872 3124752388040340377063031763369984 -963295575580635570610017239318921216 62132684997581941337653606612992 6326509358788784924624185160892416 -635055777840049045775758048605765632 9945427725239577818605891857940480 2786492746499503684119981459505152 -299100198501397179838025983749783552 749509061385529893467655875067904 9715520919500829514008926336581632 -2748636808071947066902737827397632 749094153609015129268495140782080 8230907473008926213393610216308736 -816529530355038112314910553636077568 5924483963801163198895054208892928 2979530630988326448763232931807232 -744880027868411246520073683046760448 742807695899586199386336668942336 8883329561043458331463222365782016 -927770597764439878878622521113968640 1581911701438128591245355593498624 1781278145850770175351462832373760 -792462009447771389108276973287768064 3360744263463173092152335505817600 2971161091687477606192533626421248 -958835678986501851766726319964946432 5529188176452389198746949859147776 6895820946832182101726599525171200 -823335448955709589610088116921565184 5551364035052621990313119746883584 7588733368065809686741466954596352 -782476025039674704081584580380852224 3420844385862706985624959595839488 6204342537637348559947950981120 -398004273079439985355442366961418240 522212415163381851437978240417792 3079655167174022928560457229795328 -20388584731258582748750763075305472 5778433682145137849530634796531712 3499012969031153687714428184690688 -946673185927165224934081312189317120 2356945505880855107880106630053888 8554567052187656717910382288568320 -792736788812398776517808608849690624 4190858909294673196096307685490688 4637899927349146784211705144541184 -676502639410781856419598117021679616 9695550121723253821116548680515584 4158919426347105263711598959132672 -89641116479071027428298188828704768 4365222114863305847358581546942464 4205715840077391545261585344757760 -908490154413993409505815610766917632 3807307147495776736243739323793408 4724939707136830769757204638597120 -973951106296320700773021803387813888 7079219530215052943805055215075328 8910213926929639217251726833745920 -774007778775024508481123008510951424 9049345826527908603335524931862528 4515355667745287501775065701154816 -698441038622612553533927997531226112 9994839064889231578485875607076864 2747875642384133631417799281737728 -683156006556727327509803572211482624 8769150186452693208587241223356416 1977006912726393249475938893168640 -60290742743922401096446994404081664 2765879696469488366264659818315776 6261860830087493868122349340983296 -686939433261782046362510064168730624 771276262954960083533819713421312 5476314660065720842807973932695552 -742830152339613526733172781099253760 4415836703512253663509490849284096 2550149151156369874652160763887616 -652674964999311116051864346997817344 3606052600714153151585064235040768 6260224766771919100941407449251840 -937127198977143341922407088148971520 224773778041047329731750890831872 9891885825226429099200418649473024 -56163557168345456851876902942539776 5701380279857389544287488511574016 4680198157420349221121934688780288 -18852482271725705199039458756788224 4352784972720325213906021050744832 9298826798729066610050759326171136 -452198366664375219434183071111315456 9241712171259284991575328750043136 5702579196944125163221834788765696 -844799452124689268881483588278681600 3740860240914067977013822010425344 7621864591670355181081152504987648 -834376970079496835201599751648706560 1581034217512755777877240302272512 4604056925350513592514372427579392 -679016177497557489731854403817701376 1049211337392947698535725059276800 3875988769274319454466309600837632 -299570306182416288363114108691677184 7705990763546340751914463777521664 9902185208346305014582516528447488 -178948788888738999440275621780914176 9243231474551082512079862645129216 1413198138503161452000519242383360 -706180609536504583630313292090572800 7498909176020767411654607041986560 5956296518482237812758891521376256 -216768019233060534314569056514998272 989852888701980830628794041630720 2337632664076275228592987869020160 -901472575726129598040359593465348096 7767398725009961498494238510284800 8707495831924316523596975733473280 -258927424194946426898713955736223744 4248609334115821117282651356528640 9886240053991601501906046627610624 -11108120307357250283473722423640064 9771913997883090318406284199591936 9713319128372359730197822103879680 -857987020964386240872560360035450880 743819190876662568592921468076032 1320600497542049498763489559183360 -533870907598394174009638954748346368 8157677992982067797593554029641728 1353318001517309768995040686768128 -979052810582868376078625484746784768 4021659113432429250254328041570304 9472485529710447328133689200607232 -845844467152706829955224963867738112 7298330445653740313465743587934208 9598891638330020609877280351584256 -531887997900644916457417082417446912 1792116965748106010867973167775744 6471542717448299454071016498659328 -98394461529755460262560686678212608 8594379128265053019729801680781312 3722067928489046152770143446368256 -497179035261853740212597804794642432 1061185346176391240320839629930496 5244924265813549774842396820897792 -789657554051552071748193882126417920 2033639413503213296525174422634496 443089991000433831869289980755968 -556500207971151529388318088669167616 6640423135672638298261277401677824 8317580182211072384130961844994048 -254075011259318465433868721994072064 8582160758813234187314844347138048 6583426424089549121603027486113792 -881893295622810479532667958466707456 5710919169410521547076399215411200 3655195660297845999667114263183360 -467643151628015348000408708495441920 5701041374646471732164353259995136 1477987561542618349839642051739648 -461807695248284003897195314255233024 5856975390198497709877395772669952 1557890033024812766442637532069888 -503180759737638074054824834233270272 8006121112042562345007603580403712 4120537311360162991668949315223552 -265308589685376228269985317949276160 1000935765362955236045811794051072 9841398583916134555275590801293312 -516689378799655582675046360160403456 9900171313655065643778360626642944 5839729711347983336944921403719680 -457162143229608354263354976476594176 4534574552898120783538330273841152 6142705685869215269112838929514496 -831729970669309350307372050587582464 8836213307557350115090201342640128 4350509759476080303020888998019072 -829841833663423827038351129969688576 9144924833057378522652302569897984 9036496848252067246623491352428544 -627698167369236589690103859211403264 7650731997516719318842073302433792 5735263655578766969131948964839424 -898228835657157268206522760777695232 3791480076398182346066879651512320 8397170277405674988081422455013376 -477361759931167255517928514637529088 9049809589219795270351685263818752 6944701091404916109379013921734656 -41687101749955521449994613518499840 8017278798465291531136277214658560 4485346309550393848181959598014464 -552871855984331917093481874959892480 1116583821449360539553825460060160 3379044529601847540081920642646016 -491214216684181923731040059772633088 9620472966701363025324814077263872 6451472688556107600039033274630144 -441926810226874858288037185210810368 389470542562527457559460184064000 9653776057594970321755318215770112 -494291169858023864338097276681453568 1164561916500519864170481107075072 8443813100308252564421284479369216 -785855338247432683424328004143153152 1918882306906792536067989311586304 8155498363527640242512634880983040 -112186542490742857675052540554641408 1531323012380155181603699204030464 9568621360735607022953313414938624 -61298922719215878143380536866897920 2071942379106818442562287093940224 9891428250315819765582510526824448 -757784921969987623636285589062418432 2322248339098003125473794630615040 8814936586496431314805982610063360 -734462524730052272604422679256104960 7072446639923609696509606821363712 5189141662321035697252165989957632 -293060903337375118259286108134178816 9940735239392771400923435612766208 1233862534354781284615504925818880 -726132951177320490116573625088737280 270513443105515700213105010147328 2809050191258600939045587811041280 -232507491983706763596077797268783104 1191110494917607584883799645749248 3690237824980132647649895161790464 -812908538077652643109428635233157120 994106780761947920229032253194240 1078366590715642943502658161344512 -136152842678420599195135760113074176 4967975643376452345918842451525632 6514442623498032866147552423051264 -174540177024421945303202552600330240 5914069632032263140143858179899392 1647446095508046298990976335609856 -612321070216797652175848889171050496 3934662624006365414956492533006336 4247809186750819089868863685263360 -719230627137732261848549382470762496 6992997004576956517365334979641344 12454572751979916501819733311488 -968199545137991134582883277875445760 6428424577603604094136571559673856 2397531102098767130822786739601408 -572164269908482815674339557040455680 6194833374610632285921288619294720 287329511317093201215572422950912 -567249931859456598553842738276597760 1370942256243265444985396214628352 5688403347881631251870088471511040 -249218676479741407058919504295755776 2964793828224737867873372419915776 4487990335685672438628917912272896 -708823438365960290425352370897551360 6565645167650761871915849013526528 3639015427826778509136367227764736 -877065810501699253269052343466328064 5883624986529666563887687106822144 2612074535019162672633200531996672 -486239944956283181779297089991213056 8087227601599115216120570154319872 9955082951087710591982579180634112 -516731746058384880358126619673493504 6625344818016408164901493460172800 6860877674023046246100927082659840 -945608851960975696639952193197178880 3786815207872557924382224020406272 8350754837368166376582918172573696 -159073017564921115691405731612852224 5040155087601123143557429636104192 3504587829530766997388248626495488 -934348216414590283650309200629727232 5044322486477577072453639171211264 416552042943981033784383817908224 -201445687760976432890198153066708992 2765630822704285587567878235750400 5890987712768897307436197961793536 -131195085217923677436344803306504192 8034143219636969463122730753720320 6228384390614301187411705241534464 -81668418058628101433246092353339392 2335784982976419430542263946575872 5485677751018936926040648478359552 -825669000459906216876877780168474624 9310432052929295787997845304377344 2426382966938383885151685408980992 -370082703859080413580788690162024448 8440166497931153832343798428991488 2806704891609617924813678834614272 -356922435051542633494870881944469504 4388179363934797311575254796075008 7937888260002600375820897327513600 -277658311881081398942918524230696960 9570629766047175297800810660888576 5714610058350761843010877630971904 -926466692724504441153280387999334400 5241245031063169690550390656860160 4676572042032839413678806512173056 -148482275219018355747816799547162624 2015993113718857193786366817730560 7546114366449910382176607540346880 -460570475707204054440162665330376704 7620234066885029789769387569315840 4830794871289572130840972416253952 -439021570094333846339395803190132736 2444353525930841879349071263563776 1614892797303078670149220646780928 -583745436268239206552848441767100416 1866701661516311453547569050812416 7706516533656237041884612228284416 -659143387050964663572050109718855680 4472221286888035869340927633915904 1681330789806144841882740717518848 -399373210476057131058839608212062208 113813826738310033303636002471936 136283656183507414798519641309184 -64421600961469902946613519234105344 6054130900673377920203558863503360 2857940172541613737057724527542272 -257859894970167351444198799024586752 347811479286258594912527187968000 5004866014084957471887951931637760 -345824112942106649625779460305321984 9403808490097991642374698407297024 4524984852811517809008269470990336 -245643922854766487469300326265257984 1334319427205773137585369543344128 2471952923039037877620912368386048 -766713236056311944265739504808099840 5164791547030407238653387967823872 8620977835680266959746744128110592 -33643737866289868573821515641913344 3510762787865437171198513188438016 3282409902641769876511047299366912 -474846732633314855444298264532221952 7171549910438797266840573077094400 5836908879649828914041812466794496 -942290831137096692108795727600156672 4216923191932115583741974802333696 9269277878276461099037148743467008 -631258038863990675651112386422636544 9027401516939078808597398479175680 987597431761401523797599220400128 -117732545627103140567271135720243200 9580760355125849274191992718360576 5810867438773557532631383677075456 -672274165335170783868449179605925888 1458792941133664376002405633884160 9885515876907878911083893122662400 -779677908795558803014552361025667072 5432751925786020378096382334992384 3145109133121238291922830309195776 -533003836193094837468440715107237888 3739767852643958847725705912909824 5755415300740890419407830011346944 -18046459263405929617969397096251392 9605010881589934804427096692097024 9442049875064774053539284407812096 -941680283816220031322560916281622528 2570304564915543537099561177710592 1853344609410154167158004382695424 -989925151749150110990819017055272960 8684921759364815658034462950686720 6034035165584134175809424771252224 -541538612145266687970839807022596096 6878979370474087893811223597154304 9732434299993866820686241524088832 -165194373386637671528022592221872128 8507213462510563844270942775672832 818959168333810162070842295451648 -611031709159407620042985202580979712 2883458908846816569074885494571008 4106848943284197394355247718072320 -833452480444007305687194850029469696 2701974732682214329401549059522560 6321323749019214786312525947338752 -23254173169883781432642509157171200 7489826874333962635303298539716608 1097951267714649254041924136861696 -870958491224000121883455121327652864 1313383045099917797484157368008704 3802008452654932896686924728631296 -465430000530291569110094288550625280 4099111851809827190102537545973760 1152278271540700260381461688877056 -234569165714829789110606172581265408 8131910358336370741080343116251136 2869876655171927689017350036652032 -331644939884816234411478918547636224 2639458026924489318908685692436480 3411688482480054342027065839058944 -429078012140452788698809678585397248 6282618102457685404896333611925504 2156751554588598209056870145982464 -319369586779842726169394149385568256 8270156983509222405956010028040192 3158377750239634709925829244092416 -148452943411704858429447799987765248 4809813088199220024189546655645696 9464933996767987084406302345003008 -645768733381007335410636256771571712 9838954254255485695118558164418560 2266046259476741927111762770919424 -198171033138292776561160580797300736 4037223751555659438892476522299392 5048991112838810612945842719424512 -198094488126558270409108945949949952 6499101464556717076834433334509568 3775918990351002509088908090802176 -777159673963758792727089956918394880 5339377657704007276554669076250624 2697222118413199140877036458868736 -929481650084236187598727311687417856 9005831351563758624247123982417920 2811100704889385836182153602269184 -239820074831127575259541566136516608 4114528809161380645436250898038784 9519274254294262879420930154561536 -496974168394758055933112862250106880 4426737418712586156881756603547648 5101949223494518515788889670549504 -791507047981597124725908500696268800 3284317362160930865561120532332544 5092514101279905777188506846625792 -818975208114557203744659200416940032 5214313457318361142489211574681600 2230155324297145086819109621989376 -65434685468069040233733680315498496 3389197512137626330202698195927040 1970916281540967498407095130128384 -814920139487981784744674830139260928 4605882983516543941200702810882048 3015506978662609837567163221671936 -544060386818154603209903931754807296 6998031333796430780548873378070528 3455360686790546929902435319152640 -47845108137918762492088401031856128 4846103643454526711133682509283328 3892654863302869129287984834674688 -148090939386200060381054964342980608 9311552124537430281080049575657472 4214337373937680387297666763063296 -861772465179362107983202299565572096 7539817043544368488642213555732480 6476129765928745790627272867184640 -842775431127482219538538911626166272 2170405575613489311885600122470400 5272503280338144608584118254436352 -653885195360768119103636671534465024 6248869021774070595015257544982528 3353780578566092983641506148515840 -427788077549029620957466636832473088 2055108699102970715795817072951296 2273163378592551406519368399454208 -238151146858228838003443731053674496 6788528562276116739442121906323456 5356911013608019178834432698089472 -242664243556237179147047856018292736 9251371480370645647101654160375808 1664968403583461076646800408969216 -445500731600488233899607810079981568 124292942821376828036954669973504 1005454673899520205331469688635392 -936875243121549949590653609107783680 4464277931922950800369532801122304 1152871266671869513826263399137280 -913520626443044540686122089522921472 6142408271854813069430405738790912 6445706164626414875660941822787584 -358987166330230132572453749456371712 7307793876038105207163327870926848 4190698419918438616208169423077376 -14907716537055496251425446344785920 2993820764030761524280994723528704 5411982144215380175621222651920384 -344081651194781366555247849888546816 8980712461012503652900306019155968 7512588898586099935299965735141376 -892889472910914443199596932177592320 7912352567416967640135671205593088 627429473291342624072046661861376 -755023115544694527345891947600412672 3523935267035751638116904044855296 2141311583604827077000483984900096 -291411183581826967832031954068307968 4567459303607214025162555228422144 3710970488708365867635694345650176 -296801709136775031468121247893684224 8336742432709926201606292402864128 4068803337295036048534072159371264 -587801859459809596207336159105253376 2855522864602323438092050493341696 2813006485067482763360501321695232 -789059122990491239390437656234033152 9403942674624941061562166023290880 8454016185818652747187329995636736 -707383227921605368543345809528193024 6613451728549501201049949602578432 4128765696912079532498219723390976 -877092177381961432602448632165171200 186566646480788675057806615773184 920347425839086892576136599961600 -873574113411941379604958970457882624 1820101390580403340153134734376960 4541573249515355771663828561952768 -517283632989837639380738980137926656 1751870676947009548173630607720448 5633458110950102955833661639884800 -271779617046217272152092692982005760 9298618353942015815310568471920640 4256393639553643843018962407260160 -368947611504219250630907656058961920 3002003151394158670892045908836352 8233229197158400885937328256712704 -716269039798182774011009440730316800 1271235811592752176577133760479232 2828276404793561430786423927078912 -189160810675468401179900770707832832 8664963232899798304329162513448960 6196168290651483145186251643027456 -98899743146238353210293226569728000 2587853751917187894068692677296128 3859980856897003319038377409380352 -396693603029356020130584410628030464 5956393965849803304844037980160000 9072764756744324924571430701498368 -271025755179196628772554858144202752 3926555545307581478795098246348800 5033038525695992706648315376173056 -95878252487899667565173092575608832 6971678489862997323618285663551488 7487426180381224729848105568043008 -461346051419971483347824845002899456 885668457291088147418539173609472 8176227897304396935300811075878912 -70673224837884502942686808387878912 2158570813955476514859388858531840 8963734119677639641947345571020800 -636869441324528117946891831768776704 9476299926874818479442941836263424 517808096115695473118709588951040 -106540512638571239380017215673729024 929820238524836210267548362473472 3812713476417366420475496680652800 -844683658282215891530558658771419136 7770881562211807712002449000628224 3232488656264164608687903562792960 -827478205826505337444297237262761984 2259688610098453953587045958942720 3129054775855538068475608903450624 -672186091557950754659136830774968320 6226013014846685185485705960226816 5936750482057720474078790027313152 -113434067348255540420483414642130944 8018893814528182154584016759554048 6472940201170254002467307507417088 -508969756328251560196045297919459328 9745790636832150187677058013855744 5567381572275828101595706265960448 -550710650411215167137874702774566912 9870406487999592510150651009826816 136646238247508646907041766440960 -122699244788883260607996024221335552 9392851774232642900142872865013760 3238782678795398270663396492836864 -380051815617238551672305435877048320 9624306848392992889943138884386816 3368813005492205353644652960415744 -268715409186895004074604877653737472 5162346982534277887514334904451072 8640696299656936707930490255966208 -849022086366962058159925340114255872 39071803829660306423026190123008 7544207797278068368735844220010496 -549268867490361243595790889523347456 2625595929585915858388557095763968 3665436182973441304446161150541824 -821017645563058522152430976563675136 1279716119582436022293742105919488 9580243815364969264023786187915264 -620778775923334224561489118018666496 4474123706779806632835765306916864 8791766648265055596576017387356160 -241727283723342229138920940238798848 352822337412210258899479790878720 7627871830547823007154505378693120 -369209965296758070660539298862858240 88904759462847248740728046616576 4449731275962185801061758264147968 -34469043467487797617637541957074944 671722224037339706886811123974144 3618869095516667861862683596816384 -842779841555102077431458434440495104 3268099430061487633625510175571968 9891510944222166553220013283606528 -605978726463734036300812489425158144 9412675308706503773495966413357056 1587244729516193978778459530330112 -14825030049860670429000870353960960 9836907813126489604380292072603648 3148493489813071920549661706813440 -224668111350699300904144797926686720 4101067696573404576382716406136832 8277769914456016467783013015486464 -710602351783145373917549333844066304 7368774421972974607665161356443648 9721783961372143451388773929058304 -433538635015009756304633218946039808 4120435527423428880932077580582912 1115999293696967594537282166587392 -925584484162054444667559285903851520 9742450988828031370909020609052672 8912242767027805418985224369340416 -473224958829610446680815011555704832 1809123097879397304706980034641920 7794268527776437225141252009230336 -267364903886809215564804895394496512 3473163652098680514239527282278400 7939338516136934050828822410952704 -406268880531254439419101120389185536 9541492155196866043176119510761472 2204510261430096077376940910051328 -554260740138497447196136884664270848 2796363143812168474040072117682176 5025740479364938002630731911659520 -286446845132462976269284836282204160 298116143640432395678107320713216 2777250360694773640920071669809152 -806676803768759351793022807595548672 2555609592589936802124028293677056 6249975201036404885066218270097408 -137814515372560037369150221353746432 7660537083984655842256444717006848 9602231080574577777194185242181632 -541267598973513678511420009302982656 5348192790693795931808435007389696 380375984981217778428013050855424 -141406352658958525668083675982462976 5228329176164761919072668374532096 6292716057558877683289927322697728 -540479355081762072524529120984432640 3027669129480198747406566510559232 2017518887329780175913177508216832 -32629400930558453233948109477773312 3863061475102854156608526950072320 2721381095200113458780533495431168 -260354795629201370302105004814630912 1086653138310233713378197931819008 6546580226380954457732383586123776 -955552868443380581460593591673946112 5595763844198223107768477512892416 5512695526252174514802134936977408 -98572601898725180479086389394145280 5454160923302173515611267435331584 4777751629072825173697228525535232 -71540020211261514589965001848520704 5242019383243183630407282859180032 179853189262360174595502042513408 -537180869727555411946999838205280256 1436529960017564092582286160035840 8472441863596565833437106118066176 -476913012928437167516936216544018432 299509585540715343406218732371968 5139112092618315347898499183149056 -813496617977219791920867736213782528 3835185906231062676087249127342080 4240084791765993767101623946969088 -704735464505696680323734299215921152 4018149507815165212056846136770560 2840052348897059064180879053029376 -497464866153262457880103791699689472 1323629164613582370316931183935488 8423504155633390146501001758113792 -320900721212312934727484207272034304 4090787767300668763456486856720384 2697477135465712307296202557227008 -596782342967456005384154212634460160 8750579227168654145692035029401600 5809493284954196947336695520428032 -266013148757339250906820412287483904 8678990803986590548865458850758656 7895437271143188317125303362125824 -838265572323504206889878467012198400 4737617419828257465474283298881536 1013627758792229098138475157258240 -407029613989234212340136181707571200 4360241591198659532965166767407104 8638851791554311146009357509984256 -74225209544104198355364581795168256 3934016426629214690794182574866432 9259202916888811285720004663705600 -840302417455705899856907112368046080 7330129513247326919641635846356992 9444856413815431447529768037122048 -635363006059976905629715993978732544 2328905872429699910294392463687680 6679752145559174331980792775835648 -76830978349053611139974608080338944 3421828166821641109566509289570304 3314325002625619523739064299683840 -118404959636023517473858286600060928 4647208457486319431698626685960192 6623747022301326104453740039766016 -914154862949343584849983456782843904 776883046664806549925466810089472 2268318809388054251471831128080384 -58906793481145802917412340953513984 5930044485255109882354304202833920 2807660639227621087505800247640064 -829776552265023247564490500563009536 851445642119203670931959548215296 719867344800704746653178602192896 -865883136952732961023034774375104512 4903514137090136306827627855872 1847460929355613036571485810982912 -679539075984451325677865822343659520 8403055785701236039241277043113984 4818861107247597075063992836161536 -183486732430653918504950601562980352 8669477416475147979849130127130624 1929718484994075089483617334722560 -957029193484987192119794294035841024 3594404346243189759338788476157952 3466362700838604447902552173838336 -775340159300975496289018318082277376 985512805915021037891013400592384 5952313437787474459470126014005248 -54464346296186933277868267057184768 1221432474997010600250166371942400 3041456711804515417976104416182272 -177976310537881519836663060245774336 8612679262370036120380793270829056 8827375374247945257901977797394432 -658067115486485022054371065719685120 674897686189843832099849709289472 2680664378389880852596078923481088 -834000527882125443434983109412519936 699467255706981150016766298030080 8112015226935340790469213873504256 -59590110730987483224771184526622720 9507899710961113332126953710288896 7451959123916392184922037014233088 -818360770994754562310809491156762624 5693228176200516527501003250991104 7076691938675936295456928547471360 -706062666458295422735393995987353600 3167740397545397664271768475402240 7344324400137209085893861309415424 -399279632558102980801051640578703360 1329940798937087591121916423831552 8703909087797220161514937287442432 -671810218914860502516423375835889664 5366972925450808677678688470302720 3322323523163807887387915089608704 -499046022151322736394362528437633024 5781716649397110487012554563387392 689956864665108362447746372730880 -793633992985898848970675566250295296 895660898247637180562366680530944 6272254724017384435073210403258368 -500981870460650101459128081417502720 1943902638721536071707765059354624 2165771790549573470269640556937216 -669213545007197215429632689119952896 2832121054984342136292304769515520 9954493790570437656694157838647296 -93124327636061889404450646429532160 3305432631376623848115411141787648 5319151647875796996464835802693632 -624222946356387074028825799125106688 1641012953228459022994761521823744 2368487015014190420586552851693568 -26637430461910760127288450387804160 7761543574146795455792241117757440 3605429760867298824777207866458112 -920786468559282250488246058721738752 6473189739604535148681153338146816 3554692506795154853663108851826688 -118730728218232793760824694704963584 1416151067076478048422489416007680 5527084508122004079671651631890432 -310638377292939061232020888177606656 4982110016504491928166073913835520 7720800116548849765014375082491904 -513732376248981074203137323535695872 8542809508870173711995202011398144 3212553917163043258254357447049216 -738802118448369070080794369904869376 5677607752329070469422697651634176 3273166799964966432820449553416192 -725860782641895695773647379913244672 2656447274897021530160226593931264 5174216221672857045212171557928960 -532735478475861311082936476595388416 1701306370852755000149418247716864 739388496306231643796431538487296 -32215191138437999605751343166259200 2712812603924411873584951813210112 6533236022716710341135362986868736 -219847997444248306148162094090944512 6436304799967880650023400237957120 348052054491318009026329020727296 -138098206383323744598087744752713728 5869348434219268756871522486845440 288241168818293925143720847474688 -640725687028812074695825504235159552 2839718028904640425896410265681920 7414620896787715232621068946505728 -346795331193681365372125991076364288 6675679902243137922293811342475264 2278733813535059900346718964678656 -133482090137440854875625521351229440 7713150952002142837096395244044288 4917034024728070438535342172667904 -50627746782396866894802503180746752 8896702996957302025152035945447424 3268357824266592628072707883270144 -21994142844739561291605355177967616 1014047425262488611294924312150016 9865168767434311200751591899529216 -362501632338743267306976674507128832 1226346255676979598866168862998528 3981768316201096811945861085921280 -721541255147167037133317583539273728 2876201713618489402858703599697920 5824596258798766213917876133298176 -903633359420952642478267623398178816 7281215485189647910958712928337920 6579698891634473006458375424180224 -250796605623801661168066559089836032 3961895701133624292374650730577920 4781292838577534805549648516743168 -481341254423202803459081786380779520 7313756317083936932756606486052864 6914530557641829051035019317870592 -109980631026541142164098745278398464 1155362211643736616322060605456384 8962943319277293678704599765090304 -495215400021636488199841982311301120 6062763565245372342543636649476096 7458810145866774146032521831251968 -263570596791025158160231738711736320 7413146649134121944830316046712832 5347176512447684520766798030700544 -705297079689409753846429098442752000 5011553987732159738459096841453568 9941719304337763719298771729776640 -478525392792481400797352657938284544 4236376647141214386616552654897152 7960613144889454271207784157544448 -47015871337681452271460440973770752 1426668225081798328905436120481792 3033546821252210784643989637169152 -355498255505997732561195910922502144 2357780055552338227666824307146752 9263099355500101728493052943663104 -610911984117894723164667786509156352 655004247943729016371683272949760 9194824163357858822635610823458816 -402894140767405055725900162620456960 2523406585217735953837568859045888 3949685636346775124905480169717760 -428251501495446770930847469967245312 977567868305833885697384455864320 8195374233822509554176340785102848 -627507953680827735985216991029886976 2788793401873417790810077286891520 1210841859539184959372961247133696 -676752840293274652571418747941683200 3850677206725827692035999447121920 2614957826940018577345303057268736 -317147269169312930121065502024400896 7147073853925954138136715741626368 5824172945003708183656410466222080 -330038585560331642018616894480711680 6792289153885661094882755529932800 9541775480419131364692487068188672 -374720926078792589684433175898488832 2037911730924486603519143922630656 4134100740520260768158578546573312 -668873924367447756715652922235420672 8056003054624812213161725410672640 8801373455136242949876565170716672 -748897212964336804971822926320893952 3553463780329463385879621985632256 6363046041593253636290358234054656 -507747607078685584303205232945397760 4490896166911176874397139455705088 3137024331263922843886445393870848 -887949945730294630115595151957032960 9322315569753306079586101632172032 741570718420132039337893561368576 -453912815289283847260404471543365632 239544146570991172356508261285888 2778533488315114186457114952597504 -912555880144455119123570047500419072 8407623341945397881033714439290880 6098310392872855510481763873849344 -631188995717662649989935313851514880 4588373071078349609791288881709056 6221300609982407384957969294688256 -851440846707054571025767219735822336 8933925900858760096672306606112768 2655498938544255762507990453714944 -452800648723996244976207950075920384 569511396478051049359205468209152 4749573623425508085204308121878528 -238516711585138310293422437723799552 189094003184426633863763805077504 5688605056833964977142558206459904 -939359055138377248708616778351116288 1855937788071033800833899129995264 8849140210284355011191863173447680 -413195230363677636635193544967979008 8140450899154252703010314854072320 4034740382167036720702104465833984 -403079878237625345631984875785420800 819370041997679215142961290412032 7158413755460532208990971905441792 -824261938770943150207162221141688320 555313669727577427166702765867008 7827139254106038339994887567441920 -963214738676930019534235478700064768 8163054188545300429833622408658944 4578767300402023220044317623058432 -316525580605826370857969364584366080 3515572813572524886008513662287872 6288145332974096651374173205037056 -835005880336456347436974050740535296 5138766598868435979226185082077184 4986564338777425939394002335825920 -296335031811349985105776014551678976 9661380530320229255080530231164928 156365762994330912530023839694848 -797296423815063830198175643356626944 7056960254731570493213749922496512 4537933536529543031374581650685952 -556662389217090870935757449894821888 6831226654967534430749472927514624 272504898241481200417675560353792 -994463444478770651500993757281517568 4644578778105732672460233317023744 6426544931851958317454607207366656 -12557551854797488262380373042790400 4459851055100151826421594359595008 7439220040848331223054431442436096 -286483284992160682433391427076489216 7793702336397413579747755024187392 7185089962149924299020653996015616 -536889499425186400988901745637720064 7654274055927193122003022493253632 9236152532443632655192146474696704 -580045041403009659784007764412465152 9031876561037079929598695987740672 9654676317264669332410503515865088 -563266056385076336204898801465425920 4878108205463760325024700067479552 49149331853281934580442699137024 -23465925732912222950777790134222848 4347675753908398846899540400799744 633453616246247410510068082278400 -902951150149458815980225196434915328 5618095949250072850766969415139328 2395041504935523494064648204845056 -603693211365165674194954173863165952 2889021803542809614880348827549696 3462320600038163243714777570082816 -371813236288138320718516411231633408 7312871096465711708001405723738112 3579270399447725973155957023178752 -719292062447715401122871518353686528 9742152515647679413499819976556544 7136176643255291179991415323099136 -375816567336648086132589759693848576 5539462384562391330717110340943872 5876697438535535036975333985222656 -256824335837303714781683616877379584 3161159258223757080361812338147328 8253653732180274138266820941971456 -213169968855681682699429164791889920 5235076395595881491713563438350336 8335527993086906903524504579866624 -483787113748931773177840204821561344 916337447747628526307226173833216 9487171070584087179862422105096192 -42964101485562425368036665957810176 8162794991532599131997583731326976 6699753168735454838973938687541248 -474074618855968894420397739860819968 4263687011678263752463887110242304 9820794923896531604596664578342912 -25149792576446493403416191544852480 2403582412622573835490720095404032 1112681435997093357774265158467584 -594175278022865709535110278865223680 4619989816101686276840768820740096 3761695807657006456352383183093760 -967637789483245309983306528124305408 8190899906596581257204978929369088 172465743870355036179127813013504 -465555146447116130777255150337654784 3110640953370433779700530029789184 7977674778782897763676014837235712 -977254161259360741767953269884190720 9627288003701163251992015535079424 5657749794025851793345878079569920 -165975380404874854721615113456975872 7494035689232848349493395510525952 6980792938834074366075093645262848 -372095016674727321550083372810764288 3264723405662326680658068591607808 7504362391873995696391577604718592 -553637279127057057908192422085525504 6259755970557466491120185518325760 6333185262226380896604991669665792 -338408502266788718113408220726820864 7110233744249266722865011792805888 7075774919172142326886243269345280 -232992752001918020333453063806255104 2635946183151282983479423279300608 5397872218463706512229920669696000 -927787151747015264245088258365587456 9303822447380710189703063960289280 2430723106584950333330116516511744 -455444848678492618368171331777724416 7370241857013564347215301065048064 3438181634309069223687144838529024 -391004116810547698822827186174558208 8014719374308077116126632119107584 709619258907504767333489337958400 -763351816216082943356665328473997312 1361585012381649530776458018947072 5658426850790671699958835126992896 -365558249386961981694524536756633600 1026348422603810142975156463599616 7068938395928821349982525487841280 -265440281160582075030516045667368960 8694634496400397960024978045796352 3326858034067353282471548596256768 -235110485868096911199872027960803328 4449859496781895843317141888565248 9264990686121720563063170355167232 -998556180554107861292343930166181888 4030824534202571391766798639562752 3826014331412171647561807928754176 -96603973646700647314131848169259008 1189559850201544946001001538650112 5486476842270401913563507991773184 -236854923260034166894067469552451584 1282817969277653636854421276065792 5148489424316035732913184542031872 -271055301367875003043869847254466560 8837316795859048519672119179608064 2077828386305238067575330774712320 -69664934446705448429304538611056640 1107950231193316475938642933579776 8333354037248833942348699824816128 -672590120409821383637133260476121088 9015948872627104546655571026116608 1957022787522723330427060467269632 -13329640326879704422484177575739392 6337308356069230133820380560752640 5784262759942080740070619650981888 -380652058086878115924636049808031744 3020096001231618082641022218665984 607522591003493293415121245175808 -525536651870808265899038866457755648 3392746068494927452778022616170496 423949753275665087385841321377792 -313853444359512536684851140602363904 4326928743425473795705176271618048 4435813329910964668219519666225152 -526657930663558825131787829968371712 8684720300666015716035764154269696 8840750787302763577944233289449472 -960461865672897310448053438434508800 8566198249024615740680946277416960 2489975554438066397592637449175040 -546056042905491329298702114872098816 3402165703509986457320818342887424 3886781673866246080826914442838016 -191986914126865503014320395148853248 2417158380215022193026315254235136 6149631290454898886674774837166080 -985445483368595288473494592979730432 7961260637872233860479693306724352 1124276643226857006021885967728640 -526684304138903528241993331756761088 1402952299923142643996068717527040 1360042147404192868097525494579200 -414159213426677571253112246229794816 7340132404984439720508387129032704 7933471292011750148622151940308992 -818165309877480963304509384834416640 3368787036831972267429887838519296 6817389183137180916136784856875008 -624824512260806842232404438505488384 7286874780296904103701398593470464 8203449825249486528130392323522560 -222404891767256890260176627270942720 9693137569425295553272323783000064 7401572734753957971823990275047424 -125456781257589139401887651136012288 4337591187593535134065093626560512 416798425247298256731506376441856 -996558222949841354875338058832543744 9136932841146134359888773941035008 9386065771431904076728069460590592 -541818270431000120962218738795413504 3392314469953577563290378719723520 4625009262878666664898423074848768 -326363596663131815531383731941015552 2005080553987156419842622961483776 8672983933582492024532026666254336 -515608715517737076072977388240109568 7620269116994325026466741018951680 5680108408082350883016866426519552 -698305015235325961709664757920825344 3502308442431161696600931776331776 9762131479951706259005455380512768 -17739754897375169009640140827525120 8337027222356454629114230501015552 9949275935215434080765944117854208 -712445265799391245332035069187981312 3914697398491569850161582655406080 2896548812330620919743427951722496 -737240941878335227856597070536245248 4068771992818358932895909042716672 2065372568547422477486850706505728 -112402795341896386153593725601710080 4670174741908704602017447729430528 3504387297964227195219980635340800 -522989178172727101914740713087565824 6538012293920133413739866112393216 22143574626657201709939022626816 -250094489919805230037025190509019136 5963851827730773761882168393465856 9618684092394584756306388663140352 -352178236492250658046170179238363136 3239887295332310012593988559699968 1158456278547935248612658757238784 -653821430773519679234104453553455104 7402661188660796807046335698042880 1617953106651198645361789483614208 -691853756130766812108730751210487808 2187697297146490601172913711218688 8720697293090697937254893238616064 -835433912130969768376576786774884352 8796628569851051797211005874864128 5301906506317282707389739652087808 -52470665708785897122388019683262464 8596404789261162684970901016936448 2308135872889847475255119282438144 -515098721366316693585339708042379264 8848855583351635388894217857138688 4283831632362995416454839276666880 -742289501421418915717427356348973056 9611281064554276853696459289133056 1543932184526002675362481097932800 -848210355106442003719566725197332480 4289314659199378166441761751171072 6729742546552645076162127417311232 -191423527875202216845623588770807808 2464781413530018107980712559771648 3650940695258075773485862103285760 -208600000166376622039518251419959296 3880094813192188950739228915924992 8481690226922385317774020661215232 -862961863931506114601214455169679360 7561102956565163788106441993224192 40610260116276637656908029755392 -341064901441587554821642952160313344 8380526862424490973049206586998784 2174978533697599289183851079794688 -371196722928124317693545189832916992 5944923103384298720509827789881344 4283917949018851869471475547242496 -926546082282442364208471654287802368 4999734392502700163914060751962112 7818709959356973965289158323732480 -285165834142014320827811602437767168 8964506255224589436075134041456640 5748469064922273352746576333766656 -20235623978532374987268517531746304 7692618021533480511621642630201344 586736794098537714762890250027008 -196326929563216338199689198733099008 4070057952590263711766602005348352 4190352975319137527448373622210560 -15631379700630159174492013069336576 7979954670890191109213465471877120 2729196513331546679930331127087104 -443825648047155433983833461217034240 6402787711943121965857102920417280 3671134002039547693485227883102208 -196139550600724805132671284190117888 5120928809129245460440976120086528 9804970602067392415612645463293952 -131099586245636583710146788329521152 8054997759794652598887799442112512 7132062695274150574036347906949120 -606659167732221333471683460118609920 1324467518218845935595398828654592 2480387699458746702137425011933184 -397325058790144798026758463745425408 7261893545069741369765988883496960 6790491013893134871590276836622336 -32867528958807637359751142022578176 16031764154858634767478024044544 7708681404992835134741989371674624 -839745938370163921311104165207867392 8108536044767318587290390544515072 7317753808946037445110165479096320 -963410124503867709264928564622393344 6080900657152002337248471507009536 7238355021073784375658461811179520 -707106710914054206981242391464247296 2846949933955665819923573565816832 1879599523939428357803649653538816 -347676842150851318838763976906506240 423029672889655937454024666644480 2877585555248173496272255876857856 -588138921100627887317390209268580352 1737915111098110717613755437416448 3622369713329417857469724684713984 -638296730713104702234747586106884096 4807836598388858548144376960253952 9953916089244899477044653105086464 -514705283683087163714700006358253568 1951768397715483317859938060992512 4552593018150813830371488902938624 -667405037245878137881296348291006464 1634308760091576906044343349936128 4417299514945202719216774967984128 -10621425363412390757121692566290432 1701691971205586648340347528151040 3235616207499821338222202235912192 -473247901949361272095718358839721984 6246235306676638499442694582960128 4039333168676482979019703768317952 -334367535669863497418022270082744320 9551523110955027839684750612627456 8475616532098710223501752751095808 -22123801629982739244634227190267904 506404295957656199970364483174400 339863161472066896855027349979136 -229130129885428809098457275512651776 9387907296878812083134635307958272 1327476671531217602034225463164928 -414238901096598408935143481802752000 1571221643001299415875357666967552 5609456160451310792735127456710656 -527074693629659117847331486107172864 8628782468446285405046721071808512 5748135817909658571619061874032640 -649335217604715288004160632037310464 9312208324391077283422947795533824 4634632956961027259774156866060288 -921003563626759646560220149035565056 446006860897296878465963031265280 9057846266847664297879312361586688 -896232110552097857655923292738945024 3333596293321663552617862794313728 3599216367561715228326059141234688 -945437755394084580083389059722903552 4378914045776759719162293845491712 6098046986668062724732181343633408 -65231413478052144614069418569236480 4554749254738216195929604620288000 9767962261665002927834177202028544 -190528047384328232273755833725091840 550408008027680349997815272833024 9590474981762680071550966962323456 -846402556905241364584962231510237184 358149432463153150971446667771904 193561427205216532970159527165952 -240507243994337899767495232587825152 336620162684528675077540078944256 4980997316324239218684537828540416 -686379348544582645302483520961118208 6055723819474876254463360292093952 3377486674723496812567402639261696 -918376695155661542442303392017547264 9363627027052614648307430608338944 5062387652977007085183261183311872 -287647098504876725377473051824750592 3346887385332062597359999903596544 7763513874571680982038347281072128 -498426399863085178213515403611602944 5058764934660766335027020856033280 4392789290961357547970127294627840 -915690251548487326490810221225574400 4412861640892601307835452453027840 775481275524263824517789963517952 -669873177211627576633460778374004736 5260521061982492458258887776141312 7470624762829076681503463920631808 -992783851426898781495195523702849536 965268825134396024469582161903616 2134936921086502544367051551539200 -898800175402731779027737833050734592 2759495880380430573837663715983360 6308915825311983089286085366251520 -799870685501568941291889874673074176 8631618389794706571658113111293952 4031706512754306547765391409545216 -166661074157046375590833146300465152 2652865022343874504642450191024128 8646832711061666161888925923147776 -242239929959402184181434598371098624 8093537912689287119950472403746816 6668169559644871161611075471802368 -611260414572853335320237568681836544 6057440806763598357353771200151552 9509928159614819708565082729349120 -395542866223492664805764264833843200 5675455959769237776917136999972864 5046424519960863345950822668173312 -252273809227026402817728742137266176 5393976347824530152481436022603776 2049450730281458828481796771938304 -553657654662917788121703134015782912 9810962680621133607798006337241088 5090967730168579521729916905193472 -750357311740885866865693190036389888 9856222067152337556685357666271232 2564197000420777541226971631976448 -669652232220657303768879027745456128 5220357213781802334930336936361984 4082553021940441109702361030328320 -109162643734663881893463683630104576 6203855578555344019979983090876416 8878737006317078116909547295604736 -573795458351903984893337678815166464 2174824597523598050137294128545792 9943668535987086950308998769803264 -538892753833517664784147301584076800 756101606247697539759757710065664 166623214322651885284434196299776 -422797207823110984245389526923476992 9154431736435845565841433736249344 3996204676352385166988578157232128 -68391891825273712206390551585488896 882071382207466764166556452651008 3485669904363559101913658686439424 -437499652015065451344593036643401728 6890309671738066858149341493723136 9839930089709591599234169830375424 -154796169866397752579389813734506496 4603641477229584009009361129046016 2718501034584306241230691360571392 -716385218403524504291152974705590272 5058722437949505487582184595259392 254243343350753452799142664339456 -275227421481134965398751213514653696 2197517338178590091411511549362176 7581419874372556860105513479700480 -662512189450819836982987867310522368 3322406140291872231477791898468352 2419818027187745634131770142097408 -948863439140326858734433960911175680 8428795199716905342260012350701568 2112340976943846538944332496371712 -411514946301608542535026587566342144 1124987018556914063293163774148608 8788673312046778843713959119290368 -136085195657460806217173873671012352 7977969377512000817908567607607296 5838604819685869179042030241710080 -5670130500810387834618410780590080 7997388398130301589386576441376768 8625884782224354546849832803237888 -161611596802366683660753904429170688 554418006037816305813552128589824 5414668926472689244451296803553280 -280223992864170990564269198613151744 7684887015038602532289023911657472 2605048439049961091608152796823552 -615235521022265528706951018044194816 7677209872406368935166564963975168 9599314602122173619144158215143424 -241013994731712783268529159521959936 8293444358799092583453101813399552 9290076390141426704611311513239552 -59531229974988081729489380529143808 9498691142624480310475246454964224 4806980972232789945740418724397056 -716330983621761985581702473226125312 3043793608487368748672676198875136 7584441715017234966291916544540672 -137586326142860732618828947870711808 4556003579942559076135164868296704 5215616218365915107115432924938240 -24829340278614453099668610066939904 7773068810139245530705652380336128 6746420159684949744590337465122816 -464007539612553259213740622164787200 1074606556316777918790892058050560 5013362616738404851015460088446976 -403221899564395836565966610415747072 6478925962961438078890157302349824 3905666810051191560391379268927488 -531426728709978388478297362019647488 7015382471536182233188719793274880 9809943887942046333624044622970880 -146510002839907098059918479730933760 4396446789214685981055607713562624 2190006014640869829754285994278912 -518686177670370467476482497603174400 8187760357272988189469812589592576 5304892059554856603953740048760832 -584042036524619433819539116105138176 1811722746859400958853270818783232 3804135381818652434467185143840768 -875904659198845069451838257427906560 6922677483532795059315996903866368 5994199282224164064998642514132992 -409282749392951013574395580286763008 5321835926461568701453171301548032 7925951923219829564727043037331456 -281467028008393207567771954988449792 9460524117667173971348714378231808 5185135348420642665354298245775360 -887974209990013803224130884556816384 8117233160516842064301586110218240 8063880676620592885321837855113216 -146420302605780809906162428717039616 9287215496334288100786959697313792 9246127264910948006741802194305024 -151868021579396192299145867670061056 874753353894508586191363533438976 2422152076300982015663694036336640 -161353888374192513377464387874324480 8831040382067671681077646213513216 340716586671528573353995534336 -488932226711855910211418392822284288 9715027072601166380756604540682240 247044396100624103074526505467904 -852616069519216493270789874903941120 5445030944085784706709261893238784 1765278399999907210149421450788864 -607148428880052331861659452929212416 6334461406810887342461648302505984 2685868832592919323734500603592704 -779897318570131838625091808955203584 4725907049032671600281170883903488 1078827399983714402694606337605632 -851875475280348838416811793288527872 5965524451678075892593227112382464 4146049172087931049024296511864832 -269097380060132575348702510118338560 9310034756945050276785167666249728 5700917102003883201101165678821376 -799047733102896073699195867629617152 4651983231981162171057544106082304 2218920011223161196400267224940544 -293796848376802705220596970419126272 3533694705318072058925387129815040 1358907331492080418148580738465792 -786353944874531752057920357438324736 1555136274395562009900791688593408 6585981599217316437259911641956352 -166181852868560397590441081975078912 6128308201283879594840397445070848 4312823297038096291691769983139840 -436249843580671932657340273970380800 3212718922688519773427530723229696 7800635123517682419342995863109632 -835350297241761259577776642826698752 1460842160763019600890935860264960 2968285977054512506305779540688896 -109303978191248609612170080815153152 365658496322053756527749355274240 5950042869673747807469774024212480 -97384986794825049571432881490755584 8591672420885445979461263934095360 5859329077395559997656652947914752 -63281411003867094602513405284712448 6705142828415087261189513506979840 9403008307396257940488799377162240 -262797480091461482674109739131994112 7235193503470073036492093190569984 6247716962543055311515988864794624 -492486096127114691523847259764555776 86270355121045538010216076935168 459357416660826110360310134079488 -60709196112298515209441081422774272 4108540869126271627445477283201024 5101541277230961717380071871741952 -292538445278696349724289544856010752 8249744509539716141787833285214208 3707739510979853859096176227254272 -197211627659212732451181068520783872 8155895535187219034979961166364672 2323241471678206377205293706641408 -340844131886940088756315050781704192 4237824312064288025562270142562304 7897904147817510336871697211195392 -34641147866739736720975728797024256 503492448821919371909068302057472 4819935724064041152221548491309056 -421693662301867752723522270049337344 4751919799607958281458349338787840 8423191547562731137163038048649216 -925501888305496670362149983489097728 3084224915475961505507996118024192 1016511362326847793265035981094912 -51155711436881354331568649550168064 715676229233813984088983263510528 1210596626993955262109517608910848 -370984143489073063201350906644791296 345201038836012855747292161900544 9949070001808946431322238717263872 -585429565038721939006266837609480192 480355571193226211582894715961344 385987076028330155493060490821632 -624115396304980882994959686588956672 5482471120917414986950224547676160 5368989237878061932965677708083200 -195303845072705422728572899615047680 56674200786311645348435096240128 9058517283126960654630302559240192 -491908269248513139996656387668049920 8173697989382842597659754597711872 3786715144718443832739363119169536 -351732779213822360896289382579830784 6841964782378403140509894134726656 5090196907093522527673992278441984 -905517293640824009405278428040527872 2533345222223657239859152904257536 2854292524812413582076134886998016 -156988045701390337858325513815195648 28919481306348418978273084571648 8579377775643409058675200020709376 -283815873395882234982832440208261120 7582822081451526788829990763888640 5840156104495722054291949977862144 -977288401737991046610953021377478656 6700872901102123963273645846953984 500850725255229055068465377837056 -437653922707470281626375625644179456 9080239445924449538138633523953664 8339921225916854431042862443397120 -494622056903291057247176924875194368 9720956043129389929195915320492032 8034664805130066287439356018819072 -171317866489251172792127319521099776 4820259131313965001614253650608128 8520391081057642080308395270733824 -186318690895430754986353543306280960 7767688270297818498359111924580352 7588785368350707662052950081011712 -665073739568351344805872159682461696 881076275538702180378207051579392 1178541602849956504610374129025024 -280415248435422792642496931374825472 7677902133988882997804134008094720 6305923995149209994241800191082496 -87080086380361256044949713608245248 7399023420531640312935010927640576 3155467166425212113793502454743040 -374512288878810900555046345747988480 4265734803668297612042719991955456 397933304776785922489031258537984 -7182433968907184785763198417502208 7321378823726039231761231680372736 6591581554896108368962204249096192 -142546297409917751535494845775740928 57795850381936148825883984003072 8074951370956945292861711065284608 -924701839616336976616405376782303232 1734582043923928540631278536359936 5596177370433584662808005284200448 -633374810437933526980384406124888064 639856025067030695086610406440960 9969987722113818320144332841025536 -380711845004570965913101561478774784 5385417599614556367449667632365568 7757070608543342850491279833300992 -160528911100384183582298956839780352 326865231394209441973188790583296 7733812909150525378972716342706176 -705599479743435603402582133674344448 6403378636288770070323384041865216 5124287680645652437335985583292416 -897178895702713412419194634102636544 4328379151512175470789798838403072 9130676498324595751294774271803392 -659065982957924772512305204988739584 7431151991116081492714285883719680 9140322047123847551068449682751488 -561238865274283736052157455435563008 322769463177457035916765663592448 5279798756980814545738409382510592 -854066407388609670001670553058934784 1173703149305066726571618332573696 9409247867412611067611851241029632 -348866937738143504521156190609080320 880381970798368682439027776815104 7021042262493884858409507570581504 -87288649814687341796291358387863552 7341495087246429010933513573105664 2224426163806774876438471360118784 -441247890984618939160850847817007104 2394106379393213609351693648003072 5792949618460950218660350288461824 -545814349265694325953271485425516544 6193112121426196842872842905190400 7953370759981948717885006458912768 -508494957277547312985202633629237248 7203374693386673916886134055501824 514912800002077434246090639540224 -171319773583286688243381818651312128 7869573002698962877049382258081792 3175799939905528221590081727627264 -918249972622326573576204113099620352 1221079867781803680443743017631744 9997518943941401709019028340604928 -272592092687469519591465084625354752 8337607904733512324338243113844736 8886468344344396836491420931981312 -842416150802137319003702673937530880 8209640395264360516787874090188800 3987130777631711227094111455543296 -875918842343782279576007621413437440 1478904452065132824276444611870720 3832921420044414954710397003759616 -256068074762437474894751165394714624 4385361904732621653081269951528960 6442995321780588955494408404336640 -766749240397937741831931021513195520 151302832461808650711137972649984 5477081306233001846822112960970752 -598263601985643364428438170232684544 7647030194229787923458029149749248 8196152267059854204518421080571904 -224629771136725420711516954100236288 4602213740481221635798698823778304 2598542563898967925393490471550976 -751302009146063971619564403403259904 7435073062944622850996292221403136 3877736404086323654684556516130816 -694141047207428398099738265405882368 824102104864458854140194794242048 8107658255333008563294683598422016 -464632932718356822272950835655737344 375555312047231422200117662318592 1445896613808269026765723710521344 -688423561666241071075659907606773760 2918499902248137611928904734343168 7403110678323864250869479265796096 -242167784945129243511030779685634048 2714796079823021896528604352741376 9111076079215892462684944639983616 -326134134609179506021188712360050688 8711285575952762412442175588532224 1032258319967915059078569421438976 -707168770063661841236834679370285056 9517844446760376042582421515796480 9501590684715132947037569173946368 -378938461948192090974881674235478016 3109920686074692919448640352681984 588486455202097919723641008816128 -809616575126699121693015344299376640 2316243161848818438986632569815040 4868286554159854299698384317972480 -607161209304538361250690722376450048 5026375860696555340090017339932672 2223113483165833954002847022448640 -464897811314668322990934175269257216 6018219453928901574168407932141568 8605058186419665598678695491403776 -297836263967417114928639752630435840 4307170765393261332051913085026304 3977166073664394818655578805501952 -768565377465790228481249709251362816 3546370603582331780577812052705280 9635911026561006069358183554482176 -611491628839898563530815031379755008 3064337258304601329279457334132736 9914622000486381203501241524551680 -803678228020223608979201290856824832 9823117889844441492875546778927104 1759403376217439381904088778145792 -693575512939773978933466182065324032 7772046571238309766410779909685248 9732376758126304445826732943998976 -752158736594824750365625381682151424 3110411679299915397246892602556416 4032304610477298261992945789960192 -879456673655275766614972444782362624 2882307500471029588887760300670976 9825752509103043781183845022302208 -626090262183117708807917520367386624 7649084310691404103793367607934976 5056453639768977134588361739075584 -53694685402157515835171447246946304 2985760486328092709265908325941248 7060297753567683209944751419686912 -612312763395169142284552665649119232 6547211780807703131987480433131520 7680252936831387748658374705676288 -983734783911320406876744847743516672 8909152998303632310075093533327360 1248955381398188274846686303485952 -270158638683385023723969453840400384 3232368789260004240673081921634304 9131009180417504555547545955205120 -113810096412551692948361346608529408 844902061235009327640755333758976 151810418150704487811667543982080 -693074121427153017132396464863969280 2968416469762695021560482192424960 1918495262048375875835474185551872 -789423528213717558151536897618345984 4882827588707259738074668169428992 9224422697039465882409570431664128 -758432001626398346965528813215154176 1909273682556024049715067748352000 8765970662559839785072805554421760 -459573081961863502849581769514024960 6665730258850174027718692310089728 3820815220741259978592769078722560 -156082590531868211591636907827658752 2466634537911375404686149997821952 6171123715615739029583876820303872 -779927829201181549299662381576617984 5099638628608539933800158464049152 1354350714169901121604977443209216 -509412794773845471873090329923026944 6178729704968253219570521567395840 1828780923769559191292261567561728 -710833650855876048427402137580863488 3774445293803262828124967991771136 4869717902896287262536841748807680 -692395336526042482444430976231669760 3801882158377403370055179844976640 8970048770389395188107821593919488 -901132124680218218416553093373100032 5041762370023578973370317572931584 649520660844253929589677842497536 -73394861090703376221517509910593536 6761444389404492927587774990647296 6661941904071907417718248370601984 -735566864472423198382671597427228672 5509624296452535122164560278061056 5333405402918987860617868271943680 -978778411841097419550617224536391680 9170651481514243399788926779523072 9563825829078966652270420156219392 -237683308649116651798491240247328768 6245352486928164377129567110823936 8123681951261578354591405145325568 -149292088955344842133322166905602048 5778123000616660508737814434676736 2802141727190030146639420492611584 -269199536691626394660518540429230080 4977419265254157899625558477635584 6804119678723880546203324506963968 -18187836660367421452083490652684288 4781578891545375447373922944679936 8471477111307782963810022325223424 -609370709375156553960578677991276544 3542691901467339869445781196898304 7686469418646890762163356493152256 -300833732507736618856802915847241728 6440304660415416766947274266771456 2594598120726278952630605175586816 -90063782453747486382293438173282304 6454599651900967829143141344083968 3814841955940871967145480649965568 -189845935033618136639268392508850176 2485887811556837408774414600765440 9398091998469461573383670628089856 -743266407835009191761065094452084736 1323886620924987284491231243010048 3035812744235417448377304653758464 -169546010979118698815299548813983744 2245724839333960154566714701381632 3422139291997569849863808055508992 -897312288780484923348501304457560064 3674368155817701791299048006746112 37961707070318860131425398554624 -330237974506764960713734348351733760 4852183219102328691432711467827200 3631716527933348299573603956948992 -128696838094173301898291714967207936 4466822539654515284510333615472640 9396179603728896965961095430799360 -278745605222130963139745884015689728 8616098125774337736793664421625856 2691033089600870125297998877425664 -292041044930732621492995464726839296 8072959212762759302646337818853376 3488675732726332532146196661141504 -684885068484889460694686924865011712 9732371580360396284399720662564864 4818902319114667556689815990697984 -292802374468001479808762726443909120 9206152642485646184375832788598784 9817708524615925118720570854211584 -909820733961523699575991207018364928 3915695113237858981435156608319488 1815290714018088474952495381086208 -738555149169759715551506877932109824 9452622972374878837552530099011584 7241793123408427444490055532412928 -607712583887319906531768198789857280 606476377449561346896527345319936 6671240123171231840948517649514496 -497338266455847006395875630199603200 440842706691133130935664537239552 4194983722471927774509927145406464 -111265680566971137493606347281793024 1284360812732232436261053175693312 1409676889457478295524536536268800 -67568396862523075377559550461739008 3171826477951827679102035069763584 3812345176243043108354037183938560 -258530578701378858438560502526246912 2208540663546711853628632479039488 4032838045158376718730332825714688 -60059843004228993479322534380830720 4954431092382351925102009598869504 6332058790972579679158714893336576 -295197619374054423943223961318326272 5749100366043076678813567565168640 7287312364068369792241546347675648 -426870499219672546350399727746416640 5745233650875216876148497647140864 5640530070021719289501743463792640 -657943787878258422874148751900934144 2160129219939680560970343510966272 9902423445646047146748831015632896 -783123202226741428207360113968676864 9237224828221024250055607892049920 3122515453158028401583931177041920 -104562529552188121120437442808119296 5731401459612561243127001041076224 4566410205698723893200598509551616 -959770968347046088776773351814201344 905765091884888156238372575117312 806680146981631386239866543013888 -617470548982025052242941610517594112 7554769478286205573463725066682368 9322563531648311731170896525656064 -461914320122879876917276494314602496 5728911051932696674446779342651392 6006263856692911159153154295070720 -824202560541378367886967066838695936 3091771970658321900415289388957696 7625749524991745306138605160235008 -575141909921966816120130497807384576 1661149126453091751931499587305472 3872530510034313523353832659091456 -971306646565011378995629932400345088 4982253351549762465772018218303488 6367368465041561341995811132669952 -223733401204462816442010338955624448 6369953157853201107074054956777472 4561053155421283452565600583286784 -521050043204041666211182356973223936 7231093988179147741104496036544512 4914508258377559840003207630684160 -427810181372723555132308038979944448 2235144926358440257398521141919744 9883346811797242046143970334998528 -84043787822652847776549625973964800 9358748542078861317813268836777984 4686417296463957367867668541997056 -311514133687652294095066973689872384 6189688599077525173988014019313664 8711831605769810131935881836101632 -225039236653821509572586579764969472 213449887184173192731524375511040 1059732762898178926771201361575936 -627232188098704151577628889086689280 4672948003535677776152946326634496 747807570609585634260014036156416 -984544566982627486612327815622688768 4540964825492452244000425499426816 9209394361085605446628551598014464 -408192481464823352447889460674166784 5750193692206886176604957463019520 4860093702202041735892419760619520 -890880331588856666525457089474592768 18813368835942801457167611199488 2109265197262437052866817366687744 -203436696638748867717688316271788032 9860107576154871004986634575806464 1760730870231615787990461202825216 -92207971680689937686447832925470720 3808629979513170660252690881183744 2011985283191205734692928673021952 -469332515712264799445377729704230912 7577372913524795864692051536773120 643304769971959341717191525400576 -593295957861804266685600361122627584 6302461586629132813183397602000896 5584057661071850578986232174346240 -810450796048848927203047548265693184 8694300240820624073135985495375872 5502528872392221913201947378188288 -328547490024133706320654483574489088 5545913193889654745818142787764224 171222598528300087444145375805440 -742741618509189382892987397076680704 6958954158807940388302543529181184 7965077722944827026500644939759616 -216606253575268085199394590976638976 5431497490070863725654153013231616 6128386021329057679968796707651584 -691106980701265461489992759697735680 3966902336253632963091257960169472 5671938072458094020868563846299648 -967244604066937781375076043394646016 4228624458307549351357803365662720 6324942155341577787155557059133440 -66873792844219257896151569378836480 4580434077257724605270887688568832 6886538107474011511074592160481280 -662815219329680546044707386224017408 4420504370456912719221009944674304 3138671331897280963454657760329728 -620044263964440831764333055973523456 3560416933167070607964222450040832 9677286413163892865959736480104448 -794146114292994111674738436877582336 4890126221480896264626661973032960 1739064358096238132347102222614528 -757056103853384555649806541741096960 318432407540184662701978150764544 3890102458966433436944361102245888 -129521342574224628911383209972858880 7862448034775288309386834610225152 6363868390625638018839331437805568 -817747803765975683151243858558320640 1450870340277963355828018900631552 680896009384470454275994017595392 -40068187207300667027454385847271424 8282689149178927481956948168933376 9666315292236033553256300626837504 -819122169082599840905497937499389952 186970177948678940737958509019136 7621418651030925947543098876755968 -118811721077948756041229494252470272 5282197725494321674323693217513472 8339269833907531610491275551178752 -199884893963934871815955079395016704 2397413600627626767238679333175296 4787277892653885364371585117454336 -501203808874071254351088392947630080 315843342822647558861253246976000 7734160103764345231637175823499264 -32219699866845330256594667254579200 1355239439317794728665638934413312 8904022046047069315540935635894272 -372129455744808948059472321830715392 2004663675174493906113579641208832 783526638500122257728917431386112 -321392810956174034691620641634779136 6598300754800147621019344097509376 8830979217450601946682013333323776 -251935624427818852640942327915872256 1189378327386479024773155132538880 9425902878275836555023493994905600 -137511725950459345992745599916572672 6612803554031375850534197732048896 104559814371426085809784237326336 -72784205809012689705267751293026304 9947157267826916455117166408105984 5177702569509197076697521345003520 -296501279817218364657413736869396480 201001402465097083605988950409216 1892324551947881176120847352463360 -898490756691631967798254176753942528 6261574069404818555775657111977984 4580944151356093370357229547421696 -943410295151388535140954426960773120 8219781963102374379249364245676032 5744432574773752633738954027302912 -119240379472094109633979829089992704 754065981164232385766318858567680 6671889008456603426901021998186496 -893106488082848998383073251324592128 5640174079549095826571550311579648 7252356325700434122419781234589696 -872205428892118394416483827592462336 7794067480440770302471511845371904 2541662421998142450105495819649024 -586934181849998924592902305709293568 4500233226239726339150839086579712 1003884820933233283731272094449664 -523536806187623095104635647087869952 9380033644583032226590900290060288 9375146422058291719251040999047168 -4485772610993505745728633575571456 1410825675941888934639259506180096 4389699511475746516230162677235712 -305423434488033333608074561720418304 6125016574707420937181452495224832 1834397812757690214876795350548480 -958324385935433139319405248648314880 4222729688982855715385812229029888 9987860867471240421563358452383744 -533605754960036180369326989501267968 7757441690270436861677338141655040 2744879408187132719108216399593472 -403646321426980946111223292932128768 4119805897934663258821312758415360 7557273039916920522564082488836096 -383139969839048658350833984612597760 2837024911414311113479996756197376 9139917944631425080208342028124160 -711833056591122614677746555476246528 3738286298131115924999305942794240 2497903241019326375933076427505664 -973816704311120741922315852274728960 4678605699132569103632637834035200 9881567295216559493508677477859328 -181283116513754524300918380281462784 7052605717731519544248831456575488 6535048226926082573255391253102592 -517486161224577600447725337975980032 5981708646140117840824852470038528 9434301361183611987251035430191104 -561808281975649748134532165461344256 1518623434210397917006964384071680 2595090586084789453184046311931904 -999476328617490254179935818826645504 6488116613996861754624028289531904 6291935093868807628103142319587328 -206826063971085227519475067771682816 6304918998118962097371095228219392 3376536184702098125607263346360320 -951179229468004447566713996756123648 1060350154806918691305436697591808 4329622206262094489036517764235264 -137249353142803601102280511180505088 5595408805433148924624974316044288 5841503647956862862331761198628864 -777234889410825986544649496487264256 2212136931166124302218430940971008 1163022546895494150865431839113216 -346107065862285069174857822090821632 1423299886776694235443396077420544 1019902631381059090157058952003584 -76101763964356701325180735993151488 2031435132517059960072142271283200 5276868209654953621084934479282176 -178530480436342992442072575284084736 8298469308769591825829326271545344 3561929291812174962331806517428224 -416532465534794336378437761411055616 8078357565499406767884971733417984 3966707000923464450173830529286144 -820236721360631174647451260335161344 5114778907584610092811985384112128 5229143549012204082628518135988224 -615735672525788226157666175104843776 5683408069151570498931980184322048 9800679013431461870097818986741760 -458303643126889759763482332532572160 7987676738731136784632675494264832 5185352521601438448207402643750912 -416272016686155550466511241583001600 8779258300639361675935523589324800 4059608504695223319139508056752128 -360007089917569581820483765245313024 2013095418339689335003465304244224 9459568598779824711045430217015296 -491047172162373809197964298928783360 7153919077935317092439744025985024 2625255371057438378706488048746496 -482463610208762667924633482338238464 9020903943400640860110426732494848 7668386935102685019637486224146432 -865955112660570387744869550735228928 7901474388468869807062180578721792 4504575528712163571914315046846464 -482962904010983745420454277180030976 1470288782162708950917492651327488 361318672945862513864337721917440 -323265911560768213046695442012700672 9330327718569913104630513481547776 4662850515053029726662288060973056 -36717387515792152052535288389435392 3241137818207072793090867073122304 1942381108035233600340532133888000 -770682099969468815318558396425175040 5728769684871163186147511402233856 2449161470090967207701391622537216 -665006851338033498267193786908016640 9272394627280439117759362075983872 1086355467937477338781897889677312 -233855670156662695950728926165204992 2044753017518165969459809945124864 8125495478704281886073883340046336 -803305353729211758950933351261798400 7889901513335978938984518312263680 3732480203286274117941423117434880 -490691623369549347410612588491309056 5154518738932022308357817182978048 4253465766322152563029256525840384 -195599388571137219193438576108896256 2778526551377446225314159622356992 9211640151738740117419499454464000 -452613701909697005135970707701760000 3606434103989906853421434665959424 1223916814563649617161134710718464 -766655932991890616849194511180496896 6917356795836544961293225484615680 3388474526253547150228914893225984 -640464415749097767284144814210154496 7952524394855013853214689378435072 8573189994890330974076311563141120 -765844113555805205590520973951500288 1245802179220886396953383223164928 1138758626988468432604154170441728 -679975919744309418286096097239629824 7948747834009319971904039610744832 2642192216539173713599838919065600 -464004886147909737238624999470792704 8159170873204740603706001403674624 3609837702664494075842075614511104 -459966282558212704193017270480404480 4035475791316041087018157863862272 9022882348991744928949401387270144 -780191439723123665389378242900656128 5022197985016038004959298814214144 5710916048616284902768550988480512 -235966308535167951065315985101684736 1715218729223144730215071617122304 8674492978039436353753532006924288 -309130015758975851474519518265475072 2170286841501151886073846407626752 5767282535110789057734860194447360 -992482474995147674095569789624778752 6035539087530579823795637732769792 6428273498156455651919171134947328 -628126839258483716098771640777703424 1268558813842727009248346296549376 7076421088921591769717207096885248 -941917016794168820277329837749698560 3905008442715059845153400224219136 1923188527731686632199442814468096 -911375095681012959640982587311128576 6553945780271127803490447606677504 5365259481080898196480184327077888 -819425736310459458922251739665006592 546521456725458701031432322547712 5749295673745543333938896562028544 -686954895681378539226504639329337344 1301299290008650007786601444278272 1607163373452301332886955281612800 -508499890179060302256767127078830080 5470429394314665487624134268551168 5774901962400214128418436302241792 -14688384973085194084225370841677824 4684149717110777165818075839201280 8010485508723982031426939890171904 -809568171593316032445781404605743104 7247680200534235902981205043183616 9406020203872258507757659545927680 -903527109344262319156674779253047296 6288474375451233008207051328847872 4264887049291182892066894692483072 -191657654468895676537975841302249472 3737215629491795088416203241160704 5553892945168460333169302646554624 -301557269305252534252551145831530496 4959032700930091279424669955915776 6969954981656355648375794788466688 -851206224019799366334092008595914752 4153292195641011152012099043983360 6955639067242784855349067503370240 -730021019747144832314649636931371008 6004044530550456007055073672691712 3088109184128273263048384525107200 -33220623793247861015984643795582976 4712485433633973735274136494669824 6872513362433955758357257721479168 -336652214072123088635131458452717568 1025745799574338484070237293510656 71168676882106136337751931355136 -975207194687331306050299429077909504 7042831724038518592832099596632064 4130817240632899957516683471486976 -822779838306563603056707679348064256 2140275192947320902275336088059904 8459593778720455017248717128335360 -907527216908651601749794552853561344 1577103098713749466356521099067392 1281174434784821669011540133543936 -778896289747858868609111049021423616 5408637734465103892060057542590464 1147539250213375085199348381777920 -621801609992122466690512840783036416 9498829372025514372425906122653696 1799391270813430850151233630502912 -745467965146810126027593309929603072 1078255102102322830836538412105728 8575644073721533070068836059840512 -495843713734111130712037463552950272 3306051948223344358950969288949760 7946626297528309551430946449784832 -174918255498985673832789501112483840 2979645587346374644204820972437504 8864627548788143840057478260719616 -312125994478346613856236573837754368 1148066509322825782845147661205504 3820989072880320459109519469838336 -987033345486254250238869206472851456 4906886843185723949518612739391488 2393747439997398443218829840482304 -515532051039962631016700890476183552 3345409175687494851868368681566208 262698562266083895986175298502656 -224872052575788919734886337962049536 4448909453460362426618824890515456 5869620993994793649493164079185920 -199441072802439206726854412276334592 3498877963226144260853539016802304 4030659586984914192317423032467456 -52018755797425301052430584068964352 7907266811989538379101405701996544 1466578715652361830197313983741952 -802844128249053623845937445605474304 5443309984044649070366634274717696 3615504057585871423498792304902144 -901648289287178145992351420614967296 2300773089791007482192572595568640 1985797082570692612367193143771136 -522523410683811328170178546021433344 2057164346005694811070894390116352 1892787743615238159972843250515968 -962213570763628026500683528486780928 5547798324364355096073344458424320 3283584699227967829680563800768512 -617123800039447162027378531329114112 7243374302084543240669983999524864 9209728570567211465597855918456832 -7186711900580880091000089241190400 3536376467866668131459081961472000 4057713236657921472667780686807040 -690675093463244103946586732693028864 8457159067800869544353155644391424 2433662090609472846668724042727424 -478106418635151907651048580115857408 985866151525178789114861108330496 6825956475504215614872258749661184 -426102687604196365533263448439259136 7452018234614204272955849730686976 5588616392225307183398521535463424 -674423356784334490231048236890587136 1755804423742218212899182906179584 2144843611911099573654608811130880 -309086717498484948766249665228177408 2058594704645434101814711222796288 2570493465263317398175694716928000 -148101028010873007381928752707534848 5911666732207898435328642954297344 1668447610326773284473011343196160 -430078488433685472172456318383161344 2930964274924452326781300238188544 3324472451287760848688067807019008 -426053607630785565674352919728619520 9824015665761279792487097362808832 1353431872529915550436396233654272 -604498992231785363844882095939780608 2324919670940700200928154881097728 3751910199611502634114653068722176 -803672978906419019098732704336707584 7099103813286234009841401673547776 7678517135789311888569139049005056 -957852445535906407100829207344709632 4677395149378852577480000688619520 8985998793948655492595992078843904 -657910664428130010460220262702907392 1993459761832593440990482594267136 2662488668879853706624220094529536 -13989800220282389327453275065155584 404225907377725369703860365426688 4392889748612344759204948299743232 -580729159918674409279877771822104576 9005821487225777976095303228456960 6840747834427233414967460141989888 -818261640475674333339048043299733504 6558962379478492395304958579179520 1164570981083317503230052478746624 -817100119589993543114796663868227584 3187977022316192168771648978157568 2864648250891185562318385860050944 -886402573527540747480407892146782208 236733410993882468591624798601216 9373923459801090811889729056800768 -234955032982076307530985685106294784 8569355121497807091580277924823040 1878646048209896803419718812696576 -65072898744196132385145941770895360 2172407179073494555395703324016640 8616435746141064030176281960120320 -285609946515473928205805110844981248 2604973547853309794923646919114752 2241414527536813835982757068537856 -756543094629580960698922572334497792 6582969317401681480367361524498432 7378775731065984172388173920337920 -99093723027521990693661554203688960 6749120418268308321817770586013696 699083168928993049457746996363264 -312048538089839513005365377990918144 6784674494447221232506994908200960 7591832571294359226200099385245696 -625993560317158035361238809806110720 4787359585702101710006118101549056 681219083497755235249009088004096 -131717819003588838812957561726173184 9744217638496336761236812663357440 3549789715635963375716872088453120 -453544436536513565518028573612441600 118173922187290091397980482437120 8700359400152296442519613173923840 -731227088417764732449563371789877248 1276333660200879264563502023442432 9340863125408880877207166006591488 -713809492650946881041071180355731456 5305249314952992626983337763799040 1627320055189401426191104149028864 -819474148123865211673255420180299776 9291886294834621723636160801013760 3768585769585987002550124430753792 -331913084440429220795807004079685632 2234849811860214982580890777944064 7810111076916346042946676320108544 -131885249668268776080145655349116928 3974413116394526264067545970507776 4172102001638464116702725588123648 -149396163720904407199248399915286528 6063890535402035016146864035594240 8636784829703193649026185811722240 -475036373397562806580194953819848704 1487938572662883083526464071532544 9791705378967851184139190486958080 -406806987790818891333434547200065536 544414242423849314485982084464640 9635012340378169835496209907712000 -870423112574738320467408452021387264 5001735552315252566767804790865920 6201743691495509833014041890521088 -344699814936961546177899337175007232 7309383767689913852085923976577024 9714621993825902607849786263470080 -552961352106992100470814203434762240 8774925171656333779302962931171328 2848844135117989821370777479413760 -735072657537849763178423209254977536 6717372915021195802285886761074688 6032399493713019233923851396055040 -840851407705747663100467432172552192 1598587696589601807822229384200192 8073721976769763316186072970428416 -502139359391432315379827264003768320 4934789627172798524990984271429632 9258760720271141106784578190704640 -880362453782307867535805207275372544 8578353686978575798765067060641792 3611927392713554936066472675377152 -962656852121053369248896685160005632 8607991507589272017402774708813824 3698672695044389868288931467886592 -74645367740249023393389975441506304 4821235164818609656030012547006464 3039717034706988003084143450652672 -712093677041009139730739231954305024 8411823809133559356654927994683392 4823988535055813881573081461293056 -231190150779314281522940305163157504 2791094431825527211372524674744320 4667928269720225899364914061901824 -969948268741624965835328217199673344 3153182557065731129442553326206976 8304185276919973028089401201131520 -334116275574350893972011561544318976 1596337880981060299987698019467264 1142575555452081399620629258305536 -442860674321712001670181424705044480 6763596642478042683942335609307136 5111094445917741837798191728164864 -616110534881446080958740704526336000 9541689690293837649164147538001920 534240593318409436019041526349824 -492918336997789192571358800596959232 5283203520831541937616133422055424 9438636020607748663514463402459136 -958420009428579779473970466517942272 6723147373694275941356320942194688 8266536114956876845572020976484352 -688995879959161127069721997193773056 8126200364654670873807452083585024 727130574409728441792579944579072 -36374389120851911369823324882337792 8821600623879779990021505785266176 2789683132536056056414120674590720 -783405935855412014904577515849777152 398356188738242833623721397190656 4788810561760921503340570425163776 -585633160301308918584159723208048640 2187053548185470642964384020692992 5620856652526017926367269693161472 -207225124186021132016272784226254848 859081161521228290722489826279424 5562719069283225413724021779857408 -367448928221861112520442516183449600 6627003161225862985121779400310784 8439658287410533779999142428278784 -641444822753798517922454566594412544 6568309846541848604200288053624832 8900996475194482218956826177699840 -535648784508074920228648124952870912 6983509535126954076755472813129728 4124645958698944548268937968615424 -475559335829826168085724953623658496 363930659255268163224369436295168 3671759769286714130841197371981824 -506874759480481521103026390543892480 8341210179105915841179460692869120 1538742009456612033622892418695168 -329283402553342466478005937231626240 7062420963284933409539396133191680 9241175058573292577413859029024768 -476146711994225907240419836576137216 3038275178486372446697220883873792 7456981967764639324423569903976448 -790493716118219135766106866964234240 6168217824478214932308789374746624 5960836159605310552836325725175808 -775114124217154377579284170262183936 9395948217431299315578830957051904 1653307951525812817920124067512320 -537017981681505161891426445165592576 1871346664831657853531003140702208 5035511903369557069487932952281088 -917379324870385327090697253259575296 5493395166020339137581083940356096 7963975287704250638130806763028480 -171459702864348877181329115233386496 9590174004910791903221532283895808 9013121719509782250214052706910208 -185353532843769803797629477549244416 5923478266765105260035173638995968 8187722075858643112688694142697472 -159174547901719008189354308997742592 208911188611414173006647640719360 1177014710161061797406920880947200 -434142587242045415218481541125505024 7654829098124043447582676404404224 5702729777488413302203789210550272 -382717182408456262500325788418572288 7434020328472771836528776620015616 2453947504278795309728564280033280 -283277991413036386273025926570704896 3222794605604857780236527186477056 8276292542955776123691581818535936 -637395966303395592294788785456021504 200730127533762845033736616017920 3238463867525412094399943882571776 -776527509717919556891631702960504832 9397986779072316318894969615024128 5151485340794448851482194785337344 -474533711965373058443564822890020864 7018070053548673734650291023773696 5415723693340920906699460399071232 -903991909325863036285662664507523072 6098706820032657891744799162105856 7058000194412714301763235455434752 -262606345976125469918442363543355392 555805435080279615113225205448704 9623685726276344711471949458440192 -169840814397089338735226495728353280 2201367830804358478782973528244224 6451663259087708810631255234183168 -494316338899432665646785588161937408 8369458900490325796514643157450752 6511188963669744785825744868605952 -354104615876518054872006488370446336 4885296744979081165196632453545984 4399918190195889115401854029660160 -615077512972389157133719977840345088 6426002790300014177028488011186176 8561223414238387609371842311094272 -563463024043603745360862821230837760 6396129424954410904555072390168576 1399723772214961458963022948073472 -94559564998534712320605330845204480 1868073560313465518417835894767616 5130298760241843602504466227527680 -950168434058301418170168202575740928 6699838065461015708135624414330880 5389638051837033746633953774665728 -77846873351374219359423308056494080 8270054396764893144751801930612736 4068271928905513380366406853328896 -626917594649327088823121017751732224 5911473145288049493454315577147392 8779160735051959512462722773024768 -426797451108649600697969794044919808 7218023962271261121901957893586944 5684375956048440077071832965971968 -373036625707062265663901213082517504 8049819575104173378585460083785728 9035643400339923009326704633053184 -907758100088299820709960084055130112 2034947972491786556189228457263104 6096928982793037095138222604812288 -288989926038037368481721710268121088 6039515562820117109112207434579968 2847099011686547037066759107510272 -239470857825191773098846982057754624 5723472638691265374069970782126080 8016940751317378349672198228148224 -463341573166162529849497000005861376 8460972975219620851777489342562304 7695268946217286129668119452450816 -154629613768000897241124225817772032 4599240974325329740158733998096384 9305170238042965145651779194585088 -882900744407537392206644472233066496 8558330124497646760715802130776064 1891190565022855091760823252549632 -553591800645292201237668029335076864 2287311447620055669584525927645184 791214254884007984401926844317696 -450322669640488441260445575512326144 5385728936654873922252034390622208 2606845248100126775318920940224512 -49810010682373894889918080974061568 4249252327815626741457056268550144 9894863901181916468320723179405312 -338296857695118153275782090312384512 2995579551077350609227419389788160 9691665240604856999650462823088128 -123179864962744927410224795165392896 1258698062898828617303329832173568 9182259032178233614230838631727104 -595904917480395750688850856017657856 7967162067857560738772590937505792 8451728383543264009217557298937856 -928771304549470071954758969187106816 9342309187769174627211040838909952 3267152063886737155887553786675200 -284558465054486243439929319420329984 5294951445407960403348337939447808 7896050125379809147793331514769408 -526874796779502218149749343825952768 4176241872181670517413622199615488 3198754157170719238693651350552576 -792031266373132213484724840206172160 3680589310391426650863165201448960 2526130427009631248281325082247168 -109656262404775276898999658159800320 2358464829091331010565001371975680 842075403968132454871022595735552 -947075355215001207084773785726877696 8896867164338451715385761499971584 6915567700508137994879957316141056 -731684703821318070555682517691662336 5075187398706868219139728168976384 3621100692971677894383327617482752 -959949980377614986092557480929263616 1468318810217852600006306728771584 2379334775169659194029916268003328 -302276970444509006712127409591681024 6871750457236023396952915778207744 1055433426807959199960960239403008 -76435654271845261470992906739253248 2667431773849770909132223298928640 5320236893448676515158864055762944 -163899435963121255496418669891682304 8705967149383545135206632504950784 7700183948777013979451558318833664 -842410587160981120667337932402589696 6290178471252288232372949980545024 9431352735446934410174004316864512 -124802226565715739617926434009382912 9258767006353580764615390034657280 4562566895607540727862441461940224 -36477951537740308811074858114875392 9560942825800782582071763874611200 4299872433471947511356722660769792 -696512462152089869899017521165500416 5819695612150968348850520064000000 7460682991215067245817230128054272 -577807134092016405218183965927538688 6965230887265491726340997546770432 9488261325104241772022995896762368 -984359723863939012110469891134324736 5716667361623458035450351875784704 5842703125306689088678933521498112 -70638838063270077001052113629872128 740953268203572959079860556267520 9372717622642952319696196708859904 -393019349462733896077380373245329408 9466238031898294068482455323541504 4876057598188426167074482158567424 -367472428475859156090570734370291712 5571439445866083309440179533512704 4726802058814791340198368561332224 -802499343140925980931360910047444992 8657330214116897465853403149107200 7711238902607869034127995726462976 -892159673486958521495601936729112576 1776584689825949332445855291015168 2771313085501579851074221813792768 -364942891695555806285828056110071808 7057057913963521917500202856480768 642862920304782258574047989202944 -367418520801741945794861175874256896 6951783383037257089424167874330624 1780926525679843489227900413018112 -374497701185757102088444084481949696 6646128869563453719812326016679936 6889564751306400735433399036018688 -884139722756793153075750251555454976 8923463260623726660699383201267712 5593272432607811344024180633894912 -283809585929374201269788304859987968 8935376655895952921994173085646848 4688325331664262256622318332674048 -525378353523775821980802832920477696 1345740972637986968318631177355264 7409035369142525547867339084529664 -6400736710604521548668532414218240 6313780556078455305542284919963648 4061790045273779826934572344410112 -445985911723156760428949747707936768 5324133031207644828535861259796480 3834862159739672304990542249328640 -391434787804470949626692818878595072 5126680585702547221886111651463168 4833446766151393038801728989822976 -893536252610142776407730956768641024 9080644383508781504416331188928512 2285112642199719906118717849731072 -251687165938132805137257167472033792 4439795084319981698466986747494400 2003806328235806725767491330506752 -130896446751565753832758771598753792 4103245703390388192454144084148224 2081984652865782899850338040283136 -385231811143402881477677241931399168 2033435616899093766735979066949632 2930109133857391657564858029703168 -733299601894052165599736263453179904 9152526645502117875518666325360640 3174242760457694937343966360633344 -419318752141434528110188514104049664 6006925217446201235039295536889856 6099254084095101866327715344285696 -553260943045300151813717238887743488 6599723857179430234635812424646656 149945659498167127055172630478848 -859494451031392282637354403486498816 169123738042240663369633272692736 1098476971807701023294280421081088 -698186071064515564110062631201538048 9793316709316804951011862062825472 5585821688848780781163126611509248 -219022786308762630018443568346038272 6297055293044273650502246997164032 1071360668518068880296698678607872 -218431207053412433534553244188016640 7868174154302119919146851394125824 3660217867104718935286690552479744 -419119798103200884973496958053253120 7825350286154709657241305428787200 388046508394369983168990662361088 -526397408514459795895149046901243904 1555915765952342312950130894962688 4266443848055995426768979931168768 -904276345937103015210966769270259712 2858262104605836557629025364738048 9905625022306327643157594017628160 -353648542284444551583715153095426048 248742075389749352461231359787008 9785052565940756197119811190259712 -999049773614019530959076140030885888 7839650309558629775223679692570624 3531780172170939274295609806290944 -427171378017598512882689713654202368 4536008139790497772990825123282944 8377283240409426233694080225771520 -861314310131998152238385819954446336 6587242968817727180087752403189760 7267860568281658974901342375510016 -385231231929095055142788374215000064 4387973235530186511971002966081536 2735966688087064901800477482549248 -129716809981645077896605710279507968 7286801636062362311850230932307968 6247688299869774774917846177677312 -745608910700515556446821780136394752 5584149147784589411975133925474304 1331847056495166958263409521459200 -968603352387959076714672521553641472 4413866753090274887640229399756800 9829676776899904457999009605222400 -466451950982642441659395664844423168 9905842797191769414185057477722112 9807396357466780496711028991590400 -715878277659657448082125653391966208 427722623906791473798071864786944 4652626029234629967175622324125696 -567062866349249025509666659219013632 8986505196146935159469177516851200 2604910135923056151024201858285568 -942599976881217917103422109726539776 8588028606165942805659302959775744 8720975162665822338582140659171328 -958205096877187935367449524117176320 4503349930749733953432670905040896 2627572204479476955014324121763840 -267640246820507451860919681432944640 8541270599778865783115093089714176 8445676262502835796166788476043264 -502091136814387240316995393892122624 1548222538916535236405840729604096 7945507549153507510632696713838592 -352676711233275755626394910965366784 624200816601883530172187008827392 1609066167922266257332639908233216 -742332460619426151510795682945433600 812497628896536263164938332143616 1181259531533406244621473380564992 -72966214811656002821769603573612544 5489401048258417158958964969308160 7578357022963755705204007650721792 -734591176292806842603421600462143488 8771690212018172389646719464243200 5888479918975002652709858073116672 -113097639207088191195012238697037824 681176078726394922254892441534464 2478373774087391602783826785337344 -881921515616700898586208222285135872 479340453466641041688304858169344 4584724384101875773420283432534016 -189042252342593857368618978309570560 5404235202216881693264621701431296 4229452147819649547622577025843200 -816831075162833460154117274489323520 8336384664595077505293318709313536 3586172944303026063688164953817088 -498255816414996844205285033002401792 6512666996786653085441410243493888 1051036557414652231088924251914240 -334319183966751981207420593730748416 1805282864088482108618546610176000 6701497936059166590150938384662528 -841395141171834110851373421551419392 2096985704635101849205127107313664 9237680189550981002858746959888384 -130349011037974121649866198883500032 5827667262920164998463205127749632 1540527971781129755002698314285056 -280294565241685187978917441261535232 7086389605979926200694255262892032 7787682906038084305253047073767424 -818394062371314834400972557273530368 9395934956022049610140122353762304 5457101635818338370734118775291904 -301677839323096865523387429917032448 5913720041205304095734728319041536 968375491831177703711347421741056 -912017053199550016010489507610624000 2515118672948257495031729612652544 3350267460710133052301559803674624 -584895235477258027247300159337398272 345830705109721659691810938683392 5346197189330171863464981074804736 -256597414986909855839142188689653760 7092108417043306676814052136583168 1256136419056136618152801341538304 -797331125726902272879264369639161856 300781407369903018643288737447936 3776844471128744323997223624900608 -255386483040421219612080201632055296 9544068917921732610102432729399296 3132089880961879750858064462348288 -897667490070543386908479718315524096 4401868946181495113910517512536064 6879767163643425432200886444097536 -273892748488408245105775098267172864 6763772775662814367426675182927872 9279459601868004944469020075098112 -57909299445141775964933541502910464 853918286054429977742684136144896 1113396032728893638993572408590336 -251948509443239375399202474434756608 4525938224135061891518338261057536 6339443032687240870508688683565056 -868323099094837235982186997753053184 8562081742116530596535429519900672 1342877506090053762098909258186752 -866663070957912558267239625385836544 5730331162499021273198153705717760 1537252544775671989081913476251648 -520638594837378700336197921098694656 4163949294672744189498060728958976 4198194161007855825441463681941504 -129291696803926793757932379191640064 4994389886762435451766331169308672 7055121685760893438886185107718144 -520918136882275508657396422734249984 1832814036765486929350347657838592 2465439317300018888612347746713600 -550404134671673054092412891445592064 1330464805218611305987590460538880 8176906591968726099484712923824128 -571256219394735701128554427942174720 139347924470188931717743912157184 9788215445166942075035075775299584 -490634662897751191449734437056544768 5025204720592396651606420567883776 4685933421360674784246492683042816 -956227242916871258255639557491916800 3664604305792128348231272717352960 3842134358682745617859863447076864 -34770474794454124479237942839083008 2131419855053421101834909163454464 5119189509662326077257205998944256 -170540207780929821772950911112445952 2608049567026809665067952323428352 1408551841186384803308297284222976 -274670122724525032152280058904444928 5280096783461300656425035416731648 4038992780570838356620417393754112 -185279083857495337371771416682168320 5478089704991130711677108683276288 3689594421365405223277798061244416 -368703234649567834240369432228528128 8693329472621610828828460126830592 7360208934875869882408327956135936 -77146928818497214732163680200294400 9140583159917289712316036409196544 4107320049776263987179977801990144 -380394647465750614621233398436331520 4453940371794715262467545464045568 5140540016655775666275713420361728 -87730483521409050684633874853527552 6945721248758892945980720098050048 9447408702984442033400072089108480 -497182593813123080694586889342025728 3701978299902172208338025280700416 1980016409936843636546546308218880 -827395188861785352641010376571355136 5184479840863778770624324225204224 4449629464397748103150531185213440 -92211281190240351332399175073529856 1406878483500745913605038259830784 382370318366915271799530453991424 -145308402107453172007013453905526784 2013330926289654071696547777609728 4695922004732237263908868146069504 -721238778567478183420730063575842816 5762404507598340073253859105964032 8455811527392143759992192921239552 -575582605595193451471863190179020800 3851077311890544607183869724065792 2513286196666096717696746142040064 -453645760306773792279747611588558848 1259150670303718258216225432666112 9966200544721341598022824521367552 -13360607946189823350667142370426880 9727497384409429026741815672307712 4590582879833315263974792662876160 -274832657908053670617057669511380992 6473468077402402395312147526582272 6321421443587896732149585633345536 -553980371522513859410275637259141120 7701003094132050956169617262772224 6545651039970593368843373112197120 -773950776437917213779461388097290240 536022475432113794524899566419968 2162704590361953690064180771553280 -753448449904864419304212706369732608 9902671636271706124261710857502720 6154763510689390617908690401886208 -517586766689500977856984317956194304 6179236467930875253807376286875648 9142105608578614746466934591586304 -770031095243906086673536377147097088 8298558703173929773069961822994432 6186497018788916673009665318060032 -581599899376320627804929311983534080 3862948830626619713492762992050176 2415051380830213690303425951039488 -55218776802680837114049404382216192 2669888509909079867747756771639296 2382922609142824501152678301138944 -799863009579843197593631486296195072 3581196887637039945902753067302912 2173437827045388321201353073360896 -121173008292635874918634118801522688 3185934584619724187113537314750464 4972073513058844331663004914417664 -352573992107779104795931523898408960 3349579775188880009995139372023808 839267320962516217044750890434560 -583517515255635089266707059160645632 6419827865697873602525009664802816 5144661552429813113146631956463616 -263075962008530244822348841002991616 7157866463770383494312195772121088 1878455582084285370544368117612544 -905620877832836889283077333097381888 5095447847626501620514740796129280 9930043834751517808562154565009408 -360885247814940230555051960116969472 4516675833377336986114242734194688 556911291967413552207864040259584 -688146765096628578140961117768253440 8609891371606512113464506931216384 8666651646503177220737679941959680 -117875937613718550663218703213002752 2974310726370677137170601957392384 3564009599559851542677564174630912 -870628569230976572204096527752232960 850715016239234922911710631165952 6614892841874541268476401708695552 -202198564340892521715549051264434176 851962878833479564101621643214848 6318047373358621611362395044708352 -429723130417484899473848470815637504 8921117445205618831809011265830912 831722416396375591263957260697600 -692942287186102710611320736164347904 138330260026311734286326211543040 5790629487717017281550957051641856 -632012461235138300130962083760046080 9429811448456967055328774539182080 6945042228666950783062251113807872 -236775609922823279049518689537753088 5930923278599963642649572508958720 9606066541857895854277400270471168 -824028767264530862555194081446723584 8438292155874280975774256730210304 7424894071755267389491235277242368 -175203564221437229067442515840335872 7388106441347662752889861128060928 5988727251013383983122788183441408 -170834308378541438488855551821217792 6343091598391460705970182063915008 8821083766400312762573478919405568 -242931189197929323541054381898072064 9117962815944649180931351761649664 6649491330096841915701187384967168 -889742625179589706955390674463096832 3472334261722640410443360545800192 5984876724655088878748301506117632 -231446991846160237374070147627614208 1334723193509141804577314763177984 6257296099890069671070378449960960 -402716415521386757207841991202701312 296072906188781008610979066413056 8639680018358412579053013995356160 -384913354275431335135340926938906624 9058655475743051822977584424026112 68006054014276459956186514456576 -718966074108802562995829754021543936 2114849869897036842409963309498368 3404216473499127114638319819948032 -630945841702192085476675581925916672 7092771793326713465518576719888384 8673747296241727579028024685756416 -636635664993608223280998838563766272 7368032547161457843345738679975936 7663847911102311560026161594499072 -670234054708863205096081668687527936 4913553200003927643548923436466176 4215026195403169666103746708373504 -457949981498175686581270500566106112 1160963484451036141097381483511808 9662913732062651261366481633411072 -227769082037353436275036013717356544 7289797084318030855733237497462784 6746721082885632237275634294849536 -698717981793145090396193544818655232 9962858130582501915717424996417536 818751555586258594870599457177600 -998359630473603268773956595182731264 3722140840940523630239643785494528 1153624565494377188927600431464448 -650234308172194032681416999418462208 9874319520678757540714571808899072 4531837253250639973212171815354368 -625103854639184938708576455018676224 658628390846877693425841281695744 8861629034993646979136838764068864 -709959886055948287984439810227961856 3699577120860425216773811674808320 8690834057598670379543256516001792 -346000870070937879849703058157076480 4329770906362369403853769371811840 5325745144445515940156260655038464 -634569388838497242960245756962799616 6078473796488494324660623093268480 9640156570910249929195854881619968 -769690312035529791111846594095349760 6393115006336407539777636076093440 3366579919037641345793922338652160 -59545156712991857382272251746844672 9281705444724134071772839336214528 5483476216248824055331984538337280 -916251153786619053344003006052433920 1562729642432616010239909082169344 5943628478183081909329678772994048 -424645949862533450503393307722252288 4754453288837467480177758617731072 6859496902588805262726172164227072 -492659830978607509746368410019692544 9002137116151044534677065496002560 2761046646368744763671776602357760 -871378922082187518093685606412451840 3012040302642622429332171414044672 5272295649120127463601849847775232 -646994365426311142648852505537019904 3328046993171560145361926608650240 3831780609744947111049549779566592 -208012348274990545383439394454634496 1186666604954772484172709810405376 4901185722141110136059081326067712 -736388212799186550177074560945356800 4066324275243678592498754104852480 2889643185070226847829065526673408 -880339452847074735625091790799896576 1034384179204243313422526717100032 8640699164092816439135898190217216 -744866054659891594204429366033645568 737383131958201248993615391227904 4143203711829139927152641641021440 -51567940369310758305756007771406336 986905963829245034580600990728192 8076124402266557434182853646614528 -83603771654397384994395188986118144 8935905133832749032395629077200896 6924089011552917810820228942135296 -728646873722028433625280223056494592 8126304729041225368394440722350080 976209221760690508067179908300800 -302864301213460508413643129423396864 1954440474057956804518589308600320 9950027665207692186808165089673216 -121252577266648471630446886238814208 1995664059685011288866531701686272 3090221973745073838202478953234432 -226725454854681462827484157145251840 7504547192092279181507689162211328 6303129313295559437666072829886464 -157304518034855088820715375380398080 286279561450426288195638277439488 840351676188076471899093079162880 -998600187459909111109528897875607552 7463030088424952722690775885807616 2264312592184621468841197875232768 -416351357478765546910412647992131584 423070112629246564816389555617792 5619107904740866860283306484695040 -505966798522303417647890649164283904 6153655842427502352527643075674112 6234382557199946169431492246110208 -511531972455652670686775209751478272 925586974645387834318155574935552 2195994290865031498691717437063168 -431267727394743575652544047138996224 462258974281593802416353322205184 9132499134844066173355700745404416 -601704941832790188116302620692316160 739510922237336261771326369300480 2912345097766417006102931805569024 -642257760598389918604391600554508288 3092913539271418525328357585846272 2513382494275573891464679263305728 -654903102352994400718083529962946560 106432438698092451769087313313792 725933192420713945532068119183360 -934783100319750272516081689437405184 4218377944297012811854574052704256 9896326539139620525370137645154304 -226127120249209056620182215996735488 8473449788027126417316676504649728 8306329906863897151359760858087424 -851154783638908499176716076176113664 2297919245036550957530913416675328 812760751115269557444041756377088 -661184137772005800239530076492791808 977425878016774816569199918317568 8377635737113820966530903340744704 -9653684082624353083641218933456896 5564106380105847944353180337307648 4992727206983812012894319953313792 -86867392385413055440933685276180480 8216342526772960358843229904306176 541294684239399531540605923491840 -169299895261799706275997843487457280 9739152488278336554989073211588608 3620686411475101428848922764247040 -569480894888903082227827697501863936 8791951796882041451060639301632000 3149626125877061677220999775387648 -423754464371391693372512587510448128 7989947739730878066229176713609216 7085859454806890311171247718793216 -333792853134388232680330789348442112 9593429219755478479591218605981696 6551892287037036339292897290485760 -477082862891147200798430397435215872 4494688508255708234976225474379776 5568284393924884368277180191342592 -97529482314840874428439443902824448 746179670768050310662807139385344 8207099143162512015015437322420224 -413714368177711785507407282116231168 1979501847316937964501405538451456 7700948032964936574517904114974720 -221000090965242224141499405357285376 2359145058853379712155668837302272 8612239177979445785834746147766272 -641352497730172153344705355852021760 97071506070122639693599589007360 8916674600594885586347589248221184 -800469094482568944109053219237265408 8123176823146050554246646728753152 5868716998012359059847089211047936 -505247151828649710099966347513430016 6824772333401572240202214523535360 4183057137912123493548156302393344 -686168890741191137428542502708707328 9894518964642716718607652750360576 8075155757056059074790779892269056 -250436171779984082309111630031486976 7863984569176336350946454535143424 8972648637338612804200482786508800 -684611589704849952675988849448452096 6698813416533089534969656194891776 7009852068022538732968655961718784 -784810502795749187114749053376659456 6097274338404402563164026108379136 6567980544653944922272139566907392 -932403191932430583651425214005248000 1738047376791905690862707265241088 5615713895575440245088217718587392 -137145537078989372882216595346161664 7975121229344987681325213739384832 4688095365296960766555756706136064 -531704570532313408263983270939590656 6978090581837489467427715756851200 4414867237023695296443995543044096 -272092237306053738775301812916322304 8227120179000812012746011165327360 286444282989843528071114561421312 -102651191174419111501902446940127232 2883654459093786614333220201693184 2085601785105392304782685220372480 -387538833521180234248221846952476672 2422681350940548993782312429682688 8770525434774735226080808180645888 -516232840549171180716943828603371520 1201113087250609619600954372390912 9310046176299429420984867187851264 -101647488797318120003894593688961024 4089700556796466642673878433792000 3531231997842497365462270561222656 -798379584910551508750249566048092160 1600707854581873178123409624662016 9623137811358672433576889789972480 -906799041341854169127067842124972032 6110141422718758394866448207970304 314662169561873188710329954074624 -556208790893330479130753777897832448 1320379083040833550933875629228032 431158920971505217669371434893312 -461184325942548217713914057806839808 8449810858583173786183438314766336 6406094706051082431829448041955328 -689967164306240665241695748301520896 2181730933947039452857221557256192 9764066873062422936358873905233920 -16324810415212827722580070173245440 9188330102058118496673360427089920 2498676471068957025798991395160064 -823688155962338053719433568988430336 3222664587224244122418002173886464 1610465085388367606710306829500416 -667032865005093705356764688668426240 4606315461643773730546318231732224 7420867068314122169231004397469696 -216740292877660409981010376692596736 3152741683681395708634090602233856 2272504969814864598750232490016768 -715194699252998768512006270371233792 7607498038594360951491838057906176 2394586137500741017359454417453056 -523470993730370382867686833575165952 8925013866950648798384308713684992 3274010358963841458469908672151552 -191331346082616133250354143880544256 1129930556412845030706187752964096 6309025144838620160886689119600640 -912410270516204175276678372118233088 5923090058334748487898267503296512 9079880764491190189739397483593728 -872912034309405143715500724209057792 504045053364078799919814751027200 2028503099244057201463667747454976 -891029344422238495988042881101201408 5807927208293986739938704473718784 3971346347488720479444791029923840 -866215427938195505598325690292240384 9687121678932365182633683313491968 8085795407009330799809422807793664 -102747345421481546538882376266678272 6230234862424166126264921979092992 3562282276657990922652737247117312 -375528127140716989062319848883748864 8637859498722631606235860568113152 1598719283800465178815058533154816 -802387357821831867706289757393780736 370688929567398443016171787649024 8421662220271559186975239115374592 -285760291063658698910384963580854272 4320961924368917494237887060770816 5256772648040954875348670039982080 -300592131953648278716739579547746304 2306827361447655896715405287227392 3961451048390799871873706402775040 -198617253652310413081722128540106752 8970249702557633545539728256794624 7565915350857683072261491378880512 -258111364697161359285501818981842944 1538421231807089730296583980843008 850001963762394638449696063881216 -674929681198468367516706152703328256 4826489221489209447255940257546240 5218714265731552910197806512209920 -115190536804195153028954244956291072 7100755514305518715564609398374400 2213060942862991100437773024231424 -160443899475935467315211482427293696 2911300882876336612461357949779968 2136730716800832926401177409552384 -228530685311732707886875460352606208 1865184797483404527876664509595648 9938529579917879302528866692628480 -671907206633028726249501326347075584 5870716848405430227543304083341312 3809368087331834387649524754546688 -861522353852438544282959940878860288 7252621072004823295415582952783872 3214845979229316441945972561412096 -874133116836060512765084028909912064 9597457397530004328659059642204160 7611335338880136871978222883962880 -480449213177817703806239545187368960 9988060338267630696682543072149504 858317944709533283018877660299264 -513282446587439428486594654136958976 6101934908749998146818888679030784 2520611421327491334831669361246208 -916954240367810451609658237718102016 4754412070865570986419504591929344 3134490467456217754833932251037696 -521663012117760316162827043112747008 6734963352279051862654654389157888 9656309463941369911873166068678656 -969765568728784391730969493677015040 4274784849008229298565383295336448 4949071759454999359255601953636352 -740789074366250079538587101237870592 1884603581662028497814850807791616 6956915468185644755543650608349184 -895274583491909901892819890336694272 8948153298849673072994053934546944 1165793791388150842860231165214720 -246224597344515102324973233265180672 4674904041693179696192860293431296 3119170226786304597507499729354752 -724619987829241447911872282899775488 5740687144936150743003597274873856 1184482740284750343902147773464576 -766930704846627573644540938278666240 5386047460886389762706613597110272 7084690936594106810838548563886080 -635547514866065019753629406772330496 6711884470926814218574785578795008 6938496167082311328867012984176640 -201901534086455482555627080911945728 4182401475350478304444893211131904 7706708232423047554600242293768192 -675251752443315673525017979759099904 6972030214439912058076462437105664 609566476257959725526598417383424 -223348729016061924779812103806517248 5138285792356393854017729135116288 8274172877761537891571912102903808 -294265611152853197760774101947908096 7732721187153694962984732726394880 1970257716154299338711978068672512 -951557430008356272245326773548482560 4070308924768693388344080658857984 7796650619840211917284945134878720 -422734016015347256488221960952610816 8223018058684773158326771833110528 3656999860694572425619663742828544 -651936955064638366748079674600980480 1050677455305030133243212648677376 6655823887348364849724399770664960 -917037923037463701200117245220487168 4135369165278179025820790512680960 5097303601608260175056198803914752 -432902862217245715773210787200368640 6108196263571223393793768563933184 666030534444692488443703538483200 -223434834353624996436176042754834432 5007249383283897901317415969488896 6735856584418947522110576132096000 -544608416011287421797144771438837760 2380408598335746274227653412126720 1785999392672017724682364489039872 -325571959996407099831236370163040256 5318289732584874865472721832116224 6369504335911627054446824134803456 -318614991267184151147906242931851264 9862553041759757254564831333187584 5608943524373585924544001579417600 -794785610038319884717107361756479488 9871550581807104073947382332522496 7959090949534071126480477770219520 -790243568750937609656021258088742912 4596924982100030706626184930656256 9538950789531790474870422081896448 -946474320064497012402680973288800256 4097168046575740946324007065485312 4278610134339804369427883498668032 -368516410671188185568979602110414848 8990012872169605964207181396967424 4670900401887154579576504660787200 -410706115862510889412581178558382080 8071698487912750274537457369219072 9396434808070508077546813461102592 -207296312428073129854213436534161408 1820898768758274666497482518691840 3273100201223632200356116402536448 -472668204931890258831932970271506432 6514579581868728932327128960073728 9631387577299909592485667268460544 -409678008449722004783363643725053952 1923328912405553094549945412747264 3809855339587708222837979919417344 -581340752187337480397355114087579648 4991161811858945837357914717683712 5538644104979381307348340642414592 -242144688164180102956792991830769664 4202983001323744919410998908026880 9320576087653901814854687096045568 -2856545546950984821501586535612416 2379360449082394721829180426682368 6009423705716995782816878880096256 -684318468874327867596563662143225856 4464967557800236151886769645682688 3355599771916125327574351935963136 -164208023963123250657259889360896000 5938992723687216934584647944241152 7936799471510909235434962309611520 -637825302052376729357288368070721536 2178171632217664257297829200920576 4103505172179497389841364352499712 -494260049042710970179667512115855360 3699672023114896811334181857525760 6092057629755072570104553379201024 -635399781612278589550613414455279616 8211944572034212128892466029920256 7955042912654092979613469912334336 -675747443213626932349093932630540288 3135101247854903133420531696533504 5436282065939253580900681394421760 -60340542402673658463291862243344384 5283464837780345402531784429666304 5814586202997533624684657411883008 -486995186083690669654998262308929536 2239330968565411050985506629222400 3568348276230368121608324247453696 -784834352847325380317771387629469696 4205877454636424438819549339451392 1904116376299592714651326325194752 -751108522598334623016897513888153600 8889738598240559504604101005541376 3316533801365213700108318939283456 -95167109362126020932759802343325696 2750467550014673539940353988100096 6680216370368978408629021307830272 -210335120914448681042248866585378816 6324843974235675536078210294874112 5916767340845917638531369024880640 -820191790192827587440833650361368576 9342100833574260375448662818422784 7999225286155715388980852116422656 -442897185187057762859991311832842240 4196620803511899800959864979587072 6667134564342369124941609754951680 -627837756207811309866862574269628416 6514723790395053934119366221103104 4253619751646733234909836384141312 -886486128451131431556360443330035712 9204150997584087001256077329170432 4635375120415214129224768875921408 -151372646251244541002062433735409664 7853263818722257267881624452726784 1829832249072553121195412709965824 -996976304440579024770423286034071552 8177288867371958646778225089314816 9024690833754646669962309344952320 -979235569791194837164152448029294592 9953047766599284840233719828578304 5313266586280101792027555812868096 -247180515117714377637405665106329600 9168255168624641635122079080644608 844529565682446609423305808019456 -45387461954830962995511316896022528 3514140678894759554743479914463232 3136088903265089042842490769506304 -445972378332979721123902225159028736 8350806421633315963103525935775744 3338482989315840169547920738091008 -430746780017329801445143678038310912 9803249258290820429586386915426304 3976159659756263479305010279350272 -33301147549605517860122954362257408 1362249728764653571418330245365760 1904867575104673578434462281105408 -296009544476142050791156989986603008 8696056184954210425458174396989440 6086326412293029689683246455980032 -871650329676834903110523035475509248 9983270339036414266197148201648128 3977472673533844046621077009334272 -348495002584239326736852436866039808 3379730320865236717557965194788864 4553781301824502097071959672094720 -743183132778416324512333977368920064 4213953657081274104646527277334528 8848155262701068345740459337842688 -66745136836517414869591889868226560 9727411694033510007698806827646976 322186657811882366107074336653312 -653376212266911776551412090506575872 5793591843085686256448938929291264 8424870502086440447841528608456704 -270286142552618017942813607628636160 9894378871663933943915307224530944 4931592882932134232633553264312320 -760706473783144306410879696066576384 3992777759984857735113453009371136 2522578799008674931844808404107264 -449072984346950408900855928715214848 283276766342165569042583922933760 5990399878013097678748181579431936 -754524330721265122007447929727483904 97952709441965511823270961217536 7080823085482011924595323739045888 -375908877485168894494878542334001152 9918608513589144135627501633273856 9092977098300775263939197860315136 -984316757300717241011636703605030912 4784782566618881688741878410772480 7407855993442653856530834686738432 -561779570638080890618625957780520960 7711159354071048607215352650137600 8320168754130575268926265655033856 -58397365819063199552868587088642048 7973512659025929344318225715822592 3183489370716580634097368726241280 -347617469441301448755811863582736384 8744022553693842608461836651069440 7714211654949910289102287486844928 -826948818056449237713177674692689920 6699776076513470365926969181208576 5079280432917230130075214746222592 -526841264946181633226366200880037888 423170396804988128874994566430720 3597162416866319994576100445388800 -994718661383522555153432938178150400 1204023456148231836313878492348416 6539807319223248428396175146614784 -58192747078878221677396138506846208 2435475530512454858852237901299712 7645717485961142549156921012649984 -55008029312005637508545158741753856 8343641410071122648186572901449728 4276771126378287249832490886496256 -938501204226291094376078847879675904 9543015511071776293741601472118784 2293886055262339046542944468205568 -441231056364914241947342092489457664 1499333128658053562709749205565440 9483209163070870423149260102959104 -850474543416943863271111235364454400 8629371813200239532440588937854976 1288187688416935948261286595264512 -868462234619967072270341481460400128 6248017015315095481390079718457344 2608948669229394864181553636835328 -588939127590997154167377832118845440 9000659786092356689043405798375424 3866650924004437621286033652973568 -283014633158016271445719282201133056 6235046986544479586034114917040128 9803442234192795526666283286265856 -587045563114717073397822778505166848 4111006526973249531472907102846976 2428247816183056960223661720076288 -702381131232582816134969383540752384 8382984295437194949975067169128448 5228968585504198811411376595009536 -346691082981674843925281403073200128 7069340475182099020726493786406912 265599957173044548242979634020352 -474280756862377757327445153833549824 5825884889612627343155746530394112 4871875427380293864671314463162368 -438341077300511166438613452127731712 4525616479359935863192084748959744 1620103388688601228647219819708416 -896080195517289751242160945282154496 901880207714078472821259357913088 6555404514545675565641276812427264 -196381887095263006959276627077365760 182214524164337955991159708844032 4283204698491475861128263342489600 -415585453422520370725072305913856000 5179168567753229026812702767448064 222603085792339526367484292628480 -255377648224884370956990787142811648 9202722648369637834737460663287808 885536294399080876721133466943488 -644013840846514246520848431722790912 1203488484921220461310638257340416 9351899044464759241897458945490944 -37807127754947438749354197065400320 1174262503495796674961926445334528 3915743317298003445631141174837248 -860851217882850244554906094584987648 6844591141466003862469777905680384 6107591655691750606504720301293568 -332396604665581775449383323247312896 5481786832467430425469939661930496 589312852160980527562774003318784 -558054580425735161490837616329752576 9532365075753090945794642475483136 7357079286675200356428360173223936 -370970822795320890249497361881497600 5814944126117163038910167872700416 70295036727868713367858843746304 -907765587848732498259612834138685440 4357327498197954337986967125360640 422163379588010383509404707192832 -655686000210157796641415288271667200 6104342688540361601500904394063872 1015629646238293544888681313075200 -764869739455878557358254204989210624 450383132790201006351783995375616 8560059981751163355435571552976896 -373436822880425337009837402167967744 7387523964462114736399298714402816 631050487691229379766767908290560 -460142933876365270116638818075410432 9055281245852380614815940337467392 4101341855859297216571113673326592 -247345116271555937558175847611891712 1954797892169902497449608260616192 1779316946793626622920186602192896 -811437486380046379802516565587394560 4119130188978467250291578610122752 5703654252751409882107970544730112 -579600165023829107335047478687825920 5540927948316208881913826604220416 2126564663197315093844082468847616 -295505618804658207045375957881847808 9029105932062921595826185699328000 5599759050358001082917796716740608 -238897879812549038202837961833185280 3994558426323628317835583052316672 6447548861354287334274764722143232 -965752654969449668154568582937706496 9263836074068587329966635508301824 724468486729900592648843893407744 -644577680411622084536756142679785472 2333921966629378186741026561982464 9102874572590206942320862416601088 -81633846187664375672184641876393984 7397770630425018699518473207283712 467136197382249380317176914771968 -436208505624491846496267943649738752 7418797027110325138083774398988288 6706906627461364137438322995757056 -903026253030504895657554411406753792 5484785803723232785325244448505856 5514023999601605805462185723297792 -250923885901256044335391737760448512 9242522695678980340424313153781760 9061243313924216795859183321743360 -28928602897216064628729368796987392 1910991050527768343301389543276544 2759398419199015017547596495323136 -545440760199484946645868066491072512 2524091978931840446807318630236160 473919917533075862347788486443008 -764881951096215015930180165953388544 435148596310058373425161838788608 8806191203722328111952335774679040 -271139521081590934389154107617181696 6164349066152535982572485377785856 6863163918229622617265477120950272 -659126906834044752456421041871257600 4580015806142470094861249168801792 5699094272090491127584265615704064 -332346259072873004348058543440527360 8710568893017387978182973389275136 6484038704773498838329688477138944 -699972163395056186061496817255710720 8192534335065060637572319911346176 5970447326016757048344046611726336 -533940635769708542732054355616202752 148325777283129078953449021767680 2036058058489688706053109119451136 -771699088989839830883423891088211968 4345773034612518326061422702755840 654211235566930097521296265969664 -166533723339139611045786846490525696 7434800059521644829487915314708480 7218681714088892749535390990336000 -413138055350254991252899595793989632 1621933537826882935094925877837824 90099866510976986511645788340224 -224463019977016803587859705537495040 2139103035118762648679734159867904 2854657679617210533472734703255552 -954922136203007374847401754558988288 9702869898446533587747474715443200 9804520674861697278574445149028352 -817784033994191984920058137933774848 5711032001175853935358715105378304 6576640633153197383311035163738112 -19438441915636710936013557507031040 1701480529948964486885779041157120 7187531926277551425364715487887360 -5825675702407878376203338735681536 5638091174485333198031154187337728 8725991946109870428345107369426944 -668400079633892928270955754872111104 3353621931244727812070872360943616 663110430190367100100208320577536 -454712203793525040882267382741991424 5067973263505307531460057078169600 9953495490985765895747737172836352 -626954467122412835648966750747230208 5393111184362293093521787795275776 4046725896240383462506576178315264 -569681161626822778639168016148856832 8969908129357172677346007158095872 1967556574932646990869229532610560 -353538993128362088580698599745126400 596065848010241892257171316408320 2884714904564043800765435740160 -82219932502570284655552822134177792 2529249936043499796952827387969536 5884200162660788075271271804305408 -546177597905504246177933337139609600 327205914247351766903164204220416 2094996331046098122968687349596160 -8598829166716794828821266673172480 9133688135389827840546859470815232 9339795717306512660743747272704000 -964071862698720618277775317057667072 4540347789691442359671704231346176 2432459492465408534861822734368768 -55514731588988637131057519092826112 9501165929466902334339980793479168 1589712998493109148126953185738752 -539669462829896565543557111251730432 6966677288867251998048874097803264 1642768574986845094418222571061248 -219901952503689678102362604802408448 9224504770770702977588133544067072 1117062148865154152646425752633344 -899603016647563796405240368216408064 322560984657876966128961764458496 4496669178026258418899020052168704 -629235118784852941427927374469529600 956392197443310275430016014614528 4886858749137503719117828407689216 -213358415150956166329657458134351872 2976443428900125388880555148312576 8741438012834569690538785703460864 -879140197646995246868215445743206400 786546491242387238271292499034112 6286266731126339349082789088591872 -939643904417496922351885934156316672 6671051787743162515595246128070656 4509936510300462741700748970557440 -939559128804860904625692414641700864 6152073323651786710336981600043008 4269023177416830007497480078360576 -474785495304910731009899855068790784 3457994007391106482343790480719872 7976247493391014877267586950627328 -593270343947232949694267735849041920 280932073054442363208678923829248 8234919290102843864217571198763008 -698804143566186740489056792713625600 8992545379011448425208201485484032 4247094893923755529378891781111808 -743269919000954259904098784526729216 9796135671332382919658597360074752 1947770327119824746814082467758080 -872780477480280945487888023063363584 2954554060810359202971459524755456 4041924907488389799581791731843072 -452533880973698394554284795477622784 3177270768964974300591270001639424 1808554643769140780973562632601600 -436041586698611000611590000066166784 104271117989331545885581621854208 1236045497916045373525418661904384 -63424381272448383979115528149008384 7050954744345746161846145469382656 7199453920962242315947407742861312 -864765866494557084726625663591645184 9324133585717548535640011799789568 5312527744723101305638521634029568 -803467935993128590128409915626094592 1936438823894764448797760587563008 9251542107309482299667070425497600 -974155852317372681195482975351865344 3030796161894318520907315244171264 1149347285223997541077902077984768 -62439455269441655028962682204061696 9539051188874958370381445417926656 9011331075269803376346088945483776 -906654513311619683486798534471057408 1879182471651519116034479770042368 6911799762046002725177171566919680 -877959933972506669333122787162718208 840718252527368344127395141255168 7848192046232764752856415329058816 -144194816261669301787812314480640000 9125381931240947892484970064642048 3251437152176369852099694348468224 -2766600716053269984804958975819776 5381363522249056976563702138404864 565851030736428726080597072543744 -145140836026560072740341676024791040 6323549832519267465224013679165440 3988227144759058749045370527940608 -527721179806528691665714590710235136 1109008978522986588402641585307648 7909987869176249968414347677925376 -201656168414560154644089194365845504 3380351869763074666414377585868800 5931883275247414481155207165116416 -528406738463006164791924113415340032 2177496940985866084497843298500608 317642417656460027698082717106176 -135654756535338756181620662068051968 5924193116802849592405893822021632 5792434294475002182836020806942720 -916118810871713264972271383356637184 1024619033573039131747707250540544 6769820775050874917705873702780928 -944166617106680691055551203678093312 9310081780566990982344872722169856 8386763800549466606178351620030464 -248630863722201963299302638048247808 5150618642234492255115780940627968 3978029375153081781274352497459200 -822131196138616238576259702838001664 4198946125835590963701191259717632 2450628395467259009416627698532352 -698993690939790022580306042976993280 8917979880732026171882033639325696 6315126222147995030792480307019776 -197000420115333602682244524784222208 1605545812276315658992934853804032 3580783946240060444075319705468928 -709657456091452064017033511085015040 9438945940770182199376214294003712 4558682557885971731768421604392960 -132713057527983242335247759287779328 6552996776196869221103051024105472 5299157354429410429110741656141824 -299011068431424356581382664849719296 8293560405003207418092404227440640 9822259549756648787290107041284096 -79448956339267995323681073298145280 6317515964969098943194729738665984 4683071727798353747790643788251136 -198509065351369770712131316234584064 6797876666380851187444674105180160 3300106259302580080436186940702720 -795445914077571246280650173775347712 3020989257946803458513955415130112 2969628218425079010633979430699008 -87531311106475887361826975882674176 1851919927439181899924765075832832 2667082408701051319893834495688704 -778152530000612742132179638471884800 4782648098812847625183551299780608 2386832631538568389027676857303040 -266504861713418950754133016479531008 5730419833926459807815670429646848 8962870765985958799276452777820160 -136834869003700634877416918076096512 8372209891380657071118315558010880 3617580225210714330945389863108608 -550994077344894981761029058288680960 2259959063751727608025124438016000 276408322941022676076200992964608 -72448543358506222363539069592403968 7721432366324794264718235412725760 564307600839267167390832340762624 -76866914140102886970152534757343232 5047790880227767746721536404357120 5954734552712957921763389299752960 -496211433681966714176818721058717696 852342064122593213249360968548352 7538932352509121025054158031421440 -310085414283485014494446232897847296 7386544409561534882412052919353344 370668287573027575490178501836800 -735416232387090106599613451200364544 890105198451867769518298369097728 7860232002902315953175976474574848 -119269000179025883351068634203029504 8062843188407991984101219570286592 6579053590709466693577053946511360 -138841157499532109783718504001699840 368580138726512913323324270968832 7709654960849446243168049029971968 -445507662691869366942017864454897664 7939348397341178633942907817558016 5288609949502505165411716857593856 -210519427759206263957008301542080512 8518444148924492603628833388625920 1047437494428618010423289685475328 -698263539263184906792445178460241920 7041155761327766144097198394048512 6477511168299536118673058121646080 -54568249925694543531174960868360192 6132761763638985055493788964749312 6457113011852818905677527353655296 -587669331753490578419062184551120896 112393321675112531133083649310720 2798175050221629565217631681642496 -382709614752480670275198972329984000 8866645198262583070597856616251392 9250486199840403643143349013053440 -255262849184865527905778883943727104 5510654467044446736237440800915456 2435980887358633679282072052563968 -771720705304930763188968516164255744 6009789522138460113276960570867712 1611012103853895473324378017497088 -542668319825433631882981937820729344 5502787260492500319055961911197696 966638534926188377863596011421696 -133978376072233495171242490052214784 6244532333005965988807020862504960 5878936915478525309839610046578688 -935370075161236405520994781116760064 1721610785564526571501249800175616 5530910234048621290967304775925760 -547930053201918220880052980451115008 7697950862322448818679323090223104 6328732083606710632713726472486912 -41912739185678701337221702136889344 6274132647382210999799600295968768 1912225169676168063700915208585216 -79164242011165883818889721394757632 2961987576512553691995523711500288 9107658001752923214698649806176256 -169811038021549497594189991638990848 7493933153087312046097485977878528 3675221692717783955172836237115392 -354857449211121203110286862506262528 641485822218843249868378807992320 8282355157666536289625142712074240 -550764433564473015472657795473473536 5968790325959313639048828357181440 3900168219236970903416986839023616 -869320012536529616306745800694693888 2046611909160426256192885439332352 9083495710777851177492083256590336 -184687639858098727312383116012683264 9824172068821877807615024377626624 950335518812085611023807616647168 -286797923836985908854102166694002688 4146831687741985729501616391847936 4044364762441353834597579281661952 -334438647081316337686295702105227264 3475990278685442379035758074789888 9413279993364258427871888320495616 -998205600398218160879679080394391552 267197884921817055249401127108608 9288314152216372607160554753097728 -293365626233842822146731682985672704 7698943997955064788246661450170368 2231016536529845610907713308459008 -190000345121987848203949727989891072 9289182022057294808655730256642048 3848478906313177955707692091703296 -771160437176321713197757791666700288 3035351786067391427520438657351680 2430664338181015755453887892422656 -448565368238123327406694485333114880 5723593118161511958931994480476160 788867030297044079753506980888576 -118549965514834558080111649130283008 9771251643980695005511167682543616 363464283829242948355354542473216 -463616994470723393370268090729758720 3197186117183386198529396063600640 4147327003722525032364416245432320 -816069802975851419153618643865042944 310048529193668581427159075127296 5983303740133126669434481524342784 -424108316616470246089183284963573760 4121592376028304641938077006168064 3073839125108090864749192224440320 -295788916002399384374759478305751040 4428229589772212496879767429054464 6105653069665126175532478208409600 -99123805955326930200057208039800832 8290578962656564990852397262700544 5979894111734454396442459810824192 -745317114379841360645187085229096960 8231131732027345816091280447373312 5446850625577240007508472205672448 -724427546229298362066495334655197184 1534074377848682058310099316768768 1905243134591865709058357263859712 -949506927574990263477860726439149568 4613953765650982055467662757068800 8859691882711168196224467976847360 -989812196467669306403391470881996800 9150775575229702531548590131642368 8475709200853852007988497639014400 -623505866476491450153638484984725504 1882657065548629139308421199167488 3217942453108090891774382191935488 -636587944030139989922173705135325184 3274199518722384085793193332834304 5185518199505020265273891575824384 -399253398173787005560512149716992000 1909695339981109118121008032645120 7548512179100504621464127925125120 -687440786439233189496120891047673856 6398542205983020192484373022375936 2610586651378124365531387468447744 -532126508236690731143622257601937408 9185705796889774268153792213024768 1562927433887941647026615884972032 -662252314761669196094831580384591872 5884234686239521727401833120399360 7668846147912803610826339147317248 -465333872968496600078692811966251008 5729070697059780723106048225837056 1106172977343865936952142038302720 -726772819105220916130316366467039232 8869620831906767991739820963528704 2816633487749899405037852430434304 -651616897959832593626568893197713408 3175985186823676976968015579971584 6229182640669027785080782356217856 -683323027618470958229951986320539648 4151432118903934043023836522217472 1891656949606119252770890415341568 -852002358374901131653680788192362496 7913440697344404695754715936325632 1553873016642111973223125160558592 -824530750411493498372854687920553984 6402587435286723822434742653943808 9268453631933798980900455769440256 -653507697480515871181273056145309696 774889093962129517867603383549952 90245531752538286019991748739072 -988786626278686950144227654414368768 7073371330103408385215447735205888 7667324835195713660253595871739904 -201749137367995513710020027754741760 334578102618668292782055032356864 3634030968194662707815618147516416 -303060792403415072216189780847755264 6525511108910349215256077915914240 4723251202941315310370874376323072 -977353623940905739103645411024306176 7941361142274328245277969623285760 6331812680289683895241951540150272 -391460106367066955683759585033715712 4567877500996597080478150173917184 5167746102741792287512707643473920 -747398442886417111889329919216320512 1202799959651441257088018401984512 8893728439345334255463617513127936 -487500914723471246024275239085539328 310949654635396058641108417118208 1334028988518182714893090022227968 -104707203573470417648784331641978880 2991015181644269932460622387085312 8130686858787167444018643741966336 -391451147335606714013535703205412864 3020636893276100072955725846937600 8325340288921859746198284604014592 -32104146481131965979298616796250112 5435625460827294383214484682440704 5735828153802876488448799674466304 -566928123151430139771438690025340928 2413904273686866824830052342956032 1670796500440949025060414820450304 -852288819701017089440195024724688896 512913856822590690330925129007104 9441740470671464755875244171853824 -45781694469060401715277782436544512 7076649348320123881355430955319296 6611580774406659248259777901363200 -503164800149412187758452980934770688 1337142831644723315805353190359040 5019778331462406660204023695540224 -432336037490225187279262640622272512 2882519752244274123416292709892096 4749588163574122720790351263563776 -898830320286030467462292868746444800 9246212657486957614224599246962688 1594402214645722774569574549422080 -355589471636468087461207714601893888 2968149060125373550269992930377728 5028276171413662435795828767457280 -347390167663114747264097292556173312 5380486821212604102016700031959040 4372113895876066431239884048957440 -84863945515517873510448180985069568 1863449938991641235218481715085312 5385779160901749315806814422433792 -895833919543689550851834112104202240 5905316642994801697932788855996416 8997497814079754874621220385456128 -545912356626385148284347979548065792 5172139549344727544349151199232 2051307079863040241368944487694336 -829549184086395533340427826227052544 9388872870445654383974388349272064 1508080936877194413888343115825152 -811945783373848693966960351370018816 4392032255826115302684217225248768 5543118462885425909329897126363136 -772267066015588792983441261012713472 4447083974027889848394414955692032 2747920033353260073075268332290048 -632940641003034950874002808522145792 1886226446532785362439036978855936 5356239570547535934001981052420096 -677019302566375274421965956837277696 7039649736311482263993637754896384 2224610065968713028029773900677120 -263293161971878287676784543942049792 7090706909970145637157245852581888 9344406170863634481705411904798720 -949673366662418611744498752342196224 4458506029124401905192956374024192 1061191552428134295616305483481088 -864499657563446370825959023113666560 1700728548254964260742282203889664 759593167186676254222726530596864 -971005608280935699632136402616975360 5016865531014916459578079353765888 460662799599756055770963518685184 -916464969864889030602393742299103232 3436860555358610816643962368950272 1198982948304718681469981888086016 -759286209486465535888641726881988608 3498006467583300829064895322390528 8429393888383105121832092011855872 -761818508462357863854732301127647232 1410870063858602370230513121099776 2571665317582939017604457293676544 -158627870978769340892489323659657216 7314657370403992940371610297171968 1219209702632706381570422689759232 -451515809585179278189022759434059776 4991315204636119827493157972475904 5401436346507869017404452632526848 -635746382718609119596853387348410368 1548551335796754332348369252384768 4146959676778630880914580390805504 -720823047824194263048006033855217664 3326483354166042204627129744752640 4408352555252461173594518068396032 -538533053780014355597720560701800448 324487371493616220866532060692480 1857060760899991783416017593565184 -144145972909943341275564548389076992 1024721010903696046862057181544448 3545424127754900854909917879861248 -382617851612985162431024974008418304 1371887626806576727394201653739520 9759757964329309131358730618667008 -23277546447950883635294370967584768 7336101528540253357438261010628608 5270234890468341168769433174278144 -256931001807076936374821502586978304 101726366014423600129332970782720 900644963382881591673412567171072 -22071984766246496256458684186492928 4510325269836671967742963300171776 3717417592403011738138288762912768 -22449490621585291162847452262825984 2345729183087881538232293311643648 4951475064537676259414115671343104 -183034803664435963925769343930990592 2734468421286508414052541422108672 8455105924569683101150193131716608 -49685059682184738530826689563328512 5065677664625049891130470677086208 227018831903431082542778399326208 -120026807510319406327458354857771008 9154718417287823987422403823140864 3920097132769369659868721077813248 -404776905518630428999813086004117504 915542404422661475844150299459584 9759962720350005740001995792580608 -870511907722238845454523262310547456 385609583894131569170689933967360 3814055211176047416574256070262784 -617035953223885469921184001793458176 3915000506041001567164977266032640 3473606964741908547494252422103040 -192173715559989017432016642935619584 8982336675140098517042743050502144 8686876498864274265746681532252160 -142355393016247698022263473357979648 3175081213812334063798893146013696 7182571835795301539152728158109696 -767728766081013274296039246913339392 7441380851892791957317618325520384 8971389161996064773281513297936384 -659078066547262401476027531822891008 5687000060113834566837671575945216 8098590479980968358324497475960832 -245379099618865806074297533811654656 2221623178736369332812737490714624 1106448346299865115812737786576896 -214387563371520092644744506084687872 1625133763626126239123874393358336 4331468605570172350873691712651264 -316983873829411110741587712328859648 3819999791780279045763734249144320 3100805021328681020344193804926976 -105657312803805899540699149959692288 2360760868566630214866988410339328 4214072914671761550110738448646144 -568002302830460778166903851102240768 956895073589042111458371264577536 5175030316639066450005913463947264 -757860046016285814360092446767972352 1380942857621441203877119432589312 8326478449702249390994631170195456 -235003420565286081449240434910953472 8915070121248078607101976899485696 1399867543198658479309827310878720 -323539276555042399100601872228024320 96304925919687669606727523762176 8779077560713214396492097685291008 -898353610306215452674567275630559232 3131459795616007246213445673025536 5194514030979399666288045787709440 -491345496406316056397958026660675584 3204746624116506961877789153689600 883264617968822728316981914632192 -381246896706446868469692285184901120 6986414448377435373279276796215296 1046907944960230847263214644756480 -352879416284342472912874762812784640 4697633734424356620449553844273152 8280410729204924176787319482744832 -237647439258508434817521601153597440 2718426812713347528603661854834688 1352961054680520792125112393400320 -82338096412550259218604209238704128 349534510112918550767813064130560 8497797596092555916590794871406592 -150533649458659898091863463325335552 7805875964877201525971407807184896 6173046666991066239849692364013568 -441418185820491340551036752824893440 5405917831693091667070603359158272 5503884427375033155942479579578368 -373244588456892279067387685567987712 9839446314355684288559076960370688 6931399263179682298081831334969344 -298860461956290971690384209578295296 6019824782181471571801044873641984 4606658697319034725649500191326208 -261652038099786997415705636274962432 8585301949088749230456794771357696 5779392255809876927580965804441600 -666999477782817203262148366657650688 9935765115753908931520665393037312 4221185603573853726513718987063296 -515638328876987958096462064635609088 1945445288782192066736918762618880 3181088237773002086913595653750784 -202684405258351412473380386478489600 5203772476612413472492775341555712 6565829493541474770213526021603328 -25145443639124775354278133379366912 6251146790892844443951238138036224 6498349232609187102642431682674688 -763531957229992276070122040437243904 4346256966575407276892872876490752 8669783261083382873780503552458752 -463895944111146589933196350087757824 6390007799295212194151524858855424 3798392775682347291317125630656512 -502873089404555597358701864586051584 4698277718220854187336342444179456 8464523321428798655539703743250432 -257621798072133058537173585630330880 2325159245287627155426353879187456 7313154099312775595697540821942272 -436028188869323664250789089140277248 7221285893031988114941261398409216 9998051551239593569489810649776128 -38882698649203390822607721336930304 4012496667608981188644686755004416 5645422963110400519989373257646080 -673441824936304562159974477230768128 2556301669935765925661260841484288 1656847217622076558034759906754560 -96412817451304173952753065443459072 1372033476284822551671718392365056 8710382286080963300456954895269888 -403678739152066209130536512102858752 7542851348895526585471667428917248 2488205212950993526871328127188992 -772608571059441036609986796202229760 6503621771500699910817929223995392 9231383271903748998824642253684736 -761087680040788773361497669782994944 5659228464184138332068766178869248 9374630783406171489825739679727616 -430165210100981870326142252508774400 4360242882147675910916610744909824 4313902827553066988640655433007104 -578457147850199741008656946335580160 2640554413970514646579553308246016 6503115809897460654995639816421376 -685082863789571187067903567672115200 1307643862214372638512193845854208 5555323678386394361324718736277504 -891760099543347638304470428559605760 3729863542770433674008732641525760 2501172447959189004740841588129792 -998722200988445855168815394015150080 35283507359212309584838049923072 8176326695532998466844267414290432 -907087007829219913856030052502732800 3957061016185785879428918908289024 5534297347717933596398714317963264 -110094538475035865737378338514665472 3268031687666892536128275316998144 5089469755063107009870514068914176 -622493105242462286144282505498329088 7419840164363988610949486410203136 7136881896074849123681836522799104 -37245336220103384112240484425924608 337263084262661532616306777391104 3943575060120374461369692723347456 -675504377533981429356339299753132032 4245919560045555186508987847671808 4737478085163104048494911049170944 -228438290052590004664173421767163904 6771886366122277416589622371155968 7392508499268315517788367026651136 -873953218429046715963979737996460032 1924661667068746694204139241472000 4167166252678377711346649271369728 -459769859613898444149647215547121664 1509575846443835726406351503491072 3878851411491778782255266077343744 -891163556096010165611010849700315136 218987530092006048409752277352448 7120953414014513285014379229609984 -905187189006522748536415006180245504 5127169792128305159872560901390336 3172158449277489671457301971599360 -841847343065290393261090277509038080 8843433219177050505153147582808064 402065819310161958393565209952256 -348466249686297594573859938017214464 2503634794670419889688408116690944 2080242057681168348726574381531136 -314223954407968993502048951954571264 1509751686485308756106377588375552 3863032153865320111704246279208960 -978707486135866010684167319099277312 1397336880015886925330884537090048 3226690060224282292429622649815040 -843692366907034101503711253148729344 1943426368277413975734328821284864 7946814726600928137597870088912896 -850838871504634797262334226071552000 5755528410387453260609244543057920 699375204074537348959438301560832 -572633302891504327650287999992725504 4628408965579124526796730171129856 5655946373465631147226721742225408 -947525386707469594904018632354824192 8090119915057014762729899712053248 7464797783445357806540414620008448 -286902098283336808476157495616733184 5923465854261619725904994235318272 1390290175784843571683471466168320 -397684092063646861951565411515367424 2757003685901100888884886714187776 2643663004157064411839494176636928 -542773269622471970972556925440360448 14349765615197647596356326391808 4010263112931672606107952455090176 -202182465966573618240886153563602944 2200375935521965929358780581019648 439895257633273188711334798163968 -347162889505252012926571360485900288 7785845163002082051600068238114816 355082092532816314090240572653568 -289790430800649180873763184300785664 6459482237004217588435224283316224 3038725853244255559854046872338432 -236674358073019272405295975203078144 8673518154204902273235237715574784 9247929879611160784557782884941824 -481630454019647950880915871160598528 2227439579962444571126108151349248 949163021742062420991272804155392 -124208531804592997132747283292487680 9806659001856917809051728309387264 2329925533933228873266115769270272 -629353729413194695030335457984512000 1539442947229876916090879753584640 541722646217389187041037278773248 -18332523101683713236084990719033344 7556395414800618496640231950778368 5871289378069887987280484317003776 -952037022259672400244626154416242688 8951037255439609074605477618253824 7572211457988292991452008314568704 -738685134437193114104323501922975744 3655630487091833011402683872968704 2026914942188716622227370175102976 -402720762308572910913082341520834560 1186997004397771324941892912676864 4908006945473976476993268549156864 -339595766963238687709607320809897984 2177799646329400053376035611213824 7772202765486931108408725912682496 -146120096412807191179456159873499136 2532857553948033862958317769326592 8590281716043965956459552204390400 -562865946777406609998717242937704448 2831445528660632162231719643054080 715990257234765839093324075499520 -635243794747138950552244222202740736 3593010195179860093294661383225344 9851685118594099894938529976811520 -595223630625704786085971841041563648 4698381410229303956490767730475008 9299187042887750235952620935053312 -478538331788308941032306296534073344 156770781857574429454825401876480 6908306334476864885979686818021376 -177693592554448058161703965280960512 859017981374040546471780921901056 8515623805367759984670584369840128 -402423980790918774303173893980946432 8244602168608886849299656673853440 74873593254248646776476642836480 -728145909912652427459826161735958528 2154947662753221135106999301701632 8157040111031324661206864625664000 -563397836035847761144673336010211328 2493604403831966087667152853139456 4969859439856380591677998895202304 -343530190121374235247934504704147456 8740325991137250024465253055594496 9975216881655775933798926402977792 -134766769019976632258529657851215872 801355930180420307190861424230400 6508717491015484516489346167078912 -330759939071629993920256328708653056 2242619634009027998789552243212288 9466441166885747660360049563271168 -560977390958171101424315878367821824 615441645887969829946573853818880 2137291346678515519448545004355584 -588635928100764740850368387907321856 9105012715348745127771194446053376 3661317417990736057349255341277184 -910391128440103023941628402000199680 35855846682159064046055387561984 9956355580381107850400179786088448 -136922521977694773022781107569950720 4503385008486732777304379698970624 1369153028881169148906167561355264 -279072582378287528320346573967982592 2736776689028609654536252126396416 7324797954250137413488633815498752 -543634674031007932049917895321321472 9183530421121406876044541521035264 2262593583260955488078468147576832 -584001549064785915649157579292016640 528568101214547424541995039719424 6834818444826846454058425501351936 -201715829736325994238573920710033408 593645479188735042836079184969728 4726075100178299779693873155014656 -44537668967330886546134610638536704 6176880559444134603758603255939072 3956686529678398182422730556571648 -285222753663311687607140049297080320 4655944586940312372430369953153024 6290386638158107421272537586204672 -209208008578506762302691406317092864 6194236590963734870470170922450944 2773423112036075737291307226234880 -425135011343845441900437636057661440 5467336041230125952721315954688000 9455912084518361632079150311276544 -941674647179539779968204794480295936 4136515257749542214552135917371392 7216859444438592436352821579743232 -861592874704617322074208655739191296 647178821230972279929767863517184 9295834016858740776455270375096320 -773126445244053101551609923929899008 7776346754630093030516105846718464 5960007877545801945443958551216128 -885550975886804066158363782273826816 9233293339500435111820692341915648 4569402450277047337095700028588032 -512124098880287614136553463030480896 4923478793569812033156664679989248 8746187196299787375391128846073856 -507346028045187695683745478111920128 7165506049569369467216714119774208 5046197791003437131639704606736384 -808350273590156170560449317028495360 3231244140142395778746205683580928 3011219447266402779889183114657792 -309702252776349227840308634183532544 7186858048614788055244156639903744 6453571567512632818068353059913728 -469149329570825099104985579031363584 4129089107214416099726764166610944 4394312657597705144904690733940736 -188431393254373044245109532465823744 2454436010698744070416966378061824 3857634989275901610095886372700160 -473546002761784428478942551094591488 9600301887610777278312673244610560 6190207868188180850247195653308416 -913101567175093115785916608336101376 2177745473905402860398683384446976 5981308069700244209615891534446592 -668612415856176561385261030417891328 1010712007973337704560850626412544 6257768422157067661778233279381504 -280689925359251500057742392791400448 9124882865133820640583350667444224 8942372598588120798229427906412544 -632897075905452644101096045981728768 8063008256897899149234841122242560 4094194580414039585155618936193024 -368487703473630659804958264840421376 7020949725772433268279851622596608 1674490438053752261918380756303872 -439289197696068908730227138418966528 654919044261017699838506385276928 410349722042285791583660891176960 -23160319220007186377098016231260160 7371492275482339944068693679407104 5283793072793274698199923280576512 -417652186260955555157658841433243648 8169806880489824857625902261993472 2190589916113325340797201861836800 -173824444199630418746475608027430912 4174680488198359961794375103545344 418220714057546788244488028422144 -110229158836935344774199632547807232 2580871908778595683520465726341120 5187235110015459924616676535959552 -907384296785402363648790634868768768 3292102378366000403194936364630016 8826871299193545238376822075293696 -823872434741824700823720822891872256 6493591876512690523662143010635776 1551056085574699109770129137729536 -407690985521527749553733632813694976 4986540270479883883063548571549696 5083415386709498346080446885920768 -662594016246837169373752494689091584 4345616327647185463701605328093184 4242367416275474920105136665657344 -213596992962510715968241350995869696 1099825063322280558597244020850688 8875514018587359544489577988227072 -193330985504199625701063896009277440 2430241509474965658379938252718080 5537744060226482099651805708288000 -223857317991959750039946609691721728 1468497396475366383681077176696832 8436465560416249390309043521716224 -992795157210477852753450143999590400 9909299145307645239661884673622016 2462999597433159206941369179308032 -483280628773580645308388867861118976 4040283558948507545955264679116800 4070345281245057142363123991183360 -695481918111093956547668391187447808 1037360984129392975002124268077056 2366694691433148637768368183574528 -263282032539430262096553095041384448 7990271538425260587995745782595584 1886844800910515211893557568733184 -570479227001219811042551195194359808 2863642454105754079894679211474944 5132766673111029468108198118424576 -347731588976348934770004774302515200 669005957828689084978856202338304 5285339664926227345210346762665984 -799770099356698420795768191663996928 3679961590578575880031517557129216 6956957677858434690718861161922560 -154527801109133866763821355687215104 996110840347109711147662523236352 7626442572515590584281245914497024 -475788498391791834909769243675328512 5238992119235682407746527125569536 3019134466434033835971278054359040 -86868198561379163538708151159226368 7766211047697531130665529713360896 8948080923690197408764188724035584 -625113531815722398816046512944971776 4464695816250358549102710321315840 1848573066220361267882851959832576 -717905116212864221122422478351630336 7926627237679152453664817081745408 2853976622472275235615462511345664 -764370211791980354888809199951675392 6365923937778988282320206524579840 8856964660714269797068721618944000 -779791771618736765707730301407461376 1269144781444092479148320222085120 8967508924403985288456386966978560 -640219735262448302668594695601389568 3386716254976081150558696275705856 8128306948019729834817961416720384 -926613452036152626731221587960266752 9339901209928275304532639410552832 9526262821057922729245401847693312 -173600731188119770028676858108706816 7636122123019624056473084204417024 7347299528773708268128701085908992 -418256458230422134753735835339718656 5368804996474658989052630359080960 7703726710245708236594513186914304 -55493189039553455777510669064077312 5666854711795590426604693065039872 5300120568568056431809202120294400 -758490755101530653680101525282619392 1504942738414638538532991262523392 4709587336048908128366032683270144 -566780632039343498045816648725692416 9225840607838990270394105715490816 2254530570103684418379223471751168 -404793069523258665719561765942984704 6350788514193621968611397909610496 6921302160036668061754110714576896 -46184402180962738339874047950585856 5508779819478639839574445116096512 1554607771883475030160819636666368 -777555518524984534036845576895594496 6686245486934430268998772842299392 8399785134255788110161549885177856 -680561118447443139212503877416910848 4654607250111032028542972792406016 1601240398915631218099605989228544 -19360818370829395308524967607402496 5117429084716226005357579621892096 4404401819892506530868390057213952 -38044347166431544246877428656373760 8394230361592279847754228909998080 1465967155417170671777321395945472 -813578752705506061416766715841216512 5638553601734235388498498241429504 2326507513329865416029342946820096 -919499386938761685651831242887266304 773605042261940541529652048429056 7270196516309372284882549666217984 -133065575908123243349166503510409216 1496255347260379157401028406542336 1787854782837021194024313931431936 -504775916239357703929795516995469312 76928159468143571814214078038016 1730693702769830282535599643557888 -533917919916552244726989710600175616 8930997594741253034164946888294400 8590138522189625496100471601889280 -775667529804958825487470467267690496 7915879071006841113355915989352448 766194366716717577648886410903552 -545290137774178320212866716168880128 5527508389889180804643699359219712 9317274219108855053796482851274752 -502917309776913282335878688895139840 1888930846687190849309529704759296 2106927112432355046770347727650816 -80133439527616303093953035199578112 7547719934194573357949420121882624 7686177529348887874145179496611840 -117842728282836619241846858126983168 778111083886128060277432988467200 2407832086333211139554708526465024 -812293373457682508194996836943003648 2906637059702813037220053605416960 8050338601670325664711636007518208 -106325346135317586325519855358312448 513699534712436531186497797226496 3944029263983217979092000107921408 -871164006465852027561822260549386240 1584597690045079798424482778972160 7527822506329780065000455791443968 -692457142638596399056863578692780032 6222587051790906802719586697347072 6121823580593342288019831818027008 -38450405948257307515091880308113408 1493240782794834669370453935521792 2977996604915428258203506873204736 -251825572117895930704977363805929472 9613212280757219846851101429071872 1635808931911435469682865222975488 -524496345237717065527502571569152000 2774813830691407553880196628086784 8426774685806585227592721454071808 -702181318883175393790870583840342016 2013840237417781568372513450229760 2836325709841716371863633097916416 -121368244438127061027128194923233280 182858989997430738229625052200960 9951239080733435666310091480498176 -676282436795084485677106293848932352 313862915596602098136954081116160 5413454503715935034253278240047104 -882162654882257770960154027127472128 1073337251972979328925144339972096 7995064098187620749533153620656128 -91923683210633250982770685497049088 5339240989424198299245071350890496 7671779981799122702833794343239680 -7682550507139663952174307187097600 6674235918377392687990272734265344 2805347023296780557694551499735040 -937318910926783268486211834113687552 603490581667485357236213921087488 2950555546567247791269244768878592 -326170949266782761883783639068573696 5086066311393302234744666797899776 7573659902747873563152623551381504 -699264314438531926125777076680130560 9477479697071562713910654034509824 6765580336345865804141230102151168 -951218323562477355193198531315761152 2786749908063410463418028251938816 4727488037367278462840965045420032 -29457892366484631650006890537025536 9926170607822980045817036352258048 3057394402690988232021322246389760 -490597660078854980118998314312007680 5922382004043744921727400465661952 611497549665772439766496698171392 -286339705454124476121815544978472960 4302865738820423364604669068312576 1071916148257547619667349715550208 -98223556959232551299767178935402496 2437542998975456711143345493114880 5694404923904186442093426856951808 -833051240472993416024029948408758272 4287060178541641170463594083516416 1789958931599801182668220669100032 -564280087843610403069559782814777344 322541415643309487385561559728128 7278811403322877948802645352251392 -381628630653063705238311451410563072 291382692230448036705361360584704 8991455945769354417181801549135872 -633389221009724674068677469761699840 7100489133154031849912197556731904 6021353648958926458139843839918080 -79728015015573105857351557708775424 7308761901073489262410443553505280 7575446201261442206096830364647424 -121525502442579897099803932313518080 9729543326635565967166140368027648 2962702340614773392085833970876416 -172847028037116975525639508979613696 2123294759304056293804485591957504 6707395594395030826666853515919360 -29344781738865658120817518558838784 1055812021153864783764174283997184 3607627811026418813057010407309312 -440329049025839780623193329310367744 3517905356819943357248086302785536 2222733264734272059137370456326144 -273150073404122260154296606327308288 3599002637550357523601035429412864 6239829436371941838529352400109568 -314822245768128532909256663879385088 8210706120973255412308241847156736 5315208871834520061308814277738496 -921016096389530901447638131647971328 8041510511176024457094061046628352 3989887759856985465804223191973888 -875691536890779846193414060332023808 6276967790498327885282172033040384 9212311788193147319550933903343616 -542321158054716637395168810206494720 8451211251234977893764766468407296 2627133412642103920663541512667136 -461669293208532173187871840913063936 2521959127502438065778011846737920 3204399302125607672632139036229632 -80242905418276392847685747155664896 432377496060744260340283384791040 1898107915542364884489032469315584 -622431683732517091545854625607319552 4132021095993451336198618693500928 7608199409253639598864846167212032 -198835127600614494907564161369112576 4885640336762072040505328481075200 872277503229523020405013856911360 -573752982057292671782422788846911488 7651226839169691493650952427143168 5681211871808759571181772809961472 -813232893974448433492616670403887104 2960423484702344468866473681485824 777197562807179344183539085082624 -552566527958420821713760185235800064 2051751319638528414454100432781312 5343674204532431963997445344460800 -162311310843446141792035576590893056 8571837938332363830891066129645568 5057467784265134584963208713338880 -142334504361584019239723335176683520 8762071293495820478690538746281984 9513834250699704867288645288067072 -843309419636586613964268569200951296 6817565472930934816238234037649408 3820324847691150075557217990344704 -306076454268445797125178801378033664 1772209913037424183216235268276224 6820777193258638785770687486230528 -573395316234015616350637448755150848 8051710224190446451911734773940224 9555417114964040463012700903964672 -823854723100765157807298934183297024 4796134245219769706245168700588032 5099827553531604952445184215351296 -755282789957454370923485162811424768 4034239830112771093609999268577280 110214871210676092419695318138880 -403902850726482786518566648290476032 1360254099773326780591649423622144 6190756985066936191202716215672832 -112955931797797297038366367327191040 1586312245783937664396763437465600 7033009880788902135181076701642752 -753669819068940253944109239384408064 9567463354663617450405730002665472 2432038390646802451401681737351168 -93295127005778311766199059055902720 2186867553715132182085567583879168 6797516508157689887980213206253568 -803059407158068723231963101200908288 4180877998203317511734413001490432 3417507524067970778618923912790016 -863302909836962519369144424732819456 1339671777097289009678005173223424 9647271412032761499932462914994176 -356607751581400738427778858020241408 1758773387568529144139337542139904 774486810553488669958125817692160 -460047358538674544894803168330776576 2038785346503433931769656857591808 8232302494500899355170447892152320 -644198387072964198687868444626386944 816697591077010846957522709905408 6530748600744979504570061291520000 -679095854897579997959221141408055296 5026609307018237801888037455527936 6062443295655950225342548976599040 -971454466004487426279089795030319104 6827101316863915154787615746555904 3853565776161964725278188029083648 -256829513335588127277424173052329984 3316979588448075164247359154552832 6013336810517833075613279627247616 -228898056537078195980186542931968000 2878063836565798953214791787741184 9654846205808553856521802744856576 -587904009191284516968181356258394112 8792239160873564826747015736066048 5118689272274234949609081853181952 -723095819758378581531796913667440640 7703830804460055753874140771123200 4502638893803009949443475451674624 -232502753228697463251832305705025536 1436632350315558119803552928890880 1001298780312970773491309978058752 -276214645021320032094857791096750080 5045399405862608198238451571621888 3913057099960400353675809799536640 -840865169132650724835175240965292032 3107076209807770033999947512152064 5955747567369702841927998417928192 -752538667268209033138909194454302720 6695333617242370357167732505444352 111237931389674206259795573342208 -256105849562141362747919955239370752 5700089922156082960283928713232384 9523119800937189149129304084316160 -690673605632170991457547234790342656 1878694246165215831944024811372544 4802443177821200830520901119246336 -246860019269633455470911671672766464 892220700552181661068172082544640 5347144285332713058052567195451392 -332638372375970221991442620555984896 1835923561793322904125842284085248 5776433533952154964431198918541312 -56242652594052396701200109828833280 4141048580505857493083990809116672 9153502325951445367564750437744640 -772712488023790917891205570811133952 876287498187246186327317390819328 242079146322931633217552462643200 -739987515765957181632973063682260992 818357587604025478851930521337856 3753299238925770965292569260457984 -736716379819109651250452896076005376 2923623547645452124448920168300544 9793782651856815175996757537456128 -230434110071023522920923133114318848 7504412883240665349417879407165440 6858895179063891165283644986097664 -311395205162079095304699448725078016 5888166950140002428929729689026560 5890065349732978266078386763857920 -651749763653567629896690074663256064 2198834524207333585150456360861696 630473157891472787347458920284160 -273817667687422773608109880108908544 35221231373195289494620456615936 6312540427124648052060610881388544 -920209527752189703287559644803760128 355481494639312487025729020624896 4167063377291376615628994930278400 -526887016394925149918724162639101952 6522431321139796538866867778879488 1415407809119609746772998605504512 -412317826346805904654017598572199936 7864416285937523488282505092530176 7656036164870967437089520383688704 -138888481889970357124368113965465600 3760458187031350206792107617681408 2488860682118715911597113022087168 -163814793761239440934178312136163328 7015818537076191166362861975896064 8371650554056192931187717084020736 -437822370254665398266428889807978496 8726483731381251286702366807556096 5054117355552212903042753530691584 -834610316107424022815445745219403776 5649383392385505259427548564029440 357795502014612481844376095424512 -358872302574710121367949091327180800 778200174385729719134297421512704 8217459640300667012827878730498048 -706723008527780265085722225679532032 4178165354744175258168898910945280 8447969848905391170896087729831936 -650266001301795817730276651123605504 5254003574083196190545543126056960 8280215380060902717361209772867584 -96038795466770914165027021816594432 4401583610085728449037683344277504 5784704559010463352195989825912832 -28654490617525693124110732427788288 7332758376006463852521753663242240 8135551366927814075861446128828416 -815259521050974953832650459792277504 3277769929796575836805707069390848 6706949231631026615744741349785600 -342810750909066081826871664126722048 7385355481137446630374878748868608 8089981159125416810369438697127936 -184285219683344619532544775441874944 4295572319149422638726532781047808 465123805504415129911938944860160 -328867579799417678906921523569754112 4181679286169168262806015399952384 7066454876036043003768226998910976 -85532186183698905518760746863820800 5359545840074397794489643720245248 6108822571162804362225212465348608 -636396700573986251047296732567175168 7481009323608161248488203879448576 733676936846693195918006818963456 -620654738289793513319552781863878656 8692708181686328409475299351199744 7012512559244414434685237139079168 -59263340141368537663539849709223936 9415000495944092024044364469633024 9224780004640598667795048765063168 -784427992728313637219717528992874496 8741999864592011999444718128726016 8339232068262311924829372366716928 -428194514803576675038420451308077056 5871714610698100751710841923960832 7197266686848656867292134338723840 -907942860551438145778651306563469312 6721982544247844321277538253930496 3066385389536099981180035024289792 -651783138760746105681443783899611136 2669559960229978378478646082928640 4581120319877592693088414355947520 -281673726213992898161898495907201024 4737691236440906288601023526207488 2383804214720565265522740047118336 -928398973432408233425489236796112896 3770458317134370114313868632129536 2273769753352810351439858815205376 -825259877535433115004034259601063936 1817316634424966618210369686994944 9630163727747802427350884697505792 -647959701369366572277100679671054336 7646607704765203195166576621912064 5276347853750641141160116238680064 -356678308169001362109126234934870016 5122050130244842680095348262699008 5429575106667651751334405709234176 -999297949781636495823639228857712640 6154859524312808156090956341313536 6947575946627113307709745341136896 -525468782493397048984105837777649664 6336734596815989182612897909440512 2813980037871680577489969392648192 -263414596895979327760206906376847360 4648253711623672930268864046956544 4235280459593937875455594106716160 -275306679152999064974527447911366656 9704066262711152410006059432804352 2743684450038958263578156857294848 -833711467376709245243743920073998336 9083770542441848543113043876249600 5441277209583211421645861457756160 -513690125231088401190237494159867904 662106357239966625224094879055872 8816735765736230643027124808581120 -989412195125749510309412600127946752 3587159270375051202850729406496768 7797357507506861789024453423792128 -253756659126957787384827548052488192 2882781810640443587543404644401152 270621488549398887672648680079360 -352851101824739699488144593021566976 2907502511807720201310891166138368 6291114203155859762952556481871872 -67982228486858285537471265673052160 4919857745437395461982375104217088 1174917710200337575604720934846464 -285232710562170183789395655734067200 7688740871003109801179835220885504 1178122212656730413239281127522304 -592289523809456830690010757228134400 3609587915580881797980536291983360 5093941328363969924333889367572480 -493677770481052802632215414171500544 4936152234260702835347791483502592 1188291601971285125408438888693760 -706189844599886984173760556713377792 380611354792666452746763788877824 7180485963493871765085754130169856 -993757237624389683298255657257402368 9213445595538103257811785934176256 7571334836782535854749223743389696 -355837049879596306969328635657322496 1022780635025194646472548956504064 4789876728064854504068824998871040 -83495694989086491022326277179703296 3769601521301535676103464667054080 8005097858469640886358069844377600 -36376163414005286064231156709064704 5672840402913318071612347783315456 5705714693684608959660566882811904 -893632254576010624364687205769150464 2298657549301551360062569377169408 3975861743786591140855053318881280 -639622184287685962539094006552330240 767349061652959987001418456236032 8386230456460524115958025114615808 -567746451350990450217524139843911680 222020120765370894882363586641920 9073968496937451773240798546493440 -52555029263414241032548816764534784 3690580297685152374342700935151616 8908880369458849025978315883675648 -982031107251131261427068363012571136 6801543450238603651141559436443648 9197549285337332860431353394495488 -421101905764995384626573308621488128 6479443721549663934159584772489216 8141547435100232736461288365883392 -921904165180439649658769888405094400 3355476943779123249704630958948352 5911335431656140822622871171891200 -779590157825712898190953318354780160 3072221709779647178799438408712192 2228259290237189254101166781890560 -823477630988374038093322863450783744 7647044806500073668355047632666624 5851944198639524025963970253815808 -468499633100000901676006568965963776 5541480715572174016658322204131328 5373357891297955653114026365288448 -817543163860538409761853030147293184 6720828552369823086482952265138176 8750564760745909812278530855141376 -893148526244057100340588926178689024 2393185411712298129588812326633472 5617071587360617589870626902900736 -557311548643852349716423059680788480 7472759875385512459780751343222784 6470937271424500994764025121210368 -686129552049947027938810789938331648 6279353577433282199194469406867456 5177596010012456011423353447383040 -185868155799509490577325728643153920 2704812040228403209943362337505280 5272125234045679049080749271547904 -758450123030653347828858346887184384 1139266967938579630559523560751104 1338360118837358410130284294963200 -795381162053082512268964611066167296 1627539139494325585297601382580224 4091500012313299536795564861554688 -501094768231584568496537556857389056 9686569410579259198203129109676032 5584435492447514029687941577572352 -655198352489326884240971431271202816 2824841605885639887810322847760384 6796723623157968820443948001525760 -732405206836269743786166716154773504 6014750619583667606545853151444992 9421354825029394248520947835338752 -889071230043060249159539746123284480 398824372486609442770523384709120 4196387581264258177931774598840320 -728403962313453257450420322504278016 5942579675022089624013599169052672 2995843227454350948745115277983744 -165717459729888346422430618649362432 7273722005227263522512647005143040 4708364484302519840319885207928832 -953999901004059617415946324494254080 6460401711028964876327606879780864 2293681825772204887157599882969088 -456902986075662920133884573894311936 6724474143127352300806130154602496 8363269388193188040609653174829056 -202370884661772581454207409113268224 1019070083425840024910418489114624 5655726128641182188125058148335616 -605102344849392801758114376159592448 337224078267217634177723762999296 6338440189325623010642125356269568 -22652890967536893102786978049425408 4224472717053484319644972813910016 3028793193759425156121348339138560 -240729586185744109088578710003515392 456561950314057863253786720468992 1632530715644182087933863227555840 -105902662220591961624209921868300288 7124584625889021991066026494656512 5461351696316823589396072812773376 -51939366704682922518012977007820800 8148777450550005599894726393200640 8324440798327228016085906361417728 -666160569326057621872454495295766528 8494796851851140234050112453607424 5413149359113509029389575814905856 -342983140550654425799154264767987712 2228389135142556760340317534683136 6229855159761729334288284523692032 -765218051214928910096861445316673536 431459919346272330135017306980352 9317327570254791374409285071011840 -531327627331237038897967594098130944 9434545319646088953294923591843840 8260904724209273561096761632620544 -832441539043256317828618884992729088 5312807872372844656995653499486208 7219925353677194973915708932489216 -210420371310717625755828111223554048 8529261494787959136712936839446528 4389026295429650525173085703766016 -623997108179077506193401795290595328 6456292204022981802050007548821504 8159539567875937035419421004267520 -129307146338293599271546094216019968 9210112592591670234271115640832 9350434785473813321003878152404992 -374601741756158217132284444999155712 9593933179642454545564559254487040 3323110226487077057197606652870656 -887199750680293257330249089440284672 3074092082136519796213354984374272 6908115134612913523577998148632576 -236054015184633045507861299666616320 9114850216220745870919577897009152 3873717487340933272732613545558016 -217334642303686389864690781456957440 3341528862921332692817932332302336 7712502491893760099285293324042240 -197818510152945825487607012098310144 7255564246750973015922401446199296 7281781811654775621466642744082432 -21667596151835347913323602040061952 3617909184804741079176706560884736 7745124200214815063898692010377216 -647618109529952552317598392737857536 9614406081438281067300329288105984 1117137922700099075831058969657344 -283108793355222005144202963270500352 1872027565367611511231918028881920 3535468485317969367695117317570560 -116421326722794491563749533338828800 4184419692797035076774349020069888 4318921648050108789803177654353920 -770183535977810601806499980599361536 5791902927527035471890640820764672 1390298287055889855791027739164672 -536372210584769233871923408036429824 2442301788816098073492377015681024 6912688841853412111008319164907520 -125527717232719135977419086489452544 2364597052826848281034074569572352 2243464536159913282442574440693760 -426574388622030839180043354053279744 9577743838094620740916116243611648 4542299058393759878542239085887488 -785901469243965093245619463981629440 1366494476411126851769215322423296 8558820255003254426539852115738624 -199811055322183035321729355274518528 7727805484588159377055127466672128 7778881078951515183417618956550144 -984910505737311124261437716488519680 5505346936351458583549139782467584 7088149065404621740455500191891456 -149029914273944523900335215987392512 6427083624129640097002471756398592 6975148876172217069452879927967744 -469727209354765908995351181418037248 5994739965456671688026374344278016 3928105319595002803673006908375040 -857793705103096208064749567928696832 3626789330839347436454475336777728 9418880736588581920862320870817792 -73820103699424079677124682551656448 4728907170046561990223312856285184 901875258678823637322332024864768 -831040783691241908595690938105331712 6504872300480288703447238608683008 2646063860823610546044227626729472 -795331312553935523060450937286950912 8364520689300255678696104294088704 3783133481660291347591836339273728 -272834711038881241089674766192738304 1833267652737534811333592893882368 7371003221008950582619694216249344 -36219892236920506482533569350598656 6042642592181821858934107670577152 663549527536677345078582584541184 -810089430738074032777432703069847552 9209870485682185842888097375715328 7518243559324278097830714332413952 -175883087983264601795320971190599680 4059338583677339279013285644468224 7714767377233892850951508461617152 -546866186349210930854611990096117760 9767213522037490464604279143399424 972244376085721988593814094217216 -242437018608649709011976800115359744 2925186182740425175962651065319424 5095588315183478556157933275578368 -830553337931741638084865501199073280 5414749641633863365795298628599808 3555231701028108501360754080874496 -10865586601371763832753176889524224 6990406552213440984866080658817024 558525667936517398052995776643072 -734644846270171343758485192295055360 5233248862244149537745076429520896 5132181321028161491739384775442432 -652843211660243128554889068339527680 3693674226450833503107086593032192 7019349668930319539966374473367552 -468597105566764597372783481220759552 6668977095304021213430805195390976 4994777094334659476057258318626816 -336336177416989803398894258036408320 1962082740056139010680059852750848 775429573039275260766518629105664 -206275485134111663945597013974843392 1336373601975208633644505670615040 6432166753009079953345427519045632 -558267413511712366665680761231769600 2013032514469534724307736401543168 1335146215609115570719871054381056 -45511132155680558387331772666871808 147029877999159302366563905044480 1579300795817552292266648855904256 -650656879986094327570943225762938880 6257365005856604015780875863064576 7667696887100823537814686234836992 -675933752693200217986792829315186688 8030480987265184268114716457435136 5455131525734966389794165344960512 -557090136844335512381039999520342016 8108580951505567537763313340383232 2822042334156878246698526112219136 -186060521178725393638107600937549824 2504830136554028100828713222930432 6951649804871568451412223747686400 -885216875947834055500399115835015168 5361872170965248062992448091062272 6013938793453515651072581775130624 -775912702405418371159160703391105024 2836107879700867426487458949234688 9142971846624854278984348469297152 -823940887938750454325504585540567040 3033466658645102642179571663765504 633680119525435034341573541232640 -33374668133866342814779613118464000 7628764837009480364361190670860288 6332863354737448368911454589419520 -262727710054838085891375311542550528 6860536381756230854505153123319808 2779858173148817170995661676478464 -993219374656660611875329999875604480 8783911255564360866725445819695104 8054025362853369403438351731654656 -992293927639077943382460903028948992 2857171781016424150454067819184128 751577197570023984033171605815296 -718144465540030810528945010538184704 8261914168319504425316613248516096 1993741240343373984727428946198528 -331597828351062465892493094557843456 375271798087657008443525766840320 4663585650977413244913636513677312 -775054684641967894902978073273040896 9617904049731949981739108200873984 620245402378881389542462908792832 -464975397134178018402807912910028800 6056662509458874471219017631662080 9881581433159275804508766018207744 -529659194537092029123352279992238080 1670610911228921606603392268894208 4135945148873512210055132910452736 -550733292963911516966132263904346112 3258029410000065721431042021130240 8915357345496884854055012986257408 -522774915681031545147086200257904640 3216493087321076192375767021125632 6312023961089640649907952532062208 -932576401854958635748519281917165568 6907663881121474369341508621959168 4343915030265163720641065533833216 -961839047165517906562206674467160064 9284614393691459551709308305539072 1522983521950351995488178458853376 -984394465956146601379334148340056064 2082986318841607413073451927207936 9520727520712020002960786694602752 -599022466379821065791516002675064832 7277452035249048107062845331472384 6068193108902129730482172571156480 -965361585668786678779443142811713536 8955543255622241356706913617707008 871446094270953053609060267458560 -291189594965983632531572431832219648 5359685431097906395189199352365056 7191574245047205150346979741532160 -591446365486294715778167079037829120 4876294892937855443579367631880192 4009852555538179118838823123943424 -909307415120511175366964947307200512 4138562986775143118327511309615104 694085372713542418514782004969472 -881136252907109765731852717207322624 7100281010742182488992239161704448 6522320940843010516677932957564928 -170640824590819656685274625053032448 5690024421296313971828077946208256 5778889071102795883665119994970112 -956398614905812669580818371682762752 1776211270193538327542685788798976 1303623195454459745660697223102464 -751826547745225433347662705319739392 1495949551802725425685934798536704 2237759044813601539254907687665664 -409358148091167930260020239894839296 1768858365246530487988761376325632 8059773452264517324569629815734272 -186482164750871576514553901666533376 3393624286158637889829466668007424 5430876243629549981359116841385984 -893553399302127816265235229594091520 2593976066820756129558196668858368 6137238307497978651115759159214080 -867719384564553917274103168045678592 7185785579362151461722825569599488 458321153380397642834095963635712 -298786441283133509472190243765485568 7037465024339896154082426675527680 4276246063983225053924007933378560 -132929922103663202591708336164438016 9413762588279964285753710893596672 484158088489501371016229976801280 -692100015544321833065470692421533696 9830657136212278655315155389251584 1164556493137696027120188059025408 -603255265002298421887908885888499712 4582372881253562709959124038189056 1044361585765930471363772596355072 -938216530223234596616849659426504704 1940740691284225126624095706808320 330588421175289124893833757196288 -680673018046043161431160745275424768 9596340468238981172622866553765888 2388073019903143255834997410496512 -118818179535832277409106536272232448 6673325642417345029106569196863488 2737084764083760487783906955755520 -10458302685553303958859639267786752 9186056433068833006084768753778688 8202021357815197231459607479582720 -558639734503552066196911522523906048 9961947876145331255414893628620800 6012000819892977436947541739438080 -905264950262355250747542593070956544 1063074140842155916140767451545600 3559679051026646912198881937719296 -621735905800620053500648189235036160 5526855961684997596999288245714944 4353062593646118483585574979502080 -949786462719868062567623952659644416 2552150286393631119937012590706688 8329417249490086100541773744963584 -127821226615440231490268891105460224 3657142963956776919461683814989824 9393559714960421705623488455245824 -882389613762885479624362347179540480 5003374369555893869378237846519808 1085689577221094975175424720502784 -461461152262371896866509998688043008 6942603807458134125488591779921920 8678638172196094056757212118777856 -827633548296640382093478926512816128 6395635085256711750817478552322048 3514586746911267071941219572514816 -713235540696165901519987367775043584 9175051391871088104590455789846528 5924165689823178835871236727242752 -821849595023425185989110577946951680 4667578166176555334593912829378560 4328544310594220331822737830969344 -164635923566626584023750415692595200 6029536366406551396486626588753920 5685766977160296098222098587058176 -209736427461244003571949631992496128 3137399984395662505941735584038912 1727450803731666108725096716697600 -697326929227867626801866462298374144 7306773459273359892544846724857856 1489406655506288120322531830792192 -634928294365936667583569953575403520 1160044424841837184443182168932352 8791967092291872150063064132091904 -285773815868876958191918157173620736 6302108789072415950950523411103744 8609626757335813134825794152955904 -101215824380943860045441884116484096 8645962489501576902471718463864832 7227087927584696598630220087427072 -190810200418687301470261755064090624 119943345699340831681188775067648 7303123683899030059646641042882560 -67669713732764357471447571006226432 4582135004718163521617231135899648 6280666531298843681464422538149888 -255560691905415506695653640454012928 8829996853369548382916565685764096 9078623412137159349578888822915072 -828628673035269426757489331454083072 936833271135323809735085131825152 1571131170960544836089236422656000 -913346522778856758650337819526955008 4131881538702471181884344670093312 7048470782409715032528179899138048 -912317317817878100485518727076380672 5007089673744167948341166242529280 1905279237762287573653808801120256 -762165930009887880514950212865753088 3758681791244901992621653773778944 4765407895528150825238301004267520 -228723926187622947938823820193824768 5890997864145350020779149029801984 8827035626236089863063496520892416 -661041213203809113866896699962687488 9538646341882760641238551373021184 58319403858768166966139136507904 -864227557883534002601234108440903680 8762588834114833813165476566532096 1926954442954680560550603028168704 -677787211407571265728913662606835712 246842369429703917126973833347072 855299467403595355388516608507904 -9521065745668271096215420127936512 6322289959627434173337997106216960 610138517780995825434106808762368 -982173592161244965704318826976378880 3892847149960473836590796290129920 8686617619570161338111967797182464 -430273156260222576644386524120481792 1220739689936346662075327947210752 9012524599673829877973267968425984 -962464258239915622536519761751179264 4272811507619806901080912564322304 4633501699385777129735484021407744 -657167315663823881696151144492957696 4161517308446323048456823741874176 8368948255367424465960375347576832 -218053845504181678724163003750547456 7799913488494639278827522440036352 4241569359614671703274290050760704 -136004899023021066662821061596282880 1917233335237284937587637448867840 4432393071151657184368709425168384 -678803418177235980168776812834324480 6398249159217907528149878163111936 4565130278703315729815620988960768 -220985885579985033176869194593992704 5980157662182589400813993023504384 5207955035812594035276976876421120 -503776496543813857236248140563087360 1967128599140805325608838391398400 1093970105853039914346110190092288 -902029965113376633532392224352894976 1183506157278453149018584688623616 6617680170770773169275289162743808 -433504822239624038162367649142538240 5879123665210080987056312779014144 1267610733848316569431481614598144 -877174685062953702515590422591438848 6922995252503094836354194421579776 7380828177343776750202313930440704 -694000203484649857357164562104713216 3070586214436191106329078577233920 5208742864318659789374237261692928 -724242811376359965250792687616917504 9192823290583779637894501705449472 7193359289396702038325377290469376 -629426208274872322430701613170556928 1359503645468022039782428313124864 1206763340902146814685001751199744 -515941891194704527980580527899934720 9151217761085930752428916699299840 5443952067478455607369111517003776 -581425308203529696325895675239727104 3336402357744750936250664177631232 6364433443008013862818834232115200 -139790883347003317293862878577688576 5866951533438869338852979577454592 4515953969623642249052941273006080 -200111653178043610380719882390994944 2030339586667772734024680902492160 268837425139358202828517237850112 -937183833881559548444068938743021568 9589570798491150419042101679357952 8908494706141585574905433720619008 -23376703957234662850576730709557248 2762284446574473176943857298833408 7199432360992850110616847844900864 -844826722711573317301513694071488512 3823025525346673218175879578910720 7502200756499058201393863761854464 -659972474795210461139025864006041600 5655356764644293172354162175770624 273515358627896087162623612682240 -905352982174265919855142588408397824 7911844748340806260164879114567680 4723325708798333370353194912186368 -582359304184440810761407536302129152 1962468894567236695303265066156032 9801625177645129284775314481741824 -227094529367532238307697646226112512 5431228037275723107292429672251392 1787276974053082824665107863175168 -901013114108966660510650273668005888 3233733588405682403881229108641792 603522220891659959232283963031552 -962825411464137883648429805430374400 3944927334647554701810180110155776 1173185438263221399505026295005184 -964288141625269564189846515673464832 24982994399924404424457599320064 8625797995897541723555174107054080 -559917479999894909620022185643999232 7342830116850505783810232651087872 5801521093840582884344774527025152 -599311594360746330976527236462542848 9622941565762506562869791599624192 3781622410911791229800609268891648 -260594506259171718144454352477093888 2155176060290272911999256791875584 4811368566783111671522012036071424 -435196746702808385270573147317338112 7595314608741023007076812796723200 4536189014802748541087931554594816 -160873135704384808503075482479099904 2082497878438503461333218147434496 6903988385736240276033222096191488 -869114389799058980388092378322305024 6607728774310873757734401042546688 1289375591407603177187351084400640 -158927800674624997970781518547648512 2734553737084233848605455616573440 7493271634276827381541464078024704 -977822962866320522233833449064497152 578204835826858969174347557634048 5031796278410283055409344936935424 -628064793299041867266560727432822784 1428244984305636762523206340837376 7876466871363510706599291139391488 -42381756988658789609010123931385856 1300238149518256015487157061812224 5926298492102001207605768300265472 -234012200805624468807121059633430528 5655808668990960629902795188731904 2435396775625990275977908729151488 -66894921955643018927610863019884544 9043808707098224686445843917570048 5776457740388216686015686314557440 -788931998364111243141711296905347072 4774905960002060837460106463412224 652007652982385448468054957621248 -511771971392902945307888877138083840 6213018504811185221775975977582592 9505099240323684228094296881889280 -446112206553246847446409665583251456 4634407150635234942483354668236800 3905018492737938092688704677085184 -183221050418383747361070242846474240 1369212045934433705508585070395392 3882778598979925788163796979679232 -206244217252683236679059053861666816 8212073178193555407850034996183040 4745994405731074224635474629099520 -216900079825897203153690460174680064 3093589473905853412568080488333312 7505139591623626585413117695492096 -473634033293691664675136965540052992 2502938844321552217414665695657984 3594350569920264590584583827750912 -217504283549723220736173825656356864 8247416904566112853835097286115328 3389083776211123749184647024607232 -387229615086470998968372377855983616 2852626440253494728001736717369344 3824622347831325541491257053806592 -31810347830578469899002190793539584 6696206362392675939067791767764992 9549153736903673874686195483541504 -921814699112926400084197824916357120 1196697889192958411984678498074624 4564121571383836648266818176155648 -767846481587691569900446368099467264 7237387726724323208646202543308800 197714850852757984102584686739456 -186855153597780280420923217857740800 8909799501189719380173866691198976 1737123946881007651558868004110336 -960533165710838742938962094268088320 5218707393206529123989575115472896 960673304618560604096536011341824 -201929833366016693925616676723752960 2565062604478053858316011282890752 8341461223406017203528666991034368 -619489467161411291539287280288006144 745242715380521600745329091674112 2338954159046483753809302612082688 -878854576996940129742002799106850816 6390282964095848339961799415693312 792784450144173569081213137715200 -597723632257359955028767086340997120 9871070851327281406035481514213376 6414367978422572423255041916272640 -195597923590256541945277985767555072 653577921968422055895820597723136 6318985879105935177248092039675904 -949638432878778857614633162701275136 6156499921145139977009288831827968 7744623640451523078891087708815360 -125142446509957505726962465524154368 8241596288043120115475751901331456 3129386404887321974212539409498112 -399117625368482717993555368358182912 3090464936006031696480047948890112 2100477756767914508988042826481664 -821266737247459265893745907124404224 8258595991296842769605895747796992 9230635837039105860054870451552256 -630843195572219266303274690610724864 6332478135067636893803803133870080 7984655567412151262503748801396736 -854036380896283345825262355588579328 8792968262417250230808075906842624 9095096556287239474554964010860544 -409165845582253867432214481929764864 860232147772439140604051875430400 144428293319736096383589563760640 -837386303687778220557256224476758016 2427034027415266253684393535078400 1937636046222385019411640052875264 -554007833495893956171562487352655872 8403477651938296051394941428957184 1478029410451064476499302565281792 -591779635933910564789728417966718976 4744331348321842177594520265293824 9419965342067671635534791722401792 -460434044706857301635100419815374848 8856679313857062327062292152188928 4069895056239453170225464188338176 -964166342943293057136838931216596992 5157310795841882653103798429417472 1677393378819872572168402647384064 -228166769282049420041569081514524672 163831146651352789046287732310016 4167510900574907355928530367021056 -965577385976627298004547596932087808 2231716352172726050463218801836032 2141428423459300637981861820235776 -705638841284871889878775722072342528 4472060215725830224694277335678976 2760412067844723729601332143718400 -691018041552592939139647715065987072 2131262943932725782885522900779008 830718903709067453182926775123968 -37178278378413907105248481191657472 9931032595425823073012826220003328 4364908723903728916812137714679808 -927502119361421984403403214566719488 7545201046473911404836443241054208 4274908341814310896873673127362560 -877171684255803739441339090377637888 1420282134051855633873657858621440 9860817794875948872059752368046080 -188794911331022525779209259046666240 9507701039919906642560770776236032 8170025722250246779520898392129536 -968981617338875805452880875465211904 8945973161335145908248666324336640 6233887238166992995811348501757952 -968087959296611078226348391379501056 9366761324884431558286054912950272 7499088967291776976225677667729408 -270360229626216640467308266427252736 6975775678010045277500862315364352 1131694165117612252758922556866560 -201281070352025588694656782214103040 3940862246238399350521395960348672 4428654160783758458707395464921088 -700237111151816376991378665182855168 9826502808403566651159024758685696 6518305459558029549095562355146752 -767647182196827446763419039042633728 3045424774970681983946057555378176 1302528407918801012635080675295232 -691743079981219432084983782496534528 6689792248783241646768299765137408 432334251797292770645842046484480 -598773933819543501304225879530930176 1382785644941448476086498255437824 9392386804923061259368848729047040 -145050190220502666078703896680726528 7051085587056833698095435924635648 6687166388598498922200852783431680 -17021244392016858895714631402127360 2476308047929885903476773741395968 2720673407778277695645014307110912 -804457091162480972480359331830693888 7548662478711146130926630600704000 3323158108172021240494863367012352 -490672151235374591124919990035152896 6067157771305748454272865851670528 2481245247500383333006866775015424 -2171688330828806551773233639587840 3585339809905224022985609544990720 5459257238416778097324612569268224 -721842183785488910751345075627753472 2412409516072594088849493742059520 9316990586929442167212385650081792 -536208185115096253999693809428987904 8093576276986741805333152276676608 4066534674200613490036939044159488 -429878895070849839947450185290874880 6104802375678048473665182652956672 1173950934672414229317140061618176 -330377752886636364417945019690778624 390350634565424674297611951276032 3442610873612476637151462837714944 -451966805054823623911446193731796992 9647538289034693645141472261963776 9181399887678644259473489691410432 -873714415645709827214566109772513280 8473763303311366031383205565693952 8752953059061426118565809075781632 -389049361316119859270357766107037696 949298356027099582035201454243840 60686685601720237410111534923776 -729720541357324196159883972731469824 8438248073466504174349842466734080 4742490556613273812483916240519168 -134445444145737351220823028068777984 8521936758267984882370992779821056 7865981331059487525128084041760768 -432926082604246016303093866125328384 3195147925463951445466701449134080 5879380126768177724365183964413952 -570872615614185371569132743702872064 330674203591557419255396676141056 8694865449811980980811093289992192 -213151975807361369709630821450645504 9049378382122904629698657580482560 1637502636843947884669398683746304 -580281724540562689226991769376260096 9621147125297774177886329278300160 8968879077843232211889016889409536 -56511696411340126718553843826688000 6361885178794410113992113688412160 9258974996731739931178259489751040 -723378790618606129934701812179271680 1023059577580121752035246097825792 9871108128831079287752524780535808 -601829453014636473210380185705119744 6890987635716470828255377713266688 8336443488254416375214496504872960 -944013161640396477883271805839343616 1662200267519401319195066536820736 5437083960266365689608559585656832 -524682929064272591672393207830806528 3743143612975738835518217313583104 4481402486552816297260270856699904 -385664926740620003135604801820164096 140785870902824252729478938099712 4531867897721508199782663931822080 -275637440907275179541930161817518080 4423810273114606200212572459761664 8565681282482547689509773692108800 -319052894384738610441833596521021440 5839058989816184826839808320995328 1482279845527743856112103556382720 -864541191960941965278477848034672640 3899494292423626947540900477140992 1943379702367403207932829914628096 -523445732983256978454335315964329984 2590674241321463942123089066721280 1665874605437521024501016772476928 -488257321484449290960005125870977024 800023892389299963912167475904512 8719600319602090210588862980292608 -84819027537880127067444166701088768 2921352538936687367240681361768448 6577897836607271788309181018144768 -853721792196789847862128530933415936 4500650097343363071425135605972992 7577964229314901488610691961061376 -259561228857989515716468123476426752 8212410144652639527163165157621760 9435628449939478215606742424748032 -516096960087988900929368356387028992 8529592075415228901709924471406592 4380207013159791196434146428715008 -655480970487032931733544989607591936 7772258382416513313427663985049600 1010691556320477139749278366826496 -911899506229175517973900960259375104 8885904879262737292274564373413888 2437419332694128961255681401290752 -321080373337615426831868939661737984 4613306335632634269077706490511360 5295947029456707715330208870432768 -569141311669515461556954530727329792 9246064313494413732534366314168320 8916611334512174506853163102896128 -596745520639701913228909099763105792 1329752383678321086772546608562176 5884070601741479339926659778215936 -770073970101422959519801179193212928 101000851883516781450445767835648 1080584265144736900327428235198464 -954634419832428039366834942724014080 9529250518806887356384521421324288 2122595246117699194119227862679552 -65140487949673600420553685311946752 6055556145959853224455087348252672 566109962233535533767429908856832 -303691827360977903708183453499392000 8729405869636157668609578252632064 6243784878222645044317640516960256 -800030061771802111525869285883772928 7093796879797267331899601685839872 9383676254289041925339570300256256 -583479842126598460174979154323701760 3172855885573498024764539406385152 6508325985263232230629378260729856 -291261340647219001937970690596536320 2144204991565406614656811584716800 9530535827723565561325327807938560 -10457757826663547032055479873306624 7563179394362213672860400605986816 2822475214490005784169343830982656 -938093524812510183930756654851686400 3667466175882107101180830549016576 1411260395277474891973999326134272 -150032874580708471541580697983516672 5877938761741396113298208296271872 5473413160752772538533322451582976 -599483940291825913139804548171300864 2135832245534798224880111039021056 5376873727742251021872104818606080 -478686213648474373998419568798728192 6946876979889997327693145199083520 4399179106094382933036804926865408 -332239914530470400442252088160813056 696117849375068205717145740378112 3109459060185173507395861610496000 -192567101717883090785768669412589568 9872479023717686445789092595630080 9316468679061145061997032532606976 -912074644715927866490793969456250880 7612217796416053949031900810051584 6800090015002214592562740760412160 -950755613011253858865689827599187968 1653960854057565171231088971874304 4498300895615424684538461906010112 -522609521541389680998667000140005376 7710662521463251741848110851162112 5392487283745288663204095751880704 -840439100867651287102861870750498816 1659251763054976878336419037184000 5262473890357820960335456611860480 -223901798301390088104742100022591488 2640008365683003222801266478415872 1346605482192581564978415875915776 -994353543984846827464511035398946816 3196979950389633888920955107934208 8422382380108899569287051306074112 -998596446877234144903571571635912704 509485492897064231541682168922112 2207204628427888404595898442579968 -765184910739559570814387594119348224 2911186730930084489730926808399872 6963345307038512811527381993914368 -878546048192424021562329819397488640 6210248330245919669102291695173632 3041836475827186549355388038283264 -610317764122871300948501776119627776 6141268109358160234785110413541376 8802193386432613447942705038491648 -791053475268036513599940814492925952 119253270069775906799221517320192 7508740680901215585842157460652032 -328408582535729671101231401596354560 2395139815022703798123996928540672 6290797864877292916138390985900032 -311176861035348981210874294120218624 125738183903610228093836270239744 5630869448438464680982049602928640 -967738506439122042419277070914813952 2763741383288118476453049723256832 6054085289272705864122552943640576 -5692245974406577825933863533150208 2377249539909605641457531902492672 5485102508870967435174757793792000 -699750143706088390434751679475744768 9629464380327663968407997516873728 7764328153774572731859040317997056 -853394731310015005199960903023329280 3611952873232368524179387092828160 7373961909134143522923427190013952 -594726714561140966850858989719126016 5145348570229573917178644249182208 8214497908159522754067684994842624 -122528454004125562929529719422451712 5503596596764967280735424610304000 8903942888954706408080651862409216 -361279670640598050736276776719220736 6068738007431554277095126822027264 9911442732951884693089246148296704 -300092088106003573486643113344630784 8152919777218368548014150073188352 3241891382545174525995845718900736 -560320075306035929040298671844884480 7453513286975973702660780839665664 811228837269448617200309682307072 -885567344002898536781744700718579712 2119429391944820100992262421348352 5204821034176490802761514558160896 -809756309041513376985594170972307456 262756079558356266198296273354752 9788552935104178519843672606900224 -691629143552645626056183054608629760 1708316236570838519734982787727360 5356224701918893276002522276823040 -676861918965995261934612770734473216 2340937420028293109103176330510336 857790608821798844788759750246400 -647867242469790423121136500523139072 2346539517166066512309262651228160 4379646040988229940307690134700032 -561313201549860787200695222564552704 1131332837217686126294332459712512 5258105832537750674993549966049280 -437662524881074102451937708284575744 3048022878091526160243115878776832 1922316510214892950080657593204736 -487902362336090837238349547545034752 5384399330413619112928163374563328 1444982182463323529342911351095296 -218822594716502357278179563862491136 7894937871899422285034370027749376 680142613865001376985917887086592 -540823248133169977653423392514113536 8234250203418140740926059025793024 5598755071052149292394583089479680 -297102585944825110688587592125906944 550627511404767489228472139644928 3873049906522048636194204929753088 -696471245651825573060505548017893376 3339400767133261189988570078642176 3443798814992285087851340300812288 -793682374439221551399174393644974080 2826085558691904239581850790526976 1582457749725640879714770878464000 -694085068042983022069399767260069888 4826740027901418753708791452139520 1471408170631299642815795181912064 -11399828757401852992557673458171904 8518511828354655321783363061153792 8749566221669146226113439156142080 -719259897294488255885712104271904768 569296684079024661360753541906432 2675460811481749792152632478924800 -880291304645557367852585766361235456 8108278120233169963121215262425088 1167657071802573628297151036522496 -250616654921320728362812271897870336 8966777256224330717671635260801024 7648975998127725792171173712232448 -936756460891960751995084548295622656 8506788935992985404579934736744448 3079020571783736806606243511664640 -313402703001989557038641711278981120 6551651047162897692970902754426880 299068770464199670667117905051648 -621113690318292840800301327776219136 1572215263722923606860588205998080 8311040285436618586857023490490368 -375076405550908877918625085800841216 9361385620515033447826685735993344 3703695099901799824826398077353984 -550184529370592269453850354613485568 9578599484169365996118178416033792 3912634246679059387263344099459072 -289489180430020794409588558162558976 6681780483702066359721500417720320 5687418618267559413056183499489280 -84862350188826547289956463799173120 117316627451596520888033630748672 3686254182418077188243730768855040 -865854823103002273063841191176437760 845528055608628745141741537984512 9031167043770024476567524853415936 -947354320195725485937192058704887808 4181781048583025374961714964987904 3334675682645704748780636845637632 -425175258346918794811551685718048768 6700125982006605062701584700407808 5204046973691559685871650973155328 -415166043586859374959127419523432448 734961051511314695713851415986176 6122711610392040069631729826004992 -688611859980591930292963272931934208 1054322759024086994144884072382464 4715099860650484369133201675780096 -789388410713732407505624012744032256 7006558315405151319636915506905088 4239833684501460601870464766181376 -529685070073675622420430035152273408 6934509789065652461855185706156032 9098824931543250866571952884023296 -717387599335721252936712739021127680 8179493076236441162150658051145728 3144866507049334237513423748333568 -20141587997250098867523561784868864 3261531776223137593924192376455168 1450562774887110172184891552169984 -129591812671199500545798054730530816 6565438828985963180050349727678464 7929711309815878139271376483123200 -631316146259178617224418541946535936 2878571142925248236362960203677696 867383010630475483502509146767360 -309504823219418486813619380883030016 9498600569230152129572607050645504 707187123781127335245077620457472 -971010138784467545001329227521327104 5482052794546752725731123035897856 8397010827276714089582700001230848 -360537103517125990057720826675855360 8071636363879102020135873912242176 940118628495607465101423269642240 -355737731504159128368706137641451520 475850734582532960521939157254144 5931222801789030663042536552005632 -734481383454760863213604979760693248 1176381996818988092478973603217408 7366122108038990863695433225469952 -679129003348035810438743850454351872 4908306485529306279426992638001152 6386947988849951945713649721540608 -346819906450612974437185889710899200 5458400170807536912484531620020224 7970426336523608184293519456731136 -309201535248684489478085983967641600 8365778144456076239020792137908224 4480101644338418219724446053171200 -778003249720267238671979613654089728 2651252437830848406343217047404544 3286492925218396202836923156267008 -701095524718165030651265981727375360 2431283731806020150988952746065920 8153654569244674786785598503911424 -461545970510448548353308571157397504 7160969477037540067855761345085440 6291171557734324769106265433440256 -218767851421143950739798902865657856 6856606756613390429011923431325696 377897741155508332806217643589632 -861373659991355845334876057650593792 3812733900442523542227901671800832 7692669823767844924779749256986624 -417150205103868732864845581796769792 6782401006642208827874028902416384 3279536952438876771683534754545664 -789221447467471083281285667826434048 4731133677275387686458918145359872 3051347230685814278008728453120000 -887761620120804367001129336973557760 3579197704965462169402450940788736 2826003702929880818119281934860288 -987018788923415144688545971979681792 5417598964134254825343253439578112 6180967276891942281235340271288320 -64084558030832493964624621706674176 9786853912663041391157538820456448 5508629720970946915944167437762560 -167231372484973796154130266283048960 6489804307675756282088275388137472 7382124489595083404708935261749248 -315380284605199659594154695488176128 7894336030154669210361179278409728 5981234862501268309039761776967680 -762950584525091569623317577998532608 6623472325723432803947212250808320 3684085778924105972985032945434624 -847908252859463173631437955630366720 6054712005175009439890125407387648 1494519791815220269971766199189504 -125255623233081458479103684370235392 3895614031860458092081830925697024 3862340325168819525741321857794048 -541498490433184339614426396811591680 9482839531954188300828346966605824 7753154283198894216901700173692928 -591824078213107200706809606109659136 8054856045782627960351287588945920 6236997088622445139855547933130752 -507293806023462686653880082687328256 5475292293787705641931910825377792 3581103165820771533517910091759616 -887931793965956431355808175487975424 3277382102049239237752078758576128 5460094192010424749158866668748800 -666249744021347187562455393340751872 7227022128598543069415127105142784 5610537378016369603628228310728704 -286344626240539475977005573072748544 8370095525224579848413665585790976 7082871012558149272827837148037120 -248346262409733328251343946888773632 2747293328212393267216025043075072 7508937543620080737015365225152512 -220048591129553716951517621242560512 1324911771808185902267732445888512 3476409928289437092538814121902080 -995262416014861409098721749643558912 894426128244009733311449832357888 4096324895887590257392933419352064 -538712620489758910108923743849938944 8817475760103732453799587760570368 539287913774925706757987094233088 -827303147845168062855391175501676544 2409127061537332683499069195157504 6817613641654351064726621065838592 -141310374923286638097132283983036416 409965839419660003499022401667072 3100035552167075089425427555418112 -538036148145608791880391268612702208 9709767922495979255836492418777088 1675400647996954535393163672027136 -604421092959991819090630965070921728 5721784536701649392191099728035840 1173497786923109624983205821022208 -992936954945469400594519576740364288 4187471969100604736401263189557248 7689619424855872889177937100668928 -90136390746427523876221398057746432 1949711386137870524848244736917504 9527249400435892063674567309131776 -558238448527217632254101986675261440 1324623055507413826839898929233920 7417005401930891898550192498016256 -770008377705809870302440088913575936 1819718987800091644508808083931136 4394572201560897016517221020598272 -709607431621177941657248163250044928 278466183424399316137250345975808 5139318676880032453575852676874240 -356387368169625205777027731678035968 9379712430995083152293355642159104 3293507383864006118867781719949312 -858880311573960027493045663977963520 1174504696681686964466312231780352 6719356581261316488231930516471808 -254819194874734037166370326795255808 7517400377956011680350198361489408 3646834866257006656632345457590272 -709536969499289746134066987146412032 3936899374651992163104880471310336 1543998187667516067093757602824192 -265402886983734913206775810527068160 3359013488234637393413414647234560 2004812689940943032144436148568064 -419691922554553331666496486469795840 5835852069623776951800910185496576 5727517606980000180220497210900480 -233669521848179004616777069154533376 3585498137903800478571850157260800 9622603794891624641463247628664832 -285414577408841011930424651368366080 725352932168231515922490195968000 109372977739013641299558701989888 -29869914427440285650022250206724096 4854243102824847573565311830458368 8929835117013990777851205369462784 -765816210384078398824445094957940736 3565096025570934820007871938297856 8203129626333520842344499727302656 -289411729561528790263401140390461440 8102923044044291431003819964628992 4496277950155240044722664608104448 -350705291195710522976712541224304640 1461555392819930752028062875910144 4136873340530567716152099876110336 -714804059340520505564575539667140608 1392989783512975574981018011041792 5882281397350475008554759710834688 -269312560058488056559349538291187712 7872114021413548448039340381044736 8578139573231783473738669329743872 -123033971937357160257436360089010176 7709034991543299389080288377176064 8984525987748233634319857285595136 -491829626366119007943677506305916928 9596708321713439214482503755628544 1979194593539847138927172260986880 -644113783061575698741812197247156224 5672157382441259940988811351162880 8708822061012978928432062836768768 -10466036887956905591230783704530944 7343335234204592779021395769163776 8786453635901420976464299907088384 -754915966511265604581134153688285184 1221127230645210331246697488842752 8705950985149272459176069931466752 -203153393920992519896644722934939648 8676449338572137978231421522673664 6216821022107462470879538338332672 -604099320292323101357141282493825024 8048843424983888363339848938946560 316492522855517135574822786433024 -457004588027980897782840813076611072 4461423990471532873519134524047360 2356899430914052405423133004136448 -421160235676894288818344119733583872 9081240675961847856851263504252928 368963609986001863026520117739520 -776505016221214664376794126472970240 8246663797689315466943279323414528 8639697716086204446707273953181696 -360070953720413645704674756526080000 2350169883187222323736339242024960 2706678386181655465339419747155968 -84390101391835093637799452795207680 9791824584355345902472787163873280 6420518776419350472782764222447616 -40129364425410619485055049130835968 997120460984999300667539606994944 1281805178694947105501544603189248 -703913127971561686941308996670193664 1598829366297342077674157714178048 3555012512317197158610770948259840 -526661376199194449349271295547670528 373310179958350692060872017182720 6469521036913626797893871460155392 -572584077231981980996997067913035776 5287129512463434198439643515453440 5845848933085018227070556360933376 -343909926183058823404523813624348672 3812671363441537887489025225261056 3483100080180562571295625941352448 -204741226593376411963866773519859712 2753269007696383598231812130734080 8536708709442031600851518679416832 -798312757560659615132723665927405568 2306528670298089977359834246283264 362624496479832510037916947316736 -544209218390262449542295655341359104 9789771413496455872095469306904576 6581927337615131242582481196548096 -316935253604268235206829335837147136 7100721963957215953487928634638336 4915425228730771493436108484640768 -585817591666925974140310066219188224 6901925947743389919329079909154816 9933880358253202972893994746380288 -765677747463900615193969148962013184 7915577303557007512980997476974592 9017966075401675624630365569679360 -182504119449803058301284059692662784 1216400334782899057349197498941440 7826154874494869216332561185243136 -664327188950372813063214463891537920 9303175935337383813175268343808000 7996420899625480271627757499187200 -388495876907840403374168754559647744 8815127662035713652619310713012224 1242575998575261367951283030327296 -498609770795938181757426200981012480 712067665726554921046976887783424 1482805144362484871173042107056128 -248424990707685324110528082654265344 3353813180259258030845831633960960 3232700831259124393825800810397696 -215869381513830741623517713356816384 1605798212094065547958606245134336 9692713310027511373052837514706944 -464353520409398466778082432014876672 9697119492652946824401762213953536 2812519527559106774817923271753728 -356834496225340147977292263305773056 614985044207789440827507259473920 4074505448436344110548996474273792 -109080341545141518603032670825873408 864450565994335670339809866416128 9651839359721382014098764220858368 -533549765060496727449365523340460032 1506388335604601872838582459170816 619098981427491907779958780461056 -913387993535918796489130061628178432 6123877531288739251152047424143360 9881576580820981794737825479917568 -467346324570236414545814096760012800 2536236272360242554539513070223360 2581223608780219260409750287810560 -174075350967425958314637243453538304 3758053707615295560129745260642304 6596760393494228610412526377631744 -498659885286977136429795701405253632 3740478536535365112884474278838272 6096923639260909716508087471308800 -283614518464863409014107951067037696 736001081784594182550021327552512 9195639969949448940094341104271360 -902112588265074106882869155778789376 5449027233986805614766873812926464 5116989408636359431069165668007936 -774247470694813900408430908699312128 7502753490022496619135334663323648 9320091245425015506233566162845696 -419475831179425292650518044716564480 448503072623006970489230399111168 7894210761310561571531672531238912 -968578312472616495192825131798888448 1568642927710751109546751658295296 2223166338461323553907170978299904 -550245591262673734662947504503390208 7394694084720955515425118759157760 2662298282584940029205719996694528 -91444034989034089067745654909960192 1297789005908455087908937239887872 2929559507314339243465562289864704 -197163947951181404793650227802275840 9815316080072749127401701663309824 3457027852038294846127782313852928 -338003463897617260600570744322129920 8634917300259324340697257304129536 3761138554931915691333047197630464 -972064054258331177294781357580353536 6164528430642356353219085341818880 3903778784460494597459822732378112 -403814034108793886391277017456705536 5468997526756693262909117684514816 7599384781271536682518204806856704 -767569345185463435415678551395926016 2702925746181763612474898112315392 3315292775959263188267161027084288 -222197492891433620902089008881860608 3456881004754329568300878176190464 2931917102851168583919303028375552 -332249942274717394521973403871608832 4981729993071053471691519928827904 9731896481197240081785422235041792 -76903369645037810390237801015672832 5950847157161586390086483311591424 1717117679921975038881669947850752 -451851625391948054830805735828357120 9976363093795190471813706429759488 8973765340951393046301420996788224 -892915478183436341749052195655909376 166680353984316548047537497440256 5224177321347469820826577161682944 -12200793878153617528212655959965696 2477958993687954257553223625736192 4164000426133203070085167629467648 -705028495010517742783854450959187968 1068686361728678445515449495977984 6713048710878250145361814037200896 -640463279560802279922268662650634240 4484360055600038088948113576296448 3750467103040663081123832785797120 -848469206013058419109934418748243968 6580769088998638279901892074012672 6591310792681484209599942527811584 -745713154307314998706823027696336896 3352087645761060567033619029164032 2066469040080757759542347981389824 -657142641031037091488194885498961920 5203308294848364545928395755618304 5752474737124678540682827657117696 -403666019142810311440722950438780928 1165439358984337729122627609427968 3782633387067330066512891825094656 -771577833642073187605557280247906304 4524088464540657865997654266216448 6152846169965985045744531762315264 -359628087181003515901464174468792320 2607046938581994490463800879218688 3450767148072297902465045915238400 -938151144394159228475950329684295680 7687238184750273933257107851706368 51162098309310814310888869199872 -653306880668627449187404434232049664 4504899029606637258581424627253248 5441254430786472218292576013254656 -31313388215765745742712835378511872 3497652666116038501150202861191168 7333340593481243390995541107146752 -983223470160195183243952014049148928 8410689846783822700481539196583936 7948435942810737245360525374652416 -127118723853763757193089941308964864 9949323859946133414147049778053120 3675352044235035816719922883461120 -360617386656464012136388413150461952 5986413836185492615604516736204800 9337792118235068221904493121372160 -332137856809636309986279127529816064 5204222081442907175710743196598272 8931037483374989910585310900649984 -612095379410539475713860637084876800 5724730291897619496548035125575680 3959779931913516573698819474063360 -232552346625847088391843890577014784 1241816016121028485821710917959680 8733939732736885748834650646642688 -77349773570464883704426682388578304 9142758386785702975105933508608000 1315561693614890122208329921986560 -781517995900714159179515971263004672 9742667326916913623119268872716288 8737858320812568701916031481806848 -441086029481110370721687568641949696 5867907405381538643829700039802880 4764431208115865726135311641083904 -229961963104958885158444594177769472 3931298981430573114648283421081600 9450447364823446554600859781562368 -218039263331142976962244520559247360 5964842129607626305254293447376896 5771216634961317190673096490614784 -640844913521691628721525997409665024 4983083794986929773927035345829888 5597231458818885587491174655983616 -53830174505388909693347065050955776 9424483225170813996442271101222912 4742527439620200880452008616656896 -912948256319852837868451441756078080 3612385095001243129804819131269120 9433538514293498365109738852581376 -41875122187184552608992591821668352 872506438058576610536906475700224 3656047909301323350503793193123840 -382176877757700628618102490754187264 2585986351454596638721766129139712 8391213370233481880581422492680192 -603282601684687366520542506856218624 1448197332146615801028900875665408 2207885083868176273126930813812736 -855924288950634423318412930720989184 2961187141117927415916905103360 3263959091295537811150114492776448 -664377531173201968793404841777954816 5551370823090336975058226091393024 5409684494468277030304903067598848 -494656476797996238660982988322373632 5845781049499491899404953193545728 7853776284377149855250719960989696 -180464312615752974201701588354990080 3612917168059844741950300988899328 7141026657345491044167862798254080 -322967585631886084374158218482417664 8017988644212373853659359376048128 8058835991869302299284274893815808 -261973192447846427553073387160993792 8121038638945959870338543199977472 1176144253765492911698821450301440 -207169973277602490710116822486614016 7549725915665302312642405464014848 7485318543955040293861002754129920 -879560364123162910654079280451944448 5350567096914138491500643603185664 2623804599153980465500852309721088 -752759252801574691020540033112211456 9948395120235637019059109295554560 8133789905786853040408243227066368 -884531476167634209739856550412943360 2837241776033757256100046367096832 7603234099563927899846570449829888 -507331569783136381097681316382507008 5220951151463284299921379584638976 6585195987344314828891754988568576 -557090707778620748999135421253287936 2077241465392120666262589447077888 459161034374356765504433373052928 -848319224757553478620445760259358720 2174906109387542462737706051960832 5633482995869094262061638652788736 -209781514280121719442749029374492672 9561668342984102713061641174384640 5435311013754180989237864995749888 -222141508511909227793323173376688128 2990362229961936128703001513689088 5844152509564168068822881577992192 -469874339629244355252664140178653184 8449567644620474384265345757085696 4219347527401210386828417000538112 -393873192650117674300043922096783360 9798711778545408119653859575463936 8722446548935948613003324908634112 -6379776135484689518079337788604416 8017199007383965408247619214376960 5485347977855876528051409332994048 -582831358064796932892471371768004608 2460006503949071879968114612371456 9909809145680144855497192171896832 -528405042685391898315017274083246080 7625119124979698302050005319417856 2520333808110723846606862233370624 -29526824791990944878246573950107648 1305263266859177126692581818761216 6236377251349987327203371613421568 -643715299300939979993841090923855872 871190308143372894877463263313920 9197773710121971680332146477629440 -884337766493321665479235829040676864 2910524223471120830976044574965760 5521398260362645411369734207700992 -807048604436841364385669826987687936 8596675631306481429255875666640896 8631853583078496232446462229741568 -982254162227859075821975530673012736 2080399588976974513056404895432704 2369103753015289452203181569212416 -285653200920779841754956000646922240 7755766951043645627505574609420288 9720578273113957935593090566848512 -800602962953845430597794053889196032 1785360648001660064551848971862016 4180350468921659692666064591650816 -951931282846713372298536551104643072 2243209955045827175225020704096256 1235848136294321072038269501308928 -97315584190892722521954150011371520 7365541629817294472139484893806592 5727512484469499193142195618054144 -541794131462272247556288824997838848 8434046981446619942650781750001664 1071554181712045214155477874638848 -533977211045619503129364999216037888 9103497585912308573629597651828736 6529280233915514832188326350422016 -999577656222825696173795139079110656 8152116418466994486236205948076032 4249786790982539227371768421285888 -239881401105228957360446103497998336 9065260066239536912134141661675520 3401687618638696522591599912288256 -667378039930908718428891809964883968 4994337754443844976254749889265664 1399739059915766664741077129363456 -932279480941339802323152824992530432 9351904613675126075698335136612352 3560385911065594926146291792609280 -663321047345316672491762197551120384 2667611801560457851703868763668480 7829133044094909305031031653400576 -577585496405909211254130732773146624 8327401587918061148566927993470976 6799725243932851108546010356383744 -70540301938539181078687886339997696 2659619941682903883297429074739200 5009282645886755624600791794319360 -334067089630001872684561395517227008 5377556232445184914297930595172352 5771591571220983452237698724528128 -668904748755717580826298065895817216 6309804599610454976259265157660672 4965287250847337606692178843664384 -204087852875374688422912431900065792 6103507899376784638882882621800448 3222825391266655507593130701488128 -555928972351315764501373423435382784 2317052765241078507216112432709632 7782130142799867319992430872231936 -977376966088758093049786024933195776 9657317741427248234583163542700032 3208507908022834424931346976604160 -106837398281964214157916438800629760 8516860521832246617955876957323264 6022142332475582972138816599490560 -502944395267447911032645559856922624 8450699328976911978846232353177600 6559738220658060310491937382596608 -759118542200100833061767165478174720 9740469345827052026314602389176320 3277910116419905566468695499210752 -616191165828486217784526175714934784 43744593284820060982470726647808 5048399551451789457519109604376576 -32268136985514807118807984985079808 1131009865906188759642487358750720 4594383378547060776581123184525312 -840059910434988050044147701389459456 9525161306844783927338077425500160 1720638150735351608385823137857536 -992213778375689705882008284959866880 3771224155837440598398754566963200 3266283650648988281941816890097664 -801929757293384085815631039594233856 8663927407161996377096500482670592 909466867544117117369565990354944 -46307072364278588662741366103605248 5394601823376612037488119983898624 3606484632141517094208105057615872 -439491892316977444285899725871251456 5790038566423784200763524427808768 6178665256843138035656747678433280 -700190300955248726652812800999555072 9927183743751978966891157539258368 9823057491250024015343872458620928 -999291042615515225094233517058949120 5424076026107810674014342038421504 6575987951643071133321527648321536 -419576181312483022372025404280012800 8503573987412642006956546361131008 9612790750709213638565599478022144 -968416424588776503480851693177929728 1381282591819445093358799188656128 4350574055648826910397213100212224 -971940485118276875102701679336751104 4968639504748867067810883062202368 731353163434574228861752283496448 -712758822276068518526301857101381632 698874544561870523351315238617088 1553755076180131832601566108450816 -236021758020765069965829649062690816 9497173865624238002079681986166784 1285740449826438249495157192785920 -368244405617247581269729590793732096 1758205200578066879877441910734848 2311528159668456031416138195795968 -347013602019951531289144061794975744 4608403398625901379647955418480640 7870721276466659689959224642633728 -221537459059153721496175277315719168 4541991437747500673471905655685120 2678646306790867221132394333470720 -251034168237780912906328777208889344 1930740051516906704806678756327424 7169490276969809862138734439301120 -26356419296121905912556340580974592 6129329268903852059849517470580736 1167018459165906738984476762701824 -27036716563437284118859390197432320 1589356113016552493047037997088768 4831253789352192875383948224495616 -750806558832512582906850758331727872 1322366725085779911707223075586048 272202857567026788006849121615872 -59846665945625110150430671555788800 409509265367183057439123075760128 2929516941533818275163333061509120 -809629452937164592487071922106925056 4606756955203220573195977510354944 8397805603481886304113501801545728 -835128947702674250796809405241229312 8357299346988822358409126032179200 3910567820515745087118996207042560 -948425385121581614206769982078976000 6269855664911741916431618341339136 212577221864564717769969369088000 -398925770187802510447270856541339648 7575360653680651880701496544722944 6399401711246953067526895851012096 -112269385704079695790700163279880192 7970582011950692570257915520221184 7483054593456194039940717526122496 -969169009491533087049792017150246912 4725682988064789018501390973009920 9041306554636365668988346347552768 -983346112743435291788983409894752256 9373838965281425961470988717654016 4810233645016797648264177268031488 -650641469557028891084842206165467136 1734286815862477063971515966423040 638494603073942846697020032286720 -215429227329614051830798995295305728 515724013666142596411407655239680 9739493209520620534038425826754560 -850638799218154869404569350025773056 5405526516282352926516788185792512 9038996197638279142895970244624384 -168263719494266515915951635771162624 9676807364219414806370173776297984 9755226144386397892361883089895424 -316025787950036018457227795806289920 9665721202602182435267055888367616 2279298047691786436876006429032448 -435431358045097353820112509011492864 9491501276823415453105024856489984 5573515908238424063532654206648320 -409147086233400605539881131461050368 6931785535910619248166076271296512 4892228842854980767936292983930880 -89986584462049568964051823948201984 3441309709022876549334653271539712 7680418953976434934507360749617152 -569372441130874726959422588518924288 6854186344746127420700665822838784 4578065074732153812769597139451904 -155159542256935484404924326141231104 9943629617531367093185171419037696 1455978842217816034113435442610176 -678129737008754457512691505811161088 9557829917515529055366182919471104 4709158422363366959293496196857856 -752466681435149614992988036671733760 1175827233951582753599010522529792 1137595625783056877213895574421504 -854137252123230700227032810057105408 71266372899000562313973725134848 7695154088160399682198338743042048 -643058356906446924546811283334234112 3957700737138985706297273503186944 832270546230849689730300357115904 -6671576596170071803489322644013056 7208617356882385779033946537852928 2648856281550227705371974348832768 -797669208855442638081586193691049984 6437623395165480075405204901593088 1956603415799961663916488427307008 -719422667414761815331120834280423424 6028498098357444715432615161626624 1141055679531551832556229634293760 -823807298724599551624496008719761408 8598011697105423200911437393297408 4222838191888044113549645037174784 -960826823120227946805694801496768512 5398628423163647714031129818300416 7437447998497315562497967527034880 -501754433556105657502420904236285952 6822176882852221286448505355763712 3328661451575161210754865649680384 -321154229614480386340641054631395328 9267273950724990943627488171917312 6591393974729253954103809809580032 -405563245991162362106792907504615424 2025153127992439289095620944461824 4745922827274367698740514910109696 -218019622355728159015036170457317376 9395310203446868290678061826834432 9099017239723732572455936509083648 -964714761344241529350975244237537280 1510974819165343097211224506499072 8909636285516120122648335698886656 -774463738886268769430879139300114432 2733697421683794279963660161908736 23899397487992372375982589345792 -887853355195028606993437827469934592 2151282381708873287405873636835328 7126652789701219092345145266274304 -82590462641211370106870620076638208 6273321783721049129246614173515776 2530975710033788509522958722531328 -414056920159226400563995284766457856 4951650747970168801879289059344384 8398880860392119608831862554755072 -226398426173189330449531349728493568 7376923782466217282469732324212736 2567718014630981647872814670151680 -600545676458719002875495769440256000 5635872631231797696523810598027264 4557319335279568486728573051207680 -444921624532419271434286846919573504 8291790877085171079432778870161408 2281181865694592545907463497449472 -652793731743922745753412687953395712 4840693630423195904423906989047808 8393030611017831620420847034957824 -94077398873181805161687584025346048 9001527278302671435291142760955904 8242938595430531716982496261308416 -133540540125251820330645929391554560 9682441315498162974818950694567936 461790558750161798023973443731456 -396207200837638431891690744423907328 5258859363143323385052494699692032 7504391637937446490609795953852416 -610889508721498590418870628645863424 9488040765613614854712837430837248 6970086665564180421557363035602944 -608560013707332487234174091412897792 5824098827538734348829857645854720 6423940788245591167756334337622016 -345734010614935352536140402590220288 7808087637209912434132083625951232 8843966279279931342175173844402176 -697269516517692493639855430975881216 8630158689998756006751159367761920 3842592013424051265782741408415744 -568055366603314239396637008533127168 3481074221133917614518893195296768 8207512759990008960111273320644608 -994089652520839356794983862702702592 8786180216458692260322038423486464 3819020230774874332565562189676544 -21945739006420401641487011623731200 4630106581903818441675843389358080 9816401101571589536708057091801088 -440127304887005374814549661670440960 5699797603024479313426946377908224 6676612929372220044434940373237760 -928404142650669834843507462472990720 249476784532944433392846549024768 7476429090793131178008399986032640 -899663876883250588670511096470175744 7264655048100868877997786240385024 2704760670880054579302909547118592 -402931394168283497526966448778379264 9299529515592769386184674404990976 5561831257453740152906613421768704 -898381241425771653830138170666123264 2631483189344210927809607931789312 9613372607419648503832708426760192 -10617035330913301076496836613636096 8480624903419389899761112112431104 422666591922795086657199898886144 -155724365119272137237147921739153408 1782904441525325696569323068325888 7070743236419337579956632368971776 -601796633661701708882469471641403392 6981452634060153903058943955959808 668371491419680727776268291932160 -373988310173904555822652204253184000 2604449668948863499026530457092096 9598997706632930035674510564261888 -699458584312035261179988777579315200 3119166490473569018516610161311744 995004529051084073818108251340800 -278734767161906473870133010882363392 2942216527412601609445190834061312 6383297570329419590958047354159104 -980229096282865468573835733397143552 6171223230716413385157268811546624 8737779444653851271053694847680512 -322611265628385662445124309435285504 5122060891034968315988909800554496 5267859095248445786668642584231936 -939812370065000724974003322106150912 6301655567597240323868109823803392 5511182771505996695059522532671488 -600676019193880760164558189535166464 49093085591349199449669217812480 1775454328702844478379299381968896 -400424247513495012946810822471974912 2553337050387649394527578282262528 8959389516084826579687879309524992 -406913205967162731571021601243660288 2091459415064803112605648295034880 67734462812567024876113960632320 -41226618035198387468992785820942336 3598408156472048309698679084679168 9837974346299590408143894495625216 -204490812549263038917381842200952832 6155072225838331831638654936154112 9463066103507362690877865272016896 -287782573808070368250567187587137536 324273676818986803906699925127168 7850703981597708334838447884730368 -230855078278209791192699754032136192 8464523189395107308261110196469760 5738206088877552996270315745050624 -390921918441827872713201623727341568 6004581927222508921493339030683648 4272515805230785990524220051816448 -551176775367859520979611550459363328 4561467366244401757302553449594880 699015243901912493952115419381760 -570074609435274595081799278608252928 3489930819296718064361321772613632 8015322895393893099750043775139840 -26968226716281376672917366937485312 1134628695957326795422269089775616 3415025536220500981357808667590656 -827644931376013952527989615517237248 2377015835625368514847388626583552 615367093932783685871782974193664 -425853472008808123935629754159333376 582621897462258024841180834955264 5928873449556935495210431812730880 -421458517445655311812017791894028288 4117303129954305306680773847285760 6668851493323273641490479904194560 -531187405602883665216347402219290624 1656634780163935577044248405475328 2100754462771099086641275389083648 -60475333290752942283591850899013632 7339987545602886415404006381715456 9158335715293653186018626158723072 -130549738599229353924924841859743744 9545104095856717798937285950963712 5581265783742061821491303755546624 -198644191466857496991820512199966720 7241851881050920640771936554582016 3511306941895085883067928745607168 -308704235801256377414458615193927680 4941371002934117063362267551105024 4118325462499790908250050739044352 -999046207392599760012806490930806784 4152811257095279408907306460512256 3412666922959274381635071986630656 -885590109391514477778849674104406016 2766813010637043706518423769972736 4819880412643395293139073618673664 -16251945105727311796903196774891520 6289249932644742728960243708985344 451039492305242438744472840830976 -370950032746380842249799778955165696 262045064134509837251025293017088 4739837131310345277813796959682560 -403274395162971664870178456279711744 2926711879573063985159578897612800 6820038469921478429533821485449216 -418838995188889670201258252001345536 5482426861981979316110596740481024 2702226228338793449170732866076672 -725269416853102045130213354612195328 7986013719711049129899671773249536 2967178945834000174188945725194240 -236188327614263661226524536289099776 7647532929184589249893956470177792 7707609509817144977445928143159296 -551195466166136399486511863721623552 5129365410737558317160847827271680 1735520769244657278937542627950592 -131660938122397370327344445904650240 4544521342616643446198627456778240 8273982962741781506675254967140352 -656751131912031193954567471555936256 1862917522034960902441219076915200 1655705665875245309235837121069056 -133763285019575234733613442358312960 8919628422567933299753956314972160 9023466422335246245788623281586176 -433767219742671324853099401526116352 5296168247511587564485753016680448 4028735505770175604762874239516672 -558215812874540217870303406122336256 7667668354857034002712068861460480 7435814088850374291085681091411968 -654036113603245434970980876816482304 9825785204440756936280318018584576 1525265311367920482539963498364928 -947537181074719279571136201833316352 8180925734392356513068149255438336 3619245655861991587411052959105024 -777621051115239650807501840822829056 5283780646475936794021813901328384 3427127013614852372739269064654848 -680098805849253486089689973376679936 8169906817715074190583352791138304 2830681198875791153353519639035904 -722406654090240031619029329508302848 7195250225521448329764286901518336 8363754994840527413233169041719296 -488782908401276630816527770978353152 9722645135215699583169426972737536 5053596514558893066391171566141440 -333508106601003503125044985499484160 5476827012157387516565313386708992 4507887534819812405649797294325760 -340309162840614483206843618732015616 6774090360069957823160395753324544 1005301626468638028456718644543488 -816051074757212997751516909845610496 4511919972385221547517976141365248 8026692680033299051008236405653504 -346303816524116723097505406600085504 9975228362370386535097510574161920 5060862309199686014816760438456320 -112249555492304200155320002774302720 6042252340593645939725967455944704 4104818264183575078600837294981120 -177766410173673309744203353611567104 8274176365424943491836612785995776 8153624898004235144425977726107648 -302918708206342741049231931888107520 1974563313751668430475267277848576 4211818731813935118614287179841536 -492517942612978748979273058744270848 8225277405494657687045314621472768 3166669569244680740314212275847168 -568178867192792158203283649570275328 1316414579659743982769974666067968 7164244451238306551382293017001984 -498331474745350371245760065335984128 5625169394268828136086289342529536 5866092896999379593760099098689536 -199640838536654110006236433413570560 7014855995315648159714707953942528 3186669221641247978590192067936256 -162578653058168345991193920773554176 9140384254040606566993099172610048 7741114696450926996217839981953024 -140249922476000390053360174691778560 6037500328029279045218823131103232 8076729713204250675453907586514944 -680087421389875892447963344774627328 8242392425870768021676954272923648 1970396895814671461318061247692800 -353568040768406972425444076281659392 5421738208397523215619770321731584 318260352962027149230022806470656 -331483118561676923240555612553084928 9235756857492632466588148984446976 6822283532941098318239733783724032 -942885160472938172485564661741125632 7844461471209950844229578162962432 7489718672281098672378526021189632 -698052082982522985153959554168389632 6763639470721745424557931394760704 3956847854146545716492972649873408 -280360053206623562316216126043848704 9407648149811962708080871203667968 2510898140895083513312097479950336 -797869943621652627172943226025803776 1201106326840600239642836434157568 9381362337505877536750013566156800 -141615927455784657194118565809094656 4802315075221329765496181066039296 6415543069756268799531187836026880 -624468763496527699654234244487577600 9674985427705752120455413696036864 7636092953734457435184748713476096 -782242999524310227317694021865832448 4332477638317266160539318572023808 9765373405759441848605086968709120 -362424421622075385687288450591490048 1382475634186877820786182226706432 9425308375674647460236203963449344 -970341401252592867145502497448132608 7162379522162936585544594563792896 9290558475392833759967101998596096 -771411734692196080899898805476917248 6220767528356647243511761649795072 6683810854241340188164360660582400 -544046666951624489909258708968275968 2558174266634728758489404101623808 3771952503724112014208758192275456 -284326016298357958264145516913754112 7275157673666600016119060452343808 4916855033212245612438777839484928 -1176600707625246197525267815071744 2958994258954426967404220168273920 9736317033548456734976855100096512 -819209146081762108107864376556388352 3758705692172025638887421059792896 6600073285292582779677658717356032 -479599962449459335413487466004348928 5066032087871622257287171015704576 4952952477479473713649336795004928 -439897442424947734926830320381591552 1181024588503145755420876773261312 4644752782197161153053681191485440 -815368855055561137096619808163627008 3910487050099163791426283693408256 2939006271509157863600546409086976 -881915425361639868184432165513068544 9552116753889010805108411539128320 8109452965969949078507011581149184 -574988512576100952176429462456369152 8435502803738906580702239133794304 4235515573047031798399725689896960 -617887104611455981288249332466712576 2155674406472912604422468190339072 5236861501305608683869341030023168 -713386594194596951385786186222010368 5526931063141837362405793882701824 8767534321484034955066458658308096 -60004796221549079660692905970892800 6289721284733726006214571090509824 5630953769482884532742920289124352 -854119935210001944435678320179281920 5129630084920277533767178811080704 5183545581093496703951787368906752 -887103005264084821924660446035443712 6566846505525924093168867910615040 1401756574304101253706270350770176 -731495797617516253047017074746982400 7740473511073465216279419453177856 1751887266358270784115219458162688 -233252480090148654187530740702380032 4414707111464216378216118149447680 814427221013821504105437191995392 -221404940402988972911957069816397824 6791041644346732751371390846763008 9807339937729600835381745342742528 -4748975824811360048686458738835456 377738774511355165827131059994624 5557610518192790708531196965421056 -442278199318738252044306537322119168 1595233005033380944731459437985792 117270379009548171254844010528768 -67784516912794476934312123487485952 112604115128919503428115142541312 6008733815772330042585464155668480 -98515871613788454494441605519376384 5121520332127125105863520109461504 941870980559802186436930195947520 -997840082286501133867440857449234432 9719798469943414986244481137770496 2193253349997577318701844882522112 -710433756399703044682125553061330944 747741719420440674950999242178560 9086669634780219156352438892494848 -682898372199144766443839386904690688 6190855700412426961223106521202688 5816388470747252946420384976076800 -83695091910606504275421473414316032 4190919571956472791724416795934720 65561335961580285174041785925632 -511935937201894143190039176276869120 3508753080843412289726728969912320 9865585864216187964657381779963904 -333752181958209317993901957301927936 8736011408787780472638490768572416 7914554254139448510921032628961280 -313504312929394155458599397986664448 6650024875288732991753738887626752 2263221247818399661022157406732288 -562486902640727300347825242891091968 5041387720802382471153836439371776 1922070074104382149816694041739264 -376727323915442012070873243318222848 3148084118962607627588490454106112 6053985497894997942648616723152896 -19340887868390442757990977177124864 9067477026848969177497746532204544 341880534669472201206891286626304 -949752685984840233048225338206715904 5594935299675533304523496085258240 1641630268358914614599113999646720 -938408917842770517411580525917765632 3563519215748303140351427001450496 7575674996347779820416887242620928 -99230446314900444901135402793959424 2885362590611687174833288446476288 6369312786044774129815061482438656 -511506637798207085057127431985430528 4130786329042237471474669584384000 6747647463167932334222282200186880 -694757359986115561081378121793404928 3948805320269838366434091350360064 6034440798517663120457390526300160 -666600787760579953744436382769610752 2422396565950635071045162607050752 2890052832197724130230028705202176 -391589434209589457805268623682437120 141938553361363351646610286182400 9226503849036294146905702074941440 -153465669909474279111687769063161856 9424871238603047618418630807519232 9919875615113728211623502153777152 -394360016559869337141422848655491072 3543984841222667183082526132404224 247516205650912338831563892457472 -261902040085892761209762103143956480 9758695784591640881209118124146688 1212866020774302726454140200812544 -180688413455075327126156166851198976 7176628650546075200940436766064640 5354048087404502233072442101727232 -626289722440135125261506563868196864 6961794240197874762914961121345536 881096533797639508466736887234560 -307925350578938590201077314502000640 4077688103884871524740361848094720 2402507401309256638741204336377856 -692418666253860841134916978908069888 2635951650174573469891307765760 2011208375136659686251050261544960 -704523283629551206927818812620275712 5697271833621556573519724855427072 9136834988520257825381833596993536 -803723009971776181744161329128669184 4674873909939022413523487245205504 1308899481420146055656918113845248 -799541315122777476169584226506637312 6891739856902562303156793280299008 1848654194348872213103394471018496 -369598800860935799138187029812084736 3952610939889885673257159838662656 9923418705062450491179872655769600 -945286394268320414484295297808728064 8562254748402240200040242298748928 1577306338107189953647225086148608 -95786071160509202277653601750876160 5636827637402436589386727994425344 145510629962767226828483788275712 -166156321304603519340900192157171712 2928663702433647828692765836836864 8774418430216588743647280381296640 -80623394750588005982943491909484544 5101512915410004463099484867395584 951626954149808827572853107851264 -187833883839983652549671429422972928 6903700268087702335635036812869632 2314175905250204536509464515182592 -601559217648642390391309568713949184 4672018814072903392967344265363456 7614590934407844774352691637780480 -20884921886450673721975261106274304 9001382027476659457812898103951360 8976060978220794502478205737238528 -917840498825208005678805483708743680 1933041853596495547287020182175744 8979304999389343695661942809034752 -455337824936054847732066766991392768 8904083927536214179809513382608896 3771675908231740632331442400002048 -202867428383502301270173299133906944 8269797781650224602818651208286208 7539359873892071350367603925188608 -793930509046465346468746011950972928 4072663322733002488020842615668736 6799636111991694357157989058609152 -305502256481565893670721840130031616 2437868473958490865176176943431680 4031427587065644530086463527714816 -184671058885319833207570632722612224 5810344196910487169998480725770240 4283814045146015015194239178899456 -923881910570070206351656284283994112 6395798314744165684233948733898752 1455464571292994337956827897004032 -776246778724064267088984141197213696 938634973965338307517574526533632 8373369543061181682691590571687936 -612140927052752875022330948472537088 5688479146291868341429930431610880 2890447500185766135316368641228800 -744932024308481720293108314259062784 4474748958257848831994024140210176 5895284357898483166390029257801728 -653178913825923179516875548026470400 9041896927876159013706310061391872 6071858089094152566483485642981376 -518891005737100807014478964307525632 5645844126289240078161031966228480 4768257606420587662863528137588736 -408753689645348350455321840588947456 7103329800986548047059025487986688 3359607640832919737823859964903424 -501982336323724529414991161981927424 9653935424840821611652479243517952 2430463665423545299578003895877632 -958612569419494934429589073635049472 5035742026345839623250099579125760 2517110803514740762763875969925120 -122437350744612254222052091379056640 3214674897881588161203234897133568 3072085322433484831009292429557760 -612936454898407188748939526179651584 4195870258614459093633583338749952 6690961175306750060280136696070144 -317185561532766975007220218441236480 2477383897387527619322728008384512 3680265734322869713509993299312640 -954835759888341382907075298601205760 4283979307029846137626843534065664 1999069165829616190901839833595904 -133629032860498449577077944377933824 70692409490396857279346779357184 6848244584083810882883737098387456 -345395697154856961072590062484455424 9243816458160582916091012209180672 5759552993040173031472307409780736 -629080669896117626867340531214581760 4976733837807523807349022490886144 9756862345840489442493097096249344 -12025532860417971912128532095959040 7807263261885973992395645602758656 3551482788183712921058099555467264 -488673517656275900170267115202281472 8613826480024197046321212104376320 9268378522767933434039203331571712 -81095720988050776457280604629630976 5095111162101062401338805470625792 4163082675943484483897369026363392 -580177275442293285004047523065626624 456185033861003104578398683398144 1000673994005258701800958628724736 -587792010986960808626449712016261120 4990395075099530019748219765915648 1993576971608648675764552169684992 -204710304369514581217409174547202048 6954734481765355725332743012220928 4621016554285600617919163955937280 -143934189986831729531087935179325440 7351931962976587205595222316679168 1300834709091114321550601934077952 -898770201510808744268712367412477952 9016461599296965957824509737172992 4269413588666400284697816880644096 -602815260339268789269616032825212928 5728598628098724621821785191481344 3358064958487947092001443400384512 -611114721679180156574642604727074816 6804888866951838694681134403420160 6921261066389435404437446524403712 -225025019153466292298093756227256320 9634637580646162443346821217517568 8406414322632792440354953821683712 -796410281903439164892906005314142208 38178706775868757117533551591424 9904950136076406320197061685805056 -581784588833810713380476501062844416 8612545420136963634890157443776512 2236307261290572378912706877456384 -136497463390255610273081928861089792 7425563270554984054341732453580800 3383742085756159335408302469152768 -890728611615360414130806771211567104 45807485686561631532768594755584 1396007422674587974708624023879680 -416276228217388117747249568412598272 6895218900932066570463839887818752 5656051537607370380288216673550336 -597283404002551526891514521064570880 9635913510313865627480313663848448 7207438119321032023569218861531136 -767187087080013770263311655832125440 6967085127672407742056862106779648 6383758005019297898005465107791872 -174451699774152939291023478599188480 248666494948727485855655471874048 1202036930128843906320582016237568 -108300296514204313767074727037239296 763709258075011568425487166341120 3788232446293977586934195951763456 -361535959483339799671328939763040256 3258821509058454997001483212292096 7323744630283291858650868591099904 -827210617939943969354188142277558272 7171620896348093652225682372034560 8772711307265847288908690227200000 -64430742634207929593318524185477120 4544878909628544709600880759930880 2195364451116076543167824400482304 -25063457822153560577616763850588160 4053323276574579742455473140400128 1505847343810744897808171993661440 -396900492926387838692224136562868224 3169248240041261812736574439292928 5909977144271141195955524583030784 -522424101358528750815005141832302592 6502414199746090182403960673927168 177658883125000826185395491307520 -774263574589147900587777584474882048 1938875003895226379534176280903680 236259180655166981997568450363392 -129918797337247105083138385561780224 3047541382335115374639831926702080 533998590474029233056294652346368 -605493636666766458603799292520955904 9396144225139574859771830954098688 8539093173143652309558356911063040 -38869550326830553488734322602016768 6172055883077618481125890566651904 2772136116069308265484780828622848 -11661889797713429404847063173169152 8232726012451319842021482447241216 56738503063883706410836275757056 -311857028871661834031465078353559552 9910714001329780962820877717602304 4247738033471101988576058698366976 -821725202377227603183757967719661568 5252839102348696525837599649038336 3048783643434677395926732341510144 -915378670556162579472434119684653056 5353924815620045873394481203511296 5575879120532001630681235023986688 -310577258965379128266888871598358528 8005291763108075892590712950095872 4004476448962881530871994738802688 -218210037090659637091701021101522944 2500493572110589636905075589775360 4992008938351922201116292054777856 -776968881365978229207058809154961408 4147354562735887136177666886991872 2565159196835028302269069215662080 -323163090299408666700297142162948096 3987950635202210846526960052469760 9449262756102259527488632413749248 -924792698279078898993195089519443968 2134738108854367218705885674078208 8928341021016387150316385553350656 -209358549423330703268139637093171200 1684313042669409065735959301062656 6705836631200147449827031343169536 -150819675571639990013230919064748032 9211652103728508587700678891143168 1095679310350745052579073141768192 -715816525832446591679154836304035840 1906229859817377031431789337378816 4121505565126200949304902249611264 -49351159714669713034957722912555008 6806745514333331248510750821449728 3867122441859640692204236189990912 -536113082105966931698926215357267968 6185630033190488011452121159303168 3496334328725007208002104934268928 -71062714296833706321225140620230656 5443578291738315298721180250275840 3058276384295137258777258907140096 -405446152944104464489463703905763328 2204751608762635489869389084229632 258362267994852805686665928507392 -657666450894703522133025865024405504 9382422466376702011295149787709440 1651431454196108137411491741564928 -228687416397344982756020842271866880 1088729462544057684520400490332160 6443998148275940574555697865293824 -87794445929976782245155568808361984 6142906576595898822243964879372288 5032798165407734536645044667940864 -509453677731641124714408259866329088 5533083562002555319464909265174528 7324219210624911105231617079115776 -501215550335981828228983821812367360 453570678966163940318279033159680 1027457576812838945274510727708672 -561552758213696814064429983778996224 6809777007451601764804658951356416 5390957506701835842614873722716160 -441291219765452560000327583291932672 8005360807213128173172987084668928 7112324438208871895849722517127168 -623310560400419968132959874316238848 7579050442013385308765417591799808 263578999615272673783240143667200 -468845428190624825412477441907097600 8012841081021670030529055093161984 8571987105051181821689748575485952 -188064904425720791693935770591035392 5398020163302763634248533678227456 147819628390792796698931665829888 -704019861111907563860569159341441024 7953811404635630812765384234500096 6658193721913434725650450259902464 -865156100639174440826597734153715712 7213751347050076962195895843028992 7809180792950888498179938547924992 -906408074786926197626902048793427968 6500360405659674282967350068117504 4078431329557423752057342100766720 -592410903838342761991922895116304384 4637166828477756977359912202928128 4191158630534275508024905138438144 -762224053355249284991188147955040256 2332699388107610170298831728541696 586238329696058900993827204497408 -864663926859759205115566805632417792 6622841816648784976135466690543616 1518939930546157911339129779519488 -620273680173332301697073618062671872 5316423771971256423239602067734528 8667880092035222635462467365371904 -706563345490530932875872758497542144 4127834020644032873354648268832768 3224686143434250636310548163067904 -135727086950897067074335640333058048 6138709638512697751188232720089088 3363554147082105663377587883212800 -566595720370078271223644212839841792 7040994571945723251602141434871808 4672145413859370418457056955596800 -879426036513490732880675469850050560 3410414295117845293264994878619648 7435369046267288661690179569844224 -193470932885570574408051611215593472 4135202001427457104181558870278144 5662115966745297520286431304482816 -810089510328680683359209591263985664 4139488208142117608140556480806912 1809969146735957035919871678873600 -617461929013048366807154812872818688 4918004429110329174104111279243264 6039619436012837081918496871284736 -367245610531459945938202834874925056 8885522524028805548372320852115456 6759574982569024842312239863037952 -558510471376530806015671533643497472 7225412339452138887306918141886464 9476926455488028145269228492029952 -935089296172185200635713007317417984 6462959317706599599436758954016768 1756657229956374606234353204723712 -913553645462498016859059288709005312 349054409711512839968933785108480 1722844108010155135953236911980544 -862569461840972424870576192147685376 8695179841629687200439002288095232 9861308266227218793684853877374976 -668926055453599879021605580020121600 1932152046155573396983470087995392 1312209505730207199420050931974144 -753231173110917145093133488307044352 2932480755221926073302711518887936 1916095251235180906873054499438592 -345396799452930078038636782266875904 6689395450097656093007999896911872 5767679582445704590221348947623936 -562418996147890361909530202235469824 4070523614196628460153550340620288 1978496139519442102811691187175424 -28810532072944564191918519316643840 7166282764229991270129233576329216 7446064831971678394839805890396160 -733130136694210263886531802515374080 2774855665786003328104560228040704 5781661466957740951529824739917824 -215453733426097044470936680454422528 3307139955430316194529235506823168 2042489157611456546747713702592512 -402064400203455293340507573757935616 4549725578850467667160302576730112 5909648867816659401829614232797184 -502992823031027052899604725099397120 1918912123994773878141500549758976 520073167140725535938032273719296 -848244453573776567446041358214627328 1488023601422135876427495648526336 7276442439186449242766296232230912 -899073019303116672442774495132909568 302245887382476916355771905605632 3543665323842046105618971650686976 -428452509083959155800436249588662272 5237111441945789307590646068936704 8723404899974864412483267963387904 -140734091541104913540777160568995840 2921204061462238613297579224465408 4438770504461313916776154585366528 -336133387255301301932465592501010432 7174497524555903020320286815813632 4774343595527908161113807273328640 -641498939754461126774176290632105984 7108012554529064010946749919133696 5772465661127499637924389298634752 -495752639919872854809224250998652928 3885936785529213167221822220926976 1064351840443059561008610169323520 -221209349854712853131630716538322944 8791549468979432648668977511268352 4500670432380585148904300603244544 -52727676226744000100570200386043904 7252960268910825083427251428524032 7970485224595594687913935006334976 -867049775531340043722369293952745472 3847962501638401434193166088536064 6248396558316139644756777496477696 -380475408918860920654099436110086144 3261802074871629665758605633126400 3875068355751669722905328060727296 -934343883892637748268945281497694208 3614734830968768882713031765655552 1743264690198294678162754492170240 -814970090047923873462116507495432192 3305901706920522741673016585879552 8594659785497772979332574177394688 -286949733366051430593818904609423360 7987768693666619615846828620120064 9952377150921687615207120606068736 -380462954366692735863100171123425280 6649782505575184697525268012597248 9475248494113425224521217814298624 -740242617039744472293792106195976192 1164087677004565755694545660542976 6414234455512289806670303871369216 -480775243686975502045904187280064512 7314750194163915442770891952357376 1961898162463682262898850068955136 -183513841846448520195186257358225408 2315517845768447470289732570710016 294096873839724130780549186846720 -803765879614214037511998793815425024 2008159360818253289414334200414208 5751472219190675985393840679813120 -764433336894367100967836664155078656 7882922689638049195166869124808704 8739979507290675254316041446096896 -665653999849956942862543520916307968 3535346415494594918156112706404352 9839584794010248675018993746051072 -364519844022955009762838079950815232 6357817603579981910284607841894400 102655028946634939581863630471168 -540076483743698746657076662312632320 1582524392960942634315724026281984 2626027517365827248585614907408384 -683678729302362092562863963676606464 8910155450220789191724783737241600 9222380584770611475946778207977472 -177401309335043019743285374732992512 7620736589975445184004008414543872 5150247449996583895232301255098368 -126970584206661207813139600305553408 4439871349348760711086754939011072 5262748413460470415105619354714112 -901985228397012962453302646656729088 5238782516981518377925504588054528 6545313350534609836907124123238400 -785081280725821417328210175493931008 2046852906490060935921121961705472 5150371320433274101709534234935296 -163636278289428165179884127628820480 9961464307999199119165208930549760 595903547259251831161119955746816 -382838309095352433426309947565539328 2896031739934351583493741506199552 6494447144956830629459775855788032 -438140709196860253998600541769302016 7595281996286420613503405833322496 2944885347874735539603065630883840 -233926149448468414627450612762017792 8370679325343461470109687141629952 6007866099487976186950054368509952 -215418466099988757024341489866506240 1879192854811037296680602766934016 204475351611805175988187954151424 -667964328977277013352744989371662336 3630573370571324155766623080284160 6531378208710868704560406247505920 -508987606450467893190549200638574592 2110479044338047363360259372482560 4209501915258161053729468062892032 -233966307200908504032778388647182336 7050916030045387608390382399782912 1147747695000426168169915387740160 -647786251599950292812323121522540544 5057382264312046693820725630861312 4499967316363396766020270207008768 -766767820475392981692870240455622656 7659265094785047234938896906190848 4926272853800137642916919828807680 -47675870974802910878660336902209536 3003594567382252389156087671029760 3885719989979025416076908667338752 -233937220760498090979103699174948864 3048879515867166009783639185817600 152762556833050823546946665316352 -225084213056813666423681323542511616 4893160350304394915580149999075328 7766780315376822745308750321549312 -258612935176244337278685521832312832 1447157796119582977348517146656768 9880390042505203840009129301114880 -717912112324682491263917286114721792 9894586089914613112099530338205696 9247316595540938042129444786667520 -691646196853985554147182119380582400 830693759379307668938174792466432 7321585200779980010091672395317248 -283108481587877742126463886487977984 568847005522660728027840757366784 579584595641529425988477784162304 -413469141901781412665744436888600576 5790816673386998000356639083855872 1876518842769144564430042623377408 -761223219754547578548604414598316032 4158762393954158249695709841326080 2399002942777784168730163933085696 -378745233492335846178587925626748928 4599310415979667281708055217045504 5535516022556547623785333105098752 -732468701521483096272231473751261184 1941787225609157656776695567351808 986417135034094551841590281764864 -628673809238596801178798697681518592 2850877942721874562887782930317312 6530057218748344765329711468380160 -868886893569432657916754954370940928 3416238603459605512017857531084800 789726389713434822736575121588224 -890427983704352720801615242013442048 243711087986138197194968766873600 783465321930682505643954005868544 -231888135922688597801307290191527936 1548929073527869963388307296485376 6285323531097925209174527606521856 -960634494696177912992132174765359104 828840839153312252361553939005440 2678028962428507696570618278313984 -891205852509350854716160957682286592 5691345179475771867294848493027328 6407399534831747565786924138364928 -893379145506880891589488508007350272 5716393633619380255535787908530176 5300076811587892629119354993115136 -697956168887284451282549934183677952 2152045890215652270998019026976768 9114848090179817115246782392041472 -275327964685628772508011402853613568 6134409045205990381042205380837376 2698047341038704290442696965750784 -530544565847912893539452600855822336 423620809099690190294394377076736 3522743897904556095737687193944064 -928794946654504520874103603304857600 9476999304975073243396023645110272 8437198203430534044009239406444544 -228382263807756583495088559540404224 7921358263229327112840893868015616 7519625173559456663920815275769856 -305957172720091466509266054339887104 4414254140242570499182209376714752 7431010955586987591742768254287872 -30013669401799321819282073691619328 4242540993585713630313361574985728 4154006276603685897997002955816960 -752547785015687049898657267153108992 8101809679194956895240705810628608 5537094929344192099887447151738880 -855557828026994213532260416383614976 3184596111846207606726480640344064 9330724204037535378078098742312960 -252005244638319038836018154953506816 8012357631095374565667024752607232 6040336869552814515975173242355712 -131425308212653396272628638999904256 1970774338798289533942498328576000 2798766940088679319518532734025728 -887379741258207552244927646192893952 9876330454237156354585332981694464 3893044106323886519195399262044160 -391558115717633739113636015670034432 4956826933996796973707766639099904 2198189023783579320450354270699520 -164153804826597875416811768507269120 7331533983057530014936409699254272 6621541368931259441730849687470080 -725611702767656714248497884316041216 8562014440316975333628338388336640 186357173207902157786830753234944 -996176737740007346869756120581275648 9559131164988240481166810821951488 5219723563994241210012639212601344 -404329987094396780514376423537901568 2915694313756820007976101526634496 7491059628807475387348465108385792 -372154317768757088035283750627573760 2375536787836476538489695048302592 6346533130081689482881926495731712 -594832402448764316919132033308950528 5846231028908180340034520305631232 5449214791182568353148315818262528 -459732791309369495858820459058429952 8253849732179523901005074138136576 7694230851643424447271977678274560 -566644219139305505009794821834932224 446645344552686219199793611145216 5780680886623740362661845415231488 -251066473557104692700625553680498688 7032338192131500476536770848096256 2167103191299317736168932918689792 -427690051783094069911557725627613184 6943311304538458649160967448952832 9301675611565156961229672835710976 -377228061838227366459751952291987456 9845790809783124475737043414024192 9833513464719596467481201587781632 -344056961991825062864599456088588288 9245789118013660128792392522268672 2714574481085121297829030078185472 -291554605013717373839155789631062016 829816206384676896440487671496704 413695758930632833425184716226560 -289790423130498639729018177490780160 5413436133610036711784198019481600 9654704748154884978166226577522688 -732830724257168739555201314612838400 55163447756399060089002277208064 9697066529899056458326984619982848 -171279162677661567225592577827799040 6695901900929793735387991083319296 6197132091232714429183636266811392 -1160723470013577282016265457631232 9111900997936661035636457876750336 2446291557799200273889037423476736 -742256797539189281039875488446676992 7230838538240620521549933012058112 5914688683363388584369458182619136 -798502062022431318578852201844703232 5604709061585468212176303712894976 8276967189693606774354947724017664 -700541151318109557181713404452143104 7925359506822217072937845244559360 9118024143275528873458782030528512 -18601359277366029932905469589848064 3118696886794907618148392047214592 397173672325457484893294646263808 -247562019037729193984076461155287040 1361172098612373327893003849695232 8470924545154765261976247115710464 -940484831459245337326057720039604224 5536647582588319652542372955291648 4147196916272653559531507478953984 -177059884651929216866243491066281984 1809194392350043618555520268369920 7545011128401738843339433000828928 -659142614155348785064336267891703808 8314182349193187517724514567847936 8916138226303844147718731956486144 -489115700695379974363057130282418176 7382219482441690965786365974806528 5540353122187987779838811282866176 -793681235025722786696741956725243904 1465653931828015321829701710774272 9240726945794764414440312452153344 -463268797877441979975298813591027712 9429823923924885545262411432329216 842386581347055363450816614629376 -959755329881254925008917225325723648 1847525007559145682001439504728064 6391831442777641376190861190103040 -866254724459194654975434525302063104 3602899855998156052050486065364992 3611735101399337741605506006384640 -241954691312207373570008677007491072 3622515036277099791337440076103680 6692270374389111682813867373625344 -35066625877401062475312306598182912 2736785354457921686845708180652032 5243035297672539956249411270475776 -91982287934710309137388369604509696 4013987986710430063037576793554944 5934974502291022954542220760317952 -48017415428892676945951303072219136 6867252287390788463596575091851264 221795359791679424034912675561472 -973003567265206081682405623871832064 3856890870203617689333756923478016 8660115320275239785251508303429632 -128471354159388963032509811552944128 1600047442483721393570375964557312 101237405185582400615676546908160 -228468403035542136227746372523130880 3812907201475730415917839262154752 795905182662001458818408127660032 -540336558869499889557986197689597952 4633184869913378066983628537069568 9572566672732736819822831847079936 -320505965614318223823303963375042560 728162482650523433460983650058240 9408001134657776939019545023086592 -210834385881266700518477390273314816 8536178045552285343888144370499584 8833118614373213040019659233951744 -920348733978031736336089868643860480 6663476872695117311017898836230144 7994833746480684293382149742002176 -311937371671681638100211964296822784 4878482414089915263268780563759104 5131079062315246855088521659547648 -606134174904807228591557521153458176 2139400868205325954988881997725696 3108576169763241224285282151432192 -758906040201520710924312246910713856 3808853480217960905237387836129280 4888782480349337285677789397123072 -840692581974679187244903678775132160 9228442947779630098239815539490816 8552812891801121034642652496134144 -114009300262635776387656302744043520 5384399319652180613637577289760768 8814226423030760622081575506411520 -301439630934109291376626948550688768 3515754142993666705822189189332992 7102848283707260839335321669730304 -671306842402537256154865767108575232 7845922758306617708899178142236672 4907312861755269082375546663337984 -237761599583797263565491071646433280 396663785516186376743128567644160 2536205156614217900138306446819328 -323299366258553228732761597185884160 4730670872395877464283383246880768 2905223264450830876335410056790016 -486152287537341724489511957918908416 8802273668707775245533566847680512 6338496959065705387122987594940416 -599250969366740686892096658002149376 8262055509357535825146098684526592 6343198452635700194350979379888128 -280453164316031443251107963498135552 8867506101933934530914157819068416 3682449522214606672044355947069440 -574033502954471068009236601092702208 2875154112418579027681580282806272 3947232696512219677405445256904704 -924783237938977784564756469466005504 2610141314047543195333018045644800 7837513067908850217594748267397120 -455099394495551800147383068135522304 7755490705554176960779837406969856 7558518104092130241496753884889088 -299328644138029909836361713145872384 8627255236515923599678513801592832 1264362675514709956091180050546688 -166052050242404857801081875945488384 8868808087801595779325893543985152 2022719933700109937552620647350272 -692150932071315619423962009446645760 570535589548872285546358744547328 2906949350054880794052930855501824 -124596385146609559227133449130213376 5592279594775107091860063279644672 1112826742078511789025280124780544 -99811356046330060363695869910843392 1807155207481502187331969620115456 7786197624369746262886284601065472 -262968323011426722335000305730584576 9762149282085488192606962754519040 8857205831519150051915580097691648 -253903908097344456165614901239218176 758969257412431508669695497601024 119700104108937158041597512777728 -722688510842232553265769483597774848 184452969569080617151142914162688 9061564662598271088192665407193088 -451265603487607391171798496316489728 6367031421804193049752798113038336 6493883432674054631491006069997568 -999097731809044652236612475251851264 4091580745944938515345651875708928 9712284019506632932838104939626496 -586408103589493220060990011577729024 6538569196642320887146871204610048 1324495513170634810379885680263168 -54167865505846663362146529345273856 8013149043961807898678477222576128 1088175586971558603413908038352896 -14713186886739072155361694124605440 4055898247843366976568818931859456 7328320495849035852547247973597184 -618778234785004528975040305956913152 3971478544113257349448982952148992 923491055373492674666904453906432 -587720035118863750989401053758226432 8409202092124063599283232699318272 3922963692483835346761183576195072 -620026703834444528382065853291560960 676148648055447110210120247672832 8425487946198174092427883045715968 -523051966972637747877952613597052928 7036802770186874384751136237158400 3864704615098814590126516823130112 -827772495355541552222117247659802624 38150499959692454936663937777664 2661122300903924677320264164311040 -537979377680302808627506511557427200 6254629526741116768112554316660736 3400406547990026917712968380579840 -701061620542010678350129204251590656 6375907114653992156931246274904064 9351007444119546251419298828386304 -497051651468532807257003247934636032 3766668677511910832651402372710400 2761680922436242746102349448609792 -633739779695425851767214909312466944 356733231684808553408079222276096 9579993144038862293303110913753088 -809915914568216740580307041611939840 8521607996724495155057566402215936 872174368431752870209832242642944 -275120119251703290462176711968555008 5820008432086013290389790248665088 600623925256057835809448096956416 -317979443441202634194754283644125184 7177830511899387441845913119621120 439111952985473710201975468982272 -849165669740073590384105946745929728 4052931448447127175696777381675008 349392159059516537815206941687808 -739856626631642209291332445861314560 2151504330449678042408907259772928 1982615461712826392407088365043712 -723187092164067883953094144395575296 8790301343922006523396076093833216 9820976661628398337589477881413632 -681288648399491880341946206796120064 4377069496232578776479628083068928 6503921564861971602675245107904512 -326613044740193380256354581333671936 6563417601255982959188962462138368 1583386484779523346492675388866560 -248687125208716421968763207811072000 9582354752165461931569790056398848 4620580230783035002320265551020032 -184682174822666104418628708604051456 6764821007799275240196333442695168 8732837156305383318443214891909120 -953609462747976248773270899940917248 1119893997711790115739219989102592 6322949633330634405897666033614848 -231003132044558821565206739147554816 1944445510959405694442126035648512 234566973879446803935030499344384 -560352282934444150909825551821701120 7641134206077748442384817073422336 7230066041929327207136970653302784 -525193503810004528554230515989741568 4106153174119601078654874054295552 9831325668738714301022510870691840 -602483913545733672036384232412545024 6263479769752218592188282689290240 7717408531224264775816807433895936 -675567550021692300200369568752861184 9931462219878613936286629005099008 2443627492978398086622235611627520 -447803687058077028431204614368395264 1480099206057945399677687569580032 1651338222125460145372320006930432 -578742808215428773796520717730185216 159315750353483028355950917451776 6435711537716916704761512529494016 -857662669977733424835031368927805440 1931281302721532157853864191590400 7486782723115288171067356798255104 -306859493511449998536721095261683712 8960374000101983463454443894210560 5993376015216755966744499446611968 -186251232805895541623562952842936320 4821101862929952854536355739336704 9032483178341841688191439810330624 -393735912693687491117886640702357504 9155145530360048246635207334035456 3010137805972568069368203186274304 -711869787823043967832936164295180288 4660426259414632390802320308305920 8055568679187304688228390219546624 -772411590980879779772320754880741376 9470397755442129060703097099124736 4045273213212796020126042996867072 -778007908274797839862399777850261504 4845357095884789253676629032435712 2510703737353788203844008371290112 -358730122226985665037722282853662720 3944030926458016953079956361969664 8300254085999294454336202049847296 -896660309037715748243027962007388160 9212117699318027662448330453024768 468532139901656649792014524612608 -308314933123596263094170165931147264 438271860127126853890480636166144 3797313521444410736729536713457664 -253040805921318193725570860674187264 460521375678615119397510694567936 1137554432386450820448593381425152 -140040360869339970163730364588097536 3294095107584717805956730955235328 6375939639568873031205688902156288 -726824372966941025626227503372697600 1677196847633448161244449800716288 8065833698389843038854380280348672 -147069201790533666653417374023155712 4632512993966879039633523055001600 1590322182433841514595269302288384 -444747157270615764024595679056756736 7655760864984226073243308389302272 6239914844210013882269841265524736 -980266257978039085909309928910094336 3817903514796453516008712751284224 6809165170939374734641112920621056 -657916258124433363960274153738600448 9412483981465475280356096320995328 5340852465620693477601257235415040 -997221180148799826746346726058098688 3886429323009395065316614850215936 1213626634165085962061059180199936 -562621403231650576386724496196763648 6302112414874336028322486995124224 3288996390152149749748541480239104 -389380140400573017226050430146969600 4338023983439352717151281686249472 5583232334040357092855581161553920 -316450372523973823026339128205639680 6373481756803889336799909830983680 6619864694005048385506424955863040 -703483871347991600599580421893652480 4551005588728985439146841523355648 6981696804387019107147147806507008 -251507677438991246935496407111434240 6930290781348760382942861561167872 3853800806731949039620758186229760 -232097431767325280506098584031068160 3211563995969212040887014824869888 9093860324911761927378692057595904 -888227844597980387590293251254386688 1076503092332006484349744033300480 9486156344301960394111320005279744 -511542988407271490821959601585389568 9073819281068053196686588586754048 547233761650109279992564305362944 -384846444269989070723719440323575808 5627213394690720971707778877882368 4410257919410808559060485817761792 -381615820013170889770377150564663296 7415283829423668892438858215456768 5918126865528727391045269439119360 -935014191141003602731346268772106240 1334757935057087977502365729161216 291669459017949181040499366035456 -391362061890950559403273668612063232 6840964847946634839828367952314368 8736205563679745803380390992281600 -128866272163800418461496780584386560 2714175459661646162667947910234112 9493172511520538304971327659835392 -812015405269288724741091526786940928 6476523083055750026873046013313024 503557730434746299530749333733376 -642141556382848776580093554976620544 6959643437734734589582536460992512 2829842994170482005624781738606592 -526123998589933009142557481340239872 3198284056193397880873055466553344 5259588842317618550204002625126400 -802838090899332073168265003638194176 4469164767659844546032931092561920 1383029509861796577919832686592 -249980443075345532947126482244730880 9237817924705768978114372748443648 7541761880316703208816165347393536 -536832389432201187853597729204731904 5288660096971095233115109424365568 7401696709596634785483956850524160 -56059982636359079217622941209460736 762213163413553433652291751116800 3920974553730309805663755031281664 -412500050966141281838013273283231744 2426619164132719299852228949442560 3606801420172361929119932132360192 -954703545024434350356571015197229056 5474786092692376866733959598309376 4113124256468067941539915619106816 -866712164426425112495323527115702272 1504292287351429380781269757984768 8780975318608202389679138339291136 -940029546408024985141691123184435200 465601934869672658835371410325504 3652067395242530316860223828000768 -696717150662595586558436917234368512 9979792836209456124890050386198528 5560154082020470753506683667873792 -933190872864983868939127307469062144 2451334500244992112869160471494656 4311974722987121909825591364812800 -305247647466265243457549916205744128 5077314822116834996536527070167040 8475389443981140258227776730955776 -318512738180102200833541107229917184 596569189326304360156592315826176 513466544247860159288797231579136 -33678260362053540752882353800478720 7703343836190240689580224332955648 7545310293878875061283062439477248 -436102922632738737382086891075010560 2677937884026493200300101999788032 1434986568509544692415056895279104 -831373023151368996654094178815311872 180145618904776692969227977490432 9782751904462017231218789098455040 -913374369515104986979914389573861376 2651864039507593792603238044794880 5017440160696800886518272587988992 -809314023866546591744309980204892160 3426607049154999718109819340587008 9072789419037491799307515154399232 -26933885642051286257462349725171712 8624043530002068541429476508041216 3301138324152356712260947949912064 -42337098787834065338410893771276288 7654376476905303166004107738611712 972654618813040832303774298013696 -589687046269072632294641132504088576 9104909425546191953820466850824192 5949151501111602013677042746261504 -133942028528112606704544207947694080 509144550633153284479743709675520 4184859849309295944170619180941312 -778462580526424111835792663346413568 7563732896960718218223173958107136 2583595825744574516880660422983680 -469193710504400182239908414164566016 5125111336045107066588905580003328 379671584119838165033841093246976 -551321398778614415402399349136687104 9760269897348812392646346211852288 8921149419014647252178145699168256 -353810257491969266402032557794263040 2430908401049480193371638104850432 6065655415137139801625117742596096 -343730609750360604204835090269732864 1677605306613715903554386667765760 7752081356484953277367208420311040 -102086027564658873388745681683873792 6872392543722242651791232304414720 4565370396447070509685885986930688 -966285442414497407215033977933922304 8920683993847960458252524506316800 1512385114544268786487810236350464 -163242686335128068683676735395332096 6358920488572835710291355293974528 8146226951232873424593569231929344 -613198434053300163782273009805426688 1088199432643275651791716939202560 6187399952552986481250124246810624 -153762488992166573348536859563655168 228252350795396430215978655154176 846117137899404558986756667473920 -959508499533414741221058157219938304 235904654606805075820674023424000 6310853537857552479611282199150592 -436174668009038064055716856543051776 8147079567105518578465596011184128 9187446830953165464018750839717888 -31644188000275603963004017319084032 6078382957578571077148025544507392 9248445605803005992046562360950784 -423263523091183774888816946798657536 1835046119309505759749636161011712 437613242537465030316026587250688 -70520157199411966306947128562286592 1535842422871992739615078157910016 1156154514857488204366882608775168 -525270942868334549123323614283694080 9800563576641017075705365525430272 6359933358986240717677022943379456 -862135294091013914704178827438850048 5203061786616181195201576104361984 3593565390933279341194833314185216 -841194421585665425560339931262353408 740972857136817703110914019950592 3167464802911158453779679366086656 -933583246585310026724202884854972416 1079206852392622599544243585286144 4714696247903683471540269868908544 -620232638804454695138070906030522368 7418212347405563040069029015322624 9175491950589247873033432855478272 -251763990511928937809809353446785024 2520024116678941042599810924806144 9764171309570648540256837885231104 -145707773014665488174311116808126464 5239917890104307852760307650789376 664986133869714639533834059644928 -401980208555010592953600673801306112 6145366193957352599948675545825280 6314392489287643161433817745457152 -50944479662806291846743359376850944 5765676672618631694080684318523392 3970070500704126903912860009627648 -354305656280185124810882232820432896 2536669897193147656136126392958976 569542522985514419223780290199552 -673859778071107433501064071844200448 8552362424251010790068225465909248 5421108175254646320409527543922688 -101527424998257598943443944472576000 4266148214736232907687423475974144 9646246810651216719660458583261184 -964935885911546162127624599041474560 9287000903603314431166229113733120 2687217249535112866578347870650368 -177812622445752399193767787118985216 7912917785565561548396792245125120 1194677648507260010073221001904128 -708082971103023706066059161625427968 6184300305676981507061747288113152 8134646353220983379867879925088256 -315096771951026012219003087112634368 2159875383325371441417833074917376 7338728721115567840718684986277888 -306259264231976145920795561053650944 2395165521219755976716523948474368 7176703368267480922506320687398912 -60156350113812947873377877592375296 6672823496957537090119386892599296 8963240579735125226684258025734144 -473019313851820014389141479501070336 4547479534891389954024258318368768 4434586408715201444532416382238720 -949814389351659131785698293873377280 7317128396358387362985434400423936 5176613535420590981264245939765248 -685137001185354485733257645305888768 9723973356863388177267449590185984 4232850907969795130320207411675136 -486433948762826718469157907620429824 9332766219609426652969894957547520 705752543739644820553231344074752 -598838265040806215124754766936145920 3674630949556408360201428479770624 2073322424511747871938836204355584 -791321397611874653885548832571260928 2279395613279190329731064155602944 4146033999554551814410690466152448 -587127473176157083409148463485550592 1902235370529672168542781938073600 9821034670114504364891169603190784 -379355571181731213249994867783761920 3010504520450376580431589287133184 4439354318394046179137849206505472 -622959147688232828583430767763259392 604393909928426483628782005518336 475018713157876993051565624393728 -947340723774987123057907129605160960 9632440446857862366224606486855680 3660618415916889555782048447201280 -904556586197151878229808678925500416 4909326877718758995324700813426688 2511350343041661535342446891761664 -432841920096140269094594940942417920 6344217190059382600019239619264512 647205542100008207321917124771840 -693718355317616337094867621486002176 5073563210602777172849330552307712 1654458257689892007992871356465152 -921824432115070500736583194873167872 1532733203353092822545670579683328 3344722593826161395268344902320128 -831878741360991391292563891196788736 9313450918627278661359914450944000 6645403590268025068258051517054976 -415962223337409303944919067402436608 2086764050968266034821734898597888 5611573529181785682516962084651008 -22923622892288389957476710415859712 9951641032609635053394373749243904 7547553373652697193806863471214592 -793680186242861234920335438340161536 6603909187170941267811769776078848 1266753386909629244970205228040192 -928796820163253524194856226858729472 7819105711086257173901534065328128 2864512075409410299651050962944000 -196017190804749379087767840317505536 2592153718943958406701844894056448 6949473670789572278050752083001344 -514894716195857770556008471243784192 6978866188181580926857940257734656 3754798495823019972213641312206848 -38299434030308795542893591730847744 6647868244204458659525167673245696 7358860157169333972200811407605760 -550950347546083945078491414513319936 2792970844667921649266151189905408 5392896324511526317351040047906816 -251876536495409626156918103078862848 4521634642067808647882303938232320 1201336345410896042107081389506560 -379340633691099486511427374966374400 6226731750097116920323660090179584 1881993695370048939197079790551040 -843265625732146273233045872573415424 7143807492951506959789025629569024 586132112493194697358897057890304 -488093328524994953424294198795829248 8527750081745580355842621069852672 6928538498353824629543242995597312 -715986105588185273483484378999816192 1866859668743887109327021588611072 9793411393602062295395485685383168 -117312055268493501048454864516939776 9513734275085312294944748722978816 7268411382971941505552416730251264 -463960726190782331534618472621277184 3283020208712885821200716802293760 799106731694577935707251557793792 -321424396429897827519861602482388992 8125694205000895749988776962686976 3097552598798202489408187772436480 -142878095671698037355388689037918208 6754837582274943692702114021113856 7208388779765262991351388523462656 -470009565425523489875458726895288320 384409486369191975427282032394240 5941830525479653054742999708205056 -763540123115392508810506727917092864 4489587618684042402254047657590784 113941098902881946355498630512640 -73843190515410693701793307496022016 4302406862199357424362473973088256 9789346228414623347637570980806656 -338033374919238750274525274983890944 3486559707147869053289429718794240 2036461375040778232025888153665536 -391448588031739503676841693187932160 5811533257368269075157257656729600 3395081856861246981227785622650880 -318374412505753927832878973817192448 4298903366136875327502094975369216 8932693488679127737088485646925824 -737877884449681157199933087160467456 256383051887127372580043882496000 7566159206518372623984209571086336 -497223706492584600544620453908447232 2853005584101053861079071481397248 3207106393240647027359041588297728 -783449296071396592754030455908466688 5455306558312230052486442943250432 7990275092105510708978238632230912 -552464816665285081052106201654886400 5200999340914306209964191723290624 3522234135419950265180991709511680 -487568582139551747262613552833232896 5177582707161650925223111827652608 3815924840637342239184692971569152 -907147244835154296605567215325937664 9608171841982963642330460123561984 2417122381450588376765478071173120 -696626671242706662151764998956777472 1612610134404455430680766498996224 226565610428255383402770774097920 -809492254256281273400628351476957184 4154319962310760098728571599585280 5323227728858141721568096508968960 -859158709455474580107413976852201472 3013781118736798222098878873731072 2193356415726089077421890439479296 -36972863892420919852460499428966400 3781440336990871845861138137874432 1323379626179299782951204594647040 -995364040047239847353389395963019264 1769514281114118431206744717787136 8242018267843406041241172341424128 -268032873882823480702387679817367552 2734710444049566710965272991236096 3905115448911668486532399630385152 -930759692777753596089444179688554496 6913179827369608230891072310476800 3374963973911816260455157939044352 -847871862679901780531343136537968640 619937012657554471583758193524736 2428822677648005701545522276335616 -42987458508520215625801228856852480 1970843788161652568716190196695040 344490611302961846366301216309248 -196139179798154064688048965031034880 5449379426786463194528797354360832 9776917853054528635841360850583552 -401398327176254478443116612204625920 714557144669959148228887623761920 8282753092296355774042092880265216 -112888522168654022894329564575563776 5439025510478245701193044905164800 5472844887826787659603649958510592 -254315614555880636527436920277434368 3860838145527870318969539595862016 6344246380867426219888747279810560 -544033059185920038461790520099209216 5124386632430821738278455334666240 9435362259129501436495969495547904 -290201665235559890366820998705053696 5768179351611051143183469415235584 8550934425039466644544196603543552 -33428584553201899485613124485120000 9925222767320661287103654627639296 1835762628769634330659840252182528 -632053440343586151922525268055425024 1067386762916915929497857085669376 1846253594040682127309972858470400 -351384528030261992133042616448057344 7860012582408337990201316806230016 578100813734182633263289352585216 -212856017490914323406274422921756672 3010455792912080367200890353876992 325203015181716505361957204787200 -308293681176252957010723644307931136 8715136542906100233710567509983232 4071045612657062108346716291858432 -321504061714822235650389432460115968 7903267255446739415252431246721024 6034972822425684723308097173454848 -122516350019667059684734301896704000 9371121745761024993417335228334080 8139616403133976700019615784239104 -43569441557943552004238028042141696 5469408870091519695065575636074496 2819918924940880383515476937932800 -86304881165228487955653412379426816 2489760525768665092309542200410112 5251585573847125089809954106245120 -253821666178375904990567553367539712 5103310954048955067662812338716672 2551472637081403666887590484639744 -927932118825460720302180186831454208 5251501470771918911765077676785664 5490830872658566777838233653870592 -830468127715842024426502524579610624 6332829925661398454822781287661568 9522086202593892172759341083918336 -37719803108342830677350326441345024 3699871681200383302237661498966016 4234101894410688268962677479440384 -718373074802824622003857301639790592 9152674608811641584125621433270272 7991047373500005373354055231864832 -568461195968410187612276155712798720 8098789106528205219911051199381504 8574391823959325411267020448595968 -485404491695185763744119774951505920 5957784730603302412891863308566528 5092344657831686177555961679446016 -553743539633905489173616235787583488 6190810471298975424008446659264512 9551026126394861821319306723459072 -214832450790730875396560495377907712 6685151526781657555779008717651968 1935611917271583326662971657027584 -839509762366202867170298822421118976 2596534120198256411159547189657600 1876490332048231451447845116182528 -355752295737148664383309936687316992 1011184717028183898097047213965312 5528024074639470054910193515364352 -689772510744937105306665678912094208 3353291961635330738946811128446976 1671054303702845665932711095697408 -48120974315641846547598626196029440 8398949319658790412662794583277568 9626475428414624127538554858373120 -353928502982431861869032806461472768 1757700107799270177544042549608448 5903485032484669603329351541063680 -484366638860219152141743733119909888 3958177044368049831182959089025024 6889628548576287616035029438693376 -951769586654305545447564444918874112 3991536769915635438979892635500544 3001799379365329722210990461812736 -729984060783433499462568035164880896 1862120543010574606386234306592768 4731298641359309397331310708523008 -163654665455706958568284398693646336 272227891385973340446887314980864 2060546292670540048439263100928000 -744316087242508308995237968512811008 4175373940980517435280314349912064 3861567756735855102017384157806592 -370314589046138145017894521544900608 2221967972480441253569261350158336 6946301073072947163467181052657664 -504465335264566655863512368798498816 7765058534057625371910444240863232 2922426584728599455391063369318400 -717370129531425603238869097710092288 478533786631932822781524801748992 1674323974208839229346820114087936 -226651506101980146939810220135677952 2405759048659842741693100895240192 6880421157625445635183762410045440 -966317609717860218253183505265590272 3355051344281741529317420895830016 4319106222590152243287795850805248 -533728857596480329758255125700280320 944693422529762135621440513245184 242983153066804145693461112160256 -696993937572181687930055206006423552 6665465857892074506255561664757760 7980085416904316666813264525524992 -459937949388429011746733800634187776 9630229314869565412678652777201664 3573533050908024729277127326695424 -851917143248858248501753588156989440 5677742165586673214538250216013824 1655714325199731617643238455771136 -661982695260213061273005962729357312 5225580876235063071173525041577984 9474740263674127366456953270173696 -443266369040726375139878840150523904 1237103784731997557449288891498496 9979092251491509845943618593882112 -827499730435891519071226066532040704 4794262455985015375733645471907840 545095753977676456693357789315072 -913495941075163304653661388322897920 6930507985209673047266912890781696 8339702304325737924225153384841216 -508574116038751905066064682860675072 4534434868230064074946627130884096 8752396380413278907467981414989824 -703850670259048124015485322495262720 7649090472449179348721837312835584 5301390774020612064229281608237056 -847025095804814934710511575398088704 9815795609449624362402882091220992 8440501923187690672735475191513088 -211415391923608072059520698801979392 8425814242459270848207521413332992 5069275210983826693406851373989888 -777297210792317982571523500872302592 756156567665438954308397082607616 5571757755180797041093099160338432 -869856793601306186790280797051944960 2907194039203282954174684645556224 398736638952870267849963930124288 -248462430584916803013703921630707712 7596466563566051683393347881271296 4031875460352078561998329857703936 -488830205031379745271800534960963584 5507228170852030726203512207704064 9229224407320144280061693441081344 -133141836607912724210040203936530432 4023114200382178207069764583424000 6122119533235892946625029145100288 -921691719617338253531766868460699648 6584584735670472734244064884424704 2488867422610048062296374720331776 -498659057640822671638590488687149056 3683227469516428419488283229159424 6711076720350862057953396275544064 -754750433585530686360935761748951040 3732687997218097185830222788820992 1009021176633944759554311786070016 -860428405612189710619136086249570304 411180951420784315243749728845824 1750549974022958827055570749489152 -79869274021562385618957421143654400 8379348034778057864860666492354560 1633538345327245401628308802633728 -173198234487702510518451443129647104 6385549815883628160461778404245504 4675871460367303546725204790083584 -550928862812131162454475002223788032 2065516925973701608598441560113152 7829467482307166344085411708534784 -621485994445151318165176903805173760 852149008389921657749306683162624 3287346073726431259251182154022912 -134441819033767496218480474280951808 9097484642738367542797926542606336 9847701853662651890779804124839936 -303076193782325981243818001456693248 6056409544721419181839355767422976 4608928416526995476959066071236608 -278793833014255202854957681163108352 6471821907204342436924874563780608 4455800769302793459492972211994624 -228869285699087224282903065099501568 702230933929619440828767432343552 8307755509862305563903633160929280 -619075972609683897875941597261070336 1330797605531359952162154170286080 5603336751425177380982188264128512 -379076895888290330981234642840977408 5890632885868212515258515060686848 824066892041356685729993548890112 -122889874675311202891148816940007424 1517994245316671264795214833778688 2681885183926037275735153035968512 -570031102763046458909310287337226240 5404325688071487201946792162754560 4652444124132343094735865632522240 -306705247819372900361926052881104896 6485471937006357166707935702679552 577954790780691161809556619657216 -450657384673864314600023298605580288 9502087244098310117261610634444800 9103554254298815907842060971933696 -468341915957152318978435634497060864 7716827415961192450996645591515136 5485092544783613243459110961152000 -209374383720565621903298998361391104 4516641216154056379013038514110464 2037740729407455501772504552177664 -83671126998197562035482058945462272 1183979739814353518510698081026048 1863599653763899538547385374343168 -610394502206041589340401061389664256 9561211197907096444125547604213760 3473312986187919220945905420075008 -80182552781377378659784372239990784 8567552081620606618544399412363264 7562955711024938546328059236057088 -733323220073826604632123965318365184 2202944811049823592182953440968704 4432721614725934390887646152884224 -196390966042375715871024371355090944 2412326427669373605159278577975296 9029452200992695410095242336010240 -841598579403342938557868580144152576 9205959755571608437412185625329664 4235103858186423923128260068638720 -704261965429708448399117492993130496 6641534291597933316828530017828864 2472269520728372625991100530688000 -889268623559633138456850191492317184 6802984981031606785254667170349056 6782170441622671761625938283986944 -366545663238575300724880949433597952 1863783999573290819025423229255680 9279615186702955093298612518518784 -997546161570159882902883966793023488 5035996552204519997270823385694208 9756731982113584403759644100526080 -479640593750205072457932765585735680 4116329971646979459221761273364480 3737678374459284496163367630667776 -991556685850137655368968615455883264 1990678884785021279916658291376128 3460854377720093337133427929907200 -200170200696510502845296305028202496 228985049065088078120900133650432 8978871007687270214569229333561344 -265210987177738073907598161822613504 1567632585544175200032467177177088 5999609995261302607854584427708416 -689632765790092582817743001251479552 3837709888834521452643419953299456 6674756260467852797867160999297024 -707887589111161157780530063141240832 8789476888767368885050906714832896 2167069180437296469091371429396480 -675437458783320680219013307445542912 7137675616166481992478700951568384 6522706205006787208079195196358656 -948763948088574477027131723811389440 9876671289042667400167946257956864 1661697617051909082452640420331520 -828876365224422414678175042513141760 9943667915811976104928554518577152 439053617467553473691519922733056 -76067472425586226231649936586309632 8950905402713150060541938021433344 1332120839754651624296308025589760 -601686725657886863935991182589427712 3172429825562398664067577072844800 4693686514355510588701729557053440 -638443343423832843885122028618907648 3247082242202322205663235644850176 5469189986889544121791303399768064 -348911962601527508357284353550581760 2359392096668537941745872209444864 724227007363670553453742551728128 -489653019719027391693210406807928832 135010420528850654227689719726080 3437620413488179141756004266409984 -193898828653998692542401855270944768 3702722592449701127758024382873600 6719072919849999668690409737945088 -630078819062220675546767202164146176 789539207095866533536356221583360 4658483112744799078869175508140032 -665353163992407652823626881259536384 5759337023424658928080475228471296 9060952996508879797615663566028800 -305250219350426043071624271934521344 6486243377204112288308465296736256 2654682169483674983668222615617536 -724488378094777917534108556625707008 8238117673847216607007510632595456 336754153817554785484371233079296 -367049347378231441458804617113501696 8849613792820254804223224262426624 9371997865011509109048834512650240 -991120724791908730355179512303452160 7716827914864052754232091594457088 6230525858322436167916445172236288 -284862935379095792651732941763772416 8802970589234658207721589020033024 8422987781638729353535918079737856 -95798852660063083013924001532608512 6959497855376283024776541493002240 8855757920999159152079513008996352 -288637268566868473577440291732848640 7798270442143229835505441594933248 4994507131875219478708750586478592 -564378095204301151613659982099120128 4134601438422069536116454962757632 1376747723203969760516959532744704 -702682857461911999380512938846584832 2476880869289427350872111047507968 9984624082644468946865856735870976 -275015229869895378219724611484909568 3622948390937798492087444647706624 8388672167282210505799999418269696 -932745109339226479263167506940952576 534766002663963646855896847351808 325847290673299056943595559845888 -481874051223341112710788273661804544 3278161863778227382799907474636800 9432473571473525426023117342375936 -7450179801354791440400734450876416 953304105007789231131711787499520 4944874882732033204063268264476672 -415719101832157234194225417332719616 6667614474402265685947572614594560 9119112561845638340052025308348416 -134934340925820907856141654522068992 3591049481211724185820525028704256 6840929500037429038649298103828480 -370900490569630704680883870832263168 5148428353343512377027442262409216 1522341297325615093008461362888704 -687564252063421126367371928197398528 5580541457758385101349796658020352 7579719404373422866233083018870784 -613851294652499030987918293721939968 6876157326053413061478572288376832 2590328148919348997269245973757952 -883675737231181262888538794134339584 2339901199793619503430434954412032 3763969267834315273810993844584448 -609998619309646176937139140766466048 9037979210229120689279144415985664 7091140474891032230168497880039424 -155664231468944857828106992302948352 9461061181202585799754656585351168 2977712386293432396163494726074368 -842335153802410043418157077688745984 2505192798448726475904536622923776 9896433583725371253214078480416768 -17010281505996898062959731978272768 2965776347310570996629852227895296 2644083006816376864172977311186944 -593524041280825036262828100315774976 9500838124287576103353656495046656 4248371733857456071302054986907648 -405117266238840933578267140210819072 8457869768558541473856445573234688 8036681952649232496908449087488000 -578440404936199868260740281653002240 875223809531347019819138206924800 3734135240016595847391881738584064 -125567804444706807111537593816186880 1107395784596286558746481440849920 235145610046272237935202540716032 -577427648452054195255782054008193024 881563601520447758891081942433792 8104589191567642664420923320303616 -933367695319188278994903952005267456 2845578205581343747644960939180032 1809421027662922013204866970681344 -567545139970220459994685878384459776 7020719977374344875468531949371392 3560576366429766995039927947755520 -558960567424240804859971548141846528 571568487886360733136620934397952 2136341231235311281669628816785408 -144938490593357361544353659821752320 7721841387172354113145571165339648 8095901034390729297042744994168832 -69861554762726388816016738292334592 38694020000377005621783520346112 3567443004560981319650754124840960 -181734084527999761423989188184768512 5416911676162285314621623182032896 4297935250509354152816414155603968 -56521019650288225345081394388271104 9165384829551684642694125764739072 1918415090284029291633162208673792 -104011165399564702229935009661190144 9089614329206039157199538615222272 1021312587518518834190395266564096 -744615510109708015057375720810479616 5833379550013216643159596571033600 849191715619732855501255889387520 -231774157163609831809788328454127616 8183443742527137989862402308440064 8424095253454282096703647925665792 -333102036779147463437114646005284864 808747431207948587661013790228480 2919826423031884569113277365223424 -647296891541459713140456648708456448 9871899635342060728656124761341952 7369705187975025061940566658383872 -745527179445278189966813230840938496 4213404658422358893843174893027328 9742068114772563823894731755094016 -591616361744988528893530839567040512 3415506464004793072250510559412224 9186940417993447297854979316908032 -165511829017331163519752043589795840 9473414889596054568602073934331904 8943721944266774250226021908348928 -206656200513273439868807513861259264 3963781514747870173196011052204032 9938825629257390786862050814459904 -318679777181895107981468647741718528 7278588502874521319939536408543232 9301668032929500003203596477792256 -365258734204185439488234402059649024 7608144412499170545069361559764992 7367551901759025330486011888664576 -830675512021496001662826892677349376 1792372156275865328866513525932032 1810200935239452434427338450534400 -42979600555388855426946635642437632 2607670644200877500003203403481088 5164206105959604218011334630965248 -537222301074380019578767017873768448 1621406025411489627449594424066048 1452935521434441172210313863364608 -420022712679036609244580411820998656 793646847471690194849063472463872 1326094913052695376170293078786048 -75164804901593421580944104430239744 4448263876258324853679968397295616 5826272952195441550887633750589440 -320979941158879264207849990519783424 5051728288161628739751915949129728 6353134856142294840833075799130112 -33023221996652349720078623451381760 4631522962262233473568759055646720 1729706756522692568610334029381632 -757186424348226221417943672800935936 2908892438416894213801525683159040 5542675452698722080636548205772800 -793233290668819615847408061825155072 3057577279419504495810386650464256 3736414944834789518380523531010048 -159710360544372338518777922525855744 2452744178501219098140388930617344 3396509001062201519771606717562880 -624764469241116701962413132765724672 1463718392869755503610511967125504 8478176229480543180733093578276864 -160287704359318170427604812710281216 9003075629607385034939013898698752 9280781910407248272364761872596992 -54385112854518821758213000225882112 2114533388823341590178498940502016 6377260736989795142533451953995776 -392268844025392099014070436448174080 5860967635225432822250311033815040 1846222076088759724783563937153024 -103882125094190392059695748536598528 6419084002983944865483063597989888 1420370130048776436992395794448384 -656008656494264031528579906995748864 2995258520121885840016766853447680 6225141456239407644972100169498624 -324233675386812334245323295275614208 8606051615195580222030347340087296 3057802840148378399289334640410624 -932628799922878537043175113184247808 7126094698831803231768618469425152 4093009646265240135769576735506432 -867803613473100824788902786214395904 2135753358614642871187940623515648 1560184391554848427780959278989312 -486793183082851369872254690433957888 3071121138116822385475047607238656 7927494445903407852557263014199296 -699522131292715712776715384035213312 6368525820258322611231251058655232 6248214602615061543890979150364672 -541242786324765698186387616654426112 5722752991570635359198525356244992 5573010655798233003207058257870848 -296171065537163076682155392799604736 2365645954289001737861209201311744 9795879143757439355788924794437632 -909656448410101285863707056799744000 2955355991922412475900458608623616 528397775128034414582104647008256 -426379126706080352157763852497321984 1550413825613232550430933744877568 1892062254059621616157321295036416 -638220759090726735406180157928505344 7815264230840292545537524356874240 9250469263478650968734140098150400 -851730308230448258847043612212985856 4405356410043395882018927483551744 8890374134576959865818932414775296 -740776430417461881292107323302477824 1229164153869995610858357656649728 437559992745103391683653096439808 -803641097455264832133958711793156096 306755656162160419435043803365376 983606035640229862157272779587584 -28865738646710081388881376794640384 8320983785542272670170510310506496 5903623664091601989865965810089984 -495845957900754351979393552610230272 8688951977244746783416194175074304 3228990282712182345984321551073280 -433773987512827529832165629749100544 1413587314059120507985489693769728 8449927733774377292254670598701056 -976040271751034972373246032417390592 8906678360361169027215731214778368 6558315561926229672840699762966528 -123947577202365871744232492984434688 9376424738781894788700181366833152 2309391714721447341504369172414464 -940756967789387753426162471493697536 2389639931655265552723963832958976 5313439859685606807925394969198592 -767756225904257779043312278595174400 2882343881522684788706071996792832 5557762251547580171896580160356352 -600946017938190040530454191326363648 2740720258720243010191339858952192 7968135391931106956356230970343424 -873776872283155409665942137646088192 9792746437726966141304566274064384 7833572161550146277930586561576960 -630205187657966310602040084281688064 7929518596377086543887103579652096 9395847884104978246628609001259008 -53095314899053088404519221318385664 4608121134173789043945185052983296 4925060415893382687605585371725824 -684677184250598412546434873625149440 241606799480641656278473984966656 2041869403222108919157851112341504 -905798400042456713011022027795988480 2502647338758984237928238869905408 938972944334968757203651413409792 -718744134315377755831534977084817408 9796775519662661030186637984792576 4076324208900361824885693032169472 -611719005298548793684694856860958720 8203711902116120273002837143715840 1683432158620354477245116876587008 -798939669932686952543044402551980032 7631638184761657000773493389787136 6308467116933636103192115205373952 -949992726017267782455419416405344256 7950998275897800066633703008239616 7149352630007686747051106192326656 -441133613038489573215949449846587392 1925265403071363921938082022031360 4224871749238398530557393370087424 -907575612932143817660985515054202880 4284242079245676284408804140908544 8772918359750307239889790488805376 -759946528866017758380745668006248448 8739537355166976056281748790575104 207973372108469555746154802577408 -65793519845183988790428132341448704 5902574403469305358536725523070976 4801523640832020010364308729888768 -611008663598857893272866796636995584 9063212790018625561370762525278208 8831494070161390960602242942500864 -595599877296568871546423163404419072 3121238169576874730774032656891904 9460674667531345805320474171801600 -136068999142613927160906522199851008 466271566555402656245325133512704 7622173033594675546746412093931520 -503181735829911910693913445001068544 7668916355589794562161123532996608 6600305063034639102433787100790784 -641305133159364814756512436093714432 3582695662497693161011396072177664 9698355423176099936338973877600256 -252502428454782611695001680182509568 5223050174663149430729640838692864 8949785885263280739200881227988992 -607806019649301682494547752034238464 6884717695296631016197516219645952 4634211007840857062558178750758912 -887440144040438128869709272684953600 3801967064260204698567392637222912 3570338793472634442259922623135744 -927611111238580817433640485615828992 59797429266650964350234607484928 4841994431196038601198198776135680 -263469181780255854367879080123039744 7142727259378315232397382199017472 540575477713809999777650565971968 -289338812261512093444308213889499136 9196898042227965322120624701702144 3346994537376213803144018225266688 -592801955503892443885061207297622016 4961100147870215556673853074702336 9757130891422045997361741265108992 -795483507616000855855719716227121152 1338343510955632605212986407124992 7314238198179978072758314262855680 -616767091438003393297914620052242432 6006915554211169172719699780173824 6690150113595051168809260253446144 -853936225824537322548914435542482944 3196607550085819336148345174360064 3707070645316778280278002201788416 -372223132878358943692847947278450688 2279403330053363782477036476432384 3727183531684573349118490968064000 -570412801744373092381604965160845312 55952825174037757468872550645760 8609393177376240709348369167810560 -165698016736052469528169700128718848 9739789691746147800889263784984576 7299225759340597206457840838901760 -336466283835402874754526651065827328 8163339432600718179675872692273152 8050894396075979335871832323522560 -929742720622364097838839049641525248 6965158085324826868186661674549248 4870463019774290060387606293643264 -448733394837415938251060367956377600 3637476825692621027627749466963968 2132867932943831276426791185547264 -81892434252524205475153479534116864 5185344167785888773966840660492288 4368957755537013222931941384257536 -60529570062391412868470252037472256 5931805780629851700604384252526592 4760643944787866677576402611470336 -362891969534031684014676685159923712 1129853695784244889122986763747328 4681714237116123835918954994335744 -433811819357882081587370315132960768 4519794743758972552677601413431296 5669714475763317076679559328301056 -832012575171913643430772235904745472 5637671518776511895934914965536768 5555939438500450880420440143036416 -659869545573036842945752432583376896 5145311196028812903890604974407680 991621533981725560400925121576960 -995695595862384025261959889268244480 1839301902574924140459599044018176 3221767032329031061436780523814912 -515942032435868995438212946914705408 7710715834220045975995971641802752 5153851795154514758005126684737536 -925714132051943910204065289575858176 296494463864491668761964816891904 8483908143895982232386232217763840 -522568459472455341893263641215500288 620446428191669296018397841063936 9507539778416192640754738475827200 -532329524589905853332418273942175744 4562319269901587150763552092979200 1190155880191427364394746159038464 -859519478221764531022873709359661056 6183766884809755996833042531352576 282950467028657428492595973062656 -483666070792653805946446688794181632 2222344692487159625340203451809792 1016908890094157186513816713691136 -300342269363507469992558153997221888 5746797957602227631618454953394176 4478373055062829785243681994833920 -372996460749667271868322458162429952 8323536767008065210732233954951168 511740690426874772125725868687360 -971546680307292225997854206291083264 238403865854499216365361288970240 2250573672985954818955001907380224 -878835143663130644410822381652672512 6479286154917128401200652113412096 9700173436087928521635540154449920 -577734784966277304431124203574394880 4135599111726803863089248202653696 8457088700462484811486926974484480 -576273728197763313241158337391755264 8154405075752972831186186412228608 4063220112218434565329103649505280 -358501190766689667068680682508124160 2811776539774446026936545819230208 8444035045996644889818854970097664 -140559759230318912929331575479336960 3744759665233493304823294900305920 8482886061604025225943955533725696 -162271784600781070065978885829296128 4859386329446381625122386230640640 3799876384114448436866098067931136 -836454950741352446366052721713217536 7778089787357333545472669341712384 9000940208489599039967919385608192 -592674807112512068664591797614280704 1932413599544056257512328996585472 3457053762390708616618749766664192 -214380439208703103575510506448879616 7928257521524173647705139933347840 6650265848043078531525716259897344 -176145424445626489117127106118025216 2477258579392839971198446050738176 4230720644699239491056516636606464 -762677786325091030181204667171602432 7987754693862420087797012194394112 5926465565360585433345682502057984 -677868689015882681526273350188400640 4736641484624773982569579430281216 2801859432057801505926455498899456 -54084263806803921539983686248693760 7507943313484784488170652671410176 7176592000926411640215575338156032 -202272859361032519588839936007077888 5907272684204716912269294410137600 2684238352301561454559355664859136 -744179259829391071960005565464182784 3394486325774223857263170474213376 815042631124974155128075402084352 -124045609868320413574832605894803456 4218890354696499377796463479226368 4078399275917698440922485525315584 -86783459598973175241150394716389376 1162085213877357697470139098726400 1040771800675294499854796141363200 -457817842694736058326194821537988608 8073742822919495415322536499478528 3963185173144225540848560436674560 -870249464984002730864897344189497344 2061532621794978770128795292663808 1575801158944256950555602059264000 -478452565208293530451563738149421056 7882904876742829915196280272846848 7419583030427785418825794962063360 -329236147018416848169742468575657984 8346469369048456271695780687904768 3264164578002160190331997598515200 -164393197094141233550428015492595712 8681586005886612676814483740426240 7719427355032081176400282125336576 -436940215977558461990169573085675520 7126901818471202588954463616106496 5910442431299311206930873661259776 -777959575281867095099398811876851712 9714232112159308362434337788919808 4196637913348897474026943547441152 -936610547471452424155872275590021120 7080499082632264640396176568352768 1075229479046742142430686004379648 -574757417614836068848351128196218880 9480721879237654063691221308538880 2561660771080051871282991950987264 -481990118337729414177243949988577280 2690334825921975175724156716056576 684625212023370027826656451756032 -761602504347987127245740196635869184 1999184897367556814327537347854336 2414105164413551242652306747949056 -838959136914036747638215842642001920 4774822702780207265809424556490752 1695487654692452426983255765417984 -847077538963247252086507161004277760 6310503042869423242466417056940032 8493723183689834448225664380174336 -137441763917467741616241546595663872 2987081399512331899105967943450624 2411656183517557535017310873452544 -143803674575354566221160965195431936 4933517493729848275512238081572864 2490710282051726155586352732700672 -709643308521677216441701516932284416 6166815838420871395136145631215616 9880562003438811444149086186373120 -145925222019732365631064193598750720 215302776730052268269153581793280 6495643831596648579695583818678272 -807794445334442048160310678253469696 4223306790051960278913728951353344 7399462454913519043261808460693504 -961327142389922799230454358740041728 8256241819010770242796113331486720 3365788650414551384325925157994496 -763266080766282373266154386538627072 7218037157663665153701369723486208 3465291932449908338373366483255296 -187696022519110272379540346415087616 3353160115013697737015702402891776 8061719449556380303503261788274688 -827505529318728718014478368183943168 2294932382379497266961264611950592 5870541330739158631663510457679872 -459167490293520263774588588997476352 4206112786058731459018922875944960 7156110287853731098226082638200832 -553023820859535856806005433759170560 4293733220595768976153327335112704 1178497540360857076560004181393408 -669474389353798283586448191754600448 202419531233835181335315509936128 8387713632006611208371600625762304 -668547029561905298235450640966877184 6757209501439387520000179302301696 5978342099291090197872018337038336 -253323787981835566453057197233405952 4033441426501476726541908740931584 1995554004815837688951411713245184 -545392285050581606226929801614065664 4887335275939981287041824179879936 8690450409811522488367253087584256 -342252870483076798179193972349468672 6245583134830809899057714548441088 1420905023049290546437041741103104 -7768186581084878808641693129113600 642295028061817768900435434799104 8073700946383345413258144489930752 -477512756079311672535899439087222784 2294831966170064860027224319852544 1061906140002695558636966426705920 -128054137735167466844527881212657664 7847173000247735589258861819723776 6768564805842195614875433176137728 -835133361355497312243308918577561600 7347260489045735563016866273165312 6048583401136589116964346439663616 -214960278847342164782286484600258560 165544960942847033707710715527168 4527615127791925120749343334203392 -102344457058177293802884555595579392 7431486390939195292382219902910464 9056743415587339520718598821642240 -144929278380166971966671607440605184 9293655395971472327135829317124096 1610276234191174331389700804182016 -21143466240802036863843989184315392 4458812590604709623154265452183552 6333259847914097576735291257913344 -179320438655630300586162310768230400 9101863921862282257264651603542016 7768649091275741485913255113129984 -608786662200619624046465947508146176 2397089026753350376336120032002048 318186342955455557754601401745408 -669539975924460270259845358082326528 1383788938055342882898842402947072 5449208546541683499618284687327232 -67951065036104674608088116459732992 7755580637250517297720860390457344 1451542191649172090300360625750016 -209416483837267362108509612817776640 6214910781035529053382609383456768 407131451564757668223357556883456 -889227456594828484610378546714509312 3752745567508634484890833772347392 8934426102910122432152080910123008 -791884979999917442506411987672498176 7321238551167187175660842540597248 2148281308987431023603656343683072 -765348809843173713231421496652464128 792506376413688008201089511849984 6867641961849608687508120001314816 -236593315067971563220570186983669760 2746660295547531422764436893466624 1093602075850924300107952127213568 -944439405951590881667351906734833664 1638241776200860664922406171705344 4414357628095658388207818078420992 -39865884249279161591042351506128896 695745791365132604254000657727488 5732110550098427502233701513691136 -505363441154812857665142091293917184 3672194737271630643362878380310528 3196338058901536631321680404283392 -884409561244821151803644830657019904 9125099220088970286520377404293120 4029499675893621679188125352460288 -435524073656542952510115363659186176 880160008243712133848816481730560 8218945939693401161542132538802176 -70117575083436778426912201196437504 8255739940670757716201957404704768 4568483709990635655274013130752000 -369741553218013103626075432128872448 7386196470447937465621797834588160 6650745600045779350940293854658560 -856088251389746227190357712454025216 6775672716131866965983773660807168 6932435162643355680408536940019712 -800095689437641372985346863023521792 5343797732675244083856341928509440 4643788576357620556016759592714240 -469764093638013491824338644215267328 8360825037009662181871448368349184 3858203463304836804240040773287936 -475183093603909383322950500129701888 5094852715692962950378736358260736 9375285342307896516761853815160832 -39746363319232489392985137085415424 5918181082446694123771874724806656 4294164909729254832158031761899520 -197764816250321240658610193174626304 3709733640210190192914817425080320 4126513128982670682095760820928512 -314170439776742541384910706814484480 4384405434137718501305277407559680 6510771378746447370896599676878848 -571197779066951127236614520968314880 5792993074588788433189632519176192 559986608082692608082193577672704 -742599979185279198473792387719102464 1224638893234145165987403068866560 6735407754768346535107093902393344 -275167946635722273586840482246295552 2450754181684690367535784879194112 7974257066740885099593801408708608 -949212342533719180637537269863940096 1570537164209804479623057717067776 6899286638860301273538629302484992 -85974675165195937271141103969501184 8331206945074926106615877621252096 5712163906553917921491435242127360 -206311446230424631605182448875339776 3992741913172791630698937157943296 6743647539755964414416455288750080 -760046153023588355859464994697510912 4805113230924532975827926831333376 6984495359243708500689761192640512 -488877291420129332972756253513089024 5425630924509932755292868222910464 5719754681931499801945950140760064 -743452671614198123425840239881486336 7312233980537624287243188700184576 3577532919064586627655748156391424 -208753345681970912946587023429337088 9783418421458337317029265845256192 4430557409662615587791153794121728 -693475965917738618650670516374863872 59199003063631633033231056502784 4315073766554278244213531814658048 -675952670918330885883864252552314880 502785162001781947864405671673856 4704280830789341863479969801306112 -969907311103365341609987263772491776 2022989788701149456961050893090816 4382034591005490096078501131059200 -291557806257517654458719633200381952 1945018338423773442200270364737536 129273412834815917547959785357312 -947293385889447250475292662589030400 8094603842553542166217399835033600 5872874435853869209020481983741952 -836782867644489138191035658301079552 8962088845931726400684070302384128 8367369921208510595266246271303680 -142527261868882552280771640938201088 6110265549513803208603112266792960 3027469614189841526611514197278720 -334347425430830849188111972931993600 7081086698894578731848809834348544 8610087343978057136106900176240640 -634844690677018056896327542512812032 4077949293456597858917831432732672 1947876905087032398676592464756736 -378632352746642306009723812186161152 4210247379086656154738981127323648 7230899816420917322478826553344000 -629132071636902706411465574853902336 6340364747920344326390195679133696 633629836970741045638936219615232 -687683335325260399410592655519776768 2587519740486119184247654828736512 3119923646881064111790527692668928 -880896178984459772141852912393388032 8721632691857629534723681195917312 6200002276749100769908814652637184 -683879548569322149303514697297821696 1757034920141109420841079664541696 6803878282240759683264220363751424 -230575682529296836492347126872801280 5139691095654311287093795496132608 2218876489078476731770935917412352 -940981030598476330415926452963770368 8092365137738030738810265508249600 7433353114523055579486468156948480 -117379736789547805228014990457307136 5157081647700227876414066767429632 1931848125037106012609519967797248 -55347808523096404154262483969769472 348239091261343949994311119011840 4840340000826978229384015947759616 -728405546905050432994312776836972544 7435021713514952026075447974428672 9205837859223478986531050667114496 -159671331775272850531819392874840064 6194625709660086118092986300497920 9695329187654432166394790957547520 -605927957002855672369964925690314752 4332207381110328893005686028369920 9179268753979445144477088333430784 -684395686956210358308693041829904384 4039506400640430884773752997937152 6709579506611432198103558302728192 -199511285112476961947432188295249920 3482522444871869488824665677758464 4674771647018106958192282657882112 -561501262472395201371049799037485056 8424436168090490033051983344041984 3454422208670935798269589061632000 -316367308173929787245025757556113408 5129729084251828227603612450160640 117304816652757821608943234842624 -789005892671210089265638451158450176 7289859856154494695611125156806656 8040562778132106176320756808417280 -302892531637509072304502510217854976 5661175158429395176391220653981696 1782585406181300122687821481771008 -658936675815458634002315339041341440 1049095598145981293655280744136704 1474123664712470410460291837984768 -9481859550370062480984793593937920 7589820782725373111192139658690560 4865454752859598720693237438218240 -321570311230410067885825372528312320 3498117699838265469780455537508352 8860847647574801600782926990016512 -537744062602846577995175521511538688 4191708252420716011426797968162816 2986583651981926341712404778319872 -167824004358261017900984423036223488 303453238115459604699560573665280 9459251397781641322874805545861120 -400085488410122536993818289759059968 3857055459709344662794550229598208 2006712402005814839899094735912960 -575586757930939984197480687572353024 4914046971729506373193678303789056 1624061681161334966127123564068864 -882913228100044456389075417155239936 6723778338626026616476654345650176 654092220520946330420466956632064 -323587149639445699304701246341906432 5634083059971623256273553467637760 5629839977852361955976840080261120 -988128768672346158553214298387120128 2811588979526269417797759923126272 7653726739661754690907234906406912 -630056160254414893869785863010910208 1363690432174769532804080949264384 5352225839277077765549540253892608 -601369542994171995072607152811016192 4333044799874305672307847611809792 8845198137301299682939351932600320 -572332183941754386165451409904893952 7102647663152783110590052167581696 6284512480147668275758751069241344 -761197659355187752959935695883862016 721067127659469048319071035064320 7084017606984783176787458625896448 -665964929547257938726344254363271168 2380627117720965897611288627904512 8523841336485002205253393425891328 -400237990634325090513470952457633792 6295657916780718427124528867966976 7215189130768906018027527924088832 -651809278984285769283561662084808704 6383473367325137470574224492986368 9263250746561010799397090529116160 -36517276124010721428363182522499072 2399393883610329901254636759678976 5015891285913935537835687083507712 -973133436596738824510833816183504896 530805904921301016761263179431936 1406408648039019045933648216850432 -402162974663356063270562912498876416 1807423063818690081805785783861248 952693335370542063605322275094528 -735383935347788916522110120712208384 9465308925318628717437662384881664 5419642824813430532231402627268608 -658259456490828534464849595905081344 9444510189379626308318836004225024 6689117712556223038959346023137280 -137795014868177878265103453228367872 8335125348913924408827298111815680 8053430092781314526812827482587136 -990686043618211321120704796595060736 2047528758241386214559283438157824 6465326550298970940010015762677760 -725920537049370124786523104566312960 2945317172094324307800698281525248 1268671888152562355318103669211136 -839911837958458137543575563638145024 3430123726796034629643184799481856 3764224489042190320358976527532032 -65174327715262808854421927444348928 588785129485399327656195093692416 6431575039669690221381244617228288 -52034800496273165219564025005735936 5290397390065137786370270966054912 9897079116433441304016314976698368 -705278247184773029381819370324361216 5884157870104889684416004431544320 9195314051318963098326655098159104 -572650240256944190312708991791136768 6221694013044935100562647757619200 5582478381310210558334082496856064 -33455390481675053847518052423303168 5944884499594752209908476883763200 9801280882803918531945365080375296 -717162029985378718223332254431576064 3283187794688183873145511589445632 9933681576701183087551895041998848 -680662592043826244520488189172908032 9347261820888019250463454665900032 9720506341601935400249960670691328 -804847478503101117645636257445838848 9512981119057935475218907853225984 9365246507061755632831095279452160 -849887246843150848485169535444320256 884645016429069175948017733206016 1794691082006304214461863495204864 -27422119477208914320393870745010176 9279675215375789744116090491895808 6511706587171867728902244114890752 -962487830109433769704399715444981760 5785441533937303560929003469537280 7241848632879608018647411511525376 -538216815773422661511354116460249088 1702201652255295530578628789141504 6606250434236815587207996810199040 -564695911672603097328115547939799040 5834038856847249072683917649117184 8626534221667993610386493843439616 -210723610516123696480071648259604480 1547406365455776162990257992630272 9033473262249480557847570607505408 -826280147390211172450704928284868608 6479139847977578230909974691708928 1842516729883015554786108412788736 -249568377159204958963282435750494208 9348846691382904256419157310963712 5951695841723373967728578700247040 -460292260466967286802275475579207680 2724465041407975538623187131564032 1851813487610491319242903345168384 -707777167988543456498742716385984512 4118650860704541754044127786303488 7281429086219728715623239287570432 -428421954597724419073258566312787968 9902481133361152086013358511226880 2730256256862736188391025096523776 -681875193852793729641022358082813952 7786517783448355184311455503613952 8797787612117902909772918115270656 -549186325919146455712867077643567104 9866581985556935360496630929293312 2390359129023616714806619224932352 -17554973734180205934111649188282368 4457987986550116126107485570334720 6587260164590248332513736287846400 -496341831777539364575837983151751168 1795530411894409946478170217644032 550724332492394466476080603594752 -321675067346140281015599091198984192 9497103657947245897823392993640448 9333422107849313026626156016697344 -300273434628916677795600219659829248 9281682520079851151093030369361920 9878165930041301504700909520683008 -981586294207448075285113777135026176 2201986711712651353956167010222080 5433617052463313390531148152569856 -931012360038664902329198736148791296 3886456383119896289433667185410048 4874495635471558993914819220865024 -778322093806178329968458875793309696 20429936862821569758550823010304 2117693604716595746259828285112320 -889298034187421735996942274141356032 7623404856279313365959983430107136 4568575083140147998190406524207104 -404186019568289275974418978383593472 3715082485572035665089359264088064 822286895028277534143835271069696 -539879166592529599535868293968560128 2215714219265964064636657953931264 6812962336994498823659793346985984 -174674506319033967655661711581511680 3115733957349293359946644934623232 5181886929322692819959198945116160 -48570297772672175637649755549466624 6902444412442251252259361554169856 4107198960892345056228095937216512 -871260416044780110286553810292703232 7073634995718968496060300628328448 6993727260535343591592892156608512 -888831137410229410334962936092557312 9405060799772218386222627617243136 414016145135695671744094827184128 -484033600124145057450721670489702400 463703421713469755153453674397696 143674059655941635305946470154240 -662016300393993151651338420532281344 6808357621466375771537967042002944 3743540442341438964906454899752960 -835534863253459963666845012410236928 6319922289492436292471188157890560 2780190945833863671147750800490496 -946682245554224892465251022400389120 9341186391467875225813759767347200 667759142190744627209048179081216 -23660374107682057346445928019525632 3094469014802896301903479075504128 6079384405585183069576649781542912 -310714816493995013764234915025518592 2614075341776397336656517483462656 3271571449613602420490637116702720 -11895401906872899743565997982875648 1890978853594025664768517559287808 3191448044062587502087388520251392 -159974243728357090344303133271785472 3186742054262027988833217961525248 5442847409499990790519995647393792 -661091088313155662393517475020931072 5147448271912371514934156637241344 2624258491403061625154265623298048 -136200107568436658567431805086990336 9991484864526847254788437924904960 4221479485430881074412574587486208 -865098234310618528617166767860482048 6043702180708230073021512569323520 8323579897708290426526949049368576 -354813683371952277804882263380328448 9890400736952012708289629766287360 238241575864947942790272164823040 -870194936840140714746028330428923904 43160608929254517999628460228608 4823667088080599570650048954892288 -177728143260159451515358888509571072 6605027674530776790653185522925568 7141605985809098829176221640687616 -938574254327189705979403538742116352 4647114605240559441357506093252608 5182546765739701281268408350932992 -820839354597833930307728425934127104 9552878624496281972281492887306240 7084634001087804064233058866298880 -323324423809008785695202788113383424 7560254192172678166777119855607808 4798783829803976054741664817741824 -722487278442197201946147818578116608 9282014789205425437312270580318208 8666895483693401338793560641634304 -961769528625684831554619142760824832 529391122625038406020976582066176 9352338442663393057423765043937280 -942590628032070083914718757645189120 3438745470916510787479761370218496 3803962502910021114622058394812416 -535860228673638889344247431308509184 3061200901896915438702362259095552 7396274979411014270092765409837056 -556521627074795089447713160977973248 584217892564024256293111848763392 4597821695798503648371367271727104 -791353299763085647183699766845374464 8263748439110152641614385002840064 7233504463586756686109948336144384 -370424400899300864801103851083005952 3747769323553550421938869953888256 3515212971619738431771102047895552 -914783283852500545934815453687840768 1872462042158693790203275986862080 2237939701856638057175267558817792 -549246921772813072831913386492035072 9674039392473362182299167857049600 5465701293438859009291086404255744 -421802232605668922968828692142227456 6849533491174705578022151724728320 8206583725532017024220464936910848 -153893822389771791439844467489636352 5080982378102066882151306439426048 2725560782255386203061571081469952 -79954707524304779733627927244308480 7527272956565011247370290606374912 2600815760008895201216418646327296 -27912818920653100894521909017837568 1438078484797523267348779254153216 8179266795583080563884430517600256 -367842412375606786531732732451487744 3746500608704747381249688389812224 2234527506821997482150682765033472 -393611773694415637634254007674339328 6621351845355960576286551854546944 1373596125193647108542250809819136 -796036327394414584717326458235650048 3797521643856260674110247411908608 2021963698320050701358959960260608 -955093276320147327149851115715035136 2756291907507013767987991851040768 3188352529600389842882672556244992 -494206989714804957221563813230280704 4329271691355288022632796382035968 8924588384068905709444693988737024 -588572446300781131054916711575715840 8693178905891175059894435680616448 5931790721659697803141781957640192 -83774681744935409108616548513218560 877275833684562890866962768855040 9989767849610418105959157852012544 -20657394221673433439992789203943424 6364195919527934142689625327534080 6594322065929961213652519161430016 -761005235695294017329314168880234496 7814191737012363929756172619350016 6678329448438201607864613727109120 -388410010951969737863553540977328128 6365773007231798581108178119819264 4829071699271983106545139369115648 -12483944009779312478034183537557504 2217672121001213544496753172021248 5335477564058890517609224421244928 -374342644102634786503726870311206912 152201587713902627529901335379968 2615842788147474171162224242982912 -284589738921125477952621380221534208 4203786449063055178383687633862656 4620238301474842524538773474115584 -496124855710906123079642138303004672 4559450940253922011943055854141440 9191908300423954752190129744379904 -596671833974208768655891352348786688 5473333609163538240863335484489728 4075103853116485695687289712148480 -635094714743184244402607269099864064 8389481439142030986701728970178560 7533413994629795255928925754228736 -401852191262038699666679169013514240 7306175019256490091698955948654592 7016352349387876501886935249190912 -671837338295617870543901152765804544 7951326745746204665137091554836480 2589730938491261811432905311780864 -163067705184390117685134557305634816 3545709374862732475509512054243328 8607503492363156913803943357710336 -210460195825625187683706432038895616 5398935098207182498525699557556224 5593963326463024279319670538895360 -282362260067420443002858922775150592 8963108837519480561318139806089216 53896588776318004930838022586368 -325890359819028092952001231873638400 6501590466120139584629139071565824 5091945148266788661989267289931776 -400900580400592547991456144701784064 1896628067998288746117584901898240 5706707801689522494975054505312256 -694832969390881456808373117511532544 6262008055002066601196692019609600 3853359936400026336648134746177536 -759938819968877846271939022579302400 1612664147167058553896298289823744 7294612339994019459100864747143168 -692489553768598769364486110582931456 1230342154133540393398036114440192 6841737289002522132814124229328896 -362555826940136639428651645063397376 118777280559299773812492174622720 2212456497697326541898265240010752 -29522815992220703586075006713462784 6694058972418856385931748558503936 4354509406611014656926171680210944 -872178018909269280246114238223876096 3098537764350702252114833561354240 6710930490189596060592601712033792 -74270534364670546195741760024477696 3831760075208976793521228018089984 1255738564257013159810444860325888 -472113293268027895782993819531739136 8801068657484308095250106658324480 9427229481942694850191684962091008 -411550367288915182014444366144208896 6627634988877230201598571978948608 4172122459396150837761916794830848 -126460223697617570045997206913155072 9150687253805166712082651997536256 9703432086393028547600064968654848 -406670726706779885516430520279367680 1893786216675155496037885872701440 2947094042208342532328834371420160 -316750791413372381893215669673000960 5570909391390009398566663391019008 7893314452870397942826027165155328 -575509977212328840684047464832958464 1794716673035929845429190076137472 9581322033408045431518550883827712 -669423480031759475405184148602617856 508587176635810319990746603585536 29341884835410203839175952695296 -651049543698640441181279208347795456 4365657485054119531544712549761024 5460740292690613494671685225283584 -403080253035530895330473211699658752 9698564598649074772235525753405440 9291975741441954127389667757129728 -87144787489386342304123082059546624 5416284461357119129775595501649920 2104951574329544868124501049606144 -94264073795570070306633724339421184 6468543933481592157078502126911488 8665323650533728081810398382129152 -513368440899244892551205500307374080 1595584840121108586735176830156800 4808479834633166985991035279114240 -836382758036819264410901510096945152 6915426169128597661430337574535168 9034210846589995418513451631247360 -754305131348304801344581640097103872 5355599995441877518617140766179328 2245701107225469308031038006493184 -26619905907076653273161954152677376 6161372159873810414033360453107712 5514232877274671229798525807099904 -509689811100161397520655960021925888 1345698271771363087823473725145088 5393862639525731158637740195577856 -184512708547756406698417338460405760 7756394268650598073751267652403200 2167253217685338397566730648944640 -312263989980105895124327213385646080 4842814400881552338650784679854080 3572326791625310683238784137428992 -41012676970873466835413777130717184 9203005023332561636833890888843264 5400266314720239519481646209302528 -188469678717808227473781563144011776 8054077842122451029187176924446720 2916207989081818557556643212558336 -814239769835014664958531889790976000 5262284515682477377132016978362368 8443567170809626407695632973168640 -880555338265537212817121353446457344 5024709578087101770940738063826944 9240422909508871058901914196377600 -229776867719348224926736715639422976 2172189784871072380990765385383936 200041108017736905597736540176384 -204282508891749956891700907835654144 1508836281909934674472693890285568 4248344557131315639276655010119680 -618833944047414522474006164365377536 7049669393987515458447567583444992 7388975982820622081880510737416192 -45621396857092276273606310701826048 2850887744095422831696898498232320 5400497631948581084231783839432704 -327956064734917941495843188121796608 2507110811550238214653139373522944 892016468009634927962176289243136 -419445392934027180593520791577952256 3958343121425117254999563338514432 8526391929446683641368202704846848 -250776199262661985623139934330159104 3595748818060674508826278983892992 3314423295846535892836148370735104 -617537453772388078215206875258945536 6517054861509183517912621519994880 4528797153010876740332605300277248 -391122075533993763379075904679444480 5753358236960282593422512979181568 676134912318627682644105550102528 -806267698479399409828213825296400384 5046853673138495763781277884350464 7740806088760387413349457540939776 -735820144532928584833399865246482432 4835570698845541498097987924000768 7255174497118068964864041911582720 -279107788214097814273740852728692736 9219465561585232270380803869900800 9158136299752670085248152227545088 -156284534947093488497819942020710400 7212609196651011001906572520587264 8499312642645881709209325632749568 -495711658051417325538110661699043328 4356094183461350978528974511013888 8644132562989120780437409572585472 -792159069124479617350230547254738944 6130577151416774794989413177753600 7447062400870424961708360927805440 -547518691630816736190120116967440384 606469994670159782473818137690112 3288164678737056010736775899119616 -687816730392907428716841493359230976 8510398155012084969861863660584960 6959715456786480950067639906992128 -646769306129828112993343854541275136 85899761535372916437851968634880 7426041559581636445660519772192768 -847822300108030805574842285142573056 7629693524516981150014755141844992 7405268795355277534749288583659520 -692707321136092765657180804017553408 5924197944565851579916813693091840 9839297341030790255059377317740544 -536685428769094224490645811227525120 1631381253729253429089985317830656 6596934703094594013403189755248640 -221423174517941462839583192064720896 5657860122119646817786455316758528 6899549968286809886358328974508032 -547432251675717408996995962704494592 4980809651670076002363018336796672 7132032442247742172761224307015680 -6250610844055327598030371176841216 2825396451636154691176659278626816 6702051968240646590837847761092608 -812843630707025896953305873250254848 264444264431082685341060189650944 308797757669575750146497638825984 -417480434419289134183801941028503552 5394470784219188979025512048361472 7557523264543159340719173951029248 -566002797284827144081385362217238528 8485413981623168743783993228394496 6858691344070629837259884353028096 -507598414668969542502504426819813376 965920100528078772421692957392896 885433953251667867600958439555072 -706443538098403855510180638903762944 9077494349672096943148899843964928 6501927854703798681326327770906624 -948148543621716409892921614637465600 4369592631860945397944854545170432 6585490225309073209917629263773696 -35831890143848529807495712166903808 9336099936034639381554832477257728 4200226166394225040697924834557952 -273759118018820510490448523574640640 6575064245455140681038648764792832 9256501577616621340498613504049152 -717221465420554016721706070686302208 1222831028646355711506820120969216 9688232253071690289363928500666368 -782043131959168545042121676080283648 4064121455629375932431829362016256 752076174689214318164106023010304 -518495007514676602991436314083065856 224275418044555951807752877113344 5520259244571667312514684480913408 -401399264933358643988698922326425600 1200988229769638891210484305887232 82911343861920585705136320413696 -315446212693416911035747352545591296 4563070405742236499895111317979136 9534698096380491568766984342470656 -877681342409683843185000615663108096 488865269489702781909295941287936 9803142084723791072299691817304064 -56366428910516634562486651169275904 1995472628037996765004680317108224 7905516323503090641125327723560960 -119909005208079279049862260799307776 3383047711946567157763610985365504 5018024746757013723719365853970432 -931577343157282541651518575083520000 8215722430089735221095783221690368 8245713840303304953143115338743808 -24627126571226160440496646799753216 2738678683743391569889687370727424 3420468715864701659225147842756608 -190372422592123920518011335762509824 7980087509212716399640026118356992 5198642230466484802697967012151296 -897035233043931419919958022249512960 6700279666478863605186113482784768 6620267860051982859916029861036032 -245639609347930581800864673712570368 3835224912226506358353050027950080 1845219662560745217829191314046976 -358586950141750173259172261857853440 4039596350807235502460108867108864 4548737240300737380093689459638272 -485173570020108390349186650882441216 7638953580421800626616074151919616 4183481934601908910546525395877888 -89951276955572098036192955017986048 8890864813136006114790946702884864 1403291691827267870398659774382080 -5612835411475806857518866824691712 2111377627719095606440310746382336 1363903902775359047742705843044352 -491016135992487173145453762533392384 403181482227457227916227129638912 9603241326044192572750106776829952 -401469620314176975489566287461351424 7636398076814006441467278969012224 7955931052963603957001284690640896 -483658905839595474143436129385316352 2772214881717212500571200692420608 9723590045265294089959608596561920 -890363832364360262051969662403477504 7003105901652545788225858985525248 3078540245704091856809405288808448 -322084832355222938775843151554805760 3527073327359790154061231480111104 6087963214003555432396800776994816 -404650119954734062772500105697165312 5196981262313240923569439564103680 5517415910353806099237329721884672 -296526237077010390917724803033989120 8908962335731686796138306116517888 3101600161350610049456761080905728 -839936685267560130858211561716056064 393526750625569604485851193016320 7972687445557664077642339970973696 -113186423619494417931575196456583168 5811358837257089323469172901937152 4601154951709996430803543307321344 -119232429043126346939363229561782272 946072313519991047752997224316928 3364343288060066523389721325862912 -880624635363727010532786696513126400 7660061284815688444731466075602944 8236440037900227837915571698008064 -47232586247497888195708520325185536 9420378341772471606007527360167936 6778621446274529997322033762926592 -25493835453977526109620731933360128 1161841299908848685908435161579520 1547342413181108276245714670977024 -364001602710587751800030886023397376 7251944167192371388879323388706816 4624489547068144565455914539155456 -656573973460286726515743556622090240 1765843427806991320099279729590272 2704306875327935398298987635146752 -782021796281206924583620069080170496 5572967477551626394518379275747328 5455570805713760075168303265349632 -174717377646411704896042672066658304 5710530936404875058522481626185728 7970464943365565106887700433076224 -888423229044914496835628166608322560 5048215919462058859695920421797888 8386240108934117678987034786529280 -245903437171504532750153411008135168 8039254894574051224616233865314304 8097901079781922461978001689018368 -338826539132209719362112163621634048 9874313154765620992118037822832640 6410273336992815830376548256448512 -650348245675835966758617963284135936 7486551287667112240772574024302592 8780949443592518564278025335078912 -984496323545266121874857711558983680 3277770950573385237449789992337408 6090083146317586771066487656415232 -245936745108110131847855958768222208 9095565404704684235046048132759552 1592358268031023876552896196640768 -816089889594560321590269186574123008 7011590871639011107213571667263488 6523766967866574898052705644707840 -862376071138959158698409968850173952 1117688947650569498743380780253184 4119377417135136142884173198131200 -175438908744168381823973479118012416 2319834242545084572641900898549760 5352133261114071371119103592890368 -498706234660209324691619536097509376 100317096068921023634084022190080 7569364249319180569154996479721472 -63405561043169178389001741881311232 808005663854833742433549358727168 1115581645809237223804679485390848 -433396392406855618993943177573957632 1025630164733359551063655029145600 6607616967978965563097332502757376 -775331347335630677046438189544243200 5097682728589555373171268915298304 8444324500692366499627420157476864 -529081827406758254346360970438246400 666763277208351694514042032881664 3513107599373000110867819156996096 -392841519015909018724556738163376128 9963503150573861599079294727880704 3016753826584870225554293726904320 -838842947268664897735681047355457536 9418266925987795288024181425307648 4193489053845590082802608538386432 -506245476736011460737462571332796416 9850416887230102712271539296796672 2782176575401106036938554189283328 -107302380599906581296896785334140928 3955222485604250335105543219183616 6723772617463292935520585278029824 -406062126660307997449690181271552000 6418979260966782915648636418260992 4625683088338436731427615125012480 -239008719588257204555256312899829760 2505477740047621750567667597574144 9184376270479217502517147945926656 -276972586533499419275718920872394752 6281482373227163167552254964137984 6752981900414856247471631354560512 -386726560771650012887920373210808320 5573070223957350590175536264249344 9268524597924418713487461127815168 -289763107918297885769118639972155392 9054994228811347236445303208935424 9470241938824112868109580423397376 -887173414320373980595500420274585600 4270712713150592790357727044960256 6722427993693440185956397286948864 -80834611344621478742912097539063808 6644042383191738536036586305355776 6837609550029154060253202971885568 -978084875925708158332705648486121472 686874843395226740676039396032512 3245047722382976550813697451229184 -372529466746754988142579103974817792 5191215488988150046067317677228032 7778406042752790783685273411649536 -289686787718086272280123595684839424 8159766553191720739293731661807616 8063808324432205438804411258241024 -443508536694024625985432873649307648 8816218550544831460208258731474944 9557347471499780785568227759489024 -630283144280046488204119109147820032 7639511034249842859771396651745280 700423879858451638846208027394048 -14619504072914397324791602191794176 9312001895134144354422644889616384 3933149094080294302538642199937024 -960615745312287232969600208335798272 5838707618294587831212058634878976 8328858538445559394584802696888320 -960091130652658514520025891719872512 6055858571973943215439905361494016 7782619542619549791738615228792832 -336476777923000722763578953695232000 1772966642663730082565682137923584 4934155008811421879481322725965824 -430526811728505450685187124770111488 2056636408413312655284160507674624 2240858311006584610977749911207936 -962156938314283233364874905086066688 2759890714134692949048631110926336 7199482414816890917506588293988352 -744611788847085979551531986380128256 4125705977058954674116652812992512 3425139159705518350382358232825856 -776697250644747648532267548234743808 5794741443139132851164593560485888 2339348940597751960737774754070528 -521353425640488054811393807280504832 5385626342201518879593079492313088 2201361544721918532721785532579840 -70083180028799670534763691907219456 3161320522779885529385940832747520 2420443467403098438739728109928448 -184567372557444131600813109721169920 5180485538865170411749987999285248 2764273827872502684635043857432576 -767874964583598288466947701401976832 5194312025831356875238432493797376 2500488937741509877310881611644928 -619482589745501280814755014370131968 4198643630752244887084246402859008 5503450598386766174217049672253440 -786336513405406068601488196126113792 3030541147894218648784740733157376 5795048561830119611624394007248896 -546130624387711667776023646804377600 8730250470934717364102035553648640 5537785310482694667742570291920896 -385422962893851869673938418692784128 8697183179686162815478413236633600 3841190501694277738967779910877184 -377073514808964186998025097524019200 5006021582502255354233093464522752 2365237377088895018320608763052032 -722795925942621274394878160779870208 4883409186006926701785754451836928 5975679865763719784323263370362880 -783933317765449466613594658103623680 5364221879305071381647809988001792 431397681749397369488143378546688 -797858778918978540031059732522336256 2131951966501164800445332450181120 3349700704411405159415576952569856 -121164525424812380528827090889342976 7270266679492395714080714054959104 120517267666389525249452148785152 -631532062197983849441143134449827840 2368458837429917528945550040236032 9589692515259207129750679203086336 -26530400429326148735633528471945216 2195473182751916826107861398454272 4314406885741202496742794199040000 -886026827395185670823468249842188288 8475854956687549724373866866802688 8874356649556747058127712693518336 -396648997123998413417391103036882944 9632855012340500484957311583911936 7807268637702416868897538990669824 -150606040144771984206473959103791104 7704139191128970098112194278326272 5402836703822942603435174034145280 -337384397058687297356822026534256640 7157778128531997610641336876138496 9160044826146808919322748916858880 -313211292389535601081304335444344832 8537801412378316382505120435273728 9293253912318015785355293816258560 -236773486137028014204227901028564992 1230894540706486363865570420457472 2227544236044084482753510772834304 -275891864826226483818815145748987904 8263967118156766911220592957980672 8694194373620664386092484886790144 -39600812581531689554084605947019264 9171260861901311000240184224645120 5174901500219535278787097041829888 -28756474572704226318898691961782272 4994948878740608787242753963589632 7646764505375084165418541507411968 -799775355530781355674980756144259072 4819266006442787531337501375463424 5248862387567068568223863520886784 -954614049206710283498983274856841216 9131822624528487962872153588629504 9229825971183664595972776334983168 -841593950599023449798369272152457216 1196039506438774989722017775747072 8546977475718745182680488999911424 -61001904579876874516693216143605760 9602205894803263188648652546506752 529123407478780300563647968575488 -696559449469920171615892582978027520 6877987502819398355100633690800128 1612933590804961018750503779041280 -769189815339635949428104366573748224 1061150902428355775992693138653184 5394735315606778349062663400587264 -155266742205827815114521356087066624 5622626726893294808234800334241792 4819983243536428290259355659403264 -633072285092916672869530731443912704 5411381269596230249487224673402880 1018564464116479864512782008320000 -61937241325745328525463421336944640 9147326718209759838955865743818752 2263117178179342148389917427761152 -824197718270502370180499607409131520 1323404147281535139288544587022336 6733517612293958393549507409215488 -429117590983521094502016880050438144 8632770307834791201449765786091520 1688992024562460370234068170702848 -366894807858859282907073329514938368 6371268550977654625329518200487936 9874244207357531843106759696711680 -93443549584822139931272500526186496 8761449852056384737156460751880192 8389423550323976308683471870492672 -607489894658343335737805452569739264 9214635045836143489561358541783040 8489722571033497291564257160200192 -734605505123855673308947662654930944 5041194064813276867186629915181056 9302114982136087189581623589863424 -493574059618044968779476224905838592 4591265860468018359619864311627776 6584181468269963217566061060685824 -944950860173748856377026690953510912 9380825128122924296860557050380288 2838275478783041992574247569981440 -308454396366243825302995505986404352 4150235668703792894327851094900736 3960313424902413193238499572056064 -122436770455236705667132609295024128 2938456752424505350980575852232704 3704940236198679500148540207792128 -570873209398662711386713746225233920 8752850914360348487543763452821504 1070548790184924197692812807897088 -604681808790398679139165837734182912 1363165618429036450930658425962496 8318854843900849137407705837731840 -355797192549534059972163350013411328 761277448376247999762771040272384 7943346035050821710701485726105600 -878574416327497917304937777645748224 9268835913441858116787151109619712 2478784712163906416057738548215808 -960109095940643565497238873113100288 4634261582090635747725289675816960 3877067061043265347672860960751616 -321308765603713187925559616154370048 2537974022915590030268587598413824 3983638395414671352036216476270592 -771058831083992477583892976911777792 3460001009638645414141611049222144 7158522418027114388686248997814272 -259113973056211934214720840691351552 6563598009649690651304638055186432 1953268911829220256347172481531904 -272074692821294707989245506827059200 8750321982721636604870922204086272 389189355746831682344581473501184 -56984539442421420855474746321534976 9055687578791718448531577092702208 2659897703799627230223846705463296 -598854763358034812222447958569779200 3551195920042636554310577536630784 2342609073797578508748074539548672 -179476979734750181386385413793382400 1651232964339173669109806019903488 2981579410022641262600867127754752 -688661227796087093963120388429840384 2901233931406156311601114314178560 7994600984746760887124563935100928 -395513375700161152590198116179771392 8610040480017510212078639404548096 8381792970799967506193222618578944 -553314384376066545073583957884272640 5895364844329006267648955348156416 2834998000910739298127481852133376 -672048269807574435611244692097728512 3167214897607707198687476472348672 6950404837393320711129043753238528 -731559458993834075180583765577564160 5888169552112699811361018762756096 9870923190474279019686141108420608 -578596603117760645552992691446349824 3991094237108913762019312941400064 8695593288034354170555817130983424 -831894967016177297314215512279875584 8378577374416809676015034647445504 9224917174875680666175931777286144 -493344700614763719877009145415598080 3311360551896136368796224635011072 7146748731998238011164687530459136 -745841340136590984709468285671833600 8358071901607934412085133756596224 1677986740820210925685244889661440 -299212007774296363904818553141854208 507933279350751158908639546179584 721097606364117337110499920183296 -623601932547988233224398312646377472 5307439992236019612531205674631168 3259372291464421453320047009202176 -22934080329656134750916955135279104 9646415612401446745949130419339264 2097209762550571713149067734286336 -995986333435233939843434092074893312 5392261182671998499267416439128064 229760887192243671788806861750272 -409360863511305016695854507352915968 9629552285732449093240051074072576 9467973822178931429281104895410176 -251187991601951740332637530385022976 8727147890553576573076123817082880 3455212309065473448905416170799104 -727083795882910289174256790766878720 568067555407435085164094188158976 4737523280544025986402784695549952 -802097985854007412336591637149908992 8767189538501401245370144731955200 7381541638131339497885268984201216 -256648347769013037152869136319119360 3870212727957137232173641307783168 3526075446847281229123782371704832 -981580195977300719260241452190400512 8913339026696751886535653651906560 987823204354664097666427126808576 -595374758499663690816049094837927936 1510722115442856919861781996765184 5982766748719385950339514658455552 -749129876262089505782046231728488448 7962460895058568172503267985588224 3719349299799786947230620891217920 -973690515291709245418181689817956352 5274488546088630159793156167565312 5533711746985737370685969000300544 -312268641939553456029104100624826368 8621628719629490170633862558777344 8585519139135808371811411518554112 -632284095181571936785380745525854208 5674691855662636223209678053572608 4689860396984435857953717110177792 -352026637669734078454335630013890560 5265130585354940845093530015629312 2935541503560886690243860456538112 -796120019419158478286002852861050880 9486036374496013764696833001521152 5714803218489421590960734346412032 -246137669270940540223063125661843456 7902468194875391885661270968369152 1136652794228012183160742857408512 -135815369284530796905653759924764672 1976158327913980080088798038327296 6651411874497594893696260284350464 -546201548247743674935180616802500608 2557431421645197568946830128971776 8115417118641162669686783177916416 -122193223091939248008812902169444352 2633167786804158527383018256990208 5977270848865798296530403599581184 -116835865307500130466544720004775936 3991452854129527206101568137986048 8576998101315649403935844837883904 -396290695650934879427241291443863552 3227152358491907006375717047894016 6520671803407281106921072877371392 -63077593224569189299644011517050880 6247817527652442424230135052894208 1820508139539490715581151459672064 -17859178296765925727356386719825920 6885236832373598803942618127400960 8221944536371009936907342675181568 -39596190067359124560483986777833472 8261253074686008608901993777332224 9111292271457234456333183201837056 -231119366925119314899194963076055040 6208033672205075028826695873331200 7213694869005078561603566828519424 -359726604900489664662251910966804480 9388642893316913818156488334508032 8940650673025580053287666536415232 -458234545085346662214283182833926144 7018680404113758354398085130485760 4625398703950221075723727822389248 -94893288149723138394305430017802240 283410771289043473036592749215744 8619693839235485013642315405721600 -329795845287808383762888385707900928 9983002350665537906748500008239104 3980396279265426828816450582478848 -33717900085547781030497954209726464 2367998505541828653831935318032384 7909223588541988392370170580959232 -167597899038923708120250037049491456 91828549431113510870158848032768 2598546705470013970345421621428224 -819864825151768974783119278345289728 9421247180187209328094666685415424 2614494724260597790688051759939584 -883549462026080075516984466526437376 9590875984983744049605903166472192 913369658254695341570920177205248 -234042123477148163569003438199013376 4707275999715564700087345156718592 9959753898488000649994143090606080 -178525361668349051533935115608522752 5195639914342405536225636567220224 8287913757234914368158156875366400 -208813224610304667026901066460430336 2593560538869129367057087076499456 9707366637600034437958278773211136 -682033199142662423734702993282433024 1145457568633571797724644941758464 2316870878609256203752064778502144 -912295934449656460103198611660079104 1032013900991720308609740913508352 4199137987316207399323352589926400 -865144904806285365620530034524553216 14278927001655822618468112400384 4481930778804715384738995452772352 -216361453622578792360084051708608512 4128951705196269786964213832351744 1539165251129998666343006592827392 -798378171150070429753649094713147392 4167326184843934401657800772026368 1245628652509440356323080726904832 -490248757295334891255384181628207104 5411395794326794475085278820171776 4997554532869406910852285604036608 -50360430643070006342197877728608256 673940151772376561941489523884032 2842283468972088097890258454052864 -66791217687718151573538655873007616 7114212672611544955450507762073600 5383366071311788658262202092879872 -94056193701290519930963206896353280 8816180095655241384769270631628800 7166802607417593382613685052112896 -98026509710098417775049976137646080 5989904057024872636978257155063808 52104891475213647079081525641216 -320378759712391437265840188120104960 5907996522046971828465941589524480 8968261738137486327406900654637056 -696683380217714754591913286442156032 122490297441049510621833280356352 8496884259250289545523852098928640 -591401516364169635261037353480749056 610123946952264092204334621655040 4004166476597452385575867835744256 -273748904873288127741671974574751744 7453677412915570894436734894866432 2620037779769815767953204511244288 -468534567958708267345438330717208576 6474242592296226293300837117591552 7862928443738044020706738865963008 -995380828966560190593974400035323904 3757255152051633192984957249650688 5074629442923554694295377292558336 -504830420457959783948683893341683712 5011028220674676742785539978035200 4571260493013542876059494019760128 -667890757477552881910341499984281600 3987869189355112107565844902445056 2174738630870645176963364902928384 -675584682448443869307950000068624384 3983457460490400345971491839410176 8700713583906777559918394782777344 -495629091174939021069848041836511232 566674636985302193117237251932160 9697984272379747533677779511934976 -164724131829668667744255056617144320 2721901908565729708257760115687424 9719914945981132885565598104289280 -374646140019910269868520935427932160 9258937016169720442557705939320832 9009017969003259919678615375052800 -352478160363155046559801786788478976 1559871204750634818515212789874688 7808001061143287503098672385622016 -334505630852414150135730152962785280 4737137624935787740323897029951488 9738236570986252105915022748680192 -931511742321387231802150156922519552 7573016580568041069486307612295168 3589179351399355535000366466727936 -57016276587467715298202800902635520 8080892488473061614664252318023680 7539399839304091246796346188890112 -651371055819364346574637343472353280 5426984996598016611296496997892096 7877006785520951049084215912038400 -322485420581600954775503307158847488 7782198116977529037714342266535936 344478458210244574080114668601344 -881825753497720835275077694491983872 4680936223797458144217987849125888 4942154685212522555967184662691840 -564324212065316036670443942448201728 5229973091340613339422886962659328 1515442111152442549758952155906048 -878913253946409432300141026442477568 263979462491920571524430119829504 4550184777846734464761977827753984 -795533931419312697053463213659652096 9093045536044569069188957719232512 1951733981595151008360582686441472 -260207668419666496683158154678108160 7839470633455046470047433354117120 8360847255543308471968898553479168 -952654970080224362386551083718672384 6944371582309237253025457263083520 1637632426493908793020591051374592 -801291619948128498659905744052158464 4585916827817073789357265933828096 7273292443738906767963806316363776 -373582861431665333636441611777867776 3965841802124499751967337067053056 990197773038188285556814203846656 -317649547058378717620479086185938944 9060945958217636794204309317222400 5509568899096366936644684695470080 -628646726508069481026700757532934144 4181376752696680676184881417420800 9596254027258460306703888144138240 -503343154450133998336208641735000064 1955372205581410349780495300034560 1279567557620678178657138764677120 -508461280528246971435165850642939904 3052404211134697944610908800024576 9924909459244194541619524524834816 -59056300113277548791821561619283968 7335090521704598215715783826210816 947641494108172667459879162609664 -808936280314455235271227835141849088 3433105723300942805085091545481216 4136557815821036824938866041421824 -977092503562382290712677641080537088 9236601094974437076881097720070144 3516809212318421996170976700661760 -753342482455179221354510227137888256 8659682436889696647641089783627776 2432753764162695650503354769997824 -585505917749152231725268700848193536 3452034952655104738286061326696448 2847513036824768318880980578336768 -395596173678309273487416015424847872 6142267095134789667672776710815744 6819096918554010893565586281857024 -4642210944378432081674843182858240 3261682921687129403937880360878080 5985838287080374406749391801024512 -994707802158045770369901685215592448 6338137203048443565165985904197632 3839512426756448904608013178896384 -893070577131867869861529173643755520 5044616959277810756314763142103040 2283018016929255715752194976251904 -318371220312107990204347192140890112 8175880983624222559234298734444544 6360640900560532763486018609348608 -240439237515773731614255392399294464 6559511551612652604766180616437760 8939639746020622955252416100958208 -262313721399424834540530311582711808 514781188215923482145121581924352 5179839735984893383640390448447488 -958320469306563354635633781404336128 8740968036181914475002788868784128 1646752912898097243964278902358016 -896893221537446877677294375745355776 7348281377085636440774933471035392 1603041186823035870934269410934784 -917279362260203258843077428977336320 3148099486494110588823395232645120 6800994218192424356634223800483840 -564230799923658154074876733321904128 4720625852420872541250964089208832 2877537191526634674084074722689024 -436822733722685205893850075502739456 6335213540457256145142594926542848 2521277675860630224789531854372864 -949036286075111492284086602063413248 7603664184530433521126363988230144 3369513108173557570160912616128512 -448831285187138345744229668612997120 7289688609040546044743760033611776 5018973130656159731344061275045888 -444149648161162415061925869310181376 3420402999761660620915377803624448 9282957085072668231563292174188544 -328019699891163860591349159147077632 5678267613321368070688166207553536 7580477194769880022013870170177536 -284596568951711363912150841343082496 6581841630372947135655703092396032 3632607300895672964402902437199872 -255139750993368789894992058870923264 5477181545914774807880187405926400 802890330831513811622939043299328 -667775360817981410022432017148280832 1350601250219651358014757813616640 4657489326256955958911198268751872 -659839897248495757625943267785834496 2166793908178258980649890931015680 9503042766038073248322238686429184 -70799169565460600508669127706017792 989300215090562939085317497421824 5398397067546166368659059972767744 -552264666168202083097922607983362048 3867513365825921913305692060516352 1329633492957002597265187893411840 -297840838791329475530981126287917056 9733256767246090180465878299049984 7631139430268292683401520367009792 -13959089312841694569035884419612672 3102627432169912563695131524333568 7335297847413677861840084426293248 -552153942328394609363380836015013888 2885686527444588208932386540355584 631634579505195409696886915858432 -507937465144565480979139240461860864 3088755464388532442890751302434816 8987936908700124360428648119926784 -606152177147958443963894927462498304 5948034395292921141147140720951296 6123129227599654135354137878986752 -260956198822268406588340846892941312 7665634350806812009599489020002304 1692582620169718570701820472066048 -734981057109706876571127565978173440 8289495967449279793655011260497920 7230631665336233310741390184939520 -26205377142657050683719205733269504 2661896625456236182924305629184000 2986182810026458220354238001709056 -263387193813149149034296297585115136 9683392216882698139872562440568832 7202068317298638374178535206027264 -46746439387645975314682585102155776 865300636753889520760445735010304 3199472585464002832003123533316096 -573742289683180135135559940692770816 3690622129727334277809720644337664 4948389268565917836877706152640512 -37112040368051905033674125048020992 5905251301469955973495370377330688 1615065565700896505988054473768960 -767039858199811564095947625849683968 5652146585519134175900152912412672 3754236117535015502280164449976320 -219444058003270424017213230386511872 4883544291561311401592726608674816 349531722455322343973941646721024 -59586016820595360907244416626851840 4182543109531806628676435225608192 6240349858293097686250458200408064 -977361923397319787476453068451610624 5598143764122901176319686903595008 4101849145352481988296265133195264 -841852542803894602129850943366234112 822013977540821839072859074330624 3727310906650932514361936980213760 -654985013184565979536207093757378560 9213039168954216163282497061257216 2705221361928287493609758379737088 -830497767760360520029518243393699840 5634545341372982882335878606225408 8453641229640307526981614611464192 -22292140141296043371037671703969792 2354224327421891535270285647282176 3812750594259772250043352573018112 -332905237961860042155690083047440384 6772897179564008601013116752363520 6469230868398243928969705297018880 -58905704678174449543911031045095424 6630424053974132531479459261317120 5808072313272455000090425608372224 -246904813031347864239013439746342912 8628423757781122123690061454114816 9559173377713441981256356052598784 -912109852541613744608106710539698176 671796065225278678776127032393728 1565934952353218214882217761439744 -658106609989063260058379921987207168 3626275471277663659543221002829824 7469664752367774625871403895750656 -31804408781644530329834102921887744 3266794122296642307995205833326592 3686811068273998420845461994733568 -470334780098688659327059886071611392 538295307725285480745160910307328 2322096806846164265553269494906880 -379413111942904880872304353883455488 3416036684247085047405644947128320 3374031749590328712320612967645184 -903394539772634383988546220234637312 5161335504423467182652271668232192 1464936882023471643383270903644160 -78687703167402722386691262074847232 2221672965440616168461332320878592 5126756615895847472906116326752256 -101710878281724856761705740202147840 2741335960526480790024015900049408 8546996168199843786048297072852992 -53690829653713564168715973544640512 9818501302157245708316758572531712 9550862623682791651524150023946240 -659569985299748253593004017738317824 5450830565559090063691285549547520 986108395309863333464238142259200 -541869020571825554192952710720913408 3226911374976124696695410501091328 4399929830571895804074891698765824 -459703400466829428879847848574713856 2679300874849832130958283230937088 2540881613312853977522376038940672 -725093402564739612037290743925047296 3718527940864095660315535982198784 6809025472457466808922984408940544 -524405607725954815953528627870564352 4372906943589595151064937428680704 7584954039481196899953396047413248 -56656636034386603303501661864984576 6017647076216811814507925181825024 6302006249874465776797269987688448 -399468895154565693080349297193517056 6244111866780522601867193870188544 3833133043933521133021481450602496 -122521708779225455310668926111711232 2524315835744361724919034259963904 4634813985529845797270276710334464 -452986115072437276567752029671260160 684792097992858758358216011153408 9441531313668953047802520574885888 -762234498067646899562485119597936640 5196893293944023995855433124282368 6713857784687532452424148662091776 -936243714060301223517672472104140800 5329073092161608983205146792034304 8767936571160148365396971146444800 -556722963905505081860420936656748544 7446679397833681091094327024680960 6955287703430213641176064618135552 -546400481585920585525471525960941568 1547001688886411291130146620178432 7434065321146545419282109339533312 -295746536323636091436024607560171520 2187853284187337056975827693993984 1248969484004176658369553457217536 -697690964258395106116439234020638720 5744864750444459947905450139189248 1404763053522102987250951811760128 -394756263519076148566573842339725312 2692720107849243750729329519099904 3273720360871290870367772878045184 -412277986186661217703880970840571904 7587272593685853189512233740140544 5096555603428111981655504761913344 -255095834413268599590600274142560256 7228284991855122004113466591281152 2145847999527675412665831759282176 -825632042876198759658059528323203072 9114641716178287901830676354170880 7829076389522252035023489095172096 -157737426600338926434663441794859008 4365850462560293245025420243369984 6035524703990945098983694984544256 -323277175639297702692404180390248448 8574970823942908632626477477658624 7619293143401702339400857238372352 -694837171262087484952078353598251008 6755033146335764955086874096959488 9133275263062107306655314469715968 -399670364176285846853145577413148672 6673891695657851891549794067283968 8756973718112314094653687352786944 -61793399090628939220671057889329152 3783364996939166474495350469033984 9363199321432981977967033583665152 -892043668328063858276841200004628480 7309669960400470469722034145329152 1523836896136626507073178514227200 -731240777459016121779721566261608448 8901250554353295593333470779146240 6315184238343127992470423436525568 -26473593313790255957949487456976896 4825482156725850381053980548530176 3705808561896706278334560464797696 -685189411063436296818031501212909568 2826851207053465213585850116341760 8644478506491280443050394466123776 -865904194448636683020346590492622848 1900084402300313354467986729074688 4416177400179247926141832010924032 -86660874831215280958208699514486784 3305793394356845582972327297024000 2905137681533311182310974091689984 -85083262669578251604995837733634048 8081028779122265442569420716113920 6019233581558792207277228736643072 -423660130117867139188502849369669632 401639499888293831449451754946560 8002339804712775739004527134638080 -913572138439455437654273462611476480 565974964137551095727753124642816 8909787638187887107087431855243264 -147819028027840186305964759056384000 7786076500149097963305300591116288 8328231618387892209306156738281472 -28605833437216777709750428559736832 5383250031212498106373073639833600 3030066034917208923201007723216896 -779201628508864262239384591275130880 4727161509323117969140411659190272 4672439921996335776790292285358080 -986729740228160856287424807281098752 6686349283348867221796684027658240 8172762246717833720711066618429440 -991690251909160338350747023352791040 657239776709597778043763291062272 546630344970280119724668358754304 -323706689279673207513963429124636672 3026763027375512631346552377442304 527838385600575241677882464927744 -55336478349061889168741714450448384 4319936824084514140112693636366336 600710043861378781117668843847680 -977173509612264019969719741479649280 9933228436660904697018271829852160 4751031472009349935364734931959808 -773315358652810044811455230424121344 6157106745657676910027440826351616 1213242404591968591393612550373376 -117092109059729629340953792095453184 4905259735390345997674096499884032 5685173354144988632675036990275584 -903347419798598394837553068363481088 535725290148365641346491703361536 4746311620543106524089515455283200 -702080514361605242428169115653898240 149957048172430200431858147131392 4692458147049962295420348346138624 -417068442108544514216045124297687040 4650582698138429139150856857321472 5221166979887870055448604974252032 -304158783638592454232004503957143552 5316118748641082113442402497724416 7470512675563520704425439027789824 -746931555464315282631615378614124544 9292013534714878553147430892732416 6469195887358207083747487904694272 -946153038130634647666020647981547520 2832513962196423995879633423695872 7593995347270146021316380258729984 -614783451319819333870346371789225984 4498080681471090301064736030064640 1001303629598851056620094701436928 -207121264571958031156834493291036672 9593272733811773161704739378823168 3278186773272509558366400547913728 -539337258639995797301222947078275072 3260122954581700561416239917826048 3080180794488791101343682959245312 -742116159307880628473268489057992704 874346231961425666213311177293824 249356387945807853449151485313024 -838292336996540524725779378651267072 5004025592746583601969357995900928 5367029916212518598632888856477696 -223998215085273149006700923639037952 9175091779407685284246265805144064 4196531346143129474376524242092032 -694571172572330371592705053388963840 4997808400163832623645366820012032 2265438299019968757593951262736384 -755530931929912701298521642050256896 5011485815503961576280047430402048 4124913022989974638644499247529984 -299423446885040836176739961778733056 801090075559497620178627081535488 8954710793602544041436921561350144 -77681497151781401054482312971943936 4063961198036205090464606118215680 2022286703364077090856838973358080 -74649152338368498993215704557158400 5420300607311178464875030352232448 4227949011814536268062940381315072 -944841475413958711615991251350847488 4056541043492634426903828916862976 2091073320465724513028556680331264 -682924736929271427550198152030060544 5232285841499426339424094161731584 5778656085294833368019861363490816 -595068351330807550615558264578899968 769204691310054560986098552537088 7264335803944866342755927490297856 -434900001530448180016299948424298496 7252394521179255719841994364682240 7450158566187852077146724984946688 -628160995541300660108032637824663552 1574125050385963378567562699735040 6349284564619475039293838817492992 -801354673434995214928157767586807808 3534721833342244726594577941659648 835104123569129868104783393456128 -539450110405610088993869262481260544 780379459942078697698623865487360 2435213891188449095425225979330560 -51818479094543133451753323640127488 8790997093167925033376841214197760 1745619240114972930837718539173888 -56774602123047249282075425576583168 3486954160219111255417119288852480 5066041688142223093185566193221632 -726488184672661479493326122344513536 1759088052610857652983832244125696 6119446674004501538757897774694400 -284237939151258203003234323905118208 1519354686370304387231216878747648 4276079090474012642365662899994624 -582010942584994772297991674308591616 1235958794472341726486757164187648 8288716426741920346002025298788352 -639999421011121460229742077572808704 6998959629859472893828573939367936 4036024086916734690917999964061696 -950740249197381052124770028822200320 9984048694648959197437956349493248 705731852594693295214116506435584 -176867937460608252802063037565501440 5849269590997810164749977312559104 3716673867827599784046614810722304 -595580288616621226496852957000105984 3874028962519767034024500115013632 6476623017228587794916161865383936 -982844286932486776788512528884826112 7322645489312199419089757507944448 7790621308276638059676151777853440 -399274337743914110734635597641547776 9698894347236847759650762658938880 5145893562403548301066002921160704 -478544891306987580355855415840342016 6984898971990506515978931482394624 6576907540835246986451743745769472 -501896291561651220373058812714680320 784096415843712098437417823895552 213951458567036316789302691364864 -173499292861962652495368296117305344 2912186536380574737430451031375872 7802133853884368688775771174469632 -273027060933119502469459623792345088 6910437782842236194577060013801472 3109482936537006284323112836136960 -717818922539476087945553440355123200 9451244056809358479621705024143360 7543543582850337060934881128742912 -131124477104987634131597898603823104 8663921639901092522377733971378176 2471649655828211802625321170108416 -237252614339805476573205261883277312 4679875083307064151918543466659840 9261289803862223295377126136479744 -289836522691880240114286022421905408 5415352366016910787544557096534016 8175936929033830480823643227029504 -931119791394162760159126012001517568 4623638447822754668245320491597824 2316157009510968254659595797004288 -774897758190107907749393105959256064 6620271300169007067286766656421888 3197721435360890020806572894060544 -867452530933502492504504436430733312 7764014762814997530694853396004864 3601059441920195142187320581554176 -208109522164575689698882309649858560 7841563103452677683553360993583104 9988757978718999200736340181254144 -682955401061259970022841873000824832 996096168164803584167837758914560 4186116061062478637134065417846784 -727620855129744610545028988330311680 8024622784677044584266025322676224 8780553120838702790197723642462208 -803528607602326568810116535554146304 6150490906229644957493214436130816 9926599306591720259009417865854976 -70060135078122130687274277958320128 1971830163384259446555786770120704 6318091230088157804694563643719680 -384195224392929840978721331551928320 9177043315229797639049074733744128 4597482661606309512648486970982400 -919483701857777892138793895578304512 8862198932005289898511030688940032 9618714571099232612752253320691712 -267086810102488126569013620559052800 1891021686494340316081516254855168 2037201452291391092551793290248192 -823223762518730033605631107204644864 3052700513780152471289189323767808 7419504957076665444273803904417792 -966042695402214992004012960158580736 1065351082578044033501271773151232 2566984808301191939541696545554432 -318396026060837145765385046469902336 8070652566053902808310554959020032 2370486440230272740141365295316992 -800571117847985101201679015154286592 7592487248415925536209886305583104 5232542272377406771722770718916608 -101682292845019255286733421949222912 5401277751389497725885937946198016 7213931849088331609282214340067328 -449213422606804085528739265170636800 1027280054377889424097295997075456 9460164901994326104006434796601344 -562436384676639221298636427620253696 1580353648509241419273699573366784 811307804020301294003766467493888 -503760864368169395873361818382499840 8800967420366878605737101099008 6303638555354430272249159355465728 -997437093327597602844449798071779328 5484049729905150051492126802313216 2416928212744771540666776327028736 -965205617818763853961442954234036224 8267102019297429578695892254326784 814642387821739736453992631238656 -188015094641747459892656189636345856 5257499513032899480882522542309376 4278566553887300589074754522054656 -306419338412425180545697497311346688 3924166155541796458144780508987392 2280651954013649346294255441674240 -915315830535852519725102837264285696 163567379682217383731456787873792 7218172970932885676952264288239616 -646474268545243936432142929943855104 7179804531770741153356130377793536 2799852698378269782113680055336960 -895743770136130171729960542889050112 1456429759520203402094395596472320 79845999543022619893908004405248 -882775009006506674749930244747034624 1647647363865337883830293129854976 9382121269951397517623643405811712 -170298789258247107356855816505262080 2787323909861156534140773523783680 6097420593140958276941832125415424 -995652407247647038979620516183146496 2156789788456561604713648553459712 2439289304449302446945207001808896 -345254191097024697127002319454470144 9707575289594859254202373192548352 6269260331875254084002636602802176 -310347325962869217681912851427491840 3549080770997640257475942834765824 4824415780161730064525230822391808 -822660224290808313770143356054142976 4287134196257237426501054701240320 9721384292145851577829882951892992 -807883164421474873704091704813944832 3885208268823909239912104156200960 2825557624151934801630956192006144 -325266029296123989451603645340581888 1523722893090329954813981723983872 4228424284452938622256613068636160 -218377710057299104431961389897089024 727187391696192211167406070956032 595007218900410901139024311746560 -331738722219172698199155565402259456 189598884098836215045555065192448 2904643519967472973153918940872704 -163389337381026139681974510487076864 3974530290833853283134018007597056 4341110348987429603720589194821632 -620843965920966243663454834591268864 4953538133467076537250040497831936 8154137572471102099082045032497152 -87457794662226384935683150682521600 7423805757591145683002230201909248 9517598506500313692409193138487296 -782096408588706429753286398356488192 7715992417985642274013156627972096 9815661507805783398895471294414848 -819008418055311054610870968709545984 41268859235473865234055277051904 2559335473331651289649805579517952 -561250336224287063294072542485020672 4910569808144013600669077600206848 9229328441622472712295207426588672 -949587268995006118126367967622987776 5635588541591079311005048106909696 5983528955515709768459253834579968 -118000486986058224160456673440301056 5671395834209187901792953248514048 494714845037674321353323399086080 -908342369169675701563977178372112384 9300422416200225458312845836943360 6639840014036688567051754676420608 -144631802482435940551027813028724736 2492083576203885223203430211780608 9130673270071959781968353165312000 -503534486851984810410151005105684480 8985737764038322939949966778433536 1753160789051399447747593108455424 -108443324293331876130090662651494400 2901000595595288198500515575758848 5724340327347915642531025224990720 -895552284538276201655831850274258944 351363336017867156413218245574656 6060817422105969105047994975125504 -27518007962247538385558988969213952 1545485311390725535390657612349440 9096133798902920809042223480963072 -924807426138229405803911008013516800 5683086356660762274320494140325888 2973606661698349886492711676018688 -238209630431326094228037130155720704 3465026386390334426903058472501248 1129762534499120207790156755763200 -353540051876186222226906502169362432 4396123988326021759916921436766208 8879887295614893948480782235336704 -432976907120599230611129978562019328 3490205859772690373730006493822976 9494511777944409000014441328148480 -737648761763148741804848624412131328 7188441519098055283064517284593664 8071396640632217477553807501033472 -529149574413445479953452467218284544 463014052194539515298806174318592 286729034247228427962230471917568 -637860401307376708416606422922428416 7439325651689933996995491758342144 5628041412682849190385968171974656 -964397894892818334883471602367856640 7128549169107468611821025303199744 1882044986491900736624502520152064 -600707035883454982175693841899716608 2869337540769670355624674646294528 6750914290760924317933660060778496 -504068924679199095003178140180676608 5603309002070306343548803316973568 5447758061676696498682274655502336 -493434229247642545590860145422761984 3046153603289747116403165084254208 7671640688575522360772945896275968 -317515680737237749358775775107481600 660273652227153818997719142760448 5543940704459408661017288236859392 -57923504060267315112417541759172608 5917527805336745591897429804843008 9931178863976231156838562212610048 -170784283138135636641807882914889728 5867233963657202621141129705291776 4815218560506019179197275708588032 -247865272813304778191012132997300224 5156031298680075825018378551033856 5296912401920600277416232307654656 -930714912206205046531700081014341632 6007557453408293364695225891553280 7584971824748713745671134161928192 -399126742040893123213737268946665472 1866185229213831633089063855063040 8353332118914567593699772117024768 -983238261659778803946536746333765632 2165807841517001166582596841242624 344382315605548982915846769737728 -153380923276917694329152784681664512 1774699306045305363384804915019776 8628545391666069225797077551808512 -723220693623032537588452791496474624 8534677150755527079396127518228480 2811264962862672069393691990556672 -103895097980240376477455113747693568 8362063485018205027698328660344832 5182659622080322233046231087579136 -770722959002004605846871983792324608 7998851590246271971098642991808512 4033032476327374462451272671821824 -288637166431005651848481673788260352 9730514409500754863839151394914304 550718215228587320144983199055872 -612268351331379218659398214066634752 7420871501580252766532221074931712 4399305615288713415548704783335424 -950249560184095134903483605064876032 6763958811574707632606272332759040 9941200675320896694139642890420224 -588798352563471703775696756775321600 7238448222464315486226686614175744 4356432098575573965635964557590528 -167918355941962726153748553568092160 6560743090311229923702956315639808 8243319859214194746521700265885696 -920694608194066710793331749423153152 4064454955947933755904440223662080 5485188547645589976507781602082816 -124037953266647674363664104165474304 4414339875112458769744095128584192 4853185993394685853981129524117504 -237384933489710959760170129062625280 6818335863119973721933495614308352 9937028906142747429588683381014528 -383824044034332855720067295850004480 7850071108594240271918304019349504 608364137524664324082036306345984 -166507062021710470337358463076663296 497659442766531334744615189217280 5655073744930965349695762424922112 -424240106697399631398836199388872704 675401965399606308214574319403008 8897578259592995035098754622423040 -433138177294701946405541777246257152 8171117537891624150479524912431104 1079853430452793208559455216599040 -756672451002570404320279294002593792 1079703255166817409035987362775040 6627612626100241692879171111354368 -641574578604502018412347554420228096 2290021816138313020545257858662400 2540967913102447072037499960295424 -383724981760892967400970591903154176 760975997196788956384525660717056 4325435794133542021656840536850432 -245617678200551998306655600325427200 1660382695202612568488643986980864 5827025672284392176102990713716736 -746318579185381949800553241865355264 57475944609268351212368223535104 2929874896937766069564363293851648 -120094243054598503883299436699320320 8963166514473147001292081216880640 2324336002855509638280350720327680 -166583829550155976001362900931313664 6786409062848098877447079649607680 9275776463434470871121437864755200 -507003494773853999648710775516692480 6808472407401589956775267803332608 7808317735610905847937991102693376 -561561024084824387200223913049063424 9759352168681972534421976688623616 2932898984895625202950817022214144 -127387301472377257236223947446419456 5476901137331384827003603794264064 2693004159100820626243902884544512 -133316320124825571234734781275045888 697370060748133489823643770814464 2690932725594431598416077686571008 -258127143024113373132144046497595392 5210025752446910239074866421563392 1215246439601839801204102911754240 -114213648025717907766142529154580480 5372509452333084183440775970816000 5008230514723753249933712701784064 -160236874322950043882325659294367744 2923483115425204557434829834027008 627634430414988611181071250227200 -259726241459966599424130183839350784 3793000055120499615682825396682752 4837582031557423612875855200518144 -842507777610611481309855886983823360 298678695403682548816597196210176 9632972483131523967070472058699776 -953017592425338595605018440730935296 579836967831575943952575944982528 2348482310780582373642356515667968 -582049759107281793141846709739978752 8997141217245870630515503743893504 5131795990847539126698825763258368 -33032583265834205834552697329549312 5296008894079587491715017357656064 482255029952154688762080749682688 -92517425052144112393672495133097984 7644515019850769872858989402783744 3141054579823969697817618943049728 -528569714379685728933044135470825472 349099826114061745889393275568128 603321710847996363011653724274688 -78091373956753392010601971450904576 3784622418362455706130995187023872 9537144432414017835313377862221824 -728680351879877748656832987868954624 610919834526382322414626216607744 3130149251777434443432331380260864 -919050785622143365806148232677425152 3736581927501240083446386416156672 1039520433551380323437919793577984 -439566187642053484891958903910170624 2160726253840108300930718325800960 7131357560674432760498094885306368 -234386657393421490547713223751106560 1189199796384371262525590766354432 9153306668246073691444833637367808 -949291321413653222499610831947300864 9850357230083048928108316689694720 160759671254795973388776887025664 -881037668017050961644942703747661824 904270130115253107783433162063872 576247446808321297906499862921216 -120964715370216998909784668418080768 8793389913737510440003089926717440 5246882308739728179027851134107648 -719650586742426014251230573669384192 6213860370655144968427284214054912 5356905389142246323606350425227264 -344913814731576919952337368655069184 8757777845938755436974438535397376 6637997559853320651492442094174208 -376991332695353866524099607938465792 9034109983680695435474579830603776 6455680094286135076743261179609088 -174528834735289459348051391435243520 5685942445675987108346364698820608 8158781840443912835442091342430208 -168843126519517720928429208816844800 9928042961977437470899540840153088 6772849850433131549516948496711680 -828553805700840537993768559571894272 7966729305744271602071684486529024 3808317531103907161828428366217216 -279411008709323039763407384547950592 9622495178423211482609163373117440 342530489882234638250134527279104 -599958488920807855943436110298873856 5689570093108804888281923815735296 8305131430372201943476310611329024 -839094660982558354016087985702830080 9866886548373391453523325925457920 3365316283653584142099193421365248 -570230066766242462554874342912557056 2524214010366073098111757964017664 1266680717002655301748898675032064 -150853779719249189125882843506933760 879517734468394213268007644299264 2093893711568839389571898041958400 -832608515479683722624243783824310272 4418813193771229113875483500478464 6830448746054854193309734771097600 -982070181720615195620671012466589696 1966694298877381916052693977137152 2375858383711646708114338057551872 -897480678207261469399047321619005440 8898377264908937696184213425881088 3439492933408857513423888516644864 -300697841006524034979395445224112128 2199714484176539598725202657148928 7588727299952582549705144760532992 -389131812256697581801208249128583168 7209625427160488927318535839940608 6968006489850195764950951228604416 -836838919804458124517507767684038656 1473778306048693953980905960767488 5084327124041395240198377073278976 -971976027561499082543750930573033472 3784914525629671114943661833453568 3191646635273096147966344705343488 -851333134409491211042076042834477056 3708503449320235619139760018161664 4967040749617207063817931368431616 -205127790695771183235602638981562368 3626780155745737178079739498201088 8124454315539179168804269350453248 -532600974819994167257765935312797696 1232936507127797773577779501072384 7266952952602128590633477884346368 -486380785004245916844015508399325184 4002342562942817379150675056787456 1575486469326638148833343600328704 -286459823233592051552447833690865664 6710252328160657375411684386013184 6991054370623835878715566157987840 -330533604495822416991812188454780928 2234321513503490171200111462318080 6874084773469055190877866049929216 -815084519505116257680243706977845248 2587932029423670613440628774666240 5362167724454314267769034707566592 -305502518408514434070164147827376128 2995615720264618147462167700439040 6231670318999115534748524344246272 -458418939800733743682029983901941760 7818700168744863619309876537196544 6604818195153063648760229466734592 -355867967048638640872108336911220736 1036780581081781275284119016701952 3667553049748643173156710491619328 -110991536386934241399807754964566016 7260432205770081201505022106402816 4903740131246223465469750011756544 -448051712484762691403292370173689856 2297496952018302039683154520834048 4454205242423770577747946231562240 -515466391473776812686241228396691456 5649712385712059877583394567094272 3120496529600838457436630406922240 -449252355835123478477733200771678208 7632932834538164681292158467047424 2928574272692581089283780443635712 -694526332805295639905887535602073600 7039195085748774052470260378894336 3989778606096569340788999200964608 -498776964533997236945183238688604160 4099543613064984155418217313992704 2989444614858321607629635741286400 -274760875881524332961536014681112576 7089473764052175365659719981072384 6235356961962320296244576497172480 -57231261829447375999134056323219456 5499639432527442557148552820162560 8672569547679926645971879003684864 -231202122733022365003325542303268864 4040873077177710707232268322078720 8279378768761136457988301282869248 -884693761844248192380382022297714688 8988068620235652720784571711356928 1520955644321177319826846935678976 -514271109033109718103843661072564224 8728982126007497726587802639925248 9487330362655853489691263900844032 -555569996123164216904649781528231936 8613422045999334988133354138763264 6068620420024891010612866402222080 -399519163611739226985750415999500288 4662601489335458947888808995061760 6579188205070019177446336114982912 -632726420841844206495113939865567232 6948716572689898229882889130999808 4431238684776764559364420242767872 -67121656634619828160578810556710912 8961706972734389872133503524536320 8173447356445877713404020752646144 -620679984466737625611141049183371264 4250333473259015019499934084759552 6439107413512505903455631044509696 -973390323668905361535096440294998016 9296844933102261681042943939444736 7059407088063757870134025818996736 -511213608673389676869341745648762880 1026383116605375787697371997011968 6634155057226345700240528926310400 -208979627657375237351136579270213632 1154015931503911481363099535015936 8748264728599519845265470866325504 -696723170377203977328074820933386240 969578558197985149052371649691648 4887224978526303720532946177753088 -265730086961538557525585744202039296 7545697266615620900434978375991296 3572709461525416350124256406798336 -552854352594750234880482274520858624 8708417075882264416338896677240832 1680407009892343510966570563141632 -932427780989399842244474189278871552 9982104092712102085942263467212800 8902445997590479134972550955663360 -881071796699792237663344073325412352 2287163481258119243141731535814656 4659031764453223139435283979698176 -841988743922315930797959967198412800 1104273185448297526662137460555776 3343060340828725997399299741188096 -182908259632367485177754465144406016 9697027738820413731941338692190208 4606743798199958051400754806128640 -114877276144688882863679565065093120 6896910961860244868668502283649024 570693713392087293349346999795712 -919447545539893328864418107328823296 5062498300393590825608231595802624 7563181026156897494759666838667264 -321152898204613414044438991980199936 4655777291055899679973297067393024 24618324684135660934951080034304 -744033166527612489049909984963330048 2916956358787748770533097227681792 3835240999682494861453729743241216 -647932421122456058507013777973575680 9941506911373591413366384832282624 9079483987328482787481774391820288 -932538034040909198245496252878815232 8486137039628919033068751872327680 3474608526311745877073880409964544 -865125075974513598044460634263781376 2032082906433486467093879318380544 4863198405571701447059049235349504 -81179535848714039833875526996459520 8043386589433565436902593360035840 8692270476642611025868648741863424 -675641633565151750225492238571405312 7805213851915109257426228767358976 6538219542850928886934283854282752 -355196694443092952873265412045799424 3907653511150025411286365934452736 8128910871311444143027327674089472 -194628245000026327257162479145320448 7282494050562580959134042181074944 9884603585417715692303310850621440 -816952104928945937110034595308371968 199796736587923115677307692384256 3634398181575330369192945644470272 -110151288545221122283142594554757120 8846543301415566387118262032793600 1558405806763038502134252440649728 -891282582922370860217732268076040192 8065242164630524894141250206171136 7694498029497681027720047314862080 -678664588739175531704511156260438016 5546337748034936772683506170986496 5803428491999512416295963110408192 -792519515548590896167030264281694208 6428313202553509030391079409549312 2504740900206884165797206026092544 -37494261823271780565078215764213760 7726239289708110192426472848752640 6212996117458905843718059049615360 -517307706938128301900607845709119488 2557234763081694874363191252484096 7076728499307661353144036160962560 -409534203634967342841213438130126848 1789597703449249896804149333327872 7830043022255045246511514185105408 -166404873650129688176286082304835584 4069201115315875045716169630679040 8083280142038177359154074833911808 -98024329954020285034730201295093760 2129151666286567977234705990811648 7706922963292538007171244991971328 -277674373139974617787707557375115264 4307364074431874632860371089620992 9259157950238538638514949841747968 -711548989257773347000664040486731776 73390981023666978288992815939584 6745824570290107304901924647600128 -517774631475655778894708103448625152 8382873827600685102644158797971456 1834865261163519214845170534055936 -248360024606768069473314076752871424 5571159723474649847583336946466816 9977464459108373991480172652527616 -689188126032596611461028446212194304 9874102933940545309778134660284416 3675816101674422059764217240616960 -889902767445419598891696062409474048 8361883472725570224496929100791808 5304519240178879791632910861205504 -274419861876414411277611835219509248 2756600875961896871141548180373504 8510785520641503006361919164514304 -930023857384079999341040092194013184 3749400379526051037897086843486208 5664230514085647828946706944229376 -462344474628120803588651257071403008 1456045992065003296943829090828288 4527125689583101715459722155393024 -690994642359390216439376384970719232 8623826932502416658280948667777024 9814361413143574450399776771932160 -389753048276871268704355803061026816 978447825222627469666667619942400 3838250489183918890608838053986304 -284630616358906034089255532090097664 7773605735536142882004331686526976 5077660754857554430476668968632320 -658624029480227008199993237472018432 9774810302563866526291658746626048 3186500464384984897977387925372928 -233065786922775217455989770365698048 4332575193143230977643037910368256 6931989398531584163364192248659968 -82967953926380669977311327056560128 3332011367571373101695706370932736 1583492282910224930291416091852800 -786695191666251260962878869823553536 4892327759303420700249660590129152 2147713973955145648486129195810816 -990243056088081223216868622235336704 8990778767732282815502341646581760 132570992357075002488439904927744 -432482295493232500098989102358069248 9003819748679669532161895651344384 5350856807968217014411649083244544 -885983917267442773309039550612373504 6704693819184414686934978449637376 5406169140060575723976996750884864 -382357213832921741563694937072992256 8029368508106560256028023126491136 7733123858954383350699303752433664 -664515695821137133094850641753276416 8043667555227635613199172947148800 4647502419174044246823956731920384 -249078488641610366879640596774912000 1209468631403871277164804389732352 3142436381348247361995776425197568 -919893813904430763797964635062140928 4164068150057334463297821905780736 7903239825414655940881934868021248 -714672944014678986287543865879560192 2137108268847051246288007906459648 485455156002023368363292617605120 -622292654788197193216894891617943552 7667620666566012623792290343682048 6650930351113482250300877898252288 -618071086498703589548864610917941248 6215513342704769975764584283242496 8989610831305466921163640706957312 -757779798452110228617238524964372480 4750262256153686470330312780939264 3089406538679266316780260948967424 -118600785121044595128303906698821632 6912530762504166210609019741011968 8113582741996312015388992956530688 -440990868961434858444854493513252864 2168481739995667985221400930549760 54568599808920466891428503486464 -938097844609493124045555438484193280 8266473152778904072073999011545088 1662510804804535288444431609364480 -404782112767125880139498203545337856 5255547152880312671188195867623424 1055730228356273885759498690232320 -899614532527819687452352443192442880 2502015822721378803059588058841088 3336826827402723008731397901778944 -963558013103792520547263230404198400 3917052953922992761379928598904832 8113248902436287670212380376170496 -365496667171122755759867350128525312 1302404499092969296153658569785344 6024298133124557413804191499943936 -448171254419802055870170193090052096 7582444211686720098741835324719104 6871211571564417660106068425965568 -895115464703678118934558507630854144 7889943244024587529565396013154304 2149053593434336099972303013543936 -912751439562516509094129226586521600 8276797462259327250906359223287808 4109391507857943307885566756913152 -912615077112746065887523723439767552 2873791281256634455015595639308288 7564185622585447412827485433233408 -625573239104724297322521772739788800 3517882346240138686591628929400832 1625243229000304433977616303652864 -623847059752999541442909385649029120 2636014303176486689145601285685248 6745521801982140380220274845417472 -62782797781685133257230364708962304 8653598521620311601472239355035648 6761506602426078532105607655194624 -143438989019935107472995514998325248 7597147956900037902815020990857216 646509591751140390932986627883008 -844977795690317150143568870740328448 4105398341803572338432394651500544 8392123480427310322262003178012672 -874476989187411685347577653547237376 5612033798105442466518247772520448 4800012154063769197939197082599424 -891612176892940825711092449102790656 1186503780725632331366606955347968 1398183579727674671625543515897856 -576035890466669920147513174109716480 2797232795795941575267390800789504 1052743007987289969201267584532480 -409011784986526004513241937284694016 1905726896131922667298153220276224 156532130142282632984837931139072 -248402857133780388185230266559627264 8989592544082679360217626519273472 2086432973042336024141993345024000 -356602203890417781633417011536068608 4562159434432993015562644297351168 2159753619010933337815291663482880 -153098465840428971207348942331183104 632651629878786675001982158110720 6757532589366523806329995893145600 -85104757833689271300051735546953728 7746796093476190847610380494045184 4485691445588344720247948308381696 -870335669537161574109872646113984512 3421362844456741729962058066165760 1548767181087604022837859294642176 -586203977877926266972521823303892992 5301086387731814840617800155791360 7478122017493337582483856234119168 -857199196495856705656586502261440512 3578766702023932832417487538618368 5395432035030715031261469789388800 -707038610274713837870045380856512512 3363509271023970712071850501865472 9364975466965901020549734916423680 -693085332905279438721651355924037632 3575358973987951589309777182720000 6600288815917256817801663101272064 -705897644501228137771372317530652672 1279592850850393101027560870903808 212344432502937255963666971361280 -693064272649368113031765429640495104 3787910798215813537257433841270784 6512564433013414347792649973399552 -985334483031669908430770968184487936 5644972228440497168864929063632896 6044494103238961055637492520189952 -675086008506095512169752073898819584 2302032807678058326783795490979840 641037734015606892982070784557056 -473560617749977704629683556857151488 4827202825071903770890331853160448 302154254822195879249821428613120 -953817679914863707879227818116120576 1105843993174549039958249659432960 8448425802782757487748324918296576 -173269513055455457188720836161306624 2530676418627788397585047366926336 2167508526432936116335182274887680 -134752204947246653372163445865054208 8950644070346295032716793412059136 2325414893276690531207678768709632 -156728584755187298375605629394878464 3277062501785507975226210547400704 5814580013612053639660327755841536 -673088464339840343064485427259899904 6779077707109043879242000595156992 3600761975702800791835025199857664 -573836843693408269606389108770340864 2137290401075789945951276706562048 8860531593282294101324052524171264 -804719966819040764636123063839096832 9174169173827261699833944290099200 1007639049682053520180834864201728 -261666781138978955600697686491136000 5541120281071979151293317075959808 1179201436214551095162239644073984 -921278054844366996360618378704977920 5741835021154564600789401788743680 7093767173220098320910878762860544 -858958243051036098064070878244634624 8538713654717897862608670586568704 5766360015465890105602948603052032 -173630891556396026357252613660999680 8845686861690461829113372135653376 8573830782718506340126180400693248 -418142966979946370631513650673745920 519339400547843274639049079390208 6495880988207562802632454087639040 -895718776531044029646573490982092800 148994082683112915451690904190976 1123467486534462928630168778964992 -862591363543075938666632702626627584 8001215522464335080112998745899008 6929919142410987329258311884210176 -486560116312049913620093544370798592 8229500826559001404617742293663744 4074547407855603721214949909856256 -395802290824401772932848900607311872 9827838191062963468709180137799680 64119378387389893684303159623680 -783263501860761681678678140500574208 6683241566643373073644540722675712 5228386025735540033397748148469760 -443146668229409457094310354789335040 7408298962187801728001898287464448 3565136063104628131590598756925440 -782433202172688887613213333897871360 7625347078869297526516279798661120 4213763534853741392402957362790400 -329134965099193100544216141368655872 8395746458154319550435018475044864 881225796917037391099256362762240 -665028955466663548961779777189969920 767808731924382491857867834916864 3283040216718293401240741823381504 -298488538147353251409145189795627008 1403620169384699403278299728707584 6801930719171059708992123538767872 -392052199046155940555262817933983744 5173939741347911346268927749521408 6076345341540280223789907487752192 -277920616298420206895723720562704384 5912098060577040771048173492764672 1175470979411576596111630276755456 -815462392488209950459911361901101056 8256484395932094864371496985296896 5345766072825415459946757011537920 -225127046353957627729371687001522176 9626971052956511341252152588763136 4462250144885911802994885656576000 -144767240060331813328711497642147840 2923861473331431322085588281065472 7711256517452553599023703471947776 -500004766370416853308334910191173632 2511075351716271252881170443010048 5997331876139623737924016031137792 -510021580686798274682915487737708544 6489311354175823689359598181941248 164218249817589233376961773961216 -153926351750486858196911808288129024 5510097252708497481222293941125120 3003310893761283545349705149972480 -238818049521460078790839841838858240 7257837464383778443248006397427712 5302160304542450605168437114175488 -256333765359666352275169558229155840 6677807024800779111530045347201024 1633460268923712421010102309355520 -678598531990087586550107162995064832 4517930213837087040668513670791168 1789099828541766343981276290088960 -26745839289686463968462221323796480 2107654523873538754360224755220480 7286362847277400842413783000285184 -950579357495999617919725556107051008 6020732502266989716173147567292416 2532464049531931105085240387829760 -390389142036810327062103784880603136 7916803157877792891643577304612864 3560630839706087758565212009005056 -288277220400727080698103667678511104 3464000894661470671021744228139008 5981957894483514204011728702799872 -504036958582618502358532329790504960 8096808542611858050449027392077824 9423105545298905724417940832387072 -493985956083073506316732375419060224 4367310371168219906601602695299072 4101265985327390170621800978841600 -102308082218916853865071234156331008 4088803605210101068571588685725696 6759088511597868582549196587925504 -69348382217697911918649127007682560 4605594551201830924897784172642304 7194153224405135863002396692054016 -296486737824548846376758932020396032 1488427848157899701218425530482688 7861085283444041780408076715687936 -234990304753131895675257744563109888 3151081033246739623246135793025024 9581673047217711624696965965545472 -987575242093821447396497229726351360 978031075391242288343685879824384 1463995999981697556163640527159296 -473584720068475751521162518388015104 5870617683307660892964499895615488 1522005116807861324509274456457216 -448726121153411855113912355903242240 7704300642974195339381370098024448 2184741702187829276850792861532160 -654441073151941810708839343841083392 4686861803359240376885098561142784 5134677408429206666457151738740736 -984627265279984383633881061212028928 582324808875471634139482259718144 6135415993353709662875065144836096 -2111699756741157086346169731252224 346017669758076419291223657807872 7768136673167231444359628099420160 -59591344915134552797441452167659520 9205419149117384987314336653377536 5439959050324040496617549914439680 -717183378243633891065726059723882496 5974166696601993921572843835883520 4479221248430783994026582788276224 -717686127386193543733617822286217216 365832687702579389654214744473600 290453582598370724429466536247296 -822144362705974127592891452483436544 4654502168852403557004543893962752 8783968014543005896837226580410368 -120382710850605250497684901269078016 4787442285713276239158308639866880 1792393310986947644696784145481728 -757434436584746172753626348883279872 6895709505765243670184819815350272 9923505534435019617479884904857600 -599230513935336894429159290390446080 8465853194789847724335096529944576 8707189077050084848336683852103680 -207185286785883974971733971822444544 8474204766190695992561917912678400 522246419920577106383108858445824 -797097643833149265801427176310964224 826712975148306216835363614228480 4178219359797752023468931597467648 -420643805307910531823986907679817728 741459648878974618565557293678592 140433903781406218210289001693184 -301706768572169680257891247581036544 6633410511372874314936185725648896 6312416051680274412519262544461824 -546262544814451812738472130331541504 4905244742437038926772295585234944 168395141506239809265396046888960 -50776050665532463313029513370140672 49925523035754852747610796589056 5302428463336162704203629497155584 -990666710270129545119815095122132992 4942776462841012677830177395310592 1470499162649178991249592401526784 -782080525526143473826372734951620608 6768986699706960367124957513121792 2901118883007759777589694692327424 -895433117240882903546181071050637312 5260988515044933657155042021474304 363874394522870949189879464984576 -128492011407446856440302671893626880 954872416771529450271208286191616 3692318017560382392140076228280320 -111254633180201397241933898283220992 3690432578524332401651819770544128 1176347708075733922524116182630400 -224654234292831663071304998170132480 6378864590056665840726941483663360 2943417148415691006668274078318592 -158626712550153762009687883065065472 2023732603010564341493430237528064 830924806435439085846813699211264 -243350226690756293674828601824903168 1259865181099995780652567745265664 1548327416019801251354700740034560 -289326699836771406460993615901491200 702999201130143749838953546514432 4612145630890985335449342602903552 -552507865579121032638314092706136064 8954769145986729654061522518802432 3767814776088098880593674041819136 -751448053682514701705346418862981120 9797925480480448839344457290612736 9274899522905923865512755511427072 -179530386100226555817368381483384832 2293532844738284207512024984322048 1679032808526600668086790063652864 -79698010763566734851288096451854336 6750787437668514250098850968633344 2826856889827057960998482361712640 -472615086103562242372916443491598336 8775810427611288372687265838661632 5391749467621710064617299709526016 -336101599355051119779647741526802432 3457725655203471578931119901376512 5379696346239871137508521362325504 -503557661843537021060807510586294272 8481034928177493484488009225076736 2075882411984467053349027388063744 -217079072841349064928176701100261376 9725650056364890102830390382166016 1031240127545261833371759945973760 -181091141562098335117640712251768832 3485385908367389977208548313006080 2103133133188313852159564605030400 -535250434623389133632844576711507968 1011372307956475947554899283148800 5525977550627363202648861390667776 -410616482028825706224893599401639936 1061504229568049390586396036562944 2322244702534642531198611899809792 -151330637840247533028723541376237568 5284436890823551318501332118142976 7001201417080078879078615063986176 -326244721813029628378429553175953408 2972015270285547037567185974198272 3298869383176701971462459282685952 -123445363563605560303385414849265664 300078150161785207030740980596736 147679133206112976442925711884288 -78040399309341182636555997099851776 8622508779348070016002811085455360 4482086672201012867958633469575168 -837810839031192572441048111478996992 1020117036822935967532742210486272 4695564170600542317495845375705088 -831336497410917531674871273908862976 655029251082559299830323857063936 1458669566547421466694403221356544 -894959879626647390799071807654592512 8442120545133827026600083597557760 2196334298287655083316597531607040 -794043649729231465938252496575135744 8442584200367315521519175656800256 4371988448900100730133600131874816 -587885631685032152036349733679136768 6104411081790184425849530435502080 9970574237768624390804904131690496 -959162811488796724239669388543787008 8986079146897272568680544357842944 3421026429103510064554236098641920 -208164942975029492175482026612228096 4070089581053000174760056152129536 8236923661301769454356976298360832 -167175707847880249940616807666679808 9687890078166580550692086822731776 1220766206650020781396254661804032 -877540729018443476277608018092228608 5162778570314189854172145019518976 1808881025965758422038720951615488 -919128970280949639624863838625595392 7981736269017836048306438443892736 9729742863448800763003117154336768 -690801676905550049795114821331451904 3301719668146081786548442437255168 6134636348240360149274831766945792 -24833509174406368173057810232246272 6189642200287307224506156124733440 971243139943498810670257849499648 -775923184072982076338605805111607296 930532293195957041180175530721280 2190696836374411079278048254623744 -412738846079327740123146336954482688 4831471429151531734218483460734976 5636993508699942363752199729709056 -522580408110775722313157417210216448 7416708885972836761774825234497536 8380425632646022034053482330193920 -717803888288320150578180401431314432 7753494064943278634586215362330624 6407407240844482807472686526103552 -588723482934230811180407755083087872 6376076969465348811118016198606848 9074610541982116223778334359683072 -219541479249634521462430023634911232 1319473711622072340721350972801024 5455805811708452367250852755275776 -491954044927452414160834395623129088 2672608742765318731551437911752704 103029137823415883902155311022080 -154823755590505660941549324520652800 6512010377860842670628788162789376 2246731641634136871994555549876224 -995854724615578390090022656013238272 1835825348403104002255232658571264 3141536256764651263533519348957184 -665700188052099573714108463353692160 3459060124544458320855765237104640 9796067628085463963383054515306496 -165452068014774007815882295042113536 769254648437134253917476055154688 8638247803849951509943762712264704 -833116661267358913674277471714803712 7193903796481666759642963024805888 6056984202031004890110895132246016 -14163261029728876036656444645310464 4562520502922150519895271348895744 5245301948289257943303248024698880 -425405099033851943039351618327805952 9396138568389486506671990426828800 1670345111863405229248740159651840 -237410655365096237917913443651813376 8007533861942444812370400449134592 1354473333494929120418102773809152 -294203393592163794254937769048539136 2517969106817592880588947118358528 351316700787972477449131853348864 -255878354712518768335893291532812288 6454733392780466425286882859417600 2782974555283624504378765642563584 -80394469275502778366567844832870400 9753793108599873933275448737792000 6133423747619799847517718348562432 -58616059743371278812147120663953408 2900108256855124808950495332794368 2491677336909095785610317119094784 -688279537864914545227440740565516288 3241786543831051173972679440990208 1181176997288451653248346073595904 -696584922608522768584551259269234688 4340018933947749635104096739393536 9252172234096907302769460714143744 -536547643508688396189895922271911936 3802813658117791736244290059239424 4530694593187276363318321012015104 -356766737568750569708320328945500160 6618909354697768406611184408592384 8051849710807968445428556810420224 -170815554244767230568437686130966528 6883801684359997306309813639053312 4020398824520846993116683801985024 -902673969121914307996981274777485312 4807357352998043236959239865892864 5208492785539962382702660108156928 -618973745437737623399428150972645376 5725975119633150108097874772361216 7351933653079090919679038521868288 -878422266660880895749824456664547328 3886667584884426913899940790927360 3838307965034636744750554467532800 -854978748254064654964101902881521664 8959389044809672169469797864570880 1210029228997237651764473350848512 -885597135253543712777312748395560960 8918956276449227295096489778348032 4749304810724155541481885272113152 -955902467291917280581789903642165248 5227438552102391383562723486859264 7119113440531594515584366686502912 -116671907618271965172950279789740032 1687898022968133140943899484749824 5360036543208733759878669461880832 -668715036071013557146857642643161088 8109844309008394864999695919349760 102786269207007016222260790820864 -800836489938110411035113232527261696 7535705700588339135875779104079872 4083102224754718777095282302648320 -806735765800305340682857216714211328 2755947411562852123482808238735360 1532684216404029284219701283520512 -557384052810793567489104317687791616 8323226171415111349298318909898752 4807049202768806847182513501110272 -8711185143705136376789426291867648 4461123033538320781527051478761472 9484422508191208289032169125314560 -862692049673674168493045101616955392 5759116830803202119648673825554432 102451613025536015221510327238656 -574842225127818569658550437812371456 9445396275769877333501821405102080 4684663819216964909323088186834944 -836099197532125707942300479473582080 7012421618980914991982736064905216 2568570139309793721116023005904896 -963110643211313611241444156540715008 8685281989709646913888394583998464 2351564834005736151794220324093952 -257378522600746667807865349112594432 1515930912319889733553983672287232 2688756461082943847098328404721664 -73023723062611120341280786688770048 3818481510869490118764846903197696 5457942112412118838540671096193024 -688210667699838208127569469403824128 8123329994901598729290808746311680 2593370929358309039866516988755968 -883657720722796798127206430830231552 9069931234661452208776034505457664 3154376635628025108653889040678912 -539741646179339398668396115097812992 1521783275525457623907070623350784 9879471555524735200532538805190656 -678467085881784731820550376816377856 28374998796673598725283525951488 5389835614561707786874832539353088 -699424436004305159302658112572358656 5175024234711988672303918204583936 9692663487986536609927021297926144 -141880971828392591595019327315640320 8719505001327869650776865130938368 6369174286471531937635536153346048 -183402328085784241084385281563426816 7822048339383165198278942668095488 1716857896466691053820092476293120 -221956819054418994643823394620964864 8240765640450593233034927402909696 6022896624447197181285821589749760 -388595653041669545200143468280676352 3693892888631182684829525288681472 3218528050787874399651288225677312 -303007590149404894795350904244535296 3334101175840272362690014699585536 9499876953306749247726430109827072 -710276556210732385978051368895643648 4307914691071621295515059731038208 4801369953307348173583188360167424 -338121946170024363222935784925429760 6173672773479698622448911268184064 3541638342665016705929757063118848 -344735470861013143531436382573559808 7077861863005163009596648270594048 1281237355521240791130285992312832 -118151086561172655160252074425319424 8214463235680832666774760872476672 6912795903305429079657533866508288 -442035880154377056712502997149548544 5202928897694862946966716893102080 5339585093923898965533381839814656 -883687054824922096362958849394606080 4168378547790002243628051793444864 8754564926702381122217363476840448 -667984751593526120746395392154796032 34946097252674232722641137958912 8525793922315827317196956551348224 -36699356742174142754302788737433600 509831405719107589144472434245632 3737748901459064739943297495072768 -132218311864407207010142475037704192 4553158690708299943270683645050880 4829623766522141081604220879110144 -605901034368350150514607116009865216 9468075291449489887652490971709440 4588420698009138955151430446481408 -859230311905669668531332469764390912 4661913200505357842242704357982208 1889911669565695981232019346554880 -15994296787847421865032859443527680 5564996885948380655553966260617216 1281882786875736952585628176875520 -44887794894967787009447196830466048 4816317047569471174071156324958208 7482597819904967484737374715379712 -165259183836480613033614073619546112 5638276639372696203585834599841792 7596253602629760682750378923524096 -785736872230135012650686741563310080 418352681951430836723753267757056 8902544746668498927838975173328896 -403423075528952683236065261326958592 8220640490479264453540603611840512 9333676366588197988253853445783552 -526355319437788396673258578270748672 1426715356162140088865970966233088 5973084792844975132895488136708096 -353485467762041375106496649494528000 3217028322615468676669125515280384 7161093597727759445920746836066304 -637685001503548126326736577135378432 786021247663052821098312333524992 8238130643561381183636181404876800 -498455229286690135893871271706886144 1656833013662514285164998441304064 9052544894860036366440632550424576 -255046680369266208961108487893417984 455199271104482155355628015452160 8656953725893244273155256824627200 -941011563004650385176463844587864064 288857140796738538168569867272192 3274438428400231519852823475912704 -65707732099916264249023120418013184 4436703829648670214366370111422464 8920240972899819283190094107770880 -909240996763683244576525108174127104 1061541579193520110996671554387968 2968231666491999395069283654434816 -983206087921593100046791887810461696 8000772269733127861286644115046400 8740141427358644493810468640522240 -497791344760785827782040148431077376 5359218842359279777589563301560320 6327854793075260911953465529335808 -847970854412888881644349097735356416 7771594146465903854124024117329920 1563550499413035140774837159460864 -681362317590131717283072182354706432 8933750898961612738990223636037632 9439336861684050702641830880608256 -921723441887278991759034494939561984 3517697438563455299996192188923904 600327338624543961775876543086592 -544488082005255807513946515960758272 8322307147142641473042845588783104 3143747727994415315244227080749056 -277056291748408766226383363287023616 8800577777822310954602858159276032 8867858359146237438532309900853248 -807497313714273866758692411027750912 801367231314960618275085450477568 8930835726876277098261886491688960 -474486247103902189153241778368806912 6382071818810421626616637495967744 5513119559971719239850880147652608 -61136180969149592389117460560740352 6850791736928466958706304975110144 1202413846581898376765593901596672 -171422783471134753025439047473954816 5939992057862552195605338418839552 5922421992426855341711590556696576 -707966654481720933242792083672006656 1729582893795028143587847850426368 8517787599067941733212851972079616 -198182699919739600415961870692777984 2399112176368896896280733914497024 9915576196140399164442075757281280 -475250976171486311874288608532758528 8981444870639525375818023259078656 5407291991617281146801483904188416 -220911570774596394061994395428716544 5678976838893338394909299510870016 6208708644370520984067638128803840 -992230827841954935249701131322916864 2370578626948820173967561894920192 8539633596965391454569313771454464 -656254502774743684119372621970145280 2582659644088726151124896949731328 5855829184163907454612789706883072 -655733327055667697175591083652939776 6073110137753411639453076256980992 8727341968667257730888141182599168 -577878006121776691766756082907611136 3470089118872321325128716891717632 8377745379015657166108730339622912 -198224543629507933819902102945660928 9324169074817684990526697653665792 1122740015181259415418237773414400 -634942151028683726283241841993187328 1005620749352387139249817629229056 2320261805369589125795375201910784 -204179460363796030709416495394324480 2946675181598091175705937014947840 6235611688923948103176020694138880 -436938182212528177031415526842171392 6294804198696366059598876487188480 3726674739377982232015322931527680 -488686511242382617134427127305732096 9748810630765345821927049086894080 9423227383339215283114525818093568 -49120244794934697246232504636014592 5587826821413745564547582754029568 2582776867678632603025391893872640 -917943773095076061139646394841169920 7138097565286651613233926763446272 6858676371035998266234682768097280 -613503523307390864694806265917865984 5364178762418698535901024869154816 1347593506076135911449167182954496 -156928871278355470007833199078539264 8700889852177654461438671793946624 7265565870510157080089395061587968 -798962532851958894336681685372895232 4508376907011791290221626306592768 9088803534614136831043193156927488 -137936061787614377139051925470183424 9593397549851188365218488353030144 666920667313228934518513451663360 -197815198653519542976576101984239616 3080426332542957432773965948911616 5978890179974982845891705464422400 -250990574160119025615810889858940928 5238715330349388221491733136932864 6957862172743729583600382033002496 -922190510570654951720895693258227712 8425857632570262236176002263810048 1760374390013370463562716051144704 -479524543965993888166743334230949888 3373138621856420236508177123770368 2186075540592265521182903254384640 -338792765462125462481079657792798720 2124743333044913189104845877936128 1827995588173591725285401446842368 -994117526552227284169628061760749568 4913457715963485560690793521348608 2391567437568976208279003516108800 -836615846582745359896934654515609600 3579806908824871476899247145615360 8452719884328785744892799355977728 -349815646703099569551923542063316992 962704548638888608495313059053568 7735457422978611799043711619301376 -196756108746315070825749524374355968 1449775531219427335990854031507456 4817948376766592061633325856456704 -724167145536115491087298382952136704 7718896903006724310402728112160768 4407780519834250653473876320714752 -42520691467266324343407915093196800 742928649697401929914914158149632 5823799747997123916088142737702912 -365510132315659306838297539090841600 6230560423342723471426282594500608 6891484694002505995871855963013120 -440786100090190774822907740759785472 1763388916089772576897972941357056 3076870601360097446080835701702656 -921395037780475267010546779738341376 5133056522303624773969475713105920 9167016390531869268177210314850304 -744617808866630413053938183375421440 6430869585747184844780103027130368 7338711376443091406051842902196224 -327976691767569104164965238192472064 7677751376916937142328470649438208 947012646060111585698506881368064 -288857085954502039103660219758018560 9362449705272002909175755587977216 703381046699775970639224600788992 -691688710713634969544805431180787712 3215277798792293299446202301939712 7677150044836481717259807380996096 -962466967835101606428390105257345024 5033592966188197044053610225205248 6417184924908038290769412299423744 -875250189312657374221569413273878528 1242627717926514731355947472519168 4883207848580376725471301600280576 -298923818160347423517902510906933248 1279630602681762146023790990065664 3980829201040110323509553621106688 -969407156534898997733929703249543168 4809146417646331592519304192458752 2075160947384257058346712789155840 -541086567748084157293526558426791936 4730255777330266196069551339208704 8805494564129090626362260741685248 -954273909158011413618677235637551104 6393988947342968443223468450775040 9541233369547302376355057893376000 -140273345289527135248052364871991296 5313830409073692138693746975834112 8418153173469173384137812205371392 -275524008852285523761805101426016256 6627335622297145397822717543055360 9843503104204696563495257512083456 -967287329098331701888099276822675456 2479388784355575718277586853298176 4365604608235752068368087969169408 -934555174092067138151512969471590400 4302347450649220901089600967016448 6882957044672293218509405695246336 -420917196522256547128977762862235648 6483976109464693867867014361513984 5687236146797357073992674497789952 -644535938372520936107280500596408320 3476621105478677424127323970469888 2339499656228142435451905096286208 -873052416598975989341843221750218752 2087324683898361922165694080745472 531608491545195944851689418260480 -205373913778304711080369205240922112 5864020732807065371854408272314368 6723426985574895054515742152065024 -145535775035964266555009437825761280 7945060400448168625440999017021440 4359222925896649965990138779533312 -184318630365685199611718822577307648 6050394621354093112661412675584000 7576372550863627150954788248616960 -196721128187223351183394011367866368 1609981279354342838103514724433920 2851248539359960064425572907876352 -88787220226088396820734175208275968 5395047771725067052480920413011968 2084677814850080310864123850129408 -527937139760778507063283880927690752 4244417524647948774819908571627520 7763421373186957607616288871415808 -500263097723407224353893035494342656 4210058340600365222482199321772032 8150425220258432729388002727428096 -268737262428606597098651674130513920 7669082995962366464147897718931456 8713169978793951439376855521558528 -894672524863807893380588252010905600 317115034222344484804377071058944 8225933921618678381693757519036416 -172556592876520901344615880347090944 3565958412137013667061076567523328 925259238535320138922155409670144 -459073592633135119047595654798901248 1757635212974289723368446365794304 4797329399814280260449298026594304 -735876392219405172613942473855598592 9805970366076324976707627456135168 302685778379144338437949775413248 -72451952853784059415247985223663616 8125925379434105162326725747539968 5032476271732653802538685259841536 -827991636303147480923636881506172928 9042890160205736961923139822944256 9597078055631908751124586861428736 -298999729062559031447043200910360576 4642322624211757626742771007094784 9266101886540979645002529147715584 -729672149168907416841762177321795584 6254132139975055883925669646696448 3942757188848087621797803890573312 -904317022633297137282543821648822272 9500214490790363626664477008592896 3580978879364331208867544838438912 -145109817956982159563383410834538496 9557171735864293210129430663397376 5253263226660375488021148479782912 -766855821562025295764864681669296128 7693095524618800534513853631823872 3380832441439636300640813106331648 -556444278181906313008758626671656960 1388494367592810059357930005725184 2436971255252331031602365424730112 -229046211669158368594389824920616960 3110364313384095452147346544001024 4008494687225342328180448092487680 -490703890065360656359727098157334528 353874209164444732010536217083904 5706752663933803923311357304242176 -929648889827615787066128983622942720 2615717556088308849475342995292160 8381370785240121083898174271127552 -942438447235238369443326409891119104 9926259091961321211728753447665664 7867897365415824579970552798642176 -760134662784076004208162740230946816 2546968064538092461865475678142464 8484996871027441915673282586083328 -320713964404505978275704801534672896 3801886092740674817042455126343680 464358576215016991916911176450048 -460934238075688990252646456178507776 5246886843359432665675962123288576 7056378199970598607028750653587456 -888076434401952474008070220679217152 5829788358806137313728411471970304 8796275858229858414337037000769536 -332633569210395833120160814777499648 559297778908176971360614528057344 150312432283795007885551928868864 -302397414096294537421256145021960192 1359031926509869230110496172015616 2111996428796691590847782086246400 -798644928165273981925020396781830144 1305875539309828621984354845851648 8697117294764489265668928758087680 -256698657786559556385820988550414336 9357333801224151854049100080087040 4470748020173897523676545177092096 -979665123611939562360463522525085696 7527337779268320015774159145533440 2660925289285104820366950503809024 -437339357163104855808519380236500992 556815355122279682552322693529600 6147854863988335520415630971895808 -293028797074698038631455525030592512 6505492466232771079748316741763072 4672312930765409502465963382013952 -819876308216870254547920683330961408 8208872439677600583459215108997120 5813058711656403341299675171913728 -672316229106578518931048250577256448 557587753132411176935883683135488 507803690803739412850424479219712 -507496521039491912023185023735693312 8487038597956661932512384861077504 1155476744273008768020581495865344 -200531769043683798274048332104990720 4533548996756611699800787489128448 1264232819847903806446255137095680 -103354650403380467452032196108353536 9693019916001788918993775803498496 3064020479430995224335900414574592 -870477836854979875931931961924255744 2109573531728357228822375620935680 8457434481250837974732628299874304 -46800090349893791416585689227067392 3396366151105940644735435350736896 4396619899906382191743154088050688 -137138548942257686618235087689351168 8368586362547794236118487460216832 6265277822205022143260292439605248 -327012446777620592254116081814208512 7920322624780622554314031465758720 4848039008937539801312745689710592 -599023773864428101987737427911901184 4804676738603334272268561683578880 8723401478328302180014854839992320 -460140080745203036296496710259048448 1842734421885348293672762750271488 5088750990580772494996640968474624 -370532056151513708456711722121560064 7181712362815685314903468190728192 7064008897714446386749663476711424 -231408203228884853466866738123505664 3811591538179070496815767267311616 9190797009412559127272958118068224 -366837108381667618834310768030121984 6106500937605467385580811865554944 2356115592026663831509977830260736 -927850475906048562916629326260600832 2487176566695364103836131743760384 749801259244881124682194975981568 -836384066901430102453409990416793600 8388784518615146871592202190979072 5448923167400161684661601573011456 -905304307968716248204619604354400256 8608732673237740586225503926484992 4503792885681030031316556833619968 -663653234509976292504622115210657792 9020562405536908207624303172124672 1277673328830650734150767582642176 -172723112934559849613270439203700736 2286262044202629479916482160754688 1177988461015795047187210437656576 -432560576767886646515932137852502016 5532195542965297190065101948846080 3446852311727402667744800553304064 -462446424227881265069511499069784064 3095651147480248399426818527985664 9223742530241848983700855848960000 -691473895083027040769280211622559744 4594079695316485159873152016187392 6030460533108200065540010046128128 -85078579884851874496011553631895552 7487274287365041484951278088880128 8296954168571716772397143392518144 -380533721195646738724812003792125952 5879239534886536952280401649336320 1815434399066262304170770578800640 -468816103283330245091823349215002624 537329267539900031866382992801792 9288326520225890619154114159837184 -657366569354303724647231017132752896 9446447885058931763681768184479744 7787005413334837051208101512871936 -254623659381932693976256227380822016 4732498209301273319577800472002560 9547321036547475717345796098621440 -594862472491339698202355342975696896 1872486767416290738439056412114944 6894490106345531037313518574501888 -981015235099003023884894312614330368 6406833412521982311868563210633216 3182167003869518566938581563080704 -640860401086292154829598088331526144 7858890301876162827001746390253568 3985652733753363275266355389005824 -861212405767426297295490859178917888 3854670188543514010619211207933952 2048373017246069552815661253656576 -842294239409463359779886648323473408 3705143004316963559608529687937024 2518905586273353251978307749019648 -337292936331445445445657865291300864 4658643494662634910199493194416128 895174089639216041915082602446848 -404373632087522075749733546921558016 2983908112551337547666816604569600 7631331526584388457084197516869632 -342004985382747474466433755670118400 41549811215691437295524265328640 4568433774386433825614936252874752 -758112746092351584308205083542159360 1746048996601452547316729505644544 5467603773242648857832037675958272 -711009778930003914165580835726557184 309512015159910230237743549513728 4720694591016988475896775024050176 -49533705761375707906284828053471232 295064465989095321842569569107968 9090299297743153649106381350895616 -653425099473822652435802524995289088 8855151497088321350785751989616640 3848508855434849780368668421521408 -690756470315696462967786709993914368 8825335787173505213862096396091392 3695937099313263412712262279888896 -227780554367360491576261861011619840 5823731070761238285619711845597184 4455754723567894401763046011699200 -451459524943536599800332020747337728 4790685025090045478515862675652608 5433819525834097873963003607515136 -326184046673692182049445764915003392 9550318022953278822314416778772480 518302946925904504398413882720256 -495359490688599552854438838179725312 3838513967510382785669395925434368 9550432475751854227362403602923520 -120005940630780219204837625355567104 6564468915797538389801527519739904 1816921552021374840733965710524416 -771148234891075603456144038472712192 9358143958774679399862736634511360 3914559497570563234163586318204928 -929667212888265239512356054416490496 2719711387891686092248506418855936 1495332789226336101191542324068352 -307505106502040200038748380693790720 1160939181318014602591223823728640 4705750537718404652490180840652800 -532425612436527275637050099959332864 9809862624727430170367564674236416 6797147722894359219131989985591296 -536656290803348318026595299129032704 1622399902491469290385384497217536 6500303130911907320500867865509888 -493555923033748368967917969835294720 1953802481596401625277487741140992 2657248472270738044097025372323840 -383715284028975407925583182997487616 393659671831205224089913644810240 4118935030175957030328612419534848 -821842681262221170121966768544022528 5521504328665554837166964420378624 9745937850985285574382319214526464 -992380143087590568219249349704548352 3155315394681282293345434740981760 1627572246195176083178675287097344 -643180875578699830383429094813466624 5030333394855663466851837780426752 7684717336754903594595962924826624 -287293902609641309978591177927032832 3213433447298647648299169949417472 3328895640948405982322148801249280 -487890834340736846094398564956372992 9005119573169671503350229119270912 3355790234989324330844239498838016 -191253794458264998541030720989560832 8429450734901471671242837108719616 4433599520775882469870196133724160 -883364148728965494960167125424013312 919540389082796567531100575891456 593844682865329977619831465181184 -528118839756085087067644471753572352 6375748037499025650061054845124608 4727199853701896001724987595554816 -549842171070385927931016210588631040 5119027139842077120282860315475968 5785751536982849011235325000810496 -589765563090343895838216316249964544 2529871099601704220876678285492224 9401315859680235186450685195452416 -721699696885499245375294675150176256 8744216410785897374722020475928576 6895415656192531243696970165911552 -432335799023340983118795089983307776 9409044462252950498426895946743808 6460912716916208574245543971127296 -791834023757750109421151020080168960 3458862288595165161932438437363712 5966775000576340185099135826788352 -414348155205641751310615059007275008 5958943158799866962823505258741760 2963286292686023590319305313484800 -405860299095791504466200458646519808 3148230723702068938821636578082816 8095826608364407551365394296995840 -700762130664497874090106762051977216 3988108697685192811963994823720960 7320692191265911087970652426076160 -886259148260575126241143774307680256 3451353451862716311542053820432384 5979187632378525979117575477395456 -490044501847829632914538485036089344 7183484072030058736506104348409856 1517312962493496511767201584250880 -763868388741039296006959839431360512 2206997749418674605194172440772608 9356360240710929987847142118522880 -841866002428416093397085501672914944 9965635326572746536840198874988544 9556481638711852295472607767035904 -20717132678974510230401176548933632 1930217845848698746879233088290816 6747732881767445183096366364098560 -624013872563265680294516985679577088 8729005359213129711039914090430464 1907580821872663030648532121944064 -760872654008567834490394112572784640 2487227951461764873846830439333888 4629344978416341533974283811815424 -582194154641570296050188104071380992 8345403962662351245081310713085952 1381782416240199397130382648279040 -307316705137018390894181517535215616 1011226645767327636098370248900608 9190468487361157766413688953110528 -375874561251006859154337005570097152 8438428945426343953993366524395520 6650161127548793580272461249773568 -22981190643665663163539329529151488 6649090317718540937060237935902720 2499307317780869588379789682540544 -774048752363456931526609087959662592 4902386561113413783458911130484736 4378551204301990045065793769570304 -186167230088875402405083275155472384 460162336533425545009692353232896 1556762404303898025685152920764416 -838219788974414354687467304828010496 9192660563051601031392326024429568 1313292655942273402760349853155328 -101095002866309059425506114471460864 6071841298579943609400800250429440 1931453707302594043802060998049792 -672536487692558868249033502340677632 9099998616760505181962582842408960 4219928245114997450681531758542848 -208542466770417379042209183995789312 3205230870745571565074724985765888 8344532580582736032747432286617600 -866629879567079700359462095897493504 4833868891799222105432920648843264 9254626483350946291270034007261184 -2172256810042409864238424423137280 977110918226949181654768480681984 163869337473561863281548629901312 -290399750837397689085042634845585408 8139249651871225871813604183900160 1264178980560546546579721454354432 -263288045658955797047988458878926848 564766921107785443886228333133824 7002897228134842820479087789735936 -836655261799652621117053441694236672 2916944853497846723435244692701184 3536495981815510760643476515192832 -323780914064296866742301486024228864 9460012741858349752559590153650176 4332330167805776166574626292367360 -307018309582491972148739905335328768 3707583239952948344168347366064128 9197757393935329851303381813952512 -975836522522313487349297823275286528 1809901626967187522836033987149824 3191509323847084648799350294577152 -65822665481080528632944019797704704 6957601862757882572820131669344256 8282176322759691374302678772350976 -841719549364097147919175895257972736 1385625123022535652050360097308672 2624658915890567832747281378967552 -70668135820101628348610020642914304 3239925833105009696634538085580800 7225803010112478218984782217347072 -442524737524223035566843971493691392 8464921698101872075981825599602688 4461921131640678226197926503251968 -210742155323352653418429938084610048 9086649643641076664196183130898432 9908564546675265264032428259803136 -634435153544401901330994328760221696 5898519405076369534109750881419264 7165483543997251111928133620596736 -782707193606335652106214586661732352 1520708457606063519765409212399616 933768903099267830517710798716928 -348597374672165726774900997385879552 9382451822950964848367780300324864 3793596000623071359115999978717184 -558788630486225259310756592258908160 4275835584816226958716027904458752 2075749523063147363962287418245120 -391506441170129556675914990081802240 151001740442492799849396757856256 4458645818198447526810402326315008 -739242443928897161133905771967283200 826742310199692631787574260662272 1058872378048365575409954705113088 -915979092297200165756158865141923840 5170198322651862193146967619534848 8617596613596520616093434022723584 -866385951885861540957738053654282240 9864850794308647814202320886956032 4355379281220613919027639833591808 -657369338289652007337824011797135360 9890976048169239437709151901319168 1229358813769646536392194375286784 -718195834305401647875545502289231872 7549093381903299618504758710501376 1815416389724706637295735791419392 -680439730138534618193798293545287680 9950226474387413353481610924654592 9946999351191475901163645945511936 -808490447628249376744298410814734336 5525232889606465557949693902716928 6761733822577338691736672615268352 -529425062728319441672108247844126720 5929020002093404079312963442311168 1781478385722226578091949902790656 -49633525140517661192121549869547520 7503972666816382514671734130475008 7610874038418231611581515884920832 -820664043434766600045084562167955456 2821371692455777203819887475032064 1129973885163606546842852788273152 -459024915057705536878033089471709184 1931500086174133034642805742370816 7885786024152291054107997497196544 -66248504939222126097754229875671040 2554886523822748013548683564941312 7003302259363725200491942179241984 -861904891215013940797011683950198784 2215190549173493577178394048593920 2047172288784579101191748219568128 -298015195027375301561942906534625280 5993973115134029380344171034836992 7498591153744525745192817729208320 -354572276354495467339625047535910912 1638744230222017091221138656198656 5003141985452576765446585973735424 -846942672319636394565990013609181184 9847385668940654542746908952100864 7550258636526718933803439220588544 -803230187512668312966598436442865664 9131819784667897948083757107904512 6849318296739084190844805168758784 -65790057444566865705428375855693824 5545002907168168587643853165559808 7472204579882716786012991816466432 -897498047415957324301063660356239360 1162336276647922331758361751584768 9639249194722812523068166030491648 -579558633081404852481405586121949184 9919051614367982201455654173933568 3875284729177282496666183076413440 -837766629698864933299286253642973184 5398533063447871196996846649081856 1129192037231044104639941047222272 -264590306911808024674317308224602112 8360000617191753912155381134524416 5411941161078963019923484445769728 -679672276760918438706681983994429440 3182601875157471947889266562957312 6914600163614174590656196944855040 -205204687655219098993168881534631936 5590580811826060635471095919542272 6792523774540720150263119678013440 -486147507831831450496276024684183552 4609919837481818592486329075892224 4623943142672902108550609034543104 -13157314790920590711910334948442112 1701044453647515613269170015174656 5995069496075228695882607779381248 -796130345435647833440337282658729984 6928870508068628131902699023106048 2284586265728563411433798213042176 -482959535001011199146381591170777088 5503671455677302503087419930181632 4918764778433730291614595468492800 -620540951382406616891225329297784832 5947532110090397226348122675871744 4203326477939308958864118344843264 -422964237935009216210987034859274240 9528893418413530898345955866705920 1054379774361086775631283987939328 -21167822816097953882811735635656704 5013928587095800375474866622562304 6369332327431636904491398754992128 -444133127458937388412729272081317888 9090321837047802180162500369055744 4275105786319145959883888320839680 -211592986968492391677219186707267584 3662718998789768552100105199550464 745412768242414411158860880412672 -731111985585488505406030871267377152 8642508909124618829550807800610816 5905946254013104768680477702750208 -861148033595663089441317446551076864 7124949206616874235619613379395584 341822625932740365987371984879616 -146623270498604122003413173312421888 7864529301939541680356285933944832 1877218509512069433514313765617664 -577151562212691635754636695287365632 5154980011766224558040921141149696 2955644626944275000279422780571648 -160402693405829296867274552546164736 9369319433517336996623483060355072 9022875567058857685718982824296448 -261690922562778500646897859415769088 7076277179799375372346745254051840 7665163109228641928121078408806400 -808365576523603024380216643151724544 2586653835576519873071435646763008 5972115665597882711073242245758976 -971474081064766347027517571204120576 9735471881144041126814575784624128 3681691298932135463128171869634560 -670506945994572223276121135566028800 6624847119636583193263457808941056 9272910259827733911512984827461632 -420034973854832858382499290831388672 208467742486283393198077415260160 7741365977190706313028373422538752 -182331580447287361856765770789289984 2821688858117230070439905394163712 2832856075741299971609581238353920 -578041217745333003949722135112450048 7222900011038536287167953443487744 9433092206784901328536337375035392 -933216095421604014076526935832264704 2240065726859187113989416540962816 4413503616868007943358604512329728 -272363274098130604708445807334916096 5526800823739596736574683026030592 8963568563046310672868864100925440 -74450568797769581238494284933496832 5594897180974995880031165813358592 3958292869550540003652684872679424 -428938972461038813480226976581025792 9564526399983064019933435793506304 5709952154390508969643532674400256 -702580321282629176259298968198971392 3461145106498569119313429352415232 6296345006702152069849773412188160 -385849778444267331447953350102876160 3957263084298261049821237388247040 5042084194629401316001540923719680 -773255400133869603255876151779786752 8417346901131339005398932632109056 1644707589242871091367706376536064 -685956034805022050415142661531893760 2960335329044029019525163006296064 9358524183311067018630267920187392 -846624733015415152830592214865281024 888187549167111692429956487315456 9464123866845164278688525741719552 -490769468356000053316330818501607424 7858441753159208469517715906756608 211223828259412968425621538471936 -387728836503040256485690968700354560 1418439655293197713666957671137280 5609849612664420247016838040387584 -549385940447234346558303443145981952 5884748548853618222148926738268160 933440009522086611810502798475264 -965541050242668227094246970919747584 9380775606934271663130791909523456 5109884335154867106295639290413056 -23237025097895068856059697215569920 30361535577500419822333668098048 3486321646375785790538328775327744 -597705591518779437647709497488048128 8201451052492832857670791599226880 7306706745364598824224936983265280 -738849139046549730514938571740151808 127729216915000120410400450674688 3067011066191131604940448589676544 -463799590662760969125219521156612096 8746316264421063549014982650757120 4712646332925132997663728462725120 -581326351740768472307101021549625344 6153464212729951384208653674348544 5803805879727723891032441806127104 -141673287565556519385490939009040384 4841229243348195843964704024166400 5787708642015328199839010120531968 -948696024265560864135428207213019136 236825570084726495387451148730368 2017574866471918561500436671496192 -379571169223305074065736313675448320 2781921311147476416767474863702016 5994761459409219372639142075695104 -571669360313809803713842007465000960 9866603151029455022695983026798592 782830235346562582484981464956928 -581839716587101171860890441297690624 6153006601034400309908872355643392 988641826231553360575037827973120 -675374671058478014730249053237411840 9269640903987916000464361467412480 1853147804999109196399722742415360 -808566397170566809180178137017745408 9379666951628102443490943269076992 7313117323764248429208773628788736 -681869135337819772768967094028992512 7620367898356662623047932704718848 8791107220158770319063688847294464 -44208258408170274836053431548903424 1314504221972173086746954979868672 7334520755122447450758621821927424 -657500946339175914497461274206535680 2132033995738433797026523262222336 3731082123964499017042451614400512 -243116283203536218819963352772509696 6930938371028503103785766718799872 2140393626207334757539157968420864 -247278697609792037821944010020749312 7562398607199802487088829146595328 9466961924995957311949317798363136 -694767093903067494784163192286216192 8230974280562236542527172075585536 8574545781656205954737758783143936 -387853729077874983989947556907974656 4864401260074120077895005470982144 7378528453758736999883061032124416 -179387370436196945977238763805343744 4356066426397453006719338156130304 8991959230225809004661473437286400 -237927591647927873070352439535730688 6163071995883981192477416687140864 7109937047106938500134018861760512 -777628544395687535742302811238432768 3390694747399933765094460641771520 2790377243882467038206197904703488 -674677605266962987708679371572117504 9698499970943889153992203643650048 3162359348039670676477691325054976 -481569003529623212658365013879160832 6070813984714885945078580860944384 2470897420828269110597480234352640 -491164014017577390879426752521699328 6670264623906176281936554597810176 402103540461414698379600700899328 -804094125614871851275570020224073728 3164320591590782615736716007309312 7774334632924465829475822969290752 -118626381095566635691857405569662976 1634322894981881363899721061498880 6589169661162403032963365031903232 -13768662767748232915276714297262080 7112997031027446053072772865720320 6779773166264079912038805331247104 -266394143393626536830786875166818304 533127570762955076544490868047872 3302887676694567060815861807841280 -973814221067721157241979331147726848 3191474616031668075181085544153088 7137525222911291222202546158305280 -376950633453903610198828973228556288 9254019291969239249373524949729280 2628262903336566740149267597361152 -872536656684808840565103318672605184 522448689136001294953216563216384 4037981125932367629421636006969344 -468983205010748433081220002981347328 3479984691194862780764506464190464 2667704784981775288556099309928448 -330137480067599080215764018892111872 9029969066181188418998016002752512 97727578546692187039143215235072 -251388311550146774733409020037562368 173560583609007793372051537920000 9720794473064325710696075929583616 -836994446151198417958879518580015104 3868610069142322662664361264283648 2551378875427780507754658877407232 -283674969707486053984851881237676032 1460937363869815342459990180888576 5869071849488335874284792779374592 -211149205682429941123590199472816128 6571303279267401588186415884140544 9841406598490217707812151065837568 -892846239975796831003644568082055168 3268941710320997152666882452488192 4127326416484671296342506543775744 -783013696011035567910740612031184896 599313693031247535212415951044608 5298468975007173356947576488722432 -330833586021949665553480720393961472 4976540603942993757226626808020992 6836294454704613412322465340719104 -865297112288384693671453424697212928 8503304559192791105011834473676800 1848571108998065023709770894278656 -472279966987265159190982818959196160 1596073159251960843408907754799104 3225394045772887355326222324203520 -641312308237645064196633082086817792 655760982226647835224849583702016 7308201974254029429188090849656832 -260025636261894963847426133473624064 6528332778752829310177129967648768 6635126837044931921066876276310016 -566553717174160372562453026387787776 8941324346532982119740161103233024 295029090452185825402753319436288 -616836952570459418400240109436796928 2880259553476214434935638348267520 4525766152690639362220207695200256 -50547239746344144914987464018362368 8285164550091634915530448190832640 8763549787126446995076708695015424 -725544763012003558766884426010853376 946387945687922272791120469557248 992524608936724148851555069591552 -645451946520190865311885797934235648 386146322001929390035748473798656 9530180557175426487339404985630720 -465993171630458391072303152854204416 5031529720731139049723976461844480 100858060235074591634124238225408 -633689481792977248163661227598282752 9069437082252851576665744902979584 7884354868809782048568522869571584 -505076892872875640204409810796412928 6412435633984420127976991670403072 2219225227947258310574944991313920 -937476368902691062050867160727683072 5762663927236865802581790343299072 8157586082540552488516020900724736 -974033211579331752996815630430633984 6013780689528978881334766290862080 8047053539057539423645610757062656 -195137391110171407566010003352453120 8120029730523529897114506176233472 88975389264414240309083029635072 -610533539590643782088344418098610176 8387035612772802369759862931324928 2401104469649187816301668446765056 -382530455655796498105723679601065984 2644680944877974796869087407374336 8343414699584161291081540029120512 -379544651136916066765835106437300224 981168182403530314027126671540224 7073559814431431839888072849227776 -22761371105896671644002246478266368 9823399531069028535979776699006976 8444428126683970018681796366958592 -770777228283861801778617388156059648 8667121526458871610545689981878272 690433052226120561589245033054208 -847795297577982516617962999133503488 6520565821039895160482747981496320 3936193827084938678611591370375168 -207222877564306312895622730880122880 8899291731590611409314623323635712 7347848482938657109716938080124928 -13892060611491191493038938882310144 4249825592822621029508752737304576 2119713305057879328865435217035264 -380045767227486733798289142922084352 7081092476916919932936657823596544 9678660319782136997502511409528832 -361282112018688644249782418543738880 9171859762431899017856579574693888 9870366072835291743320485650235392 -397804128102372194786406993621942272 4973261024605052599984829342154752 5925070358183717574489122644426752 -457543567093820809486778561718124544 1797873765082535215827584213319680 9477375073274240894228395032838144 -286248498678744506945604096488374272 54365818920115057799844593664 7036765713704701741664421904646144 -740549916265320055132060021130526720 3485003801782789364953998283505664 7455694376198050147192858405240832 -540020549204570113060095743311740928 1861438931707372695635933878288384 6293904081821796895512870818676736 -250507430562488461524773403478720512 8763240154002482065641574296977408 3831230290905112165798082143846400 -72345391619621696892033203710197760 8460759473938915896519798275702784 8934783189489628825985725702864896 -504380954379761351575409953276428288 4001901408624836481744265193455616 6621133281476772566075168186695680 -149049339022795192314513157066326016 1345900683781916978847572985643008 924234824442872583240762630602752 -329651740820807411325885421266665472 2745915496388115265732740380622848 4293734370353856429779412217495552 -608075742201429099285030194294816768 9557261179419214048968602942439424 1031609764766769967825103953592320 -518838073385125643190131253250621440 5373605420306946675102672029220864 9715648509383989058671775018123264 -138008364137901420179901395910000640 885241176848442595837287667335168 3047961371180575456925385085681664 -709878480063156901997855563315150848 1777971747342630550112174356824064 3065477250378421306641969986928640 -21432651267077763036706307705929728 8595781533394558816450664678293504 8186351417411712756191948863176704 -405601298363051989168638606801108992 7305098480554476833154412159434752 1380833568774921590208214914301952 -641119364558929536786243516803055616 7156414150664379455106611241025536 9194038918354028476067315839926272 -185896772976302073348298471066566656 805944073163547931830808517541888 3073780579329982447747113070624768 -471003202333079790985311108124901376 8347142855266760969442475626201088 6367156036740658514512817483153408 -732404705832564987547696566064119808 9352772319198041432043158838968320 9759434005973530522217708051759104 -70846598081637584560217107854262272 9025823701601700741015314735562752 7553898301966150857659474547572736 -317382677637413682224091341418135552 3600949293406472857919300778852352 8124761007448977888261103742353408 -874061857283424269594719197295804416 7382823930659768818622465346371584 8166252360425284934579246153596928 -873975183771583786373762831295184896 1437467108799016471568370859245568 9586457870287217933695407573958656 -274815039352702864592979368788099072 7851586733881124411459507532595200 7170456753093620857009649922080768 -693617604471516865328186172727361536 4478136386593337942712423947436032 958242409842406303920893554851840 -398650750366414662630566554473857024 6694881302980777640656893483417600 3511480827766674809969960745435136 -192904993154991328020577308448391168 4073633856096538123650109074833408 7857684097848854225929856979304448 -166137246353330779198687482629586944 7174013479029787579416328284405760 3874324537531709660921506597699584 -877349674493714150997205678116831232 3413008229039940413896519011270656 9476575381766340561201690597916672 -39062529580708337379182833888657408 955499585478526614276043129749504 4046900759999014037238387033767936 -944788243409737347977255223704944640 6680946701501450462924897716797440 3331614636506833567357771509137408 -402473132074913561240091570064064512 7125420592438387688641479279902720 6044759954807471313044263730675712 -299325026696210651318996387296706560 248849224381487660265425302716416 6630104307862858128087819831214080 -539045796166726509590479473186177024 348424404196338379011541744746496 303131573171031187714969582960640 -710423440813371723684645797982371840 2243220972194308571299517927784448 3419915604710656939157743007170560 -263361503372914790993041040160587776 7939890155157689883449909904932864 7666713591230897347060652568477696 -25702535524261027801867565848854528 7825410110672184157312223727845376 9047689265461304106386629867864064 -804363984498020466030120658083512320 1242583337718827221334628734337024 8016619924517273731208105366126592 -903910863560807907875803503217606656 2279581673766373599558048910671872 1384664478572270669220301997342720 -411973935285273886836946968718082048 9234724622220023553941357606207488 7007306577652681631134044339044352 -968116432937427300388584927235407872 1016127992420933237311892711538688 8071836672819815661429992433123328 -324183122457434199473762581279145984 6491676436151975404921543425261568 7959441631811296579409637934104576 -638145304566903547110521660480946176 4838273893986451492302556623798272 3322990747874963220181561940901888 -890628141871586149220079400237662208 2623243166468701569064643745284096 6360087074138613259328737140277248 -924459513551956919627119150871085056 5611609715235318308635479654793216 2020972291179078802958122324328448 -166173940630085931065264519113605120 2865922927999015607886880364822528 2511884436286992923925219607838720 -159726389293046951920536431557083136 5113026790355894133076241974034432 5885964546545448734114432612827136 -83030865562210814875650271274336256 1090562540530865747066435705765888 6262401603912136881206389398044672 -170793161808857474456016260639490048 1169478966874680356989625796919296 2779397471339145757398226759057408 -302840500232148542809095980279922688 3275892784664055859051146692788224 783031666417661243152334130774016 -512011323480077064620009224652455936 4440572723060453229217106939084800 6163871770274991134105682548097024 -326781186200319072179030870944907264 9375638029353800183218811235729408 5793213242634956678125927075414016 -294865698276354565401226779509653504 1792297942113931821233478517653504 7317526679386912675535408745938944 -77142807308029479764009505959968768 4892553673087612919019787970936832 7705631635413216709714157745733632 -401982171779588607215098041162792960 7040025836143088349232254846763008 1349959654927264607344507427487744 -58703018032352580876100075392073728 3856728517249633820243180499501056 8010279203791711209485969909612544 -291458693068614431981759988058030080 1479734154054935862602257722769408 3917701271236246805543355494170624 -160719243179765309311612294698893312 9294785707943996883677233863983104 7229569788055086382849392392536064 -543093169086327580544109688083447808 660562348609248376936320267714560 5026455820596515703860646689898496 -989220133843727402908601092644274176 4044275630500196506748805680463872 5689695711955815242263009152729088 -326098457214939385953524256740474880 8435424934543149062739816964161536 8486582274157713941867455932530688 -70928586353680314179824109978910720 7800536626141406475960104421163008 5478906782613061130749931308449792 -778715277537546087784610306981888000 8721193861631113260986452550877184 7619211921628642133366662609502208 -413018478754861613796418167448272896 8999023058107702401423895051632640 8271995919349068416240427298979840 -641037138895070454353408094373937152 7538981700222527507204548912480256 2153357622201455190330911934644224 -55048330600421995288888772646666240 3475643475516079469362905593413632 6645560370959230538633417072836608 -30599175732265743427243138871197696 413180040447813479448746079027200 4790426471223547278997972987150336 -40193857892830313176282245378342912 2355846384828439609347475635175424 4651701210073553225487779450847232 -767523607536757789612238550790569984 6065001269202752751487048900149248 3092086958075850978388888095031296 -373805142437709584197092470662627328 455903239079847355326432857292800 2223557036749365608068261942919168 -833462878380953028532978193145004032 4028380494632806161715230993809408 3798811278580666692569183775883264 -198811246113887676735958949304467456 7331341283432587330835552950812672 3654051965643821195542002864750592 -865712205696942586054662813890117632 8871528150235000632925287404797952 2389222727414988599108472617828352 -535218334185663082762001622721626112 4676042001370617296392468041826304 8588945091430147102365440089784320 -350982791805426468300923842387247104 7252276416399269022300459663097856 6836329699812030646258860612911104 -343799798887736293180137154344386560 9145288523437911791596579542007808 2679792419180907062661843674726400 -120809049017639757166721658158841856 9154437964210465331487695607693312 2656432149910023111979832132501504 -283403047309095968053650046092050432 8366392589045823781444296596520960 9906934436305489068649975061151744 -122217122983910905575714973573709824 1487204216575005345108508761128960 2069047838254415674472515416096768 -363745500344199076860576423217201152 7528391123153844529253037520191488 6399216662379340756606100015415296 -931286527678765894854299127300227072 4994656951053465542141892448223232 5291999674301756465546447145664512 -564590362571072358609763927142170624 7115765065737930480025731667591168 8169210469816922986724820195999744 -123106961927961701341055710174117888 1814009499126076363221537015201792 5628015198425698843280853449048064 -407208395832941347638293616490708992 5126121882367043991540878190575616 4479854713981659891613567864012800 -592359423277082600672818842096893952 9659296077949093911947002140164096 3609166862912856588506298960576512 -862727637817280877480970693784895488 3482424231481651739875560659091456 2039874374487215456222382150123520 -171958797000051021471194540438192128 7742447707472475491361841041375232 4096987510804955547009397746040832 -708106888630108449754019476459749376 5022696229845103519805239749246976 8513473474179776527399250368135168 -882135038637807273593996149870559232 3665406060376522751745058257502208 344247736581727236769953467072512 -579339412848128315930877357377716224 7300072113706093571837571834576896 7234104707269356114651411371786240 -853907664313091638727178680994365440 2940821287951415946873863508328448 6285573606824211050931770082983936 -934497310218582786901887820048105472 9709187694527814341711305811951616 329862736621549502975359410241536 -963023941634201638807693398200287232 3817252282448525053449322446716928 8581691190471302732036480681639936 -519804749627942572722958932935442432 611220413828986742986488607145984 9457017784796514577535778183708672 -327008946346769674787681654592765952 9701764852076021663438829613219840 1425611768111064970186089381756928 -930814532223764164684581947618361344 234732395424672824791786726621184 3082981929795300878736413249503232 -851548469449048846131832714080288768 291417229623032149357610647158784 5149202522891043741179699263438848 -441609668353401369051917862624559104 7303339090199039684868303287746560 7417403772499139883320635786526720 -696319999386894377859257750834380800 2421078181013223826154981550981120 1788884016983445964568196311678976 -907073135986431403782082032362848256 704014602842787834743270206865408 651459090261897152751126859218944 -965261398856953729547327019723784192 2598108724149261867916722176000000 9014829161783312420937036036308992 -146171209076180609117322341588664320 8362201978486620631284670814748672 5836231282540593899892628703412224 -484582920851711670692181040359800832 8650457428041759689901284939268096 5188476284321368024541701861277696 -989353924714272904766459796263010304 9353731143116313140445756178563072 2642110191958517780637555623985152 -425904882334551909716292831916589056 6938432557101520664049677603176448 3949166011128387839058527557517312 -258180634805147648262820416010059776 7881855817223481869699264983072768 3828942574565245177804957853679616 -792452225225228022245724811096489984 8333141994287564351567891517145088 9675414955461579852158220472680448 -809378433298412080513352405883027456 6701936430096629060020004594909184 2285946669997253640266422455107584 -458563252984407770955091495358562304 4345077899436884649328670962352128 1044071116398223599546110371168256 -874131884802048869185730916294590464 5161449482894472000881823942967296 7969340688744831493935041209171968 -457587514499199982016074406695010304 6861710496807085928734588420489216 843504470054654589534762990305280 -579246808262440472406580185184337920 286727032530963760932603935326208 762489973822724906718634061070336 -524851462187285239927353755714977792 4103540200765914475036041025683456 525340037072496741769728900464640 -795114753150516970003526897331339264 8391645093099496759432160831602688 7342998167996135116144439529046016 -516334769448874983438379718547603456 3648713583272189065397049254477824 7614103643762829429160047347236864 -248816520221811653203370818259648512 4570830730422237535678428333735936 9135527946158942416452597659467776 -120342109909942692902952970775166976 2552084574947203145246150068535296 5716754484139324662613173006761984 -656630184801469382940650916584357888 4136768342155048853215232403701760 8004715257638793034486981328896000 -496628244033391279231317771670257664 4964948139876858145117911077879808 2269451944354903734917862896173056 -332461934524374312588741814075260928 574565686156551499688805000019968 5902079552659096183141833153445888 -91853233669038626290225781395161088 3197499095175625728738546906300416 3325493786027527573168709603164160 -608943974795351544614627689858334720 7158363370104051814773481145368576 4536805273819664210497594357448704 -3451369291414326995667726576386048 4253586689439851700317263235121152 9680766844839378372171479983849472 -504973964725769854911631435998691328 8533145829457114262049612806225920 2110334043765565710391271833468928 -466299436643341935616856684209635328 3267415420940949932342361106415616 5349885325949542510988522738941952 -946409851132209446345749424878125056 2453469838479667922777941255127040 3993284024044618889654109422485504 -909137970010853846947648251830992896 4322140911676743231036366832795648 521060802632233351410006651568128 -93101001438382887680777369828720640 6312324003100243473412961907769344 4383501270784864925133763757735936 -354013376590919406465788220928950272 8506033670790941458300553800974336 9309675409238512215085799144685568 -930587972066302089392795190571302912 2268161786152346255654588317171712 6037485708049966365945553240457216 -910645433968082332895248021897347072 9770030810816834418736985922338816 5113533583998632472323291321729024 -241452746195478476793550520140693504 3519206033268122217580788254244864 941818994088754563560743983120384 -510461119006477164052341796139696128 6019070531651413319876325203247104 7589691685372195310453871490367488 -864580338045946076856808527833858048 1632838887396295188061385610231808 1442891962831286060872873659072512 -719819485147994380033105957476106240 461271760914661540789189785681920 6390879855201146233352994598944768 -856182174500071521681172750548336640 2885311646440326815873485781336064 6135289923150218092709488478912512 -878695838526628882506449088132677632 9995802036483377649815844181508096 8947622071644422337860509689184256 -155016048439393258419298286581055488 9797701086375927477375363442540544 3845549094329852982907981120143360 -746405816266293208121116463504293888 240825063663092539461765133500416 349268302436678341097933747781632 -98409683332332249185794261335932928 389415332495456208399820002426880 3218235918945368697960857822298112 -279891568002758808984715903966904320 9173838998458301824337245936549888 5454334023232431227008227725017088 -132841834526405284046733952470220800 4719646209980572320886258564857856 8940353123925076094333809728684032 -456649359587459368356278066120491008 8757383960839632506018083329015808 4084518781640793831324916119502848 -996312515150518713623556242383306752 216762502705494408585661808377856 1946269854447642900858004911947776 -241166079987764679403118018869329920 2153465044417813373422291310870528 4993371080269496384005191782891520 -947510232220141965358182114604875776 8340254400807799255780906168745984 7597822402534919967646161899094016 -472262728589575442441839045165187072 8953298829643995095422205616455680 5832508494965411316578839693361152 -889455343107338072248177616113106944 546278256576609939779012830167040 7508682141227933757433261481525248 -766435369698844902914536371881246720 5487055720981729981091948345163776 931484556202968330249752075567104 -302829464960476791973797996636667904 9881789469635602838991323703279616 9798736787789063838784178727419904 -362343066849683487271799880427765760 4152437220340169699998779687567360 8315096686893584907255179416436736 -731198168363522709417134174836359168 8179578703647929531233218620030976 313350271809851016145517175373824 -678108770913619443461227192204132352 5476713788947596455909133587054592 1094700521472820914220299727142912 -262429402066005159859640919576805376 6847934683840052846898585536561152 5049395097111392953653782195994624 -758344038265063766095456675731341312 8421051651737259740589946145079296 1818017925253548951278407957610496 -685763073186257172789997675007180800 8161251121040396369623388551905280 2370809670952538584809985366032384 -233627011053473346324960603073937408 408559268143817724833276421472256 1372548187804683505957717361557504 -138237681741069259329799402744184832 3781137157319769019546768186015744 9700275379686056413903856173318144 -203367557036832711053962138309623808 1822479790825411128364062895767552 3002159640390278435996621330186240 -282949027572237470591953112198545408 1123184439193432095258165987246080 4695393232047942730400782736162816 -211292214446440578625772689154899968 4778101476258139978287294072225792 3730960387277764500614265547259904 -450513251836656068471874680461983744 2026949622376430473362408036368384 9640311876415750335524549991333888 -686545902492844259114872690947653632 798612794202778259477116928131072 8444812199648107910920706830893056 -875900260116191521488030878897537024 8709430666220153812668834656550912 6037724600861549865042918730891264 -930694897203016173905824978974015488 1874208852640225553142638218051584 3365711759105834937732529540562944 -679853968171266312474504540702375936 321752638482105009609629365174272 6734853578343523162876729236652032 -94719445642352143483724851809615872 7515253407054354386762374406209536 6836199868720516086528392139112448 -938133650664603864039054935473520640 2902006943486572711290282721673216 4669052284848871722324168376582144 -693065214386223905627042433437007872 7428120699100760715174107357904896 4177735882243754124354050519465984 -378294444749488778660863838926143488 2655488811743093342042803142656000 3575636901870895306360822272360448 -493421292401950302222015145885827072 2387270987437514652407223256350720 7069952775260455832574879068061696 -62798868090732741209911644020277248 8382512579531455434599726615363584 7449579560099444573037093994889216 -88585601378245124693999662984593408 1413590115530568724539320897110016 307412351866254574831984514695168 -84312309775919467317190717945675776 7040980053319984461675765855944704 3323911109194617918768919772921856 -808385810513363318190302937609142272 6262984585805371789525580989333504 433497085632284474819533405683712 -820393839198987283929269266787860480 8732720925864583832933952133267456 7703709721680962258593937474191360 -205491893971939224563769039128625152 4110042141553637347184932676435968 7669003323100879318489903289860096 -260502106089886003682605122409463808 3908098817800492005856797639311360 6400334297780997084460138065035264 -447840486840574691184850965555576832 5762787739365734963952968743780352 1424697585415449739719842058993664 -564151084493402238847700872896446464 2882241601735504245491098149978112 4597974485266830728088430927937536 -809239948908045995529677934180696064 545035157332722967050109679828992 2121722430293935163191340461719552 -279605194547272312857700886126788608 5180785428923405235178299891646464 4415215906823219060233620863057920 -295493820297396969265444633477906432 7099899178986401917663957703720960 8166799309821554409718181284282368 -776516883744247959190140663277551616 3536419113477884837605528725094400 288351386401274492800485650595840 -9265339862125023869028275213828096 739442986448816774629544479948800 2864432890689344381477164148588544 -395729903668428896211098541228032000 9137220139120810909014348995231744 2939838578524072155114992484483072 -420478880736822319330109063392395264 2451911446309315093793411971416064 7000728344208475582730276849057792 -139458653851838958679213611583275008 1129991596705251649236171176804352 8282294952466041616470946588131328 -898353593585910420964837617251123200 7093233947350995960842720435503104 4666967860105439966364995629875200 -827437546765424375280754723152461824 5602095722966814151305191068008448 3740751041055485137000414396284928 -201853447070299999756577380166008832 4886175762397974034879573584248832 5651840280397183371041284126932992 -83712335058179619795242630502154240 1302850599393792022992780330532864 7909961404665568143878471230160896 -671935401016719512197958194048270336 8293354661938231008111842346139648 2481324249587964369633109174386688 -540208961609622300081470899715309568 3580220622349330400644574545444864 1885217794468712302317440247791616 -661823933169577994457216202475307008 3062205879008486682774963285393408 8304511915474945564644366750842880 -52547428327088363877129155491397632 1731375584245239170593261126418432 63825393728574771176307400114176 -408459837784519451821989985597259776 7095454332659403176510577713348608 9725281513646063977036677478612992 -676742790773903129938289876132691968 7742304639546999789688170810966016 426958401580351303147919536816128 -142020325425286237377914187418697728 2002288787168181146353987464724480 4117862847961791349076907056431104 -378104687439468012548065836528566272 8179251905431560907303799572398080 8409009285040722743085307678162944 -71108122848018147175728519711817728 2109340596519187382755039402524672 625049501163671396044658549194752 -449497914883390926509792210389565440 5632181114407423079597150344052736 2687948027367449614675294271045632 -928305838092804152296919584116572160 5910950531309116910578108284796928 2604149775838216534223131584233472 -663604506789215055664458929759322112 7133616083153840528482110713888768 9023987475192954896945273238454272 -854150695187706569338822707367641088 1861283986966213215519027291488256 8410277324459006034663077392154624 -126142299268501755398851320304631808 2283581340819985759182940136275968 8385339526889217234511617027211264 -100897276112203679544234361451708416 7857117584094630299637632141885440 5410726277808490592954961308418048 -260392153155818521143953550592704512 2507421511549179259730540317638656 5535021351326410035641493563113472 -473493487377960069613611233065304064 7906644948425526507261764562845696 642780805131990503209892239638528 -829599760475838078137939592120107008 8587520001148449057261934551760896 518009425833219884151197753409536 -274180862651761792875822827880579072 2900858663614048733326504859009024 3006514287901143733658961173282816 -240187278130041166783129924378034176 1591370531185941883503651355361280 8095115959809730078374975772819456 -587489200094671520748941385519857664 3435279003708498899453245967564800 1516845025946247149005847241162752 -663176462879603534628017286112346112 9275929197647389047107533922107392 9459611004898950168433958250872832 -405769155350972895757714564126343168 6421433347507011946017412322689024 3238354270117542840497984577208320 -903019153868015417334379073876525056 1502937272713032957346588120842240 917391163158933474094795687198720 -714317475887529081769440395099373568 7698081421047475854651817908502528 5578393779141894290161059508518912 -215487728232888425230658639369338880 5861203454789162222855296791871488 5212893541750158540976879034171392 -63903011231528583121732406821781504 1730224269514001451219788050202624 2090286586462339902899798943989760 -373927255486778068790782328236408832 5834401171791455432831368681226240 4233354775816419975419954961842176 -401347364034068136126420369197236224 7121512665403457404350586207338496 3303726989716408857869903877636096 -476784460741538000021762540212060160 8775754763135324774774363878588416 1364554831218550357227196574072832 -632128263357634414772633048927174656 9076591999298197392528516577230848 3891441904970378025081536811892736 -184998462974589674536524657484365824 7447917922620508109851090174869504 9325789965599879946633281196261376 -181004055382377972711278558113169408 9484470376062300102281495863885824 710167156958913398496660505493504 -499768588071643795335961337594380288 9106806144193904536235834785923072 3037060482504997964895249678467072 -587922389297284707103420617429352448 687712400297720158813285018238976 2372313548405015845968449875476480 -20210417211825801277326745688604672 3942112643184297948793616405102592 1012754071091611092922551108632576 -892119253502633996532016149526740992 1223222852117194494070667983454208 844687437823918920664265894395904 -439086998253914100656037071943630848 5081865365220959990989872693248000 4679437852590915625748070496468992 -317732016709137248492418427005173760 7936388283180864674112545732165632 5876941470723882305191761114300416 -494374190657818990586548124811001856 8762793742087897268963934616944640 3815248964310727244129520041590784 -118751965290470598969043009354596352 1047194182164755995842261341437952 8485310202074996878869851302526976 -235487852937342836501922341311217664 302654742463816827004044426870784 3721655022428795443111059926286336 -909553805345072408263553748299677696 1402707503316340582394989744488448 1944815283267017605779526722256896 -176961432723012106052731713542422528 495879722030485532886219026857984 8751813616489261131629297900978176 -13431239519190145248313573789138944 6181990911147883912968151832199168 2258884890582735795063175642087424 -286000046014009672666347302253756416 350383580014340013630440135983104 9239186322025665360902385085448192 -580557589338282045223191234295627776 9227859150713162347301137874419712 943195682259769538283305800040448 -605128578463576765469998219178016768 8442091659834719752667039136743424 2907335777790599038510464862519296 -787282096882093325255816457347923968 6404256269114096724780476773957632 4393601107934269620553623908909056 -687752144449651374035026456644419584 6706851707485178103651216639655936 5462558215010306689911943275216896 -229593852569283956900945250509389824 1467588465271529328584004951080960 7197033152987253462655902190403584 -157081305256917553747612601900072960 9094321619268840599182215881949184 2844849989728363679113550860648448 -907111891323356502758992596682407936 4835316674942134145148549404295168 2076364518758750242594861587890176 -455584578758231658428609876174307328 4793731723026011880216639712526336 1666437462709707991950331094237184 -723550233918131528337887773742596096 387482401614721225896230962331648 9067298807460623196858323933593600 -820140278196416838046634866949226496 4918534136635910205358126598717440 5535143812594243157554362083966976 -654065323954643235200509887750602752 3718338174744293981198984742436864 2529601365872916396534750894882816 -614139639307650014573479536772513792 4125294518556701982565370574143488 6635535860944905640251555919691776 -451366151137048535872223701943451648 3457701944617858595667743831228416 7475524097004977134812937718857728 -57532378933998008010398079519817728 9079267098133746928444713327394816 4284499480301674888925521966530560 -760309168541308961200526680314085376 1043984353042500579230959123038208 619372067733580402581025568325632 -946940064093348745056173562649378816 1493744033518761675155972670095360 8496398689387891913582209428094976 -488645746370623064457558857776889856 3185060767937827696570047079120896 4312622859116103444494144895975424 -655015812267572213274537134596816896 6436435111491791232243981829013504 1198063920979835366802728903770112 -461716142205465315841878770612961280 1597642345944967754672280185077760 579256765886913046239577804636160 -22037897948814326697038654595923968 1511441246794362408305140615348224 2419752002523354955588945315889152 -7045905132968446097475580513484800 1013091089753689812863740750594048 8078903385056265442195925918285824 -467503143061282514319964669596401664 366200527363184989408327932837888 5935441514758423742387478975217664 -971865521023323480562270181995315200 7084558317844996692832555014029312 4389763799939467342151739978547200 -316115835991864329124381362986418176 7362229926166170995886883472408576 1339662270471238587514766720237568 -365199188818320292511626254813757440 7923943278416168311739370151346176 612188567845650076194704893935616 -835861139434456944244204479015026688 8166133543429838476626683316142080 5556467719990910315687074047459328 -227753571622560696287013899748769792 9960474394514393683252613109252096 3619735163140073960636562498650112 -162064621126898339996272340907327488 2888959894425961163437415736541184 5513386966556627993305530125778944 -618062818172504381666288569939918848 6689048775909571236317149374971904 8515162756607596267914400932823040 -976982580683461741976786334249910272 3335486079688321813969935219556352 774082015764284676752162798174208 -12110246677819878542905579289968640 2065605611214992801494264411324416 9201219349650715749967531236917248 -613256713819867118155538021440552960 1629185191472546566454210774171648 3072673644806432094279770656735232 -360418809101075837064216836231397376 1945544985067137778883679511117824 4106151809444712092687881895673856 -443118080032696381053972442337247232 2175973456129679798562992439689216 4713063827256295598997317730959360 -864514432037789359807903572751810560 8102242821991268510867899300184064 8041492058187015373101914793181184 -115619630106540329754083067290451968 2450942908557218653493296462036992 8924413607849996654011847469432832 -580777871079390392899477770468327424 3539164074644132791020077270958080 3980386196958232506948635571781632 -254185881555369349917493955498344448 2592642363502424238570895258419200 7442839583114928154554112854196224 -425227991337311141949688615272448000 3990631429176989669086434152153088 7234091435098666757000612076847104 -971094152541518025203129051034681344 1412061471378939134383542945972224 5948763254292104307996699788312576 -170818678192772753757328429058883584 961653376892462736221551481323520 6963258803093557836883441487970304 -433039453008678076568292280210817024 7361742230262843455350940689760256 9183384174093876943721482304880640 -19928198547157350413031848623996928 7588918143708802302519062451716096 2016918040338333548723158722281472 -579739842198228889032311292794241024 3011339331136827659327021711884288 7493670096885424281342491251179520 -666665841892386300956363489261125632 7496091730632443546747799869587456 8407537226392491166770807772807168 -82433392493115400652707601152212992 8139301550802551110699697605443584 2466045418835657561928885520564224 -377544094048413129637383399324778496 5755675053516057234768084399554560 3264239370897650315505448448425984 -923586399886792910488636835523198976 7065775547382751777077455531016192 6943935373974098473282135448879104 -362097472836125983517368972084248576 7499847833720451283460010733993984 4568123989310102625485361281761280 -75901627732507211014409131250417664 159285600128861717142824116289536 679307146218495262069970725502976 -557009551597679950889107164101607424 6513558423656619924340196100800512 7785012665645657673543983250276352 -105252980929809363143459633201414144 1944446318423614484989122218819584 7794940465083168862511746747727872 -906478633364402561046120477707206656 6440526553900815788753477959680000 1666026222176669838806171567259648 -227362630212636868711390064435789824 2696476847978627420705753894223872 9641076884683524387810753432780800 -240979227029305597788069653618098176 9581341917088787445734729159016448 3354479437844808485718028804161536 -487435109166237616805737995826102272 9586598098352104773502185930489856 4030412714935976332851847119241216 -575656184765068234739476128633716736 4539827596500938108496426469163008 253946874939078555996234681679872 -789892319055039207863115094715006976 8004526955943253884901248326434816 5025852230441440752301346673131520 -62049115314145736085780966787776512 1743276451846552773671918864695296 792377242275567890320195844046848 -880942586478110309632255109573378048 9503706437068977883672640384663552 985107790104190364902840688705536 -833198983852001911438108616986460160 409935586393251169878334574166016 7089939896933696830107758974992384 -687978948594012713298476394986078208 3931432186622267937492448827146240 5834745716886196510170575200583680 -904375910289315492669028679932706816 9240091280477088882547240600600576 5023476820561177453981236818083840 -531243012584754388275312083865698304 4036313833307542582458107589296128 4949447842420342085992706696282112 -127786496638330723871499467802804224 1490648916605850141609432245600256 4964569622309237598935708346613760 -47251890920436541463497048749768704 4971701987684297191590211291709440 7410367040064476502843616349126656 -393439764370748124532584258117566464 6442047318564462544492238504722432 405299934699174330030414094139392 -104869070292058003166374948176396288 3986370853485297804803525088116736 9610719777716540521665269640200192 -116446032180860208656377631452692480 9957568884059889759060803488579584 9644482236425045974275658862297088 -36426353050703687466107063433691136 477090180396795043725424734502912 8746545587642161940763395288465408 -181998351704720946883797724103180288 2653039608221272897072905494462464 4794363346522017216564615706574848 -952275258248735605488758115832692736 271676034396003437793038355660800 6627817828820802995323506276696064 -117808973322933226042135431224492032 5643656520649871457008493982121984 1285607109548639505651747031875584 -914671740036689111660325328392290304 1879430240152602539702548770586624 5538114979239767305627571234799616 -734323097527762562124976147132317696 4644579702185580670915577141788672 8186743337579511932138219292852224 -283662428664692246274128600060919808 188631846107731312617389748649984 8380006606269553189609719031922688 -290365691010168986758795185446977536 1432282745484496341993040233103360 5983589908268392417732075632721920 -946817634671728955151389435268956160 2973664611876637174531358032134144 2252205192524585504828434199609344 -248147031264509730234422098837635072 600501066438939092641562302087168 8242943710232008075527555660120064 -693009680560136497566401539763863552 247391147066992808436086714925056 6823248309805170904283829030092800 -468458715642110792973322620653010944 7533785751787407286844139002396672 5890320661532988702682677673721856 -605644229036925929873111493342396416 893165513904813900978486153052160 1573153121667423316652237908869120 -68719427495681417292339646635704320 3456207667435980729255793740742656 1921017846244417508269747395887104 -440365851263409004336645497367298048 4377483300349174243202768316661760 4928599224528342369937436679602176 -353259485278623693388097823182946304 265164330623874851674333812621312 1136737181289275690948277255012352 -862884303417260083348632115188072448 8553065498826645521572979755974656 6435158250035213115278894150189056 -932214237268236513329356730286473216 7604033821751942232040460299272192 6750363271915279330693016818024448 -637464414895114561757634387014320128 4902203985237221378448154712604672 1042576028699723792405760586022912 -431549148163468551946875099364196352 942386820314873595767841877917696 2278572676356008870291148044763136 -399594804916851679583727496657371136 6421500161165147710822652749807616 6280197053549046463320862492721152 -615399898279392471736922079554961408 7766991630704581012769036891586560 4426967431178056091328758763487232 -688014763699278054537424985802145792 3559145726856381651237411672293376 5984812262716122477708102248431616 -353723327268259186073084926617452544 396961026055341271924682891722752 5737132701649892687043814810976256 -877965083100583845031205837054410752 758487819963840615250961518034944 5831294650942216606224998488604672 -802769048828071806620606692853809152 2660892085887292632066761349398528 4408088843538732618369224641871872 -422169198673025589680217701172117504 2168277805253031960712309611954176 3080251299965693193620936047198208 -356152784587671388559609289674588160 5090820761612361972375757608976384 2859758323591960258226067525861376 -529279762107405194043869686497542144 6855399995375403938363047258619904 199924725624568411205459767197696 -679867385930478738787931924868366336 1081364650101249617397857017397248 9778905577982584028755517419552768 -752831123003669643748793642188275712 9254186905572239735571170474328064 9655105040608699262019896482988032 -983923742715525513802793022520295424 4881567487084774273182071254941696 1392817877834773415807514904100864 -739501805964440471760782586707705856 7403110553999197532124127913050112 6898889144825519894329565951033344 -888038120568309906407788094041358336 9992095769250198199198884116299776 9961122389452446293595807545294848 -634785946556976025225090743377330176 789837864512903285930705274535936 7734286612958678019992084893663232 -650229345055274404904902064246620160 7423080406174047075058484967899136 5735763661183794935319910395412480 -768360706125201629147001202065539072 9370632883233344911371538303811584 5823490062670165683061641541844992 -576236522182208996205094856030158848 5546826053351937812230811726905344 274209057006969668617407853232128 -221874620075827267536101982676713472 3599872429276846024179437549912064 412790525650388478220526212349952 -737940158140912985729035993452904448 3316480903023968661889769885663232 9565258528676437960410196680376320 -468730038431072362756003234486157312 5106241358579687875129364520632320 9852257585294123545950748114157568 -456423526015356732133744813052788736 5411064145376333340089492074135552 1154083202623351448066312569356288 -70644274728495398533544756771815424 3562253561781715353080970851909632 1813635511521547240068537756155904 -369053954971554095423195349551939584 8385698430948302167324250234421248 2434806201283248057197343866355712 -786193646492431910235498417213145088 6013996792782383524866755645145088 788397136527497608127943117111296 -771232890427799633706064255897305088 509629004469992557698929448189952 838132471317874456019396070473728 -903462243838944933102264370763661312 3942821187220923664692411593916416 6280436953323588722396637840801792 -179605688342855304606955788281315328 5141955953366741028046407592837120 7820579934164559592353770904748032 -440745901852445422310059845816942592 8645276524762939844034042741653504 8911374229465389826294136120016896 -439627490761026684167121419766857728 1342563436647547246908975809036288 1688704959975048193042852519870464 -456779171568705330762925774758477824 2324441701236836813824136889499648 8104648530996108078382820985143296 -120215969045987000651083934186078208 8631889211921349816066488431280128 3778534817379130344622562968862720 -340859106027801642009333495865802752 4936449717344361697123103821266944 2788868985366851618646755060482048 -111812614201790217431021860700553216 267205188728653900291614875582464 3116210115678402202591472321036288 -914800557215480465980283715883892736 3168577483172734510463111514816512 3618424200229338898307228951904256 -722620922711822807450392354424356864 8932059766769895502859812581933056 6284893082314664502695225502728192 -870664176694636211892135711729516544 3819893439491310849071965309763584 1185371001866513304586841558614016 -994404676433468683729776320731676672 4272195397502845937451355657469952 8301387359104660720732505932562432 -117402960241491807523472693973221376 1451678474589347254447020705841152 9250706954329152557692549301534720 -934967179897913438701466864383426560 3192194097386077143467151207694336 2227851578809111217292112499310592 -33227796721392808978310632302444544 6524039229842189226192630838198272 6136354641896154228251446378233856 -468214512843778307748774896151298048 5176439724723087034430533171937280 368793788907174375800972182028288 -856367069609291200134876820276248576 7716553952024496212717764110974976 8603627588287834482716207625535488 -521414694404043136255768421327699968 8544878182346670768721857477607424 1944112641577398368562050116878336 -308439112913109422418091211313119232 8725319113799207904667899808186368 9045971298837324524849155232759808 -437014255360896843229916838953484288 8724376839454842108998050383921152 9700907836669776088033124675485696 -665290776515410539223220477184966656 431658220465896553274974083743744 3369030454950034125937549284212736 -688388237599718346927237851871444992 1014451271396554169052591674097664 6011935929724610622851605376008192 -794760002558571977096204131541975040 3580689289582504957483794516934656 9407472368078308417643890484445184 -962700323057859585744310719538528256 6724877650019952489781300404682752 8487451203164587054010903484694528 -153651084267384032964409408580747264 3533207098402680139123436644466688 5510186862029637537264589072236544 -613912590566517178298877240867291136 5011948405466671419036179659489280 3763654443130593848126183313506304 -603224617125419089903060058426572800 4856788402853196318240541450960896 3164447780872245334518182927400960 -469571976530384743878611824701079552 2287973503722541570919430652690432 5956884685850404358116832981286912 -491437861610311715137435358002675712 2798482759855825543943462015991808 5306699948717934910160205995048960 -946086121225173521596916475627569152 9670403669106226333963650005467136 3138727418497819538751618258305024 -992329790434603304545228002261204992 7968807115925236830708134362218496 3311279624870574585868659424493568 -719735278319507859337041451606343680 8649442296501323014649893561040896 5441079941606036380972364414844928 -178706335543491976797488819906543616 2706719628728842251975437529907200 1136631590366349137459756648103936 -244157502898340006043327146716299264 9635651860228421076532339505364992 7439658358358134823508284108963840 -675016703127883050950316990010490880 5989879238122728157311081522397184 9087996864727014885494257285595136 -714780810888248863395850658078785536 5383365236219875704080098261991424 5478852656287232093922643463372800 -783461150709200144876763911448166400 5229859082189491063261635452862464 5803393144090306615116893261922304 -289673070306627756832772337187160064 296798891594844237106182266814464 1312906737870853672598471782170624 -774690580450991651589530498398945280 5188508417791789073520775971995648 7316192438776578683078096055173120 -80853583855095271413049564132802560 3015558691909037477069772944310272 2707413205835663561902966611902464 -10508624818197764185482763366825984 8873002425516297507890395648884736 8395728233895963792370957169983488 -249970567612293199734405141698183168 5080773009235167512495019456987136 705255849270365602827390114856960 -252550396775029798183600691664125952 9097916120007466313679819887345664 1446817429536815641760779093409792 -365587515098770527460057800012464128 1448869290976224436980567783768064 3866931432337202298647947950161920 -987129769475091994170150124609601536 2488016350992361464029759865356288 8627694413692929870731481752535040 -718593314373687788206592075537317888 3764592322597970556499005185982464 3656617830888255409834244268097536 -292157828970453859785159701709193216 4482447459756525472154065685184512 2539360319066228884155717952471040 -855727418212891077067397223474528256 2083539311775813444140569343295488 5905659054339589391065957676351488 -137251137095983445758431157339291648 69584093425693501817954261532672 5074062915355478974415974782992384 -486005978008998881365921526137749504 6674028835212817584920482451292160 6635581875999687240049782884925440 -307932159444272143753200248375214080 7263738621144484473476199082885120 5022317036846963800972377471320064 -598123339771984432491392679943340032 5431243972779341304473402690502656 3010387233896036596266884550098944 -402263804329930395451294486122987520 6017089737556198146590436182982656 1354133455053582724084096183566336 -482396231099962204145523930571997184 8373179503716758579049582083178496 4230807692041021138151018535583744 -598715672763157318378561578274390016 3456915144597628023669313169784832 5967165875392041973366568790261760 -696002955814208827161350090688299008 6879679704938506154091407485173760 7304290095989562610026153236234240 -310289891782505672486238852141285376 4365083455628670450108364237045760 6198540449308019950624492564250624 -683736848202775974980496145382375424 4330394231298231663849141767766016 9178197825929356982798715268890624 -623939038814123266767809941954625536 466108849784662981379299764862976 4372862164228422178408691448938496 -891233494668937323068075703705534464 6760437728295244558024540933849088 902289764249440221050726233669632 -667416135853047255023600031781355520 3919803958627176982492283278458880 9165773810109521413209678241857536 -937960574313089332426478658156232704 5245842413552551892614985598107648 2266729772746833772377562031325184 -708816894797454818856829851803844608 4460364948394364626178882605678592 9911459076766228956370861549420544 -997030834574316854414139646632001536 6772550285802510877744708347494400 8709331501122384478090030468825088 -375661126870661440825869880652726272 5174160805846222849564706179383296 2325888423609597597108425363292160 -234327186992956136326967508770750464 4596215455675737100087495944568832 5411157048966952733254495871434752 -426393745224413022168805731754573824 5984959937382973775340858809253888 8109517882317807107724532237991936 -212118461479558285202213536534626304 4263892931270900184781167142109184 7146089709150263776074152875655168 -991666095915191242928366568203091968 8345368562550150987389369459933184 1879127772696959473799206954598400 -648672126064611357906954821212045312 5733881986088181228693137332895744 1894692156066034536269864134246400 -840015014232474739920830874655916032 2405824334929282444703313292165120 8478318830787477535807589880692736 -241892326380466468010272150102474752 1432974543500879470024265419456512 1152411157409606799586798147207168 -927735547435027235984879323524890624 3120057349371417739165566261788672 7252879107049785115360675005202432 -94307785959268039314857198394277888 5951172662824736560899133238411264 9261785517392049012128477681287168 -13811816112259081543144738727657472 6826790156351256469400462532018176 8988150635659069923778584851251200 -795824721897501796211135851918262272 2599083299334468852012589099515904 1820878226513278279284037804621824 -115012393980153964086343093918367744 3664084309047959619269312435453952 8224870650430741417181105507794944 -491381778929999752425339334248366080 4787231004118048147465560588812288 467156995985601383596369238818816 -883522591382105683826496507247329280 733688723070241584304934948438016 5424168036298699526655701246017536 -713041961367663821764257036151816192 8869518521439472296436157095346176 2649200556472761805403819813634048 -649570456156508514480057137351360512 5653157041248936863717321902915584 2862239497870394676347003413200896 -545843928429786794848158436747640832 3180325068507687607412818920341504 6053252962339112613966993717985280 -809097539448527757656272077676609536 6544948246328606419779575175184384 5645867815351974909921731259924480 -741350740915039347597837167964979200 200330780682673378072597610102784 7746730173217790235014803084017664 -400240550098451931765378844373024768 2189383670644462223654907889582080 7558946242597777541433300139114496 -146798785468201606543432834869100544 731548294609381438111115433213952 6719456449417307429714244988305408 -345670559175034940637146169055641600 4211194000761629068351141912248320 3823526653082083321433313637302272 -321508061464438027882750513973821440 7522291805016227153220180167884800 773315601380069572386759926349824 -732989315051492257536645801189572608 8159478085540277777900958574968832 3034809395866116731907378272796672 -984594515392434204676684559081799680 7979472025375694599366353547689984 6442541882336200807617505167147008 -275120919907654394088987768324620288 9585342377792755449397934288797696 3969394326577600767915218377375744 -146910354284340699137934211946643456 439607812362840694321653246590976 6503851097774211020402181145624576 -764826422324947215393681612256313344 9038953628805346033218654035771392 6489719460100774845760612568399872 -988186517684997391831040893403529216 2506412024393192957196463603974144 1340995187848239551227372572246016 -5113311277716829921835062682189824 7234563597704274424941536442580992 3766317818707025357385524058259456 -430552674379859522652580683179884544 1805332485026508862372890133135360 3368202470690436659487650812526592 -217825111720528579075300541690019840 4387880827790012398362596674109440 9061909678968168881592962585198592 -217760657198150821798870951349190656 4836274826482299975197078784573440 5544625778850725590924149439594496 -765069485099908924237236608083951616 7405112264917604694726189359562752 496512883676625142089432984190976 -69166952429362425137036142443495424 6708813152139238628742466319155200 4987641216720904566721043236913152 -461979633726563129781863796795506688 4783464057356805742718979063939072 791484377004841475051502708981760 -694093263678594367240705310944395264 9154255093586776232752566681731072 6451650447430735363907951299395584 -633721612285850380411217036250710016 904329684460519333510297723863040 2943973077907448166482150921601024 -796825347711921463072232061876043776 1483729412417707141342943724437504 5255522601097961298071037398745088 -507309327943481404379716370256887808 4373684138682613552928322305916928 6784120747855999772036940188090368 -680350605588576928535326900139065344 3278812383910695508487517339910144 5091753810264322246019563416190976 -513073492870229948441582847943245824 2557420719162891537007442411913216 5377045587322287042508176605839360 -144168065998542977199854098006933504 951065965111982915908191781912576 5666077214246047820179931968569344 -192485268182106490759247090774179840 7803222732968195219218014419288064 4109898180228429375605360946053120 -145497455682306694483763901660921856 6322833231018789114592097248215040 486053623646597693132261231165440 -858588282466676392044329225823453184 4817168684106862308060633197707264 2997199207614149886705545301196800 -311789590872311304643026695609122816 3525376493924017042694359901798400 2910992562224267365401848912543744 -965217142749174051106098943683985408 5438736606888375392368283304853504 6798325107639403914067122495422464 -682402305250923860927082863683174400 7202456473526000689802569937059840 5096606934387319678752520730050560 -327599748261556692066181268054736896 8818828232681449138697213164126208 206548808357336193685985028997120 -630466160200242620184613632444727296 9659490231236858896905834130833408 8289933159776287962742799711862784 -280560935199208863004847825500504064 8515163729838026005046776878333952 4683572619094085896586750704222208 -192234753687070066775882595051765760 8398781441988407231907961965117440 8938471938575084537434964817346560 -557818437092252306814788532135002112 4781436970325574481490498312732672 8384406835949186610395641217548288 -870388667679705517627079284211318784 9161882830197783455540084775845888 3298062291165005048529464873451520 -730321330370793313495370900948647936 8718425793188098658265955230023680 5706751561722096709657731702718464 -886773806021345348508462484486619136 201406214120565768378954020814848 1637691049050301382952553063383040 -730577339346537319390177924730585088 4051024667410896924211698372444160 2045259284630341859448938704142336 -601275596263522954788532360275034112 2454511795295127925237749907456000 317277407095005799326591848808448 -545720677957095580437812373606105088 3018284919152630293433475793944576 4634231020502877129756358985383936 -106097919226399437407342231942070272 1998135813272918764183134452842496 2246575307642798689493645350928384 -10217805664865310557486526083629056 3813536008082235684572114299387904 4163502190461375708746744546197504 -819271759445349725910893543301316608 8360034870598277128214067575521280 1331636970756194476346810734477312 -510212334789149609981202747795439616 9820348172740479133293518572748800 4203172991517586860836727579213824 -805546286077550807849804822994747392 3858910129949861437349220128391168 9916974178765212863152308162134016 -960295059457714064308136525684539392 888497527637366561628138109927424 1538935003829050834987369371795456 -912329366907121568735780214893707264 4609596631334843905386601217261568 6875948732366408137419027841548288 -24789128545767360052705397387034624 6508997853500706629446241548763136 9572385533653103933629290625630208 -631773405575007250866626357150875648 413345578608678672185052928933888 6474111368902117431046764230606848 -52371546534671922739506494981537792 2346586020362270204282725686312960 1058547897818637580629919066488832 -100641852945850226675310229280784384 8585271425890131546031300903174144 3477379469952078133829619446448128 -215836334124169844185482270791958528 7161101306792908558363853114572800 4638994888360051668816695952146432 -603617369783662129138508842137550848 4202256236081175586823229394649088 6979243164546654770579441893507072 -18101860288611160028275476046807040 587666336616629404433355171168256 5057160149805024162766449914413056 -229811050382496481528343429874974720 6138917383293939656860752574152704 6316978460838645550816386894266368 -325172885981433435125985134812069888 1302791121826809826080610551070720 6588281876960621359320312018108416 -334138478003768366695975150398996480 636484971226001720314456400986112 1091038659022619554732798308777984 -707681469509997244949243950765441024 8527016382617756356408487813578752 5989540124099837130822479079538688 -801115032735605089211016659632914432 9772881134175355743827158202580992 545513664328588023278574724186112 -903840303298391626090553431086333952 7077904002004495360435159140663296 5451064314337294424207672670683136 -901061300340717951791799484809216000 4020825923779220611663814247579648 4169672488403462881571528018755584 -412773436660472237331808497810014208 2384601044844996567567242769727488 4115587829715669588352321433108480 -670649988183609852674056061183852544 854230654632995864825284129718272 7977060355716027219833682548228096 -960738567006666101565693328000811008 4537718968373858501710110217207808 5580165468437591058965591729635328 -3341552688368132925422461995974656 8258628645193001120401588031062016 2660340433052684429397743879847936 -685513517453317615844408134756990976 9750623461254654335099200172195840 9978602374291845222464665010831360 -920556131313591794293605434566639616 268977663965682316946783034408960 3291486737919996386304154186809344 -666663756136824664471810708101660672 657049269142431396752443807105024 7122123095799238914864102456164352 -487995115977770138076066704380657664 4634044342892994867693640807874560 183520389139862936609504742080512 -833491709489497757005413114781368320 5887960106467517998157105832394752 6804572158751691326995781774213120 -413128583970123609628117124752867328 528267587928788245263865195003904 8923240255769384577575045268766720 -215438413627668673336908989715185664 5282748647643005835836349665509376 9381044132597151565201332141817856 -637904167756417866761500198317326336 821166501044941030780646237143040 2845157630293301266364245137686528 -83447846134879188097719907486007296 6631473220951881054916552037498880 9652404037525563120666667758125056 -332092816461274553788689507636215808 9002363989351814696992391150174208 9286807878550758748330805228994560 -764563286891574179704584211609419776 2117211210903840491822863771238400 4951001062929613630373783024959488 -819404915436240613165090833585668096 8178682226389131661645601904263168 7709750698195830215449770740154368 -730608711818900129345480319658098688 1819970538712077650396326427361280 1107727140403449904649083153285120 -989453809883983840659340255924584448 2030920619047735162012905167126528 7859370945674396146999909555372032 -466515852815720281478277253151326208 8103903538442768540512893972512768 9147614320089173541156340371554304 -263919832812077811394783473884463104 9734695960133776320861874839093248 4896064103035350835648035318398976 -716278987646887111669673722369802240 9311852350784717755455019295965184 572486913506596618477634098036736 -412178010081377247513135183862693888 7096018353503528238251649982791680 925036275122531418946717431627776 -298400343989285081310326803321061376 5487968947313182003461469740466176 4949323649608451022155993560645632 -15089528023315465870142738186371072 9500464936438229989292906618290176 8549575922737666061996695041867776 -724575011731185444474010274675818496 2376354568516627411544523350736896 9063936517350069587634502148030464 -355290184795353757991298749121429504 5400484831053047289720570596294656 7299037426964941751861913208225792 -422076925174734902980285050151501824 1703984306496479815405539132702720 2197575864038020990924358311477248 -925138307503221760412628553977298944 9770323780803665215984607137103872 2112943857935873871467691357765632 -214529659988626419067356966276825088 1691284350696115095561365771780096 8678436699683440591789078739943424 -713805688122902315488618977999978496 6829557085797620964863956448444416 8633030039087082171150352611540992 -952156355943234272842963163254095872 4946693629382199701273539453648896 5236626770139736432713060111613952 -25712447332607343098770357743517696 4581929774369896902616283715993600 3631298195457861179143576180752384 -168383693577498173609610130856345600 6947806470205095569657055246548992 3031958033260320572506285577076736 -109345875576487954653523659267768320 8559171764663365899274864702783488 4604858403657876159509870648754176 -437202282698144782163257687269179392 1310272700398220431436052512636928 7669129225933950172747784263827456 -778699205543558718263222010984267776 3730768280200231380562506919444480 8585133687682932005861340437544960 -591910957826290026504150736806346752 8027992220537241674841278843453440 1223377319478371822454805343764480 -325114801276178076517415120436985856 3220515565455743053225701945638912 6033562258478752402507218622087168 -90377557307124279762675569006739456 151003188000491088173175681318912 3541166943029652612242218097311744 -379793280922913589316889245720248320 1789811794224951698275099236892672 2328141837392357036292445726310400 -605780239234046662487017063553433600 555115453095263446641751799889920 6136860354850062352426042294009856 -603409318698007201788469860280303616 3806209911543986660803590204948480 2234737959430139208254510159888384 -244096569057257296655457336118214656 3548474649543324931361301124349952 9977857111566298707287376943644672 -87624311960257784851995820501762048 8251842102047849495293567124373504 2251319812244967939693669911625728 -442142029635467806599197423235497984 758669734223365929428612213112832 2383610655428421351974648772820992 -429196716159439063771912611448225792 1256623017404369864538837963767808 9698380622761266894932436548845568 -135129349804717714128749618052202496 7368189874301902704007504912711680 9020949963112037829370570428383232 -623637863123958704113705749623865344 2464246007812792189943819089739776 5448267328310857049682372634607616 -991598056621472426599327910605094912 1176430363592940208963746344730624 196176535757071198690810519355392 -678050372146208039364278755751100416 8198990385122664016982317522223104 65089096577690651067051973541888 -2274933460357910563588426908565504 7236966872106833867168350925225984 8975546820859201314006739611287552 -305113799085173477836649436691824640 7976379897223326345236434741362688 7383312701147099985637678386249728 -286658374408648803351809251164028928 7089959822055994801546222570045440 5378620797634551551058618171260928 -957100661754296379445753230408024064 5098328694183640053569654641131520 7664036700939272513556754515099648 -475435948111305258578124340803403776 850037606419098718620207254863872 4648347332086366876846060407357440 -990767905989390942273330498968223744 4354835816435336173396061495230464 1448477518104179044570582713630720 -849651581663180646848105020550807552 8342179028471776657161103335227392 7745374805524076360980070511149056 -616793465988416003095591473303781376 1355903317556473097289568046022656 8382444114159961500940125232693248 -745114028096045979437694681761185792 5547836045515608412520132252794880 7844424298112138416773763885432832 -683126311151797938796831011399270400 2937466877328841425072169156608000 7251794899119980661655251237994496 -19631375164194105038299051883233280 6262513975163752205639705321013248 4398665960352359262319646961827840 -262669542084160271023173124080271360 2010242164528441452147083709513728 6654901094478841590763269413404672 -337217568763443369250264822132506624 6341939106274433098717773367869440 8056940955615066496576471756177408 -169953713548027607618923026251251712 3890168244138732866729267198689280 3629830912369638286748629348646912 -137521827460361925003768027288698880 8728120962925377788254726467354624 1394205673746405897236822550904832 -552076362028900121336655318706290688 8631778051788055708201151253970944 4393127161581613012940497344266240 -902997260750870609774860597515517952 7189081336748215935660858674249728 992305348104140976214656216465408 -57747729923728884642157645816397824 385028849314079849779370144038912 407706104217731249624711897808896 -441958768348368756374705253237391360 5534547021238318807726992979394560 7707906148651652155070866494849024 -771155582180475825076820017384783872 4436403288735207087625914732773376 3116395486921215947332500615856128 -171814689773042556022081908088242176 2613093570242753913400920259952640 6891317689813179008685573211684864 -969023367657999617386126258370248704 1480075889969204094854390844751872 5554285895426295613458223336521728 -117993477684074150148836417406500864 6872856303361716600971553352450048 5679337938062611627791368887205888 -850340024115839520636706092327370752 4753531860642834936565877329362944 6461208609646738994883123092652032 -98200332432220845231022934761406464 3512190403341548425803424941998080 9202543463459889051341913526894592 -514951415045643281276260018601066496 7865810842259167655512939891261440 5708589433739377592753464801230848 -221663926260623042674522935816880128 542081685362578761428855620108288 9754290757829118319157956875124736 -57704473368287434419225158731431936 9972723931915229608969015408984064 4582537087023856216040047932080128 -521937991919038500733017106478530560 3177567011698409165762684623257600 3518615566383781341431429332992000 -839730200223581090945725616034414592 7559429328707317921095821914275840 1391622784600495183393398682812416 -355785691239447756194719704681545728 9358536939712630985161851952693248 1284729280276975455483891833372672 -332198563079188523018518237401841664 6756237388484161366063013408276480 9007192305334100961201988185358336 -909776470953724938116351560725299200 7025654769970267784497506186952704 801266870360934953344191619399680 -990682837624527660177207643441463296 6463169933028547824907869917020160 6298234387810498712319299648749568 -659275076071098875585798725728993280 5589030607705037975293629615308800 2234283648108894924361749137195008 -23093181482774905375096389249269760 720266172830257077436782573780992 6826899833589822037607391676071936 -9330860032345939011080603282964480 3821775349422401011455492674813952 4056239151718135260705063658586112 -483281458104675028465625723796717568 9359046154143797079649078527131648 1802197476427447446339770260652032 -100306912025883664665669006421655552 5195262747635822758884000625852416 7941029319848623264545817831145472 -382554038260408869737179190986276864 4411002239586041065654840264228864 6441291970479311295454305356611584 -296619375641817454238945561720913920 4660737409165852576898887438041088 290228055602025087191815060193280 -316033418636572971150080165864800256 5809110320306592857344593832706048 4660437453090772079831278772289536 -23377164170698163977304671147524096 3671009182947719195674887321550848 3249237083434719856704916878786560 -395911366127242619350955931803320320 7795075357324951799300127557943296 1614941607724483915520728702648320 -363061657555520664866090389820407808 7573529881314847763959011558293504 9008427446863511292719793461788672 -519245638547945521129191478464086016 8981573808331308242103342536327168 6905450954624684788685995897782272 -783850897040278382587694616804327424 3288079221748401651858502609534976 7060162311824247012112626041749504 -704114937130833303636013712536502272 3569840522464078288753149698113536 1211317545144924569788738848161792 -525039106911800491732466112812548096 4133439646886764951743959075389440 3802975694801400760107817198682112 -705316244196251837120684522460938240 4634135324598047385314665684795392 36567801603905320070541809287168 -939662952378566116862263750226345984 6133784889834827077562132064108544 3392953885397840467761517811466240 -442899675025540240252018520240422912 4099042225918804997683255982424064 3622195105929142466458097211670528 -497533419030979804192433682195152896 9354370583135866337794659027255296 9017410509726676432319758808907776 -802993013031436845061248487616675840 9503506428980586371774572939706368 4189722418698110036124921084510208 -351864555799650139410721513662316544 5249815811093606530786051412197376 7905397782784678901994813722198016 -693399967915029228549292928750583808 9405465282947659877244508489908224 6767553068320616431996594970165248 -751524975482030681761198178719236096 2792131729696616873129999440281600 5614040223223625703019473035853824 -956049185508388043799698103114661888 2257463284912031497079659958370304 3770186802710944338753321416261632 -653910148480548776718574719869124608 3118429016643867353626645907898368 3284544315192397342181416025194496 -398571961492972941050438976446398464 5089236869004519767171338426384384 1542546040327730668630543620374528 -731854674469812250565962882103640064 1268615489938261133721872948527104 6540615993879048587472908274630656 -173441901317039925527740086881353728 3427576431156247554329932684328960 6547878575685254823638560428523520 -59464354469640337742838170266894336 4720590168322613512664484109352960 3136831780538936594947951451701248 -800497765334832538517439307860410368 7492765221317110368299197162061824 1118024053584319496648109353598976 -397926352642394034406808414006018048 4727072616874052466510309091180544 4108683390602506785911242229809152 -356342339471165839134806696783773696 7377679248771209814581338257227776 2898312081793922340668101416189952 -704594124529096948134064492503891968 4071812005518399493555006614798336 730730652067746771545806941978624 -346992611534361128850645820094021632 3443015323055389105327309798244352 344696094957170787136404658847744 -563748595768071526321500610604564480 3993093284694387473405182237212672 9897068846837149613442700337479680 -664496214331871880404893245850517504 2648748956030830924469334070788096 1145255514334948276804316058091520 -675846246480385662450488910620393472 6243338518511053551231367634747392 2451474278557598370504891883847680 -801183181370141816126705651305938944 6055621459856997667561159696318464 56274923004480488797638854967296 -330415435370763416126961427136118784 9944880246260330582299811489251328 3808972826796384547896343608164352 -802585969267442634535219650604564480 434143128004653400205396027637760 8467898836163662535363370149740544 -158816649596768260695350339602219008 2920453858858676569050386282840064 1800560335475456046613342676058112 -964650845550866261514938107717222400 5166955517258247856610869113782272 6560880059443363336251614330617856 -876955596715750915657500930900754432 6555956198060398920398984303345664 8719521501751193824832580925521920 -675625519095983082710807592164130816 1800023178295495245624124502966272 5546019940675494909180367224176640 -389988276398506165875492454303531008 8381083155733002641601839692251136 1162828003611482289124754686214144 -92185983792896788363203378424053760 1157686227600359982317637382176768 6440630350315252741551389145038848 -144756433130322182996074314667655168 5380297934678680016915111102906368 8699109383889418017330670554054656 -858788036390729422427081369739853824 5448699674404395491749394508677120 7490675864404688864724866341797888 -947843809685218475702620336217391104 5042314718207382425027346222284800 5512304560844338489399898353434624 -317199044777612138280738236351381504 7389899316034558142534858596941824 8834502426770994929858044844048384 -268579236278421428862892067883319296 6433516424115347556998093264125952 3388028659339988795324152535842816 -896992922525616522045216480464732160 451207687694213052951907908190208 5152280844633134695176527536979968 -469500611776942217021386708775600128 2797938839213443221621038924169216 9962503563092584448635012458217472 -400672498216899094655984754355077120 13629407727320645187020651495424 1628895044480040696111216780640256 -319906726227156041841896853669412864 3287085694671326433456548036476928 666135813753856827978518150250496 -29942860707536341625797417002598400 6629074640830419880869292828262400 9028701639228991344267448345952256 -318353855708619066915221604170465280 7750322900970802626827029458190336 1439396516679617349869285526208512 -931240490072877858929749927133184000 9937998946708248197654182405079040 6775442953919927356046028618858496 -487751505278975221877020928860225536 5437363498421113347673937221255168 8691671589925873072457174153691136 -600783474009443175594389106960891904 7870547106609013721544910826373120 3128682983361197245392045813530624 -563751496284557811119669228379045888 5374184011979804983282991282257920 6732794273354561474745297019076608 -874812443691376592873069372208316416 9863845700581439091603629129334784 9247317425976236779771136493748224 -237365010192226948493375265086373888 1814429903991286275449846295953408 9258528730664697698905638725222400 -799376017133787810971410280740814848 3669130743813768969211539076677632 334890600178511728443498719870976 -601688518966157131209430331356610560 3954162745125474120941440837091328 5656272163114842971237671912865792 -726018974873313432658813069897498624 3481917517669609714933481150087168 7880328505462423173565335570743296 -698676170593595473115748278936272896 5114252933319353075634524955607040 666680078294318015047910098468864 -166484355828580600788862466546204672 6903266764527050658487183255535616 8525681910224357473108755497353216 -26753316924897122423912479420579840 6807098540620700283750205353885696 5295069542478922472356630446997504 -719730661325350427941612757930999808 3523969084503848659665106579226624 4415486541660764359475444251099136 -8951953141495987804363807715753984 5383570449701877811658028725829632 2866709463951864061788876236128256 -36872221007135773575385195749572608 8353682007541438355512122983579648 4695469839370600406099639626891264 -270923055373752945535693210305691648 1897805517155980210060826710638592 6896295086578762090177956589600768 -133152847344452508820053184701530112 7702189808975490086156536198987776 4021844490780069007127787207655424 -467127937808065519117431299524001792 7074420295978208322820315514142720 4950407659487720184325783917953024 -564703423663231753710517228733988864 6556068216256696506001873138876416 1449837219314648531190825126723584 -962911496101644001397464212971716608 4621886261524779740573688720785408 3242309781037507320065170268487680 -362320724254169379990698929183260672 9183547825705903548679001810665472 7829736496111466897179307252121600 -559569003844551943491528652216074240 3033361182889602203970687268290560 6009287812617079521721766780076032 -149120608700653371568732148974223360 1183469659611159317752677654331392 6685845509146789331667579381481472 -533670540569811094470121101014859776 3858099269341114014014330200129536 1851102596511309303197974503882752 -754379219031775287973684000973651968 5067752565876164407660378801045504 7618805034531037974988373769584640 -903674957924077540979471501171359744 9686750985597318278907154237751296 6114166158928046511589276791078912 -799647849206476800496330785486274560 1580366518474031875877791963545600 6515772083891746263987909130452992 -213016535774393972865629467386576896 2040711079431532129330447364653056 124412792959272828743947430920192 -489110308960407262752621659340931072 2152573686617104925998641510875136 7990063198044197553359793130831872 -57448661764250191878108611390472192 1044968892315062763848789410185216 8334087403240018008672014537064448 -427552282167925366633066143588286464 2522213788447219910839783118602240 8589979036723934076051142396084224 -737999120477395164925591285544255488 4832196604040972625668519757873152 9434468864275799277672764184461312 -108039802430376736849742188890816512 2557577618073935119922343083769856 4404004665099191673363328424476672 -442764068301468410654003380361363456 4869715488212685519429095393329152 5555131657244382414788856211570688 -799620459618748449926569844551974912 4761463589045766263372916772044800 2491098195734584792847005601759232 -333922883492333752166581988325588992 72713345525291246769154344091648 1641140750319393742083018375299072 -292152846533481227521554879889801216 6785337327333801348760958098472960 1110231314500250638251078405062656 -802894729943759759015764314319486976 5672362717195512590711740063285248 296503787858057713780717120389120 -187855634031024332539942875485437952 7396546607397666535725820983377920 4183356716356595958907574123757568 -38879230728571124916064002502557696 7870390596090015228476906325147648 3278088068688456711175844023762944 -333048483042619513165255189471428608 3191659138368718225074336942784512 301454827571361682462716712714240 -846608104962248029119592630398746624 4021193655981425805535443987464192 9560969147516333407116956083945472 -14090512875888249024202424880988160 4454044337027785303225923392241664 3582498741471008694114390638592000 -368944442770637501667398041764626432 3963252720540698064646001169268736 9572743889658749130372454922846208 -385581977251408937752137395901300736 3795369909604246720867732125908992 895133875577864869723458771091456 -443995566095246250789754798958706688 3958515206683391001424119273095168 8316000233123738626499831188684800 -665985805476951634860693709144457216 9963056368737693975687458700918784 7770541987675197315821837377077248 -193930977552116553504790081005682688 6837352575754344649660955807973376 652242576093968276064231097368576 -461696131647224039061585716794359808 618072565618779504924954369982464 2225009897908810824495196142567424 -492167395272243733635895173801050112 7853480339443624978100269434798080 4270563056686153802752621054787584 -311496646553179785476374119340572672 9819747706432054120338658370256896 7540740261590878289901737127968768 -330160750599931256777176602455834624 8177731923656830343391262239883264 653219644189273692365686361292800 -246770624207768519176459936451264512 8670879628210729819271010321432576 1148130946686501458662018934374400 -602409221342691547339149016484020224 7875459220157568664941416484438016 4479090921488821272435755292033024 -369957441091547141777910811645181952 7953411274895623028278997897183232 182975937310304344805516146376704 -435700200045730826095286123749179392 2153715206079620676925806042152960 9723917356198373081329394409013248 -550295036678899661603057866519871488 7594333573998130790031512072880128 7301018402244426552338914075475968 -44446705873914212395794344984969216 9816701178918921728842168612683776 8661726059680983180936645384863744 -443687908182197769349286440543977472 6165874614085218356607050403807232 6495521866179261890260817409998848 -570285146364077079889535009860616192 4580753401244423454817716277346304 7609379405128623288503299423076352 -137487591121742730551724261691621376 3492936994609983221291855963488256 7829616615293455312038060242239488 -251059863893094324919499519411879936 8143398815727880931669147901755392 7156359511621838897917452024283136 -455542821844024953783673805988691968 3844338650430337165373105531518976 8135020336168898862941219363749888 -509281534836959795980315540362100736 7840327065471124093676071843528704 30044397543751343038654324932608 -967603104131452489457662462837915648 2300682479611736407686555388346368 6047602305033464289898656459390976 -649479229290943861329493481142353920 4789096768285330491024610569486336 1607532335243291159380768197705728 -773340520489263941729892562869682176 2315957621597689317524229513543680 5896597162864089366419124189659136 -181497752872964467938537615732506624 9253319476326359098048395608064000 2378729826444521845096807267303424 -96887098938258264130609803161501696 9898867384378959944780721508319232 8986882743536539262815595889950720 -82196806886218224432303315947094016 3779386085443152176872119152410624 6317119692814077279844231217676288 -865746153728281816834454112343949312 9887803505708022650395796166410240 6909495186122667812165473523466240 -301034231422393743236664685987102720 2991823825619952633605656280039424 76686867391010820260119072210944 -280221655001947094412985524654440448 6595654938812994078767752713076736 849417962540564863267013738364928 -126853906442814178342051072807272448 7936540068738646288147791118073856 1934364616544630791590459530543104 -653914667173918490936720635618918400 699169243040346256456565632532480 6558359360347947126909822996316160 -368138416697374155753804880693690368 7833455101692716795127402594304 7610457733682511498852476282470400 -342882304288997274693708298701504512 9603432131411270239099083038916608 1617396570798181569063517606117376 -952842575699438300504382966517989376 6482528987938448054293362873729024 9649157273193388197187034820902912 -319314031018371343107572554811834368 582044885381089586450414675427328 4824829489029576501112403008684032 -166566765513721380724930509438713856 7410340266992447920378446631403520 1820885617859838156834690685730816 -864731707756668653544535144513142784 2441677934297259781712116291993600 3107157677177746348002987135205376 -849329143290578442966514306648113152 8363489586919470284713133145587712 3604981714105616911903710366400512 -749596059339152208852361441901019136 7075756954324555046838956934037504 7594383208750011643216042481680384 -791594272642474387790817111102717952 7952463684646832288231864076861440 8676371888448543872738723213869056 -885304515426726531510310300857401344 3347088722758612573674452755152896 756973333673606150621197181648896 -154524619955518159438145277579493376 6442157612925728546086781829775360 5130421646686665572558737177051136 -233115302879453562667309400940609536 4469652660009508185242943658917888 8718910035160551927226240455409664 -317485150481198991464347022542241792 3725293177345797545977341089415168 8048860662197964320066613536620544 -984556417785355897289897283724247040 3792494293016009752831197360160768 330501851213489485416913008852992 -393478917965643109446957915409743872 6536815898975398286471086766817280 7875334629796391763676903961001984 -23826683764108032413010296643256320 7263970242277560885458227072860160 3233517330147497042436702987091968 -314619132189193489550184778819436544 7920115426448622344770921502343168 7109204706549176321612942285996032 -961041460249569348569647473504550912 8914720059145963999553260986826752 7867630922904106257219256307417088 -299895598296052774636895369584181248 7527982788498240046923938185347072 2228171796195541183823337981214720 -360439710640969166303649687129817088 1873757706607185147463969267515392 5610425012869583173631104776142848 -279523559442687145327937591183409152 6093262396985819346516218380025856 2231210043618995356173309329801216 -242733848281759760554614815780241408 1351502808547393392767262347231232 2338357544218218561627523202940928 -994246590782861401312639444332838912 4668259998501384501587175253475328 5904077180314275463594256512319488 -92974284120127009680081723108360192 2638933541658783394757550347911168 9770147074990165232935291806810112 -747100869458030061230409741659799552 8171873045638171486891911558463488 3248848431356911108602780035579904 -988444235163325849765130250722738176 9221969407202004260993443108487168 3898848458863233037960355994664960 -955469393720268633431954515277381632 4188719748811740057219988927283200 3715972088857596223494468925390848 -62214284177069209167230101392195584 606212410981676800812614162579456 1845275406867405418277439264522240 -996809950463772386896757778980798464 9046888906231913840928526507704320 6152932575609777695955912633614336 -175009674970790546255683074807300096 9725526657203357765335752667824128 3517382188682745026169979229175808 -951823666699802137478114333717168128 9301008965587560551819451039744000 2953163025884651964694768534945792 -173869744790000796977475892400881664 5672774303074843565922708331954176 3916687769886291877025905205313536 -355548223701052907399695831708729344 1042158278010206151467176011235328 9129302289249827991651375426568192 -673929962315873920869776340037926912 9613334020496367081115126780133376 875141077235856704564813262487552 -473596303119304445468349460002111488 7464487451919786639663686668517376 818352735265732045541742286471168 -313641724001766667100350127297003520 8230153687649199241858302636720128 1368902007552159463033913697370112 -602740944924007954008740204810076160 2796662036064684420379748914429952 5185815931238007952853888191692800 -662088597994396869708486802516475904 3631044555289887870034759376699392 5673066632967884559148772145233920 -939455645978579314563542396134490112 342348848847329595676436474101760 7050559463891618516373355779588096 -4257810038016448095975197210836992 8895320434066983438346570510106624 3629227118059201455060512747290624 -421475793873578730708875867875966976 4621063735964735912148749669892096 154845219352308782932042906075136 -237742996190954320644060391558610944 8435185340277544302522009422659584 8348448968891616469218964828848128 -145615966934793137816067108849582080 6730395235771795954684877126762496 9216136530127896294423625017065472 -25894008702080739754238596870045696 3415273737607597881700522290839552 9231182224568083229076406696673280 -748634852576715239804453185912832000 8051271832954772549285343139987456 5935525493508963201687004051931136 -125184423180867569297789081131941888 49349387488053740494164953399296 1489426210707003841507551382339584 -961773535275319596124927352270487552 9879083898200232035222445470253056 2888201006474409857621910500671488 -838166999853479693206528244137852928 4056809340424862155967788807618560 8903089887742428017506439741308928 -269339637269000058645834815850414080 757080631565299776695046342967296 473926931249027852305438599020544 -860694985811066949292871663338127360 7706135366569538296837908839006208 6331537305228858704248924920610816 -641032861268332769499137367854809088 2639361933470374313499945307471872 9273727265327993221274832111403008 -724659762503753324114941982049042432 1864927434816548009824888113070080 1633778608918543034133968867819520 -996091552829371028435803067429945344 1507617037495003335974681720127488 8857649306876185160998341109088256 -255156468602105109164081768151646208 6212106557219100435396798334369792 5900799664052829529761044758528000 -404318154231717572477609787000881152 4963902218018012408273265577951232 5243503581170279892787257222889472 -925736740409481920690701420470468608 6346154165814201360594892255920128 7861521623812871907429992076673024 -719867322047363195329343227745533952 2084197260039782611599952982310912 908038057815950454656385129906176 -648479388952433403999074426789298176 6262314507419774648356359985168384 187114831570669155239325983571968 -983547002245911650281098823939915776 842778526090146561657107711524864 4953430548536911278330625250033664 -766590140929758889573783230616698880 4338963795553737106201677777600512 9093396516121706239521338888814592 -461879983493597225550078898792824832 6372104701763703820853426723487744 1757389837633930467766199247699968 -228296999611449804786079501167624192 6255604295320247133046651739963392 1452326639950233010303373966049280 -932945041154673656044050432462422016 3640647705679038264492396644401152 6862827894320851930074528276807680 -760695037798431256252265392257368064 8058318531080987008496563822526464 2560648057275629945205562363871232 -775069158549256555872229426433359872 4969929032014873761251246546616320 435790745760711448758064309600256 -941662458999267731422229885412704256 1236021745888877009500509575315456 882295498430756087949482824564736 -131641760425389667650404310711271424 8091359327138746886338628884103168 9757097517601400951778769438244864 -64887212799311382006297235506069504 9883388564008727635306020205494272 4509354061042617735923789597769728 -193764722181033675541175645174235136 6567063472947157650110087490961408 118763997627172385245468041412608 -76398391515876461616242375956365312 9583751221215431938532924406628352 1978064890980996369627506639110144 -313965153646684232782281878527803392 1279108452268960497753927555481600 9343606390367800257326972082847744 -72362390635618979825312141573881856 3683924867423294109869826931425280 4279489332942969748605697993474048 -492020941437792924203282509219233792 7958092263161551450936091497988096 2752239013632130853574145151598592 -142707422668040378661859677647667200 4340808521625576341838804780318720 8671881432325072268365900929826816 -628774660375359508499705091850240000 7567927157897135773857793204813824 7910558022546246342126466074935296 -687949637647015487208001555669188608 4601878938452207782162553292980224 9559623390854659444731957076819968 -724144162235995519084619504744923136 159286884973053037724958225072128 3723602422784687765094368576274432 -144858525656186845833157881802784768 840912686748779814490490802274304 1451631219184341081584143721037824 -80517021533042030312990868502478848 5533633226934750396489898737532928 3213965520357250989826908717318144 -104534740021550113821134355360120832 7687520498352966278254653427679232 6150601774667852783627009175584768 -776081973458756694625510604700385280 701202298435428805314533285429248 3964503017737222542893643231920128 -722131187855426382932132366343208960 4867382581148510810068509580591104 7021068972601481637992724405682176 -587540686480882858398985657329385472 5513062216154692732987757280886784 1723353942616433228742412344492032 -409295831619818834791828984734679040 6378617544532481253221239007215616 9516051436987377740744495823060992 -851134709135297549262951851403247616 9796201826426264599696947500023808 9521331830791581072846613951545344 -915162289654010405853130037603074048 486155691569390214475701502869504 352250384877109851783557734727680 -634324539655284423648639477459451904 6661250466819866657050692465721344 3468297283432700193333887534891008 -886237652631268414451361627590623232 3785586137508788024197332525383680 7512729763692361555449452995543040 -43368962428535041195844061760585728 4163760727461611126223874188902400 7970885586118668516164245575958528 -92236548837372857210906336647184384 7471886330480023292327690395189248 788025861406480792564406612393984 -132485833960399629386695979596513280 4172945120042298154840536373002240 2489281222070029600709478981828608 -341284356306672932726545859590750208 3949958606037224700028575467700224 412823449718754598957113967378432 -710130168166850577599226515868876800 9880807894548296667331300870324224 9979731927950740997753848584994816 -42704749270305081879222013053108224 7893984379303624778075541472280576 2589762787975624954208569150930944 -880820133901362300008240813269057536 5214732941156135485867640162877440 5415848332852678393719500436406272 -644688911850217133434482457181159424 8393017449357956611467469117194240 3673812769722772456857237163343872 -755125032024364187237720636635742208 456332957177184813282908356739072 6609833437394564459601742778073088 -526594082040756286408849265247911936 1755115919995316727833675599708160 6948184534968023104062747901427712 -593546431566599384828676444491087872 9953649313596540068261033462988800 7143367810766813796907428500996096 -129989826558345174418322111445598208 2834745653295982712753177258622976 5074427232015949677333879181017088 -607815003825766031195825444462002176 777741782853672576770746808795136 3734189383208688819181434236305408 -646446932472727224838998485245100032 2944735844966864897857725357096960 809331840740502699562081588346880 -416516465461262965613616904540258304 6971503603133276225331026980765696 5840333249300064408452102319243264 -937864407645992828346867822758985728 6384059218310864020796226928640000 6954513662863961482927314183389184 -808841468212354070781001820996108288 4951713257343451445904562465013760 4716183316371486630179587644981248 -686658513801698090400346339845079040 8268504604007006962667808079478784 6578663253185767295010008415076352 -982905148243241254380325724087123968 6895495312187753301471195335491584 5171715436938299731557505430454272 -610451067179877536843366524856041472 1619325995545046958787449229148160 4514723985941463426164044341444608 -203361628418056985497403443824820224 7331380946388084752085175905550336 8042846002898019792524352931495936 -647754105927035635403514886309806080 9815019577928545207752759768514560 8085805572199635883200303851372544 -249591870513184067088951673360482304 8562614750016420435809098197368832 3441319818957773881916071323107328 -337243374064510587008901602030387200 2983777883910536574047796439547904 458121527579227298320720917954560 -273833721741361124956136081637507072 3725909436362713791847756195692544 6473067209267444788214653366829056 -202448189539216737818829098286317568 6569272752119147848969455247818752 6685452560493154397161726924554240 -585828081309576300090756615465074688 7357774346676749629553544985051136 952127773323869578827608530878464 -77059566446594914963411671692869632 5120583938606888502063440947314688 2919071767243514698306011506147328 -501958105954227726702284861159243776 6881603172082958755476438291316736 9922750023636059563231658974904320 -251141662928776358404190637423329280 1559313990414685851730442081796096 8375331067545939098548562393300992 -800602975068943383120680371825410048 5985185567181106070294942856511488 3429384767019194013101982442586112 -645177188320815515161855510267822080 8748036344876321014881895655145472 4256001085396880298722813143941120 -601636432505321751336835252716830720 6354290364647570179367589912772608 3449562752367331416246883977265152 -741746820413009899207759465086451712 5813028734907028505925095801225216 9632459403406344817071106260205568 -725134724875682425602152177652989952 6104979756922067629365157529911296 6548210433447691478842823579533312 -231302155883656962202619077401247744 6323606734293041188983469464616960 6590560355242443403752986069958656 -773437190920072805740547658523607040 5731986409489530318449107479298048 8389742008538646475498754303590400 -214139174042282698459469706535370752 866854852016467080279129799524352 298068625772244342415472721920000 -934662438756460526333938312090222592 2818870080338333293898616620974080 7770644813911619555166221114540032 -810751317074110270905394560258539520 5959483908049221412412038469124096 1219767543248592926444008899608576 -152683339761392842465895147127177216 9503354224350642498191108299816960 9748289944776807279648756193034240 -913090718379774512733192619768676352 6250172611808710925230399551438848 4184042203715248559769471405785088 -321775242347811283564109042227871744 2970091147629254222172608771653632 6527506062471158851044732252979200 -970786142070883938011145056064372736 6562986754923436991742613273968640 7560284905712803631901243422539776 -104025846178327034774696048107454464 9784796551082524153612009996288000 1829944987193335672203324178825216 -658703649834898631164395195008548864 1960728850600540612684827796176896 1233292723278662132830594469462016 -972902008558200970833543613913235456 8450083997092257025727752659009536 1211107956704611901209329755226112 -272523127751744564026706729679978496 4882063539856064782255167608193024 4652393149280866430765868339167232 -362482611367877507747969309637345280 8055530279553119481295103594594304 1115827458692223596161231046574080 -918133882962682285430007444117913600 8670768600111128211605771297751040 8593303978813220192951518413979648 -7908865762894280204545735853604864 1436663011652690569566685849714688 2764648008870954612165521312841728 -487122242159494208731315289592954880 3507819111164016159002666318430208 7154662879289013219461300836368384 -793632219767813154991124182944710656 6675176883302276095581088385073152 2529225803333311259844640476495872 -828236006257779814295763535083339776 3620895617628193722677173875113984 1672578528402195587683321586384896 -654018432322269311211945315419553792 4943267746157119938655399243153408 7783123849457014702106190576353280 -746983976687363256071548789128691712 5279338422040312088097826921250816 5543356468402103150653791988088832 -800128961799084609534212040950808576 5116011367310624998211274837852160 4977644185889243152004453672943616 -88029953773932844618286284528418816 2772270761109975901442753018462208 4258167223107205053114622811308032 -692145330704861540311722374505431040 2105465271177421857438095663693824 6844564448224671017848825723224064 -636521371402241658526862838838853632 3491721482007160642513866116300800 4741226506813666836399123282788352 -806567822321758552919640211265159168 8979326600800291858214788026859520 6585918138136481054683434460381184 -568802015217144371796832894115119104 1288329669548756431536389053480960 4554910502428079557069963855396864 -867456723754554362124618347719950336 3264860104622253115899365552029696 1737449698141075371492243683672064 -686776751012138096150553142528835584 3918494443274439938270751012945920 3859469124980448643582986813440000 -183217088089129498023910582089940992 6980418013335846603801077496152064 6064541364095852205606776384520192 -111989423626088620552583602249924608 2515490328752295348369672397389824 7605118170872676186531995465023488 -827631462701338450311116322089467904 8241214746378224327174440041316352 7642671300741888244278767650865152 -900057036689358484173658185082601472 8881147016554356934447092111245312 4294711702516543820062114195701760 -758900254348589592702251143083851776 4454142114479576857664544504283136 2571875157724994238630706479628288 -645487619774419506053712793466568704 8823606034325978685089574390071296 797344730209203233869702698631168 -132571310243259207430106502871908352 5651013020718685086536820412383232 1181325214142653904069433753600 -558840065347100919082984304346660864 346673955547246612762651042775040 3180612005718021789174724693065728 -832460597434483841643756555134304256 3713854365467603825559891280396288 7005971755256377726839724219301888 -530045915365628798853253136906190848 5826468107945537900093256050409472 9374635337944552629271954605473792 -74478057151481147389451478746791936 9958533096004257521151660565463040 5734745117154036486950632959246336 -508220551940693611319456275814678528 3937076717506870385261418526015488 6395234630089089814675020471861248 -496795435316378847246245287346307072 1775534676994850220227201054277632 843584818346660043152288510902272 -264096684101685279470152389574524928 366990423602360831972932495343616 2170090885995870798393717815246848 -335730335265836152187331947219910656 5362734792366804518723911629668352 5820340361970122207826533347753984 -337340136810896287163709080083628032 8160005077529933783729671856193536 5665028899226477338808712282767360 -878780343932293770116406853966495744 6280231386786270028909784896372736 4431268927041733884888205454475264 -404717712690350813987744280475598848 8287775398852602829686247551664128 9572599363413839217143406540095488 -846789708501966736375821147767308288 2553924829363769985347495116406784 2532473224625541939920728529829888 -519702341499658431635996006741442560 3324402050216846516515052921552896 7056601502624853560477814198632448 -651405958777725081586110725445648384 6914050931567994143227356702048256 8484487632020986104769044558118912 -610987639993176689245337001972989952 3190617244517690313726857324789760 1077373901782892676542706323816448 -173514659740779105661630498356592640 3789743870097794867095097806159872 3700212124561435098985658562117632 -151950235128157432889559414420275200 6292360894469139087244081986797568 213799069700407900422268763766784 -598956424810774867159293320484618240 9656514594540260105006525892788224 3408407985167089469080098509422592 -425015404998240952013035351507468288 8660241147934225659441070045396992 4101723698376516863650733519536128 -345874228508213437198644017354506240 5062975120339366470855788553306112 8312105983517808742281531296317440 -718313905129673079137066075358756864 2293801668201074962294657767178240 7128749976951041403429085220175872 -492750353643809300953134557520986112 9699462782876637985026214113312768 4639257806423422650621418564222976 -358918664367976231098451242413719552 2653241535142818566679112575877120 3525435864032598185205699891429376 -398500183606454972040290339446063104 7543643489395470088882137029672960 2734993436135190369988565094367232 -205767608943535406865798050915287040 165076348965078966670058072309760 2789895134055770842894148269244416 -304765848933862889373149157717442560 43916979395417314904563712524288 337570150750654917427146388406272 -259924059149645087390243559013613568 9821788529200103944442025363898368 312568026328003385033152387874816 -171736631624971494582628262193659904 7466100863815700487151029145567232 315955413221937547335583406227456 -493869888198553562256502525440032768 3639759526980385200639640436998144 8262613024545807209557296620240896 -128415531111213573781776013105037312 6254275645443155820049882803077120 9942929272305510333614401446215680 -126211391485093695063854324922712064 6152665218175449528256790169387008 9320776195491666870316580619681792 -575653052376780490918578057824436224 8100551918530203447744068587618304 9340564475700870050382751830376448 -537942973395767354331772848338632704 43140209479387653096190207066112 2153168534564583672318602615193600 -830846415212015034992357050498940928 4003074639433197439575316842414080 6078359988440321787253101187563520 -49886714265449838100915790131757056 9015854309614097744416945651843072 578384558028609277579153670930432 -204908899864951848249919140773494784 2295340709326074238453360235642880 8726208314878871291408559474999296 -571822825440120408449201906370215936 5137420163723828973433182637522944 49037777223116319411812016586752 -903332421122604672445064809596059648 122072169120924234291825069785088 6770776861910344025641244531097600 -20677009586888542189298439136739328 587944361196534091327575131422720 1008948904276256221415240393293824 -394422895380544741630242606916042752 7910706435608048615291835065040896 9284831860015553411885973888827392 -99443883455253411581944416748699648 4041898013144108369128614552141824 8212593402064175387574755083157504 -613602004071710996634422167176478720 6915544200182714056799333308694528 9917371496272334220024653363019776 -159794100564312331637529266282823680 4940558576547531491767408163553280 4085485722934936683045995996512256 -686792485018709447190094231615045632 2629200225593264406023598101233664 8507088276549566966964502061383680 -820179477186759986627211392523960320 2604957214800404030932617602793472 7895806467769655464066999035887616 -811824970139236667531258764803964928 5494712927730227107485357612990464 2804507988156172095863369588801536 -196317441623039592673879098629554176 5622788277039681221015031181737984 7909445868815234175852835273441280 -123958596218928282964527067151990784 6732302210201950163468938939203584 2766140422475084342296537848610816 -427517274313694095519595591247069184 5075124533225855118448188391948288 6019701366153674146422637899808768 -183945794104907088624653332589314048 1978164521249096984595722917642240 5642557553154025169026757158764544 -947535864539957863490394567284359168 5661521281511627579176762982006784 3820512220650229315990204257927168 -123778239283390898791040460590678016 3412293271543797332967978252107776 1618171885447187034992575820857344 -731714186369562888213270923982143488 9779178893019326137715045307514880 2315209816811464216731389819617280 -936325543456066528685797327750823936 5559928449169923434873751123001344 2695995192560823430031777961345024 -353638108307141161475993739143938048 7638239447256130271196794228572160 9146963457662827328850394110492672 -963495210808780194001854251713691648 5272303917000154811405011121078272 1262149603170379540412905321136128 -437352074717289340112479714707243008 357337930156416082235089370480640 1920920093367916823169642344218624 -199358398430342356485746246358663168 4541789926845705122038830847754240 1016205230680141410603284545142784 -624851122357836642943689734846676992 9532448437380931124628057978044416 5251912675968227408049758906875904 -125877854970517955454221734176096256 3888480582744156142979787568185344 431908804252278978277735428784128 -780116497708231100389539626887413760 276255103639094729433940941078528 9521390009700520533891840649199616 -348854225094102142136807489877835776 4233638206892884852632579469213696 7112990221466854069746494351605760 -370361320117294670848713083051835392 7191669310015486126578395009515520 9349823453969274335590465906147328 -830242633816095103690919237126193152 4527741432830893723132426606084096 9324114986880996887242846630838272 -170157603552717775772057036956631040 9546443050666829018215267065397248 6706536882781456101505653805154304 -539935563495257054184115884603211776 8107035949725745061272879984803840 7540895771251742305741505732542464 -34891356579642741826243395844046848 4389287755173584413118668646383616 2073493909513587425781051824275456 -933303222246889233612134943507349504 9363479068399704003319383017390080 245583039934699171188963639558144 -138504654677901028981897262796898304 1255023496250056594875611179122688 5288376134707456284177537569914880 -566282851678395092357142453065613312 5700704061236895309692474578960384 9450390297283452460716776537194496 -222441162480778565816975467961384960 8391174912291477934385090502066176 2322932125592714954113170381209600 -154226797020216766549622214363185152 8368686249174251764189144031428608 1120834529750659470194638713782272 -372296875369458655023804711885078528 4665789997980410813854084679860224 1329807262212952604489248403357696 -761479086718995695752933730227847168 9616485317654366162541903668576256 4441109617777231393201830099943424 -529217972859832868532673743490646016 3103676714315087346527048587804672 2748698722102443784505390417313792 -644937508821059970916249631635537920 5809831477949653846127298029289472 3286801130703039766962360209637376 -792587772448877700768874533404803072 9194099909495853211805079067164672 670309540154303345508875256201216 -480542318462274408410191163851538432 2348005833128685103243512105664512 2405352172323676794375021988413440 -442823053183206576530299665107648512 9523569499412230960239419450195968 5576405312766474050956946619498496 -948461126461191259833953018976403456 8067863944604452454394898384158720 5695435329331576817766070896033792 -252317298874013464547719781732581376 6125977748740660510644518164365312 298282005780698539355383426711552 -391272456427472539226267300900372480 68821361703006607445843217743872 1438595931771987052779688805007360 -429054453156164310434566511318269952 285190872708109808266236926099456 3383940244080653351691109424693248 -350306219170612745583284947548897280 4022946192282304601280158954946560 7288157478083643313938884234051584 -825028681208437163221235923305889792 6110157559325326330801150830313472 8099021334022541260147098071859200 -778693198248984175175286128841326592 8256185354779625365173218899394560 3093598409507372422184897597145088 -172357876230103850828825702824935424 6227103016060894429458174136287232 4329724482996862890876404630552576 -101725900578042435627918195668549632 8923883155824639788014293456257024 5847596887219812296194701058375680 -683105691324101754304936235201724416 8812872420011935157553082788741120 580819830815487505110460381790208 -653063316889961057892355583151964160 9476762093108752999031947294408704 1772540188155758466967888155639808 -132108321509977978662104671658704896 7922250872141696903237522862112768 7044205285310469614077689632653312 -115335863035309107549252497258315776 8520159005515674040149045881602048 6052187164508548914978659833479168 -571922532108565038691438702995963904 2709503172161759140949412508860416 4049791948274115270177890859220992 -863696169323861786321908756677394432 4447030377285036843352015438348288 2748504754499576398930042125549568 -569985220503296656490127170958524416 9683880086261270679066374876168192 8027328030684801236378831812558848 -362102255911515799094763012401135616 2215224711987882556102276869521408 2974688353590979284204247079452672 -413917099448850368938459706349846528 1029474004407518748186700404490240 5802867782291134085404377980338176 -196508016614252352388545371963392000 1217962854710445849468104108670976 1558891382730262434438702134460416 -257850853283156775873367478120742912 4663307974796212800885371896332288 1765225371229172035126475538563072 -654769385857976679937526966855401472 5257437964680393396803258732773376 7613729791244403794660728615469056 -868413018010599031714594463854624768 1898917307070237002904572795027456 9942376303946594307194671635365888 -145387982891627696955688319692308480 3707507438490300266154923032313856 7476603447939875668050018037661696 -69895919762216378437964245499904000 9633551142269440320942859136008192 7592897497248069383245960849653760 -134793500572922093165166795398578176 6360556642480545867528605412622336 634024656911151266974755752771584 -382432186368157061588228582942965760 8274873675792087086458439848689664 2045235643113986691199946387881984 -783742543877849600754187925880569856 6787314042822399397673107334365184 3759387532205880010874677981347840 -949149305301961896218009024352747520 8659958006948646141716167439417344 3865021129905038576973638952550400 -583015376762534219943680368898473984 9119320193063654332112789108162560 1409661369973608198904062729519104 -651535963830407010700046821601837056 6362929468858574911241254472777728 5902664858643794562208701356179456 -602085358169577849690661390582284288 8894318958432667858743590928777216 1885157018243687657768703538233344 -830444299439390470457352188682305536 46987228255602314854922467672064 9751512375295844503727224918114304 -509805147794115118472694144931201024 5614597388408992066436083168051200 5838943084802999492986617305497600 -173508419964531276339845608520024064 626220225248082776601290526949376 4958017233200601953226620749742080 -252283582714475545216705346637135872 167887343952956220509310542675968 9855666529105039645706097036099584 -667089675955704877930193269943173120 2499329539366930037464959910150144 4721475940046690614864240762159104 -169499526349932961022461838052294656 3110922781884118767971311881814016 7277814787735882160425353110093824 -401115148064549364384694604776079360 8106037490479679518795015034765312 8161692840278083243904541191569408 -648940062978619011675254974096343040 8670738658698481591938789465391104 713526369320987386993927996309504 -886680946408727752455229395496337408 2360982117301626657263103336513536 1763353373182443049097604360044544 -411876663560096735885691598210596864 5035095142776732956528800899792896 4167955961628456689608612470849536 -821361317477759118935195057911758848 1681803506570017105104060257665024 4573353359112246978479697692721152 -879644068567940504330505106957008896 6554284619465199941974286084866048 152179737653624540294062761050112 -954789778717932072992977997057228800 8388044960186071255330223145615360 8449172077127873520679921146396672 -550357659702513744756143829169471488 9818598261383389396457045113176064 8349109789300491437568879354707968 -672603848556374234228524518922518528 7132607802615548335014769349099520 4197454720798620339331652814635008 -717172821430410909789157233516347392 6103903367120011958904481153810432 3004783859623098608696531924025344 -876711599408888539969848794826145792 5595633764457378569311820154142720 431577729378761685433833159131136 -706528755984454194780729359428747264 9205460173695355794391350965698560 3919094462883000257424541224009728 -425137961395791517264599171878354944 6278482200010277744636489283665920 2460777343890391656064799284920320 -362454952953181828908259670105260032 948211873156409649264243224084480 6093391053743957889125095124762624 -481188942045233013093137520678404096 2864707369298025161189202287656960 7585093398721641762732036660920320 -587511011166138190553853451655184384 6242627806991944275358996227948544 4217698657085276965925335601250304 -783466231751896389476467214812971008 1787080072945075875257334821289984 9570801823677747186433268161445888 -761433912799620234603385582644101120 5901175251167725247559295085576192 8471001395021927480729614323548160 -840240690773499371845918990394195968 1154420224337843029958529571094528 1171308501942676653728566171664384 -160363792382792411288310626633383936 3524740467841996261133857251655680 2023057217877783003527828054474752 -237676646689639037332750767442886656 34090382108669689829117061496832 9424790512680436150705547504517120 -653239419048952878857801117693116416 2350667452585769818853125237243904 4779443003809046376421397593325568 -226793971692040883623458944871038976 4251191735120311180102719913328640 3736434084015755121392410809073664 -779399319992743432985051710015668224 2973166235013880888867575853744128 2619067083692473632956654483931136 -758616811929932210185076067713155072 7341741563194293405024061149413376 6491068222389259193058635515166720 -251570598124975753271611486931779584 9681021703834696373460013120749568 5676235188862836595883485800955904 -775259718200168122616941243889876992 8473011407552888708137861741805568 7317194049496997174874003860357120 -69867447036208275250660552678047744 1930318116210588301177878313172992 779653747760635560663388212166656 -737191289285699420587512066551578624 7210597386559146735395936017580032 1847064077018822095397424245768192 -503258819570649016966821975926243328 8414625346645967458633612886278144 9041904859567133710562813506748416 -616422977715083927257848628373356544 5995840807291705188040383110578176 4520787289896593405413937846943744 -583855148440610554886440527973056512 1901636390168386971930288294199296 2764146112060477228365280196952064 -213052727362504560808169152819757056 5809130699837782456960378826915840 754046596386349521864081979473920 -76301483693251143335266454595436544 5325002902764831372801490129256448 369247239113002464120342262579200 -611807890466814150984393819739389952 7455517047157026600927259539800064 4490498292193375898565550582792192 -331139646153235370494115987010355200 4446158479436295086977417142599680 4024741255974562855322914025111552 -836317538898848365917504113588830208 4882583092952780382330392575737856 5308758123867488103306666480500736 -333680537337769121883407996952772608 7388492121531191291846512550608896 846378947646243179696551261896704 -409122209944219068601122155992711168 7099575975891839371939316825587712 1734182776903536432810222919090176 -247340178925095573801958190455193600 533964375456646085849916578463744 654314591386326639268311420895232 -778666603797191868421140613607456768 9418081786528046434125572755947520 7399679098511337641408519924088832 -494312409080397095539632746356801536 6057116564421761553778962209964032 9748044070533588297271815375421440 -586665722462097991872004592513318912 4394015707149434456289353704407040 1544069104507554925694859295588352 -585595793724537350964302820698750976 5774105430075692526164521523347456 9488890461794974255952250194100224 -529220189426400495596146499916922880 9563903857936119104685791216926720 2840983553889950160184864455786496 -766379612280978994482840945347788800 6924943085745001787933652301119488 2056363751940825784013027513729024 -292684707421714957402412729583534080 6209445435060677694852196034674688 5587520028150371802822349443563520 -155027269272609955051889090573107200 6712201217516103672725079637098496 257369024903836250092859025260544 -42684475405111472076571633308925952 2410533701882433209524763156807680 8275769232023448522505047416766464 -420981068300187305571146496506593280 9182474559750494934519003731722240 6904868364175912011505182036721664 -959462729374490674442028369596907520 1521528471785545067584991264768000 5032555373569611265032515255009280 -260966416877943726789288292536811520 9940799999131648366445351269302272 4194059606369073792647099163082752 -174070225764608718716534830976204800 924556091838015739258306536931328 2525225069404721543425601946255360 -6837237107707951140174894962049024 6425973984831602640939661085638656 1633648874523988435440358733643776 -353956661486024316322860305871798272 1580863163792730507848105678864384 6828338300448196047544430104674304 -84315529264704993310325686375809024 771297439188919686175638654287872 6499541530476841977713642965041152 -225497858509731845320763631812476928 490039042246678832771672349605888 528825152267641512467283327320064 -701224210476077939991886333168582656 1468490528606956814013257903767552 8254090448575513680596115824574464 -484359514697402126179021586064998400 261300802267096394178889382887424 9208425791049192067304797075668992 -810931137735716745045038603578638336 2648795552871582436104568464998400 4131715002735887040001808686645248 -388004533839523278879685442218754048 7489114372962977254704789455896576 6443691296704746920645914582319104 -273521051641128972608118340037115904 4051974302421706580652382201315328 9687375408088274688937244718268416 -40540305498221983754332959357796352 302374392188246414052837617041408 2711681307960020233542089842884608 -337584027841884472477029580383715328 9214170544749304694091081173696512 8230671882175851291638214013485056 -925105318538915291829427914615554048 1063239933913163848486892595052544 4958391664452583628805603019718656 -942062129558726192063683643775647744 1565964350369037009177133593919488 558209219147138292211636003405824 -821089469759832783027087361735393280 363097638420692972882292574781440 7037928340331918127297517016055808 -43888555240953724844904604688711680 4442379718823800994899928295669760 7235383446117534161484610277474304 -52098905830945116583053117806870528 8308592319212609997115936577945600 3538373582805135315088881645256704 -937799063987162567892543960453742592 1829943917265944821112585286844416 4046707387995967780626471539703808 -706836000459491265122482198310551552 7627164173806104701950685425434624 8339900037473243092366557911711744 -865776691349535183821324020680228864 6553452206596085518302830756102144 3202095013240745977733075913670656 -657504725417280256499115077828345856 6946564867669787056676292815486976 9881298267598405417445347351855104 -847981355865701264958866261297594368 1111889582535620910748609340768256 7244330901660723868967226199506944 -466249815485857159144724179646939136 5854936751779196533631374256504832 7013666540360996017267732436221952 -227601320590212421809739839637028864 7825927910701964816882431911002112 5121970819595910850314546469404672 -323564756593663857726743234257879040 7289004587710355742734996918501376 5215835988862796938163175789953024 -949814845730047514525692339010142208 7702830081034542366930198987800576 4534407700661161219967992702435328 -484299827460500573853197022888198144 9386845835617415849876522092462080 3570160088995280528432983997153280 -34347486317339270277648427568332800 8485170489779235430182288208429056 7064649162064472886068579464642560 -151207017479793632585083744126238720 9396981005257975360026710793781248 9313630682270583485835125125545984 -549764524065514310652198001836032000 1450703733637920476687278626832384 9091054149977861924430726207373312 -455232650167234058851197601752023040 9065004688422679648969049371574272 5447914142362091927068464604250112 -377133628978978978578714848091176960 3397371702294455442729544701706240 8411714139604020722824250258358272 -504908093073031108119561793049722880 1025135102058762858200387349905408 3523530441566430907555182169554944 -845136163358057472467059525459902464 828329882416650581351025120116736 209233109914198278114580279328768 -588483313470800777892675577347833856 8344962957244326782837263656026112 8519521435178693838292002852044800 -846033639118532403095472996786110464 5713814631290360172246427737522176 360358340109360393506331958444032 -285255195313656812939457611043962880 5163261984903754797483568608051200 5132886096467736707236284445229056 -765428194186032619208185425581572096 6081839049336091142443917054574592 9558265370589452924614627651747840 -964134375771644926739603243554308096 5020054576951871868165247077449728 6479738221977604663959577908215808 -790238042064947354353852056954994688 7907693575058858770241126016221184 1903278282105097050928881346805760 -711575876156857022965923188112883712 4968804091202180746975084780978176 2762572363120061955049065281486848 -701682743691227355954230729967140864 1823282207026472910941330310430720 6287932184748707129103900011921408 -955708379754755613984314737731567616 7213881282547579282030602519314432 798206378380330528929542595149824 -621324503439277484331355797912027136 2682121530020328260906930927566848 7700379101474697610821341334732800 -328550464916147698409148947021955072 7387464950461262321171968185860096 847159103872103435530023550844928 -986494190213959667780974550414524416 357597884034532492233885286924288 1575773131708151713208228498112512 -883637928846190973585332570970652672 6317965721751959493567890470207488 455749801808705843054569605562368 -920777900275900800058513407858442240 8527991650099745871656526632976384 4786893529598863842027209662398464 -109487004076407065208048956217491456 1323951088968779121203109068537856 4442581166761164743451050220978176 -180611414824960152607149039290417152 7145071966479889259040945358241792 2242189711756328876877042272960512 -720633445090179940272847351917314048 6871080968345423101996953610747904 6546664235811611374963607897899008 -29715523049251423931603938369863680 666064150809841212390057227321344 7939500976549318397859476321337344 -496531266745381311016023380392411136 3399517607925332931232904219983872 2685436406668681685058747373715456 -786270600192294520949308556847349760 8453898979095010806709852007563264 9009627547440864541047763140345856 -438087135065211540126132436801159168 2101566916785387380719361665794048 8520455708762827698551717380489216 -798667368596379985161469361081286656 3819497924201705018460164407164928 6934255844992941999671469328564224 -628515749503125120812537215857983488 6908103905600044465919937539473408 976820912425372956213073961549824 -106910936966533789658241479326302208 4767735119818733363647006875058176 4737188239022921460469472738410496 -789791192496226279560569314667921408 4583771933805767547990471486734336 8436570445228541186712650333028352 -618771903303051912081151472894476288 1678512257624165614462177697071104 8640536273846830180344934334201856 -553228635736100263346667936225951744 4921236311000010798918612375568384 2219826144007963329240099834560512 -363459682947892113562243809331380224 5411905865372749369414276788256768 6229175031353254522044511370084352 -750509947536102236017768822682419200 9808276493963644515009860376461312 4098552351771554821422398593564672 -587319942841371215745462035040698368 5031521023017510943082009849757696 4290353429203756139184801554890752 -334192977007291355849459894547644416 1101428334603180336147409590550528 3480090936025429346594693310316544 -433511808386479800221037367704682496 8908769126442445309511417280331776 6757921685091785683318868050706432 -987165672755922987375318817090568192 2037527363212852882246989405749248 213011608063510958166672758800384 -769583888207456357996102659403153408 4764424122278242482751498111418368 286776002613762967979541370241024 -328301481962692669108483321686392832 6891631450694335883642451873759232 9851574468125103436677720280399872 -993902694666509923545379064179064832 254033759567053667694655993544704 217331759623347163650326142124032 -295319508991603817720144283415085056 8430837328852021377842060013338624 3189975546423516436965813120925696 -674705729415137324331718969172951040 3499077679619450643941568630751232 9272616313558061812218652990111744 -97481312643135020835294156662243328 7312691065702611471133168671653888 9754996371413018630212047356297216 -846414520113731184700571847472709632 7931126210331980231645484917194752 1247988180693276512763267229155328 -213928648763382381846173675767726080 3975857189248208272026581482864640 9953046418790662671532753839718400 -517388979359905724680816532998062080 6965388166859555194108799891800064 6376206679284613981624991030968320 -892657232406263576105377648911319040 9181849672089209549942510374092800 2400825402769596297836629166391296 -322946678876913664269321735386431488 3620619220186358208796243796164608 6103048270546918811824658942263296 -17425214353337509886416580245454848 9528630847300649913856972560531456 841779489714723882730766697758720 -116084044410464731776244131574054912 497533764007500094277565305323520 4921431784468696671247064224497664 -915338035420341479621895948150505472 5780603880147597080212873207087104 99142666351891287831081088188416 -6996198864861759776950260116488192 2886460118258562379083475396329472 412943173927785696863508280377344 -678233045778717042621874730151444480 3416226731300534508963152539942912 6576128741575248926324200283570176 -333149415149992672914225526917300224 6784459722136175975635211496980480 9733185184132772320334267973369856 -764470371613609795382578577001152512 6431441343284161453217132312526848 4696505080270019703659454944772096 -225876982541954069647129697864122368 4525092454607948732272206281703424 8200972243040443164535386108067840 -621059749363825345574298924095635456 9560729622319988191295789206601728 9723571090321011984896177056251904 -400518636822494417508009109314600960 5356235296942797965310704052338688 9250064832506202781303626023305216 -663480724182603949377505920725024768 2179279573704173082513205320744960 647456323936927004724222448631808 -661331224801171453483725100867911680 1102110582947758324277111605428224 2124255251801952411866717753442304 -181892047952559648818279681177419776 391842133246945207999148855394304 5031899793891074531609308982935552 -713010185117316066060295917596049408 9352571571266485419638203306999808 2503587605282259102234451753566208 -204875083719686551630007316468727808 3531005800072246375797604453711872 2185809197829921030225808993550336 -771491209665692052228736063264260096 8008787078830252160946895010660352 3742191512682534478161488564453376 -968932020106650891293752713478668288 8617766443832586400941687886053376 1809235733198391864932969230630912 -416031013141747495443191866394148864 960224995393697639485612333465600 5321152694125123485706823787347968 -174531756721964229966859272011644928 7574415719055769963337312681066496 5973567951076185468947480646254592 -451209804204432270212343305965928448 9420909458466907992443650228355072 4833643895990051872985706221535232 -283332531671996354914781258267492352 9440991537650028335346363310014464 4277460911916966959341924318707712 -631366293260436361807259303579484160 7983433714919696529442016686243840 6536593856590046288267034088177664 -671510250723575561876155072113541120 2086090277711490136575038101389312 955153416298127640607505254449152 -18040243412417953385816812981059584 3525759188399413002457595928117248 4611422264323884829470776868470784 -209765215324475939031266619243364352 2666836617340943099039959710957568 8188588995440227253528446134910976 -548803142941821998770649479031816192 9159513078515822035294091105796096 7494201720191745599547302316343296 -678237623057700779716581183583158272 5419202138718191327207234924969984 3162608685371004389780816765386752 -672244263058767926494151744312836096 283952397071863699524174460485632 4167216797696253040017088922517504 -302617463355729451289741083824619520 7981396140322961633306183949352960 1898527325654268349234169786662912 -967588660439570540780337846238052352 1132841906249922189545482315890688 9768141395975958753421425773641728 -186166704550038550814119606219702272 4083156320400430932451623216087040 8810271673476837065141697768325120 -414763118573325148134726056909209600 8021359949755143939726472715960320 9283568530140433130588460474695680 -160535066841077914050677499936899072 5406992337998724277834499154247680 6319269020091515847894499252502528 -973285019934277614847718761036775424 3782714653334357794683706450903040 3688278572383845975409985457225728 -814696663868287654860801163910971392 8910044148896566735994839768236032 9060258604228822762764886893133824 -521603528687388955007866425145556992 1996020446258708217171753190817792 2905621585868497122428821224554496 -97401405521446811619908447834734592 3538619668912741959049385848340480 1836890139270710382417037443989504 -8858152096958692617168210926501888 5218314329385467930088898371256320 9913701663742016221330895146057728 -543951810994338373153401879006281728 9115883067011854871170915223207936 8633952675347622060572868754800640 -192570447877663496966867627213324288 1385580157976465368241006570373120 20457928762197168260844596756480 -885528475490080238199067225209438208 8351302132110728962019038196662272 9260095036055558926388705506623488 -113557932915352986447324008629141504 8425871098134875551125784361959424 5833207492382645907448643677323264 -895289885350289070386044749511393280 5672807230195620458940096346849280 4953687373911765983142766517944320 -470515971580399535969931054475640832 3646223534752467094758180907909120 1653432042984129127718814436294656 -887183692951539358558784634952351744 7545002948061435320678245277368320 5469076479693694866701337176834048 -983153309230816620296660091515437056 1803234438109484457150587198242816 7232967676328377270683045751422976 -483320976067317455134656747446206464 9394695890890808636768637094461440 502765126368671140937995495931904 -463862377777731770509376073286811648 3983595212511451679728629977186304 209202087812722416152664527077376 -284043448141047707176845022500749312 3073174215331163155038713346523136 1458528253137093365808896977928192 -249886605685514366356213876364673024 6473087051506631998130050929000448 6841651176502028136387056846766080 -965174262066705928141917628009545728 6536381996261259849651613285220352 2279720707579203734219865477611520 -462744831592569556711582988490506240 3283741590429985919371093823455232 3878986601533472859986115589832704 -565017612724751563889900905333522432 938786226887730883701716149075968 3162336323646014788694808582946816 -27660997711141329425570345984720896 5821790372507535163179595009622016 4939133500079686969633337207947264 -505125124805011285458482773192867840 6106560349155602755932180264779776 5262504780425607600717802936205312 -844966653837835092414194663188070400 9489760173690765865764930172485632 7099026492143916227948448413908992 -583296716560648743809947477846523904 723696665849125874425788777889792 6504505368033264789285601340817408 -350626304340689786556661236777353216 820311346164028856207402508222464 2904877878159350832681668835278848 -197157204716157221380101223586201600 3412924724616969812033171573702656 2120405545117516392921832091549696 -524411044391180091369161086738628608 7194207237167740139139433089728512 25871928359792635477269648769024 -32691242008402457850554739656228864 4937107475266820489810472396128256 3860754852969287955150507847188480 -818190113171138521012253274874576896 6686669209040212059517871678554112 9894728126301839184456274650595328 -91255256066099108085372271961571328 4376614630753069032615343430828032 7761707558895463146782083774414848 -464288684959227866952479698835210240 2851028595387832658259208086487040 2950655176835348406237461047410688 -576897294714946397883612851769180160 3281791333347239071176371736674304 3891574798548310489856808146960384 -10571094645809192012158405357600768 7022566233887292890736526266204160 5898384274946696270807271877902336 -621852753480774590152121977103450112 2143113964917772888808719906766848 1754427912098861675246270405410816 -119039930397832707872414828035309568 4947980134155132074838614345777152 9945441419534841000719245083934720 -132152919440248872370576163176710144 1884365840212733086357014584492032 339178969719043881678669638270976 -513171716762421221292875076318789632 9335573495150834676709922783100928 6784596674402043147378595645620224 -500168141010261829460947610737049600 6646144749811668201409102166884352 2328140431275913534255049006383104 -881092632144180596903197114210713600 5431717045650945753743245512278016 4880117639261165511353283947528192 -586281968855424636192365044817723392 1033664168266858069236384649969664 3597294315690945723637823665340416 -802759967425887647429517573963644928 3853890776817430310105217991966720 6729334749189044136454920121352192 -900454937560870497121908843958239232 4198250771086544420390881636384768 2333105730204187022213114790674432 -309783689129223774829862176474267648 5923403595141867406388977947639808 4788015435552844267815180821331968 -245572539086207109538218059245813760 7913791622166134691738386417319936 8431017712670439353540724152860672 -698598559468821818396677964283510784 4045404279997922089302253973274624 1719085590238547097285160450654208 -110689159792972875656582066467766272 2952879504216051120965083497234432 3632739030901666181964911217737728 -196149793961663863279886422331359232 8426500050588922231263573707849728 9977518824926293700604626923945984 -393161020831666901611159289264603136 7277004994002112005654234334756864 7160819908112824905392628904755200 -635726635162383920968592518499270656 3757484561208256217013779811008512 7165958171885252904324350603165696 -903180880115570399349040329563045888 5254172753464034825003158109945856 7274025674643987922094192804757504 -313763763445439160784464607688261632 4463568468463090149634301304504320 4124989988024563116792690742657024 -355929314792928508793652137074622464 6494894384254303751786277172674560 8529027102863553407260657639751680 -353445856713690469699539069793468416 105802298096814303999631141371904 1160262096925492405840604114714624 -482084107238623635934870504799731712 4268255045302408322449846036332544 6584165990227648213476744118665216 -713574679957199282280473690321715200 3850439987150482242677928598962176 4634921934276766717849952826949632 -761681845445533387783338780855894016 4958374596057140760039305164881920 8560105889347546783136730245496832 -204659073010232922309324524696371200 5704030294275197228083542270935040 7817230580035641536912585979330560 -387459294907250780092634301183557632 427892048884546792685284146282496 3361464034908468096386875374174208 -93936368978986306943260768621035520 5096858807674506830229895380992000 743495502693091945565576486715392 -809059562222297628052478987381768192 3040841809753461800157182364221440 7437669472910552324755951965962240 -570427569013761029399345946087653376 5411420995516160626540305117609984 2507270958632595284383693543571456 -805468405211001918023409814369992704 8555512367495561114200853190803456 6212113213223122919941806525251584 -689427894173113407533860306865356800 2734105268197976958347899578613760 6080266709564531800770561991245824 -301594583891492897920561903101280256 5365035977323695810120400391634944 4000274733715473159495898183499776 -225045945838363691675092270306033664 1908633777366139571976752808853504 2168260082949948070798028986908672 -675528253805629341129981616715726848 7331061920201298196402320625893376 1504189114164516855890770562908160 -527336568193617747085388682337714176 876466199612186661742476353601536 7868279086660791955522917486297088 -439101265129469293113868194534129664 6406110994610020673683857361338368 8088397459911496256620993104052224 -576758227275196976185004050721275904 8956404627516335662326961588404224 6841197560529979966173435459010560 -475108427620939124770287856587374592 1683371405366420068021451842650112 7567542925271605253008943063498752 -214329202329406311069253931104206848 893018749503958519983519593136128 4808464044977089047372071962673152 -791787804120456447772633578220814336 4089452642447840654600790517743616 4128202455904459097669035989401600 -724080485519376688448539095132536832 9919498646457680149356747318886400 8836524288489937213226301729538048 -791827134531678188906500729522356224 4027816166831530076141915260059648 4468738457395214860826711641030656 -847324413166272314353020750088110080 2883022129487145800324390032769024 4292326417536861950760349805314048 -368843398562438901426179554915909632 3364382713127672465203741480452096 4794195603937738100924215919116288 -698324969358088881414387387307393024 5321154574569134980489269691285504 3149718720906333159535205695881216 -53042773905028967306895991205003264 568680715152993126459713995669504 7120060795944905341110232383750144 -558462885059144073615811837111042048 3275787049497786366364735024136192 2497477997629674535751380432322560 -943034283722205450287390664714878976 5378133206137211770626913591099392 6352612480051252584470966700081152 -255264646023275078359054463948292096 5500032556260522836095343163080704 5504075773086524776906177950777344 -392477926868667798845923164367618048 3765154974110595298036434690113536 9450653339671486702502336681476096 -528711217372574346453289475038511104 677695825026782242778202366803968 7988105139699968739186349822705664 -863643128706136397237453178493992960 7691745304010878516895938712174592 9041088280848062441803932277669888 -281766970894414594729213303308943360 1711001162959424945508494033813504 9881234218626775840281688780308480 -546007722332594432217403170454765568 3786243511695813349504831688015872 9408251472847242823707897146376192 -681853472336896366074664859018985472 8847100093626940664749350354681856 1291688590215745147108430637432832 -687760395910869212177294722682847232 7564334661927185967044977242406912 6236457478369739644602513520328704 -908002666179311988575646413127417856 1702419396460621861287026076155904 3675986174454992387666981421056000 -45384483227741589654179907786244096 1149565870626062261640081763729408 5768141845376599935538341200527360 -450297989487686369880364801348075520 642985343183473798425133346455552 4952355901040350896162874966671360 -607539459075413638614622944565919744 6151012180108980000201697933656064 7272780409365829617329296411459584 -741106324040278046599855820918226944 1453781415286220473741044892041216 7848095134553003610531597282967552 -710718678064474538303896912863952896 9446427342813934511777195015274496 5655170417118638125566423258365952 -148997476923870250554651964291940352 6442789277863289263196290840264704 4824659970407272497872290912927744 -664428841818154235550498086526648320 416314850996339243658262351970304 1918694740553790779487900999352320 -473969986346289988840221901936656384 6839839636961736577627102042390528 4771070059727902118648311334305792 -286780613213904076828646365638688768 6305107857025180289455319599284224 1157273409079832809570151260225536 -425106247710809485273869579517427712 4337549237331513100445905739317248 1492842489004871433990645808627712 -476690244413789841300012285749624832 5293428408855838868767249153392640 7252370273301640346878230862495744 -827925242176515602752922267921940480 4365518586327392885536576510099456 369292945606436153067771351007232 -786561375490442021158752473707446272 8552466653551462372462285880819712 7524228257292897047064879954919424 -67464365037340306708843142815154176 3900824030698571374761108129710080 9935823446615215239721084967190528 -196794639111457756904854058493280256 253560869327936045527496610807808 962716608087057124371005754572800 -456960615927210294133742746709524480 997937420387089589588194054111232 2492701428626342628047417818218496 -741670115144994074524218260130365440 5784915234244430662713214387617792 602933460976085218919531103125504 -982561774135587234343728139374428160 9650629924389025878786119026343936 125951519418096488565961260007424 -704071372803382565669904828810133504 1062000210217668502118140896870400 4535773875243168597815975043137536 -435247734845322422800768789525823488 903386803754893621356053265383424 2599785029153891826809207470948352 -401209235571167198478419641132646400 8544068568192971048280286923063296 6399513288848210242078888656109568 -20840392811692344482285652912635904 9715193508818375826153809838604288 4483282529853745605527025383112704 -925558262197772686043603290789249024 5837408331096588249724112598990848 1592381476661364415205739283349504 -400841658854351822209141854640799744 6134165935649277586306846418796544 9449613562704152852084648537227264 -324663193937330850306029735492190208 6211622639070062125231021225934848 1831361284668641960185806874214400 -482530379133300169580812726674915328 2577470064619156638348741068193792 9029734026453968256990937207537664 -640276315416325996693741470142693376 8852301146102094132678215151386624 524261478183755508227745200996352 -276220022795995278794649566405722112 2129086636375484034405429279719424 8454808769966049379484534910746624 -228631154910830487193072125089939456 6656993357268701088608302701477888 5801447287989374289890877294772224 -725243467245926639701625457399037952 3577031694632214545748822696394752 8750589413881837380585592849432576 -254837905458259372447413817384632320 3331169440367180745024008878030848 7316395799442269424283422138826752 -467212838406756572452533460029931520 114670980283074085013072946135040 4373674549173452945702770123472896 -710857931370704653384661648204103680 8607588742144036674717560778784768 2719574027315094007325984494190592 -48810773483431347568321121428176896 452204404634782874791282537922560 2580156119242952654476036571922432 -319837715286110652677958306753413120 9609131072607759918129127006142464 2368430013491042576802518684139520 -871726834973395899429293167174746112 4398894826112154460976403523305472 811431335215525411122561956184064 -937770282719013377570965070807040000 715797618970057062049549266190336 1796587665567913884684303206449152 -920722966974050110131674910224809984 815484907573339495446967106928640 3192110402621595878601412554260480 -95024742233112429427422926626357248 7134389971767725839575668272136192 2989480483193265287086076065742848 -378701110345697971691222527780061184 2322634504370539597617962080534528 471887950535848517383486649139200 -672664532280670460581022636139610112 5546484799474263354178474589814784 4121546222835005106268073319464960 -505323009665262391857230277909676032 1549763749128218130090811497381888 1193680748934205739031766184755200 -703788216381609997682730815111299072 4222374625642491815825297578655744 3739779583612100349994299505508352 -919310633016154381436213185430421504 3567458382853922203715492684759040 5186914484318306774288570188300288 -5422351821031708971839911727464448 4330267804987011366399555640754176 6668716958793420354229929091530752 -273208398405878153106920225957216256 3047020776177273723127261174956032 2602232413591931657634791561363456 -979020826081042980932170962436096000 5215421277532618560868460991086592 4574281561530740983867250743181312 -307527335311789096035522128994369536 3862247633442587217699129142542336 1498287518412968166321364714651648 -59699126678082664172543504388456448 1737523809501221753034484874215424 1103615125069314961758956894027776 -808890307424068588860900274419531776 1213973239283912139046397493116928 3143684468016531400803736413536256 -336145218737976708122945173955018752 1180155974162447142721410272591872 3262395687125497479093576538259456 -430695836034936832700323439780560896 2771453669674195418165009631412224 6216690294563801194025072170369024 -812026853369099727422592148532363264 6610807235795677805239303539785728 9714522779577551534593949954998272 -9391287654644750566530428891561984 8777817561892517498842175347097600 1404605075526430399737794396160000 -843306719091555083743894729845112832 1048963759233374793754859198742528 9180166697266705312917839216115712 -248057895979457816112375147740004352 3675395707570650358596117892956160 7898167827246923970685984686735360 -361567501406814609179731083252465664 1140694098325682807861731211083776 459194002936690552492829200875520 -136571738015274992119716754845859840 4604246293921031163585381189812224 7943875025704330494386317696172032 -571614746754389960682255886720172032 5818700953786269381107061190819840 114453423366844924852091683340288 -991913500872132026290318573905641472 5764050363130223226354141803577344 875736255267562233814189399343104 -712672929795190017925322072674795520 1957602763789146412681347360358400 9123174259288351799107857086939136 -49962757198411828900978513101717504 7261242536795851440133519100084224 3016533225652689080404106851385344 -368138628478990967695670273428684800 8504769510480521286439844072914944 4468557987641275135151399094976512 -968685653807349668284120844738756608 8437893878950582251817465559384064 4470073103263859319245065913630720 -287957417247783153418057451608997888 3785631887047977439689362863292416 9785036949759924410080222133616640 -821486082771726806998974775318020096 4714225598872921801189452771491840 9640670731324256988424664898338816 -514823261726586306545014906348896256 4936278282941315101089186766127104 7152164079404456890075575725588480 -906410459729538286490884676509499392 442758503159579787206441062891520 9070695047072968633673455620849664 -196555459235403203944919422287740928 31200665966856997558759270121472 5895933516408475600407238551797760 -809915906288194077076537300790280192 4844806129242138146488104890925056 8315150627534515768238231259185152 -333796030452928614093402142922506240 3624359395479771223939219229507584 2355902655665662835514396477751296 -967834241262962406685339969696825344 954850614257631981310197691842560 5093077154998428843311890952093696 -710736885654418934886741432334286848 2021328694619040530916736921239552 6730303934743956450461715984809984 -991747578738581970952058772496842752 7304324366262353219811618150416384 4277202250592067128962452536950784 -102377822810265180949653098837573632 1594654195391309827526274383347712 1277364186900521335302648917655552 -772980794520624882918637837735690240 8223182029619588479268684514197504 742960832318403996995080010334208 -640393798441330747809882551701471232 959367301504518732441527806590976 8499927558510787120615425356857344 -323883539494212916475813583027961856 1028301731411534667541838416576512 8628862532752230070157074803720192 -236307372380673521580560638810259456 6793524935508860077500613601001472 7154705577103223805659866701234176 -863541725040333550948165253865668608 305772942078204176546814584946688 8897020228635598259568341424275456 -339314382379548159429650225010049024 5612524435222933911189481347612672 6959733443156945228696098411905024 -645708177242514117444407008813907968 3153994647263263473630002582388736 3629817551211015037746094666678272 -623583308760024748063287868638887936 5469334755678960883917871313321984 7265558060091434078299394471362560 -210680687198214829074820837373116416 2945664549340630771395059087572992 7143248814191295751703812835901440 -681262004107303887862992069896175616 4793532619098791137515059852345344 54361086810743587169317095997440 -220363273219691810172322590083776512 8184102042190318808259845160960 6880307421698944207087215845572608 -156652687813273100016876413895311360 8060329045567222409897601134493696 3537845586904933843578350093729792 -263290058258733823386312272712302592 2204859876832345126433458376146944 2794105556174047203801986198667264 -273618103609602617059530575446016000 7393243745703513384737136856530944 7698103344833625451024895585550336 -837908210132224978322176137184149504 5395235265956399140901914142572544 4459695781878965188582400594018304 -616759993655517716821026337605025792 5971200669333233542618696323694592 5853021233191983716986616155209728 -974550496889609747614421979051851776 2018107782331458621052393009184768 8265007997335811434056420524294144 -117473125166205364192071370357604352 7266779052916688446605020515794944 2071684448467844094491057092296704 -111946517333420716909366300781838336 1267352242946250172795544808718336 828941209264576791375906001125376 -565261496085589171164988251404500992 946905586056309150829884368486400 2343958196850406376331271374635008 -570142338036716870613129473791361024 1986444217841542263880896143687680 5915392883121818747240276687847424 -732118250331400132305146253483704320 3853211616982772747835665570332672 1496083700992945764474676421066752 -696218606761121946340266266870153216 6604174978827432440172427387863040 1720847627060651167751811454992384 -220385998427938567688163885127303168 7533069925466822805348212803633152 2056253344016334733497856589561856 -531488790314657362332766582280814592 263166385250107417193367625269248 364441635910607495839318722740224 -272472758233775893718889459877937152 1026573644091219398247547720957952 6635551716617828099588311402676224 -337648609950065311926704334822178816 494693935923508906125432190926848 3035818566751727900984029550215168 -591358954958936611757149944662720512 5372373881608369356165896330018816 411968391534803754515015298711552 -478627477808455079617928805323112448 7335567418428657457432471338483712 2742612559519878287597241628622848 -545160995637877175706204909267320832 6104599913068700183680904069120000 9859044169880831128281054340710400 -680940939314813763964178886081642496 9125727047360220382370597928173568 9852363702747612404582001233887232 -939056616588922170930719855413821440 2603126858454347150059503372730368 7573463649442681910990778560151552 -39843101995681772454967289915113472 1379380555663108085474207079596032 6416502360293084160375968317308928 -198479400001587610949824199761330176 6465755648221195607031007986843648 6697480000253231150325365857058816 -986901311113489410650832227780263936 7779689501905570340089314702000128 8656815714461425037842096020520960 -424563540482328676406605410706915328 5562757673072771924325372685975552 8150794510529449137143350518874112 -872421667638297898592874315932237824 156204885226048810851190626582528 4295887469280758216067415055269888 -261677395302488791086023291210563584 8518240909531054710411514766950400 1379802408086316304040693793292288 -913040748034583745880678880570769408 2304282861174491025823553504149504 5971833993693180515880322304311296 -382796356044766189435719381237628928 6857172705447910684272414706106368 7459473304180964955178042944126976 -822496156650890226211338290009735168 239021469627626534396768953565184 9503610076495068042331625925640192 -187873671704661166602169913456984064 9858521241235724045960865996865536 1185508712446009689928010907516928 -961446425623217048212398748995682304 875709115326363686585850694467584 1101560164358547817849184829046784 -183608635238368987024787855963586560 8181795057896102168342804608057344 6254418605910231043783475547078656 -336590783672282923706468366632878080 1430369104288882302294888751824896 8812459804042570383842473473474560 -757992443216534810515238444513361920 5818265600461721361265451750916096 4120940498929974464659726390001664 -333089328884989592057163697115627520 8631160365131818673481791106449408 3463288895245756005651511217487872 -339512060063389533073375677435084800 4397192713556898722374873048416256 7311321030483204677852706927280128 -848388434899921795300964174846230528 149971867650491714229435614887936 1540254742679911990093204198260736 -300554984523708058344212930706276352 4121483520067799657865321717432320 3485104901131766149532692619722752 -431519075665821757277798562504114176 8339241676241936812800257434845184 7900790764687964766020464547987456 -782611225995885848193069944632508416 4325280634475581297429402825523200 4057616103956532209408872189788160 -943698938078782064268569521193746432 8626141154794517392806968601608192 9736985917681997747461866618093568 -39416391646072797281997453621460992 3394701853346485177551335574208512 1764906816317540754352830158995456 -286588848663860823953970740422770688 7288690452251002977445014392537088 9823954608602610536031541969027072 -412453189083978470280369557156659200 7835733149122269340373500808921088 2396408333425170740139108708909056 -101922419063136569348323960137187328 1102248789377701574441947294072832 1224398262773679009870454775087104 -458880139060819938855477022333861888 5288752449455862172374805027749888 5291219143497702192877315978952704 -463718354586277403913669787676311552 6937637618182540797230087627866112 3160271047240788518637297876336640 -176941039856974147983490314382868480 8275691404269243503000396746457088 293482332553013240613266605998080 -499094026351668328164567203048325120 2256057347625152866187852432539648 934091312543472802821780862402560 -630153205788065276524721293037142016 4974291658763094572203301419352064 4565433981852569152243200700710912 -115634039908199778908369736146354176 7596198139256746823591206567542784 389278214463368090071056091447296 -61053814064126005605161471697747968 8673861208695887876539784793948160 4451832827408879741511026534776832 -695285517246840526044891217582358528 1649599349439728803191515940651008 7374727083168136792412753483530240 -883785052220650558185162843992621056 9042125184222281866273208456445952 1949472220101667618838055059718144 -172753980568142540524009812087799808 2870206563421092728581774316142592 3886524949844966418283172093493248 -250592340821205943316444212470218752 9426426347265357591958404447862784 9571024891496522225361063583416320 -816044669204668863874023114082877440 3073870538654025795401739094982656 6490028139912985537939970350645248 -497116301822353987359342746283278336 7092362763321915463583723115511808 7196020216557003934552442374455296 -268066578697395126997778118047956992 5808353811701914502468485110562816 9685197947720532192534474627481600 -181436794801685779717918874423787520 4766492431937982724896388101963776 6418859978801004024385156883152896 -123002896357233020210924466422677504 9151177477955320179955840279642112 6109899802161599575461175847026688 -798916329934970264397893901892976640 1177193109129478644721455927918592 7777777165472826777772794084065280 -111576341742240995394179265103659008 1156603929346470668121706944528384 3682672240030478995820572779216896 -763175483260357570055961692361195520 6060250461651878179111690932584448 7746869698224454314996566549594112 -666719937422860091946052623724969984 7528411897181905519078525708009472 4299945723554033020534413844283392 -969486800044699061778490714224590848 2763959044610335486790261735948288 9447019171320751656057706811228160 -229934145813985615846556144781754368 8280123016814697278810928084680704 431061095973332990912726814425088 -115676867380392600776608028234350592 5230096379991334786984617120366592 7460230899579301266641292879724544 -100585166211162410223527967925993472 1898151686336379039614176510083072 772622830133257139568723022053376 -724717747833153390900151193807355904 9771714250809668783229564564275200 5263717232146212620234058155163648 -602184091810692068358223095387914240 6011251892976367605011844052287488 5511652665275544607836967155007488 -946993094280915509687964107408408576 9310715720445438043211044650745856 1300786141214213331003228043608064 -959578998610468879778434873724764160 1807701980350113945977195813928960 6826279566483764619037914624425984 -44377320600158928734605563639365632 7259552000203956485888045450526720 8230458273436745858440445460217856 -24589032799223151296197985411530752 9074724012393023738186427386560512 4000439241942289140755941386354688 -60652237790635739125019900739846144 9240738378962997081609446556172288 3880014208541827448710391557783552 -929127208194691995751241956313792512 6290410938238716097827667886211072 5725949562336054652898086710411264 -855956223612064132740058831365603328 8063765714157717524826314336370688 7406521901732275146314380195397632 -774490358643324814131292347031355392 2602206583070214201448793947242496 3388889954455798351553565344923648 -389871088275863975995389347815751680 8908215943166730633054541710360576 6442497006278065856311767785799680 -645086248687463214143978149091737600 9472128916010297996144203299553280 2872607891362795578847598424883200 -926853171411341127257882114543058944 4085225994735059584102753061830656 348074902357315531797156484612096 -593568698246322499631903202758098944 1831321914856441463338240497942528 4615514291571289709810110498340864 -829702194214322073690914798945959936 8220121849252745404116613029953536 5175998269552781701785063018987520 -991496343178201241497612698288914432 9064166861347979109409254618955776 28731190372247448927552623607808 -128346733941660828531294279470940160 7650146479667632701730889410805760 1435830317849929516375778774745088 -689499850865833798714397195036000256 6700182997343604700072796540108800 690827221311302839900891269562368 -127669098723947627808098683965145088 97735058881187667309389884162048 6318644967522139958735595905220608 -69049941427982877411870196730167296 8394918765589807789255910137790464 7724312846012764318277049104990208 -438906438891850234924253206707961856 9572478007410123720876993690992640 8403395456934807261149875461423104 -374930121632765815474070639813328896 9578924266855617907229214122180608 6258352578383678587219016599732224 -301578211940323175171552554961076224 1955876873183219356893996839337984 6672845597271344402986173506519040 -175491918536614788683524997052891136 2260179142809957926384417483259904 6350462669289006429016250870923264 -336069492627178440290811278067236864 22482882043472478231500047777792 8818146742650498634783039439241216 -597301018883086711705178273990311936 6419393915437354925733076902346752 5079890932382270032063867052359680 -656887809964221078517564186342457344 9092127319236306254098223671017472 7848805998024479733559161566265344 -874679124989133010595017432040996864 978317720906491485410741897396224 2180243286745679964907864091262976 -599629360988652222031292706446114816 576945661336635373494438358679552 275767746977232917968465459937280 -339430955407784191480235095490560000 4840454513537572719478116370612224 3738819091114203655471315040600064 -409487404478429885912015130096304128 3459347798545543132367215206072320 1210826706924483674594151820689408 -652814185025191019989312531991625728 9375384416813530461284349775970304 7683034710331104032782811337326592 -291384368298263358571036394530013184 2240239935105977474711681000013824 4015425853312366998088513390379008 -831888577108870067098051138918809600 347998024862450662618156425543680 9042796169821460765092499419037696 -869584681501359823309901271146692608 4453851523839617858434815196397568 7730562301047212092719107137339392 -43257901211183652891735743182929920 9532969854055393708062711893458944 2059430221442520946601373974134784 -556668497412200808830431158878601216 9058187735642137405968795257798656 5621327768175322096238765325418496 -148386042456416955455602448975003648 6370550756673333670987667941097472 950710923294496735504789680422912 -468482795110416515304387116879839232 4123684417796535442388267539890176 2371606878707576765641174326181888 -371281540871264926447575469005996032 4847910895576229660536687248277504 7309950018980956582525534560321536 -98940157915483879542195750122291200 8672058896452202185588941839663104 5335091991333761303671145878257664 -913406998251675345560342532989124608 3256467654490972569775282648514560 2219971262800284535900503248207872 -606845746648634032844867641993592832 9139018489373523871646570537549824 2670002316509040033102507626463232 -890406395454533130134912419600793600 7502367490516179364194290065473536 5016743607039084574444093658103808 -992167168455512926640981787329691648 799771991474409945836377859948544 3353104269353463935450936292409344 -405611515343659624043043585496449024 6949508360134523994462931644317696 4709307914509797948826745778995200 -641728079161298500092014116921671680 6214179940238760502403710100439040 5794774397887614484277841526521856 -127734721639903545837131098939719680 3878579218585421692668972334317568 1127242781006429571945633719255040 -546191694254879753756122244219666432 8907769056924575249558467480911872 2257971771709684827094484036616192 -908961679690569033620573373834723328 8720193571091615656560164603953152 9981123702719612736537427661815808 -319623359098834494813352503860527104 581279818805498163995452588949504 2185043913285116294342822839975936 -325682863412548933477845746306777088 4035978802547876555815381716959232 7457012477149404638801133796589568 -626246041711588131710003368106655744 6924861447952192040187077702189056 2166724372879372754747669897805824 -696817420595174727806583391687540736 474490255139758039851371834900480 3814005843543963128704256645791744 -53969688968435913356407897581420544 7828013984106344329703135543033856 9420672461517389856881233457315840 -867769206303365755150495922134188032 2841509026199936462134048811122688 163109850869775882004439876239360 -608373096948180254983673408863076352 4360583821359174140142709920235520 1020869729284183437919308056887296 -106987996172138837472144638825463808 5798416390470924902560401962565632 4094218114471994275464533766045696 -160676997681887880577348833074216960 7198617136187229904995124993064960 7871767465445302568579153430315008 -421585971009297094232023738498416640 33879894163799194074937961742336 1713794038094933444783186003361792 -749879478602681371650306348347817984 8419263431338121339797998894317568 4350124183698539524168475777957888 -238499936465855727261290952547893248 7662689579602710141665515652775936 6451033460780307218256262152060928 -271768322607604695290390954064740352 3239035070904122378174321083285504 8590863950385009429895604300939264 -258972836581206239782682243635347456 1437394690593785369024280550965248 4145023723404821290305326606712832 -806081699387166548468478802892161024 7508520852096515015531369229975552 6918336562601510747481777754865664 -284802053368284619407007247088222208 38116097653211957038884744855552 4649334284438331179364509196222464 -31311901459760599893062928495017984 9549943613224174145316606678401024 8875124321157449949944089858277376 -190457524847209683690428065323679744 1894338730625179317819541980971008 5163481672517527596390502350454784 -72448319461791485568903469485522944 5024671396422131967105702605881344 4457173053439581625756552852930560 -756817659147648258676127885890158592 9708502747513575695464130639036416 81905071144719413673424043638784 -656775744284388524542989382165987328 4560490430182787255934127504883712 9681002412701362770371428359340032 -606960674509783126737128468460339200 5875381942609294104398700772065280 6993921837551885052640355525066752 -196002221878966732232712290335457280 6362685011493238794883424915030016 2510023341825519996819841902182400 -845865748545325242630312195818258432 1890272299064013420296818600706048 8274742661209953744412843366678528 -258059051739863426638235538498256896 2034142716430134182362812258451456 430648768646639691427593553182720 -838426681631453776941681140928872448 4297782124851974422152692671447040 5669512964861521525246484520370176 -665934712133631092282708898109980672 9379582966772736395598235017674752 3157647819708861787354343810269184 -468303543232959907129753561395625984 6141521763339985913941857193164800 8750772847821032110412396318687232 -922258141336505405083854170224590848 9377638045513090568118148960092160 1908666022951574450745188074651648 -984486640848713601956192022977052672 3687168949952074760152448652804096 8065123276961619698930483078365184 -610108789240409488496083442677579776 3404749260377389409438650349912064 5266068183888673806250661659017216 -164957079599625821846685367538810880 826784575127889308965931275255808 9428524256043865790691187571556352 -624867831991486378335266144021118976 7905949463246988385995177322348544 2379299579212821392927543902863360 -139836787076941402619500446953242624 2094779681343452359768040408088576 2120130751842660825535436749275136 -216765093411310511570132746243145728 8578356572937333681473151771344896 7830836000899314421939926900670464 -867184080900692129974847815519567872 3965354875296238915513449038479360 5871270111511844100608911009120256 -648973053017993165584998080406618112 8578260365933752178048596180992 7041081203267754204062758756941824 -596628931821552122977582626453323776 6063596457098671569573938651463680 8577438773597035085990577957765120 -343386792759420103371369423115911168 2192996794794929879427440820879360 6357061527861317032083143742455808 -746010093931115120088624258867003392 3522962171692858170000596656979968 6310050926658367546873468355084288 -714269726553853537825981460549468160 3366197629820556428452480197591040 3323483593916494182048657053843456 -587353216582818254140614268050997248 8749868308441768542472750843822080 8383712999431597398912089469222912 -608679518687205834879880079089860608 5878815570236250618706792495972352 1920841573316930425434324384874496 -209164911974410495644759827496828928 6956544995872224243368955073265664 118206589897300343867241494740992 -608012144465544686191237496607604736 1616334889963372757458222659403776 1263254577419220499525763157983232 -170905068307476505906108403913064448 5841880406352723032337268577665024 2363749881839904106908701083828224 -686401268651931109174301333036990464 6661496876750886530423447875485696 9319649007365791675918863583674368 -275879614690460575664216412564488192 418215373577832343622974292623360 2354954971772324275805491298304000 -187199488922602617774637132655099904 3725367925747319572553419638964224 2494613401242331105164429870759936 -237222134999230089730127597932642304 1121083676740482520495372938248192 1694853555152613025737520311173120 -84154194375101035575644837923258368 3252860245398414312208644823842816 7390516496078909092564025940639744 -770582596802618481088369841389174784 2976820855017477797160470666280960 2749483807444882078924498026889216 -390122363856354294909373365887172608 1586249134706008455736378666254336 9716582838223528940358695628308480 -668517098610359161330727406094254080 4028940303232427594167672429871104 5896961230875230090610839702732800 -200369259470354866701330412453494784 5685961182651055539693801982394368 1239376718378743925649978964312064 -776365855695756837727235064211701760 845700799431156143987623532167168 4289056631863442127951416499634176 -33562858182467041335579369300557824 9281541321836950750754229171781632 4990045155792544105847178877992960 -792475411722005878592802163406143488 9397508313518007364003977966387200 74168236028704654349675641438208 -173779632802802960750803743942901760 6454117941227757817041959329464320 1919141494762255103935757833732096 -209629047021209332325932707658858496 5776406997319805489348860950085632 4214433227899703567487736114839552 -567436023267266148483777553403740160 669473483012802113761926168182784 9224635404669814993628947594346496 -273541968665999832848083763373015040 8703034994838291257992407429414912 7132693466811978444779203114041344 -321113507988033626676890719488049152 5033667066786904061614136875810816 8025412143624216812151143808368640 -375299937606081586238998060975783936 4217948107979836016379464792408064 2625603101359062581131275942232064 -67208871635470542865082293365506048 6006917781605674123582398810554368 5440777437365450997926397099376640 -89464521901333008886967948638420992 9821518199871494414675912872165376 8680417275809440938437468896624640 -155644188095548822191550678817570816 5089661817646673184246405003214848 8981871851678058287752233223192576 -766908523887398180912846990615773184 6853282916735813831608182228647936 8115288517138431301426617121767424 -442777168468385360725263321535610880 7226234487381575836945170955239424 6018782618158236683146204201091072 -909156998956806153490680769387954176 9854380877894483354146954253697024 1357524090118830517317368775966720 -618092235395375945705047634707742720 5924758990463283714676561257955328 512585867406580168762610675613696 -80986116776493426183587355158380544 227844928009990083805182540382208 3173759158579033201787495447003136 -825000631740726650408266759512522752 4085418757324433494624810389471232 415476767563282799802343837663232 -415957458507004659954119857108156416 9986502431186285512655153664098304 665061927623337224322887744225280 -442517237343756215187584020501233664 627339371172170006308993309343744 6301151111859817825416667063123968 -931059949116059017060703658332651520 5728348960683164846165185097891840 9372952005410119895640958056792064 -84818468413756929366675285574942720 1837139057529881259711191326916608 3603312114255590599772513079656448 -664968767530993061769324472704172032 4546753342277552956226730685628416 2569355020496870135406314030891008 -920420482724210825954806825708683264 2655641598159007703924027514945536 2439304556813378572324535189635072 -263130354126306921242477215365464064 5085897096675734231657949668835328 9372204443168399626133004831686656 -271198974151879319008586167301963776 4088351794507981718915103183601664 904764721514693661046362486079488 -81636077934273684694234451394166784 7265467858222887916972515040165888 1913964564235849656211860801716224 -783078105137965013947014744413044736 2559265196585401658609508984815616 3925124905734196711453334274310144 -543722726338039807479984308122288128 3908927805970634361527762077876224 5232298289339640089261871103737856 -179194941721483639715963044244750336 5664656460533521852492665526943744 3548255242863199338434571431575552 -332489947341854925100283730763710464 8684451862542857333264188258123776 1252019895281786674353891476242432 -157111029032054160811498595285991424 5164055691181537025614759971520512 7346642476961885529562938989346816 -304925114018078710419697151995019264 5446159687228059550076362303733760 4102225909853168746894955686920192 -564568767421233980072554713829081088 4643753242262265971964115112951808 3604968965413079303287625438199808 -599282587206006636452325584145481728 9235144891999129112824857904545792 2491861544579970283138082859384832 -60731081254356692774586073403621376 6060972824308432642947686093291520 7056104666964642824353228508889088 -227524329469988305094216426664755200 155795202761822303936313378734080 9980634878581075893878076773236736 -140492340551021240454030489706037248 2605293180401356555321273384697856 9779196002856323810782123875368960 -501853265193071403040544503994777600 168464916297216887608768601260032 120434137821613876970486082043904 -419150724162138115419535576397774848 4146907863782828544926639982641152 995749220752098744103410746785792 -932697793228810803192567269251088384 819689826498094984423601770332160 8103665314956878778394509460897792 -704891008487550133673140588380160000 6397340760649458646212781245726720 4594154231853620101326419483688960 -129292439949331559834725364814315520 6968244415536174962587619341369344 6284229824251096691221364490633216 -417801109538768225955642655664766976 90989592517002674885541415092224 8857916457102737001350550794534912 -577739336635061408420747260888875008 3792791039308918561317717805105152 2785996087366953546792866223751168 -872656083149143591890456359294992384 8278303473461761066804999100563456 4416158964056503930033455016968192 -328315719392972902548626323626000384 5347070548550762855073806020509696 4310950956697488354353433953697792 -459294595134651655675219181322633216 3589278478107983936035733832204288 2325063408191867621968173028343808 -552545537633089902616523235756343296 9570985362022929676364309833187328 3231147707446815404554968186748928 -285782220526097474719026836007813120 1234292608559848838950276606984192 2928961362044964983422539414896640 -36899594804950444343066847120195584 9134359093361304305113299695960064 8192597556653803042008621452886016 -486108758014921485117537385858465792 6263152345255913687206740822589440 8237053547648691188436155460747264 -150716860135231619997772838005112832 969187482279335639643842144108544 5506608705105354933127095861116928 -451514789332784446551535039553732608 9052243345379416439781708294782976 2617541941018099995500874129473536 -239688033558343800227045606867075072 7256663246531135954697401130811392 6984822734589431666994270938595328 -121902250582344449340195727380316160 4814378381712149275872439786536960 2786110779657619624138019474243584 -648602327352844644700306446623965184 3805796214885791672020527457763328 4063751572810950537088135753367552 -765854210155564662681931767584129024 207340772329622124717933768736768 6563391293354284504191700228374528 -969865804305945193787399181806075904 8746896929931856156355226004094976 8388327218533357578900562639847424 -876531309643923940249692981193342976 1690039751691236368787730314821632 9739799170744494059417394590253056 -541318376104542620480500727266934784 1474706817028536734910385343168512 6172373070261949499248585262235648 -973679330964046037269463721532456960 9644085285787092420438661510725632 2282493390472619714354195929759744 -875987472661970684456100581691359232 9177752069526612400130621985259520 372548080620426991593240137826304 -304778298575888099818489378641018880 3502157737562209144716635215495168 8872376824035348558355292101804032 -264623054344286605778219846065979392 4385963995126704130019897282396160 2172308670935778095109592735285248 -311961921013477349966491289003229184 41325431296746986991765159936 3978697703524156699774396001157120 -520400900032389545492264230372507648 2627786616026179844522438251511808 9243622065380724952992004578476032 -400052023442438859811694309831344128 8203021032836197054124358692241408 8274809315206694574765134902722560 -90126633514087794879224497871781888 3214026238274456030421471606079488 2248579772486271522834069506228224 -108714376875322334243279596513394688 6238907093254697144126635925045248 4929010773622729875084274841944064 -531259611802518453966719397178376192 665256959048769881202108284272640 5076022083464455115810502525059072 -248311596073057358799557032696348672 787569041757086945902127875096576 1430628187738356821828042919772160 -381321987167458952891366888924250112 1337901501627061812595992624627712 330354821297039830445522721701888 -88123957854868628430653413318983680 7757661069322858867429712490135552 1512251531721966508396206289321984 -869545002367627986804563944918745088 7982076927295689377395342783283200 7514036875122934202932320383533056 -699843617803239985064990123042537472 5084069847310062777966258296979456 6406908538554112946613584907993088 -417935460913440708913813221783109632 430792228016574497820691920846848 2544420606184498022493811539705856 -523519467499269847653361748530954240 2615636923810244336732902596280320 1297975910644790186001484056887296 -956739745151759437295851865796247552 4953554515670563463457349631475712 5653524448023527905932879899656192 -618090737599340620281088226956935168 407980777824534819209326276640768 1978337932793116765831201126612992 -32454720507134391988022733352992768 783961766146432263551666572230656 6062509863717167576335935195840512 -304803290800970255588148638369447936 863459768267036982719958852042752 4069251376347691603492070555123712 -627586018263722022327659294888034304 7666454334306176964178500292444160 6583723920987058624044012889178112 -437009726542304842439779362428420096 3520701099443745746715906249064448 110565085265159366577853564977152 -98179551433435177115845561147195392 2951471090885338425175516511207424 1015610614515728131586495369707520 -170524538184923559260446136240963584 5419491422991082962036778957012992 9698114751274078831806056794947584 -852859079998710660281825252842930176 6488866861094392473929345834942464 2083924073984319708543931660632064 -164223423657094315105832761590546432 208379631321936546857297305927680 9476471408824247044831575082532864 -63304602555464567697105134425210880 3554043718206745246360095904759808 4839777421436024597157561784860672 -254081405306636769147500933832245248 8451141037453160353836798908039168 8044059306576804007027985847681024 -476315358903003840566683882242441216 5666252718098468198933300225507328 7193742728371874409292904313913344 -845299191875140399812538574185693184 7637633373348196337976116405862400 8769561482241138247849735287209984 -273565597885804760437744200740503552 3322522315477266272020600878792704 8467203983369887283742088903000064 -352951173775739678322414751378833408 4366600327370602292542887124008960 5281905289747080548940620150865920 -130164510046712849807787762040963072 5121490531905407986982649675644928 3838807700467454851327393326432256 -96548098303058048272271758604632064 8521465334057329342884185450217472 1640020945831052932011583571230720 -610692472207458459996800099024896000 3294093092054601669599099917172736 6817316979848752210624730279968768 -131912757342033282154588477826531328 3583920049341803292307318378594304 8581609657084479591472639678349312 -424767283420903237664654931026509824 5559621939892610173425313449508864 1893083594904214641000770114158592 -84923626622532262112796453204131840 4322614570990927773458363083390976 6813026389018541118659291202453504 -608054390268358268338733693785866240 5027881348420839136336199760740352 5207558220260744546554412355551232 -511152493410773427223040279950917632 3257210032861959818645297327767552 5023340626608937334107816731869184 -445638879078506133301930131495845888 2632230180561401514153396722991104 5956222467034110804493140081246208 -371168623315081855062070226562580480 1859373105800492876304302452244480 1258230904583885120937864625913856 -915865811143401442783723019669864448 3556157253927523154962301866475520 5921845864588182244698306690154496 -458453979860247466825298324802764800 6026863243107779599905317338480640 5643686891896117682592776546418688 -18996965676643538333828546599845888 2307467308079095178754500939743232 2397562557086257154006490474872832 -110385417898922130327836736123568128 8011244804986257097500078295220224 980365973410242841184138973675520 -298681214684041258235153257441787904 9876063061466098818257108372291584 2264336539209912694796277239513088 -783290683197012540379898267356364800 4212853615001423037264015589900288 4500468896903498728132709734940672 -228618561572569506584710700215566336 8062365120402967137255770399178752 4624234290523539573818077407608832 -281554512606343013039834789159370752 8109528276238765517043498229956608 8036729271018671049114031258337280 -134350262155873519144047353524125696 4315128551444361365807709946904576 2177058033981065926061107946979328 -70011515318174855013521781822586880 5252552330904583867121825942077440 8132711442146860764944633536970752 -864355503256049675770659289587253248 3718208389750944983545195284922368 317290100532137602688252809052160 -118159145560826556720536318409441280 5820881152661029155872838057459712 3461650320549617516713331568672768 -690730884466396413828319592545517568 1726479163655798169553594321207296 1536877881740625134430135429103616 -253547529973425648114514482285248512 3440806327869459406744737678360576 4016058308847872570782753931395072 -31999295289817368353030626688892928 9784173818694070304744231114113024 5030483250818851270966852838227968 -917652187480951065740310920558542848 5651260436164450194913710022066176 8658777553612356953143048893628416 -557650612614549968775254951503855616 7741553804558674875795671875584000 7581978481011096958879750932135936 -935304778117598627237899549955588096 20661510449516003378663367114752 5859737204843388152638839503978496 -560687526731860153180923229210935296 6026765812606478042782435532341248 3992273695691895638418131068649472 -681623442108666644999877412385718272 9476911884659296051751486115282944 3532852202432736955470617686048768 -530503109965956190555191902342217728 523717023301784018443932226551808 7457680314326644459059725794803712 -381453207999043019948956024834097152 9184562105288161028943015491665920 6862980531836810433254142146248704 -438175425068995903335915931750629376 8985061718893074856934327105617920 5192334541267689239940466986713088 -282116830755091632264570748247474176 7954289475693067224525168082681856 9928390904143449911368644422533120 -181634227423560093382974236348383232 1662395080975621022934233199411200 4270753654845455141754684538093568 -153323677723042704462625861787451392 5318743971784448904745635968712704 7535704349727301943495964617605120 -263089309227290252864566956610551808 7980040502457039629042585715081216 7774307060097254814379156172701696 -283218029059020545017865828554506240 4960011709381428860821753556893696 2015747170406379819934289942806528 -455338074442969245301901873779834880 3946628372618806813932440327815168 2136383017179325893677712599416832 -564629176798547449409027027601719296 6984680196246932573566241339342848 7493282117185718529290660850171904 -201698762025075703964750686581686272 9379175754247518085563874434613248 5992672386482856063498597678710784 -431603838248551694282800884193689600 712261570364990647855560372781056 5133165838777846245430478665416704 -897918272012543337315505857552711680 148592058685240491515792779640832 9289451970702883012417060316643328 -762202374169856438665691113711468544 1777291026386747903201559992860672 5865258044871373134103133657497600 -709858439449768543840849654834003968 5298839676051246042128852365344768 6588644632499868130518659080650752 -259447384440056207951146305338736640 3675754656123704542927628007374848 2486780105803032987957438695079936 -947749919694984130374789440762544128 3639883248517119548415262913986560 6537544782549872322659161894551552 -3895249953332081478333314799501312 1520491153995777023647155652395008 7509554014501384644469343716900864 -980908091585589013357379559681425408 9888559956004882266008859522891776 4784822234230991597149656579047424 -180485337601438016969006585521111040 3431646355037431827505888112934912 8654650781764594334964329620701184 -402273484731670911538391944894873600 7715424450568593741019947334631424 1860085403016117817925875710033920 -803782823879672688044926176514277376 3332112629634156385641684275298304 4475524016548499978894027427676160 -134466747923352285681134034162286592 7567394803904886955732107297554432 1280396989438274095560402745163776 -887368267243260578577670155681136640 6080884939617596660861988138647552 7838005189369283726898665533472768 -762855664462176222605751990022569984 2974411360549323217820636506226688 195405213779156207242449103355904 -758741566023610073924274347072028672 120472377794403681076462569390080 6068855252544338304037546239197184 -849724567818709806678887424973602816 1924130484357464057667967296471040 7696853463656851090950385796382720 -780250418314714981286752133662638080 2576139534298053542339150075658240 6107672555089610531640187077787648 -538184022640559689541039679944523776 6769205894522697722007371517001728 368753630101229945612494811693056 -474864007681234472494869285431148544 3729176870316964250891648331939840 5563398654294871247674224326737920 -991625740646368107479002420445446144 629532240512969763844290626191360 7476185502252235885757203564462080 -158707805090661077292965852235169792 7380645888506055257461183219761152 5154392447706905499561911583244288 -989005352103341770741929010024939520 1445662865030064089788584285962240 8857602511984895475523711787859968 -431746651486054951691841759164235776 6460349569553137400230012354822144 2692165553793814076173030919241728 -492689884461137416448099648366706688 7674789124350055581751658741235712 9092274470425008685000027382218752 -511013188274271739105643281269129216 6773725914428208490799737092440064 4270789262165430573872033963180032 -22920142551622105736848288212058112 8294332159867138192058419479838720 1344682856244867353447167468503040 -541300711383611897515980942351532032 3945793098366224800430664045297664 7544279099457740752269507406331904 -655774303709043914220372156240363520 1133796046648533264367982011744256 696046737536905908725121466499072 -597785788632687473561147095547641856 1455942576333587093689948033777664 2615134853524521377814039524016128 -988567016067463338733958663195590656 2167727188613285586287997122248704 7538039296896883082091945225355264 -729579827210224624902379075203497984 8990538978468554905123987675676672 6063944551217052010119739717189632 -702318922722047829407141407372607488 8160411964627536789186456089264128 753552631266846834920344308940800 -810076323976074263781458369453228032 8438061147207290780639430797426688 2843574129129917157072937561358336 -999983368881889419858247975765540864 3925360937162312044259626507567104 7991336048359221203329227276943360 -990139454870827268896571765502771200 9075072407363727461049784135057408 7942772195966883868728280932679680 -345936916247328909865951619448832000 124765323396195989951653645123584 6883880747807809800034940688007168 -782362620745020347207533029356470272 3231664738401528207121617008984064 1887603997423416734402869895102464 -964912108855494021942593645055049728 7692725170525217846648317061103616 7431788536019638653847586169946112 -735322953046314470829671333207474176 6578832047226973845686942663966720 961704371662617061795969242234880 -298883442496403340000488977619484672 5687167507950615835832194248474624 7771828882288389168899212552699904 -844872841288072027015055722030301184 7755434898283085822140765029007360 4069987024988786065644538076069888 -835610854661086313482579323077525504 8558365679614630042163289364889600 6116693174786018683772074597548032 -805746760762011805822965072747560960 2010779461451118228948137623420928 8900994324578262593945514612359168 -764961120592513684900665183199821824 8019900048856242483144284761489408 2533205121535850701324693639528448 -839695642152655236073582126711177216 2082751409543876234949265383751680 3968120814645910891803806963597312 -534532010913592615992776883525648384 1126316964039634097284343826219008 5973121715689257235842045296246784 -448050782702745220415687802415480832 4172489852356890662851049422848000 624569411523704472766741506686976 -35492562256326478425711852543541248 1932669354991520111233731372515328 7956435633025689715433564983525376 -655134875439226913023870096457596928 6882164494257424456136730085425152 9518711440067831638516217082281984 -313931258825620266204945456241311744 1531289462031851554835889985159168 2270985641947775632446430231134208 -486672614910206366521735046949240832 6062567443973873190581889811873792 7688577887112574281575219247185920 -295931983191764413838288623771844608 8372640849828218885966658963243008 7894373086636841853447893610921984 -245059437546826641549693560020795392 2418130121644465462696592720003072 9205928449484073408238963937771520 -95865738435309387039540631146856448 1991290093413108224480499449462784 6015437454750943529030221029179392 -240495710783904891545116912639803392 9488183712266838861320004806115328 6440290855609338083214995056754688 -250668049601827241547264453062426624 1915117822375532402631989574762496 4314725024633083947573683456835584 -548051082663094212381344238944649216 8245985056926819587761193852338176 1790455995990662938877882093535232 -434067984289636480240056304133996544 1819361784604946619227567953018880 3072665461413714700861239042506752 -117230684850864422270475766308274176 8876225772406156948969461397848064 4803656159124782458282796969361408 -998389998178548962559744579762913280 274862819205925196930646307504128 3373242875732162111780001295630336 -87521894781819263880512684995641344 5972843988909263834005482114121728 2707378464287717965438667949342720 -606474726241382286491446735685025792 8986659614357531613867411211550720 1850836292138108051627326278991872 -240327665634691029487899759278555136 7643806864206190111498218839736320 7049735865351770830791462401081344 -309976268135255780859337934685339648 8166491383666359435172136957771776 7085144216377101177184007516848128 -655363323065735493440541320110145536 1336800074953645106448384842006528 4000059792585793661742143422595072 -571935808786872480888494960368680960 3594239233259313342686290016993280 2797442900005379202620450928590848 -958778795345302816482027241396502528 2437224592963780712610558312972288 4101006267888952147429896432386048 -713100781243237288785130441205088256 6564224621146008772810981530140672 4462505883467110857062894924726272 -68630487271941347966032687877062656 8989812515682510930019098988380160 7906796041686525013684085749448704 -71819071987547698902548542537072640 6502597097997482868313444944183296 4274707877868814808284760928944128 -176093900029181486212856679539671040 2538489090543181152990476787253248 7931103552807491570437197720977408 -62859791661916872112071961556811776 4215998512513756547248224580141056 9421850469489960420875658715987968 -639952768150567709347437054338793472 3012742373307709965772850523537408 2164723337391485917717772604801024 -410321110131641390646677047624073216 3714090129775925475355414046441472 4588108636387721641942876627664896 -985769020204195320302015449550290944 4862506019664522395058385748754432 8580785766849547930002213075681280 -575298219899416917384886468869095424 467711100288752853882224146120704 9594305171635544185158031412035584 -229288322421782478035926816535871488 1528755421696488461059291753742336 8620090280209137459110271455854592 -798919820705794568940318943533334528 1772815372875073283188899711025152 4883676700050235933180481916370944 -181240813970526468558107170536685568 3164957729041748187997609807314944 3037583636828343925925426776506368 -463931024960901840277681987857154048 351424437670506168790808812060672 6449377569039396458286348066881536 -434142076578314193629954595130179584 3369915284123798372475876923146240 9724281261495709611996835567632384 -964947781034655051144854468477059072 3499429109448866378832363682529280 9525950077901161960636014521221120 -963420637606582297667373576088453120 3621021012401165543731338690953216 2168169721420006975018200664637440 -185240114283881902386677790176968704 6272962176603742589530470682198016 2474082151718932610883718700072960 -157875569168213759257606350599880704 3720008879858440224819646914625536 5121279299460762210427686048759808 -567168284639773552288169420235210752 8083594305125233711618412704169984 4255363181923260163754951570358272 -503212798990002055484770727434911744 711571067954237105509874756747264 5639395630292001634517090046050304 -422232297090145017327619302309756928 8708737317843986405130142826364928 1532690949186335077003463877459968 -760822066274159127337722792072183808 404133778966997611889431624548352 956883502282294678951598107918336 -646453396450625898251791526468255744 120398337107715856648440574377984 245162604389372809835271654735872 -853972600358861516839774652880388096 5223912453770827799842767981510656 1418224229074511147416815337996288 -229063801549365821301066031226159104 178817007416828691416499114475520 8796377583858772632889358762901504 -775172574509901533341025461275197440 2680616458315795159294633083666432 1784565805779641888151374246445056 -102337662297817561638727507624591360 5022150203080469671068877392445440 8618474679307860747225171377520640 -27171645467477758056235512507662336 4313109606364292117236227793485824 365895112588551791064482339356672 -425208572573671170101200332624232448 4856348949399155328365524663926784 8323021310988428133472320140345344 -739052346786260974831967627219304448 6124651963299452387617670982270976 7746281718145382832501415504510976 -653300109368331997921989922190786560 9179834793406100789793887835127808 8914552975125938968679751486537728 -80307340155405628786367902185947136 4738112479450440431695395163209728 2782336403160675543606219790876672 -878033316540806387181051643957346304 6440002570590380579830618688323584 85296005614078009085090211037184 -80065520614745489303839862423552000 1061653026365285419362010590609408 3907067971778061795594009873219584 -856939804405166239866020538020265984 1502836167259231025326591368495104 1432829518353107524177514123493376 -502864817853153259709522127924232192 7279545863816742294403334258294784 471067329995107341309885714268160 -163383217680690279389718849030979584 178500059724589930858039679647744 8916255816762920132036831660212224 -213155916056555121547590927650914304 300034104538950542604967121780736 9303676556460908408203261901799424 -165005615324018961773543369515991040 9462665869361368299208745339060224 7457165268221930334919008775569408 -512726440440331012114372644080451584 4619646850598634564887957129396224 4865350482117592333998396310290432 -926812361754005570167323858162417664 2560577402898773147148203379916800 9519845063176101772985604161667072 -399142687058949643601369577115615232 7758449184867396686718103189454848 5272550199554096401118080501022720 -29263772319104341162757126803685376 9836161632425920526419338748493824 5681394998790804430097837421756416 -668434355687685595662792876198199296 1711303699484326691117348058824704 8666812949448446026844492955385856 -586388235957355960169479545800359936 9380009012969985115629524285915136 1026153649140933159714375614857216 -744547095713147384936151549487349760 8469868921671744799886312126545920 2446177177122295689921649788846080 -779529327035301175623835153009213440 8998934182524902563138314046537728 2969750911475978176310772183859200 -844415665702861301919533370592722944 6988679118800766016143832354127872 4033496136217474868067767641178112 -505985016077210617461465437188390912 7666870589891315338230507774148608 8212545101307068944729279115034624 -172567071174204917365950285309018112 1137359778591626051162375609909248 7280973680395804440683480222793728 -295949733633189190915734546063294464 9246462634912079978627777481932800 5025211114133235634455805291397120 -70906486060125718525051360197476352 6828145568538937865571815101825024 9974232591032541854409840014655488 -466004226687378672468720608662781952 3671504058333218087486791144701952 3718208351361803473541006159249408 -979447278643714729010839287733682176 4480753667284290384947063281418240 8304146251005851540103991757111296 -915332050366087175628837944719048704 2128781378209831539469218496905216 173169397179545088187605262008320 -877233793085547354719549823213633536 151987837783866576653313795686400 2824951428971748020422270907318272 -867001062990620405830434829899923456 5368486268087781844929986871427072 5349254239745537834958677266661376 -288330486295170814732669127101513728 6862180588627168556586914149302272 9556012880886540619194822658359296 -768525144727950198746106911424249856 1774917105506038580211536738910208 1482815707102074062609465628164096 -707207046476942570794010205898145792 125306519345414863125279204704256 1416638614079850018487197847519232 -559567913661576779048368250369867776 9787607110131974168105665010073600 5250195525965696499949055216975872 -908028188388178333527434358079619072 8594506268395933999834236480126976 7484364659914784114528310288973824 -22206389206517877716389899347689472 3487828506483982048363240941944832 5678570825276788124256551324090368 -709875288944578944843771427940204544 8285705133574765536229840121757696 9666427307379916115180340964753408 -960474459316094370682671304024260608 8476204363277822964991531776212992 8253689876792251960084557799096320 -209485224571341510475747963795668992 5658316293966224502511677548265472 3947570778996863956880883298861056 -831371513545171540079087861909946368 1778920373786281965482508550144000 6585970987327145507146456000102400 -391337293867519026363693675755601920 3491801664532946014237140329693184 4232966878999826137812695200563200 -303692790263086065604355131963342848 1561620429915767459871192921407488 301515691336109503635080630763520 -46300244788764162205925316449271808 9593436052287159833551440340582400 7526622229224770253100281782861824 -775178133096238271727200452510482432 8815543807110039983816906031235072 1302328019147389039423359253741568 -226571552365099473999939953873649664 5778521630595676971525032692940800 5725681689132602247001253590597632 -13998299953087294962742243763421184 4988875429513852106782340261347328 8944994805343237552407546746109952 -403159494452285563057525668072914944 1166887665605400364951466124771328 3926694141577783920241858066776064 -594436115774383958767211389057499136 3574997957701787965029269232418816 7983897184468288001438377350004736 -478697311180575879601157080178753536 6601616414337420695761897576726528 9974650765450834962630739436240896 -822098608497223007207959380558348288 662973952252068353447437583515648 3446714700897281411234526117494784 -389342183264527460916145105313726464 7395166451481923334112602799210496 4594590710360966434837854655873024 -560356967404110427938097405431382016 3496400221355707692187840820543488 3298350731188743846287130312572928 -444280821302486388408720201965633536 5783141813404677681367094461988864 3405946909486197444594743566663680 -125827770839562106444589308001124352 7675009884943629931972537597558784 8526877384141655013915021088391168 -196781960662574881436079377673617408 944780334785440582292638036656128 455762194393514075868298731323392 -942810095012253635703436867526459392 3208002133708693114275609500975104 1290841717028711681579961626394624 -568039579386467439687200306184060928 3501912078235791118219849370697728 6112241898133235760322922867064832 -177001142377086623795787774788894720 2467216609538612090524542374510592 7090924792313989039046291405930496 -587960288007976019025931876154998784 1892956878502108695833085934043136 5461788943899235474068058132185088 -187035202601048856616483988137050112 1449650927044399505830292291059712 6621219146776150108750322342035456 -705305885974479808575623419589033984 6430227367227271936820183740448768 6998193728191969453940230515064832 -594765413927783161039252420286218240 115926984828480846946373612863488 4672743704976285513522841835798528 -118284150236486687823552908600803328 6272912181087520521903775598772224 577147100116760103846913977090048 -90127055232121887928453831935918080 6261764698244237352709419830345728 2205276315049968382033110272835584 -704100394833227668835614319553019904 3541889090769406120198058285203456 2593576956409345085432746051895296 -641798427947034012668167089614225408 4234299443321509362694873965133824 9456775637708793020642209082376192 -230584234557568928860332294550847488 7046663336894087549365440053510144 459129295400807539080626683510784 -287316804634214749926949672141717504 581914210040422549936037798346752 1375342869658332909611940115906560 -68013250086575435777405777826807808 893881011745371657097689400606720 2015390860610967064558951311867904 -578279658920930128424028801983315968 8625184506067756178754198887727104 1135780352982442889644454713491456 -872780104527574797496692622588116992 8021493154946838186109885818601472 5667866882203185392001185107410944 -846871713799250374417229438181703680 8682241488868186855127446307471360 5571529201034764776965988973281280 -863683118532144848327475261975035904 2835944691654970603214778694369280 3040494951328692292596371497680896 -888652985536033693933878986066100224 976209844988215224204968050294784 9282300791574473121328246443474944 -654907163753167899145835700039974912 3355337338941762855417897654681600 882450106982862917119731583418368 -448966047705010383543500114130632704 9108160549418628325350282104930304 8586142169324172785160906799579136 -730550345561707293798074259899154432 6618698836072781006868060240347136 1133208061912851168212120739250176 -57115241025315560087998902118121472 7625254614269517045697599191908352 6070549827905492465374533372608512 -372072512908123878219652413826007040 1859709151232142867919432679686144 5503044425108820969111352594399232 -403149296486794963724418577567055872 5452970921898278524113377420115968 8644773888109299689109170449022976 -571176713900896827201069550621687808 2851766083031384387354093101776896 4607249036826298471060677689606144 -832634546057469359119966739799998464 7703546582785646021076784733224960 9098267830770528678090066685329408 -63220125520007064458757464551063552 7507665140004924086690010284163072 9132711035010207070488834028339200 -360533597101064412919084888442798080 4068544011301057274176783826026496 2479675554195490337053301540913152 -60645764152710609585542100466794496 4442140373207526213408309639118848 8127655743299505535893678759870464 -893126303419519085376945573404344320 5476411544117780703801445848186880 3862550435483082588766060553437184 -657920759647885739492320296090730496 7008864713464677835246509481787392 4327617379206066051588524821446656 -646659003703118671128519049631236096 836433501079731927961321764552704 2098237868461786605108789705179136 -435564716462514630398886689422442496 1499527047110340650759946135142400 7079703498962881905936121674596352 -876542269930195824542152237732855808 1992926282657548326807604016709632 7710880334737835599340515740352512 -220069835871942118644713163830853632 2002000994947256781151121621123072 9818656731987413986312309641838592 -423955525475115791005694158205616128 4833325555995221259861839663071232 9648043156135251468764882868895744 -245885339997445436932596513208532992 7208911442894775007061618722865152 4023580215043860694287140006133760 -388510270454390549806940161358954496 7922157039814616447998267723087872 2179894434313671896031346659688448 -314977764139782021112186230154461184 8244113893972003267684050352996352 4811738197899793793842925172424704 -510131177228205010024887435560747008 310531480217103022477803033460736 7769520666749282961389125556502528 -405259361171007489208800546861875200 3262508827452177778226690305032192 4037644765834542561901772424609792 -100301310194234059479399785962668032 6730192429264370385220698520944640 1878644413362800840145365599518720 -894479024516040821462955991018504192 2310444126818096633921276162867200 69691730558852730861481157984256 -4375840986854780690635303384252416 1832908797829029599585358745436160 9089948574024372238954935867146240 -621867110377094836283466136797839360 7335290712425474032700743382728704 358142123999703386425513478193152 -636929979827908102218110246619971584 6176900034814154010638652968796160 4866986677466858448457931748802560 -359999606297148162235739590734381056 1529116826374698328108200481521664 6412846074762274407337773359955968 -95013142157042771718202475593859072 8186916472846500165085786334560256 8579085373628696956138160866197504 -631137330830185154263199968682573824 7405483391138665075127363058008064 4798285105990728042379886423179264 -26074255221732583354764623536455680 4990724776140920461347988176896000 3378338099396499708512563823116288 -551004108314345290074794806778789888 4437838495056627324521764586782720 4417853660689909786436945005510656 -270226173908455400495707410466340864 4531683513522975409300436951236608 9046530365989582840393897259040768 -732025629185666887986333304808800256 9486262814810768144494504819294208 9910421481095227577210165778186240 -484514227502961647089945494178234368 3375595818429447988354967473750016 9471171522783759217965637981700096 -381713036073001104878907385777750016 3769567533410605220811727156805632 8377319170104601946710157503234048 -806942049492825824171261328894197760 6031422178416596355064166373916672 2158677640572013568987335437058048 -505266432576328491831378496507084800 5291824032310818150921302167257088 903235451083126636916957109026816 -887363235270828229535048710653739008 8953719375700134220206250144038912 239736347293072688530790551650304 -500558899313712161518620000313671680 6966634885800538105574680741019648 3811780258946772482410471827177472 -751268759329876721750440218130907136 800997729179556260705798121848832 3695944119134040982456779036164096 -586406089914647508396123730795823104 2267720476829584063874889383149568 6360284549323565780270651568816128 -179724569178168188325599625477095424 9959555816941790806641218993258496 8232710308730764229839919840755712 -460791979517361537612977224917450752 7429233514448439684050467730489344 6606951014298149955457025692401664 -293655574495707869243530678882009088 371016364825142567864240118431744 532772967936309033466510601879552 -727993944267316845153528429284425728 7662420386218336848399062674702336 5771085775383963413618532169023488 -166397436339964781816978540479905792 5123010667236705743833448117698560 3686689538795038502381931796103168 -597013014670423233774293759882690560 2026865927611949784957421686358016 8353648903892999134315007604424704 -368043663485822909298955107849732096 7264054047552854193178377889775616 6089249457761517829240527859482624 -640716934258953437582318794809802752 4004878892032917169119233119879168 2392299498797291814833320426995712 -629421659061159631826931783049412608 8279201128106347671350046829314048 9810362550501757787025290142154752 -314260671839852438874832452200693760 2970555205068639312295398521962496 1825658013007807945254211592126464 -209095557830870070920546736310059008 2529713876867245967397645648396288 6982527198673605253085885116710912 -858508487750749647607215885985513472 9364544593005650313007525777113088 5012412238832017976232048888643584 -461368191588959275091325200959012864 3665179432772671003241586811207680 3533514220146080193879828678574080 -994303583155006114144499680707346432 4243269953938470686509814954065920 7353699235872418464982307119824896 -220681875468839008150223604825456640 3380863259385750678790679482597376 730822097338930367888363752521728 -485937083613726344072372439750803456 3155922447924471399370167077044224 9549707207217862922177210581254144 -109513145679950567549942036904804352 8983998146852815763025624018452480 2884215549485186271229587763494912 -591675646278973189732120620255150080 5172716115869843866982570306568192 2915063660438830538003157587329024 -324058775206684964802053576429928448 4668591870077672950378616076632064 1570308929386559778558836098465792 -628690084268982645490300470398287872 2661437707393615438381329820942336 9865211956442354002887847752761344 -375473675217582008154093321396944896 1026082151963137626020165999132672 2446300247803802599076257234681856 -192319959762958496256313290936811520 5642300228876309584518417584488448 1693105559576264728773347204136960 -560302176418491817008457498922844160 6974147320707205752005682811371520 586469972352011663038681022726144 -212587837360139011366597114976010240 2130967137137717688685344489209856 2766178842027946202027928410128384 -745488953787201421906703795544391680 8297509536196183555475878260506624 2342165294535807687742294713171968 -496411895946393864468276949255454720 3489008599055927716651185599414272 2687416879992896346768224471220224 -202765342452720531144780419279355904 1224473364230518631161772336218112 8997856507878654221015615350505472 -638564703667470318412890989179961344 9028790137181184880227095416930304 1933351881217331290471105470398464 -421368705720575834652246841455804416 4632758168204288556482040569004032 7551157440929394144896076438568960 -832454962787679551388200369846747136 1856954463866430472842583191060480 5301993186789895398527389094903808 -496414773917624015012751984698589184 1731961016158802884806292004667392 9371078986586582950119884713885696 -902550668969086817416111587353165824 2584506008060073203181087994413056 8447328365728017673554446195359744 -268029593818548044520868532029751296 8005268471594626321797060740775936 4484313527828544392327262935973888 -50418116015287784463390295327768576 161993440400291231240068542758912 8178871185044726856058166174547968 -443437250761057107116210472265711616 2940423721794964611275329422491648 3268190615921903184296856243929088 -762356395355346945164614890762010624 8924676360147148418613447229440000 6000542076787659732959197464100864 -687922578071616681923038963797327872 1701271822698732208062597781520384 1950886155096365755534534349160448 -306611780012368192604098150717718528 8130778927285875035923048315224064 1559891559706533837022857875423232 -732739607807489534743877869750976512 935661074917624190250482153816064 5443172024815821985723335661584384 -292209586943639981823774192606117888 4740913427467853416843078128369664 1262639664606727517725126566084608 -474139437280898493590478816202981376 3756174169322050837848610698166272 4568611774201365210294544058286080 -921438817419682136991845634856189952 5345478054926252216033902413742080 4806169546704336545530786019803136 -993394120565717691394193133815201792 6015914362236441270037494626254848 6823081291801991547049616303194112 -602477231961267084137761874502483968 3490968764970622735134348437094400 1798960364568864068276513933361152 -764685112868690090654754245724602368 4592178417473776645010404728111104 2502983508515298930676087388110848 -70829027216547029044258236916563968 5887864148099508787245055188402176 812569492943500608700812328173568 -10263305921754474420489590417653760 9608740963814712692568661816246272 5271035197494738130636169736617984 -998148267888522058912886703211413504 9150956606850933786880549259837440 5106227733353684237412651958796288 -106551993553537037811269244505030656 4455933974494487705876385314635776 8665272182884217126737385957097472 -757489517257648696775758367294488576 1583004656076155493000233214803968 5439206853713241043976155014627328 -24344779855559048294537788204777472 4656566789745790189513260507594752 3136769891340765372763874600681472 -663430547431135092363744302887600128 2890232592788616236869400095883264 1442161052965258253727709863608320 -285951260172830012810629459476480000 4041202081265704977600205016793088 3672835555779924043805198756347904 -892456778887054836752647631568633856 221985004639229984545713363615744 9809364620838670005714570430119936 -371590839506453045348691002565591040 1978339297468005175337440981811200 5720581329143913022524716404965376 -463421945716393372562188447315394560 7612925806213091145987652457594880 2114694404730140348706814701862912 -951413123419764916323027064857821184 5959221538039289013755280160194560 7568416163219943396629760547225600 -968833278490450051855189561147654144 9139409523850619441445447785250816 212217656188812045605884097724416 -576898356992909851603145332849901568 6289494643316021887663169668644864 4874086611571585851190891880906752 -893509659843290240445664495075852288 5504052338777943053700336896180224 4937198602819415571836516188553216 -449602607358687583025839346240454656 1424397306965168673523129389154304 4809841755529113624406596859723776 -693424091703715650580946710826057728 956262677965556632616560853254144 8966464609764529621868730122240000 -318483865976379976214096890266910720 1668358131435125382847746132672512 9309088256542329058239509736456192 -331480706933797405264482679513939968 316819511413395269585128443084800 399444618069790655392362683957248 -858547657600753916796360731624734720 5497539017024985429659696366616576 3009993100147584263045092762189824 -44233755167096571481111678007902208 4545429727371239958087794398593024 4298825358802599873667896084267008 -372870131869095109752842931773898752 4306055182306662881237379269525504 213489370559599278931673635356672 -415464063428671931340335078824738816 5213276263853258087914470404784128 222356761796841943403332573855744 -169546368446847205125497934594441216 2455937778976556510864900035182592 5855152466640555222625338985021440 -58806733340307696979772059817082880 7355393706827584866215056050749440 8479402535157809775580164734844928 -242099948687808791291641156549476352 365992068762282329023365368512512 1729201341368693855995949905608704 -40991640945158207600311131678179328 7815206685920317452842176492863488 3810610528011466843265973390147584 -853398328661649764210414758249103360 5429109985405702110483684089921536 4788663548710737008310543435431936 -805903201855404383121267081401597952 1753903994805273581114588666003456 8016141012263098929594539119214592 -768686850885320607466880401649172480 8964903686294939012402244510285824 619893490512869934896832848068608 -890823567718633575984263019699896320 4978965317042695439099755243765760 8045289566536015242895922401640448 -365440404914476654496632606713446400 5555290511773523337245650474500096 795245952606253634569534135336960 -866880048709485570555514523775664128 8227922162315861471570138564132864 1242073853115454437770417257054208 -121602736779571745873680795185446912 5342308017740774291266858171498496 6844228250840653026156998012436480 -871058239292557995857564327223492608 7269475390950629099814612937736192 587881351472179276417242937425920 -132414191329835302141281587213369344 9402315243006147574462389363408896 8353612516736519075285769643884544 -531603389383221450806183707061256192 8342745552987439082743914257448960 6618429780826925649473383983742976 -991468223170038089052505381422497792 7101990077101370700159741922902016 5196986106942509151885633301512192 -483096468994938595501737628451995648 7506093919311334740711040868155392 8274092009043796577289649168318464 -9321945626202296811947729350557696 8550811357410375047298813807034368 7517959982400270079752318606114816 -787048967850862188023192078386200576 5301999842793917883072397285785600 5949477293813225402602327593975808 -43841867110173949294435684270997504 487443473477488109153765193416704 6789982433450931992531424488980480 -869422504860627413375352660687847424 6101448933629289472455452122939392 7054149453137617088587089198448640 -272531513088912112960213669285724160 4568376346082096787906431423610880 6338672350803113377238875455356928 -102076841571540276168659906850717696 3420745791789467910671072145440768 9510320793602281296548458741628928 -398760301367696748701804927777767424 293691171836936434369477184847872 7053152639500086585134915849814016 -766955515345240109529512102191955968 9749975736488809854984871397556224 3546050989504749877386270776229888 -604821893882794812123949540717887488 2419979018519253523321569843085312 6047617245783778057209090576220160 -754136618620412916690229740647219200 2871830189657891092294020743823360 8007821609669398773132884778680320 -250740074235252078221650381523386368 6610988364113872192142258676432896 3967976821036387998813229282230272 -123458533051230739268037377687289856 7332523598742422580524279908007936 9413525348785941607136783805448192 -593130555747075560405250828964724736 8435207035333039420045497544474624 6693998558406388498412085243281408 -995729634219424278661056223284035584 8038886258210675838008868844077056 7523295425161935769241288139866112 -759361995097686102369593630016929792 3024048382200106611471337224404992 9945811701506751426352301706575872 -621962400327772758653861016624955392 6709767413810101110401092718428160 115371477461298934732532949712896 -798577244189148153679142601390817280 9085638761130087088297552692379648 1101173946883017609768086353739776 -570610440322912930977121058773008384 8348879067671974460546688342818816 3694869953674075239179953192828928 -975199194883163605065832677916016640 6489404742855453321555127220305920 67630362493393558514450288345088 -382093681216646505263676910402011136 7774915350638252893328937727295488 9322278835646336023241124365729792 -504580114984532420640658090511826944 6211255692809189299785967803039744 8738926588582141894821574713802752 -393573724852665256858756592196124672 549051667103538179982587513012224 6844194620661652220393090499739648 -905118175305469718786414201679118336 3556947877800211401711338735534080 7355444736934468128073011729268736 -371189953777964310868191906526920704 5881370390704501002671685938184192 6103221769630662129971734549364736 -851500942327148222074070141822304256 3394782884778034720583138987212800 655421608792987321913155640098816 -257563503125524283854750968082071552 8376703402281519646159689295593472 9073336867336618118917382467485696 -3944373172055678385587044019601408 1478636692424906908452119849730048 8289361218002626703435810081865728 -414673580280419930857794555835580416 663631389403526346328018083905536 2442148867314081087648600571248640 -990315956362856882486951744479690752 543200034583895699880148304134144 6167806914029404282669985259585536 -307737453587501263346579445611757568 1112976920416900450499775338381312 3241156717895947147344835621421056 -107014063705090693703224240845619200 4313380296457244590826761870114816 3282142738601365666110907638349824 -757045113816901558926426428997107712 5831361467652762783023068985950208 2382936865305380942304935019544576 -437395345682640654456146380990709760 2861735063655850329398237428973568 4514131330051759109156175515484160 -126066443886960579261160985649479680 4135479330658166397972579574874112 4307222512372217994400556719800320 -177979086068312842812899331867148288 7472497764786350844983777217740800 6480747243963259397873866379362304 -188002470173271601900575000893587456 8532553221113792490857212474818560 5805765170713152073276540636364800 -192135165104661758059024343355097088 3617302432413875255469529907593216 5322551534812939509233103243575296 -993732155843738184396553683038371840 7984212442058023480258584807211008 7179705670577706666009216549912576 -733010248026536322425125972157136896 7533386744177784521730986810015744 6421172309887652458995135614550016 -710335440031675452345419650064973824 3524768429061255536611557887705088 9551857337302895487773310372020224 -972333323657273636259778629740789760 6343637522354308293306879058116608 8462391288225044717269483834572800 -549490500731521136862167253808840704 8109646417803693955266906127597568 488959071136668301232643172728832 -546434795365010986119230951016890368 6450291851484387826389806833729536 6944374695394446962957054082285568 -163380966918964091623695777854914560 6380309696052794941482209629962240 9422873362298538359240018563694592 -887937004279395602707811991329701888 6825032020159895687766181352046592 8861370941640865267007196739141632 -228533958475989208623935627563368448 6863958553243866483931672129568768 561811706832145157338513763467264 -269145375675519460882369150611095552 792195700990037544231828476395520 8801526484096660125430042949844992 -475502630080021426773109246336696320 9746317788483201127958720186155008 2920449041857112504369300193148928 -39406859995387598930145299220398080 2617289198906471443456114038931456 8939377026007786688522574595358720 -32074941039877241552521055327748096 4696851301653412125034547693748224 596505292307043359530383531048960 -90727936111555313070794143019565056 4356007177561124135735253325053952 2123795890091879403128135085981696 -373513276186455203163737683465863168 5796203609821679039231412760739840 8363362724669822063370806201679872 -745253001070082825404184692321681408 2851512817441606392117627858190336 3835033729228821813217387528323072 -769322868584792113955247189416476672 181286456831947907631648432193536 8156057490591917643103490505965568 -985072920844927590782501287909916672 7331224821208721801562365959864320 6053237359972133196975334636912640 -26752599389692095520981313745059840 7179027491682502892944529964400640 8323533965536618435330283510169600 -865560181626252759360971015330988032 8641387805978234707151677611311104 2104102172895683601761341552984064 -548949314759139842083884660131102720 1935905008530666971898600333770752 9592726307893653706218261704605696 -158449198780816048233286073990512640 6977957097316347784386414534197248 7792518122173099095766735456829440 -607075201962826890251864973219201024 1386767364013737002395991646666752 6926706815722021425628830339432448 -196002706627562204196411252079067136 6986437463613852531093889383137280 1644397980694198184192592645718016 -2182429935465116396133807894298624 5660622068798227454904987988000768 7774718363594724482174892430589952 -489686887244951843692919937178796032 2275534412066289898287783588397056 9906663324087961041214630143197184 -859915203316950370321892613839388672 793897064388903808010160437198848 1841175759542787910920120108580864 -181247390659122631035196800336134144 9977445413571956496360432885301248 6993234974756904390060127696191488 -109262355152991781779169347582820352 8245095284822625941395617448198144 3331005681296753662126411885838336 -942301705237679033107787408664952832 1174901656476878383580451283402752 8737614985577616452009931462148096 -802067477373093072315105998425554944 3654969482446272815722056699084800 5452023604874109785052453151965184 -475071936845778010661342029759381504 811596144294665395276101221089280 3231059530265622956632485341954048 -617431748249651568238899293400858624 5831812908433301611808367354839040 3007030138417653930510835091767296 -732789107509058743254378901655257088 5034512693518889680134098437275648 6702546490570828896740829103652864 -862818833857566585300118437164482560 7531544331435971410472454940786688 585494462325517748851319962075136 -492607213763856334991358619922989056 556102021711793489146796759318528 7356331991553272040548919505059840 -55507598536276852975657007768928256 9496732055794415737742221119586304 2178483854948687724090598354845696 -20026470594804277636793603977117696 9850992700402603615683851325538304 5834105008888716881964923898298368 -488983312080089758231425461493170176 7937076489127856747617841246633984 6889416138745847916375864068014080 -855659642065864750707945162244358144 733859887301080050109986342174720 4768955820948901450221090481635328 -316338172198059804986287034552287232 1697637133922258418649468980166656 2953179840974151214655217684447232 -156839776783544898619562807753965568 7529038061978357793862294584688640 532906074826842180396462714650624 -735660342709586124764794911404851200 2802630701832723193783450117079040 5254497660474951149016535955144704 -513981185611312587731377592803000320 7087315352273261929291024334585856 8856645167908939588943683197599744 -840548662908963492796491505365680128 6827130787001406211315011527114752 8880177359724287904379205589139456 -53717771913208077903699742040260608 1243882296436800509791416046583808 1361267403072744111730457088884736 -899565128062094771054720670266032128 6740252020068107978231612358787072 7723721488781102737136123360837632 -60955103273203973147433679374516224 6010444461723205313296352531185664 5563901825188102227385149374332928 -308007852274720163548529446497550336 5029582125377124154040873685876736 3824972319341304758983664739549184 -884962030615784719353797164845236224 9789354752653005302700163333095424 515230475327828238701012191281152 -678718993742181913921764464468688896 8989571182163821869961947727790080 7132712966757288720997768887271424 -70083744368001931430820094666604544 8714690702016046849579349174124544 5846543702995682717168771574792192 -781462895907758999605175540395278336 9809501154032374917909735324778496 589101589036217148960923065516032 -819882223340544299522282299634745344 4554012723458827386701069380747264 7763834099667134424181310350163968 -957044564198878934305173073389682688 4994984731657500903789700686282752 6056451528715969661843825263378432 -406185149706145422469865134438219776 4676613270766174406727646622777344 7832061250463040518131556078845952 -90777494238478729075201093612339200 4192471854572043967602219324276736 1282336579375443415753710804926464 -533391142365826652596938951823982592 3956377770035488870095393721942016 5399266404863764393981645300957184 -210737195126700149569238552719392768 3212299934701191286066451943784448 4044997546456885700322978546319360 -872393141092142344280486754947956736 8553759734497719186885142214868992 861989369041191950787952068526080 -246468608451415348901543330493497344 5096562917996388550967403239964672 9002153578185227775189344468336640 -262923564985134233243973494549512192 1994665213651098696481829600362496 3219277002279773948003997366353920 -314689690766669926756379502571421696 7860281574689761544714040180211712 4696799599168423561283276359335936 -595993187089059350298025702532841472 6974030078646834442899102678122496 3317549167741128560498721530314752 -777650772435304862932278680724963328 4776625312823805250624240819896320 4996412904344291200893103808446464 -982210892947447458483411623092420608 4837513988310502927218055445479424 8121897797259400442222317509017600 -234906064034423152157316396592660480 5316666216858889697536392174764032 3817276831178464285191393935097856 -326062821381072435680851271641726976 5228195743846614692544238556545024 4139523631225407812927193257869312 -920568619146110190227921249899642880 272826816491852371516986801258496 3332900270851123618111640425201664 -407321149762963448227686739485917184 5101645406782039179749553904549888 6083109451234983449998818629648384 -700873816796541387361795478472622080 5171394336913575994410964533379072 2903419282023318124098854833881088 -483952250871768292633405025819820032 9018199587740203183606930155241472 4071478209004131451383747587342336 -50755793215707750253620130161360896 9289322821146710755165920743653376 6929479758026205883779935761334272 -974995367748775240252186634120855552 9724521815177889433456079865380864 755103808618298367539058103549952 -757350836570643367744239222713745408 1652015303465569768402288507879424 4357927220006603516198288634150912 -662751094979891891181313732005330944 7471816305435516646079798121070592 1450822773259194824896247844831232 -410174134898365135161961879355523072 9280096971102035407572333500563456 1601805730627451904663611538145280 -364185170084756337422364472831377408 9310090746848628026354141369466880 1804563434937066055693471592742912 -608424794506136171536093897138634752 2304547320440408998319353363431424 8912476259447654019320675804643328 -41430259912977830771370228854030336 8158272154737587719050764895649792 8309477159147810437101841087987712 -901363482178303580035657732246732800 7185046304919132886973128340668416 3696620830552568355233303493607424 -920520182797572342124424050539233280 1812434271947545902096197735153664 2229040253927258732827199481577472 -158130922099050818141345433799098368 4369794942517925111391683342237696 4492926901267205788039508263960576 -548949805027750447645755547368554496 8344192040524721680889191518437376 3765116775579359829856877669253120 -940648606346936160514933450071867392 2212072885246907731120987805057024 9455641339170003713522162456330240 -72466504811416039661867694999732224 5776812324744399240981868112248832 9966744566717298386152894228332544 -309777084680292387233675332145905664 1503620907255376785909266388090880 228786259804043023813602950774784 -681567807831656075321892512051757056 9489937828159407022451114601611264 80580989619863717855425617461248 -544518545090721910082252991564349440 5842872696131987548431917021921280 182637796517841254009438700830720 -818830670424296178967356802020147200 3360418992635501106478696791801856 2510765210532209019624576797114368 -788641059134866729403386967300767744 347946138140777375939330708602880 3102441255067089221268670672535552 -590094560211493096449581975806672896 8021310849242853911327995062124544 8623808832568725313119229501767680 -694359575050504056283563304920547328 6160794041080309167697200091758592 34875252534306555490108824354816 -637033911362427423195044861196632064 1326280086244973541145311811993600 8059223451143269596597982515429376 -126846482627750989458428756582465536 7136308181315573388767964654731264 546312272095243982245105684709376 -503369938908418699159276435862978560 7467651401073363080439313993826304 8266025127540099734242425984516096 -521519421844629848494187455904219136 2990435481654879551415751268106240 8053605307991063647513501799284736 -495074402332723589585165545143009280 2919168913758755178691345371889664 6427958083957737956481854070587392 -48165291608783419185655062783328256 9188201787593860346525829291835392 7261153622823909515382996665892864 -719407390556710342051395374306820096 9018871882758864470505254891290624 437732018091357548658937166823424 -204747962928381659932956797159079936 9424992141802070679369285883658240 1075811222193951958777167354003456 -327801769812317169274799815829487616 1917531199003964548906979914940416 3893956730950690824008304684957696 -693127694948929497965375393563148288 5831375785175551834195714960785408 7169922270008029412453824619085824 -786201855013272998097417042162352128 5856714650379049940258340070227968 9604175031656207738299239245021184 -306540806921812622079157293065175040 6188920422469135390343007676923904 7399621234268574985650283491622912 -6245497291140461414395479202988032 4191723755038321884854630970556416 1879550937592062510050190573961216 -14266888467054551233416293301354496 9454766102557811639123721676914688 8865675946690826235873268586250240 -992143425289683525786661739311398912 5228081605714212634018728177041408 2912271862939738671273951310643200 -947158427235195451969438836414480384 1186665935629079900115233438433280 6802148678293187283811051950309376 -150006316313950391440880254660378624 954687828417633914969036265881600 2113098064282082376051985515282432 -219916417055887842667349160516124672 8268972121482092336498686258315264 9202581110885268606851648533299200 -997485535661345963046195918767390720 9728976854322897998096200850472960 8558804063141278163334934197960704 -842278571193461083581109665630519296 462718501757886893049187296870400 4567972452401650413715552477380608 -572702574684430608780614535076642816 6233355074516255417148806113787904 6980892260540827070192512046989312 -941008839304490635236859836308127744 8751361362139688653086077084499968 9309214312931968258357156426809344 -59677817380452614560804646510657536 6907531188646490490398462284136448 2651183633217886798058109339172864 -726565397539465100700980754348244992 6864470202277311550785501299474432 9021911895458906184085857070219264 -910398701616093749764927143582629888 4387765556765789127016275278561280 8197832718292139813217231221817344 -791820389916650056072712080546856960 3679291169899101228704712460599296 9372612199090445761539431414628352 -377511311650644308343668225662255104 1076370559518417251629270434840576 2516272913475608996782880638107648 -869779719825531588600197355327717376 1099798439150206249566615971561472 8860165873557792902434966841851904 -90629583398233918505661507343220736 4533559134319212619556560884989952 4841880698321949890937491495583744 -584210510757081868891218243334701056 6434506276239921535811804435841024 1948906704153162281404089166200832 -697085865412905925683860085562933248 9803993454141389099739151526264832 1092280660711412809772547602120704 -203963660360891454217080334570225664 985879967092695251561786023870464 9552130684623953094604596514390016 -241229162919906317795570015635767296 3971076586132230220850012901867520 7504765874191305016028231794425856 -908011790826808940779853466403078144 2839563679763302939434064931717120 7899362961922756142709753165905920 -928939869412569498591535130436698112 463779590045287149411700653948928 5779680640578209127450672858398720 -802083964650291402216455339071504384 1962465302497844487855830787424256 5645278591870269018829852428468224 -607462068012279828276069237660844032 7255901444993123178999455839944704 7740309925478281979118187507089408 -253438565856602077096862573184155648 8533504948433002456585410199945216 4052550052629773951800484437164032 -564375198827826346141328824411881472 4591911644877832259905633583628288 5819534174119594324707769613025280 -463028672734392351240250742351593472 6359608645369246045119618687696896 6004922803469573618455228413116416 -388569067479771913628327985622810624 1163346947294525110764557259767808 9254635121152554159944382413799424 -4766665385810159993628311632740352 8937058100277347226466472322662400 1856775725656548112630362956365824 -584155492039673278264686343878606848 6692469353991666283230848184483840 6437880840715446202058542724153344 -394421808872385309077961195124686848 6503353291935986723745572614832128 9804251446140595769600394632626176 -829013507774763493208792776845557760 2550759137904697103357437091512320 3133473180642947814491569487085568 -776210454030135610948979955848970240 9656763383818155235161687029972992 1417857112390804888228226939224064 -184504562752540784145408563861258240 4174312516504064095625578937319424 7942652107941097109161625750863872 -118146510357256529605111793103929344 8842243592351350251066856824635392 9499318595317537974756876935495680 -540421486763330494364203397530255360 5280730557573527347166579886391296 9599411395582099243002826510565376 -385333874384252068638333980637134848 3309865964704695913637696403144704 2146546544140216415298373363433472 -940654050377375971236030769872764928 4764041400175143512274659044229120 694079017561844225093646027849728 -332604518040211481628138169908068352 6525980258180118410986222327431168 7729427561913384680391173694554112 -519952638388127014920507480615157760 7131994833211502397873421516013568 5745410345927279512828731499479040 -765658675577571558370586990315831296 1368572245150536987874508333383680 6223381415028742193373847811522560 -512411988841990428496057483514609664 7048425834229910124832971783405568 1779606010044890425046016335020032 -151834524711366032033016097640808448 5775022989923901602271433517432832 6808159278905197104385199741861888 -785558318728089868727981591482073088 5503012176470973660737454196391936 5033689569306610275527630394490880 -393740388446680528842659210201137152 5721120664567796171008473032556544 4325831482898393427387263395823616 -537335345911430056617772836280336384 5023483327665244079824634506117120 4206016104713820529640744190738432 -596919296281436258652647546886815744 5998872708720700617513429016510464 1797875918751167846905111214292992 -849883684151870028677342990809694208 6405451133617723072418388805419008 3781087065106585549731334004408320 -19022440965381462144554981727928320 5031010267383798146134082179825664 8382806481307162317600447669469184 -752704155568627135138773712410509312 7907496234960012620256653632077824 7504041090746323949873564013821952 -577769032649862882599256408293638144 2255230107865331522711868806266880 6684210741436845735439245894483968 -351795904316209106975316846783234048 8358963534237464053356556734955520 4973211753669929714303569015865344 -791379522337239786421097527905353728 4799546856274160687673261919567872 3726368389762062752098329542262784 -880288155392288180504403625774153728 3000020829910248588732633465225216 553725851913702577000872495022080 -896278905568624056620213025200144384 9825445269139805325657541720408064 8939920805459240086519638592061440 -488366399387038183942448680173305856 7974906228303289098525345379778560 2375931781252132118771354424049664 -196798773812091166615925165037453312 1332171034769622508432912176644096 5786441970324346035603319545659392 -566099452070398809282805856116670464 8493972680682560790138729497886720 7997292654679092181433176163352576 -314812339784733370884863998637899776 8554098914537458192856050644811776 356117090887730996537951535497216 -404619339581908674268747070074519552 588700568948889956519662588002304 484626118681299706360860285861888 -423916948334520954946658963625607168 4491752069344279042701641920806912 4853142994728151409004255673057280 -617069155349812478505560794135003136 5065154049787983983947532094930944 1245763363566952801229221234999296 -746665277982628037771563111253278720 8308059934540244873980056042471424 7700567384699772479661741451509760 -926877320345031730107566002056200192 7981806878900726477148682037755904 4804559005349129017842034651693056 -203240081232870947793495344927473664 4083142598477463010242410038951936 2391655091272018348318652752723968 -772466279220763225253048424918417408 5294138859359980473761281964244992 3140362419595030100987696514072576 -620110693361298808390187861579661312 8206507495839966803769046587146240 7479171777018493364127037917233152 -946841730700080078276969707977310208 6917167012850478770753657288785920 3847538900804870762279817803988992 -895432520696397960036025958362251264 8946544521322839561561657739051008 469183137414106422809235350880256 -422520815801615153440099929203671040 7909202166711111817068378190774272 929392055525219947042501352751104 -219357430801686232660764612557275136 475975613586380903666363507146752 419869153091665492988924203630592 -355448586658252714804316013428998144 9461379601028113880104997589352448 8517244688440930312243925718401024 -338860058240559971149167222685958144 6796803946874685422335590523731968 7589828138735204484804818849759232 -316934490673614901675428730630045696 9880996417265461055547362806595584 3053261687054662889708622918451200 -492845079255284953204100997733941248 3520569305025106624836916624752640 970386924292434659089733459640320 -922670406309292716127652557505953792 932964646291548146984581504958464 1934795372285042810132381250355200 -557103758875273803513313504090128384 5003705033066274395898291511361536 4753672162433591502084442349895680 -748391686751082617927122839670882304 7671223522724388358313524565377024 3725439192590262587457980680110080 -435873562554389803153077344636239872 8767276820678661654064410147160064 2824551191773338605074302476746752 -194783048131286760106926980563206144 5580098062232046883032757788737536 9928605246620893256480117888122880 -865338069156512380155115025119313920 8318119445513286729146752345047040 1184220470024194082882600908619776 -296098208812636326944934793075228672 4458745534402070468216019314802688 4891767230779312573009939610468352 -616982641019185370235134499360866304 8979032677501709129554399409995776 1249420048251246863980838827065344 -31662815623314502658753535980601344 6439511245832717938243863824039936 1934270389720677216759244287639552 -986438733828343687222978200714870784 2844974535595571328859186476875776 167005870408905938726713888342016 -540420132198335154774818576278749184 4900339828289331410989102600814592 3707569780493162194272500746027008 -775792437559835225726932071712030720 4769310759964599783957758386110464 3889416747533740573773286388793344 -400719063816695321770374555813019648 8024182843081584096289157831196672 5824449096848625283725486337294336 -914903389516870242629537719302225920 80023712319482497828739289710592 8908043626125391419326813846896640 -89311063370105149289346147337371648 2965991521827515731009094847299584 3625228203214392641016163926540288 -898514664253753982042460517872697344 6161656607226459602001457548623872 4056742250489693978183508758102016 -694163564469133595799342597409865728 375074924607353718267702107176960 3117514480892935249021099952832512 -964587502841911527163105031988707328 8053108257414054261351770350419968 195247814517040237269707529388032 -518667065298736073758603925061107712 7202879616898226439242005235105792 3484692632112891949598574913781760 -864550144397319388023987337420603392 7031444565494732273949641304702976 4574767051562441725043171271901184 -174376849160028934663079775420022784 3316788382479298942634744220745728 3966769461146165931982824117633024 -137272733015953559123134912852393984 3856973798945444967953280106758144 4224805735335446927765906932105216 -228570579757220491939962020876517376 6041540614402552122420439390617600 9118664487456253416464924767420416 -174306429673581446687479947109335040 6674608783851536215309285544951808 7743069019930634909296173986611200 -970648921919812169997550370051588096 5603167211279996379160903998767104 3506646346974198277153045507735552 -56005159140521807504720289459077120 2163508561579413968689326953857024 154001448489046654145374195810304 -852991167276814684446060666987479040 3569142685566371956643025895030784 8682006198887435215689605787418624 -216577828699779826541936062419173376 1896808371986008966359398444171264 7138276837736121915928438235987968 -628007937257918499972721276333588480 7258954290873011879120020302725120 271731345816649260846716209332224 -69560717830109441120673742251360256 9631928863841262973010074090340352 3615808571251746354309207483744256 -683984005337742205351668392675770368 1968043110316447713797372892938240 8156104475824717415119758739636224 -202139002699918016677193420833292288 5129535896485466045400904997273600 9035137863913672601645817654149120 -771000807724358487290040578450915328 7692227921897673745411704505761792 7435475619577884979316038960152576 -698322808617127525960948468720599040 5390895324360367696028740293230592 8851090880334438106802373642944512 -986687700526689469142360785122492416 7302582182440874570320574641340416 635044339937557660873215455526912 -869103677639697839393133763164635136 7401253051607115371314303727566848 7923497580321242468334322233376768 -185717407313080069421896975542910976 556200466885077498032608124076032 5760123338355880990430637559119872 -377624152986100344518530981831901184 9658313678531310979552452347428864 968276988350074162928956274114560 -362197042708353520786626513402331136 9666211589466145861272041559162880 4723991616380981110073813492563968 -880378823743601813653455355997323264 5410623385555224985814290011258880 8006849937309214183168119521935360 -917509743361078593516372574110482432 4313210295798345372234973030907904 2781825311337910095711634292998144 -816619350665076517072148422706855936 401208670422010862216644726358016 9240749749166794487132113957027840 -603676786508656582402305653175484416 9526784216209509467020388200349696 3273741068882506763014716595896320 -360873314966533608335899786951524352 3758639228516794895076768436191232 2211571608611542345622695547240448 -166580351969497198627902201918390272 3021367477714514016675194050969600 591913858106847097990933993488384 -568065383002594886653758032540860416 4882239327694544508363826895257600 167417193825054060760405030993920 -404920241534962860520267224906203136 5148369132134886516756960472203264 2546445249456211004926667236835328 -575298827483932054304409137706958848 8351224253757729831784584354725888 9565028095690589935597690395033600 -190024969914379026474073660156018688 7501957722116430386726824031813632 5709311266812957754186828544475136 -157343959166898265686358810196705280 3284578863346420710728988794814464 2768201655454439494565132161253376 -235018174339572300991296190237638656 6124579721621878136876161155727360 2289207065660262248820464949395456 -613843077546699310676437929493004288 2041259714273691390243162728431616 6631025192660663999249139726548992 -189303504912127319545722663117783040 7676313582436669587206252483575808 9610830282337993262599555814260736 -639173207563289933742409778997493760 2220375635464913119376843502256128 848989751913245156982799460204544 -174883759383553383421364656553328640 2448225900901204194101701751341056 1445801030018452535652639261589504 -612322524462584215640898364078292992 5805919980368207200048638240751616 1650933108013468444988280343101440 -186180672238543253999032734834491392 8304046309123987990606129104158720 8512381689218515461450818476048384 -664083050257669484313399202565586944 7152599664512072106602614004645888 825574759112511415302939421442048 -636629835895364238258843505513201664 5683178207190256192508904456847360 8802317904672119239896242220695552 -112187967901126455354230112855785472 3164529601297538810890897334468608 7195164813026760916561881305448448 -171095112239837317325127230236393472 9275514397329274472618074522517504 8228688836110843756915623723008000 -768954130069481322071104675895050240 1957436009853348885313193271885824 4125862311050293144847939163652096 -329808321005228864067806030523793408 5787026584012260154135758942240768 4772775509442407253029863756398592 -81129387772388646817980445834084352 307768248694330686474767554314240 3850056994875175141972223870369792 -875155752008461685642855440204169216 1640429803964805992841259603984384 7596395330455637691334820752261120 -270372677583301932546616844133335040 5172504908000485501001608919515136 1320495562130963879860455727955968 -330019156976405610798346081449017344 1350449037880681414746170221133824 8900678970291563983554311146700800 -762874577472227873424396075900338176 977558846768791396721662030249984 8993040019561467402498837185560576 -763416241598121821241663238879313920 9359762368856427515683029351661568 4812628957048267241545798283952128 -242355339343943620270790690897657856 7561386530436757935427493828755456 2607455802820573275195531631525888 -757731560229827733384243168583614464 7956225079063975252904347883798528 421609832495538099837229244350464 -364487547448849419546340629818638336 4933021325791132083505069744455680 7662065860169975338538935456366592 -80066939590305806739796555632476160 2964191393932576958533340460220416 2736091639212583593967906984034304 -682632586671007971724713355160584192 6876700655752587894917222402883584 9566155716702479759591556660592640 -722579690726581016504835956258373632 1728916950875652188159631731720192 6326964055449663309910259980566528 -642371693962020594716683988847558656 8866744377174205928146095386394624 5483982811841026526582648172707840 -44633527092286331161586359775264768 1627750482449786287010738690064384 3832026671277262885671537922277376 -795687358515389525854132515538731008 6502876276992087351876716924502016 5124833348250144840952499195084800 -627001747497406518255515736706383872 5139468371733611798263643185872896 7694807618127677282097057109114880 -705406941992840097246031046563069952 9913544416432270557277860269129728 6439274996435391237564586547740672 -755528100268938768831578059940298752 8306321542286908977828612790026240 6091382841826312418655076075175936 -494660835090408333210549364822376448 8305774302799754719662708061372416 4198134873782383715070932814921728 -389912176725129590799650276509745152 9659593398318944544972773999509504 9171518398043413669871334880968704 -215648544483674429925346652043870208 6733302853796765506725653973565440 372947625522052650809938027741184 -378465010257527983815267672809013248 9901849377831457131769045880668160 8043838188271296548514763173265408 -535923500842141279211847533316800512 237610184152007677428700891054080 6613706698055634703957408723501056 -633295632356676004199408765084106752 8062924832305626014597968130211840 9099448733859096431221599113314304 -651091408573660959418673378172600320 482719042897572184690656465125376 3060463480270208230325269410349056 -416081648726676001008848166885261312 7211863071205847945372825278218240 6816748731498057048112069240422400 -443775683687175548164450117545361408 8241432545838956967540419561783296 496941620834507802034726116524032 -884043390008464264814174069516664832 471776385144244231787484041707520 2900085353733720616234115445817344 -215573069564730441135591358742921216 5879685739593347727454137764282368 2639411066266980416230933519138816 -782792849160593233734275167753863168 9419260712475639560903663271542784 4248676913796610868334107253800960 -865140533483967116562796165361303552 9408327117700910414486468783243264 5129033930605730846586280127496192 -656447002495105045406351637864251392 1211507587541760247151398544736256 8447733693152611425187453357522944 -842685496566483224996896843770101760 5426099917170720887327407634120704 5318460952071121082087236217864192 -150732786908302931905322168732352512 4246336174790836735063100984655872 8965774018365842620516873346744320 -737931214754689869081070418540888064 5176710379479309562931212799967232 4077396245266984941732379479769088 -977863238544537007101420708628004864 3364423426091883796515623238893568 5143012961443327128901438677188608 -676450272778012838347942195500154880 8922815241110385486860681918545920 6291914520943696377031383735861248 -73011995400738426575675355832516608 3142090617426159286633844359299072 9759684213733505405410534861307904 -727084423862545968333459223524409344 6328207490882603077701009034706944 6514304248249459698556387660398592 -397404627154285364613266865718820864 3440867256046852916061300326400000 5735636838771500019573791324635136 -468538537653177088881550999825678336 593704846244903827799550080319488 4478685472791976978657749881585664 -374739029382738830778722290946277376 1283545526566379764734129143283712 2419440069883216271823145759932416 -684553373273780217035776947984007168 5049219531898741694262281592897536 3888757782993587383788806313345024 -356825074075732292824805532499968000 7635996648415955921113949549887488 4490284354974242442954366395613184 -90779585514055370030717284298784768 6816048891279884874526919231537152 7605766543441337405044133048877056 -754712144591956404419868036928897024 8925401000797001944041944592154624 9844938949171694232359893716697088 -986553048424703101043259435466620928 7228668146844236180647207191445504 4068687958812412299247673277415424 -476136812910849791340950594168815616 3112336193400666885015333714788352 1295409976331096283197413913526272 -558200366100181071389496022392635392 545115411980179592199547310309376 2659508905874275341255938643329024 -114793871352157359874433539182166016 2796549075318075132036935671873536 6749168161814735722164755185532928 -727123298970447012053874796637716480 8511625090021699410675392313294848 6670048715650895941486616279777280 -159966182578567744343957660552396800 318812604448869378842297452462080 547987711327844826060480596410368 -536435175430874698312949449550200832 1469309327011504658106705996939264 9039249868486368757014981676892160 -688751809351838950779215366909329408 9336172665853631977476688401399808 7771978368329995875682288173842432 -471321738181785902443887724718981120 3620784964106785699502029501628416 4347982068187590111108936251736064 -750836620595065226899328032338608128 3671820600767145085047516314992640 9160454431832752550344435989217280 -639805021401679450988271394164310016 6366843913759009744205379014754304 172731824169517394534885327110144 -534700432240715718914304985626836992 5796022014884940999886274482405376 1256742647968852278092332462505984 -307846094896950414830612869199953920 3148028589572748671250773628157952 172749422147936331114868528644096 -615920523924499511737246430091280384 8184507400502921716051515319255040 5724393990107613744751969212301312 -737181375792413274546611981559791616 5192566194685079996872748624248832 8917449870749923241909651314311168 -264278201455714148285008152115544064 5554813535218768357684745426960384 6638850911068505215982746625638400 -334400142631309511912483594495328256 8333366297799951476402181745147904 112585634512207282621576281849856 -527864849060393798237570774358556672 7152398812174529487014924877037568 4631414967417144108608642405629952 -680445721787871667324594394580910080 2017339310975572431913390310424576 4083991089645328359967779534667776 -3616033170881213298306454306947072 3300765527747469847034814286266368 5206731002023801066350729354018816 -612214426022148700881701527625924608 8816855944354153945571592824160256 7166379955239201002033444349280256 -202119286578843811952396903987019776 6784165058994428746467934793105408 3936226064961346911234151380156416 -842694085710180891314291433747251200 1247924788681701106928994939305984 5892317977574406201526959265021952 -793546505323005433966758476036177920 3039011574679656614350570989289472 1315151569107410688074597516967936 -722424227715338089370469905209491456 8225477066632556895784633546833920 2624091715944386234513810910085120 -110343642274534654235299955559366656 4446736478561744407569390578434048 3988896079491392719338680610717696 -325803429900254055355821893993103360 5783020973170086423298392268472320 9349923759667892970287837124493312 -154875280777082287992849851041710080 7766157748754590419487103505137664 3132850053757621998953335107878912 -915412946305019204131502947714465792 2396228701815556686481739277664256 8993080319558341909934178257862656 -223513064102943686336231403042111488 5528680340509963883813893115478016 5730205649506209898452573015244800 -815905710495865341083504355355656192 5231530209428213437187860769800192 8094458287822794188585760211337216 -979126558898919116166569878467117056 3507958238621394401556630396207104 6699626413944205942650184623194112 -883533704864380504758213208516329472 5111276128394201972903046646071296 6940684550953985384069875877543936 -648068377949041932896738737538465792 9650378362715602238299143053246464 782040816487368531365175939301376 -506842030758183748340212710500204544 4930362050344191238436127133138944 8238427271634449861970533671763968 -455602844003399025739955762291015680 1790868251195684480533693672194048 6054235888287458283849840251109376 -936828727972021419879632721070260224 9829913583507912507019787463819264 6885961012509731806757601702576128 -185208721111462396778462895776202752 9312011641252283719500792858673152 7019054932062700855705054195220480 -915387135179000883828902243864674304 8654477466917534514765709751353344 6967382593889800939487652881629184 -273010103172559171354335162912473088 7440525953370235831155686434144256 1376892880385432765411928223776768 -998318924027198181845411276276105216 2896004045834885991026810337361920 3942186269455436108917965416562688 -845398495375472095984676938937532416 6092471062345884864330429032824832 860173189026994332070996263043072 -614892641788429193419067661012172800 8679032441030649878632684433965056 4453029720716936866004851490816 -88495751622931816259305894391578624 4068058877377086413206377365241856 5096610124250814138074752710868992 -430881241502951911370715046722142208 572231902558909103902928681304064 76975155462381455811500442648576 -652774884059244422340574238436491264 2305827423963475742889168276029440 6292081822932933928699382886039552 -961774750749285912696740983242489856 6961488077871051498782262753755136 7416148165503017625749644805931008 -978380521399743440759221240379473920 2791861108672923367475353724387328 2428460818560903629858539845976064 -504084870772323226930376620459950080 4126328717156433727978426192625664 1539978778124091394038799500574720 -975940194889891871619364240320626688 4293801724356406725660127057149952 1702511282326845724565290841276416 -871363024449455196258032397878034432 1288320259619667411561889698676736 6176212129719486372372417743945728 -935472023076057243783728559250472960 8099704417459032346574091993481216 1881521789122799049049724172632064 -672448397355293364458229082189987840 6513614950852198910688052629209088 5157115363814751008615374990082048 -658650448655956139070098785353859072 1400074681618640756728328282439680 5182921109451960861087673981337600 -144305394880560644121538826340401152 8393931885359514019587684386734080 8374523154256180438559889521901568 -257978878856151369557546871149297664 7179301021636045957784212825178112 3620289256681787147804613434933248 -974200616023940008586871888762896384 5267436928159062492197422515617792 7238790627704275437845167652995072 -409796171284634377030220895574032384 7112857727042407211721338333954048 7250450137211612282062295739138048 -747216350153155853332654455749869568 8892537523018830571939406131757056 922836521047057508262989847855104 -636170133051309492876092524910870528 9783770492985740895881677317865472 4890660930244726587892476030222336 -395648296019242911067664167517290496 6341614223838806491121406976196608 6772909228250739049943787590647808 -67652082292183919437220631275372544 445050859973350745486339254255616 3294166227131906460864254333419520 -483211791888854371777881557369356288 2313656588593167179125942841769984 1124132875295572847626108964700160 -429110842998613493871046418830983168 7761222259205272492147802158137344 9900855213713005403642125493469184 -145159889202708339669379050582835200 255439627784674159312906594811904 3322759028440725636688478923128832 -439204225176921635277628654271594496 3731096736234785338400222400741376 79378350034244763877330181423104 -937270605228992222768278497151418368 3079660601298286273707652893638656 5240067560382600363334848223379456 -822724776038905881536384372857372672 8752717419077769458133380752211968 1817443906589538657363021881409536 -23281809199582989215674577247535104 143629083848432888234803877380096 1381823032507448461562396853403648 -579632301806849015774549386486349824 4475733012441402651078774172418048 6810700021342749109474613635579904 -433877026380755027557881393704861696 2352812900755342961343324072443904 146132891076064701908743691960320 -560391263243151773465006588599205888 7099953007512320390009529149947904 3935108658290343332847445975498752 -772046393686661211194901080934711296 5218358645180511121060305100079104 7049621366455028710745291953799168 -59092538621516661638358171492810752 5272054045429232579158842139475968 9400409868086362842627340136087552 -729630623356370233477876207165898752 9047546145332836254043097446481920 9902495724108563138172214038233088 -512941212825626074089803634414977024 910701984498236147203290978844672 9967417305383411649016449671888896 -442359624631582494944028081206067200 8762709396468190006629061690916864 8375682594072316812088848846684160 -588442275471802860491783562074259456 969774575063498558522513346789376 5719143846277407249010640006676480 -143156100815257929864186202981138432 8415182075892907627539739111849984 1675275181102311028567271211532288 -450411527048418425867094734185431040 7030239082996110713448099670392832 4810333548509519111297098491887616 -662336586305656811157212546346254336 533589670980043850436605514874880 6142329434085240030876019747454976 -578701284857963225179416859282243584 9529619161275089331585069617250304 5327956664825861154083248204152832 -560987996231786040366382565996625920 7285004642775511977269502444306432 607865937189567051948655747530752 -201594078904869433172503905920090112 9894517188604690678086435835215872 5600805048995131569153077378285568 -46290127023752262026643553310998528 1439892795129147025882746785366016 5709430194319217407915308152258560 -631978026770263531447487590668697600 2528272112686978749580554662838272 4944389850161636232439756115410944 -439682122260495729839510372076224512 6690203010332095861244741074026496 1230633219101068394179131137327104 -585574245960023097192096412181987328 7470637519230640648035047953137664 2747783518630018865164684019892224 -339898982548320975747102955985174528 9427050452037725631787169986117632 3091583762607330858721703897333760 -400391778263074145836657338417676288 3123346762367224392470494460248064 4926810904379829272660158743314432 -712279392736104790402951946763763712 4885026837775047765736083106562048 2467154645166357617654403201761280 -336409912237939010478594163252133888 3302423304589006894788338702614528 4994032198478281916836822707601408 -893498136292883771360319265870708736 2278551392663649077939627769200640 2713019843697968040350347096489984 -611436078758701871195402949359566848 9845381862661434929482246628835328 2032588247861613436383843716169728 -230934548341562714388901672918188032 7098763924083447961295304391655424 6931573558966197636867573950709760 -626405000403798337732453504858980352 4177702411726147676582339594420224 8840509439970223300760656660135936 -488912214773610757797861989082464256 4789323641486100076879183920234496 8133293572081917631197952037879808 -666524885298650750914743757743063040 1421128529858907091784545719025664 5575302576673576686112561973690368 -353908302882893864667799648942948352 4103954700231705190747192439078912 6256699914895406102418532834738176 -619483462016972266678388921718538240 532171313480653471614307556917248 5193424161798879463751161944735744 -335262403971015524137941047781097472 1743982429247208169925517911261184 1286847448762633786703540071170048 -451922554162123110122598044727771136 6957322860290935805750568625897472 7416410342119026067107420311650304 -819088010039775366990639125124612096 1989136649139915057277568628555776 829547258597221152294760446164992 -944932701814327617331596437527461888 4920601321112852133833190856982528 3345780478436215254606260530577408 -455428144869794133094511436231606272 6096653288409424341082307416817664 5935311884769856615567730891816960 -223668137441175286195719805559898112 8060833465967914386798437143150592 531473788196709281400295711047680 -80363643507229143186263609234685952 7553857917481967548761008423043072 6210005995869098437659913751625728 -946204738288338463208825069687013376 9984122640242884920625193929408512 7591111109746563390185504828817408 -82407305174915004637136490111959040 4378466626899216162506244307812352 645065386863768260674456213520384 -584086438158251028139933713616076800 1999749635083756141250426028687360 6182053676879521164252856316854272 -93104885557034159155238681507266560 9717633959371159260750773275852800 1669516878954477784072652803014656 -662910010731725199349461637992022016 3709892177020741015788029835476992 6166486467463707015889851873492992 -58168031960786057681455318197862400 9039390834946204266511363249012736 6003629195992752913622570731831296 -191220441896342767690435036341862400 1096863604405755418519498320248832 635015683369102271716375184539648 -386038992580338159848729440134627328 2072134480079525262251238698778624 3175170949062337149144341738946560 -451983267636630301332064428472926208 9555384270726372025675369708257280 876586273824122060067518090838016 -620612735398811583604153593869893632 1908415829005451072909162785538048 7221897556068968993525433169346560 -15414483224603669717165461817262080 5673492921709636669313067123736576 5662106068674789002210081245233152 -161401255239811929584201832280883200 3237683513249016114685273956155392 6737667815397890017098228452818944 -351340255362436986684275058764939264 3347036725526126163277304305811456 3247549268483575363556423835320320 -866438936068108204031741733214617600 7459412219394593264469636812898304 3096136127847650914537459272384512 -452020103764422043015298617983369216 6437547556917890833170659675209728 8397048540718940471653236387872768 -684758729029482778817822017521188864 4145820840567724369310583491657728 4444619341614334408629975575953408 -480954306167812022978080934977339392 1253492985468266582948624616914944 3463196584202543870692596327120896 -734005022197455943797349561571213312 1595040211763891305659959785553920 842223348807191450387080590393344 -35055384344127656354750947850715136 6630280563924081852421730493005824 2438655993903207267270758693339136 -942393407496748661817785229170966528 6355156759302790775580608790790144 7396670401056072569273171105021952 -351083024317643771505963716730421248 2516743327670891040842805764161536 8170075921921830150815657756721152 -946360444516349011721080128378241024 1430194507650045987034599667007488 34173404495045017793992599797760 -130574151610003812486903749838635008 9260943749849250436988224472612864 583997890284077390287761282433024 -957024364404276979836708209167433728 8656617210790639064183608778424320 996167726702831727882436631068672 -760042200354360608765850277264752640 8039254711941566919529341753753600 5482785821296471423271940636278784 -992167268136304593238504210014666752 2290638618552057091787738964819968 4864386589496014440813437015556096 -263020123620053662601660586677764096 9720002459941458185102283144953856 4952105229714245654824456602779648 -796676597720296375994369752673812480 198496465398055189680008569290752 9353188138844752458663177807200256 -774499159568639366177528624581705728 6920967509960023937576919577395200 820847229261236781861877128888320 -659488156208919064944623750226116608 6535353090594863101521146538885120 1644551094141925890591452387344384 -963694103661651620123696157299834880 9823998497616462227235468822446080 1555183033950121750285566561222656 -561505626894694367410372097947467776 9299719760696754139277815407706112 4009799262700062690410570876715008 -591178352046623910279479851745280000 6217465667520626263908304205905920 3004801987184492964571854130905088 -953244231563535236013045499379580928 845269540131271911512852899299328 4512701484128731338774230054469632 -527051181565499238274061538118598656 6799899146670703970410307008856064 4798459068640601718672553584623616 -14775018304556604504382500757307392 7507008739048327345593382460194816 2151166542712532186040098636169216 -579068781984172024653894052418158592 7009904071359850579037482978902016 7986130808214850940224981583265792 -814586354076363530116558908391686144 9929909667090833477258456208506880 4934935123595727763359578529464320 -824242538252288423732245063354286080 4036146443778580629187382585851904 2376121897374839107112869619040256 -489782018624288329004368742695567360 4421531423307001559743386131365888 253444133879450208621559958994944 -575885239671155909342901727827853312 5562598443965437417378483772850176 119516831279349428475739324284928 -789893288552230299364465607878639616 9252031860184480204400672655802368 3294601517492023254284663194124288 -372682478559621151711192540558393344 9283975991314981419349009942708224 9792328651700720140543196085092352 -345198256557895915956068810777165824 9986489828341288739061830741131264 9937136896331223154469140210647040 -876176027688190993207442622516297728 3402165474779334284314238001348608 9433265486295229474262845885513728 -717604306575386944802031000757469184 5127157080220708715477596865822720 3505920022326668779155419721367552 -186293533664183826574295109046632448 3447238323443371370489954590261248 4183942487511624465442349810450432 -571330140387101791897131150422835200 7630841059889729293234994310807552 8607345763016813728556222523637760 -761948170617480652567209556632928256 1426249981594246829209400641585152 9738370273476606309750813621223424 -776178186131173447836860894972739584 9785395760174461235000707829989376 3340349732818377685911025232117760 -299389101205603694244557714687524864 6452103975863060861901103744155648 7562311708757977275156690053890048 -320711621327202954365529347959291904 8243497323341324663744741175721984 8257213595776943745786621397565440 -563410125276914982986552543492964352 831098184246929988351446071902208 6575209662047373028641520880713728 -588110594220990971063052838568460288 4432581091913551433817247591694336 7797537568950077177981380497244160 -556645387441085956639788291300786176 3715793969218625515801129315729408 7408790838051317976415465952509952 -693382094332748928250695743164121088 9956504914470345404185053317038080 4213865440062727198206331952562176 -901517734770399650548399902623268864 9390616584708239507253289958768640 7909561839845266336266827669176320 -940217438184382999769856475362492416 8961156425163902753875455547277312 2361903565414937006594593168293888 -873979254526847707418803503980609536 993929635957606286644820291092480 1473001166211081861775103316983808 -167802529589270595785840510271225856 8514312710423334151523409579737088 2798851572746859799966040580947968 -586979943263704801794132766992891904 9537807541577630364546380674891776 9725159239667327070908103979433984 -757420968519942608428337052371648512 5390664180607274588700986136592384 6123812372396376678880016450191360 -511914532668420317974265123288645632 341672644040687514956570403274752 5766885245231372440958374944702464 -583420935455463216821148997526749184 9502485960012847753564724995817472 7019273961112220146305849953878016 -926778833755760569410962471683883008 9330528979218179484475835778334720 6610263875416387819711963403911168 -353751899209862977838651650722496512 9591060683848452492453615805399040 4061658766624264943253293375684608 -132975902664200500827245345954070528 2678941171035563036131896034590720 4861052546038990673553873340203008 -836890934649773400792351110816858112 6505456949504933343530284757286912 969833368042723429276505727827968 -237253202299331603166357898196418560 6002139332158328991713733382242304 2012455995186400072616827108196352 -834743402937866146070768232351924224 9476726416719521481282471025704960 3347212659212147877330230204956672 -953974835478517550362968128298680320 1269394410470510888915919265857536 2429598830441336551262147454173184 -497984133398299164419831923222773760 837731153430636410866043042398208 7137078551585937947508131508518912 -9604078875312814694747095600988160 2874475677165019494435958011461632 2597553272037486283374862255783936 -811226585388432422185915466435788800 4402804328082161623495536210345984 9465566108405414801159890560614400 -243223175830031771676938911900237824 4460533736330744011801881376456704 8413527330857672756281575231979520 -688671332065997129092764336291577856 2908818627909072555728720933945344 6803254760858559595212521273819136 -189246894542843097696089889111539712 8026544277732936430054958107197440 3678791313194030274139866139721728 -277192099214067251250384487170703360 4957771411160376850901799033372672 3716990399500088858777506199633920 -876448171223288239910822058167107584 1301203927240459908225350536003584 3983529539454165791502708884111360 -812144281643565966042218154038394880 4818661266529625702612868779737088 1069534499841225768180015752544256 -438448228789011502589224473233195008 3405313921315303698740527717416960 7987970588303849211120525143703552 -80039119844261068701822657914470400 736126019096261801706213536169984 784198773857389618980609807351808 -485569054658533990601961773371228160 2198719059789187221196280617238528 4520525179297430061234706811191296 -584835165162428187932241224586493952 6915379318981901954528502171566080 5017345760397600007186178478440448 -275806826516510319992893292303876096 5871863525715176045947496200929280 1666536988571820846814309170282496 -81339071605096590857665155310813184 7680178406399078242876785806016512 7214192708575833034027713878294528 -196358311085733528039511802972733440 6831183573417888647788780740149248 396345892221222042687400835022848 -563873908680936600368931698921963520 6540659703312829844347286907256832 7862940279112173859540322964471808 -233662980734745094008060366930575360 8057107328867845292013228778323968 8827554040336157085263974994280448 -500080737077986544364644868804313088 5557514077788183976424460364283904 2941274741209656464798696721088512 -515775874595441970697178230841933824 3669781834970767930984817982701568 7785650260557926438896533126512640 -521864091626729068723864736052019200 4878078544984758605494913071054848 1092044612417032677312862261084160 -421726913802994847171701803700977664 6647506652237150559079330861809664 6950989108787359048886155967725568 -909197754168539240817492243012124672 8795195222450769515280943575728128 151600903436262986095925873606656 -413651898045164374899881586385223680 2514560152245240299155645173596160 5611790667025851520280212034027520 -629377678070494352995503684106321920 8508156935763597679322404596219904 8216138162196722422573828640079872 -255966008456644604415263875807576064 3901286391930629044510660017258496 5121048679185818546291637045166080 -27213201800357475083887628005670912 7019257896627323319682122672766976 2528742331884139372862190269759488 -49699145601402036708092221683924992 4707927416300177237055943502462976 9486965255397438507649380275716096 -204104660199939871058794295311990784 9390986146755664391020571644657664 8928988018148718001267183376662528 -332595377137605171362183633447157760 9350610126612427200389962841194496 2978504603571660648964599488446464 -971489303027602674632244659211993088 215130203330357654648460222136320 8591357973812331432563139640557568 -234479251244015257182387427929489408 7948853599855704616679141300764672 135391054980162631237501540368384 -243322298678961459503955352947261440 2548753434315201772117688059953152 941627174049693508700115669352448 -74790244188057635459337459563757568 4270227306002001657783367942275072 1732067555736868450203860572569600 -390772662696614464605495117754662912 3588213981987875690750182313426944 8256746015337423110309276515565568 -590999476347076506075669097581903872 1060631206536510617578664691236864 5277033898319973937442009496158208 -424324362291213931132237975461560320 601908988575817843111182389477376 1430016690467598619211507821445120 -102337866104347697469359231705546752 1157662268365416876212884351221760 7506052503288901802495648825606144 -930391134143713206850137563638792192 7740569494016767602372995371237376 4320779337731287166397296861511680 -929075167594500600766784510827167744 6282193060170982727007614917410816 8409868120978960728227344921133056 -111486101399108415953743705186238464 8893652295588807514371104480165888 5810761855559657192943174098616320 -184953615232468248291729397333884928 7127880622767178290222730632495104 3079607842699757787761691884257280 -201666226679149866855017392514269184 3165526304424257271488658519621632 676906441504317704402687062179840 -644857770540611878702611895582457856 9517931039693266061499602015617024 268673784288770277305568911687680 -436733857299638185745903028640153600 760210258243092159978653880418304 2271235287840458121291482003406848 -359160397722946854957627817265725440 2984792921806424564946288003514368 3897960238723024593346066770821120 -911651674948993654609596648597225472 6581083684971708109040874566975488 2205602434783404539015278186463232 -690031508412733121752837716971618304 9988779039785533408674463289966592 6280538106323771182619470025719808 -574582150772149143138391370925867008 7710113685518143030412042035003392 2324625984081795426729093406654464 -419012188246436426345020839811874816 1983061749302747064412762057736192 1729878551690081243777544214282240 -449574521850619107803026932258308096 8115561638781247147244152992825344 3965695610352375264610731629215744 -470690861635304877095626244479778816 9960747775567980312929933163757568 6824398252152494432696315450228736 -593577638262665853334781786073333760 9448069391359626807392897675034624 3411366017780442771835037390209024 -568647177425529741490024050172362752 5652762433172914520137847869014016 5109811218548027748697322366697472 -616293950744551795881801079498735616 2786646919113182301167113249751040 2514884411453341325923094968139776 -64455109334725939493465057461796864 2722930419735255642639275971837952 8547964636882683276025157283479552 -887420916503034722021216442115948544 6603371735243483484867802943193088 4297812190589286607643521249705984 -906542887755065932829541407731482624 1695021419009143548214046802051072 7574244171089496877230887268253696 -745496359197019697608052957591371776 7798004047177891752726604384567296 4856666187182279304296517924290560 -108087765535544906259913863013072896 1963286865588897943130108432744448 6449521700787437287148702469718016 -791403065531614654058551682019622912 4758748233103111125757187623747584 1971633524739434557691756437045248 -186443572430235252187754427945320448 9644580719987470700532124935520256 9281432551811968093118874593001472 -40309718135744841610135831016636416 6424862112034237104185482030350336 4910765794329410993359400820801536 -86274853292898306592725938697404416 6162891997405198759323947103158272 1177930306682146455480499800375296 -656899892943686695802726221422264320 4717219624145883772763926419210240 7634071795073736758720002112094208 -121338904815986444725763113769500672 9299877101651051369987511616012288 9313034960842050851789623368089600 -920156606135308763926787491438264320 336934066360815468661192410529792 4603984622312709037595482558300160 -292166915282781030215396012081545216 6443227584611653211438052815142912 6083127606424083122430753091092480 -566843950983297927212882968937758720 7940038033979903637672235353767936 122094214179325525731405601964032 -377589789061677994106265757298982912 2694212320350425471488873361047552 6115825136126464547237936958013440 -846618081181159603575914418321489920 2299860957962237180252306152620032 7081760129857476255246794084057088 -593261568327182209381275445634269184 6992576748611701022686755443179520 8474033251956954235144535625695232 -253159341099064554711110631567654912 7952355336746426913823577249677312 3779204614831079703350827619975168 -473097671957073355269239882700029952 8113205768683650889503330604679168 9303299587804861498858011673755648 -654414374719086948477048948451704832 3834868560989538798676930683994112 1237465220090324161853956475060224 -698251372248164969292947912126365696 3332666913517379082890621820600320 6535506590830436993135714976661504 -176927356945610162184481369093046272 9066064858735058927814966306144256 7530179688899272581577655843815424 -252793105917338142162121289149448192 7776884868174218768984306857541632 9712608240325593890753246367055872 -36995322423835728974810066626543616 6279422216280023437354949656182784 3847568312634541926622663612039168 -688309762948692117283261840724328448 7288876802829073047911601807556608 9931391623809573571649306173112320 -132363004290934213806577707244322816 3112509784524759118192993206534144 7267451866756887842458399798198272 -576450072498455070257950412626722816 6340186663618102410865205911224320 6637310251962675640894212506910720 -530845181643822486771805222441320448 6025892287619666681048983127719936 4886251695894313460171591464779776 -420937133009906306925665853980540928 8318462747205392244967726471184384 4787773260837417970825751768858624 -359710325730092414811888973000998912 7739682194903993861917458384814080 4326984057898532372623490428174336 -980985719270407699936084176624680960 8311012334978798963591413546090496 8846464213392461871133114316619776 -118928710304203858223336215560585216 1773331683905300543889773596508160 37036195612459794456993488437248 -931167412981775886162031079908704256 8541982731228270642842415040299008 7869705725854060755159614010425344 -408210033009861023380594924076400640 3642282227792066329212637440638976 8968367103382172993379115976359936 -2910162618976380375489808485580800 8887840620772158644839502468612096 2391974713058627474116821588639744 -263678146842431533661538588343402496 3571688476788554070177450110746624 2346674294240424342624323781001216 -536630664613419638958091358535942144 2716423356437032359872835031662592 4488631777421491131669778733727744 -907403592103250511288942328991973376 2535868397362907514098703698755584 7728590506966164139210025283354624 -813013820807287540730661079464542208 6000854514435485308553626197688320 3470434422280691183720144383770624 -759619339623308264738534997184479232 4806544854489785979592652833685504 4129606942580926704386826798366720 -967656314665485404169247375101001728 9168894280164167962979070902272000 3828000300220880535056613036261376 -857880385819891817036885797478858752 618192251438668588424001291812864 1382696336472633431744015717367808 -176823882864546835487106971763474432 6933142246756344533125876529758208 2868739720927910823698475817893888 -722589509449218617867825252304683008 5409860331457337342169089868562432 3610309134584174243862125138149376 -214345974993617333141579599410364416 6842533772176461996391006887477248 1113529039870052161495787873763328 -365677400124310026583612129175142400 8763119517923256722926954812014592 7651833923092994598842870177726464 -281818100583028994875857068152061952 4893949317807110200473661485350912 2241231276230103699473221862555648 -350372873539253245787410225612980224 3996553484290425137267723288444928 370180029802408072952024909479936 -735254007125706329445281981936959488 7053780827535679048348805655166976 4774183268865479504132200275640320 -795299216721416698950403913416704000 3867591307143351693500594178228224 8124612899896114266875207165673472 -183863064982271541419589353523380224 9121864360200181287506455409197056 6007448846097118359348659487768576 -902761655071322780573590384707371008 3014984166633141386694570215997440 4015157930958334582896905060089856 -673868150218109344585142226565201920 1408094547209422099209840907780096 8685350438214879218428740527718400 -709395295675285179640482254257389568 9549243011639960472643396412899328 6326729281238035908670130116100096 -901447544700681913061771120801218560 1229732531201968249892268352208896 2831011779503061494811259574419456 -721525607326285229387244069927780352 7510404002377826868675785097478144 9679721173234060077532330084794368 -773612992046814772619270411069161472 7556402486824390522897620111720448 3930291271916812333727363400466432 -641897863333439458532744191419613184 4941077578538393485015820330336256 9527260690808992578431512567873536 -537395559457300176915311536883367936 3590322197147617897199205575819264 7177273857826529947165096912355328 -17699844661973686707730217030385664 8122445557172293155126345017065472 241594847490873438198873681035264 -547138092187555837352226933274836992 5508154561895770475362250804690944 1820334298161869887276491760205824 -448720924640010554650826501215223808 3617987167563725087211637088190464 6378504536239492301366718787223552 -661363672276467828933959176243118080 8709340447485343716379690572709888 591271859160349434509175841357824 -584735186297136761622873917119004672 8531857791190660391017831316062208 3326818520011812296384288447791104 -5669973004536704124583575222747136 3399664472075562144022073010290688 8388438883674336272751519781093376 -153414822847865096570654737681088512 5991674994111769518966760791867392 6152680644014770075833235706740736 -717052968032963288143820479694635008 831153429650730317909812247003136 2218394965694363223684425076178944 -13850568384240591740788129927266304 1750447054141988768049415652900864 8307546827187363289727839506530304 -752966312149718730496208392123580416 7274176117049756972282865898225664 9043983819506186392825348264820736 -57112728336640868816021670663815168 3269316999635981729522664077262848 4376924641507639687915659459559424 -773105720215550485798902273744568320 6376351095018710699078122643390464 2739734660281729194349297143906304 -35691582695001088177891327629852672 8213281334786546613015345652301824 9537331852919477315718823410663424 -992850891473215541465915401609150464 2702517706273658706173932802670592 2013054441308096462055901059088384 -545414028951475620705719590787743744 8280269153331415168279575137353728 935114067213534678811808974766080 -931949931291150020021547865946980352 1191541721933175743026059720785920 5574325685105930283341508329340928 -567271324277832545033706768166813696 338197773866544141954866858688512 538069664113300743685552849551360 -306304017508385254687889062650445824 5693492891824790548408114947817472 2363117679610341576559556944723968 -590228069225165041742348193326170112 4896392324234426031885987283468288 1569922532330957839111496719663104 -885848125447021450200784881064083456 3954970270023185097009832172453888 1911580630117204114598782442668032 -538833852377461512295720776984690688 1554888373860787815414881444691968 1129085698755927701535349779988480 -467457199616170716246860787267665920 1015874574878786665537977681182720 3892151276389890337246936727289856 -125552545831640468524918816446087168 6712884827483156343718865692262400 2991874720640731830349179127857152 -715977398823647180649622303802392576 3254430793713897203372793977110528 8834720600809921154714119014711296 -77220869901047952581604462980759552 3193325195299932915513627464695808 146007091044781442116017782259712 -67537921966895072242507087072985088 2766813887170511465001308313878528 2110922120541596577462528914751488 -242250522042851448380584353696055296 7932520230965820049115591303233536 6716707206937297455535929551749120 -93492205385127285781147878302941184 6764824550718086861888240207527936 9735404926294977014144728565809152 -986327106121654418338683550401822720 7399301959432457298319734720167936 2483444998523444093509190847299584 -531995649317782471093908376341446656 4703036948656536248966646148890624 3328328090999319939554842832273408 -662097564230812015768961663379701760 6224331271061178817827117484474368 5899493556532800618577738730569728 -159593575734519476079583585600798720 4727878049463363709751938833711104 9759323099146179456697467276361728 -235181892486848503010904318026973184 2323903494048162967463788367839232 8044490541301397081933864268464128 -795941986545807211608602327652499456 7793923069363284342794278536216576 8727425583601040952066653087072256 -470509380931505982369174023881883648 8687777298878388383938093548306432 4689242450917429768756829689479168 -892385775276156548096499891478462464 2780564208857292459433810695553024 7526508540844647912054689892401152 -411981965304848373900316751278637056 3972336012324196513091950269693952 4606577880804285562037099447713792 -423177126686333209654602725379276800 9854906637242942297748021226504192 5412605014742350807439273648717824 -969535389749498960927625176344952832 3983674581468202825233229439565824 9509813214018209435953328470097920 -516659102800414713354850466225192960 2476891972373431938075137436286976 7160871295931638969699919187673088 -155699302658673569035559539329466368 5799542315275485576798773455093760 9312169478057028535610095786000384 -176059371098594547625633017571049472 8615239825523898336804432557113344 4870683372057141226811604284211200 -816500194407713191010936315118092288 6879903004540348389704631746297856 3619838383873367013729897126297600 -959416241375425063023639224981127168 1863703362638613819124827616706560 2196220312107623618941170000855040 -12847459021485200621180718571061248 63291975913762041833836710461440 7542359060064674666103063684579328 -337596668565469688530858252311724032 1977342684933422681256740326998016 7231019440880573147439137877393408 -703297441487570432326792519499120640 8972754562846391230507028760756224 9059005665222243561264481759657984 -44039253421791814297658671493021696 5845557978628305295562823094501376 5991744184064363211032549235097600 -4720571039507660273596888057380864 3404298561044215426943308301074432 3787058058018502817561560316116992 -794008923587197265785343724096585728 6799113209370089363307583219171328 6635008913449217156559462635405312 -503669726448301815921863552976027648 381916048487226440725896485666816 1070683366156333009830084712857600 -47317068802970525032228115693174784 1251291495192122099067709128966144 7523703661516376774216323233218560 -545924369370334537605021629042130944 7008204353569521083667099529773056 9274873675517942474364493244661760 -13434665269577303468281825186545664 2624709772522205519486615101112320 7254599737006694689349827970465792 -701032718283141519927924722302451712 1948133761142003120268552209170432 24043397202341741369752761139200 -562739333889825594452036591391080448 5118078392126174874537151722160128 8065432890166905669724504326144000 -294882394109966356116908932692180992 704462520623191262289201519919104 6849874008261628253403440058728448 -521894925370089389238774677159018496 9439437716884324904225955880370176 8985984798801067875243578563231744 -255722097030535803075287316749615104 4970494142705067768033042403164160 749347647929446018087481105186816 -346318232920858972729762394188808192 3535773927720306513501288444985344 736745385093562610066923045519360 -656888678705552965668802399548997632 6218009832311712898607553544454144 5433270329124646795163265509883904 -890423425905681323961307377774362624 2171228821098019546867442565251072 2243539461089094178433866533961728 -869142601207990840779047197699211264 6383970318152773313172129863172096 5075379249426043849628294200688640 -719262586029357876315967918987804672 3453451360641224510274836944125952 2653085984040398593617058651439104 -464804183556318413221361291131617280 6488913112588854334031909156290560 6417042455634796435895014150635520 -477020577084817345959464878368358400 7234765742595033191802985477308416 4320150769012673377178624624427008 -432777244902251024693969925290590208 1988117506457923338569771414192128 8541795011318700252172184859967488 -236419289919322857120484780490620928 3034995525422558681439875236888576 6815089649893651252359170871001088 -502867943951294005977545215072796672 6618909084525562582225327960883200 1759932584840160974613786549813248 -568709610602911209063354205502177280 9887473611272708251497044952219648 278863040417803212843828371259392 -690698192699264584099701452903022592 3545861551864973338379373653262336 5156668678675545363873030364725248 -896085143293908370516162161672192000 1261027115430429923363867112505344 8583435891778168809574183605370880 -46437766581958183366428624112582656 4233500642160930887581240959959040 8219616966734137170505213428105216 -927606235077482375544367299570958336 2268844263227576560906058749444096 9135166216053118685977993340256256 -133408281550836173545088946731483136 8543105122271259001817902226604032 6031222960926150275211582762909696 -766449208261283201845167841674788864 5348272551095004596765393772609536 172729147022734419545727698993152 -900106478270509048307675675146321920 8557763454134442923649476899897344 2241421260319119628766519662477312 -959981108092946741908469931233509376 8663876934265791004815531565907968 3528610030579472436502822754713600 -736835934334442568101222917284560896 2408395721837703541054347757486080 1459823274439383065903322028310528 -303329088775027045819535666349867008 6249470122071458823398491974270976 8907605187343334970884953718390784 -280215136273509724036236670283022336 5520780317348052616469438374346752 4792932852796173860706366043193344 -70791195981364608871450322399133696 5412412477831215775627205075271680 2765785386762424606371130845954048 -591771456553408725254122947144056832 6455042135557108920348193524285440 4967269240798808101523840976289792 -501020211284495956436828069579194368 4073512354245281792360934220496896 7018001781571101452446663230619648 -66994341696811348993301694763761664 6343116753482660142427024738222080 4492399258422322055359403799871488 -870315827210288273525558757348605952 7293208258575862318344115520012288 8921496558373061083415399098220544 -101555473085964457484078642859343872 2344753375261477203678403927998464 3570287416415259453703970728443904 -671450944109530809366735358479302656 7190742320319511377698879724060672 7074966853930019125585386735140864 -348962394845121496400058884026269696 2475518102540129258983859551207424 3332245220755565222316331694555136 -854677458473198690718949624634146816 7374567368971793199356843936186368 4006109862759377522727683669098496 -122865819437201330265624735456952320 3327745413010823337232055421370368 4698667572259745422038187877859328 -190885601876911784954972377419087872 4459233081405441573589599291179008 4955953125023927417540527811198976 -286126213563232830923794791585021952 9247118191619525612034783623249920 2607981181486012045713320779448320 -377521615121877676818261662805000192 5381066392220714124236559977807872 8933992645447636317080906369073152 -597070682712463940837080116783742976 2845937603886675920074132632371200 3989687803971588410419027151683584 -643301291935345994088883528004534272 1910319860773226987892529692672000 8137702505580005747219024010280960 -91829774510217949739898342568099840 1321694256591873049690276383162368 5236967431469999020873289914384384 -934769670445439746105815397658787840 9258941013497421386583924889616384 7603240236746412275436524094357504 -873769537878984930735879239998898176 229689899678746580332659144130560 2467271785873154460953336719867904 -301043843273557839044840960133431296 1329609966608073688411019864440832 6366944894888148704474914386608128 -414794858173442929750283633521852416 3623454269657927562847420325822464 7095577262149979143727193002082304 -307752494898935693286649052172124160 1226017251588985184383044092428288 8588311529182308649668211309019136 -713778238569556435343915623653572608 1642285329215912662606513421942784 7536187286936884735074618979647488 -47313628482413899446427913763684352 4031858309073526661091222880256000 346447920490802698926020806836224 -342944656030572542404016040721776640 4962391940919868710981104715169792 8735218849215672403836792700141568 -928447294615176773250466998776758272 6017136268380105137507878410649600 5925302599491903678930090278780928 -772873773843130906281828266088071168 8964669269795240107768440036524032 3181964343209634985418669569343488 -984438700593737535745505929644212224 8734975894663740327013970505367552 758170886085453504164491679498240 -989740922344863697324287094138339328 6159427783615192757708408628445184 6849085323140771393621399066116096 -230084795534431830644160681857777664 2884001604557027034163656775434240 2191284632216795893290605893124096 -296314910227350916266289130859659264 4306497081124420766308832433405952 5628303597007883413198490478575616 -936511633949067950417427262989139968 912326029807197491039697039785984 2472723288652788508051043250077696 -720740719414600162740210964631650304 3010539106993541458983351182426112 3750879711301002649840447603605504 -18094413013483683328381596251193344 2703162497534364487146965282324480 9757540524735693215557783681761280 -911514738195058654561666501149982720 6686393933728762717931680351387648 1331267292093131537592686013841408 -987809150615751577209455022310424576 6653616783367886298136364246368256 6884330851541164959409859152838656 -94115686486752414383676769729249280 9862680628590504081391840730808320 5647516866852178534476676809621504 -350195215768743645328242624453148672 2499012613197568707833236872495104 102865696471577027090695185235968 -441248795461372524628235133401432064 9488707885918781850941493776220160 1951514208045856459477000537505792 -202815913017211715143911229286776832 3323208037671397634482261677047808 8383267847785912098714946835054592 -254176830208332308996605838689828864 9285203350053371183329665366360064 7886671238665689690270015084822528 -136628493910411388102933082256965632 7282670364931622269809493601681408 4037328231109640769335041751777280 -687027177636544910900465829882626048 4716516144311938575298130547310592 2182146029012651297531805768351744 -386993177315821109130314904108007424 5467499391989829275361279777701888 1596614818767310344944102510952448 -929664412052570252376828385135951872 2829487287683917313589127313096704 6170889682851475321712198669041664 -953597486349320790808232499093700608 6716336541229954138983755820302336 6846485941280561710716253900898304 -126855367283683542285070866447335424 8223087764406493394433280145620992 3548507011744398729807707880030208 -186227892503242700065179716630347776 7051278909909301098334080815071232 5915291901992683245735255136534528 -335579301857589601828444599396335616 5572104021058156984604811906252800 196528453727908449296089337561088 -515014702394187270092088842007871488 8449690213346707984118291764346880 6280564692106703549300344721768448 -523865427596058470245255501165101056 2046145191440522450302375884226560 2704573457582370273322872170610688 -58042120513560254269137880919048192 3600491012385228046640538481328128 5210559910104886379053115374567424 -821381344291109901351188184592023552 8699599144473441703519019585241088 3455146402620921747593254915801088 -73422520885402893801002351944794112 7814896432621242830948102450446336 5443882265059776851377625623429120 -829732486468672005924952996713594880 1681627029487167565679068358639616 4382402860499697103189765999558656 -956867133390027670949123291525152768 5401850000120308856103666433654784 4001780984409997071230952183693312 -963410783613718228914362613829206016 9971358647680542936112599891181568 6310724379144143221774129381244928 -972008570882511687998438261842247680 2359987956235587358741646081523712 6477935005572744168586981245190144 -360663063424743778805652235940265984 309835849191023129439731294666752 8729325116085839154957625784795136 -496560452401387458764821285421711360 8892420749181202108136572766388224 5191703860321996182793167703113728 -67381247011825342300464757658877952 1388614992910598920394596467867648 5985611863631883961913984635895808 -102190538923358050825873529440829440 2297990740610146721902807102783488 7124752256358288718068945885593600 -775195565175235893075216610738831360 9970894697699557747469135323856896 1266263692342450223614836439252992 -284103235363676599898078827467767808 6753873695758190082267328687374336 3194577590909681985798957384597504 -103619091941356719044319893199519744 195853381813089454894479268904960 3498443285332113684280332213288960 -876817253101353624483476703019008000 8958552998429608428207118330363904 8265196994380546409090917009981440 -840956284507261949172051039525797888 9595822823213981230965195137875968 1036639431989460740124904953741312 -194127788019306290554606934124658688 5073027746577731362627887109767168 6351872433480757470107136950272000 -743333224449807008488968026557775872 364374532161587524467861001076736 6806795717057327337641349469962240 -496110609535407515594259072928448512 2427209974915139473094120954658816 2175508061643108733186813571629056 -190955844242096584658774860681445376 9942439858671976644741791720931328 3722650934957569624584841884336128 -28723483923457940826758814785077248 1026353503672756037522301191716864 2146207035620452269217810816696320 -652346915600228515281929791925649408 7539357331831391900060923843313664 9740919071929797424599073099350016 -984310008240741881267147480598839296 1282478753901186703406291459506176 6446716537473107954876549387255808 -901564198394592723742533115453636608 8018036100720328035893709054672896 3074825659992092100580985385517056 -365364130109713315354304872965996544 2251717333907451176694831697100800 4279440307604764700275539571638272 -662017203795679273153109123682795520 1272203359248155377128172899270656 729102391461868504124178460311552 -55055972022053153998572626687033344 9872723875579897411121139167526912 4516230113759534720588774950043648 -653570206718364890623984405527396352 731572829525468299805256946024448 7445513713376659864035336568963072 -972588119148927434255524548740907008 1170721627127727120335513074008064 3205458443952150039996969336700928 -218479905023962742411236310530392064 5570936067765078308225350920830976 2377819291073705131735576456724480 -723317679191065243094493218434187264 3776909545533796365423872636354560 4952304250758355636002970430078976 -590410521111094798762229980628779008 2678379228685984760708903078985728 319832896888948803377758681956352 -773634260249267547444928858134937600 5317763661622655293185017698582528 4184105356234732572730636890013696 -237342557180827282192569660237414400 5100982604575576521427289949339648 1772355873026483491500044928942080 -734313019943119845426958062336344064 9613534249606383831643523158900736 808664758824477645683178596204544 -970121856831938330575997612622610432 7725016665088173155143085178486784 5857958945479192378648204408782848 -173614451054649809542345786057031680 2075979180869100366717298864553984 7030707711840143760283130516209664 -181775550069982929758306682603044864 2939750966262584531145747809173504 6679526540336330600522215575257088 -202407527718128282643176916267302912 2019412572722979939162670766227456 9778140908956278804016324910514176 -801054074199130948703344627644628992 5286054089786980523596655303327744 4585643816685069409933389922828288 -929956100717366455957844389185716224 6330214095580857901453287125680128 2574081368305740520312840503951360 -618780822459078828535439232581238784 1418632947465547655973903326511104 5630329956405600468802687975030784 -657603625139626859348642129275518976 3653401473139056657028748343771136 888764878966868428964453551177728 -133791240021573577642833437274406912 3922657290664921986792071085686784 5647243181893857057567466395271168 -348236849427579439970098565817040896 5470475926742772824324644729257984 9030693229451058639772239532130304 -845974446290252640509451601581178880 3086047621064690319044058648936448 172994987829805673258754559180800 -261532996093384630073779201662517248 7331577230373392709257215524995072 3851304105260617302272720932700160 -668094582461805580922997430529556480 5491240588855323604635837496557568 3141259903816784424710713873793024 -424366618524185547436588847358541824 2951768833379766341428356122148864 6277349355134315350060436327235584 -259870288111485191578346784250920960 7923229605764213867247585588150272 5798080352748301845321523142852608 -117361769816622854331514439556136960 1317167109407184233213316565041152 7491395334997658857259593617113088 -194554912272122368921018538854973440 2428643041381778584269245328130048 8403140779123761192895463385202688 -310285704481469010251273161184116736 4648772689039245783561017063636992 3100166017247555170427279469707264 -831952345065998196125694053658394624 9717228918985039880151905641431040 7470634194281041547137630838194176 -357440820060145624727211132403580928 8630440279020348593342517883174912 6058460066061229283969916056109056 -600150782074631422366977070817345536 290638679012364464273023278514176 4490450198644044053684730483179520 -808385979659539496371563277389398016 5060533426383944015976078902296576 9919977291592061844420296402010112 -521836518627591143009895908665982976 9800290327621122946228143624552448 9985850948584827302047258544963584 -272983767117575974245842934462152704 9952524466428395738337771511611392 5777707059697697787051292611313664 -62839747213453105032112996849025024 7213843384868668249090105788071936 6253007289754497683245063804551168 -127045683717827506098637749971058688 3783538152124830207319516840460288 1689720355582866409929926384812032 -797294086257776013673148410113294336 7283106060550050682112448651067392 7368804384908498225913315358408704 -287021001663905863341983062562963456 3879204023363598621565408872759296 1954483874930389285851041609285632 -927261072571701357727894789506990080 7396024771651040539821443207135232 8991829842781746420896235670994944 -328855226917916752877363143590805504 5637415749515197113317463372595200 7110423926388817367233190699204608 -842540664134118974750865172847394816 9622628632264235707718765360709632 7757234444392054106318759683686400 -54635151956050159501678889393979392 7202779859253046387692598319906816 4144338721135175469709440745209856 -203435724076614240471459841903165440 9404957502260640583738657827979264 1386472350869086193386007897833472 -248393018320957992167424320537100288 8747400263538893635433434619838464 7583531165832566459343508061814784 -369798155612210741598194906028834816 4674541785056791498847702323560448 4612262134556405669023310306869248 -496485497966460824722351763337773056 8631275075892950184493781849473024 5166642203076955098994308139712512 -268283030605195318749297349043945472 613560913342670348075516525805568 2057027200345903393798151286554624 -139204039316523193314613835874697216 7984903369645765438400108624347136 7688240975908896183689295167488000 -405312547169908308567891940279844864 415692907601629904592146767282176 8733472849250763590432146694602752 -703470428283515583913837934906703872 2760987974661772164445039379873792 6266573563431797385220492426739712 -768423735076936397636712296431484928 8604410173011148707590168169676800 6300731826072580502956128795099136 -137871732251291673918275049830219776 2563063768756967232052953069125632 6331990328653498463334952794587136 -426504899832408950390352973389627392 5006704980604919787182563830792192 5907738408775513463538195628032000 -757472168444073310326445497638715392 7195672430999972557778943792381952 1045508640706283312669839027339264 -379053982053555165710198861081870336 5637705085991080898816869595611136 8115086680809021598337470570692608 -69261780016441360435467687250886656 9913053588973266720221978567901184 349060571469287868724621376225280 -197581346101872539313064327667253248 6565564282066754316828312212602880 5525214960095605340688500498890752 -125027091410759148293812232080326656 2672959794964127011194794422566912 3810754507807139672051630309638144 -870253055740554744737613101811105792 5463399394662307611700501273378816 4779484329239343348119729105534976 -624265872739239624752907160892997632 9450399943652219435152603034419200 6364220700040937688813364137951232 -703837163859074741022737135661219840 6967680984187045594138301301784576 822088116528671231328703305744384 -586270262053868370451978400735166464 8233900061485329242611620971020288 9705094465319329857076025108725760 -476203717396276848367423860452098048 759243694579556763505012544372736 1915142277460922085330032793747456 -268667894485028412165985064047345664 3780915429600590944325944255447040 7982451008544766031979737249742848 -576962053639453698404875920864182272 4405909673149809755084534409330688 1567222789516722635390645799223296 -880111045240675818454934805849047040 1017624280476314608808130550693888 3184965578644882883897041975508992 -536261266683322210904770207673221120 9286737036884803428646142009671680 6799565924233381211542813216342016 -767496905734023533370242637995442176 4689984970479347094873708070699008 2502864217192281885905090001240064 -335507432265366955926656461427441664 8897067999809728094168176761241600 7848215964026152910545199571140608 -853102890364024288325897513485729792 9982658841765656063580613103321088 1184838829058536851840840939601920 -330489102716203703786841877579300864 555427998201487698736407071686656 2984884162922246137044840153612288 -741475684405337372366468549948997632 7022481463090595627338746304659456 9444052812519551689775808988053504 -895926738975938000317291670171287552 623242935233924893603800796889088 4432722033798097226896617710288896 -34953497919605040946146966058827776 5197445160091232808621537333608448 6092719894669532838726429902372864 -939325272723074802249784946182848512 429566098866968790001467369979904 1709838720568892634284606963580928 -815640422906489656177506070239903744 3371708290844384532938715635384320 9400637115865326589432760440455168 -905054199096864097890230472861024256 4898426107263020480525228977422336 4175015695485684857852314519601152 -789712056280278116881306027120656384 390850064489306795225957800083456 351150184740065348652669996105728 -595771909470428561634554788588814336 7754058888595001152637633208254464 5167535493524670650634779855159296 -556507385649179972966727847445004288 2921133625054594912495462193823744 8032935970257560015607490056028160 -793779809180687366320076412493496320 7407973539407761165790809786679296 9697270097772522373957718875570176 -476919682702741845625440549814140928 187573553186953152589885666754560 6395027276752307734297869134331904 -250873376217190776363925252987682816 9458290490868196008883261647355904 507504784737372537614698465460224 -97286232148718092518190383915597824 967356935591768672229089001603072 1253772746248841266579280177922048 -873682167836932089822382224681467904 5163644579629776637222226252267520 7895002402907647077549705342746624 -918763667480988892201768176748331008 5138918069760040787974440202797056 1598291547500715050542962273419264 -267854746238823853814517102758854656 2705509327624456857470493876289536 1271468686889902649367980228476928 -488125067820176766094059776950403072 2814466514947662849385443539025920 154045905475018174966989206847488 -644463306619776488587401488815357952 897237414926971935816755038912512 2715524940426404256239727046295552 -337908318718242978187180272489857024 7027583841661815435391010722545664 5819318161458325071232088485658624 -687887203859762229317039993099649024 7736411996263237215231984392994816 5217568928521405784882842796294144 -212259465763554076528580660983496704 5822777917406909606207894222536704 2387960235684192548677021559947264 -273434580860750663190090125525647360 1611373781756725900207615538888704 822156096811158528837481343746048 -906119195237847939833088634198687744 6566659565452860635253535479431168 5556706500687481426146959141371904 -222459276214882988642071847404306432 6575122098936465990427803719303168 1511300481437474908180231737049088 -986191243295585298459142616453742592 4712140432682127504783332918427648 1840655971610594413936260079943680 -406957761727188462252685404196044800 6354187182303418636278444410798080 5991088108535380621591993154273280 -513701801672561616608119285121810432 6646930295667824136137962046881792 9999848550631271645585226919313408 -865113453513447547677224925055156224 8631093219941243321348800368345088 5714238651196053680168747579473920 -604344626463796315087301898888282112 482524203417849599848172880920576 5019148620694728892971004163260416 -577100527759921306359933304907497472 309119668210921103762265059885056 6241916687162110086307487045124096 -24043879282508617772444504182226944 4043031872692056458059328773947392 4834454721262070504152246308044800 -169269349360523675785358194329518080 9396701924564532047974493841260544 4771062834147561746531157456977920 -271686312560437455564120469551448064 2641561722882577448697586960564224 5100293460734885808800977544806400 -505849560864201806136676098821324800 7250733198366493756099971596156928 5344911717699687159156891120041984 -854968160005690642890580577252016128 9643429778230228525708687490154496 7853502138905110161571004972793856 -156287161116597385214844230541770752 2520749876406764563722693934841856 9299259723556163399040453952143360 -520293873064748571302579675064172544 6269361398939914217788068077764608 2058108422567575844770911960956928 -897473972392599197815581212351135744 7726216426424059881767053138329600 9022976170557386884898070441492480 -4323592440121910053210731157913600 3850777920735170086991003834646528 1607777426597591355858100437385216 -2515455786309583688693249944322048 3639892890229274035692934197673984 685137224873570468110370338766848 -867454040539699801505558163659685888 6165240007933493735362250600873984 6797840359055068019181158286753792 -730146597346965829093168258597519360 7001625478427326038380211012108288 773231255760360868900006241763328 -189576634199524942025223800279269376 2861082787404036274752028405661696 2957389788764858718126877974724608 -708254495983031716149821947896659968 7055230262391952139222556883288064 4555069215766290402279894416359424 -70687573759118008399193041444798464 4989323576024908716141168446930944 9596925906257370898968328303280128 -433175628982095371992323788281741312 5298217958334776734694230141698048 6541561046723770634989260316344320 -504138952502759515966029267961118720 4697312436349097591767379537297408 9837347710227982570220539567144960 -295786787466720702312047232793182208 5259044158704993806549698740224000 8275616255266023497621431828611072 -141844405297699968349460599731650560 3441135064837658841180400299016192 4432975856598555417553078929326080 -895847850116768643193849671000784896 6211353996791543591712885655470080 6366003610640475427978200953651200 -497754343931765503763127667362103296 2833285526718842377461000549957632 5185925522541051194623416625790976 -272784453011865888915080911781888000 2353091421185694513061210372440064 5527977086354259870901095211466752 -342300178008533694226279881083191296 968479566126847991732118765961216 6499561937635735164503783303544832 -623686914422226076868237889078558720 8538819931832783961535881811066880 5320370049489790175786749644505088 -486628338102370103108058913693499392 9711190658006095219339117503447040 9079514469085544514684982940139520 -978852858067364392964365617494753280 1723772746367076488772778475913216 6542945562179771825888146996854784 -713713259278473321496343948352815104 7029051193819295566339589005115392 5858913976225122140849637865553920 -389906013009349276453758433306345472 2218042306276162567941070696480768 2615539857125699594191786265804800 -225379143450715266157828700542861312 3946964972208723706670974943363072 2911164426460915296735323609890816 -630698995564438291062027500667273216 9442925596765974061125241214599168 8065223215791068224749497233702912 -542647658437364425170048280778768384 4309561352463514622761527289053184 6097046054430576123422772369031168 -280530101760784695903170619947089920 5269182439982549501657208603017216 1376133757598402121535907168256000 -576979797950991219525125183650136064 6864441118927667255934566518489088 4487042352388223256885604252647424 -640594913525461715345805024797130752 386579365048864868025730519269376 3096264290359542217529797531140096 -634842374894854510670290833433952256 6126855527413530882428134418808832 344309753156975733807399816921088 -399781641010329354564979939549904896 324641671484373589947711127289856 8218539884635298392431612852699136 -974086617639872121588518452243464192 5340702687884001642008143783264256 2158005612673146541560532471644160 -366433947051384706076479378350407680 5180936069379711882745615608709120 5574302341389483950191975501660160 -168738294343320029716250590932107264 8207084455718141290050099607502848 4114059039716498874943405325025280 -157627182294047870691905146791657472 9538619378469220819310238136008704 4020385916166914450047649982709760 -280547984698155418819056308141948928 1025700430718170538698177463189504 5659847771873619536475301867421696 -805791581513929944690342471374209024 6038899639992251784806193245978624 9130099929890881090309089767981056 -45365774794351735706685793351237632 597308331735630074418221201489920 444586193120292372524968844460032 -568583029150481002952697168862904320 1619802411836711330935528231010304 9510395379289995670835749116182528 -239672237291342657526576842624991232 2285321349449952761402651412791296 7746026811603683438318918479904768 -143749425078746048424487622673432576 9511118580090875806689687391698944 8466365113995499768496286754406400 -346574717595044218277700760078647296 4499945513849498864713695385092096 9066102685740511223497258747035648 -366642834978024963706774488474451968 3257168969894844619260332372656128 6021182162352887134975312290381824 -69152441261971769177448918730932224 4811179770841324705858988244205568 3665489013693639746781592894308352 -249334173429976262075006522218250240 9723684158526022327639820088639488 2689524596249777097060297123823616 -20457285894835623876889985448673280 4730097154584191893837433612009472 1773341476121610082730619009236992 -496638162436820547191829490401542144 136758142880578607530316146933760 1064079343631966327153733383749632 -760844824297560680603315494201589760 1320849180965742190918632229306368 1774423095892567794670426768015360 -567845625725255631454916403517194240 4317184655808390095326324098859008 703714778801398684954255087894528 -741839154791726686402797178437238784 8591824702293675178896116039024640 1346807654711043919014220254937088 -839118957752495948100213505320288256 738255835666951738362517788819456 1742718583602963073969541538119680 -589553454294914273475011035193671680 6777187167085370476717367017603072 2019301652081777656516004622106624 -747952820426483917110767366902382592 7547125127688649415930239730581504 9207870738090902089513052472868864 -901107570123343341897893841630920704 5451046760852844775175363395321856 1350387506394440995011427974512640 -749985637743798586887057570338439168 1597939781482245800014380938559488 7710677456108738920565361793302528 -381554368143142349701539238200213504 7312524588043847221435182660714496 3680357303918718155100456476475392 -645748991344797491741476197930893312 7832422054884815904367748340252672 323060588057004626147132550676480 -8411591140453574653281530984529920 7428679178362222530288658780520448 77811742186858782393732641587200 -206088666065874952726378080500711424 4786835817308468609884918409854976 9607871417685140299959104689930240 -82228871748781949647797047523278848 8830619530502595057435633879351296 93550568638202453776060276277248 -66382353625249971344911150104969216 971199330760342280849796227923968 2681880317773892048837787128954880 -113499481547538256039504692924907520 2510447088506592656677456798810112 6528946997664338550351397975490560 -892489749751052693140760441982550016 8944709357132456193054222967635968 2676866682751783037635519383076864 -322929738751466566849208107613028352 4135066885111633905084000628637696 8657508350622133837891264321683456 -618053847491141934908136840207794176 941983244353015303547911722237952 2423722635377903406118429274406912 -568442378804074619224132736052625408 1063485191033683694512911914369024 4596028785774879466558019961094144 -586216607256545246884214645786148864 5179811495436188400887058602655744 1815936593676650252452728093540352 -161885640531480547264417006052442112 1772102113190458256647041199374336 5822822048965265840466331393064960 -822591842404466399772414151101513728 9000075269101403396238953196552192 2373462095397334659864501812199424 -683454233574949690433009578642767872 9906000515776672947220687620145152 1656240440655920153219443344801792 -196366556561740522042137820904030208 1904131947986456114863166929764352 6132229326763626628766541631455232 -615399996580180115127228562642305024 5311724611649963240266804745994240 2178745785967778328097271956111360 -888202690896872816145047543070326784 5963698319786174088812853154807808 8186822695774824578352232670429184 -949980979340278412860025534695866368 3344114241924927823994412574179328 3404540639062680321743998255366144 -502658056007119975608180856766595072 1795608984148389936035231126519808 4921717731582337180914329399066624 -125547335823137413692659588738842624 4480612791416590265506989936214016 4177099295898641582459217216798720 -373433410930076040455415075069493248 406141541132365022204195057434624 3230375224949373883729183500140544 -613317076116792653033728413389553664 1116946119527302964739011839524864 3724353555572924396390088517353472 -847072043102535646967848693347123200 6436211808837537431716422890815488 3567137746395329401175295645450240 -353398311186545043139967785614966784 1909430576810454280780684751536128 7792929735680133658152059069792256 -758169083799593151975284434416959488 584379777295264487446407087652864 3709869663739596302583950231994368 -763217781968510262992680030153211904 9424875398644558520576647146504192 4552323731121892429212888414027776 -968353256546013007121474587885305856 8849518752427267003173334268510208 2509437840842697602901298814910464 -941977359771041276881454048212942848 8146898352851801865125240164581376 9941813035311271438112637163929600 -202938788996933533269001692067659776 5921431517074758952603100456681472 2255229123873463862749659079376896 -914033828273088281122359681577123840 5759692158886693936951965220077568 6355080379106584927105264008560640 -257609050157865560804196545458077696 5709696492587593512044653961019392 8831001795144391411281569173733376 -78843595871766215767335505036836864 1134275295091761869849710693449728 6756847923285931789602272466436096 -951708808769233155030597304701681664 9871327725852716120142397992599552 6604441395315647521532436767834112 -712307989517776794040756777848406016 5109532088704002697968073293430784 8462751951455890602719564697436160 -414392997732684086690006686960189440 1809823765480454921637230163263488 8757953907001856011147802767785984 -976055629579696971868011730506350592 4792055939895332171654295944429568 5312868766817708567005429931966464 -841806435572362645067278828720619520 9774051646395380111318573136216064 1822057616027001475977343722848256 -952852311766525604860252970907860992 6026209471751583828414333932535808 535267527948658939022783952191488 -915527881371123423774943637730754560 178638258445507363539331548446720 6701020945690556934699094147858432 -31952524808423260129548394645422080 3007352558623297978566243543678976 2774348734004747629446486462300160 -979955581927663745580252877824196608 1853568196050467891501606654443520 7768127605532018205160455926710272 -954621904094898006495867501463732224 9287350598836261235679597177077760 2304601239558462860721233036574720 -967329239208541195598340202061365248 7503482726652286088310827664801792 1442457080781893027710097967546368 -406098829522021892446293399292608512 7103068454805839496264446296195072 406768048222695743894270519541760 -680449750677826523415827893125644288 3189792510033606391645304432623616 3185415657802944868090435166273536 -189983080809162381829977969944166400 2985246325914085073576346005798912 9611519478381677855277987320037376 -757850752062353126846387466652352512 2761627615784275677008424136081408 9203122781162058337059686284525568 -867745582908512151465728293233229824 5321934167479488884655127057661952 8453116488016245842649543581106176 -423158383897525274769808856553881600 3280063751034609396674017535983616 5274453060040908728585318811303936 -104783847656124191338172549519376384 9389248336288298406706135821189120 1742038651640824648630214319931392 -231314115722267056266629849186041856 3373560460465777814408990772166656 952976556186819048556699326611456 -994936778548594184570187683811295232 5062046087485571998444286885494784 8586359436149517252366911011815424 -888973159651808029467249550611709952 9010750357556016312492974187479040 920773160422572389847403342069760 -847419071607174942342983439148384256 7289713725742602241814156671975424 167265570981079702697180611477504 -403002431509144673237682328424153088 4078913536081081349558130834407424 7245784960124636490762328410685440 -61766923944616848221816155126366208 2997376955727338574823124937736192 2400119044685919575578247688093696 -487236576236166110379947703213752320 1822005858286606026107737851559936 9102899055303299923962884828168192 -706698213209209475722932372841168896 3221707163317589615689994531241984 3341153331061844149368392693841920 -906419118338620611965969773258342400 3571265592827097375215542085877760 7619749958394481393061971548438528 -683403249267511015708906808387043328 7120951367804282573028810473603072 284654978849463167148394106847232 -706952273835481097358678752202063872 9751738611455238732778337061568512 1412136098508209465893118640390144 -619849638773344361053007903190941696 4970028723643206409779099778154496 1360854312775809904122917831049216 -183096133308416998291296430631944192 8208222730061755695536697621086208 9029529841457800755051084164104192 -971010748824054021519728828714319872 9942455353580557889636382529290240 1300240338523617726963410056249344 -415974886141054980604459146467606528 7988074505990537858984939184193536 4763984412465846885617050245398528 -310646649149277441613968918135701504 3716219752952691887058299723448320 300757423559669511574380892651520 -826711184131885888216443866943848448 7478115866497000836845972614021120 956381152667125724526727674200064 -481571346911862353088285055589023744 2944580636158323011414007828447232 9264543730810305635170455461560320 -607428354307813469904860619435147264 7874700450425855183435070212931584 230201035995479802565443771695104 -623956921446558094524879926529622016 4907248967788420223124424859058176 4070074858271900657626368595460096 -901305051205609650121935212395888640 9146249081952653583298108476882944 6198418379484645501085487953084416 -552290041471212562750304386704998400 3784811820665501723587285557968896 1217093776803616878623046053658624 -864010740693178167109776336360570880 70366920693510756536950326296576 4565088270133475533394140039479296 -618201433068940783430996197803819008 1151756848761410800123248447062016 2899756377273429356579781791973376 -465204238573708888911360181313470464 3320985778023804936164389366530048 4543045859269439801883636661223424 -27895905480473312682662107455422464 6929065393646519809643969482063872 2164302063701833740230949429313536 -449663992058143393981578686805049344 2112741622452979138089181792698368 6591421343401104818453916931850240 -453096582505311269714047124597899264 6893406274598121666802762297376768 2977303328660930230593533473980416 -905272716974977174204254128336535552 1296804643163551772706320496459776 5199203670860788327667417770622976 -145828037090116935672533353706291200 1991337127796488005791542893608960 1332039912729089553138366663360512 -606461805650799327397372924495134720 4366002846770309858781442317746176 1776694554353612269358584063590400 -648518803094273127466603336695808000 2968696688004574339434674588221440 6097888297905143325321519146467328 -520031815089380366920314592381894656 5762792379839641888601098200023040 2856445373485785043854880606781440 -838058430929682103446579992613355520 5905329294990380210203143899709440 2879201661157134794142975919128576 -698168384263524601900760323663593472 9126264675815337034729778304778240 6805664393465232110424132155342848 -390586856675817643740024777706831872 1931701953183659330972523073372160 832323966446043969472674406596608 -8175649463365413673645951349161984 3551751614698916681906947773956096 1646711839169542968827975559020544 -733765090125842281769589877849980928 4406645730101627977494635099455488 9402807052852818149236660255064064 -331063386223577513780272386526937088 3234677508358583815037522437734400 4276977825807428885522411757240320 -638141962547134435787819425671938048 5163573688813240731782035519045632 3897513366294722156358674820366336 -887836355264223315765690488829509632 2981983346748843363336347323465728 8022442685551659505985579141562368 -437729794039184643965836634221445120 1951189422307192406990877850861568 8359083095732686922513410569535488 -861707969561807075920692298412720128 919579591524576780816535487774720 4760228458277795007606449883840512 -903204042992024583689834222269235200 549644998423760372604423202930688 8347712999479520342568580778295296 -729153606054158588411481732908318720 4783391539402200808380686525267968 6411736843774960711532595858374656 -136147323967516964663968006504710144 640168217117937712753996856295424 6849292546048064778346034303598592 -661225594424094219604541243496857600 2192707541202155990759972175609856 9029200636266857898850922472144896 -775735649764352272872733659361181696 2645190747199935662404247675207680 5913873836188376986916678478594048 -395971187240094103828948053062057984 7498360180414266071608598548447232 8165587252597820780411629258932224 -200830725567532724193831392322256896 6867539530110058991294944064307200 7991033591665017213177223849181184 -348366395341865530225419096346853376 6641385487091671218367792511188992 9572068374096477655602455881187328 -724467975568713531008298508980584448 8394993842471356685323899714404352 5561895168286854100041504485539840 -255167363867939819463968123883880448 2362089681157527450770288611950592 1761696135237108448597159457062912 -428437814505159081493965765955551232 5080592777369118113333805104234496 319732921274556555293035287543808 -657439137771550363138246560037470208 3134439696760102970992751542272000 3646800712599856407676732791848960 -12096865408577954505835490914074624 6536224111910137099412860290727936 3077272884768738149875125191704576 -471363208328976002391095969904066560 2982025187948263996771637187837952 8008085230790991361841117674864640 -867385172829694730217587530014916608 7623672869225481747668652290736128 1142540878316780554551806832672768 -12920530592572355691219902577770496 5674773620832524254615938682322944 1410080454657898088453880607145984 -789255415588994739781012142065451008 2308657932710513157007922186682368 4791176412812139922984570422558720 -69407284138949682714825605672599552 3806807783588739496321155831169024 6231690735315246875046182534512640 -251826746496684788023269846870392832 9626985014371572241601541405933568 7965138678749922393609306021822464 -177829650746765185473589663976390656 7320267592626661538968669045915648 75468226284926545302673831231488 -709097495285239791878444257405566976 4613909953415412807811361851572224 2469205488881369153605195949670400 -551160020033825652976040274544295936 7280933965237312562920985863389184 4094499055690773005961844989362176 -98573417124845686908125138298863616 9996209193753187632579989469134848 328062924996986368360188724903936 -687417972590225290833518056240578560 8951858915227621914455861299773440 5999390075864465494565983363268608 -554647248880481362251404055546953728 7139906403104869940155757201719296 8819829094245478155669922455224320 -963648032775413520629782996462862336 1375510910042522301503680150503424 7397032651587632448642888989933568 -938110642364156196822876658065211392 5627369219017761792834537747644416 900304266715887617271447557242880 -191171009670282515493241606629228544 7727804798396201705113881835208704 4418332506927240067332719085879296 -563762682152484378242911838807261184 3635343036369517125173664276283392 9157015270332157417943065612517376 -748574067021492271349252891466530816 2885016680842057111527089768497152 6154146399714296906433154508652544 -603664717634164657377900988031041536 4678406231388592699270797105037312 5670016171091480720665007106293760 -902160576675505940452332227560210432 5885142083949837285032198747979776 4833577680984150531440490179461120 -946858733856088720632249626816151552 3978733340076034335466912093306880 470756917034638505538803160055808 -853734551921219292278711743164710912 4000559887178755519281840240197632 722649511349081057740863907561472 -91251500303382598271418445452017664 4015599951048344739495613382524928 6350056055416021965781162369482752 -587694742631663199259352448590938112 1313788647353331013582680798265344 5846236912784721673279377548247040 -808877006515565094044118791497973760 1929587344483077276982986632331264 5897964915433585187409680821911552 -854570781768331244662236181233139712 180308983478331448908399283011584 5869588284843228124348761107333120 -277938579131333844487083474762596352 7913611660472293999266790029393920 4337411901330211308401147571601408 -705593244572394447439270962670862336 5078255929836846521314265442287616 7660604662061243518142575470968832 -968174287455821155233945279212290048 9301730126283034258437994520248320 2894904585541005988402810685751296 -402271834959376894193224560437886976 3385456891748547237659464093925376 8126407403325277301819117762772992 -374937378901400909634257286783303680 789252474040894376018455109304320 265433953841848867750795110514688 -283861850426280286932021166179614720 1640355499210736230460787913654272 8111541329733265345072367126183936 -589897730263990834677925796399546368 5855142533233316182998382173749248 4877624887571156207441263273705472 -435373169984235002551510703506718720 8079958159633522885898836314685440 2229002101494191709028082994118656 -337315513093572868007103909704237056 2577985132246747761070630257033216 2977199179191176691886699808030720 -931077276459445807008912822929195008 9608298648977205842245580985729024 2787589529646601324244372805386240 -657058817890351017033877632634060800 8578231004689115132378860392284160 8666263195528317058467768095997952 -366877572221177169850503665886953472 1620761504322990247323170695544832 366563974653027315426109947904 -655027947542505151031289903050653696 9383850140160632005163106906931200 4671477472276141685172722148048896 -231281361999641625183804917360361472 247684615956683692746371818848256 4568091892624623317188160367099904 -517024181093788832208586715353317376 9992193442296001993533267025854464 12185414704336460238830146945024 -821116523815216676074806912628031488 7479170183612951628692713113649152 9608649742617567773268213602713600 -833538211753796396451868331877597184 5007121658314633715079382153822208 7235946794583555074253871497871360 -230454355870945910988568189307191296 4065190665949260251616544697614336 5982809581619700601652513354022912 -633820641744135583661026775368990720 4601595212628245058304051670679552 3585307759317912582608096860307456 -172158604294638836291151000162533376 8327057185618448764875396498849792 1451614552994795960943048164114432 -306547000997676134321506579065602048 445411682865591493331774970265600 6664686840662863925333528552669184 -447369889966012736211410715162968064 5028774773954658176630352003465216 6238645464692130744681338543013888 -43231978899147928061471401271361536 2731282832332842300719879753302016 8446418522653984644266891887509504 -493991477249048628020729651058966528 5272007198334949590092846020427776 6698922663938053191416275393314816 -709323800880968231011135041879146496 1753401537731704725210393049300992 6111978772862090757014296689901568 -502418581388962381646957685130657792 7623671951250459184884987033812992 2013098236677401486519561160228864 -658198618030266233859498276330405888 4325176554075086150197705216884736 4046588224050028443054407879229440 -654889415301619046273701566843191296 9058404964078340939631362647785472 6684118675990549708449175998300160 -717820135718630400685798841517080576 8641380948871262483852939816337408 4552482825143124023966849103298560 -956896636028457061900599463277232128 6667090399051482714915634065440768 9915446836324039014929688728436736 -355616113938780266415314504664481792 5974796536350948012405608417329152 8545330052960809203424456578433024 -358938803587088422952484516954898432 7992484478735901385777683875495936 2340548166245836931674799666626560 -579413605122533369716184890164117504 1656870117691068032915300509810688 9983504143070025801062246011371520 -778773595334347113240471094995976192 7123165896863848583861652032585728 597593793760262434725188234903552 -574373424321534338077170856676556800 7385383517530789732999394010071040 7980205259333187318411074713157632 -716197086475342219562535838994661376 7828181134143215034215941816713216 4909726450248088313773348085563392 -115008112983536626967449818059767808 8241441495254328923665918949588992 8653229736356980932624016134373376 -410071393227612350077804909957218304 8867337614849879004069467034484736 679943559088361940615805920083968 -694839322343022596416389360794992640 9062356882928910329447352543215616 7115375402040549908326277449777152 -866480668142246918165368580935254016 7378399689542197979334106800979968 8956482022384523746392453815468032 -842316536914465198553600434905284608 2397755783241761710904515508568064 2700139137210017253541785595019264 -488860295164139626061935315251101696 8094732818634467118967660541378560 7894056450558365595073516322947072 -70254047178960916698519299780771840 4087926135098579760560274914934784 3528000937230876324781943320215552 -331476996406269520435238207936790528 8862837216161927900719160873713664 8464922408869118311418578077745152 -440495975011999119080567840530497536 9247721600590329207020714882760704 1904612858904484270793604168941568 -179115124460300761025156122075463680 7073894059249767227486479314845696 5411404944845115017043003205222400 -971537645680560106106231305604694016 2969190700670458419272376146460672 3221951499410674613442073537282048 -254143595877122700808478668112265216 7373975991821454965417814255468544 3645923804355626629322065603198976 -473061259697451132628552182279438336 9540292470639264642403539015958528 85539139746081294856596534329344 -62615307616583072585292964079599616 6055034221225292184277469578133504 9067025461743767088731610631110656 -420838188052370876177244636795895808 2704593752626249918554027505745920 4303177359846798537380069946425344 -616358181370214714906502664330149888 9641491955173843633764564673232896 9925033759514486659857067450302464 -197097026440513273324679009843281920 4814804843929146961155356721414144 7723248055145157073424115864436736 -744887758845611693021568030449074176 1007819204769818169951414055337984 1948753917737248495983617097334784 -810605466684163119066467104427343872 2109208046839333638611548847996928 8393654556128804725796663682138112 -972968719202060566132906908702474240 8899792823989292720403707540275200 3846291464991815603244753605361664 -895056165294588197028413478193332224 4040641385371177287374292952023040 1652888131498984958903909196234752 -747517224345874666891124806376226816 5844911078192931811575498245406720 2381077814001727162270791392821248 -868878611138259536412492658942935040 3113059711920135391070596932567040 8133737420412947131909244073279488 -322683724399878642764626404321525760 8380872689311010851293091535519744 8713343061857945215811551158599680 -23591970446215757757575738217725952 5984649659508608284108268706463744 3165900204489063145960436532248576 -894495210760989075916653665154236416 9568450660070897762372348968697856 2796593179248729508503274408378368 -469839011727646194511172917652357120 6022495962071800070717955337355264 6136162221600658980808477749805056 -195543592657841824285582229936013312 6355427639737252759252029476438016 4243411162942810739060706843295744 -487770319378367217626798239896305664 3265022239607022734813195415846912 564525386486148662687980530434048 -966789768799022771645060214719250432 1127990155959053337438915770974208 976588334928133336134320044113920 -320330704901518627857517160448393216 7372844632892631522492999402520576 3381984812284413365748223554093056 -213219635553291256016247833550127104 2869965326599366800095619064004608 735377379218124323192022314778624 -879878131521200518089595218925977600 7619949079187966647186568364687360 3704451255451161017332832015482880 -51335928511258183574174334437031936 9422320740890113483057532665593856 6408169387728786387624807496679424 -378719089128784777037608882192515072 9046996079798943198215221605826560 9574873727752317074416247876091904 -7963106979480137956213851374485504 3182260062464920407398379037917184 4231969431373331266010643018285056 -908866744752547982813594768080109568 2979040403785759110132700758933504 9724400927396917935414918391005184 -223769404166084812161914800577708032 7410330801807951726055236588011520 7657652669933413188788851136528384 -429449225314204385239774384277684224 1001419883010741930375933742546944 1787463740650900995692194489696256 -618902352923960018997058410194665472 8628645447111157535985191652163584 753974687845417221846023758938112 -868983501739811840946946817126301696 571631281245701931883650952986624 8691694459314748818788272431955968 -582878967537311811224584942386151424 2178525863518528496972831607750656 6214323559270089810904193131610112 -468471412031042797295923838199005184 8142303667427879831279862072475648 5270826531686060944344145341710336 -658663609093426882809998317751107584 3440340385329448605299089900306432 7305242254590588012488936564719616 -499331235493253809059520757303869440 9222333932674452789962833125179392 2994784813261320481161559018569728 -546855515750222738293715960944656384 7629369240733589542139165438640128 5804983777189481259250950294470656 -756106841284320518750162603202314240 4936430928166299962184299739873280 5239117409602667045157206042345472 -458183585617975978001489635043180544 5264036853932821457801850839367680 924884478803311305620885960916992 -429451270889396653775622749999333376 4717964539920937984782465966800896 8633764419750248473063814768623616 -382681095411280094140038685218832384 8310246146272822305590435200892928 9200609209345820175402489192906752 -742897696614837951348037620265385984 707331172646057402584365990412288 9609195407169649188431144840855552 -431954813132272034346580543119818752 1231709553647718619673353735110656 3610486047605451130719105550647296 -597609462881916709502789259116937216 7200654128997997195136959514673152 8087598810703285205123305278799872 -793572338384407803057516175624765440 7288145355671043715757179035189248 4319909978890813295415043970564096 -744977636971132256700663379034898432 8591401215023369844133771505303552 6936136618979795925555337179955200 -820190391002516021926925313832386560 2685433483924982638129541770379264 1803257026564713573962233730301952 -813293943141559934500267210603233280 3945937406641923922247479688429568 1104824664807659865982156822020096 -223795022990799029711930175076171776 6585639121855684223408950655057920 871804229254972147030767175729152 -730498149455118034393036848726278144 8589646442170746791097335048830976 6512187318509821415277867009310720 -398149480919581870765498960390914048 7835634025466052504252468120518656 1947446296642375893053213014753280 -815849522919682768482434866395217920 1260255128783435411476936841494528 1292118501707005769730354522882048 -651011922560135016041397448750399488 7125630346644920871460703907610624 5926051159539344554908935509770240 -735430844615276147992661820987932672 8224738852959691883309285813256192 4453170472799509149170726179176448 -845543750296001842066039159352459264 6259058693922853072265896974614528 2964597564158108292881693647306752 -526116521259658365749759405975404544 9814217926145936489177887287541760 1837383467348836847866185452093440 -253427013631052180907138954723065856 3754575352830159953217526658236416 7465289504304092184119940910940160 -151314587621384544486790211800399872 2116771737531123137380119199350784 3532685187481969739611491939647488 -795927876701329949661240047553216512 1067401361373350745498826351575040 5555911884143701840226097018437632 -219679944319947786426455345785208832 2230503961812352488045848232460288 2986974638912639942156565834891264 -474822563144244153226697026039709696 6713720126311028650098405731729408 4160868053239368635790123046273024 -917789680903937757869436353390837760 53274258593762237454633863741440 9575191822150229850189012530102272 -353924858550409020826344439735648256 7087376974351637162621322504699904 5252150151901928041128013137444864 -158427209817955176690011005121462272 1696257581315362992145558849716224 3048160544177054591102101003173888 -844018664863155573740990128432611328 5612398050353267841579923630194688 6288653505105575770175392383500288 -422700873389842398978710586181812224 5441233342092237881944611380789248 2957012316549338441927274226778112 -124194467355564064872284534861725696 671791791620542151236730790871040 4049039799209694904587450633420800 -617326325048983993327761193483370496 3580944983669736489415183788146688 5491563899408284322457546647404544 -982774014207218742294764455406338048 5024498539036378222302500329881600 6314836428210805746358408794079232 -205822075741775833309020564247019520 9868945897856321816712882746818560 8710356389542400170631660507758592 -921520515089633102021816750832615424 2009015083671284158698159989587968 6167853510870155794305219653795840 -606084756478784810389793905175429120 8231678504895957574736506641186816 4486932572347869697896752835723264 -505836543352835153072535449303515136 9031477095966151665550878505435136 1278495576509461515583222626385920 -720192052276868861763037423636316160 2929708515975962645594364077670400 2740431015888908485505585753620480 -327775923416072529156130035443171328 8207060979968004762543477839888384 3294158742140798187191077789761536 -102367471183576045116282683246247936 1806036577326539411994759607091200 2450008582770091777872591287484416 -493446435833159544212596356087283712 7246384491591777311814267917303808 2879756081730661325828662224748544 -587335653227618820991743369685237760 7973332735721230738311570756993024 9612906620385668450868183741497344 -24144008278859292790552687070412800 7293609105187944079781942117007360 7964908075341244393817778581143552 -163499569572219224455102413844512768 4601936460401092927763205633081344 7107214834057314021523313435607040 -970327250922810711025501572482203648 5997982136861323385594850926657536 7093429999553240180093845036335104 -471182536561150874795224546483896320 9151190524447770082435898516963328 1798723571774707236382161443487744 -936448309485098461439165312121438208 6413594028448454502141095101595648 9567143815760119374361003351343104 -121061273700200422428191614669160448 5203349277984780548704629354921984 2393209215942460085435464362754048 -982897266669786065377863044738056192 1763428093956262064960079868723200 666364966552123803596028874063872 -4522831560432184181366247863091200 8358994167946892627714958159773696 8844293694619000399492207073034240 -251138228593430484724312315053211648 124415379513920035374428132999168 6236091155336392688216752846274560 -225505987439966061239976484052926464 5403139177383411681470946721398784 5052877455329058975489164440502272 -793953285475111554662194836324483072 6289116101173111048603203180429312 6490727148091657475178855812562944 -765763344897739995167403957242822656 1391894368093179062198705804279808 9020209178146589433631119035596800 -329518885092034956925565623840276480 2661379550007554128838779899740160 795472874957603806179634999984128 -834866099501513567240398299627257856 3023709777841512658126509959020544 2243163396594217173593975435558912 -877363929254171538506103072447528960 537428939249555595250568060207104 3636500681677162600975321496813568 -604842835137861688090152042183524352 5470689549295730627570343258095616 1991003905359163805772168342536192 -421201632058428840727739400676442112 612775629949696834178369544257536 9361858334226490110908404475101184 -298097680163111547901855556886855680 9592263406317180928932483101097984 3807008580670874941560134270189568 -664467463584065518894985680898752512 7034164953355751279205106908659712 7017721546462956470227949271908352 -122847976680199735490770504475738112 693725222199407188735444058636288 4854067014134044565139096860622848 -791733352807193626116919932164767744 9108431069088747941658033509105664 4148786060372274228335477910405120 -551493542443427460517242537131376640 8768404275924329955012144346955776 801825543016320725757725845225472 -106162930722764947944479474673778688 7372443772466697391007242829955072 392439649183968091253606375751680 -774701094323838177733654862870085632 4044006655085038616580603869396992 6832508459354538488777295551004672 -776727215181580482034933395779223552 3230218101964290326735481548570624 2648824791226007448868040013250560 -339604307951480586668224932338466816 2515702732477907306514149986533376 5936423909519592458241616644145152 -236690419026976448517316715051220992 2094874575888898749334416093347840 8205976451267200373722394453344256 -47972523061454655841751053453230080 270938367172379364842363114487808 3671486592388489957753446205489152 -973603932875701279836351943355138048 5827818606434693829394783432343552 1321674501892407935534595460562944 -409452789972025378816396036988207104 8821946235849500065306740367818752 8820665109945423286079398147522560 -337993021030419047736566708118224896 9716857040555176154170189538131968 1393023055980045578295590919340032 -557704948601784146385140457635053568 7824238666663286009910718168563712 4695569025991247892181120591069184 -26055617328795124620049685522939904 4375905214839588621852571215069184 5202982968765284809445294049591296 -950803673647078102859370105994739712 7289025205129436821786384712859648 9709094970517265382875850235445248 -852696218477668540464521610000334848 3215600687220680192805357521731584 4664070631344815760024277258076160 -304622910100432584676639350001238016 9143801000561216428319188063354880 4423214247781336413092171128766464 -546291118440995522870070497654079488 9360855923750890339402504197898240 6838926487408569881108968112128000 -180747779264606298658137447017218048 9124967553047408295379569202954240 1719902193532907217769924678123520 -103376418229534178223129664472219648 170225740396800764818659347529728 9220251422107562704553644801392640 -627926481119795385528560114458427392 3276537721772304780889950391369728 9304232074589529666384418595405824 -97047968094383619422192914673958912 724045266579390814394713813024768 7008087226676574881033839076966400 -358144699932073369953283674977861632 5856788422497729511866203390345216 7820572671799277479554743831363584 -241995347918216774773745374248042496 3703218517843913929632187009728512 3148067512685083321375765406154752 -410698134768523886088738842936868864 133386760559522799295048133378048 8793300701965656797849346486829056 -524219241505967056720514718619402240 9001425673946008911805323853955072 8012943637085884139644573169221632 -845599330897541289426146271229378560 4977576385186828162322668841861120 8969217066683325501168545903411200 -331974964623574765072309011498401792 3800637852515821855913977118195712 4215595650371558072992014641659904 -82899646720502542896164408492294144 9820791356402429113566241753137152 2662282489876449372750917396332544 -914442831121649395518929900054511616 3885314163651572514129960109080576 5833959259159844601251233238351872 -487753450098308507423685879139401728 5032285764165489006514434610298880 4853687308419193902405115514454016 -69673153702640622404218168430034944 1204359366493777906929763964944384 2638662269779862162251513449152512 -243923260833941490487592342861643776 834125164268373016578415382233088 3497877617431240058539292684713984 -61742875606525864923890869946286080 4537796349428195945109929378971648 3214421217876260393576705613103104 -392194482604811088408431448396136448 2706620781349660134676453677596672 9610342443639535875494433400029184 -477573514179135532391747107139092480 1169169992314970809358074368753664 4826208716208857487729865244278784 -948640669245675878245175564710182912 9476580376899764417541810767790080 466095196930953738875598796750848 -768722889422104744374693348589436928 1289378191776102375563393062928384 6877094588398092218767541496971264 -659220239690031879629027066423279616 1475123204647365879780234068230144 4631774924537356822240878307311616 -551598165293079900747361579150868480 8569316137025240407895649193820160 9535022705591496175377141181972480 -245987340207733263625527697944346624 909327789237319460571129426477056 4062339529021702970925440756088832 -36934054575088775728740332468174848 7066304022267136322564576845496320 7864321171818664232138571524341760 -107174511143181900605345797165285376 2090819718686893290384681305374720 1346650669864478009661918873124864 -437606988904851249951235585876164608 605781802537020295189234712576000 6221823656847353444508821209743360 -702105724193255644725051018841161728 3108107591518002288180054477242368 6371950107025448497039979485069312 -253457708283383662871918442646077440 5017947975116348626409404858630144 3995335234628799958022506929979392 -515981855570772681732827917808828416 634255791507005428161457640439808 2599284865491672154255126899458048 -926858602861487680742992415404589056 2437369590483849647743706568065024 2337478287307233866725911039049728 -161460805535820050906469023589859328 6075663463117283765337709137100800 9358044342320428849099441117855744 -535556899142531906681163300967809024 4859747031066369597037408522600448 2970572083122572670980809767780352 -875634522438574598968866121982148608 3563819524878700223327958147792896 7610626408055664394402966695575552 -904082663862866065154229380528996352 1854217437443570222350753526185984 3013868331844800239318008231624704 -790779205492072588665417363139592192 943296669493732925418203208744960 2647447725424384586552475427799040 -590030569432717814496753522506203136 8586074753961389302799050400071680 3261838891861711060087401235873792 -325934635551796597252158603342643200 222211483343127063297875932872704 4528005930485955223245048653021184 -279499251937655252993260219036336128 4968201827332851541996330886889472 8364277401611685974605472768983040 -187385236822981015624552815376990208 959644773530357152225787763490816 6606370546837894369034672659234816 -450517569178567226265938762710122496 49067189052786916301104775954432 6959055689438730303772814255063040 -846594005082733349042031734338617344 6232985343650198598342562291908608 7292484469884187987902995854524416 -579546073633366352949338035281985536 7347008720164535595182977521287168 7512668034155582385414563518480384 -378114256350255247395428027328364544 5502272954230950695422132978974720 2741145934995909479969185083686912 -61580428903498810477637212043214848 4581600409517559688423925436383232 6953744532943819767869540438900736 -843876579286079440727745224389951488 7115316613717938101191192585699328 2017717073281978067600715959762944 -280644510517920200000944582860734464 5359208098435418653119018719772672 1751082328015206780490128201613312 -742222361229115036862131765078130688 6383165556337368755423004453765120 154532344161857567763987506921472 -345187892816108827599812077249626112 5998047291097071741326469776801792 1860746989447647060752381857759232 -903395763526623216490177002351886336 5920541551576642501860045856178176 8549907791261542369413048884527104 -160225313512441423009319933005791232 3152373774951531068886495015206912 6896848816303718462764242050220032 -685601314428483622225794042626572288 2333563939103759859489773291831296 4959082813061952554959712680935424 -307364823283388714183462834730434560 8437770413772204240683531071651840 8540924825095338055541070332166144 -638009196839126813700083780834820096 8946968860551320632546866149457920 5594006480134341171591338067492864 -374490550497932241035357366582771712 6657335501493692216426940537503744 3191285480848415164274812336996352 -44368099336814131602287191381770240 3839186259476631354731881377562624 4601308407451602800281491748159488 -814806628917453163709315348502151168 4510546369671713416128596178632704 9174605853437557195638356762951680 -189196434089301356196919144574091264 6356989622372797738131300957552640 6707691310597904683732228307419136 -336273577853439908910830462768775168 6822090008985684638011873109737472 3638905466602154746495651660431360 -743869927303980804023989484642107392 241472581221163034100987362017280 7589815023173497343771129161973760 -774527240776436952520218581093318656 9706780135759079584424132851269632 4972982821893288265546763377573888 -131299568206415581182326997361098752 3221690649080413648047101064511488 9011185776897411158895385007620096 -533424685239177135781784471566548992 9278518400503443582416877281869824 5076889807457834752900659113099264 -262815252003074597998242334548951040 8616397839304913690806762770268160 4357615678810924657727857594728448 -390383592965823494634478588475211776 6774055563266605628808138705600512 1186393687467316644986545537810432 -324107646623682082485702408089370624 1691925675816294580693878951641088 6466401111860009572201117639507968 -386252461925973707686544758615834624 3989743721753493897755520906821632 1487042591254533664029582529921024 -662154306630846878743933502286200832 756796776760059864545671216365568 8984408507799973151620683565891584 -924539419598577388175730171621408768 6754925352593623599498230140764160 766075878201296836266729993666560 -566249854129129991324380074424139776 2001440469475562236438368380518400 5152313038015575405662467549822976 -789909316225837190546193502542233600 9281558707950981989721851968880640 6611054422510791893531117414776832 -392468420828182330444560793058934784 5333525804162736747575733454372864 8882696101597407293087163554463744 -316909802240790203685066363063238656 1461450956311704571669346592489472 2841748589785424917341661724409856 -110250438384354300401761707930681344 3226680116055605329972832057163776 103582167542563907852725055913984 -976334669545821264837221320264515584 3168186622170885092243608526913536 4745190472902754879553765269045248 -7213786960957491924734854586957824 1159831554497681285626145286389760 7607495323058435349605783716233216 -553375198301496824113418053452038144 1299670759230564330712047680487424 2392957568333513253819959224565760 -549721830934466873223180558509539328 2645635344687354061477985921269760 2932481403024741082318263417831424 -475886715079027908222905313663123456 971098782517219103097914692468736 1042664443768806855072717775831040 -939024639292051753961492606976262144 4842935125948715607942405675810816 6059280791007959084838883648602112 -4369604435810091511747650693103616 6561652445243843454888659919044608 7866761594743747538325693437837312 -36641820586207346792965813848506368 1942700175663575825015296581697536 6081583338382595099089510827294720 -821444964877186343857490168230445056 1094041612188074178008589961003008 7962066234779551372410922547019776 -150626655832456910733460159728713728 9990332714703697734154365624647680 795299899352011228260957228630016 -732290411631326337328023979746656256 2845705489955566946371346420989952 7663809965877019134191700975550464 -768699911641999979757162690714271744 9514302762928098129754576188866560 1230932320165558419575403580489728 -389440799589737148226055028518944768 3036873264550700595296304784998400 2422753910336709597112514136506368 -499368522784354695043392770077097984 2021042201056160054502318766292992 9421526736812422419826881813544960 -2021836506326083617955110505676800 4854527870948497273109820848734208 9548796186758038852089216046727168 -56693689158874109443424323486351360 5865903110960898379541682405244928 1132083274656726355680536614141952 -498560736522911662084463128687411200 1991097481327889941982368554287104 6724749914289249227791928200790016 -636042886359141695626245516654804992 9210350963714199945683137688764416 838805441767054050877251898048512 -613357301344741661858875644047261696 526975632165328231301359796748288 3906926445055133372841793041727488 -29772763692983356442123485508009984 3968240673941045478363881803874304 3167328820823305995489822665342976 -767260379017676422759167183768518656 6067682568185217312953647570616320 4253104719355870904356297037053952 -412978111675876125835078226021449728 8398739703590774012793842070192128 9206520666382936507057500359491584 -676567139473284262966761281881636864 9469566384872699306874639952642048 1739833927007218471520823005937664 -218614775807584821003173886079008768 3872454375435026088690342084739072 4599795715669857359881584529899520 -28191300227849791412282479578447872 8729995685665269664986041384173568 4637002774659831471355685792382976 -343496739563600366846312482846277632 5178383761740237016129978671038464 3011356000378785497803956552728576 -654993913630412124542894143065554944 6338044600310146301397033182822400 6234962277108014932656724211924992 -177263670530880565298130799894200320 2820823756015226197961398726688768 3245421585662840684603602267799552 -15745469790402653889194674146508800 7036131548148016378549013525299200 1350741409215278653424895505989632 -622012619249486649567221807061139456 5698201604870300292081582042251264 6692286805743177465394447110897664 -100317878442042860255557143595319296 3913439617908137444023832282136576 123128948466858720586629606539264 -126668678256321455752158840231034880 9979356779826685345223426055340032 944581057382974408587624295956480 -18452950193423946913633364284014592 4690073153765365554928621786759168 1813804888952922030752914605080576 -792598118555551776791049318340493312 3198182947687182366326090975150080 4459649315467703525521186906701824 -133193950973759722572542834794037248 1861037343647927529060031719800832 8105409417611511009132940303007744 -263117729657831100143884174041808896 8360950809413242034633804028575744 899403050682024389713219798695936 -156914800844115822734936718507507712 3781488066723448029081697368670208 3946664302313982526948517605277696 -160052402776963786398167564231376896 5086112915943080680756152599838720 1875497268537286302961105945755648 -869614084154061800078991906270347264 2912847408992443585832484658479104 7546444517243579388334789833523200 -358314396233585014308467120460005376 5977266470855073720656393003859968 4704309627100514093139774268243968 -268753255907055038258293696301629440 360646614366879325542528204144640 2628525256480232321539999736528896 -711681658815128843925130725809979392 4006774361173168177883937790492672 5643558373276498228777181129998336 -706893417614613625195193803663736832 9457557758865975157988321161904128 1851727867908029884536594184011776 -123051889840018104916390610395463680 2118894093685994660895446437724160 7255838940276452445671585344389120 -143158445737760337034910518285959168 7919704491424519672872096719962112 7641924126892212776387334444679168 -5156321391187428119643193341902848 1811969244330144369137623626678272 3332288963921876078497496542740480 -520993293438792489291674541648510976 2967960256474560803152222337630208 3032073522253756941107848925937664 -377760930253885779309210175079972864 8378390098154692414231539781468160 8672659635985248046608506987479040 -960521490954305445887111946523639808 4495394987611637805222614414655488 8123565800651474606926359921950720 -202189483548580374203020224128614400 4675717333851792221137008926392320 7812295914816796911543297771569152 -346489322892667196574634840382504960 4528384745853486910369720086560768 8778434771168773534750270874976256 -685367103494300131627731592316715008 1662355302852696765829033653960704 8312890467155598742683270630080512 -363686214430211056897557356475318272 1825047825156530689564829508698112 8911589459237741735022089428008960 -116518899945417225589942082164752384 9433538459038091190761028163993600 4624625807037229206047126791913472 -583865611863189088479290799670951936 7380945549833637907882914770583552 2351818334430992908630449083908096 -43241599800466357637307700455931904 6061248722847409006514674776145920 1880201606624485053287530183524352 -788628995780390085551106817326579712 1284102737849915869567872491585536 536732181436478628026671190507520 -759264547166054354451357646930837504 1611579722872239619336443892072448 3408962414897855883655559577075712 -708401425210987722502797661290102784 1266813159224108856182687894863872 3477741511671665375294622443503616 -15988936183089596861689189225201664 8465669149832780302635366661226496 1027181248440262399329469009494016 -977250440766870348855883709106094080 9234992312790991654751298614460416 2820198553687764008097915103870976 -929638700912279198682660628238172160 1893980557252018137932893643603968 242975588244998693024186274676736 -80243360721596878123580477684056064 8187323421304335780562959824060416 2082899444975071052867195832893440 -983114055955129968784764011538284544 217599235277514164464924101705728 8251650670400834394970963436371968 -706954754318873078346441163163041792 3346602402291612518396088215928832 6637170258733267562687197666607104 -110740758280009469331433750584623104 2036732140307814244532860703735808 9186065881387064112524209537679360 -710663903943837297114564781295009792 1593156049863006475996721936596992 2643838469620343280588673307901952 -18692897140143109816621254978830336 3970559842215988330552989786832896 21263399740649944024661601812480 -503277385238194079112377762607792128 3830495397525232037679739401404416 1723054187644302182198157131120640 -59147978142151272456046746252869632 4115695781515004379689341440491520 1108628313391558126238650041630720 -971460015845605753726536575411552256 9285226798175802970740427182833664 814304243976863711649293787987968 -439739314604095271036141681707581440 1877701979357041551174448042737664 4875822550752178494230399652200448 -865579508844447390085128499555729408 7330849766729215409845595547893760 2887911091264969454582088436023296 -427426146519048802140088886615867392 3071175118595108281436564233388032 7103273883204642559722531732848640 -830370540388245358331879647594151936 306996830019454076664884926349312 7034841149005154990244673013940224 -436090685687138540863893237613461504 1662766827371793689867731907641344 3517784105222217350468168566439936 -110698058553879286764678209653964800 4816373412051242508130224678371328 8816474669809052416741802734780416 -665954789092313455582326350076182528 8458189790946848290227124625735680 7381583345848857564910698857758720 -309026527412679054027221279426215936 576027786822253022922643957874688 3510802988112936982148523575214080 -894072064482664445696636322934947840 9099486698887158798188327993344 9918105612868120133223937640235008 -223568820445741946334872510046142464 1460037211658516521514506215489536 5432323822617100140945929012248576 -388570013051702995242721566533877760 5326579899876560421163734694625280 3611817122927580380271197714120704 -148648444709347733150731953200168960 256752027491968956632237451771904 4163350203800645508879274163044352 -557666421606521186357634767693807616 9543476375595254206706319957688320 5242811347215469417324043523063808 -45183963613027824961637859301785600 5406042041371249548173342664556544 1893493734829745349813619969228800 -406829895640343470719245112785764352 5012807467083151165191967173771264 7305976718136866228846969361530880 -297168481057628083039167549875945472 5142910190462312640366517931737088 6371420793996740585377924269473792 -484386103324243404176179472185163776 1999491908600143673308012611633152 5277827957653071022099866429947904 -642353652148372392009083933046079488 4566368809594968760704815010414592 7203318942975187992535831385473024 -150404288030850976073572917648031744 7524607447238623471601150645501952 1886193938484169287817987459383296 -271054604532726528831584609803173888 8401250410971131290324126620712960 1498852173246057884642691969449984 -68804676046750987968742066399215616 1714491546512613195631774931091456 6633772844787546108750474250289152 -586950487705663566661867401579069440 1125733168577366115667982090764288 7048126628759431474641332682620928 -480978579477685428397184287212830720 5040590325758246056925719395565568 7929031603531980610254671081111552 -586576824873798565529674723564191744 9627007765540607857780471506141184 4901467352604258679872725161345024 -142409684538424893241213798209028096 5666111578163386537857544393588736 9405534416040648355021527225204736 -618677572579666235248608544380944384 3297849192090196112014719194234880 1662525860722275026919313861771264 -666189510690228536703797220572397568 3414312236542544387259068948938752 6224212404528275128190144348160 -669474538104853698167099883100569600 1123341589806218230619906752118784 6068135785003779876417153640955904 -735419715182828085518942224668164096 9124303481414805681226281136422912 6995609107502003104015971245883392 -466349610634803188938044191881035776 4664195118904204670506867508641792 7036172680184389969409114537721856 -9348452672560933152569670984794112 8782495335719662322220777816981504 6363129965088388227084181835874304 -82191505172010446591544402997411840 2417671412393819950131717165023232 3961584377907159107620213947891712 -388377418865629353371528939505188864 9676022022518619022387873570619392 9960144811692843371805012876328960 -512430165141460427460432799475957760 2808387008369117531179293727522816 145652457538019166085436925804544 -543729634884164658694748190489444352 8585844950307896041482029251952640 9363390240363284405006261293154304 -941308223981197008236069404519956480 3863758572157396564672514969567232 4790231416827023089756988088778752 -185178987066427294239215741021716480 2988586291636792837006460656287744 7027732102771249708479682229305344 -482548687623780403692252842015326208 1904749571678261346700574194663424 9962155135837566380821402062159872 -217395933612497605562758977835499520 9638919013249027211899789109100544 7607316913328579282424722205179904 -945705346345589447024887968493993984 8674626933835734752855923888226304 2559899687569700308689860652171264 -206168352050856019616330262532587520 3756413536461203770842906131169280 8937851009852360316262758194610176 -914177347395894318841229708472877056 6936026283176976272581517748731904 1636581368310709122588961679605760 -13305236366259616521653442054193152 1613648446947529345641021771350016 7925055719185651390282626660040704 -781336201439695224803965474464333824 589626880161932310509520777379840 714312033396981722492699144093696 -942240846077059926169059147359715328 6863563361777675035653627040497664 9702526133188298290241661338386432 -466851656042195579523144326091636736 8889126508422392890859972393435136 3470909016436163376809575150780416 -827843022802803075151104060124299264 1847998593147459345790144484474880 2953128807814855811422175025430528 -502335885851613088317978549707341824 9474579250819741037534100641021952 2606084521146118202560998210011136 -378720762361143056834774728869675008 461235585622568710997950983045120 7220119012718712719258002437177344 -603560136344885386942773416532377600 1946125816344151332809302626795520 5135436425362037178176163540893696 -250216382297362227506519622771802112 6537856078148633920239243332943872 3040355186829936963856689302339584 -913454830240901186510920759195467776 1725614342487441214824915551649792 872116272405923738342107350302720 -209740689907940089477991637113110528 4629549662315367609767325947920384 3252537634851259601150845156065280 -801288002201373271196748419744923648 4892132933637549836936760640143360 8052532755855315139547600089251840 -527836380329720402847040692889321472 8656810955767680288884807599915008 9923680459553882802232085016739840 -816025100614905792118340673140162560 387910236215633030082540515360768 725533222342099798461937990238208 -759721356393641529119470105820921856 5860564935797042000282889270329344 9282413752321080680288802775760896 -498728275918537313792300527535521792 2704339331173557881098294205087744 6001869576906663592329881518604288 -349367537644967668792958765928284160 6910857876093682884045346768420864 8609678413722631524814368043696128 -381157263177697801801749294162640896 1291598076733435907136716755959808 8559219168968330236682361404129280 -515653968722783218858510425559924736 4949819023896810793664095690162176 1355440898016596688276970792812544 -610120911325176862190383721084878848 9521583610434218387049584181379072 317444796623967104078970510901248 -802795939867166814337750710890790912 9394706125150370958713149588504576 1703348513801725135161652796194816 -576739355520582304854630552391647232 6706510705309247495082412278284288 1655678856018273544936913448730624 -738573741057376717628611531838062592 9845032271834475885073116767977472 1353517648841357760607934243405824 -530630531789510825658500761390153728 5679219973025340906061669926436864 6034031832925511599300270069121024 -492069608278128429483222106531430400 7530536116914523737722905742540800 4174252051892801520915360147046400 -776310085552920596159211553796653056 5453007485582418605479333531222016 6991898889039287118527966639816704 -891691741117070134332692275503562752 5527076567273791229307630334771200 9064817536485227953009401251495936 -42044854063858448832548964879302656 2277081357254559995898258006212608 3700386443319039231944592094920704 -268932275142578692390376214775201792 1969246436094023348924795938930688 7585200994413244944481285690097664 -899331714558659032955936696113823744 1942110037259260953666720232374272 6927291622803860654381757146071040 -631766043105565430297721656840290304 1927616164472313580261165854883840 5917731844485369376510759325925376 -584796574526731671291008951825465344 8427847276331474669102059986354176 7213907344852361629059019758895104 -297524054385584492605060189482123264 6857338245212974565467126916710400 7827780315158835707030965957165056 -376482363401535321073816693226078208 8040169243035887113437484798705664 9121809592176362100874541929594880 -585233714248437234086017967270658048 7184627673039536585660572842852352 1225080119673797605050352500998144 -274307124361761115197739340211945472 7503925317766827657455957331410944 2848575638687012699336156217606144 -266677186944442021731938565810552832 9051305854304085109486158744649728 4165562714277683241979397703467008 -501616354628664362846460504541495296 7674788217136471518258579569115136 2593587588218192956574681782026240 -74674238563967390826314916192845824 9803312576576524812672179858571264 484591366371914890030035159220224 -757070548925270232386441918585765888 5432406627034262430202357753053184 3929067328720155907778928711827456 -250054548859124926919221851421933568 8934329984880715980944072161361920 7201915939193448349015696306339840 -735016072168893052074849097354313728 6782631330721439391007668223082496 3184930445652478038598127099838464 -84102337796191208967211496933163008 4134283410041001281061482475290624 6328957470860339537534804809482240 -733242423045554304985302032002842624 2110986232477658245738516520632320 2537591692256949443935236289200128 -488780076740302919710513073383014400 3017480857343034048291269081300992 7020066333395229693480243786940416 -528745494806370963265366241124024320 2981511239398644022665638253166592 9751311614998651952091624281997312 -652539841948767073091005701913837568 2369722551040472430544437473443840 8154533321147973742780086097018880 -957050466902518984023880078460977152 5824922218870808012907847459274752 4171691298397427488567825038049280 -778927351832881254286449569668530176 5820536692053596879996756590329856 1013627177006259762762220031705088 -964248319870369605954542305024147456 1047576683246228862997643019681792 4939868881600986595853530654834688 -215993690734346347934488710856310784 5567896497108289377748415823216640 9988737832575074837746043045543936 -519110114784360031271063923537739776 5204887844782211543887906487664640 9822123650551905937601811766575104 -280438595333158416232106412610682880 3863015421658929317423853948895232 3634133736123263325593195002200064 -210599877444972306972135262433312768 6023125292156455359024687831056384 6826081948503683404448325171150848 -842924754348204620853041167209594880 5316566324127606733794057035710464 6330964359544651402799364716888064 -363395429472037017551080348872343552 4103544641741072006713509110874112 4080461043136642688594875682652160 -888596900095714201316185146983972864 5072690801641524818356681421357056 6923749922105317653670142559649792 -278902271287305842655389480613052416 3686739388463718582064360267448320 7086316969805481712664546849587200 -53296484733722679117421212724101120 7934545327042224890403452469903360 6142051498493269955909475553509376 -614242595215091098772331420937355264 9611879331095902808805985019232256 7348004882946841254087521204174848 -841216484924053949053708624675733504 6483133402423996884283428333158400 1752033455077981977175233308655616 -730076126030246841867912461783400448 3037123160696912543959485220126720 861383060297778967737134577876992 -500047383136060548561250276492705792 4278793310472430967020980231208960 5383186947762271331965539606069248 -361230037368015174167305364543897600 4456434419090354584410669935755264 2326189644610191230736190895292416 -887037652555099960224887489903460352 7020551459610174196535151143419904 1350425233650519458899518185013248 -469426014039612299121388809143451648 1431628218867086524698308200366080 7783953755602177891178563361570816 -543328499343825336337693104689643520 6130953711762097944077030236618752 6794822251670710468306796292341760 -748885245150640200817275149268025344 4142086068718458394304609093943296 4030107415328769610075607926833152 -563664158142851600864130592839565312 9753834624371681567976171465867264 4042614591673495619744330852335616 -382867713128058212041687637772206080 5301161271219442085229816142888960 69833317193800625969379542040576 -410417885763256685918145017265782784 4405520124619856019240656782229504 3630551626365246146644598230876160 -503701775360692410275818831758753792 710301518013521542984153589350400 8906069391337239057779450829602816 -801785546550508959897784586797580288 1520683586500924295354986023354368 5500504178521716549421545419702272 -697893126440448149784594351313125376 4772310035125139296887962746224640 5629068067983650464098288060596224 -364226167598448991715736369047273472 2247403437749938432118186586406912 5579326252112711240561041061445632 -262902570359532425266614087599521792 8990876204338407502453892806868992 4414739952649471521256857757810688 -686238783308798193327820491515232256 6213558901005220779612577493680128 7792861502091702309491868098887680 -335382631396236979101015669026586624 4580549036668185518548315013120000 9620297013096664082013031938129920 -358926206878947716292524247902846976 8874833190173075843178133834432512 4471324616235316348297337328631808 -383802833342426492231403214355824640 1880189346073367231003672111480832 4494212320694696035834726814056448 -503110306360968215683395574145482752 5341356166096899912636318307319808 3082240563043883724081459034587136 -115648196833065085994478380326584320 7175885868520976678970944131170304 6797425159583467837941583569747968 -426646192423684631601996270143537152 784498574927688389329365174845440 193925539710326040306390700916736 -574441254753903577072132113603493888 2634275066673999108843784047165440 5737562838819392764836479754043392 -155716626471921131144164493817282560 471846829260913714044347873230848 621297765324949807973466233634816 -216118129995736449804558099646775296 7835801586866059686858746847297536 4505131736085154643411804352413696 -882130309542824327919343011954163712 1533863429390093611497793658028032 3971836402820242588739769479462912 -640190289669369575619154419388514304 3912955277634524156473996635799552 6354303363593639841875188869234688 -467456059897735982598636351889866752 8340065070626422041792581925339136 6963919152227277242093769962029056 -674996048639832779681842313545383936 4527321551443834118786950933512192 3015924169089035285825852916367360 -146435943831579780280777476176609280 6237722872925558377395442396692480 1179983885851760678461015054090240 -216525208725021011200864014737342464 5558505994593456406733586998231040 4214554261528216477012411897872384 -497695251089213229146468103623802880 3011763025614907015593269810692096 1096345801323561608767886625603584 -325211089094254327186818019710992384 4080547933869444424915277188169728 3836121367962424923516485360418816 -918812040959224826285312966941212672 4707918740109426705455901363404800 8937972147886860985891672180129792 -738374082513844317389306763459690496 181344847605274706001265344643072 1679312759648685726489460688814080 -999063104577670180939546772453195776 2623598495324659958774364236677120 8900085479309949018207347703545856 -140860579137694869192524951537582080 6797921095739119139106332281405440 3320472999150950797864836161077248 -776373687123880150698168238922006528 3916956822079735669506246784843776 3452264624274908958167498141728768 -991546562870046775004747662377353216 9367978934452266933509713869930496 1192147834230252483287619351871488 -647827596151213197898109844285554688 9266594503851859586784548525965312 9804714281700222873246876462743552 -764455044915162636378044495361474560 8676381814146755977989428617412608 3237540261086856338602395684569088 -177613342840136880404836225065680896 8966825851728933854241483737006080 4932546618072433976803882923196416 -410060436776415607230509640855846912 9087474140237270259763637829763072 9400872952295318772078506244308992 -768009679250950527853233166929100800 2844240053578828255295068490956800 8244523419827248855018510676393984 -572380118371779202258220989609410560 4954928261179200288494404618944512 3966947721976066140462275125837824 -534942573513682694061001449356132352 9713975418818144428440037764366336 3990923990853097858997926804586496 -848176789687835312494051328285212672 5829035723204495489976179561070592 6900055824035849010023609128714240 -628814568620884978974268876432343040 1205619412860856053358462114988032 4685732509111113079612689956732928 -758555675197127585398599781470699520 9065185938013125730938507363352576 3901193107656988325340873788227584 -416179400755501175652173040591044608 8881466191641099925292310197174272 2925460788726183662873622930784256 -556445209343927512055673954674671616 3459635113386484769376559519760384 26111042193002098284504079663104 -366240722430603750299302206856232960 7193348850981777259791295908413440 7213342465945231936658891224383488 -842512237878627024927584031464226816 2141805863390505128079331162062848 5007621300102903137303321198460928 -334315427433903699672484077602078720 128890302339670001741178070892544 703345117004599969392771171614720 -746060971352807150037977332564623360 3771098589193422395087531420942336 2786332963233902852510440461697024 -842431767187868243526776277803466752 4129742169407563099260301810335744 8249916161911975835076992293666816 -117603764023474148796150118061441024 9575709982944352877122889994731520 891159796501465911460430994210816 -543973830012346492094086465923842048 9897144873978036570166113425424384 1500895998588504799362491315388416 -187741749127785687880124643451863040 8422015441557051372375240077213696 8208893605150121398580071813349376 -421132428816079164343774787313598464 2368378093036840051104876941279232 2252606367616693559297419520245760 -491427617639500497737707338430676992 6862155758963584424707647824986112 5961149085394555626532605163208704 -246544232121414678484974020302209024 6871102095428800677731364279156736 4416112290437467092546833157718016 -924468411237795534728208384851443712 4844347858982333563882185588473856 8031705294278596932184164318314496 -198498481243007164177471155854114816 9320318333542585471507542182985728 1222091037331265753879067997765632 -36797984572609747850108645987581952 7720607378534768453213090725494784 1641943759067864512248631607164928 -325995318666220627458655691709874176 6005332720769277878163552646201344 5279094792057860838624345179815936 -629168986585169529869678773744435200 6836767874526705553065038254702592 7859316375701115134207391002787840 -974667942494252955835361639853457408 8894943430074206007450713530040320 9320568533593534573245622191652864 -647918469993996645436151983583002624 3074220652959135435924078715731968 4491421462693504883391862570745856 -565866279488918688730342659796762624 3746195398085476279207441494704128 8422044831863844385215409108811776 -88320711741903319886184324964286464 4201856823213240626366778710163456 3072219121620801013494574703706112 -220134156053174417694945610571972608 2724777144470947079671769359974400 2423560684629818149844183603478528 -815461281444918717703041610617454592 7134103536512664678885047786274816 2780615737867036024527212377014272 -350464631768605853072901474709667840 8337532235304553864221155416604672 3995895081617564629861394401984512 -777837038669565060408954463671287808 7341862078001268205593682386092032 8470639675677541096624091482292224 -117119362781632252680443901820010496 6318443412126376885165901100351488 5864960707635256260272087931813888 -627554519890496122352119673918586880 3430102592003630119532522723344384 4579398557028860176896193464369152 -710229958100717516527142895905406976 4220909563843948438621371209089024 9550723554533230418850974401560576 -415309383133331126552906137082003456 4175432944219929621834801883381760 1014703376466806211372385950498816 -925580369856541835450584975213068288 6540467610049147941421953648164864 5894575457754129299667976911323136 -997656116959299000188317650317737984 3013563264020658983844940968099840 3554551520416640961986366432870400 -548688729274543594114192766893293568 5915708604277686313588332609667072 1254239952110166299953897347743744 -323592787656129678718368128388038656 8014006013269887912007503144026112 4025829098863528422211580745220096 -773681726795678261314307251035439104 1215273419881644422785809256546304 2432714765876277461461924518559744 -956159194572997840681151806067179520 1503486361964084422897377187201024 5015658060613881773432509722263552 -903084405516205179525224026431553536 5612232050074485743614706845745152 5697936227629360621493245381181440 -462757969179848197251996940098338816 870491101914165233757380163928064 1262743097204408376517212655058944 -191772323002844276595130883177971712 9123477010730051330062728415936512 9783078975903006703212913091411968 -864586805393724291853759676139175936 9331524435889848512798020679499776 7570733283680456343971736147984384 -909197437186116071401790271127552000 3022857964776462654721819542552576 6744202509831144783606638465515520 -302557214539633195643574043780579328 9445838282046037425895608965660672 353169309400205391841670559956992 -906550849224063962720501858247376896 3072084241744655192397591301062656 957821544463478463152455851966464 -13743663337711029793099904284884992 8705648892271823554223575069097984 8198877504206752195865978725203968 -399587545193144950676758737979441152 8634282539102817848618416127082496 9340609081586796871459623550320640 -538415124196907318006856111808839680 4139277158329954407290228055212032 6253626906005329104345406583603200 -676124173718278509148891926524592128 8235576813189824471765928560820224 972640373411923178672479816122368 -215967210068319104890717808889954304 8997373885335245928880942039957504 7987641727010982481478758866878464 -486420297446873283701850901393178624 8253457724472000899916830158618624 5238038290450833402762545349001216 -23132562809459893044792131625943040 4034818770184332347619581181820928 7096079628631412321344704240156672 -998259546102569294684031825592975360 6747840228809719539040931115171840 8327297860572881434322648258576384 -676065893646775216894953442240364544 6379213172316465779374593253834752 9500865360925735620425170070536192 -789570662933143305106526725247860736 491434083657328267058643772375040 5380678097854836178583757738999808 -483913760831671349427071171117973504 5967667813644073585006838315745280 1538826064985435954082676505313280 -586102310905171152224480830733418496 3411233142672974587805098940825600 1374307272651184308307363033513984 -983778045986776898464128891774566400 5105992495575924748644673629716480 2112140232064704685527097006882816 -817062141753891180471514397304422400 7053114821651871290038636653838336 5483447267985284978516987194900480 -277998946643338322656724909232750592 1870529281700791664982469619220480 5440606325337607565094969413730304 -601388976327981480403787570265194496 4244041609053026187529747217514496 9937809160669769289278774925328384 -592321031232837110550070587509702656 2838119398097646564188057621233664 4241791758107755311066113707606016 -380521854747681129238007933936074752 3220239973873917713490956727091200 9339783369215670148626787195682816 -258102171194151796495652698107936768 5725350499091658982992903185367040 7824429935596492305023029074722816 -384820678379159356959084017696636928 792494534934733021926202997211136 1861689478708813524072010103128064 -888655119751987435657882218323247104 4614551973884786965471133907812352 7563852119214475718597530680819712 -21329062630117517897626275796746240 2879900087549836243084101648646144 5245586914463442934383390452875264 -12301824591250456482728742148374528 4930870440444882301571083658067968 5934010453060462844740151858429952 -42818915420545105404875776045613056 2672133809368380593218757729452032 3397524038958090087130850584952832 -968404356484416294837197496523948032 7848282493698229327995148968132608 1333350473433926579112121760481280 -732967973853515429692995973857411072 3883789522932471897745465041485824 2700288193418022048564551270531072 -13934159348189152910392590392623104 2001961511571830947152551494025216 6729600071174577785616050700681216 -529381415280122806837874192105340928 9283916797734059722713635800219648 8708699891440229782407727540076544 -984081722860390469800301321311485952 5894723797090058964817797720309760 2654328592090452918062707585843200 -60898920607164587029580082137006080 5192948196863692849023060451262464 4626575236737088881514491848687616 -169295487594187452075652430839152640 6533725921439251963195488739524608 6520686664326899136387289458933760 -930828726873927241866101042947555328 6360028523703892931629255076347904 997735729905222306788878342684672 -953099246240104387008429856376487936 2282475262911224782018121419456512 7992540946019461287079426805202944 -393418816825534398587459362667626496 6291424335182683842701632276004864 4837396130731632683428433971118080 -591181104116991044590693955984687104 7993012218277745367725022830919680 6746606580936477399393624563646464 -316428001863188447893372669135945728 2481919472113637853364669535748096 944425340514335074207259443593216 -394441078275097854667237494672588800 2085957949053263072213757239230464 1861896776790189583021955358916608 -556702173856565107647699648568623104 1893780331194413817009960397045760 1624829793357078268994396759261184 -41909288900159549221852337296900096 116386065604908018799038951325696 3831940406824399159785516146098176 -58899531302367623731102207663144960 1565937452972342284427364826873856 2935566070761289049809760223756288 -658090642120814636471262033028841472 3280495332709695351199396779786240 5811882026917166382510709055422464 -257507767787718762241790653847568384 2952729072571719993606244185145344 350279378341592090468329103294464 -503330518941627873147783602004557824 3661356758571033197700150443638784 2730734512156858403942273896153088 -139411655798914432498762992079339520 9818008442301863529323238090866688 8640514010819216368110864152133632 -670945688408183647597086729129951232 6858429049234782418671445276098560 3781127802646086020999474912952320 -710900547061280663311034547557105664 7744550932155407481550403954278400 2932426458473263602731888697933824 -461538776112115294426098038516744192 4842033134734959231824128064356352 6048269594157264374087779547611136 -15155103858883237303336383677464576 428143065556943631111412607090688 121540490559194642859994237632512 -87953822810081871923974903225647104 7235840830686633408560879487680512 9557770542750334272775183109455872 -364752899753726198818655375026290688 9630368764702144512592097010778112 3879570404704766623057224126169088 -589030872325248007083695708196306944 5195679976451389717146879446220800 4483827712369228923034518360686592 -975131077683777613799191006312136704 9652360349614657709451956688257024 2438958814414167783774151445053440 -844853994373525198622038856489238528 6535946578524066501953775304966144 6555539561792240373263698996756480 -923048433563456883299167534430814208 3306973646590184456330963935297536 4636831707125954984200125800251392 -171483697222032852225932945191337984 5465920363929933104192662875930624 6164666515800047043626289720197120 -880529278402735916177530831945859072 7555791775494961229943147509841920 3436519390468873708707874439430144 -136252386330576233426332581625856000 2157800150541815031717165426278400 5239735057869763146333129367617536 -498824425560392817216389706095263744 4212518796106145825126357709881344 6200038200339449894331708755410944 -366694787097714885353172423514521600 2028211493932114525491910236176384 7315511634937585851105167961751552 -992239179128640630446117346930065408 7349683972556652324037435380989952 9997817816275241579021353504210944 -630552378713698817659768187744419840 9165279014554719412163496560820224 1271437436057774218082716926083072 -737778935352134468486603294403198976 2804113132879033298531982327676928 5803051432751328963972900048601088 -783209517965917362385349800892563456 3656990828396092013814107535835136 4682795457733597094030152042545152 -324488002384979870765165146040958976 8847609120769008237609272693751808 9194041532536379035684971263033344 -110209472466072215586835824486907904 8419685484864279873578967515529216 3624407745387458829000975014952960 -992452111895409059496625145487818752 1321218038350744545538583094624256 5487167060695095676208338350112768 -162501295885256906048469645645578240 6267858861587034785027703514857472 3023240510351903908704949672869888 -635618746048493952339360437264973824 8688467170352589843424175387049984 6606998671909055029366609581965312 -451221707912499939253087504357654528 8625517413838906744020720842440704 8815901790141690788931539304448000 -230004862192671847517922769191829504 4133390968499051053651044566302720 2842603212030948630524553993388032 -976565595665845938929831313202479104 4640796588137652872302593759510528 1519066389141694859581978767785984 -660408320832346711052778825691693056 6346248905354868185170235780759552 9224519347704259353856049881808896 -956564370653194445578297122830155776 9330655714090750575079981299269632 5934684915561607691612052812464128 -975120337459145278739343178167484416 1523211732198306691905012472217600 3883001645275824404971172535468032 -734229972458057253172928761464619008 7038763189407511869118643173326848 4006653697466237518612706050965504 -158032282313776831485948900954603520 1643816173134343328220258907455488 2753196420672519695957631231328256 -443186665725568412435589297661280256 3598544453226075267432516836917248 948563843330240635806453067677696 -893162850630158704135414414340784128 5508910458034363766312662076489728 3165693457513540693837304077221888 -748385697861753024914948259124871168 3496377969089531802783604419854336 7107455370873231060941797687558144 -555189339634552432803791817781805056 1723627191636328511141138852216832 461127771961750846726391166140416 -228375419207001184052866963612893184 4766588757175162621147548112388096 6325715274880395817706307559882752 -758995236366998577967511670662103040 3048461303059731391558550638559232 6065231183367060361501491425443840 -856104516455169489632058101131640832 7647919089800512658419216403136512 9364560878512173531183086598881280 -489397473716754366102182936090509312 3603403570288213127751220202569728 667925325102012183182661681938432 -343923044450284607031800468261044224 6153549857007703688253478895878144 8233801172664591168090351798845440 -634406397581516375168706836772683776 5814778704571938134946119233306624 2586435062885357495573080180785152 -820566425586827326499719245002178560 1295976305848636711541183013191680 520143077017806283079070450188288 -625281033486050317321961608063221760 8632329271736649281274019493969920 9619085873847953015490145169702912 -695271369067193297856117457484251136 5746713487657853650538230674620416 3523603883600884416809570836414464 -459516762194671137823305250203762688 9127136849941112357004920829771776 4452100782047228231035145422897152 -642743446169710723430809441656635392 8108510743828577739350033561550848 869723992180754159828025733021696 -118089550655589979344519667902316544 28307451400200593042682664714240 4518287565932187348190612001128448 -520789568135330940367706969920765952 2955455484051997460839907379380224 3576834564793555135104093161259008 -486387602919733924067634946422865920 2180572820416649978830312961998848 1338821170649933691800802409054208 -352228812576756938749984767320522752 1123156543991018205189385972875264 5581883456584447639084238534344704 -896316283490361934169182071993401344 9122840424384939364628647416692736 9734419978711691501614829337051136 -639877013059690119252109065575202816 8986262754311713450086722086895616 8770891278823901990793740608864256 -782291982881873080791400826192003072 9677258749744544154963752242905088 4594784837625228178405399535288320 -108121767547291246750119022091567104 5563396468341923406955315223068672 3003947185358898240598661337710592 -956085311305929409327521092478173184 557601620902921303262145586135040 7703134597752830592037205753987072 -367729296227972688627743471834234880 9091607451473416731039769955401728 7746745086340399262229377249705984 -715460437395811290892176907642601472 2753109179936814668024898832564224 821684325650012559689370480672768 -550083226605324817971300256825999360 8945005282147304417406569557262336 3625853786224875580423677677666304 -80406108761809986186649837410189312 508386525401217295041599004213248 396430993102146016957001791176704 -417099146725838467370161554002542592 4852268711427712418940086902587392 2654241732037767486752500708540416 -486111048957016893258312282795933696 3183840513507525456718538070818816 2169549453606973988773163622727680 -305595306405611815845181059053387776 8267846080061893030812719427616768 9784804832776401565620092031467520 -58124635399507530029623055782772736 1382965712489490453636608503578624 5055061766698947106597489151574016 -145651068179668985740464731667300352 8568438660808894817134161462034432 3673179367136328938612957273653248 -590732990613911843134052310980755456 787386725291663595368898730393600 1755814374015721763949156673519616 -311426885566710768578159901063249920 4437270329589042923532169580118016 1216406537982228962463259841003520 -990958344954518436076232427742167040 5859669023457950107570015330893824 5839537822239665043530661639487488 -48397513098317287632064605279223808 3988211537735465115513299323060224 7441203610391489930350983796228096 -175134513565218256283246170938015744 587654010048666412913358591229952 3251907999257667966907649462632448 -182958748151180383848326275249733632 289255274925307883930542653046784 6767922954191455121636880166158336 -193209426059239149869738772939145216 2351422482952334427071990353362944 1464516210038466895222687548833792 -217843131293856800942439750713737216 6865495962574183091112612972199936 1777011543487406554793764590714880 -820199220907909748662403094582132736 9873000937690811292519133494640640 8184797420118348149813318676119552 -877545320707337464874674198623027200 9257846184520209002179032235638784 5163403193908094850034460497281024 -265911086286621706339937847234002944 8717938342881688378620362048405504 3265501176436488982226030026555392 -849651350866446725577965444788125696 5914749837219022125317514191699968 2840720463955532796123083513528320 -13640803275986060306550815329353728 4186907655113182750258134341648384 2305680245147070589504137675669504 -115224002542010472804852398536261632 4070167827879366877352173772996608 531465354550462211990853320179712 -864644250919054036298081377452032000 1399968783738564188213880742215680 859141592399961698471486628560896 -522626492187179754804404542284759040 2695777147503172375853944233000960 960612958227136862501792716423168 -471925232345493555399615537897013248 1507965326611505773759524608409600 1230913101153895493452229932744704 -532845584461255023295385902390444032 4545928787373540044935478317678592 5977134152958285732046450529927168 -824356693827693945943257519101050880 7245226723407678065780782698332160 3107851486067633701694440449507328 -322600789785773170490107573924003840 4127548930145181739989906791333888 1844651249892043498396554625024000 -198637364196279104044400718987132928 2756063987349944142828503587356672 2017945854554463311872842862166016 -863130703606783750541069710543290368 4755523406370936439316305428873216 8588917187070493041176509161668608 -45324413987979463335779550548197376 349870243930806040198861144719360 4612293052251893590737002761814016 -906987855535015193224349195966611456 3000034786668694696080857855164416 4056614385777713239672886898196480 -929341316720252899498888555923505152 4221851383779422606113899234197504 1304132514291612735561033544892416 -697459128301861270086510617064112128 77740820690206995281712252977152 8847805398649489606188129138507776 -237937213159118397335097362167627776 2123793645831110517303171402956800 9716722776197529844216999780024320 -510746517444757582653786964998750208 2980084621728252798070866202066944 5322044685914792842715838600445952 -763412263318694293469012535652909056 248120360725692402574478230421504 1053346857553133687007718722764800 -702932823102723794925446009649627136 1050799947252979992511840025313280 7670994944003065224847898317946880 -708966449119846889026334797093404672 1349332770206326502464587462344704 461075813118406378678996070039552 -529433958424282243248350134987128832 8584868740275593094111809115258880 4859704787661050062555411753467904 -986256930622106489482652082738561024 15132226013845948610299748679680 9586435842095081730139596301271040 -101250859995510300937777429857959936 3700346752735837070599109189042176 400943431319586677541887497207808 -663536928318831775199138596490575872 3504158384658050603669260186157056 2563843596502800474279326255153152 -872094038272309454059393377997160448 1875736548136715987274180132339712 9387273045386604393581826218655744 -29285313488535762175191087595913216 9724339208621581876356633426132992 8211483472675253148484974814429184 -792392381872056446246807400802680832 6807096743059797244647816269135872 7559207310897253333465771475468288 -680818689934723786258515653556174848 8341509857299763579484961503182848 3997679429013664193686455627808768 -217285578280448868441271295216189440 436374264945946368877040081305600 9418362832152813501187874485174272 -572061868680217610031835611423309824 8638683232348583356932186777321472 6684433018657676495243062089351168 -176750351079996176984496838105104384 412935870120948851821294531903488 2951213599237204430602490458669056 -719846119475219938216211300013309952 1106495251701967276487343498854400 1937411306771571123606113614823424 -146146948651536798814879480941641728 90307434764560509157711854698496 5205931886197045209489353780232192 -543997250675737589934532616563720192 3911963426846099129186423685513216 3496314182581083997933312405405696 -906217428485129487727716775506214912 9652369963699109186016024931074048 8694283973784565135705757559291904 -957263894077909276601167339828805632 8043144250400133447684317113221120 5111942887935026601768033709981696 -64737720737349094274347928517607424 9255056852303512412826623182635008 8550914105420297282896029814882304 -2552035202231830873950084287954944 4433465623287405115873858831777792 6456871273075819956120086814654464 -66994651009084032604490880966983680 1069407903107172181102082725511168 4515776546938067712591433379610624 -478566876434773255113734276142596096 1743575431638791104001688452726784 4629254561630993263845744800956416 -513031011055603870667377506672181248 2249288380935542278358717083680768 6076573094326929709502452362903552 -790625480893884783129492088892162048 1691621816058059806340318087872512 4113504048118441507172049978654720 -89491119578328629875157896651603968 6551889055731987652130636900073472 1893344508198907985738447772975104 -147131018333245617422704651202985984 5991531278383477078895281752244224 9645126023775207442488377678495744 -398350435907691040004681303018438656 3457476993302657038278654007705600 4200827897628164919595198813569024 -586429994251566392873726376230780928 4275535722385696298922823659814912 8317074736376957366506383093006336 -616036475873118947647040438067527680 1382965764692484045458351453110272 9524218464528299436957645940981760 -190757368052439662508764022892920832 2653949153495395938339495706886144 8348298222581109113033887554994176 -872073224458369248448881629230792704 7923187657106393908793722844217344 5558746534461786163987910534103040 -138302309854570458591678054315065344 5284070814991319662945980064464896 8569052669460216165047182014021632 -545903680687125779420972932665442304 8207683442184250481182391060660224 3801703357203088054039502120812544 -241312989895667570588539403357913088 1119176927988568775688368714416128 1282987968332352942008706109800448 -696722054888965222512599316266221568 6693418887648900320942380791365632 6457061455215371753409770327900160 -201665400717935172855891233337245696 8369786765581671112547081054584832 9637064803522226348272614570459136 -991954593766345089366208961144946688 9669206629411090644897414955139072 9469770835384459569581441926823936 -472637497249652806826426726780764160 7105248398926443856632355710042112 92803588182451069284399439675392 -694544153947432207915339576416141312 6535076966377648435704921405259776 3682315839642930273928173617938432 -387398311225772384979955868919398400 3595281529316239002158971932901376 5144021630373664700446052364320768 -77339673905761687953953116745891840 973574619368352731181898620993536 3785419794936126686692274738298880 -958446521224821789220996690095374336 1423988045177304627824351552471040 7563220606229285307407728367370240 -392280915964827596676841210216710144 9916990789699351385905445333893120 1555456210848345635142941576003584 -94776453499474571783558397717118976 1813111328712364944018026327441408 4226866774920878699196270744961024 -511008964627940997941089751988699136 4457940394956057878758703061008384 3425311931155749192287407495446528 -92397922527342251920796029487677440 4166687682718080996351419420246016 576660391257713445512178470748160 -759839948616738627794022067091800064 5143878309142246532888038035423232 6063726197598051892169603505192960 -763833525192915991202511519890800640 2527051736984425679353671254540288 8601491530128672554480899601727488 -165283090018599046792462244169908224 1592225531062073051933982165303296 3312547741067143779758568906948608 -879269460469080611890639731003752448 2207704145891492837456743044743168 8234839779955164370848364944687104 -691079331481400500565381446037929984 4482519448128154374707469896122368 6966029373759895125549897197027328 -128844433027062646825415870009835520 984153770977831417492408075550720 1602239722329525962217077317042176 -554312008308268563533886368679723008 6646542084185053493243712020414464 9576629357219728927294455726211072 -121659457099545926882012342440165376 6736635217912725212113492135378944 9777079872871872571821118730534912 -127473179848281936449237845970780160 3441458593359836115021865223716864 2942044081389984919196213314584576 -531428279876548645913413675254808576 2485239162711143489052861242802176 1205342212611424668434255293972480 -156427293594317587624398517193146368 7746107184470979473044583909163008 4851156686677977729187705757106176 -253136467444698536027850380731744256 821925341450111952508504116297728 5509337855092647372880756617510912 -250129111326228561896638821936660480 331921611776910288152798213177344 806365478886890303674720632963072 -951102808206997623888326506634543104 4728122205976377120252965012111360 7652402325000260413058306147352576 -178955185696064943739970091204214784 7004479040799924137930399697338368 392838933070625142843243176656896 -614044035904688242860707263717310464 8186125738462997569639328088326144 5576417341534526694168008914370560 -710805793384533890782155189195374592 5000771524607570032007660362006528 1411218182552271950732573336928256 -759373406547267204749667004657434624 9243479904668833314811413520187392 6823172522156373466936077761642496 -690734187685800032835580761837928448 2224815210381456455902192155492352 282745763210954303584682691788800 -82900463631562884680886468921524224 9624351150374184863788120244486144 6558599066728565428686615541186560 -407281691605679289153265721541656576 4749742369920331513605021572792320 9041211985518534583999547012284416 -582807652319329001146376449668677632 2118546625847552519014401253048320 6389082274023499398342075507277824 -587170125516962993636948609943470080 4954050195467857851519658050453504 2367491320454630777519893605515264 -90561517724183623563580469170667520 3703459578137981565163881021571072 6314855584258037590175569938481152 -352136036389821503658574028153552896 8735373225984714053934245681823744 6691281925328568199971337486204928 -771116265874227997564639120533225472 5274754089095792506349129501245440 4957400384688689437603699110182912 -835517804127168342736071664980721664 97632309423050897931581687595008 1190313293267395127954665405153280 -494812729730095749810679358683086848 2860863606402148984074535163658240 9435888683147041053457109930213376 -505398050751074316628125845500723200 5155817493494633140225035607212032 9721486467527044360940618596220928 -10828454046537076617256864013352960 897154908309720787502795000381440 6850221735510839737992388668293120 -974233936380579455366276458079059968 1838950230201004150744669826842624 4568783434282650108577697564196864 -799045654712549267668013126755811328 7543608996496853894683274948640768 9731025674798765886852358849167360 -983461979581432722157899719668400128 1858145027137616129305991333281792 9280316703209776305076639543328768 -34755895076486956007009165953204224 6873237911043459215833666592702464 9581343386169663615345207216701440 -770081357876128222887068392648343552 9617135873123562503937111072178176 9308035030876644674912799539855360 -246181657771496913751463086612545536 34936372657410078296613272420352 701399607854159226749563344781312 -915693894905442334633003531326455808 6452429014907668533193075136135168 2253813520299141028163168816332800 -558332151736163082214495773110829056 3945146190221826687910097002168320 2618234847351016349318155788615680 -62740860986208256551759318421078016 8652965340055495627701297612849152 8254078932524173710668429508214784 -191702386580052452897662815650709504 7843538336046550651571616016760832 4347747897284809620286985985851392 -978318767117461023396444606421794816 7693478939018683189064369201741824 8964833762604005102579741941039104 -890672029006411306719806769476927488 8003333193651334750916961896497152 6067546291349867008017913754943488 -971968521861017349927247938601353216 162797623482139747909530413957120 9992860791331821162768503712776192 -944768202026217494800427731247955968 8886436748165977024291229646454784 2268280693739929544815340140101632 -421747637756429851384843281775984640 5416746552416970975139290941489152 998259685587952487385501511188480 -322576692377418134837775803875328000 6237912887694690611698934824828928 6489813585571152801862676589314048 -893131194150787040748910894255177728 4044079030244513704349716776484864 1750919549884234351488525500678144 -575928700947935660488258966301704192 6056549077437109043275866033881088 8591767637806093802847872078577664 -271354234271399961809464268515442688 5402413254941780508059275536367616 9479563197735146471414482956451840 -366665322489519196549410553950371840 8623957380716630498477526715727872 7494953958244102162332487142866944 -555732474261342302147855938853273600 8015313918350818709371693649887232 4211386810897383795306410824171520 -836172512624916727731338766010286080 1881913129108829811863560013217792 9762982818689185675591711247564800 -150648411543512668981671310156365824 6267713629231489394137800957231104 7702496539274430892078312019984384 -796493150422039630274356878279442432 7507843299481249829361814677225472 5490454610113153040310828387008512 -314626941072060815841376960874807296 7853233138914660825603534797930496 6120349379037918021070271755059200 -410494261628815124569400754590187520 3146093571040226154848202057056256 5417143547548890898191403683151872 -223193909629692170761788266622484480 802455923109690068241905218486272 7702625041027787563853147390607360 -581971697284395036705002221209649152 2011747572422026340014910926225408 7277921846135486411238728527773696 -586217060104794088189955227751809024 6357868010459340456004775378419712 9068221531260886911422813626695680 -427866877157565640788146067389546496 3914444410783024037226472963833856 9731628512745038069291868764504064 -734226690403906040360050414258749440 5732431806732132879536599714496512 1653345179879031555033520578494464 -181989569954782950613608774382911488 949393944473528992652005344280576 822458834439008860278560366002176 -441267275553100350306788815715434496 4190425639121285602652437379809280 5302922119894315750914312380612608 -575079346703710705413749361510187008 9120631148265364189448128157450240 4483109297889797699772976153493504 -588638805157186910770491133138042880 3401831486319355233357519524986880 6585475563888206879265083266957312 -953955772947278842369898177422688256 1029946983634571919030258046599168 1365040556085729571772504467308544 -207696545176598489962010700614205440 2442700024298241993148387473489920 8029108876603642829891262379720704 -884050529046386699418404054997401600 6260744838690173386432439266574336 7349330326094171290496031990480896 -363098787045411682597814207097339904 4459136350909951787838150002343936 611222142320631102383365482872832 -746474958323280888851160310917103616 4855342254557378512417008998416384 2040346124125484282674132767735808 -2369763502508361857887108918673408 7018096714505689928477980344975360 7269472772111664323656545390821376 -135416647522206492304965057028030464 3701715963624770561909557794177024 8851688076948672346130032025927680 -314076980859632582596389132065308672 2337270046675544952114536769388544 9222734529033005379812907211030528 -233084544586688671662755919874228224 2999510281484310966210113967226880 3838183568067383800785024747307008 -954406764581847972860181329444077568 5163147016336054577777118824890368 8452993549368430569003905833762816 -693742761428371841765643475178487808 5058734643245215847286955827003392 7859670579374274057325781155053568 -397101197332514851248052610615214080 1117790998707097724836586209673216 625648991189255683413560432525312 -492762370222833905505948489291399168 7225518043938292074983135182323712 8554834954623011903843134378868736 -293725963156876596355155331458793472 198255790443621187167267107897344 4047386339018650975609052163211264 -442762764186741063615892651883102208 7865513836555489216088139869716480 9591933845018508768987559644626944 -57763780752463977096371635694338048 6183449771351296433804391410040832 3049224974280317162748355748560896 -409756067977796978749568786959958016 1016455264964870430447113246605312 4144721567562940582470878861721600 -713714912725582923158437733188239360 3197419681724907061097327446982656 871103853348999226564990650548224 -789413502154410297970406488029528064 5858726973187626880052352551747584 947990552299742385787529108389888 -750056642269505151315462779993849856 2985494223396445973765664662355968 3753037492143365012155856003792896 -997383924353937562779951176976695296 5684469380064796772053454935818240 2835147629747474698558232498012160 -244684676861836008616571768187912192 6627604542456896690102960968957952 2916155776932531767740092093825024 -13360788902527782194836990823759872 1409493257467747697701347353690112 8739596068315501730427009815805952 -449781016249688644119777675386552320 7257216692270031827006890954457088 2276786648014645763502421527494656 -606896137331854924879626996786659328 2186513044533034895418081169899520 7079403117710816019491624400715776 -768550618171488690873581291335319552 552326418678477421771059145736192 3708555670626761138924581292081152 -693305102602652689176147596180193280 9655616447097639785819215335784448 9899526853926798873672326154551296 -280964864210028600298477572228907008 1129610837929274646834467894722560 3779063929304889670452393187213312 -453461945880762222473432145185472512 735349051129696091757469222567936 7353926144409917995926734919172096 -793449175477409859999948448202752000 4417146914214187109640538901446656 5163136054442981508972836896636928 -206140719551296016614472312414011392 310256491944124340959658280747008 759488477372507463864478072832000 -738685126462106345759369464721178624 1294206501653565509944320743964672 4056392516867606240126703872507904 -680136901001260232516671431864483840 5779995139854319283783173163450368 6010214633494420029719310715846656 -509347519970527563749991503282307072 6300540857991695184318364358017024 7723169898910928643192067987603456 -15381799737494595726037431544184832 1169677177402168541554928005414912 1838920611163558388437168150282240 -745262956893873783833850421486551040 3253553337416227112487905575043072 9549766667918580031205611101224960 -714923929298013454217451775132172288 4019343451291355702614501323964416 1782717782385908291712690079924224 -15821767750294233503339659741102080 6108598800285806563472402152423424 7191613019259586247613370230374400 -774886821524159695463217309023207424 2086278838817798052407922225315840 4551706231754752763199327895027712 -137712427596578810196232184931549184 6669079020431684824953788328574976 7301223753864945442867116653936640 -728681112050523367815195040652722176 9938378098264834841568520880259072 7473304881373336331412278473654272 -698581934945794236119931842988081152 6386055561121852935429637181276160 3921440107878274076110625880145920 -166191794892313411344212555148034048 7069012273901703359590407275020288 2432516656702363742704268925206528 -812644090249529670665427060124549120 3391360853033116796350712632049664 1019426635765757179225079361306624 -283190473694995779211931539436732416 9866582986415067531881857612251136 5196603638145351494371633725964288 -626723559407632742697236585215164416 5220238590180277528433747688423424 6146401431804359179672651579785216 -455355486431782293356030266546585600 8540730363246224006809935857844224 4880761966955740934180724872839168 -207331092550514384377303848508719104 6048204007035502541681516074762240 3044232767193910162519558960709632 -955750459171400695430101000133804032 9720146183378774100785499771764736 2775037736654509417747439771713536 -574570611271569506298019541508161536 9761764773182922952936063777112064 4159402374318125978120087102554112 -136677936566629766690701555236077568 9590042566599884390930313637789696 1157040429376694864905442741452800 -326588485433435086520273872588111872 2503545298912507764870502101811200 1832738821745420962101709814890496 -517135403177293532276000822084501504 9743731293454046413080684367183872 2853097230475186475599417516752896 -116803165870217778039925647261827072 4764789138944522074737073509629952 8812767788505587556416076986187776 -535984674225175804299751066664173568 2429018448916602426586066675826688 1537186031969860947746109490462720 -766164774105114931453622143458213888 5165606672086653324250532437557248 257610920289816119230716488712192 -903765418023913534686029827639607296 2808062660173081171908227787390976 8814699222677741917443704169168896 -727256928060031018609890611085443072 4754199978753721386343921073782784 2933502779206062611099685926993920 -842433335524355987221944954112704512 9583958359635413063029920771342336 3932364618151529507130897363632128 -447649685962771464161050076970483712 893962776915258967928009650077696 8735610922940041078564333453049856 -16508436374995390104614010389266432 5668711858079940977826746272317440 2991415262233697131191481210503168 -146067369247366020372259449109217280 2342264564039565358886089406808064 6184754399029011829008137902358528 -852560791024994511536971717132943360 406758299052141211022085977014272 2400015085557675835182676782874624 -905697400459574707629208530415779840 8180053951711039863166870640132096 6464551307771635718700804434034688 -52548932108334514993986737639784448 3032688372101817255335404180078592 3636089157158066541627751698268160 -84873959764663113220996123676639232 8003103517374917467416617564504064 8999678323120062906020863361941504 -430703599987551521399342339071148032 5112916884386675238941227881594880 337206993005509893700438762455040 -22677622035802321699160785546117120 2343405388152884707903738151436288 611926339026648835648720855891968 -548684896681227908283827646388764672 8517343489721944561623221340733440 3069870777955864951423948055117824 -318861366921575759881338466861056000 6349983233556680454828722560696320 4678132535668830993688743695613952 -302663748318396440344064162044837888 2819087061573418644427013873467392 433785878711340651119655742603264 -531228356646060175369068783851274240 4371537209222512216562783670501376 1811886674748460841480958402101248 -37670622379072978653966105877413888 1950246725838250769245841433559040 9314632428077106042745465761431552 -353559647456152802720935689150529536 3374001416733222267358262618750976 661458726118670108886725539397632 -869305027050701531763686326812016640 8463539471400607293044522599055360 9529997890707098692272340340834304 -633010495075212704764560614784761856 344280106491826888728701061562368 8980837145018229814978470660276224 -807267136724864397054148030209458176 7087146373995374186508643561635840 6424083773287957260828443141996544 -345057412064985806406697228661948416 917596046556708222282558815076352 2451720180428520940056188045754368 -917045679319927738073926695443759104 5430786276596479122867487105875968 5833799199617211356662652618145792 -139709997068097661907534302939185152 3222439718792152173630473776398336 2012570753493911535370900980367360 -452377152038221674805665084550938624 9215237632080671822517335681400832 3649091351683421289677558078504960 -896115255506728933272937233614110720 6986670068738796026577374796578816 7400331259595727742502913873805312 -493080880461340457646418004606451712 153376672942773189831999988170752 4278088424522043708669668397940736 -269445384961981860776158602240983040 1141709794785824307066360758796288 9367314003152460495835805912137728 -444388623925750771011716414428938240 6191873260450317173169421927055360 875661032538470340995616679657472 -851104694758069325183382561545519104 1615291849406670686781249746370560 8456214822420355710923047482425344 -668707102972222911627507288086937600 6970832253717339935469218239086592 6495789369461132622364958789730304 -889743041377608647959704009323839488 735538141818980327605617825939456 903557433746143424102873041993728 -199950283628085565869459133670883328 7173939163514281335357903571255296 1758714768064550136734343269187584 -280491763392010217417835711559630848 9716462130022630182490091588419584 9456410367736569233390032675405824 -274900136392709463113016171313496064 7296681262119845341632204491456512 6683781681903762001961690492567552 -459888192670054606117330979286679552 8127409265747438490177053736828928 5978929050884323615964578141175808 -196962287542965128892620908443729920 8765226982478396506039256206016512 3481144976864348878383898794393600 -406498418805933931713891215920332800 7241881808649717196233997625065472 7444950905255055211723806671372288 -53357709947028897145793488525197312 7448276310910469957387517333340160 4753678586654547366404774005047296 -271017176465657033505503090304876544 7043044064799695289330110482612224 5362210522017898397531426651111424 -269349531442233310880109456451960832 7529240805521351560444520307884032 770485729674407803301843374702592 -903586064170853477443234504174993408 5442766091029968605836309616918528 6163574959569436997762933562802176 -108383556695691809267786153113681920 5781550019785975931394861855408128 1207847712993971869192737047707648 -457649564598653162600170190450720768 8540425260085353959168518752567296 1321970565045772078146085709676544 -450444112234739948701636649918922752 3989321841702582668475431152254976 881740646575415128335527446577152 -877286958384391662893169454253867008 8113167258538652486794127209398272 1128220143849232979008154173964288 -617859958850367337561913985767309312 5910159228953497926264077192003584 9125380213510741744148303122006016 -787912190712672523405046007633805312 7598696897699748348676150965305344 7421965969793125089416453661130752 -555949074150066118312300097866563584 2426065191863258672441809323425792 9677136905599410313516993296203776 -642072215734409995544589394551767040 678770874729240949531907251503104 2702701861741539323649579441717248 -127086928893235174701295891245957120 7817261646631085893788641240547328 69686321009880137959211242881024 -157312928517026763232020199295156224 2318375847512001602812816501243904 4784203439258222489565744565583872 -780906910620966799120615469452623872 6203839877887201125634259768311808 4739898698133315066177641351479296 -464310338999616384885994037964701696 1060653477273151220073798205177856 5414062904767748614821985778663424 -688990289632737462727778802916655104 1230199196718878175730658806071296 4740777334869188339238056960720896 -803064827263248819214008668102066176 9648574561472361419096708891017216 744377921839867656730253362987008 -956689338213428818264463553626898432 5867834107590428506118766662254592 716577471291180597153686209167360 -77038564311102058405940587009146880 9755370943855930959498645631664128 6144012292292102177688581746720768 -151923336723847889866950535450460160 9827878633854966669792196234838016 4121019614580781991358477147045888 -160282860708438463108570666745462784 3288574160098333499473863922155520 4629046037013245001879079501168640 -251140112837273749402128643717595136 8720213063327898998402478969454592 6152935374028812906443528401321984 -229166138367065901523045515209474048 6212819516051390162008468101267456 9462092024172601562799348157251584 -949520809847937102856568600650579968 6805313569997076003787355986067456 4645559157336784675495987644465152 -950930333919983243171053562337689600 9170936249637892522872683494375424 182786898824013844894298568392704 -527560787423912242907061214544658432 8546159567661516025965974667657216 1052635599584783291466689728741376 -358441095916727879975080818588516352 9666297437899259468984931061858304 5030613691324039329708684085297152 -554537132320253056490592953958400000 2726214831492813003932405432582144 3506051779960365583891783846199296 -915741079129783965863259852609945600 3915564744854340302622043792211968 6496122159012443057479312566386688 -369830913009651867678410680490262528 9638818558650452142040055084482560 2275658670895026347533417345712128 -945060139588055789124813370978992128 4798952237057334114359881156788224 7863176856989528582633015874682880 -11212267763504627332124250025754624 5256631038434916843994891782455296 1042168024128347822388333193986048 -222299291445326774651193771981537280 6283296813988278504042500112515072 2429103864463701692933183100682240 -951415147219832619411979727062171648 7853005766811030360052763140816896 8849154833316080408300972348014592 -441821345160898365997044500829044736 9754593294354020352997187051847680 9353191086163742951391651774332928 -38655633957897202325538088123629568 176302583642413784730121615179776 6832496689997254323583008225886208 -381132567844854131473439798599876608 3141384394428586053029143408279552 9550186286842458439698472520122368 -847955921527464234092624945361190912 2826222305198209761874102424961024 284701749165461659025334197026816 -872330839800834921547500516024516608 6570988997960508564334423656366080 3672810893486758898451371213717504 -137548647959004569789934997895905280 5524497019943742974863135930843136 1541264817726693063675214605320192 -425131993206518656798825238224699392 1295641310425699909412371210174464 2235352886056482542490443665375232 -335080951332487823476378040170184704 9393684842613599843666883803873280 4341770805579549486870995155288064 -888144319729537006251982439248297984 7608647801361612892653271650402304 2347290428932675599131644444803072 -827240139288554057966288729570017280 1051976549109107198584056639913984 8146429926558930929096709973737472 -214245159127080834956277839520858112 2094203545795751175457000526970880 8307128503869116052187586492366848 -187871918881696236223227178585686016 3514664003640938949517191988379648 9248537840067933954075594393124864 -923270555228028054207098145352974336 1253177516014142001392973015678976 1873241111590898539407804351905792 -22879573046110445200174322745868288 5504670381541911698007468021907456 7151133739993912188042228459896832 -329831905759976717032810918063374336 2814859402241066326792411346370560 1216658061266511381176422840139776 -873165021312746927915626183367065600 1141926149740972223621130585374720 4454441075801350042557852751495168 -247015621676841153207712026944602112 9009025021108354140216394992582656 5000412391817831773266942206410752 -552734565902679816274214506981228544 2850082064304994558242603225055232 1350208085045014257154553695698944 -599159458494167032736379286958637056 3702109675248647917747291044184064 2736185238152399965503178871406592 -723670973082151964003008102770147328 139718582468506989232727617699840 2552199523596224982772239004860416 -582393786804771199229706418165645312 4347930015699697102823829417230336 4211913432965458127342432365314048 -576431412830393253602210600328364032 3902606678834930223916339905429504 2896393112328245664440515827859456 -639854071624879212203237361508679680 9810662073690824807418254185201664 871831909540585369449768368996352 -591250259669080479689911176416722944 753487965172518697866516542521344 1446222656763421299048384917667840 -569854669516657333545547641946898432 5981368746175894445909673710190592 6056602020272321603631035084439552 -312977873061148612864603847663812608 6639746972307552390936478764498944 8872306897292004236539959462330368 -960961473232338648953901393991696384 8895653053195459286795884704038912 1071297783118378838576678813302784 -800020162688425774265471158961831936 7167857894711562346678466820177920 3222104258198885388148942565277696 -351186492573755995659374190108082176 7549753477731075981369990782648320 3206998736188810659128650999267328 -629941087782221864722710805285437440 5544805854107794502850511095463936 4626396033356875817373611826610176 -200563075115605521710026328884903936 4203457819553256221888102499614720 4457012026771344656168027158478848 -180680382520692711864481504401817600 8492883618966249954609594141507584 3995272823556679061969040855531520 -515008347147234274226456958590779392 7757074093154336885841645839319040 5499541309729359045334251421564928 -103882216334699487537073442858729472 5548526644623324654091249649713152 4961130020213603784865698849751040 -790833403463345649945203030454435840 358750746073143214430866481610752 7570146464120911967314760676933632 -648933947418294390901163814503317504 6713109356673784076645401584730112 6567183714529513908458012996009984 -449654940711106316167202422577430528 8805302609003926659308704204062720 7035252994295253290550911645515776 -164497085078411644994500107549278208 185445201040526069723572822081536 9780540124670902386353521972740096 -621205741604808681401513911343120384 4601259316096551501851284249509888 1432586445581336758354404509220864 -362002536213165235705287607626760192 6497183142893854833161647341699072 5965395933058454132934622482268160 -104086763764300404547562449229840384 9833747908846995500524847585296384 8764200067766823295545647527100416 -583188090896436754241660508593717248 2096115085525726175899367956807680 927456198848372046852362818551808 -67147340174835259980747124259160064 974540813110306453862848216956928 8911282293000373581668325093539840 -357620481075342976481366634464804864 5460516474267234303024911024652288 386956341413938999977608306753536 -951314293627998720066148990214733824 6559067146070945214477901819281408 4536147433014095809208664356552704 -528057465486787457842712395584110592 4625717113014308350940473527894016 3848649287655096770922006452371456 -607454677172630844696483325905207296 8532121263412298850406710619668480 7407349927433427993525811683524608 -429709737803276727765427486925520896 507288904109794199072046657306624 45242973648601822831015754727424 -77543102316984548522386113502904320 1774991043390939098404779821367296 7052817082209857244543140933664768 -154554932300052960113976420161552384 6464911697777864214850694172114944 1556382965708841045961941041807360 -613315860337890515090075373635895296 2719164057812395867565541159862272 4609905076311577565348452393549824 -488118294530005353729845328395370496 912512868526687203723323235106816 694837853310402083202596390043648 -598756122497692955773068221681238016 8194461391226493881490450319147008 1429875952738414418030578135728128 -635233386380035119762629909530279936 3328291042226173077922875300642816 1471168562551843665471562271686656 -602381560777860350272401853378461696 5506629294896732425004128311181312 1110649240269213767745788941697024 -57051592069031816220435154213011456 4992761369798200415357450470817792 1787049522118756333039742519083008 -937714522846075908179463827403833344 5576795578168501187291512202854400 9988960269457301684924312738332672 -815877073838760381164644876320505856 3199905035963529610635135913295872 2246248845615483869432388738088960 -290224165937219797952373996484820992 7965548441044847088326598094487552 8446743159492692838051404071305216 -650734977544402929897886376347566080 3211477630162774425654098736971776 4095671290297615432487329775747072 -763006539154404702727209967622815744 2905806686939103313401736161394688 7235765947199008469791872714276864 -696909317915556062961740651710906368 8113455560423875078062272837320704 8803615342106223631611936980860928 -564880635790447343467218932124876800 7921598675720578586435531374067712 7848887729461838742119388282880000 -494779105886134666623817305986957312 8662971607340999334352259968401408 1707035732446074372823033810255872 -354520470835725515833817575106543616 8527112241236393176678216985739264 3043229394249318576711116519374848 -114767711038433067638195674406715392 2521386763604200676165459071991808 4847481011712672048628366403698688 -557449981813819094702954444310446080 8938094193134943413170656124076032 2120016388032021329451818374135808 -779662624572292499281456860766404608 8692457488837346746016461121126400 3644265682167799353575117810565120 -628841093607292847931652769409138688 2737040767611507742179150312505344 2404453938945532995828806114607104 -592567071194624667739735686918438912 938097078390427251571684303437824 6443529608419842571993907013353472 -18696224284806628030374914266497024 1553167840600839643614467577610240 2678698566486535403842909339910144 -499381902818269240580945260836814848 6235045822972538609438595452239872 958971872150435804727879917371392 -924175115436146464071464113166876672 6713040707065602033351326036918272 5266455647819250708418762977050624 -29830369779530434480586939661549568 9842054122153115907937264056926208 8798692269717003149100217947652096 -921067798087498002177990900657946624 7823874943998436090173178335199232 3160006162797881409769719436673024 -780795844798408239395943441883987968 9734648070739806356109871324069888 7549931460679742854626581631991808 -958080243407654595337449705046016000 1549130366460452417566140151103488 6125004179070199338013537744191488 -30817896341841293303786143616073728 316314882200728529080553427697664 5529189634771826869066841832030208 -861048873791567200325688433169137664 3806498991661514686122060742131712 893617238671410347736818641797120 -244286186971313107698380297197322240 3411347124196393853252747409752064 9194088961416631936587974811058176 -821869338744575095598254869681537024 1935621884411351677366338532147200 4617535258286300530410902257664000 -230356274134727344473677702092554240 9792669618539920227561393694441472 8044662182912218275932437192114176 -279330072590021680205526113533820928 6232550050237669663547066450706432 7083506116008532698603510114025472 -424019683410190921106101540581539840 6489221086290430701471917370507264 1563986696986735709457949040574464 -221051823328228713075030500136976384 271827546729164491993954947956736 5077945971285269169605316211376128 -217052024305980305478629075701465088 8394112095702684690785469659611136 3498534558732251330711394921218048 -18324211225235662690093694418157568 4384409991728514664430340830920704 4265717299334426819383681320222720 -589658452857280317814946998178021376 9403427226314329765756999009566720 6645564752022366679421762345631744 -806880760173890495785016774191218688 6310921442965954652936552929296384 5196369820297888742380110547517440 -851080732910603808007856666024345600 7815997191573165569439045183864832 2359762367879009579857966595571712 -300347257625431241693615047187628032 543820547286871244031103411945472 5532019208677576920748537377980416 -272452101755849661351614846899060736 2987126556504111750548900160733184 7630972429131378414051076899602432 -673602607296868085778368615870889984 7405815730937696945683302952468480 2002305003605447125975916836028416 -426938234721133831113165198344585216 3972415270770133886359880658321408 2338119847262891248767059280003072 -648197218748157106796933174309945344 6708419675350840610965248888799232 8187416007176370262291152499638272 -443151213303110742159219019661443072 8650200550463912257958529176961024 3683024985384202554462080172294144 -14452376430360351335945531130118144 2708185109599548465188335456878592 3709696952201385698646519174922240 -27392114150134839541043868830007296 6090944987882637446964558052720640 2590114639929616819404927347458048 -876096959252687423745885608846819328 1254414295443060005214654258216960 977037835352638702787297393246208 -662677475324711697232228084816543744 2345190338857831758607731279265792 4684547318603957870045712070213632 -24527815095807935731077203070287872 1922417009307435253846635463049216 3359334574445508760512025568739328 -126461517382186753800044744705835008 7216575514459268985287007979700224 4763600876793712536000031820349440 -332242407738832566992389993326968832 1121562323479064273111614102700032 6756530154315633165485579555569664 -813184582146770242497951116193431552 7021303160370527216698443931058176 8855691107341024540195777188724736 -983757174967226471823343660409290752 677342065001074286818726391054336 8730452778539283783252272763371520 -213771426029155736462358498947104768 4397891850716847559674255862923264 5515683417395064252161741920665600 -662081650952842568911050147928997888 1093141139205774701371505996988416 5448866502066064762441968323133440 -222643737795906719596660779556798464 5474178907415495260509129108619264 9360408621488985414194049998389248 -559018403232453962044707484578349056 6242055363263008842059216704241664 3499356376577461065074668474466304 -464418117392684862443217614555578368 3069735090615510916240720772726784 4385708426968337933234670686699520 -29775401207453512359713715611762688 2160828390832159285806888692744192 8629808884254996006461874534088704 -266348272478843118127692197910282240 7697129001431483934232200590917632 1340304561112821451864156741304320 -503716907607699874513753765635424256 8637406613436509783021609415606272 3207482767901074882906184161951744 -325634240892593980324542845166813184 9424433687115897427750241307721728 1752624767815674595027658297311232 -792964957951913489527498043161575424 734143513375667501022404975525888 1804958061483552968248654664040448 -778111130859070734104162837039415296 5358845852560469531525199138127872 5874929999873484560385126330007552 -431470835148727553361140155666137088 3652937206887696046697482188488704 7713986146424028536293201687871488 -715056625235700374414728619901321216 1613888184008263664197632792723456 7524525467151936790157744257630208 -466393274338109255621002025643278336 7347524176184173825364395942739968 636497349996958519828978044239872 -736808205989166704029793185463009280 7994395106595679259108064616251392 8462188983672889863033581301923840 -22350076705368137428096839309066240 2146333589308750850327082973528064 5860050695552339203209861718343680 -947273928020505669791618726289735680 8468579322284065844213468694052864 1695693491401978386007845916114944 -212561981913739954469918977858469888 3428317163918701493556512672448512 5022855792089077959862947206397952 -993664415127197882555360875080843264 5287874124333753563226292703199232 30601380096634860534651613609984 -334614318472119851738688356656087040 8309977437977459251354507463884800 5319961196012649890345604977000448 -337440916332138890886863738745389056 308860546372304101447402254237696 724326536278196702614312215117824 -977848108287405577749262006103310336 2014207740889334301007186696863744 3774106176727957930879021658144768 -248302713567260231966232077857193984 4962300986842518627612930575695872 6774438724360545241013557873606656 -574424942608092085024244623749414912 8908862667074442941783643802042368 68803877287813845686394457948160 -351651900910003344727706328176263168 6558876953169953764976127614386176 557336116284902556380588478038016 -880366654273510167620199683117285376 5125245132180009378316843963383808 5132338763336033764717479902314496 -945167715249661834624691764146995200 3303277544547310089104884913668096 7120247195673554844410842705821696 -884258346575300544527587119955181568 6337094689022304808438062034976768 9670173272905324661519035343568896 -219510053871932490037441045836333056 3597449357129066894173845502033920 3532187561223816453745183933071360 -142389937287135792685953443784818688 9190422690275589840331456244613120 7011034231380007135502190042415104 -20775631432113409214240472109678592 2014185758795365965371063654154240 3875127937724639679921736042676224 -960317176471573562545430417878548480 7899114438160458385007559386857472 7571155370939141594755729467637760 -888948367863376338816855391915212800 7261937340439046105999272832925696 7919465879546583956215687582580736 -636753778293060804961863172366532608 3127505925647964742053044066189312 4935302866559370880061042050727936 -626645575330153235134876049439981568 9218329035651939165319562820321280 8824748918463382557292602624835584 -793898123221726566533438582881779712 95313813526213563808571474313216 3750793640242062304792656327213056 -804369101886010715772435504933371904 399279086013751330673298629459968 9531131503053929174529636728569856 -455409422941302487884355801358270464 7398437193519506653248638184062976 7603217973718797310280949305442304 -991486590551068462560250622579310592 2166882642570130182840488992702464 4028573444511276864482335646547968 -648484707386946241219679108682743808 3662255033390731800547147030462464 3070196322008157785162291714457600 -125823686284260369850862895290646528 8657210915084854639627658961354752 9045294504535688119931821652705280 -734587656381643363521659699533447168 6622639298784031817645486631813120 4419498590537745748220320252166144 -467539084837542440598972070430244864 7776697825299366743826299850063872 3613866889006176148367633224302592 -977554720780051313692044169582739456 4753457947333224711250398003855360 7468096644759394989824031298945024 -943809856065093190036942147628826624 8120544549501792194031711086968832 3006034948865779161660171961237504 -134994483161106930395208765495312384 905072491060908580703118343274496 8077485411292308098407933144989696 -290426286253963518412304907702894592 8608984392968357662460855950770176 9885929436875769488969454806106112 -913584439025489043212241109216395264 1787915777031260376980173352861696 5177670838244674352304401835622400 -865905110575292694936587608495489024 3194510818693102178216002277343232 9823776292517302576742627968811008 -435908344522030422489972544630685696 6940715705089153566087904688603136 6355187718439833501595081958752256 -335085983449596584336553896595947520 9151606170619234957476543225397248 1113042278808011839281715379961856 -588921539395729509146268826773487616 7193718615580363101443573642428416 7424773308298963763116929762459648 -873506857748932592460233417540239360 1062893411677447424218303784026112 1113344922791313342254706512101376 -492944612782218411543770700728762368 3087458303231462193536353074937856 3379151657070707876527422903943168 -649409884502493748542104450306670592 6669823276194272580152666538115072 201879330037922773659260423241728 -403641406160581042960717042912591872 5837110696060561964332855081304064 6584334009088959742096183528521728 -859899990099332306081941147009155072 3991040609685944451966718795841536 9488532839527665818201286202359808 -558599173743258821210651786339155968 849087965303463626507844858150912 4375475444539257500016758728163328 -635120232972298962304700520377352192 2127789485979851707880864833601536 5476779282424812486266258762760192 -189271825582563368492292825147244544 1757965962420192864556276892303360 3457491729897607772538766933098496 -737445080314872145146511868500639744 2136835480340873315968657517445120 4333783007442344672650764474122240 -439097825274108285835817946670170112 9186677808491425379822559188484096 911141714229309405942159312420864 -373778513935435128557951052077334528 6910592214866683866101719077224448 6301542738884320653421633217757184 -391121056501343102672661357984219136 5075797901224320262503467455610880 6238245792413428459129617495621632 -286170257889395623636181180051619840 7909554258157195507483407420489728 7966384986327768826981714417942528 -214487169893977530215429294507687936 7706350149642022053000278335029248 6820940456478619436190182366248960 -419939013754274001592373921133363200 5374463900137457662342956721373184 8835735608025692264141663647039488 -500017004696020777885839323897528320 7472380059159847448349348619878400 7674038300123169167149745890656256 -887917226363087501330998859036360704 2219025067906498798600180063010816 9171282366615298337065042647711744 -959036799590647879113844423716241408 740934815214564163318090454532096 6530173507496964143023524199530496 -762177009601940257263861187519447040 2113683849250963829095443480969216 1467328103082689302442763941314560 -179713761478026896952444195140796416 1100614391589338499084800940310528 4634061854935890288885921673641984 -600835022046211961185407435400019968 3578210665073775194663533208928256 8753366044952372566069110131130368 -212580847843403523256328552236187648 8578298628863874134949193196765184 583857342896403780051628774653952 -883576148953709070691425130572152832 8873800072262173736376779344445440 4734550184303908028409345216610304 -265652565087398572140671324934635520 9029401849368744038723785488072704 5233368271787005559746737387601920 -537182767931696141535459862502178816 8178286204487640322804360501264384 1397824336427123217108908589973504 -830039751338829839867314484029685760 7979957816259717469938325152333824 609266478741324928561367304110080 -33075857151452708669147171403071488 4377295428487235275995088349560832 6007972867796693348893450974527488 -113926606105290377138684590951497728 1181440265354727367817280337477632 3166716658883467695973966408581120 -678182457274176692875429235998588928 17754681418292391032431507931136 8317165949865076504352084505657344 -178668429932781877004471170280456192 1770806929174361768954956429131776 9249636410014496134011788738953216 -792229311184728558788705474316337152 298406041983608287294912429293568 1627258890572329962413214358568960 -71375734964775484875214508552880128 5597058148628438830911462303596544 3479461575260657753277766188400640 -443745075220533646386626352516169728 322967985318707542522164924121088 2469639951858599350759000083791872 -27318143317373026154170377264168960 7854018543579886106624778672537600 3015343164336776733242360147738624 -176579147627358747694577334844653568 8468121986865547182892726997745664 5803202327961791602398835521880064 -265752272365715140274492118476521472 9232240621894850338158450606866432 8407125078645869238363945225420800 -935026970650681725283001542845136896 6080538747466105866601309753311232 6069410153550260281752593358651392 -419141873556687434776728264241053696 7767335745965721331269438072160256 8221649467970953971161281299742720 -16136193433498940675461329302061056 18658459431512503069978633699328 3433283609552648852613695600066560 -289411938117942287971222100346142720 8707591807158593128235804850651136 3835370287377182748733636824006656 -663067277626072765944699629086965760 9564134135917182952821246914461696 907976113362373211045102197145600 -932537166519321482025331212857376768 6621766050074252868891073849589760 4236149471483922325582859995185152 -725341683628226817855945823766970368 7993760480525277985065160876752896 2187618066328256526848962515173376 -888254119162665730779537157553913856 3619246351211187989320568745754624 5080666709149192619394617315426304 -326571954910923926712318450137563136 1865906504628118489472737122189312 5094861141630185463312530593021952 -21904147868510112232724289621590016 1955239302846239443267329961492480 9079453619134646973890321897750528 -175379468559109776788642648117215232 9911034315413171755080089994264576 5146068071502661367645070759559168 -988183196525544570182976892546580480 708338601226171986331398492389376 3721575854574994036360190067998720 -635891519408426427483187830788718592 6293779199765534865438320464232448 6693547648813025470733991131742208 -797289006290147454399987573697019904 3356640824570415425528801458651136 2774398341128923166074404616536064 -252740613688641966122531992624955392 1852121998604069788152922839711744 3490247137656605952534374118326272 -900504873085447620069605095828881408 2121555169746251551132993569423360 5730717642437734550629311420825600 -264725994606490454274348981057224704 6465078723490068200618149093048320 1530234157871618655808843564449792 -476384758746928582370332577265352704 9000116221557704246926496774488064 9806551409217726192216813957283840 -53345108328745234586918249119612928 5176846206562380726847780430020608 1019441843635865061891847172915200 -885004133492494063251581889467645952 9379891605143393436398316693749760 6403629114220951930823571905970176 -798716685961607230067328678644154368 2290220018956775423655813266276352 285113166226158393354331116011520 -367955956066226135369147472213442560 8549044687823390698329908602470400 6303523623571672369685335071784960 -513772080687976427293813457746395136 6044989703205559705855583403900928 1100150579746869949276420411752448 -905188667787441112206052820579778560 6713454864237515238904893357948928 3659852296280173018638463069585408 -913029426605767475813189658519535616 9952782466136629342575266025701376 4289227782280428223708537917800448 -572888407085558779131918739732168704 1551028460544492485239086329626624 1249388181900619642127722259415040 -786285386171863376988602837829156864 6424482403266972570694156793413632 6367558096075260685380186452000768 -836466609242776606717084270787035136 2463176344688215723673722132889600 1310501541582725625445421468876800 -928507206823860922941538329249710080 2219107969020622490045347901997056 6843705494066592902554620302196736 -307987133841300256040071746497282048 2044876805071745990874729195503616 4815717576014351743908339630735360 -100465817652494962962986457276350464 3810403105605425794952933691883520 6340165307804071509202710294429696 -432003165910451309670700981258551296 1608705559946826393309765127110656 4557607284109473339166291591692288 -215818577857793927670584277129494528 9187367059790515993928196776001536 7883639707158278240432670132666368 -931147368533311943838003414960177152 1539827598927569696487949148880896 4700862550775209928226422009102336 -894302949042316392716112614381322240 4413078006609187147220056060985344 8493364116916940710202738391121920 -389883138745111098517985301039677440 2456856546890670915169813822177280 5172670456922790994468352802422784 -563930128767337593945590974900076544 2588386480487630873145225538174976 5720372402320267012432848807264256 -888593517285703784153194499821010944 9644737032455933325603743723421696 3886156448567693943868735296110592 -7970496134189246980785294972813312 6644528725181616166356875317608448 6218924153145845200254449133551616 -856634664235611798967254719102189568 3850667764512422597728989534486528 6343992166622509933319174454509568 -633013677608832103256059305718185984 8844366984701084755748393649700864 5236362026887758824631593070493696 -707161013781197656789072639470600192 8222427335442077098457229529448448 8765095086706181188970363056291840 -672131327562535652467843670304882688 5995677235510375473848585746907136 9241946245465104656669292221169664 -580674257907298116971508477697458176 8108254922364268500219710563942400 7955051782238766892051742551179264 -255654369343901545061797559198023680 420114385636894974079585728069632 6608781616241125250141994130341888 -297388890849735075856216983083155456 1183132508915389682878458693156864 696474093153635863913939901349888 -347005870272619442193875540740407296 3028014003054968423619940967251968 218795594885518950327081790078976 -119962363113163751155579588196696064 7226047924939119834277277065019392 6719340943557606549689664683376640 -550630502832766995577406317599391744 6045970390997959619742135608147968 997357967598816382871176541634560 -82445444647302358530986865900650496 6949453682702842503730335605325824 9542224150408337417243020406816768 -172348882698549042616771360369672192 6026521296933322034240056002084864 3499719721611702953104017463443456 -962914569294445932024170338859352064 4008170999041771849268291186982912 1670024645827644995760949641084928 -806261223156534278912356050112872448 4986744143862286721091498330292224 3642442342590107324610681052856320 -823858331187494141281328347100479488 6866982630440285388645282862858240 8004059535165128183876852335509504 -3484501181824977335426112758480896 6781680137641820250065523252920320 4891224046927680880437060714889216 -996691228504736909182852014553432064 2773146610188253616227643551645696 9737752064946419601162064250273792 -819381053269566762587087360749469696 5870254186321049275476196513021952 3124580559140423543740916121468928 -219657474748502719331133964454723584 8163452936744153564008495024439296 386754290167728341008306782863360 -527111388821222508592677844737327104 8266825558891161109011504685907968 8145199672704545128900451987619840 -587932613948042993803035045192007680 1378168387928560683930985980493824 9084809003884876875623028892893184 -523662766560436336139620347031846912 1618233129894955677766563905142784 7164352909649526274488001221361664 -145308493043026169411390633802727424 9827395690540558442541863304953856 3650180574665326252521205952151552 -637323298510293477512971702839017472 6337249570799031044521134980595712 453887563693970249476439244013568 -381385921975951034907773029119426560 1612413944063696734322378997235712 725665134980577465226026958192640 -961981413684659246581310300205613056 2269936207850232849537815684317184 6040716768661589136008137391734784 -378548022007168730179198311626440704 2507901449236778254989353914728448 6271748986488186594481603033956352 -707755812990529052914080107252940800 381625855396552774520808300085248 9351868309401754472349153995259904 -887554784974311208509957276767879168 265555555442479643323721517629440 2609445661498586087540992023461888 -354227018307934188464491280036003840 7113459045309010266742071626825728 4627035169471693591029872012034048 -156643053111916882562470485250015232 5269026712352471812101445741707264 2509022919252331045114960408477696 -399445725683028689814841012044955648 2533349277859180381912931040755712 8548427254473095553034140250013696 -640768686407188530863945656593022976 7163432402482329011495624473837568 1491061695289021991148077432438784 -401210725392115903131377601358069760 1699422790737839794092811676024832 6963238798140564127600760357650432 -346787927773738829408647881028534272 3752074796826254812569440872300544 2696739512736055936626132407812096 -616507356144817891947074111540297728 3182108522504055477792730949615616 7889574001299952514704012109414400 -58474802422321815959480495044034560 7091033655983519804573793495547904 6779590469115634659040041451388928 -512567714390053686347497249500561408 3740368724210696056023864607506432 6855723717291502287199733469413376 -396090910901603125074002119212662784 5780681195185089426434147898884096 9318108081140166688437303087464448 -974168384165335660310643488399032320 6680166170697395037334261943238656 2321884822192714566957011159744512 -384678200064128471606547946175201280 2116481174518867437094369084047360 6583639613756491142331072178552832 -944847049020077786970062556277768192 4914316358507801894376857174802432 7549880389131304788467845240455168 -252326349145982783248577284173463552 6802661002757149217472531453181952 681447709765459329263034995572736 -242391499336643657181628437268267008 3199488091134021423266795819630592 5941501220539336654979011937566720 -674327516759687694704172464120791040 6289293995133841724665049429049344 6556553601882409487073555465109504 -118750744296489259479521895146061824 8180255427276107198892347909734400 8919347214229358580402866410749952 -467391606145489941702957230039498752 103836946707185973138657053245440 8033136576998186527226334189453312 -442045103102661726093992828350758912 3884806157286313765453368389533696 7314740236181385533805419080712192 -968430367742149148206759450366705664 5887144864795633857573118327914496 968114150307082504766051898621952 -617028377897759373444800326313967616 4301579277093244988201938515394560 6886124550558532498103365154111488 -660314939515967700001651234556608512 2651841834787799296092965531811840 3295701493555028071567125804744704 -965328841606187749940163154309808128 3452602924728766911358930440421376 803089136958823413382050201206784 -410821767853947935201265986972942336 2851423329392719760524092492480512 4902908375337162204321364433698816 -431425798780117534893709671704559616 604857925926256913565979118665728 3934769734608960663518225534812160 -57926803444595654323934170791804928 5892840800365314304611642962345984 1985036188246263611931950873313280 -248215399655749852969489783351934976 7741601432937676016747832187813888 2582327643531160802272958773985280 -467972023458173470270097433764560896 7355831012717818948914600556363776 6931625666709494937197629956685824 -534346473109891037931718655483052032 7127464648115686545690174896996352 373459547780117556922155611979776 -984597789936694396579567339118264320 6924379422612806375720410029228032 825327974603296083942644375355392 -528579770494140070490887399722188800 4872762737254505527956685230964736 7002339605488169805206307760766976 -318581497929293200274636609301774336 3970467842786538553662968967462912 2100459954634133728308040059322368 -952171630041278290004067102738087936 4064052557371865639793821839523840 8420942514843108126997739110137856 -331330420040835347033987161490718720 3023066315918965341569862885965824 696751405518080069821191346454528 -685027012515865009730554821758418944 8354577061817525617565940657946624 4793437703030467172906759694057472 -870829686465242762819151345068539904 5539438607959931520892932890558464 9557234849994636289547159325376512 -389118308311795685981289584326082560 3105105344463181989643612393046016 5421210433518948712121824614285312 -670785221650039417761131212453183488 3835118604431506836719405692354560 3083564458883841045896837854134272 -834249131752987068787256674767339520 7846949510304383267103998646157312 6522523372772240195809007699492864 -381156258410280611845258588977102848 75374183697657017859068865282048 1716369618777394177907894568091648 -563763342642338773525609237935292416 1471934668374709273719098432290816 1988888579786508063061567793528832 -670696608533944813645889823209160704 2763996214655735196410236729556992 8793268758836745835411911288553472 -175341805860231292534233860256301056 5602375721635281179062577884299264 7412761530817885511991063509729280 -833653572068074010771118860904955904 5044914844567368519136782384627712 7006093204904640178076779972395008 -167461424183392039943045123137339392 6367375062737765087277773957890048 6120021566149566008629200655745024 -544688019340718191679977661814276096 7212723425375546144645381913313280 4718744160458996052583430980894720 -183760004034283546194674035011354624 5044500463321415051274037632172032 4159180359560476414168885161361408 -808879760270871999147411949278461952 8966645423416549509327704207392768 7985774785457910826501525569798144 -93715460638245952826850338806956032 8971547594400629565432744416116736 9689027985641027153143336987000832 -222916298909026782937616899989569536 4582554886105223702423459111895040 2588857344435192922915445304983552 -279282351626553409953212832686276608 2138717026455207528461547861966848 4605176404411240827390487791927296 -153039027340310118517353091161915392 3485363226267612176044001966686208 4897472680684069223666449498767360 -450542627804090653022363157681668096 5509406268261149155870495809208320 8025618895256354633736192994050048 -521409450505317563453727172166942720 290020798962203940629041574313984 8314740914390173965119475914113024 -980858544193759784923060019360956416 305786547385532602617303968776192 1115811887005359619488638138580992 -56632695352173630672939141251989504 1410357077777972481044799440289792 6598113163871857012713372786884608 -883419271572112979094922021595774976 5306222754193966256883306690772992 3481166054797147597745038859173888 -877593776231251610499801693879795712 333353982894353069476000837926912 9727315978210001881076752680222720 -273710399653149585587109398474391552 995675545330379998223534221426688 8732842105340637001020637618110464 -778453590059812765581639987257933824 6570796347486148771832103635517440 3859100301327975311809069860257792 -863563969335060014838959722022830080 7729929365079313379838514996183040 1630602059972383114061610206887936 -310755620166119948076079807813648384 8354189358394855737257663699877888 9061785469290013306333232493494272 -578438687383461036336937738803609600 4500085565386725682183755591057408 371264621467646498440476354412544 -727649197349682682875832667488649216 7422049005993349963672292813701120 1373427475395784794099900305375232 -891867219436437534103843952859807744 4479242929672428470884397844791296 1573451252553897187443102145576960 -512085907112433068898320869834620928 5030169018662536527027378910658560 6160880678507169014594009802211328 -396178143537566935122935882306289664 2810251493797034944591009169801216 872488288974304247274095568224256 -763081552784817592685729203657637888 219943300681099842743712574603264 9746495148204343285077522893504512 -304016381544288751664063508385890304 1046700058988059296689395316293632 9792177845478193699312005212536832 -493780509086861867504053685269299200 6141266416203244955786959531278336 4644541198428475905518084292608 -842354103157755551805460117375156224 3107815037550921032644813232537600 6441171279144675319626461362520064 -100422673968010577379332219536932864 1719545489240621919263378246729728 448315540002534380870364074868736 -500117357284150068567152500330725376 2104340374858696365298553894993920 2325124881370289014209493757591552 -982456474540971114556140509879861248 5974900578362302226093869203718144 8033334876513608891373747936690176 -978216472165070155702224886255583232 43485758484674988750749413933056 1084238050056421575014159596126208 -422944236731858214474029893972656128 4856881265002261483565516838666240 4430159292400311221826559210946560 -870101863456030567013058796704497664 7128911055822273405991234622717952 5158722566406509371201788481372160 -137522982358838276046965257774563328 4811400556010189925418383160901632 9676981337630726405492674719121408 -228060354809066520223578091688034304 4842697889507105647161317871583232 2817733370168356114428167530217472 -614138253612440055854791983586344960 5614585734219136466479629343916032 3448105860147653638874311549779968 -172229495644452201113789298628362240 77786435143291958349741806321664 2974154019405344274810784582729728 -715501361448784513667480427750752256 9176094487683197926076891694891008 4515740024695483011987010284945408 -827345342122645967125070812958162944 9813728678278625476272914234867712 1660270850481561710925881714671616 -177392587085527174547961842583470080 4285459744068918833981173786476544 8250511806562224296192611192930304 -641711676689786059211797886343839744 7305458540476476961107818030563328 344759506887423854575097416253440 -845065930652899175006801985521319936 2968058618764734987263690162569216 7759063006229622971768333326614528 -444430812988149731989945009364271104 9127318179362255329740100963663872 5266803728123779931838138674053120 -479044408235791632148701158024675328 815666898611148982554500660199424 790472515158596438118441605398528 -59516118428037276250978798706622464 763590711251771367204345004163072 6898126959552075380634008158208000 -46792510578820246668572555202265088 629166101716305080427887045115904 1944124292714842980064921567363072 -415877501239984703834413159608745984 4151619838813504433694066702548992 7404813226817545607520741343887360 -956016338395118054352690174522032128 4740633275242819772608182505963520 5498536977368190668902115313713152 -165211895486400272762575492715905024 3530495466563109709155239928528896 5977649460077967527065506145107968 -927427231022000246573537207657693184 4067714530332880050942051952361472 5533034017842813315101200903831552 -171185721395664731451617393927782400 4633126007864894228293747795296256 3196145373090446317268753631412224 -982176121105028904357579099358625792 4287010612859020438136456642297856 907788972186359870260852086013952 -692147899058883130532936593835032576 4306748656611696776843738382073856 8918347941414259388167079013122048 -510315420737465263526129318089457664 3612739780710998421196390633832448 9136011403794262509847870194057216 -504660219317668168122890015492538368 7705548820234614768245638313279488 1333592170769370436138405434753024 -70986400386768859800804158624235520 1648263068723988093268432303161344 1276359923608610341539332336123904 -807404228520001809235604852663386112 5002670641072620422568509999939584 4603358222680778001211950165393408 -959775408219940868793892847860318208 4872265477865520045125725073702912 4375270924958239422295573000093696 -364198389717713337078313719179509760 8403347391013178426982658402680832 6412552123835988091503029398798336 -771459481875736254190272806129762304 5291139791407216135256485776064512 592715763195397778046992307453952 -296220270031433201608504239888269312 2514920743354415651755502998650880 3213417210942705592339888944971776 -660961686704977538447219177291776000 1743681949693978229666204092465152 3898292311402262204430484894646272 -135176992252646908445364035396829184 9163160935056994828180395634196480 6380556723106514095321074613878784 -890520132681784045540621427236929536 8186732361872587069746759692451840 2483787205712869041822414627930112 -980521739264811017134020939535613952 7511984854022130473259582802100224 2055176877435994025416168900132864 -73000469395260424200640420321951744 3339700265747036764582265757892608 4602998853451361788009904867377152 -794216759666032251426913617535041536 805956195576148971164394474962944 7002405947871148853950457529237504 -337430306003704344420654711140515840 7854762974265932385455802192756736 7215736121606729144545739160944640 -738007231772516294723745894354649088 9760937249437043126795917575847936 9671471035767040899047792633184256 -879640246709719116750691838982094848 9409610777956638556722735070838784 7457340910212868649544153753976832 -986083581913485309526802528167002112 2862907058770601507165803485593600 4080841576234380524056214058827776 -25969662122291195603648198165397504 9373997323960120451449680868409344 8181225375801261357770272262848512 -424554235488365721696556579603611648 5374373276144335370710514145427456 8951407184356199455565097939763200 -251398378094759224235083253845852160 3635536885752546686439853603684352 7022841384874080125263384668012544 -894769566562383134590359694598995968 3404693204456966562691132176728064 747131506993872982268665325944832 -933899273580416846610383289366609920 2519934402951814955835534501478400 7693907645496449183711497516220416 -791619577549708934776520327502495744 563079916673262747350946908471296 588634281821317793893847356407808 -608440345711170180470916276042072064 5387123583568652326617272809422848 5651578266494981429050792189362176 -846223609590173856783399741839900672 2633121234457373961423651556294656 6144590176250124662424978591842304 -990592395464741016685404738214166528 4641595634895150337688833275985920 2471252771207104787118749047062528 -271534855893893471628223219230572544 7172436727514975791944433320067072 346782369464498669616551174340608 -649657654902249658985256289315061760 6660142001855206371030978130870272 9602023412571620044451548246310912 -350720515758294970932752447176704000 1148858889314861543819852522717184 1152049247723710905400388696932352 -810957954704220014417648774400704512 237526444893558998512733297573888 2173264909747615491352037198659584 -727878575368080672171692455815544832 2632447450439158699195240219148288 8857414303933903280908621689389056 -69326052202477403138300558329249792 3836530066434784491045093260656640 5957827327063939109743534861713408 -817103479244875592984604552430878720 2847036721886678412540548191617024 6577175764041603260421660062253056 -210322990854594797257411582910005248 7846585643396191128744508130328576 2894868302790512536556306320850944 -459769068617974101020798134448553984 5367177414351711026850431873581056 6826608716419301453810870234644480 -660777415130446238455040671452495872 9518800773111936975736463377301504 7341722420960915084176334587428864 -897362506017258895895830451676250112 7401290823357162798490894693564416 8268871754423242244702430390386688 -755017700654593743590178897411440640 2525395401596061502266645703294976 5265955694417220657508186771685376 -606167253424683003413312727586701312 4714415828558855567833852475867136 5457882977139015881168342319366144 -290237409030240986273345410214920192 4143077032211976010897206808674304 6966299124354948614236346150551552 -980521249301136380517942050756231168 2419075704072164118458585392873472 2469287725326412748151042630221824 -508541289320602384071760223349506048 4894231645223654339058384733470720 2286804598721910732449518194786304 -848722412002972214790081429028995072 6761632344149542079857768687206400 9259370128285911141488686373273600 -231346415361316182228005260523208704 4006001903251017526396669164257280 5499074966587651994467974185484288 -988127912351048266657630696413069312 1200909263018786502637403672412160 3904798026891860436192198328844288 -526297992303430868913131125506834432 3464252889220909517565621734211584 7656011566990449348974178291679232 -356074106739987274571234804425031680 7860489991849109905201380297015296 7064638834160361303310414852915200 -400143730146456010580297883720876032 6537054942135150592783586114404352 2798877923694314557968656367616000 -827544452116889929232665039389851648 9962271771536679214595467919753216 8435921684267835166583992730255360 -773972441518335851335366988538052608 314716507752090031236369260478464 4702143980584022131146406892666880 -121306895779029157140999883418763264 778611545348258585543606110519296 1330261071578924155541100290899968 -776607435854724598734130489172426752 7102551316392726792218472290975744 1116145655891924362715917973454848 -290439392711027355355975390280548352 8065415849399164082289552601907200 9974097551495003981163669238054912 -869743931100597670634058923957551104 5133246260795722865911671608573952 5554173204851895031805028058791936 -902734886868147216451341189250023424 3540930828718426517912859831173120 7556246541225098006704358386827264 -324717959007813637823865362910806016 9072714182494547968786576686710784 7699168166381349000888023454318592 -452770643091986136687461691719417856 6065403296253037118639650400894976 6241480360607132329333501659709440 -932385613702125299139188708184424448 8869419601938619069826197901803520 76865301696156910102966697984000 -544922758573746285135530480902340608 2153205365368517436695328193511424 1630435163241455740124276486832128 -864336645911344813220787749327470592 3560406674332217416681193895624704 1899813615510400055149465857687552 -388311727094160935437318899189678080 1219251408746023670467220102709248 6349351748199192477891770984693760 -628734795680082652410098650435289088 7575755754554707938923233406877696 2266507540019970246479989681684480 -199924951265451873390915143457570816 8271405805520043549539238554894336 3829375857104272192783234780626944 -857422758606176421566696037260722176 3934891485109547549994341577523200 2439925786388427516966178253701120 -456177717155238770012106108511977472 1053893533724783322888265439117312 8443501018768158598414626723987456 -255362794930066373987043522962784256 9186968534217487291245216720224256 3898413140875412657365591789666304 -277561204087001224627055419048591360 9699392434008717532905318329090048 1910225135046413109825868446826496 -73011758008921935411866382706409472 2299371086867399433596911895969792 644011398227843041282934058254336 -58568581386798609035790518849634304 4118151461460775145492442148503552 9580534949401754935704076888834048 -494957222024908389560850004282703872 7123103568674840178713508901289984 4264650832178171112798623367168000 -542389644836928866133966301012426752 9698293503297812985605454701789184 1937852433461849298529296588996608 -851649331015969513822617488129523712 3946779835801387570608205557923840 7432732348514137857681545102360576 -77957409334824863368940508978085888 7839217136082201854586291574800384 1819737873675114781636351263506432 -956769203164872012026994163565199360 9942518298892266728172139841585152 1263063650779891714571036344188928 -989234262703321405249356081580212224 4701290474364057425204317897359360 6907763503680549202854978099609600 -554277207020575161070830166552346624 3227232177200936139977978089046016 3412937418054102552143555027009536 -784266982026087900864942221136232448 8041946027214381282145963268374528 6021626537214480526096405673017344 -588217570883040807240875481531154432 45572995460993118280767768625152 4227410049364646358286210170880000 -630019134120130905691581984282771456 7807351528055101484591368441430016 6539225327426709498014633367175168 -202210875662020351737092255560761344 2327594964774370869392264998682624 8075460915472337449702412292980736 -184834436895044572305270324865269760 468436642047362989519489051131904 7306633157482603903487034007748608 -47874778237584385588677158782369792 9647381359443535198368257720451072 946795635593122878673438354964480 -364778041034799848795222766816067584 9227970736023444150386372873551872 1343368430246017560191649299038208 -238606748891872433390488594631622656 7631911458356844305432240564731904 9259438937555486966314206205313024 -833101661516297505955246745998852096 4149494911366048662223507349831680 8908446802933764393027004836872192 -893279302202479020650415222486466560 1423213481132901585232015206121472 2867934790293872601528131362226176 -363965640539207135707391131593474048 1964820091906613412827961260769280 5140006124513394016446670308376576 -17314779430682025337745622456860672 5396468376537640043770337868906496 8361099821127278154598445100302336 -299861725715308973367460531170967552 9602924226399584226847881024241664 721113056778729330486213821333504 -66540610267232769086997043739623424 3318817211816026645077655671537664 8325174663221271232723162469761024 -495591519106697491487048140576522240 2756702930070837959185780969570304 6332434976739710396677741908852736 -706538800753942152622484184557944832 844676043044829925227142053888000 5655579375001765018190301521510400 -192122405990104399107977717716353024 6748148406666658363070508217401344 1350868888587625290542203568914432 -600522338450878054468216320780402688 5758316965820057940885604344528896 8959135980322841030683300707958784 -700206376784311532767270263788142592 5440632376880950259911295961661440 5549146273083806946534949564448768 -572320380219414278881045337818005504 704284212246910093261350851575808 8400038226370320530279393172389888 -890674164602368628929168172302467072 5587808964024558762440373905129472 8108601579686088269026791826391040 -994611102281961836661094026653466624 53301878967356005532352013926400 2396784471645919776533795685007360 -66794845864631653001223613123133440 5746309957794164090929117204054016 5507154781020571673461994945511424 -756087672637467103724022308773298176 3475448652902622476807349534195712 3865757030247875159227382338945024 -26383981865101585332113645588447232 2268804090607780625360779858673664 1370183101171919015007240752988160 -358494866345015542747488417082245120 8934100597246972261339430983303168 372098729095876907181120988119040 -171431539610873005510080158819680256 5297854246431365314247276393136128 7636753942961965491495129982173184 -177262143289570243962995124073398272 4435239016499456815888632626806784 5761590536956793928440954732150784 -172579763423125589936666632444182528 9907476765146531730703398492700672 5382967673115837086317403460075520 -378307069522900605598737026126970880 695812985706288253912142758019072 6634939609933395245038908924231680 -826445692735980233500510521133105152 9482781882628225448028760900108288 3374982156728617790679190834511872 -503279498898767426320558464532742144 907588621804090559974824396980224 2785048787209048742694206608244736 -9740110237685973102701066214965248 1728430275749134624728524175441920 3553819869103249749703127075913728 -200226697889901635769626610102173696 241929161378465884206926502297600 391089393239316921179371424710656 -420316899767273996454161658396278784 9188974827301979180467848436776960 1827872210534935809911183598682112 -769108119659561093070885776787505152 974503279248151370812988506243072 6965557952601652303898929151344640 -637277241424093027547047618641133568 7350098430580888811908558384791552 3890776755701359066613139204210688 -327197751489776503467883536217800704 1599478466499514907737193187377152 8024038918541317288930706993446912 -144882741760450085562219972568023040 4151908496806455752246221791559680 6364305291257562212038586665009152 -219781113049005785522088445850157056 5350646198751095377533721294929920 6947876481435749845857017545097216 -842460445245086668538437050623328256 4545376670972801484120869293785088 6883244327228918204725487147679744 -513126599583460233738641941301559296 6096364963553111226258713961562112 367649394247339889974655366201344 -524498570084307282307768773978882048 2911842837139183384181677517438976 1076083263147940183595635158548480 -764947510676673641439183175919075328 5324600881819372441320567196352512 9850609600668897766420326020808704 -969610382984791234859488353621901312 3421184417860621151357979599044608 214484366717550630915309247135744 -489196172156270398357639057595432960 6709661053812105402872320067895296 6884559585267267657866517560688640 -230133125462418965875307391787991040 8807481427941732129546035582205952 8399841228565351313991752577187840 -185252894868627673371387383779426304 3649498748445323674121126702743552 7424825482059107890007787148673024 -623135835351679178288734974328700928 8223674117347491812805063261290496 3300581123630259250832978762268672 -493232117676117051602216707963224064 6079519514191978181376452008607744 8789478156745294162986150561579008 -994990308054926229796274504472723456 4279484546621521988934806531997696 2706662426102744669437673758261248 -304170134817619799836926434793750528 1851803561912278061070693334777856 2689203311988369861965300488994816 -570214041547707206119928559956918272 9071576572820011930817042921291776 882734408487968964222057460006912 -225768973047215960128391578986217472 8773203772624358077692507515256832 9738171059038571794812564687290368 -458381748050412823608914049211826176 4672457589044012492355862221815808 410846714311476078194376784740352 -787448210402139797870214477248462848 5484291530042380458148451990896640 6044177318260530667943761639636992 -291280606214856184721154118191677440 7203786606297818236614737693507584 4896170601171860443823318566436864 -985224607233137441727114172853911552 2597023239084291676925527496589312 6538400152347584011960679837728768 -48616713546345312068217435567685632 1361320015823729168580270727626752 1449328219800283680814129676812288 -961903939661039096502869008347824128 7922184698577352095375344443326464 5524510140162063179515733135589376 -696379605653185625330970960410443776 4419781783726319722458094262812672 9375920175586074118151670333440000 -585857263900638875201188411870281728 3643032318280614831900845378895872 1352885994665236119249763621142528 -823988624082260360419534735205728256 534769771261014723718544669802496 4466553370845434013503901304619008 -529782820722496995217467853775044608 4657979258712026603817357933543424 1448033032731773898825453319225344 -173836443448478090591464031921373184 3031754136906826634462135687577600 4633249050918697838504376048549888 -942648053467215550213057872849272832 8945940923458738252086858617978880 9872814088209882071738604683526144 -733459516428091930265197068775587840 822291830249680720170773007826944 9694740171380503755571329511718912 -391320550038710877843519541507784704 7780337413960513341830947712008192 7704482353078358485199828056801280 -86957049839422095102345461131902976 995430845420539338811194346569728 6940550750162470008723029977202688 -173276927210492217615774503900545024 5707972797091853315174858850566144 7239033169288870690791449161629696 -686752163335172418042862337823604736 9620571378142117795191809416101888 4332240983661626111595238196772864 -95511510012321611905303058663342080 3034317258987632812615472011804672 4134391837772105275617748354859008 -359396117653455642878183703050190848 9426471043743419803091584394723328 4567930865956385771138882369224704 -939886904466833202780019227052998656 8776574313748675099757225921478656 3925553162459684141542048706592768 -679349126678062425758274489052823552 675753841928888754519072424591360 5427188644302179417692953395593216 -330459754043908781387932881951653888 4680266360328663688311178728046592 5203154977245272653557710215708672 -825285537920520502349041104620355584 8061256409841391896188715676991488 1042932699259479779835896953569280 -436888841082300553153813158924648448 9424432270238015714652634654703616 1877748812637472170192514186215424 -363754493265881836500582326499016704 5098217078193241945474225013784576 8056218783300023272203620114759680 -631617404909829593405386614068215808 6333074763709754744263888670294016 775713995816633291165723512537088 -402640919902385851404245313913880576 250451123278473174797010178408448 4513584090564604274529518483406848 -935930972344548967571902994996789248 3086944211886712372861174508683264 5661041603234795909013219747823616 -674820100142039126281778629898665984 5728117061668855675421049252478976 3554456704097691117402644656685056 -308025250928691014361722053304778752 162347668648742464848855513956352 8974311694747843698319932543467520 -958457132323387978280979891352502272 5193463499326763886266217763176448 5658312345789102991319481505021952 -850862019971178877674720981355069440 8958908453214431000141496890425344 5005020314075714949055522055127040 -981335877403327356800471767583817728 7711522646902296615192582537871360 8840966529791824701191048755412992 -107040813198085320357176062538416128 1172318375886508853247975429767168 6281001360955561698735675716665344 -348586219324581988463329711652601856 6620855089526447883849192913764352 9491960762858153739437078118137856 -917141770841364818482461216677560320 2516730560507887998559883343429632 2719302915097566556351391879659520 -786508853816470886101475056532062208 9758897257104294346177251502981120 2352284045187938819233677236502528 -137339605601034169959090536453242880 2058185363026873165350211243999232 2962448330525218409184325426741248 -49702662447621823247651534876442624 7649333159881314860230128523280384 8850437346866134967668497643995136 -316481624920424608611880073624027136 4774934219021231253880275801735168 2364992181328607638199790624309248 -600683482419181563722646305288224768 2656444895550149732142334687051776 3016118809070007973294516864024576 -162888282780753566376441754377256960 2819864233695345946274198619947008 1740685299477228063874617391972352 -403773435318266791683350389407612928 8495151339510360810366802849693696 9869751230696258939929934107246592 -542726001972448326354430844009971712 7098573261511501294437012367998976 8784218338918619411477648728129536 -197183046057582401548581253672861696 1338860373091713472740673093369856 7682187705110380517012441462210560 -488288541980553482781075838930518016 9755780417508182090320234550394880 2582638100985596727835097097568256 -92683192914623970041246080183566336 9398784378271815766173407850266624 7021150602685266757206056810577920 -445109410032903317049049447837728768 6881188396340135050325494952099840 5268717255756168057924534101082112 -907284046638071752961763632580919296 8043275972697100307330826789453824 3206074945513569676000390153240576 -900183157928325239886133483985174528 6240093479618109404621643834195968 9013374645858093147285763928358912 -659841566340842558097271654375751680 1742632484916319718208147220856832 5869776178228044666598365547462656 -695734154298880617993696595008290816 8655341452993978227081908538310656 2179503419755255284873582562246656 -218541702856493884839434729912532992 4314839093696224732320296261910528 6972570365037030355022714352173056 -918311872590720759094290034940968960 8032738931011037147940573354655744 9036058925239135036379341879508992 -419696029960047226799940701098344448 9307167227052568147056920809701376 9947665131397046510146083102916608 -424134956463710864083484258156412928 551350442033440071314297057181696 3658386410151155763003771257356288 -212636416329844944306573051338686464 3096991400948402931032495027650560 7339442542667474108686813928357888 -996188686843523253363679482093764608 6355393618113792128192753447206912 4092609422880684243391042887352320 -589804350327615551686108965509267456 6106869113455125708339176919793664 2708310989461529372351520906936320 -101358322481223220618865206674587648 2567846872492068776313916412133376 5138193200379536818921619408814080 -330707810905745253796044252664299520 4943360048043093343646043978334208 9888111708140252343763889329012736 -651344566873314292453144111007924224 5179660512686002513779901882957824 3318886934404010239685676333268992 -348471513980143709615580951097638912 8635118960061077480214199525179392 7515671833174390191545301996666880 -275374517865391041260234740498169856 8629759674680105154340251160805376 3058065775078014468977826511978496 -214555096172062851640891217652219904 3923085274165788568816080572645376 9397569803562692402977187196567552 -963945345351919642428827038432362496 6479446346493452993067826280398848 14672558794836240402683132903424 -600899895526616410732677060444028928 8285287838742352904327664527998976 4708338566241080288374170954235904 -946216675276756417179862113263288320 2580560169532380380592896670171136 7214962665878859615969835439095808 -574635762934031780519502662596558848 1064815036767029032018761280913408 2842163803070875739246909506715648 -807969595021483778279927356468494336 3203310980252460184688387160014848 7251663479279536277187860870725632 -628027605993668543039026840964431872 1435781215733439718654985191292928 7547508583530086874781536013516800 -663364271535215947535962645630812160 3634220786517457690523536185098240 1772212350692116161649053299376128 -608270827605988946607560789975891968 9056374125316323112963251030196224 5397846578283499142585561968017408 -680972696854980526859610409744203776 6027558743704365825316884360200192 6537923881903463357139124358217728 -626142902857933293588878362360676352 3179391352134233366112348063924224 4372735575203394228670317146931200 -37317592870006068568480185183109120 2722074336117881541300652446056448 6847486479021176921815959681892352 -730025398739613659410616660323729408 7656042447900995530005997550567424 5825027137415628832157488182722560 -95978709201767777967732970886266880 6248284253081371146884262953746432 9514808274779057668096947107397632 -602696179532501003399224827534376960 5298509750935815338219906522939392 750367312485387987125419846402048 -438770972943747125348912015811280896 8902649347494731376887290954514432 46231731270493991143479426678784 -22305986068948863772075947148181504 1946109378885259249865915866546176 1851514969936170975005954260598784 -215285658526672069982798670888697856 7278578693791947846136426343170048 9115849737685178500646068000129024 -447998081147503830287527077444845568 6327680342283966008176690753175552 476614656056649488566565612814336 -367899898996113805762134844576366592 2883576407265543061901649010229248 3721553227730623409544354410266624 -493921044267499385675956449729052672 483869039052089578650360029904896 7466683963928772066857875094372352 -194233401836338197426251309852393472 6628827062670845967282110436737024 4332879557909150626212594889785344 -266841445505660557770994495799689216 3719727844995112233508683573624832 9435379140235846936556467721863168 -114859202125758062105585057318043648 1835461575139460548248641957003264 5821438818353456168307962425638912 -917142633757745750663688095608602624 2542700616321377099604711369080832 679250092492353394118629380849664 -955630201995967980462152933007425536 2699395162381075551401606828261376 905503747308379951226861616365568 -654192421895755913017610384013524992 3370835645443453647523987058589696 8901034701353420121389233936007168 -329557948826424555975128273345576960 7572839130254763522311196678029312 8484251635929598987670349863190528 -276219647083281527110880055764451328 9303758442903049287597529992527872 2561742827945024743268914259034112 -309527624183196753466073576682553344 1430081058762016047668431113158656 3482848085621124301212500738703360 -37503264709916965277560876553994240 4234378631093989151626104670257152 8773027264861392809718073291440128 -34923581538228136211268741921505280 3245890291285158480829268275232768 8192879925511902561354877717446656 -674317786212615597733450680062967808 2530148086538534275127857987452928 708459171288554249480106569367552 -149419620119717461610257654866771968 47428081721260056044566214606848 9206303272180514909113314724282368 -834769315124680008604154708807909376 8655477920170839771480785873272832 643696656407230719796526687715328 -419107085764095565321916550618284032 2493984399637701821658479948988416 5066495792255690761501038285422592 -29210305378138107271936182457466880 8194737165440802373390583042408448 738770100486946701810754083880960 -813168044419304141406256567288856576 5337618267348568975347055597715456 8733792322137415992837576572534784 -984682285377396702319723720912928768 4270495377255990508137339078836224 5405945812831029901189417145466880 -960996437841257053267277717109211136 4012599338840619827772772208082944 7096952769882790792159039535972352 -991232364918631994495128773848989696 8677703292250699415321974100983808 7749622348537172998673860527128576 -205273551225212838529254644768571392 2293747021449508911881127901265920 1169311373190356811820460360597504 -233711529954239951410603594507878400 4838947179101807027756274261426176 9864733311307973460745803276484608 -737405933010123862637108015516352512 9141979361847465459807648988790784 6488265470706118309597637200838656 -366763164539109351079272169921839104 4161491609958296363088667371110400 8798420634021326254933920180076544 -927265838316914056130022584851890176 3442420037565283818713796554260480 7697845400380800174057616366895104 -565482294475639547675955834260553728 5327658908517582020703983224487936 6397613061014215060817647868313600 -263851768213095220225988976369991680 1535352163385108461960906972069888 5542041629435915957060980829061120 -921684967797355290094703535288483840 5190013635343863010155835821129728 4008720054560293427281917886070784 -525002322309344280353095893347467264 3258221202411423189117314990604288 5384159866577505354205881146802176 -945335463506637063666606563666165760 5936566039551366638490508467372032 322960511089037876225965522157568 -129685211317755610325447817128050688 8928827511906218909956028158181376 3559077975304547247311154355109888 -723940079464805537637429842074927104 9936569177563505753123624409104384 1835350290681502315711338792353792 -92990753297016561365646571420516352 962069867313079439527758251687936 5676351935072761472511963822030848 -559362368974449656097895958563520512 6647585938310792095982368898154496 2574798362854877600871312925917184 -886366736647151209729445072004448256 8786259442620312406335953647435776 3658294904967952649269536620544000 -494816940186260631764875218564153344 8346068447262290683111139465756672 1859329070939096891313099773050880 -305193910783523428582952895833440256 9201341245998845200848666195132416 8775498072846574711537407744802816 -248174457662727648914312316193865728 18878748749931260877873860313088 14720497339386876478607081865216 -650841050194894559108401729567195136 1729868036496872580543956125745152 4366979181127277219054004593491968 -180378722081932566566213908070137856 9867268324873764850502896694853632 5936303344113822394020687628992512 -460056226779238311658668723917553664 8402716958716815925022300307456000 5293452378852220330047400193294336 -881888618053162842800949906081054720 9586321375482653955043679501549568 6384430760551675095831285203992576 -832659241390312881874323645686349824 5853760265090495442838793853337600 8107300712896400475073955569336320 -729918173645717332350430262035742720 9631261854046910325478839122132992 203450179205729163313747373064192 -98323669090601805849021384182726656 7019138619118156339116046047772672 9124309461988310146042134387490816 -725893056060872918696962071445110784 8312349478414154773719075600203776 8289739434717924543761209433784320 -45733665268387225412038150882066432 887280934345714488353635210100736 3282876405444871861830273426522112 -62413548907579217857561419617140736 7460212138028941965955339535777792 1339364222467874325325463909564416 -289145215297897075141472228512628736 8907005677399073454257195595071488 5784979272454622893507791481208832 -100394185452088799001635255578787840 7978086614915759063396240223895552 3107525624296753074215524151328768 -439607195890840216074953768141062144 5351730217787600963828772593729536 6395650719908008971523905101496320 -923889658107315979860690113329627136 4014413558580108772711183815802880 9634936423748097227470218196942848 -541729824776141702875229751275945984 5857229392579025758402652909076480 1475188483207779513105323512561664 -491938042093913734851344607939133440 3673487492790274459051167578062848 4457647469463194603647701843181568 -958010079718268576271536262022692864 7049407674832812516024457367650304 7890528000507632647588519648165888 -73578785932600468154049482499031040 9029803904046730840129237726265344 6275028961927200064176924229894144 -847912130078095601895160655279816704 9729353740095835298839889652482048 9983015615127200330023047895449600 -150048849653912110199414008234115072 7269765008360159514833470906957824 515216991292751795927401814294528 -876624216031993428028439698710986752 1068251992395996644484169024405504 8264268767386761534364847899148288 -756041766147521617619995441036787712 9355353217389125725945963122524160 8742572335948649866997348389879808 -695289179009040041540988060250931200 4988904099896159577756734356193280 7726610779745927963870164326285312 -312112884491143604413194102280028160 2483989883239017134765343577735168 1627311725949141756597929771008000 -498692262831693326648309684490993664 4041026178259798992096721442439168 6588742360801077946280248071946240 -842423585657230811977156988569124864 578941433123092443235863039574016 5451214779714156303794802805178368 -282229022030851307313590780007809024 7637954349048255085759562860462080 6451550682076531836746806797008896 -568214006162965683989371354989199360 9700066408368444034596873185525760 3127894147892172731316375570612224 -799128854623482858819620519351943168 2877703049010286925480111875555328 5491970761930599917340328640643072 -834086283422110439245429227133075456 1404264015042680475445192365703168 7524706868694748566360890519060480 -652282104845449420363105574974390272 9092916272925170898326062091993088 8377123322057722489891611004108800 -590864617678552416900105987388604416 6958937818046008842856767411978240 2304091776477967652198946032320512 -812696647193727125538773553836457984 2153649238274836365593255530725376 4765471111012067794002923977965568 -853572495966270955285973021388439552 7646406474797051967409944346492928 2536579663040283979324855645372416 -249984168782914942937623380382187520 4099270308789682275131532421103616 830827629240081868105720977686528 -181311567609314722889925776063332352 5563834079741092682669818321567744 6955732607874782487621294025080832 -61778151212656815874255801355862016 9642545312873220517291373023461376 7609458769428759064545982154801152 -67618642164568315776754205505617920 5821422030891657623218107103313920 7233334372335720924540346663174144 -820723933403130658215230603605835776 7200582969613453505250971353088000 6482814770734080565888771640262656 -702347600169394316527218183276331008 5945290697447987131431185415143424 213878160775925134243255763861504 -768118705018331509918370985240690688 1381421788346082015618275475456000 3626205811654113020738657830567936 -941714197652400775186778194823872512 6248616695682190431761372817653760 6972519440784347225321767927021568 -552964240203444537587280799653167104 4640813097718217505708836619550720 5849033947961741939403214311915520 -34402753466594679216251390694260736 638996097678521905911306546839552 1767379498641909003513308100165632 -378152367452435309151388675705143296 7835209242590118304380524395757568 1861724220256759696997061069111296 -292689018328802890293488153868107776 4500894780386939795875210828185600 4108744056316717946453686017327104 -30971964607719674309073602934210560 316866232578812887476164867653632 8901106907694262697658632403681280 -953875953696220002580291318739632128 5862295176785990333000271194488832 295683666220176264481809885036544 -752043107918775628998360918927605760 2784203025390959635520564519501824 3264395683366110634734058022633472 -384598317172636222777167094348775424 6742059611431278025799371119919104 7163601987121478688375033342984192 -492782492881900696565465987351052288 5211157252566660876942783459360768 2255899756417326463890403713089536 -591991207540601130474042182183419904 9920184354837960294691982748418048 4806454506773696100939249880137728 -317478345290681206696591226142982144 2377643593827361660374353851711488 6707562899436682249092196556865536 -50513787503630597955006757167169536 9461710797173882579785026562424832 3453683629577114778350912226197504 -370810998586981926842412707606429696 9328487941533329857413818418724864 3331053559929285127587829316059136 -414367855376542677599920533383675904 9581466030069982195266472455962624 2121153236340515291872539579514880 -888999298495344038797032963390308352 8778530123175524270329807243313152 1843399626409773273568366439694336 -945041939973197865739017709357629440 4585474866034884101403859887325184 4758565764685319775147260995698688 -889046028186496762781564469814231040 9802097814578304080770159576350720 487418051266495277916529203609600 -614598556980731298010416475713568768 982216257931010267216368006856704 3119467284692973458219905031602176 -783142635720810323092825528806146048 7832843755355655546396785267179520 9628625160950372585089112171610112 -904811150282199964637783614923210752 4678226031806859950902845613539328 3176760526047973024005213703372800 -60198207623619142942864034144190464 3059216838107509491789271419322368 7765443982458089020024676037951488 -201917302288185431191206632167047168 231070477719064795358732885164032 1755425002013426321059740286713856 -515990949392990909966547942769688576 4956459897143788181745652685864960 4113574578170633892327066823557120 -360558996939206914136983891171344384 3700870177231392314779656555331584 5451705759125526988005877382905856 -232047704494225797000895735915347968 4577550473723106342489891092299776 448839429668419031942878545838080 -27907298524809654066100936021901312 1848759535018269162658598339215360 168111432548542281377054740971520 -978566921205017601442272582949666816 2870549843590321245821576272674816 2228566207825227716959118383120384 -479438530639071683708739779223879680 3948995549955771556617738751311872 1851653039675810390734041188925440 -442014935064234891727183918569357312 1629195315221295980853182649597952 2704187877148216430851551433588736 -465700224246383299267284467961561088 2118255754273948043186724805804032 2625096522633124621303629263929344 -465451499994673422345040422705823744 4287902217860845339312019669516288 6310746697427164208356910251900928 -433166522274647401067990682055999488 5460811051473458052833282411724800 1191735711058921280104084789002240 -159452425459475910758627027391086592 140338292363886374110029831733248 4356038331696290011910272922419200 -200982084543161260885423188405649408 7422687303963842641771362187739136 4165768959297933825952749478477824 -441850829089146911713943667364331520 8404718434799743173103093630894080 1806804166044132695209575345815552 -671251879045539558638290709650604032 4633853724815015146511216477732864 5189943984877549371937285893783552 -990184573590051689212305837500923904 4945036703050627170611612469952512 3532722107273839124722209815265280 -759086941691011853102851894630416384 7436361575538645003003499047288832 6829795835814075770313646914142208 -937301653513976737556699056644816896 4030223111529980576641827144204288 7511115908148992273232365990445056 -596964671407594011982675706250264576 6642049670839286221158560974241792 4550052733174565594834483388874752 -909898864334986913185245027593355264 4261637320773752387975018528636928 3884858788507763967739643369095168 -372184061939014329572569876480917504 6321897651067586737010692837081088 2654383660966594234090672141369344 -626215619416363334981985304857018368 5157549462975225544108918255386624 8739950396313329678133760534511616 -423183030465040870912875902560894976 3315599883888810872975623085621248 2700847420231674145640737581039616 -780758045463572403764233722870628352 8704892342225590395046685633937408 1385237060439721732548849028825088 -429923839268559434088282698251501568 23439010344496412985649725964288 1412407456322653601297308552527872 -852682827708659622889440971872796672 8747905796912731325278482314821632 7637095149293257403731998624710656 -345444407240505185578671299343941632 1146403286147374662716258521186304 3726188719763306611976018681921536 -626524456923279801499637925952880640 7433119487017102914036583890944000 7341273027994809619002682421280768 -580359493771481738422144508954148864 7918475459449892435612898957459456 7326922104913497240657877792718848 -557984120453982484194693963799592960 8452309790501421462847756972326912 2107764073735026615368220172877824 -155947250179692241537485018224394240 6948833866953262842580836062068736 6169316187217000784898070941794304 -546165021897420419638326304656326656 401559289734805088724604311044096 618332144918701249569745067311104 -665298279150948772988333655370760192 4846129948303812448295105459126272 4462307071234975243171352895553536 -62771579868735578998707184233086976 8315987796044963375952640331481088 3282193263700562612600986442661888 -941861465942840485348143582077255680 9370675165027807108779228805464064 9454653464186404361061893197004800 -119891188976085611599092969210118144 7040944642446346857614743124836352 1190500701563202728210437286920192 -233358267658563560172861764719869952 6606456197220469802908167234912256 9560426424178419354853829458788352 -416017885519431362985603003987263488 2311788874912613796387806293000192 8840425215622765427649277375545344 -365062043347712053160196823255613440 8739962650759620623594059280154624 4985262408165173594713234209767424 -41017021768183839297608909603209216 3517039711321112812319018242277376 8736086645330721997316420022566912 -48450955809087565748566711051747328 7229986171017304193482590510907392 3885759903188052585375036436643840 -643909013885395572387097151197413376 3951686671834662538396129766146048 7144622742332418034749264541777920 -774023003497868439778424206684848128 7421271436322136247936556375998464 6944030259362305556419488675528704 -575854706960045590488667158392864768 2050728554207027895058298159759360 9691930201826049434369428727791616 -622825065750399759360745486835253248 3183762506173250002884339179716608 6959279716674085015628064860667904 -997892335133505014441745870865039360 8224952398734364360703596877053952 6367435049969043780872966611402752 -82707227665815683538201411126820864 8752316894840890283437291221286912 3535106204106292030393700197597184 -607549956693150585336070941337190400 8968284569137219987273057503805440 6261550259069830876026950356303872 -774072005260676243327892312607948800 4065789919535166008063367135100928 646993138374396105062251459772416 -860420911561610183090560942181711872 988888968452698773808727099179008 7800798428179217874063271456145408 -865550248042782040026183164877602816 62107709486454947815792960339968 1954931238552525956388756610088960 -894138929862790115248852820081770496 7164264947385134782445673349382144 5271727102969521736607472409378816 -540857268855097144931461483099848704 4449475060001004018800227466084352 5613233327658264302299796106903552 -220393916956559773511798399715770368 7895367651356992713299204973264896 3481709353816204973251989738618880 -654635197339333377607741756856598528 6615271712497478977028279223975936 3789188685105814118485511960002560 -777452613837943084983041959156252672 5891227634066316565093145479479296 2202461226037425503358371028271104 -376135770575227528318322755992813568 8380364346756698298748337381179392 5486916573605674509279128027398144 -481482198901840327190838905124421632 9188894603334639580904545813790720 497730904607597715982504773550080 -145259815162660544509059775179259904 8685882677039700624238097540841472 2152135874114986199760784959995904 -747955184203843747354319762208325632 2297518561138276271921122691252224 7807575087067711045299863065460736 -651941904221260640294415356397617152 5355958009153643475820464060760064 2443359220621460362205663326109696 -424314484068153957333454377329885184 8552596790151914431050722161197056 7074502747340051720324812560662528 -503614510824381895781950394048970752 4235035282304115064310485005369344 5469599468250822186989143726227456 -124536931771385205661909390987362304 6352898984375573289558227850100736 2484724613905089898825274296893440 -458561957454639130153518800998236160 2333055992650520772320047474409472 2224398365301322676788806595641344 -292339521760805535399269313500151808 5567731869213421470744185694846976 6119117694491798137728477140353024 -402462857278823546082900227339059200 4374153409224634443724969572564992 3990122021351901346682481684774912 -147928146415734268608952137578184704 9398834522687993116040961133117440 1010177856420187288484656392962048 -189985341230915034946057837024903168 4406372203200499359873048432869376 5421429639096125719216329309814784 -680614434182282485184901663667781632 8798220252958940351407321711116288 5930936543061627218845625003016192 -712053308886956114016809413255364608 5180784695185067323264594979323904 6585510641625203397293782847193088 -828239697304995285083633122629648384 1144384777005733338037517184663552 5560546654647698578548165816877056 -95720802182142581165959436157583360 2858551247687796962290201087967232 5664416754152903550715872982073344 -316327423388468468541995992936873984 8576308776290686181814659069247488 7253697610706833095195612921462784 -885151439508231359040916990774476800 9047558468848385590978532249436160 392369987956217178723569008377856 -101602033165745569447040592532996096 4570772226085684499437882196361216 2727825635311202303934523357790208 -639564881688460456344483777795325952 2519914310459096844950127517892608 3153727147033806035822452790001664 -175567128768602707168240167328677888 4663781727754946604121020264611840 4364748584530398204997082648936448 -343552410185904646519003747312467968 7764832571122851990924037042733056 4210730112140876489728066601353216 -719716195858344282752273912004870144 533368083003582039257993476833280 2570463623600045474994043570094080 -253848753048914520001062216507850752 5611213077815325729268187696988160 763787706004326712734641708597248 -265137902111549185220972687719923712 7810192389281540486115674569048064 9123350341874327066019384275238912 -887507432213665779711882381649510400 6635626749005409473519680982351872 8053659466601208182212547898769408 -279766031193178933579044957559193600 3929511614593812525244525190316032 1381328038902110016059077155618816 -244625813131077552436579399899283456 3971999704429365325624205788577792 5385225125667855444362561155235840 -792979179592280075447363884529221632 3151356758310469835233750216081408 5736788379180978347039510065315840 -579595081686320858903775945512976384 1091439660639482178198349748895744 840148066873054454930885427855360 -509303413688871280363862764889833472 2692846558735755493978184009908224 2360090638228665938312198377963520 -56966035120497736248008612408983552 5954319987230322108873693416390656 810421191099485657835039340101632 -840099518258135751897525290568515584 4744120043755523562346324386906112 202461730145186328989563826995200 -834373309087428962299277082632388608 9557107353756023699854953547825152 8838674553661073843936834351005696 -470428571788135508838536888115527680 4395993801126776167059434288185344 3545078225694296573058466002763776 -492528979569590270606650095928606720 6880892253356074305178658712584192 2496969728801234591222174459101184 -593808032858643016164226599063912448 8759138761319957993307370522935296 2400735369719681495087959567761408 -171502315185045234843079465246916608 8204113143225073424650366934319104 2533963598124265240816350270586880 -846159718797126284160862004520681472 6004129648297645573611602153832448 6880403871260789092701470298472448 -698316291733889667971956992045481984 8262154349027692160990335735955456 6554109721974038038553432103583744 -587845671609234960951201096078983168 5144396103067201180325815347314688 9507251992300093134762798896644096 -365651333971361879965099213690241024 4194289258070199630348175131279360 2223413255004229800200495343599616 -341670666457205895050305307137802240 6627146493218720228431132117434368 5770848753859155561639103944458240 -892254365818083888816275531757518848 2205861628743693119015477579874304 3460848541389932820321782271574016 -383138505933235629535727713800683520 3342832046093461634828212220461056 5420266312463099291594058591371264 -647338241612737678037439002127106048 9865646454756314721592258638905344 7712467982128878817202661983518720 -371097129130636844324307011100475392 6694287400636026197216457587163136 216483032015804327837990750519296 -954317302349410159878678432746307584 3527391008790366682418207751405568 3797790241640811109031010682011648 -433920901865677906182704620202098688 3533078008758528696300667580448768 604557810189782995254896358326272 -914654365612914387253834241972109312 5146314530584262403234105986646016 8886844209340525313051779114467328 -47319806303168108967261937707515904 2250123721204970541960542443012096 9083967360666743866306622430117888 -121161098599357490865456188269527040 8196792054029897399183063235166208 5951799790090178920603187368951808 -778018935876318865085512017587994624 7193414316831288550052561132978176 110977510893014233890809062621184 -5554744576333221114789808115286016 5613811732042024088852811124572160 6598165815011983291336999399587840 -181892035532525653562625069944930304 4876639336679023208032432142942208 1196364170905187491256825683116032 -801024052616947451298642884560945152 6059098014028818093995902233477120 136505698568860944226445625917440 -180657279754532837851065910697132032 4196535955936918364632202159849472 9166756998521047126023634421809152 -563848032839416816765133060789239808 9961382948087622130180742187057152 8313559176209694410727344262086656 -847268447801864661637647623419592704 6346996495224292041852544350158848 5251115911860643220796433716215808 -483817109111043404437969375519047680 5166754284237683334557645251018752 2505733991345532324997548237389824 -312069975438468244651355280322330624 3343584509824056499862633497755648 7332126856916445699817263568257024 -921880934058344977091358662112313344 6014834013495825589094036122107904 5208455497274723695852021543337984 -396127152635045441474118719608193024 1609912006518638960975412551745536 5289884362542951939962271965380608 -209304089830045255002144397634568192 3026489601827959632454116932845568 4169396485458499910821805740261376 -36908643696916025761241552461496320 5864908696588918632748514113748992 4816259304598959636918670444199936 -680007119845292994080510751541297152 9027877572466398507538798985871360 4699171954271295312474082457419776 -837299057251776613406380795067629568 5936127286103136843526171894218752 2788216259362758422981379851550720 -196887849901657009289363139279716352 1204285453184167969844660791148544 3645550304892518733653173958868992 -90532783536422644401444606990876672 5442479305772003577072605934387200 7301369107492744834666531280388096 -680785944187184939053204021836775424 7577058002885551536109087992315904 5583317195429190899231173956861952 -460956842598151564146213420282150912 773523484299828116894363819180032 9741981122686188198227435937857536 -334453479371141633164050320934830080 2984361846743225271571853866958848 5421342467429677353376476058091520 -293607787901930265746131615796428800 9493524183894458582916633028722688 6771255927721088326036081101242368 -364901033720554075918940277185708032 670664568157938020555475837255680 1840659517581819329924758432120832 -638520532365376455205819728370073600 1268192435553971149131618023636992 4460087927725005549081668991582208 -808321141144425176333641845909225472 9006797364121439837433200214278144 7952603708556355518527568938532864 -209717727002940770395456965082873856 4946566430943499405445306985218048 4374417581452081792181519876358144 -538195830197975159631538623984173056 3690592392470049538271555396567040 4945238445735488765808611510190080 -97309319574576792008395595452514304 3171612387176125877631085166198784 9314246356449117678493445822349312 -818155213582657401371914294821650432 5722626325767323812991020499468288 5979257832346491148997613062193152 -553674854260242012555405842293194752 3277372847124931512150868474462208 1804243785522754207412075867668480 -328775423921967344936480062931206144 6507989790931626956773389833863168 6568613207397223940009531369586688 -51795176051992379117426326527541248 7566782534506648754736925857808384 135034828067859664607709430284288 -733576390183641995030665312470040576 9784333317973610636076976474947584 9353678051381145297849728928579584 -602286510674070360121785284435116032 3551761534292303351485974609657856 3401599289505136074592419584147456 -658621305780067258260389229192282112 8237314519251203848897630788648960 9221276348916721636481720876269568 -227035871738115977130137452957138944 6803402556797663740833285296619520 662932058849653407614464390332416 -899292354702162517271822161256906752 9134939990655162956217467281604608 7637172511877131142847237204213760 -713887805825947658115972595628113920 1279321046336082830670420208779264 1605405264888642120814396383952896 -285272100778750044943920223064424448 7310851095272104266617490805620736 3177328393715646860513092311187456 -961022752730987733500922681215680512 2308596161732182353206389665431552 6303579222030789141037435651620864 -75401319502842588892505277575725056 8870741364028620701592529808654336 4826998151934316194387875801858048 -550263356274267914542621119343493120 9045230199205702782587227395325952 1974677209339564504794386581684224 -704238125038158941907080839159611392 6155866679668302612349224277245952 3452661390676177284673782845276160 -669108062771303089304635051987697664 2212884303066334773415121405345792 5366858682912422317813453708853248 -316360160085852935862787415344152576 4348580885835068520123770175750144 8524534783162333090146149497569280 -481415859365487551962354370209644544 9726113040824472488717730411708416 2477101470221608784252674074738688 -470168264180660969023313902787624960 3656392609400847451598545693442048 3347879457142113439738654091116544 -376588172440138491518858095530868736 739300874887505866319669011415040 8846869479456821859824227615506432 -851897108620680697590901780363870208 4983144664856503391059048021360640 216897531481595079577939182878720 -527880153678780496636393448861073408 1769320026472778692209889960263680 5938316466677581766446197189378048 -219178458646550660560916605583753216 1720541817789145642449540174839808 8699826665477026298389144834932736 -282561472197527263732899914570530816 7179407963420010424228488297840640 1273336334553610502582008079712256 -874579958124758924054597030375325696 9244577175957352758880664784207872 8521019434859454913646912535003136 -631929097232848138322236691359727616 1082703130583790970433343961694208 6735632769047982201221145822232576 -312591351899130665660193918129537024 6781000911790316437695921754472448 1242682659425578484300166377504768 -371774152623823742396791730743541760 4524784734212314254255789862551552 4084433594824347026214756187897856 -644368520127874957202258870786850816 4761628428805022408421462589308928 5552722997868140789631125882404864 -90186821449758171391215360100270080 9435081632576898934824896233996288 2962264968707694788668497298718720 -485782432763660461409143471239856128 4986885664480389131711284290519040 9291636935980412164673367797923840 -660181457187563146927487174941081600 753299599064333499848614620430336 1780162981836334848776276725989376 -255033238684793957228164908570378240 2611315307826144845113693577412608 1701334445635240477469251089727488 -116148301256199590732494583629873152 2328918039336268759994974569758720 3762156325229993219079857755914240 -529172899536056759457095129451462656 4825366921038357631258265905004544 2049376775530294375326289036836864 -470589516089920232460964092662775808 6997010594656486337953168986472448 9992995107892460776313060268703744 -21653441986977589179556846897201152 1930488743149425241973670730006528 8855985171830536769642277204131840 -595467094258384132283421273595314176 8235651724305155303552299892211712 1456618965376913609106992335421440 -520334790217702563485519035242643456 2961678480680592305182281352347648 6954644332099802867597230378844160 -890632680655140658093041965963673600 6765232292826280627246736814899200 6853458842712810340667113630334976 -309855735537773066270679366195216384 2442034555706435471617101297352704 6829236303749893686777159352320 -111770665291215360532548385912127488 6066747092640002695476481361969152 5359748147678963060718376323121152 -270818048371104459202821034925359104 6910141477144367797141435599290368 4299509561317061532250027956633600 -351641045824537891696059945624535040 3531391624499117709836958862147584 9135553101250140699987935726927872 -686906528028093707686923773088366592 8832211081576792264353356168822784 3891999926770536070643679854854144 -883603507106286538038186161760894976 6247007069249593901941952029392896 6877134366521017052333493345845248 -255410772140208383231925156696817664 9369392106476724378256569276563456 8125471071165273884500180160479232 -414147242852973289619014064172695552 36487401108906319667269612863488 8081524749010445766580203339907072 -560640497853656829243009286553993216 7899842480538192878420347509014528 1641405683912881436706124328861696 -3360545289026558841365933607354368 1191393853872400776324696508465152 5749700821590064345399346289704960 -132767034057613081663343459091611648 9848579293094056893780923267416064 7047228132918107633164007161987072 -133566327021074346267938439626227712 5024542712036290413783222820274176 3989419688223631461467683714760704 -960218350354622950605478743613898752 337360975277679144781872019537920 5817398513509716504518004066746368 -418834598561307609410280395502518272 3846069450234164309911294753898496 5678258143480259965667553254047744 -342382699794499877761107925959442432 8481622492236814272349275693252608 5141583579086429140204332467093504 -232060045565564813240336091254358016 237366973241720272770507238014976 5742337406106460906230741305655296 -795393142591749301985887882324213760 7869497534372953002764519558086656 4846475577139797035003356997746688 -575904577159249238456605184226230272 4505751673106986576088559054225408 6392856096362180612975736926502912 -704395344242246341004547732161953792 6526186853203274015954161905958912 5784515159759830052575538738888704 -991233801064109650617185240455577600 564601149559655014524433624727552 865696142886256621403976482422784 -351094965141137088283093632259457024 5636203917969701786260147798016000 4485938030598810514522393907560448 -191510718950793041567006618439122944 2425720266085495692637068068913152 7006703500214317623475863390519296 -509632953679034228380529453839679488 3230273932206474294773010967560192 4029623157938265931127333706530816 -554470988310407587568273738916954112 5722143471440850630013927563460608 1815976419345954749530386919849984 -204544927094853976128833307111587840 117885523605106188013088303742976 3402028688279685753313224401354752 -153185293623340057947361146300268544 3283465085529750504010838561521664 8055765070631011970419002718552064 -379020313584277413876955524079026176 5163536471221462511571858154848256 82107080949375034154764231245824 -897322395810402562170719362485321728 1574220139929533206524860966109184 6365623399917939026337095036698624 -437412856437437019548563432038989824 5000570030572038991997602510143488 5010288634617897539349205588377600 -967956287301717866868121432206868480 5603555739033140714360698702921728 2060183600095725656583621224431616 -529288435286656959214670623214141440 760621405131581772885101668990976 930520531547698945671011158196224 -954662217498412519713282244109926400 8619177583460662044986390691708928 3922424782236940469958077073850368 -751673117119009210686692529945968640 4878473641202202753019247023095808 6959150445845661063310422432546816 -509382479364366950984940489040461824 6948330450463115754901066020290560 3297310367778823561649013401845760 -797451503748378470343307322831405056 8004403719495526893852389573394432 3550220139843935518700667345567744 -885483502922163333473600911127347200 4194614725344208291156635932426240 9245058045433825534049569006944256 -234099002978335867101817646356627456 5960838649462995546630134402383872 1476056695342580377679587715317760 -318097985214031740318032152141758464 3084954807617592341614540122750976 7291780609367222040893169854316544 -248586160591124582989786051413803008 3913102467212368097379989472673792 4133757537129317000309411751657472 -939004008424325449847206569467445248 9149271518197152818447944339423232 9312274060412795550991574074654720 -383036094274812242162416503788404736 6848368512828319828624015443886080 914340793322878118296050305335296 -439553663929436683676037425448091648 9557402353086823579968888079646720 9342841128794085468538681453182976 -414991546879780797851283688752414720 7230124512533350644070730575118336 1131861474815876738803173114773504 -222450076116790533140532039249821696 2346761022259418426655937111523328 4274709979334455576922801890656256 -630719060712958818358503222831742976 5637085383804727151279126106603520 7626625754753043770467525821726720 -908864964169247901102531113518104576 9027888167490306655611494581927936 7183852212542988843556871864320000 -266920132708435168163633778495848448 7257616250985509351868360554446848 6960525015684771190317490559254528 -622799777403210613169558046917001216 7926749999799308857895241285369856 161064805095783190731517075652608 -158404681516219619560342453582036992 576215606481197605675046558236672 7962272656327459672877983258902528 -89298643318031531040177342977671168 5007313059281531357470286606761984 3213007279829147809662130129469440 -126930432744367913046501997276037120 2859547101908751251579433073508352 9747383966996787305873341109239808 -316240395634102571883956789420490752 313006302396252793675773663772672 3759897858005990896062295705649152 -438938212687126503455384803232186368 2512535552019281313885133815676928 5616501811621228671405947046854656 -724924358473059625674058661911068672 7757839661685198086776161505902592 200138081057732135123621620219904 -478446152450794418396842668513558528 5398809339617453862889769266053120 2498897380562487522951856906043392 -976204998500803727155437737345024000 6845249072863709383197273043763200 5848459135647373207376128966131712 -9858929422441302811592422951223296 2916149788650003250851748952145920 8547776103404078082675500048711680 -317562792270991517877761599097274368 2924459885720599265139380623245312 4292043535962050911052222169088000 -710946832023947652365357625777324032 2582241853405866510283866940375040 1467685016186948968236282170834944 -25178472783800450477172543220350976 8080728442364163619497029618630656 8092014882241992173962566792380416 -865659022153113180081424647665483776 8295233475650375395526037544632320 625901245159462935916618870423552 -26750352158105144817934489532497920 2588482293008098960804138025222144 935660738728571395188636250013696 -74522859498154253170719244083527680 2686915898105028231455057024909312 7090299275320351196817322124771328 -248756347931378512394102705204756480 1757245424952244162305897705504768 9776386285003611033220746653466624 -967701550540354503566490462287036416 7829462574713465159965760481656832 9802783988128915506494807096688640 -668307877751122123807845954843836416 5457522178822065930603828625801216 6101638156352263902660689666244608 -743692706431546803328559570397167616 5199140258930536989610981923487744 8633740767472456534906493277831168 -302335542193171767328988320682213376 3470045753336617347734238281072640 8263535605550939924631102074912768 -788954619446619291616770332328722432 7655146340563780487132577181728768 8451658071460285297778534710771712 -839797193959641559051937745769332736 7758890065960756736059808107462656 2619608384047679383528991281381376 -106376830531652925983276043234967552 6014593341593803331639614432608256 1218031584149322621800080660758528 -522582239144343575214566280030846976 4744050195238675785513645656506368 849618136395175592368204035391488 -541337918169297857145818597365383168 7868750002811347885345256354349056 5919791470245332152679355769683968 -12141101426172930525967285525413888 7134347329208921274804308489011200 8074220215494002242438830730772480 -519302345372818021555325947537784832 2229942443191550688711486654644224 6829764322518765566715017054650368 -689799250577905137483352188733358080 2589294532105587451923573935964160 8353385224463587806343729342578688 -41117309945748013781769661257351168 6626852398049090541052932866965504 449991174233258302788691378044928 -925838858545546179739380236303728640 4152552397719844286992201268854784 2871616015999079682221509414223872 -983308800147070889219772589138771968 5544725089796037489907972542824448 712420480149537015278808414027776 -372502882869797201149818969696239616 7922181075827843582917715536379904 2160518384734200829434351725838336 -866406771989948596547172196404953088 917312147257500211535811388112896 7808422941194198732378762140188672 -394975295125864166681443142111068160 2583657627403021913922763724161024 2381866089207658763090626376368128 -717344959414949042816662024442871808 642881047866177118852528461578240 4433945475039481208234519415488512 -220921773955166268727945855227658240 5862050280429814151374613839347712 1942143411079905999249692059238400 -424632727469568920941846246046302208 7768929357064003926063668306903040 4732500296953060565246406851297280 -16183780521017334115839273196322816 5283661631429952162229856136855552 4999233382987128461426537961357312 -500207177594188399537414074563297280 6581065086135155307722204791177216 8586343999548757052578374782812160 -841253232716020481642485125461573632 4758877094016610972034128649650176 2423746384352659052307499077074944 -411319189367163958946478446931345408 2220213285563341679891730210488320 1514531517473806520673923676241920 -796062579718779688811692485823692800 4517504479253601831627623080394752 2050912058819681073912929767653376 -479331567472123601900090509280411648 6481962207064428715608111658827776 8430318818054993329913594745192448 -718107775868482627168746872240078848 4408405653092455028322976189644800 4634693214364514660058967484399616 -20883157253323768989310243611607040 9773077757402129069781694933893120 2376557118665697797288518574145536 -406158949982183460218929249005862912 2594331036516571632996187656683520 6077761959786587311579178257612800 -309184870545287539252635447234396160 7583931621000189548407470749122560 2243342705828630081661488559292416 -3846349861191543607835121525194752 2943728703425222235186635093311488 8250380042823702632245320803680256 -648451630856946353709747543925063680 7664129483257641364576760064114688 3653396111136464421192528021159936 -689193453052068081131194867385368576 2266223200125721824682346224287744 3702422657897499935114597100421120 -192243767308809485175312850387730432 5160612061078083656665327682453504 6988033423378889465974312289697792 -111459535622459314943047694693695488 1608977372170162445121652590116864 4479924329111243008281511039336448 -82802230689217453306002915748478976 7854018629515409585983683989340160 8007522913863220078388782372487168 -890217301699310331943177924955340800 70367381207228396846702596718592 4787498531975208019525961118646272 -25158130063094276205740280151801856 7921351315530220652407352452972544 4975826076280452011597643691065344 -999266340382652766895417630595743744 7543194127109480928718679491739648 8769435284660568394024472591466496 -467774726862384422516806416399859712 4550269743641554301859551915278336 8338117209756811503038768701505536 -440172017373173140847866603494178816 3244871404961521369380902139854848 8250911153413313583009765104025600 -191335872751072615813454096832135168 1072094768247590858533718303178752 7553362619971891373722036848295936 -604560587027918215950407775698288640 6248688513630988206414251266408448 4045584760513300890728904907554816 -314187910656105691941856077978533888 4716120478518177116662403212247040 7154316547394806449388786710216704 -802168315014754025266839019575050240 226060136966437391093386000203776 3823986149878260107055952983752704 -943668094370459309457810785724006400 5126468587235245153241923340730368 940016704816157378552715794186240 -388136211514691254751298208783138816 5721476651988008069024331507695616 2334111167829476194825844239106048 -422735344665206551304873618599575552 4942247426089337755607914105536512 2704767594003870746858687205212160 -999025672370589243181115940286758912 9426991220067661848686854414532608 1484931955306364567031510495920128 -370743390366387681520124107809619968 1514845829460817002457615139078144 3334825251570420487704521589391360 -418936661802156870357913429046460416 5122499793383154546115609179979776 4894695553763084723401068587778048 -549737148277823609610426137540820992 4093137246909839332644516108697600 2661419836190576266226190996471808 -145345811464341858992006115606134784 756422013975638025178186331979776 7372510883924743720294199655923712 -762084837934576312666630713728040960 8401768505748410949461716525645824 441940258913297979545268902690816 -482068801705428735550766655570182144 5705200180215283008679825171808256 1517760534927608702513392990027776 -518621262019721057816589994798612480 3781295973459766702617116413001728 1978299480955939119997676158976000 -924045539466713218652454433136312320 42568846439282822178432069140480 6602494753273383980801349090541568 -918222076815814449689545684715307008 3271041935481944770074852297015296 5859409728144088791144426232610816 -166131309759468303743918824652537856 321490644498581954202656539934720 944488465406116220570009962807296 -520570891076004267742224358704152576 6697841493919375773417138427002880 3969195409939477970380190449139712 -247113938654740757222978221695303680 8862754075555714113437578911809536 3708227325103020376862782581112832 -700780068962279416328972997406752768 6274594586489693692165093645615104 7398063192101125736508461252870144 -172157961439897600916488139302764544 474825043354919667554775465984000 2906791370455008437217457510285312 -704553091135305962346063227997126656 8535024566390974476533925146525696 9208864940598495904104914289164288 -613777118328267144957637361148100608 7242207283632751062036452923670528 5781973573073125786874998555672576 -403977528824550997594115609769017344 8971560329279317686304660885864448 7247533700200761775391544818270208 -630618999192117021255040328869609472 3116300959244939090183729690181632 9538863694643627434881956295213056 -663967679978429657059228763690106880 8176493087256240390104852715274240 152399326966234564408474131759104 -882337770213881752183864277724037120 4030756099511191457274382671413248 3032668810796275522017953757265920 -773587565523404805395792955598438400 2947537076970335500978442442113024 9527685878943237820725250177892352 -989302975981996445017241806163673088 7852778861325947005708688445931520 4431126308868539053615958319955968 -796488089469528106542493930052648960 7511871204031153677443446161276928 8942602658599970972648889347211264 -257695865825678713468066505200500736 4160685033715723678353383617462272 880199973655733471429439503990784 -679513246148252012566735523600662528 2046189287662151045313967819849728 9333110614200013255206679651287040 -474374686262849754223229996235751424 9035436286495231601246719721865216 3699247341592537077269884747907072 -363564179126549821178351451656683520 7430033978083817709612809293135872 7434013356198376812599728358293504 -333992574243286356632867083921653760 6833130626823288666613340870541312 5403775272534689125124328518582272 -567580954000417820759186822899171328 4017677753520283033755811850485760 4537640271795213811020331017568256 -569827530350651656317879277366280192 8151143907962485377175002183368704 4156139197102347823422950403473408 -452866649807737401861839397723308032 3752573159875159304646045378543616 8383743980091517123507734806790144 -729463130736196768643457616197976064 9872092439372990019939715105423360 9275507982265557338266013022552064 -695639275796338293197169887876743168 2074911938532950790996250679312384 6889440271456038182866307889758208 -616255232057856670993294057122299904 2570197481940650146329926609928192 3423583206794057845613715213254656 -871609873347216668152230884140908544 6830433753101547122407933856448512 4303744126906965506017391185756160 -343901391789899964731549479052771328 1890058621255648730932785534992384 9529897405428408470323916294848512 -179534084207720334710493799570735104 8232312348077441504031682561310720 9778019404052609178430558468833280 -585763560851953056156008507332624384 9707131306177725688376648326447104 1565155229013372444529706626187264 -313515912845204366720046704216768512 6912876256254046155742086145507328 1260117677614707360037354386489344 -528790909647702263322164051054690304 6747186006097046010129970200838144 6942601885572565520562355949273088 -543214556625104532756017393141022720 4049565246944391490119623535230976 2094195548087931669652328763359232 -980350278025236416090032146407751680 6847824653546169539861229305069568 3985434747003533266194576240017408 -314820786002326946526499705735610368 554914184737971429456870778077184 2874069112442616193417149327343616 -827183325577935281700286038129246208 5266695183777036729373525152890880 3326813138090542831289211885191168 -947044563032013761216950135787880448 1404139433838743168840078452588544 7220244930969835136425377012908032 -385569735700601809621052991672942592 941797919208369138496195505684480 1699419539514112724750190438776832 -751658557796162649017747774963187712 7496918479198431809594965052358656 3227362361347769591460378257129472 -743493623732442245118127793623793664 2657892169028763545792683658182656 2461667766849813605742519175348224 -623429089288019552926553546063609856 7970971941163668208567327882477568 3280712037667747712288002106458112 -955279786541306936172142669632372736 4579538542549241320726956896944128 9989270581064195046081432146411520 -362994482253250170896915898749157376 3061317502259297174465069061242880 4458426023126274826424143400927232 -156225686396376686606288516259250176 7964474447455927150846078277910528 2322925521791686926081033594994688 -501757543399137193282649097876013056 123314250640414416126093524205568 4089980535546254711790152099823616 -63572671965418287207681532325003264 1373596596468803824603341468467200 811487616814187280695256959418368 -703712073462920629593770702932017152 3170741889339002475852581174247424 5203847280269343826339069186539520 -679932069099454751533510977721991168 7798888319140975803844936048050176 9854838538740613861280758479454208 -932714049244079907110676333131202560 6699756459952522611182312676655104 3392265960384496176697178650050560 -234128476941621941629379871110070272 5672650394249011272980533923020800 3026640753396776878139483485110272 -134409232932637845185633678658633728 8192268237899633119275199099830272 16790794901539805166561400979456 -430905140624791852556866649635946496 8110890459597893351311674064240640 1582250829274872276012264163639296 -680944292069676730815575204391026688 9054118525580613815447688501526528 4767371421729173160326478495219712 -977873627126392233542939254296936448 8383271561127557154150388575764480 890474104987450854008964824170496 -473202802405513444449519762090754048 2991386269476189379318359263281152 1909436024748568843054305784102912 -678826595928795720725031133642752000 3785813610965992379094998494216192 2406859818373205420626510472019968 -643062996750796532928701852637200384 3536690136707476667846129042325504 6596428590987200282478478522056704 -904697088867570901639145361529372672 7175477804037579173949205850882048 8918297424024086493749490099421184 -456905319492939478694003231565021184 4659927403567694184083452973809664 4253886667037807466583787160207360 -501350228048168050794097452100091904 2873268199054959026835641579077632 9851386519484882025922414365376512 -997232115434744163399259173072928768 4474288138228339017626677955002368 6100137881730616483549117065199616 -636140824559383680171470912787316736 7031106650380508133921146651279360 1548045196061657014249302674898944 -310117683562451127026804938533502976 1204045674681878702872080980901888 2207679627841670487185618488000512 -277752374547631131844869895864975360 8978255245969013349690439693762560 6281359274917952959453668325720064 -474394756626449298598133055759581184 9698752771363336445300009099853824 3712164393795414271728408103747584 -138923983077755861778307883296882688 6823479643899774098153222099173376 1337038061999857778796570666336256 -34249117348908540709198400843677696 2624496593616699692206147279781888 9255187799420585403337142626680832 -697996301944332961994122899002228736 2432632761214299045988873615179776 5756661084840585680206276344152064 -322203938772190357751317752962875392 6302945684358241557678722931228672 953233412241789770148659071025152 -619706361182366395280876714911072256 6474815058996248791391550648090624 6473538007198161740806328663670784 -67577833277364290599505680519921664 5612151316442846188603867528167424 991605844075022462382480566517760 -845038149707219873944036932191256576 9916357407031586826302278594461696 6486779640984340531161405818142720 -420806133924901486105790905168429056 7907051589926213404749703801733120 6016276826080605218268813071482880 -452747205403353816830564999727415296 4696981003763650361165271118381056 9132014690164465125701626896580608 -331261757212428078456446645165883392 3247767001927464059665363492667392 3102032393880923154372779204149248 -309500888490239942360807495014809600 4032479417376323045975234634055680 8079029042292420188484961898070016 -15168973246600331685588167410319360 7104300073335116011809953351204864 2071872146854536910119362799599616 -137085827296831667855954376128462848 3962527947857154921321167170043904 8897766343319321663889997974994944 -244590016735993277793136698814627840 6959401418024090163427148782632960 8695211351872585839123297470513152 -103240847385560569439279450626719744 3540373755573406763683824369926144 8900290872372021560114826388176896 -9751238595066252251550304004210688 8198109887861456478398312249032704 1838378593936278949143767244865536 -141940383033371874367156065440628736 8259498401582761405272392613232640 7625656361990356282035321786335232 -898291057052921997624963818210721792 9529255208431373713866673784619008 6708121849973303086110847851823104 -924962652367527751995935972288102400 974562469776661502534027971657728 6733808830818056325457436982902784 -539202293695597665325280790786867200 9252272595050935417658551834771456 4384937887879341439455541696921600 -208716655240291050099126564059873280 4614532024187199277615658859233280 2485008063452018480322479386525696 -164021067793733532859501923249684480 2668357794971927831576765548986368 2681116276631722874473033368600576 -787159980607821710895522904090345472 3133491048793573692350116724211712 4864795456787006519841759355207680 -806426296173741715680164702773575680 2881836522960241625505784479612928 9876068748896304629288648134623232 -834238904037285357023228728057004032 7948848353020540369620002175713280 7704518684979431369880355328753664 -344522319877804714529562680736350208 4878723515825537703101255288619008 136268067630378890674112758284288 -675295412616482346347674940026650624 447714097411266408544130377449472 2104381909100968280744609508753408 -418626892218411076595040600058757120 6829655382070950628257632106840064 4944729179101328791269265834508288 -598145493131138009658274410460610560 5041335626872934658567948891848704 6789710504611957597502317839515648 -457620522173687074472923166758928384 8183909597527426695548333446922240 1458109435572598312191353174360064 -609323424860151465815168526783086592 1957933780354844101571075809214464 2759875828639785779626155379261440 -194445907974929503741638509154271232 4398843857365503809138837101215744 4000519066756144286490633298771968 -13002073991452749483937309577445376 5632854015787343994749493962604544 53326427697294534712881632509952 -707190640635550662116612163076358144 693562072542653316618833688002560 9274613175190586529964108575408128 -525977305068853824618404092934356992 4567909157087037130645959664992256 7106584076333337367906883597238272 -651091661450455193720571771396030464 6048286544332869418544918438084608 8117181146418091718942173008232448 -529765213817048578748758138051100672 235922834371193708064882540150784 1546102644991645407740342975856640 -6719581871583341982707436562153472 6313713814541991802969524440924160 2065993365236456792532344541020160 -72668875244946326167518631291781120 4093548490495289915394138767884288 8943640593512437720592082230312960 -372868748628956711993961195457478656 2372235803533922452677993693184000 9958565970922041110577681782538240 -231028543532603675444986179456335872 5776596600725801245558880925122560 2455631481563630046308897292025856 -425000128750061564198846478126415872 4281370691768206880623164861186048 2571402677400800218101090233614336 -164295347229724052271290686474551296 9467249904505978469397230967062528 3858936933702007477746089081176064 -124082763588407428586049427591921664 9504146662650497719004798906269696 4179262576882112387100365750796288 -699504590787708309040353771620663296 45506435108800783130191697281024 2215972863724599095362736627908608 -684978406251019488425975698641911808 9781257789993944711252617969270784 9616596169226310053713433755385856 -701456552346460096901754502984499200 6951371574532101682721307045658624 6337982115512153373788771230679040 -649805467746643182491906938855489536 89699618551129756420234633281536 2877202254411517908255000968036352 -318453448126102738438172727819894784 3054824962243425745243911216955392 1747327468329835758217654337273856 -247248588461915269064463931217543168 1044400823544439909163121577558016 2755575789491344157682027821268992 -780305570603137535119659592742600704 9831628430941854637110977498185728 7944577036457397792859378600116224 -682293268748448359250464308327350272 8411583470368177032311324849209344 4225394200503524037605564790865920 -921240445050827807362872468553334784 1386254915225108638219536942759936 2221611022591238694172365317734400 -665814513078617021691244372824162304 6781067126796218355701890099970048 4600778738315163855492417857781760 -917453746561520205151952127372820480 8331488724438029932670379655954432 1858525099721636036227201287323648 -43257615054039198223148762758381568 575572769390374630463315480936448 1361118893313979571685220545462272 -896428805548582575735845741953810432 4040178993459002736153794132836352 7260017733931994649428978340724736 -706758289814186091229937406738169856 3752071011362938647823023790358528 3294521909043181436482897305403392 -733832659546071182350390001806606336 3043923674414362070002908188901376 8719425865758382588976248920211456 -153055727313933314771896409593479168 4235928738518049833154079572885504 5708331877678599423245714815188992 -865956790498135451580973558502785024 1154114828033674328532798977081344 3428332691111597083401357128368128 -50221977077982691445870618614956032 1331979052016754665974624143015936 5387146304057571637786008281415680 -338688150892495685754730356594966528 6000633334769746392941518873690112 5651822180463489720036555747229696 -795617205400837731401699274117873664 3572222735800105252424097982316544 6966388831977248688868191702614016 -924528088509734726545160448503709696 6780489439284530240257306128285696 2766941969851705300767172127096832 -158797134827152704628356024805359616 4133705685744373154317282217820160 2656719768655701902064076019728384 -845862475686004821519508469322874880 8206876430003251601936623400386560 2237961840559588321198124056969216 -879561109723639163903701788106162176 3901311031252703666309039732555776 4785419334148265587210080470695936 -744343361054595560968848064827621376 2149806517678648605316476561260544 1260911833644768296842147708010496 -509351456384646026568835032368021504 7028173533366265324708140928729088 8697333261327590651224921655476224 -847183873845623243068304230702907392 6702018572897123393752199157776384 5551775122029092662288642012610560 -47302055251871283317767576242618368 8745546176688544812655831169368064 2780126688050257997314863520546816 -856833596498721024231003161312100352 209482267665460043878682702381056 6489637728663414684278881244938240 -369086536322800329238620688170876928 4821758142614297900566480708173824 1814202746804458206931110370213888 -250222200965448104584843986265440256 9284397027116740388017973407776768 998856171434939770700467036749824 -655215919214406301695858205748363264 4124400230303268706757768369930240 2259540554748581618179883118100480 -69862533919943881103819789377208320 8909134437856223901064374400319488 8152719997860629209122662969769984 -90912217651049231826262180317102080 5519201754458485419847224349687808 9583394807014030846592595269779456 -427612759790879397983132085785722880 6908311432412072697876463136800768 2107484798043459864925080639242240 -308488457878412335314810156345196544 6118714093954649840861159379435520 7586907778122522183358883339173888 -313868090477920727112800057652412416 7684147740595585110460831289573376 5843348111565518596273264733978624 -237969262071508881008588198693044224 2452179120014018394949959871889408 7552108796722820938127009583726592 -266214994727100435711654404575723520 3249476713037053985551826565464064 3298845198263518977841400966545408 -915381019923612305787579377567924224 8012226046936925641892291797843968 7407541254674455333744177169039360 -54724324966399769932159996802367488 673493612480713193373787662319616 5995721463765693686756514319040512 -270836301196237757471536014971371520 8392075213402731749341056515178496 4851772363908924639681865737830400 -652933407378059168476151859917094912 9680349249154641305030244100472832 4587133404242461495323939953442816 -27757167443181387696803216296509440 3891218737402226560286153794125824 2356858846931119415323629356843008 -937282141504368729842046630885326848 3135742226024591468315800963645440 5886283253409450032577408537722880 -791617664165526827600760466321702912 413853588026350066639889894473728 6308708273924663987991043708551168 -29886111247223193603999839691997184 3681318791169921008876236753076224 1732768218681313291745579335942144 -487044832081243510425416284174811136 682215235518619944904769396539392 9575638303134074191263292874293248 -328615148855255279961525878689628160 5420366496889467384146431561433088 5509593384861873789044050997805056 -386117343480636522551600569460457472 4591814605820990528078120294023168 4659863018407012532433888877740032 -652739619188207732747273012137426944 7454769738221247067921393502912512 7386574613437363850853153612234752 -323375815119635609721544272519364608 9985571711282400620456427378442240 4772522303764648342839512111513600 -581860083072807669763833533592240128 4712033556915009288439106522578944 2602899233044775948006644527398912 -927259164707534162789377969305419776 3031333018221955174887849279356928 9749919663702122496814336268304384 -377183718629949942739775126050439168 5395376979968423779438425995739136 5354761388530673505066962084954112 -716125355364276289851853420198100992 1820375893764373836282184326971392 4752305766829958885606131075383296 -483943761713798114285372267309301760 6002619225351959311914422375546880 9595404819218521556487830692167680 -483090910568861340456823929438208000 55788688473003048187051177410560 4169828475444310202065570456666112 -665347828997849562382459012560977920 1005792762488989632248210146721792 1063824010309077883161953773289472 -281325357714527998040999948175015936 4280512914995918653207895059988480 2073375674304109726743991808950272 -58200457356021926409117802162028544 3508482379989021893306361111904256 4318582478771810012505112219484160 -84532676932585789480146950779043840 3381815161628419168151022518403072 277344360353529111440389935464448 -745644907371990775974780142612381696 9524614334477421622800685253787648 4803929421958530110729453452656640 -31379581761070705471433770685956096 9931779457661736759296117658615808 5192555786950272676270366477254656 -904883698609262177408863982042742784 1804968943545930587439095208738816 1816999101894345660324627766837248 -401841647334045239719794539556241408 2951114486342427246693548461916160 9377450583566075130490418091786240 -742848943283877228976743628373229568 6474601375083059531046967469670400 5097936991985053398417873861345280 -71669901962828169663699473699700736 7431137223841012724061721419841536 6761682144667639844402412734382080 -722858622731891126946705972186316800 4937379138590200971151125507997696 1690979691182697600345931677433856 -9046348275446621730891525263458304 5286381153518944214136032495403008 2781901934078619334319984785489920 -140062691959628210387481584488939520 6693915356439940948188609418100736 6785268172717934719481262586724352 -643688086064342711995591468804734976 3895882318031247321855204731650048 8043601133013958520767796429717504 -210530427455715799817421505028947968 628450593114308464730127523119104 8871130794338737189588000774815744 -987934306497538573172464678460194816 4603459271274974430712801058095104 4612756375952941345406839903223808 -654085679400319392120132834219261952 708295980190245284832339334004736 4067827110396469166201587370033152 -611258681535136861715438011137654784 4959454591742441007995345795284992 206012685768037199417576773386240 -553456536048647795660361261616463872 1176105442768172091363190827384832 8389121766007878773346288705470464 -906216886691183204288029328546988032 7237138094645492801618704594894848 5420247062771320492806254542979072 -869899274035928610292151672916410368 9269192735953982968985113415647232 5939705180564235945968041637969920 -943784335541166615877233256217706496 6489969205742831166399866571063296 7543661748990556368496805086756864 -34133486217787821488639973800280064 5721398534142920572335720453111808 5554772275805316483164958384717824 -108436809865165413080208339460161536 2349149025827438327449218975793152 6359865765491599173038389373960192 -591411390752154320040704374497869824 2136413098334689065617282476015616 1667669867180314570079405252542464 -120550443012730770839810173210460160 67127045752621419521590064840704 9881059144607957373288630469001216 -120213124194847485674943788320030720 5096144255436673062340891596816384 7322967697653454076179345664114688 -405370134241338489415638059065540608 2359013215284160869212280154226688 6318282205878067751865570274836480 -879928534159259953092955894271967232 6182646440227624806279298022375424 1949387670326596170531356335407104 -840466284658973559189935224799625216 5765753221633469477594991236743168 7467063358029859795062210066120704 -104074827241078068884275359719096320 7237310370245276058124147138494464 9140348511634527069761316916822016 -90959632672124470732008824300896256 5409766675657914603423543666409472 8730357782640263504339002766393344 -842264183776798008638094181241192448 9770979467940600697965633985314816 7841672485943745405114413022707712 -821697761569099691255925055198068736 3742369208592729862687701403172864 4508964641493942629522666233528320 -950860032359312372018642102219964416 6634738531917614323201983345852416 8930421545129074176291307717132288 -976954670306780104607435771059634176 4608733822644190657410090353557504 4454431905364351694880519823032320 -117702422213992919506611289116901376 3601426124113687002457443821158400 1504441728899067412506220775342080 -189605827525681704705743006956781568 9400032032054086328306723215900672 8847678352163156733975841849999360 -492208777083608772062598319937945600 8608300973342815078008708808048640 1081916881669414149376914176868352 -45142268959250865860769279998164992 717285083538931812566450393055232 2953253384362179766178005269872640 -532751633895530767779170827578114048 2144372726440659660612088419581952 757202870207306881848953469403136 -46823370237316316808310480560979968 8851686640152112827312816829497344 6682138351566292058362814010490880 -511325404451187069673472794602504192 2638848773914498849195609670287360 4631193489951496357897075593052160 -480366336379194501134042636562202624 8841593882735505363144339336724480 2715789720463324181463819586895872 -839116006015610175730949210796720128 4665598153366060619037197215989760 391848038646364620689088836534272 -293812239485815100326119955949944832 2810901868081959352952095512723456 5755054207676441469275934596005888 -51768929552578460577372554584391680 3946712156371223699532171278548992 9730603621272609658914399441649664 -56961051303521348254976919780458496 4311076208675330905299171441377280 5621788235149514748236436726611968 -131046148445009307609419837184409600 7967001942298080667623208937062400 6552519590830137568412164964745216 -327286939070295627381056778432151552 5846906544470451814804519347290112 2056962555774452687671059917307904 -999230360881095107414487926032039936 3587088434813922471759249361862656 9584403050767380146456558831665152 -726127128674159324019132684480544768 7000949447095929172490996708016128 8158538654108914714855344915349504 -738824585869678582055590080242778112 4483147253876528624898022857244672 7527381872437536469410664100659200 -797611048394655733442915131140866048 3948753163375958174505498616791040 3802168762451097042245514770251776 -785004722828856984018104722286182400 8993527822923196573896362061463552 41763579616192012111824568713216 -830715331626260294097140990076780544 5508266948565435056862051115728896 7150124773263663475555146070491136 -510942481250675856264588864629243904 7228015589658774343560041815080960 3589273532125141818372645783076864 -539835957582671849652920272449175552 4656575323141411451004875318493184 4224426556151159002520222326325248 -369416671172508449973363436268027904 6412117986286373198926801614667776 5032421252007093072266248218214400 -577737441656123882385867227113979904 4943302087103367556316811537416192 7379621526616601149486345314369536 -832970707826740848801574665469296640 1329738256497042698602291849592832 5027578337568369974443048855142400 -226118214588283746961115239652786176 6879287658841839913616717469712384 4325074478443268063572300258082816 -97246381253479181104478198492561408 436521970292914331807961459982336 3204761842748054640871835732803584 -953864295964927632396986532994482176 2492586501500198077332877203210240 2572623648703176146673663349882880 -634950935233693172832772166325895168 9286155827977182995933832656453632 9224672913956680072031419699822592 -809888578655959364754471299458269184 2971161427876529680678439150944256 4295152195217857914865794487943168 -576152588015765314159024510387355648 4546435098979683745291603225346048 7014182217402261791922489005178880 -853171886429964158167863779718594560 1568521257040861978527486212833280 2714502409830382786674064441212928 -481017860353447452752034815306366976 5548898418647200619968727550525440 2100427758199279723525508459134976 -500356675176165774750675122771722240 2993931368401588385239859279691776 9582799793300332883069511313391616 -660348645405606994730095992316624896 8356240971184933400829758898438144 8248786628171756712585912656068608 -653486398147848108291430402953838592 4883209864110492285368180334919680 2540843061726302788125024992624640 -723746713297924219243804547946119168 2074105999331754615985932739805184 9177989371985066881629501956030464 -203735645492447215599238222259945472 1148052001458526356900486622216192 5103510532303745244261322141466624 -833376082803324449162995998864179200 2138640858123389918030518768631808 8969169828144584992650190481522688 -12971363084012052419676909718208512 8331255540579529243185726097457152 2995734526498626682584896756514816 -678615423045270714626162637592854528 4573427112760463422263732734001152 3065499915611934019922747073757184 -215653129272549298610513114902298624 1097702241997078187038068919238656 4929950003951143199376158897471488 -440143719473615694430675915346280448 8808343917309597237998905574031360 1375662113814334291932294259146752 -903318839576971865781240308598571008 7664823774184122204237633211596800 3864761810015885814748781490470912 -506745605999214140454228734196580352 6033854660493465657965762383446016 7417978982362792723393263609839616 -33801353643407262912835968963706880 4583037941534644894772024741724160 3313387657397831910770038271901696 -350645995926632080396404971874025472 9450654472563309068244652304367616 4919219756028253577037865124102144 -520231888755864317985295408025305088 58927915421394763166778350632960 8276328340617261642350570156064768 -899648695405719302812375243005362176 1222872403227233124845491071221760 6820708772381112374247706100498432 -888358849973131910815138004374388736 8587826711528713210385606436192256 7882169928107544918572236055511040 -265129061471061123341454907021459456 368933657811916599953764124721152 7252279606262761752240434733645824 -787230830252585420318639025798774784 5184833092829387261034519815258112 9015714870542957143794087503069184 -291019986535101412942400057623183360 3845626972682849807299425748385792 7156586627367111297444278781870080 -947591387326015004354691609969819648 1273181673798510081590016371326976 1098968135455756070144939191697408 -777848517434395303719680821510012928 5606464285794570175554222284603392 4977193105873048996425833799221248 -153964312721607758866165931364581376 2975977836363019031968742870351872 683963065328748304089879272226816 -745833271781846457617710728274247680 4444096353057207664802921329983488 3399105937558693731019563202510848 -670712461541360466835161747436863488 8211439641969221349465597933518848 7585225633735320142740417708818432 -865802342989404012653650065169055744 9120590109873538706480174655864832 2057840243855187381167991793123328 -505109776331439561007052988035891200 6528740391879746751935881525854208 8237977961551455158319947538497536 -505912338319145994596823265370439680 4865076637497875922636237004865536 4524939775650434848331059395821568 -959140486528395776866602975567544320 4001549237348055900563513821626368 7222716365234954472218338892185600 -356664409640945238455647172376395776 6892464477633736869944177492754432 9116161656511463661442432973668352 -375271862223235102440272028416081920 8532047948754922471890503375781888 8097984667088002095982158249197568 -442020411909829461304544498037030912 7572993413379257064516502148874240 9584219231488552179927570020564992 -272394363783228584589667660613025792 4861372666728459237896359723925504 4019735638578950867414550434545664 -554310907695135438720847586953003008 4462474615768717914354614666264576 7914508044086540302197745413783552 -64282039883230389442207944995241984 4797434111151326481734282881531904 4943161909637275980161340959358976 -188276003703849843776717036877512704 5465323514266188862180743798849536 235469772557412006629101312933888 -317733612805960291093660612681531392 997899472109384734148270302953472 2162967760127067656661307704213504 -743093514124772666485898824772485120 611229492225635887402861499252736 3128508692231296123146715321597952 -236206957837050555758064375355670528 7216306382435128302040944258056192 2498943530703374340786021308825600 -647552267017552758703936724562608128 3659824003528473579372259819126784 6893416109704196076154150260310016 -237839602676393622201708758515580928 329066485230675394932024832688128 7904411757564974739306795738595328 -961106043127881904400072696433475584 1510621332364255845201265400217600 7259278927711720072904532486520832 -184889462207536092536981059021045760 8625763908257235418856601304432640 7028677490200826367002633079619584 -415902014541422600864801823802785792 7989081879315245988959201376862208 3091830284653364850114196613890048 -11285573196269038808839169408761856 2503187034947211194927545537527808 1920052992602061613986897746460672 -810292290365147119614575580538732544 1304137910026733417782535476215808 1494527422653870819819585506639872 -583693704980320476732836108774146048 6584774937728702337253356941082624 413812376159279440898878664081408 -521924314527689537851715644425240576 9752475046037664986896628596080640 5793328756203683339605254181224448 -221312005034840015296063669746532352 4544022872109339052642697767550976 2333287222339136494315578492715008 -994391276614305607631104357806637056 4812320757668451418935049012117504 4130886806611901911968346829488128 -997160142486914340369998506878828544 4469984556161085773990643632177152 962031194454275258027211667537920 -147158359620841678135669760033030144 4695756663017708674249789345366016 2087161385341652191347473207263232 -286720238801880552534081508334370816 2617522009790976588390731966578688 1256559195559193123405008031711232 -245207108700443021687460201337192448 3342056028386234273765267569901568 9011703612263920034173190729105408 -62089165410707805600373941251080192 6571222553344788967551827974291456 6450454096979970064618801164451840 -734317901929169389860195172333125632 4504399872907375193084249306562560 6140010127671779242815135043026944 -946805709798409101277191299305308160 4577051992454362873182623014846464 1877387934489824752401526047113216 -448164479444690872713876690993938432 418979037089393414221943170662400 9065998238470845967387204075388928 -973447372011332905368497515583766528 8032578541384177840998518081191936 3475688770646376680216862228742144 -133488684156214060741005101284458496 3194620244229925626321655555948544 8573234173995068601228712621375488 -796347481598302799446296963137404928 7970319080073469218405262932574208 5986357437971192258699414470656000 -748341132441700755096251365429608448 1610714692891907720860041020964864 4867574023556963833220947049971712 -484169386119615130441059826409668608 6113514513612780648692593496948736 4013745420550544517213531527970816 -658916709577597983135635276233179136 5030424556140787571723915484987392 8837502125660308613033871368257536 -280932935068614098261979891916341248 8853340900098340918304969288843264 4674516952340794072671844411899904 -970231844121423783371484496572448768 5148279314001772093427693542965248 1537868194378915888862470416105472 -131998032273434229986940872762064896 5503365290298067674040386885517312 138438528096021406879192522424320 -832804640312014772892868690120278016 2472113252753879540668734801707008 7440632732440392645311173731811328 -299872239588155241257167863708385280 8458422459036223588592562921799680 237429072700078630611094146646016 -762414241128522389071247031884840960 3533476621871279494743364275798016 8266586248611615696148988174532608 -824687202239980152560779664589586432 6399403241688061847157763165126656 3873130657019951549706556596551680 -693258652168625548979348347587395584 7858777614354174963184390396444672 3156299967686373068463734712696832 -986544532741724940030909516435423232 7921170658487182981565487974973440 3575538051439299894765246832705536 -209538755762613326493913837998178304 137266276622914937305052026503168 6413879049878046667569948218359808 -122529397281244714499331365361680384 1774562257082475924761553213063168 5742116973992913425501773476397056 -191720086876145464624043675560706048 6656548930204114393895842521022464 6136443451462109545819235216785408 -157221283768503342944831933555671040 8929600166274704507195861961277440 264810286612108052762725072240640 -164939301397865911883862599266205696 2345667782031132119993076378763264 1694108386071616059604260513382400 -880347382415726282432046451214254080 2965751064842294429434828130615296 142186831526744785207176957263872 -123777913106136808546055352028758016 17020504910486210592131447259136 1894245785593003679201876712095744 -23074732521262026255552747214471168 4148866474681124490901171749257216 771080312106291915357410562146304 -306662645014026448658725497697468416 2863712543562906630459552329367552 4200637977951794318158129553997824 -948915515010744573534960482934325248 8405732066579187373733812323221504 8002522686097903337030242145402880 -797242331349533538059876322678669312 6232285262491724533328979412647936 751034267024334901459824884580352 -201790571779763767767129610885529600 9727099342321210217306292624556032 8720033867656710562794841141411840 -778352082268271173358081655590354944 4540178547346171922332136364834816 6338736740620408668968099371810816 -874300500885547709606626459455062016 974486844841671717475064878202880 4997014379219875896070194405048320 -61537999079403733741093205206630400 280412908349773077959448771690496 6754918473963776683461329389879296 -795499206657282224959865201425907712 1395708186523994172428294901727232 7974258406840483792683029810380800 -832212444726931139231191928527650816 2482917102372617606714366133010432 7501743261419148064384686995013632 -598500094811768104643684192682508288 246747249206018000332263052541952 1631315462452128275403024501833728 -163122510435242162471210157904756736 9529298722867032973502010594689024 8914423830226378622126014823661568 -11359993812336208485121484436537344 2710524829276726722789534460805120 6641600173467192995880670605606912 -244609748037109044572673789640310784 8712242344347576128699884531351552 5148666681235390475710817279934464 -256975065453292696680809630282022912 4010033455125719603352941008781312 8892104176067157652644148361035776 -55127079758690234705850958090338304 1958790109569134887339296632602624 4175381702248658698393282819391488 -659989960854615247537688103987707904 9394541902513815247052217952239616 2271604062342350867309871442690048 -362751013710427776566831127294115840 6370268377053795652350825591734272 6435980907628948867443179051286528 -924026957239122608138430280296824832 7273095065250919684435897109970944 8807297934090517161751613907402752 -593848898791197668350022872169709568 759888888046161589639940004642816 2782126160812721709763639851876352 -79236037532796892833236417551269888 491940450518878205014756875567104 2202260737516639698352447376326656 -17026734732713178230562565461639168 6566064706743943389642988290310144 2609243011600140428850913811103744 -960617818182618979189587318553968640 7162547278561066918311419719974912 5778737046052923597332708182720512 -642543274202439497910403617116913664 6267642222645829250499899568422912 7698062665601944295480552346091520 -855311358981957972647668900849254400 2306211750233554371630165928181760 8374770021648505810867310221590528 -733341450818899516082103833065422848 546740237125646643811752475623424 4832921097395070061717722547355648 -987152425217954276995741649976950784 2706219956260455948280551553630208 5828442450192094198345210374651904 -250395345257666934117316714196631552 7670354364986861920241992064827392 8443869977506734265920719597600768 -388797174358856871870577892197924864 1445995436612160562956567654170624 1830516474558105015102616257953792 -765184720428131134012697021928964096 4921633226301234984126507581964288 1084305737195611083429752600526848 -324793146999481686148584128666140672 9653556339301081794298942148575232 147892077276139916022840450613248 -169462884368644945160034797846790144 4741336052018541633788211183484928 2328402643228650767781174353854464 -642643872767344087449156206196686848 6734501823086493276329862441730048 8608347128140314959461780727791616 -779430764995434548523387015177175040 7256439489467988220149511579762688 1762242062252368753769695735185408 -524010686351663726706663183209201664 2735755870057966591792568682414080 1501008385258169669092667778138112 -720187817590507927189116338206408704 9044853846068154807925018508394496 1818922022589556853810624834043904 -142488251505027829902133675788599296 1151884452458422426603650952462336 8199841252584989023350491944321024 -854379771868918735602167715240869888 4706815262569164494321560397545472 3841409285146878615756721461657600 -416933944582564663241559389939695616 2597503173719476801426997202911232 5959749905465271928380819381420032 -823687557732913486991151992435376128 1646709065325798339448499699974144 3369768552007259930504549376196608 -86100760363804712127029078973743104 4406056537300038967873703199637504 7270225266522377799544170510024704 -247255267896246412523025060392337408 8555400304805297159382848965181440 328018675218789715719207224606720 -815227099185878359061452370210717696 8016323549750146942297344894304256 497505176508303240711049167503360 -981680105987079793238383723993366528 2620934105076243908081866833395712 3876155194730090977033681117380608 -459957994911960565610327637693038592 9263140206602828689833702209880064 5915378866451355284228195609477120 -803304682199327244045844690822496256 8484240726239517493075177822486528 824575226886641871552932067934208 -313803630900723472992692569592823808 2348007159414431138054434380054528 7288048382631047657568962518974464 -158395363332091027000864837593989120 3557250535597363977695567160541184 340848386936586104895756927238144 -336548994247857650511989919753175040 8404524335163183863788399488925696 4225950331098230359712418934816768 -216907844388383977318245946057818112 8065808452706508212341229379125248 798658930529813571954479810478080 -121765256012927069009479215903408128 1812831336148724504853822685839360 3185612053903266366821459789086720 -795591803877755754539626397201072128 8678385041692418397252922795622400 5648353350774868816032908483493888 -877165239597957996728659640963825664 9490490664484630548670746258833408 3058042439070596223126049698873344 -946428317118963358402616852742144000 6378473271593512076494277812682752 5163151036634849504123299423059968 -494454362161527172033973442238742528 9671501795405334232091604430094336 6866104520234976582455420904275968 -325757349819184979692393375350128640 9711597881292752028664064171311104 8875245666399724641076907408883712 -932935526834165671712870910008492032 1532216663592212812377464049238016 3737846906037308698066183019036672 -607569534333068110763249886430232576 6646424621103055792585298346508288 9169570242426305284471644542205952 -671531266049234323760844010470506496 4281883955730069528570986397433856 6152249839123777759766162624741376 -498801372634628628927782734056652800 661604451272250799685959759691776 2127163533047787382911035494105088 -843738777160692095112734970818330624 617767396441063207183488187891712 250928152036223763792291237462016 -314599669410109045201316240714366976 5140312090393882334826803499106304 7067010573744734696278931913310208 -147418302860568757749491305294069760 5494476689094335447332152600952832 1053827194394217424325519182135296 -957063194116729859890920913998184448 3248380307520563800674873760546816 6261284234026076772883814099714048 -283801723066099820608414483308609536 6418424696149913588880247126753280 3643027628656129050879445319024640 -677059203606945692932326172708044800 9631295897193246802197782714122240 5615763447444208030906672880812032 -830055565240944031795353344282722304 2935659203082562345363601272864768 4135112537953860189005034958094336 -331357314305133447624246727792394240 7649147647447572767624493436764160 5511018992516892959363821603913728 -154038531986216339836564283898986496 3624692970972412874558644716306432 9450439014060308445274632475377664 -370632376839296442267042813615013888 2367976741417073415451054228635648 9833005777677124128945993829842944 -436612005712322567903673303569530880 5939459576493225093819966481760256 2461680280706873893910721345880064 -66023792985245454531032956706750464 1900016722870149771622328601411584 6714048672937718574453181743366144 -65664516799911756620873073462083584 9777652476262201786652342538469376 6707188043007711725371811858219008 -258360208414911101324994432315949056 6105512422528078229098985204744192 1308689516953425557037198333706240 -760712806950036767883823877508300800 1547255569994688221049653204877312 3151538856806678935590232800624640 -359525292299975503508340476322250752 925831221750536778990678056108032 5081253261588940430737061802147840 -89679174210716157173101931721129984 6745079924687258917269241547718656 465143730626712813120026388201472 -179212848889050341464597663150243840 9820824289628033748098317549568000 6330037857990098457864709349572608 -946793542783389016203741443295019008 868563149300588299134201654935552 1935383357020724473942678295281664 -570523586929802266472257679815344128 3352282132185465485103269563858944 139064910861687229278166089465856 -638571146175180542898532915020300288 5697070083227669196867979014307840 390121956094726988461843094175744 -786774392292764622849642913842855936 607397262247366425424312823447552 3170316286789207461168779523784704 -230394394896933834686206998954901504 9748541415858096683000928546062336 3481768169766520367561429946990592 -108983431427704261054092777638330368 8713434964590433590512832879788032 524013786460956689835123286212608 -517951138792636642603004596053868544 6950913916738382740501837496975360 9684417132930417419588547823796224 -56783514683991466715485271933059072 4811784510754487111044373143355392 7844816901419483699746945269497856 -765499993847674932304300881584586752 5450192857083593078883970405367808 3931379974472980571215145404989440 -782012116649597903516344194284126208 5190010646583318289587333444403200 9536120177982965358200122050084864 -72071011892967702118346536851079168 7540244977894655637832200135639040 7072677576468928782333457412915200 -872569108605052885647895737107742720 1283457360146626392562984686714880 8370010926298928390812191651004416 -62228614083185845103135109645598720 9506472032520567968797079860412416 4431913105836355754857045090631680 -815766825392457956776513563487371264 6534273022787891744254130567249920 8952598189670639336284053921857536 -276832931294483686366612102504775680 9318453536500908005869941883404288 2364937150841608120406391346167808 -87616786474527300313444471850139648 9383854181982303930090459674705920 6419478555804561187635331550150656 -339487557031850186858580395738267648 813421946102339839666307842703360 7113834310048704550720089494650880 -830144424028877965822242147715252224 8526302990899450847279164210282496 98104789747244594202024762933248 -601104571007215899096952669011443712 4299426492832517701357916729114624 9799271402908344324775588363501568 -952133826566431122620472513313898496 1195895895116472039137033848881152 977736241826663066584754958630912 -831511972200145832733627257123241984 399550443828195610192676617453568 1861794050303143193084406913826816 -832819342095769899163542742464724992 3674678020724730458655097423396864 9228325816230070831987647569723392 -286010827638755620392949013859532800 6863541525531248111501018306445312 580262214273640501970111224086528 -397802053852036572933156533482553344 9703287722861922827895290940358656 4715687889880134131540871021068288 -118870742000044773646904586930225152 1220148602876893211163267864461312 1521145068147101200555437931364352 -208723050667613192552533978400161792 8429645948959386759711504774201344 7705144901978878101176995610099712 -414663812617922038576734464964034560 2989632850537016236497576577204224 4260450222194880943529734787039232 -723506887807120864110121088133890048 6107246366097231965039718177964032 8047375176374263821110282175905792 -641255662903070749731140261935841280 2352650575429062679427102992760832 7388564066857065044316067815489536 -475527492569165240396902850327740416 117190896489571544484052721467392 8483455533438680450098249636773888 -312846451487978001061493170006654976 1865219473014505315392794853900288 5557612599739754247910381687144448 -239872107921427912440515297034633216 1761322701790845938337188434411520 8864833270330244404378372579262464 -519860428835205632419164526357774336 8189848972738047152597196303499264 7799916962344192509044293147557888 -551795543934547160042235301579456512 2881384538782876124269924717690880 5352763346459942722842217775366144 -876441773035958493764840533660794880 9593822719514970479688397684211712 1244384784190486103051370519068672 -248060173731387512616744964954521600 3765503197210252062181980805005312 3408626799299807227339986991841280 -385719587685364118506146317037731840 8357231976120008704026898843303936 3023379270940112618841308991062016 -199066824931315350502785237431353344 7254777716902947691849074929041408 2065340711354034129717192369897472 -262244116673902216239475204401659904 8414649860039176745285829926060032 4506450595350135033968539199340544 -409574610124190187222602147151478784 4197000980501906603294184680980480 6748130411138954778013027253878784 -741794180073674411024245930458087424 9173625772006415757084318834360320 2985765383160354241173468861169664 -84699118780021759886103160557666304 1118634712710753324283394019819520 9997851951461926970770880980844544 -933773731555757769658844268504023040 2806450321256970605117087334531072 3169387152581839675871135847677952 -495261057469863250382015918453555200 5140314555676277035742848419364864 4217287731218413600455533277478912 -231903652627628150874763650725314560 5978164229905649238227183541944320 9036826599892250646031558328188928 -344910807634280180686139937295171584 6155152270225599843950904731500544 9493470032993337523829324516425728 -25163088269870915801538115978395648 7218811614249668006584004735139840 7906886479994750282393796929912832 -666607216773188497647881230428930048 944717946684410353909807865397248 8338284657593593924954795980881920 -407528533298485635296284344254988288 9245809760008032077182296376999936 3784722868304417135911069391257600 -487393387217321115457126414042529792 7290546137163505446354345556705280 4486594531304781375643600113631232 -782904521492598876117045923020800000 1141209904348224762001044753350656 2236364425527527298524776916582400 -893626822050796533126987027635503104 1315758189464585740963932926902272 2813455723028807510621616720576512 -634249622945655522808092259105374208 2945713183234376570890601296297984 4949842485833093221740530571935744 -823097834656135361120188783954755584 2890952724998254184928361549135872 685390815890962903233283477209088 -153035874251965679043542520879382528 7854082884246600812598475075092480 7591530908250513385929419075354624 -345283060845675286999664424709521408 2058896932608985918960134309019648 4541132023075703764946443357388800 -916843743794597283924026283503124480 6992369254083990594444997313953792 5235636653947780912263666453184512 -802730711069169671855225402992623616 9738927540015547715435822671986688 1661368089485764504201870117437440 -557569991632472487606247159192616960 6177812287915175142954293811740672 3970848544702908900624021783052288 -214239975033713603535822890903535616 3523092871608815859680707480649728 6336426951594437378821791508594688 -106780650971786524411238145507459072 830616195692485632221087367430144 7072214192855861942617506672803840 -547596280210333887720615375097823232 8537180342464660354703793200300032 2083695842213487437085173174239232 -234081023120181302641912530157436928 6605721314602029327001915184119808 3200068282317244596710109230399488 -545318955997493527355617441054982144 1871885200500357992922510386003968 8487499476293989909682024108523520 -805248515132780637359871978727538688 1792383603257948060240568391827456 5009033495844519856464218285932544 -404641844423579950499673085684219904 4624470592123862460392482998845440 1658946725910951063182417946738688 -12885385027315955640185583587819520 8875831462130044016950199155949568 1235412288723524947888993120288768 -423094855017153582942122668722225152 15063915647131766841115062304768 4308293118047107604562458842234880 -162404460143347355789855598131019776 4577304284813712284208216919769088 7735626020573481674585823781060608 -653456462591094965986840122476199936 316539736818968720309701172002816 1180950320534018598413406734123008 -700130141084849581099199299177152512 2628801234849904422951205954650112 4299451443768354681225190515408896 -759636615281100041041618899514163200 3994927578456129095562163335987200 3029099353033835125957455119384576 -455471677762093987837620410212417536 9158797668214988248432049483939840 728765844074946067898515249430528 -424124063813207382552105748610940928 9662878841614752112043581681696768 6143495215239222083662996997931008 -64477664626664968467992207620571136 134889515881615653569827820273664 9650929042319779550914279970439168 -343074111619157683827007830527836160 949992505762651929716279734173696 9495338064392479853229538310881280 -329336758468551069718643696663003136 4328531766057043450413964880510976 8009984658869804110470861383794688 -999498736538377688866842406432014336 6925287297703104085083544883298304 3473981297692729051562179664281600 -251827255475476275713205886743740416 8650387300195466782253727302549504 5597581923126898519625845169979392 -718638144480695980756376502581329920 4100270128054023739957482012803072 5615749822218203240268455712129024 -950367026488794854309895028244217856 2832799123368733290041826888122368 7389320575461744552113681144479744 -972553919155601876011210852437852160 8535012416350672444099369210216448 7387972284448415767955244249513984 -995201124706050119613677258426810368 4597035982571928727117068610043904 4201510474452769921331999931367424 -789825784762310621348286823902740480 7398413073018968411023056104849408 5261170037860000587189204958576640 -642802391946147501832848957266460672 2270622709880869703602493473161216 5624886832016804659441050274758656 -873751137987736136252544211824410624 3088345633024349933159075475881984 2580592106556465619128277148893184 -807839705134571009870558108015656960 9968147040916062574348893283155968 7285813418784886025693129884041216 -938506218708286621541243871198969856 9316577344680138806606644302053376 4778107401576236692293684331282432 -820879644846220076231960409980010496 3115811534849967478481286183518208 9377391583379076238232522145660928 -159656944823805559917250525937008640 5502886671187189220368124913647616 2969029221197529014368092679045120 -854923143422329302558222155132174336 1841221515186802762083829014331392 6707341134932561856728747126816768 -694246880011031947516522718065328128 1922883570418357996041540017848320 6330786743465153485499626323705856 -117788137573608842516258170752466944 1183725078869570520527422202314752 6478019919164572431475445445165056 -951638287612118482080532886221488128 5161392089926866061184678169149440 5936952042110096611267392349143040 -594574434083517733355896808956493824 141995554884511465646622095966208 767150450523773391287665651875840 -489394279838168657681572100873125888 2218869659599209248568058073579520 9749867465366686347663458214871040 -969523489411311202405920559226421248 5302089677793296241363928867667968 2219565872411258693155167051710464 -321908589420262213320282930935758848 2093669890093047768319660709117952 3371160670674209525228780778422272 -964675646854648005697834650920026112 1907948283902660670752048503848960 6705712410760554528198219773509632 -248685204924515231774591776377012224 9702460202168455719590984023015424 1543134433374136669159226137903104 -321024533569135042764893630253498368 3229308681014832851292738082045952 4610092716390449912331455824920576 -802976350012979739414853299262717952 3983171424388824215570234367541248 298968756460665408175047119470592 -452668564976031393311344524911443968 2696880746315686858515540357414912 257000735490951797549955802988544 -718343897121905168813037138974081024 6021195448337427709752536954044416 3455302345167800969489925053349888 -10934409990996296829145169644224512 571074952600459381492440906072064 496199815092250798284726217998336 -651549334364554795589732693192998912 1638619695116247652535712973062144 6537080976812229352637648009691136 -707953639730361957658201839158427648 1402594079003601224136961099300864 1970379369957923670077850406354944 -376847954813712370049838294895689728 6417273927867915259793174727491584 884078828102458824851112335507456 -763121472840505194311339897394298880 6742082602092404314275467646468096 1184202612635006416084263604584448 -848128097542236290628772922990264320 5226186271660066266829208640552960 7806971549115632279635691363631104 -171239639804876166210902510115225600 3506473343740901391484072012808192 1631551243626713571930435768811520 -447202986525109532007729786274185216 2437096840366813803889297608146944 6708829190444645393166113913700352 -646797830686107706206931479011786752 5111455511354485471373474888941568 7927433063317120985681122056732672 -768329951362576316470189331589365760 7108135669704539306929105817042944 3048272832545558001090846286413824 -746339725931919009090627626596302848 4505210068847043672441322683236352 6106844661422146725864339922747392 -566339653739111515961264706926149632 7286160512045133141932199659962368 5020972787655307518202045647552512 -795395853566939013937068986075185152 2576412634417993830727394535669760 389662754046047761254704710942720 -451208132352077792261464514371780608 1952803589464320876742721258127360 947902562407647738916410119684096 -343956183850586260987731852509839360 1043067285992327235378943019188224 1414780795417393300680700529213440 -848707522667796255410290914660188160 5461781359158754233291807813271552 9111645391389152752386289851957248 -4896289205763188837643411764805632 9776073864222051698431591786217472 8343871186096916934015257132662784 -29266953777656100444573535062458368 5705492741891390045669813217394688 2763917240195856017576092764209152 -130847777761094914793222387808600064 9269290326116677154717934899167232 2313966342989382074245323184668672 -874668240153456445132450193284792320 3766647983314546157130884023582720 7222375842043206361165371990343680 -392794698084247070135439021450461184 9810492817531702000030756343119872 831975511563321305678392135254016 -35461582826854435872352807826751488 5658033298828188702113298464636928 4487582530613045141006211512008704 -287448596705020022548426228242579456 3712613204975549825065052840919040 131588600648319833132472956092416 -300063646975406030554413396440121344 8580004806211890592651267356491776 3724236023421667727795786482712576 -833313082221797065044895000457904128 3142914331133433231610562025095168 8268508538370277256733578753998848 -807490009060314352685597779908624384 5422495111499072960705582237483008 7100619785523608146698344492695552 -158699439843678101653346678091022336 4255581982242125551966910077206528 687669969603303687971052848152576 -665240888681093878921200502759751680 7992275607167661397113022359535616 2381054428843727465972358610681856 -286689327922985068610224201064775680 9703434520995308672888172170969088 2003400022924171614535081464430592 -64334219574450696763772138504060928 8103638538832435172250491245559808 3623137807054696303130912690798592 -402074040729762779359574089741107200 4440940369327134943729831362166784 6562988684518029072280586691805184 -213460108808978931550717640542519296 9842835917882683893627304393310208 6275827950376877637378613773860864 -233754295166003055404890506278207488 6212209314386263130344541407674368 2344509215696051363571914617389056 -436746847820801330071696932119511040 2687549239331239716139699961593856 320574911443180570731497587212288 -794003331880769725810137179898249216 5956978399957645836125424549101568 6889151717869074047957638699810816 -614139482581508126795778987577573376 842948474546051900196777449488384 984591277971013653678613350842368 -661909604674009112775184857971032064 5683606095442375473779202806775808 7560464776814510087238036190396416 -14258309753514992859852672881131520 2571254617394315683766148330946560 9194847943012732503217132164612096 -166614703778821485836816666257784832 5785643916715954960147559911260160 6195331416888533384117719685660672 -390398439055686661001151168458522624 5743763569367959926187439654174720 4789495740558225616890917526962176 -187716648636953343743845664016039936 4577667029591520556115977897508864 4357211666910638729845562773864448 -40696540330012822757023261214638080 7333097459349239726921666084732928 6743575159733647924287844122624 -342389134327123481475748404274397184 2788478452845030799301420009914368 5627831233299327159425341115596800 -874881870830441107508761991080574976 805004198084732028128835695280128 2463703939986718639920615012696064 -363084328173488282546213458775375872 9883825693371301695668846560542720 2977217698197030873057390531444736 -57734937994016849845196092203859968 124045240337139186094573499711488 794429796011759360807344506142720 -502192824182263118665645034896883712 1314702570638177766032153151275008 5855380337647043685568547431383040 -859667856480427936188518970624573440 7797450444830012510878500346920960 6157232184924615676757473335705600 -486774980098113757328348332054020096 2334620715397281357732760902434816 8130872801054513754227597987807232 -826434074109989177004486209686208512 6604815247834072003110250892754944 918032954897656179323927781179392 -778366406654372482005001964399624192 7655903593668236406134481507844096 3887358606116718132855116725747712 -66374649638253079698623733014986752 6998104943201303852789453130039296 5633532478668604809326462364549120 -929597787129204895657831964818276352 5724686527208431065324945804361728 2038450235913070726130832691429376 -838006470064773844648430141557440512 3457484903470753583632480676610048 9027848452331814777849000222523392 -832757558063276664517750431655395328 4392111437493767926561512452259840 2228614325949849566487326087970816 -659223449213854860645848798233362432 6267127204168819866455042500329472 6904376323994388917941262570487808 -151425215920411996970343684556980224 3446132882575986903050101687582720 3997913662880877063851111079739392 -699084686238489259440908539447476224 6039233080398790523232690508922880 8078677722973816496448579009773568 -146610938782355565274749468000911360 8512270429335846657100150613213184 8313746923746968388571929786712064 -188470261462255263201530567259586560 4907185393144360656318448533504000 5215859671820706334252196515807232 -951004151396482747257872759209852928 4648539706283694832830093109231616 798624348643261612906437356290048 -190543869261529118759772436341719040 7867533384944406527999306228563968 1086843466297328363303276512280576 -867267875366234703537810384290316288 9037003520622555043725542451838976 8594399863903973076011853046349824 -110867416867974912638014448224698368 8657131661295530906439388393111552 1313752533421470649696643176202240 -509567564319819540166305545440985088 9769126256019521593730856059404288 1644687602760341086369605828476928 -993923260818734985719396051919568896 3110171856303658464022504719515648 9440655117640184759241138432376832 -480761446684910151549335303492730880 4522164810107107319446071528128512 919270983834036189141836515770368 -73117044108436365393884897165180928 7829141872238027260247018972381184 9728089786993189148483083489509376 -433956895007013879424314698859806720 8265898025798359687681428007419904 1971130943341200135963714074443776 -444249005336965012191013138004443136 3143697053995263086513290077011968 8821220506801791696272547379150848 -849472864839910574862056044317638656 1729202135019051429416520720056320 4014556571250177300036143357624320 -752291052214590987266241965043220480 6041227289459823747817053848862720 2602534475789264257577091795517440 -441262604883471944167434923259461632 7796496066543511397772278609477632 6829677005004778095234658707963904 -225198843255592447813377475095822336 1103057568439487764240661714305024 1316356841345844644545267847135232 -648203618315490433428272869384650752 2361934529208593084458350004928512 4686064713824040885054197020491776 -664456002759284552012038449462771712 69300122004814399774630002819072 9384719568070365420542000462036992 -624871885416573108418064276896350208 8793430378052390639667278193360896 4565294068453859694184164912791552 -930435873620084481621801251500982272 1577560417266003039793493535883264 1912154074704270854592660194197504 -890940072196293077075462263297540096 846346823333060572455371154653184 608681289372265108884500401618944 -941406242076981981243745161495707648 7929509867983342132234942339350528 4377698078765045512206982599147520 -542258437805382596178318831418081280 1312969342336897373029416052981760 3000266301947569246523619681501184 -70804677846206080979145727483576320 6378794250345983542113563551203328 4160518123170944222598496073547776 -248294251864689125324063798322003968 8238637745765469739577037843070976 8315441852163437982896334793867264 -706693233997439973225931246705573888 3416864318503778645782460222144512 9431032247888298619256922387251200 -168027792692283890399189401314787328 7891972007344469558369010690555904 8092168451546824457052271287468032 -850389480572095640986184010493329408 6522240509667894589767717555798016 1175960386940283696391056827351040 -305968454738670195689265771701075968 4958634622056928423464264498413568 9261005035738574172293369421627392 -228002311824443740964284545217069056 2513675897148419606538825859334144 5875129848300481137830244883890176 -638517321461549672342710941476978688 2530054794555866909812196502405120 8427982572227369455450671055634432 -552273408973098138341627933369565184 3764039111694549987024765058023424 5448925869122234916499725939113984 -197929513554814925742649335194058752 8779497825835708044678195073515520 4467073588611229134017695127175168 -405447482364095549473842124881395712 239358858211287180332229468356608 3892631321535888657524323203940352 -224495394761725316326823283619004416 4547383389234282221484903439007744 5827468489077173200418861437943808 -201289839376993546976422827405606912 8813927236030748558478278505005056 9978521734304754928267477810937856 -81518733390425502195246499331309568 5825632483690050289136139660951552 6129190304160280893123589264375808 -766262049665367297637017796242046976 9888259203227032054145593062195200 9788972088857725647947121934991360 -802442350158909182633964087080386560 6451564494591635149012328201060352 7088614206585248034104325747769344 -326971627620518016261274174331289600 7457360637284628447143222422011904 3116780138618909880651074617999360 -587312765773214857632588862857412608 1381566293068116947878784750583808 3748000281621746506343892715044864 -231968633603650887940461789890740224 5852909893478618021870226150260736 9060105191532970390449282791505920 -877279332142802047791482100483358720 5123556947307283787836411483258880 4612093931458408913073158248988672 -220316423917822624785547367087603712 9617123006211185341629610269343744 4918948633049288203233438728192000 -995117468256468588593838233634209792 192618127427428237008522644029440 3669272537656492227896029982228480 -359778881672753259975608677282349056 4978068773767054201715850968301568 7026399648960379102912667931639808 -996259600738592752440011362890940416 1244261173164564951051664812408832 5767212209213957976247907630710784 -509289613621862357228927772478406656 692616005025946151208572684337152 9211954227286073797663368381726720 -413387647733424669860845267663716352 3947413832539439845763147194433536 4815911387008238642248835225616384 -834011844095862401276139814751567872 8581810966883326557073489489035264 9343106925107189704518246581927936 -460355561470872365754586374550323200 138925091107525753010488246009856 845825684539830027206884715397120 -141705028850614182473592011420073984 5704835086770718090842862308556800 1945722645640604371241542508085248 -971874360893679936741501936460627968 3210439162614918351629425938792448 1674333215319295161360852726054912 -197652210461482395397355880094629888 2024376410279403038965005293715456 1030677904262038657811572154433536 -834048277825673072843978630554976256 7662106811022078149286420014956544 9539928052625217744295731092520960 -125205076898786216419233657654345728 196529192122859244684716672024576 2974997581456631441835330681962496 -312378174840526745437813907885391872 2236079089431760057191190444900352 7840140814642431025537824327729152 -886205986186933874047151544113037312 3382441323372457572177447504314368 5194926834237862961625959338344448 -53626968145681374988884696107057152 7373694124918628467142843277770752 3822760748362166587248378625654784 -380668418693081418064068811406966784 3544808072893346489168319358173184 3272418749581824359367636410171392 -101585000724721488308821992683864064 3325021485283406004581274639925248 2568523184757110830570701703872512 -667888313339454758491238042831945728 2992480146745850754554305051623424 4696807374250416617983422500962304 -264431279829280807927230984230010880 6431233204006048157334909264855040 9935960853289976345484799728680960 -482023865017610088532953414940753920 4147987526331490012693366675865600 9249826443254092649060614052773888 -717900048970205994985589725816946688 830742680311526110085599618662400 6681607521910325431274812242657280 -860816183808547181083839264695779328 4420962637664305736912594570051584 2106738783109112021779883229184000 -297150331748361334558721948019326976 5674866132978684975407078569934848 4022450859435500786994342145294336 -791424167652834749554339603091030016 2930205736975805465499630502412288 4844476644721749006551559685799936 -612627176963275876181200934350618624 6257446525429573633375282283937792 4672889229026917186144286831280128 -805013995496196345701972118001942528 9025639581470548339247265634844672 7512466492573671681892798689181696 -291192640398450116678252458676322304 7138675165258615903536537185288192 5015711276673714028930879111299072 -117713462395807718474544611661447168 149308259584020016668092896641024 8353749805191440050897316227317760 -528676355814327002747641092011720704 7574639222812972349697096616509440 165743025622792978127167179194368 -281761351892847503282891719775879168 3261571350190698817979070730469376 9531799185226389429797196566364160 -737804076938144087408962684651044864 3717092990901031183600621814022144 7853350778524317395677162015555584 -651525621558808371270941203457114112 2881869477708723258619032445648896 8805335640530693618273339635138560 -701355542333419909789133741209157632 3690464791825450917857368326799360 960531452468018173803435512561664 -166325268170563621427344552870543360 3975374764755336424349046189064192 6804530097978856674061429420064768 -363875377345882323940261474919776256 5248352265922319563165062381174784 2529531099888105841245792688406528 -708821781998583527942446888836399104 3820387269524710047362022453018624 5694318954198821139314034499125248 -382857185760110226676295079634665472 8299704473270091527981074768461824 7544979042477699187254322777817088 -364077667883869871014507045447532544 7320092822512580225050510308147200 2628200219039825572491848881012736 -111594376960806397623809002172317696 7041689157619701937908891697283072 7752317644271425523275940946247680 -592041542093279634379023111002521600 5122333139196730274080905018474496 8835696996527122277928575153733632 -919795311364986361559358209639055360 789942284154864954866404601888768 3767899835527467978504900247027712 -421017038446654690008740288138313728 6831022615818909493214638799585280 4359874212051770925002459508113408 -322305784711407710052401615697084416 3297905396910574241003095566843904 8273554744405435010129977357107200 -573374734436552986432504385069121536 1788102038621393097330511560310784 8977550221880107579006598835601408 -412985289819100243061470159991472128 4679450192972729474106522255491072 8921876454429424138534028570525696 -217271936929457831076324935932575744 8295379165467227438272109999030272 4853677596033580677869239940415488 -812641163817907488668477868421939200 8349108768523681460464044128337920 7339627332124317941590834794201088 -810421525282220700126395650195587072 2487244797231381581738978823897088 3666519997854586739994652775022592 -977975276464034557317827182790180864 288765307133508482884830165467136 2707238713602814430286163426148352 -26495321264510802922121478637879296 3495568067897361170072408158109696 9427363999884358357999612329984 -830718748791688902877895833887440896 6958806060412312614581155590569984 5002314549246420187987661018890240 -765910837694766481472081346921758720 9841469571429631286443768329273344 6782480389412810037583549126672384 -652975543840054766250021428182122496 3978093566919841205007190700589056 703627025348981848429275165753344 -912051214392510008152385843558875136 5974463725276761731631587077914624 8488144129416182942930050597519360 -633735163311140653411275391906086912 7862015788431123410883638814834688 7727402379901457512665911817928704 -78641986683949390543913715008274432 4775753152511882298397028270473216 1296110161895559117121551526264832 -106628748661948492879386849998536704 5229480788695910202927857849597952 8450439278401834599004261566119936 -928266772368538629042045145516605440 4422601540840470518881932942508032 1982864418361139067935807525355520 -128549822680527844485568794646806528 6910331576400811138751062293348352 1970763241819111247102278962774016 -825502221539862522208075906753232896 9240026344210553047610111400345600 2078920254149610471507581003104256 -655029429388367234913246415750692864 177780377267231231904635468906496 7264680556247383747442046788435968 -834645036119570930117669710773354496 8877564044076724367063540771586048 3883756568183990264632217075449856 -377725028048122914152441718576775168 1459634845366765632657902996029440 6260345072766920687145561494650880 -348011371173069791830726174956322816 7072857522744717911895560199077888 187265544148646948146414060830720 -204839742322986636519342720923205632 2957975552210863172589163770806272 1094085633235618657642991119761408 -223695022655319154475411752225865728 7694735047970076161863636255506432 8202216309409932276997165498236928 -388310847617734823822505128291729408 3839677622623434929862073064095744 3275357075042093940860858256064512 -576965270833427478820859691417993216 243959771409830673177329323212800 7223845298718738249205573608275968 -982781730614249527739614078326276096 4512795727818950001489214556864512 7198719890301979882107028782448640 -300709903590869146918365863803355136 9948180011735537958319163449540608 5567935053351455648377307448475648 -1221597810674132136256144664428544 6830709381468315355746056877899776 2835923945254612624102893547421696 -303900113993249948184854583608082432 6022038083256453584025147641167872 6344458928836381549576680158265344 -586330513934908383203952286498816000 5977103089415255245927739159478272 3355961713886338449014776550916096 -70423118260844365683237943559323648 6340531544901898444994079472222208 6153964841562501760691394033221632 -77369625717624372787731617504296960 1578470599581502302554673410736128 5672858711658983784061038747451392 -645971043543983634556834827890327552 8471943715464461144319151977791488 9584272111359331784479281581654016 -15773395347125975522965299641974784 9170353894024597354370128542695424 9024935059336916742556214670393344 -741847939301672249472072090904428544 8187737658306945876882249287204864 2837720078874260864545259054432256 -664568302605730273693005757131259904 7551389254008179836281306967179264 9149188052163324879510290634375168 -248664814818484914291412634802585600 5374539172017129708571492727390208 603811066173709871469337325338624 -121128683024407653839460124124512256 35258126589774305166380909985792 9366872893328449426409025259438080 -264511243691383656758628369009999872 681406131029219747565171309019136 7407228023376272761189929924427776 -33887943729565838814700998647349248 5075753984582763254742928347627520 909446007580532648185172485734400 -756305482175206060129339879968473088 7868691653479576143477999287664640 4234937134930742412539924456669184 -125874253783807962764883522964422656 1548300418873732118349977439174656 6325196612131000922622649415237632 -817018193273444470189628675055419392 9358522330494756805179168146849792 4944315230741392258845679525298176 -546520183472305041323629888594247680 8006562280174394459540438812459008 3021024145342292195844025296617472 -778293519104566860723341746684035072 2934062996116408380270512835657728 6274159627662014756690178185625600 -321845851535815122875862856136392704 4971068491453304988993031587758080 9457243433065112306156699723497472 -253682399842239598508147177945038848 7796190994062756502219551525568512 2478530768091196242104398322335744 -678652235247802446422439894850732032 4371318447292788914815766592749568 6674394901887809934046812046360576 -113047538516086959837608109750091776 7114101650616768783456947306233856 5459294858214457524424506051919872 -415938801903886415936746153433890816 6756567616056114545151078559645696 9029654034269692395348549603164160 -84707716508678206227012079490957312 1932639333748176312570651246329856 7715234042750803641481027370614784 -737651765795501465710822178118696960 583421920502596287870972708519936 3110414935180254953747669053341696 -348796228724671881942230721970044928 4757782240464107141829967631876096 3407019935949514809996822915842048 -509503329249209099082998207226052608 9760502413485819690935087024570368 8369525066345645975843579382202368 -671879072054696207895654464351109120 3131825744071161771030616303730688 6796082104643865954473204321878016 -429325046904694953975164099140517888 6660506280126536140405445706645504 298309923954202952979611268415488 -92149585028376430772153493279997952 730731490212072155333373905076224 231408161050223107796085420064768 -901423953511110982767730164974485504 4471231486966455770579335563444224 7589609442822325127314841635127296 -644386567461538367295007146920378368 4846538566945474548597238913826816 8871402700206621061061659596947456 -611298786221978135629353469672947712 5001990695296630491872381261316096 7071245216112923995897682607472640 -244178654555019892105107985833918464 7237164790939237211153991454425088 6481641311195066858590387346341888 -311664384540256463702695536362520576 2199344923733315637201741507723264 5253923239605043395206323732742144 -538562391412279121480750147599073280 4630579863587394952389648795566080 9562758288942905935606903268704256 -804570668438386648980835210073473024 7058414018447986421284479625592832 7620249211790706013669390574157824 -376128812493642886537565955579445248 4273391770924701760295953619746816 5186684780414185327153118208589824 -508904839297598570050794624546504704 1393192606886665944098589724639232 8481285037636307196169781006827520 -234493471809314120882222654929502208 7735311085358944170821334962536448 4894218736869721795989350914195456 -606325795453678447209514764607684608 4704052912236472584103549770661888 7212987325826586170011502929510400 -113828911891947472097681639018070016 2618694443896567831426125820592128 5784168180062808849948225017217024 -716301097295532074601502753630978048 6591801030645492353364069999181824 7807187495760054706550571110760448 -104693603782852384058132779493228544 7918651528222018791241009990729728 1764619034858055464901302703620096 -119910658045316832139907606461284352 6920660440419616609951142037684224 857211983416411946107970812641280 -893604377784615388445374075897905152 8279112757531231266128581181308928 7884306620255670062235918306115584 -510510714088566707558385024229179392 1085765725634234779886845270425600 3668337914069454499563232257114112 -541676375165352498537640701781344256 2884786537947096175584562294816768 6233112400897969969845435665219584 -738060135449347883869762626479194112 8479747301274177244471204794859520 360998338943793339424764598419456 -575491489145514468021468629831778304 4731574934395157151108002584985600 8259391696238476046210948889837568 -574576185037947843632423254141960192 9304162206154005236753635928440832 5031708122751967606068034261745664 -486339322222270425989248418985279488 4371770555794818828953968493723648 6712903100892093840459959118069760 -454014677788546489675539668501790720 4588107594088034666256869231689728 5212902306928846999153922684223488 -748872430065799863290735095038607360 8112208390126412103333405266018304 5091765142078979870920298601644032 -675886857081074519374580973633011712 6101631738236132897551284275511296 4843640811654287028307471498215424 -500532203030993038874796013012385792 1376153162294962791157752590761984 8260573351535844839080014508982272 -340853774868318840587282204281798656 705928508105782983731539947290624 1483750556367350381421875955761152 -838809570171610682213056286119952384 2370652079744712758973288950005760 7310335300011000667653575272300544 -403688282147717694353070718650941440 1204711035815285322924041974054912 9976267995094381625657761856487424 -501628156666064699338787523087302656 8811640139865994145247855376334848 2132056570379810832020615970422784 -69236825211720756784381885134405632 7781982065927116544852215103225856 2072291553914027368798284681314304 -350836553587667686042316852816773120 6376847442537499631257848414994432 8868116463260457649952538010583040 -552735741661472438545305897709600768 6809988444051610574409943769677824 1439041792580719107321644139413504 -908713446012406100140873688465539072 8613504939404432321663022873444352 2425665665432097798373602584690688 -289278016436390574173514536945975296 3776951617068070670570315682152448 8076085106180227815968578541191168 -36257025561886863961920166443352064 3451272108817404986902108639854592 8958354784849706084654096079388672 -789240567653932393067975511157768192 9392816280475894534558784101023744 7428570408337239872653304201740288 -548577600581683415517473509509955584 555124918279758992446615501930496 300093302776486491809550407041024 -39691800675275985130947975963475968 5246467962830506385637217740521472 3554431895956983984104550501974016 -474523359423875720624913232571662336 3283318789351638833010747224621056 2828864128514274847257630072635392 -967236869559598088587233412174053376 4755967775127702088922711029972992 1154008561680229322969559202791424 -650857334275434857091400006434291712 6532607550695058530566182151389184 4845658984606875125578802703368192 -846029819555122871773275368944828416 6461408077390716552166468428496896 5184527429405425453058772057456640 -629990361597200126308731305490120704 370007092585957293267912415510528 6846129355208115965901123344138240 -357421930510158383934518098422398976 7711564744460074161730312694923264 1172392550211087325902545654644736 -762227690887252895441512354751184896 7272354304860761005113457170710528 2440053425422167935614930600853504 -906499948647243270330060846596620288 7055053754628986871248122659471360 5156473547500738154623667215007744 -936570266273220436755231616341639168 8509745917149411848759091459522560 5925996967196668691520846284455936 -898489212890276171881626429613408256 522385594924336597715848748072960 1983065611544346825628309694447616 -218596411651757724835984930282405888 6699829102231793687805204264648704 3287216294837909426651328174620672 -176244424923832222529790162684084224 3305717576027932417075133703782400 5922472216673730735266370588508160 -343376733275086220229368051782385664 7146310836613007082251884188139520 3266033080676457506411045141348352 -753598153283247799213185046625124352 9027939398700138503301675257692160 8971303724926087643662096248340480 -335602802721459804651085699013935104 7147296065129940377222739769950208 5656674865595646511040932960272384 -114549676833847667280864071468974080 4116004915736108429428277532164096 3784665039398382695860430497120256 -919170228341587106258367282294030336 7530662560092009699517013432467456 1945244447206088811130944174948352 -961806652595560863262123624220327936 1630463012345702050503744422936576 5917117309303484138187937426702336 -542937222096620897826795143781416960 7848747898946238316201161617571840 6775710162454299088582788276813824 -520615627792368086395266526076731392 2642565134216311120970970830995456 4041562234832253789906510702182400 -894537481098934679629667086339407872 2695024829620120651685294174633984 9825466743173675204550700908412928 -415318475270609510207570813663576064 3236125526336974039892162405990400 4182987817530038223526090241998848 -483319855363999609453777610581475328 649379517856758974217330423234560 1621087089816837597131918916190208 -990655193314805821172207963521155072 132565856032722690197321886466048 3457338877464849466400502697689088 -10277176689475351049362850917122048 231031603757311595680397076201472 980870809830684648027731104104448 -704500953919266842337330942640652288 6243585230898597052704746960322560 2487010411411800423267249736908800 -544079978418369482867262130223054848 2822129946418365870667770787528704 9371918928940773746061888886669312 -294770956409769591982001003530551296 1932965567044839536086079821053952 458851381331716120019917531512832 -848483116191016895425293918886952960 9010179660789188654644275970048000 2153758540935208061079713872871424 -63985147339818534560081962420142080 7479725611149436343896056973492224 3936213264065814846105195047288832 -245911859463838135398320333272383488 2955798213115371794792144231727104 6704285820717864008474041549586432 -594638941206298706262732836291215360 8331302161995573930002485765734400 2559083420464392262691001949224960 -683731119395195373086518347418304512 6767162282492851993845411214262272 1000952770793965869584592538697728 -360782014800509080795505341694476288 5064873690355174588826475997167616 6289656012278138673252288669155328 -798121055271046227705952010705567744 9550747380286270814430679365844992 3620482476732464827879079142227968 -871746597099790463966293581153435648 2966675920788312911804544199950336 9973973739366132513949481623879680 -543359491498267536783311533047283712 9236170455849665130938652096987136 8685712292645367361805686985981952 -248297883411482297463115378621153280 7393758082645178160459655810121728 5131241114416906288940037793906688 -121646529143748580056426259993853952 2385310228975410934566090753179648 905418345575132334351734787801088 -251560910518280259007286754286764032 6936640887428119902379475705266176 1786262126498704920308255211651072 -950029491139411579793414751839584256 4895723579843602148134316113133568 7521614370620800944281289186344960 -223765080534026804388928324345266176 2288300773214066046218811903836160 714391703206055429738913909964800 -422778169987263928733050681952305152 7314634147959799455210084931469312 1429715002848461333141559147757568 -163596115482168597377622527734448128 5496693023423832584565139259260928 418006118274159536096789705785344 -322587797884606187424538467942531072 8254076307580383498838683393458176 35807670249717286304500691238912 -106573748959656734879968027926855680 9417937006977192325629923364438016 985967502575898270255583613419520 -602952028556899844175775016761163776 9456495298194660278319256921178112 3918922540338533586828021161000960 -50374853634895176356261663162236928 2649776061083912492122324751876096 2729185014146470068504157159948288 -676793521594675706255886551087054848 2331030521995921481850963202408448 7568823566086674099048769256423424 -79270589008639956450781624996462592 7553328030376313200873683365658624 5414744242846329965737957413355520 -771917235295250782413468085686108160 9757224315438404998186372448649216 7063845146353046238228317892247552 -573208218518525443702710991461548032 4906199340296954059377579812454400 3332872177058638476872232468480 -410160350316333853708023901638885376 2002714383613150148905358243921920 4394714179640304926071672270749696 -165774505312308471030698320867622912 8117188325900264223139638655582208 3605638250148317141654018717646848 -262833613864089764120839355373715456 7896755824899231785284822705897472 8151187182906053964513172567097344 -927889105647046762180023547510915072 1466450654494045569473374643552256 3819350495131769828796252840525824 -207845918542652545947113576321777664 7649671973051883757322679890214912 4429712433785859425504840325791744 -241505294089521477995400509702275072 7289314673639011954564384482656256 7544338403549475644680798319149056 -920778825452711265646250930011635712 4814597816019978455973524823605248 7338017487722507738055419749203968 -618798789127067755145915563895685120 3943169603714503233215435905171456 5484281430868921048396867720708096 -299656293899138896609522415000616960 4784350355611446158867784760557568 7979035147714860929722546147819520 -33014126329234701332321589341978624 6363185210492187259605855328272384 6455913087803126832607780432510976 -667265348726512046254920389900632064 1279450340135597162428322388377600 4387661098734685948076386825535488 -164955524293044232659684183892819968 3518526950211748251780366387380224 6754614053942449284082309418450944 -644288497070286000028764361732390912 3458464552015880392590369375649792 5595788279364935849438040643600384 -730313895980895567956875056349446144 6349124750673757902674103191470080 4242667559639651632957040353083392 -481463626334276182026871548189605888 4042356321793055614660227587112960 9019061791673797725573242672906240 -418431407480813510434551854780121088 8736320173087301119202478209892352 5360360458518757218935843082731520 -568895981572782385513789571756720128 9728111578745647397577567619776512 302387951397406972203638770892800 -309897996520628136685939842514681856 9261051102996350228604467791527936 5305676414211367974912725119664128 -677445585982870991893326532031021056 7507433285484583591003999042535424 6467994554139656773191871917719552 -170655197132376990945388944244604928 4289671252980849692711639108812800 5737146822726345063081638698680320 -700716159459050998471858254870740992 7030487741844512536264726280142848 4673824115077136110329698810068992 -121272771541235329394227972386324480 2549497009990658155738127661006848 3112489946942183818974998554476544 -244985678495681566317709166351745024 2678139728064929261304747655168000 6489257223193380435991898213056512 -22151276328332970839750368787693568 8039459537031523072569247591825408 3694278475170161962972524593545216 -177685349838448630958163910096584704 3678336894414386376998156085755904 298748282905562222425373103095808 -664339255979665336380326193596989440 205420269370424635570784942686208 1840641836720290244311258520092672 -189987934120068609839301132942311424 6322683304382141996758125596639232 579783048713521865377914158055424 -159640521957172466116890089182199808 8717538494075328376574932064141312 5712956286545953250120575876071424 -938684358162448047538768030640111616 2230225493584994528149704881995776 2074287141463799643554560941752320 -738019948251632798553258582524035072 6930704065039618547849383622213632 6271533629338756402093963696144384 -348489393547634964734284827048542208 3868613899099606349547398343163904 5107375294905921289911466207477760 -752264484753002189250443195847802880 3495040842520439351157454714961920 2925691673068507139263097510821888 -463150311769959662120793490711379968 1368045394351809618140777995567104 4369876236412656426736853312339968 -836162095672854116918210124381683712 6625014231284310658389818046676992 4238941196861341930079586323791872 -996742026335822583698333379409739776 8091665305228885499601366907092992 1922308509454660438209770393960448 -505964252408602214095506898222579712 5775132885131679691272852311375872 9726161068356960389341510648201216 -928528598937300974262586655520063488 9870985609255426273655106287173632 7106870490065520377094827306647552 -146332247843677594877219083560943616 7984928701264621438429155628679168 3343915962328181536184350460084224 -461973492860974992422433829219729408 1795429157540651867526186810736640 8974070485553819051165123421929472 -433094992515040101568366391599300608 9011628475470352053059087553789952 6989386259773361236071446258647040 -337906426339053572503613056659488768 7385740059109269108599409176739840 2518452833020919893738888626176000 -181383418186420480824368615519158272 8308376965115592522564136524054528 1257491014622369340887382966140928 -745340650979133335570950552062787584 9775042769550292085903367438598144 9481097300586330564286348783517696 -964219783969123702811842536269676544 3137573900947368314314714515505152 9775944399999704941736471161733120 -820980361031965166074156779118264320 6373275134153030144657614908162048 672509803894075914603446851862528 -480053817790025219485298106797391872 7980848090319182984453682236489728 1129527989018145123671795308691456 -58522169753136813580479746097020928 1497676787164863661720668934766592 3516917558614628177717699901652992 -374975743040634762820353915443216384 7372378386447882991511699747504128 9856228589674455168977496652644352 -409913777450494983408906567199752192 7795062465837283767654110694735872 648965804332299834299220909621248 -819040059049705223890330063776776192 6783252320804398528043273315942400 8033064530318736579566875399159808 -289539610058283701257807832127897600 1536394961397306854274498023129088 9949431555387112445303134099603456 -573925879907540897744355403128373248 202284896954606837301463822106624 6867027801245919339518401965981696 -717233991283306188590712483045441536 9087666462231602029852542216699904 5822753961224379362054168551358464 -477399151043070770916326346315530240 5177785423076939951709477599707136 6161237203219382149388751102541824 -323924074949242607983246363810856960 9110756049118561017781023393447936 2594316666790788990001798732316672 -682479824204796869958626322820366336 9141862480551437670986242743861248 503441532278262167778056753643520 -248570196862887217367576738028060672 5405723257728965229701988488314880 3754486684455134136435849218228224 -136369411131993587476812230509461504 9933030984447045005474814442340352 98103002947780666879771085373440 -91104434439469332774862169453887488 3082919910167638655056811084742656 8995995904611014374539056088350720 -268766600060871326088193113608683520 1975175483400533087906622638915584 6418867502181254960984027159330816 -556097219927055905202703024665919488 6350808041766635832004319027134464 2300759000998870604026506962272256 -166067554222374335992627184531406848 6467462556255138411732452381818880 6352186063932423343568490298605568 -944700885482782607160597116000141312 5814726295976314093533993724018688 8008379551638858198547048769257472 -713438862221642283334367331359916032 7439555085421847890362830380072960 4296259551865984975099452350005248 -656705763541215890464467586532769792 8319653021833904625765807611183104 8528046009812840145109302336552960 -919371057573509744868819399954399232 9315855425671037471657384455700480 429771166501427972886408728674304 -832266022693655142122776610610348032 8499655233570739836672042673897472 8618183457731353556245916340453376 -784680693269574859454883456446627840 9107106003572024207575456656916480 5480357391802712544588283479326720 -904200873168294581541737146961887232 7266156513922158555036224436830208 518093730011373639221982649122816 -633937290222967008328479958471016448 6920742084317251793369395204456448 3377607126566039810255070993317888 -406854628393548683942756029105700864 8393251661702291906590200096096256 3235115139676430320010881776222208 -481084700123373341625215326659543040 358280399498904956007891186221056 5196476691408393318644677122981888 -774932631093321561384153633270005760 2607774939518174756036560591781888 5682616531960475058861194788995072 -923839986194627389465444107212029952 1910367929747268251665209883623424 6783572524376977277448073429123072 -736496308784550282615536696013357056 4478498910349520399529103687942144 4441689745996023916684695234936832 -769699702445050646521588827021115392 8611029587642306626766554972291072 6482209986326950062106014440751104 -968770240953756724702893022340186112 4913452479889759236461488177676288 2591450827000808844975111170686976 -855198831098786080963088717260521472 288960719241961853279283814858752 1224655112723824295790735951659008 -819837221327352325098663422644453376 7528518789815289399767273666772992 8799213990296202885609771436605440 -283951324163943930077385646801944576 4845180657191081800716578562506752 2842776290438328190418837506621440 -105485041248253821753562873118851072 308331213424917627461001096986624 6459032676667692560275381032058880 -383346938251619442167708131793043456 2348741148633140208745913386008576 1095853283762057084047138312159232 -967329789747705594828850680521818112 3595516458532647697772390868058112 7273517742004599475590140052635648 -434787538362777530271988814603878400 8072669010514846257954633136734208 7823727034496106030940658258149376 -150548338517444875693650168883707904 2177860049580430018065865145057280 9538702816875346323995041103609856 -296830414344456559239854501230804992 3728916173543271054895689272131584 4132706699967743721429615920545792 -464517642029723571813580990136188928 6329066461906947433800488322072576 5064446773729286428287742269980672 -376710337479738253851370393182404608 2124743644658675547173739948933120 9958313647882577123924150159671296 -723946806749656405721999656402026496 1616112557487134535075319624237056 7230927742303447229327425044217856 -461415450188828466037954778239074304 1588776196662148784069240854413312 1616033933030160665466139614117888 -839238687238956293250160379937423360 6120489312355305861309668389814272 2519756561194076718673926595543040 -210514065164572542418468952793415680 4842227002588453073835650277441536 7860229359488061460600897474134016 -536925049073363807968107155261751296 7516595180202177469326075224915968 5080467109371524291293430736224256 -222462987817478595691346933349089280 659860158276108194175513853427712 2618825331101622889812036272783360 -842723380402068833129995084717096960 4539252183930136336808505415565312 1639894128075372809266628927684608 -310870303270238061615926984495333376 4517165059721773882741805134381056 5472512389970562353299334012862464 -929415265007758615525556612577099776 9320639527211857893006982894321664 726840665305113906770000675340288 -887446037084051787025335776689782784 7008969042514504114125900582223872 5369050856904026754303145807970304 -702808543022547178686371134342955008 8642130311726300816142130623807488 1738052215316347042355341676249088 -230103936886145620412209642113859584 6737688876464423072114846954684416 2961067173751343612646632863039488 -809441112452568773157145679021211648 6771546888282628999058502149210112 3714196368501667758435426931572736 -362547652309518143323491336405909504 6298644765623920035876623848833024 8211274909668364529435624995815424 -478251481254377550979825471179456512 6586010868251857755033577818423296 118834679631733094736355540336640 -687872530751150235002839150658322432 8087275882437542700324932972183552 7792957633934958824904797609525248 -801014960784605110376746501275648000 8313783313955861165437007031173120 1554722582393980372967012610080768 -841658021273341425065742906943340544 6876271210879870924737481659121664 2787174324070175707333119520538624 -90745912134634606958326755813752832 3188101460724999340577207107977216 3707773750572527587410694209798144 -394370488262470460451066566336839680 2700095868371275254796798385979392 2392212173574276832515958369157120 -33415001322629248242733275108343808 2206462839551895407865757234626560 583742300602833330230234061996032 -243161127720454441511178622400987136 9358708383272915158242534556172288 867567827715023191811261508616192 -912175163690225584086840785827266560 3149459665084561938946030720516096 3418648880816679165487676420784128 -433296177529751401909961546660839424 5745522752515621900048140353929216 9560920877439342116360170137190400 -492899332891904802752659210666770432 781369152405257597944198070272000 6273243969780698785632902692470784 -257401040937519587727500295484211200 3697659496150959144332857398263808 6871615327106346674885922954149888 -11458746773503344017738725769347072 5073328791050666126840439098048512 2901151228342568488152332188516352 -557248083098978097982718866534432768 3099151914192953677274717815308288 9268956750624035504098509412368384 -522421055460866593020342939794014208 4723424465585380674056622841004032 2353521856155105443565967866068992 -248996477214439435987547499435917312 6665861637249061302042292750647296 5892361935657519742970535996293120 -510549856643431351489438535695466496 9611465150952901385539979084562432 1062340942221391556918831900262400 -205868537215833314489139958665707520 3234853881035445017897523830849536 5529614933416885307136496212377600 -470706298444701589280584833846738944 8144987318129512603589997305528320 697674408647788771085371870019584 -316534883144717690821236083979714560 7127067804936135775636264245526528 2555026062643263598887248550952960 -362328033818271647048523719850852352 7716198761307054029497563430780928 5524965625816685498142718949326848 -65758082297831966963238650991607808 3046322702839888860095057926029312 4304026997720338046434932737179648 -737985458426347136759827247434563584 3499196840512976110756288400457728 8477224264273444041412302266695680 -495308876268923453483165359775154176 6778880560404121686556511014223872 4447395802262041348516728612585472 -703072235895103549050437994027155456 1386574678202647264803817177219072 7905351053910233737237976567513088 -711677655230437725780164919762616320 3864726759906588848669171130564608 4213205041778427207240475964604416 -344498635442265453221452402445516800 6360024070519085681529934462320640 2181103200320336888438396240789504 -25851171264925409803175215581102080 6843062101213301671630100072759296 1257200512970346682967586334834688 -891818503525838354627751381724823552 5476743644424720749138714709458944 3982298381438608645649211009794048 -668019167348220044195292880029351936 4321370179193823356419007343230976 7066393528786486658442692793466880 -75183758701886415133364750081064960 8204664926489171475893405110763520 8236023845279521266745517098926080 -593794605279144714946457421609959424 1691969113473669379168956751806464 7626656988718905384486762954358784 -133586094972420105582623146104586240 692236268630978895234020558241792 2776479236767395093928848270557184 -412430512336123633536537976115298304 7110147002416419115863963879866368 4216599608154532288473303795892224 -498069939853747678855581719234347008 4918716990393334216209486265188352 6478413991552792731137600280068096 -468980831413102727933325814387441664 2422033626174703648976855199907840 2337974049987639016311285490909184 -200498602653178635579770201817743360 3352114441804180825975741181067264 2066176679507599308384584933048320 -189120351280906261541849183977209856 6304481477311928211712900356636672 4416930511712657800191805187162112 -561124542702837849034827362834841600 3577651871146137150722743824547840 3407594243256197226656031387418624 -196765864438391496188454003546259456 7554704919650277193774034407391232 2923615359596121667411481037111296 -736210762670282208546958597595070464 9227318525788473463536451409936384 8201917232920734562091289874006016 -242475546069108379580952812669894656 1205948469151844203778517910945792 4548345998615868941712413253697536 -811424991647508900849789180001124352 4384612815102204168856784089382912 6864720934963648825683556616372224 -554839364608106455924796409654542336 9266624290259725488538993591058432 2961643915660304425211691626659840 -291172583225016320833242626294546432 3305939359002517666644668322938880 3424831158376237819307242370891776 -473080017971236782981319360637829120 837983313756295195188983779819520 6164735954401971867339771655225344 -372534571859387654446793750990553088 1463464200147715927391735159717888 4630384638768039635248138135011328 -366679668650745144430202861115146240 3562442845864923546228102258491392 609137828088012902488079696134144 -38597298830919225715107718523518976 3105348936056489999730648098537472 4153566001871586053370069223735296 -118389218119561071737345335506239488 3575078694385839084954443227070464 4005605445411098263662686944362496 -554608612544400639211200621207093248 9745341980656796505174454650798080 1539261393734694545737650643402752 -527823000440482416700995203204382720 7073563097939474983563204644306944 7559237955368122712957768198782976 -331352276202814100878845655193223168 2106691739568493222270193478139904 3701731681159176238296041162539008 -825378587074434597462285412795940864 2575856129245093059439317286387712 2209808620081887265987097677266944 -91602190105026122876293406628249600 8208406618409839747697813275803648 3302067576579563474789255197229056 -65626695689951456999360056333959168 6925136314952919927358645073870848 4976931638420088174103999448875008 -438413128924139511851346126627143680 5513404142410470187090400860176384 7290431707336020564861806559887360 -171420819476425096170167506460213248 3729954533632726650980284583903232 6300353506555494095388054866886656 -481467888620712637017699671412310016 6849883881756847055062778664452096 5130649933712904730135830200320000 -741132707480585552940791591260389376 3110326814858669449496212826750976 1270415516479624863929228417040384 -980701023187290815358119875872555008 7570599209664318967638680695472128 6731103259382685521688558749876224 -847839769607390264965965043480920064 4015274922765176143954980378771456 4289310007964033895424550816972800 -267457175539900685024885348071636992 9991323509378581686325744293117952 5062509996025001806326218436378624 -180062676071708895606176352464535552 4496047633785034110122267481473024 4910537854253664138941056317128704 -311319974839906529739120218149486592 6923315469889524802885419903483904 656222701760715931630528140148736 -229437079313426611238712548572266496 2544656585409620339939113126854656 3319944531975592033832461647478784 -815833396335416296018816491728142336 1055239535983375266739554426552320 1050884601434038048001272345264128 -992557599041445864819376647330332672 5094233606054018190429338686455808 5939815356705662970331921391812608 -128667734628521906635839442367021056 3111182295167194334573647540256768 3287146974455824156629262114226176 -972395390011836101118645601843544064 4060578133897588185572286931140608 9468403554090119311730471346372608 -84595754344712294274427022051639296 9414892128125006538073459885342720 7750723325458309410880797517283328 -79263740267873216033303121803345920 2560157590580970781356359157809152 2942322471390845469418574300839936 -255293253844977238512738703763308544 7293606957624137172606469835587584 1575704732353501723805666978562048 -725226463784982249761482424616747008 5200087485362569185694093357875200 7540870072763717349755606272049152 -77795647207171669763486364112781312 1488506902448474906127163182809088 7716000467896457101021828251385856 -279585197789068722498885056366379008 3662552091297402390641809242980352 3656008613214994885211022694547456 -334830131665190066080453302364930048 7101353331094864953194216639430656 425479138874658154737288871936000 -663876295616591178389285205281079296 2714708883581284390732491950915584 8660246270444725493597867031396352 -102637587853661850071646684682649600 8603645640675145587905467510685696 3614024728863333105852023132127232 -582816754116633776364121627316715520 8802174721579217278827747702996992 5873894416680187176206974616338432 -742454381367190459564923916329680896 1624552646758854144981396621361152 4379511104252478328461184720699392 -990396664140495992414963698858196992 8082605381737121947800457481027584 7454683542837642309971260087468032 -974224732447411747739108220229124096 7087566106482478508613261034782720 640182374979332550049634319335424 -691651654989399573637870872984289280 4159376599051815696282800177020928 741563778430051360359098947207168 -331193535887303378149022713941852160 1766077165823757181325080765923328 8097065337306594720868717121503232 -725450322177668476327869579446452224 2136544857416598242406417651728384 1600202858500037013287620906582016 -84719215828888770266584672823672832 6758490446159191213271895855071232 1441344201021568154516756751187968 -190326482516891922283482592449658880 9152784603768794369612370912739328 9847362549298250777749562769539072 -801644075457966825461545037331431424 637783524685664038407043865903104 9997810460265411358330178919989248 -800676817850706625153767261194944512 2493194621618365316612509147332608 1716293453497989573543080910389248 -132132535624365294185854973329276928 4656357267322323050457960112193536 9024372760879609739849212253700096 -159898818954744793118636607514083328 4393936130984908712820098373517312 3051453323564013996683722422747136 -713363458613282170942154743174135808 7838753826195007622885889015808000 8297424834468744683553234356273152 -562288355140486132865390225796366336 6500081160648224125764781314408448 4813015519870090127578517425094656 -719822311288952957540948729577603072 1381901458913886463175191150198784 9386394207547781958228433308745728 -34062060583919323263518311511490560 3916861396347112902371914538811392 8728718328358245115542851593175040 -333701690679388778737267889611472896 251516575762745709043198193565696 8234367181411131661318461279174656 -920730800392049384201408021448884224 463630335786746414334955227185152 5287824991537146884034552188108800 -148709582052024517189721120873381888 1164063421417925177736787660898304 5926227958997394951693407564595200 -830538073493724307634747242134372352 3920326222603204544373902767292416 6687443662573802194564667406286848 -302792384235913663959875891819970560 1110860544835532094763608668372992 9778580604954823184024347407810560 -125837596927414427580484202075783168 1086621482219794383786328820023296 4607742252789411106720464542629888 -52859648948951216503564422208290816 750277259516795955117894007783424 6289242819179417051323579441872896 -56308302805147847754603490428583936 5529187743566374569150800629596160 4565677972599362769080351723618304 -169527641913148591408963401535193088 1919320745688848408049097136668672 6244546682813071690772929698594816 -855963141818215670665808394152050688 363618362798373745740714973593600 7854141554349373642502896367960064 -136148410780612421502273637882789888 3362899242834087526144288854376448 916374270842536076883640723701760 -150396197130850572982538809852821504 472493583848743120417179010334720 3455249810643312169392389171970048 -133024154991456706767742145979744256 249692668212935850059307830738944 9710390146824335800882812053094400 -378951213392598871887695145645113344 8933028613083341295162606726676480 1176147991682427539436086568681472 -699982758238512943272756240489381888 5923783940950507873144516695293952 3537992890046003698096098984853504 -329613789204777062401128316765470720 1587592539648514495508217262505984 8343108584803718266921300942389248 -479865062792350156156161287553810432 8143945666822990388218532611489792 9873243321218211956795534345240576 -492398491613512345023284268306006016 754394905421529765368533411168256 9703921819349348646614058655547392 -104614313905705758665582461698703360 9651028789203518797330091587141632 133763428363247633287442813943808 -839635707863910551989823094262857728 2742641398720817693610597859459072 2897654600148495960959772463726592 -489887747607089101432674786773827584 2191045332698688691488299314839552 5686778433748229804502989653671936 -400969792083224371220451791107784704 2502449585692800111145721192775680 786482188964815051108101753143296 -224086893687000748336449978560937984 4399117566899116731847315879362560 597011738999290260309812814282752 -9110297959044287632874204125200384 7652985802743938295091086030274560 9945254462595512454920143393259520 -21607415886315554051251912468070400 8442899898552091411390279144439808 415460109082763604731183157477376 -773393688387856148893896127339823104 9484782212005476807397804018237440 6305375110053520697050203861024768 -464538239312163769625734773678800896 7315522613696924584253971452919808 1583358517455437770652167729840128 -232747492910832999315991401169158144 3055431430648232798056549143543808 3931849366287253733539047830192128 -922454153297879446053433048303665152 9109490803462697567228952716509184 2585530750632548637160708331536384 -314153730448028922513078885774524416 7326282290315749305897375686983680 3969885791077979385313808982474752 -775979073986794115076181734643990528 4375341138740057538684292863885312 8218693627415374521257682393890816 -825848338667728927736485912202182656 3268258533239957958347741020028928 3722963699637206815314649076989952 -763528579169865423698505439954075648 3387459890563556907455625627172864 6083704296130049478482940450045952 -601106668107743624149688709940248576 4022915986802277016438246939295744 5747218511367394843700255495553024 -21077781064416433242662322883788800 4417332320793730223010669341442048 6933485253700951049379468934119424 -360988248957569995078845420342870016 8910293025714182232527460634722304 746509598935893011831651886432256 -536539358622443787512804104812363776 6922745361013494798388416896565248 8942199027382706370771376958078976 -693321342667748403978301175333126144 812835105019919617349664808894464 9247082648712196660695167345360896 -365034610514670983364294242774024192 9590916742441921750132900315004928 4415965831545548345718705949245440 -798082245343841730638906188363726848 204855296818747159537682068013056 988421377251740647847112663367680 -545076613678004112304583731958513664 9710687023546734457943353204932608 4384748226165525791060971749376000 -674139695218845981827471792366682112 6415799605040238144855607202545664 408416628447743877367224055365632 -4262939075908954231224846969208832 2251841096885740617001611038818304 4392772999350006588279878691323904 -665220259193371007718320046142914560 6244745640892750445530242946695168 9393551658944782595864642870837248 -322576499305982241917463711195332608 356092090801313647087932349087744 3091766103648044502132696798986240 -25936929869854167331114197448654848 6755504030202004234115950103756800 2775401396354926958142274419032064 -18692086824165621544258725197381632 2582290387550238766215583070420992 335965292169040497438997455306752 -76801704052286331467787200142245888 8007127553578396695071775147425792 9372806900431652788410741528985600 -235651155961667782843759601188339712 1869530394225323980066610653167616 3731260415474515530532097250820096 -561629876149592333465936239777546240 4893449223214148342933964667748352 7233654925911204694939734579871744 -619185872638412269625371028464074752 2778396428590845383852148710703104 3607499303168236705610496468844544 -392038001331049290735377613980696576 9840998448071300182196021289287680 6056082304461797774806269638475776 -643188249858303413168499230087577600 6400509846127386138271630925758464 2903629839037447610306920431222784 -228374553530612906433483006449549312 6848351413752759501926018353987584 846760176093176840606653121298432 -276432525099511332984408336012148736 9376080388685276861521521276878848 1430437721612745965413444528111616 -222869965790904026524516843320770560 4260942174836679635490928400007168 1643962905250882058421962606116864 -163399259154334967673388410010075136 9669363350190274724383657698525184 9827748300808177936068937867329536 -801148672834675751820555080028913664 8998976844906148576041514303488 8801912790560124945438817191460864 -718625832389436508141059124632748032 1309260155412431016858337364934656 9271834964528358520329682645155840 -976515492519773441760526546738610176 4496832754464201196709724932800512 1567480876764678047157480801173504 -99724471523004370901160137408380928 8680240221597235127255129389006848 6934804200505655841538929634312192 -255745056100459759351729116827090944 4130454322379846110490300537372672 2935457144127325904939552948092928 -857488587783734091726398214314655744 428137115663556480112070515228672 9068608025013451405980396710526976 -932240093789703440020018071448059904 8937439554402520342547315239682048 3666688962318624995032865089519616 -826769408538042244627657215933677568 1489133731914006124888748611076096 2047997863017188176383184004448256 -632140636939192147135568370636685312 6812860195345835063395091614793728 240032223157339210234902039494656 -280300206788508487465908901964152832 8673957728931191499412243537199104 8289181264017810639497455887974400 -137128610143707857971299531328847872 5320149572882274019999657211461632 5664592379277576777457248700989440 -264059563196752894187990311577321472 8473563708190313649204688020570112 7710821251667725945559553761345536 -268565331315542043412936199942176768 8473262550154151241998123067768832 8277095419670554970117849200197632 -987863428177631289071017577819406336 998688582407228856804644889821184 6098755172992757638181641928048640 -594597905967308392554414931183665152 8848381076735885291564503729700864 7277713748298925613814276979425280 -294294944645106594998430671015247872 200412736194071027646135904763904 8397443371420789552567612195471360 -642320080904814376878675727667429376 9006177416338169981926611731087360 7749115066753012855481951261294592 -741172376039482574536838357180219392 8013032256310328217749218488483840 1410909280114233944757561477562368 -69349855173665246831299312293511168 9091967166049124901617495539974144 8057329922359050897044094257725440 -521045869093170715612621745739005952 4345363900201731411100826289045504 238170764879109432518961839210496 -706752038227776241437570050004353024 7704100334033480545165746970296320 9889794039816552906009659194736640 -360660328684553687882728081834639360 7203270915442701244833555755827200 4688069333672294148076781791346688 -235765085795159065095751115986698240 8435716062475108145826924490391552 4596351500728021361259305527934976 -418178710774627503431526209602715648 8894237085804381655240262027313152 4911245687523041890020842117529600 -843811440813783025716619772700917760 2642847024090228719262141939449856 1756992583091241490236559232860160 -739079212985287992037802422791307264 1828060400115462282629060052910080 7370470147092217375549737979084800 -983898000749955809925114532145922048 7131120583643590124812277443985408 2755816717751720445935128286330880 -414292689159999231615585618564743168 823384296746287259132671469551616 5237991329793324500084793175703552 -464097732570361547868476713899917312 9169014291411669396694338619047936 5062138439970340090625487095726080 -647940598818018274824492784931569664 2969284591305359343156933561417728 5186174807669391027874422964879360 -16990958427813463045949574556418048 6114715320300768221759912743534592 3138785961223515237917858128199680 -685709253687705466886555628499632128 9463392530197949295231524346527744 860184791013858357818340199628800 -407268526418324980621992142464614400 8240319977692396758258981630115840 6467376327139005783857789661085696 -818639313487313197753944624966139904 6615025727743445645953917029187584 8952602062673678173250939946795008 -584426976464919931531655435484397568 701049815924251596508208486678528 1915775535804023673182738152685568 -224059924437302744309863537736417280 6681819451308369108443864496078848 2769530437365221001918990038073344 -69181981625698893330847394212872192 2622028559475263284457417140600832 1085761725254118379836213594947584 -376497902651730934613990341253005312 5607542704940594928881211977760768 2025375980894414813295142152175616 -479040930494873334540491019371151360 8366003200177264403592615557070848 6693111239374938105158444320292864 -339318233683044690494592350731370496 5626004808264127854782158276132864 8604155384689287137716830109433856 -409048683679683396122731358151770112 6363904179129886536912306530418688 6854672493342083399564981245575168 -871479515127076974034266269998383104 7694365327865460148190987732123648 1144564278185857254890489757302784 -943231046194199014000156273864081408 6814508714210650514790061856260096 5056105135735675470305620788248576 -764918115999058137867141398644391936 9227028977448201439992729498025984 8005249814450255934136850206162944 -377137748804506942754789968790421504 2383889660947781125110427251900416 6467397277694724490176986785775616 -607359660654127255995904190280892416 1284460958769457721772544337379328 9926394963538359321321188771233792 -796575805779019629441607893103149056 2534438195332149287050491866382336 458354874151533982769499779104768 -763445262247963196348061969377394688 7893517598619290033994207489687552 9110928082173840884153460226785280 -791685351366855711826265662558306304 526357658470619059333275297251328 1423659529230731008479770169049088 -29415692264055468039038702597439488 5421656529163158663572415009783808 8590220044815008984452221913530368 -607892495179563446023485570968190976 3794474904478740044569441965441024 3950944827703263808469158628163584 -430003752985330480675126873230934016 2212800751096983643348938535206912 3541532153089855585066023995310080 -756602375023554142211674892935364608 6501778035525552041432433605738496 9828387100733941329396283314536448 -286978625050086179935102447860580352 846472882775112634524045204783104 9203309530893611708433379803267072 -60009820058635094006750689882013696 2370840745257008434910411276419072 9845201506470720540957937833607168 -613573066077419918535142728334835712 2519051862532786540798038239084544 2016307190870389490431047067762688 -584224520615831642869218691967352832 354783465795895794648492109987840 9022636772548437663975681575354368 -871766466721803611169627688606367744 6702125514681087860196474630438912 3204822199900916161181224733245440 -946681397817885706806205454544273408 2722686419831223295833854793744384 4062355495205439202498865312825344 -79966521981739176045213815006035968 4179327675862455874326283126046720 5974820360499786909280740541726720 -933461538999166332458227099288731648 2710221531385783766322996330889216 2134048880526366263464567458758656 -984826221003157723775675375965700096 4025411268343313746392085952462848 192628836014560100936356137533440 -903936143323038569191381793532542976 2544414435269484047597071679619072 1039354319709371447169818499743744 -92397273077518105387698407637778432 7899165205804160451012900811702272 7820818739436420419230667452186624 -93482858525855321457524094187601920 8192430830345707660662941950148608 7750898863043257659558695079510016 -658683373979828977252596547057614848 9900388776926746786119186926010368 3986792570822402534716331274534912 -418361807360497971320340088042291200 8474589773996119229625253679333376 5965483190660424825211876443947008 -989812167022394236705238907973795840 6281969043697067667364455003455488 9526126086761269231218011955789824 -828871556843769008728465899375296512 4197885439754089752500572883255296 4361418011870514950118450397184000 -913079735243310303880318897925128192 1493769888615768847758981737742336 1474396394910829313286220709625856 -913752652711006813517741278669832192 9799085710894530644918900449345536 4881703389341929840706205813571584 -70559117417934941781264105039986688 4433412324344462675313175713284096 641640403143246635979460298407936 -357294065498381003940643979122442240 9000940793327982822562270705352704 1660283800277049634756448550387712 -983174824790048053104187237281562624 9345628539125216911729368496078848 7505483588664927926682855304855552 -564566509759488783075096367237955584 1114894652584766424420054797910016 5314066721435454101019490955296768 -989960268174067576310189434981056512 3930435268578749097475284972601344 1845621537658661873135471483158528 -332805089645456468719270437341626368 8276448924493493681473822843207680 705722106476551624292959323684864 -867585944711330514619282869163393024 6302008431170802859740280788090880 900904019204653388723339845959680 -731591735477754944529240860571729920 751716920627223932011320784715776 5091955635832294602739628489310208 -623776380024543431433898892858490880 697598981763335286368358717456384 6667583909762094350142802640240640 -498372014340391357611589569110605824 5546024641061419765953105672273920 1110058903814362884285638803193856 -616475334992762522712216047286484992 461018056334042903824144441278464 657765813939289336291750043451392 -221679726667635480233388423050690560 7351824516184940459008336093773824 271598553592291405994279565262848 -6519343503870987284881543421493248 6373808254167932372568763982151680 3024643389808979139322742612951040 -499038202533361185639594788690853888 5594907668540500091399270102466560 6189281854775048556335895597285376 -309155966746154911175441880885231616 525402503400024163653559322148864 3743376027759171091538559207735296 -631053578229951498080091984376102912 717844078569518874685029002248192 4860274086020458558669579293294592 -270800333970037570748242067984482304 7320416558242530943935126494511104 329273107881533290037627072806912 -385791487637669888517415602965446656 1847208170377719973103708764372992 8080778835429669795169267179585536 -311833628603391241537210544214245376 3772522221155682193410392682659840 4058377897785519780112822983196672 -736819517757956287386296727094951936 2722959997331145447724492328534016 3828267488836575038334516454227968 -233713255787001446838175878178930688 4890887290728784653385178009305088 5784627666097548289201782885711872 -76648628438727174061046072791269376 5022975177056643112526092104105984 3594704870290387798195474595315712 -401468796198161683197733063723319296 6786792179448072120437383427522560 675593366366504671181419151622144 -487976410609323893660426845988847616 3289431978312177107650666739793920 6965473973851113997520908681478144 -484958339266549132108914268573794304 4385307351625603998790263748165632 6791114349590435630876235317379072 -680540052671516606137469730801319936 9082624499121064787215721378611200 6475500182538147459975443971571712 -670914931190486478812563862431203328 8019042434797761908017803135287296 8073403976016397495383951220408320 -786302615214462523546505519338356736 2759699105960019555771566182629376 2030417260865407966517685097857024 -209519031056580415532579287033970688 6799715694261046112759675260764160 4171442185140134037573877029142528 -34158359442025776565660803789750272 6345962924508697499735432087207936 6607309104788201238511736452022272 -417901625753058487433067951546171392 7735964182888821115444727054860288 7957467410836995434988700285534208 -745838538530764207406213853062627328 7152469919356077567466537027108864 1767042309556997858634900013318144 -726564160595310335202016007993425920 9274683476512125589191040471924736 3514904052315436490833825535885312 -698134731744419944035567292035104768 3374944027266641290435522174386176 4713729648903419282898278691110912 -663815194619208547066860170769334272 4406872242538054619524786865307648 4644471414197193805092651609882624 -907503653784352013094595399690223616 3741274944535221149314542311833600 1229851251500454026232032470761472 -839170877971839312875629355420614656 63602422606760152652532309557248 1154958345590993829305537003520000 -624304746001941340553006093405519872 7687683896659050993788581138399232 2760461211402768908083658743611392 -809178038204557733121969044324352000 3479684825711918826674710632202240 7593652111594885026213198299136000 -96476032879391868864109270370615296 8072341228306610550523756665634816 8374653057469367260522837943779328 -767145033273568321922608789547122688 6806603706676756196239082243751936 6664499208293017359805271922180096 -263918084434060218607005755301167104 6544617538324258371122901513404416 8824106423666437236353643715756032 -867505388909949875251550006976446464 7575792439511100868277196979961856 4813457460129402240489998998568960 -445418505326756918427283211381899264 7876104732946960910024044437307392 4791770741938082289731733890793472 -368546346227941475447522472264466432 3556682999462129728515438863712256 6030793143079438913403310995144704 -434322688540781053631216012845121536 7517003247737986539262148182278144 4274972731631606188602897043816448 -650395343104615895442893827662151680 8974023191759672521219561918300160 5347511380493541165738478817771520 -850572609973120793944284853761474560 9494422776432744403043449950961664 7871791556713936877847311932194816 -997525308185722321022228094343184384 591705611370332315362316928417792 662094650847115415833265043406848 -196478510140747672417952623096758272 9429699413394406687685125657853952 8953214982927144677558264872828928 -114723705817571717740298276205232128 4350692737558171032617600017235968 4755188022555952673843152469098496 -113663506552015636050728411176370176 6859172604991561284802652485451776 9375101165317137747783530399662080 -588138572378117570584991149827555328 5204504038937870216963527008059392 3746380284239282090760953762152448 -419126374486861041611306441975529472 3322460083985217539678939935408128 9757196530746802286280876142624768 -951988512145479151677268580490018816 2660939441041672924954216716304384 1801143002702513861415167850446848 -893539018480547634033910432485343232 317527372310476463724081511923712 3621956810321580442107232751976448 -183077750747345173409275057753030656 9735860075760547834746561158447104 8843398968822936548165786605191168 -580195014378492231917631861432516608 9760937668509206539265641436676096 8055480363867595457355635260129280 -158873607613494984823631190134095872 6472878471633477138275427244048384 8435586093245076803146183901970432 -109321855608604272716860138354376704 337641916496457947336777280782336 5195741050476325214407708706340864 -698314045112174664383866201603833856 6302364914441461190234241375404032 8339239140286083951086760527659008 -234288803998865062982227610914783232 2767218530007347314015385774194688 3187307009947441277702477050806272 -104252278445050040500701568889257984 4707071883788657319004885080866816 3001077099591884866976556727140352 -167303993967819582177951453309566976 8815496725180278233151146395959296 1516568863339889820263928375017472 -814499158555825589164939746949988352 6815191994093477123430373258166272 5714159130286935687508955240595456 -333807313546575065493432474651328512 6799495636725692216520802081701888 3358899371625114639312085651030016 -604303337272944155537519428446978048 2803279857290302333504067823730688 5508058641916902197993636982947840 -635500333401731213576876080169484288 7141016028589056179092142503755776 215195445105829475234082432483328 -703844135435760915811738424579194880 9220612120675137958632827809431552 4130858163857298604629060382359552 -908314208676207359798326037286223872 2900369945329711446363410920374272 2782480154225695046463791761981440 -449981776016226475998586696598814720 1735727339692520861645461539258368 2786115486148370493043188793606144 -633321436277739789046639964090007552 758629959152854966620004255006720 7741125349782652730632076336824320 -98750734757803861338872451231121408 9952518737556635123005451036262400 7862912899678883342978125150552064 -922317143853356435720279813886312448 4015851546454297979289375571181568 6216989810043841280041784805687296 -454455938876043228047195857112530944 4962161718194210884272855099375616 6452760869617691317639994396377088 -266587521210410281673268901714067456 2595415658861925859091675464335360 5209282902800764544761504173391872 -556315234346392738105427008019234816 9510318871716712691622222910980096 730519565470642118243981472038912 -607257768404653501149848137117990912 2751713102331303909896380695445504 3955941710600304796132177803739136 -946884718733490150729001421213007872 8356434349292805669574105263767552 3261446721440380406710369081360384 -476342236446997167701630822098403328 4254108192049837186650070163914752 1480464139841115383061701541756928 -650402761239404282919642189076103168 5305098381353390207935470075117568 6284049211702026542516120009572352 -592974839554102503810170681072549888 8050821767610560629296870711099392 3347907237177101935103738273333248 -131277790415299343881660366086733824 3806171429026692998190246760808448 1951925807739038075353641871474688 -958691044070521164073565084782166016 8761316494912321337774845559046144 8597655109428775957391733996650496 -784834349012250091298654810514915328 3682854402939334576954788510957568 5212105823754907135577040026075136 -999186705923007156522353123771023360 4580561245016308596088925528784896 8541102126508662626318332280700928 -938991464156328327902438855511375872 9984698712826155454975785534750720 4304200900458192061220733996498944 -148811216514561155621940105297526784 977464969947741834078718059872256 974950352779403546554110060789760 -377143324255825124668249029803507712 7187798622095212790461108381024256 5685708302400910204698769777229824 -832981954880029337791761747009339392 3220777626904324658727900860645376 2869973465498116094916778377871360 -2589820737029898514986128308699136 6001884913758049095633087062081536 5026526094290351752373975545544704 -26944240638620106637257443647684608 8935684199763928530595375961079808 8820504485483084064616074750984192 -73793274615822700984303567262187520 2940351363501752882007728864624640 3611291048912946937226149689819136 -797920836688582298653388670507155456 4856712833173613131069536742670336 7212187909147505877911067066105856 -495205463678158165172480021691891712 9591216185800291879760142215938048 9790631299443408920221269960425472 -295318848806685391383238882745122816 1909623574235306376441753291980800 4944603552545291502911929089785856 -971323415394146853794421991658225664 408745317869563071830427395162112 5980422912046451940664148261601280 -45701180067793153653369919196102656 6734442680104365690424291470868480 3309252943097654943522724861968384 -922612013061896076693994572355731456 9439775822340056824953080232542208 5943199785519168284730480434085888 -923832016445606696070713915874476032 6856503244185012823569303276093440 842971396137920661888866373861376 -527924916310280064914263600485367808 1375205028649345666890433529118720 2854757164037769160496684369707008 -129054720609210383425274450081218560 5717054021142241747211057811685376 8245087807540544025637940008845312 -84329397272418325045621571658448896 3501320800834827580766150375505920 4690369230732580626436161252884480 -617409181452486579973302043350663168 6850784657195670303915674620133376 1828034070690885676129121042694144 -23370460040975437213302712478728192 7760359872639193645094597528911872 7178725596855592161831430029049856 -974498026131101836034543060814659584 6600727463511287633530495027904512 3021707578781685997422597808062464 -54033124153227013310514832204627968 5386681767634003473686628768153600 3913565912185668123577081772638208 -580622711250533133226777204341342208 6346725005376156559169760891240448 6089872686000421569350922674372608 -264045699329050931098067444124614656 7581941280285582097171085917159424 798505424189413668207480501436416 -846316052539576764397361025937047552 3210341451179972470830101600141312 1100247133714702594994913067139072 -341789779004060680663441010308677632 7818309189523175223859709978083328 4847137426034508338373605854281728 -173673786809033625910637916722298880 8524755792405238572014721845690368 5273976072724712943890818465267712 -425747482174126570221400164170465280 4886116510509232446059649469251584 7468299062874776910593194492690432 -760106538635901815159075732306526208 8746390351205918772988331629215744 2374739905509051644623449376161792 -704801654825798441110561262428749824 2560009011752949290987867315634176 3180259630285879904325909040070656 -105683731514339467443286964904656896 3986025252277016805269628893790208 6210493559738735783838767594340352 -479241910788246315512917349334253568 5018251765805323568135948906528768 6617564072363662725201610737188864 -932870970946056477046839843441606656 5228232511686116077578258948816896 363275414161585248174227555614720 -422508844922974755286257159012089856 9290179285447105029587822094319616 6490944192291174052128453644255232 -742092392216791070158038919110721536 8218383889885425290482823613906944 5896956700912138667581636230512640 -214087664035747578122677532865069056 3020177569955168862451708456861696 766493744058240736600138855743488 -241531712190182960432451738054688768 6283823297917834900206744932188160 367756408152974528981183687032832 -394537978427572438112655635273220096 5298660168766296977834577376575488 86693318913199484025816433557504 -755015803220584730382469341605003264 7099017043825685121509007630008320 6927074537162788120209873994514432 -471780742040556802961268533972959232 3822614769902642709988859927592960 9334657553283460511218860866666496 -590555125971928478865654655987220480 3946688619260855714926664861351936 495412979735291434117945714802688 -580020595577080534599485965314555904 5924207323814824294881118419681280 9010350544086382220312132527849472 -258329756674411382472776395834523648 1469393901361866111060792326488064 8932332430951408155585692376760320 -692444107187180617138896392448638976 6703593572949202315884402481037312 3181855992256814587331534244544512 -363805439543086735289994499728605184 22279945106555736135010288140288 3334696065229305913310756516921344 -166333062178325391503076306823675904 1816400270433014881261863867252736 9047632555633241967873385834741760 -805640910628231286804866964792541184 2243016378887418750253912473731072 977317025108682694447471989358592 -11417510648250069134658849088733184 6031785041414244757124095529713664 1664710324044531158104336056188928 -358293555734377195118424329275047936 7048178331244421191314108623880192 9445207923475542920264780624166912 -896577305263161696437075065553551360 8967489608695360816029286145196032 211143767005879579999226331922432 -858066483212912026639022123617615872 5701258058081645941750281810214912 9956944222076842676733546581721088 -828029900761589667512211087481110528 4135149440879465639153488181067776 7676590371322963773461046472212480 -567643047345184015717329425554997248 8026535491031370973296742287540224 1560729050592182013866370951806976 -803865958465232804216775343073132544 3197925397731228479568514950103040 3539783095295141930235482645463040 -111719025243805707743169673531752448 9914263010491772791329703000539136 1607803885003445438879289103613952 -268423722816910804325157103414018048 9553887462245252055325821013852160 9756512526282878225077386893852672 -498280112879998543130594848999997440 6068658406691737087826603127341056 4841937537131290658893489791565824 -134902344003961554347520668397993984 9269608853400604560086848782729216 8107189913527449887493792280346624 -919597226228344236489118748692709376 8418871988550302009741488477437952 1054655275350776581194532903714816 -191157577340900723271074677333688320 6191478457376171679429401463750656 9192739612685563460912532311506944 -117703963255341167070897147220066304 1448347306329642870604955656388608 6583312351973991583795309273153536 -600978348402518001142781073235640320 188101879171381515116223307710464 5223320867808514045695261895819264 -318822997727522520532028382739693568 3982322750588475137218725063688192 49322071019196476973000035401728 -548729096048592744194859235671015424 5200614076750528365641424877649920 5733213889500172930417770364928000 -69322560051649204515868093058121728 9294774161212538302896343705714688 5092423836446924930675913015689216 -91218325937790777912650720220282880 472741415314258491082388969357312 9181477489754607517964390090407936 -950876582201876425633222969060753408 2518248344120017544567145222897664 8301354633086830107704333701218304 -669275465370711869400422080042762240 7520406900219765105214214947995648 799091810862941974116425984376832 -873798259181516296334610536880668672 2975467375476803505205940011925504 7645222648964785743809958618595328 -60407802510629903103018910561075200 9194451637125180664099095124639744 5107827718074126856415153766793216 -700736477949561212357285660938207232 8790215030318562788215279107178496 9291944324843607055362033906089984 -601173642828687204288555541162098688 291883583526180005357483181735936 8928650023203798123394471187972096 -793319608092935468391429391966535680 2738854807770923370484252182315008 3642700221026088080860168104968192 -255596741482229947693298585801064448 2723540513941983925745382089293824 5411856167656439019190802710528000 -851790796893432631180429700236312576 360523204443907119663017684369408 2483911558186153887190572047794176 -566031219705244026246478811000471552 5443213694144197966283824106045440 2916293931159481426083184832937984 -475996322050592751508708231043088384 3730632304217205510865833393389568 9550995882525691573551700975288320 -8642645151217488944055442001100800 1945584416239570597521258992107520 2726051772428194810102479440576512 -292585890820114398994963439825190912 3639871721704340502736238209400832 977288236506536822703166626725888 -843977816260777964943483805460594688 2280629531324640311376860216819712 5607811520694360766900226414870528 -616355555200710818189478375809089536 4333351270762477423752096159629312 9125086678604204970025939130908672 -172514811427182212027650733573668864 2901537628450583721896263154663424 4309272195567702424513173893677056 -639572855577492629065051429220122624 9412179934418143425527111980417024 372840143393674590038910635606016 -354800565874858210558356077234094080 8864900125429934973484393719398400 74041798956045110011965286121472 -659269993343462860194016368823107584 3770298084116489565224409145278464 120869692249112266069772957908992 -674371430884716508516199169074921472 7961301143628668864444662286385152 2281089336682166449002178198634496 -865192927106939643372798832921280512 6472979119625975012512639465029632 9013115353596644548696014113996800 -373009297609631953480829331394527232 6176174873738564336315042040381440 5015644968023264579493515558387712 -151114657185941077318473972814184448 2957023680648310988239015363215360 755208544530635314047370943004672 -174327571205039230644709962547200000 6653186205603345809292803272867840 468524266518501917177655089692672 -9751832989415639488258241093173248 9251042358062811246581549287604224 3387064574772701046275238399049728 -970950670534137487646692151599824896 4150579977358856593666482775261184 3000866484269936065044693460713472 -712600436363342803255287487844581376 1360827745463341818187376020684800 6276592670001975819926104847679488 -763406348034760691366413332289421312 5218357958988552296197554861768704 3689072794430753018199639779704832 -636944715501885525097637435903311872 3402050140790678633625211419754496 1469276068358286448379310760787968 -330174775638722666596893919906103296 5505479206701865179265118368694272 9081493247650640669309479405223936 -646878721105024822472353441027981312 9594368255085770959565565445799936 1709328147567664718884323708633088 -486726496669187753405640326355353600 1021062144923065765858557244211200 3790379538467884846206265851904000 -462480905163272030319683917068632064 219600745092970687593330470027264 5288025504633222981918239597002752 -165849869510430802727748446139187200 5910869662591375596295845350211584 9751860836283393900229878440001536 -745331715263060944535170721056292864 2681318344744198621326104151982080 7377256122265249153025672218673152 -977196617898438953794330965839970304 14110665595839841016510932844544 4617563125861011697996455382876160 -352358398671412249380057123611738112 5416563913576345614325077034139648 562372052723768691260966479855616 -605469346796847726177156458642145280 8255443149883881385578816962822144 8959210667364130447238990001078272 -303649570518134201938295995009859584 3748790260744032461913216969080832 2223449573091451755984973398540288 -205017185246935889291766968143052800 6750935202927502090709420363218944 2397790480295739497001818022477824 -358715295152239460425371296221626368 8904816056229588120286274269478912 2743706120519165394066890435854336 -11400619288130783033684620509970432 4660910260446780309569658842775552 5801808921398237194637494819225600 -949646038260052256828658577357930496 1269483445714705517539261086171136 2454691804535350298833686334799872 -888115987634821072919217731188817920 5834157089004311748042129166827520 6070943771312432982672429337804800 -337446297332017304246747357157261312 5284815069149707072361790040965120 2785086123020667093056552150499328 -679055457153575269368655463887929344 6296007902104550014664866529280000 9701379656981502210591198824890368 -337389247914522001299827520081756160 3918325696779615356948532955185152 7195801804630185077339260796796928 -619299927153022397179550301281058816 550476435010033566286761947037696 9068442620334489284057108116930560 -710227483137340447776623525923651584 6410580348225403265817775823650816 9363705227780815212362116909498368 -552300988872254925713079446494248960 8572495555063893699253075609387008 5352639327123298387045631202951168 -630776067495013561331794301790715904 7304187546030175089503818334863360 5844290025145542024579444876771328 -44259824080052211111734261401518080 7006527279489824420692559480750080 7246253943628187622210854576979968 -626458929548103996955314178737831936 3304741020649338665250737887379456 2765445652564421005119827241598976 -988964305519384999530546370957017088 9078294747290630447993449240068096 8913699857298020793736439420420096 -567804797822934755203810727437533184 177420805486652799809698459025408 6415432162928917734010947060629504 -788804057901738544317945159822082048 2973065220152214058673511176601600 8126685193069704812380643041214464 -261802307967508128777655792298885120 8525451414274078798335800936235008 368037977255890823062408455520256 -957871945735352209877458429111435264 2687428997748883457791774456545280 5948298466166793447335292106178560 -988751992757165776442192147307823104 8505476626877826789950446523908096 7230609145950261432483375103344640 -908578660644341516420259893129248768 2341516811456333849914992662413312 4119931981952004893191810186215424 -273606189166440760448698966781984768 7934944517284333113525001380691968 8226315108624057238303078665420800 -855210655681442477922133023299469312 4563950947497412713537241194954752 915187414808168887262491147501568 -324930710353048563509429653787901952 1362252375231320781829248529727488 9039504231631240325825412701618176 -808771202387104824157760138418061312 2384234528417723924500242382192640 2037918221162288717939524654596096 -777309659054339464957552961551073280 268263679699968180517083803549696 347060467770274667489626633011200 -218335106786757052867754954357473280 7105428002908354899576122100416512 4217690406071514706005943587438592 -829996853021248409421146040410570752 9093243715891938931131432237531136 1803611947109947915183944900804608 -492289752308211703562177097184051200 2489988137364385365466351828729856 9607052075883765495184719052013568 -613260154445359841814338737794973696 163996259635229385842771286294528 4836430706064746817751043736076288 -782138749932299830237586083941449728 780004565123966087513297737744384 3992735593357822373561339098431488 -47002406803017051222171096587436032 9129268074232444556214621200973824 1339362896182128578744917786886144 -800363864353337631053108686190804992 1754129690620252126168721790074880 1751298236270488562091947278204928 -623426322342547009973831603398377472 4103333183618184469144795212677120 2770865229081408601203115529601024 -586408747214366098029427046089752576 5706179216294323600790511813656576 4455820015942160116905689279889408 -873902003324874415117642571330879488 6712183332499212130522010837057536 7890926449302377177341616845750272 -367202914175209378742581695864635392 2188186842813713619711483921301504 3081994318879083644372578780315648 -265723173200334541658441934799110144 8399623429104618673625773056720896 8990103001916481016223085486931968 -381598571650518664938408287569707008 5834196104156995889658457132892160 7622212288239449207738401879490560 -366872228641660373172797763070459904 1875037498516489245734513957404672 4859712521301488891415529485500416 -471038770081565810159604346696761344 8193823478595634440093566286954496 6498520749895341577895653253578752 -694951283431920657021735287899815936 8949348333776131701453996335038464 7906883483525178050988290842034176 -88388238221755470186634807831691264 1824369679993856515806929138745344 430716561640029692288166000590848 -897025600492710628458869248629932032 9170488861440464118305323978063872 3937450473328332888189741249331200 -257756184877291344652674520506695680 1318302987537661752798253412253696 4987257195959761707455756481069056 -803325355542234846153427078740967424 5192669426179812125717421640122368 9529703330367138877426233606406144 -79238037712540887022417472733052928 6616830609675516680228804623335424 4157933447225570698325526115778560 -541003444507489982115908061960863744 7748890046368551753696220773613568 4403768467904856546893161035726848 -451527310285393644074882407849787392 3763299958523785989645332201340928 2887050460818238842330492178530304 -744641781449190007119087046911590400 483855521284483896857933626998784 8924694168385755787886633171288064 -732361761509663455543741257246310400 243647952332918443455241105965056 6890148873800482638028148444233728 -852778006473320232965892582185893888 5062446711471827022547211708792832 5807010524979246575236181630386176 -394917611903781860670428063811502080 8357115866951459760662634332946432 5391283654062975010310644677214208 -216659834911871703462113674979704832 1971258668310464033971371738398720 3936836765529335399055028683538432 -629209395834399904156665298093604864 7136438439188279448265913003933696 4296411676665231381456442544357376 -864498612005787727455227315897761792 4731251091206804801361804305367040 304627529693972755710674997346304 -750974993654737587771504823128555520 4138030331930572170805774326431744 8564362053295983895778090194829312 -269108565157927462984682799475195904 6255815899290675505638127643394048 3538636774093127144958309202657280 -454069129406745354064021607854112768 884507049491217174541100774326272 9778820027349382138445848922554368 -141199600168015774864495349690531840 6051949928066937801276067422404608 2473392840507822047040839058718720 -881448016075516919226632946029953024 3102725237249407128847355677245440 4216941555933189047000128758480896 -580846009748964611732341672940404736 883591013979292307084505981648896 2588118429152320116741239096737792 -862476017189096047512442901165506560 6109380896867700137323007385272320 168310986228041480550657426456576 -899019635482896542945949552031563776 2798084317165907026322795689672704 4998275249917427488584093770186752 -547946628959617802758532947029000192 7242622036404483090710443828707328 2543739044031877273959790928723968 -994686254698467559330463569995104256 9350047169590864959994565530484736 1684906803823232737772540709044224 -922489598210446095419807759134097408 1696410725443207003554613219557376 1880547183257476048174038772613120 -471280342875319109648011205562859520 4720005769551497467708438168469504 4528089989067192149771048175271936 -667724410705701222213903266804137984 5903515331609247025445667977822208 2687001482470760297532264040890368 -374202422374281339035130383594160128 2374291052887361286986023925972992 6455692531364913786054965857353728 -511623533168622010567301202461065216 6230966122293098089713545122938880 6558648663091303042484699914043392 -416254222999417869695482942648745984 5575293536666069339930754358968320 384147784080753688542376848523264 -171318917261988796347798216677261312 6258893286191478232506769097097216 9426871231791246326841016097701888 -814491804671342622406525670433751040 3321642320171330601586376285618176 2301304671655775149018107554562048 -27296656433284688409628293982060544 1865053092052701891422795637719040 7105909045860072673402895976103936 -670227697006838943418549147753512960 7644047678903341062600315553972224 501496216521744733915485388668928 -942265635570680055709742845275406336 720109091286729477665365942075392 5184825497327466368046178804695040 -364075586268319713855791724375310336 2319451294763745570533568470319104 2621297961222998123611523567845376 -487818145077446282385430366956552192 4634256465684960772779418954235904 9592153251698633208992784730554368 -723061758856082193879006997320302592 8366108143297376092180772340891648 49047181047379390304275283312640 -478551887723742040804071106576121856 268235701614444249501178135576576 7556748829480034639339215715827712 -647912503649923186677670985368338432 2037513409506820069195356603154432 8025500960899199064095184054648832 -195712958947024070929919916032131072 2557609869764195722592833069121536 4711211461188566218852972810469376 -53966955913185731576143349838512128 9982960573878762601169438684217344 3725421955376187207191968385859584 -482934748267398820872224593097523200 9539393018433774998756102202458112 6955473331031383146098028598788096 -37758383313881184034519408516792320 3249090332847717133988256446152704 1134511288130735404421437649321984 -879370850029909839706146580534919168 8816962178423281435650441282060288 6197366937566012939734741472509952 -845584878925636824819004503484268544 132933944342658124562435883925504 132732402760745961874391786586112 -926338351549090295432245341073702912 899048372681294303315642793590784 3173613709702485356312865076674560 -374177043091519084759101321521397760 9303213786918129284039086058766336 703219054510135189488257837563904 -755051360538912641612931610619936768 8007384271494850345483086625505280 6155410223835665580268711015612416 -617042322736071862749763431882031104 4068953068933559439746745078120448 1849669921489130305548594798657536 -181363740865711731521525016770379776 9139370286072109715415722652336128 6838188715778957651737287459864576 -990472781914181179685893705599811584 6788454638205068014836056496013312 3733043284632500194778410263773184 -171890802941520885467097458901254144 9480541892968522501881108860239872 1891165558831611514005591081091072 -196027393985319179966743005278240768 2775227155823819946626747098726400 2682908437498959310845439075418112 -946296616288667162811773917253861376 2377216913641150589605818811809792 9947665200466303748699714553380864 -397228711776582512802234735035154432 9348870231545686111782007618928640 6502264360649165736790457965346816 -395424198549800247301320285779656704 3300925793049667046917536634372096 5251898355393025639041273648119808 -515251763089653452926135293051928576 5810422617212099447709220303011840 5247337355403509279465504543604736 -592435279428755511638003718952058880 9122775965498386834345792049774592 2273785197662596044452765693378560 -5386054422242567409462618294845440 655691218197109580431236284809216 316782361286673509799950068744192 -763245435633322303254039328167297024 2063037102556303229935815552401408 9123245627484867550437807832956928 -997155698778944271333762433718157312 9980461123138975662628560873455616 701429863932980922321278532059136 -648508701744630253157771086059798528 9538001401722099001563908390518784 221741118298424271927988619051008 -820999431843226685144949060492328960 289524423815712574196465065263104 4294091823802530626648404859551744 -711665494345304785983447281000513536 8571528256057819468621908824555520 8482218933589833601182056994308096 -532220922690694168948898060205817856 4334387518624854328368816728309760 4111175311857215046338561982857216 -961532325469309936544890804678688768 9347649122104793112028786236325888 2329660770762574035925792488161280 -653771043315501843178972499605979136 2247433911797974377866648333844480 4727560222185244616989943646912512 -128150896036605737174449974430138368 9869621378081866228696788856995840 6110458984481282997479237553750016 -251677711888178466900764646564691968 2015110746775074642097868663422976 537495524177038394415693728579584 -223260244560837903696917608513142784 8426836556534291592570713115983872 4444742602637351116095845782519808 -286401203634409418735625647771615232 5943413124086066740620887932796928 1959817625985353797776888221925376 -283511471011977241945342300412444672 4804595750217539879320607216631808 355909732894335276081140377583616 -158697280482720603386427035715895296 8271456378165622465384033550336000 148546085072012362952856825757696 -257106496381553841781673252804886528 5092118581333685153575541516795904 3936824854981122309535382263300096 -156020987455712825109550003214352384 4866063832394343615287691503992832 3320425404504478103297957457559552 -329088808187524830417632255021154304 5286972926770354184067833602768896 3633830032974009903165615290449920 -315951722651561887592652545686765568 4407084819738913305709391017672704 1644758769853909404788836184096768 -286647436362696863006322693983174656 8609833719228135389907576973950976 2973101637988810999173696068780032 -570139877338573346399510240157499392 3637451444923182136000165735038976 3323414130739279065457411361865728 -438316670579883354941372127328075776 1909689282629321345066400378519552 6241888435851964874881312204259328 -983322975782117078433946385954897920 7739528077545720689836780372885504 580620197305291235027150459371520 -496704346931971057860739939986046976 1578705189556445052924842930601984 1779769471315406943461896928362496 -522440736921586674075071408953622528 5730832078370044867793528985485312 8051336032430555448629918930305024 -973526391376572136551114901886599168 750274284570102451675816999780352 5762776584078738514310456315740160 -977951438527556316637691166473584640 6379987105424318612604770809020416 6620137184711314886652930490892288 -900035896537904317595274487632232448 2848703231622585538295596486492160 5328760411969282323320721561878528 -378018023892589963622958264890687488 1172208474573903455077433081856000 732243807415622137745741487013888 -288232975798173453781666060077891584 7873697932491854933989092449320960 3841485497972663748324370551930880 -296033505248539587492235239206420480 9864595088011765987388326783483904 3009776221714285750377113175719936 -802529720505898066280229395694092288 2832987701341304276145847209558016 6247384914439109722691591408189440 -926992030904549026033742099970523136 436699701539838724675306254237696 7232362448273795943856562451251200 -254149832893363037118153890040119296 2645232344406640533653760778436608 4869110783636252482872812639354880 -59286549023143054146421528983502848 4932883002745549913662262565928960 4362097930018801293640223791513600 -877100322567304859009456377914458112 1137892634539146305092277969616896 5971945904431077623543133653434368 -630211138051866527818518187445583872 4243377868952863160704209461968896 9920723535257062725263202608742400 -978080912826322377082236256334643200 4982702928752552581815630729052160 840309162610550104224923331330048 -59534445628698300256763698135171072 2705985476796326970147051107516416 1290600840971328696918227959152640 -381521214477607224995684012441731072 2961670716360037747772721295523840 2904338102140426696686263873830912 -862241052214153787884845435967242240 4526004340839800908630994668486656 3389981480006292092406726874103808 -242173056604189893858216653698891776 8576948466563769703672819035930624 3344025639566747680852031907561472 -571388104856185569007702128229089280 7661001089221047052327115366072320 431226337938487388489633195098112 -733470715791120546905518231575855104 7229409419951102921567004681830400 5127499422496237440674877325443072 -614548760852119314600036002256912384 7672276290928768395627074078900224 5672251148751495875510274323644416 -516268472547962915757476531425771520 3885319230906666326859551013339136 6965094257374823682574836643659776 -499085639329560860865028620225085440 7308233017878382109587193676693504 901806834748883210926818672508928 -15598066548945501493187962103398400 2454487467586816237969016566579200 8783224811841542463693437244801024 -557419799365482303981690986782785536 4590391139624951676340638794645504 741421814164495676737389596770304 -270245212514434283069261166185283584 7686858988699720920127653986435072 6199521355069634691148543632080896 -855561633020234231371765909418934272 1660288341001580421767366562545664 2325014220139855209579602583224320 -119323037284145577527316292235689984 2357550287235572317366272242221056 4572295868999064509351485258072064 -437625944855279724837205607681359872 9623694385600831884570479248277504 6977579826203776094019035783495680 -850881296883782370387016553234169856 6902937095769975714759173098962944 5033188074702031792774096183361536 -431608404327245754626878489254428672 2461545704735465225888637516775424 6230115445172283169887009613283328 -201987895526015918280493108767490048 7509199855322190937644564347879424 8744117521965160453122255910600704 -353719484549721287457704540175859712 5375660402540592114630308946509824 1236235825903140023450497242365952 -275688892023260197375905357090521088 6532874496766249067250327555670016 198089936012380824944737802780672 -423915000755180213281372492856819712 7004562515990991383297075860996096 1172119359499011359227616816005120 -834738113033820471710940117992472576 999458771493321194280314531217408 5654210326826640332090145698217984 -950111779063700638354618586520092672 773792145048811939964148806320128 9153472442846617487160813971046400 -694803959781070348898318238001135616 9297321975673863487164650367221760 9631092473563123105188999140999168 -465374259832730471027199635881984000 1575225064838110282314966739451904 2804703638152517414067787284873216 -887332358747351011015931894870048768 2062217229567752047593473353711616 5801173481758799964993659418443776 -303722591478693934150189005936787456 7299460710079883477113184247087104 749028489708967682780468051181568 -9731400408204138151011705186942976 3908356235722754545335780117577728 489619839342550038048784938696704 -626953922873395138823426076594667520 6400989909743848739294350288093184 7840182393378669310198995331579904 -387615405988313959680090550451568640 6252720768563914196117042608734208 6060674070194435208940538321436672 -636100828748164864557152497647484928 6102372682862975074822179952525312 2510622692108387155455403437850624 -75348943210047096247420523294752768 475070969801132097638271157272576 643465540281841055527939799515136 -935089465318361083669068167744847872 5260508158285172402348009170403328 1243137431260539976157115443052544 -614996324891101802152709635748921344 1416623811468052457666283541889024 4004985334914021332328062589599744 -930061334986609100765673792643006464 4537662157192221320928467265519616 7970012002824037262246243198828544 -471263696111971214489410910717739008 5237896617880361262683804995158016 1164882497703706068822719761219584 -432436369988169904666688051593871360 953231167981021172554071539712000 2181118016745985378155359763431424 -578539801217303852864084319483723776 1090259904256589881433003298652160 8538509477430758447966573557710848 -40200048903750234333521349045125120 7404692480227505916108700481748992 1811257579499282873622108666068992 -676466410097373682849088717535051776 9381522106957627151233129195241472 2022678763274594260227578205831168 -766491543314730047498450312628273152 1312372236314798523758065896914944 4725286083525003909044834154840064 -281477514281163881253595954894864384 9393349469560054001023564625477632 9511372215602237205101101285638144 -447434212297380479701704390639353856 1013062446999086361409266227609600 7189554698262489337140386222571520 -310698643439212434053454173193633792 2186649487134604417556937837641728 8966706944141350853311108065787904 -676158591623107803250874348296208384 7783512418651713841606765993525248 7859245260810540119379527444987904 -130412520133097319809921061968936960 3846796075734017090226476223037440 9873632505931411183900655710371840 -26584412999313821346363962497695744 6775152570487743531241707482906624 9223079247602991455809983383339008 -580579575846071374253404560004481024 7932669256493708539128162350530560 2755046663751733038265019930771456 -273483979501524440150269827081043968 273225127148080406550188035932160 6810744291039623279604827527577600 -963099151866189815546825600409796608 6220854862736903261640403076513792 6595977105712692778635055549382656 -527287667186669000312080286695292928 8353570102908367836442494809145344 4849601158943504919638960559357952 -449424123322027172047800997769117696 3815739014985637442727095581016064 8916184459327840574154457785303040 -527775475773653353603038447816146944 6753818158659305920935617363968000 5997963637774146433683016443232256 -242007246571464983864299822340112384 7123291897998082915473597248045056 2092309568707466859858221741375488 -729487739578414705371578653313335296 3362020173212200776409228622430208 5195295487467502283195589012226048 -636655075172289415105972792255840256 1510135277412849703611354398588928 9431392969426964396891553222623232 -742211544639079107200134449584930816 1216666504069997108496541348265984 4825857509005268490173971966197760 -106426392493651631006799570942296064 6374081070301813025371341260324864 7068582830633185582272230157451264 -434381922464238238577270408538488832 7213401704020124614195399184351232 2660953496101280203813496134041600 -161997757431712570363343413268447232 995305957259452593640905803563008 8505770757384182387193234099011584 -176735278333410826927939174380077056 854199601851403733881970768216064 5721969086666401399876449560690688 -223746499381503916094934785873412096 2149582746801651094794042400047104 2092197519831054410397019036188672 -535885446480375764838178192344743936 8380775435337369316506927879946240 7046289360050997501963779182690304 -115494754556946584458604062210785280 6358585038741006847639657864232960 2269782257862379816904081060921344 -833424618222781435676621265287774208 9459144270312782139350807891410944 2411309520090911177617046436315136 -681089744971785786884766330578272256 8256305765180613558560106540433408 6134856471792558566231497112551424 -946694042071610242933358705128767488 4693503729667343239943249037623296 5168212290878719773387952719134720 -390340235044650846829617583388360704 9609372485957144716030495801999360 5503937078515160587487610799128576 -670717352882500360098711065203834880 9409862896840743545551211626233856 4646597379287723488630310841614336 -222290738341986923169689842516754432 1745568813316936579397942459236352 5015848422333505157973246063149056 -168598918201170249679662148497702912 1786162355039674804553927534575616 6213307148990287052583962608140288 -452393920562421328232617735027163136 3326351711699771659285589907210240 8675644483112184159668643995582464 -499342807343792678682126260870578176 562512418927170728750948116594688 6801602089661261328957290707943424 -375745894203274795048293659345682432 2016337402455243087405389954678784 9778015596994841594254663352320 -757776732159327381008943969330003968 5094645739986788325249023561695232 3459211463402374088168436024737792 -957763694403850317720606505093300224 2939041969421267532852699454242816 2504811278306708839105901539360768 -967155877774949830080115153284628480 3520676876141420090169154200403968 7514825881014792150751525602328576 -200091271656972036027566922353606656 2694598301386277292763080466366464 6473039128380131857610508894994432 -897352298696677652584505974047375360 5379816448079509114201601912864768 1256925110281818193030580522713088 -352953755929799065645570637023936512 6029220155505065139175156336295936 4950728357306545596886370213691392 -572165374356691524654400095234555904 8901923894724056573753642195091456 8641461376993965692927315934183424 -376549166216295193125825369339854848 7619320711572301443800121124847616 5297752985972782376084366721810432 -343591498760362494334292651216470016 3706697749162517295027290156040192 9570580114429032815497024813137920 -984042009371240589251152388112252928 3400363857884842112969149316595712 7623206868377651630499206843596800 -733448055908246932328041835797676032 5172804880941831085952986844758016 6648239513220648886495521003274240 -113084685336155076297854098289459200 2668689732565061377546750842109952 6762638369665625735288055677321216 -744556526303037534507621903012724736 3810281302901846757806955458199552 920700562120730333834719002624 -520413944838895750027519919225044992 8454337726438417471845519226568704 3913616035078967898402710582460416 -453501532698917222834617089014104064 5446925246601683750424864725401600 4856689039704889962743846943064064 -563558257863739205814502980245782528 7925260350881683586023549694902272 776794818884820711849121172946944 -980379572717124357905735797377597440 139152048795605041048112123084800 9733010906816725873979876670701568 -831144584414754943845800398062354432 2033067669780087905214570505961472 7031429933305767570411509671526400 -35174362405160452020298616911429632 6361857644356340032438883714072576 1429562087451270071199837422878720 -725146957376335247635692667407433728 3966372002448114497863615214780416 8600399703725855531310182389776384 -762574848822894822271137789765484544 3800907257764582234303241178316800 4087547995161566093164758421209088 -826887214370421562851369372681764864 6468449606908264462222708501905408 3055579485998103692311831225827328 -637521789879991887930746819768745984 7033210360152449210218730198401024 7182783820448751237748986493272064 -762463677494593936126837184589201408 8740936366277623207708554008985600 5761781297829902919731806390452224 -617625557299819219855440080294379520 5934019206029496972809324552257536 2013646972873135213239923139149824 -71740453640285680648807253729607680 7640635146075448931997885457760256 5551757247773640772297663904219136 -73706942316601273778077735309017088 1166981628361972974607751184384000 6936963553230681211325233758208000 -695347187188632432886611737313280000 7349207103460296669495103213010944 6095114043129062608334036060340224 -646476553807064801420460904004190208 9631336006848611223091484873981952 6280834100407876645525448065810432 -642479717256796612017828216298274816 4079969501857980474727154522783744 1541823570212776015084847124971520 -775518342915257991071917881474154496 175437575184959425266846198136832 3552619826833716393559707369865216 -990666456318267699278350529788379136 6746453201973154049924054374154240 7240778865349043504042700200476672 -230916505918042352428788735685951488 167632592416037472181756247408640 9477907049635878798342128578592768 -294695306824634402093277887212814336 6497265032388408430391754716348416 8200818791955451011597849791037440 -924485549954693953814711210151510016 5996255566168264958229061797150720 3913308529600133799805696832700416 -92946837631724499259559666580979712 6659306959385688671910869170388992 778813555152914440212126921392128 -374439732576661993225988236264865792 4777567906490959185817731116040192 3787172303609303624644891271757824 -941955133416363868057509821943906304 2022479306292056931617075865059328 6081782646465177721919907272065024 -770366410351905928448688612232396800 7937006173992464165421474767699968 4683406519065929102136203234246656 -239284589905991620362651408474832896 7896724349993064821072638882349056 6196708703711784943828127025463296 -453472194761716340431842913982349312 9825454877119430213628426788536320 2564490196085847793645333904359424 -683393335309029269807000843039277056 5102920175930215258044870776848384 7355040777237176656703588313071616 -467971655720546339357329370648674304 6891926800028038478907964995403776 9009082150008579691199362886533120 -337826803689569945707642869312913408 7307554218808067491142062839955456 6952652662047037528405212443705344 -127105833928200204748938529598341120 3458985147412284121273106346016768 896798692158856572365168107847680 -439403742784225832152998181446090752 6150663964718349017510898619645952 4630184831782596709182295687299072 -343289435618685051720420650785964032 5963837135629791126219427768434688 9601468175376646568711347905757184 -311053184239416539224223335342669824 5077558645493207321005230097694720 2976639086605495335618215038418944 -697690824557494440355189226177822720 9816122441398522009178335050989568 867865966310522844056872546205696 -487947893723194804698096080909238272 9309922336542856672439333443076096 9848103579860614128536354549661696 -68294321827854154063661882717241344 3525219903574322235321385561882624 698973662113260050303224373051392 -937258939217677041507251380908195840 6033150058529137170508989276880896 4959983797312750171099580434743296 -764308514555048749002021051209613312 3059021180402139545051611529216000 9532999867589712589962173673897984 -99426867574274694344753445961990144 149751007307542019004879731687424 3167338442616783253508637709041664 -524573612389863451796713809593237504 1779408105026338586417177326256128 7949894258013122747963135326420992 -946948656911861848116541963328552960 9153969843426531894317133223428096 348767583011992214270914972352512 -103121508486919587528794735881748480 3075560683801462077273348834852864 784361046980676309075087937503232 -314581426549938144334961907611992064 2596691745138611836303029821243392 7417776792978065281473689971326976 -662410938676083663239260209600790528 8695756779984985841060387745693696 1234684000748873481816231548813312 -44945579482781309049134866841468928 5795236963275034610616962302083072 4330467846807931324682904694423552 -399313825186213708591995296596099072 4234981788363050050050007760896000 5723875462444320608939734684663808 -609985592443189175042686283478466560 4511165476258245458242154566516736 1294697952340092189640545601060864 -641083581354010973779205895441350656 6974396547527725116611386874527744 926062078465157965242489974554624 -625884801691804463200018046874812416 1277081795071331436516132901617664 7951293936845265596428862504304640 -444274119322899110696465490459492352 5134004026616889152353942699507712 5681440699179413836295092549189632 -580375339878878603740910042281410560 3635250665414284752247131180367872 7321359190298826389132805916327936 -964341250328375589224776661030928384 140816639698357360576674440151040 6548908399326675287474197038628864 -35949119216991637996357039196995584 3246842835225815967072732338716672 7946171944765509598546276258938880 -769258615108936722796178549604614144 8872925237855881139485797773213696 6007343502375307539036111728803840 -124159872939344204857529502053433344 2595639124229987311908022577528832 8878434930305893146919317085880320 -717334928300822470259294454230810624 5834245857128713414230641899208704 1119497501482729198885860567678976 -584663689352684073405560296652668928 5474504793761666757326561467170816 4766062730706909994535711672369152 -729680101587750993061226123687362560 2639015213184122165350158858977280 182809501093094322947558545031168 -12500010483751626799912867306930176 1423563127215266651068351148720128 9331539969187570691236048310108160 -567567439320421700475692600405262336 9659466407088017694187692792741888 7501313873406036308493715959185408 -367748607800930194329642649142689792 4373599318735334550853510223626240 7176010469643590926604538132561920 -368509773102166033277249352238104576 9863022728321528839995363176742912 9883576248581566351504139026956288 -82405029878056795305596194928984064 865248542824441131713805884063744 8067113011314966368991344420978688 -654635487941425345111562453809889280 8726447608292152769308811333730304 352513206243519647572323362406400 -627094577359813001877827969492189184 8795708059631442969304294450266112 4033060859671209868234536452620288 -11733080189900885517906999498506240 4456055143209104680515493928370176 6113124915932245750632436052525056 -293037214151952624201195109935480832 6952879091600352255990793569828864 2827183158460449976682260778188800 -667546211141245485889000808361492480 1990742591462771905770852011999232 9145650247438911239321009900224512 -991832590667966674611682319076950016 6035266596824312169727627590893568 4460785758517885869059361923399680 -798186844268234456129973477483479040 2921495206260463360729208313610240 5810051254551359959925214855299072 -518149439241034678327505143877074944 7026565437374775268676578240888832 1361271174722207906428944195256320 -445627915422354412277407588521345024 1806320597897999117808009889185792 1293130745840471901990513987813376 -940495346407159253648819372106448896 7022901583969747056902893010419712 2836515572658481182551180346130432 -311413970030947490795204724687634432 5601148141875261564765575099449344 6180280633670374485232670325342208 -28032207659689754694757190146719744 2648324870108292319368469758869504 7050837769405170265132591713615872 -491216528326334064418215603602456576 5733165799003253226912037245812736 6776527967709739678054628032774144 -450115477331202745404867127984259072 3177251734189995881222868622639104 4543775352257585607700817651957760 -474264022998532043103119813948473344 9052734030043288124425401150734336 9246419927940631238921693765304320 -38890333780687722611799273529933824 3309664605755268938742071381983232 3891575556861939271109029119655936 -450789902720156867038240477255041024 4622281268754287114442525768679424 2801857987552215629193741198163968 -277146653852393196168891647383306240 5692534353496778533143876871389184 8403114383682337759834722994749440 -753658692396499942736916342907076608 8359295270727647860572812423987200 2493484942086116762074125097238528 -27542350432569597123072702099226624 1323886987794155952217707547459584 6950665379162231459830209135509504 -402673072940515191692470999735861248 5223482040324295309071063416045568 9725265619583998278313475959685120 -738210329096341943127582148810244096 4013302091041051972535789432078336 7349929025521811875201706950131712 -176706932278397576258483360364494848 933750324181394131955342249033728 6437084170252408969775860437483520 -383486070406869884445657098094641152 9511653379446840943551057372381184 5669913894356714048207377150246912 -937684029240267124373438616781717504 2556667733558345845182127304343552 4827484446377813584735705533251584 -41987931012421881883732418475589632 7377997855885834110715974282903552 1052959633114645295408962693234688 -546778300893543377348190276941774848 5947097685502309115659259970846720 9970011959229995193817510258409472 -35244942757761316322808491359076352 8124784216079320156296203739332608 4582718984417116154103553215954944 -650889359567501484291166646260727808 1092098950607249375723713491632128 3355979044744961937172936356003840 -653486939941794539305070439589478400 7298441733164110399147757581369344 5814879972739546854563775705513984 -811111333339905180700725394211340288 848057513777905815261076816658432 8350227079355856960968741724618752 -323689031153825266580669889232502784 3913139648019206306290550551085056 6110762888733486158660546869592064 -801794631787768408107990282802298880 850707947267876479181290209280000 9871268830071703835067235642114048 -970529205158321862836026399963217920 7051514417859264105644906378166272 1151645307945096951520197672435712 -565770908262694197412139248558014464 4180589450721178236036670075961344 6027084610062613578380215077306368 -608133697780618053639318549848653824 3279863577179998667572827238957056 1125463953670115823820356943085568 -111556075242261930120365783147085824 5403821482587596180926111126913024 8166198468934933506430217217900544 -587439825379157642995254173959716864 1857699605319723851801487644557312 9439824116992338985048382239670272 -772948090638395395815038559509807104 5842739498649317930581746113314816 5113717331155789906002057095020544 -590685505357320284030096912863461376 2274761708547221697679789209419776 47152192339523620403348567490560 -833001162937120109237950809032884224 6488879824703732767807842646228992 4095945980770683873782931300286464 -46308731026467318083726930555699200 6032127009111578168449024428867584 9070189022505296422047708723806208 -248141879681361141150485821752606720 4105842093437639860494195285295104 7327334509018474929245676025937920 -938734312397205868147088698051133440 2768645150730151832906749412638720 8931951821075387300115975749238784 -451571339431514837839040074917871616 9018265940884620731641666008514560 6890910730593902588074804423688192 -356179840632931095132176187404582912 8783782712369449390649829736054784 8362986327038306566571977317810176 -414630554216776082471072245573746688 1363377776557731436415162565787648 6935132871457010178796047785000960 -455707614689298604778469026091237376 8566568534048937731228337577132032 8708351243163585323042283603361792 -487305141068721852086926324585725952 5367950073376811993552182407331840 3532341027726861322513718458712064 -101776637528702120328758940451995648 1927899377579564495527419953807360 7200480516351026810456623246475264 -685719135135968644238919217153310720 9404972020886379373665033406906368 2734706655533838404843768928796672 -319433244321085185496867968263389184 5894829972851370021476610026242048 4585403117155345871147622102728704 -741875249763989401747109434324156416 77022860619666850758336905740288 2570668379620741795406932592295936 -102083113858006803167195689348235264 8660721137824817958291250440306688 9307608031367645176390247476363264 -625242853528357755660823334345506816 1623466524652506867804483824386048 1696312338577742238335005485957120 -58609163007408254377152931243753472 1107638149653222798162361329909760 3023118368406858349854969720471552 -399671934053037023309815190703308800 4758863645318263897889620417839104 3612424810159734431106561187250176 -829319775547654789019873008043425792 8678912135035649445350034995412992 5901508363094235963572376714608640 -403372185992162331828944395502092288 3772679153799254510940951114940416 3608360027259515425754240237174784 -704947373794867147970150682209550336 4158344426743640315900218591674368 8026499285059161694380120780832768 -318914071541760796434841595293990912 3402437913282606905408624435134464 6931596528104445773840993700806656 -502438001692865712469970609921589248 9388710195116469081063579466072064 97171001252119675936142792851456 -328720877838056163070296365025198080 3189880401624540299350932621099008 942927680075039511750034948358144 -211201895892705058216126927578595328 1531665752204968879537650596315136 5326828371435864875274561675853824 -86933224322978107932281087981518848 2601855444935883018907284423049216 4688984839601243271978864408002560 -958803634984254526906335264598130688 8354581522711358649120008072855552 4925448114659440080755707116257280 -258269242401227303247330616855756800 3168443627125811960767554925887488 3081222445795315046097404563554304 -824476825407199318475831474128945152 9113949755448099427353672206516224 6622029287460412566680189636968448 -124117651366726675329758530424012800 7583742508788028313978149976145920 3432199888316053254339608396693504 -762579314610925425700061564901523456 1428569000969234110927274273406976 4500212650262200640860984308662272 -835067775089771515876632635222523904 7481268964268316828132482477981696 3573589806834256465092316500066304 -35296469934213862967734788547411968 5955820997194505479839029949104128 8401343997701296790516041372401664 -665148716853470082047827262555815936 5595738145710196998861073445552128 5942167904906075150854175162630144 -807784594711457816139363002429210624 1096667472372815893769720411717632 8234027665182340004400895021285376 -501017415663879986379727737658015744 8652444951866867649904721117839360 2145073179124916609892559727099904 -122229219763414449090027190935879680 6573632968840379980432671282036736 9449353214329162601917952137625600 -178612094680611796510221341437198336 9509365558700987924835951789998080 3939877111366015892824944799645696 -834722443742750215037715488998162432 5126278509501679963134973423124480 8530274552490459206961394903678976 -748040963364152710318954518885171200 8771209390088078701528769915518976 6545332693870937896508580289314816 -193645255231394030043183959685201920 4373333006653107229597739046141952 714971387777394247874291427180544 -167666115614164843636299921593729024 7104361692361078527304412237398016 7151999253459051962153455277047808 -994772893245017913042071742431887360 6642062880045542623005902779711488 6277102355708297477552917473918976 -101132706820624486274697342461411328 6133753451713603006953326043463680 3276876344601363014980110542438400 -96206100230587632284769373430743040 2164373216981551129754130567921664 3465159327514647708111541391851520 -385904662980790094763501987857170432 3555092272718406976489234320326656 5054228795014953294644474221166592 -796993812589293623100575276173623296 9798955314883308955392184592367616 1670267537415144405010690498101248 -948685991306234668509838817047347200 1482056733214999277435055075491840 4943622941531174032573002833461248 -87092402611632152645872330515415040 2028434322258799468583291535228928 777893896891480627952338994200576 -319025867014622183399692498370560000 3699525688547643053869149091528704 342133640597856559027100321841152 -555084482458027120165090095534178304 287640969629662342998050979446784 4717767040160696900345044691582976 -951216757825737510488413788436430848 6540178892144175808441428050182144 1150548808784058082290345053257728 -231593560541443980311040629520990208 6128447985701312152838935880400896 641445988840512538990408953233408 -654341743271278912624819704157962240 2570862752481921088095203224453120 6199991824520323621326803295010816 -381847501393698430036619036737929216 5061573238688010693787383012261888 1170145218355405664420520550989824 -179337602677792273151492091470151680 1284177222184056354508268554420224 1321323563256825857733371155709952 -327207284520465480607592653564936192 6323024762415177758478527014895616 4609072669547287424427171025780736 -56617330928428710796366645318123520 7109689154281190087102855418740736 3632541485043258382529306319388672 -100197232973603025687388104630992896 9867535488914169060903036355870720 3111494719001167540120146298273792 -593941052213576515147634810776715264 1856688973062263735720985868894208 347461237604072039824788258029568 -18271912067975434911048711702315008 4341467919051744161419434085318656 1441403678588550351428926530650112 -322362267334629403281016080803299328 2534135184479679260466212505649152 7504232235354866985005037387776000 -940533605955458761039639713371127808 8961382048857209613157861026693120 5051014695340372915408110438318080 -390655017120516428019784383696207872 1098889320657271969878932193280000 5005618207643344783154259850952704 -907256460913964010620300785180737536 6134907076722454132869554969247744 3677844343120352685316185784320000 -620713651251075532865329037806927872 9462990569164508295875210405478400 6126081732444195985069733585092608 -269368799769878097355866994213126144 481089703207064336210018936291328 3655128424515135833938567601586176 -193794275269730874576485172604043264 1208492944849718925907794012930048 5961073647748662057257937091428352 -334288480729461829899591219108904960 5549730492274850827779190374268928 3027927139949870274473894806028288 -316663557397404806891482998915465216 4595205446645801411914406159187968 2579430279684432530817807571484672 -130376126583655997744042587893792768 7888998036175082458293497990479872 4115924829907284459893742416953344 -192394431599425139668633227431510016 541204978221299082115888225189888 929797854224969261815094566715392 -80044619540047815265645113009766400 1133440304825238194896908910067712 2402794768353192444033043903021056 -21534324529979838444134136518017024 7585547235715316324497491589332992 3914683301990406614080017917804544 -125645401609182701772059033483608064 4030285872605005340768376415322112 6174201843963904296899465380364288 -283756257469564780415479466661249024 7961182969779423775427991527489536 1936592244299641737876983034937344 -700959503481014252201945445043273728 1200264642180912570140837334220800 3513915678428977411598862577041408 -671090627886553657024247914641227776 3883435187225620474426976735592448 1651156415324335309134746798260224 -948510197079511637075575045078646784 9388308881885844820105074334236672 8200593463009641998961321426550784 -942437121040450414225551684599283712 9783919130121583431356223739396096 1752636228611609119988890835353600 -507747081539848732712241564009627648 8113890150778184711797267608109056 390533591124637252391646194040832 -464493275329205497349830198876438528 8151014956456850140841752930549760 8711846592618291767166004182908928 -513352878798856880663641092138205184 9574695190645383876497004942065664 7166348801104035125858424751915008 -214304411455782711723676504877432832 3090339378519252223137094958055424 5566660720141704611670969875955712 -238343192350337408564442520222695424 293186344573733537638140304424960 6937026633628492962053919294357504 -506414495827363825674171548983885824 6096077450661633721252983934550016 6306494045717420106554253225492480 -548029797435400658261093019555987456 3131020147163844259099387063435264 6422594425222655271274307234299904 -955975113309895051277640167256489984 7268158685354281628565781243494400 4338127735359822147812572874670080 -221022819543368633921963249740283904 407053929319490724037426996576256 480195652841521386916514925379584 -768110416906883919048628061773758464 6609086203632872212507205186879488 518702329113723015729481863135232 -964827440128604353843244642745712640 9710659436905668766955747219079168 2086178623711315095997235385597952 -630801562103804238292722619273707520 5273601527909503048857070927347712 4462589352553352090297140217118720 -882668101504905454997029815259758592 2025959787118121870662842275856384 6340945350466706283769990756696064 -721218886705145239844375846440665088 204194490223723372285395891912704 9659401057854147341217032120041472 -880470023923898705650535380111327232 1298144414595110224269191797538816 7830981902580553549808810437115904 -209820204291673527907342104752291840 8224689130668089510825791068307456 163530424553618882193215899828224 -838092662358158397339941008985554944 7986734442863895143303158507241472 578777531257536018172244681293824 -809782611206274166804768820226424832 1728172228494521068748946532204544 573142448691164316554745576685568 -644071738610220673018397833570549760 1819233588360526581619571933839360 719589645648414067299842309226496 -478736964399171966481666422154985472 9412229649000720016555859924484096 3347102309595476430769233101586432 -903060172386700846906919910281052160 4947632509707708581031588009082880 5671214664449439863510722005696512 -440845700531530698389728141869318144 6662180061540950353275831501979648 1039389601601732151170343878262784 -753556213422827340645975854858371072 9819661047482317274860676490199040 8358366822712237747216414379343872 -850684610632516063245822314873356288 9873156267771603721107849271574528 3929410453884603130645441597669376 -611611958705918772275152121608798208 5284037780412139986145505349468160 7278361792387559962834503536214016 -881531852101432515010634395645116416 5243005328632189749408074093821952 5138688720515437425452483543564288 -529620589636161894158243576045109248 3721742425878307546871828196622336 8737467154301782937760065294172160 -4243706323426473811150953305341952 584089065383053576977392810852352 4668731887882370168541890067038208 -236009537025338151883127038071013376 3204850770533848359209535839141888 9309582841836943167024443961638912 -91737164099578837650940583036846080 7208436727467051695366437404147712 9140835548973599372608864805453824 -759090515117386749800301407280037888 2169246731397175220241578202234880 332930194771725533260011190353920 -981726556421106933435182972586164224 4417772937819709883638196379582464 619382080971516405031298559639552 -753378327310655379876474494805606400 2471580390701533130491213494878208 6118904744316944483454589660561408 -48227871387084783112599385885638656 9082323500746298467383609923731456 1764622321418511614642649934331904 -984723409096888710727030020981653504 4990591821202755386552327585398784 6709067463081115741040025939214336 -172815996472437271086019723351031808 7210958101992985924437383678263296 4963893417502595734388624389570560 -918012836941460671773271524628234240 769130670542044145960917892333568 8017532566010343123904780048531456 -732105443526582605856328529752358912 1500135805874083880856483671310336 5114765177952618118530282316365824 -749765394032924088932437926030082048 5147621129298125259737358913241088 766595116631837072206845454581760 -687195690974309028594306905601474560 9831041714184101133539685817122816 5593028171688811902801173163278336 -600353463505374246286244578546679808 8595177527219734899639736994889728 1836728794883884754396810655563776 -355689601402950372791287942150619136 7534104174665348085030319290318848 2745230841068961748295603038715904 -560360615366272515267134055975485440 7374368529111953421830194259296256 6055194848740044123576632258592768 -303401839993811358456663246209286144 5565591457618828141816392349384704 2675917626474531151656756002684928 -868857382650980603461509041797201920 8474196346358300644682059156029440 2319036792245541848756201621291008 -557898564580516126442298036363198464 2044624162709492423545675942199296 304138378523621271496996056727552 -495812700109480555126244214650699776 9693452667353638403482591562825728 5076675572438790156347006223646720 -603455168447538288084158010288504832 7450203816824180612942557016489984 7804761715785374603192166915244032 -860883661218135435827207889225777152 2613420062950185614933123804430336 3296096385617109762501890868772864 -764577698843369202426140625167450112 2523977965124105971718288058613760 4761870945814326215568475734147072 -175641766991237814388781891180298240 467968025412982039006913985773568 5568913163746447896249582032519168 -250296170113270073392662129451991040 2259811943243141770363891506741248 2227622370755437643786643390332928 -479772822269473564079800598745055232 9756103873908686525468467223592960 45660222382846748943089703845888 -389199914276041752758692314819330048 639199726912221656541528703631360 3242134502863326396482543069167616 -148651110594025195041269965997998080 8687390516483152631327816524234752 9402410740860442027368449254096896 -412908171113072933492237140664254464 5280400099822707317176154128908288 2492677714988316638717826312437760 -819637057030231751403467047172046848 6733696372026719481725156723785728 9011573773463378540066470847578112 -525016766771357871624194683599585280 5741439657817323887950536852373504 6250122100523363466484489205579776 -628388215273809002484211914110926848 3431153650186829789964152095113216 2467150139778555334581458879643648 -8159568419223616997955757158694912 3569146283740590176222891045027840 5469108544094857524205275230240768 -752593253837425441219124863998885888 4451318688517749104402636384239616 4762538225780888146250080970604544 -146098890775720287640981828678975488 2347510371300602947745317184864256 7514145728031028775012245602041856 -527351916362253281230097584522002432 9138908274842957066660758568304640 306304589959817517011646317330432 -559415353621891919032905518479835136 4242147358740121600327015790018560 1315555214138527083539287578247168 -681017501656725424184984913320083456 5332830951368964954718966028173312 825984631918248152874643657588736 -461379834445146089059169558601924608 4942795905926715433916964246913024 4488532022828724950877715709296640 -105708486812800870260723684684595200 504607757079697205336581242617856 2291695301201030193908202912874496 -173689032231934252860851614369447936 6088686070906357135849334423683072 4095210023568239771397408992264192 -156471371810702824519590632275050496 2431128593670937578264191811190784 5024156793964870971851720901001216 -74138603507772367076438601778593792 8718452412703561200714368445054976 5722099706751662198790838242246656 -989475208127311037257120799443124224 8098088598588543113894502265257984 2333554410954831862284610365816832 -370224146581415237432394438506708992 9085015796958566042744344971051008 8532818140893427815432388452810752 -896984888061094586710217239358865408 2559817486461385794542739965083648 1687996343816752232524210444959744 -825037646369784623955168317220585472 6072688511008443452518082904326144 9152445621779594690402362016661504 -560350674417587260626881344589266944 9064420215925692725379712159842304 7108504129540256977042761901408256 -364488047377486490458268312960761856 8964243866744195062516052060536832 8150984034104749155509152958644224 -460811117034000112148885902897184768 759897730003132491364609602617344 684722998632400168118359643127808 -55859959580402723949013989672878080 8526888828071325027453236670365696 3843234064573542881374212699717632 -997854317421969400369503776997900288 282970275535315903792335774810112 9133621931145366727674486423814144 -861384294710245853975095308187598848 3351103428863699095660080821960704 5112827523714866314546626242281472 -823742666005891605217167343477587968 5256677105692695206148999366049792 4075549029337460712301443799842816 -647628655303145413971775957634121728 7915600255828992867913657181274112 2515543649218115363972279988912128 -868317870376153409702327059667222528 3714694447564512326695988104265728 9068049313968922394180416448757760 -765509997361726058231737708842057728 1336155162420686189256968748662784 2055748794634365280075770924892160 -280856572698157413979897527611162624 8258726009677454698042163850117120 5896463289950902881761302948085760 -601206296405325700954245496718753792 1926892800957627233270320162930688 3802252366623442340594192893345792 -414823596806151338737304880537403392 5038213353152558481102983971995648 1974076927267822989787982116945920 -168504858759823683437802619966324736 270804158070139472633146646724608 3165565849159915715507617903149056 -218907218818075430518123576703320064 9600726985152887130550102627713024 5721625886327869773402369746272256 -625282833389403477307091444110983168 7829352530605730635801978881441792 4792689991888790468236443662680064 -848210180279991356172825757378150400 1022609120791451880248850138529792 6791747836664190256426649472991232 -81838349762080340417042832431251456 6722093156327697540151901914398720 8552580920665139601666036702642176 -427241614397572616020802538485841920 4234680332526977654822478712668160 2105965216870427856276181978447872 -976028854781438662608024437444837376 6902712262674611981679242239803392 4642938907803964741951702173745152 -427293064133553832008490678675832832 2397610914702970252292616909488128 9978869919015270758869587103580160 -424670279142689760711013793710211072 7702274286628888695770002671796224 6291991544286102441521115989803008 -838799118254258384612437219956752384 8460412079826344345041668210163712 7798694739930156102189869292322816 -828264861131324995526917801912565760 3880125063166184634178513231937536 3176408004768289151212131438297088 -254827581591905424839652468903116800 1149846825658692785724570659192832 9092618028475469961001937194188800 -106351881246947465153734203467104256 9668056398421093552589225381068800 7979278400066703571027084741443584 -303720172340923432157608653147340800 6019099383217990418041831145078784 6355667154172160628704114875826176 -202810036228707451943520355886301184 6154431912337722440721202220630016 7112101959885091397292176718168064 -142887348065257665754566640890019840 8305521373399028798912148342308864 8133127031458720425696508537470976 -349387187975472909357455618638610432 9787947429168362128412072237596672 7011904199634155658417310313480192 -436091958671651047411772349642440704 536650423975616954535909666062336 2185393531739778349465555741704192 -182959518751984295417960034685943808 8555026929666852523694794853056512 2014107605613547947131845847547904 -789025572751926147113150980720427008 4351133822806894115009626126680064 9978872998367951445955150010646528 -371201763790451341918496667436318720 9379646298872290842888948722696192 3612213172456775882747546764836864 -568647389817018565110449734661701632 6780454247984306655695345886953472 1140914108314655455321828578295808 -680577754780632778853320613028691968 5198403006122462869194355817578496 4061418863797311119263183350530048 -437363862184520163122114598447087616 717475528141665814515064690966528 9277848180926916940461544879161344 -405973943542269983866751203527360512 2072397189330921876768989512728576 2849107676408885519313288233484288 -116811499986985894742569131247140864 9759534990155081047401578100686848 5983901876245259317205472727007232 -190153918514048604412441199183396864 1043045406700145737603237642502144 1769493829461258010510360534056960 -111126065813260649245275574262300672 8759207667286494643860877149732864 6047246916265487391603574672719872 -816858384550083222250517330313347072 7594914112131846266633574003245056 4146118604585028707683842968780800 -497290173614740457946350152920858624 4044704541133324957985502882955264 2515598621397295277811505446256640 -672103311375175350798191056857858048 7362768012082593147180729138937856 7199995345642114785265095893057536 -763494644938563916233679512977539072 1832520973134107159519450477101056 9158471421104470925486434023374848 -404497584915376897970536773008228352 9366549226667754793156535916691456 4667345514953445700572996096229376 -673747589250419098050920972438994944 5445586956460653204506957072826368 1830454984513419687899030876061696 -808648782320575383083288218807828480 171712733690519375735222119170048 7523751114971920544457842841616384 -915615487264729350760864799757697024 3456647349620673315676638565892096 1215960503698251188687494474366976 -644268089024206701265711273108045824 7830806145422191281631850385113088 5782913460361594003072209272176640 -990549186759819309535225009991057408 8397834616158073014627736899026944 4469218315252116965319803096006656 -685017247773634278270306428112601088 7257467928515843621680804398104576 9544245654415348898161942687907840 -698721753506034897092382487507632128 5046720776508151157630919568785408 8171447909706919548189540746264576 -320121295880988782440447102838374400 6073384527374156221970369795325952 6053627448846502616816191283396608 -78751089891801920015532556405440512 2981041081561715721174015750963200 2623512864860759448316716687294464 -42580760402092389482295905325416448 227246394348570445684887343071232 2393147220890089307555130561789952 -689080039707259418159599401887072256 7084863807793711196307423905185792 8440297246997692107779436766560256 -599087287259822299708379190725181440 3346828603114276225896593607360512 3748516560367657692712256042696704 -957351745643354681072688505720668160 5840674739617415668044261991907328 1299579002345618232185408723091456 -287893215297263440136805371518910464 8484215505131474688822047588483072 6737969395558628554610356550369280 -264738247807199971960801970284920832 3518475628409779861112372877852672 9974982796688517769414376847048704 -860967672985309807356255186548948992 1966539334217544918446554998636544 7915342220784031047968565128855552 -480158137922487887262662723603791872 1470759136445972486392056482103296 4050366327702468796148074672029696 -655458710242133226300747626399662080 5625253993194479593687763277316096 2336064865029246673930550817849344 -496290545362783002864517374275485696 5330236217691685672073687906385920 2539782687258562493841419928600576 -727853369676441896774600602391937024 1512697836178151403594520786370560 8456434221391455522395030374318080 -203598830194427967980380284566634496 4566989305431680081663129313869824 1306019709447010672620522222649344 -280353008634413297615735309440385024 640389625514327792566367990841344 9121420975435281568480002624716800 -99610335732847526825219743503351808 717030955229537852434278277709824 8836130014998767174810417290543104 -619015825159318895151935296347570176 9547617902508435875115751165657088 3915266326929394943100801544880128 -51408601519439453784999307235033088 7754957990797588081133491431931904 9644260204801131322440687661613056 -183003175090075863688941154934456320 1507687765597731589126084278353920 6816912490568484131009666232614912 -233381918348556752222232580374659072 1733326063953812179662132683472896 1873997620195577758975041529184256 -519906000097742925094847181863518208 3922491901404012004239028397277184 6055650491003647505899223072636928 -13186578047657633163713011676872704 5546675911798490891438189709361152 9860555940635140711600704714702848 -424118697688434377833729968624893952 6779016525625709056962598455476224 850777843331105504792744751529984 -369957584787782948834420163015081984 3089798753594563915833160796995584 2825382261490443923663699333611520 -874690159955868718697547122387976192 3057043163203082583672166107054080 8578036854453764018177372292382720 -530557390592779548842096861313499136 4076433996649741741790043553398784 8777613872746798735223433629532160 -415117017593855740150862972566110208 5690792729938392796908668621684736 3921680125872655312417064799436800 -18553843500431708886726013974740992 9106509579085269966626444615352320 565925740748809026479704382636032 -537021532257687881602414082187591680 2150715633119170599513885283188736 3800081622171740837321792288718848 -233533097908110707490923243856986112 3237233724181838913518850363359232 3072722449123011327518847841337344 -875922530021117913631813922524758016 8479370564401195225968374192275456 1028878989089620150650172063350784 -944848627481787374515365024333037568 7991468057694661281088371874070528 9548856551619927306774856454897664 -180917041428049799368204726074081280 682504344868051326719911207632896 4811406983283560236956811010244608 -621762175760098169929096165414928384 6231198291479614237765042022907904 8669061085715923472807298806579200 -794153385056731033991074751704989696 4246412998634494559503676474392576 8754683997003770622515022716207104 -89806329357438982233499615744753664 6873678925618724137428240715218944 6389738013363429336835973760155648 -606938869568203602208948619573198848 1483323473975241274297762466234368 8504086675693361331660543643090944 -141075633235187112808982163992084480 8892594493861862687173997974519808 3255837957537147172590193091805184 -761758370672019400267759090957025280 7250625869794683680900739730767872 7200122599336221678981286746652672 -428504346952688266301501101328826368 1740573014161137659952087544365056 6324911157815392974676142462074880 -419465179595553840483014724401758208 2241151931848643423307138460549120 773504245369487529166769703878656 -460597446946777945778572747830460416 1914421588040605383002956123602944 5590782769427724339469754539442176 -473651022489402952800237631003688960 1418546610891012532546530057388032 7209030332011893727246661508399104 -825339728221642838016641028029677568 6430664383026622389414263254941696 2581610323554410146519166912299008 -991948585252026522921152495493316608 8933112175814131212749751833329664 5632230285593170692332327681392640 -177123506618009461218832529787715584 8149770515509163985125365069643776 5811434911944359978929559091281920 -393567429716006645107479302618742784 855560133497172390489469115957248 2308342738085209481069667612098560 -949364493275404035093145647470084096 9583461256855410373276822524657664 4712766026454048367020680450932736 -628585477369503446802184323429564416 7583373817169243447179065052626944 7073059653821625461630583865081856 -679816988812434363595766880178012160 8303201873591645206473785441517568 6571984987267564612895079258914816 -590583493031934394133814967934124032 4374520438368619183614593635188736 759358580264146077573208218796032 -492331472877124329277525329046405120 839906452420720782966915483041792 5391366298818743518035629133791232 -748791136173833991583375292366848000 3196672444910800366784693661597696 4813226277987167623158055716257792 -120713379519172830986928837995003904 6431610013000701285148715208671232 314126297226104050576817569923072 -450730435544894790158051047634894848 5921564215654567114296320755499008 6578716285008916052559922066358272 -67690441216338589524193259189960704 2559020074550985445352358268633088 2433446345067997852664564685996032 -201121220228550875662744143687319552 3793244699774933100746454582951936 845338802205537433465557063041024 -944386659161160737427273310864932864 4886399886330288996002058681188352 4789273587662058117067938864300032 -913730961715452352550031399139147776 6359230312038309573346623997607936 5498190126652448095717555854901248 -441247951560108775562258732336283648 3393230965979220359287101934534656 2038121113605236902071480122081280 -11043877566596231161933229979598848 8717244051955207538959488900923392 3054135477557068741591281164091392 -33099197454105545615844389188272128 2147118376851277715573345729118208 9125164139489241033573737345056768 -172083216941388266428126632257519616 4764481774656618629847675765260288 5980326011128126991786907086618624 -875037542703033464403252853124104192 6228490732141830308352135792689152 92169927633451787349687311269888 -427214593317603038957583834319683584 9195059497832580290053080554143744 590336160989308584100266124509184 -513195098015574888926296164525932544 1543272125483168629639874525265920 8927402722476845300091582909775872 -607724512900651313518780089678954496 841489930613013648126834852757504 8324569253982417972862558108909568 -267982862442455475957281677226541056 1720189252015493382828709457690624 7494289826699480463133085477634048 -504900590437492948141424909702135808 6610663374219846259527319405199360 2430253825281489502091002406502400 -471752820623844750821621530118586368 3526793362423853878532135486226432 2938975775938244342810160188620800 -441381850086532343427712421650759680 2554977086455637983391113036169216 8472340339070599047795504746332160 -689842772735110767762885605022760960 5397747638863966957334489624215552 7657308846367357999098487786962944 -205548011922477359517981549743046656 2090012886085965421929214169317376 1082646534318954024955915603542016 -963322898767922613299524897591001088 8781998579890150782704923483045888 4481494598097280192170028982861824 -203296948618960661909935087729770496 1136880329045447995157293475823616 4658923594684674674382269715578880 -219792996361952690962223995807596544 6678627372116899151308565185036288 9124076327280391195234512949739520 -155562781492885406079662066440863744 537300680040702962127084741197824 4183512408649944279834234839891968 -4859850565809681274726104719949824 7541999204298035841817722094616576 2282036865570723714337794307391488 -175015166691490635155015934958108672 7761416957494066801183272988573696 7165455753200824117272463353577472 -765205075263935205466783381805072384 9280835272314623092268150177136640 3449528841254684557424277021786112 -883431735174435469983465201056350208 6910422073016855146723818839474176 5024510986876594277983286485581824 -232759357978794733169532121103990784 1768297340871975928270938284490752 2647996444753854666540948905787392 -476947403843062952880571892277182464 3555528065033796214520176164470784 6008640462429429779019037262479360 -29008754005803602379382516902526976 4943072317182401588463567391162368 4004195926816265636383655072890880 -118876149990126806425599393637859328 2488020246966490536321717565915136 9598981172477075685851256250695680 -608863573569977496158486737807474688 6452981889622035298799152829300736 5754298021446963395298553726238720 -629773777498389920771076159629688832 1997481667338529696432432548413440 1907925431380050588765471788498944 -215430177506752138845059621811388416 6517357899989356266980127769886720 5375187084072072710313125737398272 -965182622708481972168646051386884096 7823044968784012203782660278976512 5467931308249766958589496312987648 -815847250848027984065403446248865792 5639304336973187911748675704979456 6233174047551638378357259109400576 -36002334500907951478619334753910784 4584211328951988645680938301259776 6178084453193828645366232210472960 -386802269857207427638485201937498112 9377139585767225250313557659090944 8598726051292718794961046250455040 -240509748402989853748726428382265344 1015755909835707342970983871938560 4117598752512629326471744217677824 -344022052438381361354459091996508160 9343432843737676699207437194887168 7896075169960194235552752811900928 -936689206304019650176901462326509568 380336716522592251791251555221504 8823794885523171095719051960254464 -726544136846903199211365284775460864 1464533008261703074912000500826112 6738620241118709679032533551939584 -38537868610823078034055774022402048 9634862399927673806378822101106688 4850529838741980500298530532884480 -425151176423541437733705077783265280 3533337910433651370362532471504896 5790254160012890041769481694347264 -554827596155992373308554234751352832 2836979828148402717131108113186816 3651269920367697011866384642080768 -61906350841970460628262172825223168 4109866011421278957997184690159616 4816016049194704277778292566654976 -277894823417386947499253404478210048 4785462079508857566302610223267840 2609826025777690258581111353376768 -623568517260440832212797957001445376 1714216756290170346081218872737792 4869611677984396773044006535823360 -184418487775060910385502067709968384 1120289098585846029845768775401472 2190055466760263783778538926112768 -318658697605930999165421719325245440 2245269304528756961953825222033408 6580888242183137388801112739414016 -448606032514283306648664336802775040 6850342703122506973877767677935616 628685273681387469847733725036544 -997025108687003413340973545893658624 5786207747218571088268497875107840 3464593042491075954825896895971328 -207205238918770896684168517276139520 3716161483451617612417517102301184 977327069026735073965533646815232 -737699526779079509890114139925250048 9115130630908963593310849290207232 4614359423159801292993392269066240 -669176646314039602459214383738257408 8373943776641992067796003165569024 3256353422714024132739881668444160 -469047670573156531340969739148066816 4600659847593845365985059142631424 6261020342732274901025210935279616 -37594104052605901614004776353136640 9388663678106413307272562607128576 9472135502945060936292570826276864 -413817780768477147605068915037700096 9167166226576380995954873739509760 2357712535783569002813362767134720 -628753477588464708160716341445132288 1836096162820721465208861177675776 1572986679345387570892225587970048 -381706737566462803969519399441793024 3553052952763761191920874689658880 7149456734983472763621319861338112 -100266549391845735656422965797453824 7748758208904157481733382203244544 4740567255235041581223512893292544 -607486310496874362150732971905122304 4228058612274817663339986667175936 9497057870018914972327173530058752 -654155377821422795985579968559054848 8514759364882423491255559576879104 1214482737701136860312974718402560 -390530422817924024696652762156367872 810149715065202256969809705041920 3184284992775104302100860442247168 -630740628262721676478805398352035840 9186424321880020416573508100816896 7000788105761517126997737658646528 -295275710337280133558476424622374912 4287922655699854831112354636234752 9504268302640270256783493571805184 -448580105452364183047722611597377536 5579498988226213866758492785737728 6564159061651949374657568794738688 -526205589374137624545684080111386624 7324908359122214305016084697186304 1725969381252514533277290293362688 -55276484254959112734441376537640960 5296080108719537203028211600982016 7871573649794802606619750318473216 -687039945031125080929234786019442688 5262472037541513052727366052216832 8710852425447427321203244511789056 -721527083042260241779444660217839616 9889043900177423817565923742580736 8061905783268182980243070730108928 -312613485473035527798515439385968640 1145221547966895108324126869159936 2388950517642367286329538070446080 -231041330247236628599916137726083072 1568423507216774011263220445085696 1617393276528699926097799726235648 -955623574696844526559968655308750848 3826096286923569765509707469946880 1607709931404112135652026502610944 -361916559841409048068455887859089408 2303270587965108357875515340619776 2551078966899081691811390251073536 -723527105236835830912667900947988480 2429973386017983216204224166625280 7394709105301966173501275018100736 -607527243904937933756348699783462912 6958601546936120548992400733765632 4921139950426101534038350219968512 -311222035724856121847684762775322624 5156426132434338200229345945976832 6187478991425509258558239842238464 -875456015551721937217389603044982784 1501645040672540026001884834693120 6978404471699924971827348681785344 -10162918063398923875025577003974656 5008061650009088538459326465966080 2045848348450653104318244796235776 -263351756875669268012875623956480000 9457896280341458926270834697830400 5877574309994820192344366460698624 -611203688732864168287686685609689088 8878579031373818823692981467348992 1539060699454346803050218325540864 -512245199956984151957454226060214272 8039706729851461443611235427811328 529114270774311624250695293599744 -619496252871616625372180045237321728 8162399163025030597533820524691456 5633697834196986345494223444246528 -836547894084588024752947569308467200 2386532540377384979767139967696896 4445515339888948051319497921921024 -324616368095525927371252974716190720 2904833490242637685320791372070912 3781569776637928886139247308832768 -488746743498433582666542833125556224 930764754077557597465769882419200 5854537903830968702971170955198464 -227509878878087531652897271745347584 9257286417362139491723609995476992 4903654175354709379816783022653440 -392076409020531979667360470322380800 69645202787358295650291628900352 6778000939676381906455390284939264 -351821528051066446444943855021195264 688050665414848166914862868332544 4052376505999649817220197245779968 -282830717671209675917452107059298304 274245094160545787515968579174400 1920381557699216107317382795493376 -853504840360352511411705321957097472 5664220459406157094253247277826048 4717216798099144975101955307208704 -920049806899457769433994929077485568 7198292870874301424943363568697344 217616084099543626221708789153792 -860559936831114423315617980954443776 5614888464137960151774833110155264 7479555618199564059680519542013952 -475652244977903333344022076145532928 7634410192224556114100173508968448 9715237282664802410884417011580928 -36039512146254879531386701728448512 6953739583908563779449108499005440 190515030121574278278066628198400 -167274984967880412159480570715308032 4481566405284637161689312133120000 6467304040967465163901164444450816 -957415052472210862568963328643694592 355047246578882813406515631751168 9918108352979337757370012649127936 -567444029361580847021119288226349056 8322812926113396423778242884796416 2912339427202475706494408999305216 -560851078492967928285797717062451200 1320808032063104088635514260815872 7780084886765686898587847201128448 -476721034301965283336267705878577152 4893888842434407973551352003428352 9428685126103122273044860569124864 -860598847209241786852102630604275712 7767025056728219361943375516270592 6209400344085740634744799073665024 -878471063237154706282141562295025664 449540356680245343062685757997056 4894189068681694871465569420312576 -579104783565790218527511458957230080 4104148069182339305984020952645632 7323226366687377958631307336482816 -66764854642531445726699681384235008 3334294055045286057581171972243456 3767103733036549440932800020611072 -457643842851351053278888960123207680 9392483650585979033897379215441920 7355743983846501582565431543070720 -252650268449638979707307778306473984 3629147039939404419902229039808512 3655539924458942753329878250029056 -56731898561841750026087196967043072 5743572380265450521840850890129408 8004439919362909584175827905413120 -929857252215419266892436719649423360 4314944445127061334087590821756928 6081759870720850083480956504637440 -419395923752800948468643674045022208 5359053793788048112332541079322624 5389603213592126747980916013924352 -911281717429577447441244809961930752 2067183879357061575009849017630720 1541950859243612277430140123742208 -361371797377709283954357672907636736 2188998853180549649593963338792960 6046202607730858313609101002670080 -757935016096449720998772865444610048 5049558624398755145708959562727424 9706083642013382357396067520086016 -259529132560274870384486334735581184 3715480762495734389046150434914304 3777107863519685892620380786393088 -427125314031379201259282943717670912 5818188773565649666067532370411520 3016652638247958396702359396810752 -523022732391044116389627261628710912 4744599956867832264727374227046400 4362299959742134954028353145798656 -775678225709210977355563073431142400 1084128940789973692711495981334528 3604526206928118171156304686481408 -854592581029635783316101338213908480 103210754283030453454104512430080 3907908933460850196588078221492224 -923722669555790917690084075914657792 708583322658890076670474764419072 775378733273901941335013787172864 -76834108892141944030207706595852288 5914970203315722779485680640720896 468203450479837527386405222744064 -713133624216495946480253499386888192 2242653697074043145919232833748992 1455643836033440300348473327222784 -586666696099300341338263681249574912 7479921545131840432995013396267008 1091330264334562518934931971768320 -866891201601997895481232582315606016 4412629485519936376910380921782272 2611202499031904133308330121625600 -667548460827903840754528822912614400 3158177195702003231280608818757632 9466030066095424618336597321973760 -878571048392593203931360148261437440 5932974346389013135066533474598912 6209233458116251471867675286700032 -695864589814814811287917277858496512 4828760313081085542447997400383488 2111400943807836623033231319498752 -746349527789575093139356558026604544 9517171837075541409161620335099904 3689640929218221690639792461578240 -36925530146892286788010534275907584 4082004666427727844295653028003840 4814147518892703374524889679527936 -898252365661366350420595540330807296 6920100769958512536909725019668480 8220398478477645808839962734362624 -651790817442479231711347397927895040 5612248754653173527181496135188480 3958396922323332140170779440447488 -640603155631589204657761083065368576 4936504692575953752337416259108864 2140137167701648720453493004959744 -934446645653574885286061131842977792 588743082526416396251426373763072 9884683594468253183064953893945344 -899145705036268137439346998990864384 5465463825214186463510588188262400 5201793074819792601730490734477312 -363462955037081039653225951850921984 7779923852388422418162317795524608 7679454527115268522379357913612288 -909267662991255580991541420165693440 1152461007078286302808474315128832 396852828659089940273253662588928 -162506307767504534223250735534964736 6833775525542396654908707746873344 3401952624353855902986433510506496 -483085744415543311677171812385423360 2784415390727430660121605286395904 1072678374972548811161133207519232 -124125419764288738513430593421705216 3078984534630160615650088747794432 3417729784422537603460475455012864 -162632354470683951730186306866642944 5047638841364044819723451526807552 8866905809100753363695662662680576 -569330940623601576689709490213224448 678005943239753376018595881943040 8208874846652175968651462360170496 -586755998845588441488563034071760896 7941064221057964371923817688203264 2576581072351467907125429351219200 -24815151148466546409809587650691072 7432307261733466504734701804060672 3869682188392056541034113744764928 -989339488997477576860136627188531200 547314550537154712315421628825600 4333171708222121185109110482272256 -684176219366154721054438345356083200 1639493978416687219060634046955520 49697652029266110581225453256704 -728851480347115348297401911444766720 9464516933718640496268050983550976 7264946808417591983651704367218688 -902227835403458226448447594263740416 5849995232505794708642196751384576 367315240021141405642031923986432 -504379343712768869278451927632314368 163675890296431022918081112440832 8153566088158745185788216085577728 -112382974485211313135502067704528896 9049402706778804175592303940861952 1856177354708934973877351327203328 -110391121706175055455059208596094976 5859449038044269626485126706757632 6073041112118824792537639614939136 -956606200257989012934503690309468160 5478998287796264244484165945262080 4960307844656463248053090692104192 -347864470315321243636336852360757248 3099325388701406702544029665460224 1041173717214766535922609326915584 -615692235479204453845057867341627392 3589107269383177948094062441529344 9826496812412012929276687119548416 -363334508355924419938609737641230336 4846948114323596558052119103406080 5040696730250208710130359739613184 -431930869385115498301023950737506304 7416774390211491291422536495005696 1801083729290893832862190807285760 -549378249185207520570555041149091840 8742234839906589139438577597284352 2307129104322199492442936194367488 -913365715350970035989482456532123648 2677135765625343135126055590821888 2333398437727836623608121751764992 -511868505492690537567499482354941952 4223328035355177408339555494395904 8153357546674732412398533829722112 -323867075067206800454414265428738048 7174322108243205313787387501871104 3174172185911535030052329518792704 -832188371548772193092073531446919168 2992930898282019193562518505127936 644974193294327432951521609777152 -679485735714480031926927106924085248 4544415067105959998897493679013888 7404595046673791641149979391688704 -884562204405251908687232734559469568 8807821868250370631997441058013184 4361374812101031342848599245455360 -637295191532036479576031878635847680 2521031351865132677854177154564096 8630680739057981459831119276933120 -86602243582130313926250149724553216 8339129275758419861252527148236800 8624866648109520204521256769290240 -344815223711630823014742548270809088 4146476621349209112105262457552896 6480905601193739209956778265542656 -261952043246237991770633922655813632 7096415109143358641928100904960000 5066667902089254224342605673529344 -665223427461757083033847485243064320 5283496071746209322394030775992320 8054036966444433198508011597856768 -653263561852756262643776493119864832 7831957997445429084862701679673344 5024908632863741351426038106685440 -770102174915271927199065311289540608 1461952051762798600594270093049856 655569449226058701440163508125696 -450606024958647930924919311004860416 5207087775385345332793164146147328 6425404170703070483088535193649152 -279564329529525788870209492909817856 7126168948330466108030755622879232 7793329076426397509297534413045760 -44980779028444735800234714763100160 5178013373914127611261417401876480 6539289047918311052764876304809984 -165340733830443830362731891488980992 4011647373633520111991228593078272 450518044950662469435713728282624 -769035277505203930603333606707298304 3844317184105492491473940840972288 4242986934225143440312167506640896 -132550475569002583017748004186619904 3821837338369945777203395604512768 4366596770637938877263802687029248 -34287066975063140672712416490946560 7205930144791477104286571654283264 2273306983810028921432673758478336 -731505845756883752472930006958342144 9902712436775641280715566165786624 180382731021721484243236244422656 -751158742290180008950079888300179456 9193550671344848481626064863363072 4479950440566605941065455792816128 -614647971571678500980039809415249920 4366915578855513488612920620220416 5049100329563660270225276503326720 -285290314498581845057913991716667392 8301042791038827966916346979024896 8463480385278083768506216729280512 -870136034309016803144083044042801152 8211191617109781589155840943718400 6613126936706009983509891437821952 -783907681000685898848823862364209152 4889176178159363424389097278406656 8343694670624924731664571501117440 -956940996566911529008866239652560896 9786485841219370828503411968704512 4094747714539174828778471599112192 -84936124724949264202937872163012608 4580154991907668229599763219087360 2343970264007600817776898946891776 -384737007824604059891511328130465792 5611362359701571132383199036964864 9147910642653304720632724831862784 -670661175126603883762912254045978624 1746145443110884715095144674623488 9574283988501486945126658389049344 -272980644854510258742519392494419968 1136184292761057131755021889699840 1180852357397329588706489999032320 -408435171896950998765785642619109376 1814047181888187016742631077052416 9665831745612778415587788098371584 -803679053211306660384553276381593600 3303479546642940162318658923659264 8212743698622403026279913867968512 -127738462222578475149600277760311296 832123809457697751794501065637888 1184350744763163068536497379475456 -197358140994085619171682855835140096 6419652438623737396701524266057728 913734374068651795354127968501760 -536382430020448355919157908763312128 8663601083273198339985515984453632 3173669784093372483805716135542784 -220837567896811611986584407524769792 5365598688748339636703943494467584 5578844822373146705057806186184704 -964897116004451402094069310239539200 4378984506759694289302926936506368 9080770931092256379236181688188928 -899542401008648648725074587202617344 5269232559823435982186245825495040 8788271610424108628217429361688576 -28898319693020230966364256270811136 3441665610507565544452358733299712 696518889381072915647638609592320 -740134285812699591674489821334601728 5170705039516316359464134109036544 4092520360008785883478157646888960 -797860060183513636295732290534768640 4682637430587343344300714809622528 4574333876481815764465724134785024 -134750073491300810488639503126757376 3204569229058635436129884301164544 1562871482373507136844088217698304 -104748048501032331448899811978248192 4484382762275106759451175982989312 7533016965765345157109274493583360 -227134421357948572081442832137584640 3030694443974430083809740282920960 8034905294399601933963876383064064 -308711201087795960478954542061322240 94389677504681578067751344275456 7802578360779651121332448890191872 -475467200812692123789921726937169920 566867946023916430674417749590016 4979976144298279570031931903967232 -107707743621651767816925314142961664 9248922290662678148640438791176192 6829828489710235274030843804254208 -280929142655667595912878449754112000 4577473585466802613732334758789120 929261229680397498676980156989440 -796159957414895134978463788485836800 7307913043036456686110478511898624 6026062139378611770321418374348800 -330118243480041293482750979010985984 6839193982981411372993848870436864 3681675914534369143391754741874688 -70255772706786341723207179591221248 2824488364681468743769208735662080 4861393976444322271639167110742016 -450979465273801821864694743755128832 7955185859307315833299132680765440 6224432850842549319052915724255232 -955304651020326637107759915298979840 1527301060776051058242061019906048 8484783664494233654139964027305984 -731135209342368495094024646950912000 6252483622714439625392263031422976 7811306398881275583676244427800576 -960507631996746383355871828295811072 6757551375492171670511456083771392 7076263166181324627170503459602432 -969342476430866778987645643534630912 7299267922915218120791858555650048 4104737223594786229140011423367168 -893385231621930295091474515015761920 4805216404111445212488049874698240 496836352286782105905685665415168 -341347864021792439720778109850484736 8022953777374425530340916942864384 4986424023172818156749011946569728 -799199334380484066676883644047425536 9203629356835583002590741375483904 3374341382714291912373490455412736 -246199395792887584892789955414196224 5393555361173349463724990857740288 3996702021676892976256939024449536 -829554809987981560231208390336970752 7568970904564472745734867989299200 655035755134212775492318033608704 -904252836023078506290781755178745856 6290890311006610269133243313815552 7301953544653001236705261740097536 -594049252019742950787599059587694592 5598131164330317120562203264548864 4689301991448843768550952351563776 -734702814574330483675149042054070272 5786431943272557735162710616702976 3648072448493520819727679593906176 -376287573509210268026813248884965376 3806011008719715656855739948859392 7183910492805502193948992873693184 -462143325958703508389667645494919168 7321626467902458818987710845288448 9702693975521950949445887204524032 -614739452694041116491812619092492288 4742676994731065402249467991687168 5120029109722637633659369169092608 -827697969538667780652639376830889984 2555411503334700600855605092024320 1390276980392439539884059636269056 -619370586021162291300898854957744128 4612264974416995107350954484170752 7340322468904152540567407071068160 -640068272770953216188733521328603136 817678802347562077533225053323264 3750278707700574094263695362228224 -224798592406758364830027939810639872 496896813845631890722471133839360 2273298034394657541767926674096128 -915692663481302776519187005303685120 4647176864360312337334274684354560 1784821505971699432215194388922368 -972950907575273756508052073041887232 4396090688231248745888745487597568 1297279292574429410762205041786880 -167499133962658606229688422498304000 3529199673133339434221416233304064 7089961352497101275334080670466048 -813980584615797962977195979383504896 8529511220511337651632582298697728 5474051715081620976813327511453696 -113782623704077353276754865114054656 9888736235037195360976713405169664 9729901714925527814702567526498304 -839220037535856984677245656840011776 2621222713918615793799999015354368 9681868452697066434892456523726848 -136807951584274166993974593174110208 7977234494893560342002315556814848 9478246682480309086707290174652416 -134971200513676838204398011414478848 7557484723718045785921280534380544 8272959047552192092501487053176832 -601798068122239667999423179545116672 3606838967848368517526593363509248 5438440009495423019044125666181120 -643848815519566903463834582316482560 8792317891184738540282828847841280 5527908519629189742051590303383552 -579669950705689739820504655450865664 9323055158862496847936770698903552 6948966987657647134579619505635328 -20199835863470738483322455918116864 4356821597954947115724314670792704 6453746765856115697963753510273024 -446912687085662681005702208905281536 6654723991116055193825402391887872 5598576738100577398143404436619264 -793932739718006960940881317665439744 1309604786442696150017201504518144 9073461838380817499108182029500416 -214891401477310591250770907631714304 4001042308619214072662783946653696 2555787950116797836331466096640000 -785573620891405079953974743953047552 3543043989861010842024971142692864 3408084467406352423911476579794944 -836771990174026960459980690801295360 1481087329690874154403393410433024 2207022256707058167944334761000960 -219796006219256923240531095076208640 7173520235438972509503690693935104 3787611770877194102264076517244928 -820832389006358267616976058351353856 3084482063226016491218865238310912 8813879782575204788236758896607232 -628163203362649876232777183396888576 4357550326524639857539100727836672 3884545650854130655999048242167808 -981472688561335161986980392608989184 2454184404531352331332618104602624 1359945475216521533378745419694080 -689401843200206712289623523102556160 1572745092520756909641858684026880 2006389576541860037652268550455296 -586874645354028674159553075554025472 1123589719071644165766833109991424 5978547873036185218705784060248064 -907526976451891731638432245053652992 1526738398501987529183669279260672 59992391622825382876706420817920 -577198857623050431704883696408461312 5678051528538427707901509738954752 8785267238776572522521715126829056 -84075514842477040114726856875311104 761017942802197349924053727576064 3249391725719355420490823398064128 -765485656271407838233999198214160384 5503887132149519105616443229601792 7960721170414658211795838525505536 -460211607439866763157754892091654144 9084271832891064569277009199366144 7185591214209998238719677890035712 -658896465157679286233812832866009088 2415780410252228561514263084007424 3473091674488490110976709156143104 -614728180030552625461660667244183552 505854139831627393798210225963008 5020061420244991144955302593429504 -9513869967331147300349060600299520 57219971192590706681381279236096 6607732598163330856024254946738176 -122340163054989275911179362449227776 7098441961339108259253056622821376 389473486829104800106530639708160 -98162452126774409597296682794483712 3606683306235136501610127275589632 4986619515111968886283548984606720 -886995488332769211118897001947725824 5115512138489691246942371872505856 4630353779380369876336738742304768 -665458566027822747753405864252276736 8818200284137943889015975964573696 183859866979510993852654774386688 -201955090887927079252828940908101632 1007134937842711039397865566765056 2430589060196517408862544863428608 -9122128671588003959797923046227968 343266370306394783878556090892288 3846805233961363413638947408969728 -591064085140524959104874894438957056 7317693846290047315010479672262656 1512755780251612391270360119508992 -570770946186358622074309639424442368 1863931552967890998052429238370304 9658544113121358197226522258964480 -245029689236558031367034416337518592 6633368333984399877632733426483200 1619566041167130341116362734174208 -93820476835725249308541208607326208 1582147143371248518990269748609024 8602341212496180738593886996267008 -601972870771711147326625031213023232 1314943609409367826521922690088960 3760656881043646843452986075643904 -966339831467330547890284391091404800 7641069457100309976153487501688832 6900624734003208669295990525657088 -994639193005109476536286367671386112 7831294254292854493122829247053824 3692445125406947874372752773218304 -697670574617560757429147446993223680 1416943720293133648655582691852288 465439686321676261618657037123584 -194860412509153178226878529564311552 9498669558079797235806170496630784 8030500537809288655063085402292224 -872812880330260652291740814131855360 4285507300326248289161606454050816 2204814865688107551165168922656768 -835315213631998553114669484567691264 9607158230122197247419349974646784 2798293271617256047128266328244224 -863593627929499946122267448670420992 962137916664825128511672347000832 8608711174628579837993828678107136 -272677270393150601593773831969832960 5343075924176954791761494245638144 1864521496374082431010083006578688 -488746034548187377292300162252668928 6294873454665805425303961703809024 6026527392674250452607724326748160 -533403715004030863765411582386896896 3359001338194332478675097193807872 183920033790863040109954184773632 -801115928467140632674554208554319872 3190680763906343282644875265179648 4147054513016257378296406103556096 -619517778251134375805906753320648704 2012350886300068590364795168882688 7636240132550863453260907768971264 -297597970162871566295209574603423744 9879674687459774921652789154152448 6195396124424418198969773151223808 -239653372436746884747174177453113344 9766095653248568900124753235279872 1358027891948611129929700311302144 -691318145304767656511138925249560576 9502486971632419577162042370424832 2456274229666516968441071844458496 -454330382281214932760869880796807168 4471963311755093710902701483622400 9746699477443853005639326619402240 -182281959594738591223913412103766016 6724588070999565314148888471404544 9083138610384493566532013095124992 -77972914229602469758790697452830720 9384005255324623477871667711049728 9908707964603642527936172473188352 -866539838120334208617022921159737344 5552650507541240018927940991451136 4405280729852999499072006004932608 -137767606265332676621485361200103424 7585729278956119403426768092135424 5982202112356760800993896441053184 -135243077676878225363914196789493760 1744997114087778998454334691213312 4757967175768494115599759716646912 -233187891081948953080373300525268992 3403515494284307716099927923752960 7211760746924701032942736041312256 -271047896728188148575365974345121792 652200162265816316645015883350016 4149828809233892323123917599277056 -676729292349016367716543136824033280 9422319136723134401254126384054272 3918178174065132059392473877708800 -602849352981652029091197857375977472 5827395108402952301184862027513856 4280247697416372187690250379722752 -473141259904847839028608520868069376 6389940150545164628085685207695360 5303909218093820888455523174711296 -692217103681236534976211967442681856 6497279839656818478370824235515904 9787103864064660514169429944172544 -973206165270266744639850781777854464 6708788934941740713710402052030464 5022657771903099573608907758632960 -481274317732492999254905552185065472 8905774996763498460136466947244032 9826207230339211882886931295502336 -291437430386176901434737908743405568 9502907559130113506246867611025408 8701903020390967727463046628507648 -193157274577966596004570793492086784 598646704759771237744006811090944 7147622111137505655571616412729344 -578939176874399678482523807937462272 8786003565900598298699929174933504 4959088119809137616447222314958848 -129083977575800592039055797321203712 2462773022032300185568512227409920 2486057098396076232941730919350272 -864694797253349278357951404167921664 5099053623476163684129341337239552 1746484336112149926492665880248320 -751746807314641601546058561178566656 9942537590025601484182229209841664 873626422126989151974582183264256 -177543324371666734485321010217222144 6180380044365061080701824114098176 2272983355538477527566630451675136 -986512421873840707429259298050408448 2647526951586005309027142955171840 5735476575073504318395641816416256 -332620068635373478884400257057161216 6977800752563571967286046705582080 5295526933152846002183073618198528 -887265533082398740616532458614030336 8029549573460321687127520773668864 4886665443151301406762952776744960 -816093677562559264987276727933730816 8133679370485285147385267031638016 4404009492862194813795752902393856 -847045686652431796939212258719825920 1071583535233896198083397558468608 6161893877400597432707074658140160 -782349140565118682785404825232211968 7526794494063115010315138241658880 8838876541942852700024182992273408 -185350221649279527125878713312346112 3063718234601178895767460372283392 1471331759754978354021384226603008 -607237753401464849884901919592284160 8618364506218848746540140121292800 9736681649613038348159544130011136 -228611943933472444245606923583356928 6812001753904466162619748351737856 1642968180869338281730335414681600 -586823420894765729334998521765429248 9603553757587191559751352335728640 7972281688299469567170527470026752 -436155488161894824704995124066648064 6432406023451270907690231550443520 2324556109541443832044375261577216 -562819360782489693070695087883681792 6944265320612405022850748854042624 4714378156558182837142592195395584 -405677137184547709171580943846080512 8099596755750582338264041584066560 344903092186223419653606156009472 -681389377470466712874755657199255552 3149735896760175929780828733702144 1634575408362857454707524658790400 -558996050671977125319852559618277376 2334852572970034571254611427983360 2110967159313537739905173712535552 -475503955969873265471139383494049792 8573279868278852571754289180966912 4449208858429588740398868452081664 -73054214213348426197848512134119424 261719945259205635481301948563456 7686911338987525069355229523214336 -368398674464452936057242949517312000 2001328632184993819811532242944 7052015344491726199530867742736384 -30618807047654114471138766778007552 9359776457648563240927590378110976 5146098169524289051007657592225792 -117779240192706214807705008939728896 3266364817166641313627300830380032 5053788240953404860438147762225152 -139053974025463840377069577583984640 5495643856446084061128046483079168 6573674398676664135774488693309440 -237399794454679571661838694890864640 7880136076009690925536353697398784 308173164755786807092797656530944 -254120315074891973431472702051319808 7972521861298631521389503156584448 7600901396655113341232544311410688 -441653723109722343495111515486289920 4904088547739804763375031233282048 3678836594510475691406645102903296 -350570551062835136089874385816518656 4096599644668477437951580309553152 5308268942017019305276476380676096 -157674491809380561817094328653185024 838405215330084431856562234982400 2031549422601828001061717072150528 -991167848135824556238235950609596416 2865461176180630860687938947121152 9641161677003096343946696350236672 -412391941790611837763146058492280832 5183863855071481643436357153980416 3632717920684552541192765201973248 -934616934969432153078075111357022208 7816019959608467426423249150410752 4557602569909697265267127774871552 -99693218516681462956594457978339328 7648031995291716501795575867375616 2016674063405392301933937674944512 -920064991441932554143520596328185856 2447720676088715856259332691722240 8207177224222658923943679787794432 -907314071140522411187277072890331136 3847121454020090130300944726884352 587719660134862209929396084539392 -745183114487686871898965983556009984 2317007456296929791005354276945920 9155343813009208981663365642321920 -312259134214128179942174528355958784 4928488016848668022099640221433856 9671556624789384875822402559279104 -544521771944721860700388378670006272 9303858308006627511244005180440576 2155788011969923607484241744494592 -520046125210248647539168828710715392 9417180983461521903941330669666304 2810027664612217830114401187790848 -460925765638023622253414471532806144 8269532329235201105083499922063360 3107850981059947962787315878723584 -984319501395997754551849360319053824 4198905131937734155791362361917440 3179138152561300468054427290304512 -202379479630421424102542217880535040 3940807416854348706790597831163904 5854100303193237926547253941501952 -95539016001146273400690532761468928 7382312673070782424142500086153216 197894212290165204567781139283968 -758806328783192884825582877796204544 1767613769294063902590212899864576 436513800714048804034201555828736 -472186335088903991456501359248932864 228365879514123332405463389044736 9758866446867205749482131927597056 -849834577188255646293109421222395904 2485531443453604472984149845606400 3528826032479302037766413190430720 -249164902376637975502144768328073216 1858589730479235236997491136135168 7867993425137411138994011574894592 -122266985978159593813169799243497472 2896181232080783725948495695183872 5385952627701174830239122561433600 -941472144554999599580254422435889152 2252460763735364995910252382650368 5673588755752982620244280235524096 -614276702732579894809373673590358016 1802768018189491215741794041987072 5038229836709619873117939720781824 -709930291711814146354347842669117440 3304894084946485209433317811683328 9236408315518799807857528043208704 -818970792776794371506080633539526656 962840787085096250505353142206464 1746134467403958123321428163952640 -922938883637242777702376807428259840 2338919541823202282016969936863232 268162535857023801744175432466432 -34913629549512600539614124265439232 3366872823007627622323751386873856 9170157544022443723558792149860352 -480638542174721502604861599949783040 3001268445303376487940255098339328 1857230549694502763963490743877632 -274846417954952930505478423221108736 4035822939831694801145186024947712 443943073491623358759440280977408 -148158997390099777284902848286425088 9095605577324480458821703175241728 9357341382912222682832520328773632 -591003305265576533802131522869788672 6620595392006687089916144607297536 2182891195041235545829226282221568 -458393739324173911576389172999487488 1168107247657597591140035628892160 6655352621194903898907473099096064 -898283243725107296849118472448245760 6442358680180070968633121323352064 1831963984476397647905420826640384 -287107579330030411706391352022401024 8856717269843794405108843462787072 5715006606782815919340415774359552 -421934425389515642487574158085455872 2520588399986248164884625903058944 5940465314970837836980627764674560 -909279788445902348696047215978741760 7792318408832206583436049733648384 2140239993938069806876372135575552 -552266984710373085442580837551833088 9710874424133517285550694816808960 452208556967267491091393810530304 -590132913150436977737144576742785024 4350745479290433277758287160279040 2725073117032174967535822927036416 -784386277679415997528588632947949568 6176616124753506059449438698471424 7592933669487750792238053051072512 -919546258785886931505323753376579584 4302804452931099052838771815874560 9383618629538369941878500294131712 -803131698773261634042957382497075200 5219030361465614061035957084225536 309017881221774563419930193035264 -340340966386101790381919776622510080 3898332313599225570923357264674816 1754492415479382880587250376114176 -180419848256495877678908993074888704 7164254169728744635129094855458816 171931586212378571941705689333760 -765576921937337762339075035425144832 5544311563560675934868444771516416 9895037828495061352445040499097600 -406153868329615130153689359048507392 3406354277016197625463145523838976 3137350639734669318087936290324480 -398943573999762108855409242059833344 8402260926612954216108913816764416 6391390133454877455028905345810432 -898502328237234499540186207671549952 6286374682925675293341313702821888 3801260107524293553048986773880832 -553560446578174193784174346328080384 5818102952760239645528998212009984 602297850913814987877724954034176 -601013314696376323822189039570649088 566559688336280355591148315607040 9594981130845267635893261161201664 -385996108062794747865431547345633280 2646756817755319857669807850651648 1964555996457451101992422270304256 -480403977302948530622020163163127808 1327492039062719698578001786568704 4883534261457110959777030699220992 -702854954656208752780753022580948992 1262604986023214012373156937859072 7801669601446861024953187298181120 -350085416335614994587664200985739264 6488414063347992170014059018584064 7369489420910673069355235132047360 -941916979839002729669181707672092672 8674777930399770127707249066377216 5003082992974603078182684525068288 -395156924275782507042755055596863488 3462172280620909654902308394237952 7610942732520377718247697609129984 -266669280530918694644214074320093184 2888833038281138954227519663898624 1989141002575348475582687012192256 -71715853078090435094572068000235520 7827509279719591852525503897403392 2188993488125544984152279883972608 -74015231274229136143323151072231424 3927407326088314831406525801562112 2639732124850148772615941399773184 -918536077250845815220246727180156928 4925717969660480176624889665421312 38874538904897668333394515197952 -551088819211479918286766686848679936 2119291438820819316711770831192064 7135083625652830745972327908900864 -300108234940714323946339430209421312 3603806383279830439791150323728384 6116180695317274879276553720561664 -414863938579872941178424539790442496 4608091109878032239215889491165184 3368480943574407394772325528240128 -309002592250481187324714573742735360 1753272368256855238700397236322304 8844925740239581289684993908408320 -6905166145800845129330303887736832 534976396964285408717580231770112 1729286133688268982666030491893760 -212404355706464406070213370705870848 3417728623903011074083052184403968 4088849010851211475201462091382784 -301580153999648746345178952816918528 3658531851318677827023654826803200 5315853403684457940725824091062272 -329940235607017685125361705584427008 4862108393596051397952985760792576 9778868200729411450553143467704320 -898859523272213658599380723909525504 3408097406440400695529952723861504 3801218484294086593329691166244864 -737088523079814761511790462822776832 7082810319216233948650285712801792 7840631984395311796290537817899008 -229680932924053142976367185857871872 8368591540313703550467004348497920 8965481975511272539560435240665088 -345940199071611839059580435145162752 2746474588115663874155246163853312 3823690585627755402988780282445824 -977145560130280626191230934961881088 714734134469519919785374742740992 3165270541267767924542885494521856 -486728454678686676801734061519273984 7446565093935059815365693793107968 8374432200178830931652467685851136 -62096944848300108310273744672129024 3635533734278194313582563051962368 6512015655376124375619626522902528 -389136393675692872008728457485746176 1051001763663712322226942260543488 4832998311078987365670598320586752 -147595811880022998968239436236587008 6071095501614808575280468641972224 3640719374727879027522159983460352 -185195720625336781263332050515001344 8446359273817654620361302449586176 8066686286634785758473556322156544 -663259204117337181929920172790906880 6332054277875752191091776073760768 8343754010053390145626469165957120 -143789270293710269111790295542923264 5572796842903763960498216209743872 6063861504255384024887296052428800 -857250091247726147929111000283873280 2495884731877685051254335090982912 1572262882944686017844478363041792 -936589055067348915919670119394967552 5306999055887252388840790068035584 127779527097397281956227398500352 -441523241283531636975454199950082048 7192881543766878625300160578584576 5096807149683484059232987133247488 -925740012803606594366546676933459968 29550034874963363602672178429952 3898302435151011330599080618360832 -98365264063587384276900683299422208 217028945217212875452146375458816 6553267496969937423243027425525760 -742562709529291693758883797728755712 8410290119249712087659602853756928 4595715962787422383643662795931648 -141130257064505580443137962072342528 3194187959496618064892766028038144 9413745111573796503808275262734336 -387709810782291005922285851988983808 3778466985996597320548326599294976 2292394237258030157144984578424832 -337836069578231365369482341603344384 7004196575244862639934652031172608 885929172535245624159831119101952 -355950043961442456298244657670782976 9733290982263475921745641738338304 3027812188248435142651214282358784 -174967293607087408737892855682433024 2223638823442130061594942437851136 314693326749452755498708347387904 -675429916432609194875035658045358080 9600706083747747857064928410075136 990316137228943893460688102752256 -744721071326336558724661069867909120 8751478260301980376869747982073856 555549770224951295563319132291072 -12636711691069583508187161340936192 4421666994031716963479018075586560 4849706257068397902600406413869056 -257494636185650928947530802927763456 1150514136305370156725242068729856 8004538711486684527126101069135872 -504458533909124123221385002094690304 6940432002236281942245603197059072 8273139379167616764608784394878976 -534249316855418942843845836298780672 456927639358443405651024115924992 9572937432084629397188657696210944 -359159232394312266843391101256073216 7963199937718518397646031768518656 4712155557669125346502975076433920 -419382684799791091899557130725752832 1019926131706484613504751793864704 8148559116849684440585703331463168 -552157489839633535075073479898300416 3957410326079098870779349326364672 7290695061337820047020022292283392 -290909648068034119348196444781674496 3312063841388570326798876987621376 8668181357529783214766100590886912 -675336314284458991997522464863158272 2417183217587632682821080682856448 1059872963335361026482119766966272 -966617877401131801579602538517233664 5054667514730655219684281489031168 4979627231954252416109300873691136 -244181142243366925057073965506232320 1878074685169791873422768872620032 5090696576509496689993791274221568 -305399138793163351063515214213283840 7884403042189811360675817414721536 2629998153272788993411690453270528 -377481452924490286715257018050936832 3547050871733523145094173250551808 7929097852270411551106673338744832 -974300626019446201599494517841461248 1781276511003674500307485770907648 6224906253798379830676233199288320 -350528242999591872961914955739693056 4424417080760878621807707498217472 6772788523102253009911022834679808 -476236629834920165220237425405591552 3744354984007514792883523707469824 6883478120501091240299998872600576 -630738173999401266487710380424429568 568099765656140739418615384637440 3206329142892222027607698325897216 -285577537840542897497059511309959168 4174107851075502877038621990322176 4454007420288328635951044800544768 -527138809699425330567884284018819072 1900668665985325334309599839256576 4878960630994895392355087934291968 -917881257872016382024733534447468544 1396879249849871282055394180988928 4465392365251460644636477127393280 -2819304726366195708498399465570304 9803062442542421384573396623294464 3646312382707564498790911175557120 -906434635348496207772194427088404480 9315878631248965868935140561911808 4957754342764933982135501178535936 -286419789697075355162254525144760320 9235909966283746532907348905689088 6447025007025130754794659713646592 -359806465711921452885921355656069120 1624926146221962040650288265691136 8208624975081252583483788771721216 -400768198380385224571515163193114624 866775413990458407990522734968832 1266789282872275935140248593367040 -822174556659536711584528346516553728 571274368141441905802162533826560 238594241387974790810042510606336 -884565574330032583159610300457549824 8720572840868038971862157436649472 3563432667309380643570866498568192 -996240833719588912509444858193117184 6269768462565178398503075068248064 7130991653660834192903209574465536 -258046260115087388457182093908115456 3088536989497280629874112235307008 5403873780672407026562319865872384 -118400964026418964759661706949427200 6866584841658008468633351610171392 3163916116124366906169581935525888 -274343942084308091272652965220974592 3086351227516981762822146959081472 1495486449123304350798307349495808 -790954321898764107641717491008274432 6531471281120122338607381394489344 6858055083153129717638865883234304 -710174905798022524450573563130281984 9771665176320881996222374021693440 3811602704227506022209618083577856 -347348972328102782832991846656901120 2092196640245173934078295208361984 6747789083535408864866646542516224 -154049406696670747854348477846781952 3213427199605350076933299534561280 8091778761825941796883034565246976 -978922270331323203810645218588360704 572839046394234464675097699418112 2991289861355898145083380916551680 -832745308697642325169949577284943872 7861737579614534793695398889259008 475876239676635904763894838591488 -26562352115996761967394698978918400 7609881435421002662252648226357248 3571017187284638018283259574616064 -878787832462858090259833777702305792 9917988794536525300205988884774912 3343004644068446901614639526707200 -990154013888737787832748227189276672 5141249691980025131516012909297664 7088058960233035251935102948605952 -892085545318182402824097982603853824 7626556437423370641820546741829632 8372594391125981851438687469961216 -437488079089458896395445066128162816 2919375412084948228549041245388800 6860110172845175635106580286930944 -887425337360812614070990639648997376 6639378976037965655429166537900032 9819848880955114732064167331627008 -675921415761872754860166228901625856 4209065416832137490959176650719232 1440145422073349030302306436907008 -759266337409380975299454392235720704 3185667472782312703844012148129792 2266038826688626957029953025081344 -263795466546211541181776580845764608 3981118253529934761653668813996032 460377312999833186413450614538240 -729474454620084452096800065442545664 8800482249287901349608108247220224 3890620790183389897621773542752256 -600248360817269308438085618846662656 1324292025127864056132616656519168 9834170191103806207312396548046848 -249950781255702656364655797008859136 8113342076199115193606249834872832 3044644848923686993747877038129152 -261469376117180346819990099454853120 7567890517434710366640449628667904 8517386918222080341899652834000896 -29370901567284701084593319558774784 6893098646242833797973920549175296 6483700189402840505718853509054464 -560602604662980798492622542998601728 2479132582208246017833609879093248 3589946121891301528377599937478656 -463418486075783760936042432447905792 5147621597520869257962610287968256 2304383260517658633104200688467968 -552343870324854765058011230659149824 8790228043078481362006294218670080 4457745042759623701496754067210240 -70173767714438672627590887634894848 8011549596533365363533353632923648 6408839320266839811467504978493440 -325738915267581950858525857231667200 5232290385276370132501227609522176 9587468364406162707977517993558016 -237954579912742765064284178873319424 7810863256660881560625806567276544 2983972436351787742217496051056640 -694906173457914647644729426755715072 6756185900915973758191897046679552 4873957313115459464620398715338752 -615562302042042628328873506692399104 6708422473769873515609855442812928 8729522747879772739595145213640704 -92231769901994336491909019322023936 4594910381298156434621927157399552 3659973365245415296792240997793792 -764132406876041499290498411821793280 4400581241051681175989554566397952 1488081218463782943124947308904448 -376858492146622863498055942234177536 2357044116820358694257011036520448 4311962129299363866200538597031936 -626746687623732692687497987977379840 3177747610433626944419999128748032 7818991133963017355951205102125056 -667968520723261197646316433712349184 6500662952946015969018670936489984 5494765829123882557696736736837632 -550174380780301608410593415741308928 4610116049345456016808145657528320 9386355146296931101613921719549952 -694434082927328625212238344184922112 2343795656607325138534895322136576 2432169125899489509710894706196480 -16773844345219036044363614480498688 8211405063135081675907830535684096 9589078122872450585075532328599552 -929858559090154143836145263455502336 9211413389048783150880090570620928 9563965604339159903839936132939776 -475693964776684390252572429193838592 4668950625236803177411143387840512 913050185368041786243985692426240 -951830267313658125374720158673666048 3197768597121347509316550064603136 820381644433155918174435500097536 -984952659834419881943341823021809664 9787450753169546326740435438927872 7491692818081317142574153651453952 -354452592408159992821340631952523264 6478921020031009831984413143990272 8289734613059747991921968130555904 -903264548215054283030759791935881216 3858415527788982240680516643717120 7055297914194412423124235818369024 -437056572474294412455420183504224256 3388739148233271910322374472368128 5379913321370130475904487743553536 -506792953849716521119668290413658112 6510004655800881041031073183563776 6108751988907617520557324215779328 -917860070030301900374626149228085248 9880513684211239567636772725719040 3089805188576960008826335447220224 -68693678469833091714756072657911808 7290470429345406052693821037215744 9072998216879859179956628489240576 -49793554695650054840758312384856064 2756696685429952529194997535211520 2410695975005719899619241286959104 -656761718170529392503241450348085248 4601987383049575711681083825192960 2079726168775516065409759033950208 -768372123094798086486175386714505216 1374598971607675956862396510765056 7738866716792430613950639131066368 -272891035251021054387580744048312320 2525639872775249123981276781477888 2604730857368758683275754907631616 -737961308722525186464274365621993472 8287238078958835241099369658712064 9434238845705503907554083456679936 -666897265790912527733863641767739392 7738412714032535682060556743737344 7324326044950473940814310458523648 -241411195237937407759539623899955200 3966836558790359891221850968031232 4643984967801328991128876698566656 -76372816241411116705601376558776320 4053963748132380839739044996841472 9895037340353640701421685187805184 -594497581139514253205222674441175040 1823715759737706614996592140222464 3230204995559821339209309712547840 -118429097529683760893477954577760256 6974720186560716162689520872980480 1004199458347858205401411452141568 -269060794514323137922774778859487232 101171679925302452193651257769984 5718164584520127201729212307210240 -535143941939803421972851901192994816 4706754974485561365487307454414848 3643978388849734715146945666482176 -273819189713654114758306365989453824 3951649277715224295849234251382784 3344856962589794888865020559491072 -355232735434948724527860470694019072 2809017426851629392473978757447680 7318618561045135720133332039630848 -57726053033148235839041615333163008 7721887779857744321112741278384128 3205733736129864469466929923358720 -600594644026368319509389855451774976 4942427889738451469150795780325376 8859184600927009205954063317860352 -526711020816743562060378557168746496 4870060805434907171607700557529088 8717307103121117662573760073433088 -459144191695916819361310497608564736 6135677047839333084859606505619456 1410539064159168904533425476599808 -420227880113186695323734845681565696 8477584061732262973513093884149760 8935423498333624000362766294581248 -739242272327649569566792204993691648 5452304064056293876658839935254528 8639885584895732425461371546632192 -120835276341677221387820507674443776 159393074548213942415909179097088 9600810593981844916056935964344320 -202409299556210100989464949651668992 2293762946191690339153771744985088 9761665873600748684967217733828608 -816579257323201553087345108455522304 3243119599346568344174805104197632 7038050205999931273168457346056192 -387460346450120083135567519411077120 3181904085806146432212354344157184 8854445510530424342260121270747136 -940849709781164480241070306234466304 7439460034267420437100849694507008 4802943768264610273460204655869952 -690179434737955518663142096806871040 4370539730915901039750536860008448 8662038847331710318761148101427200 -967930505460714763987530524852748288 6045988913056228248130922525753344 3570570304094895929083776932511744 -592160011480456994310775070340939776 7145885815849182555865842270076928 4780661165930948883446145008795648 -380480595467299639247383906758950912 8409802159279004158409482191241216 8778276504530427959802162608865280 -111136286933879634318309497078022144 242018480608719896214356371701760 654233134777788824555857882644480 -788129143319241650023195979938791424 7750504417681044121189513827450880 4869214721241618359996082919833600 -114200723600059807226904730526547968 228829633048772206202076058877952 8242078224394570735669179580416000 -816506195107204693813228920304041984 3939195590654949660361328749969408 4900355192768420501466663488585728 -314606142277902430689927461932630016 8623532209448650344067558365200384 8232867723410931762722155016486912 -963678981074670621235818019327836160 9519828920464707248457718364635136 3570297363636349710457352908439552 -636201702430183558557799884471140352 3957560203565163673475536553771008 4043186820485628944242450796380160 -403942590130768416692543565741424640 7515775400858174971336632840486912 8065952595215988693415674473611264 -700859516945571878919463509155643392 1770697006338878651627301532336128 8439367332953818542648399948152832 -897110140093534002984401034375331840 2792881436449731908438337966309376 8822194960714747561762663750959104 -710234657445489349770875177617326080 2168267781253657242798668422053888 2387050458627004904798387873775616 -341083969187905206106163945557458944 3089130982434169192753113268748288 3691051321294108205644364986187776 -70626809369147409244887421665935360 9015073092618086952728073460514816 6208106176345828169577810739855360 -764966145199731351063869177617973248 5416397391423613842490471026262016 1333954174099815014677714699288576 -817889000511535355719362783932841984 6260820359219174258465659550695424 147811382033643186067281450893312 -750550482381259731379200574615453696 5259975038270271327358364703260672 8891003850001248390827850250321920 -596011940147765835998412953855459328 3802564233246735350720695675912192 8945231473812728818478052490084352 -679427537993591141521292210676432896 5509936440957060891053170916065280 7743553533679493195503879285899264 -215185860922654553016649136623058944 1892430921103113884235633247911936 6160837001357700949748380210298880 -571549813468627243540376255970934784 1427877075575773275697115360657408 2500810717853364409575108813783040 -12788371698948096496181227745705984 6026304054683267283451063243374592 8490795172319824079442677170438144 -17906030358642668689845535608143872 5168565220469129712281677367083008 7702311241757487449509822692589568 -513572772712153597920248094571626496 6860847001924474432356079621898240 5061439071027324633101427745488896 -251012278345839235113413996531679232 5509151403161005718910284104466432 4763412373995224224121321517219840 -682228036885507422768644007290470400 9548159715580353146049959334772736 2077904543875616890485397631533056 -369889491048461367593729543307788288 3337026312012963348055503283421184 9108277998686774808882270410113024 -505202057034685299671189207767842816 8039079994030477756281045206958080 2504674502568499095625850175881216 -439770449684641635944495287782866944 8803928324755075072518490733674496 4822617595675236895556884435566592 -585241879523965381360866068157956096 4697202561059995579103312376496128 3496235326341044372790584314691584 -445773916248296601915113199563177984 1839030045857620566511091584073728 145671171541996605503065135513600 -63043561157675730539237850356908032 7148145633934221494802466503393280 7143496905067578879809857385398272 -620062168372000003607369859551199232 9824317479309283566624713318858752 4940061106898358693135952853860352 -96008346181342664038894433657159680 6342354499139956084334826281238528 6340854064856916036613314002812928 -55086926451197565902036530186158080 6432332220652473878150668995264512 4900513299745370565501070560198656 -417024446547709721901924890548633600 4102824176394793549082976810172416 1445401696981215042422663022641152 -457917078719558908865490026355490816 5798787703981083804588879896379392 1011105590615937439762146144550912 -463243572400554526443134898325684224 3064203291746865007347231671451648 7808351090961086612775630043873280 -897938567652861374214471387992555520 7454803164244886570017236734443520 9169007531001661457888101439373312 -513832114657512409040213438688657408 6875966341106263807878543198650368 3681899109730222465979236193665024 -807241539370338628431283771093811200 8419220595385393970649160914829312 4188992893425648155975229535944704 -116058936249481772708243850490019840 5607139257960014977873659933229056 7685728745796457060904394710581248 -32058512653229018765674711506485248 2126968540011496380151192155586560 8302416528838439010498655165612032 -546606425140889679878943497332457472 3281245128450746583702479906537472 5327594391323209598236577885061120 -184522875687968392741501842908774400 6655370839348433068378351229468672 4740086410333859675393124730929152 -883668400676875413305390962590089216 7515333142880274488223826324750336 51663615884980334030228427898880 -404876366820171624489218172061220864 5283481906175789424219586891350016 6674521650574232241777382936018944 -439775952140435838626939263367774208 7093509898092965628001075916177408 3960221497594633949198701790494720 -434648512483401278368371484076802048 815913746084796693257500892332032 8971967208667893757385193711206400 -102965887064595020271393155806396416 1028263232027976205275101864656896 3084538852884777826340840627240960 -117135919829151247578763895114825728 3247999327722960118490960786096128 8619914905337993403956648248082432 -822718949700669426419826855134625792 4960130366715482690164376716967936 474921812239552908865452904546304 -777677085945031815106612884586627072 9126488498895329289995460022370304 443535405109300183803858792742912 -409159166452858766706421646051246080 4664610553211281883963948831604736 7158486727824030500888842753540096 -22205001666108466561863208021262336 1030986076014151902054282612965376 8731636868438932701409445584830464 -773517951907987438125431521003175936 4539848117223056055976818255069184 7124270347634540532128368943955968 -61752573948315583651791160282710016 7535868434225343178049633352941568 2593924617641710608152021736357888 -253449934060870349570329866020061184 2422793487356684403694360229576704 4385288189473547295762176339345408 -270305862043571985612697116071690240 8762772760852061104713038257192960 6722515234429145790349881989136384 -440935012937845263890084290596175872 4746258241769467192763110194675712 8841168115867704079770938188496896 -509024932846870166648677982548262912 5400929362523620591615764372389888 5902354654495300526070154827661312 -81311707467308390051726318272249856 4522436829538218833913743314780160 33592697542696642382648276156416 -578717378322138969840979975824474112 5027427288801337837235843058630656 5341095582886430900869858391490560 -454145965485767390687411672591630336 533805236941447041016929930182656 7615216666318282419540311284908032 -410776378317880299303759574701441024 116154155829160853167475286605824 5382689346079408338976995356442624 -364723350034908578260992102097747968 5511962339841062035729873052368896 4729271311783574745969824247054336 -83062600252185612922176766969118720 3538878049303995159909405883891712 8209397142912520181326344710258688 -128608318673659206646281247238651904 9102032201738562609683934216192000 1579150385696098163488981713420288 -848364162360180106262611291101200384 7678252414060211279068844177489920 1660921048238828114562882969010176 -666723408873631908510221842585223168 2878163133697260211532941825671168 8772789854944536697357611227414528 -843061731587444957795467728552722432 9649131761994459456985430382084096 6230914273960566961557254873022464 -115017548323310156862853481169420288 8051010574313785517789728284344320 6659487768381094342829431131734016 -559098509715724858819095458941501440 2997860014209174214389786761756672 4440027239692645476470553671892992 -17791701497049901717633929245097984 1323535166520280392031543979147264 6205589574327491059512082861916160 -9649277490079893737381210884145152 4989435577354940060938783416123392 7065730100300086566146801412341760 -885695678888165684949904763983495168 9361713593064776935956191905841152 7083262212801462906908332640960512 -737438588431961687223114611673792512 4723122220755563769027430495289344 5121371770165368126918045223354368 -644487834796319941833250581111635968 6826791666873687443311721302720512 5170584217752191687983774014898176 -398864822081486256522500909595361280 2026847000295371555298721642053632 1342560880773016003015118055014400 -954670180957286215555137451786764288 6573129811761001370769676210012160 238508756771617132987790028439552 -114621556856228494913459473833000960 9729354332643243709967483166261248 7036006555580942305620051007373312 -398367037275590623923126139904589824 5347931642563623249010241528922112 2673407414944620306604573564338176 -582916002256554505639326855232225280 727044517164640178562342492045312 2170849136906046459175385692110848 -28694394723039951750626125711147008 9132049706541231339552946434080768 3632213980716255433860537703727104 -915203514434297218621459161895927808 6643252404069453156928014354743296 6926158311309351148599007227412480 -359773388572049479910453204305838080 2996044832000695184531089900175360 9618822128401696013879570134466560 -526657510630464373747429033478455296 898493364216971991775706263584768 7230059516354795724087487776161792 -241036756285253509033493850631438336 8417804925794225750653750030106624 2213125211408033832409365630418944 -513105049363874345219653421076840448 1216007637831005666483868604039168 694035859233915710354951740850176 -240476227609699831169592315776860160 8831753594205906755877421596016640 4592038674497900044234151612645376 -801474898870340856366385041994940416 9794399035198396411230267086209024 6236047086742467103918763951521792 -351752627525906542513733666871443456 8754653943476111614210560487325696 2755483367937318250486443857149952 -19048523678374898877119231437045760 6953444262202565924279455328501760 8925274640502625590849398328262656 -575499766826804098521333173418196992 565597128105274077003977938960384 463866152298061079491468639338496 -734177945657903729077389277131702272 6491881754039964119682207484739584 4285611835135635641031377765269504 -980768975075575769888665195134320640 6133117814023629909313104929357824 1565305158702431127278012954836992 -435558593697235179021520845632700416 8495851651003688547091538910380032 9549339739083039269941263328083968 -935672629951528329330001018705936384 9818892077223571647177356243632128 3431916601482930595748934571786240 -661338966513466124448795005961633792 1620813369521785886902477901529088 679209950552673475353168966582272 -100752141267585810258681000869494784 7058023361601500612576050132549632 6623642266470311784571382884466688 -840146876233860197774027523046244352 2843205548021948368353530925285376 5209762442939079431974775292952576 -317976794421506597384756266914545664 7416173639917004625269376048693248 4900600231919727106122252778733568 -96312324392142132194557938485952512 9495952969495944459502042736492544 8935897292733912031438443072454656 -183590894152034669458118583699636224 3615530899727159550360602686783488 853606959775551786922031917826048 -889548278475487029864071016182972416 2793297033470616774184207464267776 4982734851962785162072705080492032 -775793069374546341479203671260528640 1052473742481246143084591568650240 2358208267783857847388542590779392 -746947522257496220892190800623960064 7007037913851286099034736598974464 8953975977000950392091470890795008 -282969224606831895154820161092976640 9569284681763606637309127309656064 2236669112668648380914566355222528 -542993801175430685164470566859571200 683577021328463527012214677438464 9998662061466071970769049040715776 -431741744499677785832081544804564992 1854456225849165384883128510709760 4276250268518702901757891965878272 -910773993055000362047904383967952896 1024453854572317329686288169697280 7685610634911644927691181441155072 -706924508069843395244142420270514176 107507474586699617137193658613760 1494396268329021501962153283813376 -821652455763650332839985580884361216 7775118700542507441086686939840512 558983072424293874388121226838016 -297398468810676764375075678033281024 3498333307241224833755847386464256 2172135813550024638536766610997248 -497542492153141226092776765425451008 4484570024723372227647493176819712 4139140853866902244562395805515776 -383383185810012861111788656140484608 5277884421884219358487274682580992 6692146718869221279295284759756800 -49088448149466270175383106193719296 8194253084577957563857522365825024 631105868181133630324378838237184 -838678406385377205270526750911102976 6315470902328841326167624263925760 4917371856959184393501523096633344 -984684754050627068665273286586793984 4980912135612618425706808768200704 5968446990534679100381820318908416 -977381878900086287666533868406571008 1363123537737523992276697528401920 1248940342346713480140385234714624 -534376242425152386500058591935856640 3419608981870116034715292369158144 8938882644868535036327209258188800 -59693499396492890775708106324180992 9611292133905752129823075614064640 8197156350771692602224368303472640 -60362573230843594960374105253085184 8949173681881888211844996561633280 3344062508759823531693698914975744 -955672165781648596490271646703157248 8991945469913700148908823437901824 5430007934797787714596113540448256 -305862198371833096175726828409847808 6865981055056597418399981809696768 7321676044346517474144682067886080 -322240407467291011254552172653707264 4036582635247455473968439747411968 5137653482668432575110764419874816 -706072912884178422455856716943720448 5680956808658079113303670785048576 9622381864621285031896675346546688 -194522656793194201064554089211232256 8072478218961619808732082243371008 4161169013224994022078797678903296 -337156376365291808621063400595652608 220037700980299533125505058340864 5086907529434447548841175438852096 -59735259070707106879497918128062464 8452952489453728087454780162572288 9247581394048320518716613302681600 -588072634934809970313086284999950336 2228212031779770075172074361454592 8462890673654956073469477979684864 -924591074216156702021753608484159488 3684123759486126614527091102711808 6699561044791656631038410800234496 -356591221219149246428525464886706176 9805756715895665892130582796697600 9450107814862125874837259611537408 -745075876203624611841445621030453248 7461646188487450466474930546409472 5111729920893909012531881577545728 -183877733645935866101231852904775680 5617221662897219989945456753901568 7567046952331012211162321155784704 -124603888857215588999253536521846784 2637507086702198669530061864960000 1379105994171317985390983666204672 -910675153298271436347272335609298944 2685986066944264851386333935960064 3750312878223990007563829590884352 -448863697697144665472091845262573568 6243577362172056464573205611282432 9498390795104941141033773879525376 -425475750697036858983472898131361792 2411880999746655315522344017985536 6558203855343696174688961908703232 -663407810717662578471017718757720064 3796277618928325213027744127909888 6190183468358198630128239274622976 -655349706715072040608629917770317824 8910832691222292596286196522418176 2519944477549984072709355014717440 -417747141899033190937085504403800064 3102964707190346899702068776271872 8839872059974753185445252543021056 -122988620431523392528340913391403008 2834752099039817305036937993650176 5557415133712041033397489717215232 -379825803078673788577193754902921216 1172880560780589942343221792210944 9221870843808882643971254893150208 -261799946484960339259159774222090240 1667325263777753024094896457252864 9287341545014901519449859586785280 -521478973795034055678736160876658688 3514400763202367686813741523927040 936900506918034696039572172701696 -431804880337158756374684566699376640 3625146250755408393825608276115456 9648795457152040987353525184888832 -832661446146718968082559851663720448 9429540371576169549444036373250048 3537052562162496800230249148186624 -377854598192604909453534884979015680 1030194239418943822336455675478016 5299788818264020254545016455692288 -611996711864930374619831331968778240 5391456514501140896488933933711360 1616471613498588332655778769928192 -208115806261204108040792043077763072 5965985481967773022761068450021376 4448578194350160194674586124550144 -383943632134952247807851045215797248 2042050743404690679413993482747904 2502499746975242260666667583406080 -4698394990421591222777880332206080 8025312832678906066088825311985664 682668826915377534010250875633664 -790640848382573321761290877724000256 5199934913863455203232271654977536 9184584963915599428905032291975168 -405894747825899670112622498409349120 9511106506828856794263509706735616 7691518561239600508997642978590720 -67062431905993628607411809524121600 6888244025411259490759891350454272 6103994288913043662097135521759232 -707622340017214996244180845084016640 4790641246587005830166347985715200 9566356188357002206095967963316224 -556063724439029546782860309719678976 5197211314616065316534154204020736 446270159643688825987497885433856 -447492665655071208101811790276460544 3505375862192195208075077899780096 9426321789484880292993937612734464 -408199914634977074629264721764679680 2857983206544876974202948220354560 7978172432668756366098935098376192 -421229602705664345552705849927925760 9023274596191359755256316399976448 7340178624194583776896182982279168 -437994805901573917583474650486145024 3791927651884707542879286492921856 7257621961386804533533843537264640 -93825634404084627191887512670830592 3861340696245988147457011178536960 4555966247183353443608658609963008 -983130964180230804481800733724770304 257455628598165236674986856415232 3815100884385565480535721898934272 -216990675486622826017519103427739648 305242528441988316150291431948288 9464057869808477187320056259805184 -337389436845946488681278447512715264 7961745559931815906945031775191040 9315337413776868574042860583649280 -516832146336774486111163483875704832 6741226923733342408280142612791296 3921600141397405808690176299368448 -593391495474197258705513707137400832 6773349086963089929319093656092672 9946490172097038022384016909402112 -677639126815943400705455206919307264 9951979879512734126254463635161088 3649851507612899026349811767967744 -388235710076334657368596013052329984 6635024548100513224344384577732608 755276957699136952921922058846208 -726957787514900690334780109757612032 1530568398033340115097214057971712 9952179595906040509342493249110016 -889291642595175030136604026592034816 4331313983204213439885889129938944 6040448801813586316376147547389952 -904465091884623846229535968878133248 7702984783231199321605228319473664 4018384624320670699915312397025280 -758707905529419090435985047270981632 2007727748463051894569888783532032 6006398082661415382641402624081920 -401369043989592329897786397740236800 8992298909168407160946323263324160 2611208594772834281058255356559360 -850330175642990511694890760723759104 6888404075796654581840954118897664 5641779096187905195517550092353536 -512851514276439575174870710651715584 1062982210481964242495506537775104 5369543827270223281994087666810880 -950502377576065141061342844086648832 8604291072029642902282314302095360 2880658445918412670036223163629568 -243341950389470501914739260740599808 9371976633522143773210185641754624 3103356916000819639544042359881728 -785945621226006025752577132982173696 3881221160121325178822411249778688 3399028795996446959916910467088384 -615769080143185122918009671358873600 8230585206359852817040976694476800 4806418517166501302877059003973632 -792975601865634437443744504085479424 7895448550754851485513167142912000 5541643467679643492499013945524224 -783248361638667670456718053936726016 6394712490437726665695743122079744 2956450219194980025052496807329792 -197714112580011914675038588413935616 4097546997029376122102359026302976 8415223166487726414099059411255296 -857113123668512202549764940007211008 5786254807625454687431580733931520 7988840674777836711266308985978880 -783511706093649840608130442314383360 3921123666797920967896795021574144 3834260948931470304370638746288128 -678857701259130899415487588675354624 6527855538130690483137533219700736 8817570433627552451814129905172480 -349350830771325684667909056596279296 6429624137836539929085305308577792 9001299427214859625146038251159552 -680639694159264468365407892140982272 3817181987231810853433316814618624 2952570976356207852401670894911488 -196387106458856484408824357393006592 8722044191801435877654239540936704 4828006509250891984324347721416704 -137933983702203503160173035635343360 3800401191755355794837465871679488 2765527646464960633071915908464640 -107220555954024785579913755238596608 8193523826425289943179352587894784 3247228504647905430278045373038592 -18289480477994477889904959257837568 902538066990112019546650699628544 5250225891107118442783163820277760 -534780502988564917372546887612104704 2583107672379942630331556957257728 3623313247942684302541575761690624 -219962416631542028870231468818825216 5464643849423844984543314503008256 1626029651389926974267856120709120 -120625767030483955949084767558828032 4738310582519529003011748340432896 1588168269937905213858215561789440 -772051691565793653899683232495960064 6057050266532751180092937045278720 2713146124161646349855666611421184 -784539456808841640159994880504889344 1174658175394383569269332348239872 1574328563004023849231843177005056 -363059043966310320532958299591540736 6465214116082923812694746957086720 7457514664050766229167592207024128 -187909329008716639588970308776755200 3573132973371011401303612394045440 6511628039493176014610313900982272 -183856841156196916746319211318476800 681188681571390975272274985222144 3206298810035116735566852583849984 -448262725272265972992397030593658880 7704514359171702403440720744546304 1452610009666464989265233065279488 -402497894883265855840315341046546432 6005427082679337247491457630076928 96484121590874970307259254439936 -715356009912406747413938188113149952 6726285398681584512210793928851456 3005542571046990468636071312752640 -591894444024083787725460530477924352 3428579274517863108353486797930496 5013045814893707069594950734708736 -492791496073482007021065273130090496 3034674480653242118642045028401152 9402432224051552365612135507558400 -328347309166967547363501594525040640 7397487045791987205828339893796864 5269534895245389430193251004973056 -102158883519053980532192107755995136 3463915081565086431937956870619136 4882980989193458356743153618255872 -41219022313951591955604719890595840 6108360140861489453922029127335936 1444433879153603855757946298302464 -39062041767169232825199523964911616 1124101963704910073353718925885440 2807016879505163206467436775735296 -257289971440145591259854457213550592 5390066755262387023445242805223424 8403136216876350813229987838033920 -534566607014752246799610969875021824 4463981159606539326952477548347392 9489731870177628503668893140647936 -224003088486363950309911852098781184 9073777657837845084045788372271104 2384351644549231051382164446773248 -511190709713759994026790097153687552 2865547523516604195175522149335040 693217056172754658527408054861824 -162038801560597669934455793209311232 6785784674089672643184527688073216 5517166815566978081910219205509120 -944975996400002972616428037605425152 3193892519570779503110192376053760 5264057680163876904140210431852544 -330147547222083652076462986712055808 5122701127757291804594222747615232 6572777135476536203603304874246144 -746643886944255671777057251931455488 3286938058393616645827980601327616 6610405024508708787216741694439424 -527012660395187454577496066967470080 5619049317521202486058942011015168 4970218538913590404033435442085888 -879526317791035888910028909234356224 6789558755839117724148945649664000 351753780999966240286806846210048 -786755428367249748553600329026895872 9228060703056512703034993395367936 4444037692111673564866770192302080 -359034960899094356840854260067336192 546710042407057414145238468919296 5922737894766993688172262932348928 -100584488391130971552540618664181760 5392578441977999473779581869096960 8240200709340470237043432070578176 -701206802162080623828636930456682496 8712789476376329908925711773597696 6788223376232135930277638768164864 -812319643112224729464629109503033344 2295601507453341900256965910593536 7779835773508393447593899192221696 -730952041911109566201233206656630784 5419315074889511475593789017423872 5022367049229449803561337207390208 -314252152626734994682646101932113920 4455412547058585470229640707571712 9226998873321747168036959490670592 -409315911033572759051252253570629632 2034113778928032740147272544681984 6672493554975844757091185611243520 -786558828911545070171410252733349888 8173943696255642017050504330215424 1016006768450910241245578016063488 -484460991053792908966556302825226240 2846222660652997454132087894310912 4846699645816705398237883709521920 -910859160490782930128107896234311680 7776230600967576565015221339422720 5174133444883397190208593554571264 -317229167420590735194367983012020224 2053855655690405771803806798970880 8554426821070358313189269254963200 -532507347061644109914240461498744832 1703630165787751542247597256212480 5078937221817261157232053453848576 -665565098121646110981352486718144512 6929937540144590391823252055916544 1918471160018303355507105750581248 -949671690670052875828711385175425024 5151999231036248933403643747500032 5896938355381531214451072070320128 -954461266040442522973471890462474240 2204979785278061163440189185458176 3774552422876322933892786182684672 -514274235901382475900522396064415744 9383723228760402045143747842277376 5362696933077034419326851720675328 -180636615606455990552069996070043648 5111042760299017785469937349820416 6778156601289613922371856372858880 -396958395439977903768123879928627200 8254150041309922136903109891325952 7729182263351310174179561738076160 -372496436222075644912292173445070848 9415500200696793249150256396894208 2425236432423768201547049074688000 -530339041250970196308915484834660352 3844848537239608561753647761850368 8066903458211382924925849397362688 -322963261229696360220421273759514624 1580580733574398378481460157874176 6529073704909206053781188152131584 -36561909629443862393521583188606976 7645605727175615747413816360566784 1471466558352214047608745981116416 -231966779719890784265614756604280832 4072052387329535815060954099482624 1852348038317126765608460592611328 -325474171927224110352020835944890368 2364589745967598357868051347537920 7100190690653795044591686945603584 -345947975749196639533998533802721280 1918518481440155202009279508774912 6366244227287089358162407347716096 -318522688788813883930362467101704192 6529453016127184173383961697845248 5776684969696716152075773733240832 -570136822855952482368310004001275904 6866281965891641066011624321581056 8355752037983796887368766897258496 -751985257845329148637653730657828864 7652379711969740426908143554920448 4306340958997470533621861771640832 -495911876328945138070929413762973696 7734750843873309838155001207193600 465925810342340506453327944351744 -949959975054650065745633037002997760 2717389718997619170514251370463232 8283475883182312956776834360410112 -276662378206478439574374732435292160 7587295771636077999615634502057984 1732271487427091180416360303820800 -956100710999900768923999144060649472 4826988537849865294284559862464512 9242806539722781465052726043869184 -792208597196256062658389085442277376 467479532806884279272155142684672 8483017340253540109625234502451200 -475281793659737348114427361292713984 7504578189618463993987103759269888 2773686002471743708382426797441024 -390998804361245668848376604969140224 6399313423554948576750000842735616 2864553601942656433642359775821824 -249957856958127724661880082642501632 5010918650894511076057936016965632 3729710409404028738351016659910656 -630324202674165242992596067693887488 2891326189124633288428903351713792 5306859517066737091732601233735680 -352067036183870375851699186348064768 5311109872312717851197423172452352 3883106467123684398492826464157696 -649925464070194821026026280718434304 9183459157330877731897324370657280 1719496152288653648173197298761728 -402564211569426527869314295171907584 1014692452962873643765976616927232 3378548915821397672737404390211584 -661176431025001480144737249477525504 9112064202848822946792907391107072 3810279976616100434765657032097792 -512310627041496499586624143350562816 8046462805053403711563977761751040 4420656690254282852199298871853056 -915002379259981677791648923338670080 654791435907392865624008287059968 5110264851386339853873208407097344 -632984786389993138243222379918524416 5985662786280367898753367434854400 5985429646915835884326838480142336 -28614147158864227657191651085910016 2501369095761252623573142076391424 8395142074348887025455147643830272 -798800878990055879874475223360208896 4640713045325540760435057196269568 3639873505451391748251449622003712 -477224980978441902361217678171963392 5068221646076676941297644065521664 894313167497400877314200817369088 -566401744933742045118417196332089344 6033506721379868241175507298680832 3698056290179931058013497446105088 -154473372646063222094569585258790912 468605449902419532343750023970816 2385590817138872502693727192481792 -32472684720051762250379266225078272 6731609016830561167999774662590464 2983954741676406863016818466881536 -851154824429149878803980783368273920 8051172813704544626190053260918784 4424876847729263537659212506071040 -929324126782955361776171528065384448 8378376726234630665938419014696960 907384160530891221516684034572288 -717585785533158329941927613868015616 5987563645050914730528647772372992 1128897338752568515649878729162752 -763630338923393195812633579794464768 7037511541349951927873443534471168 4901281566945895162741632826081280 -47833019638437891704917961346121728 3436476763328121859767512864915456 9069373237436583303170150612598784 -274548433848562109333904983716790272 9526226720939913582485789594353664 4918398189884787115697372043149312 -308481751758813688957182427009122304 3631175373425684536945533771579392 8583889695039313195572100014800896 -797753615350447649261748300168560640 2546564000434813230391814059458560 515469275943075425498248918335488 -331455949950396139421246537645162496 8536725483089976622971939419324416 5972237600335155401340823239917568 -289139627121608892133078410389880832 7272516037639631722980580129767424 8144631313843036770611874177744896 -743045531699551492588637264002678784 5959649222136045838436009622110208 8449936253356148489541364647723008 -690478421316951562853126159105785856 2204092555234546967381292863193088 3511425364393660374350036086030336 -446057014549650820673708850774278144 4256420454067228382706417444847616 7629000559876245480473675813617664 -208452270282469770314148513604173824 5903177965996676146460917892120576 6190247525038852835825140040204288 -89729590199200805600873052721119232 822980077638226877400908856033280 2545615768488034069922311514882048 -880329337537134285725151402274062336 9457730332265668978975480104353792 9756013730347959103404633158057984 -696367084395640385074855298818113536 8393347288537862683096005035950080 4519910340210809399219242248699904 -861163289448721713654897671497842688 3627192871464476648275679498993664 66085598601459805256647782170624 -693632157504216577018208533725839360 4759779095991805847442992345907200 5065513345291528742055533818675200 -317916653261288260172231622889832448 2732906389500383425878494730518528 2837046956472712404919577288376320 -614266983225537843674066856005599232 9612691269341067152916736792068096 9266167068404435046673017162694656 -995364618956611483381557380706729984 8099598785094551421130354901123072 3849659398038606924902742852894720 -652875438303768607326642721020444672 7811788286082145618114144592986112 1484740951888751609146900823932928 -85572578102752291757689542207864832 6990234792382781966558348770803712 2845369060788484063837099084742656 -424838965461705124244302901809250304 2137371744121101847051974190563328 5881364440811113995787531922178048 -505523901012938078269662332555624448 6964836960724812838162357020524544 5096381613150536447570739166445568 -476957569298335057451112900927160320 7192993112210895340501626318225408 235468369493381654773108104495104 -724452256132311545877496965023924224 461002380241191527335283520438272 3095816915975965606549615686975488 -405152016306134996044180255265521664 7185612711214958641168284905373696 9685228773375672352139087804628992 -829407895025259172202109108129628160 2818724445776888425501254855163904 9327403038254328425338126561443840 -528158287178275095465466226844631040 6473959801313549490727513101434880 6279566982017027481645678285815808 -631883111152295632701551461238046720 2032989967954749662007963269726208 7320722482681462728632222061953024 -539917707548089766219600647608598528 8642435075645705495001050617217024 9274258274564027976849372886335488 -505012747052898315052936156680290304 8956365022868655827418879392481280 9552315989849922318627832642666496 -655555791046009928771752132962418688 9204574203920744553577465509838848 123373270746091726593147336130560 -650812305576975490449178971540029440 4530574373127798832933824586842112 4450463682536791923839874703032320 -691743632975455392275300077826736128 9358715390884041856643694176763904 9195901504867468384568995582312448 -722163778256827070419054209112473600 6295622042340948735535657672245248 3543990579251666528383116762939392 -211633556778940090334975427042344960 7767758654502468319109109853978624 9525463209380720439905924161732608 -162321018235390166617479781401231360 6562089768000341472550469077303296 1580496249816173468505186662088704 -163654271642684520902450764266340352 7462540203516264623600084715569152 1880430219078337497829566494801920 -505083925329987915488516162044559360 979869234446995668976113519951872 6359668099965138871397845246672896 -943490070852198539184675057962057728 9741912913673047718905761027325952 5682665455945106217844458899111936 -991312466491759916923857704149057536 2279729127411598793869348082548736 2825280013987580607702740651474944 -568244864136521909550053931968626688 2661075409315673589656895744901120 9519902930471279452422689091747840 -19615848799228107367372978368020480 4210343309826963507858933337292800 5330635189964581374400747167285248 -280848458338092674649888662757572608 4122340194628381248087718220529664 3553951881491101968837358653538304 -296424262476922344903829604091822080 7554329459912460912556974717009920 5320413408920667564588045080461312 -235225393173865795043751061190868992 4624974050055564352373033753640960 6369353474433694591788427180507136 -888322240197126715917390226919522304 979313796149072022136619347738624 9401348814428716819563933161488384 -614733459359763927634055990324756480 7414052629966555789363075021275136 2637032094997441791934336316997632 -757611474960578947864082141079928832 7625290190909376172804753988780032 5557563965846005566111077961302016 -458993400124434088534025102344323072 341544613562487415127637615443968 767413159775170005805416465825792 -456820559365281102648806726745194496 8863796915009468174743079131021312 9954018184795395369389666607300608 -480744317628038345386841863773749248 993192611880184339234774526722048 1354195450105953501964429984530432 -776213458062488777576811278584774656 3051743785222694942931449771196416 6456875411594453859696930984034304 -4151216598571488851313798978469888 8469080704773631938329522508660736 1062943004987771167259044266115072 -988789439229480037376594231307534336 1163420344835010953767137853833216 2240802244324723264939645653221376 -247902663460012656834915936900218880 1284007132537221803412863569625088 4513448509078450947964052757807104 -213951885405492077331292385297039360 7101034704061561698418467463495680 5693942181989108599260597144518656 -528734710726553528365935007486705664 9891463892972523413407457490239488 5477729121590981716992749962526720 -740594241838484245157026014265606144 7951058141856828218083897413468160 7647396316160187446933069433405440 -846823525112427669750226999847157760 1318259743274210046931029960163328 9072872341674491912873102859567104 -320033957739282461504444025041584128 453035135110421599619083638145024 3363447767165434455972215902961664 -585806360258874536385404996757225472 8418356661511944714845833532538880 3446028760733936375056871062503424 -215633636438317772884931722134683648 2818336614977139108611787260428288 6765170121246252132872694077063168 -393405797934164017464007952905011200 4126034586650076977814134010675200 7011476033500804771306408714960896 -799184314844174128396733446166151168 913349449146338743353105931304960 3592748575774531270896129549533184 -929225897210489398198469787136294912 7131067257072945826459495891468288 9048318564865844242604672340197376 -952443212767312660448318972269428736 5617366009562059468844956915859456 1650615564721408123120823883005952 -361156462338151722651577296500031488 5606085068221140163843596249726976 5864040834457022212708085411086336 -521453138438819535182457641801613312 1372999689945453791841900380028928 413134180397811588756739350069248 -95810107993374290848113045022965760 2527339088610309057044888764284928 9255176799138368518685662359060480 -6432963049193709709530401326759936 9116516733665679931050877599612928 3940680012656086185050480545103872 -843221157232877918745344701720690688 8856743560879228925143841043906560 2338525168582658411806883267477504 -960040620663657130028814818812624896 4956248485119069665018131624493056 4642379702513189643456688032841728 -186094179683040563601549553901240320 4040685364977166098016784942628864 4081600373593795863354658764357632 -239871263715228046854794307835002880 4350467904462807875998421461499904 4364938860314499263100418279866368 -109348166358323787219316895435980800 6795237814959065734745879574740992 3123855634504511247417880032051200 -810820955994791228548071097674760192 5397578465587954911470057815015424 1294254311216838295700225965162496 -904206007726202243757128062047617024 6407211756614358435853648592371712 6319655444774819645133937065328640 -505564480788348506371172546606268416 8190007441609667321905136271360 4779461076115034134408761415041024 -724451599782468482346684436306722816 4462811681977177306613827816652800 1542455474642427404491522561802240 -453691519425667887010338727576731648 8404457698032706968398372605526016 1168467042064002508368295279722496 -932803408120910469177730406765559808 5006244902022772513262164751941632 5257675079849751662517843681869824 -665879684061132152825864790883696640 3329988412953949155450886614417408 5916595574910432031630453962178560 -785834944306327003135055990615965696 7067938229713989311380084286816256 524164439126914857264142480310272 -160368874805492420840812837662097408 4028095109386457181704612401381376 9549969858161440797431916029542400 -366658170726626502595828779426250752 6004408248558692863173705989095424 4623672047321639745459785679503360 -277480396323634552942705338365247488 9353742582389368937443559636729856 4525564870519495983793713228808192 -329375643846350811828605241949945856 6765640638243321303023413020852224 3655259463672559468861927840546816 -798085516357962823829393274258325504 9942117524401856076045288585822208 3265698237205890001395623504379904 -266353874615428839833706006503751680 7477577201847022644472463409283072 1989190783174769875559603274514432 -210532148378334247112358449798709248 7526611893611631735965865763405824 8926011965432370820576999775404032 -137774730733085745316975801551290368 2597983398445547861876941114048512 8249906190115593556063589446451200 -494821754086929392673685171710459904 9876385503194619864893688993808384 2974980510008775278772441239781376 -95064373211388369446774758438862848 8122242778292570019915017148694528 796370022990305478955994531758080 -168871998418303829028128837645369344 7540876133167918705337181665230848 3390726822562534345428232476557312 -312011132102830367604530823372472320 8564606458458326708544552954757120 1607254244646541231192815691628544 -337069318090583193831817314641641472 6457172940776281165852683855200256 3470522026833153026234642258198528 -380407268564346857242180185258721280 655863607360119615239563337793536 6921330847285239467690769462067200 -450092839688649296135292316079357952 2943407623319176303759702739648512 1630077447329600059172293439389696 -263590623299439676482527687581106176 3115564400337847270241591409770496 9642468240380231561203104041926656 -679335304980605644141903383875289088 9483518628824413483755194202193920 5886492869477464126603351837114368 -833571145357692267073017308594044928 7184237611792871905915576147509248 8596842001506846353935288798019584 -445834857149657877662655872636026880 6341497595848720591723592526331904 1818490887614337898929324795363328 -715799132088618641424644978721685504 9927243132331024966608582717997056 4837179387384438812335639518773248 -165258329665318184024835774090313728 9289108451041563822880091933769728 2193330166132209649918049723088896 -557939612849412373297854549619376128 9673503817937502023380303037333504 8594046314138451715276931843751936 -235715461877666648037556353838874624 3130970101048828080742888808382464 8741124798402654511711316932034560 -384928817609835956197640381988339712 3534812139616779224486447878766592 9958358732752686442516859339145216 -141856493027049150425996681491251200 3535384067576589266667012140040192 4669756166888714091454414242971648 -550650128628140214576385946302808064 9208032228325270570168674328510464 6315013837082528489232739015327744 -532148101701589486462705007050358784 6396206092189086512378538272751616 7781163662019440955659598658797568 -310115780913362949166715455691292672 1308510619082148838832781511360512 3417283957346334859994930184454144 -734223364944182477405816545607680000 3411335331868019164503012257300480 7341915294061100461092051775127552 -61845960479773731685182567889240064 5699432197966152613981841747083264 8974256985031844403872569036374016 -652827961327199490365528179210190848 2975965132164447792567773332242432 2333102520422015045401650418155520 -548470944271936733061368714543235072 1237493319448100076166741149876224 3969629773167333471048663897735168 -828334555107480951120735477707046912 8532809632073096270357785095438336 4458050439063792402922484661223424 -843697052146832021125757280410664960 9114070270255075380844798050041856 8601600736092081406626738087133184 -988666416488578802663140161113554944 4221164217079705943380276438630400 3620925407088471765806705920704512 -614874116301253277861287405253820416 6385660190075588746979034657718272 1762417153137452020416147154272256 -476430285223889501697443771728265216 9771860411901675236193718463627264 2344659608951240692696188652093440 -712414564247040864816284748107218944 2920656554855288942738648118329344 7568983297149281627066943456411648 -88470266674167420180993635717742592 3721580409113377481649414207438848 2794838503093069010577081656934400 -190017733955672713432336099251847168 8114389933757381328964308837597184 7267791895702387560973323607212032 -465850996497813099394456271416459264 2666517165977166542294197395783680 635167019174604744732454384828416 -232769280522235185307976120569692160 8778508282272485435479795599147008 2721135712150728421723539576455168 -875992337783038859149029916748546048 5399636080474414038439178434248704 6003344638129291682800061472833536 -180073747383738535064341291458363392 9174247828964351586222942776721408 9055434316254353747591703436460032 -320985721796731402244971904406388736 9937282960726271087548316528934912 8218527665525734509757407038537728 -819085685977589231047808970062299136 361241015614491864851944520548352 6668956365769927745741937004511232 -25757901279240058299941047374970880 8839346581559942024285141923266560 6088699277060199666939332338384896 -451237488229327803518065226129866752 8874011340043550610943102026776576 2113652857829604164057331300040704 -762989965081644891640809054586011648 8622647041033419575825229007552512 9366764258389569680966598904512512 -619096711438224458304543503438315520 2192129712499539527450781412229120 6418649543059128539086603354636288 -798143103124456961944371099747745792 570059950041300470992675335569408 6264006273600456252836649872916480 -224071753464906663327513597158883328 4110588495350085693360435009421312 8325075937114341963412186079428608 -762677742774842342009271029166243840 4342233837585512689191546769113088 4795341561322997224541128493105152 -96287337382138956609837868697780224 6603807627308248572305580079710208 4190537244350245211457280922353664 -228770428451921734959231626966466560 5010159420649081683624094385307648 9258410266724566673940493761511424 -478366985104631267653395174840598528 3075569415247619783222101662498816 7117888734364696244764803508207616 -283609785534805248107314530874294272 8081435399100075341476187785396224 6131218074331055379075219452854272 -212041647945792419726005201547558912 7752733054003211290933753905414144 9461756390104088049277690382909440 -232620220608465200026179522604826624 136228421541145710631529117384704 7622421325573908413606186247520256 -98450665200787630882955260959129600 9919257939218928523273223484211200 5638455201054920270843593594241024 -707941848732991667001289787085684736 1834811311365348759202720080986112 2507942054742588243670029731627008 -637050819587528111318128993706704896 1366136484222237893147064197447680 3622673665128000682162740977991680 -635882404725891835787853277037592576 4094948307465948970349385756966912 3373199883170453678935558315835392 -730018617474355773849353353919725568 3392664816041751518194385662509056 8395296655273291132142169513525248 -327687664237567000597298011065810944 8138506355525215483699171944300544 9331366979768126175615004790751232 -70773000201581937611283090473222144 5721958163162469841076356758110208 6353184851658514602616761668861952 -222527033651728359086482461160374272 5309686264925749498673830274531328 9187950947449120287844687274835968 -49495122025698126709511535869296640 1538200644688760378733574777470976 84380662398936141155028560773120 -959245735062872039998308810210934784 1670333741659606670804568151949312 213686569467516576648380962308096 -777354097803396707014333276199321600 4371143202851137014079173305565184 5058582982012099222614804883570688 -732013278454301553970788743241531392 6203510801677534593033843125518336 8300395803063731810708553186934784 -118483613558447750702484355563913216 4793267280246992400470160013524992 8507299231112979408296605529407488 -876539310523159474134654788980178944 4874222496962476907292009483468800 2975988680036254276463865834242048 -420484987246992560219680013673299968 9417361003463181335675972423254016 4003545933214361977566598858276864 -416420344189614920348114116778393600 5701374905645145860647158749855744 5418745104151998254047058125127680 -277691013308239583341129017520553984 5374182882140395335376514943287296 8411346967664904983443941957304320 -881473850211987121217885702243483648 9982614786985582849330554184138752 6394702606181070517667323038400512 -41879873057291833146240511885967360 4826809501840071793129870925496320 5594021252066020698019800834637824 -612116676753331203717927058924371968 5039520111527816272059185789665280 8576675810091282832401686041985024 -402891124010081851109645935355887616 2297845500545573531945524682293248 488630403237726753868958343888896 -477878487192389682421076227952476160 6600678964703645322688633346457600 3361072467795984353428022818242560 -212750265657921263311042060958564352 787425695950378485466349789249536 153304075157470752238435984998400 -753937998894779633931482696291188736 9131574128393891486501305940180992 5404561248224445818691993737363456 -436359627368563458375660390521503744 5815847388361259716642537828515840 9179467868668106115851511188684800 -109254617275772455173448240732307456 8249415549945690546478021194285056 1468061535090718754174999275241472 -775363429063175882682704138317332480 8817897786002187400406201037488128 1921304183198317209218936702238720 -830106431927542132429036039641759744 2930104347535943897893966568226816 5121864232471465621405270924066816 -423494130078649761338687444278575104 2273807308737842721301266847236096 5458085488898944756908148417101824 -736659098995008415354833191483473920 6498949224590042681700361942597632 126841346777696678776300520865792 -129045463305507669999973011908722688 1012591409576278015944484125147136 1455336358182310077156191073468416 -15549503529412823930272976073654272 6211311174652668592611977651552256 151005961844235681523854521401344 -750887789388981088307204861156392960 7346510800763085384914612936245248 6786562309777730879638056292319232 -836349252118634650473275235917365248 6823516055631545026520976120086528 6276692978753006019537810743099392 -219445245411965435843673206114222080 3043275585831760198846061635174400 9687399732744174234830891078647808 -62385909812936386707617040201416704 5598764758862472224052694906568704 8949983230018741105725765735940096 -48289814600791650963338799855173632 8224125533552738619330340962959360 7347784991177706575051770877181952 -495668470046552498508284170044702720 7304337828774550358161047144103936 7034657470917256524501795601383424 -59951681838168336229237137495556096 1704730941605939945083061552545792 7256328852812845284858136465768448 -969945797308386995797204541359783936 4550498511100187752544501145534464 222676177823888807260819573178368 -4289470962335646223221021355278336 3513930668329871764664824207769600 909014218697672383925513525133312 -783335062445647852722742048948486144 9947364320311375253176762062864384 2139822547153288886667122906759168 -715547658526549307670737234230771712 8213610328113102384092696262213632 2300032880506703850848826215628800 -84230944268433418225102884928749568 9557250366426093380101417696493568 6724169083012236250327057388535808 -533217353228990700377979721357459456 1141298884337013225081992416067584 6476922824403710703899903118016512 -780460894523351291662501863835566080 37081760914963969107512296210432 283554919903348164803617766768640 -745993404692586148297656498126848000 3026087927832990698288933305843712 988722071721771255756205303267328 -334880788720306946786284423400652800 3860373948345768676574161801314304 2900135860362453858439613667868672 -6170670442016813852686238848385024 5659495476272174542392208356540416 3142352074117679880282835714572288 -428731135917008154190674907948384256 5557683409121391763880277438365696 5342555124625190335871445297528832 -868819741727226426399578925519863808 5988298180718861750354646696722432 151292251251754620083027771916288 -694159615939917328031565340064350208 5447617334708951661483059509723136 2894316820378737191170071523753984 -439539523259680697758188117034008576 6015940476744218073578783270502400 3462240359204559132728457991028736 -712307119091505136097439511100784640 2722138047452245519004129835352064 2532282339427768247497158580764672 -522687788245874313932917900828475392 3462323991004606288869234548146176 1306941888246246216029877682831360 -628954566757459704710881945774456832 7602146869141047973344353483489280 9325249538725729236707989658796032 -431212852983443025122010675321765888 8487365299476067424870807900258304 5436882231395356464459490520989696 -176511299254940342952301393772281856 1919493056625361897874770280579072 9172293296672669305857636973936640 -287363873692787294239615440560062464 1831335346688524314290107925397504 8165324342243475580061653447737344 -576935680934240490314492003051634688 3003055546624543163655559791509504 3634432749648030966999374654078976 -646153924513162075271643031318560768 9032337301235892276739567727411200 7088398807994265343258914910633984 -783048955362057197692846207674613760 9665836808211258011776966878822400 9165960355685713480915307479433216 -342349795940815267144832395123884032 488690947679686363460087352131584 7316772806487460725936623009660928 -30054081411037313633900763488976896 2434478845856201543690938056966144 8110109498960237166882232951898112 -955819817150016298492966226177818624 4670000354081843230504882746163200 2602727685078503438360971418009600 -75996085126887555897359201474707456 6322732423364898611744945349853184 5185676392417492655745699357392896 -1390458956140226226634552275632128 4532512377368453352069059250749440 2363291556324691773493318789365760 -80210075330247413279571512255315968 269151221357244698616077177847808 8740505581305309850282594077245440 -16381607870722252844364306069848064 8935385619125174942324593235329024 6790747088663386000144191629295616 -426980801951317957161016531114524672 6310077793374946543073794797338624 5554835081374310498810384563044352 -289941598084845552704353647948988416 5078942860096884076665056488587264 9574917699649280680064745369239552 -119185209548558561913734495127732224 3514217594778767447136143895691264 547934390862024954573061080743936 -428868610790073484426484627785383936 6029204095676780223248831965298688 8212415300895670690009005269450752 -687744675399399541719950711777656832 6999587440264459054716529810604032 4597376585594374881857262260846592 -620506864564974332039654839022518272 2948648087048086225758419232489472 2905660892716264663472930111356928 -407560652446392310040775418947043328 8196255329735953245402627353608192 4181808094879674805491589628035072 -305636162678140076467896831092719616 2645660693172476302312306791940096 3849667917620376969267932295069696 -367313587869685124019546552870633472 1109202485612136621898613758361600 8437850759011795535313336549769216 -407682015450037240687165899997708288 1870230507668115560564584848818176 8164977905943282202806405725945856 -691534268885178295130867745238810624 5650909778462512152558552098013184 6758172106164361176608781600030720 -826497265307880893083093483902730240 4905473156840355791548322334900224 2084235130090990345596470520971264 -756340889362474828719839697392631808 3910003181100707219937538705719296 2023346707910235134886999993876480 -547042467779601142786333130354589696 9061603235707700140862317078249472 9782155099292242817186499232006144 -636110118562086072745020017675862016 2883286990958962385636520645099520 355466487872153622536750433828864 -470944737165227152795085683847856128 2970382402938292165380154631127040 9467855967652473903327322704969728 -161397756188964813964054460142452736 8965259386676676539383963457683456 7074744535267631255637780613562368 -340351694800572363225602169803636736 9143033893880218360456049068081152 5647916602095316081674864560177152 -816538191724128189056522350227357696 6945258341077595885944767533547520 9047593463702275959170184224178176 -546169180058118128694884020839776256 8564441411491295389070598965559296 9353624783118318585838488134877184 -941188699681270656103273530195443712 8563170811541867213519311677161472 6660275219256553794600757582888960 -125658545486608155397907231656640512 8716947846006714990930699778785280 3182475493340219172576300432883712 -756133920949904192476918139888599040 4398286943881877836441245924196352 67411364123991969039733642756096 -291545734623018199528717152728121344 9204373070649555304470324636024832 5006540598306967411686426393182208 -176139284045233914725214871479123968 9489223684232298167741248593461248 2413306748592605139549730629484544 -501679514696341312221812457146941440 7845128075745994755182028459606016 6464201377703212458430682068156416 -382053503069085799831693075758972928 1218051859274524461311627452481536 2376339187171274097874321658609664 -437642335211694139407559225484771328 4332590866183669708353653585215488 3178560414450820547723049360687104 -440304182396684635247514854908493824 1308631310416782797047992443469824 5381214905031892246808764260286464 -29048437279546738354802584549588992 3253247847467510303170027470192640 5499233225516970635039831043866624 -431952478030055557420430242231615488 8034744769686637408985883672051712 9373863497145100681790043249967104 -422669211390455454420082550925950976 8191867339084559207167510311862272 6504222580103005316234135035969536 -323854744730962082465525762619342848 1768196877116162416673310256398336 3370204556187036830119054605811712 -100727751411939589862676335524052992 3111077781880685134206553005490176 945976120316501634089302305538048 -29778060657307684783658812462596096 860798653817638006017470291247104 5071349627145935582592252684271616 -836486615195810878097510279000621056 1604345191273226261769851609546752 8386236541440015187956611961323520 -487715665333642037700715705255591936 4779244360395543850490322306990080 870533802780789114252537616138240 -328463791099371024881471698048647168 126730241899809979446854655410176 7680863298157909714775250290343936 -168593817838421111273333400742658048 9983070341709463559432676055187456 9812843066215941579143849562865664 -783543538314280574887584989460824064 2598794269815734937423921733959680 8946533531802061176200763556233216 -618120557830065413687755546862551040 76314189205963598797393830608896 472404818776755397043604206649344 -972235189320651669647040968436744192 3433415869141618101960592708337664 2249594810382159225502184918482944 -452354264583817711446510577723113472 2623471189427559185006054281838592 7784185017575111128658485696266240 -104939880831520380455466521877020672 5545970857029468815744154222985216 8495528371130839522594005960359936 -207860642566727689951736622863089664 674997159848963383372460987514880 1782967521923139176680265514745856 -518434558422189365567265465228591104 4760850664135686118985932025626624 7192832636648511401279161121112064 -968323556086264306032264866449850368 7233300863428972966764446612455424 2746209993763642124775389625581568 -274435266480528523858820046350450688 179766599381882837485363807649792 5915470650964003528777309152608256 -544905429545419576821289673088303104 3011744153553735095592151999840256 9869792362732631377868530512822272 -416135387864489339949762856708210688 9664726057544276341474517361623040 9449146699136705040637239308058624 -608815099801078031372811822851686400 2762358828106826247563083392221184 7730332469766014091306226038079488 -863365378894442244650127653515296768 8173857712736424344223181996818432 2563426132851754754416683918557184 -509749710423615878308090504068202496 2032467175843958440394226504040448 2476729911114532621333846539894784 -806639936510752622045604411959410688 7543128256001658596035620381917184 1433924548433270800257640988409856 -403073304004100707221212915436617728 583771767687910516000285951787008 6135269014036053037769567460392960 -274631744175381370185681472174686208 6604878673578178017057625929154560 7680155939216101974053146735935488 -52539888271188421196117893162467328 2086673339435420494508071076233216 2050443238029937882983567928066048 -517858324110271610354968494990163968 6702144317673000812261704080556032 4700707421797366085469931229413376 -975884872075289706693790860568428544 4294630345657380125374239039553536 6619622643614287654340842649288704 -369590417368967651911973025645330432 8212431779796116712562044287582208 1996643459580807830867855364063232 -862912845608652984044206867603259392 3562980738387421740222965121810432 1223599880685262506074664872181760 -173850519707668877301812583863418880 5051068374966336105512823685120000 7576667768163639551863212430327808 -429181135814066101658682257771069440 6620618109443193683249040795369472 8596196821854092889041974782328832 -753441918451456900258576505212239872 1997216336195756740842279510474752 1676241457727374936310534536953856 -330797696236220832545855022542356480 3572988152378600759124925379248128 8259515514472171796175310465007616 -164773125007517709716952907293655040 4374240646907927330282614990831616 6279352763864248549436546959278080 -499148029261629535425240841169403904 9212801226401971877762059689000960 9526235972811809166711912897970176 -726161184361376842167447853144735744 1869515415085868414521611258953728 2160615848968030256481762837266432 -84632952690115941038536980636368896 976425042476249617448530041896960 8155713270924788411577346516058112 -712046677142885285629971971849584640 3153707003942294967128747241635840 1422703632712772275316414404886528 -346561564057592336195283913420046336 2190348031488784403295494710755328 5741301330115128654488822156886016 -295720401620111487645102360030609408 4258474452309005585811092331823104 1604854890793400001214218059644928 -570730140059162237483123372023873536 9546928130783606806271990798745600 935823496940866018470630407536640 -582785268628637545292218792773943296 81025780501205353652206287454208 7705104666394650074519387684995072 -927660745891167569635875247712370688 5618234668396727909524052627161088 6186751475578338655555253067317248 -332744298875154409398666510697758720 8641037079207040579164392843640832 472828504097595590996017922703360 -937923740945305194435818578811813888 6255946419626560455145681032577024 2265275422587835157081293534003200 -958112264254773995626515770841759744 2954842950586377141748291149496320 8770311046199122860128141878231040 -647872745535456711269117062700597248 3266876854592132911479906929475584 2690252583372105569045879164239872 -848200288561829554217892491389042688 827338357055839705719523912974336 9427695634742892967437827892576256 -133648406998821808119417163848089600 2928698278215374207953941647327232 5455188059035371964735205048057856 -557375697223837057199541939448315904 2821097774110188760902932291911680 6656854430914270855425811317522432 -282491492064226936480843590044483584 3569326314503689836630375793688576 9293382576785178956497412755030016 -625470795706214205354371244200296448 6262344993833448286256971443601408 650726683687290453512258116911104 -307986809348985955033909765185994752 3911115566614784853514341436096512 3437796747775898834611816533852160 -266787272839651197543988373563113472 5334679366207158376453018711228416 2183751642855480988302801973018624 -878928090071309869223059632710221824 295374077590180982882319602810880 7250257804455839706839796053704704 -841857936528743422413038940497903616 2628549178930233542847691495571456 4210107431955416520912406820421632 -486918722042566652824498718157832192 3576960045502049859056410990477312 346505701850456466658636192546816 -463699061258304996011389145552257024 4270761000093847439616025340936192 7191058440628864550797050963296256 -282500789388039239365682972080472064 2711664608037946090054960373825536 5108748793213442237657360271147008 -743650450968706755831006577314234368 4164658291514062340712613690736640 8372909423037480180931163083243520 -363543347212300634437870399751454720 3493125583343995012529471583420416 9318436718358994308691396539711488 -122880938959238756515136764804857856 4424269825166189583723170191376384 578044010261570729533234936283136 -583007936692361636104822422069313536 2280862452719958652087394914795520 9494062854649262210961820801302528 -837083285924015316444470433823064064 5528760716429671483453893221810176 467817039610384010524670285578240 -576072913680686673717929060773920768 9776682303663007365465240753930240 6933236927989189159673660868395008 -713469316722149753453112067683778560 9967940889540361251189193625829376 4191624554603822028725220030808064 -39415825926866757598084087916003328 3895198032633675478210759129825280 4579302629340964965151328234897408 -32472644234746494531173128740012032 2293733330206657582912485504057344 3958339965294152394984117573255168 -801755063374858357822566640570597376 7438869137549475919808923917352960 1242057377267419691901336764284928 -740288980983146026464355486017781760 8300640565938006578845855158108160 68215960173177300578536945352704 -48513327335911428583598183220772864 7834817003099529259528356183932928 3636637589449063403503590255362048 -815603272556282348771144019010912256 8609475043899702630101524108279808 5991784367445597934098790362382336 -44254884583456384468711301800001536 324182234600216249659155569180672 7775246311948543984330707790987264 -717727138394987952396163091521339392 1449103939258987367765663427854336 7073754658567768713328562595168256 -826088726507858739464750464791216128 8211598940145814247887622903955456 5347171525023286445881424661708800 -828202949513028752494856621843808256 2868641085413116944443807654477824 4888833725373020926955147745034240 -414477738845225648554834188105154560 3675461118164755627430177035780096 5011268296976874988972767352717312 -20312226805749226834461378203353088 8337597612166128957287676040445952 585972494993813443240449101791232 -767049909869318604956114021232148480 7022030680874312036241842829787136 4288240819167025998360255347556352 -270531909852362847162948989067722752 7182918032603404244110809453559808 9443557659252820039201797309464576 -89107738009553349328641090671083520 4178464776579665506911207125155840 8561123788626900058022533549522944 -312736678130244583287004023012458496 8200404403000472915201862844547072 5081808876414523667567709897359360 -783252785256453018625113771959386112 4322987023497735629822339814785024 5997494821641018323985195182587904 -280534003674808592180183688405843968 7343474008606655012127189669773312 8362698177105451975380529173233664 -987264835785221784896622641641684992 3248244865777125873460491472338944 7180224912060661060937052053307392 -985362335287933196571543168887029760 9949489309119061905285453761740800 9051479310342073277549385405693952 -199965439800352966207374704961912832 2185316205940847792184071116816384 9971695434559557774017686438674432 -970092042121228449406573333696217088 3841217828924573222556354016706560 2401907888312582404277606929137664 -859716708882308239691798798609154048 890291110039096333565177228165120 3006770275131673342913911629807616 -266988045026223061571940153426968576 5328392814853181194563524652695552 6528616099318480415153085401268224 -817339521982759021799707808242860032 2160964554104282812439737999032320 279061943242074468993257760096256 -196275856615016522328824888713805824 1363211332631495921332834315272192 1383516855659799853779593885384704 -923573940119545856193162822853591040 5984599280256952172640951907385344 2092600994439337948578926425014272 -758853707763910327342182934977183744 374081824311466684983901664837632 6422875197622801490271904018202624 -27840269213587049383666339396190208 365201926926189585856381394616320 5779524259040492722589936440573952 -368978291586381182219506861756907520 3488661453592686143899244418826240 2581734028224879406411020129796096 -293989265746549738446248693114863616 9340657638702257921564530597429248 2140078340989895115083842863497216 -218285910267573548712407554794192896 9317577199281209063600943735504896 8770674764207359716246774194634752 -801275476033684909021021124413095936 5711919622663827956712979944177664 7331509727470887707596394789339136 -613740133754356179000472363264376832 754499820913938010897522926551040 5167590468756263282309844596424704 -491699077064419529578153325673578496 1155708505148800723468880999088128 8354473864055322511567301554208768 -470950308781470119476404462584594432 7251268312388634545326827235180544 1994156435158359949426591539396608 -635098233274343774064129525269135360 6592398706243907937286061234847744 5242891367027448866140786471731200 -390190064552785081078004524819415040 9844711770461987724108104862793728 7840072352323347503871053015285760 -18513266180092989318974206470258688 2640045937934300104085691466514432 3815352874288390686999939584622592 -384228637835277840283028751757869056 8824132905043381842930280209317888 9227739319045730194993913771589632 -101778612403182413465160450555510784 7022383938944745962323716987682816 1485081984744798234495523661807616 -386723578979617085354966929186488320 4000850246035649051208397619200000 9795068303067369161712891106164736 -760907129423943392355418310239584256 3826642969200043828255616223150080 5655612128647299218392829097148416 -428687403358189366241610564330586112 8198427902428672363405354760929280 2940035204803258198905368499716096 -734806371776139854814601201072472064 2056617442707592627390895185985536 4706747240845121960166437418958848 -880251601586565521460291507880722432 4552231572031048294330671007006720 7039564369914962718710920388804608 -740450787126243701793561923194716160 8296871651193027701253349572608000 5303077379301649442244823867195392 -308278683880263036464522440623521792 2247617063355310106121229006012416 9855014814720514238412773077811200 -296321238484100403393574268238299136 8707196080004598483118935955734528 392250457141109317540217119309824 -657561670243841213650758627508617216 3668408797176964047087923886030848 8094287082150400342019175801159680 -860926005931608525469618271569313792 6200455261784598442529901097517056 4165181023712832747897979947450368 -743493504731597942968396958482300928 5921154524033103462680242186878976 8317330048176968956032178609717248 -569930941256477100049509267070255104 77296754389964496394370066415616 466898428305250669915361498890240 -984659128325893768096846341835063296 6074935594214796576425799881588736 3956775637044264064472235793973248 -392229547504392949636961601438351360 1945189458160643809407949458112512 6320282381698753071217856890273792 -963674779203464445518160193564704768 9026803829131010047489040894132224 8290382036973269189718741222424576 -996470158222775631763569624475500544 8896332659729982119327259420524544 2580825442367333732228875887312896 -35638744808738329453279725247004672 4962752562709160368591157168439296 5544490562785527695341260512428032 -171371675557644770751738396471721984 4579804331153318622330270617960448 9127986934514518865703862825648128 -195392178626738547897266327408082944 585689849858680790339212835553280 6861520124326022891981761387954176 -556939082575772893708443302259326976 441323388878508681513957207310336 5392172386919895551747557576146944 -729165092954335157195399715008544768 4094039850589681349149243473920000 6302311383715454435291890934874112 -675835908653734249932083866506362880 5916057343146467315931589380145152 1219158248797047508314964088586240 -90855636727040024334549748090404864 8738238985943997884655963404763136 2600938951962654093667905099005952 -859265961539574563479899710855053312 7330478833902077833821900045811712 3832009886867878787799778794143744 -733561078970172477707128245525151744 6752121755057133568407551124439040 3835758082840202696994002273566720 -998190594052074008022910257074274304 8807498665155808086272800179879936 7928758288495238501295143193149440 -108118487178079804729319728426778624 9518576613842892069524123831762944 8996643948699646417716273431445504 -856003507517196987845979806304829440 7017768071182038025473712931733504 3160112851275901680947393900576768 -443397728658403422482270873043599360 1066373051306774117525475871948800 3289111088547641262765373298573312 -428138884971513627419041304357634048 9038519369983477139732914182815744 9610008667043944486121278309138432 -112360566869259939628107847104987136 9927609905116652793395766487941120 9260632471116752774370407686864896 -284130157228050479159662463495962624 302627903374941778266043518550016 3198924331304864608864814449557504 -709044240430826546401151533484867584 2784799414540985660761979022737408 8971182164767013149570628331765760 -541437285310062814783778365584179200 6530357448048046110462025079455744 6361083918456262373634114330820608 -350879263278760450478873777786585088 2535519561797164821336331678384128 140736696664663093496130880667648 -414729853882032415837117738372825088 9295192418513942172640309160181760 2333734025698181692749338992705536 -46112840521008955756243967392350208 9613901311034684069404905475932160 5470168610001249042946953962323968 -67674073710116305823441332740292608 2303639781539163939902876337307648 971030396976420763167342769209344 -340969464119857945929907141232033792 2031261748600743766011019406606336 8496830987935052421519781234999296 -798897454955152389513940413041344512 1035031903970088802343172022730752 5073250544224300000709073780604928 -61600292090688557533913961291841536 8586381782060241826124047226765312 1387073203965358832708457555034112 -963095078350918143235258227881934848 8772125047969396978429054622367744 7190425888396397575914071324098560 -320858813862111044709817392199368704 6958961112611872284407763512066048 3139632579656393144933271610589184 -439680050160295552426321140672102400 6681741232109706569486854522929152 8367256031725441974231438597292032 -122862329436508557636509425211539456 4047501031309317052954205413703680 2179269353258461977695118195425280 -339961357605284094091854748827254784 9239526453772954799581488077602816 4947970685836901544859925865299968 -105267627048217572018152623961014272 5301665310937112736125869719814144 9202475246737721637643987208634368 -617789964307157275316331998009622528 207985373248818575754064734191616 377384231596728712198422658023424 -532115759732035437432099509282799616 7379755316646679178464109736755200 449946519196750607725915992489984 -610304204047426795637875800828542976 4191402260516725604576882273026048 6875239018653018315096043833786368 -350172519540576320756059864542740480 7842933325961181845539622366478336 3876502888246771132933586601115648 -860047003057906294768578619007565824 4970642167374823510199634464079872 3981442595621146261713808489709568 -916141422294194774310297328037134336 6281923900519138456587195851472896 8252943487279709667758137283706880 -674647069795845138948846986809311232 8294362793576566766416820904656896 5215764797193936597483924767113216 -1059417639802536155507866095058944 9270661626261595355176296599519232 54001860376456572018105088212992 -999992136221917422880494230320447488 3536914398778307835458133950464000 5195198340952261226349502843060224 -495460168539174824029176316995567616 7919613413022505753062332744859648 165941200813552154351337432154112 -266963961112969854075758051235725312 5584715333058786468775447735828480 4182316689135728901676867344400384 -862299938490168267638066944329908224 319747484394262398981669616877568 1072975455850309636580867095658496 -971085569687967208864656855041835008 2690149057129875593555329033437184 4999423377837583466471174149505024 -373627912980316877265124522299752448 421391167262776344394139340636160 6123957719919350635007752508801024 -201206863972646695074639289815924736 8807349912852538138481924864212992 9497713835037085518913317447401472 -987424139059930902112610672585998336 5196095967969145396641699834363904 2451487526152996858817175118413824 -26965441060627946980444253208969216 4651874684582005674296338997575680 9445125960255121326705143495786496 -700164806346457975904908188678356992 1957769761873648540656703847268352 1204758159186601157314641943068672 -160882765190661971985565926345932800 404643513823900503790118106038272 7481296540147941713986493165338624 -324816224155441779482963736577179648 1604120517839257751373245793173504 2718835340762873085927982475771904 -77910705719067427690730500156030976 9161432924514965317083056631185408 5433292010366291848481832869822464 -330925078649538000548650671738454016 6921371179566429472997868788776960 6983254901809874377716176127000576 -663470218284844265365311888293888000 5685205321849191617372492855771136 9101662733335688139651809254834176 -687041455247194327821872510164533248 6294453046748183083470189290848256 1080635973734551764441506592587776 -682044612277183444480808011140431872 2626400614623037396129304253825024 7540236980186836420257904523739136 -857028630377945415036646081786019840 3701650376503007000121037411057664 1754228108165832619937771848466432 -227055947316794501689979702421225472 1935875734839512590506026640343040 1127363624293432106698294438133760 -83794657337886574826305482477535232 3203504511916900799292499241730048 4356415774679908084534710003302400 -128010861554737043188713509022072832 873619173575558976877920857882624 3723839055917450815457276781920256 -500282817214361007556335806841880576 3078452229788493536201434961281024 9941347571755442557722074541981696 -947965802048502813567524010270392320 8422563477746977651179811814506496 5031759295653981290955921875271680 -954624473828923324776392481038139392 5434767625747186263614664908734464 8137888693444268165396823250305024 -498343970087759788090071447838392320 7990442532233267349439519110725632 3878028855251617495898627791388672 -661882093935300941828655558321766400 6866453992842096649633887193923584 1045447884399935897379958557769728 -205705599939259611748247120228909056 5554993036398890833385837241040896 510046451254773622023366752862208 -920448760533583403930204569042157568 530920185848830327782567825113088 2094996863681486872589414961250304 -135317620053797268600699328133070848 6581339845677482716953694676451328 1142859987386677871757728145211392 -34444859873443214060152178006294528 9437178124477525420460072704671744 9761287369846979932372192674709504 -31331649786117394998237786722533376 8656388265200145821839625467985920 442627141626955655211570857771008 -226839920047295582255245576424652800 6755296503389977155080929113276416 1644737510736840193545455817195520 -816114565912286956377280793947406336 1231311408757710522419215731785728 7486245762381663756982584560582656 -552724805605396459298619277042515968 4906751746788577979679910737739776 1966029229439060424810770814992384 -616453797193210777022834727970668544 1095863531835471199578828478349312 4819687897255138412829681821679616 -848643517623787797855443799202856960 6565208821177106309222255084699648 6154635871655649334568809599598592 -67264535197496366858565137614241792 178076247026671921620301180305408 2429133075190423118522299304640512 -88823623900751784097675325544071168 8975781324898620585018003814350848 4158913192467658909472153912999936 -959671891503436834548937102737801216 3039955660398776666249234867027968 2342210904332279974500984703418368 -908634123625040684837852109462306816 8269430503856912190045847474405376 9739717717188370115462284942770176 -682187166042809722450212395283382272 4393630768413269610701153995063296 5831500559773413386330187828822016 -272753497042458099590348292430495744 3162727316681554401271400510783488 5970691264560557361589830836813824 -141365483661460190163456851995262976 4019933879786555645220423422967808 3805816029497277024143826585911296 -100564042619753792013612636633563136 3219311636369319642988970845929472 6920719035348305612708748705398784 -226483694509507440910425278512103424 881078679460864847734615018831872 9913528425673244032826671955443712 -943219853121317542486662684400943104 7507303586426756919787610294976512 9247863038325321432578187113529344 -388312857922700846329260712315060224 7587503290739081603038917905350656 1547557486344477968356558371815424 -699486750485778219885073136380542976 3988375649861210513702075706114048 5303878902102980684298446692155392 -381527292312634038780876573466689536 8373691624025358056121492698038272 5544073901942079431788963752312832 -564308659480278152102358213623545856 8201263186735719902595542503391232 1016836148065512278096722895306752 -416899223655609480167077954820505600 5423188875894993368721167858270208 8674284883255289427086424349343744 -148614150715505770884371631761784832 599332887467620168457825841840128 7286096237395262956676295423950848 -886121531231537052775444165890670592 474201046040951961550899338280960 9639923772391382476413386664968192 -669610063248442989871514493109927936 8846161199487578838482619520253952 6910967054429389301938334516379648 -896052697503551913431959729514479616 8915308783724808434488189208494080 8462424565348726631281459652984832 -518555537738033997545861282950807552 3248073663157146474112003256352768 7312414075713367546124645078925312 -713534269793160706008205991245512704 9604635785668872455488040960262144 4438322672616433536243564361547776 -215630494390003526820488708001628160 8756125428047399060142799764586496 9535260011102364527633365043511296 -542911682862513552219485541991710720 3603057296701826826324008352350208 7853284190544422238964167252901888 -661145544681237943999420871376633856 5913004425144907506500049576132608 7641690725064499566108191236292608 -935669776820366243083811500565987328 2606345253256539614264554808147968 4419325736204405297713709563510784 -784525906393423821560354585633095680 6847727840167568416125961679929344 5963901906130105438110424902926336 -519722858581619893400836315497365504 6750484715458716346258394003275776 110785018475847913165662111924224 -627383819126503183199261226870767616 3408778532654595537783865579929600 5439313371768427881410294502653952 -950321651522897027042985930131505152 874244274549446412703381713846272 50642440806607715340204086657024 -693798511481023214891874040779112448 3890179057131851806214195534364672 7937271598779785228903775316475904 -123142547151301341741889973664088064 2960427498896311653697966498119680 4632931358726682234396061389029376 -908623832573841311618913283552051200 9479937472378148236219364832968704 7157533612858841602098957345882112 -866882336121441806196917431733059584 5940965160914469715794135697326080 3069060531417403514258576113664000 -743299592935695347263872819632537600 5120436429706257574555311845408768 5693921661266989498858700751765504 -841389396269403781810862022300008448 7180150025520622251410701389135872 5946387643308892423844364936019968 -983543810357201755385335335559888896 6035134025621582291694093321895936 6967879280650055240449875765100544 -487891721487313683321398079759843328 7430739462686438238302640904601600 9813806017891406385989695773343744 -745866954051161932765919436754386944 4379601410527012826353054657806336 9027125116444831729802133723152384 -410858660722154150479815189049901056 209688145816541203520820774699008 1976531584832584297394307820683264 -208879503571167605853977716855930880 1057217514793290285769246495473664 1482824567529509533309844263534592 -891895221823760112458531194829537280 3650815705743414418392738869280768 6020362578007008940067920942202880 -760058705571607846160097270122414080 7646487903777887347869547147296768 4549592260095546354243628812992512 -664426257513959330000304677308071936 3492183499341139303401261071597568 3903866392065369157810159890726912 -156008213466049928389787023182921728 5904817604515379186127029409939456 2580700543444808055422437031936000 -928191722697767924247635248969416704 5824368056259835857803908162256896 6311533638638323704680700008464384 -661445269655755337048776462294843392 1251255080407938596979303899987968 1268670867375752378213268442841088 -901536759881276668072315843065675776 4399833494573275679150888693268480 2054014570131565202845962357178368 -714286854535657584874956138481713152 4264414059302690933702374813859840 3715556487180099447051196517318656 -445776349041428562979057102107967488 9949972055987134610322469211340800 2961069450296428572804107103895552 -999691285794198471784932866181300224 4984190677307486247342258658476032 2235025648849274717984325275484160 -648243502330820146431016607770738688 7599976955124644631252892282519552 2963170599537224765128173076611072 -349570228430800841542538481427808256 1522954341903746874909256883109888 7685983395979800694905956049354752 -307265427772416261493428528294658048 9538112201091048436222567072661504 8323051907912914967148848369106944 -942117179406349623180447159681024000 9438319332326277948627214709817344 3364823472948781972400448150175744 -794348744503337448022910267857829888 8503098105360565000830006293692416 4570197835895891897716359995326464 -218934739216810029921221524838154240 6040814601368785558952459978670080 8553170480335899296626077968891904 -32380312616037301805337488700473344 7407204659741150928163797767028736 9762999626069659720558165899608064 -2212193120839249647760122232963072 3537476063246652775658266747207680 2129122982090409000903510375530496 -498419416941432545921449380733255680 9921386765692926949562708276543488 6421486265766933637034065312874496 -120140626013116964467952188743745536 30212534624902393824312217829376 4024871599782789511876006173999104 -710671226393169233076026358389276672 5641009786687693046130228127072256 4174603222311449354250132532494336 -435868108558987484349154935634395136 7276994914747330401622258607980544 683084486900694779098825559638016 -117360037998650643891508423744815104 5480692422562377994770257048240128 6533485142078830380722494170464256 -228429490667538922272926228616839168 5083881203320643235919179685036032 9133553860270744184224588234752000 -42816604548524653428334590141923328 7874818859110580186973009094901760 7658970084692810008455880896413696 -179955915941159436161593148916629504 1849148474134550264182241648181248 5790280136382150062360498223972352 -272892076363732212593194845299802112 6341338518693756390696410310246400 7194683306508912208128763571994624 -768589651690471688311681646537474048 1279601590005576732546248575287296 7861250001931045077468615070973952 -121284113060236135862116812480053248 1462246314302846986267531973492736 2014652881773580813683367094517760 -469723394701499352018812597639839744 9896112227342291179425849594085376 4617287597243617584682910743527424 -392931142114499977448668759628709888 6720006131215766441701499113308160 4601413585407192097547907441360896 -858783397926383542104501560681693184 9815843920968168151617439537299456 5486021775687940701563236825169920 -706038978957812810149846493587046400 5441395777929329053793740017106944 7283650300515219991037008007921664 -216653801092289362177301369411600384 204758616922049755133779040534528 2428224974421885377527671089528832 -509723139736823802951735449512574976 1594013445952274530328713912909824 5280879191656954858962277810307072 -515086280309250336950490110913150976 382794574712286301837613210796032 2892550024862888659976508250521600 -897654822051818693170512301890994176 4031401797985482454661998930034688 7275841771775075643979211032494080 -577027224012096744073959752331165696 8324075199874979665184828141076480 3710036990304125300051217745969152 -311011788932949672641370521348341760 6176779450937918512750886461112320 3156747002828483157739914838147072 -614578614668130361882788165805146112 2047817167585008707306754249064448 4394413021604143095325859621371904 -222345295160992292605960950695067648 5317369475671206774068097595736064 6131064287057009422269520701030400 -45217422755760279695961436165505024 3960164015639090659385306809106432 6000879677235708220622206459183104 -46667066854948969904664643958210560 8460415005622457839188970007691264 5171382159245568645419796342505472 -319706907892537959825596542957387776 1133407066090697070313181838049280 3235477109274345875704157128622080 -176737296918399623618928941482377216 8278827137449404100978951376076800 6551193243521635033424909683392512 -287592067367434028814822098878857216 8089647666515885921273079243210752 8416952392804691358304789283733504 -283776210822195836165499037880942592 8464651219873307263974854908444672 737678169678142350881362897010688 -517522294997205955681431249055907840 6643270972225887347393480288632832 1337771576890996839130367426297856 -997211291495581671216755863531290624 2898803728926784686692831829426176 5955083664555733315735177094234112 -147613050582648721556663355907768320 29247713266862862104349277945856 5620106245767093425530507863523328 -155792912781910392684074180037050368 5344489162218257910147646425661440 7213135077271721640574142348525568 -675746426331111716082740614670581760 7719052440295291913416852061028352 9344398222306397002808148413644800 -415204010382931470406065835099553792 5300754097083364708738892382076928 3427880935664884908093582314831872 -43250034512833992434617381371772928 6492994842612263936623272802648064 4322121970546314072481617571479552 -956427530354847465852451638516645888 3034565302317536277209809583865856 9052624176277064839724763069808640 -816865225315763332673622349126303744 226660561833308464438593944813568 8648017950719403686593688233836544 -292330293292505843100071999062409216 1101320025091915607052183433904128 9105946723417283921420950830055424 -689836819116007346992827511336861696 1191621074023661656531701847818240 9613425283135065651794851099836416 -965121051837609203737053598719148032 983548077752917369124631926013952 9085824027966911920012838177865728 -473083902555083598976554331543699456 4243293270027212279563487830605824 3450751562571582420435651486810112 -681431206000193594904419757730037760 6667322706376514492995898473185280 1487195696993235300743319318953984 -493259729475620322057674011189444608 333671890003169269176500280623104 575281316030800098683443528859648 -318172307224375357610134225180164096 4432181734301023071248755292372992 9675048105897666699519649237696512 -262975464504420791686012402919276544 2128007136540629642466738458066944 6238957400384682146282977382891520 -496130761639749376351929133896302592 3281655715076142851007528208171008 4826155982185620447583172598693888 -283855398258543633989810591853707264 7349140044205244796721017791709184 3338243543950191268031723699437568 -625947274279423508554325854313775104 7318912895706856079808697716441088 2972957894632817277770870898556928 -130597667814175116045778936785797120 2928227996053781493559977006071808 2812186512329557460993580740902912 -563246607406029799638436371933167616 1559641307452591431693411068936192 7601994778074331166294149504696320 -777049583318666236591106839581556736 4586847443314969192069497106726912 4227518676594499745813137421500416 -144027415957072525523593516235620352 1710126626353043201329605013143552 5338211940962670551623920366125056 -757769865173575552015218967807262720 7486360046361607226991609248743424 7526736924567847895359769710428160 -682530627250961413978582435359621120 8929537873422424317755316368310272 3139512494683018526741703409270784 -343295894686440677000578353107828736 9985720816640988307077729781547008 3172285741360739804559938861137920 -559107047943959006511186370627633152 5443495812748768314042327859462144 5085240471645098957634401323712512 -793920661953620360734146619944992768 153669179363473755034819214966784 9739710554572463852070093161758720 -377374119869779703340754751094521856 354601783319435731601231230009344 8239214837677336726058189017055232 -178912888367915905075586218818797568 7585987745282894354263436534218752 7346888860869401008622902681010176 -968631398790725943102299281884708864 7230960385438167080832531242680320 5407712101734992924153539918299136 -297006100610365592614219436464799744 654995534968035879398639482699776 6807430122106104525975428882497536 -809440226990931854296177807435235328 3607438522286598132751723787190272 5602185861870928509750117616582656 -682895401752078001266045497487917056 7503082759626085956113229502480384 1005465153755999932281519859564544 -29344791864087751001996305383817216 8678747534768483972598655604490240 9924155517275485353467107338092544 -38873818903413840011740766099472384 6079495900303327176762567340064768 8508241416469409006771710352949248 -180986142999732180097240307010109440 859145844481820939199334548766720 7476870037903336900989401677430784 -476322494410787028884565583904899072 2247575997335781612439672463556608 9537478468420377702703307922866176 -460643319241565166327954480170008576 8696553808159950417027890816221184 1312869841050074234582449430462464 -600969017493419444381856847557033984 6338556125018926955348520213676032 9179859664511240878895439479308288 -435346988200322242941377649638899712 7297413301825283084914220777603072 9348254267276265983175212717309952 -95591747611534837139284480942407680 726684474108905282607893956263936 8468434722313282170047367523336192 -658513756193856445726600112497491968 2078772686941159075354149625266176 2221778567124981653586003240157184 -395702286348910492157469312507969536 9098533183436178632261391892873216 6116019585765926571704209689804800 -470414155391393185419303605688598528 835448231121244693380813924859904 7869195149800420121923491471556608 -946889856821537059230740620117016576 6705134761638008499218577230921728 1168517663860162154083805864919040 -880151017591830666765159938121531392 4862086300991268713619441340907520 8310820806634823037540823063330816 -604278422648592799931301562656227328 3794706138823968541953504348995584 1670403080512155933341590946316288 -619415074915551483176184969082961920 775955688495464228688287745703936 7393987456465071815859376226304000 -801690974905167665518920880451747840 3089655820755192855734675700711424 7301311722234162370581123093757952 -609156568804572460163466697528836096 3534799754740996701069871515959296 1053194120287800919688338395365376 -132514927605765002170853869232324608 9221027742271311964334956457492480 6868287469982389021893345044070400 -267830029130855802506752640774307840 2732535217181154601096880498671616 6696873805073044369116680572370944 -529636344342790125318137901700087808 1624452872247411311391229660364800 9777645669754023674083407915122688 -494516316720200312920336853073133568 1697750860691521116777745389453312 7111800167859968080500246752264192 -310208089681880029469693478086639616 1741523101976638598787024539353088 2874059661071972369141869259522048 -805495104863600951186273382944473088 4669017138042614506977323525341184 8455330677834348790542897241915392 -851764695775194502626521180863987712 7138351837839387791988049561255936 3067891947187773187365075578519552 -204366749305522657676873962509828096 8027873216252697848182916377477120 5426239452938823466599757184499712 -62606137268701683397813827855712256 6010857558124966109497074963709952 5366519389309457398230789224660992 -78740542128733207943019497252716544 8102957506262791320192487417446400 8292600546494274515458546292752384 -361670548249828727676448294733611008 4441343675116785970412024311578624 125921594871714542451582969053184 -442506591279899970405228920518475776 8204522814927861576389846173220864 4218460429391385808665857314783232 -50961809766200694710898670994194432 7537893648521588149489662697668608 4903715946333041048309443999039488 -240987368379573772069448969671933952 9644848794442284233115874361344 1714067359236500124723264004030464 -492150317130835372311729117534879744 7700697218843700910149553816076288 4634131321165518123313006649540608 -881277818465364254539282172646260736 5004891006462349256056006430949376 3084782466000962258548296198914048 -516123243237632876568174001966284800 6064515079165243121243457371242496 7118242443791610234109664388186112 -630574252815726663464965070754152448 9548641814645610265610670582005760 3149969163501786804327796021657600 -417999367656661596865330148991303680 1782631785052838825298190074380288 7749651766471667292845375689326592 -260963294309942042340172752111009792 9809081948075833333293414592020480 5010703583835967972540275490816000 -300925422956644337776682711713316864 8736112726105970930933179361525760 6591120562995549866494790520012800 -164573650950462440821189976348688384 5600194279357884689857064017592320 2859670286153483786115420421881856 -675710550040484674337776437257306112 4461458544730382254199138164932608 3776157536212093128566772758216704 -64146610585357198615038074913030144 8042458081506136238500081716690944 8919602412466145409238410480058368 -133129812053801406652504456092975104 4135634958538869967503764054081536 4236019959715194175993775482994688 -265300559055929655741078948796170240 3632568611170604703824903124549632 3069124635644439112849440766951424 -624148230533021203538330828754911232 7484098334018703270303104529072128 9805103449547155859546723961536512 -772015965101289564487960623700770816 6351134198285014306129112440242176 3998330236184603231643691200282624 -937835196684723016438778520070520832 9860750479262538933261722047217664 6777174972551099769224686477508608 -704758555461694644547031868280668160 5430050133709139150480738009219072 3006035191410282551793177671499776 -974119502013244244376442804209975296 9403141096568204951002841723437056 1936262302317947099005772539887616 -591090598011834580391467290126712832 4649290281861251268705817074860032 9982442911987497571627998008836096 -711536436709753561552126585709002752 7232016317482537759616273322344448 9180727669438265992583543206707200 -342225664916630108219177504459456512 316321248113865510022651641331712 3650753551029649282520208480665600 -835804482754916246062623219741884416 6978576099496894948699496236711936 974296830072539339056384374210560 -968749749481995191191041289054322688 3833153294483432679655264485376000 1794839868042101167486139661025280 -921933463707402880493590116489494528 7169827395381261981528562084085760 8350922139357406234093926536445952 -48835772913468546078811913013166080 8859552548046016508627352637407232 1161051781300280226533675102109696 -186644313486592238831986443940790272 1507976104267895921076103102332928 6330708617911040207356268468240384 -308125931379014295207307907807838208 3451092279157254488787601191862272 1695329652121489546592334592868352 -638596742454638626194854707187417088 1734240097749472416117897958522880 3452210200149169356858493897801728 -578292413125344586816392678397181952 2340559716029706789139648350257152 9242449810855205873668415855525888 -77587649796987652593768323052732416 2360916938490586855732216122572800 419146977724208325801134633517056 -685706027603837232649170709884436480 7317784800367396821917901508313088 3473535900450127066935439732506624 -924793298658638983948514189645971456 8972205158929164977281882491191296 5515042830669835166101088866664448 -666251562169685445347203764572913664 9039160645953075462649147545354240 4244194263435249202132378043023360 -197892523155952746561055971101114368 5191877905854980044148148594016256 4228173339902212532853489759420416 -646546077866912862452267771527954432 4171093848477250206895070253154304 3489495013167476456282449952899072 -312166280891657396974375685930876928 4187976372635033354800586848993280 9421736102626908495186577208639488 -72444048430136721096439540811300864 8540341978288210671100825392119808 5788561161191012527983050105028608 -492792270814297213449095755558027264 3138847064480353515214606358806528 5927128748250069417672728888999936 -894825500491639756508780321845542912 495022901622361306201209570328576 7906252311385651048521044659798016 -929590117337366444810258383365996544 9089555364355767327727735600578560 4391200019484658019045718529933312 -857881583963681016433433183478874112 9031614823411911553508748279414784 6210094684162803213082704341893120 -215648999786994942871357493136588800 4488248774384744378751983313485824 557739154954759035360883505102848 -739147382014945334980147473222205440 5987427517115518554912267549278208 8687289449418491344620880442425344 -45043127095204299289779577292849152 8698572254337160515285431573544960 2378599448903765877467305054568448 -170283408579392857088651947950473216 2448430138100364134941793137459200 2604302738781788612598064893394944 -548522418543049970614574078740135936 9115451617370459687463377222762496 4927104387083372166730403633168384 -881208018373593739486346742975168512 9130671593783309590853971542540288 1494337926706275541549643018010624 -784741757616727959410762718044487680 3500090009688438814408752653926400 7162528028869288119523615671582720 -800856863323835770595539010560458752 5825400882475655141638234034929664 4494879421081186379265279222874112 -343723666238945402119794129824120832 8347347064838217034877835516313600 9633390462551692772209320444035072 -916455709961438196825779486182080512 9524752778795256640631499894292480 2303722266633537224944535751098368 -158324725629203483733666884875190272 8687466664896292436039237074157568 8461527906905660287424235697078272 -260018425913388394591236410943995904 9486548470229322372430227556007936 451180018170038473938680875581440 -917773246997274359979243918229241856 1698856921734017582519547150204928 2243087220553373493477823389630464 -182920621868958796931113200312647680 4548848902389303932569559620386816 6292801133864510139702665877127168 -735673341510771858807382260867661824 8406771545746614118434297889161216 5860861029630522159674197995945984 -890148208102714756452584528640212992 2255149867031727123495173075501056 92557907333155575832080178741248 -892181673184913635949196636999122944 7311975474217504598315501382270976 3005201000898941741817437194551296 -164024652725334222827324872404762624 8970312110577341147296602743898112 6260282297878044129431834551386112 -87350334936521013606937262903263232 6448572925443829724846381621837824 2299356654177184123029441633845248 -429366888624587473854256984556044288 7008673773011497256704604995846144 8572967155802206955233591875862528 -157139623823850166457015342437761024 8811671536545664564477385290809344 409733182091723204424170190405632 -288207063916295855341976761432801280 10324306429011059502731036196864 1131502816353707625729008750034944 -50641481989228080931681813296840704 5428652261595137494624917767847936 9719808226822996309377729012170752 -791200503711588143967575301186125824 5821702798635193084439805583949824 7942695296949139911297881604096000 -131118553236095288898972513703297024 8641979488637509287027170491760640 7963850526920242608965768477409280 -11200191379121732126270220413173760 8046829072831345799444036960911360 5467920696359598334319049884827648 -42002691381790938797246639954198528 3002797800222253178223913982754816 6153317629513367648017432023400448 -902445282113713321434561325758939136 2933112836179235755663848196014080 8678965025667866396270828034457600 -596752217869405847510718649104072704 7509733477292366186626998708731904 3157062298807361875946568331296768 -906383902842784008236471288269373440 9465641215967080002238074765443072 9469883911298495693779831760093184 -473208617543460075241495841766113280 6530282048791294627652298436771840 7762427777040624574199950544470016 -887406095253239841313758263950442496 8664069322276970754386741939929088 8365781383470149554716294722355200 -866906151207727722316638982745620480 5396227175052643483913284761944064 4417597420153437134836898147074048 -140487888258092483628000456136982528 3123589997852802522352016097804288 2375069606550441797992841635430400 -843139291491818903582513481941778432 6026413450988188527981549854916608 663363643577151791745306766344192 -85387758909323587335115591747895296 5250209280172979920030026648518656 3390245110285123987543982228897792 -254036906447285216763342320182493184 3349136923059370769971671109468160 7087365292534077975490513336270848 -497407659399752960329017934322073600 4044037988800276080006676294402048 8010272613804534398580258492121088 -34208190230991883646109324933070848 6993866120872928151136086767173632 3455622863406554218338706218024960 -887552597243146196744219022466220032 4043379183921517248014392806604800 2293741303339186795839393510719488 -588938770428204690589947739634663424 105824723838236200868053726003200 6020139074249804247865127793065984 -341260415159264369458349495476551680 9342668607597386104064393915400192 708930363716143745202989666664448 -195080544119202383263202614146236416 8942918781961735710661395263520768 9627764938814365733095149083295744 -797776816257135461963280200224473088 5703022526453616554978072277811200 7682264780655781038015045120819200 -701544418482074867282015214005911552 5525616388493657013963334524862464 4707159129180975410556524996591616 -660908003842383147027589914517569536 9766920502900079081601130414735360 819055286363215316242158361509888 -682445287299123126132960476230844416 2857189230094887768764395802329088 9472498926205801098686830634598400 -280626738301371041944043694147502080 2662625880556491085766636123193344 9054682296171210858522512866672640 -625584637364139909427118952171962368 2906733185441243540500552244789248 80567111087915029188182846472192 -561892487119196202890612438437199872 8068941379758608971298926047002624 5198885223407558965985730636021760 -801991259003808237822301278786551808 9512119962080640972557510248497152 3902877582240482731143208418410496 -763776576531279671244775098257768448 5282184755780157097695022445232128 3696492163032991313333840664068096 -400416622812168756819648110844182528 2194482503244457115718673955291136 1616265939502869161228848339091456 -446850125552346562452329010663784448 9375717536449066958752178205884416 4555160806885015842451529763127296 -287225806880443989000029506220589056 6883771600152220840073652175110144 6679284776984041934547763582730240 -23701595823025421991931441227759616 43920557650958035009594980302848 547783090393251561955707873918976 -502982075296503549355808740108926976 1428339525795766277950283393794048 3993593577337885198941264768139264 -16036569885800488614196828759392256 6583838347762130787700712602075136 5829764267537503004460252970090496 -303808621060725607350404486386417664 2761829625588930378755440340107264 1610997166155995000310535488012288 -569417180912182192037807159353802752 2006555154696067158233426797002752 6755941131936874707304421114511360 -335764674350190364514335359611437056 1296430548100622171613243751006208 3001720977534182301706336073678848 -28946833337352850335592611554787328 8939408594558504066469915143438336 8573096581635410472542266464403456 -118461991418405808086696175083716608 6029338335459134510942001056186368 7925981213777247881081881383403520 -653781761299814234291847628391972864 8553822101075873137262740595802112 7717955386975986143063595053744128 -946984242600397438866519507655983104 300387833884542157525451450351616 9353683752625202326007694059634688 -604536945227819588402902550362193920 7429376278469178232649238387359744 3462039945857856578408596660813824 -589104339394297423646036792086364160 8878360832759599423655382022619136 6877670461482612207225967124414464 -542982894259693659096191920966205440 333768973553977730507099149959168 4888731287528646947991797847031808 -714376178752134207739382901524922368 5232939281323180217744318042996736 6179867979311867625057119580979200 -674750747378502540297340741214011392 5247419584139527092556604423274496 4178281268914599321990360081629184 -215742275292695400302647476272234496 8276498878568162097721241820463104 764256224337545987333003480662016 -807611122557044664401224269656227840 4053925844348643794666117394333696 2719082482984018499161671746977792 -182835798100866938059166407511244800 8545948652935455737308574465916928 3642251914853637689969895635156992 -717656312675483662564193543359823872 6482033856194592249379018757898240 6834402525430760730953075847593984 -509246620068437077391747838910660608 3468814093365787757270207423315968 4760030573177920686466843266777088 -205595205806845456098294666931208192 7176084129647256956653416449310720 1641482874625708793564304578183168 -373366430384181357772584319895732224 7037261487146546543461887048155136 424426564064201858549940047839232 -993452296816417985298724325003624448 4543010442290975032768678452002816 5505062116024815003952511662948352 -200803126188063485887516847747629056 8128589950866793722514096514924544 40766046054174318476412665724928 -937170529137980617034218289030496256 9782161856649838038156897127759872 4970764601014954197859652247486464 -789880449847066142257689504369344512 7453260111978330521019871519571968 5031193283855029809274230021292032 -536893820602172847802082405000413184 6199414674300639048504111362211840 3246906898011296184902063975563264 -492014961133422111214622257629364224 8775426459053140546395602790907904 3277780257700686266642367074271232 -422087515573244285706891309678067712 6281455101252274281851639243472896 3900108235058103198275376559161344 -531409189745234343716460391747813376 3323118850474834861667034297532416 4950704784859449396573266258165760 -727726077283889597977877253204213760 2032245927108962862689240033001472 4927449447947238635188825414959104 -962765575781116885687745549365673984 3464928186813967895080378822557696 2440998903443879695963813526372352 -339572032077431728998128129098645504 282911118739334903003721278423040 9888394104626054297362996331020288 -628991096637922427655013426253529088 8965664170704443618566409226813440 8927843744761136003140903833174016 -420289386573494338334802836715470848 3794933309824648115829041795170304 2380348721615279335256496770383872 -865854274713973244486415646613045248 15005847249005974449766008881152 1546111663476274890649849965838336 -794626519925231381289271778630172672 366769171814951815856166361104384 3305432540784487881598350611447808 -33664492645003698214542427434254336 9094942865710154343477252053794816 38767549574553470823417654542336 -339080662018911169552274365557506048 2664980708354401520742955722211328 9072432880511427447386348485345280 -703969202981722997828195571357188096 8564035023296551533927756128583680 5010534359961161815946040509988864 -86381270830824797495827110857539584 691670419545833912919612272410624 4633217069400644213141247117754368 -541520614956935080122644740689625088 8854880423259935409815348500758528 1755897070974483287035131776204800 -291026940011479123110266107269742592 6114198614773667841467078754172928 6178306543125563189385753383665664 -949506702763467149453875251364495360 7971059154271669072864952633524224 8993053374615267521672702513381376 -14542259466023983900263301540478976 3445545930982754061418294186868736 4562092846453096705928144927850496 -226379309661543568086279759356493824 4553642113006890091576101731041280 9469006714411594080911718327779328 -910391740164629418826059646410686464 9757769933892315086665101636272128 1205590372556967196821752431771648 -68321213171885259853806415179153408 1574411824882490484501432600887296 2580734647951378583313650638913536 -311569322626304674442425385036546048 7360030130649141272096058644627456 2882340306319556516220902370705408 -666626426675478744588339522729672704 8158953790616081940291462142885888 3323761124250152061671902755684352 -108468125131918020451981325498318848 9641993362238701750140639155060736 5869172674008492617937218544074752 -267281892747040591559898990588723200 3497867344782535073669086458150912 8884430358384525462262115741990912 -671917022900594914226637395200049152 2974770818766675628217426404966400 8160206574617878118036321295400960 -338795499287507425205698932009598976 1285174620659970928785169374511104 2109747414547533437888568336842752 -598692211614460736069666424062214144 5004220900449048527712430082490368 4946132924330432704618604930269184 -927127515867769171150381179056685056 5037021501984769452754347287904256 3636080256893275747718532127784960 -584123281186061705267626883703373824 8612581142624365326402331156152320 2500035723975360031683214825226240 -441354286442484914118008391711326208 3784746496006920510572884035371008 9096173056600108340791557157289984 -919904169366195336224404217444433920 4475708819819195028924473662242816 3422605982089770933271090721456128 -746129119377471939062082327321509888 7423083160099114763409480738668544 3124091586101930265919202426617856 -830526445207706859575642429621010432 3419424078850045711738763145641984 7913966754492774203837499307982848 -979334521648749129570056350952587264 5297584973216296283136605879795712 4595382276783966960787568235380736 -274636066732371692632125481458597888 9096152938083887564975615365873664 5450414265479983014581153464057856 -620730490010791488043746368707100672 2196164744328621999677759442386944 3714334060610700007146451470647296 -934370650715809289183978537357410304 9142654532063447283044976957587456 4442672123890926968194311340949504 -507899599714224601560873416597176320 5275340574070482271999506163695616 1540055175186560601015656632025088 -984883519462372119579329618826493952 434445085795997879755487869665280 4146620268008241431319348529594368 -326453420808245398627273735869038592 7004828312304095619276640989741056 1626213594993420506620691677708288 -126327290833309712429057085099999232 713422981217274338568838055985152 4845951590776950261166163049316352 -286583378108413067462044407520296960 8444804816010571797212167688683520 2568440407967652416719004459073536 -452382002284184293283133991505887232 3345029436240115166288353423261696 2511845694358930495064725042233344 -764723435752486964352580286836375552 5422050761212772744766014128914432 8481662052390524279277728678543360 -927740965695007856472655660148850688 4641620266508197448650209280131072 820245544125464626769103303999488 -530473533256935135046158178213429248 113393481785119440308620943687680 2290304703817950072385816366153728 -175551761889786254001977965089390592 3786224394037725897995621186404352 8466670313853331794787195261288448 -464629236456062334406653910750068736 8382909459495950251178519676583936 7106413978977477323587107963273216 -838578693587045503538534031875375104 328097545272680413873172608188416 6705599221283292490388073885990912 -958957825620856664023477316019552256 5614893569782194898047860836663296 9133713668111635885172645292933120 -156516287943141187702045784829591552 7427092347592626832941778875711488 72534157563129754544967178518528 -459030049775872682434685296778936320 9757177451477856921236607070109696 9100846418683999565450115119316992 -718135468943532466572012706877931520 8853687284195539839047345605967872 9058227246645267980063225336037376 -660604906488013444759074645993324544 7939029464798940186152200048738304 5057510692339533639883774337482752 -262931525988936552593463622452117504 3371728036386610340665374099374080 6602854384965981389856008642232320 -581936994907361215523836499085754368 8767926419783694499132515471589376 8039010911536283389233829643288576 -887492966281463591939679886338162688 3645025747505142276651815576535040 6208636548540490450652651824611328 -524662831100597453093606815675973632 4157154238050649108618033554784256 9278406285610186324007506258427904 -472891493770295345774416937804103680 3428510081512856698451859070779392 9813105623514969040663398286622720 -410563555966997466166444577167245312 7889177990159898522231852184371200 6894152759203425591995605981331456 -726208265069851812928970353981521920 7318761470913416833137121612005376 8199631619650707535597770171744256 -286801289011883166109058275588702208 9590425967185914675432899232137216 2794908104408799757197094856687616 -285241790584350688708150309217632256 2549608529284095149875194341883904 5097372350965815185453348126982144 -456783103842812461829884433433362432 1213673438213613368697642125623296 7800300020636345859850046952964096 -981355998987326241172517914180321280 3066406086785877374536392657338368 3369028695778273173300101628559360 -966825603529276938742938100964524032 7316952605467494919040935829438464 8346211608832314492676957207003136 -184507889127072622871899902077566976 441542632844827126555056990584832 6013585949798629767998514747408384 -894510801376260662632453696166821888 4458146841079257048564279833264128 9388307326869445171135690959749120 -886551668406600788484576388837277696 7532354378475684607588670118035456 8460236793943137640004294209961984 -435013740442638940001064304439721984 3198270916056399870500849718394880 3263207441133977172334367966494720 -492476474920860136204894335590727680 5440926587218005053762814892572672 2439073007801974422574987147739136 -546331450554690586174157066164240384 1307798162205130115679763969343488 1916802792809474105603554772254720 -722700743342885375299309973352218624 8045845219750739413270007319101440 1113753932877434259045891952345088 -982538296426845251240317208680726528 3844331945275734095072569826738176 3990871072593175591520521510977536 -53547754794197892103349415866007552 4828043938707059595500345381355520 4378121496966091302572686468710400 -10790718962006795442775964291956736 2704924700122688639507867593867264 8209210707847140156475127636164608 -880969105174371402397692903404077056 3935215325245486028983195966373888 9079312075545454616175840413614080 -820587427112447922347585042852610048 4030433541167031779190206711726080 8122199925473578715803914516561920 -537835348663897339487836301995016192 2108759470494676270413915323629568 6726958358369325319547687519911936 -747336259986082053414490518518235136 3326011108677326081006148559831040 6675885041999269727699202838888448 -993598648210069893376121930925473792 5055264603886490133993366992453632 7993095926856079002638691459923968 -198742379174014211148274341892849664 105152017456437931473098271358976 2585253809793885874368464556130304 -367226365968815464647212052630208512 4333323455390761289140166742507520 2373000883923365020201787110457344 -654794070760662168535029198023032832 4469338251325536301270513097900032 5719733651545083051939526267109376 -718826068302077259220983530450321408 4672276314878276693969392776511488 5380678343451753439474107340029952 -455445029634830558765597106521505792 9052237734727495954601555997491200 7587194818134644932363463688192000 -565952475152182709219035339468832768 8798467993832320764361787670790144 6664984472646477492888946786435072 -816267582025424008826016688001515520 5847094967438244965299764418576384 6192178923874278981145169684856832 -360158091120533532575620734832869376 1042652370506786545609847408164864 8614789476193629375303678311792640 -205296933858370418689427230316036096 8447579302569718557963575007117312 7071621381961375754775596472729600 -997488583853820050885450055777517568 9400233876092520659929111961010176 3901949006847994334127124343947264 -681987030725768323444257523010371584 6467614886813947044001327393800192 4993443452376559330399217709481984 -308453249747790193103800237450854400 1743757938445724252846180358160384 8234561515883168579311414330523648 -387776866473844964702240331649777664 8923185951311696325549475646930944 3525055292545718839740172389580800 -209877418715333603496661116359016448 6550326409875575524865567614828544 3960783076127455986500681573859328 -628628827620525516568812174287306752 3702010786427910996147526478856192 9371495162341023280484665446629376 -829363648272569842591193239860019200 1966909950774307937473577367896064 8840925370127746370235087791849472 -444193925739130468643328765894590464 1087157663116912873922519839539200 2478521818675824862439651237953536 -862839052972221618042649482872487936 9115782879533075213704207576072192 8278833676837787954076364228788224 -334839703335984978407365898168958976 2316641667503169335950004082180096 2276623710222279264738998390620160 -967789964760062112217455834899152896 5918851710333942220141831082999808 1070515052547523202219203960504320 -613397986625894342593038140867346432 2161107767877300790288050993233920 4725805372554338543945128939094016 -980298355655757680661531362410364928 2260966538430009627346280942403584 6227189708743161450703694535327744 -404108585259842598835771042254815232 2489828780879972863090153037496320 4745193718021655936763955635027968 -688370284731767143631726892034293760 7951251062503396140815083095719936 3753024029631166720884922403258368 -721914147843423689663394235054817280 6109155471224927993115483012333568 2725070883532845157462197632237568 -646386107202330562083075950555168768 4655982892929947165628499853574144 6588839295451931918003523159064576 -65337225886535059557453738761256960 7776903938285925980521058078294016 6185032701490150859931534552465408 -209113258431899088486207742097227776 2658102348412284423831806107713536 3357724068427030024991624042381312 -256151231428058346820216918443556864 7389312987668848287658582327951360 5659317720449959496359129615695872 -254532420096334082463526107358429184 8353235135113133036220969516007424 4457078250934484151220761052315648 -910372931585252704248406850544861184 7714645767924235465261503817449472 4370752400157106911583467986747392 -329197645023481509568759882997301248 9780734798384405826050476742803456 6895976815653189292068473785024512 -787753582283235993089519572465221632 9510022770174207903697671991328768 9797172972255887605094920623226880 -421505090250406517103634867225100288 3173902659390522956596562603540480 4248426650781229387253322059087872 -630027703173644072502065103636529152 7067927499603979404035965073752064 9893525624854738292450745502400512 -430194826830112515294713920501055488 9208442114944858524866803933380608 8506893214444017572729522665553920 -833758355478943775372007618910355456 8651195801376018483908076957073408 8082245493686168778564862243504128 -847664198202313943735029041043865600 1987532272594895492353126249267200 4480412441034320090529833792045056 -5370694443445035852601341350248448 9508802110485594621424369097768960 3216223880122851681982888674328576 -169425668693064236560890815418728448 4510821520658498921273197670170624 2222863881767119275524791398825984 -907472532198907402555415166634164224 4961007164448897543360870225018880 4291594465371146879698802462162944 -469975094310418894677533281537228800 9568017524983614234042911493718016 1607573932449995165939152845799424 -668968691539296504974634538130997248 8945741027485360281747776176390144 3331119985195373784933540510564352 -800529170012478021863468375862149120 6022784907103224030921993043836928 6649082940185832564866386575228928 -894180238983567290964285468924968960 2720136080175484902064141916700672 6588875125397734087455774357848064 -117027457486164149180332604594847744 6318054126059603768713885423501312 2904828783751886239954869749284864 -394059711761171958504665508590125056 7929516040502554723532493522206720 7253390977104856573766337715765248 -253971811525237637498103096175230976 2522188194365181850266993405460480 7957764806380929895161286770032640 -538423712570473267943500233295527936 8645724152452458920898568684306432 2240982611276875576293788229828608 -101197664641519022067909386412490752 239605041015855262510269788585984 3975088971198264260541546730881024 -680563267843438037162878062043332608 1700419463184441373219625929539584 1237335261621730597887861592162304 -610210213766528772033962190934376448 8667348399659640619939511029202944 7216194284408133825672333280411648 -740979662387369178228861604330471424 5625736729301113799434192642113536 3614899240894424268922772244135936 -379633427574235746518372911509667840 3749926955495958078474172458074112 1225818566733927565920811941363712 -536488423690205272439480370704941056 4883129526579926772193121657683968 8326254723319217961456936247361536 -633111364312284024280554837901312000 5045688816064361709449644458639360 4648388075730694513168136794013696 -946458512452529670453564507020066816 6241379117014813326132856641028096 377281228832649116648300173328384 -915857906719754076794798464693174272 3970573848125015023656741690671104 6677930749389926753602259411533824 -123254613906201636383239465917743104 122820147382395018289677776977920 1973737584514278637371294725701632 -614822737105724332570855943945846784 8160167590145310281430187957551104 1037712981930927548718689455964160 -310303386067381176743077015877320704 846668024711358487179182515159040 1428808804046813814892805916459008 -252245776014425063599066324433633280 9407463398744260961641791766921216 4893452339351770770701400770871296 -853829865027025360581360497077518336 9143930662834100205932199008010240 9804944829853493698689693214834688 -200910121560293982832475758831599616 6356697112899685157654184316633088 9930691303159007681417052260663296 -769153361519640999714282964661567488 5419606153670889972925369029754880 7978357464670105894978970888175616 -75587459066107979968193365989654528 3653194376160629760371780388651008 772866090194125274097632264847360 -127830043795864012471044135874199552 4014129739111597364499782379241472 7353063165296431890667441383014400 -815914631336832175903823758259912704 233162422790333797303417112100864 3430257246653904528392083560464384 -959462456407511645485313326397259776 9394712075043759118518808211357696 2756280984003081056266394441613312 -731453085006156180215695862875029504 5004911976936747497477069009321984 7546760436449983975600736075513856 -276557232273060745606585985768882176 7986267299967001048119365764907008 3185090190528936783742726668550144 -487520766710371233319574808270209024 4062039749474281919733797937479680 277827317481789456537073708171264 -187900478708202075465907584754515968 8508938737597991100684123500445696 8324029606944770736927650500050944 -485035469317542530246330547670351872 6668804486567595717971534894071808 7882846066897339956558518632316928 -551680611018578532412808429974847488 360486505673664270219321425264640 5990827996600069478808128503939072 -943963220900740485431100806285754368 9269739175685954794519521065435136 1587957539448530440761904159784960 -161598125367683411730609837449412608 8526349633838371379755591441317888 4922965211889361015007518201479168 -440986194456731237073360318780932096 5251529115720803342015729028300800 4889312932374695304596848017145856 -836295524020851652515680691920306176 5939722224384389098317328039280640 3720326673404030294735608189288448 -309171280719631995298064910577041408 1449881353925418636206606188019712 6780303913036935777603741066199040 -548590857939937927014416175073329152 6193989961459300977598353022910464 6414688846664229540176906277617664 -937684886941568596754380389324161024 8113481096198093534680888729665536 2335917110531697620840943659778048 -801966780972596660607981691129036800 5643376905716837320170224274636800 6789960787546016307841959274217472 -350764604099902273039007238519259136 3456815812129437973182813290102784 7641577061259670400244124619898880 -230504860644868167720887482597769216 695644054974779886411092810792960 8671534913141768129587587175153664 -376060741299577587124521507879911424 7658757644182254003786520897519616 1621643832877630424316351269044224 -648947639684748836210949409820639232 2230293533779501631280536897978368 1060512739543967595353620822884352 -75760403996744112718291791530426368 9057418464531069648889423935307776 5195315260637432254557355123933184 -146594082387526450188297598832476160 5794736750462232622925097306423296 6438444459353672939213660392259584 -202339779331437255189798364404252672 8277028156260141793675699497730048 9245015513385834165054125994147840 -898814510828863650018907172200513536 7444290081793766372616548254744576 3933569353097962515053061020319744 -246710285675843363270012594856919040 7582768533859254946003871063867392 8994519641427304373929919847071744 -501247798754631503512751703819550720 6394445166735929826685663783682048 1058410868774485227150335528665088 -469318906566556472364646190913945600 6197451633188626375985706808901632 2547210564681132045819848018624512 -941950925720206589795888072228864000 4429541757696442187183896546770944 1177350170754328871118828243779584 -285011912942251449872202246530269184 4623365430585924276689013609332736 1710968668724660664474622186487808 -118320320659344888018453845656993792 849327137444492832880841558327296 4814221539660713501319694188019712 -823008009131018086858476167201030144 3945071320548052966267515597488128 3972657189127204423168374024962048 -885096617392397907621045467816656896 4394987508490897099236120920588288 384900843411170042828201113157632 -199313831020414236248713858406940672 6079237249739866422134433946533888 5843817291515405249935108380557312 -459130032781175588069890064333668352 9979099913010275259649751770988544 2069885527190600007542790357516288 -958934366622295526154643390542643200 2423710849154355305961877296644096 6458685988665756486458105141395456 -263601756101767428114357980659449856 2739022823579822181267852308250624 3792040158222424050123273729474560 -810451261782327658773353801172647936 5387559552411700434063428197285888 6590349428306733396673733339381760 -506514859150587340819060283108491264 981729044064278086147290043514880 6447110973678083339738212787552256 -678594270008587100505071038230429696 3025780535917383666225180217180160 264013002078785374742480083222528 -921784766781376682694116419475341312 4522295049509347368816430081376256 723236746928373246727962438402048 -58671271532215882262827591912128512 8523965975996758539351928856379392 1400750682269920741146595654893568 -859137857755976936592789747619856384 3831001706078963020200025025150976 1444724370044187870271968768950272 -628771688853224984208392440646729728 6249398453022618636829480938635264 3926632069747129545892393711042560 -196118883082768342462540967642660864 5512412561794253866492445874716672 724359647635660119999105560739840 -212288132170870222665337291061329920 2038587499792701120634239366201344 1772254102903601462580727018160128 -975711510946634531482286694764380160 1627202377190603057882911654019072 7278492759423311911986136130519040 -382323086995379867252586502934233088 592608793783731021465054173200384 7409843497349082857893157715050496 -599712349278228705943224883043368960 6098725785738377343177312180371456 4592111264574176664344171795972096 -344511683169038744790543493685575680 8763464581839535909221215877726208 9783603775834884820965020273737728 -174001816117931690280172853751971840 8030202161325897523381871564554240 4573725039491575412925780386119680 -962734905663917388394995138030469120 1916583275618535316900908309151744 8995523094202592274043332127096832 -579136803032905521822385290317135872 1563727007176000985210023686701056 6209029273120087428692336063807488 -27599022292151871194452590633943040 5918914520559549299406164778287104 2887379804147699057941678288535552 -886104391134634758055677990669385728 5376159702034982297314406988513280 9998816576373630403816774137020416 -118941024385339291937453530022936576 1141231062111719939782342732677120 9313457654461998036670644783939584 -999720082547325451361461360199204864 821184937167685459234587458666496 426190217262937035084859076247552 -878524258896081917204313456779460608 5225659950444316370032247389028352 5906544853691369503979317370028032 -780818671067450280888153477599985664 2696534158063124328262090545430528 7996663659179288045368528657711104 -847545635729428252639303115330289664 6888403312826412736969825629241344 1235184420769449202781623957848064 -752639982758446227461977017417728000 4159508497876442001805275700396032 8820055335061481989575428295098368 -595915281222182839045107589545197568 1955604600446165376541980954198016 6528118290427842247739132979707904 -901551568711037701098071999675105280 6823933110971868139047489894350848 4150509763577039630199267518316544 -841937458582627328200158120108883968 7269734755333749960636842700177408 4505121331402759464184509185916928 -27567016015202127350345230893187072 5289916261177896533184591773564928 2423613831620392013867416935202816 -56996583011649626380355792678158336 2873659956508952856336133047451648 2592551364931106344835724970295296 -233595236183129392467286539601182720 4837745959446483207273166632124416 4986439197310396584224181618475008 -349762990848242385822733978671513600 2024927418363609238684686299955200 7064631952478100516516170211262464 -986705705690107623974581004142641152 7688105115093296573387445928722432 6582103994278051792797773619789824 -465854972322168992420324862934908928 5201269763887463847622451725860864 1461942517509044879487052447481856 -676490661166927070534243075573678080 1345859014453541574747836844605440 922951778257428841906945495400448 -328272670174200760655697549602062336 277922861434250912671693373702144 9478868995796599523105345195999232 -975674896565422109823742987189878784 2180288537382009077164448426229760 7519159768311447675714802626330624 -761265440252097348962856624440999936 6539903249963557510898384266854400 8672235348959762585057674588585984 -895020393129699753643767118142898176 5427692937325794263855607981277184 3460942958555396481694636426919936 -443270704482946292702983341022904320 9243580850461240600608837533171712 1584886196085663981591068839772160 -308676464210667462075493917053157376 8197227413459272007617855849758720 4576068478615223008712595091750912 -355226071180659106230551768079532032 8705488039078833312675175937867776 1100719205728172422921331916406784 -248232020503961887822797651688030208 3562549222729182035797634954821632 9101461257770620803926331985231872 -441807344657239014636332554804789248 2141873722400740298176042117365760 4009487403785794308817310288183296 -242779575500307298414223846828670976 9051113899178919989511097600180224 1658534335619825456412173537378304 -26353944332744934007443357574365184 8319000053285305157663665174872064 980000132413489226652610056945664 -164028322302361097114090754891841536 5986418723860515994004559419670528 9169189740008684906942005401092096 -456002256470984382575036379747581952 2086086665723420123407995279245312 221917424958440809955009769766912 -105450373531574032008744830133862400 4402473280836347053134860829851648 6621219364745364935387821205618688 -887399652745529616828116338110103552 1995789371574873501319135091490816 9909011303936140865164243619545088 -501500464635538786545290320682156032 9421588081009564894395072128221184 8798438578950235729261597971972096 -742548456148838181883249753319276544 5232003050516750689772274752421888 4195294618917204918261397873229824 -231570633516542992723135325781622784 9044939507212169894010603775721472 9510428843702777259396533776809984 -469987288620578309861169292367626240 883801366838059048472626539266048 2153156343082724529740256752173056 -465282985581841766898609469714857984 6542620883899508827802854100041728 3726861914286525027991171182362624 -781325782032561200604983605642395648 8755838576772587204818294701817856 2257763819720668035226932162330624 -694633324807646484586223897346572288 4744279196084573896363330441838592 7187693306001105557322915966353408 -578837979775134479482721349008359424 5427810566174011181717144507252736 1221605803657920628768895079022592 -404292239894768486865090966324248576 523639186390341782180486197542912 9601014303046241485395286225321984 -585643581088446670842452352274792448 7966975502362692018268857763364864 7836908822241933322643644943958016 -112053326534234201038239878634012672 3344306834091469453694439532789760 6118338773959547229612926216175616 -813153471906291941887883027421331456 1125482417420563551218277357191168 6579967299077513931298252085264384 -89067069288445940261785854365663232 9897936380489019163991218013077504 2856292347577781162597994414997504 -243859263765019616810258527510593536 4298976611724992738082413858521088 8511390527674460247479578137722880 -845694983370767251843905581974814720 346800601431881073826487735418880 6197475423604936250014805021163520 -281999399255422153197876604800335872 1854168152694595543082315527749632 1054371257831729737332309981396992 -438135923666398877461400684582666240 6303015707798549011065051579154432 1605814382433163659660847386460160 -800209542600792796541491712662437888 3557255079374307770772700608331776 4149660666047915228680631443521536 -978435222829792819237282874654720000 5446182895858399512268453087019008 9945586968160762389757701532942336 -476914016315850629414116161484750848 7569599837099842773074553398624256 8222457682113033607624500640219136 -109166562513669221697760821866659840 6947128759532635794817620035764224 5565850232506951003503858668273664 -86468900344754673189192838131220480 9738573589648329528819519707938816 8473222592451157127024127604948992 -102847536068389803236859150178713600 3110692440938621964032398694809600 2110909766345930070825771028447232 -272468330171043060385376135890862080 9944520299901558673801170886066176 7729493925819243033559504846323712 -65426447662212624269340816613310464 9362295245619851650476741180260352 9619053961399159510984409206489088 -267237685869784624058407391879757824 4453172772315683479962143640518656 8250564821519107965858755584720896 -199871968463209012163198518980247552 4622978026567364730184768979730432 8848122966516839644472597052129280 -719992674675401816103543966630150144 7754261483238039636979000732024832 3313022941583875024641266253037568 -48305689383331814259274206471520256 5494329389005678887110995297173504 1705303865767269095029944979816448 -477919682527401646852181673851748352 9888969145671074049475157411495936 985397275480029432643105111146496 -143564804011572789106135883740872704 9437448439992280274335246007140352 7447304478888890432969803185520640 -670849648107146128546624179483443200 4464051720338848593578441324888064 1410769200949303828343522079014912 -149526675297306189256338424236867584 7959281952951683507904335138783232 754898699542284308295741993910272 -912241449246171341838631828665139200 28406980314726800750047483920384 9405125289338887221515677612376064 -708521379974166338815878122308632576 3291941247291775673502172467691520 4121418002015294487551937391624192 -612219484519588958801663838335795200 2235938624927196415844589552795648 781725310248302497358027293720576 -164349226228697946143086297971949568 6533477317846256161806068211515392 2441730672977109885477716454539264 -976190322937120467029336257386774528 619223544160964573351769618251776 5491341244556846107406291911573504 -503913288381768953083572058293534720 1463919343508459006478879970820096 979893648090830547373376025919488 -289301454429958862976203227396046848 6460751786944933006845757374857216 9772052096854633378861418553540608 -856121109543046336259756902357925888 5861571876235736653582506840293376 5280116650275778735678949039276032 -544559393388163402360014726401884160 7859263333116527877366891266703360 6276978460696317554658673040556032 -406435761121965540423296468488552448 7679653901214694513006041918078976 6995761890865503018679099423981568 -221423758947328343146387544559583232 7772479201317908708754597420728320 7545206927298040020245461199749120 -560157541807446950687135672521719808 1521653516555612732335696732225536 6874805459836958310677974981017600 -392826964908141547921015615378161664 7051104677087219868273300295647232 9736480259983494491792972177211392 -482096589856062941003782687935168512 9802947504654839199259398378618880 6174065009917874949465240196087808 -46089574898819845774210796439470080 3619917264688696931750388973961216 779689737367831079301519467610112 -261694032710746152946870641189978112 1692792429631657774948251181514752 3012983508775861428451359160532992 -769524246366003043123457259347116032 1481623648726508995144292317003776 9539138269949269040321981229039616 -789519863722053902531734600146747392 1226781747140045554579555024371712 9436617692650377542487586216345600 -141109880148640937702875752801763328 5696847607956302569067777106116608 6896458682935381520786765406797824 -318540320229394358858077554251661312 666537151559772102390727418314752 8763185278520264706912592544661504 -342485722407317943638099911891746816 3382622226012411927448909279920128 6310242570169769732318883125133312 -152503087416789785640940754251546624 827990723899790447458733845905408 5976616920900623767186824407023616 -265098509439897910680594893196230656 1611192750135494068414904107270144 4191637564311329037601900465225728 -424073067695606798037884953715277824 3993382656507001203994442908827648 109376770911355083097564319318016 -101557703452569973883213434148880384 8266316961582695447911892292468736 1257611822572642795241317691555840 -362099861613813287613491882076667904 1965268982917446145160704291766272 6252398254713720887247982039138304 -430968000735286559385061992356118528 9862496795497823744814921944137728 7159513711604860949936082882920448 -759877050201617934802117963603247104 1791434006636281066725578295476224 7889940428739287231194010985955328 -634908989388061980806385168709320704 4293342896885921947634211779248128 3573720178270186708819763993247744 -698087659925839722243351118612529152 4233255603009624282925651669811200 404740268894682095628805948309504 -840451401148748849928061224059142144 1565814698561211085190935120707584 6943855770181869719099277077118976 -723247653822576014156566433332461568 1259795521476444997732816497147904 3495221198711153163221011206766592 -882759098953740062510717245627301888 4408724519617848378935139488497664 6450502132221483746697328201826304 -546790313942428809401632219732115456 4265507776910959103867628621398016 1780079865805410777911706217611264 -436870651897600737711848466860212224 8149268290218659155372460623265792 9676166746814068262377821487235072 -59873250127518985992819283404521472 8993921565227189658283537636261888 3133905915128533364018120593768448 -451649695691568777011845542677839872 8637858528544616892782333120217088 8000119948987345131582310487949312 -403559144921559671766020545488879616 4935581370123458496816663698079744 6383051134218909655385212257828864 -869054058327412538415270488879136768 3934908023922013810514998801203200 3346782750773299972544145603428352 -123129558780273715643133593758203904 6294600045984516361373790911856640 4929597011396303186982738277171200 -349741806986280047731155350994288640 3662340663854631734544042276421632 1554057968812763458415934201397248 -242982351091826323291448524977209344 3061984785278271246521761278197760 5478079418528575086141229391413248 -802183448641765438925013598211145728 2099298873866076532293801256943616 1884903482481701532303372633243648 -124737469791343772856260151392337920 3396160190071749408117374605852672 5232924180911472668902439641939968 -41898909978330825023878734951743488 2720473444183854282344319162515456 4401006964873729038661363678838784 -859691772017636866351631938621538304 58956963434309311086242287321088 3603552709379327531375547304116224 -959112111188367050520720333122568192 9896915550756938178417700787716096 4401747019153250510940692532953088 -503029443542126767408833239598497792 9781116307764986116480030348410880 4490424627533095651976260142235648 -534665280080376629065764790161375232 581789507564233187976450840461312 6871056017409583816286670610759680 -875322355026987047438373878851698688 5813374214843056081010232230150144 8832860697548090197305230752743424 -437360319888360254488849291923161088 4114908427336508059489010997788672 3070302207678583482333382118998016 -32144258838123744144470934722445312 6524207672432277230900701625843712 5985081784580522640466466253570048 -760493875938848249416876700957933568 7093318323650820681109292596592640 9314179404652466283659437887455232 -568087608892076621829720083615711232 1006658369598678090712336778133504 4027447582671148569586669340065792 -836492621110381545552182811222343680 3132794475217181303938586161184768 118267854263746342000875385389056 -251048065385833124033056342427041792 6214192062651361253506919906148352 9723399766428780314020433681711104 -993161825310528164229506184819769344 3386199342241206748761958721257472 1975822861215887282474835955941376 -551794220194830913358218982833782784 9315933987163579250154235431485440 2170008801503195492154944769753088 -718755327388259227345028566547955712 9103980647446555778110594152923136 9884566310966328222579097654525952 -988324263840101906444510308060889088 9843237588825238957035144129544192 8141124482069518226484996587126784 -476590668716611201486790820479631360 6027152195848227035721092632150016 7471985492525379909070655298994176 -176825093428370030139308968995979264 861767610641897426441745433886720 1531673686948356005999617173880832 -673400759337230902981246539649777664 6258440411666793755661599422545920 3666390475324420667575734481453056 -255121651059302127278349198324400128 6754570801969971220299586862055424 9209561558668856391113817152552960 -404017729052172237418787146387423232 8666562126169972208968624804724736 4345536668599548958709283964321792 -208087681342898055037001976986468352 850029881935899196189111981441024 3751819917912259005561299191988224 -549291095529978349424837874495258624 4011526495009787920379089577312256 5871471843435266043593819357708288 -129550932778347420342846233411321856 6418730141604662876061505234665472 4539782259929085516880936817393664 -374115836428134127166952353313062912 3719975938923809232372072013889536 138146049303024122605953978728448 -76626091086837292387089533068378112 8910753457351647821739039104434176 1365291916656205202888007746584576 -485684459293191935686920114056200192 7197410984362916913357611593629696 8296913888843915082648797577216 -323163812134884614765152894300717056 4139044735837496946275891663601664 3112808885589248278898137194561536 -530884995118699781503339692268978176 1326496735947619304345958753501184 6015157059981405918201567393087488 -823536833941875792103430640078159872 7897747325684750062195550942396416 2355835257169145305727437792870400 -90766602197847222328894728402108416 5934756013585918771477651717619712 2940448024927985429205546702995456 -822712845180375220416032136205697024 4571570219782054184004519018364928 6404610819737749103979120052666368 -595416531668979532161803763694174208 8498341036302541639962352542547968 41730046134153085918216655470592 -627306524984153140617750653131816960 8112267141664083322708121540886528 9899117286629999634958589724983296 -6621138527624925876518647087759360 9992578893748877206561833500016640 416320919109565516003456090898432 -586021817364220046263258611768623104 945653256463404601262346615128064 9878037494304790506565370923450368 -38795251776551286270665061904154624 1909100908053380201743803050098688 4300435900157807401356647452377088 -164024170736746262322479652279418880 6238826946065642870414720767098880 4644915571089571793115493825511424 -245475016169175642651095938732392448 3410106164807287862129381664096256 8880954711426287946398947770105856 -314120787489042850635570290964299776 8841608709922593216843017399304192 878964198137360645059200380043264 -181794029856774565130139481944358912 6326090842076613729784949343518720 5444433127296438469079654652182528 -355930734378360911695145416876097536 1028188511254157333527814431834112 6531053401449325924110854480986112 -616619093497260671428929620195409920 9056961121403522900270926224424960 7987446210496542611987962678738944 -740592891413500532467431242777755648 9409068346313809633269646276689920 3034066578504288264848031189303296 -208944131989604847848624661723086848 3875529054508928418666923694227456 4938103177535406779023006898323456 -454171572500319624660332727611949056 6824666524509432445343263887458304 6166835247774045128376898570682368 -238319623545762870928416822572089344 7988201497221463556848515784114176 6434188937103223670533916863758336 -158546585832021769443393289584640000 6075923288014122842930443473387520 3497694584093743883976127887179776 -836666421287247838754462187514757120 7516942516006930281541159924793344 9116643101669079759855161450692608 -935089817875946615633607509462220800 2316942282142503341323750731677696 7811137412894360906517612247121920 -586088498257868602918677345191591936 7211177674439333040410245436801024 8977136568267668893228889641320448 -647953752660406052065725335210033152 6594259955710163023455856466329600 3097477483527511506875256766726144 -306653619277189114629897071844392960 1902057005293784776419845030805504 6902042195050454492722111927287808 -703028510541239739278600924282486784 5073365274904108740979920763617280 8886852248489900487848360046231552 -81507919095201355003888529133535232 8551400723687208479116863056379904 8319523381083897846733968836132864 -840941912430900177879454453271101440 996175986873833006000474951778304 1078381680365911848938762401742848 -449810243466067814089614461260267520 9818751284238981136338844324462592 2981671513858078223134373846188032 -374886999723405810869871368495693824 9310827073972653802532355417571328 5932064819585357256849037664976896 -660483079130893731962617556795129856 1517928612096739835087006220681216 3746024286057631693454509202210816 -355286733129830767136154181779324928 5296604607799094344305772314230784 5459248703416955337128424918482944 -744591533387137089240341986863480832 9941992680734737285357184267321344 7984697055556257615873125398872064 -855727044185117243749659356050751488 4519722641824117160051688844820480 8358598388589904679006722467037184 -94108514938611245209207744168460288 1997260473858939851924276007403520 143179548087198315082310968410112 -874853598541083294196654699049910272 8714260194924965097993992490975232 7846027461934638725190168499716096 -118779787491586861073334576523247616 9852148971878121952010998535684096 3369709659278659786804474006208512 -527252520546344748913806837370847232 8923872180117712619779824642162688 5501930352544654068668829853024256 -644783108697652878114857827612753920 7944850667764515899967460379459584 9739443249341127835040832888504320 -581978740011406010378654544631431168 6832872450587397345882137419579392 6907895055554684934600962013659136 -628255986449604320555623197978918912 6476001875193261810725363896025088 1572666966966642478576996221714432 -391776112501857485895301755593293824 8131978269549600655920301627932672 6340899456684174073195257432899584 -285215387358794725593071361548353536 5647192116450244427080408571576320 9041996561196673499431870230691840 -989711219430043435275271555833135104 7966320493708687273852825138888704 4153350884214248262661853222535168 -466841567112586552896014097011703808 973634014052225031262130822709248 1430297455158718768523981652754432 -41796772057017850946639709857644544 9668204194360198851131494010716160 6757857160188388632318220517244928 -400160753697585195175257566479384576 1475248051366897388304177670651904 1228153988231078570759286719250432 -420416477614588006920468057563332608 3716762559173716124383740078063616 9954262272239150964876309031813120 -297169176512772570937724995148709888 1632842929217966248297609922871296 3190893046359703545722849999192064 -828025680645398541568887316209991680 1027009091060317687709125809537024 8936622272625229772727932940189696 -170302417435160590337796700045836288 1419421195043775669619382965764096 6221209302849738986298615764353024 -658683885718628031741618549677883392 6816058350359555633178450707087360 9138243731935197736446379843125248 -273611663252027800120461730921840640 5986475323177766089663391289311232 7587338541571960848046680315002880 -348463432130297723302555200033652736 6575184846197640113888679925121024 6228252775775733652783768444862464 -297408384149162349016756845883162624 9462498145247552311392173830438912 8861253980514139434498563745251328 -393743791346875593086513917663903744 7710323338371102323884372350992384 4582981684511274615113786178142208 -224096887845961414753110155790909440 3977522245321290791080645321818112 6991354173142348029923409107353600 -128150211621491442685260085306851328 4948757789761867540550999190011904 9367018389751375206013105696931840 -162803585988592648871971317952282624 5915125614675427929657403431190528 1204996233772536069537732482826240 -161838415821833726713616860549480448 9871090701275493244484121270419456 2554898638526322694966770418057216 -961693319146294598457168160859619328 2694099224517712694492379591213056 9533218810703707248282559508905984 -611099810103684031886950506484989952 3682277453822598013503569271980032 1207974320489464387906820387110912 -706784217181041109989694835563429888 6338292608303320973823020913131520 1945549445960971963359251532873728 -424392405885203783915351680206503936 8293870234573506716819351498915840 9804978484607785373792116787904512 -823881437628469599611670341183602688 3001731217898571212244031742410752 4111087228320572435690483559170048 -924306860121627685714914159309619200 5675195798683347201299249442586624 6199566812913737248448279228710912 -927377598824485350479013441783726080 5086166706079857643097534920392704 7120783569964595130118195390709760 -196611739897294107709962877623336960 7078052034383278613438754912731136 9998537144073082877908405754789888 -930075971140054856897773915330314240 8956567763359235723243761224908800 8474517757996785586975989517254656 -365290030150885171500126017417117696 9655117730993418707833688348950528 4243803402433399783912875055120384 -310456473796038332789564645438390272 8030645320412555481394574077722624 6455945127628998620773202425544704 -778674041717228860245984742024937472 995027994039780228536698948026368 969272332906729937922532323622912 -432804178416527182830457704060813312 9736696642566346571982849651507200 7795176049811417195673959775862784 -535090343882894919574355748486905856 2128767943325335970681511785529344 5307981469118884232518756015800320 -671808824474432206645983906633875456 3179462273630885000101981121937408 7577869781469320945766890874077184 -278585277859951725267153556076494848 206152103316300621315277657735168 7943865522130693366519670830530560 -103457771926858317525099472849207296 4769508394810945509970364795453440 1157460465768536051854583636426752 -429589259491136999599254408970371072 8682044210129572162241858572910592 9587582353638607178419160959942656 -151557020571510932656176881207345152 776656796691561680208681601335296 2003193687311785352275045310791680 -624380989066617753739565624111136768 230183255384576308696989325852672 2807675830231464602864739179036672 -905965210397651586050728990309613568 2018748989231798552493490314412032 3168525372377021609993454707802112 -323132854480537017754853073989140480 9687169107812619236458191468363776 5209517787523206294699055415033856 -453989392201364873389950043911356416 7223362375323006674753344614957056 5933695316742977908064942649507840 -222826139536504748158965651897057280 1195354616284143143030681145180160 2768176503415653928865633377714176 -798860007102834252946274979120414720 4430954535224027088799544152948736 6303553485153622098586594762031104 -66055607265826986169684672288653312 9277949954102211398986325922152448 2952769799349781965583799008886784 -465058515159692955141070187501977600 8568871547246848366737410052063232 3831793016143607209508050615402496 -624263294259996043107606560140951552 9626181049258936245726569184624640 7973909505257895138050984864907264 -232498344181081480992176132811915264 4285072141999822266559038836703232 141795077125164051844893471932416 -980341795462349056666713780339605504 2247534625807317061052028873080832 3720379826499429594430520088854528 -812519083583993689144074975676727296 6362440419041798613411162526580736 971423259694534235926922971316224 -789093166867546700174682210581872640 1388061605479520634426647403036672 7793560407468587985331088198205440 -578685916294206927434099308663668736 3390550304038131154623964471361536 1083873113220838585563930188316672 -806103913931681899928352414844846080 748492856865289649289686320939008 6115833968926196718994336400801792 -242868754030671968655900584892694528 8306362227623415569044634597326848 8547932911722984834382211735093248 -720637247628348544726499617759297536 8769883787279353730667310238138368 6608447660065461120596281604964352 -801332180098550027115510367835389952 1068020969915155664568481950466048 9736815178628147553337465349603328 -206247124669188493815174799632105472 9323832122172450935418488254103552 379239621761732109482778062487552 -711319715974985893956706066438815744 2138393743529947803740808690008064 5811135895367177890305283245211648 -825607132696794704749518531401351168 3259846808841609473479594918019072 9856434021125669797349916766371840 -331054439772410861387428850409930752 5887261815160920037869660630155264 6683606310085032970486915782410240 -615093572081147005325424077087703040 5901225575163975337599405802913792 3759766025198209687718364652240896 -472584411541415444382489163287494656 4073686705287201999652378311131136 6081260465372259768639849209266176 -386264098652273450164633193848766464 6852069855601535313080564236419072 8231041924655672197895608816631808 -707196030990519498093784284096626688 1977074222234975446759281432461312 3065399143294771732783192713723904 -605989196321135905477115861343928320 4622652689722847070871833492324352 9972436741398953537783517841195008 -129117309742602151522763202082373632 1918733361209601225051516558114816 4478582892152473153125220352000000 -728449958663904166312746345446768640 5245984110698313749110737405476864 7900283860534413230997498429964288 -973416328941427407658504293449728000 1551172724326223220228153520685056 1656154931464272490749803257397248 -767391287472044325800921393398808576 9980406847913191343560414828953600 8656843899754723422707469481148416 -622596939551261722844429398774382592 7655242998937600892955308039602176 1750342946113790033643362699968512 -41384740336035736208253572710662144 7117196185743711269857608756887552 4568888744271931329583459107602432 -526397433514787638682601035778752512 1270943481699710030429565340352512 7351013769139418372824449916338176 -509508384376769594057873526339141632 2656562042361772011112946773000192 5292859868810058577444550282838016 -882187194564027386411258030120239104 8571960659010966583742214227099648 526155033147464630269683334905856 -407645638460641337862547276113641472 3266036193761668369264146567397376 7521317725681467178063167659966464 -739992464152447886372510866664849408 3808260259408552340737033144107008 4954333256622741054939590817742848 -25252713823533440097141972740866048 552203995799785881919973788483584 2424052830665540510873983867944960 -781248803027434999518858363187232768 5285530792668504139536546270281728 6365462172146751741534087434731520 -204806814239106083963806406796115968 6565394178606067683915353403949056 4771206259784967097732657684938752 -635197247552587452152686837827108864 6882194145579186292776742319816704 4529682513371817364438889499983872 -539095825547143753869876454760644608 2662682972671774319606978517663744 5587508647185134745087591351058432 -676151401829981407149578271584157696 7302977010090310933399111165018112 8894855170009905103848173866057728 -896461817668017264038276550239453184 8516156909964610649672239842066432 3739635887802488021485438222991360 -926237177604953242364696756230291456 3309749442568811299318395813494784 8761197363250698074535292456402944 -597396662771353894099423255779606528 6796438386811574546213435305099264 5164624228174904022640867254730752 -446847928771027318376023136726417408 8161361415401662371217931876958208 7095931382940029611165526335160320 -361873243175673305964889175482171392 891841074668027889099912878489600 480738449905306822216091086880768 -339276800041408079031256941252837376 7548861450604674949888864610680832 8104653805458977065537820061335552 -152497621306289440527155732475281408 5137883903444626269815399748993024 4586115913273829674852760604901376 -494429593833159596261625156086005760 5006960725290944853383003970207744 7776364515322319006895327900860416 -281843640892204136490173579147608064 1770395679484084885842526746968064 336659888604458835957838409367552 -647323410702916184405971438380515328 4303408528175182514046340163436544 5463909468760677529708347739078656 -732915622705724200876289656707088384 7833902613196139719327829144371200 774328138656833205509728273170432 -441472761349677407647932276543586304 1592833747877201693402353207607296 79153054820964503870858086842368 -8472178248901952618903815399145472 3559334717796291190600229590138880 596130161049252578710948147101696 -669011836603784507937135093857910784 4982732285326815418888261241667584 2982473709037514190620560023617536 -389635659717578576811499448122212352 5893091599068497253148995052634112 6922352220414148278636352687308800 -685233209717759907192723065167413248 6969765880205634066158564707139584 2330185750274526623232714015244288 -93029817946214343953746321943298048 9819663093692550292689254459899904 7124634652085359210781411599450112 -656936598565408268278879844447551488 3293576105593855812708318788452352 934164671694816559359420027371520 -876221298528350222114033903266168832 716074876079094670068842326130688 9395648112456264689191868698722304 -949548834315320068029990954919264256 9115024656250602275405766588366848 9244533802712623000031439372681216 -709434034757100994342621630229905408 7642319230818682705366415197601792 7224088534204315802626342942408704 -727862774961068308399803263419940864 5822704624272410226272859148255232 8340106503515121220813247834226688 -120511182066893854884330192066576384 7435445744182082880366849294336000 7515721028935428673618995394379776 -840003268630552760504074280542142464 429696065044588351595091167543296 3906509475650334892595689191112704 -740897224332020977027695318059188224 4880612464047870868896136902475776 543115059631836484295957720072192 -184501181627470285348449559915790336 4007870270839211353822036179812352 3251063906019203845854394499203072 -722175644239597080044852398612545536 8954621603353568550785854897913856 6019641613757871908584199548829696 -422347488868118465144169783311204352 2579737422950709584155371775197184 989359794011119313574757740314624 -434866909210534608092603075675553792 5216043113468926845533746785943552 7505812184442198436793158830391296 -528622811737825591612814726220742656 7580486438932748671863742066065408 3863899136411334902504446547197952 -79617334726014477092068050276974592 9972455918969062380181851155202048 8008571291847222362641954940911616 -913203480429559572124165306849427456 1217875881094534792776517328830464 2930822006754160787121383996915712 -590353951692311402987635058617090048 7466485615262767964033429226389504 3413408708782853219377493152104448 -461052913419531985795323589461803008 8667463113473184848787341056147456 234925469627808805152361973547008 -128942114820371519717276063291670528 4031696791211455169721997983744000 5149252582819911713123375190638592 -604207235321348967185153937656250368 6779022177719185499365036072632320 7719525904611351576296044971950080 -171416479284321650709177106327142400 1254320774729740755122788583342080 4243045044064824509882258146983936 -592148656161418427634432711350812672 8771800068836809545104701435936768 8283458656729675499340655847538688 -586536064751922651431156795553349632 7532414605199056279324038411583488 242377346278663823425958718734336 -157447750230384854033155547958607872 1189838723687213804203750698516480 837040021687532860826078792384512 -875316454778418411105520100973740032 1560326133194577518182954931585024 3650127524371713790686711718608896 -159319253823347824695195135352242176 6914220852396195318131918792294400 6623381073846171579636569409060864 -754158212855443167029134074071482368 1397708362344678915319829213741056 8812559153377025522212742612647936 -117343767413212137171171667316047872 8823911469019289472980246413180928 9063343597392982576069446228508672 -911244980677641182048812160163774464 5360509342855716208162302731485184 946269592258605308293020731310080 -934894185462361467792962129462558720 5933440774018033599081954190295040 9719349179779098088313503547916288 -927446756061514482583333420918636544 3108153981150979778311385306365952 166404926720497729203970909405184 -325999315655828963572395252733968384 7732089982729852462645728289751040 2498429654275426052451750018809856 -926200588529004558652420741153161216 4893241200551673102038584654823424 6672935608798382783614423238967296 -800311281494004205194005323712561152 9330679948154511272152805612191744 1161179883900152012134335534596096 -790591580552805867421424478207344640 6159268250603121097686620141780992 2002867475537999992031917360807936 -875918618142131398591511322607747072 7466765604773994532440288977223680 3139285547756378062253838787674112 -717278592278520820958246746573504512 2257426599955640008877577143844864 1223236882601511624167371720097792 -408416594884439405330188827138981888 3513730089216949416681087722061824 2322149430358588686384797673586688 -887448374336403708391547306313252864 5467445354651936435728736533348352 7951678688292333073311262585126912 -753709703084269893159876682932289536 4805505775924057790155805939466240 709144281016599539209753386287104 -777409353607685921315974555725987840 3640521773614064053737844396523520 5098780336067126891726425703841792 -485452949513911986987791794856525824 4925559821241974155368197273944064 7175265358870413564425452155568128 -874984215623227660927790332912861184 9200430696814175540978753105559552 1099940800965047050040184330518528 -260016424353640635449256448098304000 9415524669596033860744348832890880 4736003357077116467596301942390784 -736575856143698073922876157798121472 150090075232266222408907494522880 2407774886759526851313536342163456 -134320262348814550292753166538637312 6910932908481264257976716348096512 3293481920211457618638636561989632 -610503370172213219662224748072402944 2185291119918907323663116803244032 4031048159232026049653837733560320 -222579631081231003280372779091755008 8509850336791373517694790786875392 1959610189765460955876670851514368 -669276905816460561976553593796296704 9930327813881422998305000285798400 607176162412325769672214362193920 -771541490237963391083070910330044416 627101615909022801263979413897216 5737280976573179330180416293306368 -173382637178176212757199691723046912 9546993565953000638601556788248576 4625813376891256790092748888735744 -534487403018359195754736229097144320 8225888604965505325180133320949760 1775119000143268175485233262493696 -232929932071792607666985841685692416 4006837656487782037414282906304512 4259722792283232090503396418650112 -679513928108294856776584038111510528 390163465761708178684570723418112 3144044612425839753759515033468928 -468547676100711911974676014255046656 1192185572247769878811859874742272 6297101834629619140710275309633536 -827501229611930498767519939689447424 4257174310100415820882186225057792 2838847644630742937729662327980032 -619248018888517427798783182057242624 6740332649293759773138213473878016 3491738476676732632646872700289024 -587462323930682143034234090423320576 8793557171232781622455973686804480 989627570517609884937287534379008 -515293574594139186726325147068792832 1974405691863726011398000081895424 9985910152927188650894723379101696 -644050781100044512777424143757869056 2730297209319038192000073281306624 4248656815199067898237774005796864 -148764000855068659615427947978031104 4068633302903607807096249408028672 4850552008125047357561957810962432 -676309116822694545407087977317793792 9866118786180554324572145140629504 437115240252903914409407893471232 -629669689237728564442488406181675008 3565755571897057921829359442722816 3064744079385360966939954007506944 -659126754247914122643629068248940544 3136070695872996643279941813665792 1326661561893023655807326898618368 -513551756776622824356998864460316672 2034297559817718908441696078397440 691340012393809434810870445113344 -331770695071095630003265207875403776 4796011805474813006452720045916160 8553813190049643267602182637092864 -9460563282646148930669354669834240 905786717871126899899357701603328 9421561519801922244131208885698560 -588711988829099338006238793947938816 6019382554883687393698432986120192 5800014896953253198444907861114880 -176009260282371214163678064944349184 7425229888456266361021289769992192 1535076749935141472733315075145728 -751972710817324570574264496212148224 595539614334213947104738628599808 1779259886962659175181978613841920 -947245635945899621066297141446574080 1131964287238445743408498421530624 4444961610163991678733212461301760 -771167901476690128295412079530082304 8273459360114367623757178127515648 2844331454356044761846569532129280 -648509858023110240026558708242710528 9567414640939174183683713348403200 2264020738223348525912875327291392 -154204105702192453216586645934964736 6866385773067517671021626198589440 759484909878405405179619475193856 -980497354624243813816443611549532160 8034195972130670784014756284989440 6829025244522084820021646519697408 -669774152968421464249054671453290496 6032412231644117766788597936029696 7280804594659512761196508142895104 -27593092598308345019200968515911680 8797059912034046502978466388901888 8755063521534349352214883001696256 -813429014971704489890030178938126336 490700491987904817622182040436736 4695370996648031928880315594964992 -118446769150633400855712646360465408 4234302131229731377406572962512896 8429813223320924182969662400626688 -871069229024104802274223556994793472 441168448793962048843176023687168 7508545629557104690897764149624832 -604799961660348469516221705544007680 7614381042062795961504699502297088 856420615043947432269831022313472 -704387793146316149573936692554891264 5312415453302184024892432460021760 7695101346428136860596899296575488 -845866835968292803380898487498440704 7243759088868338933259981618675712 1514827026468904050392385688961024 -184710109429543831301192644762271744 3891223098546686624737147433779200 3550555867556997140114472630747136 -234509098160007516594633200577282048 2593726255161853270588517437669376 60033138319565412775448920719360 -664295714502406849187655480336449536 2151096144694030571702923034624000 9903662811629613708280881171398656 -828467692388190993140355762774605824 5736341724721887854385855461326848 7376111394468774373800566669180928 -306484342543576174224113952819773440 9567805893385483427198584852840448 1628996506041573084797479904346112 -396695711940045654973438476196773888 8564330496954918542095611389280256 9683244843068170124557361562517504 -812475389055408677129701229085065216 6864171184095931422221166434058240 4662011524406389939889230753824768 -609778422374223644495009419823677440 4125448701931821404746097662885888 8797190065500763649450671928770560 -357328268556649913462394899534970880 844295173758039582934333925621760 9583279196748343359385281369210880 -738635195687412935176999849206743040 7840058800823213015405374814027776 1110295122531576018143294892539904 -134337093743316080846170078763286528 9913438866950898087514179995959296 2084214463521329257250307516137472 -991401813863364611933562046439751680 9017148419046192623242393226838016 4614657466506553068024539866202112 -745230619834462856722856557458489344 7390881382315697683054076025110528 8083562722760666269466151394213888 -205514623625133356564263497879257088 4788706776107923626293997628030976 8709962438426432718957513134833664 -824740480249521912905207736787009536 3997407845520980026650772354629632 6696219946177127078326732830277632 -650992743788059388230241888384319488 8041712562422235116063362570518528 8236163083247714434457654857302016 -705086470984827313164798865270898688 2667915546151265501971476885012480 8612960952745204902162055311654912 -866751276156010884881937420590776320 3215051535005197212602991724462080 3465891276627949484876497147658240 -153366716816592744251003812131635200 2764956145286338631894317702053888 6051258604378124107141772178620416 -148164237918945568695113032140849152 6827439904356243443787921449025536 6294702557554761795431184384131072 -166662056844403104941612444348841984 730950605197112907680441918554112 5337618932017650801628633666420736 -683599653661903692498032265810411520 5716358172146948540744962005794816 7382131828738648537516340586479616 -618630844268517386897340387878240256 6220415146819681075912772035805184 6778011396561769812813299945832448 -653853575226690091924863220742881280 7383512351523560695086411226808320 9686109574541615890876488044511232 -334068797522714165471330847623741440 4129758967630798990719238610616320 2817934483520866404894195253772288 -468278585973167843975954347811930112 7433560834729008921663481164333056 7541497238418301795924601831686144 -980812213225772546736997486265630720 5245685359636727880017924310695936 8516922728749003328037517233487872 -815710511915412294155206848484999168 6095592075797359239471887693119488 9208400900025375325405141494923264 -610116739669377324977676337043996672 3212742928021630603336783908306944 8573613904285208980379705421070336 -177438932318747957270924512026689536 8806897374516907465504917624455168 8444440543844069769352387894444032 -450840674636106791928893857859633152 6279638601915287082459161807552512 8142340559592045629216224603799552 -701277133472962607411969246778884096 5433171603017716372930784512704512 1576673159594785544790618021036032 -376300297353541380948767092825391104 706446045672382303333945800916992 2581492871233850656920963171483648 -215095880051398934569105993823682560 3610337123431136530053428815069184 7556662752316268858619745871593472 -172374690759623900961470397852680192 560627357521728121452536161894400 3419908210311684632001626993852416 -381235939645378187730813019167391744 4575795205020036856975352523653120 594834697703710023455261977477120 -987569319604933014690623342166147072 4902222570259921233258142209409024 715700822457720305622110521262080 -903752978651787243991164463404285952 9603513179709083140632398801141760 5769422891449977518156952065015808 -758583157260692329240750691864018944 6328909391124859486241162382016512 6053128206211717648420862949326848 -648838027498104975846719155081314304 5001603314249160892462832155623424 2100666792201792146948233044688896 -597999899453060454927338219805605888 7279650318795434484889640337670144 5712325726872513617422036357873664 -144511283380054943438054470138724352 4913585313555671463269141307195392 5060896548792358013749021510729728 -309408416095562038835669942847668224 586452669121090537075777917157376 4173788970736257732839281019322368 -869337280074558286234297549262422016 6242814892912550297679347574636544 839463050789557849554138425196544 -511438688060057353605714456944312320 829779248203665424864828366782464 259450835464917230261594235076608 -982999444001336358981662690007580672 6622817275627872102308894306467840 8162126911810855921605986022850560 -75973156417046751400514659920379904 3977712416699404089079742750261248 5708653961695189667432960832307200 -940075096200373755103246368469155840 5690862322096885966481916273098752 928740239787122379784539993014272 -86057736450296326627112071156727808 367314447974984033889341266722816 109214542282036311456473394708480 -587607835258145369703842987879956480 3733357469242433545823920303636480 256278844109553581400690054397952 -73382609269997641934607502056357888 3654181121304818312004068702158848 1976697221294610733699263736315904 -8204631312841450956085233648140288 2909142686014224131972817276108800 5265401468841816699522294592045056 -110656248734333342203311482887733248 3913901860920355560081968295051264 2423907143901101474194126849179648 -490300195991285987620681060506927104 2005257221411516045809253772951552 2794427563412354427980853964439552 -243236404047947403782449897528098816 8545970130021740639880582151536640 165041076229956884551411792084992 -12770334795442870440083225221005312 4879707302889298415635988157038592 6075144491806537500638739295109120 -313079062955458981261131622396198912 8951893868639957478346732561498112 9225768103698237129642990848966656 -182909576167128864365007952274259968 2216432187045530594097130169696256 4405477228755108988584952900616192 -768720087511342071912623212360368128 8768398336792381447418576415752192 2379648836903140215995479067983872 -867832165019584074314789746399772672 3453226225089338302015786776002560 8078652412877836342079199568199680 -107234008838786824743950625189920768 6291099067407423998403080542486528 5692378126963840540352668007137280 -879177966156552432316414431279972352 5001362046747316929584225365000192 9741874061234173535421230449950720 -17945316449483693982222336565182464 146030001875211362243948941672448 2325221909665690517364164052123648 -835495121699038741478854276547608576 4902889464886848197855305193750528 2558990059412467370591332862001152 -482817751836188795853122819044933632 2002212947316390693645245550166016 1873685850269246727498030148222976 -801632230480189517327939493181784064 8486166514423023153215055169847296 8501220109874069632635650273443840 -662013334086938087160310875717369856 9958985614421211541330563868655616 211128998126611834657880355635200 -751846607373730679472013912313954304 1905574763623649326564911618195456 6761145759615158753561464750997504 -148692728112266870829354700026937344 5023419157421363384055225382862848 6983432095764797317631855982280704 -939108727424629867666641981324394496 1233404832067093955568286925062144 7451244301506351439725672175501312 -847087522387113657146103633123737600 5635216448244414629143177030795264 9398535275775960814470045926162432 -220456453184612227905880200298102784 4143968508232524012012272483303424 6854054048372218736514904732205056 -338369864245768076707173143169466368 4454157793624840447586086443548672 1449201937732405313756118080552960 -920206812027116574118957084049408000 1179409696764917671378034381291520 8172361687144225177385874942328832 -243440962517578514202306460048687104 4400260549337681775561399141924864 4044142786072845780650566466142208 -59890473650103118856386518531964928 9544603692702408030546791256555520 3758749255758265484278285383761920 -196819392259783623048509180990193664 1510631850609877514501068924387328 8697913082589233303797047933009920 -275446829265832445738860346540556288 4913783055860416514300320596099072 2582631544730949804466548047347712 -886682693406741580290208206415724544 1604926892978881273815552246153216 4075807101167364272928409048317952 -603429580753038911024374252239323136 6405213547173208090642713197674496 1886198537516520255243831595761664 -230429955280205466128987966270341120 9864553817836875613577953656438784 4815613093407957695629935117336576 -786426602237475832682882765336608768 6480303444782810482918101857861632 8467528876566952390629041379475456 -744038443706688125421315194794016768 4563643320746326919873724590063616 3106206393505990087622277027856384 -521069117080246684133364452133175296 354988447494832074635280455303168 641599510598964221819683977822208 -192603447577064153120155676847374336 346355273258537696847665974738944 2664540464302417404665464314920960 -194021230315283183541112473284247552 4615507010735543316265750539272192 2359688578894064632135957864251392 -951904132640677501661500630374547456 2843915961741147079744185933234176 9259353660146903618226233439944704 -981438909981107856973312547878862848 1550835771680990029811072576258048 912654538044745040699155470614528 -843768852883542314696320382715035648 1113179837435140080430999169662976 2147717985096700691942535031947264 -245024611419064953427422956075614208 7968414626181116308425204425555968 5371165278315511151356506468777984 -934500997895918420957694121159426048 6709653797551649878666476169199616 7525820314978979185751290441367552 -652804494353551731725692806207897600 7423358435410565257917176672681984 1687552415655026417507948570869760 -932972551123250184396805558459432960 1142421926235229599139246936948736 8791343461847073544131228536406016 -350507520121224627862292239451422720 8285932944669236067048439576264704 1898520582110523768929444956209152 -501338146143769897474548999454195712 9878931658233557640088374078341120 9239123362900105305240202404429824 -190052789195228146204297603808493568 9730023101609358463057670396968960 7661204127511537512633713597349888 -354407490714176646948104511630082048 7962560459309823113832187490729984 7813832192859489192921982010654720 -372762699903725018883426479652208640 938117353515629235198419171016704 3598825360712324398623041844674560 -980407944992209437826276036360273920 5036140565732720695981009610473472 448471011274256742590755477913600 -152597960399317087519759978146562048 1623885658487377919570581519335424 6228664240382812932928233858400256 -239502254527750524993410160276799488 1892068339039112688155908141744128 5577477207942167667017521668554752 -238011597734827701446942813981769728 1047034569321987733285126864371712 1277668369033956822900501861367808 -85066484790288138667266537229910016 7662357063276020554615866821443584 9262654068768313516102982085640192 -441628035429495552252942220808683520 1052853768967098326201301368569856 1662489785179556749498217668804608 -642968010287440099391811866513637376 1788592127685444517701900073697280 7238059376992583933747071574605824 -504677920528569086686646870776741888 464693055868829267617636172169216 6881791680986274232409084072558592 -905109599047001647585680103290437632 3250325802857152605615715839377408 617123329761455527291979896455168 -639362368328825977705981553221304320 382168548054350810004116448739328 6120926116290266922937927608565760 -891225732866458226383070622826627072 9680486041759115848163688571731968 5127778342080073446221374336008192 -333726275291410810419616290854404096 5341794480554290795254331689926656 5656086085761393748835789443170304 -476254787889405140171970501020745728 6889200908973498313490919973715968 1789471800616179042546268359360512 -265024198469584597478324818564612096 1833034978543333500835723726553088 1884401725413940989006095713304576 -664449215203879595110923864559845376 8706010037539265807946837282258944 2330471932223645029808614250905600 -10957886784930054888844833473953792 2431239285581487399673901462061056 2871776301219953534902335698894848 -645852270364548743058809681552080896 7506634464405326733710005190524928 8653946477600175259067768306139136 -574719788196307906417723332938956800 8563892868689485331418843638136832 469947892375935415137709328433152 -873016621583895368970734986072162304 9020860048281961427391812097540096 7601098678446140751953971329892352 -171856263580775802042554679956602880 6618979236947145206289897051127808 7927716356255069656404226752905216 -133382799362079344265862650804568064 6088893936959850736588357132877824 1248459251848613881074083243753472 -839027063801994302103166942055497728 3622313591392149913543662041563136 3445119637584388887635091691405312 -829564324613425882443061385440002048 992779824039773183267106881273856 8366518063649493069724935857897472 -277118566049512790901487298429321216 4491431388391718141564072581136384 39960321769778793101475037839360 -217484099705294581596688151323082752 6631897345263560017100100868243456 4269844829495819371736126172692480 -186254388349311505163691192576114688 7029271615171405700699475356418048 9270931542622868061065868405112832 -593696615248630862216694582782984192 6548890707703707702570111041798144 3229269475520639776056275810385920 -912920273252583337787830381272104960 9686683341503883776460222103552000 7619682601339518955806169728286720 -988991863948353485548799358375297024 3379368639909994149299640692899840 7838352626527608122617635331375104 -928600903437723332616288838728286208 6424340769085643670001862475513856 7833916470205210553729970545360896 -534356437823576597756738122385719296 3837062790348613830041966301151232 7818218877143815866756913776558080 -310003393036028098017546900013580288 6535379783836195946142098721341440 1390567455864972279718964656865280 -946267732274783102189187970489122816 564558818614613023994750026383360 4080753930240364453701687774806016 -221525479900490659838562766302478336 2246166689001136877421888047939584 5683174698003974746584536210997248 -832445041319306784576298837329575936 7477499291209709169287755919785984 4401856550544274667664107368349696 -534850294495376578614991693488848896 3465147340188150445662012113420288 8070232726108396855344355392618496 -790279586892601130537178146271133696 9044772714887231144868636713287680 3990093839111015103192195204644864 -81300997763018625549132782888812544 1892850512399288993784515474227200 9600221282960417505666092796739584 -700208120557122157048669084185526272 6792309864949290281826290835128320 342592084332907437327581959946240 -450431934789561977045284708866326528 1342519602889100424210750430511104 36707042624510061704213499478016 -183361068035271034713010785895841792 1696232633431939306574876650766336 6568849716205321424548592829333504 -855250707767880314844713160326250496 5968786454560476300786515172130816 9505770870673264841632548156080128 -273007161865831433141925543107624960 306181657416827570951296080936960 929051361910638834591563702599680 -519862706587135328923534343572291584 8279956462377648856183059215548416 3310375929740463855000892542550016 -575947630213096669368650535364722688 97922411921588795777992947138560 7916948609806753454954046958862336 -938936859951998907488141237374943232 2244354142497887135144275689340928 5365850474495802386578592292143104 -937689544116095322311537203599114240 6361452108119771913518904753782784 7800623971283096381693313505296384 -802380696937422012354068046376075264 6790182593491692657427694024130560 8895773422154891522960487025213440 -228188075209799780495197242633748480 4470800715807993053819048697004032 5927931839881649219979151243476992 -296980478255512128777855778148057088 2272042040610689098981226997350400 1487769321160373627988249898123264 -975209713200957210546705026741436416 8498681795933968858398151193657344 5448959576079517589350507096309760 -268369583270992282580670681559597056 5876046444075498630312298784227328 2732980015771521009542091438555136 -28645354159866725061007230682267648 3311167055568425122821214698471424 9249641601594254359643721782263808 -457198456883506890780967900513566720 4247376987953035007798879474155520 3022186449594307724117640252227584 -5600883547952333564509542565281792 7422847886984627058933904871260160 4972010131808707569234506785226752 -991100410136473953062821273026953216 6480123673430478724066639775531008 8304416205756264026615495778107392 -555883881697362538250528564424212480 5369761359611162815810050023489536 7382259384889280212254659962732544 -701640569198997982245670564675977216 9664551617514421089909833277112320 4078330383765014736877661177511936 -116715707347663353107904679240531968 8461568464865089747902076081405952 8218746427455457235043671812866048 -333321114086319835524907697031872512 9606717339871595585805613384335360 1505101436334797532603052070010880 -410906124508557334443595766622584832 8214930621122230152091559325073408 2706133082393919876304671611027456 -614254777410152635220057408669745152 6727838263083126752847108493017088 8644552995482033991609698045919232 -944284873492497141901340891934621696 7575186878319877302496885922070528 9127622444378799705363574954131456 -206551889735901194708731399663255552 6781428090879387523469526645604352 8748013676590393854383022374125568 -100547780009401924511021401439731712 8923954672921113127428111615393792 7421099915983569054847495521173504 -631883045826922379082722119715389440 6564708688195003518139121444847616 624036464984048036146996502855680 -666545680562669815992868678028754944 1443184285015302137335319126605824 1357274995332001347068753652744192 -267541993787977373405172067960094720 209689174302376817965214726094848 2675043381563233095136024054464512 -570196979661408055283557397199585280 4957019300485099724697804843515904 1773848843841292552359928985026560 -459458094600292184095479230638325760 1560997973804347176903958268477440 2424726840361994651812383959285760 -823737689859065749145508620804292608 4659479430531884879225503654871040 2270937173820248761923634722766848 -441418919771065167351802528060669952 9756836851507824637253757310074880 8416464859615171470057634676080640 -671582791235810711004471578767392768 5536031326623815548047044829511680 7038368251247263463185694486167552 -418359594324069442969263025757880320 1222007800028089843832806558400512 7978707595841477741081318251298816 -401551653676731955169816380539142144 2687387617063181041126989166018560 6185066182769194077611574652043264 -965053311426004797054676494381481984 9602587646728346869211211862376448 6523221057717579680763938626076672 -293428200492129015582015933175037952 1808531131234063377476196124065792 1696469406307418332749620597227520 -827433637951381654239747116374163456 3797135932992615830143401361145856 7956666836690803060728937345712128 -506465002446485373433319335456145408 6672664490476028167585895146323968 2754723333280092208880693022818304 -946490579000033277141601734394642432 6554124085594994957645766308397056 2499717380928116988953885134553088 -991455015652179115706418747848785920 2208558347460653657077971674988544 9838031725453346283636119507566592 -13307687099440644181662632555577344 1024327828862794434578836107558912 9614005449743001414664162270773248 -258852783822175912131599150568439808 3182911503624822660783988837187584 336070193847597165553591412326400 -228403451809730364019016499885768704 8122345951479482256575140192059392 4308711025345605300390331886338048 -21342571485162480296924353210089472 138198981376797607209784641060864 2657396163803854429613551192637440 -367757794403920858568520936858845184 456001830100673784502075061698560 1404062708296246515910557990649856 -374515368666695428745537979563376640 2067309880491294177239537322819584 3036666638847429261778922881679360 -516486112634589872609694354059034624 8165635508860959701120485230116864 3261292840521786342012522818699264 -678393004328201538042132822864429056 8731512772324003039761471547375616 4227750156536644927626797102661632 -886732564681012766010736109521207296 6690705775967015798533872236363776 9949735636166972170056647745470464 -123480313297418482188277604702748672 3324932229017583687369406596251648 9405291905136169407085440344784896 -262565332977455284624537894889979904 2895644777959044820093163957911552 9907878058458478185942295081123840 -71195314998676694117142163747766272 4701035217819454162948737676083200 3153814941927777964878589576871936 -189011322448581411690440077688700928 8559654572891671214332269408813056 6929738882917236072304999097434112 -658608873773155207723083546536968192 4763433255481685691886887191445504 4973519807202203548970051675619328 -542465508658752355137384332096700416 207819494242287848596177634197504 3986491873299958344280270895579136 -497151381901977521323077915562213376 9738401524308734164575324620193792 5260503689682313589339194954612736 -979595339310082731721293400845058048 7691344214854292212403601798070272 1598026925520989425758374239141888 -369865821648287440990246164693516288 5595041191450783860905512754216960 3334654025979349411879080939225088 -642704857218954051368632517274894336 4882490224698889781333738620190720 1412290848251245507619102646075392 -15767687094925671299403645034954752 8168370845181318255141131751784448 8067246732275783700650963572359168 -893520682999863891184123571106480128 4698330743939176932753825224196096 6672459183349479105037321778495488 -906024958514979017510729731301965824 5207706429167185516051717064491008 9638463894463572696308151144677376 -783686261226082883464297123707617280 3163573268841152442065176905121792 6724277308036190736807277734395904 -734288104853572963746710611027820544 604960531141051320206648556912640 6971009202075346767416053100183552 -954036598345758378814377617021468672 1359956329651195565394830620098560 3036750956839434666321697373683712 -271461290989252011536581532609150976 5945022885604767335554741551759360 201161265561395166269222279970816 -881617910663543547367532116389658624 3574180775673870938773713011605504 4950240501741824851279735450238976 -883940680238058036600999185058103296 9504712975301773059464798746443776 3860312888134684396439757909917696 -435562667052247072843921746586238976 7259959343158668103260940561022976 3541392271975461624878746461798400 -361841709837157128906048771272474624 8002148234927245008653155938861056 4488814138380882004339627875368960 -190979995325922558161543682091646976 9100532261701769801578960423747584 6525140314221727269261149921607680 -513355775945463771451604192506937344 432762861578097435161825300709376 7310063675076762272777863589527552 -672698823209568831762272775244349440 5996258769845611211138471450116096 8893290956927441303348859463794688 -643686310856381278278169033500000256 3098508892865447348229719076110336 1368065611169192430158903269916672 -443083427191122055290894458906738688 8362207734986083680869842027544576 1643292730168324667985507110617088 -376254415093791799890512860961308672 4986000439205552572719432921513984 5956376777786306780951296289538048 -270492888143541943982407395601022976 9340089903068276585256750143242240 9953396315126558061878346900307968 -135634405534609936853162731887394816 2088014122486549904977131296784384 119221738304001638628040885927936 -109402039837282565939684655149088768 8076930653081517120183570263965696 6668633544962585718883642184302592 -37045789167524218995810799745761280 5048889328902078231591227895054336 443185464279437055148863621431296 -475851237046370678628427934384259072 3676971399919511235419740808675328 1519553028931483054383984178888704 -17601672600054182889726035160465408 8666615504943613269677286975602688 2522191519314780086473282065268736 -714043457608355294142623102533632000 141558671118853837511813905776640 2014314533773342620519475514966016 -933572599141449980095560729789202432 4710256645359437412531694326513664 8872501609394648609780351054643200 -82913817445405683977702866407129088 8861815523710231526710689080016896 6665469009366425149730595306209280 -849242023525571568429650276933173248 9655366593997181834318379239866368 1983920755663820789141343490277376 -948817858522699438589367982149861376 6388594644137017531445429498019840 2126581062267065378552903951712256 -571319369337190437718891114610556928 2686752274120704637211140559994880 7342301528402895324711355282358272 -200469157060099834743353630766661632 3878353464462624408351793844584448 292173090424896540053281020313600 -728962959142489497898854693675728896 5304645333353460732432430747615232 1854586842882012889500925604921344 -63519859689355230763443602470207488 468851304226960636943488260243456 9076218888227136604319154165514240 -923945350504744751193300786474909696 8423622796101177735038351051849728 6399872539857786325128765776068608 -897242782355749800863800090687438848 9118969808586338290743840736280576 7116350925880895183755251955007488 -980680042521986287823963427459563520 2712768761008725167996951672651776 935104459233909502610547754926080 -569855448702420062032183877758353408 9239320145788272412726183419969536 8446311737479002394439726022000640 -69858335578876933225766173722804224 7623754516175529648922744741429248 4978313903510496196427748485365760 -983362263557897816872327010110668800 7978504387128152694109680437297152 3549536146141449380327011878174720 -694587604489117660810144962360377344 6775336331458751605586146321498112 6665036299456130469542560259899392 -831834033480030556872137700139859968 3606778045775801596803213890158592 6349617243659971125710771216973824 -124692536938600488644539782715670528 2361970587885046850456429241827328 9657000641782642194523947003805696 -992099514534534401132745731115843584 4079097504259864598327977844932608 3879746680684667576649991027949568 -951638062030463873036725827170992128 7203119596503463283240493511606272 1483812209125842784453497209225216 -399564270520801589937413873681301504 7648118747886000302244200651423744 7506605138511177895804560092430336 -572370767372495998416432703630999552 4544133602409030672286972695805952 703929785947922703425802015342592 -236636796739872004179559779053600768 1117237711025394135353967830368256 1371910926029053232564105270788096 -60470346408832963205449975936843776 6489098597394893992384693505359872 1864193517719510624905136751771648 -887314779137041850870432039128006656 5247455808582200652218558815666176 6502820927182299406329300622770176 -55279131429455729390402384118677504 1111603334569656830533412331716608 9650581414819945068653671260094464 -783672608835061542009518766017216512 9453509014271162340598895502950400 2083560414283901591688344709890048 -720101948569693541466182426323582976 7387854016954621418124921372934144 3299908486317718724394813023584256 -123180835069808030590135600083369984 5136958731228233518679386698547200 6624010955036681627691619310370816 -345018735243599672685021085587996672 9085155942140342121028057294700544 6145537708191094357366057832808448 -431820885930705186950701054225809408 516534783682754629689989356584960 2813185032935856189952587250794496 -342916485106946092694533930078961664 9624026083701873605321793508212736 3974829962922873856385583339798528 -417512270779931200215141358585774080 5910542320978181452837369516392448 3948307715534562655609707816812544 -475927698022551122820561369911263232 3131697148673256991363633422270464 2635886366342835994245508691394560 -805555374074818007326537218841903104 1081201778325728648158542578057216 1806746737739795945731446668263424 -547372500798382226270468521869705216 3899584924125775597088842157391872 3143086003424370154158577273536512 -231255841475715014130607878530138112 8617109281509949313678504412315648 9105718692749401676946298099466240 -416163184150469723302017923658285056 4808519480722399895817641277784064 7489472279216342733968035264069632 -639127047426418570742710344385298432 1219334816472032726026640366239744 6082586071233397457337148170567680 -511365163480461747067307891997278208 5355618974961450493019088366862336 3725945823519194427337746459656192 -484099688308383885828125573500633088 937806893008779294763748880809984 6040092429053742334579608337252352 -318125421882148246707003899414315008 2757023762975767436860800096010240 4553087738531532004270855958822912 -242442754621185215296205577114353664 1534464234939985146156655579234304 6656854480064852594102843438268416 -597553995761206578268193646564081664 9434339507511852998917721046384640 1189301202690497485669459732463616 -414329317341249450376070992454746112 9731634588567290987782937759449088 2592363895275065990444375756242944 -653362193823203222549897312917782528 6881134899346657318229178423705600 4207615367905577837455155132366848 -934541225883874885901462872306745344 4011950602455203524061126058835968 5227401116541396607332790348808192 -148946578031989476530242595858677760 5687270309611746052916557318717440 7369317249716876420032526184087552 -464216352858729766820941593319571456 7375000550157245748527474247991296 7033530043299289504885407532187648 -51459476181124248976659744957661184 110827120690237478487186235981824 8601534324639845119328956868198400 -996723853101295936011395287557865472 1539349296087066664503488764968960 5661771294273478159287538755305472 -646250732350059970146861379196289024 484841105909146279400768859537408 2599432824144581646321669883559936 -409057383239266732140295043990683648 3930286946109082790826976512835584 4429342176389239869210299763523584 -408727065748280900216047467608670208 5396419701202337710591758036893696 8716105215744301027355492001775616 -30302558610904137196872652738789376 1799177347408149476357603267182592 8992258816379308980857894969802752 -721044182051525139813783300049207296 8725444952219632278148047634956288 4502461225520519305013122564096000 -539426707682267898646320764053094400 8065298278858764750769556834746368 9313347163654396512862783978602496 -871211658878743803748238061933166592 2317882141803267682116229952176128 5790458292806063087196463333113856 -776624409100262571530251964747087872 1295311112085649942705789256859648 8789780567341332591061474973057024 -454107114303126135493024147216269312 5434659594117155734433427366084608 1371039474880177611142457725026304 -814966406815535613890963370091216896 9459214415025338981960630180773888 7263715404805119882750866105565184 -786571452304953095262996384851165184 2268134224086572298696626846826496 315805511160581731185692042592256 -161264709843827843135787649810300928 9575792048966564190846706306252800 3110942145139124056831624287879168 -793648923881447830571504961463517184 9264143333950503591212547353608192 4618596873104263380146524279275520 -215312212188223181577120216025923584 363428693375532820294556490661888 1197652961380443554947644971286528 -856903560681848109941056590787379200 9096715950360855826798218758324224 2528546640446240691508872619229184 -174027976126719921336898351521595392 6989986590995683336833378237284352 1888910869361899574279699311886336 -913667995794279202782462890676846592 4701467009754726856813859768893440 4198626459555014603996778578575360 -439543405388456100367569860746543104 2844361022794696413424268037062656 7815749370869090571561866295771136 -926502617170587397830974133537603584 3982760707333936370308908448743424 2654448604942155274021795839082496 -52783070351930318124847390896685056 8504947507243039376822860290981888 4788075709822597332444513002586112 -870077134842836685541432750795390976 5586867790287699834641081849348096 508096017644368480874183425785856 -923268808390273783500356921493291008 693854858292799895342058785734656 4974286068029850163360500755202048 -611586428826901923072107317265694720 7345904809738258754452487325876224 85962197182783979268292233658368 -401866311841610112290640711965999104 4286387990981379208583842227027968 5677396390903146639885732065312768 -958691999302478637251039166759698432 547484951797751909710096836329472 9271364817452869871050150834601984 -527260898213361941170009507262103552 7564138882949563748780062193745920 3804188444321916344105788816490496 -880533705085465058345221543107231744 4691711478207973142896792014159872 8583073229883468993346479446818816 -751253867539629496558749066245177344 2924257338623941597231224683757568 615712785733200363692363547148288 -265254827697370786129585047336910848 4094556591453510521610427305033728 2470435971466408279729538884173824 -622378832351152527723523447503978496 2735533763259968112810782856577024 606819855669325660075120977248256 -26889325132142055348028758076424192 9892159074246324381599145157197824 6926270174500866863367854688829440 -160719416931148326872043016698200064 9930735482263745308569453318897664 7994561862135677420489663089475584 -215197892681720830304668084630192128 2825956270997215775841191406338048 1430957679967772607910463380914176 -731784607845886337287670688806600704 2998247897211916258409868850888704 1471416849874463756942805060026368 -197650490148736033567955521917419520 7756970878525867539037732869242880 148799373632881242032740086317056 -123688307177463225401531251380191232 3244877018665856878239902934761472 4596636158340857288567145472458752 -323262913513625890558506367384027136 1719881887727589073248183258185728 4661848049322021051425420184911872 -843953458915350460670974106485653504 410135652789461637212229498568704 985237720945080774040144454877184 -132802639836332950559303589527814144 7556246188169780267873931299389440 3271701021294350231586587531018240 -50811530543389159178404086071427072 1290186551765725585237947849900032 8585043838869701277521878880092160 -570310358040926662532780963972251648 1485037590723259651462967630757888 3048375316488100424434636717817856 -630097539305772402390891193819987968 4226243783121656948772469196455936 4644571742866904116266975262408704 -21573802312253012456611205414387712 4498699167882510921337097863299072 8176137505094340687432292732239872 -658541333333005629405477515456151552 8994961838044974552865346320072704 4606484108389223615383205603966976 -515107477201118977124188820930035712 6891339889876361018037690511130624 1411662262666366054055908846075904 -991844763668197271783381096422440960 5528290019852529573130616843534336 9440806169459627308441174299115520 -303710462493907772585382336629047296 1451958138672960824119313320378368 6900132092117041316939968907575296 -86789132885883326896933763622633472 3510727155970172022664152309825536 8010861189483427010038842334904320 -883628064118232975516651230372823040 2414612079328541565196235102486528 9108774117474910415133911233331200 -672521131548836639546346857792798720 8476132556090467148393753232801792 3811380316495861490169132814958592 -365644517435877748374743125587918848 9962192642072017588466530276868096 6219582514377150326899245003571200 -932122358192840423547770595123920896 2580183774953275584017274008240128 5220806545387675190083599846080512 -884162554240914064072435034954399744 6354506041119786781896613212192768 6491519139691646849269971820740608 -581417476470470266835217912394940416 8949768457707695848853982324719616 2614724130364807520420282733953024 -961066952098352790772883155012550656 8991866753416377652499435694850048 8966922333575095390649001051160576 -824862513098111587664607824735895552 1815532287028867342615684612882432 5241289452712411860757302032203776 -338817933428466652250201797162958848 6698884548289929637681289012183040 722368815727219155788338057707520 -124886349663584001279168075630903296 4302577814565807652123209677930496 9942129349014546262666781992681472 -301712905297746485865436344745984000 7783044477447850838765751830052864 6851318075010484249230044699820032 -836598771811216540156926705331601408 3950046844578649181510695265501184 5508298701352835932757847401562112 -671518635755807215650846308099424256 457025201893434148324678331006976 8054931302244247290748825386352640 -537894247055009697976967833455689728 2102327533228583045931743777390592 3658986636967490680122217336930304 -170494678078765625105283431289323520 3944038089073923792932900446404608 1351435724717050938885037017268224 -301159304183434805438061022705352704 6804403426070719692182245995446272 1407877572079162184353122223128576 -865431216306278075925897523085967360 9062074268473895855053755891318784 5516373434716809428974347281760256 -931259258471885426919627192075812864 8858625308096511435238580233961472 9171167470169269803130320509206528 -396215539864549467599761051343650816 3407384020826921198533059991830528 540538914029670927218010985857024 -454461024668622889864320617480716288 5988539411435762243169123381018624 671684057790421321846081191936000 -147490862387920831738641257880092672 2874910873880588179964219361329152 5183596116954133302653956864868352 -335731857292067456444040285681352704 9279162838708832201020234977509376 2852656897435266162327181508739072 -771363344958850714967630237260578816 613541005086637464520822190243840 8816584082980236443313049392119808 -409619380570516819143236159241453568 7479687845504217811155658395877376 6221594854051990048734017530888192 -592994530369913228843116537355173888 5365787007310143874173445756420096 775747794814266752544533540503552 -235612246963544294940538301459726336 3663527447767327526623840359677952 8760919645627942826206247126040576 -815031739434335607148943381408776192 2444260556323376236084018389450752 95490012727829768010703214477312 -633811468636246600004345565833854976 6665151261919004677116579171794944 2365793770146783112740829464100864 -515619595748206709922653876229505024 2993537920845091994577056212975616 9359463984664011755468573319888896 -934477633972941870499539277924270080 3170936774916892424211594722934784 5083563078242615308057725009657856 -646636526621782620016690248550449152 4407958485916653591768202517413888 1527495094395764117456706085060608 -765269680832180528729385482978328576 7645630619803632835096540174352384 2166242806449504096577310110515200 -716436955981590010303111406844641280 7440561623654644219076493348700160 7171464649896479006636369571217408 -259069446741461199444233305808961536 5169676778600320173131123067453440 4979498384854604363419537519935488 -593233818816653939115462891726176256 3386571469320400453469863709507584 9083839597308339322985904095625216 -118870107730262244508779760188391424 8360096214795420755703762497044480 119846951392902273738915065102336 -766793456630284168844199270249660416 5503555031842577907357669761482752 7840973229115745794992347889532928 -450113199274336932380752722635259904 1771766362506306111677788086861824 4446815064629575902483253007745024 -231371709693716135665346801129488384 5047548989498401373548150685433856 7335305702326368385766705013456896 -456498291213922688488042524733079552 313412073468298701417996628262912 4473107935145580730023568830627840 -752470044925106953881912502348939264 1357909985219160012154175171330048 1542133691478159866161079924031488 -928979487056003444284135987094749184 1990295953869946789231342819213312 5991530606005372929923470703198208 -24048038213338020151322596719198208 3521291871837022968801728370049024 8156248679694428200371583876857856 -663899996917111809437703258511507456 9902389950553151559020860940484608 6315959949093204906161876926201856 -853470233829034698874063971212591104 3388242877492768303994036165804032 297577621785583545470619482062848 -327812503746802949503630429342662656 2946767354502787104175332094115840 2825396746383652537822536393555968 -957128764127346371982826009006178304 7076145984032972403110036925054976 8208731657454448571911289274630144 -799557581873140804551268848078159872 3025497758748560386621290783440896 2626785186490033285760651507007488 -933861494640701479431377039434711040 9366805456442787792544492083478528 3335271293563423610589469529341952 -897033168148686146897019769880313856 7737863991650654037157748588675072 7140911777765726445195405312393216 -285771327105462129232945268295467008 9030443130753684580302558442029056 827568846901291936014483375259648 -669000616540699527685294758356320256 9383610036230728442419267277684736 1157155089383045012033273509969920 -313097227605026775137579090453725184 512030128256333023432778706845696 8342780253093831604289689117261824 -881558780865825255929700717411958784 8522427762254644130077574204227584 3940555245767251567292259084795904 -420149144915215874700556171596529664 8140395992991919039271138473541632 4414140421182333006047927464886272 -459318074688593114272899342293532672 3341710098697926981200212651933696 2219647811056391723219297333411840 -860289836721074000708025682290016256 6170883140410678750778946532409344 1429586958556409295610260611923968 -268930103361587106634081592619827200 469918030793985902409231751970816 3210541486896066993441772085968896 -579211189758750417948244560542957568 5748479458843229456222533112037376 6115980146884469412763764166492160 -476879898673139620592058642894684160 7755775636391634889073886903664640 4215705022101187871723232889405440 -641907985848334812822935558980370432 7563777533526762497231744913113088 1795967229643222225232854805118976 -89738164002597352735289481659154432 4552712747016458568357543036321792 6351430583813579594330458996867072 -517455787389744761385205136147611648 1013696328569712088939007425118208 3003664581665320536113393860345856 -60157514672315773490003940837687296 379038599001357209073058565849088 3562543940557287267187889077747712 -746548076974756031413870628662411264 3319989920750437929039318097068032 9144700769037082070115178768236544 -568791451808838350234620790950592512 3002776000760769147674683051606016 8869454648995501588687712067518464 -961119016013931962604808356482777088 3453600819055127053422804917551104 1021568415087653941337961059581952 -299603764715276666855273135817621504 3629356973726007460590249584885760 4836568510288792031560300975095808 -380305506050811555222454230090514432 9113544673620422936611014645383168 584745659733573338624280944967680 -689925125069964877957637606498893824 2797963837695660441460771991322624 2226348966282147957384933311250432 -892738237076141577303108989065625600 5932343367643412395741279309266944 9875543706419919662639021421494272 -685698874460940884423254469953716224 752102022077195709312368289775616 6842750033487060075671372292947968 -989320539642131920898880997825708032 9944692316090572299368333853065216 7788434008146203478617067779784704 -600763826438945464935490069578383360 2885724836486636296427108028121088 2245465114186495773459311050620928 -822258164343790242206101216591609856 6861014678491909027278687242813440 9188193665561374410206182327189504 -324888627566523940479485284303503360 8332964422702033956404773120901120 370662316156762921506505974874112 -104603276949094163251229129676161024 995413936686490395691528851816448 803463273463307674660719583821824 -814006542198059841602832734445633536 5299917226372828818427704315478016 7661163681667121593714858216390656 -816716907167394090261402797186482176 9612101588398056915811697277534208 9018907732623343292755610026639360 -753450912287947640522934698706468864 3513175932710804426631083903156224 7092747539344272656883134649860096 -687349255476474962046515754542563328 5277347471912033443693088529711104 1784016713476177704764745896165376 -560514549291005497998142611249954816 8546090027706016159984093814063104 8514732183499669995611252083130368 -336043503304829561922430025125068800 2491003061697047442753087338446848 162443745236592814719390866997248 -785291062699057226269034896483680256 8279373927184280947507946829381632 852786709156392284641122723037184 -902766992055756684539605600243286016 4345417833133637643550635937759232 4944793509006604421491623848837120 -792494147915730920765905344950960128 7557060855764721430997162782621696 6001301726105254843705772170280960 -973167994667664679382977305506742272 6007483824084741333813532989325312 8829910627305827319956237642104832 -223416654524015603611499853298794496 39643034836074393544540848914432 6264300899957259435479044167041024 -619531715724232403592381292794085376 2049056456790289654757040788078592 3802265718624828589010714330398720 -533543364723031610650299064937086976 4537495599702759604004006809042944 9533948954547080780951131682504704 -473342977053478736098905442469543936 7916130787685046624676933336563712 4832953040523981024155157745631232 -337029860398494560831425882215153664 6105269903914572346786646916595712 6428624556460090520155710820450304 -262341104087134249665832271940157440 7603015905606322716349383128907776 406993834629809823119899946385408 -553310714333844070925812195041214464 8879258235702443331638401582497792 9926090563435712033504786556911616 -303396348273111306450818533477580800 7529701157328119105968872028635136 9027844066612064420520242825920512 -56475973621651824537942446215004160 8494370039631238104233360018636800 1822670976875508679565940831027200 -847336574661276896893417206413524992 806976397424092609326780268937216 9196315166188934004722956184322048 -618601565831738803143384220093644800 8967313599835255851290297924321280 1557981412279150833261085645078528 -800437726920349108499409868372836352 3508009767631137390189279774244864 2671262335248415312932790811492352 -306471209866440544922847192694128640 5134835193030956449592830957977600 110253194066575901444000440123392 -959343272855009063100891358826594304 8266111405806815253715625432842240 6531791790201636281027140100554752 -169519138345268419812987947859312640 6811648176511242367631976411693056 5000431073537491877344164194549760 -282610990144081459362555039401902080 3893374835851112719354749700276224 5992763572343272767091448353914880 -204798289810909585799704571749072896 3581094822766659782107181889880064 1721032606859005663658223536701440 -427275101605576384723851807448629248 1711475192195192026414310479626240 1403430312672760892953559503470592 -753279654549967261704017852330147840 7669149920131314271807550309531648 3324081912661112864288797278339072 -614648832803119441008258750290591744 9131374111148262974017225250308096 4663042230686103021418678172254208 -578450754107817590708257470050992128 4086952022031290186096476191457280 9628984252298556039529049614188544 -310401027070448706901160649386098688 8140957480932601651291543906025472 1363705567923205873814309192073216 -34001014946947285291458921217654784 2138992644060536974278708646903808 506600458670712101787931057848320 -195654785761267165196314096372285440 3238158959362664043997568599851008 8134739869277690142801590386425856 -987822651800645795549823282108694528 2865869569144053505819331344203776 912118991136589910106526753751040 -945728022483572345877135552619216896 6769457321110019603222923873091584 1566705772375859897028917738864640 -371540377207711975929203617427357696 6362651000631217816036239577448448 4989977365851567615455980131713024 -865282743276966421230246652228403200 9111302897161255450651559605567488 3995822594343074847611791884681216 -261144012083087640428712514920906752 3862326873418059157300222038638592 5283695843394924032752275685376000 -908144773531512613248810725849169920 2022261261234406742130370591850496 3512484610626190501819104588988416 -478231521916535687983651799271735296 298008042941142610330605265616896 6279732930092817428941032879292416 -244427013058978488532919462230228992 1180503524883999181434393035014144 7805954220860806958531795583238144 -242130828436489471618754994788892672 5149761507160193024583632167108608 3686772128295399835758205564092416 -551269311402970981118475685446287360 8214263875395257893274502236733440 2954936052227533555831185266966528 -712317421487670671671537891618586624 4396078111409755790147461979308032 9776999430935316992698812637118464 -811498297080273676649699555147776000 1631168816271112159869097664839680 7742605908093974239749147927248896 -143832363527926865058355251314163712 4287465386298181843430909713317888 2027067473850474416789222487752704 -922451141450699363356790454778593280 2037708529920188490923757516357632 4989488710531662131374839075700736 -553182987803223628483972679428210688 835865065439939973203613399908352 2604873624441910526171117151846400 -555190942936330379795284982493085696 5831184488614641951909048710332416 131175171109919716310481301929984 -979938377420196546800891125483700224 5233379209104788335673255558905856 5189838357169681510112456318386176 -187801519790369364274283409032871936 4749111187019366011847189305753600 4830895447160398319306456992579584 -392216737939567819495569767540981760 1699846354786427860633158309380096 2419955941922603755486567999733760 -703780203387276511274882689388249088 6838366965847418784465400079843328 1254555766910581685963724628688896 -347898115934406818483118313735979008 9119977815900009636146477155745792 4335588676919946115292287404605440 -58360490281033981545749150871584768 9284229450298681642502201079234560 5810414972559597968965351778549760 -671552169274067276218403325233594368 9471608205446469737448898952167424 6002528323477601955676862730469376 -211167760614881000166499312977575936 1733482061756097422986008902762496 7033025584509456594441134701281280 -299546016007561513203702981516591104 5249911810903172851841891982901248 5735801377678432882304781459128320 -224988581588580516178579100404809728 31318675498095403554664813166592 1517582637914464443924579002351616 -380638948869806712181879604483457024 5671397261848510420024155200028672 3000346564304051509012616037007360 -255935797172905013928825179059781632 9315532580288405728382078181965824 3965873631690184800793016211079168 -160641934162309728961385366567256064 1906182105509510843563842501345280 4921331483426690523707848219688960 -591705387994158796522624634400538624 2542187568880514888628984583553024 6290407599475266932725330009391104 -260740856577755793321356901774000128 36674462454222621067009878654976 8126399741806510735191479978819584 -994655545171030558043711801388957696 5994582335859703199263984195731456 8386818858664168269994225483907072 -551135061698965683134769709497450496 5942217272538160591645679193948160 3712220805823566422220688041443328 -718647034496384017819232582332579840 2286962168406859271474666289496064 8242461715572737563149578008526848 -479847932355474548147380792751816704 668839822463802633668830435475456 6548663826793914064643047800438784 -539274223093178431247726344784576512 5611055320841281262689120732315648 8391920566461483121936242478940160 -116117768545089308771748161613987840 8817048158890085237720419724689408 3334569691121078919452537187729408 -362104677199421745527404593925849088 8757097567026127302549748163018752 5714054970055741343668526276149248 -96799372198608541053944502006317056 5937987002075869279307755920818176 6568101506160785569564335401861120 -758162413560092800218797925952651264 696315809649026786349131210162176 2453954479605605069106084887658496 -326841023263343724412049592416206848 3801770818664038251399542143451136 8284903738150514883678912540311552 -576802488902991862011380347093123072 1900311319995050462459180076761088 4095717448147527455315488675987456 -565760058087371718726151910069370880 4306882937835607598219945096249344 470314783381402291213150707515392 -604075843193453277506243233230880768 4873301209958772711544734986797056 3354414716495074759582559183568896 -243961424536524767873959428232314880 1804762053775278288746783122128896 893104972515266865108008352874496 -35497131095028068675387272932098048 1574220776970909428019450628538368 6572393156156948725099551134842880 -272645861575493897176324335814574080 4974655299993047255392050877562880 5054950746308369551004740018503680 -21830104040224393401812007465779200 7203985470732947730558398823923712 9423975025411633596309705792159744 -98645995667314648864620389397954560 1307136514413367974602492413476864 2504385935167682590669251010363392 -43435948494444820583358595009085440 3317175361320871370379843331948544 5814850075820868909954918476939264 -338984053848531986522082502802145280 5509588030568306758201825172652032 1170464815566724209110549478244352 -12518218683568344044280913166598144 6629220247764161162092299249778688 9579676127277365861845455800893440 -848797995187666244372503852360925184 4098295830301436116763652292345856 5647714068812510207353886292836352 -843491500559686110304778597703876608 6243380877083798768647436387745792 7128683783468018789847298257977344 -682901557027576316340858897324572672 2583209861574987495259846425444352 9590921269352601608247769110151168 -297030331589734333218509734203621376 6058083547157460939183079710261248 8488146409013680044462611818872832 -955391587068987967554624060104114176 661160893032106658462389625683968 8437823522373636018241822974279680 -43523688729196316475941342893047808 5424014304280059591277208575934464 1242169571991374561652370309120000 -12485034657950074476357456526049280 5463426198414454805018874833010688 6094569850710272386460431377498112 -614435064415109778821591701812936704 2741164983584739692924764134834176 1817323637379479676531869487202304 -796053890284418565579144065921843200 4574057216576798478271427498737664 792770077365978064135796853571584 -540628786263298287431489476207050752 1341498372555320883373594533429248 7144286032231688522695565459324928 -539872332116996117730756784625287168 6683880231483032401857453339181056 1935580139908892157889411614244864 -226257339378319653933599345021550592 4311531663649836918915962626899968 101615299525678969250430024941568 -782497214421652323345287723228332032 7567965720245126327236858791067648 554794155020003841498825189490688 -769610353388506033145852841512927232 6612098772486976928747876404690944 6346827257535632362288874786914304 -915823576685554096778362671937355776 3029057837262028067717484694732800 6640075204268066662925769117794304 -591712233669981881291388697276579840 8327712834366243313312986524811264 6657320133962190408113540365811712 -245183247913772862275279341326696448 4979761634450414932552010442997760 8186037433904727990978663820558336 -207358609884305337355059393181253632 3280646453598397444796073310683136 3770268128889992304891754247618560 -829666348748973682129461355009277952 1777468126697122158764340033880064 2316844653590667069125987819061248 -92293934557344426294338400802570240 9856583978442433220194083046162432 2417763990556826344562153826025472 -499425587686827713458285916685598720 8110379544302787349293054413504512 951855905845126785012574606852096 -505945089586699975400306822583681024 1414063067129918596438899346636800 7977317842707548150787801083805696 -343351947921477643801498108792143872 5128166040846132568753752990810112 9062245589313713655172155375091712 -827036267689108729208451578204258304 6695439123677987676847563832557568 3943275407950031117376983631134720 -350700281768534455761737268204666880 7472528139085009788403899065958400 6690667823032697591244664816533504 -962038196569999225089849668493377536 1240277400173018057804410878164992 8151246491654401920543370996875264 -193893626925518338107400515804463104 5147252423865492634576362441539584 461321240661759154045392099737600 -228858919502228574966840514702213120 136898991120575734271184960749568 7298859006473644879547256398675968 -551594572386392737582489772146819072 9905937840637172238913795969253376 7985334259024067708851811365421056 -224213124571721346687879462577504256 2187244048043611386916144779624448 7729986019651971802767562161258496 -583745215596727719428653016456101888 7062207983878176975229589682913280 9118389898336760593898474464870400 -653535494681304456518809297822416896 9864816163271514837053186691301376 1890075072528392607463349967388672 -676319254982827024719537651794837504 5896288825345756760858102803202048 4060365318808838596412832282050560 -407439789371384524093288915876708352 8553502688101238666981919709724672 687556462407454288765898549362688 -300482234379991467927115965214490624 7436117948608608777208865803468800 8889795097808434903777602189656064 -280357283806079458403688366508867584 8963119986701652728210478273134592 9068544740460274892819133072670720 -334297768698183783954118393374703616 8384511158894186300681849143296000 7113266979673033103912598318874624 -56038669808589801766279873222934528 6724575377562430844656248107827200 3363033829566935846378463375130624 -796993550967281199220877556610760704 556585945965656946753876283883520 4056526130370024246767750144327680 -893678337882283014262160157191438336 6262347933443414150452203216699392 1969547749134965609352769203863552 -175003301318592858568706921727000576 7733173160569621964930006403514368 3862807354502486554391853939032064 -991971597227289922028209762956476416 8046150838680734852030639686811648 679490171846966231639141025579008 -649679755500740389606517700940529664 8947910936845148254377320646705152 9693198924383877680052604789325824 -882171794099924384221005804885508096 2987195860019932509147949265059840 4399981775601387757959168743440384 -763426110466091298636182039564386304 5101516940365410147221563768832000 7438116514157488426164562962677760 -461274151772601682282347557533253632 8711070145077464223725006496989184 7705329653046581000537579653693440 -176646648192075074583223538622136320 2429473477109919246278387199639552 6317625890856993337206343160823808 -681190996356394119881006869718761472 5513710889575677233817450547511296 6492993138695910158334535835582464 -290092354851297674257040289289994240 904356300923567861086178972270592 1643943340892927895499049051095040 -441335267926690715518806843711291392 7190819925447888506947124013826048 9162738795595316273805035516723200 -212197932313042924779165923911139328 4213511543346715840155671444062208 2925958494815033839505653079474176 -446889404438232625708379602243551232 3307136214460969281301695332089856 5794050369703847175696546220998656 -106304521121087390369730005158592512 6307459365978320517970414471741440 4625972415657081210497998889418752 -944155778436584079426913596533112832 1005444418117080308345032721563648 2906025636157925136776057474514944 -499338460556606451189909615714238464 9671588330030406664667244171100160 533275157890084062244748675514368 -421063481515467442474027265474691072 8897193227212280928696902795395072 2305581304123339787852254009098240 -331622709855323093696655702223749120 4676638051279177376390633129771008 8273146225513148182773926891356160 -26843588863440179109073683562364928 7200368238743961899758464048037888 462568312658059227880947732971520 -968547747556223871882745363480707072 7295699228123020146063240710848512 5326988678179616879458064736976896 -275101695740130565718141192256880640 2909770091160900403360483868934144 1388878280895551864222386971738112 -876763948406544693281375357432233984 6384009150672970843858556503982080 4011532507867607306605948779364352 -403029245412704369971926390622126080 2459999258450054855052856798478336 3181825634824418425952172442124288 -868459375358917693173467156395851776 620179856698672992342693428330496 9385339339325977559554880008355840 -646762887242441708087937977980813312 9186513889759604515393517912064000 8294337445091444525582500033986560 -430427970431513239797006729106948096 1087412861353697541030242771009536 9132557923166679133412290216329216 -266615673423855849254685859720986624 5318666262250081709550144262766592 6509619017058908459296707080880128 -309641172479023144596843509468626944 8071026071621837292572629778038784 8830356079803835902470935959044096 -128325615870267362366294947381903360 4755841004918402782610967970709504 2621942347225394015084266769088512 -818148523718167928608593311575310336 9273313458158982730872843380195328 7503785924793854924752787412615168 -701468328773660578928069240898453504 5742440017426081036773465463455744 3618878536125872033925872972988416 -601655561437001545849229601740423168 4692774835331431857386092431933440 383809670915993896690278595559424 -343886889207468024231872326312919040 4984604989484179594347610443350016 5351270268186734048733384688009216 -126952939736174615270745167911452672 2156828643947850523646651476738048 9267709855155393723217415019429888 -780169741362354521542250912760725504 1851674364809725563847094480928768 7529882991756946664689672126464000 -322551735422562077523256736168804352 8845329845784415325459436240109568 9867039296400163152478856565227520 -171425492601124989482350920947728384 6700773516430939456274274562605056 7706105217949115349824014227865600 -926049528130554425768210352452927488 8810693307930832186452942528708608 5032047187624279776183366100975616 -279052672575905382103189525268267008 5878829299868244322370752473989120 9654836037565837208216587024203776 -309653233683364454689526872964857856 1873357948392959094322966751608832 3050059867849879579627606509617152 -83194720345444423612791551344771072 4010983457005698215750477293813760 449072925140681142747703682269184 -726518850954785687766959956565164032 2784409907452586152758129805230080 2872911930701101075761083661156352 -292751351055261306929938744794415104 5929361454021613252440181685878784 3180012242467817230201870167834624 -29227370794576444442737389477036032 1516939602773104880140521832448000 1953164897445569629833267039436800 -112660512515288838248402937043746816 70354238017817578566665017229312 1475739248747481458000870353403904 -255605032658621369455824649825812480 6703521272963810478801351895678976 624868882509776316070893765787648 -361859144066290268481102453074296832 4419010644380888459635872654950400 2798755087848285545722683982872576 -124472587359956946225672087245160448 7230473001148603627747739441299456 1381752055755389941454429258514432 -680564390536631770155580840583626752 7022625241783318717370673620058112 3051519894677644641973700229332992 -178118533825982763340727657227616256 6461613602486480441352540659908608 702702292123428730215525685133312 -612230712092565033750476035844997120 196484859461552695211797593980928 577566350567269642945418934353920 -962471520113757795883549749164376064 7321540657858487297739762771689472 9919094952275983744597282047131648 -610112998316570642390968542313840640 4943820455105266910597601780826112 3930004615640124205024157070524416 -307532258088079946309047651345104896 4506366820754956878337078403792896 441748979218651743990491153170432 -304522968190307138294955730354044928 5990509985085266311636925275963392 9652792546808244328042634183442432 -792372436799448127787533865242853376 9980430365104881522446312702738432 1315145126415989678317804520996864 -805579986752111233073774833071816704 5094152563861030724567701492072448 4418544800142039406162032208117760 -240310116849660962247768406042345472 7643985616229925418219121353424896 460470376251847946376967530479616 -512387799727930679058598065078272000 29347145484427455953792512557056 2884008455559172668869211395719168 -711503607231596732013153195384635392 9699545802210601230162797826932736 5196127966353463533427845721227264 -173656043572563863903907415723081728 8696980110715554897240115770294272 1527159145661076392721443410935808 -103744067941873496829934388973142016 9094455765406649084826246675693568 6250858271038409331888602860224512 -700319341725818728917778311027884032 2597714069975071656417559912120320 9423999948719765836081119627313152 -88897895765763562251736041362817024 8262197060655752811393822362697728 1200038211023396343850683368210432 -327116663554476156690984465233608704 8080966114744199774788601329483776 4979083154702889030091272781561856 -368889661445045356087814931160760320 5063935328851203241562729684664320 3177390837072083254438316640043008 -751433763186635689667279246992605184 2704785776820672277082720100679680 6540873959854750863021359662891008 -971492818638495264833884102670155776 1841158064867407896410570979540992 3368328745049288956860539456192512 -128115988473037941422877325723172864 6544154509370707310177436880076800 4224466265204824868150285814464512 -991513448309813259134078090269949952 5508867098603485224589862033686528 5682239448136999584278111059968000 -257498736530866331508278449919754240 6206538959084769814982757269372928 8013667761966609968110846055809024 -629560788761338586932051227319468032 8865223948699609517510983455604736 1451916559936721386536637709680640 -189913775735885926449823031933009920 7988470638402843546523601964367872 2644979920013599775349573326733312 -218811172226891024595250485653405696 106437194339424176645761788805120 3726750135582319844067705683443712 -217286009353573402554533205598273536 9791670356486259534616192381616128 1105085760734838092267478895820800 -547252429024235268906457162223452160 1714608596627274072413647918858240 1287578390912977812296402500321280 -675228281169396878431107559609860096 896400456676712652709157650038784 3272005818946283933291541436563456 -855928518726852383546674972087812096 734037045919273477281375976423424 8320454891585725865135169742045184 -660262930960799199918753990569885696 4720075657905701432441086289117184 7034712393945856429046245848252416 -547674619605406383366136773079990272 9487791313114856034936392310063104 3492356249268492570264385861189632 -180071923250189506926926966957277184 1577574731736379084899924075085824 5383761597362832411703836776857600 -781555099170533532127596100668358656 1651734552588301412676992348717056 8910077823569536216816871884718080 -188122401781322182961866030083735552 4788787234910741987457063767244800 7124375696012964416059824219881472 -840354356080293919560179084712476672 7955213476628496676375428687986688 7730647622949762962943699899645952 -209983156443352860650671666129534976 7996642186749618512258437702746112 1951141121550085387684649579315200 -395037468366173054954130926257307648 2837510969418130549366499345170432 8283181780303658640865392915906560 -612702456050776257677605582548238336 3336975555130699781340747943378944 1489370389622059468129420573671424 -219050529224208155146518024649965568 1487770228373957403250952918532096 6250535858541789912366436602347520 -287357260193701526758908386919579648 2419372913931202996860321240449024 6462570100709084874459879334477824 -852866633854648455405010402616016896 5594905548604396771398153165340672 7692345804051833705618337433649152 -623031751840901386751521267560480768 4261104715079762026208809059352576 4908914280219858502359424383844352 -346071192636601600068259753301639168 7373351170177014101559113064382464 7557171186910928020352074696884224 -257225954281039107395144728981798912 2293669298101292805402220040290304 6197092403701926138595497251700736 -903688947997578710609376182800482304 8361157161891891943625728683147264 554840814825189101571051490377728 -778238910760226108557159258136772608 3355317496702574492580995485663232 6057297328923200855482408781217792 -141062134040168578866252735064309760 9257231108993908656319983620456448 2160556409790190434264910638612480 -4847170736923037394388002415837184 4287085018966663801633446492635136 8015578491179962883709625715130368 -4643963767343414918546037665693696 9605540159281914500381554369363968 7922809159457450591870376352940032 -33883672088038951983212335961473024 5960668797704052763200708369448960 3067831474867484831200109987364864 -54799638858930862160255804325756928 7721741635632001803110852031676416 1386302887502188788033854187241472 -325130098689609907419474963323682816 6791390681015426624039373229785088 3956442643337591749229065432727552 -125266659884757011160688723096502272 1235850997677788373638214303350784 8606139164492633737274629919080448 -348387428607573199603005686915530752 136916536896000970943034155859968 3642716239412817616024959459524608 -745097963002077545360765366340419584 288078680778206567399463896219648 7607865853679676906886533830672384 -147122197478006178338026711217602560 3796143569487479282493957039194112 407110691350547679351512624005120 -494163373701759058036377077560639488 7129864424093404194204711825440768 7733899595727963505782044353363968 -413356088784708785909945172498579456 8711937508306499187608484589862912 6566414518592526519760942478131200 -643002546888177726697733124968677376 6757887500754518552892308453326848 3682500667488916193297135912878080 -253881152063818900892310283042684928 6419143265634126106515078404636672 2234667111659357876437416069300224 -895997417629326351212783401175089152 9930902497214514253810835975569408 5337657290210280051339634971508736 -160883827308365887023604894076502016 4727724705836770881832975396241408 3050309673403956138234478717829120 -427495015913993644220138573801717760 6874253790136085020125188251975680 1104578630903046957958583644323840 -424557515247705078251819286675849216 8788437371210798900963975112949760 3785707785207586919891526295224320 -912999727830958693090011580301574144 3598076100659075786498030220345344 2872005211473716255695712257310720 -780307222830502965850680204392923136 738485390671116894450795038113792 4610761637308933241959092842397696 -206839848858052588599669486203699200 4897679458339708557260528885432320 5170129060577596238848699228225536 -369330120801523379293093891305111552 9041899747818072375696602605551616 1875476353318295524119130207682560 -2737488970379162219418999762976768 348921405622767251475339717640192 1899794655909505751158255255552000 -897466532482686097317984557743472640 9572380813348502424058448240967680 2520876330345688736577011557859328 -970130687507463699905249567024611328 6227962000899091155605583399223296 6826000654608954394946164414742528 -456606056111889337889116433466523648 4176535126154560662016534444507136 436215198552418649527810888040448 -742788569481725827041203505080565760 5417771291937032538361567387844608 4370225418928889405045340790325248 -329251217004994594533726022134661120 12938345053475097060824691245056 2974401178492754199467490810003456 -347051454565062815590749394071191552 6906615497032644343573648271998976 1483067386995337833248609779318784 -929819984709566985256660473879724032 6762107190006755240126970712817664 2288073355012268865669856623591424 -161319142751845843842948510236278784 3257076245884295660424876796149760 4216807093525006869050553287049216 -427367008281048216283273864918597632 5657998119737614835973190752141312 8123066197252347271167362306408448 -643995143758090591822002019314434048 3535677983166146213872653956022272 8690876370073248881961141645869056 -629597846330773605907207605469577216 1867258789916737517434186745511936 2147006777727144118900933057839104 -478407888762483653041113751676256256 1621927940988812802350070494134272 9005886389759784788186398516576256 -926301906779249504242015263959023616 249683368794660206004710341083136 2900760924551399841813577479487488 -454562075776840425549998084906287104 6318077640198881229763944013365248 4247752133024677942493462719889408 -118851277070824903304718893799440384 3178833743301412720887498010525696 3132945659070315200417215574704128 -518138985173546419777990785111162880 7854813904623442103749931792596992 3503625338369019254391402383015936 -994243585835700401634408421061033984 7327145950964578866557502730797056 7105554925070023358886067249872896 -616106948264905620198838701830176768 7978223851167685582494915402661888 8609069295798746273137229459095552 -317767073633632599630411574779314176 4813532969896966342614890108157952 4616358978805374037582977723006976 -258891593909639744965953675455365120 1213425705049259457773863346110464 8381629973095583075305190489849856 -336333207274859228527821251592323072 4589687681313884630377519699197952 551007580936374390083466658054144 -370665412113859350288703790824554496 2612848727537782830958648450088960 5637689891934825242082843683717120 -604102250863956615105975344607264768 4929496443234502203511248198303744 5274803699272380184352134635978752 -899435581072740995472857672787689472 2938586690974420965111874115862528 8009343708327819939210699764400128 -743981119942210286819298438788677632 7124203905502186786898888489959424 1481143724852761793472656392060928 -275579573198715613060164730117685248 9307627465296109778969516476203008 5320576426543730954117190359449600 -110237821890965118520914187841961984 8863157814231379193255168787349504 9601303214345137575674794626514944 -584634358010566157501453103739699200 8268324768242029875960117456797696 6684882361024987849686911083872256 -914878359261554200244723420290351104 4857735405211189404935980060770304 7618060893935875326262815240486912 -770649473992906060430704363175936000 3016433352840085075302884862590976 2765638280067690850527451738537984 -181916490713545127577459076813029376 4291866200816197893889678611841024 3570716330100800046315754911432704 -485764894713724692419563970533261312 5240755689551305958067251665960960 8191901793594033314901430963798016 -898618212710345089817137055713460224 8755040243834750998547656161099776 2558393292631833601872103666089984 -257803503747714439948408131267067904 8925646455968057513949161548939264 4728447088412003151388579100360704 -893749761366015828239547632520790016 2805373543062867250736129422393344 449596420309693538919386504495104 -73777511934107932063756125774807040 2676216931694382768951468878725120 4600590108139597259954021524832256 -585064364984495988097201938012045312 8336049173321692685419335959707648 5871327317190353824521761761263616 -590758664494100911061256234181066752 5177285061364186140541268225163264 6177121608976763163538958879555584 -449822612297741981661175736289984512 3085862787113877811081913179308032 8878747323459750047455621215682560 -62046244852806468100720945692409856 5861748020181945683435927891869696 2079237565658605037841489382604800 -902741121734252034533978887604404224 3550675657782873335199411413712896 433428239577768494579209212002304 -34982339763244026163959574378315776 7310716044973126741159229337370624 4588011112241874282770856524382208 -190667834509417899342742126241775616 9765377295628743467612733039443968 1958393072995659007064898571075584 -111996611734275135181336183163584512 7734514213792958352706427678621696 8223502980744357510635119515271168 -185621256596156917564753477453742080 6417265237863314087527459523133440 6388952079115229753412098468085760 -921816449946015812086198392303124480 963665716567303178632264387919872 3568585851913442874711156860125184 -711321215921156811394679292601303040 2916683479689435161927062460039168 2691389101596371739730868806090752 -750099437536415373579950693845827584 9858318649645098279455337757016064 4355399151087504716117392740057088 -928839603315065941510410412450906112 492105218156463456925109465382912 4217839431599403196018514634735616 -434226964756971104135449554727206912 894963171860744044228159647776768 5312012528195552594832765032071168 -200116155311368145165278906173882368 2257476082755150844372777007316992 8428604979188210305583882801512448 -25102111488411428463202553726763008 116869311375840180394770458214400 8486963860316578405226892396331008 -934113928954743641321859675911618560 8651141297419583144754855177879552 1584143337282280998461317194973184 -348369827992271633113218365175889920 2814772569816083906195807509938176 3365303005378068772315963255160832 -424604054162233839360630635391614976 1822451553329118286985818030473216 6550686644877019844338406765101056 -28803443645549384119295034316029952 3438125506266976420550155930959872 8338962337585937394784036563451904 -233548950145394754979909141851537408 7369299274107850640694653763977216 7278178003788847148394204746481664 -348642839658828681502299427440689152 5208937780576665466282693135171584 6327028749171695754714383470559232 -97407876094428340850904028919365632 9129572505015210454884227257204736 5483739372200086516572309950562304 -511677467223070570348844625564794880 8511783547001552766322130278154240 6348598073350276396289370961739776 -106708584473052622783045042905808896 7750736330509203356138570434740224 4633843664030697823224573636640768 -266568386758715316669214479777529856 8472396617616849208338676996636672 3237020150779461119567927044997120 -327292439375954459410415820119998464 8874976594287604195798461892788224 2848561181421507095890922198532096 -972676085270269323670265617037918208 2551210945554404023408459461427200 7672419093338647877769281558020096 -305731276422363401871311098341228544 4807298214672525832368814894874624 9909398605152914726729575189970944 -762154993039003773069958712309841920 7909311452505219865822948031987712 1532891371690275784830843059437568 -279243596289628274082814120947613696 8007414954354859505597015564222464 3180270975914388169892317290823680 -662715846973836571328320280645861376 1289740227390863028435212885295104 2245864375102062445608688100048896 -872163603892530758673168010879959040 3484125840477434111622737614077952 4794551370336323607388240853598208 -185852092695416833131755612640641024 4021944090368053317085808857972736 7968073386117296526263806477729792 -317147144953389537105931034685341696 5941179511100938842360355963797504 1228320708434347507626971123154944 -867397938844271172187045725906927616 4223495111666177810679822800650240 3911743314055339787981096728133632 -690233755240212128379006883081486336 9730376626799586648611066325499904 9834584541669641064321937458593792 -613513622057285987587207172800380928 9587228883703785014292971113152512 5118231448714293907882727935311872 -322779664410252815580399566300643328 6653627627041123272013744120528896 399416702948699103719162202030080 -290076778950872049734974951900839936 9422130208747656664773261348831232 6406772732993919357738941750968320 -250050107301290339216535154415632384 9706318080035957107689539556605952 5287319884944497235192470547988480 -113327322397747624583896711364083712 8779464743710148127905261077659648 8707226018364831232028573897326592 -695969353440435897753733974022160384 3189170247316108336594795672633344 554497824746845655588595283525632 -231462761122957908229680313250349056 14147959965904008574824339210240 9479015514600537931440338306596864 -680936066988790463520069687474913280 1857796928362623778062787357442048 837546035493765420239734997778432 -560917533500025833164641098138648576 8312682074571542404455951180496896 7839542807511573548445073567383552 -672129143666446224869127172470603776 296523911030891373071581333946368 5618252435193778168653448642297856 -567307827168091611665538912931020800 5409797954117746045422410009673728 4123587357216817288440334384103424 -595447377527437805199600022737387520 7259525127382553206937545047277568 7184704530615723432947182244724736 -154547613685796257831399199053185024 2940081012650267506581948810133504 6717628770218034064262243670818816 -947062466059569278787652473958957056 3721906333848689912010283388239872 8723515668663697542131732017315840 -30211286510150845226541586315214848 2028084689990285908103757113065472 8260422368785658375512105485860864 -490998513906997231515491620249141248 2573654969053174926142252603408384 8346767403237969316758658129854464 -8925263148923512225277403593703424 6893001188113832112441197219282944 6940019705589704731597882450247680 -472080189747824499534715508735606784 6511025976726797701306794217832448 3993352748826883030712742685179904 -275986959555333031935348556741738496 6495111494470666002375171777757184 6707370968886807998455651472769024 -457092904556773096082988878870347776 7636835909234803261655120215015424 5045854781006416744628768311607296 -603542872336995741940641067268308992 6957568006900642311885483099029504 5484978313006665382884462284505088 -455646924674855749807977399404462080 3052779075272694249786040299552768 9159742592078431666505647262793728 -852532000096819077226264916096188416 1669676491797245758399411128369152 3833367661536167470566006314762240 -522039596631364008287571160988647424 8806784151307118710691747038494720 5031253530497079286729206858252288 -372960913396301868720685278348443648 6353482930341996322737763714596864 2186434025579188482677693359325184 -643570096980813523329861602341027840 9342303282369755142463506819842048 5367998409470648957948265127477248 -715759554015681904428235656070692864 8892468808998005506632111257288704 9891440237642316451571287501832192 -336473335612568154525722888961523712 7976644055636920170723550462738432 4824392671280764798818470724632576 -132845962327019832100322373275746304 6067588154072165792955880395767808 4966558691993505325018753137639424 -281684788475868120842055078169804800 4423711682093779266633771989860352 9385175615592277539443375947644928 -778000404564191773196791543039524864 7800129603957697099545878143696896 2244424485260981863363116754010112 -546866325440239953872183180375621632 3065200066995255153716720501260288 2336138827489437196771181505544192 -710764934351997952679889012151812096 2730689619232459517674271862161408 9827347180971477632409415538704384 -136743090989099460137318049394982912 8785360122448515262888614987563008 7358809774865263989976150717759488 -312321506511083768381328505870221312 6848696730974981730565375821611008 4008935626626522846167455286427648 -934956258107070782630751495549616128 750293842823230890696675835248640 349878590037330221215052478808064 -309174962411756969681669700676747264 2665812886388039488657656748441600 8938245653265112028471334373687296 -610488684948503346612113882533068800 8336330091569381468821951659114496 7357402566548045922161379302703104 -119089219697788721819896785192091648 4496029343509831525497404796174336 8106219592028302489908841510076416 -733179497914622387271045641056288768 6206476498862068909634515984449536 4850144117116897157041098397319168 -755215519114403837256578298818854912 9869561762376367248834346962911232 5327443014076151744458965668331520 -154136334930504940871472467348029440 8670485164378050847234991576842240 5487794874152494554932133505269760 -349986660919376284260183087501017088 7548720696009227678436798727454720 8177431769531213978327267860807680 -534577509180605781863491863926800384 344632509551672072521495907139584 4148148126218538364818174012030976 -532226156014585074415601338734870528 1020175742262438166066265648529408 7664515381410383577249405743398912 -34347442767090388414902015612682240 4839649633502328608037575086571520 5933525158026884100803273152266240 -568625666311245388019244888760516608 1264147147942448635803014950551552 702308494564028471479639421747200 -724450688710631930380633168603512832 8952919840801217256718159923118080 1172872411120401860001100241829888 -731326775910832696235288398328233984 6233301419465583096382608927358976 9881564524425226717273912447598592 -915564155614784308724602614820372480 8084320775620305774021057406042112 3727889573497874073228318554980352 -592904131150503114270734388702478336 4558977796708861131258017955708928 8906887555752821668831891633995776 -990972924367549571039064948186546176 9802473090079439169881772742672384 6790882630156199200304656906452992 -229116135976852276662459721930768384 190478068888149836664988906815488 194791458433776928897005441253376 -683726022867521634379770619035123712 5487093316204118538853325767442432 1292499235907692479254294048014336 -443853449692891393806022866601246720 8646493597038773982478818873442304 1335976731167953411725111219716096 -73074450963116434380973359014871040 1830317987753583841097522123636736 9667300675757745260296683762221056 -530759795686663876007467513599229952 9731133391762623069511119947169792 7155607522218811160936951475863552 -680985489859760329993462761998254080 8919298116769482422761732647682048 5324202830573912019613012476297216 -4389301076571788808527410353930240 976530137548729594343760460775424 4919119301429679083638883402907648 -986599230336698734341949394243289088 52469389319956634311877919244288 4400653643838860427393775121203200 -430446084165617662622103108549869568 9271360052654298533499679239307264 8320926274354825447399691751784448 -99580119699224426887639221204418560 1662120445757959179526590060036096 7229440458918843691268704598753280 -344302058836752951825724201779593216 9759423255944842809153980295282688 3491636921470650694916581307187200 -879548331289028726678588980981661696 1786285982931860179746274045591552 8180681280079431961624654374764544 -155044003441391601328518281497149440 4800729959129528651571633426792448 469325849231851523701451134074880 -660875446416396923099121508151197696 415132742894277943415844921933824 5351226026117561159934516926611456 -386168316748045003866335783566704640 5807794598702112469597219561930752 5955416817923799988970544043130880 -886388450492897847683616827162755072 6679631029047550660933050959921152 7780372817125127470280232855928832 -852399236378687268663376618096427008 2029961069100151323151349716090880 8462367376536483148173882767179776 -103394927461600883293115026721734656 6425372147743462629885377853259776 6934741123160255655724578775236608 -576083997412750308431748611000238080 9970085290753633201452972941246464 4913669008320151575213375353782272 -635121196179343130040152344718475264 6275381932959164230910677287436288 4121011415770013611491204234477568 -653282236090987518995232145385979904 1046252306973875662807339158732800 947366662444175013608542391238656 -449040326470041023355043515688026112 8125244506525853938878661596807168 4424786977393155234277826475589632 -382098524867526304816431424914587648 3489416815491691492367364452777984 3974014704384725204378578879250432 -307825114536582003816201008921444352 9605576027616857603377242390396928 8963251946886511067292590749515776 -556676430510991528136757808273031168 197199786277579615245331800784896 9228324677233421877652148772143104 -59479490551723127893377828677222400 3170718310787079110485541740609536 4130255709646459313108667575828480 -76268276817440680639980057831407616 9705692665844108985624749458587648 2145576322390443137738000975265792 -648173829824852639764350047359074304 3454674936968711980266419176603648 2660588849356582862081364779335680 -831751207131675051603309704935112704 5836500663214064561864881310007296 8135732817621208743663129117851648 -317210854790099243118019292098985984 888175219546735911016526585528320 6343493834253722899174269183328256 -984725684698683036578314904299110400 9819187782665004699109135736635392 3873521154205044153344294108790784 -321007173715529573586677646705557504 7272907300847380618707542325854208 140362841093824921304957959798784 -902920101254602215726268050348965888 2036777674930202127683983765405696 950990516704652144379630308032512 -391972861478749073877965107208650752 1422395212311329484693079288971264 2035853853574845127775904442875904 -445402270316480663575319382528622592 2503420645586899348954412847464448 482230775969713808069044641726464 -911359326099279393626556718068531200 6559143127113664303281626677248000 7557038755450912965208871561854976 -322465857351593422596267057231167488 2196150267144439455204045335035904 4204500689687124282360788133347328 -991053760806059669827793418125836288 1701551586531719897759468778160128 8538624693199574544964184264671232 -547646333211075099154200995628580864 6620332980555202192801614799044608 6693138881271409817573256387887104 -147820341032462319206869962367959040 1097835778721212597209984636289024 6021455816631093459795832683364352 -150267054689613367296364635945435136 9734207224983175675397268551237632 9410518445839162244581966359822336 -92307557503090661157476048165666816 697841696823176114433262182465536 8108897774873143470686499470573568 -718977434337984546739688926103994368 3642714428038063359796145006051328 5766432180365176724650061750861824 -614292643610625157232097406186684416 5856631040101878629777231075868672 678936039916111390351712887767040 -784293758204349790610287684766138368 9877423355223977004235320450875392 451060356925439827432585786556416 -659951623400648934144146222908178432 7787955234030545459953773647495168 4111384628521120535942729864052736 -716892033696140998817242069510127616 7168450027123115491112373582823424 6673507109977003631870516838531072 -302011102870693963557930525364584448 6051088275239200324901081526042624 7580968488847425205668925799399424 -179040275531116637869755914694688768 5403527465644466497295079606059008 6522142756791392751746107897282560 -876470990287375303225804820009975808 3217043915825209940153266744590336 1046240628208727608245300439810048 -198766039219097862708421807575138304 1539579511103698421526615428169728 6628851396483983666683274648879104 -849919023398434646921898947296362496 1716969848646142101092556083298304 6526805353428544700431444501069824 -690857719405492792132459019324358656 8190473623959655735633867125555200 6535065849479791766684341192622080 -256737504524253363308579055380463616 1302700628263178247713317137154048 4849912013947227259089650574163968 -386072822990837037899029548206391296 297805832033537917628280324751360 7310609640481164664415341296746496 -820521698385813561379179462135906304 343432415079145412786709403271168 7591301322566231492485382970277888 -137921807332093161490131340402622464 3784354717030048529569715790544896 1093496682978533614615817233629184 -849775121053023984183216432266346496 5353883545445155499584108076466176 7381715992225673575934056965603328 -294474140696956857776054093821771776 1652607501893968298245115892203520 6224620411090725928191701620359168 -35256450357994557701208880795615232 6627437191317079705600938911727616 865852888240731714343923362037760 -44888165087666386648300708268343296 1857110665824078172756028298362880 8337647928453352112951535350054912 -456479988853329821014263511155474432 9401422915027423260663707508670464 7751705295042488125672028150693888 -241713606027057260418339332308336640 5612352485050764806340110547156992 5316083695479374158909209764167680 -531051543546946187930580641923465216 284851135457693164919920867147776 6044466756089987189868557567524864 -154177673191621088212057164674498560 5779784942000332972077213221388288 1168024685784939844938117205196800 -501050932156899193865715687631093760 313424220456190069658143361597440 4978622709251572800214021246550016 -911854557121323023274385698073870336 1813489419498797449197263003844608 6333949622691338210493386301898752 -608373027787731786132703785064071168 8369279489902337557948354963439616 7632173163697694877807420804956160 -481694152046195820889862398772510720 4289988255928495483503621156372480 1401803160383415418972423267024896 -767030599211169153665543428974313472 5686172450432431261338620057878528 8618479396560050691881679085109248 -274703255224807750663752462576386048 438945991095833050183353772277760 8422452623122619889250937836929024 -115476801688995491843557544630943744 3295384829848848802479145475899392 10870357768936185153375730401280 -760578763042437400808852898768224256 1987610442642977733784984860229632 5728908035544448943164673925054464 -364775529116256837010507856433119232 6187411003433995170788398472364032 4236244564079904583145621393768448 -858380183690761002048613966520778752 8937200569550589081340870471450624 5843058130339234248976402806210560 -984540903840423947909015033356484608 7255526433559368478602020553490432 5098006703811597917274556134850560 -323643967185139727696332367478128640 1942387477000783443233657707298816 7141467323522051290550917350293504 -7251181907936302106856786413748224 7810830440050915557541326109016064 3516041987417584374616421830754304 -587533988641306986225592111072280576 6702325363108084437641593184321536 5277359605086072694086884420222976 -834505444825924796555057768521793536 3436682845634564214991324161507328 2432893870955329354091749512839168 -294766599657620782619982974335057920 2103728077832754288898640959242240 3287495432390959682374571745345536 -77515706134173342134422632707129344 6540797770000056254009158399950848 8817124724771190414961505116094464 -210098099789479596223929507291070464 9455853610861924324388046498693120 2216105493235150018502325476261888 -144801017870427365068140726462709760 2511832224137705557647916185681920 3572046134392590723636011640815616 -126897529660814981917488787511836672 6181993439394710993226901938503680 6509074509973944890900625953390592 -332974658971037190153721600156893184 9298765342416908288080574794432512 5474598913127221583599956133937152 -119261842430922566618773496086396928 9658759481032224583061738467885056 8669755850969977205129615717171200 -232706354316235545373689115255504896 243242779913106634713869355843584 5860685505859426281044230409289728 -704947325639411233037421114084556800 8674422641381166772975993358385152 5616863398931922555311371734482944 -765670676206423068955350616711888896 4171779539991264687885784119771136 4197913707930498898889012376764416 -3051564551069879363602318463336448 3779436351131581221806175290392576 4505971865728443960981112760565760 -535600611306229857242642701313114112 4342375755752899207856875206868992 3567033949980892448377384460091392 -376077897651588944758129986933620736 8795024841108848970684372304789504 1790297204425954972224545320075264 -863524628188744196815469602706292736 7537874572305055502281232909074432 5800535721080309676594977476444160 -151486468589117388161672844735938560 9251780992412038864388184508203008 8626617268629659289775928294506496 -55792441990445377958102055348338688 7211933598205629918535012052893696 8214763010571641230808248477548544 -699767416298936667886445768019542016 9610201939297617775630120027947008 4558311331915536078421164916998144 -808028504757562668059099916727746560 6081326080121726341141972633255936 8846224740399108805981809630248960 -524691702999383561193306444504498176 1769987413897740236140444227993600 5896283253082977209221387328159744 -955348820637480729522752122567786496 4026387238883524292082882752544768 7612042337057602245336657156898816 -468221865348257472660901917584523264 4723855752512968205475372666454016 22144291498730516632234058842112 -506657044713390814227714428941369344 2285054985164731271864384982351872 6815831036563747365655238236176384 -896799468183169699259323674347438080 2666947046788310283445174349594624 1059669263428203042996851585318912 -977602347582743456773376574849286144 3140958919255868745544275484213248 3473159869687778796711206394527744 -985264629569364313792726043352629248 9817674332569632206839264455950336 1592899169232745173296622283522048 -982318628400139333334238148270489600 5831830509464133806656145124753408 5135421951230266486847160262328320 -430590278958319620784922961133961216 1691755893126609035818084369170432 7788844112735006259952696248238080 -2826343008429639253094437255905280 1470408500266914036691456093061120 7411272403774212219831770356383744 -759071290035054903911614393580781568 1547540803288668624522822010535936 3992910193049070830196715163746304 -56359468534120108853998100057948160 9996232769252697703650437315428352 86276613575782167113026370535424 -832890282981042906978221369300353024 4855462706399921510104677352472576 6920005120151850083926967645634560 -904429265434392342635427823454519296 5190824201205112586844848634462208 9205785100624952229967346568003584 -835854809637444171929370994331877376 1134678780461484339667768394645504 1619518210080979980318533039947776 -69223080810058732598683880598274048 3627097287674660445392971201773568 9304313454419784461088493882310656 -982085423308440496658279985580081152 9007601530337024419140397432832000 4505081782010487380085889982005248 -876282751168510330989669694444666880 2134211999503004118801359352889344 6219918989642402230274685176643584 -458554261137792844215580648701689856 9406007708485663365025918716215296 8560071635941020108313529983959040 -612281461623518233941720831501533184 7400326005051536561067523341025280 1179484282452632910356453210980352 -658330868934531228819845809923162112 4418466643907808670086975117590528 5093134716784668447430255772172288 -780803774062123743470129809002070016 350637069678157982945706659282944 4464917812537544408769331680247808 -118251874362437867046944252780085248 4040120572005559884975561724919808 4529117290566610392558860943491072 -482427732843067867066150543138226176 3132554288404168709053937409327104 2927143613200517939761655624761344 -77417258345267535402679615029772288 7065884033421675087357519079669760 1302439085636134174705420465078272 -534048769785306124892183382548545536 8421486693448047131744918424256512 9681212803949271886454866497765376 -615757964510775005120184331031019520 8591486277515152236341589297856512 4943896730895484998968708360568832 -981988276713994866920463962300481536 9960000039851012738921101072007168 21087363252840725578573185810432 -848388963968897893178276127600279552 5734623058092100536702214432882688 6392254715131143449230041537314816 -257193244573858185706188200032075776 2813314309869105577941908246757376 943331744178318599108508491186176 -8357701711321538250009811724795904 1424138369363236141934241833287680 591988981086564150208987951792128 -535696110278516987862328863709200384 4321521220251828559249961732014080 2663355640664431151055338884562944 -850087148908386912835131604761313280 9806342310523034376328640332824576 4795587251329532132508861269540864 -292868569393310209101968587842650112 9586413080164606461748575509413888 1436427674125558113695633745379328 -488701643489390155159338356020609024 7675915716876107341342933765849088 3724640759903052837623516060712960 -571968939137019754959906135305355264 3491576917373106336976867090759680 8834897461628204161518980325965824 -14015604141345909002738414496251904 3099931043537178952677240537612288 3034566364535900482154673219829760 -28388486102817195907926384195928064 8475621177229229058847285117452288 1643197253836908078351747844669440 -325497135602354998241353386789175296 3362950854726941276300004265295872 564812059629101086641421702660096 -827780374778861222997542403435397120 9908706194670444228929643339579392 8820467499674370158787564708823040 -268946704729486653659038282086875136 2360372684711564600298974486724608 1683121004212521803990394533314560 -575697197763738456926868744706195456 2199988253622172182940547337420800 9969754552069170000707609258098688 -888537817988256520097982615128113152 5504859573584770976124015543844864 8323700542944757381513600206635008 -367354131764996999265498514115788800 1553080779445205914702411854774272 373827318371464837258726780960768 -576438328581473082994201756568649728 9625569921909760869824230433226752 411506173097876003392237080674304 -905810988165638713434444262730104832 6628118882450976489504328420163584 1664671433216513447002983291158528 -754290590735639084910213890331115520 589160082611331541795695042232320 1973965794762232757327376435642368 -19340135977767369505405195316625408 3416820630592874387489253759123456 8555748655282032207188081109893120 -112545624529572885104637495623024640 5141110707317776159070476159680512 7004431868278028150129836441993216 -561928513235946344542770774144974848 4878213093328465415724898466136064 7620550702963507201065269464137728 -658401798474837926705412292474830848 2714804287791029582824899723919360 8122281042840651161733870942945280 -925716532944729388184003402019110912 8961740536896546157179618870689792 9417216716710360941822585859997696 -570880737949336916137583793177362432 6828484004078898154495423320948736 9007899283592888528840813914882048 -240517871043077293475993181476618240 8828943592367135783882257950834688 9017133911181892332606603732713472 -590128174700363609445202936217993216 5911645216732472599213198446428160 4622635397253364516257110509486080 -466432611649349710838399273007054848 7016555917261343570439174111625216 9774553140999959746993611954192384 -145155539960450569664100662266298368 2787626124010856557699018937860096 4121925504821080445834927894691840 -389820676892586277627253051292123136 6668716719301329681932762665189376 5640536841193168033441575941963776 -913631804206168614839923205243666432 933047389348477249759868685910016 3568992651471325513790481363894272 -852352230655612164444692844363382784 9671931811302583767739271124877312 5436565325144672075856247571611648 -372143388002827884980543229106585600 7572212552490975576572391722057728 6498037715988799113510516703625216 -149195706366620305040425510619840512 6581002816253966794758611632390144 9353313495228581616791648890519552 -771758716421383484549519922750816256 5536481301375890925057704424636416 4633806753396067168082125916209152 -697628073017685927732893749042216960 5862940364147770732269836617908224 8531911790139413450028442345013248 -645228287184151117551035951957934080 5116044322059107784246027410735104 3906911077523631564528392870035456 -954146592535262914628276071224573952 8513887204570500539028347027456000 7514179995251404361118862018609152 -513948278997620594783456836316037120 1202116520107220866916262715850752 3512826473917536729500547589079040 -325101335666445962471467198537793536 8292359645861602390840553475407872 5166375697600805549821811069288448 -97762711636735579256682095046557696 5970058488254051277319178373038080 7335507913233972826267450821574656 -353513707846116367453924678774554624 4546698515945915030331771840364544 5310179044950435939823133220929536 -773913869464736937305273341893935104 2401043329607406933631918564966400 2907540481608302920023115542036480 -189047703577988646266943571983597568 9002249820539298639299695356149760 8851910935955473017770855649771520 -580812722207479776235247773614604288 7703907295167073645203897716834304 899719289211215531235738078150656 -19782660534426627761885378647162880 7672578606432042884992966108119040 1319691569390625449732632769200128 -541457860047246952129214861633650688 4378675289655480630962429418799104 2727932337603074368699375493840896 -696385516797107895681685293363101696 7611143251721280404724568192712704 5461682365932029551587805045456896 -681183327334687459201160051595149312 193957604111489202213487019819008 3432244237843624315235544430804992 -528707695776471170366424815406940160 3267133388271902487482010366377984 8173118534990370053965985383186432 -343123665301133762240249764832608256 7632678371643918415996396756795392 2788865556011267063488108956745728 -299812352989670835351644371609976832 4602234233575637149026239872237568 1576598744329902874864605712089088 -271013373622552460106058826004824064 3828863359165063531081628714532864 713925777532309283831471163834368 -277992647831863979014568629600518144 338636814353247731492590656159744 9626242569983737589709973043019776 -674973250131126184669658376872919040 9172730472133412387061656165810176 3172769808409732820505821865574400 -175643953037462797108024060007153664 1428632873413205106906095452946432 7538612245633504254298849319845888 -139623508957542345994704285713039360 2112857585773984940587675084128256 3446802630877356828944343431643136 -217567636688836063031837870941798400 4299577555413400479230795590926336 657745042963640776071724987842560 -562803143407326524339789502460461056 1555940727649617503877614614347776 4691888322159992214739388672770048 -269618748240772406640747701942091776 9070649291428954358970499018522624 7054449158959167261145440746209280 -307616862869600015061901777538383872 966284916091410066805419510071296 2850176834525775958445884467838976 -192893013226196623769190623782895616 462431225306087342504784412278784 6275711168830223392121033607610368 -528807891943394542215829441103265792 5932125551316413514570025922461696 1759761853495336850174508233916416 -866946594042244276692734055899201536 403105195675800712312128503021568 1082787707986565141223269575163904 -794614912034334844404728204227510272 7742493810066980916302041556451328 6338013685667071097519180011798528 -344776624330716043008734654332141568 1982142711216425682800487216185344 6120443435439039891540208932356096 -342345182781733198555496573401300992 5886240792034915094997160601583616 2983189954430261508125457779785728 -611221517079955640687389705458679808 9420507015396872930657164150702080 4615619042745691542534312440102912 -903710180929805313192918143006146560 6153799343238992683797462535634944 2234554636001757097742871157538816 -732426342237840345573176366925348864 7578037706686084366494182773096448 7935791602335754672982598004768768 -861810961814541943901226841547997184 9005639156946502831974896411607040 3219800379228947222829828541513728 -372792093201336573035228612167467008 3089555616410148110384198794084352 1684681190891364377780721314430976 -916659897163303114513960438864019456 5707493815768418969164651939495936 6154771227463564358885038874427392 -475743604949286128479026527107809280 6011922434928094527865904307372032 7295823063222980983911371545509888 -648988110119341427512785584634462208 6159844444458643327103714602254336 2915782185429075533501368868274176 -867301056326909527288733239059939328 995152391007033028387040592396288 9973996903502504954004952410226688 -812048757526274949752407065557467136 2493732326851765853671196230418432 9715640252265401363080704436469760 -920726485040013966145214991199895552 9018402179330828950112458395090944 901587770362636281079177678946304 -83362615058663137190766107238072320 9672926722973223471984817186275328 3813200486128736865530946135261184 -724377038695368538535090078617698304 7011353701214249125914789850120192 1697509890989589735993488059662336 -893825464931558035604964240915431424 824908324999301226324400252387328 4741782044860964747378383912960000 -396641426708015291286666471620476928 3173212589865783899731838141202432 7084799411871592774749530634584064 -808149535293806492460886231846223872 9260116038814274395063783249674240 3480951293247539687242336925908992 -355327402155874311169498079928778752 892510885933829617876107505172480 5750581460042202537690967568285696 -33209174313432982701220672128942080 632067639418395182937103803613184 3902044361907158364003252299628544 -313181800791136514219660162099052544 8841630168538411532826682985545728 3455619718037027857613846537568256 -100333607233535231110159042741272576 8154988702396609454224338315116544 4319233586795073485701408081575936 -355488568204238207242663176735555584 928777125846462742049223956496384 9959627618024322340488823575674880 -5421983618208994338967032751456256 3866363592297230896392920079794176 8746173442092505108231662021378048 -76688729450752633073734209578729472 3227110346869652939196892207644672 9181425527858850476196343786242048 -121528870072548678421077710658863104 1750027006988709081809688673124352 4645752279086301760520150627385344 -218351307136679220943138882943188992 5140148860906430130792590227800064 9126132749363007718493699740532736 -84407064367474515618327545872646144 3730893102344472596208686764916736 8604623345811826793355948209471488 -167771861622206727400592064766803968 2227479327405252523221113068584960 7699381044434529240007926379184128 -702505622789440127796165063447937024 7973212099642003089753942058336256 3433510247917940829790010041434112 -233616717242266553880888404093173760 3726798949056138383735805326655488 1271356166738334060306439168065536 -9491488731711170548570393489178624 4596588536066682159747416031494144 856261587039561655270355182288896 -557531918560526201784977107841974272 1705862275959473383360488800256000 943378434663620236248523458215936 -936830011996564414984784568601542656 272866330547394798756127708282880 5629602101316962191174194874548224 -512235632731136540328218499125084160 5978197209229421740678947568353280 4542982897091465875464110089437184 -504984855386397596705138893545013248 2844728024310975836757279845122048 6692718642172420563699950717763584 -519757052284798306518322438463291392 2286281464317241135987068881600512 6303754033586426412177879709253632 -4039647172560310791275835308376064 6130265422931998567813182509809664 2105545716166388713244360282472448 -132153121561839126728664391459274752 2758366381976941396436438526984192 880751522084353913994218771054592 -541430296403199522819510831694217216 5608444699206765175756833479983104 3351765055132583661695427904798720 -926446912962996716708245435752382464 6689104437333123269315716657971200 1226979506311055117033751269343232 -222764434324486484607687908210507776 5527027878124637679002625134034944 5473689284969988357271052192055296 -395911242216255342855566052598743040 7904558896544023993022233100419072 1605590691386863039904135367360512 -120161237865726583529077738544562176 1793383011159152758742669378715648 2725324238110559349893407476547584 -354655423360089726341081415003668480 7019759804199238626312197570035712 7902936682528494278788685808795648 -736181082140458523623399054561509376 5487727423452985162705688781127680 244747429493063786164589149814784 -208503447051472289386514937366446080 1939292142118657947740746874355712 1786877828304942123680178949324800 -8857682223468726140383474583863296 6686654084053214794258981823971328 7547369235051080511293481484812288 -395322397701095200401111735127244800 2582242691550192182301810055184384 8235703677043673038891323737767936 -581645195521743447083835695554363392 2207263829717837323837900144508928 48505243650796805747799501045760 -111135570008546715939345010131992576 3244703195758699177759071514132480 2855700193643349290200658572476416 -372439117672676749601726459960885248 6445217473969781752332955531870208 1251688272354829213094956069027840 -692991996519152991475720752715530240 7472606410486665630952275836928000 5562098926501831255135382260416512 -953464148631960320562835260413313024 3900315425681079355745996631965696 1732857714439225416563485350821888 -511770405351227057870335840962478080 8651069606847862500840158152097792 1341658696165336534288986095484928 -429507647701939682703935164848799744 4048037361106390392985690405076992 2142141125933236045564476659859456 -827068178425278428743140546596306944 7671971694379783279754345170599936 4174270937767824081582151023198208 -294061525316719569888242035815612416 8302358300778920116619405560905728 7976496356394778003752277841543168 -367508067069733783842794124473270272 6670935924171530833121331218743296 6592868613827305914268426619060224 -266300673436486347739409596849061888 6916923032865122500285587743834112 5938819169348067595010366255398912 -380935535165889511431414730608082944 7470459781878889882747302097977344 6089427153671714943148997608472576 -123230481837492550847815943020609536 4895220880225529037405986331033600 7217802297516515426023839149064192 -107539758277796062673853724229632000 7088292147143948659255595791024128 9097943679020828417493070528905216 -585726662463731559705334790085410816 6564331905223851325873593398591488 9453516190700922126960521866379264 -908179482808565148513506544035299328 4996750639878444330131297937653760 1548915330082025042597921949745152 -461059022994645725536284353528594432 4840557835624441391300602220249088 9343252300257864941977328771137536 -938085394807208356471977630500913152 6123610276656198497774094929362944 7714205456407192150570439979040768 -618823345063946433510861870720876544 7480018854360889142129887740428288 8542918546014950629102078360813568 -279286198790038646159758235415871488 313796465755223075855885091733504 4971086473167157356924087182557184 -944717490075885320845645648570089472 5597448237502808250752318950080512 3999966985692134517844374116630528 -24366232849424964914704237008519168 4622946889298462212511261731586048 4231607712028945458365872480452608 -185745416295485429807810462535909376 8143063586917679613490788619517952 4418053123777272550719125914124288 -690960131673788191184330521090981888 7315692925969586737375406666547200 213993999772266055465045669707776 -902002536725282864434166512740204544 5188239064746022575183631013117952 1913396787160310921529914269106176 -380972317008338119118210839907139584 453410934089704906943303312736256 6989235065158788840302230760325120 -568769899904312690923553217184792576 2860907151517923972259314298519552 849835828397508187139670297018368 -801135764969062830714904173367787520 2218922892525306015489444418682880 7149807991337643499854245260165120 -258543329840849633512093828058710016 6716270708511272739844133532729344 33998256750354888541307855175680 -730685798624580955830707548883779584 1773324694764639279155451468447744 5654836169247891173053682115674112 -497753243623568274108904589255245824 1964595940346595152761496971247616 8110305534296215145328083686391808 -434147262821816869490470772482768896 7202537486487085375628288160956416 40988080730502012406396321005568 -921999957514826130113921973405876224 3338065591681639546863822871461888 9089989560213203265410017964064768 -417682735227175232073640894053482496 7719902613856631160546024837087232 3145722725752810674584223194546176 -4800616177157036547628638402510848 7845600748015897766884471092543488 3896056096444436347277911548493824 -663412751899198231246351953028972544 5740134187338672062952948941979648 4007196376310183472278460375760896 -440042406438449692132532435061571584 7921058442240351833809222639812608 5599351315958831946092542303404032 -658210543978653920634191468918996992 5352544937585536583464875481628672 3594408117892653554037275582529536 -892352421639166447451921002786717696 2817221323585626363068043579359232 4554922067630001265674682292502528 -476176355103688049268777958852526080 1547635763850960111267742165762048 8494046227123004365340365580926976 -308247643265428952140382445682819072 2343100651861183039758421198897152 967987567386880567160108467879936 -25924977396458590125824212887142400 9436218525379359842921485132890112 7210504984923798057459208293449728 -81295906450423820910464060172009472 5081938243939908445613339120238592 343282256659433908513476391731200 -192422054134022597694177940930035712 5049048627078671130013252865490944 8205131364879629286277907304415232 -438251843104799523460723431350206464 7425022375458088193269684934541312 4350546510449317176631892434223104 -925969635579035785375748999560036352 5813336231228622721632334788952064 9295481859395812565322448978837504 -228443346560154227698359501125058560 3614079645787106421803290204307456 8075347257772333719510024244428800 -741482022017177208324065895097827328 7730738088885691818827766424403968 5938026058670108225224864599900160 -995781318122018809929089456642457600 9152269078679898900877321040822272 6992865012107783833332968855699456 -563077899311889944445227855155036160 5301783421821926022260587596087296 2447059877202718462951342638891008 -819534124743114412997874917448876032 7016005633758235687973799407386624 7624170716505262001547546141392896 -83177790345219280723276157574709248 2148366630889981317367496802566144 9320060711464960475438990816706560 -925692253504968616127238948020813824 6759352857300560929663616544669696 740363223443806916199372097060864 -652945755044480856066354018022064128 3755456087979259547697887034998784 4091649845305397393815884395446272 -860606191738634257206251909673910272 4953017099079833896220980336918528 7892228421356186055705422595096576 -806177177499137315626550436497981440 9611039529932641513650092244992000 4208600204978051883591394501066752 -125241309887010195667598342034030592 2348958140629664058564896723304448 6389750121962180023734262803988480 -605189792636852817759119049393963008 6386753488611694657596069211275264 1442931203662208216508061924196352 -189291226711090180432746569527197696 907888952457365073878091940495360 8081511727093286733438661162958848 -649358254885242277483533002321428480 9455652585049137859063992324980736 7352964089186596447440372582318080 -218532077510228071555573230166081536 7831094392052006698551285324447744 7673774083401755449478080196771840 -434272081935932017902706394906230784 4134171703458467782909744621027328 1728959803694644645192238970699776 -175785726237322655424969595512946688 5991777990771020580368661077819392 9680662151972795855171075711172608 -141247232490722848629814869645852672 223985475207412141737560562991104 3516471898908845573699098019627008 -550785515290572568728765952625213440 6263621047825818189135815242678272 4966953286255676451471801802817536 -661933623261888882185096881544101888 9959002297477020020473171774799872 3210078169299845827365118119247872 -95925865795489890256635461436964864 7213220901129545531870020397694976 483951146515855408444580902731776 -153334237906145467131025753301319680 5712030352963520152818007175856128 5702152291079673772591430236110848 -854985654810313692654018438411321344 7059416778926492366706472313159680 2408614588173414602905603037724672 -554009281451533595870713273437388800 3174822546382608797747742796414976 9256636191977170365603381851979776 -212106728297670522402040438167961600 7802967462609739586914504222441472 6409815976999008605560299713462272 -403657126367114670685292760521506816 5086480031022587170622425068994560 3636913581632587298501974145630208 -928655564687403564506574942080335872 5956164751691302278054257241358336 911929158999941980889926437175296 -676526049339078951157397594484768768 3456677406200746194738444685541376 664807263626141364388584505737216 -772091571441111961363565805633011712 9456691763364239015603912994455552 9711740146410631426948893432086528 -498991638313568760371492042315923456 1530487879318501515966529713209344 5753231758446068415920807750926336 -370379985000435652156832822385967104 4098405992629010194618849767194624 3542255097532379384278274281570304 -130376242519556690361919166992089088 5418090511517741898421900863864832 6154753320923795818100797904781312 -712710989981906487269002747922350080 914349979177927596537312607993856 8315108750998365766173839249637376 -414386587735192578327859727490351104 7217995520619605823934144140279808 1356276169216766272173283943120896 -937465843219682773690577361293017088 4022718657464869365744360639954944 3978737084097794542991043855384576 -803653901805010945196923208331165696 6082942066362635136807753446588416 4432417966832088142808777129721856 -879617816243575547810091669045379072 5834301788724470118693561023070208 123231377153994401927273576923136 -431551487100760317892141977366953984 4662374660628656884170855641251840 3207205784016657546490843743911936 -326456873548836037915472622740570112 9739464299646222390766865305567232 2639004954349268974067130304561152 -241293137138635977592953807940091904 6052708951104595478049014702669824 7752688323792620056954540046417920 -394788553193162803338612311895048192 4386848159631388856119656066318336 6916789749446931708919520732119040 -588184123085274616318803864677515264 4375898062985119704829460912013312 4782557089480091520388171078565888 -464687641353361031354287154127699968 4075923207283500498456834274754560 2347043868497500097734962602573824 -165096341490814772291196652963758080 4980125723984434961167907339370496 3636452927369296701337750812491776 -684745444376088568275811722946674688 899660794031901513193838247673856 7726445959905347318698217838739456 -663287819304253914282557420957859840 7856296900589457608912454476103680 3212902758833612827840288793821184 -760641214929999861190712648991244288 8837436883884837585081783575117824 4358012624792264571485195125915648 -197788856308389569676137774387822592 8492512388339200661182677633728512 755187205582868347347139978854400 -467888444609322850094164245166948352 1304141474468422902746742865788928 7758606720819817067588345827164160 -451177275453589325814300699179089920 1622550347949652787792153784877056 3728896420292019465714284007260160 -561949643727373971984121380852465664 3287721359989003694731876798300160 269974287261703526490851887808512 -441739258588068011433875089326604288 3435147388869932517746813777739776 3676404241414885017947803356233728 -376135107325365529343051246698758144 2651505422486980348520982848208896 5136035342758888554294071240163328 -245918294301397818739217252302716928 8578032060423289900590981726601216 1777034785850276404523017741271040 -457200993032245807611455446768943104 5687586554245763638917070697005056 8627378916611103719614107868987392 -770319260627658826866774604156764160 9127211550796254143608540098461696 4428696823261240829198363791458304 -849302863976009830133801533021618176 1351589630210935872921399340302336 7558956840674096101498825805398016 -526424593685786091189438340548001792 9608550875319709003171125813837824 230537271768639844693415892615168 -441670055955590568089399652232724480 7821505616045252298937320649785344 5740154919925179401399161023627264 -7945498389091874602605778057560064 3498692114603348940840493798916096 5984033767360860417733953752924160 -865788974605391967351930601665986560 9106411407136605869056615702855680 9769429401958097126581449009397760 -275202403340916986217287674696302592 1175053940937519436160014217117696 5540471444937189304017844848033792 -38096505547723033556504388680286208 9877674361134935127198080713097216 4580381048486989718478317928054784 -736586113914547088424545843685621760 5547753528136919341376338432884736 9348365329108397766607990259974144 -403068965496937069445789716263731200 3369649536961275875173343915147264 2423965832474339161304633331154944 -261273420286348657086701499930640384 5681383534942458916683022510063616 8220680497332841460113135802253312 -974531069075815469668389781929721856 7891645553026179366840996271751168 2210412802784369763982862752677888 -724367003585907267404320933907791872 2995073336168169463981538187149312 6277552685119889786255567782674432 -725385790214819291548795445132132352 2916832661826305292095990811066368 2137198647243256853490853184798720 -66410110805928939552793337354256384 5623250713445822717911397694439424 5456095086824104695651374328709120 -750632349197386579442526851019309056 721060907593874487666803661078528 9739168015471234450676926881202176 -909145256419827968073219168412893184 7085897777662791345174651485552640 8891223976605861831463364093542400 -650278722995991486212169266328764416 6892927087515124518419918265253888 5331792486873521598530132513914880 -972030441454400361304263155871907840 3535705586673475263361772291096576 6250957496048197751513520646651904 -507701906545405586236150949477351424 1767824320203367088435471474229248 5247422732561467324038807994499072 -338035538725143530792377712518365184 2624464127009639286577006928461824 8440598457236845512734359303487488 -988985251524335440288122919102447616 6598161971240849540249041558831104 5308601025457696568572985196150784 -643012309945468687365902465073414144 2593485101223237815395052066701312 585687439831692110850373997035520 -550028176452765344121768447624347648 9757272422801588636654370220408832 6232738212190492837320963712352256 -887406606992038674441851382056091648 5579738895709778448524501114159104 3517232539927331820019620039884800 -722156007099257329755831741110550528 2908112724234287461647660854804480 6039452771064974310593206624976896 -498139153831191505916145595450392576 3416805800353373815954736412622848 9077196295563907245287918465449984 -311676118332016385755381516159942656 1291026156482651934641275447279616 5163199612220776564355796266123264 -565051815478084430678883532449775616 1466762725272700459728694010707968 6498830399885569289371547697414144 -563381141582239624701325648234283008 7527573466798359222022055963656192 9197016076334494435325459719782400 -554998753603309590360222430555799552 4559383454217680945244499771129856 6735650595757052698318160042917888 -838717711186399018151405326742585344 3908050942220373834691971796434944 3000335296902040941350366302175232 -66216188274931999480857161700999168 4568841346071795310151402491215872 7343156357856194212319655723270144 -986065580280206253406978003288719360 1685029295771182452925980009824256 239291154205833052407228450996224 -961399957554076600533612372458209280 9094510792841234443631925911355392 71283146546945845643172852531200 -569059672119982993329514366915051520 7004762465771561850089088726597632 867592273643174288656222648270848 -354583276965813057611366836073398272 7694884329856321564978647595483136 6586339246059914591427887087222784 -793834120632789522364444694617784320 7775630685765004005965669330845696 3726290721669253819968132369874944 -961438483939467548882557770645110784 4744517315164477627759733661237248 351038189514859655699515708538880 -112450871318021620203043649069514752 2397331295113324781217696595312640 5483223587700422569820485108891648 -859763143671098328653316035123871744 9279659858605726435093276405006336 8395453626306004383216164768055296 -334980881371363658166955228650274816 4511476432615542263500491196465152 8283486315492409993796227960930304 -920663173766210410164287004569763840 1350250851928483523058631769587712 6418045236031979034115110774767616 -613409530266485458759247430372294656 1947857609297085155508347882962944 4169540859751045282738670460207104 -234294651037158250645185775529885696 5751810246419913666981320336605184 922388463523937384329282414706688 -202167222998744515356990125367099392 1213335062585672308935335581057024 4551167903293826645311724214812672 -711140135465203689917513806651588608 4184068916875259210110032131653632 9533869163465754658062473682223104 -573243143717206270235109662469914624 8216025703405386731763052987809792 6176375723023694238066891884068864 -989453245544781570539911816310423552 6477550444467187931167724683657216 4433270714738424643959397455757312 -868620330395796641259469918634508288 3474887923275564610813898950443008 1322786554269846212461331950338048 -211912573589936089797978553038405632 374995257850692584742138549370880 9632718950421952288823237347901440 -378717013193509384392279368512045056 8515511249879461162288812709117952 19485978520779475008599990730752 -792329373780638041218710835227000832 5449946230631573056769496396595200 8888023595801835503678869597061120 -753753473673322161895726444223397888 25747559020243089534910923276288 9204772376059088634065193227255808 -866121349016536303954162393215401984 4241270346089905214789615005728768 6991500019568179983443581955211264 -890911331413449371222332377223135232 4170076216317690038559284112916480 7384176347982078329171380061339648 -205692969645832577425225712696033280 1730134282562254804621182833262592 2412727919031856793085689334857728 -959541634488768873118383788085215232 1971643267805162934316322032451584 3626819972257802945189128169324544 -461073521437066334284076635857616896 9907610533653730455256981531787264 2243367560067505082879270943981568 -21004494646768905121606683586461696 1101269455498749841388791949950976 4102154372838018178222281287794688 -749344563231826888418712704755171328 2223985839924093004904129355579392 4905173381949547227514834729828352 -201035983937255770783874858660921344 2365541499310311276757160032206848 4554620746880032935561586074976256 -928528382710736714049091804239757312 8220270742746943699772095137316864 4383757047755206642127466758406144 -330126627132269145411155159913857024 1263995261031092988305687177068544 7021949839784273156212430632648704 -932889094805383186443927783659798528 1035115207290110241913542159630336 5868171476255410950017851425030144 -853018061075917443429731384866897920 8195224012438366895539501232291840 3496273781230635024690324717961216 -684589348170130797329863312104488960 7166924285796508006857321146744832 1795278144110350540099963917959168 -127810627631972087186892376332304384 4087492424330152332526260882243584 547502273499137748763897055150080 -117054415230636286149569314075705344 2466283091215694581911585686552576 656278418439672689019608822185984 -79222576672948214451454026365009920 32941224098477666146181577703424 1786588685222981719019003226095616 -432554388212038194084778482507710464 7060238857786669771948084462354432 9219802534149142978287117206028288 -648204757728989124343729011466174464 3722366156072480849288994477834240 7027795517753914917293461967208448 -895272272924825741680091992808226816 5466216225980346066898542762393600 13741152698996551811073291845632 -675516384292720085217835143397376000 5464417194192289648865487712419840 6923028847345365120567495182254080 -783441046455378377679984009823649792 8543957250002483504666573694566400 975879784786682040448658211602432 -530276684599251954252948698751303680 5332109911945742943166925402800128 5084067991441340999600823846567936 -157956271120901803535142528445579264 4159501765094135344330384651321344 6783638783876844411747652557864960 -388032610297437374217977646888779776 5805770296276065778190681513132032 144312371440285224286666551721984 -336189965419302961071836135690338304 6063193005461477402025974483124224 4237791533843464685403483416821760 -895404375382971364792556128351289344 5953962139284776521794997580726272 7966366817324819090344859194621952 -953298284923764362038016935435698176 1178202491879477187151294439096320 3033489933292288854471711523864576 -489743918562138534444751945306472448 3657664290039105842222286413758464 1208897510908270601991988615053312 -599542102132616619624762665804496896 8570836123456584035427094043295744 7290812337130718073129627123974144 -70324839313178546826034382689533952 4347788762201388375214812924215296 3539258083498872692135298257125376 -883022748580983787435618760602419200 4823025916516988431377301491417088 6073178277697293727299615110201344 -665522907679243495730789426376212480 48358975100388388655691083022336 3767824508392388757927653552422912 -665511295648335331946455802209894400 5585682679611240939379073801519104 5521893780498546017900598342451200 -6961382702062639689422984928296960 7375058009141698514785421402046464 7481209029240029132285647408594944 -335153302143166768842493150902616064 7484828146329639521486935605379072 3718948706493648804598642999558144 -173191223500778647268008059845214208 2325498761516417371192039378518016 1514489277120899992258142342742016 -616965609188033448349428780942491648 364037700788606173232470987636736 263120238161633569396621639155712 -497466701326841790107350114607562752 489371412277213322247360068190208 2171208532158965913768718101381120 -115096795260079995081566010455621632 5303868221143551362709854992990208 6332222001989567025986842975535104 -694272563246311364274038849035829248 2620339533405798727662449958322176 2482120355131296201501800988147712 -634988407621143404752931119091941376 5605260907813999219222799378808832 1078939889455166974976328921513984 -410665301455291693743672580659740672 2077893193590495849530458015531008 8116690450992781535007894067478528 -603727803021377856730158801667227648 3072907178667835498916002805055488 1113917556861757565059432265547776 -957363270878701068524065378143305728 4327687209252450124136622969585664 1869763037739408985554285192282112 -2020652467510755473228684654018560 7217819628375139490642751257575424 6902938738326095730106016202752000 -804815613772251519668734154252484608 8758858810197874664286956808044544 3197881577786633450457467243724800 -583808490525237565414874638954004480 2130884553742182655671877744197632 5854829533718199654208059161444352 -44750862585980142999426139380776960 8075406112111790047362901275049984 2473275865567244709175404544393216 -652439098162946315257949705306374144 189586066337039314234408605581312 1669335937925381342336249598312448 -499239965382376436682815461547573248 6028130680821415173926471080083456 5195454962171754051032827526381568 -411510983202222613710604605738450944 5420815103914241633815012017438720 6383934752274352685355561151102976 -822090175469795290776681342860001280 5492739365320175436145291824201728 9350799622560021325738400722976768 -97504557260331355538158387426492416 2799292561298621480169327592210432 3466414559932574075349428508557312 -580344112322495993134119056423518208 6264203805645011682224324795695104 9247302934978202729940620865961984 -891113905653509876568963369289121792 8622324447352531682033455509536768 5248650198758257565959540904558592 -173004121340341137028916586263609344 6026209066493271633071035440431104 6097391845980367785959059779223552 -13868965210545852785088206110457856 9684146155798993457267635736543232 6088717269535491687082478624833536 -712988860174448817639322457963757568 1115108856923694283617948831580160 2696612573708124118814674909134848 -896122678246724031001647461280251904 5156146192073691641117261405618176 9615380968237250409465090282618880 -206145154209111742659676323681665024 9807600184751016043280042823778304 3876564742108212986488561306959872 -77270468513276640916903569485987840 7467665558934757197159011077586944 8330162561366213201474589326049280 -276815549665753725528476710277742592 1539291718882774632784501887991808 2329645271197381168564174921400320 -895769861899277803879604264814772224 8371043503865416542998824031879168 7765839224523075731954028905496576 -865634936089724638825645758996283392 3290044465679629558822594739699712 9933596563359982434021109370191872 -195749860095252986605727006349852672 3592676553670372769035939123036160 4341858416236836765057171597557760 -771744749503010239490940230692765696 2630969199353036149402828284100608 9518198062542741924035134884937728 -667048368824803515739607967937331200 3520347816798019221913259120525312 6336834514122560709850739895173120 -688030473780589543263961732312203264 5185579557516015686350764169494528 6720864129009682213590107062009856 -823934131978756159136556381957521408 9800494633889540990312994916270080 875020878699256028646300931063808 -89055888635598445557202802425462784 6105934049273047568955483164246016 883585863841088453407789423788032 -778240138654226567958580090017677312 5952924477596929468995005036101632 4420780106282081430499210452533248 -193261788086801236328503943693860864 1285756429824025842310195194101760 8053009251977677555382905840074752 -263810208205399845094434165655339008 6990802944036513997500013801897984 2100682537363901698739447909056512 -327532349672443592884767947743035392 4240610647811414112891430017957888 8722415477683892345429866737303552 -385877407573947645291700603462877184 6880397072461639067430291689701376 6528436169908955220553247267749888 -197825803461938882057636909257064448 9749989334087112211370237828792320 4449464770486034522507004283453440 -862948724964223672214513448478834688 6028219798948721861109571615981568 8897349803748123942482699463163904 -58089509619499706656568393232023552 9829894576360638251286493732536320 7513449008607092092813439213240320 -974580048758562738825170185877454848 1398025726056667361705856694484992 5761312366529346244796151628824576 -499402305344333627106755308481937408 6078169649691787773346308067164160 5733830862336748706021529536692224 -37057098481242448918379353740410880 3200564814072717603299043043180544 2876757372938040161825971691847680 -592513280531475872281933321888333824 2478289254992437324178451144376320 4709485202109269573095325448536064 -548491595229847610469542517513650176 3492405836473990301172695472013312 7936193231836754932089657027985408 -864497832049893430161793201272258560 157921809550340425910739844202496 3328416492254551496864998501646336 -775354303645547287884722911389417472 6365375620655417679839192254775296 3111426080154425725498913745534976 -726810819181643370294523922065915904 6827243460709542858005942152200192 5763396479659016219147182607958016 -551811199730515736133262852392747008 608606240118419079414925790019584 9468160866657983800222180135927808 -729046001717409263381177540160782336 4725637582423678035410765263929344 2791584711231088430055175948861440 -686207163479656282668791628858130432 8663580112798799522103701102657536 8711691818299964856101504116850688 -460403578861383742948172423722172416 3443846472603190161760924190375936 9511997070979207091805836388859904 -108950601644611333442118872889032704 9865586567274408418639387457224704 1952912767800027294635709006086144 -130641289957108197401186037122727936 8542925607277284156068880436953088 8213893769951005184135154550964224 -803826144685419614326425169625612288 6581943072015802006852733824401408 7824376410975310985752357202034688 -489379097750765433931852250492174336 3546331255293008858772170149462016 4692812926404266271164819662962688 -18470490233235695448756875213930496 1013092534259275257250890823761920 5846046627843383614590028672401408 -648862498629297691403556057000181760 9139678149262872887079814096224256 416063802039626042669247181619200 -726908464629658238043772571862695936 7275311728060440232396280974802944 1563306436544570991087463098744832 -522968709856093861909095443563806720 1226607178128912250032868980424704 8550598580710767544604300587040768 -264840479889289110102510018379120640 2277076934749867897887627413553152 4091399083387155033038900894367744 -551024573405775326526860085780545536 1856976318583321389510148659085312 8370390742524592249322089767501824 -941038821781372523806375925740732416 7486575392749595461324148681211904 8492241615363139155451334434488320 -416797558367794136211116015791112192 8794847159012505379745337138216960 916475414685480527714143132712960 -151153908311491952348915497284141056 9281147359959542493946486500360192 1390520274185836697259002791198720 -74732884383221834447477453369638912 5546691019919223068813310304452608 6946403303709548273848131992420352 -285285629419043445670617404095332352 9815021011672693161655640287870976 3222193050898576194293714447761408 -513568262298806473418895624805285888 2956908638354740466360026612629504 4344647776081236365123183691431936 -222769911475017060024328633555353600 2786203849014459963888403033882624 6940221954886450105642065080614912 -421345609244562810617753641735421952 7436322971749100798245157354864640 2347158764943528343439308589367296 -727917601682108691432565537144569856 2313676513715464574103654133399552 9626087525493204854259616529252352 -992461429309405861888375998147198976 7024805236502714882625376991838208 8522090009854228795259372332646400 -695510718394359887262639989670805504 6082000418298206775111531448238080 2663368496815370390533005906018304 -26744378753753151981582757834784768 3136484710249779425803577199689728 258721767653760020384236540264448 -638006359658137747634968273231020032 6457270007460823026090038668558336 2522460470154648548454848574521344 -941845212992515027855376921659441152 2698253701226379980889368421203968 6271562051071733894342168906039296 -123835310171074669111855486758551552 5286165190008254393494374275088384 8186516897264757552340547475079168 -863520164695525597218114057380298752 7802480116709315914451644636463104 2906878982716495484725949882171392 -456747270492562022791317307432894464 8970844644149660399751836871950336 4190180702771766412318018059108352 -774399495840571707576570353559797760 363649589055211595917838367326208 8778214435752185726827785233629184 -843225305123677224560261625083330560 6765934404932924120909701244256256 5584287464725346146146262536159232 -200905816333480703774321699681468416 2534404460747161585873474606333952 1860981783577951979481744113926144 -302351164403853868183002143338266624 6490059994053961456104165555044352 2150838138880972108254502256115712 -876262494328557860193121524359626752 4004365057046523685085742542880768 7019972920140310344867703295049728 -880363373134167083005626215800242176 7765047395636891704308691858620416 6538534201788430518955219229868032 -626345683969467415170786818583953408 2974796822763638083061293672038400 3230296486929173235817118980636672 -441029822889811131514201665683062784 7966139188862835170456161065369600 9915537343701522675114535966212096 -923498014037292686209281558870753280 9214437179206733449167084810403840 5452784778527985933915207390724096 -773161219541543216637248264533442560 4903739535646401760045564910632960 6106623294467313900310946790768640 -523010276458872129752340941559037952 4186446741439123098616383735332864 6202976137407672368365401368690688 -924356277777518387535927306797187072 8267540284604239875558378123034624 234709090097370595719828390019072 -961706868181708984145402874839433216 3074895922924490226264480459784192 1384141511538021212204796072689664 -797215313944379545313584018890948608 3031065352226278519877176634900480 513917083919639927907130768621568 -708618860111080612550888188792537088 5465483730417804323386434026209280 7126858314796984134452722104532992 -633856131891890913352343062260482048 6095547514405399940531635970113536 2357453476909383911466843901001728 -786827476460738847679984719708028928 1008203191798431574025102671478784 8008856773790532744841312631521280 -101193995674364196353191943098859520 5854254191820857772699847005044736 239184164875488814364854944006144 -749391800826703304086173341846601728 9640200062374816359432734650662912 2008632406062152422127564767625216 -972920640626187267072376388418797568 1964991096476058097101568370278400 9761945942942672144139799626776576 -26100609681960559906635471770353664 3778463639524122373991241921593344 7851075371886152562718313283584000 -27352142874047856413115922174181376 4877238736112471528884273495932928 6637262057059769330205745792155648 -246560257339950082493872392934260736 323739528318249177723939013525504 4800058598952153285958486296887296 -849553217909828782172443723081711616 6950661830138594402466623802834944 387427946808865247519438052261888 -572725248672277915618848300790185984 9066673938269803245948668068495360 7641693069074644301339990211690496 -231419955425889504234385135003238400 4203010147369769046426204256600064 7973624833831207993616719551660032 -932195390658626170390965927070924800 7699923379380397337733028378574848 3822417124294859637607172040294400 -943642220823751603472556672239534080 6439459124275568267865877842493440 8909643527962724429727754228858880 -316183040739409745217755827289456640 4743248832098739477912971722620928 4839246803644447361035380312768512 -522853450602611568459701802628022272 6625814265086089078034858877386752 4051238441916223880455598991474688 -841462701397232072156146335121145856 3111328144645440735311916582305792 2237771291550867567951588087562240 -353796581785560221886762738958467072 4267327954252861413605693349429248 6686373876572773399214623209553920 -600273323597076431403080463085993984 5816787528955669822263340340084736 6081461629323564169835680104448000 -818279435542415520808458217964175360 3709060784928436569221409733083136 8599535662394004644645272914231296 -663008973324373716218941098606723072 9308120661340543455988190178967552 938132495368891732456266360946688 -121648807970746017227570765285556224 5106173482703189058300765064396800 5588879958091494903601052956753920 -713193450849362638343393840977674240 7730473100036798102777454389100544 3044305309723806542657119863177216 -52318489356901400338324209105108992 8237697216779013679418210705735680 2237083923748201454694611839614976 -928775427135005492249455610375962624 6221094434031416345381258183835648 8841843123369875944876468768604160 -700451395723572541938697174826090496 6286160315872939925969819570012160 380488397674386105722258738642944 -594696173570007836918902089786064896 7956676817644423493249858044690432 5229887523841145208307944599322624 -14136143333911534749831743976505344 7239678206146495462037088152584192 4323899813890759728299120393191424 -637344324105850642639301434016792576 8786734521864793109073652745240576 1140514328577551538908525437648896 -898172275593464295049216341374402560 4887144089889883447609570092908544 3220772470661294648803565355663360 -543584955952739240246789667916087296 8172452412490922511286716436840448 9934100398922291781249098665951232 -321225772869189292635486128430907392 3862415087384193922365330382913536 3802281684808564244123386583711744 -576575832129681987908342455338008576 1650519253298079443996089241305088 7644448143228202305171796093042688 -300630003979072050846696090693009408 8535532600383936812384872210366464 5620351251185870430879310938112000 -884249092031605508581836086786916352 9524899369720867311198972952969216 399429735627296636151290463780864 -464171522751721500484180871437352960 7039322744701191988608245117747200 5074398056625957043913112818810880 -392250279127978531888336233742467072 1760475457078030597348147526107136 3751574068244330316062122131324928 -879897351693389537206575778238562304 5087876191511208690274009238994944 4179458064164650629476747575296000 -787300745205188905769420420200529920 5957389221418522594412493277233152 3471985260390677059325984914800640 -105237576020759152489250907645542400 3205902708302928505959889038737408 5803754014528927674992382296719360 -73856833246405468349422463879217152 389535607810340696960245002403840 8113535420574458439504562288066560 -753674761325543665832962235442397184 4142075682506527495822646813130752 9422053943718878228614245460738048 -315468281246884562288007825575641088 4774387644203155939692187624669184 8570781261788216740903033052856320 -83316720073943389016880454878363648 7121900437895385676133999222718464 8766047454119180958720118182903808 -649047686330485298459880760195153920 2658985751550928227304256938442752 2380232589475640444797536736116736 -313970420090665866051040415181701120 2672104141180354821616480842416128 3125041437477752097371307672338432 -908473862663302385910631589994299392 7958521529902410358839055071838208 862238793912248048081170300141568 -804456374542084041493930917052284928 1866725071249601154493389438189568 111126487270321867931874953789440 -293722353080271799356278571704254464 1550517999658277246706659622912000 8210647765536657081847801605783552 -100859916900646684123330467294347264 1174837682679333210024359640432640 8076279876590692081393520106012672 -866490625650977352239208184288378880 3041951733037556874193027154837504 3017220232691011385145533059301376 -663878506197948293354509040372154368 3390401447328875176111107863478272 3714515268759590131893624142561280 -596196966067991947752894767879421952 8254991220961923058691667889487872 220439835488985206880515481665536 -849150221280774525537266919798734848 1668866982049535239213959534870528 7227081704466687590759856519249920 -324653475810292527230033678152237056 7967679531698288747396141292716032 9818802477059672050485588177977344 -425185387456896968026457445721178112 7738116276300978243189347996139520 1683771981806293987460788929953792 -32871828360669730863592945527816192 6738411959045463077816617052143616 6153873766212901711638973948887040 -460925182283704464166640733405577216 8785669014125115346033793065549824 1635196657856583628608023962845184 -410074665316801128594834462800347136 1235355601866552035894504231796736 2130223054850376085065840539467776 -853597037332980193955203488245874688 406541400700165757325626302267392 3413675878928084018370815987810304 -441667032603184544548431032525783040 9180654192067084267621557001519104 8068081217534622357272581164236800 -991209304322717228168288647581270016 4080742839366012178993899280269312 292726571500523402287738842513408 -179473907007144145768590347614552064 2264948226822181848645579705417728 4553864549889116362293619120406528 -244720729358917573541540263341588480 7098037613249770833345608580857856 2181895133612506658575338428170240 -131224048357218899460166200166711296 4776419037123438938101446720094208 6387021248251921149881146276839424 -698950491894895002141111995173175296 297154366298344758875357446144000 4629619467786459660055403428839424 -209027581407452984144019750784073728 4252167556760568172934915424256000 9063755378270436701440960926580736 -666557624756042600567180405801746432 5085667927011204762230055050936320 4365147661209279938046123202052096 -263614085828140060637709896876294144 5514392285962077323996467547865088 4423005147482445404342433878114304 -105431426936235961293319237227511808 1692118333999680442881321925083136 7595489586062881801263388920119296 -118428622906310335694097595385249792 3973903243399107814195686019170304 8186352525728245405517253032542208 -711288883001757363609522888660484096 8892412458330084236777963665752064 2503697029214882204557036799131648 -211352176495520340254676346455719936 1725506490437481119973226229792768 5405004434938809669722060808519680 -413830916205620343705421637910265856 1492404209884208767080229964349440 1395463759838774072850283820482560 -379547279296295924581659331472130048 2866198272379723917408960052723712 806013487190181886205774392197120 -142044722180951374771633759631441920 5679902592895701057882319990292480 8593048783628847234873318235439104 -473576909805604770957635870926045184 1991366324709357926023857577132032 8751356492935130708352871893565440 -343052638230171137345127267684057088 3106985619547176765213538848342016 6594442200053915841138862573223936 -173451894400932795937393354905485312 375225345490246706623925524103168 3769218369364834793866315654234112 -740023814544750161935125559616995328 8439067820526191174467526596755456 3864737787816509320495006742478848 -902900024600855895159418891679039488 4273548728143564947165028112400384 1313556315453008077933524178436096 -769990104790491851165884753729552384 3776536351579624239230691888332800 6622752670893775854699515417198592 -992485303286241769830450085299748864 2217680309050543713303816151498752 7769793122118820093906528946356224 -680967633912593189602900114680053760 9454697242689444009411407886942208 7057565333886199996563888843784192 -474510692015023112352482402739683328 5543607405243801729219911586152448 2397941372453788841131161908412416 -708851799135819650862495468212977664 9893564534153219996067055001403392 4278443874650253216985139441041408 -942753735529887576376438107972567040 2546910924876428123361545547677696 7483013822184162816444285795172352 -225040900531089292965487628995526656 5320131770748493239319654444302336 6974951666502860768042428250718208 -844024674612801677788731827445301248 7663870385994315916147556679155712 4712695375129603710338408447475712 -936955091047752068910686267370373120 1185358388260078464048496778412032 6585309955053882300752225785348096 -944068147237714414494724742008799232 6697029729149457580885760913965056 720014836835072027429419203166208 -63050630874890083824028403850280960 8261187633411788187979244613140480 2790546627418667552792629473181696 -362034268753004598535124911441051648 3683987123490633711550003935182848 9566386195786494499402246569066496 -185941012058840677347028595430653952 611712460115334839876522413654016 176237137711579903871697725423616 -52123929491178275479548766392942592 5115590287014895625101929858727936 617337845714145816616362039050240 -191097473135848476666698163386580992 6738441723930450828068385340784640 4049291876652244512654394172375040 -152876793493967579786251366651920384 4656859101168367478454743738613760 4667898885518259475117928204992512 -966508528521440062100172762043645952 2329858187639704647070523882209280 1979527972586152402642151812366336 -697389200159091999212347848101199872 2474604018145675200028667256242176 5969498065584143858697218950168576 -292993263681629952820509451172708352 2681397190222799170717493854470144 9355544524711475260444720064626688 -841366311908488710299255140515840000 4183539738932653057719400533065728 9991423270076174455710990492237824 -572252354725733112079995756859097088 2996682460645494702111930598817792 4312126563800309545288042832461824 -489259224263133312779604026047070208 1712332417861627223463519783485440 6686867309056887336537633268432896 -738779692892368475485853244031238144 5256077574225554385097059859431424 1804070464570869816232905885614080 -360730959487422387939187422524342272 2342386560137068353331050443702272 7769870028845589832791675075821568 -28192246874848622916822785421475840 5523984397679869323798435422273536 8167187416898337292508193108262912 -924858973404866475014178867962183680 75372033081437059581384874524672 4011788398401174937211407834284032 -667298754963905141168976831071649792 9880493835867226922049696595705856 5633896646429121382925013169995776 -842406801952989485814999321856180224 3060357260014931957372846321172480 9070118122531522363100000138821632 -453573974140233159765829233766563840 36755423212313796135778445688832 8601624194975953999171095202103296 -544949454551529512620538764583763968 6428309202173391909764507354791936 2595140750419643744080079683059712 -57011402881440852815479505437065216 6866828727998814325366264430592000 4765078216009637382219704762892288 -616011291651668399816170815512117248 770598701182455590935242702061568 102299061445100559055237547032576 -397080594834995636357471489713242112 5662178153743379883412976857776128 3655222734222199593832096573947904 -228582715642025552055739523342008320 1619711402503954937909771858083840 1765080674561426958771635269664768 -381352103985486299687080121956564992 8901945393333217321985317443469312 425762061891023998746197221179392 -505429115901040348730806769610129408 4775361616079514860448370342756352 1693083626632876690662375523614720 -885456754039040995199370486832168960 9966432410003121745920926454644736 5419202058887495589363017389703168 -81038351523188491648619728821288960 8748639367059275542348356701388800 3060890722323711695441579487526912 -876145471821952528420954178995617792 4121401515405820954161894662340608 9680612891799110892319649166262272 -602524726877885108591774068524449792 9626529299986297749967975250657280 9824150252494127536260519580139520 -840655605375854842058740128416792576 5102159465842471773170717306126336 5908952217461983416948953115000832 -923314710275012337991493038462992384 2975549369377343709618780982214656 8818958894208263588990877951852544 -971019187981369178375644263013679104 3527980284475065300640701077258240 9607173895453608467292961938341888 -773175692373764044706004561068818432 7625008758496762344065991259979776 6749165997384664880027018251468800 -562216883806233299114088885961883648 5788511647711384522786527158206464 8509832292113087041038773095759872 -487544932364366720305035764486373376 3996846481904958945228947544080384 5261857596004175922296691663831040 -460479811800837943349716688490725376 8363410322368708052234276492541952 3242683983558836822637572196925440 -607193003960130845669484258014527488 5843060187310905766095566860713984 1242277881502639002517220314054656 -449462042427839026209992020414431232 2897610275196215769402352489988096 3811717898473445697086808924356608 -329170254970557448457528619449712640 2961831859643914501730346934992896 2871302927496028109157946408042496 -908659930001175587923031356308717568 7542025040924578733675398276579328 1313900929617008411438995210240000 -224547627823480555659544382612176896 7806666304763831578286658252963840 7368594776549508760420614253051904 -376473770887957965598311406490353664 1695321319828817159163320930926592 1855942009472776736551552421986304 -190498178693211518095078799817310208 4082774924583077708555330271576064 4100270894076677149742945179533312 -134638465264924213900136768778272768 1689389788769448150289740273287168 1925864698098825059146437475958784 -73672878349361258146689489209131008 2621613797546290796432899170107392 377862603506490063600425061318656 -409214731104224972524525862877396992 8660280278254333754609213085057024 7222061370394802097850236243279872 -382895722415399578266881270642376704 4203402273297132177666616414175232 3314264427503544329713681042505728 -942494091477211078269254925234995200 8851546539464306577008733716480000 2223197600054890772713396517208064 -563404224563150894366645474935439360 6578050107254062488453447038271488 1392476488870996333792625694867456 -310069527690782959855136875351113728 7231893516973238115999403082776576 1350616430462055797622358356787200 -279659340993209806940134435977166848 8589294668443252623805135368224768 236268202192209507002087894941696 -50231985341917179250496681747152896 1687098055183201259629283882565632 3963029632803244643537844900462592 -245675106090768730416895353046433792 3744467553309664832391720736915456 4828383849432722066166862529429504 -39619002071167580010619720299446272 1761802719309141824361724173615104 1962984886274676681171626534895616 -551377944737333622511972103766409216 7887891559112836450839316259667968 1916006326501799329910441373597696 -499640019934571460085761061049860096 2860203346256366928980455897169920 3321458365806398569942954643816448 -961386312063074046949340405668249600 5115114754965725945812986808500224 4228086046963514201329390562836480 -838976922625687733851266399212666880 5617363481315232388586206809554944 7400425949985812828401225277898752 -314181849846319841918697026371977216 6657703310474182736149957742428160 9628628243355465990010514362597376 -982748885346179308934780559363670016 942099364283002313857198089830400 2686574016343217723028281139134464 -468232332140715695411862886040993792 726187963876310283406448844079104 6301827071069543581994906025984000 -88767734291875732752635468179308544 6846350361398608729933856408338432 2717417721658433826753485022953472 -765302625476106223825020541653221376 1391815723717527386869917250748416 3603169675662465626369061862506496 -187582908216675613076332168655929344 2644400594602404708177053768220672 7333440985115385505051817642295296 -806574874098923758903860154322649088 8792631223836493849262465797324800 3359416413341267094090825164914688 -770905256921800004994651037227810816 390759738296094635729667395420160 4651006174647294245240358395969536 -700408117858202365937547822803976192 4051094965680024418524295591886848 8989757380789521634508828445769728 -383884720858610072841130137652035584 6533279884102861903929448316534784 1734935850047804220395254666231808 -669553843932173491314676801107656704 4113812299701251786295670655156224 3640036242140808508261143154786304 -459862388444054999898260371499122688 4116326252200510121036145571659776 2750751110072415317213475848060928 -530562733867360302787034470833717248 2506780120412154100958730364387328 9331766599843835157575359040323584 -380365968028528387763285570533457920 92172224097214120881205867970560 2747707890642615785809129339092992 -34986966417427922909445063958331392 59124761273994745391423562973184 1930132218437211242487800974540800 -957966987254183420004560669098639360 9650117018139094033287632094494720 6513823351145282183291623486521344 -227117963221089232251989613684457472 6276627273411404056979379092193280 2204732091951062143379687113490432 -751215152992945629635150619441364992 4546208835192587658448392647868416 2802923453850340317315077075107840 -44071635876650905074855403803639808 9299884440794616502794916940742656 2348576093957083107817212595929088 -752931909424931035342454691750477824 1133710595764704773506951517569024 3511922467173664217024638939561984 -368094913860221382387408761375424512 2445251375573552498745793876852736 939589519622260568877056183500800 -374541142067416163420168969359720448 9263452721028938438358013801660416 3555757504870534967098441050619904 -731030674668281411682220527243493376 6373369233599906012289896424669184 513359894158981542230499969204224 -423326379366603118910919417566068736 3063629403512345426696994757279744 9322865572322767332532024590204928 -397531098190829901023754806496329728 9963980560014632361157853611819008 9503291847011051201444428440928256 -27130659459011049218875660901023744 2944866070555253153640906238197760 6667163962358189072158030194278400 -26496247211452920327005211298103296 1097552115861682829154940503457792 7147052647011878518715078324256768 -559770760403420344555826931088490496 6366671742565215400725679280488448 5390943770965017856200739783704576 -404852672419670076459211689084059648 7826469065209629155971254399795200 7816327761438997988066951337869312 -972046713885038159051428405482356736 4138620186348827983029435797340160 7480603001430260761141648602169344 -481107098079298268229296825063964672 1857137687545437598638515356172288 1475493873407122490628999387021312 -3648825228676441143081688924946432 5603005530704116659042138623836160 2271225161039295700826294692347904 -264565875495788745163785614615642112 7344423586757857724896846880440320 1535657602735032313470486512140288 -381423245612345778460303995701297152 7010596969983741727860770140585984 4899509957480895284702822747078656 -495885451328264757082907352252809216 9009574002901005416057482724245504 8844988016225597544163274848731136 -193097414359813650265345608258682880 403619841178816425304394926391296 5330865655234742591242002493341696 -348991029352091159452809724002566144 9245631752484073181665684860436480 834449377378306607771741174366208 -668618942399440958511285597835886592 5762388496920634590161557642018816 4871277282110920181089043891617792 -278076724154280182929599979308711936 3844659487991879130206279871496192 6355673097960722199916590323990528 -45185489169398403174810592145833984 8530115257366280179296713824010240 1031319502606838126317661824483328 -374034693437359040693329175884333056 4986873580456929890612263610482688 5886034619136336773256288774651904 -463286208181315257237348152816697344 8762414386375952780146045681139712 5240760254851130208490071103897600 -726496337062960179225466321319755776 3756460144063396087611735823876096 4555066257685861410260834364424192 -543718598537425148745931445059452928 2560985861879041465918892550389760 9206092721271212011498432301629440 -354159512833074887230186032195436544 9998328734622760298875812438867968 8247598413567327413821330247647232 -550802057928181717953095840431079424 1101084756634041254425891235168256 953865264468447711848779634180096 -850410784044774440480006354742804480 4252320668604094957089954629419008 3874729742944197159637051506688 -541670411886222538630549517352566784 1055724464147784190028452221419520 1872701131416613099744335109292032 -900088405021709962377075709599285248 4811691949457745228036953438420992 2078667680856615007423287655399424 -177416423337065349288113626006159360 2932726422257369881254244164567040 5991608059181380906173512902770688 -891210193311326496323152386665218048 797734697811319805722551883137024 7637710633130281509848680409071616 -221178832018708090492856575205572608 7371771786009386320802725184405504 841126008449414479533821724196864 -891346722917396861464313113725632512 8421400313827756570003320057364480 736890123202862923068108255002624 -114962213393609910287185267514146816 3852014276435312623530370230386688 2327564822258775375662682017366016 -364079997161135097822740832707411968 3417145149211744180503854675132416 7240305625107021797629675507286016 -439911676180412273369582479685451776 7798062752617393951260127822610432 7825617397992120564050078291984384 -310098711356913330972575580962160640 6147907248008668692489240420810752 924377287611287705406789528846336 -465068852216212577491748468287340544 7580774840567345959617218379513856 477607721015807441451640061689856 -116850611411635790417111394811904000 154916351109148399254915967352832 6082316514032269078871186627100672 -183750862361545556441457177479086080 6553752449709635774718560522207232 4821756085642626383447316653670400 -42676197418885835737426943845335040 5261133626128228505899946330816512 1484793451076510464154582256713728 -42639080653964846770753994242392064 5206107839801745305722640526213120 8304035694181404342656834178383872 -945136121335655747377467180579815424 9414460118220519594031591232372736 4883151384349230118466150257917952 -271732013093717527418151047857700864 5364633569590388964041511852310528 2989895054780727112108202820370432 -56763967404157240641856175039578112 3948584631797934549063435531845632 7645883988195199974036432297656320 -319895723770638939182397687435624448 3284811953560371562939237932204032 5323434601762528932376639336087552 -425830730850388087984297416645935104 8334888112472313295124705700741120 4811882671941712709323615971049472 -601454692329645803383770246453133312 1100462051873290848617279621431296 2046670815702877328789010026332160 -861508212572810546686550340710432768 1080403426917428017027383075799040 8161242573830925043926852979130368 -733968234530056159779613233482039296 1512176592978933530587360372195328 317898283614737365425778015076352 -741893014005451939033008875512004608 412181093060326709486773514272768 7296545990799241424622109482549248 -496136976415669621140679066789085184 6730151639521877186821943118004224 483780952463033097244937715449856 -578290012232559108836454565953929216 3675313647653265057004732452700160 8309141238040827164232062213292032 -29275370854910639897452935693467648 6152879367258971221912290045460480 918787467890896924137954387951616 -977517681150665792505595802349993984 3051160477901847612338443347034112 5646557874115274891035117334036480 -195184601249648825314582456306761728 9244326827006448374901726576115712 1175357905101741682387437131661312 -683485021312989466668274885521833984 4244949421178892094010929188962304 5486550021841673074043777798111232 -353079252559009683783001610251141120 8151049739446351118067584609550336 4584620885487349385104088646025216 -629721861723993930480313473236467712 5825913896183987465076798453186560 8360698867056795915220541016899584 -370081156992780971238818539559190528 3493332853797668060765813798338560 8103317119484924448501814083452928 -98926961437655210285941114955366400 5347696321902755304562206380654592 52169267478656865997950872977408 -698383667777746485325724140349423616 9702233623715184556843040090619904 7886179732723755115649139159859200 -322903521392391518477213978750615552 2068425161121368711723071070797824 2616158928375503997058499418783744 -516332592147868374764377613155696640 6364850602754322429606576995172352 8201428307428621524242035460014080 -300813269711118438662353276979118080 6913434124497636431905215775506432 6161068955627417294841226744299520 -731692498134015883364182564941070336 4231590781772019949010599043661824 450704461545576628274529082277888 -621455740221034866717924123710849024 5251630099902351561356589863534592 174049658001075176713441658273792 -123769654744900145639792547670786048 9428869333773995041190369399144448 2322826732720324412736223563481088 -59562512121649933629090997878128640 2084328009106320887035591319879680 4088192893880672928538620690694144 -626905131351940714454322426425638912 5622651708509246940190764141903872 1822317123205251606908000813449216 -291372096387373032543494547504627712 2571727767044201135431736342085632 2110624447116427629145577664544768 -688696577167873556057810136662540288 5835688164705807304498294277799936 7056846974662174218268800414908416 -665893424017846765633421484293619712 4331094375421139261126934439919616 2819560481395511361630339090874368 -964183803857693810291423655437008896 6550712453875860301943232209616896 1417909525643040840337755358625792 -641852308326011745279737903613739008 5246660502794052982363620991041536 1799073328367886074455166459838464 -739912475450276973242827964581675008 8527681729937310029951766527737856 9811994845220283783186593425129472 -649416369180449154501298138422181888 3037490432385400673982114993012736 6030269457568915421883672729485312 -694407762357323032891254983010287616 9578642140542024083858972781576192 2774028160510587782709746912460800 -524462390611294868249044290996535296 3343248135912380215216344546672640 9695483762474011990331638866247680 -871002241417931774592648823860887552 8656998055502138681253088922173440 491578499391427434469972674347008 -919572002131460658590218183348584448 5999385002504546246164713891168256 1780123741005412693141088460865536 -785561497121698083041548001681080320 2164698116283441672312761612238848 10702573743102431845381442633728 -322972221336224324110675769955450880 5758577110039683428619722642423808 2544482159193615440809725955932160 -190336660087262053163886213874057216 6990074565469726853140567851794432 3323224759116349353011315619135488 -191333482593381436084067836918497280 2660539972918332519531312253501440 2109584389215444266904676256972800 -592273532481143944650894406049595392 6179535820697107687535300747198464 9524591326950032552283828681441280 -552629545565189206487382840479580160 8401081581593197676861099440340992 1158382985413436733368752138092544 -249440842929888729954492691746127872 5871896435969690156924124170027008 7442025069076555337290647087349760 -361540892384852715155917138374426624 1525876209986445414817978818494464 2583733792682426518287577381863424 -670579229329742470583345676040536064 3986197615416523886917044987232256 3607396871428687009397320531836928 -954748942535588459451126285317701632 571479242381977851964061468590080 1603865711046932188984950998958080 -655998474478946599950499416702451712 2004189742635688803857254597001216 6884266053413144754501497460359168 -745141996593145966035623607439196160 8696823478924307014948617627631616 7476739316464501059806614077308928 -947062528319998812194163117181108224 9982542448611048925782562169683968 3314692444736940511044476745023488 -370401723381314311676521801551183872 1706805294803615590234629221646336 748902926117362629650648416649216 -93190577151649740086630660207280128 8900283080423762839070158683635712 8145026473024912721018161012408320 -40450658474371052036752153059000320 6461599464543762977430947512713216 7215454268517752710475688945123328 -150891992797032552376052670187700224 2595587942170735473512617112240128 244762229052447764458535716388864 -235567075338980690048605794009612288 7840484673545214430935785215623168 309819334953846477249694467620864 -440495819970796928307970050038431744 1226887080100416722680012091686912 4599673552201934225989680104472576 -265619486567522834212404265920495616 6454386889015212696496558099660800 2884061464411229749942172612820992 -6851398172584616495363015510589440 7844062647837010424143377101488128 9320307697077125977898579694452736 -690211084012372351446370932695760896 4789325050654956584982796075794432 6692791645216031701843502373535744 -637543868093485967639575941284364288 4867463102915762127035033209274368 2535394687449930013868408883380224 -565643825501623118543267473693605888 7935562068854466083129928697511936 1010194809648203897856129960509440 -119142883850202249558204969039953920 3857675536473891994822388368801792 7725403845032695321641913893781504 -427302117165530754401922291282739200 966561451671761354830305172652032 7881043539736852156806016098369536 -589230685139850881714847798576283648 1564824025158577098703802397097984 6876470592688323849740417071316992 -201453915296934298038997634271674368 6538841825487103018322144247414784 2753319695509388773471431413465088 -642852314440818248911448831959236608 2047968547884478990689829598003200 6013960480799986140062827702910976 -479226855981710057416698074916454400 6759252873977143728786477785546752 8261871006939161751590198919036928 -975640209528689370932067278685995008 1028559582219812124847346276106240 5048291048546601059355276796231680 -70228614525663730411333332223655936 1063770385938521435060386987507712 4914377070320181499299741495721984 -613518929291508852909277826970025984 6733478136627558341005684082999296 2511782597094852503530765639745536 -428031124983690026150602734525480960 8329175133082479695736894664998912 9511914596646273170745891515006976 -311444313505697131961267483718975488 3754220286437383335821172723941376 9901830343056478135939892198244352 -78827983321110580263378478285455360 5737196567989039112042085877809152 9186073096205964832429272723357696 -462945703764868871815408452401889280 6083699548197743228816238114242560 4321634693715148791493894042812416 -579577879938861263816988303338504192 2363517965959331001202300585771008 5780866735246536259135642936541184 -55924392937528167264781126474924032 8886490160672144802002916515774464 967958596152249957983346766118912 -597235268686263828022645283052584960 2225010247911715269029031642660864 3569931650016674523700698097385472 -184923820307007192831329769925640192 8489952804520592464641588253949952 2256612188719055182396033649868800 -84858023796760972717884024819810304 7103019315904409687244036426956800 9223985303609509127489556983054336 -545742404688071739721668325514674176 6426859306803402907963260766519296 2591844546333711694037215069863936 -375666347919194836641449254185861120 8975501997004059666292369027760128 1216695510641356942187217119346688 -831636626773291882151445880209670144 372036753962183502674831502999552 5341797444739545222945070309703680 -355824476021647924869782831909306368 6358645538689000520361235709952000 1659217818209800996667778169569280 -616156053543580231790993217876393984 6636632013155452782783412322697216 515325047498073626792719644884992 -211663703652114555400889662156308480 831364827861597473395719863795712 7743456199875155922873498095058944 -811740940432012798213503456563429376 4841856284678115300770605141327872 9311710705841949202550634286415872 -940868143867571909213931943996948480 1918767520971577774369936246833152 4090721074914785270178501588156416 -386160381194182797387179612140732416 8091893142502844939698541441318912 9415913317017230698149082765983744 -880593866335867931958145805174439936 5936227628586696065983911701774336 7866183228749128685316115242418176 -648128975952843920668869980283994112 4719347293152766658129570314584064 2203388261831567543696822240280576 -787050198199933913236513547784028160 4476496229253098523473514793533440 7245466672332800910612085560311808 -190742657218530193247057908655456256 6459204640653712882251177201238016 9417080073005842833851504195010560 -725870320117531899824057071291072512 533772381942339383813072270393344 7624263165686990919456733146382336 -633872338836895752778488793612156928 2545558711709479628250318962163712 1476914284825771524619434039705600 -106600868035477838813748627045875712 686912945229499941975728863576064 5666873597670612987271483941191680 -48233484563700679781236676919033856 431840851597494979712936583364608 2489540205770130288448430919385088 -946304101289092236668852557171392512 6807329151738404064996479595446272 6753891680524455168034223566094336 -450483422860712937913455444540522496 8681814343511643639278370721628160 8589221240222651484598676676935680 -804441345810943311511706098460524544 5953509663913576498778438616743936 4013005978737108108859900124200960 -379204084155103957630663879827652608 726439352074488925235555164225536 6976756161647085040640854845292544 -315912250084367845950753274834452480 1963089576088845327414686916804608 7834819084646491645986036298809344 -161894003788587635592212538521026560 8320276613889561145232701777772544 7357037930564785350337577122529280 -52655169764990787719692749423771648 8510226685272309581659596763693056 2115365376515468895090808750866432 -232026778419200519982921955848224768 4934310036435690679969414587088896 5859996305159127471825386779705344 -586269781140348187507396016106110976 8133170661061804791805165027983360 7262730374338723608697900843925504 -72808852681464420814823459144073216 1298071273412980285562734965161984 7190598254588317375397326701461504 -192215704650933113151986017194999808 6305292580465179601641548298584064 882451918357617029233357961035776 -616997435888648827669782518080471040 3257173728588589368217620793262080 337376982902970324771265365147648 -808846832186991483485363782570475520 2574064040499528885299391527649280 1662895407351647771316349642473472 -505217685535514398078078014084612096 8159006692009738543424345873580032 6016494189602910511202804078477312 -373701277303631275952505959395360768 3405560231496950028549457048502272 4901008916578233727142178399977472 -378468482623107633429836592205266944 9197734265135686779877013172781056 6276186275702405376190078836015104 -66719113928882162721289314171355136 7488724408413272247766274948464640 1438388678184578515966363546157056 -77069901818174748075266825227599872 8870975708406648496915358941184000 1218881200499984699928207054340096 -118584514535606106854711223979606016 255749804305464860478676911783936 643441192654851490482003877298176 -124806358506341619423399725225738240 2445109879530740381003771673575424 1867284336452395049804141026082816 -831175425058134199805169319746207744 6325095067686357484182944106938368 3722889899890823656532430412578816 -153272952422285409317153702003343360 6514552664553356978318503953039360 5431855018693621749669960280440832 -952721771819916770472946177398538240 3892767286757476604391162948616192 8640573184481461411948134358056960 -122168949477129744516709035509022720 7530692564469090427908957361143808 6924934513960237287055591454277632 -45523835139695418528135530074341376 9170838132944634446730060663619584 5170825135251128900485536091734016 -769039440271108497485805778819350528 3845600234947548864081101265567744 4256791445202187003836167526285312 -379102940266113985939828149646786560 8636702717582816773225690483916800 686925555783522064678234359857152 -771246633914653640373921822801920000 718380141246798243475368374697984 9846606619427127311031612978757632 -614992692574176913632907586959310848 946125592544255970824447951110144 2602684747772201603404486823378944 -297367811883643052505706641259233280 8780569079313413816777153701740544 7148696942870750112148574737268736 -867833623100445926798955798421569536 5847506633148271678354950222512128 2173786891341784339891810042118144 -325105871080120745292830920086126592 1911325720523091137889317679005696 8967736913630313881551763591397376 -730237116947224047661568297474719744 8491305980156529603521219334766592 545933178846479031955168130236416 -143934786836252623540290972616228864 4981753838742770520069328829677568 5782027291088231063444653231570944 -823481624608102721942439875135406080 8850779016763557814511710144299008 6379268508312403660717088793690112 -14609417903312976696078492491579392 9288776697685114927780066985246720 9411545454195283562967722549575680 -488010857654492140940817242534182912 4390796228605999059176009553149952 8215160650453964021500826137657344 -974297732402978926032761175482040320 130854005068350972057388482297856 8186700616794210822384205600653312 -424315421360062449231054512257499136 9039027875251596191644951905304576 8874661008217840694564838801670144 -706172201814340457571350357213184000 3359080177568107015934056025030656 9531452676804524943230973503340544 -747902659159992923138931648274366464 2980926112994016654389070574649344 5943620317761453886545090379251712 -969895328109626990933258175644696576 9204141992913307870781867252776960 694552429674911881418164823654400 -122046861268129268881072474109771776 3182600229548937485324327264976896 2586208016209342334599884873662464 -301611615417708777073499328223379456 2664653071993709530638602773463040 400073228229960473890914278834176 -539501833108569891216414676841660416 1070126438858856108236444318826496 2584392978244206388054267149680640 -28973235792777097069921090733604864 4526447130004877769311757744996352 41971051172813925403568677847040 -365793649270103953774036047194226688 2488044117213497877577290223714304 2226001387932892619727971356246016 -649399237058633628126486000402694144 300873064505474348627002971389952 4359684691528885930315505565958144 -865322585731923185798927804608282624 7280713872365230450974515145998336 4074311072522751235333758103060480 -458378022647779530138161739208851456 1126383082348573460180068466688000 1708282280964224138775755835310080 -362709258786097033020694993622269952 1997764714679560241574059188420608 5837070377593222023230676516470784 -804459393754478659496038371510190080 8669175566142202465029640975024128 6504688321540065802465300906508288 -338796502979856856048670875408400384 9870642754263187757478211366158336 9779594324273992362718544256827392 -113102383177176563957917288748810240 4904810921157797726501612478791680 5618827327338842638524751523348480 -827757907357551711022746693097488384 1103166683810761514560568124506112 4566252427201801275118854768427008 -197196438976726689776746825697460224 1068066791576015468795547250327552 3055168463434280077574794410721280 -323427953410742562630771614500782080 4907766806207344122081079078158336 667379464103597263419046025494528 -90037677500433976575547973138644992 2709405233600359703544319151439872 7706811797054419616555733853667328 -76259647958569384585467485594058752 761369985097699734007615064113152 7132605845393253820223945193816064 -174700577382125051726345523710394368 838343028332003221651521288536064 6475320785764011591457085753131008 -178120003556746857806309704572338176 3055718925069244869395441678024704 4046871077997135895588180171161600 -523348480273196641683448949131706368 2321537902407713025836563340197888 6873078086336303579923344881876992 -318851518753662904352755870811029504 9800233326097974525983357153574912 8445204342441734977123383641112576 -936055157654077186707019671034396672 7158526040776622901143877904760832 5947715209444739651011336550219776 -486676274827206775458444133531648000 5455738548298039190808703052808192 4280957622994150248057550076379136 -67039134383457998647884701050601472 1448564041967811248473379459563520 9531425710338573556388325589254144 -13306852858203252091121594351484928 2551786422537851699413361358798848 6017140061552447083709042293473280 -664625518714330193861380117117272064 1138538056736403448348973847281664 1292445975353892125158552358617088 -914161889116309010155167414046687232 8244404194521078636808314669760512 6784244527700554588457864941010944 -218297542693602254736420942880178176 1656880276776546239482622226989056 8822663545064810780618065386143744 -95395382322443474037439497817292800 2623019710257879422677319090700288 6637068692765748278587824795549696 -140014265271116864527529328452304896 5856458320854642244385053217914880 1997935862044134484186469777801216 -992042629208395447482015009329905664 5725622397250518225933319813464064 2738926725469094112240204406325248 -965442485747730186607945605894373376 1061391508313531495116689599627264 969868889427175382034949836111872 -607130910150169419785217249193754624 1834202449799817826554636423659520 4219189102705670799671180379815936 -215423613848062093982649337256083456 7850828780770858450468427599446016 4428074004937264077432431895904256 -670317879534489124129454269931716608 6800142018339526438631567777595392 9647243022584100658477520566353920 -370699336990070508923217510030901248 7860230018052315545367787761303552 832896385599687812857997490651136 -421906791205015794906660859587592192 3812919831948429623764012922568704 9416097510874254555011175440973824 -857826659407048589871370307022880768 4995909948367862329983838340513792 7172335307394997919328574757666816 -142510826277279383598500152235524096 2494336689134321091839518740316160 7349359740976255172674717082451968 -287382279713923381573635275659149312 7387969952647924209909811623493632 2263022490841670645018573762723840 -135502998836544807478536187494268928 9405578839294092023933011440435200 3572569660241719857163453318823936 -393999943553659879963800707297968128 8179309700605067477429909161246720 3563895731599659343763176366800896 -377588637998277024315905472475430912 7133955778962702619729225192570880 4525060029442441978022342036553728 -922555905076320597396559740618670080 398118464155212005646496167886848 3432585591470671163930203039727616 -38296220671410502448525190669271040 1332841192985915675676726867787776 8394248205167615432735012390174720 -200201479313033154575409822832787456 3606976750549536732754678432923648 6154573692366592752897010847186944 -642603545258855881970984093615128576 6625960509061206292522078809620480 4808982686203607520335310241136640 -208139845549140757571057303219601408 9433386348052697730912720248635392 6490750960030844347789126194429952 -318921409476070521651252776759459840 2173139616328217559644766694539264 4403406131437772611703785530589184 -364780935726335104836403755476844544 3509149001391329162760323757768704 8554576712370274909472634154516480 -602300025049130585246463803309162496 6594595003336093561521599294734336 5851424372318189307206297251217408 -641960001303522248350291783543947264 5226211931758951442193175885643776 6854476118764640052336633399214080 -791495793258158205271440854603530240 347231883702855901914300233547776 3866097858948560192677564743942144 -539659967219569278873002004338180096 7473361505265877296409626403667968 1977840358737957071786636069568512 -824385535206137299018262118072844288 9358497608289574304161483915788288 1603142708296588497588150740189184 -572943352037311821720637674946035712 3463360117594732074880204565118976 2093205606975422934795753749479424 -493993553489260137185803752873918464 7118869910298519115517720237441024 840811724090106864348545226375168 -143697761106076551768848641426456576 6274362541627841957015938884698112 802853566044425432655134086660096 -177428807653717158540671915730665472 922685891352189504101448291450880 7829728724081885981854248090992640 -23537161055352348937813138216058880 8162659382418742218257762661433344 1580467998506028833539764124647424 -123933367677097293687485190681657344 1159036403714313901338180001464320 7626595699777171237188787935117312 -832518922436239697702892027345108992 3161872504094521178007621632786432 3368374732476368698866667987402752 -195244494748152055984100486724714496 2831183269161514688733135014723584 8633708027640774704751895677763584 -459989296073739314700646590409867264 5779270218270819128835224054530048 3243144875710018322776646026788864 -691228142658387730871117110866608128 9397632741165375460058197707980800 8286537976277483024583110002999296 -763364584220535051277018281526951936 4538296669699397834281119557615616 1360135878377700010450638625308672 -138572609631129685278017206649618432 9025187274917982557112678020546560 2228087270995761181315907620700160 -686183266347692302581439962458095616 7701810965980255964779014028001280 138922736335943815524795868512256 -526935306447479218188351782361497600 638791212676547388401227489345536 7771352269550389274537816070553600 -689336503986323973893905414180831232 172408607261103271395848890613760 4963596499338642273027302524715008 -674271449259417257153328866926788608 1685512318916288435633163536957440 3071554184216170293070492784918528 -281614710506975971421627035427012608 3268897052232076451537891631300608 9653443489065287431114302586617856 -328703314948052329782431347015417856 2413344828904001054037871775711232 2172121301029112148973198055047168 -625666385949554097934488567086579712 2946459287156662052382424065638400 1370894868804568213074301834756096 -41267881455591223046559738691059712 247246904808139396287364864147456 1677993079105644751798551986569216 -322118740976324739348609387575902208 2736228760297084430132510178934784 755623532137846680781877667692544 -558546710654901561455982317169278976 6477753745220859587326937168609280 2516196135730117599110112619790336 -75523866240366734910872486315819008 8866046907145667399071319432626176 6869524095854739112200824797790208 -968299310841662020891074432363134976 2368876408539363726748269863239680 3470454132486188775739205309431808 -559277092358108882133232288958251008 9466629173833788963299905450803200 2671964210915380852134428098428928 -602368471650973519823533173515485184 4719179450819113422464592145022976 723029936988418271146936721473536 -202280504152543275222914118258262016 2827376131310010626544060954836992 7246918656958779233247263671189504 -120072107490817699092922052638670848 8022056468076129730250044893822976 8245561552790252623879593879666688 -212615515865019374180658962227003392 5799534438839918054290980698324992 5008171975050470268603312115810304 -598263661486065441716327292965224448 6015399016727619694396506795671552 5268321126396275088221710604828672 -251378845385094447080542033774903296 3549051331540266082419493985845248 9005449370908023923599488931856384 -237112338021172889268890549077671936 1687374532455733664275936103628800 1893983876096790650237127583858688 -679523514349259208799212473883295744 6382166131569898104346005752250368 7176730078375077702089537522499584 -560408386780008446029328102824345600 4844390625865802541555887510650880 8462168363201398371989363437338624 -441067254487019836233143321580535808 8531990704687270661512711194542080 8157688227241630119538066523684864 -256134748756066985425246475983519744 920218096702843624534696502755328 6744574606230222183304348825550848 -92804333096621821549427317511553024 3006754350389490762719763179241472 4070188497501440683534176061751296 -949438715300019979948445151946342400 8124443679073719675195306861920256 998249887266816792297037151338496 -566825945514943508286965572106715136 6239137219283392992185394139234304 9588533244261703844182186621140992 -562098267352940442967716878494990336 8105548440662902068043418481721344 3230451241328822341162010503282688 -835947871676588009733228383772344320 1164481301088720295196621891698688 6621929753889273930361464760041472 -634922563263544209431976515477700608 5704545188427543352147561806823424 3095714120419661401597683487997952 -708175429697663812489255047477067776 168990606576417259590714421936128 4444846841095041428458176352616448 -890721651543899811251250034284429312 9361945508945350041662592403898368 8163269037634629859635288678072320 -348997733016618281744119783887994880 5156281062792597579324470046228480 6904960868613046950841575123451904 -90032281930386031286228146211258368 6956736390734297603009685565210624 3464511311053718099187174786203648 -587105258021769425122809380425695232 6031507601672722267557158054789120 1450534623326340521935175851966464 -982808416932006437448518155779440640 1164964055665818637573196066324480 1846897775887715562193147171700736 -893839890683390929215438615627169792 693011521919751895257877592408064 2147691506772169091432113974018048 -321085092772571833369488986835255296 9121913457660056292226084565417984 5351830661624737534397920533544960 -909745664970699916507515128985419776 71590601426985752445590137995264 3510904526452753831995045708824576 -76361055459447685914568650722902016 8670365398727463215645559640555520 3968684450150402716842693891194880 -868074983037514433871049618251317248 1245997109292744588024957148069888 4172253236090392123911158173270016 -233595194317820327513479365460492288 6453736631345928072504571701755904 2201320464888538821913803621400576 -643142548249955655987926184832794624 1046682235331400796852280000249856 5841025604527127731903323481047040 -239979692472928780696676312455053312 6573205640851352459496703584632832 9851929995031599423766083395387392 -772711050033113638700927284250935296 5043255994746029343608560550936576 3366501391277629166603857578426368 -936945420306038091960621899341365248 7109959188862300617301586188697600 2395885708684800234433067635179520 -221226323870382505415014513184342016 4299687142059830657381416508063744 6760806659406118944199287676862464 -435135625310304916560563169533100032 1410851181035991950938809225445376 8714356114903832222441101705871360 -332169206431806906061631499410604032 8519651765173069854179421935632384 3254940694337019816879761576165376 -272002462696399872458428432196304896 2657427847521996914034211421159424 3502354454433531731484824064491520 -701396692738179089054113314667233280 9387100475039320984587497346433024 3694228300073868308094776682479616 -857337774742063059545914293344010240 4126622144604569447699960393891840 7446421436514590726243278546534400 -896782324251192263094393511688011776 7045882646428639495164864602570752 4726551514865764382519636227260416 -675011492044312384578491590192922624 1126851437967985803065582443036672 1100218799521448639658305255374848 -933756368942144955042471206723780608 8957781648823989849584401570070528 1180649360548393356239920177348608 -281763445158299976209999331009232896 2462037792463367982964263960444928 8787735741140752928495696640737280 -54826214760802056052130601643278336 2629352063354039323650210284961792 9033668115543054431874073598361600 -25826253110434798687237029117296640 8626843217750579147792900910219264 5314035719252656224921168841277440 -343551654460206328058318563397599232 1591153123169668203741911896293376 5732587675553138916956969367502848 -130587317262553739325927282981208064 5770366142077186921716521325559808 3157833544006993270925799192526848 -721192703236292561868211149355352064 4160138108894743343170707636879360 8432647947364878808904014883717120 -762785349871599270732149332079804416 2292255082172948327416665156354048 5934501605947078527609096089108480 -858668861423185251131292256934297600 9312278750037281908473726437949440 8409711731732216236068852488732672 -545974178384176337492991478601875456 5833347121795296594613140738539520 557625425133083042936015508471808 -192294960942793410881475196508700672 9865707854208863217587655035322368 2285212537983415587696892272705536 -131976032270543091247321952905330688 8652596623861422197406705842651136 5318049292465918651782224374923264 -814982651790774450612728582983647232 3770211888732884807274275729833984 2476284392599678941640603752988672 -61043469802651377407139806474928128 8615911811981210559930454809509888 4421997012791695775280111428829184 -699854565814154654854230653938958336 2502509341141015931511127282810880 9715456724681657372440248849530880 -622181242698200099080558505992650752 1241907188167591810560315086602240 2517480281074855115685775693316096 -987371770277026218239964637814587392 9161849563835538887897190435389440 6238477344477244173793500214591488 -134375411412033826785104340258390016 6274154512860540703988128000507904 7611378494155652957111454038753280 -441171253192111960110152802795257856 3095785682010102263148121644072960 1806114965343834750681860171366400 -552574334081280618099354551963353088 4092601744495652588879635843907584 6835810960284350425323815003226112 -297322750065092921167942200821022720 2071328436472341903597434860208128 6525406653931658177691276443385856 -948251081790875046538982932122435584 9962217800215629742759212235096064 3206275888443248262105139811188736 -19698477631200188433911090654478336 2945021084365670160541820427173888 4281458941071069861395870743789568 -30733605477800802881523806973722624 421088870229966207831174235029504 4422650940756870881084442924810240 -551591921681756671725995669942435840 4882769440478436582039636099989504 4100817257030364225886717667704832 -594398870653528401830843728235855872 475676890152498621747905756659712 8928775313570781607883645497901056 -948891660514221153421237574650822656 7143350129905285864215433195814912 6801373661444092670594086286131200 -789134728560182141246221254190432256 1194122353004465777457342233706496 9580924775812943159692319281643520 -49799442524184529897260815644360704 1494541965854898749702220235669504 3757893529852821608928244158955520 -23816651269977588834065394937364480 8509201410064445974520001118339072 6159565400550140602811866238943232 -22140365577520628082239035215446016 7166628437559943955434857415311360 1892337148688051937581739404165120 -708397966950381986509914996343832576 2747642596664150877804922444709888 7426934328155401170510097657364480 -273140364632174396589077199014854656 1662617157093503485136200548745216 5957297010124684003017404465545216 -636281797408228662061814422328836096 9144295704075670667256290466594816 4907826021311143970219129997099008 -701550723278759796809396709811552256 2842043431059029632324963294773248 5559538713350872906784826170802176 -215206456215218789730002983651901440 6301997667328265082471632269737984 9747242153235386817929993963700224 -332885833303193983928888054849208320 8415329019873833731094630044270592 9739701643546232829488030596202496 -613810940458743211930215138721792000 1791076772761019736434143536349184 7360388514282491208935082892984320 -831191870774959655059432369224155136 7563959437024847294506176461406208 5717527479353478280261581368459264 -797782868481962421282460480617578496 8769259954283394166850478594326528 8064428023566145315584810856480768 -360899532790804256568899796169916416 5825280957163673728517357814415360 8252921030858170745303579691581440 -268301607312770795665149576389591040 7598500123968818241776183194681344 4814208195368353034357919551848448 -835694491630355356674067169001078784 9032290398886204419167870133469184 8602377028628129385076703612633088 -259444350657492076466346716074868736 6096589841142442481475264817659904 3911677376930671781658740844920832 -115728727794377697957413872629448704 4871696262389222886995375870181376 5213800481999169752594083978674176 -888847157573945280606695263586746368 7073163662100449499551306132488192 5759946629489968289545482944905216 -781235681085393484000702718495686656 1106251365361161563869618754289664 336249202229687079533925005000704 -803479599549372062855678625323155456 2406059961099087023318187791876096 6599119273875249469606784829227008 -937870977739506356366683797211578368 4781256558879454647999735739187200 6699146531512015274661586321539072 -388809618175930832198001599493177344 7804323737517037524442315967430656 740805998795032271523333653135360 -923260762420525981108007949043761152 1233395501968702114589885864083456 1433969909580412531829389790281728 -712358011998175102875694778846019584 7693122435829347052850800071016448 4949609235957749164459589453742080 -96017551494514191959093800299659264 5039872268990745636113511792771072 4028959075544224241222707251773440 -818701608183537875349192766285414400 182506120319042010081038121828352 1930762068947604697302280095924224 -627983756728817456771799892015185920 5232055351653973100322818168455168 8519658861772131596853821550100480 -789294116640576778548460921011830784 2540747875485770405057483021221888 9595427490556860281901038650261504 -940123888941572424190399486661492736 1730712042195612876455237539332096 5292610790889494495079704419106816 -58261954156303094846756960436486144 1202896119122401503790491332771840 1446980000460013184567349774123008 -612599909906531074047519112376090624 5382926405993359430342869616951296 6898062296510159240840079296430080 -512600080894739609369667381598617600 2471847210843859196720324678778880 7271510776542003437395697287036928 -700134526207205701045851129494110208 2696089491506448114173968545480704 1247387866337218923424352206585856 -887757880918133276428435360655081472 571786755569837299670257791664128 6528399695212750183460531150520320 -993073023263008851371884983630168064 8271657089312235584185611279400960 5565991552022105404752171934679040 -994354675118322928663173731497017344 880609709771166518679583055675392 8207089438485923995473556245839872 -289088628244000740819771652747296768 3710752564922967084985115775860736 4591504952778350675227138869690368 -466684207437466476508641548323258368 3359193654083840542474579923173376 3975045283287360578709092571283456 -593122436942063483484076947823132672 1145042404498701705690112749207552 8486473961594036783166766643675136 -501545328632769349490904179503267840 5779851229127904846472652301271040 5572166868068705804551018797596672 -385794234492957931963226075007287296 9153598027961098818295865395904512 1371068911285138780132691138314240 -265874900683721814963087820231540736 734053293036655906028688051798016 7673883206482054693022357256142848 -890342901844387758123295308305661952 4206086643923252221224783494250496 2624683928186636846174192118267904 -691045043312509585502752827422801920 1925012760709110354609028768727040 9713292556403282039407886597095424 -303922494923933984813878867432308736 167291636338274839619031172907008 7509428619728413399875931204485120 -931398531403104810581178991874408448 4581035607388715321875184366911488 3455127803784370099196089746849792 -710858603205525358596471191616094208 9328627411284586763046871195713536 213980319290853550046162527977472 -444438993443719478213021831650082816 47363151559550494448646273105920 8892502469857120311563204184506368 -875938696175881299643718651846066176 9176128197692894469685016742854656 6536223709704239927748410296238080 -995482030975968437726412197865717760 269226967564486503000716297109504 4677124947427321907834326530129920 -419024429332047954615099363684253696 4836633744355237854518394270777344 925592887753832956405248319029248 -141911530149702617341313587706068992 4577158366266208068455564123832320 9054333482128346029032441471041536 -393183043379814119264239570324029440 7265911965964683589857572831625216 2133272468322266647500791159455744 -164079526061567180265036145821220864 8314450025950303248486525600530432 782896556206663767956830608687104 -75063522996642278219776314304364544 1691296451585838559853027256172544 7345550540048254157694800400220160 -745466864228740884694809940068401152 7578809756297511834184570533576704 2327021445013220590481948773711872 -219726069026333420055800706477588480 4578203678711382035671103760760832 3765779376682873902346916627218432 -715824123238633074974273624082481152 4657789398947674510965649969250304 861051299232304579412738980184064 -90740839067025001576368973683884032 8992304450751070407572844110151680 7910887500961811199312837319065600 -644193507541986141427460856661147648 2502721377997458645468376264081408 4131909828401757903314708636631040 -797113137992832832195142544189816832 2117809821343544302873041826742272 6777659104012737536566045718872064 -294389215868069973182155592281620480 212706983886822183061994468278272 8303284920553312038784724499431424 -502610131702317224726473953322729472 1566263890424366811610857682763776 3555810191347391190811922111922176 -949347191542216730676067289314361344 8049295053053524560830946936356864 3555701054453241306601971987251200 -99057620385108605077395775539904512 4217876151892523188158571139301376 6091201343586536357959429198446592 -546240747238087044876686026891853824 243854495153079267651136109150208 476079773817573950470099788890112 -279952869276532532765609189546393600 4409542535133476860668226700312576 6252177466492441796931243231674368 -698013667622889570609790953921183744 5488946607955894533853825835466752 9850908109185977939537124191633408 -68883140732814589626056509233299456 6501752624075999150637664459292672 1811288124220776691937646248722432 -433062488604265295255585596953853952 2243674962744551190694362420871168 3555710025391489108387138937815040 -440495804325559655711759153445732352 7819417000580194488731441542725632 3245130017135840037544094104289280 -40191990513968427462145728508329984 2429030318023260711804932383047680 4435405802719570705819673424822272 -865251860768278247891023146080272384 6435266171154430448684214922510336 4519243895336160422719740843130880 -436424979002480413387961995190337536 2731386670188835210740076258525184 57796564201596552257555759366144 -932843946335947801271225445133582336 980966498026488466899489527955456 6742137130624131675688710092881920 -426493498508049913221342275009773568 6410208971750812560907345007214592 5346905289719342144634031735570432 -287245150963620137038447355061338112 4242215173256388960056730596671488 7163642506691766062387932298215424 -3566831741554639104815128312283136 2359135908335059458428320603963392 3894702167151482337843462405095424 -394090777376333738042304902731923456 7549060163087436443755828257751040 9224988140866300398762937135661056 -129600111052545752911598802951995392 1591465686746356520409117939990528 6526745134414198810150823008403456 -644228128178277867586788461855637504 5555413284655120546609669976621056 733089899317937163157670153158656 -178297481750922356607826733490503680 6817397564580435330473206791274496 3924676183541996778850681834438656 -299626015139890497383728705737588736 9468803731376509642032326178242560 1781168810906082981993246235820032 -417109923600700997879341808604938240 6896269959115266240895469259587584 3543803120357065537973482088824832 -894213014786253145759333660468707328 8984150230210509094464090410057728 3125823108882656246619758173093888 -105470957318912401664748945819041792 7242970871970227224624696607637504 131592849677766049779706931183616 -393970221158527056299457695285510144 6055709265512406942986377961144320 2821607200405743093434474555244544 -636996096382354388754100540428779520 6889054273553920120786826918100992 539985515837153997844287760367616 -372262583365492450942059516155396096 1585260258864277508351635027394560 7385059892311651056969189987188736 -185635331475343939322303121731878912 4490445834447171847858649863028736 5572866835663953955952845622607872 -751128850748871228465405421022085120 8272401395673618603035797267415040 4251181708068524032583615591219200 -173612750527152015167553047464247296 3054444667033579389218175640928256 8781884593710117877177615193735168 -666505120107312392378448350625660928 3645702260873133781431954320654336 4307250940210020345859688194113536 -216137503524187704434616658814828544 8063051691502862671025960397045760 3939072575228850213785808144433152 -656629855094076027962573450494607360 1533850405868735097264311703175168 6175279920816050963608118677733376 -254807200536029339667040946964398080 1814105540377197488578158298923008 5296819727060633057257808851894272 -66520346062065652304519570464440320 5458302048009453400670230221422592 327708804206935396518697126330368 -633297224313487788835742375187841024 9286035092148580650890873272270848 4106963150485856114973637244616704 -929148687873825318425068618303668224 1233330277059495021600062723588096 8251362580379998888825628890497024 -858464039951537951878939067186937856 269485320328036476974351178006528 3157364658804605040370584964300800 -786625705026764669039297128218755072 5582800429990073739735235582492672 1859158595952628527054757142986752 -837774663858450973475469791128977408 1974545387293222660432170068213760 6975217815686385199343711813632 -689313045292698878757839782000197632 8296603773332962231737608935833600 6875070140124504115877489139515392 -1097144444310132929516753995694080 3786089966966271935753643253301248 6137989142486304717929762701443072 -152932878164155374469938810953138176 9245000267126585204728733284433920 2439948430099062943435407019212800 -124773193495840240128664576311951360 5209808970710572552134873629851648 6428732152151696007747969063321600 -574161807479655018280939221560590336 3302498135873639682887483285045248 3116586805005004557582595946184704 -401610525687513037960090342230327296 9019794322573068837714453554266112 6273020584243333070660773114544128 -126759009535027051043715653755207680 56373177836254122911435155570688 7770750016442498568849648261267456 -512759337698932508658028603120812032 4197288055850757568006362568327168 8479142790091667588753152540672000 -64455145680019880072472342963421184 5322405172617982164593715133284352 6295067535831900453873322960093184 -966158633390536852322698830245003264 6117850890767123473292688411852800 3358271023928126088723742347755520 -421505431767961781871830357954789376 8661267632812195805252864171835392 740394970126381924077925587484672 -346354425118841646137838666214539264 9934949312214730378976269789298688 539381828985117355865872493707264 -681560307956125445249353444031987712 2967733383273791793758401290305536 6506312294727356469336295853785088 -484576565444499117698311569883004928 9273219189893474928201599727697920 8993954222175760726915069203447808 -788110940944375827796921028798578688 9644759759049678072444157763256320 4245595716857203413223541871476736 -678593120935061796665605510567821312 4042413400094488207834896916283392 1605754491898844927102513072570368 -93423726273065579740351320597463040 6563788406706044557395981148094464 3808707010564603659118674542854144 -100190702595263284202014738969788416 4592835948269783034013508891049984 7805975306502629729965425538629632 -844632436278024655239762511528984576 2827734996979954625813257339797504 8158729068031531402987448054054912 -450807853133036509373945620222443520 1108592072082620199268866769027072 2128263286484965462858596331028480 -255291373436209189067062657375272960 9220832330162859854948398471839744 8350871070861380885771029428830208 -473488129533209802185981488739123200 8699584499918840460750242847916032 7907087183432337619740627858096128 -77403768505339442523982762419945472 3738078275468640107643173626445824 1937183923906503311686260479754240 -155942113166713092149264581107122176 1230889214040623496658452243021824 7435247880605085557808414846877696 -579836695270315316658518627056615424 3370875520263338730357173398798336 2481833398002284790481038975434752 -750216529508405364509808545981530112 7047964404786727387915015128350720 9669957069902543015658706090065920 -51712320258361942501026321236230144 6927698620412278008535962756317184 2971567292593124669090329138298880 -132460397472027154080393434924843008 625766319185149751303105503297536 7183646802614650060844119313350656 -871404472051389014377594471055360000 7511422177934216015305141844443136 9684251967743548275805434870235136 -542489672467548514202528647712079872 6196492585196314405273932037881856 5211018191126128884488868458397696 -113510033450618336757390769907564544 9226931606858921273758970504282112 2138371193463861349854855890468864 -544062006535301539178358461549248512 5828436596995668017189043153403904 9066452945893161699042360373018624 -244575788965739472809562345360588800 6126897833783282796252836373987328 552362560238041084601075960381440 -236393716794992956649905009828298752 2766719580515859846482866322014208 3078067366226412517760049877090304 -659361280014385559578261146222723072 4318105061622013468971806534664192 3034247034444376773396918366633984 -692364140565070238401901192340832256 4561153349004889122164739101687808 8191580905433697239338453452193792 -498499997743140806715705347283091456 8362630477756611451506390957293568 5593502741268992650091335566491648 -11545894603781334220829655205675008 2704124669373325243541675260772352 9712291344836348001440589502480384 -495439912004158322178420145368596480 1105144347954501169455150686797824 5552496456199811367565055146065920 -907513300135610380296696955110686720 732402187617192905729665428094976 1507708217250592586283220765507584 -396261116486842262958401750445326336 6239939411410416818296493336166400 8420789596393505300141682708185088 -761475011983980147658198363867709440 6906243974710511074258198540058624 6689553124188593256828514649243648 -446828210965013305965659418919960576 4554479049734272231987338874454016 3651014307715361563562281139175424 -557605612591233955450436011027333120 7292949271823350065690828905381888 1549864968145246840413692759113728 -356912674144387191053739065413206016 3814093282330204601094127061303296 9380706763932167968380742772195328 -856472196527592190602761005525106688 3387089283164032906627249564811264 9104254797575209688330721264926720 -13645325499495152244096540077981696 975293051162662296072092664201216 7685004522614567755084057582501888 -616972047860668383815954129668276224 6509294595137001221392349869899776 2027879760494343436111493831065600 -111950570293311957811622995558400000 2154833157751652426467645679730688 3014935703162227868021058376302592 -356860582163536677582972061279584256 429686326635472534186274823602176 2135981519712016117158118667845632 -245317316356504066448326806978166784 4254434477549493137296113233035264 8693238176250380929459692681297920 -806340411972885878582954659168649216 7817366614326487298793809477894144 2511672902760797575059368574976 -589503991548511229359634428205203456 7908566065455008937743317825748992 7680032730396079723100147934035968 -693561745382983771922026156024397824 7848267718714135930809342310219776 7639332693589242878222461984309248 -436396248954730784424455077130928128 6308807331564033997551275016716288 2322821960212728158422133622439936 -233155898300100968217125332231127040 920475795558752793533130727227392 9756533033191144955431353311035392 -790406676553691292424461491388809216 5020468318104034379084929821573120 7804503429038671239606551300800512 -854395218948213924815743392266846208 3144746082834494250539358435147776 3204215783699103564881458211323904 -175916413859919366640338203096121344 6415386470249336415111447947771904 82776012629296412713024596475904 -563998395022714894951700041469788160 1661730814344895258620398703476736 5615967428285011923335452429385728 -711446116776014128615729326792376320 39446947297102715190556107997184 7017091692900151162268759321739264 -321424956324152760048125025808547840 525285563796176338532415028854784 658639636726011406622106922778624 -550371347828956858314044554075963392 3497381504747930464420082732761088 1563926941538520465553295253962752 -328047267675222584759449912078237696 6286899132854651848863346902171648 8235156350016794955583445459271680 -25197216952612136479707264427491328 8601704965392532989020798502043648 1989670797640653043748299729797120 -388631244860092133652900640179879936 3255601223050810809341142877863936 6434462685025978103246584767578112 -869786206653622438999452272178495488 2728977123517685598426618390380544 3034561277362129440166226075582464 -257356848165237460060718656387022848 5429679253084994878048409304956928 8419290689499160161293693853106176 -326360733871943153254672975639085056 7169598225716730782718410555916288 3343865362054899609625952423772160 -41250884589729403000086103272194048 285593034844498816994023560970240 4679292211924644168757525555970048 -210439662488554552324559377193238528 5934626584700300230490128631463936 2012233630425845199440661211774976 -642476450077750734059481412680024064 4865730325970960356143402074505216 5956557272115539105347381806235648 -806162899118356256111369582563819520 6717724750108922579598475698110464 723608940024412625075164200042496 -610449647899381176674641538350841856 8401409750589280145968436911013888 1099198998275202980298805829697536 -158928618660753071198906230199287808 5168869295144164577824264748531712 562590842281195508124744863973376 -908142277868078738164914414136852480 5019927381565584866633606196363264 6932906919990650000084658206801920 -761912906356316196013397506602827776 9205948059940194574390437267636224 5865699789901674667648980353024 -575259705019251762306314507187650560 6386773728400167128478513857822720 9390581790957300030736872194965504 -940662575110508585919877193054289920 9063718638058638903581295878602752 8330753990719544739004985804587008 -759266891013489020955307274158473216 8485346378971290198559346414059520 202608715567668137565160946532352 -824665765501223580167302643688931328 2471248985743788622372331965120512 3305839011862343074725011784728576 -834851732479971255897991463672217600 208597521374805477999510527410176 7322921478443308866870045204021248 -760929110411717514000483415616389120 6746918499762763713111494144032768 2429447276666620404530073997148160 -469160078685352404495068619104845824 8565795351545687897795634193760256 4680296208096761047164508442722304 -677859958021148683646638639118548992 7724562775891505289786263452254208 3345100038413978084293593305972736 -627501267491154142686727587514810368 8177881468006255789437383226687488 4013881824762971952887446766616576 -795208358973482904771919080568389632 7413568893001791718074428187213824 8551953214666142353803823640739840 -265100007540869352624298889081520128 8443348844818331029841356712312832 7312386819156530223333522960023552 -691344691456427857875929345474691072 225912981121122941407788321996800 6567555028039672810486490929823744 -141651999577855287785689314616147968 1833997045976305920665443199090688 2900839149854888392903018323902464 -158161789732633564392317027811852288 4953739457079774719977315677241344 7201463390096378023826598374932480 -366981569546265418094249797180456960 2238422840169170011046899221528576 9889289355348479387473140699365376 -295246851323723657468925434801422336 2190292276420685703556660675477504 6721926948841139114839772351168512 -877108912015938568059619261187883008 8275095392749826085927925391032320 1132304250167102094127134670848000 -492765083492835547501721528014209024 9824700436247860722240563598852096 1617030043609470426705931133779968 -482470881437695263888951972359831552 8377190720554239731448193537277952 4684006569354605149839435770101760 -198705338164624703648098182481575936 4456720901891795985073749702475776 7004211083109161777648936918450176 -960380431004962792504995981618577408 5091164226018273987564015303262208 2501536962670195863885507851190272 -645593741495175030821310005023604736 6772051867498199211319393152663552 7237792463205708894934684424732672 -758407570980510599368306851001139200 2209074534166216504876503421419520 9476188424447647437880772870012928 -380064277839557240714561560254611456 7282372521083620464209759679021056 1152653976875434955410375587135488 -965660309855638656495955311895511040 6231348833634759137360550408749056 3520589884055044464501858383167488 -494568223139505880593811036857958400 1561761004931144585224086735552512 8929000355478119708250548155187200 -775752567809739057261088469673836544 8992604776747731425511639909138432 3207350436190434524248311712448512 -284811651724346923952522000796221440 229943677985236312103777873166336 7931054053141718241131613963419648 -815418518078354978522559486867013632 9706975052017084108411084117901312 4060343789519562696092467012304896 -308344398036727994630700328791572480 5157903864698923793988207941517312 8204372518369632784763182781562880 -908287738280078519996195928140677120 6583538601947238182894351392178176 6270914395375147805702976188710912 -453317182608846736226275277414596608 923182097680048070803934209376256 3181396197660727237227178499244032 -322645384651100399326492588270157824 8882018733218827910709073953161216 3034115706644281880420864187432960 -64291627809134558373775618581987328 6050948300480257680360904178270208 7321852656515470502223354494189568 -156097622488212274254650232908283904 6272117242168541808005690230308864 9788252140884771197836616219492352 -8887460283948396872495767163502592 6655600289946612049629459110690816 8669816073036735813246076493758464 -410742195959668122328409301181267968 7464804444105993354704330327851008 3852253313490237764788934099861504 -462573200436687282466512271606546432 2506654667331362099489639424327680 1736262949565108083350419290456064 -886655022411751980131724894400413696 297783572058335922510123952504832 9804336398121564966032295654850560 -473238734361487495824185369636634624 4094325935841838641766780763111424 7857835017634607733694308512956416 -305711252834215970582850551859380224 5681769869033628476787656702820352 8546613473724447826285061046534144 -882817902879140435563540345306218496 7380582653103461635898456309497856 2322762603917998233037219001532416 -520682622908432208773813121218248704 6788159512945403376036711592099840 9029051794975652906786807162601472 -302349301469939347730146753320583168 9717022743034047687653689923731456 7799555924535151886182613027651584 -164393018287938719146319395774529536 2261101651693420396838376051834880 1916419447478849842528175259648000 -137952766671380621526230582803038208 3497741873231279079685038784118784 7342793061972533486506586551615488 -802631632075424899400351630342750208 6611606580353084682185754848264192 4850893570564070302925845128282112 -972772658170422334458340992933167104 9737884639201562197031437803192320 7000286895142997991599494477643776 -356924997885549090117913175780229120 804928164839018482812239432646656 4973655924376159495913588903641088 -523569635970716114950329920384925696 8227882041899056245542841105776640 7946247440719223060005494303227904 -391795620981326099749653307858092032 9818813990058599302577435210416128 5860222874455159328144308253491200 -557380804486605241730794110037524480 4354858013446106041373091814178816 1854838303201862640641007266299904 -235445281567147378702186138130448384 6126591286116827448339457271398400 9226427920196566055850334801100800 -298147380911203048742741244481896448 1934359797938866957587057511235584 6434952953670101399099402260316160 -825854835155846317272773919795838976 2520372726566445433112946494406656 4213886809690609893456005241503744 -528800613814443084594028265343025152 6845170552812722409001202780995584 5946622434386783760046759453130752 -251092960818214754669110848089227264 2018151147867162021986119316406272 8379217770800529828455553395851264 -525743049814289634319752356775854080 8935801787170592949999140987731968 4742766396844429130944850344017920 -906091474402462653949796700517302272 4514082930993492071260396822986752 529594635243098876685257059336192 -663064125917732238997640556144754688 7878987435372822850826649642991616 7361538301625032866513527939006464 -484498281104901398643002425764478976 3537198221299232537966126974369792 8792449486104627116269652494254080 -679466843869680639728713253456445440 5733272244936770107956705999454208 4999519614086827741988341862629376 -733197750129883600074224034509750272 5057654471032256729915701652881408 6229404283900895329456224324288512 -619027426150196644165972479849791488 2441225042906311081674305813086208 2085165397190181361327558275104768 -455193063044143015757244364627116032 3038050610906603780227248169156608 3358649922178767960910727510753280 -388284319566383308439778831852634112 3100611102876394220524373027061760 3451126408239115021326202404077568 -210772284256477989630517636472242176 850518440558842269275197408280576 9253006085366783896884208686071808 -744986217064675764494466644214546432 9421046341663519078554907533377536 366468578698495673754720336347136 -303939793592177384551197790192009216 2493812675143771595519097902727168 6560984354760660592284971518918656 -928744797808047374583969906232918016 426003086848362337706383125774336 9008483406086971584357067929944064 -209156154759604447153111806945263616 4967927047871848056427489368473600 9230872003553325257975595515510784 -701236200674771416419795284845920256 5333384432444591348579062603841536 5325593719652076693484684550602752 -157714093502641044606763405745848320 7642073612933819483170410065821696 6302354537386769021720549249777664 -767964199084245826603653425799364608 3610284007120678971040390111559680 4356547140869145063975705611599872 -808333376710021792366477328802381824 6075834779300490807680210317606912 2110302211147467655499377253810176 -274172009591239772634138583368728576 9944397140232114702760690384371712 7299907938615915794306090265477120 -227924543668592377095674272587710464 6847103327084475463118058365648896 6690089461694691801853994138075136 -574525351471440397013819522069561344 4016924522318821233961651748732928 4273051410446760148610270286053376 -159498860248265925933167969067597824 8529707040930515827119782667223040 9744721682870621628673278364090368 -268974921353497457341444143984934912 6605770921726205440090585641779200 5920639175471865710438901251833856 -545174481337793899939528744047214592 7594004732623944171952363553161216 7945787458834037188273834322558976 -89385551766617193496181860313595904 5218500006137218020766389865807872 7975967988968796242048243227164672 -300905284042468373122858467563929600 4712247664556974448411568775364608 2362509581015051912321849473630208 -202400456925846188691611674696744960 8275614813812850915185309115219968 4958088546141713412511622324289536 -621601519300397810117915547654946816 7849090106135663552744761549914112 1265460812575257506431225166823424 -801229523538419026211302212125065216 1369413920652984918601920747143168 8144694427973379850029602839724032 -606362843668023117354358934987603968 1398530126538682109347836463153152 6178051162256293208384821809643520 -23518481602041877205431356212903936 479208375061943725375528810577920 5206495455684693666731953148133376 -36852717437810018774542226863161344 9820625102817703973255928566775808 1041159614608778440630118324895744 -188159909904194113198171055227666432 1076611308198722384976882299830272 7552742934651802714068062618779648 -82388341714595545734659048556462080 2999130063052749936035765856239616 1918786792186234436430040919965696 -712727004625607150155586855084490752 2797918266288330241167023430172672 8623023397223383727087790998945792 -84705942985656506408180550308200448 6396777436758727449860531478855680 9385703801833989673956298715037696 -846165674101169475722999151747661824 5471767736658690490054913325793280 3270292710765424373657438211014656 -813704160389019384994203413751267328 6523207831645059343954332167962624 5938648068081661508548020047708160 -156672489959777327800391066575699968 1065985822211672806423000401313792 1726002758125572008465725252435968 -917279029487866109865704969748873216 1337536380554793884045426720505856 2866049649057733751982343606763520 -789228166777235330594854034628149248 4049253071759749416220818269011968 476402252331037242191711871959040 -534602455705303768127668109495500800 8798902165114465832705553973903360 9867893398219949563845130661658624 -437646860195210851178580124895281152 9013243549841062568691377071194112 6076892608655136916208662953852928 -256493590338136958276028386156478464 4479641091428702088367869335175168 2959203070610647294562015782109184 -391736491488543924831566497014874112 6082438854027850505717552292823040 9437038938712325556339301744115712 -312329496655225077802714755965648896 9779188203199040461204213976793088 1755594798516963371292336389619712 -778097644854217967138070708963246080 2554063146304526431288247575379968 3201685390688538411749124188667904 -804285995205461793815380195272556544 771517080704523464241379559866368 243452897936395263020572738584576 -834311001201038351706694977075544064 9159046277912808332571643972943872 7438477604169523505539114487250944 -296145431532407297077399444321730560 9782867545407822176357802234085376 5227184040057563379589929655861248 -383180028215633271465360220785475584 1341772875739291379502644126023680 7355018544889676843636703545524224 -506532460840956592635390071796662272 934628775232369805632274159370240 5897526848177310758543580666527744 -437568632900963722238330581477752832 5068702002836438196104676916592640 15050135416344641498094900346880 -79897431450087062512522085057691648 5571755326683343504398175132712960 3385388972826292117825511084785664 -334666671304851072708402611862110208 9621375875890141964226756945641472 5591926527046180946476818820497408 -784863223366107760358160256213188608 7872576989006864593121406544248832 4762489387731779890164969873866752 -577345167456329465135195011162308608 9121674244077472858013059455647744 3074683637418716092429161835003904 -594134552256407618119475073311047680 8547982003078035556351666930319360 3917202103775545664294841785253888 -966712436931374995861627337250439168 9285870370609163483072991026216960 3929785390144270545131548438429696 -639671794405140619388835249803755520 6610758585035667494320744374992896 6646417579759400071338104813780992 -32789530006222647368906472983363584 1922030002838160680079061766111232 3618986672161891476132853324972032 -172601305667624710110701115467104256 2426410100774756852593157470158848 7086058782808151892642757313822720 -939745550690195599701431459187261440 9368900368751726065714778332987392 4221191886603880090047939243671552 -959670058014797568261675012723834880 9135724940911496609061389757054976 6940511804079046564424847282143232 -990398958147534973194104704419758080 4210938719641734360296293327175680 3492688685764485843009064853831680 -662284768366852864395750462684397568 1906754880770884999500243880902656 346881219896093648866562386427904 -933540191076391108639328011684937728 8910146712669806626565104645177344 258097133298416092885770750132224 -290989987032978486823874163933970432 7756809211763841341888402076729344 2859511833830242341166085367136256 -707823469671515329688842863309225984 4994567634875624139883910805848064 6344233814807372339898802159747072 -654969601375496888777771608753307648 743827332827824725365108141719552 1916515121860802011927944087207936 -712772560852779403274547790266499072 7753846870209022431195340960956416 4697216031281220804750497384759296 -757149936028136742055779957680898048 8614006582908968392500424497692672 4138698654196820500712634655440896 -292036972185592850029619297784954880 1939607275383729590119364495933440 8669625840298389905226589808885760 -697196442186597976990758104241012736 5126409757471078541806057763635200 2455862702095007326566534306856960 -801955257422190191522636461923893248 2417875959602542191488010540810240 4565782028424568199895037878730752 -512598075499916413634618251961958400 1877800358513479958478556672032768 4864323553592168482839114566074368 -767015318213106348633933098589880320 6838145301092673088587281335320576 6636643862343433838743421789929472 -683981875726995837962413680214671360 168101915161053035664057032507392 1153065016305523946261557813444608 -806379147989757899285799042002452480 6702797663852206582689780450983936 8794361693556095507907932669870080 -882737632159836630101456254578720768 4981007972708377094473861163909120 7760624737163425254085576638857216 -456268630103323678811381311784091648 5353261723322699584966752257179648 8396319015446478591503544839307264 -448953109479314485902320649187098624 4503144287434131663476687405842432 4224950299969501809763658261069824 -818612851836402916464495316351057920 3974996247187715878166843457798144 4998060044720367602116161129414656 -529086471391119268267112704990248960 2084153610518020151541311796674560 555777516906775057373809287888896 -262529074988903683949650106147405824 1028188113704871928445579271602176 3408555596869509540291654491045888 -173151659227879781160516698347929600 752060876226970613095465756917760 4163789706405266508049066160553984 -357387429179647002657689621665677312 2710988364842160986121430380838912 3302051522856104570995361697497088 -654281722186972525995080214804168704 7255088915804748463701169572675584 7453778912866245657818315599380480 -391780762776365128434046999614980096 6649281060121185647605756708519936 3008086523266715315228078034124800 -1525896534036100157239741495902208 4964290274495999450951217320034304 943874803705285734663857171857408 -76680354848679234816826532826185728 3794488813690804182562950164250624 2984676663737921492262669900578816 -417959864264188683678991260147777536 2523696373050098649678457197297664 1230625011133060851998023842004992 -684354870093919675466954921899720704 1468811705409964435859305507323904 2497328553029623497960213979332608 -501241639644057899418821726868340736 791295013090937111714589539565568 5780944209945423539809866519412736 -449711549235191099416054113725579264 4508938262918784284345695102566400 9207788002742998191731759789375488 -869257512348834902961578365786521600 7082107923123531107632030253318144 8871752599594929169243091941457920 -360950462812899723509588191376048128 4711117975811976337390209280770048 3003852141913495992330675149602816 -139109314475179257444397864152203264 5479174729542384991740808002535424 5943613173616010750976726877077504 -60301032720053950638262800544169984 8924616968515689701060182766780416 9671042298609158599390469690490880 -64763808665421621872315810424291328 5646647540296022467209191386775552 9544896773200050870648824634802176 -233490145144926770387519870062297088 1766685376534060387121773240385536 2232914886972241150531219021103104 -936270077105487966257999594012016640 9108991709727867881074482581864448 384198904779772772802204981526528 -193135314755444696086447773106307072 6870375842902943441966218440867840 6766346327001305441224318127177728 -391776722846380078933445944920768512 3907758705971880372897303190568960 3830630292819428845225464102387712 -559393397474185787899149635568009216 2352277425968858940061670696812544 2212791302778752536909497751306240 -464517091795495141528862510133805056 1552410607415060953871419491483648 3819887437394929385674939889090560 -566761855665249087924009051743059968 7943790261012459819581720909316096 1888283623876618237344981610135552 -773745174095567193887464024482775040 2973766122588749860742772518027264 6174642519297702696790037784166400 -362258604994267509194704637113925632 1513528726315184270241736360460288 3962573835534859966841965015728128 -64077855746309164296229580049481728 7822338243831166525567426344517632 3197622185775809578921634440413184 -403038714032828147904134751497224192 5661397920739236175225562089914368 6829677333484803811805065128181760 -564042618620275709695480561462673408 6744651235075758010505882492731392 6777379136024386813818853530796032 -847399121319487311657377386876370944 5993890649958332459870239405899776 3471688882571138129040137462480896 -119621230107209508875180499884048384 6156437391853179527264406882746368 4850431774251717457129531410219008 -370924949890661731808531632625811456 6402056151221866720090924093800448 5175205329297654036360839429095424 -342967138792183284242254354356109312 5860023649255687466836977841602560 9757476136522597116690123391500288 -7884828464833550267906246379044864 4546151560444818390138901231566848 3654981844350964815583185234558976 -646845600414903792390070177481359360 7319966084587596416610525503291392 1988401292193904859244010483482624 -31034457285523274510525102125219840 2919946237833051633536732208562176 1142327588900462107956174544437248 -56029269434106456720456624805773312 5568347405253440033373738883874816 9344374740451433886708343471341568 -70483469822675676097852777816915968 5574601199909472603067875296542720 1316114405615450100216747895291904 -527997635323781593480200065013252096 9930252545054162516990798956855296 154478581652784552884930720301056 -609621293800773163175663266003156992 253815405948054126205272084971520 833093546118463096167357426434048 -731546822715196307398384552194867200 6278776223058235169782208586055680 6735588824778722182747003673378816 -989806751827357262642804974812135424 3968051296213289753785355189878784 8064268877341921570160987976237056 -924887399660358572411412599021764608 7556194797298553485730801732550656 6761401542690325906226846319509504 -387618479486051637891659790282653696 6954383388124991488467101181542400 9074890250559697315587246971158528 -299781554211600755026547066324123648 8694216173082149569563220424785920 7670257505510094081508540816556032 -858535226203714099298544225238384640 4654413517343642828106635713445888 7935239198896543470516106363404288 -797143846140265957848630962874744832 1527141004285829666798191228485632 6316243093131197141722618816102400 -9523070835555284594994199039836160 5600958929913725633850923640946688 8430824420498089411233778497486848 -696552573129077993791855373685096448 2962144177623686422198331832795136 3950432665953107221253458086592512 -115152205335439591541334243436134400 1278703425696690749014416455368704 9090857342514402794684724524613632 -142467645172433307545691904062521344 5173248555797614435084904620359680 4537404438417634346210424497635328 -838278300147587168222455889141956608 4791831272566189385159744847609856 2276223334885354219362262452273152 -349384439740181211639310681190170624 8535423930108330004156352923959296 9962110163082469450866173279207424 -824830005047325302025989570003206144 3209177845217500912392951975378944 529101345554114425643456442400768 -470745267248183344778416139280580608 6034736969129428605700086716956672 7326685367374747583112235991433216 -308622321599805293905665091736436736 5311741225636515633777285808521216 5447026735790918861594354738266112 -352409722811466344293300036217864192 8427466506794060032100899074605056 79920552946421811561414040485888 -934249443363238560988746138553155584 6120269629398147855403899074641920 6937444259993346334205349805948928 -472977586382888379442357972223655936 6466892998484963166983766782509056 9852752396266978262827928003805184 -530180000368405293140351936781877248 2454744681353717185549558611968000 4995883571396904907050687746015232 -556108035907219896973116343242981376 8886551325289216842241558609657856 8456431205003205485269915743027200 -966348600492298321704609699187392512 2514134442237044230071013733302272 2450492302868593355350854227460096 -375920814778522891198683879206551552 3830423929579339284021448756166656 3303329974665810552637430289137664 -696285442086100460728793614516224000 8259778148549484583546246653804544 8951883367260600896930698296819712 -305559682686842818095394391890853888 9260441808544804954590611056361472 4686780487941631486498004118011904 -601010573666039530494295081157132288 360082292670429756504801607155712 5929208199382956621715962849132544 -278577788719515172084237456071720960 3937638940790093560821606317555712 9859127169296117720619534117765120 -79541016675938298819762197870149632 4338739762213557535135500907577344 4948142953727659596371373911441408 -345499511373471676904896600622497792 2917970392773091872210522824769536 3153457319660470103588377888555008 -218390306765439737304945364110934016 9844838684914630401963303211368448 8464230773566543988597645673234432 -527349494464475249331919416404738048 9966279660372149701182327581835264 8393935337686191404144787531497472 -439052626354405203259746694723534848 5756340026257417323821268463517696 1856463575047195755148569143672832 -80569192944239701800901431753965568 5163035787133504960740407107387392 9336917672220820426630031569059840 -377008688713883936002734572114542592 4467488316807672022735426882109440 4233399412382463101507021310001152 -322663266818339516542092250231865344 3323158846566972216027475796295680 2731328400687759783177789030531072 -74363184345806765523798648160256000 8436759649481052489094059597496320 2617981267095062125255452583264256 -40971527641181903721686394210353152 6137125104206865396179187902971904 1839572107578867816171488638140416 -933937627594428413224488357251252224 1480124797087571030645014150512640 968174570424377269109274540244992 -320126734231153939328623057504829440 4156196344473038808072755789955072 6840550618653052830806834503745536 -929746604901274871101305727251120128 9055090159551657471869016936022016 7569977312367776920031501037338624 -538889801486759806949346420467957760 2052688159858630576746378041491456 9642750038213800820924443569160192 -688575539426674605904843957994520576 1610852102619080391538090459529216 9038099312068758665972224966524928 -332414090115114255021580092121808896 6590216206248774062406550977249280 3414398920067569796232557675675648 -576972157909363807321496163564126208 4413494364996112935593233512136704 375876565628522928745671972356096 -673844564548553178954391722041278464 434128082848352449251476011745280 8481963930351172228350068568096768 -260138981056127280327076709184569344 8349143603716178047124251818852352 7681558322822730772192837563842560 -971896807614932937530825884420800512 2823974000112099227950829830930432 9535988919252129433159956231618560 -416092254915099141936196029241098240 7827559714226655138341531385069568 9046827278048712019005045162901504 -712954515570079471714147120078389248 9396878525972046576762580182761472 477216129328033693845399900520448 -577633256009483232226206754982068224 2912976647536551463817616528769024 4544165771216181089895148951699456 -733700038449107643091421177904627712 5909839970983646479738802286886912 6817829259818745469228085179056128 -734920564001775129753088314247741440 9180550357263504075437199780216832 7772081053375486308397551299067904 -11548316661819017786808788144095232 561375401800044254830512471801856 7038159276877237213121367607607296 -397062411780183039979215309735198720 2802304513030028068865393842716672 5664659137680305367913778439520256 -989064653197371463440153093003542528 556476247204213587332240553017344 7699773245535976198395153161912320 -472941774342566758415728079708094464 6046824627903850096222842535280640 1808195082750000668025226612703232 -614014173038522594332506006342336512 8818405112280313912813225693413376 9710730402896289652464257184301056 -844664655411658965527568007364083712 4584425075829610861828978969149440 4653597925668853666528060405448704 -345199464361711580702672992681852928 6022847904617927325970621760798720 1081062945615847675789703311785984 -513545914953408801346420626880987136 3518862545891118525915578125778944 3407773067401603066227156938915840 -641998248736723655644273217195999232 2964867477466966551553169258708992 9819940938692383824677985820082176 -178490934408429334814664191228510208 9340146681965597115245130233675776 9671282493131197552190617546653696 -914563371694218730878589916070019072 1971194972394151907407764102578176 882796664555308421787046387908608 -753929969645336568100958202868269056 5709340615678194809804712256208896 2391791260648967887083932930277376 -201039160645924103624897773061537792 3765715915602039672691944052490240 1185628475044182730184158573756416 -981799306564823302491351053563330560 1103138509278901340755404596969472 5214691884293845722154353775607808 -904540118705202226463531400121286656 1847702080241816638620240353165312 4951150763888020140115509012070400 -496541328684786828904806863433891840 5023092976327694040591915909382144 8708971450357623656565647056306176 -873383676436689699326904388521295872 6892157598434839628860038865485824 3083019546540565858618210537963520 -414238837151228883375624900524900352 49074004718202813082387806683136 2672274103450111953743328252526592 -310923347723038518358570255278669824 1795473184693022359293018840760320 5871939420822373961235324955787264 -969555331757163928109461487795306496 1602695794426729815148097318158336 3648366156875302016047160934531072 -858716216333966345730357265302552576 8203719084650705495036142074986496 1311503207558550138668535355801600 -496396074069192904195284051800621056 6171883226794815051537170198167552 1191048390802636415625884352905216 -181900023991727118404955971661070336 2545619280726730251295152106635264 597018066523285154786969598820352 -768204530793833250202139552414433280 708278638570182144462088837267456 5600596659463486795840092605775872 -598180489945339013575401111814144000 919355731659642928984168649981952 9283956512892550447554625552777216 -756908397124605960537155120268312576 8110409634615388098279389838442496 923725717470107254923989694283776 -303300426202786299382360055643897856 556683591383757514201874038784000 6215321872668612788977039166144512 -328860023793344402450186997642297344 9814129075138426367309317735972864 3112027869696186073041490000478208 -749762949894825817939381879201333248 4152232086688865636108075972689920 3288663860011608369111714976759808 -276042287889950404246070156825985024 2278817448387521215475215564275712 6828275441072007229603064288641024 -586748237348045387536326246489128960 2176490411910309350443578940194816 1388570961101615941469609224306688 -908865518543487736926110758769524736 5642944951067758703398570917101568 9706923421653766653970788124721152 -47530658224518106463176920538284032 2536394150606541022028092103720960 9152915672158121361032402425610240 -248074010913822009701089379665051648 9680586385846877722247505826021376 8890367429422355642596892103147520 -326775918986205759423010013219651584 6667264458398317793397040325066752 7425276870636652262280214112894976 -239013999222404512566931781857574912 729054107571026284471343296544768 1387848256151182814554525364387840 -244810418553013649839184684496453632 638199755695512119581287590658048 5049742225708370014982706420514816 -243276753026624021294284978073370624 9161893985484779905182597203886080 4943466202281525672341427204390912 -656111703032342107292528825180618752 4980530210212289170025627495956480 1305367727942693888159438010843136 -411428301625170822185757313366753280 5417680968796232376125175887822848 9985459290880208169032097762115584 -892078907283964872032290736890183680 8499566288918681606911325611491328 3585270228508170505624452585226240 -109186993105004857628692303627419648 5712925471652252742728053390573568 5530788376089633926551111246807040 -335764512408969312084254883380723712 3544927810916229380661891343319040 6899261885975001314589245836361728 -830347788189795202758156048769482752 6490193894594850375014837534064640 5841818704443648602398239051743232 -361321409149559879092427840146112512 5718393703585866595652569877446656 4569308407689777836673692826861568 -974491928976022165336213202818564096 5942835537927954820366207486525440 7748916371136515296577252266868736 -155875977131954391571899403267473408 6588241839426929200659089806327808 3715694949968397592705839436660736 -590224405473089343786522529629208576 4980198168213169016872908607193088 8285532243904695717094127287926784 -363819156649609171111089317510905856 6569869720002729915290533289263104 5499096336215535266178399777849344 -615410791395091848277211648809238528 8655463235778881764351287442276352 1941858621433379301124010871357440 -836173515402457882802053239843848192 6521247616579780857411880299266048 3673325763063814729637626992656384 -7837902027429119614756830134140928 5802362138406482046861908908179456 334404060138097941896447842582528 -139432674494452606840401521551605760 2536825167361921287909104722903040 529620981533940066665807063547904 -903628634770917366436172828541714432 8303451665331870547954232281006080 6072300746225540962189416689827840 -501049754103294789123984951607296000 8461250557756274340835111055917056 7370781089635661234299392330039296 -288859206515094100395371017745203200 6170211150900954962738589602938880 562895435777767834104040450424832 -926384250063949308339223350961242112 2657719827412134039187192037769216 326275983337213690349110429745152 -981687985105463273707087996796272640 1176111913087296544179151091793920 5448999073268795793397007198978048 -971185094934877929913580522376790016 8580236192509488243033531830239232 4851164365063008807238360497127424 -159043302839938888512039947539054592 3962600760559258278766089127067648 6146320408081834841634842664239104 -697599309079713854586581104367501312 3417775678205068661113704171962368 5982340879049796099723438933934080 -960503657857330334909058585156648960 9484310305758227205480824552030208 4595492944119226777549890281013248 -401582004356436574513106413443612672 1886505860362869472293200930537472 3290636997244668886467369123184640 -519692721368471856791490728868970496 1309814041746368741370603977572352 8209319734230478574291417900777472 -575508667272650317314996517564579840 7690602564116816863314861159874560 3993607067477787653847306016391168 -80943848428423820462862017906081792 3678160168682207435307727605202944 9077392195813782311540840976089088 -974222304259486718288055068451143680 815025030094142248510673783881728 9103295978313549890625526835445760 -724665974984861565072123685131780096 7421156076309979085238499593420800 9772395671771359742747097625001984 -977084803715396684701414910127505408 7101907636500965801945830961184768 7746973241332947072527876726194176 -541102831738439808195660774994083840 2971746391567349396666218654466048 2064617639534431758614879902105600 -206095238919395863077839280604708864 1076300445485974552301821635854336 6871512203070016176902832031531008 -974638385265544609515607979108335616 2415113019774854299747869532356608 2199747006039007755163806000480256 -419366336613621785015778980359307264 6010416861268289558103825783455744 9319198581257239694409731087007744 -888095274416480219382675515967012864 7318608461871676310381747769442304 7513203536569771435022452996964352 -960092583518441202351812016705896448 3980982282203521379115150501478400 1426239512499206033895500783026176 -146206141479816432273692360179712000 2718074444990230272288088395874304 5393295238476600974572044729450496 -567719449896009846587187320783372288 1743648181376461793873529071992832 4777896169131589186356463794126848 -4551039744160711891532560751132672 242968419524265480750841129336832 5111289431245007059103288265801728 -498031650860173249340561404737880064 111429993973239137642189353385984 5314331754778315339206422987538432 -595105474690811275496597274931232768 9239520821598156162898659003858944 4656112034777092488503388018835456 -596766141542466004408275227423801344 8085102605082401629635627047714816 1728048305854837558680346754547712 -574122482893384748625917468401991680 464047068751867012177325973307392 2400567957219629594722539040407552 -124989551242864194028738489469632512 4308684025147124314240897756692480 2327294922763768334117631774687232 -302403169428883048192574808668504064 5214181001283055218007492379279360 6306318001520584620264658252595200 -761735125749886856811429903510536192 448646487498973750342550504341504 8902203090584927298122188041748480 -475834527717657059756596113344299008 6618848256097543192933343694946304 8978667445918628581688669038968832 -222382967519897205316938387041550336 7248963573751494285869350230425600 180898529335237765014194042699776 -797291817090805023405316627016712192 2185178315781279387246284712706048 9001870478641203061765222575374336 -422933231210397576069652766533877760 5646962354238304817142663529627648 6981948843440424899366893006094336 -733808143484625681627427227446542336 1314194346303705920100319478415360 5513400886530131783511129016238080 -784345129424792188916693993386934272 5741491969715987103634675566903296 3205242102810853340568624878845952 -104494660784649081904761369268322304 1306145747366185303762459875606528 6129443126102605183012566890184704 -347812574936045943159206519563616256 4804384399553053396152723108265984 9300005201198508564254887778451456 -404913208772914616290368875199987712 9265557649628223053913809074782208 3819501061862205597730277286739968 -350544898042962357837308696568266752 7583328099914371258941049879396352 2693019755362975184024635701198848 -652848759351226232923203504500113408 890288179586370640490096368812032 5634082855816260799683984579624960 -775545998265009949699308822705733632 8075110811928668037852915667304448 6469546999469036754279967227904000 -895429806656264749233455040825393152 5031984246969184001266516305641472 2820486723539296405008971791859712 -15035670494529960973580002515746816 2941620064536704705570485059977216 945842867578425994811925315190784 -943517901638273378398296143281782784 3539047443601634750247175840595968 7710589978933355361710549948694528 -444141448995411897391248336645783552 9885242769078913129471278013480960 2197205571304672066000715604033536 -172516326248458648787596240419291136 5771919571398432833384569452363776 7957567625943476373786754063269888 -570752428979205370020299124487749632 3247361164838572081967076546183168 3973531982091942792219327186599936 -574288311636290430067435010139357184 4532818900459618983565426899812352 7112336795456951408552695839064064 -724499002688445639602336246387441664 153551683997159727842315850481664 1440384147514512101722352387096576 -176097037937484363631926675842793472 4762299348387356786522961385357312 3882501790174954372650146751053824 -941691863031973436250631280781164544 3641151277173966070084703453446144 4457681675323338732655433610166272 -103918936526590481262198832142221312 4901597450815569228456972316049408 442763791436300351775835697446912 -334662838246339639443079021325189120 2223010756678788140526050880782336 7407557352891882336135442969133056 -780131802631553767734154299847999488 6208554209293659441785635174612992 5414792824537083038102885127684096 -106327188979047459697511185076191232 725487881113635152033857352499200 1075754750253779714432457286615040 -169203714329469768339951313999626240 1416032845680851854742230921117696 713430722566738516538138361331712 -101298653794242882612403766816669696 5623885041716315733315594248781824 7546481585935404055686365908566016 -530473472681445298644750293694152704 9114268899854726113188695664230400 6045133204017050037125402863861760 -710322233588884311899828073116205056 1262092463508714625448222887247872 3365905586965986347496042091511808 -940024995814308418904657943142072320 3439165776032346867913868420579328 8496162644145925363649491826114560 -837815250228943925353789218269167616 3433188773315022355231869887315968 3901073150060691414348239313305600 -3170255074954446760852814884241408 607482705422169062773002478813184 9039062679763974167451955753910272 -1893787778203269061624043946377216 6569640754493558867226941435412480 8368666340918217727712945089019904 -788251102097239586438062220672761856 6423545711946824825951608928993280 4160574469182251275912231541276672 -986329798386663432629240238612414464 9491101800991047536845116682534912 4566579412707265538371816534310912 -648690118342799991409490843481931776 604202117517068871827320960188416 4006216187420642132245097264185344 -524780175949381678325363061035106304 6912367499284185560189524860993536 9649681865917493446356743044988928 -708447776269159533982747959847026688 2888163251590628671250593401012224 3296187398002279161593862677331968 -670740887796852416658442888820031488 5692262406187338704447932729393152 334838773368857959156350829199360 -586122067511550509376333024380059648 6194479666787917489437991365509120 5498833843329151979593574987595776 -961484529520442058004155828661125120 2162599300291350274778027771559936 6838117344530025723806983609384960 -910873590382627007916514551680466944 9482734731629207611730874421215232 3858554779571025472597575163969536 -212334877651936667957122252895420416 9100381044116106882254297098092544 943818698634282446275999560630272 -309176077595059718657865059466739712 5626594679548647025507332096262144 2781907856344303330490535760625664 -455813143700644770202932881427267584 723593420540542240224314241581056 1946118262283785244121742329249792 -160092022875469053242901279535005696 3189518685332567209542001367187456 5019853835125143020814227023593472 -186279293778832032174346290237276160 8414909820022118735071492486201344 6792059402435159984235596572786688 -12237103392040734671906359465738240 352360495001690193701824184188928 9764969317080870594871404682805248 -907237364187566668137704224716750848 8557496425180141625442265462734848 3212188446087871461630708346257408 -127649254712134335070776857144066048 8708068954136180388618740267220992 5345369063879643166846714294304768 -707440528530954987426132396609634304 8283997074178537237962251825053696 6428762409834717472642000180215808 -175570363902625431970609737513304064 1801569202456330350845470531649536 8894922545535331821849308571893760 -985091954235827271810186969173983232 6017243593899502494871270992117760 2754713835811281093146477028442112 -741146105004936625207895324375384064 4677934162427535445065029463834624 7921908152235561299253556164952064 -786502478784269359674723700949647360 3820410114338294347893852367486976 8938205259623689413143845790547968 -520266855049722640664703374360313856 437385724586293585627304849047552 2647988598998402296121846170386432 -966821806206187351367713172481900544 9887306479706302980651076171071488 8735942697819368125167035178024960 -820033731227487771029275226704707584 4714704673840905408013311800246272 7032490300064483524392248693227520 -898661456075620883743896684204130304 2336764482621591245489670597902336 9961525375919308027832855015981056 -47097920185214073632707548746350592 1200505736207509228518565258199040 7203726806355634605882335454822400 -282060383707032264691305505554956288 2156554306990486463020915490816 3858314987254885420844134212567040 -673472846231085420636095701009301504 7214947063511880198978176358023168 7910819052456580047693995982192640 -170719538783797738922772506368540672 5519829948598906777497306543423488 9321111464139223799934156988743680 -165272363754263936835585153433600000 1609035478957430220395151643115520 7765128835379165584058880744226816 -119112025571709962818010025054699520 9581288648825961886644992972161024 6746893742220849537621698554101760 -988074895963519077766852933454921728 2845274023447907251240791464476672 8695450149435420884545447217070080 -623571554107948683909916244565819392 8501026740923434364477317153030144 5550223643825318135582748686942208 -549621269324728226718623509830959104 7409006265874203447296795760132096 8942302484555676801865286424723456 -68985480005586212361097736376811520 9112644542932002555398583608147968 5409509161038688932373565179691008 -702111859538828500912356471246684160 311607911460714758247155786317824 3151348169659441399393424716595200 -886573254201348965765425984056590336 3696808570380815398701637610504192 1294451907674040349980822110994432 -579033572778482049542389076898873344 4192151762752262699487095422976 9460781905511019337541893203427328 -451014675554559556089718481061150720 7591653542993592659421661856006144 3922784389354247586134972868591616 -757356783594663895802606629119066112 7442851528999870036242109116186624 8190792313957388487448559970418688 -836814875301442457908815170182840320 3537220751446641186132471230496768 2590639845119809726573718387294208 -628855751070667348288713830743146496 8978706801916976132027553136246784 8474521703121496686175355490271232 -777384081050410385751576128960593920 4421735120161746681277626953236480 8828111604675010208352205050740736 -308873246002713956488373118011703296 4879473939450726715361034074324992 5912616546798777949638122700537856 -61969080446394924462400654222032896 7555665547234276224029194792730624 6172909545906565980145841472536576 -48563981631020724043599267800023040 6701570332741518100040471157932032 8592286394200039111666686947753984 -843456284758913316268559229742219264 822378613524081546205532799369216 4392316411483678785381524186333184 -253966698277258867081625709412614144 5203893379811435380521925810847744 7721765100620697525483878500794368 -957587197821963826049838159855878144 4624693153330753144012342527262720 144789753253353011680419413753856 -195757611162638043294597266632867840 418936967159320031319320661327872 4626839501004883992080121430278144 -70409385204148614533163935888048128 5070093799128186357008675859595264 8048519719934053949465427380797440 -183124173421037236060929681493327872 3925403900492117697068150516875264 4983048017244122060987655551713280 -954941945249530611862351682654437376 2439194901097690002698778215186432 6790197635595579161163517845831680 -756876411547712880064158131009093632 6673416039284014340593995057463296 6852519113481535560218278965018624 -326502839844139865401085791020515328 3543306439701637249143690076618752 9420859837528881815150059008819200 -816877242199723979959204574192992256 9068093704938050565220142409580544 7150096414495117786188893743218688 -445877819107672569574645719722098688 5434981452455506523449932325584896 8974826156014174039866298242957312 -253996355347018363340163085064208384 1859212525832121465207975204356096 1767367618773811930773480156430336 -824807711987270985310881536804913152 7670343877421356555952383168872448 6212880992282226289698261176418304 -508580180073740847962339282731925504 485119328539587266636938760683520 3797092601189442028516461269483520 -836711463480808959765856595428245504 7664934258886898292373815449092096 2520376657877303297573254036717568 -439842591938906972922324996302307328 6290402860700198836566145525350400 4860703159367393509273560063934464 -556926796864844623005007199242027008 1311474782773160216814867013697536 5892331401697463559254456043307008 -17766278503779173862975729951571968 5922314926318227615286477551828992 3908493409010249261552502413721600 -889235980252893266393729913271091200 5421667041303956050122044572958720 7398098435604344930504797505716224 -781066898920662111823889239017259008 5703310332488392713768115793559552 5927604547419035662276202923556864 -32268025189625464699560350007164928 5440318324304708256144379468578816 3834066760306974797861200003596288 -290405396219296130017198082986344448 249840821863969789323089926946816 8457687895740570675749199439462400 -332944411037067588685391214046871552 798158891192258456417929453895680 1985819646450631148070699767169024 -954212631344301804715829822601822208 8242557362326987298296496098639872 2654957202250622088042912839368704 -740853096580176244714415464283897856 765535614040951905132781645070336 4200975114833711871214794691313664 -154034968219867945382659714573139968 6514743324072890927340956692774912 2263832356697111909100667879292928 -923752244274935938313341568691470336 4542017458610727639738789878824960 3010247747278514602750062513618944 -188034419404870714124448594086854656 7370072068219053366667827914735616 2129868875752505148982204930457600 -90195034110610461877810339493445632 1116200423915742684656702997921792 3056554736613829849058357696004096 -990752393424462720951759008845266944 1764001593798735114611539853705216 9975486331398503834324810460037120 -437037312426672363270408681402925056 4113692118030915765915363355656192 5052294376738862664981233751031808 -158908830619222701696845610840227840 2939926833931761724480881541775360 4555974565662173749220118448046080 -42100348174772199485955765727920128 6335313104708511086471514431684608 6615760568920332470480892973809664 -348108470221931665888325511541686272 3267292991957432308301250839969792 1434626721900146327480242370772992 -117970587774598791850572757094891520 3704200459800390786631319209115648 6881925007450220173859000030330880 -963463513844103046146901728055787520 9369596807242014965472628368736256 821760923815431217189581064503296 -215495316283984633482441514215800832 2305205367005539625520168181956608 222412889838935611231449936560128 -725488148197771777965157751201988608 8142839834511146095483311192276992 9195472456095823150382026265198592 -94068566977912043540433571923623936 5237070414315403476834783259000832 8928891610028427919953709636780032 -973588026962946294496928993999060992 427296691272769748242449219715072 9668567236937917687520971387305984 -756606359288192329656527107173384192 1397954614218505641174584724029440 8625685024389493359461022476271616 -453283867002090559090339575425400832 8820825488810845246652371943030784 6302917899666642304537740445745152 -341538399907703701280723171790553088 3126386314553547889280592065331200 3369758726058420792356917747908608 -540912511469220573809721388065357824 6888272952151921568993716524285952 7231393743151277346496870491357184 -842107228954730637112899117967736832 6535295950933196745404583346438144 642568045298648016341554241208320 -868021039788235008600455279598895104 1342244175625281064935228558016512 8065776128894578229742020962811904 -944596062966611381298475294020075520 1716703298676023300401182105665536 1666116437859068658411357125738496 -640057008692423726543024782951055360 1573035696974567125998013360635904 793836084008516850987042915483648 -565678809125658484610965390162395136 6983001490372553241613939664486400 5082403884023396195419115285905408 -287704398809290338420979493029019648 3702054848917010568313084502343680 5477009262605965769919998061445120 -577164359357482770640373917952245760 9885120318572518506848995577430016 3020435448391149618701195508973568 -508311136256452998041149069621985280 8264282739563259781083318194274304 3691619930409146888442199914053632 -886045160885993600148407764383694848 7518162179494023303126639045509120 2891347680024768255205831799209984 -578000654225032155270888288761675776 217772812587754027594653617881088 277558910038748531697197047087104 -349630015043557870159164584316895232 2572898058242597381989060824793088 249030088632299748927960554405888 -722517459975725495534224922025918464 9683584196583152976264635038564352 6285986096864711065956969026158592 -814966259139548179784759325046603776 1169048115885519740657300257374208 8756295892272428060419427854712832 -158179221201759137168284746866753536 3478334583581118657554118936100864 7992396422826961785843208492679168 -986032798957505338800734181089345536 9636480570517331249901948391915520 8664327341903881011422340390584320 -346073731545348120591321409723039744 6705828024078655886162877564846080 681371566008932299940145810898944 -336385693983540307862726770042077184 4729915971010591485507272393621504 1735352850132719293881929296773120 -878273136206658639770771179817664512 5306949746562986840233836009226240 1591393047519499314543570242764800 -794922550932266216516922379614552064 1604641262135615609375336356118528 111937965001768481660881908793344 -463127970249513240166235006415405056 9029911763805717869357178455851008 3057518681438401622295436091981824 -103013385206416229832241266640814080 5056091049995950733514642135449600 8628736657546862803073549174046720 -506547775424305946690990425176539136 4489863385189326842081690490241024 8107457364606326163085062255411200 -792586366663483094969322919918829568 4122142220540571306214119306166272 263322811281794334580876614041600 -785575896188263215498538744297816064 7056262073935784575780716883738624 5986036842954153683999245840941056 -766222940390852791062304540283895808 4754389361138089598080602901315584 8036562727343059972855243867160576 -684806314881673689995746949183045632 8095446130522078043174271216254976 1424067790160462882793321322774528 -473009318617791625752450687903465472 2338319092381041204024374387015680 8867241334106666053494174717575168 -393294021171483438840245907626131456 6444062069870491868059670407020544 7060991688386434745860862802657280 -505146919316432406894926473170255872 1560305422130948331239419626389504 2849310915802325718373616068853760 -83608245112578492674575823513059328 7609612980431581497440312284413952 720774767086310885391684138434560 -240671068722424371787691436867059712 7757478783537552398367430277070848 1045082892308946021811394613084160 -10990272609668809459879161192513536 6408588794788277710994857833529344 5920618772969586740189173037137920 -146985425425299742179030781619339264 9545223847693451907557283304833024 3154242561611888885242338195013632 -303981424140325251740938164303298560 6975799876737078911787593696804864 7150543968458766560880880718446592 -805411941602897260336093237453258752 3249775715800382551206667829116928 5027989809884472153738499552444416 -299618335383089575346818182503464960 3895359177521751425029948395487232 3230889572652478311663793145380864 -619700040130571812543842556567355392 3120162168166865014851380906557440 5093612247497690328114565207818240 -849371431728832658874615556781113344 1474423250865968657274456460230656 4920905404945126305804800697040896 -16204153601806687836984905352347648 2257978931273179525572341140553728 824509259081857992565945784074240 -817454851471757690787542424440799232 5383817567347731202631697329815552 7340121283429971140790404006281216 -681427934215940859120158498183184384 5614682596748317023048919876108288 4623417521462959947899814176358400 -553242241511929122630217662772281344 5778134544295704065839856095330304 3623909796754103532853682245730304 -262882897948966613415941385494724608 2975648341081190816280859277000704 5860450842158612075580017315151872 -121773184971706475010665068596559872 1113442457698600497754005382889472 5514097085528330010971812625645568 -736023208271467831787198686383046656 4380728079831350488256469450883072 4705537504660441966075484238249984 -809878120448459774453072070281527296 1961008961384019740849318857277440 5158994486088246189184129582497792 -155106213797126008210383266813837312 8969435936071449857316392770994176 8704245764165419497801097850912768 -853710886965992518798952643742924800 9412353582401843178836550393790464 814038731649819255370583916937216 -418156571680707397014568320595132416 8745481869754360282449673285795840 8726962000489225872301545582755840 -357661537014390022736085186464710656 4135442223577199067695309767311360 2060885382118141646741230241972224 -195060689677230982582049817768230912 8614939281558023645149642501390336 7751460008690064490803773329899520 -619882405991071509611518060616744960 6241863128808399744190781260300288 754277235131757034399899641184256 -11475317781319718510511073790001152 148843262646734770705314906898432 8664643680182447858236505886556160 -102879099462053098565900556470059008 1499947580956828327739881223618560 6225419832426415825146531180183552 -652879898571783855796465686148022272 9654915454068968593693645767442432 6859389773515743427576097063043072 -465870413576513152876912910847180800 6539288126890875772145371763965952 1200231867012501947817889892401152 -588850177707230628714386114310307840 6911329120724266836281101270384640 3535901417854091361678806441000960 -315923084004580966574993130137845760 5798570240709404968091062810705920 2864042735798130440918515335561216 -502043908269665056960102376436400128 9124188075304478344765526910173184 7985573586169875903755087922593792 -739856371299776635390557120282755072 9047423449555256031628106924032 3993391203716473682612483088449536 -514802391477167374924051258959462400 1823005729753941082755430392791040 8356977946111774762484277148909568 -521859971496265061815021322056499200 4576182704287345433615565200556032 8449860154093588117663967004852224 -100535119195632153610049037759676416 9599533628119279038987610083033088 1201195629204589848313640404385792 -438861155631656863188054725049188352 6743365804886828110498573250985984 4605477212444497060680960334364672 -230999460927268551410428067098656768 2297583133588055580506862567555072 8152656900596553523431712780976128 -753219907347447810868369401550209024 8426326126328191217896600278925312 613647346614166657518846779326464 -810316107601568553961334655124766720 6020911452341258585047426580611072 1189069587662247950510991068889088 -855842908872979008317585552574513152 1742517180159567424015791913172992 4482676165854926312818625659011072 -601262032353003308032742397545807872 9981622894755602441281448217411584 1698312486770723394052184453677056 -352917905554307699738458149024169984 6432787626476399306011932666888192 6226561552991882179518553770688512 -482560694542778616681986272719273984 1807869323780907166637104132259840 7561204577788089093633020946022400 -553658462523823869925741464244977664 4622342725066443130569701086724096 1843759241236107612351889793875968 -83131856865070138306949954123333632 1736354069408678248612844737134592 8179799494921620186464292104568832 -895664276147517312433777986588639232 5737917077829283362426981265178624 4974911253491047841800967421952000 -480540343122598515412783773392044032 7253521276419112825879048350597120 8120750708586520451567662152024064 -741818609339557987840299363398057984 4927691269607346616887075076571136 8516043669888555654053795389767680 -506987241823528763516872999613497344 136050943600164071878904573329408 4625226317839623470520863901614080 -565505145279813463159730504307048448 8004572711587268159604204928761856 9928915180597179162389798755237888 -757549198974535115503411004977446912 6672925052163617874928173678854144 6039456722294509692542746558988288 -174045705097956249487193158430228480 7356425829985181390224367032467456 8040688222055658006669696834732032 -667464595516972879974564987125366784 6833712695398111769924765508173824 5008198467188854527392039301021696 -916421931381211039386064231128367104 8621404145944894915570706669371392 1856431334118373939999041394835456 -312691734847343154237964537359761408 8227901409810675174482813332226048 8602856315460500077023373723435008 -917168392443620338677143654685999104 6331373372683186622693458275467264 9843797428104977270958532497244160 -944747268441301049298505794335014912 6881772320783681084923858646990848 9708915143909528755518686678220800 -258526258599460060058434162692980736 6294155809261439753202969643843584 9195086315398577547576374875652096 -585570377326349596525840631165091840 8788175533836258134231705932791808 1402812761102627058657503731515392 -475170071952531546080877569877475328 5037195679551443508466417118740480 4030357323684633006542897801068544 -933308211888816622692038154685251584 8106635304216611885667278385053696 5058733154245662448417621529329664 -694180977228078434021197753505284096 6284554797278858688874039109222400 448394746245477802028581324324864 -826029646085340681464674396800024576 3905279235609799733065104270295040 5093127426791683323917625657917440 -792615718095785657954294173131603968 7889571150677922847703524937039872 5564059913694587434213471256838144 -16207405295874790375440159881560064 6749370140939275271823081368190976 468730706536875146908395028611072 -342642572188838441030719688237121536 8027526663336865839480073317515264 2373547546281163294840720382230528 -402148248184209358306134049087815680 2205208466801171711226985402335232 666931646072568244128069246255104 -363753535883788845096070720948011008 8050537093131459614105261507084288 9036503799003587577814376658239488 -14229947138456392124427285085290496 5297201614071818497091791784771584 4795915530836426644470610903695360 -443706097671833627524019425904689152 8756416471492048188845277631741952 3283605252234403580875723054776320 -93906616528706365008716754526928896 7473696081616649965492773966577664 1878621221598725101145915620589568 -836352256455923859833874851949445120 1533874339080174817862589547020288 5902212598189396647993801971859456 -257832127214653872698303267674783744 4126690946165117185227724211355648 2154619587401687638582937797001216 -452925793870689090262618343372488704 8265662620650182941770267806924800 6988468810435966508661955641737216 -762461480103402680371971018897489920 4895824481142043064716624736026624 9129549233420437536888678984450048 -254792539077320066949602016294338560 6364794345730952726409090735013888 7121242730571721570637186122907648 -348521746557218912026352701612752896 4454133829733284998438366274912256 2514624090706056104082634671390720 -706841512575312006941959264638337024 3539681256103001221610652525658112 3794031640986093173530996642938880 -313728093721349692542009601136001024 5233753930447654794279207426850816 4963335042647121679378311169441792 -222532765829188576351594661044813824 3395941260771605966923414139568128 4057206550473583611360808825520128 -64573963179835360590622332893003776 1248613157342499103340821718499328 2943018493861384251003292063105024 -208533819201365283869979790815526912 1645792936169324787639005093036032 9871509331550891505856617748889600 -634547540956541115725668856662851584 671650240322323291491562126573568 9192200045478615421586356058456064 -570662826275734879748890572103876608 4367484970859470092619235670884352 4194930266920004270253639026606080 -188917855251448789398148762117865472 2835717322603754584882103231447040 7084678292307556385865949534748672 -379171550494118038886962228977729536 9774301430426579671344273174822912 6995492940888317034682864631808 -405127090946689489761363126621569024 7923347724358055240680059478999040 358042865257384502802681021071360 -777297412143776981717463103403196416 314779227385560099148528875470848 1526828978001142586909868009979904 -679375145750622342770600303361261568 2391418080508648130938682157826048 7618976066728186822897088526811136 -155844246886926995680142181844123648 7293705146439066358060068007575552 7633712603976179760716238590836736 -821811520266539350736690357569847296 4934116626043502336892557663928320 2955068924282588445564532129005568 -12265051494020174418469502796693504 5624721151060810124538722058764288 7591226287126237400718174106681344 -537603586617695168165369881326256128 6902096574682227724816000781123584 8010211777667490380755032032149504 -623953552436585400676854650843955200 8940631641303014928215856744759296 8627520963759769444182942873026560 -199580090096856752393933708685475840 5763453478129750768634625188167680 5738894347027538373366978057338880 -938536891890429617685384096320061440 72567420872961352150443102306304 329092447786083117532705424670720 -114496463539807241110425417587621888 9355525832230375504155407384838144 8485259127474146094875275627069440 -397327708724648926141573212944728064 969684058528776024254207877971968 6088506695655098265912148374847488 -442941555850734221392344469630615552 4938951754638794455185777103994880 7162963153463185119280149376794624 -954702537801945673227250787980148736 7681672794091770457986157273677824 4337768114428663238048499407781888 -820120402284256988438330955188404224 4083172090137831065350977989115904 2679778198355079990138689101496320 -404120464897973846172003896995610624 1979409015847988815956248627249152 5642881691089871906654318732771328 -30810576812776421317729876772388864 2845350555596481099792833730052096 6930931478584801511857926778650624 -538574797969251169828186316035063808 4443299760820668130424397559234560 6966440953534399512167682291007488 -227688311999284497792608236763873280 3489755631714673107295755103633408 868667668691924664555231667814400 -691040266527266619904281181090217984 4309548339703595472509759874138112 931245331858945387939824350003200 -811529976409837517022664950861004800 7549516431630977260052046497710080 3895944455878747369843965860773888 -45560490311149136803595613148020736 4371005541422221070378343394705408 8542274218320374053353132828655616 -658237075094948934868307579143979008 5299256626985580241629623330275328 5524148021664192341581599583764480 -791726997865176820558008931720364032 9731192830940462027036843690688512 7954263998226669813012606769692672 -350250558673530531121656359343357952 9059432896514309103550958055456768 2405311067915006502458900168572928 -358851169323275037807976964130078720 4476424615459663781870957536215040 8049028134610036458399652269522944 -609944185326560546243668034520612864 2725939244567600727816567730995200 6812272890697283906472104723218432 -84465692551615836224943692200280064 9489912055945509458449666959998976 779385146923671399100469127151616 -374858310931093161394635037984423936 8641501304016844655812621375635456 1809206307554869771694074205569024 -228935019640800786797176720271081472 8858388757846859146398738061197312 9290168621353941948804504261492736 -428132012160810622094376084044775424 4330321219097379489894310743113728 4053016979161652413208341942108160 -989504547909710952432306435722838016 7665692609546448361410437859770368 8385257215270088659897451114659840 -906609750680120188995904677684969472 2273297474131564916742467566436352 9995359064685814754665932083167232 -968083672009847001808997163793907712 6844206049173270671021812479950848 8302930899512635114910217245032448 -342426891186778240475090657392721920 2803469089170516070138327825645568 9834404265309624719484855412326400 -259937377388325625595314992068952064 7775156036354124062066775571824640 7258836394905000701786962006114304 -753699473683628263029817093004460032 9645893095119474988800909921746944 3545134316951448211974334017699840 -864814506039752669600568747378081792 1289282431458627015035095070277632 6130962949820142311176728171511808 -519397196885156837613505908630880256 2518454831684772095134255011594240 6102750957886091654410624670105600 -592152547340348210128334664375468032 592400359758118870130637479608320 9780492734179793877758469067505664 -960795878656045987644823766069936128 7777333469094165277138199532011520 7956193838993284744448918362783744 -555585191095796961984053828659445760 2801163242216842584894794348101632 4961210577317583894000572320186368 -263558294824987640075512594766495744 2245072185451536915290810226835456 5319789356351293981272150946873344 -329990315597962220829853335058120704 9237178162311012041102228226834432 405387748063610683947071842549760 -512532015220689222193865974878306304 1641747659319241205946552332320768 8744485662478088254330014212816896 -468060052305140935674212794668941312 4996956445907853695915317308424192 5989763087512624409646036299022336 -961788281844650800596267686304940032 6042547395179851841267108069507072 393519419191029460499658251960320 -625627166564090333327255982753972224 7383409431642590347849879978508288 7204174169977772141111178910760960 -248938240998121095999239830967943168 9770396734696698074215640492670976 138212242786047528821275358134272 -885474888168265886477170335356551168 6027006373997685951539435844665344 6413628458382638893458004300005376 -547572792071433944247326064523608064 3792568972348273964392892155822080 5045586373563374090406634740252672 -765272408672351462846921771992481792 1021527332201861368578951788625920 7409978804006416143532354869133312 -693128915333038788882848068598235136 6067558780631636715077976016814080 7562882622045802775904097656635392 -116817647752592985993202153109323776 2478238106665714508629079591223296 6598835557208526628638057968959488 -735255597397578269502560243661406208 3015379559202283150187097212583936 1435692413876509894311567001911296 -198395586986123712387034065414389760 7463613871677568103581523575308288 5927796155593709632014020155277312 -548657634069430333060846398444929024 796602186071995470759872484605952 1160057043104884800370058314383360 -215849723978370559775281734192463872 7682662555624209046743560218476544 7906466414371004874256856305893376 -905575191099594614530988421106630656 1833712443618876303015185488019456 9635481815075554335803930669219840 -379177655319348287623525241202933760 1478239454748481865884744487534592 8663807810330042986389039896068096 -806127872249008023243577436871327744 5340142349701404177770814019469312 106777177186757774637652787593216 -79047008798011416208027413389508608 7212843748236810512890296004509696 4083200355261826917442825895280640 -702649497229839301172148542227087360 4098247640055142293233340791128064 2802019135492706023231026658017280 -273846439905417473364704118186180608 6157187780141639747355835826700288 1419135079111502936682779503493120 -546258245412589710011258289971527680 8182864552202046987804315580628992 1723202780286176330844955100577792 -429596806751991902010748871462879232 9372792558333572867899579493777408 984985609770002863703107383066624 -545002168526804824217377805948682240 9788321513469851500832305987977216 6578631128872585552459956762968064 -635590199107217708213340522684612608 9209395232962458988571024018112512 1367042523362490476942868537671680 -801442926788549604049537720593154048 6503364000523118479587015051444224 5173378736892033439349208594251776 -724421628650552903706280491158077440 8612044688502626997007751722303488 7021961154732664540307891951763456 -570077457351357664249561459388841984 6233320945434394308149452598149120 6576399247431515019662517105328128 -494638789082196779318494326704570368 1232595374522376595859014053527552 5314115032953999043155553008222208 -694807701438812852856865441512947712 8881622330634315245863050118430720 8861203077784334456300294096551936 -554021160624469464706869132336824320 2664402786007236949541617447993344 154324155733162353060747243683840 -553547020378679620625715929118932992 2697066955702826275274511767044096 9587723430609257036612963909238784 -220317776027746218947685634373844992 3420624325274940948010999436279808 7878283646977530318970808197709824 -509957769019161826568125053094854656 4789937490476027643260760187994112 5191757536895545502140537059147776 -303229089514614966590024152705400832 9989321812274029199614622035869696 5411019898650549693514726009470976 -375508288953854872655938240852787200 4348105841927318338936677829967872 249960529206736231691279208022016 -288400896731463922823748746100080640 8512180437727487235113014031024128 8636188256316484125836315570733056 -774084640464246030635643879689289728 1044427484501456102990810898759680 4609324868262088151099865116442624 -11730308799480891987712589074268160 7434637574533969613118745343950848 9738264918993356990147679777456128 -733763903631955435034922929430200320 193048077307830874037793920647168 3824443003260182400103513329762304 -984484175240427029609937450441900032 2184397365905062278568181988589568 9608131336226527485443986537054208 -126904937830640990438620575691702272 3574755237985334073345458250448896 6542583319357236575051671305977856 -258091891182982801153522165442674688 8504926622704165191221455332835328 5318277488900021266381504564428800 -824281299879360372688078021658148864 5267360977796456249639378465325056 3425544474920460077750503652458496 -825728151727812957241860294528991232 4869567612442885059503361531838464 4415128911684430716730485761900544 -905924687972528085944951849609068544 2082253236836482694105428245086208 2211609492476601873206390758047744 -226426989674510901583090745952174080 4209599450165448641574331161247744 2921721649627631611284224022151168 -132972634715023072508844737231323136 2149324113104455139819302114295808 4689284923053400899784654496727040 -648795263361409667859439152516825088 6259096947709493408951155470368768 8793893528278192242757741074972672 -337139438694916050799826705177378816 7311374776126013541596716947472384 573874196701517435429882297319424 -755065027805039391709217806736162816 3809540732853201047329915948498944 7564169337078921888808915397771264 -637915747582043135794178264894799872 4522768982048152182842378973872128 4622497336670962965806165281210368 -633922085895243914418763703569612800 6425443251872600298344159933104128 2754990583256019898639738000637952 -164010953863796903252592663516413952 5037837589510005623271777011499008 7555934798926469409480197743312896 -395881691422370036971360312721670144 1155396707594765816587138122121216 3282288962657806227800023634018304 -175712511740131282857806021873631232 6559286749197405176696444385492992 7757035748775557700335565296107520 -468338753513717419993848414187028480 5777989442369648523523974244597760 6449124386332727495190691945906176 -724310273910842516204748294368264192 5293188509081298915534483019005952 1614674672414731301666417079746560 -91166306342592139760618141212737536 971906083340890825663445127397376 2844456727856764887834231492837376 -278456908779526016396443178061791232 5625904686802192718033242795540480 6664326720828845865255513689686016 -971998684684364945854700626508775424 7949251777030029797072106392911872 4151898632468475680555153341022208 -40355846372269749195945586091622400 7980206993929656248788501701591040 7795079769068205398020172065800192 -859458003501543887754550216205795328 1627491451203304782838575168225280 3306616269919793279470349544587264 -465129741127042575500468701282435072 6076297548843272237687395374333952 3048781007729449261267152445374464 -465440969401522307213044168884486144 9394178132302583934420714231169024 6266884505975242396891651384541184 -73384941307270407871811141498830848 7643500740268510086751966508089344 4107810544098627314664288655769600 -649963293620437368949662736292249600 4397399294766201957294882651373568 1420274982197387005080923707277312 -944095152367510750015940551124189184 7013802602279545366323311279079424 6294599037417358408533817428017152 -81716664560933158712918784153223168 2806624027548487944768066506719232 710498193443288604875621346050048 -521106326465680616540562335415140352 3485590521592957315743386158759936 1122621118355115057893636262854656 -81151835873645301879638859200856064 3867436736980387239025663000182784 5471216654848612547010812593569792 -750816477540877598452225591006461952 7809554614789198980590567258324992 3653331577075828063762858029088768 -706969782745077913169850278134939648 7944439932239161468117792361283584 8148789447033742745234030433665024 -805518800644106522423495805519265792 6072163620484426485945153674543104 1073028523010186753953566361124864 -975714615574587197758040140721160192 459183051805054613884846636793856 7588297330153502034898670902575104 -715599031126995286462501713419960320 8023812588737376104908951946002432 8813718587088334154227014155894784 -184994663196428673775446501808406528 3441382386638875841665142397861888 6783014458082852286210062692646912 -721828761421069405251074351018541056 9814396570711270165037207707975680 4994426709857342858227557643321344 -906434464052184658937849153411088384 5256818262494040802187019850612736 7125268865188424813869279259656192 -709016201698209962903852748030083072 1013751885587274776566267671216128 6777167945021295265103918313504768 -214726769498190270466025549392248832 4399559407409055301194971374157824 8911913503529042670600512704872448 -567668605289472132772239737723289600 4887341347105619988992481051017216 3943207794536712343479493821726720 -421945126813782706592909805228130304 1473372854299435789445556659552256 3816812983999266510869099337220096 -846464957877340158767565713765826560 3831786796078013225316535544840192 8894022222901198702469161175482368 -206835812763142754331208713785835520 2679180160544107360957248319782912 2684683382674995636150747747319808 -679119438882196097649987413038071808 739064247859568972204379752890368 7919824527247314281768889710804992 -545749872053384022605593901354975232 872612045847767963678820190388224 5111020899477300568439564858818560 -108792427353242836091244161888419840 339853696287571351050163647938560 8120351935812374142211264262176768 -503569456980918495895651843393454080 9887218624900311966548825785499648 2816831604632838617019878672957440 -926538252234322779296849239822303232 5874612015986382674545269232631808 2415005922986109691851809595850752 -982402811463625253697630719270977536 9244010149486415006383559361429504 7587153263973695211197799531020288 -722574306966694630517496753489444864 8860695145144947162717745951277056 6747196551970370113682624462454784 -627722982007860604900912483211935744 3853061206861318042597246124425216 3475135581265834262245298877235200 -838165258840676377469798354553667584 597399139965437305151000273747968 1628651988574534153480747970723840 -704669445786842511104020902976684032 850728250020781473521628117729280 4918831869973098815181943751049216 -685389815817317035772495363838050304 3672038320397181987569278300192768 9653300771142713291670706339184640 -826536183966031067697300464050634752 734411612257359217974791077101568 3371103606186629302102041424822272 -101483795955305619037066010977894400 8920782386818250947374186959470592 5447019763516523837665306476544000 -440252941377376584776349703991197696 2434991613967617182699905177616384 2260901224532866625392089352896512 -674028772787587334000493412548083712 3767617394547697349847668641234944 1274354399599186165205071904636928 -718282576367818809629840084849131520 6854998771132713568756277513814016 4610904809640394974354744365023232 -467413264630825760334148438037889024 1467240644377770024333284982390784 6361557497939749448829636135878656 -743540369678704400951383078071173120 9719685713352168730951989086650368 1633232367237107364826323083067392 -955893656866835894100710712085053440 1970364238866100392686529680506880 8784127139244352643679877291048960 -29769842781376308043346219299241984 4710523164649439908212873675931648 4525545350655509054777043519012864 -922374155850490417132927114719264768 152110401853487653319307570446336 4886168593677241182894198628548608 -996993297471365528127664233774055424 7615919685638511129617859493232640 9331381148390959944546792566161408 -339992830673246403695079266975744000 2445472588971819572512806657851392 9281224813135550470196528699932672 -8075130489067587702977701934530560 8014509741373795628373910346530816 5028152973355078684133416050360320 -252224525142149442842162269758947328 315083831643571248677583717400576 4340187071028900717414952023883776 -360773574873062355132792028581068800 163970872760965526917870233059328 3396221139772019339554357120073728 -222180022012070470345143637717811200 3125165955717257889324844854542336 2288371929546195865347456174653440 -101279405861718804397022656361136128 548662921381180387239580665905152 6467896939401672871042038980673536 -874835255390249120882587273118351360 2049017458503871465715610536640512 7512508729874165204242364587048960 -338883360512978999879371714453307392 6705640623491873058555535952969728 4613911230550577968636380460351488 -420392476051949238166077690827767808 6794970096760396352604592435888128 9418696366203899194585014652108800 -98149797137955815027264537904545792 1382174718695220533094879894437888 8391232377380757289236220830810112 -540596550874554840442865381701320704 3546582445440652209065643059707904 121870994408181027560633428606976 -981572771247429365284826108657664000 4166973497798030158740091048034304 5840266903864673794793617873698816 -787609349155363994898311945044099072 7913262766598731126089491884802048 9649645638422408321780453975523328 -344820013991975690556340157299032064 9907899607666431891982268894281728 8271491075219599963250959912534016 -103811149243627254735668928137134080 6584958210558290913495945075228672 9741091887873995788640742358908928 -615073183820315868188608986437648384 5519438186488299884377907558088704 6579946618694001049364911408283648 -928909243005878689320813713195794432 1245577657739285886633474890137600 8878827519799387212766073101221888 -405489859282851312506979180299157504 4587467876187248133685106224136192 1230306985804405747124454866026496 -311486873835862322564659835912060928 6361214587692102605382525919428608 4321025782999036984859906719875072 -435468956333410675760508687819472896 2278012223005984858428617841967104 369640396578613567353017465831424 -347525364784250602356466079693275136 5761900018128388551956382433148928 1731515095438051168757470768136192 -878636793374336701600584327648772096 5658201320741914101490081765261312 7267678231897558395109256990818304 -759686080787510615062593321830449152 755815967695406526210359246716928 4887376196111966063396857199984640 -823304115893584431222739668941406208 9589538086287171023140354816737280 8378877648210478543283968255459328 -6217118420972542969475269461540864 879444898795200620498014011654144 6953072359197411328959223164829696 -627450332253979363519706675596492800 4822887751528599697282870364078080 8811436205123358120738764057739264 -516258153126556453314832788908670976 4857775431983444217228120794595328 4606329679417188661694385824464896 -327626953828003492706662178202058752 4748090114742781059679914066706432 7976700280375976681892287682183168 -801429864956802251284807785226698752 3323209159801782077394743518560256 5389337271431481100517836576522240 -788323942261720935380767043915612160 6976842401524656167806103650828288 3950638891054679999507201318191104 -397355428180030262604625501866688512 9076127046854879686716757093908480 7356114600403263160440573153771520 -345116024603889983544310994363744256 3269144911325295265262268858761216 3271938451129882996745153531609088 -898704632575259917503349739353014272 7819451686872733487307781820121088 1494968801045891691304796649684992 -524539856049956385877923843574595584 2698819900314429407737612207128576 3068165325188946522745804045680640 -393106341946873657386791237320704000 7760821516999178490814213763629056 9795757087747916123376345551994880 -173428392461994981575186083177562112 6169277541985899469995939322658816 9136069326344846210712161205878784 -703008385587361165748444080927408128 9195458778666823903230937691848704 7666779525303152635547169167769600 -468801312553877898048131316391608320 8097589150194196496048041416982528 1478881458351592665043004194553856 -849844596957416351643222616179736576 4409719601711322093384972829196288 2180741023514646446550088868167680 -410917308531284499859545441611808768 2529955999379678672565331751337984 1370850114018685821526195763675136 -830795720126664378351835332437082112 9383067745778827866830785275232256 7510595087074351971682649479577600 -752893713517065379713266112658407424 9401999891771862834828529788518400 9648104085916845900325266053398528 -286264985185811120466202968643862528 6992172303825402771051320606457856 2643519385125735679799763448889344 -654199820405555474635429449998270464 3140661935075070187004409149390848 2618015804487646418051686964658176 -656130411160795955400742793738452992 4217409867058633147173082358611968 2042422059967262299278310700482560 -74403034470913988226876475657158656 7652216732735817970922435098181632 6080490850363111273316064044253184 -741049172952115484891495098835009536 2019536010273655516043754516512768 7815021899515885184852490304094208 -698853404190999216651695918357151744 6987165938877600501181322127998976 8044791272556369142294453952708608 -769402414868872072362091594576297984 3222121866938743364451467136073728 6949139990890942867327088393715712 -911213026230963089639999377030250496 2053833797921101849070025895313408 4170651378634960909277195745099776 -628691817771894792743082203136655360 3759423922414773364200507529232384 9169127425633525413077278424825856 -217560005392427024873448914290737152 5525432668964203743919676399288320 9103603006412401261029019055292416 -537376882763997285817073772909297664 3799138482055346358920396708773888 8322309231742016577336364987580416 -244060557045480884157544517764907008 7515917260717743327199668216004608 9737732526611968391400061654794240 -19160813559858236990783947444060160 5497219998547224655431587887841280 7786714098113780599415194358120448 -382007699324875184028673265140498432 7796468215835064165148990136909824 869946040670933611316390041485312 -497137729815892296388044146006294528 7343715151783832832721197411074048 5206288116161761650559722572480512 -185149409587274485455943400983363584 1262884863419428048027348216315904 7273855172029815682431118678687744 -57907014023061482975586496349732864 9717764697676259036895825528619008 2218915955587638630807241391865856 -723952789348839296329204432640147456 8691045653860072970679985618550784 4224394414971712172086401414725632 -495476720836810438603563000706105344 380012630789736511912047565340672 2469380885275389342648862871912448 -53985891773429568604621348198678528 2439624247669245224906711627726848 7261621396657352955237819744256000 -216880553711315355604328074803412992 1422394263656190616899219403833344 3698766042282462966801422882963456 -880339984980994479927746147016245248 5826680539298854598333593590693888 5598208368856996271007561186017280 -234685904824298316023620831960629248 6949744107576581132835437454295040 7029933276777019058903172281008128 -263685256435079009248080453173248000 6491850398801849657674962890129408 7846336157164902133200524490571776 -889522072461378512782117916119138304 3611102341959096745218622802100224 3603918412237565371763120637214720 -148577492013912815545935301724602368 6191520313993643875774184929886208 1809137917357458224029406689492992 -464742305828244393011176953163546624 1500014477498073701146683076771840 2944064474028050456493239838965760 -620707315629111584219555334333661184 5331623348934240074216307456737280 2564615078142109535489508107091968 -264215356220325071459249532335816704 5895299406107197411640540861038592 7829630243571872820512116694843392 -262154653061460712092149694878187520 2832760211017837139207421194928128 6091743331581912152525782678241280 -492532069017501337934174820486873088 2305402839138077411013610264592384 1452230764465331966841003989532672 -701656481401899669990063318339944448 2164985985282649922215134162321408 5355954802423885657996719730720768 -615185091698938849058940774470647808 4137973272099603858376437882945536 9923802989890975468541594201751552 -969690692504460458850037215027789824 4997123252046645391565966649851904 5456231733581035521458295277617152 -727049017445408694762780990076092416 1602273845306560194392871506280448 3312395990846092110813177969639424 -194976640184758730277127627038785536 2716211611275674486495247729688576 1625607313877710534283477227929600 -169343567550064479195493711367634944 7414661290429136695027052922798080 4364536147072256647545818844233728 -458004963565354450693351447755489280 6988147776428089021615463821475840 2840335376319412091833273301336064 -232955194198909998394065151475056640 4287310918937004226816396201295872 9627362506505770323520753697292288 -39808634250456806463234301759586304 1086011641319008422449378725199872 8774256319807109417611214274428928 -854829786031210006246146316896829440 5231086405591152611534693338185728 4690090561402273216016664450039808 -869762935816354219705271395318497280 2265836388654570401075318956752896 7892567891486809844703300623007744 -43234308481349206825845518682292224 143713041076095150794773180186624 7645025248953919355857868028903424 -42049003029725329293543912933163008 2817027965396430747121801150595072 6119151379926203811998086127943680 -946277925795326327037641897287876608 3124696751192080942785237451014144 3497660995356298458973753390923776 -55382610115726043040899753343713280 5082926880289548720700916332756992 5590533255568731756751415555391488 -284538249004774930909716972012830720 2918358066963859548943633115774976 2308220152492710793332952345346048 -217823896856434458649487939567878144 9936232412207369066721214638063616 3706965155747424895560435527319552 -515027590169615396542923098692780032 9678517397704205013155364701470720 713112763254928508843113855320064 -569118162898035117050870597632917504 4727306393279960414201051556610048 24464899622645758596783852748800 -968302719566808261465869358616018944 1457991539604586270167166422614016 3352121483147835394301430106947584 -92661587029691330146973161759965184 6673081281748969738476726433873920 6967378756223492624071373608714240 -885259810915645386247994806559047680 8163438906259838883869988577345536 7153197539609235930573762004516864 -614176751162428019971121405457596416 1026541493754533549615080502460416 3951280429487460094736801237827584 -358466839727497133134004834078294016 1362877982817093437653773734379520 7427118812103308657477655323475968 -536966930203493831841201397948219392 9671882590966253263405557059944448 3207736472481693519871229506355200 -898372333614710899731009965586907136 5775809536638188555464015473541120 7286111902726676482392916601339904 -379747725305613569237417486807203840 9464638959048045117827426384084992 5426951843798996804343854104838144 -370816700244099536656782467310551040 1915180646414990122561996335349760 77723417709911226876673990328320 -197331931915033344983922910051696640 8029812577459214995369644095700992 7429408706687097128274189613006848 -375985263010753872283167370401284096 6282117473625135028413593253052416 7196096721077874195930129295736832 -302353661447291323752256625618976768 7438527519855047529478582821715968 2489919790212729544346285562134528 -249801790967576850475299145456287744 5462366551580226698746919961755648 1334627023276742626238691520020480 -108221548126067763060746899519700992 3595940510722657280027221267841024 844912430580675714699700658503680 -949885401852452169411152361377759232 1066106819055243542920238760722432 9189496001431938373769496641929216 -24550418238266767730275351646961664 3502920008771178290692602931970048 2285433541121494769202657597849600 -914617881737771987228418511206350848 4005207490862600397065375929335808 3347880603847788751989651993001984 -734525759943388571863874651186790400 9018625409863412794250546598903808 7486467846208574018251931772780544 -852616737679221319017767838584668160 4327668679485156867214593857945600 7981172823854854309809190428737536 -33114604208355148753974013328359424 4831795633104226451328351021826048 4875854546084083336719953951719424 -661925698138184931223724269351469056 1181414222968622538278095489597440 7573603694875082139867655591428096 -906416279472691848895751506951667712 5820055216215863323652328878243840 6202198672142447565655407740321792 -375797002726636789000554602102259712 6007280893252651351447012244455424 5977215713972811306863142270664704 -708831662066842829661547127568859136 9815833118736488287883849589850112 3809336853365971044248030711644160 -637801222584070933239247577005686784 5588272966208536101753700663427072 7622218955004909038652491548327936 -728622737208371973605203536452255744 9744926646099094564663456316784640 355260737098150206122343106871296 -605179050727280416759286988355403776 2996093347674602583256720841113600 4540968762908135832362787761291264 -202706296225360738699349486685126656 4256116889056491743229109847719936 8144910027667311126707238674104320 -805754281032663347070065378878029824 6409610683686309607216647107510272 4281321067777767409032982054305792 -459473094046417622868717957896208384 3290028976875875478981939409453056 4986762919226496662443124739538944 -724881421660048967006146330586251264 1010139280258344509172848906993664 5301375378861406668741526092251136 -982961422149789708305440905082437632 6842434218686644401431168860291072 9649801915554139272379961404555264 -883988179294687319019919954652692480 7478674434746398849155268637360128 3164014644180760307484172612534272 -482195204191396814788845264303030272 8867764912158789067073735496826880 1069721608732922890516567229988864 -889399994682536126643568250567262208 8201323402697651922118820105289728 168220940968475374113066464575488 -221950269660962420531336951575347200 9035572963932278732063835298988032 2670823119682266378954129128030208 -661937724377236074913571291864760320 6330404997644896393530250182524928 7805708544668123844151240478949376 -439768347673970788972147613114564608 5926660015000049763654964447543296 3009657294208024943727128961089536 -327895652902532763625612467802996736 3589294452000745949063905189822464 4071196719731911831895462847184896 -722328082518429886644057595518648320 9871076417485233216157509207719936 8290936290176375581957484139511808 -282418664480039176815519112512929792 7215854544105304212288598804791296 8752352457666897040496516042588160 -907691071386949370668352350432788480 3182146128487882534844694456696832 881344440437239282739513774833664 -116881750937129492916630017175191552 234921507636834527595468746129408 1894124751964491057907577080774656 -92815504699314936369490160139632640 1806576932079020165530580410171392 8899369915452544579642531151609856 -254993524120576391352473508422615040 7486199604531753463536682570612736 7497210076801348415881599611043840 -351216982039553447713514530319368192 8731480393256664729892047835627520 7089962686491874532751630504296448 -434168185976574985687632855324164096 268888518210674060201960216199168 1697324613391324675605359579103232 -268936339302759683830238052760944640 3110418623946609139844594733678592 5260725825712214848356899750936576 -726956025031909220818804284143435776 7563775656135161414442129079402496 1698681012623285873114008856297472 -253571002322412017854502927125708800 2147191840408608799869658869006336 526621601967413153919334690586624 -835899960096755223052968090019037184 7765716895288932804398249324576768 3678059156872953899410254515404800 -590448778974454387787018678675963904 9355348174709321629633383671791616 4188326743298497026121605245304832 -976914398768574803917780792230543360 3660916166120343253489634859024384 5621727095107734730257815299948544 -39978986901811491290800183821991936 7204680392595980220733311521128448 7211354716441886827327723201888256 -833048190435319852690506581121433600 669669510639754166637842025938944 2687310031853481141137601116241920 -68350946302112252641492763754364928 3951703528365718322039616538935296 8812553525858837643305811842170880 -88187088172334446928340436010401792 3743816514355660327131313235558400 1846780886882661703686617974177792 -164549729283366328487856643684433920 4923397416791971109209933283852288 1202331292418266412018422278782976 -138010239186913893155643103863898112 1858103347047802225915669107441664 6648277888279542071168786961006592 -115993861112682779344356319776735232 26061542527226963035469746536448 1189183667486828243354506489757696 -269164106044293289831043965946691584 1851835785974835364797204127547392 5104142820468830677508619293949952 -429268038742636556729538554774945792 1047270471768825301339793289904128 8321141697521099007583618649292800 -300534043573577114430314280279605248 2386150871335411196036518229573632 2128219557132506400264609154990080 -983194289719268126360557741217415168 7386943398700694519701376832897024 5893682997741712485669196902957056 -255150575253555518956151413107851264 1689726696920713242109448917352448 9515586285045312947805084182380544 -410380495421484813113521359240036352 9592922172806798250920577463222272 9000516839439133835357743029944320 -440205028722476112769546943289360384 6405471439423041216940130225356800 144027987052069280352403097387008 -192074533515573295049879372452331520 3841126036702898620091741369270272 3673109107256343530765301483307008 -948227634137280366173213740605898752 9655482121379762018767140928094208 5193781196175391401071935332810752 -600289624237662130180594516434616320 7973130778119569340155921350787072 1674188923909861127427806342414336 -367578710147959919763401075320684544 4694498610657868945021609684500480 4337202282209782767157108078018560 -532233512964011761386334113551613952 3721370585837586483815805825843200 3182879072354489894401693720772608 -873039689994637198940338972805562368 7294622359336780825165222268370944 7615018196380027774570867168641024 -138979996597619208065481693575774208 8843427068180713759515263962710016 2787884449146703737131832891670528 -471518803066033122089663170946793472 52783400454643824770814444568576 4277332227531125982480196836524032 -584637732540553837373697715242795008 19476665288652179230213091098624 7165452089009760800514053733613568 -245486045615896254048941851004633088 9704297031886051932843718939246592 240732436349505054872642693103616 -617166091847581140880566773058895872 877331013071517979131596398133248 7217662813951406150342856396505088 -24716623768953983027511257949274112 3027775793382928725706477217513472 2063270961845321362688871747289088 -871711317963520451197021103021096960 8654281792345898903683528298332160 3473426950845073398509784629510144 -335753741824253557767020727924424704 8600839029802817084604008540143616 5634217646704471000046975684968448 -268868774632414237360347533226803200 8942297372806615466999075523526656 6395621526047552633818558157029376 -314106182160875966047909786268205056 1237643276764862634319778974531584 3083545513096798823723181075857408 -738622687459773775642075385439453184 9959582866290851802085428333379584 9262823545949062715042313468379136 -759109706309496151506182694363987968 6768367312186782271952699682455552 1858353894049242766121369180569600 -924057062551924087876793781985476608 3268069792553578167033427916750848 8826673512394833241669775092875264 -756388605415800161519982081596194816 4850057389097903649470237370220544 8636663231154977068469776466051072 -628620852656425732308678350752186368 4178989407692914571928113688608768 2979379520861064007378647092559872 -212649756648586016904332186369392640 4188497218284965678610324027080704 4437774231168196215017198738997248 -89682430814927275562390396159918080 4390249945483008873797959207092224 5974378375746507274232638971314176 -892802841264382877358495150641250304 351005069000157580404046245658624 4832753715575134466362496648216576 -861483413724100215889507024700964864 916300070494454074607407235858432 948916814362203937849077670084608 -457939761452624479068499413246672896 2308908430561373111458094745911296 4228930149359215899429411074605056 -693978777785923699733983981868154880 711501113583188475944246393700352 4717482881450720699811898446577664 -121601343109275092597015499635687424 4470175247964936373806359233167360 5686275820065680173133565188374528 -869337722957844545670236747188928512 8482558016932610628503474022645760 7188718966548602401164696953552896 -960134926851910563934911638804627456 3621883834905670008834274923380736 8535820194554324733130600037220352 -467901266289245932758442397000531968 5749309492365473234797601140768768 907967458694499966256608379404288 -404317756278683803059891282162745344 315813591751511458081474554626048 3784875634801653115611932916711424 -715842533864976241495136799624790016 2052824938649253614523020992315392 6237261325262535510325317563580416 -618970202066510029439620377500188672 6492652254739818526996395045421056 1971385039366277733532999480246272 -67112127439006121593242196614578176 4761183723859203531407646856839168 8280424153327980381593311654182912 -460867212904477638923434416698032128 5601730169008532169619228237758464 3946302894583359077372641138442240 -249149848950105519252212548993286144 7545724489439929200380066582757376 3271804311096901099694305912553472 -821256906104787521701149410169192448 9062449818803847526327123808616448 8111755134918708606326462373429248 -147882781109862703777915024565075968 5063215182827712346995085952417792 9988027432669727343481813406318592 -508774703899105955071039254126657536 2323129387465064559114988856279040 2256237100507019479602853174050816 -715391926688338978479446189745897472 4421754976214785684780202187554816 7599398028866935170830488041422848 -992351605341145337156232940349292544 1299178966250158843821546048323584 2704143808554290846553562538835968 -591946864332323780541041650780078080 5469770525023259598393365330132992 327702430584772634121852111814656 -689546738663132581257797779928907776 4952230378890300791449024121012224 8745294185181519260408545250639872 -242902944203711283060991013716754432 4634513811485552779408178394693632 2635392685209391501735557444141056 -564111485560149285963629611131600896 3970840496396294995859170696101888 7846177291874322711453144142839808 -346884960117223574214154526170021888 532095335490346235955293527736320 3487910721406148067867163149467648 -999045493532210432718952186318422016 6363141141898261675307866433519616 7719643218793393994713600446431232 -3081673394010608847078617790808064 8982056252742857319039734070116352 6630856681001317603065932881592320 -231321907579893418795788521823010816 5953074442622717520372413509926912 4850073732912247336291100467920896 -561741402795486281480374001999020032 4902121530822964686647066078740480 9646429526270123947561546135109632 -113981065698575825404679830410100736 9839263710851788296373965198196736 5703156804625114082057687404642304 -792093489148900670962476657884004352 3364498083901269856574641258102784 4596585955616860622975794520522752 -214477835919935216348698223109472256 4649159221180951211662036969717760 8671970020869400041460351620874240 -4281414112817190832380263016693760 1169024270213802980509867508236288 2706165077725824142333473607122944 -410600966703889881210747999112658944 578402719322533376876450169225216 3330245594436533740468541950263296 -424275005515749108445401005789544448 324066966628406200551831723048960 8226547233316604711296450961604608 -750978352539488142621491127715364864 2481712149456971501536960523010048 7690388241558050171001491630850048 -373288755923910705681389779586908160 7077020959630195653708634501677056 7712652664127322172166605362954240 -159986209391918379185998197556248576 7336608242352294805919588216209408 9429780759492131306621662425776128 -729213628678728186441793274728415232 2729921140167547258850146210807808 4330952391236906492361556925349888 -563694517102578736137237776889282560 2629754735154727134904029007577088 3705209156358431945350288240541696 -877831211869299754849890892236455936 9204036707499316942653869466320896 653258640482954182828973096960 -42643554722018095256703436490539008 6510571450488752749764254374035456 1273724085522662208129813153054720 -894640770853780376771505012166623232 2622928507531199360582956066275328 3645882970119164179404433293049856 -18651896256570867822231067406893056 510224099618588118058773969371136 9554490034675930324076877391593472 -97877791313883678814704795192918016 2834989169715206895693398338961408 1445358819586932292512292026712064 -258163809540533336773112015871803392 3294640193403240297736237138051072 9249228505192493563442999349739520 -476916961762589625591434356862222336 6542345062138817790087252882227200 9948811078020864828629400378408960 -558284824585717286521504274109693952 2661000858964686854616450605252608 320021204689314361412689764286464 -30992366828847995043685265146118144 8844612186566199589153523418267648 9089464572992224320187597332676608 -847017710180245041996329295840018432 5561172116385930399349929016295424 8559056438383737759422841832341504 -795829062089605057204685514955816960 5074717053580841396020801431404544 3878186684347334801170927007563776 -4331626439448193645736384599687168 1742168121967997705688141967392768 5072061927413971800897784467423232 -645978421658662653934974129955405824 365143213777661749983299231547392 1495195166186562820416406145728512 -707775864339011930682566752778321920 7114449209047346027163924566114304 1318231269338239539321834104160256 -685565276196635380476796799306170368 1324467306354458274011835443183616 3288383035408468270061999091613696 -757708378338256808650056567040770048 8730259698231320926068138190045184 1301368424705837966655559957479424 -970748392111248188243238078361108480 6278664339948043955136761794920448 2151231663215752095386435877601280 -4073746410026508464613357426573312 4644352247198842326145500968910848 7238746929031932680261375105171456 -59542839550824619990412929842282496 7384478032548803473866241754529792 120405103622550978523011741646848 -281179760506311123236739178863525888 7311182437265416683624043301044224 8890481668908330437547792187523072 -211909628448133136353428650957209600 2717627914855805921919032841207808 2492866874746858977810734821408768 -148338978612923409774619944206467072 9590286317854586182548793627508736 4612243968605868650222294367469568 -367702862947269570348975374664204288 6689628738362144542596891657895936 3568783542015194622150969351208960 -17273787437004571511992918931931136 8243690265510769585057099027578880 9624352832767661643495685041946624 -273266675107501719309259866063765504 4380361365353542553653835653447680 7381996878189044555621905196908544 -653495556075695640573835480766873600 9412183730642898089564115147161600 2405813511174724429467046568263680 -154858225790802091047681742570782720 3382268697769769871138169460621312 2821484278624191754751101460545536 -434205474647679599730815628342198272 7013730437380256441433188917575680 1883570492983029459279791440003072 -380323341602858153373337113489047552 701518761038659344455100541173760 7045325112769901524165324567478272 -585233739858636793404125068549685248 9530411152875079858597690232274944 3482652681221696243898432643661824 -317019616853960490267361655348264960 879519594993729343482725763383296 6929668405068036990741349050351616 -834009750525473996296728352479248384 8065966642566569614359454787043328 5500669048961087846558781258334208 -924593196621947943659828457395716096 4438018851247341136585321078587392 318579389910253393153765796741120 -248507441648263083534866713094914048 9614140246736037050698831943958528 140020630851987237141496385765376 -322987760426160380522611830922674176 4641328449331867975786016838516736 34549868143407872578378893623296 -302884103359964699303669634684682240 4960097260014632480513678964162560 8138184836428328910543659489820672 -775241548495780721216351435856281600 1128340568064072821867031411294208 3162166066628760962843588664754176 -742335517557118355140872851456786432 4160556518148515212991370574692352 9081428225448583660856454101860352 -852998763607933777562542167170220032 3689946465265106944338111099830272 6248549297185673190204790284484608 -819487053999602024106153800651243520 505072964277170325546208178733056 2488183972304388596373280645971968 -697294451392488201029127533802553344 2884603421726490392419836071247872 313302978015702540644916647690240 -780230165309837651935367951015739392 4969315643538663258718670245855232 3599737042788815271313765950291968 -711914951777456994686635517516185600 9437422934898178122726824743010304 3122647875460804726758864156884992 -644103875698176845551596919179968512 2069416529873197947198214974210048 9990226324025586874536902952747008 -835848599001535258892505931849924608 9524583789755930398558533036539904 7240405117236605629647619671195648 -744450511468028211792916618984554496 8398748200201453533603583685033984 8455776397452152785450621936336896 -254829927124279972816145591929143296 3285125005278481395320927742328832 4232269605417624860333493637349376 -98577129642249366815472883003817984 8027080899225094322435728626155520 5195091735357351716694894412038144 -201170790775508323816293852931686400 9144912178009388445467612849111040 3839415114474987477637299550814208 -17250657840900762029369230744354816 6340047599125156547653947019493376 4192259174569398443557197505888256 -403432959737223390494026665308454912 6054487268776608838381190556680192 8727206143188386336293889482162176 -751961400893734315138077595180990464 9813108369731009794638142649663488 172685337839577889725266077417472 -393103137943065809968141431004463104 8753352097351166341610660503224320 2561171517107913405093707268489216 -201484067080251848131035355706032128 2756226819288110509434917470863360 6836325879011987418726350599487488 -482674507830497083957076474407682048 8214206752599856625041708303777792 7214464531560607296899811274391552 -451410284713844592090396364185272320 4672691247230081462815941116035072 3442181190851868187536119293804544 -933621545543847038109024583390593024 4824807239815813906004758195339264 6781807501846741492479135483691008 -311392992430586646579878827156045824 9950962867528283650377617139302400 2489791070490158910625079783063552 -282229477334171783366113473681424384 5392900269636235110707396807229440 6636342216165851933435006132682752 -928896378385578708802233330596577280 5785644547652506610661599460982784 3771345409039366374500988232925184 -308248480876545998801389042440077312 1338665109883215780903844852006912 1256863512778732243771729578557440 -371074059644827329028160557418545152 5789769320836416450984200045068288 1029560878274054964277768422948864 -549713114814838283985053685865512960 7725648842742445392614465560641536 243764224215273706042804089651200 -56990986860274711920496084772716544 8877746340623469335416409069453312 6981680976341799082063243060969472 -154662720658083908860536938534273024 7412306702123318085269404356968448 1431057514391235103007496244035584 -770385969281642608641290552108646400 3000030962816237021330251647549440 4131373730387749454125643270717440 -378134765457129940815314298882490368 6566931634034551006094477869711360 7824807025524794368199295978438656 -314974427944964159907400508973776896 5669326146060709762397654944317440 5010777965368319890237996977356800 -353962343823088774076187589251956736 8921684855411988322303729190567936 941952745729689497267250445418496 -670190066048047348226420415515328512 4096462904266997351331007242960896 9236780706665376207122620125020160 -895811683833921793197577678064975872 3473339969520136272133074897076224 3407441043872946617359018632413184 -734535435130049923298592182922903552 6247803425046455481859148657721344 7540905285586819085820243289833472 -765860832239609247079641297599856640 4611482954613386859351736716361728 5409670596017650238680476346744832 -853999167210578524537942014836080640 5139343136622034911662427261108224 1922064391330789402404061796368384 -768695640610345040040630061799309312 3029973335481950833704068207083520 2562320427916989033571524680876032 -125415410791190410904296649283076096 6467217586173091927934256059252736 8267977587442061240422083344728064 -737418278991605779435231120080240640 7955574677151344951525896982888448 7646776635496710697976498114002944 -324651279799105110214942714962640896 8068701292694971649360360284094464 6946074368690811242033826748170240 -718573051243588467431121511467974656 8534832922879573444010014983323648 4832154616994009427828210977996800 -867343988229777064037033936645259264 4589073956648622053359037873913856 9007746417346280158497628917596160 -118131216169027976043608235577442304 3163635759743970805345117425106944 9095446122538906496704073204498432 -818973747273687599993966448552706048 4927765761650513459742970243710976 616012924440764661443706058964992 -533121460603940541646744921917358080 7037087849924285289443034719584256 2613983739896232820733543748468736 -847479254327766412457011406274822144 9041612422215691086475167600214016 429436253961601355819910655115264 -371927988712964681598499683286646784 8151773251860993035529664652640256 8792192570137636444940450696003584 -476822256241298620421331976949071872 9282487439952452603355045650497536 837238674258273972610236158050304 -409362849891011250676582043638300672 6293105997533290667968421162909696 3828606952862371662278459004026880 -206957886867169371685391241863757824 6250558170719986616199043512008704 4841868981167660182256075575132160 -635084617533552554271707299198271488 6797187081945120640228217973637120 2935778687799502194512076856098816 -673481852182674408571245391792570368 2930731579207373441241506597830656 2576359432172013368816202818781184 -220517003032958558999698906852360192 3729015653307216618300731421622272 5865765607589176448049980848996352 -66334635886984932316293970343755776 4769633594585794757324735485313024 7722558522912419829799026530713600 -155960188100452077999152116162101248 238472237581445870795146596974592 5944006736339933401034354231083008 -239362288131262725212565293976518656 6256614706556081145805696126681088 7406551209155958550552987800961024 -673430093134420306058183254594289664 41509847407870094217198541209600 4680077446167037745417491364970496 -164624529447222543478711064895422464 8479086460946625623323186332434432 8508954967849109450353982847320064 -242353044261836843484642776130256896 8802297428443968814552470431727616 7396448019429252896443612100820992 -632191069792658073069926898028511232 9559741965305602512551514204012544 2021053072357098597941420922765312 -83805099595212720671517005798440960 9490809007531874456091204404641792 7551528633167301351858051517251584 -104889512693555548887424454577094656 5636614607396888350190127586213888 4238190894508405765807815000064000 -839247322692910399006015307762368512 3480102327752106056541542094471168 1743745507471774149740291917086720 -749350497835813421221425499928002560 2499619264234860065732766910644224 4902502852914446455449315448979456 -463113631758437870323675853479739392 5137472392739380274672750712324096 3327355916683862904979544592089088 -123992194452689659259329428892680192 8584410729426556413061912479137792 8237420816284765447701441342865408 -535682361271647995170251960987156480 8328235508257194981235307415863296 8616865668393763152088791930372096 -511673973997174704846613767054688256 1339271873035520103901607590100992 6310191942268783642125377441103872 -941342977578630316988330803392937984 1799146684466816680811402113318912 8544287469865410902299892045053952 -968328066804547473266385629512466432 2452617104387183215214498601238528 8049502613598082968555011052666880 -521417860377617281526703925456011264 9691361325591216492100072029290496 3085590032340229191838972854140928 -325684812837089039956937005095452672 5469302002033427836636848344530944 4897540068419148542393198250557440 -65797765571575116773716773920833536 1356498228468384511182610488098816 5799064296421041315708851797884928 -52061786001080508861153875305955328 9045921358576510784492675444768768 8252106588941469037351089265967104 -309114513624205774990267145118547968 8517766014523258658543776013746176 5197320365574695756610465135853568 -397153202662480073990393569241726976 1157289887980280273275071036915712 9367630174060606626742275716153344 -596975229135625047670573117508419584 458446641797918508529130783375360 9783994082678467914521871176957952 -408094073856286830654502526741643264 9397777760208322546694022739525632 1784521519216503206598143398379520 -46490535612708382233944361598451712 2808102960169954526422064252846080 3410263011515336700301034779574272 -344531833428181130053944324376231936 5671776675868275953948098715189248 8674747735681181618616675438952448 -609680689055579167512308961658273792 5070960839982022192914930706939904 6148530770995066820480998530088960 -3267828602513224096274409309863936 7171979353707316197080254801510400 3931268154327220582990899193053184 -34316090689848231379743826862145536 4947330548863951599818438996918272 8677115350560773478056278305538048 -814017447428856875518103442283298816 388213741314350296283358362075136 4425089174676590746413054933598208 -658121564344676208963302600067776512 9079029858639724249827786239246336 9727574182073596788982311475478528 -911886335361546592503194163466993664 7907325784548833684184946303827968 9412069170385922206576050836602880 -148769535821081559974622816223887360 4434666572770521959049605406523392 5043248261105591667669947425751040 -852531649529109506360525510892584960 1190131773504741924562658282962944 197874276406428877953919535284224 -645648558861125065023760070978043904 6955466130026333643319390781833216 6793747094509851860073766224658432 -252553274441324053569260023487397888 6025490655066253704106084820582400 3543978211242149669311061963046912 -846632614123674889546001603534782464 6020254767398602496595507726516224 3969474332575727846684031350472704 -97697703975445339291917355719852032 1118773580757363232935771203698688 5881654124237488931524182057943040 -339952236327666683471805802633756672 8625405222167364159759962353958912 7416604455569435440627035215495168 -971634058934303773147889255726448640 296628940086525964557891131146240 3966368126392663519521642209345536 -421179634815545213446974222437974016 1654274251121966960988459068555264 2060477006020983513032854800957440 -593717054729861191776700170829299712 1622245051394858782851753876389888 4924234000464035510790743339827200 -542020427702909895136809632671989760 9265980938847991367758263288332288 2984301079675439068761011160875008 -106431229549448537847863398174294016 3673292195849246303216424666005504 7509300230090067963817071623536640 -172263742718165620029408621916848128 5566661671849256197300669045014528 2028273424571839975516015496790016 -53543083514697382051714863107932160 5803358606697722898781411183951872 6731873746268686406033311728140288 -222429761461355645167709357716013056 1110056780825846414103118354579456 6348600331424896499240760013488128 -901740007031225711531251435168595968 2203876158837843958295366171885568 6585897353346981565567360187760640 -515706680708182864504454709763899392 1732941924972830631396558508130304 2406424679965456915513175246372864 -94998571489229973907121871165325312 7920914269050757353567592130805760 184764306609397775636742463815680 -391742796285229223293829467011547136 3398865896593223124079181062733824 289418518226610656572834951725056 -865627949028060527207742276030693376 6314265362970612245534303707987968 683781656076908584704165072076800 -428538190858288824933998287581609984 8112202936083471528927353362186240 3468888103372359384774425847005184 -138470196897638575684675382269706240 9899967977564663466068541389668352 8549159120703288297658286883209216 -40918234146662607765039731148062720 3816272529497411060847947848613888 3075437963122859324422200737398784 -532035812895173736830176371016728576 483186110620380290999813444468736 8092726840216152035032019090014208 -941088302467824696775579069455532032 7654933875477935918967710336155648 1705061988851753650752608477904896 -11057491622447680162276402509381632 3250944143421031237943811060531200 7015242880512672479567659554308096 -872846501719150322092749639634649088 1906509893822571986666397540286464 7001161219884990633042939354284032 -891491657485623748971862665497411584 2292627636033330649588288502890496 2741905542871948057032722166579200 -163169592218784800112531051980521472 7609300538127145164069985247559680 4126442232061309340983891519864832 -651008784651831991048374862770864128 4901820088800744085006714702659584 9974652926828495392775646300078080 -855598773245219399780088989549068288 8799586083642867567471642512719872 9417339266966130260930198981574656 -382577581454783589800680755424133120 4370203616414993233121022878679040 4686557105456679642283218430853120 -601774793144960116953357432274288640 1305297294587462616962784112410624 9017934755500290531252223120244736 -459064231668889333336005984781336576 2408527163201024635872534142648320 631282441960944571938109835444224 -620285618541754131301374011560165376 1858994952049627703551984438083584 2051235604208121994486283193286656 -856012484793642548676751107832152064 1180123937388987351815887184199680 3462571437130488855177823392890880 -917301110766303835999876494726791168 8379434302283334885043279855878144 324169748370859152348541534339072 -125589904433325360033542050301345792 764408955498053030750329088507904 1153318486050664542202780020899840 -671398472275955360034266562969993216 9142606237411165122949674950459392 2658663799568027601013347557834752 -847041939779610275902237717848653824 7018126487099703460184495434498048 6480268764595098072934944755154944 -285559740623666154907123665652940800 1762497917449207015746052644929536 8673037467360911497310216390705152 -805269047394783550498988419205562368 8625936357332265979862922714677248 9417760551417219208325351331594240 -606047200360716669922949488642621440 5144554759545806234786223896920064 7062428132005665108603266482044928 -492818934891733884063121954299707392 7968254964187768324803670889725952 5009744629488206415563657444327424 -198164811767289712847696255462146048 2173437483147310177030324596244480 5180347673280892587920341503836160 -837296694389225058935085869326925824 5131867494130160672525466250248192 7948015866425553337932998665830400 -103274196882539153864532731812118528 1665315711760509148766025157705728 593365472811243242430262098788352 -973894804629436947941833113025380352 9524985620359879243497817057001472 3828549615150171167547767008526336 -581797265597753744270195833503219712 2659814431159722095663671196778496 4397256403368385125036425964683264 -773687076665341907970935547836235776 8060909887605676192496067245244416 7197885966910434484524314682982400 -986771324770988326771473136840867840 945926218444828394930695112228864 4698691255217654818127208603713536 -192074907543347165261105387295211520 1404942706654595480641374171168768 1220169768349414314514500720525312 -991370256294652529828949006357626880 7727805740946516290157567759351808 124664554131446366604743040565248 -211442003705577532882420606426939392 5932899418407420674160906704257024 463743337974910218748173031047168 -556731082100645147103034526043996160 2106088259924231178256434079989760 5989809664434699268483166756667392 -603104332189651297389967366447693824 228742378499215312624571950039040 691335953705873430806064948838400 -630520385626914790063751926154002432 5366861433785076135407105588854784 9229708406748090700124459135664128 -39397487220979871146635475571179520 383734116654462344486361526960128 110797085633042264539297136771072 -441978488914390372477643081209872384 7033696674514624406286168473206784 8671831135956526918421650163630080 -888864575852905178639746050337800192 8767178105333170884044019841630208 8128842728315149337344949536948224 -270560549574411564187615313822482432 8422188371064475650028665391022080 7397276329116463938088830012227584 -311191720620313717479279510027239424 7241404759973288801519108022599680 2242509755667513268289645798490112 -181814095470490692287621084464807936 2520250633771980171788117904195584 5005835670915025925495086150320128 -722148040110244240053675659939020800 5746515326280946916419584435159040 7617859559561738644244953976274944 -603009123979715617615363193226395648 1045394927750871975783176062631936 3571837468583912960883234942484480 -786412870865719926111864106044620800 471377222529839163494726247645184 8708089031210846360133901345619968 -725753900445558213967014642923339776 4065165295941260435740299353915392 9804111543503325387292697232932864 -907627841853887835922286185893855232 5705124061034047136925828199219200 9035532774446218573325915603861504 -964468415744997112674720317228187648 523106918333616659586487720869888 7963033019464713736897149727145984 -499700364291447718536172326596116480 1048226897869759922172849305944064 5099586829426589967860148031455232 -909170687388185309781349787590721536 4848542003303110182226200283316224 9158842571900824481069132995887104 -492275881540490805027795249154490368 1867697488109562155662445692059648 3897216454235593554208279219929088 -906907468414614984602918203527528448 3071367635587564931068271959998464 7455648028006628614283812895981568 -344610765532663132616551668255817728 2413808593200088643297852644130816 3286088847301265754236836168859648 -509720967650896063782208091803615232 8779307163263760224898398443012096 6319718368563652638010026814865408 -975225528483075278108007236915691520 7400516824232465444542924971835392 2734309586676047026697612612861952 -223871721968668041310037133467058176 9513840169912975569162604675858432 276813017980852224998412459704320 -626448147458162375580730291937869824 6791583079788043719979665081761792 1424369755660833215855754003611648 -172719840540435028363472593064296448 8602866179798481878096699084242944 5141207649677654759326993440833536 -55062634286466820420453429642526720 7399363857787867250472081726373888 7801622872572415860196350143496192 -368363103651023196670631012644945920 947675540306923014936166645366784 4815141399025095178835766733176832 -534890639799237574916412226236579840 2242670261910013224291929472106496 1570145970071315704753488488562688 -463958910497515413348747033744244736 8047771101578794334223536784146432 5097956442779781359498655210405888 -504577635111012598905408560981606400 5247147661405379286120680948498432 2686895068821559490820105845080064 -341163059398533193440664073067823104 7059642589908898900537686634790912 7712840971927689063267026146951168 -416344316436694417815815672949637120 863456762640227030152499139969024 4335139971594011270573404224225280 -339888780747754939820926698688348160 3190110651977900560312032974340096 1117652951938548256203194805256192 -625210559714259695349923699541147648 8090937543784796482786525924294656 6774731081881292127256986244874240 -911040981942005225668052549395021824 3221188164379141493198926255226880 9214756249887488679908064693846016 -515007525326030985766191964662792192 4799735483397313988915066665172992 5738211544524692763537931275075584 -421641084192418039229745543927300096 6797626750315960280140380519792640 8284587708433298253558554134839296 -501809644735078129370704604618031104 9815278837905678308470751328468992 3064732161128121519504808482963456 -54532095453009594101648955717713920 6279194778159549604007890439372800 8161083427606700145581525492039680 -298956100934415105951993852466298880 3243090437770426927880464110714880 8826378800102505426746970875101184 -861209886178732707472542794566860800 9768064357215499973100695311089664 1557228041334972192963961347375104 -959224039462110499843755590237028352 6392077418374433094993191712587776 9551661434000610009527557791154176 -178380887313585540637591006735237120 2233137323854467133018360258756608 2332703055351086493123456784138240 -710690489200798812166635675818393600 2808324109155575984102472341782528 2021230083679536368079080211349504 -98193594412275697342645341614243840 1578955745715124899559565462339584 8317435669780011382185329617272832 -110501493293333095298062153272000512 1100219629956747953760749265879040 4789541364168549120776032885932032 -994157627564252678618711940564779008 3117592890433108450980501141848064 7978288095137438309819120403611648 -556675920457132392013767448870256640 8543041741021121662928651793989632 2422878792392970186035183732391936 -80190543230454767707427063050797056 2813421431233139902254979636789248 9896116203147117430713905588469760 -795204834312436008472735722636312576 795361281938296077524465124114432 6631457372987983224113038748549120 -211398954486805464776468127241207808 863751731290909740565110588440576 5631661381730634162888615638597632 -74111383066220028667241337238585344 697098314541642823420676929486848 1183906019898666818148637331161088 -811824235273854491171259225164742656 7197660266438842299390521738526720 6132423595218819026041702516260864 -240758557765321588637895582164189184 9560261757894409361384657901322240 9761690007915136991397720574918656 -445768596898975857857132522295525376 492955873754399648788215895162880 3503085725063902194224033293139968 -264546195110136423222575907242770432 8967771742717982726697283500376064 5010846066923061044541099008327680 -94373785967941455533713957964480512 6503478662133669404843478280568832 3722953228937966538908809440526336 -67277780745589051575738110230659072 2932494248414241246044592051060736 3881195641213371233626812313501696 -513311031254013479601513167285387264 2126615235842893433228125160865792 9267174424862878088763510095872000 -302691419923257830820178881299873792 6756986146582139262959748959436800 3878259226877231181308487910031360 -99899657090144598536102847300239360 259719160024848222240736299450368 4534108119164276613233487900573696 -1183236591707506063957728123944960 6824472879281764764205891144646656 6177635915238312787172787811778560 -272549323030759004219036861728817152 3810566958320402715124935105183744 541679242292543627584775504527360 -953672964333208241555889458761433088 6777598829742985624858218144464896 6685531737504193957420114634604544 -254709118029679167451864433516609536 6226206610923769975024541975445504 2772171003464797002814850710110208 -492289549881685240450623912219246592 300609713556088665168537091833856 4478978203286716527147452366585856 -366261347778315068389368908547620864 7102477883515511436471601475878912 8922333363066752453008794998276096 -835963022328840202685995734731325440 391323768297459292130138275184640 9796894586911638965569962547085312 -697640116281977850717333543878393856 8365534864476530010541898199990272 3878064131039152764227474602065920 -61228532982979447258469343632031744 9613947194055776627767548108079104 7203812238768997518961340380610560 -605535647532835009090199928040325120 8541860553946495715363332942725120 6300230601640207844588451031678976 -804302269016103467195808794804224000 5320565326512138220058874799456256 5232602359358063620567807878496256 -464936874278926316340210798541406208 9614301152132021748760102479855616 1707335622504308619790593399193600 -519449584988114230825336650697015296 3798572258392006639194389165899776 4948816547404364195597394032721920 -680832116744090371095534362519666688 4093301618446352055928562854658048 4185256494438311999149648725934080 -36461570536416266129463540218593280 1159603967477251449462287490875392 9828918235898844302420748282101760 -486894119025299892427317899832590336 7186944773581368268518426079657984 4051235345697278105486266824916992 -369306215084600619182227895948935168 3087950851473082590921731789029376 6159182214880910121267931010564096 -908204901661824685272703434953326592 8559569950994930386096852253540352 2567499622622840019918489332482048 -609810276065042680127662492676521984 3310501851043999566464858705625088 4888523327830603509978370716729344 -368641573452994116976448238837039104 6670523586083399971094334365761536 1196845715812178286154884845666304 -255779515565662038781262272024018944 747021369241589629636795835613184 8020679443716060519313756414541824 -259814113420532509241842966231777280 9467157326342972074966794306060288 2831276189618399746242660374937600 -700233266443402664851150931903905792 8228312774668378605220443453390848 9084901987306194312475259439153152 -70669855522975867818985644808470528 4876575605425981424609346210234368 8934678900277157005624047082405888 -715404253654704154884176585473130496 9304857150988127097562491846131712 711355101391135719953881859358720 -972890407872259116978322134030876672 6871854738739467130016838384091136 7627710211332178202899138473885696 -87478893718503018473569405387145216 6387618091810837650378377572384768 284932384858456201523733442068480 -676098423472685994193491105652146176 6808328046922898107827837665804288 9778615472431634115634808745885696 -948434005395494121014396188505407488 221998591476093913698087747977216 8082022637731778518916868689887232 -712334707270684439398708175370715136 1207396348991718366258826143858688 4993019542981679018252814637858816 -896858430984847330742932257118355456 4182662747805314247223924221804544 928879599027566233756864075530240 -616912111116852286346341870026620928 592295178750116134452442123206656 8024906954148458707629005349060608 -971605171855476066099960905499410432 9276325680062598602719279898951680 5993947623853776140019165925736448 -712294812825196618452133467427700736 7031040536728184716948091044888576 5812884630786691264237096742682624 -395459207479099277528309599907610624 3378770812359208259457942760194048 6995178666427765873148406729277440 -507785543514674408066709910886285312 2241749034818329266512273180983296 7733106586403576872421932402737152 -790733129085819281786355981970571264 6710274511357575449801537032814592 3451281509589254700447585536049152 -339752859191395237673318225983569920 3449958184773827638257123453829120 7989196381264400826841211108065280 -692163825366758731899015601948983296 7583897349123198592838937601900544 2377513250019134427360509399400448 -796731846624566507277599461947211776 9737206819466502751390361479806976 595865698730921383976150738403328 -243835423373470110318221873677074432 3813308999795363186524612724785152 9491782397622265194392636604022784 -625534422582437276478666737308401664 5756699923465609799485886159650816 4782163664894685653280815839182848 -231813896567895425090277098485972992 4338965038956373820641414777667584 299290854291108130496614169051136 -921005621926922174445420303800598528 993132191762889574891551885099008 4326183875196799823659096004886528 -790737212566053240819819559184760832 3097317717128175186688732724985856 3759861748730743595795165600546816 -363466709419793655387172354729705472 4194804885960883666325899579490304 5331602065241879128943282574327808 -129640923774825085554707978761797632 2323759448235645906190715433517056 9460484215219585877801924997152768 -371835729014711644426556108905119744 7148816200461238134073538212003840 5504556703923230162095471429943296 -615014593666408415750403805683908608 7621405513946340655006732412518400 498292988148104555442886634635264 -676521419154755586764634936571854848 1500623515591262926749227974393856 1217176920462244248431595754618880 -471610829512481045966542826886922240 2051421855036816215546035315933184 9727807155671908433284212971274240 -747591597271681839702018705124753408 568327082504363093871953860100096 4692989108739618540404686750482432 -749952673009688170923582156525535232 1290505768294023668614322800558080 9054193863477132688237025887780864 -495578648661446482211480128863600640 196857358066528311409071498461184 1600435716930922686425074266800128 -762674469610585730591746419698171904 9343460086480662804872133945065472 4172059425096505225570662578388992 -499049168339648277317202265562415104 1682328770068028463305520511451136 9198378852241032986564238281539584 -614790152689534599904040791541022720 2516462704170701545237947938242560 9552807204096770611517166129774592 -314093241480108544340412651874025472 55737609215538867307195559575552 5789847051893658338917854706925568 -731984058137941245658434643106463744 3372644435715291734473358216003584 6393030726733544798160555316609024 -634596158421676387567853122988539904 9498660785192085302017389259390976 9858571921339702286824233871867904 -776061184789820374685123782018859008 9094436882584038089073790476615680 2393549063703690464989652476493824 -873860677178856164959711970811969536 3802708469400763363226535977811968 1459730931111854568381520428400640 -908384548876984092350964681022636032 5928309703541629321474123507957760 9300956328261283184479240582070272 -392766973108850673861191101872865280 5919515249331157814056648448147456 4526351777998126457271469073235968 -505404388362914152585723190649552896 5864074114633117997477405120266240 6215459718334212807087077118181376 -110683033192618098366611498144366592 9426181051755695803582631775305728 9410364713820523462124978296586240 -503358337307668938466678960606412800 1943288491931697652614096241033216 923123412159223677990019314745344 -679254506267393278555097217665859584 4130048526732508937092794303905792 5645357666079522317688574775918592 -250999346554966599268711336970813440 634803367183212985792366538391552 9199740298809410191082869919580160 -55393949484591395845355327847399424 8734164656424386024892394339565568 6146690914127784376655572111458304 -633315057105526783294051148420349952 2981741891957903184673445511168000 3048534686786365008628389332910080 -511015940039702756897112797374054400 7233894583141241258039495003996160 3426092531029063009353179326316544 -166363685825008744655176203574968320 3142334915130101621460229632819200 8429477759675245256113044209008640 -888793652907681373465870255066710016 8886130796099342805341283341565952 9310714876196284629678413754400768 -191010970920319357812646333967761408 4852145270824624124223163868381184 3301982859434073039957117691232256 -130120237073951838519740058480672768 9293136802291333517684298016096256 1921754834985110087050691015081984 -531390789853985475446149068735119360 6181774583820439007126985046491136 5064025105542761707669711294038016 -235521938679707288452997774961541120 670783001417951875819297717616640 5846317971843974227024784002121728 -487476936315960623202138746435665920 9158051261836179715300355102212096 123529047526750614393987033726976 -852699182024716222623903929163841536 2172705406656929828375306658906112 677474154167210678882840826871808 -74869802892171681355556844503826432 2826265512676718574137948074147840 4360685674365166642354717712187392 -228898901048214141192163972846977024 1604296515937924793282400232669184 8741241936057038060713658862796800 -218156498229237243035301992669904896 6975497486059721748196391649280000 9141679562381367179357149930192896 -982967363348858986245891797859434496 5533357982303416206992397431734272 3858149860457157210604458081255424 -212429006413991370858653434542817280 5291665685841777991050480972726272 2793755248475015335362920684978176 -948216396439082226013338866836045824 4072000373230784893240788694073344 9081412449606358092285420760989696 -203622560475027958185480578091974656 4623476899280567448326653270294528 7911316502187075040605842748473344 -825819964707704372171771799031250944 3109758492782103408350260516356096 4661498309595107877696936731475968 -567114294615041866357179978864394240 6642053227571950212898397714644992 9498754149296424064874402237382656 -319190952917059252177649790038835200 7109820868869132318216122900938752 411295660577715048127108011261952 -477451188273382476742673095043579904 4662980249447583460664769740013568 6785308092031787900911821227294720 -317472379556479759616670519682662400 3971692114463221272642562379743232 9414645038106854428431137411956736 -117840921479464616045978410050125824 1850419603666955047979169567735808 8436708178779128816185207888543744 -375251154524909382501901738688118784 5801033896840115647044277747318784 4578260261162367619906918674333696 -692549423807037958942934563295330304 7732926649285025896367347468337152 388520126266999649232612162011136 -971308517778948526058766915820584960 5432092470052032666331203057483776 3275674424940230305429331912949760 -876926965578661015549837082521239552 308865599813546444848988657025024 7909327893016524954832550227869696 -613605851845068428986968598755934208 7721379403570905051564962425602048 9456284200836116837496469214724096 -389953017352420578826155151956377600 629937922597079942766130236489728 1881837947821293443921708385828864 -299410001365493258531191657922035712 2434183055927457960913776601464832 5307080956143242179518474313793536 -499896419193198731147029730279030784 1794844748008097611509930936762368 7734572929993900203452041808314368 -382938674103515793150254030069432320 3043194856856734283914882137980928 4981069349189835643374562036416512 -444666090340308229420353695680299008 4644631054667665366593765279531008 4174019764486445819172447372443648 -277323625522848731346790305878769664 7007700112748899541095811741908992 3580982846011918730187330677637120 -83828870056181968144857272504287232 2669794401304965270147205099945984 8595938877401268764996200170520576 -481016002329675869751350321932664832 1929639978756940197105100895813632 3614158736862623655624277204402176 -976889471258993779407926140013117440 9137139651086089767815363885531136 7948535915372715946947078048972800 -111907595450067560102508214626549760 7546146504576945647696093774872576 2023064821088730542662044321054720 -906677226404768525373241658997473280 5204243375896706620274354163810304 2838711386265858066460766004838400 -560550130069397671680603342485061632 6538729211690985456677327221030912 1654635150792491953821371680686080 -648056668387477915889825393613471744 8958346968326158800113921528168448 9370833049378931011939486406803456 -865844418570973805080319750456737792 1103831959008645087599188028424192 7342661044928066474371190546759680 -706434067488404116479172341514895360 9299206281818089382528334291795968 9921569559538333028289458951159808 -158864163833439234296220199143079936 4301885411792364665160281538691072 2458805626587626434333719530569728 -237710877813179140919390900842397696 800117647938097543258232439439360 2537865062549096997861217955479552 -546113418500240740937351134219075584 8163927842513388115166819862446080 9199992101423138028841287976747008 -960381897975719246384515771378171904 3793002260992126415042847650611200 8326697831807084114582844802596864 -243270146587816746386274492069445632 8165221896690074666722052142006272 7451730434684254702758989389627392 -997405835716067615713040778198515712 2613440569858452345287090221613056 6220286212180309774541787435630592 -659863508528251335000848283912372224 5486543857031485111279468809289728 1964001826137454030124864627539968 -562767977142013373295610462868602880 5564993900240249229282055471235072 8124660792342495796541545357770752 -50147966369787700417013594583990272 1287932685178274575429298169053184 5959762692546953352844102648987648 -27251032265408206546061184596967424 6179331684851523077193984431357952 5989025122489090528818382057242624 -248450768408676984558769677340246016 1072979067838379505632721841946624 443802249826916614968327771521024 -182335761153241168273528921884983296 4122709285400649415793909247770624 1720212033864645304017834186113024 -364462540653597639613524793026936832 6795004970342033872808236948652032 283650403943790103546559606030336 -928156934600240233420984126564990976 9235638832543342659812336424976384 8569878647346936801568471906254848 -455779154108932369628150112452608000 2638686614354438937404016049520640 9227228400698210322217950230085632 -906395910066718263958973012269596672 684138845458201816398227530842112 1655434668825143829425692642115584 -29211373481052751157466937610469376 8302352932671501868650754367029248 1345799062558990520399489425997824 -543729561888640679463733105061265408 2071517562498354931613933305331712 9282683122233112842970469297553408 -565092562714730897234693558548561920 8046153089046330326448786544525312 7322384787881891430092634020904960 -636356942924715449286724985093619712 8710372764036861891844975143944192 5398428563975212637295425179615232 -274142067439403479363440583676788736 6962436668977973257293118650187776 1728996728143126805691488211566592 -138944791227004632653557737428353024 2360738200280704495519995887878144 954546103644169624220433721065472 -858868941684751947334011170181873664 2023704624925040554592712645410816 8040613168145199634157155085451264 -672927623553922279910792043159355392 6191950592354072301431456664649728 5356137970847486474135069662380032 -654042806227742363852923380552433664 4167365359658011748344820718895104 7519745140312991728420967602454528 -114185069184095143662628677053579264 6447741577845492800416381516382208 7886184664892744863264297233416192 -621122647504553680763232274165530624 9173322234623382704781366581526528 1393942143216948122124145578213376 -434150020412199063612880507377811456 4762618612462035398102171768586240 8820808507955126203028047638036480 -912066453525263748230188999802617856 6438481546515963040232073959833600 7684860931210940880836425288777728 -517836100675861509925788555623268352 7154614681333694190936994837692416 3773183634111965572887900722298880 -639013628561594700385966658554953728 253440844266581341044373444362240 5782444831517560956237178426359808 -291325957720689970896993638598836224 2078069494145686519540236370837504 8323281455208054774127943045087232 -98228430055387328316953887808421888 1020850995361528444983650436513792 9295723906734161731573696608337920 -430930550122960819124822448269164544 5366152134487235509013433318113280 870808735798361089796332926795776 -450891002288766286602439511263674368 1751119169580579044157439864733696 3374063259833225045161898936369152 -20490691827292749845154428161622016 2015762763616121659879183475539968 8433075708239918653593122596978688 -955349212605303617907340231879688192 2889941285276584413609735135166464 4032654449953587285128264535769088 -51233345716782878281731732645347328 7553418952169347209909346947301376 9483257075435930911456711445315584 -374790696420351992306447749365104640 3727946734682416851465301613608960 2188460850147237683362431401721856 -386880872864168234475527961158090752 6147009330900899739170073831538688 553634461897925722661462145499136 -336209437553477791144505028984700928 5150553973087751256110925814431744 6010012052665232762504368560799744 -89832074692888522843241392554115072 5147148880756998724123547658092544 1718749725991169038704151283892224 -684069803513168056283648447865683968 2372227079796790239953611514707968 4940416165582109529077559987273728 -720191666438933118655181531572600832 2481444808888908133491231166562304 530837367617817037572495829368832 -810127622810864546961457294723776512 418558137977936478549877517713408 4690051392693022457922827677859840 -505791199517151871147952788287258624 5203240306856851611080058992590848 1235405832218252144545022452170752 -112031862805274101459672037985353728 3124235461491614758139868840198144 9533970615870048028550090499031040 -255813378181443516435312758331801600 9733766549649374969663686933741568 8624709161307682715249550859173888 -736428216890428324443067896259674112 8671860114900182300246842135281664 4484089439232958223373127680786432 -57432281067862196540951605217853440 3959007920691231192473373142679552 8449634521243040799031034459979776 -436674166532597387133730181645074432 678110117284798072294321759977472 4527460353473598786145595571568640 -49395156655508362535597232873275392 1300637672897004171719524516626432 1402391685463511902088570876198912 -39575468568995621355230086016532480 6068902584727629226291058385616896 7996528286505110239011539337084928 -912441564777964210283467228772827136 2708551848652647845590237618110464 7610126984236607492973517300826112 -476732087513686236812368521086369792 9587729543216451695785906100240384 9286531456533633518032863696519168 -550135962515984399717225178444333056 2812400134882515840700031573164032 8588404848792678737467099683225600 -731035353312996438592575867224850432 5128722791615950312701803689410560 6957127439025244389934988181635072 -495790744122033907333749623960371200 6488204852538286812566900390756352 1387410340847276385765122692349952 -168214531560041717997142270325817344 6881136305463099379114694385074176 1451735558995605571523744754565120 -447368726787513740111187817564995584 5268693313387490183818738405474304 5398846055253963097253927467352064 -425923897785402388103175681616117760 4324713958007550871769894419955712 1777091039821234542806169324355584 -433705281744043584761251767173251072 623522907878887599105989933006848 8897087353907495805981723618967552 -456413250144198884076058413702840320 29041198074405381888429741047808 9926442638015528330193037313441792 -480766940395486164653979952738205696 9134944520618256685089679967518720 7499851144856196861387993266520064 -980199589199488703137706397937958912 1752204020656586307950636469059584 6959100399730643732032419570647040 -741003663645072051824436267446173696 1232151314326960010024910936080384 9563963831353548886997567715409920 -359912579457590356882517119687720960 7211947998611527425387714846916608 6678550278101035502482133247590400 -305020597345128568443172417798406144 2017835062894539082208178677481472 1844004065470612684666571807784960 -813150522624477582904471960091099136 1629714140684499392916757424373760 8161603350624996842988689896243200 -887026990541070400113553200031727616 9874886927832714313373450449715200 3326689700539866101486623528058880 -144160151609933084681360380119744512 2427169168306380322120467837091840 5519133077222603248143307278123008 -40000904859024353925232140631408640 2548941921695639097547657064742912 4807511763499613909902726759710720 -314590201865052989489138494206902272 4569669192192875993651028848279552 2592161510892216263055384143462400 -889315514116939229544919707198423040 2947299650187216030116468028866560 2355645317574096898570759989886976 -795220871341133248484775825070096384 7132445761275327400453839299543040 1677936659368466243390772944568320 -609989439606674448142719833627164672 2686244915558260897550100739391488 1660608021096009151519709219258368 -433762043624390714203645900434178048 9086481558762919461937446947651584 28556383473222903636044030148608 -199708406737138765868987089346887680 390622411452031717768367458746368 4157282753617856997519294294130688 -108610085113066977050548780828459008 2987046809916753726257614460813312 1784752908566513286585871004336128 -290476927358907194469621281106952192 645157039342726599096856968429568 6419541303065734158174703149121536 -810711091236289176614710743008280576 3918698631323019005124938733453312 1864192017958518726745216369295360 -532502164653216723072840861260709888 8394031019777168202077798553092096 1454240950471539345828625667588096 -460434738781998024580858957424230400 1400478406480454042958740485832704 7129863357218426349180188369092608 -651585238255257579112532792913690624 3818886471424914337980249305776128 7295400816302899645752924727934976 -197424667616663553861301677580091392 5979720218153839688085681010114560 7294395461560722099354389767520256 -451785519107400466684361414193184768 9517900132759217791998000252321792 8790296844639031405377067249827840 -916677725510394955848544932904042496 6249421799791475381971843836542976 9231329570754908810138756837277696 -867208585922107363501466738891948032 4126015052972237678749534325309440 9001263428450426673576329523232768 -761918199485565073926805611484282880 5575482988119695943142572243812352 5217875953567843284528991125372928 -892564124056863298863059921623056384 7614259007576150880594797036306432 8748281938185893367739384726552576 -860224482632085558522894555589640192 2678454448362664079806824590606336 7618751666518836566491802290356224 -349639638704883765076994440845852672 3795131236366077817730181428674560 1201821093995233234029738280878080 -331596341595057333877901242956513280 6427562745195791571746019015131136 6205369378653620380322937568231424 -981288739794178207741444077444399104 3101552933573306887307487136972800 7835291136741282659386530073673728 -410304993207401235959162879185256448 1132010045934873312408046611202048 663402437708208100657920433192960 -925859467028276054302162868217315328 5392699822557004686463006171725824 4880058106438776140092403479478272 -875371180438663842203306960797827072 2614297754083332738035518812454912 9665322274823256560919625838100480 -517640210780275196170354031633367040 3367144742689363287384587881152512 9346165862071396065230581066104832 -896026276642882716621869948738732032 2028532871838071021400558988689408 8119998639352794670899934854643712 -731355021209986853235096354644033536 2032128301313157797972414335811584 8482164484888804283456041296855040 -460935521795295721264101125898895360 4374461713010438602900709350309888 1213517963889478145026223362801664 -996363118530164472011509574961987584 5707326759376097525465497783500800 6973274865647784953132593147019264 -402334334232263405553110820619026432 4403827236308790548308637356392448 4578646553811982375710772154073088 -541453874867800562699081472668598272 5536365064830264850955258491305984 171130457907920701681622101000192 -872859593301108492140495251852754944 9270849143464017967152738156412928 321287115014256755942576992813056 -840963880998640451842817537091829760 8401248720868628729161815022370816 4016681214711572571229907073368064 -578296786292862163794443188161216512 6892645176118329345086822683770880 2354850610438182787284718095171584 -293722782468456562677461428545257472 5644302563022238004493753352454144 1551365413189725675656167274053632 -200089568674402754479944661729280000 7096174381985930363046473133719552 5291709409089410465051284974075904 -288380732672283814245382543932129280 2142531900999561984425074330959872 2150004717444698290591192684953600 -769198953482235024936366267059666944 344253741730521057714847982026752 2626650357212682151854223579414528 -389288714943557337557002755764125696 1807608338364542424358074980499456 5892461856016505140965721872793600 -48869974591733662977647815197458432 6756773282342809088044766796447744 5324543221731969936308890438205440 -284884003305157585699387580019113984 9636464863744361766963041894662144 1894733269631943558154256109273088 -319205648875863165223895476174061568 1212473174922453909232765030629376 2574471599975238057340619871748096 -616966824052127531881753235645530112 4815686121026861432494259743752192 5618064761382376798824411298791424 -200199768355377178469809819844870144 5647128845710921436888579516137472 7002721547754762419389001382232064 -311048117461953691587467578649346048 7981674092781193337391983582248960 6804269986043546684199069376577536 -794136796574060971402314111569100800 7871161145940450221546621399728128 4117640088704363644539157207842816 -5306453852819476159101637530484736 3715643683421835799925804312297472 4903045514892127897692052817707008 -219498754218240674736383085045088256 3068709385574046550262319788589056 7415143358814279815420578755510272 -623272664144800290957230727298547712 2950695369373822435732724633305088 106610200625133095603431207337984 -396721778397929770537743390139744256 4448538638853063827825792959643648 9698166831389674850804766670323712 -971363050672693959395057386584539136 1919621176091498050783259593277440 479323004388177495435570912952320 -586793885746117769833979973319262208 6261861657470382193771210977837056 1003523485324281519927123272269824 -717134258089853870832063705251840000 5223666323169251904363386871218176 5804923277241488739450877055598592 -817102228805619294477395317571452928 7111291435465396048443192314429440 8061629666759995248803097004212224 -647592433964823713598315415996465152 9962996221845020347639317156331520 8349825416122326526094144182419456 -268752158053929332670388287645417472 6068846438215070413026479682093056 8485411869396092358159127698997248 -967745604221607497535236468847411200 2799456268166054683014805483159552 6891214169675775621788206255570944 -884077975374529671157432598174629888 3555749307663966356553484067667968 927165156851934569626715622998016 -954500151418241896148551961558384640 4642088657464339592510389629222912 9419827236991303139407978800611328 -312861015720967463289120674214313984 2400553455460156469140685024395264 5154413872590194216238790953926656 -195163234746408554672570115830054912 3938232666607187287768333276938240 3169765465994098918385274297778176 -887852400268007176548732038788677632 1680491802211918061175898846003200 1039444397253253772055108095311872 -558904140931561868696016983200628736 9180684475773610126828379836514304 3285822047077617205496957376659456 -52606876182297602290925361849958400 5186221619426944648311316938752000 3653911688428354922901201601167360 -421826510665425819392329796219305984 5105787529295040247740160999948288 3123933253446740746714054297387008 -414608123750632513530472075637030912 7788068787324561430041923493560320 9601023343053748831577093840044032 -900175520341769314855333985930706944 366036131251381612958547240288256 7834715450945861192555408681598976 -787792352960462248142896445242998784 5733417049062915085790871451336704 7990120610930482451698052054908928 -917515539644167745895288352656064512 2606235052539824026405168207626240 6001761655787445106003056139436032 -829109309769176660374930542265630720 156283294766221850681005230260224 2628655015450077501341749779365888 -12847801309172133347423484303638528 6866034831379522587154186458103808 8620828699641564121036751703638016 -272663617536933697171477741342556160 1633011664951351753868489592406016 7223804607277405069396368626286592 -474559877799112502724718686868865024 3077766935823763163256263572193280 2355426676916625580120621918978048 -701547952193275922104789896735490048 7136003744427983207348184637505536 3771180031988108992673559590469632 -874673372721488146249041171856752640 6330813820441919221039695614967808 91430950990345974838324637990912 -169720753053100341741093515962613760 8954704898964564208901478233931776 5499184663744895368394511872950272 -755573775962150776387323120943366144 9998987795859875467509783915921408 6309913199212606505994093974257664 -221602975699235375363899761677565952 8416678631068083402622686797496320 1764943335507711872430285514604544 -805404133024965976777669348694163456 4632035885378430983411767550410752 603346452971858110900827257307136 -69905760564914670990965870052769792 6452632828378051709714158992752640 5028305905618532728115897821036544 -216298684447657193616730331142946816 191410128891630431562791020134400 4916160943388712782149377385824256 -635529932960944372285395385087688704 2004855757676735868596446056939520 121135695769990523553241651740672 -639016711414422727427848106156228608 7262661095398192566515863193124864 526687393244538523779077620367360 -333811226035433592212295366322683904 442856355785455384964658913869824 421495448766221230379566553366528 -270353826528743919975667697857855488 2114615649843675765832485529714688 2527536221501380609064705279918080 -446794691246790968713067773263085568 5001232493537035128615864746639360 3298456865508498369262904995217408 -453538913075726513769439363000696832 1321209802755033848528684682575872 8583694809461423823673838769537024 -809770007132919072413296279917953024 2879852718581604156609468609593344 3906399109167398358150922828251136 -164357559575334364911723387176353792 212845282357114168113428946747392 5026363440484045753887348045643776 -411619340199726832137180463453175808 2444603334537331444022158907408384 6376720084437403824515914752065536 -328977624439189912124188891193278464 4711799234059860797540458773348352 1472527707999846193415708215345152 -194703933080590856048093925426069504 579180861622477193617013311799296 8235744354671155001574103351033856 -695648297088228142060880707765403648 9882788665672419011218732849561600 8323022866004825476598694301138944 -672739965334305347523482607880765440 8016092585577126575142148172152832 9069964054323832082617858854486016 -394374728163910412103414989126107136 1054107231451825817971907048243200 3765235680114530689412166359973888 -626845171452996397265479997860085760 3936758217850646567066859986747392 8494278351815550685412233270263808 -204015340123474727520204992356024320 260861853820741683642952451096576 7743188398793374626287640316477440 -74283022967320667734180080702717952 5150987109779234553762679219027968 5883653417419879903800400954785792 -431510913920432930076275040273301504 34311953218866840965924440244224 7735144794989277289829148580118528 -144326023293215663977180152622743552 7510706087546249992173533158965248 2189023283690649039414242800828416 -783611253420621096049741811624706048 2949349107704461581519096448548864 3838065260736234415976237087326208 -973803994427086983230541261709508608 5924129222836000733154772017741824 7492523170926348484212110248640512 -777797149439156256540807093087633408 7634662958911475535483449659883520 9742019276723454991348868354932736 -23862637960402087686566843103838208 189670332126050982840252072198144 4747478327381137497575657066987520 -232294464446289937441611799441965056 8882488613174522300517083993079808 2554619453426891622810315263049728 -613953283822756553591017480050966528 9007504521960300145244583378288640 2553055800607521312027588423581696 -277334069930310413865783426482700288 8556516136541225012462819362209792 5122100980771653201780746506731520 -935668430230457524265428126839865344 4587378509410613197158073713557504 6498006551092193585123406414610432 -897568330876319730832339881202548736 3714174499970924759950307639689216 6604564416846573556701140548059136 -809036119013650174597410369895923712 5887884942046246429868647312785408 5290187968995245689583369489219584 -341420986813278987822349592844828672 8326002372652050387629049280200704 3369290536205228387250467002908672 -337283066388408208937620302819491840 6286133159065476146742523529789440 9096683892064517452044454665912320 -746974365606331061111563720568340480 8256930163096277946330176353730560 3839599761136703193354397695344640 -884295985653855246095248005955321856 4876859203872866441268914106138624 8078413853202891623171148014944256 -426028320968536190275244533351448576 9828514687564688156223292712157184 2901222246536182100791456648134656 -639972247184761548651541223048216576 1830771562284076630549610494951424 2734463645726499153672236045434880 -887852217626729465359227210503815168 4736984400977246838149120517996544 8544425941810948354383557423005696 -507994874019665251335057399831592960 1242347181966046899165242058604544 9942740998237672465360014574354432 -921103288235253405656283482387644416 9317827250432201730176660937900032 1932151880389353603319594932502528 -396464716964508333401698268241461248 2415794076919789597605141724266496 4107173676819868143250003606896640 -752727238549538478591069833949872128 6957972875415715886688044706693120 9699501507938435037772563267715072 -332839807202531962635641175702241280 4927740170620888405236395966201856 1299176576141847681821939601506304 -791737534588215376114642582142713856 3040207255804730482503749359108096 2209144658960098135840102532775936 -775395319869420566051742928307486720 1917803565385566925381519462629376 346241664709113759777271022878720 -139897681202850509940368385855455232 5059459087448732121119878799163392 5142818547140592743682011180302336 -973497950550910673245141625697468416 2492737195607711553465835375820800 831622540531358147750955608702976 -470684672469584339198936002542436352 8858035326301177915815985036656640 3424345838767369358953352211202048 -341855516780849495303343095175708672 6497490060481893007789222791217152 2521561090070830014118387102253056 -733651643965878859941731152684908544 5833456749883281577064542368694272 8499087975316737193332517625659392 -192350778936149303288531097237848064 9426945076031599313602863972745216 7405504851358683736894096877289472 -606350318110206840644168226248327168 4849072579653133766969105649238016 4630030774336343775069235880919040 -546902690009601787654170898188992512 6154191579677167857892286856691712 9144263389420977685243095295197184 -750320606119164441963492156687515648 1279865581048751859738301666689024 9264104123799698605278682171834368 -913769838508293462210431205146361856 3804159434698144080809649913200640 3999939870326226695839363396272128 -79770415554652697694096699261190144 7425764988664555933121720040292352 4238187825917163578012838177800192 -156528338412388291777897664343965696 975732951316568556208931746086912 8802707612863468486653821042294784 -377873929855747136023274417425481728 2873435015955189798237629308731392 1948610924985857486147889947213824 -679875814817895123467325092155883520 4413198312604187580502705499537408 2596308783543421040607519720865792 -75006704375880536831486615655284736 2752236270468502240974487769055232 6660920558570701041025515882807296 -289863996010226646804685016799379456 9002273960958511228480372158234624 7770848277379098863614221774487552 -223454329337992040388794959095922688 8548126543136801298393159109181440 3246641743396181522266372177920000 -467307245655805105867558283598888960 4217306603279585520456651088330752 3537901312741130051511641310232576 -507294307332103633199071115750670336 3452648476217419305933070458159104 7829525305108374195542867427983360 -925896652488450124396356408923127808 1439029940340325333525795388260352 1449512433575983902243950136655872 -597167983882915940125559165684809728 9914373619519214445289731983933440 5778621529431784218017541792989184 -584690717027736543180469688099405824 8929415977074294866874181410095104 492710255869536642764992877166592 -258877037651736866615839471353987072 3039515708041876526060276683898880 6755351125566251471464814463680512 -103625941757191227798689195034148864 7819779585696606673264749022543872 5143867697252076755696087000416256 -831921688138964484256325016884346880 4999464686401615926746488705646592 2447195318946155525474596471963648 -727731950542254430424479105690894336 9993376887445248044049974928867328 4093106103536110802838577989287936 -541873467344739269654531187343884288 6924079982306850116850512019062784 6766040393405135503019704707973120 -490534648457297476378506054594461696 5357586321962516632100528174661632 9834804602257407678396649921576960 -826092899543661930949792314238697472 8466573264035053869512105100574720 850506378058260747333289277128704 -111780637675051535289289154463006720 3822391342923723343637454243495936 6188528577475418888622047265554432 -99067286216679699915521468053585920 5139496540160646824627504297279488 4415612396947454397300113640783872 -80680298481971633008274409649078272 4754725398860714384701738631299072 965998356511683772636516505878528 -712898318799066107411003010407464960 7802667936368262154528710109167616 7358348650931017598994657262436352 -650973849793124625378943101019619328 3969058212076692384824952092622848 7485082374388407025182933799403520 -677761108139197471374015029984624640 1763159479305446542155547339128832 3093274580132872442486629293096960 -770895687706076727414520553131737088 1752360807452615772845799834124288 5732368199803756085476608224264192 -491195584311259510972462697132589056 4790187985274474591644717311590400 3314133391398533412626160087465984 -469609100805196744531908304618651648 4704423280143905336174007103258624 7108164877378846861760878130233344 -310524682701128816480405080915312640 3997132355292729152723673751224320 7625376570529665581624847748825088 -450738475529431859091222214234603520 9597489001417449922313997728612352 5081016614642326163247728227778560 -339036132334280671836699839078334464 748036420951329270007276995870720 5406651796336511886036199366721536 -274206512301754808183301525532049408 8891107161326678563359750015156224 8929752922010501987606139401928704 -992091193912867946565555251601997824 7230310223017630910515760588652544 9717150856395357251968996061741056 -647935404294492787886254277080907776 5459860530771941907941443883761664 2312444233569522985337674417569792 -118614693614063189971119911039139840 4080429806118366050896790052405248 5330025213977691492064552317616128 -882301953423676935300741812719714304 9141531035756337839658520278990848 4536596988694007773749600090849280 -449279239974199698324370827908218880 4636078652452152630281931545640960 1426314153442328158992254149591040 -564993082398072592417014289463771136 9747720456075888120532197437341696 2361271770047885576219934995775488 -90743585312440904216410638004518912 3667938539590661625571723001724928 2028174941009414096338044816719872 -160754325104588244982640399416819712 5886958115064080486199424809172992 9053557217220001637756831289835520 -911842610777814720473036446727405568 2909494258638770866354296566317056 4980071680541716109402933223751680 -736340027177307344361461936396697600 5909987703958317669556108820217856 8496495562678513275285095258783744 -868871881703273297674837910718775296 6172004808476768850052819498041344 4392154692518658708180074292576256 -78298118937805131127566767428206592 599577681022009584280659568885760 5385945219488351305956581179392000 -665127829578810223558318253167083520 5128861862213721611584741148983296 2032934271194470277992926903533568 -540585929811026217087033386081452032 838793600288099064602365383409664 1123750233023170335569427812057088 -705706670337237400814426218754473984 5774818123392389492009242359496704 6758265695946939394636535635640320 -473316900470372629110514147104129024 4408987132172283014803398900842496 8501503350609022693924378958102528 -579597428903635214565836269499187200 8488229368435621898710072720097280 4325804924743164647880744044068864 -377489571119630204383918017761771520 8206459738479687033374132012056576 6963619813274896025492270870429696 -32004476623177069867887759978397696 463017200616478737974693214552064 9482176886356707859123192618549248 -685302092302870534696154126914420736 7603425230358618564930113848213504 4753527441190554979930333717200896 -816943153262700156958299279574695936 8383224350216519079884883891322880 5589512152612028770191688777859072 -677960399859911164046761794488762368 4909076327664906601974289911513088 8604439917977459805043832521752576 -762164127041591221678430563032104960 5354013362722819995109655788388352 7486294545175366568101241879003136 -542603524860568368951875618536947712 3094572049851292332074082307670016 130388955928072026186476486131712 -403440935616131229165489073894195200 9523642298300483100557916038496256 8878825736052336543711613992042496 -26895973131322287913473866941333504 7957462613754107446644965828984832 2616623349631644172380797734486016 -306305499819443012217827750544670720 6487423133587002999806742912565248 4956320763581583927059257736822784 -194591742414703266464610480258285568 3526271752355467337798498767601664 885587207890325074785929579724800 -746548972401355532144639884287541248 5422411677749561672561191393689600 8159740292836401371347424102055936 -65728699270118954403657864118796288 1148575717649165576969567212666880 1707701504942617759198843408220160 -837758730185360541656020742729367552 8966728473430627906552977942380544 7750290119697565992371651145105408 -118793212616013712011762379364761600 342429204848360686633520719724544 5211281448430965235076088182341632 -470467604697246347024124361886924800 2492513203709087074930815370526720 8524769916534103665888385017315328 -482027536439836438313988527705030656 5110227785746929057278976222822400 5918237841425336848040646271827968 -743772652048664332999409535478136832 6834197932123869468755589634981888 2644955170180712534236029144530944 -95590535202512203886301400851808256 2851925464091088047299184105095168 6045996795596620053388889243516928 -51481824296653489855932621696008192 864251095197946404026941777641472 4124910348895604993980730225721344 -796235743331051449044278805564227584 8149332839697349381554633430794240 2128981268078383209445493915516928 -409002362371722623286725620961116160 8926738500340088210835873017626624 572311032023568496246451148423168 -230102101102694202719426732613435392 4941190864712616348553953012613120 40360156762289221834343643611136 -577764583887073132251901700318691328 1981172094969779862108907027562496 1385593582099522437738127196946432 -226263520729213091294037579074109440 1737442245434283460381953849556992 944643967357954887300595994066944 -93895246639498266402938187021287424 8322896014516616907468458048880640 3199877813139221310690047706529792 -255460684204721059260182209251770368 208424548821625726003063096868864 7611515698123262825416866356264960 -202337963943106490417159661080805376 4357156926514524859770261548826624 8130366540047163588140523948343296 -301707976536244939026221163964530688 1354390705605425700576887576723456 2869840780732159150349983447777280 -963892205053403029468706806593224704 8233294646141647088314824221786112 4795973769657385767022703503474688 -455273037641340089052217307098513408 7541914820289184187174898525798400 6319447443635221979280481525432320 -975173622673641869687045934561624064 167262439425404991444310527311872 90112039522371758272666218266624 -195807698358537520282828022560587776 5840052834611848991903840139739136 8637380162739680328533662943412224 -186925511898865846529578575056601088 1922098749143301819718867198410752 2542650247831160640349485261651968 -224446993988349756985187159253188608 7371087715528613127195425341702144 7884210055526397764305334959079424 -811097102504707803078784932133208064 807908759884096652181221203247104 8101869060064979419346393402179584 -923660310914196640748341058479325184 5618955291800199226442208675627008 4860036669998777587098190964850688 -816125983186819308875270682216235008 4550655388488353472187101192650752 3988123732080055840088081058234368 -468119546165670552346956971869470720 8674212742931292524456322655059968 3643479987411688136605399731142656 -652437441490633436255299635110739968 6128950290822512720436057862045696 9138138148721297396758170264666112 -785291113614520744894338574774697984 1655563000155667643917745340284928 781430507363839580609291000741888 -769451750479084415067569447323566080 4307959220179263943662048592789504 3760050084158812344687684818567168 -409262318496679316463951731520176128 5240661327641250047503860502626304 3374512464062020193116228119691264 -812431189383107724698925051668332544 8865522719679873192323405093797888 7412167097285957114521918749278208 -640577002217883755632261830319013888 4392010602212173260079252906180608 9035969807111830655039250557304832 -49876735286530789079228408009850880 2844919715368759991557410806300672 5538585658950647586831592174125056 -311296482256059027313737006772649984 9024925288643485355218046034116608 7753100044758051638515427325247488 -571226193207345272110961934091681792 9073990919626460519927817619636224 4060565454274308391970585756827648 -769673798233323404759203798090514432 1793702060317030702672100940840960 7156248414452977745855572336443392 -227221851510295723322318146456518656 9095864359921632560728430115553280 8852346181821622865515396816961536 -155220905181266822147488331736285184 8809213504880724434909243413364736 7671996430398818150819959377231872 -147011552458673731038231727500689408 6428556576177602213840616251457536 9414336049733294672479477146058752 -927098614523707845778576397643546624 4555381799261657389357837458604032 8068620175327899203430403857711104 -307031645151349664422565730781757440 329932359460158329040455348518912 5844574569195152038275528767045632 -660187768274395074007743654407438336 5169639098890622237445868289523712 2257059719711611992380692039204864 -654954643794680588745316350474321920 7398805662512462476869812120190976 2139597775418158628298709759164416 -518249271650082693887788989808640000 2381432194202546395956275847364608 2890384174191035394315076593778688 -962333446401395592092992981667151872 2643308685316477499944022826811392 9635535602159918003848721402429440 -771775506415771513116647393771651072 154977931745969548860373803728896 639420564284080972325824835354624 -372906073645355257392779217122361344 1716552475587232059516598125330432 7891914749462965377943288533745664 -421153263185399764470109066412163072 2882175893341488988636074911727616 3300689601960157356119047813464064 -797240388520076066038058719236849664 3214252402312177420779351498031104 7521525145035094932079615770886144 -827602028148289990458019896864276480 336522919472326071927526735740928 5944699378605468789676705706934272 -695665095972511067171267095876861952 808842922957416307858702430371840 6058663062910166092897238181216256 -726822508813282223561834497912602624 9642648073092795930074955380686848 5368546203116068387855317333966848 -558238818110044164874162985230139392 5734660914329456765341930451107840 9099052874671411591747641278464000 -623748728204930497731927350930571264 2005570919328241406114555704115200 5856165974095335010353715538296832 -126790253651455136231998710932832256 4781023772570239795942881568489472 958853758213209800757322757177344 -468634859971347721625343622631129088 107078321409067325407528008810496 6268843529840876319664228444143616 -625690548378346307579393237942534144 4988998731978424195009743484354560 8835917230590132737739652662820864 -999405852390628145035068388273029120 9369835480480182139227922155700224 515073705398062780825707516788736 -327894541249369224042277245412179968 9836157833148753144546496297828352 2333043748965667749689582510145536 -410185213415349679010377797384273920 5004343260363309489660661201895424 9130723307029737806817333568602112 -876694551322627186235419298384314368 942412934822649390502813991174144 8917731748414189392396712983658496 -509424691581894057895422958061486080 5652669438990157431073526631104512 7013519028407951219002259443548160 -373402574121772147302139025338400768 6637137199578798169469711498084352 3230925806252390601294017692958720 -247140302774995185289847810551709696 5273428447897925449022728394768384 4497492299186123376287391900762112 -774672874329947611106162009375244288 9275585366372306923040919164813312 5902979735550512173788640202194944 -56328114001806446199266315566317568 3527024274393880942095965410557952 9897360214261201674669983503745024 -983580928502126536974923303391068160 36293458081328758595323831517184 3908141002897991071693492132511744 -241615362349617604579880221443883008 3588328691144806279518352519987200 1275477200557098197875696265592832 -977961929245274475488632772344414208 9466591273102465212523569435639808 6811387240245459075799603228966912 -648898170503522751660024881964122112 3631004206142432776843890790498304 7923724028345023782508245458878464 -736265922163659592983140740871749632 7528853525827457003303370120757248 3422842824034508350920970725228544 -889428426458043283851997612282478592 1466680742133599619297567580356608 7955849914073653359568651487805440 -569152719893893286596471620007624704 7573228543698612616579889171005440 8274964238424975615148988561358848 -352075945374934931797114446510292992 6112917171151003844959916198461440 9969871132512874507211459820257280 -937015456104685207481450769485398016 8565386608579360808130406296584192 4755997782557193805768237332299776 -745162743396773368596155845656444928 1919579566675142019960013202653184 6262574533419563464702823925547008 -89712596398282585862881636490674176 68971377327588607423468277858304 7652424138275594507812457840377856 -301831848698425240871264297813016576 176658328518121644094628038705152 6441126545881671367811408219602944 -416575513373562676425079480351981568 9201371606483654080063867281473536 5039285005783748707030553310789632 -646635738385865511645533803426873344 6157827341433444639771241530523648 1994260311403494081220601018580992 -848324902954606604621888173228687360 7677326867265623790521231870001152 8468585573029778439258187606523904 -824994006896674462317983119330770944 1789009287431753372720018988466176 4050189552819708692241366374154240 -218382732514381289261616008160870400 2862173210742822801951564333318144 1049750995192032280839714146091008 -433971172007791210880184792549163008 7213079159489815000316143986540544 1696618247598622460122607451635712 -301819985780598988351272954032553984 6725303946470730381400342184067072 6070984743687413944922590672846848 -738043171398640702775715771615019008 1909923014541261770620522847010816 9003891133742451524297120263700480 -10368537430989763413868374181019648 9923921737817164687940525588742144 3147957910620601003854898583830528 -537189778918619967892415098367508480 2238337258855850662805531489468416 4559206524330140699886007009411072 -764003004962927406398408115634569216 9681437041444813337649859952377856 8175613722886856370184667671822336 -157095149804566604584165951252987904 4740073019943331340511661864779776 7124110409364157829684786572034048 -133271629878977841382110907357724672 4975056686949543547905351887093760 6682196510556552560766927557885952 -286986088275386909706214268775432192 3453824692733913419418289806770176 443974006605163347785784603181056 -821473855791089192350582505895624704 2637367928564704121965903158968320 2626497289863122313375052067766272 -610433294963328526360418225819222016 8922743786978343950328816642031616 1818323949441855144230458058866688 -86723904087885944606735497500295168 3854948570835348779386825393307648 7968880765167464361466426594164736 -864458700230122936907338952659173376 1885913661934470077759245091078144 1423943806160546474473956136976384 -148187365525173470113325995729616896 2154193155864806546540591642050560 8794289619248941973074118535282688 -940794637083348872137844914701467648 5113588864739162026395571566149632 7257764874307501823137986214100992 -987649030125046029359116453366726656 3586828000503411048076656859152384 3130250335708359088640779811291136 -341933491808174622981183421638770688 7507219874796014025802616202592256 2699688537626218543992526535131136 -235044691350893512284190488269946880 5294577090934262900699238527664128 2037406070173571494705538652962816 -725270612236883788408139220122599424 8507168994763152653222838563504128 275569381444963439029874180751360 -960572081913917209019410667869831168 4470756443058705012931490914238464 9315035188865729474733276781346816 -451371604827514885730354112487227392 3632605968505101782150677746679808 5030489481645885483831210903863296 -915215162505563197241683446574612480 2390025570397239287379834542489600 8332690627232898130798141329375232 -878320791379557872075808501691056128 3932501490586700364569311673581568 7373036750731601988913839508291584 -193531180016727059262139597718552576 7409248336183641984181986610118656 8861468711383631039991071050301440 -995166412973925875815223033694519296 5045657198363065475129033306931200 3232573153836241024020978579013632 -712297148087672578719545060537401344 8912627443300789068720809825009664 5463005870327529353950824562163712 -351659231944294060712682234226671616 5598910434865473049672341992243200 9231625934760595946837426617450496 -458606181052200092471251910667534336 7415976413381384388896659718799360 3385810073040698143732960000475136 -428292526304278829121381815841456128 1522175567219039395889853329571840 2573714879506171464420195460710400 -200659131061880387143676069962317824 5305232626026105656921542361088 8181914163534221037269565992599552 -967481749407830222315041722608910336 2303509164506316147054703091384320 4621456239522705922175848065007616 -204905211882680171461344546365898752 3979496719601536130768183979147264 6943749420945313663782595118235648 -663302045694503843632868424490680320 4742666843354612112445764620255232 7596247589771940720062767418048512 -970267663976572541827854544391897088 9245149556721854083455482211598336 2139449248793130153291208563097600 -988487948402091559440128412854779904 1335353891321099084917254851133440 3668312966186031390453302361587712 -893393223451011670452844998005096448 2997219399856241541154778363461632 6589500805105178429052027207155712 -60450159804396692703274080873218048 6981311750483428002164123809873920 5225946658923997225866068213366784 -372898189311892538484718722445475840 8692217974402438876564375721738240 5867556362339969670615365987598336 -500783664477964272531864849890672640 8889961051989051439666139957821440 1548685551003820344776407648305152 -728635254791101481970440207989735424 3932960207546372523280062484578304 3932758699696989113222074657144832 -359210981477603639912699264738787328 1914108273859313778307899756380160 1705408517192295943038440084340736 -657990161481686442394768927627411456 6919617617832128789450915684810752 9872932656555999703886483242876928 -948406056218447065116580854636740608 2318882180641022589980489730228224 1082763027222935715124109146849280 -644488030322827469500344785499586560 9285501869331891008658554228834304 1501138291523769785352207787360256 -361760221958947162293095701193687040 3258657846684988739831873014857728 7052723836325357458916791526883328 -110391572869484199755697031858880512 1775994024891071435378606049591296 4979320768775105869659046823329792 -347626527383421419281878815090933760 466751906448899471686935066443776 1481398468680655264748622151942144 -181911495246666451486151204587700224 8448797507737375062150666761797632 9133049076053294816281234447007744 -83465619426496068374651410566873088 1958811198263371529530270478761984 1521806705177424554111747250716672 -886210994843978446242305233156833280 6056090699718903406269116941598720 8054631031502993447158740275953664 -586652603889936239298935939418554368 737759336195795526682034913148928 2206866696447400041374762984800256 -936190396175326506892189751956209664 5923948565792961909391402932895744 6092235146085194637997456480010240 -987069565284312517850828811129585664 228735108424907670572377208520704 7386463041940934417815848588673024 -677617308844457869243060455045332992 7413962850222584605420254127980544 2151478091617237114195652628185088 -982842534879653341429391377989369856 2294166133761501812144548819763200 440151751475688017965349603377152 -579838694840187336062627537903157248 6865009915331801001595191861182464 5264503467246737791818498343698432 -836712784765453940637972276656996352 4653495404941368926041644474564608 2770624601673355018806818443886592 -502827901524882708191998168788893696 2837009091078118022772343418388480 9485876839879741758891976281817088 -219177928967702477218068066237153280 3505134867914973246182680661327872 4674824052561317705307816579825664 -887442758094844220637799832946212864 4910282829492124614606391114465280 5121251571628767595114720967786496 -259947420312614144836288734340055040 5468238264226947219682013191602176 5235817346327547951734633076359168 -863463237199141683454760457833807872 9749617799555325764868421747474432 4394438979502937682250038658465792 -545191024585275208416371513283837952 5062224205520343513276062868963328 3105702072854673383667524008148992 -715343167532426858416283094549004288 3089112716734258053927518947246080 3463622464633572220599258136444928 -785443741434650345701460170218930176 9246193441527707838282829110706176 4345263428736893559200332218630144 -964535599792485870008670429477076992 8712121164871520654770189832814592 5070058184099185143436579633627136 -804044404776595555779867682652815360 4260975295351382791650308431806464 7926833531849982470472191763808256 -541409242742371089841315592691253248 4236286867397242626212979458179072 7475059146165859774784246468575232 -272246930791560365879600276639318016 6095544172589536904671954202525696 7916134611537504875888291847602176 -476343550221750906302822051643129856 8881245357321652967055883159732224 3760189658316057586885728101466112 -990804209983262939653910332262318080 6444702742531243280557724170977280 2011430580235819624974267266891776 -424977724664249418531056467635601408 4367223064415669781490325826568192 2081367026121564950177091491463168 -870215972865855987816189031163625472 1430958950998112333063803421851648 6413322870132759759707566560509952 -511799494246709142564280789561769984 9229995531247524556435173750603776 5269150430836792865580476631351296 -946910822306799987816668347131494400 8155495126117763813835686709035008 5609972928942844128831418935541760 -932707842443246430666880437440217088 5612684516288446460202243351117824 5705163415428194341481644063457280 -661277724740114625529743432791097344 4753478655344441180358094025129984 6953535371284694996177909324972032 -561329382884665993521757557798993920 5235560559341833604005176327274496 2119994083562851271765086720491520 -713723423963613709686134488512331776 9351138358952304896979564624871424 5499240567712949638604580259364864 -866609288109590605091272236306792448 947325201927774697371718427607040 2360231884017948308005715766673408 -991758054581194426013587360589021184 8298836327152139219349868856213504 7700410095948469705464916647870464 -843552828213791257358482042729267200 5140245775638605143874752164659200 4770601103852054574374140512305152 -510526110107722113903055201242185728 3516751704183388067696749729284096 3929497978606366929472712723136512 -995493631966846334314401971044352000 3162834107961362663230997247557632 2847024017688107749600330956931072 -822808890856751461247112199947681792 119726364464255445123994503610368 4639982609787082675417199495086080 -347192674160814517571377605396922368 6170081703544869835162724417404928 5688547399798976342888225339080704 -370573409287735319779036479002509312 6383104347226329193047742362943488 9512280928836858280639170040823808 -389159743028499908984191165914939392 3813004461554197386375681485570048 5093714648557123719317546516611072 -365816738075966399770296092685500416 8638433219586732776821411004022784 4045978954173773461918314901012480 -251092963883158364200965104132423680 1225796317520164394352414824595456 484726998456862615555680208158720 -58924639463350555128986378182852608 6456331968332054265568029422125056 171269109433529957189122420375552 -542370164422731372557527666896404480 6934130672845797492412958589845504 7608608169086230623492338717032448 -716897542442082199052561028755750912 2557944057722922725368332157976576 5435628165601782638731457546158080 -997040689032376375454203899570814976 422212650523133197133070995554304 4566776843398247654873349448794112 -587892670737227246245170477369655296 9087135026214378080353530780057600 8322035574411397534680005310676992 -31539693201621795038589817051938816 8006388490999767511287898214236160 1803111232341874635803051528552448 -497001577462798968118201276891660288 5176133493327004802361946443612160 7173177203919072818068573015506944 -647950013457734961493031358891556864 3586849006314538081666069279277056 6799873475810382601598762892656640 -312707853616782673739283493818466304 4756115130471765823492579022340096 6287066470180618769160448197525504 -634298627163534592169461002545397760 6167121076667844354970490960347136 1585311961349266072102906361806848 -203365174854228225882553620759576576 5772348980934421587856712657797120 5528903844267166270173677050920960 -992245834797971321145959130911997952 6461033615458617418655786923458560 9072192101151004711991849309437952 -279982095883039543482933093989351424 4340321363014250614542497126285312 7784059696528010186237612151275520 -28524075961907678824063841272332288 9035966297925549209114882311454720 9711891183229742411576328060928 -921021690855965749967513606659506176 6775912608197381137761792994312192 1254752872173950515500314255163392 -79663143380368168697839310361067520 6547818373537175174163212802195456 5379977631356728876867989517893632 -44110356553221935721930141565190144 6093223283531976339231844599857152 4372383899777061232889172494123008 -40478281008968505450610848130138112 969443108745521872728806788169728 4490787774516801672009223417888768 -509099216826979823538648721465016320 8887170012803586048346145440137216 2192513975805186065079450030047232 -141002385922841055172531625524199424 6068273669058521980992133022089216 5690617892359253437298442059644928 -543293764456572946606985005871661056 810680853282517371369361653104640 6500818970666977288679898788921344 -723345251580330714408043985036640256 6223942003464869982120434693308416 6885495278781695949059678026072064 -301673213278785128030414821767774208 5796067084337001061412499273809920 2799257026100317733823705811779584 -582198355437708712654327168047775744 6207673289907875772896066756673536 7488695107094414279199345910743040 -508567795291893512635751407489646592 2495159854788154436055639040983040 1958971940945550304685009749934080 -705384495271587391604612277955723264 300009569622863680910825608970240 8577619292501555973882170321141760 -537088055815322096079714205632036864 2503138238339657743143215153807360 8075233472695250552736445559209984 -615754596880806408266351289781190656 6571002592506398202883950803681280 3260846792423956630534391704059904 -936483997614432584609476440917803008 6943145938248638613702620284452864 7602350208283861715968507397537792 -793326681340288975728847860730429440 3059541976901491283105821193404416 1395259180345735757161479886864384 -529750431977491128248325022318329856 4103740343940410052048541301342208 5466683969133673201743171212541952 -578002152791199123288621870164738048 7049928907270591601510655545311232 3398308169540562925162915134701568 -616901638804379003784185270914514944 8805428392168943858440141342244864 6707208345760617152057713994235904 -762611756566206593765147419944681472 3251264280976764313709314400321536 7929213424146958104770550417063936 -611028187258368253649399659976720384 4157518590047848603704287794561024 9705361022998473286300641280393216 -94192790012738032770960699110195200 5854260637564692364983607740071936 722172066571580638802826726735872 -521402600079610913893589062611107840 35338835646122684593929505996800 7496313866662347111608513879605248 -588273654173224855418508091878014976 687580515286945790993175242866688 8239955642561460621674239739559936 -131063118015731566961406396413771776 321360799593214375905911749214208 2947642624847507048498302178820096 -520292616030409084935774573571342336 2118325768557015901913654843408384 9331543851347848834631956793655296 -270380235274314979795430423601872896 4801566642550967173177021864869888 3620927849399776519628055317053440 -540749302300735748799584857892061184 9712351470206144630907558877462528 9108553516542729846444476661235712 -201816812759162561932383494189613056 7562635140583190840966406666715136 4086449245634932902438263551164416 -828084694507216177282330283508498432 8549669633792495975090951932608512 7907479042239905338588013638189056 -113777393910325730989888017822384128 2410593176397002400370717500637184 8282070877684307817564741308514304 -300586509887137577738563739971485696 4649752379025927396819686475694080 1506506782678467521689582011678720 -857232019073994599751100912008953856 1380568991289164352251375332098048 582511939290046043287582058479616 -591504824364000577776446404168777728 3153142883348794632441591983243264 1284635475577597290382299355938816 -634691411561864852508583168651034624 6273662729037373370605144220106752 1868698371196468459446703304474624 -858970732263558222057697453822443520 2488696448720719683032962239037440 9567277509093234271767771765276672 -570508966726529678095184157340598272 3656224496894986085704701862477824 5575604010986769200455157335195648 -189712534750891868893663332795416576 2093852708513743275233046685548544 5106785675323144239287568252796928 -569250782005122916571968369535746048 5284500691145850916938801804738560 8993554913713813526562856721448960 -291736747282438422961824171143725056 2570134079167636097089880159420416 4553727514740138429027168938885120 -350585281681993099019211824800202752 5537215180083787664664395115397120 6872542504091419945392742474973184 -499966935905366029612440985052119040 3351001568148681388454078532550656 2537049085534674311350081153925120 -311269957879523354502354142645714944 124259697982009745363992255135744 9207381255388110009165306690273280 -175695251262381068609462693523357696 778374104751286888748889797558272 212086868733131827820492406915072 -206950885540271973785004654483996672 9813442625310783681527135200083968 7997014504170322303507981603438592 -299666133787029051740847122809880576 7657298400243408592031164210872320 1654939595389108781387026953928704 -457298629125170326530391888795533312 9828097199338353872865143528882176 2697262487479330886866008981635072 -362672227901929553838093363052544000 3972269112730538421849309132619776 6572555352501950377573017951666176 -996158228203004451493049875359072256 1988606875597488640614632687403008 2918732542709808746659235382689792 -237432243309979712064871677929979904 9433499582023926137937981526245376 2534693732810400043516652288999424 -314184134033072874006519943807369216 6478479021463876673966876991160320 3936607000264982494820692054245376 -292004377949116984204045320158445568 9988344771806426361681205585248256 5454693671791292571025151929352192 -322181754748017650635674728609611776 8562535970554664983596252964847616 9878321760473165455656337744592896 -893754425135625594082347723752734720 9468634898946162157811955107102720 125321745685987278738959034744832 -139554608127446546904678393943425024 8864082981791158880772274320834560 7563408177238899262915595741429760 -734045216600126154865033469075914752 4190129551392631455393559525457920 8315709168156211346294676545077248 -764901114223053371145124829726769152 6111596296355906165124045706625024 5141535749604478836959194854195200 -76056398658485081153911401851387904 7695815801969006343993402465452032 4254717781248880307309804014010368 -497319843104533949460542139804942336 6215226493034158466223147453513728 396736757879683587777088846823424 -451309958506046577107940757521563648 3701892288755250948336347603009536 5635168486728773555080198174539776 -101535016884429114661087470143143936 1233173178649702478060064908247040 1347776715941290955427545524207616 -379442839087921195541045117737500672 8793812513485345077779129958400 4567834794025147764311314153865216 -53129579142683975133446833971396608 81355860621416217027335103184896 8266229952630054734360827215740928 -342847537501398254305041820105572352 4837463331177614056988630790963200 9441303583853394085645423527067648 -38967135969487301217325556369981440 6936377450543211964541203153682432 6913375898042316730887529796993024 -736330099113851684837869716598947840 3115242187339978396611591129792512 3385340457152385295560632447270912 -841944222517708391734060360893726720 2864130770184193042271818548772864 2234303002206661771484167539785728 -693469657285978252530219853778255872 2219748913457781513864207105261568 6770683629839696610062825099886592 -370732401404972296336310167175954432 9658530653661571470869923335503872 1000662293717233216312183512629248 -165291118963105848529289559781933056 3699081157077070904895459922280448 1738816408410883640336040616525824 -895849700165453679210509011687309312 7469188451243536513118149181177856 6881750206656021402009142057500672 -298637686541624820709465740464357376 1283075379490890538993845029306368 7922397088489112836393396663746560 -990977255509498525935070696750186496 7285927099455979126519461153079296 1704666022205669198029701611782144 -957371053076300781235726517780086784 9284265682450380983618902272507904 9450332512871386695724262246842368 -969280507302024272192542687570690048 4496304528229146629948792503271424 1677500676711566342357439884558336 -121987449758213961822911516398059520 2327228947249958529560710614089728 6743224620457778927286197422129152 -366982659424304539804641905730387968 4168799035538322629149050955366400 6061880321768125202906391620091904 -316599044144736504240474017237041152 7990608504884345860230380550881280 6576478845118920644016706122940416 -869676107263311471924740943987605504 8299645050958517658339120284434432 2007834089990581015510319334686720 -529578526169690201828412798370054144 5938325495923650613337418719297536 2701680651326437012071279784624128 -495165321570955274576386847561220096 4318449565275200318470984644427776 6005293229684826262710235718221824 -88378558895082620979335742298783744 2756790731069635900374348627705856 9097767254140971605198693124276224 -14119461300337497325074082049294336 7788850070337419048291597065125888 2386592064042534756368621825425408 -760799020553349917226343093906702336 7899265542182894237798962051416064 268029944735615001098325032173568 -627341020794649314509430909556490240 7328308941408552643233115621294080 2731442480512339643675740223832064 -486684381982316647291690166769418240 8546078255296319276953967205023744 3239447921708966489945446218203136 -867977534496010748061229638249086976 7202772690532313535707223364206592 8462401318329244582624427440603136 -881553765613698086170761520440410112 7433488046602194127714066053988352 6869832579220615435088369706598400 -820760329407643301433241936326557696 9735270419392826161137028490592256 5173029038606676799303762764103680 -631238717165810883377221648338911232 6122474131405925565796131704668160 5241804346864756831899816961245184 -866138440043174407968941530746454016 9909256267913363066212265981116416 463467373419089694751362371289088 -233116292466829116782083237308530688 2278406464212838534281615571419136 4207216045629778843515764978221056 -43948280508089099222279949165527040 3177820966532557550776234782228480 8966757328049618875475827774980096 -783381182707086038080457951095554048 9141285216768526031630290149965824 7053614096570971756305723242315776 -767146946962686619405089533700603904 8271207917367756510563792653910016 5530926536421409597026634857185280 -62212545924273709260631169633878016 5039069502786778832541656574590976 2089845424435332359347513824641024 -746581121604409435839796403318554624 9872419538441679620343680622133248 6679411269312109635018903393402880 -116086239346584500358280775234224128 7765756243578255726203891227820032 8621157257029692544682113800077312 -184469917115921510346534149142085632 1406592894099035341695979234525184 8256902115941496344415075007725568 -132730127694305019781900515447668736 4344355906701911282824615238303744 6965066664628934861758561303658496 -6646035211927150323066966938484736 7701415235773849754747810456010752 5380425033368006192718765189234688 -63238217174050980561282252582944768 2553474011810757313851865648070656 8169016066275627677256731087339520 -682967140533294656588913660189999104 4556934098743493076658656943013888 4546906946919114031484785022468096 -163252777414872502857380045791428608 9535924506463743617875284487831552 8532843784126047902912586438410240 -276205592904151237899731058378670080 422582505713855005302409259909120 9770387435278423402938562515042304 -333525444214288843888847532593250304 9610467973498612338123783349993472 3412055401113224733219268524507136 -948574736712511252318929743945662464 9654067185526929404842425742000128 1047618774699179820942190002044928 -464589860344456460660791892707901440 9537513559971230049544451299213312 7288748697176786959208033256734720 -257792505736144785560538423578591232 2077151525986755412557948117843968 5250759064773227499259955349815296 -480039903167119442472261737789784064 2397658702743365463006597657657344 9702067052411869893409897355149312 -550847905527577286021746466865807360 9483567138393494293887641968443392 8177883739894727109515197647159296 -592236967635391165984391026844893184 6162677412383250871157963320459264 5934398173349397812932198075990016 -142035975701239569190305370480836608 3944975913285895056339268540563456 3195244534687190689073152489684992 -602826190410133961270148552804270080 1847300740831700874309774776205312 7793061697469191190095735172366336 -276491644322394993980389911777247232 2858764247013230049398111474810880 2364091319954261774679117806960640 -431896049692176998188253857336786944 2697727106786009236027702224355328 6763840347634577760562631975895040 -673116915900596178407986850816851968 5290306069118619323505996673843200 4021446356651499553279423364988928 -118128833681487392799199203602464768 5798127067808892334187421108273152 7035689006184055395159411372589056 -310530327007959682766482504364851200 3476967765852909910770244516839424 5645882840589598631616795035828224 -82914385924619295072388213286895616 6253586632031956685379848015708160 1370081113079823600602304737181696 -417799590577480568124276720665624576 5382206720483588481927987368820736 3931109153950537672589838318043136 -675897718601363160415727866729201664 8859785288257061763382261667856384 5062943620857908060844336365961216 -978095736065993218888494371013918720 9498894751939504489171275244109824 9704846575545994161880700949626880 -193872318237760410854686391938318336 2948015567099937054590207061393408 1181892384618196213591632550821888 -584014464135353741145059464988065792 9364690293583938549201175102619648 1870944349138700498943450789445632 -165641966565959093812360126778048512 3804989632538394704535069743120384 3514775148356181494473035563925504 -600718654204509774578020975535718400 4431926298176347068820617636610048 4621362172360146128876077106331648 -10241789897327168509559972472815616 2066346862798982832063265883815936 4998519285158188051097112486608896 -916902734196350657185470788581457920 7430757840501363495147972532895744 294926142943512971855777295761408 -579454103622397007508957688288509952 4509093918427192017511987229491200 7028852737694889832653561043877888 -708727875753239603191939625681682432 6379729951569436461839966210621440 6192013000373781056109835758600192 -405645441294938394217123476813119488 4827645410081618174981526041657344 9077517053294752319355370663313408 -897013073554890771263320369322262528 8674897668422653019200821051523072 8629926129367778880482789344411648 -124919711275660556674051748462067712 6627344689932356331178880502071296 884238247551304138915580540354560 -959102376806219369382976792597364736 5614746595121152489482775276027904 1861642036014709406042581186379776 -781776502690027558385256830330732544 7339111613641499668478306725920768 1949010628697367032909476659200 -746867343853769104000306502619365376 6367661639183754595833001235447808 7105600631563455894911991731453952 -790860433288533490373197355798233088 9075173457562123659872950957375488 1642799260899268413519871552258048 -54091792052541926760760813373358080 4268198521159243206859333398691840 527441169447028206497995803328512 -618368694587444726984364688742023168 6584403486080027805196111499493376 4035588457315151952254341688066048 -459613286329496074426138176543260672 8199132989482008784049643894865920 2197330061916473406088768986808320 -703213317314634356211799894962208768 1298187985890375562884426770677760 4506440576007372514982677071265792 -340323846074448321371178252919373824 4046161987511270789402984305393664 4746440627304148934771475396689920 -824840350078931692721621887990366208 4582505119319653807803344370008064 5145438485059648589775145669754880 -684916446172331140154464067475472384 1970474140178705646741883952562176 4332884688128677394745643283513344 -90123086307784801219835705027461120 3457680321684033434533726443798528 176020606228773442160887525801984 -544482421443315620059609756745072640 2804245883661835916738074031161344 4595695282403908925249569815527424 -980972431247133947809915774968004608 4541829241402498444537686535438336 5436280279139790194010383001321472 -549340406300122701619006504777547776 4066958250458852716151018964910080 5011310700043588304986208406077440 -802627960043326316579827341309509632 3018610556849471811524719267545088 9009479536584959439546844144730112 -509419600574235378999870860333940736 157135047919252192578829744603136 2343081322338707061974518856679424 -84356734259743423091487928179752960 1682523129115356250636989623173120 440394044410953003955066075348992 -753857167206153099934128273031692288 1701652325116353162052989226057728 4108333703078586339313373270769664 -525971929284054354549971517043638272 4061111332138986958466089914204160 5497339002831767329168445746970624 -359026811268803482162217055772737536 6441605243219047519387828707393536 5006126223165842838259874029109248 -154545192092954194879013029393989632 5082830280223547630601983143968768 9391760838177144852581465565691904 -46439965818348850051959762098061312 2024746168773163444945604459888640 8611352991839818911244925454516224 -947659933913585426901122811642773504 2204010630403265442673964101926912 2068357335843662276242017875918848 -414317856051272662271188996148166656 2766769752559741359985527252582400 4959361912225860147757262519140352 -156386101629185330798147841762000896 4980840050544026968043160852234240 3918842426882006030119130701496320 -74243745766374430610440763792687104 6481079950631459071465154123137024 2990769130873392080668468025753600 -488393107784855406683111575087218688 7765212866332698346949772618760192 7176172996072819794352984209489920 -300459664212946901183872460663029760 7932066645673888183912164543692800 1018788472881368854470818969681920 -818016820127864424473081445273829376 7379789812597708090498811101708288 4769292167232875300614528695271424 -290801315765921590295839840390873088 4687925444468758438729690009042944 7173464626218416085939499422449664 -554940676263268582589676540018032640 6207776119196708424233280564363264 4978450762131815836739737426591744 -879060197744534656987903695289057280 5252276688723963263735772945055744 5654397973010339267666332304277504 -528782335379110153220229889179779072 3017453336718814030942959868837888 3136787070247022013766841529270272 -906088107237689730743945834461659136 2493599245984736308420501418541056 8846544701427183012332099426320384 -617559846818170030473629329600282624 4862133338427061789227076372398080 4942801146657055398225929410969600 -429435998476292554980550453732835328 862117140108623572600109886603264 3795453951319219135970714692091904 -952024031273313582270850075742699520 7023698279008072852681082143768576 9522871839042183497544509190832128 -303842200279370095677861549614039040 683445008940611596108359251525632 9035723472354894608813309772693504 -700232954676058512513876297378693120 6925132214823428110246742333587456 6129018097629754875171778171240448 -367717670236767170613230594292711424 6482972590672557988271296094404608 6492276099652805267409067264966656 -706443937431441426774186198824910848 7671716617415250451828313170116608 1720059757113030032893018053279744 -815263431245021402932968826815381504 9028863361246422409922480613359616 6250537396691924473452050717343744 -694419877542071323567143691164319744 5964808264593149043733631632146432 9027884983731637055500188865527808 -878197843624056061183335389571579904 81462151550151641569128200798208 1766373628130606354225934029029376 -32419429255766228393365144906760192 2271742718524572393802744861818880 312928772441959923919908226727936 -403951635652854244389003316340719616 3723301957045310194882984733048832 7997603790616459997481813317517312 -143836061170225025643730715335983104 226244880325113932538470939492352 126054064720871305757358834057216 -429516691073890139747309981551034368 4994052393772786865582647357210624 3727787045061364127747908126638080 -394083814079670005396144470120988672 8972930894081698781987754047700992 8473241839090522055054587762573312 -747880253694176901837878287862333440 9120644839508215806647146706370560 1694080705786002260724507016691712 -20595271736568435183237810664505344 801909532528299260808589310164992 5208151493273146991106886148816896 -951072724974256973690555886274084864 1871285784200645160647652076945408 7785090066618671193281154045181952 -525946382379796430904428761024823296 8769374635812620591983541153169408 3190891921176906961435281177182208 -995713094807018554351235210514792448 1093689837012366773972490774380544 9055391359029372377533353388146688 -884326196937594947262151144960425984 9462613024827315757443126709452800 9233588900698527098052025759301632 -292599588606583867222456518379044864 4941590478683500471303380997767168 508633094993631886694521191268352 -97966005257200453261618948671012864 3996511409703738690746193262149632 5931021301648673610900047828877312 -831216020783717795661706134009413632 4091296080623076806583065130303488 9347014218153157926302270034542592 -844934705986239745143119977658712064 4598374968062155674944492049268736 4534426743145165420791140882317312 -342457528633499390729132220459515904 3590740181224400918878466084962304 6811289048378118325431670379905024 -911296934177334905541497150286856192 8077685513025247718198148100784128 6000103020882906309894236975136768 -516201604407829790086638513789337600 8837886482610503546785063648624640 4092464855194216643557452274466816 -867355828297410955103122667702583296 3586912155781609376791395479584768 4639323570072845658285904794484736 -67392428274544922470584396191629312 7811373088214745782657638109020160 7131320983176440309084208798629888 -5290118551879765544905483359354880 4221337209551562600376406938484736 9909220597628955831212963673407488 -467422671295455900018661859310698496 9723381073947679404809616395075584 4733731447404679814175732531200 -317673403095165496708726636612157440 2954083654324101499214400441024512 5883720564214654448794955319083008 -75234782884758258276079015947141120 2796833996998293177441210406535168 9460221443003756307480716693733376 -694128195472358160271770964071546880 879371791345599704637591091412992 6835711767558876350649150864359424 -279377687277615649403043316349534208 420226102980867620040256008486912 3839535042839381032133262751825920 -772228551440359901998566477142163456 1681524479527780045156733457268736 7130697972906754854375826667864064 -564055120252831976518714337949384704 6209836830302112173250228743307264 4413832243325394182018350362656768 -157263328524794300720550148271243264 4097901842400526347946879419940864 2840544017552799561708286242717696 -914408601378112872417647937223393280 7065420539297796204787156176076800 6480388669988400527414707825410048 -252100132191015780410553218816278528 9584966890427235581006519254122496 8473925088293230052841695322570752 -892776094836331804896165363862994944 2699712154567282842903002791018496 3939404325532885238128489202188288 -803123898330676675957725117999480832 7647336634437842793431330765930496 9268395643366369606396867984228352 -613472026314168618991601110355017728 5073960666248413583289690957545472 3102772098157541911500529468440576 -87369783915567660853864134692831232 9767039818798386995710643861979136 4746511212611748494275202930180096 -674783231504028816049002063694135296 6769502078948313271454988469534720 4978902095453953034663453702225920 -916063357551040930839617437119283200 2719640854787080989257650290032640 7466562750720187570082146483699712 -134130410107885885287991598940946432 5412986068265825944717230197440512 7067086496479636198741116012462080 -738924091491600624819537041824940032 3811985489295038524950666943660032 159566126932090747307665337090048 -168196671007667424632759987726188544 5578134502298496101559298689073152 1906586189531467592526736511729664 -946828073093979867317716602603962368 8737946060451134609544962186936320 8755307498467292904847113262727168 -473103865262805224917814995048202240 1054319147036016980977841250238464 3981863873967410349898034575310848 -876798540367692844762371983694364672 7883272407842086523235685015486464 6249630784922941284248261406752768 -208319507029533635399242390798598144 6263462543299582287673608783265792 819247230726941216350693041897472 -670084921494633345424454281674620928 8441568078730182868330134466723840 4449103365807824367227719403962368 -84452421088387374212826624767819776 3074332692678308867186635114020864 2483248703776697348816188991340544 -687918183594170213146074925710180352 5326425939127269465700166289850368 3272923346510175205683685962547200 -798685971989223001869876336007315456 5780976374095962046720639865192448 1122012028058931664008596112277504 -806199148826885340856440220161146880 4908379546880739039137351176552448 4665907651403919753975641873055744 -567169215801794603761132158561812480 154735046263296115714266799013888 1844502968863931707818650726563840 -640407309286251800435189081595445248 4794555605551918913153824121159680 8844243404355279332298130267832320 -774040644903411238321523645940236288 496668967414433504484244330643456 833559585355435443916932378525696 -165488603880447353538727139113697280 7917306529873971304265222742605824 3278857838702385924412165956042752 -450075921033390500068377214012358656 3965237834338816768699846205898752 5163598206863063658513912379211776 -936269704762653903732340780129320960 6806686563296911789086877782376448 1183143519959045210935713121435648 -25953601168334010268255421462478848 5952640897620508733080770025881600 9223178804145221768605660694446080 -858212166446558813821536586505912320 7330874488934399063784784385802240 6229083609053161016911838159306752 -401002977488846495669051514746306560 7614377281174769513175293873881088 8031092421571511820770803279986688 -115670505538356804433005826084438016 6122189920492956638132370965266432 2468189047921450666735523101409280 -614238775651681493663157498257866752 359472772540645099377797852299264 2172173962930678656269667662823424 -186951650742401782072385692996993024 1689878510106198155088673495842816 3465276713818361235840072207564800 -322069862354372532807268839786020864 4666848855820894986785128557051904 2475510244575025728991023528411136 -298140698251668738624088272204201984 6531093033724708193271787414355968 1343502151206836333003149208977408 -477491943485115637856460863505956864 3603794594003869045338006758621184 5579384910005833199122105218629632 -113032042206268078131040029102833664 561493280901791857489276305408000 4513849837727127924753556098252800 -666232482773465367613826038757326848 130731606764949815156059429404672 3479087182397817587702973044097024 -805216531240827475252906632685813760 5616901536102924260549034892066816 9283832168128291960101967237218304 -303805166635195049696173956297392128 4765682114726061974012059566735360 2252200530527802734520637180608512 -578490426036594375249391227567603712 9512680515180040545596499591954432 6461488568477850411201292822118400 -149971676662541814207695498371923968 3971502781229433070200655762685952 7465363910411736124077683064700928 -861382760103720997334494771433963520 5234850467997836326434753778548736 8831476690152185157306298713243648 -696473552383834739402022047784632320 6298314788305498334219320422301696 7903840901136755605769662450630656 -612468770350493575937738507877875712 7727395057624156314820771145842688 3003167454310026400561027249864704 -480088363745853195621531573022621696 9257701085646563871855980455133184 9303995665530806878330687821185024 -186529944139694238728213838298087424 3225070368350755375704651503501312 5808372178755398954180221440360448 -753802675102648898651149919783485440 967377178432654437408125235494912 516801210932408426513366935142400 -85244997197155841783194613113159680 5509066122700008500064967448330240 4932891833941081739635593775677440 -963430506939747374922898257129504768 9362775588565761688157348662607872 4793657278529226430254708433092608 -404158927177735564259240537168543744 7422645791244447724906478743584768 7571955997288326119685354598432768 -575790657595656654594159641601507328 8193257282559998884002666391797760 1017295353166604367254888638316544 -883871734012514000057794130167726080 8664283868909777709009288900378624 3086290460449195560011304252997632 -713238213785798175567055991060037632 8651735979600839215107179609587712 4547247331972345936048232113111040 -180934978345827576654272053764947968 9022856587539284711317035223613440 1129274028079170726525814278455296 -250440307860621330759957939077775360 2888728376094673318698062322860032 7555877946303277424397774078607360 -450971106926837929243487139864248320 4560790174393478938496668178317312 555230162252194179525110082306048 -915643594852858360376364915715211264 9903621337299360877880939156340736 2212169968797716120393992636465152 -377532221470560374873847112220540928 4681385153197432674785296157507584 6577569867109938712172504918523904 -647509288034296992349448925800824832 7212736416612588872776729462046720 4623033354854275100690260808433664 -816994202750835821057629569631125504 4005799013860480618948672222134272 4484780986995812179816600355995648 -602266255519057660117316167891156992 683426115356562677526069271068672 2547658500932000186456676444930048 -956391326811898777663168401559781376 3750942880686751750685382347325440 4587454749864101340439325844701184 -318687917152159591097025350969851904 3760757793103525106404376176492544 3901751998281587195009649967366144 -712753261089983586001837753083363328 5356302030770236839350222337343488 9930483630499438037977012354678784 -578606278304422292135615402535288832 1220272252291956593743103076073472 8750030727412598085202624041189376 -745139061111369625515083090939084800 8662391644888428333915526899171328 6653414947038476595047217695293440 -315229263616987178277898253735297024 3618908055413943099748043964022784 4192958577244941771005786161414144 -852611282608751241100326667796086784 206631009465650779890699754012672 6666703478517730179355084926746624 -517211140023185950784733980825485312 1155095653964591890060751751086080 2786876521663729282494918614319104 -985223208347761918945974129621204992 7255733776134713212610090413064192 4928933212988320267972650549116928 -637753698527113881819851113371795456 7899283791016540865201539416850432 5233947277875410758013359163965440 -77758161629555873780874921300197376 8338821139343035841523730759024640 7439696549180344510233094328942592 -548082114997905706988690787901898752 4473699596281977734857137238048768 8120459497771448301114479379218432 -763140157043699032532596933699567616 8894690302622943065782263490805760 8009689668696243536785949310582784 -344351246466041817692229716185972736 1239716428001456945793142660005888 7208626181973093322257103786606592 -529465165425284680700247475027443712 9394666704739378080518036950876160 5714204314906418549665490498748416 -644654508515557426602168465053712384 9621796173296952263206117195120640 8968748786237998282466539234918400 -628626763030216360065618510052589568 6054972993643788341156874601627648 4478640395630892865059035199569920 -89235592591172473804731650737700864 3950775336708662815942649573277696 7170203512079133154650948435443712 -274504547323609000406226053650972672 6776892457845457685473411297443840 4383941608481398302024907282710528 -698453197967481765421239519959580672 2657281804649827708918464182747136 9305859114763863328188826738753536 -57953264790569938997475370384490496 7217492394220344672202848303316992 1353076885967835823805764441473024 -84815677238088407581204412199075840 9569850470936731958116669693362176 4595396704817570360657635587391488 -909605917255847790326018341158780928 2663741241017262222785515861573632 995598571138553366567824874536960 -422686307166976975652283145460383744 8329009954081758181905851735867392 427704447194815811591281764728832 -74202204468859826926486663456620544 4551645985112703862205103361490944 3009462810836033319954070013739008 -651849575362558912910573273702465536 8361696626297053721552239573598208 5767026793477176709370259338952704 -937212977367320514719315081497149440 5383086729603376522410141937565696 4043142107141301068764749286604800 -378126681152212393542482730948755456 7930108114606287975781850312343552 3604881366965443472905558435037184 -242307158632207462587813405250289664 2558828770281048916919816762163200 4079321368781411081433687972118528 -935666260744277905447213587075432448 980317391719490057049587411058688 9642354964967447196955557444452352 -890889169164401266447073203806273536 8252426930652564569706161493770240 1874826695905443651557603365879808 -770531708950767974260304323943596032 3790371046513818965476184057446400 5370172749044154810043186991333376 -444675326783694579384040605062529024 1472466879571827668814852404543488 9157713170194296705856646905069568 -711533525458172978503406115404906496 5597234317149939883024904022392832 6855471896207309015774477919715328 -95884212092213840241153065820880896 6962339629921133831308614574276608 569325572430545229590389590065152 -328655737680819903480115564956876800 3455899288476092166472487034421248 2336197913611960144848735071895552 -793675689324615643427227457078427648 845929384257305289585680650862592 3558500350757293240591532479741952 -251021040775724337576977501861707776 1966926048991734651634467016278016 6102261478235713444820222778277888 -997146478895603322164591300817453056 506229028544914063908699520368640 831783958644054798519661743833088 -96946978941659777324442607979331584 5339765265877929856109234897289216 3436694607282822598730864685744128 -508234494628870656184358152647475200 8442938990483057420093480755003392 3012774724747345264928671194415104 -141883328095861308694855786904420352 1108474449339228140618256507469824 6998356205470616583011644471246848 -211652800876388861084495886673772544 2319957718484902235987926077931520 3912037298714154550201122298003456 -66037418851258831768238227586023424 9318163856126944635047626424713216 5337689049102506362907109825183744 -379917499047596641095245476262838272 9253223206344584646763689375956992 8256409114895184664635443127517184 -963192541157655299795002049393852416 2276685914086625274597432444846080 495317385184036155483899029356544 -241107057075792737592131137096908800 9638624761470417613747489465171968 8878989249525846365718861383204864 -843970939919935491971541416814837760 8364786215441154090289812975124480 7945310600499118880100583632535552 -961317946126905522067566685442801664 4550903794030812829119383703912448 2821208705512830119300936824258560 -159715714858983322766571235614654464 2452159457354902484055238985646080 4026693390448908480464242731909120 -844778871097358502918053582759526400 8792629942044715048357787368161280 1630499018819161936449704558592000 -642247764289293844641158342008373248 8252997337328505138684880899538944 7773034788515787205489385564798976 -659902280120285792039506331417182208 5656071777395842851170661320097792 3916453425508266964006837589901312 -715999107149378611218645838628651008 5363267800266693205076075700289536 7918782674837842327643695412674560 -806920440382690017616896567367696384 5413451798941449084579314590023680 4585897882030032143644361458974720 -631975470836276157842856867086204928 5842191528476239631259480363106304 6706141979957934758358798049476608 -477874205425640665814920631022518272 9862658268865927137586774540288000 9202930233489484805957031626276864 -911699652929267306448252455983513600 8078885139275031532629187836772352 1019161680649392053675237010571264 -46357773739775993825093072747233280 7114521178948511801893500498214912 1798766677899642447529488932667392 -582107845802413223529681102886141952 3656306179181763932048648761769984 8619022205833488223503711027068928 -371494640024201856199793202339774464 9724726518995592738507978241474560 4766771547968155405577707199660032 -17890391892851276643531496963964928 6110325131486773165619520248741888 3287462532897884647149282164473856 -762356948189323200652741009356095488 2908977379636424910942840620580864 9350610645433963003502008173854720 -31052649535166731766146179224567808 3402755387505409412261697141342208 5449418891691423594860529988927488 -892092102686725892855491052527681536 9193173099379951203098121216196608 9695190321212022171179917779140608 -885729869526400599216001073163534336 5689865172270300506240075882823680 1170721990944483358456526246248448 -580912826363762280886292015369682944 9924078929871505483487858990776320 6359101401974229141314155457806336 -190040615280189347047317651735969792 6290866032448878591159285183414272 8921679760529192075321287548862464 -192663190944508241149711255674552320 9066156020020182456226291707281408 8682964477804678752937068894093312 -246432138376310893552021855719653376 3416792316318297949641878339059712 1058229547062368468215466423222272 -519336332204522670863582016670007296 2422581957112126333275423293571072 2029646272024133196410518377594880 -629054000298665896442118701817266176 4362791358225667897787646977507328 5636230631129712436600708523884544 -81803495873983510186023345650139136 4665082652852454290258406494175232 4114239911676336925204672472416256 -348203472330525224447473804581535744 8422861085155300349396713987899392 2147539470960857441117987621830656 -743417251701959316846917517928562688 4440341769648870208430991694888960 7367086407523081298006759245348864 -655858772159542785009158086834782208 2187994879979523294742428279373824 9259588062832750152812107938136064 -331269281013218570841990055761805312 6854243398472270297458323698483200 587868374048988341873073060839424 -536194452058400576636596096595918848 6823138531213031446730005574320128 5961089552572167408193229302005760 -535633443239458173954445613669023744 8451735681245275490645686517497856 484140244914165497805070344912896 -639348655057378683330050722877145088 4357601824854265964700803174236160 648536402505337725972952960204800 -194069820790214983538438140990586880 7150600429637499873589440473464832 7008983941823261924214049379188736 -458369316653373006111097542825476096 3829332089362670467263553872068608 5336092813060435862126142689378304 -541358300910113639323532878006976512 2466002811613582654017004034326528 8061595052589127359537732068048896 -926933545181316140901646735037693952 8498690353904879836306777458081792 3113505646454738036015467386109952 -267313116468347986934549694170267648 345891152854719795036606810816512 266476051848238443054309199314944 -993222551365328760248912177180704768 184085667200476830636664854413312 4685033095674130676412762912980992 -46564851027969069920867599937175552 5740039552203994151403348226473984 1582512038765276704139718443401216 -293557957112964232452659389491314688 8845620987530226778594473741910016 9922942169102733616826854424969216 -894250062695661625597456947875938304 4363249567125240446833929326952448 7504385625079626527922184448376832 -795420300467935750661156957283418112 8314837631071814263126756744495104 206991167688811791124784501227520 -194624886115275809300664321977614336 8938812233036181628402855984496640 758577387843424425840595177570304 -712771914628158478741774232648155136 9378591680904016768724652540297216 9460382296196747701950620431810560 -404234208560048170948142299690827776 2394442113211101242897929804447744 1907445074620288757497686634004480 -303268554876854066948184297103687680 1387270943217690589443045256593408 5836938478768596294168953296519168 -996418087712113419646001146048282624 6019308250129616190166080537231360 6315160891574270094406555931770880 -495534313428255753049481044985643008 8107867518345708377254713630916608 5092206075375334953235627227742208 -857326723825153962327429118269849600 7325048736087055274142216646295552 5107583018164285620542061588512768 -521686571567244320501099795897647104 2732390577373014739030809937707008 8429120774449312751626293727985664 -938828936338014409210566842932789248 8521995644891757861017132671696896 819292031610991187588111191244800 -64213336569517885427263420177055744 584259110535920677993771836637184 8322828130931091732724359488339968 -762350118158737462267164137910960128 530922198326533674246765541326848 338241641357520275729502301061120 -272037754252704101844284406075752448 2485024781844557192785317892980736 3838436861284865383195845335187456 -820988575377757208906086738342969344 3315905453668225149519975636008960 9112804848071553060877513829384192 -860984687486284612066694659995336704 1912552693921847953398163912523776 9201093224191819311296253096099840 -911965848060340297033953724984197120 6240953729381818690868457659957248 7977056683815938121620526127382528 -309613286942409387058337726486020096 374679407713547830103209123250176 181777201407840118473335645405184 -57890057337568883303864686692270080 2878608627636823021887668552204288 9659328539899541830417987277946880 -442933244889094379749163375697854464 5713099977698952515010529641627648 9316895026110715911424372876771328 -249544649943548578290036398268350464 8500004267187019838582681166151680 1451908285951868603061797868535808 -447006894973128545308468840648146944 7775626359957273886604530139791360 1740238870696377602852456149024768 -875551899591813168351157483852529664 613676325557822831977573168185344 3697818485766203555443332188471296 -782080242899138200880529780361920512 7019234789350554940993916987506688 4308316787191165207064301895942144 -768375015026325738834782265209257984 7763509954022261905099001975275520 7431067077524254382747326290591744 -323142948320288981834154199713054720 756440408656827216985782612918272 3115142537153200552384518611271680 -430437914140206098129833550659190784 7289628466804484327393021399138304 5598256559103289518077120383811584 -518970829128170830982018103724998656 2651896862222385231359397070897152 7116126369062566169497369931939840 -834069172000351866777946620520562688 7859651315868645194333056344784896 2246681466537843217116807638810624 -676507149519192938188182293491744768 2284110598593288225878541573554176 289209405718067227241468749938688 -898143255858431195715075080441561088 299522496947060892541467987279872 2681977301575326029855837426548736 -650475625939017727214840531164069888 5573422786678589843730151545765888 9158683550001263995626147647848448 -608232508252331466770035622358810624 7434146955886942449192844654542848 1524677276033445284460615585234944 -356242348490776312728600481703657472 4794332801800523110018701972209664 1958750543310598580048036624334848 -741211365543021136368046604344623104 5094786566703906706012064786153472 4432479602724315746187005275406336 -913747515393091842757681432770904064 2765763175937802944806922854858752 1561133762498275677894832166010880 -884490564229759087061391937917419520 614081387466821444943028147978240 3158212698615990326832967737933824 -922315360205112707583873755862007808 857054135850230071859962559070208 1570931862877962501489216129597440 -964425077304136878911234196172177408 7288916986210307770977842934841344 327130493467723934030611733282816 -823659383744343464643303773168467968 7100698038454799708501388377980928 6503870433401513298548890510819328 -41984146414302424730650763069489152 6778932408736652814712801264140288 9864727665319323606936548834017280 -314030502520593694782473815287922688 302380446487621108983635797606400 2702927169164471914165687940022272 -582510357072999922735622357832957952 5683592806405422181166138859192320 3471991168842509261909358217789440 -26769276513123110177376738121613312 3476076816362925800064980189446144 4395828517720066316663400853143552 -552703213520501505825823582677106688 1642385097622530348755377966809088 9507296962002775041039179181981696 -625811012585512269697832651124113408 6037529105869985841211790105509888 7112036960654123759473094635290624 -138444892600276114164508752462479360 9920107500314186165241212630466560 5809899358482766303035557305909248 -755262858379947585472456115756204032 5353532008157339286753235538280448 6874690954835389602038621359046656 -878130735027162917827182474458824704 4983664703042226924321789016276992 7672562178130388667326721047920640 -198992185633612557955701046631202816 8819835655156737854427002870693888 1688173496330120079908733435510784 -917019902694003799845715715125411840 342376148449922284724189652844544 7795700416857285295515936156024832 -610724071946415797361941196220399616 4282822984955534267030645455716352 8678929940221842943865877046493184 -591062043095471863068398517697380352 2808794359032852624163926425206784 6771964342776436565413626634043392 -340173793813295067601569266163253248 9702861034966686263902385251287040 6640412308865667565189171393855488 -7394184381800171487543709197664256 8917716179779736692408078601027584 7781078627155363303547640817385472 -298578047765115041581698301613309952 7207920080247771207258153387294720 9280268588137565732232390363840512 -985377227383116612069955203745447936 9141607581718762905336987913289728 6718211963975653751861237130461184 -739856929043896160372247462292750336 7147127263379709198012563327025152 3208472965371940242634823316799488 -47334734133773379579144671475007488 1410960982599222796739208963686400 5324800272785063519831020460310528 -302309850677869650174214301470949376 9095787927522432255740213928656896 9555178243675336268339516796829696 -330430261065505745106049063846936576 1037961470356496658367721469116416 5606016831580297250269070601748480 -32624976542641328732883683408609280 4619409059998758279444217240485888 5093835177177950889935097728860160 -957794677508137990707752134462406656 1052078963982391230452711014006784 7252176253495779081250763469488128 -306504200210750778458846739719782400 7788052686054722862736323016392704 1024309348246082195757898737385472 -888031485294099831734602368817299456 8757372908354422317775236263575552 2692806143571455303608770953740288 -619926223660512007953554923084316672 4315270937834492459159042062811136 2486538571181395918528814740668416 -214950254472974859860675865648037888 6402955873599563341045721961857024 4597188263980157350091168411549696 -968930006736741222361654725993037824 5662295606063939084780804446879744 1431526084927448545888353269055488 -760327943840335317060910336157155328 9695278940436468555127572312096768 1812616373496168873210024210464768 -140507505003311359635948022947381248 1293472085653667965904311455580160 549200405592954748919216322117632 -133777631790673304973430483534741504 6488869656461016119502626925576192 1310652932643634696349459054329856 -354112498829976971933779927964319744 3963497604687223374928301388726272 2664772616622668464833191955398656 -878226430135829440218570543320793088 52276124775310333222483136610304 2272440587706595376706131526156288 -74377290355208683111812130016329728 4640258301118282135176523095736320 9097484418664328433410253718028288 -539879147577412711568522995455492096 8285221083392039337549983287083008 8766408249383718191448792592547840 -197325193590152172809521097317810176 4781200042445314160942465295581184 1957799592775481964547768909299712 -751795114697372713203976131034742784 2727879093915538526026650760511488 6930119693896206666528445329047552 -555950406635000849722020922304495616 9668317615620524626862554916847616 5416915191453393349139174602571776 -741082749715688486046122640031088640 3364261983403896708753965270958080 2307241604555090852245621014790144 -734968042358348048560489911141007360 7962507152657853162434500661084160 683223440882827446534167681040384 -204870632036629788035793500944465920 6680058381611867898286030110851072 3954685441987516312419209555476480 -551257690016972468503829853509779456 7444029948335578231251511434805248 2978978933659751300418347768741888 -673962966155285945668437407501910016 412510069520617825025919092260864 4797735490209114127571176768143360 -751751102576492298734411236289544192 4826516846519416071786983065649152 8040306919882855196508560614752256 -827060524583613514585475039547621376 5759688497748043338029394884034560 2468065571981633291619874073739264 -758104361830251868275193200561356800 4690491954463595520662396330835968 2954327207528266846375742413996032 -409896002778874264392199861616771072 8521590842393527654010858623729664 5020059175984222259130338910404608 -607701199123006343944249571729735680 9363584103560164606938123685855232 1224454495221760149572434188566528 -908759426572943324589434403416965120 1878683526816645288581620138246144 6802560122981587605314404213587968 -434068935076646652719853517242630144 451751430360724133806346405412864 7881361976428643019197117148168192 -669254962858920068692226495769214976 4871038559722169539274461073637376 9926449194270176118252714818797568 -685767440368564090095846673759600640 6928802001255578241020812320571392 445194641718486625411699891503104 -821879418014157583088352008018591744 2228178865166899627553758403100672 341619113314679967380685545537536 -418857754537742932093591602470060032 9410873478499409839132286381981696 7954425683459160290907270447890432 -473669135148439616511815248659873792 6971738033446824041248247609556992 7224396047392175106217351189626880 -220823719514087253684170407347748864 9196824231720143664047819952488448 4607573845536053047102248203583488 -987815560308307042838833688483987456 9930067146183646337996919924588544 9699507264437901546122248301051904 -912965246285695694800349986033762304 3843370743614790357974396509880320 7634719596617866564685718351773696 -868450793885370604894305720647811072 5844401088581873000873786045628416 2195503418912061004190344194031616 -506792803108785145440216662553919488 9012193191663672940248923306459136 5495823239406367559598474725949440 -756286248812851550736883125447557120 3570183862545325891039065253347328 5337893382998625688323307247501312 -258183077563242043622613112917590016 4931111213700477871911647355863040 7547369879801483378933946403258368 -547384946765591704824929752738430976 5519424748551391309523985411080192 399380803933639551598091476926464 -265292792038371357510205793462386688 2083460226805122222452013214466048 6843098700234171121625158329040896 -881315871752062083586409046669787136 4230969995844424421486067445661696 3479197168197732796142956975226880 -596443666519633826438280971577982976 4191560533259895462275164500131840 5254050999911037526534211997007872 -409447131865156899895817684318683136 9880774382589133685876552321990656 3205119260859998892650973926260736 -137610295660476624918403186815926272 9401344345825856853633614338850816 4696089777996632684559462561742848 -896032819906452145457624174536163328 2818435209050378183565674710827008 7261053674837221683134960051945472 -392649770111102927765627567282847744 4354555829976522322825041028317184 3037978561174742844114207005212672 -52617384230192712296436549306810368 6941807399458279241980028353773568 3545710555300936234145791564840960 -272077188789664404444981227321032704 7068033744434547699248408830148608 1555268366614110543339993104908288 -991043382959298520275897840471900160 6936394729198842725568748464373760 8280693891713381846014898865176576 -786919027513681500849525031998324736 8690646825830521792817886253809664 6054983439767738901145702784565248 -487635721866659878682950674071683072 8405698210721947112799163752906752 5205324676344875039769016443863040 -411169706660292066161701531986952192 7899439210085270643906504401354752 7286117943212198879333378844262400 -983654436056481216644784506338803712 8156850001013442820306651846803456 5327598519080401543758322149097472 -857866940910216324856874080214712320 4882041000551416251199048590032896 6908069139476809729499379726811136 -37519258493301430723227118311833600 8241320136198201862485171423412224 7274883862779412627602935059054592 -70672942515815355739960478787436544 3724196785643158578226813653221376 4957433339437172800099203986489344 -728551566601433024994832980155301888 8767468533259322230984960974520320 6931929736727918468503566731444224 -820088405667333640768990114941501440 1077109335058574226106828978126848 8532539932076840351165653134082048 -172557427117758295740999927764877312 2038499818461955969880987088715776 4522124626725872596379830400843776 -53300857740980772754210430266638336 3802008664519321134731240417525760 3840953618307985517017119194087424 -50117954447630788266205126517063680 9683912123034730902317462192128000 7827152280679809283833832654503936 -874496981645344128571853993903390720 6607244088690968512808885109653504 8867208899783920569276040317239296 -101354047919429182189936883617759232 6875872280048530026711203111239680 4364072071162407276677696208240640 -533500832458137466537843336054571008 853174183848410712518759718846464 304832663345277324004536977719296 -254115632595101694395488932374511616 8694145251585496206191330456502272 4465123299244166211490462482563072 -617267541213768414929754743780671488 7170335754801837316114076284223488 6838860151130413962193487697805312 -424711472022630090395337127901528064 4413675057375879398603447831887872 983809755466065074901397201223680 -674912521011381647077004801696858112 3167198972865525771414832628629504 8358050341638542206754573858635776 -148691731624872362823377809372610560 7483997131867940224324744830255104 2697606291126710000219020698058752 -928542190142960320063444247260430336 9951169517806845276772762799570944 6329413248210044679128819240534016 -257808421774121836111024049195319296 5100608950107686754924356930895872 3220394035976783134762171747008512 -730431104193722109769937043784204288 2383240863202132211378391846223872 6182555285047326713539651189080064 -343393128686320094749911419885453312 7639741897069288184658194455330816 4505029497739529480958363522039808 -969903764972130143957605380134010880 4897399636198900975379107916283904 1482478065212470770645675920064512 -165806304412848422167865388760563712 2087651468300877887816807001096192 8489815846149897551383516323774464 -436800116170316403705139323897643008 2662618334205150778533822626529280 6827136494350288675144655226011648 -154192653157434002263456565644230656 3578322804542323322411420292743168 5683506677038661943933797610291200 -424845351229000727560677225406660608 8329550159934284806122318946369536 4784973573088907364462327366680576 -158621875494356855168624055833067520 4724521477463130487187594528423936 390207406978555263150091474567168 -505468406902024364509743679126110208 2906605213270863476971357505323008 2181007487549242344343309832421376 -397781374218982120846651751579779072 5894946556347484939973290658627584 6386042642006481316609264973774848 -506813381985980762111490618690633728 8698911967012287694416315311718400 3141183531329605510611620499292160 -73454545567597426311860368323903488 9743632073100869904153169490870272 4781199684733383934953882994606080 -199709152337615056012097744420208640 8941366350446209252542734535753728 6318897488612143272150027061952512 -100194193366087717871648296577007616 5188458212015378537172081129291776 4911874841080039461833865674358784 -914296908041114380968731946929618944 4836088796675232145689160202584064 7513640464829396909553054354767872 -151563394833580779595665915718402048 5399766052756860404798767520284672 830771157299909767876198986153984 -22713512126467266614845053104816128 5062335721761366924886161810784256 3775206599490828018423306563616768 -468949110988361317626374828509364224 9435054569413984416411252311457792 7986018090012745618475926354395136 -810890260297936152014916304290971648 9078976275710721885451059787202560 3674292544696563799827262585438208 -225505360070202393759334343049740288 2273755005996419676737279046451200 2449099128088104991353437757112320 -637127098227366813266549599406915584 5192732713785400203793019955052544 6830489867329789284879249698717696 -592667066315025599684803067247591424 5359844459102292316303863268245504 8661603019679591712101104112107520 -951741027902867465318402800536780800 1628017795390146067882112702218240 3099310252952970361533801422651392 -606699600746452086730413034822434816 23787911927085063114095044067328 7415551610586772383305107450626048 -672647539249883662075876509046800384 6107853981207714330103354006437888 3814855903542078768064682581295104 -145565748318015326528962759128776704 9057338922099071198883945606283264 7225722526734368988483200017760256 -942893601475452657261796736641269760 5376120048236725335415311099232256 9556156185251694275329820031188992 -712473569828835837025957974584066048 6766515230105111662702893488668672 3982816316554493370333852023652352 -90621155280949139526554366288855040 2517103353860361281259049268019200 6610978808337240607762740406124544 -481775155945941884345914385921736704 9725104074094223776230648022302720 4290020148458612911672005486444544 -911042567303734191379671767056384000 6029008084916090808298488077484032 11252197233742447864411441856512 -727701624862877506294688471987519488 509286355237314754224444548317184 72105205488446490000290008268800 -592466095841938714977647415087071232 5015153525045762960676097122893824 467176568052581688261999784361984 -736992833491163151357645434940030976 7798733468044365872772057730646016 8278769408292745510335147774312448 -981178553913241507066544290806104064 4011934912548500858388245731344384 3719318572445809688519319652139008 -955844422462095136508691569151311872 8952282918267051487415916489080832 6417005953310888964549447295959040 -483830294388582212476154425219481600 8237425581083335632330408331313152 2299126373143706980597394348965888 -491068081517094275867137305131089920 758933666958721164436115332005888 6686552324691770399939121542856704 -260193177952332619386831762131779584 5133841916207409826317876592640000 3431254416399166064971275583881216 -593319731547976717712520618350477312 7373714268010138959375796522713088 4147475817386025860793423907258368 -501018648772959389072599612060073984 5719208625934962020252164206624768 960070469724700851262489228214272 -582571372959760769878098578656722944 3277277145115276332037496606031872 8158024604205719698480947062112256 -151441644307060205922131973096079360 6016015639561290449005678163918848 6292002426348479196020428079366144 -243206197674350750748182097424285696 7113995129509166922343959320592384 4874879226399099941419796031078400 -335601338815646702049003133363814400 7653103199809091475031707537637376 1937023233427318993044392613249024 -50054861855462675300324296991178752 243365067705694541796086109962240 8999229780507935137130016053133312 -316450652695907571905864413344694272 9546344261595466793100833185595392 2280160188660947158347733002092544 -735840837966020760234870018626551808 8105248308060163854482100879097856 3179859324018212673963556855611392 -459371962272525677487744840489762816 5400117261564648595216224424558592 7945966620772695448113933631619072 -873461711429632725514568602587496448 6270256230590177048349993192128512 333315853432376425117144101945344 -941380959249807968650729647071297536 8457031941483839781375146213769216 2617499005315997929866705464459264 -329653509898881847340528228999626752 5127998582247912224007891930054656 6758251422918119018522014264590336 -310159562237509553046605216931119104 6782443679881128544734078706909184 7402442394446756278045303455612928 -858960584748335541488888161251622912 150968777984984790806251178033152 4214001044519971048327245505495040 -413934323276370498417935050499686400 2895534009270210537523195297136640 1014212438496990763807656313356288 -160417940208733707217031231566774272 879383348838495775902750803492864 1603613478599602151235846844448768 -648635493743349881181560871749419008 4987230769838223698767078372671488 3261807713151254891034617881559040 -680088508812843453198549636454809600 3595879211019481751134898646679552 5210481265729234991954702972747776 -280219097992891814120883449608798208 7278818590514075081533353193635840 3438167451872384814089683997818880 -726565535555426290818056888002805760 7531700987802509009180964536975360 1212803706399143809050165527969792 -941246162841713412881677180100149248 615974653787858660413926000295936 4235733659546236503956835524411392 -59216231672558424793268466036506624 6358459436760260428620837179883520 2582186400794291150415280669196288 -663586255344085411668078415119908864 9597815993027739044777885758914560 2231228623985082435594765461356544 -210079014712984717083677826664628224 6078267873843444021585999170633728 999483898956816322986861481951232 -343982527270783956508200794473889792 8261736998939872354739449453608960 5811486410273986086091261537681408 -70290105805929802144288712423374848 2973649549854071712154421060173824 7004758763191356446865737677537280 -514703436089473910018775367056097280 7270823353483929861559634198790144 6969353018639349725714596577148928 -961222830232546826011067484297232384 7127754753666638764653892784357376 8415472746363563517535190561849344 -887913402049794257643474594838872064 8497461820833111749361521091674112 3543936938014846001204097248657408 -895629467189673110571559745717534720 1272561067450985997201349525110784 5427198213892663372120401641472000 -640304233768094181047117186020147200 9940477388584494231848303904948224 4814434023217022350229893919277056 -892211709032330456529869631916081152 6000267992675852649299871732334592 5049378698041643245405713016553472 -482530287732531535421941519002632192 4763405305023865492160524943622144 75475451865266331951876150394880 -724191795938706450036458300911910912 8277456087558015072108342186868736 8526185441881928514340340612726784 -470416706880433405900210050078605312 4367750004202331907266920006549504 242429831652571281163229687971840 -719295501998140587029082357435990016 5646207819722187217862652829106176 9726931064049127904827069031251968 -360056053184948009574255393786298368 796627625149253101650501582192640 7069423307226966050078782478352384 -820914751306175107255482033543053312 9423011657716416941908470397927424 4285948928971799196925698563375104 -133638424954959131119131451973435392 7550118518972647595615586848079872 8309879927645459650544398908784640 -131581689035492106115314761592733696 2030152172267139265751666225315840 255243443548740826568603622965248 -645616170276378755182854826581032960 5085849333210630178512861132750848 6225896715336625002658297930579968 -437978756757778651261571935277940736 3255018258023841565366472849489920 2962108372253175122084596694384640 -1989243344917962494381087080316928 5534021126803758104854502389579776 5506866658715418363601892931534848 -119159455772826782225241316727455744 2879323658858837557910252885639168 7248400252913176960274444354322432 -629153815537796499529326479512961024 9733298629968388965403844939874304 2878293499028363866667206144163840 -278380395202942393467391452959997952 7533478332244096091145278266015744 7273344308937702984003865825771520 -441399315750816292438789718359932928 8417535437662355763662924543950848 8664370999134668964705352225390592 -512670809998395879029456910537457664 5155695845795834244530841837371392 8105089826505018476575342247018496 -692749614019294356049935217857658880 2188910424297614216879076173414400 7020234224879462938439997166977024 -991695795155195920660455706129858560 4700074918715480272803231407538176 3296350343503670865351280311664640 -441253310319667244975169651389497344 6546425060618170027215524217225216 8533318700656719800439992754372608 -420460551081089752811262420803649536 3932627279856545305215436593299456 9675747866285139676496067890774016 -709028814356524058679768501809315840 4854251145026634889736979742720000 587436345674036900913089408401408 -854505264358117874413761228380831744 4990243912769273698311514825424896 2196789935894645402020280828690432 -503828387783077825961493602949398528 8423668659203593640602889747431424 1556626758405098218341954047967232 -143146946722485889515082513087725568 4409231261057592261669317431525376 8502315288854187038035130730938368 -771221831696063620418767810033876992 31253728470121258478133877669888 5942270312070332824807330432417792 -587042402356222092779267201412628480 7433680081558057291376353947418624 1738284938661129226839114509189120 -94277929993121455358323437563019264 6314120257992143985382582573334528 2193618363611444192851580996812800 -431774085394163928175215691108974592 8240151237302398189069194443620352 2434464766221303683723518730567680 -173105115403207971919070010730872832 4564267878323386818557495597858816 5533797653726670870583408475504640 -53181441706804544424430017666088960 4984467275852270347055413734670336 4365804806665653666807794326568960 -8070436969247004577161933850935296 7167063981226004367661114981351424 1816343213654460439589871314534400 -173072891824626360933587646026874880 9653798993000689435882704053731328 3173915598424571228215038747607040 -968387559285073288092842751629983744 2183739755278358422338603380113408 1943715552800929472926661409243136 -554846338944800308193348103576748032 9411822714356734465283607196860416 3789421879725753307260751603302400 -926657892935345387015039426181988352 8704292256600185555175103256330240 2583790606916477858056940376031232 -563239810960730241341968049292443648 3888793591416510825277628432252928 8817720765522510612069895442006016 -783331042300911259996284171581390848 2451712984080083924435705442336768 5595421724548521696366851130392576 -470504699221847309033476280438226944 724778566553729783539484055306240 6139965673738220421814960806428672 -287739820406469137152910153037643776 1835458578669889757995016627683328 33461055076426488854276019847168 -6019841450172503236711275407867904 4635132529680038866983712156811264 5579120630319985372725477428428800 -948105644229067441694163293746233344 2852122767404993033062535596605440 8606833057869831621811465195880448 -57565331248074484058451103228887040 3871498310098434555796895729451008 9105447459259620801522945719533568 -734298755057440614067926876259614720 4866178030438763029477058571927552 332211752664590146363361335443456 -805796781862406386598592313500368896 648236162444198818298775757389824 1628347648383904509558578596544512 -789364992810348691996823087755558912 884007040833778508129933121814528 9763423421901314119092812916981760 -124650753339126354887513407206981632 6436038276021265090723313371578368 4695008313230455690532191570231296 -297637868443434713154389007080095744 4579053551420399729864977764319232 2067541584507479621362374435405824 -492974413083018188784787842232483840 4879164937263313436439939226009600 67160499403963310834287760113664 -955620359043134326479438411412275200 618801948096111970851030514532352 5124090062665573528589405343711232 -696726328985563661080521758967070720 2385393480092438782314717940547584 7231182579775888232034786011512832 -997872379630738366677712481233666048 2459972620464128896550239152898048 9220343848318199945985879372201984 -390183527579362502221172693006286848 6154721890511596376025234078171136 8323534470544303021315903474106368 -203841470016028101512252934097731584 8570031604185681714889469737304064 769615270226425767412340432568320 -545207199324997522025743161237700608 751161583682874895094661303500800 5756571859254880820926107535540224 -926040886386453617607385620320092160 4351167830616502376020972180340736 6183541087641202985971262792138752 -892593287632808986006146419515195392 9969023838649479733388396004900864 1102486067260866339523815811317760 -630804227073673553538211678473158656 9758106370768423750654095773401088 5942145928916933403811235294609408 -81689169467462269585972417951432704 7396942009124044723343608921456640 5550024840750422404580981419802624 -937981113170175138277285785914834944 494685502277262052888771913842688 886475292944429166055409821155328 -975585430963104607684129393733533696 21509478139230630890033536565248 6171945908039143501358749630595072 -749521763548880420811343793829707776 705069266909231506209511529512960 6641690904918716918374695274807296 -258397915739106217332296357064474624 6690447627358826912055519522848768 9346122711452493043716257428275200 -935304236628588534104932985969049600 8920807528095596860861595051360256 7172201614061881869000301736886272 -692063133716145589835360161979432960 4041461465567503067681291019223040 4166964945931944040042391048028160 -81567011632817540770919615301681152 7057545342747055198564623868493824 7822601782069649505674097814667264 -569775048857049667848377391114092544 2480072311439519357130563785850880 3423308436490292513552391546601472 -353401424864651941726288851207454720 5733591000951348533410695617708032 5246259372195913026492007970766848 -252509343291054349782176103953072128 6999879776262326636535776798572544 2705394985336694071737671519043584 -217542254646066205063234698703011840 3336232997179640368758928133062656 7386263654027654904219730001788928 -492789607224431626262917456603381760 2600475867753697011295234383937536 8207076132582707920819732252459008 -354025113607882532072054191248375808 5489982191149191918031977549135872 6737959693934454405825819364556800 -271518758289706247640822642601099264 9836227666247549358469681426464768 9055131583283115038617651172605952 -785837641481478844197319133213229056 2313516887058844806189718135898112 8472312046318901337911558406144000 -466465615488761661850084045632831488 7815731970941205809624808916254720 3697147549317604665918816436355072 -423310339882834244152097203424329728 149655523267100062247539382943744 1343879684782590083914270668488704 -903239477474433051325401668704534528 4198251529400173201643102609080320 6739700405622643014949040925179904 -69995221112412501042832865549615104 2826877307747389070618456481595392 1337503927761584695542711737909248 -600159635905285158989411783819657216 4562478089093998128130491907309568 4783557868161009775837814336782336 -40388941612450421988535916510052352 6593447807204811940005361844486144 671932747318939593788090505756672 -54697322436351434858420526519418880 9564365913659239275577375297896448 2526646495495355407079569409179648 -784351858089646785060574567958839296 1367168995771879507003271349796864 2360323510473403405036829410328576 -130140039685651703057748738936143872 2298793583592397410174169027444736 109912006205747963707690022076416 -186379760152726644820451111871709184 5314451092199500251897108604387328 5135969198426447679389316398710784 -751132001382144143872898321853972480 7326792332129801420190454684581888 8624616883996998450215165274095616 -184171181423843702466160396133728256 2561718160995247110756931502866432 5531726663867733818720813985038336 -673586048099213683333475541259911168 5214748287164760295599868164964352 901345529630364886911204156506112 -355812896805894446154736172571557888 5287798821773962906144552855273472 9054880752295615439287036221063168 -503162267835748412373129422117535744 419956317049086708279743933841408 6106596421645909468438941780672512 -418539477551041567035162300434612224 5487333441656899100178337566294016 68333142321529119315037016555520 -196803511652292338761865776712384512 7140515537895021432638169652658176 4715877049638676758864155681751040 -446572664047932152176327068313714688 4076738548704758759065400161337344 7121815267945202805986103943757824 -51409146843524826713710411481350144 9377835029504207414357859579723776 5023806343470708680382723452305408 -802549385711508863060186676506656768 7802169461204342967971615992709120 1417652910528374027786861546569728 -988613994495398891481527397593907200 6918461447710184342470662786383872 9960263515125063916145819659534336 -542157965141341170446779763218448384 7313515617554211088127829452259328 5031839356907515544073445536956416 -484286827119051407049108736444465152 1151949222958738035531340769656832 3790794079375230942678950281740288 -219700009773404282668723066407747584 9740041640207418203052700757655552 7134878498106352117753302761865216 -60780095902394128334202818334294016 8220694108744995033624927602212864 4594603168962620413348474592952320 -424076667037117370573186155778408448 2387429174245162183668104773500928 456585006992030185657150210048000 -407435326343361598143915545744900096 8818108232505502537916845257654272 7793899728699253033323594206150656 -605743036283436213237224870168756224 7155181600346229159651013560369152 4453358531950544332162701167951872 -998964338121401203415721807980789760 2114835977551236639378719763333120 9631996165640819388838669828751360 -477755657522924340627934250438492160 5540243629186106862501842483412992 8139243112482843171637695938035712 -447915981849703437735934761413640192 3177653758187868107000383142887424 6377790877401391379844368806445056 -574653012371751469317085108025425920 5276658521465266111905006624964608 311081016168020190635978622238720 -814592011573360144932529558983278592 6240325756263023724770209006878720 1377478332217674285344567645437952 -587144809104502505806919367361822720 774364799037933968488483103178752 379197260136573958058087911784448 -112660236018170876599988863088197632 8735892671623029752530145466384384 7093955626868007776416318462361600 -193910110672577347935425277793927168 4247103074264059628500831807995904 8549066995344972032700598781476864 -828067461019669361091869258939367424 9060674115314184725612603377713152 6379606679784981255083509919252480 -551322700438270422841633145259819008 187582138785568402220010635788288 1951840634736442775600283460304896 -1965799831334516458629626696040448 7065686377052454092145997410992128 8772883839223987458516573063479296 -670412647011273915121204179123568640 9005257868587550086018680953503744 8763490872874970429256213458845696 -641071521529673576213274029285441536 7118198312233251694008218003963904 465862241803106303261436148711424 -328236378760622352552498062019264512 2387880849861177756440533596635136 8164950236419106903217238314057728 -94594659038455600514519753499344896 2660070886612995126683120724606976 6203320492160905665005978189299712 -13163781223890765132590953485303808 5453596356008805604819280668393472 8363406856228179450550747979055104 -329287615464578983178983908820647936 9124515205053286556022696268791808 4597122042869430572874273801633792 -370643707623203061164844243436437504 1027034772682079141078324844953600 3245638365794976872839022219624448 -625324497988033198233922542220869632 7018547192817237519421488853155840 5610344587799293835314072549064704 -490173677874353147817029723714748416 2628977896169438613246158198276096 5790139318822267529261965637582848 -569881340494113013391009116103639040 541444867234401328691602691981312 3936737686367088390913625205768192 -899420592056773812217402504763146240 147869083562600027005377675526144 6350336651288510468285050216513536 -660122385045067531070251963256930304 123781762010675633307587308421120 4083142629157579315252604667166720 -160770096066325668183585544871084032 9827894414353806454903641699516416 621281903547200976216309689745408 -67023170350284627186395241787686912 1625806955096932513763939913302016 4565653537432650027410788592910336 -989932029469996164448119576269422592 6546898726037178275926942125391872 7456040046475590114662642960302080 -852796903228262599509765479716618240 7027368349426283483731947767726080 4077099150575373187416596374618112 -735684337372206105648678887239974912 9993754947551565973601273887326208 6992543776996955454611242824499200 -428897157731349802339480837203951616 5508276033066911078101983334236160 3452371444786621153084518455836672 -337523456523349876923500495542157312 9121740853580246166228730994753536 8239899638844031654978840667619328 -126090098107093036043624158832099328 8469994371700124371749939934396416 8726302950013550355879664797351936 -814048790760880953655926746951712768 6603730967782596440093851784314880 9124475241245464699534013024436224 -471405694893485718743651652693131264 7759314224004967026932400064036864 7760072232370640162272190685773824 -629070257084066569167025644511428608 1558235869068571951115544939200512 5511332601445681834244002782642176 -828781192284713054719639945828368384 729039453859184870582415645474816 1893655390830333335902740828651520 -872217220964556222825985756937322496 9992606012167198899324188111142912 1177102377677955731033747789709312 -764211771128715831973374575289303040 3128665004699757595296829502652416 6959147903784981613003742350671872 -689569785603685814726298061603078144 2718610143850754267648543051218944 7780153019000542052058134646620160 -137976228429949270853918249898213376 4581191881468033554638852512022528 7536828653498619600968665175949312 -9987526539593110204782391261659136 2031559113464563074094915869736960 7212961329538648343700877856473088 -737733180068315662775128755529580544 6181829161502746954295755006803968 1292795483297740840390180414160896 -614688535862110992252647829418278912 2687420654694772282841798558089216 8791134941885938922244223057002496 -88616621902894525043787450206388224 4756857622405980138895854362689536 1974882866469019164798300056453120 -938878804082146348644746462219993088 4400129353571278229863938509504512 4587711329642039360821869815005184 -51082478999640862133950576039297024 9983447615874446814714389482962944 413418771993802418886034824626176 -159206805835718700112136428092129280 1141965425908623603770232919818240 8351493072563908387639438075756544 -501973051419946147998830096340221952 6026799927874486781733859072409600 450633062668942554321750646063104 -752419046657370851140654183879802880 426902276590670713443611647672320 7162009975533564417608311086514176 -91098616381255596502306613681455104 2967134725287706589814259347095552 210497555814877782825679080914944 -964485965605094865241394137412927488 3153683930398057917129584682205184 3725301139716887394922534556139520 -734769287216501474675050666560323584 2762665475522656868422545483759616 7994580505466196591023448255365120 -891824314523773506093890001312940032 7177238485342034429569015610343424 8556778260954238997307723463262208 -905936622505874478956183076315594752 8101801369873375896058268431155200 8902954456760429166043395841327104 -623954311837099524815395119651880960 6952712018341765724407870154342400 8384175273123931243519667806928896 -759371012859436704946956166087311360 1624279935030960099361552938827776 9273885063743591339233175182245888 -146265543024769231249028228690477056 4635132336286114909684729353601024 333249607746359427080079773007872 -685063408520377948096471333831966720 889264506941286634061967227092992 3483651970903062253400246211051520 -799720803926855077104113280163512320 5716622041917871108179383786930176 4585161036084467682050340561092608 -487138042871442762809925364961247232 1632939819374851544962760406204416 2258471995283924449385806661943296 -961187316929663202813544733643636736 9864908377617766146284114786910208 318261063729274573617076910424064 -325233172522827497761050773424177152 6383957379118723888632149112258560 9640246752860118284803125769404416 -131134687185576388901776117850963968 8577663302787661665995609243385856 7002604216706457218930685861953536 -952757922152590083779310095930753024 1907933338495734416283459173482496 5658090895951157098400013126467584 -440220136129415586496172654701051904 3302170932398960592997022655578112 6774370131611971870772765854269440 -890950962856920892655946015682068480 5157929022842535371820137596321792 5191065892435729567047572982333440 -994863858183633952006216796105342976 6948375911359632182958145507688448 5331566786401931719239348783153152 -598888234310929149076773449509109760 4989764931445838775840555610931200 1112527994069338925998682465632256 -292819829862386988684711082913169408 4815019720646179978131378335121408 4520208837966452225966958941569024 -696623546829505760462797260187500544 7534758441871990288999404808437760 7283705636511156719457998940930048 -280126769904321840011279982823211008 1599935085045959880336870775717888 1348336340304228313470778919092224 -459204255415663839751655039917096960 1150838094661147901175136180502528 7528372028466846448377770239066112 -335655288820268724733478336032931840 4656768590738471100434057216917504 7668017498984126047477119517196288 -184676946408918283978048916395393024 3232811595291345612776861954211840 1044510275104766310429685815705600 -72196616178056284806280090371489792 3514365169696244624744322074411008 6188374845456780106165059202318336 -510118066021257940331236233075228672 6384943330612555443304618914742272 7229838038889146243993664053313536 -40957370411380526232693346169520128 5242059492898548051300985019039744 844923842226029221559841455079424 -349605021743407844595522120544419840 2580840263449595573795123078627328 5879152900512092129062440436498432 -921074041538561821645071812483088384 2825799517933714469100933498273792 3180712926935139358555137252524032 -651124541844075468097872545173209088 6956946137231805004374163392036864 2030424638398115762250784155107328 -565019593584442738059432810963271680 1817805363470742404464049710432256 2484953620855813733577013801779200 -355548167265574402750172817600282624 1881434625165377905816498480349184 4162642657569739822990618676690944 -180362477716565889096961576608464896 8187026610598782797141715445612544 9896736996783738739693183987351552 -624064663799268535885283958093512704 5632233710292143336793570875015168 9881118801755010004530348469256192 -382092672919090069020837921398194176 7351046287949471505584204762054656 373920053143452655672738631909376 -20507898324635877441513988024172544 5212841156125626176041705959063552 3943871548450726587431456945995776 -817870732041164563493508022779510784 1371416538784974991775556758929408 8241005049031297511565489728389120 -223830625239379763002006463951405056 5085660851935018288754570695802880 4990767885318267525640026494861312 -115561762863176418473555737075253248 7334760100738719926407231264784384 5679308751911181071540768743620608 -371962798585617011659022804046577664 6563262899059328310356942344159232 2099409565776626065473134756102144 -973279047604993496417036251810496512 6961472834664214103371204721115136 2184342237116901012802975379226624 -816660617615608437527053014436675584 6257692593066716573051205904760832 3186277718941409563487568052355072 -254486304584779240536255367376535552 3628470931829723381083131877523456 9994801219413316154979754887348224 -267916141368437809607575560299479040 2332167034115361928633898124705792 3956077301243697429126665987948544 -65082555990808484093245452747538432 8101847817814172125452644625940480 9797321738373006464169212093923328 -658985182399512857644253513663905792 8131548247547525684600956365307904 5139682887686303024336747821531136 -321446385392758791296857039899197440 3407393711689656271566258789416960 7841910176794246994072822226092032 -904934633236564723536395717692096512 2529206895935410547675172823891968 7846442090381706340961817265700864 -243311398663243295093159392792543232 1929613607890808786304381172580352 4629216189624512797008318127144960 -641528085695293506435275660579569664 9478417891205115651109713868750848 3839619658631297001157753642680320 -945203752711378286205962244138729472 2996996290595911121465449925050368 4204445648438687129967931225538560 -215174564028970304514677138578735104 9255958237156006854847872697892864 7562800711028373333014322719227904 -366873902949086264509529781857943552 5920032773083904907726312402059264 1677960446732363399584031872909312 -505116253034308198621292638949605376 534983562632605759039898017333248 6095845659105726181370430182391808 -75094832743379779663493485413007360 3199606212780273208692099780706304 1816841615092506729901041098162176 -793454640512842519787191003030487040 7476497975236788524137725229531136 7380634421605295873289024417300480 -538329181105501415300317237225717760 3337194186630932658052992010813440 8480903611138837667263293434101760 -842120641964059498634952455453933568 2825751269379601329846824327970816 3235105531696805432039996708093952 -118990217534643162274922453956296704 8406058818697388129743543140876288 8068462743781466582664399422488576 -277519642394365894235980817697341440 9893331681827160046831656360738816 122860766702057178859899965145088 -601898231778944397512309133709148160 4195379425050630973827527676526592 7969990986251471729366244693901312 -840855844048503049257286054723977216 6357442912917231756688850602164224 9536803517777809898965042443845632 -715685610478059605618989056420478976 8262837363394924855942193600266240 920246590557491937863500902170624 -554628925514895793285432396618924032 5720534689257405207884128457850880 1119365765371910401536985143443456 -380841145551954064137448150469181440 3352183648623039605925298883788800 1212250512361988759805258887069696 -646922737060980304600106028373114880 8018753558835596339288901486116864 7291151478781313839714089517973504 -966538195861098109174303520192462848 9238868611363185476048737540243456 1514660832796198283358562253012992 -600634938719701766131298708366557184 1659139615877402680903409000775680 7016955371570834488117910115975168 -552445813024596438668365081757089792 699164972488022446753008674930688 356842084592900747587401189163008 -785549614113687146547204450181709824 2152094824961722793962997677031424 2421004048130199869570815887409152 -229610112114692196424938155950473216 6555300263722346984666044227911680 4591143035383428423125230315110400 -218500364290441639425849518161133568 5890161429373241477899949476675584 6705839228516231768639412899938304 -548507373861735703942441185744781312 8479388234501285812291288019501056 2887939023252325373563117798162432 -522522026368605245084754342756483072 7492589212457004250638704334340096 2464861703514204245874440411283456 -340297596815026789915178333955424256 2533824321766930851330399538249728 6823001503773079294918302193680384 -833783649041212012428598691026173952 8377365005579314265100340854521856 5331974913849758721300030732369920 -97294349573726422933309431102832640 4311387915637230133894229939716096 5701793387020587686857292422053888 -711645791414396551149472875810914304 7056738101835404146312275866681344 1805344073199521382763432549285888 -734640560668347038133213018250543104 7972205114709342067239209098280960 4282028534177976204155915398545408 -600870781791066335527422889379758080 6675956316551236218215501467222016 3109775594910075299962592283328512 -604841235205963356469793279392612352 1886155304014507336897570380185600 9012967058754680099839804088254464 -420560491450952024685862135403642880 4455162531244321595822273346928640 5273166926793757221674499285450752 -25467041945538385450114488937218048 657382364202677889572884631781376 7417359786788325060545712924655616 -190879145569163652686924343005937664 8329616692658772788486603020435456 8904143471120040897439475328614400 -351513712946680256004840182540926976 9613064038118248701586258201149440 6580953556080281831907185087479808 -397673512095295660955766416383934464 7117846286804015983075494761332736 1844159654962174167732814857895936 -753787384749495744789227381628862464 5811792406834588980099332446355456 6804939295354075391903978716397568 -115719074382840653715175012476911616 9465278675344633033998378068869120 724925042311913041790628219846656 -267393738365233670088838661208539136 5855766315630483941928419859628032 7637109948852642823177825949843456 -372508035528013475560297713729798144 7047595812917318370522765497204736 2249130226412210821430346124361728 -59162593740216735529416744010514432 1973352483064306715955059144785920 4393577345145662180777376434094080 -450656582637909482913901482004709376 1790619652259302319223932964569088 1975279892281055969321359729754112 -982190324035214792616820525185892352 4089108603964984509030272195362816 1379566522505743535639420475539456 -735022764183517747917302424821301248 8493455721849519673343808320307200 6407634134071337600402340184064 -811269772318229637676175785979805696 8823804923336399048371751580860416 1902038555357189274954666516414464 -537950108598614499916886256704815104 5309085611328225964091665836670976 9910402959036960101742883467427840 -227450315086977582174480412578938880 8273347906837776015029032068317184 9274739389637419165830131316948992 -857393177757144255666706327235723264 1686167009851704809847871219171328 5994038307758920975462235920924672 -279614226413996829056749676647153664 4557731306498531545720222054875136 5924830163661678621688974788263936 -606744004995415020499779920777445376 5473326332984404910937883042381824 8139475177263370406663450028670976 -764808674643530152689274242388197376 6057399126673783877502696670887936 6877889344684587780500239360720896 -476780832259688474308053363375210496 8828279595908616996875784509456384 6654264805933641342732409419857920 -750356557860386950112300941560512512 7628676265331416526229004632457216 7845558524529257767504339777093632 -736744035168861757451796426983997440 823296775076935745795675400437760 2710709819836520294447284930740224 -135197460874216283417497966764621824 5789943928236692418456579821535232 2438603037254143489789164274057216 -95514369738566683096903632631627776 8662154422260669590260864463667200 7358001172331136093131897537822720 -301572358002011088957623557188222976 9240616940076173129662976887881728 140244349525991390029368220712960 -792473567193336197535243632728080384 3924208434283844784795127119872000 4596437473485799958335289473105920 -999779015903728160720869969738334208 9468094111307666774679985074470912 1345817438769714855001000517828608 -723199713262664052787064636379758592 4992224579487409435016213209022464 1601767487602249202577810672058368 -44651004101536691558868206170931200 374755870792862854834551103946752 8686590313862742276643813557534720 -93021074226510105171503895539613696 5977003701691658021092528591208448 9245838319879525199459269094670336 -100627241792732147309965432085020672 3881393535470484861195441389174784 6057443635862749872851581596073984 -926042038990117872585294252448153600 2542180136092399918547174837714944 6947308834789702400900972477939712 -255135917324985344951108176579657728 5448060667270855771075136282689536 3445518520869348392767406351581184 -225563485565699095101680917197881344 6109284131035479253560199040991232 6615934843183968504842454206251008 -150028007004568809675821840894787584 3079165340573152992272059121795072 6910110011395438986436769627504640 -629487356352643257146290043696971776 2520506312441160140810013573644288 8459171438155827877041132013617152 -824838767477210478276529370171441152 9666952491047231735537583683272704 1867950445137991375356984603705344 -785663709723474696461416723487129600 6992806282092989612539424750436352 6080564782143185779376876255444992 -35679809027808016153337925931630592 7314480179501480412448760512118784 9775443349042579587869672264957952 -355442160405651700806468981097496576 8831325503246639695913334622650368 588020779781881377749515001397248 -636362321774458344419571079932018688 8424815758637912130548131189227520 9113182874445340814661274268860416 -99388507735311859165987790739472384 4089648151253255895558344511848448 268554363984475719984524849840128 -150443502506171895462354973884416000 9933878491623042695237974211166208 187901448958414917747706267959296 -872981974262336176805828928135495680 991628893043969075388691293143040 9569343414830811270095501485146112 -310478972347562759041568267063787520 4966502881669999739161584565485568 8005748585809883033549583274737664 -521019525672972872518200214098542592 7126694191909800813434111940100096 5841465159334741458203729972953088 -486169454624447232799719699825819648 192232138682550273991598548189184 1996680663358736275103488118095872 -849853182266038728941500629042331648 9708521426180823081705513343254528 6062587496473248292758534829899776 -302809209805463981288864437835399168 7013454050699860579764349530275840 8944795999215926797726930981355520 -660113087416319185452644287924666368 9666065591087943601832162014265344 3681275092497577098370939598405632 -822850213777566507851462809944588288 5136933939953789167422052589633536 3552170211241784191051153430020096 -491569676836245207478142083027435520 1698075829062670339041888642793472 3388011640095127088774134498328576 -127147874544479775432539652774428672 6788885889795925024704199569440768 2194020550323123782687507540344832 -219210998132487829422534770062000128 9772592201353582654966477631782912 5294104478576376668199900279734272 -39969584072256631402031302808961024 9471563014722159133777675912478720 260189026166691394922320970645504 -11836973694186402890034906484703232 1744448918236459802809447124828160 3212253514388097490924926486446080 -105185465489987443145864853902589952 5891002616734269334064758882566144 512474682697996488595450120634368 -484352640346435688092855428771217408 2922346887291822593316057486721024 4478431462702420842834736730603520 -251594663793243789181198759100416000 6809583927143638907620524378030080 4562481827010933476443697404968960 -971690215990143443150311125153742848 8768341729766106723226502352076800 2646122157952388984320117895593984 -517179507003878549850228922960052224 6774536182489548079467785810345984 5283669899309979510033017410158592 -979517795355882175050203132183183360 6036910487424873873660834725494784 3106622406546624495080526495875072 -843663334142094773874426204714434560 9209846223990718099876403897958400 4399481303377819021632785688297472 -608262954007620452163075852990414848 6285730892523099954371250995855360 8863018537874045091999594206724096 -796628322542847790153226266215448576 8174228780649665985361310329602048 9765285897903940831818575889039360 -504167750026017916775403051116658688 1849684578253384437273361733648384 2615013598874382076737530200326144 -744807771058248908090190008254726144 9673374326087450526589322461708288 565919457718782086484731822604288 -92989803119878474351385944904433664 4960435985645476976003504477831168 40658051209084908480299742003200 -444818545484122553333819257202409472 4230067485809129936412735287853056 6145863252243388920486658402418688 -238783205293389704686505114107641856 2823762469867541733992645198348288 7180347006459325226893068117999616 -774840393170192942085153172729364480 3427578316256873265652790712074240 7960542674749279818177376304496640 -353822998506217791797062469970558976 9315702937055034250718628785684480 5750287929792278827187511094149120 -416811795493138290025002577015341056 5934908374824843708756721357815808 789350587681738581403734049292288 -396805582218562914291947051195301888 5827744911094297277795298363572224 4151322965143517918008612531208192 -812061957373983345060260544902070272 6341117948441690974095665759518720 1690573528666192335682701442940928 -887671632654465892735383654312706048 6881813563330866718638371822895104 10810979951328686978336450150400 -522480485985898843386081417147449344 9509288888413897293333637409800192 6243059339516449067668095654428672 -160974745936725504996033683611713536 3496249588608426826075271904362496 3454642178666565869366488690851840 -30227828682564297744459206789955584 6865548403454122630396496735895552 4247334346998430788810587924070400 -679475675155078242097454384127410176 6866973344835861934494630253953024 5140563959024454116842261419393024 -454669809239656265515048378732380160 735504751132070914714817118863360 8328769690490461990552072429240320 -219834356398193311515984028103606272 5610687577877636416605400300781568 369868143260437401221101659357184 -597417728547280132026552223042371584 2368421133144929300382531505356800 290364439895775329635671077814272 -794293816416565775174499107583557632 5259748060663514557860305453449216 3426929222159526159491809958428672 -612614976058033494498897941401436160 6526372334956900956471106971107328 9916288349112681022750569877471232 -943336521225138014373974047446794240 6387699358077865378549192198193152 6259719133648707867532533675589632 -38838648803025432230247278384775168 9565526025853480950999650278572032 5249003329451614361303233639481344 -209593544453420044272449956953980928 8767251894318115543535652421238784 1606751887322345918852446153605120 -40781018135602023929377325869694976 4694853919595149529011721632481280 300311281817291151772146982715392 -454677170024158093930945140987265024 3959722646404308806098741972959232 539143933979253886778646705733632 -810448420766263377476098011292499968 2374837647624114118663344494739456 6826792861125742419074426182041600 -322947704504647217687426969362235392 2713469895228327013830137246384128 4751955864389237483128107143528448 -602885835171854584537558239762448384 1706990619948262043516721589911552 1473206026637766230522606693384192 -908974398159561350974933408841465856 2466849792259016453370362455916544 9513692892795409532496895199412224 -882173642463669501871633502354538496 8983518790951186679603817850339328 6569723095344590221877026318450688 -688348544970884829839703447462477824 6396718118853140187401310590468096 2786872245006579748889306937163776 -102879131667335661276162787286974464 2261021400098376633639965781131264 2694010853942596865731666246631424 -760955571757691900131117020611608576 8071570093617791774859690271309824 1797487974388193192864639868731392 -305760356267691032893759542790193152 394044384889130686564966334464000 6693365269383169740858056800993280 -120493851353627338884522183292354560 3032473004190950293039435667734528 7409072947498647864823442640470016 -515841102013435680268297957848121344 9379426778628941642193472189366272 4068126719521057360110447516188672 -883812773970843824692807067886419968 5040835455501689781019873822900224 736088041586653445654430435246080 -388369812409288416404913647576416256 1932282729205266287010187803885568 6077074007145538280418979145056256 -310976170429259728863499338964271104 1638531872594572424535596993609728 8510237180546840727403952460529664 -566607051153984890121445642661265408 5700052603210726815501590913351680 8084778006632836675237560899862528 -69138527858810172318857759763202048 4489501911441858871788021856862208 584033348704096891645906166743040 -617620817774678240023932267659264000 4864163179383359009424295984103424 4738206612629846475095215198699520 -315306333557686376768400676087660544 4903280603769930951297668340514816 9039518799407559701507315794444288 -259522312654911049636019549874683904 8960361094800463061760497055432704 1081266565692308624394061275463680 -266655188626490672231142773204451328 7462048711388181266105634159329280 7691178754919925221974611729580032 -359755275142881099818125118159192064 6127475527399795194447594306666496 5016955092789675122726410597171200 -912433292311753670649006317383974912 1343686348116272331240328864464896 5857167036762312613158649826639872 -725272825578248138131055691188666368 7075128846119659474390789270798336 2848846296495648522133427432980480 -768572822285846008176600228569284608 4853985037099769448610025149825024 2003024050469642660034645795536896 -834086805896003939558955671959371776 8573624866178284931487748866441216 8165688371865475370709932138561536 -543557184667086552108034000167108608 2743686705061166801615211231969280 4978344735270462368164792533778432 -895145864148710738676114695252869120 5203739041431535816889414258262016 837262929844914982913558385262592 -458114698892854018746173702885343232 2791976570038657301824066335801344 7223030919766470649978045278978048 -733875891871316561506853189633179648 5056578767422155849092509391126528 6046526282100576422473327932604416 -686584692795059340027178859154636800 3583255973052588190995875098525696 3857316566397961964831210691624960 -787740476291367719113366822824443904 53591313744401349852381218603008 9709004857636653112900706191278080 -465345598640493415755846638001717248 9828572180281671098248778385195008 3871924284174010437134952746188800 -593197927345985150848317403237974016 6721507489578654487878355216498688 2161055376147941548529318591725568 -541385212344329484428261839316451328 7076443632882849905627719811465216 7162912766502502073436581169987584 -716073696301749896669081998981070848 1737398671086604827470127289073664 2953807411887047856167511736188928 -504200123430722627668079574115155968 311831290893253344194146905096192 1828320442981514745707412494221312 -333954793618631366235734370125086720 8418490156794522591334711626301440 2699133644329322347732226216558592 -797033636029133352127958540364021760 4037873149557742545206852242636800 3702201927984040736982408265465856 -169570688676849172342086358689382400 411579022584921245634220309610496 8144122047208876219611776198639616 -244881704790917174547687231757221888 7829372461832854042912121044336640 5925400401518986102707227451195392 -329943729907981383528087620719476736 4665375826994648120556348900376576 8990276967618766833890839628873728 -501705585149560273933471535264169984 2936981387297140683896248627888128 8584632598336664565529600111673344 -74122754335431929119306959827238912 3794032032430552998826365159473152 3622153389054386245925149486350336 -50936488138661171355698017343635456 8889051558917921125530164239794176 2463907372774082508049549499564032 -853943587989042805237145663203966976 366959086834709786019892331282432 9676948854157399182597508198039552 -620057878325228323497444521799581696 9409494915989208372953393001398272 8224895127039010116072953958367232 -853633645119109722902056508539797504 1438164901202754993311498513678336 8961990400758443760892545658257408 -996361499583149399997758103334420480 8192299378220947778323793328472064 5948683931433521030411788555911168 -424343880895904905345557383339835392 9911680218042823479675018230628352 7265867814487649549879527117684736 -972048053574927942425352798631624704 2426918708844662454135236706959360 6604402397029230773642887274954752 -83961265876427107113483994038009856 3160983498012980941427508395376640 630896970589390832613994438590464 -921881229570579992727814697966895104 1279788720420151574039912601616384 7636793216077205739075461867110400 -435171387349971147160194263646470144 2400864120122367857358607671623680 589773581598355095989000037466112 -38870956417161215856112284666429440 2559391449421376957401225458876416 7765624165173556104048105966534656 -924368540028382322000388652756107264 313116939051396017197524929478656 5822982794699857909917662251581440 -507354097779935877047837500916105216 5025615244253360539568763683471360 7084582554961170107741218610872320 -94070501367087073569314962969460736 5893679289056680493852662679207936 4187878302039943146577652248215552 -625192709287107614770556682878582784 4410871244922586682250356932476928 3546109414010605446400342468067328 -10045098126045674735804596703199232 9252031454926170314900383377391616 8856725835523731164472216528093184 -470023562864239194810828269457244160 8789483888669469801997319534542848 9180024975545653740005075955220480 -27234591458725951610072082124111872 8094246126641685620574288332455936 9859400740691212130995483871019008 -792343124472446878489843086328332288 6704743470802558322160268904235008 1280518844344847445104064307658752 -968127557154796198209924596519403520 5647406670792076010236197726060544 5077883524876419481383500295176192 -295234763434114955157639913401221120 3411421155725842479338138003046400 1071647958783720224428279235346432 -442046860065638062011796728471093248 2067064323966663565063921447469056 530222981335887369720908281282560 -977268281838931933030985928322056192 6607500980082668314799570847531008 4318793835541121931344674895691776 -452830041411735787449449790836834304 90193895284394855476061903257600 3662426817796681111732642675425280 -736288209703698997461005733090820096 7283152913749160259771627944804352 2701047348489368190312330580459520 -224710787921701300645158317352550400 5552532355214870775570937795313664 9322295165646826763553305184436224 -807300110204193223956351654876413952 1071382245353726605856592063627264 7637591116129026162828446571429888 -172357219880260787298013174107734016 228912313141269001692252091711488 2776363041663323824127183050244096 -150265403232379597605862271656919040 142728137986776944228711834583040 7330835165220368164239163149778944 -786501204884948651141563414193635328 1000392871602208182384714420584448 6511091872409909750406864781180928 -790784713772817893891825262676410368 6332790704749152663755320807391232 1409568781049163016952663832002560 -286060154664009404435841422165278720 2957199129245324769104425234989056 247647241755922463285550430289920 -734787030757907353201525755694022656 3905819039256426879774112272613376 6327898748105958276796689156145152 -433567955317097331225420266033119232 9757546402507407960209457749688320 9121148010401444480515062540271616 -485620775066682084140844137274408960 4596198751097049892981458958548992 7150696354272981214576961812168704 -248548558772672051656529736206647296 1918946346721183383263377727946752 7232123811820567052018628039802880 -468444139294023156861879913994518528 2798626850162310415583531098963968 7044485090585013837457598252580864 -957107196272647544916731835027816448 2211429163913591360086813458825216 4248067986214235126737855278219264 -195406608213646546059416542138859520 976816098476221609367827155779584 959440138781912382764213520564224 -233304565780852317679375350851698688 699201605241420054902972388212736 8434635311528592987376006778060800 -985936867837025878060779199105335296 7671283259702139033242469314592768 8708280082174841287373227208736768 -458393465891999577906573428796686336 9041290850915812362649792954761216 4379078231628375419523609195970560 -369769911388124269924929416661565440 1506470657985168370282582153101312 5184664814557306677937553132224512 -389594585838482475489930654234181632 5918428473317168362810248274116608 6374871727907030294966412041519104 -902617954992178950031247172744249344 156654164628927695880341887647744 4584643757928637849271026208210944 -743223605668080329200023379376078848 4720393973325241752687189090631680 3635931300434645649181097137799168 -952986925228406259133079726621458432 5608381466856583119108441246793728 1835513093387765037590705250238464 -916315666124479264690195255261134848 4221192942717418859321124311793664 8187075961364601997127945610592256 -28125287638882790527731392724336640 3977864767176890527068226305654784 926800760360765823021584476012544 -596784869456168235503656078470545408 2567853279846760705671983414640640 5098158050378539466041973723365376 -433186755959471725932284978055348224 7821763919658220750406705523720192 1066615810860582611842187409752064 -788631956567430311591867616000475136 2348940169677250766385179516731392 9031127796834276597030281868738560 -216070077334999047942808153291227136 4562161221232456402452942690451456 7264860091160038704753686335193088 -274627473448662583882381578813308928 1435927128176117634044830964252672 3598045362543658875574638289616896 -7254726964103806362245670855770112 2305664828464987907204833838366720 7242595872746128007256636884254720 -275805035968247619518540106283614208 2982397893761014895480710321143808 8222959256548310134065261600309248 -307204802778410617408997949834264576 8177226144686076545577369550716928 884627944981213301115504442736640 -961975837928404948148106651058044928 6150649369314326054654640182525952 2235904423723664773995012999348224 -933185501220195878196532191665586176 3782937613694733508592928993312768 3981241522261977827035038124867584 -982844841916598698077628760728797184 6568458036977825292952259876880384 9486695157851893868725687409442816 -617365317777725684925573136331571200 8554966586327843373433335828185088 6032142134098575433707914283450368 -142613036119048522453003279842410496 9430177567334955013889480145764352 5900214027983905088340701902536704 -685648505247908146167741051190640640 8211990013012048445386927760211968 3412409921056760807407717175001088 -184226764785390642838377175919362048 9172503144523750596569009112481792 9055354078473159472137461624209408 -792885854551120085704498015281086464 9933051231944543257812005889769472 9361131472286960529053400470388736 -301667263799693039012241598492704768 3428341453237871670821056887652352 6033885335644450189546449128128512 -313433439054434430309246198148497408 6199032997549640348009871278342144 9614233237866379116084304684253184 -692401400865967689434402753913815040 1067944496074401708200989657399296 8601246311397294939035009787363328 -253733143997854224492727049182511104 1846253323868474573541859500490752 7215435511624009932173156938678272 -185109312875519979886981979649867776 3581772745303507794990932789559296 8379145076318264295319790403190784 -89768757289197507990931935613419520 9063707218704258606460091750154240 3024188717723392199835936157073408 -149753538027281643630069268808204288 9606097613109952121850858441801728 4439751109370605951443402273849344 -957551899670576777739267793534058496 6381805884358801760608304859447296 5597688881777125768110880688439296 -10802548294546729523078206446370816 1449071626208493866844408034361344 8351257523172388270184822585950208 -794205093349781027433118207995543552 2444067770762911802006513234477056 2135820864569560590684600643092480 -60273817493580693871097131346952192 5372419568183125239393716875034624 5584363120340453389136924864675840 -295255334496483286825221124557635584 9421338068247713161362791748075520 6159984509809720208778695570096128 -816891068952000369099718019346595840 6044863497915965223497078514122752 1728808018136862742926617433079808 -569649153969869311347435914590683136 4394776223843256289707533585612800 7744286646364736525325106809929728 -866210504391772938944049699451043840 7727624604919296121799865821822976 4555832630628521566210268447375360 -638183277348186376016637881906888704 5188601519432945487603670089465856 5666175901963835003025966929805312 -872149042114612636044417439027429376 9525681268252222711210183258800128 8130256693989962626130118847758336 -325262101466964195975810002953699328 5788269967242206618335141198561280 397785983165251426937979292090368 -545639952239407194082021292824854528 4179142204870266856639171842277376 4473802939891723405260795257290752 -898741782155335582315937616929751040 1266307051773327900646508026920960 317320229233881555032237250969600 -167598942606706353498693660332523520 484416600914445342694091255709696 121005746458635653526619905064960 -945194304181439376715546828078055424 6356846537581058101495366074499072 7776150682509172158466877309321216 -934421088014222663389966523294547968 5043315113152868366018624675119104 2088706166099850293898706084167680 -500806763713984900258932159777079296 3978663540709766567929008573382656 4271692143726505925599621487263744 -147613978519466735496742767098331136 4208121171451623657529068488753152 5690238120627554795082154726391808 -978546060920561104117157729922973696 8695590686061653329360014236712960 4336409096357738417303287190519808 -911173039774834327708087990307782656 7432657461974099048155194438189056 6863255256042407320935025279500288 -772727620270798308342164209849597952 8803392593610235002825525520498688 4543492527542380935202964330512384 -263836209642846639092213589114617856 8722107688218999475938314260840448 5419828219730705378041936216064 -831788211330574990993356587924455424 8885457025894977607317792766296064 5969672645356717391916747989188608 -644319073331645449776790338201976832 615855288738970664952043304648704 7154498922168049115645813524004864 -479963469486078697325195931273920512 550227957345903100043504094543872 9189311548164147191812133604032512 -680567605580469884770574497887551488 7599163816522598722786252455673856 362137122951706187149424510107648 -404828310629295050128096236725600256 2802196370889183767447487226314752 7328740768680556435109596769550336 -299091526397213026206791219143507968 9475043415717527182057720181161984 8157927749385563770444898723954688 -165434259757866924242626303559204864 6788575564375179293499150185791488 2781246183977250320074748144386048 -856481447541147980262163754875092992 991639432812468031500043138629632 6269489093229062675476659568640000 -235802266505449607292058757431820288 12889482429076250860374431105024 714291314624326609979228962160640 -730833016464752747227775138202124288 1519194086483255170415281087447040 8208326394442500148134510652817408 -197995434438077199007014718378344448 4402186098029095610482605456097280 4636515712745467722708869539954688 -17334605502446166162810820414668800 5486397114153507593556802874114048 460824272967859376485222076907520 -121602280401183529154383413434646528 4956606333064616981479084370427904 7486434080943469147373591429382144 -72895413017411916567569761614954496 7606602912196601427205540435460096 1250572170446693662131684238163968 -584500654240518400922343150322712576 249910963524115751565720899551232 1994715893755077802036325930500096 -979234636944233793538181771646992384 2620395492629259019299724426477568 9378121523067087314311525431246848 -234025096251203136402700323128344576 7930681956742639688512398996537344 251965951862586266477066195042304 -614991292003861472485735900509110272 343324601418327548515149586366464 2647212532140594349303374005927936 -11543887828954491130975087803498496 8163944175566292726236344571920384 3545600161190297265448174464532480 -905100022466063834700084758261530624 4881258650663581364385603865542656 2900965570061282101759421276225536 -146046427992299144406056947643580416 9291554037918701767524791546281984 241367734798012999903148809125888 -186495777121783180935841725817028608 2665812858760336477944053707571200 1045978361000584209176780934742016 -858339794531715274842491502471413760 5198778909507732279298150822313984 6625519552793761263112054659612672 -510540001575499671196861401325895680 3331047017488489133115329482850304 6031892959481049372693577018114048 -555156539296734556443226402231156736 5744585325852937050530323950993408 839609867393406822370847934644224 -634699880934586500295496454996230144 4043372073508603135292063216566272 3711716357795170858145496688492544 -230546074690060903599593638875627520 6599049499084273147868149673099264 9755912492860465535875666707218432 -65484365821039952718079419716993024 7854667131065348281017071229206528 2792802610889810317688061414080512 -342737516786885883400778795058200576 1391615334946115990118948132618240 8946798032509534241227720280244224 -96546973459728815499275530200416256 7937748031937714688935623577829376 1479831041159408441431568922181632 -167823243112547528948639166208409600 8345239219600057078682256297426944 5943093132377875076338898901663744 -183073884568743123022360651348574208 7630287495930992137851831702257664 430934807800628827895066460684288 -810167239379230659753563094756884480 9314318742370032994935401724510208 5728898722312319595996656758161408 -289274819027665582573067270491209728 3184772536726063266099353438126080 5052518004820732923007873646067712 -129675880408656905990571001773031424 5079281753098151017444834604482560 7515616772007274656972084242022400 -840464069937605333833755403812339712 3251659728801312098629047478648832 1134282477626346659537451397152768 -638853405325154208447644737655013376 6488140269327068716460198277939200 8411572767885870712141560980439040 -149553564651461407734659315023216640 9431584464038411300096109793247232 9704153098188545819056245642887168 -191850697058270895910720328846802944 7412051210743234908492556012617728 592837000979272495642890637148160 -14354513375777463032089140816510976 6663268334263517255464055864295424 1427169592309299680920788908638208 -582808301769153055445753702970818560 8386069107417085136088514657517568 9144923925843793306237718790930432 -254527215607846161229438805145026560 1905497674264396723744754135728128 680318655009423568978921272639488 -195711669402466237374501322359832576 6330122542851272241903583994314752 929554538908694529398226938757120 -99057319047922597577440257990721536 1853008983050667299782221864370176 4038346475735287730978782252630016 -660573559320914520323992533239595008 1200489191290216379404724859830272 3666114077882585730155556705927168 -697725578764799686999034621966942208 382266317797116294757614608187392 3794924655156774582810171825717248 -709577427513847899458390781698506752 2351247488764212850844654184169472 9563732015222349324854993296031744 -145957405883140374549544686606876672 2003273866785157717932104088551424 4416412430749230511102145257799680 -61928793728148043271261027703980032 3200377797221369395993075450380288 5985661200583851944773789432152064 -744413050730480480108590693475155968 6279468030231856451320951624171520 5850543720052199897788250603913216 -347299109333854113042281094696665088 683219620082782777849776909058048 3430884294088649997330415548891136 -575322762951065853059219694429405184 8489357554367216546657177155141632 8817406663795688022547451435024384 -296932094812313575931021456496918528 3764727979258208863132790143582208 3245059698948035313972640644857856 -687405380022096063499395247275769856 1672608560406978173867363949084672 9408678398630370867136405635596288 -329698521267164170594459313760108544 8461050152118598720891501133430784 7452897913649763945241520432480256 -363057344658556733982726881602961408 2705191125768142450836147129024512 7554696822193084432635912716812288 -548599807151112293780298263613669376 1433672942265877908251788108103680 1527068279123449269804114366169088 -275174640030350734382092717377191936 8107712223601645317295099999158272 8555238211262082921230552117805056 -334600458134557134935113773021659136 6626000179725730648147953172086784 513154600846282904174817552891904 -448373227670430243221992908760547328 2566469633215200338879729870307328 8975980972222667423709392764141568 -967053149599298946939084146581962752 1253876085201973585133654528491520 9601501968269452720921034379755520 -880212010933335232079989986937536512 9317632334174194900346700457574400 2844790912763079461004267449483264 -219419887134195883059836789391884288 479580865957893596146852933140480 4913986935347645364460701226106880 -377864185508637020589682082537537536 9652952669315308222591663079424000 8505476924677737354432162922758144 -142337876131564187653114205061513216 2620955907590141809388441655312384 2475396057292045390552994848702464 -859475742902938434529140434928664576 932244085852509065293942566682624 361422639783132323945031579729920 -36211337753576899271602769076682752 7558780945377218203293098245619712 9490790124709264613260252812410880 -370052520640611980265751058982109184 2777085567033685940251966385946624 6841609002165965263997939224674304 -627764796432613499521914034454528000 6593933691733384071390985566814208 1146214970637983431312971694866432 -984481896108493752620209462658990080 8148156234788810466452894063263744 338168403478428646603930218790912 -445532170473292130374234603155095552 5992275862626092856507575595696128 5937611178521296759969683058196480 -636905937314768322921241290794336256 4817231881120314996079923285721088 5305805999705966426674348599279616 -111580465402844193249138741788803072 666144939696886644712914550784000 8430365935321483296286951918796800 -617548867981976858074830654903681024 628753666931211591233052449177600 8925165895052933802552559809855488 -773335225980011188183221108067008512 2000289047285924039124817817894912 6925082957702154712309650465751040 -206972652756553580643821462545760256 7659892690273232439946697804611584 4980242806383411912282290884968448 -618634323999311498030397873369120768 5246968255474002958251795664601088 3807879268849510159262534084853760 -468752595568210811884567393793474560 6464334100858312642383923034193920 4714725946771826124613493687582720 -568297402675474561921591713760018432 123626418116031068858122179182592 4392395953915673776622488694816768 -51129012394154526538078146680324096 7232927222774935570309443569582080 8140381802846207118836673921679360 -646127796404720511766364060745990144 9518248808663566991459304140177408 1655302679408382422077285043535872 -721451310926141651028595014616743936 8508960550873328654202789014011904 9554026228938287354055363506733056 -801936181090913612640648549894193152 2717092094723030231492075330732032 5906184179699085119238650422362112 -653103673233852026242214787534553088 9823354174578498715105430807248896 5348485099063961079374831257911296 -60553096536461285689682895191408640 9852781309193787971013823202066432 2478362908891278495016403196706816 -5139436931087045757786568651702272 171762680056160497318419499057152 6266907350788827273884233602433024 -397449183219247138027698961967480832 9018972905329557082154066369314816 6245491800070439066145510280658944 -160753948316806789525584348117467136 430874152847855806355238568329216 3987488634734496697062582053240832 -555258625997648079842857897995272192 4105287625317731359453792788545536 3967614558295173789335640441094144 -9805913339848146277289411827728384 5875892431123213218335858974785536 7924929546180373558717384631517184 -633576581566971220166445935288647680 4749880904830301921492144440213504 1533184570407759043315420767453184 -424390950259413492390991445054455808 2476479232079401598540681375121408 8642350597992305732466079537561600 -700710710983663813266107771362738176 1324740411131011049558235116732416 7570373243677134021737938820268032 -670732487584579459083428110788460544 3913857393172945521955368689729536 1880517352355642624282973710581760 -839840568745795650384082820633985024 3592554750966792578968456282505216 8002613808993887084819635331137536 -860155528896650501069693933529858048 9476601361188014452550051018309632 8874206813512236483271553875705856 -904731324131122336977670365339713536 9779906003608186851217742804025344 3309883842012561097925266098880512 -320441363111016731453485002759602176 1571012304814516351229265312743424 2796796397119291556060925467295744 -910010755653564271900132154630209536 5526568671419345676406955385552896 2114667663942426687652650935123968 -530317334305242493799202710253207552 5682145172162464847230615999741952 2742345340224066326387638975594496 -249484372292049375304741529327763456 9726395641465638051827910908575744 129969791413085335942929013800960 -29815228177432515343561374184767488 5607391404471821248033482619224064 2767252502480226206397629682679808 -19414560428909832812490105886343168 4147181476619480065446379662606336 9969306384035236969228361206333440 -297784899342057720014388573547528192 6858392485550642337305489164992512 5434002801716100320962935632429056 -390385519845107577540340707189850112 5069240452569615432598031148515328 8474857963469946480749136083681280 -253128467640530687469431039893438464 268498360267046933433110872719360 1446150976953141460267283190382592 -808442954701507239602109858468331520 5966561769467842207148805814484992 1669050531156155940205211139702784 -548155705817682842918184163936829440 9362274800071817530143164019507200 5110154474141966549520112869703680 -792632621266066886127188555342020608 2144892968781745074003645999087616 6089494303518902205979391256690688 -897360601683230947243661915292958720 2244244239581081535305853184245760 1132470807656564099281971279036416 -336527782015687928048801196116279296 9803886817866362132152843860180992 8938795878460398865830654498570240 -116030634209913068326144586769498112 9332210836566911765746180308336640 9531967838076665326766514809864192 -773379435312338679751030376226619392 7621873025316601746087436630360064 491455081759429519193309391618048 -773718843255663272111816165325537280 9954921328819653069891372991905792 1026971207195258016010242522873856 -833921926865040376335811402191077376 506486920794746397572582130843648 9089613408178605029501538681225216 -58591557177027560128473829887442944 9316337494056179439129405681565696 2294190621131208145635854900002816 -670035526993870715748718713434537984 1618117662424396307746172725886976 9739027049011397788259040702234624 -997134509092030756911243587250814976 4517961911369081895137103874883584 5566338735874487911047549937516544 -58162393944102096714532509861281792 6659467881647938457855908965777408 7607640074981587023848582370295808 -405667483773010701822830231112646656 2693179164050381278222577441964032 5856027657154578276182586927611904 -59935958261755065463410907401945088 1932338550290210372157942460841984 3511738727725532564800619967152128 -150268405114597172219679775981043712 8276197020526191954368510474321920 4023848183496061553859188869824512 -730186950625913593739542828547047424 8140572390244069958548151320182784 2243666934356615379879496029044736 -584839819576947309796823928695422976 7271083043294664874037935704375296 2963044699756566628706131386564608 -961779380323737044050014464886439936 6286786204392359787774548824293376 7690775868202437031301390337572864 -841380809275841633720504955896332288 6619836677530383088601518238072832 3718535894077947355753211597160448 -216691000512760749608186016073515008 4397047304673693309148252340224000 2006217560352844394472472521474048 -580986531129564332802302771084656640 5764857198783563236184695920132096 2455118277513786771637565506191360 -645148501823314795731211114728390656 5970977857872814263871836587556864 7652150490102213618663616015237120 -483529736103218661645914695014547456 4426633519496361789762675448741888 5075280842641902719840958682234880 -930973833348337763673532454989201408 6921071978752565039346641811800064 8239267615293711439007697600512 -17190667116677649388906488239489024 7839213935457270625355730419449856 8155133333047507127557624900354048 -864221212296607545872635315766689792 5692908222881466949683955648954368 7462458766826402308764230507036672 -855348770488982104072722791285129216 6310814366095888427220853839626240 9397364181769967688063128170397696 -650148418291063431070821148421783552 340692904903425027711997325606912 4206765668671806294840655388606464 -971226443931088357057972998523322368 5943227247835567256972735067193344 6020924523408999356866000878305280 -346132798472764498009200399533211648 2866189163302958756212768684113920 7926877410102395662385532532424704 -22506337917490399703597300611809280 2838218013693763214183869544660992 9999186839875076548704497873977344 -214531754024210608375215046000640000 2207128675012871461814648170348544 2520874571173928072169940053917696 -249568052971826737583376895154585600 2530463330314419113282392379359232 9160276338373270175468919155851264 -845353943145585611589361419803426816 1037388469416883335490955183652864 7042328784928351351042089567649792 -674599047800126903929346481708859392 3151040482996335367762289906155520 5271081542633746945709375961956352 -63151800679015823586436191992414208 4012085625126478038805784486215680 5924451105749642391509793037615104 -168152604906380214047430485418704896 5092938002965758578497906207096832 982620384998722022147922887442432 -819071842505008105345471045882085376 7346245374371565128570748761276416 1562698586598611017345568360890368 -238078616776151759925470046537646080 2276900904366884205185210112802816 176725205140689103695430291554304 -658629890013621876445148480268140544 905360574976917210024893562748928 3930120181411845323016355581001728 -680447318959762395252379047205797888 7709606268647881127948709152161792 9543020024168603781808540291694592 -689815811155563415561508613265555456 8726495622010785994041652380958720 3213848649822661123835336253767680 -768463329870178166342851277461913600 5677410349265791363634767778021376 1774017146688663716565035576721408 -629564676410129049352628601687638016 1478179069967916758401000142798848 843441400418280329290347007967232 -31991999525752824610171207498596352 712859321137491355961058916302848 4930293695483508771170185610526720 -980669923072034653746090758199312384 9297713980328973770417055062818816 771907152712627652083278871003136 -550694433806183862361672175518220288 5797459781737507273677146517667840 4700657728737668222404612365221888 -205381082871374374635264635060617216 7152551477318190424447389483925504 9295257707835794593486360841027584 -525176257132292074514340706535866368 7786576977029279186789838859796480 9881416372378392114986882053439488 -909302860081847382219231193234145280 3958348007495939711155785485516800 9673167433264387815904180304871424 -832832080815206642087933309345595392 2667205264465756984937910816997376 1393950414149388475993522287149056 -45650650758738893802277475608166400 388961570675865834069149888806912 7535957695147778558880408913575936 -576139874601592382967877930842062848 6584313453030113578908194204286976 2519628856143490914616253626712064 -917504329241109452354433697573765120 4630048312402743590574308464787456 492970742383042018557298519048192 -351115647534198996488219934651842560 7336812367436442069891823054094336 334591195209285270548267082448896 -117009441587651677650816459335532544 5678839925016612156709352184479744 1468238787353461009814476799606784 -761283193148593576319643921344888832 3990614445268857331165518259814400 8735579972960236506057378136850432 -815568577239526946375698569685368832 3780944221255149533906088902000640 963891897471289656873913539362816 -410893970523443551452265992951955456 2652400338624552557006785318223872 5772666763718572582021335544233984 -87080471448165375005775505729257472 6531909245574607047309302366732288 778559489807952715307471916236800 -672420362457752217553999463526170624 5265590473595578608933042485460992 9655111701269332504340802977136640 -83861749984606642661152165925486592 3578453989547288368818294840360960 2509182369381292520074435165683712 -516270382097070029062024994844835840 3511522507856488713360282971275264 4553009717383405333310231698997248 -326718056187789314860856215259316224 4704860461709473853049704862973952 45185203050386680489776020193280 -219601198386882741339701114008764416 1639624620024825016556194898116608 2976161219703419651065743167979520 -158873141109884702893271132122644480 8464241277998313287849519221833728 2761264217098825231031175781285888 -711614259921079554436996522525589504 8113178898914658022545660271656960 9572923727027926562863213778567168 -243564437496856763010381557549498368 9889817432683577519071710322622464 743301920429857364346849309229056 -520419802917218983525893050313211904 3007998593286640473979013023399936 1724729155601746165837253308317696 -806181929139376247980944567069310976 4880720471102611105199610688176128 733074863318874942172020292452352 -573921335908907371792965500043001856 1591139072766673700271163843805184 5922141514774209275202880101416960 -923695270612972070716058337533755392 7582122761659091917061458927550464 5020678459098414323580615448854528 -817935913758773919091703998530453504 8174029102645500535816717537902592 5046352223027885379625115973582848 -128237047379489223983250031639527424 9960995235507715249286451984072704 8635773296336975769815411886915584 -179303003046493322271333426464292864 8738867866276373455482777409421312 5699204181112122739555118992064512 -19073388622590162780254210040528896 3901206780429374508873054844616704 7420787723932661893064920995463168 -943640493915922201357513037105332224 3756763248560414510318538847158272 3816746528053061548513193514500096 -539459890793078019263352257881571328 5284958682076209792269089897447424 9038949479525274783272728388435968 -449353907642109801456088819829833728 3309071481642821199969703484719104 1580061842094349869239340913131520 -266371152423356060576851137568702464 1927471453990716998549524065550336 9234688474555633014287781465161728 -573308420975595517957085421465763840 4671103955946769854541565851074560 3214493344386406655541134242086912 -780606231794495587166120261963481088 3025554407216390491574897863557120 4198712799181962157029614979907584 -413237488281589097518599765244248064 5751822267478939375816131223748608 7228078323106096096972988045328384 -436573208815024372918747563567349760 4739526053680796777488957474603008 2838157444676513455830164855324672 -88820397046751722799075496181104640 5514795713023980622205915655831552 2185762981672189115213100120801280 -259456435787093322659010716985458688 6983193674228370534595581150494720 2042948450252271452241536464453632 -237349416656688274743739831686266880 347844312762488893247242488512512 9734307991195511373943639736582144 -287962224858305064347945010771001344 8216036485718389942698538998693888 1276171235125224286161950258233344 -764733592927736479206327849502900224 5382713940907514862178002771378176 151466213901627990130920272166912 -682860379022741247724090811882668032 7963901297616356239885444579328000 1667145268351382444086137702055936 -467604197394703105985269537867563008 8588006048390828840936346449084416 7030517506729500286516494568783872 -257667298329022259293664797383458816 8120364196363490523343241575661568 8420687106346136864665461405515776 -614904697777691597113788129406353408 8012207624628031709988835565764608 3772642309181469529437800167899136 -634222357878786534199257783968202752 8648082474018602697654276747952128 107522149821418678125639820640256 -625385056116402229724999137015889920 280396200718673189046369520713728 7179079897225714216520816189767680 -159462538314344781252017525337620480 5140102738393245747211276562464768 308217168937066415016211669581824 -154779919210884280471447309417185280 5823487305692685276874806487154688 7054417538205456579606733400309760 -34770701756112475417413817416548352 4035825994609085771813737478488064 3331833294030569109000550384402432 -22771052887641026470874907752267776 5467867885558075968320969774202880 2709884035343723038764225538293760 -749384502607567273170484400624762880 3991996159253411746662454495543296 8975936258878341277613948164636672 -941237240620742850002047016951087104 1668208794293474822996657166090240 5140430744675522293412082768412672 -421659652619970926428804325289492480 105764088804140732846255244312576 8484744953246286665598535634780160 -257976007784940006883578226606604288 8667016825883263312090538908319744 5734146944256958639733254739984384 -558518696762353263617897933532299264 5737111814058604630685065962061824 7993253157299561884650966291054592 -571785616359622592561748611222732800 3322195971669789852729255533740032 4154517489698703617418843612250112 -234524259852290013637232549943050240 3389637877461862717807444761772032 3311029633631599851417551213953024 -981778718942409791390182950440009728 7739617871103544243827531241750528 5012307846817759318009952602161152 -647047732686486018925114261833252864 3478604837735643783712664499257344 7263123192562868694629732593958912 -205870051266978071761823144439971840 4789857941939206063426612504821760 4591409038904306680608699008942080 -183145644820147932124474750080647168 5191521381142765756431902686838784 4951437285078605356625787118157824 -17125673255425243419571562647388160 2449265470660766040628119392485376 4296319123077515279903769640304640 -419866555287717137792616414381604864 3431029988562115103695395520249856 9976752961647931194259720321892352 -635977631341072465638218751855820800 4578033134655655568168001225097216 9366249824750941773673083942469632 -113994990446703741415755170516566016 3045388598074388664256562443845632 3447145447480454988038553833832448 -897312523717229733648667981601832960 7940198280811635403888120209342464 6221127921415286151654481458102272 -904052681385984324158665880772804608 3119003406833660531808920412356608 3830841029413628765763077920522240 -433659464504731140802082288697344000 9055980708439943027310642591694848 4382155943956790568666065482547200 -166442057730299919530704420508532736 6169397591622546448940662289072128 893230513135781538797568235929600 -162600452319472976878779446302081024 9063286024845306202042752233897984 5779435345068548491996404792688640 -786034012900457500149848923262943232 8832471990214873121932878614102016 4514696545147940876042209574518784 -51328286174818896666185600507838464 9079106699349646009230626381627392 4777995684232263541929855785369600 -98527377063886256044466784648036352 8362661783844146480679612644851712 8878999608110073100565716016300032 -515877979701600370385594733364772864 3330221506220312725496975035727872 9787206398605997624703775850627072 -435838982708339382834038151795703808 1467838478033381061616285331226624 9835487222127767830217299985432576 -82738692453755320414284151598874624 8281461167213011848916999996440576 5311336590508706142678707452510208 -569033371335225931569650477905739776 9485479962967661965992031718211584 3842506711440178777738509492944896 -59361362987037057015845579655217152 7949908489600388319776875984453632 9263761179819522738985538043248640 -550649942151787288154740835741597696 1741501770737897990002292679507968 7127984824439927438363940309958656 -729317017649169655172242563531800576 4148691445156273546044733434888192 9662650942980558909004513284194304 -24436546364934305248740722840961024 2674347403586661835687926289137664 9319508688708770598977281607073792 -647337666843377226187203298117812224 5373962884517061677105259969773568 3383338724711102287298903438000128 -955916609341676920771973677462847488 2715034074578260062101160826241024 6759218166161725425785956124852224 -475577017415738260790552513478656000 6561825994926379730844034090926080 2000402551429360288148568605196288 -926168190894103721353042697767616512 8031444658865136922669346818359296 8961560163839567833693045422817280 -825672447985417728406184887423336448 7575911342442069652667160527372288 2987659817709944055706912936689664 -76906051479888532269522782573821952 9104333607717079139710751911968768 2897223067623991168650673037246464 -751261097513124891673868084204011520 6527290551765161465718831805628416 4019216328026739233933083480686592 -328865064655671426675138475245699072 3248852265970807282643972327997440 2440323093134110086317561218072576 -391864257894597692489342134769418240 5932951942170470974967856500834304 6610868008968290020182577117134848 -671454208993764609706537637449302016 8512714208597617766336306591301632 5141225239947049031344937429368832 -4876475554033078432338715548319744 5201347923174106148611843493462016 79682347930995933871595205951488 -119512532057345736221879474052923392 3645284187808414562557949210787840 8365678127400128862376114859802624 -148710778510873835113725011075006464 4315974465214816743675792608722944 2407621030416222503032701533028352 -993402282311106592382692950884220928 4320844075947287133338040348442624 6988727256844067112543529360949248 -241762434198741621982358377001385984 305543311899954796994955501895680 3667553184834747238271143322320896 -924772797061655459012576074937663488 268970459908220060303508914569216 8401904165461060821009836160319488 -135441424435532755867107303589150720 3358436778609992078720114138021888 5084953142990306103498631641300992 -518055005611654647852693866024009728 9262768457154243593294740369440768 5352970534030505586016246260826112 -387738819012098459560006266092781568 6797019419191538415353540328292352 2755157744054329102443130359119872 -975179948635579205408810252453806080 6675694150696668581991321259999232 7335050996887616424494928379248640 -602416372030516482179212029221404672 7864252588227330168326801963614208 8177370196603420483674001811439616 -210729064511526089070970352099655680 3037688271387106550741281076674560 1174939962466513465008957335535616 -903703157522847344006355706231914496 6578545492303860182791382949167104 5237636834425078142313355978735616 -886476956113374016706477112608948224 2583084924263320020218842292682752 8002362456132436658698126549319680 -713573865196274560179881558868492288 9308391721355079332753672905949184 9084610638352606531993309158572032 -145803892601373817987967072157564928 1248535059416088259450314600480768 2740569002745438004401735104200704 -187192693392111224569961837322305536 653851187891338148087234297856 7469843344730114998139357518364672 -899724275525469981117360442227818496 9351890729038350501200333784481792 1103543480595764059261393084350464 -968322345057245363945104399184953344 3304675494887807713482606760689664 4083276027743198095395752876441600 -323624016592516164958422464167149568 9331186523828037090605365309997056 5859389314880371321604111933112320 -504129753479734708897543779336060928 3099707123760224718762067418415104 1773759843933826860020125082320896 -377795058936626981540635249819516928 9761283449297560855432847368912896 2755443953631150807963009787363328 -682545519041208786744226176921763840 6806278259321424764689477682593792 6219743828083861091061157922340864 -664447156903717214799676299471224832 8158884702017059831729558797680640 7062134323874508639337702152470528 -116452784305779196379465184211632128 2667517861774975765603031531388928 2711130920050925743893981543006208 -228823315873644150510941613001277440 7690743624221202786546399456526336 9420391399026358854856667075444736 -510310277899534937806968662182068224 794882670536443837652514180694016 777425943477966465537591543332864 -691708939953511993711422858311237632 2422451855848403355085713006657536 1687016951629980607286505128329216 -403244226819608713983624958363828224 9355723155462957719177615116337152 7622984790655567957823042806087680 -696368625132052534566140642496348160 4924890588709730197053923095740416 5012279643053996075938493952425984 -54795582368900384195022862585692160 7626615551173597753533207955898368 7094799161291590779805756913876992 -1349422032210107426822831573303296 9788079768588027115603186881134592 8735916607886883343885767200997376 -813812992009896788812486672434331648 6547813005429756926194561608318976 8749280342176552888790043594850304 -220331851372128877459729306427064320 1493804917202186797644786866061312 7062198408182868738051967476039680 -339270170287212990382290551846207488 2098673169583342186050160802398208 5874353393050626660012995790241792 -764520624120610087745976800756367360 127082994962559661816680529526784 1501515386108682606304372994342912 -291913971524751965241412192470827008 8135489457810965624418513037819904 201812318329251573203198510366720 -574698797405781239885527913427107840 6083126911074884991138980394172416 8357421399945931720064361383854080 -996487530801351175823696659971309568 1683314723166059787300306243551232 5472592256225973456256311245144064 -66421354024142185640724026053623808 6991267036812629032712658000805888 6606479662209166678202698310877184 -775182138670805498544918784748027904 5534480813941444977018780648472576 5665187951806154129261892259020800 -683667470133975651049790564200349696 2819291155977448450467549476290560 2130951149431103882069995459444736 -707683797712194712643958976238583808 1993312945228744756404149236531200 1428642889703553755134613690253312 -691951876972286950565318744657100800 6951960389703082660634048101089280 1924955502827606462413682763628544 -583103560795380287937947931693285376 7412035901519552992363705813434368 6945740737942762417065690572783616 -430953864975673547812871728005120000 9474813730283871745049857997406208 7143926130366881830490535639384064 -247594893141202729062919283205472256 5169919234249392523179251562708992 2759650883429409657908744123580416 -130116258024392686600059255311564800 8866116916772122482409718104981504 3575971419913849812641676773031936 -773228046121303467660999991001874432 2882540837886098047771427272130560 780635284458800654664786147016704 -666859871919001556216844289600126976 3718169587910863757868963272327168 588782011743576265875314605817856 -644732858950660115657057419185356800 2141476294382805457297403994439680 453440850927061017559739274362880 -829383114116598044045868623684698112 3954358461138663959863650699706368 988628730588523448800204380176384 -790998672777192035612951176640724992 2027931214330002309366952432238592 4720828259774812503965027377610752 -840950147171812984311993060930093056 5815433093050830881060202999709696 1324734772851386688973351323435008 -465311106970008573616051251987873792 2450931309622767922042544112795648 2318110958412482006787082848043008 -83796728058082968839951732508196864 9265832648662641135442465386397696 3460289006014930506551788870565888 -933502096999452195112841609822076928 3930814149963126458239253179531264 6251566343799877178804802783543296 -941529575205223787809115695646507008 2228812909451332719141911623892992 2193954849638134019056854951264256 -221018488706355647971749499634712576 4238977801987035662824818541068288 152913581024790938494131794608128 -258595726833701775693230897539055616 4303945762133426623274312739586048 610090236942566611847487080628224 -199169910879630930260735512887164928 1047169329530081052177171038076928 6998179123630708337576454226182144 -960358050379214909289204433347936256 2261288545668316851525148708175872 5923068592009904390459855116173312 -519265951518440675203423253875916800 4956766516931916368352264039956480 6485555330918513996334614066495488 -636869041686554503950117978551353344 9566699777087579787108072403501056 713174873474725546118271943573504 -20685397988999735242304772991090688 9481902341731180252850353099243520 4800737342767061882976411051884544 -666198715698463929657507925370863616 796452124349245440732972609175552 3107827907515711489248905622716416 -215348991880536307930366949170610176 8084868326721222966716608509116416 3751455596595174086102982670155776 -427482069248015452159975486138613760 9907813547368932352068072916385792 8772864336226265617383672613175296 -790036160215087874947876843794989056 737732913126670235829196088672256 8752767456035546330060856548655104 -555722711204051341479686598748536832 2179716308569875176205576178761728 7308200038554609607135429650284544 -540025488701165847469398334365499392 8543783976596980794611743751929856 5764911713501440533393017604669440 -159239221715604561424156711823867904 618877226080610245384779505598464 9522921289557378546937574648184832 -235220970631148095308409662697635840 9327455281083730943704120004968448 2501311512452134867952100479860736 -243982803154863027932346234064338944 1310681128698372156966170903183360 8147731719032668220209462895443968 -523375658544503853959326672525197312 643504781112763355278316140494848 4039651720535701253727133712252928 -571141821982566359385940019636076544 2933769303152677017478268186525696 4075799852615934530177311950503936 -798897778067462704206374602174103552 5222659500950399687058946693005312 2691667411766535399187507650232320 -238058155824732907651337048270307328 6696164014581370373863813706416128 7502699996081430451953352812003328 -957479287237885556067407552915177472 9048293216380723154691856076374016 8606769569161292652060632670011392 -670747991099353226733503096761090048 1512511866283103235593468106506240 6209983482587954300916586451566592 -93390521692067065536400932514824192 8836745457394235323704813755039744 3104044010578864616505937510793216 -449998005506487597252378599958249472 1323876847179142314626094867677184 2057639618644097453494943229149184 -462625730695617123760327722899865600 6292403813304976064994481392320512 4051732227455654980148283834368000 -976844097673099532626375212468797440 1124718448400066062625251241492480 4369361736757182269343289273483264 -489372869784679477506697237876441088 3267254647578654275716674903605248 613151012909230239502239059148800 -592309516732585021349245567616679936 4604798201509795357113018415579136 9161138069427508808512577388675072 -702419641972736565674680179973160960 625520728927989972166267639955456 4154180093406016433423898898333696 -663654787056550351786025483528830976 8436552742844135102517978251395072 6432575614195244867319814380584960 -838861085232965225606550062670807040 6001863941679452237811213160939520 1879926005885420407123762506366976 -724701733959584370607341260297469952 9203523845743353772213507138256896 9542303906152933018581071655075840 -151604963586494473432228568739348480 3621117144244422635605020505014272 6829153994924771470522670775271424 -558190219050153621746811135986761728 8207387745900056735679634026266624 7306232445956626207163640241455104 -957219228367193697441269205885255680 2035858587693299583855429106532352 2187776589324956709056501860270080 -697828704893484560918713018022363136 7297155735003065263194380099911680 3166876514270739636894482747621376 -239350894781990308814556043122049024 21542683141242656066533031149568 4816240515420897325519114059382784 -924786937426475328410680795217264640 2495054458863350888612476787621888 9696003619475463014099506497060864 -618385625662737518306934402041511936 1077776071628307610840427835424768 4337603316110961320839982000111616 -697920337831846016075551037993254912 7801484383760614473150420112900096 3023736689052059176463456398213120 -381812825092059915608518885925453824 4163535561229608036493877089140736 4188806840647489802911863126622208 -523326001346661115077350917773721600 1946929241112371644687295828721664 2542831351574063581453172034502656 -991335802044529230584355041100955648 5580395382601898668980034254929920 5490956777095839130800687467724800 -218258976288101716927937600829784064 1568998063172786118418241649901568 9517293725714642772744999278739456 -502604422070113141715055335769636864 6618147204761052108623224154095616 8838617908245655880358314251386880 -444799253231217978332033671703298048 4193946631808612710717108248379392 9349653281439328158280866433335296 -781823409807378828906913238003744768 837030008449596786318211763142656 689471382342433546841760720748544 -59190729088680942593897963932614656 6027621474099277166737000520220672 5993364648065370126136166722830336 -102594116146723972535714402942320640 9171381611543764562409568977551360 4238744905167008767913552206888960 -285070810563232276448024046595997696 3301555611275743562708376742789120 4056495631746699161063029246787584 -321738512190957873989878932291190784 4678706945777300248208369833213952 142843260111044537017407822102528 -610671709453658184829146439947911168 5348489033427230220519097325584384 2090436902939245635554942423924736 -545094966183928782022915955336675328 2683487382227132475552423898775552 6448293344243325763775650433335296 -832840665048761186485716265583247360 5335251324847083570722272993869824 6102794251300124522494127939518464 -499062097980385468721843696388014080 1295165282526081635917504909934592 6416045655811115996647761563877376 -366663330589797755183534797332938752 6175869089042350833272791427448832 8096304998744633832031075927326720 -972079853285339813007359789731151872 9028137615332451258847527578894336 661582624183063181962373484249088 -695408223165578000896928313275056128 1504140342132253696984203936137216 8000704201910916882751080603058176 -186978688847612359791126054000656384 4083103084421920871233645283639296 94953260806180297673655078354944 -667551796252590133152516665279250432 4417587061569209823529291210555392 4680488973738547675522405054283776 -815999654771442746620797036183683072 533173803786951719152998810648576 3689872412212780166750043730083840 -911036929287050064392052295333838848 3649085131617826152564538401095680 1615263071565963602557906620252160 -942148666739545403533595519339200512 2105601914881940253639553480392704 5293117179273922944826464488390656 -266363061523355620592328882354388992 4875357595256447494122048581533696 803744342059164400587340685246464 -435277971434325714339987031351885824 6519546217844186954386703103557632 1426031313309071923584907226382336 -91752768675147797043663941134188544 244091469131507492147654375243776 8741087950732456235911574397648896 -526269758349243021842435313474994176 549873035196468917441882956496896 3717944584392667743967002044137472 -285208419007311532996721178637762560 1286528267571065071956267265687552 3252234425948253418339803930296320 -981108635430498775329414612586070016 4031733614306362576183224457756672 7157538945629529328517001787736064 -609445242862180682207360818534678528 2071477001486512753300253637083136 2341335848904360409597417288105984 -722286158447923260064566301419372544 6701023914532426731851749498290176 8205545558836484232513347821502464 -461408421566791553559941298943688704 7544365647896662096128563302367232 4167601622869192548454284881035264 -585146802429971808684926458337951744 6450417679143372547657863968849920 9770108862645078547629309417226240 -348410455923137680999552967998701568 1342047406550965462806049062912000 5458018349813194840446836246839296 -225341479981705139309645739029692416 8322928501042356848199463853883392 591356560887788378489413783519232 -257429144080701185964859100315516928 6990854663387768802056559002648576 2002811599197649308996204318687232 -554320608026800970973595224126783488 4037436110787303874900334114504704 226518040357073666260799187845120 -20238626935817685656174691505668096 8456842663505459329742702588723200 6452752452837709840517479530496000 -577493129821909603094413756671721472 4787531806046478368623602259984384 8616785957143133919965856072204288 -847480396806208676010833656980439040 9609689218732581800132859884732416 4876676294860034103147339144232960 -135925848527566792075787248039100416 1069219536998986983084180803420160 4849716872010980974088949036220416 -163745445602909805009375247927869440 8373521993288042817165404812607488 273986986993912786202307147595776 -316201439250654848535268242638241792 7938459457276486376845100567232512 966422522264918980272726808199168 -358836907197603188780591003704754176 7621335683899954853076377354108928 5091583040530357476267224429756416 -759060473445018531527759309058342912 6381041755676910490483834459521024 8664235353235870310283657959440384 -816597968676858457175186477858947072 372266543801826915959714003025920 5294112454761321193036032935723008 -363876442383853381352368066166521856 6148322863500017262519690501029888 1031050824991589791824859881275392 -906201709818859145190689405201809408 3033756388169645445835910029508608 814707037049803217969615365734400 -326988773542371192164075388989865984 9655314447864741294601877197946880 2382404483685429401696022223126528 -984604756908173934903583056622256128 7338909625359721965312462691500032 2855586149155497645410304917504000 -879961672949689374009398102251798528 8441408105123073103100459163320320 5957364661927144286919083400626176 -617286955227524895773845274587299840 1835461536750318461783700527906816 5298415766656366882903953900568576 -248610779093369021961452031852937216 5025965714666199483835865068732416 6370072743923717151412434065424384 -478564577212655257256165933221675008 1146085395904823190611558148341760 8139734905463247505606692963352576 -416828476451644524525224302095630336 2754980751202354748359675501084672 3553655697065485842928989397581824 -834870431718530207462946515139428352 3137919551306230476064890527154176 6329949429107165619223207549599744 -45099300406153262790344671921963008 3208510887626140991992331501568000 1585899651337450177497702443515904 -929191230873813465640171020362973184 5171342970617638928684846420066304 2970009208984121192108478489952256 -114716608340022176229898655602049024 5630355734724322315554309577637888 8504560467041237797821885743890432 -453018005108550243556040351170953216 2469320004644376649765511808155648 3279967470291397599020229825921024 -852285520316688759452050432546832384 537600861794022337904682161143808 7387883141745819364355132260089856 -967350578416641619621332323850518528 5202281879039651638670233079644160 8844471691381517336953718684254208 -283058049504543348105415090491097088 9137343122262593704796606739513344 3385065066673508541658112225968128 -828704476586539048305291476477149184 1762612557536880077730215249313792 1961100431230493774184827500625920 -313359272390229009629022061479329792 4188018464087983159823629224509440 9122406363613608644982302490755072 -810247962336911368629803770533904384 261194169044482396630000133472256 8370318890843267757666186620305408 -182189593475934878073107495711145984 3184718284471369470586655220957184 900199323595776072798478849277952 -854913009562467564551942348449251328 6334074527718689611201879876829184 9776101613576925041707985947066368 -668398597017899128008248773681610752 1244313807438427727058591000035328 3483406030642997597384008620048384 -631608303112524744400665141581971456 9649446672633702632646889319694336 1290901853159947819143833617170432 -247356664052158385476270007527669760 3579948671987477854112791119527936 2501564306766757300048979671646208 -36095825928236520321857452043665408 8707798412943184926651321300287488 4521213644655190036296024991989760 -52731404084448854531128327258767360 7375924181171088914899024685826048 9605556254446927632015476278689792 -387489861813519585862442890530127872 1277725158692717293331348795162624 3190148296350868550907433303670784 -463781400098057425623944068847370240 3525018642926056431936815568519168 8751560306405512731952451143335936 -620224427523606224944507055429910528 9683227197543369254651459188817920 2840706138723717963495690737811456 -403014711395121620036225622974922752 6108849689581126054987567076474880 7121108791641688259418563501096960 -926542785192926185625847881596403712 2916688685083045757606925478920192 3283860542511537018898841795035136 -521176080247194544581084837562023936 7822021795041788788820353291911168 4062933736875392489684596762345472 -915510607703207460996707082238427136 7567144940042991657862189723680768 734035127086118887227672112398336 -638838297308342796829435029327183872 6960685016919586848564530420645888 2608227987518104808000352222707712 -12196681722776289036445919832178688 4537487138428808875362615035953152 9492338393130867451385057917272064 -106420561710467801405588889512443904 9427715206809872047124359793344512 9861047543274036111949567434424320 -999374928016630906742037707984207872 8309789431029415642571642362658816 8253376273968288520876055188209664 -796555065570475267166718931842891776 7726972446887319891462815762874368 5883538126476981132577480229519360 -687158373932997399114395510814801920 2848149027570059731812381083303936 5630201823125611945846268686761984 -132812605625086306391329965636321280 6896600099147497900684570074808320 9889462981809299836358397729439744 -812697588625646875401282264336695296 4478481257115693748168454513360896 7844141244666281571269330222448640 -27792230657823464298196260515479552 7868275890692471484068254634213376 720793504061378884393557194440704 -548422497493240629440087955949486080 3838787383900698207515065821691904 1962740734418276046059131721744384 -761859330539727563774897758417190912 8450721456918424031808878918238208 7235430784405651672331305598582784 -265040015131706393098937788983672832 4681003652974092267245517313933312 2929255696706684190176400484859904 -277172034980354925939189939733266432 2709745260941661958579936244531200 7915091816577720642562420839022592 -167451547035399788364292139373297664 6948818623746424294248273422581760 937510258830884604296965742657536 -384445118113285342619181783875321856 3867390769471984726278390708961280 1376149045299207615544337501257728 -415699713428600534029170872319737856 4348272167633714588557966357561344 2917129503211974580527429817729024 -353747526812477117241351609448923136 6354353105803916561313778337054720 5535759282617416046544618499604480 -135580997484193717843124415818104832 6184202718566700039164765088514048 3075763068184312092892716599345152 -842404348764736908724399360553517056 7072788472534839042720102889816064 4448661795470092775187424963723264 -881356256161224541149062643392184320 3500234962714540227405280912080896 2245221232502303268575681898872832 -662302070100040021238876231163707392 3440921089229383299104274682740736 1503946187240288366242303712428032 -464068047595590414673287712321044480 2275644373290915102080379914289152 1239955448190117863859065725124608 -424566228607326137584348343992057856 5816156580890183082105271589273600 8955417047280235309434074050854912 -19454092496526085481173033865445376 4959545538110764733448020830453760 851414928579077197001519450292224 -449287406629731573658529689040322560 6094787186604876398063076253892608 7456973316149179085701291521867776 -393680556293798850955299532792922112 4448766686387210583723462646300672 7699154180390997231200118576775168 -444800826943044370020843567269806080 2801941633166116308303952337698816 897114926031435082614343097909248 -302271602939732273934440869360828416 41754495114717089750201428606976 2003212098859239631966410851221504 -724694892888968069877515358511824896 5256399509342190499964952283971584 453903239786821625965300164853760 -137824616882462634826916722435424256 9775854492878655474133964238618624 891876935293945354756042174496768 -21559755193401146642868499254345728 4032813579311548248511327370215424 9595800581709244417312297125412864 -747902333592610752338786462919032832 2216409110448880538031752174632960 5392696853715136042231855428141056 -698736328779054700303330137541181440 7151123914045072473433844528185344 7844280849503642542016815830138880 -530177874592734362344166391111745536 1177826537895412801626567807598592 4684854669078010674269436749283328 -912269998337582882830760382304354304 4768990441224596504540390895910912 2991086704845568707546119114063872 -234261069668378317877667483566997504 2568683334891880618137095157841920 5151656885708307490370524003958784 -195390540664606514129193262429241344 9140169332829604874958952955117568 7790375102500979489971460649254912 -601599316510532561761261103297331200 7614642460365175621610254035320832 4855306311048351582274506352230400 -863984087655771616118141398930161664 6810028180732978297832105691840512 5558504051185009650304674391130112 -570627572749664426297725195250565120 2400874312940375663232715604361216 9951956039945843666469837909000192 -24024598069634240791712493259980800 5575980173782810547340241130225664 8114276412747680856747917245939712 -967075005296082064029448612509384704 337501504194888113984701451993088 2606482239254936961775477475770368 -21563585026709316402693859713220608 3538911406258375117608608451264512 261161834471111897127572570374144 -439192391704370415562301725980229632 3148548876407802759700455811448832 8658819666588186062590272652443648 -54372572886792763937636443981086720 3472983639806045711038127722725376 8061198129578877392875090060771328 -908965783870859651413461303103062016 4299241440912492096140529306173440 6682263310400835955524238009434112 -196647431091571987986080852139311104 6815249113836465673827327907201024 139252768909773844452314590478336 -136522967964008998231020146350096384 4333290638780795286055686284247040 2905070439645775580910748862251008 -547421885944054433328915587501391872 4415477713517645251337952325271552 6123135938859081488404847544762368 -937769211085959501234144087117922304 1400536682086355194423082433380352 9084049475839536918707470862385152 -657979859390456875766462545567678464 6561055435918706584266801164582912 7214716885280188741485042132320256 -878335774875509847946115449383550976 938684518125081464802787494723584 3994027974298270298916524432293888 -649507189203085141690884372702429184 2945904452167584595385169112727552 4096322287810065709907708867510272 -877212421832423814434068615409958912 376736984210865447068140616810496 4367844476623203319449237153906688 -663225942795924065003446256174891008 8128909793675027798712218132938752 8085930062811436935057981082435584 -780288861579360032767572359837122560 4088883164508361147696322453700608 9990192773677282959538717582163968 -106814790694557975392262997525135360 3782578701926622217864796681797632 1231030172791433945276027393540096 -524385760184002276929858517231206400 3775595659879362256165333486272512 4506168898870140816515598590672896 -162865633023102238370956919374348288 8386195208300694164185790558502912 9577953096450707491257238759145472 -499854130145072429773391893553479680 6053155324630038188261712953606144 7245646598689913387376084409909248 -678850125323132865047519916279726080 4283678540438144708637151704645632 3057085378980697954519055228469248 -380011599744380039251423002665943040 6521834962669886818635647903858688 4916266502027322828959823207333888 -465819230982559494367094415713894400 3403261484194752156737667076194304 5979084414697645067399327830245376 -823099132480715784392400823610507264 2795241919393532080113686769827840 7024071483723684054625601280016384 -49269599450807898773386338272018432 8179683507025322938166530449342464 5523327657481807213919310486437888 -516789452435595258514419277220544512 6620780652738688791802760738635776 3176526074211547056585316298129408 -395305333359724488604934755500163072 1890796018307065358201738475077632 6194311515892914613539958408871936 -720633181478291702868302285517094912 1051822193862943267643716207116288 6000416232262409923807371069489152 -879006734028771686602580981020884992 1503119509347759417114095123431424 8230780991442298165134561097285632 -986957387198718554438213859092201472 7375650918337343568295377416224768 9285340197913251747890315919360000 -421763890096883223412073355601248256 9458412252130221394649963774869504 5008348462894758307318890099638272 -880152117129895884890727368385101824 4415398005319428160590103447601152 799939474647920006999250374230016 -224175385347179710703083600308338688 2156612906115401599327615072600064 7810463123868461058303580946038784 -519818339758534159410297762889072640 8060648562947843487361155616210944 9506557902476560880934150746406912 -1004665759485393260514863126413312 3240150756792508243310024868233216 2608231921881375102066122897227776 -161478231789866625050753478994952192 131101891789273066711346392858624 9697462866466723449533711681323008 -746465629869253524115160427917213696 7582685905969751526162655866781696 8929391517332292408787606825861120 -213594890037031777691076943857844224 4276423112090604852973916569731072 3303049756423931234763237893341184 -278764077803967620334351409483874304 956391888881960923427337379250176 8071918576128219322865020569649152 -941720617309918822685958245036589056 8463380454157658718298940161130496 690724875507277055392184876924928 -190098796441032873551924918921199616 7971740928288677771212912781688832 3468673777761178821703712427212800 -979391357294751954624216038132154368 1590248884642730223962831317893120 394059749368219777042527222235136 -612887111618044046644299634688655360 2063986801979757926002351769911296 6496029972293896488344244421918720 -316292634986004550515135840140656640 672201670531104612710489746571264 4925541299183706679900914963185664 -460745096935142067295909156736729088 3646342830732097203148085811740672 9003998563667836641764751047655424 -586564227700462480369637458670780416 509356472322170387560514745008128 7032243802593737520034510519926784 -945798912758317877799278794460102656 5889430806545685447715539843547136 3916242598321930500491410938003456 -343014283141091737830527143174471680 1516039461323245711407128558698496 4147172630005896100102802547671040 -207464283201759358408081039060631552 3204814587532729027387609856344064 8823444117310422163430986479566848 -379923644053196183993536609087651840 4079659035246305242735993740591104 1352334879122630306281133583630336 -195852856487999297018610862153269248 3517137048177863955706743323885568 4079942209964413783306930258706432 -211994843879111951557659702031548416 6268704333314240262095880612478976 6977526891077590468040118140665856 -529627260790470521686987554074656768 7555940039656809373789162907369472 3752886294476379322090048918126592 -97841146572588096153191792240492544 6573135152240716031563972059594752 8976938762998491462855005166370816 -186251171620533545969642186892902400 1191221512255771413834392963907584 3614309033420851870790188292636672 -491025929875057005358062720629342208 3053719260361073030464967414906880 9215515168519156290733764557930496 -149471635879840829189917730469314560 9025240366653150399708705270530048 8851313476878057582590583013113856 -756267171406507286528352746469326848 1238644228921026753118420340834304 7505292898465277672650207936905216 -960208221244644629816620393934356480 9299370685638918180144891595587584 9337673505394984220541499171930112 -801128814252692724239612233887252480 7842618542699015800616344851841024 5647095987659401782424822951706624 -570069377491387565248359350000418816 750276241792398984079274217046016 8221486786536942079657289241853952 -611373790962496202831590083455352832 6008569686780318980052166209699840 7851948031100934665259467229102080 -471481175332444804238090724068818944 4397465918082825906176227255779328 531624625099351955584087173890048 -851625143891785725483958006206955520 3504590561932957687158072227659776 1469641385876889899143194145193984 -732327627916779057605728253929062400 5706975790060400007345207305568256 6942351363146417290847052695076864 -941351706728165134521601463538417664 4865091751723434688604540774645760 4241542902813017389575417314148352 -737690382041397836818066731511578624 1416737447645180053968627875971072 3171425907616779483564752702013440 -369791493347797010612709845089910784 7147901802848821659496759764713472 1326869375743524241185358961704960 -781692600568606697453770391349624832 8415172360454882261628776557314048 7797014517428519207733125672075264 -705980509954884956727480787033653248 9541612278559384477214886051446784 3692339674226737729041632134692864 -892725034773361473461497103174860800 5508068335832048259480418154184704 4968103828859434172466628537614336 -624052591249960805183024008056012800 8945454796385661577646724578541568 998882026531946943303476104396800 -952717890461272862883386017661845504 8379724622751086906965648109207552 8873565493048669485297195909382144 -126713678889509554542514367300108288 3058717071994574503741485628784640 6149697210713302958034866067734528 -35325508684364067018464214080552960 4473935721354641752016329285566464 6986693249741432401595110235570176 -535607360061269174254363631023030272 6529301686426506559578808761974784 9941672090374311774275923154567168 -816553043799201719947491261869457408 1699500927053392436217884071428096 7688711340953598506684821234778112 -37660907782173929534434442920067072 2913948788119479475546880856817664 9407582852781084505780072721940480 -828396246359201897335322115437494272 6055177809576506340689262587936768 8743999408027934449151698750406656 -897179229550118246723109560279629824 8769698021539668595716578749710336 2238623703268150841694798282227712 -871549070622076139650001931782324224 1679819106591558219013935438233600 235314896885510917987330783444992 -502253055058310429925426275310108672 8550523057129350495970727198457856 8527186906754805594652734109253632 -381836809019585745815803598907375616 1100968529245653910291715457024000 437322610455951226785516566347776 -402216749071395574453594089181937664 4229005043608280490410508539658240 2159191566150542731307510392684544 -541680614761856407457220831274336256 9923420028295784096385331797950464 3019634582549873268552899344990208 -113750077623057347043678234483884032 3421395512166751297884175718154240 8924605427889057708872475783200768 -17448745432614346602322103157915648 5288007304950156940271189745467392 9838010331250172142587177854828544 -727993556439505140946872600706940928 637267268910842943248564138016768 628985530608791033060115959775232 -554048000138228868333172885490237440 3391271983555141817276057891373056 8347937396636456728216523123982336 -403951964285179987827514610320146432 3695464129243448683606598641254400 654036486975724917493181242671104 -947176650615053975687906432905117696 9799793145010423365709323235753984 8404828371449077219326797744701440 -656664368234749319029519951891267584 9418873827278617546893720884871168 8708153926035828543691754439704576 -836258848149341192470447925099495424 1547550147200911682627648440238080 3956318226451660999543927169089536 -566663424131452630030641480396177408 4507102372699091091222311433404416 4901144160271135786360174974861312 -761603794197481077320903378442649600 9542050110980180144481222690603008 782263402269549796093175376379904 -13609000805566447681389161242165248 9693421461015478070794700560793600 729492096600803591894037239431168 -189335683095260656184537717281914880 4995127970005808886285401285722112 7080084368249673545265622485565440 -484165057272478031802669717979660288 6522327791845153845540478364155904 6618969940581283252848658357420032 -244103155100943844856347321106956288 6668519960988452290863793103175680 5663534830856574992605238597255168 -111760185003655438752646265565085696 1918456315964951278615786883645440 6071527113970010258355290210566144 -339240771774522345365084787133382656 5478078213515080458166433820442624 7336983049630684743884445400956928 -420126173264998181572781436131344384 4780610894137693249918905696124928 2978996622230305591025842178228224 -254901814351615704838991973328093184 9944520525579798128971911943684096 867632231346169844782098869649408 -80617573322494580552277239378477056 4462704678832981959531419997831168 5474118057464600025557477279924224 -132631431778488552763005188081451008 3773031366517589319961730896363520 4845177872585898383816140466946048 -625055639267094841822971858780160000 8318107405983794433723599358525440 932396968965384397018341809586176 -685117777787962558210602274824126464 4363778952275620620728464490627072 6238836182519484585888341255258112 -436027769911297045766925349275303936 2065814720671122540212271817162752 7560362916099492956492786204409856 -755938044244483442783936105945235456 7441397688505171088163001161744384 4062430535302046934345733996806144 -679284743161332760401036342464610304 1061585818210277976116690818170880 9058105270466442791337872842555392 -160283107150409306486783738619363328 9123473440183537274117970913656832 888243913648883602949777144152064 -80720271138062404147431356105752576 9914565296763144500659676059271168 678354900077748628538599212580864 -999655701790603242122844734100602880 9099284205713602067781195063623680 1576114760164019755750660285399040 -22788974625377246313887679891111936 400750039397862615210363459731456 7673207545072239500925834692132864 -152635138654536087203005876431486976 6624169677532132355791324633366528 9414097462430648672240079462203392 -457455424156152163852543999411748864 573789498026491497515859790790656 2139913112838592150806143965331456 -993710813570693818800313978434093056 1077768115362042909336536784830464 7672181832321748200571182300266496 -323869437929758318032221043750338560 7978581900216180908327340842418176 8014372578847740564369278742036480 -925802024567889956283183570366758912 2531900639705678446986718366138368 3697159030032215843678152910962688 -795123715551856974618837770756423680 461908752518084764817846783967232 877414534360752948302772715913216 -983550882994683177257217217731231744 3725065430663972919475722478682112 5547435604161838846425604147904512 -324564957464846172644797898500866048 5233644953214896962218444676136960 1174775894834737030108681707978752 -433284398647479211349888402200723456 377564899401204738215685144969216 9347517860321544469152781133938688 -446348103605018434319227338673356800 2235058093933458701493045760622592 2031991751253187797893480181661696 -634482821137335276465638851542515712 39273941011393769211288925241344 6782662860883014682490067342065664 -93301955656360451219673686223093760 618789088892760157652712285011968 2050381551538916457105912762466304 -904853620896536439448336402661507072 4732667096987026825225377624883200 6987702676985398177931192591974400 -376715569263365726556572734730534912 6179776108863695901149100721045504 4338651076972266054009301904654336 -358281469994903900353711889191010304 3530818738726930646355016863973376 2140934205033854620462651596079104 -337476161883122723567027668073316352 9914047223508741840103258323943424 6996778342586859428378606053621760 -421157503696711875374970370632187904 3866943025166827017966269428137984 3846715744308276436262343810220032 -829151012702976199969220530697928704 8521842120080895405907057387241472 4125919111470491826338996030537728 -827250151852759489991269471301402624 1930118603972644374679417587236864 3414323812505904018693621167423488 -872153931465876863357071999633457152 4147215112903307459803470349991936 2259121843038286696719348567900160 -586049361688214692446801639575126016 4470012828994107983997990642647040 6621149368932759916254343295139840 -611644315855514346467010045936664576 7707958640130385805084553430171648 5964122465620732355420583368851456 -806770924555727470817040689136664576 6385470253532953057658196138655744 129389316243802238683572269481984 -55270972444074404424360566651355136 698940903811113939403293887299584 7003943361858077371828801281982464 -458828769220381563756286653310697472 3370817476440504487347884138692608 6296541353651890676982261307408384 -676395998281076625337769453777059840 3785388607068431211210468925374464 9182999431804046467425095468974080 -104711366034439052478952652715065344 1676920350442238815569317491376128 3557990044875859008202018692005888 -419263385006451663484025848503205888 1046855100426179890764664849563648 5298740111799991100799932860203008 -250166757769997761876276421450530816 8602354357289790659663495654539264 8012125853353319395832400976019456 -442724482558381169406337198319468544 2788895061485486912183854579056640 7225371397757276535909960648753152 -467991831284952388780021598998495232 4830644491848234883534252205408256 5571297351171036191977380641767424 -597477942093150399898043513321816064 935260002627303117757102575058944 3261622197665098351210886600851456 -215074364797103360026906404258316288 7383320909115108248394726060851200 1870648150899232579447903861342208 -309869384558914607886882584869732352 5629075763234948359414968970379264 7955535582167966224986856088403968 -374035004899767150297835517113270272 4974676258257794049009004016828416 4255417188581037274838052489920512 -946498165976061726279865847454367744 367370233723199110695963968143360 8336234097864640583437789656252416 -216559697635498323435061585423368192 5043879572987833493027524741955584 8249359670552927145606468868243456 -693655087289125131405199800212127744 9735554862088863438407722675994624 3715538411821697818306488804835328 -815712470999978755303890460921036800 5151850784241916484470736238411776 2965456192888573409441331932037120 -647213233406938411328538570374774784 205970252021207794566723205595136 8491461970249789641851101056598016 -439519367785459221629383654145785856 4638471684886123969109486733361152 4119581886117360686336308057997312 -867485747934534983517365362036310016 1006260508694729196698301729079296 8141258060235206864496940713771008 -769288352684111219195726577853792256 4403995757125375674460114356535296 8104175568635317977810399540543488 -90179910143625642696901072728883200 6865897200630722372002798872035328 1312165100947229252405780360986624 -409227787415956822756202398558978048 6055900539102227454639100991111168 1968087002382714140449772092260352 -691110683558642546920075192531156992 4374838532766531959387358289199104 4222439181226007477679148954025984 -882452652374646639677153942611951616 1860087172949316981623533298778112 7879459046872575759019256601116672 -620641132209028611303234762021273600 6520432066346548805977094917980160 1021927586266534430658808720130048 -940099898114027584751679498264510464 5062610848172862137152999545372672 246575226912176813394397398827008 -894267799641984758986193939405471744 7091112791553004560531400492580864 1626685393782269918827969809219584 -271800761497942216930134405645598720 5854085185915264136900101674106880 9914355491957817207110648259936256 -501751658635546419991721219207462912 593114139868471126431520125878272 4848292222324324492957844135477248 -229699328980226722227561931756011520 4986912755271007237299283557351424 2160151102284275064812264323284992 -87222520070075472751104500822966272 9798760169894649952555643770503168 8129390386874468160902082733277184 -298258553459248216498579465100591104 2255842217602176806866734416920576 3106724931930722299185849943719936 -911077400796710341020430937096192000 209391806386144143527132637691904 2643535157915549106995709809262592 -173169772657048161252844784494575616 7620630185483483107260120373919744 8765656742017287975662978001272832 -970611648428749081115620023593861120 2265795380942861223117560083382272 4674944002448587105463447343595520 -170045652428782112569071756795445248 8597764995479317045807139545677824 6818057823122019345627227038416896 -136312989389197902509582459185659904 3011303660852420424327719404175360 1699098327374376310735792993468416 -406915318712927729219968538765164544 5222418997867009364643487139495936 7370225110993321759347731062587392 -334598068586738114458240394538778624 845201143829034784061318739525632 4242379015209925651555889014898688 -873566627641384515580153567211683840 6074611279751288663540015550169088 3148845449225464840146849693171712 -245288694879440594797231607084220416 5630279397573872770084318348312576 4199572273765778727061943180328960 -342865514599545215072372826138738688 6300313378429666546670524428189696 198284080142907404194472808939520 -497304802098035562253240826540851200 7417564043906160213032027488780288 9636083271480674173774936076713984 -63286010667847491833024185681051648 3161634423403760109536912145907712 728052896004093399425550808776704 -331163457869641597455726841264340992 3378397441877378416771053075300352 8681267592165911185057325911113728 -481584017080722417479337405910614016 8576559312530689087420901512708096 7214474398951001815808975919120384 -180254786889190867359957072832626688 3468986705154624241183060098285568 3187339482659328848385552880238592 -448442254561648837034446203308212224 967272226155303874736510220632064 3214731623127702439086724835442688 -569436898413260161715402583863984128 4298059633662754726734013900259328 5614356886929805548568205668122624 -920292077908363123620045195963269120 8106675188193736851390239487295488 2585665497026789874235198681382912 -491414003583649048737364165900894208 2328455658185533860986566442221568 2000041687095564952175134289952768 -405796928321565502262501875092815872 7111710578457505830177560164564992 6540115210041716340156126541643776 -205059971158755725832454526805737472 7316201997605621832371949002555392 1270125753222552893311668063305728 -910366431727255920701913325545455616 7939508522900659858013794424848384 7187818742215632759138613798633472 -812003793238380560956757902620622848 2013846782910990280680852567359488 2257627002540903199215723934121984 -982591643901771523168483197973430272 8749018767265191012067379454672896 4789158247568577030707233714864128 -854315918031037106013825518322843648 3308054188724725823955662152925184 1497328519571238222516998216089600 -640876012256943988487268059999895552 9309835382845623133236979054936064 7796923604792724505126484549042176 -693754828762600260241570908503801856 7276356863977955330196607068012544 6290392841357437470501788004122624 -417333481571009455824542768031596544 5413993808459703030648344846270464 9309785003593965868848157649010688 -672690077499988392073557454102724608 5576709972279892122633133017268224 8081988028217524846191915877531648 -991675818487177014275992084088356864 9743090485707190935468197772525568 9756699777969704617522365699457024 -895419388934070643400504815220948992 8459707467100577358294309018796032 2709943786135325507280347959656448 -642389058260573475273041283521708032 7976924577783538371054899342344192 5818725880146816644557323523588096 -134092047508915520203628128390610944 1460615919947013461142420806696960 6649294505767121156835930263257088 -51352618519918853299148489958096896 1234572857481844605949851706851328 6315999567554734805274879884001280 -976848254453793439836645873569234944 5341466924024293390072691669598208 9345150418917196455449543313457152 -109042608305810634524158688116080640 6618354003939566711416218800095232 4770332288098289312815878378618880 -97505614933087840751311970321301504 3968594937526226945292899375382528 3170414495522813299420481632337920 -493620632887991921506051770269302784 3647865389904235433074900764459008 4163756630384532603408563035963392 -44791157279313644961567213424214016 4792117842907354034504045860749312 631046636211068478129776546021376 -678173890370798822931054755703685120 6018690238045767309633657860259840 3308870924052777003488643775463424 -825645387334951237794679828602945536 2044548462600418234879145920167936 6205919946142785304300594088902656 -220893215203728077918319768588255232 3498531305904323915585705450930176 2039654289324158837500282081902592 -301348267432587323742250508608339968 5930596725980513432532007669202944 7416753266180522974759451289976832 -525176654315194201338285037721747456 1119287716596080287517193615179776 6753542993858668622203838200283136 -900456839134890842081503270175506432 1463030062598099881894002768740352 1950498764891657714387091239993344 -414832244680139513535790714433044480 7913029169772894765649802247012352 5033601496531405587709385752182784 -619327424396628887543882522749304832 1221669981610827826568991382437888 2574921249299699570925583875440640 -169313605468303243546121828112007168 6556074041825417947062180408983552 6987566892948082740559226211401728 -734455216850889702551700647291387904 3801307227843196237258183231406080 5839917808888160029941085518168064 -662832733454356674082211428869079040 7082362393726804307304043371298816 326839189008104828606786056486912 -214855924054525410228341967526297600 9337670690109683922170114144731136 2205679171087339979465760884916224 -301631108251940376586057015829200896 944018703670260663877475418243072 8564853115590463035669221591744512 -586239754648021715757035228959342592 5752435774174990008500875702566912 6948579063213348556876499793215488 -133107760525574756055765639900430336 1277921450387050599612570987921408 313984285414167550521896635203584 -942313358524024028806439030702997504 1390831520634018285544309019115520 595661805429840163767840132825088 -729757378399924066041423042130739200 9266545001133673539643125484486656 6022456779548696366115436286181376 -854812119320403322182826595467657216 1125283272051788292446292935704576 3129489989437371265426887209385984 -457156772964824165367046915756130304 9812311307823515042903101060153344 9571476445840286967758118006554624 -167547846198442312069319035512160256 693298029296484597605037647069184 3402602350835966455253472561332224 -687385280213221375639363330005532672 8140485544005238050207379025297408 446178232335910158408452407296000 -759704407683235504101889559414964224 1382832851195874351424223878053888 4693348757298481037343115561664512 -939292592766104734737332241503879168 5133395528868116475439505276403712 9992162500025224355402563117383680 -932683714209612486576620901981224960 908108296173057999231740295512064 7641238680975116132747722482515968 -904916563052709136457185565930946560 7990780565567329313777172728512512 9789197743231149965161226649468928 -991928304486814042237647393155710976 3718993277042847409967917181173760 2520716935472134724196623640952832 -432181034692445931904007211824709632 287804599718811517028834088058880 7096520551166329480830199084875776 -916886912014213654179709597830348800 8798254586196161611153234901073920 4212056338177126753188066724151296 -339848557669941523009793286442319872 9041592667516225395858734374191104 9281085343384293564563475922944000 -319470747228878061761257508628856832 7713497352965606845722540820660224 4562255842553282520415365733810176 -574766737178968315680163209590865920 445820596254750935876627274399744 3942588996511529365138237917495296 -890960449417093873228957208121704448 9659065061573077935357429406498816 7712469042899030073634002265178112 -230315959656145256610184934755139584 7830086869827343286336164932354048 7253835999769260938677716873379840 -57505740161824992332291241582526464 5280264796217786749372796258746368 2872954835723086836385057697955840 -281942122266396353895326066998771712 5952516881336277115120022737387520 8079440514608522944241164898795520 -88669094041406090896000833850179584 4120371592015026946762431973556224 977687236407134671052700473360384 -659539486173924262401830586784153600 6646168141074492468688085061730304 786616743413346432318637260931072 -140097152034702593729295399987970048 5941238167389861608059856494788608 1043493103458922773597335414898688 -483494066684065383710180571434975232 6512196863525014500366799194816512 500127212840586921433603220963328 -17317511410864480286293537404747776 610766022677046000673569669906432 4883347682148389869225367549509632 -247215729233547327094569684688699392 9327745899351394683029709263994880 5234891661394443680236748654247936 -598361412134886962087317701264408576 3738868491030605170595329629749248 7617529236897023832290465656340480 -706827689963046801979378100219150336 8401312396866263914696942569914368 493831905465161164256840274411520 -160618803491138162671085925806637056 7371783679691334898899354648576000 316235184763951198631186298568704 -284391218106151850262741110707191808 639019132833616797387933639245824 8941758944596316382008398068056064 -320412790094345106787423222029615104 9746156896901067647023875018981376 5299267696337055517756239655206912 -218519481107023444521869401829408768 28820980877657839226101098872832 4391051848967359712474107553513472 -457401537182091612316258792969863168 1146138099247944213978432317423616 5586596948242378784513097985949696 -419019392914668304874801049787957248 4555689364652509996540212503642112 7462310857324073402453215036833792 -689212493808182445038297999258681344 682910198823207383495650882617344 9201418927905505350105288736243712 -191740679713638177271079853138903040 4489226266208826127026881879343104 6790342002179097598704131158048768 -822856168471737613948063370579017728 1973816264226659104868433120985088 769056410281942770408194654076928 -169477091438842017597208504408473600 6381834976865684208966757492195328 4078692066324458227379806215864320 -656180782058768390661358971204403200 2019033404300130801437948396961792 3818767453326516988352452257382400 -755457717432721181157405478734528512 5578994578586959236226738255036416 2201286619792737636730493439311872 -626514967908035407540773506319908864 6355094042721735262972936426881024 1887363276370815044114425298550784 -251206255772051422317440949553201152 3093528659291685816863273894543360 8670008094178744301017425197924352 -502881835884267458280262474865311744 6433204397830661918261650804178944 3862327565714842841373898541367296 -128372517467603702203964240366141440 2469224829165283918910060528402432 8271448890122100897414265419333632 -502589183242295444370020472822169600 7469507265565934830756688771940352 4228402422027022212364676951441408 -779438543823154867224842637408206848 1689994906313218298952939865112576 2650800980184045066134901722447872 -740348723580458398113160596354498560 5705063425999950552011322129645568 1500138648787086901711095587667968 -881184008370672602525996458681827328 9847455141275107236384920192417792 2988249595349915118539939245981696 -863138516934598451316915056305766400 7842419934622239761010610193563648 3465075047911784966494460632367104 -683179487490672219018889314074361856 2467715448519285785820392752939008 5631095276287133996854023970357248 -25255722910705979053128695655956480 9731718981733379643011774573182976 2501086958686217706838929285578752 -228778183049446001040962023648657408 1044064999134416453215012966629376 1648900583805561985467893099266048 -309213210920026025408705453858226176 3035224196184230729936085368963072 1076713109001720718906394838827008 -434964280616503204280451984353394688 906539219990863995513908483850240 1856445111296748171865836805423104 -532786535473887700944357154468397056 9685305024590598418250173717151744 7605179760666737074912039987576832 -678104908104897119125911629977354240 3894164260815132350261421869629440 9374246922306421835631144904687616 -244323443742071127977092837856509952 710493106269517130541609974235136 7498245130411669191814110693556224 -44920894885031900077889076389216256 7898714558673978619187420953837568 810965306739991562663573088894976 -767641002386197479057969889390100480 8250269957274412150859253883600896 9632502380550001687006055638237184 -818825501815906515440922573259407360 9512156293981716163081046734143488 6481108513555366064499470731575296 -152717513839582355937475679825690624 8477902073247064987762792505278464 8721702231813128247784057442664448 -873916779179220984584945291537416192 7059831247712167353868181401763840 8932329296343320294151418781106176 -168037618010004532047821974318088192 9988205727232157151268050630082560 9586532004618454550562720440123392 -487726941367009922741073174509649920 9539090266992073161958221659766784 7662512049458734550803177969549312 -898569707811230710754254229470183424 6934099127266170638021065869099008 7238839350585958010996206765867008 -820799886475587189363506023950712832 262662191975867952063187085426688 9139707508889550747831293106454528 -387973262427955642220287345706401792 5157168770216093927116135594983424 2652009712458181323926293543124992 -398972127841057214638911842378842112 7612001080696564241574214005424128 428866062202461598606158146306048 -832384517081160197268027969149861888 238235621314947836258413612892160 7647717548218601954897451573837824 -849598015811554744053359246080737280 6525265816453098991794639920431104 5877968907309404036633254409797632 -123858773004711059106317841930911744 9000370962333185576827375553871872 7553555129255322818359750077448192 -508356513677422533841816574280859648 6799726989290760844057032643313664 3962804656912752216810239016566784 -260501703691904859780233453864222720 6106231380404337854193345715240960 9076693163059819504963439453798400 -48544009103013149411020516169351168 3582986828818796636406454241198080 6331147701443497217595584301498368 -269284407540106372458187992149786624 3833485540637915865858304565575680 2691302138741900047020996566188032 -150967806778460300314429858477244416 2359680619575387212796227529736192 1537760515804201657359779202334720 -451864822784584962965829693141417984 7246859309821286884909114598621184 8016192025503717103568725538242560 -765159490201360263263111649660239872 4086855896292860259276729855508480 7598755738225354612324107234050048 -853833886551765681367129134689419264 585715635886429715582273921744896 108849608498866075870880289783808 -103173762408991116536154068826980352 4211470381337200070809055035129856 4131545382760007994493297672323072 -124335352333779455975920309744173056 4178561255373414325482885155389440 560071286839041100564577730428928 -625856434936734443090673438547771392 2164627853351043834859642689683456 2273849651892536375807841998471168 -750703469049121861703736495437774848 7006952065418172491321847096279040 8647353902057891595995847994638336 -608810916030180615424194415712796672 2253693231170404241612407878713344 6737467274674110332040185699631104 -544762465871921060252541758392500224 1081222572272467731934015460999168 6284365213791540738383627677597696 -878530181689906835364813406665179136 2616846337619723473464375621189632 1241341342134859834312122236403712 -569390639975601081538420371326238720 5752285833724491673540478682267648 3096174846804622531612129858945024 -57585555272872417359664898161770496 8609515673980803199890339833839616 2663799852812215736966139485356032 -765933515822625046275223688207925248 4513189359612131043021977968181248 8721793070723052648218159598272512 -913048705058634253713033577703145472 527566868124736892396684040994816 3490398178714611155365328507109376 -460641388527205794402975784340815872 9878345867159851327833989848236032 7332395021814983234524134519078912 -920026379336047662362113503022546944 3452806087343922937489375417597952 9424678119905943827691059411943424 -856980850218991073335723824083107840 2554826412266802312977763406970880 6790230857463857359591296796196864 -148066444024811255311004689456168960 6773827455820440364325107723665408 7400871763248162625358088269463552 -347372088589364558789533403057225728 4534502859273990304091555481255936 4584843162708181874290161751162880 -454676308487781111169957906815647744 7879886236723084191161942970204160 6338700717280683695138369976664064 -298547754130761123033932311667146752 9800281253881087730121806704541696 6314360036494432243548845852590080 -363785755627295093275460213699248128 2437982926757065981993787615870976 4704375297105387263529856077398016 -346102012884860092427020026551205888 3788751781421478360371922055725056 2442573109845600756445069883473920 -740754550490482711582017631826214912 3745888896517187646292246015246336 8934511120907936149301774098890752 -277797711483295404538017281466171392 3075823813729221297122387135823872 7526929229695916883407914051567616 -798451538843264296238212344052711424 7674518296118585748750100246560768 6714690406368622396304080395829248 -419432193086318859072643607071555584 110957495178580908424834259615744 6551458648390279444109106295603200 -283831051648210169713435713474658304 5732337434060635010918108645818368 4205200086257842750598450524454912 -178419582845152482700356007606878208 6680692696068508543642296689623040 2098938299623165691116960387956736 -954524368292636944492084889361842176 9268462349566103740340526318092288 8919002624640648828005535287607296 -670865334263197607386203993740935168 9006213599339288737287785410461696 8235253791279532706153904136519680 -452985896085865486448659363063136256 1141809943875462454528879280259072 9199409949965205316928301913079808 -632587514268248299473995737776259072 7744076844611821949611918294515712 4310317902509749511320673634484224 -291777580704774395917613625298124800 2494432509363815825644306483380224 3880025959428647909620098300641280 -930503104282765721126979994893942784 2619740685078203437176669102669824 2255812485001504842717100534398976 -311047053499050430182367896608440320 9712459259291672922877295316697088 7475752896747926659830397506945024 -35237322806318555811729550000259072 2235086362109867559651109102419968 7691109925731672744350987960975360 -99968777372007750712739138614853632 3051475918124068549167047522648064 659623936506482630712394631872512 -613352641410207332609144719606284288 4386737332634735834286642039881728 923211672223525590398875509719040 -714917485105363163791825616397926400 2089551977068519410367123383386112 4979942431236169155666462965235712 -773455173538235121466979474565234688 2979371031959410268023652278599680 4184738333644188395755018957881344 -300359565881615462183303995440758784 2811807468231373024401576662401024 5183923513822735196921895690698752 -494381818584348376480314532122591232 7013915576840006448253302193782784 8677380452972894260639851001937920 -392256408793276992497137352947269632 4494819083847000935293241855574016 79457617637420713991143394639872 -105870398461641111817231657693347840 9091617931329895160953127443628032 8662356189520822054796379564277760 -137485949789731026072284573663756288 1524393421228205372311240458633216 2066461031611498889755961677840384 -543798280687330779042814460300361728 1007540529334685612090614836363264 1844061756238130918227690890723328 -435186170874468442239682727758528512 3794558138729502516203923741605888 5015197538384281370625375329058816 -342549294533002649839832918623518720 8977765035632709946022172173533184 3821025200626033193043487067471872 -457723599537044021781311702935011328 6984121465283726908968157141008384 9247422777407073381538431053594624 -148373041810031764365489942944546816 6820276266626178997727735335354368 6584843598098320573995009360003072 -435095091075019506664668004192616448 8589908396160929648041713387700224 3094907252482003011591609599918080 -760957663643140681892402019019259904 3325902889758197606658359085236224 7293920574261952981862902422044672 -964561813476745112702809273446432768 8940361959777220983926048455393280 9832895728912777694084809319514112 -935103615953079430095789975683465216 7740283425630874244717722734690304 8026767227331873644673594564804608 -134965750048413710346591665102258176 5274847987439718635227681413660672 8237001574991493341534513858084864 -57556648103860118571104708763582464 1027963504683548890020390071435264 7471822626854685672539712110198784 -642218927050862044678967497962029056 7978127390844402197590074864959488 556255439064257555987021657276416 -380221762500732352710842749934370816 7418085110577721234236607421218816 7790259710204505676480141005422592 -95715518712920002581911463794835456 4111951828467302710636952636358656 6768934211280639434947109861720064 -596567774693626734590497691776581632 9910414045254700465753269051850752 4181505610557767804625983159402496 -873425601582264306380843328921927680 2692965860820211038039767481581568 2341412913688322719539811013623808 -672729534117009413534382714418888704 3297857240396810016779570281185280 5950882858126109930095980247515136 -672261528446661078194665969307090944 9218643852646635386010378853941248 7577178870747844075509136316432384 -753407602987426581298785436938797056 1832414645420429832166197598093312 3819926807207129306061753961938944 -587202357070631151606456127334645760 2225943066228823888574317330432000 2697895801077839360837048877449216 -895939262383618758800444855337091072 1911188958598733476226820139384832 7634737145445704303020624717021184 -634608381872174903503849698269069312 2367873281191689401830177022935040 4767236125833278373977867425939456 -148269561438821606135937225340223488 7587441202042160411423427379855360 2298886476421578592278962891653120 -59268541869848901321913226030481408 7970470664528302246608283321237504 5482531683829838156710746062323712 -186647891823110072981606853234393088 9394640080567304780293725432578048 5698856169876851907610879352373248 -541953105944396064205527974903021568 1725113793485587729107897334890496 8272885424333468956055986539331584 -988979955330142768375419821082279936 1020981868752731709782383216558080 7991081544023418980811180246827008 -792526301258796303786899324069216256 3845469645542405523098411819073536 5799484575357387333942879161679872 -994187578910919726697996413548101632 3722488865989644526388804187062272 9865727007203681190647472288956416 -244200442776294274243093734084313088 5590997406652665531227105119961088 4443930297523017816028241553522688 -702683023543144383562478285488128000 2066784540214998069647441907417088 7365595046980076466391583886934016 -443276319649438168917164642279620608 7169987611532877442734252311445504 5242310676941365389462027058020352 -364958292464594703634895984964665344 3957200585686417481547302370803712 1355537498082596913684775526465536 -230378275822558309345607896619024384 1904949803840691679755938312486912 1211056694814663172048202147823616 -173112969216328009589411770389233664 2089040088542983671216127787139072 9435570290949216560281124270505984 -740436276263789097790115029633204224 7714616151939202997250593728233472 8567426501162737198106750897618944 -314373450609942640655999239918190592 3976484327275088554560469394784256 1099983986920678863722857810100224 -141582216816261853014531982497939456 4628759245650453960982944947372032 1010943421898638221541530065174528 -528168708270349038030479738884063232 3569259632879245419103728913350656 3082120471965683670218212265426944 -755451540991970902610067025840570368 1306862807932167481499476767539200 7223271144968624754866883156508672 -505519206418049957391256687199911936 3486635436488846021991878711312384 2711569217642052115088977969545216 -959325481928278912235460875220156416 2954413929442435494735677176676352 375338981667374014695893706473472 -294272328777677748069239710046748672 1789329058118317492528669872095232 1049307461527178864839471996600320 -722437357022593992620137821157457920 2135424710634378769255894148448256 7450824470718084793188495067709440 -794774264684243899910566386805506048 435778221142212373068899902554112 2364917457502375904501475831709696 -813584035404596757599367556327538688 3069775138910642150653281372733440 6635488740626002956042359462166528 -420518808607336984598483617594736640 2650852610547362520575197715628032 995459554191988175674589491232768 -624894458648561284693162037491007488 7505126845983499965250615140941824 4541809925693872819189081106808832 -924957927412556285647120294458949632 681420767874796794146270079877120 1639909360520770840695972420386816 -570715214683628389480465902304493568 6962980279610793567329715904053248 7627497181326628810781033458827264 -496337652146653280379105446423691264 3125265748699165003660344701222912 836371010176914141142133547991040 -972734198955604189009470461384327168 3502293033458103931065246284775424 7176721821256490006498466940846080 -344126507216925456303812850860687360 2977551623692575815289146911490048 6315794762383456457954582589341696 -813551390412917114744168224565231616 6426945671005639600952356317954048 8905411462991945101966290368593920 -959079135719162557667621951294668800 9335790269178146582195168773931008 255733079808100388084986666811392 -581028500130323596973967347948716032 6526564199489928380546850674966528 7431136973587482399552464301850624 -704960777449105660661891811925557248 4141242118275124696281286065520640 8889010385439992730369282514354176 -190078707367252557729421149018783744 4693309180278506518991645620305920 9995703958179261660138162779848704 -446422467175734889364927555460661248 650916471329970572361862284836864 2613876664630365787879408284991488 -136752340157455958769892305563287552 2443776625964686478114131841908736 764540109822902348607761311334400 -877257766438238591378472860402057216 5520351655364254143958930056806400 8997435541146151337978778729054208 -491126359293785490502531264767066112 4723030020223165406305184678674432 639319425097749296883853791592448 -372148362464713822686170308562386944 2907898699475431910276760028053504 9956644290577053049004453976342528 -479444533328439073822856026085392384 7585177546290814309992028480471040 6064676445074946036075232480985088 -890905972958827165903118635980816384 2332260003722827860129327150530560 5475480085818945988991611740094464 -15016523622801042219045135193210880 3303398222068091965502542021918720 5138044492570236122649621000355840 -802508973702270958867602336829669376 9610231613590468982904075482824704 7461549697484048470716886166798336 -785341962361069790461171028245610496 350270768167686439874049320419328 2894630754735140217706324445626368 -322719707576252107923411393778286592 4175379306035521236030869349597184 9176887168527557689945092618452992 -734901613266425745732521924640112640 4631794472029045609049646451130368 7467839397259964731167079189708800 -270915242655810293331896303716663296 1441664752992851002672324131422208 1193139856889723316371498328915968 -931778228824683758698470001690542080 9161638943856976445885667348578304 1696900191279733131327461287526400 -388653981268628604812858931013484544 1034178314867013911338769297965056 7099938949400299816853658144866304 -281647533085113902409629592593629184 1070699346153920746760310790029312 4840523397981231218528946220957696 -213169529037338848327903485813063680 2202978441228824109716484801953792 4091781314296421787578049973190656 -567272464606139364147467790137163776 5644763046862696897296698619985920 6639304428739392214685312985595904 -194340969217921579422359962198736896 1456350502678466086379157289172992 1032926151040329299550294775955456 -199563435053486193731563673018695680 2604542458976257555040530503565312 9818663114766814469871108280549376 -761924762374123476195441722387333120 2926634225294106846616559397371904 1578487712470912981687967414222848 -968688640204589675003917629206298624 1848514785957847917490730950459392 5222041270897332521124511331909632 -786475440374122665436238751811502080 111807662635096269120600283283456 7722027392404131073314973686956032 -955044694590433901197765511443644416 3898000356087414795694515731562496 1096080912224041868626964896546816 -929065894035688381705782999793008640 5539504600340007854485504069206016 1092570496090156177931459448799232 -378798257550015613107598842814005248 4000991758944726256834189081968640 4128885009757972999389636976443392 -139038773532815887912517310120722432 5523368075698519545663810523103232 2643068407911328938542313544613888 -745477937530646411464798520737792000 8833899357041656703654610696404992 9404424503517991203815516215967744 -324092951579686408318226044100280320 1535407011239623962897790290362368 8062729133158701840020279830511616 -902957508156419267964478600341618688 4202979357051358831911445528051712 695072804049688209742751722373120 -338117784784123450612798078219976704 118523364114293421220687916302336 7287337792384188923841589360459776 -754403688173092263792649850893369344 2628937986012824161783869712891904 3001695447864789280759398749175808 -937882387504147392806772938958176256 5739176553171830240424446146904064 5230502075889295534514535758036992 -581620497428892320636904679501987840 6164782859804072442747308533088256 3520464444788105121311073570390016 -129996159725237598997778145468219392 389223463305814423668476098904064 5703387289813954257540055880957952 -518267311778791052016333697230831616 1420296233605431011330309576720384 2825042766784531571170314459021312 -980601776427373740355249113363644416 9591863055555546752894263223123968 4193652490540816308340725374779392 -219820436865144486370312320194707456 6873719379172165837801842897059840 3077394008989387025916861505077248 -900341192663469151251919271769407488 2467839796335958144030394959265792 1482041026442032100339157791932416 -817585484504075151486728363678105600 592836030801256413095076468621312 6535079477758210428079902252072960 -267832293692619750481229230846771200 5992062028208746815217561377964032 3785295838563913577316888745082880 -423062070629508874336583853384138752 8758870025396889046054078227939328 627820064120983984120278026289152 -13896644020362267555290383512502272 4668091339546282592485426138710016 2917211722790753663650259542212608 -784503795364775130569214794127114240 5621645509517918286102607498838016 4969697367836043352106874217431040 -170986583336149575279133954509111296 5561910033863084040205123977216000 1230415385907806010391177325445120 -248182638118297358243900991060574208 938923725602839751574510188363776 3640419234416115608966847883378688 -48735337669788829263170928956669952 90329326266393562823917727383552 112730375673920367501796303699968 -117344634164668192350818459975680000 9372904576529868147659459115614208 3715301327332457010523603090800640 -832288145532465890477987016432680960 2610184596700136411204430623408128 4274920973891211026963667324239872 -607922646962880996115523292402548736 11859898279747035782656550764544 8033951015862473211499976117452800 -269825946375009131253313778583863296 8379038955812361565931193392693248 4742036203850474436059998353096704 -728785804220884129172426472883748864 4415216408778492081304906149920768 5008697284646650071185212902998016 -244959961065243736431595310307868672 4642720540371113406875140593025024 936825979538138628669762936242176 -301174198428753665376534286299037696 1258033217534546811909831798030336 7420615506640698528744028424372224 -282283614120082885885466522465337344 1178473995541463886960503266738176 6140866809941388343874535257276416 -86089773552524863616996735623102464 7811252885021532763696158639915008 3282067584941532020652282900119552 -868570634092652441116261099908366336 4286570342783531927746173516906496 4559855374278782917209409212907520 -239927473676406975220390907552464896 2775259172678603517079730478120960 5905843281929141117852579656630272 -166733933031708569768114974760108032 5821276970407158038124510572445696 1896949895656524094815023688318976 -410874645455384291381193442624274432 9224449906049924118149737876553728 3334863121621628509931415279763456 -84564548723713603328584515965681664 2551227809794485012045940731674624 655727754253545354046896672342016 -78086843453221620428385441384759296 3319435154830619439977951504891904 1600796404737060017674423493459968 -285608218227640908711915157723283456 5976144030661505928846882910502912 3389013571586546668607206529695744 -323599263139254256081999048373960704 6758737660502008888738065074356224 3537691524802068422307135073812480 -466903313114846159181068400471310336 2395214320879722146336693616115712 2336900770218379761485614346665984 -712885525489350556692287544209965056 3595550681259056914663891894534144 3985568377372215784258639467905024 -54987224083024027454107001836011520 9383272259255022238262549345730560 7591769685894669472710455671652352 -208582515486975674380631213940408320 4087043321454932226840330617487360 243105474591921147679305816342528 -63784513474143903381974609507123200 9468620830072704238287002624065536 6368741943430406213404353563197440 -557088116269470939058691032999788544 4107064010342741074333660547645440 9060311585453176256663492765941760 -27513817596267234336936912977133568 2621529375148298784707391082463232 3892250129873897890217599147442176 -540841332887195004428349384243019776 3549390853873881445626481901305856 5837540312804323587387397244977152 -335432721657080102514588828416606208 9209310073773715770635219430801408 5736346902487793709969858529067008 -8623922757530242719972422164938752 3247368316693040998990186849239040 4393957861377135504815697854201856 -61404343464811809084364488221655040 7745920898305557036277234248187904 4474387892821104045497236372586496 -413098879210103872084832356170465280 8389026651889017211359345923588096 2468001851490030872178502680969216 -794974504127024044850791666117771264 3006439550261059629912716405112832 579270073394330907828350789615616 -824695162633910497125197648156950528 5145710300335397647653248568393728 8083705399241680992922948501241856 -523025501791588146515178726325485568 5189128119978141091676262550732800 7804653364832556510948040804139008 -240250400167484340223791279957344256 3900724113391999271062513840553984 5872621569417576244073379754147840 -940169838676830703307544288783499264 8180950456597539014085833486499840 6960418178306795636898957895925760 -751197882085037418123440763791474688 9826982804398985538602388328284160 4354945551981721057326788308369408 -964398770999364904914127266183643136 3985099903532964608257649996201984 8264029107104312253429248191102976 -900554744054782763057364705638088704 5891956175346911361741379604578304 7018144857205601782653575655063552 -565036500124603581603461595094056960 6596150233270655230127875790209024 9702398563223815398376916593410048 -988623180793453586774613686851993600 1685486077031434789584069621448704 9601814438201592641465716760903680 -329423333679604130910222464090898432 2729155602316800057082815958745088 8838000794218149451046939074232320 -399470953759664116124365155578413056 8106615084346817220504442281918464 3687971977171009234602642466930688 -235767038284642818000184778237673472 9076684431613662375475438929575936 4142388324309713222163635221037056 -389912024748871046452394889479979008 846404047482035297689495171760128 3972088323653811133111108018110464 -834334496705152904272425443420798976 3634325864723674020686878103044096 3274106857676266929839690638950400 -49057453235016576717655009927364608 7196769057538091440050739351650304 1221207915126268147580504685674496 -26824404571349602167186934797959168 2331915874647836324502500601233408 7734664402892786666393013583872000 -311320648214990593925454403704193024 275109898462638158764036354736128 7323631638856565688837108416905216 -63545753326247620723049923673587712 5717109671804352975076029796188160 8326148797811439535150390273114112 -411728288061441008199596741949915136 1313678865708777685271513451724800 5812682165124930256416978874925056 -132693770795093727144657804444303360 2301410497414180031760827450130432 3540963212442378467861943363305472 -469933998191002628048062903775920128 7770593966437218292552148333887488 5494531435595276482461389304102912 -595562760996843565451104425850437632 3066212383250390954135974548865024 6279916901324012242625214566891520 -39566039359109338193651045557600256 4674623844974176800439087763816448 4201288723762501899016480476889088 -828777628053169097298217643565645824 3619089806959662202788787242663936 4707048738122749736155499483627520 -426337087469804564873705710694694912 2166646729361854115495236482367488 4354344351934957555997470890131456 -515634184821264162661590602902142976 4559277496425585868144690935627776 6627336498830613156305602086961152 -713741026729050794402959333825445888 1934793844896347613028481675296768 4122659082676652173741805992411136 -64064105054500336248469365802926080 6567541008316793170874056746991616 805126932577186142221597237313536 -188664630551354406737841778554044416 39738808967401209890044460924928 956566184668473956370070781296640 -135929203737501559694662341442404352 7574500420783208835259956585299968 2697231192153235509904877985726464 -297263591736907798910727561081257984 8096902537652745005055566099251200 325642239905104457539265195147264 -347045917914109978418778808898289664 1279070694332765584740454640910336 2944365857742451742409793545961472 -877636543432890638699400394744791040 8283505523742635141204755903152128 5139598479102160500355408192339968 -67752450060354873630366787090513920 8484481269160261121086845249126400 9299796348100734009257063755022336 -803178535655096750387101699422552064 94888660728697582057544952578048 8434841051541155526599224768593920 -588890053442537604426383817036529664 8472569679157963680349191250378752 9255983562670038572126745741230080 -59713221342518271831444841960570880 5056575428658706683990171514306560 2920585294117171939966517948448768 -834292248447267982526052313887408128 3645890000701380824900288437551104 6397296622986275823361160900509696 -613108893000387416599743693403979776 5838203584681742615987683625795584 1826972372989812641331185291624448 -670102015891151138597344115964248064 4632577047595120527494584536662016 4613081276859032233748539180580864 -177579199282290085064462574804795392 5491840293797707118502637442433024 4081720080936562449838036121288704 -681349140127419899100674698281746432 9539881464941703233246509943226368 2202968220783113293128773828345856 -684049424142231889477068569144459264 8297997322691645333146624663224320 9490623145095226189569476907761664 -556321040289508429621375877307695104 5426279137417199039352056915689472 266983611513630912662762093019136 -218292497386327819133328154150567936 5068378270158899618595147710726144 3629355123962112270817998309163008 -263891803129615681568981192580005888 2955828176050895989501050537115648 9845574953730835133035462680117248 -549632787660055752512517696514949120 6165350509502533758460697491013632 714966725780611333451306332323840 -498009510386249488651269050323697664 6016541136446568196754130883051520 5370544107048281234208284922085376 -451734889347423137449645332492189696 366174509552370668919688955691008 6919217956314863850268276115374080 -494056751282234672189125419532812288 3834818163267418982925033302654976 6218032368563946405984824064999424 -187035424042692060121429881938509824 7569522491382234121843084078612480 9795847102327367221840434568364032 -929654005835602013601227890875170816 7826279662906581985593459422003200 6136378407737174385863533136969728 -836716325071737740598485056990740480 4679173100181699864159085603586048 6045663978417607184021684729413632 -781956450632500850604448859937570816 4441962770941880089695748918083584 9615257938997298592841639701512192 -977010774762216632766427498331242496 4442746006520420312038843734818816 4859536862444287218288872157872128 -471056627408736899970406638774386688 1604557989495710763045536999145472 8524662207279272264684370720194560 -881050574502660007117330260487569408 4748212572958200887296191000215552 8468848289990199682309180614508544 -923826536840004522800779226240778240 3020437858418138298190034347491328 6443932134372988395303459123888128 -407789413220248992214960921884229632 7900205111752775236716352432504832 5378544297770294353299838766940160 -922813579004400219584762870256107520 3468154990687117207874702929821696 4859314858448076153628256301481984 -407070951480218551066250041995821056 154163486776855105057645584711680 9732580287610629427914030377336832 -6549253755360661426836209403953152 9910072783668001379167689720725504 6713464894341715104259836963979264 -698682509280502846825935501357219840 8453265323202624246120475715960832 6333655969564961306218854132744192 -703819389957585812173757193406906368 9009587242787375817072009944236032 9779682808412331222787252138541056 -593671629618631340904308978401411072 7602879011648273130947539739082752 2243413387833190755123579039252480 -615320489096465353887920043646255104 1447253359990722239202745355599872 4065272781122051574635136219611136 -136501437529671787847103687967113216 4698804340288928519372363985321984 5864512307818258337950420254588928 -459489083689790811902731550371872768 5458569548238911414938532317233152 2210107644368092541992734958813184 -789968738470846851195138533912215552 390621258641531041903285026947072 7943568160319285623350109044473856 -363122601216889322945278288544661504 9968264718914860077965957323030528 8200255079672672707786070791553024 -486442572101682945489102812347367424 2492554311170170084682776474288128 680707191919806345916609980268544 -445428791772749212459378696848932864 4827196830684548088948053233369088 6095442973491186576529433787629568 -213189131982519927233909386307960832 911524090986117427849634624045056 4670872538969055322688354445688832 -288703991325825947612713609620094976 2447804183564099752419271716634624 6878724933603344869906748998156288 -880157038221247038159150132032962560 9798005673767674439740574499078144 1397395654524647227109167880732672 -593038318289142540967256248780062720 9255010407415126595425077058076672 8971924705851807474268678882590720 -425712646531014902353603470557184000 5444221260862827747714059888230400 6490010825920625408283322894778368 -439677481806274035992083216180707328 4480457846675430497159707197702144 6293472538535854756834689914241024 -249068279636089389669725213024059392 3926482732605478121350176289325056 7784484460933480105364222990352384 -641868960609374552675581239438082048 513304229683018304605568198770688 200296648548400235784548170858496 -603083241878593037897321175178018816 4941731911761880209702698014998528 2481025820901579934360528538828800 -677842459541709606844416608551567360 8470174841454063520964500177027072 7511475716369249704623743692701696 -259117102989428190862789389469089792 6425984282055600224530640282845184 9934144723874570819885014032842752 -429322902418843030370448958577180672 2768472878182780141315641546113024 6527228258912880123356781605814272 -689702461756124056788502844530491392 5067283863306261058652808987803648 888905291268438478489311493750784 -392458195262615989333617780245659648 696936170399634186308200758771712 8410696690076942553732347015987200 -156236772278575802653657442639937536 3419388962723904224941360619192320 8649362883050605499930178708570112 -299370331891787998056375569856069632 3585343972999147642979465167896576 1407083236469029804412464149823488 -755026905662829136543889602209906688 9907535294058373906900203780177920 8367559389528402286361833415639040 -152041707200365576283091646237638656 1675942560818247079273454830092288 3141202788730410667314923651989504 -981299764025819691380398210099970048 4926587102822715168897153802174464 8743554353079211127604047517843456 -305207798416225807538106961059905536 8492613507606855251480980513357824 4185882496520957774566134034464768 -55915547386897094146116154294272000 8291452622729480417700282498023424 3231874672188132977191894464331776 -307556395066932043083618365724426240 2887744903697088834989567416205312 1062697459224579342604390627278848 -2208218211291421697744033378467840 4948857111468619668207665288314880 5061851444452186593139783653916672 -710918717840735750038166822539231232 7719977535733399338701477646434304 6260457081805977813397923264724992 -226551160574129275044217316500832256 6189089072266998569476486636503040 6440353041003218947636967770161152 -937141541303293853210130228522778624 4640236200804474822309736481816576 6314059142525651377977963386503168 -786106565062595149513998457173442560 6482237953651035926176898251489280 9846945678194611163171504733028352 -144893542560572496831148643456122880 3280181696153202312684107953340416 1165433955540190977216002725511168 -794634663730571079636968764134653952 7371961518396657247690985601761280 4597527058680261389977634589376512 -133080836206129408068096555550244864 1152277827893247131494726374522880 7377130953170516210681496157028352 -242187074438026325500706697276030976 4858649646214625392277905811177472 8388278137939745356221693529423872 -468652567472395711528951756414255104 9966135023616423133412848608215040 1441560184450934339726142756356096 -307436699775630295529709953276182528 4843474656370723059508213339652096 9686757108965951437370682513555456 -584024416124069189194679732523761664 9243707761861469407706691990978560 893666735284772688588820025704448 -359321210603853207387693280600784896 3333869269116939139873388963561472 2366003769950232979989651389415424 -475291856369274434810008723148242944 443531435409300016705827707551744 3383722361736811102723568478191616 -696852107631907171550353920838598656 1626219210301954920110879947096064 6284874563308809745063782475890688 -745006515160065214779285401847726080 3304146843475765451501776509337600 3178530735501354547447929478578176 -150270669676361138640900439763058688 1535723826898171808523220405977088 1112270212330319860168310663413760 -623612676447436669110006605036912640 5274989538737936774396909698678784 3093841333379188193997525163704320 -104220146877109204479859219578748928 241423517493815178729947131805696 8768456259342965148282867427573760 -437075085076240732896539947674107904 166908602621413042698936788189184 9786413579623119924963798205595648 -206872287283194584165383352266784768 7512729573350851468907814083100672 6493620602150406321906752400916480 -612108943321059270043603189490515968 8197619192436145141542528701431808 2578744852237798438541271584735232 -425355119028634858410733672901640192 7827313313452873418476293827067904 7141609200247883581376217378455552 -699886999184476821534873295511355392 9333024880934327059810119042727936 6000932428125211501574172971106304 -238077339041755799266681330086182912 8933860614589321546583598816034816 1057601265382225591266419893338112 -178225931596194441081546384275931136 2491588201915526028156080385687552 7916268688606054970057186584035328 -843510022676982410491424451541860352 8013730076341770614897077638922240 8678709107506596331412518242091008 -543045206286095527653682602095673344 2570230983138372899111832163188736 7567440109796623818798154624532480 -859321363639847631402386864857939968 943890053016948565746593772339200 8620122802071605615548874799185920 -459172300054177471570584787218333696 3898028908249882712977493951774720 6993249854146985547350172556591104 -372232239585806767043228463827779584 2116810236914681311416479599558656 9077008867349423136349230722973696 -915099329252852020748851980443582464 4612926969159248398665469952786432 4090702555908931089007810864742400 -260502719194416274200299716741169152 7576146546487300118589104944316416 1409073045996460878080892421013504 -36459859578760331529037703077167104 3199756062638635000674683967242240 677066086631402041292332097077248 -155338691693593265011319117803683840 8542658357301355313388330852286464 6046522645537216692889273656934400 -955303165644325380726431413618868224 1525725649360836234477137546969088 3786071343554429994478714327400448 -594589945573377974203020652778094592 102074013432937167131844397760512 3067139006077196170597885074735104 -464528095022143997462600292277157888 2870062230570103890347947219484672 3749089974274607839465563014299648 -389614212548663822687215162826424320 3026623956777741908924367221293056 5452031553431347263949716643119104 -10541292660069625532318136603246592 9969348080991316536963204995088384 864370151685485119543739875852288 -439681370835068226471971350793682944 1039546614076001647697000604368896 9444501339713629048678667301945344 -747367184969951229599105195723194368 7016812926872883502582028027559936 8110585113892518760615746641854464 -962418578406692283228889830337282048 741744324962275258964294351454208 3136459469223058239370086118850560 -959563130423011775214886817774960640 2952788464203179287620260951228416 6679779161175708610421977417515008 -127489287882627268380469392157179904 9715981045629355298519527786020864 5136723898708785648793954558148608 -212533290201160144173870950121472000 6182101988398067259310422976626688 7967490683553507901680998399606784 -467415219575381037304899769739509760 8685098423736761989704502174810112 8840100918025523755568766910464000 -809974819249475875261384672218710016 5615088516720318032888015945203712 7428719800734297318622727705198592 -543901490546633709083130909798957056 4690448602741743913315847695761408 6786251080195813802775767020470272 -377200523804379644042107613307994112 3421343694514336474738080096452608 2714918734484778975740455676805120 -616830851580304311108841084649734144 1699344576195790030524333068124160 2560964387845170722334604907249664 -400468275584548521384426022591528960 5177547268660310310448486055673856 3790247145397013030449508752818176 -579970811098370977637962224276340736 6814092271336415924953759352881152 812168701586826021611696419766272 -683701499440861598351342983742226432 4026695766743368137107047658291200 9288954476478420497368593553424384 -791039445014166049808308012264194048 8322349293850998452414598652887040 8628952568854557014280831382847488 -519157986953955166383370270343692288 6796532332701883220907455712067584 2913382111651447896965867844403200 -712993073085685260553324134714572800 3177203103348662223102413394411520 8052559567316486961399215842918400 -790619674340897006148006633011150848 3144905786269398191383177290842112 5404037366267587957880542598266880 -40975936078925768234003851519197184 657929548434426126311583278694400 3526073174958809332585215647809536 -791330022635670725484549085677486080 700695237672895918365586015387648 2466993924007056417541588403617792 -309678908478361503241083086377582592 209389921285518648377056723730432 1230871058851525265378398540136448 -877811129085666289006309516318343168 3025517416751063522127480304435200 6152200592763946319884170662248448 -355297617805247775470483833475825664 3823652227435126729738531280781312 5003617473007780651981165937295360 -171166423317808906331915294800347136 7497092701259073387443654880133120 6775418248581007637069104433594368 -679593371951575987615189679449571328 4047864961181942147117153419001856 2906836880502106027490816815005696 -223837810587558710831673082118144000 2412417444711155203179029448359936 8090144783109740981074107465465856 -159110194135200344582572576356696064 4778927578469525027710926103511040 8344015775306259803047763004882944 -277340477472730471948589011340099584 6571454971180635094329513759211520 9591272117396048584223061339799552 -879557080528748265079699996265152512 1413479950150581352387531834916864 1097493441102297079746799769485312 -339236085924852340277502173278896128 5676678552104858163407261808984064 7509194404331663081074351727968256 -843818174693716934086832863985008640 2737680747975475470603527573733376 1363588499338080428056727166910464 -173867089640417541103769363584909312 7495827091786453698770571030953984 4167157579540040474043198719655936 -536331698589803841709977236892811264 1444119432080489597090198156476416 6858801983778185490387098750943232 -845106850260924875723499752245952512 6237265110725851675071734645522432 5588105512266929397087499423055872 -532290656847219344917467561761701888 2109569887455971141322822240960512 9831931202302234279628466584289280 -382061329587066286030919796082606080 1135529066137838713622995008487424 5674533991230190125769028995645440 -207223767775826575187035764631273472 6532556790760382246015587527426048 5911373498153686096445339252817920 -101686809853449290946520652705693696 7720506454265235860153829668421632 2141741613315926965083447593271296 -542818969240943693267353739343167488 8791287970846356097797700836130816 8140360755593525280946480788537344 -95876191427729757348327712159170560 8532285866731877040993929294512128 4700080650639654182432143470231552 -253399586318026134028943857478008832 390064019730291854298344599846912 1934008756501496889003910933512192 -536262536442631513899069329180196864 268353341224100711488414296309760 7948167434014121278252249795002368 -526317002844138520528307520819691520 7696755478997287820850870332948480 9618923407330743232787812691476480 -342196482020631490375977414757974016 2715685394465910620420267770380288 8663494014112155589881554481971200 -869135198558179726048414376789016576 4775743094779978845867729320148992 79886268859780407987888730406912 -422028079063001375668951321313017856 5711056103205925590995955085213696 4972554922879731637907383549689856 -991548195312163527600696212185939968 5028964876263513659615065678020608 5225277027238267084340926414323712 -975284636505668930311966637537886208 629509409513236824554074156302336 8178432842959630080422788233953280 -396872581474638368422378516747649024 1811740218908955388949422780973056 417324393407731639677139185303552 -190535822376973114382142289165156352 4460940377831431485750572918767616 3787023347150672949646703978348544 -311818776993513015359342333575299072 9018279635179886219598028448202752 5417260015877581863136269241942016 -246327789568704909350743291914616832 8373452620702963667091219650969600 3774309419173811424235941080858624 -346505709109070426967056177451499520 7398880297350757436912630008643584 3700903481982778392426740021460992 -304127944375217000118922637356302336 4970225001523688931279460829757440 4538556660362455552616224442548224 -286053646525989736024649271829594112 9505260021395004513253225278734336 507689833604985497053840642408448 -277269090174031810837670313083273216 3943281996488994403308419390898176 3444827665403277543936857875677184 -279260814292197301018325541145542656 2773562501956635175697885557686272 8767098487727090912734736101146624 -780002818296462343905688098766323712 2698747531259779179179425564459008 780509994091816161369295306096640 -511287819962911618621994576948232192 9313674270432114200564505509888000 7430108580637798324705373534027776 -111194871872708143465063635310608384 3670894459976936813319539442843648 6284372252082782588873477319557120 -632374468020650554297976439894441984 2820339699727672257766854110478336 9714646763577468807604443595931648 -334213240747262909664419634885951488 8961943503065365508175241760735232 1477556790384154480157850578452480 -295806103179689576659319427931570176 2379436964364703482497453432766464 8983393506689026324943312894558208 -764555785636039673998781793668431872 1648873129198187641758880660193280 7617228407340890600418820944297984 -103242254246022915905605752189878272 1243087203961252873572812658311168 8480280237052394821512393524248576 -142198115386805870069961777152524288 7067147986524322390635829849489408 6951551847839706462644054414852096 -856334407592370630411132126514642944 3720120753811393862418328157421568 5759502814891466658758720214794240 -178326844383514670130403129912459264 838517763109356608092458639687680 4714943628012720940670314243686400 -565282749108000273255441682233556992 5300796676677735164785290068885504 1243228741445619939730803650461696 -939159536760941409239473077524365312 8120992682198997009803361600405504 9711832412959876039771188325515264 -788436172947718335784717317461508096 8467627197415570617518223884550144 326410804905539403088761746096128 -395854513921194467289256762980433920 4148807710933803553104602945552384 702216644034533832715288725946368 -142162435537494318169700020630061056 214397939550880261546815826952192 1473369196213197620128449455718400 -125393088285860895363827537209720832 8059577091500926347389211944943616 5002174120078585915270162271961088 -980618881254049567684993622371991552 4721185415423576712813055924240384 5260659428073828625264039293878272 -130232212428083443661986121933389824 8641464691182125141612642357477376 308302490839617033039225299140608 -321505174443053423666778974380359680 4287159638386908928149027689594880 6946128433656408821762229943664640 -872139673175280229561826321484480512 7815149237697303185874815423610880 5993687310815519870167590098698240 -487087466482000365586366188744605696 2434292688672055718753709596868608 3248543501671286059619232583254016 -499952237186554549767109336169971712 1356081969830833131064387570761728 2854865234056942352603615644876800 -857312959943179487206868082283773952 9239670817304059366364757499052032 4293050826403648279503418328875008 -176586128093939892813813835691458560 7028610745611948993672528709812224 841998761308745698773439711543296 -966600761839361749786282471817478144 9671653881815441434287414712467456 8423089957019922136646653724065792 -297744142750320867734778192259448832 3971444494862093707676103882047488 2880422027702451152014222234222592 -937605175651324087066065694147739648 8113497779253903166745001242656768 5334866281704932117951339688886272 -146046039394355779158882871704289280 951023038567119724357481347940352 512766174446713106840263501807616 -355406113893780869340678291793641472 4145427007671594741945595083096064 6360297256574548008125203480576000 -146381788030551882027799497427386368 6521656006490791361168185715851264 3628905204465443491695297099202560 -82982500363997516625759111338786816 5198363737663835685232931449602048 1479744749078841704831944105132032 -640597914332611678420056357010931712 5889292483500103277872732665020416 616274668170758040859768107565056 -141047666118090780483387703720673280 9689740701928813489622001043636224 7383026899881002040375432127184896 -155042835047813495916147677992058880 571491800733006166672041901555712 9178011935865005129102632427716608 -635424866152937692144889498840334336 7333445013123203907009735827652608 5865679990939130037022520185454592 -612015608619872593589751639823089664 7356378152455598510595174599491584 9886560243750327881262916765220864 -548882531729628500592995456182648832 7602624562567876929856698790707200 6049838321940753702594091788795904 -596180954954430309791730060020940800 5579068103504522354082688347930624 2018034426232528014696157355704320 -712012456144567025893465630196105216 10615247071874262323715779854336 4626156789094175501689639785201664 -52232334483878685689919941786992640 8938678194356773620698902677159936 7606260379579562039005868759973888 -468968545397238488284097712912072704 1976807133368654775275580244885504 8251631749189082465675070415044608 -269359561641551865919636589032505344 8391742354782162922751566681210880 325429742534943526811511640031232 -882623467694536211347184881741332480 5464370066164361183201544454012928 5298868762453303054815626430251008 -244645316090531254053687911184859136 9874300845063922872309028388601856 9866532714621811898354618299580416 -438261870544110511701164601183830016 395256632454374546528345348112384 6386482611229646544681992416395264 -591565676014728442444250213789990912 5103057197265342550645647893069824 2349201902645804925934715101249536 -248323371120254223447025452622807040 5632503843174415038503356672770048 4952020652311471772264907141021696 -675951399779017928617230665638739968 5575035211530223889880197315428352 9796175369624610862458827066834944 -554866532449255486469866868652900352 8650277777961680779037830318915584 9225188532690124801580121689423872 -726177889550079055500418508935659520 7089237625165659554913350261407744 3422989563860072574347045073059840 -908189613603483240094443947255922688 1296252457693554820416575415255040 6374645623781329719036902658539520 -953725716803913002735401272346673152 7998597417442909335908346272677888 6762130291178695877300488616542208 -787986539713219538755030384453353472 5237840945695374189159165447897088 5822309983912071231900122253099008 -270271552099556726464101678453882880 4382505645294563385311864417157120 3904216412725928384597342786945024 -325222399483040330057963390774542336 4862979183128259928541527583752192 5442695917085507830269063750221824 -473954538496863009458919461582012416 7086530939308930666147489291173888 821762236287325890758889894313984 -309057916445087227883551303416152064 5698577393088145748633561973391360 7687318339648356294266779024228352 -165898454305087948892152748711084032 3976806383663976940955616977879040 3949641685972689094298907149598720 -842654400591238395136752596507688960 8991615621576554770851265060536320 637776718177486790529237697691648 -823249496204277221553492446433771520 7126345549737980636818841964380160 3499482366950254015092266088005632 -350927722942686075429838733130596352 5449428298568101049920694666657792 5983161358399607486780552318550016 -393191211415349870231661781377351680 2670754141594059772011151766847488 1923435587069722148601194507927552 -648987681501288269891888754026610688 3381437763138768617663205434458112 4161565848695520163599466136338432 -986811631579419799703244602530070528 1862462863763225756541590293184512 2105496323959013844266220949340160 -910055606155693375624477819784921088 3738873263538201136679043419078656 5879857703579369202351438540308480 -823096526096460418236496007254769664 2732972257555792464264962252996608 8857179810655922509187943571128320 -220776924192625085774088676428480512 1389597373857915266200804161224704 4680368092062402766074426754596864 -227146688358695886869837487680782336 9545427800906552212811707509112832 4074693502930766806382816249511936 -262500929370540898399459393163755520 6720227854278332029764167830339584 6319237956548484208854283275206656 -485188901323762628540564072965341184 7232414043300381723824747085561856 6920958626561497655090716962979840 -108876960824178880872602993290117120 5546955936646446828474151605370880 8794077953918282143383757982269440 -890684749320603394716341214113693696 5696123060950999457374436467933184 9359619442121882467716975126642688 -192739485839456190479414902302703616 8930978102504969692322632522792960 2418326846224813254458776066457600 -866124750536727418777777455918743552 2284339373760947169787861452980224 3489146260484843083891263206850560 -920452191803985631184740487949975552 2758173627096593843829880303648768 2128727538922474567833060965875712 -178233018033713733842346227600982016 9642856054313715790208802377170944 4090864586487714100738907132919808 -249390072698878723429870954359029760 9476050630985041876283606322642944 447547768652456720511062186655744 -812371321799740243654235005502095360 8939827634748825280961608417280000 6797890851869950044260231140081664 -126525446975599800291279473832099840 3021931259066548406119099894071296 4707396677236347729406506871816192 -797957364884105029444512212930527232 958718611217270152534381811466240 8468776838910572016534659228762112 -608321089163143471281526633366814720 7744195526521165495371552908115968 9346381954563362209471984335585280 -907074001662819644507977842107088896 8622251950920802016894078230200320 6130414189049116273965969373659136 -448824109194049820531851553054654464 6270489643179329910841227092164608 3649622618882013304137607379156992 -779405759740446201352072115366395904 1749178893451452628483638476931072 3556829251146274453839662507098112 -810581135414130995333999271602028544 2584497643483084453189187622928384 6028653313270813190469515864965120 -532128296329881833764681479333347328 5498282018623499124049756098134016 2073998574062983715058714079657984 -341685447526631702956964249218318336 1443951101605415422171488523911168 7263766114141000903650152951054336 -102231567872201551448757187983179776 4680999368607916952185158835896320 2781604779474987342036583474790400 -319008786723078230061512623692709888 8285231044426979658508286228955136 2359696628804878017992748729106432 -249904745799950138667144120415289344 8318195600031250816608346855964672 2874093404814199088517532826468352 -60591427395344724818278162699911168 3044077629058827589794798025834496 6427563873431002026790931727908864 -584635237182056226383498581341372416 4332520672320529397684542264836096 5172375713950346298074601653010432 -747907657081943270870509779626754048 5400884216293278663002665936486400 3313794172969654626033319442120704 -467895738993383518203760314436026368 6429322325892739959495271406108672 4099292315458941480106171524186112 -730938858318510455168150915659071488 7610155301563597225117484308234240 3574979943703618946304950776365056 -11214955118370473586209120222969856 4194652068864854152355985185832960 7260289245303005977771429362401280 -149591489277288358601534115743268864 4297990299466818239585522471141376 9637702370806792679372313709248512 -620128201965959729042543683892674560 5083830934579802626070788869980160 9629323805312288284206984461287424 -913770665079380241675093950915936256 1230654737628906659900038777405440 4212784148771795779297682917425152 -170154046381452310923331302330466304 851783738417698879303446807183360 3730948694698765084810613383757824 -159418610229018705443531935556042752 5322137024585708564849108835106816 1575143175343558126236740123361280 -57871149847532338413276415744016384 659995721291797816456398996766720 5899709572246482589889259141857280 -66141295025367287305332110728888320 7937576023457725691901702804865024 2736268836219919251719426123235328 -90677346227011179924805667493249024 7011401486202231330562555162656768 105329137685489416294734552367104 -561811609425249345974542265464389632 416609314639336431336531343441920 9839027073062414488235158689284096 -215321073223831933270270350320467968 5681314206851347288745457345363968 4874781740642392939330460446621696 -591750156450609467344458709976743936 9247985028317998991351469582581760 2831365445884220910533023811764224 -17240071277466622205019364058464256 2285599856066452807763736192352256 9181737356093001399857905139712000 -549083894635734021119697687687462912 6810869547674078894169472532217856 664876881808137198892366964981760 -393940629269464475629171544596414464 2237915635163294905476001269022720 6299688054829953814662042557087744 -205667154684738820529555842055274496 7465359995967143635731520933593088 3695019636162018044637098597679104 -258116856417861521971810973970857984 9574311536753408243806313732112384 4498075528280473585436992112427008 -488311089762601656866304085305851904 4806315528216273717086896305209344 5715080081101584926466562695626752 -824752527188629715354479111354449920 8338403284247530296365719905894400 3320884159853291195552145090805760 -37655033753677260803245642830839808 3637439950394719164653651588284416 5655424876960470520104841077850112 -31548126838921703004182865172758528 5807378846676447462399565600129024 5072028955799226809283024152166400 -227319657519527952335824659658309632 3349301718324658816422844626370560 6995211274225756356024410782564352 -666756779840798831182161796896129024 1510487635978727365267529247227904 1444925139498620304797344167100416 -880255745947225580988860147425083392 3253777246431742270651740306014208 8179817429089092314422888418508800 -448134393147006354729834782656561152 8354497450316272234849840092151808 7093176747777311672601548251201536 -788256978580807622438244063681445888 2276943955236412818444579216818176 845239041507946105232191622479872 -878879053038275893431475039927009280 3682136605582600904777098967646208 4973194657646783258362915816734720 -916034469092209495732378326647439360 7753203948630890222174920603860992 5734638287485086714986847096799232 -768024907038737958001924178888884224 423810837682674290242658515288064 2778707239100600201166218728570880 -981975376823468714159767092841152512 4531347936314069415910558098522112 6339504994007081472621483965546496 -110890322727623549371769151006179328 6548635475734394156731542274048000 6052210323988309444336727709712384 -840611798136572230299605350991527936 5967065047819472511878303741640704 5079719907894147542070651399438336 -537124770487198122227364332807651328 6071674473970687056544065719894016 8518851419757529652926239337349120 -531701306418211250517955165621846016 6971496575603472874131763423608832 935110171239405606519851274207232 -834918384088604226196518926408482816 2289937525774011203176838710951936 2885936118081864964580608382599168 -357713073240996824750009195425693696 6958658749562217555069412201988096 3023035456531296735579968100106240 -369384362788240876179771666657705984 2102874676018776478369661711286272 7929299096052410537225217162346496 -643222219054895123929649645466157056 6608789870307300227897225428074496 3816461661628250100996877165002752 -846500672531682338389170297921077248 653255827190392159496483888955392 2946305133013446563159120554229760 -579034394904621380735422364123136000 4276908643563860398450617811468288 3808612990948424682252115168460800 -351996034723107384061660085316747264 3131200600051519473351682653421568 9946255668057618751372752706338816 -566277498438851830329379754344448000 8332044546471386038083426709405696 7993208548361223498659759894036480 -439907215142265160945056456391000064 4639557702586483486182161327849472 7864467260789003034556263903002624 -710060649322081607432823280542679040 9810206746093397077461149029498880 3222585519119817988613215304548352 -781160684319962258930396436753285120 2461096359315740865378573086621696 7526068817218399944872312050810880 -298760940079259755332130501906399232 652760698498950225339483663892480 1446928262638295252186976294535168 -228158465380687997184108260380114944 9353269713673129250606294916661248 532461242503945524126119217856512 -325782678346743346258332641029783552 8091108187589899376157216055754752 112574024816317637549072129720320 -604082714014280395519084811868176384 3004609955281044248127662431666176 5978899812529898603201106592923648 -271116308364741101217039740664020992 123443502998373511237650763218944 5033835435651120034767411785760768 -814532759854530390524155627638358016 7874945687627698232547797519826944 3290948756409561418653794419343360 -974153990153589840229889906405539840 7573136792918493394876809540009984 1384566386454304038876947530383360 -568310206720284558464811622163546112 4584434946272417522113230594375680 3254706560219182219661189113184256 -683140862499557879694774318856667136 7957598058549957515234435097690112 3013060553641146797365272797773824 -62936369488806091003526671797059584 5145950382742424211815916028035072 6336516253958427563953347782246400 -606443709551808064480311083320475648 6166415159179209196684510119329792 6875376334735640572038936547819520 -136682988468987039665252810117611520 4593834912523534891859250715295744 561367315104288695946284183322624 -223455244854776040626475685344444416 7211797200098026765611270775242752 9481237999926371814311208585003008 -379074260363696085433898146549727232 4274934574541926101184873039396864 8294093434425975408868749681360896 -718503117275868094012994818553151488 3831783653760899582427515148304384 2329330134879896808349718015901696 -76777085550041910942865293412663296 6894264310781177219313302461480960 7136491688980639573688811698257920 -696090586708142301786818062239924224 9872716511861040256053713175576576 4903799570424064152377730665545728 -527837494437955503390181732149886976 8986836984840113423198304610549760 4594340022168596682076419335913472 -223869104849318561371021201677221888 9197879235028053280757310690426880 6620391007511773653770144013352960 -761930248269872351870346216328921088 3862612068322896897847697111777280 5602044127940223759650988006309888 -935447095566476071699921317356634112 3575927902425777835170500679041024 4208330609387780842199739225079808 -744377006368745093082861232906567680 6855081062833164337650834882953216 9968825473117209389758676270579712 -732279484625404664178881273553485824 5934648546875591913328147737608192 5334322463864335480567829656240128 -636504578647845952480184962813788160 980957559372556018870892755943424 1216604779189833596153944753569792 -817848459071294820072287755042816000 2393831470950931782570474018439168 1144341414522442943170006313074688 -676495304846351820361297632314785792 1447871465719122109931077060526080 3379120375558464293153469580181504 -978219999586124508120029764677271552 4553960657157082584828784874094592 523741808471400700244172591857664 -790086652873912142263821671730249728 3168361387628355648385868961415168 2192458480147855843357390964523008 -604716905285391054505909782419865600 8732052354949004947840150615883776 2324383172324992908245074691751936 -512493675776847095275476746961420288 3458271585271145178400247766843392 7651759632152778071201456918102016 -727499936694326152848514527776473088 1851902249630065820377480599437312 9492644497149871976254710919200768 -742287649222598656621635671441801216 3091935081925934550758086785630208 2682180312238114055909584920379392 -172366103461125636351368743314522112 8684936132143011883555819614109696 6605555145504615293997736263680000 -394642902774670627438408518997114880 6149061316664974100213709267795968 6286244024451271255040478985322496 -561767173131263517303615178009477120 2890619197051993350742147646619648 8060011155324672090714405368496128 -795344038083206628135412719283077120 526467249773662084930021617565696 7526721145673210761874401692483584 -900748174167033828371437465559367680 5276566982549532822403233469169664 2612687832903237208648716302417920 -670442953370597908550881221017600000 3243477378222856116239117185974272 151436358424504327405286981632000 -394389352812130227391189085631545344 3903943682527570634692918522150912 4193709772997610781644211288539136 -266106054070341053359024662856597504 5426447280603176133795343071444992 7246904227320976640515632692985856 -615508507848754586584722857844015104 9040969480718881071735138699706368 4889969104600639296226143196151808 -89845550732778818619996578848440320 9013618196009846353072018920833024 3488965308694308142864273917345792 -493969646087397458708906114300248064 5903409495089402490490857390604288 6778512309380379536651331334832128 -174204264762064963871894175976783872 7330422408060073889742442435969024 4082842697657790840445016668635136 -811184729098370536398083035890712576 3277922515109540459933201837588480 9009367981954792788550299166965760 -390286095498732251298154866695733248 5931531467787388985173964358680576 8480404568002803244760131077931008 -201082594162368629651157797006475264 6652371545717430427624318590517248 9054301448407297370695688832155648 -544586851221532167369416706084569088 6723336952524980828227824856858624 9930844963055975354563064982667264 -253602576451169500753631743689359360 790138253473997547903334714703872 130662005449218474060895416745984 -253336752892798966993303262338220032 3614996927754081009765837432684544 7787321076182887031214616675876864 -937522725785814123648733972912930816 4483926476865302008192693090385920 7600549117919933435033220060020736 -476408114999754702364206855947812864 1492787136142670482377014071263232 8864787536209108281178092753387520 -555669441779468287371796560669048832 9573891454263401206550117669142528 1628635815183023035712291393765376 -742355712441577335263678671615950848 7345145232542339364702906388316160 8276698834453558000184933253906432 -309739441766662544220850458707623936 2440833336051111074673241364627456 5128535126961785943458779590819840 -723127723594529345622026901482635264 8949695153811759122549865772482560 5936114634107558331255816850505728 -890760589987298368852623896921243648 436754977623755431301461095481344 2083192916917174582955726182809600 -889230180294988382123935144670658560 5290241350821297162284861730324480 2899650218378385117186995655802880 -797914895184576977980169484433883136 4850411187512752683088338244075520 8417338644012750156886357443608576 -948024409067391857106965850478346240 4989577762642122568457890534785024 813961732882702186721922737242112 -309400700908275313641429050855522304 6359667008514870157034805729951744 1635910784917427107203744559792128 -650410360795726432015751090104434688 3318169448661038925576880860954624 1369600226737086314010383558377472 -510325427476719445433193546192519168 7390969378312620503785447022919680 4779388131379240582606750518083584 -316946038454217349593522890545823744 1506147192427424628705327021293568 3775509042371180791448884622655488 -716503419268670504898748233904291840 8109237528989825454118163921764352 9787946320851828326165263461384192 -395801644904716964919819931123449856 2767960879146431782849481482960896 9413786963534655636534151211909120 -649088001884135182330380436738408448 7252324264351681876908673251409920 2344061408426460987686711998808064 -973275207036590968454740799265964032 7201683734670202832335097261195264 6029450642298103354597583831957504 -90345335108546452176736185676201984 9186667944153443578749233827676160 4940788843767156840612277776285696 -952220080045177523391951557015633920 9355025785183795039509674454941696 7946839470328987637196726489579520 -711247007696578294706439980249513984 3837037500171311481392195402989568 4000944819810094352737609078276096 -381065783435338988136263539568410624 4861970302333534118952598207725568 2247794340193342366408094135615488 -629466995691888009361263465030746112 1061391809165855065664621434109952 6469431185047984504640075225628672 -419577226565205475436036228523229184 4157673562416711959225925877366784 5481255067970177300636007984529408 -969706812188708291017101788470837248 5471470623496612725611540424687616 6899945848997371724413458978963456 -101399933709318138661747915266981888 1803963051511749786649044361150464 3094697406235122066663305694412800 -11285414015055520896042526933254144 2643951585371733286844023317725184 3336601817779700982697005802323968 -926134608305579617654451232619626496 9586806223816366852257983609438208 4844823305095981493194480232169472 -942934857081018267787589184087130112 8348156938402684080414676433764352 8839151177160514543431826131648512 -888777410387514245277863448720441344 1152022727957624068243622698418176 7030652480250194791966377785688064 -12240089019148997340836564878491648 2447603524620480513669813088813056 5930436164482607166872141762134016 -188015159357248701832925239404658688 8095025033360083005720404674215936 1802249926464626003822300331245568 -741310910880116725858763216494002176 7546122606702235295726918076203008 1503777313368386654181904231694336 -114992672034128583030606358281977856 8218801018951617552260371748749312 3501441702429650295933737218605056 -716452104178770789870025530610286592 90514680642942976285914160955392 7413922881758150838234167973511168 -227085864163367020120921862196690944 3887430608302198828995698608832512 9027203598106675464611757949976576 -348802143848345853129616043435622400 1102922524245335530338890738040832 5357795323960247622260715004362752 -794231664341509366883170440362065920 4197899382698684066261619601047552 3918172899602263648698227104940032 -570567700721349644555358280215429120 9321400416879675847435950709800960 3472666601521671704538548136837120 -319570772099489921669805008066969600 6319429142598582048286537362178048 316413683481742598315863955210240 -522186077456018252671554276770709504 4994089348901385619322467378003968 2566654086482991520837092908204032 -241683311782831182618060460931416064 5573957889939292133666421099986944 3177172503371761518668541274882048 -470979617738591532042031955064127488 3932150338254968713485184139264 5336772169341430675991269501566976 -720628845731135668785453196510232576 1729967250745223653799792434216960 9808120967436516564207827119243264 -180089772297337859446983223375036416 1311507384466324975788816347430912 4852879304537301005281639022985216 -27330300977302513366263030425321472 5254949759819742909647220004356096 1227321360445162326516547962535936 -674415497756135435482279139872866304 9761875520348879084003355661434880 7791556466103265459873497651085312 -212689384256982286212317395132874752 4653326973112719997084912075145216 5552653223077164467892490726277120 -127931501747010084990490509261668352 5299314221056137073002003315032064 4117785568261028371484734509809664 -376973795415549592554341691207712768 603357886140089192802892526911488 9942446272131495739153794201550848 -631705817749533621570993816111939584 476330257854581895160312562188288 8283941108850250357731794182209536 -690510347698358461197049729252327424 6588095210112177596548179925401600 5096964429277548103461541781700608 -614845753686194737077780257014022144 9111607182096478784916146746294272 7363484750273373602867137419935744 -753521679582097390819605001407561728 2742632962022157257846969843318784 9432933448952722384729034513711104 -415922741720060808631523292399796224 4650589067103978982043982430732288 4658108778189779381939684639768576 -737105874958333499238540556588023808 677787713945418823892306415845376 4339839429715213288645661034545152 -407153320840313735703499995147665408 4907983420573259940191871571066880 9415667907944341843240049432330240 -576387656041378560607373620838137856 8143701333782317531841540585947136 1995804596311246039524107935023104 -120348889795196868851649590643916800 2869328560674183247410485237121024 9386981010241060094080134913458176 -767700549152066354093888796880797696 1880604732834064492718670305296384 147369670504982615658432387088384 -470860555946940634138986048286359552 3504336413704885921306291568902144 775628610949650185713613640040448 -525634410189780290521286134147842048 2162261641535482471391221107392512 6157178968864783421259103946670080 -273145922753315572007734457313263616 7797544505887747444967345041178624 5475059223492432018980517927976960 -760515687475510445295818352611033088 9900667131590876814790941160243200 2015033026479271541685176238080000 -688377377764369476678170012316336128 3517809249551975981791415942250496 4138638396793332523967071733678080 -193157378093833293366792761357893632 2612536383534507669099376441032704 5350914983824743757621036496977920 -188269602291316930970643669268299776 5865675014276172767270742114959360 9977317109869135692581983228002304 -439208142270987241183334886386171904 9212858393691339515209969012047872 8420486304607388355807575449534464 -573983138651581525460311110907330560 3488820914483086694610057564258304 6381905777090082418507630784806912 -309091734740488042730500651294392320 9724423830518323857513555188252672 2573722728314035687984009024897024 -841190979580168826268275864986714112 8260028147497483946530597058379776 7644203790268852795996700130934784 -854642624675286498345422161298063360 1878805765458652249620339188826112 6787325586501445260618158208712704 -458657444616764277196110643916177408 9427754420013090903815568865886208 6658187078119064265370303811551232 -292843094104572352160689419911692288 6862870120859904647290498876178432 5451183754560267904141032863825920 -845382906750076470367676844438716416 7779664291558967188048275159646208 7200965642565972466433035209801728 -292881121171198204382779279291711488 1112409866318261416671323785003008 4415023259401271985567140126130176 -445510382556953754075529000781873152 8953821128956750873011422643617792 2561823512426082271372345304154112 -464627525803342511714286643315736576 1738439436702422283772694194290688 2541063154598384611841119558303744 -725763493281605311127381176299290624 8472458301055457051689364423180288 8047815478734068982293828162551808 -65851731831306349945986870098788352 4398389472318388358382408655962112 2057604728196195998329034063740928 -849591820660623325123538608617160704 9638018791968467981866536024408064 7439900665107251314854802101370880 -244253926277305848976512215356014592 4586025603946882459125051383873536 4500602686933576180649721853902848 -440597511478684212195480856292229120 2831768045563237612475867193147392 3788058213471896356873415432339456 -743272675981464516134924522505633792 4725461033219157963135550327095296 1554588109224359119266098750423040 -425366519438185693594463196554461184 2477675676174716446873859779461120 3942938358607835660080035133390848 -513893335120935163734304073212493824 1920540627145156544502451272679424 1842011689307211579583323546058752 -55873622401582136454135169501102080 1175266468987796671897962400448512 9386979984807637053356392170127360 -829325471074884884622629076308328448 2850314500611304965765621895659520 8437159751593355533484585983672320 -120973082302139782234971043522412544 7179965343522178896446758009700352 8059610063115673068386229170470912 -919375958734935586823686805847539712 6821836307457478718882667049254912 9221169307383383626473619324928000 -567558960897545599017282809909739520 6897577313090344584354351571533824 8514770825678357439756039811497984 -836108949549386548988078558267047936 1278950069014977011934164330479616 9395725254018510883833769130721280 -5492215248299642213248748553764864 9095879096516583871449295344369664 2023340909969216128079543461216256 -782260775880870421978574601637068800 8867460789937373385097936531095552 3740285310379861420677577700278272 -449724189653840198950138197519106048 5956732525714428006669988338335744 3621634241215981688271718404063232 -428709408271223571560608896798162944 8202975384650583257361479576322048 3625437638098137107850995378946048 -942030631490436187246959726426062848 8644990499422802789384123658010624 3140385170764066293627378917703680 -314049927879316411768700195540303872 7851953274883687347404271677079552 5825015767211831426634820781867008 -879915342591574221288872155749023744 6012062681463443342575006335893504 2531478139479654642943927450075136 -814845225843296456542493720409276416 97990874240671200552056671698944 6602561418031563310444226711388160 -14102158957278291909899874396536832 3623928097790744616769131015831552 2056524456233862184472449204092928 -792790709981617814969667835203158016 956473537436209170464498062983168 592313714622234899103743840616448 -454970867918852413331245377597210624 8577519358328719358760559075917824 6041533399583651402515376204939264 -160672782010643852417517119866929152 7244255602153347082642830242349056 4996812559756730704404064810041344 -213647612292329937259126463139938304 1313237286213807651493325008011264 9843563880429721496274370373353472 -798666962363323478453004820583284736 5494607435108461004931951654600704 2918604153071465616443385015435264 -477297454625040438896180201160441856 419125641828854509282307180855296 1107839348941256279756918218555392 -655868614807440470046080609971863552 2953210212220399169621757159014400 454500422587204720224127217041408 -69995146431948760243110763435130880 1051038396417109930376905973825536 2910791533359067029320450848063488 -347983065603361841162278627417522176 1590283931699613031054721635319808 9927995408772520157094195153076224 -413979074867839725712485056298090496 932349856355507350148704077086720 7854621478223120267713779989479424 -814528750749824064994041601258946560 1948363506487678795244032598474752 6822579596094463325542352487972864 -983876482735652373435923800480808960 3011837081719646511017176464359424 9550794213566701433448745509322752 -238346019406104261844542761889431552 5159949688705220604260364459180032 3692044937359119621241064159969280 -340515063455206753492989654176104448 7493568712102174624434230227107840 6940709328414576212357775404040192 -560726517005530283818929355189387264 4423898009700757660623406970699776 1600345333878104303833697623212032 -745761328889163937326091801257312256 9939355066610765417269457382801408 6383585004838413730172330896785408 -413844760753269376095230913553629184 7138155619870925508455306715201536 5674724179474568511651895683579904 -604707018317112817342350563110551552 3005938284387132743705010232098816 5411845478987983916147464210481152 -972446232163302253973787368033878016 4339995562603602597083970084536320 7370585327524302950996741934022656 -571500532143757887257383893758640128 4241251847002728262877780522303488 2310554970681014455407683297083392 -133345654997082751871934331715846144 7111195265232997446565321374695424 2877622336901526098432701637853184 -605110475464566640895453692264710144 511835741581302369502894630109184 9208497768659383623489119808651264 -990342875467223084268984975503654912 6199686963903958116739896506843136 8653145737687763667604882514247680 -599721238988980847847265259174756352 2970039944047125385196031136759808 2632321837696972627964328843149312 -654252362009451625858357045575548928 9810858118184042092293127378305024 9596018064899603365372731968192512 -220825164404783357638443232227491840 4760523956511454038034325811757056 280671385437988005267381076099072 -75961062092614704282404001444528128 5468173074654469495321292196282368 1260855182124524465246384812982272 -220909636995293523285625885813637120 7653123728240236356888350731272192 122724583511256026651427210264576 -779106599105131152209121258900553728 1964298412768968480619188484833280 3355949335115380784809126452527104 -442609674773144062990349673942745088 5420025017333553470923353366724608 6218792240507368254066300544876544 -654374607409789902727349289588097024 7441296492459232324934815423922176 9585689145625389566902436928421888 -753193931520200686869161521627267072 9040804866637864381857333940060160 4966482617306236398940623858565120 -348772738435636346454927592984150016 4751659351483594487727826860507136 8022905191027059394357081711575040 -165733805765922245759635687699644416 7021719752144719394618613847556096 5191719743622622229304278530392064 -742101208322147073578551328383172608 5944614900952069027141734627278848 4683457510783670277529217483669504 -709132228022357032316996306841108480 4672671283718641404912536091885568 4417203493612758823119009924251648 -700739105499068984707573299380486144 8044489356206580259678677240905728 3851395357137877373661859167600640 -282976538920817727004018998440361984 2571092310538499106134507833524224 383412755614770432058323768442880 -457325378313228928898319490901606400 5371657396723529636981575237238784 1109619789601788416114623734874112 -734473106848538991827259197961011200 7973115567197047442616621572554752 4334650287788271180854185747808256 -957007697245808542438428150402646016 1297881272457699268385667905748992 5826902196344575665678470141181952 -890184165363952324412588944168845312 4388495126532219105763339127488512 3712028141535354836131190348447744 -343038595556266604510863559384629248 5794878842104865869630552307400704 3879118465021369796879488968032256 -452215166318789713351367338036822016 1483144305931757578785984589332480 8024720714081202985859839311216640 -118622222164737247148037368314855424 2156062895836914853157321465397248 3267375702730045336744027463090176 -518138015676355623424545451300356096 6607309000382213478407498249535488 5234876055975050392487745682407424 -683610222125029321584386708951007232 9786446416151764886689391814115328 8105603515643869972664566211936256 -152851277719924385950475784825077760 7495440459895374727105725046194176 9657040194227326419997653188214784 -274790029797443591648053864087683072 1821303081510883588466956870615040 2273033384787228618039359447236608 -229266235928265697929839806779490304 17700806794206163357162515988480 710455662999497581663246566293504 -55415583434795275921377643531862016 382540633691989638353646686044160 1390541913985927234507165589831680 -330578284311512057347349166524727296 9018321505611209633069237283061760 1979791966681740535900420339400704 -968940577350002074527141513354280960 4993895378246104362989775195471872 501003048105012266170563778576384 -170509285396808470791743872499187712 8124892927796481768825503738757120 2079361006261693332558412416811008 -838031783107354717107324982218719232 7114147243546976558792620340412416 4324131955449571712715509645443072 -59737022628766289392132321255096320 5050500995440083496489052692021248 6674082608483330035838847815778304 -662273729260105824541335901926588416 7989628509388727901035247939092480 2670575784067197008421457053614080 -32950116840278818564275107476275200 4312833856725272765292354220326912 7633890379717071459547421268246528 -540231323525189190488732853092745216 3794981044213836786207756239503360 5003633397749962079253809781014528 -30542637443697248094798072864833536 3331604477421355072560073640247296 5179590668825766071183873759248384 -397207729731274183421791231539150848 544906136757829123068942255915008 6946761609116399359861493118009344 -460219196566030656736080233886646272 8159029509195619833242572747177984 1368113202763251253968438082666496 -758962055711259944523309698865168384 2405690310063727095277666112110592 9272135464000265689847852703940608 -373663402823136164223672515894968320 599965591652455071359908926455808 309602117279082920058390939959296 -597135509112480160778162640651288576 4699848751625345588148759928242176 6708027088909759262954332157378560 -263174177620698669702430591461359616 259217367620358454429545310191616 728982923611193022283531757289472 -321296863580585400357358913561034752 8594877595719945271910644389511168 8347385782190988306169437869834240 -700347409133578444371550306385788928 5922190253073943411263412816052224 5981095957669716227359947169464320 -990502494184092233287079220704444416 1289119555026493558637625417400320 8158804114232963994045243002454016 -313938574679869420135180788312309760 7163852859550534244927933614391296 9590731925357374330054524104867840 -838484646100537480265275823896920064 4327942154183291604784061423288320 7493393544438806896627519798116352 -637457256842075165399082808182308864 5182742395817368793753217503592448 8546776973384105278244378462126080 -306674117953905663212464226422489088 4028402294094289615803709621534720 1082674259098535201857101021315072 -140137512213668980225479697451974656 6810853300556695456615843925852160 1311448566911809812157060209442816 -163860658385876046551838742827499520 2751904649145744693153056367312896 709716515933559019955492277452800 -62296730977635609169567750857687040 5028138543717276091401785072156672 7474083338339455151999980933218304 -134266284744117025638114999786274816 984594622839288975028570174783488 2372408505914894614877530746781696 -338467657064834483403810134390996992 1877014473415859231427951983591424 1170030096231138251775809658290176 -302016325764426650400338392079400960 3798563107873686673697417084272640 231279531919788620735925266153472 -433570396390251955793133909399568384 1545290270808053716197602689548288 4493570030053114324406841399836672 -364592587571588633681268063323815936 4627892831076556135511069829365760 486946362988459061485167842426880 -625875095374928123701116309013004288 5917585724834915422004376925896704 601268107103091630980592599826432 -860434806559527355605596900274733056 10829451410802101255411490357248 2008702641366846960636704497598464 -957394745021731211027784952916738048 164389108539491173101564873146368 5376019805502538503599892763508736 -342308609960893725331015451833008128 3507958393626175119469167163473920 1422474380165130603213572995547136 -478044085908693454121109841770446848 9557399482546118413091801577553920 7754688284696503267505167082192896 -427847281417339576952855588186882048 6251944864419912172205101709000704 2536558397818388467718668255494144 -516638797500070063531875550204264448 7547745362510390183706453920972800 964788024727181496660625920622592 -805524792293443571554291906554888192 8139276461728197347882151704526848 5210020266119651860954047049629696 -170840201117218980124737467691565056 8234715694601672055569472385187840 6033294504943353651736829338058752 -798388393955629167172017997360398336 911648521685899538776386332262400 4198620151949696794663289958170624 -337480424634754778418861671651999744 2721574778816922649922095363915776 3108366484625966432941193581035520 -743858803696483696520281222597836800 8240949671593805978843718082363392 9756770806924756152991323940454400 -241956053852289186356442356107968512 6364329750999563517203656642396160 554634410143544808123849469067264 -366191924009130464272715870948556800 6684342433053696290075560942501888 2397957401601957740277667802906624 -462165521022906519595142668254969856 6631105336797307860968224814268416 853637289580244793472602603520000 -595456840627546597107589047795056640 4676389205141678761328959194923008 5794540400460080145035265520435200 -222248131701565256234349005056770048 7600786368175394612940733232971776 1946521052304311167915096167940096 -914935231862722968333078647871111168 6380629833608526864326208362905600 336843905933823246943965237215232 -626118689818613681838414601348186112 9076040721041783927271098364723200 1565570735442120767297763290382336 -430235091468299028113862508429705216 425591545463000614014291764314112 8542078235187388225577144285134848 -627378383536345666897147529789440000 3218234003164626681627805166338048 2171398118698697158555721120350208 -412767499601414143569289885767434240 5532078214969402401599616498794496 1185751757590077300922329405063168 -313871205231095347919151737612533760 4139063924169043135043306455564288 2469680383889164340781806247739392 -169789976080698474899201306652573696 2444973453795435082057555810189312 5241492033541597975050739580403712 -758333378706105619369975613052944384 7852276525524628980179867229224960 6726788988646977751469938230427648 -455198346818301692414292851414794240 3100027912171186674300466547916800 6840633789939382923098611093864448 -326784195287491588076587501723058176 8555153010631783746072462210629632 5870247370655634162321248644759552 -741395078298365299838968596063584256 7550832153235456494877916161638400 2600965091045720613626205196779520 -181549203988949485772512811005509632 1362383695322389605120179756335104 4011138484629967016238569154936832 -201749204843504322449375040269975552 1064370910554767204890925617643520 8676722262164420261895580894101504 -52393727959096647854417254211911680 879350564512846135381157054775296 27950317274313990761775982706688 -293412199808725706925611079388102656 8070921409435369927660915526729728 4397093018876152779550428229533696 -507580869719014690494513355859951616 1489121904248903220431415920295936 988179026008656057903222370598912 -660776886831601709384526597512495104 5249527464714417570302790394183680 7076223773398031877385232345726976 -160464472528179649401128187840167936 5498107200963034111394624258965504 157573864331916150311323942518784 -698076030259818693698888135530774528 9786219813123200548759922607652864 7871759409429663458820307845906432 -860772857017589299982233581220003840 5386597620064830926426636948602880 3719870559865270196351926716596224 -314355256675359407996613090850373632 8232163658738606817887273948807168 8446887412512985361980261329272832 -428558475458576594636619967033769984 3849344877239622075832079591931904 3272412006038080355523663883141120 -634334486894116454480838287991767040 2071111232611430103964511985729536 2039505156337869869547633548197888 -671774397984644206307463450744324096 8639346927954778861621104535928832 3547739828285115912553933723140096 -204075651970132417421073881208193024 6372433708904110809057202702123008 8466224511352419344199413747679232 -694251498080257211812446468365615104 9679112546504008194714386095407104 6529382783874903505632165858639872 -725022974493333270251200291820011520 2084168597366501786771434143481856 3441799965457348397383361325170688 -198717480339576539955821784093163520 7134804151910728415763178813652992 9275144423918713110757320383528960 -15049057588723065953276328109146112 5570914025759089734621609672572928 6694306476852558844424887375757312 -932034359866215713168350264076271616 438620637385050591217025177092096 4285254869828382095185740434505728 -688835509656605212703756323003564032 8701489254663514347204847824011264 4021841634053213327994869164015616 -702690219931353672375465049480757248 962610283425792658968780235341824 541003602405606731106117792825344 -741590202808226755996684845395738624 7541687139624205810773328991879168 2233312720248487033831651029286912 -735862907899492176439929399320510464 2262699183341120339189694682103808 5975446450122155356917694793252864 -321228021945975598928965703808581632 2399093927535250268878156549062656 4949658863000601353885611544543232 -25833835336579844443137740455804928 7970932672705042177527408121348096 699037922949277144935258254213120 -159513838224202952672743728361766912 9751355497907679360545377174421504 1327697068308036867055595754094592 -98068204363875367652546518586490880 678661010201577868503990403072000 8992345246598391347486287294627840 -194457021457204287779867063004168192 8776431262689464485967324950560768 5517035581411430720365560233721856 -947028491038026244121609250113847296 6413713857063472783690975313657856 8186166697024127314763064054644736 -564462215237225969763744031063408640 9970767086293520051303609865863168 4650800944299028779160915582910464 -435736220642466055510201418477731840 3178452344431646202694613478670336 7107566997625069974170822613401600 -778822850439144677165867179660279808 9333251886168787416482533636833280 9357274343575847462856538844037120 -972623194478667182066956786825428992 9347603694940805706817740661063680 818427403836557613697662921474048 -521866166952132375903657663139938304 2778807610816063933042134416883712 1474429716528480190586697283534848 -198880192949303872531676885625602048 802526144600533245509431503880192 3601077029137174966987168375898112 -26517113015924412899711436997001216 1057045848607179231238474042441728 77225587296395772651173247451136 -754918977443637706653424457000943616 4346775858055456074365368272945152 2542489069210554805993133628719104 -306903455486998426294292043110809600 4800925051915193197895302843990016 9541046315911010698984960194248704 -267196583925417144204508647909228544 5555836761163983923316914604998656 2513005175616620808203336624898048 -279843085183704927421032632279891968 491036187416650076473100616073216 286843401110280677910485149941760 -206369120097416514998909024566509568 1911726046709435309280149951741952 2004203588883321427199186064900096 -881926734675358038155082479951675392 7703792239059652482659235900948480 543024874629553825585778713952256 -691650556061205998255982260284030976 7236820658811831804769821014360064 7425447750881431957190726779928576 -149777027241249438450597709716914176 6981464742658903437035728392945664 650863213828582936101959879360512 -863840968636135087404956284960636928 5543294201573323896761524292681728 81636279966244931381685422915584 -900786501190842033821148377081970688 7944840260029707426443573625618432 9869878249554887072046361444614144 -499016936015848402966944279680778240 3095058017262974648522019759456256 4281473051386084314603860850114560 -589672181469028768267344136980398080 7520086156302773554116197332549632 8885996680641651777628951782883328 -511723940812226077838826632757903360 6077516449360124567323250612240384 2416890915322294123847867607023616 -348140273767418973063401669432180736 391534945486699767833836199608320 2183817506254277539531114281959424 -481339361739077207468793687577722880 6356534652487299657702025799401472 9027163913628299891859458218786816 -383736618792128678824851025594155008 4938680008432303212322057959243776 5655936443110807131278613428568064 -509399629586491163341816750845984768 9669307308083703671223317197488128 9254945270045642174655722860576768 -946665312023860613969851787069358080 8270924395699156819755612223045632 7433237691546464308063449278054400 -689652187008803968052084511093030912 9548881783489408610318572773703680 8518332985738785777927656927395840 -35630530462946185164257360619765760 8020122243193963634346539530321920 7104195518607050277759821193150464 -789440806326580747840474027141365760 648099722895042013995758373568512 1056421699340843525157900431392768 -340948500784730535571016937791029248 5842412912297338697618147361423360 2401380999124713524539687465648128 -622301538208802485142012873765027840 7439022367612845139959140514267136 5066623770530896837162663896154112 -82188812602065527918799974312181760 9010493688790142094915685616451584 7291948652803824438851125324546048 -52942722349149595275909854750834688 6986209686251913328964333054459904 9935327757660681545229754089603072 -130850597306970765610071136015482880 1774629680154283747426275654893568 1098462221398897774871049444261888 -986184946473986842128809978497073152 9757137375555022676110443429232640 8958798817417420236235348459388928 -575243170661665571733659539556270080 5226111887075300478374143263244288 5960693558298378503604838636453888 -693509502196006282910801643675058176 6966049298882193096988360792080384 9781678704523455443619592399749120 -662667547566192154228380453153275904 865822704283581128083183515992064 4159893533309568249582214507921408 -216340382936509432513343450706345984 5403190143077650768394178466414592 548411841744350953297964905267200 -261530011846280178474508088187551744 9182467846886867235685225832906752 1445341218556100674125266560221184 -45537467440532076008561680045834240 6319653487552522824500103696351232 2591985300929160406641161711648768 -368395829308377323008102289226334208 5150878494759034343422118317785088 6009946904534310995365932885344256 -875389608700120021058252084931985408 9993692792837800261267991195287552 9328582427768051333801056327958528 -366998204499451255888779477709225984 8836084959360561789175131688402944 8589963864190555417898288653795328 -57029213128223786807070991176433664 7424397222281207742083233432469504 3554586427730807505036044857769984 -687347640974407264517417446622101504 916098906543149673411576340676608 6624438972270077232561662709465088 -771926367612898312655908293190877184 1940414697479653440096962013560832 4671243034253567511340002414952448 -960607238984399568361515086751203328 2838767756852455412652265229516800 9565735017089772288947746416623616 -73297615890534143370975041940357120 8853732031272396160910328724455424 9839667805635184985779326051942400 -288744923048949600852297694280941568 9916835599361273780207060690927616 3956801737738187345044089855803392 -661262787554418867736967938431778816 9285083767035270162670134755328000 8982676073149050043808141130334208 -1376087489650581328287966156554240 8563621309772091457260924121907200 1578036445165620880942795608555520 -773372984829541982068339592537309184 8592169093831849063297061448843264 4064162581560923511159499503173632 -685729295376161657944056593605722112 8573280370234123286982565254135808 6510020054012499154354667983470592 -606734247763075014801621914948206592 6737641185120990128280733759832064 860805553970363938248176273719296 -315284603456830454539457732582309888 971683164422070060170191373860864 4389894711719812693415414187687936 -238032066356397094865820819059113984 7673817567157296098260213164933120 7335714687837198865564938620895232 -289060722312266330361121663587713024 8137779123664101922208466985811968 4136868030730969360367998654742528 -761678654631891325788070349100810240 2781485855021139253222438544080896 9747557261925167014509343221481472 -363441107620320512279654931906953216 2373100296222252249684385283964928 7231497997027019798229446966640640 -710240177231460669628585398174220288 9126830971600347287306008885460992 1225203176541452720617782274686976 -291879005840765801814517107566575616 387787408078630519867255310778368 5003154700412588233520398506917888 -945006141588237703783751366597410816 995987174065781817144810355556352 5136045394385968300533948532916224 -104606560383249214803882679384145920 6247878965494133006690472878407680 6916275751746729996136489676701696 -447269935635853257680584336864182272 6360280961910785483520620200198144 7632688145389762521170404676993024 -377327164292036327579647892323827712 57383716449166068049394637209600 555555259604620878310502991659008 -95605880306204202286132341831106560 1906722369669855630582602774085632 6378513066582698539179485100507136 -638614322674819576657985970169184256 1179757278166585870986023696072704 1923565390533534850539564547702784 -265216327692311261053449808595910656 2105711421697673829254828407128064 9034754805621519250840063848742912 -341440353136775153594716435882442752 7507206373894671342223731959267328 9419210270259552799475898196688896 -607938978123809154769827196255076352 7667765438407842103754697541156864 1749264055692608852485658499874816 -51239985131004386163894733682769920 626542742150688010672655963258880 8030085189437732038661147879014400 -360312463483605547831867914003152896 1300338177335641603192044273008640 1558569524391910492500692568113152 -497232564768185711651708330617864192 278623805312341771243314560892928 9365227260422390704800635121827840 -204854529217363546969965586955632640 4874692622515088557990369124417536 2211520142566231736332751355248640 -279295177911683534910846177543979008 8422285982750046834342659044147200 9033049019717960312590348991856640 -76841552797389761547950009410912256 3276450990700897979022497776926720 9075812527660096336350666672832512 -279508119263410743984868305057873920 7385999798070583553911733589377024 1665923329923403366974371814965248 -767854786259184635351681362886131712 9363327046402245587744315095908352 8419265829155458571482728293728256 -46390088253930685225300949041414144 9839054833178726330802138934935552 3112907303134829637358315708088320 -581986248632154977602945528667045888 7031878758299756646717588991115264 3039187500656651970487997784129536 -629522054894601789308339188706312192 5241304418038015344484747602558976 1006071815554729933586824058372096 -771641044625213286671331436953337856 8070617400777180159296872615247872 9952103753001835897646031292071936 -533692110109449913689223213048922112 3984327612981233519756572455075840 4157771544023865393793363573997568 -235491101261531309834185138637897728 4271022895776209251454349100449792 6673865917339128891876667857829888 -682819708921630165938157036461096960 9737239255393447428470059506335744 2202809871261658974270232591335424 -741506101485483004442106686162862080 4320636750238206910752987444936704 2419312275844694270570728190377984 -761418629956357806503553432306057216 3107014455695703453391055795257344 2729661904765703874549166104379392 -593298629731692369801595811222519808 517634646182533461303101875027968 5861134026948674745510896334798848 -293575271266185310764463474364907520 5894989987900035743928570649509888 4915542754777202726358731951439872 -336764051715229546393069681547149312 1022220784984017833258574504001536 853325837372501411620975785541632 -953214345542241515339566662757122048 5708654848990095925206431461015552 9321948585103290014754602173333504 -712898686231757343164955369903489024 6951194267013953982115375742976000 694390842743582286804180021542912 -628753291721983572056702638123646976 7000321473977136512235757268631552 1558960302510649149197129523134464 -17356107566576089020523569813127168 4882832645200915051513672988884992 7724801931166268831814738589515776 -852381227075257782079271528665448448 9806037207362163175765718620700672 1236795844762949780509750361849856 -535981588612340173565295508896874496 7527530914831688894385499800600576 9273935553506061799397913358499840 -410238142702381270196359399817084928 6068936796692598790970468720443392 2077823162441162902919758718435328 -615258286715817660010776874402709504 9639971373142680030191191632904192 3800875300821818901817876004470784 -665249858287388714139786060381552640 1108585369980430423264922651590656 9299491909608942329132710897909760 -257749075284643832172644508257746944 8398141070179980254648968490778624 9487595337690897141536655174270976 -450433948159471572190406401513750528 4297990440657748316832386173108224 414416690895453646461207475912704 -838064137801878656552400794838630400 2961178697701392805711478605742080 77386032178663541971432637464576 -889274959486533203622368483100065792 2249730078650351289367569098604544 4930138411500883057579653456723968 -590439333814394872306808780021039104 3238221464079333624403934488559616 4452042325257056011227810869805056 -449082739429154675011047526456360960 3757450390684840303713645582352384 4923064225034762925970377209282560 -329087493337703222022457821432381440 8029080002065975208170308610555904 2181101874034590565397097814687744 -537069820320365914986265470558011392 9690186123746706920048009339207680 7223519481441826296784781913882624 -415850639951100808548189997776240640 1601990208470533955959490636414976 3645637986223263596176050084642816 -814820718671745704788837273463422976 4675819173043932929761839046197248 5126562824820638380285229275283456 -25196103454249199800765125025071104 902434695752663482544577715372032 6492013870833803522459924961427456 -419267694678212317026833071360442368 8022926568363968447522254104821760 9233462819733597028595863008575488 -906371226544036503420781541346770944 5418372204945323398039002188611584 7308934769220680930043479610884096 -835019004733569571488888101978243072 5894935431740604795340972858802176 3948283900542961912242093544177664 -791363382562807676108050368353533952 7763950589518703540628852685406208 5063097550927083287758462445944832 -92107471416572936197769505804386304 886503364674501781424215303389184 8853479189411394065301742555234304 -745401036431187090168371112935686144 5031697767220154165517771215994880 9457843171740025995791038188355584 -399884374401059476145367168126550016 7060599164909787506574908167553024 6583378310621537741620341932818432 -702108377048026859873701170427985920 3392787515197476119542856983511040 8602472380634881273577744587816960 -758232870771838168970272647669612544 3884103807291779945276305766875136 184261775809957320523315196985344 -228423233256177933043106800512008192 1935998064073655229831430069551104 6104308837339734404185163340709888 -822021320949955857338139494099976192 3781752900567561027219472636706816 2117537085040360252605810538971136 -510004850962964113571403902778081280 1554561423692052056099893368848384 5817274623154349645242667150344192 -724137652862648534431671005562798080 5391969899735256392424762931937280 9397143694401013032985449652551680 -467600358511240643962958318216937472 4089728471917558050231890839863296 9221631183526432210114150578257920 -406312924857417379705440098532196352 8203928226391151308086660038656000 7562914066271853435106086851969024 -391226295375792974241286691561144320 5121646896576863339184882957942784 2912688295052534761819667729219584 -109315175709077492503804981404499968 2826642439891212985025426802868224 7623298164748879224024965075435520 -663392516529433988016026013812129792 8117669795633171190890883192979456 5786310995579567152075435543625728 -933901966760233841525292267789615104 8557867895299281591166348396855296 3536546011064261851116205510754304 -565534728583917485167431210554621952 6830186597066550492047819216519168 9307309260387382654499330445017088 -29813824847109424386955393294663680 7112323125736977942856354066595840 5292772374768412236548978392432640 -419149273751426767186626383766880256 2798673559118076621699255103389696 284635847377523021332080458989568 -218669564803327507727502003492880384 3817817870518701211963887529754624 4379169878002508034043955231326208 -165183148108473563517290477103611904 8438934515585122231598782808588288 8542126044750661299563425658044416 -126350778362337681117274251338973184 2827278587245484885191680004718592 2711058423619197808136861173940224 -316911538503709770162981468872114176 451704458941776587722820071456768 9664671975712415979705354120331264 -265778131647189338616334243032203264 8457913646810955818691290948698112 2842458681129423347833588879982592 -438773326451208257202918438943588352 3399351503240563073163449233047552 3156405738189371353318496223100928 -736115096701954565547002208668614656 5712135748888323123800417125793792 7965120617205374287834032891756544 -941984524419163639738672609163739136 6281650281577661500395777603665920 6648630564564008391256662903619584 -393176999435009823448829030752583680 7876476410273878356016544757055488 4308132975621362445529307582300160 -446048500551612504240414280122368000 210434489230916276445899401461760 5481855928775474856722075987476480 -816815122169690392782459813633196032 82696723503243004650877221863424 8696432438342387162399566418935808 -730646443983163309651067761709809664 3435311341334281828561136662872064 6816231571562065039641913851904000 -988017505028468436264761310811521024 5991419682311756776519460668309504 6614197511700782712200846628618240 -847489302162198016724108634866319360 9888473465873779661412848992518144 4271430403048924831673834495016960 -671094023886729712036667346688933888 6141969639678833816611067413921792 3110786827423969896855810525364224 -351168331759263343228090709488697344 6512640265156178154355516631941120 781997139337902916477743636938752 -682213700689243909183700494488436736 3547987632122929281311857172283392 9866749695856897825343767855497216 -704309663382724873856266868896038912 7597229005197851957269841359929344 4798535912402937925293489921196032 -650718377251571178879936596086358016 3951778744989983770380194159788032 4796094408789026133416171486052352 -205000985201949763949151332853612544 31592222317901606219478282010624 2075849457235984843775027118604288 -324045310367084382669415385925681152 1055813832528618751762612585758720 5289623688740349843982513036328960 -854815466090055924509926582118252544 5269140175054352392133287360856064 3006481884258514554451021401161728 -868091058256705154519970494447353856 4128689982989153550244512029212672 725339382116309687739959197302784 -368144077869186428673678226501926912 8156650482670674611058017159872512 5331512819737495311022000615456768 -76446619308000664437966025684680704 7439475002645436638664134548783104 3742832570682919703822479973679104 -250793394415038872465677626319568896 3908380178091432995902328116609024 4162686162848160352657685331574784 -6553294295217863262421117887840256 5282350897249869849367855235072000 5063923760596867662200667356790784 -578295462858081886056218867873611776 4642572501887505294660618556538880 3758597390369786979477317855739904 -354776563847023694369007240466137088 1943107658361001977048146674450432 9538475902233020204457430129573888 -460250613968646104283555911578943488 3519629873593744138252055268556800 5321209023270164298215285388738560 -386942301579068554825135704598642688 480874493353391314065584740630528 3466338058464117108268333174620160 -677463280454012827288767173150900224 9220531422380228925172595243876352 8632172959268187809123905312915456 -501934761046367990424499021598949376 7273379289977739829226083218096128 5527046874510474588366837387362304 -222323007925888967754352399191375872 6878447965136980249322406788726784 1439361078178275293942778995671040 -928675288318368753247878878676910080 6662959569963996608900068422975488 3981363383273377332826318634483712 -327416632660569299316533943682990080 5307982403960171883186190532214784 1105757212952561364104893379379200 -507116121262749651243342030327250944 7685834301382653813418248944746496 7296712319558050392079237294063616 -893993407800232590328692070095519744 1970773376329299160791836923002880 515545482664034906221437326983168 -946743010249131792606741967409250304 6630814752262174297410174074224640 8643080192334027157012411750285312 -909610085846703754900359616575569920 9764936753776847634132020626456576 633920231164363657964219592081408 -515861724601139542239743139049897984 1396288523554761063198131834847232 8258109709218983071410215727398912 -563822195333066999402745902655340544 2558470351310970764373194975477760 9443787573417127649216239834759168 -635312766887818884294229851021246464 8094600663451486782646506242441216 7469781418747001458812655167864832 -579000803875814908830870981417369600 3470846223076821385429010714984448 1721353706883728824344012130353152 -746674582511395245046653472324190208 8496444326812067211054502459211776 6899954715529631766094387727040512 -548900609888570634656230760630976512 4502474878374228259286447380496384 2077605089755809702719450404356096 -569147910903367647607273300600815616 9196690303551550005041288022327296 3024325992364461381860305068359680 -751607754140125871958302486154969088 5078487322239269030907456180453376 1418288763135148657767989936914432 -211287471856356026155898767895691264 4500600279959000218996722299305984 4350010790065916182690265609273344 -161897541174604588326562874691420160 1769064898909452330014807091576832 7699570706148344888402496326729728 -237082582810885380535260572236644352 6171944523445578439054405838831616 5510101678265603449990268424552448 -393374845960091111180117645146980352 4143315647142325598310959836823552 9559699448675662706465564792979456 -131431210611357366365079203355820032 1485333943967507712410299022704640 6327505389537398083328630690152448 -42381715428285785834715316796522496 4231606703461788081986651300036608 7727681079911879498713346338717696 -746131985698799958305605809699028992 1466210658022543061130364804136960 558719385285855467925403481407488 -838065865319579996559028426888970240 8274630337504720965794995938263040 4343285667896191781541070178877440 -104478563950593592744855334838861824 5285314572799460864556961577828352 9424293655497348415999789645168640 -702732788541541452695650847657295872 7246406456819481712488126307368960 7517222792556627762217645382828032 -40555263688910424592557025357987840 6278151831247396217683817340600320 1661601294867141904037319693828096 -969587771562309725521462408941404160 8163879550913520978750366352932864 8731361654487714816922138907246592 -758715719932301476538372859981987840 7725380040802533077564885705949184 55558579310571477364129296023552 -477704571079622733494408419980869632 4687438448571239210800665923158016 2323868734029752225563028364460032 -7391954785326319587691679090475008 4311530475502607955285688618844160 4680255536574105096614159700721664 -826669357287098776978858819954147328 9222040585057013384546268762603520 9449766144964704180915551718080512 -423268576678480763315215034092617728 2100349993409508812745819885142016 8187945409193014371147952315957248 -842347825656210173749193660904243200 3398682998341830438169696792477696 6192369528138408061661920949698560 -464797623122831571912530997098315776 5714651280979269671005782263463936 2988937288580194518761858781937664 -495597196998814648542698555087781888 6943745801248219022082310102056960 4581036233668653332309564096249856 -104011065413837288047549473032765440 6283369820084303512943395659055104 4923528951799841176611395634987008 -668466674807047320132983908661723136 6274238282799104643079176672247808 1259465442804447100885609545203712 -556928682953887473857557200440918016 3853406108063790153063471318564864 9568679581086101288299320825610240 -677647111440069650315645826359099392 7097936771863351307652422770360320 6358494850686311903439203801759744 -603494371577892989777548290788687872 6975027824073241032104375866097664 1443936243738211839923368136540160 -989305352034713637337965516789121024 5487619331910932089713823819235328 7693363640366756330543692461899776 -21828102015280988281965979990228992 7132961670099656913029510887112704 3708798355006485661979290128875520 -916448604813738206404355227316649984 9758369672567228776299440101130240 2669073601373835660274587811184640 -993835589904691921634390136504451072 5679259362756218632168092542697472 2815530862167815235969384554954752 -213814082509973126015996105492267008 9288107609396212611626991186083840 9340651945167226674861312267255808 -343949642127280191126502268855123968 2883920712868194043404441406668800 1446728400397446881154680068505600 -625893227819213244186837103996305408 6716648165308742606055748285759488 3249689230325891857308060208857088 -452008338072315490304654258407997440 7900170387071092998753566119165952 6605682462163153990595879999897600 -768933859269231423257400957596598272 5681630506740770896173176805392384 1917377982754449428186950203867136 -402150845983505944438524536487411712 7275298383768078612513001731784704 1690298253354741552944629357215744 -32181895316930385312737242334101504 5856327017629836491365258188816384 2287813132566145103570827506352128 -434830552921195437814385098683842560 5803853468269369420545385031532544 3254711368063506977913252744265728 -430391228769433852484962445569294336 1226959504410473405010969043664896 2671863458516895217792977674960896 -650735790315451912260607455801638912 1176636490393351383360870320963584 6713475994373307838318152523972608 -285183355471645205681614034441338880 2672410372576435324302810660470784 6320658031778080591898060099944448 -117890918349663107308392277834989568 2088226470956755553464026652475392 2665992906389700649774555412299776 -14163215329344535898790748672229376 5655488123124504946801163286609920 5768172663322713160766702969946112 -966862839295042294422946143692390400 4108716036789638778791435408769024 5671307093712492128621805074120704 -334508997407315283023949611778703360 4126865545856367947706109490364416 2248283864337688962826244479516672 -539535567368416644103445825399554048 7012576338043835881620030049222656 7314058586489042401281305678446592 -73284647914627179415734905066225664 64531355711178829700394213441536 1942391501956189992046865063870464 -363432892199460636547229916057305088 2799714212618880536442837005238272 9618200317040676292709791186288640 -890828853482668213740111443001344000 1617832023872105438311962338394112 4459780026145099714491883815174144 -398641416697308428390091923791020032 4953068261220407352436024955371520 9949011712389194927422599856128000 -994987621004996380158097743297904640 6656841398235674475915187662618624 1075042525159826170352235521769472 -595618164477120066284997160745304064 625757248497526532456667487928320 4827533772568342491844171941281792 -421397941987109384506603836641640448 2186472505044070003915949822967808 5399567372558415561725066734469120 -760510141004271659432529679311962112 7965564701976080590085147462729728 1746305115865672062698392750391296 -257389393171189762520508746359111680 9266264211867262232761759441092608 51584331415539809443003475427328 -710651571922652660759644635268120576 925519295215224251472497447272448 4493865563623502147003067169505280 -410271369363440226559277121327333376 6934118051530335285152798174347264 2934549487006240716370907743911936 -774981887112927401081807187499548672 8763994570298762993533930639982592 8201801037816663292289624653692928 -979310437430559768660641513207758848 4238529614034424825625961945890816 7662581551025092330320117394046976 -100856256213514558805870912221478912 466288700967691126593325723811840 6897398820477380061493233241292800 -876643246967821548096319563105304576 3177381364178562431581864402616320 2033238646721829002313822271176704 -376734135235847052795825699222978560 2911024041787048546154444859899904 1606301725281174037827115385094144 -19746697448237779708005329712185344 8439320885013021160332519146520576 8075704195451883678181306230898688 -244977984938842810285368829383016448 7643358731508986448648072933146624 343938401257674673256386416082944 -655534578813839984947634524810903552 603936681968308588478493947330560 4836218818108259097804276802519040 -549935095398504544563589464832606208 5796976756988199504035013998936064 3183772585428031030455562603069440 -344357811809671633346719054282358784 5167757075396306161450584870223872 6501744537380242582947119639822336 -700290817169539135704190686557372416 7572158329468183408174107868528640 8922608444984282448982021949620224 -168390244046022506835615335688699904 8783754910811583896703573384232960 5557034178489729373473597409984512 -273484258758650097724978379750375424 9499953990463007682264092339339264 8711535834311531406364805569708032 -339235436475028285978124919976755200 9409156075190935888686486290169856 4753352752511369749639460747739136 -177461084602833701537311185919016960 5786233269178939480682193005576192 3050761169439899835525478561611776 -68716937962134954962964620960071680 4869164127073163022030868058210304 9552458624889382237783849036677120 -789410415931702434196461753993265152 8326483675014537792394102732488704 9511737433371465382918901681094656 -955649556814238500538098929215995904 311530008532427172603586154594304 6879391819073034257457146434158592 -670082881744392253219546134743089152 1824935879081905654424796772958208 7227319840412856986500781301563392 -167296631803313915022279488552566784 1645145183775775855659192518967296 5546690663811493765068548539940864 -566664412643760609499337292072878080 9685100417469857091847766742663168 1216447534932498920554492250292224 -50586470171838315069144452160290816 5417283560696975629196522460020736 3006302148242912740689413767430144 -772639854891042742312015798785277952 4350770170815501779608785976819712 6858600469823976068196680052244480 -547622736341229330559797937571889152 5392675238490337815474089448439808 1000222026694158000218491974582272 -661538802483197218799177265265508352 3758851497156303941028317801480192 2396918791258972972605319979991040 -274086336706804926256859167628197888 3376863273009350379642147385114624 4284451116580134913815836205514752 -608992981163366353563962841386450944 5641282787058258349802765749846016 9518280034920405129866803685621760 -258679618524964270426469335029514240 4289571619660336359907583546359808 1911995708316551736080725849407488 -422771747874674246487088520031633408 8522980983919503198842400416989184 4779002971621449921927469571506176 -431760423182856564242142950454198272 8222529351161874947115016282701824 6063721491107300446803681882406912 -779114416268020994430130592101171200 5574217992717363970021263291711488 4924117753156970360936959018270720 -832386565416359995709474150199328768 1847047565834058269129617759535104 2013026134742546093893648591618048 -926818120921669369957759098923515904 6938749529369050726292217325944832 406177183789068814144330096705536 -114154702249281203151079308382961664 1210397481625180291567909339136000 253067670231087344829974410428416 -403575287455999459558618110044930048 9863444933800054220931524674453504 2565329889790710628473782254174208 -971676104460726410410869791513378816 6780308498255433222060150620160000 1128603177566094595784263463862272 -390389161822058931410199551884132352 3162674175795806549380598050324480 6193686247548606750037178012663808 -484366760621070984197072383589220352 8587181981628239462972210909544448 8552974188641565557999291548565504 -319709097773838231563955288898797568 2617094965788009567731559906148352 1897186743706087812827710715068416 -816986453368390572054326510308294656 2441050123892273332593784269045760 2545805178500107309985229445267456 -180562527922985356349015045517082624 5398890194521346265888616045608960 1405052678640659183724556581863424 -518903344353368188507137207938580480 4728771215586413119107811499835392 7129248981697936045310315360944128 -82538397650564439161426656819675136 9180831953994124749326314310205440 1303326983401140320808348774563840 -501835214024332777715655945584902144 9560531731115287281562999414849536 109743882938448584912019862323200 -146116942249395011038870901513781248 4270821447838846079363979478564864 2111337303146931382587958220554240 -20125925301262748741047675353300992 5803641858194114459360725953413120 8537645469831436584147697994301440 -991884176734969162350414949704007680 9603916436348154158019816540078080 6178576990674010543461024839761920 -401714821284843610384961440191610880 2794677652952489757482264899354624 6109288997187623327536060341157888 -119463511584357124331322510332133376 4385650441453322429488426792255488 1202662471697771176736186599211008 -105535488206693753543328023508418560 3831927308128956530174843414380544 421594420470068264984050810224640 -973798872594149359003573251152543744 3613654658755810341802529894957056 112998394724914905458084111450112 -37896318400410149135951603186008064 4629335755776349306244831782109184 54176186843085973021427901661184 -249380426187360577738602927364243456 3800301260634930744630189303529472 4756192123134057312354373558337536 -475021310311003884980205938580389888 9552137822664569641579776841875456 8878988563333889846699120358588416 -508252137574676961275934823721992192 4149092285663529295350129160617984 6075306695860566087488457519661056 -168997679533991633849333869434634240 552346759820524646691526559137792 9279141766880861799634534997688320 -77697567460828999783791555428483072 3792875255947348923592093378543616 2710359661037443708249077616476160 -19795764231482844872080686562934784 9236742770597321934795677357834240 3888851767273036992026263542562816 -184175989499561213257053835651710976 6992122759665658460844603031420928 7022860953888646487114077284859904 -616833558255223207966876025768378368 5883236629199353356588418164850688 1412141016863348284612227496935424 -523850013636853935046758787425763328 8315421836449005774323067578744832 3569861941242542146219102804377600 -64356005500913130410421878073065472 8565203866936949185916527026634752 4066418876645827481202320908222464 -479651316644660585490419528111226880 3576496972054533005356583270481920 2593086727602576824558393342558208 -1792302676594103581937979199848448 307917028625302167798568133328896 173368735942243475596241050533888 -746998991008594324847224239327019008 9100461631900202719938612893319168 4873434757444346773928741395496960 -707959962162160342241523052585156608 8703380620621861397482562773843968 7109809090354608846592813117210624 -251275038371434672531974622090887168 920943500322937121336877368999936 4995566149377096856710486444474368 -151646334967701348574868524190662656 5437624387140517552455355729969152 2737478793426227366744469754871808 -474550844552384110892406546427281408 9754687421428599807803823912648704 7086308464037565191268791989829632 -733077086416458630812948312941920256 8396635083552837308088844673875968 5757717282400551425599976568258560 -328690714404836370996842648267915264 2772670488644085937803937057865728 7610887198473906274751825569644544 -678133797028924154094156620805177344 8860601171626937206692379413708800 1106171376229299572984575040684032 -609428947276414590953989105162125312 5699668332196055361109303949787136 1786624383135091964731908574674944 -800869610018359134290931024966713344 7179352111654949457609786709245952 4631026444320613413488507521859584 -824947350666241243638496283852800000 7279768983838512942765505691779072 5486878246093161564578321350524928 -925041777238509604746087115551408128 2283037301957763594938725018107904 156696099472897427999697284366336 -88696608615189495521414489485344768 3460546746312395056311756111478784 4184714681366394728215440556818432 -220014012663507135372253630904139776 7971607079950781002972102993641472 4246849910027856099072013179551744 -540438741416129421601142064833101824 3961730740102115875798849754759168 7519843121920144586527652995661824 -800098789620646369628541965920370688 1021999591504428421095982190559232 9088579958735262182450929273405440 -613637766111377374808005850966261760 7905557143925702450377286968410112 1792788962966857021514957656686592 -865495851014862278579931304194736128 8980298265451450666724806482722816 8596169193771474699596597297152000 -340158561885496231914017088954433536 284889317122663437129317571624960 827716612160279200164300466421760 -626136881763320953399000813902233600 8243471984013442882260947370508288 1286160722657957390905625230180352 -48557697229456226075433093656739840 7261770072182338730098812201730048 9545964858337138605545971148390400 -923727827124150166446221864011300864 2987776875533630713943532725338112 6729003767960076392655046121095168 -457992202765857173376273178899251200 4857482222504522171222580850065408 522647453821756092411547008106496 -962784468700983815638549280105431040 4906826773071333917939601749573632 4019076976495321305530694274908160 -928416940870528507481834562409988096 7610372855427414910436123441364992 6714222552704482065683535175352320 -686052773786407150237278204715859968 9736912688960146001226069297856512 6067362954107634256840601687293952 -67079543327752376318963116377374720 432856724585295348332779674796032 1382019691070951156146035729891328 -683397295343471552206080421404868608 1599446920919889206266805073477632 7654270100041043523513070435434496 -248785086259150878648355658924032000 1856626631059401231142655851757568 68384629889717204567713879425024 -609713687374976058712798103628414976 85602313788443171090062643298304 5033109350495683514909961639428096 -653539902348916636932178415632515072 3070242725454987645341552519151616 8990074819675595349193551310225408 -314971422997803012655216896025559040 8328212098523904127367982421639168 6212255710124067209069055411486720 -877095008433063132029903038006165504 4260975160265278726535875601104896 9780874971193884338587039803899904 -240856270688845302019987391895306240 738122828525793504090678475358208 604291249458225551157748220035072 -166259042580235614611424807959396352 5464796272023004837685782613327872 7890222558105297231164605431021568 -115399248684640592181435214076051456 6648771357548597749173670215942144 4375940777665595955372548339793920 -75311959711203843286914102923886592 6618119271169495267398374255493120 9202085081085070350716256917651456 -461291468075958205034212871142113280 1021950673624622841899584724140032 1043935514993392179030659950444544 -494121546247100008907208033654800384 6243033373908628699289169816453120 7054281947562062793690740609253376 -916572864498794354190726633541861376 4290412526087718163013693509468160 6795958286410170204508842746707968 -839128107400320743091872547473457152 1590427834717000822219367241482240 9050665287497537287909628054601728 -79340877989017312112789034241097728 5889700828917145106570913477820416 7418075298442732736754648858230784 -629277446938280704062798275169746944 7189823665968623175236098143027200 641895896127529077675466306879488 -309626044372026938323817151164579840 1982321909940025683322459721302016 5807454571360810791022354772262912 -575138966160167516947915061132787712 7949915429590470151677175205462016 492182390398825956577204525596672 -398149293063224847349661615393865728 6422969926402027509713652244545536 9000913327959169979562672181477376 -356797757788463964218827970290122752 8646798984185704530397031615692800 5132818905178994063644357780570112 -806641821524727787571611946209771520 7454303817204114994439174804733952 5937270087357428801284629489254400 -625473682422662545476645605982863360 8182099273762067111132255691472896 9891412540490437564807764745650176 -949096224198931317813009621949874176 7466797247050581059638663885881344 1131989875215658800655173794398208 -245397365634164815979417593580617728 534137593606742846535134477287424 80748087453740389193725459300352 -646406284916872055945829407640256512 7856212108269883346933502344953856 1497059772886731640664248291426304 -200949272395181400947763453376856064 8559198405701706593225954694266880 9881718076863793912479847683194880 -374669611903701002854015352493309952 7965322533365480881688901584945152 5519581262122801367506324589379584 -157378825170093057663636651768807424 9541414290657721588832604858089472 6455576962540779950226928062955520 -7302222345917467570751892652818432 8441225358824047264346167769563136 5267785756015778538813919279972352 -351775528475412186455085251880288256 3492378942129708870719518292312064 1628927960839380819220275621003264 -160690485836876128876990337304756224 5264911365963913773794104558223360 8891017350902589921485229886799872 -923731719522824193658173285059264512 69888694631291780388782488944640 6572043121682537704725190566477824 -708212925240242264128644169167011840 2256989760683950731541720386764800 5624179781636347135412753810849792 -439509731704099257668922891546132480 7901035710194722686323154023874560 9331255262424154178172680851685376 -347420732884443708454850533523456000 968808402844422410883488223854592 5854792876389511464949955539501056 -578748068064327588140564861941710848 3137021099958873003802680396611584 6006128120201975961753647195357184 -629410961776903973260457301155774464 1164817602878725614647123577405440 3212526749594140979736475322023936 -347737547040399803811692326533726208 8028911338454261964831908889100288 9194236421166682278340576399065088 -229599331099818334163873030937247744 2672898086950227722044838632226816 2423069774287705857108245083062272 -838736354294415729160534541912244224 8992027201351059157469050154516480 1627204940774159795001140057210880 -74559121626717213267608013801259008 6392773496100379627387372466864128 4868133600373520951291721163997184 -117462048334160572688990432160382976 6804044282519541781229437148200960 2888772157650126837804920903565312 -474398044665811318657165503653478400 6789618729256547506460722148147200 1103488740199649324494963404177408 -741849421612730007002010778798653440 8981667900069158328280877251952640 5430923162845502926814583694819328 -268931976260464208956738366676664320 6181268677472605772731901720657920 8464852727722691250493595039301632 -109365662238014540756041297253367808 6841980575086894949886201341935616 6851970724236293848426289353981952 -647023530382260631638226058512171008 9628945475033763377348324448272384 9945488699515137466459885825687552 -634812774260573666635229061567217664 8632260029581061132695359646072832 1265366862028336344579049546317824 -27128610513939109971660672130351104 8705298366603579164990019905519616 3128852735370765908796893464363008 -510795688048805374077794527729418240 7106774068131379078654928198041600 3924986450654923194331933549002752 -530680920322596494614127771962572800 3465203004664114043574914073493504 2097427357855943049846982973587456 -494252922424822383257139548191195136 3425906370792503601888983127162880 5478348280380506486236922844807168 -399860196631965962850043599135965184 2925967513299663034184783917744128 2350313734001616523079241898655744 -736283138016093249265567227172618240 7033489545251879129453680746561536 663665050262643024756555997249536 -131754488280016443039987788685508608 5721099371718197072227930298384384 9102779697963438358474095274754048 -130689112896179732254220348855156736 2019892545747307726589834205069312 9722513718427669069459380496236544 -246656772119684633372904964084465664 3088178040944227022003354424311808 815261497460684928748954530611200 -531218546203445016148920344112005120 4367395696123184071122787044950016 7085565341166798648890724796334080 -407020430146250930432903119642820608 6170106367442237055681877103345664 1929807460326250488945657480478720 -381660977067564981179617523208814592 2461612278901508877244830758993920 2187686272288983135413293534937088 -522603069068716800856247395422306304 2104069179758059305722399854428160 6032688182386086281025448809857024 -657748417391621667858993089922203648 6334374958121339542166418485149696 4010877935152029333161152364937216 -399229340480605627315414472492843008 7142557106767048013728895876464640 6632787966273518987695711078842368 -213594149956570584252650066859261952 1510213752969868579210052360994816 6179450854902287273976974356250624 -914062695726927014737406146698543104 218746514291906475446633546907648 7107944158226826162919275380080640 -550664104901603587104348961616429056 8421101961919657460582126886846464 3160648913953181337968109424738304 -941532348745779223473528325592317952 4511742006302818609223649944666112 6914820127504979226081418006233088 -655252708261809813772905294082342912 8153397490563875310246103923818496 6543369575980638745217283664117760 -19245585802614563253023760986406912 5493175410941508869442834677104640 1335616878453728458197113520521216 -95859515684302503033045177019138048 6181370188184720188325573116821504 2387290049840196658949979979644928 -223477235502576738302062028883230720 7755008239619752038183778310422528 2571600849539146604431827164725248 -18091705568433231498606831600664576 7203892567142327184471890419777536 6319862580142390357638103359815680 -569392773116486695214023367605616640 6759872198532888868155278126743552 2204723533980149724319180090507264 -984527000562484554612067103471042560 4556784083118910914551445297561600 8333078745071118359957234631311360 -290475381407415954112932305231151104 9644457045997117169189714042814464 5475657486981645256254204374155264 -209936299166396980705918700769771520 5244157096168119904097304943001600 2019259907579318425269453855916032 -511918387502056095325555532828246016 9562798191390494029153692649783296 9516816423732273641528022488055808 -878943032472084717881238759267106816 232925663728706240456677667110912 5672631615832388037332315926429696 -810953730143081366415719249746067456 3975607283944757016934378589126656 7568283627353942887225328423403520 -141135673334610258278858435892084736 8138861471068572686851053392494592 48604956802007452655942178439168 -729174422483430059683989475280551936 3997451963265486196704288763281408 8586268630972121874778842768343040 -902091237102134992317323123760300032 2235025285032519056324064406667264 3879439184363072208021247433375744 -985302118211923829987656184465719296 2175005265328073643808992387923968 3974712320260803992015364534829056 -247003301305558943301648613336154112 2541213180984404985008541136846848 6099473783918526113038758525796352 -637558943600078884495219567756312576 2318466658794221551381434857422848 7283647121413165760387619022176256 -376184808683329263223426110562762752 7624357582852454004368834998304768 6936982356222594163390463208325120 -844786120856102871316149841912922112 7641534173103949727503919842590720 7667057968955220014335172609572864 -901947541467938536259633075504283648 2530474094156957467011793201135616 313938204342539196220462327660544 -245059844854950833584700567467327488 3373776374825885319912864568311808 2394582777214413988984815915892736 -684564487831122723294036116201537536 2057562691998651638272445466542080 4578276933456738176219692799098880 -729331945174838800041008672310034432 1994150824506438599555310786969600 1316982534867140491498322216878080 -985845071882375537573365646278787072 6784696114328632522883668404862976 3575958175370864618625985125810176 -679852036381839255222983377924653056 8872788938049442616837625343901696 3581376113988342957138328613289984 -975296353432447630198297432072126464 1052209029909385416474071459168256 8387160404236926703935095845158912 -321973600916627779197652394796122112 7467977844630213619755237720981504 1517025007558765647197052172500992 -730158935048425229961474212016160768 2138418926248849674450502101762048 9374718674997103091688358654509056 -206140660660745987898631628854919168 4572643433534468918112397996064768 2860322253843950506371583871811584 -150416506266270327357189565892788224 5924663250064487024559000263852032 6343343634392456086197097193275392 -234120482962405343188877043900088320 2219135874984475455865466304593920 8587971033618264125789599751471104 -539346029044967668109740489610100736 2079321581194087390744392262221824 2389552324050391568834378978033664 -779618462625289132478650397403119616 7239417418780666299524068562436096 7901028114692801793334813013311488 -395598071417254403214870159365767168 2884023334949253249698503952695296 9744479396040182943046368915095552 -357768949354771140172619753480781824 942131147750519494763189003878400 1455992668546770563505382215385088 -214287040867083018081884963638083584 6880246720648004254376422216302592 5607400502787148486399840206454784 -302261718731461603569967612798435328 2207907716817372912075197342810112 2609682326915664635775658483515392 -499088811433022298986648931277996032 6870006500428932577697999244754944 6254302694792220274258605963739136 -98206946236242581657521986859958272 4239530718142958385653181554098176 5491799015913792116159022121353216 -457760689151501935658028282585022464 2062608007686490704289910308732928 997605341603027263408037741723648 -763683055048804099423486439571062784 5659035376167150846351389411508224 7230777217014567417615685917868032 -502372724434476317174042261249327104 2933631937919472445397591048323072 3059053379889406267669982413324288 -537567891588342257124552361629450240 6641876438875338315404511744622592 1177485590974888935060909907247104 -666584737541717075882967495451082752 9254731412657205609810260815511552 9421536607255227350728876528500736 -861272589563085452736061293253885952 8237324649104777257816400473358336 1483546340691068592084461346095104 -249700250200620831586775524804919296 1355297050254616071461035875237888 2759171116164643519932713198944256 -791142180394772058700518882516402176 1635196183529014482941470171987968 9926297591344879962225866151297024 -341880881958637909744662197636694016 8791853006362465700971929764102144 6092493672323990979723247734489088 -702276775524957859595743691739758592 3608976369159541856686969072910336 9147528672759008519275675866103808 -888757053096638465290018682298171392 215931276379408854962991387377664 1732922779687038728021864207089664 -357900365712862808684279388616785920 1247501949214212078218894987231232 4319172457514730814091868132868096 -527233907493475488216271951054766080 9339458216607838869566068963147776 4997646463229598872727922669518848 -868554939961514193931727248449077248 7382984483000438083696318008524800 9764848363283055729033955648733184 -213884392045730728619873455392686080 4185729307899146241020459667685376 8563539728838889229646128444604416 -616139621016920635747087837797810176 2228348317772358533615326028890112 6942724411253046276174462224171008 -696880148514659273274690229866856448 8658778267432017059337145262538752 6824894063983481320958722022834176 -947677939077003729307295620339335168 2589533563055686869280083085885440 8015416990184157056684922381533184 -11069150733743854497711252551237632 566786464840088106911418340605952 8497806854069275783567092136017920 -647159355483032165889797278406803456 5770498602769104756895643431075840 9081670871439165520985469206134784 -24892262954474855970979368417624064 7100689138190010643974425717768192 1501361133664306522030766758559744 -102870961176728478476143275330764800 279289814248563256195639377133568 9971341143346672719914313522872320 -181346280721442805428155203297738752 9061346510082220708996258799288320 1684173884531914806402176746782720 -795527469896485437026523399629832192 8494272454125156982119446052077568 5448409814450362839519035436040192 -916452669583791320203241799314046976 3530297619852376898019822437138432 9517601073136282859132884673888256 -259940353965279536049841098733912064 4878219316446472117752252820619264 6280778176521144569595771135983616 -873412953493464628808526090899292160 199125494630387736101140664680448 4543545570126967615582711763173376 -610434003913574805521637191530315776 3558635081733482626526153076113408 1646334465255183864139426838872064 -779830068892333711152567767049175040 9753233650003156945356842801823744 2688614902075700502935105622245376 -455419180783514431474097804103647232 8764878100814483351283810590261248 4054890232820669273250683408089088 -879491115790301113336680092102819840 829892939636199186709566858461184 5210425992697731219337169529208832 -926027384126491418792569714220466176 5508159276095547702182919228358656 2982750307582298290333715099811840 -602500497583456064992586529488502784 9484952811316609872788864939065344 6489439241858893798504163262332928 -570665153868060335765045305822674944 5203025774037897026505442007711744 461030396715857472758536579579904 -641274245900793076625914883265789952 6437502247973741252268773064310784 9770262210928284439167180371656704 -19640897154852842651780428807012352 9416991120644757669714535724875776 907668049068660444742469225021440 -918638679830569651073808801137164288 2040490771642648773273445522735104 9596842263695884090615461054513152 -751106752140256532729920240748593152 2561521866248500077833553495195648 7092512792760348842817360129687552 -735862608247245976625541082731511808 5159343542675616138189463598661632 2268596858543249663589379072851968 -311521742599064792021488082488393728 510317293300093519229846009413632 5527409006822195490505891701063680 -521194367427745886893611424579321856 5326540873962440086099829857452032 9429792846568002689095770086309888 -201839550082507308864599254588456960 9287345878531658573187250185568256 8511429470705469821020416942014464 -896166702482702545568051263638077440 7257333358649260965791151440265216 7754228040348136199920892847849472 -627280942199796811690602233983926272 221055683142764902599864096915456 9845567306025919783534250264887296 -564569704713142250609225964242075648 5130184327361946003176087946788864 5405127221634256943291001072517120 -801840277730769450806767077277302784 8359189787263119911526924317360128 6553714753133674480531793395056640 -684096809108160139239822727013466112 2688999948270264673541878211149824 515000366165396757950082857304064 -738857700124976202767443948730318848 7026881207681222267858657069760512 8450788938298049729045518270595072 -969199680523540417392942129021452288 220161540736873110333370239287296 6246286319917255520495376395141120 -401002022866760960383161429684912128 8458964583721903794056417465335808 6530385354011899364512519633764352 -810724410854973516666069231146631168 5818199784609303897088094115987456 2569964342576118131903397655216128 -771685687790673026725441167918366720 939764753302473537977499158315008 2724206727033568011402463869403136 -390070223575371528475298677068398592 87164629560628029036957139992576 889219076724886078669518140342272 -66638368121009184624866394218954752 2088332784856581663690854162759680 4058403874154778647782334905974784 -454883997965696200457913632481607680 6227318687876497968368289918746624 7371680870321177747438740170604544 -940396557100698246712485121682833408 2060622869313081130897549211729920 8829861618833887359509848479760384 -919037918546771824327762033208459264 1699759411850633108951766157754368 2999531730942890552225509398282240 -247623673639220166110259556942610432 4968687645844579152664162442674176 423269285625725122532353169686528 -696489064948762960723593537907589120 8889149010942097375391209001844736 9376832097154655663139560865398784 -26083039121806056346816930983706624 1955881968066016468567566936178688 5696247883095240096559864009981952 -937972999115046404786557066938417152 7673677573927890325896207538323456 3130465204716366900622806927540224 -889543624060968055573440901750456320 2437593309157853854674773931458560 7037035912603817964091999868944384 -89820515567319783442779162063929344 637551063804063482121449514205184 6333969388152240094557396399030272 -985905785051946833624016326404079616 8067379642719981253310004166918144 2449632791499834468175900527558656 -262636534714608999938163772798009344 2003420945852188463062180155097088 626797444537026101187088706699264 -525881179191998773953034259567476736 1459379525857728838138112981860352 5406484058408844681093202489376768 -20256223411107975734309363963133952 3940585696844195836563768398053376 5451653818752644638975994034651136 -927324994494963623266711553599078400 2155334412864140236924013464518656 5551604533479399249109671783432192 -291726549316947602267788196123246592 6856217335460514400366979530620928 9271807256615041134275573804171264 -327325879808506078133534428621701120 4813983305413384086989218984755200 3495894356449430991475795117998080 -853904170782259435344274349835157504 4452931736596907290229717992472576 1660666150854367162118279947878400 -551391475367502910550492926472880128 6968950881078249856943069092380672 4893377584845423308453643653480448 -146886665098918075952634697781084160 7451751669226035062276486758137856 8097171717223267081195593708601344 -706239682754067811027114675885047808 759182772506989410436068843454464 2826319511625471056687806799675392 -748511615904061748709072494248591360 7350568126299899703768112686956544 2111543121385993060867215485566976 -989391617933494033365099171723345920 9161952023202789865441712502996992 8498002487199355437426988269174784 -812549270942473380424021182429265920 3863922279024830343978745163939840 8215031026570223483274261228945408 -488912849653265519975475992093261824 280131793655748556170733478215680 8707594329300593619901371782266880 -545934933853708244493776199155187712 7924513786445682770064983868833792 4133332169414999594303869010575360 -357252827993123931822963065786204160 6013263402215908589204924872523776 6664338939938407442086710290153472 -127999615881452263811093114017284096 2928713444643926853974364518350848 9640947884027307412800472059215872 -381031892144414304738763548519301120 4321796481749427836631232297304064 7280682833397489681272815229075456 -576958809615536261526688170684448768 960564566877894309024068142104576 5307022451806689719738680479842304 -858766958804641274709834377837150208 6992269890935683086026798199209984 7702402670162406390314174471208960 -126892243126648830695074706524995584 8227748855177827432826265495666688 5508082730133121483582946987212800 -81033419696743261490573997158432768 3112340425563848896484325395005440 6973904200389053305058233157681152 -471257314484686869137945162692952064 884119135808358681395635981123584 3539785242858949413871707230306304 -750000439208345084607348866015035392 4291371171874131232678761375727616 1009652855385356693790246165282816 -225101564935332514830895859565068288 8488137749689192871364082029035520 4265987756040113479887975234928640 -436085323092505003792794625960312832 7986549685691366808270895895805952 330575970282661216068336772710400 -948359568829253834311633475966337024 5291812830925654986280606116085760 7419430610881040589362175349358592 -833849526984097387838661843444826112 2985288185583971140678473362702336 3543295665097660396123703170039808 -564080576061257456312106769268604928 5002886649077277188886035913768960 2352522070623293001586052186505216 -822232753465617473791858362875379712 5659619352813690184541119904219136 6140131798341669238525528943624192 -897721236268634997061162091260411904 5270022271825928254744800612319232 3723183600563579647857917255745536 -504295344830823945292112532221198336 6325759420252605574934179312828416 7369855875977711373019589352882176 -308788667906461243060633002303291392 3396095083382380715897462733144064 4934763884190804317486207903727616 -653791982885628874566119652692328448 36632914398099366897338957168640 2324941605488288008361442491236352 -918255001369555571491292977928601600 455978144090350950001274672644096 76779864626180131764320583286784 -221447494747943466949659763578765312 3613501370384624688232277146075136 9188519548855132036266270794973184 -733507223126326766661074655532548096 5454788411331958242678990847344640 4578030308608917923427534719942656 -94094391599032284232904312178606080 7124780209868521059170395113914368 3963127589835107208766766536720384 -274557574446232376867091226881425408 5386218970463519609426592973979648 5082819827994773364323733303459840 -637204860558267000804219653246156800 3759392831244039290907440814489600 6391013104886810307716036912218112 -810036083568083803582035007073419264 5620561541080205657615854764818432 1306457704581613992175647036801024 -592855152237887413920751863568793600 2367975501066849995307908815912960 9942489316896197475589603979165696 -435677849170194129097391726521221120 3508023943962996364115062047113216 6681533415206793554503359327633408 -437341783361153997947748890338918400 252467021290176837837920470564864 4752234668805647805740532170227712 -165313341017512331579623181161332736 9300477151939725688308487241596928 8906836244712292930375988816117760 -576500262135153448601396227214409728 1144436441101580103554223241691136 9678141141263616711299638002450432 -818211279237728363428488661738455040 6380274351196000705217474458550272 5704753293973127625183750942359552 -733590206970955802301377373584490496 7822789719948433570060322251735040 3029360633197698003112737537785856 -908772848167230744774073185344684032 3161318590132879578090623524143104 6538622675165334338497854847320064 -844102429578487330020937020351709184 6499862277446247399569004471255040 5475698823173380150782369667743744 -870220700580834910283626229482389504 9616367945164503851939798221586432 9026230252510252248446945747533824 -793727935881472674022610076509929472 2251170855786337841156234921639936 8108164897023380055386540069617664 -775671559304785914618193142081388544 1719088029497438556809918259658752 9040621579994424588488320437190656 -170137639464992458664973760626425856 8789283527525761704190329608994816 2415920610689410949455557641109504 -687347547583762743046722597274255360 6525144741383031277969183424380928 4737673805832906374575276125323264 -761140712073555308635462624172048384 7422333792587464520422887021084672 5938522195928708112221838308802560 -558319143884822894500411919497691136 3348825596780492290920642739437568 4868346412409857246154584225742848 -525509523134960622828225176595857408 4500834616628000503482547720683520 9426515961243108405776597882241024 -271027218009941861580654219750277120 789992646540255978449952141475840 9579687522056456442549648475815936 -721892613878947306780105787691761664 7267023998423445213986205384835072 3579003519393379957189603785441280 -26271714833810414981538768354279424 8178544546489753166581696017989632 7247308288371843154153455027748864 -281258063251153607900368887483465728 4346940772988796623021481018785792 7965537856782380898309002403774464 -859422584664372618928217371524988928 1386355009059340476024473230770176 6269172394186153461298824791195648 -350715621657147326402676429567295488 2058168346834423888405656338694144 6571669580777873851834013602283520 -142028195798451620502539502429929472 6880664732352489710308533462892544 3133682976291034648690070220963840 -948007699128806374130526327360454656 5300698854731977241131553566752768 9100073514061982490779519591383040 -76701541775585339237584043077795840 1364720737852784635530641999396864 600759879716206634867355415478272 -694864808976726726393292525590806528 4670346879369972228494122765254656 7763152304127249880173682639241216 -983305083794591680485635309095092224 6990830332627042667569729467580416 9153381121900097871375035071987712 -107828247078795566120664055278469120 3419950464478442089313457544364032 9545061675923739971500827941535744 -249627717358536149816227730122866688 8951402114048695230842676965277696 59977390960492368390572119949312 -893666464229362574172081403138670592 2557302269036613458550979727196160 6109875609539391376846123033427968 -460445735413564061589882347125211136 4302839690329492234702677197455360 2848047420160984490490722892382208 -409074415375354770545745350543540224 3860659804867273219724366445543424 2143306711592226426943793266688 -161663407071020070830726907571470336 8135206702165019343395795773685760 7826096030916851387770270239424512 -421541452364697011286745652683341824 9686004766507608267402764091392000 8124044616208688582811939374104576 -574882238879086735487624274193154048 1673867619729775510152448860749824 2595637770316537113461992655421440 -610736796095682953016663333457100800 2498635899295675771733973338685440 8663013643538541965026591655329792 -562754824679629324113688672834945024 5886152186624322234018940651044864 3972862077181591226168728138809344 -416705987529602731119527346820874240 5866532507062400494409216279183360 237293340865756352715306488037376 -567622642829243594305743146557898752 1606522254091683785435950767669248 3853363468557398882588703122784256 -597282839358413361613270377830547456 2767165449033617970709944609013760 9194836572808932791851455550062592 -950551337168628132072140661925609472 5549422345098027155838303293407232 9212001286244743871852175582822400 -602547485366482114144420061333422080 543244692672816256893951049465856 641689836792176093085598230773760 -762047834650484649048841300303937536 9298945789199759219582696423424000 6367504391874007778858461751672832 -811181264707877359980562974343430144 6343461613243578025053221522767872 8747542324501411730050199599448064 -582074344184499498472177286177095680 4087419117381802311925552742662144 2553514895197800349525025472118784 -587556571693581258765960549469519872 1721579457954113967286103639588864 6983901843686801513082777082265600 -208832041469704229575764340243431424 8313486572319565420569394103189504 9099228350896128383326654191108096 -362480856089841090196197052734504960 5134783636393509297325073932222464 6246349985153452206739917857882112 -785256876970965433922550221043138560 5105001154451799100343885070598144 2630340128679148762652118456729600 -249695025317012257432544016414539776 7030932812055301752834583146004480 7176353476588198595779635143770112 -441910923939108920168472415798558720 1550197536674930307515460691689472 5220225516060125191700838713655296 -257274505955605415077029331171540992 5652398558555695447402105945456640 166778266522211663197433174687744 -236715279061048701181304502172516352 5888858287642668493111954908381184 836476337032459441225347819896832 -226710978957516988333385457147576320 5575632799588916801581719608098816 3555077373409648013479580916514816 -584916320573237417235471602924126208 1163684478673315351067618273394688 3104992813550174036600356792696832 -800132842852792326817051317714812928 9313676153928539566104295304593408 158150557090296521236043268096000 -863744997800482227512184242085822464 455599086178315080110063111634944 5686475568743303207014857663578112 -183446701044272629661330374333038592 6456646578118974158911932676964352 9731694402323325835641765366857728 -862262963271347798085166743892787200 139597653245981587610710904406016 2188618742207387656207811955654656 -438611660779143259163617657452756992 647240609075568315730257720115200 3044942731160830309351800086462464 -601898336979750902560098302535139328 1470780627346107741399361081311232 4519289135211051035685739093295104 -326147178035681871816669198710472704 591703030920510850648289455374336 1942748338282165773140876586909696 -104397597310949478162279033968001024 6395807153648722138740522137681920 8042683531724196946203112936308736 -294679218880473643455934106488012800 6783991484736600448252539954003968 3225695702711907759925224066252800 -659210306411497203027007509266169856 4211220994855285771750402080899072 9069105315082551464439294585733120 -116528006957801183906811260558114816 586323243287885722730410645913600 4560952458278204992572860848406528 -148292365932739082181251557538922496 8726566861226026574693362684657664 7180056675230135858601618386714624 -656943258374750438304559088516726784 4243326682236998835150648783142912 1287050834003616550168886822043648 -496313059864480744445500185789857792 6988941745169053022060021742043136 30630996081667409610354995494912 -914366576712006598616281930226728960 8458367767790689727812036907237376 1124211662466353648948136770535424 -916460599922574509603970633380659200 6777042387534516368221717626093568 5605590060801949924753098879795200 -856592439902986739533885932144951296 946503856805934339352682735599616 3378749207895847379069258258448384 -364816701296140655509359428246700032 3706807114787321081626077532520448 2535503411376743650662570625335296 -841183365148741416104611715208970240 8154864873401474052047886048296960 5790610560400438763661880855625728 -930604768190577410810607468516737024 5301948760484041317623074809446400 6254117992875100266496558647738368 -651286614359069058311174453754593280 664703279922606898769685616001024 5330541977812610611620431672639488 -288935101772068435728300811155931136 6125433078941888137038144255033344 4493624586212544120072934583697408 -461221747109598888276001038985592832 77348983405516311044295661453312 3745216563109384272928979850100736 -205318901655978976272039845646303232 4537274149864814287545290733912064 5423419591418684910071680302317568 -907234899189152328830938828450562048 9685480600564689906314517315321856 3928199141160645912543180569444352 -81925857354898780809982137902039040 2455369266558480383177308812345344 5315742119226498267036640167854080 -839369251415761327831144988672000000 6653581331052692736853056195395584 2912519510168569246954012849209344 -390364807541574852202103371856871424 499825466913630247582262840262656 3676621680111274138028608988381184 -532995434905754046992930880450723840 9330607080197003046202182180274176 8128091248576422708733490289967104 -833284506910313657908193874432491520 3425791626298843644491710775427072 3251971920852218107490117397512192 -801557371890979187076899521830060032 9192864411858713576542512026222592 3295430210914668916231255124606976 -968401909281374377418799046232899584 7645248281435966179078065912545280 1749909979845138440352887360978944 -788632980654900358461495618157150208 8811035085286655511236232515420160 8507032750212121304923376822779904 -364050243635787433668166204245671936 3163226663722326553310214743916544 9202428708204788865271798180085760 -29723915896310002998478481999790080 2713800942474141584190812626878464 7596302603392676014663525891833856 -957709358256356656769459706740604928 4171734989360745041157623088414720 9977722053558295400374368674512896 -97145265124824416085995609131057152 5954080343814136762900358360989696 7518509074703733398447818501259264 -328872080857674454577961785565904896 1778060013511758618768649498918912 6053219789621417307137751495213056 -733970010203213562292923023333785600 2309550018144734080673598331158528 6993433805459504861157754914471936 -509340014270045609772559626796007424 2678423955844163276852277654061056 4524384050314039568645999137128448 -108816867354220803391569815905763328 6347610476247909802591209557852160 9140160559941892941170171717877760 -961882803954532304409138474604560384 5043519734087461486008209321754624 2423572037967352485095714806824960 -504899646855437680051878675628425216 9024319831858249549541973178712064 1005578415354932358826700709036032 -422572176896835265174514677049196544 6150335272244115375829599085658112 7367046099817179856195166765318144 -65355698773307833271803852363923456 1432575588094249432041727721472000 6152419503593624327411293636001792 -78533057837351991768378292767293440 9837170761869975738273704706048000 9906702173474424812706330650345472 -280261915034926528045290772139868160 5974403440245570167711668811857920 9606091115163126531818740122648576 -948811890798622104197623634013978624 1405753754552440272682063727951872 1901156604433156841439300635590656 -543945367716496358500033189837275136 1132225234265668975683338447618048 5590681280238488075378759919730688 -607424534744403864795686696755658752 8622293896526212716276615510753280 5054370125291545042261868965527552 -968692087730101334107177326137573376 113994075470623349412716498386944 5783318117012281645673464404639744 -493298787529735267274315295560302592 775974772421023377927404714459136 7812545563761892406454564979474432 -350383356586820752813142382416494592 6037111548574392013457000258076672 7177408984903792798474745845645312 -980272646810278483224979245646217216 9217727100262637982754224560144384 7818283535529117790010430514528256 -843195823185304344794257215708987392 4692698674708640604870562442903552 6063180976693425911736416795099136 -662010707307561957403797410927345664 2020089165921668622938907804172288 238179281408466398760341807824896 -289783937377475511549793875007635456 6415013213330731909575562013704192 4653311980159412926183111160496128 -4583913542698158120746905231163392 2736337668460583870718136872337408 4813514458600137942898946185625600 -467922850399054117886284054164144128 6652252160749865274961173692809216 5396177300808671958431587926802432 -672376680044265305636464624547135488 9967146157829155405873507215605760 2594734259423111321694562269790208 -596792911895776791609656767101796352 2820667471174468889446392193351680 6532964976516029140260819449151488 -799233583139137477745510905391611904 9954016117062286505901421074841600 774466064153130402615864519032832 -459202026894257669719580962937896960 9175408159127805782439707407286272 3600551573693452600000248673206272 -302227052394785560331204403767803904 248183430362066806934082288615424 6531372971032942611008784974217216 -660362207470927387352545609283272704 6882996230247808488026259423494144 3108247587799821931301403994619904 -190068488541445447360746940046245888 1102765654566195448035849415950336 2907725651748167502471166536187904 -788593071029370938566692188815622144 1227209174878446474964160724598784 7972354302951035903697559106879488 -636223524541680347985103211917737984 8333978166596491698594476816596992 6820072113914330452424154366869504 -778997810424630203523282461953884160 2954458331172999859222980008607744 2503438433906828047816861790765056 -523051210942003312897522841547702272 9547745444845214026884635959492608 800060858279337072827385505644544 -19903389733484571485081682969624576 8486501391626120257537263022374912 3901563263700033415827767735353344 -486426371751760777413718883761651712 4457833457828707628854839712153600 5772264853283924540473320167964672 -192018579961327699698576860100165632 189547434919790117178627829268480 9294431584101532545481556640137216 -537707022668524792715029976467898368 1174032900945250702440437611757568 6578543565761680820089248815251456 -199458522981745661630887283967131648 4638588348212938660675651024977920 8281645391750150857867782692798464 -429679070911280507813233360950525952 6851211285178887782862466710503424 4118775081144136405055196266233856 -630549236360448491969068732895985664 3787689940925276631926311279919104 9455026014994372236015420349349888 -668544592323826405408711343744221184 5492488680180220707062705001857024 7297930627527494310587499018190848 -126273792152256520300665808720232448 8310924699746220816066721043447808 3434735666300298284559849052176384 -323241394119318947370933759988727808 3654464739670380557922492838051840 7697321579784173770345049877381120 -11786108082655964524464585937256448 4380759537871253517506388621787136 1398504455678359299384411588395008 -450529103769004110121580432579362816 4843637290258352981657489206411264 9259266110849848950060446254104576 -939525985104288361789638572922372096 739532842971072563847812459003904 4396032997463729935866874101235712 -508562553078107710625789211869970432 9501814004235652988370401978482688 6675605490030668546664390620872704 -254764834657303843830247742534320128 9035065682148119741793430640001024 8035175720425172289457975669555200 -234294318874693445387766934827696128 6572002904568771652969906313363456 6160446534852725227581589629698048 -864645044370050161747665159934967808 4119256626051127199953255428784128 843890883976521328635495476887552 -847713768749271539462531339964645376 7339199755485962747771687425540096 7474488753303771575853457038376960 -77234693588380704520147541526839296 962449818624847219036901123031040 2619209467030191432011395012493312 -658127666714835118100988679937851392 4206078477396798762768516532666368 5451879898303058957253005784645632 -219185981067337498674125550773075968 1380884568201688547055975964606464 2426158684948874623589695805718528 -852034354686888141442348155790163968 9604125570379575342537092309712896 1114609967344227054053047584948224 -837353560700247124618471292599795712 9554849465265579147299311946039296 1042281729374733521935437433667584 -112120460436391211467869002211000320 9472509885046462026116025582354432 7883221460618312869979290763001856 -470552980994378640012357864500756480 1164336595263736344758323391758336 9938886388616150631757394416238592 -623434409712408203672005574794412032 1947801872699450736514846733369344 9096300124609317058663512008556544 -192257606176183826838712613477548032 6337206773235445761837238430203904 815779329774781950882049423310848 -927476775958758061622003520784826368 7073598533388403456962743435788288 6269537768564365008655239400652800 -200337227583205457470337527603789824 2711179443433858924074359284826112 8518038193615764531003644388048896 -903545555545767700652422734951743488 4967606781334836927679984069246976 2801698654038894515064118689398784 -579884506864420689156393384181497856 3963395421597004233902066640093184 9327920363956539651011404802031616 -718541478494834786378279749987336192 3838020155947448444585423971287040 8987618174208419474791316850737152 -108127876512532901025543199565807616 9105735431060617330437616694198272 2939271370868864775426775214718976 -328748136309842332754416447719997440 9072220776189925246585150921244672 1574229546806209220433144885280768 -343551494669120793855275610740359168 9101161914161626523705925376671744 7976133860266300863492210355601408 -807949180685257629537951873859846144 475740116397854233918302891016192 7814271511227426117682565966987264 -42639943570345585261168099223142400 5232077895615234694997844703576064 6263982871576191180424071679574016 -115257469049957472068012873187590144 2354958018840689465019295950962688 3436371086469671682804898865348608 -788584829388439344263647190256189440 6677283852006967140372278453207040 8928481425608930553695368239906816 -336619253782959973369332913508712448 3872090602171381481762246776324096 7279698277258661688195275303157760 -279633746398691531329379844770234368 7813636182098802083814647336534016 5520185243722335567900240819257344 -134674873079598932928962789524897792 7108524280340794403651966554079232 5278611948492827307859342935457792 -476069674258809271460179645040689152 2514976449271933765738809520029696 9079012781087042074632465925799936 -492658358327576291353462812868345856 5831142383347839776838076359245824 6484371268646568665351796589330432 -865560018305027831297627189179056128 6943751422661579159474553090998272 2242139120640285680286914391834624 -694129588067587128221893792672776192 9120748801688870823726676136951808 8820661553212760447261066013966336 -842617750024991525463834932507836416 5629849142184533715060989834035200 8544839512540278584481209798098944 -904713905082030796350845404936404992 6770513678331377977226563774578688 6354486427611250592066291384713216 -612376267130536579507232453204901888 7466428136359637392055873528922112 6388840317277287927990145318387712 -883401678931898033376136147381518336 345502767896704946118021548605440 1174275246083509424367085109116928 -279683728698720619789566020006445056 7274728724644330631338926427602944 7567929076730289355105180537847808 -984639892813403888051304653417086976 6514916275103192203575554176188416 6713726613496419199604451786620928 -648577463178761060284433789091840000 8173411578703071153386145565376512 154739804957040738570765653245952 -616453709627517358096103802574733312 3804821823937269915255373182271488 2557439879866735003291630314717184 -684480814821495865266657609765617664 299541106545050896114031165177856 8931991505553760567025266266734592 -416636864952927612004810973115318272 5182508456697652617312934559744000 6592769606786730015437998482522112 -641011875387949298673529876920664064 3312374786984427479845122925920256 3026213951938313247613317134942208 -38532942914265076163090591300714496 2413853797738249887634748749119488 2974561786088828909507797250473984 -85626199314789013875415863837851648 5337115893158111169196302165606400 506431940906540414048233720905728 -973860688061793772020270651060256768 2341917179084233402067357951590400 8994799595601803879550686666424320 -553019142984952398702447972591861760 6853757544623812165239885390675968 9321231320381945668658392545099776 -815750251624633893274975764394016768 3566491254270681983288613179228160 5670097821093942492676443447754752 -417760551843418479820772733265903616 185774855983748463259667908263936 9326900314060964445271280718970880 -839776209459261742498664720241786880 2378036560951462316777419952881664 131599036010831443470752317177856 -76470692486159712034176828167946240 6929461211392648691895641997049856 599601634152126822368169804431360 -169807753512326723821505827563372544 9610712369503716997382728258158592 8389406583282109635107077541068800 -284113600790403569726879056793698304 6003827751866533343793929378594816 9616972778722216094399587541843968 -951360265138381490843213201015832576 4832065983955712403214883379740672 1769516820122385163677585515741184 -512784068302002498802407175220101120 2316220722293544892646220388892672 6062275935358890475646990640218112 -372410456175503577810628873946136576 3383186707370255782421238426632192 7732407598143582740902655484231680 -180117338091520733196748482049736704 5343249498434780784133879871045632 2575051863280133781246789382307840 -672229813846870918005631497057337344 3331577248492220760482554562215936 2849740055166106342616893612883968 -211422212904039615028018098030510080 5811689669586102937949693309616128 6938119149275680375001721421692928 -376247790249739685587205515617763328 2689590969312872450814641520508928 9591089558386121267096074181410816 -72918162150918554843159472944185344 2215760682624813586322784660750336 338085373383027550695106761719808 -127088340198644858758787209097117696 8673753910804194106350747556773888 5514688883355030850242129793384448 -479162076967018036027594650683441152 9073885634212470744721324440027136 3366666283239878615243770193510400 -690270491687212498612623829259780096 5121673281256846543572780353323008 5843764488422909818313279677661184 -820251006946367359913811977818865664 9054139795459122390672783408365568 2098155919055214787523697186963456 -633370968794463313691546486631825408 8249311165640457093249919405260800 4642093482174929438646222519795712 -215916108444975935702451404452921344 4737098615887930763761504541999104 817723813491799941031890658525184 -819468774794137597712533840512155648 5361977875451400097747160524652544 5091847292588499986107239965392896 -134549369855305477420073350145769472 6571404357093500221262433443905536 1433700951031518288393076480147456 -353150006662993427295361653876457472 549926085490081523391565265895424 8502769856533787946799955894599680 -227568987975749053650839876411588608 5117034766731088444805075185958912 9520780067446158521480175104819200 -3557722579035232889120207363112960 5944839595908914824349888764968960 5612370234981552283428746516496384 -953703114736522137375592714789191680 9048850177410728214440401927405568 7009033964967186426093595200061440 -437310629875362904324562867181322240 2026503304106393208116163563749376 5931888176736287923760170610458624 -905782112126841126008907173814337536 7176884777519320786007222963404800 3768282588310683830452686245855232 -301171219701664310481946950898810880 8893458413921460725850899988086784 52668444096596133732384669433856 -286609225274789387067976508977971200 3470652917090620802456391994310656 7754739717009283701027572755202048 -262882452610608682339731928441159680 4159015811496304821469624871682048 6578688334551096429294312121958400 -577375810583325158541693497106235392 4378102029305098830068888163581952 503082929071499796707038849925120 -654636607264739315159178240753401856 3525630330538325297555741882712064 5474687286754748400814251852169216 -443081080278743816148578723055009792 2280795909234030729280643997368320 2744137192529951969605485288488960 -726808484689299052620886502608470016 6261034436181024842810184085536768 699776560350917336462544682876928 -814351402291587203486295407430991872 5177113789674947196796139345018880 6578642551279378567417000175337472 -298122319830608245493951769736118272 9897131317821290171003032314052608 2435883151348397217374607805251584 -57338254136734281858982785073545216 4520101429563945260002004934066176 6456985567817200772498192980770816 -530003365000426042545709579075846144 2157787197693914678281135458353152 5858468915171572230708803458301952 -534122081508217307949158382650261504 2767955147222257873220569420267520 183614916816140514334216047034368 -51373916167646559472378947110436864 1864740563812742366923939435773952 5519396756652014576114585539969024 -366927258399099230995673513514237952 3186143575856014948600881149378560 446770047028875509101786531102720 -29468277578460150486670665737830400 4421995686505948875778060699303936 2112844989033814755587535335849984 -535428372565832446078049315591290880 5681775683840911418557377888124928 1453587378614093831999432087830528 -736978660311188523103277454993653760 2180819890516124570983403043684352 1343076287642072782749880507432960 -951678225912791329079714704818962432 4298646640511395319175284392984576 834712278575413510499011057942528 -897295236249276195129418644308623360 5867368515053320996285449777446912 2659102528440968832482177284308992 -942731638911148841739752864212844544 3412920801015138593718739287408640 3256851498724455983164603557216256 -881991894312907006934543343403663360 1368266488082025054393980002762752 7196308733359027481700742975193088 -86526075358177244784510492467003392 6257090946320087801460066191671296 2417863103451603240240719671066624 -281464394328998326834240246717087744 1790959447817538530495625825353728 6414665842189250881652879775498240 -141808132738978909532112897311768576 796964075839213703341861467324416 5752112505063580636215433444196352 -210857152344950400629101125445877760 1814317428333685496755301384192000 7621180628647982465413930148691968 -564324824559974221722601950187356160 6267265055939245320236759020208128 7351178228215653191868213301870592 -30052172166866372189329109333049344 4123653450950466358458295267622912 5108695359184397461364501232222208 -347927626852858872938364226309718016 4062020077657926990640430744338432 2806278269731225305077813008662528 -390889909404870677362158761924362240 7483316375575328785245780624539648 6289741915966658302392384253591552 -407627604622079682138972372999340032 1327084611620700720893862382403584 7211176282136739890808145630461952 -568347086863520809541914214549946368 5112119088740842575292481379762176 1906292835809203039668869733023744 -329868207298777190347073081906823168 8327836927428759104203616671498240 8847104526893070109129062425296896 -353790028252092242235415130663813120 3223734343993369561271375096709120 2055788499031417505626174592647168 -902953350300657823001618061969063936 7355475121994566723705224269135872 6546281486080809393773165789839360 -280967591745263676150686305042300928 3190129672939027762554008984616960 4436298601973451735679445938208768 -211413677740748966187317000130265088 2573699045356126291894988299042816 8398415154291788491229798829391872 -132300419907425881373254485956100096 1379987142287754403747884729106432 1485471290730248291976019426934784 -340472009791487237115407716445061120 9270642209199398146323806072864768 6243614174505524218822341393645568 -887704547243244580241282153163259904 5128436380936178291967442353651712 3325152099263840214902480146792448 -760511674535728978320540338793480192 3451061898753767803852791562108928 8854653313619486140117191097319424 -946178052740713491241600345238929408 4647332189784492278764835247751168 7529434544393568502395545168379904 -707017545573855432843411470218690560 422282284123180666603941094490112 3412237891053893658871119625584640 -783119899777469304219920528652107776 54266658883840561814748400713728 8963148891919437807863131277361152 -493949823385513057770497815802281984 6336503809170624226108400910467072 1370798405428871245642493557997568 -104385527216713400653545269348007936 6285917645307067196502288405364736 2092953353005215322004725121941504 -960005572019184553075055854117453824 1755905656573098140348489536634880 8459985935327934453499323914125312 -362900865229994485590918572302925824 3785702433966433183345892057415680 7759940639054949626225426058706944 -371435223909079562188509272732598272 7030954302955436719611511593500672 7645276284096780258856547261612032 -112599391732657418110441398432956416 6516646579056574645017898196664320 4826908989313043714450412179292160 -864381558368967702766780943760883712 6717969494512731914068940176752640 5669679110987846187616720220323840 -802541128730276112680675369489006592 1160151931545505466034379280089088 5605737823008523894606324383612928 -682322455174586223380012681847111680 5219864489012521915208240071704576 1318162969732963958174227118424064 -421091318896625174399339038074994688 1109618096446872993001284776755200 8544524301048710973580690570870784 -848814873052683587025177952397557760 7323212055269415496051844536336384 8502077217320665275993443702669312 -901672431015913770664808034254979072 5151307870562492345665970700812288 3058260075817522364124745651191808 -628351159389313901875087179178311680 5690630332490440252759967593922560 118065193603862796509760410615808 -594626364428083089555399040479264768 7090277655438938753519144021262336 6495917918760870687033758048059392 -122690341887965480854526863205203968 5690956932656271855771496321384448 6776535171767201898669105133649920 -938584776784994790786113347654778880 8494792592060255788328270035943424 1842387847446638421697619065569280 -677777301284164956420076864050036736 8751834238564951815535079391756288 4617695813679381360399089596891136 -521462265236452153187654808327159808 7771655501424485980904305123655680 2982516244137918853912594623758336 -855326402748463815973591734602956800 8996141486969464786423546449494016 6654431429439948156835414346301440 -435806760814697690214587430309199872 1818881111574810230963109665701888 5821610443098011121501261482950656 -873905718602285643377332205073203200 2635322325580031973863323271692288 276963171743950773739129011175424 -194397095448482377880342213634818048 3113123114693149728541019534786560 7003593112466864242652781133955072 -843708316530297627291210606922694656 9674091257672156092496218152763392 6144544680016878865738796959268864 -866526426795944970313096047538208768 4523706712615574761895847253770240 158748519727185287241872405692416 -762759336623990456263787441723277312 7676503310167329756318614597664768 3367231332569840588465929097052160 -879907321317218071377254289204314112 4951253154186013879106399629213696 7489230581880898588711375438086144 -302108619962774143433647984830578688 3454861270680516386388485028708352 7506514341042808299671238649839616 -716895094773844534199204108432310272 2354909845460660441142377557524480 5852187676669606122439249905057792 -53705695833761230042300024151343104 5349458212877317098854214621200384 373521395536733182171917332774912 -938008755024825563896432238641807360 248400169052648190868721527422976 794864206785996254369781842444288 -530882194283004868154788317826646016 1436272635739849660995451192606720 690713948950931625834748183576576 -470629213323960681161389247838552064 3453144685597690878701771811717120 4496570660731302363953510853115904 -684196357510199227581929152948731904 4347981157921592753319265492271104 9691807318433639029229492455342080 -472284446880269602454616553707012096 449227200885207025737571237888 5819599595475138092832414840651776 -437439910027625165161324512899235840 2116642571108686656936338822004736 7581010036903549491162911388729344 -758605943349365076571232606980407296 6168297678523972858079400257650688 2060746943905133217503598776156160 -707643885326657689056581436731031552 6517219756523845684388373418999808 3374956530362262791082762108403712 -650683795255385314120836174510555136 1390828874167351651594143038177280 3461025153558885271939702394454016 -216995720954156818748849479217053696 5578366657671159879562865613471744 70864966023826905433827654500352 -949152789477703308048743378712526848 840289926732622522563544651661312 6759902195200941509249466040844288 -587316668297110876268626665327820800 6086613625780396284424191851102208 9907567341593273782363381787787264 -80734125955610024246322161665441792 5814007975141431554625351331086336 447145661771474381728827974877184 -261840664741527299084334970349551616 5377909096018747450170101559459840 1161312818919639281210387582681088 -799820465504787512625939206964772864 7012428434646332410980693146861568 8281788557976788883974012557852672 -427439985386423143803488649705684992 4247769830752470386608474981138432 931019784943922413356925577068544 -647387780724544316754965096464121856 5771617991237696601715450568507392 8824454583801662197617236948025344 -553625682581126388230903222937583616 6519927641289243765457351392362496 4028299380318146433621113851346944 -124026312400336710814155240779022336 9713612812178852939482548901249024 6830674791872738335819208002109440 -221681164963248728369458708068958208 4500233901670243782419241722970112 1733677628869332267897736717664256 -28301665990056654924345205464236032 6870853820315832898755359385059328 3728985882317402279455779958292480 -534425214132813108672813843196411904 4564565174117947735166256003678208 4519259778636786469230851670409216 -112144939847606719655684160918388736 7287386582886917516414993479761920 8755642220665608138335279741140992 -540785634969751099497566785603895296 3355647041134983294024406592913408 4034588367878602933660278738386944 -352037038831882783492770079136808960 4483803634914447560275042137800704 7932036954514771888754439829323776 -286118454520761153463923083776622592 59433788036697866830319431188480 4352477671396852995437823885574144 -357273117648231309049727085214433280 7534939927902112019587180728942592 1505878671421157502023318154248192 -251746631123519142279575545093029888 6563622731854875458165331499941888 5294441434274024594065453570064384 -245651523791092401518208134957498368 3293524140645686053104433200365568 1317007894113700943392853020639232 -341284505057728347307197550936719360 4870880664609607136823617387495424 8093245607371535843141420043993088 -777002853322577469873807039861358592 2247901869868101315669927149961216 996998931506039670434385560076288 -255730571923272695140836970845962240 8524738067049739658421592723030016 7630381463344178964048528885678080 -344776301523341549688139873981038592 9109893000935815368125089193132032 3088527888129541250132667667578880 -384627546539150910974041403795963904 4565105722264351869540307306545152 6214492129237253793428940735381504 -136734263843713189520461789134848000 9490059956290601364174669185286144 8496277302704062418148611164471296 -561511491568100714981364800830832640 2268670966850982750835028676050944 6031930857159962711477082963050496 -10221928250400779274886360760057856 692321254344476970396767416745984 9738193249944515650657164134973440 -236164689649240507165576625163075584 9351243741063256650835549206085632 3816075247706384226587273133555712 -578033712044851049972290258626150400 3600783113547618019781526559916032 6234306358188012253990268524560384 -27651163038330269771335288800411648 7417999025704928519140886169255936 1714743560990729271434508677152768 -488983121158789383538150892386648064 7316767220410829957173482165895168 1837373928438470351370436441276416 -863426286820389204413169479861665792 599873556886275997898379999838208 3181153502519564214881883577647104 -835689381607579642237217183084052480 9606262871941372832290632726740992 5885385234948104884068338423037952 -992049198996972637621157511133396992 2807441855775020210716858696859648 7897058278541020751757977636044800 -326670408685040586807075752776826880 7125354821079940052443750855606272 7647562614238881262301507223552000 -324836203118272652805507441009623040 4453372243112073178620575956860928 3777493827689272626010818632220672 -936185990657849770918881862881378304 7980033527130230734356193562591232 7338240675209336432109659006959616 -225378305374402582742328076010520576 4951400514186690677295175138541568 2622288485725676251397045788606464 -285549912850873989192173423198994432 3089374791996690876556143230976000 4246167317785198957964966156566528 -74230450072949989765574765649592320 1665850749004365476832621786824704 6196564091531349245397164112216064 -415961169034532470996388033847099392 1440484726437751296254052399054848 2599584141479620415053168501587968 -860568919932511086690353206433677312 6877156792262437363934847096061952 7406531353102918970589660263219200 -796178579357659144645305002216128512 3199884633461249487463903091752960 8260372414710992265107695722299392 -485150955532683308372794597577850880 3174003539166085721676194449981440 594849985404515013060534044983296 -826289235082542329194669030835748864 2386053614309356943414515290079232 9145787977937083845114718958125056 -616905591473606824664776283185479680 5571286915808524131279138543632384 8208917883707853076554029943750656 -259321779850031554860328347957723136 6386256586934641706596700568682496 8784581516582441160060054328573952 -92460734787317086549030097379131392 1749750110644014705845193349791744 8330788712348813106210428227158016 -505269537974412800700906116116119552 5439182588969359430207117646102528 5799541342045056992587902116429824 -440379406428710313940683544080678912 3173570333405342879627800381227008 990540399299775781648633390170112 -604738169347832497579683359074811904 4655012591349476997302405323292672 1299685379209877009985317571133440 -137276325457445233107465281757773824 2520352095333512848704757179613184 5774494186559491340213905782734848 -250344795393232445771098403662462976 4763624355596260628420988265037824 5451017996825988043387317182791680 -626495269117138209310778792188313600 6678704817583882499025365190574080 6489000298069152764076683169890304 -424287937916493903542616546781167616 7829170771350986904227993408765952 2963221948966896166509769627009024 -816292893527741448523410591681871872 6873001543426290079159211924652032 2315459791184173863298728770666496 -148657101633490250940249848988827648 8123747593638748514267883913609216 4366399838849817640458468078911488 -169553302603171873912785950174347264 9478638403149360022604403840122880 2243816974556487834864471431446528 -863632508557416049653878652439363584 8930090100333974344963585252261888 3802471475503656792578453883846656 -662121551993413208782339248314384384 3684787295430927184763059970244608 8840019883541560918240371910115328 -789406141064972648182670316992987136 1319131195871298905096577011941376 4151114983922598057874765534724096 -939702351340364388955516528410755072 9432696981586178551569249160134656 7949183816666219296476620367331328 -752956992280650071996746543241625600 4993699513332959818287459436855296 3076554273842970251478760897380352 -428402170696205510450291333331419136 9511939605889928889876210666962944 8002151857676752368189280238960640 -785495308791472135779568385305608192 199728017910484986751105300955136 2603001893514976664304896199098368 -809454491571675190496393289892102144 7039416864066744509038630570819584 1492137547799077001290623286771712 -628480249695343473345116722738233344 7791216094863884195975723625742336 5888147493240447302795012861853696 -892697294922859594758765050333233152 9524998570155367167328383892717568 1894437875804271711369866080419840 -88308127758732780341855476407861248 1914786217919039366233575129088000 3625032510172293902110154194681856 -155249744264898263624645069445791744 3030217092841478060994226764644352 8648279735890952302656095223021568 -83912751622222379220288960024543232 5032484754529481529761249202536448 3581316642526187348819342008516608 -107073068981949512499664731768881152 6843861089662979244831789616726016 5109474442430453715925831117701120 -540455774932221261852879426468970496 7838237244992571655495397165498368 6852148212938713482066341717344256 -210255812022185167682353250277785600 4126728094687639896266527035359232 6239357651396941625835866575339520 -563567526817344271901684855998513152 6829547876971482836564691304579072 6815580566340590133688292566106112 -742405372399427677838228536533450752 3933988060151643796433935750135808 7292527115495404117588690314723328 -202986824792689528496955716064509952 526090265699562099465802991271936 9794951962115755327506206970347520 -421148259278238757066329424048160768 4677683214824396637826066870697984 892499917935929095787513947095040 -672357251460339385096658253772750848 4525306046480789654046957878902784 1953637749295545381708267106861056 -984946563289212149136595961941852160 1760314587018774114994474528538624 1391904246245010927476951926964224 -893775899904615794836562752003112960 1257775426638288871996001764769792 6785721570720769215978889717743616 -951660153739059780901704616544043008 3183330904579486819100103695925248 9844961339576385175332145321738240 -552211005545927783199218634244227072 3713512342514863816347003996078080 3815958476921169057081031355531264 -136899809189482066102826644887568384 2493701986285634491945227535777792 28742720237440072629945439879168 -815222613307663034764688239936667648 3827412901927781270241478633848832 2865283802645636333521206264201216 -558669778021119612389770261346385920 9696286493341247119431382725558272 1440199622125049233993261704544256 -727614219550598345565122380133564416 5474522041737181213343912149647360 6925735554724973313757537535787008 -569928657214400627353193350709641216 2887276807488445114236016485466112 5331922307203598811891519509757952 -114884088845097762328407223471964160 605984526161336328109445930287104 9882513906130091601987242964287488 -577074036663735807798378843707801600 4800283665434781102742400407699456 3337791559772826343256616240939008 -174069064575985573034647427634692096 7741364041491287643897216830013440 4617932261127246234917761800208384 -484230291590490455457319541048082432 1962640952197807142783841808154624 1698966193714272108304682409000960 -890155244699838215914623160622776320 8660984405891093961090560855900160 5511512652127458723910343771291648 -868857419301210503762936288902119424 2389048976629502872629744993566720 4652641011426498538786837153972224 -855376508959480107142191494205538304 8347750494952531898001618301353984 8711526174128912061881049096912896 -529672200238296624823422315193696256 7005419981149517829104203894620160 3539828302885716468868970337796096 -212003722244897709745611639040770048 255571454487628743034857454567424 355204477022365839533978538737664 -365862261648243451161231355260436480 8887154358233613327763119561244672 9892076606018214743289374244339712 -159240602660931084478678734297104384 4660429317244436655767463349190656 2258836777114726432693123150774272 -106215127439226255921565325020102656 8032251930456906585774898662080512 4186463037707086545464787552174080 -871147308482104939980031468308004864 7410921583358467678109328864182272 9649469905839334617099000770199552 -371744116471470879083350442530308096 4521114333709877560851449585336320 7453754582105519523331486064312320 -107122657629215683528766712218386432 2179888057639095983453098133684224 2390600881614466881490485132656640 -932448405727239296229933188892327936 7260477365814274347244545911029760 1438434254248521779879019624267776 -437042126632277019338034338169094144 6959387056007333590117882810859520 754447131384668637002638353760256 -167519521003745387967989602867740672 8649475538288277865875776447971328 5923775482728969285878211902701568 -481694845046268710935125879756423168 4203031589119323427447605190197248 5288768820897910022830775773167616 -16969040470600600411517617747001344 770453786545496696749220100571136 5542628914165789308264359177224192 -205167242257972523385309264483450880 5563392853301439523030928510156800 955333311975123668246121399975936 -585303959068693631643114414821867520 9244723855870898473721377836761088 2924284530768134745087622869155840 -111605530318514303963788867358687232 3226396480823778572631390965202944 9121446290187872480625280369557504 -138987265676416267356018586314342400 2938202317157961519937664879427584 1457498807126281510142203515633664 -927308120465021422059201441000587264 9453441244248864232388057603506176 9389251942171541831279995468644352 -984467436466438414826929361331945472 2257467690550458507206521291538432 8117662639122089210248865372962816 -537051923117761573746503351177052160 4472331680998675414499297037647872 5344765892796731051296385834942464 -617832042343798259767926025976020992 8768116632603363754353898219896832 8594711633830304107488864427311104 -828141186485527924193351777032077312 4093457048276520333924113923964928 8868182923863274523005846743416832 -859740808745734651836495648432062464 5356816558053414007457389417070592 1294114535956644611785145760874496 -666195351133438610294135813392302080 7983613613649106571953164798394368 3530287201356129925205349598494720 -702026302895230648140138959834447872 2588544410936922644225171369492480 6761221158871910236371191393681408 -8698476639675149555342771031638016 9652780203374016032466086230228992 854882335284989799314376886321152 -117426763677875278747593438857789440 6707115574203689106171303743717376 1350209540312038633177854081236992 -638909569281012887681501882497368064 4690521275701130718488181608546304 5888846584302228848635459749806080 -529656844094574396120735670645817344 6381553920479479795535374285012992 3131280374266580508356571394211840 -369105772910358115971633728052002816 7012533225814074946570647840489472 8230254415472392853939732392968192 -431354740274004100562563559648657408 6633469241387668535729729830912000 5858256668054941336259930869465088 -42230899626607177631773396224180224 37824440138275432540205523927040 8586486579332810950307185095081984 -397232853072298852118484676279009280 8842770736293374256972267589206016 5537008182854734888032005542379520 -569926214456306379567353243478523904 5838021411011449688484386416099328 1613495006623974827302943083986944 -359951367769929771843928530733760512 3419701771897510090729292415631360 9158548053002420623445311581323264 -122159677458581124237905124841750528 9418759868726289381462272546701312 8780639529534910464087953011376128 -750316445808331288466873211768799232 7855471940427134231660160526319616 2182806209327737614781667499573248 -761918509872905498204769485764689920 2932529901832383969620877402701824 4414255882548067516857392379723776 -938295627333881445608832472675516416 5641920520109046203948596954398720 3149897861322113267872628228489216 -311493931437978741773308145178771456 3274431667990221851664329385967616 719041207252590760946008653299712 -484195151240313201611921075384352768 9632855486668068765932736919633920 1975812541020801481171418145095680 -932137183277710593274345350403981312 1042509239616879185169412370989056 7844847909707108164438450558205952 -675721107928775488514840320089784320 6962477638300539195864431487614976 4423597565484257088993195297079296 -342601593080390663026132798779949056 6389951344221303164193139064832000 7472336180907433103514503244414976 -287539330541966503338033034467213312 276119162992797579848023218847744 9694897374196281897487744391708672 -974926285192209636810031909440585728 3478373446781433646172244811972608 6136194850921527615187158579544064 -880139830648836192954445976230166528 3970171512513380439810333099425792 6713597173849362159326342615662592 -293036344335552977936438134942203904 7196240814436772938327542269476864 6069716191552417980061444980342784 -214321455706968702652013129366503424 7220537156456889522468707230547968 388496148561592046209744131588096 -683525439612374220839781619183124480 9536799735366908757897473859518464 9067170393246991503146966719660032 -402974237430390003808970048857440256 2971653609248982275028470015721472 3160330113444633660995242899275776 -601820543213699831799428338950340608 3458424572790007549652944832954368 3076676187057363060861408204816384 -219442715553373258311643611585839104 8702978481456564641692480876576768 3706724410119533488854979477241856 -143290485935476352953887715768664064 2146814289966590825765896605138944 1003373001476955936055412555513856 -941747785151068148378933883387772928 7847033946516227072416684405948416 6954269492537096278839110332841984 -625104102300900155932047510882746368 1755039194452820074904155137769472 3466832183245014153204267432804352 -415500952461802931386743998625349632 2048518028579989705075234877472768 603969418747577268451688035909632 -195078255632178499188745386659414016 8599120019274951334518962882871296 8627775624704551577475090296602624 -737599506048478944839963363478863872 2347599770361553958604860253274112 138713450352154666959619634495488 -692419350203779351295660250579861504 4923499539970170012268549826936832 8754648974522178972992024610865152 -793397409529137117190332509780443136 1797256961064590798802034874122240 8469334278924758420877537932476416 -865144838710780395620950224511434752 3230619765197820185149326787346432 3198743445531174765016369630019584 -124249199145696585906571390805344256 141053751815302187879479726047232 4275253014286131987254822586810368 -42010461769228907739486418337005568 5074929236284826962613445479890944 9071354122123935019433852466626560 -397199457569999834094051203122987008 495418518265541818793439201853440 9780302981873842839307590893043712 -927500162122054851175036242731466752 2435075979506003403675891253903360 4277357004991716810768096363020288 -497295871597042188295888332893716480 4792996316929420808197177901842432 7983756606400498446480020403650560 -484405343281680806280326913986658304 4713290043497011445868069027577856 8385890178865692112873903206957056 -575408008132255891374836043965530112 6224618381746759151168397516996608 6838151109795130594685323952783360 -691594914579240745548675265429766144 6203800498917761898818423236853760 589155428323574336769862710329344 -659948828084968933032837889445068800 3682265709040604141187045703811072 3824957350963287404498875278426112 -990867139254206336694004183296114688 4187613409888010832716079311093760 977390023495683363045501493575680 -129204326456937873218178923158831104 8612966684669378235330215070924800 7896350982563647119760836177952768 -919897734063439942342036975800811520 8853474977166889859552359418429440 8349857012300746338294335467945984 -883567067551524763926383422005575680 66798758536700342478758467338240 7055796089954219546495040696090624 -743938303975243405795386172882550784 1059374810546644426666762716577792 4486222702025498235417411524231168 -490813672938443980092766039981424640 9010869033360533269659425626390528 3326081448388008379619526492291072 -546332528317631681574686561939750912 9038349443050449376235168917880832 8840359465787194790032721120854016 -51807030689795995803764040050671616 7341335058383909765512118367420416 7948152884708267336237184194707456 -470784643359789292311254452160954368 4880132868654151113177164308021248 7144350649175434488726796877430784 -889408508985510412022654819677241344 3562687244922440923322886450577408 6901866892300983852722473274441728 -831327645730399313279474084480024576 1644701369177276530715439002550272 9511567173301797686310337872134144 -539917825778802499562533603936043008 4063794838597279817997283678486528 8832094677660747780186223757230080 -339770668058174369818622656639926272 61393032923957811859560587067392 3019200632289354015300214279110656 -107279493145502728618206720763625472 7363456047606750634020985070682112 858866278699369117498849265451008 -613886751985099528035995026108448768 4978280044600843217657260631130112 5720880204530163304519871638798336 -952788482158840027891635999538675712 3027098231610424809568652509577216 6689255367880312970527745062731776 -525961759993706887173337636440899584 9900623242577023970665509699977216 4578500538567516181308627956531200 -910661492466967874260486650037534720 6614497831592619447389468466610176 1139073559150591056804982567206912 -712093680105952638582129045740191744 7619468978786562305481975806296064 6929497767367760685963842093580288 -763371740893570940937187984628776960 311624608330375967725663857672192 96430982309326581493998062403584 -606226958296697789434148123869970432 5573230294261423486976207576104960 5383198810764105910894983655718912 -387949691633505180378949858961129472 6275294512643385886344635150761984 9216665424084443099458965585526784 -955403082249187199842311783025999872 3648611071701943631339655782203392 885421803211363673438581365407744 -524536361748992687475197928439545856 2895552466915832108673496764121088 3856756553642977499328448064126976 -790260280069527115839676720804265984 8231937536142438502447917859602432 5012342969048726240479033696452608 -836394160741182103426199263559811072 9458055824114969085583209269297152 3354547917030156518807817072672768 -881752830372753146592485286296420352 8674998760062605175246273193705472 4168354123384729154170579354386432 -959797924101642486008139009295908864 477104651476152152527460274012160 5625623194477560957169871074885632 -207932278297273137092924255798034432 5714958824847246432528489745743872 7121116442399016326755615200247808 -44012118090861370748874662898302976 8538356192111986665153664699596800 783291913439075442244315080818688 -895531165391815031717545977527140352 4826302101836073825628802695299072 8073926815673568380509394963529728 -717686226762048872450466772322091008 541321432736138757876734377328640 7215234582508183139655584952877056 -460812743956101878720615116888342528 636349096596549956137459300433920 9679836367480000328870273228996608 -755434274689269622711247920957489152 8426037710879742713016698596753408 53805115877431109644302019461120 -397508385707553218389824563400671232 9269675424514235781837578892738560 2749382858600060345908977819713536 -782020917879848498295348765130752000 824149450861601281750508461096960 1554578768364528490766735452930048 -560428307317484964284013298891882496 1956029292729963609896864148619264 1621660617287014522188110397177856 -711073919229966253292835154025250816 1981048051057844080513052091351040 2349588004953909018736177365123072 -703571558372467758502731998772068352 5389388171108874513801771548147712 4961364590269869305977012129628160 -743882537202287000959425948902490112 6189704548394995741216917013135360 3881075507089416029679716598284288 -101864372548374525355938056138391552 9565581632021625809649506872983552 2176285503937244453493240131223552 -950077617260868708321138253655703552 4683691328631133029520740662116352 4842593138332704390897868233244672 -208483577429459289757133419589926912 8203842557538108134703318756753408 8556029367770158188218059688247296 -604535776369045975363246435048882176 3200138120072655027173706482843648 2170726027835397751786212968890368 -563653759130838266478781077613707264 5796673102989527820284466407931904 7392124426304179931392465776410624 -768830186596716996254566247254982656 1882352527307463627389866111664128 8819874708698561776665263052161024 -376870259988864786861785235706609664 6155932814843505333746461266935808 4449333484127494433831730817269760 -418532465954245655212670477976731648 8796526623200513492949859785768960 7733948323266259142551990983196672 -824359803975661672030206595713466368 1861741973239959891921536322371584 8455671890270466138451444452294656 -283759459628173263020324484957601792 3022518743295170573832387309862912 5411673858900040873651568063283200 -16683146853566578844112425450471424 4247373858001560786444265698885632 7772872248272705967693009512300544 -333733638226048083275574281844555776 3827523899347267149357275332739072 6212465610178141803371794347851776 -942829760827736517948930734931574784 807939653004294569247526052954112 5634112358238066201161634007744512 -68141997029850349995318932072824832 3560968159220489616708769257881600 7534000884862797216922600908783616 -503803185926514339583518326640345088 7826942096639675342175802688012288 7847657233062947245947115372806144 -29341541854959479207538343951728640 9448867853278740490184785871765504 8625939346092812429813682001674240 -389647006756594479984072066290679808 590375478598514768550149171970048 862530984062573497840962600173568 -537853651634362366214128197003378688 5651504402335952942412344984600576 2621363638936897651917104481304576 -696573152471468841389253735986757632 2648862948315686959825311714246656 1595792962532958235885511376896000 -431320502555381104264232738968567808 7452151636252235194474084920459264 8534163648905774104934207788679168 -83993719946806301488432461855588352 9183503697199958879334899317211136 3308932047228293662965752852905984 -391087547213278947150876976722477056 4460864736030177189268592869244928 6788717372031754345770818763489280 -998388555742924161310860539819196416 1288052499979441495737564936536064 632651927678697311541292594888704 -95077528128844053375478660180475904 4377973902129937472166404353425408 7880675339311902964709134983757824 -896015113320212357539297215480070144 6905512157630898915389579420762112 5847840966954539804383587468312576 -368124300257814074881728208152035328 4866021412461365787851233494564864 227925560288054416403637844574208 -26689686983730261912008011601149952 8105098436678925063918344522956800 9058123328958578179277306688700416 -263721983992184446044950334841815040 5575589431000801259272906320379904 2125489717900843570733863483211776 -717454914499152117369327414671310848 7305069882293841624412498012667904 3645263697766411190705495142825984 -71229682453238189358663266696429568 872781740997730548103769678151680 111776031119947448579277042221056 -236771874555227440602453142914727936 3446535380901429139185298453823488 473086686453735075756367675392 -582004818744647709381059658408525824 5601527629620899706705066795728896 1585350021741984469101815116333056 -261649326514725199998987945931440128 1247631080299919334148761295257600 1063202438440150563671598161723392 -354215468537455853234573478444662784 8911418859926608669631028507181056 972281212994481620987782467944448 -837283577502003298515025154287861760 6737122646696258493177913147392000 6956818729981127458955197608361984 -329829707903589824523450724596580352 8969747521761097390844948414201856 4584425996857046142448483509993472 -510332003090247959477228856462540800 1572701294099038879111983147253760 9562036833499935535263987280117760 -523796914593774449148861732811177984 5822523700109579448880977506467840 1963279239406860456901196642254848 -186869136161390576714784921993871360 5222781687389411615124042035494912 8207276182112653084097075803586560 -217540365492079892252783031137337344 1586656502236008060144028320006144 1604406242327071523705609194045440 -299727184639080212860112274292998144 3904323845703726219900812854820864 328571973661932092722787840425984 -4488032262614483986232198012338176 1516573671184215443207120461234176 5613108356614067227952005758582784 -9446889116500446096101608874049536 5372962035162683531475907814359040 9215282621702033840356333723844608 -283735156263152702437531983221358592 3735859112039993184294633482485760 2823253089670155845841543468417024 -930996580026773007010013012834648064 4953340338959338182627494411108352 6163245878703159707386618616741888 -464077217943471794637394811690156032 2319821036391241176860774528712704 4940461520624425824977630221303808 -766663874065768178287451492614930432 417792831910254167624966891110400 4965993860632757025512588490833920 -274141725616912208755964947069927424 159693813512212468778389024538624 650527088566236341951483661516800 -203877841790344913471467925784231936 2705069215606162935750091408932864 961760937247337990493579123884032 -88606504908014304351768008139472896 7918692251947667468921973227126784 4744192156451818030723575343742976 -15418924782438273560753223319420928 4901504831211007453265002638606336 7576702122923738963111802396737536 -783090005010957320181666070852009984 1240850100260308098363621480857600 1215372242685535958976653200195584 -738473239718192012366646664058896384 4292149888251018531283238805045248 9022008914597067804350752602718208 -369218597990704720297772706198192128 9556250491906345317387509719629824 6154712310159673922307199747489792 -259864113050738604196830944182665216 7597231481241685733937224668413952 4579568833964791808467021925974016 -652586690335827908918547160506564608 8814650010050439500407746118811648 6356388149101413965198030897414144 -461365004915328471060965344776552448 3326691625477847424248698642628608 5999477465500127534121830871728128 -124747661466687725124629658718961664 2010164476516954137836525690290176 890327285331189307471604106657792 -218535358649571193063634844902227968 5191292128595124949020189732634624 6267578640292743325778424138563584 -753094113216126363569635045631066112 4462652425242139788953335862657024 5618910512439025100864458089037824 -619014249457616468577349169429086208 4362733490930491371272066654273536 9435298081176594382811061267988480 -436259272790558132808570982736330752 4606997662441971622818749041606656 1595874686261290598299862837493760 -919014233501360625128067758001487872 550304197799391747727914491183104 5871364227824985056124961785118720 -159698977769934607902850716012642304 7786741314833262310767099390197760 882229969616812274230324338098176 -131886764489545194393347088485187584 6844795054685764041319201661517824 7820397427357625578818150544179200 -80575737587812821802478270377099264 9899071770478077185474304155844608 2237476659089237220255258315325440 -694524119158994952302297591886905344 7155857352348178588882339744448512 6830000370813145987405078547398656 -472035996670606292241677428923039744 6927667851616744216141623893950464 954526790987957869629172183203840 -372148719162310760189570815528796160 1802733757073940488846103889838080 7803156144988300062505019656634368 -421198751327191012703713960229076992 4477555925237906639040244875264000 5159188310895984304651050546102272 -283870991023950665145671851601559552 7500347753389952311524553027223552 8275962967843249287855719172800512 -918620839063444109631474875217477632 5983359991051672089881793823506432 2684748297418652743124447867699200 -447655638201871083084821115573370880 1153955695623301079659461086281728 3019990525476117644432137823191040 -598714715381064326974049972723384320 6409235159535846845221854269931520 6947450891095606278977325333741568 -78615498042835535952513402371309568 5843806555300569906919310599651328 1324491631010357243444729500139520 -351355069551953448606012964132093952 2871048799186634149025774292697088 4968561610977818104049192528773120 -840712492852129166362555784099790848 8717146101028170985862998135930880 5395777448949896932707309444923392 -785471195128007852745953574328991744 6271866131851593619095682551906304 6720618053663513492459436640305152 -841040370954900144511168770656436224 724781001156008755906086650773504 4082597661558897530086018965831680 -161884797400348385451982557510893568 6992003079950596614457085625630720 495930274757386787126593554743296 -849560034445313135123728695698653184 1182758441480163668959737291997184 6391258692091557224901847415783424 -981273557401838793685003344090759168 3113636651879633224553546016358400 8191735277546124672895494310068224 -239511767468254928839231512162336768 54365734993674933185105887232000 4942954230872879171667365575262208 -733916420121391606878452023314874368 2092986972422777340247670398124032 6627959311049765048860607718096896 -629913510338136564524088814192295936 7313238825615505336958700786548736 7655189176516507856281415161217024 -861417657237130556015027934617141248 9622003945705897756052992393478144 9814440387603454205694673040703488 -139352818593163866749367415763632128 3454320725586526122771777616609280 7126659872486428464971614905171968 -151497252668934786167615930954153984 2341828338838161491258998333112320 2900199762038327922684729969606656 -966738042565923427988261337187745792 1630598007389273266304423657734144 8721900015559427526655265141161984 -809994358554223582021104726989340672 4116864410238602805180214275997696 9657130288637473256305959739850752 -267921898851161654138491010423980032 1448827632409288108632170030956544 6496404145583322057959222773022720 -903133662610878556975467457933213696 4399207440287637176603788890341376 7390123373950028006478799223914496 -955708874933509120104868374193897472 6775947125671288201299171135717376 835610043730813887280727860445184 -593926182198453486467957888217251840 5802709010645102771549145143443456 2832791908549831417215259095597056 -986911325667570656200660316349005824 5234720962333934765438852441047040 6857216196912478267430799081996288 -178173448417652644926477297063559168 1559005081871822121853375502876672 8837432651721655573612791894900736 -868083888698439964891045479109885952 2840159238478028497651530817601536 8153508664511021788159371076698112 -987503596703249608692229095724941312 8315133906089565202630681923944448 9809319377911367251373485199458304 -350462390057034045191398612845723648 9531521616503590616630514042273792 1646037688282159327103464069136384 -613682442252251061911734954466738176 2851156192980018560837555872333824 5619984288058732517550488255725568 -49689864227762993811999808408256512 288437088986845716252341332606976 9612643889611395990690765364789248 -530092728017268010151624817959239680 2302676573505342508184965985861632 9002389902756640608858445583482880 -936535332794517020506039499349819392 1523117681902011410028258469609472 7195930375452800140589232224731136 -377872228863053704893987651057614848 3851900502119667956047377629970432 3699787806855831603042374624739328 -165605384390029290204310871149117440 5119149607214736830788912011018240 224033188073723345160741591187456 -88736680181939930952810247638482944 8795875389248384108146648944738304 821852220186659531291279675621376 -145439776905171744510657913358909440 5250070277040266666839157013217280 9360484381510078111445941315698688 -547305429156655099735487441996349440 4032017992589752219754680889114624 5969380097494460419131680705478656 -914046769723987603678048021557280768 8256975708480105481693390107049984 8235280165198076834790463143673856 -482987906505964415112218771986579456 9085282095226942146873690779811840 1047723571971749233355704022073344 -722254100340701874008536401926160384 8749702931390511160645322201366528 4053631832062126021732488783593472 -108395174406874571544808921285787648 4713383013104477089133121901690880 9905292963440943555042610476220416 -525341976229444023997368505416548352 1426168781344064774677882789167104 2178873868648972452093511921041408 -835118705416803025550089323724931072 7682483864960706350043046961217536 2911022238121320071380377207308288 -124844404588084396506323030537928704 625142765518635174185964689948672 8877677933559794141019853052444672 -408652214059089210261561297480974336 5833785819988121521071775836798976 2307835106298145469804675149594624 -620794541060120489878238118392365056 1315147544152003851031014008684544 734974180886873774449906851774464 -549284891023956729238657618937905152 816721838954625787575721984524288 5703377215215784564205483064295424 -870141543664830088844938589880975360 6231441411797766684712491676598272 4548250628138653348926791696252928 -917417720749705958658609495284908032 2837594892913263410778066036719616 4023360940397425295717499253293056 -405587302609275981238371822942027776 4161535606430550261614928621207552 6488644399636877063255569295474688 -254385804320662183707344819126796288 706344316991055511060972830720000 6836295116321279062003690304962560 -543984662552555737085062971306016768 9786491887809719814037057386315776 2770615693699539596364356679368704 -870670972530063610936091152939483136 8859985396094829124687164405186560 796642383267081987413291284037632 -550642763398691011675836020340817920 2830035517267764667388920336482304 8239626395928961808251792727736320 -751131766140463143266010761737011200 1745584325091781182794045616816128 7854949354075905235958308578263040 -390616247983553384366979563384733696 7506250810513351101019313980571648 5985673204776613718646335666651136 -848726466037931251699345033011396608 279869013730893744826733658374144 618367253335816306394054451527680 -460425955956992306090639393336328192 7066076978643533879427220822294528 3984956209327552049071104643301376 -702096801972284934271468266015686656 4160341732023617586071657187901440 7276647187498120069954814605262848 -615901129695991635241251666288181248 8765252636472452786967031062724608 9897893787080795184975385743851520 -110371608011627203161351434457317376 9703456624361528703590798068809728 6102203181106935006544332509413376 -276298284445660451778710716794535936 2096213530699010256842773359493120 9331247545649979284274827772297216 -389263894624658705406760914048253952 1136122431190589784975676534685696 7701075421745147533348527799271424 -699791053188892099727363064777932800 5275735358674161179151184527622144 9276842958218429588420098858680320 -343709804826314999989677079241162752 4032614042498312299752845977059328 5653581231577461499540167507050496 -589907566782001226864163512612028416 8205067526168187601375496188723200 1861518778044105416412550263734272 -108735855174451947304539571968016384 7235692795255438590642949038538752 3694919826313845265957077188083712 -876546747063192737900188157152854016 2505035058340945656057358159183872 2786077963047653621053539015983104 -701756075504323112305093495530455040 2730999570075011087928474292191232 4009891035003060063616327284162560 -806154098658237451500091775045861376 2398963823219113996391854674804736 3291651665218974627112416643645440 -340832579966326161512383430778683392 774272598505535173420673058996224 5897144915067955144946900289978368 -839320764151760108676296700696985600 4816999708881386130192587101831168 1880015699693869264629182689705984 -274489821919530091448804099445751808 9805433620259503824346019404972032 3271182559647902192952897473347584 -764303253021210016291945263780593664 4819804307276010062050749711384576 1616578004176698327582112986693632 -451717667670038452410231217077616640 3761626032866028981692243420119040 53878571725736385464270594244608 -406107736258014961218879137423294464 1327986343423688042534612720680960 3561026117107803262662914718302208 -872838606650593304934137292428148736 8628484119590596707618357971517440 9487272495360676963175683577610240 -935096834382885501801758375983185920 2161527911727541878716517071192064 6010535429614406037330199735959552 -147934477592750824323328603634794496 376422922477384569217765892685824 8706631322369721638706814883201024 -5736513122216410477198339089629184 1105690812261763143752134017679360 7777638225304544174542372724539392 -418284499418110057849911553149632512 3716741930993197122502518502326272 2830247526496505811784447035441152 -476904840447954042064860841783590912 1740888594126075437283655915929600 9483935785518309332707097681330176 -139186191344442544567844120115019776 881726481004994365469955106799616 7392125909198906165207864595972096 -598017799415672252285721859676176384 389772039840154296799799755669504 5110087227597816731579475516456960 -255971244075347366139582794470260736 8479341907832738972120405466152960 6193396660819193792950019278503936 -412469682186127976512659116592726016 3243141426435755961898391379640320 2214180474126711927135631338110976 -80935502966689403054478426491584512 5798967284991905476898703066267648 7243725125552698194385255561953280 -846547381057582656179318982258458624 2484818854542894979013291060232192 5197764189330432082140231897186304 -395280790613011521876393528397922304 5184527446271689388021036710100992 1557711339308898216597413446025216 -871729636114027076871541719427973120 5604496803707397665515340432408576 722375766478738622288094908383232 -510418129897999332486791321117261824 1949047431120907695064056615403520 9002781228928820154545856055345152 -846190167777618399320505930836082688 2747980872542717385197086379606016 1737753045182598625483933175775232 -453143628408755668094459018930552832 2373933336975505029573288575107072 442218831546643195142492190146560 -467183789996579824653084925326524416 3973620747163930587650496028213248 9471797590883250667021420063621120 -242854517820136016827295198395498496 5112434657944340988642335211388928 2434561694767331066853610642997248 -132206255265272846977093936017833984 2589227743022742556456849569218560 1888431846596910423968711687798784 -621693974525158374956953326424424448 1310757355338009083120997665603584 883650752561243039566142812192768 -625932585525574463004842999794368512 4262306693048714051483385357926400 4193803064980277282268744318451712 -493925666781671876882580774060032000 1393876826267392402334114704785408 3530293197347685376469944147902464 -990870509949118506186203333170036736 5415742264549768967922270223728640 4765949198935770446567981692485632 -706890195670756722709693755459371008 9150350962776599459577172169064448 5743590854777336604414169313181696 -611238706247121830964237739017371648 3948603795554190444953086566858752 425866076274674553202508625346560 -664843296207046034004208602297925632 3455329356127721031390697571221504 606533728975613779329585088823296 -686836260822840880578323919941926912 2318598706518803139144768580222976 7454230880177346071170406101811200 -318033970814932860145896534076030976 7880824642721025366405318493339648 2604744703616391594848062527242240 -931149864661941271208953017352060928 8542161483252004796641812947140608 1280440241410751294651996846424064 -610621564137340358612337321532456960 5505137989609135920659168248201216 4767231342564242755682062944960512 -59050446784837594160289334712860672 7250586348030115760437228174573568 3588042886826295616420266977001472 -864398382558513923101577255340474368 8674429354244795624731275864047616 1076390539896121532725316263346176 -680595937675185818103339205947031552 9373654528879901020318899546095616 6638483780570946586746228251295744 -894622152585831803847637609138356224 8569357850847583910592757635219456 2690084567563206758262279038304256 -833281228835914072145010220901335040 5273239059408728342849854178852864 6763676596273176459119781784584192 -15916930725041202977043137123319808 6384913871236505191910818432679936 4833982219414999773271834044137472 -161452075616153646119656410920779776 1694340513816576826894224396910592 9074287589141084002562950599540736 -547454356879415071231148125096771584 9106979525057808877152246821814272 8501719826836422882006403943235584 -508363933352474575440994757190352896 5761557942972654662691376047587328 4072345128585715015762747276132352 -440384387790615260877745898951540736 8239924706395507266293709792083968 3246666763401276893608782021525504 -220090403099235124399689650453610496 7488894855772037313080638385946624 8214982725813117040428785260822528 -47877917220954994451149806307901440 4501947376720273450931702011527168 6071196513424062687638694035193856 -682090566922584993091517036678348800 2230417840154618608729006087864320 5073057560613299698635182912307200 -740366829034540157434487234975760384 212208745162582824463672480366592 8131483259077996546072460367233024 -772824365847266448449943029990555648 3995260288176742063450042667106304 5463349767619455998735231486001152 -548654200648892587579272955963637760 3307837221303492267014442572578816 2780321091591554459704457236054016 -296973417893388179663609653553528832 7466557672703655258061969494638592 7570745980170000072535701974941696 -613042155206064755433796065516584960 411955518517600291844707472900096 7761213676659070644900659833339904 -566376031338379430464443622564560896 8521110590039754159308063975145472 4837635603724985172118986354065408 -185418111887006959928473681106305024 7996356492941921044936268930088960 887359523465959277564089226756096 -292246594672679204393657506832842752 6997514964458384204124201823502336 1202088729310794304606156676399104 -334429245936701331599954206326259712 1004384424332361051835833937559552 808119579361406901896336826695680 -52955291762150667454406752775176192 8496565966801840901754701731594240 7200973469850960556106805059518464 -407787968024616734847455361450901504 1021127500261763716228717622591488 5118945432980008404600397355810816 -616927849263434969137767829523660800 1141401890153505754640736298467328 3951037973838388321149425045995520 -580229604654700686393525728991772672 5998689402158584171346311577075712 1947573364651586052077048624578560 -88202960194867006531701732460724224 3121753077543071495503725258080256 8685291854047629867883224551653376 -832359579141420843453413462860890112 6776145719934209565013966604730368 9071497346658390631881623090495488 -105241626990774506079683960746541056 7516494217543505095644881952440320 5057241911922497170493862045548544 -769754784193020560722358133028028416 5929080502041395446191532074336256 1170913941413035126582303722045440 -831364961391707214700074719021891584 4681460414315667374644750685569024 5714889565825393196066060638355456 -351238002115095331667719746326888448 5396430759792374487427788277022720 2738573613246202174102596860510208 -324071813883303839593136310938763264 2079852636528292031851254329114624 2029284434459908123304708116840448 -616776413762143317609277106451120128 4864281563492792567162966502277120 5590086251106737396024677754732544 -577347919526696451872456525725302784 897220790178981907706816346718208 6816488231170701103711684571168768 -956318323021256310350398869192310784 184631925748176867252139519377408 348925960161149976188623477800960 -834102333640973612254803293804429312 4571929172991722008415688953167872 993223093637245634092418847473664 -182598949491953499219289200241147904 997530177181754974543638842834944 6120080825747334531825376178470912 -494630036922210375244476793548177408 5028512001738828029848391396622336 9464796275427051479198606532018176 -415914483358824256405724930299133952 4062437891311877155036908581027840 5086689729973713179092939008114688 -773593654093525917431537369153011712 8613249257682840211266040223498240 7656952016146208518367283286900736 -727395807178227743244679891942113280 7666922590176214466463495507410944 7037347048541186933062141629956096 -917844237418006863212010283758256128 2309697038903944933619124425195520 6103906366641995755224321918763008 -11803136078732650425442939156037632 2472731462888266883270928557408256 5692793717879900546887611240677376 -232803400924953760929119601906679808 6484599770589608778809044585414656 4246896288899394513452005620449280 -656692277536363418646280637809426432 5514870315577960084376975289876480 5854801400627895725855557105483776 -293186217630244067939980546372796416 6434435299487862151012708385816576 2959237922669406663262983518420992 -951520399124188719275748848140550144 6044813322819671568619330603057152 8532135594748939118705781963227136 -614432850463872974698257169963286528 1542449368140059045681387393777664 71044081864317171253449167208448 -550572695394761222764280477122560000 613534283065770243085239719034880 9410923295883772691560699688648704 -119119673893360001631920638543265792 5709037265584257973286055025049600 3415083274534400031352139334811648 -896149333739202142953088215580409856 4993374346911275016257306621902848 1554471779034184072580376851120128 -348420150124916067975568387924295680 2501718562263546678619177494773760 3559009876802220540226148518330368 -115934887270974843770915738599030784 6941276691074565462880034047918080 1243941669597795090714535699415040 -375088890623419670160366790967820288 1472967480776674458123237419122688 6226100716096107853728190629412864 -976400559908740783076891673592070144 3291312603399076327754428695183360 6792046847136544603536237537525760 -385986146414052760678778189067059200 5144803845175396098605816561532928 6625305913374539524904091478130688 -688179963387480223919245038157037568 9237021863656402939000044021350400 9746797497440149103132458048552960 -920445682895834541540703048476655616 7990856637202186098480215027089408 7802268810538799259263389738729472 -500974850423571895217652636240052224 2891671834826881810099419542978560 1860864541517580958605540132388864 -575185976023253952918483705276661760 2146345621129215923143608400609280 4796496314567059958423774738513920 -100062876688787476149838125901807616 6373954037629333676128488554233856 3559977372254629716609880480022528 -458758649691116318327843434885283840 5147371400522333450521121866645504 8366191819591393076301178108641280 -739218693092916887093447390367055872 4209005821045316316816343300046848 7234018861888655224774361153011712 -954682369442494454407833243827044352 789001201010141993584173076447232 1159574018355579048340558857633792 -64312898161722676182402888980496384 9073820998798257039180246315696128 5921672012449120034799299388768256 -626503225371057074549359315668434944 3586610942490041524618376748466176 9421063162857844340647787554144256 -283392743837862599579056608949305344 4061696761000139107764786115379200 3489214708990074235510104543723520 -394926160096978737806272949213200384 9741065056494146161069518061830144 6939525907840622184101088168247296 -810073792272282573861671397228544000 151630392044217674850308198498304 3103394855121284900324567500718080 -424667263460434388995254623070584832 107468961389289541427264529367040 2003938946984918573155741790633984 -326906557538538464400832320208109568 7660817506381897040259453697392640 1658250893781922079908962945204224 -452301084409868068418359403095261184 2570199566540024962393069857013760 2712874087864271476886482475548672 -347393715944485389356540404929921024 7767588501891202253362128138272768 5617675697941430419707297395638272 -86576355930448694319309781790097408 8875405488054467559151389835788288 4412952567342246651107766641360896 -484915011865719165541771998505467904 2720186569937953056385870879260672 9231243490538730311583447709122560 -260264523080786209704663140370743296 8062627685411021533151570530664448 2206078815738340407225383498285056 -269255327694778778329227695119925248 8246739365764700037713472708935680 5907335469855031969273607438204928 -792628948463836660712890092656525312 7236519067889655920888611438854144 5661578944651440496181269810380800 -215267317060777593673834003660013568 5874847490203821270696079310979072 7128336281897046760429090706030592 -544062563204353157472577452096094208 335760668182034371383197373038592 9108532067084149683968328926756864 -338627677569812543284786871868063744 2137558742501985773612608897679360 8826326976345262862086187471863808 -977049685140343701155006968628248576 6594882599110681828050395354628096 3589381588330463793353151689523200 -873875446133184094130460889794478080 4419688158607012712261990385451008 3703613988639552238107367915388928 -425115845456999704353847746632876032 1898621053575362773751443633471488 5601559617243779344200626597789696 -823316406514655602484858521183584256 1873165508178786329390765731479552 3743731821785459608716187183087616 -907018204064584441914554294974021632 6937641511104257439916582196215808 2816179923980845691337102447345664 -608019817627262899983898069656666112 8774489109168737563964660032471040 5602515351047930713305570338668544 -901951772014287991507716700846948352 4576927834979200601514259720962048 9956935324864465177120918598582272 -459685472134010320936830407582679040 9331128386360653586782423932207104 3366539638959445220538942113185792 -257479585824062045335964692217069568 6045294064919066060128548795973632 5513858834414735508757568162889728 -736630043684812953471854560717832192 627230760808581778723429356142592 6427444598974250069903703600529408 -375938643430550627692084076866437120 5687729800303096249946013490479104 966389633533282156107647160418304 -307490649619992576618506831790080000 3162517929344190750869780642660352 4252685443273255343489753808896 -937386727703791269770738425799901184 9021801456854297963869363062702080 2285876192148054846933148559736832 -633964129736726633315712596139048960 7647611286521769724722743164796928 1571220358157107897134839953883136 -257259572300049014251066562887811072 9391648839899526225619689880420352 4301428200698511569663386588282880 -208943574245485433547398761970401280 6737449219234386509015086530560000 5723021415879941371922171276820480 -921639229843713453984542651710439424 7236711276320765236130273592082432 9199012921100756371030155259281408 -457869744364158134995271253481226240 3468596269329763671104959539052544 5328870847521475519858367071780864 -927651443962147966203263640718540800 4637495441121292575353984987955200 9092873381717036354828513423917056 -243902599445872246881170538400579584 9640899260894999536134763631869952 8628285136935628236444033269891072 -208294601295076991868842705002954752 3562446451748167547262714209370112 8711618059995136501620066165456896 -33804205394565694886691021697056768 7849451119369414459189430216294400 8566474566635752057953145000558592 -570238374967874921866410211193913344 3857798499696999290728046783365120 1593740927618303865547100730163200 -542570304489656114993927701334589440 9329303252274472389472941980516352 8898179789723986328163803604189184 -90340287956072633313094535217152000 8652032291403533048214482591940608 5987976471280465090657495329800192 -464495818843159097059735195741061120 9321892744099669853269495883235328 3114558844492719408628574541840384 -563174663133343329926577800156807168 3108766379530496608749321008971776 6826969889314446141786983185252352 -862961200986580010784758649495486464 3147621914339532750916800477134848 4276230349501230942451859242090496 -324241224332607118129361253566513152 4558311486920316219872949380841472 2801211377207729234076395160731648 -203034856448434228866513017069633536 3292348089895412309743841310670848 6056162922926009917500780061917184 -956600646581795101320035153460854784 2497849754787286566666593680490496 1307558819641268340254360748425216 -413032851906290996628580925813293056 229425649224803047181425120903168 7403256306780482530673657856917504 -822835137966037548263050890176364544 6370552502031243406498690228027392 4217416461702422445236948989640704 -462288466628272590899649372286353408 5220633147657506914204923157544960 8114295135908896918047424553943040 -880607682818245696496089572992614400 2659306148517430357547287551410176 6955364494989554814823377246617600 -735875086419737980996776396998049792 7540257186242778715372810651303936 5993482689880923867874243934945280 -453634365882433616768219598947352576 2393322882799703698517627173339136 8202887215178415437972238925561856 -826236998185711690162366912470712320 8603747656394943436563254263939072 912651133264450057842332744548352 -689799843287314791974390724307189760 8380715478786204622078920640954368 1556065924372054033396146020286464 -994166688876252264515913293993345024 5363345299540869049245806129840128 8437485461411869313808309405351936 -662560415253068263173352317620584448 4601240520813663178319296993427456 1252079105728974755909727560925184 -790990543846957745906762029562068992 7114831079192269837878652060041216 196775956713397058555779326410752 -748221072172779517215637147450605568 994807520484677222931010026471424 3088098073335242606160235183734784 -183907276769670593947204438552739840 1320337739140072586720587383046144 2506327571315084352230384736403456 -565208980701764664725704343698800640 9253248651526667713325997041385472 6796531138449828245144750832746496 -486640531802657432826158337931345920 8396218745084590478356780372983808 452094239254796007042651741224960 -337686697592181111230666520978784256 5743358272623483632486131727073280 8244829576049246683479530476142592 -655715959531911465491701208780374016 9070662654191779106677606540378112 873590983625647384278451804438528 -174978122617157518122985519503638528 2905340672277421402645113042108416 9478903789547541305464772173496320 -826177549255434711081796018034966528 2518145857125062403387515507572736 8149562202755805690585272369020928 -238952715888679954533353180423520256 6793087947337213212080889430802432 9463556264693085508790605278347264 -218507444132878113261934969043812352 4626138937809814135254109504143360 8669416657116386982032281918504960 -888024244585509917008002613814231040 4900648422166019776731059673104384 3799772259219984614576275855507456 -520290761841713086102111836665020416 9022090385019457989111136116539392 7537285382555877481113883382906880 -498834848497666087701719858735480832 5253952273804104798458721786134528 6762095646327711683024929052164096 -147483898016189450659426505739730944 1668025840786674962738462207246336 5258847174713875807388483513745408 -516531545415970227733342405877825536 3231047647345112877826441962586112 9326134558241003569787956210171904 -108936577215692064428170363159969792 5168595048318549265415398538346496 2697641809458748658680873218998272 -168013647577580456209710634355392512 1196731315216597049389393274470400 6346554488948133102380261396447232 -958302781125568369219115534268760064 4127782356548185243146813756669952 9107091661473944287064294621708288 -412236609895311312875349750197518336 2616986535004492855339454742659072 3323217607261880435988205316079616 -149332937252786408198060196581343232 7794513632944587774053881162498048 8896482391368507239922189249544192 -855804627854491051999614095927017472 9296654169176738818994748390375424 1289116359058172943067774489460736 -449970536938024533992424767745949696 2206111950066894204050436595384320 2914242783539733313518244814913536 -579433691436306008059138255062302720 7043034578092323249347232876462080 5937466045915122606800597365555200 -998301122365373954090357824654671872 7330615301078938225299272773926912 2296203123519855231529039450603520 -934126461412578410754651596198510592 4931267065655221127291256963072000 1929683514715476743551986027200512 -109089026839491346977184367735996416 8969496899585573311722809867632640 9631469463742049318958430752342016 -501590501637336830016100036874600448 5549027654138895203657267833470976 7782771134783405142631868597796864 -417550835500491893444569352256880640 736913006405589598295255750279168 4907672253955775242672287485263872 -192757749704619755944473733336399872 1981980984542378959453162066411520 3046621311106345459079443692650496 -423182563046622442337466890951065600 1360829044121384842284695254204416 3267021588044819152055868091006976 -726829768232052688375106078779637760 6114487813111035996937717469413376 7721632859502192556882314278207488 -416483365166262920492871173942542336 2573728209984680137794792424734720 7925464442233301827149750620651520 -116742362070009619551386449083367424 6983418733001972569924748460425216 5571335922676267204706973293477888 -256855882975857725835953834821681152 5512188545320338806849285960761344 1840617613417965740686011078279168 -929673587615530870780291706379042816 7342820648613598024572687930621952 322910259214460300619913885646848 -704837630492280811572374389877899264 5993091647694804822463629100056576 5673281311634382861049912652464128 -95409512562041333564713762964897792 7226168200254003962549731875356672 1614640435874471155878866836258816 -25413696155551902760771626895147008 1014207070389573236414945498759168 4965077888085264825629075035914240 -265071891367781562985284444167864320 7004195116925424969614760058290176 9172652288271478063812243730989056 -798016243185033036000684863444221952 4391037773989075204355971895787520 8181248389433478169801816616730624 -615649740474412664434447446347612160 6450394252543818911749778928828416 2103987376199029764311950100004864 -879065562794239902592760713488367616 5505383240624829033976816316973056 1774112704454976966286832914399232 -784821961630654709407730412166316032 6485249764191513014086853103452160 1268475926542455543735920357277696 -335678147599529187201278158766604288 9695106383903037516181173415444480 9169842043888202548762569768697856 -400958238477670746971417412401889280 3777386353269919986406567851327488 439717679942916997588567644438528 -153805600471368377775184792776605696 1558036152675265856257891476963328 269375874872535799609841659412480 -783318635439003390277008594363744256 1323615200146110481513959993114624 3605237739725288607623602252021760 -828646828634682914536392885037694976 7504789785879866585123832861818880 3544618254570549777078144410320896 -452931411187316337129884578526265344 1453580905242556517232444463644672 8991898567564011138415621237112832 -694704216927591492002636369464655872 7810386332309118731734763710709760 3296734087987780158716022838263808 -207532567252509265769997788700999680 947140533743182271303824265183232 8419587954613605925813764237557760 -304164647702126605656996177990647808 5654314195362748394199032224808960 319641620246715393745211273248768 -727494677150363381237238676861222912 189574782068763658688389611257856 4508729230240939295018322858344448 -190279584449694847178905656993251328 647045949175917534311609077334016 6303365243370100881125470751424512 -650385005582900525657257076844396544 9962119898439173775418248984002560 8701696670964729383385456651010048 -358985292821481055464724831064293376 8965687469926920123736312843862016 9763384547939560631184100956307456 -47272789540062709882118202422460416 8323025308316130230420043697487872 5982133646985265714412790451535872 -135144107719015265422690243789717504 6416100413073495531067584351830016 1188801353694452600789736364179456 -884603708282404895689009119300157440 5507025316798222610923865107333120 7422575597381307990698119726628864 -956620552549102106092028214722428928 8832774096906174396933303452041216 2285510183780880948839488178618368 -895092475113411444526909825115750400 3230420768728999920387824413573120 1840358342679393275986304978386944 -169466320083994620686200175299919872 122368304395959342099102584274944 8227146511477800184160284852617216 -874961541940316618183253745010212864 7682489715104719813363374898544640 5025641317319581962348519311278080 -189345534793312684212492302312013824 752523047117517619842626428600320 5418521798445330582762155296161792 -382955238516249360247527031716184064 9703418998459023840819226018316288 6533543331749209493979811559768064 -923933927405261296151346974254170112 8004366359108617097690775667343360 273477416455016955624754581078016 -136225089058424700553979949381320704 7099095622184490834968123258437632 3928823695685293093391112293318656 -193035973834751420125619840178192384 3185307636934352838199783708426240 7755629080802753587135515990163456 -533231508468916052204568574901092352 5459475085423890977663051370594304 4539064493252468726174194205720576 -271092363847452848790732679791247360 4993130457518055865227802214137856 8637931801760438466997759651086336 -547561319131554803480563630636793856 2627879221816888673205725649960960 8163550097073246990902511169175552 -575050411469427231007044032834568192 2616406098224352421005791730860032 4101052913880285974202915250765824 -327510587366305034158586478582562816 9547939393977617708175403668996096 7604200368479964873213582367522816 -256311488554721098473903828863287296 7177198905269646616920954081640448 7844786091182395103051825694113792 -380341394456536623277281020278210560 6570963483709164800453970719932416 5402020648582023660171759475228672 -734228430341641375622332657541578752 6561086243103382463126081456046080 9754780438582446267502088371044352 -308179307384407508635321580119916544 7278451991203693406325543683489792 7683695985148872935153056476037120 -577778534245400828942013026218803200 7533080471340148061822371672096768 1387154786502761694336697617088512 -374195047789741713517291955023773696 9688736719570550134184452739301376 6650278708850629105240033888043008 -351802654756188342353069419710644224 5807400988431809579567132927066112 9693855165679079486696283722219520 -108815576124723088363607726435074048 4858611621158635499216970746691584 7012498366046289796414933303296000 -132012258053812166105435658250092544 9758979468974048224306086730006528 5348780723226483715566612951072768 -604950635306054583520318732615286784 9302531590776543302464058159005696 6528211436562966183958647094116352 -52777419915212334232153860763287552 609821752721241514077727561351168 2556550970482157610052136934047744 -173538043753940450774601991567966208 3889709797351268838247382049095680 3362026084716445696828441209339904 -572947970106537086016561425246322688 1219589089024769193011139315761152 2291801647385172090237164829278208 -102228389943789029229917026687909888 8019313428795448652379475268337664 7804591770381882558949088764624896 -389776954298730145334966386551685120 8247774603611704311594439529201664 4141045947853042076260250196901888 -596903431624118179014518890240671744 6351604362226768043292413510287360 3756884745755057201528053881110528 -466177241083399565833601946377781248 6382410360204583200618759575306240 6115855407623338382179898050478080 -842245388852782384196923460939677696 4558435985241144782567630323056640 9428871456762511079027325620191232 -214300552482135528833524930088796160 2030812902083879132275648675971072 538217664207766409147163267301376 -971159051632122107855482072195923968 8464922124883061269906296261312512 4161308341785321426925739057348608 -947166999048716296259472360772468736 8339509199442485350624007357988864 7675456892458037010535114682138624 -691431630570032539600230714389299200 8567417987685793742334744630132736 8626104122887634466137265722621952 -985222070009330839570084159650004992 8526057913359001579697881187614720 1760205044866312035441225911762944 -844417882879301235809471598126170112 6079662021854362122715791586492416 3298783603812846178763953533878272 -65907573589662565984553600053936128 2359276532501017457767118083719168 5675965637766534806010707432177664 -710457917913686904767796459513839616 8844147522765551988472953268338688 2792188031213956404307114911072256 -984815661124991243647716735972278272 4947502769208329411357427762200576 6612682214893927747994563356131328 -530780025231476942906853234025955328 253685326207208398798313100410880 5751975753900663203225778899648512 -340502976335729656881990159009054720 30075468795807997921680450125824 5876931658588894960631307158159360 -344404692546691701956494187024089088 5004514112980383291553809310941184 345193027314341484297848688214016 -750161482420789389511666550565765120 7067876715094012250146854389415936 4382350732837720267757844539899904 -391894408602847409680884799578832896 9519581171882301054048505604079616 1520871552007411082224437349580800 -73795947400519052202440376362991616 1101658069187417079486739667484672 7647871370829377280332252470837248 -937265993449913808451277140835434496 2423344087130166554926031914926080 4665988669021617503420267613913088 -62112891856232497562985620807090176 6104687090839972832270931281838080 6363740332519736781794240595230720 -528863040396741659455667733392261120 2664591391607513252202250023993344 6904655786975052748859825580933120 -260134022544414657950428819617742848 7736305422952643203449134216380416 163996598876695042855644549873664 -86815703267739396414008672301088768 2633803008474380930389354794188800 620210584052651115745123122544640 -956441492828273188852425577191178240 2786298588555125635542241951875072 8303219683434454074451544223252480 -658042657850393987079731241981837312 4682781421144453519455453207068672 7373805627345800661626516850868224 -55558549258429163143210492124725248 7574573743149608689387901416374272 3321974334542747744025492133511168 -743144399521551612354158525348315136 3220789895164468550696881885282304 7575313158783554459080700830154752 -86952859778377847621549733718261760 3386852791222199933511205061132288 6323168406021796783396021499592704 -8051060985724274303488898719809536 362924466368764008059168868007936 9449895782662295936268541995515904 -303872210211651166633706560279281664 5710576165518327748658646094970880 4235827287717956231988778685693952 -757285869699594544300227337998303232 2553983964636873230950200044945408 6516189527624114178130942923636736 -917329612472391399800954833246093312 8951473855219205373801158735298560 6086996611950878525918970315276288 -316826425818465935940221917173121024 7599139841869605350808698505658368 8796803516492793133465882763198464 -274080047860293090697527977196912640 783284196664901845383154684133376 9373116387708070541754838584131584 -499862251405155993867395296726614016 9920209361029203295986462616453120 8385677796662958306232102394265600 -268735566041120134475743805948559360 485949411212410838333999886106624 1742858728784738864022877710057472 -351064138602731598371458375349174272 2120890844807706759325737556115456 9976018958615371194672192098926592 -860359170469493846299070862138015744 2721087477410467076056608078299136 2759208306128721035272296735965184 -383863765803505325986009675032690688 4021232910626200042988186076446720 8196509616102539488361670913294336 -434282015984598484672452715392008192 2713451795294635092207665776951296 1878130738037801137643319306747904 -829596111598867715036645472010764288 763418047259941003239373227950080 4001661352241313735433637148491776 -757839162881637287622468307790069760 2752467512522757096274049256914944 5695756688767068456468634459439104 -937466800296839869936273263224160256 9755020765138175414659325167140864 8411950748161490598005633189937152 -203301132550117708773766376766570496 330168043937782511609503669026816 1065287469544841947884789790932992 -319655682358207440354963964477571072 6982615335861455268760358299369472 6056208284073151649072528863789056 -266885354575869800952367008196853760 9607200418272110184013388358615040 121899041562963296008479625445376 -234418659225423818401993253938266112 8664419249292981296821025021886464 3752059443108604221382466069331968 -589996856947995700843594372303814656 4466385278258250453329666017067008 4097735287963476772397505943961600 -572413899246818511103457064149581824 3750544181638477472883780335173632 1933246571228050645926096230416384 -694016926918337316063706342756450304 905423678345820925460907684790272 9931169346588742811845489978245120 -307408557527147199137629937051107328 1058537448642274158690063523774464 9289450016533000062540570838433792 -647983475360474992249812935356973056 33238268191296332049276924329984 8426267334953168998768685344620544 -265986387454182659122518344826093568 8935605682765356580078154195927040 234045661610970503423937008893952 -773218787902792699824369967778758656 4231944584843482622708359737901056 231379879059962672223626519904256 -940859297097196665164193798631194624 6062218454851561863729375923404800 8008631874678326796886598819512320 -220520599004589479270377559576018944 1600039119348287736109632457801728 9520963291125166511967235725066240 -620290442102449062412335581258317824 1012247516940963714203044338991104 9483414749526866922355721590800384 -244427717564277356315997116815114240 2662616013166097143318223781888000 1768951539009358299613006986739712 -745834721117490046737101159118405632 3161574893633784609033375568625664 4937216675125403906284632313692160 -947260235449115181749064837676138496 1636017258478647575422768657727488 2615863146155785619275332460740608 -367716291136640030819257433548914688 6387554145640995487535888970285056 7515864568136059938432251676590080 -492670462167358272100239376738418688 9332861474919216562821444531126272 8075695114002821527698717903159296 -745789792869953620351295246370340864 3965786220531646339116748836438016 639805004117385947024142769324032 -869122883706912649740522888674410496 4092465834529471816361506787819520 6216963494433115890668271164194816 -134735182471185098763514008926420992 6643206725203721902233436003762176 3069141464547791309318572195446784 -2337013310022183114248360097218560 3099866044306210161936653847887872 2990097345519029019835423074025472 -189685640181657577996682883521052672 6152393499596660719645921762082816 5706016772748204341643627162763264 -881499035043309533153363026876825600 3225737609928174066999810704015360 4989624640416520709612576675201024 -273037100792464485965555404858458112 5395874841062055250443745215119360 8980954660303221972149755738849280 -295401095940733070317178010233470976 2034438575428135868384733619552256 2964345528157114065576283124793344 -175222305630241325212461182163615744 16815672111505233112399624536064 2367375249675224497081322827677696 -379365168927921432329973034899210240 571576336694225100815622574440448 8548071446632955242269334602514432 -969585309789098442194324413520805888 7184131013906987024794209910521856 6966380266297311929504818637307904 -27433685197860518762430677951447040 2204563366979115137099393528758272 6107505394291301327836794719305728 -726015028799168430702936450068905984 5131349333336035916209331875348480 589637436796695922159077654790144 -268329326607892538106476130832744448 7020320994340010673850886603669504 668317415692645513448407466770432 -956609187874973043011421058285699072 4151130718323268245684265859153920 4058281288562279960045619639222272 -722343402011922215045316992961609728 6580089843228457814734186638999552 6365879999614553699517742943567872 -826838669900810270240200191784255488 4155766449848042120413096557150208 2469914728267190406722378469998592 -808339092632372503995889455825158144 8123863931537948477717224158658560 6452011647953584791979924201144320 -625342900639289743983784270237794304 2052158747080547392138239836946432 3016032183852803032966330413219840 -296819178636134380178779563974721536 4722323835614733682704672853327872 952844549903792697439710544396288 -162551713863617441788064408321130496 6922648429415055850343990307061760 8036219149373920891133725511778304 -432436370293105947399456344890146816 2268609050025109094398101087584256 6767619341634335936344104074477568 -797280028243570398549394688193855488 7878907076319380339070418796150784 7885438435041597505390825609101312 -559097004554474998089671190257860608 7750413584875945156427090239684608 7108259515565938644067822736506880 -684156898438106792735250665439232000 49944474927623429327270126288896 8890405892020972652412131610722304 -696997601324257607246809754218004480 6581660013913332097729392644456448 1264475705330577347678753198702592 -981966918185841217049453069349158912 7015329864890021170858703963815936 9986017354121921595355773821517824 -775340204231228060094215306008854528 8577167308324191625567815166066688 842941402522280306284953516113920 -293266379473925820930837215314968576 9720207839189680662804841067708416 9693565777000203550527015308230656 -560981013310133481861292837956485120 2147626469152058790687338158620672 2636562907338529933278498172960768 -405044453834694662180706941820469248 5511868082336991579427710877827072 8850195373253658409432798195613696 -87088176205293955362697280745373696 1820381515177733973674427315912704 2413408653801590657122729067544576 -75062283902352206631330892035915776 8839998202299914712000299943329792 3492537415975829043632282426933248 -657241985786805545787674953284321280 9411399552514044435098839013130240 1455202540524529613925575913635840 -14133051125992997468627443646464000 3922900332756575582913857616609280 7849630861489842285083468721291264 -216054512939799327371580694664839168 4649004279492204737611345818550272 2103721140895086327755685629001728 -338107764710026997677821769319186432 6878957328468100473128986955743232 4048921481117107596948829192060928 -373911054061788215388855932702162944 5168924554361816556854620519923712 151909792060449522742933231501312 -709456697704917960197535250117558272 8906568939480958066268233149710336 7808857680448462495433110503555072 -762508440126093430617731041375289344 8346821363797577983461318516015104 2678221995190089160860788963934208 -527501818797283435092512412983623680 9930531409382592501110089885679616 1558908114936652652258342161350656 -872508379180372305322473868635406336 3962547983490266664996299838849024 8968790143952611328497381304958976 -815536166109524723642028627471630336 8773189118912517528494708319322112 243978189062110388540373431484416 -86788549531564187256904099204956160 4026863840860086840075197756735488 6538206870936674874787329480851456 -309383228039036275772660038015909888 9451062553912970508228655237300224 8059859019763985455684572179070976 -324738688786199855261435207195033600 4941866539936282181316148641923072 1370955892230709887835704074960896 -711772534037915945735507330514026496 1760534156412706783749240092884992 4089769514965995443897247251562496 -165525333732364812613909324301860864 4893312849681836059348739450470400 5077019316174149031732399734521856 -591450126159154255278012170739122176 8391088388427846306943046059556864 1286517247370170813930742682222592 -975303629106327526860292790962618368 3562274622848248984558341657198592 1267793226841398501149548151308288 -843126098544129148571213803821203456 1909696050748356506479265117634560 7485950156689606554457640359952384 -402546018549651349621256731154710528 9216505425902040159047765008056320 4484956292797696114112830596186112 -605373371211311301493010369087537152 8698591341315133967627456660635648 4112535438244673092869830672908288 -177167272152242380684956983036477440 7585477728044134262230378203840512 9269047178170822273517634508029952 -854396699879267954286371319916265472 9992542683120056016947809083195392 2037914906974129269254198231302144 -123059405970658148390909382729138176 4679324386836620598498132683128832 1357653810699533322423801237995520 -866008375490070253993163722181312512 2092008903469339320215424223674368 5973121282803244912088905280389120 -215269499576863330106727888668590080 7627867168551041389768212966539264 6992526126815543826929442147532800 -900208312399564306351200776145076224 2668276129551415649577340212609024 4899209609961356115261350171639808 -440143802434102181744516089975406592 4260984691466619441576877811040256 2359398258426313186674341914345472 -97819497747278705978569232727670784 2832666968185750647877663375491072 6965045548306992326550222899511296 -482300675387260599930522755609395200 7917932504328913492507352706842624 5581325054101268843978065363075072 -411398710345980253194031454432002048 4230643097878682253992822319349760 2636542781113283952468561884086272 -898230419638882210710926038841425920 2653166350802869192671045512855552 5434162268711324001502418132008960 -33835177458823220581329279190564864 4393418954182653345848430635778048 3237807874879539690021701531205632 -653821246447302049678567982051098624 5197642259249775914256072240529408 776929370280938942878253169246208 -764983581113804409004954502637289472 7094771329053607827927801326993408 7989900404495173273218320676421632 -627342500650635584866540075419172864 1545349772950326494217912377671680 2392138963322888214103989327757312 -995346920040522273501463575879745536 3232721837070251427415213230522368 5820467799900913752412684545949696 -132193602731525776473379460578541568 6941608565703267205968066458419200 8225551310026392030532082918752256 -369996172663471935570054620448292864 3685063513292689958471432614707200 3109812764955474433121814973513728 -539531568998804616823883651549757440 1339685429950998540412082293047296 6335219768231873604945847584292864 -119032364426796978673087434035560448 1642116527465682059857089282441216 5087985391369793259669673763405824 -979098686247535064425189029330288640 1326814375936641028402154311778304 1886583158534096730630706362843136 -725084279297246387892394450894192640 6527517308350291843665057514782720 6345152645685919411776797284499456 -297070903085121876455321322917986304 5424634726390901186523736215388160 5614202121768716791011223453827072 -262561528754346835591830280668708864 5735330430847760647472247962861568 1500089353276673434921695352717312 -422617749844312254855300091257815040 7144489724429821157071651067658240 3968784904748977786702427915812864 -401707641456679796153466747518713856 1252455635394182608793466522566656 8047927932868792762407200904708096 -702797805557922004597239647335088128 8405248991231088952126390453403648 701102962914825892877006045970432 -432921278058667899372501300102037504 7972388501102155404172048679829504 6493755073715826653363845724110848 -160806695107236933765662943987367936 7182716047374039258780804703059968 3612572679824708878899864177475584 -680393548996670332340977329068048384 8441803109300167182672704623869952 4201534981741153772312538403307520 -73921402934552275649954459666087936 6154856207072234836648286027251712 9083146486820059936118301245046784 -507942264780000623564072762422067200 5157736077620675426828931246850048 2508548768744312845603393410957312 -826815825996655068839955617799995392 1209520863471836160931340203589632 7736132402853081229896391461961728 -598745069125712518955706114251948032 4815998572488537072293609239216128 6158530942539639802921283347283968 -165436498099559116752994763502780416 5071563131479053255685783035052032 8439093024767971196679896784961536 -269714226352743247585795630386118656 1173167969266080263705465920159744 4344712805992319731491708099100672 -148056119388325628215981019903295488 3277126959067861312647502288125952 4590592672049625379276390379028480 -766770904403288841635246744681840640 7299241105349220863268564234141696 8843518060647204199966122621009920 -527641593807275112745124240144990208 4945675768491986207009668365025280 4677791908071094546070786287861760 -444856529000499606703511036319760384 4834086379646192387730006098313216 3978578748390192305950056442232832 -256329330396914620390685401084329984 5865085454605414225232205455556608 3929882688611879602054332090941440 -122272962447455191569689768557019136 1555823984492105921545728180617216 8168400835744546613485145704890368 -910170234974468207593934326578806784 6002636840196641570967120907337728 5669930273507785374275085482852352 -556466527691711867764956727026384896 3281807479111048042922353727897600 5622067604485629318341347619373056 -608629947675052639291371899813101568 527148092001796715137514988371968 8926765270359705228386708058275840 -137300912829474776248667424618971136 5502897283077358997560075948654592 715221002989960719939524722950144 -119310145978578223236877825442054144 1921077933225072627732527645196288 8034238565538894763030588554215424 -859191619439046483574374314612359168 9422003002599931163951034382942208 4229185662262175498326679285137408 -304342008275461567261581279431229440 6625388831354926574850771666337792 9812612967814948165337942086123520 -107494745064314337712629704030158848 9809106940453225117461469091332096 4643793227592964827033970526912512 -875608198498689465063724653725351936 275642947804081973676154309050368 1260474880809852241203406441545728 -660849392988418814469031497195061248 2676883161652230213110063008055296 8344842296589808264941118896996352 -576747242148857101381235571716784128 7623112498758566479716555058839552 1199045155221477409164255226232832 -972384702387606760328275326178164736 4569130122284587335316478061707264 9187095459431567315469496546754560 -715617399888029240455605125145165824 7034838800338399497236975735275520 1404809876041095106978431870435328 -7603582667235769382608116979335168 9963485012251028167452634132774912 9619905653191956666401092160978944 -397021369031301705360901837458243584 957959442332072505429800981102592 2412767030881500607508499488833536 -877044616674774259520696036911742976 8582724841017593011997810479857664 6198471534184246299484972692537344 -924231593919356825548193707862261760 4110869560893528836760088371789824 3218621265992257880267443004243968 -426327197131646564765059499788599296 5917509611758504985922058521149440 749796106054264264939262982488064 -224664923602000774653754327376592896 1131824125190405730162521445236736 1570730514689973449423424889815040 -402565976507489484558119642817626112 1558374605081491233065268955578368 4564554090952621241913214310023168 -392598206894292543226380517445206016 5239422182679311030445148494364672 6058751973829695299811921331486720 -178360537082988363902907250206834688 9712336220894481799824822276980736 1245991824068436957464183911219200 -122713945192634529692150800354115584 6649282896071230773173087222366208 1266971806545474027753321682436096 -708969722589039395602675110181339136 7663484408010874506866179644063744 5670859264920023313003549527375872 -345412354493039302205599443446661120 294994760267376562916739034120192 9198792146693328497839841820540928 -120134162035218291055159147520589824 2854550042484051970961952657637376 4589040836133919473660410145538048 -273215091495570644956380462630043648 7388600936050140318696982519480320 8596712242537001750594291058606080 -145668714190418881917151585075462144 3482237125642367911835600768991232 8841220570561495989102751927762944 -151028931701103070651020341208416256 7751789216933422370682783519473664 9465102652670675699211459872423936 -812750342171419321907336544870465536 8330235608903794167597770192453632 7093742434148650732009425272307712 -998550106859092453046012534390259712 457204560278428434781253385846784 2464790404386944291946240357171200 -365198411012561439658253368923521024 8612125524936053966339761009328128 1981982806678572003202938756399104 -736201357995528029961245112836030464 7548067506439001818782822750486528 7491247586604934951611288875171840 -763043648249175325793206610656493568 1914786369871407366310272612433920 7032502599004741991989167435808768 -290568643418014583388072620509364224 5286748584868824972768601945669632 2673636297570680016684347081883648 -927933452690399105984235476675985408 6439887536005835262945624435195904 4990113119208766747817751884070912 -586699343241115649994453126261768192 9384262541213194670072056642535424 7167412822896573937247046328123392 -204291783060434076950798268366848000 4882280501172473479985460924121088 738644813172375214581478678593536 -789002242414235998105033570804301824 5519624260789336388943950743863296 7764710748500596300979954872483840 -130330149858194006974366228928266240 5146842500460961786274855033765888 6431040929558093168453950338236416 -798525330099692081754411558215090176 8175582513496282166739432779022336 5899952658832106013990674883411968 -601222327914007807368113673658695680 2479442695764604087455095877271552 3810715824186896270684557261406208 -186531356215235620719711550930157568 5396940514567954536529736960573440 5839876056676675593700540254519296 -295392050113711162994461818918797312 4511534137196912290648787951550464 8446193017180515609293645372456960 -513505534379321780376836196949557248 4772620630718092581861125487853568 1333759555641719037559846769524736 -328061662296840416518763785826074624 8024684274721729623239234552856576 8345477421563070995140973246283776 -279045664348988974971367662473445376 9711045533108949153467787825381376 4012461766399640657727439201370112 -689131343147256928100394257277255680 903761732305535542617789456973824 1565286383338221185926386545590272 -75557162061874344592200568720588800 5722532493440242204830260753596416 1114946986006305629879049151053824 -753316755364714926118339575189340160 3001327740237874379765532766240768 563794818913999374506717358325760 -266984069506803100598375412947484672 4109018098986971378733735642923008 288341916560166135578293564342272 -592358368364333608471774927110799360 6382260989330402753230508241453056 1424174839402826674256169674997760 -263892479874579434913426074893287424 6830645660976712648074309333417984 3204994434059145766307391170674688 -135663278813399809905661268379828224 3646980944465904653916442537754624 496602666473009764444033540685824 -249080047783267281979246504954560512 9040749312672713979720348750315520 2508357135994348871218188573999104 -652394965966153913312111508471152640 2920730409857079852330329774751744 9462182804774706071048900340350976 -279371480316522542044033538760638464 648532041360878454155493737758720 738933818115818836292382287200256 -419118026265119066627208924668887040 7550999912686000698402085208588288 404521548406513670240163621502976 -510872225855584865159130741284536320 3598850251736141716983449728843776 1814037463397748356535076935172096 -447772100204349507543652893275979776 6006572114380546873948453539414016 3625260880081642668288808643985408 -31579655427554421340427646532583424 4227914993243489507761008242851840 612438754082747528460795306311680 -966473963550495124209617702467141632 7122512056438396726738541783023616 5758506213118322087507853341360128 -592032112578457243921071519263883264 2412676517399191511651973683216384 453956113552775578672551044317184 -617391148079120597897709315430547456 4911833075054702655545390435139584 1517892627146157812413346709766144 -850725082752048277765784953551847424 9064218701971484456110798067990528 4130685171385440794711425275658240 -280113519141150073652075414864003072 4376360385828035864574823673888768 9444759270352603108519521151877120 -625574349843079782494528410079985664 3324885323615481959040365111541760 9603892243725944806483259119632384 -279769246846889170553063348874772480 7136805953421269815500043880235008 7864947912296260983087669262155776 -908816044452118456668598302335303680 3889876812302036054106507795496960 705121512791047895332848863805440 -518633904733182161182242308402184192 3121357523864324731348487533232128 3911153636164742268711896497520640 -796938798011896216651975657451945984 1895319321720619270669235845595136 7437753551410466480540807728201728 -616683979397699190018830151310114816 9279241091640023762823278862794752 7777954359427748564766969332498432 -387214851347222308236979680747454464 6704803444219986951550540795871232 2032253803544530385197032789770240 -923221550400276604232287635967574016 5401013863148110877706183279378432 6064768995610249996252818404540416 -205131778330289096732053697397260288 9045979790791392134961493937487872 3613762791739416489712918659596288 -450828033912521575875065185931624448 3516466461732168934255310768439296 9141993000887322620493796133044224 -923085010524307762062509821248143360 7523656978740102936143688129052672 7476059158824123467526921953214464 -275323172560084540152609005805502464 6426852417412114033871260110290944 7147957910972237233374892432293888 -32464778306528522784689124854988800 569136200807614940683541543911424 807533029974071808389731623895040 -421254322878576080179300862793875456 8203893871631050743916565465399296 4020282742980001636926774635921408 -928665119493216885732250878430150656 2502471475746420972903141109399552 3062524919009125608505748540620800 -879051313858733912775732422462406656 5480874987677130747568922774470656 7238704553592923527883041699528704 -65664608810552550032257162565124096 222472995290055119525954128445440 4834449253405278712619769035489280 -611925182410259044065999039970148352 257651815886511467399114207002624 2000623477789155584954827223859200 -605310034632243859991862100283621376 34416121332157725218967650304 1957921657942243350467866003505152 -883241921428936051647191594873913344 3273461509204880953446662183845888 4891223738366331816664758231236608 -315878704755945691125637495964827648 64059540056064752947711795265536 5224689085548339994153726012030976 -15114810850489556861820565876375552 8972942867594344250850105653985280 309774996187713987701938556239872 -937179939637686045737848287417860096 8561325333261225785223146876436480 5305951391722907904938704654827520 -115935300404050230583607038545231872 4996835401517901710639303137165312 4057113151032516632796198309199872 -810410592756284114740009903023194112 9791653274276964295801964551208960 6299016671681487349032695296425984 -218897217759095865550492566315597824 291654085381621324565871304114176 529763658014956087159296853278720 -222139512472176602249515136024838144 8703873009202088013336497203707904 5166991672631661871876182842015744 -915559674486452549219212531226116096 8364566825627291279403843328147456 6547182708219497336427131736948736 -578036301869060941546703003662155776 6309449045076260013682565125767168 9287150535492461396511314436685824 -972495661629354865584918540161384448 9816787085659854075818103481040896 6068260587229343862804477246439424 -80335479948817219558874322669928448 1946160281615064516294561666957312 247136899089546598300554503389184 -719373121707872357688880347501035520 1707236217914447459993118178279424 5818050613233873995592008760033280 -575915565045596938313876657911365632 3731311089473668912184538861404160 9554016413750888444580574873518080 -520560432563568782282009425907548160 4372311150039390254786955723145216 246536380578126876631243763482624 -606327337875030515066831751503413248 6497107740584691785437586021941248 6051361909598728844001993375612928 -182422113847583266846643033724682240 3772705797890006193345623480074240 200597577853909100890246061490176 -101606184426424398399371549268246528 3002986121836470709990007832051712 2665598483998575329117812773879808 -631351894498807050722107969744404480 4407247643968052161478801190027264 5147760907610731805603466477305856 -446999759160409240470842550851207168 9878925198675872983599692581437440 4810001815071748021916682086776832 -42467544268730886619293144934514688 2766108727995503935046043838709760 1807581164690814421938138135920640 -934779867640798850419100904188805120 3657479875160455593808360198111232 8298659174638769930813465107103744 -678288712261009842968728534530392064 4164274606941972708854737066262528 6496990980560915691682682632142848 -427209652745939471647786186640982016 9881958693510408995585558684106752 1946325893501800947952129977352192 -166982852344730226922494754371403776 6110340713935077082734580000096256 4541853803946288316945431089119232 -406055022587675544780855799678238720 9283351918826930030313507265708032 4164037058886600390004755191037952 -513000037916278631976080671665815552 3074564782034126395090152961605632 2232237140963052295293057816854528 -269562154896729111659660289935147008 6774483721690931887385798110085120 6236457690234127882646829209223168 -827283932117926713370968959249022976 8094978764999358363577081307070464 2207620021293410525521822900813824 -593747830352803236850008044286771200 1761369042273243130943367901347840 9505509278895640182869123970105344 -6487218226076948208572376180326400 9008072345134005306694337382318080 8416539698608827733768516845699072 -615432246844029044544336790412066816 5198732740896381180718653533847552 5969203038625641544330433680900096 -453189520328531862076722636375719936 5717314452400341605979315637321728 3383862631243251593909622940893184 -10331551782011040649027623724253184 805458511010175648998348420022272 3360572175152486627891940287315968 -187430872640759882431802491334033408 845191099910982692773633233780736 6972288768306409681133599822184448 -565540403250831291095549044867465216 3124962180636015646347197820174336 36902595923892910366780410560512 -112844726884210046337516476250980352 1819133889023167863406595749707776 8479148196588226770265240556797952 -779111808198825857482146722204352512 250436802703271369759727900688384 8411220808473480674848134511198208 -128932981122720058501340284737028096 7902372763037941953473003244224512 3782350734223171199811344530407424 -559587534241871054755896836552130560 8480512254286544122408697547718656 116336877552895174064904278638592 -949588346757947139739921168560291840 3366139817780785923364105956098048 2907085619181205317533917870292992 -446106774798164472589459955940065280 4966885672842358254035064296833024 7329113796868507614717397755232256 -396588716102619521273985537337720832 336223330266415107277522829574144 9793319590618948617179534649720832 -980492556673748442023589143130406912 1226726882419265830450030901723136 1654418660751239972152169023406080 -325071412689986224976816526675935232 7925514433092910831157538187116544 3055517254506056112891674889289728 -766392045362958730346689094951632896 3029580108947081411053850984448000 5477122934119820717238811478720512 -414735525484002649126869464061575168 6382322832430406683955649165918208 957818133578357612278390330490880 -595962153374244201418344688168992768 6800181893159412097925506421227520 3228041714576351687489665785397248 -791357918137247101786344400118349824 7335355292584278258050101604777984 2018601819572632417307106020950016 -197399464380096228743551198768922624 1436860009457658921163197989781504 9825921980178967544451497837199360 -680759432695879119612898681232031744 4191595208790996538021670996148224 873134019732910886648658157109248 -976412033618751566437428281131139072 5771380231317934315438896094117888 8260584448515024855302490785054720 -794948371108439285638924766967496704 338572241903468278791662704001024 9281160756454896264499627934351360 -573695247004938866521751742043914240 6102362354958863492064015340797952 5002481677760413893919295122964480 -788642329969243643937252260918067200 3960318211223861529370143336955904 3424045400655694799455571408846848 -786395111839336258330439412539719680 4605375687918533157343120479748096 4433725933273251550193356892012544 -739842536572413625479042227603767296 670853645033370462816446768480256 1444157170098007136729626755203072 -668447195307658028541826449272733696 7456209093822738554763169004257280 689725139126045775628549014683648 -79397575458799306911286669013417984 2830511836862468790269764847009792 5612362275662872846476383119998976 -156421257624599857239757204018429952 718095604906214155349219361161216 4996539619298184485777640785969152 -257689303242056317038710540174622720 8124911678585402570220870997901312 9106089534984402709992180767784960 -822128957491987855759170359921737728 4600580676687629512016093090152448 2206280239100413286437989363220480 -68020684171537203146737587113164800 1947804172215626508458144953270272 8892973551773897764431675118321664 -764849611581732675433333074731991040 7995587235644702199140313762627584 4407480657403719993680672076070912 -666029080277378164436500657704271872 2990476544621994174339963919794176 7055763772247112693724501633925120 -871560840149257686231857689119424512 740219323478831986985753850675200 8718691532641595374113741437140992 -169999741493889030619462840837210112 1323890734868329742268807048593408 5829859931158016674569435712847872 -615815914874885016183021644063703040 7844931982102196884551627752603648 4586236411214541116920869492359168 -166563779886613127279372340880736256 5315097237373655366625042551013376 5655418770458102449525082061537280 -584953911656595687211664213020770304 2904149326117317536742848625377280 4517096192144379895113992240103424 -235667487122596199752480536974589952 9525435934353419989290973763993600 7446573464616874577490025035857920 -343043914905587569929773121166901248 7140953014208087796159744527302656 521703911499463649712167016464384 -250712532366329103678377612843941888 9663518201803607265705257781428224 157371542913498207789886702878720 -644310605033991339742466929128898560 5476901713012529303168932655398912 4484483576033824427352263359463424 -546868580646913442335883120420585472 17169246452315630220788547715072 7694534479618595195474247371718656 -225386117322213555458862661528190976 4092163391649119043335928728780800 3738942390526363602323631283109888 -267184304344376240138733646654734336 4841278489708029013228952896929792 7224182664331309128190323693977600 -632807451426857957317673264271589376 7360371630123731838117240775901184 8750030865551114868152896155811840 -691326571737112627804678865343741952 6257431223914918651622683492483072 2341170843378883894424244011925504 -680804828522093310341422308135010304 4026776839616472484439631784312832 17870198039432274750756163158016 -889737435101011594501805330319540224 9116689016974490121932571550941184 8976159343563381404425512846098432 -522472998225466092049452372225687552 7186909362707729511535898741702656 1917824938065862626697408187203584 -793278672229800630973913026571272192 3431422462888181757225822641455104 5286111544114820226235694940422144 -503828947982268690542060877314523136 2138637900042960926011458716696576 3704215116564645206586462295818240 -769380425906011182372072451997696000 7940422355593370355715830095806464 2204782412894897786201701636636672 -149156489131291855746045639055638528 6279464484260632111793205575417856 3532598068018516406745262396014592 -855389984534174839951428947562987520 2214219800893156985668972616613888 481741756833053094673206944464896 -339572042812525953461703686790053888 536602391786517791733072860807168 5377924446683985323521237078507520 -665016321033225109099897204408057856 5104549049002180174659265543274496 3907209807062339858579281491787776 -366919367935749219236928211912753152 1746518730709604949180472933482496 4211393190624372713950874785808384 -43735498642511446182136738996027392 5388720482831588822862533142511616 9503835512899277532908231776534528 -195265858796320802559795157750775808 1560388014683722670681908830011392 3706793870244335311149633581875200 -160920781056998073670050642516770816 4400491990890686023831622000836608 955605702932016337598424704614400 -887918476032212157244433920243531776 6639392476939306033165041567531008 3100327148321779900120043366645760 -303027129454152380194142074500546560 1835877064701944647824057816842240 1728287436554311672522186589995008 -434296964515260404820387764358873088 1066293720739165634946570142089216 4511523018694855852305891809296384 -864055084976523349943271924388855808 7151536519252998747853867758649344 8216842982130265736668100610228224 -683613494214217952527463672117723136 2154464403168437486168864783859712 9555883011405882820077908148617216 -311608993175077730924248382308352000 8839624977665628010179181477363712 5955340671114860530042191726247936 -848976394723576956636129973736833024 3623557584035769300293654767730688 1384632579937327517149862947717120 -378159003336517616864063577198166016 1700687862918456804835131941453824 8303043101945617351383066425163776 -745029195742995340542233560003641344 4552756046535315719191220266729472 8050350017972292091075496245198848 -505044966491468741860486240649871360 2028432979106788345888600001347584 633686163063370797636221409427456 -768687629300951471998813579293753344 907477199207615688602437193564160 8423101892143424366122559294406656 -428963802744899953713293907497844736 9174325698160110257106869553201152 4804367615143669874741716283555840 -867944240054506829545724168670019584 4292420741057778080701808753246208 7976482384218282062876816760111104 -753757002169444642361931558622855168 7166978221780826957142970079379456 7817278770281933631060640570277888 -671744219211123221264055278109720576 6130044808185965629075817962143744 3447657131850628847060732845490176 -664320284544259146026382862258798592 6464659724741301790427236532224000 5143840816721647118830087492861952 -596044638814916527384513779236601856 1713850066387652416125972680540160 4122960461734440396039452182446080 -320993332393083707856960214165094400 9519423183125190543705514407100416 3380110338193850314821592915378176 -991201725321775399801025982046928896 2628920676677077095746129773985792 2426732284540722657956862627938304 -676953086331137690223334714534526976 4836628870494066846166281562882048 5040328912112481189821329289773056 -393621576161944176083400999888224256 4264069373017020932037809199382528 8129395038109812431919293667475456 -704102658319924042164012884934262784 4170660137708821625939551613616128 508996349435738528782750029185024 -97743699716024199582194939488894976 7791422257001022865504504761024512 1613092112197461143405351042809856 -710170651021477016582764712238776320 9325561606451970832666717438607360 5670536987509510264438825313894400 -746231534100839046647712235634294784 3125191863017258365519220720009216 9735526337554098531838347496652800 -571492612540068996107206912221642752 1248198357024384817081738470621184 1712096325073279280636838293798912 -571718793919873747076858050003337216 7181795603171274951591885445005312 759017367828027864973532553281536 -61336708558950014746149103989686272 4955739546964937712892201582723072 3047584387106475831749136649027584 -936474738625790174179072244042432512 6977171803161936852062592036765696 2466593482653285986755931843592192 -848585879027022012916857415533592576 8614943676435011003064413142908928 9468180081013033230380882039144448 -585641216845891388311846666289283072 3216582064257451649390499248209920 9237204473265124366856834351366144 -361218992436317105555903174672384000 3439395585790667870745577350234112 5025367059732528150649067016290304 -139824625116740998857169225757229056 4170825413406506271341590551199744 7216142007846201131538801317904384 -966006926607206385351429886543134720 2975425681573137808228440113938432 1067050187902290050213026606350336 -765071323338431607741920155101298688 5778499682234236505813438955520000 6349726501826374434369481107046400 -395544617056581781659859652867784704 5442423787143582543564722889818112 4050888795833858238158510745452544 -195748543560491644311961666639101952 1073272100789643114568612470325248 4543124985681685827872973503070208 -117901938136357253356181394202558464 759481824420898561846437621006336 7709242934375074856906184730869760 -718663749810308517724194798898774016 5129619892102270592584199333478400 5821363127401620709609702558793728 -901949363611611787765688200587116544 3550257781164491367920980694401024 1053104326729977653927963678212096 -688789332349816215870051935640879104 7716088941273358614721454655143936 4968387821803190579335899627126784 -719042992843375044200291700091912192 5901410949459201800176273381654528 7637847941503881444101340142764032 -875283050996096729577316886996058112 9536172056995612791366606928216064 5336398573181359648751381848784896 -575569112690321675274335786687791104 1315626384284508696255109521211392 1042521797967907427819798766026752 -542357513573924238866588908384157696 6548023019047058587030561205780480 2291732904132443091972446377476096 -341160649150657366630413752854380544 2086838889961924316145250130198528 5049506017752594659839696036691968 -988227495108505399043548729319620608 8882475819988015440382122157670400 7896201281605239457097605583994880 -243761320349698320038700614665895936 2009064222572715985331202920808448 7350636260138954050099963758641152 -740792102468539594083953472786399232 4994611703469549724181899700600832 5080503683817104601332229842403328 -320153276242802808941528607319130112 3041221424876177072834855483473920 9673319544249781275752488220229632 -646406178031125853892937480111390720 5319299377798054315524798445256704 6601756347654807383079789604634624 -839697030302936681965099201928888320 7170349604101882369061470884331520 88057407291631447826008161386496 -908369802467912445007861934047887360 8449468319861310115233592678285312 7209136590656313239585530633519104 -386566579371973561842129289384820736 5804267995362864299891644092645376 6878338533495329636162818032009216 -6908828517872813872923702733045760 6505036911508892675489204084408320 1254172466073925809716093568155648 -78212642959881595816924537449086976 436887662389712880271414291070976 2460546431920364304270593208877056 -666312348029844456535172352315490304 5520793675454265453479142986088448 8612074682118268073187604959330304 -937152456194117721410339206456147968 7351468234017229561425095896858624 9394512341784188800468513944764416 -226055992117451369109619862690332672 8510756767376084773864459036786688 6841120270067777336369172220739584 -211165035229781368754351808899448832 4934474754922695706412209852645376 4721796188113237462866413175701504 -417555192717836302667593261808353280 566150490961061925978975170985984 2079028202896531968548009423142912 -963725159761463346128833166935326720 4451362875331513089470536546779136 6383255131925978635697761065893888 -277069610596961463683967677773119488 9384701049064509509989052828352512 4987129363532097043277645178994688 -827940609825463698512958643813482496 6558453802088702234081945515458560 853872541171854346445501694476288 -884224776246550878956412678979977216 4723036932585542498109623948541952 3975473348067137000012347554660352 -467498822959363605259373887505825792 4451815673077913969846575666561024 1097689780343011634806797774094336 -498376055345444166225709385591554048 918302754643288812614023490043904 9460517779381739857005031129612288 -496088288105145814507540943770484736 6650325239674537249078980722556928 8082707234743114450012465272979456 -871636901487464590214193566267211776 285344927101950168658645524414464 30391647412979730138911960203264 -872098328319081281743271305425190912 2290559111456789739793619691241472 6102439025245952970644825114148864 -270660015015964312789834154805035008 4628528801903169166262109487497216 5590347132117114666429844855717888 -850117809670495913723617218649915392 5047129585491323344474691935928320 6511036679209104021476558086602752 -673499255586528602814883160764973056 2532653815651733937123296234438656 8177213316162840316813305570131968 -702154603890275352125493296484057088 3808243260082367286985119043158016 3825066030396134672077921630289920 -951344175204345066254974663130087424 8541903026082466846391157749972992 3861887139030373843748762719092736 -152807689162277632258129822968971264 6587950313945683703683430588874752 4483427918818274365955542154739712 -798506846782761052522277885379084288 5581597468029253478037697253605376 5029536834903440583266576870932480 -914517531604714257506911151642902528 5950136580728580026407040128647168 1629300614449137549646853501353984 -734687647362032816140889619775356928 9205985745754718522208122916831232 5359060129021070661761889650868224 -430921843823618178578013663751307264 6753723264113857225526232465014784 9912117947661832885541689507184640 -410799816921320747358961146582269952 5430710094450812601153041857511424 6251658977218290747583950133133312 -623067887603405555510074525477765120 1499556442073747015449398835412992 9744891097086937871809152257359872 -876175337753061380652640070803652608 2696767311241508712736549475713024 7651809062749295314874913832042496 -1847454965016546157920243719077888 7563405925269103442714380650676224 2010273221966645637902988056985600 -891108237116483142130601457386258432 742839198433457327233628140208128 8730075327846640505633841185030144 -155336399066558030738232946196480000 6360458660873394162343424626262016 3768021453994364094163175046381568 -924463811268879177775277642851811328 7072478381949572073114817022394368 2120159380783412915748297827680256 -910392276438560642454551462714277888 6388467223072489921821542952468480 9441611450096568822223849648029696 -527803107968277240085151809800241152 8884597321132297645147617780301824 9589824850022260206244390936510464 -198759240013790774506355669606596608 5976464507458705526316387969007616 325569462539730468723445383299072 -542759119292689372130698231445192704 8849952380312584246145034571743232 1813134637092080179156200099676160 -900953268300723818699832225857273856 5130798931613089632974045903323136 5554807979822252741010294604562432 -739564532503921436743531254318628864 1641264915503581506975752318353408 6150273404568824034530455921360896 -126525688202491608144321134637088768 4387673841322398121020793185894400 515080035974470681369079736958976 -219395024035180057757482893646495744 7477951989206734776717712050618368 177977807958213816780529629921280 -665944139498318038300599261113352192 6827728060393925776494057375137792 3193383426411866256610973263593472 -894746798413759885048585790399971328 4865042293499214434217480819834880 3613064216446759182070182427230208 -414962273963017273908523151623454720 5761557540766756338105421446250496 949847324005898776058735362048000 -995916953986429740279465160971649024 9935024465874563447974142224105472 9423010259308999509556196630593536 -835884941330577074940544655466430464 790814874300389386508362869374976 8482967670164932193654611162169344 -493215506953127118853459663306883072 7881507238016094648887452496822272 8586872248754900989973250432827392 -619699757198630570652207603519586304 2055032375766372099221875060637696 1914308836105971038407866982596608 -503573102022813422403876796711829504 7188297522436118519316595712458752 2641169125680058754317588751187968 -690958134863923996833724604925083648 1713825818510037619622961481777152 4950331847263633030561021195976704 -129947643625833487844034249725313024 8314591078345663390263317096300544 4894303005711146038315845588877312 -46238470111361211826840955426701312 6618427095971117505519028877131776 2256937120305262375747927555440640 -528195296592254125720916742031540224 3992072857168204812417619613188096 4565021318336823562099379801161728 -368133828378360077675778281436086272 6435788897248377726040911825076224 947946122941474145895494780452864 -748022004958652748260154975048433664 3176407406116055304412859356676096 2857069928010432224702812330655744 -949168547409534816549193989727715328 6635267665366251800534490340655104 5319088627390003177860759258398720 -392030641316679178700231320216272896 7932158434843150645001690210631680 8432209376549132166105065815277568 -271314412516500040467648205285228544 6425006943788085669194002826526720 5793634083438593649555848717926400 -22741533223970616417133005453131776 6849023760974415245337214494703616 1682170687666368692148877196787712 -475530994684956002442392625928470528 3597260197370524266850560841351168 251888045881885746824875165614080 -856016602164098951893020411661647872 3589752490477486217288157170237440 8585747983372726571886995910426624 -925051542285676526513056392169914368 4695524312646920593164171384717312 9992389477631978819057613153501184 -479544768600663906933493715756384256 741911745171353084899649755545600 4917430583921564167076971007705088 -807907981210234407141937852387950592 5349049001688246010963735349297152 8911434826110345477665205367341056 -141163360584708939797928125449371648 5484230635597516548138675558416384 4847621835377378864477072951083008 -523273218515873156001381661391454208 3910990480403162096232479103909888 9757145732422985068186844696412160 -7203388719075845097098192680386560 8518047915158615332586285510426624 5543506473265245660548912941891584 -159077898331226452300081521005428736 4669509187381375754048760843337728 489927912793501750492470179790848 -36071160345603994706270941677092864 4741769139559445498605941681029120 9048265196853643987029605467815936 -398407893548118736971889322267508736 9725746264986433097016211964690432 6738270504444208070218384775577600 -892104954726732173416226647158292480 453281290287286490939535822684160 5553638129218897481964618455711744 -290725341993408289707675625734537216 2433841548743841613437847669309440 8124012524179822338133645976403968 -17004791775172684946235467434557440 1506775452584690218842825229860864 1928516038802379065983789661421568 -874843768313219825776315671659937792 3464247659252008629007994958381056 486650715854844892931621790941184 -292040055038420913964988892805332992 8948827526515340311187695979200512 3413868402025366680134954585686016 -739681710966537161273577564901736448 3491196619110847263115292230811648 4554076700308785854553752611061760 -974080653895546561820421387458707456 3511640618741301999495000847548416 7797594347847400013812769801371648 -528462216623746637009839871794085888 1512880717563280154541740403982336 7291971687958918249463841848033280 -769663229000066575800932950326902784 6408235938923740956577433670123520 1846275402659405176057850096517120 -474261190567426615616354647862673408 1032191870126535964739906394128384 6626388426545229506749800736882688 -15387494959788770805704694838591488 4025701660932735724703924940177408 9788070684086552247284759269474304 -244123626177584725448054848215842816 9872192359731974265013396375076864 4654087741508283950604367821799424 -410455558122161524842146158774059008 6337114222700141801659652506648576 7680385877955700453406105321603072 -256776169230541433826904438260891648 8935315822811321622004785909596160 1907060188087117791961606025904128 -179051710440762002701827751555366912 8707230939772382480353145886081024 7311070858059959163288982262906880 -112994361567340446576060630806036480 4953097315338148290790288462446592 7906991845239438101287516858482688 -971834000104841446333036978694520832 9710068270015518425277964994215936 2233375111401930412395884712034304 -79805164241943050547443127780638720 2207374289845321101483685563072512 2127230685947387651807644577955840 -750275146957452442206105060908204032 2553292080684967200020821845213184 6355188528956455586438669729267712 -222773545171945713496929590008872960 7202835714070520072147139192422400 2102026493412261345338099306070016 -711259813891524030837626296741134336 3559357551848437568302225723228160 1209260702385944720622324191068160 -889038542111003856023990773271756800 2741229812392875049921815848681472 4508188930743864562909708137005056 -123863391844067892209039471045246976 8071977811150696976722680032002048 2338652485241197973096155458830336 -335331577158217971571240216804982784 4488817675194868190359856072359936 273513660816367996747144346206208 -26477852535283124475353446773424128 8425364547036640602011740724527104 7711887476279478838472358307561472 -475709120948951716803511705646661632 9680327672318984011815914943021056 9126030851863047694145071951642624 -642430545577681135267278186619076608 7322524296022290422190628226990080 3765879169664781016682416473899008 -570769231393627393843081206741073920 3381060596432184687400064886243328 3814681411309229636447879395540992 -161552444764328374488973511254605824 3679904564480137743369719632625664 8839421666150516701807878300762112 -524641782189652511119809328514596864 7254153104070481195277345536081920 3853214875915525022172281305038848 -226834010283377113750818298555006976 7510068676870664724769439020482560 9318479276430487766156622056914944 -378009184022233507443726510425374720 5046327629803979202207176791687168 3447674396692407814501100484034560 -406696600863359676967221220356390912 3211551443723008801562742770106368 4150469864181863678027565117734912 -826184416706382287510479489590099968 126431550750243933990494048092160 4082036741590329577550929469636608 -514185782576373110840418780124807168 802592047992671652525001171533824 8828855052973389749464839380533248 -842367427221387413915424358897025024 8161095001965860007693761780908032 3011956792114825815336393105211392 -529008468298522946524383165540204544 2151750910803531349525197645414400 5187570915955019820395392640483328 -623722399049966125387429660799795200 4248237653736493835758073269977088 9054499938264232127227750705528832 -474414484557685376219559449826689024 928570641334121341663517679288320 3473609170613534770393522372608000 -540736384004964867324055571350421504 2983961990227837182228667868119040 6553419690838442797535905980612608 -923449313306734958107465119457869824 3619407973479246664333279541329920 9216175437822179958099875496722432 -155521975365688892361267283073433600 8220297262513030392813673059975168 5460791801781679254045478363332608 -342615429957889117377708920194203648 989656646158227965987911286915072 8367575490798243159510443106500608 -9855434816541585887449811263684608 1797504477863931237677699554082816 4749866011626368970614921907666944 -495976503367378688899753745804427264 6606928737456682620253520927916032 161700459652021304197913411321856 -855015644652410116528999388776759296 5525299035543106778637516977209344 389161675461218315810392204378112 -196232429228459215366273376855261184 6891846046477722271099021741260800 7725862360889416588677430493839360 -427149575226154654155499978016948224 5405461199332795765574876553805824 8233453359479859662907011693019136 -682348630058480047545686755138076672 6271741125470669481961799272103936 5401391023749869372297645259751424 -378711677123883461050616443188543488 1131211224855616599229240835047424 2849354361168726586533816821612544 -330924057627011526317388778205872128 9666921438265640901630963004473344 9612859180743977050674594108669952 -48671641633116957246512485277630464 4604670060520781629162604629852160 2592596828880035490728643741614080 -568223702819815631925192591784542208 7436626969645852067318614181543936 4161392271385279724008984316739584 -784423397509280549910255654320209920 5439287080732991055532287707840512 2879200668008027827751743733628928 -549230808218452681089486209649999872 7614982360329399016525432795168768 8233005651959641389433754394558464 -113814496105077252590729016893243392 1688904642635825265054472069971968 9281287744633410397448869857198080 -609142428134816400458641094276546560 9993337878397391643948334744338432 5172593350697273015534049908752384 -429830499817489340417009691580694528 4713041277190208568650612627996672 8268708334594280530587330510061568 -568067741259939509512162207514755072 3848098185926343328001306390429696 3729105713984834431763004061122560 -527871850387291011670516624642801664 3589514357583731845226080885538816 1476269449071097068588276956266496 -16864205069199694116543963271790592 1157227992677283759534503693910016 5364830186712334548481360802086912 -219799256228385241151849240782176256 6403399912272102928298652909699072 5085827942059869331760511067357184 -470059201153177779830283366263947264 8573602484930830989101510506315776 6459590210326428225431911853457408 -271295694728019763902865588241825792 9565191777982733998486909135880192 8740052045163958570834694831603712 -761222030500653128121363356012511232 2052897453551445831025474247065600 9301630981103939270814285055393792 -718724659421195248279315678786224128 2817147264428473573347545338347520 4785095777998385302655012505124864 -104849942435445949320755287229988864 8278642146889612835164210119835648 1849475490320131697136526497415168 -951786417438934953641956623131869184 4363286968953705623757076249444352 2619529282210724226878170499907584 -673402049956856643224136484785225728 5116683502667892503578155289673728 6621050033412158300853508738383872 -647511742907489561593056825159188480 8461816732269032898344838781468672 7590494958188045892872910298677248 -265172829300105935958683147822956544 7696908157954798822488255701712896 8228899784569433068419057836883968 -562501462573445726121377699951804416 5053698651550942610115461174525952 4826860799066749890920100678074368 -580096634065095114021407377158307840 1015816735211313149736000398819328 5583486014045686013403615052431360 -232157213165003144470344759884382208 9792351019134322865803009076494336 1205392504323357387105162770776064 -895337378581967397834954184830484480 6546856232378330146317945148538880 4632871980909074733969222295093248 -670525555517302532835212917416656896 7001615913493456300493174890037248 7671684916830841726602379075256320 -663081552941910326608490669235240960 3249803746088899641698752219054080 2287458146004065665170571865882624 -914147238857889487975333626585808896 3048784263609788817767928896159744 4098197873269573551534730656088064 -536324167584058223573253962747346944 6791596936797114554381806482751488 5988944898521749776333574827409408 -115569651946522609939269909884174336 4828251299752869186714500430036992 8155181652275079004069938361008128 -700474895977570511721849098174726144 5230596600513160250288219703214080 6667632169077645988687497895346176 -755750693957135373714784728077303808 45697185220471094986472175960064 4040129951254533176400618754932736 -370647032312795129099256528111665152 2032753365502103204885625844006912 2970566936036781967485496721408000 -526727879971580207052428241664999424 5479861771917436088650584052203520 8111617479594617521836558726987776 -758716036449529193667021541186994176 3497717293821224695854277274370048 3462956982227913905480794288160768 -588799254585153949644204110004617216 7756160318769443974481150927175680 7582490096312011849966041583058944 -729218784096952064544846128927997952 9747603169521549289288997307154432 1938572149651736840184749617053696 -69891701940836933508187414121676800 4417678080059205234753693890379776 6371937319943768225498200824348672 -50894233285693301557401979401011200 485325355590623672491138013462528 1376078664146970512630178855780352 -353631847525900519981551761699635200 3967333256312052115013907632881664 9425707882187132834427811372466176 -991778110069688192812101107495993344 6870060609888497679563022437187584 945284928661378278427284077543424 -612225364068100788801140674483191808 7296982042525399140669826296446976 9571899114884942130379118755184640 -589080070994567066359568778752163840 8245042308254885511115919092350976 8276848635161339206411989926543360 -879813363241602647377091057546166272 188273107814865308777503241797632 4298776873808808779952459771543552 -800991435995475192815053648758308864 9654319318224884457875823059271680 2183008889906298713790811885010944 -76371462446547659517663687183695872 4988950900892273545981537638416384 8589697050153056228492736796295168 -204696371341363964809075946199973888 71807722404787646239376179986432 4320004161220799348109639216529408 -97391067084923350529454964547256320 580582729459981393271023294480384 1431571473702294152864833566932992 -859050153866519556523282985478258688 4323637516002500168335594335764480 3764507772822899684653058765094912 -35008424931308963904411401401139200 5810039440700109425515812140089344 8062985872598033641934268085043200 -108164581829318356981952234456612864 6366714035121113791580946653249536 1652862931913818576771198828412928 -864890303461135145871638675152961536 3699771383210790448995037081501696 2309913736152971513252982950985728 -853046767198407210080233960350154752 7533531399403974217324294062473216 7319681104599559055482453099544576 -218525811818844418821984061239590912 1006409385322662260354826501095424 2087505310261282711536611627106304 -273152709538588664954145984049315840 7845456712964820069593112698159104 7942805539107412609301058131329024 -156689458150495803752834644431601664 9474211047342379127601380242489344 4361621836102338355312377248874496 -454064024903984920799296137107341312 7243014102419825983983237780733952 2099844062486386150164101257494528 -501687173753085391031857891231399936 4226567965551474090840412284518400 8621921256730306338285334543990784 -326153165240071620249788430877196288 9505037061034628799344002736324608 214726883726855158638262771253248 -109120912125720896748051232232308736 6284868103751125088575100978987008 3018391116436817195751955662635008 -183499024736664897452636654765342720 6214616366543112955863026171379712 5640577939497012601455643042250752 -734791187233665217679028123498184704 6807189632836566573607899304558592 6717186110034234103641977946898432 -833497467277157828736537595297660928 6319998586805531379423466907238400 3931400318667440802201828254023680 -470919917616460237025594310622445568 3614274382465041087921445553569792 5862970848957245177308884450148352 -32059061812389685325188411294744576 4272868630415206439931449587007488 373973220052704253357986469117952 -918074452437650108851245261602684928 3884904177282608710024995211837440 4703766490795262064078602350100480 -95930597040608169690885385831317504 4606275060293325333764082847711232 5202367765861908485769568618283008 -967444270120361350098328968618835968 6253735858662794914146148667097088 3969669474511973555223980584992768 -320025081828568190489321610063904768 3043057419501858602523229658546176 2918276773069128233598463145672704 -844272495462825359422228874712317952 1030378179970023916277511569276928 4041483251215135881104096581648384 -750718959068793801197661813552971776 6459647973215618144764758581051392 9968281773496452882527334415990784 -511894282423550444741502461131358208 627116040890212186261514799284224 777957649667399554071785172369408 -71593227215155155345085519729000448 2902586009487000453367531917279232 5854741956793440245946412024463360 -213400435677051145272626742139289600 9745095271321665721536914609143808 2819103142924580558934510414069760 -244117685283451379559907806477811712 2496646473503678453675790631436288 5032241116838006228215277570490368 -301754958029124138199132301825146880 5312770139011938163362499355738112 7397574231272284482951609300549632 -309651932633580606502805958272483328 4076801466388765163348306736185344 9192371292592562919532216574803968 -872519632523807496717630754483339264 2953499815816078367514189759512576 6435702425587739402190234180386816 -438630724995321811735742956708036608 6148199564087858468588878865367040 2455506277132168311796371388628992 -768146833771713073302206512961159168 7020400435418431775744956800434176 1014974640636701518308487972519936 -528288551397897887499294225693933568 8588318292644730459231792379461632 8378979023836487740841702214074368 -583287347621316189753403770627162112 9013164635293205357207108221665280 4367935984858818574558558771216384 -512451669355725919273729275149156352 7466334072249490893052694157590528 5755635396665385249190140012658688 -151469489663304687745653709188628480 589864494234149798595641160499200 501467843939348475941154034024448 -482982222179024143834044141769064448 5167570998042856939048702400528384 4001602525529559841833610855317504 -41678427495635941825442693886509056 1481301619965324772384252381626368 4581747863162785170965600759971840 -839596570829061041656941508290412544 1476553275594114660495819538432 541667400813588713367483027816448 -453578311267392921907989083018231808 3304744012462296680115831851450368 8553423415841449500126811648950272 -901087097361762801194571703238262784 6985862838588583473615612879568896 4013829314813774022128426945609728 -575329355589835441545752956375138304 24693200462735917127520130957312 8714102857023080585120135566589952 -386431148084224391469415409079287808 2472402555497234303322107112587264 7922272435163505285168435864535040 -856061502201687551035453815509745664 1232112509434465057706523108573184 8520077860520900312887743324618752 -428294810956227534857186908471033856 1342951278208733910167524881727488 6881693641071301482117848706842624 -508914624130013801017954488815714304 9051550640149450401178908543156224 950033814326684101761218138603520 -821431172015132251325829860015734784 139857166529057928832182470574080 8197950928926327795837279783616512 -10891902261234301103572171521785856 6601781257149090711567787284758528 4351653444972867530099234848112640 -37554028345844092925549981942677504 2214934101429246327613691321647104 1556486086692759690800321135640576 -517729972360022944872548067109240832 790878504199855983547861807661056 3121717431833955129842939010744320 -946814188526221171681393088258899968 8654318968496125201896686466629632 5450432302449242556860919747444736 -198544365187696663601757030935691264 302275458873541465913294789279744 6193212411706763914660720521773056 -856361885515923894927445576820719616 9145443277837560896941471064653824 6632926040669770025890824765571072 -440323426959329042751529342315003904 5860830374398215433813119794675712 9767788999020939869991437951041536 -931764838360610883856157656859279360 6009321930937500978509029604065280 9256426029459914575448028661940224 -648215705434967603826248659389906944 9825427772514959737992497546133504 5749842383649723289702169873219584 -880777827218122986300521027951656960 9488684018724187803982512705765376 639871869978514943363155956334592 -620471731419751835010554762717298688 1664908724913529717441653328838656 6566528345111165643756806483214336 -952386225305310774388165190281592832 9196134869910238701244760987795456 6066006706828041059408649893445632 -422851142182495808120630127838101504 2750627038532776524904017870979072 8372655406843099762357975971266560 -976586481255566026627261269050130432 9846161343456776445010623598690304 7082294741924345176323869043064832 -52646077162516739640417934502789120 9449534107811877074299639151198208 8947080944764462738867547151532032 -674287292911742709086241173060714496 825398119315854944165099726700544 133484668440804976926825860038656 -593270704784841145162576818388074496 1014168064394129121803580370583552 7359943017290513951362259972259840 -611220405731728217623799071202344960 6982748273933355255672249631375360 7463967396867797442056424110686208 -810307539318187251105554593937883136 8075713362836469308022799875440640 2421270610465957803566220334596096 -846599184731153279764809814087041024 1650317202051868785026787717414912 3398172824494086976598024248098816 -471235069885024362514382401239515136 2144584835418774060341065045508096 6219702086633814001189694136647680 -559818974395506787169097061920407552 4761059081295032750091015232159744 9560671876297062206925207131652096 -772474099143660818740584457961472000 6796325726917290269570434655584256 2227538749716827834014948311171072 -324328946627309374487653022466834432 5365413058094755108103131016200192 9354979430887544612164436557299712 -336666978581503495747274624051707904 8488946677650933766942902345269248 6450038541400640579634464682934272 -302536219609095308039958196115210240 5126671390690258004870262662627328 6962130939537164622756569512148992 -60359713809534575724913861435850752 4636714400652938347237317126651904 4706954494432530496979762677809152 -233236152459359520458646236153511936 5966446740988124631778499342893056 9204623413495634252777584276275200 -972172491761250322075391573054455808 2064068034514256343096756331872256 1947793660074830563060396148654080 -9501006117162933891065349192810496 5912664743149896632379360466173952 6086751807635051259323896844779520 -243839011674950415657179224752521216 638286362442254076200833838481408 9762958976069881345049741630636032 -676646594051659618268942480911106048 3380959148684503227609850979549184 6992156541797028419606712634310656 -9930134689734300152133227489787904 1231571126196148833841496429953024 1372204731107796407533078013018112 -305430246113374490852771605759655936 7203334379575949345245872221323264 1973215365032218597626295233806336 -178470422541547111489180104346566656 383220714554083057703455951945728 7068613481208879244514400841760768 -347728009564763304613377455803072512 151586222096718093119033935134720 6744189477152547251174510203764736 -128462470738783671107391829405859840 1828645741436890318555406552530944 1685543985768166408630806809411584 -764350677397375917622653368596955136 1017926855390357864421173701378048 2493567365820257437095395254599680 -246173634507264802741045283554066432 2397237439815152649501489022107648 2726645449094708527754431189483520 -308256153428392016448048586639278080 5866063565000405320182975432753152 6423121645942964603031105463910400 -664640308833910234078606678833496064 947522414649543572502821312921600 9928888401420325144252950469672960 -284203406995468097755918818833596416 9703838138398720904717754584530944 3696650992986841366452118866624512 -23209982242801041638095750216810496 3167980272744647901087523156262912 6405130590803678954231091580370944 -843081159401239088167547335998439424 3775593986643123629965286540574720 2285509463856394830512960938442752 -507123669903608281714147253064564736 2322716291063304339375018727178240 2453619536385662002914204110028800 -944659237299521727636774793297002496 1348379599985731294017119821234176 3131769801713965990816358791643136 -516643087241905627122056299821400064 6647190043786377887879308918128640 3093452689010405227350135121379328 -828159266329410050409595019536105472 6254818892259221044886971491549184 3241954967950673745013912736104448 -708668673264933744190742908763111424 6129027432384760067999462900891648 9688121941844159199885615916122112 -783378472197091925990282727700561920 4434370112067872843701444224745472 1510426915009108742145998619410432 -891843392235053813035188673587445760 824155996354809849943659502370816 975880061063715174003638213279744 -422651705850738253980045426913443840 522189065342111739941429717237760 6459579788777769687703104337739776 -889107400465918578481649199146336256 4975239328842581050094652774940672 8433462025464823125813987530244096 -462284915281958302381863856450306048 3625886297325904661110942632771584 4763224096874974790952599968284672 -346713682289058400740421029817483264 8126820422948755078011461943951360 2499688371304344725657746231263232 -511515303612244314922463507769196544 8305339522103936152307578984988672 8680723484234429764646846280499200 -685448783834073831908483873644740608 9656910719243540011090441872080896 9974025615326367229280127218089984 -873988446649853505255853717190606848 2860866722539772564763475873628160 739069238336378756119275874811904 -800690850864584545064021583913287680 2182365890101668518635856860282880 8115089486937082590279833139281920 -254824493828934275878159387562344448 986847763397428430839014047612928 8483362269083715230805062737461248 -873464341739147806409525171842973696 3416797844087108826220469210316800 2411774807119081476822771666255872 -936625218895124204956136295461027840 1468123672938219090394136556077056 153835497360844709590120697692160 -110041014488718972556207517056630784 9835127808404382941957130083631104 6007182593926908970217497302138880 -835178855322239736807854031184592896 6042552978204072198037418843045888 7531599259121184378635812704616448 -547213834553463463246108312347869184 2704053502279756348661692601729024 6792129422823052413943076723097600 -945023692363143584548730066670977024 7572697827605875361868157277962240 4657817470677747558680019679051776 -995896165317493715486983517642948608 8328259050024174876538216743174144 7852056305275468584573710482014208 -987614430654006856968124259935191040 9726140762551641091898264621416448 2921629633331917322971186246713344 -814059369349228279018462392161927168 8296754725403032390295323330740224 6164474629744140315126364633038848 -603170898687662409721569720657772544 1595930080565046354214275287875584 6924609177115720204203408270295040 -157842781250429878152695546281721856 3256169815299583827794456242814976 9335297017878303424984775168884736 -885478879332923009366481530171424768 653851174040730488475950616936448 4008446171551434352994064848125952 -997981441743413501459414432706723840 3596629103457494385826720871612416 2349129139094282730706072961548288 -838255323747486131664235991511597056 6962889485194837841953738352230400 389565022692424146793365866807296 -735825681183881274431417860742971392 463115496889807392562052341956608 5793876026370955055702858144940032 -331291229490774234617977226701832192 7698067227849353522224523286413312 6306611175662777874101848355373056 -249851227638584477157145738876026880 1985204173375046405935732522745856 3416323392726767056160970378313728 -119900130677368791434282827195088896 9919203642470268358545409876951040 8332357708700311372084042503553024 -847264159440032899893753928885469184 1193685455424956752052123579973632 6881955208273636424464261439291392 -118403316153876368554357369836929024 7417153360583802543538240088965120 2514586162347028189671191008509952 -331932370708123136125391078567182336 6486436090642903883692738200207360 9568305223559988761971372916211712 -959962320373886243218479074481537024 4497379550303902902449646650523648 8499830111143223934373288111767552 -632282359993720092527496254084612096 9315194117120740699362610011701248 7039939651520924396415716729815040 -633979398924627602344181196721750016 3611191394069556605840921957761024 8890522914507931094941153861042176 -373475273350025292880908607377375232 9946313698066602930177121204568064 7897591820680499109974689854783488 -531617336211409827422970454304882688 4687008750392579774736581080907776 4514481748261604173371157799501824 -607218160116310199435464667582955520 7532754370077176762046288947576832 5474118126533857264111108730388480 -105725187091360109248035296412434432 2570551156030835055276061496442880 7689055823083908934063579478360064 -807843421952245818465701268415315968 8522041798085058549608640965246976 8844852786346549584375465159688192 -204180854034092647092593643524980736 3818807951373927363784179043008512 7393564115042310198423555214934016 -438658699012437005718820102718095360 5081721572714385683831520009125888 7125837128957172692212938507812864 -659965776185502872584881849258475520 5529242029553598540431037365747712 9241019705521408472348190817910784 -112822367423714495529131455228674048 8181262877379099501796492960595968 8293239189811060303854800560193536 -506094239056039193133681692781838336 3924274045980898063000658956517376 8270786847833467366127290669858816 -380757458437353218701407094745071616 817447738425166149201569190510592 3384424189857394672570489573998592 -546280615303243368763474280550760448 759048954849208947205453683621888 2812140808888536489881990936395776 -519899372798619323618710314488430592 5049193025946505641886376735539200 6757856675099379546209199883026432 -719910716923701859955376068071784448 4479110854320145025328965687967744 3510600206180801705562108726345728 -818087854098845911025686628161028096 1636150781388930192007506702630912 9761235322015698258323736446894080 -701265181609439244799424364776783872 744641857627636186034348069224448 5184779388628134354512795114930176 -876384571032332413431176133286559744 6783388236875405312693833243295744 1282667755602535606750823917289472 -369510141434584534223556418205646848 1343700406228292904396199869546496 6982991079585332050254213626724352 -390356354119026445957192980562444288 7452964093318936494618386632802304 7774648553467017638885650522439680 -606587815093876759137344662129344512 6034257768232581393112321922957312 5735040879455075906092686767030272 -998805601336029726972247150547697664 981866578116115890303622000410624 6132839054101187685298052203020288 -910008982740414768227301654297313280 2621462533862460009188547614474240 2958140063490092448145798561005568 -77311697128638908725045934279360512 4147785323132910777186615365206016 1596081031030915302297792994607104 -753186215723041986889848485299879936 2183263437287855509931955557761024 3255601791022928351130220331270144 -691365365569467397725191086398242816 8249719572417731531968489474490368 9859184447096298553843360211140608 -125826633881134865808474540532039680 2891467663644567831129001081962496 9117653176715861121667548009463808 -60666826093561641503902822307987456 9491100077156015952836771172057088 6561385402475690939555023113158656 -489650373924534669117256822857662464 8265620845467606829052770109095936 5418116604502640550460512731660288 -753486846394057136337661534987616256 9877627127252805376455623594475520 1387151803847042121209497656492032 -190194820486961219008080722477973504 4327892408920599285205871154429952 5311486208584001890897367406739456 -877857278022247901468403807721357312 3772866962696760522345173592571904 5429073926729250073867861763293184 -981790989778232432091182330516865024 4777374275077143298267536045375488 7744106612549223570621030473924608 -352759278109754133881633825666105344 4413620363077932243526330229981184 555214463188252423595989409988608 -370767397449041731446638989715439616 4221172876404191963557301621620736 8908406991078311689536523682709504 -245838766422562589047205264225206272 6836934026757857956949961736192000 1857503737354166301032956450308096 -70929745857363652176144312360239104 5722217152967394811565482656661504 5040194314618194370296568684216320 -425361314484502098712393719146872832 6029938219981591917902863043395584 166178762682775906500526789885952 -798232072938148577349989290796384256 536017397415580978101564311863296 8400813832714410836788113066426368 -824733296891218852387364760295833600 3247540658309670505595678469652480 6529349644889737221648957548003328 -702145448112563559431054626759114752 4540780926382926810244962242789376 2306100857220055676157855128354816 -397193570816533099704323387940667392 4388329001928771441974275597139968 7606108067491217687482326633676800 -998925683075139561353965073585930240 2105156296617712453921732311384064 8891375693094382748180464208445440 -283321539950573439825369502306009088 9692409069586256713846374977765376 4424290037326959043892011797053440 -64279387798590733876983635367690240 5828132069515941292791450302414848 7299140956259583292266798016102400 -901241068706857326820781679269904384 3387814849497933623372654378483712 3393472188987093917725327211102208 -125189190306084143333180226398060544 41878299534561550530543597125632 3954945724345659736025104574840832 -855621283911841704768002634272473088 9935268564079759848594379947114496 216177018588936850349308847849472 -817168971349825225286811812785815552 7006696194803281513514491977924608 2578902871675026118585585865064448 -160460916736917967951945434587463680 749581534846167449784516492656640 941489636945442698477568276824064 -973779758537575342067568214745808896 7367262399516921174861978206732288 9946793691009609099784645490245632 -442443517702848754630065426360434688 2694468900128362338949912724504576 3437092021486905357791948984811520 -469264794010841237997577630583357440 8811527736330064475864285805805568 1540754571757279357483695174844416 -172249341501464932451892208307535872 5413586190676172525270685771104256 7706933883744056848135498510630912 -733331455889807243965157629602299904 9652957681314997166815552508788736 3852077343019274310054135004659712 -649372284064044982161647042763423744 8621800797178736406221414782205952 7059749565425390083984986805895168 -589302219039469439179380664605605888 9852407539558474250959075110027264 2357331916750308552684247529291776 -992661959049341857812677386278273024 391264574716536226400477412065280 8713265826651149760355998608916480 -337523582119276997997945723126022144 4273768837881912723456020392706048 6595255831453994311326260621475840 -244951426367148687451900092763602944 1404729911484523697201528065490944 2397121989210857790904114798919680 -57226828551635461023589136993353728 9948429395165040692463481726697472 9314997243640438201820320769245184 -549837461760651586604458839675764736 8233355526772660934119679892389888 2046395606408272219690234713997312 -846705980131929132812438389009678336 4265935350496903309233193616408576 1092530805506955169507481149767680 -150920231196167755484657572217094144 8663746607323830012606960979935232 47842400002779262059961540149248 -495835034729908041636343718369820672 2300918076549637053344006310723584 7591513337899797496091835933655040 -53500471194000987496476365675298816 7189419463726828313733669016567808 3211031862998590190773914761691136 -560623576438390429483520074320969728 1029405399293306532872254067310592 7655918531366137455609076340752384 -362598263664250670056398706186387456 4150633003077179339083965555277824 1208802346190616802772687647670272 -362003596340993244984758859972214784 4243374924686285962272327082180608 8601902469809388289998631901069312 -112064419926324337995604372184104960 1160645334797716046860718065057792 415298555883963177078420343357440 -333350121706255203697091524543119360 9994514008978361125153144169299968 2794862307323230678193357541343232 -610769549048176704612225944211423232 4309133861760681178919028326924288 461396982212388074955108796858368 -821927194642972678502925981903224832 4167357659750102518791489202421760 3200107131703708368201809737547776 -964665668180665017855659635803947008 7052391576357023632048078381383680 6252414831915329234233580691914752 -573813014341888882736743716248092672 3220691948894044484758546333827072 9916955125519770739499326200872960 -839324856987084416540072485681364992 7511600546222517278185422642479104 3918622324852685188204389828919296 -677008214999236276902053534658199552 6323223692867152926061484918702080 7552167433093064745185396964458496 -589719465374161770947217701596037120 6474088513327094054763595927912448 4639587630185278888722717791485952 -180631310827304612402828863931940864 4541682912940069546283580033859584 2317112049414137035059675560673280 -386408070928264224348059506330042368 521838372303446346569802709991424 5351329167020159051644386322415616 -947613680851265216078710702876917760 6812015646250267518572496504750080 5415188493383257791035204050092032 -740013605074033547970716148091060224 1156081917072185802802115624566784 8506785867401742063863453307633664 -624875171305799684037035496054980608 622784807769249148760744595030016 3610613143242363435765415746207744 -658400402654405902775662063028011008 6581159999151068283876922575814656 8618323340449944979912500589887488 -49035107574558841457955728930111488 3020234483938594034015273681420288 8630338487374588701150899347652608 -322013649938122117268842718037016576 9665168182040273105255959279697920 8002099226455302742363757562822656 -146053795981755932552436910062043136 3561818031929507887363395564863488 5835763092687402071246930261835776 -280953475305703705959074074757955584 8048317634955315420571596551618560 7053766433234605824246276822138880 -894221061365873181191171809187201024 1075365350623780828483873631371264 5839141907796574182629497722896384 -442179828665367673285115143790788608 473047580693494256878144507084800 3961803735436703538330663823343616 -738612893272267974483674428885434368 5993667201456537247859166159044608 5064048383242359484876185831211008 -792367463717565770567264956355444736 8590877859597073567889112499748864 1616042512523950083107818806706176 -132551840869091925709779498614915072 4455919340701323809476690055266304 5747968723128193888533461682094080 -678853728194782536295216812484722688 1885370227829308348907485229219840 5509802852029933753750640704618496 -219070812749428276416085384572698624 4594156414754156377130993910284288 6881057120743032884480055267295232 -345741095672450843450653190832259072 1013221838820227944184191012306944 1259058221121989916767790731100160 -445928885460789529627307489879916544 9726537733108271298533365909553152 7570643801736394571589127046692864 -279690615164785010398618495236440064 8813507558799049104879362506752000 1546957703175595603664095303172096 -238222272229978995608408269032259584 8858954295318242923565756882878464 9303112733667319214458575345680384 -569212629342569906381945135152758784 5882932956730216239171033081315328 1674359211607231834749973192245248 -572747942750309869537946126803533824 8461241701985450492601759178948608 5522050605683719010412583895171072 -935660839724289828840815729961861120 1566487186973795464697114204831744 8555980606499333528602079146278912 -141282058313548438679084959166103552 3358323093282283608431866138329088 2764733749845667741938333329129472 -492410029268892727730315751961133056 4756610176280097572587265517944832 4109641468416801737326480339238912 -729727884041517043445811431847493632 1678106469685854798980170567909376 2665814673187503452008707444965376 -404930876863724954626023062035759104 7317494424644238778568327173242880 9139605589866713724901493147959296 -420371742438487621028926827171676160 402794682965957180055715263283200 9054898087810852567524855846535168 -87226089051502865836692333798621184 1377866509967913887780150697787392 5767511552822953409389818846117888 -153281185173322328437868667986771968 4756920360509914379466955806474240 2745701514675013711524183893082112 -873521499727329451136297464179458048 2581711470449766594609568225951744 1242367827012830844815044817977344 -233593899558183403092657139590627328 5757092606603651973224789685829632 7968149038679989898497124915478528 -280090412234978867886774950748487680 8241611793713137553817919580798976 3337731572541545920279166677155840 -703751991368472712992343873095204864 4431369662573955007806638921875456 8295549477739889591393545212657664 -349082876527140913724342658739994624 4823785852873052148550492691103744 481916397965857652646056405499904 -532585357824391083482179450016104448 2682078964239807869065454002634752 3831164932514000777016142102265856 -807215408806825282605270099136872448 2328242697249242572113221332762624 5823390172991294284233641079865344 -958760156682233627531503779610361856 507027149618362104192616410120192 1339149817025997736180156802793472 -894160119549703777245324256225525760 2626764159156029253590066917277696 406818231028015036111577155633152 -132203576190429691896894917206605824 7328008580075162256665217677131776 8227334375630713946373970322259968 -635725865026775867514381671352762368 5491712911122321595343692325978112 1919773520464158476639312277405696 -307364732957687765351134094006681600 3254461413609475137065522336628736 8759668895626728794946608807542784 -160405130948844601361663617256128512 1949418132164980092014956340314112 2289788354398580148759248748150784 -607481145418624018697623321800867840 9587441078617421452228972297322496 5572910410011633453555800638226432 -550413422640395008146940065711390720 4165245471837947355351001532989440 2262246427036275704266317033897984 -310631331340724994685253016491130880 2268717850730207480582897991155712 571818985737220471414011379843072 -158252086816180672768299821424443392 7692792635038581914765700974510080 4626534717166801507501592893456384 -658511148734533541818105418869637120 9385747265670855975783336960327680 4881884258249354020210129070194688 -129729157038194790701735724049235968 8731152715454416782565409567014912 6579202100468230945391914338222080 -141977480013044305102593432313921536 3068653169992229345522605027753984 8173358715698556636718203263778816 -798704477081278375187976827846000640 197721843045832579162295421108224 7557989860990811739773556802715648 -783694620953050651718768077519716352 504102595231641679182481596612608 6152983952667152108051112224882688 -431169842099840628109564496782032896 2594581766150495901828027537948672 1284409765948767095856176635576320 -866330453634936495445934529813938176 3968218113113519948726590616109056 161493282842897138472854614966272 -607531099043509606266454812942925824 7495104971674403777989086187356160 3257572444503128157442239761481728 -825484359302548384264638275774316544 2675513012869598082678597512855552 4187765608413129270627865383141376 -279527867124571911558921172365082624 6492444454703169446975164502769664 3233426155048521143977447610384384 -804237180994074970948981141050228736 4224284814511430200348602825441280 4900521667374772033328810215604224 -790056334704426091470074015519866880 6045694845514303300848583226425344 6141980016733528290967768753242112 -377893395089903178225436919819403264 2230127762231371129861148151644160 4923311654294380980855949097959424 -589200107803424041788184534510993408 1776677524347311775287603789561856 6144757304764118368356612695916544 -14323887274022597342886620683042816 8760444279344992364120426927882240 9112817791762214396114897490411520 -404954423893175111282593793264582656 7799718848513667167819610795802624 4076881282045381002653976189992960 -477448976616957750237883087842181120 1356531921611817696289223186841600 2558036453253445391172629010841600 -385432547754812419850279799381557248 743052194706477696505699243130880 4114372011603911816559372993036288 -811713543479069764764325065019883520 8292285129243145255106894551318528 6489517028171544013708033219624960 -777671084330732036532062809835438080 8121062266648463245000357844090880 5403514640173641833445350302547968 -397748583541190636049166837095596032 7538840204179715389462526709202944 3081052439031589238912432549658624 -511682613591140142354353565290463232 537285822173499451936558391754752 6812692761322906164448498917834752 -451841453951465216801086921328558080 554363471401263364613443038478336 9708921600414798388328519677509632 -569589250811339615327861088268058624 3184984268073570498811267674800128 3969408817575635970667238612008960 -492161459288253472773871618383413248 3631713269000596025236988222242816 513729625025038433094337829011456 -392198317653198261411626090932207616 6681875306125843945819909975441408 727218209642306156971708219654144 -577006070975413056165891858130534400 6776428618375285692605863500447744 908550076770977051187717964038144 -18143425511385665224565075591823360 9601372258450189856257068761088000 8950033750461327870900698540408832 -233106166726730595831800026644873216 1763439226272169432199025227988992 4419501590059730121000913320542208 -178164313339997474097974831973662720 1483547407566046148878608650731520 3711026842428698702404176614260736 -167243505609771289470821806001618944 4175707808168243638249025364295680 2509532759963434573575814408830976 -208984596294309998725823439935897600 9389789625882065657987886533836800 2582354149483395989957735176208384 -181349044136776175881505156982898688 3721340093319085680861258889297920 88511456149693743232620513198080 -632216919109169947796384670478761984 9847101599218612810026250397548544 5553357657671073392363072747732992 -769266458957094326170671514900234240 7459384057072384250238206572756992 9006087117772662994871745505132544 -994129710592488148537670690093924352 5975550294082973702609569866317824 7447619510800387609540774191955968 -596904916229987792802073218268528640 5037801891597894801098119359496192 3869095741806508285387926207987712 -383982277826123467252319277002260480 5744172797423296101961688185569280 1513093833504353026018750735843328 -819327969711464770796234731153260544 8100204020858158529411585002176512 7459042712602573249208056601903104 -786338328488800827534846753572388864 5635034495595746940270208754909184 2323196214937051541046654652121088 -924496931654064091337816318263951360 8031502675060269884347289947865088 7254584920581046487863240599535616 -148344088330763007691725341989011456 7700935962755329127006061107085312 2742734442054154791969694307844096 -415357788046717943859450837020442624 3190129551666776067487506129485824 236473682794005441705975901847552 -286435151360812717463113095186481152 5644310597515000115671426767257600 1893588764461295516264052333477888 -829587141222441237224285740736708608 6331730402403085496395324146581504 2496722555899972584747914407968768 -568039188028516489194196193788297216 7269113795930908281532936842379264 8864632421045114502626522735575040 -32470116061094161578198882590916608 3214947749352199335556418927329280 6323669928254080006245415661862912 -758620547602464202045374349889765376 1141507338281302893905641501360128 683162993137829383246965846835200 -712334773671125452131056278680109056 9306433397495253146127262239686656 862708191831347654883067824177152 -208710912022800565637670513187749888 4959207868593458430770628081483776 7539720798137884906696023383998464 -893176775683222589092281752905318400 30413231957663367757941339848704 5496183420600619382618383452209152 -73344958991153189829341472847036416 4860725328750460366536987342012416 8078926298939108710663644193488896 -764661140286130791737510561541259264 539192481937477503951976280358912 917000716572634260610920967307264 -665443957939648185686194954551951360 3321967563371299000085659655340032 4869433265202129140948610347696128 -445342385402936212929315681066811392 3908743948302664308533831837679616 167405719215268066471167991480320 -295919366698375250404185177392676864 4009118538691767325664117228830720 7392094124127189791440310055731200 -852359126476767125244986411878187008 7518268267715609381721973194752000 1145620337607305352642789411651584 -4530310270710570044993891058319360 5689193944126618217287779209969664 6026003025628383505687252553433088 -457769986940509838403873544976990208 1204946301220746525368930661302272 6812971562686903192764332357189632 -881862710311296797474074362361413632 3561348678504375658582929961910272 4952959951709142911571174950436864 -557929262297791070364979190652993536 2515641959305295091570876409184256 8939693345815889254591407205646336 -393661558173125268382754043550760960 5731466897834368946213910921347072 9571777967693204460164191524749312 -370664584162768768977753989971968000 1240219778474758359833615928393728 1665341652793039224267187238731776 -856497938958357641915397965931872256 1137536186605216910881855299911680 7741255957658261505281603275849728 -338854442303936599915164337453400064 7555019303758958784868701211459584 9345902342303376212947737874792448 -41912435393421160547576478282285056 7332376072975527718053886153457664 6926863709976451656694447342616576 -98795918497465381860203129198346240 9975386430958195089127728520101888 5563047508451514860138720305086464 -990098969256193373794412048643260416 1738051407852137963577969341366272 4732959215015681309789382659538944 -327968768794000450069701265058693120 4161674830584890482818384100589568 3656543443251076903543339606867968 -975308407736769820379081077895987200 5123872689986028352765639574683648 3809344407426338285857095616036864 -991739298602220853279364706878881792 4893412762331796828810683132936192 9140221198028401090999012464525312 -847074927058976826119406713992904704 463698801158241789146437368414208 5288815681806043076101692654092288 -681066363413695928944624359398440960 4733229243491966404316434861654016 9405549108141632143605772457082880 -620397442689758760903162566797164544 3709511376803210073776674295513088 9824854515216991807856300181684224 -484553048630455747120643870052843520 2975179170288542892587285785608192 7592762959665802225228066146222080 -744408243424894611911471427609427968 3164441318262146230811405236305920 8945910750263025588655952553312256 -622791826669306660168220564416102400 6803378454767592085196045316784128 2267017769123119441248492156092416 -926182601770830911174104054700703744 5807455644340615224640061403299840 9599427410916416636792530884624384 -743428845487881940109774837881241600 6287902811308179204147500239814656 2152964363382269405117808002465792 -556799598938004531005521166350680064 8852732807607876401508564233879552 3423114435154894952209504735854592 -226199133682344142756963001248514048 2915629052062670021382900583235584 2470051361210270591863626353606656 -390537009631742363065269510473777152 5245572908554417970661895459307520 3456464032297117793758182738231296 -873616728332385599363605106482216960 9641685707859911792842014902452224 167924365098400179514066090328064 -711271408592254929872741086259052544 9353052239640009608974882532491264 9754642628253576770942657171030016 -447200050433460810873747503828697088 9771909246898371350903742579867648 6712502185210754840468501070610432 -576484111930563156557541803267457024 5170526783343028638142838314369024 111841271291219373741793756577792 -212745598823368183084292893036249088 4916519175069692989529447240564736 8372069517468229972749527499669504 -155979312587184442686661080349933568 5423177897135654635572364367101952 7013240466536046015905097037381632 -651100086197860246648080068272717824 7541719273094628012673907709444096 9656072483858114558351509343436800 -880278751487665496938511724990955520 2636147687948253675701571822813184 4429557530486255037919090603720704 -636587234774957668028186446127955968 7322930337266544280017731758063616 771006363459952753758393319030784 -486407007273463939561668681324822528 9222763102718349719216305297424384 3481849079925818215526730504863744 -577583350235117295496407654154108928 9173856662453564669145471982239744 4682638293306959885657173984804864 -792132270096025403044470618320797696 9841583640492772647651133437771776 8279063941004999432163889950752768 -746513509243803637404694048596295680 220376492627990566945755800535040 5404671088176819039187711056412672 -149993001605409081075413031713767424 2208965490916613863867572352450560 7272338937329259196800056999018496 -170135165576683222814949447269613568 3609710071339778573956941613105152 1401904924401471723989686458253312 -262819607375219568620485161242329088 4499501682384735028346924912607232 7769467671711077097442589708124160 -505130321013476543188800334584610816 8877495942521985518603447954309120 6482240630797817135755001950371840 -619303827221847076216711171396337664 8678634362157487022672278976462848 2295503079146322330736577463975936 -464291839427576145166065471619858432 2428442583541108507812764000976896 4016100905308508691173673181118464 -339377543217356677611800056429543424 7098242175876545790532900165255168 5416848543561477954458561634369536 -172827668308703517997522616127062016 1357381102024052282870172991094784 4868494329621212510381098800250880 -823052050697173275878288445501603840 4715240099476807978848309206843392 1812053077233141552262505939599360 -408620809076507684182763936182960128 5988388252157919216029010027872256 2190274904120505969945839398813696 -904800427692680494338065145693995008 6533436913443395047187993543573504 8907853493136419054871153240702976 -269702817358233595485063630358052864 1530625857017792593124785060315136 399858577191166767970445646888960 -173985467626826266876650115251044352 1705315004188002186170945058635776 1157863179010778523293994996203520 -80932462284106400688824114634293248 8489134248660548875372274326175744 9871102611823705757543015387234304 -729422782367392273490647269664358400 1886924343342511932516778987487232 3670085496678465972650864678010880 -489778362077167461651817763195322368 5551383370679925421381333718925312 353074950542560757962237921984512 -556699905154789864814826335504433152 6795852595737869386880555681841152 3257895887089782528385551672803328 -177821518446651243502777967558262784 1884144401136226557419260745875456 8859405375334437079144376756600832 -864446602680487953713437372449816576 5484107032280621754054468956061696 9457137114508672555850212392828928 -114580544162494333905579224766349312 3384571552910484765055856670670848 1906700203339202644076519386775552 -518461765368640078734497872716234752 4636246196985895301465193316352000 8722488064707756247704047636709376 -796507941921623398550894200240472064 1262961298871039773814711004430336 7886400992220189769105464019124224 -340889140495214734530695730537955328 9678608589669447152419893944516608 1073542721813336476108070110363648 -773097568130187976373482957742014464 5694356885610262348022069749350400 8890616396832106529185821196550144 -993951150800296154636043146028384256 3960297326684986190847233771962368 3954247179733118733392562970689536 -740599276875860240624989862755303424 4285868875427291301723674005995520 7351174390549343723530429422108672 -642301879909952725433569305801261056 4846566399183455771092937590439936 885000013752587545984423686045696 -962785454453284338988623571292520448 2192557525577573828652760530157568 2815372429763251020278905740197888 -902958254222091268649059578028228608 2753723291389924583180593960845312 2856687534387359547257131987107840 -329701893037144246774129815097180160 2319934761556304682127487311806464 414459720242104324390681917259776 -379223668390104228195580922524860416 6819869743345332230391964274524160 4095794609628452032137749954822144 -278734691101438958894239964249194496 7220243974605669334255265720041472 4197081210574073367911422782078976 -71831844436947227424414843571011584 2833087566444883652713827004317696 5841430098464007722215790438514688 -138510531466405292182288136197373952 8423799626239345589754522341736448 6559542027264886590454701383221248 -677572333821469698705693503446319104 6680386037891238847031496209858560 9203934504490421725290283084546048 -9682468415717066467961519109832704 5885897843398127318006613562884096 9348356161723812136766496615432192 -405162016450306432813506385764417536 2548551964854960160294265509904384 1117587031680145193649420105678848 -576330533933295468736159581307142144 1578262455646775078362414390968320 912314475366714425840752763338752 -902117926019639653442658544966959104 8094838782531389937582157158416384 633126306917368116405004161515520 -112613694953506615710884064508510208 440366956672748120606064357933056 5982971490926231341856354463645696 -203145485822529422016841177903398912 7252464999028452495562635198070784 5694394034132783906139367966507008 -298237910171487658874221784425562112 1046975808627078792748456965308416 2524182583006285797411281117904896 -378757757670148173468538989606600704 7202634321388563497944727955701760 3324032454436893186362489626951680 -551863812035123862755637303588159488 5900862518772405284083503057600512 9007862328464290928022498500935680 -356515053605068299645810541640810496 354474141233281946598293257584640 2416106910668686044501213429366784 -120205500873525086734300352903905280 8683423354425744693179263989317632 3739348081767711862695394707243008 -102527734905321744821892502075211776 9212834233342546788317346660352 8846495422783034921656844602572800 -684618589956679554569368527622373376 505173193197505363774448842309632 4681703904555400342463387472494592 -682748532024544514922816675856252928 1659868680636146920743348278919168 9154961721842658779396804607737856 -110792503223289547542345191075610624 4149239547363044345567097338724352 4900806972790423546112954362494976 -978609336924138783003874409045819392 6395023020013836006411866000588800 245851367547043169234321139564544 -739868862197238677750215339078057984 9220541750284339355009255248756736 6140313973616162511811894386360320 -787641374752366959978752057519636480 3788132043898396397126581028388864 2746467014136619979748077322895360 -371017361870109356060498887333380096 7533580430847005854247635658997760 8248772580821175791642132342636544 -803829077102252603569528462016249856 7408729736398677739058776741249024 6542191548089391528424754468880384 -589030772339520666688286466406088704 2389435467329653496429984186630144 8386044081307164329074426246070272 -898982241915921614161698493160226816 93219077744935367018198903816192 2849232541598881885043317025013760 -171008519698607175851770365255614464 2205908939404106177996689101553664 7700123889424060717780876503547904 -268593507759183552933613941240627200 9596162987245587320437560991285248 8075500134780382894986804540211200 -127681177258465981289071997595156480 2569048552661110525337152463568896 238897571563233389263526970785792 -125307450061780227996848390284509184 8830006453640149795275713166704640 1387814920719679855436494966620160 -565464127066064150106934256037003264 5875255356636680601878422664249344 9761592999538411564580401913528320 -250761200891604305963419968859013120 4497473583733933096442631393640448 9925389862102124817267750212730880 -154874176023937683853973609227747328 3743689346597075759852523091918848 192216867848009939924531512606720 -887373484456718537800180362423304192 9359203079078342462803385551683584 36801719200742948691380768079872 -609243286636793495511059759701688320 4441055314923744639880833317994496 5350613939351809569869236812120064 -532996651149851858584566095398567936 7728389141911909999260464784080896 7242539723181154170313209683116032 -193238255017648544582576908097552384 8949490566609695601867067341406208 6124271813937146290153945108054016 -556199560579831274443799085763788800 2907833597442675705215003368882176 9658483993856387003431231451824128 -92337605770541513887291801734217728 4901337016505057804774379813339136 3988611085689504141084182838247424 -949469202310746018616732264964292608 2729281184378869246842780403105792 1948707236409186453503000740626432 -276351907647573061208260680100085760 7019984041694778924585686417801216 9924817026928730711594106779336704 -33986752821275468545875089784045568 5283903717157442262024540588605440 7549155373903257678549253227544576 -344771073879725482521798697681944576 6893261470471974383125587631800320 9986702331816275393691639015800832 -720954927460692880809237220513808384 3748224061655983611525725486579712 5426846298974238551120585955475456 -934746153936332492047892285963108352 4276278875936577416928828571254784 788550289812580349505267642138624 -49807066920574678728050975992446976 538018626297391556257662294294528 6514515781546429333889659273478144 -764139505123722701841416279786782720 4436296125929617959012062629724160 2325210098866852124329848317411328 -256244221546746001400066131661684736 3535543884574719697583339353407488 9754024781935943648848843525586944 -881496695801081798262304150415998976 8190371892225914928488362188734464 9474490212523133546959731460931584 -127434805134213600395243983774679040 5289263530517189697439556744249344 3275217792579933251012100500750336 -150610901430764851433542643336871936 3403000145723069387397834685284352 4341622704131508995313767932755968 -460758028726014703140611816297594880 8520690871366499901408367263875072 4567670643510261432579100948561920 -214398314636182842474888774893436928 1323351526821524012753607995686912 2963457432341570610325088343425024 -682373347166448209533915659379933184 6244715231257358674716505132761088 9975985910222340300745292015206400 -337200400601270101826538318438858752 2321224867555867993108266637852672 3225754601545332762836225700659200 -480871047061392249697400123268530176 8866407992501089414826963440238592 5216583953310415532257083616395264 -76371870669479998197719648228605952 9890730800205960195148847723315200 5537855333923002121128898939846656 -450615801815976762482006612263305216 504021823210860830340235267145728 923630517415724231190774657581056 -144918167962835815907041383343456256 4123713160300512869752132369121280 2199268956504447189063689715056640 -618298639773680649709214225246715904 1198482925833428221471636563427328 3628922295831977460477795084795904 -957327554074223518249375860090994688 2244706645307106438961648917020672 9471474856011432119522030560215040 -752861162686161605774630624543375360 8465502471071065161262146439348224 8391293290296085479991330148974592 -55351194398050393955619239756824576 4983838034755548950100416627998720 9983442711333158348430577540005888 -532518911707228075146594986030530560 1997762553301901829041785386565632 5501733393128829244689139900612608 -990611842758847634885835524528930816 2698551000073355344716225021214720 6572402053369327377633683724828672 -640990290203073206858216868293902336 9778676359167473397111342984331264 9365001474015275040307936860569600 -331993565561346220820910169554681856 9185226901501863401502490618757120 5470845241589077795575499367383040 -165881910447734702523725982558322688 3877831151336015107793142235004928 9616724431487576053191102699667456 -778216331238091377451044282910638080 7543708571509548488224285145432064 6456264327291031328035431964999680 -299917127045450251122220921845186560 1900957563470368766310802113167360 922724651750716790168028046163968 -572411604324971254552058589022781440 3676077197601600286049539314417664 2135737467604990754991706843643904 -349736209454901331425008588005834752 5720293397180272105049262517125120 2183683619527239261286115368239104 -506829154022785889085722304802979840 5270604025734575705690739591610368 3881910858120281639650623435571200 -665115560122991310916629633335033856 2037239104373385152832316572172288 3060639466159223247969562107314176 -492095065466557563548949003257249792 269719577166339690550469362450432 5872445839886915257227765832744960 -99500191107347842532078691832299520 7380666502872724771598236337045504 8332273547317285301854616101584896 -433695242494570686730692572699688960 4768841613747243306063453258514432 2198618270605759846172956997713920 -317311530795475038798487540637630464 1023141014269982337488843396087808 3199498603274816503973416169111552 -475463023171681926905012831884673024 8473492693049112177940650541449216 8198129418486881906705568043630592 -853468010827643662440161819727233024 7197347517177256095109455844212736 1407773000484832515340725412429824 -921266993497299864985278528912097280 1948216978339944201451202412544 3851899733044602404886827482742784 -666577493463247471998257043689439232 4874983874771713783362075699970048 3836492165703459587347252638646272 -10715310603763415712937517992902656 8634966747722106672254483477561344 1758861477209998919841351443939328 -378409198089123193952175696031776768 7440524613270639443909467246166016 2548063028601410352536681921380352 -907172168204724136937489586808946688 2293547418619429018865606644989952 8811801693064794428785430114598912 -654036018527661142708206973927555072 173319506448675718474934607937536 1292494868658407267361997992230912 -61790616499919132895110255486173184 6508256155216848734542032416014336 7498808977780549254897313310048256 -297745132947568581102064910058127360 4410954063153600188633211042004992 7541730678635154786825677255475200 -102548760195942793428477645118504960 1143319903255017637504527124922368 4946620862778264211748305726603264 -982664716547926269025501471167217664 6991256171616515060254105957040128 7829882282625280918574871108124672 -744455119107095441931985694566121472 7216663780628396477482730818371584 7751343411380096049337658115096576 -45779766209772572303360829767548928 4835330812884851609070142551490560 5563612547020038334070293123825664 -916923298053763863101872136188329984 2394628640316828741627850004627456 1999241584224529293976462008778752 -451454677762517701535181812092895232 9868538390583605660032645048827904 8676574420127148248355128641323008 -989757457007386151990639239580614656 8635467511640759960930152060289024 4865474876032433136588839050018816 -695978095475200457977617715432521728 1770318111140650073736907956682752 87288880680338498669460492124160 -911811209325372440680587369247670272 2271741855804957005367790293483520 6968020710676022837474105801834496 -553527503924124164639434044814131200 8648807254411172198894609851482112 2097877578204934534826487562895360 -225568498057818771848510446260715520 9305956559079014949516629306769408 6167649592993784857679897594691584 -434975459889346804905027612662824960 752407900417959626089775627239424 69647634337224325001073571921920 -341184979040685836090547120273096704 7665415647184906870654765004488704 3655003299914370990191763840303104 -772847236436688968281813467040579584 1918045113821055500166944937476096 1627707290389328461195634339217408 -239441171165480795324602632099594240 3568591192393157535505452709707776 5848752483264812612792693328707584 -364006294850404606866535893862187008 4153256285864512668254878006509568 4076795346072544722720617744302080 -79504925233814746751449894108528640 2061186768884955074032870929465344 5829791465786520435066825116483584 -615716944917022037795053617354375168 2516035276432299904277401858736128 1017070589140500034456410367459328 -817979597552264706642502187430707200 7418607059887573143752741251710976 5866233620914710560201970353700864 -271526567477509727345247560210055168 1084723256102063257065165246431232 2652777566691368520829562819444736 -454030669886991092095406488170790912 3333537571015896266200570096779264 5368753633231135794083856136536064 -908660882473125752555836507473051648 1435926210201095071261165707329536 4468602720904280239887956844740608 -652532814401797698365582099890569216 956067761707550091016976524640256 9879103646794871137245695521587200 -141439036146067599659211706255540224 9732144925128840948721893871976448 115901515071107001117542434471936 -955617654358091316933227111969193984 3011799305312987173143182588248064 9205420039464702810002141959159808 -668045726994981926142280378435502080 3190754753994237680890237448880128 4186212581297781683545771857674240 -111971963481819676012469715067731968 2437466557419018829108363757879296 2451103339625634782348765510500352 -632686150683642633864769721281282048 9947032562298313294457829597380608 9358037835216363952638300340092928 -645618902866433401665717751951392768 2930902743438211907046557991567360 1921147216822215868842344357822464 -822813214793745437965890674638192640 6557134270445617118092647316062208 6169744896747180650302543147040768 -572603956979217193411393851626618880 6645514615315215111008955863662592 5393225099868867261790891794235392 -345776602380251426362532664528863232 9860777875562094537707689120628736 5145251429819158296004236647858176 -943245935224438930647178494936612864 6798981812500737808238649892929536 617328552400695860435022249984000 -772628015128344746404742771347816448 6668309853726601369214141388029952 5813524632673537720624903083786240 -817101751727174400551929510056951808 7533585086738963188883754110156800 2311276128324075155960011341955072 -995119386855730155569883201203601408 4811001153903693464252518561218560 8400713063449661267484397990313984 -347475613890827225484050887459471360 1358992421611565532839625420177408 3761428244463116639202128204660736 -70304890405494819443807790903066624 6998099332549382214687796225900544 603185351129536521531952520495104 -256862228257848102938296186780516352 7266491274509614722067827737493504 1718611973970117416716636994404352 -533371801042657960677142623472844800 4490201484540235056519393184841728 2433916591892862063120555637211136 -544313322296161004680118010543865856 1628967593114762223690080099237888 6779652229332528981163620949819392 -98666172916660487526135744998408192 4507365729753302138294861842874368 7412606412601481321446663421689856 -179047995468286743387930116271112192 4099469824080038919465832430960640 9511535455851126179043643731476480 -504540407320334011570354555455537152 816808210865889414941068943687680 3332322009262493678127805039116288 -912745812890798544461669309471522816 8781321546096421399647414262956032 375935364712573667516907148804096 -601567797437249707878391950920908800 4186286058668963984968510366285824 6458421578550416505644447430606848 -284894097449845666298433293877510144 2021114046632659686947295649071104 4386859344150289238719592071692288 -514394398306166572403583379407110144 8067386433810106650047940581654528 1585961799946389013007425809154048 -433008468829322570680651594216767488 6617949471613546940481819627225088 5263016558440330144092881762123776 -243099421593628012868107851406508032 9744247998981146793373518356545536 9813576653228752037018997815771136 -852005717724847138790720383458738176 6257122514870804026485902132903936 679899209560790879719869885972480 -928710941177476851750026110289575936 7223792495626243970505249512226816 3442469512655768584523873465139200 -359424777465689043877202235523858432 7226990282166595238548687915319296 9741206268550900084377753841827840 -577800653859008299956667146680926208 3751342546860629753486929433722880 9524884390581411457423597407043584 -882995638860253106119126664091795456 9861607605179598857364848362127360 3122298568619905029705025326153728 -600045994523750326014203442401116160 4845956793118148715470939087699968 2135786032429478739472865298481152 -157521161939023488166004232107851776 8342551695895384316483730432589824 7437225779584303541957196697829376 -387081241737950789509315045168775168 4392721691361889991199062853943296 3815353827600142041951954683297792 -218103710183370193093929104090071040 4470402027521156698847280466231296 5904479425333774657384356876648448 -589692451804083214793994564599283712 3795891654758738479637306282082304 1094481004281882125517653264039936 -439381415833948923681131831956078592 4589244649604303803102998609002496 5499368171409961553315358916476928 -397087766688072903604941029698961408 4842976185863418089491531347001344 3746061373219920641551418162937856 -921664560361147929223234443580276736 2193110988182736806458652675276800 3368847876021429579551705885835264 -223718067140801085238523248964009984 8884225412022317614155707048787968 4304568546724873775733458419580928 -188682996247444751199090934236053504 9843119855571034279069369401081856 1442148241308287401077791294226432 -425356533559247801362037202403459072 6576072865234897090366982634602496 105619670017628685469500473081856 -336177509792067164741270698593353728 6820417676733467636110852221829120 664969027085129540187406699855872 -263822654477545292594687394982133760 9926020650506216622972870072467456 3943478658104909815727897551306752 -580309527726562081810682111741394944 4495608765169376326380849710759936 5806724447436113911151886535229440 -370927050826264745880384250669170688 6648568696888714744114510525628416 7815162990300386260172718622113792 -162832910895887284532857631773032448 3390637423501583911029441711570944 488656818597826191209456329555968 -691536751358446384791382682389970944 5822662979519325115050886764167168 4915712858237888782810938456670208 -412089520876269772319331084146835456 5915412419852070764140715657134080 6644091491413054345889810760073216 -881393438251518626937240307986595840 9023542033456382507878151792623616 2122665007094824586961813801795584 -632177056868964726453560340771766272 6431819601441014097843312377462784 2841813776305490500327295739232256 -375942908172058569855741722120683520 5072146765831715083717929435398144 10484376733084064389793404944384 -724893085681488039594420920639291392 1479760417462667083693276111306752 2648952540770561927983837585866752 -946676547571923235902689137265737728 8592894615671782257905846265577472 5199601157186542772500229714345984 -211358342201176615699368126172889088 5743946983388478003216139186864128 4893489572361602859664080950525952 -498801453300303038623078384037527552 8221977942475971633283577363300352 5591891760922945057134756400988160 -723798072708204412612187652574150656 5053727581344019135567382542548992 7269638135349071641279053271400448 -173773004428611673948124409619283968 4950063301682075322770872420270080 3448345043050121344537894334758912 -478872731379525077717682984723677184 1131547595714880310154878578065408 9170619582879301112409616185032704 -922611268376228246790582123943165952 4835165529478141758674109116448768 7541089011221098944457084590096384 -589468589271385287540841065167716352 5021033348963531495101003536007168 5756636345769135785461813639905280 -461795802580246675839771261689397248 8221436589917771426198369161183232 7651663805818457901724990607196160 -811273880638531734794901175335387136 6241253726898452839315342431879168 9881690040470451962776837028839424 -385636224292945968375981216391757824 2640879417678394102163927161896960 1986972447129009260247291705425920 -712363021425351170090670051865657344 1682149689564267440014211577544704 2395814748799006513978493148069888 -847783414265035389816898564661444608 5192584647674089080864894877696000 1759993981240297905694848269156352 -894120541316507630694629936191242240 2907367717867097283112060776873984 47580396862017332569530483867648 -522158809629141734157121986305720320 2804191352077696413949744604250112 205325833734495828761469446520832 -729529170155107744196547954167775232 2231518356562038245317319262732288 3589287829729253063825683214499840 -361024547431426858861253328143122432 5215625376593260277606399504023552 6271446832250505079508718915158016 -483982775912727959662430146187493376 1484023369448819181079742405148672 1115043733368061512320584230371328 -713980381271296548461861793047773184 6739237473366053932653067693457408 3713938209132040949127240436678656 -39434219832904883185845568224100352 5252007724070243296397404915367936 9427966479840625582480146433048576 -896794057128144056948774611596607488 2191430233045711162381181443375104 876323926785281770233276443656192 -45280234100926967679146550458580992 7597092802088375413271160332222464 9995504037630591667539059671040000 -134875974668628072308735594763124736 8389777778572427254061882689978368 6866410426203442933485678979186688 -437561922176158181161300248793972736 742762348566295540825825159938048 9733520179555709554808644003954688 -593120911690628975673788618839687168 9336347075203369771109673250848768 3935149509393070870648847545139200 -753080758327215998850112660309016576 2594432287817915264730074869399552 6339037929336687381184858952826880 -738573463485191052206910917224431616 5879814936695900224677736618131456 7798731386497404639235882222616576 -31455154820542725183025738885890048 9645507439511237319182774559571968 5264372025883417561691440413671424 -919484013930058087208836823399792640 1480757369238714946556473877987328 7161099776351799778732985800458240 -188779222414963369460079039784943616 7073271873310553921826605716471808 3826533215183194663579556524326912 -352081033927522123519837022206296064 5031562152001471816106271578259456 1707802232765812524201777771315200 -132360159439794680383693487668723712 9576764837352308364513027140091904 811884747032211557092178683494400 -640961100711991917664254975826460672 3762750166214513205421409002586112 166723463161664332915516194684928 -299961101136096705189654482468732928 1941333534463025947646635706155008 3719429250542508004572227782574080 -346602860453399326348341068058066944 915638481010511825714685652500480 8636412418637941749884494400192512 -740164230259347556735362724064657408 6044932798379373264260288334528512 7182439487218397245532591055962112 -201281175247896051009677657743818752 9900885571145400412099982689042432 6391450989510599278573740349194240 -965788218112728681928994775904550912 7272115758999669809174840199872512 9577321327107157861121986939322368 -636462213844188289543886815008653312 832673460576041035232312865849344 3127963413018851403450483245842432 -424102885471259956697770161912938496 7084826662323604661868974185644032 5670937065046524745333844853391360 -946637036204363701945348800896827392 6972535213574161228978466590818304 710051976526826237782587716141056 -912166056677841644216715681143455744 1996674876179156344047369973661696 3482322229575703955422694667714560 -868869423460201260634048199116455936 4399901441123233809698444743278592 4732682541296812230007908351344640 -878197674782816220882748522440425472 2599291193015666039925967153004544 6866394747058179343564137039921152 -549716976853428965726595074440036352 7992820488830822008763711957762048 7377716512461158785014965368520704 -855356718157942115500812690970902528 8226540746131215314711909513560064 5185901980774072452242011905327104 -349188908387391163307593304767463424 7588922695194771877050942700388352 7141108201493750378179280672653312 -680817552206164939922114859853938688 2242589753956613989142959667281920 1953896699519860343828549468160 -861430216685169129334071780295311360 2194046835253732290590074250199040 6177057077968538371023623564558336 -599005192406969281641440038401081344 3350580834803444894964234376445952 5514705974721563089642370868707328 -354507130212048400503290146779561984 6120228541855741786680418059157504 1358396385516856958198261852667904 -802533739575566973680144806112657408 7697883273484420337659597037764608 3618783101236011689744775178616832 -734554535226326954939299440145465344 4348237123629245363993043779190784 4698571730507373689652227965190144 -11847045453877910975310643498844160 9675581918209352035043722510991360 965814939438753698347918068547584 -571103084585690389262855992042848256 102204602838081318762466770944000 1524445875921996416951925742764032 -848443456377337989620070184468348928 7784276082163274984263328909492224 4570288522853447721613012364165120 -916660403687023225711531398963134464 8154006696027485539986720665108480 854707870679843822526364817293312 -921850962621493355718186423667392512 8848689133320573573449082583646208 6101459861789835247795957049327616 -293772863069273183847489644611502080 2650128086513149932437304904777728 1350887600987402564320748640403456 -251242515140606787945127645959684096 8907118969678121753467006845190144 8928834507151706763283533460930560 -58146173199059284942376411953364992 748120236988062085824330428579840 893139683383096733022864690642944 -517687277688712296042958571316445184 9355054355816726661077233257414656 7790142049071970954903837011345408 -529987798920286329821474182393757696 6983118732432923397799015190888448 2351324688634278937671104588677120 -721641464199320225460311585338687488 1056396673230922718143812019945472 3246775200289619041672565752856576 -340442420662432186350719381083783168 3345115866459198109377498051510272 7240702945666557025259364598939648 -769816968168423747245597769703882752 6436625117103686465961461012234240 2561759974566964445248242174656512 -762747681957641584931872469764014080 3514439799877927097628984749326336 7749680552021399870293089464614912 -295996738746392209668881733203787776 8973736137933698555088556200558592 8878010525060567555216316508930048 -363677571001170256583724686286782464 2104010824321461551722711916478464 1717078078326709362961307794407424 -854098606432059406995588283432435712 6369144323536008319387382151380992 8684560001631289493307007894028288 -827428782185403680803177399410753536 3882809548959730937131504599302144 4055896665199264893346584819924992 -10974096489942617911401154103738368 6773517775150094041996009437921280 9510245030528773575617718926704640 -279067025027278179962904226417344512 7917227226934065832399920053616640 2393537056458515396820514654650368 -638141011455188294362230214105235456 5215806161013376232107950011842560 4502315531047054198648142592737280 -117071849764705486904135362883354624 198523387370040135249947055357952 3552720692795427941512913847582720 -231455395733249111307404652809551872 4951529135608099274814197434679296 5990129389023095520372129410318336 -119659958453931099113744318165155840 3995822337984719663891608502272000 258260685161068217530741684174848 -161314955755745187447262965156282368 4856143361338959059836747246469120 5704933986352894664654717565534208 -794322732635732509187811727422521344 7833479974831600861717023023955968 5762431523214872045852034533949440 -896393881120033465584197539435905024 2045730512394659859109795491479552 5673476203317097668619852465569792 -346205621612004920083359860776763392 6065882122571689593815815937851392 2602894336212513839638331688747008 -549883791043698980211466024391802880 8031945186344113409805192865513472 6299279488391283288569018989936640 -211667254998428880812163325411459072 2426111678193198141222631554154496 1094527234253465834117539808935936 -346634940496004687405551668451868672 9374342014902404093193906303270912 3767386824871548372902175112691712 -166227926209870131831136354520006656 1153685189767033833399639657676800 1403480280561279661636275394314240 -154345963707738126767688996670668800 828305306059008771240914818433024 7644774916869280059762699080302592 -832842417871726264438611590130958336 1679108557786255730739223751294976 8039765123677200707615112491433984 -537237967910378641505209535160123392 917696881838303032880006437011456 5644364703922153652622115282616320 -527392392782056384630182680671027200 8852993765396538997765118799904768 7199589864660952687772323014508544 -978838731197646056574505385719758848 7643647317380267234350004984348672 8257384371615735680592895862112256 -580235645069365735922587984744939520 6180479792853001825822208570687488 7667203625039541881313706544988160 -273052396055760724853601429333475328 3705238433101997891657196611043328 8557829768889717232297766717227008 -454329289948104250090671955377127424 5964697710821114564122313337339904 641601914521126817118497907146752 -66228630712002130291877703348912128 6981036000844408073759497933291520 2493941916740291903109692905226240 -487920940728606084946280828431761408 7630850069217119181485102690467840 2548168449101503616396855628267520 -791273955600596182942616548192288768 6096913570767567764688202436182016 8981994506339816519885589154103296 -472542874688848215183188226658533376 5298031550897100297017368411897856 1964967333687451233786073198886912 -739122837888228640192295485875159040 5335025298947878386853912913117184 291185316794872121775019622662144 -538918900652140073524003277373440000 2885305357305474440206834653462528 9059772110286574826524891183841280 -243003937961642075218376144887742464 1857194741271579322474668624969728 7485297177379569739986416445685760 -384683735030141464199463182968815616 2482514444385781300817348930830336 6776335866737033146596052579647488 -122069581726492553839260091021262848 6238329355144217223795257995427840 7310639429941443284005625645760512 -268305219234574994371319271583121408 192371556230813623831705394610176 4410450729546563862476507033108480 -834818020460444668318861898987601920 6088908050327279637014443433394176 8158817874545075155640902215532544 -8408373641543939430734718050500608 275251193402501258328269333200896 9834687922064328475407468673892352 -883677753666034578245979185082269696 4503017202558656704799458688237568 6247188148417205397246370438447104 -797883279190510356340257198891335680 7823455451003422440365727288393728 6028179512765699723722160519249920 -824967173673061908670601760161660928 8162052547144766785949024582107136 5481093470277409494961813249327104 -214600741344932104171941248798556160 116189227461333827036339794608128 1493514406392925265641532003713024 -458772721810295699499330821578293248 5328284709497276904445234322079744 31098659404296910595322787397632 -255089731272978121646116315458437120 785858486398345335865290816225280 1835040963066475749825300656029696 -300592169678945938131685588439400448 8852435760462646616547497319858176 5468057908036233984079209003220992 -933575652549003085013242204158689280 8850670364958415287028523743576064 4667161061685653942154880754909184 -330764776127426900761320155940651008 9541830764212074789522111203377152 9907158570999243105523798546317312 -298859211212098519769942239165284352 8968701613716102294665975979573248 1504611275149074426459935911968768 -480181254183749515645251690327703552 3913065360131401920024224271958016 1887420406875240940880461425541120 -956085611568047842181398585336135680 291713025656601672209608935997440 582986820483989508934608722329600 -814916030092612002299406973835149312 4557678415866312865417172105560064 5862852862397097456998013319774208 -258893816606094701773599386225344512 6088943187976296393010761219178496 2684933274164593944734268362063872 -523138490963291247711459409437655040 745859646775543436739436005556224 177575632007973122551956379795456 -142319727127233555692413191339376640 4468289732150602210388219917238272 4712927447619158456201166249263104 -386254033792600771455038013581557760 8651605081634346810352187679440896 9275000289118260716980631303618560 -525381818684400567205120773281808384 9595579761203648676202295456694272 2257362342172035776196570622459904 -33352715981495007099831691679629312 4946540073891218635310260327284736 9335608680346233978521709063438336 -578408890307864684010429472336510976 600646218963789033917623476158464 1202263695871212726004701728866304 -734880085897032255560924164557635584 4204953343190182367654124267241472 2532790497745394996250447783657472 -715164030980998746713525089313226752 5286773532191377701613955186688 2708614284300057881599962842660864 -420256445764643710897355470640513024 571771252952231714472800940982272 7635432414259227943432781326974976 -147630139154215264611636676569071616 9120344229525495441353059877257216 6159567007769533555372616411250688 -402296738238762013657306576782884864 9509583573078522674003590890127360 7301529982208614380639111794917376 -916516959404940568930969392934551552 7438133596366782512057286186237952 9413417960302111293969933734510592 -200591118293169405905001983208587264 9128284168948846019370729368190976 2516039439526223524271257481641984 -696793169525621192547476443972501504 8510153347643843832509446299320320 4913732828561128402909701280366592 -492188562108965144858928439478976512 8862463363643503419141346748792832 4667089544589180602741062595772416 -173571824019107489686860742420070400 54569953722370061855108357947392 2155322298160564690814798156267520 -294541868993463311935544880223223808 8833743023050315927080315132051456 9538189083242526152847692534906880 -521666246946846961338940172581994496 2557372944936347831650263184179200 9599982100057948070620253101490176 -393564885287244990986245720703500288 5738548704377700840150044239724544 4146126525514564328789008025911296 -243322027396922533380712690060623872 5683448561094155438692028402106368 7011358060754508268121962953310208 -421237820886531751190728681105391616 6488927962747032711286035046203392 2472484220917747350012660904099840 -570847492273160850446391888639426560 2032809604055010068489659977039872 104618866761419614724536682938368 -103444957917085757558822254116077568 1370386475651463279182001419059200 1392120832983224599565269834137600 -979292412947088683128307702378266624 8607135663463988588361317609373696 9082466488841077278291558012026880 -308015421775895120587461050606026752 7543090901719576541388694257401856 787937584475914080502157309640704 -570197853922755149819943830738173952 7867436393433946189065756826664960 4396329008414100486656621400817664 -103085121227625133888582729500459008 4217675101504444124113743994945536 4651170529317543610022892792709120 -327014397887100580205750836401274880 4615157347786913162545645337182208 634571876479628584112180393148416 -913536406759872331164123516456927232 6390902198059460395117300743667712 9743457236969942916595713979711488 -891972269684398739662857767787429888 1797049943916860792910789061115904 714859466278059649727210524246016 -656438832774629449859874078431641600 545153888392647530910836034895872 311565293477200918699123987709952 -481816433021696091372810538426826752 3204523501042324748601283043131392 4552075824482293375516051905708032 -160396855722626587161837111668113408 2692285344019690847718722005630976 3017820494844075670893081284050944 -542580520395196064541790213081399296 6342957372422957635403438341750784 3053651494995386256490780122152960 -652468548505908311950858848846217216 4132503741507949575427987527958528 3894854035592372984019516913614848 -367539855740115534802409854261526528 1703085675569050755892276174520320 574017178691469873917429324709888 -622982178838872598999094625960984576 2332547826623867953881635318923264 8982331376101938660549227913936896 -179506057895137894042802215024852992 1976467611035038835607840026001408 1419540802637167847847805788880896 -171039178005644689567426457112674304 869806813464180528161907202326528 6483066720799550160913772239126528 -554523058355874126037860042149986304 8599167881041217712096611053600768 8081640979451245252089466098548736 -743649359405727863328535415223222272 6972770572624170106969938561335296 3854313175689879648340362292887552 -466230245821026402062499271755694080 538220685252627996681710619066368 2076168982325631990923704552914944 -52725920643771447582309281639170048 3016835743707126257037251839000576 8514506435481696417583495250968576 -515432542048160972881619526973652992 3493547893228507577109118980194304 938503750571231030530570473963520 -103364612357058515818197921392754688 8510350770625799591095480109498368 2989771887402259088995232428064768 -881442077796714359385135981449445376 988690879197462572540303897526272 2941100207535252528881112822317056 -348106317760993047725632628614758400 7013835609231021455949430649782272 9693022626881099151417913414516736 -992939603195033979278184156913205248 2633750959038901216400839547027456 8641629825688879133307065289670656 -624249509068092602401155700993556480 9718042702337486350416001173028864 1593815304494044449008171610013696 -595607225356100661973897021130539008 9514875386237103997383903933366272 3249011972458124517784382771036160 -595956703518853288153283444416184320 7148300920969259926228837941116928 2365086882480130935158311961493504 -684596952171400468484577966516338688 8333774168889425024124937222225920 2745842352153572897420820416036864 -234563487212840583482907318896558080 1314111718414202500259104281329664 5448272762435119818368815995027456 -496692220707192499988507380844331008 3623469910414049066304020835991552 5449880990460298915835963015954432 -912939832952451660574206494800609280 6065086012371747580631978124247040 1654151132894079235400640038436864 -347582266060562649975247106853568512 8838223096014272233110775936319488 8813379905951456604413056335740928 -310000092271695966183115252752711680 2613933142675363612010984996077568 5577206170898722313807486768906240 -212615934213173796518521673242116096 8324249847112608938253415790673920 8272857969726094612346974100258816 -442727861838252266496003266825945088 9009203665673687816075715413016576 8157455638982951711938350369734656 -206742015858616813954328079544352768 4352324973968874830751344114008064 1010187450585960526983551864799232 -157861072570992570663851077419401216 2599089823304800565739756047040512 5980667995691725490995605245263872 -142469865879012377041513973156937728 3471876628504211761101654754066432 5908201142981566677837783146430464 -930382448239491182329984837878808576 7004767400992965468461590690922496 5168146593246143015823515565686784 -523553976034736280894393793999011840 8662259406822337236071306567352320 2552338047744756026677647332343808 -568529348133086013240360841527689216 3589174601862850092472100504731648 190662310291553717326758748880896 -444161213881814065620822860790497280 6345291156020598950325404091547648 8878755892192100677576338171756544 -91546898115702681921207055190851584 5024175412720099849507742309941248 928265998686967925525536313442304 -14709079786181240507272855715577856 1899960967802050783653118414422016 7694674291663730187725636544495616 -647053027195738920045738306312339456 3794273407390795710262792526233600 6234637397724801042896197104173056 -180395151848584558917545177982697472 6383284723335720234370155094736896 1989896063622029677042122908237824 -660398419759094634054509646770601984 9843420514704335230118983744094208 130440759766635325961372077916160 -629569885038628376125577069150076928 9764317464557831863392322430435328 5898712873776379498753414687358976 -717315306340524466492455107803742208 3195207066841880991432213400649728 2493852189199314022758238809751552 -885882849904115731987662010325139456 336929732844059351672524304809984 1302554889295745907442093320568832 -747088849043930315232431822451245056 122794728223814976945875109019648 2641260730612636564537154073526272 -302715118768706900908791117660553216 7367777798676953037833122313404416 8601466309020628597306264760877056 -756031167468989423815666851012149248 1101080555150976124427846486589440 4483016214719104989974662618284032 -148694207968253104292975718470516736 9240459993618747289162983873183744 6644128578575344446908224327647232 -448771265482835908534729824018628608 5920048413840026411182912912228352 32264175042684486743893078966272 -111303590622628630218021234324537344 5374052328071979057179918428274688 9161685267473108262377701404311552 -707898860699581889697163253202812928 395543974923019626596856930238464 3094034234107077734548349999120384 -57141103371733487865531761829085184 6058572808838625475057487345352704 2611392667357604713471588266147840 -408000459288102632521334722326953984 6699052092823672885325303086317568 8018542726992646812154567317258240 -356401209187134991880488723503120384 5817818662016572674178010723647488 5467258566531239824968596978663424 -551858460480520297732977363569868800 3793714527527634186963097825050624 5896685851157792988920410173079552 -449942014836816354164690370468773888 3757445615124831043333340205678592 5345357876308330066410939005009920 -753627175778288502239900417723990016 1507828269939650265451149953859584 7029106806092265860661124167368704 -542153496288366920592513584620109824 478208700040944839459500090982400 2513665469494933903756082865504256 -942924676750640533214611452496707584 2618599684437225506974182966034432 7844281045949979217151637917270016 -186646639698913856108365975157473280 8397383265969669575898746757054464 8837304791666287898721077551955968 -104261640484363585325810000693559296 6686935697650099403110361006604288 6340126697909699562929680820469760 -720375222163199351615634680800346112 339766469365717756416638731681792 8461876957388204224297138841976832 -69732537917416341097775939387916288 4452435645436474694691680210124800 7878067832366796933491512783667200 -259878815299689330328510876883091456 8799796249212537228384339593527296 6367261922411084788144660191117312 -638725278386428509415257195172331520 7219769076545462870394696896610304 6699221286018362736909343438929920 -96752817638842525795666330407403520 9496502731125103821019532824150016 2448579111425258744902245083512832 -417931201691947826561351207184498688 6830909842361398150038377488973824 8538341701113951462401644464963584 -732999757613754501454857838935408640 5762160458543725411310653503700992 816423569929635422064961784905728 -181213393092323683476388878674296832 9531114626604199043931055232909312 6303822683194606149628946043371520 -133982381036928452055983498601693184 332713575749196147127152914989056 1068794203017199608730988505464832 -954985538412384334061076542696456192 5185085980788559530405803428151296 3242321779125443658266037935144960 -203821638729184920550330306643623936 4010946168740460105360591032418304 8218376305144941743863564081299456 -315324145954604828987029685400502272 722360616916450343575500917571584 6175032282744457964974822687506432 -206819570547911595088993905897635840 6260449974445476418511432958607360 4991122311617254915475575331094528 -719088784472487707480425192774172672 5123169678374826577064342774087680 9895206789906685160265156619403264 -123541749987405404862142721959133184 20221381564957399098458103611392 288517927024471950503508283752448 -326403037185302888484746506455220224 2372624091794975539119869667573760 1427831267728764544481287353663488 -313546248344867350221619868303622144 2704524410721286497029284668899328 7011144961679699331607217274093568 -857002824001810364377514245263196160 4429055834778726816411826788499456 180044895738194919527607093428224 -684695485536123816054600304768843776 8522840207801177775887657757310976 9590269412172948660228274733973504 -979074383957582410529867879057195008 4670910508769638617861331125010432 8471165029767690150724869176688640 -78878166057790096949341607134494720 810778124122423273463354188890112 3429384195994662600555561098412032 -466208394569190585669811674697170944 4608374077388365605361417837346816 4936201899692697111238755003400192 -101776617743453534427407247158018048 6682028359661549684868894601248768 4567425108508508395445409546240000 -489629594915624814526926796080807936 4281790933919610005253814422077440 163690356719175212216397210845184 -503761105129865308717492419478683648 1374543549676216613773628716089344 2111321914092551999232633575833600 -418874752478672409796491594273128448 2003283103239000874557605335269376 4126129191104638007892787794542592 -23828668153938332965054006979198976 7350634548513574490356479990693888 4661643864325855278867824051748864 -175687891857883115826829281189691392 1500289860267924385364080345481216 1761216581284942920718215272202240 -272557502716197107848339510362374144 3415234053129223461869727166496768 9580876668449759521224321509883904 -132827024781836159716161063391068160 8349412956761942816079139867459584 3084353974439997796242075160674304 -671778074926885615899694194164236288 5386121757931432878941210031423488 5254167059929004731221444386619392 -856830980759375161670833547509760000 3839654978912799791623220450295808 6592719674234940903614760888565760 -161789318213309840733648088408784896 2258728633369681785492148301332480 4032663991916367652381357437353984 -571640323408858922971743204105256960 5294622063689357524811458096922624 5956984939346029689222837401812992 -368601754923297288507747723871518720 5585384562538618285714634933534720 5029924522908057747743855620390912 -225297089388103627718154255410921472 9703970767909270674935838826037248 8289469932772203339643958578905088 -295994368213690077159353653233975296 7123430242566542083897576596176896 653789022379378502784823739809792 -766220284166201739181591102262083584 3946686385761526481313791869976576 9114029896532330571236918010314752 -428109335717891828083312796299689984 4920112949779006573568093134520320 459709569467141618162194203017216 -605392295261393145721022011114782720 8270807977969258812619045229035520 2986201897004429943314006178529280 -436607399148323170665099284612907008 9752299760154457128937749989031936 2339115902586794412118892414500864 -712554408417481158893818788744003584 3927105250077131590798552502108160 4076563651213598585026803090325504 -285112260620237803101344526319484928 6101546939811732046979148969672704 497042061619230429788936127643648 -23457297178976974240719529620537344 6718730959861690885898723032825856 206984454825183335686269204168704 -648218124732997662947066599239057408 9790411217332764154643880720990208 5556702403610402326870895685009408 -468958963906157479691914439305461760 453961170046430820053961825845248 4670460796480745013164038086983680 -585641350111969087424525048102256640 9414656156608911443234785857634304 976581770964460054850271889588224 -982923954977418788611614469028577280 4992485832023569877918644889976832 8247049453297554289482919292436480 -692353954714677444017727830094774272 3047061519821600782988585258188800 2158694940750521905056805220777984 -168486501343756002480323205105975296 4144224988261087335909485768081408 5237007538072953029774162004017152 -869803978260299511590816574299176960 2794803577308438186782070346350592 6557958673397260299924945290395648 -935514118442875419197565127027064832 5328817284511152114122753769996288 9799398002694811350265301053734912 -70862228267406296961860341180923904 4407261923101699126186505735766016 9411723260616290413887595248353280 -127274413361469218655383120492101632 5357169879088280889342721064435712 5590868168108558229702725553094656 -744876283450661138868952369368924160 3266240053330219990165670957416448 2134211040086426751716913382948864 -525682333884710882150480156160950272 9760850971170329913165727341215744 8350083868635251412725891862626304 -10865612981703173270505281053261824 651567909437460107911632800186368 7402599545059542269291856144629760 -996097566253832716800471166821072896 5397490306877227897214412462751744 8560203049676639057109241783386112 -740072730426804464923894383361654784 3054056119361757248298772393361408 3651457935024764672721739633917952 -899264434970390235924254210943614976 4100630102040499235630477960282112 9587496020116484484597250823028736 -440675438510812982068829201690001408 7042198187814182228604653320273920 6970048463980533388463471337668608 -472682101004874821525606215960231936 8167275828915006196187430255591424 3012294430952016389464343529390080 -939002960411595245516669045381791744 5602904650928555046884011384242176 5924801826416011083825399237443584 -68304344052086042215327383498522624 2026297467396867249091573413052416 2283395249652685319654632297857024 -194712480968851616664194222693285888 647752169121077185389342289297408 5197485288217059204417563165458432 -71322026491981423457013702242336768 1274513212686770842209204695990272 8142651993329324009746578156814336 -948300877309615018270803113824747520 641402003129697500042703977578496 1480489383920249575561408058228736 -848092186286319119374460552013152256 3315251269344694283534708454195200 8251131924768327585442734651998208 -397665204663794918024981016593039360 7099639679517176991727295110578176 6103600764578265404347458810544128 -580811087005355124798819934287167488 4150654061091299676264744773222400 9347582179465381023623800760041472 -377884257557176409543640490440654848 5577780682360767763517016431919104 6864399253152956906082265200590848 -792658589583422841642448278419144704 9168990252346031849782060735528960 3766136607505720785420255192154112 -637320109076654996003061441652326400 8106494475895293159121168927555584 5400842896967808856358269902389248 -197388637664838049403050469919555584 8647425452886893958255700065910784 8180719434116699907667591398686720 -843453162495847637658723835193589760 2006038444512354002552061442392064 9795461713838922658772316369977344 -599562122960756594794601691796733952 9804097176829954597443019137351680 1134589551823366041975819922833408 -635220566850247629112365576108376064 4144634547848861946089980003614720 6667813100949502547534126338015232 -525201988057831658769627935598968832 3967954720722580109485690364887040 8442385870171774546518558067654656 -979746524999524016734157018671087616 7610542214388323979223286646046720 7007770219072316603083701815869440 -791245531800175351357283454649630720 5192980216770887984390378507730944 9164887963211359907402354660474880 -846924286228425470971572946588401664 2167377840330830796703001426788352 5258618531579908498988133332811776 -879232863418045159833409678724825088 1429771913779473786869285088395264 8176055600181735527292691755827200 -172410088896738437241402595641131008 1609759140272027996558842189053952 4064792722162201460770572070813696 -642339837816129998124225099124965376 3104801817841587436631246225014784 6460142953007103643759395999842304 -937619086599414205975199367938703360 1858286228432930688632512573341696 5483815350190394040461700131454976 -682058259918321221144212322151038976 1867308171362673310660987690418176 1729439360699222314446270136057856 -463072287977306460257710714692567040 2243638035243656024128897744371712 2609110271578776309935408192421888 -345045197504382187013959570472042496 4355941177472023173609439952371712 9273082361952272169360557718110208 -924641845057038572650983047949189120 2710725328558952180007548804399104 2867040976368007606695954493734912 -343241245856794514152923155826475008 5969099630603250546070547121307648 3929808670896282193095366866370560 -328923569394021052200626549015183360 9117354758790917491528562672402432 4605733982563945744065895520534528 -356050287513690100486604677839847424 6566827043969757056336748173328384 4437590072647902879705712816029696 -33293390192073684979306594933145600 7436076858013791143571050110910464 1995369341287858326502425067782144 -151721955572757142413421252794384384 8004518394919927883313773564395520 6045928278022131663216416456179712 -603914100690789085003787084035522560 5083839880942760711438944367017984 6470234034135059763891987262996480 -980607186872527444774214179198337024 7436624105209971183191701640445952 5203995191375873078433152889782272 -714662095829232321126403874228273152 8840291166181918920654737983406080 7861191930480507247284970466574336 -712935935797560274585976194432237568 3204294141036282886788740299096064 5614525906649248095651367154089984 -347961214046589982036822737062723584 4345059441791262501717617191944192 8201527005907849512221665719746560 -244289544476059786915103251862913024 7808895300246140769611499379359744 4560611193639092035229937626513408 -269828847501367685984459720046411776 2390885442530341118379209827287040 750764266175753249991939950903296 -377582487167726231299697826022293504 5207607488143455290860585701343232 1804617111510616239731969403912192 -844272636543730048390694822152765440 905254135148226341112655680372736 8337884299122935120383333908873216 -314748009943474606484574755992109056 208387251399148597414530528575488 1434685427339648237783389657104384 -414568813734531609784189867607982080 5726332049603675438235914564796416 1066545385214377554445844539768832 -411501586967750655756898448860774400 6102988065346425291591967425167360 3643787531279663745206602606575616 -66242138491979370471145166394621952 1608579130583192801563587412754432 732748530272837742747201411481600 -405896456023548005632160243812139008 9578687124058557207261778435637248 9324362793771222973836609363902464 -85176496614905723708735087443968000 4800647427936986633919157327888384 8027133238751459972372718078132224 -5243654622750767215997447131103232 4278539816151999645856430039236608 157455452594779653916644421402624 -823535752343859333896808272349888512 9644172997797953587971732264714240 8740268040958963889348111306326016 -10738497710413484346916963648274432 2330088826385112015491153468063744 1330617398240601422339455877906432 -180290852111242544060324767353274368 770000454559507585660513591230464 875115773244702562327864692178944 -697031874008170733054488768461930496 4416318730455840826680731362131968 2576167667388358623613156738465792 -362721133209149337065476805841911808 7018188261130448999434500301651968 6283243837420536920841297149820928 -737757187150969638914667342597193728 8888156203789509428237286275809280 6866377218149017105105830004391936 -441590640482516674048451517177921536 4401854888069475693676151114301440 5753943120820408300948331857707008 -608809219947630158640566693408014336 6385937533120149257896480731037696 4353657344896635251256044682215424 -219894306637111200248257808183590912 9673645559577231402012674841640960 7381379213055684519483717218992128 -87229714468408818912035402011377664 2117696507541618428621306103595008 8372292345794915492301661102145536 -501871301021508946075943048784642048 8684305908658624901803937923858432 3363082182527035592815306141073408 -685497237512788649613294728300724224 6786284880797648042283209509044224 778434438933058750193959425802240 -225567078007190769086011286103261184 4772662427423546846081299962134528 8165623289751398124289288629649408 -171802223105776455601684472584470528 1801249081766861786502984147927040 3242463520765172460437657436028928 -82676195331004345728179488700760064 2524602346173507289217221674401792 7205102711637731515281229073088512 -278477783939087848576089574676103168 1892956046462609324177949842210816 1324526047130689552944084874690560 -546951443645498921693114657568456704 1702299263940867003122998593978368 8242023120181698898090608272867328 -330345743849679021492949568211386368 1869085087574858250187307403444224 5459836989004962012638534556450816 -308417634309043821964295163690876928 6413155534410992032272028891348992 5693560921257858287557232423862272 -871986893073956115461657340552413184 95951563443265046671892670316544 2643922994820123283096103668416512 -691949341898615571487421075673841664 8142506587498531314355796732542976 5492765676274288914821402555580416 -255865638233402190719404308525219840 9284966581834505220773828936859648 6182911961711910154254099186450432 -611545322437586958053090967330750464 5294789982801295509867071428100096 8483389367583360270769313412022272 -292435156903854417535250526692704256 2267974468448674189570312738177024 3646827240074968882173057515388928 -251098887752050746327078636452052992 1247738468783748494394106759348224 4992526132020443232432481355431936 -284977062889229862543439152589832192 3089377978807772041581783624450048 3964638216936155350592762899595264 -790203995732820480183754275413819392 9346685238640452219429840186507264 9631227473263306519917457437622272 -745572051722531637777125714998329344 4248469674023054701568711970521088 9072820154100494263012810890936320 -176186228887883102916234319977512960 9532750478055384420146176828899328 4607435979951775223272601708134400 -548961298827945951874132510045634560 7385508573062295608810309410619392 2453211105033097847778622587273216 -765440597822737285373881012277215232 9317669545661148261345951557353472 4029441434020250991721698075607040 -292550883270819133720773033361145856 7508160343870449847993825134379008 2993511886168013811183746621112320 -508664716914556471221344368634888192 6215244620595553398559221963816960 1162829171840034744072112833560576 -975748572961016629794191057268768768 7783016043505222475174189484474368 3838596170222896780908456390426624 -860219471215033530209119346056232960 2112537784407304515768829572284416 7240039552516885148671070756143104 -502172640337834405739183065725403136 9699183015991238153954256136175616 6736141390931738731659274276044800 -658692629743268553064302227602014208 1974095619748922746077294796734464 1603541379717159188215397408047104 -49661246585774783509905075064537088 2187305060708314562386960935026688 1810988535014865727287642342555648 -817539648249645819560213586689130496 5094800690832773529267984868048896 3973593984853339351554407788445696 -999511789015034692801260134028279808 3797884506853908499709424264282112 1527996377135955515087429214142464 -808120399013000504362867362965225472 4512646211097228142617448914354176 1730324997337195927992346261585920 -503421059241942676688631698097700864 4343041924350515194916584686616576 8895995803781711195790046029414400 -946080030199980848601366245203247104 7427802082828897112610448873619456 2076954684790768412887417129795584 -160535823176648354870387417863421952 4211427540727859061580557235257344 3970414092487117779221556037156864 -1894351652209903291249584240590848 2123010929074106674532874222305280 1794766567198577447248238544420864 -386146624982358826517875435545559040 1052561322458417260375761458561024 1985402230345966244641269014855680 -39337057143609549359926035794100224 8850802503275132841308917996716032 9829924569976279327466346969563136 -986252092796177866260837787016101888 1400543218422324600302399091900416 4559217122406459259951532675694592 -144628812715316336906840700350365696 8558439617499529983895780143923200 1686694545238188352818274348564480 -253094646585122305823395729268277248 8350384635226955147558592905740288 9040738676207254486111386261782528 -818709067268827125794467127113023488 951456996536664470834537062989824 1892914671881731478493714664390656 -419785747829286508841034626994536448 4400758018986854574192854451617792 7178594012697142085135192467439616 -112081743739571936997697474091024384 5832949853438755823496323051552768 1724426847807498034386860383404032 -373408880603397216556481048876154880 9215075770320522475207458459484160 2429310671351243806563181457833984 -676399664183287915307608935885701120 8963094291266040490060418096562176 813394996502651523094796126126080 -502701242936917191098441176310611968 6216609574746012856140658221514752 7358190183189725744057333212774400 -420274268591720344846791744348487680 5329164666414071641336022093004800 5673974924077931810224286969364480 -911212394416251973887727777481752576 5770670815404456210519133092052992 5701859858384844212122691846537216 -282463358865898219973283783131529216 4776568851645071361454928761454592 6039600550137813368330201388285952 -849494170767661082889636795113275392 6036171708832305190153753429278720 5774977515213533957087928661311488 -83694144493475984060246809645154304 6081552977897787372795814347800576 1948875373490336959353103721693184 -710833476799557338622340522766761984 1823117637439423743200145547722752 9518224508582958314904173840171008 -801550385439187160924532625457020928 4847841068582258305824428384059392 3218617948751685137285524993605632 -639670694096943463521588466535104512 5742068998663419981390864644571136 9570797591514565174964276481228800 -194152339816173563380692075700813824 6771476068139551830876515706339328 8131997675850360518403710676631552 -752301085173917182891831355208892416 4795996126329549416531178106650624 9676486410042233057167899491303424 -733741371495144828693810759000391680 8549983055432187481265333482815488 2046544562866902318227669703983104 -477842336554780105021015131609366528 7270135026264688398830845042884608 1757053436094550595945554952323072 -674958851979369032837019924468596736 8227300160613330510937216096665600 956939499894897489399378232737792 -388613915526829382605891539069566976 2798762129191941266969877515599872 87318559629803472123865333760000 -202844721580500309362652568591794176 2044649339323567993892562330976256 1236965398721982864148588451069952 -957963265686625636913853820724838400 6627065563140743998285470712725504 4503269470342716399408041139634176 -553300829210765235469545911170891776 7099277811272835325380914069897216 6773056830795920391187073417084928 -420569585738365852780588040720482304 8777366641537718277716504364449792 6787456639472719536207191512973312 -458167436488453371284177678044758016 1920882950950220412493646543192064 531587253951003804247075258892288 -261466044527569454121583276460081152 6831503703264593636256528065363968 9994938563123643152018507552522240 -842864112794153502187118517429469184 6602076537413536068279668955938816 3778492905506250397468316510715904 -500605910861738589642196582513246208 6424576605515637005569112886214656 6462099459387350138485313644789760 -329143251525701068195832600970919936 7906570519346790890827069974904832 5642724003185085831550387825410048 -765954804885394184562496664063967232 151177316416584377985732903436288 781665194035744165513763846356992 -143063393178898970391928869568380928 9387947320598653024669432151015424 7000367579624054655011797067628544 -512024899505694663898685505317896192 1113286542779425151262066741346304 4031870988696806454692924054568960 -212829864077208911274263317594505216 2465961707204912073870506062774272 7221035654591896926738239960645632 -422723771274404322707743472890150912 971313166436218693662049629634560 9724947681795066566236316305981440 -732654839399808642768864213785903104 1462728714220427964606551206920192 8586279797020559129554950494879744 -330279588189931310589214357847015424 665188808343450014640923725529088 4520727334949629056768998840991744 -902975577730402917152104755186630656 6110649927986876293856981323612160 9579314510734769197904112142778368 -151020425373215276915726703656960000 4751849360147901862820393024225280 701979126659277962990689554792448 -924956827874490624799695095166140416 1128109063546636626599667593904128 9150790692507674015352733185343488 -950818251985041257347754980137762816 8601073512319361662877109787295744 1487437137970323397588667307393024 -595934387303670456571040062941167616 5840572878902397384377507399073792 8723800568821038012494082278948864 -774420507636090780453053239069245440 3351798097420788543489897117253632 1869801616953664626817120038027264 -791804844231631180736061627137261568 6381249486644301179029928944861184 7671526020860148305687813313003520 -199600688149428519012885371042136064 8065287507307201192046161515511808 6844307410985429804374625676689408 -14314274347790809290638851947102208 7791902378925307664554783309561856 3649557128457211720998578397642752 -831900766669146138851241987584032768 7194625182855379921432247562928128 9136864067213289056613860861018112 -257756476859386966428829682866585600 7375612529464598013574181482921984 5310085673137070242589868835209216 -310188000608099676753701560765120512 8463091363278691040768378932297728 9401089841490053478194062701887488 -272526214744583996607449342530289664 3729684720073241359411882747756544 675147588440882225241025243250688 -375629924314606304071649409481310208 7518141661824318073482086543523840 7336402094029006200595727842803712 -765331880757756661646722835352125440 2876023201086847074277976726044672 9498133699557881188296528467329024 -92987399162149515966802092384845824 7087544747616034889114926134067200 7001840250738373601095003637022720 -863324677358180279641193968348168192 501499728760440050597197525286912 1217001029821977396232142649819136 -894316169285145404050622152483799040 6137090414861912526845503734808576 2274355441624729249373073075863552 -990398280632439651042861943292428288 9020743357327443725112044765052928 5546767880547823786857263597092864 -857514050187242316657528743238041600 7636477283056949934683090256396288 1218316321592856016334395050819584 -663572698028648731410955434509467648 5540217427138607386740084896169984 7823282177597918577389392738910208 -82639422538710108702531551859048448 4533830938833522601683325395402752 3448819861279632647014997926346752 -992002682162504632265962748907618304 2911565979183630806451747471491072 5284142743450928327531766069854208 -721397595248392500752702492175761408 3140369516194092420122848431964160 833195537262971372523320802017280 -803648348898948823750181434811219968 4417171415397744372027894198697984 5366170266705244657889919952224256 -164526424860811799977358702053163008 9753049216654042416197583700492288 5832242924330548841613024835928064 -158591345238318115720939376977379328 7789540997925161006433120882262016 2895127369373722832896819684442112 -433101320161917503230114942385389568 781571705606740989754408729313280 2580330484098724367124282182991872 -620476009046489593651801784074633216 6564528491665681758224752327000064 9446158706640241413930738012651520 -282774793401979482455600128298319872 806850905954158665507935975636992 1077788459556502996208031558008832 -456358766015781451138034097656430592 1656190041485587388954022609158144 4305432571190460727436103242481664 -761623870081095902867930953136734208 5989901175722728970810584568168448 5833196287945065413286089914843136 -415851530932752787220353500017852416 550633149684392354216514198437888 6795664321670033824469178023673856 -122355694939970391039376296962424832 4935147201893724993387232072040448 4495520090689523921005989096062976 -706866261583626504440241369305317376 2958351298987152095458106078658560 250716233399619486633750542942208 -161552262427986613798516607718260736 8051775045289556027454039686905856 930904521628725355810915209969664 -692472742769217891731213404535259136 6104462977669095793978279966277632 9857062793999646043158157891469312 -615227377987057620526980795868381184 1987395407868750416369458740199424 2893721399802528415902877752492032 -360337878196853531478251049995730944 3024756554710950307794372440096768 1298641944156302396177136857645056 -675321773671793275563154715097169920 7650743309412697985101695337627648 788137650872124619893646271971328 -959338107471822455554084530911444992 2310115985449717751988294036488192 8021143009961613969959608479907840 -846036956137973892991652127232229376 5673487120716204944669771307155456 6701265805261792528564382913789952 -682814943481353362694844944736059392 5006221866867679279110200531877888 8083295638550958949831733875310592 -723619261419222281402853949721018368 1419040758643000101037912142905344 2479052098830137363792779982929920 -860004481528106448906674742654664704 1540012024567658155962085297618944 241856646476273415502894114799616 -732939302231120340264788301258424320 3198823242717326900037458501566464 2864479812957710621229222589366272 -901514731508178126514342753539719168 7311014060692173199633764679942144 7457044860873354859367960418451456 -340311010434227810689744552872378368 1455035404301510702999947312103424 8588541630635713628388453462835200 -522233281770544457195698363515797504 9018473983465774354717406868275200 4028519448614938829150573115211776 -468011840768125906446795891030360064 3179458512742860281154832403791872 4752541583341272686071516032401408 -688867990717187989604027831697801216 1015926575163686082001341566156800 2716953223624007172658294635364352 -870829712075442543498187330862186496 7885222087795475946751554886828032 1814807406886923433120396975538176 -431830800803995061050911899462402048 6480699621689083692593384634974208 9502303199899971850605512840183808 -239117784765875985762300667835187200 2849779392693990188671197127901184 4418670793567246226936973712424960 -258225972815879643175998415978889216 4610180144415252885430740155629568 4247515169807687676855575254138880 -554989461494576304553810385879171072 9886201858512778751562328890671104 1371798883257466507004957285154816 -129680554143228940108523223981752320 680856495328927882921665034715136 8094371119208759693503250850381824 -723526163034784586030337606471909376 8789763489788649262944650052763648 9729537660728237154715772775301120 -215567281721923398708218465821392896 9948084968290136286511929564856320 7389997151794168436236525074644992 -492886751363805695040927663013232640 5071187952674882451066670484029440 9758563954836272390701026354659328 -287217764745771438733308963466510336 7946335290868599857567332564992000 9830979171078289466668378499317760 -875394996600017443649570978758918144 4700315532309682061612350821105664 186861799368155928253987351953408 -352308960155205257884405742172110848 4947592645649261421028235450253312 4721171727233138966371381266087936 -936570083631942577991774198380363776 1566238511259129130457470639013888 3430978507098752931495957726494720 -847579945978379406946714256567959552 2584048305772386162364246145368064 8639984562704405544255880712683520 -88092822774322300415787954662801408 831434723924826499007174406045696 1565456486798908107069721505955840 -150882630757719007550944238383398912 615724128309295623192556362268672 6905712640046858708263072201441280 -681495847608796437855007340062834688 6316214924704162691819510008119296 3364511245561144865528019175866368 -186262440144010446993492236396658688 3589643433414032070922424580833280 2435764850122073844698251016536064 -339547984814408532483837716269629440 4454086276528367684633020587835392 9875698918280871961075569020370944 -971429457524295875554194904697536512 3427573428581851040174252635455488 8129145052975663133139864024776704 -229958599310065392856287392946978816 2433838352775521430213560968937472 4459407978896602900549700969037824 -923456801837299278250892043193679872 7257165381229503088550988136579072 8127911154848890668983300355260416 -740958276564075829312783082368008192 5073771555640452694643438417608704 2976251393944263954600524165152768 -387911266308909405325908759189389312 6062288254217829054806527139905536 4207696652643069846371302643859456 -926641172871537469892655752612413440 1392477839732033237942064029630464 4553374681846691621704440299388928 -731995881950466147597657365169569792 6332256781926655285376835370614784 1497061708586150598025781035663360 -919949420421106034569876026028982272 6543747203200940892250928786178048 751933195751674813685180393324544 -781984107362256832439055740766781440 6287769644505627044229028566269952 6291689067673221798571008625475584 -538994806644208744000973070732886016 3094218558393592016445215684427776 8480031602779283868034282974871552 -812866659402594327770092799092850688 5415708780218310726563381626535936 5883603824109556160759660472696832 -553944632942911817475666710527737856 3795262106704867788232322621374464 8581800853896017083116984456970240 -235000610374500671696424263022018560 2717288389469777264415453338402816 4345398050806469518681351974289408 -590827113085819806737125540901158912 9878758914411030385357680160014336 3981233770151074717429587507150848 -104844250743290995163163206403227648 4630262828355433663725908493598720 6005834654364698732027923868418048 -986107337804285043517450660066885632 5265178127798419659608289617903616 2943710921210119260226240869564416 -614149110687781396198262007813636096 5218960468454799914988162963734528 7802395476342109652549389988659200 -460390757486396555442709975508451328 314056332093616597461429951397888 949137648681650319624752404103168 -374550347380587746680600557130874880 7960970490879726837215194706345984 1243862515557845333435655437418496 -495645355935426240778780137217851392 123543133266474216277859589160960 7543608668016825872269859314728960 -634285689547710927567770713870827520 4192860578771524401476083812139008 6397122737114685743537624293834752 -728908135646652465993625000149516288 6705940731519321555699842102067200 8087613742296360818926221543866368 -504010976465224380806449466206846976 1611374821004000158057783650942976 4151423657629983314382444749127680 -185819634180090190485177686277750784 4845645075394810987585294504558592 9425025116469228965280637786259456 -658538555652438714415227425423097856 4873631807452308717346996485095424 8607106957744952901679325976199168 -110211213944070891376898636202901504 1879095680668092940890537405186048 898845635243126548865847941660672 -557122303377566607038439058361548800 1227570419895262560481625168150528 1042262121971023920698298780876800 -337806465879006727335125576597897216 301955903103778049783219745718272 9701477049093660528327634595086336 -450115423350795727928173635907354624 593417486909994380423209617981440 2509622321738191795572264893677568 -75397674460947653160908287402573824 1569662461837202077089165085769728 5002660630887096633550918027051008 -785843473644666401857840574887886848 3206016392026436630465068805390336 9439351289717654102511898232619008 -557693291945559609102330728514846720 7085285750809056534312475756068864 6145511648938725881094984483995648 -346443899161441295122483292714041344 4455152352240165295304966934626304 9857118119234144272288562739675136 -415887845966654978010300889461424128 4209569230871568686684489170026496 7434649041434728997290904146411520 -951447289827803777969398148489019392 3887723283541532356058195012091904 3157807335854667783031610734018560 -426815705008850731867179830715875328 1330713457962187404902162350735360 5409641399104781183139290118356992 -112809441313116568857582381930905600 7776071534574047404514111387598848 3181081618553922495971965265772544 -287402650804836847982957266139611136 7785397846926325909265188669882368 5155791770431315585518363176075264 -358049536652390475344805374197760000 4265095474159557034008981610168320 5591702146755510801634150341148672 -636689866799956499792924788154957824 7306509675437959651547825653678080 9278557197686912897395706384351232 -481059249834963069216971115672371200 7349765155940570443606688580763648 2295802692927523588264345127092224 -736845932328478486643511524209983488 2509823451956967750382814180147200 4546176261127125621957670203293696 -174290819577997335249840589808599040 7854419462313637824452076003917824 3104800789355752254532416501186560 -576586952511975522923589252669243392 5758774879972133796207514185891840 7958484447396733321439549021224960 -519759828280425229355564590440644608 1146099966733554707668548221665280 3957125903301740552149768291221504 -532975002324542505303431683304849408 3987920957856945768495660706824192 5230646508489659645694445843644416 -489287758784375487862993034556735488 5676201558683835790119578288259072 8091287834617564416263326785339392 -476572341050754596066744114404655104 4084757434960285505203610576748544 3079511606450514088705276474556416 -841096389994778476822561916752756736 8529263005310391263545700216995840 571459877522772361435868905340928 -227037208363061929611278705548591104 5884055909640497857185423760031744 7681222222135673606228996647813120 -968964933315425998314293041760829440 2918255615305633776393105545625600 1364072891814687019197929611067392 -996841520147582569098209726675550208 4536056503512036595179006277451776 9891959790739032628107264772800512 -402044196573778197426878722097545216 7688335001629901749149037716570112 4157354513258834303526870466953216 -105928056073523710936187045037473792 972376211945915626543208279834624 3395366067774217638273803272323072 -595458581335413501176669169891934208 6820421523557017563799163167047680 8482476974739622009720332221415424 -567178096157456470621836621761216512 718491577657124908434933250260992 8154687160625014156098656253509632 -571343445740552661198565797051498496 69005765820217437834859365007360 1718078508608923807890559937282048 -432924879245377799828119142765953024 312568660316966708547917671563264 600467265837105717825248268648448 -123904999542023563965573895819362304 8100448825173989254771172293214208 8189647458783836577485272997953536 -482727590618467285580202340675223552 4668879036018658728686349887471616 8293501062522330439216171885527040 -664989204412475492338946127320580096 412462516315700583278167443111936 2158810308471706578591865714507776 -17339047060280770006398581916827648 4714409023654878377508738388983808 2375420322560198003150292621721600 -743291030172329104219288389101289472 2959772915419295757423336302313472 1964138508231115089252016176758784 -460028397373167126717382104004427776 8551716074921493218750722631270400 7025031816560187544077893764120576 -87280316163114861848141902177632256 2346749236035870038269008982048768 5053292076067100233345314102181888 -787078646230550354719714097846288384 3780079421609669865988958453760000 5560641816312940380507567879618560 -201853057557548487864354350628339712 2599511121569742459643590676054016 2163734764006278021972900578328576 -595401990751377920568620310308323328 2416523241427908533930411687936000 5183493418094791076351516067495936 -401286528028577396480874866492309504 8579068440319356999564791235215360 3593704102370908042036417421901824 -89579996771507347957111338295099392 3442270215334625037444815408594944 6729888216450819313188591328296960 -955747134176872584762920422162300928 7399049708514663268055673831686144 8463607850836578900266723271770112 -454427002261755878007227178515693568 4511803022019935367221433839124480 2311200524911962657712596569817088 -348238622340729017429905360988143616 8375582064299657915082300196913152 8187220834560005366437247119785984 -299980083001660966593940635944747008 4620407474750855723324709890162688 1319259292366344246219242345594880 -756831153127587646413221461491712000 4874709434552176243036483596845056 725672110307387368718735641673728 -6544445069771069782092201720807424 2848912420909413320700830641291264 6049327963856326743073963506663424 -317954544606764889215325431006232576 4207482641698066088587579489255424 7129002567110303108318652434219008 -496988361359981362322552904038219776 5290522018815455621178220311740416 4670697751988708920886426448429056 -18096915272000227457196701515776000 8120786721164803467342291641827328 548136684652739508078526580391936 -693196533518595689861914347272404992 2819514279051631240204807890272256 8462139952229859379031744312246272 -928533838696015067738790444593577984 6287442054243101769122859240652800 9457730349131934066859249363845120 -502250772861433211362450704712073216 5306636751704483375062420513882112 7151714741693758599250634248028160 -168282451547980226337169946905149440 5997958972724949792617875533463552 4403847757030910225171286052569088 -145752105182912589357711870933336064 8121262564827738387003890280169472 5067706543112356449946652731506688 -774146364226185692973725483790237696 643247363190500239338581358804992 9950366178974149020714427217870848 -392028386414941659182323378629378048 2295567132774564683288767400771584 7660315044651715408966726715441152 -975433457037746509448014510136754176 1852180334121990312893754537672704 1228967831495545855451752759820288 -411197275519418586336809194123952128 1138826489051116608767080561377280 7113799734266978747919665987584000 -162735537644719397318180229913509888 3754007670847383716093131749326848 2378519931047059737952223544475648 -31152346078389089271449470357209088 3351902886984332462679040488112128 3133645356493358103893938255429632 -254911080545213130340111591495696384 956540759405068119066619355856896 9387410066721731109721851031453696 -528202010382003387010265773015826432 7525657681091349840062766878031872 6952060511165017797382963581681664 -387091938252074805482015353410158592 191727329889811946235970705162240 5826688303619409732203905950941184 -964886608421751873502819929429114880 2623398726728359695634215521484800 9188972059563061427911931904131072 -50291722884410109395856115493765120 3306986340027316619980595085180928 356936487944513335949018051641344 -451463061414745405889633403319353344 4293339668633284825386286065909760 2016848345378053253059117253132288 -853390778640787110532393595914158080 6846094349592789404261894498287616 5872252371186908751348615847346176 -99016690812120451618105140742979584 2010356264271698830134267294515200 7359129815724035087092162655944704 -641095906475176748476643355729592320 7911365080825415395134931178881024 278515194948753543657750607691776 -949202922678923107955689884353560576 6483816056026884906028607702302720 4834073457478408627534546910314496 -381115281756904321013501221551472640 5014688279459149483383785667952640 9747664849907745567725350056624128 -543855560596623812953152990165860352 3486081210913443216927491138519040 7751499100621031652428479547310080 -879354136561184815295453594245922816 9920438100860133735957808805838848 2377969477121120151125570774630400 -80704129213494683373626304432701440 7617457501831337972082157847314432 3669078784970424645279332056432640 -335514109709822212073393948926672896 9831178070850148329241141774909440 2488152253249516743323518272274432 -793323283350236959617628492168953856 4224118118883451124013117950918656 7003122176397630507110833722490880 -33391161236015793706836951425875968 3036173114322966985886081241579520 6150635495438990132368729522044928 -241740793958390938044273851606499328 1557254872714821820535185644453888 8799185035927838373123095525326848 -381886616653423596283533803707695104 5979977660651393096903179548753920 7960570413342713509241679773696000 -923856363665812208919137233426972672 1104061613762184796057607887388672 9149017494293745465498505819717632 -413933061797083858927405669814370304 5590719567757658587831556934467584 2422634674269099150229475134799872 -342921931897393654682157949722296320 68261881583411693204541873848320 2732275562707147227865424227991552 -991091646631521091485739005910188032 7391593263511574524115150071398400 7792564465707909870899882662821888 -802484985634733723121456458598711296 834397702521021198849260956680192 9934522050242550837522608078979072 -935789170469545792831043512492359680 6970370454352574371837065237102592 9155909907691270648407371225759744 -98302293537207192215976981813002240 6720864718504677906881861291868160 3975191957096080281417374752571392 -770196119190849332736357992117567488 6763595655433764035526543508766720 6250983582928270967880453946605568 -382516394881583205502419552677396480 5348214673038389570959227364573184 1341040832981440918384788555956224 -338179291404690724539079951151792128 4120494734818204100536886305488896 6145761700089718547670701686390784 -662275463067954014526885927961231360 402992601798360740214137906266112 6560992573490107354332605278322688 -93776674041390270288476626822889472 5600831541133514675020299956649984 3638122091280896242497711889186816 -405185202176952720353785859260022784 2297540402041315683231886638841856 6929839001326758491218075294105600 -720991506876615320532385324200886272 4541796794714114115245897817260032 1198580342520876543855459938861056 -134286764405716686253336855851302912 9180446775765869231440948174520320 8506486487007807195882678109863936 -797227346473577538982353435388542976 5279968584164466459829319355072512 370539082761449368869426885033984 -88593881514606205473205581183451136 3824501719461123674388375156031488 5444393409085533873481321008857088 -338615205992403505412218539720310784 8171935447553054805898612084572160 9312459618944707817359906604843008 -900300241620292419738269005622804480 9752937371932993288017078338453504 1770908814464670057269098627203072 -840390194950559418409941841368580096 5982576855222505411102525085450240 6378782769631370634971970166325248 -44822384835696384695566715248967680 2163164702676629122139485307404288 8705102896187306010497407340511232 -751401235510860430595779107154296832 7537182435047204699624501397159936 4609129124621195301464052212957184 -688590385211601729538748244681555968 9265182235988573487694933007532032 8054700044927929422730819782311936 -976282865567314598518962195139657728 2687310392617823508501270397714432 1958280517507361337604631517200384 -711519280662678172864310105113362432 7411126997943418371519484325265408 3598575618122680795819627125932032 -346388903904096745587020970963501056 1797387381651102204745762184626176 8257659536416372979324675025797120 -279975373813267692476790617021612032 7129934676264362667676116208058368 2839996753490353857743113150267392 -68241877289418219308819979123556352 3084378824022259157380197724979200 6886248445570512420997609587474432 -355011885214626627406308034819915776 1105941389943319844852840643166208 9576815947289889670058209567571968 -840111183354642657386294937246498816 7844496940391409493396655473426432 6723041537174431406401510354976768 -236568888562095368736161979695104000 4884862080898901229289098715332608 3082331715171769675446018887385088 -835592646461269536286293037661814784 3352708559065733801757084353560576 5868557021352836576781574623723520 -524516204894767409500106410468311040 7571950033581087895674775213703168 754594119859563415615653889966080 -289218227368562169064523354282655744 6150118495164393058351523024601088 2580531807711422838081933514113024 -525303857762049426935942996106936320 9362564276290416138532901376491520 4260775793874876787981681487249408 -319906709201915078079863344251011072 5933481964362228235048109782073344 5552088322647158929832694629007360 -147294683575182542632393974992601088 2237776562961323260809995576410112 2539259095392587974905057628913664 -619063450886943057758820055312760832 5304363110342902624569688791711744 747326911393300607237169193418752 -654382920971177643360914316950765568 5874793439052076061015606091055104 9537266505289806155609726364155904 -991533409027658776402586227584270336 5743003570047463253210790965018624 3280845158372132004286785550024704 -358164935301837686970585909032910848 3479252818859844024007928959729664 6041458052529896682061530180616192 -747135788061628216412046609902206976 3066409069441596659433216466223104 5210872812923040929193946985267200 -503373950163260469129451690977656832 8655745105734122133383602310742016 3080399564127540184545446837878784 -387757837832828700891976107389091840 4706323871794657332017013366718464 7275093329947473745231029372715008 -902626412249802719082250435991437312 3726538594576323850818934966059008 7178627441773193152145370376044544 -421553042620480535837207278494154752 2325920633858303107247758483914752 804413339755931038453732105781248 -942641476473683086748782917819826176 818075356884442454225570219687936 1330661430049584401264443121467392 -869387959209735553758863782597099520 6139973820345997227473123831447552 3466183096856693404958785783463936 -363263965728621224274417908940013568 9629629936958994090407983593816064 3394146692929794721819513485000704 -242146865160250705791514951345504256 171468095140911146199286405922816 4146750099099756567510569306816512 -731119569496573160544999991188389888 3248109887599819457313205345320960 9636953733981067630463585620066304 -553071125929921118106309230784937984 2439740246326980684264683216044032 3324647858443219825252696965775360 -191691980668020256854830614686203904 4155708588657691606029947105181696 8899737942402248773081542613270528 -81177832866144767509625303226908672 2444962665377606147220015079751680 7510940757351890786230929427791872 -66670067540757764312416218779746304 4567929304835160110037068123471872 7431299150013807399227827182108672 -771441891995528912164061042081529856 8222687102031096283865413893226496 5804832871217580121534428736389120 -11751585586892299262932775419772928 188178494203064828154638923464704 7135604064440252834498707575537664 -489272913769580154396815511198367744 9337249312014044561039805070180352 3661188417334519658799726271135744 -51443793090016250541725670776504320 4776310415998411562706950340739072 3882558971278174380145986049671168 -226446222426993362403499061299642368 5877351481668135825713737465069568 2645762761095269183943717253283840 -562183356883056131258222556108292096 5189218983463355784988128463290368 4773253740161239175703348799078400 -879634598567812998338985985837105152 9406752320355980423969558690267136 2744824082952634489977811551387648 -602985853447383441053950609662672896 1897632074931843547354401570029568 3016345398284718788254551488069632 -791030558673293744636330922567794688 1974058182583729353446550335913984 7280752552933058828662739696615424 -960339125254065305947674029533954048 58316144926015541348752466903040 7876399492785670117840812542787584 -821345370469826711235739108067246080 9212650150007237306302003155042304 4721628681968636878148092834086912 -739917421846891864457518420726906880 4940694991521397426731909487001600 8080522266413172579920318507778048 -842251568053540414010788613676072960 6722835038848238933004566784901120 1925894843666833847172612044619776 -648737677060111055818490912545177600 5631154522071052455845278731206656 5795585487227015810001568706592768 -379421559845438301092995409360453632 678363482623951052246493840801792 4237989047417556986967330060763136 -202919433873727081140751844820123648 6993918788879321823486491853062144 1694839736532683989569944187568128 -679403140932989942948060271457861632 516944753185453057680808842625024 8681866282436313616255483019001856 -899973411530251350772288363798986752 1291669329762527272569288200814592 6471560835852453927056563943505920 -779708342900945214384783269562417152 84510947899343752200300682805248 1234416087552079220132141070286848 -281143904305868580998686472073641984 614837441662609036332943926099968 541797706232673787858792013103104 -275681995897169230736331643698544640 7371160153652524053071757255376896 9902533607973621801064780793905152 -572787850995835487586462501062049792 2098933956949171060332804240834560 2297225092248585459668431625256960 -7266876809206232237417472764936192 6029794181878100349854160758243328 2897550318645051074974345250996224 -832317297763445120118008780364447744 2080502395294718081990051634348032 1966592120443776126875742897176576 -903996712491437572730897059962421248 7375332602917804400970779221557248 2684121291425462654947648895713280 -16451584473883310751642254640676864 3337822093732880797590439283654656 6665191618775485551762194558877696 -143908374255606274701411669757657088 1771779789681775899010747997356032 7996625115301764078577805170835456 -977605196878830254000449515874680832 9830482691525810340131563787780096 5793740182421618227441768951971840 -111155872548883688282769521148690432 281582513356212805497032229781504 1532775543455373759216406446997504 -408172265415112187491629702943080448 3373600313762785322200252639346688 9272263729313943254239856325296128 -581829432130984617566666007829807104 5778803908861639947893476123738112 2617476191182530510805822481629184 -925433020900427494232995053464190976 5858035654155423943693955611230208 9947713211132524255596716316688384 -551669872173949704051342477560381440 6177471539045186423809081245433856 1194374783502331971433208253251584 -490559880064072001400425892269785088 138497288790930113228681798221824 7079858561923882380896324894588928 -953272841535373025074231705025380352 7900355474327847396139303383859200 8930335724323663002831268951883776 -735760627052075074793443343927869440 5389420332206999149955201003159552 276391636832800218089858139160576 -640447271207248245653678064958177280 9700704235063777690791842687221760 3067069605864413433349344568803328 -25772803499645608184706034904858624 5654400363118649564974810295959552 71959632287233925378542837694464 -589673747815640698437665466452279296 6397412936310184917471985085186048 1635938540377125021460688833347584 -747068727154995240553664792882053120 3452533406296145196879726363279360 3526697244394448003784879040888832 -223190101876444475442732368582934528 4434496406345402946793941411823616 7189327103533033287176217398607872 -401212541550578421178254920591081472 6934671902527544505727091096944640 2664389087055359550887852098191360 -163634689092624113363333143657971712 6630621335765161095122390886645760 3107397042712698935214214335168512 -418222392883178372616292755285475328 2877303514870101422878662942785536 7385121809137525289866869879078912 -112140051876346404869781097652682752 6611986379712485758654892918964224 8386281023001277596131141542215680 -936219056757691329124053573567512576 5039845690916838474426631594180608 5852011864255837832835083771314176 -843723542167949686786816684985417728 1992150513599650656240472099389440 2332723223017888431155678392877056 -401160776677373363695181449117302784 6945537713466124326807022317076480 5143589952001617920192686325760000 -261119262769836989517197674700341248 3128278943833207730335395648372736 4240509930749657847179081739665408 -841580377333413454212267101653041152 2415592978985330581818231450763264 8197986174033746182695179662655488 -488394589325781447832299794490982400 7243765226050823308849935263203328 5182874755155711586663940690542592 -685083110841414245038861742105427968 9773298906387752833305112236523520 987524190829896744490623626641408 -159820711431473682708868367728508928 8501510115675643696349523654737920 5720449893885417075147832435933184 -809005675248236928942241191263469568 3613190410974914012216596625358848 884353303658726166151370811375616 -994736148822931069611405938404622336 8889342240150015514816201774596096 2297399978978306846186066459754496 -171811460159034891030907968559251456 1259840670759199355951378065260544 7399159562280887705677816519458816 -954366549784057145765841363181502464 4691430890044512151229907878281216 9173449686368026619415447755292672 -329327037276569137110793383279853568 6876943489032268276673541742526464 3891916609636662261025379742384128 -409972154747718086152656477946380288 4565403323567849708546283215519744 699516540455955541054828144754688 -8144078399551542612214400042401792 4116450371286529729778815133024256 4148180672656296814134541112311808 -849509887444055464327864228903911424 6077895874141327447616275605356544 722047846131986564252510550228992 -619268129432486266335414362180681728 526146938742683289930708245544960 7943768985029125808684947434635264 -193481661909913306504246885827477504 2010659341141014818588219580350464 8728542793825710737622297921716224 -884688307848845799789483318457663488 7497786714304321468342420172177408 9379488944104143547974331752513536 -436848098900473694122145472801931264 8629576486337828838325301899427840 6092210258113792919776649396879360 -917661417634190491938099141118263296 5379183803806695530131047602716672 4017953805615826590261061642878976 -146237559347627553469150213066194944 8078674814043966937263541864890368 9346391063640127947128928007618560 -195699695763818309315060736840433664 9818832373978349995094445406552064 8972098768251055270585924426137600 -308350917375037524259962064593747968 8863534250252039082361948314009600 3433860268578500056577192937652224 -402830902794061226560850375361953792 2684960527669019702611055803891712 4133351540379030664618928217522176 -554254304996001684228983524918558720 5858751419115775815169492553564160 5366490189344175624853763712352256 -205144565815053729374245976738365440 6153184583983068336086967811833856 7362025911592838080612070011699200 -201191706420375529783924810860986368 9849839228950321988548892722987008 7525229217158087235548644273815552 -640603178786717350590014957151059968 705398762191059721897395122864128 1465203128088853867460497611161600 -882458002549246329066550532709023744 21101518061822606347591114293248 7231131563482857340224760308563968 -869993489898481021578943457346453504 2751519090234467849262907799896064 51889738481147217324903013285888 -747987356257089828035938156866961408 1201042609401410826267680477020160 1065810703698885808487005562077184 -431570574167131047450729152249856000 4616849803211963427420763230044160 7356333979455685166192947502252032 -221976500210203032965783570484297728 7932795371191166478508854406545408 7134209480490908538858431253053440 -894385339712340321578323506179866624 989658363888433393748637850271744 3742013736941642779330305887043584 -251512215917609639288714384702963712 9756902030318862709402387613745152 9760671259730018392281883464433664 -397753427192070435601921351608172544 3253341669033153412040201131261952 7732788312425592509398114921086976 -314927613608385214710437921798750208 3931606152324554331620955272511488 7037018124283888400538422470508544 -614944159609791340505135547729051648 202511590575304619732202231431168 2093051652330956838543111609122816 -722950566522788458668561157117181952 2798754701060439360506975286722560 744219794944240075206613899673600 -197239782327729824098915695978348544 7456035544140202278807794832375808 6556084182440432161114545392189440 -188871205616098389643376319082266624 6741767358316521205503190164832256 2732385454862514904874012951707648 -152193774516368306670365821439574016 4236225879307830031850303211438080 9970946036367792378942402699722752 -331409907129429197098734442376069120 9010910785572018858821475496886272 7004166366712420607874643821330432 -803158271610189153839373665787969536 918995614878037010281240767496192 5850873876950693186696606858084352 -507855531157865830015738097419943936 8213254669172918508490253420986368 7683582774148735051683243025760256 -762426153276872352530974852996136960 5099508558024932972390266653638656 219366563428751553365606043484160 -493943394067968397347308380008480768 6498804541736150551854203952693248 1336065264456875739853108132446208 -868706201101550797774482884058415104 393399271253222751195761016307712 8187805371469638770804317478715392 -107180898595417422287751763980189696 3544509658020813847482916394762240 8596265083070226671955016490680320 -965665872886922769366783466837901312 5520054993558656442778543877783552 8903365295087567553449720008409088 -808204384865039200054062970874888192 204604115828343331846013730160640 9505496960036703909552596684111872 -956548779267791216268722918165315584 3125581651039303926581769380298752 4756469452364765453223889656086528 -339667453753924065293653043434225664 3224706148387244922053981596811264 2211998119979120616661139996016640 -974862869487731144588112632798511104 9850198803783310724550268746203136 9689855487864028827780806411812864 -145635638430550692341226415098691584 8799489452896751901744771605987328 4010921675265928047967230232625152 -933138925495177290723174534594166784 8149448674037077131071124762787840 3469159763643327148279239674953728 -789303408749309990567896670850252800 7213929475846285246936001001029632 4959279198400834977939398915522560 -650161045519546818968500152492359680 4957906489087058539995168149340160 198574968582776931877121496711168 -399951979861646191562057952595542016 6981973984717773118697310311677952 9060598702243582025676451366305792 -384098207534422664067235406267023360 7119870738130017956722891009556480 9747356308234050505574759782154240 -981113287085010293501423206528974848 6495170051010212918667837016375296 7584229972908288657828663919640576 -981976433581417181855080238104444928 1754516666409410683156477010509824 2284000973557715673032603075608576 -366946161749124416464260803487334400 3566355553116475001596703617843200 2927877141905507928991501601734656 -435598183275397635501327309950943232 1099695124772364512120381529653248 4571110546458219105427418431619072 -20223074960651951117229807256993792 4058888518333128511946317822427136 5127149125558644071526397896556544 -552959553583642742331971422470012928 3524035554263904839147437770670080 1434743977774369141943624024457216 -239354527403851203173638237788831744 1807418779452514766745427305824256 805042418138844494889564885745664 -777220687090512331324897246928961536 5040794704148335786782298331938816 9864247637039588068699922403164160 -740712655255378921661189724366176256 813887161008838597215493503844352 8625700863196151883835513306611712 -812941324615433017515957563821129728 7511812208500766695882953125265408 3104844916257496578093450761601024 -160621566906471606911412174330003456 2031777262928201023685859345432576 8720572761037340928174930687688704 -121080667318836250352137939298811904 1991848277927073057640302212284416 9046706787817025781930930772901888 -173226579467648002074388495358492672 3675243329465460333433278993268736 4787753740973432194730586665910272 -952708837734231983222722698351214592 1126151958514157870341546701750272 5557893187903214663116513519599616 -180893499918614850096782215177306112 5984814496215451711320975239806976 4912147124578532517937219947724800 -192567666827217040392459430098108416 6741227080342323471975747613097984 7329070230229855051490694147342336 -728710395092509104542970843718746112 9029880578990435688171964230270976 3971846733776767465794525678534656 -522659827418924757799269539703160832 1359382656333476940624748678742016 5058647984295480731191230857216000 -867861983870304992088193716384169984 9175425999650728649584651603542016 2813215338165258471279829951971328 -390793795643113579219675246493696000 8574611663525465633789899370921984 3838676196139701088936125603512320 -469038072522030195741246983898136576 5724210149305907626720303624749056 7565801898917239838598731237687296 -471227715390669384077408032968933376 6020279402064065784157236835123200 3633844987538174887602474776002560 -814827863229683346778215479276208128 6249322201807690264875385812418560 4613823625998116702582634889347072 -799604547110910719449408797591732224 945651334577836861027239239614464 6626972461499587584202576595255296 -615713272579987559815713624701272064 7607661375540211904083871905349632 589155230273038108485506807365632 -135886312929811316179186128378658816 1049210301198086302636584306999296 1862099090499581726074247288193024 -479061348666174993662511963608973312 1616597115729961208110773375598592 2822513755315119915427989551054848 -676627713246890640841025068107563008 6138885481606584651645602695741440 4663112771499734482325033405382656 -113331131835935164482007957782921216 408935783995174288532995976462336 7566529227475314225817422990934016 -752689417279318594171203119197716480 5420834596150522669814317169246208 2555746423583552278800909587185664 -731632954738026549912421764532535296 1124279053253845541395536730390528 6627847728791894810689707396038656 -721342503230523814375410919157006336 5568627328747819775219797254471680 654961235463342921922819825598464 -905028404530890957021216660978139136 8510278602674099101291023070920704 7263365460922841946589804550422528 -721857272482247317882464897308033024 6693993755218675074396672218890240 2487279954799077296376409759940608 -477475528288633011413869138722947072 7864492515629576014576932655988736 1707333080443629457714289469030400 -699636891227432946992741633583218688 9568851961091872304909001571696640 9431659198626082109545762974072832 -21356841890856974381335980747522048 670089780418860734327658855268352 8171865003436383594259491342778368 -159965595084237236058554978304786432 8996548360253217727675409920688128 7796821520003669417915066345324544 -990528295650084014452646833811357696 7407935285621119676184046684078080 3867974133652439000542423751327744 -665896765732679760436379130968145920 2690416698550262532148990224367616 7658536547399628155540488820097024 -748235362973594571986472612617256960 9403325106188543004073469446979584 408624951962542904983318016557056 -609685072188059326360160855461462016 8561359691073737914307576126767104 163960592403235084852090376290304 -36687958177822686219436108386664448 9805602689129526957184708404838400 695923694483102730860057440813056 -974432657937139627801678269340712960 2331584446719001292828171244142592 7029331387485883438414513037115392 -346795617960697896282877521238687744 8263832746340721276248830320312320 2150047777471465345588455792443392 -231202236518787576287652745247195136 6308454028999631396411276255035392 1972201978849690504964421535662080 -530049411656468236993850104040390656 2206624946908962304296360209285120 1518550701338991738558140720873472 -771025254625355519162033729011974144 3430652918552492575620994070216704 7252804033220648937128524712509440 -441739562380325543000148276326432768 2376903963276614934801399465115648 8661765705770214361380994473263104 -356503430839066058971853949459496960 5638106577353564374973656504205312 8680645840716911701855165168484352 -424630363997145207218038438874841088 4333913801002850470223022808629248 719297263552378329330530939568128 -484089673449366597545529191635615744 2167397550536327812261310049026048 3253190631027561503505838329823232 -345775286920557769395309791766642688 9972129186769540582813233487806464 4519520635071874599679759621292032 -726883578375514193022188507193409536 8504788777038565173111417380798464 7502231353423547340913401204310016 -863037306950103583413475810949988352 8969024138327732949904118027124736 5892057113430292866084056816680960 -47401616844076064849535008191283200 7235108060295269318279492966285312 378970569568289109635970900164608 -720986703711040784087150928745988096 3265171016485581246099577578192896 5572459250164740101368449408696320 -380441525907958900760369185882636288 6398430121769880392006701233995776 1464980594509666194554241123614720 -823159786149865003155162381003259904 5709556625287051345444554099654656 8825577231203007469695164427010048 -604305024000404263490834942981570560 2363477928425638266080326070566912 6161842185677048521167894015377408 -581563949320037816661223285813411840 2775649669863696120717467990360064 2179602256372998038190851874619392 -108205488247178290722012700329639936 2805339843814608629957838155808768 1059868499389114124170708461289472 -822023786863178472417162359931404288 6599902371315274061921112138186752 5161030346007188807740639267520512 -212948928933803418709163480415469568 8173202618146897273369748662386688 3887688445296624780944404947927040 -150899796464820824695329367464607744 8059548961463032831029539959209984 8804392392955898085471114265362432 -275877378498903938274373623613489152 7396739334650310501158023862419456 5043113411909560998661654044475392 -649927618681268883628780392380628992 698428063578026902852975273705472 1807105528235655541393076124647424 -402556104719252772555812850068619264 9239730628007682649309250429386752 9006559937338320943031978104455168 -78978258403910774820616155942617088 146502726348109010603248074096640 4226233326236267313032302625292288 -162960669936726424651448040046985216 3510482290294111569587937279475712 8864966103996156631186025708781568 -766558056442206227818895761353998336 2726481455188803836178575287910400 8097408912223322237675900799811584 -846414016350018677195574997539618816 3376880617681825661387484862349312 4067059449557204773675796290076672 -81262654179165120761998500287217664 1870973504610015614874984759951360 7228983379858681943050403195125760 -988985961244713435830092353304002560 2549431152696687040181493919907840 9723112861502762783051790770241536 -555858701310987574586680698336182272 5280417347798222926115009418231808 4652350539006378516787771417296896 -659885612656881311908457979356119040 6981957966331041854150262046851072 4160686574918270380814084712955904 -627400845132704002541003021337231360 4923861052106781221948664496259072 6801096037465885530157188466606080 -637894812617123109806898157413466112 8571970913189206711406335264555008 8303627830800957729310330109034496 -813480025659474587886943108639752192 6936911001839927323343928617336832 2911030335578513985440003504734208 -868313772325749789612218757970657280 6550936917049641208308966721847296 6577928175569204821864714541727744 -953849105597501745143496941791870976 143246229711642660551363810820096 4958545368843518824088235738660864 -741573848187234261103406184484831232 2801509643180307169981692228141056 4606432395142795975880595881328640 -787697284756363572010215752513617920 3794189789404598618326936730992640 5994020533252842629035083891212288 -199956621239925401827056478819713024 7882195789309377526846923690999808 8252688023527331231077148890497024 -380346342538091285284050529964523520 8245488268812992550373581263994880 2016553341390641174017403659485184 -803024537319798716022544977352458240 7401019523850537402349750147088384 3038121664436947337956227077373952 -340097044224898764578367659873140736 4713848795983094109047325395517440 1893261042165079758570417916215296 -463499654981694670821469888966557696 7541885317867378785697249097678848 3400568572463984493772386080915456 -427136473214038302376947101403709440 9102808558687257068911632888889344 4010298433213175973034171566129152 -915591409176427135128182179261054976 812882329744809917547911393050624 8494178247219880636547087049162752 -535851458268667166109682478453096448 4242002270627916698676807004585984 8086903449849414955523573997895680 -519019323292190985581325372276867072 4219146705743784072250922501144576 6946149969050511310675778388099072 -235047564877176362130988654844182528 383750692251871498610396553543680 2856054983759092918157220580950016 -236653666629802873635185021241262080 1980729950555104716147104262651904 6255751644559484279023336557641728 -396067415092552455988527064732925952 9990023726330136825281200751902720 8895977502745071264796101866160128 -3516134506068557623897759831556096 2477617486504338486538046997004288 6980931989513170165081431775117312 -222136868057687497052407870062067712 780617066305270188157215333941248 906991824343340918590964800421888 -133368373305310555496572572472967168 4905412862651925497660133913657344 9256048474361283537725358881112064 -695843170711171251228522205549690880 884965556190700576299475674333184 5831159430220404494101697437630464 -209071239285807911389525513175302144 9835584156778620649019070465703936 3039562894377625460369522218237952 -548394424870401675546959738717601792 6045154507628086482275027075989504 4954130207570811518881654198239232 -451112233436881152486188795138408448 748680097790677542444079041740800 7460446333507013326115805862035456 -564351591383145836424611500885278720 1795184752378309342990100202520576 50585657252673230020190259904512 -721981682298362460734846165447606272 6093092313443811672244372721631232 8054090753528795713631297724219392 -46861412483983804872117208758616064 6508696474442918983609347662151680 7000521391473391481156011879825408 -336880376311618939987338207025954816 7838362182304239706997153601683456 8440707026158878431615984278175744 -792712278880840716219483231090638848 876419920490022223271874218950656 5642893422058015138305169235640320 -374155220819762590629607817338683392 6242173710587501235576766329782272 2512835081313172617028271819718656 -598736367271317326680526788279402496 9357348513243813448352953855377408 1064853342756664257562455408902144 -314747584390365205969484771103866880 6637625744387889881314183480344576 4785978332231264934818934136242176 -67260979101298624229870017355710464 4114172703521330346650481155112960 8626547532227822748659225353781248 -145787125152241868334300962339422208 9768176743885163401678991015280640 6887018516436766069472991809372160 -22445595607580270378375124824883200 2105835813869412100123421310976 6762430434542873743073896910815232 -56853172619789441452715623829209088 8180372208822761444149928075984896 5965857756998509412983786937778176 -495371974076170648091077784643829760 688584304251287494974749957685248 3726832811018204080342132464812032 -670261063063862744170877468324921344 3122593360742929158932799382618112 7308618312722276258920155150548992 -790057378272208921315958375898415104 6438282896997635655090072409079808 3664439057722147290003589124063232 -503222874119573211222982995361136640 9165727119624219487839287123116032 84967607887343637187150041055232 -640071733791566334513261411926278144 7229116657172047298744791638999040 7320093817265886960764058423263232 -281088527510859287915955157987229696 8031831820339193655501338041122816 3424756032344107761022972976955392 -374043040744292739905169223625736192 6812200105622884136201538110488576 1479205640781410095341323434328064 -248181812462018670084054977760722944 7458562068804341082131398043631616 7187078916666762883405112982634496 -614572388386984471397617386083319808 7030252088047005811627377194696704 8660756389037062933742333494034432 -672145229765407508012201722918207488 6063663817206046724665579755536384 6833871563741103909507985139826688 -176362389167293420684210806682812416 6828891018553581749454902797533184 927003694245269820260637187506176 -14175340783991435036348069665832960 2295345520222812291002015454068736 7511559833258305946873540884037632 -357623516237910909812453278811684864 6985814935380761138815679388975104 2721563026325902996150824994865152 -441556166142208949083922376136065024 5693195634419370565342791364247552 3900678611053927462243901336715264 -200796425283543967288780898028224512 110207923511569433827770298793984 1489262471555253987868810630135808 -830198551764634725350563134606147584 9319696971933846620739186330697728 2459104322393805705538574240186368 -597233650349120767687454103179362304 7340738630844742806727267041935360 1718343351610275824226981512216576 -644413821023181562633468185552093184 7575100125725591196205251924328448 3637691369273013535032200233222144 -554246113805337861116283734617751552 4685015169215684906369665703346176 6251261105552903066048952847564800 -771225053944856565637036151534518272 1653838406603583554675021971456000 6636908650089378968961508827987968 -317595813440580586064712616695037952 2392617547097037875607901457874944 7915186760273746464962819431333888 -91490035174560342289420476095660032 1124216493281769507216400532373504 4526010692939086240101103285829632 -756784634303243532385274173075750912 8401944147739346958243852290359296 5180249978712211218544034121252864 -306570496036595087026231165054877696 4920691274332069469355386010075136 2500316094169608214325233159503872 -200281911668622043521782391332929536 2442676286084925710941032210759680 2232669335104223313744134511001600 -685876355720059771395696870400458752 3721425831241387245719736228511744 8826064380657094467023201925857280 -298779664623082407949865098451877888 4612488326221831223016297846538240 8125027454617310427552812357386240 -335300921306252018815389941817671680 2401809206699620368872874384031744 4423077430601571577080962900557824 -834249438000316161313335678636916736 3365595490275893365758325352824832 4440391428976039048650276646944768 -456225717985704746411176381202300928 7005211180254736577697746669010944 1995624909446224811518027815190528 -339960190126514061537556804082335744 8956421941508695791983609044271104 7416160723854045724284843125112832 -736037728793948974927678670687436800 2585919083387569822199956606287872 7757716089048420750623654138609664 -402328123131158818868263582942887936 2793732240947623959003054898937856 199533451655382853656559453470720 -217681305060574441638881105817894912 308015972701445795372682140712960 9322593400939288394448407623630848 -145604097116947931404872710782713856 3548372623062087430491423679447040 48474938421394263211778412380160 -63258259472379266307691841136361472 4294117615935105996369461044576256 2991853960426522057650116308762624 -320913315930577717182132687229419520 6631549645642053272607012209819648 7634194093627763381265587064799232 -697691979151034508857945205143240704 4584024152439246080382774120808448 4564140305306491208856911568961536 -944191659942290285824257700982161408 8732195006854729954879936269385728 8925780830836517019678268077375488 -259538359038698749158836302335967232 1605003196396802084669885715054592 7857772242745730023059076962844672 -45050216597667220029177750370648064 5057485267076127226119570608619520 658704579097372533115726615019520 -108345048715545700314137614266400768 1431280869248483071817550435188736 9801644126484585954167067454210048 -454127224076963183861928564011040768 7905096001520990625728956020555776 1236568663000830986767686451593216 -202245517768500453036594681299861504 5887669422183009738113724406824960 5655701665846765859281139673333760 -637069229908935235106223875952738304 7445794141878727650631528724037632 4412382370926493974390294691446784 -945371540233914681211300284368683008 4806648948704134073333032721317888 8086768468619693515697439373262848 -633040282185846622795220086889119744 5305406057255056010893761890484224 7246809048789470903593965977600000 -982751251273674214683512709213847552 954004325908980857224199241990144 9632283646247981395972641601355776 -95027575274090034613445047852466176 7785687891117044365287012693966848 4782514620396531954274680948391936 -839684404149521053180938959645048832 5183891788663037331739702445735936 3269250747845138647295574839132160 -918124720589887600023878087112392704 988015917793456845972204637126656 2863320331700021172781739461836800 -387395081611764756882270076809510912 2242028629832684444709429738209280 5651863502841373397438295672094720 -62682855566623598025918267491614720 4184929624100273418830758943916032 7404583585877857692649499157069824 -170780080352121295832357029843828736 1428075226191242086985927818739712 5775799277803335364180986919124992 -950913047061901642543388221960617984 9728862247967753094266943703089152 5793764146313173100128736817184768 -4720199466805280117504156763160576 2417371296657345959763040366755840 9172503993429514767877538312093696 -845567437026353107205717667453337600 2670025431494833040323955505758208 8438770348203970235522048040370176 -490002125234009765040217133238190080 4150752936098185380738083969826816 8766138618456718357888787474808832 -895617137158364287741486946528002048 7181813727680256013170616064540672 209731899744291063395729973182464 -127583841122723704917292165453840384 6847271439590336252551149893189632 4462364903193422977518583377035264 -761400989625882693286996459999199232 2662372688692583392702709847031808 8013135214580439498529186559033344 -442145186863823614718381011347963904 8228351014641167724779276580421632 968064300638402857429187654844416 -505118327284643968048495688765407232 5804956869031347458749843139198976 7305228127409307894936424895479808 -413767658302351498374721672249868288 3777331370329302149737508612603904 9773071620219643541270236682518528 -870980088523973871073749268537802752 9046906396751931687078882900443136 6712255233331118360854946104999936 -864215284287703758207660618198024192 3832565137876705786509413717114880 1676147760486396528573079166648320 -658634302896312926362992345761185792 8579943839645354420409010975932416 1481634437144337929981833047441408 -727241985659256317525664074204971008 4816648392615196308913548104302592 4511128967829513127685661447421952 -873337542375213495506317935544107008 8236900254620890165403985981210624 574188422753005374603390936416256 -793432734205531926804291152108322816 6332061360660961563718245712658432 9033511667988490047531031193452544 -750033075615066021226010163659407360 5942020894908303373659987456819200 1596205071890438366057808646897664 -525476922463661605886638835843989504 2818903887044992392616985373966336 7414064007879380129261993829859328 -610909123781777511167298404819664896 2396411325238129043234578824691712 6798212188334348853564337662459904 -23237445901121029095298132963491840 9131966354070629314227048783282176 9683514237555492003656039537836032 -536870927467494341290470975295455232 5138491538473784711216387210608640 6930486050662083798681744522084352 -291697087773695596782856877440499712 2659608387242421250444049025859584 1556758812234505530007342490320896 -423000765055464261675568110334115840 3000143432369012364353117991469056 3137966068316286826316659689521152 -695802994713745990236599599641919488 9589613593002322983890158945828864 7231225062673297862353196903563264 -18094368083231018066092202922082304 5111507999780806403551322540343296 4866912560001886919474388142129152 -672712705482515523567028059779366912 8187618574191705159458164679114752 4679158231553057206159626827988992 -604804447843499688971801539437920256 3118669567273637339553812438843392 3075143313794965618224358615941120 -347138348138542848044317188466671616 5025710232443356189948791486414848 9477985881300628707067845215780864 -98107566980379560816211458447638528 1378098353726815019484447399477248 5801472269605326421846841102434304 -425776621824812321264506024648245248 156609385267755137555261625991168 5910935911329806537147847607844864 -363934698225160620986581324901908480 9605036670670096303390808986353664 4004757241281704979128447762694144 -946106445540634838026307805646946304 8530043414842191535305319314882560 7381364777313057644001912279793664 -319853613993910770520618424493670400 3963606879719891195010028234866688 637516173356161810782758235013120 -21729631376183013787133123540025344 3204531741294647932769336668717056 1455548075715965228050551486283776 -512128144940159882700863029811085312 6080291487025121476136956910895104 2134661891371968734288952915132416 -14841706868355633129255964579463168 4818579255762820986777010853380096 4634286726420395531970041658474496 -692070916683877240288700654621294592 313417816153911038279900737830912 6334035741296659948435141465997312 -268567093493597470196143732260077568 1124677410008241300233238119186432 1944092678065958887119397396152320 -405843840958932201530235387612495872 6394163553139045217834284601049088 2265653410572480247939360240959488 -144266082104452155129426581854879744 8439927855373099504834185449701376 2321037284336601725105161369550848 -454863583324533787622240972062064640 2184369941977804816330116481155072 3347787582037328652211727714222080 -136268667651108890823268600907825152 9068272381787699738951221084422144 8199406944612539544109224577466368 -851034160410788719235984178827755520 74775539525424048854868076527616 9366688530652792481586465841610752 -420247187546132943060725447417397248 1921174999909616217352139368824832 7086177008860391438172299477385216 -421629563867214773697980305244160000 1464393091810579457865244670427136 3579416861392057437819923515572224 -977084479223082494375717371073527808 8968146398044004664585443201777664 6369052417751107226850261146271744 -707424286925595987436430470152192000 4496022652169081401705551370387456 7908203974584841686983539618217984 -653020163545450022491203812412358656 9762968967784941429782753021263872 9564162723416379662272574976425984 -601677743471298402546537131837227008 5856295143570185073324463654699008 8526214735491760701452522849566720 -974137690122876300704888734487674880 8047549312499383072521571293724672 4964841732332484503459688360181760 -457491386632468896464928341976154112 7176291460012949666396624566353920 6210897855625079906154848838483968 -852710234626564943060515568102670336 4235790338694183490381389536165888 1362317844133244789926353038213120 -325926464146381230913601990368952320 4294346256016662316316228851859456 8045832259193814143070359005429760 -42669279822606530851166557327851520 5592036736920136993686732486475776 210176434267276975040371976306688 -119461482569210219696501773672906752 8022709524164450717651151666282496 9470409293016346029211955585089536 -224404923316923049584640960285900800 8541624682179774164088484993695744 8464402447461680680467976851292160 -799175082540799036397955112356544512 5923914557983353648380056879235072 9887567052155332340205445395251200 -465678041441954726189226469374296064 9639357573303333049565142879043584 9896190151793455871736982452305920 -615460472052998554463280686428061696 4436310727438465781079247331262464 7350246271013961632587447011377152 -582731119727628453356491278634713088 95627135416530769814389547597824 8951545774521578190722436102619136 -79221444319727988438578341355716608 7087799945852818259185956382834688 3655876350573612918028286302355456 -267101297809814547746718492615770112 6704383116133061500482490525024256 9447786374698710549648832601260032 -869117638428183348879170879268847616 1891474809668354771652874814357504 8828087806549674552868360037597184 -150933931742644882744956982065627136 7857732651911904864041933956186112 7098195179882306366304541239934976 -63264586814320551449695803787968512 4748682968683020668223416302567424 3996296869175758324716829476388864 -384742671146551703464469607835762688 9021690906134677355015388658663424 5214971004980631466454580390264832 -280186398715869037269246037635104768 6736776997941596677210805368782848 9087435823486194661431912630845440 -647519286638205070144250414157004800 9944919910820028349332502677028864 6882388982006496231840980658028544 -126436387141143334126333056484638720 9188042693572627598850363995717632 7375834508885520514739290492633088 -937431983058972856996332691854983168 1612862887277522770246488826052608 6307213963010257098733059705929728 -421740934396838845613277810025037824 821475119496920409976307445661696 9514249519240563440003356062384128 -120903579407543979823594408408776704 1832212161288204543600746844651520 7243508514239196247031806959812608 -103999615934022428179529575075676160 2202952025868724888548768930070528 1953059951273044935178894819983360 -644996261526060782611000759727161344 4090122651764178827834123161174016 4643916488615981534499840733478912 -681055095500091076492822749068132352 4965563086421881014455710037049344 9757095931904887303642200649236480 -210355841802940075723536088617189376 5886438700105879939692215045980160 7858528685333563857217393518444544 -700389138752645449971418747560263680 9264288317656722462140774846824448 8908935251045894126221985417527296 -287097791272411866505187054973878272 3306091944315482289772163091136512 5727249913356619361574716918726656 -520555363026098478526632148724613120 9384159309718463694148888233508864 6555159367935967906584857732448256 -389331946803607264426412652911132672 3820263426715724004519897120899072 3219562277015309155777946885029888 -582398940072859706679674338468167680 6104100516877346869425810018664448 3473527910451333054355138618064896 -206667689098389816338292696921669632 8535941349455089337721778675384320 8175405440813612074811760385720320 -734329270438373741959918905884409856 9709066303187370629737295424520192 1059249575435066243028854109110272 -871476600040421249540381812256145408 5536560275835769527431096086560768 2127297952410214987237514322903040 -944967775764064079805575684396417024 9151349742793666090092201345286144 7199245486936631173419307580260352 -102593725253968677243948392031191040 2938583324583267636374428591325184 6991135432735502303218316502630400 -140539784247239814230435154398019584 4049286751089330231279500992184320 3289240767686790128262153502720000 -492398771785446057009321406025957376 3927257410213107365784644841635840 5364217314005249437067999763759104 -136971280523734881407383911012499456 3205271503879084852699379995246592 6331925952650054388732154246856704 -48499991767053828543492726322102272 1212467878936707491151029557264384 6989820414189243522374452515962880 -132252026804200863176363368400289792 5249737567319654275412029985521664 6926233966924457238668164949082112 -454122906735051952280888186924695552 9882978434844633984631875676667904 3917824849977851883210550642999296 -42197415178611040291414347991744512 453296868078976191514183450230784 6808029400267299998839262773510144 -933423416391760329857940424730083328 8808216092590958931736293376262144 2937438937632459724636392993587200 -498952180621480201158076904727642112 1178584847113407778132033353547776 8711334292729619549921536133562368 -252313820523223081473973056486506496 1045558281562988016258979169566720 7027918089532562387903751865237504 -233594117629946954332980484052615168 1353941114588784655637225848963072 4450766437030906478473594529644544 -752516714955577895876364709304205312 5328486736168197846997524392443904 7700484577230197472569473426784256 -790527256841434174510891157971533824 6228846931426430444412309956722688 7292454285927036825181503705055232 -951231272523267551084929848788910080 7645457443095089797848192419627008 4578210248779881040857206634840064 -976420610952287470538657436144762880 8708758070349169243452954237730816 4171908491496901077140537979437056 -964256411075306162458809148372942848 9415068428680198937465495150919680 7957314329673583802922351101739008 -572764367767078444671855939712712704 508101402618050591747505234378752 1124128816607636987736491544281088 -727860533554432469464092400014065664 8332071887515535621102187701075968 576750430412453683932526637219840 -175096813141042075720403226766344192 9733387031223621675635505216094208 4011994598927457999048139612356608 -292470725727408343397015116727713792 4745410855865722927448710191251456 2951194589037516304111852836618240 -651125919869134848778326944130269184 4421608818175190220269630661853184 1833833529450382804361604220583936 -341312614330797201501753015273521152 6579366171152422115740662311682048 7435460353399955907428028493332480 -386227894339192750446694309048614912 6253069551926662720596919376150528 9179371182666580969932920379670528 -989278496265844801862937985612251136 8722524286098014783687153531486208 8972204237901730849583882557194240 -507515208467888953798022050562965504 8531913590752728054045166106836992 5499971717071066100434277419188224 -10196281055479267281138249635987456 1278962166852287326044422303383552 6747461212339238113162530077540352 -577961909928137323490321575429799936 7655539900235290419354365251813376 8928685153143791403779051386568704 -115072286098653429803062216672411648 3304807109726374671649791253938176 1923716812274559938223420609658880 -610665372146754244030364798418944000 5955610294332834582147450043105280 182964972364816792754341004967936 -663980614064114149161547063384604672 943108410843948061225190697205760 3235079323544481097067312856432640 -823613219772396738837511466603511808 5576634167764830750323117096173568 5045456200177980867597077567242240 -626543734301078894072939378187960320 5377148129572649934497269313175552 7369440783964512822641596729131008 -30632021160595897518567755939315712 2668498521939672668775980694765568 4716071024950570502355003077820416 -652931202316717187109099950319861760 4789191265281491619623939170369536 4570880230088012594366269001564160 -161080515404831632765580215295410176 5703639179967407073361952094814208 7913591250260989247562315013816320 -903712143079315568340896748580896768 4417703221336552301162606589116416 8097119170489127409754700691537920 -302704426089658173955207386533724160 2091795211847122549033837334102016 3282142385546047927280480550912000 -760170086836326290112922922271113216 7257261204511411693113119770411008 5973955255345372048348651500601344 -843270582558919198604591003437367296 2495134145538689827857648888840192 9757688560166888033475714130903040 -498213524301926970193281087652757504 1563332394443365578011642135838720 8456600993797717618738893500186624 -98049044606916812276176993828995072 5525236371165043416699706804273152 9349011253260927642705595272790016 -141461961020833105913567633840537600 1554141870785019033015952571629568 2900913388592111616953064785707008 -265011199973334832381529467559870464 7544272016672530226721533160587264 5864539676490109202300527376859136 -507022420203939793296962062303363072 326822685532366783793726371135488 441488145754655001788159484755968 -478221832159704675492289543053246464 2292115703013827100070296757993472 4043754591456341378561590306013184 -543235877427960375638129687524278272 448627022890393851559403407278080 622658702229029434945164428705792 -318440638866213651029549187218800640 4124859740913297862428337691951104 2433502348785426819359963757936640 -206094240137189406580526381268992000 5644611132323636653818698971217920 5066678486351722143742458274512896 -650630484430689016281073727160975360 400994687104709466628178271272960 4996342202421053009941780936785920 -712705502096281650495298317466992640 3401482730584309143130493495017472 1359045739024972254145641424355328 -352926996311582429120788360199143424 1547346562461180390882768773447680 5635342033358895960278228455653376 -383079498506241329405737846723051520 5550839729366989959256046443692032 5246929332361670037509060796874752 -987966671927156589507163459095101440 704181998476575079570485702295552 5855540799395575254743082652925952 -520648840188193572008260406077292544 4046409946353863723151939914956800 7303248985027454349269410651308032 -486054266986485116735054089235202048 8159632967317004013984031520587776 3818523695966989184601541396398080 -147470383031257269196419916239994880 5994436607653710222974474919084032 3636019456092959945600903206141952 -95712395374786601752045454878572544 2664855895367400187986550638772224 2999076868515794102657816333385728 -504682744859395955539287793479974912 933323502804253272170319658876928 8900472146537757358501295833481216 -512265058843902927123260186145325056 1521465046041439918328744683503616 8270432393906775812656634185908224 -986792934795932261524142778256195584 5510030248708853935718423815258112 6030974974455854907209776415899648 -721586551292590151560129146462928896 1220516712709706148512712297021440 3458050121619348644815106322989056 -959550153092014342525497994018553856 7856030166382654157351120153870336 7052476476134998371967107998941184 -822372714181830656633270011460321280 6825916292122979738884513015529472 3859543283886975553328063436554240 -54160242184524245974759020219596800 1600428138295265440168621757169664 7504555975741429614587056484253696 -710870788015917865558287993601523712 1706097866792549169807013458214912 9856533712754004175260026908180480 -423468290582424056664476644469112832 8294005306395362393780289743618048 3655807289602296126022995211714560 -430002282484434559148329915138441216 4303317546470129419964562983092224 5610862056296633754635025814388736 -626744379816655767232462726423904256 7588077829828828334079793698963456 4185946407354069992318768187965440 -411701670294260777024030881056030720 8022059114542795787739458571337728 5380198204661205858383068745695232 -725377173775982221334238405496668160 9487712786959043625068643479453696 959763788576340775211428996972544 -503922990863569855989404629364375552 6300392362046783302551433941876736 1637908920632705420859884076793856 -121218950052807699285474136784109568 7274749013583384840898403194896384 8669358475155034803151215936929792 -323926058264005158645143349214838784 6566664591266398490760841063825408 4849440565161282003185831791034368 -106068129355757841897132354833481728 9144742579556387551461778611240960 6461595491791349443978730802249728 -520292328493261206579154049109590016 9214795047070959147808398403174400 4873728562523089372436961834303488 -952919861866701722314892092731555840 9417616402802914444500732276113408 7218830933010706349768449447690240 -541430682241135339714343018596139008 6056708406293819399629590239379456 5561358703403677271356338966888448 -444095213568204698902918176471777280 4477607274667578616882593729085440 9831086860414441909231279646179328 -818340706456106194266846650423050240 2129824148594326344608454203670528 6688292035521827990598621027368960 -777325814778945111960508195506487296 2026707921988574186730661229887488 4951376161903088120687925737291776 -451683513377097543286746451382632448 32949197231007014181078405480448 3713521697188546238433544965718016 -641371215213716497857184121856458752 5641508794486999252925792944914432 1383755318637781441116649430188032 -842248370644815459303829494640410624 6130655958506232681455109147721728 8902327751619561783723400248688640 -742156531441685576384798180784472064 7259164161695183693386840268603392 4352847474384580923555043048685568 -430645062129111168071799007176818688 4537206930948368056779008724959232 7943701126018890350357860327620608 -293195238617197984751387515222491136 2926934139927630810001130439835648 9806319201642069110621880235065344 -789264904909175471620550034347524096 4702061259049970603413044184743936 4831587480012260208937445695160320 -617300749164646599845071754912333824 5420401751154122771590344685387776 4235533703660839448571639484121088 -825825987182320219060031223219879936 1991811507035159243000818687803392 1507577118181149866313746927845376 -213094871799586853140016463448375296 2468298998384636794776781039075328 4841062647469592617036054442016768 -683179391949892326895109530829455360 2815249755182816711808198176145408 5398324833577621358136810767646720 -138509159266297069386029882320879616 8059049402557874170328666947452928 6380650285261389879095977912041472 -747902265812166159121080189041246208 171238420468693884222837136293888 5763504248825865552475805896933376 -730663166197106745000488958852857856 6008637286379787113283982953807872 3192652772904193344955616698826752 -695222343074189589260876715688722432 702545166085933175961924828921856 1322572399081499083134153506422784 -788458746644901964346868368735731712 7179323665346681096023065438978048 302926657488940293137101859323904 -390376567713666197527599511100194816 3252668061542597595687755641257984 429971929851034323221759217631232 -820937578955220729233050239827443712 6331031391172000841320599400742912 8492185088167560169103477906079744 -679324498820727601062808153424396288 3255332967560137884577963700125696 1460847046833842057047158007267328 -412094641939075680165548626213339136 6910509101888172513072987852767232 9437114947382750538160391160070144 -403554041798802892773629540148707328 5240222064528720297091987234881536 2463579130052129448539296909754368 -886762312991281486873859695461793792 2475467568283692429604005984862208 7536098044484914787910680911544320 -125525574897002619919277027242278912 3734075183716055880017791510642688 6818388147390933350443278984544256 -900088173920040293522073019893153792 1068884876160903206694898974588928 2587512023711945155040930204483584 -354523534063564643229793432440406016 8975083587750287796471706089947136 567915232557652018177183863275520 -741423212571762070607952344116101120 8974345380182248219668036924211200 5027749753500949407427871507480576 -395006283445231078107944993354153984 5165851319793499527150000907747328 7580745577637630077515230770888704 -464835781000463599180981568840663040 9585375713224258408515964686565376 759647494615454165112615524630528 -622728500215461431452087561549250560 5727757043188410351768424094367744 6428931699726368149954027327586304 -231802020459903424040392527563456512 4057029973641359951911238544392192 1507112118191451344068775860240384 -112746919494973997030978834256625664 3619562879831264346215620850745344 6576779143487876921859641970786304 -610355252460494553049734739421822976 7183221164728126253991967821135872 6597505217228936213243491254272000 -835997921147189679732560541131997184 39988774182872036417120709378048 9125863555978635578148751369306112 -16480291061568674957307701266219008 2676129476041876785138581507145728 488598937488797799049104296247296 -676844838369515339650640897598554112 5611264893863541359552719692496896 8288852281452693367710691362865152 -123947277855055714662612469691711488 3588446975504865140771692352634880 3189043443374280007437018701234176 -150790915468743242779522998923689984 7289510469482896954870059577114624 5238118961118038849048422570262528 -783013713646148580244822560623034368 583673187428523018460794059751424 9585519111233960172543109570232320 -650962217672032035874674301068115968 2945133016626443690325051642478592 2019594913763693582573663667879936 -603381428411510137713007062551625728 1640706554461958092631112163524608 3134644577105464568999111158661120 -764518511840040689958035743590842368 6996123416815964292564134855180288 4199024742583539340086000620666880 -997542520973212183305359587505340416 888696465798366790089902435336192 5797407649418915645244060630777856 -904622982778855317360329109379481600 6163587857161930465080628993851392 4671642044915604147210498498101248 -39981409264785233730448674552545280 6377309007066785280368733293903872 9123723968714514398269466556235776 -953410917702806642250641699715940352 9155476847778069794303243769085952 2146401670944812469528319550816256 -668799255014597735217903287096311808 4121498697257791379637082976681984 301620480899652954449862755090432 -172558234368792181399037229144211456 4219124103474703161852098296938496 2101913497328923264826936221761536 -946594949277827747163519561001598976 2104846327304696602922196995670016 762698192931536534518460009414656 -237336087073041426609556254346969088 9510029773128720385558419488112640 8125506644752720293771495673430016 -231493704817008114116312732767617024 6320065036646910906107694162116608 4373768349216217903070267008090112 -408365082888028434575061159212220416 9090163401590824670175429966954496 9858067961452728526693902437056512 -99616512173597971393254859783274496 4989162725884330039507103992774656 3814145489822879480213275269922816 -740011586184108671653469940273381376 2416076504085709009135947961335808 3091060390314770071054027935711232 -342289375828407499557808228821630976 7894072725303451466879995666759680 7938929312656888744393089939931136 -391612682661861173760969800108998656 6151563105310075726628689058725888 9629932594756146666392212018823168 -638317079258761997496887846836895744 2067126177828105130388520001601536 2694622039599593286740059577384960 -227720918655794395767324973041975296 956220936515510263321037446840320 7919135455528294101992800344080384 -978041086931411087095047175274496000 4166895683857678662204874960142336 5875868180193185127536256188678144 -743948612661555643774454357708242944 9833227341078295935477218262646784 1355456937926204086714062772109312 -626247134044698740593224998688129024 5432127048886172339888970455318528 1271821935803099286633464989745152 -812870749477910884367341884234792960 218042325294914703780010069590016 403202532532551999815041660485632 -643021663399823452167496567921573888 9581169170213846320246691349921792 6781211967707305074217928747909120 -943035088823103928398854884778049536 2297245962973608716373787366391808 5586396079038572229963144205697024 -273597828059469116560964663048667136 6648281544761581912315458993782784 5038104507953493149242319374909440 -502108236425984124355288860379316224 2208388205610824937700071437238272 8560999973445618178815515865120768 -853945988576892092910362892674531328 7716827277822675668046373476892672 6023756102083427622075493680939008 -449629929775843204482501715374899200 8828885319813649367866388349190144 8378325674604869252577786559725568 -42925035456360840933649860352016384 5359068119019864097881438461886464 1491966495683251788814180744691712 -719279708186210820820978672968138752 7251755332861444066133615078014976 3420641728255236121940886886023168 -476604363277877650628144645606998016 9436603665218474427263414446325760 9484322434275654545177217532428288 -116371919801997958866079722414014464 1845766479923324210380661353086976 5773309708267795314597203728662528 -771879490550694049723988445342203904 3942058588980140021277303901257728 2106306412440281845683216839606272 -881398617434742957799012507379040256 4440873891858052982792753369841664 8228353366360337088544317749854208 -523866053120622809805581001567502336 1229395716695251410079895294836736 1548847824127107034870885778456576 -557647626217310035842434461874520064 4330932892895796561926059385159680 6830010318034237397079965334241280 -436786754991259115219718249753083904 3694485734862396511918280723660800 7922746762199180336482583343792128 -427128914913153132769108787923517440 6842991055391985048277372572270592 2536863510136497533558731667668992 -267380809799564237797715992169676800 8873685567260606180658930329321472 9592445781090423595189509914886144 -59115311215087562365946345042214912 6965483772172250124954937268895744 2399490351642639644074976401686528 -438969894166826009629340312195301376 3692394690899885741478229892399104 115845635678343221943621409308672 -502613393826543495160678416964911104 4995968491093558029150078210408448 4103060665284214957284686636777472 -291819909163138311965717261551927296 43241855277604656623616656408576 4221564426650410618632384918061056 -246510960064907410881900840832991232 8414266338180893612795236869734400 8668758005794197072360516450516992 -525942778128142810236492220060401664 7221549302289193618526683212546048 6978670492087067164273082028261376 -500433199792779627982582551442096128 2655426878050954597722106294697984 9049813867481145149740365174013952 -446713464830333868851574835687456768 815489351600909168499522172616704 8062609290729831188422469642878976 -646698371534702102731540211366363136 6005027537777710939756413398810624 9358879409365237417558066138710016 -76026815049445154764022955129176064 7554824034445635369129818250543104 289822381226940725753519269740544 -7314989275301876329504323475079168 8987181252053621741775403274469376 1796492147794942778980139379195904 -686309434201851245317238713151913984 7913923454973914747160812863881216 8094218925340254319210372295294976 -542639559722536847755785870260568064 3580645626246891568529104114286592 5109078185693483615484826198474752 -201175563885935705097839098885832704 4921975665273724535051774836342784 1342950456930673614263727178121216 -537981132188207731159457184484425728 7859998287856640615505623265574912 3683382701296059100105191674871808 -615198399507461205533204943130853376 3153027383593919188088690246156288 5967042327330553200709568269647872 -735368536728885684974032305107501056 7826677777116474210182967024680960 3052973523307957081390749405151232 -671260609575077809082966950688063488 1645932433548285568676789366030336 4646703378521373370030900390133760 -416767569905701440395445825670479872 4275098548529154139962625004404736 6695432283437280541432595297075200 -166151441613365904952255017132228608 5930065366741572503041374483906560 962080978106109375839967213780992 -417380905337303050328785401740787712 8981360597141488069872621067436032 1013771724774049556876202101178368 -29665589819486387825824248002248704 635027039759049324803745671806976 2060896981052592378191982591213568 -855030324356104560833033149469425664 3589725488674804308894902504128512 2024791439328169786461045034844160 -671840114901116805059703596497502208 9441901012250692062893996928663552 9416105448670053534617852847325184 -130483514388905204295524373160263680 4980659244601034014960438174810112 426462199909105728006747097923584 -606388744814806491330472675941285888 9008212484210955949306371138125824 3398503497161706233086348068126720 -232885280931246394415827252871692288 8776266318524221733736045537656832 3517097388274779252292959653068800 -101551952869864991009780669763026944 8880324584638861790375052874612736 7514804767745264639222035695796224 -807152162248522673416705982922227712 7497616894829693029863247786803200 8863531011237962307901931909021696 -924698644357747540136483781320114176 6403914491758273399997186787246080 918615545346429965311058173231104 -602754573854964959224543805442097152 9422454343631092990407992852611072 5914965544371353879935227512487936 -509523169891142628875233042450350080 627145466533734423615597900201984 2650790412787843387540322987802624 -281566667811201003855725883434205184 8933570082257180133695410266963968 3316200865966361277049698550546432 -537485476688122201855639949443858432 1665646243237198616237861427478528 7430767374755118080946318633598976 -419463848955818584567563130241024000 8945033158879252585578135927390208 8793229920211720563210796866207744 -18807594509494643377846070468935680 9594871990898705610308224056033280 4027029899446688830224964513693696 -423460776441660029628990029777862656 2310464418809562984855839910658048 2486499011027685623369985603665920 -800853488793848016936318104219156480 4074248976116805991645777686953984 4014309693096413428438136573132800 -14115979884603486272729027050471424 3500785433506744325654950637993984 7010718915482451764497432612700160 -70939091641567866609621371543617536 1663855113908212385643133942104064 7851697737405436302707735102750720 -315524592573794669788788869585436672 9951557067672949117064283254947840 9968973279817752034670026378182656 -873072003593983716025381784937037824 6073022367434731732656960137330688 5169654865575610228970136082055168 -481637717883365937752793205411151872 1853058135765951208232818619449344 9167262871136351337572683835506688 -171855350519063288977703475739623424 4532197985550745403058893342375936 4625626696228961233733439123881984 -316316920250716388222376070671761408 9974501816701230645548051247136768 3226911932186803739193901869694976 -225303032577048903650893232120791040 4971783937090869873866432265060352 5430324469522690083623596516704256 -718136331859913251179286996132560896 8879657340009030381244054390177792 7018174424040054817830462837227520 -829726254667510834267657701821513728 879527370075722544298059980865536 3610730394459974627761770641489920 -779784342283658332545471617431502848 4684378318803190822839149913964544 2541440746481957678476038686900224 -861792281286163837570848795297579008 8691432390157142008292079019491328 7672825200599748562157186469330944 -847230988909516405447590928187392000 8173849976043573950448729587712000 6405387195156905538109142397353984 -233506972864612569050057792232095744 2930790405919127911302285194428416 9745135562161300922543233222836224 -347506475699458813850826336391659520 4843024483568112390961920334626816 6845447584243519985389002479894528 -41713701721763100152892607067848704 2639916941934696192694317609910272 5217281458675682277039457108492288 -857800049310018936734037600358105088 2750336295940448949136838776324096 123872452020643850780905790504960 -239037863074018318404455045330370560 8298993675815461078592807258554368 4319023666822321085679060601798656 -631722564193672666818282469774589952 1449306031946752831035745664761856 3158430911044060943996992551387136 -783206996692284001770322682739425280 4308873468891725712458721144078336 5845645210206770440605780731232256 -565456894332561151299241127912144896 4379954855886545850522985354493952 8839081540508052698800453876449280 -872709601310509032039525856319635456 4611294895462351676359761727586304 3873928976143936538850769768546304 -269007016576144343559907170939043840 8471944539794934446289165117030400 2406157121428179585521075481477120 -196665672411479419197446100841660416 6728113695003558311050409427337216 615483913868579369075958228189184 -183049878095961195454870503454408704 7554716217732405795828735680708608 4030355713412827912607060648263680 -421745588811357819903907924457553920 1177178843809683617716117130182656 7459948458599530637984061273931776 -806876133214770482519786696476721152 2247134839965387708967047164592128 3267747393870812270480696241291264 -864041353604767443372253265096867840 1142610297000027428430492148432896 8457403136774160859094465183219712 -665328950953088041073163120247046144 1655986383019984353884723216384000 6253788156747604606860852799209472 -698167717948718808926193821230825472 4189760581892616135675375960195072 4349273930306501080430571646091264 -621841362891509851233663131253211136 3800309233767460822248225765326848 6683125135099621543538539146248192 -683838137312682188752611577929138176 8133407759364899122557485324435456 1042941347822527444837524127612928 -702295750490503148662082717219815424 6557382088097280551055491527081984 7949838929726212953918395801141248 -15881938050851516976743250898452480 2345294695535360759970349268860928 3618248083910832302706658637774848 -831826245297219889340369870138638336 2865664997360040395124521908043776 3731031935054354145038278334611456 -528549956858498022221958177420738560 3619719660522468087208729496256512 2719291184129424477622045983637504 -443164209344289020083184848634642432 6362074106769887850472978723635200 6770380442459567425832956043722752 -77178036298967930096401732515921920 7144136615259339054466121288646656 8864035941302955393171809219117056 -961643390521736853675788658595069952 4501463047208098662672452449992704 4933126687983406031641445782257664 -940260911881196819957844619907039232 4970309859860108866897709734297600 4669689990271955412834891933417472 -267426333211581621379949225427599360 437784583295962077305915372994560 25044748511991291278123977408512 -186003177019126828328970343917027328 7188763939303699331119925736505344 3520529083254729815305734068371456 -6157337793426364257098937713819648 5614035762329790365622396407250944 9428041495361941868527746753232896 -839081026226650024895391576604278784 6141181783545064475339451684356096 3011649521471471054799895175102464 -876172542132445558169492328558886912 7275699908863093417358831766208512 2778880460303109607629681873387520 -57082333031619645389954611436060672 7793922140626824433641531801337856 6967227177873486184461536394739712 -199404504586806812689216631151263744 2958996503215196429689936154722304 3748455880839594738582634583031808 -888503369258148133090631690850664448 9141983795113597210030370273099776 8728008594726178640421763648847872 -2053829593110120149113032799158272 8652945456374751307642110123966464 1590525216067719487743712320028672 -755075136824832844056283211601281024 8286282127185471351199936267943936 6824337621775013217243726111309824 -839791765574438799566122438046515200 8614391639864972215319287778246656 2735714236066321132782686989975552 -71666313356411784698485681908875264 9290781979150036146326885934039040 1904004245988283028641333244854272 -453006223771206565823137684679294976 524472745965131806333315579904000 134057856669515812624579849879552 -711033154968078564720574586574340096 8048053961630727222428987643920384 6411986125850888403408515216965632 -747947579897638181040789404176613376 9815290800656885278042516849950720 2270509558792750616948417469874176 -326448817614125764333786708509196288 1340691543006805732753966681292800 8195659774073638675638743841374208 -524779723406068732178438182689308672 7049688866305119841648768798687232 6983898248564995434877998912765952 -661206767599732185866341027932012544 7534468121404238267077036555108352 8734309896488958350158548304920576 -279002995448137627055563592114896896 9305626973205049614390180576231424 6351957624953817338836204398837760 -96277219007254970965019518966956032 5819508610717671127993293769539584 3200342578293441071335255257907200 -647089868538609605020423538343936000 5145593391411666848118239282593792 4206614173204910616753884207513600 -652683643698578014820837209208258560 3295808590343773255923938044674048 2028836401512078868709516744065024 -839804755790665827372171753391390720 9226352738909030552599611628847104 6198552544092917114553347025666048 -287769020022772712918863606280355840 5474320285238468401020487740686336 5548266767523492272907148515606528 -635597076218191823779057084982624256 4440616435546647780388077159055360 3616044768446082057240127175917568 -675220763353816898143813070349139968 3074458644661959730739291298463744 824185667595249059957716052606976 -257117680404280970304134780375007232 9407143964246748339858294104391680 2601541891262500741915061629485056 -372561929707029079060786488883019776 7521293315090045305732120589631488 2186467496096795506910156587794432 -137697648677288520516610766424506368 7113785940222339716399477469216768 4154311669855441881586894265909248 -395664818101471813350124114667372544 4617829032684927976830432675102720 5540264478388251679474145296384000 -840299476758850394683986668832161792 2826540981382093602405379114795008 8170017531148503604647619977019392 -594387242672446922717530914180562944 1290152623786814647337888165920768 4741799725722493832991883824988160 -845174024953323136653185067048239104 8118721725693225556186489591693312 965104286227463017623403951554560 -457830154015863962134714320672522240 9549374913517001225383968130465792 5720598715257944261492339202064384 -625360771461562366802831050820026368 3608851823292333630480581153259520 8050711900030483821626798047756288 -832385057190166562341683772891594752 7391955966847826838800625729273856 2575749178303890439487523961962496 -62001726818078396834003151631679488 8144628656614931060910369808580608 7662490784236839039196990579671040 -166224336063190424784886068005568512 382574180987880042882458355499008 7372799750729669982594078846484480 -446013110694520631464251823155576832 2838104578619585644865630966382592 7393995162477805904623634007195648 -497035312332517806470769012042104832 3749339151944547771237244170403840 1075845447972773605274131512688640 -130741879166922382769394197303656448 2702227576147416770793203461783552 7394151846472049396349508161372160 -349141007847588717610653156840046592 5759227435174028404146786078294016 4273269262110487821949873514610688 -891109219338644124046422285402243072 8820924785942307081431274284384256 5420861548802625145373548928303104 -596696122769059741969015424440860672 3983278920331054430216409621463040 4481983727744753380765843071172608 -931834240964543450713309346562834432 7235452722005651332909304037507072 9388242622385974227040981384953856 -169702984976562515436077497660211200 8096523614826815145833826392997888 4081296504678323800184708503961600 -609598096263965113419218357544026112 7620379940938566483385420368314368 358308598606055350633224432779264 -113380171324040645893166146307227648 3599062666223192750879265706213376 2776098970789451517939031665016832 -773214020777576125788978822512640000 4239415672796973993016848912744448 7765860365420305677736369549475840 -48011547530283236501843051924160512 6006033793628648266897853570351104 680655853251573732055975666384896 -241518627973439251903194691931209728 8650152269625482467911157145403392 5845150302536954898000614046826496 -729169162634531097765992741392613376 1019746613660096185228762265157632 9015852048487064923629717316173824 -131342944837769055775020933955190784 3001488984875325599530805020852224 8153695157884219399352128909606912 -944424065148169809041131570645172224 3106467922319183519964500634632192 773851909654266057952260823973888 -203655203476831787515832563016925184 4689416956964130693960810547380224 2708887183317049295925606153715712 -192558501999350830920012403641942016 2481584992459825721779132615884800 8666579991268187098373589668200448 -14495474879656022007013054603067392 5892010346166707920705287446593536 124417430380765450289168768827392 -500735662572430684593228405090025472 307887641370921980880629442543616 8823559024517889196656294702874624 -206557404611729540220782576157065216 586212460785200006861234502631424 1721153196840065444296164005380096 -860940545934402008864496845066338304 8336139410526969368296822142926848 5263913700368205228276058119208960 -313292820143178745336240937988259840 5088411718500686879838157867581440 6581956350291316800175211687182336 -928281216060420577719369762116468736 5590442114202283728216689483972608 8262325336730871180919421282549760 -591862347421433173447686743279009792 7616272019629097057244389826363392 4768023912897788747313594794770432 -185079622990605798559157639169703936 3534624016053098137177492046217216 8691948891528879931995344120840192 -675992115885449259534903895935418368 4024107520251478827507063287971840 3324141362600392050487364016930816 -957247115588747262665342189828046848 4993716775122326067891987791478784 9182360743993296615656735025135616 -644225171996444573158918413948551168 6328976786568962857040401024417792 3517206161352174051303401212346368 -692153996213962801231266451831128064 4964640582195030742929530530299904 4191139144402817601854269340778496 -408472567758737931381604931300491264 2411179708918072694223929595658240 9333882366011531311336855619764224 -495058525095111883776168395366465536 9072075657397602310542490597326848 9137932612864093855360007341604864 -970212943531406127808495021927170048 2660334629006839986918608779345920 6575769016238103409377393221042176 -39309489664486840254477465594888192 9557548861129324641934799712288768 3761746730305488663809509071781888 -465391671821543592868304323486941184 6169327055465526322270957662633984 5549082587928932454570799558295552 -530034274499317872197232420938842112 1125741040356320862787243482284032 1352124127110377669912521556885504 -58774288625018897551995984043573248 7640431139211140645256314191085568 7531393844536232532304152636686336 -152698173431221884449704599911137280 2957859429228462435637721588301824 9515856374881829499431021034078208 -864713587427481485581700667466055680 5842440413002879756325343423627264 9707770856708094387344477159161856 -951001517717087829630852903519387648 6978975041089672040173351655702528 2028154842411870838011335417004032 -443377792940885379066333250415755264 547264295610164238729545613574144 8775075299395929482969159579992064 -931704725105404368047725375857360896 1564105447965337934923095863197696 6969453227641007534683981000736768 -523324219848552905167982383322890240 4049643358684654127597308325396480 6242778685336142978822667048583168 -378265848577689008062548184110465024 5061739324902314541729248203243520 6753042240701452679897251095511040 -852918661424933917242229239954014208 7457164866016033163254558781079552 1999888986615174069652815234465792 -19035286105368846460162752414482432 6560450241596650821521837956005888 5443734499800789010767056228843520 -872596220780855127924193650488115200 2821765081704453702298140569239552 4253397231881397932051509872164864 -222406663300402739660672662197239808 8652110060849917022613078682894336 2798596379166687764131660938870784 -921241737355393318397841467229863936 5506009534402557632360330242818048 3522275856951318972872094648369152 -934165513031870315535744959701319680 5642901726722984226790203704999936 369427968277710956042805930098688 -856196669877548336429670039738646528 8744719179473227724003981708492800 6929895950646911302028485753569280 -428433348251932951991012405301739520 7452931034164465948479395857432576 9907068270829533466842854873628672 -649258577052200779047864771687743488 2121620334743439270846326959505408 3128790396420316698515155034570752 -614322185354356083231782936751636480 7613613474868079676871055933177856 1858712707516192885338446464286720 -568678168970099782683129597099245568 6127223408515691358540622358118400 7827698619058206067099841385725952 -677226134952860681646611317200519168 2461024593569937547238566042533888 4922160190663187402780865518895104 -582643569499369240852366367387549696 4662963815041104383787598415396864 4816764518650008610779324963880960 -740733137676986001501544953501712384 6902006596887719519955289567657984 2278786751713658820622228194852864 -586142376646970374431448222677336064 1646649323691435177361399737221120 8386927667078294167016026098630656 -63580857026194955820277068522848256 4132042507062889412209824998883328 5715698231323952895792266700914688 -72268405104604474895912394085629952 2629027699739950248548146136219648 5071959111938989213765491421609984 -291970582503908346343557847907827712 416014517290651651631185334894592 5306853923281078235671704375394304 -375160359807537133258583196905242624 6923025474849386932619123393298432 4183278667580765700772594519638016 -333717030263065680432415052516032512 3521778906123683130274189278183424 3528867614267955346106432691896320 -880980573059430935640312997314822144 9315370500559040401513197489618944 923332518562940842987375512518656 -383926698604587895525475515046559744 971788747635970832203965179887616 9267978296330962517981820985802752 -670690207891543506540102481833099264 4479725596709805438077195759124480 3121617407068981971743514931757056 -515556562351524640735265912994660352 605981810625411302684143892037632 3017209028253433196825988510515200 -184440151780411936401841496040407040 8268227371473259647526278776487936 5556492216517855667377026434596864 -248036689427562784375595936656654336 9543914883446569046623316143505408 3062527883194380036196487160397824 -668832789912861818992676243828113408 7082215342287477725809074952470528 2008721458172611994519487771574272 -502052429472658351570624220961439744 4216220138879359580200649592143872 3516739322360018262116012650397696 -634337154158797773557895577001263104 4447883363079263671016733957685248 1038069644781657754694079022628864 -184236828569995525540965446980730880 4742212154402761237996693511733248 8838393078202707170957231889842176 -537219612339510472935487497996075008 8737251353504901922328699855699968 1475310348875792082515511539138560 -835509833303079964014799006694637568 2413011859772619608133217474838528 6076709533876086513805469746724864 -847760882738096868941322980824186880 6180275389887622956009370484211712 9155098181310494542340935141818368 -824959157613784480689506051623485440 1570399713041076428183475262062592 890360416607329810000065616412672 -110006634614123454388915692311150592 8148178484002571908639034269761536 5213685886405464500976917522939904 -875432170715225203814652375180771328 7862198617613256552396482420932608 2093783148639567044683438047100928 -599600085616817358489655236962025472 2531489288661827098066642068832256 7161247004318786382564672369852416 -19196697215699897051561317483151360 8485482110805611179418441389965312 2152474569065715543161920452296704 -18168506377229033622119160708333568 6884471765798007165314873927139328 5582158960626550306598514809896960 -198712287966186608138108947235078144 4886891610241436667878176559464448 4747419126091187713642526909923328 -991633701810429799489289398312239104 691217181204393918529369804898304 6273261564706704391887497287696384 -207214882205085838821856553748922368 1499643561537200060085252227334144 9149674802463926270088212815806464 -761608175645021317802723629028343808 7770937433895545331419254525788160 6451687956717600442310423404871680 -171068221810614395073519798791962624 5172456117497757484888957103636480 106431801656716176231302122438656 -52864427274457633310281079231348736 996497444610486536790033922260992 4244292674876003971999373381861376 -985181276302168524021528798320132096 1724257287743638938615591422918656 6873020056327318248197471776800768 -95159594306553718125015718086836224 2820793020952223157795350686728192 1751404135754764611698334596333568 -923965646145062788092266316914753536 5729833897005210931156267284037632 6279428100156564770599806898798592 -648872523308601149738399411505987584 4217645118650243853067486056415232 4932991990739745668552859098021888 -79063142442556464254690687386124288 5833149680342874249438764828983296 8535452729471913798730492067971072 -426467000511845626789281422909636608 1170704742968968758323987487916032 3645260372816813819190334938152960 -153166929002317398812654457566789632 6110839807669905615967545527894016 6743185649799063460727994059849728 -527073438280259771207486912346456064 9739258366239734741323159904976896 1367576522963273181172741439488000 -897202389056692741905792756227244032 3542147214802303560877142634921984 6620300475558999124246780715204608 -536017096090272399070949156245733376 7690464828962031193902244585013248 7746630082435971403276082231640064 -127295419027101293829086378429775872 9930028048147854893622039746183168 4471436880028529465408318854922240 -628092642330102099427705527289774080 7840494772718672687765864878964736 3364444161730802699876169997615104 -252819825660121674831896328347320320 451638538683373453111451333951488 9175382428355463022739040478691328 -614161890807331678002430163317424128 2595497040296379846657314377433088 2753138802026673724628992096468992 -925651023204666448399809013719498752 4817721564926055085799141762138112 9128439472850148385759365458558976 -300614180416931245994647844858888192 5956895699946473612816243224477696 5777977490379880053242794807918592 -987422865000350488877260209093869568 3691456607277147152976591435333632 4610875463827571213033452240633856 -516223527275185562503125256678408192 7335926827495430434995238330171392 7553635099916720528499460905369600 -538300110920200175840949293843218432 5373383520716723370546294375317504 8013464643845423769960030289264640 -83326552596618953502508080626139136 264180251865030271337458776932352 3644432107623570876142489327108096 -789228781871641267063443386120798208 4294190206011382616479481227902976 8417647601706194760749327688138752 -217922964040017284420755540158709760 179106330078860827443915741200384 5854906692146710936733728852934656 -625319245649025478586850260016955392 6402265828650115729980265863315456 4010450430635345248652980337508352 -441009247382495351574990995981336576 8802443465211310854614282192027648 8962187599666359257169402037010432 -359251533957874368969141849778290688 7350166317218827857410000836100096 784910146993166273916463088664576 -986810790438163506755889721954533376 3659253236088190643029871131885568 9711111150910828443805750533292032 -32724933327872345165085786440204288 9864792286919681483665183162236928 6632299092984399253437823462670336 -718400628176973205350062769729175552 7669213921556563608998749600219136 1877684309256950964851534215512064 -302374575407218648247344087749885952 2881943037963016321564836987142144 7829728616623486656835675211431936 -997193403343131857435466543138865152 2673129040361811319291706179846144 1219855141696228468595699751059456 -509658768335191942543431031184162816 6179670341413109757669426191138816 8160830120575366769583527232012288 -38155538889853115593124369001349120 1330828035085427222852491313938432 1597791905712445051858270925357056 -657410403583789623783783656081850368 4873459424394123829979971848241152 4633314240491176139325849347293184 -340746773205941530556889046632628224 5377908888810973428666197994373120 1969308154869361425595713965785088 -161203784587703839984455873330151424 8480794587807913120204347060256768 2792665964132877762498883554902016 -366320848538863694293548361163210752 510402397233430571623256439128064 5373570052479064221125498244169728 -810715589229602453434361191218544640 2307434193669218899418680234344448 8745447699230945522071043663986688 -648758398558474572858802868588642304 7823505016686042596232112426188800 6910349472179140027323212571344896 -697099362457788959846296064626786304 4177845306176377803137387868454912 3841556932186026902675874981609472 -85913951260530582777611529538764800 6794832143636395856554476997443584 1348958948368017172975463358791680 -587501723502352279232094570685661184 4723225022416693986111793565532160 4718860137593853072208349641048064 -263831346366977976787041631753732096 6446357318747847369698430521704448 8134127236062695703685395774439424 -613713444066719727707410178729050112 3579308441369979224718404436885504 3827402030626841862111248022241280 -146647272831374680925530303376654336 6101699646396948941633898896424960 6999285731122445346526161270734848 -994911169078970463424437106759434240 2194295389696146929763214960885760 7102234258189674403538531858251776 -966728778827397600340435683308994560 7195467179128830669579081113141248 3134628776687948707550314060840960 -457111057091242863649573734153453568 4997147254327343503639380551008256 4913832632304475169457291818696704 -609946171096394473397930099698827264 6758737196935877954131721216589824 1999903380916247005524967915782144 -601755133764300496504340370251841536 3436027996641954405028240428105728 3472183903804180161717812504559616 -244065220815090428639415724482232320 4179178611945424721388018346229760 9413457856644873951845044547747840 -84937909753196849525863206398984192 1685086043988388119056046230601728 749532162557470098295609551224832 -530988550940505350796504796204367872 3650548593906002935123213702660096 3314327891636791277204492901154816 -671280180010040503906871211584389120 8278026386775555163146984106229760 4170702256789476747519206243696640 -810383196878408914191326568104591360 5872837882931169932788121171132416 2649825629818945942285301477015552 -493180612274788973558779727317041152 71243161216247053623712221757440 536415147808716892512464704372736 -272521626120633838903166302557306880 8842262280175838096658766594310144 9426134662122717160529796339335168 -562029397957995379526738306794520576 4302469769121925329354794463133696 9229146488973805023422239150702592 -242760896351932846356180265984851968 2683040769209599093042559221497856 9871063117686841424253859175333888 -158013521119724167886322615046897664 3769235915140260390826135038984192 3741493014168161343448635190280192 -38566265421040151849997126447661056 4246878627956543810018866555256832 8650559873595160603240886244999168 -350836591312965419244239156546633728 2922455836896876838202464893140992 374723318250278753673723322040320 -288694140092969593232741199784181760 6690409106452391162977234649612288 8540287508064303201872132918214656 -981366857442671530936227583167037440 6616914467153804444461826844917760 1482822263356721274208390830096384 -912207546450020717596805811434160128 7919164009294962941519599100755968 4361982115597750773382588699508736 -401247742476245585212037565612294144 263581954643288767822475816861696 8632714244205341996786748508602368 -585882279280849287583565987941711872 6773228427912772910127521736949760 5874826512020396671359517628301312 -135962944897367137345688028319842304 3247618541319280393606030614855680 6224416589911316970215870962860032 -625678411113537408723840532974927872 5464694297744759487485767359397888 2429997082789744694110798716338176 -136139496069532750405430525936271360 6776557368777973496028392362868736 9791593785948543599599208686944256 -235423479850771205301538869441724416 9626800114403912907078594556067840 8255600675074863267158473515728896 -556662154890217998527174769666686976 5196152294061775797157331365527552 3262341324359990487804961550761984 -858129191652084231852730372604297216 9955052929844365928628370599313408 4921278350249968453271792560111616 -745388837210884626852099763203997696 562135100268217933719981629898752 3047247563442520406083681512325120 -414167808700262530421191643131543552 1577247611144810180071777175076864 2718346786796542644115240338325504 -527342208055501054419372204984631296 7202522794386101587044042929078272 23772163712562482738666607214592 -880874905261991937504998834671976448 5175736941842538008196569016303616 908172363615151857140731752742912 -461552128545954319546743491483664384 133363866595357444633329458479104 2395635580755522242005962967744512 -799894754234780512946355108046700544 4967825782756651478184919876763648 5023462387870962719874518859382784 -895273162526473697145039555452207104 468725521061942068717764401430528 9404263536761772742812351816794112 -325830679482145254709706764759072768 5357803716164938230044713809870848 8251199240381734065476251152285696 -907420337167385828476920222409818112 9562710534635040035969332584382464 8843576353119370727544609979760640 -249489788257217991960949636141678592 3355691266337889942018000487972864 6178328325720783284972719662170112 -152539612852305023419954628766203904 9037729214333534044130633295331328 9714197938583480884219868883189760 -64772771836893222964540673227751424 9032289086414308160331492469243904 7665814464453021855069287498121216 -919446486182197109752673618312036352 8631684400645244880153007961931776 9513175809637702849878127275933696 -531915469534051552355737023253839872 117527027856744168781358320058368 7720448794177834508063657517121536 -513768091368518706111795198370512896 5364278544639167150945938631032832 7264836827274290415291380256473088 -112000699659456542486429218923085824 7275336235348824083376819446743040 4397096412895009119001476794941440 -398737378482807129759272641868333056 5048583627088972607768281797885952 7200647357826549604118631643348992 -553263104861329045019746034746654720 9160738871476374803936281677004800 3621576145190152412288805435867136 -363329978927460333682935674523615232 7012516614879937576739015275577344 6277351347693339233480362627694592 -426339189785411380791845383821066240 6359292921160965760935723481956352 753805968978296515928537197182976 -991720638934158815262696010065903616 2455832777548625506552945582276608 5399304063050584754624975605858304 -956083816574837656541927793351458816 4248468582572785987205672453799936 1274395895452315705955809937588224 -851379490072869954134917092158210048 7168254470771318857260855701012480 6063998508724245653143551605735424 -830541786476323679636821235743064064 1951197928075110369538513469177856 1554472468278553885896709463080960 -815545202886392066612783872378667008 1303913807617296031701974852304896 7618605643565344590634911291932672 -587441005887833756270743316529676288 286762678240080594967751429193728 9980172337768946636877472058048512 -491644576375956695845613233145643008 5429253618250882636110592489816064 7619416310780167480210066113560576 -869159061799921557100865495926571008 9714926898936237940416322262269952 3838059043723052573159808997261312 -371459770185931848990375078491324416 2944868044643813332776251956396032 4387385688337130811993505757396992 -493684527211178740414937791406800896 9484502150372577976758464319324160 5533452167685814401062079658196992 -869248851589617059259455745464205312 8692089309935275705422256782966784 1976692407345459386854016930545664 -997141764675726080279351180679708672 466778599690232244250293210972160 1227414835060313852803913483288576 -164485124324993348945208161037451264 9189357833391138074760730837516288 1658619963031312384342853347704832 -742485472897487767366462410208575488 4905258135879979403028845431881728 3195182140481334304442703371304960 -128477683186270074306825048874287104 7316124323407987464570073262325760 9451685594862773420868736603127808 -168258666821777581900882133527822336 3357637136252674637291946430693376 5764397933770452494325980805988352 -200418801037232955698197881402949632 8168822134009487930928228030480384 5283869916555610328360107313725440 -54595544742774552337209923662249984 4614576886431481858873466265010176 4835517777533205936323991043047424 -798756647417408149211788076489113600 7196368643812022002366052770512896 4507939372390905610976253762863104 -618688115127655893349206118755205120 3706776078871993606220969202941952 5541923675160082581700363346247680 -937957224623169864426472153632735232 4525096104985160255443438229520384 9457231286077219532793469250568192 -203181473909045935308261506261450752 6200750431538230603465865998368768 2022951333811558805061310489821184 -199949824184753721171563422167334912 7580592309185121076743081958572032 295411365855419345473784996954112 -948147347467803171595174165151219712 2533059470108140456813186462515200 4690598469466371369642953445212160 -91707908817928436722726436757045248 5724229250097732296188754080563200 3245871529734799756604067234709504 -853686024171912736229367041293811712 7726102583039157975730429087449088 664530924492125886807392475152384 -924976753627046160132807628593037312 2708904428240151610567869855694848 2761797464490805742602010885095424 -629967414947310128394455969226031104 6725249718791327455226160027271168 8495555472682898433315600525688832 -757237709078043033698114112650739712 4112675109098879160795860750565376 5207611817003598128057564176318464 -511094079768256319336678825719234560 3887394422248666779337933342113792 7225686991536063512755321327058944 -178797141910766615596175946688757760 5784552969899017260374061920288768 780647482045485953490750957158400 -296235801916414353630189321820569600 351625983909031232968173841022976 7319463814803126370564010273669120 -270665495696634097599335016549056512 1095349947102607319478654640062464 9162389039002136859271278196948992 -408733766347864376082015124031799296 2099423841857860600575376169631744 2681107465354868854219310702264320 -917534308957983737231375676840345600 5472995060060350885406466604269568 2156990128077392703939466309402624 -394794025433550441303082140595912704 8492245324048169994346364051390464 2518309221698617231384280851021824 -424216218920526073928773035597234176 6021190450151591135576577500250112 2054835568302913834167001833013248 -878474448197300641672169733031460864 1139005654042187730558207230214144 6277787818491661514919307909267456 -725997466823972725613376311947952128 8300947406747761733465052356280320 5578335018446984917278825381888000 -340014498208736675997766979124461568 8801056036168848193832955456520192 4753170799862703213687997078700032 -469634712424955983904696405243985920 2833685496797456956876694906470400 6938295331611032644241588509212672 -108729972095800889465458525711892480 2967004208004233781681792938409984 2799236789364257980777100449153024 -918634312648262733767959802384744448 3272939891427468054797526360915968 1522457288274324194450933846900736 -162854345179572369753505130642145280 741902264568805760012510337957888 8123441871906965661186081576452096 -455242534985376851574695592326070272 9529607226151587102109164046909440 4014446554770145210125212494856192 -41220164022262231362396870653509632 5361059055334292678081256091549696 1305172599820299108515537993334784 -583319675020700503940388249074139136 7252901086091341886082463370838016 9517612233079893525315809225736192 -424316204685836361895623028803371008 4135380203949537996937212209397760 2542882593545335081355443401916416 -433714708498858297739652953907658752 5440912242067512415415813573443584 9759820320146021123681229094256640 -445376050807270318337216614607355904 5175267393419282629255556983947264 6094876082106354042068265802399744 -933677162185744300305022355779878912 4827421801918427452056751600304128 5947028583089436942892435863764992 -976248926120934073975708930803761152 6663214782014632349019028647313408 4581533129240880847637254171000832 -106767698785793235646391279769616384 8079641377707504063119440111206400 9702484069363050919471469700317184 -286192199466932315074221222995689472 9022709861527572281478138547929088 4887607998429313255491501643792384 -643040538684577222210265760393068544 1038708257418324788121941372305408 4072239909188569761274046263066624 -212751365500922893104259258709442560 1656115282322626286626605671383040 7228924068057920116262860874579968 -592575189084828690249580983009411072 4282128063092501776855732758511616 891550249192590848846360433655808 -855659848327466429051638629485510656 3446261362806465999783012585177088 6589040241434022645483359797510144 -315258796005627681660295281691852800 9068332863265226825084456830763008 3642708858827697102456021118353408 -258191150057997681105326656211386368 683487695993383827131527107444736 7104762555839425376626008093884416 -146546537630512703115988635725332480 8913742911219960683679767049797632 7657613418341052245632700634890240 -697164982918673538276451547246231552 1381800055660173101982349543866368 5717648149165234951665243979251712 -468354568490899518609358625903214592 3364446593280668954406933309161472 9147973086009742843940206070988800 -461072185582251987503221409499316224 2142335058199374927201851261583360 9811578721668835603491674883358720 -170072143524967500450161775737831424 4106600998255455677732717477232640 9722182955167914999375500752715776 -985287804560916450656406253995032576 9312971496708803904298811509440512 1915620792165813355358808866553856 -91954376482960857314286823498842112 2656479965578122198098544376676352 442321751427612749745489021239296 -715129136912532834458334329592348672 4825778465476132072786196550385664 3831159823817351583525018181566464 -510558769204375596592964492616269824 936295496832664448855697763860480 3841116155498652884056151355817984 -244880346390846730406626570486677504 6925958685508181308488790447226880 3341548233885363186672239235825664 -968480475943041548048111736159469568 1815643273686914722440895226970112 5957715496156740045767950261551104 -805594952917886239342768125468737536 3431353983702834877057538979790848 1338987207713658106908644692983808 -594897721877398819901635849418178560 2000696491594207816462350329839616 9858952465198879774497662939693056 -176246447648832314079176652778110976 2568746040711499072606062195507200 8030208246305387442458953804414976 -377884345427805797416163414294659072 4184200272303056537338937048301568 3713148586117484297302677947154432 -176561518946785876459436357860720640 2223305129729649145514477228130304 335709935875061601949364055441408 -806844735437143934618216609051836416 3447783370872751775804519343980544 6534208301438155712275651732963328 -651890874518373654330157128182923264 4979254363427694441572191868813312 6181145794080197673434974661902336 -696098168629351438548845014676406272 7901428084771415796289755066400768 5702300458544559937787954232033280 -125059450710490019351778795467046912 358392178203110067873762647212032 842520457312655574750793671114752 -671453036299915486286836060506816512 3760452998504004122535261554868224 7157900769379903472726762831478784 -227504078150050783428399444978040832 7810482844835396573152475653079040 5818704637896011656506583961042944 -190184178258180189457865904771563520 2428098895061156230315328875266048 9920806083315869254338695663714304 -748680956278108098154629606416580608 9891589003759436463567083579375616 5735269547164335236753057615183872 -294135534484651238836062565122965504 5715648908185837282980391880228864 8230877327440919442980068709629952 -241464731644288277749620982880927744 2914943239276402692404179254640640 7561807751923416232862197902999552 -774673199127197844164627841725497344 8724724486873356702821276851372032 1867401879365090217689029145526272 -108746886306112347941208611490889728 8791395185854940259385176647270400 3400702836821630227264823535599616 -56552959526796905728294448118366208 1695346045086414395629477507891200 6512492413961667987307546527399936 -622266492019401469148059725939605504 815568944631698846931042156150784 1816736599850723932001908973109248 -353696633745547445760906164967571456 2698746599470905975730087242235904 7704933710975786552462060392808448 -780991461727015745555591807188860928 1395301607987739366052684697174016 9700674843152785485090110029430784 -172554262989383552177357359075557376 4838150321349673003228544649658368 7140151196659259860381749194260480 -692275839826191724515518434538160128 7423967283162243532286954202726400 6030171726215291735364739847421952 -979025311654322114922214209737457664 8088954043310897319886614234660864 7620001619817279730034278207062016 -511797436251482657411848928093011968 9998248077769406069716360586330112 4587314133407169699016027469250560 -272145946853915633093997675851808768 5180420869718430565666637479936000 4796256505384654242325812224196608 -35575843137870692637765870230175744 6142514780752762906278531981901824 1768610268265420771289533652140032 -604558702318879314518097419258822656 7652890834472620450430666770743296 4128740541820880096041377049083904 -310527759263810214904293019046903808 3906440144506809970361532439068672 2745101983207875196315253600157696 -646600791107124150720447430443139072 9709862672798084579702422028419072 5669154140633132330278068848427008 -758501104883020314019202710596747264 7347426710346145205455421205118976 9777438988795346895599572233486336 -190094309182813931876314470659653632 9836696638989659684784612294262784 2076948443202295988962849131069440 -899160347784796638709185219282337792 8299659770687203881176216253759488 9917317299273045293017656620744704 -322852468839312355526493874908299264 7238205327824401341528473411256320 1615380857023161872345424298246144 -59845146374465283843179818271113216 3069970629245593110865502481154048 8829707007229366947812631981850624 -470307380385738169759259974038454272 6096456869338012318795834966671360 1980895212438936991501213224665088 -901774689318074738057600507316273152 8886448416169686147217118053007360 8605251564527537867423041856733184 -798601007750098318134071297843396608 2533955933553084515200992444153856 3348064406260352207095623848034304 -662633522704253655198457492156710912 2812196909302926858766129106518016 2866903403927028436650621487022080 -322387007292789594681754270996365312 6960625487149611348060993843363840 6817391766639415170744245651767296 -628293459302250226123764325939150848 2795106955030077457553578314956800 3426933947120741885603064466898944 -991552836231580968883081838113849344 7238710039920179600160851857768448 162437707803482739298000699392000 -312790602364407231270717505409122304 4173664196138396757165560454709248 3141731900656170569605506173763584 -94902603413584588579715422489673728 725486441264662627150426720436224 3308611507466662839075047215202304 -986844359691845634574474285657620480 2642555228436775668518369364017152 6232808430628922287946334182834176 -346255710187908272704853966625701888 5433131631500869887908859074314240 372938949331301614806737623187456 -323620598817215618286083623440351232 5249891643236372643191927284432896 8834196898433134881153720703254528 -810680942983111094169950189906821120 6908958811831626373536616231731200 9886695076080092885926688583581696 -225861561377794593164893857670758400 9748322996222250891411495560675328 5682239616955631519317073195958272 -124529999604936405739700943373467648 5907087770423207513541426798395392 9028566702493238579499438325104640 -747437318299254345916466375302316032 4701595445491237854949398366126080 3635974226979508984846995647627264 -468802697639215771301282282985226240 3977542170443588762519108916871168 5493308818684366379554253041565696 -691500797932283810702589664623067136 4212340771715922994647481540673536 7988253185892602056394866356649984 -713154415645439870113214432234438656 1741686400533347753144493109411840 545605702147180030748725048508416 -748378570329056309794115415311384576 9276478675290487908348228372791296 2734242060802450925020591746449408 -662429073575440344684786821453840384 6071708630680251752717774579826688 6815611720475757162784816770318336 -730220247522488778066948935643037696 7627813740626820896225527888609280 5662092460315048146534128729194496 -807337718152533085033780924427272192 1480828709807529128324702341693440 8750243310718281630598154457972736 -708280268773880365358916351100452864 1620617334185808196687003318747136 5901157445981530596121948427649024 -846751681740276816206035139426254848 9619762965949501137810699755454464 8155135044672886687301108668301312 -139315092253851881221464266211590144 8938892384881851271576687873097728 1042672590376582219579000042291200 -998556510261501216270421396255932416 6633742470488884859487343188377600 5655449668234913718440670579916800 -338425017144062494644688304327360512 4340402449701206179001506621030400 2459109064221285943072845704724480 -502796511722342781061429528889393152 6399081607423749014607426423357440 722860172769197439362039252254720 -728611311653816957603443907361767424 2748780798886094173980545117061120 1296359021846910246346343512539136 -748460222298622773277210190356152320 7032983319581259484917213459120128 4618796735345112327639572808728576 -816577450214893414924987998534631424 3000050237083306112995819452891136 8480424978214109149386110700355584 -730677900491080292246752798214979584 9287653755536271809056262391332864 6035438207755015905794501279481856 -9176830871769040019613290862739456 4312966039535957841709368470405120 5950432699137348749293855700942848 -782633458175514359560978094853455872 7549612133640631863704666062716928 7542163641851394815201817917390848 -222894269460860629840077638353289216 4862979688135945667448652154535936 8818884994712505733723328601915392 -466826053937786246108906020296196096 5752044036639675137641497384452096 784303623332952623215866776911872 -190702048302780996434580456926609408 1862422944449372575111031652614144 5370918811524884910773476744232960 -902482207492138105262652904529985536 2367829353788693318318299526725632 6807680581567822105730283860918272 -701021822407434539695061042882150400 3167394868458787774048847622307840 4990144290210198864798045347774464 -101139219563851104745524317273456640 1424093493305101767089256755363840 4295345625528724640123012257939456 -524386084981252583775300644419665920 3224734780380409730102681959137280 470591042684720661855838482202624 -215284405327408130889527178444144640 3650566115106137662744517027037184 3081295719011136043852078791000064 -571826161634938343440963922389106688 7712207911635123631641082653048832 9849998014410203366609046321758208 -60501254527720944893825578442948608 1510918793925037131934653264953344 3598344778274324265106020239409152 -754746305175044163522275196608184320 9753990293693939365347384354668544 5809812972757651458543784978022400 -597912522206052635836613930615046144 1167558886040058457716084831158272 7756035229505407922902697007644672 -259387473306439891160570031490727936 104538714915750475953863059832832 741379851692822627659656497987584 -851117013284151985808200450038562816 4136970043398355644111450730921984 3597649464966831949635739025670144 -926662044196024234414114456626790400 7136506152350971189266476588597248 2521563455603851171470605943832576 -555026824236272361793621826759294976 5776126924925468159418935166369792 811754521443823445424185878249472 -55763671762326528619843311527526400 7666856455001011745066258517721088 6040674955089872089747202871656448 -169419833769869075207795263578046464 5726054723425380015202237750968320 3736816726288157777564280037572608 -502803492654119599828648204930383872 4959570370826763312545383348961280 5761656606115152129120399555297280 -430459800662268086764637634577825792 3188194058806683540727252312391680 1312323900220962712283487783616512 -111177394398262155536659797994635264 4923889071633859813150162801393664 1429808609497303197901201684299776 -336040751844334513076752507478212608 3346212275028101012090290140348416 5593641796604700359795076606459904 -860587746451937003908808833864040448 220018330016268318695257775538176 3114920772649080160021069181222912 -75171006182411930447264738013347840 9750801244704572968306634257334272 8475359668334714008685422357512192 -265947968114797691315631345742381056 4507134004214239695590852560683008 263092723642240176670292620345344 -372339603770732117120986052395270144 3439577375725528483790509754548224 6062480272307424824742036560150528 -382082284642170959099063963863744512 3647576034957887366830161655758848 9212960229831065776616702937661440 -442495595723401766296700587442438144 7932917295166998363642840102207488 7673279006913305665990942162681856 -730953087163832019265244030899847168 1073414649893581283747980457803776 890831366490415483244378775879680 -315542540226666671538431754967711744 8545600583392367319022794067410944 1776370662014680198547986725208064 -537775359624614216694538488332156928 8869437335003141459031064611651584 9035837797776391730201610567024640 -85085420650531984919116572444852224 119020737066504133116260767498240 2798853505393866904182862496399360 -175573840408216450230551674739490816 2935855023501739944390049337966592 8405782501086250659549839810887680 -486549611489357914934441978888192000 4366182334136581693816861066526720 1701756453063229990409026874114048 -858992975788153338502622927680176128 8597474989677739523328752343842816 7714358024853892262274917791170560 -323209977021639468769250080754499584 9609242257316342589489971030130688 8330727079508999373589543972241408 -602546089241113899907948948913913856 3094222517332152603388750115897344 6551230818825344632545173955411968 -665626182254047593924398630804914176 6568792568834631592820292049698816 6233697204927396480762523187937280 -43417221045938078668519182061010944 8834424686556511429652358509887488 2444740331297167867284419963256832 -479919781247640535289744578666561536 8151871184317565307880822531948544 2504416957269158560717557819506688 -347875813824197900522561186710945792 8588964103234035574639145944875008 2875843253206857022472053403418624 -935131087281550244622270507738202112 4750315610352036085239706588020736 4689171983829669186483765727199232 -331599152395714865989742148857102336 5256100236406654957002749965762560 2432841511510286763126279972585472 -152481357315933826518509663327092736 6896393289207542492757980130312192 1326992837869490399174582620651520 -243608263141383919016908014961557504 324649222492327321087402330554368 446085681800606702634024749236224 -446478601381382382380887549260333056 4669113068782922436558028038733824 6555066051378011689543313249009664 -503481082476384507758432416186761216 4920327289204038353765231923036160 5988213991708134398793874164154368 -812107677387575830955666007239163904 2994682935680037686071787469668352 7626729214978426919397274572292096 -415935351923303269660656934471073792 1914198916322901215376803673145344 5535870586994051220110401752530944 -283183233291342128579028962244558848 7325236382270753056796898645508096 890071069370007525210073308594176 -745828325080295818818157158185566208 6715705209429032202063560746991616 544077196134067295600813249921024 -259137035642002587853384608634634240 7737447868099204704541325440057344 2342671280714337236442347877695488 -392575472635891442719507160508661760 2722356619040458734209508000661504 3739280981071105762081280876347392 -642460119221758470563993212447358976 8525202672542567366917612900450304 6827745543204916688268162360147968 -244489087388627611056276029277470720 1258868121865547583964480568033280 6782488916703605863403485369729024 -498819943822189046032439330746662912 1862009082024957504433717598224384 9846328694596595735355654869614592 -913346503763739870682992521013886976 201388398172933122054179543580672 9001916694798934400317179144699904 -934968005088996342532866260231782400 6672555758840188749336986603487232 8681191905870688789977973561229312 -466390746469393002294284220209561600 9584116477373801049894161624334336 7588328628532012435538650396098560 -912413917708234620011940849010081792 8485680484046906151581403318321152 7250223561810752684228686483816448 -513292825509268189578056403901218816 3497847530171051450928044240273408 1951544863278163761798831042199552 -116162000117736873413738645099118592 6261392560403605148710928757293056 2466503824181566497879613805428736 -220641543050207754539416153342607360 118543129575196908566165357330432 1066444467049672558786083188375552 -724243892974376423457415055345188864 7446397618470577265039824989978624 808926505606883887050268004581376 -709454312762306018907505212077899776 4964170837325439841775201017659392 2816593962932917613816996983472128 -159363884263837379186929372112093184 2952787521652866431958831937355776 973447109315889644939207853998080 -479809965864338569220186965310177280 7418424663591452325993037661470720 3829995821753807136173592523309056 -404376275122007342207065610382213120 6961030409315891751429197906575360 8131827418833106692552490758438912 -467975604554698797431827510966878208 3134762271970527736960696761450496 3818781130755516811964293134155776 -82615009832871702096692974031208448 6133369166885078029591604497481728 3032589074970355997017254142148608 -452362736716547110499950563910746112 8285447826163316192526774413819904 7146210916254021684256698311639040 -788956586811208563843176275262832640 388206911835082813080480518242304 4765737114532945475025640368373760 -818217776495977247984598253307953152 6947766426566576822402649860079616 782177719602656126159349105033216 -717602468641800008882210567683571712 8069147549604775728125463196860416 2239207729065271918561560895684608 -78656096528426597151043773978902528 1502274855846204400417637962612736 4467623866009509851429134353301504 -357458185738702380916831776998948864 1686754121106332009471875307536384 152707090407623850235167816810496 -346829984035255617348227679668666368 489445623386733967929367716691968 5348504910623030831358529585020928 -621742107081438396346272159432179712 829393325475632775199230854692864 7002149309785390941383363586424832 -894754489675786489675405307882242048 2007556002446243805158206112530432 2239375116990033237818841514377216 -467137608854715612587240255687491584 2465197377420071929683434513891328 3726333221432928538170312521416704 -507285474056830069731530048565936128 5742057970753500662486533639503872 4755974359010052311235239272775680 -110723457316954084209290671724429312 1817943818550015633355074284027904 2615502229618996115019402892541952 -399876274916100182350354289117888512 5016305556649075233461762762211328 1008909116996093666687334920224768 -404013611681715834202517842557927424 6256933573081475072878611728957440 9222360122356313420650936394579968 -200337249358329838449792494025572352 4533939871572312335146715845754880 4083600193306750726040679008436224 -195336230897444128876904033846034432 4034023709993100785733488351379456 2107359750220979482338535887863808 -992041424774459545680497819022000128 212287368015356636520160409157632 8287011233385769818879903955681280 -80994415623035352197370278574030848 5253871790425997873800148800241664 1770792978520741961969539062169600 -837912613659825900770636679421624320 6762260894397691588331108038606848 281183651594131379809800308129792 -284750117503704166502821237490712576 7305299426536568713555753404727296 3882550987384205803237363503071232 -770133114164374574133603830004187136 4614090312658539337710757627297792 9685309104801412429642467914022912 -987632769199634098669300935099940864 4552982560575942130543687962198016 1976636492615966617353362459328512 -623293751695851020544279103240404992 345438548502242871959550494244864 797912421349218489192743914438656 -35958341395144590997096401907744768 613342212773179512233700628627456 5334825766791256654635843643768832 -635261700534701702880639196348809216 3803044382798722007563072658472960 8873963773024783232932835577823232 -553306544058048335559391866083344384 6516551199422120322264006484033536 1941763622481945151453396983611392 -334260022268687206685583404651511808 7307833913571798518746054689554432 3809722969487926354175918344241152 -488268160154545976375619027854163968 9104661254839213087870204766060544 4200338479338019320025186178170880 -833111431168671211761154183707754496 8400382860452997804813344292470784 22652044558046231970928631218176 -255789505889547379285317724720332800 9802403000622286042856147321356288 7723011325315434350254725470879744 -626932209942456629067559201325187072 2453751964793263763760815657713664 7477608441917710847084883716603904 -686253791339882116976668368376430592 2934769648947581796253266822037504 7498422646741793565550023008059392 -396590679022261566589690906241138688 9915505095063675366740637568204800 242385440683445163764933808095232 -769510867551832668516977941772500992 2529131554986479533510748457140224 6347698406227986949683283782270976 -742327493827690644269449168042328064 6522857589962869690390049607122944 1106674066690133953744634667597824 -245561022596079059238593102839021568 3103581015357844307788763699871744 417857418173885197740290401632256 -925795211097349544905146180564942848 7507449193360499353932121323339776 9798837526373697103077699175317504 -918756997401748097573519255343726592 3935476220069715669436293042929664 5755875043133983312999314351980544 -611737760972586323686149217274822656 293757580236760508234577385357312 5657119736307684028797119241388032 -576677344526430585531767832610603008 5519537982522619716549246688690176 6443323581368805661736549495078912 -260555516595373783652449255348502528 6388799631940780183852618904240128 6376299569061381004742064852697088 -808539314440039636602032786545573888 710165761603908683980226022080512 379314127618750529753068787990528 -316325396218520965614468191716638720 6159501500478467460810570473668608 9280948388066014827905757097230336 -661241555697259950479968445174644736 4123197345120732617990112899235840 6475964892436960622732693137784832 -484669110529764957721695914182049792 7918195439258549562195844578410496 8393400091630359267639338345693184 -91418068821813430418594570891689984 9535203255176134521200432780410880 3598922479599861868294772669546496 -333165349128018999892490278936772608 1107654518042857066091364336271360 6576371602482632895254874967506944 -554730431316561498197167086610939904 1174263079176940430551314927190016 5707222734231009552582510863450112 -275403477939742616858713733896077312 6164390322513575139256433136107520 1111193400403687338826130763284480 -299655579428877520743619671214784512 4363924476326253446271414092955648 3113008803085503824279144109178880 -711025236744393475416684660120354816 9001134113128034046200562491326464 9573031436282756811145723468840960 -843541399899228785238100893149167616 251832640816691275447094516645888 8192691471863994258770942624792576 -340365918125878793724523359550570496 6821758666992373373926825221160960 7925752196065083529426922731732992 -493983051121639773246934299099267072 9832440832753149915828073128787968 1400527365801814570571106741125120 -701589582131551556255041094577815552 8987235181933115256389373639262208 5187737009878350026252756935770112 -313860061533413925375972742040387584 5577292109923972464498189105364992 7417079444221779600386921479536640 -221389022375135998156159655105003520 7190694819317588520406405441650688 8905198370021963906966232470913024 -658656639666876004887105667891986432 6448920777017706775259176977301504 2342477483534301843458653803249664 -53248196975980679242966080795181056 1710452713802163572209638520651776 7305114959454922855707451177566208 -650665280198367358932934298632716288 8035770018870997774734192206151680 6122018303457425160550809495142400 -422215251458955150766019327899467776 632405893774084475575313455120384 2951351560070230708107352697995264 -658419137468127216889454484328022016 794578890608905954064675459039232 785952865174667487233955845898240 -192202787895425590650981372796076032 2207658864575047708420340233273344 7500320737773420338926377599238144 -777110390953949739438994836003225600 2891240900954612017511096804966400 4160961094968506541287655868465152 -175078024346913817916893608227635200 2936133883173556288429680446406656 9810212039026731498282985598222336 -749436696868957057081252581520441344 8074914911678792971599993156665344 9837453050897377213932734221647872 -942982319182481607172314413280526336 1091887880876409089729716901904384 1222747389137281620989792156123136 -419191775191042039754642494658183168 9668054801963141405162070507257856 6804665068447138461675473353048064 -986041918084987231193745603709370368 4989090273946569625886603620646912 7849688295899005334924404421820416 -602746392019391632516108812587892736 4556275720645922285669339510079488 8529762851254019683594694329106432 -455408200872253426174804072782102528 1900742669887070949681387391680512 8864252345408682166099849649324032 -785909888776291276668653013175369728 8390770511999147204886275662282752 9646197079202375040747941379702784 -142182093843086234845430541994426368 5452911478063825350047241552789504 7846117412101443342876524368887808 -901911645552322225933881833632563200 2711631303286559435947124604272640 7526140794828591501056634783793152 -478172677810766168343053168669622272 4203652109531325041283683250601984 5968358997590172456250802425561088 -439875170064949929397194049561034752 4834195284757278534019041204371456 6721091792808396655029411943284736 -706513988715066183976012083663732736 3849992003353232709147136284950528 21216681627645197091851791761408 -784367573386037438439491241504669696 7462759519604253673549001574580224 3547889890007867095502338205417472 -9493342615471298434769023519424512 6377446042215764366556688082272256 8064018740255405424226365457039360 -110337078310908566640121377707786240 4464829477299158525098472784265216 8455281680123847329387094164373504 -811198460165190252662380812210012160 7971470855318425154549240582635520 4182306507079159883323721648177152 -189830411733595727747609492113588224 9641362325185277659866321196679168 2435570460394630617047715731734528 -294626914203198411205925714245189632 956514832186389548922258795266048 5363366253149001626322347145297920 -764031395178061836533703775858196480 5878162930167679173018065693573120 7764625283802915584186182478594048 -17417384000281776173247448653758464 9088130588740247240832724934590464 851574133111121555185832682323968 -594580794240613703567187736436670464 3988390490862149008066426833993728 7413187025909280625195539977207808 -99779761827387985723935214176043008 6602959899110623338069082163380224 962600492813682889450250752229376 -430701763433968461112785255918469120 2001040990590782178803373226065920 2829998655783715750923504736796672 -571260866444040287687672271118270464 764383427432859779125707693621248 8936394599669277177781110207152128 -892503809450198079056593217443069952 3610419864883866439967152369827840 506237904234414132594591106334720 -925814644896354482523379888698687488 7418446002539219292693268625620992 891448540429941429947431779303424 -938745844227635148310156257754349568 9670947964326803970158424657756160 3713154325750683988386336810729472 -231061956365079699964221455327035392 2792930426451208741060898849816576 7912885498538573306479457024868352 -168814585708128732759605953741979648 8864261363893312513700485094440960 5743912175823686156651791447490560 -245138204340207939417597878330195968 885636250094795643345421488619520 1022799912344677320665084500901888 -46385154277349992180449914933739520 8941244368162558628145703474429952 8679915504927827736861885849403392 -301137182724627785142161377127825408 6640007704417973226179283059212288 9510644021272133558690111073288192 -699409944156967295692603927847501824 8523261880644316136585348553637888 1003566688146177845032813707919360 -125325051752149590493642621229989888 8782906184808239208917688068866048 838230795218906121320358238748672 -324438489958440771840193799284326400 7918176823555732825914910149967872 9512630128219358652674435991994368 -407873866490706190268541836241928192 5546933856251317321326973534863360 2587542083344430463708199456342016 -430869575796572846629432518613401600 4841099241833847274029948271067136 4383392712624270505542724867850240 -813098850066849213991598281340223488 3400778357350633405141053033414656 3354566741544947045914970995818496 -557816764774702229002903860184875008 7313331105978601166907421048700928 4498665507023394963484500329234432 -931012320323491060454523906228748288 763958578540080049729655271325696 435382179322043228508049956143104 -947662559778153428459331396543971328 6196773432770545604339848053784576 8281803101177816237395894983458816 -220159844038337251669883198545854464 7891389800631127366264304724606976 9026408814192476315704704741933056 -741804049711775678586491494471827456 6230758220902875120345420268568576 197754260502313011525457580916736 -522358158700141912103744055130718208 9056965499414249781987946033840128 4442654754643160240649705499918336 -871585775633925479086666378538647552 7625419828606967928157744266215424 4362405137697724827755521142423552 -819654994718141208176796695934271488 6389426496743042500625563387953152 9915942138490728253587567820144640 -372435125898147467459902383715254272 9187616914495173138290596498112512 4483867923378167809735867135688704 -804102892794640297169578687719276544 4091251935250866472894441073934336 9564698245749246517600072998322176 -841687322255376216860368951897489408 7267511068046835320548520741568512 8159267628275521835256719056306176 -453692663284113878623471738527154176 2918668136026249519967746813591552 9375211043658653054744189147807744 -354021949479507788508411622559055872 8289632694036909816070663565213696 9355986263867838787523976640856064 -910493740374917356199455273403809792 3458186280234859396059424264028160 1244349681878196986301897968189440 -715744997757778989184633304550211584 718558807335009782606989419872256 8265161390112984847730911475662848 -103766069629704461701864583499612160 1206735955364031438911877672861696 9417252787596467308546279142850560 -594102238352125132088640262721503232 8454204112935998312282968347901952 1776064119004837049562386684444672 -405314488154166157521487723768053760 9487592126304525107172498720423936 8203478015199397976614673301110784 -420438290836190047378465057595719680 1785622890634512738397040492412928 1001121170338298435978438228574208 -293419853955326922070461911666786304 1298582483455584710687984034250752 689799700238470865844392163278848 -262278260231748900899384412405235712 1889635417971403608216860486533120 5357277132486007137395138304671744 -138285906773185932245925237144682496 3744593651140858260349395836862464 3946035137995547032305660267069440 -825754435182392754252505348889903104 3719868502893598679232762662092800 1739665662548989682011033995051008 -100758197327488150830698226924912640 647283836472755221944088064425984 3697816061925363658828067981230080 -251423807683112800990414965359771648 7452047465259604657186079084904448 3530956019472825264051064343101440 -80546043562887308722769059486105600 8013522102829875383296472836472832 1271768601523427765674055877787648 -311085433123261814368997097705832448 1018433133263971965470512393486336 3007592378567141041033287535951872 -605456972910354024868429138474565632 9203797067135544314516373694840832 8024119028945432127803758169030656 -988607599677948834493656569846169600 5734103287026171839371747512025088 3913129312406068942077639138476032 -728995674834881189940477175894376448 569534896803476428591710234214400 2146363326566035013404495917875200 -586733831686397141006715932077195264 8869636119607572909287498993106944 1202218227265670084147311213019136 -400251619260345979209529964955172864 1606072337647428588840217296764928 3357837423670511280004892781969408 -280503623854764908978021238470344704 6590927111161808448499409794105344 6894045568770129993903637016870912 -857731343236298875143379149647773696 644894007716129271334814074535936 5984530756577639499718305159053312 -499670614906111459920458863383412736 2632709346121520511033563978661888 8340221785300781838528650707730432 -469644971270872757519884852918222848 862104709134673181263845293817856 3051888409768768333514562395439104 -814959129761651989169657250955919360 3003015180610824711963178856087552 623578616848818647097917852090368 -608198273598652043110070910302814208 7460474515747898993145340038742016 6306093493852836191762303743426560 -930186759390427603626792738608906240 1460542235368055697063897974439936 2109698728450793470110530875162624 -371344749704269802434217281490780160 3132928303636401419381292012666880 2763202321088855599573245737566208 -397043271808472904483500814885715968 2894750891911508139489259444764672 8654380552185358348762043207647232 -133159132050953031074243578431537152 8457367951578761557282678902882304 7654667351531320359667623469776896 -605596622934290666912132324644618240 1697669206032447145838529986166784 1960649260622163363858770944851968 -879574875290553409816341877633318912 7248200478212051837923369374711808 3945956797524632221821395135365120 -965404713098161669407861749946777600 5008175023723033497757175787814912 6235749686541918427205765343215616 -559167453486197555763423581476749312 7261399715036341018554427133394944 2281543066217440821057931792351232 -644415019632166214317068862231674880 5988522693043224395397413329698816 8465089721619796668220172526419968 -593071230727785931607046108571762688 2240121696844086769608405549056000 3940260544236362828120793255247872 -787782926510583430323310962128453632 2231405596918378119267483320844288 1713888960268083421523917032914944 -148292965542167506096052410303643648 4248656024601123042653042475270144 9180257169307460757395088915562496 -895096044094838819165753584381853696 4809527113457875927347926136782848 9478479513283492037361516645711872 -24488951798068760295605488750428160 2623446442647084085267597080133632 7866123089565481991644225105559552 -837405640870935580725167682417065984 54809379169341842198840213504000 3624473986416863411937478168281088 -249769662159643599700286832602251264 8888985472893298989888454764003328 4621014095108030776214045300097024 -691434002787674738049743027253018624 5679235406573689540935871478366208 5196330897185555821637375679791104 -458640265414560742576040289234845696 3837971026203255059690275043540992 1750969066416273921599383124574208 -348994976196367730215484222645207040 8911577818861736199270556365750272 2711641766276773930898217439854592 -318706012946214848174807046267338752 644967598650538206945249016676352 4216568902323432028343174726418432 -6848848223807850681466095631597568 6942516638844099630406082418966528 6120075651033840241155707787804672 -356285892423106434668053306672152576 9425546332040745268726075918123008 6828236169560969633648809850437632 -197432742871426831930077478459015168 9624363992711271156757104986947584 4370796054335482723491392841056256 -364388473060311652491333902773780480 3644101299869847554539732676378624 2130103209369093003862567219625984 -465931649829849665771745148200288256 7622088265850389848262966809460736 9887890622119062688965434122698752 -500390210844561427332245958317572096 7270025900131974131607719485898752 5876402086149419723873981579657216 -209583067535739793203914459655962624 5141984169340155717921975681679360 9010541410813691343759993439518720 -860125558679542903053642278593626112 7571968009190113675012647633813504 8113216449643077905248913090150400 -678337943135611501848351983322267648 7974710757887015944032732814770176 6758602924869205862723784657600512 -439967611024477023486307986820825088 8834526095915050802977630987485184 8744242153767891005766044540207104 -962010237123053544589464657289281536 3083469716290763232867911955644416 5662456539087627370016430327070720 -90021725582358594530432979231047680 7086473061252315640341322883137536 1990073922246032137396371618529280 -746130730044464495146016647803830272 1261308673771906925520971378982912 1591658774763344294356870859063296 -867192809745290757201397592692359168 5715922060508770586729626986348544 6982024228883325165050194280054784 -199595140763381531164315523016032256 2184051431560141345923467250237440 2816075539675613391030505265168384 -925105609606202932981230786763030528 3174415829707836343730732022104064 1521716180933676094273506905161728 -791704093080595961384517064435171328 4470444780590774459394557019684864 2388808848124309881699270062505984 -456686779839701984507036462248624128 6438788439528710345521133348978688 7664136687315103585191237164990464 -854443570956261557546089656753324032 2206364207089514534677304506843136 9564835699970384404571733220130816 -574385301809530140973342482682085376 1613452228979067638569031228719104 531887951473447202049601220640768 -182676469986089793438381006682849280 5567691952951981007149466338197504 699918059446142172040406170075136 -853080940506465007171064024558206976 5192701366256310370319017554477056 1706592066747529753659386189840384 -959611646057220231167392612033232896 5027420853818944626546429925523456 7488863445278514523803178495901696 -599518129550057099346590097106534400 4517850183263670821943441547591680 5704829545188055997137846068576256 -664939770036279758808203321453576192 1781892177473182911511059666829312 7596121860414114864462756097032192 -319101828062165519786410103336337408 9123028905660552407308442460487680 969548799417823266817846156460032 -962294006954292278253148968939683840 4906520911596833936124459064754176 6053690899165897194259073166475264 -412318427641174191594617873425760256 8648016977488975102382816895172608 8002241935220635269535322137952256 -253002176180320252716593671357595648 1481247292536546573263987235880960 8068005201155175052761258767941632 -768578509228117397542818262716252160 4033207657804593407384408469536768 7395150377839787201059853059489792 -391623386380940094123921087385305088 2996614847232176504675193092833280 5025288175864786667714240491552768 -888943611312994432116802217280798720 8838477583483809367745053706944512 5529978028197597447117340386787328 -997671481078107849662005742391001088 5998853310128966536484766768693248 1933621874356887304599431679049728 -114170540381591392358611173056184320 4565748706806917034364185153110016 2276982330295306291348221326262272 -88348556023080061042931372979650560 6144949918453535267255554913861632 8108681908059416781615837258711040 -22429726040119179501099276696551424 7201058678190283206876632553881600 2856426068538599070718365869801472 -482744458823458458030724824160010240 270859747372018414736902545473536 4831336500124805327365972544192512 -125625364060737860913187012497899520 6758798970966622340460221476896768 1802878453741685565200944158736384 -54952579826408509384659457925971968 561686278326643664919968694140928 1665523649935674147046399359844352 -879386814368019217006916185675005952 9955097151994861011707629817298944 5749640426048059585703511253319680 -87699929340110356690224484873928704 2926468817562732006857431519854592 8040761380104053321490299078311936 -258063922685882666981640650088251392 5355939189295467741714474564845568 5685962475204271686967561889513472 -560345082711159720651674800390930432 8222285406513250351119058096619520 7362646929303498498979021235159040 -474957803510692653758231157885894656 9425276297459633585605840541319168 8064891945919426917053920079511552 -76403652439842905946596765987766272 5192212330253385866076103280427008 721484113930532616448944145170432 -523193899963583177291429249179189248 4089939091896118762861157016403968 3763208336724943668002749922934784 -152034355466018146198459167004426240 3443904419729064731963731262570496 8074353606370593511744975228895232 -550750015482790773687392869829050368 7146733237089657919191601328947200 9878279867070752671551185689247744 -448719980753019317615488268683444224 4716265743158040887727825541398528 367327806081195573862353195761664 -393442801523191945175494544140009472 4544235185242815044270114826354688 5672413220771833115081399001415680 -688812079333187501939300786782601216 7063735188180832887580432395141120 5709895748467181678362179001122816 -385669770696435845421127609629016064 7170665222455962521088356836704256 3770105086691638046024092908257280 -297622667950786686902860444778627072 4606777770672836943782998714613760 8136935603054371288866958509867008 -2052555693789465515033086413242368 5832928213638665574478536404631552 9163411838166166689743490533818368 -26592995547928677962416196887248896 4181687102692716700267694558019584 5585917799169160297994883952541696 -159030114032260778847274392891686912 1684284289403992562620756083605504 4247418789315100606255704555126784 -985419613352026828774588763313537024 8481896344565557618087686406406144 1199412694029759222197654466330624 -986912723943074241090216362665574400 7945254665850948304880320617906176 9293680495807265742165465909690368 -150556009384351067207998438413172736 1443746971864655959271474624200704 6358955673768235012103141574311936 -714435754963277857325549192570994688 1732080588415465982635988834320384 5644318383358433401044415903956992 -121420111142258989740112359593082880 6924371338969462525865704493678592 7329325812202072465402346111762432 -312167380429722984034824590385479680 3741288076963193378232001259110400 1910854770640005608760192595394560 -691341012059114887323892785185030144 6902248740923029511934523991916544 1928621199891704428287940701978624 -393195535657279963470184844202344448 423539929620508863512070561202176 8039699194261559635669008015949824 -94139190880761789705689858326921216 645517842316289901510654330667008 3213172511032864356466796766691328 -481911780322660720378009607089422336 5685857501404044846290715084324864 3035468761007967900694744716541952 -472832285761974131814119410877071360 7393272987110349962414943081857024 8271198736169320816517378247491584 -161413860693170881162193648801021952 6032136669294197512932780901662720 7163915110961259630067698494341120 -488275115476122866889849128425095168 5319366538406682383488787391971328 6981562355792688146323997703798784 -492247427684923113426678185463906304 5464201843147686045071031549296640 5957524161206688077016342582001664 -50174115338545719617627462494584832 8678647959755789379057645407698944 3198916860127607552318063274622976 -722418670974200678904611554574991360 6036683363970574539757756560179200 6865833463272855729368786674909184 -642330434216443357291101491638042624 4056306557923678860177145296060416 4922475947155783761297271282466816 -896667642832013994133601683385614336 6144418468622460100630118108495872 6661829875114172485746278057115648 -199995822990276227887183409398677504 3460886155082785082367740276113408 8132358595439563316956231832174592 -851547351810674573089319685839650816 753746030897596822821803223154688 8373033723307771146247201401864192 -501584074004732087958942244298293248 972839910225157686279080450719744 6094043270083754011646695156219904 -58832417490395241935593070676410368 1998983311291677147517271763058688 8390240112176781336637079233232896 -416520899814142685819540769930739712 5153469409240468438474945445494784 4370908193804030851239279924871168 -57709522205701079415178083860217856 5768871103529266403295006371610624 1881354740439503098574940665806848 -885623161691318312669056013313245184 365288731723467554587501431619584 5738612027320018286854744699830272 -66390367389715174133509744318480384 9670584872598503395091915160420352 9753605454707151522087524544544768 -903652226120748149006356550780977152 3746574822866680888882723398090752 6727201767330150177469335720689664 -359448566941775031743935211066359808 4336468816469224580809214983667712 8832170600395646976805398642688000 -931276456689206218441924319461244928 8378901837780274024063181785137152 2124939564827227554455142547849216 -317412970501635884391106862873837568 9693210242384682934905409999208448 6504168238860374170605187611230208 -277913101547783946820747929602490368 7297801413558676725480130904850432 833160065029100293750780359344128 -748833144279894938377201817720193024 4450121486108805763047613158916096 5055355789746904531743208453963776 -572704735120455700140356275852541952 4848236442680935212110870191538176 6693018785536596123630349798342656 -787623685656563698789976340818821120 5228812722788015903819676296151040 6447301802016250376721132270125056 -229140069149174256053142785938685952 2436344081888720803978623064211456 1928162119115277472608057477300224 -477191785142661743755763279814721536 1017980559591611347403650705129472 2746673917721124072027567081652224 -857533136178545287102597156334206976 4960196656895467282395655080771584 6194441876567406934437572120674304 -121611870172287109016616059315159040 156254159213584468411485765238784 3624628779205654027286558816600064 -696937713810965110036469529649872896 8779338146976093820251387671347200 8844141416263182764971689645178880 -833345369135876263698311949523615744 6944775095306661724750801474158592 4392570005553483073649148153561088 -669954782870937600678095215570976768 1479237567044056546355741676535808 705047511941714997796900595302400 -251909513344618068430256129666187264 9028893569778864441982488823201792 9106854245452263891953658596687872 -957562259577288724650360539623456768 9847225365249316409320749781745664 6982068231460405075708886401417216 -231660995780786979793881196937609216 4621518200842547677210147953836032 4459183543350525004897569497677824 -197408440276537877047571002955923456 1653082234187956697824066470412288 6368876605337336631403085798834176 -498442132794588917713490320587489280 1138714952891415535552561152000000 9867405806722609783413426081497088 -116172185197998006757393759983370240 6460106507542804845467112673640448 3912888463976389544590260815527936 -331914811958130523908946488710922240 7548301451663542854434031958753280 2076010712634874562830885458018304 -346088854132329119479199547695038464 7009997605887022775638030932770816 8666257245634928898662109473144832 -261689618448051153608787130937507840 72075523486568573530064514187264 1701965292347153328280425528819712 -66508897657318514656530286874984448 4008640013225437556344755071221760 6530242444143617098587225454542848 -48307265085034130153395891132694528 679213795928008581030511571369984 6185272116175684032898289266327552 -93069011721478530796127731287326720 3036929474027690634982084067721216 9033782794019870445014306086977536 -406553746065483397337141464541429760 394832003135008764573761377665024 8392852741632390660776012239863808 -744532588685768217525773822716805120 8410636474115009381287564807241728 2402536851528069313088239270100992 -537545911370699556712332545390280704 5036978795013320136587511267852288 8990151767843918739457973545861120 -844852289706016035601873100066521088 5676011130947366731939545173983232 7028204566229179505816657670963200 -438115958503605764347310499046621184 2915100425225918052279834088833024 8142195479188865932560010315825152 -510141072171570015533400692071858176 8398069536217242980272885678997504 2652580780750788119046990216560640 -666890666557060563044473756408872960 7787786723975399409553635035578368 3216611382442573552919692938575872 -86548961737513393689914016379437056 218101615572799351842395125710848 9109766806407661690900179601850368 -635159314951673843621322442162569216 9654364329369123474295993271320576 6625610810775847923094376069201920 -388234459332142316128618484896628736 9583901379635141641366306469969920 7653229540184788869583140651270144 -945487003598863208564326163810353152 6858331813731605164630614506209280 6060207746971402505029355808227328 -179377775915209967344328734631002112 4687261902419131856361290270244864 2402250018723722891430571699863552 -204742792635052225614443514857259008 315217905659707472089134563065856 6700149253601376827775628366315520 -814917316877162305949227752179630080 2892898455170321175008214840770560 2125501863284535133622897267965952 -899362090848563285404310125135527936 3487011765051106009619333054988288 6290434998827234102085631759876096 -229117945540231791317181911625891840 7010436841371848938875548856221696 1684923282723680489707836637446144 -435209604423089430344694549339701248 3324579492821098858696169358360576 846151336050523194770117785288704 -973011106855910406055666932135231488 3501593115013436941879699277086720 6673497471317263591810941749035008 -19072867833636788358630237664182272 1993357457470122604897744990502912 5125811497034280328211219815071744 -928326322664546897938264926501994496 7260581490708738169534368123453440 4603240949940290963555927707353088 -312766466925818456577183285753413632 8423041877284439779510002082906112 1693786056458107978065912591810560 -834697807910328769571247705844350976 5344433654351274223008844859047936 6593410529701010599523804757622784 -108091989486811579476771243332468736 5594450267105136909360736239616000 1881500347373244668028323239034880 -940665512582160887539217646068170752 5675039877659346707366008384913408 2086584951994040730785093079007232 -486801291313028853245066895782051840 8792216609203277450617242400063488 6058987380426086723618861796556800 -938940984992605888742643695433547776 5700028798980564571424562725519360 3873048125827410684975585104494592 -449283609916514219322793936826662912 1295896820276247078704176288497664 7019707040944097653208081347117056 -467686851981551388771770084200808448 2299223062197643403199943683342336 7411916450535142166061264142336000 -487745392478658278582480174271430656 1372001488661943490636910893727744 2064336847215608310358426878214144 -477198831399811816141811297378369536 5046750607409985157982736934240256 4482156359452267670398304289554432 -432753652172416514064475442806521856 2598860702790848799763627425923072 4127390034174486589693084118810624 -720799796002043079295123045184700416 6793835759832466111941108987592704 7312913256987921057421088763412480 -301759827290203570856970212454957056 3373055083700921188259548077490176 4306882656901961545161245653467136 -155609425608220672236262583982620672 846716069110109602189287025016832 3497789412622345176363959102472192 -603954901297970557357730310456868864 1616308723252602938555943369048064 154938812187299394536463054929920 -15968881769663324004748144530161664 2525200631185596660380951835049984 6955309051535218761383813434048512 -647058359430289554368284654521286656 655550376061938051491632624173056 6712758467188781143447824035217408 -889878650861688155037269554207129600 7857132171789626328117639171276800 6489628803823334750413402524352512 -211304605663111286429301812037156864 2498729166703052555941494915072000 4366600837034901095068919211753472 -865943627300657104148499915939512320 1221581836713951741209395247185920 3787003629236150729094400858652672 -380754773842495077596988740116414464 9771694000259756660135029226078208 4685310885418558186974288191422464 -932429780559271787861606805287206912 3476238483124953150135815588806656 1685116062179318623422534769442816 -967568051956840666217555214324465664 9892694486068374582386212588224512 7759699305536261719089779404963840 -294104324723641160798102967497523200 7013583656113137990167086160150528 9857369888115343087200946884706304 -269625790662847116220702847552978944 2576396282894624074221408485376000 2097921048146625695864452072603648 -130915562188143793975979747603120128 4295771613418152891508999250247680 6007693321932919909373326538047488 -636905293384959328433059668147830784 4334243979424222487094808142675968 7587980181358314256162422242934784 -72106101022745579073113768023031808 5178463483752304171082748310585344 2280686110723212889546459694759936 -745162184577586010713970447021506560 2150743967312424554850493094952960 7874490135956232546124524146393088 -119699799223947945316393827327541248 6903721794324566671041067405541376 1990743882411789148413424444637184 -482588058215371143839942934563651584 4965610895985153511981239106535424 4741804588822225765592658144657408 -171299395287418243656832554297720832 6426099005026380301042978947858432 6899009555226509240637958198919168 -192859800060239347988469980453666816 7743208535780059682848914993577984 8427523103058896257002387053477888 -718550878564382033351102483979567104 3678870246212354072212477088628736 8419775943091182948008287239405568 -615897730165676407729460245260402688 7299073014366238225338149483053056 6332754138012599864553525412364288 -175531883217618948275052532838957056 5058595055274119387962487175380992 8092296787533960758702479199174656 -900243014776598348893295382783590400 5912097291501972337583861828419584 4138120544560557407883992145854464 -138867896722628148728588795778170880 6973826954420819350312094523195392 5218983241146711376826760626700288 -1023543804246915578617071971336192 2589957136261513665788699874426880 7418267780098461747139511349936128 -743635872020871220729179937225834496 221854224892575548215068473688064 7421564615120943718314158602584064 -182824724333765774534683799066771456 7290859056847923931457441820049408 6564848861004482030675684505944064 -613289430122130969449673385089957888 9524830519009738987915681621606400 2537452768954933081510088796012544 -322113235150650736827590272975110144 3923624135262103436324411864514560 4926009073017150119755738041548800 -957218260554942376731997746262704128 6049865211628423222349866058383360 2265032578546716276034388109557760 -263156249753075161620419030825304064 6911044874474566234145229172113408 1554640944601170913450814162862080 -852683047770299024548099810591244288 921643710462690104023590662832128 7052219144148258158925526230630400 -912571845557632476898787298941861888 2176514070292929030115588212523008 4823586517162767667927997812310016 -310784500649864836199293765598314496 959202279112777994075713726054400 2823187497891779220434115568336896 -221960329610491977321320498103058432 4082258922114199511626758869745664 5761851566867127634008484639408128 -654349665025103322002034209268432896 825427770637616492574735809380352 5144455746400403170901860282269696 -818435271506364448360067079811891200 2145561575034052751265797358223360 676466017872261136383014372114432 -800699192651503110677689706160848896 8223157844706406062108378501480448 8670244679765127111407874122711040 -411837372864048836626499276829097984 8219229427629474135347288271224832 8266533416287216331569735894302720 -528776924324084510909680826428948480 2541936522976215198109343114330112 2953441733604100885118454463463424 -972765994221068832680776878453161984 6949733128817241246765129356279808 5368888860057773341878835755352064 -766171192382629250893491433426124800 3434236779773244349291539392888832 216312398972141771226534671024128 -883679292717506956945185475219423232 5773048979209787197190238717870080 8393552179644663356853703040565248 -115554663540427456809119107323527168 4668289451772609893770049471119360 5669177235700246378858403577462784 -55096615132960810056507987763134464 1807468791835001345795139345317888 7963488997917367464323389155442688 -679735128126194808383125410698756096 1257406343575046773974933690122240 9934839295734699441986843533377536 -342813356988385405250008187186184192 6132247260931097603803633338548224 1670371507304826932927223639834624 -793037667915261007143795772568371200 4297011280254041582437100481937408 1961154413312980015929412359815168 -99613387760396848343358236499378176 911311028696251673168642899443712 871285511250168780561705659793408 -210646101832149385838074161296048128 9861691631476519709558337326546944 9116169006416469599383433596895232 -941334922718987618052722913852784640 6031129696571187361761405077291008 3273944920742033178922246488457216 -690295107124513180478482963979304960 7026891359057673828280103530921984 5974570458248748372024376931909632 -826629986085635951365632140813271040 3530423492005330870806756479467520 5497114051516566924700860530294784 -31884660951027218317961457305649152 1735875662162187456524146150735872 202394847417793001371518778736640 -557399459709719610114904463790571520 3638659187100624145236164654137344 9730742249827127021772165213061120 -936034120858230123469132206971027456 4455349821320289498271441278205952 9771558107159840399039917126057984 -932864697279586092861784784732422144 6042123524174113615585646426980352 6806484225012229064926445944438784 -538805611218318834621750280756133888 7594462425754393635722439853867008 3806997611068774938379600934207488 -892747877602448841961246620534177792 5823558158120079095850055791280128 528883518465677981930339463856128 -396166160238892615500414795720425472 8676025815965105580682984057470976 2598504812067598303936508048965632 -374830380769162919677188707790618624 4668878024399086905089032512864256 2856500789312418663041593681903616 -138437655421825537957977649825447936 5271028183778785996563331548184576 9022374706443242418393822839963648 -188808986675405184291252931099885568 7580881636503767861656474936672256 7353940478798970982061645546651648 -798294018606927116840998963892977664 6254708840442459586346938483605504 6916483094322074730144559536275456 -430379493902606171318757703985135616 9504522516885187696274571003953152 3589584450093297113626793287352320 -186765911731918133191776337689313280 763159289238080203016726575579136 1083545958896740513774561300316160 -487578971026343016436900391798439936 1511808714929186060541087868518400 4149887304413206052935441278042112 -922640001954116974466484736144441344 465390037755945848632364131942400 7381572847521913701330503877001216 -822338227421488788839133669509562368 2602054232592727763460310391848960 8170743155790223060656070156353536 -733161315020069348021027048137949184 2031224980761242380976999014334464 2273079200343262842479558103400448 -297957228713092122744078993289379840 2017679439670448288065525563523072 1915206618127636214842976892878848 -725829050102056332943810076098953216 5469643294300243228232622303870976 1573225958944816966974923622842368 -450881230181321019836726256685023232 923341814928803661119742661361664 9327351426361476404564668060794880 -563279352078500740156276652189417472 9693337407090854784348360858927104 6843354375850936643428957804298240 -95897864483235071015466981253971968 672403884491122347507827142033408 5210042466182836176149173562769408 -342841893964699141293203012565598208 6673005802661522517822782255923200 6007298629369586458487718238224384 -625531452135370511300872847891628032 7068926982679267641454504534081536 9971240357215659215648333794115584 -177463596521376676428537948882862080 8826793001768383848594148979376128 157885030949400505557336348164096 -447943503628441728304855322374176768 3563875015879417093200733544644608 2968839427450022595155681488142336 -637971173607576139816646056312045568 5220452157477828157330735528673280 3322177527838020075166131738902528 -526284891366382276248097010680332288 9792356012663545223438556406480896 2605859281188244234197709839400960 -27797340375663039156871566161084416 5978925535593215581447026720636928 8851283982165275656724671172182016 -596077422592689076737539713143930880 339288197205330885327184900128768 8630430875196085009039697096212480 -32020693533144588009241262344372224 5851341793579267626042114174877696 9504666720754899634447900748021760 -821360481246645947907451811075719168 6632372694680247697145161020604416 8043981374416611227419096974884864 -191715667398371300633580238272462848 566675326229672222606351977676800 4373910721792497779295173755273216 -45063436840496222140315251618349056 6781497675328853758666522889289728 4439695908460772135215339564695552 -708860191068069797359787915746476032 7995167679685257899372414440046592 175741545454007251281135756378112 -747711145496867906573866332349005824 2953186799434697327300849791139840 6734512586929032206520015566929920 -976224698976640548603558915341287424 1783149816865685240401946338131968 9592827399533603556420704633094144 -711738156313455798221300439665606656 5335096355530633509497226498408448 1642278083716895637691255608049664 -81739557230416074586896370356977664 3867547158718730371358387748208640 7026919045448114215753040202301440 -721424199825406946504886978508488704 9601408593403676611694939923808256 2843642559164683451485693709123584 -80238585926229716826584141334052864 7148748405863649156524184252186624 6233358826247043711970693890441216 -586422672572366099506038972788768768 1543059867605098371209287396491264 1372811299261978156831046625132544 -417601491480541015036881711505866752 4865177864223929837953112764055552 8209326339635706948106622920032256 -96571670477512256619664079304261632 1349473237763303149877403790082048 8834869199556622756645228613992448 -710482199808519237784366730381885440 7623424607926364032897568158515200 4401548116328979506992842276864000 -997451779626374792286221656368611328 1963766522342850885330222587052032 8263576450548842603221577380134912 -507176483254739143388764128979976192 5858217347393323154550148917362688 3361890910092802605546332995190784 -162906413845035014143084010244407296 9672793037349134356032795573223424 629602462003812580823846721945600 -338126285287060086463895570690867200 6018550768294510404000605083271168 6425944164691207716339182108409856 -795574249267774437181578530336538624 1578651336455236575931883879137280 9434570717281790626963267369566208 -233953817988386306252175518231166976 3100933231386953139769743647965184 7346830210685305984438089931554816 -250908176895012277828885605618024448 246844624451911302242523601174528 7498194083438520842072385755545600 -995198253169642935717773849013518336 6084751786819147810805651603456000 6315368162027942566182145843265536 -374143865500724097740241753186762752 7868087963575125918972616281948160 6015632572111900097613911113596928 -804791837021135717364376672915161088 8479960959163865569267510075719680 2528954184503898588870983513276416 -361059047686870481024563043113107456 7585445992122998474218351177498624 4968785219141009403434719273549824 -154448290095280043705605289968402432 7923994423690477832992150117154816 7407460335357918755810606455980032 -190905655375529885802591367165116416 6453567958576975522737149521690624 5268321365888366913440381638017024 -959097613821014127099470517742075904 7460618616815823516997499813363712 674634390495864818586936252825600 -858590798220294692848160713320955904 8380751468393399420141111517118464 6796333630980561379252582756646912 -442937973679141135117095630641561600 6529264731297908958760493348028416 1102805044297073030027083956355072 -968953546096040800979992302992752640 5098473931195800237460721625989120 2984780667360133043025236954447872 -314561543737759469962663457531625472 2030661472633827686676293509709824 5764891393882271171744850816008192 -128362672364634493100724047778414592 5127120091359581515352495236317184 4144029929207950659510345656172544 -669162182227037185329186298056933376 9329476421273987339423533720666112 5170834465349521606155065607847936 -371165151559374438486990483435290624 5194243982584436766041385042182144 2198885462273868508438580458160128 -823550652109193327433453461437415424 9882337373791837770517301893791744 9791021799680914818155599060008960 -54473621235002705154111838095409152 5910254580960249814765118167187456 4118258288077313352541893333876736 -566884835930969319792071950880210944 3871281296579032554475235615703040 8550039097538758534425673983852544 -262672824138311557623027766124347392 3316573547203821306420255623479296 9008209612066049283724711796146176 -313260280657241687155087215767322624 7036361334935245704903770020773888 9987678537191965277442951635533824 -171873103720495595960747213358891008 3298287062900135018667501869334528 9275472645117790036377529258868736 -455605331386810015959153448667054080 5116400268037763725039600566009856 76789828713535377322280220622848 -711823254733466383055065034369531904 8726324534558231124705731541991424 4915106968566638347538716371714048 -504230827438144421569683122389254144 7882761544749972671886927555723264 88392559323549223578432417300480 -78426603954131551062897798250758144 2708917582191000261605748669153280 8704312511806709588967041504641024 -316903475668980561136836574063886336 2322263485607878542235361261649920 6423807001267927009535913806004224 -265161310659842441218996962680897536 7625186027625767958206981133565952 1869734218457147097030161353146368 -913737205631711624304165601643855872 1361154885973588240504755312394240 5518896890789707197424478277599232 -311576648140580293722717513012215808 615529027814604718953387840765952 6518614295979223610813534351392768 -616983228208579817341024814602649600 8985919044308884174008114791579648 9414084928654910290121892596547584 -357829468377838562828510694624722944 3712238119815926551877335497310208 7758617162287154563958266493140992 -490396821796778109197978577015930880 9145009393593887893788835075588096 4983445759928231689540650877845504 -255816019530988864526613178574962688 8449377318237579215432206954528768 779199772628444504178037320843264 -986437927957313566517739806999445504 4610483896715086893613847381278720 6346720960502073069328073446391808 -303346722670679044813568422950469632 6963443672381099713474689102774272 4826612088015354188051354967080960 -147265171886598753349653520218849280 5980356423815930327514979577626624 9482068182348570875127134813159424 -67793804271644280959698453177303040 316629017660080609823392593346560 921071010375400207579568135995392 -399410529507244942998479824027123712 3673595923573790018521768134705152 3031616605907401115796078787035136 -626663594903481493895503405882802176 1695944165780497209873232019062784 1539850782982620230493404630351872 -397336686001094486972344514472050688 5132039929391337134101600774651904 6390965281509684863681825563738112 -916844937493439108835920505796034560 2252013000959742718622422064431104 4198021813286401459625045797109760 -652153556798561584619816769053261824 9407562384261958708969543127007232 5881077933434380572864431488237568 -380158307225756725579708234123444224 3298168422432346277208647968751616 6077809526805354689589444706566144 -967032247449533384660162119414579200 8694907599572750678018685638017024 8924226124380106523645953645215744 -606326077470811634689821132604833792 1823049058504702166546531200532480 6632786785835315229059431568244736 -802406560053971684182467485141827584 6538878670104889729207552104726528 23117581839746166635167991463936 -482856249081240643449707652781703168 6098790829463312503133014260187136 7790359104032927184065525534687232 -769129347071772488269279516661121024 2982610890034034688292029120643072 3607255940305580868530041104891904 -963581947656118338677721496914231296 109052608400215278374868528136192 3606123514501779004119950492172288 -815183110990257806904891818041671680 7199233254013216073618676397375488 5519259687770507620002101446311936 -420541807857630198143165390852718592 4933310590145344183232748322816000 7620682511195997540070684457172992 -966724347539461526559854221380812800 8221146542674639099419201246330880 6709563069152540979851299997614080 -870447532180595800868286563247718400 3132865545613788796629829722046464 5415494267318033947708373185069056 -169443167637698691863189841827069952 3765209455095941266555713248821248 8056488208467460303390988111446016 -276856696235437726454804148878573568 6712904355056169054190282202939392 8371331566258547309048298626613248 -835860550865058621505050813852024832 4213113530490397504913058153103360 3632298888203256531695066425589760 -244366237324041542556013550748303360 2321806004341817892970352953262080 9754601513083467115044820811251712 -100415665741094280927974798999420928 5551761722481327326821165901545472 4805941278148562821620530489065472 -879595466748042357510579147547607040 1134744163427885588981907965607936 840351392202017556889366276603904 -974818915792205417227799573190148096 7686449614796844485791395753230336 8699208937379235612290508581240832 -6014376109803815704679987172868096 260403586613349386527308204998656 8775120947581544432653543302758400 -397176955183400118822931004383035392 3036537905311007122700915582173184 1538488966492660199260576645382144 -434232860560592218409697579221647360 1994232437723957766193745477238784 4629732508363765839163938813509632 -288754949718128835818500248205000704 1571691969656860228866694608584704 1406236518286777489142096133619712 -108118600963845052907135078789808128 1786157561009200686967536968794112 2689467158788202482305026746220544 -501359156864221506385418302529732608 236324397855348509705426903760896 3157707903637104188981284775657472 -700151874250649149753484646144802816 5768043843850769271712047263907840 1054584759112435989626693730959360 -314308451228675064195004241413144576 2802001287260756798170583357456384 2203153948133657494536068494524416 -69344834096586808507699527984087040 903114988479144707593138442600448 1362090102108033803504394247864320 -76034100383351535222819183633891328 7687825136343507351349667655843840 9486982919392701352457606321405952 -127012256780377604851204367069478912 5990489996998535384395004191440896 4050925439348694633829436695248896 -266532587298687395600429375230574592 2252153156902957007966344321171456 4441497140015631069858242907602944 -104372517985369484880150655490064384 1743463405733469178095933574873088 583560957367838996253440483524608 -766553552623941700881328799515410432 7237833435580685245498827332386816 1591636081902128282132114579652608 -883534829707709903551906100306509824 5694993430513818356233865428729856 7100874460282243802959926498689024 -91937606578757383594303044230053888 4599232239826759892834894189953024 1656264668614858008693974455287808 -455680903531473778345232021011300352 883994603755002248776425733619712 6389102116262688914100482283143168 -70202888045071511417327230012882944 8036171453373874883680704799965184 2218420760879351023010944393412608 -732477535566888302333546714588250112 967755613117165519103954616582144 8646469401364153066027926775922688 -663587230971163796020113735208140800 9260611236574974720695919532048384 4710996380316171321748134612172800 -586075558652168977218187120003252224 8660027770978183964164216510742528 856440738216781127589492254834688 -79795576925910994751528151350771712 3584615864604567475927380272349184 8921542584189285794190230575644672 -220933982225623111928737414271467520 5323792687595968304733947185594368 5496264085163000546154086712475648 -570413608995406941146154119121076224 2236577110186785886188706251931648 6189182047979290224873970381881344 -59992107342508077801343181884751872 8042627354531522980849844211417088 4220970329307534295649145682132992 -523684415995617848673267640556322816 7989457082694707662916829988257792 8349248764805502256506898252562432 -286739443794027862022368903991132160 6677979033280769261485470727012352 377022473863201034261492804878336 -755744429340819443201226173518446592 5851767947234914518170471715831808 7626863818577538598132961442267136 -647008114433180282914881997935476736 9321332709821806083342551872438272 7878270586671228046442819984818176 -546425523186202937839397969256775680 9653737037785673116520082732744704 3386581031201857473521060547657728 -87913804613866313163503829428207616 1853590666285857454621837311868928 5781783393985986707421154326347776 -400713029531917343731068222469832704 6257682791693168880702842640269312 4315837305741174397507000288149504 -795417133884489446137708571724349440 4537598723739091254908602338508800 9892511141117116049754153719693312 -738898732138763165348229273639452672 8617535005331996599889561221332992 6213150698383308797483576312463360 -46194492185639450293546743979048960 6055028073281368156475425241956352 2768221968968783997002372685496320 -3082222858107331974418666157506560 2443334220535042796582862025916416 3288914697103933404114008496144384 -821530162368115919527430240321142784 3345380654205143816056337392992256 3573174794651753652558541411581952 -992046079798850753010617109723480064 3198746856416295039429682848071680 5405712808552601951877321021456384 -205447423017599235329285756567945216 9246088803916532495631135526617088 6488889782686261523851810911027200 -637748262632020322784969122994192384 6393361379482486825390022896648192 7379530704572942989857517025099776 -320463783147002118663277908301185024 6208007907700204399201499639447552 9227876908352973300001511430946816 -648257852632057426063693785346342912 4376863358670729246907106097889280 7355866346813173532967245036126208 -802097097632363037357002245074321408 7710813884896457225577793092321280 1750523219421393372414229310603264 -263554734123583002727414871160258560 4342767708205016187517913104646144 238691935956656232243943931117568 -416291772217467148504844673442906112 8931749060666128445649980766552064 9011132439565324902487503549759488 -899233118933506004405451124962754560 5492407888240761259867315711770624 5491687786711239616818548886732800 -546064709489660201757812364308119552 8892096773959159564033285546835968 406359015165484159432449176109056 -401418565466285956281230543485403136 4913910951252512404899632477372416 9436145069531055116540671097307136 -712730097443397906641222276401332224 8745451903766423946365679999909888 4270294985432164952398649918226432 -943476208669436420673807538888638464 4111802009289056647203810774614016 7116354909394747216498054750273536 -446024095820860727628949186674688000 4171396702720740034474873068716032 3036147567787309453516126961008640 -998759038496241177337407754093985792 863580435026380792172594103058432 9456292918468423902779548977070080 -628453682073494823053175187130286080 6560407529968589018196846722416640 797806006095818345503834016579584 -134325228835613904120866945888157696 9885195070026453251260913410899968 8781566069478603189644540594094080 -219168335361523663676951064370741248 7782463985412303230083378129666048 1844618801755446508821618704252928 -511478640160767850132885352180875264 9428370246143993096550587046035456 2752250650955724247950591233359872 -854927060211458791944183799112269824 6007605290599267720012853395062784 461947769274967378719797996945408 -112219186407354833650453479077969920 5543396716195983201576261655724032 8125696002561797636169661440589824 -84258141554857518468325906835308544 1809710385661683373746197666725888 1937296804822415709263351580196864 -762856969186775728896375599931588608 2609368776294695076619274973872128 5331605671125123706438646828630016 -939078698942427582391433847340269568 2275780534958838859390913290960896 4204586393876896824373231560425472 -812685294634696162555005305012355072 1671830778871377373008816429334528 5787276513891003431487982503198720 -374069328338884090028628032912097280 7500901929814775683754917692964864 82254264422392872856333649444864 -412677366448963974935211210061119488 7121417189072039950025698486255616 2795646118582915376701781219213312 -314641807252108481714961011481509888 3384190049634730486758733936328704 6943008155547472704317544428732416 -688933030888696761224846800299491328 7943663183846009489437734385745920 5225899359025022954405818928201728 -212207082875675700395177256276721664 9011817188529027680738293009350656 3993409154750210321994096358457344 -592897510141526436560496210149900288 2785591383169885087758399507005440 9233610893553933932978734886813696 -545320015515449377382575811969679360 6987321222860226214771854281801728 1951003372581446771763350725459968 -375745716311880501076210288064200704 9541986699049926500581777629773824 7966274068738979262170887557742592 -116009963931949038856928307475120128 1831427301624006569043508747829248 2932348966908112963556152765841408 -541126618149582297211003936750698496 873579756216978384173083276607488 9050072739066233448841836715048960 -27389451635337052973558497508589568 8183329559900770715043281145692160 4043064664726731591805293171834880 -772777026886658742966833506349481984 9826667924439856362108114805194752 8502603147091956500416541044506624 -43400027578501082521897022724767744 3783304850046492269986456621023232 9942482749880112341160844995854336 -966864848829876674335927554063466496 6541163822861197386009062626295808 9357006189438748427440253978017792 -238290249568204173689751987027968000 1082634252244958915860509210181632 981388510111091187573360905158656 -418384173416076267266463206668763136 527751124946192408025541522751488 362410666719099532366810246545408 -329192915463302964033100864724926464 7649192162741364198645056929792000 523565477236093725224199608336384 -848604459569672852638802514831998976 6122905938759251551953004309512192 8917371628580170179397193513828352 -35053485835050911703638740821868544 8573146442065530780897537930821632 4926772200840909218494981758517248 -370526441594893917708067007457394688 1886061361176612532960893863985152 2579587057323223553975076933074944 -612606829492686118671650550892724224 1628912700766279200616576784007168 1105185909824476095614809341427712 -530478814576022250743400848131358720 3598481377484874850940481907458048 2839781975074482012278146564358144 -19350502479562063860079048223883264 5297530455446005115170940304490496 4151146474246816584996442960035840 -398767251779130738657352279123820544 3354617644274752600573992947941376 3969363318289976303223713088667648 -236689240203240216714371068279652352 8927323031144895026609760201867264 6011633506762934502624131253534720 -205236945894154833648719293925294080 7839012926510745789150931684687872 8553503452519692883905819250262016 -772718199501194255035964534126804992 9770537839295051519583798786260992 8718775390119883138346763658723328 -901756135155755616756370746816593920 5039647511069465730180395558764544 6000133894084426709471309433143296 -611641458279404738162214774413197312 7341633005033698985433022259527680 1086518402677430687363917515063296 -740555592312237958054370089879207936 3725913031484519293591782061768704 1944791672430779030771105185923072 -280272132785665768619981777068359680 6934191206526317882137561134006272 7521066781130741665120796654174208 -169160831962061800796714649945899008 7252166711532999866919175174750208 7848821050889808195350085293309952 -5680272030822612798332507751710720 4550581488992595040458799539290112 8941145413324976032906642135711744 -690303514541741263804677605560418304 9851342475466247310962941530996736 7812912984350335818718052951785472 -76755118667241518452045705390325760 4750703104962731598261011747962880 2544197435563934416323341541441536 -443564952451609632833717060251942912 9953411294266011609810713232539648 2918336313600542809853338111180800 -686589534760999295000878025287925760 4036245914385287462624154580156416 163047158864009149065056472793088 -715024567273155621537182016321093632 6293322969611137288528548260216832 2545614376185442649702468618813440 -550860481230725217402537795729227776 8093835880861953338452548465459200 5068046605790385767768362756079616 -715797291090088206653434731861901312 3661588422749863030383770469400576 1464957852497869308343581178593280 -524439302415304433931344537259606016 9823614802282935249008510720016384 7048508832040994065545374113726464 -707788968645940138718735269525192704 1309369137301801336077255329185792 3060394107685129656711836552134656 -765763859701482769868744658163597312 7515209115834603218050988344606720 6277169571572331566944112502374400 -716950331097821260672494209089929216 7693795280349662753714373981634560 7845830943113852006418365364043776 -828796054629685357787131124482310144 5736973317537777462184389130584064 6024303614795201575384598748069888 -399734172618719165201332316372205568 480998267093119686008514394718208 6210426514297536281112612148609024 -598049299168902027894524830566842368 8572257428274963609941173285683200 873916552253230366779371144871936 -638971694526125344362721390740111360 8145074950309678033278850524250112 4794025073695863427008291055599616 -653030717903601737955872001102970880 3056342887046484215576532191543296 8106093515719985484071586276311040 -347951135852075253660244360512405504 6683258225123891836370137175293952 1650445786688335353633560665784320 -493268518590772816739839674423443456 1767985779757618975850522549944320 3344705612970441198722515990478848 -114283696244399073882858231659757568 2343139668618066086005936639442944 1203878202269807429230170703134720 -596159426814905029452405536609796096 3836849092621571046727948540313600 2496484211141830551102274737799168 -937521016978293481302730756402970624 1785590095547424886815236810604544 6794702249580448341020551034175488 -20813596238309594290925153873297408 3089394146976812217570223456256 8247790666492403098278107790966784 -220254214942091964409737215725273088 9394550675401528333762503796326400 443532678811936442915188555907072 -459502708785672454312442279051132928 1561338799452618627827172934418432 6247246704956753466460540283912192 -885481493692264848719435204376133632 3077544821316739479280483248898048 145860265283693793374233646071808 -549057977843713374547373050141081600 5793717105824968459606767108620288 2089881011836629985745254706315264 -958146334817096774842386188255363072 9915501130020289920586176872316928 9540430465204819942754435167420416 -999368381383181936322125375104614400 6996864042120018906772141963739136 2420310685940179515523441778229248 -384338499528836245791046702962049024 1095367564999703881634261290188800 6552292375335489319478502914785280 -940300865827106865766261040259006464 7515034499277089097071090716377088 921993761803366500512096642400256 -795574630965698848537549551989424128 188514109801113160211038338023424 365652488120846785401451328831488 -779940074426804556895578365536239616 9791611557402208075269016825888768 1828576923010077493143873475575808 -172411847239718464325029108587167744 3738150953084639976434415056191488 1039779428012919366352269740081152 -308398433456907918014868933283151872 4191099440005765376303865673023488 7851609520386889396267539777978368 -332111616600369195308287565297090560 8684064169881624799324992778010624 8151123420972895299619139702751232 -781102994197861017474922377876865024 8503886377514085036735506600165376 1737966587904859826194285714210816 -512972408786598318132333418305814528 151430789214137691762794394812416 745885165683497814280599169400832 -844991751568659832857899532457869312 5441841288735158681414492913401856 3431700508990964451507531302305792 -650291241958724796423692992949256192 5027094295094667251374929607655424 2668794400856353025208639054413824 -383283053283523045876110613263941632 2819662019735328787937613527908352 1456184127821488386311212792545280 -521676638288709791473032828416950272 5468488367580934342770601798664192 2866451160338893880937234451922944 -503758778002735673923272450630483968 539002746497791121039303137820672 5845221788953311932404237577748480 -965518362294523566025833951830999040 8401498187181241071907694725562368 1440545267827298332124530199232512 -383359321493203566093723954569019392 7707944862952010708526629564448768 3760971308198083008170749522345984 -661176302974002650536533615347499008 7383146808326718365612539088207872 2522417187502055044353059845046272 -298748162719717224794489046245048320 1168491414266282438349588996816896 4015192853690552112395324783329280 -76339562285212562754708431439921152 5581487489938362321670203213086720 8434733182624932649706775400939520 -516100579214747930238812735777275904 2169509611071404692042111688638464 7360470657082986695588782062698496 -158448133132972923802386969860767744 3447230735650476258956360380579840 117995751949525507162018324414464 -971214820090018135909568760040652800 8596103915211059625119627094261760 3112460808337133502696857691750400 -213077207078656130175496678532972544 4939385279722324860297059741204480 6212968676665383870056976586113024 -365274364694890203846017965537361920 4304960516043255843278265576849408 3811878180641906255471043621683200 -859307475237013499172994183721910272 337239909364850160924685678673920 8623237058165482463876926350032896 -432690982373350170250994377438527488 8836807876175381424752274326945792 4429166717030786436132799200100352 -196619938597849062413122677350858752 613212260409411600112066427355136 7084288653185466683505011377307648 -86579344317564533010697986804547584 8862915805282173266390367193792512 8097427331479802298822013141123072 -79134170123391156168605697417674752 2989598191872180248634839340679168 3902878725893745325558367036375040 -990307913618312283648182762552164352 8975007970524324945788994404220928 146498663003560249224309722054656 -721950399846764483092127923109363712 2192077555605659047291812526948352 4186377506992560731492470688317440 -916547037727538392357033558908338176 7141191202357249342570531500589056 3415717021018921981997823853330432 -663197650881577499619385963553226752 9476916885897544190841780246151168 6248696861341712444983134681825280 -121154553650848291237622908931014656 2145378188641238549641829321539584 8464739482990023191256243070042112 -241763278404941524461567513620119552 7716398113883605327386084479336448 8167447599507104866707252835254272 -336285059073341713181362637477249024 1663581622343812271959520965558272 3077965493301742786289185845149696 -875416012840484038584659617651884032 842242847148300660246637751304192 9143462178233409377719118844657664 -490290770921410971647382632475394048 2449379415399242700702766210220032 277699873446171683645709524926464 -130234511955137631826275347826999296 554332604304568688938425300025344 1384323467239101618913603632496640 -636447936538474915355248428023021568 570114440183885529768194239102976 8815974788528690016377688050106368 -347791677536163945671658539076026368 6714572607097572044699008893976576 9074243865893450375640641991344128 -539169773529713500950752512956170240 6446093229403509629843441643945984 423715482623510116251342483750912 -647398083120709852329063476981923840 7445558059851818207095433319153664 6069171670653599735774424663588864 -842436191415525824734661172095090688 4688772466555747618844581447073792 463963395510263754699076020469760 -637904109635999443745945540991385600 6398931324679372593028693007269888 9532492731653095011175283323568128 -712919453430505066604238487525785600 8050577136769978361359666893553664 1286284108005639087734589879222272 -404973354538339848222296122572406784 5787225829130410974084202504388608 7161566210085645678420085083996160 -802252283841551794089489265485414400 8564414316044066525706701395460096 6485110612158843325733620661878784 -515147636333562868375803651898212352 9517710245367162688432689247158272 311047818875033978439423320129536 -82433230246958277819742721060896768 9072420931574070542019503725740032 1777085002388124863701546365353984 -960204821874588885646090265128075264 6517813181488617281939049302458368 1186032536095048955591604756807680 -647548861967222323806997083202781184 6409109806204430404929222470533120 8290260636475586171315708376383488 -675117152171600657101620008930246656 4220438893290309769689381942067200 7731357849379865458550059885920256 -353287304254536696598577178700939264 1177851828072715150276338705760256 8502128726411731035367236840718336 -841207607938272140285996332425936896 6442399922727258908190643712950272 2133859825173811396245521000562688 -551061806716469047460086016800456704 2071850344340639297043164129394688 2762979630900686286510631946289152 -996338794465087178882316426333388800 7228662459414030369615667429113856 7992294732534776935919988875722752 -464337545641130907746505562479656960 9620671128078270912364964923572224 2357217012595254525525154741616640 -298434448441830341602491094769074176 8471212469409380397996954202669056 534039366402672439307723331338240 -350621745162014735444018907131674624 8801695442455873521257328999923712 605448056621546003459808667107328 -178190988457464375014856734283923456 7882024462364731985213836425691136 2869674385956503356332054256025600 -724348268772185805716575922931367936 8781654440053718441944501635252224 4109923151082944161192243275759616 -582218109893952772940070722635563008 3729408281189852194151676562636800 3267216396844426080406503388348416 -610313370255296843850098029786824704 2397177989875874039763674586939392 9297233218310901473188228326490112 -721608121297424496853260844014764032 1346745056349825942485330703679488 5764719069131906176562376151662592 -440662034856574543164064366812200960 7059300500939312641224750273658880 6107537358943089288855402087186432 -601517465644578807665985132267831296 6876404557262494671907006160306176 9948187000876200375974990184448000 -995018494928725994834735805004513280 4340698370059441339734945693696000 3408096163037764557550968027217920 -260272881732686329526079774653415424 2772401247713332981025777102356480 2461782819904822915142470162448384 -527656610888513563852444915994722304 6659066265960790568796779918131200 1526878118506774471095603022528512 -666128891986369595024336446419894272 9153338642055102111813968070705152 2192317403177206273393964166938624 -535956149363960242140371443735592960 6088084821709011319382232581275648 6449293212658249543739384449204224 -626916895359107422585911437621723136 8898517354835306600119215060942848 5267677925488695442543402127720448 -331236057112167181278158296998477824 3881329431243448109683072129040384 7250149966219729676193027493724160 -689912214749280838614038651997257728 8430998347811233142436591210332160 7641737575211195273010026639261696 -337954598465830876376099718512508928 7396118074395145539736562321850368 3903062205931107346844106432184320 -842384402312124714631862475072471040 6299988443791047788404295845543936 4445095659604837609266999550017536 -349896871434616751047384836421451776 9886936167054276250007824920215552 4625299726141547956929218656337920 -127635741717078022472849835610341376 9611369126568044195145622453485568 6655047941762808021511678157914112 -381322514086299458754665023266619392 1661041163892318749534269646831616 6836349517475928139757246721556480 -168801309799952896262835722602414080 9294903184839845801462072906612736 1582762544325162440044637803511808 -368795805345033381155813467483013120 9684089206478840646457225277079552 9017227361221753421901017420660736 -422166549653329663550684126699847680 2406620933270648279444644085891072 7541739583556559220814556646342656 -602299439239739866199884248312184832 533842278005568481482120850571264 1446263452610742238961828102144000 -972014030092993097667764303041658880 8319426559996272094465459016957952 9070916223686293678528219054080000 -846228572241897884698908796655763456 5084360348962084427079738397294592 4940663768316973159081753832325120 -847335543978724104886051106652684288 5929591147164294470902790670516224 5509391743530587236115450876133376 -405258219767632837194544468266582016 5325187795023463772948185571393536 8763407365399586533096274433933312 -773783904897360492659786249310044160 7390040478940730327166062256193536 4514978026711134137614995210371072 -247349746455879080590009621010186240 3910851782779385188978072668340224 1226947289957523594761987277455360 -112918227843481888635919213046792192 1524400092650278843304989947854848 5687587243490132875772651005542400 -331000206065716101791497110717202432 6503088749786957701496330570956800 3186807312903765257590579621003264 -914932931260601242416199544705384448 1837006151742297058901434401030144 87820289069860770520358589562880 -872695474135854948064802510601191424 9215791579774844174662624612450304 1001866465348160304912296474312704 -915789175805965877118878201841451008 834725962109238769782530502557696 4867517812631760845021644412944384 -559915100272361911621443190125494272 7869588712524342771981118825562112 1260771889565941957312164988452864 -404309537183008269223563571096453120 8904026579062574609327482998882304 4893066082038885383526649436307456 -925769166414589847213784380462858240 3446001474945195695769077669691392 5349477542399792788407740811706368 -51660011136139197415784212464664576 7946443156732411169545447255572480 9244224654677667156705325608861696 -47879215045535546850570361930514432 4406236571115552499038531839066112 2409877176601171479065040890363904 -578324292121427212821360854070984704 2556018467589954374376721282498560 3004854309844594103085826626813952 -911873220624460202736218382324989952 4774092460635671985169045051670528 6766877310213839261250581004550144 -251285954947198127056821916469821440 8893687061712044556634671506522112 6422024624907974330549606711033856 -466556671058014839953278723002728448 4620731875149886539108647234961408 7119369229711588256842931429703680 -618410159824491778798937595025817600 2791864894136239532221770806329344 1830678422253777841771398796673024 -386759567371069641379155550840815616 4264513565246127135768248953339904 710126918322271789312084841332736 -881359270463476037231558464110592000 7148906637165264209921685766275072 2773769869107269626122966870786048 -517973948806569104672538264069996544 3874574155796689427283331480813568 9603603160556004063328949298528256 -282340956899677686241804871821950976 2548406551315141971679113436463104 5812483566205394676161771282104320 -308928629697742148122075265255866368 7193147786779846402159291091910656 1827178005543976431996582706020352 -247711443319246657914018572896567296 9944333124993015301364570331807744 4800171895887815225247957367390208 -164624355390903501632256123309391872 6527758804582787403089492343521280 3157461568880168142755343991046144 -351508093640177195612726600549793792 9848256343305436237479874184347648 1645017202448156773931351472603136 -370729639674578844248991856708288512 260048589289831124577293309050880 942329998371796906889296310435840 -204562578320682981617667866426867712 9500840690923546422998852637294592 9021584404945754452543513823281152 -121623733395049422716119770101448704 4922986432617288428016333290995712 8581271896975036169356681792192512 -594210282812153260436262132905934848 2859433901670051290939453404610560 4226464245915321310972383957352448 -989509525741476874443949391290040320 3524401808227996286361823904530432 8535874342403031921460564658749440 -988780394782461821219700652818563072 7586649552736050276872152374312960 1482153689388730535969878483927040 -243406573287892647204702427533017088 6405753593364338627484726910255104 1520619692534076012564616522498048 -720339246191780938421053260054921216 5591305951378774464135039285198848 1382353955807962620081793828651008 -860266529843447966577954144917651456 4423645530052311457352765740679168 3126991993964609855830814391009280 -194810073816463305676524582915276800 2458119835324237256857674978426880 2722746170622825764349977215107072 -299833869623970285527107311096561664 4775384094023930205023347801063424 1022117297130930232463341954007040 -789739361832452442384636916153712640 9126356464984599495819303971717120 4219085292477382053286091522310144 -842884449529649109020069638034161664 976919084374036621437338646478848 1856665882651762174298806353395712 -739115867386610003155884074229301248 5712849931204572912053719956193280 6155417909929721863313360253091840 -654355408547529701622305963760418816 1796129808275444973033419983290368 4676244336602887302717060595843072 -308019790643141882472365397737734144 1572153305455494569662127601090560 7208327836169817342664579970236416 -35411168988505231884642915562029056 6841644669397959781161402248462336 753115769024066601683475496960000 -461293017092393091816244250480214016 1230295841278846355620647764230144 4093328568046040660730450722947072 -628077928431249020634145157009113088 2438105090224988827655315889586176 2327716775186976840914494640095232 -573435331670223626758766633515220992 5541693091670083540549949055827968 5812396346992568376192467963215872 -474453230234584083633389513079783424 7436937204474461255545850731429888 8581986892860323066132420890722304 -432514794493864332066110852940431360 2617994445621202798553352063942656 2919519844685311763268199027572736 -593992268087880458587746151094550528 8384545194331499301789055148097536 1210202361211811581609132274221056 -329579084532931126707929922574221312 451504094745655483849614710276096 1585189733468697898585149547741184 -467699605881029656857413077641986048 4699220394771117731131394166358016 932084583520554142627912935800832 -472812711187000400386235458922741760 8922778109454127863705648354033664 7468687985124791483081187783606272 -796136190018869238782560745889464320 3336572814260754731533297770299392 7087161132113201342889176353210368 -486173343958177539799352422573277184 8066698792782821706338892450365440 9734210789424863142748842878828544 -567892314160971449738153617231183872 9587498783198791479377269052407808 5735617111699740221974722656600064 -143255783253506433699721479219838976 7587615250627556990614247554678784 7177960751301628067677023976292352 -25283463836275630704437565566484480 8345544516154851083622656205914112 4747755552205858454801687265673216 -203003100593207089189207957271740416 1652027917072004753055821363937280 7716608020042505357360501983543296 -146475267952654542308513717526986752 9076173935390717480083533925974016 1896002733637136361897012339146752 -493146183634865454993221747854016512 269616287363788245981998677491712 8160279923007782366477057844576256 -322051091660552997879311492452450304 7853955206823716289872148236861440 2560777811588862349618781041459200 -76235301043299932916556535047389184 7829189502221228746982247517650944 3413061067469166367068954466189312 -507432658921587618931073085996007424 3411475656629866830037777408589824 6254372237800130552233316887560192 -483149748384483936331523871217811456 9050232169276516541620950625419264 4856685254241574374458182164545536 -623276719254826939406060503391272960 9099687812355576953241695999229952 638609970795127448174486488088576 -64281773046138883920478630089588736 1085908049059933493895472200286208 6877905989351253020256401230921728 -724125851595379914320094455507451904 5570495859049822407855457051869184 4445176032472133067531912675852288 -691777998889753629999388944035217408 2899706149974141821649914779664384 6980859953595161022555568283320320 -332443875845744592566881393657774080 7605208510879741436652156224536576 7920866867798205733995934713380864 -96235590448983009533846860240781312 7914410814688190789671602425430016 5543289561099419277956404050132992 -865123860805483471779367886264467456 6265056608806756510645160417165312 4921752566774831461731527875887104 -159706241793912170349709711032451072 6096981983936069547677941627879424 4513828498779360381592572830679040 -959793356177748950169792173957971968 4781686875629026313043453509894144 769169627386907386586379354898432 -247641973239805577465417050030604288 7988409525988763656954822061457408 9625664013647609803080260542005248 -893804140758822577351717544611807232 3902823497356209651538205893197824 9521308338175181763299232138133504 -307629248261319546534490681630523392 1587000153931018308729214097948672 3861300135234145392682579206864896 -761700435953146661801132674517041152 1404650249384475339064495872933888 8912326458739873966015123738853376 -470356339368428780156616025932038144 410832378318222530103615810437120 9139235412300791059372674727804928 -823499769777357880416583574647472128 6480422140506006398725666447032320 7449726570097215197309777093853184 -735909309873127506545183376168452096 7260238353334639498863745798504448 5722536130003601934414315029266432 -842664731517870724636746070368452608 9588228570934434555379574854647808 3072572963081405197196524523618304 -250473632662208336491456409196560384 2614020493921881835719634165170176 750883945890816537531338115252224 -30622861082613077593426075922202624 2878013131886529843012907852365824 6505095294573193440202495063228416 -346858780788382375563827289171951616 6326439892559158819579357095264256 3539669483693305491502030523465728 -852022863646700388480497892955521024 8455076325450914568101547695144960 9945523559282923769537104969728000 -327002931847240374883447383091314688 3181135818605622411432544381698048 2550055384846133075439569336270848 -8417816346531966585193590067036160 9815488498467662230476323838492672 6638465743601688197387966574755840 -317808276943731221726006615623073792 463247136303664643607000592154624 211206216467142274287257683755008 -911289994500994918688596472117592064 5270450313634614728953360071786496 4573422679494332824962516056539136 -83493103479936717975370036345307136 5799424066252155507713783464198144 6606248400236234593644280583028736 -214570756717914734268875783211581440 6119463668674072952430152055259136 3964481832346023345592425680732160 -225692072252692755351708759318593536 6286380064846944758436390265421824 4378091042836733162543833264685056 -752913397432856726579895219334938624 6986296905464739628933636373348352 8278424854040763973645414189498368 -106496034479276345755282954078126080 5019820797493551202638665328099328 9248578830913376891228079400157184 -719086180078108449997272902608617472 1637789422101914066354606973124608 4660821713344006187854484257898496 -389750210325750707619418711481384960 7173371094743657760096295359348736 6180203158971488357479951349317632 -633245051362026822936911427777069056 7025876767861652260564938868654080 8811008367470031797276764272590848 -219194284663762878798818078611210240 876068123791436811848286331731968 1474707018131485897203362643836928 -274088834825310104046144264276541440 6956086562898612584934999899242496 3796535403719757861385083669184512 -420012732320113850610326343163838464 676578611749701180538599006797824 2526792053278515814316672165085184 -524331705748705539365320909064765440 811906944042981136838832850731008 6812377809242104725721745446666240 -761692441973929768212724667954233344 7951135730118939106526867836895232 4473656729649134060698104630345728 -875293135480758529293746542045298688 4297885730924901288408964944363520 1511996936794028607591474880577536 -173213091312659753774746991127953408 5608949099688778194016556338380800 3768503855516145418285262512848896 -450563089220705031370525741466779648 1090143158046665293034901429288960 699644099658999357168234501505024 -222560053746249631266426569552297984 2147088162214011112532787406569472 3638091526640724906692941914832896 -990557872054169101015888559482077184 6502880945093696710777697118191616 4448848423929395027955367930757120 -653057984350474307050064646808535040 1300107237737910664223482852671488 6707917803115653520042771529859072 -202884595935803557015339511073210368 9659756256280614152970474994270208 3197543582841712996124002751610880 -45532721015372188402710997398192128 5519129239556292626884018791514112 6519025151172627086103627777966080 -327858301970998468601966461886398464 583816418067805291559341896237056 9293774064066963502847533955153920 -270750642881972535257413176294113280 2601255670924239960643843813015552 4017856441131371859698981216976896 -821948886408658782064410035086163968 8922590940650411079862230974464000 7170121719281542688991837069246464 -812717061529953274280749036445106176 4881220102129443181054468254859264 4202863079064177377047466578280448 -439960157924398358926258842166624256 3850109799571870919377120806305792 3820105379650793025531603647987712 -798090971733369239627507917696008192 5378533071809838013477617441701888 9166668902774750761728437345320960 -999997566292059805584436001907933184 7942924353050446349417781684862976 3425097765205963563669642966728704 -406131594284677480044997739848663040 1798013449750592789110415811411968 6867684378730172644187234119974912 -414127799089005770130978971999797248 1187177200927090923128440892686336 6085884703816782467614184507965440 -723366653658733347598893695346147328 2814133030047156588822326279143424 8051689301262429026923883779850240 -956303324650198778264631493397577728 1086356691421436247502026346332160 6959892526416738324159473016373248 -371439055892523236340314101482782720 1798563653423002627888563766689792 6656642817786603176405312955482112 -678850358879873947288375833179193344 4603375019299813546887818732634112 5480747637286063028124745126117376 -297605625079604460927322727953465344 4422713638867463265868287009882112 7074604126018473635718385803198464 -213090989975747567050379307870322688 6955256334378246809120890047954944 5074054956036801843306620600188928 -687724121362272284494867452296953856 8343274262707300083987789874462720 4623087530330684723273076167409664 -128310832345770030393318335850741760 3362146990967880322693430962552832 8196518399751692227284047449030656 -514470185602326762102661746406719488 2854939871947651759864529727520768 1448384884685766052252187667464192 -169113268799803288116085122337341440 9071435495849362072623239971995648 194438553418658976234504441561088 -960636617406905640084833086002429952 2898113812958613975687873083473920 883548632435456710228177477173248 -2862299964731256714050928036020224 2288375877723318529461156824743936 6444241313088060543639767515922432 -990187985845337028499496457895673856 3241797003768852374627180689227776 5519898694904047340676359672299520 -824653026476850942084096373188198400 2163343864615287381979584616464384 6553713098367901287998583941890048 -856471682798917248801915361229275136 9894530304166397819120125523001344 1020297039958332473111435842420736 -63694334011437258415947448533909504 9520171660289520658161293605208064 9328504378992221075666076723838976 -661836004033945733006468214457106432 4487473269394229114511662338015232 8840743409770054052828877321928704 -604961303145035319962593241277136896 3548108579815918711477627638513664 4176464118722386701589500676538368 -224666234616746983349347741593501696 7866694002853305186548623494610944 6331448121084708649269536825016320 -429526061698162390808956447473270784 1966095952505059646638198408347648 4210361704508153276127281921654784 -108219357634895387410107493276188672 9481496851592781154771566975778816 3010200155684456355401280004292608 -871155791349928194562165537996013568 3326589488485796151142152123973632 4501026146576176775316206436483072 -92786046381266079097906610850234368 5502235271468841771283295827394560 8703329392464442267628221382000640 -664109772455524577942980058633207808 6404242740585051606948741793185792 3220855548303076633203194434945024 -309497539875388049006879015182532608 5942488872897108117182874816348160 4442533191431671299340141389152256 -946014007341115642777673157906006016 2421979891293333860984183567941632 2877222328433770585473570459090944 -377798728673913486742615014204506112 5462012180536645906799329510686720 1077850070873440594938872098455552 -832457213549405739154223441022812160 5655144832193837930270775245275136 4795375641254277171324202191421440 -820633686159979087990103841982906368 5206963105193471540762929480597504 9813384601406624938394445269696512 -839022325351921007598201596368912384 5183213328834189234998573327712256 5342681917805580165738636184125440 -511610658583359669539848320337313792 1832719616547609397220149611724800 548137525849477825874714941194240 -501727847689271835623884538605731840 2976253059471475069963567399698432 4778267201708102035326242285158400 -803173078289814816212044888500338688 8081583707755888701615813966168064 9601363794123825833319085400653824 -759545226169378292728206473778167808 4063986686264043883571515033124864 1085431778615811542037224038072320 -266628997182551521057929218270167040 9056568349277546835180287311216640 8493903214452934685093901432258560 -519486739783268838929375570794905600 1714584325778568752355188892762112 4222682488833255563950141325967360 -732033701985358641988791436237078528 6554017179147761012752097587757056 4054315472709294997736469466972160 -302416045394149154172826598456164352 3558561148505195171951817510617088 6076333094803012753941346329296896 -333482182604027952162469368918179840 3413628471570709268970489216237568 2548870550446708322538857821110272 -401671234107200695432390680837619712 5833321153135063508398375616643072 4695180682474788784312038534938624 -300401009648474175751190228599046144 8511886334848832919201572586520576 1999952794646499161314655570231296 -349477650835316506756588055272882176 801526391353037021977214458003456 7231445175464058932940780771213312 -677142400147999742499775458222014464 4442366893352978060432455902429184 4684697982031355041168475614609408 -928758052406294429962291051306680320 8172600842418989872335854686437376 7604071033238896745961216005898240 -793707877937907051116385333380382720 7103057167485151699343340321374208 1930783458494165198271561928278016 -912297887853948451886401596057190400 5619115916262537294984027465318400 7504678771594116194585019206860800 -494098899859328370059833895410466816 2332387400212064888645073787420672 1583560287768002376562769810948096 -764575376466122837275389523646218240 6157593859775034538726376180023296 8947285329259376175013547745476608 -131427875491607227380324096542769152 1541301960144389186120834254635008 5699547797470401601898569562849280 -323693336075702539799543802505461760 6420054418127641523881666485944320 9593971083426192167098239160418304 -50856601412093624283828551547879424 2991606944134240826641085106225152 6351859193594383610328095909740544 -649957214710342796050951413480554496 6354622632324930940612554466000896 9607536546586869784230080012091392 -804547091048853442001759625724035072 9761249421569274788701892771840000 9973886454136460540340881531600896 -867196586673259728549966462417108992 5268941404263773311924782954971136 4786235091589274542452530934185984 -928499304855285117912419591142768640 9210413973438552959153618934562816 532296975373420056543152408887296 -67488903948977965971523719093288960 84069551036858419825771559256064 7880413065998932544701868076433408 -293776367335199353439552501528395776 1391708910914841838098772192657408 1465325394358564127443195854323712 -670373574386989456421870759946747904 7786240661425421064945842970951680 9344685730541260291273466316849152 -820913430631402211848902938906853376 5065206271094510656653857975697408 3208703620983612122478469858721792 -508133569886712031740852676134436864 4580806628065694209606671751184384 2378564167011404885236403524337664 -508124468699279194414691495402536960 527934296422205653769354586619904 2066754660162584060000849331486720 -790320667366780198357413922277949440 7434726179944563627018469901336576 8748592800898639182801812328546304 -928279433182308492176737877744418816 3747022585642303454400929868021760 8202768709796730761627817855680512 -321571712875793305040003968184352768 6731674455052370024008189149708288 7989322503670886853519659178655744 -262048440710068085078991007043813376 8385627500294411803366347021221888 5283538353540670366880216670797824 -169351515828896760556560934741475328 1961143429897028219161701351686144 9326076586539839283168137684451328 -594525907714215052939815457006813184 7813671896877177993872074248028160 4468535824363034290020402688163840 -980340214240631570280932022765486080 1278115639011545241430881275478016 4202395747273987873217815188078592 -570487028679132306730468693053014016 1750714063177612260537018546651136 759890231198172424104255386812416 -293340756074548467378193072184623104 6282024777242289656752493020839936 3283988939858905930569438963171328 -412717119348351359478361500531294208 1422897046157374200920239067103232 7679379982869107799471343645229056 -253011979417980323079050394966425600 439342702241694490571303938949120 9410305429647465222511791320334336 -895385067645089074322797233319182336 1194993319064333321576285676240896 5229111986566313293274360762597376 -53170765892737187211154061478854656 8377466301374626571892352671023104 8747029694528511144609247683149824 -113597760495204102566824364359024640 4503189866550487645225182767874048 9143653755727965889525236841316352 -86836626887693204705897004046221312 5700154040196970928922723342090240 2276547112056860607238787806789632 -303377874616206816355717951384453120 2558651620820093787371133055533056 4473955944276849711475756976046080 -967315947655128049611870926909997056 4526654458766370133271897628999680 5926763918872887194392953119309824 -304328934938488495013454202397523968 1876164835542319434142713041125376 9952539840064724135244354857992192 -915631607719108677947750957176586240 5246372603114728715681429964455936 7246175939346324886212494969798656 -237359232314382451042315608784896000 4821142523691170305796118396534784 4912143838018076079965496565301248 -326754916240840881963606599926808576 8671295699559184695374562065383424 1477214750565149671291570186354688 -450498775939491593977775980464308224 98035229873068237551626558111744 6892259936529838911338058077962240 -115157705031226319658412624821878784 1676017711425667430435487980978176 709453332354593115655999596789760 -677432915509074737195553298736742400 560076727068129881383451962114048 3931562561110611475516487907672064 -379088537059537374156999946942808064 1906737830845906699709655063461888 3433079418451657644384420899061760 -357333870693235561381432413290233856 624743374173577788771438478491648 232165414154679170913177822035968 -445450436458047307775604533370028032 6729264080998336121271135768674304 6828824320062872244044486657703936 -945477584049003473763152250949074944 3086988582937161008799035015823360 8581495885821248794746990968700928 -693258609998380441292772880150429696 8159390404209531762456577842348032 5784679919688389306858362414039040 -62183862186780510512212552567488512 154278303392186261837885825089536 3005002745877486323345891140829184 -941915787825100675549366538920263680 8676645702388142826169183284232192 4386703114564939104553296226942976 -421694987116651906095009940258160640 948126115315431863953226175873024 778948723671731663476992340131840 -521668787540533474015009767059095552 7151361327014341303630145876131840 1070187755428295860321407744344064 -348685533560007687738114749581230080 5329384051571320235681579616174080 7072102811700941443200335954837504 -295494038208900963377530390880190464 4012125569015622089574859187159040 9235918028404211078337873057939456 -468683413025917941833979722161192960 7411941227995732994349163668832256 3998033348700766075292563963641856 -614937561451006839781359244804096000 2882641364606343650481384334557184 7158339634943146809250084408000512 -6568787074897499835562419323666432 2627314097312844025758256728113152 3903859548772250457480856678170624 -794820191874246192347970196272578560 3747878325361598546877396461551616 3880661520340336257869684253130752 -996989060024996989861169038178123776 5838797723466173166810951271317504 890864238355787651871253391736832 -840263796604602744710724397884768256 4658413057020176704071840909230080 8105333563945869051067396868014080 -643705696804866343696441466805026816 8840961798725783539408115679100928 4637542068642160968460166313803776 -129569105707937914616551589709611008 1655668264046780708773442502000640 6213818154877530750501899699486720 -15089129460409574093399499336581120 2221620546083553915988996878499840 7917945340561175502726163488309248 -77200351134146849151893616650616832 4505731011193937974900551262928896 8745818303578056228602828139003904 -215599153047855557355417929523396608 9117497611799592237322077929996288 7768380545694183778123106337423360 -824328687910232121302221993313042432 8866008777683691475288403075923968 6555430932958188369335960423366656 -541446401677537251058168267714592768 3990699863868369603578850120302592 8027436955714563459005218551758848 -294110560664813701100771280219537408 9654084249265760362911320686723072 1907554222275879158610855905460224 -417370625936006103558703308248973312 4391692484843169384290288121413632 7680621918541055092641420013469696 -906606665837416053281270703893512192 8687187822090740603422622921785344 2318609897142529822107511608573952 -830897268098575264737121784704270336 4536183341186393947182817160986624 9470072108588048236182831166914560 -572816715994602660241703149313720320 9981098911445169538201598159749120 117582270208131654403095644864512 -205620795956416320330907947011932160 4797963804863055719401120528859136 492552644743032939151093879799808 -99521271453443649282132015029682176 3729363578606963394425313441087488 5639554658296388708553258568777728 -569088171675934891329602592184467456 2315290490531083245544234779934720 8284413856294237196581051440300032 -669858890245887810881741890321907712 7375026537287943115487572255571968 6842108432089847601099067187265536 -318927873149033078544301229848133632 8033424231080592380096671008161792 9252735579510515497702882650619904 -583496843132471731877174139265482752 4972910689278316567910656180748288 4785538729877269239163811453206528 -373602463301778690322416897905131520 43631687793617784858781587341312 2396286357246345263183380063715328 -600600619725532348459111945951248384 2286692760105685887019186793742336 7055131484082028413398709088288768 -276668883744750172101694801921966080 1831589709833396747791667405258752 9366719663265081359180313269370880 -881437061469519504299654317529366528 7268995404112449518800271826747392 6697374900524138398041604072931328 -311237048200887604448626540439142400 5031415696161965787113983653707776 1758053324428150164016264449622016 -127066334370802580581716217869369344 4723072787106633807518134297427968 1069782489363935439284730217889792 -614717136173922242176800944321200128 2119571070620116812051552887898112 6892241475831806351734174237327360 -698781297977091768296733165188284416 784788264458889337198446181875712 1167307287581691779510542979301376 -657714987389228267760169893234737152 9333681637998654257573013238054912 4266573786605911617361030498222080 -335286252337651577614002854301794304 4591074026615105511172058325712896 8276978008791551725972306930958336 -394666976257765763884247799050534912 6954425407456271337100672822673408 7729514408152217741653450596286464 -699521759720013292844830743804772352 5381598555871452855820606972624896 1633660533370458828397976985010176 -592801300229117139467767440367157248 1593665209038765684365613974159360 7376772090552986082169643662835712 -282503464322871062693997120480870400 6134482841899960821988584761327616 7491334391402214361494289670733824 -758956516300299503658765003526242304 8885878224410546534118553620054016 3214426018011559370374022443302912 -8038598458469514858348370481643520 1389480911634049736927617170276352 7079553486390714767507758526758912 -387187082516640959697100945353605120 7852927142354056778673959282409472 9004736396783094814254475247616 -592842776811130501211452490934910976 685573654230336504096654148763648 9834395038013021157518752775929856 -683155424277475854749572301032783872 1916042630775169492107741756391424 9677355234643118409207108840980480 -922526361647649826817818861674430464 3379624505868270910566583687446528 3906803647598247023521514389504000 -377950901800594770749726797405880320 7928452465409881758866446544273408 3629894103278264962635488565395456 -105339145157922463515664255708823552 7551022972416385378353317792448512 4155790395269134441736988446949376 -746090057488281704826324465836097536 6457757221327557657117313921449984 9194816785825152756284768676478976 -47393578239542806986022933529362432 7505316920664652437521725774626816 5636174200631095428902343397081088 -106861693671898153969707493011488768 5442096172305766399120037503827968 640040671728745401997392019980288 -865047101252124586886364895935201280 2337730974163455532652336592715776 9271572278248052429367379658539008 -798526715489966071527307112943190016 5370913415789761922708965599215616 4500881339397617926724697093832704 -661618756380337559547749560844550144 9070711037831995158124643934535680 8965156944175690649723210649567232 -8665418514920081841042487297179648 4954392025026675632815819441831936 311633576216211772250931903594496 -220665388656836388790344586792796160 5073367439334179583117657697681408 537567110342769692959083717459968 -353546952447224526457645231849340928 6711617147225013920800192419856384 5040456816661815233928159022809088 -473506328072999966458258388573749248 6282306106853116071170085780193280 1838695635273066538170314569809920 -760089554495009765623235932627927040 5615317164510900710750282856792064 3798075976890064533575464774533120 -723848936329859014394480534147301376 5840527556144397739270700026298368 6150880592898116052748116481277952 -732728231018262519140384395378032640 2054192781810884825569885851484160 7966908826843073036413889450868736 -426214608368048793946303138384314368 1585756112136818047993317706170368 2768008377095942498766868784873472 -627190938783285169669829951110512640 8800823579943859980590328242503680 1089329727749534832218976074858496 -654863679626196044800992880776708096 8407870517899072317113437622632448 7671634664956265051716252912844800 -239233971651240231972261352955707392 314067881877486815214248824668160 4401661482333899261296697101254656 -285616672420321031337576017508171776 338383286300287675712382703763456 3877488023119155167090790065242112 -468747110442593505016460778665934848 6843734139873609504190498336669696 5277670851534252552989933737869312 -820279174339854489549969509805195264 5184860478367503213268396197019648 4753035568379454331656366853193728 -612124402515452337993088889614499840 835374927225307678846321220911104 1190585648887558572793054640472064 -876583494245287185023428071346143232 8150022995157611341317510906511360 4284788256514465761169092930174976 -944518684788707166076582078703468544 8336795364783699109749370761773056 5969181572300797446892021293776896 -64375383474311759525133600948224000 1946232778046792452051682036023296 9365372908797685637402917649514496 -443553133854163821759897970386403328 1462955636571778136216652071567360 8265819844988839235189359463366656 -809378770980892056262431319498162176 1666278347165599398615198235361280 2085904432141106669706703712288768 -422968157789082278235314787463462912 2902922358823386445136057111412736 6914495650327664813828350106664960 -970321719791873081238679207641350144 6154971914034885455426595936272384 3592744299117381737290517872377856 -46881820530063315772727145042804736 2136354881036608094567866652688384 6813396210476733327521843251249152 -76645085067499497090889967625830400 5789652312163311531424612377165824 8214156265889801188555818625138688 -589158657441482546189072056329437184 7661308318422847008562832583163904 5117709554659849172715304793407488 -93864874794541277758753479449378816 9931773102510037557068665150504960 9701747634780624665353178165805056 -847511053428306197573481810781798400 3012075564616305327613088249151488 5313613849963183494931665171513344 -545894491019191394969775946648780800 2917635756510298388699004752887808 7468141881581874614336447175458816 -702125804682077106737064164949229568 1394359590001729330563770958741504 2701394860821778719021124217208832 -626362282577359395396657545304080384 6972984189072302474543958522331136 4183868092165420177696698348339200 -124074468272004748858614787994550272 3685764969887493238124850647662592 7687737989252351007769835071340544 -219774198982865726922176343150952448 4889194479196003931843793745084416 7778768696938462512615221555625984 -452464437274588774271981579476664320 4882508531840355147999361351286784 3478120638652959420488187948040192 -427674091584995876788720401221943296 7643577264708058153849261972783104 1027913991203921893630183655604224 -106775055125347671130890804607844352 8150080457194476825411297344487424 6047845124499292301607045823463424 -687403992176750512766693875677921280 7900388252548672465680347019870208 7875243121560775932106830040268800 -174600957669501902519255655564443648 7926545968359709701815153958322176 5563811996293549304765296360292352 -943438504105248686998150839791517696 1419134092067222270654354340970496 6597929631631498805532505076137984 -584874028765103364595307066356137984 7529727767686341189066758178209792 5097058565509366864697201101111296 -782602930984419026730962861235896320 9822276828412278395396147745128448 2152592831902896829373335811915776 -682708773300205732687797282081341440 258476361633284748002170945667072 4646710703851088438633384952987648 -325799378320366616299852254299553792 8841673704496947791043191965220864 923433221810845315112546118664192 -20496875777934192264755019474010112 8649318515052569005367405181927424 1381613608385142782248527637512192 -798928834937406220379238375138263040 1165401756052924110482443765547008 2106240825318518860355448759910400 -172362367018462001897296287485657088 3569792475012914311792017828478976 7826959054524306168087688379367424 -714138500202254042022315219792953344 9735002455597238365183887143862272 1752842054559696291492518749536256 -609419023657906379702026343909687296 6058701636019596298488394459119616 2540482475273739634452946229395456 -963344222025850238502371893358624768 1757949756744365095994557454090240 5942464348742460331240071691763712 -635088445986856982137163844130177024 2357151262759683887908598486925312 9841635993832989514714548258471936 -707551229215634167654467704815878144 3496929842945765244082950823215104 7801695362899320089664048854990848 -17462380188522505090635830443114496 9013712069778482765533559379722240 191677088776673050064490248273920 -422051081073302119119230909898817536 5885781375069436353061748004093952 9116785791963949159202897746984960 -647819446825858292165264638449025024 6476867586708938605754481033347072 3474603930331808203944627860930560 -38155975178056717513359819444060160 5155280819799482520713650593857536 3736029347534371164486185837920256 -41743462147129672081810105542115328 2624503648774207207040518484656128 2052678160434546439940876760252416 -553091216383705088201147466093953024 9664305635812801629592814973091840 557121638721354497636335840395264 -381881551865836635958601688689934336 5460982513504206506659297900888064 4720707904629231484926850425159680 -116003470813711393818983217768693760 3102336159994609532603816405368832 9133436414055010418528439213490176 -527776400645527702671031381834858496 1725046442535451015754150234292224 3962586275666049664607252067123200 -532578804595859220350576429855932416 2953863236024404659151105677066240 3787080875204384107379787189714944 -329635663001868828580068759059824640 655577457695317282996173659963392 5635138992015992782135790940454912 -940345269001002040422109164427280384 333817146934006538211235429613568 2472914692672100021199291593785344 -450255311841616647919320667554578432 6560764920452831412183886481850368 4734828009385063754678468033380352 -73361246601832678758455812403757056 8871110017258262329005168696229888 663115334731654125232139504975872 -963493827873577765188764513855340544 4653862420271500719422586258194432 5593727523765561119519958647177216 -471656782312683045296006327309434880 7709305439091745590234055226425344 3501123770745543443067503829319680 -973709114849477120681424677305843712 6712943948942408083964769100365824 3029457377507040158912116802191360 -738030224122790572823968687035777024 2312727007685933258875348415676416 7499174198602191303472457596272640 -937366728345839595954097925514067968 8295922944918679683347669388886016 9421159666226882875636477037903872 -141118850525067489302211778914025472 128535252813157967825435130593280 8401397479276724112624368905879552 -508340294617319594318831935316557824 6149890872807234574134503463190528 5594309546242217507833199661678592 -248482406177867987178136929304576000 9922695241798389159473320126578688 8398523390077181477000605260054528 -596183672364443357326364263992786944 16651424899657246989868188303360 6358741397307636187709460275265536 -871419418126979594926652587667095552 9287374697813919020559493266145280 9385137651896520832863582443012096 -482247510248675996459093301305278464 8641375206185651804315698579111936 2691555018992044805555276467929088 -441799586994771102129259754660298752 6900322974262402003297323421007872 9513487849736240858662499711451136 -878751759570655761734256634114342912 1570928932425237096644511421956096 2271207243738088660751467637899264 -238720759695974204964032200126234624 3073848490543211786126319278882816 8175759561603662542250093718798336 -788450019180307065179629351807746048 9374890130923026109842695575830528 2951676500813676631427516758753280 -496975161512272967014699424693616640 1443136392568919454747476327661568 2695764470932305876548834646032384 -51151768122744020631870397871030272 257375332509153663109580437061632 1438913475064046798186392961679360 -254078662591360131240551627039440896 2983152113610956842395235363323904 6032281098842146600433842489655296 -492936130989462768501202803151077376 9802546162192308699500460455755776 7700598056798344293406588912271360 -366848408645231482707417167994814464 9265996677905275195647423433146368 7646162439556291981357677933494272 -884448203566112755876978660523114496 2304198222411484821473990937673728 6348083209878046577235546054066176 -499231831237063203685175271947763712 6645873847854328066235004704784384 219888145869435191472030778130432 -909639409983866618840263240777203712 5925070680558917855387850496802816 5331079495756914068203695278915584 -826819833111485728419174887018463232 559213634391417358109244106211328 1271994966664098318324913070407680 -494321441412317285386663712071352320 5434062441996887864320884373192704 1257658322716434201724505670287360 -897915907160115969319363584974651392 2767442861147436296641774436220928 1516744976605983121567907101802496 -573887585089015218111418575003582464 8295085443271593295443946379411456 6078428415422674787369265747984384 -996735681358768360009223763004489728 7652740458083694768038281236971520 6630815473790860185059017244016640 -122006265542545746811511954684772352 5416399216612218162924206241611776 6962083697946009090559365592645632 -608949862318949995385105973531115520 4580830763828295464550697946578944 1297501503778415649848229070110720 -150766075829791643035679417979371520 1372153544391932081979517334192128 4413677114347550915722611886391296 -238845251557767633144972468167901184 3979454181448719326101062398509056 966802539593532289305978377076736 -894115880467165173246594131861438464 2820995772204241552910818603958272 3304361667989805164886431325224960 -551082849032331170509169111519461376 559561143671414232233475965976576 3977152566658227852326520601182208 -178033097258296750470830858228989952 8106043506389912199318465824161792 7629915649785445062663378460213248 -225334537545357770125099835209023488 7623426014042807246704588726730752 1645668307419006664600679595638784 -510279280530013646495946601626861568 3220509233275135527475201871708160 8435021393918018697997108195098624 -784153803008151962727976846189658112 4495660991132514909784578501640192 7769664704852774529437827841654784 -132395342730348795189906036678983680 2921315390414164656201878537764864 2493159772612018665747380694941696 -743080059250134740010038313145597952 5936764845678677393171124232126464 7750852478066893233046271767347200 -279617337027160228791680928453754880 9174246560986425155366194323128320 1272650563208898266134443615846400 -567902674837814891669067947296423936 4368296146134393168319611257487360 1706497781615756286643620974428160 -582854457300817560619538681654411264 7548708992668788033960303568879616 2632815729090604436274775242833920 -946383767344148287393154560801374208 7900280088884949436299011323592704 4277813224384676464848034785656832 -648861904234948339907414762723475456 8086745679061515813053567843958784 8867377825858816161388558899216384 -896898177594088160455065332957052928 1384230147628730954653962954866688 6188096314264990055156586817519616 -708659330545673056278771773929947136 9395034641096946883900740185620480 8982127756025479441327126860529664 -426396783756860497084050483183616000 8033281450193589896535635698647040 7136135119774457763835945794142208 -453282151599487245393574556149481472 7707198768186965109924581557141504 1286052562046648376396821500526592 -819580701382940981095584864732708864 6595628214891543776215101295558656 1895756426507903038154298443694080 -932939905056502708641111170072182784 1868836698898663692908417999962112 1888263543749539547993981247815680 -451587392715321435912827660536905728 1393576263831052565242863308242944 2464936187848344730814836474118144 -418678275858887396370125225073836032 8208926802443106421826325489647616 1534446543317017849482945734115328 -953674663945897944625865464884494336 1852999697446243269170816952041472 1174850899594615393326448246784000 -112758866913550077392590921099378688 5154313809436080701056682356113408 7103659726101977598046466723545088 -919868707123451717256715851318427648 3219807285486499455423341546962944 4427040738126406111929466903068672 -487614102791561564045760823344234496 8849414440243705812177712427565056 6729515891321088587562796019875840 -720593747551203596413606493121675264 9099568995360127036524619341234176 7456587362741029698679935153995776 -147432380499763327859382838609575936 1459924573287108666991925432156160 7756749872335375927926504411889664 -100816958007575564849706728832368640 1288998995725549794779503425224704 3025453845159416096696590959378432 -861474992506834409248347011642556416 8630512516041307474622110979063808 1515534713890739237067152573857792 -639607813896264109612529063515127808 7429213762801386711269873788387328 6773977981109319023115342243168256 -699389814902817685708372037345476608 2122332328054327635853752947179520 3091483412414744125426960378626048 -760696628070303048735591064305401856 4019917258090978623176700166406144 9222157202285659631731992520818688 -178165528813963679989324020688355328 8565951591892477107713268426735616 8238974006113920687072323043328000 -307457027156035332171419981596065792 2910759576416303696835085674217472 6034903695437522834124261612847104 -443729829797633056329900802288123904 2759037706817586816959731208290304 3648405996358458883172749736411136 -296594253680796698069003614321377280 309006451105956487584080359063552 5459485437903294582681236649541632 -862547082290292226981327110825574400 8496059925367905908088194788753408 2455842526719179895309942048948224 -980078719529398245839458092101664768 3694161039715867849488466263932928 9253830297976918145096372354809856 -670486555583605936847149995533533184 981548202784556629126593676050432 3747085572395568250158972500180992 -1398895818643319875524269512327168 225770020654047897818180672815104 3151217191862250374490453734064128 -123969518009770902141754288566697984 9174202464764795983893850084081664 4644113406590253283561006883143680 -151570108623329948651294578154930176 8933350876680004279522410178281472 3217810350128102706123090083971072 -41671622000182012867826198788440064 8818274159058413180788018467831808 8653948784825377100696189478633472 -685813713986264621647105018019446784 8882045890026290537014865386536960 4317920216909762461719074980233216 -911013436238007072786127645858332672 5750694955028399768516072048689152 8712140414563300606479498488053760 -284937780168268620948736426152820736 8634936249098781010089010276597760 6033738101572639302964588597739520 -220203463886458439874186511330050048 5613820124246715849558314536927232 6909108155078103233750512221290496 -668942223903175268865078539151474688 521176967056188316201477243666432 4338562143081646323539170927050752 -118305939227892749448800977922555904 5942122678845037484396859191459840 3125937406676449780833703623131136 -699885921726471842654088387870326784 2917851482133095576983555566206976 3663877080035840798872998630129664 -128711278721111567256785780685668352 6427017943363329003782556165865472 3570131280474457427429822394531840 -209876539848779651134360226891825152 1801508383185550556212884876034048 59791043434836474926103256891392 -15339756361207442102449281125318656 9947509147408613060409384555773952 3022690836262469525250937741901824 -652014338457621525261423932438740992 8899742091682320023027468260605952 2804273266147538574675358825578496 -901862046474898131428389620721647616 8437290944307346937806959635595264 9341985333819384931095761081335808 -268895050111907598067431877157847040 5431174273162448809881582159527936 5749635846934387576918780267200512 -785355830673719054248770764567216128 4395672011857682040135808475725824 5671959775222617225689807982690304 -933371258475664551089783787319459840 7324772088391689435752029449355264 9823025049218251596749486650556416 -575944818947243500502315601689051136 1269384920710724834060509693083648 1689476472294474135723981303447552 -768744242430243186860556021208711168 8449513791519265042581258250485760 1874148768711983151515697252663296 -105386273716917195796683589117018112 7168812931562317544551578844790784 8017940727190699148811495909883904 -282761562119120351498699328884572160 7513769347265773754411167550275584 7220765477215657702891834165952512 -600078173172079373194488819178536960 2164771185343900789938619255095296 9605040122996771382104902917423104 -2513011648211409541043590090719232 2644503847620013835602898953699328 3207205968253341620900051785089024 -456300637455341250944297709722402816 8613015751449139240882658812624896 8033087628438264498904554018963456 -716541371189637191704178811054587904 582938363117901858278339678044160 325073426634704687246148099899392 -742752551340062306160046616898174976 969923559149832100119115605213184 9919082369349664776723567667576832 -195424538841277584047025918102732800 2217255883886539451190078576001024 7652790034527753423195252459569152 -15359744679128708066322368388136960 9104318504252960025954538833838080 5811375704549584759324750366375936 -890094165782516045197909533248192512 3491286070374792154026954400464896 1647801120459267823856173405175808 -185254387144647938984151160874598400 3381742381210631308577858815787008 921057583199930420246608225501184 -44784505445058123377005527444750336 6203791251702481684054216663891968 8248682908535603932717884328902656 -780665990341981200356928267350966272 5152825238154871773500100306796544 1571680343094705910241586915049472 -691075891930975314659170606955626496 8578464144053648299726893953843200 4375274952966059553635748095721472 -144604946713567105076000281851854848 5726988530390969070098264530878464 409513858294707724502160189161472 -989221592839397088443166845202071552 384689680035781216596492785025024 3544334151115980174432956550479872 -201191001000268460015565981549068288 4421593094535958531750716422225920 9802727938313318671879719794769920 -479678604561721751085715878876020736 2327643868840325087347049020522496 2173971703769718984581654887006208 -927776212016123405533570057967239168 5562184821033113883689464599937024 1679198666010253784173955671654400 -192523155692507867676712469195128832 8754775933468789172983842956378112 1709843229009107635193390569619456 -276297016676227036096235236963123200 7691486631924539610765128542191616 1115152627717708582858280948203520 -725144933576267249398834825850257408 2072587773676372286875003779022848 7319661033629718519638970588987392 -290586781687251064672174371378298880 3185723487261180169829997304872960 4946574569842248123805713995661312 -366129936940238607262857493743665152 2581641661926260385333770702553088 1097169407572435075804526804992000 -150898880948036824457648641216086016 9395878304501806210889923686301696 2569796136425709234578158616838144 -364110363325817285060051585468465152 7339111368044582407587957124890624 286921294881329497556987607515136 -438718808737504422814856689578147840 319292881377933850969999218311168 7307300693807519288506565716344832 -252675671657661096296341182955388928 3784496257566829322369862597607424 3319580681933663830435235784294400 -979055656043880031860534438334038016 188159829349668190665320341438464 5101055285243989108054370663006208 -219813892991703045855997802642931712 3453061277871682255487915775754240 4763336337697097384508133667241984 -801565989709819985350767321710329856 6568117932858239441447512229019648 8232369030277800055370571250139136 -188109709837337516230429828825743360 7334048139712149653344948896923648 3608883018869055463877886070489088 -976737247216848976775510678520725504 3294510293242466193609128000094208 5467848084760443562706352925048832 -972340905883418668180621285797134336 5687726977308771323041386269245440 3847393487265052861895041882259456 -365452684030322032488378022450167808 6269848783229481129637373699686400 6084068468547177962778894165606400 -513915682466332762019802776298586112 1358586719608777332025395152683008 2778886393330232103090818933325824 -635645285605071187205483875371319296 996602840535290084233196175622144 6507261001001703334320471430660096 -73180145445822778618029495287808000 946490785738194864570801120608256 1113036028062300973619253377761280 -933327312755225296926519585560068096 7522446884843490410221143433674752 6802900924054568475129478970867712 -158907417933809178899579090486951936 8137300928281999944624836391731200 5351468051933033327604592386506752 -63030518645981492942062243895312384 9213861815786512263234691270705152 9992510847449544379528946764480512 -880054022203511864993848833381236736 3312296269985854952867148857344000 4439755137378424929862072762630144 -737958456666430637970674724754161664 3705447019079979340105003470684160 9594650620891457761075982426439680 -228564659723403472619941360509648896 6542621514836058172473884436070400 1302875906437358883065568184762368 -699175823853420722872662216719466496 4350740121944454682001726658052096 8725131591940174534915559948025856 -877990735815520359190074348491767808 5956381487329470944153057196244992 3860042517364520638833617008590848 -88854553794764155988877931326734336 5820361949567218000331448590008320 1458626452713460474092328931295232 -118894092427919754203326794241671168 6612907069512167326734161778049024 954864041433101768643157602336768 -864424431846480847553734985562193920 4574277997089052363594171808743424 6804262401303063137579809843970048 -519354968107584403695483957966536704 6460512112848631355862227691241472 7272494806150266387141931258871808 -134553299369405023241201972364181504 7568368811117976974499649071087616 3610344523934935425802728003076096 -900848673516342720108554986501177344 4252559955912550422857775616884736 2011689975299057367267443960971264 -737153751107680261400541597068689408 5423211022306969702429147309015040 3296111088479532050376722185453568 -30110069320700920747212753820712960 2108642790301597067424734075944960 7303383329215797549988322551529472 -351377009444550295464997658696876032 8722692883692884659229265693245440 3543779346807019598906648529207296 -394304952142076392541967197944152064 4894915539176766357407461818761216 5259361061903264324395597798834176 -500695724271757985167999176168964096 1170633090786391786141300725645312 3925798783396960081573893122293760 -902836602911166595691345514348937216 4860839505272002205684429936918528 9829201123578480777800554486169600 -407603186861421824806316081726619648 7142088269111039446685388625674240 1756929662354822079887437222379520 -400824415706778688242576623843409920 9022234908211957490347354429063168 1605213494000161939939671735795712 -164663730122505591978575159978098688 1427021057975245136228164759977984 9215622899296864690518951024656384 -276073599481887298173708226518843392 7733260855714219197500812504858624 5059070476812478177318522668974080 -291956695176142083908148370815844352 2440120137726728946382148261117952 4482970815182821171937972387315712 -786159497109633975457672695581245440 5439098772932626470274876137537536 313053450342858884915340370771968 -196898640576557300006996912778510336 2709623143571907269068472352505856 2130151267581695191883909022351360 -67841563875218357272006696514879488 4902204081934182780636893810786304 8665511542314343125355429982371840 -63570265552617795533407973499994112 6923815952874532614963141346852864 4840163219839393266266381385465856 -28517068810059095369364998247677952 5498938295255429146401032569356288 3540340260480510599495101991354368 -738980254372391397365922835204145152 9383610736236537331486938277871616 8463837307539583317189509720834048 -110819495933051832467674167829856256 8950809623925211283959435598233600 6639855555043436526944529107910656 -86289237179421969228696475882487808 7646985866225092708221760678395904 5798721036170491757110162991611904 -874723116409956471157252795379220480 9687675308907949164577647302279168 4677496696875908157294792977416192 -475209021740896339824387281960042496 8996452190020819125797538980954112 2612814190145199691083918675542016 -948046337149826941749785110079602688 7956774810013014850647129522700288 4726646490846108008634802287673344 -388487482215582431823373312345505792 2821257224239150235862407049117696 7826270415691300617907748242194432 -380210997740967848511525108106395648 9573908782069612553333190493732864 6149732624639353279931728082763776 -379859458822981281061085302862381056 4816468501594812624317899096457216 8832813500450903340166151437025280 -302012971629559586554749839334178816 9924037988176641979169396890796032 1556767852242012587958773953331200 -737532704308786831901473449151823872 5399204065913315183699906871164928 3135772697020212966846166516891648 -372542020209582901789421438641373184 1978723803318155967790243765026816 9103006904300847300978734866104320 -122456435355911459714321596811313152 6592260634900068464005282225192960 4288706916711818094179192196300800 -413754945498050505075159089620713472 8445965488467907538811782535577600 4451520894768741057745226978820096 -373792985387652080993443998691491840 5685727791584779675783740251963392 3184581481105456428162624664895488 -773106982769904736828997826540208128 6311921300619439933609700860362752 504315060317486391462536518041600 -290668045524069855002821319387512832 2601697136855984369040652354191360 7102527688690223417556657646862336 -689188649886493692259913061606883328 989597421897188523190461757652992 8076301560884752158390935963566080 -438398528811051644342112959290408960 2378595407082094240770328438505472 9946527535536361689302974706221056 -137391975298746816009344787727515648 2038565413292745024893878121005056 2934962472897188316795713406107648 -598513373640211065067777973628698624 6392994838479925042366763359010816 8724971695111345483851253682274304 -134166044561749144394841971213991936 4674081612830096117035155733872640 7654641178715724816863289459867648 -232063377155175705938742914249129984 973753787411836714924052649607168 4264785761204896366729629676863488 -980899932295271673328685559482155008 8160519643202251885380275758170112 7551682861036385413871637085814784 -635901270960491447307031144711585792 560307649799596380986590464311296 3520702758866131426407270915768320 -838670578792329033744757563638939648 3767237931377351230168197612175360 2446174417092403430590103905370112 -777622866503570304899676101888966656 9203651876221552575005747243384832 4541775986953522949652871110459392 -278205339676676679838291208068661248 4259806189247802790887418673233920 3894409771241595094517349515001856 -5224734712680194787952435958644736 6544724108582439665069912406097920 2562300866611446435562945802928128 -534757669514568045277062167699390464 8575175486319055980456090533888000 9792559944353767377190303834308608 -826653390493917986292235987620724736 1507016201264995208075249018994688 6964986059978573936190476248940544 -87452389737087998582330747437187072 5363579283154553324283461374050304 3545271639138898210431914513268736 -914137475800598527307164286481072128 7213186658484457356337406220959744 7195011100926799939824501785624576 -240177143195111817237283945584787456 3453467784286265664322174487363584 1990873793334002040061495819108352 -124160462118614539275243458970779648 9179414901257603839079330684600320 9975606402558025506007696382361600 -139202716186678902968925587754713088 7050208577459029453933122120843264 3678489071416626663407265381351424 -685106556039937512018777706428628992 3503145175003181956883352335155200 6067512291249284528461314502164480 -483528429228483858489182446046674944 9530164580230252332936146647515136 1593075109023592611251602902220800 -874675792324454469463556289516797952 7611175147303812280111048716976128 4484792291182765064621475590307840 -975642117697792608603352392183840768 6708629217692983249897148613918720 8876702547857964495619646054989824 -240640349839897058564115607909826560 8094456327548084650116087558438912 6016968561132555390496580768366592 -259831193712076315006070251233214464 4881451970463634893866904865210368 813713201411378215219417929744384 -6413003101479734730625536869007360 197758139610177284164022173696000 928575617997079764336800356630528 -961295185953368745722841639092748288 8372676873167943859796388358389760 3657663840286826124742367924715520 -362362577014092093279159370748264448 1100784464369908971102753196605440 6180425380936913095856561462444032 -879324494061594906306584648238497792 4041833274928108978648623368634368 513907853570622567241278279385088 -1430656118817832308100236107055104 5019869004606109537591993785384960 7355785292410531736997736885518336 -124497167831967590815903396948606976 482349967543356084297117305143296 7524959091984840162372100670095360 -265426333867198098552723418067763200 2350371289683031267986680454316032 5430806066632676487956031690768384 -619360548921824837710400889219448832 4019095203806090357891347167313920 8987858666530371297916190319443968 -376927461992490793408473341242638336 8966367297483070500741025707851776 4411050517372057561405620708442112 -297082498251048559818882729887399936 1218329409526860146654481697734656 4159584042980734319637764348313600 -819723037076803818505130346670981120 2766009856041031524869296229449728 3704402607743562847789359831187456 -875238470396003008384343861578694656 4243038691965538601951397226217472 1741973690798999385506449817862144 -279121663121830007666519423749980160 1680157135269007984423809994194944 6146483789521654469285001115467776 -832299265609823456547441815305846784 5403062341330100679844004882284544 2455953171391074370684920528896 -608312243307576429217069662728093696 5833780101877799405030041446252544 7023796710367505428267686026018816 -398654901017221498351081293164314624 2496339434643388007520960023363584 4276251040646182323675786003873792 -746211551912804932878100393260744704 2383672845478915568245905154899968 1157859933891877466083804630220800 -398775964978492240861643749380325376 1697714735998222541831497834299392 3725573900595362602758658055995392 -560883832825465481727647382899785728 7077439636003760630079314603278336 3337972181479134069008626270339072 -393114085344108172930916490793713664 3541035827093944804388975000158208 6696717062770982138127761052532736 -967249394347282575129697357584662528 9990047439968161373458911499124736 8115527634024052756990150829932544 -907732899306804019658527274694606848 4068977178672657453299484162260992 1560962093259751761413032353202176 -612664975688239552560397771933220864 4656446489855615191902289636884480 1664580984146849102541933722468352 -895689945117563258441370276049453056 6974036593459926273736494863613952 3531205290787313303714893010042880 -429533798660573570769628600725405696 8015642045905346374178250407542784 2313801894674585178031393580515328 -617936952730599094863499656324710400 1472559215190330384881907203571712 1785724075919012137643511690297344 -285425969378109552695170552301617152 3014291309450806195093568374177792 8940179715433469319164546955345920 -121292389056585903336181933977632768 2034756984492224872983736235327488 5873122066216436426199031173087232 -753364247216389377933985660587212800 9929243100943932805692451947806720 6483475469870704992093687917838336 -809772972364906525364757652622540800 7098468966194205191325159786545152 8265807912917748570627788570099712 -809565361402530696479941527555014656 1049898468755935136755433785524224 2351550706824458051854341716836352 -171814945409844246442601821801283584 6070928359286964805143913776021504 9467043268041269213050015282364416 -397148295371166865397865061585780736 5236018666887833416626068971847680 6365213568553757093066171513569280 -796319110703221300011114894723121152 7019464204612005706537427330400256 9030401284897650883248361060696064 -85108437535938303031600662842441728 2385838211061760612489444632559616 3711126593969051012438895747923968 -837532360949199136205413734141657088 1620467128219715948038152760852480 5756836103603998125772128573718528 -170123532380522800410185590693167104 9955029111800352467424917042757632 6763414827967892930941144054890496 -749959473594998987184959054738882560 799754418071281338162955434328064 9116979748805377469026907650523136 -459959234311186744495145611241193472 3429816337932840891876023298162688 4354893306099904668203450974076928 -111269787202333334693044167129432064 3440298092773548485061565617274880 1043323088986172049648745055256576 -39293604451788550567967015712063488 3349031610017676831130070282141696 8501198833890735621738876798763008 -665855462436853687264910406076858368 4234458027678442731383554870083584 5965905674020182964910145797095424 -19688127079578767903042261789704192 5787159230389076165159117050085376 4627105972748505671328089195413504 -188679701308063795695599505765302272 3021585671672119200172381371891712 5253304105390808342379162303987712 -537327688234689705867038162440683520 2588177079336414852695675694481408 5807800186382943584143428638736384 -310040315654445388833528810875912192 8077829013836738049467967560744960 2000275099684716949975239734853632 -737095974190017391186063376125001728 5490337209995587142534367595724800 9832262166664940394309085145595904 -298899062252013953681673278243995648 2130292338447519037945281100382208 8726624819113339644186755841654784 -837479580573482590515297704952725504 161417773075333558765520280354816 5903657076301389121913879066050560 -279692255116792931478515201890844672 6835917486048564197134205898981376 3550609321504720298587692516507648 -288263173891747295738211529683632128 5628871070178684706575161285935104 6574623606906284021829949557047296 -31878412894756656317116550236602368 4895550154485730285081284080304128 8903176215159721816892157489840128 -716408718962458516807073191350501376 5318536604633813301399050048765952 1127888434986752182505501525803008 -655022169359724684634438248291106816 1075184873160815177238626208579584 5738591259396783885622439686701056 -538920034545623852202216378475741184 8461202408951534745144827964293120 6363487085400422490842355933904896 -845937482416398628459616135104430080 5790344822395155572788370306236416 5951171256708293347092112670195712 -202564765632396490081732667067334656 5004848000086788453163633475584000 5570047445418973268407364005920768 -881788898659748543505171679117574144 5183657679120490027398893739704320 3961639650938663456698499694854144 -741569133197225229050439301018419200 1446681332281537788767226560512000 415561951327316815019070447419392 -636495203113430800859855747666673664 855135184855018396953650235703296 4869016926733880581834289136533504 -914310643857817809598356359605125120 3998793830057857963620889396248576 3138093503194665076606219300372480 -359250209752962301063190766162018304 3784715760943916893946083691986944 7602155611348644755044444699361280 -829124345255659987771036224874086400 3169411164019776517912819904020480 8351292677687671266986414238072832 -772989022971390839372254051410378752 5942526673879057171473880145985536 1364796771098498469077614413742080 -809271709208220509691636157685694464 5339134141284784246535952602759168 6326290530842217678620128220020736 -280132843904273401670844114152718336 6488932936357577263201973832777728 7296061592217808244887723863703552 -409350045541265137613617547100291072 516919587332815914566914500722688 379795021670513669857330805604352 -355205809735499630034136552389476352 8737240162881176104057085282484224 622261268106268870164471586226176 -699379088333546440785006284765134848 823764393905597458931645180542976 2957563186495027570466306966683648 -780798966146665937381426546220204032 4604854593619270278346442113286144 8387282206940508046924083292536832 -955264137645357443099526689072349184 6582985062563791896849704844001280 4671392845722786640396892868968448 -794493660361383490295882814412816384 9759210173736301266366013089251328 3115160488186937191766131881279488 -508533032804565233553254796687835136 8252214115563816133468211451527168 6474889506545448688571578121715712 -542430872682159399114614123605786624 5063035385451879076134593669103616 617269587550425255942317880115200 -110279769116600130840332314251100160 7802104386799290350084214677831680 9011759910728846847514466915975168 -353655957354289440209073700723490816 7372172095329465692540164349362176 8616081164837294193045939446349824 -209270412615549202910637292034981888 8875519124231595443684110321582080 3579393140045004802344456753774592 -923645170692102481952428382239064064 5330426215594552818493411075031040 2588100863458216714061811168575488 -570693427537421729562510768421732352 1239903423329928010402750007345152 8838210835463153546135789409140736 -542799467661493941070484872817016832 6835120471687447379528614376636416 7418557127335785184851008264601600 -107814181554698930086914766189625344 1654327494809502515430807650172928 2091173296080116797142077093707776 -799119859406988390495951565612908544 7415609806361976932234103407771648 6315960724273098775297867158388736 -820314043103056811432845166705115136 9333963193287718974239842448179200 5959418792202612837302351834382336 -697849813609787696700144216050761728 3883903578181762041826404781260800 250738098877949190822278247481344 -730897679543544039105513835917737984 1675468850905268426121655407869952 1064702627126273782848325066686464 -962048593897072714896143835339948032 9935927402691047126971945043623936 6455731380751374098782152543961088 -930970245351793501067343397210030080 1411472493494150792412389867257856 4323564014056026421113587463356416 -184818722673721714933360560525279232 7003601882302164611527227694120960 5292069418412616482274887673577472 -606001929825493336175173911512612864 9146023240290134203221213347577856 1686546826077368956588145487380480 -479614634178067306520472368848044032 769034555565051709625441110196224 8618059816025314369853759095308288 -193921266325097202766741151661686784 8324077689732664658978636818284544 7437203557998243381102402621931520 -688454547690796200031522413554434048 7608426307029698324675678668062720 5082982250018012742585684267630592 -675217243907849018923057049776422912 925407731427819879313998845313024 9355204343813605236010089558573056 -611559126034735201261350538398662656 6502665706164107801463730565283840 3737035006181286440420372675297280 -468195134870379789314527615533449216 1795410804301017768249747394527232 5069839761410927786932811971166208 -892465252399787890078422083162865664 9830095287507249064245062247907328 2930894475558185135704149021687808 -712828227030136160888633301349171200 7186516863806373141588460166971392 31576945378535404135168451018752 -632469946132621616603953252853088256 4922858382220411243043732339032064 7004910410610621277950710948823040 -174652497265988430584778508703105024 1272785541386205114627293970432000 3217972623251389107987192062410752 -869683994356781720738399253992308736 9216246844407837795894767671836672 1551200393850397943356568629149696 -763389487499920318315052887548362752 662423346373760478313711178612736 535258457261035720176345936822272 -680152189669473763160467506154438656 5674068392588258333185538149842944 1376071272800410635079525974671360 -602912534214581163300003747553345536 5189739631062751664340727624630272 4543420850784514390718454190571520 -633830745243914049983872844416679936 3293802027087073812933192970141696 7807460215196974533625161594175488 -746151896576249937423257915023687680 954913811271084236983923552288768 7401683947090244230359189643329536 -510527759719756426546032408963055616 9162097145047522060555698290294784 2249677303185558868459343436578816 -644079303506188809124903129169526784 2494341426305188553985258839605248 6404043038005597593908642154807296 -193310743539352563546023564350062592 6392486773806845248584117060108288 3105840210215357954126847487770624 -652353699015621919070230621903126528 7064246487211375239282682975223808 5516654830344480364109732207656960 -628561962240399847016595677140484096 6546845330397275586099024515563520 4017873667584009893595912033271808 -512075199863214828462045003901829120 8977472107087433953075331671785472 8660015860429971451105322393927680 -612370021834273653480763785293594624 8518369916292093662328960887816192 2608629592443814197768895185551360 -356852300342235862905175236958748672 2757263199184177608408726979477504 8652995190876006857311971218292736 -115053511104562932208006117030100992 5968890413688719752951709925638144 5316973831400322890474294733701120 -636838157797862528764607417320210432 2944529404948490587263074849259520 7477092218427206835065231077539840 -538745683829593012195473934046461952 7985020636281426463923700211122176 1534051186084605742849897034416128 -133207021085529572820345847596187648 8717994051851621804512893219110912 446474623969300882281477531762688 -140539504380242181870654457393446912 2191802128341839976246666806165504 2215446588607016490024711302938624 -678782032658878969133371763520962560 7161661867601333912857589258911744 8512983751984894927675842766045184 -448003951806120837530721291339825152 5081166128311635880744406889791488 7536762079332576814303600388866048 -413826200910675342706662755985784832 8822198021596963968102893772341248 2618092000447168192117823705710592 -9604970161900845323050927993651200 3138496500422966463055357462708224 334080927716993629026852989304832 -337501788682923561888044490097164288 1450779524339130343640493027491840 8181452331885138822844150129360896 -444790289144938129137667449898926080 6862171444213673450300868332093440 7469231629490140815963818949607424 -438646387691309175697276898421768192 3606089486773492937388995895099392 5368423586843453395108407438999552 -904854469707943162859971847789740032 3981922828056241950696994594881536 2766108959778568825888463464169472 -757889876372232746764798737772445696 8672211787274102578192147504168960 3137073037279339752692962943827968 -773328659256377496895468420049403904 4126114758414422697325317532418048 3872460641598787940801545385279488 -378926319468304175040901631908511744 9116459558667285359226716868837376 3731051794159805866376692852850688 -537207721051476872937374205675044864 5047846194700827476561355167760384 1328588077710040927498102135324672 -800823635747968612247340114323177472 1014085976849040953613779965313024 9878649140475502838501259614355456 -526779384297840599769322755362652160 8857382360804993471392691097960448 7191677848067718145845908123680768 -44704263400897514434998904603803648 5357645220795940482090025202221056 8049626830985264325269487945252864 -292146080143328750601799411911622656 4614051902262916207947637220966400 448543051848879885484248979734528 -42290952611260010452030528260407296 4799294218568519319271987728089088 9214789196926945684488070465847296 -276635037384078052509391798799433728 8883070387001847557182631515783168 9290236121204033079707981106380800 -68730907640515517789585280686096384 5666943521361545744172481903591424 2187075232479528702349166816264192 -134431482747379516461576367147843584 1400959231462959007760648559919104 7788388464366577441958426866352128 -30229104122148305300225896132640768 2316321405622771847282158603337728 5847450365363461170023868663857152 -846438270949711606314982818749349888 4548862704142968169083742636212224 5072841696851985727400359984365568 -175225371618088056301011149663502336 8357054310889929048050128329375744 7411069009375991302858905753747456 -320462033084044644402956693919498240 7756417962369945969130874463059968 4809913943399491919930662441713664 -923523345324858656467794934716432384 5486214773112792797224305365614592 4209121053680397501697723266498560 -757749769809648238639840214244130816 7108015841089521025379225604980736 4429249951281550637149537886535680 -302938784394893424861587062782951424 9737792265193918259190570030202880 3849252933065578896830017157726208 -114500699301235842564144896256507904 5871136266226360050203940504993792 8579770756581362949817324552585216 -21095834223030982772862670388330496 1602154916196099618420571362033664 9876682109744812697568373697937408 -728723166932036501482440373886255104 2729615278693048429956508132835328 6365566318564093715326586423607296 -47596004338419964770794747132379136 3667398857216286750389970157961216 4993228538874583996280570596294656 -444780614263212820435718211459088384 948371306419106324570324873510912 2001295510344635676000537706233856 -744142520622383245607767098796277760 110922379052440016102582546071552 7286854772291497676582878179229696 -602866861891248918689345678147059712 4020096433843487523682472540766208 1016901045942905738338534514753536 -658810421310414326751114248002207744 7492075052042994885566885103927296 5016083428328199179438052463345664 -485835585482210995837942019473276928 8748240166055728819936221705797632 8345871348103748730398109165682688 -717794448038403609443629546839474176 4790146170098556623139962255048704 2536136015812204217367293214064640 -250294094787866692425892907525865472 4359082877411836442816670160912384 1845237266643989842282432216170496 -702619542657968901965331489045348352 5601084376889692487878712164876288 3395572306689641057193219569221632 -272880554963461114160934549991718912 8377349100755810067086553250791424 3316509823659805880912668795076608 -806384031660747362085067795216728064 6855174815329549055045872486711296 2471712334020126958150309015191552 -735382393231373038971514016789168128 8987631979014498158523596060753920 1167769561274026200578873620430848 -808406481561459211614222275070394368 5079146002793364026458149832622080 1619617272376962765267295713361920 -272386882922814768697497596268118016 2269661362372383690329677392510976 8492021031297222521724164515037184 -471718240777794478076534926954463232 6227355019777572005970321797545984 9949911801636060504334250180345856 -329337494409000857618209408412549120 5256340191436600931662722181890048 3855071682958410204611837400449024 -393538074448628793103391472291414016 6565108156318343347101273604227072 315595083127730766333989651218432 -967811166562073726736813588979122176 5581175841284281832338190080409600 5454640483359163902701137884610560 -896990199900524457432154939133526016 1544467673126338202000935993999360 360059364973735342968252001157120 -900951151110011446566232124628664320 8846060537681228594197477323702272 2387304143288946024274200826478592 -256790809828934638230634019493511168 6508000240107992540441066514415616 8276579140924643783749485872545792 -262480316137927495938790861989478400 1010923731611818867587641910493184 3859281352867884949321389835288576 -184984022347651409178030591765905408 5487722518911696696421876838170624 5151838284198708278120087891738624 -249873120755729284716664215237033984 6299060113995474346435552158416896 3341409207781560562847426380038144 -776469876641168979338193539623288832 7232256209548051931394292655849472 3503045378968860971790508597706752 -620793119324552568749707315017416704 1520341888975797573107042027044864 4386942601372143963291778585460736 -410150745670124772970563048784789504 4710974346019208529599140164796416 1488477261888151857008113184931840 -534044936887054248755097379071328256 9707743696848216737359837228171264 6910342309563232611009516183486464 -392286316284759088310791010114338816 138816325739156357152424788492288 6249271205433334872941959439187968 -991073342585988379432904643953295360 1218092572238735360277944983355392 2725156544676860820008535202988032 -415767638166422570267084448159760384 7934251532724919638264313509052416 6320756209831567819296558366588928 -460273403892394066846178108971679744 3882041212689948524876558579531776 8020838322820492311109066737844224 -197669976548144297497060109302366208 6305668288852327014506301480763392 9516059476136754068462581361672192 -885322821927330804522950479684042752 6097478824252892194499930227736576 8756887851208736206195464964407296 -635943103020357501836067234222440448 3285539629068937100395173598199808 5478832279808455212142697753083904 -306115847245033077504836741778898944 9286587429570945026796563533398016 6338991291054379912327339238752256 -256569907778340968072449320277770240 7482601484096031954417288942190592 6846628763609121304421079137124352 -521960006026903350180137469980180480 805050002879327320932884039073792 520545696615499998107987957776384 -645499229815451782526222775957323776 6709392924250297236794551262248960 6110768866254576752719056229892096 -696420087593003936116204276891516928 9918401849496731292105930604281856 1307221279105239514098217655468032 -633163367187177759850066274496282624 8508298299772718449785833252716544 457862662098965876042808703320064 -955970235768792733755103631290400768 5531071873182943900942280224145408 4871795559520683568852773604687872 -433741238235149436340505714211422208 1441490285335292163933284702617600 7930056263221345282711225385353216 -687529945489285556376887187338166272 1723297393897976379122255191343104 1453431135214891327785206267510784 -250060498338217052830883222116106240 1302055611324231858648038993035264 3967287624992702829674045473030144 -4780988086971852339951184218423296 6791271618423060599353451577606144 1059392314880514786980237160742912 -899268732687312494072412702924341248 5561498768754755305952824541577216 9686683105064204669077390354284544 -185893773854092028640078782070259712 564742482888660128496013994360832 3899775473134496350335378126798848 -840758819680105072796733446784286720 1938846355035797060062458962509824 6716154734428827861594301853073408 -55731334397979669456545596460498944 488806613200781601476864244711424 9987969689699216382790079828983808 -440270301535917986006869538578104320 9706770880834770129440665656885248 1317132415405618876721477183340544 -792825249037426781874466026013327360 2502658311413497535405363793231872 9969261601621651278736275942670336 -298875235050630085039065409295220736 8475205409785510182897128340193280 8129053627623158063092856136925184 -748045379311787628023069672355135488 5653437819753908518386597254660096 6202356186571990947944478208425984 -772621512045144464156764076473581568 9000905321094110302637849504120832 1111583053339629123004622744584192 -986466536854083522678430956020301824 9034814062166875056200400087547904 1591352560233527726632805693652992 -74575713639526346898648237514686464 1975670518447426337710723049717760 1610686736329261797231624053587968 -734143513487841111799435603526811648 7482609705877890281379257378668544 9803967373366142471965401400999936 -498116850036042890950485709722484736 7624280559510046786957598137516032 9271445595578476948197610149117952 -313485806762271133707444586618552320 9602523642250684814184173287768064 6654240783734265424939386975289344 -147510975996833169126662251789418496 5868370337638127726125673271525376 1741135857619472545583848042266624 -473932785850750879189306640907108352 16795189778528410578428824125440 6020074833332465391298266682884096 -777036768233826046638519375028551680 8556969769379538270560210009456640 5289176408001323070276735613272064 -256250114895295628501484634124582912 8057923744873107755561817225560064 6139238165600075600266720832389120 -875434354611314631413368873015050240 3561351937437128509380298000039936 5717476954254280757310750260723712 -612966516356023716221672212052049920 5229946256908352146937327988506624 992711424685123193864545361723392 -678403689497359170298744691983646720 1646071373716566442524953815285760 1576551654691116207435227731066880 -161009783541167888540425092157407232 5127523262063129053381007658450944 9561004288217764033870617760497664 -597655692179236910288339791719170048 4192999279447714026566329531629568 6242699056968622202379788009603072 -82384777483051588313236746293739520 5889180416153225106514316315590656 4732180139478650260222047271518208 -266846871130855639777259398518276096 4971958983481984753685135232073728 1800265366824773047970355075874816 -835128357143400409680713572593696768 7827389928484555722708392911831040 9053892396879622370179663058173952 -870336915226534602973613013646442496 4687951437704282970743723494735872 9612798774440536097531182201176064 -739792036548374822857632538735673344 8509556953837204743649124279123968 9206946351815840553882111132565504 -335349593971538626639293463081779200 9074165522370122270859785272295424 5469607617911010557561641428320256 -315475053157052099018958924209455104 2730207644491867387476655057403904 4270485357913227412690724647337984 -471803222652032100359445618872025088 9458734959374336354974997933981696 2010909555005815425683101109452800 -793031751716518981694986509963231232 5321115232384638647276810962731008 837376384837770646181781658664960 -376404599080759246224322997711273984 2896619720013420760145883337588736 6628779758115260938045962848305152 -273163561864046514293218256435019776 2980674749371128881898480314875904 1845580637405354037808918551330816 -36708221307922099228627041003765760 5035362088847924069673698607497216 9520386917689575001142097650647040 -399246498677816386656315886985543680 2224957945170292224465043841875968 560945289205834541973205323612160 -85391819539365350935373219624910848 7183736298372563050353153783365632 8960260713927760599916311211933696 -548479626806278847062481859030024192 1450272360774809754139999636291584 6430251965107793483700039652999168 -482933928596330903065044533066596352 1843565932197493158621927182434304 5540148837442446734335132160753664 -231478159741861287351710718531469312 1652779112824673187233494187638784 1845684811450398445854268277653504 -667934913439345441466993862659538944 9656374684193963941244081692213248 2879960369528614512707428327358464 -281944978462502123460346136020123648 2372708870300698295742020278288384 9197540616855607533825305752895488 -497663744740900634612950740290764800 6413987307186317804843431425474560 1121498007387640436476433760518144 -875847459345354359771258790950731776 9373754529069582156158302957862912 4378487525251942718155579241529344 -406693625666409642145958463612649472 54621805107314187070414788755456 8888032043261933285811579091156992 -363691617510149930863152382024351744 9939140658116475245597182536974336 1124412365903940265719027319439360 -327257151654725555937164570774208512 9570402716318747418991776069844992 9204489336427085311530194146689024 -605006019771214343960818758673498112 2931583315494138695255561852682240 7029274215539902737347696197107712 -457260009349134930497727936098992128 9787136502542767302055628625674240 530742278074247353730385638850560 -808495373164547609349469158816874496 4061619369184362012152876261965824 3224203195463229345441307716222976 -88690266863338309365188200216133632 913889186776120648768381387800576 6412229562439414542661509548343296 -149497388885440929391148587798233088 8344756420528991070053874050007040 7564346294594165721341763503783936 -337241739167322273453147235352051712 745902531878851679874177650655232 3492485738066130196298022546046976 -850675545790377083488320087950098432 8419758689010841903397753382240256 1364703845985000059718805384855552 -972545874726117358806410227292831744 1705308814802523930528872312864768 3020658757150230007821937621860352 -534453161929856510298294711658479616 8521547948132981545598975278579712 7759015428449414788624471579164672 -522770935716664320369332738328625152 8843339560325215048571762096734208 4206736585322162576450472911044608 -518192976578281833768290986726785024 3242488623653376863920876402245632 2019738331692073440550793246670848 -835486112987442444999035654951141376 1294837656926827424527797666709504 374441762961214109064488149843968 -119578924033842169952532858901889024 3061144233510406951568394332143616 9247457956497646094757034159243264 -784188223977924903255301671423574016 3251241761590793588372803925573632 6761778819907724185187408244899840 -579022243374579084916922112484048896 5291267766630010069543024406298624 9807653268777156951499818666033152 -918522865288039319815554340222926848 6878507428890108923265141985771520 8814906964406572258201889346158592 -890897766122925848833279064572690432 7751053669645901221416458006822912 5005707466961579241741214875123712 -355669515699049746126894869006778368 4778695483008879758292720474390528 5964271574031730454034715842183168 -778313542387778249279033999869607936 744213459711219255159522238398464 3050443438858742144952222472994816 -981442714669411979654002337294319616 8711150123447887715319464125792256 9320443243226551088756447881723904 -492346418037906634054325976092901376 8669725330823772238539961132908544 1332748022275500870118696693006336 -32328292410966559741024249390825472 5275613559022997165684054791553024 4252976228363953884793552358080512 -890312066111151476509585430684893184 3067838066458861411428137334472704 1798237149954132427065774137409536 -762348724488440661416546252684787712 9658789433206309702019306385047552 9180289219894772197772601600245760 -270317237452795199369903535361622016 3698107407826536992091922067619840 439274471705677300898833010524160 -649709310434637027242608311228432384 7535474054879973007476739660578816 9295012530545971782341251739680768 -797282564392309315379882234449231872 9319116642612104358502591591612416 3490630902059393051618725188337664 -324815381634181684689321800918630400 9454777248687571088180220860039168 6564946211675083238268330349428736 -542359352277642596019254630595690496 4921410436363690974578563105161216 8144946522282192816598058727899136 -667538313312680865037814350988967936 820449524966268663313070928429056 4112753601522161971356823365615616 -721996404942433950467134746582319104 5172283863420851803425439033065472 1647841880969859683370890596188160 -666569995272656465143844439534338048 3614290958062450242045480580153344 8608228747083293543098197190115328 -825734239992997731396931235434463232 9219901911111301703831741689495552 7957893737967887325774927479439360 -425277292142493059848008451191996416 5107749798279574651262176122109952 5470901269881797631609414499696640 -827886182437460886744201930010001408 8661704180388801106700187704754176 4786023426258613559840665774325760 -878389417557735092777969181234561024 9792948169650390390132483836346368 2634151538531188718367144373387264 -271579359663388182825481614038925312 5428219648381803640164869516296192 7168489576515386998750240483311616 -817967625598556623162116950290595840 6168828414535390224353749907800064 2254783121873802019191216194715648 -356781074374886094971824133501878272 5249837197587753737458741657206784 9436007199290163076170612478050304 -273875835963036668102568508286566400 6200893330645074370100574092787712 7023998830682975631633628214067200 -795951560671673315960439266135244800 9586100811335416279957622732357632 3511076746797131643534034474106880 -869124185671504699912524978093817856 5835155962665927639370810460733440 3834156030386648908660245719416832 -1630951836816876635138125132201984 8066631868613873898679239859765248 5123298850902089357870930174410752 -847916006686855649545441588983889920 773239706272872377674871550771200 9298508797975700789248637576151040 -736361622022209680165902856413511680 7066621645389893535197755447705600 8474235746850616870079067857092608 -173956029398962001345698405132795904 1962222248196538291008430210547712 8181379388753547922668216679137280 -904878477865664971900005491482296320 9319005639087792467254364021456896 7512693335094324386276425108291584 -23272435045171473420935753797468160 3963940355463158725604875339563008 8793739140747712093369702008487936 -333315168137367140367035347251494912 6446636878425472026344980326907904 6845238987504100037650609535451136 -674322798704735163799815766868492288 5726820514582070259314664404942848 260173921098370962605520147447808 -434367072539299783191481251440623616 7720670646221678725569080497012736 2365840890465685796950025921626112 -546466938277918113622441370901807104 3800387254915588069669602328576000 5839528522821386913489069841317888 -367115554258378529253171061969649664 4745077027067138234484188302540800 4826252632850415071951156655685632 -481987767285339769496067048887812096 4770522071084356656276951181295616 506957801608573463168977119215616 -142494529311509472052097310070407168 2176394373711600942922796940394496 3035144319167381704149274355302400 -708745049740364046946606348165447680 7500356647549918246222846333288448 647716498836669950390039981588480 -940351060983820451494855075178741760 8103818856634008627231363218538496 9000840484576949164186050989391872 -710823454270389324727558396996222976 2006662196229404880011152196632576 3347301600811794542176612590288896 -326356616196550670412147231094210560 3444591790584143274826170642726912 3634187495579923982924382694539264 -813760226509285799337831071347638272 7180855857073736236180786127044608 5664143529708297984734157927874560 -336587842670491302013803334962511872 5611402695035175008447642254442496 2951119601143902452317103253880832 -498276453267934029352701466037452800 7990865184411658577098255206711296 2836059116825842421088410174226432 -582535419838534533669979033538920448 2982332819355962854054061309689856 5817066247436558394899116960251904 -671246766567692283241634906863828992 8630936792305356742725366506848256 9540445599349056514442347480612864 -629088285402613165079404916970094592 7712652875991710410210921051848704 783458211517768825267188643397632 -373543843862855651527320446464688128 7961414606330549444476503905533952 2778548301688350246568615343030272 -334838259215420480153379099522367488 8068319824755947316153091998351360 1190027485896471170559988274823168 -100384689071629795950329680174776320 7169392949270295719337022602608640 8856096092471739052288943348252672 -825350551101825617657560737507180544 8697075892555907544579962084261888 7534802317071991915998410899980288 -78333037846339246031623597273907200 6809491586868522839704185910329344 1934470916630605684690861672103936 -398797771605011388607950062132133888 1351284728153014122881831080558592 561414334069616914347834025705472 -491771330039506505201944128512851968 1702118827919456588524096111771648 9979873410179700745447940812701696 -554809285820312958850750068486569984 9563566679612645594406840759746560 8959344854943493737183801507840000 -827566051566999491797901889526300672 2957306637397205855093957624594432 9692173741216361835022088421769216 -49718633380814102483483864151883776 7202758472758898028098403468050432 2613729304629688989690632775663616 -622959856028607022279113146881802240 2609529449907614883838125884309504 1130026588506727426094538881499136 -203966433131315210394230643444678656 1953431181900094228605811327762432 9686494637602446302288534499753984 -456723154983898338050409561017286656 1096849102646281860592080076668928 4548292906880701099116386003714048 -149764693679801461567896995256860672 3683072223922944792362692504453120 3327887667367263659765546293919744 -817938985876508016817915067793145856 4929558071417704025434729543106560 4301064447353544768454899823280128 -134697091764125689927697566726619136 2186897214194132748693849973456896 5754621227593939811780538495139840 -404798419087986195856445474609299456 1881047095217952735935715023519744 7099972036182471644323995050835968 -857056305817882242105829967832023040 8162572508552205569821130415407104 1890712008876409593892018770149376 -546649065366597711370833620692369408 2133235038866098748094417347805184 8625016743564800410315695163703296 -202482916756318697085256632551604224 843499507205548248679034136821760 3595434731751902905752576275251200 -108524441064035114905885341403578368 6657563719450672982528897503461376 8545876564814450985348334962606080 -28699219968674911908083780884103168 3546813790296694478686374517014528 9410398402307344160073435781791744 -179579655309997922683986278340362240 5280333154130882510935329368702976 2620254252944802661738637909032960 -265894821991330049598523484789538816 9161069846600518264985981716267008 5419876780799408914251693313490944 -380089793148404797795843114306371584 4443791167013227432099190495248384 6163512672821981091072561930829824 -658378808114439462130036846631059456 6739903939763579907733741268631552 3227084471853969113795779203432448 -962691187370332218769807225598771200 4018664211626000673118474456793088 4188042753407153913548925743136768 -14330247126182499457136153516310528 1291461328622929750831020736774144 1172353042260370766680647543029760 -795599678856128050830398389269561344 5395161915962293393756604753510400 5942685351880539224515460865196032 -418730295454085942288437435533623296 7709762134416474447533239521247232 7871467305214861920764985090244608 -627094336903052910405536777177661440 8745343359419679590979561871900672 2811878811852600212236020561739776 -809035648530288173383635249662001152 4725468932625816009198790911197184 3750852899839830827988831849938944 -754311119467502751762982046990860288 8215067667032646584648595591397376 4277183613366374547021850545750016 -687563902265842902947501517293223936 6416374621509968180550756829495296 8530727339475421011586095635234816 -956200484373722085696470863101034496 1813486472179806956468789036711936 3699750675199573979887341060227072 -283165053461732588180400183112105984 2357630029166317566269026576891904 418515384908319006232977115971584 -820751624793240726826417384702607360 6384353067883575294362571971231744 2560343522086877439353222712000512 -467108440368627024885471008570474496 6956653735217090595994115023831040 5507115899349791251177031577108480 -547303458422186064563994507465457664 775934364965748969012738459172864 2963290497221501438153189345984512 -184704369581932999104359143229620224 4758921994650035639756877484523520 5297279150130937234864900017225728 -715586623190019731416683669253783552 4264959040715225665377642794188800 7650531961800626525612659726876672 -105656338091535846301153520565354496 6644099271151661042669616722083840 5493809119036889886545082373373952 -848226440900467391703825572025073664 8741076687987057002485975269507072 3358860354868231304834194058772480 -580737862848137286881599564743180288 7095227310558677731954393859751936 1107428074675689103766724779442176 -107431008237401141408938774287613952 8570194106039620866220904360706048 3511543593498312061254665230090240 -59347278142887471835238625047478272 938414497357822439960858245201920 9176817396788992933120792139399168 -904052543979895219507126333710794752 5082528385396636323028130905194496 812951854282257067698794038034432 -840292457796839799982077395765035008 6405065941575615184485092694163456 7038112922580987938697634316812288 -937840128206232056290103368760688640 4181671534058265153200564782235648 8277660174253017943772626381963264 -890906485307498084496748340679016448 1878685341243812550876650027352064 9799933882739606702199124466335744 -307746834032059536886520294498369536 4392578110719703345624273555292160 5453757763360064476873341098000384 -199954150111623732776118128209821696 594889620732309423596553958850560 4757680249319599009589192332148736 -269259765417538150799774109849878528 6951728223568981536261399698735104 1129920966903684711711011722231808 -663395880629263486157463360920092672 930508301676697572512535790223360 5363851701739148716118991567847424 -447224655745539648889472846802190336 4054191806427967247848805375148032 526780453444140133561191024820224 -984318321192257757796104805883576320 7085219941061467964571310509522944 7225291256673045392026714844954624 -702423221384322122044331203634397184 1142940464659961090126879473532928 2695330285836308438157138367348736 -335962415209269621123805219662069760 287868587330208304028118308356096 1703989301629902807054530847440896 -229038209409919069756629109469872128 5980047926636203940422513906941952 7012801217237366329698144531513344 -954316597844111181415136335904112640 2045278520508269152879941232099328 9834792923492261209101680037068800 -929217009184677322234413643898814464 5521264622284937688311676482355200 9354113272672004276255754035396608 -518663442031965491336345790745411584 1724561142845260361119868618014720 9225917115412273249607631920693248 -391920937119394451137640681535700992 258647691630343043499894513860608 1345102218810390001759093201567744 -439988933977468384595457804777553920 495099395381792563885152141312000 5618710584181331632653617393041408 -176061506534292165132804243660472320 7515093477941210990747814492897280 1498239975969489928267357415800832 -58883001854924250706781657563660288 3559054427432741339875814156533760 5370691031110530684965071917940736 -600339840864563943475410782222548992 9069297681570854215429332790149120 732096330799306708109370639515648 -354877981778060085195195301442355200 8790416458337248731046792489074688 7277583528815362793702774666166272 -970910016993071732868297857821573120 3277521665445045404198783653249024 8650578582942525447413968184279040 -869150517586476454588667893875998720 1484756520523202579753278296293376 8154829982953571443960472276041728 -966448084948967958274173838683013120 2650968008948664075581205140996096 8690117198135637075868840773025792 -892196216557586808502185907254722560 9970682674656967115329440166445056 795944230099000377730553968852992 -484745785742633553454571674799177728 2446746648956950049384815436759040 9300340279504555407330825235070976 -600876255411457701551203478325428224 4727487122444669770814643679264768 2470799027857978909706193932910592 -98094012120014183264477262773223424 3897389198058121385399725441679360 4326032415066632937740674665545728 -393038165247065662619236737822490624 2555408296604941053649603851714560 5094916675676656906808402632507392 -609439631370504537884058507332812800 5983471174156055568381074221301760 9962423245480697894101066931240960 -636666374825981119726566310789775360 2038875253624482822911411477282816 5548437176493115251756570523992064 -261328817781414645822345313490305024 7456393824971763648404144504438784 1730281535104531124869880856182784 -729480245527835325416956098921889792 3939728190244114586455859651411968 1245543936968149690813259150524416 -423336048263117841727643439832498176 3192894961433471435532223423447040 9752785862652245239882377181790208 -464152239548971305366915495250362368 1995381640228117947020848417210368 5421713146950874192898084371955712 -96354798536617779504482715204321280 8758039204329116012033879469719552 4852348675984284116947366859243520 -33289845440842233832979545249021952 4256620346988193635209660602515456 2855316771534440854195396201676800 -682191135737278543986325064391852032 8513093027017561018375312701915136 2447257588827346920741951147868160 -651111697923832367699645399142760448 689017686539688485862417190879232 3315501891520219515578351607611392 -321088436477280715484270275185344512 4058125186354007533078257520869376 3123313319477320955412386576072704 -788498359683128683278673295274147840 6867439100086777096616735313756160 9236264754795290391541594984546304 -640678597575118914356503677058940928 3713670110250348511598913955823616 8818581385207800419187896401002496 -203302906073139408592597905949327360 5866029945582843013709654004858880 9394817710460655067641393801330688 -211141774052539651703715875363225600 2094269524361974274310513274912768 5896330508487982805623512009539584 -800977423376717888931455384797839360 7841774831747771621968683642912768 7590270914086428398976899647275008 -587249498514855663471576689426825216 7358935831254904343015302014959616 395581746673066044967131365244928 -344596899980021472521526042100236288 6260674641774618628545231752003584 8027767743549609551349118962499584 -212510779839473771238261156437032960 6361797390005265926450664683077632 1755154242851216320685198607908864 -251564056706605799930126491411546112 2837253008099039031593946260176896 294684109419016499911632812507136 -771185650843047256939803682292105216 6516525385766665648118768915709952 802166846044574904874462041079808 -36876451553485302610445115930443776 400135743708068625645460290273280 4338466959893527522998596694704128 -485548682652812506674799345259249664 7855157528690747900469633771110400 7868251943667180546343551421644800 -705067945802587514126763197647028224 1689921172583679949118889518956544 4957426391738065763204910268022784 -474426036783235198622306773449572352 5707500236936962692109896614150144 60869718939216889354836833730560 -953796995676602176605879695770124288 5459101902231159080142713617645568 8840268677476065653249926743719936 -590550109339797359686475814256246784 8911615262131754451112227090989056 9665186361804662494104905194668032 -324411098525513056456628070330138624 7153140243338590816604603025457152 1728452279365981111867323994603520 -871559532199454976387654088688402432 3212994620124546398240789801992192 6063483163215422924581059168305152 -675221246417472599315432978551668736 8436699573261835292461113129566208 1612555034848197521412231163543552 -536473453689354977151370501193465856 6022905055041031028456266431201280 4713801758547301033439690364026880 -526601942144023026484160829214162944 6379800592132442042770899825852416 474474316583725107221926470746112 -128424218395439271021007277981171712 936211379943608206605900572524544 2855065972831258482118796414812160 -188953264123657476354680222759518208 4138540373744623708638101020606464 3219093141559390600713475538812928 -676300673060172456938281792251625472 4442192916889253743474115675684864 851669815202099650155536386621440 -301806838838229888300082352397221888 2830996803416018935332475615838208 6957201857342539201236087471079424 -732483918269240406798531224399773696 7952288859277344952886499257352192 5444569296673388296075310981447680 -783503616268717159737126948886806528 9499765572151828748309259391860736 4576319461555091184580659830063104 -978307706235589639456063226661306368 1953592134842460607791421903077376 5722966322428508033634186054074368 -698291279418622828227945524598145024 4339603409048536455129954886090752 4137678441587438219144474700808192 -809052940443189086387537750662316032 9952077514169395834123905115619328 3177891485823311436640665542328320 -905034433135394096760160892091367424 5807621956233160257134924562169856 8320462743446002518304446438440960 -433201029430109884888783082764632064 7561299888353286177833281208188928 8686593887461670203345914950582272 -114021346896807609891135678853414912 8410016876334643393854059520720896 852389316475186956506774821142528 -468361694338656241577183531661000704 2322834363558975250814419022643200 5175181119809179596940512749158400 -477871543071102542444451270590726144 639664949527746339660649241509888 6069378933398247579016772381048832 -589639493536972301344818869290663936 9862491596209038584806737493098496 9197798034777870073304288231161856 -906183370808036156054554260004667392 8206914590145344983651238992150528 1759700173109141148198907787870208 -517754391195748561318723120168697856 7606630620109917660338144669597696 7748966692080351515860019093438464 -552817313735496061139902901587542016 8321497488494975383386159644147712 4445369564136573682136024757567488 -402542753665417623068430747022917632 7894533537623933770410338140815360 6418697906780666784814032205381632 -949459290502399643367911233513586688 5972761520681155348617215808110592 7365098311069242732595338096410624 -912332198568095353628771207327252480 1314760904551897944989916616196096 4909478913530070933869203317325824 -828551740805595412544782896879108096 9004313630916060881121814985572352 4328961448817651900029308424421376 -319542726466854587195487979130847232 4817713387638164280973793322598400 9324879678878393788458991574056960 -910372154854561462934600136764948480 1033583773876684891814358975250432 4913549279454507990148825827246080 -667018318102281138943474544918134784 2739963096207924210628000670023680 7524614602145505106460100232478720 -362837570211300066310809184343425024 2155776959484713419241394679054336 3803944270942639575103250288869376 -565390088757793601767682046794137600 6908536099741217213753271143890944 5144130229975813924337871967223808 -800910454175789516177736773908037632 7357341810241698795101874984845312 9446855235722664550823391668469760 -441890397197121066840551605976170496 501179362474054585652331730173952 5849514293960063541998156471336960 -682751875729253323250621669368135680 6596080413985710233331116030296064 6926444375038630289713867740151808 -988545198400913997578284794294304768 945088041367223410837064859516928 626167196477347673635938652651520 -543926878574614226723935593049358336 1438327731536721014134844164145152 5095748302604441267896290857975808 -75096785232863514121183073954430976 3840574581918826861879861916467200 1362878443330811366193902156513280 -765187954487086284168988567422369792 9428664941570055823589622004318208 6441477057736064539918538014457856 -528852236531675767782093322427826176 4328673022607764319398068354023424 9998017885723864548018305598750720 -152098882213788166325153374282973184 8194459922145616558958467654615040 7085843304386471158110119727726592 -160916621821232605499974164546584576 3606854109701631447130004781006848 3047310424266919290234809165545472 -174547601449357256545849602836791296 9345057283543509865599110677004288 2208501075765298259525824149454848 -201346252534830507260370490901921792 743474805443314408094030777810944 1234001339436958669809988847796224 -604643533757121677641301071451127808 4701837187320649522342678189047808 163310865921125036988209590960128 -831388422845339913528714461368549376 4449532535851721296481191576207360 1322423837119741239497550165180416 -338853670018192733086010787380592640 4027736130153287268823659962171392 5753712409953328670295222323773440 -569135380130472427605631549340385280 8178076058836649620532776570716160 1024791091203609435113095916683264 -866849463397972183644826107023196160 6078351676066325764391815310475264 2539838144526750917328913716740096 -211888847449347505131739424762101760 2156908602399596497751876713840640 4305934030458310994482039915282432 -802912102217399260343123056519020544 7143966898586499183229623479566336 8601769286140569889274886361186304 -998898016685357187956277691690254336 2636413909438344453979530166534144 5898416858169394731423255263969280 -123792737725811470645344595500597248 8479345974229701766386274294300672 4518287149912437806478232031068160 -813633286674319180079599653553700864 4756838071861877481329742328102912 8703158737897902027888449772584960 -67846761158751327998982835419480064 303895434733128234396715231215616 9058250033151032964871257581420544 -275387893454358249206622214969884672 9689984480811220021336340984496128 8730497731375702907487893002911744 -947306103443631587205300407383359488 7895126422244291413346291915161600 1645939665233451088235245659488256 -743112469000133382258350084790943744 6998386306544658137131575194681344 4711262221123242503403567434432512 -946502076475044218112952507773747200 7433841551873747966312367259648000 2466323578501665593361597932240896 -786909051294769926393203244075581440 411979523850711121753960657977344 8534192457426596053015864784453632 -907464666880561497827723675632140288 5867165799138031969799084005392384 313790165858931480322707499778048 -526954808331865086904965237022130176 3910336593879541794728928320946176 3079657213384255946389035199496192 -896138741350816946701634609216487424 3839014146590654597593722402111488 6919432811509019868663125559476224 -647448132286375479595627341045301248 5005687646245269030406989482557440 3986604147854610537142590810095616 -5253691722088180454242751629754368 4871709586762905548237541962940416 8509919259624171797367552852623360 -87676562657126091859031089215438848 1495484502662446605915812368744448 8079496231287478692823929049841664 -937454592331318848107321112962007040 1608656230703883903674330980024320 9444331398966748915132992061440000 -276260478050546086680816282725515264 2651167462878788686355868197847040 8955534680785064137993013486944256 -794744311187441481178196979925123072 4569370722064936754077667499704320 2131473269163789513560040417525760 -251098604049977861841669509752029184 8867230798994780449232106540761088 7226721400395984879811881311666176 -719438506622139745205427387030831104 2014605082971746527218047958122496 2337972980060248165220546598928384 -946061021344213262926174082784296960 8456811021228872802544327680065536 8460048125378428381540204144492544 -50374356466265635349931795347931136 6510820812395377332405895874740224 9759274756947518209551210595221504 -609490706773775877821240486802751488 5267207199679649599262702172110848 5701765956988504212486796043354112 -822424950468789062626082953556393984 7977466490604829185552933590138880 2919677488096132045617766848266240 -542785536318283132347718845429972992 5213705240503232212790464380665856 5463550010543325119311557840338944 -936231967688247601507141704338112512 2037566940232827688828835498819584 9609625900446879722890076155281408 -836987634830793377233927062675259392 4105670146317882897019911465336832 6999062643384991348957252698505216 -283269160127638710117308501061533696 2089093505705764800777098325131264 8135248193361537261679507048235008 -915923907193623000640940736071598080 4522879847433947867601086732828672 1139098460935846874455976536178688 -176720578539531661756065058549399552 6228524244100992136885379734175744 6866782594724191442494364680454144 -332309046462235942174256964474765312 7687699531310347061573503080726528 8484009180280526061161469064511488 -497982412010485043476912803258826752 3939569857588925067250711522181120 7082197380492303163597627901083648 -859763654639765371613682389900853248 4879951549994446639732570258931712 8960403467187059496302991177154560 -970490510701822569206315718621003776 5234714814390010737636808104869888 558412704137495608047125363949568 -759417483688584608744364063114395648 1297745549780615864573338478182400 7823169988978789863885978141196288 -74255869231145430906959397042257920 6544047942164941039909274484998144 1801649699648290798473478099959808 -783452649131195897486100246866952192 6699075918576712127983503443755008 7491784131318809823983681142784000 -810022054694217067849712965089492992 7769791210994692294113888414203904 6186173553231172931432410186252288 -440825237734912518195278503001194496 7135309525623172324076782224408576 4605860436502869628689836991840256 -396184928172704583629286180307075072 7596652177353368818267381886353408 4994229328316941903942304546160640 -283294415354737128506440682854940672 2638898546804894755948155283439616 4705368113415215093573553565466624 -991115206081005243397964348371501056 3389020488605536247569801013100544 6565375780872465774271917839089664 -771548352778768288314000517174919168 5081608498404550481876950712320000 5804742322398541657048800785596416 -259213432207617832838017287689601024 5670025978569853848685048938627072 521822565781104112700604551266304 -964377828669230196047429708093063168 8303633617980538236827200556892160 3147639807065448921653111471210496 -796009276099038295362181017509036032 4573716390928527315578588984508416 6970250212770219266410644338900992 -478884982895294713931592478152982528 2923432981770465706857862635978752 9269362940768242338323461929172992 -432233273579152384461156677027102720 646999972510276651884036820566016 8262163987687432201049910825451520 -938693796262229365594186541011304448 9932061864908978365107315352272896 7599553094880346057783521331642368 -201488427362539829992425373881597952 1793109478153198128988651840864256 6113191064921301994999107624632320 -786823507536401668737646224251813888 8204118819893839583469816005001216 5979601064969339426264955737866240 -940576022749647627927784006415810560 5116610984713287569239862751002624 2241302495526665897944571319418880 -89565803196412029889111004752642048 9947729855799192954117392007430144 7988137052148762243692085785919488 -292676811438349848938983649907310592 8985286014696435047392365925892096 4314127342929840622137004439633920 -541411765091072357143814062307540992 6215159990989785635947553400815616 5485212034157166156226494061346816 -468758493826903413331644940319457280 4140492772286352028336616820965376 6964952523444121238318716247080960 -751637333609154604946886615287988224 3381078156021461501486309639716864 4104672290380664264960226113880064 -730630281053602832044837843557679104 630820995651496603021195845042176 8827894767683266499985006177288192 -251825464157081895751590379652120576 4445543786197215836445466888765440 7567502870871646853542446985379840 -725763648627743618419723554925838336 7808670698933843080295492752506880 9939256101011743169818305352433664 -198087597215546394634938864755539968 1806543814616730880128544269139968 3931877170897533098242648072781824 -335175022888932342241123886637776896 5108867949450355217313924827316224 6638546403507456297304762318061568 -814876926947984788575378524801597440 7839098917738990396354505425813504 8321461970162936148463554819784704 -206620961557372463006846124394807296 2773885181573047701770068979351552 7877392292229232283539988467941376 -940733562001101990440247864441438208 466913580919951954694170925334528 86063895183994682703852689424384 -55967815109006420255417153555005440 8888698758308790392539946158129152 4174098582337343934310986337484800 -685517134895136948148749755444363264 8129029473390090798021240145575936 4612860737287083698618741561491456 -547562385854465631684749275424620544 8789361347570938636397224264728576 5011075098449075460400978421874688 -648391247394768560211126919565934592 8984363891152607831253225761144832 6609156836486849706140382787534848 -349229997751464906310159113350283264 2286433787167024275031573244411904 3629633544643088549589801620209664 -907600530011566660440032902876495872 9869705207932449252833951127437312 5543080513003520419876528990453760 -870732922948725420070569693363044352 9047833532295449000363417101402112 9763826162771259745361015393484800 -564431458629400886444757750957211648 3762136226632449672522772204486656 8116079753477203459179846834323456 -948618743313376459403346418358812672 1770894853049611174532342872014848 4899415719895502057659516812525568 -565597016685059122477036074916904960 1982376650336140706319265553186816 8074450802036415154346588911960064 -8007425347689433967222406936264704 6602268299144777230955747297198080 1039650261590483318254053590302720 -712826085914163926442028857544409088 3817506513559707004363416834932736 2952505828225284932341730612609024 -981944640000892308975852874576691200 3568588099226625631293464433917952 2437839211028775559534941638230016 -819862385153682035541948101927370752 264259066663514443661059813277696 6415075340416792881812984754601984 -443058103573706736857590532128374784 3136476235161977480035760057876480 6270977564760896906547910932430848 -894509499106732717301635903127552000 1400078830898712006674253929775104 7184613466027560730263843638345728 -800915671084311285093526097677516800 9320282067658358260466311684423680 7059150449977999957566931876184064 -69537791880276203422915163443953664 5179176144784686215516463195750400 1657794057266264010054043403550720 -937110005204770220032668303823470592 3858276068799163834338049951531008 2803126914265407484387990754557952 -324368397724315114776353767612743680 7302025750993843812974660207771648 2185858427323489111606288606822400 -389369962830202886345646808722571264 6500734026395035026624249174425600 2107370119566645292936728909185024 -926760965388559286190792623456780288 4350725308571219774811730874466304 4508090755742788323964792244011008 -911887157182749954750435452233187328 864664389650242924108861847633920 9173398935590589641293875589939200 -830010668428558488632547341280215040 3185566467077884603618217626173440 1719790577542508821444118899064832 -142555408257376998871480601283657728 1733603690984431461474117483495424 4703288579399218857389510482722816 -241050410826410184247868994799796224 7389380708540568115956901927190528 5199847381432665622950253728628736 -403252114218015153104004151341219840 1587702826300753274496133028118528 1752852410091510884964286402134016 -149919813023353513473309663454822400 6437635611222628934400562218139648 2192786411256047121259501786759168 -758679406583339130327480818917703680 9327955483135093279183894308978688 7762579140473830057929632785629184 -523573885227246341646014256106176512 2889451036551138923476526185840640 1049297323964577945083698600738816 -365030333963001057623542278041632768 7322052739777944688346731957452800 709338105824338375252614729170944 -906174130834510338443590182289539072 2171433590932568237328261563023360 4670497539744956105320294722306048 -550362901611363356459385141816459264 1496566229891804795795697613930496 9045974924639248060985632637321216 -904483282144391273211066833052893184 1608904518026503995145573768364032 5392969330607551326251935594446848 -501069602720314865900244939518771200 1689317596242456214686014870913024 9622568866054582252753901641007104 -620130664509302802537408442641940480 7378957353630424645986162936119296 5980806513735430810998958853193728 -864792926840087680179315018792173568 3540118578859499815733213987340288 7507766300714132328367589269962752 -440740544777826871263180569981222912 753593953644730656437272309661696 762181923342864078118366836948992 -905171726747185812800658018079342592 3281768883030526737314997319237632 2454808415659171110347731525173248 -857437378199576998265209267981123584 1000193356311851105704850183159808 7830384050454477943550101050884096 -467555874061798826572325367798824960 1079816568968743715633287313489920 5032979384318064313604308031504384 -434092493916258645379565978273185792 3818422891365510246668724175110144 7481170651128723229776542166941696 -200837875950421505620661669506056192 5540955011479121094484461313064960 7102811546547875759311495905673216 -969397791735578070577176045793837056 4937015316175976354928254989107200 1217103436986235646646050223030272 -673573976929909828264478941143629824 2474103014734929797903951488614400 5778612715102516327006475235885056 -583658794961681175361689864326086656 6682418663452720060589906220548096 5595313065034352234507413321940992 -168058914887600512616929926125191168 9302995551518968143319613417979904 4203427878140609025760368363831296 -658065718751244722352363366707625984 595119746761005559885688324751360 9417202719958572978687104111345664 -300098420967960029120307148909182976 4392019705184112985603765706948608 9284350124767052530446275813834752 -252032155767598656740538085871190016 1307420565664944273656313475497984 555153263234451807361779588136960 -700825231841624757856129883679227904 8420835497885060986328153619169280 3292139752566761416482975639404544 -605369792104661714069151343884369920 9496549487627249114186211502587904 157886566047121628231170799960064 -723599870560594094064969882676494336 2522809046309623051430821776850944 3344562443691390454780446841503744 -984116531353039071801513681826611200 360079802812744258307834664452096 2202041631688837675973649518034944 -900135030892060130734057691956641792 2505992084698313460666437958893568 7932891922106586406391507778011136 -18902387901415119430819705929072640 5461149198370747083704196690608128 9987351636173810392113867225300992 -955285680964924322387079933882007552 1732674162280191709506018310356992 5547486595879578868897113790480384 -794412595581211473918678354609831936 2009591886940477869513984161349632 9395270689391326151669297071521792 -680551309384831634264689903084240896 8596599383143968080980629038039040 634423016717960103936266615128064 -45931307216806790059153088671907840 9703230233197354909548653764935680 5060363734286393861156592546742272 -623836544195213318293682262475014144 8519004542362497242214873841008640 8883200509788447245723137820590080 -489948258815329608019754457128501248 1284350437281740469415241207250944 9432379181935763622442361621053440 -735755484214144749074282688020480000 2571563222032442260568315336327168 1917806176515504190702583298392064 -827495991843092218816163497453289472 4417607270677566565862293532311552 3420494386725025333879701172649984 -358030629932485526931131092627881984 3361860445202005966226893706362880 6418584499334192226209396667973632 -478638143962495971481147965605675008 6319632883947295268418150484410368 2044859965406955583345387833917440 -841088902234345799272909166669201408 6206883479604221175904952335204352 6246225485384410695531713561362432 -859341134656136944908693606250840064 5819228783920252211875222193700864 9512691587583928539558955200806912 -443566052149934703235427256928043008 8191345116550085296665166929199104 820953661380901581088992058671104 -87746270433319770767814136487215104 5609505514269545016400206119305216 6956178244609474568084448079773696 -96530876465413732317643761292148736 3232294730102851450952583680622592 9361182890785890898370885381521408 -741483684209505073350935301110890496 7575908444273659745694214074138624 3507239686003445818884063770968064 -337612895600659322611820633639616512 4988602782198603965479477422587904 3570036976872218526747219686588416 -437900600308919983325299953715118080 563292565995792038443368136572928 8634967745527826125803870876598272 -325647837618268422830084214981918720 5289152170885147349525062802735104 6013183354776227859056835793256448 -532323857127946951794551418664255488 9313589789726302873115199753158656 3844583645087675671431322521305088 -280332210000514580272987839815221248 95310814004229551315948595576832 6647437999576558103792425243770880 -434054827687240951732297054013095936 302119132591229136924725429141504 7642354873475387506112866767863808 -513126661843889988506081469038329856 2357001073659856438913141036810240 4958826174976195218853371041546240 -864689006955470933225189726310367232 2590563441952513642773301929443328 3564563825135254924202704050847744 -367139573921326131563578142167662592 1651228988534347417821750025519104 9648868670455841170679828903362560 -2135777845043207563023255297064960 2989782689633939529189574678937600 489918929645601347981689183272960 -168007975205478469645720292757078016 2794223019256044904460399872573440 3135969060836218391244680581873664 -189713241246066623988564629055864832 152854602360668612471843790520320 2002289594632389936900983647895552 -168655809817455905735362674591531008 7239549923966550503918306058043392 6978644253254625947829451244961792 -285212449117010560019027850367598592 7720492994805450286718735351808000 699664275034826788424826759413760 -44436591639041549279488828810199040 870803086757297221114546517704704 8950043261743989627300587600084992 -832669391970479651590333110748708864 7399133105479231662596686872576000 5566086409782608900715169817034752 -419674406744937506623889685121859584 7912482522833147765689986425290752 193344468941221633939616064077824 -762896953653028382155534460463874048 653655706676870628279929639272448 9706495197212595874675336553693184 -700341760381800388068260456324661248 3288576026728494353590636760793088 2095576489945006086770618657669120 -169924311200261673582600684423872512 6746550241029994628830063056912384 8400450021061624719855828632338432 -41205559464227021650312668601384960 9072471508876261368561701631295488 8096255235011476655246800469360640 -359888559184770595319597158058950656 7675040277712755461981001545154560 2682931604687745045197501449109504 -347392132267696563371881715000672256 221280104874990752463238763380736 3167185022211905676199039109955584 -748843165429059224212673183245926400 320443285843175077244929990197248 7466774741478462704350083386703872 -391677822819097433351150600177319936 5885544218458523283046382341980160 8236662361219227618560580729700352 -55843285826851375392299169917960192 2752862550432380775153080933023744 4462950064934779137963500897304576 -63633102203048175346000596016562176 1591150332459658774709042929467392 6505858816893823929151441973805056 -939698242554866544401832669022781440 2015248173368512400659687361478656 9969532336208571850924182319661056 -905270876586318972472533057745715200 7661905702326179769517795201515520 999984776438696534080602649919488 -942489464823027255310745730493186048 6103137818507823952003555603251200 4881076493859552948305323611914240 -795105072748776453916429438559453184 6693310384743711922778547983220736 6837046215376985517531871727058944 -194948176203968936571459739668447232 8689780457354791258804947062358016 7369387319255351741338543061991424 -713065445061616464539869477857132544 460351071114979540364356699029504 3822296832113709844990195667042304 -927976799411282003251491338553655296 3350879335611499863087038049812480 5183039390759604698662165316370432 -204064412121798795927649631283970048 5527440437234396085502960134520832 4007850488512043805413504519766016 -421623526212557106500563275142397952 9174869993380686740380139598643200 5378794517739921260757527319019520 -106676405519787606656967667670319104 9116544060895975991100204008865792 2578088253230666405909010350866432 -202836310023260968071549351438057472 7381797293829430672733973736587264 8120111004499583406740067602923520 -738176088007839405245093221047992320 4308961429551916858717980783017984 3333825449172343534301588953759744 -466547935923269215173853962169221120 5770252232675439342040600501288960 6384097963291338879262184626454528 -222165118876856787650387751871709184 2363978532682898349685302672490496 4545607613622945429155646149754880 -305622465661802103260225336514707456 2659319822894017463323289144262656 8904824379365021489516641624522752 -333065625899529190216666590344118272 6181967779295828123705943907106816 7461569940324934812356674704113664 -711718505982950557656803586955280384 2458006797799344083815355029389312 3240052297805372080549065641689088 -26804862201658396556077066241441792 4622494811476548603383254458826752 3400744678021051437160865703395328 -55118649796206035572706807887429632 5996200687633632575821231547219968 2184975856224345544480102323060736 -900333924964675727786972770727886848 2319198188835361068598171359248384 6571930629158671838146876395225088 -19016848183886213784375878444122112 1558119693883178487033488262299648 9463946645262538904519995148992512 -425693456718909228707032943718039552 4791234326205485470341343582617600 8724091087339325902412836245602304 -154567656754256195394954998113632256 5996102498818705696210642588925952 6126967989257281596917758568693760 -803748868948314374246723307807178752 2585169048154427340938954749771776 1157731772984186652989722680360960 -84547443897037702211863712119128064 7421905449926453610975267271999488 9588720826032757451902144686850048 -167675068355478309114577704275935232 1551689838164047360778620679225344 4369887922886830406868826908000256 -864444236448056414936126570597711872 4156824188610553415345993269903360 7924926169027782307150105325600768 -269045074002853467465430767954296832 9536424462918186386621699977117696 4079083696401374349681363957841920 -247648140325465544075931442573475840 5952983665073025729958700610748416 2873653102454394503794739143245824 -635995358932304881261762061424132096 998338727512888847220584845672448 1758523212092870911739773593845760 -210570908625402431115392500438663168 4811692781497245464383217985388544 6215930577625163522620646278299648 -816500182292615090914097407505465344 2680078085360901519270409406513152 4370804085775832116833226971938816 -267170334970931766161741464498864128 5358876977463733780585804371853312 9176067372317288951150376367685632 -507526611172251866600296098864037888 1074543241083486397656126474682368 9820308796823452624313521325211648 -137643980079927581400161271450435584 4598360931473013829752050124062720 8670114228498499400453952183992320 -512139927657507362280052751385755648 1971272387181018373653617176477696 9040075465690066914609984530546688 -812314753760960649725927138573418496 7674067662802258592815559577960448 3650970619804457881729826979577856 -470164781689859327984658601968926720 6737572213137608957009434966491136 8799003672774166377541881479299072 -248247789010627805404169201401200640 926596111798469404088020636794880 7736679347592738794337923682533376 -501286768633180944337125476201922560 6914950581824019654871179228872704 6860424467965922181928007097122816 -898886799074176871671790756738105344 7959419393358972483592579205562368 4133069157707080504606998887661568 -970826526014850648138840182754377728 5832251717136940886964423830274048 6326308970017374392564344497897472 -169884249758733303362267602531385344 9034157107052013143362624785743872 8079840183834812511957046662266880 -713324565565332072154888928172703744 4355598845957934100624250184400896 9268128915264392743428716836683776 -260857941039854910915171776416710656 4864896236813194588436060516122624 5470435230644825427975027623460864 -394944400807014009765125316484792320 7023173873573066125138678155051008 8242754412334946359410989671120896 -419120247886506227427847726233026560 9795761631524861069374983606632448 5534822213666660846554632094220288 -260197054561092851504553432931368960 6177727887040060706270710197125120 2746747599247668253579122174853120 -180632503451078641307716177019011072 7170570905039872979740081063460864 2106494568288279295555059381698560 -797350462605123295166502354930368512 6613178881735503090315673089343488 877181091091484357262096491085824 -731408084677904271732061218778644480 3240929566813944802728154415235072 6928145603351394217760023780524032 -478424900808387044365699997929308160 4991051895128288443932314540441600 7359130792006878694981882492223488 -264408480855378502373576724944257024 1076642115383397687375410287869952 92806483298447663946355796082688 -511231874688688686774461805417725952 9338897531474749102169990679756800 5608454803036836496205820660285440 -640998349202727385119662217921298432 7385094280804280643985318472581120 5913855891259466359667496079851520 -580688569408170125649673474271084544 5708777167462800353471624957132800 1668138029405804252702629108383744 -534742386061433679285646020445208576 3150258926758858630830168299536384 4878217813633067501756493154222080 -142230874934382477483726927768322048 7292936283638720055395320640569344 2960953655794055858266080555302912 -181869957319031500066819653591105536 7042386593915710291216129132068864 5843753303904007129870334458593280 -997843904609918416456165185132953600 6864472311451975218574527544950784 4888092182093945479345732289822720 -679139953204149660574348432275144704 6272879625492524495540642950152192 3455000131018100945931679639273472 -208286369314171789128878207509987328 6635456637835698212073479979663360 5984272884246483026218992067936256 -331744704978615109041109781280980992 5949154098427687485410928909877248 5311608877059611340157148706373632 -977710380537545865637601303366467584 5977119557554263922111696699654144 5847528338965207601012033642823680 -315694215269910323234396937885057024 926951964132577813450198584655872 7599000476524335052358379324309504 -86133795333431558969177689177456640 3335550641376662335034712859344896 8488408065203950031082264545198080 -196005286021614024720481174977249280 756789999483785973164536322064384 3794213140830069003548959449284608 -130741931157453512934264047704997888 8709172417862592535548160471203840 6495798280487361339104012141592576 -653306220788644918009314737181949952 9299063161689620377263297263566848 1782383757140987788304474559217664 -546671301686237480703650346485940224 7195967471772327242193659037220864 3388076149580473153326040733450240 -451340293235578028696204190213472256 8178162565834016160091051753734144 6799694445905413383194247916683264 -211006704212270872945312106446585856 2126395839924207204283110008029184 5238290773151693476790530469789696 -2026812348215824034560373499625472 4136347664065218957613346632761344 6766906722043511578514931419447296 -44163197199492265857313725122347008 7236019343218276890063110968180736 5884233106647832362015438292385792 -176398859547333881873012427333828608 9824039502275758687357388411895808 3457429040944255270644697610059776 -975502801521260579502635247676162048 8656075948824574247154708803223552 8048119521124787773503904986169344 -562156162356639413346644759853137920 829026251837681089633739098554368 7079133930431268161896849990483968 -963436345698017825295110386084741120 8670565437495972185475326320574464 9971714995865099507335136861487104 -560749783397850981054504478665867264 1733259928778608305343391086936064 877325526744261186277845860614144 -770481596914800432973788050712690688 7338849585925447662282894026473472 3688560850649810681160685798293504 -504186934623044499556569945758236672 8033514824393599519640423562739712 9929418833527005357452400546283520 -621775097425748666775759853876936704 3482610818499398611881970609684480 7916205459308285631244633634766848 -823442702114877405883068907549360128 2498817509650464509297476763648000 8400389479672078548676479287296000 -917544694169959422088736115427115008 9968820143398933228254966505799680 1212440719076831426433458460688384 -439624738385723580910115317069381632 8251639008501951860638258204508160 3360399050646938623617216240680960 -874855174242785720771240825968394240 3899144601847293206646439930757120 2325995707687439861940661080031232 -732929116685663736187335821985054720 3000109300234738537517925191909376 1418095173162888150979327882690560 -790241462600255357144812418171404288 9881255743259439829904651139940352 6447478615288153143553534300520448 -718466049276275040880983765684322304 1891435416885064039480236762464256 731210895264282112741083738800128 -969997976084799138026975707560673280 3910569292649032821643808941801472 5143148119200706285221282238693376 -560866826909449161892817059056713728 2123606016513676669610754056388608 9195746248512546258152818772803584 -121370691031296745406037468945317888 7755137442827129971079055732113408 361676929202133518525329599102976 -183136975475971382185814095640395776 1809323018428064991463073929756672 912852031700160257119333950423040 -493252659293210313571645356211437568 9220629895181215152138475232296960 4928231589023098578254546037899264 -576200206843370762682379173290311680 572512085464059701666365273276416 5048723017009533199096364736184320 -173042798161727233857104581918457856 7858649175565248941370003301597184 2403574318217792351036556930187264 -499093758599768611434184676560863232 4598397644057107463976607524323328 9109331436216846277331791688761344 -509782371670404805438061024177553408 4713522496669586364814104654249984 734353359622549022411461184454656 -930987559505014653166123776921829376 8460841503176184316640236784320512 9316164604386109619993692847734784 -626332712158485116079569920321388544 3662573100160941565606308643602432 8641009635361105887667471096217600 -763795975364994626927613202504089600 6539840453551802801681980547137536 801504238836235396712744515272704 -997888434294548766597787121935712256 8781416594198436135073555664601088 8553873270925472374932532015136768 -109902643884118098856860248298225664 5945807482805783249568236939771904 9535781568967758917697139571163136 -301576446697324138856490766599979008 96816839020513773693080914886656 900339101908382474549398337486848 -225329915641057253703547655213285376 9344173990915680987284833526874112 4755061714464570777163477609873408 -151122626934961752266460090442186752 8010888370866179352761645221806080 6695809672769692361952142225833984 -382898964144505158887453380688478208 9756480087303518524318840369709056 2055456853133369376696603282243584 -650396815290451513974793544457519104 2145017919907264630862203955707904 1624186753559106794512936679243776 -856391513750280628314295860671283200 5562711661070401889441480397815808 901948080538165436505147985362944 -950390086009642230458097866916233216 4799003807508632483754063551266816 5673213712034914727818095908356096 -560873109321137809442647738943537152 4986516871508032104947561965551616 5309561192527977382057641007644672 -945398013999923062597588500596391936 1646503339127085864430202471317504 1290344780014928064914798155923456 -381626692733749502710058071384653824 427128647836167350284493749485568 1626960012133666674351843689103360 -449602948106111205200260663317889024 5596384398342753744450589485432832 6715308754641527386547674721288192 -191010586157451226244356614014369792 7034637327825744879347337749594112 265391851627459302429270986457088 -50952390521276938078888793445761024 5081928299771230906695796224163840 2011505400759013337322073461096448 -973608429489010681022739041644183552 270420522648630462559594555113472 4443426222468617220042333527998464 -868488342333288241109893277789716480 7885478725881233859318648829640704 6235986749508282236407478887645184 -16966777288840385108037806346731520 1457060621650167815815063637327872 2213710836715520927460627008454656 -967962197980444389783877295127134208 8794917207028103702470181846515712 8145945795097293161755350732374016 -624614498720705690788594852615421952 7311546695618068647278902333407232 3009878774726085988735287361011712 -659381289192623108299243439796518912 1351541200472551377093921412743168 7628989951038488421117564062531584 -565013961697645903922498146165325824 7853172754134095718119790453194752 8299982973781767579822361738739712 -635358389370755443180079298761457664 8518810547131925693004417901527040 240660061190029138441198349844480 -125816823438519761928558321921425408 2887326155201852172847159669948416 4391331838478587433802471911194624 -430016633860739597894525854500782080 3710959714104388438154955135647744 9176560439380447457490809628131328 -517751703070750952567027597207142400 7353231707635893438939338249338880 6944344155329566496490800168304640 -406784888412072553004175193274318848 3518156835610257389133500849848320 7889842104838256286468989196959744 -214932742803370366569953934710931456 317987255894499866907993782091776 341526998717803859038246400950272 -469819481777989057942693955166535680 3828277695468434349565425907400704 5637778119714810647813625093292032 -850327727669817099256670726456868864 5369991981490305096346910349852672 1471837282367377544575845836783616 -349776294516753484332089571759095808 9201580605428972352388214827253760 1829359417141254886809645034242048 -781721505747743311844691749877317632 9419835119531697250508954732068864 56485151538582402952251555446784 -734993963595315774469562533041668096 2133438405636617230814431212994560 5123232508519110885587532709363712 -829067198612444652973376076821561344 6888944574792476401077220997595136 4183232631003104796550186171105280 -950526020756167422881182534829342720 1369736953324714895274155104534528 7223707221270073340253116030779392 -624646203660469385627572528960503808 5575677786157863795741869152927744 1420789879402145270520030223663104 -603821908933240419538716255106105344 4810675637479105370610034853019648 8225289461890412764509227653791744 -868132459388122976072834642717179904 129381634806357686192340847296512 169748614942088629519451114438656 -297879240495601357216809881941573632 4177368946744319798199583181373440 3315042236666848141285831603126272 -94709641794819895422011173060476928 5926402233261029833133464190189568 6320896999763745612299231001837568 -373846637729903791175354526447173632 2162926947413481917094471411957760 8141232756244053298720744446885888 -992723924038173180429848061507796992 1355827035661429861477159050149888 9861990500757944555881813992538112 -139259318885812620567301502370054144 5653931774111972129578996536967168 6226506930815605557291659206590464 -544244030108114328884064301216694272 2147394702171441255452172011700224 3648648289293724157392842360094720 -470612726046762498833992496869015552 5145648865546119206567997723377664 4303315669078529490096451756228608 -551806226343697336180225650209062912 7903675857222137004131547745353728 5182556927877592493901945503744000 -836277629273319093596653273923715072 7298757191856796769643199249514496 4774079676606403855002353371447296 -605853818708857562274374590142611456 2559243619749744077164803675652096 8464022353354781757352961665662976 -159396104007343664259807012282433536 7340233364590698223432236510740480 6641318612073302843542162827640832 -811682031610742331780540955545829376 5909974830941115071576929449541632 1476653400762980671687299199664128 -701424728405852026126069696659718144 1950502834341032361797670896926720 3782733282851025748091066248069120 -651866699974483418375389844552548352 8736890004082098364937373361373184 9467089134196096683528888655020032 -44714292220212249181494908391784448 2274013123924491105283932524904448 3845066887806194808946440083079168 -613962802588212059980802755888414720 4269714375176778942946364950052864 1543049972587001706277648166027264 -619861844588729717080969940203208704 7854881729901148539230984987475968 1982468390354822005192511402803200 -234175879237727087206471389436444672 8732634641493041724867569510252544 3751566795117608551051004366290944 -418334296926725843106579081689300992 972815544127703768430217604890624 4036967618477588418154011757117440 -400999684699600910818645020172615680 6054354625452207851036680946450432 188253557270762471067406112391168 -103602568784060168328805626520010752 9288882813534404593549756478783488 5558085399386734390351005743054848 -665689404582154150493237521470717952 2999768537550899754167791863726080 4695487770485659816222396656910336 -690986922422220037134225888556089344 9927884574066841353806434325757952 6824968718740455239642653061545984 -761683630778717034285776482097692672 3378683530181949003685181951836160 1552169108130153541302273833959424 -569650843152400758899628361480404992 531863700543419255365186510389248 1330576786629965133295973038030848 -906975255906607620891482409041657856 7305494097197655976652355070328832 3254884239263111363382128085565440 -639029408878422490863968085488959488 501934765814614234018074211647488 9080195903861087844250445976436736 -824311060609663088806856218831224832 6567325566680055329944796963799040 4847442501567674798840667615264768 -739759545827765654394280528974970880 8572184124379026883637056733446144 4195307055995981321730093337280512 -568665331949875470155408841969238016 9589963183829280875377784199839744 7910295666350167466439142348423168 -717398385565673984702252611717300224 6531051950838916341088718522679296 5764454281385958740501279899910144 -807048097142989905742229872589144064 4834784869003327368935341620723712 9345415619630478409544171037655040 -317406577529385302897505265403297792 2454985723177319963875167434702848 4216537996837594977972839407157248 -121971492320123427732880523287068672 919762195028471908310518794813440 5988470921488976287249501331128320 -409971015799414995098206216220835840 3204971696703960790794134135767040 8357785741181694445242286449098752 -776327808699206006232983173848891392 8719534271966610161412094933598208 3519159083372052390654374469173248 -798865388102712740093134892370493440 9406909058001430744261075299991552 8364313071896093209604775076691968 -766262956597192370277231603858014208 3559750110661814176217282503507968 8880043279603326245295976175632384 -554145049506954466220248597792817152 7524896257183944519612260128129024 4253156091756633982214846021632000 -669138278804926355262912237672595456 1267794817194526221711340988268544 6973548243648958864974073917603840 -591073926408418768508534067654819840 4136775532398659280242531832430592 8948164188621076761869617431838720 -652276130061093593398664659201949696 5694785048691199364375627457101824 3940680390286693640297919086067712 -498127435829345268277224923644035072 363350415869050317095402507075584 9695466098478745686758899000016896 -948094644837494096140470973232054272 2057494195947040246681144848809984 5369641073534839035325504521502720 -985634791970378471245460588984270848 3097841962901790438542701643169792 317131204561442632535415231348736 -653678281233540100348319130374373376 636364913880330617239649506033664 8018499590187596160688173654999040 -789897920421493286975354729656221696 6469597274314702799800036610801664 1088237132271650816735827957121024 -549124129058513674072966949379244032 3843834569271111133715518938152960 7163977477539412427523792268427264 -174186120202681743289334473380855808 2331535043750187924559445826207744 2185387276337454708414562374254592 -527365292111480156985187088310730752 8883755198929983291236878464843776 1392235221369154100296275814514688 -74426133401998573221175492247289856 1425541334755833987219811635036160 4216996122854058494878312633991168 -940287670119409949784245021001646080 5506049806771730858464325184520192 225572353523387214365771293523968 -799291527518036460201265233221648384 3422927241775887875488323599335424 5378789915655157575495843898720256 -15894804356091242923129585688117248 3066739333798492732124659420495872 7071735470943193768781065517793280 -805028532273786773117223290653376512 3269056437948392022180385544732672 1092191247836610005325826861563904 -546550593652432033102714223584083968 5574049345971914661645128222900224 7198763823809801401290584846499840 -359682003295403094403133650522603520 3588126986849087347247047212269568 4367165106528357288457684972994560 -89736647191445065557008480557072384 5105441398503782639960624174465024 9770628561589337288570305603698688 -491575077926308341705866056577318912 3235279251802174565278153552429056 2668327950256243190559275118231552 -243184990657260082256908858565853184 2982514300729472673944434320080896 39239282346557592197367339155456 -642866627786889585509930469133647872 3594624439115272447746011496972288 3486550688663239858610298880524288 -415535553778041726845958012010496000 9855338917319636219097250934030336 4572094081820236544939370827743232 -379173060100315274101039661368475648 8175526675545073570168661165998080 3203776410075760042232915869827072 -927164166129079702942625370407436288 7083410099332702442585404890677248 1142516142297744530564688019193856 -283918644816846132497910265811042304 2179765846624792609588734427398144 298102705703523784795388154740736 -660008786603909522162369557765816320 1422025553566944063428186960035840 3393492166312385192755157603975168 -422003213508913989406791608697880576 6132537820890940298023168018219008 7304039203641830400675149028261888 -185927013705316733532889730722562048 8260504420994019625031001035505664 3178538736261587635779568981245952 -132208779603849854017463457633271808 1144990272180111374293719545020416 2831091331092296945402751148359680 -912906672691833643156660581761548288 3298941801381932785776173439254528 6667113461834280112702705933221888 -498711147166601550362575381112815616 490745014990721597751928106778624 1023295363411320256296752957620224 -272204178160090888056181857999388672 8922106961141141312597569216446464 4685393000591348933532127409995776 -470248540885175655518528389041356800 1840501865013760605837296607952896 2948033157369329597225894139658240 -68884890490835975036749246044831744 3637964687362167208906062798258176 1642749764285905784437494016638976 -938056769350393073303746999836737536 4345676380895310407396847058419712 7355526360913425505771656352628736 -964946176962745240198658245598904320 8076493935082078384992711755169792 5269401353864641379941675467538432 -992117452832315943371611966470619136 6365583393064363172686067453132800 3957117681519881648727047551320064 -237536875209786532179510929261592576 4226591187995666423080433043374080 8411415956514551242599010010136576 -614072859343082393294909031124566016 8999659242246917195193526056386560 5198157111960566081097806456553472 -422279496959723847367110225347739648 9579343136623107993820381633839104 7129543118309118231146286110736384 -797748323601202351833698365855498240 123162713731962924932225099104256 9062962992173575937140141724794880 -670372212456779729100973667438821376 7675181710791134623919566258962432 4655324330595691723769222076039168 -927268586552205901422120111976742912 4694943536625314213587258957627392 4747639436932484075765744187473920 -176744247634769656307244586124705792 2655131487275696621695060156612608 8053905247199879056697341205544960 -975066019716896125142099912382480384 4055642128579147172956779535400960 229463867674715384331868192112640 -403088218949476299706086825922658304 4229406232514240914927423835865088 8540566312480712948023805641490432 -543794363288329277978292524565921792 4210400994489655729287621548965888 8916452486087862478832561228349440 -579733410425612815223268629807104000 6596750658137525438781955279683584 4526430359409345465027176289009664 -337285379715500120416874900190396416 7660337519543717459245112586403840 7767744447490493616633885256318976 -631123941280920407619192503740137472 8199300024351454382089130488102912 6117314900211513772661443622076416 -941856661397262220843598426377551872 4147915736010396401675595874828288 69028406478440029374658534965248 -708825268934332691039707943038615552 3892986481573213959273576952496128 6108207936231545580338564487446528 -700599840382676959836690539400396800 5998880924397733508803718885146624 2124458764420012594300622079000576 -908657564378616429759162320401989632 8845497961342688832728367051571200 8954692624599594304800066338029568 -816492612181568011516141069385334784 7535813549585885359970124535169024 8234836184833359445565091382034432 -144454057146232884271641139053854720 3703500997212826644754360044617728 6601110919352726245303295917686784 -45366571920163519260172271050817536 5154997107789371590442326643703808 1707847357473276013081823279054848 -864332350344558073299666780920217600 7361049535794315916038727022936064 146631802178409470486772392656896 -519054300321143385150356306626871296 4851295792612477820238993058430976 6807340574145197079953523007815680 -338245899607751344696251892442857472 5187069647028680216351847183548416 9750654976154163731559393657880576 -114958529246413485624239102802001920 6059193338407866395322587864367104 7237116490182130768308515486302208 -207481034090845962607463593525903360 7331569182066779380953116741468160 9562947112512397064905034708287488 -662022564705373187006081271471276032 9686908982063455723626396842459136 5570305254785693327338705787027456 -340433553641612738091879588358520832 2242695777765555316342817579597824 8525558337587575525270229702672384 -408087646223682088597344734165336064 4821590016294584741085459205062656 95793654516850724533081745653760 -686772118067807423213121553802723328 4070173265056041787413704113913856 6892830869736343370726578830966784 -568294983537704059929011360970571776 8843265095909751216429469970464768 9999034618378867587237263974596608 -244207648214657869153624412550856704 9479002904046516529313773189595136 4762863918733135109307778222522368 -162061222061778693898742726525976576 1422780272319746313578158005157888 1948247317488433249344422097715200 -683223093378496126779989668321558528 2044187206822163361840719240101888 505256358379010092452140902514688 -601927310549204269421238816371376128 7151369840491285912323656750465024 5580955014673862961399519057543168 -760714248775789336093218741183053824 7903310129788610023787715262152704 6719127164395667682748361154232320 -913489204900417687599785246581587968 8943406973715510836596944765190144 1214098466686464685344747375558656 -760344876295631910229767104539656192 8134785167460400071491386305675264 5874135188331581824303717777670144 -36035238049656468633580369591926784 1261764986809415408068997691736064 9416393910216669907417442759475200 -370068006520272735581744096362889216 391380541089954962907592101199872 6884025000828102323963797945974784 -560186118659193864372314030366261248 3869531985478377010221102470791168 1064344713163881369208827850784768 -836240056595205257187387901556555776 6858029720854158565521128857534464 2235527745158501494755227762425856 -710188032650207014314388251884912640 7104723414757877629245774362574848 5705828867153736928050665586950144 -937078459141284004985404995085008896 4138002541134145176150104059412480 8389165668835582834598145534459904 -45345233482194516470025438399299584 8771575837446093529581386549166080 8892334076417615198453670124453888 -207113357388303098368823975567425536 2115422035744738364026130370920448 6515263745994047927983567099920384 -889696530063155554841752288077283328 6624196845101032328466197544697856 3328657732128690719647745341128704 -222560195902222190028875721036791808 4652719881480388804595238309986304 7107495215013000415225541702975488 -992067377446578449960475530021044224 3828914562747192368058206349426688 4609110002306494209875181890961408 -594526427428100654412862612314259456 7090765455748254054159325006397440 7590509410796940162081493711060992 -558173931439474225051417164977799168 4197003062048868413291112492433408 4722043410165079766865824589021184 -758386540779746576416062663894761472 7921188654014887719544473545342976 7511049786787640768961554369478656 -891615880520449848882854234941292544 2909817859282618673045984528826368 4535186008727325334775589265997824 -709984165800644955200019967846121472 7217342687157111573867939141517312 1954188857129125413222150343491584 -482676080002060116671361727831474176 4191445989869185243631621752487936 9588923545000461502067358956519424 -533378023793664826236894003891011584 300121394425236660696385299939328 6062063992146997887194522231767040 -561331797577489268603637336557748224 3362143070418461245754085656756224 648342230747107883808035780427776 -331242516950054522939066467810803712 9218590994298732780039839462457344 5407468857092176064303748125556736 -157706305014894389682459503577006080 5585582682473972521375509673672704 9097267917861639681832721886216192 -953081391977877017409946262599368704 8079385917007537191352786395070464 8071908725604091044761129791258624 -739501116334247049512700917967749120 8013090272505461179427161617989632 9703934041511325247124103753629696 -391021495984206061807668614112739328 9216991781705770159415983995879424 7812404546703262786228380235726848 -859497605194804296757242998460252160 8431159848807041275304303757623296 7577421384704735741281062480773120 -241926092075464030333326913567719424 6821120379783320348039846538772480 7764166476251108035419123440680960 -861382404786128009251333909226979328 286149051875979153431527612743680 4744468796438157511198263436378112 -411940015929077861800605175005577216 9771877916235546605313509438783488 6850115912804845267242498842951680 -778194618772348319982230698320723968 3596470626558962071538869756493824 6093690375830075170764329563717632 -598555512862214192747245357221543936 8583006443853037968637098970841088 2360473228298074714431948505219072 -332901454133872356723591117260455936 7489209614458914794508409053904896 9867500216179047086870781132537856 -44898133331491229653156606408392704 7774353987022233541289369827016704 7887916485473383714289578592436224 -314067182532115486579591452519563264 6532953457412274146654284635176960 3745447493549876193698894963539968 -295680257827968789363441984939753472 3724196308263175850033292123308032 9473511554074700410096483360047104 -487828941577297860114468801502773248 3239506613334616318431039680675840 7701271363436575098059221809233920 -546993491931929015074716713844998144 6078246109718689359665870384660480 2923266088091950762525992048132096 -612996633478987105750153738380640256 4109368021346370010470615814766592 5674619985510847450808442020691968 -315449074104601771466171053764509696 5452419092536011452029146406846464 1104312707212865735356025168461824 -695818490863305370155162314358128640 7457599844762387598606073570787328 2763171403393367101398800979197952 -985540914705114016332100008381775872 8525991176479151140744028225536000 9764408369484600784544216752586752 -471100846401091004462225292515082240 4849077481142008362495573701427200 8407562042242222928602144121552896 -47341534414148226894729571230285824 9604831754988004760294594921365504 801084842538183725554784870072320 -47950208836147840698539829620637696 5540099739982570576693998397685760 2962706870577865968036542049943552 -159128623471724245657548314858487808 4789078376656554017052853572468736 7180278564058921816788914562662400 -564178925709635333579105517449510912 5617689527322797666935083452334080 7528928034736886051739273030270976 -79353928780734213213734381524353024 7500786509890598283089242704838656 7126085101613617996009824092946432 -310609681905543519045093870385758208 5897493907242681495478262676062208 9386923139893469696807210699456512 -16821136530374676863733818567163904 842209282986145528122027011997696 7899692817968927302222058344153088 -540090017438811754907916183319609344 9871228889234972502134000225091584 7708908008021397166828449364443136 -863106964580965533864681943259414528 1022233949696306136508544009109504 9426596648776581245789253576687616 -557533370046305235344428767421399040 5684852340055788951348153713426432 827494448502673921626676098236416 -90338694009385090492145799404716032 852032621340140387968498544934912 8047955453493012779755510117171200 -91737403481271225349945234693292032 4628045663590637212390477824786432 1189014951672120543503235363635200 -523307493189662095333908022472736768 8322538602509497514900246119841792 4001344290985848628917857431846912 -481658739338911771127238066178097152 2464142153090535921422110235295744 8575377758586893030977225598435328 -717979659969787195332703180745080832 6709103610745506280693602080260096 2998373399443288557404111153135616 -222847861662274123403883442715230208 2765528065537123469080887465869312 9447278161125678932389841923473408 -98766391163644393768228072670101504 310496198324742210390886598049792 1151313055685788473760667100250112 -213401826587340231750206074942128128 2724960748832974090320603198259200 6458047656962733632591497248374784 -931396839460565685549436139980455936 551680838424026122190046837604352 2349829746783320974359833339756544 -356652488602700673600565613527302144 9018874909908551853999451000537088 5433354951021389929241691878850560 -327211127543939421955741333302804480 2659703267974015269962494735548416 3696470865526780303855895019782144 -877633749497214439434379116364693504 8123949644884959173237185437499392 8612675162240544303268890530545664 -997948237162415005702208118333636608 5869586158802297062832956388671488 1644466134451931200935180715950080 -189062626193514890577026931536953344 3693930384104195969644819722010624 4641229339489503509712914125684736 -353818975601473742951983072113852416 3927784313214827750879365825560576 1686879185795077768172565470117888 -857327473565641694902889086011310080 7714193604166798376774591227887616 8547709625934994968816917449539584 -483932723987054728703292171958091776 6031626495446454051361108357283840 5678603339430229346318903259693056 -238721517411548484523517320554872832 5824417344061224407829690051461120 9586408594695482560855992034131968 -473280032907429930417303753009922048 8081127913539918472138030275624960 9098951382429761456899302767984640 -626115990043713720424838640806395904 4622816889388313411898821908103168 1511913900593801715723002666024960 -590956760670773155753886956438683648 9117424512059016814686025658925056 8966397831443124378614096447143936 -934447524825064954168106609444651008 6652938991260529286748138660429824 8372176947393613937295653676777472 -732175002856657060491180768650854400 6008612636296273415734264850284544 897526353853570604464302253408256 -60709220037558423639305608272805888 1192812820785464365927981087981568 9013108562506519151958077699260416 -459290029665829828370630752530857984 4470750107825684769345151556386816 401116442261908552032073375809536 -686956368172150348065125239097393152 5787671904855944272736688963321856 2470340071406216655159028998995968 -733059021447682208386118088216543232 8327365446358498350428039633960960 8151987453147506879855026719686656 -486450117982534046054310219756863488 9237169017897518087737687016472576 8318606501322822159818128512516096 -182653258184048162251547814456721408 3472920035930082787735480123260928 2630093537563855803323737379438592 -665707475070945780305215966528143360 8853572754618681413990980530470912 7339233433211343793508054219096064 -161110243624915651207607519807537152 4927152072321980251353590563602432 8280396930503673234569728054263808 -490927637432289349121337455047344128 2915017921661079621801713334222848 3592270151661775967384414007066624 -605658171725102900951037075336986624 5399027786881003241653557595734016 8190693220981291415102235730771968 -712807320275163814570773113091391488 2789147439780358649646849193934848 8075789233368375201050607963078656 -387921968503308259598971169660731392 6330450590575104168865923216703488 6670545641903239761824500982743040 -83566568398850690097649891500097536 4220593394384014679767672455954432 654085868421661143065546415144960 -905461665653960437280168511367282688 9646283627641297537528501882585088 9026538465703921594027129601785856 -17626434028402793241656220958326784 3600488349052297477728107847745536 2814411730057579727791265406779392 -473853759280556596042485685892939776 6253053343198423675351241412575232 348965914811732526248284263546880 -428730379581437676477476842602758144 6753248201735643916515311840395264 7691410047572973611543224085643264 -841210409544098770015298175358730240 7648001904979114599887735835590656 2044804256437024463295865876905984 -123709654360650546896685926338002944 3305100156491489065366543023472640 9969173194261593132832937098608640 -921805994803459868210141566588682240 9161158424383407538789846322511872 6537937375095779106341757193814016 -822456431816774035733077212526542848 4860214493286050678823337529966592 9809955365604244217086789510234112 -386917128092712231457841639734640640 122198702890545405998255891808256 9533949006750075237464003087171584 -919811731166675698253911800674254848 8367645300925948849878180407803904 8918463537866096811169472151814144 -804074234057474950431984096385171456 8921488460915868322277277407641600 3564425483619208473614563986636800 -642254026915734182990798434244493312 5870037169749235132779449418776576 1253794320032086130188146203164672 -288840062403372780721724242161303552 4424256591384642888998064628957184 2274104982163011381387841945731072 -99816684750741356166173565753753600 9460787011155255236736425536782336 6158809456865167071888995686285312 -440270231910273695933965149908500480 3715466544722320610819587449028608 7928435854475743236113309372514304 -168531404446288174261122717578166272 994230176871068692809335290462208 7276846647533071845783413140226048 -905228836579911395020748152614420480 6962760724030712692162128011853824 8875765558737906186395381791719424 -601162663527298358241774691271311360 6058503916685942347473415300972544 2911014766944063014833626032373760 -138218835131458639690247493885362176 3877026714948223548778583961894912 6772329227409024810120608485474304 -509545362965469826555860718373044224 3359734929863756000169152963674112 869227134997667578043772480520192 -167582920148178590075857545285599232 4924046450977298553864048135372800 7256067359336381797605767307591680 -334550860132200504395235142544654336 4982415580179080769038747896381440 1502001780301554404907157259550720 -676576054489300142817069350510395392 7371286140972903708792763281571840 7451115741445174875766286832369664 -352327720579126278890257854427561984 1506795021599257157154270150131712 9146373818161371896046135308976128 -123450255979813268020685715531628544 4129257164464870291271897308987392 6382053523878607131294371900555264 -871009249644848144830982539236605952 4824781822261432697234548963934208 6133952765901009912533896449228800 -540093892667568295859815241293496320 6968981213935357454826924048121856 3264897230173682997539711335006208 -793199055405268180508883058014814208 453149079848898259693730455879680 9344828522189703579968096924860416 -296174316926295122652784298750377984 5541659281911009994613484108644352 4853599270980718006755220713897984 -216103941635720259495449545720987648 8810417925160981214005169108287488 6214895085024001528498802791546880 -627202485488819932261381644077760512 7795218591016647871098425247268864 2638574447258187798942525924835328 -441041565121853347985871268200054784 9419244402393825473389586389401600 7795336141638368243977307864170496 -672571299410410526229873263701393408 1457621905435491141780037850628096 1286649201450203717341176590761984 -362219939212911716456348639865864192 1250157767677864636839648074661888 7732423020930491723564766344511488 -832618514243851283760306564401987584 5835618801277968613774636181618688 4503303052975335812277984764624896 -72772139084656264461156536012505088 360290806526739014777722556645376 5919982947990513968000143080816640 -713749450096452119271156870457327616 9482092932181456963319174388514816 1902046459420460096406438465765376 -757356961181122294615874296780685312 8601824355016712358224355523559424 5647794940582665392393493118189568 -260841416037358995385852721717313536 11792017746634250111624476098560 3770573384003230929070621139664896 -526595871209015074356450953927852032 698447905817214400998748987588608 6632258310950929530650805646917632 -710460018849290287774530551748231168 9090660068432402318339548913860608 5432145696873303421120158531321856 -804681433228694985683902981455478784 2478116543454226143780267783880704 7343862906281379868198171507163136 -215431947659894186399268601654673408 1530196745281715844286239012290560 7012706772444198504690182728450048 -105746896797095433897066254869463040 8625521808715894101935491483959296 532621857809046087678766497136640 -195763673047491578644298785187954688 1108109903948104111772267161059328 1325530445508703603015517755932672 -327309269855647751085063410198511616 7931348911281585161694923276156928 7879789768690773871880851024773120 -697353846952230100524588933077532672 9017126737804545264080816653205504 215241518468432120138363977072640 -270691398223421273421735812585750528 2651165941594919213154023342342144 142345329948154566450561488519168 -275321246755868253253753796296704000 762423287541667713803455815483392 9032496280089697612098704129392640 -540924411807408553692354889698508800 5569857855826828729323769399607296 4521641080102617458711317872377856 -37857741869687527669661511165411328 6918518033213583221003069287301120 4432278670556076235833594005684224 -59044695592260507374575910024904704 5233838206998105970981953509261312 672233191535440165418302179377152 -871970229140690734043004682633216000 629482917374853214283693312442368 4993665381198686567913018940719104 -136532669531001902065756353498972160 5223630015843469889021375659638784 9803581756147046888812207467921408 -722118700488103734432775021042597888 4863533433278954179405183520342016 6979655439670353829724485863866368 -846883293319939822078068095977521152 1068466083171698301839930852114432 2762367587180687540686191564161024 -196417131266243074686641648741384192 5841267555168513766583575102095360 6796152544103922949571912939864064 -201674167287831607071339609078104064 6665962340496966350628215660216320 2254425775883528012031924887355392 -278535079943230646526449853248045056 1725100458350466280344769005617152 2346010882620289049981825507655680 -873767586464569047625428781791969280 2219477294628368554660173990330368 2094237598099327535065718880993280 -766790983817042765894670013517791232 2954737339744772061964221619896320 5999960173979058152693904892231680 -463065713583522338505677462122266624 3323417642977974958599875801907200 6172466850386037803817978210287616 -14155229935086629859767900298018816 7194153348729801428826243437953024 8473028004673176013764573544841216 -532863950767217563902636086922313728 6980065593409737196815641846218752 5635718850062577175389790414045184 -552264477701972974216548676393762816 9824093507329336029118173401841664 9210097888465930307606054447349760 -400308619142381860525338358175498240 3542506278522784004603477036630016 2777981909206378015342893360742400 -130795076975985148812091762780667904 2739858693432226476654565995315200 6752512907754068115437091943350272 -426815804384705986797052485913542656 1506202202995746629009493907734528 2334422394358979689161165771898880 -750477822563244237368384939523833856 3757918462318194308050185059565568 4076949976147528838702414824472576 -922454214178305398974585520957423616 1423993267437179734927231527419904 3417203570665187608142839386472448 -997123486240392853757647625163636736 6639061388251937811425090080866304 8417579475576165042950718810488832 -819480270279272577585084677377490944 9664805936165325136583644304900096 2125946893657967874062408591867904 -834302269901368311094291972709416960 831589682479837484480882513281024 3395216890293959995263030134833152 -650822207725295326560966912247857152 3664158527866505614060502657269760 2717544906283282328994539819237376 -457218572177359146535020537640386560 2502347975231312440218599869644800 7925731471187603125356962057814016 -19762720676897259511591913249570816 5315068916994254069566740866531328 5527143902805877820903764592164864 -75361655549152379005512783310618624 5806436851661527950466099689029632 5965016265732746709587087172042752 -433276567989487319611800516628054016 8621686763452324413643151818883072 4770811183486201332388684579733504 -706104626408900749744396132568530944 8937267653380931823453471953125376 5176818035082931253265823124422656 -299027592358852623677647400019689472 515908855325980597597923774038016 2349118751278151774671418599407616 -509317031884733913542138218154033152 9064947593254981967910610782912512 7599709909304079398083416192712704 -867375383552331903404845617523982336 6811536020176430304921824675233792 2808778908618241207248964827480064 -235580559658893649329130721125597184 5383755851624806708487747042017280 4637058667866447818735920397418496 -191719750878605333454020110324858880 6953718536655883094480419972710400 4682490960933985521721249212923904 -68777287534090378065755813542100992 7526344376515910939656803621797888 1782101592438249572626282575822848 -146337289010940643388194780751069184 2735029774141089843262275541008384 7258712510654459278183303657553920 -322815028352208828051269596758409216 364796175772821087516999764934656 1643203587465729417306899728039936 -348403868804383373685144221223223296 5591246335673275484272597391114240 599337985402830502370393488097280 -762725152885774477442150113120092160 1079019942999674581947977327181824 8077291343940065439886501864275968 -321536490175001612452813767064944640 1580003974799172766263008286474240 6455435342173301113739554506932224 -548010175170166685548461674670850048 9176603484145150346848124012593152 3210447792707501015309779847872512 -39454046369864646930346738674827264 5341936461686110846183869920575488 1527690931681205939675794954518528 -718534611814018704969417862408044544 7545112344366355412287227282063360 7641644950950021010659901748281344 -51635036851106096712975194624360448 1884878497813335529590064934813696 2920901549512627448796865108115456 -223785109337253289649304355605577728 5882985812025706127305733188878336 2528691343218811203535391455969280 -710257758831645348151027421400793088 2518481798150724923128783684239360 3456062327622033707504309089861632 -635023601951727823648975666508988416 518880620623739601276721537482752 2836246572668031270122957867843584 -767549711880199269293679650361311232 7179439923415184168706683541913600 27114481154439159573859690086400 -49910974995029672689382870365503488 8603126735381244996845794442084352 5795185274603896111070611729547264 -364234797532387963873419371378376704 3822481877928910014535904522141696 9765299374229992646058944071991296 -174856277319988676472701893579112448 5184502447789471591720551339524096 9293865936119336725460125654974464 -379663897254784668011393779555631104 9685782853103532592798456461918208 2475727109194471871611073139310592 -144625982129410237340392174865350656 4484031103715037698632295982825472 2826167004539003555003718243975168 -885812489308218235834414718154440704 9432363201938174444360254785323008 2978020676265384185291304528248832 -170733657213233670213184673166655488 7238531401459671359973210005176320 9636150234038762914978025489563648 -576166116190863336385644695576903680 7050605015380270334486743493902336 7059046879241802459939761748443136 -405717395532587298224830842952220672 2216833733663420379911499311742976 755570963880829290183872101744640 -628386452790817459181259793658544128 9464360908288652242230571723390976 4213651561151413058318945434468352 -371438928611656196899837230681423872 1385024140944984959745908480671744 9955281348904297586405561776209920 -684028122049556818042556985139789824 4514050800575483163656409692766208 4422212758333170192823518482137088 -976839764685951102236100233627959296 9695130797546873259269564376547328 5696074388668109842031695919841280 -103897271141235690293060496147873792 3807525531794892582743317860581376 3316823085638103605555606061056000 -748064165345908355920981475566026752 4558423675539446086297868585402368 2885130829735895939960929322532864 -2214177350409975201282924103073792 4939518251526753870054984985346048 8143750841157120101366384964927488 -578228403636388680989916104394539008 290208362262792871286899545735168 420427098113539221505996312543232 -949553625060860461645618149465260032 4876447637912213848238306684305408 1035119276739484889324121816563712 -551293140754490367988121077968535552 7130862327577004219158361064603648 1898512519990058647038168500535296 -677712531319627019767588469776318464 6058646743671113851875643447312384 6866016160421299829446045947920384 -396156863220016355348343706980712448 849065399819325321482022305136640 1369639906558848534913399620894720 -475390952998132293385940739228172288 3555211889469037596455551146917888 4481247012228681073588852093878272 -601778073209235663815341022319214592 6034739271698016230788095765643264 8438736676583415778378864421502976 -340405808431355209132236902244548608 9159713550170342175955493194825728 5827375235483646480416260623433728 -25720229530207221831128160766263296 9538508247567830644402324536033280 1211867665934224223504573073981440 -136643548412011566572895915959386112 4226291370059103285423848795668480 7806519976301402103571799447961600 -425517712027645766477833205280931840 2127541897058840159694224812408832 8150201446329022212799353130582016 -220376451597211719659536806626459648 3348187182194361557834730330652672 7876180013983873415603107508781056 -51547386637119506919952894167875584 3645970668316174129811078678315008 2688336662578994427815166461607936 -809147967391850783031947855843557376 6138051200503107298692049385029632 1561875471543571783859251231850496 -355453362063492026130453194354982912 3130710375901364852556989764468736 3539787947633435363545670880329728 -174031895210661340767451930473529344 9048637649360451843393582199209984 3162525420440125036675388057583616 -645081664813396362976652123864825856 9053863169286634703785272987877376 2075109473629920955832397947994112 -522395143274052878060909053014441984 5544672962134061230936803386589184 5057037858960022745214859459166208 -783864226928861347241622782278107136 5441271648081871522221236674363392 3255464973843164091579764406484992 -979323684663592436307450387025100800 2254459138942733981863558325993472 7460649388663770027227677959651328 -401304572137037603020043152103833600 771711290851895536986426244595712 9393375887972567957639752843264000 -297250598455737161572823989693186048 8277296268955686024791203650732032 4757294704222173959286221436878848 -597761621598688258516375379086671872 7575002207082871293902024020590592 3871600623618143545397151184977920 -59767001430832473740885531197177856 1947314096965426305213181808607232 4578598038138074976985141213134848 -49731425615462198459957784770248704 8779119963779927136044786435227648 6813506933067399742172123682045952 -781466027220978984312554849417822208 3618021067914932870282905655443456 2329481357122173079523665010229248 -634351114482087830756879402425909248 8938105130452728494940183509073920 1942659871010089118652176447569920 -149453352534364720556275499437916160 2043744334773976316097642434134016 176464919730132854167304931377152 -222860045702534987771926071048404992 3827620643656609881617406900568064 4503330229701476244303384741412864 -858055461741278146692642101128069120 1768491181097765318416976698146816 6567688917819124383028081430888448 -247568457710364240131066252138381312 7506428997617382736708482931621888 235684062831862768725148359983104 -554968700425715578817306895828647936 7202109328062759117050628756471808 4990924087275915802014223905587200 -418823671555385936261137689309347840 6935012502497576789709940856979456 3348770646124189952123341755121664 -210187366800345887377618345478062080 9948277293336884233201187056254976 5127256038110704605013249791885312 -660467705047122374406104375520919552 9594325184297565981738468556931072 4463924905635581188669325965262848 -972519925118942248525727509432500224 7296326799035915634654030155743232 8804069225198063755454070925557760 -553102740239047895167166167948197888 4205184459315572464268275383009280 7367801718074541541304974788526080 -438788307492088893474348454280953856 3828645129870728978955339248435200 6844890369907570730373855620104192 -98389969361393525794547120644030464 7305556023180768363057552813981696 6465329400921000607010502935052288 -227545754093646924964807129629196288 9884124544182261108325485734002688 1298892216328922318995816055832576 -305653354300377643237109944425644032 3750646883550233569943565023313920 2592421547653441561079801106661376 -223147838743453886800434368689995776 2353968340191361926015335190757376 3544474649353072262164839051296768 -958576712753856718543554191650979840 8339397035398647506459108820647936 4168426845494697121559193084493824 -186209718193648403945187305249046528 7868207141334917050131857614569472 481752046348022374793648013312000 -38385327281319063253170047349161984 6704517907021270547923977023520768 4375942294292852364955485678338048 -955749575859899147222218062444888064 1817549340903484003040749412155392 3009032510952726166333369199099904 -770879269284390971205325132664930304 8120791441469406129834638633336832 4341308458161344187169373243310080 -764359070244434339892203285695692800 3065663647054657515645988721655808 2150368992663615053899444825096192 -707351726018240074707505315064053760 3169454821250564471195831738826752 18931095985322160844854083452928 -618130818826117410382076338757435392 3366244929719530699912729482756096 4932003177862447100510820645208064 -555425254626373074743459732760035328 624015511375914954667297221902336 7461652482278914752838984584396800 -219506048602301453526443596571475968 8193890232341749966931188508524544 3755828953453404227938404452532224 -903034247009721494098057238616735744 8938300327644380801368091128758272 9952693728692343981396947921534976 -844987090254121923122810437448499200 5355469343072302374752498437062656 6688481784775365158292155311063040 -679215281361914158988763823324790784 2782464086688384349082720590102528 6440621133780085373032863379750912 -830786980851907569394478290869157888 8694187169563203318399512392761344 5496811947877679520457779583123456 -385986628402640776523855630321057792 7876289009687094375487698538332160 8240672640163009555377422990311424 -530055282154825760895783025713872896 2275488614980720531053670121340928 3165199440191044126841447305445376 -36691783566183463047864231428882432 6157921700291088985420298016784384 5496271763548031047743989149073408 -476320444390647459651040349314351104 5377252529295933797713360097116160 6826164600968477693628056428609536 -507462305561188933458803197252468736 1128481416304069786478313639772160 9396945734127053731777523803488256 -533085265645950338333070834563809280 2745645177820945388178718580539392 5292339383924469773919986993070080 -509366262454399455902017078811426816 1560005857500327659467179477172224 3274820538037244273482460485910528 -661393114804603057132009638670106624 8975456255173897761637342401003520 259766206617879847672656391307264 -511710988321296709447723326304681984 2011163744675441707605286329516032 460659466941132182225116133851136 -866995965997750772114776041807937536 4088417301799047237016396817760256 5640800704859265165204319155257344 -371401921187553127743186652008284160 443800490655156094676444343435264 4602333604432969862438433484439552 -43478539954824916240586821634883584 4054487717628962525692469685780480 7529633910783967558645977765117952 -366220245063816056622160433182146560 6889763990319724966788659423477760 8598272401588140448979886343716864 -697193911557873972397513598964858880 9470734771051793765771754774462464 1888686063894240293065252252155904 -664119606053267956882358667296374784 2177278323299484713142400751501312 7272242846927557485687908201398272 -887159089934272524374627521788903424 1154987666828528450670569977806848 9173806123540517081989720112627712 -888760462591916200884635192526897152 620424289488719320225917494624256 6201091450580423994075430405537792 -110025087410711617915889893033115648 5242601229192179996383805723115520 7961515960433682796374570301390848 -330022202874067694806031988649099264 3129438772041390058402379598921728 6724815997261459798519302999506944 -289141674381741005247982124490817536 6250572218070567537142823825440768 3336937259902502910972451824336896 -382785182291937648622339383583834112 2795838595582030170546231587110912 4284286609957518701878108932276224 -641980438794876690598473729914699776 3722676869885274264414325397520384 5616934047203955070618556757442560 -325894812111956794437799044314038272 5983293648668693041137644055035904 2496071539917058603042954733944832 -59614554101845130459835498447765504 6038679533306316149890287946170368 5163778295933982634645194796957696 -29595934643695975275993840425631744 5158706633955303315395902443618304 1458864042210387885473467671248896 -439599706750403736679013962974494720 9083217055261395560659764125892608 8310912362416819109083356264923136 -899972902856396016495585059479224320 3583644925982721374337072231350272 3425618907051606682638780614049792 -457640076658476306393895648089866240 93155575222546621292821767782400 5041063458541867861859418905772032 -558771328753037954893678234103185408 2741669381014341722730904619581440 918684555718952934816922243956736 -860978584650930324428931584283901952 6785504075164772575766305163968512 3476787503306744783059587839295488 -605666202354549621053896034166505472 2767394941073351756261833203253248 4962967164597372768180157907206144 -605348468541798267494464939335090176 5205220419416721023122105291505664 4110415495169202678448805405261824 -73068146166431274269290941839835136 4513890945188211222735893353725952 8814921091587850069911391801704448 -976461343313828380879007034141310976 3196056227335437772293554661490688 8227420664658866812216251248541696 -31544943390494061022228833665810432 3361158326990537036892250709164032 5057000113233479135890307907846144 -670205099384395157395488574550310912 1848079250000813863179972488724480 6613413083318399886147817983442944 -780991996925879136283588566867509248 5395243137735353599790799382380544 8763693284885523455589184264208384 -194555702802851296656302476693078016 8571041478129513337948126691983360 5455383474196237944879106924478464 -540671845912228611055225514626121728 5348959450674928152948999404388352 2879397014957767587805736235696128 -839777028055261901192326018485977088 7443107883099569754375416635719680 2373920889135289550353254722830336 -444270462470842274398122512501178368 4948478091945724948032672663339008 1194570195610785233741270845751296 -342449778336246013527524281247858688 8079857649779541794611896208326656 1112809279186196233012586393632768 -832372525037267540493754966548152320 2427208080657275320033368923439104 6816710321102434494809701137514496 -520022755462320699389144882170822656 8778551503564844888409314313633792 743253278827085206935807996198912 -608134844704007839251746553937788928 7001719189482155951474467902849024 1437717187577713590009571861069824 -64956206715115715174481904455909376 6207739455763195952225002981425152 7693012370198733224262837087502336 -468332571248015817541617152826540032 4405945214452938937101834757603328 1846591757804235669603904093421568 -756691560149001594484577876022657024 4172316707932664852856716832800768 928804136806383524525936853647360 -47625107643811821351753506382413824 6338416983747695766285873856905216 5688762488380396444987058034835456 -968871057430165271460243221403140096 2292538465703031811735325776019456 4570854008121836465806407477755904 -471484766393932713269622185310289920 9114710572994245119550160073916416 8321809115626177721215496000372736 -217178677983802737546062581859352576 1860732796249522998942830325399552 9761208022413106938370269988782080 -626825600408161838336968034885828608 4673908509847426264263108463689728 9797276837739581796446463259049984 -371919259098234264204223142785187840 5085828184604373874815021384466432 3094937132534417597698954479271936 -707459941469643709156704165629526016 318367096695454414612422864142336 5715315380239575872333425674289152 -560989216920831374016623534327988224 8836565520275685500571733427486720 5587327609459076901162449048174592 -749950099135651373317219716863885312 3304687807641918551127455478841344 1942394532158290093376900457037824 -993901873615438203891911949065125888 8612073036509734187083417964773376 5042503309993807510561553429561344 -831818604340784422725412265002008576 6468584601951835966253763888414720 5860362192254049386622168153980928 -904578926337594572125056402976669696 3301326871444813699197782856826880 64203941976312207836656317759488 -509769949018583325091996433807048704 7547198864470600771830505512370176 8216623208580970034863013854445568 -626221738811763097201240451888185344 7638201816697014650649323874811904 9578303608305100663364368554000384 -612130853303185447343429440791117824 1180456740754149004056666329579520 2204379478631029067325644812058624 -184313269151055279919466528911654912 6320311121150317780745882435584000 8148668371963675031408573937614848 -691603319541397120341111500464717824 2451362205105895916396301573423104 9494991357920079498666929534533632 -814372825535241947723622760474214400 959309475650897154341916272230400 4137395937643234058223033302122496 -806062652501165039284643453770661888 676543509437411919673938380062720 7208321823311997379976968464760832 -219941960734942710333264515689349120 5668441534856159189575321562120192 3990020275804309898871303682654208 -47357889035140869361960821817606144 4345009246776292194041765344313344 8427965172299485846435118282964992 -995115832444471999265826397390635008 4008609133919091144635251741949952 2944132787447178119458400648560640 -280400023712578861345195733200928768 9305976519538041136662690440151040 3877249408188805003216284733669376 -209666418042928274430442773875261440 5343133926558234230470002792726528 6211412611638909247268596259749888 -434843229685138468704104431124217856 9851122483947740241284869732171776 5415660510141320588728100286627840 -68580841579324540705010922452680704 1862306126117776589171578290307072 6486007339671171519830494495637504 -746778503005884225040267941074960384 2076755227808230796046538637312000 16159822260762195669976589795328 -60982034797604280865585963888279552 7182134182954576306215939739746304 1884776262520123373202839540072448 -511977770641764073352338615708942336 180118701589404558816617875636224 5583219345855728235481577503588352 -457418132420103903384018822931415040 4621302413859517878905207884087296 9848158000933938706166510295973888 -350142221156338874310407975335886848 5966137801765143155739357377200128 459079823362735707279171170336768 -829313033082762026839169292964986880 3591898661623958772401474832957440 9151387381061808645015923106775040 -808519993511991708282845106628722688 9120616262770457596486404729208832 9220022362953844701519410043551744 -284471517195663150776899739651670016 3276644576016545998653004617613312 3280477280322384246010136894636032 -740980638479642867293997625421856768 5288531972848347169509217201553408 6094666997225513443306517546663936 -755629971048224074750482997720383488 6331686857287309931749792708296704 1082775405993892370523442714247168 -272301473810527901320441571083026432 206008387588010162827634661130240 1436310892578904156668429730840576 -783755240266781383715860258911944704 7395831958462871942108830404444160 3139893397702338035995733525528576 -3168684893267252359227257345015808 1207132873717667621379671783899136 9597110262828201255197704546418688 -14627184294910972257097217696858112 4885446448989900392774197724577792 2483428336990511748256626655625216 -758025628782416418305099460373381120 9614815409242988480795394684485632 6779049411304933451522214971047936 -5932713710079123220996258852241408 3565585551319480897517962060103680 5987537246557079732553572704845824 -425743581640106365110209708537413632 6757958588017389980545816666832896 4241238599407329774565497287737344 -7042181415274916501273296410509312 2728528111234600882796996352540672 7722344232637969788278919862943744 -917725100945892510433775417364054016 4034262390940296046786538152919040 3116050409191084967451061877997568 -563632130700649381650350134601449472 9932831700939752099061429451096064 7186289255263067027419370581131264 -699449684636320684980099607085187072 7309538941161726369900539360051200 2051764934103095282262483820085248 -151709090952457272575305312452476928 2544585280177534085648106049765376 938446167262113130794340801576960 -506672722284483808191685093595545600 1835037114638727782196930691465216 6496790556452775790993739823972352 -41194372216296694185957168936648704 6865178838354285028793375766085632 1912530281994277706001730924183552 -828906254310659929350948872274313216 4287927781262767959565743209578496 7735315758117166593341222673186816 -422401557873584716191399526283608064 6320140463531364823170271542247424 864691778240771594178577513316352 -622987141795532595860395679234916352 6099164823172668791339948997345280 2364906288401526220119904972963840 -254989433435387454141782657335296000 53110290711360363931700100595712 3804608727914874273037219090399232 -823659497530108749714607270950600704 9368278990276720974141148614361088 196693643490069182993658730774528 -686339796691717774450646770696323072 9997488735408963135723533951303680 9862322722337137449207090315788288 -570784648112839458947175735808229376 5004051243688230047365055085805568 468400839729265055759939537993728 -468679922864965648970114972275179520 9447074728338313623109026678046720 6065136454587834342059743199100928 -982753544205645657710063837503291392 4451581904381031227149827698589696 6497286153366959417532982210068480 -344607157140998253983706551718772736 9027582330591096390213363350634496 5795355545435002306969761623310336 -43779028469867700616763493788418048 9243219688327534411923310667366400 2191780235235807261344536060755968 -862540195519291867426482637137510400 5641903209169098792127788782452736 3890312580042134999259685882691584 -508756112621361038459471186813255680 4561475852093641625900204372787200 7317515215538564856277584620552192 -230954433303876906988237646572027904 2926305720108971726562564098752512 6930464234334335833170248938291200 -37414174355117725641175355640250368 4900927774635871564795210520068096 3318879346611113398769825213317120 -941283435562644859169833352905621504 2637968602080905462267676140240896 8480934688495719370508430173274112 -725435511358031482203313486323253248 3135555840109793182141616010297344 6571201073206092500065485611597824 -861367476650586631343078624179781632 9809933913093251336774802491834368 3917134559431486434793992640004096 -12051036824299239816885024787005440 2084234870680221867579695551217664 3899808501608850015003421970530304 -706886337467241182413316354322989056 9406202368385315587596448117555200 5301649119075135319999447195189248 -563794792555172863409603587159883776 8908986738614081734093101779124224 6997076746697955300155679842500608 -625492754613927866393724942439940096 6044482209557012477540863056019456 7272498516439497571820029108813824 -837928582298206314525481331708657664 8423418919666360449792305098915840 6525467697276477369941911075291136 -277786985523896355760652557735690240 4408011643668667108003526540787712 6566011639584065263463972493852672 -257034330972160174404148933104238592 1836749966461231581650098231181312 4573673326245147196962418360057856 -236324713219162139684919471264235520 8819433179802386141847253931786240 3577881360133456489056536224595968 -786248661069829316684098035934822400 3917632781289460849623733444280320 5020911127187789045485301441495040 -104234902336335250154226249575170048 2712444650700579135239983925821440 8003801058076913580828093201776640 -603339795103354888191621462788931584 9266452069915349406382261736046592 5026077046670539397497508272799744 -574410005422396253444492834551889920 3440467778766272051287868798140416 2097944579152167091876775315111936 -790698605980183408849608096534757376 9886937708256823528929278319132672 15378477887672363716680970403840 -940016215139438292428452197465849856 4366275871716165455331743697469440 3697260772527395150114243932585984 -764287722516232887477476121445924864 929232708198046174634572716703744 1270035361012495060176080885252096 -499234539757181354676550558828986368 4775899542334542653750019421634560 2830568730927216156113721528156160 -690241829114971420134054891781881856 9428886755224756801708598948265984 3151481169091573996325705305030656 -868895894466202038327762305178140672 3347488543937271294388536608817152 417250935955226495455662878752768 -313342722242728987068649196180471808 6989130774498105800809285695832064 5164971955424115507229815864295424 -899186940246713131938483387678851072 560873928718342626542962354421760 2678730018421612420960397639548928 -905196800857686586090174248392851456 3464955928459813727519769272254464 9462416476774628564478413816987648 -976420546236786081024435796700037120 5871232550021985718615072105824256 6648225118919576815314496777093120 -529364838142419054178225696253411328 5793111977519758370501100673433600 8734188970318844765652445401448448 -374087525803606568974362465798193152 2452867772660875738717077681209344 4840860080454257143408289959116800 -657882697920905837387138683862253568 5421361733987722392969553972822016 5962680251688185420123573894250496 -843754719113804895288048580686774272 7302386182441625960503826052022272 5064637000362806900635550387011584 -826443590420373270008418258330320896 5290135690829112649666769293672448 6975520535028666775935533541490688 -27193045251068327463598753451081728 3011033345337663264609536888012800 4013081222989077144374833089347584 -766397320857094595926015251241238528 9414755547384921385905835709825024 6402083051670973586215779841343488 -411911313336727415223427178178805760 9641215698922939926512755206520832 5132217826404483410303047824310272 -777439744772695877553761002526343168 7277515708194269421840628988248064 1229965922268242672650449324081152 -89492120510670530812532024722587648 7245089897070675652722808921784320 2044183501189544376090400451985408 -347099827738362706941525890967797760 5160238285337941042174387202031616 4236246667149743391723721374826496 -182599093493125422795543139745529856 7449295542580397296829306845003776 3348988465503600974669682122424320 -153360223858614637894552235775361024 2720487121612854682416912342712320 7665844731293281473470836466778112 -915073793853820037947635250606637056 890259418611928067689770198761472 1860287131887127331305320926412800 -152954453689004871807986507708366848 5155763185984531593902874398031872 9784633211084259330262632258076672 -232767800971184994577123395422388224 5876845328119186137566740912013312 7646940549571918498786631873462272 -586070026751099631050614286671937536 7501639666107659697419000806899712 2769253717548185207139332106747904 -435754634333752573308501818129514496 9781133053785227551426095744024576 4589286255968246251399277260570624 -840233802622495136657811166784913408 4354129866662383211395313186111488 8846274603881640679251415773741056 -31820504395955807053492798319755264 4026113777999240771639840555925504 2045955262606912830666660317757440 -239453657922931469038887833064964096 941684580831152539021131798020096 6717163375731463575346817106182144 -666183233958814506093399758400913408 5020558084034155498822829952991232 4343923781629998655848674601467904 -253589714285941118088345325378994176 1907094548952043791803379167002624 7955686491192278927617712323559424 -250796510083021658363822333587619840 4309430007797155794823208457207808 4548522395868021013910930707185664 -594594690313598192473884687287189504 5641086737908428001308985039781888 794093879561387566289404313993216 -629104713789261429371425426637848576 282535628321401091797368315052032 3077546979641984309285789311696896 -916665355298716691282791423438487552 9036176655440929302352286537744384 9574749805112633564347648098435072 -523828659248711764501585354561683456 7209152599885804044782051832889344 4813303800232435143804738579988480 -960969290395228491174910727192313856 2505572628488242128001612411568128 2639466196503355495200791937941504 -190797052401250516092528686480228352 3594880443212065991963226606141440 9016338161746289228021921380040704 -623630006550831062750789879799480320 7047206509984282472029989774557184 4027486774351489274775201636155392 -989901859441693442769487024812457984 7714398473750723204872621669744640 9912981095593953231682954393026560 -255365624135968634813716845945683968 9315243401869714225709543403290624 8999436725533993457249534221484032 -986622680750301165974245285602263040 8251472365076966087894140127805440 9932156257499151733602405750669312 -163296300647145910697176297577119744 4975133367998071525776747745247232 7009770046494297247224468860829696 -878116749398608975107978366860394496 9463037342532919829847162950254592 9096900715242408790363723563794432 -409803395738114859908096872553644032 4931356360310184954507314132418560 5615937846032508478170576252305408 -183943861400671903174827289922764800 6583067174684169925571704778653696 8729576132758235777210972131819520 -172892090320862632937433534935597056 8832535406801739829451231191891968 7330685883334123914045656416649216 -947927323513631884992492476588621824 6941100858742119367556259370762240 2575138813924954602613304486526976 -745736442474760187602317559851909120 2484209992977364046365207402905600 6909011237293514349911006393663488 -972653585338741095571974940329508864 1669219742821310360764960529711104 2363111674461547971787444543553536 -906165111387819965074148592678076416 8309690514580975133797522453037056 6996418901235772105865585414373376 -151098849878909685868405431293968384 6416612633131472010467834865909760 1440380954598605212794657274068992 -940409294745067156736380631938760704 8422394353621546191070907519205376 1822483576288726716649727674286080 -241197286683831147909223360451575808 1647885122180898094941522460934144 1261369287283125214817612596248576 -387167583087326578153317012724514816 1158271171372502757276936797421568 7633206389066996309627348174503936 -480741675508361280914790975040126976 962203961247893180428541489053696 4613203518553452489083849818505216 -307463519504141242381870529102479360 324472836001613712150673942904832 5247314932714500532778485470461952 -238339819810225542217045255556956160 5118923853091937817089476611014656 9388963502147802457061577726099456 -271507945069549822669495286770958336 5192751670333882654639519728402432 418467291358987161352157016358912 -298997957834349187885827311861235712 6998728014831221917518224517234688 8455579562360988915608760302436352 -152627420097369691297398361390317568 1874360965229820223465142821584896 184208719411518846556390092177408 -486606688201992916926429444974837760 3339966709862955433116630482157568 7894618613929568532666085908938752 -837421907316362718800131421015900160 4873189403626865093368418750431232 9816103662981898773530117054398464 -595292128447947282021113182835179520 7514532817383412092690252269879296 8685937725997164134546453552955392 -124283820552119954659673169652088832 4509123540517049921194575886548992 5462934405434048165206868593999872 -640935033483976011932223298554822656 6563164142272281583114266718765056 5565300163920646382761648150544384 -921333212957740652737489761736851456 97236370404669383864683824414720 8555188808293268111809945941311488 -849690441895976134353060165561876480 8433504420822512389754938692993024 1133077053435544558874895507783680 -372667752850606163127514145637793792 997139271685938466533080085561344 4093068282635483942827964116238336 -192308083654966458312940572595191808 5360365158904683228630086137675776 2900926823476606897510395345371136 -751043474451739230625077097761079296 9600578008775579226293059094315008 2837065240643088400951256798986240 -32205876789384682230332249010601984 6216870580081055692369672068399104 5603822310526137666554749457006592 -219020165049401818327542766145372160 4142693424418170551969213042393088 6136426785272565001638891963285504 -383251263233137345496255238716260352 3841378626862159172059803976466432 3715531602261106987901714897567744 -507774451807524152581888913134583808 9686922066945046559649891902029824 1782152076095892867737085273964544 -147497387856117525091379284640006144 4995831598739708789531303053623296 4624102336443507823329148105916416 -894638202499758786550290792837021696 421645122096924729407689499607040 1572099476929576385546932306575360 -144857846456151623762627551167512576 389205796258137203699747896950784 5159705137695336956471139694018560 -399785394783169958620366050674343936 4108766945624270922043640535580672 6697684786954044063978825659187200 -755979424370908710418560198541049856 2934706794228008347773817736658944 2527779079356350130777283769663488 -536969456997142399841376736433405952 4804534525688448754035851524046848 7082902558137774974298225261936640 -285286167377914329410723831682695168 1707229824373607035991852696207360 9804219409367136699270811923513344 -849011065665459820807319491276963840 7421682808888866613050437904891904 8741453813252087281369839711551488 -187547651930597629719568976474800128 2785522653731007883080858727350272 5571458841405405825554507104256000 -328240254294314862450189118451220480 801011056605651495668615422672896 8307440778803131669650217837264896 -243426976889024719057054942126669824 8879633188828375834008277682749440 5468481323184865903687568982016000 -270701683754605439255526418163957760 5656124397855855130627102518280192 7686513605460654170770504352268288 -462743351431647317408681824169754624 7751322876844124578887831746772992 9631788798490186091335093122498560 -836614847640279198697431578443776000 9463495477706622076720906332274688 1234387483186617711027419900542976 -244547973359706084970217391762964480 5737233388031532647745968461053952 9878981576971496687706690910420992 -9992229414504110183279138919415808 9186562509839498521301882448642048 2154797470600980391814950264242176 -196689355771950847605061322507550720 2616057376221835353624799613026304 9397646145369755012066085942853632 -395013665394985238931248282857373696 7582073879116015562378975530450944 6183679189665158764262236430008320 -908760066667676956271523154110709760 1838648376815646782780469845950464 7828375388784553908521668119101440 -721621482316222154423468036261412864 1630255537736667122138585623429120 9255610126171362479339806979522560 -386466000592317576651472467308576768 583279412840213067107573509914624 8601109483456089874350958564081664 -278878962724740000839750742280503296 6677990259241226754229196659097600 437716724285726763094016341835776 -103215546618337317311972957218668544 2768158452632543745920194029027328 8266540347120057704119508049854464 -257277452477412244154842583173955584 7255899547682844290490231462821888 1066134298237907747161450729177088 -124313995185629626397940545585414144 5180024726544686378837388614959104 4284505229092112157055946378444800 -210028356743059708179541825740079104 5373113610460278406171410351259648 4765323221428414964029260140904448 -345467470436167850895895359041568768 4951008904028451784252473636552704 3288593724456287950627153628889088 -185505690790409525750000686771208192 4982448458149279382143617611071488 9385222568540761813587885926907904 -205628984387072687324986216823128064 8079432767154234051176126404886528 2088773807140872366740175086157824 -218999420700846161194257081893388288 7496826742232162652096806183239680 283098160165973763475422817812480 -336302330751381714860799256455806976 7698185535180501177651054036123648 6112444710745489071301789254418432 -173829104744036759674766824222752768 2945674551817128202497151956156416 2574938127353632353150242817835008 -861564892407479317013409179231059968 8036854949777700488141230194032640 2068479419480888519368200159232000 -939983414031488699687136313424740352 7071856123888687658143968082788352 9489241552382924622060548134010880 -951871956752356131960765658601357312 3417368857124309023453207498588160 9309107486315431204229209848283136 -450888422894714502971857735784595456 7980766633710646322662733305085952 1224248104353967721770003877330944 -890931191070499788981912510960500736 8967212414550756740274202878148608 9711995786690668733045095369015296 -791729879061610396016992842200121344 5866412535652252366290156435537920 2156934016901563547534365902766080 -364477247347495740229857889434468352 1151348544785924352186600650702848 7936356685398244516129286213599232 -104697793843896631538928506906869760 5527229582420357187734682745176064 2382001378998728113767558877806592 -285136523804889106415897054875222016 2265708766487093917388831262244864 8646349379355210827179063760650240 -277484330442941085716956932479123456 2189107965499410393847654313361408 7980720316199339941842377817194496 -847736354866489458428242181824184320 1566099019984994649782493388996608 1286540219560833254007070550654976 -982742880811612221965466197710340096 3359783726471308875492731043971072 4714046659560090855145007539552256 -362120613632519559678498867976863744 9657181773153248146341236817526784 5489747989566295122199832655036416 -980760567963284024443144026202308608 4624044579659144492589484553011200 4313463952832582616306054487605248 -405173687676700557365984544528793600 4064219205453463899696095129763840 1849185307990897322855558813843456 -43889293636475046034160022743678976 1947077549768186445978802768052224 6012977071366835188618542589149184 -539839379802919770809912276883079168 1891649014862731838078547686064128 7114632165606558605257958808879104 -252267752862188001066199149076021248 489337986253574756900239329722368 388775614594669243482492767305728 -923640496187398786793957912668536832 8413473591319688175287739172782080 7422845196023992326386366589960192 -468891106948780479393564906372464640 8913152499591025252496861906862080 896026694750423272957275600322560 -447188635614000093122539727267823616 3029454672732553632777400848744448 3143130807360832266771082403381248 -755790507432012520872366608228548608 5346301633547423248817691855683584 5169035315341624481509090076393472 -773246733244764466703068724532871168 1612037943981464480877964135759872 538628932368507861235301986861056 -257784156439335014569433997066108928 3674935590599361574671529688432640 6725081446624071731340119608655872 -600443162824692314007975381123989504 9758275183280093429154858301128704 1021103588573201570672364251774976 -66287075484733995658122442336894976 4481169666511072422357382773866496 7587183946833705524233233076584448 -425357896099329614148470881503936512 9317887579957360816233199200894976 3967983710427674567062220724764672 -667302808388992092612703848461500416 767974746017016959871014594936832 7819891140326773324261294000308224 -634005888030936992232983131731263488 2543137995937481484476794842120192 8862141445393133545078728190590976 -128748952460020300260794345824714752 2304745682920265471191729206984704 1379469483448902956733411792781312 -619171615727819437676412405398110208 392464190204880748907396646043648 1101568722329459660448939548606464 -949296788134025653078932440316116992 8171219814626390822937154868477952 724263314689454009947634521866240 -90187037676322302477501695413714944 1085796494429767851705243753512960 5685378415674621587254765363920896 -301988053475068984662183689725149184 1707819100058306230675098325483520 5613603058524321121106039928782848 -189265855708350663447463543114301440 1513613549314875413691635423248384 4886061995791356301772832391561216 -834110170123916680323831398167216128 3427719766201517515475124685373440 5194446924177967553541501085548544 -768465379890317735576376512052461568 2547733817305640619512960903020544 4485331018797175636337689981091840 -582745690090505282221779884605177856 9046251457167185334137986333278208 2759365511996913047946055506722816 -99875751373221783085004630815408128 4305770268335470617287851335745536 8817813980726894092686050220572672 -906650648817957440785451329026785280 5035121419998316259437373112188928 6845340881951647344163398040420352 -983893067543506851707758040238260224 7548688000671513370418821124325376 2909326235120845697655197336076288 -352183850743934258488094010929840128 7220160414927293287425464504156160 1056376803364031776938871037624320 -53882577483451849897266198364553216 2796692854010797645608110683848704 356635243972829250823398730235904 -9315093820491934180478419438927872 4349995752618641589651844697686016 2940028973976225138962515040927744 -737243396751527723313228675056402432 5317852308474802958464018362138624 5032834171881196151973261713866752 -559581422821557913307643137046347776 8361283886003024534939288119279616 7248506100194457688676831812648960 -483224385227115315492754834824626176 908284825458901274593663219924992 2301345872761407419583720776007680 -872799798103392978648259999360352256 3228725677598722097313878927998976 614715351920557213419894999089152 -265647532505094211419489588152893440 9271480521363105466149612246007808 8462096793901931728984178480381952 -836405548265503195919315705947750400 8593215390268890114014058509238272 6320341461716448854241474978512896 -783773033343647052808328266091855872 7969040953691377388419266084077568 7642351482508942731576152879529984 -753376403496315090969907369229680640 3384040671051524834376488105017344 935949705282873218664974581235712 -651388640484492597735445475323019264 8026280992800396492293383038959616 2213375168914478967553687625400320 -198811605876428076197261122637660160 5433821510684099434692696927633408 3606073052367013284051072267059200 -340648013344755519531731064279007232 3284436705686941790384237020446720 6912237310480739045088217175949312 -563462042736250817856370578265473024 2264177483577823762968010282762240 8468441507298580978192120763383808 -309420523305223745634045350895419392 4611194812389558626075787676090368 2457123363980583975332709570445312 -501488871314811467995533701732630528 7574027039350256475139315886718976 4012560613778822198565670750257152 -841607629370376214525957789288759296 8567265127544008501820228986994688 31768241939446241184955704016896 -336640780847417494595138675133120512 2983553853622769720817458853445632 7628245851884882882535795460145152 -615644731512432197080478053683953664 2461366994153285876390020322951168 4657781863357772703023422557388800 -127299700023718594054491506869272576 5352670861941485589225433232048128 4043077794102291102886912835190784 -709403028032489354201287361904508928 3760388161986842984083463040139264 3151657593971429655698578102812672 -441503095164400657250914534508462080 2122970383480315482667935852396544 7484175062613614946911473488625664 -460723184497944255249300793728172032 4086615872193653010837860064952320 6445857340770524143606329042272256 -732904942446709690539289421327368192 8073122822933231103303076611620864 9290539838167138872183490793701376 -357597813682578562354823556031840256 1042487949819693092455085072449536 3937174002160628225057776809803776 -727266356804721692687091734333620224 6148478718507174388656643999006720 6728742346605282861792147697303552 -926097272249150952633241949643472896 8673420401328400435213628057059328 6835442864265388993331172091101184 -498044686006653062312736592523952128 8315045590769857124679431571374080 3667798022883104680633755311800320 -51010213604519854361017014548430848 3921834491880257310302427089469440 4952483612195762712352978806767616 -163361695831311793689084498475483136 5536193506102554418479751600537600 9019222755377602315819063181312000 -285287429627332685282003680858472448 327422147930247556045866948100096 2982298489171152582761730493382656 -885247301003066455920991289250676736 5021451443551127712556180815478784 6959720686755381262164514379399168 -363988454693150929528809670020431872 726881264706098459778997924397056 6337704024915406039674204090007552 -213534265813157739306932391630602240 4230914937729721604748688974938112 451127118380581207782548846936064 -517362963352289454093833122151923712 4457369097932798910631426046033920 6289928489170553957272368835461120 -600454329212306393302866812683157504 4088941062483653979222097405149184 5398770493283403962155412649672704 -961699387016358904159535632683630592 9167806741179937819783046845431808 1269925579367941731864913538711552 -495882420000772186557913579858690048 8007298593484569018592227491840000 3202391883858319199121938497667072 -454777358520930887742116612454481920 5578668701398028198759832961941504 741766147394850101299349261647872 -831427715226327731153938425967542272 6526909783831946021579234520072192 5569851663388937179385105066491904 -507398971742129095650229038614577152 322191783374795926906027137564672 4761339870561444056972381275553792 -553601277545438716460622425870041088 9165511977391591404253307364966400 6996089703753856184041675130142720 -87230001235425349822786932173701120 3705849351639201206115572778008576 8243606314387932560010424688312320 -599591447402855722828202493809262592 7279608985656110002354305114308608 418250136648656163647543769563136 -165918901921664585478605887309348864 96206830749308087240353149616128 9028627320661070076530175135186944 -974598189787806713121381604655104000 7189267920713550089831429340921856 5553258550881123949968818532515840 -251040152682163094540362046628691968 2951806789366497266553402825900032 7922460905677676369793131002986496 -716638371022903072812237900149161984 5286507209908581108410669972062208 61152284243652669504749467336704 -798474788980476004346921458534973440 8945654371588038459948642793947136 5464124428360821308207435385667584 -780244511471063747390112847856926720 9907801117999181730054124253216768 6713920912631726748968302692794368 -194779776347034061216153868435456000 4527457952603849413085779191660544 3064827066435006408361770253025280 -925320581192821106940682381863944192 3762582095150207796749850491486208 4232848955404110796844529256235008 -240808799537227582750741953389789184 3002212136525623996707711175622656 1077169967040256796148803081076736 -475780361486470924432578649071288320 7964467998659679840726478258962432 524559738051507143770235245428736 -271555262255033147173149843990249472 7538583610587927304875061977022464 1813651907538884806941519955099648 -513461455087869005729054204595535872 7456843457429958632953458490081280 1987756812546960571648743619690496 -69579071716037940355409131276861440 6550862868653926917879054565638144 9438857650025763837841975394959360 -499905656711652766437259106609790976 1253436337000435469188701005807616 1891268966854002224035101488971776 -255629028091373029826970946732294144 5210023400727740875309825252130816 6949416319263519989732882415353856 -495515343677789481061569356864946176 9628618497237324319089357179846656 6741410331649033896715658970791936 -140344336625067951146564347385348096 9870804172375882822979848666873856 6038476270941786580196016890314752 -760627205071250160999688495196798976 4917159689673250389818372649910272 7284282561052604142952959029805056 -23108254999491939530602392473042944 1594380323143889540759383581917184 8642645671048975914752553036808192 -724170707617523930281683161641385984 9567335026385508083131773498687488 3248381900926104959648446260707328 -612439916391756449117912826099269632 1414299258219427999007012015833088 5258841933983538148922527563382784 -536499896020212475314658807675617280 3417063508366522291382193095704576 6035288364001480702405100267634688 -385852906997479786249734843797602304 9873515715227518785135557692358656 9263456045978535233412421702909952 -274282928187422946974559648977256448 2069556294371952987707521017839616 9741959614919788143566738230870016 -760983089701355196828826183810416640 7934768304268864539274939664957440 1696525971892139405562418554732544 -617156700362992526357305778346393600 6028660672333056128996529733107712 4929030106197618858934392619794432 -676011085940851721829536467028803584 3818734418747337888012729845809152 6261438426558431466268297523101696 -893969729349904431414641071845539840 9236608506239674471920982992879616 7598396453483247200585186988261376 -924181494608359174676147749483708416 4489928778917167599492732676997120 9959046310815538430422449980964864 -616565164962827319032534417423728640 2560678271912897124706872989843456 3235512633711211122759192824250368 -678021255650650581827379359035424768 8697391575322633024463076576985088 947518213166478154274400412631040 -346458130766770241551221633606221824 5810678992834675011502195385303040 4691977454101148389666657667121152 -34656793697745666378597637587730432 9292400759153365935939870391271424 8032304222436889689896419619504128 -457012894079477765080362862946287616 533496951626107739047275341545472 4337954365257356882647499227004928 -936915852342235226029387501552009216 376437510172380669755366960005120 9785533848384565796165256099135488 -955648966559900407006866210511912960 1096998472072248927121243828649984 6609217711013036963352055283449856 -810734638875611566310770650506067968 7031678823937234284070555906736128 5974470350600666758244896033734656 -28059853349415432439532072569143296 2925062588580767958925210011303936 3651237235791421779599745427177472 -797435109251952428873163655264337920 1457106300515898205818513533173760 6070727683477081054971438192132096 -326398572312080450147615758627110912 8691095994722586995682360988532736 4774670573324347219372774541754368 -961586369169512523432829149991927808 2057646560238378190026429924638720 4533921518332677947639900277833728 -18919009969371382861275977792618496 6543608516338602484287108435410944 4852490522030000679223224562614272 -805081910269055800070084309802811392 3673305550903045269468785386979328 13064172712461664804729048268800 -580433521039722093352029162047537152 5316125561254085661683015688912896 1868353207530814576667111553236992 -752069416213423416520315195753496576 2664909513633130768070874629144576 8260003675545830617100665338462208 -402404092458724929439215370987634688 1894037316230662303353545949184000 3383972360684811042168671186190336 -566214917890418823808661257589882880 7122544951274860427727180757204992 8903238529534882463678389072953344 -954850970041015948295636951645552640 1879190596736417193729213715185664 2246202858188403839195884055166976 -223095659662105775624871204031037440 1678519676598428790956809770762240 4037501392400131090752391297892352 -183259129780476883161262688181420032 2941074515152052432106139626242048 6534765858067983053909134988541952 -329277133492079272160258661222973440 9714712909514110028292266670424064 6962895732888136566241113373933568 -563105522456359451042821007827009536 2440382834768473536635037332537344 8895396023665243854776431458385920 -616221802360399166053286564054695936 6884882039205440728767959924736000 8265780378479677336153053988913152 -27407011765333416307743939746594816 1067597835700168789212504883462144 5294863127035838454639743696109568 -44871173741819681753254924633767936 7679991375733878241983640541069312 6376962890089380619097878747414528 -971683636541539861448088122283786240 4063586757626984684917353693052928 1171462903287008452588594834440192 -558406814188994094480810132834877440 8148982330895368927283342919860224 2320468027418748897982902997876736 -354976432326973504842884466140512256 6157597482524541898262500480122880 2311277080031626453359334359302144 -960400709620039754961463560382709760 5043771596613210138194997887893504 7267045031862275834749973149253632 -514575305315672848180294952620654592 7479429104348621666471216775430144 8564990988883767793875119494922240 -157500265614209231345230939697446912 2883495667529078071219131124809728 6384467084743724504900074888757248 -958818261012477848892491236833755136 5150551610607143393055298560196608 9113426168238738260266593575501824 -553750807027762796118818148694622208 5024074196755484433481452635553792 9874635208102097237138098425430016 -794660859619457752868788072452456448 8931220696292558248860280829247488 9659815796812029305686102263201792 -162751643223993186736350032939712512 3451640717553077362795870620221440 1640693147205165822787384644730880 -616556221271668012077847959539023872 3105529866324146789254960611590144 3161149030069020194088978411945984 -968414228272652933052527994434748416 166926470772039352903048252882944 6891344631703840679111209672245248 -47587921413506154780645976298225664 8976708983920287917954995471777792 4532806836354837548186014763188224 -29334026029255483077473883341717504 8203815442172200312698308036395008 9110625791245856111204579651092480 -884537304495746625955214004649459712 3206718233960871993899167573344256 1878262785762382148945900726124544 -846637429099411040633448844276793344 181327582763495558416912611278848 4258128412109884521009368340103168 -325048621386234497461395421619290112 3616969452521054733813537218494464 6596383998915124678528032170835968 -299443688849887935225268440857051136 6838844815883229957594854994214912 1386614638958055538765532682518528 -648185117058510349129288954660519936 8468212111955811477132732784443392 4942097438092458027753553197531136 -438882347308446412496349802868506624 8782754426878163487899807240945664 2673074937007071653098361555255296 -916046904324324749823263999824756736 9119352500009321532671237478678528 7501402745936423428943457680359424 -766036633671287256691132343441686528 7751276913992337435602476186206208 5536721184284169249171215120072704 -501498083528001986700424270080638976 6002213030551137108227553128087552 498185413979377795814057471639552 -890325717427104985063868731750350848 4147146561596288317402706740248576 7265951407898555772476866852552704 -339054426719786992326453699968761856 9298601607921773227442998469459968 4157532011118493820056697592348672 -63379088962100696922001095161544704 9229662796951620142748026055688192 6258010610686346328815592307425280 -560770890429214272256880328314978304 3058496248436567197717149282992128 9615181839734739373885746665488384 -387067472640897149736374082146926592 1838187074749542041291823069003776 2549307122598603340403192807555072 -463860768490743090058705102725709824 4091503340315310202607316653572096 5501138859847523844891655240941568 -903597765147458788213609813982052352 1142617735892967978299168537968640 431257660892286929085871838724096 -588316853988251518451476313334087680 623783907109104279087384832770048 4511963712499119685863301705629696 -337776183284682965303238995382108160 4463386231828364266327546605338624 6811600159740196425063296080543744 -83289403016543288689920203049402368 6817324886964434885221213058105344 4822080684092193643688392015216640 -147169694849695671518124353561559040 6508593505411368050617288899952640 1364807175780893648304909580238848 -664835002270647193016549165202669568 1583081309496981036618778335510528 7874513102042069118183609219416064 -863326550561993387803130888282177536 7528228257483149139800589724549120 1057813586224727796694147980591104 -643210869255871617064502917131665408 4019238698512754100567983452585984 2357274976587392742459850314743808 -680438867992285476180298177942913024 1239634295962400823121158030229504 6573553489372816792073659656175616 -858109326475018606708002018534883328 9373382156393471190560048368582656 7555443082724348095519578969341952 -531469202549517845481501255765327872 4962090824325262260996825082232832 1139893950960679771641627008827392 -776468727567643823072680601637093376 8248889073725156473004009354952704 4844786873445532759107117667844096 -791432079281437093720491431940849664 3561835241515880256915804818243584 7472412865008373799221738386489344 -451670177198367876227848481600962560 779844318292234321297412882169856 7893701886120861998748447675514880 -519539515409102041189046437818662912 8704476987749209495894574149664768 3624347002894963495528648369242112 -214322480564570465902391600013639680 4998009949454770838004135360462848 4450902422171172231060042817732608 -51245832474233588889505081029820416 4926512340607341348733897580478464 351667967903581640915049299050496 -676967635528761817746335319065624576 4595248528195444312571336829435904 2455589285704691904720864410599424 -560965661916294670376027650411986944 5992917110967987592249453613940736 2679529487303684287269943390502912 -970289003184672965850846666181050368 6943948704452606570195980109479936 9541463859392755615456333886652416 -865447167919417415238244223697289216 3369628558777852428758286839316480 6646609984636843755871579840446464 -42647949359724139608649135346941952 1570039452016128002628220545400832 5365185578532727623376795693219840 -183826351385463385065922430391812096 8184083893313938575569562242121728 4736833544155926862648878777237504 -425295399586450632694182436650614784 6191784523006034117834113036582912 5034752472021178514761114019954688 -814227675510582737744257710427209728 6752745173637543936295071031230464 3995768391238961637854621181411328 -161389879525652654647483045985124352 6986970984230452737807924825423872 8434407253233006002805494096330752 -922825730839378705709984004867883008 3769173749665056755663018565566464 3446775900851082243641518053130240 -59284348871944222369097363690094592 3195503830001053734880998498238464 210857948873517015227572059897856 -200825941722011155342198736095805440 836784765142928445648993964261376 4997967902495786825735456071614464 -790610696599255845456229451127848960 8982549920062450017962507645222912 5101578780413001936571617712799744 -566072554436220908853971150799110144 3344868302113477142298997938978816 6491014515135592415779566924070912 -94879003173859130827201667674406912 8974805652158318874426666502848512 923684105001338506264904019738624 -749641003536861876780170249699852288 994393588991004337239312218193920 7832839730400248709353201758896128 -314899346534106639837686851642064896 6310018842338527083649921758265344 2870856154817099215734380536266752 -778782117612408166964511701307752448 4845953724526905951215209962012672 5301762170413881727780825574932480 -906334661698283724754278162142068736 5401513791974852365121252638064640 3718741615620047343613353612279808 -424425434869619841958090263431741440 1438829763433301310128013503889408 5985145449816717020867998502617088 -145748729577857187265436645062606848 3739354894380715410936007898431488 5414134179319718564102798227537920 -7058223354115225398535820668829696 2219391401701287136580288338984960 8633836712026615681613623159947264 -506717857258817365208237764264329216 3743227258589638361706923846270976 2614286643290302657608121774505984 -118252347766067084421763291368390656 1779425986990816257862902235529216 9000958956226104817684438147137536 -164238736250567708062633178456653824 7186724840370678785181895039647744 8753895333405791914235658500046848 -323621201186651664340202660080648192 8664248098875995777524655907143680 8353405304590667648616234311745536 -363275091325993850155068338468814848 8207042256806789854165475138732032 4159697505682616052591110574309376 -869419187680926366350935943182024704 7457154326247534495373583087304704 5299743308216923240732409454395392 -93711991947482035103160409465552896 1514063636181963179339775414894592 2735191770987344408608090200473600 -662782729989075327001595021222739968 8429265187130999057086595270180864 1886535992117026178501821675339776 -510580683486772810346865791063818240 4442156096846758478387976182169600 158761334436569236029998958116864 -754760313653790135653988590157824000 9728133841773262362733142408691712 9124039080456707312684655097937920 -116372441970955139745676768300761088 7699749444358227825075468864847872 1827789891206781742072647036960768 -444414343811260161857636087342563328 804181853708959412162077325787136 9360598872697795602958869568946176 -666782908254176511207185355603181568 2339954005938528229348855244652544 1464522583660630089965096790917120 -161593616944212100754104714520428544 1199300675833463077746646389358592 7138680513447356345785579835752448 -507444964112828303675884073044148224 6471817407921367318905865719775232 3800767305976730113318511657877504 -172897875098726176513416614071238656 5556491008451949474487896186552320 474590560838376962779119204958208 -705651831196162727378104154444529664 3768643432725802801858392776245248 1636749055639581352111026930188288 -688380521192687413908435639275094016 1526154082613982245750689371258880 5128052462976823999944830174101504 -699872175174674189560888417503412224 3501455175703287662956009207365632 2549893704270255084703060871610368 -883999239871622807801485630793318400 1903183352222921292733403516370944 1819380764124518728938387098566656 -455835726752918968956325024986300416 5742847520042184129834795644485632 3652660500884512621965754232733696 -533418619519248422093430818154217472 8066322412017567838659319005446144 1686188305753716626464253237264384 -253993550676247976505054396411805696 1445965373927261959992706814967808 9750913955197651355679438078476288 -719978274228832660439337284415782912 8916563888765657670987894902226944 3578184716332219337707624327020544 -946834289715099440026783176097529856 6132575631030129811664700413313024 8172436424784306398828358193381376 -424759160780815797937388177932156928 7746434262016793227788881863114752 6993548445547177634911541367144448 -837817504360549802277922986203807744 7754402193339519386294446618312704 86466161726371109262305846624256 -79310983992636961444936713238478848 8391662147681088411072033317715968 4256799969440569535359512181997568 -93541089832030613313196423754285056 1934116917112806624088655042445312 7640035362906566567305422389116928 -94356070796742906038616743661797376 5598375861187745062138703855484928 5166215459926311937113444065476608 -881687995997650158306448725227077632 4459663626885666564561402010271744 3479492413125448784225736501231616 -618341176643781651647584410057834496 6721205275428953887859357498998784 4136550459811206027786939153776640 -148216942234194507175615646148853760 2564516702038083557790862610006016 3961665225102025152703561623142400 -147696082727410157734226348321275904 511926571333987175277598175395840 5654075092290977002840419278520320 -961195219203175198149384354723266560 4188980255243922590213556771225600 1216170897998572734376395745001472 -784471629441416195164328616716664832 5133411800560788476488640729448448 5922480220486376541433849375096832 -456721093618792311313819592466366464 1342078602127687007972977828429824 7174446061563005128866181907742720 -722078001551589668414225269305376768 6398820618954972419183686442811392 7738739573609138068931869654646784 -764631341830530194842857470961909760 2693619494037888873658974166056960 7988495834935596634359720744845312 -16454164943002830437312699769552896 9738930398346603163891056645242880 7988009410062608242516365699710976 -709948329995323102775599614652317696 8397624478216105787967890555666432 5411562952072689808131327287885824 -181018441258777541105816810683367424 7545453650447023173930931216973824 8263464487607953344888903840038912 -812292947134441575766597120659816448 8020497670647465570613345573142528 6815130181673590650636931568762880 -539277284475818083149432971841241088 2112893021222914278678342330744832 2157102444073599412872190785224704 -86552588534423093271311918546550784 4904065259278766757495713701036032 5474051555420227195281883227226112 -640970111878659848890855709130883072 3947691379739362236809409852342272 5283778360773611950974564898439168 -757901064534971096358680693496086528 4825638099272730179411402989502464 3080301946337142411638270010064896 -960531645674483252207101102644002816 7879168761741551952804485886115840 6860863370314110717897715690242048 -861607761279785530187472470265561088 4054762518612843586303235677224960 1924550837019680378074533627691008 -686135208776811852587054677201256448 1274391784561385821898885340069888 7033637903058275381191843654926336 -729030199625456833669304114871271424 2654383228080580180955275215241216 3928271634539960554003709351165952 -861431384773811025992977427118161920 5107907111606167718336764682698752 2881869675759259703076170462396416 -405715545178966440836332093484040192 9643621401822952905434493716791296 5653323047632545550275721862053888 -608762882689496070475581766328385536 4225923888110427263139971566927872 2130251032935899871966558131585024 -133349169998103109034084598905044992 6106467362681872601244110434598912 8481590472329619136981957636784128 -61266758175860781478269561958563840 5529842316281953119056349347446784 4603715054350141006917430323183616 -700740113331429747302430113190117376 8468358418895361647423410206146560 2799754139641759499328142446690304 -767048755580714136464268566533767168 3569506847222061941648393525788672 5178467795746183073317462132916224 -33028371124729470077929452214419456 4549292529698706465268265811705856 9712809370544368116181538743255040 -416760656449433467261070309563826176 6444402593062238826191132702015488 6699327139404471206826418678792192 -213635888160596443663009131828084736 9844491567079091263464212768227328 6250815214064054418266426733232128 -370722308640288054477039655819673600 1220015107594313893522509012140032 2268040184551715516110458929020928 -626323051541993130553591933714825216 7210109409722171412419036881879040 768113085928863785252026805387264 -638498922340432446666173792116539392 6704088409945559121231364875091968 3127804208486806612920605786243072 -278809497860377974363064704193003520 9191223358066330322483366695272448 5714723355286423205839596398051328 -241537830205578994592396124841050112 4818342005507359808869497680429056 7446605664104141300108395919966208 diff --git a/libs/non-integral/reference/golden_tests_result.txt b/libs/non-integral/reference/golden_tests_result.txt deleted file mode 100644 index ccd71f7473f..00000000000 --- a/libs/non-integral/reference/golden_tests_result.txt +++ /dev/null @@ -1,100000 +0,0 @@ -53262323617465.7447904084995145700716043256147105 0.5335803614437092257576190187695274 0.0197773080577809000171249624626691 1.0199754964561285025944175825768071 GT 1 -18184036516232382168179477293450398.4762943845110332750886119011402862 1.0586352477369829906495689609396757 0.0202493610380792277369772835416247 1.0204571897342794292761004814545554 GT 1 -1103803569659876.0170576656666766507873426151725244 1.2140166308629563064693692727036972 0.0080780444946934927409819760007845 1.0081108486779964704883054495040910 GT 1 -110564359860774271871423612707.6800251268617731063871499990999090 0.1418779874517011838370097377222666 0.0315593204235528865902840569372857 1.0320680478029325070686056615377332 GT 1 -533032799140.5226418363585566808541098631097016 0.6176879643721602057045900341500876 0.0012536299542328634299796822250568 1.0012544164056119873565236608816288 GT 1 -1068273850675289604717311099.8194544310690682168397071402029541 0.7451878338921041334673302912974927 0.0293096176102619798825040876791251 1.0297477262251262269482889254654617 GT 1 -3293771393669688893891061.6421691502194414002971096343272367 0.4255861235806882609577277699432291 0.0833003604760005150270403424675687 1.0869754072467311047747874210446644 GT 1 -155740659522255939829976.6611511423729532221293310138251752 0.3190230024236335126956576712165284 0.0853811587860201264159602436715214 1.0892478674739996918299494714279462 GT 1 -6932481672324688.2067247378351862949265467766921452 0.2519061958729526086542914625691167 0.0758882131445956871190699503111394 1.0789222332128749811495194305819035 GT 1 -79114464080429763452291267719.7006367216905474405027430482250395 0.0237161519100190878605683260553433 0.0618175955003848952057359754917480 1.0638108877940090197813995083087770 GT 1 -101.3289147228264539929604841058561797 1.6589989642296275568527450047127122 0.0942702620608756001552190654041043 1.0990143199356448673368235180630402 GT 1 -2563422769770094220920088084893867871982.3878126305723660768560318109863001 0.3045017302038029782918970032268243 0.0848365548080952456441208544515238 1.0886526010337764087737716693470242 GT 1 -1092112.5916913093542857591802399932207612 0.4393452383995517054838340093028408 0.0514006431115239291825852894268312 1.0527687434974812824904715000707245 GT 1 -3179708203014101290727394463364.3413817505068535657651253347650722 1.3717851081508192375624295451887667 0.0889859520369976227961979711347929 1.0931969614645595748990317126691571 GT 1 -7263438631142.4509899824917231057264344457154306 1.3699487444455760614449705010137595 0.0890981634843368581326999601230172 1.0933201410783244862051795760064878 GT 1 -611.2519541829523181587776679719675620 2.0193853844334963153738709331103048 0.0472916053311109573914679138597016 1.0484464088577263830093869074357003 GT 1 -1130428898847989321.5989347321511727519777795586577277 1.8711523761297357635353324492507182 0.0690578021054755322043515361161949 1.0715580896748893060611173618470426 GT 1 -10634125207508224096843079682226931.8780340834968042219440163636686753 0.3333098902387549269312581193045182 0.0342261732920297788406777209593107 1.0348256060259071823701298540760412 GT 1 -5888875330110021103826632367721461053604814.4871242336381889029839929913028012 0.7278907919386742678335748750806555 0.0911738691409793979366508118162946 1.0956014782826845659209579037568134 GT 1 -1917536352148677285.1038194573776751178760284848292238 2.0595201112217689755947844499811569 0.0315498995634785832386995881949459 1.0320583199853688191816611612561337 GT 1 -253663063493905780486004308132035.4761849194401808943714663688822932 1.9453818602876474350239135727608113 0.0102926381570721575054476456165021 1.0103459736481007003168772171354524 GT 1 -228632878912740212.0444077585124279156535006660476905 1.7407126223507050329579473914355548 0.0533722059860865032930649456247378 1.0548492999994481604326393317897431 GT 1 -216926696975454234799443095227947334.9205218112890033033378320909115898 0.1309594211791888943440867923720315 0.0488476385291956447341365064327076 1.0500810174177655419520337457666427 GT 1 -65598455128344918817.2565812411361277363155767018631753 0.5904312823475340479230926379496822 0.0494673185198793295655692805196523 1.0507327341832877682726179215843359 GT 1 -7029.8941559732459063942399189063548413 0.4323428907421553797461964372862873 0.0890428195467757867870853761826351 1.0932593856224273843829333642383016 GT 1 -354959394841477829013982637.0805357590664124363909366075176295 0.0024309586489569529370607576865242 0.0303674892066841489631866917769347 1.0308381341205907402077224211492374 GT 1 -19071609833949518197070.7436855429714263525920190368217651 3.4825172548954287534675518982034669 0.0773717993708426489930161712768089 1.0805289418512965567949770726490322 LT 1 -28.4197508130874564771993867100701998 4.0902535712810338652142691115456140 0.0433078064575257306697082426055837 1.0442735761071252561470122574599748 LT 1 -32949.2078065503830085862712985580814215 0.1549199790205160986759565097747194 0.0634315937192690069943438859503814 1.0655327151519207333961278070060470 GT 1 -24628204151778900369205545710.5397001776549353145355056854954449 1.0467021878961217666328825662326361 0.0566067279541478237585426122159363 1.0582720397602760365495981253517675 GT 1 -54248868163640089186103.7442396297587975141385999735652059 1.1496613933451375673840375310928125 0.0159374099231458453919662996513227 1.0160657761510930138361912670838736 GT 1 -8208.8110210483130559822803704126188193 0.4965967374418092284710209366819538 0.0062554931873773041226246206904881 1.0062751407645989726292063828353516 GT 1 -45989395.9292931929804271579792658733896972 0.4740923072362306838299396211861326 0.0339055382846149048421706932332233 1.0344936630955527750193794345050244 GT 1 -57364383654.1214774009347906356839207904957023 3.8136952270488360564551756200962225 0.0557193158234860151300996213746983 1.0573318220991592996484744329266409 LT 1 -622549773292398517690239116317963078202.4886265187138958912740741321155240 1.9355375027341417152435266111792625 0.0146717870211384666023968233670928 1.0147804821665007527046362677555519 GT 1 -1829138704688492136051012461603421.8694141711995131523784898819846426 1.2124190287468274157278832628774365 0.0163457784580543402063701369950120 1.0164808445576442696008560797041521 GT 1 -756.6787139362295847315411726687583381 1.6558796363992206960942906393486045 0.0259833287328974400078211629528736 1.0263268591954242708794409308762763 GT 1 -21303716875153108231981382389.5923560047553252897779053792236385 0.1171726793489648731240282689773467 0.0828161862647430037243938695014224 1.0864473756298399676164891041890464 GT 1 -18205998.2423121928441922394283475882246484 0.1051529856149836123116940274016956 0.0404549882891758547528489698645360 1.0412960530027818688885906262112372 GT 1 -652019091348209450723408614364226381528.6334347808337545023413011481048625 0.7760196436115106696148728661677607 0.0153266134938066532767119860717395 1.0154452801006307660369803401120324 GT 1 -190006963503073532.4648749841552634812120898545206765 2.7105657871964997243912963361152306 0.0120630834125216640718403437456341 1.0121364328805576666443553839448680 GT 1 -199654459572517820734853.4375025415427422433084819141826005 1.8109199280845482093646311027052699 0.0009256901069465390387889373112380 1.0009261188226259164966168177775953 GT 1 -799822007663.1243322680938576839188181507120228 1.7302665598537007163898608460355328 0.0813779666609503010132369453028182 1.0848805215964199289766628323967476 GT 1 -6991419045511558.8482330807534231721483651113557873 1.2479960303956848283159541996205764 0.0825151092327045502917820307368242 1.0861191670175687104137466705586299 GT 1 -7472602365726.7650125262523128240699909047706685 1.9990198612871056572479959070099408 0.0893390473552230983525355162569714 1.0935846215274463242711177654077616 GT 1 -469179328547238850529.7139137466683631087249744120297944 0.3679563108143228747507563106143545 0.0847332702733477529571868160198728 1.0885397482888070954054325290496291 GT 1 -2686593572440452875785167059882818172.8691036678403320313754177572131525 0.1965517008005264733068392521638769 0.0118520395563073332302998552337528 1.0119228349127074302533672216040244 GT 1 -1432611104293630458467147387972309838.0704704532349940678809287951076502 1.6232278799102407700292157062639673 0.0982380422267665197897564530257533 1.1034046986562648050871141467729527 GT 1 -2504727965218566888942475537064674.8767817132060305728261516550378769 0.5493727826775663726978160394575896 0.0584550514869829148897356325186208 1.0602331906405336424142583921120668 GT 1 -5.6731272483920926067851978160775486 1.0579280438599041569638071174402943 0.0950268130865347367218057981226531 1.0998499634410483798383483688881889 GT 1 -102841155519842638528983.7470455566454887407212640847792654 1.0957192786396406281924688545217268 0.0983073453151998919592163738540309 1.1034815545837594576174203379512664 GT 1 -155025845.8859545612904121513612646414422138 1.7465795136507736939720999854121211 0.0271482955245225901968914024353340 1.0275236190228295493220195331934885 GT 1 -165316379823907253024812514183773382627.3681506861521347230833658518100026 3.5100935281915080839189306494680907 0.0629273717764485776326196295411282 1.0649944883030130467354940690640858 LT 1 -148922744722100683297692926.5996351428943358025792503166418941 0.5650040851267317815428986625590266 0.0167239890762496092153671573934519 1.0168654139913881386383267027136966 GT 1 -2687734150572.4002553265857921811077071725649320 0.1264806277056447065356572593674608 0.0319788984865804094947802564205957 1.0325013928590454695857251116046228 GT 1 -3249485778290440637004358942801.2445081271066626240896883106142821 0.7578789458435046700296269148026668 0.0883867300831005966484402071137865 1.0925394249845470559894631948514025 GT 1 -9970563043814050895082631395272628.6761288728772579217725059044252149 0.6176264085135031160625144729471782 0.0771823381306843363127412726171831 1.0803236134321063610777761874179774 GT 1 -2854036023240.5945262514424343988965179934614861 0.8040156582515935374858849291680633 0.0414332419664036848912660783341888 1.0423160704777548486426724524836991 GT 1 -183404953611759408579343178.4306659574434665625346735346338889 0.4884854233733158832036237280346233 0.0059244021242409271950237976532045 1.0059420210165722661693294530119398 GT 1 -8078518732895065593001.7601040935294116174111916826220919 0.8251355637375035564150626870852150 0.0237438950765746401590002143732336 1.0240303244051047930851635117498053 GT 1 -3387552.3568856810947525481320625165164090 0.8444612145109447089576343984366640 0.0186287481541597915637556520235005 1.0188044487594172920867532110617036 GT 1 -2826487416324035277624526396735.1284493133487005576204431688662820 0.8215405085841678237973896478694126 0.0570482562470396501734195799034756 1.0587401707726382039470733042816240 GT 1 -4213739997.3227995207857694775535430136629107 2.6664355802956407573617787890448899 0.0378668798140667395030288405711308 1.0386024593182057514198089934004198 GT 1 -30087083766408014311103.9550706061431999600022879573646779 0.0441697557403441110613568972649549 0.0551698162600492450358156244137718 1.0567500673824120753665631225117170 GT 1 -77.4528600933949511704487752106900770 0.2241830322696470175623000655835564 0.0034721022636871433383182082009785 1.0034781439998229974501226896570777 GT 1 -197539055587425505225.8639521144559434705225368100655414 2.7580248641245037462614009962175221 0.0192806651375394128182066822493620 1.0194689614091238561312643103721693 GT 1 -13903745478457799622.1460697956192631456394114011461605 1.8435228431398309610437451696900699 0.0279045487184816990949081742743117 1.0283012784361795623016362146749793 GT 1 -12216.3037065253989474831398348752158015 0.2195385171972181497713786428356405 0.0729654251488725844091406723306735 1.0757644165377873862786274044836000 GT 1 -28531.6549513450767441436885606520216385 3.2708839988058448786074334651773919 0.0768355632079642671383048035807104 1.0799479056426855830025229072284393 LT 1 -1063398212390356326580332.2133194087396519124054622802634074 0.5062706893033842324338717793205322 0.0971717973139837383251433543257444 1.1022229953972945756625047642923420 GT 1 -6304130091179120635605625157121627.4222510730036202192006968513506798 1.6100137627469303181080569337747797 0.0516280402326371806409295436853675 1.0530084910574004697909511357336586 GT 1 -453697841263386.3349904850003092709102770663457258 0.2513373369094938561561003467352066 0.0323125187324495977618682146210560 1.0328460937630351057924968667714504 GT 1 -54764518251307199684485420429528405246.6939239921255122447456585271057645 4.0999103701651366801841208840616656 0.0304556740989553355227891102101610 1.0309290849721719720980977500641008 LT 1 -870430588506294551776719405676997286523.2031807864074302657511395112735833 0.9426673706352009579059857548393611 0.0374900304584926783997678088794490 1.0382108549086387021937351114718778 GT 1 -6430938906.2518188408819660987715769466325764 0.1247042162528847612564682945650967 0.0147725201816861793250714495287313 1.0148827204955199825162818327887804 GT 1 -197081770386.7965096345716819748739601212209382 0.6156585828800469998065449008311255 0.0393489849503897754152557902619352 1.0401440836770660727630740301801842 GT 1 -44395395067243501188708364.6832886683353441020684455966380404 1.4132185949837024235994003519891829 0.0980200119131076369130575245458150 1.1031629453220684255805328008086698 GT 1 -220221585975154783608063914.9076717967170360397248022115114143 0.6567915316092693053252857774332101 0.0666871126665126571244492545979810 1.0690147781553071768784184733635584 GT 1 -15564.4319052441791764689275151597466310 0.7555581187275710951418471975837960 0.0769269193460718946841076671385316 1.0800468703071113921832749842093358 GT 1 -77119276472564.7841858119724749300953557316780685 0.1345091431277297891516250104216026 0.0374289691778529689569517146444027 1.0381474172863790130369610782671779 GT 1 -73354517664650828748892987666372.6778482832797095915366567074274153 0.2187397406622682402015877959179332 0.0705475044954146486139480646664398 1.0731595807064650321531751617461938 GT 1 -6365099386768225356657.4888888332357596569347099171621464 0.3694120464726307287963375734391677 0.0505683686269903354238673029657572 1.0518917561953527266070961568280147 GT 1 -298510920257955281408713293822156839.9872716745330128375973107573497942 1.0114913963238555313143818464694964 0.0225701918546064906139422730715679 1.0228287972247939952767323248190162 GT 1 -74814460833155723948599.4363457510001652037600206337073772 0.3359519212780657799461493570684402 0.0348748879948432254948430874266150 1.0354975363006766707574287896469522 GT 1 -44336637142188355180336855867.3963890106838889698721564377621889 0.5148721583444006193857416279248927 0.0632292431768297732688394809864926 1.0653166832157806332781325688314518 GT 1 -2348327874349514028914.2818350015491438226689533679419791 1.5584769045323083174492688933597303 0.0187288329936063014986444542559463 1.0189064386466956854199020185340261 GT 1 -3409270304.8890699979101389625955182136872779 0.6218616367457648958273497570366901 0.0200000279865922624761941819988639 1.0202027358752670627888772385038704 GT 1 -25056014172790445301201949523.6234542321169912408398676435341676 0.2590271459372888821369636507784369 0.0301498077314497111943454659217302 1.0306136603721991341266533333046440 GT 1 -6580746277513294044.0792219551739523953992442163340986 0.3371617540963874380500489077175557 0.0409910673961915205365057355309845 1.0418548896438423388461341273348264 GT 1 -771420580404185222847909.7853865919700814155801104816552794 1.4334373916095384970982448047258536 0.0613418555864117017294603927488376 1.0633039295183710576668608251505215 GT 1 -196.3018156610389645439944043387052619 0.3774296955474713149025912956956687 0.0282795261115786938530291032769152 1.0286870941843611835805183371779976 GT 1 -2256412982151199860373420921677942.2915804460008196993451461397086992 0.5404987737801202033051588566752923 0.0998018923094593230741002014932941 1.1051404202244469656876846764677949 GT 1 -2154554298050083.7844029858108762426321730846818058 0.4766879011667992297809593817689648 0.0563732247197285922327706785604794 1.0580245561832553211253516196639383 GT 1 -388098601106818522.1225017940154663880116036570180270 1.5334657600279318890477529552496490 0.0902436021095876837387941734671594 1.0945784099337638850314378030356753 GT 1 -14214363.8755446112268284322806730297392942 1.2932014728529296693846273100015980 0.0648556090529837190373684661028931 1.0670543327960145828530753772849898 GT 1 -115022.4565795891851943905868042708536019 0.1884824566801554674295749441089609 0.0610249417270330757390748202111514 1.0629663621362704574505171505334782 GT 1 -258899607370725323465062505658041615019486.1702955043909174840705305618681889 3.4330655774386337347926407185094657 0.0658857140999692267618874685346258 1.0681564864615512050884317416244373 LT 1 -51668902537092446372895199015243368115.8999716144552575774994735004055714 1.0776590951547207190219493773658959 0.0473548552210437286520126994487592 1.0485128006203536312935475945167374 GT 1 -443.7653741858006692184501891397557378 0.7446158958343923888713115753661785 0.0101243588389216987359489087815825 1.0101759587325347052014146703586979 GT 1 -874014695486135.8523554781631029257297433360404472 1.2230099213827329278140635786734860 0.0329121589294356873139111868168415 1.0334659489051411595018015601598168 GT 1 -1033020146633903749.5589815558522065886131326066059209 0.3995076422925240187810008041337348 0.0201325463196773562922916227497344 1.0203379678114171734857581593142277 GT 1 -879634845.5028398551920287911904582053226322 0.1166162552501914848193734501255005 0.0067845121011086989837341547127029 1.0068076315320422507340151695038738 GT 1 -702537246934117336976667578.6433176736348228175076124599673652 0.2437775339823688527032227127868282 0.0337720946103569164420927922725671 1.0343555456916021629925630647682637 GT 1 -1570576337821374979173435300401.2138878291154767970468800824628155 0.2582744210748366548163643077742906 0.0354356266069191326607148989468274 1.0360787061024523490795279476831865 GT 1 -58917129446986.1788985706357622557513149284737088 0.0878677344832476610925787876938837 0.0306838446178908583952034919227130 1.0311644505615906054433529462104471 GT 1 -7790962438792195.7553426939359158306322328120478404 3.3295038831778845159259144239141604 0.0680688635812900037501272850106421 1.0704963549891533724295032347626633 LT 1 -216353749008761194740521616708.9943804587285265939013693919996002 0.7258685601717478892132348641955360 0.0407868355185477536831200228921678 1.0416419509244669310520360992337931 GT 1 -77617160062167.7221549354562657201978777886339999 1.8703633508325913141515278718673883 0.0738409761611031835972583116122944 1.0767093270727628777579213692255283 GT 1 -47393769779886229294.8381730627495976265523238719999249 0.5903400891582230426541197193407156 0.0449115055088717101956505494511617 1.0459512784058700447982631274665335 GT 1 -846336665657783406688008976467809514181123.5130341767244068938233467024870587 1.4958843162250690711977716170609279 0.0581648039004794625367776949841239 1.0599249707735763584180679289232776 GT 1 -238091421083657385524119074022619.9179578494519214934046589310182326 0.0155164397954145882528909146834481 0.0923664488742986186001632393076078 1.0969145598957797034845326888296219 GT 1 -88175926578148904897.7695214818364415033223744378277572 0.8986845156362315797433592968534676 0.0225590101263252539100284933469188 1.0228173573605403684431167561410809 GT 1 -23027905167115004213553896314592177118.3283565859395273658019618299649509 1.3340933570048117953180307166996204 0.0635749946397276691965522262132492 1.0656858400052678886234176759461389 GT 1 -3902765535251558451634658081136241.8920339113247920437131777604216729 1.3663722811827395457146834458958367 0.0315690219806583849618307243653082 1.0320780655623101437988292852424506 GT 1 -40193355750640.3953891121692162918805366562849722 4.1119132652776716975353003371833346 0.0201670468857457183244853472126930 1.0203731778526584853683628272185981 LT 1 -490759324241910135544637009.4522013121819011059198453056141322 0.2962482372358323567674276549442984 0.0325697607066052505575003705724274 1.0331119607673394769612944441528907 GT 1 -135971343193011435694449933742.5900317113803277705517919778398888 0.7187463663020366680374188350158788 0.0691049501704990755110736779073868 1.0716087364917270903876286948986921 GT 1 -12597172183977654778922913434442.9544936372486101762046119045762481 0.8839877432377786753110451275390314 0.0023937960643728221820191549798638 1.0023966657747540706096077055389282 GT 1 -59971603744057.8608345507202234240577025011285440 1.5112471510745222268105871299706080 0.0362649608969462669909602916423107 1.0369388778535691909551264506500216 GT 1 -1441.3531051997452011840393064093660438 0.6572121216291589899976379891307357 0.0116378973038754683049495454548510 1.0117061476746676934120738548942703 GT 1 -19701814834349736034559272550684.3403585051476305921685731059853590 0.1429337149726281996303958031297358 0.0971467208710550506773514255022981 1.1021952203514929269233730828217991 GT 1 -52963404739619366996951282013302995580.7291556352344094667980207400412214 2.2585622373672263347300834555608778 0.0775809313748560077833770968647010 1.0807556374036479121112256018885651 GT 1 -62697211126214336304239659151171875.9314220591398080332330767545032313 1.1877854294888720717610992780626183 0.0366133933299635066618043256066414 1.0373004870312547524162520276559117 GT 1 -2160155371228762909513795187439097730900759.1220818285068956204175942215800051 1.5968986309128049975798300167568717 0.0220654620780167112501999982190156 1.0223125458276415927564924365908070 GT 1 -15006131297113.5494682982357860533022267415408630 0.0048003277835345672629289491132826 0.0528293310005825792720756653712977 1.0542759813375350899622879819308873 GT 1 -4311251359525104.8839340235711965330926239907038645 0.5316079781644786573141870546567899 0.0537434095786836560879761074178479 1.0552415094765910279990298188277837 GT 1 -10009513549.2097859884927076391289065913310575 3.7003933204519336040844965453040225 0.0081204989480031329305542857242840 1.0081536497891417329384577435644701 GT 1 -23503938800204417975021099139334879769935729.2164674409888568831126668311974430 0.8079636004786959516424295732247792 0.0589038168530222195315250974168401 1.0607099308614840619885659321345532 GT 1 -24448566248216.7202485829077621023311495447039732 0.3122081663731222179504672473638846 0.0026116005073688878637291360939829 1.0026150166850644457884385615759870 GT 1 -199530451304198891667116527690054.6163672825191375982363118469541533 0.0851141453660553890907355648434280 0.0051623275771379095244780344817936 1.0051756984264649155319824247429964 GT 1 -78114791000398201809384004.6768919337207076786551988859595501 0.7082326078041016718190516036252309 0.0814227937541409824113368964124902 1.0849293209778193087821521658955246 GT 1 -32659350019.3953700557409732208071729266320814 0.6675847199022654964615036844837685 0.0614005031537688016764909081481048 1.0633664116903299603702776302204228 GT 1 -2587436542584697884313566968837366474019892.5281118309778871940205839308012675 4.4080030134216839460135219688798476 0.0718772542563628519799001506032458 1.0745912858224266409832370762898571 LT 1 -46588390651378.9977657532660136394178171845255285 1.5044182084780602965687614427699130 0.0781164645111488664889845864335387 1.0813363806614512160273816382537911 GT 1 -53626707091898305570919209090597225060.9593796285629159781344204534325620 2.1290200035265075670761569059588950 0.0411386589137677168264371920068143 1.0420088015323493566514492872958362 GT 1 -49271007437074645038425517900068393.1562133272880437022245849656485649 0.2133902310024540801555433399082206 0.0900347386719736761296646745778163 1.0943488545647071726995863224612200 GT 1 -178576652.4240256183929816746706693403066500 0.3165061989449299562416365763428667 0.0799229806448391053848723511919173 1.0832978957527053433342123836077392 GT 1 -1064416706102854185933151490940218986379.3525823444293533201630481989983060 1.7840079689637322260477367918508090 0.0756798313907380736023023966184465 1.0786967645348159000820610793207586 GT 1 -505746.2245941039975330438205802827756928 0.3658584074449404026757039156773831 0.0966978327968551309375533335734557 1.1016981556228131551191281169075457 GT 1 -36276382702790085085716874271865253894.1186754929885661406072653367918777 0.2550917873828865156611977909479464 0.0881433884653369621158595110744236 1.0922725254632733975105969456778608 GT 1 -2362284324196026924468489226822065.8391704927644652415064895737565639 0.2530773823857568250351126525119888 0.0392656774359629035245199502221978 1.0400573675844133170106988258867269 GT 1 -922766307440966219159054120251683.5457612412503388469967228708814766 0.2082693808844499129175724893605162 0.0636304977361356069223454832973661 1.0657451130287611066856164072496054 GT 1 -88483479421684291787359089707165592823154.5931016309845321795808502238244019 0.3077357352464298191461668648397874 0.0845768405807754398876402238273633 1.0883688513019602214730121687589854 GT 1 -19088758249326855318700150634434919852165963.8082482940035930991767677559378615 1.1134173858240267497327999598719134 0.0475064636905936027495659746509026 1.0486719580311761310803597414260650 GT 1 -77976454239291114871148405722136196.4844653896062211326815256379629709 2.5037897611754385505915565351400616 0.0643800412660716214000451225288820 1.0665459119494901118676073366274118 GT 1 -3948287758264881939176859208388576036717824.5876647210840741035767648992968228 0.0376246268738519943169930261629146 0.0766399117729213625211843085455231 1.0797359924694521443050463827955057 GT 1 -16376618858803474899010224980820838304.3398163993937377664069962922118640 0.3826864355143651104447909495837321 0.0001397524672325914733217764750655 1.0001397622335185592423465966731653 GT 1 -1623115295625695585950.5505234073170130579134051563316244 0.0470852042635673470952839996551392 0.0028825962295608931723186905546391 1.0028867589115510892462264883443537 GT 1 -327715641.0928884021030665453029288916303072 0.2977405351287897942892690151857507 0.0806194512973861300127244031442276 1.0840551523460871350755969608147297 GT 1 -164379432675636033998.9763791434680197816831349218149959 0.0096991943993812590008578316765492 0.0589540204618935893947574515816098 1.0607632781695446340000568238780403 GT 1 -846766186509644.4523796396257875945292556121413815 0.8007890750445217323770786938427924 0.0680165069262913611305687456936426 1.0704401757476967284034384880176967 GT 1 -2634450.1492750220445514936134598822546313 3.7945087357735487865723480285763920 0.0217070392681724491078045303159514 1.0219461029531787039097861452099577 GT 1 -16435280.9877555008778880943848540885821851 0.4442040192210032857856800680472471 0.0348308038386889915624352499731641 1.0354518602025030480512249311455127 GT 1 -1157231410743288.9550734231167562550899139760381940 0.5439367494356814908957015225440298 0.0571687638003888632277178390457713 1.0588679771584146621637244349346951 GT 1 -46405909686238248997145622973.3133214890001508850441118922216023 0.0525492524733833391245821152620490 0.0891770973168158376677136193810337 1.0934067994310711147380294357625605 GT 1 -967974864.1815474419110352753164128506667632 1.6525941124237154999889886346517294 0.0330467174334833431948159557070974 1.0336050964161431189424186836577547 GT 1 -74321854323720673803477719885520.4177107414898838738261302018871755 0.3031297461890579729227004580645367 0.0673547393357031016938071721876150 1.0697303640846011913159785487981551 GT 1 -6730589182.0490837993914285923772436633517672 0.0721036411955851344273327095283781 0.0588091591253971785109387068388996 1.0606093535037306243959745539991361 GT 1 -690040244237240348467272221566775406396.2402762569720011071561990438045066 0.4611039023431581333675196793101730 0.0457550891321868542017806960573279 1.0468349204935622889357008051196027 GT 1 -8818634382877560939735.4535255066223504238235046869206653 0.0415807017548286382927053096484755 0.0653764605156677900999928222946459 1.0676114623388625169844005020734761 GT 1 -107.2090731635340426199258479033040133 1.0972781072361711458616471333044606 0.0598675236255044318105898088911542 1.0617344813348198158762112985091133 GT 1 -177965364.3410150214099574400430353807846337 0.0546793645110787922825335854181873 0.0240161700209674462940377460029410 1.0243092603507233614705068974456803 GT 1 -428140047.9035735554078073573873994423481978 0.9920424922237495257795564520975304 0.0611484033276509796856275914337918 1.0630978562765529577500719472855864 GT 1 -5140388526061744084.8515490856110089244218295160876800 1.0533657873165492335226008969202380 0.0243826109930211528339349010411851 1.0246847888888234154411995982708906 GT 1 -2668237004869589798.2183807057464723258721210714071322 0.2656914575098899893737697971323340 0.0179979214055410365893204944506201 1.0181618539349429650240649916479012 GT 1 -6688026077615211.6772555767822964127316307996048176 1.1108372754741503226204217922690651 0.0371751651535184530357397120786590 1.0378837790077994182510851173183059 GT 1 -10269596252155.4033074928353049293391804438220935 0.8386701454067405607127072097156948 0.0968873773972238811167517294414567 1.1019080128517663615939354183896367 GT 1 -265119252015380001607.4898276582907352310026949528328819 0.0389699698850762256243306957769838 0.0372164671448696436540279287698023 1.0379266766105002436148986489062157 GT 1 -13411457589.0662431444429435410872045143701914 0.3334019398481007928120882278505903 0.0723539327262973688364212777031962 1.0751050119687810521983934521407643 GT 1 -6523935.0150714988663149592706840850106506 0.2735785861403322853787317712670744 0.0558509027692270743866913231426487 1.0574711833264070156810289055274246 GT 1 -110618232411637.1132223134018108539998531479402515 0.5963389241958009905881736275412304 0.0626683413954444914224600213793964 1.0647181014162850409731594833545995 GT 1 -114183237938573408551204499.1017643817380069610842455021467643 0.2294983945921087618711181985668562 0.0773603754934713308516646578113130 1.0805165600417664154769584816800301 GT 1 -1714164537685702774617228486045067135566257.3022633938672789911811680062835149 0.0601836427195972006879030549928661 0.0913597164531622275731137512610604 1.0958059907967618567080415674137711 GT 1 -1340454598456784860029814979199.9279411333793157734571699828816555 1.0641296457039245528064284578905211 0.0033220815898987181324088507384057 1.0033276119545555829354956309459501 GT 1 -29750998796927872135384918297097.5471015429117412961425606905291017 0.8141812619749370695915533333109646 0.0778770376598620022684030999969626 1.0810766995237608504592773491335086 GT 1 -499026249782021167801506083.4252911405377898712126592804218554 1.7481352140766373529825738498734492 0.0832272448043251459803548034340687 1.0868956507454336789699545362399116 GT 1 -125552475502072984414962300.2208717488405140602818468712737064 0.3092435805905044223340135856842745 0.0301363527423536892834391613377693 1.0305997872030521590354492507597434 GT 1 -7.0419910806952588786614554453026261 2.9840032200635075704312306192585863 0.0191968157858042691759024704977845 1.0193834672575444117373789673155968 GT 1 -867640480198084713471773597777.9029632453355764489833649519531616 0.1426308015856644961759595009782323 0.0322327757166388777796791984195795 1.0327636914049461893981642857334059 GT 1 -16405017915.0748451698211208271144399187490393 0.7324020882024843729132957265224750 0.0500117471268932575082001310597126 1.0513056598607324265550748221739786 GT 1 -286.2542741845926677685235172707756271 0.4948303375459122690728412595050001 0.0200304020743162372800052069887535 1.0202337303235404105261132943385481 GT 1 -148863744027553563137382772531939373.5969042582247525235476031637537945 0.5594157966816120845520117696774872 0.0702263841660794419026704106063551 1.0728141463017199717941700273614492 GT 1 -10000168305384397449759649807767.3508741483170180643208021166248830 0.1449061880915693124267323062550816 0.0431332526894217061676479102514607 1.0440911372338179488119381499814240 GT 1 -18744170558881236159968437883269076571523925.7588051755294935695708668842662434 0.0835723680581532323033093446928667 0.0829809060971755754160437999117693 1.0866269848019653102187747898551310 GT 1 -2492851128623794687848885618948.7937137727608869364989201860742734 0.3121972317957444811517891327536037 0.0514875018925598388271102724170605 1.0528603129859833602804558560197926 GT 1 -11765610099564522668192020741.0418733229645687406907550075715305 0.3119413032501558380755293094215062 0.0351156607551228996086251846049203 1.0357470405312106568055483353426257 GT 1 -5819027494311.4211700584647668375594719394347784 0.4111795823529712462146117620909690 0.0931277985360533303638881859456235 1.0977537412600143047235802234579191 GT 1 -1204844.6992659755778357475584247338166871 0.2153291259846080722517740142612792 0.0296096538407211127810739613888407 1.0300568697124998250784306736899938 GT 1 -16962691.0429642369814801705618743982971114 0.5738694856534167194464915208943306 0.0980069796402181347333693106617200 1.1031484969097820904987190413990071 GT 1 -3851750589311588968649265650656892834618.1517220256176577223717209723961393 1.7009391894090762676347572906900626 0.0151916342112059433238386653629668 1.0153082092365267860865324570139032 GT 1 -555497108439527478049883.2122695615512593441772366001932754 0.1934271689629759723572068505580590 0.0324314293763971238442639722665834 1.0329689825600818541518614123135278 GT 1 -1893202.1404859973808506474634990908748990 0.0677335706986631389050719067225574 0.0326958514755309764768534392072259 1.0332423050356774786465333500965292 GT 1 -7757536478425.1881058561553250430377016242808744 0.8658470251089531124538027708522273 0.0533740052501583280639822741538503 1.0548512007103644715359955975832556 GT 1 -17146861914163643933852599497630.2940832980139887124777716442839132 0.8164132307283464914275919860232867 0.0180795916161560691728473432735138 1.0182450244380596831914050936821144 GT 1 -2462377469511582.7369464597681558987024877501652309 0.7101511153160525760166703299521104 0.0199419218538632345806315800043182 1.0201434456591009446140960537876506 GT 1 -24263575829828014309.7725548656293021623914828232649511 0.2689560969284375102080910473418160 0.0126237509605336896749570221828558 1.0127041074881336693169468887813916 GT 1 -2404623.4876465505263404969592745083296718 1.3500721725540086363069987030300566 0.0344699737441708182473524562316730 1.0350780784196860632015055506165051 GT 1 -217389633145.9385163198347429646558001509709275 0.6827051319768397443875602530360151 0.0601846143361797482210815584844948 1.0620718212367238435409653487797826 GT 1 -1224371791399352.4429127647845735946999523426292918 0.1749958094786247818175053347700655 0.0555417891318442669708492840964164 1.0571438377328392129555924124778769 GT 1 -627016416.1406268854699802585691957827990329 0.8166121696385642374244649572128435 0.0615190749981369538562227280934547 1.0634927481468245849201394290381682 GT 1 -811905762576274575.5863349492124733689465062219421519 1.2914024624862804052479459345062291 0.0992354833336581252135728992100664 1.1045114132846961492443170367560834 GT 1 -225605610501090094638370.3194879144888325150722225094352417 2.0951478466201128339527859638691368 0.0329887079042242914226275905735943 1.0335451061453424466252579935676815 GT 1 -224751437463116336663471126017303.3462529673619654305840934936470599 0.3413702019261836060555001682303605 0.0394659697819563361736019779848336 1.0402658677103108763064730248223982 GT 1 -920796986810890061725018150387589592610.9459118949384487938721692155278437 1.2814899210117712714916959786937437 0.0491291866713032989948740163463829 1.0503770686414250240345394155989388 GT 1 -230768558239819.4573676865940983369418139687343247 2.0025598316266497143520216377427629 0.0607753889895283552747554946764664 1.0627006260241259412764698941339071 GT 1 -14167.6702905929163799716113222904276596 1.4269034890588423867347936663893499 0.0456924753348996606694371978559534 1.0467693065799553788576282689549182 GT 1 -210826142560.5247099964160258261536943087343584 2.5575688969909545329933760422973836 0.0615806824394202145088489529876939 1.0635583962190111776168096060187932 GT 1 -1047885042.9873140848047885961548267867569514 0.9750968402277061003849751699262514 0.0438915378952949218869705628912042 1.0448839182817441184346514276853655 GT 1 -41266991772267698160119906480278061117.9407613251287299490660988616509453 0.4685164895121537512950757847435797 0.0992516589273066751102481838604109 1.1045293710734285433675945675464346 GT 1 -483687.7855237435934598892907039573812162 0.3524143157352758822062614632810900 0.0979801595434955608731893927505417 1.1031187630899107463710109475478220 GT 1 -1517847966422352537104.5934212158962301271984547671722348 0.0626620117308321083322918253202031 0.0693440935969111472874086856918094 1.0718656657226213026179441613832382 GT 1 -5.2236343062857158418396322758057346 0.3973658681123792085473635405143838 0.0183679362140444262557366660319691 1.0185387213003007933307653223628878 GT 1 -12929076865041352266465374494432753131359204.0463610684129965998886052875818337 0.9944139289724228644734976232773355 0.0896373889036684677267233134741692 1.0939122851085827532251925877360515 GT 1 -11719.3261229186710701836339411082293232 1.1629886386810892807430668501078723 0.0930001981061682802803373525796681 1.0976130472861734539403278717246241 GT 1 -335710767361389055682236723723195.5715905192968822577419923167294403 2.4503348638045688008886500236767034 0.0232142380455085977131415512720482 1.0234879325055418033105710125483786 GT 1 -215856380567259.3706588492127351933941841852249916 5.8948851945427426862072959751203745 0.0477429971240326947226501898361333 1.0489203196195194564238277861621953 LT 1 -11182666697067660766370993870225160957351.4839127536357902394049474943439080 1.6847386497620121898130277642934567 0.0392481016132424618857186797446062 1.0400390735966352158478169807542720 GT 1 -56430094884648600414992058473022872848.1339331460231196906632090045052920 0.5774149917183039074030890308284521 0.0667149575820097553970391080078576 1.0690446130919642330113558007131208 GT 1 -809701346432824032323929543.6116194313998983251765123735134921 0.0091200493905305718193094982455685 0.0510994029497233811554083291463373 1.0524512308000964707640166913741884 GT 1 -9903476596895808291106128402197752952591340.8042215984865051768977913079024422 0.8480593714187143284877225380864580 0.0017021480382048460903606909042259 1.0017035983381606327816887760776077 GT 1 -1030188.3011911516090078804188511628328162 2.5232503496952760915504797631843017 0.0985293380770262913791340751432564 1.1037277804923095417000608809736587 LT 1 -196025336676927873997.6103597859664353554593402813167847 1.4361355566304304052582611305600471 0.0726892398158245375727945540696047 1.0754665374643784476710849632117360 GT 1 -15571014117115125534626809723928951.4915913828526754016006472615112744 0.8065241643631164102504896637246812 0.0332273625523993373527376644473020 1.0337919327382628215663790122045598 GT 1 -14643535892469766966.6764141088920134256324289501182807 3.5814024338779868449592930429774491 0.0567512897788263710910539037435225 1.0584252875161515387493772976210418 LT 1 -2162740.4757343364247475661018550629788700 1.9714036123150361555576060694321233 0.0409282930621257682362592287134944 1.0417894342789384268627928948010164 GT 1 -8160042609317905775.0045410982080866274381257233986638 0.3369632166847484151282653653022552 0.0248105909201321007699593641798456 1.0251235611284905421615051684375039 GT 1 -16631632133030.6210981727671759621125651983281431 0.4209261863747345430617996792261278 0.0872089468802129577664117768279241 1.0912482820601037886142467413673000 GT 1 -84100877.7298430595873075233315811846701065 1.3758530441523407284749663447868590 0.0651913470841726014566228555235962 1.0674134199248581377763409898293907 GT 1 -73503130290776.6187662258522196696216615826459893 0.5068122047272589186998800215378356 0.0106185771623261732673103043057493 1.0106753565547432260426884974092877 GT 1 -3357524623435851297427.6417480791671462688034081017225805 1.3005878893390449635391730647279906 0.0606135317359793728960905849994440 1.0625283101512609843888473397098210 GT 1 -69652367.7325812040256017378199493368318493 0.5359525682517948682031344518378281 0.0506190996296007496599541201919866 1.0519451906463839781808922020252346 GT 1 -138725745827431525948.1579376004282607040854575854799248 0.4409018395108606368204782867108070 0.0742181931654802590948866073015993 1.0771167018693503461039962516080536 GT 1 -61884108315457473961472241.9359704309961976356392614180432699 0.1823289606168543196628298928552018 0.0980600226496875598639196445621298 1.1032073050911857731525046675321177 GT 1 -2124111125474621619460847862.3809447341895386203621384534245623 0.7053391675571832185173215917043062 0.0829921497565108694154347508929242 1.0866392459733415774940181948870152 GT 1 -26116861032757.2063658166520237739669043515844345 0.0137884635359209317415635025871744 0.0604644795186885956777808750919500 1.0623696529866780404125281139186307 GT 1 -39986524179337262531878763670961.9548170175022926092431757926934016 0.1819427485251304963620723055867408 0.0696120991955046674739278700851532 1.0721536821566334789585327269403679 GT 1 -1338388192.3594289984140083093859548509707740 3.2653315758595410773021856150463958 0.0790423132544214369151877666703735 1.0823411865123290370009930306587197 LT 1 -461984945841991185599180073601.2047437889223392893244750497281857 1.7439867290696543371984133623595731 0.0681255476853764576922774362913498 1.0705571811873862621307065049444100 GT 1 -46959407145753984223977098211277989341403.6852032540805703203945585660222244 0.7958235658168098461833971213927055 0.0533598416321332968736160707137439 1.0548362386111350824859335630488518 GT 1 -591468286601489771557575683701893750.4796083623459948491698166774979168 3.2407965785895155887444079656763835 0.0167936449309023685816493143229881 1.0169362570926398737188900685123748 GT 1 -9644.1604249945092608443458110311457826 0.4921168993505261193151948617958472 0.0468024479005657083332745854711949 1.0479331018478866756760267785649638 GT 1 -11931359409161.3240807673757654778060598832108156 0.1467415549688473222844101352962940 0.0487155803177887516358405901935084 1.0499421868264657217919158970136710 GT 1 -64573905247256849198777860136670923081.3072947362804658414056815523795311 1.0048832250709185874519783772638346 0.0502230900688364556727444911895085 1.0515281536162270084439660166684753 GT 1 -152813578745834196082322.3617926481690455614439493442943480 0.3221537759775974285582062139023691 0.0812468260570635186825727746671126 1.0847377738292902479499313182624556 GT 1 -134423171054707087509584364601.3255413096932638825632108968476717 4.2761731734701520400001067156489240 0.0909014227229735980367420149137199 1.0953017448351702702268749790111265 LT 1 -7778735774039169715599.9546901860611167197752838055155106 0.9274448711787391842504538929027902 0.0088936905991058059715527922292084 1.0089334755309198727499487518688495 GT 1 -284439600219.9236346507960204474102317169079296 0.0884650607086256785730995412238622 0.0828946795462002358553286043939902 1.0865329600451233801477380938540738 GT 1 -2838.6020757716869954176650256023882851 0.5686940712770861369876944378707811 0.0466532562551677520789304389869780 1.0477765970700772388071431261251330 GT 1 -373868788988741842726692.7232844916343464737004286358173336 0.5942214816609583092599138566702655 0.0636578840134821545388329047117018 1.0657743607539117479129977210317728 GT 1 -9400.7858477778178457287320676839622382 0.3962274924817088342863105175637859 0.0860785321009484372235975241100954 1.0900106325552662698827160604352955 GT 1 -405571680977549.4227481500376712061482884986414241 0.6101609156851232901031165759713256 0.0230674218119871700067568770708476 1.0233376383400204005352334592340792 GT 1 -987920918884953045.4060833870974380267311658300394717 0.9759659821341978342084501202493524 0.0791026990533103822781354534601221 1.0824067571455375078261094258213087 GT 1 -3781361738035684733813111007049997783807.9601964977784400362436718849080301 0.6402043225758682451200463868901571 0.0598877704506930690777223368571842 1.0617560177073203007590448758413350 GT 1 -5.8280563995322539939103859392102956 4.7446862579416684287463148153461346 0.0568136797279362286544421769308823 1.0584914333924993634914831577296749 LT 1 -26343023795641529428111718161.9409535988711003544168559133911673 1.8053268393664608484639811038283072 0.0622045436344042614526051893848507 1.0642234173313549382846924399064438 GT 1 -776269326.6834755877244078657455196477901619 0.6058172753052848225895250563939179 0.0443049532210984616559896790810465 1.0453164055434595232978728551906091 GT 1 -2521664839287129747728.6506157289212557178724502582046703 0.6606927561468626898983039392746891 0.0588931576149892216184673363809762 1.0606986045190135422385852163870281 GT 1 -8.1205408968002312119769311618306073 0.5158819684499238348360801388416657 0.0983771108956299387629424630321636 1.1035589293734407577264373053497352 GT 1 -398433001025839658586695257729860.0445888101775270481264541530222358 0.7869697798009824463343898545571863 0.0674831855770638918936177620269860 1.0698680960739864419161370296412858 GT 1 -1318918374091562301.7922724113791062287340187362096763 3.7017089443671458954597767381240961 0.0645776727952840155959648129024625 1.0667571648232841816955017228855936 LT 1 -30358478475603.3296781322083514967337351431544240 0.0924867427659983032137525425600924 0.0763680356446835465450745613768664 1.0794415936605115977403338099159579 GT 1 -22362041946147.8838607756865941695520358100903842 0.1095704622980149610449843444246220 0.0663976468521482306908559167868815 1.0687046775032717487000493549399356 GT 1 -118564071197430.3964010215456639643317611235681879 0.2818723088893099345417734326690132 0.0934785573611688871327233197464279 1.0981405947494711101359389357722615 GT 1 -1273757243151511063078738191227556066044389.8702154326096581188823468136610593 0.7036324067215122707050261655609266 0.0779084839970149640485425153992867 1.0811108022135784267943054275090265 GT 1 -4865.8815967643935617180945190713072183 0.1795492004752763507228692294286152 0.0949231971644742092905185370165818 1.0997354738714116005641195198993644 GT 1 -21430221023732588241924876706149379230515177.1181596303033930956040188084142346 0.7249504379920319672626549002450241 0.0901869571354901788053215462088645 1.0945161479800873027330558529104268 GT 1 -8832225428462506386597450196436.1716734687783618331756906836600253 0.1884099932685566807958003424678676 0.0113694506120133723750263420089178 1.0114345769197344893526800330472182 GT 1 -13464431682347173005370159529766263501018814.2201244175200390820267288977002042 3.6914396648321656532582505763751395 0.0496811818845704424614685865408449 1.0509577526717272929637278671282081 LT 1 -2772381180111507996923146433.3202758306455178985543460839460794 1.0262782136419764371896884119235823 0.0368192299378676699852279340052989 1.0375141692633669892569782929341641 GT 1 -97121823533529793596481.4419206752187185584066896321325371 0.3989222418582791654483313835636403 0.0200310748237512796492528915210781 1.0202344168240883743025426471480662 GT 1 -1503701272093932361.6318655575399712975504195044414873 0.7703763018069307453564251436457362 0.0599719040910944912215940264046115 1.0618455148999695517823371188044789 GT 1 -937.3626324925102589548643805739180506 3.7811550145514734334016138913238589 0.0624233169910105686905540638497101 1.0644567292730281962057818504532170 LT 1 -1539804450798829478052593501662753.9062177914549320340720285249236792 4.2246908454084250371460010360565762 0.0555965903511154472847850093687483 1.0572018633909300959883461569219025 LT 1 -11.0407902022906677755580022794186620 0.2978654369459255073630271791206657 0.0104369187287057058270513230283018 1.0104917653183507688208149965334573 GT 1 -513473102431115332255364837382320299087149.1646591171727149785256617075244877 3.9088310100036709563743099815544436 0.0104047512679623094825111194866029 1.0104592591158316659888661762820074 GT 1 -53936986383968923251535915386767.2731612147226722138119888650362900 0.1817518873763696791132138929805472 0.0913609389019536122845292484514990 1.0958073361582165908731764469419954 GT 1 -48794511362547228044196353.2099883697188531270607912396679154 0.0097519019127058904651691845648941 0.0116718198956371117874781044683579 1.0117404702916807275840666769816573 GT 1 -90245762814159207155927123614893664572.6991875317979567918904546770566882 0.4202212337888485952082199382970498 0.0697129440465499034640741961760567 1.0722620781457101419360466222579764 GT 1 -599893277936695814551388996.6417616062462904533183886345465336 2.4877137008070314337951407302212373 0.0920673120496293111812051118192881 1.1012493698680298744071437248571114 LT 2 -862326945047743695484.0106240526392495906731089867332250 0.3167023202392932287166395947222162 0.0798214312763969011142757349989807 1.0831875313346287244166959092788825 GT 1 -31838951236542208374796847703210940803255.8613666698667516817220340775136391 1.8173536091280632840977224714976011 0.0544364204157657107447449601375173 1.0559741487401616374553577585280611 GT 1 -10550078213429898101501754115296454786080.8563941787305000247025656424545176 0.9377582450836033019667338681005998 0.0829312683704418102065856989647020 1.0865728568304964673685365948818645 GT 1 -1965759915991626963710877378626605.9939664772018613265429728462431893 0.8383053107866550079684078629824960 0.0998436838342354038874273719367244 1.1051868461106278332789459523851050 GT 1 -757214641870301245711964139717708807.5646406835966895323001005225136488 0.3157103233574089161556561295611876 0.0756103972526979873958705152958790 1.0786216482140731536975581316352989 GT 1 -12810464634839409218398649643.4357957382803506782472550181937516 0.7890612174474842698534976962741665 0.0915748328612521709523331648758662 1.0960427642261545745168591463981506 GT 1 -11481451320079393917893.1118487601839047766204904506773839 0.6968800890278818033205037494384754 0.0159810167041768459186639671244013 1.0161100901486712830299639140538519 GT 1 -35255367959874512728761.7126009165977152515956821570527831 2.1028811145062437579494732866757550 0.0163925674699823336759280400320970 1.0165284122127550872017492315286158 GT 1 -660873241629329484400089804531.8977913847728123308326394719721774 5.2536171569724927022833283184669159 0.0066732786081498037343064033954027 1.0066956444898793174785053855174775 LT 1 -7517985706236570353.2364173632530205958996020856921563 1.2006766441058013623330189877016583 0.0703346523539401927137023300109538 1.0729305988340262523482738960130037 GT 1 -1483.1473690026976410584441348303533915 1.1814542726596929175211840930936224 0.0063662243981604380040733263520800 1.0063865752226259484965756715781612 GT 1 -7721386508526573837458763608215676999.8704292899557804998067755981611838 1.1126541775158544678726090764733303 0.0831500778082917819388406958970286 1.0868114818517669935000248249858453 GT 1 -295650181635327452283539233968626387.9688533153328118612586074172607851 3.1813258769252327337163783438370403 0.0651449870577305394414132208102010 1.0673638280893872526844000774026764 LT 1 -2135903603527732209018487803825237343266264.9965785644064937326542082053230318 0.3309156904575409361099823944079534 0.0911815694851573393402404895395528 1.0956099511649428740908410687221070 GT 1 -279268123749516368355.6474766725952714353017531853816896 1.7678605354455466038035123404548674 0.0691304848141546708118885886656421 1.0716361670746665459176648115736362 GT 1 -997304064389369581565032678037081752362504.9607287990506335276814160374558601 0.1423818362459690567339725314595872 0.0237345803862291397529904230185917 1.0240207832141591220317573574828840 GT 1 -34857758515075272167747419312669930065.6089953237209352820756757125684822 1.2730243399799341961894520252531696 0.0968227903350243960883320727721113 1.1018364993426127132902675204167253 GT 1 -553190533.1485673267426801890184086858942098 0.2515595134196858229048837070184714 0.0142500760548278335079309765134394 1.0143525833786797398230683359854190 GT 1 -148035175317024470568323780632764585508327.6175842076925548227712115713489753 0.2967881703416214918956158046777781 0.0303391149289111678402484966571441 1.0308088716295870429241321391530499 GT 1 -6679315032424693451680042757.5986253559052048766610753750078969 0.5436138915656742874312984833039215 0.0635377378415313369753127325331279 1.0656460545906864700653426957866052 GT 1 -241267579997292240296576010665.1562504969918435363615792184499019 0.6450208054902145220749043252366427 0.0805355149468403339253815229096275 1.0839638598781920507720553870517711 GT 1 -195.6638757772186552205310359264412536 0.5242965159824562846621408317770771 0.0153266043684817021833829200624945 1.0154452708332685788777893107993253 GT 1 -211329485886436646587937.5848272281944209465967211124129458 0.9633188236239694359703716740955593 0.0742154281761297749613385543185660 1.0771137152204433923625438828990935 GT 1 -11189810283.2397095933962207171633852038225811 0.6801395011907380564310617424937262 0.0846122686905377988655236566963515 1.0884075533983331355516701330789581 GT 1 -130402549254224505051309112786848.6094066966805914137175019214535712 2.7504262319758275468701042555201283 0.0362718218716576935497024651764139 1.0369459970293336038558891725880178 GT 1 -57451228148190933777791944924131.9445134929642211558514753518609239 0.7194154227526123578851847545567138 0.0966634619221845944364344014413704 1.1016601060951746580257297663468703 GT 1 -4805538853715178865966375076314.6070753266940304762252762908635971 0.6073656699282565963076052613597009 0.0375450276995210845669646408957090 1.0382679959399872980283042707525509 GT 1 -1847028162456287749.6415896220823856891608793358741344 0.3266248208467409658735035332192894 0.0812290769089941469700392884607657 1.0847184552820139714832120751939452 GT 1 -124742016818885432429846658538632965981.5691888461482514616908682833633540 0.2580584333429848947772944851942176 0.0423949366054730576743868785884963 1.0433198371640833333057032308597056 GT 1 -30544188558896912406.4227183136685722870632899267320929 0.7773355094273640628531890572117320 0.0780978148966521683203497512953204 1.0813161509630767821690751575812628 GT 1 -3142679703962.8531886903337554856946009986286110 1.2517347593182713373898077843958137 0.0626722818964135946683125391463600 1.0647223053810351903864448828825464 GT 1 -568130883143593023263660.7839499561027962521690918067703559 0.3708662554314698989672899480590817 0.0514206702320488763761983340708051 1.0527898560270142667967374750405818 GT 1 -41460204.7488890892440001823017572531423699 3.2948613140238027976950816969047228 0.0632921899367951144591855095213906 1.0653838809527621051214716279226056 LT 1 -55.8260671447953575080533442010051097 1.4447961538191339017693323008497056 0.0670147286595322487609119756894823 1.0693658646040207933181787816874887 GT 1 -22351870.7978617777363562054591746855607649 1.3877626279240126130833622700563445 0.0157839834641817558697925060104225 1.0159098770230332145848777269592370 GT 1 -31.7027099649336310513422230266998928 0.1343296116614327585700319581186292 0.0044176157683334198602656192473544 1.0044274022654966337057773387449728 GT 1 -13687334923012.3011544958597463855704870796387420 0.2506130132640006008403712532505906 0.0380640305495621433645239565744537 1.0388073903544635368690258649539295 GT 1 -118820785984126134328575817272304834.6436094102878777660285238469360336 0.7766816236923509041578773700816387 0.0988421438600635778319843451209116 1.1040748356764948475841928106122003 GT 1 -105726733394073316156253562896184.5207826793013071259793635020180515 3.5186146026904031767532847573700278 0.0337629801803226812742536557237070 1.0343461127338129648299062650877095 LT 1 -19975417064037948027952103.1878832982537965114437848961818456 0.9044387884015302466907610608635777 0.0161434843012089467285192653442761 1.0162752099415486669186706110957180 GT 1 -107984395254586250.7228154776658397638690943807657752 1.6806979334321168751405872678909428 0.0717844139703271629948919746146307 1.0744912606443391885408631743411974 GT 1 -3937678118167529.3971061006436925918234402533971112 1.4777989497614006679633712785505016 0.0590141923393647146803649469855787 1.0608272216989801159541909789495002 GT 1 -98108642752.0203585051111586699671102304671610 2.0529001365234534217785810322104345 0.0023755966237420934649731410203975 1.0023784228302397490080090047222669 GT 1 -3661654199331509.0259600066224691656649331516374718 0.8561808741483404293024854672830733 0.0329928131213379907827330426732347 1.0335493514172034294850706868774817 GT 1 -25766833621441014726.1658074842684418206760445642662898 0.2364684424079865593014605725102583 0.0495806047098813393877295557269098 1.0508519230797575809460297675641142 GT 1 -3604727712947611900179680874314.4669784885902879268255904289823058 0.9557508329863174541859046085972209 0.0551055811727387572492744493014671 1.0566820838389391654581450624856005 GT 1 -13457579062154289585893943225145399.2616200009264510863947637220489737 3.4016516169797014142020067101699870 0.0714664159372452891864270462426404 1.0741487286089806139121289767740437 LT 1 -408992836246159911388613859877351933.2137242635593700406464842045551915 1.1734234813047189123650897150933243 0.0262952120384141473695076465345582 1.0266471137233030724221413822089136 GT 1 -2346428044165960.3183780724307834572278742851618721 0.9742835228953883416051632469171898 0.0232218282229765093287230553040609 1.0234957031009514470194791329914464 GT 1 -314453065501022323854674231414.1509918136303321640350623196887337 0.9503700825276943167786861214634006 0.0882723880958876221231085465861729 1.0924140046766903437535484379724602 GT 1 -1035901088209448518795001.0518053636500029595468595245433227 0.4301205192866804572270267701672658 0.0108223262283622523343583435270707 1.0108813135737733587121124798522842 GT 1 -7897039219237283548603.2925663306843297214798252695268336 2.7020395442918002548917878063906999 0.0921088687945232020608732042973251 1.0966308071228094720181669818373084 LT 1 -5875353846548.1458596073106847386087302944718772 2.1766292877502229347528681625963782 0.0828818505860602548441524737119909 1.0865189716076718462147588486803943 GT 1 -853339747615219434358692.8877330022921041827278986492222636 2.5869264772601591581134800545767633 0.0697358552992420457124863855894815 1.0722867066027880705306799271302919 GT 1 -1644134564874928.1873452031071963905854881819676047 0.4272919864180780681033992690347339 0.0716795150837152137278651954474875 1.0743782556902580849482813982448612 GT 1 -19.4572612656639236687956724047297402 0.3967075755557208302000846917782633 0.0979353056745130460648756873436091 1.1030690382925112974604846023911246 GT 1 -455746544099943501920724.1016848788080890423108736096030313 0.4237216482008714289186534162315087 0.0894963400234318266087007129043508 1.0937573600789311796225221792951288 GT 1 -37331817334451875379550553.5366139503894090839533700309263215 0.4813099156125130890717591697973947 0.0130436975678018344343283626435870 1.0131295136470791579764261328287437 GT 1 -267.2634508187259975189998917168791320 0.4542965539695821253713698479467379 0.0766137199575711686514420119818226 1.0797076271066692809044142652723188 GT 1 -2443963743862.8635202972033637064574182677670121 2.2232640375333907785894108582481574 0.0757599285214590958187755735384237 1.0787834234697363478921644462825269 GT 1 -10008501036704804219967230013528884207.0564260406025569090296971231118328 1.3617269512031317954723726802391256 0.0464954952946081187048910636103603 1.0476111295633193798027921113667646 GT 1 -219875331857016.9316257258813530091722681672962495 0.5521386395989352054607201108207555 0.0095866639618840477147127191583932 1.0096329118374174240170880126056511 GT 1 -1492926178072349343160421277.7232364468577747850015399610655055 1.0593056074088213455621856075358310 0.0727890094056832757366762276498616 1.0755741334954447953788728688703905 GT 1 -280632439594035397237.4113207062227808030844534917850365 1.6048411612126922883648922827370536 0.0338035581783938855473473705571651 1.0343881095206443251303232786742383 GT 1 -1751824352710703.0024624341708545455144856894380482 0.8821456859090322947795468419746858 0.0603153924652705795809898742187297 1.0622109839180488153324614032619355 GT 1 -18090249170451071956.6675662703950584572206430785177639 2.4207546091641489672597989271736109 0.0893653736430510145482235225104413 1.0979952775217531254780429618587271 LT 2 -132027938735408813407556227875.3094448598984635562972339183622096 1.4387172992079629751851089145947620 0.0138469784765315328630767036341427 1.0139437421780136978639831074892797 GT 1 -435348923966338343.0830995134618690452054937099509779 1.1120923416626957603095770980435630 0.0509991174332672618713782517486495 1.0523455503760844805104741735298891 GT 1 -1004.7435132978555079471415265405878354 1.5631195939690044469097429807674686 0.0055666359422249879693977639528440 1.0055821873998020727381713346118934 GT 1 -508863996246628245415278366151028914.7337180230451605038799240243034086 0.1701119385561414273456701002149202 0.0043527916478197030868398995876709 1.0043622926259271447278789894689753 GT 1 -1.3975946331255481154177557540135647 0.1024753362386409934473357488396884 0.0800954481476330450572520592277720 1.0834853623078033379051261615680845 GT 1 -630178657521629.4693029119792681146193325692387448 1.2841289975782044642791763134134532 0.0401907848408935351888093791053848 1.0410207484797789394608176348123189 GT 1 -259529258823802989470293522569839.7612638672532587290169440394409174 0.0331752119050956662342574360740602 0.0218138139100977292219898716013956 1.0220552527411585455706422029119468 GT 1 -35437177654924275003234.8586487665085602862562346464655865 0.9496487163618730178752189254326748 0.0573557688979052155674052048139288 1.0590663410208701811742933639763372 GT 1 -4980961114.7393048606422789455199453524082097 0.2799289805252796675256673487040259 0.0992170656593235729750060348605092 1.1044909667798595446056992525467285 GT 1 -496382532578097040199882672988407735.1532769889637653008119053053021623 0.0265250886002591694928684844596359 0.0179875289099929361860554785545830 1.0181512710239865599076868225603507 GT 1 -480004936733.6120932208143060603119754194293025 2.1212902223288993765399126533370156 0.0214905081867628704577985731345812 1.0217247918218361038257717206398256 GT 1 -1747237.2751618868136494862552930998766111 0.9927617817937915252188787693299778 0.0308613926983389890482846304959848 1.0313476357298622784416846993830028 GT 1 -11545388.0703452755644015077099904050958324 3.1947537243574794532835422415778929 0.0845172174522896679408838830925338 1.0883037216553298815290115780006541 LT 1 -10968570.8957883720540383235329565827954149 0.2457626227437071205163451685329491 0.0778866671401260820375381825414701 1.0810871423073555881800731700076108 GT 1 -48.9907985029984452862663221358779302 0.7366230942581801331978202219556236 0.0642889764932275398933651419813381 1.0664485857428701311795005854379407 GT 1 -8176264780686980260305189920714135573979.3528468014233561040385783178312806 1.1621136618964041853400523293473012 0.0520136142178826674363477510112489 1.0534151378195629504240595624906312 GT 1 -37856083214002080111535262.2303429940217044036069178748842643 1.9129735587234501637944017801606434 0.0730353955111644122152755624173102 1.0758398970052058863677221908442984 GT 1 -20054429557334129193966296182687395521.1798679622444682622169641973086061 0.9713227795768827078374190253791730 0.0931047107849474827052925874145080 1.0977282829240084569767662527230158 GT 1 -20199492844019581201.5261692243179539852643801991203510 1.7712440619947708874471334564880599 0.0809703372691827871647333450972388 1.0844368799647385509036901902232639 GT 1 -1046824186382952334832459347.5262893675186226363450368903671111 1.2412473813590879250634719192775975 0.0868544124333632116450329652628282 1.0908599504571278774069586739209943 GT 1 -18804804812841681379995.9843434062478901961688422050158919 0.2087590052350480805839030079439544 0.0584727543684127989126026587834218 1.0602519927677016315090453684628590 GT 1 -38276274195.1766369323853850503371177643850610 0.1776547595565303686612363727200869 0.0688126522767013086279349981009073 1.0712947891641730313848833281780141 GT 1 -13550307990151676627508714606482125898.9962277323275880433726817248810333 0.3669988096954920882867873088455310 0.0922322148020457772881544170135054 1.0967666762627651837650182023071309 GT 1 -167433913817.4207754043647407532698182126003373 1.7177963256318403118409679073457124 0.0450121992056786180014095404231922 1.0460567126203553240759549566950938 GT 1 -1198674668094777002769005748714257811.3596962451183349294678967819902435 0.0656569791786070367793877286140232 0.0803254687802874004557737969164606 1.0837354419439220641809450698132656 GT 1 -31914941560788427354472.1771900715474214355805595880830172 0.0701224926354921985348345032148715 0.0444533968655255709668807186923675 1.0454717429334042527483915600503693 GT 1 -13909600822141369915.3563544875227643343509989572186845 0.3470366764081291325005126379120787 0.0524113376630388039682847468039084 1.0538347713776086975601482365243729 GT 1 -600071857137245382940023355719255513521.9020975652456438543046672941296818 1.5729053917375012272438143163410061 0.0636794882451471621576648719822883 1.0657974340308020151934083198463607 GT 1 -579606077240439.5958147702536739983195365017795840 0.0511404336562233088680392150865941 0.0078973627893895927447793648781109 1.0079287121193401520558227715353962 GT 1 -9592268576.6087727713700979659034145010468990 0.5245342008605734722571373698616033 0.0952501437562882169160678266201059 1.1000967754289176059199665952696364 GT 1 -8536142.7437012582457890958891343522704083 0.8387493141348136947013563448109393 0.0129426154890961921918933968965943 1.0130271009034770366018230870105882 GT 1 -204909668796947316677022946095223722.4640213003583665009309272483573147 0.8388271483947179893920378188633983 0.0917183864297389402524028056728517 1.0962008013627028556962929455469997 GT 1 -13899117045276615696717715923617.7318199256546229747947551185329431 1.2452028427847598492479568698070762 0.0975182083216127531191121012009657 1.1026067644042374023611906889949685 GT 1 -454419641209444446154683311156926655461476.9179132791986773668553835215548567 4.3237793316490712069869975488288035 0.0252359684684440090510747971689694 1.0255598562175940026958394152094773 LT 1 -6556684969752892639416721872608.4799761272889173941978903344114860 0.1715115752219209026433866165451010 0.0095900192792041884795722909762020 1.0096362996381281245095581211597042 GT 1 -15230962290804675783.1291650332506986252583915815248424 0.5159120106724722114544469933905537 0.0071458138826265618725491363943278 1.0071714674943253772692582065390515 GT 1 -840263615335432719494938601939352.3955884444645880615704328134023860 0.3855461980820840880822141582649299 0.0559325785913564734532362183298544 1.0575576944032608411744172939009312 GT 1 -40201916823048363248361942.3396522971947763847403107666555634 0.2984817007977667244526847753360314 0.0165002860342409047400840186987564 1.0166379319860507430581164956183004 GT 1 -918774977449015058793381475935791484360979.5758458712133054354654624335383800 0.8406830450157552681301676125461981 0.0472001180400952483786831322540363 1.0483503848286438488398268546499732 GT 1 -2201682273820517059281441718.2730086011615789742299754946940340 0.0045126067173935399696073945957238 0.0046335382920717173477076309549146 1.0046443064064796693984716476841366 GT 1 -85136337947968566152892948205389637795407.7489840828107989901944604452050930 0.2218866416400895637741140273670255 0.0411039942426903030997915914992401 1.0419726502735488165282489049449543 GT 1 -1173992511879954316618740879690412568859739.7394603625309425728298718627894264 1.5604866721825658060098376859509348 0.0138939410841612129790798007091805 1.0139913653408165232553757468246789 GT 1 -37001265843743674161309688107262309.8969410879433208969433443043165904 0.1318483855735842702001695888468779 0.0955644774859137316991287745306683 1.1004442619125904286330999023162143 GT 1 -12154741455939043705277867611.9921792890111297485459284730321951 0.2761412588501881845751398341595768 0.0397124256412343701454376179132575 1.0405224827546681948072136319923911 GT 1 -1004691464103317322984954414836907660.3504814304917543978428878556057246 1.0754786111442617490231356069208328 0.0429557747612300295545907413703704 1.0439056762262309741779769090444001 GT 1 -1543167017872109625126907.1406395160010642879311803310151603 0.6714067528862277580835726075712962 0.0801950753774926315419317447794722 1.0835936698761786178889240440970682 GT 1 -12644468839596964545567821515654.4474738006576056153675051747249149 0.1811989135298571135208425871667558 0.0962061380678828246208400432604071 1.1011539734286421403111990406422550 GT 1 -11284556318.9291256699145372871199206017337209 1.5872062791387680218981448829111791 0.0352806616674772030171033393803303 1.0359180610518220427159984065229817 GT 1 -2574786732.4269605210429544712869946303751704 0.5475343276844728550852212006301151 0.0710278664076779670033647061558547 1.0736765367513217449281429134818211 GT 1 -66595133670252028587122388225394712986.5113522904049093831541058990435996 0.6092076866564239412472707540192318 0.0006445792645672708376801931167500 1.0006447870950950572513283211879404 GT 1 -1580916660511880080658739927026118071783664.2415299300372073080411045102786129 0.8370974375660988331288057450436333 0.0177761041505582340472769703249433 1.0179359967690040641274521655360568 GT 1 -41768398182364.4260762016867000790434892396972265 0.7883885955225623739378147795073613 0.0000339727724962368620719105892521 1.0000339733495839426191680815880052 GT 1 -48195727713055405775415986801278457604.4630885549463728165041525824696009 2.1332565799457038607512096218665191 0.0171731153492026195250319215303217 1.0173222835497170612964660574399663 GT 1 -38264624208056101953443411.2315127806747134735350904822874957 0.1808436773804351512399721181269373 0.0947222013429237566507449743619398 1.0995134225426712453720850986661987 GT 1 -81504132364872336889684679.8404973867629374605888486934343245 4.0355640941003287243784394524586974 0.0651912434420805354344054536874265 1.0674133090550175587937947558527899 LT 1 -42135193.6450777649375020024613284732745220 0.6698899877782493536951413333360367 0.0485660184237050509357422102113385 1.0497849781777315671618672117941451 GT 1 -65409748344089743921033836449102457161718.1793348256088894446997860881795860 0.2217449157935423688778892174850900 0.0241355452899327169989900577052563 1.0244315805843711614508922866035086 GT 1 -3748.4543301214907382978785626443295064 0.0076542975691462688636148201966057 0.0107747699024050822816784600315666 1.0108332381025199330210847935544206 GT 1 -194553062119133523388.3670081056349601600683139049757175 1.4965618169736100274300530940382164 0.0881540650434962714870248221813925 1.0922842341469948445792198120368182 GT 1 -241385179471.3294404222372472935987112542428126 0.4614144930496400482867958220925825 0.0990522572082616504671932945896049 1.1043080221770803013822283557182005 GT 1 -590644947042067898592009428247370814.6323295005193127730445467547303817 1.3034081255956177922645818177560633 0.0353100541326911677729381341967211 1.0359485288903018686092349587980871 GT 1 -11892552492549025056350415.4236515852865908764325308128248893 0.3765147539913669020414024999403706 0.0011443647031188732361817691966942 1.0011450199883769956796530930429506 GT 1 -873922964683626179776267347773785924126.2727180257986567400800770149207425 0.4521802367090860099322403140128823 0.0137513829803722551959786317184717 1.0138468090845036557284977675277650 GT 1 -3079463674461475.7097076815471409624118625769213284 0.1718242944706987515429349854652262 0.0776291883324254024085272281073788 1.0808079544269532919471928311915281 GT 1 -398794220869713430400650.0411204260553337310411011266121162 0.9962252522668880852135056390311260 0.0861312069621695555538866295989133 1.0900682703076511645108092610717530 GT 1 -3584559386.6746886330076437035218233558629688 0.2799845797863694163777866675491769 0.0639392491161882435326551331628235 1.0660748998203726019372940481037544 GT 1 -18365250446754790002667895185035218015.2710953706168908851524430501589802 0.8210446318995274588125811176383749 0.0396138267208828205806558048687107 1.0404198115742457787351660212528619 GT 1 -5812531675582269570741062951250827.0715167615156316975807252423219383 0.8481361015192125984106594271831360 0.0326667439711715393920305622358663 1.0332122141211803982566557464145569 GT 1 -574505829552252518.9211516156690579192053058296517269 0.4107787392100045973559741804895157 0.0263540259625899100853914313924940 1.0267075177607691030519972363772289 GT 1 -62744892006044560028328513010848.7773157149896315541858337414867299 0.4149354711300508231543941854846909 0.0213090075324956543312794062197798 1.0215393221612211330314218537175592 GT 1 -1018081825008852558162639.0576970127357092325867671390472611 1.4300648954740077284650738196572772 0.0742171196505516727352559248679852 1.0771155422934132837253087772451691 GT 1 -2089738119392521270116183522900.1775309586429249540155414688722922 0.4502650780203258507213816253507358 0.0884714740830458540945766808549008 1.0926323897777408085754433127247767 GT 1 -54151922366680672078961231374.6252911818807969058764720467495980 3.5992049314865231786330320369280655 0.0429194688601193762841154724016843 1.0438677414981062572315232111554372 LT 1 -367250162.6188047603035226611498684961359966 0.6496343745751923274916298681001313 0.0657326387803987239795574930838995 1.0679926277337061831935729250516176 GT 1 -3737922320756398651370338303982208450639.7099204471235565638831706203073129 0.0402050736485350801469803508831072 0.0826018728464046957607405693931495 1.0862137382931404068689942777539756 GT 1 -61670577627.8136017524760453539631391124064801 0.4102108434367592647392568736280243 0.0148310172169783463648086450029056 1.0149420963992222502810950387006480 GT 1 -593385.7446480132269232774669646046577652 1.0468535040029797141190038804782821 0.0860234902800364198539420436211148 1.0899504083834551604298434008774907 GT 1 -41563774.1394987426703004892199050290046184 0.3979034481494328208160347559385463 0.0947168864553795501458202292737537 1.0995075515581510298023644456862265 GT 1 -178605909684.3961670111034819194048510817728133 2.2229496769359021149598915140047402 0.0112896364920290608813150147248372 1.0113538481799333545342481711806213 GT 1 -11256230767194678790993.5980650448513510293373163969754227 0.8649680351541125805504666382788325 0.0033420351973070741729518796178181 1.0033476322708274818135466323723975 GT 1 -1617624757754529829918719954561255529268.2016920331623126190959696340207415 0.2781484196330326105393243756744812 0.0037995205008933896621088655458411 1.0038067570149162848288366690331704 GT 1 -327823754082978380160.1279132064708536427740480564797914 3.7932175992791782776382936105848336 0.0362162692318022009239756373101417 1.0368883552169904813269961279373183 LT 1 -509.6139971061012397087208059045812275 0.4076763817899464096910516688170493 0.0617141183666504600777684545967257 1.0637005985505360376584822745684560 GT 1 -73123329136391744482942346.5426017921352036316896523173033587 0.1781426795936754065768005694643087 0.0177078417251870388806251860818638 1.0178665013579023221001770723322313 GT 1 -17467121556197908891096914491794.3078872908115823888346699445977288 0.9547435549507549630114047829648077 0.0456771996225568952538274670025945 1.0467532995909196669934004154807134 GT 1 -1.7014259819285548909587377541739124 0.2197096733891890374781248860718071 0.0429875664106169246948990134411237 1.0439388953571727745574403044652132 GT 1 -11934177.4132778432950438122261050638880971 1.0720327780644351562585957770857252 0.0690687268874472597067819888657259 1.0715698249320289265360882975704741 GT 1 -11538755288450722835.4579463584216754889256870356230150 0.3563135660587423264511755882645228 0.0409931401604219118053744331155524 1.0418570510068911295477541883147632 GT 1 -52815968856690.7932051821136329498471585651734169 0.4920047012453250881341708864828159 0.0641063626375723656759866908423375 1.0662534442580761540332114649918086 GT 1 -858484493391784985881500786444078.9565477082966794324139317734612569 0.4362452239848765871374452366937366 0.0653188798210433169487550761907935 1.0675498558004686560254862141427208 GT 1 -119763427007763238239133115240887970.2006334146214689645123615537218986 0.0052388459850210031102824632738933 0.0139989980795516181658888825813752 1.0140979082335185386513802299220744 GT 1 -8.4378822951140825832139035489635815 0.3482723574711115938245633347753663 0.0000066017624895798873641447386364 1.0000066017842813097810455888356993 GT 1 -30791060069307712036084422018007.9189881499534437974389036626141296 0.0389990535084767395785546175649504 0.0154840590360539152886239365363979 1.0156051890950442565695053131813311 GT 1 -41.5355584267492259479265492144619234 1.2870725780355987396097800869849200 0.0678654864113420078887409273601222 1.0702781468259868312750285573839296 GT 1 -11.2114799700986435364855290544837561 0.7808529521989782146530852238237125 0.0873896276315107290185797560524207 1.0914462448198178640867433474876577 GT 1 -4893366829230.4004681431075639761975766666280299 1.9938127786873522083197876643043282 0.0547818099635480926101984084248224 1.0563394892116782120958007881974446 GT 1 -205055636187039675434947.3108954111969156521951719367673162 1.0919338374020260522510684668287580 0.0215104729057493163042379576047029 1.0217451952239781078995360606077137 GT 1 -10447986329581180.9719431622624745295183633046491771 0.1924149208314391062157762441983181 0.0205903988448050806083473034079184 1.0208053366629350726413191975179500 GT 1 -72054382638841934177403173.1595705361700554419259660745333722 0.0288802066016622971340712392058147 0.0968190022687579206506976943113038 1.1018323051952382107391181851228479 GT 1 -2453181732255999339793508.5555409982317765046645094094100387 0.4903539859143279194574322529310270 0.0199455565561640262402633368679350 1.0201471543260889474109614361774110 GT 1 -35455546326135607432160.8193590424564354189807969888860815 0.5339253294987582131198847835901484 0.0477547991900355158920990175398278 1.0489327134786393154440466030419724 GT 1 -1277156469.7077647785286631616506191067953472 0.4621646506616446971806109671396078 0.0548997382623128040126483434932244 1.0564642600393734302735857402687605 GT 1 -127684494114391587718193473.3269249961024641138723602896944271 2.6233032064258470303880497972990294 0.0515896659842529700984813299845877 1.0529680285873371193773607407566608 GT 1 -6.9010473327665288148893550799303063 0.3922124433858764452461081981035269 0.0174866352698075750573685994274367 1.0176413325524159016150377536517746 GT 1 -942509871975.5156219551505136429595720099612256 0.1860821078041891448381952575459918 0.0312004419427921081192270051443763 1.0316975429188252720072612594644088 GT 1 -27971679063302408269957204868584.6221473202201776091344495104032870 1.8021694322023904429166860676075412 0.0558366420144844731906191583336217 1.0574560790943680029650775211530739 GT 1 -5790102300559098.7010373709997408678588538355739038 0.8243706779429984258848031519252505 0.0287701837753269017177064441784042 1.0291921587520705427475574545446652 GT 1 -83336372679547960617442988781.5421373868215384411433187059735780 2.2129848815702603147845297054531789 0.0289399504435008730182520483787186 1.0293669695994082187920337694992386 GT 1 -152552093007058237736398198087.7414553673460637773274542376975345 0.6942040902827839735642951508677153 0.0963042632239685521878000450434245 1.1012625496066209876050111445388372 GT 1 -5059210204958591945217604995633162.8160711839231841698331643198024140 0.1377159721028146253504972496633280 0.0723882255869107632468587029291275 1.0751419802648817397901883266804936 GT 1 -1196113106457589083952.4771663306419343050139682164508118 1.3505161803322549413394287895840772 0.0647634679270852028402532268803535 1.0669558062072977960199311448424372 GT 1 -8566839488995499294285501342352379394.7023218707445960848184667324085987 0.1697955927629007817598398679230850 0.0303334040280766595808608500265308 1.0308029820612801437494637987051368 GT 1 -18106282061399703214910562.7787701648173578097573740489329278 1.1989530587896264456272522822766110 0.0336030836207754493559424302907905 1.0341806426394333211675644236190699 GT 1 -202457755906642003.5590337295974449377632812032092878 2.1199544398527867294752238477512539 0.0017667889983303987233544941051579 1.0017683516108216573163769200604182 GT 1 -128626787232096429660202309179486810336010.0494620890947732221789129019771464 1.1351829562942042027609584577392696 0.0043026308344255468345514831430284 1.0043119137874568166092208510030161 GT 1 -51309463910240630146790341456.8357128467632852887217630956315011 0.2086404077692041480595011193599085 0.0284768630814690159080425738836878 1.0288901947832477217730873986629504 GT 1 -12121781191491134226052882730.7546751534295204202412817398499675 0.2659544438350865075716363096425178 0.0530899574483827381985236636680100 1.0545511823338343735621840337192219 GT 1 -612210439911232485879428288082229347182275.2775895352298112031695298044092936 1.1124694832239138355359766296286873 0.0470781719321753031485142837098194 1.0482224059034474589622248791129333 GT 1 -3662821603689376058536907944774.4615824356182579344099772199481372 0.6885066887788835069501168657514677 0.0675114120755627892450800242803384 1.0698983656897907988548706016036595 GT 1 -7601502050122890.0483866653637957280479192842445869 1.6818838909061551720728596261853566 0.0362128195124557320935238955023509 1.0368847758733447265284636655104054 GT 1 -23491432042871447548235861733546.9371136935674722188311612160472029 0.1686321209452107946284791061977622 0.0450145602031602355742910115842936 1.0460591849036642651127780070334379 GT 1 -7.9233868450136972001711262453042409 1.1501172242434400607959678095802028 0.0154880420111980145258551497129403 1.0156092347209556243713312138795196 GT 1 -15991630216959148835048.9418447775050617052322262916026431 2.2320700295876421355600537631254078 0.0830171354820950177785679795558899 1.0866664933583851216011168854320187 GT 1 -97602877915271239951371.5767381065585073316611829350402588 1.2055688631078550835125825361293667 0.0435447121407040865337253029261865 1.0445212367675733196898912777292211 GT 1 -1647.3676149036601446617111162057856294 0.3791872368338641530180454729956115 0.0330990759724558117124478089629031 1.0336592458332054082028256256100416 GT 1 -1613644226801.8961558064318729265116721123927255 0.0761734457974015159680170425504732 0.0072756485982758274532781860019565 1.0073022452131423159835491861967258 GT 1 -77594765433882731.0034007880064716960898268260531542 1.1126806763025151212358143103921019 0.0684221624147813442251734751976658 1.0708755308800697296003812529166520 GT 1 -481204742736167542214231053373.3451386024694722685146099199828272 0.1650295370985506167624935797865354 0.0839822375002616045049773880032089 1.0877195231207568144149396088678066 GT 1 -954829154965889567.4531321380624708125038761165468126 2.6055982808392129762298534564466433 0.0316518711823993524534883855118571 1.0321636191512548396629540179360958 GT 1 -1570028707732054223251.7104734061552614876714916135056159 1.6527573301495386128071443255418105 0.0542653862379615803712313637017172 1.0557932844228666925791187208258365 GT 1 -155973253482.5393457428720862037374481578138338 0.0904400090344780182486979180268440 0.0082951411084146322120442911631317 1.0083297372441443770112122544988075 GT 1 -714615389774669748121643118.9034159554723216251514406338338798 0.0917911335463504933817177957333786 0.0589439870988005022128900252203644 1.0607526162998548001918427829178816 GT 1 -322974673524579614072.6794040991540816965581548563827603 0.2072014681430367621070695950633527 0.0991371391679715254599928923367403 1.1044022406921694615497163179790912 GT 1 -7.2089708522780029637710766779579181 2.2519075247041486345063521600265177 0.0288891726869639023212316770646914 1.0293146799093986703277708135270742 GT 1 -361705505.9265403297446822881874787226239723 0.1017887698507231370974315320607810 0.0433411735400618159442632869775727 1.0443084542682056268078903125175621 GT 1 -43273412008702583821608176058.7221350138116935688934645650908469 0.0597314993232667265926005036830703 0.0625198362053488639833481540459937 1.0645596799804566972669081212873951 GT 1 -133579895.5242244555466009801702985284240748 0.1539049155585591528487982845101555 0.0057669763613903537971319350004781 1.0057836695801039891824931516228891 GT 1 -67718689886399907023446521033.8136877576058055777129467281706029 0.6242089704612920154640383976458846 0.0764237607239036230896203425302196 1.0795019280387667737431442474429361 GT 1 -1454957117442243371107890298612271442084.7969672803213084865135259832671944 0.1098685794123480802041993588200128 0.0722209982014661109094910735973187 1.0749617191705165672174751743792174 GT 1 -1285995877.6571086992497439617601161979003854 1.0695781745659492622938246996688716 0.0224004129805976746300094691492558 1.0226551130082236316493679568685096 GT 1 -10.3539422404514528021606222871656476 1.1791543722683608029589847575884195 0.0626762334927752826966004982965989 1.0647265212007692933960515026773178 GT 1 -147476416368207.9972388789241725401384615103317125 0.5470191867094441459115931120535347 0.0235305309446876369313586706586797 1.0238117948425494457092258940909134 GT 1 -58021525711956979202922405337.2712216696096579782719700541599016 1.1140236660345443948805175541095136 0.0032179954968124994385915519525904 1.0032231843791783020952830195191335 GT 1 -448001754825181607954825094211202.2847437092395725018159854391387587 1.1583398690968986724895693270334381 0.0154839796437655859658961283088253 1.0156051084541101438571077715287643 GT 1 -17351578632351381132341625376903324.5978910943739672694462693400661378 1.3654690581466056928284966127317504 0.0709145967370669470574170192714810 1.0735546140783101847934139168840900 GT 1 -1289520797551307919619048791290281671280466.5458408911693452465152125062452872 0.1949275766119441280344458615783006 0.0950003787331710696463813196944811 1.0998207537719902871141354900076123 GT 1 -60403936727156431778.4268773842302216887379634789321022 1.1742283072638434670690723381897529 0.0884443817922645506799185346008442 1.0926026683950272251740695225086757 GT 1 -13912484647274674922327019432.3437770682863650567472075542896371 1.2685902153037667166215005539302991 0.0581677766798556268327501818853726 1.0599281271475153233350524140402156 GT 1 -18420.9063022424555872363317396457906163 0.2456569835894254086245237556320323 0.0453136362535569275099691160457712 1.0463724073665889707059023116381197 GT 1 -341316374545414212385892.1789649262111913397261325345179006 0.0620112585905239125028833222311894 0.0361481974651682053450402679334375 1.0368177279998778666770577521869607 GT 1 -10.2719977626386236951003259755386266 0.0043746562969568208171455818628275 0.0884096259844138799706509492990859 1.0925645411051632944808406808117576 GT 1 -1.3165234823835374943656063596327816 2.4001156528621275094997220855444577 0.0006226813886976676857946119652780 1.0006228753352690423058382956127749 GT 1 -330727642750849699365910928579499.1147718374972781230925833311266488 1.4317230043326037824246061250696466 0.0601778745960299038902046352751933 1.0620646499176687726699658431346144 GT 1 -30222198007995774367188076945000187631.4360471734078527839250268824289687 1.1220006262757864391525285779827405 0.0938130418299916802293136542078689 1.0985096386315094554700118052027211 GT 1 -21100546496886226801530806.3490220810131041012246169594970336 1.6852109873245608786945990034366973 0.0073238084429495448369307981655978 1.0073507591967351603666309600104742 GT 1 -66196.4339598546820110376283607679285012 0.5331977293239366907242832092061552 0.0780363718507105383772513790026349 1.0812495050656120583299005564753381 GT 1 -552301745901575298.7335345350186520892423721736993270 0.4845010869485875034660016576326014 0.0216002315930848038469635731660983 1.0218369313151354231023701062464457 GT 1 -2395415.8836312121339968696993536008383604 1.0852024500925575294789268422636300 0.0469641654137228246994289833558670 1.0481027741604950048462732860257457 GT 1 -1775649421675282005714044849589.7406581423411507032359640999681784 0.6310211013268930409542061549803309 0.0479130995185162149834088026530652 1.0490989663383563408586208152038641 GT 1 -2828.7219342912948300315426061758908816 0.3893378467217460682194249701804075 0.0174848421947419581108754709663454 1.0176395075661166657515550216526473 GT 1 -290243589829418.5518675302087682874726095455062454 0.0381192570508835089266334216887150 0.0470124909463683352095997317359263 1.0481534823879856282285922201785563 GT 1 -46753598528610.7985568955076489252743578930177520 0.7795824348005741118100958901851276 0.0306155687017222319568070194896630 1.0310940158418964610970919220245064 GT 1 -1523098332268785.1954669433207752968627492067336656 0.4296770830005717649418528340938509 0.0923761076177148251348701929930050 1.0969252016297671781827781621048573 GT 1 -470619692058.5835784834947569761804525777381391 0.6198608311560898207590760718854532 0.0906588247687312485089205353275064 1.0950349249360265255411621040833894 GT 1 -2206773720329045043610833911567002521376615.6374144304710023442382325194238869 3.8207102899796517383072062745568295 0.0077008279223609400206581951942958 1.0077306324091208382762044919453394 GT 1 -149676680113969815185482.8863503970429167880391518397057025 1.2504872002177385579586944257961578 0.0059294881612660709387888403456781 1.0059471373779908796303806791923159 GT 1 -85555113856118618079112.9159892251036237769973751908978298 0.9384524260122577823728129057840903 0.0740244660126212832780642319562189 1.0769074658649397823340292277078743 GT 1 -39834645255874593524333.8340862110779114217742863737934969 2.5987919211181157392546325099521305 0.0958741641856047190958617036327746 1.1007867293675005359763013171913683 LT 1 -176600192473625907168906990614109030743978.1012216678114466859951211633932648 0.4536342367519152620246557990222262 0.0351652053196600976742492308526703 1.0357983895215140346425106560742821 GT 1 -64643576708081546769004892344.0495991003360295391003087229553317 2.2877961194952580055166594841028799 0.0151536673162507424187907292561859 1.0152696574081384433312877071911934 GT 1 -3821243191239249643801169741357.3923435960382608406241447370730468 0.0682595993383285984805896364694860 0.0100842108491921873077624126965986 1.0101354009352634137262144694890861 GT 1 -13894288308812391101318446.8877459682341654377568463763642054 0.7060555186448925637427731074645984 0.0956828587591297915813315155936005 1.1005751601561781765132622229875056 GT 1 -166618258171062260338.6760132885324618382999120391734454 1.1689998444145925175691886631608387 0.0506899056310920423190174860868125 1.0520197746642365909761694433213713 GT 1 -638222856263921990794170906588761607118.7461025312805747030283405075763153 0.0125741505347622555951182206185587 0.0308479599644032753515320710000461 1.0313337753380223012228679386747146 GT 1 -140428491086938346212810837663841858404043.8811737305775123188331463469966417 0.4671158821116416300557153341643607 0.0567204846223429637937120304229191 1.0583926294768302697448382856907431 GT 1 -98538444191571552456852054515294007.0629283245990122137328925208983590 0.8420017813144387954683596352381191 0.0541121406760049179170967072016057 1.0556312588977185291397608139550379 GT 1 -1330513819.7141032897991364852353505979943384 0.0040989247402708113409618203155707 0.0853631575404893737186245868175997 1.0892281859765556780083145121360753 GT 1 -28734117058413748958901724.8177921018782954583237270573304433 0.1043097759900608733653252232626188 0.0627020655397079920527552093614816 1.0647540809446056227609510655490818 GT 1 -124.6964154189099785006655904490809923 2.1432122353616200073846740212702609 0.0177248329092895268873220486263567 1.0178837989927387869891353119524598 GT 1 -585516233332690.5676013718549734910614633111954930 0.9978467493536935232628315443324973 0.0797945171128963268301044553317902 1.0831582829139211686670561837739290 GT 1 -92483084889968419962858837646250790335254.5621786054842761149075082560432159 0.2186421947558921746860280967054190 0.0463311407756561830421466619362077 1.0474387755209787913142366413614329 GT 1 -2746.5848223850531498064505124464350430 2.3971685924229186789115298658838716 0.0798946557855724495842863317176102 1.0832671109133006789315013958672178 GT 1 -155426296990538421361833866007.5428970906881396266303246141405669 0.3263031733599212633277533117889943 0.0750085759178331549647673141002594 1.0779708127752126081979936294207333 GT 1 -482767865822722128642588665277213061423970.0747798721838383646961352813108615 0.5972146718123966955336270151468801 0.0895811970462159389469578826871250 1.0938505623152405517789594552819089 GT 1 -65101.6991730885002403051749093662692635 0.0276440812358017741212101288502565 0.0554125551831384163871952865393625 1.0570070131425827086817637519545378 GT 1 -136003041293417183328449597689.4146806596741726842619689503899902 0.4728569237630280708280263010057661 0.0976705152827111764667351498194230 1.1027755432272112316895921805060392 GT 1 -9374818901035466673403588554597672404852.9045902377395198062098420437603845 1.5885163797871836681171979531540393 0.0778121283628926226997968598690087 1.0810063108497907444175851417456917 GT 1 -79968.7715516837978489586079277625122016 0.7733154907689290700976756171228712 0.0689685597442088366276874295484724 1.0714622318608939541330324971892344 GT 1 -13559527344380140730926894039.3651745850973622092647866059271839 0.7662632506318596675331592023879001 0.0542276062953719141499220099832908 1.0557533374996509127688207555954495 GT 1 -1028944.5624980584830605694015965549484754 1.1811811593168329944283409484940841 0.0767455178923768150723186573212490 1.0798503705549141718187872302364185 GT 1 -172198334533427755260960.9837321452483148217756729433469087 0.7363104809525966117699362773620159 0.0623615493150909161867876747712254 1.0643908513107270728403934953391398 GT 1 -21202643678570110143769020.1171050871625154249186275466116878 0.3888427783765765290771833737365212 0.0069407833603751316964438016106662 1.0069649826368333392398248609018738 GT 1 -166824198436346764844791.6162281976056889725229115006648605 1.3144845287930879871386608509291084 0.0453741851065806766543846139986187 1.0464358321472208942527103830877972 GT 1 -6006395253616015852294724.1215025208687896297118772659723669 0.1592713929519498120155290335667290 0.0441953690567375279583242942184095 1.0452017477532875964014314985692902 GT 1 -7106745311932422041635837907607781710025.2657766652812737570262337644346647 0.0457920873964414389470585360393027 0.0691350542759912175967004432092209 1.0716410758969851947376589257758865 GT 1 -14658181304603128037016057160086.5078340981027593107785775318136407 1.6663291257460725620944221166414180 0.0761206774031913113610806050266031 1.0791738191200070702949068111745810 GT 1 -55692687333237.6465640866702892813092133460091562 2.2228395812158716760206173839461563 0.0138972809481848085376043756797080 1.0139947522682665069792060184076245 GT 1 -42143065007.3781251263430910737270782601916359 0.1380777775909160692742432134313114 0.0375083695881063816617777328088423 1.0382299085339600546781189105386060 GT 1 -10838679303440694368570968897255.4526751467963998872231022349539951 0.8833608409073545461355395451078500 0.0265113626110539657472303907855481 1.0268691261548505310271063217317913 GT 1 -23107697135242464077.5422600125748076660743888989944235 2.0055893912605057731424310509169690 0.0852400632623703326855362703479422 1.0890936123512989053284850367572927 GT 1 -120188254290602842056369902705533433426.0881184080502650999432482773636819 0.7100052453701181718333433025112496 0.0628354984980070734005278892191464 1.0648964502510953108622147023555520 GT 1 -196791019.5204151564921900043784033085470016 0.1960224613629941314773219147973721 0.0260353587384548830804971182324035 1.0263802786047740212830344772512298 GT 1 -133.2642788540757232072698107644984608 0.1956853756535464014987396468394667 0.0346027102058744057214884693621124 1.0352155630995177259352647564321978 GT 1 -6012895299000545479088.6418264513779517579541507787663353 5.8673597234930356831960450145001224 0.0097703511256681543634640407457446 1.0098183941941167086389005704408751 LT 1 -2351333323177.0525703589363278601626979587378700 1.3155036561290641695306362259752944 0.0993669914283846628200642755727863 1.1046574200301453967398438740481090 GT 1 -1060823200870628640918802267299427.1421245229812645672931949245522213 0.3712100993897709815071056731281284 0.0822023477202806125682332724828730 1.0857783350114707530455130592736778 GT 1 -88705746852803468740791603320203260.1795301184271251425509283597831895 1.0188597376299446330752060509748750 0.0940583096356238651121496286035493 1.0987803344315325324875376167457969 GT 1 -84156566886809599505228579.3401404555675986906002332665841048 0.0839489808491035024238745444280837 0.0863282000887921475088425577395621 1.0902838530729758616195486715454531 GT 1 -4608443.3208038715617197212963732558669987 0.0465938827648890137188709284270658 0.0442344938051996787032536063216978 1.0452426824254793165013997542911110 GT 1 -6286933.1971364683006143881602194117295850 2.2414000755242867021010815074656867 0.0091748326890176591698713870523170 1.0092171806893484680257585589220942 GT 1 -4364059802340848016590104978088.5349818743575587843978976847541109 0.1511268459820794583442181512784227 0.0619840557901183319032020805214500 1.0639883320288200175257710482274812 GT 1 -1503630592.1878445491127641326720629428254574 1.7861249636586237373122318695073054 0.0039443476416428267374861151918130 1.0039521470967322459198292106310092 GT 1 -173371744208740512.7445878837239121794637723472489713 0.2035103026106789971131155932146118 0.0757705247065812483322236109982037 1.0787948882895282379227652663821057 GT 1 -289350173449926422046.2181254232589295411570377642275627 1.8301116504412246194756173582224452 0.0628002627535085366377679033172053 1.0648588527086601068953898483781729 GT 1 -829662433016494323180522538834222.4284586318640848253073706618934038 0.3901611168758145073572653035028633 0.0798490885181301186440183193436526 1.0832175881717687910488499732717743 GT 1 -291701860849570501.3429610504873749318685626416529781 1.8440542911324472352875754695963857 0.0634080056857360523135327475044850 1.0655075298730447663996034628083187 GT 1 -18825.4566504371786671031504043612053756 0.5770132285509979537005905614045619 0.0804499770044506790019220331112980 1.0838708340297531486537134854359295 GT 1 -301244222742338734330865.3175176738927932498267774130766316 0.6104896062172836804006385682444561 0.0112495887132303857830843782803459 1.0113133439339684177921858731192550 GT 1 -154183.5742533374278871718511677905753422 0.5997420254963818571440050025939530 0.0346022929873843946300347096053111 1.0352151309267695044848639658904899 GT 1 -6184598059249849077600938523951861143722.4449642148548413621283678183586531 1.5489622193686508958301573755475471 0.0513842060608726113934483723582261 1.0527514159417271985350080544500673 GT 1 -4456507398017624979007633905934603360.1941828419779147246111002040270898 0.7066140699712170088660137630404832 0.0975237282309216975498270865670383 1.1026128807893443434339795620256746 GT 1 -70615507778.7534168785124393068644744355613836 2.4013443048718089935575612005279334 0.0008969568535854063509455344833920 1.0008973593600893139177564448858502 GT 1 -365.9399185321712742534996125908978517 1.3206718921705778988170216082377110 0.0664772364838608659263847551374643 1.0687899311705814625480490023729301 GT 1 -548679334837462393.3580737420355180071978283636896890 1.6031664331623109033164289665451098 0.0779383665173116344609237697011806 1.0811432100646374561511690675297940 GT 1 -8815630237764729010480476013423.7966572879453080848070968028629356 0.1198672190306021276739552812018257 0.0354268435613802863058244251856373 1.0360696004317543420998696146345687 GT 1 -1181472125246482078189070715198.8586124521503429678654443763427351 1.5930833433185363386447983857881882 0.0793375248245700536130139809115016 1.0826617863610722991808461905602567 GT 1 -2642725.0083276942220525973884387680515316 0.4424170608098930122164309892463655 0.0112039058944735823631273140997004 1.0112671424225092804812283156320445 GT 1 -10228683885954.8290029309289044886320969479422134 1.1834441638242999965334306754183722 0.0669846995958282566208359908353153 1.0693336791222355349345017525109631 GT 1 -61949689421510001718730272932767081.2756565804252564991648328356336555 1.3498087821153319441677136488062381 0.0308343690264033019197633425607026 1.0313197519008907396242001118357562 GT 1 -3197748281764459041510503058.9722275678312933112006146242353201 2.1349550788056706002306089524415295 0.0680543204747068877284323828517318 1.0704807497662555861678551006235804 GT 1 -20496473836904106319276408.9069353144848099124779369383958532 2.3528964805735003563656229379477850 0.0276159965143396246457991558248967 1.0280044872249865203367116112652528 GT 1 -4253434242151029945810.6528016430307558867605618317037124 1.1414717701341774455760329040879066 0.0495176235019396178351849831027724 1.0507856585216415443289406240991301 GT 1 -868348.8794111163841235390174005946646346 1.0690198722169456424807254590884710 0.0887162674974779573443659216216534 1.0929009785089971730616365433010872 GT 1 -47812365865932684119382.1136635142482450497530521367222878 2.1697812556749299998672956943080331 0.0576246685181091989956575263852102 1.0593516426987576459692121729502908 GT 1 -39.8585829020699636921677072493622105 0.4554163267278686980784988939433471 0.0932090820956819742632860498033698 1.0978433759433411383083286769597904 GT 1 -473977139321442736129698547180952383312.3965747934170633591601177400549044 0.8754022587759830179442630611934895 0.0088627846748209209164967099635750 1.0089022927585693763364350400214079 GT 1 -671216.7455340540477973446055672539312228 1.0279548377402666023806668721316507 0.0843573602687222217091694916423479 1.0881291217267519730824504044749752 GT 1 -4406821392515354362889734766.7096174409134742007900895212300878 2.0485099736669850614269420032650375 0.0405390163636537765596039945418684 1.0413836275853890725226414171142549 GT 1 -17141135884567875.7520814400829325187028710073714004 1.0452237457013311209423864889916793 0.0856226743560436925023506533450168 1.0895119637862869022687416908640717 GT 1 -1954062255808584303225718212904676955.5932677941563785106330476187970594 2.2424774328138072554541563696084089 0.0690578548339277280278615422637829 1.0715581463147685685373345438101641 GT 1 -13047871105074274847008427.7926134741020901992113607992875173 0.0012003718989641787868156920255352 0.0009939579119750016904290343161829 1.0009944522157122757965585678326860 GT 1 -146965932473057514.6195833628719628994936235981118644 2.1326024769435216584835941970110729 0.0325285013498745481461170171618837 1.0330693132716782163106619714289342 GT 1 -60248945878405.1999746761414119367382305130412646 0.9124524647897807403487852062086765 0.0196107749222529100681049512793769 1.0198056177213489981849959081056443 GT 1 -200559652332994971370593961197367230038.3011041419573975980289881614433723 0.3876605090062520661456112678079118 0.0829533636057883151349183619592761 1.0865969504461247809288987835783945 GT 1 -444840070556461843952.9296068695523281142052873452062317 0.2257997525945508066076515060833679 0.0705630805110633881043999566615549 1.0731763391166463697100766854924191 GT 1 -92039427889159072.5193812898641017444785046033721794 0.4287815508581855799465845514070476 0.0267786323118757646982177426942792 1.0271437122018776090182620178923785 GT 1 -2390771550301968.0121665257075495093237152784307011 1.8648833360979678669060471643999108 0.0356505354985410684477310539645919 1.0363015350212865349286737219452160 GT 1 -103284679776253783160.1116040426128811303036932486678259 0.6377205539545481690984146924595836 0.0844267067015596415711906402876228 1.0882048598542111814490471369480421 GT 1 -10227863273.3258838803190010413365729741324434 1.2038767787206702187675087182449519 0.0548270917140887590569006149193560 1.0563873964945568846622406576797752 GT 1 -57322162461402350409204907066.3561257589471430815177181532900219 0.0767896428927958525103499853617794 0.0667379962385872989703445099133476 1.0690692989487990456058412200025745 GT 1 -94059723704.9925907418061209371437832553772202 1.7106454492352224070841376076002915 0.0482436338364176892036913471365857 1.0494461948387411617868361025760206 GT 1 -137401536534715826241305619343326270.2188466629504619391214768793081393 0.0377885724644698190650985940701710 0.0925755433196001882956299979209379 1.0971449596354324007303031468424411 GT 1 -462409633.0892722802287829012508124958716259 1.1345223764075610270755740397534998 0.0362035245425007327914526382714559 1.0368751317057088329084043350419551 GT 1 -566761569630430.3231592285560946664992887112639724 0.0116805071347462666204556056474260 0.0642123876359094016650752580212243 1.0663667381199085946509667754190017 GT 1 -20328736904224733604509620.4706512406320110177496135046346959 0.3091855361070504456019153240679314 0.0485031684858305109918777791265115 1.0497189222418404231233291366506320 GT 1 -143150025855757036914417125828.1707254000990334346791906868372175 0.0615539864103351456441312288490993 0.0602806540747360308863582643250394 1.0621740164630484667141372576528265 GT 1 -1735643215309249.6535038374867415704344233805242279 0.9481610853124261678893567411667029 0.0533926933586086713288515276319438 1.0548709427130402298496292129646931 GT 1 -490343464697623187886770079083.6987902044029520305816870744265522 0.1815238347460157417260433824705023 0.0295115972552331854780928714824602 1.0299558262180242171546188102472892 GT 1 -3.5618678316271401760488066801427432 0.1897136660820474559087251170241296 0.0070841829032272591588343218314921 1.0071093948682716689313345389606507 GT 1 -6983453330446200033032737026920305.4244543847252114052680419727563881 0.3478962080214368352467845002340215 0.0772372749993767038600585104251665 1.0803831468657074462389371653101111 GT 1 -78192421097591959660988.2052595424300922374169301715442559 0.0162742680131731687084066776502482 0.0954656181225226338766520241932153 1.1003349628432697972943743120115706 GT 1 -11.4549984178228799489600203474748194 1.0764243744161652254525467178177724 0.0873643413158884896653817253699974 1.0914185375242602622739079349502094 GT 1 -19753718.0177123395181497611646854662291647 0.1106262359042695664294797373492317 0.0412361999047663585270328596851161 1.0421105325630790314310402381226298 GT 1 -226330781.6103461054784110210536736991001343 0.4971119298139961382753293478759479 0.0086119893296254960547294371849572 1.0086492868010715990862496164368455 GT 1 -102758055723.0135479718907089688806234468184178 2.8720789299641526157575795896561249 0.0764246858611057785240057637564252 1.0795029297293973504597088741823733 LT 1 -25476168782460136.8356193199048370620557851406522912 0.3609049874948042028374782106650111 0.0983130451847107988587688715357856 1.1034878759034426783091825615312171 GT 1 -3705184443086004230896540965699054930854.8494179557827200403796244064227534 3.4016945485242356616051346491762757 0.0632037513358379157328489997196018 1.0652894711215040264753492135545749 LT 1 -5946102972863956850253932407346674350.8834310816397911155323475565683822 0.4054363740412466518238775397574104 0.0789438194764189223799129155505471 1.0822342451045073870193878990251827 GT 1 -2619861172873751659658197116917107625595048.8410286135299137271186911982966985 0.3142071628388795595195652011447647 0.0018399421393064535087846445847874 1.0018416369120193329913646547775068 GT 1 -13445003120177828251.6284235376869246932060872113079766 0.3041233140275877480317002848183023 0.0550842683987559468449542794722735 1.0566595283732709538579814346471236 GT 1 -15049517144287432517096343257444031.9104200478590077469806980648501464 1.0511976505170404120918037531710578 0.0390509444807325926858474930046414 1.0398338833636794868462296581911410 GT 1 -75918799570312642039937533263.9888058741496093184854190824395186 4.6499113116203946469735358800124200 0.0457798095296779629916233824887785 1.0468608265449489854250166236224443 LT 1 -932382693009072131829.5278059154217067338724389730677483 0.2511823235820441418143854885524582 0.0134120275141281644353441019578120 1.0135027811286188826750443051087506 GT 1 -10724937377.4799638057076020856692866956060965 0.3845282402959096989245961373227815 0.0389387436517105240353666823875759 1.0397171297453906221632149613798523 GT 1 -388.3286299844242392675281629548053950 0.1839539855006374626615098411097880 0.0052649005003896090517902876166483 1.0052788089281667091967781644190244 GT 1 -9802891717994124552.8936382899437866050821209488088910 1.8406309693668355806532301097238030 0.0481259621573078556988252312617365 1.0493225661353835527740277841769625 GT 1 -101919903418467460870223895726638973731266.5305025009282278371812134885597957 0.5091739201331448413297180933657115 0.0995769100394096835894670711254354 1.1048905261639817068622817924242737 GT 1 -37151188591518633291125.0675613663677336729799364756067990 2.1070421517326332015442049239174138 0.0405775177432512254067795015586543 1.0414237565252511876363530613424340 GT 1 -4365613044392600995638.9221928245985532124672440112194285 0.5974448918967002084302264660959065 0.0522499088687526869880614091109161 1.0536644284303323132657490832049203 GT 1 -10921002787311111739629.2211323545706888068887047003435127 1.3852660227479274781527526218485958 0.0690783618218637001809154950735071 1.0715801747661732868147781755220790 GT 1 -48803625069545995101955083425503.5956148314393660650429993294663524 1.1346561617754621437272508251954454 0.0507675986317172887456932627480031 1.0521016195540329062482596855847691 GT 1 -33503899617885443120508379438190709256.2953696640690142469941405154113321 0.1257028049291883215304804742562025 0.0074278988866042720519379449049154 1.0074556231013000607648740648719294 GT 1 -7198155368453663181064516896163711802.4495234378603985886655402351059502 0.7106111688864115565022196271176495 0.0609239035224838810248241573591670 1.0628587631452726858490354442476654 GT 1 -27885927554889814.5269975037987268696943117872468640 0.2760625922906444526935935072975129 0.0516843295550167215007658427145097 1.0530678464530907604677635417592285 GT 1 -7618939809.7556387281920997846729676763323415 0.1360941925010942293177114954689571 0.0269740055933533149679313458092744 1.0273444814215964539159127841427227 GT 1 -769122296936878844304086802987.8234077075304021486037159283985093 0.2966396846798870013757081405827915 0.0149346409220943660619401496276809 1.0150472856175907542767683987299512 GT 1 -18858.4546524071761635769049552760557786 0.5714900928779158453347380972939070 0.0610175710402110519725817143296001 1.0629585124518423795710424746141848 GT 1 -1854798430387667633970595830143.8121451298731195714265578526984373 0.2703912926663627972154092764314763 0.0503997769206778473684623431182858 1.0517142007674538867408633689642466 GT 1 -31593938813564436172477965.2435267427746793219650484704537788 2.4627742609594454110435999554856780 0.0959526466377017020880982095181412 1.1059612732505543570212095935866927 LT 2 -50683241428424017417661683347481.8422186319739274255315151085662141 0.4745190625614598653974516693327193 0.0445938534153050805452340963916209 1.0456187445272982760013325000384967 GT 1 -6932946525312304860563841662073307679525099.2168864767693028859606150970838694 0.2471782363965751453112378512111645 0.0064163541121757297879153902932450 1.0064370273910538468745741156984327 GT 1 -1538205457921038544102279937390002713010098.3833855186351284368122254230496998 0.5794683394102512747882661324206222 0.0909526280345658455974645487267415 1.0953580717891500878239615394616489 GT 1 -10831.2407061316906252931298182444089826 0.1595580354762885740938572712543728 0.0570801778358497258866664628113999 1.0587740241796146230509945319217694 GT 1 -636005187128358920010.5251952875280012261970907517054497 0.2377777645169552368723826068155270 0.0183295070372597976645523822321149 1.0184995738172422711768982675854514 GT 1 -1809551072026.4325625495228306969464979481178831 0.7609405782137139167784594720770426 0.0523258678744160317628234566968704 1.0537445783036662003562307069219132 GT 1 -65135.3373679789967213879349745626109872 0.3568580329283100438820801397027750 0.0857385940708455477496994264656266 1.0896387463081220450412319280354120 GT 1 -1788629704.8450926639684274597959534408863323 0.8773102989138242638291206652684320 0.0750121443751902048843440456725613 1.0779746706101583266853943816115703 GT 1 -55.0447291813412656576983660434696514 2.0595150647890555502296155991397399 0.0093850103333113592652130218976686 1.0094293270358750879832408045717937 GT 1 -123260619286160199782424070.0119772061699994057420352878655257 0.2950046324710477838414626748813171 0.0300142621759090760365431575179487 1.0304739108669358086745959787355590 GT 1 -2093933.1489066784271395857945825988579557 4.7305561855706868508217568493982417 0.0310366214998401220130659570525489 1.0315284608910377918505865038532197 LT 1 -20779281588329792052865625615881905625.7725176706643242494569597121939327 0.6613642225309440774712080454102078 0.0857887868545845090375523168418460 1.0896936476320226155179576637503637 GT 1 -10432239510622948022136419.3367763732066987658545835094461744 0.8738924320270047821482000993270685 0.0708130907024384359308780723320499 1.0734453663280817978692306902393196 GT 1 -81581947804260298236737553167688780.9219511294960548640267046530338939 0.3647239225372400985255893086215145 0.0252608301194805631037502277343284 1.0255853618448942234938942719149862 GT 1 -1048099336.9599189932887382669028686968192426 0.4824446906277425954174110002773537 0.0663870068081578970766594221713114 1.0686932808060334719480052346657233 GT 1 -719244533537569448.9699300256909404033994696913536497 0.0885847883648989329579840421605293 0.0906669155822978597594943212193245 1.0950438224211300165474499230522437 GT 1 -1146406051107530319869.2551622554459569528038281865842331 0.3827451506783206541979797998841522 0.0553833685889459280510119888322466 1.0569761148457157170802369750394522 GT 1 -196192266310048.4873401573470916071489823806958960 0.2513668441401745739687367005586202 0.0745112364735292823293154414247235 1.0774332880185478097452155065196114 GT 1 -2210296761.1260100558978642327109433960443091 2.9760403691987089428458557156390954 0.0811934284597532453756231474981245 1.0846796558851455120549205107407958 LT 1 -3537617646536767558.4848953099889466896629791967201828 0.0075054457715049465567957203961424 0.0558382523418365201558079947914007 1.0574577846559233035164273925909241 GT 1 -3.1362741465146313867686137541824887 0.7071509266011129882664062885769735 0.0957478788931952479106607427039130 1.1006470624442985299902305017390924 GT 1 -58.5872234464927097627538722722683826 0.1761224691633543582485680420317729 0.0759857881980392318588666279029679 1.0790278267206824519626655444130614 GT 1 -6604924200506661900941.9595081754284197940943457483950422 0.7607993766409013128589210498140813 0.0586004694243868666748193209250241 1.0603876486602023289170684782745945 GT 1 -875116974138493191.5243705480171029956227248921806589 1.8895094794958930474712328815066982 0.0490205293175949699750572161741758 1.0502628037544988161706375594451013 GT 1 -64885.3698135053892318035810686694947149 0.8119467625952664726190879849740362 0.0129929454615772795267670485955033 1.0130780921188562372894210270613494 GT 1 -1407429.2933575172528765047538673748671032 0.1593154719413299062808482323962555 0.0709770230196201150723511993006155 1.0736218074489880363518325196073989 GT 1 -314518929577558911018739578294.8039355937233962557204695707162962 0.5626100133244942158573847911560668 0.0730551674390785370196415620606614 1.0758612269876955798801699211253443 GT 1 -22568428668018.6182682040498842486737112425841198 0.1060429242815935268800399304729005 0.0095101077519717972248208821319301 1.0095556175921890986797461037992493 GT 1 -6230212979086476355812725411936071704032.7170537841259838702636585753155355 0.3414905571222320107853263615014769 0.0639671870492450674626732562203273 1.0661047465476928682234548034766029 GT 1 -192227133033468886748675498427996773282098.7285482399582459929127272908068710 3.2920780988946589540921690574803719 0.0683462302223499131429428035785495 1.0707940249715467004998662169431692 LT 1 -22022945367731037.6755566950071527800023612118063635 1.1756845066521111472826147762169795 0.0641488904620587408101887596140870 1.0662988861641524178178361765852329 GT 1 -63933.8292994866794480969467504689627430 2.6904892997178093993163044460818384 0.0403772636700636975969378376986710 1.0412150547479560479018547502905754 GT 1 -130089505123576078974121445538353.7847766925133176835113180036989834 3.4253339076351301002113349639772782 0.0743171901259588984521261176212060 1.0772236409484767675655490497685519 LT 1 -6438944640701860063025964415764929402881365.0150606044018728912184970230565375 1.3372178952693749921219523488320864 0.0127422776521639524827081199908704 1.0128241567666228258206526370127667 GT 1 -293458619957166555654684.0030208798980669429859099144731096 1.0725890221213379745629678675916051 0.0878783969645934986920466249603204 1.0919819611347182910278863826270155 GT 1 -610868983643653609150022432893.2097066762934304466196325095021486 1.3850523512235994158375773159848890 0.0005398072344280370217064020794328 1.0005399529828062535406767244398291 GT 1 -111946978676444166158339103009306234093840.2283701661732871565900610015575323 0.7543263992635552820104116459668966 0.0035813123295534605796392965691624 1.0035877405808606587614650233540121 GT 1 -84286448080794479045386424292781.4934422665408468704893815381091436 0.3069183498062472142769921834508559 0.0483358440957970581943594454827067 1.0495430838429128004542535746859475 GT 1 -110032231672793199443610836543255.6786212655420998952282509110572671 0.5415579872688690432872651674701714 0.0027915248631471227460973364253708 1.0027954284349822615583950127127454 GT 1 -33934.7091425609826686500108176950238408 0.2137305452574086185648533216801362 0.0117530792173915109473142139363624 1.0118226926385712801293431104452033 GT 1 -832584000582865807536201912969841735920.8357830274501571773634081964186370 0.9029086298666577924778492920087737 0.0137284220571950147266702958395951 1.0138235282854153454287937331691742 GT 1 -3311024508453652989838641447532.6834568144008559906614686953997879 0.7449090671927291713639305811642492 0.0360690357510181526422607981151725 1.0367356007855894895691070659923986 GT 1 -196.2457890853728416769003870806731439 0.5625517213030554957228226867731893 0.0995320225996009177102051215862175 1.1048406759085924798219635775937380 GT 1 -15997690935.2852844607843453760975555984051397 2.6801195087713481518386294283197521 0.0732783812448517031483590836130830 1.0789978238222710438492126140151758 LT 2 -2036187990.2310453987433742657991372702973167 0.7207937187361339800859990799496550 0.0321685523197467706514879568490611 1.0326973311642145480089054196716653 GT 1 -22221786.8540463060853111403153306796948640 2.6336327900702680055295807512399591 0.0866552061310076609663833483498469 1.0906418203151132895485317094034282 LT 1 -1.9202045552596493876782493059418478 3.2336937726214451796351121701488765 0.0197858801325598395309591809233481 1.0199842415222559656355202192300913 GT 1 -327876828513874753147889075.4772829092284988361192672458627091 0.0191384543285264968014642203847798 0.0367498438941243846201946265329758 1.0374421334142422968982937057699872 GT 1 -2828674242999054563139531772484902389863.9904520194163554780053940734494519 0.3601868031471093306493801681431531 0.0932235640762918998769031399491550 1.0978593466549661190754570894338244 GT 1 -64996633041021950418356077235864204724696.7753701523800607461483937639712336 0.2890323751852191738369095701610036 0.0472968616656306519212685394984675 1.0484519261272806645145935535458141 GT 1 -4068235016296179303613.6555856175038212445190052072015799 0.4238354026400200444609975446539743 0.0744659630722553701906592692584548 1.0773843708455428845456398831937842 GT 1 -24421365954354202294724.3565089809832768519418386852193533 0.5006094300230784072259843394658688 0.0309768801077982370016821539755723 1.0314668078381291503339941606795817 GT 1 -24157587248404491631648309577795982.7358936786213497344402809253894087 0.0853748821873294797696053095783751 0.0619423240060404120631269768072235 1.0639438435997569100935938698737415 GT 1 -14727187.5874597633381382187822889519316250 1.8780781169880513504904501889789763 0.0553350284339074019589790781291649 1.0569249417913940106668977348734511 GT 1 -46995394406129599343307.1303162029478439240969178155363492 0.5110957419739872539505375426414426 0.0499657851819449372562405858039116 1.0512572794381439119432790388947433 GT 1 -32764487254275624.2685651387770176701390015604390385 0.2265438754918241873080190828008412 0.0105314419188407977882804020569551 1.0105872900066148705933870798265519 GT 1 -289946348113371853036310935422334118343831.2146330723046390778791187745406512 3.2842194290326285905537597652326147 0.0175206348016406646659851909371313 1.0176759378019098463449395589736107 GT 1 -6059.3218053818357988073131817651120986 0.8095568341604449122226059121830674 0.0230835684537841820678500155399135 1.0233541663743945367157211515594129 GT 1 -65245771389455167947272593519594.8079765766088971658062191499249881 0.0257072082738987916689078620209557 0.0546962829893386784347685427572316 1.0562490094621985033693557932092950 GT 1 -59387579.0344940877227955703716401152637938 0.0669132346255745605721129888549253 0.0056886011940149182118861288272058 1.0057048429101725537029555722981912 GT 1 -3793624533727901110233245913.8652080797312678189837185349776184 0.1276875331406227489874085606285870 0.0916575840858074872953364628384212 1.0961338614313055894651106928006640 GT 1 -254910579077116717.0998252283078040503485602468506547 0.7571780972743827350036607444738563 0.0131321832839403554213434508578637 1.0132191728171535216154809171855766 GT 1 -19413274931805520690.0079508348724194839246426056775927 2.1916826387087942321955985247029399 0.0824182300363691812025222171908586 1.0860135804484281800188786168109866 GT 1 -1.9522552195209268963599077965908259 1.1570678189385736946787136297246532 0.0802495697288950023808682048092409 1.0836529171842559147887813200125667 GT 1 -932586503640622972970444538465565774.3018834934565439758851785923960546 0.6481179305717713100397393267251171 0.0553831040698432614768068052282416 1.0569758348177585181165001803782754 GT 1 -15928765908280819039386.4565637868584592846312856132478640 0.2196696025663958655069641493756677 0.0919899159511872730952940887461643 1.0964997946618817268265922441876925 GT 1 -122574469951.5523461991588336566928817068573741 0.1936523195270020011406514999310764 0.0976321214102233079274098401495029 1.1027329944062573349846508556154590 GT 1 -7966.9485477590357445952167022581032542 0.7682606900128302207350380313439389 0.0616648042721490628611326004568962 1.0636480422885312529128711009363199 GT 1 -446249146936174863523.4514275751889534667810985525928473 0.9303775584769837344458216882134779 0.0024993589920696036751312895417611 1.0025024876038584442169851180139235 GT 1 -236085872312414.2039025785713452426768170649114221 1.3127521864691049728044627943197009 0.0366266227975621118290431314245235 1.0373142193774831850681467277362446 GT 1 -106764734035252416208820701953816108800.9049926865657196279305859384006473 0.6164667501537082715834068538957040 0.0012834995703585119669535692879766 1.0012843239614112756988460896194622 GT 1 -483741277177854380135429987947437394.1026860491496823698169146590190679 0.2256298529342599578572910296947525 0.0083956850105395740451090909816461 1.0084311272881528199777563682669438 GT 1 -294259094392270520211662926357896789064574.4613400073410487575197053804346735 0.5924460945948966143981706307225940 0.0224840935749360457523169636172808 1.0227407146974026617430351964228937 GT 1 -37442.4408065944401476733170828541931128 0.0410171612186334218683636306810641 0.0543620361388532479495524947137139 1.0558954852289048656574230935644894 GT 1 -138364121584.7577532823554772516645563478041586 0.2908383841122761935402470968008348 0.0019824000762365456648856158568175 1.0019843676320195277278906618491233 GT 1 -2027157475834202060496.5595424096462842899934584666498202 0.1515698101684827255875858124877385 0.0484914685848974745080130224466616 1.0497066260064633725920589338724948 GT 1 -3.9915033058907818082397825826179465 0.2863644529042783226958395447972682 0.0946773662126169364755323926416797 1.0994638973912213993723051222836770 GT 1 -177247203546328015532904310502008332116.5009609609794394746529405785478552 0.0197867820388188610391206297520549 0.0801114082984858267376114861139965 1.0835027122483758440382209765395895 GT 1 -135.4129685080426368264344027002717361 0.3242855581826473451082883131543252 0.0929936191039474850044718102781956 1.0976057937252063068230150570828930 GT 1 -234218979941139490401394533829.4835002973011464949902461764454771 0.8766840245025243046684012466799293 0.0433859577366997465792414875959069 1.0443552684967228533353724745654299 GT 1 -117898093652.2411543928116901408174650598045970 1.3233345238492974994418951602458721 0.0876073890653644796103918693447694 1.0916848870980820671788229888008788 GT 1 -8692101468616161996832227630.1001379400345628830897475609499170 1.6601552649584466564337893433971347 0.0259323714482373288338162495609796 1.0262745439186403336911836933936051 GT 1 -11048286639663385941538793024.4654324159612114054291284952722969 1.0892719786828799320672158267600141 0.0210776616805585019177849469733908 1.0213029671575277947200907942644243 GT 1 -5085562478896350.3802448497980686259968943023057546 0.0041492964012387625872172620368065 0.0687053667111634543301586242852071 1.0711795820730437893403612280081850 GT 1 -21806096562415360632614577.2894356214216431615420687425592843 2.4688687897295196992477995338157514 0.0568222360594757839262640056296880 1.0585005051635442257696217074434307 GT 1 -59929213801600783.0810577586458601664833116926630978 0.0515420091048642726121666817997320 0.0827675882698595148240224497855253 1.0863943909317979201083417581422633 GT 1 -164190104686476.6826918674786083631198646224958465 2.7155815473589157188093030785425461 0.0079286542849347938507798956488530 1.0079602531997263143517180007113890 GT 1 -3377794688259507718959246209567130808549832.9848553176892036714281984135879397 0.3984770945231125510509147235260983 0.0994146389389801289112170268435020 1.1047103258980955419208823101810272 GT 1 -1728035879804329.5737847971841904020733473421533354 0.0706290914262696766834715793873187 0.0495243797216599417507956106137269 1.0507927667478430799763304350257425 GT 1 -124410403351437107697.3213918040365469975508463859281928 3.4079780550558540292147051647099595 0.0911971714647329663242672191919207 1.0956271186353367489711855534895087 LT 1 -192168.2686264481750442087727134080641067 1.0337817516817136333870259954416046 0.0132626730427488481667195229368206 1.0133514077370076205947900654812858 GT 1 -134641116067407839661541541233793510799.5545785404245831320520494773430879 2.0565497535214163641827077677764603 0.0259520861267219199662992398001391 1.0262947836611565532758642460252815 GT 1 -472.7627407362667839210256084908491753 0.3092001096494495797142492857783098 0.0666135304605969582506915802585273 1.0689359414581358924783210283106301 GT 1 -28073.2107495938498670270633095709653793 0.2345651989320655253691918830998650 0.0032573560988770269429581798383626 1.0032626728320561211543890213489088 GT 1 -18183269833752140486174971168.9377288549670118976251727563809018 0.1801590832200173458725198667062688 0.0306744919354860973173125876586961 1.0311548018652057295221441094455603 GT 1 -180900207232162662033678627614707982249.3998405842686408744784539693799375 0.0165699889825004159294249617904560 0.0728187094827132889797909881824253 1.0756061656359310027789693558770709 GT 1 -9543147796613238015018827428243561.0481240757764239044738598843046757 0.0947475091397034771395325454740712 0.0935927079347927363667545031559113 1.0982665242155218940389524614795084 GT 1 -10112511455690.8380209124044894045034961371209541 1.3678809692379001443313300659517336 0.0796097903422780106649965497969630 1.0829575579290841790199765562172375 GT 1 -275500.9581985104169010766398713343725086 0.7787474307190481943638954514899117 0.0937395979169576383164876312148137 1.0984285947185276331292209782895267 GT 1 -19984.1842722925621328985794716640747987 1.5460558331252195854325847418321438 0.0025334988126557633177400368925201 1.0025367135516120745096064263436316 GT 1 -2618120853318981.7155046698870541417389958650388942 0.6569916511122147321159840842550422 0.0730983979458169249932535007563360 1.0759078657016030774326773934482528 GT 1 -205137563259.5702447047113334270998236839203842 1.7519085452363296032824493773399430 0.0916335978673601376765471465739984 1.0961074551980000988292603811793773 GT 1 -150739754349144277.1234870451709114540535026544633546 0.3392779735405004053705677678591927 0.0362166158256469658397876878425444 1.0368887148349172223623374007225307 GT 1 -14759662844.0472840633411473871235492052066122 0.5609597453964064684055303399477894 0.0588265599491671958750996448730024 1.0606278417676090254158431684348637 GT 1 -183831428139560022155074933172.7040455436495401553768481234723741 1.9969383794293309596666110072972929 0.0504749361042025416500844794886972 1.0517933521368547386150414325785264 GT 1 -630036.3024525683955893080249557532568938 2.4380842842235839059018353518951476 0.0877274741758411495447232617175775 1.0961606536079406833439239550204292 LT 3 -401572927501622460218950464919225085082372.9966940287803258206313125280519171 0.1663693600922419442822589930154244 0.0529685120997254030147066492983650 1.0544229361901481846828825410729765 GT 1 -809006271318655019879857.4246258281830466443444800257189123 0.5650959482816187398218844500755550 0.0419089263586918954979658996605019 1.0428124390983752445124844419116348 GT 1 -1691123349661967.5936897759780243099683616790970561 0.4859078540688174635360877128450777 0.0366260701348348319877574238142903 1.0373136457031614381475746638092223 GT 1 -85613485297028429618985524308459572.7380748465081957799656320749648110 0.6090709377304198499436913364284619 0.0732903456722391785737789191903226 1.0761149724791946423211083687965386 GT 1 -15750533529882101205902325123657099714.9397520703803651286039929689089801 0.8347540797806128192322769074888397 0.0557426041356964899106787783456456 1.0573564848925207677706687111316797 GT 1 -3539747988036366542826775398423.8771228869941994226206300856363068 0.2631685500191979264546106495726358 0.0209492043518910176273504681743620 1.0211717525595098014189063971705407 GT 1 -33333771798715751212718.3616068541121362916514964605868323 0.6415285888118639669241161420393073 0.0939664378536912255056583856787331 1.0986789293136821999267865252571505 GT 1 -131404375282181227576878466330754063390.7009029113604608615383318240987894 0.7482153004133660549342277822433279 0.0997357074615953890303202454149510 1.1050669003910027019166913047844802 GT 1 -55898.0657838536910082089862446306181785 0.1545518047915778209020857310584638 0.0441904001946840335009859872114115 1.0451965491499568816403835892276395 GT 1 -18967084427058.0467829869823972059415907289266596 0.1673398589842689338922665418561280 0.0984375679696247730934192783921435 1.1036259852365391134528638124884310 GT 1 -492097335863550448523169605124637727366.3851003961989666069834621291944578 2.7429775278572481555464015700062178 0.0916250952396405326443533592952213 1.0960980948915135266144108472142157 LT 1 -8497.7606454507989090782333987091577210 0.5016750486771743305774102739334010 0.0453723521404511221773228582971900 1.0464339120604798577102609059008141 GT 1 -5343734713378214663636638721974.3630311483601761515968260795495587 2.1102972272926562700633939903647903 0.0252061237803373944354000027336118 1.0255292393397979783663641372139614 GT 1 -50290677906200520156074234249719640713.5926769687651405205119708122935229 0.2057150539748544827113243059270451 0.0809136842003570416172209049114495 1.0843752374247623978880497799818662 GT 1 -3577449558652160020532530441009.1838733685743228441377278712860318 0.1717698201711224183000028717110589 0.0488386861512794059407785775796245 1.0500716053233959830695326096968491 GT 1 -27802381170763460.2429214594403248589395547928431826 0.5596129346788339631461038553707998 0.0583045572777182649504884777247623 1.0600733658934802026192143654219836 GT 1 -4263380255946404.1226052263522679152043817904387253 2.3174711984482385713953302533785060 0.0580638965003816671046427205097917 1.0598178373861892775252198891751733 GT 1 -275830862042852.8857052129892962261113689944908931 0.1717582224971086981680047759516375 0.0493502758910097881096704136708002 1.0506096080396065276546833301315959 GT 1 -3438081318497731672765063.1708121017207321400188547680861235 1.4256031955958026533812998665618238 0.0767190957941920946602849959753416 1.0798217525296303186212916994233405 GT 1 -389723844902661388898870.4240898327661144423129951820602917 0.1544030814835268260619272049898232 0.0728351006067282720059902940892560 1.0756238442378065247647403970994297 GT 1 -29220365868194456384353880460632384.9082750148984069782399710536685988 1.1659112623057438719341829200000136 0.0509446966800786328076132709551938 1.0522882067066945043707765844822666 GT 1 -1089338120888918861016971431.0415793526382506288085569923808273 1.9252427507747129238426049576134738 0.0093035946864913616415836046009530 1.0093471434406339817609356349561503 GT 1 -2701580089574054108253.0860458037247618087521599904698717 1.1097389146195607968377596457601787 0.0829276834749864702137242657968610 1.0865689477576812097691888516703218 GT 1 -5376738088097204.6097120894216925819287130566781899 3.7077921316984352775346812593982634 0.0214932890682688922319479325769638 1.0217276337824720179280827029609777 GT 1 -128677685500777502976968165.5389221748623118526415433229943815 1.9798229055424187274779961016695592 0.0737716305880473709579795911458191 1.0766344555061123305978566136538763 GT 1 -3068.5766709347587876523833400233000498 2.7860082102025401616829672122356272 0.0563886027236843217880807389756040 1.0580408530176238605945916962772356 GT 1 -13069358768805701208082817772418137.2136357126620915736504619634914077 1.6321591468520354567337186734613167 0.0705843941302357327101239242738293 1.0731992711339877300932377714381675 GT 1 -77132048237658595494232159967458021178734.3426761829633961831804053581633953 0.7447268286774533426166060877627181 0.0099668183337758500983031493226516 1.0100168195806081422110163163649356 GT 1 -35380279029314482987394840296454962.9543765773976982623420210868257060 1.5022243132517277697361361092151974 0.0684862864212995534197182831304633 1.0709443670105362864932678455556930 GT 1 -161152928941052163278037782610.1428117834114544305381986592166685 0.5498060082525287939789214932252620 0.0016418613529306900465051193353544 1.0016432106844275602559775483003660 GT 1 -1235532249461038699077701058062.6022798983320783500975083103217512 0.0136706397000019271803370187959048 0.0141686967696179074369280810044621 1.0142700310758535213182577663372927 GT 1 -344428379798141.5590581413918962788503447345136392 0.5576082296157365125175568810614852 0.0358530201780946157067677434773993 1.0365115272988389759053991483010333 GT 1 -172727301.8187136850388683379425575592034334 0.9695777711286450795129734263275214 0.0121477840754679484634455910906295 1.0122221714460800746350309538933994 GT 1 -277514927408195239181476649.1644043597895874491630567347213067 0.7992953649216312415204148361841378 0.0828752610373534408698186980885997 1.0865117865737283051123939681465321 GT 1 -19406433864.2288014554392058674558103113235418 1.9705428171895092921107398997031836 0.0779364986654086033669132878337797 1.0811411843323617374495812743854330 GT 1 -15137736247973113596161609227.2753578595395209367480211482526784 0.3831051312511341967347464428624136 0.0746637075875528655508403518019791 1.0775980481765965119967540920961487 GT 1 -119.0288427976272347919911887561971044 0.4029922083564353566794943315704371 0.0614549276472000149462005280845553 1.0634243981601410584350058810668255 GT 1 -2380709881323474874355304636208.2384700504823504209290605696423407 0.1611093233908335859770295627928947 0.0266659851751861462419804543242684 1.0270279722256844384017415518024026 GT 1 -35877468443226143639.2976432588250366501868824253330769 1.9125613390482928035710879731643708 0.0871678641602050278949481521219087 1.0912032752698052083142190405471125 GT 1 -11840824217433299001.4573139730382256188934843417040618 0.5120672610993264936076010833282601 0.0845845886624223329607326732837258 1.0883773152722639894918086383392400 GT 1 -23627406221.6707681075257440965569295357151921 1.0329834733181271156849979988198502 0.0214689521719264890194869065510956 1.0217027626258121890707950019968285 GT 1 -3506418.4743390433641578323254193123254917 0.4672590201727965161815108359313837 0.0756896546414621807560478227767605 1.0787073921325429499530523630291682 GT 1 -165727529.7831517270412001663697711957093744 1.6506370589438837958089194265439935 0.0817424261830756102591211452246238 1.0852773462173565317582834801681418 GT 1 -2236916.3757371528330909226597020175460179 1.2855459184915534531803114017438896 0.0263260730472679851951122615164520 1.0266788086459394011946803411009590 GT 1 -215145244478874940908334035.6832056658109269315040884789401294 0.2436178576747600433674486786651651 0.0926496490957242028765817127663997 1.0972266290258774151103306508631733 GT 1 -20999550277886521409347206273747990.2590760648839320317832922010848870 2.4879965204146106952193284217970193 0.0131156304763550181010487090029517 1.0132023998831437450568871327621266 GT 1 -870928036559267944308943140.1115824321820446250648435577293626 0.9387206059365060177708074383846138 0.0249021009307218799919556709124279 1.0252174037231426912202451265174221 GT 1 -65837965091369460514728.4826373535490520726640186173497666 0.1577404381605075235668855424937432 0.0922719569280222660520265621025133 1.0968104572787983727804245234793473 GT 1 -50785594159907697486738372335.7061579774544675917588772965497370 0.0856300734071764671500289129126141 0.0771318804793940978198476871927002 1.0802689371141636494451733061813474 GT 1 -5861643.4186966217279743239273074175725109 0.2038198264422341924744045774542905 0.0604134128547719373880768114528217 1.0623153013682047413785530845223841 GT 1 -91744.7494946191196831388404977951227534 0.6009268344263483999781558220694191 0.0949162696936415774233798580027998 1.0997278198863579747187356375009417 GT 1 -22605218383708292432.1684206396829633742947279999050116 0.2606924499563474431459931620637856 0.0176701343199137991630318915704431 1.0178281149356612004081058897473071 GT 1 -2277183671270526090.2699043927306421398532756638423237 2.7639255336363239738480330214755179 0.0570370957680895780179598796718151 1.0587283351585905294322293390261397 GT 1 -6543746139319334607975213.6576383886930668634747141949224451 1.9222680672088453623176147251749639 0.0541223902708579590895628301326414 1.0556420949078062611796515731025205 GT 1 -2813990507814197638983252018274614676010.2314793470935830174427562971595767 0.9640472860008508914418081804724068 0.0623168399524868782412799136114178 1.0643431695025970560337676260483513 GT 1 -1.8002305775763485794446601727434103 3.1389228459891626940982547234237465 0.0955667889684773819647509239813044 1.1004468176343194683395325960217175 LT 1 -9293483166191528193441838749339.2384717534508481411563997223668882 0.2726254535694702333554931663861665 0.0419290868539083852117730796598073 1.0428334816776104524058378227998714 GT 1 -74851439626.3640565776797374973668473022288460 1.0120590802723210661867689566553128 0.0860844451121607443458892378434494 1.0900171025097957084215661992905899 GT 1 -1472134755027513449599.9459574007443661307721817342704258 0.4254732654639634877725329173933066 0.0815427131289589617193155545993993 1.0850598785426746644608858709333665 GT 1 -56490537833551313936519966553.9997790761838180061188045280155994 1.6174616303668704600838682000332675 0.0268125875390208241268356366319227 1.0271786023313250345940864096525988 GT 1 -1.7463267330465060525447450712475533 1.8899445120854549025218116981043507 0.0770834388762627124997372680722170 1.0802164482148348321600030522456891 GT 1 -4417333524486533857572740899.8000336523520345917702865559975233 2.3043647388156946029081395727257124 0.0080368711455188726200447396077119 1.0080693408814964343210141581627000 GT 1 -101119347720535121292779870069265342.5585424331257271032710175690782750 0.2668120629947488164359801230049592 0.0016453542561655752604839618388414 1.0016467093380768924861449453648056 GT 1 -11197083076057028350392288650359090.5464044574908964605162370474754722 0.2408239676382039763260194615082825 0.0345760155161847898247543711529572 1.0351879119750486321982968635756763 GT 1 -15031096653489878524939303881204206303.3551048071352060800068974768429636 0.7815864790723426714831030732598174 0.0460493160931011890311716639274441 1.0471433028879580936248270433143407 GT 1 -2328879849554191167765223.5823507846157951030931220712329028 0.1866548649741844084032330691586508 0.0085355206837570322961975749605950 1.0085721568619636331055832182533253 GT 1 -328223576.0403569380897543739775146226835616 0.1069875854216451022136233907929813 0.0185771390547951311245150619802527 1.0187518613799868871090112387740555 GT 1 -247.8712291081040527807026843402901028 0.2816977858759628006071081375875436 0.0384976966996252852722608379801695 1.0392583184279610716145991628437826 GT 1 -512753733142122539318514157113221.7089100844266826446131198133105805 0.8587810040855518388550788166067559 0.0460445214639470915251068338658028 1.0471382768240473105247299788566588 GT 1 -8251425713389366920.4630260352514159826328092501989253 1.0958199264137833340729669813859641 0.0255276974065210363866917679418715 1.0258591826103437355576470163166402 GT 1 -157707903560.8176350672710903703393083879300294 1.8695180394000856456231544948679140 0.0619096217306583304936347683594472 1.0639089825179663959260651650209193 GT 1 -47910199590651445.8595988254832174729307064459615741 0.3892042791769740341783363890622209 0.0757179030729864080085122725288034 1.0787379542303642527358354613583040 GT 1 -15062451777.1604609685999564902554575542324865 1.0031951593158704167951566009492554 0.0751578851415530756654959126324783 1.0781322426778509548498478095804976 GT 1 -586341309785.1558750541699494379572316948290772 0.0899130658027150823793341453195509 0.0185141098488184423660733954004608 1.0186876411700936397040570018399374 GT 1 -348160008024167402.8194823837237796040146253560517750 0.2916630416017170820717277640849785 0.0319043350370889084627467399734718 1.0324243691476460095966656955232146 GT 1 -2762903751819256346.6497206788427797225758146982709335 1.2442717021743546930608900980826409 0.0360368416351755387315991790097608 1.0367022025657723574694132007294391 GT 1 -628172530.2763944434763948912611694840340845 1.5760080982907531205323089549498761 0.0700404917581319315424581167044254 1.0726142333075811018484807303286011 GT 1 -2598788720145798118999209914478910192189090.4320098651138025342026321480797427 0.4481509230076331455242846699591715 0.0900770621337784652813785916060000 1.0943953667205980213053735506173094 GT 1 -2286716365715246431708550236525030900492.7856020188706628448879039853026475 1.9375474311804985305053937560244029 0.0920319116059125286923288443148878 1.0965460459388739478594473515542020 GT 1 -26951409705920920392998509.1604145982375642540667442912432783 0.5165767650179288753460009139065113 0.0899698439113732966629943572687808 1.0942775414613807974192614210662449 GT 1 -93226712104.8849084558402092285991285102738212 2.0380156453553698953123181328759120 0.0015926236275624892579097245098684 1.0015938932007192145622125953552503 GT 1 -5351808945765579101936494492287980.3453411016384371891109422764062073 0.8790845570727234815360245086402961 0.0148896712849783311490543394297816 1.0150016352348330405856655717790437 GT 1 -3680302382953420895604156064407735895.1604557980619007455350166470342372 1.0820965758353363314914475474289938 0.0503086244295103301500030970999758 1.0516182149890696712539709686427788 GT 1 -507012029697.2348214305620817994220985698667812 1.5361761448819040092390339226314924 0.0896549796811040887983284629996240 1.0939316081202872685499635448574601 GT 1 -29939367364861500745947098186096.9923623872321460053550324621784765 0.1834323266325882117517693435834853 0.0132049161356799519153129353734264 1.0132928762360617185758750510076283 GT 1 -1500244636957160272643594955557826566315.4381772071887437291805718809825841 1.9340647414385477591219713290876523 0.0294180598463857020177474364935331 1.0298594490730514936155745666807209 GT 1 -1342640607015746669.0725174317910382434757535016638124 1.1871229870074247453874406154097446 0.0376413655201803605872419938411185 1.0383680968748522247633915562515957 GT 1 -270869629524094006543.6576079368213413495431594231183208 0.1379236110974711841901566633374033 0.0075282177371937513247822880672245 1.0075566977944239835945767287515573 GT 1 -49941631911428710152580813202.1478564362612940655984806652590057 0.0736754580347191442122212464147220 0.0775525236431913778638940153890526 1.0807248408869631206530556668044123 GT 1 -485085085058.0566931500088212389744856816435021 0.3569791083491482425197947639980915 0.0244403649181074829299858530904633 1.0247439879511229172185807786055084 GT 1 -16099226029.4444113041373078611754446569502743 0.5069069848991686494370470413608017 0.0529339249147488554906579029426736 1.0543864151727979753020291719781958 GT 1 -82642184638832.2499487371770893967807008129973958 2.0838166443429812748501567277235740 0.0360282613656897825442862079759822 1.0366933015707240618235493011553976 GT 1 -2326483986962080.8783955015293283871777554340543675 0.0175886183707085788656810171165284 0.0687166092378893517367402579257611 1.0711916540792425765578815129950824 GT 1 -4428865318753744516117715281160050683227744.3029800761423340102243295336881830 0.2430390494673816576690913638133331 0.0350740752034572807510680777799045 1.0357039424583618089016738030145234 GT 1 -1670561371234735767606605496890719.7006155057562217015460144406526440 0.1328669567511795879390581562202987 0.0307055373411144486564803434124621 1.0311868302215621541354342830462451 GT 1 -32427002700923247128685429255108676840529.3153689407400322429534136111208504 0.0860619880409079991482648915928634 0.0254894304540505593693077285851554 1.0258199139712782847845198023554415 GT 1 -7039499184767811242639965555600683.0500691073963911067943802166920313 0.1692369657231947976011103049932612 0.0627521655436951026167625618623486 1.0648075338982008769315802732499469 GT 1 -2237625869912.4562876781178066249439787291259252 1.1771461283501511502892554210768866 0.0242101192829903047475256883003741 1.0245080018970392809129808730874211 GT 1 -543009873860006.0355717679955184868921543468053940 0.1432194282801321853116815236644684 0.0261906380647292138670890941230148 1.0265397214624653505947692828913178 GT 1 -128222387234485460096907887637390561066708.0575846723616095533435200290224586 0.9239547211033539243314106384543153 0.0567828874556166970299884205915197 1.0584587868527543707070599725449427 GT 1 -13851.2030822687518686882156523485416450 0.2482850589771443653896256670199255 0.0978529033226050664339944175383951 1.1029776938590293817275685178441870 GT 1 -1475411738076287313894966444615419485.9897119953233478100855977377683254 0.6056120026532373787359112110507294 0.0594746640696566301174421864414200 1.0613166918156507334984723883465577 GT 1 -34547725700907489418281255446466467619.7208439427457355004685415306587713 0.3412991086280285953756100016490429 0.0131894777560100357243119362830182 1.0132772313882537783330461339276123 GT 1 -78469812498744220115542.7926453068458147658497613224947641 1.7931080647353399309967871721516838 0.0244499478074689484182860384538834 1.0247538109656095391699993481964250 GT 1 -1546.1452060484107843727190661561085407 1.4333069380907469854920513912018773 0.0442622737120220434150154115978183 1.0452717484572309220064036745562571 GT 1 -3529392659.3327259839597754506736395348509360 0.4115610003989297717998647519587730 0.0308277456277641953747579693295951 1.0313129177996855716752389819800948 GT 1 -1203559350.1864323532866020138777265812743457 0.0978622999625560699474593225701408 0.0969650657486312769413068588204358 1.1019940394348774568313431119161986 GT 1 -59622240377053397568126669751648526.3352584776582095842528278849778276 0.0173026860703747417152841410897447 0.0693022237086220830880086578969141 1.0718206770794790536121644414641560 GT 1 -152792500623443543589531378832976235.2203069378599593536818213924499425 1.3446986250494902629108052387240506 0.0178416430310141087263024345995485 1.0180027239860578320841143979061924 GT 1 -938745804532546591.3518131582802904054984848260301550 3.6829239757243867885039428543299888 0.0672388610474749361789421560770590 1.0696061248963996064420512709461708 LT 1 -8623491253380524949613.9332710910827274978556937675180671 2.0693475489579371094490693521329915 0.0924448096856130756150710688229495 1.0970008989189062649878557796472401 GT 1 -2284587149728345560.2647486084010005285527990519242149 2.1873698789284487829536512534893894 0.0876224834882727135106124933936410 1.0917014310152380343925535910010225 GT 1 -30842758688827373772.9308658260399220766886403685949236 0.0705358698085456733290923881073738 0.0735345714834633887153262546875525 1.0763785480203283731859598166293948 GT 1 -124995740.7676024020120747260950703197527028 0.4302316914988556551264192949292815 0.0454699793844516413540389249658288 1.0465361846445599278204922835463163 GT 1 -2345733.5587374544142323973377226286949638 0.0403509558111326113812382207447099 0.0532506282028741483780016950413742 1.0547208757366284778400141065564841 GT 1 -8392756408839871501781834892266373776529.7908155944550167233749134788850151 1.5286232872399960957373574565193311 0.0614708927600554073789962678807326 1.0634414087961930031099700519425164 GT 1 -583373485824269527770733116871806441.8415656485089809719558145933779650 0.3123999256316310334768849897258068 0.0701990545565658099893453235315445 1.0727847529016545001716733274187888 GT 1 -22.1870804309795549671208140663214506 1.6341522510992900901888175235979522 0.0324473442908212566331262705227760 1.0329854310535487484368799374792757 GT 1 -53173.0853122290190642255333069953265953 0.5078505856257223529790661765506007 0.0919459022626837651045799765956848 1.0964513231497473514077346726078295 GT 1 -21255765129511615265.7291481939295619326199270424497946 0.2785115881289083971888175870557289 0.0508423313822549162100657096451061 1.0521803523200305520840889567446112 GT 1 -232248219416.0018428808175066282451376401414567 1.9680348175232415491729617107591474 0.0046232627306841020386226064308802 1.0046339830645308075916355260514279 GT 1 -419758637731312811730752122332.3078159952400041748063403003552444 0.1615808388939444838854985040197050 0.0552167426565303091205240169691828 1.0567997351033019155637927910571752 GT 1 -2.2213383959284528539456232380838536 0.3949403408140169652149436980272540 0.0183414695978307970312116142864251 1.0185117598140148803998716903132870 GT 1 -19113436117873567.9394033410868897017910537719491541 2.6636462258948437000246500787193878 0.0161861782602745335616222744341671 1.0163186053805711051598990398114819 GT 1 -27862431.3805845195865662735058512267573511 0.1601924143350400374312631555573861 0.0463503087131490557072616897988039 1.0474588748772068116598772002173004 GT 1 -14309121.8010204752431113920772890872888884 1.2360819761901596760039682644148598 0.0808503085540113942124846343891383 1.0843062847482606273109388607288979 GT 1 -74109745.5233266157331912344986756453890310 1.0209113342587209510177318935166652 0.0047492265554571775642208614152143 1.0047605399660739096316308232950585 GT 1 -122599.8441520044178635202889121673017207 0.1880829174637476409051619067921259 0.0619222025836998551788345301160681 1.0639223937389909883564867337844663 GT 1 -11744769751366811.7779853627983532441248323396001857 1.8984058549370931472909455356328837 0.0472961965091905098132150589179117 1.0484512279494525676090850414739467 GT 1 -21339798030661126602676734.7404157695407102480467627337220042 0.5033466534867413396234249388533789 0.0736678866644837516107577277499301 1.0765224549267647582070588866410175 GT 1 -49476926115072940089865119.2603594580492679434925989156159074 0.0084768264283133054924847180385697 0.0497428800254648341615946187590463 1.0510226784025855613184295926221339 GT 1 -37102239891171459809973563774630901.2247723059030475943273781159527980 0.2814128818189891368624265325176090 0.0056751171936264490922252111912893 1.0056912818577937415006179691143774 GT 1 -31167092946367098558756291886612604982408.8821443722264413083045960411600387 0.3704637947013453413881661903420367 0.0511698349674721089712752216585457 1.0525254584188802496721424107248880 GT 1 -46898655901869872190064121591920779.3514270797441411652122184698062286 0.3870082747399599241934667797747089 0.0850026919215544898642350886575925 1.0888341557017133349175883109906106 GT 1 -277990952906434089786379.4464846654952778366953988459190219 1.1092998382952269187877844018559980 0.0999254894344150988971821133888056 1.1052777295673726956192304058881317 GT 1 -549598447680471270427.6443539711703494638106780973083186 0.1022024793513131070210675780029336 0.0507811114136523872791080411678787 1.0521158551385926235160676724262693 GT 1 -3045.0612625478019271839754436199447305 2.9516194428238105451560519478660150 0.0956763493683740175391338354832558 1.1005679620538407157526428431767473 LT 1 -11312324.1194169198781587589305766309306281 0.9838401098009434952141412452489645 0.0346422502262437899881744316089888 1.0352565211905904921782103944345632 GT 1 -491292193454781217785825902.0222158764236963575722741260541370 0.9450441603756542652377072740750748 0.0170479106223554868787525945720308 1.0171948992113243699429675442425950 GT 1 -2645427325832989059370843466354089.6647775651847468253869909695612843 0.3252556425274013485717296372980452 0.0136267492166804966696882521332270 1.0137204455214793690392707626978896 GT 1 -73955050.7772298261494093740106879545082733 0.0556198481056497573984313584112729 0.0411227732832403986721758834315548 1.0419922344873992407861276325805597 GT 1 -2621081663199120410684611868339825973274.2049284105554245195984533832433753 0.5392358800392492812037446253867856 0.0074737826291367382282869062937719 1.0075018512826585261253577575605881 GT 1 -6254641167.1092437046171331950501334095527129 1.4281728683986993968393098581010200 0.0399116464308976789331162103107176 1.0407299637873980213120375685030893 GT 1 -36715445088175874761566084416563426.9743628202174143923625359483518221 1.6880518530005581436840301962044957 0.0280053315635553022175983333707083 1.0284049596844320939894031236935058 GT 1 -45966430423.6742243448110716950300623724592544 0.9045415628477645565012340215961141 0.0762046536207648705411889317508767 1.0792647184747922069353966558315062 GT 1 -13697570344993006236130594222449.5513918956273244530448494840870596 1.0695291226335087362469485898750688 0.0045192581852024404969557092066618 1.0045295009037845522285528945807876 GT 1 -23920270254698.3766552506955989846675588521278662 1.4097428203200151501820289183245235 0.0225131314536777639614653904928616 1.0227704209250516517660116892589965 GT 1 -184014367242717878644681359.6751450933914350382226159292332290 0.8171477519978818255439204377882224 0.0941640937156276123038625196679846 1.0988971082345860898615673577594072 GT 1 -332272306311.9293719409354241862945330236219161 0.5070481829324922577085077579291948 0.0253591532653568780843482461917175 1.0256862381697992240681856316601380 GT 1 -1671504586.2835667286739922931045611056194727 0.3114032584053239869606257624458035 0.0582444395145008925916102960948665 1.0600095280095794271186993739827734 GT 1 -19064863613073172470147246651.1844036470233654611096352451835909 0.1133155180810899522695750236044036 0.0645042105153612596337035164850281 1.0666786340962521471752902177288120 GT 1 -13939382015545450451031769486825.5450733841402732459546037135513619 0.1818811708395790840745990702095468 0.0685175309582051687887874646543167 1.0709779092552279488363047471583920 GT 1 -14450734336119872139654961781349.6114916657692301964107700300175913 0.6221232594376949643326244397697183 0.0193686166093051063970649347486882 1.0195586460035272252204135845954045 GT 1 -17806.8274996044411237156514182116066603 0.3937664692488879715466324954749438 0.0969873845230840618353766931724532 1.1020187550349260589146613583235290 GT 1 -2192594.9472678976900712679368546902132880 2.1658383853890969656823894898075636 0.0354336366190414992038339822570777 1.0360766430096409599553088598477132 GT 1 -8.8798538342338347205650637566536397 1.5178414606798094400941401806466209 0.0849930290469707195656059694154078 1.0888235952077357206635803014163181 GT 1 -3059731130559098987.5430361013184157308894236434013367 1.3286155917890008471019321635965377 0.0702400496089838769972853114156202 1.0728288440121059407789642843385218 GT 1 -232956542233279967869783163969521009280.4794386991609903541103423927035392 2.7956665892938377665979438502870618 0.0690216016514453304014933630171031 1.0740767029212232514196592306498258 LT 2 -203125984095353988713075.4901988536321652183575625882919757 0.3934275514969581434340868903392550 0.0945811680768842581934947355882672 1.0993576446349391151463194040095037 GT 1 -6224886724152823959470283.7607431982547880155813734746313599 0.4978186370058106354867310233921054 0.0682014334381896955049398696893356 1.0706386179545514881438509915638412 GT 1 -4946711948937604189356225180477260.5849420243733881300153423408837785 1.2249088915725218298653849681839536 0.0991763745277175505289432265922894 1.1044457947289571919881911493714614 GT 1 -20018343801909810131105694921137446177006.2388204090780520812431505930029526 2.0544708317182605633657640759877755 0.0708782627946341556294746998574317 1.0735155076281775422333247707625704 GT 1 -11393.4786234229002570070508220005459416 0.1131228157330711824737538083417436 0.0409755915969916957258298818168725 1.0418387524903640400101026249671538 GT 1 -127797556873124.8670055241021680972872940863438122 1.8021331159880369386953035722213575 0.0529043632348220921094707044826943 1.0543552017027502840309030061790769 GT 1 -3285046916229327159650598926349992842550381.9102877734688652472832251157604091 0.0937343525579301378946560164223330 0.0527072705158825669033554422568272 1.0541471211178373970588354408312070 GT 1 -904350499252157737381540776.0021888117678059732992178871819613 1.0156481812468396959720958142794593 0.0980811881436798969990033159588487 1.1032307719990390396356418627400243 GT 1 -886358396.8657335574783733520015258742853202 0.6515426603533953057588360681969967 0.0762521006269381101306836453705721 1.0793160807433537209138852806411747 GT 1 -71746212411856341245680154861917.7453403414632261827170590421814242 2.5773137335568349963717428528612459 0.0610672416971726410148950162116465 1.0630114122391278487250498884775304 GT 1 -4785280542183568585939365223508767635.9496873465240408497315987283540362 0.3949364965564194498076383664540969 0.0797560430395930647220238445795716 1.0831164734814250992967444002091979 GT 1 -63596852593883236.7352882925611887952072208796360043 0.0826340661428372188034020026095914 0.0000462227941779539753399058950785 1.0000462238624842249781515028764900 GT 1 -31642614748060604901130403120044682645637.3080380683573848725048968890301233 0.1674235468614261582014330607655971 0.0750556652771710627915820443410165 1.0780217219585439217912591116418168 GT 1 -3208863725701061.6654934273614110291285364556406618 2.2271811659370577485651960501703409 0.0589517370605067710792348320507371 1.0607608517220955269317712093741399 GT 1 -3.0669693385577580593034329146065919 0.8028501254115936606793958556216175 0.0830628695597121907619157523631372 1.0867163691193260411732643270119703 GT 1 -2035047204.4166214501332122118000724206458503 0.1617753186797187553927097749334748 0.0954557989994411679253001078895302 1.1003241074573573276681499176331815 GT 1 -9264312724930258.6748132807608727530296262810811983 0.2375303224289406233793131281221952 0.0627404674516736489124863773829930 1.0647950526540857379969951781561158 GT 1 -83752220039980658652713385.3808881874606247470147282909334789 0.5992996562378659571361177754680214 0.0896473112796787258896338798831659 1.0939231845347713018488686913267068 GT 1 -62221043022930742169043116881146484441.3141388777238717597223634512540010 0.3111443218319253811772630469981520 0.0812701343629648125774072944786546 1.0847631436481135793175219520872727 GT 1 -66118904896106472219620437032714846590132.4548977242540053987981902171994851 0.2400831830690527985853895999225194 0.0174481394441060290335313916531446 1.0176021523509537683638331792405993 GT 1 -1845560502659108218242388445811.3755736824969882026559047359091780 0.5992855664609501032948212393974547 0.0666710623132708250037951872733621 1.0689975811194033511973438582389089 GT 1 -197508912668.8506954556918467828734667284369074 1.7293067753170167762678560250928564 0.0512673213933711303167734617333486 1.0526282075070715298688530417272121 GT 1 -61603594430033841094956023232905.3278877381332927448966597540686244 0.0742742040188216945086527221903102 0.0663716039638955398503641950007593 1.0686767828381204157269563370609600 GT 1 -30607245853457466658068050965734.1716332121720225619891663885464060 0.7550988935938932328624847067000471 0.0384696124629622812690277271366146 1.0392291101500167471987009882215989 GT 1 -5345133289108623.7875299126677195316630328226058094 1.4244522293700737968931267232378318 0.0488148775195648962756894003996509 1.0500465745180063035214458663649983 GT 1 -1681971730364094098715661682537245927359.6296622320400593106043501969954361 0.4901655717620427063292484765263179 0.0101316319842357865405542377465900 1.0101833062939167897727911205937011 GT 1 -17512299625707437253.9349153456776391163204466020049966 0.3036763151239873541265538627869279 0.0657369832776162835455919297588518 1.0679972779093403117224203516533013 GT 1 -294514412.8703978069511069834359064612869284 1.2774533629316471933578874253000221 0.0989480722401412412208617141852153 1.1041923895607828686669567714873304 GT 1 -29749034745689270151538810679197.9426440036794994270072379878916868 0.2346083891090065368226631950090959 0.0947675800908474379326683693639003 1.0995635506750262451024691999331937 GT 1 -3802470177035319764642901358481809967108.9582118837113107440913727437821245 0.1449505595313093199573892995077478 0.0508694569550886732670595917939106 1.0522089313025780386911510992491825 GT 1 -708015385307425692216118.8024586692287954891833799761849091 0.3913002238575133358525666365155948 0.0657840127633935934508158005053634 1.0680476177693950341554010033206061 GT 1 -14351.9377793800408499389476220442913687 1.6021899096385755375939203294616200 0.0665356057059146353073048298836713 1.0688524588873133199494775492680171 GT 1 -241564199250350357.2750613498289944536891434833831705 1.8634354864973660878836352416994027 0.0412644391986367263736175855226013 1.0421399868559443027169100957166019 GT 1 -47048590447.7464492521101853068794905006208285 0.0814980816771049023251520276502653 0.0141030925955629381460086904154551 1.0142034862308537569307842886081300 GT 1 -4785584822007.1848778592210533589367235240093176 1.3348609436877064214889440485236251 0.0785522277686175894765012149118003 1.0818091803841719105665671500856174 GT 1 -6453154286446666477230094.1479243635031893891417701391604413 0.5805097677471666122707612920866058 0.0562840768990113815028831478767380 1.0579300870432735143369066716582191 GT 1 -46877147998026.1335752290274264408479252551727156 0.5153042590661007464745808958017544 0.0530247926656935549127073174207592 1.0544823663559721194179029534045797 GT 1 -1763463352043950199779339141595056594230.8972912468920390093034981111829530 0.4367899549764419966953239101139533 0.0050367060956958279633068339305258 1.0050494330524553175255357555200194 GT 1 -924660051507704432418154353465295.8289870686199069323357354434241473 0.2059797817010880804141600942903814 0.0802492849505467624394548310460025 1.0836526075586283750819048631162192 GT 1 -1298381031342250366617215974328.6193765075130013355222209364290955 0.0181164566555136548562104429257282 0.0700549514989397156951520447234872 1.0726297822138469130677075441478975 GT 1 -335496074.4441023353042801083692421681070894 0.0450834476578895113307527036900759 0.0884697718543478470782992762158646 1.0926305223352415318306483299740577 GT 1 -1201.6965803421802408844882830926474868 0.1210110313906478325037793833864824 0.0404406772806650597880932325687163 1.0412811387448602852614235589345706 GT 1 -60814551935.4169351653196796377842105974044400 1.4219987013453524953579650860487589 0.0631743978826732138299040609181342 1.0652581377410197413316349577441754 GT 1 -17.1264836425442083986240775383348715 0.6697555051525947627626864379334443 0.0817931145772154666907651285101868 1.0853325483683131727413230342366210 GT 1 -20651.7234429365694446870665892202355291 0.3277647934747026733121401221405342 0.0873915358466619505280889631897168 1.0914483357637781604168224236160868 GT 1 -23597816.4590754814900587872219042261012251 0.1193495272190237989297246663167467 0.0143653484602870913901817549871126 1.0144695290086944010652546251143262 GT 1 -121935344300258717.7842793947600832955344410931041719 2.5586891775776484748988874971145018 0.0704456020447153654762864341784381 1.0730499496436003947158191136712661 GT 1 -1324589899321270467017820088153098.5857363603823339768018967408362710 0.5313616177510939360578105585050350 0.0289440010906550912197371297130549 1.0293711409743962622150378696366771 GT 1 -1206895028512.2004860730478107619531576876409304 0.1613569930322347555443962892045119 0.0320367626308600401087757414259926 1.0325611703511818576699265056439320 GT 1 -1708156376.1394738167009132474209721748151728 1.1064081251660105574244159701995124 0.0545073605481185464124946145977368 1.0560491757347818941350953245758655 GT 1 -99427557795729629121154502964245540343.1585231283728638033904019883406400 0.8464283850189199496256597062971253 0.0157504127316523668041486999233388 1.0158757684945755504276393272370316 GT 1 -3691017149560636736047719886944358853529.7275759784758217602233463195477122 0.4566727225210540320774689313530110 0.0870122549556027584811631531132460 1.0910328212106636507588327404094560 GT 1 -172342.9205399733922511409394652011656518 0.2237408757463696859655558117626295 0.0953546374213817558633065748915002 1.1002122766352021199535725673939159 GT 1 -25882693920905712896964600136289250292891078.2774883880168302977248730255814867 0.4339856546902280471878767804528348 0.0153850487112534244351908994109660 1.0155046266334288562173727391886798 GT 1 -659594033707797967874.5059658656100328798208479935421392 1.9253428315381480308663806159455472 0.0444309898634233655552048621947327 1.0454482938003977147655206433389882 GT 1 -780052430779647507669.6395173769424838862359213820541908 0.3413260285206118634233897637466677 0.0850551656398990479753100839429259 1.0888915058409795031488345097582711 GT 1 -2822460936.4606159073259778431807922706653000 0.7410813396584415405805333237832862 0.0659098578714193518016416058727227 1.0681823334953010891476719920111562 GT 1 -108006889960358462343483293812085.8495308376573217952410140730445281 0.1490320973580208175610543747272906 0.0767522036416104994523675131616067 1.0798576120831935387989165516881321 GT 1 -70362334572.1602781686002546428135401430765316 1.1361611305407359592720689507553786 0.0562148905811141053843190596152451 1.0578567770776244930751869672656522 GT 1 -36123931454624653651773796796.3528647404686703939915865586916046 0.7341860581297897933417840499240765 0.0889127767279939534038476606151113 1.0931166417697125250266500126665712 GT 1 -27105392163905.6958419155814582330467334098292682 0.0431699219448919003981006356228398 0.0689055114621827383795388878536441 1.0713945154072693198983970982729391 GT 1 -1813683308607700.3472195431167875895567389763228175 2.0282627892901482495810251858493568 0.0995038024562649209623470496319101 1.1048093369805550225682859659582168 GT 1 -911982632558615029940014.9980056903443091698150882129479227 2.4506451234622602344860867016869919 0.0009814948930446902954987483343831 1.0009819768745579643312689538798820 GT 1 -1256433753981889609233262646.2360618252691465542181923669754094 0.1552120544236807844855481622310320 0.0479888760818968734174752906513122 1.0491785594711148887761865603158939 GT 1 -10647779161574685377735906524386701442076549.1599188293257767766249367475675815 1.0066999575779098737420369900367042 0.0602672442122710540694277531297641 1.0621597464931428945585824567173584 GT 1 -378.4479149471690906357092438388097663 1.8202676005045630745979614243666185 0.0377885686658309172158265787571061 1.0385210693735441349471254125913227 GT 1 -15882648.3585121350843620255478546252291834 0.4058015747025612211287534806453009 0.0957071357523706823515229715659799 1.1006020061795537816805522165611717 GT 1 -9858864508369835916638428.1559173969798287141228378950366826 0.8985400896365653441187461290770638 0.0020234621896695298588483609375819 1.0020255121551045421432804812831780 GT 1 -27123830193405950457.2713275704686284562213530036468816 2.1568301254849361162516807957462919 0.0599429048235346231440247604215304 1.0618146660132279604528822863287165 GT 1 -106124392.7353556247057635681764189701717018 3.2702488400720916931038467271318552 0.0869287649669942564498925348343672 1.0909413783935612807188522616319900 LT 1 -208517813347813183401089519974.5859269104560698684158606725014696 2.3315810528326539263159802016698152 0.0642286899316696316917538410687694 1.0663841592072868692521694592491338 GT 1 -4207204.1703066309514873078357955834229354 0.3834031586278118542654618649580070 0.0729299699580433388913392322151984 1.0757261714563178737495910014473240 GT 1 -3389465247411539495588241914.2117367147423936722189501622547483 0.4644419309021934773156740101625578 0.0488063089144371913436667302474387 1.0500375662121245731872785018556596 GT 1 -76305953378.4993432597423441509167044064177225 0.1487291474632829650998878495498761 0.0000474443547912481945517802181110 1.0000474454803102487960826471824061 GT 1 -10700.8916499950807145252417053329716075 0.2542781880310353974481823779850052 0.0617838443580578267482020856562320 1.0637749134087716295144204714943499 GT 1 -613505215126330526.7447036309441617692359210608097053 3.6401657293517723294640690307142668 0.0538065582432874575401011479333297 1.0553082469476507647604267624052348 LT 1 -469790189780706764997119391238155068.5650643628602724487441249441203463 0.7915011974577394229430128017151438 0.0513349678437241506329110634305909 1.0526995119573699150624095290556628 GT 1 -34336473812781978946447.6271791388173464643005064375326050 0.2176618928172706093101227002923328 0.0895547297465863598005432605865510 1.0938214911725661568427929453520666 GT 1 -8930908776281547.5833245324353345318773671370358051 0.3329371309368404755499698797689938 0.0572548120071687301846902744605751 1.0589592470806894413874093110630883 GT 1 -3780954590581036091952888.0198784027946966368521792535481962 0.9993383360125016020708592824405350 0.0608087006734160652166208313624966 1.0627360938709514344767505207082238 GT 1 -83822819753533334050636487796153.6635610652634118373650792578014630 1.2034045192203510597629528722535774 0.0335690924719742907112289313966130 1.0341454701854938398294997998464033 GT 1 -277981204058530818959802943965745.8496393960905161789715336502393036 0.5236373980117472287893293236065161 0.0503026619651287411483848143566098 1.0516119366908583579717072405025629 GT 1 -1873276210011250919811628943441725017523.6695138675009219272415589636499728 0.5235382255824210819177916416842859 0.0573236207620969173310147833109142 1.0590322373934711081858063848738658 GT 1 -219934.6536017122299481445322538072704988 0.0819844963721396500556368336017888 0.0503864348727183698893483215690674 1.0517001506925833839982688328424040 GT 1 -6355225009068008882705424012780026505.4124318526297648343012242890444739 0.6355972503072616289220352894034777 0.0185076372373929605741541525134327 1.0186810464852917092792223011553601 GT 1 -226978040211515848555377882106046882272.3310554446054590094999216703879408 0.2901011964124653678255067239696464 0.0133619111980396552516265925631332 1.0134519848036741606959951138512910 GT 1 -6655332760243766093263.3313200215108079829644843173691492 0.7397447781459255030034575007361167 0.0529259499618915526442829422361341 1.0543779945150529939632568918469342 GT 1 -7143352376.4443821845321233042570617320096874 2.4649626056849143388269146478466820 0.0947882451500670461074485464030873 1.1045451028726766016037053279773601 LT 2 -20469932186564135849.7958609375652616560115508258839648 0.2594846595766159007151257338447499 0.0213595860498480465908954857645673 1.0215910032584515909543487950210774 GT 1 -13281055760994.0609245074277047532584643817162070 1.2706170493691465534257474578930242 0.0087880753885836719080820097910305 1.0088269182599328655795401199972557 GT 1 -4392476604336636090501.7982409501751629822825212447523671 0.3546573836357859759433170290047268 0.0631900468681021641668128398220443 1.0652748421480059042832555431613591 GT 1 -11711.6409726307799740695107150007909369 0.6967535239384744972603102301068015 0.0514123337210527466211559915078749 1.0527810676483279897443196953040738 GT 1 -883595701.1126793838892852546826400173284326 0.8797367081586491789746913762590768 0.0123975639288577938405777776824580 1.0124750548564571519208314080764476 GT 1 -55.0591234117715159435506868063077342 0.6903053329702888408703701138905828 0.0169118980004206427653978447677217 1.0170565372157269632232835157516438 GT 1 -12419194413816605.4003394754643993285622855734658614 0.4414524717032237769031380308063430 0.0206455698206948545818538417306043 1.0208616691001473037212207917532609 GT 1 -11565695064673239229600287723041227.7539000310056751801792815635998530 1.0827738667076982176775583283237731 0.0753975530173849579038022530586411 1.0783914209004573232358346735829476 GT 1 -514185.0854667598810698541093148154603636 1.4423831067793221187014854695207108 0.0209257539418051384673212957962934 1.0211478006569626937419404785085204 GT 1 -2014223515260852685007607.6683779956501867304737818069011574 1.2588416414116416280009828287388389 0.0387979087568310113287736508065948 1.0395705994634623264102357362821188 GT 1 -352591314.4275856906684460303806131829154777 4.6491846623630796596795439919863966 0.0042966049541483311330522318649562 1.0043058618863171479410527908658291 GT 1 -1657031238.6478136319311765884812351113966364 0.9147568132027635635989298866346519 0.0229797832760547212341977522955693 1.0232479344984338232612876176980399 GT 1 -149952973776857.8990224895924910004452107169728265 0.6379510045893098227890065482450841 0.0482561926379641036366505391819771 1.0494593903211700764587056342552350 GT 1 -2528136404089816852.9135142450392886244716219016104486 0.2870184983328615151901860690408447 0.0876864472554157271905083560806034 1.0917715401622020554451671382941905 GT 1 -15766282039342451468565927.7272615953383345697846842369405848 0.3358776489023166778929555638342835 0.0474027782524098683570574341205786 1.0485631071138667007948357054561954 GT 1 -12328345829192286061159615387.5214076825779004719137475812706564 0.0261533258193518045516752850328206 0.0092158946586683343336969536094555 1.0092586237429546840017183355209708 GT 1 -1141.7522992325755084052766076033583790 6.1540915422507057651377761735341075 0.0093224377623146540632063230954108 1.0093661636519948374754195092802636 LT 1 -808249864610.2147693499196193461373849486306342 2.7987141302655537470247745328453585 0.0617782876072254670120648171181060 1.0658022328403724895280969030269566 LT 2 -2620885415143737644902708.9119673313562358775139501682667198 1.8434364768897672557912909689246510 0.0441779526435314919304725810288849 1.0451835261900459610644481697116365 GT 1 -28650086112314.6044619224506551173374559415087796 2.0337441060350413912813291325966692 0.0119388180787318400094625917471654 1.0120106581300177538393850010873453 GT 1 -2411.4594222123299756256945361409306082 0.0139381587902897767735420010503209 0.0601250325727144985071392104298693 1.0620084259403791837131526708043390 GT 1 -15647388034690186.1838918502533413245485403956975054 0.5528684389862682334710086229008135 0.0060149091608392950805709594698467 1.0060330715938254167029359370020760 GT 1 -17509350475033.6326572894885760179577100724830037 1.4577856216227039700189244000622829 0.0971938178093296622225415793210656 1.1022473862657133994992664746562379 GT 1 -407536696555101053658.8652924939727057221870039304193204 0.6415622840579235080182561177908046 0.0878769849117160712262888447043660 1.0919804130387410310248753253729444 GT 1 -1627099.8274010790459359012730389098892368 5.5095366524431560388325565529341813 0.0968614847220547836810376952420908 1.1018793427796730081061912756657198 LT 1 -131.7577854152361278544543323688194821 1.7679132422782384635556624468283408 0.0382178948002476707392630661052827 1.0389673558432128259480243253068488 GT 1 -5870793094639446756082315859168896777.8606735221095065638741622384772038 0.5519772357761657490432600915961329 0.0574595449588696811816091556244633 1.0591764374605793309775136933922280 GT 1 -93131653425299872019422843.1477537207853457484478239786434261 1.8599833556851741024895140770343403 0.0035104827334164250804198137655498 1.0035166589364664089990352772740751 GT 1 -121472348661454612.7605863538292431489792681265795159 3.0235232946160572191610643495558382 0.0754135627786756608868291699162577 1.0784087363423008913834181937808299 LT 1 -4995719169908774325537.0870430216766966970273868807793954 0.3423166814313199493644051942540403 0.0029910082692252416556838097352062 1.0029954902738315711488617152509315 GT 1 -16514984574010717700352837476976912305311.1569214913633279643520149624044023 0.5475563551122454393933541693297450 0.0959070609499324471316008814437780 1.1008231151907080438886827607735629 GT 1 -57217733145008728609563612959.4386395191648209247288033307134232 3.2339185676878392330843719125850559 0.0948964518301981483976471122748466 1.0997059239602514740227979438708921 LT 1 -6179982548714163847137382348674.4220603696254721264268060398017529 0.3278903617915411470855643157203721 0.0323240442557241424494089762072645 1.0328580042115371981767476901700960 GT 1 -48798940202.5547250948663066208073611650206203 0.1744722492391204092343400324164868 0.0273853916808851763828972891657800 1.0277673612618774567301441963805993 GT 1 -49378677482923252346.8767015987198886366197276817735059 1.1828910562551873695319081347988968 0.0923804190984928470883986875125033 1.0969299519355432188504505045541562 GT 1 -7.9605933501199221565640645823098822 0.0396847248423006097608534379953904 0.0969924821390399692986243665024075 1.1020244001723880645195480040571231 GT 1 -4.7483929196083695036299131643237341 0.1537539083572893535529260393808345 0.0005634682005228280824930182439118 1.0005636270083875848264644400274213 GT 1 -92218576874897480401067768666988929355.5340198505695153206874163088700940 0.0850304210492833177582589246996065 0.0423013794177274404157153333964194 1.0432221427998916742251502139045626 GT 1 -164780900628940.1099330142457400221124310504179932 2.3147690510683335394679547846591000 0.0465307121432957056924740089340089 1.0476480643642368850613573772605448 GT 1 -341808422288328917598326795705865670.5870658008245651434751083993984334 0.2031803230218229233627097671157341 0.0644512607918616230124592853199726 1.0666220349905635555389633995901449 GT 1 -1692831942294663361065.5623280082718484416082566603199594 1.4086983944331974972525375406065578 0.0646176630783120286477786248937170 1.0667999167832305483857487644347794 GT 1 -2815372845525947211151460159023603277.4629855130480197963841187787022729 0.0809206355430523998029649691571245 0.0640978238877710659465262641449096 1.0662443206669879698075936885639592 GT 1 -229061.1742176280613928621771531102093949 0.6413580385466303621306164567511554 0.0218621460939369202227006965751219 1.0221046639663552917503960920815558 GT 1 -81247103970671566297876672680977916.9060547580788135364300005542205394 0.8243074617318482927496548950145291 0.0985454500415941765026768319837015 1.1037456536292118771654157013054972 GT 1 -13.7643770186994237739093186800507560 1.6731544938748906486800225467577478 0.0466125501686633420829305755429684 1.0477338998901056058108286880797631 GT 1 -140662357896250426775735834352477713.4873353119242689631138846242015645 0.9290371888265177142911867278438837 0.0113133171756167207631038899683128 1.0113777995493689613309565293575497 GT 1 -362573448311809996610509858669387413576.2437108403292373766961741941790290 1.8340346137457345929699691033007847 0.0967010125198009573141200487696544 1.1017016757389578688570727825797840 GT 1 -11053485062262308175.2740080957467508145790385580933064 5.4013213214622531550505628904302912 0.0769013475978689346895004665326156 1.0800191678482916320224729881293652 LT 1 -269383167384922246890871604447530830924806.5769821854399900091136586745520642 2.1012311279884416211448700934337448 0.0479178457521889097012619654154612 1.0491039514353054972901425444876313 GT 1 -24836062232.6921833131493722994343947841676845 0.2991344894414165228291106775106318 0.0955765763296328931524641564755153 1.1004576392339618520675208400700275 GT 1 -135930554647325421323816845540420.9297337121672455767985051413693412 1.1917939470765377050262239492436128 0.0804805347944357311244835169487315 1.0839040658246188820286603577698540 GT 1 -4198.5951830706336564325294006241040459 0.3479393935096668426748902814064392 0.0497888341744169676057440930284535 1.0510710392716455178766496796659876 GT 1 -8246437414726889891812713560048602562384710.5386520484230694541626276366526674 0.5696843027057706677053464612366805 0.0789782626237744476012730338834142 1.0822716410767676794083627420132346 GT 1 -9409190830812477600787460579156034657414.4951425845892805843231063031744319 1.2657715897610214162123590236886349 0.0783831114871284474132037532467117 1.0816256639991358269999778758298598 GT 1 -2681880629868651921169639474.7572521276125828933866005350032651 0.2893414143135799006543743306052521 0.0969973679873114715989775532307171 1.1020298108266657894169883254424183 GT 1 -678301.0244331410972250074800019538818821 1.3756248274115061734929321607241767 0.0045597910022619946518867659377791 1.0045702185596499063226087836801786 GT 1 -564411457056396861330264807871783.8386346591118983283920695456250845 0.2411273023180649356428176927099285 0.0174577702958643311095544994014781 1.0176119542752546091340479715363176 GT 1 -1924141187860248432360489958285354855767103.3172073842217629780348406981801578 0.0347879527348332331173073186274101 0.0428744367070126874977070320630562 1.0438206910229813849679185300150161 GT 1 -56429465370.5978906988717797620578963957382536 0.2261193637997388759620934600073021 0.0104181417451771033392974643288238 1.0104727904740590093769744785380674 GT 1 -20738314973104930004881904964996.6246189034346798177835258196895506 2.5066303309027968077899470691192850 0.0646123358633828483458583924488266 1.0667942215722466422234221420918708 GT 1 -63313833279101929112025601790490998.8949380815804587751242205720725448 1.0319735680698486748811300823967610 0.0639688219619481421558000446427217 1.0661064931895928724675242788493046 GT 1 -867900514734087543301376204406818577.3339405578432524840628120269854355 0.8197923510335157290540294495960004 0.0844983172762804156721004485404513 1.0882830768313366624031430655196704 GT 1 -5547282394213193169178612268.2935730638544866179762130211629396 1.1699062063688709931896831894379906 0.0383872697228444621900930944388696 1.0391434766478552157555557038418653 GT 1 -3877937383715503260956997832560808085233.5270434440856522741018356506243688 0.0785772352281907611810598122079744 0.0467386560077113994288390215963656 1.0478661799824230232892567102431298 GT 1 -89276574700361427.1844514747898850451637817026894405 0.1888977397218659315963779013496195 0.0211193612782914301859261952103978 1.0213455655172486028777804957562761 GT 1 -53376542.5648527864524668947884029567094979 0.8403673433225314376806862991057063 0.0216837866460074348841019609280331 1.0219223346682559132910103086458793 GT 1 -1013920482789125577142732.0100166481034367819315916932463424 2.0693002124719149268115312892235078 0.0351586163403288071357292474372587 1.0357915604178485851741880590410981 GT 1 -29634733536873058327121755853.4758984111578430866925044428991020 0.3970101543417801376256595822225478 0.0786876759492659898812843830970506 1.0819561861514072691125532624425133 GT 1 -17981645.3832246464197495661809061833414258 1.8297967459869842009748806724242154 0.0505703990399065413102741152325542 1.0518938947538546682381614507735895 GT 1 -1408119845577827282.6905834003238624109473694641867918 0.7672747817421124339322792972718260 0.0441577275761429973737928010634406 1.0451623665469224515054743234098794 GT 1 -2266414021940153638090069.2496521676898342783331457590784242 3.1396343035754769604457348308348490 0.0184922394183112771510421047841180 1.0186653584383080274940073508140187 GT 1 -1182956635855245965999070551.5228507349159925991320891909420094 0.3576693359359018497340077822359233 0.0183905611621418301843997645851474 1.0185617698636774008030619004755123 GT 1 -2639.8596587450590385346911776915340177 0.0552849829335712494508665446187803 0.0977036404496515462930308154715922 1.1028122546231488568220008890622886 GT 1 -30394111685131337028494.0285016196497756220361305895124160 1.5578347725587858363247696641345120 0.0401132054788989575057486250291170 1.0409399238474979833869442455478495 GT 1 -35634.2014996120081443624877025203776203 0.3531240066828108186007020045644160 0.0703388978658726905057220983395991 1.0729351655543383385688747346080528 GT 1 -304351731689554029372337097.8521059086649092373526598698104016 0.7741151157968131283110692321826922 0.0790579715711441410468222231368966 1.0823581888676625883095502779537478 GT 1 -12023231651388558638525467.8997672238524950057565960760558948 0.6098367374360319208023979347974275 0.0104660514648961153429113394238325 1.0105212057507841029087656785998756 GT 1 -18115388468445963879885529672730933.1197165699225563810427078253520988 0.6245054808776946996001199533595457 0.0194618179850618370938546883929911 1.0196536927322455732685878054564767 GT 1 -17759881832378556291694333245.2168766354258914096646979978916955 0.6494514226166017425620300938100232 0.0939474328767246803334189286631897 1.0986579535149491645111014045345679 GT 1 -1.2061268760238467529391455654477432 0.0537082310230184242705420661157244 0.0513612441363676355729854841029204 1.0527272105186768397067417906435728 GT 1 -4860478466754264.8339822633288623951047402097613554 0.1459210406358406084392709884691253 0.0280214092942838441463837940873178 1.0284215007872001467913352093363767 GT 1 -1016870151843580786902455.0501666308139755711455301355839462 5.6680151504800514726390983409396014 0.0757056541876303516219182385703921 1.0787247019946730046372246908737494 LT 1 -2573042617393685415631962.6967230051455624224457784716748428 0.9687108702297590949706067889447670 0.0687220631408984774183542607907454 1.0711975104265512654729302656791366 GT 1 -207877.6670835734717759999724677456454744 4.1421872139077024853492967581226916 0.0633451234714800620963122264047724 1.0654403927377761845810108077656288 LT 1 -509537.5302357149888900247116033780515386 0.8491031121911384893659065266333468 0.0953100729487741243856416476592628 1.1001630160333976194366271802834688 GT 1 -98600878432245302925933467450.9854747295143988275195717373238790 2.1998931529350638831673233062211910 0.0153435476399809621558703488504816 1.0154624779776349306915256841673022 GT 1 -263387173793776731015.3175101297882268110834612502887113 1.8585890584614055058810930269420800 0.0102442963461425292826832278743049 1.0102971302907460062147047083834603 GT 1 -71889312777208337715364259781.3214226623372921159544868108634127 0.0009897988515147254359714603839242 0.0562124901872974221365075424098995 1.0578542337118305330869740522309372 GT 1 -60489776261915925053765919355360163176.6800123674914166844730974329124691 0.6622162572532390085610295256864119 0.0268712853799517647191789156709964 1.0272389191936600017928477904079761 GT 1 -6834534495327150201407436961.4776307664774741526309301562401224 0.8849956783467973221828720052085969 0.0664191114515878281052280071782566 1.0687276689258179827582807224822697 GT 1 -19554902.4514536079651488815792784915203189 5.7316957573542308396632108203315979 0.0931938414486903312682112771888748 1.0978265688507516563550614570252076 LT 1 -28332896599858152783882.0826947916717892162625639667019527 0.7431741637174006085731910335533276 0.0117174863867835424998059129686128 1.0117866771560872607518681608126031 GT 1 -12660987.9076803903885503510436527151839325 1.0465503985066792500660130730911284 0.0460585284060137707700884564083557 1.0471529599462840499941775405429042 GT 1 -480891294616604815.8977970885973304931984457891656929 0.1595858089506138300210238275401349 0.0266039499075774262520052669601152 1.0269642394373049096519006890740799 GT 1 -3387140507290541711717.9080596685624970230616915156858343 0.9925492574351376696722505580585606 0.0944189365524453966664593950825581 1.0991784822558715952313301002977233 GT 1 -218822086756220233025261353654591915002115.0323833276147242942569614112871073 0.3524606681743843059288373466163453 0.0634327967255480510850027518917409 1.0655339996358341324225227518775611 GT 1 -20722345672075666054.4804935248567926733158472427924298 1.3086018446464803287876933783487490 0.0129308632891197997879493418165972 1.0130151946757351005727490253002867 GT 1 -169749436755295566233119049826337703897.6612111566541897496354979361496796 0.6705003077403852069600163584360647 0.0992905238853760793060401275213332 1.1045725194144050923765093536401097 GT 1 -4567778090.9257066011395665798545311759812539 0.3719915507965991240924402592931792 0.0618303141188568284828914711587321 1.0638244445444049938612432983501111 GT 1 -32812060.7538696166051499029554811945305353 3.9721922455482562502206766082015081 0.0089423374634331871106838316369985 1.0089825601324219356240974714749109 GT 1 -2632008348724140197499142021782375.2038392739684497492173496937862685 1.2931012070252031138778567208753143 0.0427927797122918044534446808714186 1.0437353798425316918750618636477927 GT 1 -1.1094891868417159650906181348666592 0.2072947572767694343171470756138844 0.0652625970423309140972392338624078 1.0674896415915766057387215121893837 GT 1 -1470133199539143.0388492869928333107009405861657754 1.4730945407703827171140934931721695 0.0316717336642235011458966949135539 1.0321841310776402201924742541744809 GT 1 -202309992419230641286615945581.1009129361984214642016396491804370 1.7146566764978516607497689402623903 0.0776526171170526721569906833622237 1.0808333553632022435469142636718573 GT 1 -561208175079432.5407263732158797657118163346397449 0.9551064563440842828159108769263819 0.0163513575877474101367482255906276 1.0164865164140679125418344894817210 GT 1 -2297636754110027201334.5544147634954055480342145884712528 0.8222881146451484236391069340761585 0.0027996655888897366719776480662926 1.0028035919826999476316550025278565 GT 1 -119961137245306388652715097952727078.3349021074424044931735798877999929 2.7860090541335430146091724297811995 0.0952638168574915725137438914232887 1.1001118881193788749849084476601508 LT 1 -103241128985925224992625739520035783204.9777846072202829781845566763128334 0.1153689807598304610042159843508639 0.0352664978756203749749366886274912 1.0359033793850198332188239770948213 GT 1 -203318371.3322437461904294790677724735179527 0.1988818824576889501838213603937346 0.0267725413694491561514871207187185 1.0271374536839610108746726294687767 GT 1 -23345748177271470854763235581864147095345100.1009688332426906090303008258368678 0.9993035752776011383865519200327782 0.0263923272727124567450672383070644 1.0267468565599965406476886373024464 GT 1 -14177972096447231122.1736829208857392638686232520926180 1.2086141264635810600484330621583686 0.0539619582255435804715147180877323 1.0554724974465543056646892922618113 GT 1 -51383.5628884686465558708227986053865490 1.8690743313024486727733142176796630 0.0544558046132107004748744255696496 1.0559946491026499315118420446714439 GT 1 -767.9013060951843705780706926634331002 1.9763233825988691917247422409125242 0.0397495761177954163319449933283560 1.0405611703272126653289641766961006 GT 1 -4452391284191056381368562529.1887570508533890750684316091486903 1.1515025559336884603651299148523431 0.0506673455291137993047286245631853 1.0519960102125059106516261847619689 GT 1 -307090519468865218317332.9387951102726250729071139333939736 1.3977419691647407505594407064304079 0.0391890641022261386860387768411471 1.0399776262060200855314233887059725 GT 1 -1157006062.5506749512770165929079460182446340 0.4704486825980757587810367389486403 0.0298706705498662056506929021538191 1.0303258870422388568587306100405686 GT 1 -2.6279188873623702576897630215320313 0.0417590317425550497086377433839636 0.0744646702769054354941733153571399 1.0773829740363543947852862078437381 GT 1 -3615344286982173448484644687.1597853669134734528200135544713205 0.1780443883770935430093205332941128 0.0543727216458868206510162482633955 1.0559067850791798808619298410744003 GT 1 -19976256809552980520017.6805497170990943814065141076190561 1.5539058636179420001224811032112086 0.0830385372658870619056857656619437 1.0866898329805044954090680120595765 GT 1 -845788673830623058913138402224625974849.5586843757280934104274872391710591 0.5303833075649042280504190086171169 0.0385297494442123145441041141087777 1.0392916550915819037655518382854390 GT 1 -54580926190661034311620.7163404465288273684617511576944102 1.7108227468147744513737822926593078 0.0961503845119508580248522452105577 1.1010922869770314316260237771879755 GT 1 -14687705581041462918227289299235.1689022870456591764906616148087595 0.3223732989242355702728458046497050 0.0212912713132804739529562583026048 1.0215211999360833801463583406194270 GT 1 -50090849.6504537327761618191189614088752349 0.3246717462952984817416295729649802 0.0351222927711153268415262376750613 1.0357539139340787171147802871504366 GT 1 -3154.2403102801225244303703488832302698 1.3739718077165346813144410949271456 0.0015803221613046580119738326575121 1.0015815721875077357260472054668998 GT 1 -1127524144777919091337644275557.9104639867947415378353213581703102 0.4983490142376317573202848415568132 0.0925656894479888095655339578273917 1.0971341005297109099812308670577487 GT 1 -511164753111887631798155.0158087070543153162974562288103216 0.0921957043324022532125053520897877 0.0469489430284742164694120167319765 1.0480868017666693582794438395279068 GT 1 -41847228.6309477102080137787325592139366648 0.5014527303652363658249772752576048 0.0658004977745286966756006408505042 1.0680652637493481087974429086242771 GT 1 -3337548955812977285238397899.5238196143133808892440627390282875 0.5089056113300665147032613948765830 0.0621735130607240239542283812673618 1.0641903290282522433832613613052438 GT 1 -1279277812475.3239112922287333445156679563636613 0.7432679105691921560165987934380358 0.0300331822653798925233867359073270 1.0304934165908435434569379669839560 GT 1 -1197363329424013782547742316.0897813854779275394526585030488284 0.6129130403177031012363662036805786 0.0907502730963402026187109097952303 1.0951354954684961179604803266523825 GT 1 -38215.8248860807907577446516562227311625 0.9921304457291735218853668184834810 0.0227423806963664479251707862069542 1.0230049776614073945867618867163380 GT 1 -653935571974235527.5954651173882133798767035097792431 1.1295203425510543448856963591400054 0.0275321284538097621911050857201906 1.0279182410057668936034215104061439 GT 1 -701933456205.0024573455255421521809950090611339 0.0815989685126564088138260011413294 0.0885531749181073605344739839103003 1.0927220243798449368575963935874804 GT 1 -1719968510949.1142103625959718442750997414620671 1.7197346989907091233817559603994015 0.0996791034045923464171295294288207 1.1050040274346290922175155279190201 GT 1 -1244834011954433128731.4021564106578672002953327321656572 0.9624910713055381378457692499433588 0.0984211649508644812175796795763809 1.1036077914110632961503557793253604 GT 1 -135254377720784214323384910.3603230756980887223018964763668462 0.9746959179899537934562147681381559 0.0060988818865249843827732394591192 1.0061175560329824038772442130549155 GT 1 -2.3956162629441141305546391838503978 0.6847407962577212234706144003975067 0.0757884879456131971932956093520653 1.0788143243863855019468511579483707 GT 1 -8428235656396.3719744439022137579071921483376000 0.1406339675832280230338268449400740 0.0529358491434428021733479200074191 1.0543884469535779800882384555142066 GT 1 -1451480218014275697523202460338.5110983308271532680722266381044812 1.5976691737250677646869649777579984 0.0110068520948795074971688839191968 1.0110678756896740004822891785264064 GT 1 -56663980.9756611049645153361921846564690630 0.8687757719159153244430445743390457 0.0276278213300818673384698033469462 1.0280166479429735758920938149687511 GT 1 -13832356989866845797142755994615.6988605668929003572008763611704511 1.3534497869046063669967137112420142 0.0150428297082342063952186765336632 1.0151571206927086209834114838656176 GT 1 -1556012670754071382054987898870734775064.7115765846889445144084326606944680 1.6403170037093379077583946658051973 0.0475667693052466966767759734958623 1.0487352734464643331243209757559073 GT 1 -3620034478082605517252267879.3205065990698984796960151096556584 0.4101917073223690382529992421645696 0.0663050752454163707920504758619881 1.0686055271345509365937239739205591 GT 1 -677260014763652497193584566908.8568606222880395763096227493690627 0.7088397017546262931878335908587716 0.0788085265054270361800888655821007 1.0820873669462532328768645645668424 GT 1 -16525006331135315234891.7263059721949009727755989099331037 2.5443040364192027685534736260263302 0.0600337414833726179829909288892816 1.0619112995574126567711354089871086 GT 1 -648.7504166217808055987946580162318352 4.9569354944016313467903614813865643 0.0640456143280938059838852004561171 1.0661885369485592072672283770372322 LT 1 -199.9872005778007809084437099612286926 0.3530668030574793199821395051400320 0.0282331686084315036231491294987816 1.0286393886984235705665968042881499 GT 1 -35842755052206622162448507590.7347252040791308952144171282300794 0.8676611546443206492321243281817139 0.0133832285253153857593639843694993 1.0134735910621516603277828572654413 GT 1 -6022741311582976462666333147.9018936281779116647378451892759491 0.4201737352085823289969070369487427 0.0650524433038118281295905116081389 1.0672648403614880747368760116624931 GT 1 -59267320447173923.1495292584619531442337771353846044 0.1263594273832946822157265736025851 0.0617335607828014404774302224865171 1.0637213199724070396824338399368555 GT 1 -31524889772534352873.0504592129979051121610230245493436 1.3417388491580879154266311929317856 0.0375198158077787065242962639193792 1.0382418008843681189810671699599551 GT 1 -1130728606720650176468274.1689985156466024599322813861283538 0.0051949173732641892161234501742930 0.0442006712276388242691579598695346 1.0452072951062048802470431423239371 GT 1 -5803523107878704165878.4716395583737946745015702394298940 1.8990769894159861443461285515146871 0.0748373878068105528721082318100679 1.0777857599545774662660759363712143 GT 1 -5135892412771952408915860759338817704123.3013471870075835624034079370361262 2.2017926196716059691231574169406803 0.0614966417708777815439674318453103 1.0634688446677590867592714550427857 GT 1 -1657760485332.1979215095186369414987846163711020 0.3284193908995305063173138301031414 0.0556694306172365549118335691408153 1.0572789947042498942307155796227377 GT 1 -759831583286852706237631096792722590238.7911361919624336154020993697953574 1.6029618935394574785252333818346785 0.0027354065498994739079799332716685 1.0027391546109368790218737589249649 GT 1 -1399372733142571510439218911591338801593417.0372149662726857361856511774894323 2.6779845842710700637260657207563618 0.0781146469093072378572988626278616 1.0846420520931647238842292961768986 LT 2 -504905105290988829501830432025642721762.2886089684680058082950790935422254 0.2172207069128802234663967010647364 0.0316091242328936336622383511441463 1.0321194759296731310278358091871139 GT 1 -74916148973500707509417985835366015425100.7360610171189575675730566395578584 1.4307707217817003697204930355515397 0.0641390837519303700965348897697464 1.0662884072977527191794401322736284 GT 1 -95162206978966736785436848562877368929.7020796639944064671986124720241875 1.6259681513609096105147164216841233 0.0444237286105762993257387563091927 1.0454406949507264817694141222094856 GT 1 -5335918913896776508201254094319315.9794389338625217491822517738585145 0.6544175789165431267794243176693812 0.0235252094988413785571858006402041 1.0238063451776957441637617162750344 GT 1 -1427028408101483478197722468028296355990214.7715216006388274278835457856088569 1.1835753843018432577017269918230843 0.0923830705161494042014690975776283 1.0969328732272221705121992730712140 GT 1 -40264972.5435760654632863925863656397419463 1.0054019913004169283814554767092599 0.0468249469818095274472516951059060 1.0479567059231702433604445345869810 GT 1 -33363887128622742677857832075.1662037033123429115976433231212801 1.2852334067920273844591437699811148 0.0626819412674940267668541584295594 1.0647326106570503958335273366597279 GT 1 -282433870677134220.9231809673066515858779917446739727 0.1542052331831027737276616306004240 0.0792183191814739614772712470333463 1.0825323166262724805704218511002191 GT 1 -46559851542555.1278622658814121051373682699663297 0.5002136669450007181709704254137336 0.0445401288670857772800611924215409 1.0455625139514909473305730143139272 GT 1 -117962479657124438332302722989625.8287598602408431892833135923870422 2.1812242763257640734416268946925148 0.0636194556292116004442857272002743 1.0657333206307910976125297311590886 GT 1 -111.3414114187827126783251526444674807 0.8580195524326800153417156786659515 0.0695839347198136454696416342692680 1.0721234108586284197783768494418817 GT 1 -18254178043165045766875025331815279.4018727768277392412473156618669368 1.2632349603938296450873498168225401 0.0632782418624237467815734408965367 1.0653689905350934857914494860923078 GT 1 -175533579.2079996187960684876667253106702359 0.7719626243851058183465374458171954 0.0338006937366780851783962521137160 1.0343851448673442532075038441907890 GT 1 -133.0917617895622205055174235358024114 3.8621731482773134180878871478187027 0.0772111133218617484014545311535782 1.0803547957999868723469239298813139 LT 1 -6507256634840170.8700153261642410171051611506148832 1.0908690809532432663034406233915965 0.0646960459006795980270786053913831 1.0668837179237955542732436561243943 GT 1 -578900533423625680196889331.1969451373067162512730989843941549 0.5562599907306166917415499292399662 0.0963649939227119307646263020186313 1.1013297544599732385547309604741346 GT 1 -176376795881658884.6382127682407629148891744789156609 0.9139109739666343457893816503467452 0.0944063270642526790094961488277185 1.0991645581568439100109618772995685 GT 1 -60813605759784450588876700833986133225.4446494239142969272471441231676802 0.6886260504181411328926984831411518 0.0914368735798287315129784719245400 1.0958909093328923504645759550384378 GT 1 -39547171670.1234473903167931329897471089418447 0.2838692380659721167996406725773505 0.0167221211527933681646188617768039 1.0168635142992760051965438626114333 GT 1 -1653401.0407722809224156194637927449146810 0.0533130757935458439875674092505457 0.0217573349085913475168741363653492 1.0219975159095963155181373618751233 GT 1 -462.4410449608384619528590568829985035 1.8342791765300405946173920456204207 0.0080157396541715806312913311952297 1.0080480384100063926475127622169278 GT 1 -3745983.3910921660027272473626749497030627 0.6019602588083654301802801941046960 0.0699818325355570530734356254844045 1.0725511581176360924333273341412582 GT 1 -5661656.4171241624894860693958908128508375 0.4974066749654585502169570373931807 0.0905206399584201764017172571833350 1.0948829750235452273701782818905013 GT 1 -11182313433981257452257593737630776998022.3332665638958626490017277959185651 0.1377290414744623079949863654722172 0.0958733033062997820239465885754262 1.1007857772003784547768135394083449 GT 1 -346933254.5478982290171309223299690108493740 0.4906883674157022295207683288398932 0.0998901275891235203718832782446313 1.1052384426525093871871282490670845 GT 1 -42717015151448321930287555371867083233736.8425060775242521266242579240414474 0.6607606061630065618148735689905244 0.0838692677729691251004670494863494 1.0875962037197794455279714618843252 GT 1 -1393773430294306869667719533039588.6204591728229089776626936839181929 3.1614111089274214079618517932378724 0.0708533550312089395806503480157841 1.0734887001296852460431730862914077 LT 1 -14085159888927559.3788905841326508803549668207921350 1.2188883949074095451463030713171873 0.0974862979552062230505814783201647 1.1025714065692501994577284109084388 GT 1 -3878613506413662.0847650870688150281840906462457418 0.3490240323771252458842580699539533 0.0501029694400195379764876657539362 1.0514016891462812292695916891006976 GT 1 -6129114568157712202596990366706738631751.5390142968792027949297095047453137 0.1699736481367921026117577194359273 0.0265881279567040167231469883297688 1.0269479851877779192078391894149638 GT 1 -3858351655656.8990060491882061268589019355483839 0.6946990278213222297410394275102536 0.0209354882166329923868779190559748 1.0211577430318724923783435866203808 GT 1 -4472460806653915566.3890452615073815339970196205074915 0.2034428736885537864885218730964215 0.0017647407202815502315892716281356 1.0017662997095977321319463911795343 GT 1 -3865886000530108540089174594244131.7152420335115626164633589270470935 0.4222867750275545542870605233057035 0.0740136285171498068368482930277392 1.0768957620653750192372421088414831 GT 1 -75286009.9937442548537389970311758133160490 2.4604908897484718347848848419524296 0.0252458642695461265905457249821489 1.0255700082656932524043462313339042 GT 1 -3275026944798637941989036176514213.4926461809915079790619795782351102 0.4385229760577170602561118772232936 0.0577134332554065002236512722680601 1.0594458396870306787184168632678653 GT 1 -1357253734101498391848.7399784941488721152550956529867456 2.1171867410805411208081775356613043 0.0752588883058884255326257921344225 1.0782414598928275529663941686128874 GT 1 -1664312918508732552855.7088978684627279835973782253742627 1.1924251512975446590875442355619462 0.0483514484485510157471730230900171 1.0495594808886459391440533040298737 GT 1 -16653801706055903751584199521306.3986388045565363026064714576780666 2.0783947537944363420522360939421017 0.0941280170791839093229140257005893 1.0988572821272280227821472752267670 GT 1 -233229.1733389145633435409804927108852514 0.4293492514078531348449806003516334 0.0228188330544262165643816612807914 1.0230832122509342268408445140591054 GT 1 -32008820.5719663136751824478810630135415983 0.8038486550960193461376589200607970 0.0930147582651534704060883132717593 1.0976291005155389803622439714783393 GT 1 -4502354713827076106462277256840022368500.7207042886578087808396252582405145 0.8929892143979143277622772541140866 0.0680295084206973696039042913769360 1.0704541261933764694235875143707597 GT 1 -36414481517676296586938347190595943643.4749305638021948462945570287451565 0.6571907675600968693870412265625075 0.0514420584748032490416187670064734 1.0528124039396813348325802156306434 GT 1 -6497172202315878623058805169144210838059.7692953512057940424912406905560931 2.4219074037819211677088317027581344 0.0235865981886368207177456527882658 1.0238692148187303072556202062605398 GT 1 -16278807950568898976972926427.0917842168669923733671400247294315 0.5228443344940127280981843971974636 0.0489541230633094329305667887123142 1.0501929768677061195844068757582772 GT 1 -11871870386902227027035435729898.0831091865241512222420757861708387 1.2895829925116013920399549593788688 0.0063360866831169897190435073758467 1.0063562448748236960543650119637061 GT 1 -168106748.8632269162970701414062749599875649 0.2019566660507456309900529063977449 0.0265050192591097429699587133469874 1.0268626100733743671019526291953592 GT 1 -15251606008517716731802392460.5999877834680810844844019741131209 0.1128776599020259155505596331958341 0.0451146373889099967816921546713909 1.0461639848573733658961643793623955 GT 1 -3626405097008789187390.5622345258832247023648551161281534 2.8345334841893865281433159987929834 0.0893877031294485093502679446637739 1.0936380520319024067473975995955226 LT 1 -107811863631622689713956843.2691940111511322386565253018039591 1.2732637852018877270164503101553982 0.0845908880029337515484715645578899 1.0883841966969239234712302920027890 GT 1 -85668522834913399940881271.2537331240767995848571099241762555 1.8030416067370528915823930927525584 0.0211096075852617369486118705092673 1.0213356014378188320613712070217526 GT 1 -41.0092127629107405462304437132713945 0.3318297274714965399740082221841147 0.0580852165171291708141176827349805 1.0598404718918136200830046555660670 GT 1 -23633657654.1805401771436383766739851693222477 0.8883239793745643211061217938060934 0.0562302522529834465280390478488943 1.0578730538727717825254849526406157 GT 1 -13443623061534138.0319800186247364652950356677573627 1.1075645408806155411770470089952438 0.0357503669293469818924988361976172 1.0364050624272889077318221661460874 GT 1 -61362.8484472508563315083312096240935613 0.2187529905034972800804794977718800 0.0223345922853619160595018551271450 1.0225877863845302793024462141781390 GT 1 -14884643444133890939976272404853410988084.4496208177826889807863829056360199 0.8957423923503991090252543771382718 0.0933023737505306860319820087396592 1.0979462623445061805992534574963668 GT 1 -22648618079657361705702071364982792082785505.9815618640122312166727183725297331 0.8492275229832873028109796160727629 0.0769459316408467965593649676247498 1.0800674672576364280910794213920952 GT 1 -110746851384149586490.2459460067637241129543549959090376 0.3519320193330762644551224222310850 0.0058824355180721690230439747660975 1.0058998051927081251416800601005991 GT 1 -3449316932121.8385734910074176030636172073010070 2.3272720473209877093634617492236897 0.0924168267043419365330905339431599 1.1016716628810988911187911235580727 GT 2 -3603424606647.4171829433487627471120640314313758 1.6675703791915408272539951368826096 0.0294245209584913979271405425941186 1.0298661060417669920120971292750027 GT 1 -9973316433336414313321892451419561118282018.4558522991967033018778963357144248 0.2362317364531740028260059498887480 0.0634722804091837140055681406853026 1.0655761584000905780074113532235482 GT 1 -820746350765770819825455.7127832602778227361712185461937806 0.2983277752731265593732390597326957 0.0575681087176403680787975312342137 1.0592916261625276353021064759819129 GT 1 -388627704482938975563267.1178974949194289900716816247536285 0.2613574605738575968542851457745886 0.0297731042102786405027511423415823 1.0302253216528524498866047209329127 GT 1 -1003374371727394282903611290298.4336350670092925229849478576989782 0.2633263765223273776295066317101103 0.0592993513859553874164688296009729 1.0611303105029864791906367254163096 GT 1 -51.8011022418514098853514143035835209 0.0588625489489527090915525042353697 0.0867041416832415300948503635054603 1.0906954001499724558051961752395755 GT 1 -217142022702242973.5446689697084929105173481497573708 1.2055332999877977619385159173762253 0.0494159273577866886926838052631526 1.0506786700002293387265265615401036 GT 1 -5079280.4728009542512218125035608092667952 0.5195907687665947008848633895954628 0.0030224770725064288362356464466941 1.0030270539810607476232216471498561 GT 1 -51613363829525.0635292304045422145600372759310706 2.3477614052466040963494748137290768 0.0943791203213615288817002091551028 1.1040483417100515436783963024511982 GT 2 -152182363063854488377134350780964262.5058368784289000764522445065314880 0.8384401106373063139928870338436341 0.0765357003047427639153552700653909 1.0796231377021329401381936141102134 GT 1 -7467858398271.2560689121933695728281083588206827 0.6672415412946817162551882220951062 0.0861719908594888119079757409809192 1.0901128990417797324745198950091854 GT 1 -143583083656442272281.1616372273608108218389424021579043 0.6735456503794241070909519801292778 0.0359636261019010532980903931517942 1.0366262528239964912771237627795633 GT 1 -2762388775650.8096375227005925727008290786456489 0.1304754441371601838628493283145674 0.0183542775402846360471469385588537 1.0185248071472902509691590659639560 GT 1 -219160951809130738935225498727509.3333713641879696035408688960223917 0.3094144251595091493997123177715954 0.0853878260815462684488456483964828 1.0892551571989945294619387298212190 GT 1 -34626449673642720.7886497721498261353932501003168903 0.7495715788046802855632271249326911 0.0927579310985222802560492412893732 1.0973459748379118268499969118615224 GT 1 -633.0469973084950819634410929804810273 0.5417408636784117352846084408200061 0.0010132129620907977080495588625852 1.0010137266093294097175266781226487 GT 1 -84151306907877556598309413598583962.4121324060121988608061700769676485 0.5538108183540232347086065896996594 0.0753918972669066841025599594309291 1.0783853039653369163864805537121612 GT 1 -134829479515023383.2525003153237523297187884434476369 2.1727330745463073162116223452306320 0.0027613287408313637111629603655713 1.0027651482419246206702386510205706 GT 1 -187889600824253008086818080346791.7391513338168894044037913371590031 0.5485351481383285144340428582672510 0.0105383949399492657951249444065974 1.0105943170571273150525231199503110 GT 1 -7538597098976528547488960485705810458.4895113530299449635158371812642349 0.5472044594676801924740370382206473 0.0264174897714713302179289688380325 1.0267727014918173016462033963882566 GT 1 -48340079938652086587012.6114648998533381584557763389577819 0.4476081797341452233523015726971784 0.0197986090661491564158755092998866 1.0199972274770388810177893137388041 GT 1 -3541039843327881082.1781444877681371057655793575260702 0.1347762616204329736513961794364317 0.0135709061522688791615405371499127 1.0136638325875191997793332413160020 GT 1 -18879254047822681144864794014099368497.8065690223650972165121447974084129 4.0557596683401086476050425182605352 0.0624865071992445073258040176530920 1.0645241289203337681840622433854829 LT 1 -42148234617539078147934417.1774565460185973722528702378924119 0.9538355832702838021936246599158875 0.0040889709888081355595578561687965 1.0040973536895654049293207347420533 GT 1 -6038324043587753037751.1176188315840673618976293041053493 0.3335761853568896235207704970990087 0.0470296487308772084435801488416821 1.0481714867571970558347503796937923 GT 1 -189146787034749459591204205.8452380707759429043318474411803553 0.1757123076963101226695065839877591 0.0541878011610043952133574454338833 1.0557112509500667165265588657231475 GT 1 -29593125856646983609495643144.1713444833913422876691708124458945 0.0324718514133789947900764379596733 0.0638848520583208753585827981677000 1.0660167887658324789531350360669287 GT 1 -10541691.3831476155595652840992511834048839 2.4273853546998604121971598348758271 0.0902463438302302763522043778891423 1.0990542464723342554499023895067544 LT 2 -1.6539962535527056972269746329886728 1.1476099552120050500054726770769183 0.0436299616149563906709218208964615 1.0446103713823644422258697187923020 GT 1 -431.9492696124584387553326625258028120 1.2944772067555481193939190355952812 0.0278107922348840683685994932374681 1.0282048352705823242502799149090815 GT 1 -16098025114166608268453091.7998213282158869683075803083285237 0.9254232719610731061753165100649078 0.0528821362969221480382510376048559 1.0543317334528455403051560997991501 GT 1 -18236407677974899104622711664840.6746681996278470847482573701216110 3.1936742418078147911440782382014956 0.0465641193111406505936261399233925 1.0476831024651339978308005925325277 LT 1 -144933790.9824691018261967189543868488652808 2.2916960773171859084292778267990769 0.0442977624377652264987030132669763 1.0453088814317615747856658680828064 GT 1 -180775.5882822403331887158144964629586063 0.1630344855405891749469734914507347 0.0446169439303610287797238419462450 1.0456429130907640905288660275578428 GT 1 -562941144598329525380472694396.9361947989425345111665538193236004 0.0368318851795241703758002756308769 0.0338573045397770745640201506349182 1.0344437378111033720773955678060949 GT 1 -3288312047585951387685883761062615194.0626017388769901890664945410092507 0.3667647659963691398748673034484651 0.0088835631469835607501845350946283 1.0089232572523318859722378628252591 GT 1 -1414244057072492902909568034.5250862968651274129329394674995104 0.0671455100025693845850248516382878 0.0763340534201214647790104790058014 1.0794048023835175026768332338766713 GT 1 -4092254651915018481112187.6903951443523876177274809857214582 1.5729079861679691442472471877311331 0.0579716539889032633752974877039809 1.0597199135516115389633529394449641 GT 1 -1274512.9703541645643260114428204776154841 0.1823305566057514286155963645457599 0.0318934814594112346132739661098296 1.0324131579448385132133028625676482 GT 1 -28743121493895820458363654972203.4308044656096380436109714704887258 1.9206966491587808430750938107587737 0.0985462021196676380285311949910585 1.1037464879235057198154622404597387 GT 1 -710170136754300562534378329920636193.9610857734267305303878808171233397 0.6289570910655172270488714912811164 0.0860501904330355750139127608157039 1.0899796219821865029074163938029225 GT 1 -1772578704903038728757031286798854066103.9841402503410494003775819486850792 0.1653119466360691915740405019067797 0.0792245016282059774999915385164476 1.0825390309947448811876571638677930 GT 1 -14659085591294046355984874588175374.1975556305149319726257746526425707 0.3403020997531520352179477084071474 0.0878696022305158294808123713762623 1.0919723191180738176078777484645646 GT 1 -9035.8279635255457374667410798070582321 0.5542824967901682655754638747239973 0.0839346623891612520511324134364150 1.0876675875823435462522701544136184 GT 1 -27168982817010870.8706831479309980081593267123888334 4.2503211706753414264973907072975981 0.0221006684835867246720820971433995 1.0223485472550879077933590990925438 LT 1 -1268391477263904478.5436206778514069657442093570435278 0.1329426710975488869830257588146516 0.0589305533522686298146021698509660 1.0607383412190264264578849684802813 GT 1 -5423487103222941117559.3299616639670295190844047985465647 0.1190406790960623334359013460689469 0.0067171610784458387338162280150705 1.0067398227433014437217217078096613 GT 1 -1059163492629768106799018705011001243565.1983354829368699452479864378180317 0.3152845893656605398558208007330795 0.0932850153807756966083107322470732 1.0979271179207258647991941998944228 GT 1 -14593247.6377386287564537416887479384498117 0.9304710328550618837704366936502707 0.0584541760691112108258165336045443 1.0602322608734884054016937232434670 GT 1 -21169074248369294.8730627771723101665472450895494079 0.0756135468799045451923911913822777 0.0682672509022601210240865510957744 1.0707092553122870067216202335980135 GT 1 -81.2593203539130657213704342448506322 0.1010133255683962656738774448424352 0.0044065198875242469843429760279199 1.0044162572119551751626434179881203 GT 1 -112.5955643297638959001470560679386895 1.0336517124004675036868805081805929 0.0393072504141180754843628841487010 1.0401006406066000425454123330484401 GT 1 -3682533654.9813310193677184139042290451518924 0.3754284284645862124942813409666716 0.0852106459660511546773370021058185 1.0890614543805133170046149776721947 GT 1 -13887046815138.2005094149363114779915299673077257 0.2181283212863627500581164412107279 0.0610923073823908861662938839504474 1.0630381085276303652283235922828718 GT 1 -3095667019028990509933623160.0330570649174789861378658047476533 0.8470994733776930936157001309168996 0.0280355410243806423478465123954311 1.0284360400301058108367531114843064 GT 1 -27261887770811576448878649215497.3726985807160906694888825160772441 1.2011462202513908654999242963740829 0.0563398693437020143032520075484256 1.0579892087478175722140384891797377 GT 1 -913387627869133761041314579272.7412750041944151468747871744580311 1.9537542741233225000653592586402458 0.0575217116674043267079386757635999 1.0592423961771976288953933291230139 GT 1 -4198129380575.5767803451065076863453329581853952 0.8426189096031091342693846275870521 0.0920957686473801782503042335812933 1.0966163780220271067851082177401420 GT 1 -5635439367985.2264470784500218699824456520987013 3.6147081758827002454220056930655185 0.0374618704599401395645628721968080 1.0381815984982996748635556398265451 LT 1 -34588904132888505677910140699810852.2761068908150481646066192540378712 0.2692652866648408835546442525344985 0.0382228499580545676165458657808949 1.0389725079151268104391370228474234 GT 1 -1165730793138615333541180733182082.4477968157665050888944575664044247 0.1223782945462789998192046999398707 0.0696067659657820270456339409313882 1.0721479499083611776601302477122460 GT 1 -23453520797979909385924027332905520009.3946982447189054700722229820857462 1.6535420372719266945490865510006415 0.0479146491851036221575416255672815 1.0491005939921427590644470306227657 GT 1 -4904091046830354288533864675206737647.5030063729275087102058621932969456 0.9272710485566908502671018004557928 0.0144788885217292216970991692034709 1.0145847305201100810574038375811106 GT 1 -121080616989436872444606655255.0247061092029013991297771919381498 0.9177393456942298598965422664736809 0.0099779660432523800830221471697326 1.0100280795792068584964840612901168 GT 1 -41944390013.6839592367704470151695345290139898 1.3374609239511368484527016675571397 0.0693788818061182588710325926711585 1.0719030467344228052129320901069091 GT 1 -3127720934633988083069222974544228067.9468444517445815989859073370864257 1.0922771527573778112258889608411940 0.0157473767946750056101711170738044 1.0158726839799011848083671137067517 GT 1 -494221.2914930288771900149043917367056541 1.2053284819302864365536231588900014 0.0904643794492404401315420940407588 1.0948211168092941764808048983206170 GT 1 -743747821199951779128678651329195028071.6095112643876525003605562660348886 0.4198361540800824026367059517979656 0.0253623604429770420913359439413932 1.0256895288002994029106134594407855 GT 1 -40918795659715012626.8417804749267638247085383532803358 0.9244071606374264827933431727930264 0.0169433209755532960671173791915050 1.0170885012658199199559418811766500 GT 1 -50414.0062674911177732903861365154576105 0.2938347603873681834987248125265819 0.0894065833528550749591736532447035 1.0936587857944500482594165683149808 GT 1 -229499659545208983484.6439495612833299231409139620670588 0.1915632601085904140539965126152010 0.0991477170828602495113248076884794 1.1044139827424325615500317250658955 GT 1 -764437215284306154179678593733387561.9517729724703526829714553796132671 0.9607091022272604759431543520111590 0.0574277820437001295904505583400345 1.0591427387691137936004709794595631 GT 1 -1439118167.3978534469047601688029676230553406 3.9469798917475366343373177163531255 0.0829090295877472444696330863136304 1.0865486072706888900836910858229244 LT 1 -2237158416262169973015535586151959.4931824043787152170797323474663484 0.5805542250227850612193115972773975 0.0012591030274780670791810952798604 1.0012598963636929088644684308779167 GT 1 -337444263687007136148.5073411582933641171294952620602524 0.7260215436980375908081369359114165 0.0503907589808859066165926366758968 1.0517047042480204293223482718765317 GT 1 -1.2122894236246590305223962687279039 1.1808651021456185236943954444603791 0.0998433599329183507568190051927323 1.1051864862828368575394722390426227 GT 1 -18573679815501586532945579006964520017840455.6932394405303725167131457302809063 0.6338353938651527238593966468669642 0.0691960991177584562934530079757322 1.0717066566708165877114668229784439 GT 1 -39725616.2417424523108919666618824837186765 0.7300615466474945450349521550589490 0.0992860716846371196520856402748521 1.1045675764335067427170569628657649 GT 1 -10072131198238906862748257349153208451793.7580872419464705892236959144517645 1.9158346064811473535281449090894382 0.0697965652945472447312558181562287 1.0723519697613604157753503497838148 GT 1 -11486819430.0140072693268662400688411255479347 0.4396545205023314447734118826727628 0.0417921913564304223797968234886159 1.0426906052826954257557913765880823 GT 1 -69231847011278217731416706256.1624670886438938684872740350417615 0.6740504700849402734751624615503903 0.0837866988967870356558340850732029 1.0875060799496401559429950149955343 GT 1 -8137068632235321548391074139116.0264112497036886242335624340594766 1.9052702160831295409959266697524757 0.0098708434208471415792003724359828 1.0099198831717590519498086365437868 GT 1 -63577506331296028129231687380237264.9649110052126940726197812538837528 0.6020596785758080872139448132782571 0.0057012868331108035540757245037885 1.0057176012070550654375576105982984 GT 1 -5529114175836527291295037818137543033186935.1751767987189497704529719613091286 1.7274673158956262381452670499267109 0.0510326817398539828797880033489445 1.0523809190472514654223044581107119 GT 1 -126299139166406594837111838249217.5019346053533706048288450715727452 0.1289314228541334058358815329144073 0.0206134445894625428015963069994740 1.0208288671814949319613611666504158 GT 1 -9966135628830733290998064322.3711902852606867703855700962846271 0.8930531917371690094283759646354291 0.0679722550177853921503620560024607 1.0703926954454208311426031421229537 GT 1 -33704942611728879295587747946360941.5595853775778457749698416080052783 2.7477107451824949016439151581585275 0.0373138332445461170550697321546147 1.0380278115177690058531883742116009 GT 1 -15387053273501588959.0125812279493043739702772122750654 0.0857503386551507907610731323791681 0.0558368866777481644546514576248735 1.0574563382267451727062491203255671 GT 1 -4.2027489714837311959346655177201456 0.5623688473282548504023896541606307 0.0613122475979327674278550193579622 1.0632723871280937944051199398633163 GT 1 -389027867856094542463636531050252.1586620226187280677414204248740033 1.5025713249332638702392725169512832 0.0328058350209790147114306253229357 1.0333560125998545219866456085209901 GT 1 -57287118100.0809616379979168445227653806052436 0.1670080167262111337978889885701261 0.0627644116025729376037891023106822 1.0648205999608063980723691370074166 GT 1 -2738631368331042361182214649221511.7098535539623042205174991370782626 0.3312298357232397132575328609363382 0.0360337038047990886692428119778601 1.0366989474359033354513826189773932 GT 1 -341794403.8420166897956541582906882042299469 0.5022848986303002844396938805778722 0.0635338311193538863313569175819233 1.0656418828112284703476686328789718 GT 1 -6.7459025846215315969150382213285849 0.6853096238051510012085617510113342 0.0708346161617716600566913214933102 1.0734685325053601272315613912151602 GT 1 -116751053.6788606080598880395068844380599110 0.4230745303179047556455937922812412 0.0180082025513194820614892394292852 1.0181723235661408512616290087279267 GT 1 -61897691917712246043611155336107218371.0051660475560003406335408004566202 0.0261541069146465043152642998968915 0.0162117106767329196198993136569576 1.0163445582053991140503505591195668 GT 1 -3984441752933379717047696168.6677193095234761410968185371422533 1.5014165444287624305968442184744637 0.0831502673488032934811268126522976 1.0868116885819269855747424187262418 GT 1 -6166834629634250622928248281799794198228146.2355251852739928895276489346223465 1.0950097430454559400597348440913928 0.0119826652975322677343288324965845 1.0120550361427725706463273317723981 GT 1 -26.2318683648690476815716693643528016 0.5456995070948857140471037349886802 0.0217416123492332811482062185559362 1.0219814437900987374016338099747360 GT 1 -229495.5785493883494805258111680309392619 0.2261326118961614880056013819911942 0.0117698892395709568596318294453200 1.0118397027246097985062734119524807 GT 1 -8313361153295326745243855.6198435625968894293985768666712661 1.4240909164822472766207416098693909 0.0163992043152218570429880175788622 1.0165351596888426301648901811771888 GT 1 -259286613796683075005876319606314622.6820683564081728410180229214840540 1.4247369396128840905835148135722112 0.0086574125915460078364048037901678 1.0086951056954513715565967576027747 GT 1 -678766557811695.1600221645009892642781855000564220 0.2935882395221094409301343621369264 0.0987681688573101535377053618775182 1.1039927502059476987488106081973529 GT 1 -4404863885276448544190706005805.3817753357229340838830258683913851 0.0888080504961926186279678312978290 0.0785814097657313465684829574357759 1.0818408506101964958383380792809441 GT 1 -93596353270078547285473.1985934393085034379049247997006116 0.2153354547372973162859958098466244 0.0899108656605595521331863959984178 1.0942127344444511369555727227253112 GT 1 -1208957701375.7695387421912443231698510236288252 1.5674441676562373785878605501102095 0.0980480865377510207252981537461516 1.1031940713580585215771068476324902 GT 1 -576031776098544608702939.1475162572188329597869091786922180 0.8724965759563442210130895970787339 0.0315329437872198972224844955731402 1.0320408119817860008455812257379884 GT 1 -10381.3424858923651461101546969992572039 0.7605584018509851893409050568217194 0.0862100884931155473144039725565485 1.0901545900683360472310823496632478 GT 1 -1693549890175773638790.7237662903570693669416738189817545 1.5540022912193417809664987435723481 0.0239380897130164555055539258718246 1.0242292619097216751475151847592646 GT 1 -21658548111793017678412442605.9829731303513309474878205935311186 0.2559752374138654091466154631086283 0.0366599656833701514426107431350414 1.0373488305299379549897364347295885 GT 1 -156776151797425636853644271.7615420796478180249924807059959316 0.4286862163114627931037716939055074 0.0439982416799980744309158441987268 1.0449955266855632398158563263191446 GT 1 -1740311468293053217193494572400120453396362.6693793996183141023761943362920837 0.3488009201401489292442072922209925 0.0921855577296860805371869935582503 1.0967152799980693916995024700411392 GT 1 -268632637262844142614354814513697837710891.8505608371301146764763455572535577 1.9416859593830373733666758058603947 0.0928021065004895722698248513064234 1.0973946679916026930718539983597900 GT 1 -11109152.1737725047064621546450661844025148 0.1862506571191092491060790070006029 0.0756898848168140847818184923549244 1.0787076411564576117824228397144878 GT 1 -185000406605430001336835305278839.3020019648076788534930650142782574 0.1727509662265919723884169605495797 0.0028676712134575417572043472742020 1.0028717908602985577462843951525980 GT 1 -49491420101163857.0483655862610527192663337486907343 0.1708517917039108801617660244552020 0.0302255941101252956817294234085433 1.0306918057811469345320940617705390 GT 1 -417.4238628066069908823825737599557223 4.4007389427595850597860148524765178 0.0991551445619175484160133307009890 1.1044222277231224033086385701938625 LT 1 -4.6782035355187967734604316387432449 0.7883561280899427448400959020475342 0.0094916530781228391410691007950362 1.0095369859008684390711807593866432 GT 1 -10854327979056498253792742749466985.3074382819806155752687203534895559 3.5111822738372006569131605489683717 0.0790512719103668178276941958404887 1.0823509141031265890605096291745995 LT 1 -351187871720829210051054505263.5719031455475868495109129931995946 0.3058752304260358172483640857906450 0.0718366412324468914835443265024508 1.0745475285332633574616920475592266 GT 1 -19968925042433325416.2754338037385072523539002199232513 4.4492209339173167312819092826403624 0.0213212086027834544104636355107121 1.0215517889627305215644544779968588 LT 1 -8985184165149348454.4384460921744544795605527488988136 0.3617373458516074980452400374561563 0.0493281249435837888480596917169899 1.0505863074602235082899251679751089 GT 1 -1398676606562727040950257956914959255284.8157490181602464387881774526875273 3.2965505770490361486734438011620965 0.0103507648589062855230946276624510 1.0104047065736780378366581240815006 GT 1 -249631902210977719530.7641403905409311858979849097440877 0.9777084905203145490498570181102274 0.0546266697104958865377507799492269 1.0561753709960483430835649789308738 GT 1 -109960508557600621150678537097090826395.1155921314062865156165050433413570 1.8629105290515079376331731343553476 0.0502245717502277499345781368807012 1.0515297136484109212722734549098205 GT 1 -62.6622722050933759061707794386596011 0.8607814594274722883448389900552773 0.0052030963381586342733853671854582 1.0052166795810110505417000515046486 GT 1 -130397741598282235545453.5610621775603682039449732681707900 0.8121380172865828275246283457642224 0.0795655753099273331914569472748846 1.0829095196406625926555027327482547 GT 1 -27974043437666734753052138359622810.9246068752517319546654603991924984 1.2997108277787037799342469301596603 0.0870126276993667025229211804997621 1.0910332294788381766162312370986926 GT 1 -11340318977066751977168078869.4777689838152629031663966982068113 1.4816164634832361701128851382508032 0.0914755933056750213640299216476152 1.0959335266808698410372247901994511 GT 1 -1516887145009088609479075908004482437.6036539606306482042298074385091215 1.4805669172854045953768607911870131 0.0219641220491974207354574391001954 1.0222089245989281227057881065369718 GT 1 -4994625.3206414068170127428185118168675830 0.2470079330427901990199574429967646 0.0501132245929288993822593893245159 1.0514124852725322800400591786839249 GT 1 -209036449481729854236640960613.5793481717452801969279695599620848 1.0596800633322009849326656376412579 0.0006068618135735171942398879629714 1.0006070460287364395781270923405587 GT 1 -23428672485734729223111915228942226.0235607622910145613941784436039221 0.3061399611256048661706291642593754 0.0264138345880012012308050299812133 1.0267689471345129136264937430467585 GT 1 -7500782603868563946466788040744167106406358.3583424529632503170008894602314869 0.2060897690015252737221772743051073 0.0995202424027473014574410717173941 1.1048275936890201282430308294451373 GT 1 -666538332385041.6124719834850975840641479435030607 1.1903058474105053339686347469499534 0.0362109407103286323195746343030836 1.0368828264800202710287417035285353 GT 1 -256885841266078.6318659064865147772037451481798987 1.2068839616545417250354424706629435 0.0544906654142033599795307662461853 1.0560315182874128967736258528922432 GT 1 -775624023834239439310197662555.6126876059544747583072478679710102 1.8093213564971952366412322559004265 0.0185214298326778932466863184901426 1.0186950992611670737039519327484106 GT 1 -16977637834336212177226671114954619818.0220881737263464629403382165279167 0.6357762464010600981481760622582022 0.0952975656668857220815569310737501 1.1001491911912511295864440361618216 GT 1 -656764988613870812074137451833.1990916037832481219783643923025695 0.2753038728930516060471832341514449 0.0401886500175430759210148291163543 1.0410185242659012321085096396303014 GT 1 -395053232097465637273936617.0924106043238413535538243611531027 0.6495352919314511540602394488315310 0.0917676854444899540696417998742161 1.0962550800709470394543445470965187 GT 1 -39918574153888895002501423242337692996.6945319066674205667425931363320765 3.9563761564018542125800711726538733 0.0350665898596236628345262134816488 1.0356961850599875899580764020915822 LT 1 -25826750160507054130597519906254464191320.9179041685904936325789173628757884 1.1169613213060058603847050343159883 0.0002289456162591251824346521414061 1.0002289718283075593781366159119822 GT 1 -77761435703718124156880889.6774207579188503845089759210630917 0.1988394761697357018907028438653349 0.0773628283170931155992526266838884 1.0805192185303214673403927587046642 GT 1 -671250051157986935472.6069262623447317804618059040894056 1.0282283720960850420525439422580429 0.0444739219947271073003306731006377 1.0454932231517181731939945623411396 GT 1 -35136198578979236705435936072.0008655135559159476124058464558255 0.4872922678074700383698577466127831 0.0133041334172635243452112211585809 1.0133934262605193323887874207106443 GT 1 -144.9054479781361947475029858678210741 0.2514427985758322437236206147267118 0.0907965322869844481366300976980003 1.0951863729843883819867710348901815 GT 1 -87995336654112354928134.7025953500038100679322688484323407 0.4458336695209961909611133171175941 0.0469737155011130534139944347415450 1.0481127949119644189708789707232367 GT 1 -1443992986807689981018862897195502.7032813212604005084269833136105734 0.0131935680347750503416114373666363 0.0004192402152795311565852764362063 1.0004193281210285269468982873427046 GT 1 -859973151974586440153.8147245208730977100301987660156477 0.0379826240740181953325764808022895 0.0889088589386817375844520715337446 1.0931123416535560528825664997719808 GT 1 -635622725190548096844543.4599742721544898559751433205603618 2.2229787543730346977349255759343198 0.0789702935632879724407134828354403 1.0822629887011640650027185086794460 GT 1 -8604861301670200430889613.4010793080077576396689837628132396 3.2700047307961949621147608652743462 0.0236765448350082470156631207248040 1.0239613384923463355765593579009408 GT 1 -20372117380644185867.5115971854334086181550814361380814 0.0170516761477458014889691114689717 0.0305104973042576947490725936657044 1.0309856319024095340426388883738267 GT 1 -23408145.6519841182696926658567390051245785 0.0252295635272561730730164624134629 0.0442686673546204192140374742384716 1.0452784382255727307292389175047275 GT 1 -23209216181384791331585036340878906.9280395112698777729857501301949032 0.0160752591760936356839411876947479 0.0041143997049329816086715631624498 1.0041228871358541300843830975353194 GT 1 -33510478203449614720.2844371495585971320567284497467460 2.4393906710827164266631654733036355 0.0951155287894071483726300728029612 1.1049428008590461009906677746245011 LT 2 -178681531537812234381107152132190190.1566290705116720403985550962781882 1.6434706382547366156431164480014323 0.0364533324096854409209346487515785 1.0371343568151395785724307447731494 GT 1 -174311833011046586133684372180750199246068.2851526629989720764114225895919909 0.2481194555194239161085404593109424 0.0979336315366314397568431766945810 1.1030671823986506608849529824969603 GT 1 -69049801657601733825919027813390.8165716305823511660669136824828913 0.1774347162860540762550949281913018 0.0106654103269653920336784458314134 1.0107226934786391815934180070680763 GT 1 -2962645917964573907246.5943474845635069247582412272980778 2.8985017786254592392445804361938840 0.0654136002652784498903791369589132 1.0676512007853968468882203519463801 LT 1 -236192106662.2253431423759886353955987403641535 1.9952405324332024116190827736096281 0.0562549893549322517171005431219788 1.0578992651665804669453602508699204 GT 1 -5333806289959615491449841681877059.7969047905128989175798321243329845 0.1391563140575766957488330662479531 0.0204418238134110645485668373778156 1.0206536496026399774815952837412943 GT 1 -193894557.5017311479302532746470046392941920 0.2110765536715536442347423461802238 0.0821965404877576145940308867346631 1.0857720076754436483587793010174363 GT 1 -1524224159187914946193353318386887076630.0672673760454577368535503299346522 2.4293655229783281166529681606326138 0.0659087180389401347900546778780195 1.0681811132364284557361235886355121 GT 1 -457652.1881668917162411954614739812881489 1.1537225598065445498796380622249873 0.0813241615323092869546177545474173 1.0848219517482945566687122055812156 GT 1 -71605071630265505702882.6657287686776469635539907697549653 0.4473168748205356914325254221872133 0.0637413790832552637304041668389206 1.0658635362713437415272132811877941 GT 1 -7432738967752714952606246679482933.1958127512981397305101540504179332 0.2527174870118841456381507750590149 0.0427323731077892293398783375279275 1.0436722746995086825614240474601751 GT 1 -131934122691453241643493496249045536.0017762149779252725281144885437002 0.6035865835211279793748891681470018 0.0867343709333520089060500849297325 1.0907284997749476246803616553380208 GT 1 -13379681165073310991852064.0979642170629651730620343744041833 0.1518308621694047401973752535454619 0.0983203844336469994751775578852935 1.1034960154010431999248801406303979 GT 1 -11348163.8541344495747658564556711051847422 0.5999246374917383458171123812480563 0.0175083797556720615844447442261679 1.0176634642884996714419174121326700 GT 1 -87013786.4277664831295902451154554676078632 1.8785252634884802863131600774873227 0.0489193743292887434824473210261587 1.0501564401452779087479829756712386 GT 1 -62395866825303497282267.9747282665216161581998757350556898 0.6498153061616074612557382046496003 0.0161225838068409639116304124814966 1.0162539667297200501745463318638255 GT 1 -3527515225377682406512427223.0837936592660955219821119702881127 4.0442294509880744956390595576306417 0.0888061513966479596805092998473984 1.0929996177462363380625353678655066 LT 1 -45753358078427417044794343023582984.6511285006667275374493936380359312 1.8370712865256202368136563945922633 0.0611489407229506033393465408966346 1.0630984286731439951656129399589988 GT 1 -3850.4662840315059582317228929505254705 0.8678552407306849510314678788133683 0.0838423093676730915857412887768402 1.0875667777790141711281388794749651 GT 1 -119593913124117534062487495043794.2087035661139782307111893198333694 0.1879060190953998261238837688390495 0.0211807872831152146973786127154157 1.0214083187577913797734370822950473 GT 1 -13566634427136321125631501260420.2530472508597386618391669825046295 1.0745868659718537932363745058385191 0.0181969339966630161139409673756019 1.0183645345240540764925777572628579 GT 1 -2713861.8777639588384555223732543895281215 4.6543470704806323432326391322844541 0.0382146228416490245459489750572538 1.0389639538740813471276117668203546 LT 1 -2852528.5703988763012250824326585317202642 1.4510985967362035251668087916185953 0.0157457917877850686183625768635367 1.0158710736152688243951115234969364 GT 1 -41700592939510981349218099166273100.2566587809769445635984000623671180 0.7236814822359247595691695432732422 0.0230727610788227588764761848882465 1.0233431036930501811553019651182535 GT 1 -397551024.3086520628804599965441257925659657 1.7902171807755909079089738824677413 0.0961667353761240123083952347032737 1.1011103773891866740511789275826813 GT 1 -32200317129033862500566485173934.4980659391122904693652279735810334 0.5498767536612678708976597749596253 0.0505490395143027016565973036946067 1.0518713977879702236020187356826678 GT 1 -1652628458.5242575998058077670563512794299839 0.7104265035799323053986941365648939 0.0107211621138733437900757014636668 1.0107790478792979121415682685493725 GT 1 -392380277948687388628668776.1779679958252319751498559751431973 0.1081568456910459699799871696826644 0.0526476897375733745924944367980638 1.0540842272489818327193181595937417 GT 1 -604365760240625717905236920107927020371330.8074997352404413799608071710837124 0.6884530965126016338285745666588836 0.0267724604943273200834541161396789 1.0271373705840466398690112230646821 GT 1 -19101799173147.0620962772473422980986227982859676 0.1352902133393605901972132463470785 0.0568934477206575401555208208777584 1.0585760098587836967382742254624993 GT 1 -227169.5500761155200447056969011992758263 0.1467173730237138201945014936831696 0.0161551179257152803349985961861952 1.0162870345248107770984069284568048 GT 1 -11938606311801216766112710.9783117327401199614663150957527098 0.9892941010547700186019998559471240 0.0511595982504184706834250587102532 1.0525146697000868754994420077512162 GT 1 -1445451230563599341574254436475633920791.4763721815877138912777056138319483 0.8384602243073899760335940340046774 0.0163008122590860129343085375639444 1.0164351321820599066871224623244648 GT 1 -531630447314634035929012.0868518936232001256810027266514126 1.4637881639965872611361077779892143 0.0390263460151000055400400012755140 1.0398082855958688588948007973313448 GT 1 -1194739.6469516101826813810508236935761969 0.1168341875344543739721500762493390 0.0690301404242230412789189730172635 1.0715283764764129947878835949275791 GT 1 -194821353932427584972134196.9478082007805203898625518534038143 2.2409975006525334062369004427859933 0.0837534484428284587880805252562480 1.0874697894367386560824218035242347 GT 1 -12236583268581827797753898.8086138951153741532916806383304680 0.1032504839207080808107911086679723 0.0928877351452576493503832410769054 1.0974890605015463391670467854376063 GT 1 -20148922237058410707376443090045402.6467393681542535359892398692280122 3.2961046568648785722502889915220585 0.0118708610089409544832992614051235 1.0119418822949187340656555776148318 GT 1 -606332102179589156728375710.9548677822266933131577911125386922 0.7353713147196888024268209767221385 0.0298253032927621293985404921888172 1.0302791240025288480093893863334439 GT 1 -127157435226914311305104177125277.4670388049239549325284149592954374 0.7644068866963468847048925569981115 0.0073897436928104935585074156490652 1.0074171831124941425911075511793507 GT 1 -4200185549354787891705966087935544158615.3706275296480223475390372387912535 1.1284550488607688882679952228466521 0.0619351591649085576008308941488992 1.0639362056751889570063657000701167 GT 1 -1364968581902851951113445889.1206110572474223093081591153650309 0.8731209290483998531223170343731094 0.0424877420691154031672185908811587 1.0434167559926914546173084788892408 GT 1 -3943021718.7608663577920050438985158561115819 0.7356713009833538009316300247992231 0.0793338456809108230839828888055031 1.0826577901774467337407421900167503 GT 1 -274318167982.0727001108412684136094706299548064 2.0357207522971762963201256437407106 0.0673966971239322458987920456587290 1.0697753530357322753781613312034068 GT 1 -7878.2277502029223947393403297557114664 0.4538862715385627443337299448681729 0.0686620762657486753437408551255115 1.0711330989969702542325196424748526 GT 1 -50119369581237255537949100573278705904.7762683711922237698578995003529445 0.4325652807205704071704115638622517 0.0282817839355643222647193366613310 1.0286894177194408358197294153987791 GT 1 -378749469394.5151192480376379906279026455704409 0.2306020117340553705869445455672223 0.0697287187196581630764234415462814 1.0722790350696538337915970322449094 GT 1 -4982897533507745424571083550526.6775294555882742012295551656271599 0.2988170051347045146683410076283615 0.0603382083525954794031308841679995 1.0622352645800235847665257594940938 GT 1 -4265979619579860129078652498579.1203204466384030646301432801625399 1.2474278958825767092902025180257473 0.0489213315422157629601875016495891 1.0501584980306853629082917258831185 GT 1 -241464457242662603247788044341315.3484195932476243449040947990438142 1.9429852214816226266484212424300409 0.0186188379506114108036532488765090 1.0187943504877470538248084778663679 GT 1 -43286319066261270855616320723971375086653.5039129438700382689393171131249734 0.2531511287211168676490162024957870 0.0293758608569900141458602087441640 1.0298159719895492355986286055344602 GT 1 -476584910464779916848204317457539470795.7910887318330978128151870076397519 0.1007130107091254460497007378074367 0.0504770797149260189868652722059157 1.0517956097003721795548858715237872 GT 1 -8992254329560208589981806411871.0607871716838952982755274093263045 0.8806863758254890026695590348364798 0.0062441647441559725124842433366749 1.0062637410752689427772610492432374 GT 1 -25868644089.9830487347660867368501792751108593 0.2161092896233522991830642450342838 0.0944341576345933304736335595319981 1.0991952904806483257966948027657743 GT 1 -1897598044959002.0178632237855552727505438639180922 1.6450560736298788181705741604939774 0.0642894117391822288236061552335837 1.0664490508929485016443167530944661 GT 1 -19.4532782658627309410943227602599420 0.2552470954920226371010713095340389 0.0472117899785009484847940663923985 1.0483626350504572206408367129143199 GT 1 -2016654796880823744719676507082088765623.9342250088198840103658769168137041 0.0294420651722408309185447785673757 0.0317707040936132105503961293133609 1.0322863438198850582433154317378437 GT 1 -4767818905987454329489728416.8606083808001935291788352080707749 0.7633230294266499731895302690289180 0.0918141869090390858430040922907989 1.0963062813487272194258042064477474 GT 1 -44209715.1593318362276988268711400883238451 0.7717422072464807869379749215659509 0.0280276449070164859856553115411744 1.0284279161885209874636806464535749 GT 1 -7112702475071767393.5195431319218485575632609035546152 2.3569882092914898527657975062673857 0.0857016662064753823024011146438013 1.0895983561982744048632018332522411 GT 1 -4092046092588562900850717510022212272458.3170749153479388279872715643688575 0.1952302001537224326967773595367793 0.0573509244196751722138679189889869 1.0590612017905839622931466281907851 GT 1 -3039633163249581820494700595436906.2482434967022814684794913730365358 0.4891153901214224469940391199707491 0.0245521443965438862629773574580233 1.0248585743677229307090560467244035 GT 1 -2145605970734936593.5374396605067711785260718639005450 0.1891447346016124616488518521963558 0.0834179079040039877299909634703640 1.0871036444141420161335246379810504 GT 1 -93956825548213354662736325275287182511.2694821222650511241419435347598884 0.5900037678397899015016102204127021 0.0836271924412216669192446723306396 1.0873320019565633413304007798096441 GT 1 -1260149102575594570889.4125940659389749581032856498446393 0.4849875804863566225368337059859902 0.0005415234957761271601048630775262 1.0005416701725793797376461267108715 GT 1 -1144414304188215465402002632086617812055.6268913118324355929782130684851191 0.3803899731732980509817231704371419 0.0832066545896369828202515257870984 1.0868731915445548853455939262851688 GT 1 -312027614184626002958758305608.9056268252743757505873931379852234 0.0814687717608970214040855180870820 0.0575594874053844107443146881940372 1.0592824782623957384526143237442179 GT 1 -37759277277905798344607799991371612.0739073011765968062746588651119659 0.4807686138572405614497169155372068 0.0483883048947795635598208179822279 1.0495982106906243056092578798413783 GT 1 -15232317569757200139383575451.1760232969679405514742099936540178 0.6175365174756763388414526371369275 0.0331496448592985335709526596827106 1.0337115471683347120009986328040682 GT 1 -25223945216254533677506272327804034642912.0980719174356217648814718971017333 1.5006362474796343784551444193217063 0.0516363328056780936123230324693491 1.0530172351047237642809106645737705 GT 1 -168237799533037165.6149380124039153897512317336694774 0.2481771013541337877543506793776015 0.0880507226289143526055348934987957 1.0921709073721530226846277644132176 GT 1 -44406863.3234981430965395660067735652113053 0.2375373677138712583908417936434996 0.0247263948011144532594850031849419 1.0250372266341129811801922196724761 GT 1 -16223288962789145897.9687079075534891745660926219461787 1.9163432594382205659195916721641341 0.0368652512640531026356026537120554 1.0375619509748728005958618120630019 GT 1 -150.1603502204449625297091428620806451 0.5518681394921150727639102390680197 0.0336274205238481558841220338657112 1.0342058260905651614714541450728515 GT 1 -6482.7870046936424965069416468379521640 0.0624045386000564010314266108876246 0.0683863095303940863708276159425659 1.0708370454277135635496034230177347 GT 1 -175991123923261654196631413736949594.8529674392735974258167324556055751 0.6706320238816643590110328574156224 0.0873597599040981329489356061328242 1.0914135175579160745449979897267039 GT 1 -2110802699589063.3243761748284778224028719301970139 1.3003918152989645305290859314266832 0.0725353330652655670453353201914200 1.0753005801752512363651081790998156 GT 1 -6490555061827075357.4483166312628792462672120904064664 0.2667492013108826313294629117432421 0.0922211881660509793582008702485457 1.0967545293577912656030943265271236 GT 1 -55882513697027115120027905625374324095.2396265430037087642783316871745607 0.4117357541179270715016799620556827 0.0087971346788110508599862690856222 1.0088360579115067423025792977557364 GT 1 -2444970.8425567483699394289100105192863916 0.2232820485226154140671474894155187 0.0662432984389932899079864321260001 1.0685393655209647265272582628604630 GT 1 -5617.9779484947623026936459330039884526 0.3580854966822142804542255111476706 0.0512411198364861253301121210099156 1.0526005904599594438159884766410532 GT 1 -9331324177239748955613.5731138064238828271307813840668036 1.9302785777532467871186776091697146 0.0190673514066060732575115297498080 1.0192514776417959322069216685833910 GT 1 -190877530680357087547979131740158394.4169849854535510382787221109352520 0.4417385068392689087368333157883728 0.0467824171189693320529256345190098 1.0479120877662949255616442615814810 GT 1 -634874374996475675414861601320411365.7855607114408787360003006705044019 0.5260873948031027094911305714509902 0.0197243843792605079969130829499121 1.0199215064288695291445419314705023 GT 1 -268001305805839186696839331.6382611783354738524329530887802515 1.1613751620504751221066156696669464 0.0193111449664808340528620865414619 1.0195000409458576057266924653541187 GT 1 -238709317169357933044340846068647365.7549377088163065771481595770990633 0.3341049990645268142040487706129259 0.0576263121772537586795801762803106 1.0593533868664189365058148784549403 GT 1 -804193033.7731170790259413783608063242042491 0.4363773600619662389117269582850852 0.0931206042955970403128262007979282 1.0977458082658076454287925482521330 GT 1 -122038168237868675154345.2856504399490694669661552963125760 0.2888226378950762078350059667701787 0.0348347889520027117780331654375400 1.0354559891381929911947436192114759 GT 1 -31513280.6423400407535821571121857941225411 1.6113852568691618190349809067389425 0.0520134064197388199183958340978270 1.0534149186200847833861172855623559 GT 1 -132968460041212046389296926653366940831.3175053992436644058910843818473506 0.1066376850621513230363867849699650 0.0422951050954144893435093692766077 1.0432155913633277931108621223441580 GT 1 -1078120586819910388198278418159.7588467883864816773643303230121105 1.7677137240757460339978498627440592 0.0182909099264938032915933706966724 1.0184602568037575141006185258814235 GT 1 -2390375856280227530949838174022133594730906.6479511530198202571549890058678671 0.7557517980057054693672723251719034 0.0418655997981415458164826667803417 1.0427672183650647353513702187105742 GT 1 -1433864208159310085856609811226260556627929.3954346776191509525671346132531603 0.2375662548399616028946190998883193 0.0683650472870803745957024048459025 1.0708142226623328597923853292683206 GT 1 -306997954.8720515441267195798671199746157470 2.2860500568427325336274783363749132 0.0664170951368173383369928096941687 1.0687255091637471829218673824805598 GT 1 -173555242894630602124374543688824.8026677085452405193281353192297812 0.2668549066388638787121190998814273 0.0132035290244062763882138859432526 1.0132914705639810146534558918915443 GT 1 -1887567110.6690627631880225171207331223612727 1.0226804784889051218668305205975649 0.0889093672114717893998316384675090 1.0931128995263186345939596489916941 GT 1 -308865217230.7100865850891270683802938403670704 0.8700367047617409923497749857494739 0.0578593983317795689370116277124822 1.0596007568725942173390002666136788 GT 1 -104170850598783751825453401596576038130304.6060103339478989697421209056591459 0.8418189188461333683005518224896655 0.0524144739674332722466010303899595 1.0538380811571674508301908441359764 GT 1 -3106791463155164366531962.7082426312502415050684491278911850 1.5896779595815766797975901198298714 0.0837507214900268996181180497789688 1.0874668132195415219810472666206550 GT 1 -12772607716.9114921155510735456551470783908533 1.3182683309584985167455809539335558 0.0436019812206188157308740404963458 1.0445811149398650310269009271877642 GT 1 -4562409033571645067437.1830496176232363184583710626018713 0.3615818800688326344085850715328371 0.0288020503922271271297835289468669 1.0292249698737643551867002107573202 GT 1 -335341320574437461.4273474361601328968836493916683928 0.2154242381848180147876853598434809 0.0311152613100493663498719828282186 1.0316096228867120874449510099524660 GT 1 -304693480618993462771239045543191198882303.7793950985720391464018002428598441 0.7779802860585896397252774871400854 0.0935053783869788278064351373990597 1.0981701819399442017972964338526784 GT 1 -4063027031265670.9005925274599511426762688311451843 1.2329151569595291114215862631757016 0.0983858267878936029313328808833804 1.1035685963134630922537812352184707 GT 1 -19352598.5271367906751870301516422932549486 2.0769204388598244612286105499601894 0.0070816415732067609783968747532024 1.0071068354098316614266069092500097 GT 1 -6357029724082211474967607046920136284.0727086427338319631237949914012412 1.1882959431639227979290962263867924 0.0330576860709119349105150943879125 1.0336164399834469439314419144927509 GT 1 -213370613.7806903799001271798756050633245694 0.1513405850222276039809994503942237 0.0571380363406277420144973639019541 1.0588353870639431556023990022316979 GT 1 -5515043989440481915272.0569223010345291612888434184697541 0.7532661484988624172411059262848598 0.0287010345557734472905034066120388 1.0291209636992762629256371242952548 GT 1 -1186518994.4808806475510404485729226014791781 3.7641377543843368723740256434283754 0.0330575687482057791773837778670985 1.0336163186497361857345093764264365 LT 1 -1012082197604584678278526158347815565500.7221160182782616218198964340843293 0.4816250568987032416097691304163272 0.0075940524466370044218220277020064 1.0076230340815196049202171423215051 GT 1 -102589132821748185545345924877.1333651743258837850560697303804909 0.0250157112137198159912493653497762 0.0769233026636561445546505559911326 1.0800429522258604853418140691661645 GT 1 -8032424152713401443953564731290.4846452655649957893272457599325036 2.5954877142832355120624388760886778 0.0292178920640206098221867826367170 1.0296532355261679027991511736385034 GT 1 -89615935961217592288277698.7891040849557369168062444678941235 1.4746405219462030017932098082416040 0.0107830850271035781987007688943660 1.0108416438319664704745331548885190 GT 1 -7855995050248793393434671.4064477968856438522957060424006785 0.1818806657853378549036458889510997 0.0726008841978541889069237852100074 1.0753712604410755974754720716502219 GT 1 -36309959930448505595470722321690028.1495239043047901675040759141556139 0.3640347030417341472846389216500226 0.0571166296158648510733541906471230 1.0588126833357383410963695853598927 GT 1 -14822390621528045270464743434913706155368543.0155670634337691819894198312703405 0.2925897238244118495960039663827988 0.0266161608640560140453234902620174 1.0269767842109039300471749735345845 GT 1 -58905748244460545251932.4652171444420205752248205551347507 2.5070014541506651746601448787434656 0.0841820861162148028342520127008178 1.0918042391646756691409962827748862 LT 2 -818142328038205563979265.2797039583917165375961441408679020 1.3310026208965108636314812248742070 0.0724272160322917590128367581763953 1.0751840142988656874154721542784799 GT 1 -4609018108.5361169753383296040649734327082761 0.1715814797938987334856583896770940 0.0493616548226717079625009756680130 1.0506215777477700328210708464066853 GT 1 -2701491289905098524984822399107588266.9339623718970426615041869528976703 2.1799357199859294105981638855324127 0.0239719342993674243831428832902534 1.0242639371416737649750683743251315 GT 1 -20887559.4256738857914368929353014805001254 0.1247141233949046830879458848876464 0.0740352251611916997384925887605956 1.0769190851903783619027176043886893 GT 1 -1908190672597174.0558795537001698758696990863427770 1.3174904705690728153961084349083085 0.0635088912901814225956078384344357 1.0656152513130385890242378212170026 GT 1 -236579.4482322373489183642406448381994267 2.4713003576649476747027659239026377 0.0691716587393135052282225470939043 1.0716803997357538152080724588024923 GT 1 -22702741348893.6646690544382343709285229480264763 0.0630707273552539424628991150107235 0.0301917718782884946056350809660916 1.0306569299978241320459350286221068 GT 1 -318678384299893941084613922968473437.5887510968835707215949270800244121 0.0598127628673637467241961545308592 0.0523527300069127195459862934036108 1.0537729240316978246951726032454226 GT 1 -896.4871667664977868727213804079973145 0.2062979604867304148170358863493784 0.0533817205974267491386767455292907 1.0548593511084655489712600350138575 GT 1 -14610560445231.9648996873283942013978248064115047 1.4416807840760552568087066522637422 0.0562055081983325132974735009981959 1.0578468358992226895307892398901571 GT 1 -2186.7779546720871272602577124158470412 0.8813696761268333677947166564912428 0.0727194970472797679845720230525814 1.0754991670060562588966531112372810 GT 1 -3529487485986263721297503439017.0881797376114553843385103902849220 0.3869951106504105499034284235671036 0.0975372351564637668777942845798528 1.1026278474173227269324315266939509 GT 1 -51738637048.8847258753800510944465980241511557 0.3720935931077711213970058857962527 0.0172532967225184266142465297391577 1.0174038692749758077745448507748710 GT 1 -5434659011407325160864469434267134.2077269062101276919378677969005928 1.9737036396762097789315352588658501 0.0183155822815498464219809978878172 1.0184853891625632518910139973597695 GT 1 -76662135765471859300902198474076.2423078987939260811728370506501080 0.1811194286356607470979787128286986 0.0130781509472833918776105645568277 1.0131644229746474657480258802827671 GT 1 -1004244.2899552349374040745591617839053550 0.0374299240806617342714098347403420 0.0795130270234148341813484059839104 1.0828524305258384885956413958154442 GT 1 -871060255274211531283271443705143491191.2416428572632120990187346099623702 1.9344483669565598166081804068215118 0.0082856389190254288485812754061430 1.0083201556193485786510832725633839 GT 1 -117526008044698483395835403061190501990440.0984677877016538229155115622714269 0.1805850408826639897146513968340148 0.0945141195485364168841515302765559 1.0992835948763622981080597716834569 GT 1 -31895713314114823692684072.6302054912591104117108728038732651 0.0369305080151255365970748538015006 0.0583394972442695712973887425523473 1.0601104698372558937024380285993282 GT 1 -180466811866.5644008863130181635189538846712762 1.1843630904442568001827768149903602 0.0867181787365618596967013479423793 1.0907107699352025392881627754200845 GT 1 -33146394748.3841266588724591583243174398380729 0.4678301917258704473278244745801610 0.0832811038633993230386084621026773 1.0869544010092273896424919091562908 GT 1 -33895.2000859198275146936762805527638914 0.1764087396738664028512738544813605 0.0608251269127040786943621182713559 1.0627535837933421501493042011323942 GT 1 -19360525811786640181393751352048.0703298843148379045227400288574153 1.2904425073620035568473944339654044 0.0564704634058851410747745983836865 1.0581276093173605971974264556157190 GT 1 -585124791188075772520.8916923782242001532118444673684447 0.3285240085125200904627843533460539 0.0609058740951177619555684020563996 1.0628395642173461179107583852624596 GT 1 -842176852737.2314203331270737135510070486488310 0.3475150016366404666669093836681701 0.0840051803497956067433313144148484 1.0877445697277056348777244192320947 GT 1 -40504663678.6574401296029054418491268488721820 0.3311371857055300961919663408259422 0.0294431131435452549813918472013653 1.0298852620616047477858805973375642 GT 1 -23585917089006351478313167847278218486262403.0442458287419677355119687228994267 0.6480662456974754576348216164883250 0.0714882647062292992726177871946804 1.0741722592883423743552569099463809 GT 1 -79628415214073517659264.6286472507810089119316207459439788 3.2082352354573258447634502766573171 0.0051817802190384235634353548022709 1.0051952522015446729796937115400864 GT 1 -4135247653082133370037412449643794433005543.6513288637796196397544102451370718 0.6879766022977198381502595657182195 0.0990317071091888302830753209740138 1.1042852130132049969058515800152616 GT 1 -4312790000842755684485635030313405.3328262819556866184786201492273407 1.0034206391675879443579359853615512 0.0996692235472997781686658324389193 1.1049930537883203167232349695126682 GT 1 -1078202875960340377869055033184.9220243197586990772992612736659469 3.7200314615258873466928007443829537 0.0827761473259618479392149772699435 1.0864037223683314317502387257980915 LT 1 -3388127140215.1455048152960662434220205042190422 0.7201941236085021345406682937178747 0.0246566747536982597076060642784335 1.0249657415092197288154014466401767 GT 1 -307463233301487.3778758724842268994801188109690491 0.6512799348514890358666439294138124 0.0914377230335205766702173709744170 1.0958918442751811567931222773275799 GT 1 -867945142793943074129097805631127978.7178099773197145179777985096996991 0.2360020972777144304819102435457885 0.0658287972055230706389568992075105 1.0680955569143185325419350762676077 GT 1 -37194562339449732747620892.4234608919859861653803001099992344 0.7854638216982906334219209521202732 0.0215909818534122534388647805921026 1.0218274774127038925042026941533991 GT 1 -43670076458638251644044180804114303196.6470582978565822623564029621607269 2.0666217385483901083509490547547928 0.0782175271912840153786606122311109 1.0814460129698861851745996495418417 GT 1 -842504447005947700843075422366724618852.5095393333536068162521552817054782 0.3731766098862039408647683367876726 0.0090662932879280812296911257656296 1.0091076422357849769580756474868535 GT 1 -29408848983120.0361115495430848360879146828232179 0.3741827443549211358739546405139761 0.0797217398357762906494064196947200 1.0830791979696148301152016225601991 GT 1 -10137240139597991.7152472984778827589373822665954714 1.0353333995504178006228118355307562 0.0796703685777112623022147935729430 1.0830233780871584013546407149568022 GT 1 -2539770206120772.0911911820258125973305941853302669 0.6813882390390113946206164353393592 0.0490245438199909848677287115297174 1.0502670252030087905191826957854441 GT 1 -256369256464299130478246405740266138278.0909556243042755464536354151323207 0.4802255628167291308316159637545846 0.0818440953877401541701055722048344 1.0853880720489436345349865300669525 GT 1 -7.1446005190322856456819591108389550 0.3582764461988809455125940771276923 0.0333821398610501878820295764683652 1.0339520424617508634456125256170527 GT 1 -292325430225344.2764581471495351620771032770214337 3.3886241098023088295395408889710064 0.0091614064781342189188400969929876 1.0092036302463833073187787458957319 GT 1 -572128308714167461414407.7422286753258321319369225641946206 1.6240290300648281841038808961280584 0.0718392565451158429255505399825184 1.0745503462660782490586734969129060 GT 1 -11211379952603086784326761635553971333453.9293421459430940866527743811355515 1.5795670400283058292156129066855072 0.0481671398476667642268588751367248 1.0493658266713501961486009350236291 GT 1 -15174418493183992631616732354529984825033410.5154273644656282201264290591028703 0.0213615956911863932474414216096063 0.0613789253998721821371215514782300 1.0633434226455413187812461322621156 GT 1 -26587723205141755138.7141437795621025103360321942856263 0.2503679984502922524537680776232774 0.0230140158622329435948440342322054 1.0232829728582574800214289023698193 GT 1 -2176941190636643.5586012501619957777358783741959870 2.2387805739611277783392612780953248 0.0374160395992817203880090747295251 1.0381339850394893950156739482894068 GT 1 -34630347846250624336.1720928450872263601354393336022826 3.5382912144669186131096500660259621 0.0277699965823537596484340078994352 1.0281628734834310037627919068252674 GT 1 -99629407767108377687306940.2329097120640762135621946422918620 0.9044046873198837210375856685923040 0.0206027510402262072638145090124271 1.0208179486215062461034125525891752 GT 1 -2301444154022390390476982773538.9128626186893116843833675224417469 0.5543507783239142057330731918934032 0.0627371365469814426638057089784416 1.0647914987838313040087430463568498 GT 1 -68070663106920225830312.8371434486391818387341694603130941 0.2636529376193321786267403436715125 0.0376073759645189270324061154027842 1.0383327784870713690395134769186394 GT 1 -1514847608435851464503581519.5559000641131970512969538927374791 1.1457109192813105740746931911681860 0.0372375837494025474432408409284256 1.0379486097194385760453649404667487 GT 1 -202188194587039413428835262542.5734908925537124915173238218495295 0.8595371130266522249545456825203547 0.0554308018268030949426417067313133 1.0570263303799679221427636634038229 GT 1 -4204937521273205433963596606898613068041.2710799643250371175878280974941986 0.7318644733969743536608121954644010 0.0569909544435656526799250488843772 1.0586794040760913334536880636553602 GT 1 -12270796859133952942461663164.0239375651480399171510866968313855 0.1015297836889936410939392445364838 0.0060510989072847906449300218798683 1.0060694809983593411257516041816441 GT 1 -5585740.6235682133367674046152822882536294 0.2371129768063902399193511527901717 0.0688860324750060292677153921120988 1.0713735950993263486345745204218164 GT 1 -20064889269554322.0091327845791231380745076310682766 0.2256323272744061265769126781490345 0.0371991694282293939818015531531960 1.0379087104107644597569138288096611 GT 1 -1304706993405.3929662329037702323666948563116482 1.7956291054353304727759400604478946 0.0836803181209418940434236745573969 1.0873899775089719217160645919289962 GT 1 -2.1222335052502384482308338526149798 0.4550833483667290908104046579331285 0.0947473676880118881921870038476130 1.0995412225118507552185520758430261 GT 1 -169531945314025.2919809336658980733073928270485556 2.2318753768503193632865603993708886 0.0620255195996957904434686500058764 1.0640325367422772583720518068793561 GT 1 -8675200712671030400697360.4251328474432782012806189180477414 0.2124258879383548372292697088292021 0.0304765983574869183686270213003342 1.0309506667439019386387690566639304 GT 1 -175390839948990937.5500351412194351334510254688280946 0.3525855726598132839046539248226645 0.0233600006770363038247930722509425 1.0236371704593844092980083454256317 GT 1 -2643101368953295899585164011.8852711059066695369343485716225523 1.3194251839003873826269761372112672 0.0624538613942475977598217098888615 1.0644893078357630123101010768578529 GT 1 -3.7267549024914622611760451711190507 0.3427295012932963876665901835289851 0.0708690521507846226693477032609862 1.0735055943974057671330539319640566 GT 1 -1609962935583452016295.3854967053529366205601567933158632 1.3550459395004347580985392716956335 0.0038514688089789166718111039611040 1.0038589048141407841663854992711578 GT 1 -150384502412974983717194823181.0383372376635717367475163942591658 0.4136336844186092957360443625196758 0.0885173105128352063482824708794623 1.0926826762810949312707347493497097 GT 1 -16625487526061833246272382.7019281963402513927064871379054974 0.9229109503179135829122411061641207 0.0075890228544767471417203195294052 1.0076179660149410905537899551356582 GT 1 -118411821622820266836519212285105841547018.1205209282234335444309763693199771 0.1331691402068799320701779663927729 0.0507884882258855625805357362778420 1.0521236266241649276322525744799200 GT 1 -78030704142395952020128644974.7876398977635746381830868340148024 1.4560660167234916178514766535682758 0.0093987193379033839893014325059140 1.0094431660142819920318427674025103 GT 1 -301406901262649.8166949553419344011806589449330284 0.3166445946363823719576440204114448 0.0893132024599424459868630022768542 1.0935562415596123241582232794665799 GT 1 -2169598702183010905718505408411343009.0962099314485715581003767470431284 0.1061533891014083235131267370973156 0.0568873421989456334572029175492556 1.0585695360389017883308830363181956 GT 1 -15758031269851939836208901.1186843515770181792721809179863423 0.6539638317485719427985239712287077 0.0281477639561609282351788526789287 1.0285515066090198757041713566730149 GT 1 -2285404968290177182015586824920.8288448498038828080228057279531149 0.3431570222757825290582029342710493 0.0989295189705981846579061793066915 1.1041717990953924772280937431817744 GT 1 -2431.0410481280016711789648521037305703 0.0385693197767841427171184857913417 0.0384988449590926742865969101498962 1.0392595126634289366601626245078534 GT 1 -11497908595680205416955274851.7967198346634062472890118131623600 0.1219535207559497489909756042834730 0.0363988167426169069581684833094981 1.0370777802872316698111297323095349 GT 1 -4569703591729084.4965616104159176850968413622062066 0.4640399856115529109164339392870249 0.0884301353340362069315860510812420 1.0925870397854087827118535379669711 GT 1 -176746574077971402031765133900760356.1208650458730454896912393649459325 2.1515467434786539598539181526630211 0.0996038373137820188936017925348280 1.1049204317464934053414284302284994 GT 1 -75850648844004398797.4894866210854017294881167731518550 2.3130383805166943982137194415269302 0.0445431608918829239228406986689474 1.0455656873234970634383114769964627 GT 1 -76576324780567137343404219604753.4157339320412741504587230702629145 2.7792321490861051661888723710290082 0.0128778542059697620583121045875613 1.0129614926017440557424571757316791 GT 1 -1561035358616784787765819868150.1178784471428175553720478692145854 1.2200909670875763876419191744731947 0.0057677003416985035053152408596327 1.0057843977600723975506592920070772 GT 1 -139926605535653439465107468962833360017919.2146346785237787904933787744195812 0.1973015855166204437573454998711434 0.0559844062085381191333023792337003 1.0576125941261834268595565205563740 GT 1 -385875972506723398897562312.4086303988409503522289222525283162 0.4977227956976179387164890805764613 0.0894388409243593739473089398530805 1.0936942112019774351065915708991043 GT 1 -192153882514862.4414297860821635892981938348660711 1.8745583057868475053072253813591743 0.0484641839745713344165335743296240 1.0496779513091398912704175368932441 GT 1 -14458.5823396851121438252201418118306380 0.9464006534795452816992651293337633 0.0159689973363949712764784988393937 1.0160978756542552129912095214619035 GT 1 -1.4172113638174012901463237071925841 3.1255996420314476729829724542659675 0.0307877091935531063587805122339817 1.0312716087268121169187037525382839 GT 1 -890044691.0978251134521494253348570959833974 0.2274678388219032347378489195966442 0.0694306933871032998304657062373804 1.0719587224786216327796259045283476 GT 1 -167734002600910748.4863364652671564601348924356156684 0.3996451503042879980732311203009747 0.0166603931734410105645455649100297 1.0168007385131129110737901546006608 GT 1 -15344.9907668413340196809911318863721380 2.8279214988933482603103085916156399 0.0534458687131072031088924518113561 1.0549271189624051086285523225543220 GT 1 -153514203.4131624959391407423836010750815038 1.1464889461612359670504526564630055 0.0120167730472113028484131534393362 1.0120895581468086941064695128277541 GT 1 -618256234540933808293712289995419.6448504625245333107303165046343396 1.1280542513925197766943542212735178 0.0783767651201871355229693469636421 1.0816187779001834498264731271497323 GT 1 -5391236847215935921284177518935083.6756038627577065211663680553763747 0.9992905075298006412695607325276888 0.0178294122428988297832071741642188 1.0179902710940426991459968958750502 GT 1 -626724613207691622093468316115224.7595768876822949981614482741812354 1.0052181655449437513275454290942587 0.0883463452297911322164615133416827 1.0924951255429576142213872874568924 GT 1 -1822314901058509892.6771546487186844584746764366519695 1.4072882818608900910701551555391776 0.0707000327999119793792396773491339 1.0733236997141329490731767068570121 GT 1 -208794324511121365.3266293606524233322924543594821883 0.4026597266165255545901785765709818 0.0935412803916770983461863188131403 1.0982097880388841528077130424043460 GT 1 -588567614114740252123888879609.3978950434808029795610542828195579 0.4222221331034110740900336832029670 0.0203054298832904811377109949659343 1.0205144190407859593586924886411474 GT 1 -53634361.4138078335271642218723098976010525 1.3976157116279806882545126637907474 0.0659345466280447033117452818962484 1.0682087646519844530380980231761634 GT 1 -3191789071777793904637796.7945292959747037217038160485790987 0.4901866577633061846444294930337164 0.0773953281184101662672817616755279 1.0805544440498746448511400558355729 GT 1 -108257978745023.7685544555598340622884712156222013 0.3767206028725924315111710452425477 0.0665450697327478584201767710533216 1.0688625975437713625659340044722130 GT 1 -986917320440879932714281.3595719764764714000889466136477539 0.2926938290806450118172479794710461 0.0101528501265538607898507739329673 1.0102047418407184935466929597459061 GT 1 -487725474941657777799935588482254807623580.1971676611305471095515657168223549 1.2946718678024834190881112110654903 0.0009141013133226033879636651629525 1.0009145193587047499669735201766245 GT 1 -22470857363574660237170653.3347368650958351391865189849461652 1.2785265007535986028965182722474584 0.0611558884802560378967165653424413 1.0631058289768924656998004072137169 GT 1 -46806535447955852791.1619758519643600494621319247511440 0.7899894016901557815388215948629063 0.0332578772807138252032427583975422 1.0338234967365789114753783301555309 GT 1 -797876390337218407195050359.2125470292760009648994727777439860 1.2141614548109592468162873563696255 0.0858806068559482088029327210667243 1.0897940889866934086846361312392153 GT 1 -8613647177100177.6267885785651038945526499727348417 1.9632576372040791661242338456243987 0.0334100934840039847340981523291834 1.0339809618810061601229027947509060 GT 1 -9853231536.4942340610817664847541841886395706 0.3786046363961360237534041304287622 0.0835474308755652051062878487455208 1.0872449652243994130274379915274813 GT 1 -12295301106333993744161808385206386827151.4381114849998471354402518127577677 0.8050353624216597634515636463403414 0.0545853766639759318323083861636682 1.0561316928602242371756842979200071 GT 1 -48143820.8205241789417059814498379299154820 0.2911224351673390834731042656065311 0.0107745622322375473910075007029464 1.0108330281704039516239284929591729 GT 1 -614413080741446974395510362.9500394579311539857576623083266189 0.4155394708158512742269509353835523 0.0952016355981371666150038688520763 1.1000431618721090850609233475095125 GT 1 -231538875421347508.8910056698130719928685613865093842 2.5321290898924785929855012838241940 0.0420110899601129160505493099357598 1.0429190772370625002227185172015152 GT 1 -428705928447235847509660754194391243501.0280200874707201958942325575945956 0.3790998406891649301665463289146629 0.0413348125542285736072247644357819 1.0422133918086520567438825944141648 GT 1 -1982327424322718832769635.3002520839954441416412741052000847 0.0142887983064756565485471386090872 0.0684625342069842867376544302191804 1.0709188688228541170513390775408676 GT 1 -22185519.5904875488905749169072287778463730 0.6597127738181800801163352517803037 0.0746997050992494752466679889720440 1.0776369510189459240975676473581500 GT 1 -3546896520068252941274745482099766630148.6114289723093096112534983542729758 0.2991165692675567975501074843348259 0.0262745839913327339607042785451362 1.0266259288335543869907454249233063 GT 1 -29101144094291245565943261433935714198.6681701323526854586947374803947527 2.4639437302988225607545334802694256 0.0535314071297302044780727574543464 1.0550174912707663862983934868816341 GT 1 -310142336708517459841763101.8856350877193577768586564511985732 0.3107429302659146329728600732542841 0.0967062661599983001918487089780753 1.1017074918148618152577035522191200 GT 1 -52297802417610489446.6933709882713774886492718355769784 1.4883299627652251726134997188426711 0.0060151720233069731364289718066130 1.0060333360469896120978076193762149 GT 1 -5650117887403.8087107604956845139943192970492415 1.0301254668699247201081547129271872 0.0167647568938348614135479813601485 1.0169068760654114102691995620831832 GT 1 -1308563650598492574397751.1880493243709033634291314250810458 0.6516628622603982160471847394450522 0.0540367277594980931767564142554704 1.0555515349540228072355592728254347 GT 1 -1324757636791251995919.1836207642236580998779353064418208 2.4293955877001293912924853744152860 0.0473284928393257730599023323438590 1.0484851281789326205479480225992979 GT 1 -179110088964426.1508335175429187595951099274560312 0.1328362889581202138810033476111916 0.0435440539244486481027580872093374 1.0445205485848246779665204670584623 GT 1 -12819751263135106387836000987247973357781130.9846610407447518190540456910350598 1.6143652211045277824062147354183978 0.0980027503238823859623099927421631 1.1031438080637212163942805646495500 GT 1 -5061384566223467778819022294674354730.5596843066128492050490881930612657 0.0106524298021436913242870133443702 0.0224860574585832787233230419535615 1.0227427237548585075772345557669152 GT 1 -23071711618310506907.8720896497149759139748060832237504 1.4958200238623408566141801307808596 0.0701423478885092126369091060778786 1.0727237667957652461570740050631336 GT 1 -6628.4720511706862979954509713014795274 0.7194246709295293155755832329399150 0.0612451547399448299890304317169575 1.0632009145215810354005497967394992 GT 1 -100632417.4174927151239641615860556394288600 0.5931665248237302130779218355789655 0.0715683254224935225551306258821918 1.0742584877817775940220867849889267 GT 1 -847718.8357319837227929501463779351215650 0.8994647950411313011981941551938585 0.0400612828086021365975907450676568 1.0408858328168363840664139475821811 GT 1 -6642.8406138915004544884249753718927462 1.1776721602860939649840775701553512 0.0852966787647426048132368282362279 1.0891555053706242319249084201859412 GT 1 -7428050041209.3572433418958067591786143190037261 1.0572336474802228376309955856190605 0.0798381766805003071763157830584014 1.0832057294942477477672340192570032 GT 1 -22172636380500575578309325354970802697653.2604561544033848158345101829965383 0.4013911952142822388708024426979679 0.0878432893507956531051909455253232 1.0919434718170096672558079262765248 GT 1 -2312714170017923748.5495760519668221406108436284954536 0.3849761263381583603025771820559230 0.0752396532733487314243116287782760 1.0782206596577665740331100022139446 GT 1 -111372679506.0834428965431347423460167385802708 0.1885553817020094925881392045193078 0.0422358067912575086484167850752965 1.0431536761859501923114756951678173 GT 1 -160116337676402609551778952560286293721079.5933602237144440505876485161269141 0.7684324636593417251095592950984736 0.0260824444118431130749816284909208 1.0264286241089051770900157799920462 GT 1 -1092.3295196129148489064006370288674891 2.5800931270541549547772505989461337 0.0539971213737405895849541491570458 1.0555096669895825931060574684726613 GT 1 -1.7046249515596939426205009052074964 3.3364925613448986713890507142154814 0.0800646773993389053433556058522612 1.0834519129313393598488402540861511 LT 1 -7791619980041.4572239023788874187629061090004556 0.6127666696830734113659625483130913 0.0719823644039252158164673997191431 1.0747045425014272377192233649491310 GT 1 -6510525972549489539.7452281910095367708539273354626747 0.4262824615553982801199530492194880 0.0643878325772785289518978169112981 1.0665542394157601093385923371571370 GT 1 -4640727.8038886300664436953224399535068817 0.5669269209230670247336454564445605 0.0143728571386621075984360654050837 1.0144771471529676572346690909574907 GT 1 -12107636426034316177045826981691332611933.6315905308194100184027403724974091 0.0236366025482536285262712777298057 0.0593775510494413283445929502350877 1.0612134431277144784324807714314840 GT 1 -844851545616452394053.1755296735375602982594092832242307 3.6037565455070802776841486088409065 0.0667762295193964115625728795553453 1.0691102671483343319078284043295495 LT 1 -121548014912479480909.9675393959231508777195186269988371 3.0260195963958181629352916434746500 0.0656909135611822429085734429888750 1.0679479678330896431958243801851209 LT 1 -1340974.1822531215438468466692181137113299 0.0370202714302536197740817228313790 0.0061649492266880608558752745583173 1.0061840309920051656630039485395855 GT 1 -151762247031987382172013802412377.4991453420973848281444947453723034 0.3626712032887182606900017803543989 0.0533368946879583258302386954520604 1.0548119984963935128275211443070941 GT 1 -1672985445.3681858447714155512977189532472764 0.3772369639523309219200878239558579 0.0446439223635870948651207414034451 1.0456711518312095554660598967519542 GT 1 -842588594043927271037544404859989.6053990158586800458855855852855076 0.2723085793092962918782304777184558 0.0459871279749551224882052789418973 1.0470781149361497447490643335336868 GT 1 -168361328413744.6790259995487835079528480952510508 0.0529827175944282680531912574872011 0.0048922510194342139407287906846372 1.0049042572538004928327842214008319 GT 1 -208103683251.3766768889676204235912840864826789 0.0558966556119955427614572094326921 0.0603678347544137626592581519106087 1.0622667938697465384276026136264801 GT 1 -306962756659341743214737700701479036210.9190507950380942274674339172393589 1.2353888714469383044078438824580540 0.0971173694924130672926785825737576 1.1021627113024255288476465320132302 GT 1 -2.8004089682746615142879097067662600 1.1503144365698562163878594948438989 0.0882505395319631891044141301720678 1.0923900410478007784768872014087690 GT 1 -3316640302005.4713070142228299846886095268555803 1.3895192905363861154135257212555892 0.0442920957079087372522399566887415 1.0453029520608406814233089949536517 GT 1 -97876381886.1397030079282928698309354227967934 1.9206041691703939740044350332814092 0.0351582987656337941854360275766679 1.0357912312708528955770060735434459 GT 1 -21974239.7423623386480132454498209234309197 0.5300218242920730409351574002429346 0.0789612681729323391912882807818694 1.0822531895100284606729978139360637 GT 1 -63234890663667425579131452022.9090122857718268205255764345842756 1.1848000856439762515906200602388572 0.0738440040306125511017337022381758 1.0767125963541507526861180920266938 GT 1 -367870677209991515380.7870721213714751223619060475592269 0.3485940885241033045105678835279249 0.0790419533880589011700924912135790 1.0823407957600747199476435907410840 GT 1 -116721.6181921493940359074297316873125787 0.7232530425628508987614859127358781 0.0884253152695028731512412770038792 1.0925817521470424878846670005905130 GT 1 -80714406759452048534.3217848425474248066043492354156351 0.5852147996957583881235908268318959 0.0893623971507496536085178103286819 1.0936102623488892435008344416664978 GT 1 -2266040261146685532810.2202122214351753913953563061346372 0.6796526635200962648980401976191781 0.0858936270318205108713028096336118 1.0898083324965638662371264958149923 GT 1 -964638354085106078120311390032183.6783296757261836359054830154635151 1.8743827244896053037887849398357508 0.0471795847739918684721844254246363 1.0483288346109698487683658413537734 GT 1 -2958661060171831670510110355792548703.3486284941649644696937322443470443 2.9393260114817030583781978000428951 0.0200381857091975313729641026259919 1.0202416730860603831019905572610052 GT 1 -32428389069698539666889337042455.8170981519968384550323029878538643 1.0252682957850413370280184903552271 0.0444640520339946895794750849228574 1.0454828938577461586880442744382425 GT 1 -758447286911234555990.9637560522644327108613662411096274 1.7872908757529741005172086697546097 0.0782916674211494728233851118936995 1.0815264475776300982916904828957948 GT 1 -105169936854735349411894346874055842288908.9253885692212743112467756684171447 1.9412534693268261360366870878442669 0.0101635436595436310719192913860299 1.0102155451155006951450901022950461 GT 1 -12421702100628965491199639879765151599208.3746649014765414456371636837514562 0.3013934611708919677281166389760740 0.0737090572573247484598692830396049 1.0765669006576032031481919477673316 GT 1 -507856924.9615923188856698008576734827376100 0.0195203066301671608869530664953153 0.0500163035324441028804170731154216 1.0513104561479117560105979772591450 GT 1 -372.3097586062543667331815280021830869 0.2383573952041260046863298444188041 0.0436029713005258339030408369377418 1.0445821501578391921663451182885094 GT 1 -116695529875684609789848567644158931784711.7271430492259121704751299460373223 1.5401117628089458349709182466506386 0.0327674042974694065789120170829790 1.0333162791508599227107047153079995 GT 1 -31672004370812089012.8658014842363769452877069413071488 0.1907928991693583009962583715989677 0.0986206295910680133383934604174563 1.1038290551546303655031411461285537 GT 1 -3595391785321137703.1539612312120835494774952007828741 2.0143119373723434857318438244865867 0.0375728097240538370157709116988883 1.0382968621480854558608389135641743 GT 1 -51789886846038498524013489206086.6886276999738038992031217874116794 1.6313127000377910910355007743074178 0.0201324528171056505360267012958472 1.0203378723877280884098056584423961 GT 1 -6962558384745576.8565617138807937540837936245323109 0.2040519103637327288150321402365958 0.0197156982318223845167775092892822 1.0199126455444240809636302628200255 GT 1 -6995249784.8721820574629568849069661809323202 0.2156971590314042221726216232259457 0.0064307136997274104881224893754246 1.0064514798142361119586599876274068 GT 1 -46119767147092468869.1533188749038538894822696084201682 0.6821929819216245926128024198164334 0.0381784755665141033644478005943518 1.0389263710653388092745863491790726 GT 1 -26095156428949.5451938292529489917310778784905567 1.9452151231110475704022875625673766 0.0609436927246131778689516246420556 1.0628798364222051174496972857014896 GT 1 -1782221443273284480333.5200497655092657325186871161476395 1.8113754351512045183332218815103059 0.0859898891089883781859961994062873 1.0899136453451780034490964670180332 GT 1 -523219798.6102760452833562729947921241774788 1.7992378108660416040271945337490990 0.0980695025727846045587604651902876 1.1032178157384076044556399665066615 GT 1 -25981.2807634011253511397994065923628763 0.5614996194087105355022890463516960 0.0679374786105824470601536331879946 1.0703553835106563517501666989974884 GT 1 -45029480.1152047982025206880896105826344685 1.7142626789719466628612773426753372 0.0692142339594472125159511243455107 1.0717261398491039991930914778361217 GT 1 -2203053.9349916766544982861167384984796031 3.3307169724972304512959841445931053 0.0880643933231609764541064276500433 1.0921858981145693304065942515725171 LT 1 -400339865860384376799168134146422606050.0526690192101808670194121198183755 3.1436298376758122504816912903359154 0.0127946564711837574830683603905598 1.0128772130328425599510753950840011 GT 1 -11439020.5544224515894228468842729665674541 0.1187449246955206269009873446215690 0.0444866111162049833032787494661662 1.0455065029627298408691303070793780 GT 1 -54081248761382309.9152145890921655480038989033742664 0.1966895809231197676530353843145995 0.0480085711063593343323928610845118 1.0491992474942838479260360530785235 GT 1 -211292623566471989.9837158057323873714743553629275812 0.0966200116081741971103211601812428 0.0896152703079824388764066646780031 1.0938879889361357403678164942368678 GT 1 -337612113237.7476430310807184082190370081322071 1.7108015869027263932184370082317270 0.0154522364699842243230541514509416 1.0155728665592117861559324157890678 GT 1 -4454434.8563486748744435337882348538427789 0.2017908537877943576491543615802752 0.0043437610302488545446742723033582 1.0043532225692433624863318533318190 GT 1 -96797974663429887250598212352643318838.6998322336639584231510311504090792 1.7718863366426716586078654614900002 0.0255363975867246685456631442713733 1.0258681107440820893589058656994528 GT 1 -2877428930004475056222189898093588859516780.0879096036083549990984966119886436 0.7537364690797644360341385996893164 0.0927133229072000652859694252463455 1.0972968070400142428822238789534308 GT 1 -250807165632029630733.8363473612024555853332444282518757 1.0440457971187150354688647311578874 0.0064108639199203507641617819468845 1.0064315017595584758107954912465653 GT 1 -89146398051504068216349.9881975618268110856477625427495609 2.4181279073292386374104090970896262 0.0638971232114414328373858816538888 1.0660298974454399208406513729003488 GT 1 -252021796382468339459716460716100576046460.5718841693002022513496878905669295 2.7315979832261852477055271588697501 0.0299834481887276812641375834270739 1.0304421439073310571002925812930215 GT 1 -32786262387144673524547021346092518.7196131203419999492437909459424840 1.1903871596462516296372319188272885 0.0174787396462793926699713552038688 1.0176332964359755740447138433211125 GT 1 -41232906.3859851455240636741823551896609193 0.3703434248474396067753257046146268 0.0104685416570434347924881005776628 1.0105237222842333424631223489109609 GT 1 -723762344258126722048558300987442.6734995842107543690029157845821640 2.5672938787126761387058723215195187 0.0270303222355881695064367273353360 1.0274023609359817521532014801440605 GT 1 -39188468116836354314737905740.9082221412709507450742640487325361 0.3215233075067703666686627094064879 0.0372556713758297082604158821990927 1.0379673971129139172472131162375975 GT 1 -25847016047455.1251678300327561265919709367632731 0.1511423376381582943993393271954275 0.0375755437488083335542237509308372 1.0382997029122133627239040913115251 GT 1 -1166618865666946034300165136319445059622.3296442877434107784415074361871365 0.6992436351161953531992541208581335 0.0155635671349636969303414432189519 1.0156859509255586022424462911268875 GT 1 -31527001790747.9480200203940090932119641615761741 0.7576048281484168939072454226332820 0.0920333009707986392785264872412747 1.0965475761313629438870348504749272 GT 1 -6430878536125938721470879605578416089387953.9568492284560361032150151733004920 0.0233979622519863316010632579588966 0.0802441297973766535481709963981544 1.0836470026282503564010979843463691 GT 1 -557907173188119863624806707428.6365351800673990999452426654050238 1.1016400897153222563396591091597750 0.0585793915776701293581971962880235 1.0603652590051513311164696519564058 GT 1 -3.4471830774520444816921434454267121 0.3498517989506221648677036635910710 0.0242928283394478004978568547169061 1.0245927666230799905432557979755608 GT 1 -31329928165270068600262.4078020313663515598195325380837784 0.9008176026626026799879853700584247 0.0946090294580414841967727446501772 1.0993884169238029114304507597604145 GT 1 -252171.5234141467355169116366346892568300 0.4466018240286910714637491613728078 0.0636091688109165582331035104245836 1.0657223349670529700639776310450130 GT 1 -7128788.6511109577679847985229435270849907 1.8600700880605366747766009691233422 0.0099812468437946172203456629593518 1.0100313934508842432753815216110006 GT 1 -1410501276041161486432113695341305440.8436693330987294425774130350497206 1.1177278406870822863133863129172210 0.0064827051075028026311283606992083 1.0065038090969954449601624098882544 GT 1 -2844.4916664363308356709867662895180324 1.4592299576237231472072225124126310 0.0622566561485828741476752552026444 1.0642789880443532443229492821043794 GT 1 -511299819923.9121170076165922852463253478637303 0.9957339041136294847709661274980341 0.0872281822642459851822627694887026 1.0912693554335173536004159069425855 GT 1 -709708343805744329267008821366.6251994540356087882381717071488787 3.4040566522124163234710709636734455 0.0658401048562214310576178470765307 1.0681076614612170739478295483714613 LT 1 -195330449250395.8627790915642125836829386301685254 0.3578812683457453447922436378320330 0.0392159315958697712039147477259320 1.0400055899482084599279285279393075 GT 1 -3.5852800013691307973859364521810136 0.3732203229382404508616322264924723 0.0147985559026300041504522886673093 1.0149091469457505254174556608967222 GT 1 -83364746069005855893.4814883732672351721796040462583761 1.3438370341128273128081319128432782 0.0379848477517309668870663106815905 1.0387250776626463230310308360801969 GT 1 -2599514228900500364593.6954662460746718075686065703413479 0.1302233200384632687739474420884846 0.0228745774762498644631850491625380 1.0231402600264870923277184955353447 GT 1 -87611933.1210137982145648039514776031893581 0.0686553381324730923591664847794614 0.0135071945154261672982645344291719 1.0135992465165891535565119706626738 GT 1 -229923187492491.0413083479807543708221688531407160 0.1557102780355413177762479941465499 0.0778168877769980844267835121268375 1.0810114718658196468549536427117924 GT 1 -951398043326699476841927353534564759901778.3905537358873605543489230344012368 1.4072813830343538000307635387058025 0.0663838727638366452826684108913783 1.0686899239128841873516345438035020 GT 1 -143293073407552695631.0926441390610674217259890434062506 0.4868663330283549733790109864337697 0.0508762258702125986064733729475905 1.0522160630288833197104934531767892 GT 1 -196144192844114507121173787910245405998.8235556387488881809986845576371037 2.8242439640180047728324115063803256 0.0566173462289208198306420365930507 1.0599817664815667599832069333297677 GT 2 -61895680538410329506561735026220045220.9805274615891346986494078554246830 1.8275390413295760106826563827300700 0.0018250459291925607534861611382763 1.0018267133545751775770147117390883 GT 1 -66621821636990555176296757492802923.2821453287540376310245691859744922 0.9801842978827593657835746653144407 0.0421072888603446893739546601256291 1.0430194998302427528754859647056430 GT 1 -6512479948998948483.5470285380304893997489171183997083 1.5935488188435644585884776217019563 0.0396187528165939420456257633781662 1.0404249408737733040981334836369975 GT 1 -40492364448098870701292390509.6473134875766977458601656246351000 0.0795254300407737542560821300145202 0.0848226743584897465960281666540752 1.0886374339678103866040480238977605 GT 1 -284569320961884560244745757229.3532537966010671659648771256847120 6.6259157699967183446269963588423993 0.0688384467133584320780487272867125 1.0713224901353979019991037197155663 LT 1 -1655340.7742039494228511800024569191494782 1.4850301830473857449096920157216672 0.0028100442935452443464679772255593 1.0028139998799977123144319790473443 GT 1 -5626313638847976741288873972799.9328380522232482110973538904319633 1.3240614505009959944138719100647979 0.0079895363815646555471668452122676 1.0080216237504390614179674151119517 GT 1 -43338600102403716039541.9718455292547334336073141589972458 0.1017995178338726996613952051097736 0.0262293753011716918658742267496886 1.0265795013294935940060708012663708 GT 1 -69389432.2856301312783815229099616456909106 1.2044394127124622653291870972375124 0.0331530991941178960514494359147912 1.0337151199456231352488549494707639 GT 1 -9157059816923250202672420432.1842148912993958908126542184001580 0.5374348003564246410456242918105011 0.0341822530599663330009578987261306 1.0347801303335608266136487802338200 GT 1 -1.5810780107129568247198538550131057 2.9642905964518581785047403413230652 0.0305465916511092628490104627955084 1.0310228628560906726870550895232738 GT 1 -419833338984025800916212459701193.1893212947473037207934330947330559 2.4493895201874139785035720014014456 0.0834692785027910014371439629343005 1.0909580977470714383500235515630412 GT 2 -511903913497961366944491521159972005994906.4804970896189597746934140125685426 0.4734803043915821249150924413569574 0.0684021399525591528849085575075148 1.0708540380468941975931008263927327 GT 1 -105702206587651792828519.6625753494182453291692367300259568 0.4965504034774293784637595748554502 0.0735352940211812924208811884974963 1.0763793279069570727888150308469639 GT 1 -67464.3485561898482512004836353252993545 1.0416967965257077312627317357669995 0.0017801769838204036783451922850595 1.0017817633818596790816424641517377 GT 1 -31814185738802088.3362292601439747606506895229061357 0.1758709921764325772365473697054039 0.0169254640933702795345589164403621 1.0170703367790879054794956527676715 GT 1 -574054014209977427871.8762358792287468517055292947029435 1.1053129796010298737915410651973334 0.0973889719872082258714804882602141 1.1024635736129212472774369429113562 GT 1 -1328031860218218.5167668428574443600445473368204552 0.3993967610792828697275121315798790 0.0913616812936556249846058965302605 1.0958081531955167444153911510495608 GT 1 -8763.7245366618000683435218190365624741 0.1154754833518504229284884309641546 0.0451758767582757234051289960373028 1.0462281196064966025753246028259444 GT 1 -2.4477952919803010563266231534810831 2.3258785162659827066248743562192996 0.0539816615850759305357522983876186 1.0554933249015280207246728274744621 GT 1 -1086262947394368.7773201915555845342790479270794276 1.7124714095470066389534455483156044 0.0120022278636551148317191723408710 1.0120748361595394282530963125733103 GT 1 -202327051385770512935356501.8869243068028781185567871520953911 0.5896406173105550388628886952695711 0.0360520006976690998309317610762437 1.0367179284589843834217652050086912 GT 1 -129965183633211824942645310695649564614.3689831244477501892654632953055126 0.1336065204120630306812008532378796 0.0471326671457070902426308354258973 1.0482795950350303799159062273762683 GT 1 -97391265319107243799246525631363952.4453665001377434987192419984007657 0.2008302510212434829217762678533357 0.0910661484124178812613284208581750 1.0954829579832744894902731237655149 GT 1 -583937389316.3544526186224432527133854112132074 0.8738867431139724016198300004766073 0.0421032904572277409963043714641174 1.0430153256730271546149918202952649 GT 1 -107441861686498104656.7780789410852361656142659043693227 1.7880897129682419520378314931088562 0.0783151750953301724585439671667777 1.0815519523638299831530847166300425 GT 1 -955721184.8319011133672626578014433166273491 2.1090460262893097922250156917618673 0.0938319383874359594423666242362216 1.0985304916732575683644199398039555 GT 1 -2039397454266370.3451597276393471039060663265834920 1.7821438635753003534122223647224934 0.0740932720299865434958162578207014 1.0769817751434618364320753846055952 GT 1 -534068591505139.7850063329547035619457884530286807 0.0225797154942686038577685696092009 0.0362664604570223468769868474038286 1.0369404338426967891531699299230106 GT 1 -53834582392756766288694719413.0781208841064498901643041010883099 1.9066446452864417333307853256563354 0.0190695021596009848395599777480670 1.0192536702034930332592173710612125 GT 1 -19039405301.1331962980904388538462229788281066 0.3322424473351672622330968764111110 0.0750809824195585481730687796057340 1.0780490938639957959636524664834486 GT 1 -3600162123287.6824679942330035226561359887010106 4.1085212815741222319315461127073137 0.0911137654723597615474738977723299 1.0955353471721898033086812237809185 LT 1 -4230930079365206185588231925.5693616307147130267697874060327105 0.4866282052388787956695966504406408 0.0226060098129488227811849018100696 1.0228654429402563248220213596213105 GT 1 -14783204558627518463605350528239976982027899.8093119532318614556417178046848334 0.5301885622772088968437549374559954 0.0779517094765468960976220930076065 1.0811576809582233528697417323304838 GT 1 -20042959069035760706404250437.8663105907898122428412664330828084 1.2559719622651404242736282058105085 0.0141637970096033834958031161206746 1.0142650609072027981432245849929323 GT 1 -11239397.5251245135533958791955646079983261 0.0637253490880324429409689099034104 0.0129887162291752809048829928882590 1.0130738072220850883011871269731802 GT 1 -6777879.0603954562940645112370895854021226 1.6884506112507985403464418289094356 0.0690666347943918945348732697108318 1.0715675776225174726218392055886827 GT 1 -1688288796708464.5285705479275912091484847793211676 1.4655096344202179466863383924199644 0.0973167226286438415839957661399901 1.1023835319727438209304642499432945 GT 1 -6694165607048105819871846858017883826346.5844911594364840636468204067880366 5.7135534616822314126685492059792938 0.0771370609870575243658935061322476 1.0802745506163469589837734382972723 LT 1 -92064741.3229467820288986283849129999022476 0.3159396335785613764291298681110827 0.0027052843763414552049369536490297 1.0027089502711378313870901015976815 GT 1 -21434.1679082053264849963366831246684702 0.9924021479078661349394091299198709 0.0503331835349169910171256367363065 1.0516440754144607441844009441935748 GT 1 -129.5754861994753013567615638836715491 0.0535711583730611832859388729516025 0.0966639883830791194070826650266671 1.1016606888913151251389390589477400 GT 1 -40806967875.8449560855747818610769527071572537 0.1628704732477192100625037086054440 0.0391837911457793176300540991951284 1.0399721381939869136969235985482190 GT 1 -26156110219451224118353209750.0889745341204990538493964107072469 0.0637226292874507969966658244681219 0.0953573541994251529289872813124212 1.1002152797812251048375005671832276 GT 1 -2012050432757054231721764.4434876019409202880985127938088933 2.5114964515101478542286537476216455 0.0864252416704803779903720538787846 1.0944752515712430390705414675339578 LT 2 -202599033108242174888.7442415643542775558440854077637034 0.4577917956793041771319454043155467 0.0439829277925757755428856769621822 1.0449795081326304718466935823435272 GT 1 -192963136244173976750640769130.3928275524824536923650879033595233 1.6640981364297179383034533267057114 0.0060257932874178303249088890277869 1.0060440216435493202725793666945299 GT 1 -1925868436236057672869333847807.3789743049981589558649336528638419 0.6518237357533185060629354071662804 0.0608057569642282002348448683343608 1.0627329595738420506073741305372463 GT 1 -9530029187455075363146413.2671195162665237862550030887722987 0.1107720912068102199544292413040513 0.0347231459005751617016880629600404 1.0353403233499596696536584998967095 GT 1 -4912148.1862643301751587977537142519328141 0.3983936433209874611755463934464331 0.0098912199735642011764452057819402 1.0099404630751546076410277785825887 GT 1 -10881495128719.6410067719921524585520738167381821 1.4904569575464396902027726170155890 0.0778618047518045849768314941635228 1.0810601802710562246566648209147247 GT 1 -1745949384202515439806879495634783366232412.1683814931415676419502652720470495 2.0149294964772589504744453084154917 0.0498831219694275596332301474468553 1.0511702724491937852763895015678931 GT 1 -101202651438717525692184.7397795877347175350903751871170762 0.5610114980731558237183253663376557 0.0328854336984689864589998790844191 1.0334383145367146287507669439460076 GT 1 -1242777925565944864588181379.2119769593883616613029316554734834 0.6439872761337262462239881955584296 0.0221273185712326624263471199590503 1.0223758000099808005063689784988350 GT 1 -2107342958242339808703796797681212491763778.2315465345128551601465052844353556 1.7059759873093486248157331817491258 0.0284180913397415388933331759753371 1.0288297021795368472565819429858684 GT 1 -3738145614917148522905982265864715979.2380183792780705420582621643020252 0.4779297910518363777022921888534932 0.0326433022233530458558297604241641 1.0331879810415869145492691357152110 GT 1 -113829120717530495948884474804076.6828729449578255173204276109876846 1.0345859787266956421416454305738103 0.0059183289987483066942907954291663 1.0059359117156756930028410632319414 GT 1 -6155303.6489734507078566974130805426869489 0.9002987486997044746316841155156329 0.0992673904167550243279066887797347 1.1045468361367621535231511683452946 GT 1 -1657674454847680885986376.7260357819743019611607379659189605 0.5091594858413858743768806028149521 0.0425801970202567956841399078133300 1.0435133181142418826908782948122979 GT 1 -9053572023335565192501153547499.3449308417211834992936911437855976 2.1867665922897266779397505637056022 0.0965772282423248609692708190791928 1.1015646493517603232515864212201158 GT 1 -539927326471385114961651507034463045307.4221020271590985149887013137415699 0.2773213224625617464605701159408802 0.0566181739799965784505212832762421 1.0582841726592745748415298726402330 GT 1 -5081606901220.2432485015355455978663443740137431 0.4158668020354950130359274132742388 0.0888777726608069619224181049591320 1.0930782224023016533730033027228294 GT 1 -735305217488242878415992601.8913825803487946901051549770236291 0.8603997851402296590648085999687185 0.0662613377372045140305287450953186 1.0685586847637979175162359176517595 GT 1 -19617147764355651556247147488712.4471401334532200497708573307773410 1.0176016652103246812989300492309644 0.0060969122786792123149435805198251 1.0061155743409827679691207615720194 GT 1 -726.2044046535486949966666983857941056 1.7913052411180469547410262803434572 0.0776858470443172290133719986742551 1.0808693835739309332893502705423894 GT 1 -709044154631.7304065594408441787810182256362608 0.3738976653256599706807787698739575 0.0778781728801798924629847878173910 1.0810779306188132841000543947595996 GT 1 -5194995033929.8770596821183107764909285888679717 2.5027612722201896658529173285034679 0.0175042963591343550457122774751102 1.0176593081328969587667881897000501 GT 1 -2258708717345240.4260678527767533168816047841106541 0.0173091393641104336285701749880866 0.0005744355712126502596112673587691 1.0005746006225359815765727322809864 GT 1 -209087674046217550154258.6778731821668144342734343483352063 0.2014539006744274325518522593071264 0.0366674108244533123276460766555929 1.0373565590261987294915919493839914 GT 1 -563481811259194747985270194776458408384291.2186469013077830987810800981800283 2.9050620464179277974325758408376207 0.0763614077190909909254083574354644 1.0794344177483867889778465818933789 LT 1 -84228791520259027688.6342928916252975314921359472342809 1.3120267337129211532723863226894259 0.0475650137808158924576506188130150 1.0487334302486880073394419408153417 GT 1 -503336519761767559299318538514802803981.5891500012661053972795766868767169 0.4514303007841477748457507805889826 0.0586328576920053712188064533183618 1.0604220536325105482460249906927505 GT 1 -1511909298698275724.7589908584992756655455951886067084 4.2126294724924382789583237891605217 0.0832930495777051764771045590959421 1.0869674320399924931751826593705586 LT 1 -150097586706620733547414583499.9107184824779034358473918616893951 0.2588170030728711731914824281641215 0.0386847569403273996301415070737952 1.0394528873215582350922278611351159 GT 1 -49375455008386093910904770427095727562.3019107638910695700165097015712481 0.4416046745255007357374333574775839 0.0062534922758474350848081335219776 1.0062731272596168270203770951388689 GT 1 -36576322533655107397296136092761700862.7877658978305716122248517253918604 0.4763667833723706320478903613445031 0.0252139732138915160333619724342272 1.0255372917756505044646811937830641 GT 1 -5845443221970984499380899692.4971253353309216034306163507809540 1.4889160715648071831988183381792272 0.0707301770475326868560751238062159 1.0733561378262588073113076174455058 GT 1 -237.2759482384505287082284716084743254 1.3926658713925225277764124484264524 0.0215449325199673618843278483100546 1.0217804129959243838137036767649745 GT 1 -2236422774686999213850152.6849735174767334053319574290684627 1.9285313378675499746831795589644340 0.0044866617571511762258547332921418 1.0044967570313836530017825839988659 GT 1 -2830942634096220358741303999700691645036.3796097267669176950649141352373845 1.0308285273075197158251331847949052 0.0400432341211367684305313767588024 1.0408670310772364379957610489556980 GT 1 -93.1829460371494735146859407692604921 0.0557357462198604977044294291024342 0.0092133026515272788481274403122389 1.0092560076293769722722160955477993 GT 1 -3266.7515402755489433814514700389932102 0.9134442459470472031874374378728931 0.0541315896844583473646834936732208 1.0556518207520823797018884976761854 GT 1 -26660934.4168807013206516168400241006419536 0.8402605541724847193273606572942275 0.0775389646333037267097308017392065 1.0807101420443899152034043511313076 GT 1 -1651.5240672054835945345035761714320061 0.0461870063192525401023499892726829 0.0941458793420999250048832590755015 1.0988770006298000296502081356884922 GT 1 -3449.2788405844304340648175868487511922 1.0512416801866413995115531970900346 0.0461839794854208662136983592486150 1.0472844767455699627658343632841044 GT 1 -25528306880391722499258020658.4008990533812422514999112855100262 2.7282753766074494842727895574662968 0.0002600107311067686718859356722421 1.0002600445397574489958423487756326 GT 1 -652541731802066168343643409927.0976963051140650952397175139012912 0.4699511456826317028527435304474566 0.0635929928908488414498211465713480 1.0657050603635294870361919542655072 GT 1 -8532528944.0721609685229747847556925936017700 1.2772175560796851015608593519222857 0.0454554533014302425562590716321887 1.0465209667130339571855629256434905 GT 1 -1692278223554.3661315713704075890763655415106134 0.3607793333564184528001537509721300 0.0646941999932765618392132024341365 1.0668817443348104813946522228497694 GT 1 -24574723492713276.1180079946730641777172392997532152 0.0908631800687703048001283382064136 0.0114721303463902813707326763207279 1.0115384428856382149891856105753857 GT 1 -52654841652119479.3890906645475750097154310477980659 0.8107581581169303340784985146261594 0.0902958730523929129951783395637328 1.0946358675615673387863305873366976 GT 1 -32568003.6225668698328053857632926676206464 0.2455315745087034847336847034728013 0.0252656569428062419853406460060327 1.0255903137699074698419317243993443 GT 1 -28479109441916975246.4059830253206149247682817008082136 0.4561201781626344591185817897540035 0.0434497298620895616188779560575955 1.0444219351442241272833180466837426 GT 1 -2097002544446732181263967239982695783137.7182466358139674172966660686102620 0.9065738182677800241072345847620769 0.0121402727133694317642876481041688 1.0122145677444125688671689588647663 GT 1 -205789018818036836997906267313753874854.7682956620765963581601479063826801 0.1599338122339790113875442317353226 0.0539523538458225203467184228041755 1.0554623452850719607111775716202938 GT 1 -9649627044904963686100723717680449.2404092887588770499741434208043278 0.8338625616397153806676729866147858 0.0633132077607289266772203874644128 1.0654063191768381885151525174243689 GT 1 -63231656699926067553299248123.7070435779197784429536168504059365 0.2933271231171052002304751481007597 0.0683147684206392420336651883089353 1.0707602556985472642197119847993795 GT 1 -2248440673329921564536660583070717259.2599476561883670156349544993622252 0.4567231237816270531294672450594094 0.0567010760166321500911991365607707 1.0583720540209609956073884362482486 GT 1 -1174796497307.1926316747499466376367008579829434 0.7124891695863462499810312366721986 0.0748295473341350910039802588924120 1.0777772852936373224692631417483470 GT 1 -20994089661952964293489766029125325617056012.1904088213674324608377540628292488 2.3292661353296819496979995499084427 0.0131112586911610603254791049596696 1.0131979700070146483092901456629813 GT 1 -77921541842715753943220002891039157437095.7059823718937210890042454245672217 0.8865707235104157377807131290379545 0.0203822564233875078220723910390986 1.0205928409846480703956399221682766 GT 1 -3850921.1419104416149755426506140772710589 0.6975487654227831893194198901670447 0.0306236290804181733941726009084715 1.0311023308219463642606961424017490 GT 1 -66788.7475680876377984307401776933073274 0.2773657211554286666248587055378652 0.0696211658208662493894784428775318 1.0721634271990304599372793184720026 GT 1 -1586594532756119078621390198744976766944.3900626711201890033498817653536335 0.8659837012423777619317368320690919 0.0562915909121360584299318449355655 1.0579380492306805216384427748166734 GT 1 -145209479.8228314970355868366718662083889800 0.5955155364932715957187203983625348 0.0756454929707310925428481270937189 1.0786596153051937982915237437180249 GT 1 -503508441452267832999823178417893153.3398480470853323445608812064801793 1.8831468810163017546112775202714284 0.0585554899574432921719497658860690 1.0603398704417394089472251547050583 GT 1 -6158969195984539.0488548624013721280652505943047185 1.3125781561709719777005189686182630 0.0114718349846499205117673469420148 1.0115381440961904891771832727466005 GT 1 -78653116861691.9541152201113014789282377201818498 1.3272050081287265756984407900199137 0.0449750488749753768566484031271481 1.0460178120102200314041672584595416 GT 1 -305459547437540011219234539602249467061.0147539659465312250233039376057885 0.6880555583043957193691978659399291 0.0997323128937579637085708232619357 1.1050631297633484246555541340470681 GT 1 -1705721164312601695701147233681149561644.3826683226827390326771825863968500 0.2750156181496864047572234426669544 0.0552730356865317974488082169581092 1.0568593198881556107874248168122335 GT 1 -2080354030160364906418790778870048741.8200613194529245969038523262725829 0.0428162368604101427101649004570396 0.0767261324858063927388355018947295 1.0798293739570822405660442381466136 GT 1 -299144588136527309865043064577802761635.9516522840133429798102726797893280 0.7221233808211069693196398167551610 0.0286285490571045966220779367112124 1.0290463391020300725595388374682305 GT 1 -18468954079285754862955661544881186358533697.3580091480482611027296618970610585 0.9795506352300986191839682024019473 0.0685844288599809903149478911294406 1.0710497305791669112775099404921541 GT 1 -239101.6605328461177419099518721562369859 0.1823934544562813788952168151739483 0.0943266938516553649635853840132285 1.0990766272073282381376882486541649 GT 1 -1212494688624680136876690253166426369690.0598692431279618734869134949956750 0.0239561509877795201819125996839165 0.0698848159172429937195055744108054 1.0724468466516636847342785033540493 GT 1 -129843989668227701192245.2780964472055535985802494062179113 2.2636235013692173019833552802549332 0.0568523203447459202674078810487041 1.0585324024009746231190123867842190 GT 1 -1175946003924666510922664156581331881192049.0038725439360021624995689602533798 0.9926803589943393336199451434626835 0.0299402119007571413280566393469903 1.0303975721684893864736630394089428 GT 1 -186659936959846015.0906909230330104351191076624732867 0.6902419153159152294682806912320445 0.0883029227771000855314721779264390 1.0924474962504278217372586327655477 GT 1 -33958245023738663919190589.8853500408816350336310131069565083 1.0052968230575824893786541370089224 0.0875416416067241747024669628306537 1.0916128292042881776413196266499464 GT 1 -602523328350866278249426058456157015309933.4542109837319399166155689132929078 1.2633571343110225795201093146023278 0.0684970389749823165999341800011943 1.0709559101747274172537122401597742 GT 1 -3350895816982395.4906334858625232145228986283203045 0.0560412150284556218776275344010435 0.0863488534846555339878433131676102 1.0903064581586337142695368962992409 GT 1 -455259357615.2340434678430979590529953851708708 0.2329316068289149151238582098713088 0.0353709584710383682713647124876032 1.0360116644720955515658629542327779 GT 1 -102590407851571.9117778484811964158789275670820338 1.1543448210872504259796954881450320 0.0558037772639094250955064595699536 1.0574212713692780520935167598303159 GT 1 -2989770671551547554547148.3713351171679997058600443515900494 0.6618104257723153886543264106926359 0.0505904519651331041418041896971717 1.0519150160007363982215340558909454 GT 1 -16361395867033.4843419270788496390291333320009832 0.1194374499189461863127312055417825 0.0145800368810769818661024918684806 1.0146873701786368902345496273013432 GT 1 -1618120.4766846095542831831685171968930127 0.9155203789841819950764227255161898 0.0418658813988699487395043364122859 1.0427675122703558151516631335387804 GT 1 -204352462039461630724274060772111375784.9828728013552886124686358085026127 2.2746308246257550269828410180098275 0.0247269823358851398481603605981825 1.0250378290650047116495725811478950 GT 1 -67070757224213610386775273.1976856998209119995271319460012222 0.0919903673540764845318236495098576 0.0958521154363566495578195193050291 1.1007623428501268800470672640381519 GT 1 -1026851334632302289292517225360900497.0557554626867164718526030555852992 0.4005637624112658089190045491806471 0.0247935771496374711590045234034986 1.0251061146489436459789973147001746 GT 1 -95419766694915772317502212.7667032679118114898745835971941778 2.0543454467146578514042761263604579 0.0206822883185649048237159398514728 1.0208991623560012099684327140724500 GT 1 -4488708303983653526754314.0220728784126098451585289024884774 0.9326225160292007389339316235635167 0.0708383942350959606316482560766306 1.0734725986071231034366493016372361 GT 1 -15826880860875318339773.6630694280709808240975471287177167 0.2965706594356877124851343785239025 0.0646167628160726682578923129395988 1.0667989543299420962918763197290816 GT 1 -126507918473957851614.4228775185900401141518770523466557 0.5402047593724660281690732309663937 0.0317650407425749125279997015319219 1.0322804946532678979513654400601893 GT 1 -1588063856012645592834733437693744956.7410654015857403407991281909244871 0.4215378520414845234068968247536282 0.0826555851595525055676135385149959 1.0862722885386748875423227318167276 GT 1 -153185331163263473723462908.2558573731913164024388854317402045 1.1716800848707549435187771424363551 0.0970893207333577056262930105208608 1.1021316459984333192441192549634141 GT 1 -8532249552234332759827542153206226.6657769216698720448756831132253590 0.2648046978911345041970507251592608 0.0084285157886150133044497590370593 1.0084642365849601611564788470622014 GT 1 -124.5693534437469833134774959075929828 0.7621750011000216334184351660690768 0.0858654281429712292894537116162353 1.0897774843866018461435637523514401 GT 1 -7408814947927931359609411403670141787.5413437887682759361531625593431541 3.0282087326359162170013259842870856 0.0994744381330070322421166449159125 1.1047767284647422004918621076345883 LT 1 -34765247454923015164353616353060821536325.9130885232836975389627847750554806 1.8591372659074116977137618484024563 0.0074019652176589191520746175722112 1.0074294956994437694455400082364157 GT 1 -16035908613318013.4837330066836996631999689463341484 1.4132958101231315670087965570443094 0.0173704214109322438915215504669473 1.0175230573303452723640556499459521 GT 1 -6513264.0952137084946153220823868434345591 2.5584379664442933945095630905004053 0.0111039437873742338790512105761647 1.0111660527689265481182730487522023 GT 1 -10105102315228968.7482794362120382783611340511710722 0.0198938975614943573255813896700515 0.0716793266705741781721043264407716 1.0743780527289694172093571068345769 GT 1 -16599708690378510417528284580305015191.3386976200553200313547423444940642 1.4399698852853028551256743317365546 0.0150674916518478795499538927441186 1.0151821596011128612834226659362204 GT 1 -3601.7990090154519320700307039992337313 0.1862144516189887814972792597785812 0.0067560370006252652341656057135483 1.0067789623332096162925184432205836 GT 1 -3127402856271002460201252.1850544838115199686477558042959092 1.3932241543361393182508803062687097 0.0287854840196939944209892269040401 1.0292079123508880089392156464780133 GT 1 -94909155108417492180784.0411415405176737290617482966203018 0.7848603807037490131144840539431792 0.0553804953253056551917507560823222 1.0569730731257471078589848253863926 GT 1 -34501879239484603.4900891085956202798505876145604921 0.1678174681362227120882676570872175 0.0925982376242913786755630417841417 1.0971699695283401377852888096397226 GT 1 -5579012572286434762285483527.2168083057392990681093406741717398 0.1103454636093374540283548481564783 0.0559924012871800387689082811989187 1.0576210633851138351448587003993896 GT 1 -416.9897913884009962937073567439776755 1.7740976666774659281515666683378766 0.0291614924835391187297390333132657 1.0295951401598038497791661717918961 GT 1 -12383163843718846552297526522107677130585685.3556721553679121828547785214723188 0.4381969296193276208915310330677817 0.0695212583478497760689437141976155 1.0720560493164777481051720036847588 GT 1 -41.6148916288167991534336120603174278 0.1928451653181020743224988983109876 0.0038683780187678834968349410436973 1.0038758795450915982606243520817382 GT 1 -14885150354477557358818.4671197842000102399552690225080669 0.2109230255375180130640754711530147 0.0037684932014795141624150849572800 1.0037756118620279906814118974392017 GT 1 -12406304951.5492196294334616595332908854069791 1.3879879782063427619435839198938621 0.0318241725519644649331624888908338 1.0323415682744374403958718301928748 GT 1 -26033304095705.0338861789878062397795958272948406 1.9855308322759545193419398598361095 0.0939371500264550181501405466334210 1.0986466045134752444362590866353868 GT 1 -88644443664239588899759188972833269043408.3010501976547141964442889393275827 0.0872016027682681559510764884391811 0.0310508108316675073206958488422641 1.0315431048249947402783883600231242 GT 1 -63279635748151116042873452634030.9907377676309528252584595807961307 0.5570044780080905416232046226779846 0.0917506955465659820907999094714471 1.0962363736907154167956857213421751 GT 1 -272828233644190024.3640948715254741038199001149747284 0.2056317653830320490893414584821188 0.0019110549849950534893212142203434 1.0019128833803869959277523582371300 GT 1 -344128979743857583840543607598849.8216876762274632534141892474725337 0.7147912623233691324470993986602732 0.0968333640773111572904987624276496 1.1018482066842826952635210994410986 GT 1 -3.1849438563987851058985938730931974 0.2365238993643433593818391455495826 0.0627601509937456619273999178064800 1.0648160540395931712471048982672821 GT 1 -1.7151093494089192715717736424993862 3.4604182374889329646293972885602610 0.0479071065846226119729844361456628 1.0490926718341158999988879976674265 LT 1 -21911341198727.8201356178045941863229628305340393 0.3564177091948051480686447978155798 0.0592448382294371135218801097209747 1.0610723626561833329706588890323354 GT 1 -4118242926071160950206446090961.5284435092409683106357359752268376 0.5061357835502161888996402532666583 0.0426982123169361706423378052378356 1.0436365896095906844909930465383499 GT 1 -8846086389691737908065684267422230409.9069614696657018254890714566301385 3.1560574346004452735562752274564259 0.0660563304624175763888223134392007 1.0683391535596742905630588782585213 LT 1 -788926066047824479020607600033779.1806103884988561255636815400504382 0.7791099724487909087808721621742719 0.0651495125352804768235036053074263 1.0673686689346957369715306566622663 GT 1 -971717545295696408.6701027122449436828480168254369765 1.0474471936779852829959237357284989 0.0955791445847147334036613026065262 1.1004604788980628881136576433243974 GT 1 -5.0841440985656284330571139266748377 0.6642456929574167146629229276858896 0.0938245710761132221120812344597867 1.0985223615242419452841289745753675 GT 1 -12533.6542427146267152597651278090136096 0.2278221904870263231895005088883067 0.0793728463681527497109524657004648 1.0827001524530052763993990581007943 GT 1 -7601796681679004950260138157952597708050393.3531525205059564888299273456354552 2.4865794778635646402058217078677465 0.0356131623774963845389557102054909 1.0362627810236475571582198867596744 GT 1 -438366447058158928561459986316.0713319748199256176014809352726150 0.0001596917700858670166378212519048 0.0521764756972285055915213691092218 1.0535869498550208476326379544709431 GT 1 -170627389643695212896002286185700.4250899695860149877931628145135623 0.0786369900957006012185444296965717 0.0186624771513452048052920872447414 1.0188388186034039361276234381403247 GT 1 -133811444069190495.7781137601187074864406983114426320 0.7956882305774472543926461329574258 0.0916311081734811844299646992234304 1.0961047143541498876217483144785255 GT 1 -41.9602562392380230148459891261255892 1.5020890273675115059071625719410846 0.0203537207745466180409302800292949 1.0205637120377467774655593218232806 GT 1 -67060021655007306734.1500842714619905132330029609229577 0.0491593859896993487214911936853866 0.0392265388327697239659261713261057 1.0400166301973155752853948616694023 GT 1 -14797072658250.9843920194655019630574235559846257 0.8336753491936665899574480493468089 0.0445366638957113271078070471767977 1.0455588874620942712633029367584736 GT 1 -11014596324333257883763082038230163187054355.4776087652212520098589802198036369 0.6353463667217945572209174089262476 0.0038564188080011727402360192122532 1.0038638739639873349942629403531471 GT 1 -3896.5178808225781248440210707593120583 0.4096168130266320804571160077219172 0.0517145842560084282404809275585017 1.0530997505801257889488666523410047 GT 1 -3260768974301562.0113707177333456292976544188758438 0.0374450588653442496079704904340700 0.0613881353324063814849507048656707 1.0633532348881688809097237458867646 GT 1 -617111596053631538558.5584033625524583796137046057823170 0.0301516257987636697249190086549161 0.0190355896413436604760617621323047 1.0192190990160976468728362003119326 GT 1 -16833031686774807178902322.8431313430431850660279911766798776 0.0544509231012049802479285762433697 0.0571645110881617147878345680517185 1.0588634665922891403803541713810973 GT 1 -71309720311522247215643506592685.3207096942508104466226282353678101 0.0524210809713417542942306347896191 0.0879483930537550910476748396626218 1.0920587039448998413581893789948574 GT 1 -6512049775980572192131060402086751.9228458440319137417442759924907828 1.6086180727769474849944569913719468 0.0783889458742355767864873927062449 1.0816319946183416065724800248442868 GT 1 -1206526232384714.8037937630727421308983486564819919 0.2860447416009968099114990804530222 0.0932495761693131695170344609321938 1.0978880334018793423937795599987219 GT 1 -5081.7566712193462469389282581633026966 0.7316310829222452826116114651891663 0.0900949570201870821985356781269614 1.0944150332897436109809502798478504 GT 1 -1925602267822594513600491251762.0661492279591223674467666279976353 0.5262976855613472079886640502659344 0.0500384668382671478348144670134574 1.0513337866160520136098821314162145 GT 1 -930456617388941073393676100223475161.6466868318440399690322856468171454 1.1737533667843976776903683754297900 0.0441063727128088373951522962110858 1.0451086406495803814614593340953401 GT 1 -29531498800842105135.9875202100509604951220094400061648 0.0800337441916739784689190415578853 0.0832877739245684394813912838811645 1.0869616770514940862493232053516130 GT 1 -1931915616333600655.6936570706140695290585669878611144 0.5618737051426683484058483733155636 0.0692230904998199988782689101928961 1.0717356550166449261749935380663415 GT 1 -12034923025365482713115894880905.7652078677965450976906870853498960 2.2926068691357869795716958575546699 0.0040494694053722576700888418946336 1.0040576907087216222179294055503726 GT 1 -47396358278703544764707065.2414026184893577238095482077416901 1.1455226750657620368685902301885338 0.0262872153717220307506960767159853 1.0266389011377695786215570427462223 GT 1 -75083.2512122408877170064452224212952573 0.7481739573082749068458609761228206 0.0438755273206018888640608849184844 1.0448671728587340134542696663330225 GT 1 -1877273878678972946533882951469541138.8504485248404021102637620254368242 1.5699600539940418236543078402341348 0.0261178492622487346740440776055048 1.0264649777958828840718828932681204 GT 1 -2543934849062455688537.1357202307086676512005870842398020 0.5019185194935256747880570441921007 0.0509356904843524884809662320926892 1.0522787171090260437319026028385909 GT 1 -11291758957434883742341622660506.6002788906511281770640217372739017 0.7012320793972182824073418896962602 0.0231037266863952546500669990686246 1.0233748011389875268482531108021600 GT 1 -8157070.4257955079505725661932037561850476 0.0362439099895174502721982223713751 0.0833846928698294257732966180790317 1.0870674071445580450601165847099038 GT 1 -86489251055119891964.1217233841944549741073914346154687 0.0588619354675813587588137361205144 0.0240180658234623897202114985557200 1.0243112028053808735151406933846768 GT 1 -73.8005720370917348548251717660622093 1.3990082970804645306682116716215563 0.0643188070717721603030072511252856 1.0664804663698014264358915768561585 GT 1 -74.4031568698946762612063664363821069 0.3426339780441173769802639278843023 0.0968931041064982847365333673449091 1.1019143539517442761667012399706887 GT 1 -688516558.2730539977591310617688699180283579 0.4204820464828567346281407492316367 0.0961006117565371945371737861950894 1.1010372209747009081090711463236396 GT 1 -9014044250909393081772948839920708.4760457649665827770206331186716223 3.3664794371165962042024486585944743 0.0209818837862457430720903570656556 1.0212051318079721917054679674444552 GT 1 -136112278818177635208.1170655389293482744516207649220125 0.9369007827704002018364322329748989 0.0518409925769406361701024665431840 1.0532330614428910844945645200291296 GT 1 -1066544232447419365.9257628515172898402048830639405900 1.7327004718395833002592146689041638 0.0817487384133848198272261965050010 1.0852842203801022257383907882674054 GT 1 -41.8862713582555163725787864386252231 1.5840941832248111010336249804617245 0.0850629856299110374653104763850247 1.0889000528299749550915576488596065 GT 1 -8.3849189200474373699271290051676014 0.6159449446838319213722306227759773 0.0875982291747355248674325053683165 1.0916748477306655612859994490013699 GT 1 -25965528196169313942156764800359.6214932372111524319492383293758192 0.0977620956657877861418613969724209 0.0736272414828492348498672830761534 1.0764785783414990292963866877955455 GT 1 -237841675557655386375102349517926824071631.8781684984299152680717521955040565 0.2198621111890405752782415504738504 0.0639318780820043748520731142052562 1.0660670253259497096065272856455235 GT 1 -80.2643482533588994352696569110174616 2.3666107625419462523710925298401973 0.0447196844924415107245272675333310 1.0457504574794909185355561317507250 GT 1 -10071599981208562797709147627011509898678100.8378555136950359248587210543757904 1.5213637132509416878637478375493940 0.0988146327587341149714379886033678 1.1040443075273890534520770317289146 GT 1 -25499340308474965163571726.7275054502590936579893360450203606 0.2457683898407147405399581430989921 0.0705696641659574363834590015276602 1.0731834226293342425125423697577091 GT 1 -1062183800602734886396170.8065263927462171031257623437655908 0.4462104904030799216607083645312587 0.0153718547218563961745026816367880 1.0154912265718313544867857802782736 GT 1 -1053689445962665309080.8267125010133301370301186219996807 1.4030563563793608927619022575682903 0.0653564674022548918966526970226302 1.0675900709457199722689047468538331 GT 1 -4286018185477264337042334080019563420958.3036800834571410469221407524131931 0.5395525283743367385862795801809747 0.0296734757633070469450044460474914 1.0301226412050678466553660808806764 GT 1 -6456336878435444929327207592213543.7617354918640095010761398738370238 1.7678828425189868755682596319497390 0.0100032463803449575182032545030988 1.0100536150309435513098913230574777 GT 1 -26289540713135836832531809.0945180601722201714722996671527035 0.8254828876498948777411035018161061 0.0158039528868152976740106826001300 1.0159301669033921146118173199560739 GT 1 -175676793636505900487511073829974394884.5407731129329644395102229419246130 4.3974103780649997710524556507415822 0.0280879964253095427960474536524291 1.0284900099216624099926096651088931 LT 1 -3765601642386017795989611383784809932.9485715624989522689467756778481801 0.1869098298332134647815434802406375 0.0580145725741018155625106463767938 1.0597654743493202311062327391958556 GT 1 -1107552251.6411022670652293246160541139675539 0.5727293288093436770298113539724087 0.0608440598406351587270632509899176 1.0627737431047884613576185930751840 GT 1 -487158578942407880643190.3110648980819437754871343762207527 0.0564060358781693898656438390169484 0.0135713508383042500315053702256418 1.0136642833914729532281042622794573 GT 1 -1959199528144479287082948.0060738816200137404756734757472138 0.5917021106203124783716272942776826 0.0640619743874943381181572494035668 1.0662060166491043076357356066197024 GT 1 -273959274037197296431892808930.7071727468013272963025958023217240 1.2791228514073761424172461987101884 0.0958115428120594973692272894470578 1.1007174699762403099313410532330944 GT 1 -107872954.3374193624313946735234047780053527 2.0292513882011154215964343236095521 0.0204223158499881055149574185233535 1.0206337347372969970364048558731942 GT 1 -340352313486199718936540132043403383.9848952832126337139314222910755041 0.5220329205628097178229949410184238 0.0321053552284860593998670154738421 1.0326320356748066225437911312712767 GT 1 -173151616017948636811576119.8464502410634907464157366404583132 0.1870596484588577964444820745218892 0.0872949840158693953266625187392252 1.0913425437100479332153774678288623 GT 1 -23503820939218774115525328371028724963609983.6379771419996715478070811161034803 1.4284348142570497689856706925604056 0.0044150670017145610914113298013890 1.0044248421927224321654371997475081 GT 1 -47624250031341879228460336933.6894598144654495926140963331395956 0.8808276752066065324993339317113960 0.0081830791482636525713116928356679 1.0082167443227510869607251371454375 GT 1 -12386419226649246629213629141.5039081506127772428821960179548321 1.6894582784474199137489891913931380 0.0848443978181303803886696905224429 1.0886611711353075448434526379688910 GT 1 -1612269644543679325248148505532952.2392478826499771542154124548705616 1.2962626640159260944496005535309868 0.0646784932660532472584020798498295 1.0668649513294190967612129278833319 GT 1 -581967911381356693178265558686468.0396262420357748101681439426833850 0.5031253271264114732587842542074237 0.0979282388463870711066936394020288 1.1030612042640989238972552524589984 GT 1 -63460273135.7653082695411607733681973182198067 0.3641439232828303362284713697330769 0.0594572859980149532696986250112517 1.0612982150022863297802550314074596 GT 1 -36401012517339411912016415551474313668.8501078639554649724491254135432007 0.6352292455349707976317302244573940 0.0326851594343480413812280066762289 1.0332312516538556941140945129272820 GT 1 -526372801689063648321515368371406.3251831206699209993142479592145522 0.2790215062197767017079090796834855 0.0561659654147609724149650700815572 1.0578049391138917180412802861518591 GT 1 -79616904683.2271454844905942966783350474130645 0.3924368152243720635960878099052455 0.0311603120958351678243490099907602 1.0316561215375786640817840322648235 GT 1 -5059968041248324454076.3852499223245556575213450678573809 0.2931465091117493430013209796598217 0.0850581404804373122015530244512095 1.0888947572341375786262408972206920 GT 1 -3610428186448105.1447683508866106517077028077735796 0.3864113324501834214920969042716871 0.0302325476112825633931423752192330 1.0306989760323355002340938771257773 GT 1 -8459013914929924156066270550411530.5851192883360900293494190928016068 0.1115481130929056086107490839934427 0.0000357804556556558931922943395780 1.0000357810957914289683299617262544 GT 1 -26023250969995233.0452556243887303129053338346482541 2.4942101214574491764374902686161439 0.0726267339766667163161223459479574 1.0753991342428072790211690020810009 GT 1 -4220880190548450.2090038291985958194550503078211000 0.5203428533553587578956301807128610 0.0847701472069240950519929072750657 1.0885800400150342691291578057648356 GT 1 -438875924217693918.3052752640707888922756866670549080 0.1968678742835767371285249310779824 0.0290194623617163553732162201698115 1.0294488545185846640792404462095977 GT 1 -2695902516347920508908257226132539189774987.1835499107811938538548028752628286 0.4271712961842511976061415367906180 0.0417904257769614724130449495658795 1.0426887626992532848960945330562634 GT 1 -2518409707344295574970361229.4601714014421200721785893447705734 0.8090394215508969951331933663957480 0.0611941143071759606822664358590719 1.0631465456461140472587429322965764 GT 1 -475504764994.7830360518303814466470060030195520 0.1955496873595339182442254924365401 0.0897850993430811490570402376757932 1.0940745527832993815187407034521933 GT 1 -749579786293720857.0801668028978002243189451399309577 2.0618253942757204964104691415446880 0.0944056476944369795942329183315143 1.0991638079643666723895132256011954 GT 1 -35669163002866896160343151411.6100124866562492624060247329690145 0.2987449424592320624110227400247925 0.0025425789369272624713142179931893 1.0025458167802317592426125743817996 GT 1 -297092650814742617.9235332283912872162910799351196325 1.2090317487054902274819145795455092 0.0294511698189193200163210876579386 1.0298935631812227016043252183498172 GT 1 -175531508026539591780383.0767005759045505628557807018868057 0.1837701458437092821846434248636712 0.0516680872257128623403379076764033 1.0530507190442374116185652352354289 GT 1 -78.0332010186275189629388147367692124 0.9039753673332889439104314923006728 0.0713313325610773858032832266112580 1.0740032588559724077245441638825209 GT 1 -645864691428081727.3628715929909922249132296277645245 2.0651179972101213040178049324443967 0.0497571482467652372719060745234822 1.0510376936317493899842720927583180 GT 1 -2539177.2455141174665248799837859844139832 0.1327419417174566293289847988624009 0.0207730043843970791055926489607560 1.0209917985522126749607838681417138 GT 1 -443629109836720086.7145605383980108822569726659327511 0.1707179076556778310134067160707040 0.0772148815265548395642151491897159 1.0803588793042869742582964163953360 GT 1 -56556938027970665.1057459638665367886250645123718223 1.4062744718948938040513624908327092 0.0834300247146363617530347525638068 1.0871168640600711825363349567499684 GT 1 -874545298.6539419572335998022982479140893223 0.0022310449642642845006082987187416 0.0518969299609072997726683753094835 1.0532920589671760737469355391304200 GT 1 -49617006510924976283931308032206573553.4271266945852719003845145436840025 0.1303997115647662986244826503453194 0.0680524470852710544688231015174254 1.0704787395766125008319885766241677 GT 1 -2638141448.1458278806664014740681232649942359 1.2662448837343615771251261223707534 0.0073496284644432331257679237854223 1.0073767700525562030784244714994324 GT 1 -206.1447815424395574943653134620937138 2.5008387318966724143254498808248236 0.0956676558281424354235567809241565 1.1056143395498306186224279144437774 LT 2 -13492709880356362431565756906.6868711877567357356449149190728774 0.7613756029213324156837453044379906 0.0484796114909679524299312567848930 1.0496941647203467662265801335403939 GT 1 -26548212642668793235774816325435581243.8858538943018562173988247219812045 0.4115358559900272910005554248483999 0.0729811248197173638066014471812934 1.0757813520482980338136590232068716 GT 1 -7048723013423574023132516571760.4316016207421471423879341059941758 1.3225289771311965619217397900136065 0.0757469427880314424524136637448326 1.0787693733948658330023294863232485 GT 1 -82770.8537755337501683727933481684790168 0.3557628786905039621648706655213520 0.0683323754114286048287024232736669 1.0707791538806404791015110219076614 GT 1 -984681882759934965718.2928264463475547506851431852141328 0.3542195683176682265211028954596987 0.0794893124834458312057391934176176 1.0828266678206713757605279942439032 GT 1 -1433145.3449207109598424324309439695791144 3.1481682663717842264368967986674273 0.0179907831363338315376407839086294 1.0181545848635035653730101218610679 GT 1 -31698912285068240490795316447257.5966791165194132394441090393407324 0.3205670835516543093218058051171233 0.0378803089403087725824741999078081 1.0386164170748620174313571464854231 GT 1 -3310767898850210272770470525603.6924520119628873737261536845904413 1.1001461917816448460239960884755415 0.0247173601783919750373496766294218 1.0250279629968857984198661961580384 GT 1 -377760453570.8736554379413141901806687829765730 0.5427720994708434493109123968565746 0.0805143812717927602964656522791155 1.0839408753774108195670853468721942 GT 1 -320482599789039141325782026542716260344.9233094213542046038431902845871360 0.7520083604117010139858414841607611 0.0251522811937904575902185448763743 1.0254740060223533835701473079725718 GT 1 -78277790541104743.5028358918303241628931145354587918 2.0620075300844449073664081435008863 0.0153685514794347040859651348142445 1.0154878717653527193160770398442827 GT 1 -496.3503886052947196376235109035140993 1.5679427061966387697628719218269524 0.0444260147306657362189334762156612 1.0454430873529789710960059408209464 GT 1 -508997064493645896552791444022857086.8327632326459036976145326904924971 1.5256597178020000836896541300349380 0.0119179150544791564170165477742637 1.0119895027567167023301282804180615 GT 1 -3425066805083573989064184985954487.1150401324975334392784943611831267 0.2216772169368681223507446711696329 0.0712104693212443857068256996092034 1.0738731205410148390253711865045045 GT 1 -3480748109800038161302707502360412827841036.0960661148441651162631163934307294 0.4996797588749371493063879515502343 0.0841326218233678793162032111927803 1.0878837084401361433386395399433663 GT 1 -6.4220732249250357313501070556058840 0.3745681605845811702194190603440779 0.0571705969591088367748921650826159 1.0588699214729767060274529152923561 GT 1 -6842097499279307912195.0019592112197947733782386339953065 1.3722505780894986018787697047496926 0.0248769142490325059330279734862795 1.0251915741562507157889186219378544 GT 1 -523611858478678880082344236.9574046175258918589082828165025151 2.6448150079064493987242224924123513 0.0798434559346611417744931917300023 1.0866735409265571697519825568075709 LT 2 -784774242093109200062840818174333236.4418236074131530976047659181410967 0.2781738927675826906658762011733328 0.0750970264883393619388893866207884 1.0780664404723272754090717784232158 GT 1 -100074681.6062073732565332735096552255391511 0.3105750540547955370231734782722852 0.0782680970570775077564971471770385 1.0815008754287542459698553294650694 GT 1 -3853.1322803574127743682802768797125660 0.8231122365114273771904286308207708 0.0640030499442367629754249134289447 1.0661430609972863257409098695513682 GT 1 -927803363477428233.6785753608454147679265081899054918 0.0222965798393265850326149572316319 0.0577018440616013625828350213855225 1.0594335407506487847258722007746740 GT 1 -61179266799632712893941354.5705370460039973961174243569602058 0.3491331492784203437475706595424384 0.0056500880382913024170144162581178 1.0056661101651647441836179385011512 GT 1 -384586702066239639825410305052.3908775264082284617990776090129394 0.7167640180158598843655446592097548 0.0181895018821312456968342232778588 1.0183569646898793649623573911628304 GT 1 -86629898.8714776569558278762152794487306482 0.1270772274140083568819566299103004 0.0164010794855713909391103377845658 1.0165370661250159308086417578409392 GT 1 -69624.4909342828526193071436160539294075 0.7605740910377378768828119761045971 0.0411259970577998901605046183571935 1.0419955965236317169033108688228361 GT 1 -86989810871495713323986118529.2795898436070187109920899359163400 3.1669026738152670868280112546850676 0.0481533055441830765125767239164045 1.0493512923938238727886524576576896 LT 1 -55661.4244519420548206305268897636925700 5.2719067966718319952408975683284218 0.0917017654397852034305117960293164 1.0961825021506188880781042419889118 LT 1 -252446199466940127524594857951471870957.5205701668452632349215362767962128 0.8667203216357965640953656273961838 0.0803985689532184929185980221659711 1.0838149299320970439140306335344453 GT 1 -233944187689984033768175254073.8429298184754765255495714462585070 1.6522692173107951217833822275603399 0.0850424164750207988765090826965701 1.0888775715844269703619984758368262 GT 1 -49.5963354666483790287262466294250796 0.2306962992441835956645878052240093 0.0837023074276480529986741106133751 1.0874139752152184825295887324256142 GT 1 -976926798523719923523072846628.3904311644933115307598754963529737 0.2263080392928965634761583219480160 0.0803203589150760275060388183518445 1.0837298857924333232820112113532344 GT 1 -86126259263431596.2789289566048151043994898299437864 0.4471627791719684196358787236318301 0.0187414748927543667529570280829511 1.0189193219158752969845750083221346 GT 1 -36608626370714764483286348097478.2756893483155560202671070395425999 0.7442600905865294663120980698783584 0.0695787649177384904489126803708797 1.0721178544329547068058329700997602 GT 1 -134963386000271762341533470688170.5329174658562532977807226503198985 0.2492986666602935860136299734478789 0.0842849389408165319007704082846898 1.0880500314125963254032160318716243 GT 1 -26427822317571212525907844056099.0164123343090366993499837722065591 0.3746043594218932198727847944986218 0.0870082667984824060384929047336852 1.0910284529719535531889521038520633 GT 1 -23044060911567182528299458981.2114582411943277683075269807526862 0.1221377149550861495999461638416312 0.0923802803929302494433274131743777 1.0969297991120972315537852535090324 GT 1 -1486607746062.4585971899154915841334515257693940 1.3245166792828881157557149630101605 0.0914702728462991171821830900782654 1.0959276705434253807526882661539487 GT 1 -1870273443498622.0737423506965572111877797079315948 1.2409405744428318941230689402053588 0.0024571986314429076330059857375520 1.0024602224985104114407313701107690 GT 1 -86357655.4087738137902394937088215203644019 0.1027172301087801726075868545245086 0.0443324257987038135544417154017420 1.0453451521322079786755855258376459 GT 1 -89322.4166723460243270489175577463952269 0.2209085585911634579758513127714064 0.0149076702201846320822493333102182 1.0150199063859039179196336477960085 GT 1 -8142708982329333943.4430813212958070233305544490075098 0.1524946348444761695210391305397778 0.0436517143939312082199892817503709 1.0446331167899897172668889795254117 GT 1 -32876275605.6163420059634481562041338755408939 0.9352160187643751914945809243419642 0.0192407989091398089268994545356863 1.0194283122481217272201771413808011 GT 1 -917459358666766984093921485.3439790930644415519212740181914906 0.1139443926382497739720486650772166 0.0985383249938475505071940359364071 1.1037377497148225070740928210475963 GT 1 -1687010158626571556.3772427338374554676163247916138920 2.2068073758493080108989792227704584 0.0359094738720285579040260452970896 1.0365700820088017015103995283354015 GT 1 -41817687699416792.7627889898132195543673003268421240 1.1904295886109788915262322468316667 0.0661786732451650686708666402656180 1.0684701580309705398796130220928861 GT 1 -2878792689389631.1280727203893357512597060487384500 0.0117471644910648764395604306664977 0.0803662690803636922777788768439361 1.0837798067748999101183745331150368 GT 1 -3997117724.2717144259940130291661193993721395 0.4986960619721112166005779378572012 0.0382956842560020075048489228048443 1.0390482396539325077222996705647483 GT 1 -125156649802.5555770950707063703584183550784868 0.8407233043743577782089028194604833 0.0374712045424823085364411333479834 1.0381912959092530669026790689015587 GT 1 -877581522450754839602533779743903329177.4462988754339583441994735441059815 1.3634927284182294981246786726807186 0.0757715610834584710911933557829607 1.0787960096316689009629411852453345 GT 1 -2042240847991197373852917782916870.4910024259322315072717045443313121 0.4956730570484727318282149071452535 0.0931269244811025492779450684048536 1.0977527774477724499693217586968796 GT 1 -1553325300.6955472935847892765167379274755010 2.4878968100492118205845730285829541 0.0053610904183191916154595118004507 1.0053755126325133490630514641205700 GT 1 -604422583138813000273753.9902633660599004889247416644185269 0.7850574186895593616125801967008559 0.0576716057989895097703300389982394 1.0594014513559491177771359165586895 GT 1 -5604512596821327562976863309297295.3094559687455694337782813792161605 0.2851331179245508624840638584301149 0.0925850405579951758045111949584573 1.0971554258379081724468359261596521 GT 1 -4192818929780835633565.2165434128332057979648438137208152 0.1496976548737633846483091811963755 0.0826153847239156270421851868936957 1.0862284668789273896602379967075211 GT 1 -5734325.1045012434245855816937468016797267 1.0486399039661224074228462026539317 0.0133408132119565979259007702259981 1.0134306013189404141449498447061289 GT 1 -282184031193464816455142680619.7344363081768061097402759725683893 3.5831585931546321990455905439772544 0.0698708733724625899495486477430270 1.0724318566369646571824991121205872 LT 1 -23765037980090075577369307549781117.1603556319258797191600797968991514 0.3158532004281919201022574614272378 0.0957556538828120039955333129296535 1.1006556607354842887824792717795436 GT 1 -5949647002162315447.5367942354161074868115325850991059 0.4306517484891548123238330674896497 0.0004584418610611872673061216833003 1.0004585469776589673466475369952931 GT 1 -16358865630267923715904835.8386195866859221312081514397773509 1.6025365199821266513502660612841566 0.0857217729060011487489141869065376 1.0896203478391568820528581456008164 GT 1 -1355446729205.0817833248591586777530355102106792 0.3579207217700943924629379287936657 0.0619797104380667128279354975198036 1.0639836995468099121945945274831556 GT 1 -877011332478399344.5830598424871129286127372216664886 0.8623893903261256230481124643185762 0.0915341015491373328761968454081433 1.0959979279529260047111676024804450 GT 1 -9675787410104705109002730195405592731463717.6852075818372308152870046860279878 2.1836732242763055681056300325280955 0.0467085817181349027053266855716394 1.0478346316401226316228825063606079 GT 1 -31846454.2898346915207213081490801042219114 0.1414011893942762864523020871035177 0.0762561093855177143006373623235475 1.0793204204200996051144568372128394 GT 1 -21371133874379989783679.8220364863743765069503510017019120 0.5150901708468438159434818424892865 0.0977217483210743237066716359185385 1.1028323234762854418606928406713908 GT 1 -14479733020282792790284409320857441.4864563487617027145328517081627262 2.0421104627627102502120806082959484 0.0214517647253794566666358339261930 1.0216851982412766522491959539153584 GT 1 -4004302562727293.8998892277511441524199763386570697 0.0385445084886290820481560856611569 0.0924207555370722627503873492446843 1.0969743949332164425351399979249291 GT 1 -259406780672.7930658065662075152205678351831330 1.3250299719274292781313919608576403 0.0720132368571296602256164781264967 1.0747378101523318022579627708735561 GT 1 -224642240365.3775069336556901519272145330034364 0.6016894642201035745748787547166623 0.0298016544454283646281082555773988 1.0302547484347180632599080322728932 GT 1 -205695427682452715165473482604507910097177.6477958306966337871048593402685601 0.2494662062347393438245360091592345 0.0805252781753549925140500304405548 1.0839527265340911031531697335977551 GT 1 -15468816339.0939334602473330707771366510539573 0.2398633928015349083823758070902692 0.0503280988227361997113325026640954 1.0516387212223584370014548960920541 GT 1 -402624219.7674502715126212665514752783472791 8.1402867258149537913863548019442377 0.0740220419946047269047395551776865 1.0769048480691613911391804768937826 LT 1 -368.3393571177398302585985784049512659 0.1286583460876835252027184612322179 0.0953686818458658600798479592273650 1.1002278015404130778998089155644080 GT 1 -1712705741335753999662642714837540.7109513749136879834602389154271167 1.4851589074598060469238061956923428 0.0847386365206452638230806046483754 1.0885456113480165585432303804578886 GT 1 -24200689873829446849980896361690651119389333.9411960488759240223097962538355892 0.1184749090865307415784547600406143 0.0405415288711361487461576150537934 1.0413862462544281865597502168181720 GT 1 -682673676.7156961262069195723813431443209023 0.2201423684971975101083755309262250 0.0804607770203068423035793763511435 1.0838825789908853207458155808763398 GT 1 -27814744700.0454581399038815352164579722524114 1.0802344154221398740520875155148609 0.0541146066714721385474653718901958 1.0556338659707002032031454031983374 GT 1 -34775191994274959072675573216683664625.0819162033823399247896311028699307 0.2921994441381376381648246842647835 0.0904796503038308517466475003493279 1.0948379066770503592686498150864467 GT 1 -22054.8926548525811098273979264075697401 0.4909402115408903533056279352043670 0.0373994246815437160277659350526440 1.0381167244419413161523612476763146 GT 1 -1325793.8991694818320306910748851434122258 1.1203949413234128441376988074110368 0.0245541741409562461718079164818625 1.0248606552032206796488026228939923 GT 1 -654223385.6178678753829113375262781150031719 2.3324069481568093972502240803046063 0.0335332817245606337300252439064955 1.0341084162340173682956015883140774 GT 1 -264801402077828371233270399459086511962.9608831365692733843386020218680226 0.2884452452705646286595398309037497 0.0327518468678572032522356216855657 1.0333001948040687639094173930613364 GT 1 -825424765354158751336717364347644.0823737780693150220603224172761673 1.3459028935134087526212921462918682 0.0513781414785206008479212297172231 1.0527450228761624646801081459224723 GT 1 -191879872670104116709361984190776190.1711704108994887291532964475854632 2.4318808240223466115875206802593948 0.0510315016982127440307471478989561 1.0523796755472016306295015811338700 GT 1 -9475865437626297119973698725994559.2163925911775390021701515977973490 0.0695746337301717172807924688866484 0.0471248752367945936196528460184849 1.0482714177402638234196372231817036 GT 1 -1212418.0491929438719558170503810838159367 0.3808749325419896278703294794511361 0.0553807117357924061230925196747382 1.0569733022238236027671776915130332 GT 1 -110365104808718669104930.8246199648885306857393835397398534 1.2623998941290079033460054363530646 0.0252471031771626335610244981578660 1.0255712792614843109531834911637260 GT 1 -170700908950.4594602842191302823467591868903691 0.0236209323434331244099355751016312 0.0712877062058112894231129513993043 1.0739562826500300837653499902377589 GT 1 -524904815341962534623.0728390807807297182725654353392932 1.0792829165161904754332339200868669 0.0232961836088376973400901198380708 1.0235718291019562690323774071909533 GT 1 -2855.4032022298984400268348746845662230 1.6766855791182626212015993276080525 0.0896902859053379058771964971755192 1.0939703922165476888909747530072643 GT 1 -415050817730.3193757240996652334065194707976036 0.0281478436042197101780962365877643 0.0900526103874002200252775815497653 1.0943684947550403530746939879712376 GT 1 -1869833944.0359879798541222210180666393786231 0.8635775531438892306175726699625023 0.0574377260496519295075396695472789 1.0591532886858381273214675685083335 GT 1 -4172381045784641045551562056434458604187.1617416177732769594361332899002860 4.1458122730782481289819318308460994 0.0841445462056874734023385805779984 1.0878967282945722337905294773805308 LT 1 -36979349452018147425483703909888.3851330423535142964019287294560968 0.6778740216475883869792120218230546 0.0646026128603189191679639200799619 1.0667838270022693127195029908800852 GT 1 -636496053466013999573557.8345469166169969054157011560967683 0.8072051515582715163017264797448202 0.0846435450634891262381363548055895 1.0884417213319956794575990263164671 GT 1 -5361629.0675857596086059816009721311816460 0.3145400521838490560035947694202214 0.0699472373989586137841955362644439 1.0725139604645323902371223717499635 GT 1 -6.8581329313450329189951431817735584 0.9703903324008653961169527096698986 0.0407933846191947388813382217738097 1.0416487785236355351878997232476474 GT 1 -36789917907289690.1900575750686268551546805282643688 0.1939168404006696091413983808717146 0.0539471309718059864220890764384142 1.0554568245698936301567330609859669 GT 1 -1337677579788323356710612973.4123534868815316727725836754776728 1.2485389050634535627385357914409424 0.0470394112275884074065167974173975 1.0481817310913501826999951065707252 GT 1 -8382.0985883135817867287777391114184588 1.0151300744945517353515604186278199 0.0869870534436577787043099983226619 1.0910052182507496680994163122101604 GT 1 -10342069939153106807496183742.7747209958936352672939158807409547 0.4326294950173550320012210325584040 0.0334911587840500483379678956732137 1.0340648327129423923589919992036271 GT 1 -10313328408263177508103861904519753671230.8985195152331896811519193621862474 2.5544331964509733813484426244313288 0.0313249930298428552037072171288048 1.0318261134708939759938042741856256 GT 1 -32990439049498498086505135876501374290.3881073905738527226357204670362705 0.6538236670035109322472361182254744 0.0366934134375587689782455226556845 1.0373835517432933305683303309719640 GT 1 -11625600998397963.0573292774363793722701465435130405 0.6633437832915401350895480195108037 0.0969024710755980587773510234343421 1.1019247259439408985011137378325499 GT 1 -317268127896841451097103784579659166.3795095531678567680921154295418320 2.0462442123154557408375684870496858 0.0814915209176884997539944562528722 1.0850041429244802270396327483893015 GT 1 -4565954041207429643663.7538260920935855472848355397429914 0.1607741035498749541256497352636914 0.0904658196686200682190503739043848 1.0948227002772610790907266634819822 GT 1 -2274250.5033395113589667122806777263135280 2.0286558048688010846789529372450858 0.0935865202806008327392495560072952 1.0982596976673178635806920069535443 GT 1 -528265.7381929739803003869970968878251351 0.3926128102189093986973016712342072 0.0814324592411917843180915997200264 1.0849398432701608893455773041732128 GT 1 -360123777626765452016782819553793287303.6571057034369913729315906081118797 1.2398095052238585718086349795397393 0.0352086742574404456074126656194988 1.0358434437808108297186920455850631 GT 1 -82732333254670267256976502226552.3924632455532845721514988480191968 0.3171986120545293842816364383029808 0.0903185983883930957446651206271716 1.0946608488925108260302858986359434 GT 1 -15650050994945080597314804763733034742688.4684030175716139592111036371606834 0.0374830899127370132279450927678608 0.0795335064217651343591040412367285 1.0828746792124274769903770390302054 GT 1 -88574816374512339.0081874504041349756061283139257152 0.1176261632124423591669544722669147 0.0262903358876273418044985367638465 1.0266421059030297631122299406518752 GT 1 -9376075.3742692434896707987312465274721196 0.6934529441642929900415439861428864 0.0846893787939644286491434183031744 1.0884917945878947878140623522833131 GT 1 -1320639566475.3502762627118195209887215266713115 1.0555058237146703294607220237283099 0.0541719185793419329543056218584766 1.0556944585590095168183017621654568 GT 1 -183347930446199121581753904449195.8726985522370884027519128850981869 0.4748203514997897134571481342849441 0.0353625750016476917352002662970201 1.0360029736359293898470388397961780 GT 1 -8089269004648694299303393038337198078.7198803556315042013369521572811319 0.7142784092046426810889302453363205 0.0345470020635274837886903531958222 1.0351578598765217522033236868429013 GT 1 -2399601.6365946573568650924865897532484144 0.0502176646400988986647136039324381 0.0608644106568483128818229915121937 1.0627954126016629328114687722531600 GT 1 -16459719949.5670872135805123778918139701309163 1.1243230459806548085734011858702176 0.0503560428783799764432665834961867 1.0516681466131102638455828674174878 GT 1 -4650612324305515864722650143452116.3878663138029005775410142989875220 1.7789611156372384069743482107632212 0.0823507850408486606535736678915140 1.0859400801685124925223215771192072 GT 1 -48425830560.2328078995076874159241661678168554 0.5946199833650071416821477608875247 0.0038834311999347334021943505009133 1.0038909912979713767457275156640170 GT 1 -77510928619299362200183616.9316117891379461467425066691957648 2.3473704072071711247952295666697912 0.0879508638850282440018279389482791 1.0920614130400883098433717229106928 GT 1 -26.9012483611330986246975709954981342 0.0585314429719058893685255510567465 0.0273435639990429770699694492464530 1.0277243567849735550623471183429462 GT 1 -1066212883398645053817700466394193025073.4234179655944202618366652231153638 0.4723149947974831620456938005224563 0.0065434967369541620971224203767930 1.0065649992642002253833739743097391 GT 1 -6721.3403688537416434807529125240916003 0.7627134057797815668442791670398720 0.0975844496339996400416491751810311 1.1026801661549891625105093218986417 GT 1 -51852967924416721317679490.7867410660422327900011142865435208 0.2151514096905882961165605777773127 0.0341293674939798497816264605220680 1.0347253745390316256391048419592195 GT 1 -8709607014706947845986826441378145.3581201180285296593365977280489442 0.9002588765521704240360726721994440 0.0779609008346669971038512332515400 1.0811676494208586602784174684380969 GT 1 -4993324201666727814560.1371651051293564330534113795347504 0.2001559200447440550786210896696968 0.0273161996992910756874175105632903 1.0276962236088400791289366163044811 GT 1 -724792667577810035265316252249791894705.6414262039423613321236859490042437 0.1733302008278005603147700873771521 0.0149082834738894255711119387756220 1.0150205289203376357774336808345814 GT 1 -32474108010532380920621.7445509080240911162077518322697840 0.4003470127715445762212401200164859 0.0805179337980855627377285024077083 1.0839447389866758642127379924100266 GT 1 -3019332293684108.1487478032562226702868902697379156 0.3415644526661851442537501302455616 0.0061701405690231722237878061222001 1.0061892545508741398250244768536809 GT 1 -20803612252134.9076857327302204611287687466228149 1.3545600507805908954285663393284310 0.0678514754692202031613919060027012 1.0702631159086469387186322589762451 GT 1 -16552206186696460084991195.1409254002661111763676948526723278 0.5638773336058897782874092153246441 0.0667600543185204256230795154696305 1.0690929346915216689308539619265942 GT 1 -18467395752654047355784302.1012007635075729595663930019151734 0.1257863623599561523796817203826162 0.0060208921207316925256326624011454 1.0060390907765614765513740569750434 GT 1 -311858141447002731828217767563783955734.6346531164590032578469715060322752 1.3260048548833369584550798960887083 0.0768807696541353404933542329772874 1.0799968758491438205059918839533035 GT 1 -41853539588134.7749053686162142970288436185202288 0.9423398559506433165016035274473686 0.0953603890080627240574703266711901 1.1002186344912225975122716656176802 GT 1 -32348959282661135889784007.8285458364345890848261342430422012 0.2976420232357640638348551777737362 0.0424028437947807042927025024622661 1.0433280944532894246099679474608083 GT 1 -44086088926752068959385.2267713891564179897427201549154940 1.6392167397716349234107442562233390 0.0042860204823162843204854243003228 1.0042952317974494475567805310584495 GT 1 -11506752915076764459566110.0140909819129362362968702033460103 0.0306851667126325711968395027262017 0.0441476057608682855184352164720164 1.0451517771829917827521339594449716 GT 1 -29018.9237952608388286231038429102147919 1.2307448930906210722008466572112457 0.0126860039886833511862026609507916 1.0127671584180973042444875446153260 GT 1 -16524436301263280504360617074798494453.3133892574263628848459907175558444 1.3543737564788382084362833203123006 0.0946272584305984568817686175641335 1.0994085509395617465902077297549043 GT 1 -994806822.0884512168844543798888534499684231 2.2539191354275980493332121338769000 0.0450784580970379698646578111426183 1.0461260969517522888582726468773564 GT 1 -1167296021141144488464962455.7071201323209681440887491503685637 0.4744627901169568144496719554112177 0.0639983026494815740909438292110624 1.0661379890975156965250349454218067 GT 1 -5644995645537854463.9752681374237359461004261460224167 2.2704829180103544202381082629240977 0.0229427828657009691482268994720020 1.0232100645453633164485749664295143 GT 1 -75945979221014532736034301.3163904797778351693263512590527612 0.0431209483287338979116512107193221 0.0359489140781695717030734701925153 1.0366109920808628357895879261568367 GT 1 -18793690619168600741812756599610.2558037931409557329074580040724268 0.3983253776035870145288345362179777 0.0371011823584700916220467354407086 1.0378069426507352309712702955025415 GT 1 -12808293968.2467389704206606292875890083409407 0.9729140808930984089301116400058513 0.0436334441513965408822913054392515 1.0446140128000595424391980264090854 GT 1 -32237653204305301555162755010523087.0432567873422064614439269555834434 1.2488570241278416490641105880414091 0.0431361621223387620275942836015251 1.0440941778215992972738523932635797 GT 1 -8453565613987849902664534138250678433299.6327945625288945242044947964163052 1.1936913670621565659628287045366886 0.0611418420098284731794222596699745 1.0630908676375407346150945766456376 GT 1 -55773884666684501191667598094.0701494204899474096613106271154080 0.9432246938693551464084943917006915 0.0819905799223130400691186491205691 1.0855476268917608356554876837401981 GT 1 -3165457674.7559463134124372422167989474910085 0.9893823998262249771076674842962190 0.0439592421096916570800732790581605 1.0449547330630562222771062025024831 GT 1 -4227289233094680799444790466292266.8364480344466327738673128501640352 0.3355514651615015925382964642845697 0.0807493016576185634890662889493835 1.0841963991139281680814894039809647 GT 1 -11.2421214065473686260695353135948855 0.2484029775983219595364905251690620 0.0877011055528931586487891430787971 1.0917876074618637537691348541327293 GT 1 -1753729986749512351678368385.1525649700184234609407625434157325 2.0470603786840825096273585860018278 0.0968592016866217881469945532135447 1.1018768148921909137461209898575431 GT 1 -1551284470858259991449392126817.3130459896607465397529648129343204 0.3837648997826274743987393537143126 0.0727343585684737554731267340003804 1.0755151941307943602389505919899988 GT 1 -8.8324100222349128208684088747244638 0.7786185447250030944603458862658099 0.0159393186170744726490440565155937 1.0160677157592022276002372265063921 GT 1 -17324051243705.7394427235245229241399049459177368 0.1245276810091960088464472934249820 0.0404631829256726907441159128664436 1.0413045931664934635108001859087126 GT 1 -946755244054308619.9878550604969017106417635766714070 0.2595509319595569085550217838269099 0.0937427233121077279235968100043263 1.0984320433967796566131905976628541 GT 1 -8.8203977732675012297771191954517501 1.6633145427585557955363124090428613 0.0889561661411721494094153424855737 1.0931642666790367961025627497816211 GT 1 -7599324080476178692.3362720780930935205332221639003043 4.0889319777426689459707369261616727 0.0017545449750982824201941257963184 1.0017560859919191141813831711060247 GT 1 -10170147196160742.8405957359603045413625662327555121 1.1094740862983177042779815771217049 0.0026709107875367303420394099231142 1.0026744840337202430056898946765831 GT 1 -73699290713158067025313991372764276.6733232633732838383219695624835482 0.4261644335462405056103863300652204 0.0673491916559654935113909102092272 1.0697244157744859248252281708423656 GT 1 -24254011098365489921349016.9923791658113602535932588914398223 1.6689753050041175488011258117922802 0.0965328513280878020479846310559725 1.1015155296862574786398159568474809 GT 1 -414597410311547.7425758025201704918067029680372118 0.7681222917127242994588594403666312 0.0416291411110055548064155111284494 1.0425204580838557967084284337133091 GT 1 -4512328075309656711026766752974687967304926.9373844388860234906398454279302982 2.2271811715984828004461520462098591 0.0325031146256333673579216535241659 1.0330430733346826192925024324934519 GT 1 -11877.4100056113163071258393215574316613 4.5920791889149989676713227004083733 0.0478434472005775770629098218284431 1.0490258114926881636920697992076905 LT 1 -944941590259331.2602768609408924670893089294247187 0.2085018163182297490420204613406437 0.0888420689836537052681538351126454 1.0930390366854467379542449043644553 GT 1 -24528269760909.6733118632819244330461045146666434 0.2572477874321463120172476660252099 0.0494456967450025341827203844851311 1.0507099874336110402834697973540778 GT 1 -5204122676.5197185655799460740206492392478419 0.3734968739164990716366031438288188 0.0844668673589960188026848738705251 1.0882487247621967590097795407750109 GT 1 -2742049628994770281100841.1181019122494286990358828959648638 1.1079751414167677944783164620616409 0.0290812611041346106724722610496740 1.0295125022506641718028684237904948 GT 1 -5031912690148801978550960830042430629.2328620358363897426308901125080491 2.0394981870152396723243577672958276 0.0666094651072254026158230259810159 1.0689315859798308673630514047065282 GT 1 -893235971947396587955813341185605276129260.7027061427470334234824062487720167 0.5376774402430095466976236227022557 0.0154889709116679717556910727991646 1.0156101782350497245944808954740954 GT 1 -97383.3094150534892623505239425226536695 0.8965050328082266634695013292276122 0.0638950302910949653174551992016552 1.0660276616676651573834084872169187 GT 1 -5270674362305092250959839674862331.7863501390977169028624967824530892 0.9712660540992013175984837637151164 0.0330323265255786322602885770843035 1.0335902137935002192342977061613215 GT 1 -23248599507922947312589812654057022152578.6527438417785290967804726265107519 1.0531548692912364683723769300226774 0.0375527707860337500377617973110497 1.0382760411139256053849777234728809 GT 1 -26967392676905021533302006975475.6779003848164385015053315946588210 1.3756042136135251381978746457610826 0.0304538905007781104409836485264193 1.0309272453486612126167532237284146 GT 1 -670596330305229053374934601237383.2504694710504717747076390345659771 0.1693176674369043473073847159885192 0.0279458670938023803048160769164668 1.0283437837821292313532615452446416 GT 1 -21303521040745499470953.0361569920661622206469868230999215 0.4495239416474503313023892781066382 0.0109985657398408108927001074479536 1.0110594971479798426180418196810416 GT 1 -94823553476794172751178914526387595457651.2732826676572007610646276110923432 0.1033229697624154337376274262192383 0.0740127995998592740132572247416237 1.0768948668935398293012152111930954 GT 1 -820378899741.4709180502018467471874039139534507 4.2877294227816125094322302271032888 0.0344091628333647688996320993516415 1.0350150985078866779693710665808520 LT 1 -268089394316457582283661714423911801859.1826947068034120591891607370893985 1.7538746057227154841874051695653793 0.0820441404843348707592494671175875 1.0856059728339552199362438305703892 GT 1 -15539044002441295424756798716582.0424871829099977353684108397221720 0.3006425186320611367477699501436660 0.0300106821665456592720274667147712 1.0304702200881776174757613555219790 GT 1 -211492691564035774052959369814083175365511.6923573670254708067596491024415497 1.9999107826931029156083572397070613 0.0668345192991970084933119124256352 1.0691727297667647069257705727576590 GT 1 -1675683961274977465807985195786368984923.3359121233713649347922755935849014 0.9843988844295100253537088422523015 0.0726512426207382777659445226726402 1.0754255626172631184422060485666583 GT 1 -395988855370655089144076873147025285.6870205099126393463958683147829609 0.4141830683854435386555801925865662 0.0598374604172492166814884137445736 1.0617025042163329364484883278478521 GT 1 -130882984979719239756.9678098263971007948788352978583135 0.1701294795598390920941193315571045 0.0307715420484194586410018123348928 1.0312549281600789000433674568113152 GT 1 -43877133113710191962872007115012390890018.3070119927663871550612581556304682 1.3645498980518009808644402110458989 0.0195235243403223310020674316049109 1.0197166258215413277025906419662829 GT 1 -258977733653183240855724.6550364090494011619968584336709355 1.1964914577103449060525864708463421 0.0833438251832919363460342148413756 1.0870228227096320636428344578722265 GT 1 -13050688372826011518081095351763045099512247.7724989689091888380928989860721265 1.0503822692056087939226439352961767 0.0239819603310773145779124064688019 1.0242742094725192295710056186215722 GT 1 -2160684382747459709080249977.4964822784238549308369836328893331 0.1781457692717091877521064735670796 0.0877586444053560526227835649330042 1.0918506796275566201419775051242474 GT 1 -6026469713428.6115183990896056042662721386815203 0.3236431959869932870981867286356383 0.0399380235282794290725505816646971 1.0407574377793774394229466821795133 GT 1 -41062447264933447566444769.8525632185522082191771250134445080 5.7912694775900323603034397025747173 0.0485816446534884800570719668465524 1.0498014021844509222821490882268544 LT 1 -409058724704.1008652540574109351320960067370543 0.5075275331783026832444010250952605 0.0584050331838152707526654826126438 1.0601800684027516848372285709278757 GT 1 -508781553797165784467.6259792684998538984423065851467971 0.0868285412012576041348865115254176 0.0893840465042925557251039187377345 1.0936340364724521037209599638211098 GT 1 -786994648805143674721843099202404.2217656738665962035241777769990715 0.5087957932606214916210772260145498 0.0909761121772032054081990347573258 1.0953839059169514385356571881749351 GT 1 -17527008942.9046650846226316850233921796716993 1.2377512426184394913162670094548551 0.0052659801733211858922345373222912 1.0052798943161439225000302920066994 GT 1 -27947782029335868994.6370676074078845415576715333972524 0.1328621403887391894750092994946348 0.0515376280776279691285925739242665 1.0529131615353993146169971265373043 GT 1 -230255328794494130281.2822722919947239034149483380285176 0.2083427011316646459214737790816792 0.0046186822751135178725534267105645 1.0046293813445386656148526256670294 GT 1 -3768760318212934.6222683974373685482021722576217043 0.3871720685649312353589082328124410 0.0711115734480805383296407553010888 1.0737666479709201785417801522184373 GT 1 -67475188157.6259725093108476929728610582859068 3.7752545308834749766286012424459031 0.0568890712209614541293931947566709 1.0585713693549817298841484266998714 LT 1 -481805829282869182039113746775267.4743261585260327370668923435609097 0.1059605234718163745659860943485844 0.0124496612389701089431773601610817 1.0125278075455536430578345705007406 GT 1 -2191896186479279433998656196810631290.7485388116111807053702643589895357 0.9702997838103117597654730828731541 0.0021357643553576630158796753989667 1.0021380483526813140902856270562280 GT 1 -33617905101037497132298796354388658645442.6260805930017567493238083830045817 1.3119687900736251368728244738379623 0.0032340561836637053882997632894564 1.0032392970459090841630524046040400 GT 1 -602138939102220.3470324082725329143355081916381040 0.6517513633846120869920695530994357 0.0973801697429197712810561618924342 1.1024538216809196412405981320574514 GT 1 -51362.7123807694843821504746986403137623 0.4802921599004590585429330976065809 0.0278116506549254598011060032861155 1.0282057182472843052230719383329626 GT 1 -39505481707705210665892095479276426566.2105091961321709016375871069649824 0.3246395435160567986951223717599710 0.0129954201962151779463976309774501 1.0130805994340055974527472439225748 GT 1 -62541097377.0994315906712795734302684414716001 0.3438022668986939783489205224797893 0.0401586247012120680809557622510737 1.0409872422366695570272664316828264 GT 1 -38896339540574927.3834043000124983701950942070054887 2.1587072441173401331475155829571504 0.0975591266017037373233954568589770 1.1026521051613675763454170590495284 GT 1 -3241.8486051170358852231255823646297520 0.3594412783590715480682904808113266 0.0511970115957785168300712951632574 1.0525541010764550786328273313162747 GT 1 -505205519338519679281582757101427890.1879136153297718470466136661478348 0.6099047069964658418855565824047237 0.0665894434637440158877428927680317 1.0689101357636572439552580274211234 GT 1 -157573.5494878229286330473722109035332747 0.0923062791078619322818131564650091 0.0327519229589900200408340513278684 1.0333002734717152859994366172904558 GT 1 -216687249325075198138231819608256.6750545201553167375301341309270402 0.0670845007960104360796137585156709 0.0721888651220006639057640922966631 1.0749270853590583848237834413967816 GT 1 -7967014694895178729623458285827.4951876195862048836331528035043175 1.0927997267190786743738837876991353 0.0653067919935952593832831380856410 1.0675369233157693931105697557624448 GT 1 -18764229333.6267761893342826180693900526742302 0.5587900388251491237581253170140559 0.0814191548262653079396765303261544 1.0849253595027868613691099934144492 GT 1 -2567041338251041.3136557544953324072291016286573931 1.3216534796108587199338340970145123 0.0962831714844748086057828067342509 1.1012392104532923742710298921121920 GT 1 -28136765019322426173198049004857.6859886413233379965313039049785307 1.7779179260135395362703425673936987 0.0954765589449419107598397109815848 1.1003470584460534329012534045273339 GT 1 -593994903778690758246733822897871445.7121314368415736393212391945703793 2.2096792110978930057852501787819096 0.0197816782156557503144188869064026 1.0199799547977406793258163255402191 GT 1 -940019377169051446351279740691391.5501778797997715181155380390264588 1.0698295883385951737173341918232240 0.0243924521682479698037896910676786 1.0246948760653873277040782555721367 GT 1 -115363980622067446337.2254923119426591402339878524582566 0.2547000453878314704365521549991128 0.0964016382696994921155831880348369 1.1013703074374086183508892127086286 GT 1 -612456520888.6455508855189399344706255975453390 1.3704380083724056320658851811795313 0.0853014477201363225573120817706049 1.0891607190477968317249481483090634 GT 1 -4328781356304.6635966153321105673394017947843825 1.3381347446025692319255629095545808 0.0717458121582908707538182570533600 1.0744496743900568391747991986734056 GT 1 -19310317.4615511357064356995005341252565584 0.2948165337076803554164407169521594 0.0180467405170707244906214558216286 1.0182115690283498592806500711282609 GT 1 -261760245356.2848316301318416416902960493891017 0.2216299027583021983999798711856333 0.0806271474048911060157774921572733 1.0840635233516821097166159598276291 GT 1 -33805391582071.7542839571287158473969550626755973 0.8741743650969685759025122231853934 0.0181791398389416940345630048634127 1.0183464107300987166110968431457039 GT 1 -2721617366584998767742769.5988154969702527446007184134470184 0.2031116881949631415656896329392123 0.0972030044127774521675796320496012 1.1022575619272994351621488310302882 GT 1 -102063265358803190167482434488301252.6257174534657332718521550344114939 0.0621088289314576088814723381665277 0.0676791653043181668778998198347972 1.0700782802989439238616958322337475 GT 1 -21202809972227132952146583836469.5263548385790237423329230191225143 2.1650447631214291721328337417653431 0.0493931861548053881627456734868251 1.0506547468864126075775885782637617 GT 1 -518125567949811448.0820725165325057279243196665727141 0.5449218554492932363821778314393963 0.0996929590633054153367231274662987 1.1050194172421784881544074866171053 GT 1 -359978.8227548505486873703615783315383388 1.2151285476550580841247254732961297 0.0887382487758562111099029240092669 1.0929251000231932118531802036507897 GT 1 -1038352316.1369777468313835387729583448715736 0.0940767600888003890426345887063935 0.0069544677763909347321825877401524 1.0069787627922091843353948904026619 GT 1 -1064927602733827066008592.6842586937872287743284819125167132 1.1051352489983398556878088390620003 0.0520557462330446836258930920013356 1.0534595824994368642029309375600807 GT 1 -15693140314083.8814265097385898761309433573054077 3.0694263272246307841686608261949284 0.0909888256921866334142476117023965 1.0953978919123246365563387715210495 LT 1 -132670531.4335114177556094126535693963137175 0.1642349946090353155243933702703575 0.0875421020012730551046074121588989 1.0916133337694124871224498254259684 GT 1 -1844590444271854183826609331718.9615647189209888688028325059052307 3.2025090091964606908380001639987337 0.0462787429233411470936208614436387 1.0473838335855242533242803282376705 LT 1 -66224375675160223387493143692109981.6316298656605750040632417598266176 1.1170552552361458932664212540380625 0.0548174994653230355316517590358926 1.0563772478751797585851953971962398 GT 1 -117135692184217246855193693082062543.3255587222177695600029595024275573 1.4740506916137710614560536353680861 0.0523098902642134932029205728399384 1.0537277186311557324165078443881943 GT 1 -40476429175191292953421747024091.6351076848165822973489899925564552 2.4552941958552817307623258695643080 0.0160852431720542538357242748996117 1.0162160149223054858451736016481744 GT 1 -4779169126861081952365.6639398530744647595170153697520581 0.8710192718062188497142424665330531 0.0549888931595966756950513867953924 1.0565585982871953699200399434551744 GT 1 -319878586663276273581782961040880.6676980677820085374698999284212958 4.3837494823533710225633416608125149 0.0711161737632974707634298219667298 1.0737716004781072532775014297865678 LT 1 -941.9804514309352804630895816466352084 0.6102813805753904501463411475322297 0.0955378540120448605951985676864827 1.1004148257821399531661112486179488 GT 1 -129501174066990841.9448989948016545070263516637028766 0.5034278723959735006732327271303258 0.0578659361754961842120926304366163 1.0596076962470244646531180100221387 GT 1 -16152501010441761650038984034.4716568864538991349457881411825153 0.0991738663416365236228009136814847 0.0103038450727265048086971961795352 1.0103572971761832950262240454679482 GT 1 -176434955.3532655430690006336923237735107430 1.7886054550075695627199278823576357 0.0085848205498845777618064075087683 1.0086218823870803470022461295390653 GT 1 -74156.8548594662983339722784010191321728 2.7655159018746136131578037302695025 0.0264668591946468921290871250630937 1.0268234118059785866014247048067335 GT 1 -73199992014442483829603688923.2355174180726527926456495420289481 0.1875232699113400268042476154020838 0.0224179507368481279648303244736206 1.0226730527800846938835079784426551 GT 1 -1323405092.4341743124088459384843288039532144 2.2611850544495072575735960511239760 0.0708724095315853064049183708751762 1.0735092078674708389022553510038588 GT 1 -51475037801.4859028664308384781763669757237966 0.1741729186447053249504582082240356 0.0393168377639714633975239030865834 1.0401106202777247590509186257297976 GT 1 -359.2750576098416225224639022070298858 0.2318952708838526195567202728575813 0.0900336588900417248289327745667686 1.0943476679465611885878213283703848 GT 1 -286606955782584035363123665683430811.6687905097792327068817020809192828 0.2026061524879998672422937941407951 0.0045955856711201122742233478776235 1.0046061778388850314778193142031277 GT 1 -117703499136079360808763650866430228082.7669846247202731936070036778635147 0.3774866141072777288617292664619270 0.0149072897542984856810364176828142 1.0150195201623985953146741380122452 GT 1 -1264657379740089403643338391224815052222502.0395053940437814487237980114072475 1.0086116378906776250000623525979877 0.0785948436826353847321159702912522 1.0818554303191126786512933939549786 GT 1 -3286876273.5696631064547702883648134385923560 0.7133004546157578591513079336733866 0.0350581612797326126973145334622516 1.0356874502157057331105898984019211 GT 1 -241501830675985593060.7979644633092273612790426815278022 2.3817837380572283895524931551367972 0.0396990957533058818635039268697233 1.0405086017092727947915130124744583 GT 1 -21222425983.1110455059019192982599417687831232 0.1800125367525086111347600644183192 0.0953423734476348286621298622412883 1.1001987200625099967090718979506466 GT 1 -220950188164796764.5962858507860229055191925503043623 0.4246182861492969517134180241842330 0.0883092915040052891364032423430247 1.0924544818482859521176681016514783 GT 1 -290203591640281.5606776568300342362887314221952099 1.0565025113195608987326586517041938 0.0938481579188199684591186648380920 1.0985483908657250621381692337252902 GT 1 -767455257039255440954402041143821.8941230240765041065795343176147565 0.4135384576016691424994374834912209 0.0744942621040381964084907114506667 1.0774149472082660747473919079019507 GT 1 -2430708036691210854996558357995187447.9909760492583733739214766954518333 1.3938113171319604678543322137559381 0.0950523450056667261922054605901756 1.0998781767402629139076714393325764 GT 1 -182770544097667296479.0860277650265032334614955373293253 0.5954547902508852430164787555052168 0.0692588374198657951380855418428500 1.0717740612191807326376380007742900 GT 1 -10.0307641666203339650200458057691473 1.3514176037536909371269868226001463 0.0172763695563092327416992625184856 1.0174273474556392450184710305562142 GT 1 -230281355521388402725123081.4029191332173663281746715352506050 0.4219425730190036901639453398660122 0.0479679515134474012751259432187403 1.0491565803807732675578694561194934 GT 1 -9185486139014.4890110089905826253221453045716749 0.1016192550891122507978660400304234 0.0609433612957247199738031415000050 1.0628794834840187667683157916812773 GT 1 -953492504.1160415472444711173332620692368773 0.4551069160741531912498569026754847 0.0672739186157626694129527674736538 1.0696437103249243128218568352569290 GT 1 -27853057986504938365.7036909753974866093144689370549879 0.0153862359793637761073209585482731 0.0309384968307237363839838623938534 1.0314271983426274656345255283649457 GT 1 -83197563695582324.5736559497647381075372727887733621 0.0974339509353968573693555149545382 0.0297865675653403120823323365512306 1.0302391982507215607565107829561407 GT 1 -39347863878529.8397558926928933155496239577783733 0.6213778528558191615210034338449334 0.0126287563782128645041165340541832 1.0127091769136655787517348311241828 GT 1 -1766129690010592381.0137555878712721568246815793305190 0.2973921643092334649646486903489683 0.0522977753490282771532707133298568 1.0537149350876480493646988540432754 GT 1 -4354020656916091130821818799.1752017507120763327556494593857668 0.5388576066699017777601234420232489 0.0813371087251324213158786419449243 1.0848360451678842724754617345422818 GT 1 -471709895090151947284827.6347930046023514727839033096119789 0.4437324194814097091003022932375533 0.0966896050893844377934317747066053 1.1016890471867895247933762603880279 GT 1 -186459005933255553319473341601537.3758103472915671263273407226100998 0.0842475777973615599374677214893646 0.0889211576552408491149030353348429 1.0931258406318855158740956253167254 GT 1 -13304428095946772715200375304106216200.9604690278952252745934407245723557 2.2482532808885467737583309943639986 0.0220169565688327329379514476659252 1.0222629471025661069009401525166944 GT 1 -821957052885706934.8696135303106957304131678919502341 0.8178141916595813612058591362658470 0.0461081738261736462682847137956455 1.0472050037178537849739761376647416 GT 1 -508090780524440389273514517.5628286545887736190840823712604541 0.3648696899602352766893106092858179 0.0385418881262818189845869057046843 1.0393042802962508173531417536380354 GT 1 -1614211.6114578925853001216647003759742999 0.4793836307423094168606843419638180 0.0737279594872174629826205585321304 1.0765873072295408050835804097324685 GT 1 -2202081310949568638741200838691880138773611.0472323584414546956996761716893255 1.3969907059657500360354698703690678 0.0631652458417353521714877968321420 1.0652483685841847996876525722092099 GT 1 -694637184871299161205824616.6225239510992071519858286006461091 0.7475706281671695817619894232184579 0.0325017795995198461422988474895410 1.0330416934592405190589443067093112 GT 1 -56896159025076453944493891.5637379418696537516452940789757630 0.7440796482379041090388765980839437 0.0247845008623467070374335992455603 1.0250968076500953368839804133006275 GT 1 -853804659016.3360679068965430571340477769585596 0.5549495493794354761158084040010399 0.0308677586207894769951370015634269 1.0313542043912594647950153060308786 GT 1 -995486156955502701596124585312082291557829.1394137877320047231296749004093877 0.0457936500340571699543001105523518 0.0971329331354942644680720612821446 1.1021799491766494396485189905562562 GT 1 -2566307115826.6043032835609995524233784159889815 1.5809087713282929200535556235323873 0.0322538337772546607033328760341318 1.0327854510690434834566303635609396 GT 1 -993442606813577456752351556263.0884418134179158929385774775125795 0.1515065040295852524347568790335939 0.0305666192961010620266576163518370 1.0310435217672819709118908912162490 GT 1 -13.5208735205720486311271099628362058 1.6573372396663889654927034042798161 0.0069961154743892820378794321416807 1.0070207030356424231371273110459280 GT 1 -10050316822622265444198338413860290723039.2237559203280508168706307548028814 0.8347357804216157537447142612696169 0.0925120153441811918949035494813404 1.0970749529794659345734572284227217 GT 1 -4076463698748640322886050692973263220865836.6302781008168817733034691654793788 2.1410177373381286889421223803602219 0.0248351160460472990854393880127780 1.0251487105344257495396505642020510 GT 1 -4475411469583956904591727671586.8473108666504637273947947457812861 1.7561260738491047433482419040914057 0.0576851373621895162356329625223661 1.0594158111698302190298905425816625 GT 1 -5189189654003008590038073497044723482692.0417350501968932166798010830473927 0.2668653596961103987226346224382634 0.0992006648906612563467151234936335 1.1044727597082859811040744471835689 GT 1 -6.0578500413484642722534260047260478 0.7958075947494322768776063102672850 0.0207765517807229306571960182980237 1.0209954212084172498442516855705683 GT 1 -609155361687639156258832751429211224862.8559866174203550725235440112325636 0.4284773847021994594869248556846912 0.0281595748547665417839647431544264 1.0285636596606227288919490401233150 GT 1 -206513079696580944.0532071873899943302703473020332355 2.3115751736110079704207946978090873 0.0506093868559207908223162645244541 1.0519349600592797236366628057523547 GT 1 -71133543644012729097108214517750344574257.1665423505044254329516161715089204 7.3432825564612574674053910071374982 0.0928103098126209086003801980454968 1.0974037105051264274584250563650317 LT 1 -7555658631557677.5348368750401714263362305797057707 0.2215450918850938734806993913371075 0.0248489928008326717048847670297696 1.0251629407981984578562140506183800 GT 1 -22254208296642492411425992.1109570635561034745656754798879159 1.0491755270931624575935933423170484 0.0593911091854467450931644899000558 1.0612278572358776396346622417114746 GT 1 -11856272031.6511299899741116848953686965949096 0.2655562289799134094985782421367052 0.0118570674084430062272207935390520 1.0119279230828279350450241863123845 GT 1 -1197315545097150103916.3003765553800504007991791280297261 1.0677167545668919336472083851768361 0.0020725881384752138557341067834427 1.0020747389215766273565571372402663 GT 1 -3462722.5282001558646267016628065029072459 0.4418330924144478437244928623522860 0.0734654229678333261451539216305093 1.0763039138967934577435926430085847 GT 1 -63204598718024264082.3122494577681188515828337505770050 3.7080625919676120924394415986418795 0.0330404501187516764740048096363148 1.0335986149298770020938027623415348 LT 1 -143250552985761948720718624132.9445406413190409907821276594665993 0.1677972338346730687924516260847497 0.0632946759643311138446321504508308 1.0653865349616304657494613917371760 GT 1 -21039038610174471636.8062779841768844629503326044090966 0.7851957953159627727312491672441623 0.0038479320035462448637302721499519 1.0038553543404480914592106561332576 GT 1 -244998268243404263789865003992.7646649941035158338034747620649150 0.6402773005477465784983285168897625 0.0473336839029752582572724868796657 1.0484905771482294379392548482859805 GT 1 -54663933.5090445219151040366456069495162689 0.7411614167286401897340363879172764 0.0480833337536919590127716945638648 1.0492777834777821024022426770265535 GT 1 -788.9676719923668760651686514615665247 2.7899230206543221311550167788708133 0.0412760955126736335579866344019338 1.0421521449372472582541156319485844 GT 1 -2636843587640188054476.3351309276393635853069087803011908 0.5937068220337493505754340206124993 0.0200066950138962223212063431144933 1.0202095389876881338336244257034041 GT 1 -2644.4257949137311957209967230483951181 0.5533070275758381936955712366637070 0.0835622571767283792876028054930857 1.0872611432805185950889470368255303 GT 1 -9200926417846311126346571836927937976.2539158103475862631296410529078559 3.3574710353983084953136908263846513 0.0239060855560247171442303076886339 1.0241964733827105013692756026985734 GT 1 -2281743255006242153.9458907461538786022730891277208737 2.8753540381634679578794563703368906 0.0057179642893723392292226083127945 1.0057343744321517485979680426652372 GT 1 -88340325582998129726991323.8609677774606423602192734639259986 0.4304207578243980187176007256194658 0.0400499058290638601789628832536971 1.0408739811101426650718653736101297 GT 1 -5608020322608.7959596212732832054576361979021472 0.0538999396648834730958334806000306 0.0197480425254304090465614424775038 1.0199456408980764044965756104174462 GT 1 -7.5185490061085169928602769751791148 1.6466180768406024254690269061497815 0.0506389526088563730944472206817434 1.0519661023656197088746643699720891 GT 1 -946125998336247073723579.4246195308636205680546064411716507 1.7609276946039482009066020306856940 0.0278418909307560651998599161367104 1.0282368240985097146022511528731792 GT 1 -210362808964715288908737142450240.5667955008162588487370210924774128 2.1457674271764353451432939900856676 0.0789917321500811432282996165020603 1.0822862657313810357825787109111298 GT 1 -10938868415.1619774713525053723323297559415430 0.6015787620613352280816070986240311 0.0005082021794717948973453315907584 1.0005083313579671207436206481771178 GT 1 -720947214747161.3380968640265196119082063251201163 0.2930965021839919397021800821224814 0.0689661239814096222555680866103063 1.0714596156660935598770106792720875 GT 1 -76188218140988243895897.6185348550140011083865772103611208 0.9035922432029309488418094355888925 0.0759317457044135955058792044982482 1.0789693417833136580088548497809670 GT 1 -2907388715996978.4164410182595246106273616617527349 0.2971496026502270384046655083777733 0.0411930664905408827862939349140506 1.0420655450030617096035519480570531 GT 1 -3.4317810108950733521476755605631243 0.2933406067623041348584192229118052 0.0118420495559712836607411842320094 1.0119127251414608854032056020695324 GT 1 -3213466735570.1841554212846170424835612832364026 1.5619489680353385570355172824158615 0.0483596013521270263098021475783233 1.0495680480624060837777914873335308 GT 1 -24302965629057332048581443.0260565882933783164204527752274492 0.3654747981943873729514935069108482 0.0160401285838802145116616712639496 1.0161701638426336077129616602726367 GT 1 -213816.8355225973338148695066519199962058 0.1566117687334839769722045940830270 0.0678772893250739895581838012813538 1.0702908091491668331540492784234710 GT 1 -5270.3439392944158549957813095836883123 0.4526152471005946950729047828694274 0.0175965081378183888622398339554421 1.0177531671756028327182482559771522 GT 1 -3056986429728570721793193587640559.1803945468985502222356198911727423 1.2485622589485940465891812592637027 0.0640773705598755267617592989494645 1.0662224667757095948756108084790361 GT 1 -97885.6831522379318147987981713978925141 0.6168084947671398767829072423047360 0.0000500403516688751911269357755174 1.0000500416037290419583634364201700 GT 1 -1005318406492939847.3473796613633700191510348391023609 1.3975301534707694032514541619543695 0.0837970076790252817109597682051279 1.0875173315219770194875273005995902 GT 1 -188733813977164129841787.0898095586592204269882266942785291 1.2011876778955144396113910915564220 0.0455288674894730265043599843901561 1.0465978798456797721251837090260176 GT 1 -817799222.1961028300401228322728574229805592 0.6182357831470536105950237524605550 0.0856350274443346626881947807008971 1.0895254737141792242927830916640461 GT 1 -467824419530613303802.6518653601209231452638298308610562 0.9611000302427404045977943294474990 0.0940633725480063409908246694572965 1.0987859230103379687715620293180013 GT 1 -75637872740556773256279927540710238.3693778405661648248381815682571644 0.1758958829106320552100417678235405 0.0062912546529081226012301660667334 1.0063111279914641247101387489556025 GT 1 -920412173924.0773963275505062598391769530798953 0.0482812293755449821947600728413555 0.0114725388391905544839107760888360 1.0115388561191920830504585850262921 GT 1 -340724088.5310990722896207452574288044551105 1.6299877191260546245757149156947925 0.0973863817177828762658431029192206 1.1024607038654572210381355658498891 GT 1 -6433254984309403417090906.8539513399964330674548336927129822 0.2667582481992547695313121484468165 0.0776877571420024316345163316054083 1.0808714545598926849030826280716524 GT 1 -468021870275252796182510116.6883241054920918588448293281728219 0.2629687250998420135469875408236883 0.0265854000156482345883582135243766 1.0269451827386690957282101980909233 GT 1 -8901056180990718345968755462036826378.7150223844849617214886861346253165 0.9071099778471027011572194789454785 0.0262106850614013540980410253789713 1.0265603078357371029327521935891961 GT 1 -241575945911332532923466752423.8972534711182210931710350583269083 1.8470565161351193876989177497981721 0.0955885930974346068791542100452922 1.1004709259836404662345548568104985 GT 1 -4.5633699046689733371801147067416289 1.7120094673783203050902789687935305 0.0009939335949647657245406312349102 1.0009944278745082034085750881160473 GT 1 -4320836.5284938907398435676676867267114844 0.4651148135142924753336158738952542 0.0720874090104670588100334514518147 1.0748177413762009577189663049087642 GT 1 -115491541404779764420628725.3887930590049982060478984658744642 0.2308457993295638932206703483150140 0.0570425917167612722804710514388750 1.0587341635582691777559107792957769 GT 1 -77844775339837072029375146657181.7216109918913130342404354695272705 0.0540900407046679116189166562468079 0.0003803300490928565293261635823536 1.0003804023929095777447920700510278 GT 1 -94975544159271.0281851444537093574576706380900136 1.8412909848612108156053308261716982 0.0206485353378912312747675279395472 1.0208646971373877992486059328426008 GT 1 -30.8548063564552028295165276556201812 1.1792903076619217027620695305202017 0.0480217289598670295957557433317769 1.0492130689889309133737328022797289 GT 1 -15825550591120.3721051525029809474867121306332947 0.4901810587302939968118199393519397 0.0553432412603395182021572748725862 1.0569336357330350025097673313888895 GT 1 -1666718176516.4963166777047897658766397662324591 1.1378260465075572735371942054806289 0.0505397339590290517865751391782701 1.0518615968503131796613981550783527 GT 1 -3681696122933814690594119.4736845005273895467704457578045682 1.3950087556614693146085247887085370 0.0730975315106206298278471194851803 1.0759069309370181219394741917571755 GT 1 -628452013.1782411647450669440874188002867484 0.0292957616441292484687853578617091 0.0312934084999994359515424782935296 1.0317935080927163800574556417374766 GT 1 -73627221004611404991001770799.8339128465329219770982109535642377 0.0584441049957915106570335661230159 0.0442334872206099613822429082194686 1.0452416292549546003208270117706470 GT 1 -3799728721600972640519373.0427568470533177959310221892754040 0.3249303349060598621914560947703875 0.0913858227929974786296321686369454 1.0958347224250515101445268999589910 GT 1 -325452552.2375128286447575837751344559717258 0.2983597139846318694400869951850051 0.0823322489443887107698763092084689 1.0859198808276860087835492672984305 GT 1 -5716.9037894345352676544362519566355494 0.4727942885762549535604596017184945 0.0796948248699288333437680927201003 1.0830499518454421736794068178375407 GT 1 -2383719220311923032156686.2146533997600554290911377182293224 0.5927259601189100688027209860804910 0.0998163932320647474196965582063309 1.1051565289446025684087037429304059 GT 1 -1431875505984614865.8149816508132508724209421989711441 1.9954611108863570740365721863615553 0.0864615500293692121328587521195543 1.0904298132226876232548020809554284 GT 1 -1077197946971020675.8016462980566910306185956502982171 0.2185335069367076850038146308862208 0.0918021499120468583992905010402939 1.0962930275442183886252568826190427 GT 1 -6328690500438.7050806017220221885452373140278186 0.2253095939330806451119329715673539 0.0205733255601481469376502026987826 1.0207879045938335551388149184733830 GT 1 -2457591887653041475235661.7007063679964311011056447800482389 1.2503316996250701527283309331337022 0.0684338720380219135462119341864992 1.0708881006261089568312777334382756 GT 1 -146243647172345142244265.8551339010938765640670132582853649 0.5923659652244648439253860986239729 0.0959269667746838725578181020295466 1.1008451328871556550922526990367626 GT 1 -101573272819633248348403713414075751340.5261759285835736582309897612326921 0.7784739847437748776069620468796376 0.0270608289420280997248159323923679 1.0274337156486764309774210618474153 GT 1 -898350934456344963955311047021300236.9990631105098907907667483126767965 0.1609279968622923330099747114671554 0.0805583710301575057223386386226182 1.0839887182253844978881664462201029 GT 1 -30174603.6618875677383061012681692493886855 0.9271919789886151378314551319863538 0.0979658207856207434714714888072179 1.1031028669385552174732995842535770 GT 1 -41963991219.4113750507244266838869430344033034 1.2156484290032904748221461236427749 0.0910156540483508567912509675887839 1.0954274061282478330569537779988927 GT 1 -6362510652410623105453199763663450874.8667502907394304279432605846020999 1.7498313284258899727240562377203330 0.0281904021260239547767934084841697 1.0285953806709845755471909448891899 GT 1 -2124521335036365537981048654.0930664651232181471569502464163899 0.6786535241219411622455257921997782 0.0690417367056114300136769353427612 1.0715408326837671895173689136354709 GT 1 -1148690869.6026389141203070227496370920640847 0.0473580136424120396964802977891602 0.0515341011210312442306239444280604 1.0529094429376526122283322588274095 GT 1 -669878656351016959719950309986760022.4894113591590515653140261614588457 1.0715424080912539533490669331789182 0.0483463453677977443823921639242878 1.0495541185444667497753767645096386 GT 1 -15192478.5577216024597842464289562616572402 0.6925229523138054089242383009009124 0.0587883989148595918543730249845610 1.0605872963600766720864406289010809 GT 1 -14429630286215447181545569969618989679336.5927080188862062957820593580139611 0.7848726301052648542979937581830057 0.0091543753680126950163685976369760 1.0091965341509942007498047454377801 GT 1 -14007573144690289938400357.9282665725621048822118489691408294 1.0928124939563853572311661921985874 0.0558695599673611383803311732476525 1.0574909443816602119999598706589977 GT 1 -123240081999306.1316067738104015173786350337856904 0.1064056224933294985936110489315959 0.0692926129928033475728352765338049 1.0718103507775988225742164264727504 GT 1 -35569695999934326537406563079.8305541815397309362700777226413158 0.2339493293888638417771476466106131 0.0181702394546877806144467559523211 1.0183373455897319718420737148667291 GT 1 -18537229167980020157840549167386.2626196946389211972809659390396656 0.8982986206084287344115463383382599 0.0551639859211778770686360636991277 1.0567438966218003690417520325848256 GT 1 -2.6550254128890857805351236372034610 0.6208705999014118239867729636276340 0.0672057857588276189306637031634398 1.0695706659767871057702501389140586 GT 1 -44469329590004473807101266423101148424135.8695438448761834630924445735450687 0.0008775443273013205660525755047554 0.0115231460561288056645848100723655 1.0115900519780606309423273273282579 GT 1 -20645434.9696484967925836362329268673953261 0.4367353892416407266656192623153206 0.0038845775885832191469106438890653 1.0038921421565596767448527771029284 GT 1 -2575.8089903984445942043130416121274896 0.4280715137121328540178045970491093 0.0999439539961182360744974164763890 1.1052982442590836934212239536786989 GT 1 -11359492.9402227705116412570227391142084259 3.3694467629563519067258307613122230 0.0221895395533321745849897974078023 1.0224394309538573613752743594778147 GT 1 -16050385785199525441196472895372907170.3885094406046109761648167719775224 0.2219041599745989146027989504529004 0.0650759184451205658884744682264933 1.0672899491880296954337700440180756 GT 1 -1.9304508969012545550231929201817795 2.3653862628807054759693016003852936 0.0232644454242140002275690827603711 1.0235393344311738536206246872785058 GT 1 -1042786716130001571707086793247663.2946378123566212625209881577226748 0.2439612748089891494669606804996826 0.0164428582876655240486181413718680 1.0165795424723710281066380899393198 GT 1 -51094954487447013886958453201.0360072121512882637185144284280267 0.2464602060318881190419138756961341 0.0167808730627624000157680134578899 1.0169232671591213992966952311162801 GT 1 -867110075676921167389483240.0902315503678931287186364893700170 0.5659819537923310456329249537620546 0.0947632881046077141381657344982865 1.0995588093776858658241504531529593 GT 1 -5903304316559133.1375824780914571184906641923142095 0.1819821229502443953270113674366519 0.0728268459906053917921064920069392 1.0756149412051498980902104938177614 GT 1 -1881745671461522159.3454515759077533416256330155426066 0.1934643782836449389586788019902898 0.0297338383108876938712950736828936 1.0301848516297879802031742863823714 GT 1 -109961.6166899091091157686150280088872906 3.3763679127007429941039575589087916 0.0726799816887036401262915358562250 1.0754565536689747233799597627602906 LT 1 -1173717599766705204677233107502218271839.7410961696925928555337103152963353 0.2060877771720363452674681795348129 0.0883550584894043726696767886046377 1.0925046832310193285645094966416012 GT 1 -1472721076332672819713499473543456931156.1703503359025737635283139028461694 0.6910377250688005907341777312503175 0.0491294447604198450016338224079964 1.0503773400654165421980734250361179 GT 1 -20116873447023786241599840882344896918574036.1501966250369647096196554852846223 0.9479901633465041298720123792727722 0.0882918406403258765811844813032692 1.0924353408210674064483821393248105 GT 1 -9116498973228745040882430.8552615896571167594455112844563530 0.0396232982959226634711251928341946 0.0861707045128189829521386388212570 1.0901114913964114546321780012461283 GT 1 -19811547286563002110090.7798701644759805254859563473782423 0.9703181948953782929140038870158436 0.0197794849824156869187595195836300 1.0199777173056048449424123441582663 GT 1 -3034769063480332583800168034378110212955927.6604545225367984112339252611692190 0.5045112579169469796718973077326836 0.0613280519503886677291030894165792 1.0632892239148347383397937223170952 GT 1 -2060242834377902392152380753346146824.4024073976724206196085477489685242 2.2478167319831391229211687393433337 0.0979570519444218094707736758004715 1.1084072441562774314885112418897341 GT 2 -309435954601250341475051656.0428613001193930743432310939737682 1.2848986166537684489824977985606441 0.0779688508020047573945773216019962 1.0811762716166181389581493800058910 GT 1 -182237239907294908522444107318316186724174.7553414528973664539485111300784746 0.0072388034429966629502149802837648 0.0157085018363304225018268980445709 1.0158331878284787806516710613993327 GT 1 -16161249356743144315807802.3539705175899878155216702630161939 0.2608550795484685048317575964322206 0.0388198911118690693544558268648255 1.0395934693745939575098116570787917 GT 1 -4102528269.2873350908616464496653865892870929 1.7033959194225003501661315699019292 0.0687447794090885464610243713711352 1.0712219033004180546904292955476081 GT 1 -1517729216.8898821342584840227246701618050749 1.9164530319216426557455342513011708 0.0969916131094114337735571208741423 1.1020234378003222934337900843157211 GT 1 -2642701723523942909584270760074125.8258128761373839916841634329245152 0.0237854399444730881995708585205354 0.0906543185918873459684717842772668 1.0950299695179704030081349858365247 GT 1 -306856052486.8521392817895627842348695625040582 0.0175149272919434551688518312288859 0.0551746925919607278519038527798408 1.0567552284627617333942698395587919 GT 1 -9823412.8131674216022260767789609742417144 0.6935541946651808876397718405390138 0.0457648425082974593151811945805703 1.0468451415865382022724506345579019 GT 1 -6919736314637596988429639941.9036798935105214454173264475939384 2.4936802569783698744437465278461572 0.0198239934033463545732922109359501 1.0200231248753975783099064002970443 GT 1 -108940406144.4746714296582800782167610362211143 0.0303594038854757663859814116145544 0.0083215553842000318808679942497877 1.0083563728175509401312407623118636 GT 1 -2770820386710793575283326.7783969014659703785832230265032122 0.1527247032404997242449998949754525 0.0986866492125923690343541136667806 1.1039023007175347946091520361020577 GT 1 -19463383716485348.8331093361152116611417339502096300 3.1416399968944532752718397084412172 0.0516550737929127547967216339681423 1.0530369966930884402224284484749227 LT 1 -2342294038937891022252719652271973685886910.6738092011819454263537046339522406 0.4584566786941339462505268974760866 0.0582518935800665225472726684144908 1.0600174431155562748154562900123791 GT 1 -31018868210509856.7065166266257317671975298835530643 6.6062847048290652686011792243138221 0.0885943087057165845270841372544400 1.0927671556093291297730829622276926 LT 1 -175180615474982827528743131.6144939131726762594847333103925870 0.0312670139487934812297553383648887 0.0081990779290778382604694353598748 1.0082328752331193462350915143352662 GT 1 -18775637.4691247492717954669397504456502734 4.6466352500691933797010330976686176 0.0124201439969369796152668888816031 1.0124979186378618113724561545781365 LT 1 -1014635802894932752072757234.9559534297229530476193262227272475 1.0710421097918498144417097097217511 0.0440024263429656207881826742572775 1.0449999039496109484873477151037950 GT 1 -16326155672204113707362.1344165425959225123954960999111641 0.5923909124638963224618580160369065 0.0019611485669896746860761613112835 1.0019630741368047719261813330014477 GT 1 -2291185936136347690236443261025872501189.8132951239692803181670553536366264 0.5546870868682088886030451367626107 0.0223234517413083374852625989726854 1.0225763914016530734765631896024493 GT 1 -584926290827230515255834926.0854242520870007476393954151527225 0.4749526822049456518514197578113484 0.0576732649522468532941954285136833 1.0594032120528868172513833611841777 GT 1 -809375843395.6309485716228989397522749377100627 1.1110943947659839612614686219354281 0.0721198341899938571854049004505726 1.0748526862044004359806087752085045 GT 1 -5780311380336866937252469526234653568422.0243083872883908679138309280570586 1.6878056187836258553553003985140280 0.0119140486625567835030909625992736 1.0119855897373262558939986374612265 GT 1 -4632210557901444192234835743016756827.1821227071462974197591533457564773 0.3548876260261381567357701577036552 0.0404884899589234064700570932225920 1.0413309677323598924324352997092789 GT 1 -22802503621536714085.0473210945755683897835467940496388 1.4266320143018837666794009398439157 0.0272221268096786222679926291426287 1.0275995135158399274200267053573537 GT 1 -543780375508584555410170872865.8511892813542456825768504819465271 0.0845056073229996971301611703828269 0.0594982188871819944168116620446950 1.0613417364493119663756889872467573 GT 1 -6607769120918419301.9220235704668116927890314988489358 4.7007243621477399813556819789444304 0.0358008360307204006533263930258543 1.0364574040828852694045989971460769 LT 1 -231451845980954663301636086421331517943.5058594616325949807344099930143699 2.2049015222576304165205835275846359 0.0644910278878990429745024902580014 1.0666645426008877157411634833080255 GT 1 -469306186278693015483000956884172358291429.0638813199942874731062169772320087 1.7292925355633308024711880667533648 0.0096470345655600468219480794052800 1.0096938686536251829737861060700615 GT 1 -2933881532450585013368523382452278593781.7503818230566400879513088732631269 0.2458968137400154967136165040490823 0.0506083225399769259205866544185114 1.0519338390082259702351136404919737 GT 1 -7224006641737912541.0441627139223538725515545796769020 1.1914429491880999911105078675887105 0.0929586016655062466340651346488056 1.0975671867614355499608222042757504 GT 1 -6043107958222438960943094016712761662919611.9708631603512456784745944791363111 5.7137000534261036317001856588773077 0.0098697852880675636953586506020660 1.0099188144907620893091140507969385 LT 1 -10732182796461840902618630920.8667003248240877962020335294204957 1.4674659474378266508546549253781800 0.0696556057336232393400053653888620 1.0722004449695773398332056250443370 GT 1 -243380635248964799714432163462944192470110.1098586048461589383590627080232581 0.3608628418343971605842721067920456 0.0582621803825931724168449968413027 1.0600283662686147046385128383697484 GT 1 -880270036938507863530083910516.2390562871210939640725341732113305 0.0519008279232917739844657885349606 0.0528945920125076977440741539843254 1.0543448847172945433650914374241872 GT 1 -687589303988759482506209253593.3853279751368709593615715041527342 2.0700203186225561105461680909004085 0.0905042701958002094657887749496063 1.0948649761375662041364048382819769 GT 1 -13099994765.1152782689202546845689563746234419 0.9132015522262621390652715323426390 0.0028829454570888456091996928658890 1.0028871091487325767270678339136785 GT 1 -40711860440.7194787281306795650882653557610213 3.0837820069788467206097557053585067 0.0950000335629288715145296040783836 1.0998203723683208685961926639605693 LT 1 -169948700294651869906951003361574210834.3702465364487428979824166888053589 0.2705866189593771788499336749446659 0.0701384824951854968102782730044427 1.0727196098312225631932128438623036 GT 1 -4980901.8624585402217255857188755174791963 0.0215763344869236957558292825222528 0.0638192321963969531053432523453828 1.0659466931560531137382650145766976 GT 1 -332904307817517.7115222977622190725246201524029777 0.1132946906277224285541285859919434 0.0607086551880615677039154954994124 1.0626295765328634148255206812840531 GT 1 -3300211996128680445199458345422767882083.5733472178336293896719015159954159 0.0316904653495221008662019473975148 0.0142409002040200411845770262764465 1.0143432749243968916453479844497099 GT 1 -287827185903191417746483464912.7738763881001710233584395815071694 0.8448495568271236832815832362542297 0.0830459709283350919932173448850908 1.0866979398561825575337960314026335 GT 1 -196743654154118561873355728138.5031349337691519669657183889971928 2.2869293005405172013005395352513066 0.0324438657922777438568548747984998 1.0329818359083438466500291961012077 GT 1 -955089183664050319.6052591048290671501461391134285792 2.3426706325422201588058689882542941 0.0252924586148752943774693549720908 1.0256178105342733470809860732322072 GT 1 -907854196913.3673223492506489663039114732576086 1.3258631118936880006460763585607376 0.0230938298040671534367620590742966 1.0233646702453948169480983940132646 GT 1 -9487699351933332041318015161303119381634.8576678275015645422558613737111923 1.2084355360348161759909439355735030 0.0946732910466777097029391301805134 1.0994593960602976930265769919210172 GT 1 -480909450151447762708194175061.8938230358537397462410441919228882 1.5762250627475768853664291001682725 0.0946812590649679458134438193727319 1.0994681973618344227706954702955614 GT 1 -57244374975.0063817082167663415581151794470758 0.7898346198411744727403083224874244 0.0034194209729771326800180967754657 1.0034252805542690157427554593647170 GT 1 -17939985809748022583412785939209803.7120819214112985417189150771359784 4.3802136178220147196085461217599621 0.0141744448357071987264767178048382 1.0142758617720670476981133856737122 LT 1 -331691059295103356945071105673.7520242567971180854192669952793821 0.0723502028799834500665190187843621 0.0118476165930984078085113767092585 1.0119183589096315868617959391082287 GT 1 -12624775109782819240598.4175345197973898189441933652785007 2.4409805516472224288173399238421797 0.0121379662797615800231545041353443 1.0122122329686831388463885339078302 GT 1 -252764808148.3734478572262765367394908559880014 0.4947518038470457923086826823714675 0.0707700316294201198262112106098151 1.0733990268080920203835218430073783 GT 1 -1116763897806266398825011999821905030566076.2000252901541516901906363462140119 1.3136528736096234655364710612238138 0.0646629060408824327726976724516949 1.0668482863696392627683159054635678 GT 1 -22925558852138653434.6981276916713016013068017586435258 0.9862366317166803210543807815881163 0.0342036147226787554213065994638917 1.0348022482735334148329474792681357 GT 1 -156243899273721903099643537957007540202862.9726995164354506611156493942931063 0.7061921658465150758660302335150338 0.0944939314945976918020785089641848 1.0992612998529623435492679223115703 GT 1 -21948475930258961093202854512661231.7249109257449129236881794442003038 0.2296093400901514723155625832812677 0.0493348524663153080956765561666084 1.0505933840833067560342986329181290 GT 1 -30426195057329866437290.1583403364870506734872219982920990 1.0325749850521406445594882388915697 0.0120341676457796315321182887503038 1.0121071644696912066040604675564151 GT 1 -155887196377439671143102176120530661624.9490280219791271844370547692833364 0.3924443506896957545662867647454416 0.0605106733058595947424216984086347 1.0624188208167360021754702548672095 GT 1 -51393788420197225003.4776186293780303115640711277080904 0.6500756538872496073252278770993432 0.0858910925095757973786548003596833 1.0898055598228292070046893336899566 GT 1 -14748835.8862299584756271480465799091342127 0.7796984415834071205619492153162692 0.0431054236228818412411148357891530 1.0440620541227764928872050914302307 GT 1 -7814852.6092178429457311919473399878808215 0.2833274768923256829054862725321505 0.0427505568803380951231741159662858 1.0436912703750596974166309091071206 GT 1 -213772589377695736581719236750866157842451.7899591389067244757323863550070768 0.8875228622586911760056594994240198 0.0396601170332369222626757443037662 1.0404680124222662818086053635244345 GT 1 -13.2825772849259353415194433834308204 0.5427989149459302727369377191870760 0.0017010747336938243124404909459391 1.0017025232041894040366237843614230 GT 1 -754595576264503370138445202.1535066107237921281277532643656620 1.5086539281251960401648922694977843 0.0723593907885935336972747405467291 1.0751108957627686434356705349978360 GT 1 -708438218908462349673573322806238638.2290249438742949576688215583705186 0.9735928929038384949513580051481313 0.0235191224212318882713638049166631 1.0238001114697739513610340965122932 GT 1 -38610402.6995797280045578657315969365810953 0.5168935578678215216306891611922123 0.0634995374790726779805113318614060 1.0656052632156520364802516519909942 GT 1 -47442302599240397715657164783.1773082205382188568391804273890333 2.4011028068888645854317809374999951 0.0970729391415295294493539255215177 1.1073270868253604799389830101726323 LT 2 -17.7326493506909439169590056089299444 1.8380876362536989397010151598555323 0.0519108530113071252317111183697189 1.0533067442404042273428135852039469 GT 1 -1772872309530802999806867517.9162141765352629568557537465195417 0.5506382130641869661596693730306292 0.0325033940332448327687084973304134 1.0330433621290508853671519099820900 GT 1 -130364108911095.3954037846005561860774040355360372 0.4703104410025776738758240804987672 0.0269281823093625632759877765025190 1.0272973889438038427939527153757390 GT 1 -1582823.0675218816073293412518514097087949 0.8814423811320193513917755884757498 0.0175262102705813297835171467939545 1.0176816127147460101233978219874916 GT 1 -51452116597992228242296099536407588.1737888767996370695703017182233664 0.5301535818547627176422529048309677 0.0801386444530540242691514760527369 1.0835323207879612608714803213150013 GT 1 -33134728717883178598087506937.8167289351203936611344311944647765 3.4262662430034972361797564106289482 0.0399338050036257095689806638836877 1.0407530437761890992569185375541901 LT 1 -734.3286252121100978384538554256412146 1.2132186200793107827088514261198209 0.0501113540685591367114594861461199 1.0514105160667527407169240868230306 GT 1 -1698500.2233156473166159203054032308545530 0.6807806409991754772193166465828066 0.0652961614071098060367286281781126 1.0675255500374121746487434416062130 GT 1 -432238615.8811110566719683359794003610454323 0.0330200255255537589346907442208210 0.0452144051259757065174929662298899 1.0462684716924120720453553707480116 GT 1 -8730833333610584.1477412525766781811733696609926686 1.4392727418836581829856276962482516 0.0013521208258786175497100261466462 1.0013530357660752971902187148218752 GT 1 -2929384384171880929609.9382405100760519916382252129697205 1.1783953167345008302622229966176112 0.0433344032621672896530237449486103 1.0443013772897147138345518778907201 GT 1 -10702913945241242162947688261793928928255359.1779846344723914944948139921960471 0.0473661380051498561056712388110330 0.0851736665345342246943325709883855 1.0890210312121128468040549808099105 GT 1 -1048200977852412.6867284122107490183534096858218140 2.5185227563816908721669137529855931 0.0847289093650306492557653695472426 1.0924542053357077793783608240122227 LT 2 -145032313288811006630332485973855055.6474371021088782635329778253730472 0.0711766402243002222258420537152881 0.0341409852575025209320041873382048 1.0347374028925223525888266477832880 GT 1 -38989711251.8142031138442848667929520961369609 1.0049650332280727454467884078067834 0.0903999840055186044847645726276701 1.0947503189617284743123860969068407 GT 1 -9658935424461903.9844109469749042008810161583333453 0.2201026304138593217813361252607683 0.0978856881272464254877828878107263 1.1030140353830342787990406066517547 GT 1 -1923679391722659394983412275770579.7638409558876206855462076617536271 0.2372945416684130897235541701255472 0.0481514575624779260985717394358092 1.0493493509258101514999926614913784 GT 1 -750000897997440016108590210769432451465.4988830770021533644446245952538129 1.1969530419841372197979375278215412 0.0270186547266433919827842091196854 1.0273903693608528945697180975615625 GT 1 -7981005470445788335449502311861422954.0899079632486687434070215200051774 0.2836241026312913224232484107992620 0.0463892830651089871762253022146643 1.0474997443377139844994552325486429 GT 1 -37181612756297251624176376.3123266959450623572311480641116457 0.1103016572341375864284704921500073 0.0219787703259156602572572388078798 1.0222239019497032233357042327760403 GT 1 -368297928526732911908297463951419758584764.1153230011085529079502847637783627 0.1933335281638899372831783252225141 0.0609327675783824524078895144924435 1.0628682023140115624806438438420507 GT 1 -704.9338024612993103330913433372667923 0.0874154724543580701568050355467651 0.0291207302390918362121728995589991 1.0295531544037580598874770180184828 GT 1 -822404648513766228098349908291.6514504358820828791159864774574617 0.9842929168300332080459746757206257 0.0305799090967905870961848825187389 1.0310572306946293452735677851786013 GT 1 -175.9860396476566892816401546478240621 1.2268739260340015088757509645759973 0.0213219991182961230466133692144756 1.0215525967005081071154989387918710 GT 1 -85734003594221936589000913552309232904437.9211452876067238961757616682610169 0.7905679017660045737279159922497511 0.0213890107628786564797121745624455 1.0216210706406845633611552774583632 GT 1 -182.1338856337773038417218266293671507 0.1208617219802662516606573099789902 0.0260462013423934297039893123508307 1.0263914111077746177812089779371896 GT 1 -2330813665105650926136190599.3195470709555399759649696479969301 0.1857815464785715980745999699654852 0.0278839397499297473143482790984396 1.0282800781002793920740768421626798 GT 1 -10972747313641.0132015749193438863754936248273942 0.7044431597467456161866161664316547 0.0275438520722248587770462821455904 1.0279302966113307648431128526779972 GT 1 -55058143626212944534941808346428610563.9012830448273333057145176321213141 0.1157387910635334665499086175342229 0.0760051020837272510929725006782187 1.0790487290913332841210310984893231 GT 1 -98389642069955937608226719.4211422217375578059506469050770290 0.1599373971757987694283987228616625 0.0520138631526851437919882540004008 1.0534154004128226155182416134257850 GT 1 -14281738537300724773748875.5077483907406778235708505996747194 0.1706142323230207688113669210075663 0.0602084862236913374256248173736311 1.0620972221729727829934463574226758 GT 1 -1723012.5781949469213152871425412168463114 0.1566994231929158779130438815396175 0.0850836141776351765124891622934165 1.0889225994970717217856394858301349 GT 1 -401906010683086689395.0576116350234755712552871502704419 2.0750038379681287042345853973093894 0.0002214157930563243275933650357373 1.0002214403091519323227060680644097 GT 1 -5303338437830999.7277019061949367380513459392269550 0.1091677268549118008519201083072433 0.0571451898628453083294869779226800 1.0588429741229511723716618834191965 GT 1 -4007165764194947598721145090.5941057229700373577438282156411958 0.5346453677375346652866849160871321 0.0355875965626824683191811125653462 1.0362362714582441969476120650091905 GT 1 -79539834053481603993930.0125370196374698180353704025549851 0.1423602145418607912306643551284307 0.0398788491048090608027709789016259 1.0406958036335027750187181000358691 GT 1 -14085573.9355129585235116126616609176356780 0.0147317884880695151863199623160211 0.0540680084373064902462139546368066 1.0555846030402004377244264111025439 GT 1 -3213720401.7340511921862574514294854605369864 1.6383172979129391172296997111729897 0.0402261365523082594694620638781564 1.0410575811772669571422301972318314 GT 1 -8473240497677565284949.7040561013804757628096807730860696 0.2785791806380585453135956980668471 0.0100804144847688807986816554942328 1.0101315659048645336805331134748546 GT 1 -72716798968967535626082075861.8872979426319080726937217312958328 1.6674630333798132620156946017073134 0.0584725965020350656767278450738277 1.0602518250971799010744364123207012 GT 1 -12704131153982691377334355196.6575443590779827382642721940566395 1.7656210450825692126852717224762957 0.0284740514197196908613708248700071 1.0288873007114815366061390585531902 GT 1 -3390306235194914484416.0372352147739129987414754938356368 0.0915758027356274656592248163090864 0.0566267458168420800524312602206739 1.0582932589863082220300236784984315 GT 1 -9074.5011282984219256763270891563288998 0.4091714170961378209741449248093861 0.0130560585051537519885362713083361 1.0131420380260492798262489391435670 GT 1 -6722071392989002.1913128377234516805477857517614628 0.6027194762848103829946560105448924 0.0575743337066926058004313398932355 1.0592982314245828401863323852732943 GT 1 -454367699697591660061.4881800488638323753042884389728579 0.1776128865957809330271134492902538 0.0771591355232067340699804376880039 1.0802984705282077084022979796171604 GT 1 -59452078554.6952606308889545214259560605856894 0.7485086276324054335965694391800608 0.0618897074405894662973100437571783 1.0638877542022758194592097958911515 GT 1 -880585432512156899432.3857219959914541900081935937117348 0.7342503248677547340734973161079770 0.0278027416285884921955425911335632 1.0281965544000498126395683422614066 GT 1 -11327351740212927.4292271354043511720063235595426166 0.6737420633858776361869081345177247 0.0152947751998412274781473353445296 1.0154129467607788822997782263878862 GT 1 -9671156913048757571727335.3510601211770134998501529454675705 0.3500424325520836732951809717391744 0.0329965002367140833967773672976790 1.0335531643386123582800001048036630 GT 1 -45.1901381430937936674321148062349913 1.4144331446547015690227323065509056 0.0120195698591397217484809098535181 1.0120923889801779013777352052549705 GT 1 -2434162696095193.1047553482852701821015207739777124 0.0226298739008849559682673872181816 0.0513920491647117602971151247695277 1.0527596839215696352491880365001931 GT 1 -52267213733784137390687927.8245880137258616612660142182842877 1.5439150405092727686142385267191479 0.0977214850484589043327431735119249 1.1028320316898254226861421498648508 GT 1 -122325425869566192890375.7339966404450627117596100920078176 0.6209753093420457406756180603231877 0.0058344180376512655291649839913369 1.0058515047476572176424961008750610 GT 1 -3612358.1772319683686481790387614423966005 1.0684612794995457469330067929213487 0.0953645366068941099652275054025563 1.1002232193096287239614154920274617 GT 1 -56699716857137041442894418426.3982658814400680510406139432098379 1.9751159172891007971161400374409441 0.0931695810080125996042913055682454 1.0977998154857395311384910766086269 GT 1 -377152104479391494572043739072283.7706010860252384663163611707328064 1.1693626606417656828879367432768615 0.0982269704351735421586480477912378 1.1033924207779083023333637296970367 GT 1 -20423936629855.6148190850720283898088620314648513 0.0799659036023908340563949633378364 0.0824157954012146394803984849009328 1.0860109271351166974714259932068948 GT 1 -16785805005114455246.9170151468466860812739367212446780 0.6630597647310405588998012677683167 0.0494328795974363572004599310173049 1.0506965036577649795852291346714713 GT 1 -632403006397498340248694044332807919.0742578617810043731487893213724012 1.1049822883502737866414795096925027 0.0516533702385063867260015938019347 1.0530352003499761321412804869787680 GT 1 -9221995676877239268521845599954831494.5896218295221286060946160027578710 0.4839752981978341010004012656449539 0.0610608469789188520589747341742452 1.0630046016380264079271806658667095 GT 1 -3482578787631276060.3248880406745017115033311988508165 1.8600819850869987403480515130088087 0.0970962320240644704921144826151524 1.1021393004844380712114016957658006 GT 1 -8161205908150086109150026970565245.9907911239680396679410904038690065 0.6418117439145819172332627559084765 0.0225781147914932149214256668472408 1.0228369031459886353302251345517981 GT 1 -92803159761570079392669544116047800.9803643126693456211277408502186726 0.6664985093004364524763762741198682 0.0122309631892796663986860386094526 1.0123063769725651792071008705266509 GT 1 -19792477877255348320573030705.1519421352505582231679869598843497 0.2826737803729431118367937385467379 0.0036471370821722241011219648845023 1.0036538041019133074570375110099531 GT 1 -111908007433340825.5285849488361844004822086285588571 0.3749863970298892410628641777562023 0.0053250677448354961572116007365278 1.0053392964531151591708471881446216 GT 1 -1246607850067354785538542650843.0443475833767476937144392858386489 2.7463445208599074773010341605651975 0.0123657830912502311160567821463240 1.0124428755856215689692958728543942 GT 1 -49063055876.1734443684233081895213496637262727 1.2006576349011863661843040253919364 0.0901802168608006534585241878926548 1.0945087395902261907911000438815604 GT 1 -10189033860665367366298.7708368363961791772508626694008563 0.4180115721993184962989351711870220 0.0281891189272057469782197338285629 1.0285940602498096522016485176254436 GT 1 -2002921433028740537.7951287700959585942215834375375883 0.9221855424025797466916637006764220 0.0623932824510407426900981824823171 1.0644246955637243939565083862649507 GT 1 -37945182263.5504472144930211701628465910514732 0.4633942703528321791233818777897539 0.0933317708282379362973187897810744 1.0979786850104805510044108468988094 GT 1 -1864015292445135.4129517635085370478959749227829972 0.0085600893398627741308080933740419 0.0292076641878573888776294954447938 1.0296426998743454868652245705623535 GT 1 -33850069.8996554494699852928824607027717309 0.3573441083143479578986945304393963 0.0815336356566092635817472871953515 1.0850499952006601275951410241354353 GT 1 -13717992.9915148289430354014395189302219155 0.1264406030443223516889829057822876 0.0253420742668465777378819401374400 1.0256687149468310840946611363152511 GT 1 -8102128979617483915589499925978462.0439739059653553034669166182248905 0.1331311437064195845150838930890156 0.0462754031379157587988147444309886 1.0473803317451773881348802875472038 GT 1 -5131646350710.0664985431799877847736092869156925 1.7482633771126337443003895480936951 0.0334756709127447184039980335528907 1.0340488082892091648460700377595531 GT 1 -2549371294203736385045270073463373789.9454088138256804583135218197791992 0.6471261127142784818964757484591864 0.0173776801088600777311870853949589 1.0175304443710940743181601420766184 GT 1 -1790170.9897983893706877703310333733305635 0.3085126751998171376675966094813152 0.0706939122453914491881610150464103 1.0733171135368155599894172553562534 GT 1 -3542872013939027576633744786.4647088825155912473444690899048469 4.1239787073619808294013857320212620 0.0644191751960647328964541346083618 1.0665877395613029146218170568086069 LT 1 -1026707582.7819416822069063496485277582566794 0.6041397259164471353441554449261265 0.0230675685822472194158444201322960 1.0233377885758446031739078835689319 GT 1 -91170117.8555894581928939998415506306352861 0.2698000877483163124566980538392521 0.0244731175648844680284154248522511 1.0247775617024517340791267020703385 GT 1 -72008873152566639513585347.0836021533899449222247210499564865 0.5854915779903494953561323641181685 0.0041081129424078841811088213795763 1.0041165744201365985440514505676037 GT 1 -117200195164815264397501490650747052829.7323435498150511897103371442024924 0.0505674704858297511445128671543278 0.0132917993490963026795763738545131 1.0133809259638267524120948699073186 GT 1 -139214362863806.5424431003288194541592430186860204 2.7731335727410489341352831975415850 0.0618632881760222797595439097199168 1.0658986161526140405740577770527424 GT 2 -46820342879408549921117315783.4196953642342663794876306597846498 0.1678379027431951383309326306377942 0.0488855388987496305931642739445860 1.0501208650028774514576523190749442 GT 1 -814762838152675.8075820955003566884405119491015448 0.1591899128572314419892874895754806 0.0641535144980897885228911671805891 1.0663038271717631677444799320580533 GT 1 -3179721.9192212751447718812110238607422168 1.3318682543873048994925276991486767 0.0564878713632853990447353420097266 1.0581460593152822089363739826738680 GT 1 -72960673524834363629128.4236338546119371673339995297163223 3.9427028931972856983382630751933857 0.0648490814632512349606410550493445 1.0670473525189434583871003028648715 LT 1 -5983638573581647924431996744133.9203697889261704689292089944112513 0.1751325523560907313891202723505836 0.0411020068144541629576263294536614 1.0419705776544487084013811422344131 GT 1 -5747982.0342660581540136465720168133358184 0.6250947349634796182074807845661433 0.0210547166323833991012556581354178 1.0212795283428479932795332286787689 GT 1 -6349244.2071552704434776261615714529723411 0.2547827706712629171547895381862324 0.0217488253090481786379552654455089 1.0219888170837986639979128655419904 GT 1 -2775869.1986837113732353649604488930038378 0.5550591513800167444410208225456439 0.0182413625569413994255906922726821 1.0184097875560397637844858904954253 GT 1 -2808.4248961506671176671456546466334294 0.4653731247889079676318708426229664 0.0132915281496325187044862994592147 1.0133806511111131182091245697276455 GT 1 -38055875436778938267.3838133564324794789872247140762664 0.3503706843212607665968115759490778 0.0996911730958005960374132400561703 1.1050174335125705052743649751399478 GT 1 -46152102479711657576292013186.2562572443303925955096855378397433 0.3625668176336987403836563000641252 0.0716062934438633163409073911077269 1.0742993834112329657524822881583945 GT 1 -125851107976663712925695294903.0761854179139023737058397271508728 0.7500322570112260440335288417655718 0.0517229430336561624661385734490469 1.0531085652411433540634865955140107 GT 1 -2266677504123243671703686847757.0544906701141236537606412137418666 0.0374433661109751963683125831864807 0.0256507340802513203089328945147027 1.0259854503773693434873701357481814 GT 1 -142409604888990412031772051837.1434772209963236861544331053875269 0.2673973112689785068367427821666869 0.0579554030180084550306850488064716 1.0597026626580560117171713985488508 GT 1 -100990690582829694386855726826712946772.8728553964203051071518264255615569 0.0585405813059709917814641734924122 0.0642435288198132365203940230613068 1.0664000167203760060749780327612208 GT 1 -195142659867354309877806672631114.8803999863282762017654532065942380 0.0965358805812343536590326945886215 0.0957480481327618099169298104424735 1.1006472496040280446672163022795037 GT 1 -15830900782582922388526167189601857137.7809320671632828071791831923502852 0.5297220885769503766657702088573883 0.0083272256564046087814071570230007 1.0083620906875382511736441457454668 GT 1 -13543704329418382.3939926840095407739136392280494801 1.1372780197948528242152342101223952 0.0153284204777651591521740853194956 1.0154471152122944686349516690346037 GT 1 -19163719002064.8784499855127905263041075106317030 0.0435512312989455424830359670379850 0.0852428184938866780714218723233300 1.0890966243280537250609043592924757 GT 1 -88758.7377538779450548598317040451748488 0.7300383052746626095985683081108442 0.0749419316539782479115285568670285 1.0778987668497857553545759682162801 GT 1 -18612241299738464.8381561516261522204993186572187469 0.5913698219047832000650867132183486 0.0750904788523868301023251138554205 1.0780593612294618895060192264043093 GT 1 -155694849321459895014.9371677834361469585238352904311594 0.4356564040478561770306176989591366 0.0936804721329992259857145728492516 1.0983633553511459003797883688088202 GT 1 -3.9644342978040752861787530296698105 0.4058428890392840729897924504715204 0.0533173021492420607530106451223238 1.0547913022889873058440124759226987 GT 1 -1182286834960870617185987282087213218310007.3124777285705648977260717327831437 4.9125615733290149857353797691808259 0.0793907752975261572904776234305920 1.0827196273336723569496000566570516 LT 1 -22799475671275311675995464829856549675.9976464738495915137777853020443777 0.5380940409966220244871905924687408 0.0454531131862807248248710557655772 1.0465185151645031321009786829165227 GT 1 -126884926332737193492560742.1106665581675274084152803117048702 0.1423232253966287346820280750378707 0.0693513550472870654337137220073925 1.0718734682612984531550610102552729 GT 1 -35923837844751133842456652174547593322.8236260213470024637523931641034365 1.7230643479252631355891461200946373 0.0916390793281787938011828937447894 1.0961134896322818611471222749789324 GT 1 -280762619905583960126880707209553057278.8660332129063709793327017905902473 0.9538359402849838820644061353952848 0.0244805241387325793112725841270597 1.0247851541144071467052335096015724 GT 1 -486963919.2526938763215942006178484663459559 2.0923456143966829447265591957258364 0.0200378319821385584967276144842878 1.0202413121260821739344698911818496 GT 1 -63086857360137311162863866578245696255.4722835632739155581046766219264011 0.4926100038416345422105136489037855 0.0341709880585989840290749884665523 1.0347684667089196422776712606970960 GT 1 -132822749690844997.3046164611796320673268586598900341 0.3608482597352496119826141050960351 0.0912452118794022775971355199129584 1.0956799812397903985379047932598069 GT 1 -2925854926285243488089900.2775310195860066660359379298711485 0.4951140749133176285614613517285309 0.0466779244444763909692103992040354 1.0478024727639159487352035022639153 GT 1 -19622.1812440047849583131355801811575125 0.7632068585254430720489623234115643 0.0587822265631786940749362129380968 1.0605807385026989020935493445444470 GT 1 -352.6079988762164241211100036798320195 0.8098059802845543509805712467942248 0.0132505941066515496096876422351493 1.0133391665236299132199439088453626 GT 1 -93891060999928664522950746874434696.8046612057715508104622727549207450 0.6087523921686600458982037819672783 0.0286303871666558736453498982716955 1.0290482313866845233299343790422203 GT 1 -1174260072189.1205702828483929918745844257699015 2.9485063097524667355238618900687579 0.0721944033868246679948996594980027 1.0749330545494952160124657918466533 LT 1 -144682425655.9817733401328186580366725765747130 5.6332414248996693358771723057208473 0.0321761894705048361424846049616716 1.0327052221879138492773169212507350 LT 1 -36393773281566.5911505632964326584336233175275344 0.0170594243148627948075435910948635 0.0611560513481031803564466620590163 1.0631060024538938879405899409059211 GT 1 -5933639832461329969502925.7179324483353632154132749163632289 1.4241371026287302460330050835382699 0.0573654451259358191214399565720453 1.0590766060576410461966077904241592 GT 1 -5225.5569389442726547397352377346064096 0.9914481809408952482350135579024766 0.0521706448687191972223407082211092 1.0535807980657638740105288416550197 GT 1 -447495372144395675906174768.5244650400321998479227070045519914 1.8308084424214645670762583654988506 0.0556355669212129955552077633157535 1.0572431353452924624534505806767684 GT 1 -22846420731336155198425062.9948720689491507212275800445441458 2.1792422780350137012152791312931195 0.0858084719315321290094946866817596 1.0897151801713310083274192988340632 GT 1 -1800859.2559068485028832826362269028186132 0.3502345767199656067388136594791345 0.0945501516370409196014458454275658 1.0993233887662678741384206810676041 GT 1 -26371614852001.1253867773787021605005505105590555 0.5413799704393137860628315201347812 0.0749115036602222334840494836795523 1.0778658743272801934953502081002466 GT 1 -2299687313108.1963539985872924855993762053202207 0.6981118273514840685884336708092450 0.0257236392934790966241629639742980 1.0260602776938796133875720130626049 GT 1 -363902280804.3300890898576170615870257953796623 2.3354006223866405916915440694533495 0.0742015534823691636431762572058613 1.0770987283755399444515279779067264 GT 1 -61.0565028752326932439508148106339522 0.0576308846625703229202313141820165 0.0484380698766649690148983007121757 1.0496505075291650049014504887794555 GT 1 -197238477902550.6872622524813060338422326673668823 2.3182871845447996426342896199301053 0.0835964433118340696268093208901581 1.0872984472578119564015319941762317 GT 1 -10976160.8006154389095087017071275929895599 0.4821089912183072377584557691590981 0.0451423035016523048829714696500655 1.0461929585065899730061634885910102 GT 1 -173784636414926455979320069261438.6067706445508133130596065404423096 0.6573883711323447790540179785822123 0.0592147719986733873453139314445804 1.0610404034902470328785453174656647 GT 1 -195923.2321098433545701477263754523092571 1.0063913040785549228147128477458583 0.0631517117877191362033569666352250 1.0652339221130256986907187638980203 GT 1 -217.5607537349855638538310933971388903 3.6940778093244791855567607664926253 0.0355212294804117906710246824860975 1.0361674577447564400275259497614845 LT 1 -36423464590479006338980.6272848401125635919780486720886980 1.2638082516560395378412785889232101 0.0051086084901015568691516276502193 1.0051217020427128209410822207588725 GT 1 -27119208530197371671.2288152071225933269003656157983159 1.2283566934594798693103802123522606 0.0564268644756088090313192413566201 1.0580814020484840773668539494209886 GT 1 -922571.7468200680074108333567447751021805 1.0313114166925099963471857524118437 0.0087137887336626941305461116776016 1.0087519757885011275273528256321055 GT 1 -211.6535026760958239587107008332214395 0.7776137765625997316973795742650258 0.0350115032469659921347761167678983 1.0356390981773776053272409221852208 GT 1 -251068735761811937304746484135015045461275.6798061549568346023424458168358615 0.1762336707057944745365769957763544 0.0073782780411479251649673499625821 1.0074056321685357339573194205408140 GT 1 -21645708019406501172.1533483097089068307492316006058553 0.7166749047876173567021223454688931 0.0177268642778035855938890953404356 1.0178858670187691481140850344075132 GT 1 -18248418210300922839154438392955654.4307831881930303732365882117494820 0.0721588028219952684657347047465456 0.0144279764550407893049030323580884 1.0145330718076980422752981596690813 GT 1 -2795301271272103283556656834388474.8717409392654030669780920429120544 3.1266156600950135837437161039088077 0.0382080813342050016902967634214837 1.0389571524760213378985953574412666 GT 1 -175085364329071.1295350997406350675185104794637940 0.7260331496207666610704502033593244 0.0287174151331097294335004250844625 1.0291378284505491728694545280467725 GT 1 -1184247.6348757821456579582549203037251849 0.1298978920212230677945019029588256 0.0581614654628026510509385754790482 1.0599214261706841298098674621928726 GT 1 -173987008783752724365592.0235904923191739886762874723324088 0.1181955935975883397323915599995339 0.0784584259056087794475397741105635 1.0817073872150721408554623499066970 GT 1 -38303456138851647348433.2331286401095879713535217150604994 0.4316266399434883953976985739487250 0.0944768358006241745342784128577189 1.0992424203189765860836154245083573 GT 1 -431908.5713404814969306755957826046410634 4.3029206104041186668976841235129973 0.0465650006948507144030755808350096 1.0476840268944902913639141342145577 LT 1 -1082105881589001268241634900.8966266582553010005571809276704648 0.0132062663495353096187862735595316 0.0061996517997240150811449439404377 1.0062189494413922118481015604236101 GT 1 -3883024363945.1355527106938163922197529182985688 1.0992908984195212474334150050830996 0.0287108574780068542142270658794530 1.0291310769314053061656193015517665 GT 1 -11303.3877014081017101404042281570449915 0.5535922546624309574394041413576059 0.0388550664505745945116290044247670 1.0396300660353385398647532932881489 GT 1 -1919769523200.8730268817471302293298769637078193 0.1456977512194061563102386380630966 0.0381447760545318525661328025813243 1.0388913345010989014119105792107526 GT 1 -5.9293689525542516822194042578214297 2.5750926758009898199067685460208472 0.0599560189936233335171446639304187 1.0618286165079700289804575772804600 GT 1 -1466896133487170137790883150445217573782.6214819483303317257197588694099710 0.6277184023236950484569974421124269 0.0163126475559356357746610289022095 1.0164471636731858476296790701865769 GT 1 -3389000584526439496.5923322738496018878263530578528021 0.6077778004629925210413970476112296 0.0533269691829394069074833896334885 1.0548015138235141345301849462828789 GT 1 -59182863566817535311.7946404924229529913681307151711272 0.3654110169507331672832133654766473 0.0648526524673702214396461377602607 1.0670511711656093676119947137832138 GT 1 -867115683546479907628091620490.4842653907699601283928473994083036 0.0459771825794864768344922264916097 0.0660641510900507530957503019549500 1.0683475273627552541981000849453719 GT 1 -13251940333.6809294385986949786645837329679474 0.7187101771385206483477249910326202 0.0939542475709717035084313115671947 1.0986654748444195642594385592881489 GT 1 -2.1959326078530220725680613429802330 0.0723205019267058697972418959072728 0.0394108973977711083712215210489167 1.0402085341815438101682265139773082 GT 1 -330553296152634756602608157748.3436588224395404553834558024844968 1.8671764061091782968222905268902992 0.0845476328275758580346539994444360 1.0883369455248848867665164964377377 GT 1 -73400002824616423764138.3599342170662183045271036985148219 2.2779570379518015302946345359273858 0.0899436771645070369395619040463022 1.0942487881607315556715592278575670 GT 1 -333561266557571987444512114.6350295944628063381780118109888597 4.6129675815666825792858002946485247 0.0464330393794379536720270640278224 1.0475456302715224476252828026254713 LT 1 -3416217745059796.2190486304284249046360534806279286 2.2961418738712782194796172529956749 0.0554675517091031691955222427089324 1.0570652376376832455942026681200419 GT 1 -502107760617134841783404838.0075839325061175923761026316217330 0.1831072348180496841859479629162822 0.0918083800351513539181396062763180 1.0962998874420621465974335689895321 GT 1 -2632041543974438277807397009461757264140.3222071274539836873289529551630252 1.3481720278177249255482915930597442 0.0074249739567995006294858287035660 1.0074526762871674850798995488034160 GT 1 -3318371443976581578.7167942023121348766149907072307471 3.0550529519392723597135817870123884 0.0483090546997956726884621732237116 1.0507407985403151676832887751268110 LT 2 -429632482019886489.9762133292939355725557035906155285 1.4522229114893603973211432446333762 0.0329026632320344296664329170130154 1.0334561300961562354545467411813609 GT 1 -744796134778706263527849097341658.4400937584920910907746194309847356 3.9246866422257667251576622608196216 0.0896114922539019055479825769602628 1.0938838389914827152720691895961559 LT 1 -2.8176703840847692121141112264429343 0.2223164002022025528769633669710613 0.0276440662178337550072914880662787 1.0280333545331115489861746285698572 GT 1 -2953083155484990175112145542457.4659763108088549117554296912353367 0.1233323941626163516751040503407026 0.0699299510516395946416632392364960 1.0724953742215035033520997496913382 GT 1 -1788171685202142737907098.8308420220724690419184699409331056 0.0518634162714050466922234472172374 0.0090974540483809860220760531751527 1.0091390885880389444057959398389290 GT 1 -448.9658457672463068086929633135536886 2.1719328821150315244627390015081746 0.0023281244148979104601582092117901 1.0023308387101732776802080666130187 GT 1 -151879322027366688199528371332.6630200865415568489516959937368210 0.0380315640285906791173989562785265 0.0160345831298793870056723371657832 1.0161645280046941792096755757296728 GT 1 -45202663252.4395387017304413369563580130714750 1.3636261682245712100918965392517402 0.0618976263485197511262072927714447 1.0638961955778969791852041509130319 GT 1 -2571105959.3961008706702772906455458134043005 0.6380660725878364525341675539623223 0.0301357462390750770318475917949704 1.0305991618542305085449900654077438 GT 1 -11008379799242724407.4524671894366275985042923748346513 2.3433194956231930023251935267794678 0.0341901822485345723816862246752000 1.0347883401859290809369289161848162 GT 1 -156860893769791948035623829139757976704.3965108580241626545557421758109105 1.3040787421136498481613917301539070 0.0837239005288636099243525880404448 1.0874375410888660347442842529071808 GT 1 -13630973677106446657761015.2313847420554895971934385349792342 0.0811140276236036792344301341822602 0.0378149201822818696444526069816530 1.0385484561582321057581507328956037 GT 1 -5105.4060652150390315855941513453979213 5.3639038876315494580818942707799355 0.0855169970706811436164255657316885 1.0893963975138612714995780244758659 LT 1 -10275945872485578775408894.9343654834651116692027258745788501 0.3278800917479275456155998763669046 0.0327231973600569781490803218813597 1.0332705756381677633302012108365937 GT 1 -107645154606570760586507618479449.1836588376951595109167785903319918 0.1250965191023349714510206595514090 0.0754951742711198268847117809189408 1.0784970083428585582521021404642624 GT 1 -17629265935071450460829446000610013.6036521500179781679708873405736441 1.1611449849165308514356898346536171 0.0245839610454943275704444981439696 1.0248911923776640818457190480451769 GT 1 -3402549331852547783.9696897157301816711915215028503818 1.2816709264284666003324198159337211 0.0025935695818392873878845682310317 1.0025969387100669891433010889810768 GT 1 -2439523.1076030361419805598250028504059248 0.5745684707821702055507967658406241 0.0389116564306320190067136624157249 1.0396889454447706719947613132441824 GT 1 -12629160433052803303245737736816290263728972.0766642055495507637547645256644398 1.9962814354378982398418171010389587 0.0976151869816814026078002505236071 1.1027142279252639605703846080540513 GT 1 -2076772816100529799776.1929675300124250150411027920652866 0.8857421840651211022383347417081099 0.0061393586161998357405907265450055 1.0061582819695661551337196581841681 GT 1 -532223213594512842264424172533.9779427255695629292952771676542429 0.5840619195704437160600692052736587 0.0714101167604359403710778267543456 1.0740880980932202629744806150672820 GT 1 -141278213372615926.5361206274124534615886189129672014 1.0327481383270641815054921685502287 0.0783937866624808231963327803292480 1.0816372471605467039067493849216972 GT 1 -36865848108244742833629.8988596977747265950680713574564178 0.0865905951356671903973493665019726 0.0271907461325728708568104020557397 1.0275672552050482347685407732983963 GT 1 -5057141462555861955067392939131810300326999.9923169930447402590651465261366263 0.1825088976189132050520849244185154 0.0586919443681781005372561108954888 1.0604848224800066928400703207419314 GT 1 -7468968818520427649941306811651256721966.6444616609763320146917737474484396 1.4520654930642448180578546793429722 0.0651720454600066269612895844118782 1.0673927724641808186322958098768912 GT 1 -640644835551101794572902059598287430.1496953236935547387399134165359639 0.1957179771442681076514773529176311 0.0103127367647254595890294579316821 1.0103662814810101675321857853894440 GT 1 -81956421313970882.7574052225712960571582539740297591 1.7184105699123351782756389981073375 0.0893198784445344415020845682933970 1.0935635723006310977453535018762941 GT 1 -348356753488768299656716984097718243.4099764490829985992149901536118013 3.6478026774382758303505523139508851 0.0789570742076469636643489291882963 1.0822486360036537185618637918257448 LT 1 -13628957112228035980413.5987615130576814013206911534454036 0.6378764194644509900933285924289172 0.0911431448280188696774756810334510 1.0955676722634836684378354160055299 GT 1 -4495531644446596.5283746514385462923108910423136299 0.0797855267071820860295711338128758 0.0237983680995242865408445300194209 1.0240861238438700003480618355478788 GT 1 -19554666402612881465.1900503721072145438853769667226805 0.7328702517338870212876648386080609 0.0415061858823056058167163439830405 1.0423921702285887694989679891652720 GT 1 -1392356739604650299665998378377353.6898322767501472256401912620438981 0.7036434373728091392486908827009603 0.0153648930821007142297547763088294 1.0154841562730808470514576542132266 GT 1 -4038166404762369395437583344048.6989668564969529974666078543297086 0.4557330277680643727596780973214026 0.0664014306601165034723214999626775 1.0687087304232577100018778615680249 GT 1 -185050911088535976.4743678345015882905403946462605656 0.0785369100698108754902744997166632 0.0722659661022025095054350077630436 1.0750101886772029772555954264545049 GT 1 -1597116932262857743293377585.7962291467077956281330076518406909 0.5016467856144957413943151944622690 0.0728098700894821168246217411206226 1.0755966320623072248066020930208211 GT 1 -5.9736478253549557986691928658574112 1.1737091801690718057497922568702360 0.0883930523858807374723693837162805 1.0925463602990190814764013061643384 GT 1 -2948099930628985366435637633032.7408923548555410948024590348997893 0.9049274162909885563702306376945979 0.0407663392761830643587522199758676 1.0416205833868357787165972209428126 GT 1 -45848014801.0999774805879218088901519142260179 0.2666871703277439864855600249728874 0.0064225021977296715397992036788724 1.0064432151987950394895907126879995 GT 1 -15479172578381153730733871413.4499299259498599154531313002814589 0.0268734388829641941989263149781232 0.0266736765145172114385160025116352 1.0270358743123296939476702331537927 GT 1 -174268753.3473046286753597248286210915102789 1.3655140055910441077930498222716231 0.0875975155384960918777585506031850 1.0916740655796623887534301173917363 GT 1 -302612720333208854339758418930456.0127861601502070710951762769370940 2.2399718504423587737283010986654202 0.0082394804523158940427061541349039 1.0082736125880567101652263705121037 GT 1 -2299374280760886542471.3433061742238418494804952294726510 0.0742038804054106206038549540977088 0.0095684199837898390459838311549237 1.0096144914371661363188245650061984 GT 1 -698208622715898967713959167337762175556.2647929137782807399015978037211828 0.4888750710661960307780853574172733 0.0720513709840598016329007409793339 1.0747789043920306859669953320800648 GT 1 -103996791967205609.8047257368589599517996402031660971 0.3742086522668534360852412533264529 0.0970469429292622840276701306438069 1.1020847124416532816795812385976537 GT 1 -2835740375260.2295928089972878965273493574080648 5.1149333278806744984374129417767830 0.0325565595526781977913235124343550 1.0330983152729948263803185677608789 LT 1 -51499665062427540183911002.2228809251462593384194560493784720 0.0400186647994204188698577012190536 0.0449984379949838780460828795558512 1.0460423028953976842819894039913979 GT 1 -16349047389946829007136928565778515.0406433609413838922459428709007200 4.0890156637294709606966944805246075 0.0832372553885753177983559470939183 1.0869065701786830755229227753535417 LT 1 -4870024047193006260078782526014358110812.7947746491198410719362242351003226 0.1927803319307634416351570722541781 0.0295667631239361370904176280478549 1.0300126712421526344226504110737192 GT 1 -11707821884641504748030.2956549651253678329512405178519339 1.7666984108077803302445286314437408 0.0543676689005046876754675135997120 1.0559014418197385133673399712635058 GT 1 -361526.2386934300090816059843778945549207 6.5001644108884553146376876643086335 0.0646841016087028412911774686781532 1.0668709475130025586172678049747815 LT 1 -5408647065052553395726693032780368.7456893761908288444672298973371778 0.0108979994774854778992536501459737 0.0305106507021639238695026066194197 1.0309857901278652386299541184426483 GT 1 -28376397777924258.1802987196831064037124059526944907 2.1056911084319920236538737535971605 0.0585975973892551648727729525596964 1.0603845978505753772983482079881746 GT 1 -473154.0572044832071194818559442694725033 0.9979274862722568249201041562944287 0.0163984053056295314282128979481642 1.0165343473579952976119276801266889 GT 1 -100857708534411501656442690747725232996157.9760769630900071085573823735806795 0.9933405727685238625016435129347961 0.0784366983288133517751188788451968 1.0816838100686144178799778448516938 GT 1 -27034527227749593.3890164278556846057387917583305768 3.3437211261696586221286652555476090 0.0010684066938801914239208741461551 1.0010689778471641910599339002438068 GT 1 -6868076505720.4605497779506816824986155430839602 0.4020905913432671417572302816818037 0.0329394467560463546304792158488244 1.0334941657955231913660556600111234 GT 1 -485900336521264365235491439568455035.1576458328827436840661973331355103 0.0937917212146898276103924845376581 0.0668951823648878299314041646993518 1.0692377397128226573332144544683900 GT 1 -7234698827886662734788161608931366261968.0262900517000730280871856589774338 1.3007818084940181135843244470900889 0.0379055097087185157448232308248730 1.0386426103839597507940741494983680 GT 1 -1639470810936756978506246490127551340.3935434995490326548169189510579068 0.6015649379339363383272655712608983 0.0740321353766198731065786148481711 1.0769157483686106686787368412929812 GT 1 -720184025.3619458695073055499877975384740073 0.5887256353441666963783944364271396 0.0779811262872748117412003472413441 1.0811895852308018361701582197136839 GT 1 -46566264.1858001529715404659976677760784052 0.2860351460286268157124792389484561 0.0140230057132126189934982021266979 1.0141222570180469274376214978983171 GT 1 -8487985473035738322239290645324106010023151.2899881732831997585572779410342538 0.0311522764969880455300857087057247 0.0732422138334511602653612366123865 1.0760630354041241449571906213638156 GT 1 -191244411093342870075387144732554.0068149919464876951274960105064777 1.8564399464498077013056895257388755 0.0675183317964285924278282096148048 1.0699057864203285624321342378210204 GT 1 -32535272463764598828671205.4220879817675139461704782964160726 0.7399730956994355484454333974036465 0.0152621142039119288694043149051098 1.0153797790132500849620055166672796 GT 1 -894949169683319014243374758162.4508447627378317801104873057535156 2.5254338932501235829702626234976664 0.0694182808108154329015258634274384 1.0719453838767392824282222815209883 GT 1 -5955.8471689288812450109758334753078280 7.5206309163617377176395520676171367 0.0519675102376102403359969415366038 1.0533665054131284168990218330048155 LT 1 -183274686877002803738.8820246170830182955954702932510799 1.7908200457117740585916863245689281 0.0283367965868980541959946978300148 1.0287460331123812664097409074915535 GT 1 -31.1435948195338329368386675291211639 1.6271527568683040333129935166728672 0.0209714304928312526464240067975075 1.0211944545411931914980864579782080 GT 1 -3759888969763.2304119423496766664757387565677543 0.3016724842023973793705171995596068 0.0078085717533051700795790035020803 1.0078392182910922493343881793963362 GT 1 -234764.6987993566827589121661056739022947 0.2666496266217575039639683052502248 0.0791518520174372341231917966666064 1.0824601336467984156971083216800281 GT 1 -1689421404.5534005517996179904056980005996336 1.9578714030662622446171943643294963 0.0523755731075615474414302203324230 1.0537970293889270512694330149601480 GT 1 -992801651320072.4398829800802903876231801953742628 1.3662667279134330318950204654099323 0.0776390969323642635603298133723360 1.0808186970187999103654886208904726 GT 1 -30998782929568047126483873464183354.8911930364957321728928683010472586 0.7239024895106996873071292753127805 0.0730905426306337248963921205383097 1.0758993909272798626853405419831666 GT 1 -3233.8838217778937432167583820309652762 1.4150856508013819751734592422730921 0.0997275063031850474134426231740722 1.1050577907094087520283179088892753 GT 1 -2137507421273851005766306978166.6930723333265425024865240035786716 0.6256678261416208553933816940192006 0.0964931965165987398237609888616850 1.1014716388360898501629344077855423 GT 1 -1819910362057798345.4917796185202035347727354450586592 0.2134836555599965302099830047540020 0.0836609567361595941255911730604580 1.0873688482233963865711057641538626 GT 1 -338198205112408061588152284878.8556739686492599311064215034973237 0.7956657979823078595572209169058715 0.0556711957175491017235546373561060 1.0572808638611102145703807044377486 GT 1 -9119.2027675684763884815044148780631587 0.9279198534074397506067767356983573 0.0724791408081510276575217345196631 1.0752399950587203670852975466606618 GT 1 -335540215581129298424404096849.3769052791587878297442408254687713 2.7495265575527276564512768440898746 0.0978629274247381057139067974904623 1.1029888053040045869869487731128716 LT 1 -5864791633945653581744007516773144412941473.8623867909764749134403142947044526 0.2319095792627200090742268842951771 0.0595423272007835805088450652485915 1.0613886362519822836899195374854899 GT 1 -4923691681588831030.6804682371333364688044981152125413 1.5180109421119785760223508298347559 0.0481426305199903020030085217623722 1.0493400773899846560534665785753703 GT 1 -1554309137991.3216128602168008590710467518993767 0.6025246487089331851091111288367481 0.0700568037620724333961466244443848 1.0726317740143090728308851744046019 GT 1 -17503856604.1772778421775581201624323825510748 0.2544750395430430672714709858936284 0.0967001592947369039789039729262147 1.1017007311738992162139906732128307 GT 1 -73306575098247197594189496327559084366099.1604974577779970429517789482697922 0.4885412822351927985316181244476325 0.0144621053728999283939939739414188 1.0145677009448637662908562678381439 GT 1 -3288719085868020407485556706348478.8947740067065680983174149459897595 0.7340103995481220736078456340807872 0.0149167828424398480768142856704678 1.0150291569547371840585152779929092 GT 1 -1043991095186051737002126864.0109236939009123540414550690077586 0.8588773723516292838716503079716390 0.0750327771386721413776555685050690 1.0779969768420476721201561518010475 GT 1 -761929678493270650972012015158301365.4121748736099414914656358838466777 0.1408208446354561577772798322548024 0.0107433373171151301998369442454591 1.0108014636542348162488745196396343 GT 1 -233980.7420513035107959676988255844982878 0.2177076879230814946743583222471975 0.0475320910552618737971721337980204 1.0486988639454492654463651400869613 GT 1 -85940751012126038.3089187452572018161125569606099153 0.3127652573024878880204513273116331 0.0298168004980946807725282341280315 1.0302703598516635722046303978488959 GT 1 -355476488615670016872547345775169.2448483530858050863725574078033626 0.8756428476539514428888665636483973 0.0744264270651677122317977315299910 1.0773416547906976400848903683214717 GT 1 -651934741790.5112642796514944959083515275545000 1.1164134483576286424564797423427516 0.0712980404591698646604317178839166 1.0739674102198117052259837503447797 GT 1 -1954446629667808550769357879172172941041.5015961241854421524620080595842543 0.7277178608816648831251553447893074 0.0272249450842260115216271712316610 1.0276024106609205649158514195054654 GT 1 -10677251491542019027830058019145679344491245.7777435805241801093130203454882585 1.5641941149075542933875117567810985 0.0127884369750480563072674961990538 1.0128709129488885813334505375193905 GT 1 -141592850439547329.0386541209205524241547592473082462 0.4706534449451469169402823318868339 0.0888172814693977404117600070654334 1.0930118326451223826168203589838037 GT 1 -8697283574498959.0902010138917626510388239420878029 0.0979681017372961550702258281223303 0.0219470047864478868056694109782600 1.0221914230804799549122697918147479 GT 1 -14191379690539442269606531723833276993734723.1768511659674450455321895273911654 2.2436111145469370436631988312409641 0.0379313331361893680459249340243689 1.0386694515874994579479676712540319 GT 1 -220.1611069195879808185490755201829730 0.3613621111443933585291639775463524 0.0805934376592878099836704018781364 1.0840268580014685289623962799882216 GT 1 -8547116124.4759676230045928159662776998251024 2.4851021678902163987671412700547531 0.0164143245720713090212446334233655 1.0165505321581756438385953560268661 GT 1 -12.4673829424729620384076738091954897 1.3790932063432379762954604729937754 0.0699762955184537332110097422900372 1.0725452044698318703158854051614631 GT 1 -23368707008674.5508067809413217241892476650416804 1.1029306422374879058267748815833805 0.0653269697647460581063904685303740 1.0675585111360036578831029765913600 GT 1 -114.0303391672097964089460792902631547 0.2773382512125830750298005490916441 0.0826394474870228315491205475704556 1.0862546969663869802419529991246007 GT 1 -62969001618914325978874067985969902546316.7096786391859845149631392050058707 0.5921369285327459531453447093181948 0.0846359312555562967752662028651244 1.0884334035053974780134069694227465 GT 1 -1496982610346596191551887573897358.1411940601332823176394977880483490 3.8462894843294170936783941395869127 0.0232866436010838016483916999772619 1.0235620615951616548714583251109721 LT 1 -2.8933077990706428598757638975523215 1.2583273593686035784203177696522421 0.0633583083700680050976240618248153 1.0654544694182252628196033689673043 GT 1 -13697102.4079914840191458441124361749531975 0.5590549640641939660886667242852956 0.0419405388871038801062587506270067 1.0428454349698806195851046567963409 GT 1 -87598521269782007771.6547479170476652732326982565522341 0.5304146339535322510855827044589163 0.0976959800000044523181876922385373 1.1028037647106630257398148504096283 GT 1 -1188081223411726386644692693671.4017804851151485192928325492420145 0.5848974510849258751961818894418523 0.0822980508402074444234369275504511 1.0858826151975721299072403461270395 GT 1 -5213722716072741870177251418.8873927619819770844578556514318876 0.3495505402223738791677394473050370 0.0813717579338568049560530980575606 1.0848737628796826021583323240933021 GT 1 -89361.4161374533514754318609242755130325 3.8701068539898114707567108690955081 0.0668553028693749790873394763470058 1.0691950021311612611597008199778896 LT 1 -22152782447560409431510557287148323998327.5275528222209349474894518217560323 0.4366433234939055350685159751034517 0.0659031437948487265000790404833840 1.0681751456960319125519731641689581 GT 1 -15313395311536881749955499812805874453931.7861181219396708267443070306323348 0.2451154910339525133851489109899648 0.0373525880080459207387095693261604 1.0380680692309599335567687511561369 GT 1 -10756400730352084786018003680414789881.1338973722385641397990078299306376 2.6169916385546444051239890425158120 0.0974321049204527367380983271980332 1.1025113615996974623075092184414095 LT 1 -4163586541479015655590911773544.7454002052613850891437263711514636 1.2631160129814547212187591813724370 0.0072140172321970436519868529538534 1.0072401640796040647861452164548269 GT 1 -24777374511004347996476020188.0321356148640689157357378501631565 4.7918647698227023951498655513583133 0.0009896417505284600683988365695645 1.0009901317692476529155358963525311 GT 1 -53135237.5822965067455113513896707636149194 0.9469787129810748667387041701972037 0.0777218877582696990337555813236670 1.0809084607343821066044240884272153 GT 1 -1937064310465860036188.3532197446814311309430236631000632 1.0638581478340615282029774072627843 0.0394743624239881941107978584957937 1.0402746052234372109673053040240620 GT 1 -119622848347352342959.8176134539604508798543467445656104 1.2743323138046622002100679898749466 0.0923468953345688821017839056735086 1.0968930166979953612811855320935402 GT 1 -1316037345054550.7699370441612256841425629660471041 0.5228519967474938236152413519567377 0.0469895722661382124092936169812283 1.0481294333795487605655424487428226 GT 1 -72.2682626218801901520727032899484512 0.6024254157155702305609649903156378 0.0426695322498045545833047541696287 1.0436066307837614693719216743714071 GT 1 -291007536.4580687072554899252062081423273789 0.8443487796707618702920649225463464 0.0040579121128064809278779040923080 1.0040661677795796975597823268159270 GT 1 -243387103467927844991346542867743762463577.5789834985696691708439334898800206 0.2167246575817894581007118300815554 0.0472065064221621449483226796216750 1.0483570897029879021759623886642485 GT 1 -11466654872724442230178406873021.2631440684121948054059256037673431 0.5427010397841710736497854950808909 0.0234729057811257072452284672390162 1.0237527827944360128999474553733599 GT 1 -809076607518.4124621246483797032017692664790203 0.1428797191364002427277786800661727 0.0371377886877308059499429250247746 1.0378449601707854838669823373094297 GT 1 -1921193119602338768457075282.0862585575925288963793804488377801 0.5653606483334108692776905824808290 0.0182299405727173640221586555545934 1.0183981534156858492411239763516532 GT 1 -53060007087728752050455.5002738259181357665619519310427278 0.0810823316057187886930774011096721 0.0346948626420076502121546964665812 1.0353110231092087615884384880840727 GT 1 -210661794881.4706851276334833483632133176399984 0.0222328552653168023976424364328934 0.0801009905755253059397837863358788 1.0834913873291794582444836492535086 GT 1 -9886963247222830420331343.8222311055312771639468254464440089 0.1176105217200385232020269842080681 0.0243833161788874214520583046598543 1.0246855116989424972203278179991435 GT 1 -12401547880097967.3296122230080054117525344584333857 2.8290444385605187813223095258071866 0.0102795434449813716262038863823314 1.0103327428427444583982828183101885 GT 1 -2578.7753477167150140032478039818329880 1.8343390004877185320744482588989547 0.0924750246041051121034176849130294 1.0970341921244248252713698292448899 GT 1 -17214654529334642580627502798.8681604940542271158759272416275853 0.6827347299956451353185797942251489 0.0397125386152793399855982884501576 1.0405226004007303036028471807741712 GT 1 -147424047816.9487984576405671572465260305946189 1.6920003037249017009386017089774372 0.0494003863219040310388113941454828 1.0506623212002739981960130337364171 GT 1 -410219865433167632045.3832350189108017935854622381270311 0.1003136031948928192357600239029379 0.0365970588479109376818761443914255 1.0372835319028948094581671323724382 GT 1 -857861609236437311337067400.5614344149010215009051339639569140 2.8943855834539886982805750475524560 0.0433193969874243662190034213101431 1.0442856913937224583230078357740960 GT 1 -34199203642440653626386.8122960464587953460706319644468726 2.4597026363507946921885580007244444 0.0540734749221869771389735980408657 1.0555903819975933079808667988923708 GT 1 -23267762216050123296569677302270125.2326569858480935934292007812745820 0.3914945613312787005041722472384915 0.0161283695232518182057251122465752 1.0162598472726893503948443439219167 GT 1 -1037406645222406947004723495.6450030029489578402990122841161886 1.0114660299215504711092259900494624 0.0117095845057434451163326864696441 1.0117786816190405122707703489925082 GT 1 -4575939434255167048090425306862001528.5251275231848060226890555506674140 0.6633984724369324359501060770443327 0.0337461106746399079304551148134310 1.0343286539135894170120905841618856 GT 1 -23210336890475343176318882047642617814.2762378976545456323636005988343333 0.2806084521542721960328339148989596 0.0541129546846363656441738382610906 1.0556321194743436355575286688709057 GT 1 -41811748522673667.3163189695033016425740315978286261 0.3295832578319059309817204575647615 0.0403602232700622633761049430070530 1.0411972975105943755476133809608663 GT 1 -82412548574377606413249813309368491681.8641023931936817000723487477664444 0.8810660583118091628687664932441019 0.0185547345393140427638420352699745 1.0187290330348926243362303632809556 GT 1 -16805962925335874210.8805784616435751886165590384557851 2.8358503903559793771765106451312743 0.0204311808309474869770685911041229 1.0206427845770557118285779457269007 GT 1 -477844424356196190117204194711304.9514056964102598465197021113510828 1.0159805943914353821465927659375422 0.0657383597962865863540096961569521 1.0679987512842462308801688195251478 GT 1 -851831523982.5650753105099438529915604927276255 0.6121057272597835414841588926659293 0.0345050363300826610094553147347443 1.0351143934193350779323345631459715 GT 1 -26.6919023906171783332967414061585110 0.4803843477316452372718164036149023 0.0019612484365618809587332192526254 1.0019631742026259167070288721755726 GT 1 -77989.9724687575093752527158046402503990 0.2719781393455613912313422779165644 0.0683596464719879401658646376246987 1.0708084255425252180115445852576589 GT 1 -465668352365887555607360307209624891.8622816995349077038520773190392333 0.7749445956423977547748280536640596 0.0665648891539478589540671527516595 1.0688838300971240238425525501330055 GT 1 -1893267855369395176989425709754481.0479135100135280657530729782607051 0.9470265209412715891044615396891222 0.0419798647213812296582394278785824 1.0428864831960158306374970854077770 GT 1 -1035731670.1927228593296637035318095431038850 0.6645881437854268643193765041556547 0.0284325808853444872171373056989036 1.0288446156454204072704641220931593 GT 1 -93672412201.5146082186413141920268113272692927 3.1696960196013209838957097520550516 0.0125536262957433477408704592029204 1.0126330887910494847747629308217916 GT 1 -4390624040338757074912572.6558119553636171721785427501467294 3.8991206029801000980036028887383901 0.0544640290135931511088893471454298 1.0560033472007303271563602927536112 LT 1 -1.8857588824421178931964413489587184 0.1689914638454065339869588574901864 0.0002361486095289879816184975244109 1.0002361764970023576681520375904456 GT 1 -68442180823340958935941.8065816799176848704318809537612216 1.5343117788710359807711918563246055 0.0274175977760143808336476960313534 1.0278004747151241850080597439661114 GT 1 -35205736619928550993389128035104.9466678597957383007209092169471058 1.5831357295712037703666780222835337 0.0175215749097333422036828459401432 1.0176768946754847637177300696104945 GT 1 -215484485078477375287.7174908402139972381412740673760066 0.6959949132363340121979760144899930 0.0595440489218328636983919656598063 1.0613904669804404405851941011568947 GT 1 -2594431740110263527795044162.6665401356611879980337523274410247 1.2372885192947361370498989181093147 0.0722110243295240925794951353504090 1.0749509689613480314236596455947297 GT 1 -11181252681366398490.5937010404228883833978214615149829 0.3883912552129384004080655652870813 0.0200127241040135337140951945451281 1.0202156911814150910816944549237530 GT 1 -187404655564.2916741569332214996397199687510445 4.7869902949788287556976705751069170 0.0224374676067885238907704353818564 1.0226930174109607489401656383119772 LT 1 -10997.4709498033845023075790512997006359 0.1619194445314322045871397972277738 0.0458665755154090977125759053851234 1.0469517593627569387508073927222675 GT 1 -53112288605867724614729291.9412288191715473699555953831804182 0.2080832385970264828788339439068095 0.0380799043127654327875873617580282 1.0388238923823348513589756661665244 GT 1 -1464251805711.8985773274740936033399792334297954 0.6645560499591931163073120275328936 0.0485339547260412062441080295580399 1.0497512783540787690254865914905762 GT 1 -80163410915509750482974.4774008026878177217627638181823557 2.1558529245056865858096621250363872 0.0984719240808815079878893585798707 1.1036640932639613896575234996340975 GT 1 -3898637512551637836797087728859647609.2856879898212303612748831969138888 5.2219346731616844640683217562515556 0.0436904633557918212739262989836621 1.0446736352365358177240881004581037 LT 1 -10136719656863825785028326350.2066892397247401396743122131753586 0.2051796563358294698406582203638383 0.0168346666970186458358427174300740 1.0169779804009694290412297004771865 GT 1 -50823889860887804095200268628350837.5043494007645217990832637950855036 0.5739951666130603508336485880436398 0.0643586396932298543047462214232557 1.0665230379953021722113876687811007 GT 1 -52.2442006276760797483153796795161849 0.3248736661396256721619458011782193 0.0950617483957222668426957094503497 1.0998885678815181076328886110660346 GT 1 -17811965083430966834308.6040612712918950967722387875996483 1.0328175125560364374844499127650811 0.0148593669639772748853461655370485 1.0149708733455186831096328338336672 GT 1 -42342354.6198622589448010583143808547131324 0.6147634315274362803090467946874528 0.0958112688627646691320394227708821 1.1007171669981928131513563266548496 GT 1 -111156313407005544931678022258166694.5358243680087961720721130320885036 0.6768425898651473122070033233048806 0.0908415189102200042540034893313639 1.0952358533678448809661526299720354 GT 1 -3378696.7631952960157203964268574228683136 0.0725837767399565251924417594249305 0.0406828364667069119712499861352116 1.0415335355917259325778385244006371 GT 1 -6201.1095287046480767408400479815011166 0.9137932916420221590112564934412219 0.0334542344964041061203707311746737 1.0340266296663009995202901977937597 GT 1 -78736020.1527394660994868445393279278450190 0.3127780382926956383172773038631130 0.0677849756723182007098609072896672 1.0701917781087088077902989040471153 GT 1 -1366891261814861.9239543382453953670268057688428990 0.2095752797267669145689804518064947 0.0537998613708214336883887392522050 1.0553011692736029737065511875679143 GT 1 -35858354705750.4138812612586006255853236265007321 3.1285130733231498266752519909833947 0.0678553488771881881339800421936086 1.0702672712722116125964260634426944 LT 1 -36249766.9025877713524183969304937556501867 0.0598329795990873547582610260280395 0.0416787507210035348229560352097068 1.0425722239462993751293718244394820 GT 1 -19.1604005315038096986273140953554669 0.3615081460189046546133259214405825 0.0028355060831975562215651609721457 1.0028395337460148639828164762792047 GT 1 -1504800161471863780752848476081729351733385.4733575682916415348594766104188568 1.4987442968563382214257057174787036 0.0766746669288318992878698021331984 1.0797736330502611993200066768520952 GT 1 -27694763511181360409521.8250536409125958941129468816987294 0.5032076084120964162459235040372245 0.0280586316113197931624393984143112 1.0284597969288353597442159066327294 GT 1 -408217584895313418531251807803460800.0537746460235240019583985530376107 0.8938469502163904879813389398056664 0.0758458222354795711464069363375330 1.0788763622073649421697500905664048 GT 1 -246703411059402970978472167671907963293.8254200516697872765717306538535605 1.6038510040239675629967419146901033 0.0845595502665931973272173123628998 1.0883499636971202749769841283387897 GT 1 -1365912980241056027303688408447272.0837030398627806293952053888681504 1.1132246788682350988190976064925374 0.0538158893357189668998808934579163 1.0553181087137868588477024964986053 GT 1 -9123131736097011956870928.5657042532808643486653610373049129 0.8605455991492006770372437861044186 0.0404024798485231435167917148127139 1.0412413322722534693909341214390436 GT 1 -20782526904632393560017142669683.5696324445642376766074691338395535 0.2877541360607025876432019267410214 0.0186153984477631318336610421122856 1.0187908457365311256540520667003721 GT 1 -158373662989323407769661.9731299099421292551653364432780063 2.2616678165951492998065616017096172 0.0936734296243311898074406989959447 1.0983555849334400953589829451263814 GT 1 -182975962.1966769092974414668920391636768611 2.1441212478925465086595756175893255 0.0983927079584785012606985263814718 1.1035762283993910000341405671064336 GT 1 -237.0414374822477291538653519706822229 1.2687338747214656530899965677409737 0.0145922337368949830610434966171570 1.0146997475728010989442720271006148 GT 1 -6694798857138350.4205543826259878048633395522426076 1.6248573035374183115155421404048219 0.0219325661867718003977296976112186 1.0221766605950398000882153358921098 GT 1 -286257173.3971126654433050003690468675348264 0.7094190088191874362621103857696483 0.0084528126876886696384178569133449 1.0084887403117655811626720073287597 GT 1 -807903436737150229.8929852605877974860490344288068797 1.9160423126209155492613935484252280 0.0049477641278663294603087408104943 1.0049600448375817252416905832165682 GT 1 -23025868896395844954729412101940.5461953039357710107549457551944003 5.7946339126692783911921131132800788 0.0834199501782061733040323275788897 1.0871058725576929732391927472079233 LT 1 -63566621189215423657070263478.3205639692145730944014922419273073 1.8966767544777073478833224290009695 0.0866583692818675899427868585872364 1.0906452835815145243269873883114289 GT 1 -338765.3023955330419373398543957071805989 0.3658973451226804964362014579814968 0.0310810267633661263767383974035633 1.0315742895384724297798455925176928 GT 1 -11679769305461384494369465131243744385967175.8638168770221248392799959890051573 4.0243471732570837380707418982089946 0.0450650246960452232321813540520454 1.0461120295065050260573222188666189 LT 1 -76672025515920.6413316222047660037533909378339844 0.3502763922906558897111639743067545 0.0347890833549657845190728953113714 1.0354086350537844875137148635258699 GT 1 -399269878743.6103918767533564210723840041427673 1.0556080558616571667631854359594873 0.0043728091597548985044338499401283 1.0043823978529556124700383419558635 GT 1 -79438869296692795299051546623454377608.1814186918732308286854360218127819 1.9649612257317974221333759371655261 0.0081158342258391005660573830155516 1.0081489468880431317173351849889573 GT 1 -39698669605953.0790773426353017816161087313166161 2.5418676358961071207269918505251329 0.0025724067937380495984822164624728 1.0025757211171731392979414625450980 GT 1 -185.5287312921264249704741758085323920 0.2112200862181443467056705187154265 0.0855726608559515907326098775818931 1.0894572684969894336389559848416020 GT 1 -52455344324255341236733919063238312.0486359951590719713124977212498570 0.0236012197445192164531193027424105 0.0137891138119513746182548666660069 1.0138850667334159526834597935588964 GT 1 -8605825028114878.4799190531036079325373401075075133 1.5731162734528058741286472106586034 0.0890715053324226176490780975942613 1.0932908758372536240265087816152837 GT 1 -346069236683559119106447769166491758081503.9996137046053034718251798720136014 0.7832997645490856227823831984484807 0.0286406595046684112348090482287173 1.0290588065500340298865429731154819 GT 1 -21715123125451843329923039443488.5851585000562026069162687161805120 1.3713918948108013856661685890161107 0.0501147467276293484697064497622440 1.0514140877118539153526829209562581 GT 1 -1189493229966391042429387489075053335.6822303690400365732537879214472510 1.1440529840354150827988789354395355 0.0444698958856780573636617984161823 1.0454890096606793169253009117755608 GT 1 -229400619.6578878846453442998170794290920379 0.2998114909636524286226364243283661 0.0916356045737297362557150409178350 1.0961096643380359211425765575799232 GT 1 -2617695.1751583056046431283817045912950077 1.0447648138218551646552403829389474 0.0438309479997909322186357434539133 1.0448205489275814973757474711074558 GT 1 -448143951157657190564.2663855764032047958240943770107284 0.0123897982842040300749898803987477 0.0348242878014171819364226206785176 1.0354451090387668526499748862530466 GT 1 -2052934453101663.1158033379855760683345817067850163 0.0551369176538383031155690802362850 0.0123360868135731051323918637323854 1.0124128079444620723110570097531451 GT 1 -2541619199188360857919003140978771790.1479789443312100563503425726977075 0.9106878494051477001205164126290629 0.0647641153976847415453202237403361 1.0669564985143254394553006513645659 GT 1 -3641021605465663988536594958045755196126663.8807982546731085358696176435480585 0.1556614869154361111804681065552088 0.0026763836100933921965351916319664 1.0026799715279003617821097645673716 GT 1 -67.6449068395551743535932080916414022 0.2837374219059174908837413593778949 0.0816898048615935125250396252511489 1.0852200422371974667085099431221062 GT 1 -46828965238.8861950283494785143330885074221089 0.3292470509195072429332476002327927 0.0657874011195726185645641725565555 1.0680512447275824706966409550769723 GT 1 -7407583.0935601008687887895051735597661849 0.9912636637886898131146627447765382 0.0443245263814494405767895673213494 1.0453368863033569743086966639309555 GT 1 -4669331.4557820094224696037753968886605714 1.3387847927597186786395328478242157 0.0783786627114729179126367076212885 1.0816208368687158250914530952963998 GT 1 -10.8151481423438680688323986091543403 0.6194749245516056552113048592850712 0.0240364997525255460620563462501936 1.0243300905557642687568618986875784 GT 1 -136181215693249376074242551896.8040301017969425429960389133019056 0.4736442739018585241469715604432252 0.0234045226015540963133824340042239 1.0236827583314624191899954087011149 GT 1 -24608515014359.0471332781472220090771591403788504 1.7555051144284049580780117163243918 0.0775073150622183008799899137639214 1.0806758327056350035072923563048173 GT 1 -4134886119795389391198184.3308041860844261485469072940715098 0.7787940064128959470241042941305775 0.0573451787849224498633154717996219 1.0590551066090458490576047416226243 GT 1 -19208697609912.4269030332036650459528605986929213 0.3964867470814034917765964852249474 0.0063418892740790505936758145427519 1.0063620844829917504380669028477287 GT 1 -783142177663735.1233222144008182883773306587056783 1.6584580394048054003528009180411472 0.0665020239466069747302697350356325 1.0688164841297663511829976577238823 GT 1 -4007094551764654579535981820057666339.2098311849631387408118444242845558 0.2478123446255315038441732940610160 0.0465491248378956923526294948338599 1.0476673758120443382075732319618229 GT 1 -493245061735645381.5550321627160346492423205939267767 2.3585476991780785185189109435187709 0.0164734264561044796672078076482162 1.0166106221546482355581897276820520 GT 1 -4762112476376496358.5513547183425990601729739885608587 0.3351475617162720134704156745587948 0.0117541916311043736652456448147804 1.0118238182826947881248355808594695 GT 1 -2208865162795339957334298353848410.3294695302326461431154974485618112 1.5354185234634726062955829911584300 0.0722538233806195773090875990174135 1.0749971001823602098382334980672527 GT 1 -798183244596302441557531824829421555570.3976127639819210164092081303133708 2.0107438733974098143728469619732535 0.0329995123718065450848427341883306 1.0335562792598970106366630716624520 GT 1 -27952093040.2980867904277303682140821438883407 0.7312872653630772564787040504472855 0.0626978188063487480604665749073415 1.0647495501293946466226073297934701 GT 1 -36590751544650488706954871923551865.8162918124955769620139010044441567 0.3639950304112748411980407875591806 0.0737175140560009233221393815488583 1.0765760304427391464986052271444084 GT 1 -311618549540636520218116.6007130616350932727966937945190447 1.0523450547126753957164897722204625 0.0736536744545661264740232902617631 1.0765071125882135648990801927960900 GT 1 -1267505176172.2443690800618769108264660661989239 2.9926353474373019778158150467292020 0.0551224541202885225449759887787078 1.0583073826171023948633901288554861 LT 2 -261582854092071.8064079704552440678820492865367449 5.3961265444215602730198637717449092 0.0847854492020771420248072918847964 1.0885967594468000017595843692022463 LT 1 -11353525537293373691053137703963137959.7045520130351785712983788283766661 0.4889727892590974177512013150442373 0.0199250474840762281943486380078477 1.0201262280830247701234717426549344 GT 1 -3372441937741590577808.8624181876285660849638247502362825 1.2125746522094178067709323658493013 0.0121934209378689662468505258667374 1.0122683705797816437712694894714548 GT 1 -101478.0063403074672787061026638494078933 0.3898324140222132155871029634139220 0.0987887410732436307853457332230914 1.1040155772411508772582014103557148 GT 1 -1863995090964057278388686277549208.5945650192294699173705577710765340 1.4814815123350796060658562840608478 0.0043687666431809514838986360571950 1.0043783375898327256055658058601546 GT 1 -516191332.7502648954368012787716528788474078 0.4601424394651452825324153281256411 0.0683500318691373827771324782680589 1.0707981055159154271065065981797766 GT 1 -9037676123234758535672.1433798608036749593406264969608861 0.3584910649943357880587718979730625 0.0695059237065328283408717719721755 1.0720395690743490928769631199778408 GT 1 -1007990618678557744953244996847349279119380.1575826014101116567187968281312426 0.8899019293726613731266608887091296 0.0779494700545888560894682310335802 1.0811552522142393707820920447191601 GT 1 -896759.4811157086424792677916102775178790 0.3183910798945114810975301521498014 0.0998854499369069553733484840513458 1.1052332459090832012083649181847394 GT 1 -97515308161756.7611508626288130666705799747225369 0.1793241735520347534162354610264674 0.0468502742853031252088863828983188 1.0479832777893890969605165271304910 GT 1 -71894276922824807531091067783652.6799098821741594192674945634283027 0.8298035242402028761864020511661928 0.0608591220330057551503852200306539 1.0627897812434101773227665651641059 GT 1 -87944016857019018205.9397424124207913522363303729029861 0.0818824343953086242674658100120992 0.0586791925513522621435652631994726 1.0604712756603694244256462279394496 GT 1 -5425561657496699.9316482362485299457111653934534804 2.9391583568119076552986494598088045 0.0734351017946149894173944091843705 1.0762711890769700041141449470751960 LT 1 -11981.3133372162450705952831532477990139 2.3721346370580304580027294795480992 0.0459857520272051545869829957865243 1.0470766726634110116669145009163406 GT 1 -15621964952975473366474.9212869413640170575989536782655764 4.5594085025065083595754662374094811 0.0314554385484746302002477889143382 1.0319607864020942411831440334460067 LT 1 -189035562735384151029700948117.9111649989095176164623114780169115 0.2502901017278445093356872863713553 0.0319197759239871616217637434148280 1.0324403190280117288788075524269751 GT 1 -5789600390336843563577464.0012359654110232806440693875547919 0.3650841832392355374327352983812560 0.0677715355265732372825935911343156 1.0701773607816877151454468352524775 GT 1 -134.3244006767590508709179459718671779 1.3504950272967977794601847496434496 0.0842421470087586411825911787502733 1.0880033018849714364521211495312062 GT 1 -12176650.6421026475244206766229819725621811 0.0065611096610044400263021417904095 0.0543181002463882114021515046489029 1.0558490246662912335397882499503636 GT 1 -6439599962390107423172241279518432677042.7857551453089896408328136959437032 0.1836717282755655951268661216202705 0.0247801441922452232314838948946076 1.0250923402678871088208185427902280 GT 1 -1235112068752266396021405773787427343785182.7619554731121588150648372561567870 0.3178817906070363816836481260098270 0.0759710676944509660411454172246195 1.0790118958116714653832256646202689 GT 1 -241153519272.0394467357194718886399451522121584 0.5817734992953522934710166306373632 0.0993015858382046713422016978112623 1.1045848008670271675074144912396231 GT 1 -3103897854035.6673528321409813550624291735807699 0.1923916835174300592268830148002192 0.0357099138783362491258859433823725 1.0363631104253528441640606904184197 GT 1 -16455859149778.1253811230400662316791575570249937 2.4851195311427188493801818526666927 0.0482308198607655843465537484945243 1.0494327314253636142468525451002109 GT 1 -22672424298346316856323439151835868652220353.0891009172309227836633350473431737 0.0559199121033718960603847388293835 0.0468952009695550975699389018091073 1.0480304138708274317324184925835461 GT 1 -2679062897.5934675655534072694590291095082752 0.6827435457357085741694699914891949 0.0234957943868157650663861534168675 1.0237762218511404025453257218819005 GT 1 -464508356645.7685591367800192489539759477435333 0.1749088152166478237981622457727938 0.0146246165861492577121730559661973 1.0147326104976363322075985488189135 GT 1 -929137.9271834136396784092024893295867516 0.3754866767753537765408678448088435 0.0683174974948882743087375402791653 1.0707631848833765540764931753353552 GT 1 -46.5159294136408864602303797887034694 0.8623190093301360870765724691048024 0.0078001759412848129315668937946490 1.0078307564396195085364227682847991 GT 1 -228361273076302681246689.8293041026588318003953431702859581 0.7756850395720660430228137282355623 0.0466939108031829185575675554621119 1.0478192420102770804477134563418696 GT 1 -304.4251961199657101514412737863269101 0.2382446706044519921691109928138924 0.0740371900834208814345015278522164 1.0769212072196038642280370996198356 GT 1 -1257555754469968739889264537.3278019576864085131250470196282362 0.2190114990575234780660198160891868 0.0047820065577493807289196296291238 1.0047934769333255348734717355176236 GT 1 -32556870596404861.9341988882604608324244907266590873 0.8636741532172793274277676624719604 0.0490409521765990452055199706547176 1.0502842795896072030607842203221410 GT 1 -856304039083423017845514585.4707833517728542674046992297692166 0.6317902162219215681673237774854113 0.0262960388197656297607306111844624 1.0266479628325122682677220945822661 GT 1 -133766628979953659874103826608129829922.8123445582843991665128979175028435 1.4469114110343028417003626673337976 0.0759439335909378235307341336695329 1.0789825312493986643912719991090188 GT 1 -21969229207362350310005070517476048.6866570919907216267474236027875216 2.1494523148587825290275686298775330 0.0429108693909863157065899654453128 1.0438587564334017404258507440847322 GT 1 -556678976311916204305825712403213064476.6961334943320202141918409641213738 1.7621419185435556248556446239262166 0.0347600503127622237291484216557076 1.0353785560264317628098084358260809 GT 1 -785536266253482.5092805062093281095293356729527593 3.1605737420240501875027010323765527 0.0982496095506414793056986049556889 1.1034175262078881893412057382896508 LT 1 -8072450398932263004770071107083508117.5335978935747611207628950307142786 0.7155897203682488662243428232664457 0.0338446449615152859123321748193368 1.0344306346790490780053617391229248 GT 1 -4111395304433228619003285963416927608642.7497564665816090062793098267293086 0.6095605274453050917079100741537314 0.0448820225753724776966434556291356 1.0459204095611299208997020002290409 GT 1 -539213549630993632455258.6113838197248312332055420378294851 0.5644948650365093756869170607109354 0.0714646549807736401253821251499511 1.0741468321188244622007595786282342 GT 1 -3819452238461589.1994638071352166830348146462953612 0.4352438456815156064829332326851287 0.0617070835361393718874327923996470 1.0636931010444166524950328887030504 GT 1 -28345758342816629830287.6233789061001769929102067614925115 0.2767249828950305011240072668835280 0.0713485220453715034976560271368030 1.0740217688412727245630559035803870 GT 1 -198068797400777.0621835551793349991875467569387404 1.0347231282776362624636011994286422 0.0322801406014181731923485988131769 1.0328126350379862474216649811750781 GT 1 -1478948251113857700925827730262757478.8692034077597554425105108244315125 1.9804500159187811154329596823002490 0.0011593202788120884557991643130422 1.0011599928104031096430051856690040 GT 1 -104830829006323521327004633.4412664599226542539764082644764782 0.7267042046467122018120026713980883 0.0100539017585578896929502521256351 1.0101047835565162663116507390489654 GT 1 -4342580253941.4172852351589596284839578254160701 0.8672378677958948155319549595998470 0.0265496265427586308483196608950342 1.0269084329143293101882210343504268 GT 1 -203746106141.8764004269484071203528128933446134 1.2936322586963254633255718879949215 0.0195432514177860170805120718922451 1.0197367459125474640004700084335267 GT 1 -668698.2851897004389438528143330229947183 2.9535626067593186536121645248537243 0.0246193883617001429113472714685373 1.0249275132481135409362567482463051 GT 1 -4558028266815241071602197319444182817391363.7060430757568854653955306592760950 0.8465637328400826683485359699825245 0.0739561894397762802860719701497967 1.0768337338350050596809502790982090 GT 1 -20530136090098667.5652791605498419912191845227236951 0.4330845853945712784957630182867826 0.0843478897492572655948224712005030 1.0881187787500518722139240616425891 GT 1 -1085492469586932899124239554491025.5696335826280368807798227697103863 0.3303589982518730649096057906803041 0.0952304227737486707510236672389574 1.1000749785007657930452371826286056 GT 1 -39735058895752038834541047317667376122.6848611118550970875535741705906101 0.0638548455761705536377787243054010 0.0131807415875851738266289859266882 1.0132683784934398245087500061127070 GT 1 -26904743082788273300631680.3692592209335778062947050007998198 0.8690791431154651440606716101739683 0.0809737606358018400613742109470775 1.0844406049511387522285487188514648 GT 1 -7778414843512548.0013858827248139114470000963376150 0.9597477196735984010133547412297096 0.0905321549774045487074991777567349 1.0948956362145379806371015203965746 GT 1 -416909931575793226743583685305351898407484.8295137508632087267947965402444633 0.6924887650436835733460897331433243 0.0230240700155395297435796745972454 1.0232932639015311576238509020523033 GT 1 -503.2157304259425453676381739900700839 1.3279876989464169000431386097759826 0.0152718108220974100597050950738414 1.0153896259644707985224561239073084 GT 1 -15729093576827352062617247406470.1056577090716980187787290922754103 0.6209176571454928567963580730657367 0.0461473726964017631445229015214524 1.0472460981843188105840568125556880 GT 1 -650211805579.0911050847161625055472369818828122 0.4022166857644095918952679552907385 0.0933985487493075284682368968338760 1.0980523397148201984419792228577856 GT 1 -244519853.6193886378083310279399412796735816 0.5366114761307092180322198896405006 0.0333470793968817149255186142501957 1.0339157718425271466374276047452269 GT 1 -301263724186342074664.0773687041042111074337997576304368 0.6158581990437049169664910672728018 0.0609591432153396693133179981576953 1.0628962897676682875432813907257269 GT 1 -461749141937479257257.8905669116711947721695581567928253 1.4393976459339947577463584689947417 0.0136326505768016979955447445145671 1.0137264284268046826065589118738912 GT 1 -1457729600325550014016758.0637678531517711720467772439357202 3.3177005937201320192233352923407031 0.0388952323322002019113796131402850 1.0404587846288547435690316968864228 LT 2 -763.9226394232249565600464706675581718 0.3447615957950221829335944802059291 0.0311846364161998581974382727890574 1.0316812285042157742172541219172543 GT 1 -192685.5590835546106547647433718814544979 0.6352126159683041323689911127616519 0.0148388935670523370216339595174992 1.0149500913540951840401545022540858 GT 1 -77726553382729736900759748676472553066.9998965020201666446307460162970224 0.3808386246282332605973737363219115 0.0359960744939009388924867618323958 1.0366599122781199101050945065972067 GT 1 -9341167922456978087651913.0428386214305262036363432317895241 0.5931481589463077962595189057598548 0.0452359564066230982324474927980249 1.0462910438007397756809282183869819 GT 1 -352447665755319754770587278647021067462408.3296797112862831393500398329891264 0.9080890812040906886129203031316801 0.0578605832315640715493120508303043 1.0596020145410648365333658054416798 GT 1 -11515603841343281601970444974407762.4920328974982992270838608317665217 0.7584161731364508113960761202682651 0.0322127942477922302091570044556490 1.0327430446398257787027573055849747 GT 1 -19048636733168472755389878.5503236345157000624218873175995841 2.1063126228528016765796108072675080 0.0562464121708676839081999560686248 1.0578901767528761490735337528679787 GT 1 -51936145664809540438.5016526605245626492117758040184838 0.5069095572872175146785790747444679 0.0767996998694983134358682173806295 1.0799090581303243582249667784728982 GT 1 -30556655793620233181210918775248010877760.5162624871460053033565152040747519 0.8479729385268347881750632364416626 0.0090708732299394090881653849288086 1.0091122640914794894328650129037713 GT 1 -1608992820794874276381346626158.6800362548172215059374186316123006 1.0081897176813851422537604637078802 0.0632072148219973394853549314974286 1.0652931682889157348312381334426149 GT 1 -1272634.4572088484665630971037361419778688 1.8037682201613171128064090391068957 0.0893078818719930425939444293377432 1.0935503991861186494652379710710162 GT 1 -119371715.7589921990242700824724671708309434 0.9599105948476081496761053957019313 0.0688474482283676411246997766310213 1.0713321571566429539762834460609053 GT 1 -995843571490187472210467062234.9804529132191680891910621455921867 1.0349643598770075002687221614832848 0.0661905791186706569300943503141854 1.0684829077391457973785191736716097 GT 1 -316576609372505262410793914069705666.6640829162682760520690810689988900 0.7322950634834840649180298000676031 0.0291728857864420917069776997962427 1.0296068757570926891793294899607021 GT 1 -9631096102783063838.6092014665207847293469268390707334 0.9654694095235386850681433538895767 0.0067614176396862327087196012584863 1.0067843795860050657198545482033780 GT 1 -13594067310849071045.7864921655337928608192540787916047 0.5776066569362519641442998469142158 0.0880432151720155236142378138171875 1.0921626750875475099375341399950030 GT 1 -273.7793753198519685907740503941461379 0.6792805839807487910524383822542475 0.0431739374731425662443717902088476 1.0441336568937318570844395192036693 GT 1 -1471705342282380449721976811483.9419127989479718930634036092159369 1.5048281633946642934637626779274332 0.0928781898276993590585195863851496 1.0974785378047347537199899890399797 GT 1 -9831.4770208503348836548211836313235003 0.5253764637955794027123238985334295 0.0635214476966461200768100108068422 1.0656286593321071875770055241866599 GT 1 -3820322763721940476.8779656235071153214340296612180078 1.2525412542640622050878900259085413 0.0944423388067712828383196903634627 1.0992043248420951658502949455148656 GT 1 -9216214891244682910897447641702368220.8724526185793281328988613362757283 0.7196056261947603955884354066732645 0.0994510177087278956833587669622813 1.1047507212965698223654181152269591 GT 1 -16039498152970584659085688148526083639.9151015088775183225444020034856320 2.8255426284062115621280477836630283 0.0320514654736701816875254321734120 1.0325763599306078131979579526059920 GT 1 -132.7439306230070370361971833423199890 0.7046368140187548471761849884006016 0.0864475507721918338491700917441878 1.0904144891277739067738191159705033 GT 1 -31.1225022574423345282828507837282466 0.7336739869826205006167325839121006 0.0433511091752877791344379043019393 1.0443188400886738085450528778664901 GT 1 -9486074484131694.6914101761204712357199305079411481 0.2825701218586724239561185841369917 0.0215804517318557323364168739878751 1.0218167149762418003200842426975074 GT 1 -819785236924143.0878522131861456600454366321861606 1.3558673236297765897290236054063283 0.0238420723096807992170768591439444 1.0241308945009440210465416039145266 GT 1 -15076.4980779661466024218747911527874441 0.4295354622687734614833423196992874 0.0364905182906808972331292113413927 1.0371729502738860573920491798178422 GT 1 -213110257562544376715.7362573461497064328943012228865977 2.7435641577798345241580078306777038 0.0095734259288166647148404770897627 1.0096195457566957874746667394660694 GT 1 -26620754023158216378137265747.0215131201415623573010006468286116 0.1831942177414454124440493093018287 0.0460244664695981989769708717695621 1.0471172540572671743075493040100106 GT 1 -250894551602572552309452273639.8042902884751225495143796316896518 0.1271660816765312987008820914287928 0.0213391005214552755290179183015668 1.0215700708365981221035069275033338 GT 1 -2000754662557926576999262507650780867.1056818408175551358582696029424572 0.4147227573135154481646222504400679 0.0378168062840152804082381406739520 1.0385504163877363554134811252092027 GT 1 -500915193541335470331733.4286215944233066819659965541220700 0.0920566724953047927693502829847754 0.0150378462466190296308945116704978 1.0151520611336146434028443869245507 GT 1 -46745375074169304529629905314657221270706.6371793720484382332280751810610160 0.8200404887618774917833405229741823 0.0081330301971107735069582095648036 1.0081662837111594058687997658816806 GT 1 -25.4670129600080438182395159886553281 0.6463852780043165063020119134758867 0.0329867052827836798953469975844425 1.0335430352084430225189519006370990 GT 1 -340494131818832786.3862765882327300130689597265032489 0.4619130847678883868764279939310892 0.0900800183948241091654335316858127 1.0943986156395173587808323205368063 GT 1 -537412153847083.2740066411058598435038114785848441 0.0452141285123431324493395059457295 0.0406277061359552660185293727730154 1.0414760689385848859421956236285108 GT 1 -2.1576608226416103400861410613429943 0.0406882318837648509677588009801765 0.0658934951539498533098741889458962 1.0681648163698995263244739801442918 GT 1 -649144196458566654556129662.1729252018734890992291253380682702 0.1311460739906281342383155195864841 0.0797698136973951607819840281046236 1.0831314377316459024732369191308832 GT 1 -1130.3625654090567388176225964427635300 0.6848312377863401540990735710983617 0.0659030755536787314098774943250046 1.0681750726402593242358757237646526 GT 1 -764.2299145842300111277375372836546761 0.1595026429766116149341332382502445 0.0342817798830114607129190094661686 1.0348831849231006265843765365249678 GT 1 -10.9701609943693918519499765209862937 1.1542302242427379067614352701943893 0.0574916559598397786560468855446113 1.0592105066061514278399869581167059 GT 1 -7699793321.2550568032671668591564849534781364 0.5812773154092639019587466042774560 0.0618645920938479099564875542382406 1.0638609822856373702120002002909631 GT 1 -303571.0655759438454841863809265986332344 0.9070132347963553014108802506530372 0.0602162506384676074385735885200000 1.0621054840552486243364392202386252 GT 1 -16297651521628234223095109.1595894601557957258175300236592591 0.3530011531952401533900610384007723 0.0706210656842665452901846512090546 1.0732387284846983801588019840348367 GT 1 -11665051002397019037186560.8189146157340619395921835970427450 0.3997900457096470561901062227479027 0.0653545131430207972999288428703993 1.0675879800339200780284756264407629 GT 1 -18606819.5646448688599900631928623294904522 1.2367133338219102020331076960404111 0.0906836760318095633070934778359572 1.0950622541754141514594017212503903 GT 1 -126749678558099702360452925.1172610674759310634310077974317885 1.0118448154412646395707495748216579 0.0133844581910058867745533624342686 1.0134748374087498009931988356571585 GT 1 -6556625647.0808719626294524530289125231988048 1.5853110166864396666775457937241432 0.0081421193603926630134482034441087 1.0081754474450108275017793051110178 GT 1 -342535111816.6393395373457887790215243982133090 0.1989065206676673250602861951796981 0.0864634545111471603267476758043248 1.0904318979556982350423093452513085 GT 1 -16156955753937051518272904168999.2641552342935004610055342112914361 0.2677458059057749697299862265802386 0.0931164755233719891502336278165185 1.0977412555514709269309434143111898 GT 1 -462679313496759168263954436.2772056045870860750098404471783127 0.2629200519427805421180941705198301 0.0247418752191677399181409757850696 1.0250530996576743796471731662077423 GT 1 -110766371104549771159767702.8159432473753863491962495350056421 1.1808261774408606263278581563639357 0.0792969602186998444623234404570985 1.0826177270957637225341518567095655 GT 1 -28901141931979941981126340412207093.6440698805009750908146830579623516 0.1063488503338932548167180007299227 0.0067912864636538103211632190515363 1.0068144521925439129331956804545340 GT 1 -627689.6613713450725217094482313865131515 0.2437901289734658865808912624505506 0.0261110407493608797985449534384140 1.0264579867147923310982280727193243 GT 1 -2582297.5945488081737275117489546531633410 0.3376151214427360864507029108742178 0.0131764925229433364289794900841227 1.0132640726841867208801746016525326 GT 1 -3888163172650836073879271.0609657779053129824774398193926265 1.0038668432950315300232638048080740 0.0518497020995575692891714307922450 1.0532422472045097657413461015244648 GT 1 -3069191107675950892396163103949915771.5161946263874574133946741593120232 0.1449611081435046495403063562168815 0.0886477412166816787419103546882103 1.0928257838116948081521209130706379 GT 1 -3306766342629301517179206200669705557.2702292610374837744632640131449993 0.0492303333563100952206605596346792 0.0625310013721475694281655493456305 1.0645715898146245865051161175211401 GT 1 -11066141744123460301962386879931604177.9174113948009830185814208677968463 0.3309684577818737263912579900412035 0.0186224261018598186395145307545698 1.0187980067203575072336709587022623 GT 1 -146756472737448997.4638488500347070101999477135116793 1.1990458176778176043801469873386525 0.0572427197775242551820343970150409 1.0589464205478702226476507214002036 GT 1 -57045341589.7361113760420021728831741996838593 2.4283321034208668285607209943310674 0.0451478620440603875535777033559493 1.0461987798542186160346630238536318 GT 1 -15028.5502733943818558214439056992583697 0.3115567710199284341066929049564284 0.0753637523773737655403599818637950 1.0783548646245005604194552891792454 GT 1 -68750165015152513852.5306570354873006434628151795372033 0.7303968616033432110667775684373944 0.0933324565904509479867420198627022 1.0979794413648451213665241981561791 GT 1 -1021779.8488923004680777032210314029785111 0.6126550194708598051535818792871857 0.0765786094752135711772552482429403 1.0796696042167697128077022001570917 GT 1 -891442889826541104250934.5977262009092414827261971701517324 0.0777285252913906076929519997303274 0.0136055858052341837124756729513931 1.0136989899676168112624565761039918 GT 1 -363466.5091815854869382647087771131042716 0.3019068397233913726183884130960881 0.0922735436652222481135909840683334 1.0968122053118121453328087031104419 GT 1 -4069557669.9461930419945259516120095991816755 1.8110399266931956388302949170207467 0.0061655715240240338546789880132844 1.0061846571497667750541571753121991 GT 1 -3353616508737063611.2116760836525248632152649934160150 0.0112644211968402608896202381082185 0.0882961095183515671789282348263219 1.0924400231176729047880218387909618 GT 1 -227995967359471416936085010749192914532.1922681130392564883215341997396716 1.4418427905653059307026512114526037 0.0234494912588287987557690032312330 1.0237288057417448718464970677270275 GT 1 -1012057500113570205289206742536421222956885.3777105564754062404001331558071685 0.2288013415663722180640175607935006 0.0702250176587380491206434918953357 1.0728126765823023303161716526523677 GT 1 -9755339578423608.4282652708593267228846791468392849 0.6129477823583703773379054736064925 0.0287726255015226041290069030252856 1.0291946728112810777048776728657752 GT 1 -14878737467665347136179254172174252182052.2876823123673709008951883028322910 1.3492540440452211055384755208020433 0.0193395622894866791822582625099111 1.0195290182658209216361637251871511 GT 1 -344.0882141555533590141179040498718442 3.4159367480261097180141702333134811 0.0899730814198551967564051237716266 1.0942810990514442768248422859466860 LT 1 -83919112216717.8750597297107526722467734668266714 0.2631156163376899937276371334494289 0.0191631511589741707547309509944760 1.0193491443172840916499953365645544 GT 1 -518957019998552664986433056.4808690014457456585823530355532820 0.1433701985435119089126079576446553 0.0065482459301305584813811701709905 1.0065697797498204124057940093827888 GT 1 -82853529237043359864257597519801.5722110926853865254816857804239710 0.0415478791609524454346617163794757 0.0711764438222882817024984140341258 1.0738364869716233909358907613280362 GT 1 -658725.6856863085584228588396077729814126 0.7378911950812067492143760137349874 0.0713558015449855795984701429653397 1.0740296076573606244181328292087463 GT 1 -50604039007135730.5439270595651666061127019523593560 0.2179042752826462474671376782119351 0.0864866332952610947964901543262797 1.0904572708630944528953085165154888 GT 1 -465267404282283714.7379320964912937007900953551487619 0.1149873991096727129353145457862288 0.0212237594360192664120757303068259 1.0214522217540298866693171350234529 GT 1 -115574958967.8960847689243900153805986068428587 0.2973426799259007125032950612488960 0.0053080504101256571408863113823288 1.0053221881611600107501071858604896 GT 1 -128981121588989693002807056420022984.5252520042054866990793291707242285 0.7552149230929296980475692037167685 0.0957255831436834335855855134425995 1.1006224061851340338444038970099376 GT 1 -29411101447842567997741529803310.0360038327466099038093635511735753 1.5384336758374932720928482253534711 0.0818967500091202594948065658718739 1.0854454219292832830700155071096882 GT 1 -51.5334560596481936675773016110192861 0.5934146633564198756103626709346729 0.0881040760699423482200995297376395 1.0922294139175606615065575274652317 GT 1 -447859847.1158716326625155914494546926664600 1.1426101180135926593874547427658156 0.0763268928981448821237972296514612 1.0793970501282264691804281664150673 GT 1 -418317911005965684494464.4608049429667244187564848947553081 0.2016314684424102371838310463972979 0.0274013187609517247141693764959499 1.0277837369263379046001133948264795 GT 1 -4653.6168618865772350416347569339004832 0.1298535753736252384541262141019768 0.0377795201044017402326299310080086 1.0385116654955722077670727721024998 GT 1 -244.4309721006028748759807418626382799 1.2788531099159143335370486620306131 0.0622159428255373120427184137190896 1.0642355727116530260661426687485005 GT 1 -2891542474.5113471380473326963389765428866873 0.0508587799880348832603280461450824 0.0457386977908565911876340377776471 1.0468177433513362341597740567569913 GT 1 -76690719775484639153587624791602239513548.4405280844388605191403021928613817 0.8669427946487485873010855238009661 0.0062963759063304468048034088971162 1.0063162816812580315578546882764436 GT 1 -218091629496083072.6996205353704320279353370349384501 0.0632876659741591678591296133363384 0.0249003888398648621901235181941410 1.0252156479103616392761121578721925 GT 1 -88043190.3817304587182297099352954080518522 1.9533355999098515160445427130286398 0.0027827356894906139170097057578481 1.0027866146962877327482146429662100 GT 1 -437274.2466057263113673982663194572877086 2.7603961272138254101659521065757475 0.0420906833556795036110722589224254 1.0430021645268817794706832619487738 GT 1 -12114333129494645122323867057647184333773.7013178719652682317238501261026317 0.8328911492010635461863910138057826 0.0101114383457946109967763484351497 1.0101629061749534560295800124449600 GT 1 -22.6389812198198539496268300340297729 4.3240620266087046084495758313128287 0.0428532718275686321767848543044407 1.0437985783073146753511671132437693 LT 1 -46764077858.9885329756951588082279772265495017 0.0277679179351493866958229338098759 0.0673135524709904734492074017753120 1.0696862037194088645235525618447158 GT 1 -7051044964595134165405793452.0689964312650521929117807340762051 0.7974155250832010583315744394692038 0.0041166965554765310702658604477821 1.0041251934782608601941384541379952 GT 1 -3003760907058942291082031273517636870986.1676125737251283510759689644194733 0.2597225202771873941599476628286316 0.0001073257368709830445296151780136 1.0001073314966900020606961651704517 GT 1 -2948361596939644740407357.2299598892507629771864166724480087 1.7622787843772382419510313308038880 0.0609316706084742698572594591407980 1.0628670341662692092441631161330915 GT 1 -3527177.6852876239604433159481910892914642 0.7838266079761023029013613313942639 0.0868445165204586140268988579490919 1.0908491133470132502556586926056589 GT 1 -8734134301205323642752506557905454058265.0253476897675851949208357039341556 1.0910876049657082583914245039626227 0.0991416305989050315761650570486338 1.1044072264034528150536606625090410 GT 1 -402772012620977648998542646224818082209.9711960278865061530070320094561806 2.0279546336092864691795209017268119 0.0914966927176961062694720692664647 1.0959567507757581423808037443920231 GT 1 -4434311355626451290.2447995755700304099557424206698366 0.9280955716351302906026422814133754 0.0525424323543076215227723026216335 1.0539731265157618570169091537335412 GT 1 -122690569904861719953565204894852436365.3795178042312506474559135813508865 2.5814508019226206197117035376061155 0.0907005460301997010717825179884247 1.0996009866512488693907238710913970 LT 2 -1491084190607563840971088771053.9992099007149257032103728235489712 0.3561270774493636710163852333268292 0.0012096841905128441425372445896757 1.0012104164490271663732434459253167 GT 1 -17413433.4279850307558028452434719327630511 0.2476491083519478739304074574965845 0.0752755336177386541191707025198384 1.0782594600243768957627891515970987 GT 1 -190960737066150423598.7078266806979829813583165293024491 1.4278047339121354018521088967596171 0.0879280271945838618005269170415578 1.0920363744718332763213124994480286 GT 1 -8330153277576065468486757062.5632855144154504591884477914667454 2.8323833085243398011976166116224007 0.0976367004973003845329148697187120 1.1027380689427120399242215995416644 LT 1 -75.9806592110818569426379423303686230 0.4354647280903092065027248030514491 0.0565736030874538401818620420999679 1.0582369279080494027209384221965391 GT 1 -47927042786526769650.2454641630628479643785962005449473 0.3847336018349763938139745391768050 0.0269311642759397024290481911378052 1.0273004534361589141801602061445966 GT 1 -256545.9561408795934314263526233596549890 1.8321119597129662649389080939624333 0.0590372629715549846229317764615226 1.0608517395129836196145665873670885 GT 1 -10363669827860286.7728551741488087537530901087859303 0.8176045813385220510590731402845473 0.0061801838759048045854926245809858 1.0061993602621624362759180371482580 GT 1 -727.1155673359348970543983127856777581 0.4521102747964739081532024354209602 0.0232426349689548400235981851303350 1.0235170047313411497195098000065983 GT 1 -19839.3287370687795336947063750051683530 0.2136564613193745876206390503157538 0.0495003842703357190231478490472751 1.0507675213360449895026497728991810 GT 1 -7122807637118674834780594163.7435314667281802522135645715582834 0.0634449222538876994316700830294769 0.0717459301468445780306795559270327 1.0744498014980868931618825704931255 GT 1 -8181935451883638986292889037826871106.9634046868445533849280385237495116 0.4330780430453763206178433438497457 0.0287776926257207447013538625932301 1.0291998900627192377348316976750590 GT 1 -48043898831551130012632.6865409390737645256455480376410735 0.4218806245501895922907698948989375 0.0090481821257084803636740228487339 1.0090893655371609381429795865025234 GT 1 -10816017016748638582100853016093331848.1198809605075915151704509451998351 1.0767321858638367791207195561016941 0.0117760212841380503387130177656323 1.0118459078215050549874808460698518 GT 1 -503130129061332819131664369033.5206183831834801527064367938547218 0.5842710877999286230936930916020856 0.0809375488763330196659884135722548 1.0844012034144654658958833346070264 GT 1 -930251912872265364140408.6398889137582826131495884526376847 0.5278141824987890475049485443866008 0.0758589734734127618472294320305413 1.0788905928756076341122744933871594 GT 1 -228004345802125265619636923433752104.5123226035047594521863364427968045 3.0399914009271938912420488366738199 0.0619933127468950826954232992126343 1.0639982007336230155896035708920587 LT 1 -15490898383097069048359.2158039277946979042917143584249630 0.2143767473294321873684377556332287 0.0810279215666551289426062076962945 1.0844995396414967563216283245527140 GT 1 -74060248895374.9593685239695666143756033039209316 0.5922007104341441164692856145787769 0.0283982968838980763158323283000075 1.0288093289572389789087299247839747 GT 1 -18729945886051462581024.4240069109837487181228806563492830 1.4461112340682147920661649004076759 0.0078660253134206668992093858327261 1.0078971256887868234622756538530400 GT 1 -107682137745509343291689474162686746.6787479372815634820499660842173119 1.3434331213174257675114697786784589 0.0381324951949737538514556773649026 1.0388785666948296036844614398172967 GT 1 -6.3126387562646952966034749341998828 1.0736307341804376598923378143225219 0.0316298945436009552177886584500547 1.0321409244314856743990377728959192 GT 1 -110810661.1450771922203195230163242793055965 0.1523969238108186432150765366013202 0.0806097404529615810636351107069086 1.0840445900243653941289543284964906 GT 1 -1077107305783561626738.3031082644395371945207413560514467 0.0456809851825864008616876328886374 0.0174670167289141337507584610996813 1.0176213650428311552985726194286925 GT 1 -2726969552081220039509274996.7951219336774222958115199684158229 3.7480001848125991746905566946743738 0.0646478419370378546293431231587286 1.0668321809648227005809939139621935 LT 1 -135789893666675.9998466914117829370643343365345613 3.0775501872603232541889276853274335 0.0916142548077366561029786107478522 1.0960861610884511497511410695347176 LT 1 -26773.6225606406040193988174111904224910 0.7663056896360155035742870028155166 0.0256011293817097214637004467350941 1.0259345410806549559067704907255200 GT 1 -3.3970795064840425107429920658622147 1.2358795134195347392692495937557118 0.0455815412186966773978915579203589 1.0466530676674137397308150610409020 GT 1 -646708077816226580483371655.9707878735064394808707388703175836 0.5134314334425674994784342355733834 0.0320735953079967303620105974120397 1.0325992228065913704937484891976889 GT 1 -536309.0498878251231678349023292734351447 0.4761603672575404994425823047054574 0.0964976027564137120509328006065304 1.1014765156677221498349174625237373 GT 1 -1043757015478.1389736015315596800183306668511275 0.4606419018895045665028779300822561 0.0384722396528945221477601854128360 1.0392318424542220392699686976981450 GT 1 -1448823261452479722364778205338791850.4363212782414397508231258052490072 0.0778132371906786910919613615015479 0.0544150882052427567137140499598372 1.0559515886814236758164659844747375 GT 1 -1800311625234432684316559.4861184767948026754244740519992741 0.5198784616110533657739821338916458 0.0917916616590889608451610361522804 1.0962814791878817631310545257110977 GT 1 -46031449700848790408555937358170193.2387183968683651975750324814450621 1.3035472489521411106321986215234347 0.0377331645578997908956907907148670 1.0384634910585245100101322373480917 GT 1 -4380423368348564124669682591350.3464934702974499545475491521506281 1.0850930933617459409958976575793098 0.0931219246414842276802495005778983 1.0977472641891140992255897515959169 GT 1 -5505407196705604941896441591987292792152.6856445426735412142225505918701282 1.6512505460589968923509852227521572 0.0952820065428073029524829556371707 1.1001319932820865871367295840660647 GT 1 -930430512050314183469.6347123319606705704498868953317537 1.5544860385634210776614364496975951 0.0195936731751564347535686870224863 1.0197881740392880970701304739609842 GT 1 -93983523025924051921989309412774647.5689333321188357773688911901000319 0.2849012732837168944688803318120800 0.0860336314400048137297140182199231 1.0899615040911919803648638051947122 GT 1 -16693221635.2271675055527333995659236559160916 1.8907260682151049952851336789840210 0.0883751320788325784188809985804058 1.0925267025606053023548350520047970 GT 1 -33258878159720786474470755.1437748655169257029285869184555569 0.6638532424385874764468222969131986 0.0246410449192396674869716072163707 1.0249497166810165176765185687916770 GT 1 -408920291.6841048898786674606448173439623243 1.2106989793948324139984385834244535 0.0023965921235451326524138931383388 1.0023994685471101769678173995672651 GT 1 -230787635810412253162217928827.4851348222341791862592467560425122 0.6410842200865876043998671538841348 0.0839307959699281750545472003135542 1.0876633669106131613604777428416397 GT 1 -11346178775657087920264619.4970437488737358313809313252197960 0.3293924122682028324174873283371952 0.0818204578172706172678248418102973 1.0853623277651178250677311302786070 GT 1 -21680759317269559689350257530473.9159360800579279588288280608799855 3.0006205795528490153477564359917090 0.0754180900632052907026480078135756 1.0784136329051655938706998534337534 LT 1 -7572400756402169.4879061779077497699461273006123174 0.9963094095845407105840151180118496 0.0820053282075271520161114876518588 1.0855636925261237814502902506008179 GT 1 -54353897038752976947490682535.8073130285974913357791843023600726 0.3099890639980050332352473249702247 0.0279559951798794061739070384102697 1.0283542030977806136445143549956725 GT 1 -550.7736200612051078261947861830817946 0.3455962213925745833643964688955211 0.0258330150480579979393183208284383 1.0261725475783876736842625850845663 GT 1 -1634085819066363180969005531765181.4185537266345040213142726419191485 0.3603191214880082302473769456757428 0.0677005234789379720427687330042679 1.0701011891715892101754895567810415 GT 1 -70218908585085.0898826290931557919217719169779398 0.0898213495082152145105370574484271 0.0196587051080318895576750267767638 1.0198545078521450107619243295815977 GT 1 -35469.4752196319001920423511277791045238 0.8983201077102024175909109956245363 0.0691833835254074906854288295640601 1.0716929958927658416818475349225623 GT 1 -282.5545353896321290609606836556951141 0.1549630415889777090606056007953845 0.0447522425618531567011829574774461 1.0457845402756307300390565552829228 GT 1 -143300782.5621757569725197095943326967619479 2.0662573223141036094355487775592412 0.0443849675527047285023116099501547 1.0454001327549912119533900456673752 GT 1 -70.2663223526101496914400447174764604 0.0183400500998429331281749382905325 0.0940647709654633995598831697892435 1.0987874666266285496863689971994445 GT 1 -46194757188.1804003341392225039641543081045651 0.1174827181597741607819166187846593 0.0956103900596798882869853612300907 1.1004950269898245309749078232332625 GT 1 -13444546403699563629160931415214.1085382243730046957440883431973743 1.3441630204429374684541064628453912 0.0988059225856868614581621620018747 1.1040346423338881524620127758023941 GT 1 -1731749794436708151246634283634440922166.7285926412622806009351406865451919 0.4725433453298801762634130729120800 0.0180427864909632391492106121912523 1.0182075423416328554967873573786303 GT 1 -2484605378420333423424817.6823393160787048659734251576850368 4.7178370802248426852337256477614544 0.0167750244732295808788158066522954 1.0169173187677834426874000103181179 LT 1 -6136260343467129234725336877664095882.3737138912500246785582884786754506 1.0019635884097442620250942535048595 0.0119626883654403492993506688857139 1.0120348171350344700506956927114569 GT 1 -303828.6716230243570082374123951764808438 0.3116749729622332420294531554032034 0.0164379006323647432223707323200503 1.0165745019489525600767819279057079 GT 1 -30451873986169184835987509172139711366.7336250937389813131063253924341737 0.8142779669403817461326134772568927 0.0953126761414484858554289892645426 1.1001658934794062440595628213947750 GT 1 -15336.0227632558896215859260540650830130 3.7400866772702349022572473983595763 0.0676780934497917024829727881385300 1.0700771306368636174361708985515220 LT 1 -85761282188148695211062.8297762104038963814209987470397184 3.6947539680807873801190315602742925 0.0836497852877936834358772340813679 1.0873566569058367623232676290821377 LT 1 -72021657852.2474396181995540270144934549817656 0.1555440037523403764293976317790781 0.0034007482100045897393096296795785 1.0034065438977121057518163519667638 GT 1 -30.9936365420420667246318810332090967 1.0168250070238706347222090642129305 0.0511241130127912820578495485885617 1.0524772718679220421809421624664230 GT 1 -470530058098929590849096359788218785496689.6013503381604961504923965745423744 0.7940357991088773432903479503802104 0.0082150112622526248264621055284437 1.0082489404139499900069372180708569 GT 1 -1734603008622741031609351.2651298436748074046239493488365314 0.3537627566022222085417034314806612 0.0218196292674955399110834563198120 1.0220611978002555210444135100687558 GT 1 -647791390723317324780.6080053470910581917129378622808277 0.1531947757294165895200459433732322 0.0731567450963198137478526619151857 1.0759708162746586476915096488923779 GT 1 -2375421388894857627604079511271089500604450.6933533748718620316559389677292490 1.4575319542898092605162845394291856 0.0760972784870502921959786752574235 1.0791484926306444753195975233569502 GT 1 -578.6329115282454476869960912755464337 0.1449670377399852894392298218523938 0.0992689561270939891319574434823203 1.1045485744014625945735851245035645 GT 1 -146427831345412016252859495699740461.0891239364117669377013581680786919 2.1496543125973382766916741363750208 0.0921913740110041482441955406347832 1.0967216869240660566787013421775701 GT 1 -1511395984.9892249722223086243696602953888442 1.0587490098083207735743883836866293 0.0378906096411048413511350923104600 1.0386271233892978986789332832654788 GT 1 -284804354517319925159661034383612.2533708051481825643389673768355010 0.6812964235864067728761628502565074 0.0303200555184882553970880932684070 1.0307892160743250800186463250961489 GT 1 -23524870656757763673.3163565516086877377038540133493814 1.1080738151225474828017900610388794 0.0329493499684110624097438351252955 1.0335044063777069071660429696038299 GT 1 -57798409.1817282342201466729501732933772935 2.1378486872974982989153469423477211 0.0138400273961056316831837144694764 1.0139366935194624161287532638439984 GT 1 -3771701315671716127236927095.4447334074188085393639911716802913 0.0184522458511754465698791700321243 0.0071851294894440192982443609252184 1.0072110668492041413384403897933986 GT 1 -30294904764169120008387912432047875123746.1578079620120696988632897107196898 0.2870055983147077544731445024213686 0.0554696120817062191209415355970877 1.0570674190077928660042542288667997 GT 1 -6108870016871552466529146736005392570802.3754209224017132202219083604955794 0.1321674006930512187185237124377974 0.0061327913447469893681768586070366 1.0061516741520495456642796096925219 GT 1 -3994867235991975934606575168799669599158.1619673965755499380901539875388448 0.4454109194658282074502231974436135 0.0848974950094403608101263109028290 1.0887191926691194140169672627241107 GT 1 -208778601827443987350156.0675431432957903933942263734474378 3.0487934404393744384934095827307515 0.0749087822609179688739420857093006 1.0778629325597496577248202775341731 LT 1 -1291293551337.4302342248451058746778063803562210 0.1795888558930521021437361538780191 0.0467610647539205134201663803153935 1.0478896877116944798425164995796811 GT 1 -220602884074649024172169.1887511328710711489931412028237894 0.0935076021151024458434151689916250 0.0539211060360195199499593819647526 1.0554293159827041710429063880080487 GT 1 -16838.9805204519235821955657682535625862 2.1168863253492015411315573161044170 0.0893166307027634273878465442428458 1.0935600060253792565314553268075593 GT 1 -221140418991260391254.6199865514932405174905218563897592 1.5769275535679925767247867235298489 0.0862743836798945946112887679938074 1.0902249535600017238802603442701117 GT 1 -17663371111973815617652.3604509906921162926102052386651498 0.4517703601101292246070580730903463 0.0052944930848276610507492018440881 1.0053085585817575887368090161196082 GT 1 -1336541198368415.3036889292039107665545523420826474 0.6052077131487284634652089684676839 0.0666983900783987354303186931974748 1.0690268614343160984150064714115846 GT 1 -320997864828291500785002090897933.9940483953943655651900015164359712 0.4172760819153531959995040171326556 0.0908495291368478211921005981285418 1.0952446640010645716806609894964148 GT 1 -2280598290207841166231541565557887012.7112329500921184928521457619663717 0.2493222719679008895962297137045125 0.0315061612373772819681000794417387 1.0320131577840024547797369588431154 GT 1 -4725547301809.1359410287448842588616379751991322 0.7216574137836838566155490165428964 0.0646623856029709769967627228570723 1.0668477299523111928083352527457857 GT 1 -217121897011883791056611089652.6218033996622031187171159014211199 0.1962198170200894389345658946353410 0.0119583772307078673051453729655867 1.0120304538126413902140733752764125 GT 1 -97173035266721348515667970677569081630370.4771674649261163816538347691345662 1.9562544649028052734435954144636753 0.0250758546813976956119021264463982 1.0253956106840698358819574756878397 GT 1 -5895175678128475427788826860811.2323744894131414390366673027642822 0.7658223063964495623167018238275452 0.0182756854603160764367795191609598 1.0184447488001325769964389371144266 GT 1 -94374503630407439859.1491793828484623014988570463048526 0.4053281550285778292803325372949916 0.0036414691686910493056504150929632 1.0036481154572867252533617695288642 GT 1 -3657896686317936527308408520172479444516466.0490487569378567804241055564720883 0.5439473076752993106309872730359438 0.0402476412123520577312522266000584 1.0410799873937547477492630826300639 GT 1 -7840182137069755.3480383454265290093693659772333066 1.4829976827970504219783218220667955 0.0360020238928167143630768430090767 1.0366660838476715958290678531703851 GT 1 -9413422277711730006655156618224.8620608208296954125911661797196860 1.8794138728799692115972988078991085 0.0326853216245184334855368720043597 1.0332314193243774184750832571507219 GT 1 -1585908508195599.9857661403774007453268079185289462 0.8611527882400952957386000189158983 0.0953547739607454360624021556790831 1.1002124275665832249672649796141189 GT 1 -318211233632529633905317024.5702467065707811386706861171784834 0.7858605724026027111387309967857053 0.0677269534611082709511825947308962 1.0701295388140356136695381322360870 GT 1 -93361638328209642233035806900.0074860226041514298576321963890297 1.3425696948641836975498942731744790 0.0163143714157320598035252787561286 1.0164489161215655376063089111906073 GT 1 -643808813542859483881182628703764607.4234582444401929121955293525434842 2.6791447280745509561874812936947795 0.0536437418183012893651572404274951 1.0551361865516747485231874093406204 GT 1 -594164010638442853677448157861348142.4927574936893854781149245463208539 0.0105944299294611409789727555922177 0.0681370916936724592508894573095596 1.0705695692078660394023352123962176 GT 1 -6088483784720784538623332.8449803859036074837434436850950154 1.1511606053627471408540878438432681 0.0632568477203262053305526101349019 1.0653461514181401753429680784703762 GT 1 -2876304014558216139744783719057920.1480594466530394629513507662575133 1.1335351865671951591306463365764877 0.0206051557203316509198463731270959 1.0208204038898461014212749986005233 GT 1 -22456718804629294.9673573714983068766339926847631758 1.3407587861111185659327058028636139 0.0217251540768282176764286419065581 1.0219646198771459399089052032758256 GT 1 -2673911841743913122718561138.2510873450158099833600240207884564 0.6170669278698394943741805244681273 0.0038643721048387375304196017183833 1.0038718580826804685240937616561380 GT 1 -475712304329363921892027441050700.3001267661071512582962016501771099 0.4549604956568733251793125869458039 0.0620712173329704806032295175958118 1.0640812575203508656042399203112700 GT 1 -40028354963870385344512413550488.2946171233657714849062004223567272 1.2838266853563525603838077250126373 0.0316436744355033725311325298384609 1.0321551545175545531379288804296961 GT 1 -199331396405993899458385.4553650121570020952950356477629392 1.6016651779363188077619342122632314 0.0942016239337726663108680582032805 1.0989385406787786642118021885687489 GT 1 -5447.7166939264874579749409435383872030 1.5251966932453713048983833628537681 0.0220083709623612993386369628605206 1.0222541682501685427775508357365363 GT 1 -539244148356064125862463119633038653133971.9517838612929827776115072117507571 0.2264741562057964802902950049343243 0.0436842703030336282011534164267457 1.0446671592656624830430260030890826 GT 1 -47152153975240.8162368325347345401709130630504685 1.2367104232375345435935181278906072 0.0655366641286789611706394482162582 1.0677828868087636325662703088541585 GT 1 -173.8515013580986959306208890057775504 0.2555752333865750095155455424081710 0.0277754984620276648436430124743281 1.0281685325303872558521633569289420 GT 1 -1271302289388205100256963385853.0944018282494887143113513208859468 0.0559363048266932058873787784267198 0.0833460173455149664877521352267489 1.0870252141895615208406005987513352 GT 1 -138982462609059867372675126799.4374794544265176224852129325547274 0.2334028974258879027525371870613424 0.0184729243684054507834941398719761 1.0186456796740292349288159592776890 GT 1 -1544474475.8649676899028646257077845222135691 0.6785735502164363449581314890183132 0.0314624110831893421936297027195094 1.0319679854098528086548127821057954 GT 1 -522126721153267951894.5141545236569231439389321242789942 0.8445928781317499320311056603708987 0.0639486217287626301885252222479743 1.0660849126955935911374031958282132 GT 1 -294813037845982064717088669654018.2246529185612582212198641509963768 2.9537192584402254012818431862984041 0.0680765841712782464442517830806771 1.0705046395304326019501172758928329 LT 1 -224953526346897485668111758129110214043.4066490781451782155397616318715232 1.4789342777949120035982659525441103 0.0418257063436785195556257125498321 1.0427255826363362179756556586850492 GT 1 -345.5262440286888384362565222284941460 0.6403831184110811044220044026016699 0.0349668981870825317790384143852687 1.0355928758346592186785372329651727 GT 1 -10464172483.5847806059516232719808280208375666 0.4013959206624340666592629145577721 0.0348287239052298033861281833457641 1.0354497052112058308680222222005605 GT 1 -186059115398740558414067931424941237.0974839002902661112369803931615985 1.2354147821768002629961981016627025 0.0223348230652113365272697786400703 1.0225880224365321578958796216673828 GT 1 -269281191746925430383964308677145982786.8862627314720237412478370817715468 0.8376200888307153675587458137002043 0.0574175978410975766428117017494532 1.0591319341353782014889282406925173 GT 1 -1621213974568930554831693673388.1038458982988857416610798596996402 1.7721892499962539663159686363403380 0.0199764675056279701715900649482640 1.0201786948564616849272278489646697 GT 1 -508750061302452612309061579841621715.1349833472669941169467964196585601 0.4769746513601347178204448406110242 0.0104461704639020844015035909240057 1.0105011146752744804847472022637095 GT 1 -32739685877440124677471198298334495718961.0744302919626904529786498158109254 0.1650475276309805756888422614105301 0.0188665159957827885922406861878694 1.0190467593520420531954949850401581 GT 1 -59709381206387420464206820228058059349.3561673770022517463368189302105256 0.1663479291959270972485638323619343 0.0425410321633156207612204621423703 1.0434724122798428332214530735218874 GT 1 -710301496575327957965043008907.2773992004212162014641814061573773 1.6668677067146122964187199141770198 0.0089672428921159889534501180208717 1.0090076905991627820210897862502591 GT 1 -193802317377212466.2559342058635609774928352429894448 0.2853626267766794244502013594078319 0.0607379516705259949262447829618910 1.0626607670037584807729726505674236 GT 1 -1053715496537651059585234383940.7716001144108530758818381779794336 0.6264714960713525010105813600090613 0.0510745760787300858448632630722723 1.0524250673154352139718672523621338 GT 1 -3223925157779768399872991574076.2448814932482495580754169424354368 0.4881769822855092572576959159869873 0.0444870701155489248021405751390984 1.0455069833321935511922516703187989 GT 1 -642727398521.6804763281986604279008379051384463 0.7659603791251839373324706782519667 0.0307416055053248176249519711527984 1.0312240416538751125214438960007978 GT 1 -12734964.9236964860097175473157448351794626 0.7214538839671310868225354786914763 0.0509978582887337684242726218350954 1.0523442235662560582287380853478365 GT 1 -1065793351612909661648992207000834.6055320651434690396233874016396836 0.7437800278737604437633770904758197 0.0533881499320063048959469400947132 1.0548661430292991545578136102791223 GT 1 -188083913917831347600400775.2628649408999273585644148041533787 4.7225403991317201349450167029749380 0.0947730698568840682188219187769556 1.0995696151757690964902002063313962 LT 1 -33.6447779161122162829305076711713672 0.3702352494905792006186681124359489 0.0615197114641122408863636045794285 1.0634934263344937775349927502265362 GT 1 -41605356727746801744760472366.8790685738164422147431381647424460 1.6313841036590877273415661168377535 0.0676443036492950621227000519419597 1.0700408886608268253735106422233099 GT 1 -1129999680690971654857.1401768190543650664441511927711763 0.9598439537903856532227638440326567 0.0219749734198696271483332385603868 1.0222200197244911172899347917297799 GT 1 -3904399878017969829387340098.9214625666268386077476246279341472 0.2789626063641734580734749618603898 0.0802720414937807510518200671675599 1.0836773499419593670548429836891397 GT 1 -17359442007574771376401542509050281668.5868629940116738690110802518777757 0.6220806734729536886754213574074887 0.0906405264398487811279646487084754 1.0950148025163251364287495564682352 GT 1 -852.3903090432681305079424218690831280 1.3594376607890637137914568341735849 0.0159590480667992613457230891200649 1.0160877649775875675036187449970990 GT 1 -412322684297920831852856610536656719253585.7960887667819719233642088035588466 1.0728741515593777666853691331215137 0.0637887501129403382234585403616871 1.0659141336458957234920027140847615 GT 1 -220315.4302738988678540190099644604217227 1.8712031120589619298956917404362714 0.0408495104591359482939338543733682 1.0417072930096123423774238155162320 GT 1 -4873946366436202850924555833143904328.3649095484766199741177189352654293 2.1705413192600905535043892501775593 0.0742874257291052031988554241849644 1.0771914874742797837476593889394033 GT 1 -36925240271440014.0791944254647960483843056965620229 1.1643745566328521750725990344279907 0.0030891236537878393733150440434234 1.0030939048452620818059820644754484 GT 1 -945650772180856277841131169043717.5258024394944749019121544722125246 5.1433963693326340761316619623940835 0.0166565792148173723971580559897555 1.0167968599433890705605303828797295 LT 1 -11164072948767662562921.9862530650355014174816324205191246 0.0708446958398055762182437931787874 0.0925550009009908607623243704527302 1.0971223217332463366307067805260148 GT 1 -2692418161.5564225661750511422704764426287373 2.2485255436123957399330169268941718 0.0180485177333193392497378055122155 1.0182133789086468353467819822647884 GT 1 -1073261079501115046399491853495.8999648114073879479374487382205259 0.9049095149542193021535794110773541 0.0210836425578692318506600980845616 1.0213090768307339646069406745302842 GT 1 -2436178446292213000473290178.9208088976993419770452715883412093 1.4349066429762617547435320198377558 0.0457123414949401691335083074765636 1.0467901241532327339804790072835509 GT 1 -18947462730257457100990640080318895512781.0810247980850124968672977933391365 0.7845626891953720795625384138164255 0.0958788630047215935333080372679593 1.1007919264663344236257508892698431 GT 1 -591138579756384724122708859.5373959554343487984988804501753346 0.0149719375423036572850492987363786 0.0480545120370104106678133225393678 1.0492475063732973817840072815716105 GT 1 -255746.3343246710160661176923319493079670 1.6859734293416744006973747995350276 0.0414507429483924486283734845823271 1.0423343280916410610284666848196501 GT 1 -611406457967461974448032716785080965157.6543667719982868761308882445184322 0.6055067528466643149331084890412983 0.0570332066579743932195374124427359 1.0587242108159703424010590090937411 GT 1 -64743.7598208616983215803779076447019293 0.4459200699101243741004454025984479 0.0169267903715289594612577013506414 1.0170716858925120537466980555394812 GT 1 -7784966234311324998329.1821799191666445709582250731514759 1.2295133139159948579324322009158231 0.0916367540611259786563765605975128 1.0961109297862738075814504615846233 GT 1 -2700433807372173405415744039171882.3017406889294358262249825457642939 0.1555116412054247296794547317038371 0.0828397975927858506256526683735809 1.0864731192502692525038956241325288 GT 1 -557778756358249909676072007145816.6567790600628397597305321710184607 0.5329711267992443770061498840747439 0.0129262524160302794348264761347131 1.0130105234099151741602422386269303 GT 1 -39.5328336591738388040123444112545232 0.0266088289217453328547874436862148 0.0681017506427526676971980598553350 1.0705316447659076812030257575924932 GT 1 -1540813040438078312700442186655554802.2648339550725838839330134677542262 0.4399872305592447460225016655662311 0.0466645777939341240468723736060516 1.0477884727135050554843439496650145 GT 1 -81044493247275444308477.2181504242015320677432510005021964 0.3096217031829938602750163089842104 0.0139410020719226773967224926277535 1.0140390905427280806335828735533715 GT 1 -23742041630519732710958283170.3388894732308418169968877159443058 0.0432187407221404308096302231516213 0.0638279095161969245983482110476665 1.0659559620497465498594973224353325 GT 1 -24512080745955453077510371.2448014949978925402980019607222361 0.6264972548299648658864750788683626 0.0595639604700820054405977133932442 1.0614116394330313501062052250106230 GT 1 -7804363049517090222449683077592.7338202561887066620580729804388554 2.4604038946908545557818411356884548 0.0805009348464002618890215431393976 1.0874480594844000999818653632388920 GT 2 -2125.3341793150332691501270410579179278 0.0835478623983778370778061640130086 0.0179491237396222728589214911295947 1.0181121631505797590968734403025152 GT 1 -11414059204932147712451835.3269147499352907625665572675929910 0.1174671092956585234910624812401729 0.0317320958856619704973842578298560 1.0322464695479718922335843083854135 GT 1 -139412431657945.5732621055118460164731446486803932 2.1173744826708738812294947578662621 0.0877261796314157873381924611782616 1.0918150923390852571013573912272552 GT 1 -2104375951066136330895.6869140525609218479718370807322365 1.1745181999420343908024026443603766 0.0572944134157385478355222100449261 1.0590012544447740579263568975002674 GT 1 -252740486125622281110401878841279.4483671266021008297519084308558073 0.8081623315948956695589346633988062 0.0338267535241421780761280436382119 1.0344121166719569117911411452441923 GT 1 -2004259042735300168.6514877480937063727964235915002273 2.3387652324428411586494069115926663 0.0710505695812680687103996151026987 1.0737009760753825712602222063496369 GT 1 -74076072690758336983363.4711849602301132852725350589044228 4.0925676864149500979481693993197184 0.0718503266018118100134301792064963 1.0745622732116963908062605871480571 LT 1 -3415560195100834331433.7749674107060317418756836930305240 1.9963171391051333648881982898240108 0.0009288465924139472946856781190394 1.0009292782377189466470776193918608 GT 1 -16232553546352946970519855179.9771174595587477904574291438365745 0.0486836809878133360196950862126360 0.0693764978553730949363191805928435 1.0719004850606706128073852301312175 GT 1 -17909403377265099882868641370670717059.8156962866253947038317639348502163 0.1789907547726126926955060329146339 0.0646809907262511297422893283436831 1.0668676214952542878273465760890333 GT 1 -4301045177835324765402855.0168643598698069094660032923895252 1.7180380380956610477269877161802529 0.0625379331094417026263861620312791 1.0645789839395837867336221524961039 GT 1 -8759343460012759656664658784260582.1581151285819828150073895696340507 0.8652177600428182708952946680402605 0.0309533895566792821115478732302406 1.0314425666555210937274426874040480 GT 1 -1405240674324882414.8375840872266017948645220733945432 0.0692042261949575925443333959033466 0.0292226071746976428339237526278700 1.0296580925606035649514936857361217 GT 1 -9902604534390516222381952.9205854751432290283132879164927723 0.3936040192701264607891323966822344 0.0636726345792941153920230697593266 1.0657901142715065148756807522446712 GT 1 -511393862609700338550550657307807672.5681661435711907317336039257770610 0.5780108916814139687931354483796760 0.0902151020706513679676959095169753 1.0945470833142426651761776390358539 GT 1 -7857305174339918.0697586338363332189568367749119126 0.0464556723151217444686360420194515 0.0674939104361645530268456855409481 1.0698795971221267659045120857359446 GT 1 -34454864364.2130574021733078338400012293698003 0.1377614206352150873649325890294138 0.0620651187992204256860171054599106 1.0640747554126896916066688243884568 GT 1 -1659521259044568767.3033299244634975027564341055205541 0.2864269224519481122443560677027093 0.0312266529940860160701072991701969 1.0317245984698468764641516902085765 GT 1 -2819756911676292867131900891.3002563658741685993054116427911418 1.8570006086515663877241828370027661 0.0255350209061674596491888406769164 1.0258666979877909947541104286374687 GT 1 -1257087258000081.6440791732212276179206003493816522 0.4461994071944397680835564062468407 0.0994019556547959799800695152170848 1.1046962426191287361155838594224936 GT 1 -2112566783785176834541071.9469615901547753558052834616135957 0.1391598325181820567773038094703434 0.0479732793033113144378954184432851 1.0491621766259629183567388127823318 GT 1 -12.2153734605985429697559075945913045 0.9888045531686729570946478540235661 0.0959544885796164806074402938519673 1.1008755753656272493465936132825939 GT 1 -11662243784.5411194047734672767969322556672245 0.8099895084780760371248470145653292 0.0382401512157089509238019115772351 1.0389904969194094494412968218970580 GT 1 -173922541306604573436263445271796533718.2880700752092459810612958479613802 0.3458987741651113963600298952365632 0.0396706013084575930236666617634894 1.0404789297366846420303122262912702 GT 1 -427917595671318810589810685572.9983062670330020878287158305125495 0.0514775803240372299647265258684300 0.0607987456279980659273290802661640 1.0627254943342374597059293347441425 GT 1 -6365510565706711601615079300453124120896.4227106159712776822281434049603855 1.8989924298399025307302030640795173 0.0735018335467334523779545733294763 1.0763432122621707756245864811636974 GT 1 -5552024338439140668358901128088450.5671480583065650293906579929459940 0.3078246128265652805271388295775806 0.0227675355663539285734349458274583 1.0230307182575845516159081912607904 GT 1 -3648161077120083797191554673208831672.7150040328392542824057875741217124 0.5559066601327128462063588857553450 0.0433918789805897761983761055910700 1.0443614583099120219599617619173287 GT 1 -133993917088590.9317102908879587142182776399543050 0.7252784179887229055437590631364864 0.0207553919483567967122410881941360 1.0209738126534048721562897630896358 GT 1 -8315183281118301159221052.6070787122884170125189333158772049 0.0885611434164098247209772421628323 0.0864058153332622192954310070735479 1.0903688053953764534215596333376347 GT 1 -279562945626759.4440286121142324397393966666020655 0.9881818000113624828250783960179552 0.0433632063581085204478752737817433 1.0443314855424281704139960535023824 GT 1 -35734107608465.7938007529026198030528160225888000 0.4864645706951717541914942455151899 0.0417359608427875101841981184605335 1.0426319239994576109739183770671653 GT 1 -1553634139536239155856294053498731751657942.6356328505585571657034930483611500 0.2122009596948935991402846019924958 0.0170289559855514771779028647233496 1.0171756160191357802972816406044675 GT 1 -247646904938461590306497708748369823.5144123894485234170154622931782229 1.7853273881347756279327921267484903 0.0519587202858754098132734570101312 1.0533572336728866642763410528735489 GT 1 -30474530932888284714467231.2994728241310915833176272739452657 0.0795384063407172373481698489392241 0.0597512514138383456183424404733633 1.0616108125699216686850163780290171 GT 1 -18730858881201217443320184585953007830.7837220735745271811103121600952856 0.1419020698125638644669992495571818 0.0427405424273908302620392136277508 1.0436808087334933040172773798829871 GT 1 -303413889939000744294068012003842931418.3882775443949984376441721466914323 0.6410406860719097592347511242126688 0.0289546162871824157277197871321917 1.0293820726349392333791696671778650 GT 1 -891438376697113.4546024592572564447599498428739454 1.9273578050416332379362813720362582 0.0831851642322234914364078527803178 1.0868497510324159535807021036811073 GT 1 -118096183551746559449350947270423.2371960035293919481652571743648326 1.6629320710633746614922170894872936 0.0222178052155420637983342651826831 1.0224683384690663678383868258680863 GT 1 -10369777349084495545602719920123371903075.1060650135896750107025458574436708 0.7793121730797726627996541985397896 0.0403840490712562852384101579285341 1.0412221256779426747905716945257677 GT 1 -17439.9199679562402903201620461494680052 1.9091834322226413852063411270046381 0.0361882348486373788980087273642977 1.0368592678039661789285414648554081 GT 1 -13748544408457633142716470128.9735243021385994792644108547084257 1.9846329214307339070460736120345438 0.0932112373341851295053370354816028 1.0978457527217383011138442776245711 GT 1 -48700.3866031500659917331361080962709612 1.3329990601885619415366894453543328 0.0355255742466883534075565822711151 1.0361719625365626538735049557242408 GT 1 -286.8644681103282121864446592963949232 0.4774088969013876056208367784878910 0.0456204442492358533789840014422359 1.0466938294769382528832770340728550 GT 1 -28718068620768944921.8693513860323462899963843957654997 0.0778612282684515353556056761846809 0.0335315970277368901521103825047378 1.0341066730851602493469520965819593 GT 1 -638183206396973168385.0377326375094649009217797514637931 0.9972548024218961329040770819949092 0.0919160132696656789935889797535281 1.0964184082593252988622740639429878 GT 1 -17125449546162027.2136876914913697033845014014520284 0.5862593843590436827435692344523849 0.0163362591445402390577282519452935 1.0164711671046894101308389453908687 GT 1 -5299693944498175622270.8049201129189938202545568311775686 0.9950569164086713323469416359614488 0.0988888453680011876462702135398697 1.1041266609119829279586575868131897 GT 1 -102651884487929851852666078149804276775623.0453191563243908655907801448025798 0.5359843726209411402662259095385182 0.0980951955629598185642693500462831 1.1032463028072108349208065364194601 GT 1 -325848322931703473552857226335469116351.2319768977310131874705406758660163 0.5167568084508291207107640959959745 0.0943036005292987919352567793855817 1.0990511290196460808429999044767755 GT 1 -166921103107499091.5183618541313594636214721253398666 0.0874479258957174002911625175439393 0.0421653080997261784446570795841380 1.0430800713283662974566789702149999 GT 1 -372748808363879222085315453397623.0153861531279073629097780462174136 0.1519588281370982194189038431143059 0.0684340579157837983380259409248373 1.0708883001586755130859808930451043 GT 1 -4084884232326887317673.2084157617296901690442805535255346 0.1243124762550943392886806726516973 0.0477270148044054703472836223012339 1.0489035361404167907930371660708257 GT 1 -335159211751476320956285799242762902.6101672745433432559374258694802707 0.1565206361254144515160684662289521 0.0737140594508614998042372346619404 1.0765723009123314983479639692251695 GT 1 -6399445564613186917.8679902500839371702212154676525215 1.9516489468326485655217607457806474 0.0110726209072680690820422231254850 1.0111343786775494808307206454304305 GT 1 -7.2121849731035086348951457343685077 0.6925786369942566618095389281730821 0.0066990624703232952956133209848381 1.0067216019077770794444951569997680 GT 1 -289664199932.8661174772992631952329566694082379 0.2421513720807839453695691277741579 0.0659823511399587357975201885556820 1.0682599449360599852138612293536553 GT 1 -5066908965475365832912384655095.6815210444174925624486418163332074 1.5512609618916721768219193718944870 0.0208519229229845076252227987660197 1.0210723944908871197524253076839682 GT 1 -187732340136276474711834528331819751753823.1510689499788409324548989725883112 1.0797705915097114173538393708397886 0.0721765830196005894802901342724537 1.0749138477284182855846754631676577 GT 1 -43921.4735861878345778850534815734223921 0.5669871799702444399109782872456988 0.0618594947297181593517711557723498 1.0638555487946524184488360038308188 GT 1 -6993712177683757912929358109805.9920674556197223780544652836732767 1.2816888254040411160632737892424251 0.0529593809001696088938133526123504 1.0544132943190471660821872837119495 GT 1 -1580063789122554.1320780687714792422697136473982562 1.3151665069798751810802316493575232 0.0895247075179107860377784565290126 1.0937885163912465447305158720064049 GT 1 -386304295997929597303136136417753132.8884589209530035286891207906485947 0.0375466264822841610290793765368905 0.0094860720957888774142659634929077 1.0095313514540427803946144320817516 GT 1 -40726440841336304440266315.5298905934159747128371481679571165 1.2991589439966906852235380147387157 0.0858343470646996918908439213264541 1.0897434844145479544581109926963726 GT 1 -389143388329603502969139172441257915.0033444026481053534077285652581888 0.2228561286336067134034020294805489 0.0385504051407511791285975075277054 1.0393131387707783195641652923388700 GT 1 -2946.1878328028050614852326868578403347 0.4271211994576263913909905269185986 0.0127461101141680183910232979950356 1.0128280387007480298198205893545768 GT 1 -1587.7648763945872634894659383743526054 0.4187636581103281183086402034240578 0.0373981618155723927967220530524516 1.0381154125113490148037379726317831 GT 1 -402930716787165904421463982725328035.9422788659734352767386963122885911 3.8339826810156836962989460159897409 0.0277715844596683278943205171687687 1.0281645067169309718737505861097778 LT 1 -4443889711174377.7322815444365138488391321063678664 0.8939805022678991992130260257161649 0.0135974056661787477613349198852377 1.0136906970322361113512913426322226 GT 1 -3482620018464166688.0604324412000828447621911213467489 0.5687053742713999406853975877772108 0.0479683772903483800427519438217047 1.0491570276104614547031059684780692 GT 1 -172034151564681017.0469310146900232623125352135742887 0.0429324958197014184573335079516180 0.0640984304656235579031714002832799 1.0662449687881960854998183209911157 GT 1 -101586495929041149477391413845928.5781458266216765801720672630645202 1.2213918553732983055388451899739486 0.0672393035955201025567560046916234 1.0696065993460005479348477878746084 GT 1 -228481008380122931880029911.5033885443176982695717923568806239 0.3123929257686670557863645239105424 0.0488093531233760400668503502864513 1.0500407666263396231753349081035818 GT 1 -25350029508123331024822130910433.4647674248432258778177145561372762 0.6401598656996369643210096487328539 0.0152745622829635538526636895949190 1.0153924201007008386932686597727629 GT 1 -34588755607149908908603644315121665.3444341428972974252821103367894072 0.4117889772347174404378939485102859 0.0181744559808971439200851944668289 1.0183416401583352992074848255704285 GT 1 -643244117366804778302958875.0534965109872246032927224590342113 0.8456933385027514839098250685629615 0.0704154849647921037125617462082936 1.0730175506875939800922658601522159 GT 1 -1800.9895092199246927974310051569774690 4.5340879488528891554700548139699551 0.0743815719226166679685424660283247 1.0772931939691996040023278502719138 LT 1 -918634.1823581500254836535594399397111352 1.4018302327206446004011020335186194 0.0957549101091676247146067569644510 1.1006548381996932906377274764455370 GT 1 -1108.2287617429268728928334807989652172 0.0812388667380748444612297171467763 0.0937803297470157459905126543341540 1.0984735406803471936506945852142485 GT 1 -79801502250493840543438745459263.1960647775257680011665100065370724 1.9640313926596063805566990439130299 0.0327164795029094105443379642368554 1.0332636305384805112916376267611011 GT 1 -8401790867001405557599495924.9834061743746957571042785279379856 0.2934492828746537666875856327794713 0.0552560197043108648550801707455350 1.0568413085159564871726503811325086 GT 1 -90923211632669187972748576379017.6655997076952810453954219648723474 0.0091853021749356448089411081140805 0.0221781438767852311066439963859286 1.0224277767421218342018517758520167 GT 1 -6581094626231574514402.5464482002267515055613638765663208 0.6786425569255865869817697006770044 0.0303481872727591706025421932600313 1.0308182278761153811645616171852516 GT 1 -9288923.8843556473479763335379610781716325 2.5497123450769575221294487446095139 0.0590625479828744973931885610324147 1.0608786113008374248626626055776596 GT 1 -188503340861383378279201.2269400070972239899832201187086050 1.1108063325545674334317169731842616 0.0550979636532715909844710082724538 1.0566740221035640652950375506852266 GT 1 -10.3969954898963400700878957470734677 0.7376403592045914890393795332521637 0.0214808700186865143536085362887310 1.0217149420240670798374928530458829 GT 1 -1217143844193606222771.1079250894208558863368029240773301 1.1666230409486545385346403042532811 0.0839586411826583993203493563464490 1.0876937637799910574737091230187470 GT 1 -150411771642516710597495094.4201400185740806211585404991249786 1.8294947351152155935866260710224115 0.0298714616906355040477427501845358 1.0303267025428817811996970211695992 GT 1 -4898851091363005139.9566281411188230881811304943891953 0.4438000465633066988595819219268568 0.0284615967715188932980571644484186 1.0288744811173292643582787408925381 GT 1 -27136453044505763562477823647365.5206345166272467882747010554483451 1.1965947488771703541509826706130170 0.0280014842145625131522043689112091 1.0284010014925783153885091300518980 GT 1 -27929331.0769528391316734680948856206227422 0.1187450268552730181856697636050006 0.0790932703273606094372864175959585 1.0823965185688017574068594357331777 GT 1 -147606568413340718626930827856609878709137.6219419825681160852679331052054036 2.0842189202472871690311748418943906 0.0092644889821074009903562184809286 1.0093076712750079815366473550997292 GT 1 -664680.0303806204650220491748811636817575 0.4752841400317249681341739312932342 0.0156331942271808526497337093812451 1.0157566812970652599262799040832492 GT 1 -1844066746881027872818094039213454167412343.2865287027264953106898934752414159 0.3862883234119526581767700779190271 0.0118944062188694502448318001344291 1.0119657106484428940896545690064488 GT 1 -12308890551.7093010279479000749770845895070411 0.9619437361585651428113088975968494 0.0301135048678197137962788034102328 1.0305762296591853155473464946200843 GT 1 -4752011206798265.6436649382561324739773419503177820 0.8258878694332011501781028234920823 0.0629298541193051934941855225747273 1.0649971373465020666780144080966659 GT 1 -23463803955576676431302185196828.8010485658744401894364959446815598 0.7658667707726231684556274541326271 0.0436313596300207192641967611852295 1.0446118331764713494928059276858246 GT 1 -8740567534.7549416522955437602591293087344727 0.2814061364183015838629557119492347 0.0163697848386542962314122746845836 1.0165052501597557534777970144854272 GT 1 -2581698993086148.3167151116027958930532744873452901 0.5600190702888624005740660535802498 0.0539598172643803735802009160178766 1.0554702343676440643364303936131980 GT 1 -36284040142923938345714979077157173.7479844544395428961387404079813464 0.7802721034601168605353862125464530 0.0827715258359561185249031941973916 1.0863986838182005543427608811879271 GT 1 -447857310816875249347531556502944.8792377297914518347563947163018430 0.7050990548328519369406157209635919 0.0794185871823204929963041335209475 1.0827498380942852938425881700254841 GT 1 -673655103224182631070816058896533022880181.2541250379550369469927902869607553 1.0077385229328471339779760370752697 0.0419721292222323500274057951760075 1.0428784087645564196837369886538045 GT 1 -21208028130734623.7742266525218457641756617494931088 1.7777141104840603636489757951337182 0.0068962625567618835106598928406324 1.0069201516691333472656557599676868 GT 1 -9909.8756480310104004840028773231932878 0.0422115983856478778745126900366634 0.0178005105557219634546048242846318 1.0179608451854378116517637393842541 GT 1 -27383853968236306211074358927383816564.5583178279917607640770915945134796 0.4927539281384053053359744198458961 0.0615112374695838166556034973817202 1.0634843968893639628066761914981906 GT 1 -20490491203037802817.1728876899834025505179333170907475 1.4899701500549362860429469849451103 0.0428956018619081061482106616186999 1.0438428045154276718941822477171911 GT 1 -4619299878.6440980459065234712556262960214313 0.6883911296622776850233681310280250 0.0829406965573442927482938315484108 1.0865831376688264854527895121995597 GT 1 -5292562143394160666238534574549746604505950.0572576660735851566345385846608619 0.3106275988743810086347732430804655 0.0021060398866774114411078337265074 1.0021082607073186348046018181264700 GT 1 -1731835358.8769053200249273119470577219097980 0.1200867621637947880038826608176614 0.0381640877167113618996171112785147 1.0389114122171276990942629616062133 GT 1 -13664.7025605296943326894612590190658248 4.5113459709844680208308544890160448 0.0037533561242443742463091051846292 1.0037604176404699689952639370112107 GT 1 -24.3608145669971608906538264902586070 0.0274520658581462565976475506509814 0.0411299532788545415611062832704608 1.0419997224350695352253794474491283 GT 1 -431353514050852.1345689192458330689938562435072391 1.4917526557135978538737533012601308 0.0848131077628622120838625194823815 1.0886269807525058292431743712182779 GT 1 -20644406891.0424650275361606968522625888340367 5.4684045815999065443587632545058654 0.0242191272466687991427798360969278 1.0245172333980366597059824603363796 LT 1 -6891665910.9357731383149846963531678548346730 0.5832415763873871129242860323321280 0.0182148948625148119120471859598686 1.0183828284475114190283112803549796 GT 1 -4162800159360833512850766047875236.8571544991193332747387648637240601 1.0704314569118247288944807269229176 0.0905230855082847871644921464300714 1.0948856639830313367453920581214135 GT 1 -94039.7373795110897499364250979693969162 2.2153521400805568249587128593780637 0.0465776138753265966741730163692496 1.0476972561800912416462769727820444 GT 1 -80396985164342084493163661355614.4171355936580154093615468314405227 1.1216169090635229039362758974232549 0.0663832843679787599429284935000964 1.0686892936799058711102002467150900 GT 1 -47687286237542996498523739572921.1275492718449720126354337932836291 0.2294704187137987005656796031493332 0.0755783705289855221265098051753097 1.0785870024664083245521902295843069 GT 1 -122821128.2286051809257770647855183732906772 0.0056034116499561508174040385940002 0.0136517215618043295054431543935363 1.0137457631801101048716078800947772 GT 1 -749278373561705589608285774026550.1192496071351324440377014588741831 0.4586677368710738838398523551151173 0.0132331993958866331092013459747960 1.0133215383828443469629873457940633 GT 1 -2449910.7919813474229207898411361987724491 2.3753821220974154716368171771640189 0.0022202519423503815288369593044729 1.0022227203560377995675406200539043 GT 1 -9497091107348527563953.3003821845272459377375554069926491 0.0405996141992128419144057561517709 0.0894420372311813206802131815296429 1.0936977214685861484817119119716578 GT 1 -126748027520089473857.9454041144242639854531230771521579 1.6377785152835534015138391182014278 0.0356365898666074074299384993131160 1.0362870739450762729249966975411597 GT 1 -1002370922571408445778921966469273938.4941076897647866151527327693293737 0.1499379035096768211689470910608789 0.0843098780531734403736210188036157 1.0880772663604820966367399949441078 GT 1 -151489425750144850283664.3723862904562497883288064061399661 0.6858873049692498128481793542413203 0.0082821047525269616450017102242068 1.0083165919317185175399607652658818 GT 1 -4329089773317110760748905.5741793722132161144404315360358571 1.1276314131481741573922686180116929 0.0635183222081556007607042069781514 1.0656253218469430062148971527583963 GT 1 -5511210762235410416165463.3694923930653637992751436828379641 0.4933892789587796917275438487168659 0.0252694487822702373193827951637189 1.0255942039035283786073668104591240 GT 1 -2849.1257734086473508506299759382199188 5.9152886036971263821890613680572848 0.0706580182942627092572882293823796 1.0732784898170022401412911259063985 LT 1 -7809.0329561687232275004784862449125182 1.5914759079849730793172479967479370 0.0652146629083824839351635412968536 1.0674383620506198903400136509728201 GT 1 -38639.2027721460043927993417846866664807 0.2477824394059615026850517587339487 0.0919601775742084801828714430815089 1.0964670440454196710266885679020401 GT 1 -3610542109544053942086094322331.7420253716591355097361918311777727 0.4420284776340802921042312625955654 0.0933810067607678521593295636673008 1.0980329907287732665531304362983560 GT 1 -5380291124103476265905427714611986816.1366808797490016703402905062403961 0.0198978397426237488904739384849755 0.0077490901501369633443663579407115 1.0077792703631085378375853653375589 GT 1 -37993790904373366897209.2260608973028892389129989827915513 2.3575952155990839534766737192249866 0.0255663747122070134934847934211947 1.0258988739111271472295393570203624 GT 1 -703.7912199954228996601992401232647336 1.6418383431512676572850087474709434 0.0157208501891579460333230668468991 1.0158457333297950690698920179482388 GT 1 -19066722060535794753415056.2303234998000606776795597528115909 1.0188048179887001492966435586510476 0.0566481515191556098485390706819616 1.0583159498407249295726392970870348 GT 1 -1.3309502036382332087696137049773987 0.2695623724729837750097765228649816 0.0571776900628319460741233454153274 1.0588774447114139256237796415916154 GT 1 -10655095446420530235104.2251193583401976928493284199081156 0.4083218997515300976289549877073058 0.0453739426886492940471775498846399 1.0464355782069892131716765343004499 GT 1 -54714593468375353516163156266359.1326689612488046461466217958273712 0.1281947351885571383496020183913846 0.0100919323700971857460542200719111 1.0101432011452453190408234021116077 GT 1 -95300.4062138839182133194544708008236950 0.0153053731109113260488035782929591 0.0188709081136343707471519762915025 1.0190512359372917067538894568635726 GT 1 -3481136237010594078386041667071695.7483296388415496540027482627768344 0.7749242854478659195550249908975600 0.0910081623696266550764292633585159 1.0954191643495139851760007986648153 GT 1 -648882309598161.0100923805915275526329906124139801 0.9868688838958473160865887606842023 0.0201840020136772868824103608332702 1.0203904821029146032418032652790064 GT 1 -23910778624136263481419388416673417358.5287407697703808326884597617917287 1.6794201129989030945895742178701596 0.0000349461418046386450650098451468 1.0000349467524352783247345966574946 GT 1 -12268019747181130201817010.8093490243500996724212482505274944 0.3050747434206925364172874874700182 0.0326098611972381506322009683948965 1.0331534121507263940718217201952774 GT 1 -334946458714.5596247982621219088285333650710064 1.9545988560262362378777027864118110 0.0172679781072364816585681278502825 1.0174188085205960384674864894323861 GT 1 -10855026136087590712798.5308700860218614067382625220094543 1.3111443064909383310266116750170238 0.0384206702720808075433580070797702 1.0391782111394687214020556922435350 GT 1 -135586577016970.9196673716958799995593709352958539 2.4964355680767731366256782073513240 0.0344335383423625376928290254679696 1.0350403429652013706662973667720102 GT 1 -1026608127.6575161088466018456774151638414685 0.5917976377101440540705675755868405 0.0859791992239989260440542826882052 1.0899019498263316337187162717323049 GT 1 -9310.7421068669351376923099341860061848 0.3734914350373859724315426838068029 0.0280329119164970533088886212595658 1.0284333350913567400795992072164819 GT 1 -18786952778550886793669303460.5270023568880755115212220710859302 0.6104142373327209881840464543861441 0.0685078677868004783071817495775198 1.0709675353388060421292694547562510 GT 1 -3439162375719822134547805251454110887.6683159492368690922076620852433029 0.3308553959912047323538079531383670 0.0592240390147160518059754340360917 1.0610502538380294831648580544280209 GT 1 -6902200352.1730821291310098467959319449934906 0.7554008589660840306631593027351890 0.0506074721953070778575022377633295 1.0519329433354396784716690321144940 GT 1 -3207.6480605928238961569269132333021229 1.6767845855436058394486516433464940 0.0619641655638581395841282829954228 1.0639671276820239043894966128685947 GT 1 -2575405865899873243667630939.8900055618317920976571653255656366 1.3871261374154512214512786788099507 0.0641090322757269101454485434805143 1.0662562967638049556893142300012009 GT 1 -3890834102292173003422.2217968075123638212372191771529500 3.7389381224245350465522597630148508 0.0153876529664740793058466068276857 1.0155072715847992492062533844510180 GT 1 -389172490954855450690763132894.9940764945343059840530373915403825 0.0258946425545587207128970287858620 0.0534228625701227054793936988161712 1.0549028141047697218156184950294088 GT 1 -2527.1342279911332885867141387444377451 5.3293354648552841597138641868609137 0.0593098413594598431085199943570699 1.0611414617996379939978913541274803 LT 1 -25075889454566774525315407509860621787522601.7285502327749662244524447657187757 0.4877261968614107971925843336840527 0.0668166814253659350727497022352076 1.0691536145040243856317714827427679 GT 1 -665272895.6446293257901211042943719107095977 0.2504314841068103932517893418206647 0.0602083448965475620951777971386703 1.0620970717916051316090787682051172 GT 1 -3439331541384702881918289347526037382853192.4731657158490242314042924441003263 2.3826390278999071829150071180327489 0.0744275209058057117110763196042606 1.0773428365890077201096386786755866 GT 1 -545396321366635578788578581276602.9260533321539574009113441344914048 1.2315842251326671185690518799165143 0.0991387101602414624292593491581455 1.1044039845687438545949326937183288 GT 1 -202919983596772666.1521132376321344531009115974878727 1.0065233317546709348289108350419937 0.0965370951355671292857469298390963 1.1015202269433217789206829944154491 GT 1 -1512736103220772510112829697021443.0224693374717955942909714441453449 0.4659898719725866197298992488972979 0.0569046017087992460229695646172450 1.0585878367876429972975604566922541 GT 1 -2033174051300917004684.4522910742966825652352120936709554 0.5013880697026313405818799553850991 0.0246695747035268469458384150512470 1.0249789676571854620681193772102607 GT 1 -16.0417911108943431645670761657300522 0.6799512727560620181314822203984946 0.0502828865725713526519718380537947 1.0515911140709789750816523405089262 GT 1 -416237869127060436264519978033055756.3581448174520361978502812095388414 0.8409955358725189348264510898028592 0.0878820660973979065331851207890735 1.0919859837783789710710548195302130 GT 1 -241002944482209561342.5941825721223453083147649834635639 0.0257003433373107036006541975918776 0.0481942019420695707246317215010495 1.0493942586369313872651784040331230 GT 1 -614.3923267587423177671166379950100143 0.0609550727458786869431278859790243 0.0983293408987572855988223340908000 1.1035059485407511922340714334293973 GT 1 -14271052463157.2397458879710399542992563220036236 0.1571659650849371157623381924290401 0.0656517949566388089901299919746729 1.0679060996909455903782198790717185 GT 1 -624205.7869794519975828767825223755883292 2.5701053661711488050887969460463459 0.0527883545129579372436289365083493 1.0542327202837154011216601757156532 GT 1 -14614311899532108041597829964401668373774766.8370437872706566441370047170888019 0.4727516555485495592001400438224379 0.0739370966780859499588185463608052 1.0768131164898511328197196286681656 GT 1 -20675806139273617113438.3634639207585421624648018683910889 3.8695523834106141736503258167600441 0.0058202401155510908156492809587590 1.0058372437218665505267541530378434 GT 1 -47192914912335982618653185152739834.6275746508467489141459436403723286 0.5235896297944910784086114448037751 0.0658605291647326709379703575433679 1.0681295255252787245291921908619681 GT 1 -1874528787789934960085579918395.3759349637524674407606695455669626 2.4616240157905775275692646612332922 0.0138672220050300586562153355198204 1.0139642701648847481148489503631037 GT 1 -202651224856874661220516680.5410076425129280949364436293449917 1.2175049688078466214581266599144221 0.0345924670504881458000762806450943 1.0352049528552654864103722080544898 GT 1 -1176454.2510522514827796900324480977284764 1.1230056879740799758207735410348121 0.0980590572458126433120847748961249 1.1032062347279881173808180941272338 GT 1 -1.1587900220580962622042725671906994 0.5401463464452974543443642454713149 0.0009165688448034940240586406116769 1.0009169891508730514989522285186748 GT 1 -337997350.0013121048258814520712971750386207 0.3200836235511728676787404174320920 0.0004625480246908394527041078302618 1.0004626550330273475004399371693135 GT 1 -6807316405996687484332.8373194197954806523832080089023771 0.1117908492012165458258824408227424 0.0751214192577553288091644870208060 1.0780928141480310742915311702067889 GT 1 -3332800245371806631944166150831495509501504.4475467750880430161713528254602230 0.9046304389649292819734240147944500 0.0391397585661604589338482697909401 1.0399263109376660440759792141421388 GT 1 -825887350.5208656360765372342170275598143723 1.2774739319067612388542023449856654 0.0508833471701159961290318164481387 1.0522235660825558587630455591111628 GT 1 -621825610457272601179169992061901265.9880303073637886847947936933901180 0.0352350940572325607468828630851076 0.0772033805445792519511835145788139 1.0803464160448827681600089807617108 GT 1 -1696058084553387300883884850684672484516390.3744437971558779320860400068321006 0.2098668773471403759682147519810189 0.0850563940544280212312696497197033 1.0888928484523670784925090888101967 GT 1 -166090565767876012214645961398400817438.6979959008783300859329381885811507 0.1096937913890899775297812515578269 0.0695532919156394819389935975979928 1.0720904768834685757269306306612889 GT 1 -741339384110311039913834.4289009537221491897141854486749634 0.4044679389351584119966220424391806 0.0111461214823414431226927238190780 1.0112087049710406191293223536754679 GT 1 -1593255314164819.7310545178090962539768721476277012 2.3377985235763128662182234254412011 0.0226754520513855264703580115340513 1.0229364938226326165444751707701985 GT 1 -27396516394109268816368263151869488788.3405504745632284504892885289858537 0.3539039797147530918168476850832748 0.0217699198021355911245690533515183 1.0220103807895949954365012460018055 GT 1 -33345988823.3694322526506121938905619548629600 2.2626828462261675720700997546523827 0.0472527718388117801311432268855319 1.0484056485357967897716075985397554 GT 1 -59655508708993585367554277644.3500868017405373787330584214783566 3.0912304546990706921561310950168134 0.0465671354608765738955302599212317 1.0488232559021364057905831246976445 LT 2 -785480052889725941903.7890770336234847065017090176587838 0.0573102948121997306689960305112056 0.0493608620641260480741007972517304 1.0506207438257857868913857977383054 GT 1 -464840924340051021692973485824424951777587.9896769351907819498612901761610911 0.0221368593395911648486353014712657 0.0374269011640224654776853317444861 1.0381452688614391395516749389198787 GT 1 -704768400230803730096932876242010040.8191584120846074943588314535290466 0.0274698435885804821207123247954181 0.0701743136198460029479111478240009 1.0727581444026172441719167122725680 GT 1 -1491195324588629243651118647253.9877332729213578493466379185781511 0.8582100092710921178234171680618516 0.0778267829210129685021695512438490 1.0810222020526688701948438129787040 GT 1 -57761475801404959541506240105158117595191.6128840999341045981697020954681945 1.1334825421313945285029928433217099 0.0126466034616437602947986001368746 1.0127272524296827733075958065183665 GT 1 -6881658889087298511517750.6699590281623537545388748908244943 0.4710347024849586921250432520206091 0.0466320698386654407234175728248654 1.0477543741158060787716646114255077 GT 1 -2219511397541656262756085127490501905825633.8772660488224406181636238787959995 1.9651356184452738654067048673778071 0.0193024416590869581826495511589076 1.0194911662974613628437992631756263 GT 1 -139625737356110303708335634.2456702509822208211467009497468810 0.2396977849209974150958795594990719 0.0136988081470355997615344086896177 1.0137935026147631992049057787962442 GT 1 -1033964353804685138279625034431567.7300321433377104883842170078949803 0.3258804180736875563753114499565895 0.0308346659229305739839602108936709 1.0313200582433396044453081779739182 GT 1 -297123381333016137013724791275175971952812.6485573763038660159072124337892390 0.0729216871367652384209106702116116 0.0856737292037058871199493618641943 1.0895678009900577514329918019202472 GT 1 -982010590576168982.5258075714050712692767647622840543 1.1471653996234965444531569632664696 0.0514790115931417022086445619723346 1.0528513618530924024131935518367443 GT 1 -8184358433103893.9682698130995438810565661615814084 0.2648046310751029635658924512486023 0.0562508017884006759695411187913206 1.0578948279963767827713808697595922 GT 1 -4839809676493743917955.2720657478330413831877271852446443 0.5939158741774811564363453620803082 0.0540332319133447079198917291245122 1.0555478394197494736136663938748267 GT 1 -78741462271616011201855392534.4337167431673340154226847754200278 1.6917158422236437001030721633926157 0.0805812104112824137420091248982422 1.0840135590244963584050593405763466 GT 1 -549687997.9001792253792871713859393974108924 5.9493725967307912939321538647147704 0.0436051933500353604326253457255420 1.0445844735152150057174534997486620 LT 1 -7086024155518424216982033271672917509928.4876567517934321520512126892243497 0.5253398170758789111753552416142779 0.0134455881076588607940691959077433 1.0135367985353703051932417025304822 GT 1 -6666.3515146799224839347758862688470918 1.5683392701525151764611375000815814 0.0950330792686025827523738213712136 1.0998568876282536954574310843478301 GT 1 -39540116998734155074147903.7870850745967708892330555620991057 2.4526227774846240988745923475247471 0.0915297395737915141116413974049784 1.1006004666572139705118168414224933 LT 2 -90.8401220653522907699733562678977940 1.1473833639777128679330262802286833 0.0013939048813542662007002335067285 1.0013948772704804046882826109582748 GT 1 -2285.5373309400601095485288468288777266 1.9113561513390435080721324422204819 0.0073057741124744361300631371123214 1.0073325919768379109680956870288392 GT 1 -98381.7662712484395617679013861763504496 0.7173866487943566947312680452758175 0.0605680783915039305311520998765132 1.0624799251187008186150279490072892 GT 1 -619476170409.7459532048177128298645850590762665 2.1348745978960109150830911904136323 0.0040232399407078580735234007688673 1.0040313549435669564978564493386330 GT 1 -397919188093715164550.8301136940769408264006769185091569 1.6985779149656670948669110242925874 0.0907433833037747297044551754533346 1.0951279180491599093652508129383244 GT 1 -419827557455884646697267079309675.8179370860065747255841071821349004 1.8894098331286981211047170269307587 0.0070147225919499549084705028018970 1.0070394414234623249167886640866870 GT 1 -3042627.9138516586943296412628765374462369 0.3873187664451792452978752958135229 0.0003575482173658234972291333268311 1.0003576121529701893218503673616747 GT 1 -9773904638586127962380318853983932.1273901640291351976676695123779050 0.9800779553852247863972764307539893 0.0936888272329375316319465406151891 1.0983725741069966560587616363022945 GT 1 -1333551500892016980415712218067833757.9006810480660034789378577365685318 0.5664208878597235616703788459033271 0.0742432167218456382378806567355464 1.0771437318826598498657872879687284 GT 1 -1364504188275285142858024356561710048743530.1712964712367399494181480643312846 0.1417847715593833751846278538977797 0.0614579428512137604486356520455801 1.0634276108016496587397449980674336 GT 1 -15060608651786252988610344456557573218218.2387279643194304045941698866617121 0.3278272276302705698957519884425551 0.0926696236614637337425147127316487 1.0972486434391463392808917745307516 GT 1 -198264792.7351252114387715680225296220859161 0.2571907737666915726948282305855191 0.0778355471165445481658092578008851 1.0810317059473996264159568886354872 GT 1 -127756609799.0271931216622847889618246839389025 0.1080137438048235219795230222139286 0.0927395548617437655872681841256175 1.0973257199893933413943453264485283 GT 1 -767975.3537422900121928239059987684194425 0.0834669335007128476950046952228204 0.0123656698868222110791342088644012 1.0124427609638115971423528573497209 GT 1 -1836231468184192052140890372132437062842845.1539415987402030856300719594004139 0.1117273764379119094090191657196503 0.0421109746710150064141357365073149 1.0430233476701090161807490154953714 GT 1 -296112325304878737771403158347.7154282346361980723689408023907019 1.5336363772153470430792692102242952 0.0918795535546761029640464399300509 1.0963782589079323795246003214216391 GT 1 -49519513469652114414381639505.5282681478630588783771040046398236 4.0175290660176201095249581714054810 0.0640748033555095434175696931787345 1.0662197238130283230423565177565182 LT 1 -22630.8815832942486417726605595411569280 1.1144720234448167101285328828466545 0.0443228440032733749622250842679157 1.0453351258975061662522153371521612 GT 1 -23175506740867098899.6197451964692198057922793056042955 0.8283244672583626550991511104513296 0.0311257629969297138461944124638845 1.0316204618888915968792238300927222 GT 1 -285729527817701645350101469838.1335938013290382079410840589661149 0.1954946779490951649127780691436118 0.0054717409938905173006989422059976 1.0054867658016112599275613254235082 GT 1 -168456844.7771505395698161359749912551910955 0.7983039940056606259488654392534835 0.0006486906928678783452373264266514 1.0006489011837092740542592027445740 GT 1 -76515024158051405999090131917400765355129.9416268299611418199664645475558353 2.5117305823179987278812545165336190 0.0782974258093290966862180906971371 1.0848564853000853088145169436558180 GT 2 -1849154652738246167471510229425603983.0560631216184888472224480578609306 1.6467611686733225369773006447210900 0.0147237971899515017084363811406844 1.0148332681730765981156017129229215 GT 1 -127729114491537965133957054534444478867.2163634223325283538937732716124596 0.5133908325918156507303634268075143 0.0699345097295386025141726986259371 1.0725002756685248655167363091619560 GT 1 -12731961311731654077047548.6270471561051406332029506839799427 0.7474173502511921653741876549307457 0.0775676363409168753425786785250719 1.0807412242821285264809676015844649 GT 1 -426621826303757062060762619002.1118178334628038767644263635420387 0.3033504294216896664685370804901096 0.0286547458625278262099409785588771 1.0290733083511813364275948436892856 GT 1 -100347936820692653410619.7980572088094495328544312947383748 0.5089984326983299978475429480254822 0.0234600699379109024167589052176638 1.0237396385008143280534592858723245 GT 1 -5796905204617857108723298379499172424122378.2387399161890044142980722402692064 0.0942945057806433853295739776489861 0.0003777244819197089462410425674958 1.0003777958377809658973678768583852 GT 1 -4259622253729589255041188855877716717748763.2762579609656647296361459126568287 0.0056120194581429820921400944401717 0.0346171040201638897910236830200478 1.0352304729420733982118063742546467 GT 1 -27193044789592.8776433808353805949265087538460095 0.0583482850092346906784928139328892 0.0918153983610809058703602583252917 1.0963076152749264086666806276365077 GT 1 -1486617181589934880859142.0834037071644050682361477978660798 0.3557554064880888556597163048048603 0.0564138677995023674875707967029685 1.0580676282496013625227387906760966 GT 1 -6135.3874419794758328100277185487647689 0.7768489248048484949728746288472050 0.0272410783910101664541337042908102 1.0276189956262608701743729414374094 GT 1 -620175310813707483914599828902989046777.1276398192820578563212205269625486 0.1729236321130278007000501342904786 0.0872560877138725171282070189981597 1.0912999281085918883272487304474998 GT 1 -2021346.6185043657573026443271676557034498 1.2857436145660708702005439688167340 0.0879526053171016531026298419388339 1.0920633224040326049598761908520119 GT 1 -7307.6670229046341104297658718787302793 1.4682307127789193404859321052686601 0.0510960127331650336754575513653352 1.0524476580228080535897805866262106 GT 1 -1121568647440.1820191440886320523540586413365888 2.7032359090041097027327494724803474 0.0197432022363896804872412242380625 1.0199407031093235556445013938656832 GT 1 -109619267185256521316616.6920505524246271330476557027074747 0.2121749238034834517460299783959522 0.0577788912662143247624623718628547 1.0595153093014938125016157642007090 GT 1 -504317647837719333495129611834386938915.7298949206924535840126980386799554 0.0618049116721640077228187552507168 0.0132554348563710635738634690687967 1.0133440722895360336104329049129036 GT 1 -493477496078.2345199516624365701966005287948407 0.0297170017490892797369793323706665 0.0004997208132456406011390130304352 1.0004998457153037413528305758045231 GT 1 -505983013636409952654630100438781721156012.1013853785297132598413687759719077 0.0049290604884930883451628683324891 0.0161204378901073620749156829345556 1.0162517856506973211822608889637617 GT 1 -207822.1483001204296455947770175913486895 0.3203312429872872877685776622443667 0.0054691898429422219218883428764043 1.0054842006179142568088181729239114 GT 1 -45140085679578885060103949604098179751.1710959636036498128640868447061183 0.9503797416837549656026573371661173 0.0946799414137593976651135162506047 1.0994667419073187051533872934778183 GT 1 -61154687.7749586713639495417356421420772003 0.5145720506298507412508194475087495 0.0620749982120193644428567247134103 1.0640852886224337898491584013931953 GT 1 -411030332934.8110527845393962411965971442961666 1.0562294688470280116845072296882542 0.0660756092212786907431486299768372 1.0683597960871326103750824699572099 GT 1 -19269.6704534282817339194251003157518796 0.9835802590605708851301416143710168 0.0756308836286090824574613526028231 1.0786438105175690901272437657690620 GT 1 -3353650304206774205527024882.3578363380968725800580819790889347 0.0257658533713764544736710650336269 0.0727892108201727609516660501727276 1.0755743507216353869784873581720132 GT 1 -8761928619903245296532046850264627949252.9319030332488312422473140598579612 2.2661989376143733578065031562871240 0.0883243006344085246155007145982266 1.0924709449468040134830500548288109 GT 1 -6398031786550257.7797650530127890988899995888545346 1.4522756384142633532155563843266443 0.0579060276539469801788880328095963 1.0596502510521618797051021853859585 GT 1 -90888074051006682077431.2040378049412960312949501019810761 0.5086436220963586430983107891607099 0.0977284921915936690094660885189893 1.1028397977733879973644366490573678 GT 1 -13846659849733047029159782656.7473468264311519694114248555758915 1.3212477427745545382491878603287312 0.0110166616015071562408657074370926 1.0110777944189366125930718436529641 GT 1 -11986477767618521768176331454.7166165416656103861068363632943600 0.1255233238805786068671341637694227 0.0381092191775587639497807922704065 1.0388543682104461731272328122568809 GT 1 -3652.5043180738513868801107322780815842 0.9614234336458751837249236614811950 0.0487278801867215115746486162483353 1.0499551166592224323112628887652657 GT 1 -1126188712.5573222341460913489363212395259175 0.5741127391736668100032842578420114 0.0783193694347535324485982116694648 1.0815565031048791019181252152694613 GT 1 -27645320644135139314725130248279580379.1495257419008893026544308977189864 0.2801238974802682734638278610761325 0.0286140328514720111045205393174719 1.0290313951821173986725141037941369 GT 1 -2770889228235154215716314758498574.5688940511265632719196799037720051 0.3957914102737197618665697373775947 0.0688274899065984626375466409967818 1.0713107233885230584980202829320433 GT 1 -60.0620279557706520432712643646020751 0.2364746317993116401818296757071987 0.0400731335500039312173732872341260 1.0408981782034123212471590849934346 GT 1 -546107782708496355107698.1574990360718797915957388215876056 2.7373703312987592017921612038633364 0.0894484648607742654763351824382574 1.0937047804945264942666813713413452 LT 1 -7921985868296417275519465698321404684837962.1089992601811702217436215368217096 1.1496662678465219321150618942032720 0.0974530551974761845359860341032407 1.1025345737262187391042428955249383 GT 1 -899726403.7633676402416555923206427025123242 0.6163037473684278227249470034189085 0.0946891678736401719042952563585627 1.0994769333383035403775198803561265 GT 1 -77187611964482487056251439937554.9005262628155732927104121573717966 1.4364934504850463652711642600708499 0.0697534328760860275566684931727243 1.0723056020348141144437782399248393 GT 1 -1163992104295059543222347057072068.1511168623332906704568604374385107 0.7034379266385646749820995669327299 0.0900159021298980834027533055607675 1.0943281544919484837002961799503795 GT 1 -1306376589745068643474178.5093598268291507606613701295186905 0.2022016907446079661309864512562432 0.0851293298867399140839218042894486 1.0889725678351534160059111679280044 GT 1 -12961798553059987.8854573503590576237421806437777944 1.9006888437687164861228769318277172 0.0718539148990167981182733668550158 1.0745661392952001248648991548790699 GT 1 -175147518197785463490822185584.8434388366288079758201567873588499 0.2662726437439490654042880843572529 0.0993077655938067834359545030690718 1.1045916619613789661237481477368624 GT 1 -173514136.0631137143062318821105104487202028 0.2841117765934150758438525001139819 0.0703681425014762692700160599790769 1.0729666233571062987630311255177195 GT 1 -1304218.6198423791091745229010991362569293 1.5542471338876410004934377396418882 0.0261736546868038837839734305374266 1.0265222814680530958443927320718329 GT 1 -86328702330656974074630579042170.5980941912050325719390043237104275 0.1402374611556020533855650947050413 0.0009181110772040401566590286656514 1.0009185327993240077415200933486260 GT 1 -2556738931625395440342337906710409.1487116611691394647117227604535546 1.4473657307474771068875971578759040 0.0122796729968192320685024277440719 1.0123556911409344762057415887447526 GT 1 -1160802458200673399095441383.1430064060456167982022682655064483 1.9891164731360125548859056838261884 0.0144875761234000116975871057997164 1.0145935457954618341340160781222224 GT 1 -22020089577944336221929796302360.3240611336775831302199669951026405 1.0164583100933488755659989450613780 0.0599711849926085131487846637874372 1.0618447499247373630550042496023538 GT 1 -253376334513.2948782074406282771608943975411427 1.5673869397032543475012127952979594 0.0826816471841797010682027149238107 1.0863006992363664770104543625265481 GT 1 -24357308659926309791873371.7040793371233389854212297101890803 1.5246867212833166604886336760440073 0.0333833915651462306357482166215645 1.0339533373942760075298616111772687 GT 1 -2.7883520135017955478633465782042887 1.6783221599156389518478856692620789 0.0080964995810448718824343605561069 1.0081294542325293044460072721800204 GT 1 -565621729826655534492394483769048698.9612430552882164043493364469078506 0.6038449585434048136450676096193912 0.0675566999035000902725409224669401 1.0699469334988749821919407229451796 GT 1 -49606177950377104.3598514678642415235840006074691980 0.5391102358636207994238715484320177 0.0658741355996331186452325828705273 1.0681440913737629519233676942522949 GT 1 -11172322.9777049317986126729632074810504773 0.0293646751034060258779301118530106 0.0624073841993582385702662195909977 1.0644397358296491607538304508683562 GT 1 -286215275441582834232375281466.9917729171682462359670115870186212 0.4129638662847740609440051979871917 0.0754280132796031999314861451147426 1.0784243656153158341310022104925259 GT 1 -102.8789307739702861867206084083184695 0.1773355814673612145613438921529210 0.0460916111273429162504813379134961 1.0471876405802458540755706031731101 GT 1 -104989642669236091.1001690131160005205719215316585287 0.8852781110647064194862105349238957 0.0727609984478584533345226485204733 1.0755439240447229336388445109586192 GT 1 -8051825182572225645191151965673911213434.0597704060651823855128613871292903 0.2190376799242881699689951611372263 0.0283365185692152460636224765353092 1.0287457469868574660011967816774823 GT 1 -2039251772759140097426347779637934110822.4774682696962976203600656627179873 1.0529159028574918829730699548021424 0.0240636787043297197702885780859024 1.0243579392716726937740833179305325 GT 1 -3493573.8435280111405284016723770684322627 0.4932949829347703188331288889618204 0.0845183430322541009638149079094790 1.0883049511494043060837212668923644 GT 1 -4570612899825533305520.2993380686333847912659624774918036 0.5898438327515717734601672803982389 0.0892040424859944553327796357703838 1.0934363831928220949151658020395219 GT 1 -73578116296130915.0771529891393908854436941189523029 0.1247697910797789162176940786961157 0.0213634297262948686719083854751883 1.0215949308338308632977701245737011 GT 1 -7708362173001.3973351558495959522816236456900954 0.5113770156804530980240281925890972 0.0436414929910709344999976258517261 1.0446224288968951393871708445285515 GT 1 -28980137304840668048534793208.0503859361435234552787812597591834 0.3977760410116491505014910142820369 0.0471466030009185333821660382617875 1.0482942203208798587803211204036679 GT 1 -1414922718002474734021238977598.2037641146720141099154982658427198 0.5314074241298306850151891562173773 0.0773270375128185190098999468650455 1.0804804274310733388435248505529352 GT 1 -351988.3900767349250847469378917407214273 0.4607113684842813809282202135968853 0.0363178495901076572895535511449582 1.0369937582328274350699617858711989 GT 1 -495421600026.0605363794494669050645131137795090 0.3913967505613880706948967044564592 0.0585401516981140257023974519136946 1.0603235783138236904672372811488265 GT 1 -310785936195239911277856950.2669046574683077422310214501128373 1.1400047759276135318570877032352308 0.0344265649584692646381846656924624 1.0350331209261298122230257373934219 GT 1 -9263874526988853010437539957112.3740323454887502463660233159746384 0.2290831096927735074426533467774202 0.0849012676585408092155300918659189 1.0887233153295389352484365586327046 GT 1 -68195772494597655184980.8552989169021424515320933903139572 0.0414977477139618821980809787247361 0.0672226604795064558107335420610677 1.0695887566478688678916225110336892 GT 1 -137231159253534998452071321.4792550051803366562586408337109944 1.9312511509323058936666615583828973 0.0506027771742549719157886970375846 1.0519279980580064537928525682327259 GT 1 -87371799253744631367177095.2714733485001358198073596007164192 2.4272773341345086963592634889652966 0.0409634851148309632801274268582779 1.0418261288223523495501407906743742 GT 1 -10126449715715156895392936668405791.8335841565413874420488664997818574 0.0569377302037489744230303497954138 0.0549295538026698058128317397036414 1.0564958080262661567109949744674603 GT 1 -1925864824698370116059928096775338.8387547331109330960217848845976193 1.0130992281427785844602974301874656 0.0209347439122039361295549701720109 1.0211569828121554248163982314397710 GT 1 -84460125419.6328869886598114568616136994566919 3.4381935939925615093806415636644736 0.0253980109664269136414575101354189 1.0257261077030991821830651260369387 GT 1 -1606860413619707128827765965532511.7503467833626948381202868733592030 0.5291195838446699841879590286834142 0.0385524120703244226444451041499276 1.0393152261726334030913981202280349 GT 1 -1305702116361857326564.8419611128426264045513614654470959 0.9652255104566078439766997025547993 0.0961319075296335187626980145526159 1.1010718446455361562068309534286711 GT 1 -180.6653012400017394122997556042188327 2.2846434605472187416941885597639677 0.0463789574316482666072470361253938 1.0474889164628011727857973844242454 GT 1 -30492129530244593687256871551922.8240511764380090992853209181878905 0.4368799831950082076784670152607285 0.0802861741034934535634533294760537 1.0836927161360219527428785544627297 GT 1 -10012189699.9962574510623047319139416370916526 0.1733485645909631251781285529198730 0.0494202983329710028751729188923913 1.0506832682102766661941005369513981 GT 1 -1088441.6485283936117312043014408671262002 1.5973708956478765078255833903568844 0.0333154427255968332780369539332716 1.0338830443216988252522246014219125 GT 1 -92321057095571041484460850374859360159.8584258455843376249050633626979375 0.9592601850893415905042560705462831 0.0693477852516876303351465059414509 1.0718696324541200125023229360865876 GT 1 -2771434083421096523457037472562562807277038.3481555685224224644139121259634575 0.0061144268656566171815155627165443 0.0254962479782589650547432357092125 1.0258269098400443488659716688036759 GT 1 -246711359909743333087744413075209494295.9146871466572625828394677272331048 1.4904560226131886052381209770673782 0.0233697503808548924901937617723901 1.0236471534136877885420426050277388 GT 1 -1993373003285.6059883414014840462731891562072967 2.2741723461006480849294673195561073 0.0344279185048584030177196589606443 1.0350345227328580447584987932408172 GT 1 -3.1336219750860527079315332739307253 1.0589154771418936812487155240417659 0.0946707389757721692941765157014601 1.0994565771140728353676622635572661 GT 1 -133.4112734922982333787902488174720104 5.3445043752172364691012936754487272 0.0437970246758239938836548802450830 1.0447850711821577066733173149283636 LT 1 -163972291341175406.9565899923803776865012424793120273 0.3026052952071757492774134495342374 0.0458471743225685287645387836905047 1.0469314257332088663282327381566531 GT 1 -946560973691813446.6949176411636481575896490028324877 0.5830121277508758349451528689483883 0.0835906031625932888967509381486791 1.0872920743770119091640269179322404 GT 1 -232145466.2749593071089058441768866296736961 0.3323396161594015699760447774939646 0.0956159295370215872568075891760503 1.1005011521091821735106806948883786 GT 1 -3656156355449.3093877932539184259684181069348418 0.6555092869638080699002788756972384 0.0522273032176311290183171805405951 1.0536405768034705634364911393138621 GT 1 -769075321616129967.3528333511816373521405632855805596 0.7161648005530220594601426536821951 0.0682508261470596317338446598548869 1.0706916272848845114151877273889330 GT 1 -13372723986619565182784890483.9537073721403897623253134213837850 0.9937901524457370734747914743948523 0.0234507080628078931320535990348226 1.0237300517650957235597121314957304 GT 1 -3018585753723265061710062910.6275896675311051341256061755954654 2.0182560794848191903637932654964867 0.0610159119130873782068968533456318 1.0629567455117946056118136862782246 GT 1 -3225259164638306992839.3426385350050576355427078247162749 0.0648268221290395257581974316440586 0.0899588637693143102725029126347136 1.0942654758438355334324156446725255 GT 1 -241350604796123421596331522409798318983623.4673231384929182944974125343261535 2.8959983017733125730017540277233515 0.0707252900390488327832191349100932 1.0733508788632398210984350645718663 LT 1 -17158537615909269398516163141.1911752288439807321719455025987530 0.0005787232984956127353784739464191 0.0198710315021091842862851111736836 1.0200711154680548140707986333097138 GT 1 -52391318235897851404525128741689.4012368739647443042885113979347048 1.0540065027030697327724575237516101 0.0332729339633291520208305584145675 1.0338390715207060058731756492913869 GT 1 -8210226.6788048483620799321368417733936277 1.1310697060957343054222257742620471 0.0236327113999613212913628203950114 1.0239164430728394330496854958270871 GT 1 -5048371182366.6100947026999498692818269834136985 0.7645920089030307259586459850787700 0.0543521727254346887698101988345407 1.0558850548503075351622733159598559 GT 1 -74187.9517586325343720817840040050118635 0.7308690589900035990772034510927467 0.0622062386100617467505714578910159 1.0642252247374131945697373692562011 GT 1 -14223198539792274507107074360118619122825.7965079107078771749517150445591808 0.2772853142492825209791472703526932 0.0679192768647240433734642472715903 1.0703358552411283058143478011958080 GT 1 -185756457.4658675822263461641123498741710147 0.4033369184431291425734477251793515 0.0367968250020841380291733458123839 1.0374909081311903049245639056938147 GT 1 -1064359725851576867415680029.2550192364144433893058952637750493 1.5032951452687567306809929677095196 0.0589207891427595747711255018194187 1.0607279656204038539511486420543356 GT 1 -4171423.6347803616179195327576667484099076 0.7440767959862043002787284941864713 0.0013858843756137589093570701434710 1.0013868456015663729067753649084153 GT 1 -120705174482463534136269171751488069597959.1213518174938223578774480026288390 0.2939235913148319435567432426474638 0.0802444739910929354689705781746978 1.0836473768512282523695622613057303 GT 1 -12683694441374213673094913965521536530995.4313824795957140079649897876982641 0.7833306241544361216555879894284590 0.0587493977715834989086566686887895 1.0605458600505316278676647478027299 GT 1 -9110617973105589002266124665401.9123672300030491393012348092886065 0.4983868510332507726215956356483487 0.0829702058483664489288055571978163 1.0866153163574882400166412223378406 GT 1 -475278440.9232457596155746519007061995483484 0.8448729188137699752259965083966472 0.0669180879350663025130512821083603 1.0692622877066703088667428084894086 GT 1 -22897484556320899952263603749270196630005.1210993684988612754034347647399249 0.4226990883213582463996900767132580 0.0066084608384613489150358268161682 1.0066303933961551392766178819725361 GT 1 -79.0229385361951630649434147090642619 0.5182075142413397471745898880492391 0.0079622564572733878997387191098654 1.0079941244949325435352649345480353 GT 1 -127189.2876706596833990866896832671894547 1.0821444941167393397607734028889644 0.0517335961707819731399442886369262 1.0531197995074242374344820529850176 GT 1 -4451456491.6795259860671141887025457944058087 0.3997960075251855911735492653475369 0.0534252860111467462998005209853592 1.0549053743230873660280315869908614 GT 1 -95900.7288660338390581327881995027577437 0.2947987336252842070193854146341407 0.0540641750254661446594076507491517 1.0555805505246844570117487149195213 GT 1 -382700242.8424024952455607757354215980785420 0.3661340390044010693128866582647714 0.0373103354182172448454870795237145 1.0380241781218657793100497684505556 GT 1 -1379067947172.3502529289064399864052783127722311 2.0902709748967947625288050276293657 0.0315045438709750931139387011233375 1.0320114878043010133185696001136754 GT 1 -2.4328077624485407024791567400600293 0.0483966889384488149645129340501962 0.0712629417087444096365222066579773 1.0739296175923362705919715657675843 GT 1 -601948346905076702688.7164697042550676692211702463060975 0.2943180037808642153398264423031557 0.0228830110038373574460889094266180 1.0231488910208180219871524098898052 GT 1 -59652601.4387978648254034539810144524223723 1.5788783574105205030799921277044049 0.0219005701464034719739744362280662 1.0221439475980399374439702819818533 GT 1 -135225338974586174600418.3837160501405275086224017103361243 2.3500109834490189928323685861315494 0.0978787132536786948260365981839377 1.1083114530196950613664380525384607 LT 2 -17953133057675125134335901626909096193.4689538699829416732767210714686121 0.5566614742549394653055515758334658 0.0913458807274728576818018328878242 1.0957907640666644411670304186429969 GT 1 -2131118853599.5985530575101191077584099263882886 0.0168055062610605015306265133652219 0.0955617618564330062844747114820621 1.1004412593487412630264254097325982 GT 1 -80332286195271823912146904115.6041426585277376642826307163807795 0.1871948126225850622100933910219357 0.0312530456500073259528009907866558 1.0317518422163041108246180799051622 GT 1 -7334492909936917574622898670999957021248784.6537699836342359014784532944569630 2.6507851572645044562867354202391929 0.0666015346006392460666151319799598 1.0712982857029221938422745362015008 GT 2 -6228983624397008627702175283232205.7992491160135729005175178932897482 0.9445427949946196011828917673446365 0.0683645201097464598871272369916672 1.0708136567999387700587311623959203 GT 1 -48.0956698313517512741922077549745964 3.4722967549118922097636640690450824 0.0184795066643249965849021530203983 1.0186523858751663100933582993474599 GT 1 -13391557689372956075057353689601.4665330423896353551700294859808683 4.0217044122302476019853633940115091 0.0185501286183969241374915526598792 1.0188996405027608223794704906136149 LT 2 -82699443236041397519.9969899844088263322446010752950266 0.2261483862123869142164357720985739 0.0097376789700025880564542325494880 1.0097854002146762279964936182185257 GT 1 -19771323736223.2631688084799685216727404741200322 1.7011596040555013523169577040266565 0.0915356515949987770998622124339470 1.0959996341778778176951259299257226 GT 1 -1371162257813957.2966574383246015739966098903745099 2.0431880319254817432294682375178274 0.0979753890571837108870227262199143 1.1031134744327402860294914083175505 GT 1 -14254919977230512.0428109942337305323414834423163304 0.2899644201674557828194644075892967 0.0977786286997860635306439549614832 1.1028953663032345236283343226649706 GT 1 -29213145142165526343898904764031564.6076885253963197692347996315549533 0.7954675586942903720032307903645549 0.0699356724479801045386337280050042 1.0725015258161547371628107045381827 GT 1 -5163766303229.8835831832060419807979535144267581 1.0858946168656475474026368757779536 0.0068626727213546187778509838206467 1.0068863291528164064928172172986158 GT 1 -1652846970429029790311570655686005044.9068911815566466441954091888050254 0.4338309672712266416717052757517847 0.0537641932516728671276024803695707 1.0552634738163380516121509658860475 GT 1 -111948503177299241662.2413342776856488003810413094797350 0.1145989585471600325671499446940167 0.0395295979289337683676515688302516 1.0403321123747491359447940896066263 GT 1 -229316493.4153680225190905304451236793032475 0.5700478555823024605655809535206298 0.0468992783032329396344662246892462 1.0480346918289316478943995974865981 GT 1 -25505803734326838556747121962.2159162307294220782428924740770920 0.6862072465848209420697271837821433 0.0384275782005527836141253810104850 1.0391853951055457816299017301623392 GT 1 -122610987789978856495557038294206048706.4410828315071584123915062837391352 0.9503773096222078410147626632252904 0.0662305709158235516237990878882981 1.0685257351647827347964730570870509 GT 1 -20872686647425735256937298405.9649143768015081691174187256957088 0.1105822001632110885077693209107026 0.0919014006491142083540160950460645 1.0964023166827803264458031995222700 GT 1 -1173712187293021.5848493419386974020911520560579498 0.5641628014184239686423926021326611 0.0497642744084411899686438899803846 1.0510451929656129079139763132863882 GT 1 -11002.7696698272589891357670788537019871 0.0787121609000614152183918651275827 0.0777049302398847916144654478604781 1.0808900743471670634079004876187536 GT 1 -5149178725251520236049926538491888972163.3328489157024975232563759402734587 0.7846429160426696255415436848114374 0.0118792502955383036137963051992546 1.0119503724020103398825559927691990 GT 1 -2048126128439658981881211119906200486.8639364863466917492481396726257889 0.6758842425204823513076277518475962 0.0530844736102067149957776850896478 1.0545453910526668013826929752990939 GT 1 -33630658302.1860676564068671331471433763477589 1.3198555946459091102803967139738949 0.0528482923947684146103454827528390 1.0542960005216197489590705554570236 GT 1 -18591488683802793230271.4866158593845413194135860788722828 1.0416023345717681897664197897242871 0.0764521315639823099812235409451341 1.0795326469709299824368268119889109 GT 1 -371339650129652505791.1725149821715121829082401315029033 0.9802909552591629231120017949818226 0.0667998623888809882813397165727831 1.0691355913733224296589427270802440 GT 1 -73588855328278564502657244254.2631293471967636429357916000356814 1.6406571798227086645216591759036567 0.0724010357073141870795076059339273 1.0751557901465694276991441327003239 GT 1 -1230851080772651.1592262622615011638250297049561039 0.3253287003933695316819263799567400 0.0622859350151210634418489564771543 1.0643102112183934750639661837830413 GT 1 -26622802637514234038261057618.1661348822044838532198647271732707 0.9260683228761083584676802634841600 0.0057276314508572883021921270787843 1.0057440972352737720880294860153646 GT 1 -1887656598498321550056969113757517522.5381299723430634223930212480092308 0.3245824450342036021787125794608413 0.0194864731872476836577509662865352 1.0196788376094317892351533770465103 GT 1 -189093430593996572046708622343284054453743.7472676812948049075636087140370384 0.1710324874018480721756742435797085 0.0503176702595933683753790658375811 1.0516277400552089078852629823152100 GT 1 -1279439338449.1191673893678365940390581694669726 0.7569087975755075585520325358644951 0.0069168878611853066721022974896454 1.0069409204144591001360173193471791 GT 1 -141812017454392203978516470230989018715.3155436913418784808778981082720114 0.0195784635183701859992666357693235 0.0671233298368933136356336541210749 1.0694822731925321039658574175733664 GT 1 -60308484092553874037864855836687601.9572252507494498608209188280675530 1.6119717134614611105435771054120941 0.0832199208828097556585683020034676 1.0868876619693500337374371407223819 GT 1 -14720102126580.7255605782788561501201089100903259 0.3105811132833959482339211933467906 0.0173501642455946140374189440951956 1.0175024422817262296326193905014090 GT 1 -531008094313715060661.4732644227465146798937914335050137 5.0602677805704470488844822588699028 0.0628515306899877216516740104832500 1.0649135575242462763069635935195566 LT 1 -39115191435960.4746152552500414786444616594368796 0.2425896985044932897344296838308088 0.0823150451397767121164223518207983 1.0859011336903569820132071230900063 GT 1 -41615420600818.4761936443279625532028865011393993 1.2729687771850717657649760448477232 0.0525669841072464754730007529759827 1.0539990401523100748657149675252851 GT 1 -37692627535.9737139459639619671201713688680220 0.0150697659497717635453462943145782 0.0339220688691824293895756451138664 1.0345107739751297027836925780705494 GT 1 -32171.0142759355005757426493667364510540 0.0782038995904508189285898543032316 0.0323436031204678181617872940655998 1.0328782166207575833529138635116149 GT 1 -138458976406484861.5604948317664770988209077176679750 0.2622103257802280615535428445945399 0.0765020024059440754344233229395497 1.0795866476245045183749885588290338 GT 1 -789.5589801910358140392430893839998283 0.7391827668311371153699208680435764 0.0962418654315593319573263026858017 1.1011935046440653520184027383707988 GT 1 -1181302956928861889984929045502762882.3244902213503838448090716810929928 0.4026568642426755653684577206213079 0.0433775577302029193467968526757449 1.0443464875576546428231313133164004 GT 1 -1344922400007.5915614311117571449665717028391626 1.0247532276358443645290558536049817 0.0661750395211275503778325710560429 1.0684662667973227542236293496214074 GT 1 -1162146038409699207952040481572845709.2466289746435831508835588124707264 0.6366563598972897283392603491723831 0.0715079582086030737274767755493634 1.0741934692639143406096092260946850 GT 1 -29093.0842190284395497030060516015842465 1.4091160267459194965742773100324341 0.0432174593962629866545548114747975 1.0441791436490241610448175608994932 GT 1 -668391273433.3416517834897474947423970683822371 0.1629136186736148121433986589483084 0.0812151026769069409594362927214130 1.0847032456955271498050278569527566 GT 1 -9033078699544874076004.2863613383258478875291397546960212 0.0635756151892428474597535578192185 0.0970176319743521901897514324875128 1.1020522517517467162719436746592357 GT 1 -11559541332474824599894414173955281386417963.1825732764698348386876912821485353 0.0116446137935181272622372788282073 0.0104147120247944877127319981172239 1.0104693246521963616620768690415647 GT 1 -1031583224064384086188214557202723.7113968363061464269526985143805260 0.5489198425073115229466788483835836 0.0144425918314539508146411446955971 1.0145479012513441900442629367618486 GT 1 -155628.7748805777258692901205582952876036 0.3348562523390979570925561772652231 0.0548576483315404960837408279686892 1.0564197261467601220349538880787463 GT 1 -783845431522771135449923386.0443653840376549356129619748524770 0.1174716374864553392228606777536617 0.0031917549680093247935629795097669 1.0031968594823638155384116033330876 GT 1 -2054921226215259717663601838320618656.8818386460125529429375364672931416 0.0007781073453265936538018979656862 0.0419849345403783486924275422435903 1.0428917751854272751513506442387607 GT 1 -852521.1361550159208163061106694055543088 0.8323749837100707445726273955232426 0.0661453110155134483864187619506029 1.0684344321027324323949033300778126 GT 1 -403722174305298988449157632773956737114507.5945035761899041486352097618905496 0.1197318028149265226823712307339742 0.0421395672417315060492636347792123 1.0430531976806079573526781616264054 GT 1 -23959002217767604248080613.1401039925100893209995069550024167 0.6115427925335538447501883542778806 0.0879053155576084804428635959193564 1.0920114736362804317863908232031308 GT 1 -185927712457435344721060361600616.7845348564613623073617659663296646 0.6485242780637557331129872203576291 0.0753396458521942951896353358180455 1.0783287936035969830304251861680181 GT 1 -133505.1596031029007192444952330701989735 1.5018600947682286598291717786102313 0.0087860088618230757871346528344500 1.0088248334135391828415087988591568 GT 1 -27470232312925537759078150604327217609302.4456341815857844169492256626317394 0.1951542288378468472426665324379474 0.0175318062221338147453034258615812 1.0176873085079037416365981634548138 GT 1 -1175477611144073247.9711581528791106412733187758581468 0.4181249573436611863948101558642773 0.0434521207595834672965393500177598 1.0444244346474458348149415254293844 GT 1 -19609.3395251572179021324079106346291597 1.0939933219109647710264561079700024 0.0992105868075537578077899294419172 1.1044837743384583269055672854033109 GT 1 -10739224074139995970889871237.5015517721489236466406328663778048 0.2461769217566589771224191105456422 0.0201788223707760360613182455680442 1.0203851957744393987516270131560042 GT 1 -380.5784744423754758113279620009054652 4.5358561211205264906069592937818155 0.0813065893266910121228441470517977 1.0848028241770379615345743964183171 LT 1 -71310476111423159569012486542193698622526.0721239822619866843908025912816418 0.9633578501779784221179291113683830 0.0768376921153699845209193721120043 1.0799502117430677135194196655606337 GT 1 -5467326569.0162243079169455659289856840254868 0.6256941754900424623039101836610907 0.0719646386822117789877825163846261 1.0746854420536022574735180243159150 GT 1 -69466793224635181778.1999915978968026634250738957551471 0.5619912596880479066495998292983650 0.0643060706597500955839756006997533 1.0664668545483438211707288535455965 GT 1 -223464493742711.2272682466303884863383072085790500 1.2875454006845199450357076127151768 0.0156379528877503052947485431611879 1.0157615155438560136098944878266220 GT 1 -27570539799605723412611141307.5850977994306609903000363909119906 0.9304575046789090105806642754217770 0.0612711282077799388102376986551905 1.0632285829030438000244888888865430 GT 1 -475444.9056138657492632059531664031750311 0.6114341010360410362219731482081354 0.0437076926274772088728912419458871 1.0446916518161388884500132975988579 GT 1 -397647528768286385428426328917206330.2442307634205758537476234163238214 0.1539722968880919801037549197924926 0.0140799858401416968569805342998979 1.0141800492117577165349326615633700 GT 1 -479376789163863343874339054298144432.4776520136528570792195099346007479 0.5909063962770131047106609607064874 0.0200383004273311847335293666088949 1.0202417901499486847676110226745257 GT 1 -9261624871333399558607602.1968874778973694768116709845900190 0.3596579827949228259660413519781870 0.0874252257496126921527686869717183 1.0914852524987620214628744454917755 GT 1 -89914792678.4769562327744255347242844193432312 1.0651886918729596476949935710336314 0.0106109839565028507896206316985811 1.0106676818839737829027960653842590 GT 1 -7145842574364529177.6443659481512505241995136167322297 4.8054237209100321682229751134392823 0.0477948372838015620266512566950510 1.0489747603542510408265368162324171 LT 1 -596334272075974828.6982232163828933648670383454946320 0.9689577859501031951989785192158344 0.0758026680455825741882071102151972 1.0788296674204935854826074158412126 GT 1 -43829380749931386222.4877545684507150838480023337147173 1.4639833976409075593920626816814518 0.0540870908775620645398873784557005 1.0556047764066844563101591961355560 GT 1 -62912529934910940510808093372.4685125045378970347511721440015593 3.2635921689907325778647431992582271 0.0602702823368747022983878449768793 1.0621629794649596423736499947217121 LT 1 -155281577557558798794273250052926.3562955940404408825243688923663894 0.0916488468077389983669884803917318 0.0692560500311425683954902146033281 1.0717710664181968967104551406466155 GT 1 -315031037987076967599077840377514788609413.3201550686676351481689466580121374 1.3671962403973412056773380177232297 0.0901485790877665761950656225470604 1.0944739665246670668808961175348607 GT 1 -3983890323285640655164536049026.0487803211538419915131058164544559 6.5688084206549591973997984805222603 0.0302156052533873537751696945762015 1.0306815056482148963113433056985409 LT 1 -5.5519475534832217650619076235646261 5.6345562263936935660037403813153139 0.0710510087581714385221976387377374 1.0737014488427828226588368415793979 LT 1 -6342900.0907796421468238040646549270389069 3.5749204757683583946807650326088181 0.0825141042937634284696485686965864 1.0861180716988328157395556934069743 LT 1 -11142805717454419746310504632690.5734404394258981773414559531607928 0.2597131353737279789198533042827668 0.0636695815286421740976330399989186 1.0657868536109862583127035473882610 GT 1 -444646931107557097614333730895139900.5225777130272244185891484300505105 0.3956451700175036434784202935071440 0.0875730097041104023408762863814995 1.0916472073611535928437658853497175 GT 1 -5.6227538432263786505477368714276769 1.3289970667403398355784318677565232 0.0261147849134748229103950423428976 1.0264618312714799377385833685070211 GT 1 -15188747653153520841572765.2099590526224007990718999224226134 0.0035488017165711794341665281730976 0.0987372012617665814307941198429781 1.1039583893872986415150702856711179 GT 1 -4798.3290454395342686421746290297859359 0.1785544911741230700842747482855580 0.0504832797478001631877281164371742 1.0518021393511933831865724098223612 GT 1 -111994271107636244838115324069111657175717.1130678501883222133321253866454828 0.3539559682359641633050411615559160 0.0124179858365339718045749233224946 1.0124957333380789366538293208474850 GT 1 -80979689414435418253432827449.1578404262911429343014001921932911 1.9073378996084645870850631289341649 0.0560055651941116126339374601153269 1.0576350081867592585222966229684337 GT 1 -35520695492259213959417.8169150152192968133548376617512451 0.7721199924765232583368730788859845 0.0182264618991482230978086776660462 1.0183946101548450675074321611996785 GT 1 -16738267815782950885434636121598682893225381.7012852395903278223075746696859286 0.4031073061808548443729888055272809 0.0333231664941966124878910780613031 1.0338910343111924122521944282746420 GT 1 -207856121874084.5751255844049902406078697598384506 0.9371045385595323420790861646705229 0.0064546289479199211663728896576663 1.0064755501396249148512020738802124 GT 1 -184797011593094599009954503809172335.1478143585343340586544064730414223 0.7533648621161080304450676930219073 0.0289662710244640532001391203761650 1.0293940749650252041101469551277961 GT 1 -9222.6483863643967916271038046605888586 3.8846360671929287585487626119381561 0.0909328032336949318907001232717757 1.0953362637015711751389671990894003 LT 1 -128747249916189798989271191711825405.2503194247978259385457711558447727 0.2405685128582745301670144520484569 0.0649546525791909655485255330636349 1.0671602509542291387574230783578504 GT 1 -260928169650889831157.1510504914418960079995892040618486 0.4071896375136521433338273906880535 0.0649151730450880112532236443440367 1.0671180297926760421030821344225041 GT 1 -127.6095086239858921977931675461167595 0.2348497216825284280411268164484699 0.0693082306149176075842316732164561 1.0718271312967701068266547293679874 GT 1 -56036088493080409040394351839088896517.9491704307683548785448092022929899 0.5062145489451015361028491411206220 0.0700943697229224777610295619096800 1.0726721708038971215837356837089267 GT 1 -2883521268783714103.7118053297139258903314828466214572 0.2943762429173179222122265933125261 0.0926903693520681882444724307883620 1.0972715082393551809493051056627282 GT 1 -177660154141717502461568.7452060276070055157959656532699895 1.4020101457942607338391629968034439 0.0644635797475853795342177280749330 1.0666352027030662683075683156155711 GT 1 -21822044613831699261861953931.8302510098610658286165660002270847 0.8299572247716201497740010127209327 0.0663997830999290607687210734871863 1.0687069656832636776765058222180266 GT 1 -4798514868302624225925464101830180640366576.6130122422055894210697716729036484 1.2757457856789120344709340309140994 0.0759795074288347838511126467023789 1.0790210294790618161671967270071126 GT 1 -28071237722866811700235047996695385283.6725339887832635371557303203222671 0.3537283401179125388728684894008978 0.0321954199541724480428931046166794 1.0327250922040407865099439130570767 GT 1 -82693451088832661627.4952995406449566941904902707849427 0.0067591906933669920272382635374577 0.0975901342531202144383180631814309 1.1026864655112258852524279312122866 GT 1 -61751071032424363.8097948450779988491316754776624383 1.6601648293976443205810757070756753 0.0606971387456420058124451308167091 1.0626173158302779201714875742905174 GT 1 -624150212347269964178774555.3444440394257006507910872245808394 1.2011808914074693118685378912093174 0.0245042067964873897828106505955060 1.0248094313798201703030054182333264 GT 1 -57289457998072684.8702016702273339363605183278311258 0.3931516685462539185002096709189625 0.0683038045326008307227356990745295 1.0707484879650286208522242303650943 GT 1 -35124.7021292070135716295151264111460690 3.7608721870127274438217471734323058 0.0549384670572275116114164761351711 1.0565052393830773640084450531697877 LT 1 -249191315011009693304994.4401123383009833770167546851297712 0.5187707056573505972929541423620124 0.0170387176683623462776212114120421 1.0171855468623088945502987543366846 GT 1 -3847082498896306477075354464588098.5421013918979629555943680391651482 0.0867621460074382182241348013507229 0.0703353460371274162156464003765566 1.0729313449987055973487503283065963 GT 1 -2455398781923039289075412782.1835957409419449995468152529403868 0.0869874278219451459982903156198566 0.0219735445702228020620662179686367 1.0222185587714845459596592058075186 GT 1 -3394110136667845705094642410742.3571793660888814489190943000543005 2.6181211572601728892045381754210328 0.0639805002571356729658338176406239 1.0661189696629344226752785309676601 GT 1 -1280007333981971738979108239.2429710547897738227188220978365886 1.3792353809974063124956495200927919 0.0731590158705175826402523762877771 1.0759732662865322496484658105595289 GT 1 -13519111546644727062534882.1253394867961277937032000000911357 0.1690721032163829628553025885477539 0.0920092994589156194526389840182925 1.0965211421281312634951603470372881 GT 1 -109537839146790126141123.2204114140902791654416031469275055 0.4712918127118862904552019182205242 0.0091939719004310028532603312841204 1.0092364973123994828959308021455171 GT 1 -21203526938.3274702906160678984198278483227508 0.2809328861790827317699467467600581 0.0354255445664538502726430220119551 1.0360682537282481489129856596904781 GT 1 -75185.5603332408821892093122376938604454 0.3343172633738957743558268312963549 0.0586702202913245666653361865633372 1.0604617441412559271942021253490200 GT 1 -9329456785043185079095525699113610892952025.0897000770808318995356164503915619 1.3579753729399773881698296010359270 0.0658910028346925018297007305929571 1.0681621482416727027287276071585249 GT 1 -207679343166140.4452755737633634419496638254347653 0.5698409658104603834956474285739268 0.0362601810910956451350599299021781 1.0369339181978509714650957320346963 GT 1 -138.2583067528113501450960071599958883 3.3493190308819265280572213733027097 0.0755815132686300160496262242262019 1.0785904021542633807306315141205433 LT 1 -809673552220806601169998712238345391297219.8611854031402705006727709228291880 0.3614667470312946585444970017473038 0.0699546294922280231346775879590941 1.0725219085325809224236614418997854 GT 1 -2.5614194758641881048511233634761595 1.4202377114942038757292277546404081 0.0577442207366353171789549739953007 1.0594785133823676641864416250227671 GT 1 -14082888462778365400392579039874503.2095906300776071573275227607338437 1.9792276219724934697909222054048092 0.0472309797411367264226639726322330 1.0483827758914999252683476861501054 GT 1 -669189402610.0437818591666415344411019660009301 1.6684248515632016770977241544974071 0.0568749273705581055518314797676381 1.0585563724506780772742768161441394 GT 1 -166223836721228129821.3095532537312637519749245136449389 0.1566713751633412206649228833043295 0.0657451407565271827360701111584287 1.0680060094061227380938002485038026 GT 1 -15713017312549078132702230.2633345962623223268419076767647808 0.1429766779805538078685091633895475 0.0511593924136052128900326247191997 1.0525144527649831935384542720524413 GT 1 -33183982656.6188845234034671262893738844047244 1.2676498029759191783766806234568442 0.0922354257484323481112946048033805 1.0967702134581997479226920062654163 GT 1 -217973163271346648888922716.9566756535188112615892692681606876 3.9439090302318777886805165080353196 0.0531772111772661541453129703148355 1.0546433323219420798877348806740440 LT 1 -237622926158.5591032753030401694616468889890805 0.5879266684105068370205244782542245 0.0649624769125293174318221736609715 1.0671686188543492772007763833731933 GT 1 -19.1888994445385405285991593333777293 1.6224304168236227943417835147079351 0.0453020358532551748189340623251475 1.0463602564338171538493860045346140 GT 1 -4547793747020067404498.2486138960020843075855455816769610 1.3010354452189810869892064790493763 0.0270713019389791193299289612925694 1.0274444799941053551567695086864212 GT 1 -1682880173284184.1084285946613404404350019716672021 1.9041613493363808508657788215690016 0.0673320172478121673641399031219458 1.0697060013262577822340536246147039 GT 1 -2590863387189822914966124720661586.0266016461365803857689176245637781 0.0494786299014565729495690275685804 0.0463078601687784284932358690995942 1.0474143641936103087864700778318430 GT 1 -236967429616146569.4643130410877462336478091790680948 3.0233993123503134651764118780229733 0.0900337496077771217102362361860163 1.0943477676400727180478454780575745 LT 1 -26728.6676210145554095655986889230222090 0.2310902150097663481114480923369344 0.0970351695943975324432362630850912 1.1020716738257266507137802811757656 GT 1 -220383256440742.1374427404585274687074219622751789 0.0186254511174772801367431280797104 0.0609254061469226649149397240510002 1.0628603632558990804943664292095241 GT 1 -3849393379.4545713043803652983233661532636272 0.3347487248350602366626832662701594 0.0432485443656873373076949032211071 1.0442116332410441587469565872690136 GT 1 -71.7741651251343064730798486400473581 4.4083099226462103872565020637868573 0.0986405935196468225699155378833601 1.1038512035976943951030086643283527 LT 1 -159744558.9972285933247586989115367917744383 0.1558155296416122428117881501616579 0.0212398710136594358703709091222342 1.0214686828301980238312742942599396 GT 1 -11.4885017965786949087782955754003450 1.2617728578170890358738671213843554 0.0926645883264814640022440633812908 1.0972430938387565079233423222673618 GT 1 -2999112964971005563.1829177036018093005102913806444569 3.8077395564450967587451564715426946 0.0432551119855887211562167254486289 1.0442184977641180688475113755697085 LT 1 -4095367.0665528557455846527603846151061768 3.0925998773012637155715816183548950 0.0671978519157623326850953706732102 1.0695621605538290069702715153195013 LT 1 -485498737791169458691710.2513317756029544539253958301980630 0.8861190318564985194115247384614748 0.0357436007434919113161672787166318 1.0363980454040163038420182003623215 GT 1 -73302641.8679835222512911923597249140507067 1.2528056787147422103086384980787504 0.0015454424763750183762942235860695 1.0015466379044011602022470476521944 GT 1 -33721158069044951721190403863.0274835679922273733051627868376010 0.1908600430262900306254999381529105 0.0454862880254009817710904928249712 1.0465532703096720726916029539652729 GT 1 -105024724988351442.2419114242510660195047490378285816 2.1456338842930475249559345655696228 0.0752242570676350824174517606803876 1.0782040109361762393392309653121715 GT 1 -1065627292515848965654.1026709381831709819447427726285082 0.8923593891883485676178918047119735 0.0246829319529686522535074714262691 1.0249926628527424195229838456850845 GT 1 -2382632500324923.7236962428079055445478313298742366 0.4372396247413732292234325606911768 0.0551048758042293333891654084760116 1.0566813373341105954588560358279154 GT 1 -11340763816513308985.7718545094777765915633752709067367 0.3981504542944718459559595810566311 0.0249429959642398162173753489040082 1.0252593440156382438637583349422534 GT 1 -621349635078198422331354049383782898163.0724098849528514859863754677352522 0.0440621517746481616796669756172217 0.0344576474014851080945566531673778 1.0350653121010116793151188634403392 GT 1 -542369822145761.9521365772661247893732833341112456 0.0110396066948892121654176662713969 0.0099697252210348917480798627099704 1.0100197557362647517996497280045926 GT 1 -197732427112447105566591200126.1748238302479149728861538948106092 1.9676901051424878707184661932628991 0.0296687575531741151482732735198306 1.0301177787195601579258079609168335 GT 1 -258095711282639.5107359946298089595759023170709112 1.2967486798267642354021364317867020 0.0501547765092880599315280519466478 1.0514562303022416233025119647839464 GT 1 -50295382466451531161812412539.6947567391231886874231985604490250 0.1114987359460299058751907773825758 0.0840621848697379050009492369447527 1.0878068040248390862233658105457739 GT 1 -11842322498256323619422.8316092629708298482973927349987574 0.7224768952724317039165934892701270 0.0330072453743171287482238882721332 1.0335642761880575380549109585986962 GT 1 -33386570789.9874552217163101856034882020184779 1.8354486523498348798470615627547062 0.0873118655572333505387897097118820 1.0913610400447805232656216248815727 GT 1 -1721971306405214.1765065357578439485999542937482498 0.0372154607220304475561484815828655 0.0998449760624633690956009058184178 1.1051882816714657617702456266846563 GT 1 -1034270257310010688723613167.4174356602923014605166225960263625 0.1837656961424405049985158868122584 0.0505174794444634212828954871860740 1.0518381580034730004256714814522102 GT 1 -9026720863.2926734736424306220509943674972409 0.5649188242728440046873784763362142 0.0036398726762939419540893655111027 1.0036465131313481646872747165479485 GT 1 -6852.9033544652909518153416494440034423 0.6428457558259503765748838213154239 0.0414536197467986322455309572822876 1.0423373292965368482692360050227963 GT 1 -109123028411066.3197834534480469075698549656339433 2.3895841833342600910946471185182417 0.0739039465502139470589688544693428 1.0767773202880679736355419047655724 GT 1 -1108686475959261349242659594.1185486000469997688134691662503075 0.3944280862262276143685788294077369 0.0905003208424537187784343909870312 1.0948606337919758421224875061983094 GT 1 -1488410956307391.1156208161545540975903711367194118 2.1833669482276170366791357493514552 0.0833152513533135920590602656713095 1.0869916513877955569389467386230171 GT 1 -8644611592543527209158052247.0635950644344698878243183973984511 2.1512587298310729575656617778071675 0.0495149283980577960227100729921432 1.0507828230139798877899716247366173 GT 1 -66.0919562207788752875116498378753291 2.1402920217789085573514794650041738 0.0366643402362315470846108489995102 1.0373533715669945221376457736520285 GT 1 -2191050959.3220026622996332210939595457869981 0.7487136103170474740942989327632932 0.0426324234992001719505512793351460 1.0435678687964909957264472453706145 GT 1 -2286991230963481821512571381808636201458422.7316756326165970893684453330397758 1.9575052032124677392870609166324343 0.0020712703720651555351115032155603 1.0020734184191790195864888158079453 GT 1 -155933105283211228702283981417846250.0580274176313645727361455022122740 2.5962020186726488165055375362946092 0.0450708444854198747394852103540533 1.0461181239603258591226770095089423 GT 1 -178847778702315898346623800460149107.6050995028744382819826484155330840 0.2675778631362277786644572057067022 0.0236575470681131557393411821481131 1.0239418802052764225911514205058554 GT 1 -12606757.0896502442701414511893353209814165 0.0358120181327656567191896570197088 0.0436812790610535850620720826737125 1.0446640313893669880522528057143343 GT 1 -59011719544596274.6073021845945338965472672667356380 0.0320303151678702743511201110513942 0.0350194178703571814845907004840501 1.0356472999910520666361752593158752 GT 1 -77960630414316669.0143616451066017836255398462673043 1.2097362061594203364140560032502060 0.0919405881704380812204138399734786 1.0964454709910384319422632556935553 GT 1 -656473873758401922358803312.5597616549494279542867774668991935 0.0313114594275638753329438113782553 0.0045737519592137515834950926212379 1.0045842435655990779545041174975178 GT 1 -1216026902698.1577461741497667093375900024448159 0.0293223667564624298869394831558451 0.0062097525748937938896840377645818 1.0062291132801546785426545429798808 GT 1 -9491736725470321864087170653908758203900.6222643152262600858518880307012800 1.5524116029378406535759738753646456 0.0310574474837333884399749382434478 1.0315499541777456198072035815834502 GT 1 -722.8470350524848317993897972878316379 0.8566315837543790294489308304212189 0.0721359304643154357190616146179947 1.0748700337181530342843178798347381 GT 1 -30131104250940.2320913662190464138734234314806445 0.4847183501557587959333934548247436 0.0147229991304367042983903815917476 1.0148324581878264589789992317004485 GT 1 -165360565.8073532860550547737868596793485403 1.2560215039872234815335228948589895 0.0683489911182041915518398703081453 1.0707969884114368367288534320101366 GT 1 -45149026391279293889976.2244456686491256786877361117909383 0.3654618592382377919167401994495315 0.0210610381681459023474737740874482 1.0212859858602196407239480043053895 GT 1 -859805131315334900588065804658225223204.2437289401509767165803262755047554 0.9463676636558947237425193662247304 0.0186711068119262059993256699936437 1.0188476124162603082658603049410176 GT 1 -723791126321312681300226508980728665524145.7687739623101702095234982207218726 0.0165194525398114293864580220740716 0.0729354730763748600433818445143625 1.0757321075069792060548693486912224 GT 1 -97002688166257053.2005037492195697358069339665470058 0.3453858154266065624418816325049325 0.0358867926709678720148440588828937 1.0365465562779173745558253468178868 GT 1 -10755.7652124641603058926548888626260369 1.0348423543953792621551315260125200 0.0195412875206432386587985564852131 1.0197347428714355173452927135625908 GT 1 -1563324971126861576301341853573948015526959.2732176618892010946561739026433026 1.6001429196059835451568746210775585 0.0009321660897499284506548391229757 1.0009326008267450884911196072078395 GT 1 -19998814886759332781669798001.0205382827441068872506395783304837 0.4205028755817954634614497784716340 0.0038319707076513038916128288977317 1.0038393315176928494970777302385323 GT 1 -36800472314295611204064710925753770889850.6385562793287982852567046357536521 2.2218115697574137750910188786204204 0.0563215918018128710516230520147194 1.0579698401591797243960866821926564 GT 1 -21020625004613356795078209045171916097.1525277255527743814437880747069549 0.6237874422600523378401365589004766 0.0951986060373896715975821650242063 1.1000398135507651034695863338308019 GT 1 -311319462899900915226.0006951675577853596254527955663650 3.1562214588528684072927737892107783 0.0330233776358380479886764267620926 1.0335809592459313940554903330770389 GT 1 -7239.0245179196449803470802610835798953 0.4571254813806988410428041262037119 0.0322288042927145982672998678400494 1.0327595877158814130166373907732160 GT 1 -3842499.4973093037606499074263559428375813 2.7117803942150950702333200865834296 0.0313884556958640186302304009100905 1.0318916305375376488188202852608805 GT 1 -49689004539815267918.7835228862582350243584316426319897 3.6316656662046454020927289474518289 0.0175293369989804978226141249303645 1.0176847952254727900624104579833499 GT 1 -446641.9329750602156845991727895023807638 0.9468223028298339478047790238438764 0.0807761724339088476207162296806550 1.0842256307142723931076172129247958 GT 1 -754369041605513644705608205878049757260.4300911601851493343046448208432158 0.1961411814665680060018871599475982 0.0855849901288816736834360315381607 1.0894707516415993657733775114759863 GT 1 -840174574153022347359015717.7111200531925357242718055200765486 0.1863537743370352694071084339208846 0.0845543698352401305218737297513002 1.0883443047635471181326175827522057 GT 1 -27756432143381621315292756136972485047177.4949324588397670704775246368661935 0.3495835239422797419036060248653695 0.0346360985493253610856907854164778 1.0352501487785811811201943447166128 GT 1 -500772290694507817059447876884046584569345.5494136791689041200946638331318390 2.5912321429909577458598900376726342 0.0874191450796756890487736408341085 1.0956627554710028475048869739852101 LT 2 -37648.8140219524625084755521961624524289 2.6557477850301573399013537320486567 0.0264224619197707485279752262222583 1.0267778085689717941790594929843668 GT 1 -289943331512300760183802557135452923.9420127376952735203997057677358285 1.0051560765495814286272590208607936 0.0540454810796703440036462270552518 1.0555607883372440120807202672544801 GT 1 -27243823.6993721130531548087602694010858493 0.2278778885412484747738098998434303 0.0267677135867144437116905172077113 1.0271324931059197592558162331210994 GT 1 -250005261513975677686861014.3275662482486028935361721361863511 0.4632308616106909320081111430561487 0.0949991750278080262668787893630653 1.0998194237111435677418001191078613 GT 1 -173528491749480521613.7473328011228279062178433602135507 1.1907902750472094814967026610053478 0.0900237327477956925042965718835938 1.0943367597539615728532325419522683 GT 1 -1473446201315612406846111744.0153649840671736509420716281311615 0.2786313439809746805871569863008164 0.0199169807955333894053834739072707 1.0201179974315576290735640532147927 GT 1 -6433571761065404587769058848121504684.9795560583263371920166604164320266 0.4943796587490086197573021891972010 0.0752292275216815237466045377435674 1.0782093857175132198023428680610805 GT 1 -31310647889053527271.0143343868652002634858541882875988 0.6317883119719865893476035787337627 0.0225083973346593862145870379293280 1.0227655777832083015699473547700602 GT 1 -4996449783414880811417487538853973172755851.2219133492990010550897672181144237 1.3760788113249241282829369130765108 0.0614114328320832625931165685212499 1.0633780564248390990852879095291926 GT 1 -204994828417523983571037938919079534.6769137439027103704679088314167877 1.1155320816808576236668885760676059 0.0588869660256149390974063196168358 1.0606920254902272979091352059334642 GT 1 -102897096652838941870.6163173298678423129674940163824459 0.0970247157026632865483901913108569 0.0662716096305958599177931724076319 1.0685696856469213667022325775925769 GT 1 -62921683627912418.7227809711903908256488579222226141 0.2090669118817559083366842246799202 0.0537844565430603219692665090107740 1.0552848886774239456835695203100438 GT 1 -258633020061236156821.2897992015811008413544162478412234 0.1309563871158801371208695414129658 0.0357299001233287170473682074739117 1.0363838370224674033567534853699256 GT 1 -23886.6699864084350151149879744560107586 2.0810643333297143861811108728482718 0.0878030565787994984593810519886101 1.0918993654871728928638319856926142 GT 1 -26088101869331561484852243169460929.8382339959113125047495798743852546 0.4573329663249008840052500057532318 0.0512496574090970793389832303502936 1.0526095891752316874099285263569139 GT 1 -25768403673536805.5212542592341071932205166359972183 7.8131646095639240186357788553801740 0.0375157407061870179116274543412965 1.0382375669343796040213686662286823 LT 1 -41175.1689239166600812420978771695783518 0.9020579424323831248175375924777862 0.0700417591324157651304846119353685 1.0726155961358937416047192497046177 GT 1 -1572697352522935497654211090728806791.3616749542744661566927405674697811 3.8088873966675277836152397615798514 0.0150786910144744772757394938691209 1.0151935303561690688984570052193091 GT 1 -698730688173405156.4324403773774445342395642654696418 3.1391346092312895024373680833803773 0.0274650156940619073934931342595191 1.0278492305571985937171352909004322 GT 1 -22861945593448367477159451156474334451380.3264384009131233904686468223912432 0.4967095869396797717386685426415436 0.0745199260397928704874393766766196 1.0774426772271478324754271386720292 GT 1 -17162692054170151600275762758394415211758666.9857355108585825855020419282524880 1.1950429939171217613690647384840064 0.0691465504736784231052746056283222 1.0716534259900139589812764781629235 GT 1 -84188227995641045333314672050193092.4828401077279376947739075579838700 0.0241927654453823080612325012707408 0.0822579620605756728474024072270931 1.0858389322740725098547525132573756 GT 1 -64165865.1532035685192880081769522271502535 0.2130124751391258369063774236795826 0.0188123826720929530888124315747315 1.0189915866041499584816150279693094 GT 1 -2856409018630651138258581320370032164.6608458939216051994790719021932339 0.5229018324301821330713675604738808 0.0181011713648453461764204302710868 1.0182670017649779211601853673781066 GT 1 -18115633062982832130.5645070086467597073084064832222136 0.1044001397354491148530283621643570 0.0533917883708502530663723955747154 1.0548699866805656544871195372177886 GT 1 -242541987582638215109607.6782628593022242384257979075236698 0.5489988617415558914801105190494695 0.0657601509088564825617374574650119 1.0680220759780671683948212922539400 GT 1 -25764183598751662083944112662.3144733805723632608891863332751802 0.9127329413938889720595009533600676 0.0730585867676083644056032775245767 1.0758649158100681392793137013517471 GT 1 -48121.8867471658099836535133651151547615 0.0323116043699838396629353889335693 0.0765704253162319611408115382949521 1.0796607413911970609100116400017315 GT 1 -53.4215918193726972866286693114786817 0.6333993938301021856202601917751312 0.0479889255537122951079008615352923 1.0491786114367017019847004353437190 GT 1 -3915005348112.0957212962103673228071368370289217 2.5781724694290221965180998084250908 0.0480877353513167674156901207966949 1.0492824074201472885971748405465735 GT 1 -2482453588983221192212004147439824379101350.0857639932283025322127367520423910 6.3428963843178402517466981231016971 0.0440473448943159134114395012257061 1.0450468911051161679207754355160945 LT 1 -5588707733165651367978720072361580.8270646469975493579630461264583605 0.4797354137051271392382128789363649 0.0112326783351707815044237364778761 1.0112962413029495025623004391345469 GT 1 -5083485211905887.3029709216285220282161631909872832 0.3574380372544782592393088360490495 0.0363540504113603547284235440434630 1.0370313240435028278058534378656014 GT 1 -156993047115048033733.7712268496324338849644072634737717 0.4847155737525781799060563279489983 0.0154242990351995123835162843934781 1.0155444910558060066802290081446304 GT 1 -2007673086573221.3535574348771414963068406460089688 1.1942964805391146031286259109897294 0.0476302845455785237830214791305921 1.0488019630118955210197251598320829 GT 1 -9962828205877940886675467819810.4812262604791164567340508893400455 0.0092482964208052992975736885419844 0.0157648714867371464174044044287769 1.0158904587331830659666575398080616 GT 1 -315460094096096509823920223888311449725160.9085265514947070136261625750457675 0.4217650555998167215826838489013688 0.0635892188425614116671745153359109 1.0657010300213241964621488294750347 GT 1 -28704450975580665226024074529785512.2170113571038097699409608116001407 0.6043584271052544386362134786939809 0.0613843694309753414465934638459454 1.0633492226931199580716498735097049 GT 1 -17732268026977561690938375.0024051842114995433276070643011681 0.7343651615759705795800936259842185 0.0144421592536459463190927829379660 1.0145474623345347922814630917805766 GT 1 -39840533057664638.8078527634730028351415566262638298 0.4598778922025114032998857926247881 0.0736990841607016553385911553544574 1.0765561340156394160967198516583382 GT 1 -3348901692821749816882.1193336799011714126451273803731107 2.0673656032421137582865167286244981 0.0343218216388269875674405570374353 1.0349246489704114888376277133179019 GT 1 -1184582971869471760413115.9756991958567578596817134658626247 1.1996733304794587322903021386179684 0.0552189948873252259132342594950490 1.0568021189659094675332796166881765 GT 1 -15987773.9489336410220932618518172925594315 0.5685781052324708432481058535925278 0.0966411838969028030397194753925785 1.1016354444661608163108020787157868 GT 1 -223.0958252014376128261978363653120430 0.0745925065290384564402037044444201 0.0570535775401125980347820364432862 1.0587458140180353272689871111902973 GT 1 -509602698771064400443738218432291290305541.8167936205591592963000158602407865 0.0779900724188140134116376231531461 0.0503080649467129430342652361423664 1.0516176258685964547212860192858592 GT 1 -716183210442835125825371161690993048693.9646083755682484962820645445322470 1.5942122711670935702744703843276710 0.0855260970713146736107432735096853 1.0894063485417990632595596526136098 GT 1 -78414316072301295875023126.6955250557655865029631578064553102 0.0255161413926391986735006406751055 0.0506954073291464452333723264707690 1.0520255701509058701702545702320370 GT 1 -33074464116565008791467119459259961.5462093076307316952959028532469225 3.3715017712962235782453339207095877 0.0857867184523585135406266888679692 1.0896913851352862177614331199823177 LT 1 -3784798656676237312304698495085314710.9347956331007863814928322869315602 1.4910308028570096458981707920453015 0.0625610914045696546536561356529962 1.0646036874257219033771615330742492 GT 1 -4386393402409978285576924830.9793984236593603788522122110481665 1.3235640469530715490544207148524901 0.0881891003510359742546683555307448 1.0923226572832770527159002481481079 GT 1 -158343980372241318389267096553982896599968.4355846368547323268619891956297324 3.7917077426584020972292760727230597 0.0669613913406990947821749529848608 1.0693086977912920233960655935368455 LT 1 -128.9182834067646406898678355827101207 2.5463432388341327725189884540313013 0.0763258325096882523887031760743601 1.0825477567526080201594533503536286 GT 2 -1028159323514872540001768370743.2697075579406289985562271437423004 0.1473878291726764769850309331104979 0.0844777202938788766323226144626443 1.0882605790565122687359391533760514 GT 1 -188468284652577.5802335239221010314989646274609704 0.0008484640166173733748203011434913 0.0554888398135617801547874413601692 1.0570877761374446898724016383521264 GT 1 -27249.5197470127299954692302848088455763 0.1941522493739847442088719830744098 0.0492969782727197992031674146632722 1.0505535451986416789352508047114404 GT 1 -45701322.1299344747468651373939324178924516 1.8597191647363801251964284078114066 0.0168010693402407584703412458954674 1.0169438083430278864601122173476665 GT 1 -373736502359917.7832642082777674899092514171039450 0.9930759407446447319939396492453562 0.0905852684906380544614914461218826 1.0949540385698454611985458878305777 GT 1 -37347723726963361806757097067638.9773579665715182765393576851498908 1.1503778062168778792812973186218094 0.0891891364320478849258318614518269 1.0934200173626392132514887647923149 GT 1 -33829655600539535919864313894559066788475.8903267717148006130453261391398411 0.5408657026748657580021576175074304 0.0344056219388492923332713694139864 1.0350114314390964243312799434945107 GT 1 -3030049282908227.5264710831162213448356764109303548 1.2507444552461813569132486363637812 0.0152692363461256592427781385910294 1.0153870115652541501270897147342621 GT 1 -291532613489543.6533945351481972163366953975521416 0.0108374343681039978672401847948633 0.0564307097392666048133602709763914 1.0580854772720657859118195123543478 GT 1 -20713812725903855822226337242218175743988.8155336460356447464249665093563059 0.2826323002458075995012497453503103 0.0281491001646611968101231698297483 1.0285528815190826352522600576751653 GT 1 -4851424327358993463815094653338549950534.3330481799463015302204916746504641 0.0824865594183321795902060661814328 0.0105803313085436470519825174504130 1.0106367009728850879664934293931591 GT 1 -19416085925944877498385055.5960862316040786461953500837012952 0.2283057891966375132529693101273959 0.0510199494414271679074997647967746 1.0523675021331302582098465805580552 GT 1 -3175087919216537820465.4080743784252515159981519141406149 1.5925437515042854355458291769833617 0.0090079456265736097175000395689539 1.0090487624709451765622925518876390 GT 1 -585035997989488291447594.5267546582225306037967245383198028 0.2913827730761487126779076288102104 0.0444040613807888644916744298932331 1.0454201136240567723826859029734062 GT 1 -141825081038725676265.6495548917404309073912723820875777 0.6137749942462265531732490560236134 0.0168243087208630056166041967456464 1.0169674451214566219749050117243340 GT 1 -7006967030612.9118420698052782942369900942421535 1.4085716300746470415278673804967150 0.0874367925343789126282909872741312 1.0914979274689640005515012749675171 GT 1 -38789468005226765.7542967088995295280214012957931849 1.1615694145219548027116636993780258 0.0117561474222891758334712403601633 1.0118257973380103278107949973200486 GT 1 -125576642208547717043328414147361.4220161683447433265712028565494026 1.4090019779274541055856412456587306 0.0091737776423168447820719333249847 1.0092161158737039858824403943220116 GT 1 -71164310160832042485512784658927843811017.6971747292255666205558403343862496 0.2536987650347365584404247644851537 0.0549188324159556623169743810588242 1.0564844635535412310845425867021517 GT 1 -147071090795866820077173456059479266.1545176190731056426910989934923026 0.6392504617583798068668455457300402 0.0150561255506386472284299721687814 1.0151706196879400185031472361717607 GT 1 -2629.6030634002319178333651236459203827 0.3112020499299933545914111489126489 0.0685624138553062779677962989538126 1.0710260947873819847395517816443257 GT 1 -29620976865382970843127962812081073.8059762544588187781437968059755568 2.0232933802868447466009078223237286 0.0364425971858809981098191401810032 1.0371232155135675250209340293818052 GT 1 -534212871545385778581368472150597876.0240762437538760521610602985658519 0.3949569734624184342350401101761917 0.0856985340341558632679775138390740 1.0895949304379522892530706139180586 GT 1 -1434552714515652548.8200259011186232177593838246103822 3.3288625754006533873034945496497363 0.0956595769648988828928141497920266 1.1005494153223389255639224240339516 LT 1 -20602858600974850601521486426566.5319103038876987344601717351069602 0.4838552870297670492923127038438015 0.0520335956790736970066721401395054 1.0534362158351085625882820792858542 GT 1 -86071608184593805919.7334153468194425016770054440764981 3.1852652590740651010608188419323067 0.0319878798694682959206990497138537 1.0325106709879407211445995526541956 GT 1 -422458332862518144258991153079.8102236356610057677455579986776601 1.0892839226024327974218490440430738 0.0032691972767386352416582818904448 1.0032745527774667797500962904804687 GT 1 -1481611147.3268718430560227635857044375788385 0.9726460577261826330255241839599761 0.0076696160042885281559908691257235 1.0076991787627922621444310638665682 GT 1 -99433938.8254054957370439396868401588114933 0.6512576283366474587097130247397124 0.0206377980111417096170443201767779 1.0208537334861584819732731817967166 GT 1 -1630.0387421275178547036555644519540925 0.6647215482971523956280920653577103 0.0972913985075658671515006266284946 1.1023554780954930017245123201008889 GT 1 -613756361484697498533.4174638828421062192807661695140822 0.9182502466470007764671787736901014 0.0691586544196475148417521229872670 1.0716664291374697896601785558811844 GT 1 -41413211123512652753092233308.2944382988216232415471917197040773 0.9250499793903611755960982423913401 0.0234012414894483448483876802139290 1.0236793985917648180921762455662619 GT 1 -60024612125852329984021347047961.4990015430741537041097230959523129 1.3077200275231824208809469922947369 0.0671351235898791072624076141209272 1.0694949156220343167188696360947159 GT 1 -41368176013643695555341779.4381290611987576939656639533527027 0.4713837045297314750910431552370375 0.0459804376944367331830750693960575 1.0470711021826996034641926523214327 GT 1 -3611039434575805793229639566193365905.3846669304213013003683428154298248 1.0991930787451087438861106650463905 0.0901118678878837916329983219987152 1.0944336187728948399006166979401513 GT 1 -213.7891640302670413739383340154142775 0.3829270213529353508167460357590584 0.0303407704997279370484354224172072 1.0308105790019845447503403244515252 GT 1 -3094580479657.3711022566890822126202281540256021 2.7506373102075112393363862511836767 0.0634038781548724987869022866773545 1.0676484524706442678916132693549536 GT 2 -6338949442624770460625772795417864601.6116837709006355359013181050322940 0.2586110742073634339272159780350110 0.0006408011358821409335872998508365 1.0006410065366820794493885070180942 GT 1 -346655836.2927248730661606706556312012984436 0.3733853347262824624743991558442516 0.0053770863801619877114804587053637 1.0053915949416961563372045674339332 GT 1 -9808703980222522819876994246440.4844219626847446523063759294430009 0.2760340466561415774005534932600128 0.0858903136994992114388478546332079 1.0898047078349113168624910410034853 GT 1 -151297010332850358631998297808294039807.6777104293636426523142398929109148 0.6155321203173949088742841560835222 0.0974335216547636106898444274163893 1.1025129312715531772362298122374772 GT 1 -13627864904894546291800987912817421308246078.0735175512855052603076918995542178 0.1318845668227617876417048505699475 0.0239381825369309288864303079392662 1.0242293570101634697528617180284024 GT 1 -7496785194569599223433943.6836779546754608346309452037360415 0.4492339307778324360270702245051929 0.0708427425204817612276043265793413 1.0734772784125879383565650746771417 GT 1 -37030514686.7360140443820827350789634122416571 2.4511243431210668764130412287334175 0.0058819351911082859727537319687275 1.0058993019053145061855177703321935 GT 1 -1875751307329018978728035089099081045603300.3953607044926285318231122845737110 1.3298828108846950854270059889076072 0.0844131204656299993761468523117738 1.0881900209164366955094128989800531 GT 1 -3038858364339092599884.5422693250435335633607071642668354 2.2166053104383265796410037176198659 0.0115562021642042451028214086664515 1.0116234939961292492794370419415599 GT 1 -1588519671097191.1919018462794631678076588191405119 2.0793260120871630475795534223900366 0.0666250757782257315287319156047497 1.0689483108136062869160268875740471 GT 1 -215068898205791907146830985871405509954.7633952493776531771778100468549405 0.1892559306481673309456644837992647 0.0151805772229977178670548570484369 1.0152969817464674659335354799010244 GT 1 -23792723751235.3001564548994244910001569459354332 0.1400780755253643096666151036400445 0.0486900269853571341529597438005328 1.0499153252604574954061450581324924 GT 1 -598.5806112298029082885125371098788788 0.1306675815859391955643861899930823 0.0566501471731903500692374204830602 1.0583180653357534842160719665171690 GT 1 -7474452952995965588396281844148319.1773379157963219880953658551875763 1.2081413128433245627721144266653659 0.0866236952585464217194405664275056 1.0906073203879067395439723583956352 GT 1 -423979610195270008715.1544982410970242438432728020635087 0.3743372517047065498096747392343107 0.0162270238105700918607213620724461 1.0163601238033867235547421156225244 GT 1 -23220872792661274133.7577749787649438678975400095965414 3.8023404448156338389958692178255446 0.0036139160978442130185066031479429 1.0036204620684431403658191235241244 GT 1 -2364769596559.9282787375398327257160144396928168 0.0646500677930871972516337069022909 0.0683574098662096070036475812379970 1.0708060248273939575233767350250481 GT 1 -1018176107025862483.5049420208894269424313348645794539 0.2325955453679219270395974384194903 0.0555936777168414067140176853344350 1.0571987792959841602988074470344957 GT 1 -1732945756078621901964430.0206818794437578442208322955511497 0.0049034772167484660128566394678757 0.0336754783240446519640480516865031 1.0342555574221615641374875279492791 GT 1 -61627319563264457489057.8878290782186079110968164978056560 1.4933224807879963543110365328258434 0.0598860773209149281763513139740083 1.0617542167220759090581222916129352 GT 1 -85165246949126233852970.2900582215802748377898517711697537 0.1282253290184117626093473563204395 0.0001415337448698978994210941596387 1.0001415437617155252787474927697303 GT 1 -373105089524385011056325455482799578714.5213895544103315802783691240614366 0.7817674600451877162050248436285633 0.0879121894898563313556530881485807 1.0920190100886550197866652136619922 GT 1 -526490.8335274793623322008142956464248128 1.1681830702278453354078773461064198 0.0851900786367753181259496836529397 1.0890389715018269575410597637119824 GT 1 -6456873902426791722945332955426775291.3012268868905662971625644615439393 0.7683706849091846260125892615579229 0.0118617393878186571836804693374697 1.0119326511340705681242261608925298 GT 1 -34243723129574014700916.7514255002227806263906442390941533 0.6167311324404549515017747525835930 0.0689975946708405431278052935008536 1.0714934181110288849829784464997736 GT 1 -5865014235039799363591960522087319344186339.2444326932704083354632710618836926 2.0568745048607028509356499159669055 0.0848114190554998178913374772718019 1.0886251355492815320039378048544187 GT 1 -25415.7669151135916972728568161128345089 1.7558732601213926235632662251250194 0.0185484570274541845847283172971073 1.0187226368638530573204748667151629 GT 1 -258755.0273557165952166478272369993347226 0.2767157336468893366110801178147950 0.0928334234570587515459117501381788 1.0974291891223780952081411835050001 GT 1 -29230801424254923498636.0629280458037076908610142973176567 1.1438527171471299982262067306273659 0.0384154402217505887746294071739243 1.0391727721330909813977174599174740 GT 1 -53213397.0020111847933130907141103691426380 0.5320438033830316637925183926789528 0.0746284379340791097358883694933462 1.0775599334051130716269357743483540 GT 1 -90952896461396835749763669641073439940613.3539620554777830616364888609205356 0.8356775799355132545105939703398606 0.0879425012183274542803209190717431 1.0920522439854498762223375772968254 GT 1 -109426832907294095472.4088935562102329041232187330831065 0.4237401758936990528380443789500586 0.0863029636610184032600634552659717 1.0902562325649812802136736546966336 GT 1 -32667208933366092740449825.0956928599070036225422516918561007 0.4992161630424020189127415115626650 0.0427017455464864969863614734192156 1.0436402804374111910500135105131744 GT 1 -87.5827594442397145759883772135930425 0.0876651799174562220206364853601793 0.0302285799466628333838147164346981 1.0306948846839473754878748093540820 GT 1 -9783060086287147841369385556855.7020612815474958005113773546601854 0.5086660783593320651185246693310511 0.0783933320707462093223765079574061 1.0816367539003929429815772787595989 GT 1 -25599685.5257726046574885471115681630605683 2.2323481064785018745095625015584954 0.0068194664843437411371458469988241 1.0068428253029336748935973729920097 GT 1 -3169047363511667.5837093017825821380240842755391886 1.0065044930463564676444893721202107 0.0886723577822154154355783622983769 1.0928527952090572444401749420041667 GT 1 -7282168022507282.4866148742269190420341472929744111 1.8448901137924677374344435658471067 0.0259730357438313555215362317838166 1.0263162916815570412726605481728913 GT 1 -21112049407628346287678452851076184716.4659405079255142566902954001454579 0.3621660877251154501211494845105669 0.0433175691426156431769406704947895 1.0442837807842078314966414046196541 GT 1 -38507236.7949858939214899353328722458109169 1.1025510436461443116607587787379905 0.0826707823937923899494304848484063 1.0862888552282173381786794168481820 GT 1 -15493134738262124871.3690032349600733704017837319955261 0.1446882572489351243804363126710069 0.0044116668759106557659050553025229 1.0044214269943951363596968103934451 GT 1 -49077325407850.5963081883159831032907474235649430 0.2500567887634527816307776296384586 0.0340724202212067783417554615397487 1.0346664167530398749840841394581965 GT 1 -87927145976149806577942902577928429965.1990244960241332143222748377285492 1.5505415224705057199777867260082738 0.0278256269888216687010243482771403 1.0282200945092191283317365665937606 GT 1 -514152613.0103922345099243301511049051440339 0.1706766054519121731038079532770497 0.0773299871162171129502142560314390 1.0804836242388624204383967924806190 GT 1 -41444427811755359421803750725227650686.1183956474529894104373764221207241 1.0324577677512001879597425286341082 0.0304785479869662893772047713373549 1.0309526776612623041448226765891805 GT 1 -92441001894807165961280387850208.0094274546913148093715082343714879 0.9267816516701463818531175471610045 0.0715401421099080836459200629127779 1.0742281324141162954612617042376232 GT 1 -194551674427.1642846374712434452132715560196623 0.6443287753591472000141651416720070 0.0934260368083625286333366584283262 1.0980826600675430048124824989492089 GT 1 -7.5704108007370289472392941781886079 0.6317615832743052307713217703167464 0.0232437687778407161692492446977126 1.0235181655206881508288395997453236 GT 1 -3772077.6431446724633520005449418668519165 4.5010836745591586357317612936467039 0.0844328091761521480857878220079848 1.0882115250714847257849085746760895 LT 1 -1404787426274948462555667705237401937209.7687326565856668894044736122957844 0.1770345096769343267152329794913834 0.0591372877299711218390823850510768 1.0609580456090645538659843641254402 GT 1 -23850964778748340163075607182199513.6661117625789920229846592427390882 0.1919065527321746970968548112850869 0.0421297533868348386282866672757469 1.0430429521330449008672214272517086 GT 1 -84207069671944041043857598799754305777791.1133393446533252974564265276962062 4.4729094003404214304607281722865002 0.0294073531431922192914876020803932 1.0298484179136027388764369893401401 LT 1 -105811155301279430880.5198906750241778211318237063827226 0.8929744210114476386620259346861236 0.0593493800548249820468207777667962 1.0611834942648043346267577807064448 GT 1 -80972465407611248275119.1776730424477881865899016835878627 0.6530770192272138837015478689841852 0.0507794517623163985317880783344225 1.0521141067011088703745326823501080 GT 1 -204456335519764952023.4149796001197430374755904937067698 1.9841047642325722764258988785899291 0.0910412227473003198773234615886451 1.0954555353899665176880171770683860 GT 1 -96888376358588751043.2394464557670617189759623262409710 0.3241524606487203001047455152466120 0.0898324389054976868454993221576364 1.0941265633507728377303162336122114 GT 1 -4813298755410214506929303.5286787903281571506600718083473302 0.7703035937087540759423170212699675 0.0830526596957015562925430522747021 1.0867052344331736527534902338982419 GT 1 -9065035863130625319780039501320.3145744252524277234522185716211783 1.5936025693322254576360881877955025 0.0172198718899878687594265926039505 1.0173698582078155749059754854289189 GT 1 -7.7707671697711195738458610913560868 1.4446050284698188799456613219554949 0.0072794299018509747498753405940249 1.0073060542370383758570977040778979 GT 1 -67289279666545820821.3157262887567463238434552638782874 2.4044106184384558969149224806679837 0.0796792757258108277815517213722944 1.0830330563490532462974403178350906 GT 1 -12.5265863352478911516195111451733617 0.4071596599317101270522898728607659 0.0251777389751375222441522113304582 1.0255001209870518883502611603184502 GT 1 -53894630464098553032.8710745042411044482502233131856780 0.1300304368131527106042365351971868 0.0963567653903534088398415521316216 1.1013206484660279441412767657821819 GT 1 -9690261598260611918833555609963119328.9614980566328836486045629660051668 0.7385255550735005121283949052222641 0.0902039633068747238960845905318504 1.0945348400954170136782649046108678 GT 1 -1180032643227871973587613874826390343674.3202385527618336484776260692423431 0.5690089688331566615330038407743110 0.0722768512700770642766018912210084 1.0750219218155115249575837143188343 GT 1 -1439348220317839581473718475.1255788053462780325720714999164631 0.1423912280221636844392393202607573 0.0381316119429291452115948349268893 1.0388776484273606793337338692065711 GT 1 -6611950.9132170609330853314541016818314411 1.4028452812090062700663520214236910 0.0275267091231571421428741257103076 1.0279126682606809881765046967442998 GT 1 -1020614300585713989998446.4926411681124355539106572350637304 1.9213650913642176938211556518142876 0.0413559777535777516095923584502000 1.0422354698326275798249687039250201 GT 1 -6203621000767971718.6055624310677606966374257183846701 2.4472846552537174387715130694635152 0.0092283694124028606477988164442191 1.0092712146113400671721775954189208 GT 1 -395890721284494864039812055.6975347023379114218666065208467140 0.9532652277817272796572319155288937 0.0597633213064404224414492863740651 1.0616236495666110848600219075377692 GT 1 -150036508263458.1872541808955946300648464606774481 1.2080691784653306036197132653436378 0.0441741823565675601688171421703858 1.0451795816487599153254419706339023 GT 1 -72867315113156579211328974179583481.9558178096363700393508518755977074 2.1295717815473827154223700209099727 0.0015133295695718555267879693492010 1.0015144758093365678887707132462072 GT 1 -28.6534812896361075514653474423205782 0.4909939430440275575521164678002377 0.0033278273562694323563083127676935 1.0033333768890711175360665217673238 GT 1 -140985077762180912916860685981489236.6491807323680001753071510102598231 1.5632545606169367310816894303810919 0.0136853860817352181925333303375140 1.0137798942220277054239641872891378 GT 1 -130317041508.3901484209282059291376263212059829 0.9328012018419474343779399699389669 0.0814837616008779637009682595152746 1.0849956952245263361150233723675250 GT 1 -18757767225895762297293802710269034472031.4879114142479888933974657718785897 2.3452898913414232606649434962142126 0.0857022323866907748243126482842623 1.0895989754495294599824738993700644 GT 1 -86795194.8847884931309963800287595965208277 0.1002509239687913124797145996173565 0.0273717222028678202676575624421078 1.0277533069984071784643521125702588 GT 1 -281703203376527551.7254495182886889900076646871518290 1.1812296212520388999849797225976991 0.0320715589487454610149478938953261 1.0325971189719410114143782463091465 GT 1 -22323401287671121958428710642743476.2101160282905800467451215229756706 0.3516774774137991678286676523356988 0.0993574627248559386307128747687169 1.1046468400791203760386281281160501 GT 1 -1612490991007004472744850.3929075042169749646064256981108877 0.0004995139895725462776931474963901 0.0806715407334628697180930584502361 1.0841118110515863887873539138688047 GT 1 -35173987277944352.6653910880983471467987356699645378 0.9653576121676629840758867750903853 0.0445784096566131373984340353953485 1.0456025800574260651377528213046292 GT 1 -6148821875580083.4424376518703673568488556203597815 0.2475812447366863391586394764296943 0.0805369995587089303245979167800262 1.0839654745279053292044461669496226 GT 1 -10796.1152717362907287393297705621606532 1.4851719680266229765976751283641635 0.0323763592321105575893477059334659 1.0329120681678294858217909365298906 GT 1 -24432727227787482966486826015.6104323954715640855024327892235571 2.8214001053318358832515034221115758 0.0253931126362637572948409513601248 1.0257210817356695446157158095381541 GT 1 -30.9060934231874772592253985929746942 0.7558544687189322271343901925698328 0.0202429973714404479085444100873402 1.0204506945652852048072377634933337 GT 1 -24277407125987436169382230.2275442662217340002985717193143821 0.8195336089769765368280828521157488 0.0948782960854477504883090253872393 1.0996858648601697559614229927400133 GT 1 -1103863331620926022640.8783119874966158297060721486341531 0.4877520423823379600098076792149753 0.0855219438696203340702032358268096 1.0894018069225686889816372303229101 GT 1 -448983427367351313.0479198015139268943459037597034510 0.4317144973322054997950084681318130 0.0885321360016492371786462599672823 1.0926989416578886255090314329434025 GT 1 -11224248905160100723342288921.0077466439106970207271455503317206 0.9614278033971572787158267701892196 0.0529696173764784161163447694878438 1.0544241032869259763890005231314814 GT 1 -6529928073904509014219011.4097375106079866623684855406148249 0.0643851344270385360498993191440169 0.0007863879517092870045987945213377 1.0007866973169125957853048549246234 GT 1 -104978620.6501228766870906900149104700438325 2.4107592585705454460390901614329784 0.0240250396200637731287356345315513 1.0243183482465746429867090579571314 GT 1 -912352560.6029943752389912788988455649714377 2.9554550622147559610109501321590024 0.0853624999374666727177339792002118 1.0892274669996286913393683406157036 LT 1 -1172822799833481987325611991972432213741.2083950124517317410062492879287296 0.9590342990628187002755711567566157 0.0777024108420048545769025693747749 1.0808873426894563401306042895101593 GT 1 -2530793855606.3172843598883569781610853030334515 1.6456481514028430861973667818530419 0.0128556018555912965559205888242914 1.0129389502044697577269278352513804 GT 1 -584740100332537873103705216311.7176015977308360761063936325884346 0.4904690578549297725949254870773837 0.0973747339631026246720585842346451 1.1024477994739314353130391609293003 GT 1 -12772361786821679.1202634414460542285314347934177502 1.9003949496525976378397857857082971 0.0907952617437840253040598605446365 1.0951849755608657073012351681313886 GT 1 -49792580628665364443342585216198462676652.8335880974027065017668997609971987 0.0958693798184946073798756138874319 0.0849063168611159450996546515931718 1.0887288330035631973427940151878850 GT 1 -45615143755659814980582353881.2332464787810666539584565283983972 2.0468736604130100933532650631036676 0.0480580554738174444800781966671517 1.0492512286908531052955200346878086 GT 1 -1564320926957564053221040363003703.6434566285666694272738605878842800 0.6691906376863511628306933723629318 0.0628715799181019418888871450702250 1.0649349516183936887782146561291254 GT 1 -358065399700938042855881759609.0137856961332023258562194151376087 0.2729643685188726200647193953641647 0.0165192094450648265603363610523061 1.0166571730621885228949229547876465 GT 1 -506.9477863996712906075323905254296614 0.7674331307222052475009170855723124 0.0224721099403496383996121153024933 1.0227284554993140002742206386112518 GT 1 -792653677649438258290221963168340.1484245435628313346172313692022469 2.9691108782063691336192610974815871 0.0207101525351108212944564283952509 1.0209276154439285752454335982144242 GT 1 -207353527359428.6589868986225067279421749739113746 3.3894339423102336737904624656764691 0.0463003458072315662573786054516451 1.0474064849927345954664511123165466 LT 1 -360567420061917006311809788771870713617178.6936599432791642232450637916650033 0.3974236801983547187870880426288860 0.0929544190645880936390199146329302 1.0975625755151546867037830495467649 GT 1 -1762564.6946819343229602902758307296593719 0.1585839179866045203913887205091208 0.0786131159811227052193815076867207 1.0818752614211447726214038534521978 GT 1 -142439603.8443417047091843574816342684738420 1.3891060031705733272919426616805105 0.0309820283401841565948326530073676 1.0314721206587998502592140631621211 GT 1 -1301254089894520108133685653.6428047092899079515475207453438483 0.2678747266937352696209494890398533 0.0042386111264977683435967737618511 1.0042476195029868032265957479733433 GT 1 -73967209722122554.0247455873030245157055164036895754 1.4167272081104238836120816108057881 0.0593754704793023871834741485776495 1.0612112312223530327730710715600380 GT 1 -12470004856.4795599882175299042165345722059690 1.4078300578066026784419479124378999 0.0104791198794357321795146571912087 1.0105344124738627999174197159542829 GT 1 -66467592296506751355712.3295553944914172102543827096975349 1.0384929969410574536798039378985552 0.0287826330540496156568780857323672 1.0292049768907882850231446399472323 GT 1 -2262388370805153033318.2707997682247855917109252585810841 0.0406758824246895948363150247077418 0.0993992635060148998312300939516689 1.1046932533335376945031952470794537 GT 1 -6583174083.0615841052941678166179097910025645 1.4488035109522113954707686745850038 0.0731810273710177145803479736930463 1.0759970155188776022619442973734717 GT 1 -5624861.9121409170805773882956008288149802 0.9081805236921179514568721286886715 0.0958861573026660536276771412963075 1.1007999943314364908815944164261625 GT 1 -483111605551979867557936033253248220.8696984398754093515397992244358038 0.1375586812704340389838840920835424 0.0346779009449259058821609302383561 1.0352934519315497391678747567205118 GT 1 -59876488528375.0887497661651487705764979143684600 3.9238219207471062673832797203189940 0.0759247546098425883060073019073533 1.0789617762511217808051156643742204 LT 1 -848515741328613592743986352550616826339076.6129656910645549421824913111528597 0.0250204165446636794507355319786417 0.0467883428696126842389021347556959 1.0479183043627664901494736350176879 GT 1 -10785264933540814782047016168211.3859854175334798464047134305714635 1.4617586294135527832269800682666886 0.0073126180997721313071951664285176 1.0073394863565086769527922003505911 GT 1 -460799998.0419603330794634000139563863069299 0.9662316439154240753753558811190941 0.0407381433042147201450232459337165 1.0415911895501399304889199667584446 GT 1 -26142216662825899.7697388167574730924219979825029805 0.0324449787513027362410339636448496 0.0985873914090065210074321986596405 1.1037921810366484373510570211662512 GT 1 -18431836738350663704705012884.2314264124754788546731026201731977 1.4138236887307776228660410813327613 0.0686582584945618166887179780557031 1.0711289997723337167090444615675609 GT 1 -1144201603872820281485084398.9721092907961607933620140191342515 0.6674403963826985141627969286141183 0.0802876685938188584075965834715654 1.0836943410888035274874303101665772 GT 1 -1153657075149430199434240190594387.5962034858463418968636019626362606 1.0989710134403860801896908210085768 0.0422071692418738496912816309360309 1.0431237762153124215326306292696876 GT 1 -1027442.3476245566166438619206061158781367 1.4647248415358267456063675376305397 0.0404432995511056273898980741495480 1.0412838715347582510771970276579150 GT 1 -1560106114135471452658257546402114730689.4915209029937822356908346384527388 2.9265883476429771863879888882718221 0.0658039840546854331179767623696664 1.0680689955931925573852245485342610 LT 1 -25836843984841608732434518648340160.5175167731158661543080922965778520 0.0985640994260697355229261725216138 0.0313010713258517180283489931711337 1.0318014184922404128385805666287347 GT 1 -1714683258984119591925893981624373.4167118542390837214601932631771322 3.8489899047732101874950786391005391 0.0668733222398572578595150751877553 1.0692143126888060660458803169060207 LT 1 -1817313026665.2357729647741519475349938819539133 2.0590428469209723566057597002714167 0.0463148545750312446344020713386049 1.0474216982499681289809175871215119 GT 1 -149771387747526.6485981958000747568587824651666363 1.0116839030138418874449875245997529 0.0009945111420311306361118702846046 1.0009950059963562413729480257623738 GT 1 -267432551.2732234810875230989659687962670334 1.0182747965036958231229375091971783 0.0928756141085074641803015768537464 1.0974756983673998595749012994700476 GT 1 -726612728045833.8240817620873556533285298134986686 1.5373608293836447519194400135156850 0.0372181832883124116264119290472091 1.0379284590931806205717476467935346 GT 1 -578121.9233175686613843755317291062107542 0.0678238431737018552581176246851858 0.0729595580166943528237031145637100 1.0757580876329426745954762452083367 GT 1 -9992810239828435445211668257472139912873959.7612527720295536193462989248082584 2.4275251157002437896404198478786394 0.0474792668239269537955871523962779 1.0486434051041937602663505890799645 GT 1 -5635873799971509.0067744975762968794565813069262735 2.4242035071632138519237710826804926 0.0308133718088987235418136099276406 1.0312980868837029472585540220304080 GT 1 -98.3411213269986658436668862232336408 0.0679095150374257358643014909897034 0.0465560404799934928546622877398359 1.0476746291140849656286688248786292 GT 1 -502250030800913599239883020982843577.3111649201978203183449721806554218 0.7520252078146856482551779178259012 0.0870882419385384831053941460825520 1.0911160535932239593455199998676660 GT 1 -67971.5734156700609812266498078651930557 0.2506746614140491170645248898893302 0.0114449166939754143333737741389745 1.0115109137904367742321429787721314 GT 1 -89920479885277111831628965903518613715.3257552069019746074715817224011142 0.5758122197315694594235003522182657 0.0812178220936194997996379437905138 1.0847062054968309702137625592525882 GT 1 -12889188650118225060325696467847028.3895533155005016247428037509943662 0.0780569998726497517058707105390811 0.0125048005039468588603157084978321 1.0125836434884957324293107668614995 GT 1 -31604382458770632361559314825391501977.5852110474406762949358698072609490 1.5762142577942281645697991645621175 0.0934184110968294339625524828160051 1.0980742485316167801080687190041024 GT 1 -108378990681451743.2983823443768362764641161652683907 0.2217237169093030226791827749563796 0.0559588459153518569911756127116109 1.0575855183582367519164819375693975 GT 1 -15303075603562592833310.7070928678961651944507132793068033 0.4263933437854030157456963188629037 0.0979028470544361514874163743772661 1.1030330563542727818500453140844361 GT 1 -19880992924511817879352205463.1717249903445618332718723859628314 0.1526800395174623659814814744441816 0.0764979794496429736826096520417086 1.0795822914184822252367722631365304 GT 1 -370324167765623140631544322552030338915772.8984903967338505765507447707351964 0.9391995545073661875947705641595473 0.0801804462115040952400793789315696 1.0835777653628819903222103845829926 GT 1 -72912.3874420271656622524704543597501886 1.5095755184431557167819124246949979 0.0962602259664705915983314438630135 1.1012138206121497547439947474446704 GT 1 -30196011409711595821729893398.7884713391841622021116145965621155 0.2126748128592191525768521016241124 0.0141825089950772172087471429718857 1.0142840419133819085485904383034728 GT 1 -2176236315914921311423343582208145438747358.3085855525717083333045819950108259 0.4054140970921030390669405528998202 0.0186059050032035732955152397086114 1.0187811722623118221871505693151117 GT 1 -1142331992542913030195873426.4328394240519250308866638699986035 0.8355967547234880059560607498117781 0.0420382840081784299894318105612998 1.0429474642400445802130185992663908 GT 1 -266992133923695086035.6549879745135971078114387222380304 0.6482560540878223521416477770966999 0.0224219103718830174728649580159165 1.0226771032258319566619202449994869 GT 1 -9230263535862386574480368.0222329808395589583019162105188634 0.1242397212665656473923007353589901 0.0322603478375208457104619437230480 1.0327921822578792087237573809709180 GT 1 -1604718707345.0937679723964137906820791028873791 1.2674033396355272278233477340694049 0.0845188967821955236942112054762647 1.0883055560223743785390195021140664 GT 1 -8303948507.1928785526967359163874869968703143 1.3787614319658960880436109906537055 0.0447605396229680101638897289756253 1.0457932260820967833348326050191222 GT 1 -71270.7693078883276259620419235097556592 0.3405005447214360997511380542294712 0.0093764170773962003779187703258476 1.0094206524057380599155059914501336 GT 1 -190595645918269820690982.0417042901054497144684827587579942 1.2969916988343362873242973737505989 0.0346251324218945585601186475578262 1.0352387892641747482499192462103197 GT 1 -514758265939198515686400998453423.9057167028838853260492874007303676 0.1136355914790786881692157334681313 0.0817935519728281367078771539673907 1.0853330247268809340821091227107369 GT 1 -468021014.0650136964996275643886397564223892 0.2814835648465169157330612507334529 0.0752676029484870353967545640776633 1.0782508838100207058709080526651722 GT 1 -402321991729.6670465138703362743461922761546627 0.1974462830785658146565104881727191 0.0157721355187857644194205754326648 1.0158978391432537686325072462601007 GT 1 -230.0545172837858136676459124382876754 0.0655168863061357474912499765941330 0.0447997425196842182894657700429264 1.0458342667873912468389338901787839 GT 1 -75198894052011159494532211851750.5324195182412670655860922072589117 0.7677233922122066321182128409530475 0.0891915580742102978408935659831977 1.0934226761422811626063093715823608 GT 1 -9495466937.8455642979208732976789218649821142 0.2874245329648881038275416721573705 0.0175993547596794871678667869508326 1.0177560647894742063935619966513047 GT 1 -118932725507918466.0018732142411689500833328630024445 1.8096684110263895424775607390967376 0.0370243371556068789527034193897024 1.0377271397314041579942666795763675 GT 1 -34511710716970425658639975948978630996.9276623209044812650905305006761403 0.6889593656159505123654805982595938 0.0741672349548759497772906390179323 1.0770616599492973568681486113568178 GT 1 -37730189109.0074291031378875221246324794288190 1.0769726795368388162866873404501566 0.0498686689004211119243476083717277 1.0511550606795551838238461147363717 GT 1 -23473885514.9093235499712693564435482897664627 2.3306892076328502722904269872374473 0.0022783953836382721630210153556876 1.0022809948755979406572968343134719 GT 1 -719926214137628364226168084.4164161194722295784603509701353308 0.0072182930994233598465501891264186 0.0173599426677172201789151663876775 1.0175123934061451608517285546793322 GT 1 -535029249526946138991438523253379434257.2238170322753561953295059647720212 0.4515328714907290165398162753714284 0.0464057330356972988721013356302408 1.0475169946812560702635523742795478 GT 1 -465069970581447733.9604960109519009209666533097369473 0.3002968281227229398197665231519852 0.0492958986164849046237933400330473 1.0505524095594387203128357918351041 GT 1 -282423959815598231814.6100073311012389277473248375010322 0.2470358078238814096933563915519585 0.0916675106956984929041165254754996 1.0961447897596075764569084707411397 GT 1 -24356522296944437414071760655.1733024301559864632134506492212997 3.3821845716119358078541619503438459 0.0971950509529206831588645259624551 1.1022487521673404855107611561518880 LT 1 -1354407511038651177846.3056085304282903207848403322683553 1.0609060811702464376706880556076930 0.0707805492229190704252510207761709 1.0734103454841783316922778265829872 GT 1 -93423844256688922790606735229302.0154170555804572491234304385355541 0.1575068335402886601039872667653088 0.0531897619970317332299011857881090 1.0546565881318988821426397359260422 GT 1 -187472298943997686351016.0853948966132367363942719192957718 3.7267369032280740257073585644043624 0.0698596158066171853494974656020723 1.0724197534811799083794001919499984 LT 1 -80315507632767379029911244908217.9220838795559189692657171820466733 1.1143689119760697741077793478069021 0.0917764517156916990398350885056297 1.0962647321317332651958160876651689 GT 1 -6767408934213.0767728986311084664637776247155385 1.3486686818262537537846063403829796 0.0187372619923258171318214339386635 1.0189150285606819174602365408723531 GT 1 -6773588453295011561699477361180932564411805.9603407079935831903689434291703875 0.7750273063207252864073603820680450 0.0793849399564793080507623508727016 1.0827132887891558492396559537457836 GT 1 -1000390376367101333019950343603695967576530.4083083738078419589560864529067147 0.3028413458953245797354393994260303 0.0237770078528328083307882715843309 1.0240642431049884677888804413789555 GT 1 -2156013605217335.8328872830876418897497163170716842 1.8750800912034753469645636173206011 0.0212017189701010151364491449220233 1.0214297036167369707334257997949602 GT 1 -2891757030618398.9671875067899769175177682743069312 2.3887910800657117190633438366162340 0.0364852756077272820909994663121720 1.0371675090521961294500816112673716 GT 1 -526111476794.4947123324688581040754175698962183 0.7519217628621821519105560130715706 0.0435629115602503341369901495581291 1.0445402649364052828553912669703419 GT 1 -12713855.4908360187181735218184659311248387 0.3327043823766294966603420926988012 0.0587297546788374069609381657153734 1.0605249911260016566087227496924548 GT 1 -72131121503009796476.4317587388569060334432206785739141 0.7326251307591616487373839152150783 0.0450373644378394189310840141640822 1.0460830643326125946404696746187714 GT 1 -1989076689296806964233337541017.0745698585222693667283571833976191 2.0184665668686648193012711337817239 0.0317713071788442739270409280816712 1.0322869666944680071735482710592270 GT 1 -13629345239298133065694.1891660691568116026530910637740531 3.5220199836990553888876205071205278 0.0613520487621359075084069750680067 1.0633147888830190681121503266601387 LT 1 -6079880334982938.9671170064570955727552960740099536 0.9454078648624813767704031552631663 0.0270894881476451322458310687922325 1.0274631724005219696669851020709921 GT 1 -161162491840757.8477093633410044983186582231712925 0.4483839615626793175577399868349146 0.0591675698495551622337326094473564 1.0609902316087028394948554129143794 GT 1 -414735639158430366519.7773953860160822548457091498710821 0.9107344976576452378428018137010731 0.0464930583218662807645668010365938 1.0476085737603676347937640450220938 GT 1 -564732.4614341274689424769470382288941854 2.1680983198146226513046839616771469 0.0857148499786177682287701500128155 1.0896127758539907624698275070322253 GT 1 -70572185070578401083752.7952007588528780208297353881240871 0.9424596084852392100308723118347669 0.0769734186875748454189674793889769 1.0800972460722672732874744340658216 GT 1 -9303727582379109169854.1278051252837521615210788977572172 0.6372394388577448084171781301936505 0.0316007380007359638936788005538374 1.0321108160010683791314909005236280 GT 1 -493624675693779.0516049096231171463674212092804705 1.0133830882030564001532112453803235 0.0374363509451961341962358492402607 1.0381550861185083820202886657626345 GT 1 -1608650.4579964469779384423045769999729333 0.7167198295983468379455335352844232 0.0776198745462626477222328885261148 1.0807978568186795509338060242068248 GT 1 -1597817700882038889503.4070720285829166714570405411658863 0.4029892430532301057817556616806518 0.0439719360095676060036107765693865 1.0449680107230764818994316747721579 GT 1 -10612676470803075525208283728799.6546767683148246158748943795788088 0.2990854820752094804216915477279311 0.0517927087409228534797356727365897 1.0531821389643996971947560010092765 GT 1 -7124717738864200982574.7089248537068914941017531033381927 0.2436254947587251208723203923576971 0.0004774745261308434142746930199757 1.0004775885533905811558613158694233 GT 1 -4002434195479886134960943327474649116.3612221481702913257257915621137561 1.0140799981160497384285635431021240 0.0330893164931051054032653249756898 1.0336491523170503032535088302736570 GT 1 -1726466.4952975897635207520908110736815133 1.2253156560405749909219503000943309 0.0822721575314793136835726002789521 1.0858544002161569300382162416588472 GT 1 -9480944294.6916913092094327713551581560718765 0.1121751347635492707598098183675552 0.0673606217733948922742006449730663 1.0697366713661486421953391120086410 GT 1 -406052311.7854947766056278799757288969338741 1.8528223711649288599448398829474657 0.0096895791346513031519345559828558 1.0097368285723999525860515546284834 GT 1 -15.9703105982642084054607017042128407 4.5546935318335922425521373725719162 0.0548731881654419969269424121314802 1.0564361680738696483275749959719693 LT 1 -368414306165188570909969113219076541040275.4210278128870172513647864967633473 2.3296859053666328892398120587532006 0.0300661049378612318393075438582484 1.0305273592274613067328768283028595 GT 1 -5.7336703232342068616080877741491144 2.4465874207589954140648154620966351 0.0788902918873712241988895515589935 1.0821761313489623962794735795984312 GT 1 -99.9473074319577365924788497157145639 1.8779321554778320557483679488075847 0.0501949576376371623314855778176623 1.0514985340136956373331894921207431 GT 1 -210566462374770.2316898405188826097244117580229470 1.5194019603376276144612008896470788 0.0081896802407800166448962073231004 1.0082233999003528094569077305829290 GT 1 -213135327751870414878384.8547897409232037679797221528672863 0.1900525036264083865257176344039286 0.0970445377626890342365044742100684 1.1020820487778546605001653081524774 GT 1 -2150785966339485215469898162349428153.7209624734785878926578204795722227 0.0273259859627858938973892537938698 0.0594775388901535274673752955503239 1.0613197484317573769233732361830241 GT 1 -110533579980466983984880389840.4364802896732125565350651895716106 0.4876543521616229104816415466574713 0.0294101589172834225331052048131415 1.0298513087021902491576169386917147 GT 1 -48940066911466165737543832559844051.2538055344386746721135427242445795 0.6276232087962462529003389377673483 0.0880612181098831717981724251866253 1.0921824162812833192201065583237431 GT 1 -5512614801104034637697162819241732977632.8859411101537113884886435965111232 0.5788125189998091259102960751960686 0.0028076124365513105651937774275063 1.0028115611730946539786174878101586 GT 1 -2101613930019751548681.8526993534512090163059021836010101 0.5065096865686959714726048533614700 0.0503986209726281247243040218784601 1.0517129834685126468549077066221710 GT 1 -68962528889162614921824067357799269308.2690280411438501847869337819106420 2.8451598294007022620141074089351623 0.0148583343022730789390246682517631 1.0149698251082129328561705140140654 GT 1 -120209633820068166324743998117060.9603040387435130280602571684564667 3.8144366794598406200041320868036256 0.0685456773833695131846931054359855 1.0710081265178774556160105782873495 LT 1 -98398752.3657923754300222215372654293516026 0.1510503034324199939207741381523548 0.0056417775469066715491287354210743 1.0056577524868902248403237167767073 GT 1 -881731265231060584226.9720654747929909949937532839087695 1.0337884041322357520674404043254207 0.0918805095341415634560470997901531 1.0963793116096663655993042493347802 GT 1 -41351448272305221068676192319046487339727.2471169401245099303507299599883474 0.2042875356320476511244026934221969 0.0629205432808466930738121474875420 1.0649872012790230768592601180607389 GT 1 -448603233305553548415156823560695550.1997354630308454968354803780197800 2.3140125132108159140760311537336461 0.0029420510250114507593147047893716 1.0029463873643712697837588387851756 GT 1 -6103053011.8529984493181079310224445039037134 0.3796092021600421228238806037924201 0.0485539788003306354143526138757189 1.0497723240709492030589151982542924 GT 1 -5052559055703988707591773122574282562.4973648660083829887208589936629598 1.5244346354613188819690109031046055 0.0510674835321955712750583531815469 1.0524175930504930301896723400979260 GT 1 -1716727745782735897680389487644264615996987.4916127101676497415415010107726166 0.0668379527662309117917647075814501 0.0761301201424606600080141309152990 1.0791840399218960800666500989287503 GT 1 -60967650443529007845611280638.6111532626270055524394707415467050 0.7345238480936516051860011025880042 0.0379698900830344793293200847447996 1.0387095295162581697771602262272250 GT 1 -28597928212189908.9579424463239058795800591925349186 0.1062586705457777503780079286543112 0.0749782256532502120187835777575465 1.0779380019124453154550680949330031 GT 1 -168877517851312124309504761294406010845.0128164938695289803085332254538147 1.9189063039435226203680074423513522 0.0966052410991266260764109842201456 1.1015956573050579642154474246140381 GT 1 -4180976685.0386281190027150890546850276817237 0.3763850214251399534141880435435365 0.0174929088152161782335204056407978 1.0176477177738925944142304451655425 GT 1 -220036147906.3719197065923114133363429626399759 0.1606094562800864209724044574713255 0.0754095085976790945564572165539643 1.0784043514930916917205378693008668 GT 1 -7534768967538210945469824.6697839433144065884865540134244752 0.2589224354104192287876426009752856 0.0989630819151174699829635710377589 1.1042090476462165421263947975794259 GT 1 -369112239424291932098847177495104.5945452483152415385544368596000448 1.3086947285385165764191913348784184 0.0164587739716907603104519403719560 1.0165957243616823022415190774858910 GT 1 -7253647053437275140023168497459618949.2798342146663531613468810976383143 1.9377763687181105441764966774930335 0.0939426856255911384884205195881964 1.0986527140411379746878461198966177 GT 1 -321602049837727366549384293068980125.0181507092250399631146798565485159 0.2448522277802411193514646553358116 0.0423809239607814036287687518373670 1.0433052042609119613602494464216345 GT 1 -58.4176135016772193774202597806222417 1.9626714574672145907408256229975397 0.0766162621318903425539309725652686 1.0797103802099734505918792103599334 GT 1 -85133666356371904486877.1695903665821277571931557437079288 1.3455053885495218402188817131350010 0.0654529073801300314444910215525489 1.0676932599695248461108492842848323 GT 1 -1069369931341510.8319827593074375883257394860201743 0.6013456244746377835401889355824755 0.0514772514667949385072832349404459 1.0528495062012563479688624209467473 GT 1 -888813405050483.1570819097587294109636799236757044 0.3537275149412503595554543572966318 0.0078863011020092303352072145018491 1.0079175624405685611235764375841714 GT 1 -575145724942695791258.6005938441390872146773142687831159 0.5150837112074866927301614783474584 0.0168399210236997737664871830761457 1.0169833247113753550293722099791763 GT 1 -2858.8272755047670778936221043780306252 0.1467719583404485299044032935219450 0.0648718556476021880941327873840052 1.0670717063010115717276003155823095 GT 1 -12392.2853509538320260493767114914294842 0.1220765899807883814296906391366750 0.0467134463069071019990267630868627 1.0478397345929981133333095892272713 GT 1 -1404733397888084583.9223684615285342395215566937136099 2.6829336261037847209302258687904629 0.0708846941568062911007471732392613 1.0762252034617442111661529370681386 LT 2 -14031284912.3266657283530371881124760306235985 5.1933223445122155711372654462003103 0.0486003909495045488417478157973837 1.0498211059042679841179459431035455 LT 1 -2788029339697548785010845083.7757721549295253752632003451697479 1.3989202549143928583122698548747051 0.0899082675462167032454948518111600 1.0942098796574459005102582599282251 GT 1 -854419017360106449239959571.9516544527859255974661166140560126 1.6502521313820173767910384597432312 0.0632575690168960552661471427350405 1.0653469214230724724933490123729017 GT 1 -271338.2055865028296704144602303921109413 0.9753411504474637158427131242246869 0.0556130817823933531461524169025674 1.0572193258175795939784856664118109 GT 1 -652102054669287384314.4479912534225207072535489215842673 1.1027529863098708303107899879713160 0.0932435854611523587112094574130110 1.0978814266353272861034744657692928 GT 1 -944467226.1479130671726905882306482081330044 0.4240994766028136465129691406082704 0.0858639895840309085708058076121171 1.0897759107038502126006089433836572 GT 1 -4316358359004177346144303849202651.5080192199954039604379079493993302 0.1679207665630196054735713074637833 0.0884103081862455354889484304703588 1.0925652894698963689679334382538763 GT 1 -1336273380368057.4827658993790694992894780815440412 0.1265050598331669347059692123315999 0.0799018596330814932202652196444877 1.0832749403164829246608334915440102 GT 1 -334488648210083480428.0894092846855477446637952135614423 2.2105645683546237338178711042302592 0.0256875701241338604018743483829402 1.0260232568821786741419889702892010 GT 1 -219966834.4425837940722283138294682931009109 0.1711719949167835291384270364739334 0.0367538528654289351634279604325677 1.0374462953441643144740040798340896 GT 1 -370186.9164198390900334913919585936979071 0.6356579264292466404525602171819162 0.0018549160846218910718878134499483 1.0018566385718381284038957843151868 GT 1 -2722616054044799.4280300432620201842751279571822789 0.2074452655876583543227436028842004 0.0032917348650067325562412858743008 1.0032971645428650288276645059179746 GT 1 -2267929736.9055973177046325069656677101675762 0.5238567686295159819914571621653885 0.0773321651429836508075450747442684 1.0804859848112304617400635156678959 GT 1 -217147619852512850209763655405.5943393581664859369196977542807481 0.1641933152965693976942989446238494 0.0307125426769615039318701178426257 1.0311940575001980253377853580889140 GT 1 -3137315080992777391426524311.6507715087280440066539359278871433 1.5615011390031670202695605014299422 0.0908354595481815338522874606197243 1.0952291885872017193090919584044135 GT 1 -56628103495485360281653758956.9986190141477810112689497827382467 0.6537015794687406010869613774474241 0.0333016053532720433448357188728940 1.0338687301659737253535249263914722 GT 1 -863.5938474641992623598824641207055874 0.0899937086797567397428251755991122 0.0254546158304839279617490654905503 1.0257841893698331930545967044771456 GT 1 -67571484246877006963540239896877032.3934274528373038385093909503337254 0.4033937371352548645722696656535096 0.0925250521133809046222071467851683 1.0970893188587532594758500775581019 GT 1 -9190570413356.9017571099765583092528655409418017 0.6063029104238866764415834385375676 0.0249820652619062973082265729015392 1.0252994135502954853023996975738468 GT 1 -33058360333433143855408336189770.2129305422004333058033517110232214 0.3144542196648506913492526954004055 0.0840242841400776114507807671498211 1.0877654257293851352241050829481797 GT 1 -2016687021484197411212008362893794944599.2404236032053994149067580888944062 1.5141902305616871079577103518583120 0.0086109371952043020346886856408866 1.0086482255275323100065120113401938 GT 1 -443492786303183839972514681565996878825158.3481313362907909288798952930124376 0.0044322680079972181501036019024732 0.0461470985866892458916441821223871 1.0472458108132246966865113592846478 GT 1 -13022358199449083669565734858673576940.5717647542189774896359427508220799 1.0356005121706279078352140540979227 0.0499845993001413097956266786465267 1.0512770832559424899018710658224086 GT 1 -3870.7438470013106319305065331921296242 2.4254904888996243295055182525803466 0.0105027295548911700383901749395307 1.0105582724626656408236546911667743 GT 1 -4525341466849222771412658751310955741352227.0847746868044272507167590153266398 2.4517262287290885527944932913653639 0.0521845015856357515267796635782007 1.0535954175941959885761894217310533 GT 1 -3758287724761092277276765585519604854609242.9626085716708935911950886669076496 0.2115927429009281663909216744791505 0.0576655113351976957239458665003494 1.0593949839247207083059383883326919 GT 1 -345521225410967.4002578718323638698249157422403992 3.4150770777481839496103291496110042 0.0516387701615206394504596522124042 1.0530198051725774210033885049723438 LT 1 -71733028722290961267546968409950916591.4021988957121917041841006921228614 0.3442772130449310430118376994465196 0.0840078789751737782944920573034619 1.0877475158462813264085415831714117 GT 1 -659516330061848240293183520776098644.7746290387312216678362620326215427 0.2994464854078879204844434478105023 0.0356832882341347012763731780776395 1.0363354991525600660485873829231023 GT 1 -205961866024860838053.8921192712377169377836005454918631 0.0386662817545609789756738534243973 0.0630673803329383929187061152786692 1.0651439100369253773495021233582571 GT 1 -19847082118358982970591.3068309053385248325367788531102902 0.7389036499327792151449994271337893 0.0321336042968674898641211736570479 1.0326612221991686472722568606721168 GT 1 -28336533166452102731174483747824.0835991288453376216825117613317191 0.1858190968273447185993413604691053 0.0847408991700304310118037901237166 1.0885480834857820569079804778322447 GT 1 -29468172833426172542428943433876012.8973329734982274723513892640074748 0.1137608894515682481583516164701836 0.0093674459798365113155511756633269 1.0094115964362523643649514094233662 GT 1 -8839695.6927019636961401267231786616495445 1.7524292077340659571521906806319279 0.0641124182459975511870546781523232 1.0662599146813963166043102065357080 GT 1 -6174251512.5049198498980845447146525226429755 1.0695657309704174605700192557803256 0.0429379741235865100687437478896593 1.0438870768014251027577959427853778 GT 1 -4632547139766355728073258740828058239.4024208016746714470319882304045375 1.8123051700774680634620703408791637 0.0812005978567720005202507503506983 1.0846874588604530209763572780983842 GT 1 -94665525070692597218.7527355794881330384215205260223869 0.4671213569133327296661095847553951 0.0262277974889800403827994460101188 1.0265778810188440846604330325386146 GT 1 -3.9464743958679026555166311709402579 0.0827262299414001833898046894327799 0.0975226265815228140999777061838605 1.1026116600938413637853516640019126 GT 1 -76897672392088622571.2969564780387103513302711113671959 0.8754758685480817963825734216102288 0.0089158711173561212731367140371580 1.0089558553364348747429384125263919 GT 1 -6426726636.5111525995776886991547447200069024 1.7543944813602357835491409359070399 0.0056887193773358143188719612695503 1.0057049617696446080620541848643699 GT 1 -3574014756.1574788001662819290195258102981049 0.3136867957151961149908964402252881 0.0241038277990302028343270186036076 1.0243990791695275758003607241702149 GT 1 -340712176901354950730123556.8716063093601401920294659558275348 1.2201632697748382073088241927308265 0.0158788702696189081826221028823910 1.0160062901864901434511839778823334 GT 1 -53989132.3291842224112048098723718757390870 3.0879166554864478314911580932845571 0.0474487191148404257344693260859795 1.0497928661873259157912021874439427 LT 2 -969382210587612659184147080719059513758.8183743371661401959306795014960135 0.3887317960029974855573023286093957 0.0322522658985376252442233478796133 1.0327838309360978067254750796750944 GT 1 -156.1865933105526636386195199718477355 1.1559578090855135855485452459089368 0.0831928712605222187646531744420622 1.0868581573761966835513579213223500 GT 1 -1247595343584122276945497.2090940543997583261119815593006909 0.2720237179424627545481000037712032 0.0903904337535033005990494815200824 1.0947398196194771794179684667087846 GT 1 -1678736175617.2677346193380263663463776129885751 0.3942213249766911762379596585130801 0.0722578044905325365812156633592752 1.0750013913544017761833016313737528 GT 1 -13817748786074626972260585779043.8539929283723274068479156439586527 0.6752530517475583448262922636126481 0.0377025017756987303913181245489074 1.0384316264108561822093015858855042 GT 1 -140398343031018957425.9033248742272216930208462921512414 0.7749222264286557663489514283442803 0.0854821042807739859159251281313690 1.0893582424862315166982536751656467 GT 1 -346912018009869481511746545.2840266329635848649273618789491756 0.9349524980256573122176874024794400 0.0043061468139483925868317327972974 1.0043154449665474800694675375085364 GT 1 -1127823393800256994935597269470683783.7867434929051920030871919210554863 1.4370320803315781994038842179366111 0.0436615920803068043395524177771498 1.0446434453884048354714414914616765 GT 1 -11432370413007126776787256.8183590003937181452811471454454420 0.8716195310274100669120307366143285 0.0485443602509969394667922193939716 1.0497622147210745672524908040075476 GT 1 -4136611566.2294802066516617962394565699601221 0.8192524179335778116133929094186063 0.0532384344959720043887704060339833 1.0547079962684806018112146926919235 GT 1 -291184149884250777687601.1693704843214942342500488665664145 0.5196101615395930912228072270030331 0.0970799825870529252071424608464960 1.1021213037816108520464682684224808 GT 1 -2.9848582907222414968606304744891868 0.3631289635036778837008036931440733 0.0147185763167230292369104159739645 1.0148279692940605346172761466883856 GT 1 -292507208433858997.9921791271318848138452502691374670 4.7957596390838063169627688857432597 0.0452114748804764497205518831551582 1.0462654026882099528862050004441160 LT 1 -4185624.0739569594656757631822930676273770 0.1782325803542272183183271350405199 0.0249592649209977410842325224269039 1.0252760292888242817283468337262876 GT 1 -21417813197346449830696926057838857.1910452502171646486720688594256081 0.6379782853580253175960254790346035 0.0855415499012749724879296379113563 1.0894232467391928462500410361685499 GT 1 -9230380012330350.8513163986836619894655516663771489 2.4321899637144478537274496674222154 0.0303558955119763964440766346978583 1.0308261773995984554706142434305944 GT 1 -15965.9032601563002621124712635844737688 0.3562042623695268196517147721086381 0.0327268191094325821079563104468747 1.0332743199191700030124182139752514 GT 1 -22336147347741.8045561109291213222274051999282486 0.3790232013690161058506031710791420 0.0055953145596537876328975869999986 1.0056110269701612825939565297320750 GT 1 -5181941675609579798486995651093.5653680652823833023625971123055960 1.3061274812070524648358062468720568 0.0548599197616307022126205115686969 1.0564221294173527772387030331437052 GT 1 -40850938922266955472579007749802359444.8039585446038747335700192921590233 0.8983823775324414282380520496914572 0.0540240968274961798508671881478574 1.0555381825881896469981235864932650 GT 1 -1054116614499374.0586529107676654347357881423977895 0.0039709125423383546589446304312154 0.0511832261789410060901966517399449 1.0525395719098515568512818674524673 GT 1 -585281296977117408923020018.7694689597599730088485218329866574 1.3119841095146262115006785623935093 0.0747591937050372697646086893344404 1.0777012442202910315595720622498301 GT 1 -8022737.1615187729446181579620406501206162 0.2722017076904961669711516410061326 0.0914142166066227609101837592688300 1.0958659724957572260201685803203336 GT 1 -65679890842372116124794273616.5376986335787519810590665642911290 2.2167516346197442320228817459619892 0.0993720012354568350436732653957015 1.1046629825855460646578833449087401 GT 1 -90591699776.1417581788765230729796945950809495 0.6452027153363595406954559709991851 0.0970336300276273198591553911957746 1.1020699688141848037917552327405596 GT 1 -410509.9404920615170887911267819118329418 0.0282324852868886933801590846800953 0.0338639429076916602731278226887667 1.0344506088362138459910478619485969 GT 1 -43239895721145.3927505361414006189984175113316464 1.3167753140718487771518826384134515 0.0673580769089165984179756394121431 1.0697339427005296841651845510553844 GT 1 -52351253019169574004568836.6721287195666106464458818578149530 0.1380479130291476843733688754951353 0.0471402208594263801137028385466387 1.0482875224173631236576327545133943 GT 1 -3017367690328.4299911799796521509227834849767578 2.0370176703564358350358991144056903 0.0686188252187569021039265332707417 1.0710866603825446919818164616447389 GT 1 -305166201.6416201898667187623708319973358551 1.2331483550674801744930670232356160 0.0154119961671436544848791634134403 1.0155319955298870154303673003167804 GT 1 -34941453107152433671630.6798641302843003895668095025314389 0.6247076563193721722149377057912555 0.0636166515338625578787665564935390 1.0657303260244130379384663005128006 GT 1 -18982792351782535.1191636081095392502263275095442456 0.2282832975926730392621688727660376 0.0076287094682430913339605978529713 1.0076579569141121892159862545582988 GT 1 -12220399576465461197696469156759167690998.8463440828374628882324505084112450 0.8382923603201152326265315871014714 0.0003507533017995829852482855176829 1.0003508148301268745586238149328744 GT 1 -3.3538384168055355110898970359110663 1.8877992898220942130816283503849485 0.0465233708965926777540656899644174 1.0476403648834726198781475937981811 GT 1 -443789965.1826552527094799945686780885500702 0.7444869636369202852693775793927551 0.0721093774676581565412621691626784 1.0748414167928960640509911473520769 GT 1 -1688525362.9247891071014999369933748957417501 2.4742921475769511358521139958283378 0.0067721985573751682720341038853824 1.0067952339531133599621130963600370 GT 1 -345674799072584.1560269966182477044303109493228156 0.7301717765674475870996352461096618 0.0542391225933768399083804572425706 1.0557655141799990225092274142086923 GT 1 -12087888896072779.5131526315122613762837706172784257 1.4938441309861426369793617411360568 0.0020390825056937141256867485802781 1.0020411642648267068217719508857647 GT 1 -4128335841686.5119652377940026592508805747116819 0.0263150784109967100163473149077127 0.0043225296088607462489239436059893 1.0043318987486410115841816669776865 GT 1 -1.1369896344593227493484021880199124 0.8229723213750405672886852303905901 0.0682796731960609142829328793804641 1.0707225878656650588411619423762872 GT 1 -75.8811407173083620338910385148651886 0.3547898800071784198129416948032485 0.0556968057986656950533208961173896 1.0573079841059633390424673389599809 GT 1 -3841932234777663977448.5503728369546155587173386634514074 1.0610307550379686414034288951962366 0.0230634815877168104744766375615134 1.0233336050869460560902642818461545 GT 1 -6451.6130545507745694655586730592580365 2.0759824293430577737114364970447191 0.0812512140762898690667721527341489 1.0847425498995445372873713806984030 GT 1 -698957316728940291447.6929007763587152366532079831774716 1.4771468968271085515604828600326185 0.0928066068473133482377186064510345 1.0973996287151873934364035595901733 GT 1 -136975336642088047813720522137854026708414.2999202530046507120227510565737315 0.0566716399996853718620681799355544 0.0721118044213881543231794605510240 1.0748440323564603358168140411397195 GT 1 -584911951699333663076643568138807.9124498736344065899305903564881427 0.4462000916757607294880786969533447 0.0225664248940220736994751922167822 1.0228249432873611335634720488357524 GT 1 -1327019506366795567364221254177478538230806.1457112684671280695102262662812494 0.1869386619654612352439652588294089 0.0666749178322112548613473743292123 1.0690017120605412657952200777281657 GT 1 -607442239339213541665.2721401197785595165443308668558203 0.5088026030628828703841598891550083 0.0437981729015743163513644291418759 1.0447862720008848590554342908295630 GT 1 -10495113105821216176972329665150916.0708864062311912750590544579633740 1.6050997935662011753216039505916281 0.0484659381186342739060502455782230 1.0496797947980031266939233254366576 GT 1 -1812949319774554094928432031.0963020221771688835911143401340787 1.7907046055797106371304074025484573 0.0557258578270336047560713562321117 1.0573387501517170972833386225127273 GT 1 -950633946653559.6390079558627347126035489169419325 2.0442630525253059626237161851680983 0.0379278753645211944123156795547133 1.0386658574932591055442392516889822 GT 1 -97916791644.6660821060074840117627796140845663 1.2682887444242294485065334850195719 0.0945141639224643853892132019678609 1.0992836438820177299382213295151493 GT 1 -13468457014289532657953922804429041485444661.4575725685267351933230814115738702 1.8628802683583474808948940621462750 0.0322104937164996555799267200576744 1.0327406675381813223898256313581411 GT 1 -20882489703855113581.8611439461972831129339517565869232 2.7466244302298825736231083431130144 0.0767488400468519843490619755364459 1.0798539688699146775408823055304533 LT 1 -6951653925227506925568280536314457.8648091297963139780371164908132898 0.2270850370886490215614066066004630 0.0528938106551759629266535586168142 1.0543440597225232778166454594605759 GT 1 -148406326154887117614408480723146764002.8074328137850057521858236150330378 0.0788106314152481543839553008869894 0.0106544593161674623629575313774030 1.0107116244729620826871433757895850 GT 1 -216530.1322252794914685216226198573097120 0.6158300226399071499491022070717353 0.0043215706548143709750840512405852 1.0043309356319560409840805543458434 GT 1 -4749876619872798471193815889888892665536.9855189808450280942391669243102946 1.9875201081023250767773522564619929 0.0515581726570377218408020996609619 1.0529348227024930591233939056172189 GT 1 -20097114998854773109830284580770652991177.3606100358383383866035530188038317 0.3859956672206000546678988112843086 0.0413229369206526694022556055507004 1.0422010042095441733319405824533095 GT 1 -5580545955577329376529544377712419901.1487790751326147635618525384213025 1.1047197600094408682802071809700309 0.0111132802589497099994238518585975 1.0111754941208172212266961997133947 GT 1 -1939780726213926023377544998825979998670683.4547724501740007905011974214631037 0.2521997468359945003120826524279598 0.0347735859186387212817272157786137 1.0353925791724764269170899328996273 GT 1 -48127166315142522959782582294945435544.2266211085296117911690081172795347 0.2243215408636702362738879798210492 0.0566066950426494026599931864588313 1.0582720048739790676871931766912716 GT 1 -25916891970737548010469331631403841453778244.2421408044406903000821079255522803 1.5301637819454135292555217147987727 0.0485642243628240427663389692767059 1.0497830925406571350238825528633862 GT 1 -1287038346525197397.0584983369881694494855149067790940 3.1712924580874662591861861253704150 0.0764186808195807761594683514119809 1.0794964277994400272974808988576249 LT 1 -71015471147117077107894175.3591451982053379354137221040178759 5.1827890125233453682890359724486895 0.0860463457435832313463504816346278 1.0899754153164315100328565345599216 LT 1 -23677665556054808055988909835204.6121654874392137027902684608766020 0.3192855782971363373269711796265971 0.0004004241134559876187234424747211 1.0004005043045989988321839777523464 GT 1 -56383174535.9969896701485269931444284117143640 1.5703880452561697390130745711095989 0.0606434348215282108598733423044074 1.0625601432279713960082105413105852 GT 1 -4086745374274808175849073712852716747.4089733266885989396549170623428834 0.5974596945367537628564909319935878 0.0790782265193560843754718419361241 1.0823801828372403183137397714502334 GT 1 -164170796718.7926290440351129333764304676737835 0.8321123897704082498095170547857704 0.0668430582694648397823248055859177 1.0691818803509995218187608758270864 GT 1 -5.4325658756872639443483303984233702 1.5617492261940237675904025774986445 0.0802257701516995869936096317710125 1.0836270413939360411071125601587334 GT 1 -134573089037289968351915068317405821020.9130855156180887970723725431844237 1.4571380394704579788339908481359517 0.0936420969121175364742148239624973 1.0983210144246996464513120759074635 GT 1 -10974370591563869464264.6681461696425158735178162243444341 1.4845048227246613368609058757066863 0.0089530111670341540742579386624186 1.0089933302031078554174614411028726 GT 1 -407402288777261989844637286950.0031439477923094118586695734615161 1.4521008625520306705329056013053268 0.0902533699455883116675985162971616 1.0945891467512912015859625470624962 GT 1 -13.3719327453473419109887365767358563 0.3175762433048556902056377833693640 0.0889062565051780125859619758642920 1.0931094852655728316456655279153858 GT 1 -739270067773012585988074.0574309906880958783716040438363558 0.0447300171260956742815388045655805 0.0204293412276886704997298175684773 1.0206409066063654881318180189680580 GT 1 -338382271111958833696125951857845.4401713268366217254149261764827706 1.8819196423013957443536677169049130 0.0337294234564096464187142050118968 1.0343113840486791449159666423173683 GT 1 -988305438983121563350137375520.7407134394372182144964941134241964 1.0009310103389471506760838920134944 0.0118755896729809385329085983763212 1.0119466677780786501975495163681154 GT 1 -374282339831256223261656154392.5356244074166264970520175782205418 0.2816401933727103225469836459091434 0.0359466889126653928676940306666949 1.0366086839428723499495443164421437 GT 1 -63560477824912257067394.0606856226638611451420619871159475 0.7423643559450986794541493980972821 0.0436809814599335505812997168355607 1.0446637201949218595698195835551188 GT 1 -68.8487621437041393247254089675067199 0.2867619210279989200602434239827097 0.0493373089909218952093005093256757 1.0505959680928150491836708095647058 GT 1 -1600289059712930.0445186072029156034630424707985845 0.6138980193656760574050834882052836 0.0267489284832562741636197401605355 1.0271131915245502379638212238215456 GT 1 -157163411249165.4695090709911922516570998149255614 2.5151925644028992344024622202016289 0.0222861002358803519213038507414230 1.0225381877728378704710381988649632 GT 1 -8691644332032.5299008871901984551301095648135926 0.2590442640469082626959007640625745 0.0311583289411206535429836501956876 1.0316540746017340871748481930643273 GT 1 -363761592204303923363057651.4848036464110222355367769611741994 0.9069374331908831856713831291363055 0.0659466066535459644297801639597632 1.0682216760633998601895870131445627 GT 1 -17855472538258311237.1859263893040797376323557859453471 1.0295170348901203303054735162507854 0.0731426718613758893305630031317373 1.0759556323392669915853286699581831 GT 1 -203921473887872264.5281255572874284018086892147580426 1.2994481935675590300031750295557903 0.0831854018675707453859731980964819 1.0868500102291138910594523427720106 GT 1 -22227210641495392429243278982.8157699833972134471160306894418390 1.4345218455537979418015280650556097 0.0975914038685956676660574719226956 1.1026878724288769072190635767243782 GT 1 -6597094953568397.9997903557329894618544295788819448 0.8180514845758926145071885692247961 0.0481069630188503512662812188463665 1.0493026066154303114430135616472083 GT 1 -159255529243375561989082945450001.4345285695566013808812263903643455 0.5900081919953341073620443015081430 0.0020374095220950507249610237906357 1.0020394878643113749635963463804161 GT 1 -4696179758126131984601802316338085.3888734929523784657600307677148193 1.0281432381420132684592023386083156 0.0437579679011764003193842886873995 1.0447442263217811439489999881722785 GT 1 -73486706360631425373572890042973687667.5639638307701383841174744823721308 0.0860339364709928841137032158324316 0.0743444860322367470030881654017902 1.0772531287043648251686187722118321 GT 1 -310008150025602720351370350153912.5225552740140070721119606193316426 0.9797239439547289457491610458267208 0.0517761907305196720657218972767578 1.0531647188636652224599576348299065 GT 1 -3287358514279456700133022.3938372590770132104171847315056483 4.6787911872230855622564566174419740 0.0143178430178809401803378769666136 1.0144213323492736674413926186125337 LT 1 -77351484834209604970.6097021609441726708393310309411178 0.9985578856066378465994830547994963 0.0830478435568919652596370984464388 1.0866999820855742952306190317899103 GT 1 -39172825595743243929373547658396152086063.6655969510229250744005167308130180 0.8835350731873488560021940035057736 0.0502334667824505768317883803565814 1.0515390790979806910815557461737551 GT 1 -7349637.3453755354061174289761763917171741 0.3741637529424232004518303203776073 0.0952111521794643130123741532169790 1.1000536798303074595763184089721505 GT 1 -548391253366859.4852801440994960913683732966710980 3.3208748697931501185360825971634225 0.0670534098525815419018149535047766 1.0694073250601641274083978694799141 LT 1 -9119420711.3980890064209649175274543585563784 1.5473265423347244492302463799950629 0.0375322691526878814282427787061251 1.0382547397746228123235738100605768 GT 1 -12596.0959306741476881404390980001623120 0.5386083462461766359028727910624402 0.0002705774142391984442264830409373 1.0002706140269122705061553123540696 GT 1 -146041821525106652707148360601543.8733806392186077299561400259172084 1.8060433642433121892298933487051784 0.0791058008874418132117758127757102 1.0824101254248800219865527342617494 GT 1 -20546462083746845.7492338036126406653639068492641372 1.4494828072195465494924200137096368 0.0799772890464585465859483331188166 1.0833569234246740783700861925971011 GT 1 -119785.6186539580177588851594059115713432 0.7337966562627799507271908727278029 0.0049760547589653543925891031328320 1.0049884765442363981804558834808169 GT 1 -662313.8154850969128424818952419707750949 0.3978039089914160432785793494394135 0.0118493712116290886329989013724738 1.0119201345670281034613212516323286 GT 1 -265995.0582553363073678681830544557056792 0.5930303869354906139570698351863232 0.0698036235884269711945639847917976 1.0723595576936291493132530679424209 GT 1 -74759707736675483554447141825800.5042739226131312854624100399293786 4.1988981083585708008126875235847401 0.0426800337584064108952305329857934 1.0436176004191743080311073818498899 LT 1 -640684425.3299192660140196188572982368484492 1.7246612287332362092653257633246263 0.0257116683487875986579708676367593 1.0260479907580251369210922655157388 GT 1 -112994932700871124635371044.2010508234812643624554638266057286 2.9762540754382896791638237292813020 0.0699165631166044785411044057611840 1.0724809797802519407859169728953582 LT 1 -1298750465031390329999873.7192939097311633607868130951514060 2.0510221411241435698720931540235158 0.0445060234849991276256462605853559 1.0455268193352842302574933385170342 GT 1 -256935310473.5538355799542184523815725258183592 0.4612038009832047724256231592392994 0.0936534209255821112684476738239042 1.0983335084782821853479344485532658 GT 1 -69771702531660230951146.8168128219231456210913801036174744 0.3663505197342125916551578549340564 0.0587708450487703146976943236308516 1.0605686462474146969627768588678434 GT 1 -331527481978709.6309991333829749189115206705944139 1.1304757539154154749984392072533615 0.0916959105881062214587744858196448 1.0961760562140462646717421491780510 GT 1 -266.4594469040902810416646702450007519 0.5275559095923325640465168537332209 0.0291445836392840732380714848644249 1.0295777235690141857575640981364314 GT 1 -122092905823260024.2319710565289188831293485765440603 0.8327145678473421775266851000483771 0.0374573382478205374733875805293695 1.0381768899041044482315614016041661 GT 1 -8757149465741167778169928755657467521.1847795769312917584773562518405116 1.6425831594854461380499215184964126 0.0431723357847418720990881482494994 1.0441319829352948505097262056681294 GT 1 -735709661282620646020239913971198.6879410932978759100359286620048619 0.6195169553315634120589040395385868 0.0266848133757928473428177446703468 1.0270473164409578149686706609393052 GT 1 -2189274761076779665110024809964823439238.3984483817121857929007980547595098 0.2176386037001654370616448490237914 0.0667523069882478770447170101588057 1.0690846331843356720882752631900322 GT 1 -26218847832594546883335281044337747569.7495940929574604150107455931073609 0.8099479149158206156897623235193351 0.0298016921834198227166396122810995 1.0302547873319109568101674080238222 GT 1 -225789348796.8511721337329495607672006400495651 0.7158607347669255374104247984948770 0.0444399362957677066120732690418459 1.0454576562578757193276612974475851 GT 1 -8483519452921889700949753.5221068436404222993466344306581791 0.0017998102254088494093186114177423 0.0399845245030798444961679913229302 1.0408058743408940903890610890179062 GT 1 -436273122957366276075527925.8584859064902531467385159631213229 2.9460878347139944485166712777242618 0.0841768998600607935824870764075990 1.0879320550764545599049587490550868 LT 1 -663.7134257112257564272935490511154105 0.7132780058308386264169742425784788 0.0796152234711865059539526614422547 1.0829634610176738025409919016660480 GT 1 -835433520388092298194227365.0543909154927465427514652944078274 0.2430867848458245118835740798790770 0.0889854145149606509094061825690075 1.0931963714386652455816771825444892 GT 1 -2249405254972208560.5951816708705181660865864779702983 0.6393534161636097756905283785282216 0.0693886482247145400508468640018604 1.0719135413059005235277593011669254 GT 1 -40.8420387819103630139803807497517239 0.6617058059592544139370664237889510 0.0960585605895544366227255548528668 1.1009907001014612956053166522638977 GT 1 -19213845215607889076181385860.6342215922724634223428102976307920 0.0207935885525886077072280196383389 0.0105627160725592102805885105123559 1.0106188975273539803681379748041064 GT 1 -57869626340897684302981515027090770315944.1806927094485850121054813330023446 0.5311826606059010164952378340558950 0.0905873886494793534960404767853239 1.0949563699168527766982950750246993 GT 1 -1224767.6337819905345731926285318670690079 0.7907910946000768745468039970586023 0.0401856283754470887443067240918714 1.0410153761083599171148342858504880 GT 1 -7622800670.2553088012155425773016952807756663 1.1417078032012714849231235565763418 0.0961484687509607527134155283043220 1.1010901674220446308609306279874455 GT 1 -4987298.0493342117092019851154666448001839 0.5445918625158216498349878150894627 0.0950988736051798624497172069489067 1.0999295938531199050231904598895991 GT 1 -356089647870504607745869.9868090079370776569818052753188412 2.9010218241710863835469547750827287 0.0034350149751733926852073365005398 1.0034409281843045032310491558192752 GT 1 -108039948266914888067398.7980762909024146879911129006150002 0.3929723309527360080864295174496864 0.0458704953566589556639944423502948 1.0469558676448914712446826458160221 GT 1 -61.0945910882179834462596680073232281 1.0800275380172820858946759992108242 0.0141139057757093854641942497760197 1.0142144541519055398478594301848850 GT 1 -1626431167948125256098864071672.9079564669516715589058840496634558 0.0420348221016630958903272873017054 0.0333093731816207156387204266209436 1.0338767656190175496016706985927838 GT 1 -75453044464044986016.0830796643826121997152794837100178 2.3947717759809229581808058031374731 0.0611824028267811256414143034954045 1.0631340708549731628506897142020258 GT 1 -99762981365031924488743899203266093955557.5304961221220557833439531677340027 0.5021316983340758284737528104753573 0.0467408032425951976181132173961615 1.0478684324993384243146565636859506 GT 1 -1046135921612310441911985.0938354243447055131521439764729235 0.9869062672301418252106292680825451 0.0059622268624425075994250166824569 1.0059800719031641765519491944857132 GT 1 -2125514470.7687818087629931237457244916418185 2.9605504440010710502196286828649751 0.0664421856159437892902758827689418 1.0687523849946573210210879954156409 LT 1 -842976009376987788569343643004428429.1532677394464790652027792410228314 0.3263528825854094967740147301143001 0.0787815023038379660923779375140795 1.0820580312370315305983658849692963 GT 1 -27092907986501760714608.4307101843338286157373978978145805 0.2470558173770848362669961462805112 0.0979314266251850110841718809986742 1.1030647381120340697260628734155600 GT 1 -41215942602470099878575.3218402814136527158390387318103186 0.1189600816610177925028364456510654 0.0568090528185105185630516633526086 1.0584865277890386461141596420420717 GT 1 -53432518503015144960.0853000443613426230213432321534302 0.4230743240889862252478308419327474 0.0329940136236959695315808362914246 1.0335505928796449271755873482279788 GT 1 -145249775803258178593468015173828545609.5598839038771863638664551915952716 0.7500371925524380852419926309722429 0.0027248774360546719913006157312147 1.0027285966724206769451051534493346 GT 1 -1755107731875035257245223945256.6998382486960787646300716460225721 0.1583368510328475687361986458437602 0.0856499517065371756542563041372678 1.0895417958442352398105805902256434 GT 1 -100486005858071471797370909.7780384540961720182086731903242027 0.5673777229239788139785510654553847 0.0511833442489202781802468947856983 1.0525396963490371573195003114350562 GT 1 -345058604.3602699530449951730652590561185678 0.9013533702663304805414493132659864 0.0018921949039277158235420093115235 1.0018939873661871437458371723395633 GT 1 -946095038243314627274651720205254.9284147607809600422480661389497441 1.9457171960427468112004700988935828 0.0156595990170263683259353090878115 1.0157835057936247164176158839980864 GT 1 -514559776752577.5141270133159005732540195657479496 0.8471080526736356142630139634113416 0.0529125982655040122218446995938941 1.0543638967765785184122498733092655 GT 1 -1468973163775616862256831989889213.6959106936407870690333301556821879 1.7139391213968685146581121896827286 0.0568697418037447765136450061813961 1.0585508741846389062669412551854807 GT 1 -1799451075884697632.9556330808803417009293177731591922 1.1690860951173887920626573480175616 0.0559358652284374942564200098035105 1.0575611757677560918869351129487925 GT 1 -60579721461.6857399810541155145184607553432347 0.4494093429707580801474073082144285 0.0067055044359553498685499522121439 1.0067280873406183752602601336933636 GT 1 -7392698192579921362500124772596713111.2365658523874736303474717687191087 0.9944525208255144018479926532965617 0.0214532485432441127493607170654023 1.0216867145885921543458267585876183 GT 1 -42047925509022809866212851488480432.0631280892395060165712919947254912 0.7725882240438782195864574779648277 0.0302945177777862815258052738282974 1.0307628801636269625160700980423444 GT 1 -36382545545040061086130254157810257097792.0372146955955071156707449698385990 0.1995126777732243162897991896282953 0.0322528794047166312880943131553083 1.0327844648888851440897572621698098 GT 1 -8351591622600416902005909538534393.8279367514447781370047645299014243 0.0082734997078800963002373114286760 0.0223974312966385911941307419311820 1.0226520630075366351353290955535050 GT 1 -4703688420889898112071538311568502959.7922108111149804486697207369612437 0.1468337186393054784449600112740747 0.0805972111750228202734549685789842 1.0840309623048674902691053663571583 GT 1 -9.5467872807037268947094387050933370 0.7763046881933238706932918256970336 0.0195939934156116564385654324853333 1.0197885006798847164223473232656099 GT 1 -45730121735913323660.8181465206024738474212452679093148 0.0140819707470827787625270904727634 0.0478267052230195368758735681409170 1.0490082284278847855855348918619462 GT 1 -10109889955597886306.0027868066154764453502887197247912 0.9123723227501408474186778678717424 0.0645159003167766386981904836275152 1.0666911300097392027069567449964839 GT 1 -75802807735092835483879239485613.9425576596121198393282199981299775 0.3160120771389464705967813267845999 0.0496789365720100857537550854412406 1.0509553899805282274780401914315728 GT 1 -18068296.2094974950615877731305782427419679 1.9383927591178902900656583169382489 0.0941512019771832242758605184875770 1.0988828764663165271021145804456717 GT 1 -14519835197083276991.2588801456790629916082133481281923 0.4075877753869806401736010670964669 0.0669609439978988091157492695696959 1.0693082183441513634226305437859305 GT 1 -97165906143587962417622.8932285868769293564219427268902025 0.3701533323187286430719075520066448 0.0871491692701107105075281709922646 1.0911827953831684862192754926153094 GT 1 -2354915.2595906868098365296853513066353302 2.2137759831138055724037962199095927 0.0594277104474591776223944196537599 1.0612667703000726670395222478151761 GT 1 -59568345593076035099.1221148043602567904484449909237989 1.4306123295607206907193173953176291 0.0318749607969055942918952947013504 1.0323940273171693850944447763310018 GT 1 -10236089833853142161221508577660251896.1815614042776436029377214440851886 0.0062045954308132971793864662433459 0.0335558248148321889300696998702818 1.0341317417689386569309652138109258 GT 1 -5792188726581768397497.1151432961299547345884912391109266 0.9021467108382400218635145771715588 0.0438043688819865318163692096124067 1.0447927518049502918834885423658243 GT 1 -17597472486326613.5991202251860936459481249892805462 0.6936612440459550367655167193803855 0.0071533312978264223704397860918100 1.0071790390428611506152093504595248 GT 1 -170519759414311.8576414550797281150846837090087409 0.1488618334531284334184375781071194 0.0435610362269182125937290860386907 1.0445383041890479695131455835320215 GT 1 -65399052691564492.2211458178872222864807095921342205 1.5000906854053706727672710067789009 0.0093889612025039268386400680910108 1.0094333153432522482381139568781013 GT 1 -23440330963624.0828888122004231878908912496731538 0.8824880458049483673996884548340982 0.0494648778739632041261249028819293 1.0507301665253520575200282111354047 GT 1 -346.0882827323548306686703614330887710 1.6381841898065070577371893989071444 0.0667947295206562226582063834417816 1.0691300911018352932708698466170098 GT 1 -7053649613.8737541573651981041295980641891040 0.1685808772515410625196678367392110 0.0648981578365847482498569570840047 1.0670998335251219010355168632693042 GT 1 -79811867.4703050649222859440249847371131127 1.7654383522087571792413665396173037 0.0885241148361691266463146781719657 1.0926901414242183887866722210213522 GT 1 -4585126545958525275527172950171487407.6735144593690010275199343143863065 0.2654854460826643992143984548107634 0.0027628108034044747862759476655287 1.0027666344093959809673369220081181 GT 1 -2707326618174.3214623141395103431927011358906793 4.8806865010722716964092322357974865 0.0820170600016694255309494436965035 1.0855764724141432111168299954578436 LT 1 -7.3627723807989246981242075675133211 1.2181772360439069756469785582443981 0.0427671774974949328333086839903185 1.0437086334161864888559089075585728 GT 1 -7835090942593386123107185970064103.5291265049559007615334748499985385 1.1475559963568022407738492904948159 0.0395755204312882986757111143893902 1.0403799260295224541118863371644310 GT 1 -1673758271.0896671999427137699101933622550636 0.5227055091343989110282602139880474 0.0916151843418319660034310295021901 1.0960871843702186337708080319733170 GT 1 -25777337614301619542893496.3156111805642623804077088817589551 0.6338820273029528560937191108941246 0.0081739647426531130581054789698860 1.0082075547601006777700952446249519 GT 1 -11553.5541581556923388245311564735018736 1.7130792450143187618055648760973670 0.0914316043841297183023899616228417 1.0958851098674875304514257209965441 GT 1 -741011350782642367440640000110.2139918248722166258617095193672517 0.5881190263504423782286207758319871 0.0876337931108848708526014871571544 1.0917138268629039455229738423394894 GT 1 -202580572134.0023519833040159538214221342667342 0.4468723323438980274353179929043692 0.0080910841423629356280131918786080 1.0081239946047565194399542890848019 GT 1 -4774915389204667307.8132383706063751974227646122642126 0.8706597907254465233175671474397541 0.0109587914643525903878260880610857 1.0110192813562339545438416696426185 GT 1 -19888899618842537556414904975804963165502403.6930932845186808941399499465201662 0.1137292222447791539951671839046397 0.0525456683800740015364826409425292 1.0539765420051760480364282933834969 GT 1 -3.5085410958782189124266938547969725 0.7694924423457884328238671101835765 0.0966891427505818119641436863116973 1.1016885353597509874601721398851564 GT 1 -314538621437317241575938.3270493099470540858862355305894742 1.2693030057631222225092143258408104 0.0712594025580307713801933010982202 1.0739258068862395175874310602283766 GT 1 -54564160257297421023820403388460546181029.9763757583610604842699304750160495 0.9434229182537257602041988278662657 0.0671466730931923138288326596255347 1.0695072963805999147273861171694175 GT 1 -673733909093015499398444340260882.0436877247256439958253610241374420 0.4959722591986724534593501891648554 0.0146997920544674591866281397222106 1.0148089046057932308921852738086960 GT 1 -58517395060426.0356483031333022223938531196778084 1.2681495328596055124364329023597749 0.0062527584913525463126469076690660 1.0062723888578028116993922953012178 GT 1 -4316367842.6322149995279079582345816943608794 0.0655521469848324495947223514856893 0.0911021504337436488425770513828203 1.0955225678341838151242258780891012 GT 1 -31513600423250760302405851067617.2058888633645607952563948224454588 2.3275627936346940980838091758096729 0.0492994660166665050737909794095956 1.0505561619434555146733570217937957 GT 1 -199607623626907679957057896192586.3624513488018208585294039157315799 1.3451428509023205069563088846492249 0.0361050403545720215178061932840636 1.0367729533319079061066730269330848 GT 1 -25405855358820187665188625.9089091108392694480517008397626184 1.5322893738104592511295038844265670 0.0974773706302811343137653446428914 1.1025615149955795845857624812910892 GT 1 -2433118908186096693374187597.4367152735728900158851404055530385 0.1320140352509999762491614808645507 0.0482563554193790730381093275605685 1.0494595613560931627871975061198741 GT 1 -729288401848935302539969351781716458879211.4801508554163500462812985236028271 0.5027620042331333179115623937222441 0.0170009910802685213091967745058733 1.0171471670554874228058996642325812 GT 1 -29970.7089927581486844604800346719893036 2.9160749536680404841162621909033059 0.0153060366849347559381005892589344 1.0154243832284707663339114534247761 GT 1 -15675205.7395606982139054370690363574341918 0.6751900263450300242256554950551765 0.0927407791959451625913289162324264 1.0973270694751270894187193256655585 GT 1 -3801.3609207799655749349555646393665387 2.3881423357169222255563494406787918 0.0603212063511491499767078303908925 1.0622171709980727505533666990208572 GT 1 -2683498.1649673744430282321270793601617866 0.4741869581899679134377438048369484 0.0957854425430323817172725454810170 1.1006886044315386463105542306727444 GT 1 -24481309378588384688375196.5013152620827041509611075544707107 0.4787338260368977067589258590882622 0.0665223484512394479823382692525182 1.0688382567810348413762622264329906 GT 1 -6562517.0988639860962039401355825398458478 0.3546044366524657766884145889712360 0.0295091612169736276675853584836371 1.0299533161053888634420552267730740 GT 1 -981373250396.7556740961532099637956243093020518 0.9965617314971373607256689730079997 0.0689020542851379295714453632490090 1.0713908023892361431203838467537814 GT 1 -3301977625431991308355900729538.6996860741106113793539651663443501 0.0531581449500951205163232715586745 0.0394997955640997908355725051709865 1.0403010839303414827892399726813946 GT 1 -324361355374793587868635717040096.8254481654405047621486703600070895 0.7709659679024515613639790295422237 0.0102407595550834949180138289175437 1.0102935568991233950048560943486588 GT 1 -31119152517.1000389037722095687963649461760238 0.3925950167373935968718544794135736 0.0881387141580687937326298487914108 1.0922673993335414882301142410471277 GT 1 -10109202228347326502.0075731091508165882111231717250771 2.3716761158062451175953109105913305 0.0090709674677326740447211401239091 1.0091123591919212870750216521322681 GT 1 -556929000727230154670339464.7410532846091746539715732378163315 1.4747558805905594947024059429374040 0.0964479995241160027247284783872698 1.1014216161225034028378809326289235 GT 1 -7311428016367501538246928778473108.4547471382280227020995377697106249 0.5116434389636027719750174434961128 0.0529980952115754782742250438084516 1.0544541744058699105204817296551870 GT 1 -128661832.3149528890159352461529793038353327 0.0598542516748128377147540034413212 0.0608751970116859124997451266507094 1.0628068980750102456389534511623833 GT 1 -11265301184.6628607497835796662432621103915699 1.1370758300798458745978951120046284 0.0843052841067826291944053929378413 1.0880722494505504418925503267943501 GT 1 -1.8611087133769076427964222050880871 0.2539208738228962040818736410707290 0.0196518795188804960252295302569334 1.0198475454142413794969840676170562 GT 1 -11196457180762762378501325.4580855292680337612513948118597724 1.0023063222099314104078804811949180 0.0190262424824682737835750715935397 1.0192095705212362866100826309986099 GT 1 -6535271922316926.4031194514577822404392660854579236 0.5317362910474007852419708306501004 0.0060075608664544507073385769900793 1.0060256788599800007259976625721397 GT 1 -392.5962083700898034659534969517416545 0.9882628239327706065607119390637996 0.0982247966503505610215832627297632 1.1033900102132410414823715548647412 GT 1 -96672378466375753585.2895272724396426032251500982262474 2.7148327522927704865649840141035707 0.0705742499682180427347540695525376 1.0758666244073469438952018632154583 LT 2 -9340702966504043545849076731379205.9259244954956804379267424836745280 1.3894350992106369819878904359926928 0.0996740231536921545436718037937050 1.1049983847392454103776861201755553 GT 1 -252603338.7446157885552297533114214632950211 0.5592850219691929782779683997612674 0.0278811986957415064979772678487889 1.0282772584263372724658356536292452 GT 1 -1091407009834840026113462084088.1843232612984275551836312661192248 0.8851506134773524790854200565720761 0.0474802539684310073971160852868422 1.0486444414543551639442720507954599 GT 1 -1817551369885433298979650705563130509.9007655078197922417932482766271402 1.8624916068494524772293210791890963 0.0384308828403213651292911200554857 1.0391888318154307684197856485891875 GT 1 -4000378579954097347435128335704.5059733334926726269596928996373500 0.7932195428121384134385256399350721 0.0088652936975924596225014853137048 1.0089048242203170461104701523125410 GT 1 -7683.2983895095239021609204337231813557 1.1129302054341935082211390513689367 0.0486732462566899614435946843268524 1.0498976858147013927404708263047053 GT 1 -7.3470362135810183245503117809532170 0.7375616111718136530974377229124510 0.0729882709471906951033979278962729 1.0757890607964244679351992002257886 GT 1 -200681059.5725090177655696666906375904164398 1.2293294070737862710501373927183276 0.0055572105605870646026399564385658 1.0055727093017099209651218187768932 GT 1 -1480607631525459531430747123012.5068642306589150617970643283439645 0.6580990997068531949576294123343390 0.0423782405878433583759416342234324 1.0433024021350504222776062107815700 GT 1 -49189387421278951183488.6483466293943573661484548601742418 1.3645403763270406269363966840830311 0.0352434440715796178649475293661873 1.0358794831188062414762238721463258 GT 1 -80385193054358555811130.2963200528538608849087447191103871 1.9307305547940136131000418431176314 0.0224219516858907303287572057756655 1.0226771454874262212901130662696921 GT 1 -970078836441175814816808448061378185.5971693066342480995480287684185195 0.2472676007794662642282033444114060 0.0842265605876974155005481975952276 1.0879862817869515465857071556175755 GT 1 -10181086847044885640073618908129283.5549631915564635681374112016661352 2.9537231707878061103195891184902150 0.0058434283495390920383399186688595 1.0058605679790571357307069191997998 GT 1 -15081680747400577793330578541565596047751202.1394633550344568594594508578511535 1.1277626472453863712640761621908215 0.0065918662175966733475767512966321 1.0066136885203782348310905846004334 GT 1 -58321903519175774889012350627.2087079088441464747510109138198170 3.7845325148975580624611510487143243 0.0203599872784828718183661515724513 1.0205701087587997768529688996762048 GT 1 -4394517082.6584238947423201512511903225312608 1.2120741162443643096978537874032749 0.0062557258825011492591621044511642 1.0062753749245359522372113687232002 GT 1 -1.9102150950737372175137136680408642 0.2750561640818356977808159991100262 0.0432446065570960233040442666103475 1.0442075174380688847784104026422027 GT 1 -228923915803331787590.3052846819406548080225716234856546 1.1671305173717428108947525168474274 0.0729064329826913051023889412614482 1.0757007832161532754558636373516191 GT 1 -2210358491293746900077139053071096088883.0105483935945969574895148909402792 0.9079023871800872703349078285559673 0.0889067231959811173023888515117333 1.0931099974970813495680204588633239 GT 1 -81451915176289172618273622626459050.0195118133764622620648858531961828 1.3331976742409323232664433790826958 0.0135840242757089628286967694363287 1.0136771312734044758820939569218240 GT 1 -16837.6901979165834734048407421913996267 1.0609377012068515284648258576029642 0.0034269012922869940955645581769533 1.0034327865678729422472800944139411 GT 1 -1204541609646814276052208833.8754207500454946450833120777689223 0.8265516779473107768945911900032826 0.0495611425656654076785045254807853 1.0508314458619653366644319951443140 GT 1 -21182902789084282932377.0514589366305859206354186141460039 0.4130001707832964500956072238227616 0.0109462500377971186856600179288340 1.0110066010483430091996879182851148 GT 1 -52806667878530700847381329872.5939295089392403902387278575399991 0.9417275700705586050834061051011549 0.0860215652647918445595090554615054 1.0899483021879491768143910807192687 GT 1 -82418840099415645.0911419271136867847443026090019371 1.2722033275796602230962161898093688 0.0255382837225934460337175748532408 1.0258700463091349824190676542348972 GT 1 -934938558972.8934738115483165976287105542003029 0.3901440148201072818160634789867332 0.0086363356388698253757875690392464 1.0086738449033817797892498346605506 GT 1 -5143646888697883.4023622224043703879703963357478257 0.0817901295967668749360185425531993 0.0569311437472001919510145625798014 1.0586159807187335742312244402607165 GT 1 -6301853735112950929.1517025447686996536270734033624307 1.2330051658607070622189468940427108 0.0339525229998530335888606127871091 1.0345422979440656383830946138996874 GT 1 -126651449887243299609853824383073311248568.3146371363922715959228534396962781 0.0667912026443484568747478521448086 0.0942053485999283374463882158255179 1.0989426527128825774028337993531401 GT 1 -56784017240280844019055494049.3170797429173123809335127902129021 2.7954863841383727103788200550599120 0.0844586447364939208028804441719962 1.0882397435628447181462683359120332 LT 1 -16507692527935645420257641303.6297379316218173125409616925056636 1.5463343112906231419593587083143898 0.0278763143085873761001505503068986 1.0282722339634044741573250982310723 GT 1 -2349766800764225305659873336665135385032.2568616173784718663440269334078783 2.9442459900832008413416494738095321 0.0858004445104368188813721124948086 1.0897063993134854970441532983054834 LT 1 -10460951316685.8536725143996513938119251166973243 1.3633127208735259090630307006782410 0.0944152589594504816098516114748448 1.0991744212328710428094760953372925 GT 1 -41161501.1096022159425815277493191548806693 0.1559680588495545695214231933024632 0.0723959066427588115878732228797383 1.0751502607631046486069181969235891 GT 1 -4657240177637452978516339938741937.6622052739294842619456479805884764 0.0670784255071549871581620314356319 0.0485303968875415305663721756414003 1.0497475390384558821759794369713447 GT 1 -37992260403.1781102811251098603731274447735339 0.4504367966180123408682206820576943 0.0799186097941865173619506172882751 1.0832931452370650740360278125198884 GT 1 -1837941213548248025455.6349033876186064500567971635501317 0.7948702048160742751661105420726457 0.0598534776466629389708104167684486 1.0617195410213330860878901814803863 GT 1 -1832370835180567197171832220399.4339837931674524850892931412939473 1.6897495638788999866326149878973256 0.0449163095404999846864901606824404 1.0459563083520352474791583987714181 GT 1 -1863067276852452.3664133165716472979654478362304718 0.7047637727152062101217571443320118 0.0496663026321704065243832788581631 1.0509420956778484758203054993614045 GT 1 -3877737580788346264793338356.8532121051541273097691747948341857 0.4541490685559110888329193339137732 0.0006023058711687598940407642115694 1.0006024873302162068139486878092646 GT 1 -763689908276383154499594061145698948.4321632669348997294320071325654534 0.2223616544925935274771372010132069 0.0455331258331236927661546481549262 1.0466023413249271628494172540274733 GT 1 -60200980314635772060916825.0571145882615312429634389866928916 0.1180621915983135304753368797687957 0.0907850269240927745662803984088733 1.0951737187320625691381258564676228 GT 1 -51.4784834648991626751651679860965779 0.3842453926892781391205062488165045 0.0068661684335783989122798135365885 1.0068898490269365305075361290682894 GT 1 -702620790157915164032463007.6530479644517314757315560506184594 2.0731713619656925273683286201492744 0.0099033507929326370401142915102549 1.0099527151568724960770817914688050 GT 1 -8525258628607047713608524.6858872131739500036425484704937323 0.4628861750942330569162196939721600 0.0364244501957169809103880728954171 1.0371043823654550430059033665782444 GT 1 -150233805906511440849.9242227718458368080527089248425834 1.1495836559651297124159561000175912 0.0749252267747119492549997424469999 1.0778807088175283902891898885735307 GT 1 -155.9489581969115681072460360643876383 0.0498078691197745714766002624575181 0.0756792082650657984279935301658707 1.0786960903902030281710919290194647 GT 1 -64103210323982693042686211748547172.9898220540683623452502330584960643 0.1734152857961157835167719045749056 0.0479141439887843241250018020834781 1.0491000633714533094957829940134013 GT 1 -298899766084.0993448946486445542888611030233365 2.3596301963410363985207725868434366 0.0099412532576162457791484275551971 1.0099909974702361541824275802171295 GT 1 -295775145046312667538112688082279.4695122018224498571121119548913546 0.3627629033806321133193443215705006 0.0619630416556598602760422754455604 1.0639659295321412298207254124793982 GT 1 -1188909180239733.8300327186200796189609980459182945 0.5889305274507919924512364233988930 0.0439480150827214034072013217061099 1.0449429898806058797383135248009286 GT 1 -76903612482822085967375561305025748047800.3309173409116461798759351169656013 0.1181445848882946667359108003870638 0.0493115804361073276476573174723986 1.0505689046486430943845075329641843 GT 1 -159568895354146595.7916483376987118156399563434572302 1.7956692435357462453237241112277664 0.0536815852451046909566723431312534 1.0551761759141886225393505747237647 GT 1 -26166308751591634149187865374096.6614649080718418963703503423967695 1.1134049580499859448307945314528042 0.0403255156646339099149694863190287 1.0411611308378027375338490093018563 GT 1 -72417063111201353320504364473314942457.7005001790123809352253257996275072 1.3507624800403826290061736349479975 0.0886300026050934941120739453047861 1.0928063199449113543720108296880206 GT 1 -3269975541866731504595707.8252641066169971634256058391901768 0.4345197957682064436777187799442637 0.0790250703536548558319544867498787 1.0823224638939078907488353717115134 GT 1 -316195061425692178978236572531.7952873626544053032776592566367952 1.8538761837224039855682186001493253 0.0879280984141522222311477728395482 1.0920364525573059852076984283901704 GT 1 -174.9912303249892978416841026194019290 1.4701874161481017086015386055413607 0.0571096956731737536060463293540439 1.0588053293857027499967742093081858 GT 1 -34220788014808219489468335877713681.2051908796186306606973766083010810 0.3885279463967829038852371249954448 0.0476717926220562329516084660150562 1.0488455479562446552070589850788491 GT 1 -2311832746214866424781.7533196240827036883273394482062144 0.0373491558583624818193091922637480 0.0527776097394371211227594533310544 1.0542213767654738793455823618044658 GT 1 -209286656426766496390533.8937758658205676692541968039520632 0.6886906931010199575488449810346662 0.0839717677144236400690644847520511 1.0877080935105091685332991752346227 GT 1 -25232864397.3806884189026018134319236563357898 0.7329781718905032126461296100615667 0.0366376187746557576644628732159662 1.0373256334772585875264754241024031 GT 1 -1128386198522687213126.1135694768340769901189520694568251 1.6104893546439887281019514852463846 0.0781272935891572702037113223933924 1.0813481274181671370169492483976609 GT 1 -16333440168025.3721605196976099315033100849849472 0.8514641671556911799902092255954204 0.0712843774378570489551778893975873 1.0739526983731653600028969991506249 GT 1 -5151078615281508795027367806645167226579681.3469422994007680566927308658658452 0.4239578544707149849934536281493070 0.0167545369941145533245336904599485 1.0168964819642248230183896493161565 GT 1 -633990339308664874108455441.6251060742820037192259259065338266 1.6221191530150673939648564309387125 0.0932262054193284198913114633030269 1.0978622595525435821257940298531287 GT 1 -134655506451568921134021989.2474773073648283358218846635084926 0.3221071883183854993934245387500850 0.0517842342246592384261154441291306 1.0531732015954595370662853363136028 GT 1 -221.1607426777842526752405569363875461 1.4223385959600409337246224778810480 0.0536442269544433613991883514710718 1.0551366991876532470346931507336251 GT 1 -500235.5477166260580394875468037079881294 0.0345502139143565919137677268552482 0.0367497006905964229044805202752619 1.0374419847472356951824164705354384 GT 1 -1503796287561681.4545158363558984475736515206158488 0.0124306590675642321306709598342428 0.0495629102592068663711423359307623 1.0508333057345615322798893579258602 GT 1 -3502154405925304631298584533050808969230139.4082975754850900821357624943279162 0.4628083685341215200749943770419877 0.0640505972872503942469694582425160 1.0661938608964966170603036753730662 GT 1 -201502764346328554850052352897539.3852122401057617037996896659396628 0.4110620392205306505176997976719972 0.0421739353049073561006493399195306 1.0430890783565173243594354753894465 GT 1 -4935240117076721228684177784769726202536333.7464099081360202918641510383331179 0.3785661283050584170347724036694316 0.0079837263249293964421869072834838 1.0080157669174377063504381680794965 GT 1 -401098482.8028643392504548256953640252197385 0.6093351251987050497665489649917561 0.0999434848508327792053757110826393 1.1052977230191395019622750032242605 GT 1 -3926052374822545393631642246158.2200052637886186906487485455528433 1.0924102197625217989132359169957382 0.0991065058529041608521985431334575 1.1043682368547630757012416603601426 GT 1 -95337983382221518091936670.4876674802336302480843214489316582 0.4721408684219713825913471752626398 0.0371308968617989869828365826627211 1.0378378025513604551444362550706619 GT 1 -8161163394420504692041933938722.0202448316345303412119752153851079 0.5815002197928742683988319623597266 0.0450878878041158864867244709188916 1.0461359718506030399732804605724433 GT 1 -1968871660538592633524284480.2722597400834484149725762738537196 0.6729096334457157695415277449745636 0.0208557768438382643375089469689303 1.0210763304925282463551871495373967 GT 1 -5569285438568714856611593.9043744560542021065118143410345579 0.6042081640700542325941681547116600 0.0722472745678800725321317477271466 1.0749900413662840683892954196612455 GT 1 -17.9761098081603448407351163937779153 1.1880709553279565921706164541472943 0.0793331582057095567244941356838392 1.0826570434627539351109409347205133 GT 1 -164226780217.6413513765430475923581992773612891 0.7432234184644756138406112055174153 0.0108390497098399982199283876173459 1.0108982201652686090563349497894650 GT 1 -2269536684224312850605288228592848.4993490336295405381110200463446779 0.4954794066665347758203625794953291 0.0165047242319677913464663348399812 1.0166424446541053727181617206760120 GT 1 -366574890212895421823597703496.9249352291530417051517465409538303 0.4911865166996153086249712246811603 0.0110960258847887672338639917352492 1.0111580459912300218556058901959529 GT 1 -18314708298711029443967920306290468029056.2631223632302459414088467280102302 2.1770693583616668761987039516898157 0.0455586114187739693794509143319032 1.0466290430645016998562863537803213 GT 1 -8816406048308830479734997854355627088.4934016068501917791354882258188759 2.3529426756315794317769917896024886 0.0482974259562571349523647746135345 1.0495027152277209281201982795617595 GT 1 -177.1930323949178424509979458957102275 0.1308560772739194791556670865206965 0.0760902540223095329928753740620742 1.0791408896245338688899434102543084 GT 1 -57162955.5952598639455644294946365702312504 0.3729391240308314876841254663886908 0.0772461132844098326123213549264787 1.0803927249805584171834142719451551 GT 1 -22249671113070501467924227678600038857.0540962075693898102626420342988708 0.6987386521514884367290326464390958 0.0042572836841609947186262583987392 1.0042663717190782666866147479706883 GT 1 -6302301667685539708449152317151.2375460631106873200125096808562378 0.1902781854911181445672313603082490 0.0422270364217571991643435221585591 1.0431445190996788075317676743378649 GT 1 -362241584271116430939.8187599635097984145504568507511517 2.4555384969708758414722985946262898 0.0280859773978879279048965937257687 1.0284879325470471655163038585800418 GT 1 -263898975401329013.9844539095572043381359426895306315 2.0851959854262810526311025664485051 0.0628742485775231522940383351106674 1.0649377993211885239123174701225550 GT 1 -175923175912334244.2808218718858942392225205753144231 0.3118695687333928379373615726007985 0.0987844572353246068759933783505728 1.1040108238298999882456229500714234 GT 1 -39405788825524225701754895380474.4808078485390827178926036316435985 0.0951139832947492702919466385389005 0.0188676904923289820786864779036765 1.0190479564340582377793170249362197 GT 1 -109359688390307874.7765766530064014567288289718090053 0.0943430916199967276556225004016150 0.0017635166083722772543197586053209 1.0017650734343811991617746600858847 GT 1 -6727224667289700066767840576813269288610011.5376998618477600718579562963862980 0.3631262921909096084675035313995386 0.0851788822857052877494527404516669 1.0890267325849841221487675742241236 GT 1 -364502623634257445591252725471061472479289.7705894785969605741301651855426320 0.8290608799659074313442596805635414 0.0443414766961452943491553668037290 1.0453546229362255270789995913748287 GT 1 -7572804867149723264400745518.1350128551120783002647203633242181 0.2374250878166024751055922490781531 0.0154775221606217116338882721412282 1.0155985494323847535305701085168931 GT 1 -1606306194495286372298910436342511.9018710876171588070380739229422043 1.4421270654806675476475572914048041 0.0495580177229057989111700938029645 1.0508281580780134652130223217582213 GT 1 -1719070303198074140782648509104162532595.1688221609541961872562796668483976 0.5124574288965944477162238373626008 0.0220344019992845345128425477120941 1.0222807854343941788064853968272046 GT 1 -14040632068743222999776132.4163601923294769357044020488779246 0.2882011479458520879376359607182998 0.0734241184363367054031580866428907 1.0762593353005075580749006255988769 GT 1 -8401022351144928929622090968.7419653231562071375839405660988462 4.5228749662705145355747715841508267 0.0387078358814326798889158415148557 1.0394768952818107768577271366764852 LT 1 -80.2293411102018887891430260864976898 0.4095353695013559071513499770408593 0.0683480859787979136883114208787793 1.0707960168684900057957915951587708 GT 1 -151713608556091491792957557800529581.6823059015258664793720957336184038 0.6852509266427637256521227726133328 0.0384584850381693413092960003300740 1.0392175375980194921783887361834631 GT 1 -6.2048968577716076835511373865885155 0.5117878683127618920948676442017608 0.0706956948336717990232082719157098 1.0733190317314916899544130460434438 GT 1 -9142847257085868.0153628023350394854478992400264673 0.1503720354282903859653908867014986 0.0289991300609835349718225167801064 1.0294279147704962117859864408840303 GT 1 -8088728071261382261372271712077640.5855957008688761561997992314176580 1.4494599540324049935081120174811288 0.0850275840056563149824078851368903 1.0888613606152984191708931171798056 GT 1 -7022526695820478463784706753381278854.7446675852583769182433195010981911 0.7940931362981646976851836973220805 0.0220018157959673314986251708691739 1.0222474655911366652318042141092347 GT 1 -16460166015010356022491959270118040297491.2028623805540154879963535806512366 1.1725800018009682057497614733952837 0.0326138681539569186568662742207230 1.0331575541869706468160044394160597 GT 1 -1555765835.1023903900559136397153868968137647 1.5124982371341331750945617042652218 0.0588503640273010688514939039986909 1.0606531340019107254299847363717593 GT 1 -4342910184866908511128559419933060455825518.3171597403204790654613380907505180 0.2451867462338281582088009185178602 0.0592441663663268754007290019900876 1.0610716484821903249709530923653623 GT 1 -63.7495790055506953363887152114408220 0.7102928617100395618250932602995332 0.0254058314589128110030618935659123 1.0257341320288762965633555023849557 GT 1 -7505421781061.8924484067954214478918416113590629 0.4264844398319304687593871227727243 0.0025160233968812557827062694258638 1.0025191939029095065336353882774222 GT 1 -70317364176998576919546.9195634831418951617957218389414157 1.9463102287897221356151389240978924 0.0597364510701049338063931581309415 1.0615950718127319741769443597694095 GT 1 -81936028987014394795.9580507982821104031905961364451246 0.3750846613266457635782017426748765 0.0533012450066103461707483890346539 1.0547743409496777026378366164815480 GT 1 -60.0393951258043751956215645584676510 2.6557466225189777526458818507476062 0.0417537090735021949489214138972775 1.0426504454031115290980516304650201 GT 1 -262640487291783342634273.2304426194703229708908949146406958 0.1022494686935168468201674935520136 0.0007930418447451199308342665457483 1.0007933564687798924617481692990817 GT 1 -243450462452962473262402091342.4022343720087461457409228122372687 1.5441045560780821392492733367498624 0.0354133662899036397263793209546954 1.0360556282646526974083178868568031 GT 1 -1806046448288626637888602487740458453.0575114286674135443184230228384396 0.0159991870860032172574046446887768 0.0722370082270341062069992519589782 1.0749789756116252665736200711004525 GT 1 -485117041687416.8131954766372828741017053893868729 2.8000994989087264996126548389025323 0.0646987813390757687234119548287253 1.0691235540576798802118642456849043 LT 2 -11526070492312276545168129191569.5742498922509759359073313851371130 1.7935802476622608833605439717216866 0.0349648122411758383438219783431003 1.0355907143091650538134476982192083 GT 1 -589425568.5719018442604088182492057402498080 0.9697628043194322623504860722089351 0.0876407031463318694829861919189175 1.0917214006436538261507104194489759 GT 1 -312180412300240049462464135153057.0669437040110702281646493748031521 0.7754628671193282215237716939408327 0.0814825155094308460417282017026242 1.0849943385902614433363399321033000 GT 1 -5074671456684060477526687786842973.5594260005028621855491295585810279 0.0397583875621969327880487919757158 0.0422722820932617743527768627751227 1.0431917607132687474386636869873612 GT 1 -656035259465237856953246865011832612318.4145357656893306661250329434354819 0.3405980987515614096880716303980727 0.0886744972282950850206236342882755 1.0928551428264144491813516465942022 GT 1 -29536361701524874840.2157358440173601488732545315940414 0.5676513451551256175761698875661327 0.0459882069294274387150521863797749 1.0470792459010602662510164633121627 GT 1 -198574623803462139283461.8695012157743451856280137408587967 0.2860334291809551798992471223425892 0.0506878471610483755174393787810850 1.0520176062812981788481567972936241 GT 1 -34506584141755352129.0013035421764001826696464433713531 0.7209828533210718006142978818472777 0.0184963547437782616877859299019176 1.0186695513079518326873660386917221 GT 1 -3897304316713509921671623168828652637.2729918482588464740384840955907120 0.0623239620979086321482710772004611 0.0441165815714378200050249909777928 1.0451193206173642372773557271140773 GT 1 -16085270771235222798045251715402168282.1981045897249095148540077717735927 0.2217663036826033034700021120460442 0.0310087716913253554523144693102928 1.0314997194453725158464459547488021 GT 1 -159.4685872888638086008861479937161704 0.9438829717967035344218087148049687 0.0286160888800311084486039255328222 1.0290335117771728362801155715546880 GT 1 -15840996426237245880.9978749881422761515218966746344924 1.2090241995730317594738908305329179 0.0803576016547352745708524241760279 1.0837703819522856505028112802137216 GT 1 -88175208571994145276981941010541063324815.9784850407738386425853321621846893 0.9791514848459170895559743139546785 0.0542987292097763539799644607611691 1.0558285412053889512149304053323990 GT 1 -9.5028125749799653605805983649000341 0.1499151137878476687789626772632964 0.0996988032396648697686214341706235 1.1050259085779806053658477325330100 GT 1 -2098452643040164116151855884.1424708434647714512187227765898295 0.9719979560636119682518628889319102 0.0937195278564762822912050281077418 1.0984064489443080691954588117642947 GT 1 -13290038238349598310.5530852159261789757262508290752201 1.3552259030560760571935810814895939 0.0007996351723546956734934861332249 1.0007999550510946912385618751612883 GT 1 -18369341554160194567501326167948.8336841271689881852641472027037005 0.1005433833497219303588461170748072 0.0041025147375838881665792190500271 1.0041109531381859974664621056001079 GT 1 -799.6140836695427803389541239559548119 0.5612863075372693984084999850083740 0.0101874232802951787368846301741414 1.0102396702208642378051850039703856 GT 1 -2935.3911489634900421306998017245996362 0.5823101108532308630056261053557688 0.0994965525650478620642286027776309 1.1048012860170389427495880326524439 GT 1 -70910242051684284717100180.0642258217264886381546070685131308 0.0247644305332639646122408254238559 0.0476835682931749831124611445197070 1.0488579131721775955553733493337306 GT 1 -502304545359280662840894806424214427237264.2891951183547293956025502955582910 0.5868280265989566387551381898585431 0.0806747888101528439124124708963590 1.0841153441549023290281981300162073 GT 1 -171478314348846649262229818830498561.8436470932903319309336313069515557 1.8786438393267360124942601192188390 0.0352606336713914157840083156351563 1.0358973008292392805272947895251144 GT 1 -29535810923358928508.1166192300877276492894655328734302 0.1982044100174169863660893771774722 0.0541249017972581482170673895550666 1.0556447501453430280997269912468921 GT 1 -72587357849826965112617084186684.0953167719138269436198399437885245 0.6415304662115794457022760886118925 0.0693211876128368006913383862533288 1.0718410532938686811335378849026695 GT 1 -13521051.0990166936007874177816247652897621 0.4734370954688921431802034155785620 0.0776732221441763953520864398892513 1.0808556953813616870271526080288493 GT 1 -656699059599916391151586111092785.4662746581532085823928734286512361 1.9962686930257892169274626515936743 0.0034057410181143784668000035197212 1.0034115537555937578580329578239450 GT 1 -446071561952478334013673960571416.3688867575297411036302557829867632 0.6878358202301290555480741416871628 0.0081287379017492995740543260126706 1.0081619562295467063369822358596507 GT 1 -77764829463295545723452795808998109544.2508307797416674193379524524219287 0.2907533629745863594246097520113259 0.0252050791985888914642535846081165 1.0255281677479319405970727571541481 GT 1 -400834874179246275587607088002457230.9375314179561538184128117255331356 0.0223646999295599849401755890174248 0.0305293734222931678707153635665803 1.0310051022543276444389308044710833 GT 1 -67566691298468641794118915521240946814395.9750640334734624010006318353187031 1.2731804751130636511093430614319561 0.0395337446762304662796661013735550 1.0403364297969616186305154902278554 GT 1 -115494390096.8508543528864843454784356706969371 0.1510468967848214898247058780406133 0.0439301381122429241897749271513076 1.0449242913123019081929523841824892 GT 1 -102687403378295062.6418183517000483776798577326445562 0.4960371206657215063353919926036330 0.0975146870304744899944099175308892 1.1026028626254967261146051278758906 GT 1 -5038612.2720315212041588089049504274412178 0.0574085460551229558420937587911404 0.0079109494152905161854157798193044 1.0079424069916498251137014843262440 GT 1 -3903351726490438363200807565.2026909456881673767455069560335273 0.6530517903652957403578625301601432 0.0478759469277887753987615369597599 1.0490599448311406423006002854688334 GT 1 -13.3043851383673512554714088382297237 2.0426811558179188506011646997094599 0.0860881915532626603734426675893600 1.0900212018478153411900462847149722 GT 1 -16720624812629866494592809685596780391486907.7129607597368296908135939602931934 0.3473143435072597844190911924807205 0.0733638199719845391024840548021408 1.0761942607570992271113880761502606 GT 1 -61476188651723437261790.9760347906331171806854974005392543 0.6374681945847677268209657267362082 0.0586359128848799090808381892449150 1.0604252991227077620900222049713559 GT 1 -8467251549008670373658312883.8710485339773389221922584252909717 0.3270688222398777926215565831916099 0.0976835699000664601062331027187905 1.1027900110153222679160183036343007 GT 1 -7621877885316330891647079.1085998573679301044779471299376274 0.3466811024711419666127837323231393 0.0776779905838557467646865532549298 1.0808608654058262508538747046640144 GT 1 -205169558092075208328131311773342596.3681763325373889392274764275844424 1.1686284998672455879622766316588294 0.0305580971435497583244998770378916 1.0310347309465173579471754496521759 GT 1 -655708844677866358819.1112594138129166091319399333191814 0.4526222813211960805140959956614080 0.0628907667765816525348499799987446 1.0649554259253168731152661640327555 GT 1 -2877019380018355884967906531270443789486883.6591765821343058606588773319992028 0.0356550068885371941734620482624424 0.0467138829441817013122379851059729 1.0478401926267057168389854238770890 GT 1 -55433216342022631963.0464863518622797998135076675530878 3.6498915489392129840474459422114030 0.0905422851785380510350641730311627 1.0949067748794259220231811444789670 LT 1 -96386.7389662023182367862297070628580350 1.2092197821092869526578240799233724 0.0754055836610180698762977775318926 1.0784001064479968507617732896755043 GT 1 -181675506779011088.5970338118328741688991774190411722 0.6389083694273063427829255839513588 0.0773830054851562743008481093655170 1.0805410877865286369499942111739067 GT 1 -42593465810541727180593089481.5986527744004319965780137737072952 0.1030918785848329340916397983391853 0.0183039943364188581591452023851537 1.0184735850873131157624683739256214 GT 1 -124322887234860151430689.5410572077631708319505328320720499 1.0092404737103155705646515256908903 0.0864790328822837542325639506319687 1.0904489509176652029726146594375379 GT 1 -4435839289199082.8039665357881209693350213473604478 0.7751038719743397995868309786354170 0.0335352085601137524740806711637215 1.0341104099265444285626126931518564 GT 1 -247.3949551069961484219954324462716197 0.7848487835828242424671526837171950 0.0944409006956681181448215898556780 1.0992027367488981597009567737730383 GT 1 -37132.7106176950444208711863059894679233 0.8191095173713189358245930868577144 0.0517474101386086398983097999634978 1.0531343672158129936109421348346500 GT 1 -551968579256661507458049565753.9487675998848903119663380630856091 0.0151869656645141111491637621738703 0.0332187311006501307412298006530920 1.0337830046688452263922684848620804 GT 1 -5061922130249280194711501900050053183042148.8203771884168112746574364394595948 0.4640533765908942612643763084879859 0.0687027464688492968356590726228329 1.0711767685288286550457166905868497 GT 1 -1369456852987024024.7594927940244509549253850538791650 1.0959698397470506718922390332753060 0.0127448960667382034368329510322727 1.0128268089799074405879869920832365 GT 1 -1378404813.8601502400011024419692483840022051 2.9768491411845785989458778662636987 0.0381031668509970177445028085280568 1.0388480761161236903846285485075214 GT 1 -593886071848793866276471458863197.1261627903480244220322781017040993 0.1291075185123959044901403620577182 0.0627781755015682879904642988142634 1.0648352857028252939213564215257023 GT 1 -4715971340875403883336390157820462011.5660424861766666758843951179627809 5.6902841200490060399990544667568822 0.0190551768305075704633775868411778 1.0192390664935220093205120145758096 LT 1 -11425.2848290172885058281708933562896918 1.2207953376422954231800361213159740 0.0006589585703043093785949236421073 1.0006591757789292298007712001892330 GT 1 -51732379784456646862.8214837429148379847025299846930154 2.0166170156623710456588949926978070 0.0988316229020720123460544169937135 1.1040631608112039127979368979735525 GT 1 -1.8311832911272639170867746510490691 0.4396715851683220998932346979029352 0.0806409416949343131966928687907544 1.0840785274857396002361519602322877 GT 1 -37260360436419693596503060578056717335623.7259640021985034322335889849847010 0.1241459697107866259320285265267874 0.0841761004079083547155822273600173 1.0879311821438943494744902677935589 GT 1 -401236714307557967757193063.3606219195262207387400366751923789 0.3171274848785960783109104282035902 0.0853378871495688868993044313512130 1.0892005574789295885801784776345689 GT 1 -15505855010796674799865676.7290626592963194199253442100935677 0.2312942042855775130410789228452831 0.0913332281111432464168038541964385 1.0957768395953271531526804932402626 GT 1 -1622667068096.6495935375430806381799020612586489 0.5584529086276251868320041382474847 0.0719513427461863472696872689619847 1.0746711151848909031455288196924006 GT 1 -8769989335913044401389621555299.0903078289950689847501229287221018 0.2625350485682994217128328805395806 0.0712915178097133354736250828299761 1.0739603868400459741215350197644768 GT 1 -2.2610819837142673747626194697113870 0.2239877529583971772735234177597477 0.0824342208232578064757810414176795 1.0860310076976937995079864240375514 GT 1 -3159647.0672526964077537916494554583934186 2.9600396947660487413408171957459546 0.0641892173119647956993015671069354 1.0663419781884969796370892185216856 LT 1 -179605881197048.5491418410207051823170957566262545 0.0176369384281241363818899746734643 0.0877844278550627665353096509148155 1.0918789438735537836846208129864928 GT 1 -1969839210957848604568585103309267.9129689493786496158137538370234051 3.9446497861193619477631971796630949 0.0377802992865467178339854444063667 1.0385124752709581395308337664019336 LT 1 -5514.5422062607699944139702010028629194 1.2080351837304973653144903235466842 0.0544146372171661620798481852679863 1.0559511117406821073456668126323619 GT 1 -154619699835861188555578764759544479971.5677833513118077775049847164675307 2.8706800564244761260327651122615215 0.0424373498029652813669017722652862 1.0433641290526716375830784629245184 GT 1 -1204078130893274848134863.6880946749975902824823117967959157 2.1043464960106048234255018021798244 0.0124089197076668861662663034224533 1.0124865532526549326240673154205021 GT 1 -2325198848800827968497200861.5642471281168143387394390592054748 2.1013524837759184475985670412130300 0.0098208700287696149939120345050421 1.0098694128561748192407521055630511 GT 1 -1536160.4036215162867530529759682160372327 2.6000073093675024850284291208685729 0.0184976822994929062107938116346008 1.0186709038822584793443889991855514 GT 1 -1129399830.0420160005485426969875516962865194 0.7655771377207371556753018739448844 0.0918123777471614631199669155304189 1.0963042892893385278191689306286824 GT 1 -601984672243233410074.5688278404720275419552485061585960 1.0511065207310323817322412808530958 0.0093261978905621576499391837452288 1.0093699591708666223432037153583449 GT 1 -22109293.6078332286869590233543291403856860 0.3656522096958589295290557446169498 0.0520020519917310932615376982711323 1.0534029412776974354264337213184016 GT 1 -2394363517.5943841115782889911937095207683981 0.0667858774729306972767546808609531 0.0998868111829454603150535046033567 1.1052347582133423856379216579292841 GT 1 -3834586089192640610769292050148920644.2268862170633175181963134875832048 1.3186308231678448339227348097042518 0.0665243302828021432529646478090549 1.0688403798459664832226527277510155 GT 1 -412.9890414229429774524808225164733980 0.8916970321253395743653444350611568 0.0090414130591789453325011465945875 1.0090825346869740521005672095677655 GT 1 -61799.3722949386455093985128910647370228 0.9159416984918256559963980425286396 0.0868992571023111993945403493853036 1.0909090617606896476442076897486704 GT 1 -5107751823381009756221673129110.2503121605885755883858671440919186 2.0025098244989149453144923626807208 0.0511587864886204206624693831170156 1.0525138141700637968488783145003525 GT 1 -2303340.6546301151985506278729188973036378 0.7105471007749935817712438939213536 0.0948361117809861293832417686142958 1.0996392597226681764128415612958113 GT 1 -7293378498372752415758.9339135352074926466712453701434707 2.8710614785525663346044772916604915 0.0803624348837759958698668994154323 1.0837756375187429030266318093243927 LT 1 -608308162497.6465827581630945482252145805567114 0.0224896764997946901543691066095796 0.0450912872544562445108625219244425 1.0461395318184240693327197116058856 GT 1 -3.0036677550458656134978503121473723 1.8091443796235032116265196453544246 0.0884143821008724368147892428065236 1.0925697585021448911092474466663114 GT 1 -13652819481729843986517458627598532076408108.4105560443828590802130332776970029 0.1472983341983883745501711798828658 0.0576628699990571427922640614941842 1.0593921809577588302498244237620070 GT 1 -16539553649490901450305948.7462047612733023721140440568525969 1.0474333046455605892239013619237657 0.0377171738719288196844524652087610 1.0384468734712617391870209437413060 GT 1 -235486180860439.3445716614552299651714773554312299 0.3515632717378684842046039917006655 0.0588327668381315835470890131658444 1.0606344366301147763079199301239161 GT 1 -18959138557224462506345360602143.6213176491382456953463765035097985 0.0313016756330731529268273245996942 0.0560516534217856831806240846076915 1.0576838319415230943947581245205945 GT 1 -2873911746203988661198782684595543.0604607421752617789866134718276082 0.4509627646631951881476376373082014 0.0790261123455199361142787004084036 1.0823235952954487949295882676504148 GT 1 -1451.1338122319798160378412568118405186 2.4381625486793954651568143899642929 0.0302288174744893865547628179974668 1.0306951296157433951795550624723648 GT 1 -1681364951565115.0301068788764975642850322594325659 1.6996050508883399516470272266228850 0.0826808364415307965821532707820133 1.0862998154185641388433309744158928 GT 1 -564.2427785260784616861006876426316501 2.3621994983451410737637524012893319 0.0991913659764181342060421080525340 1.1099186371543744714594132150629849 LT 2 -68756175884850846973624526156101560259716.7260818954133429162194505325838388 0.4638474709996739362584950009559504 0.0321985725946052884950171997353421 1.0327283497269258230064661039567252 GT 1 -66.7883924688634757126263135173752587 0.6397527940296038046520774626236026 0.0989331084976284062847368683676055 1.1041757827284772109913393832479778 GT 1 -3369658305643.4584089254450257085953751903189504 2.8196546845193667070721262339669341 0.0773170316496988228491198089405337 1.0804695830590445202818722190230580 LT 1 -844.2986941456039826192296922279461977 1.2914372806036083943065550167152916 0.0376498194753692311691130721494259 1.0383768815337294746193412386630824 GT 1 -17372167808357803737.5119060890991650239234885714511947 0.4526569377751450124636827343129065 0.0936236653903659618502696510309906 1.0983006788218639864431692098777606 GT 1 -881.8389135579548023506814454812352809 0.4673124751918811082278093993491980 0.0795752603390707556649544839433742 1.0829200419330041975134087187008146 GT 1 -12681795406425694423.7185431418769303352399188034255204 3.0138153646231796556711754552481377 0.0615355108211116670835878325396983 1.0635102615202567123835991759459345 LT 1 -362602517873771874.3418258771431218616755805587310748 0.0583956612977539185120269435344036 0.0105861422236315398344611982955807 1.0106425740440759544802810857810412 GT 1 -20949447669572467691.1456425290716053583599002019551632 0.0319315490078372425055516764950554 0.0234674766225142753516626440221635 1.0237472231499043958160239311508220 GT 1 -200655379394290663544782188360.7207753491818125397521455309990465 0.5956411812102212394028294398103927 0.0354038759931577578840765903457028 1.0360457895941503863247045210755141 GT 1 -39.7787991003313114301991159261631845 3.2552031736649085106543791185830414 0.0952625625216569458849088209525122 1.1001105017097398149222230722375620 LT 1 -173263589918714695494145187268071466551.0356453948678614070061563554490742 1.0339223004673139547107059609059712 0.0992486455355866312091102546289570 1.1045260256476951814906514430641646 GT 1 -1292025034215695325357775238296375240.9373838209120714023774089969115598 1.3175402163016483820000337558783212 0.0602428637484884256168907778867540 1.0621338027901336240816288018392747 GT 1 -438.3116325261033574201569655994240801 2.3018606981883553637032432798017330 0.0729085312011486556146558125090913 1.0757030464406069533825752770455024 GT 1 -413308279142135147632002633.6437717848189113595641177628994242 0.7437986869402853533677113547310642 0.0262049373407118960641895230584496 1.0265544054258024290376875735081835 GT 1 -5404326.0930104397780276611210844033928502 0.3393547304952164674034476502324354 0.0298512592781446578959645526094087 1.0303058782898640235756460802385305 GT 1 -85564909323510855041223726698183297534.8024906118802382287126563138891080 0.1206439946308505241636969672602513 0.0148719464188709187690800626990813 1.0149836426241244483743718382059657 GT 1 -8742661053865331080444473970301287342938079.8851287009129998007999875797073887 0.5516406787145909119718255165696302 0.0600242294095057901424464223610561 1.0619011800178527834558336719391507 GT 1 -1604134877.3962038961725165533620728097990186 1.2396896123335815363660255051170005 0.0337029814136586935904107121497879 1.0342840193729811390213387369182528 GT 1 -13771.5864104396155506302042380230792420 0.1272580807035993499152162618227153 0.0971827667951345401034581731610915 1.1022351456023491184224541873887282 GT 1 -6974368496776435027543638440445204812.1209683402600144153553477759857302 0.0123201403201704414849656643576680 0.0318986476348229725599638921816572 1.0324184943299337080271933122134382 GT 1 -776273355250793108909436126619246426.1340554689694144516587155500393803 0.5040918236454125140614787402471076 0.0747572160234823719831276208404298 1.0776991067449140049595577743203249 GT 1 -21444137373211322553109126.3290779428656284102450725587261908 1.5603943177686087056762353931173139 0.0744173415797411430007767235349376 1.0773318387791987171788981808544029 GT 1 -38391706850.3789686552381001698673015382732417 1.2792068025950014383968764995788180 0.0104509288803953997220247928712762 1.0105059233352908424075573985372166 GT 1 -4401.7665018370612609544309055286736746 0.5009852724970011325522615571305819 0.0602292519092809690794638947810926 1.0621193184727461667703175157527386 GT 1 -3096.6434192785236982602497912668071472 3.4365459704099369032446444027418694 0.0933997492028171441368051781375487 1.0980536638405457148274575840455416 LT 1 -731801.9585260506504644231704686171857761 0.4549390979521167202475415389786902 0.0605098684805116840929201894024152 1.0624179641545256809864292910015956 GT 1 -157986024783671275141537553152.2674896427087167054994794132283684 3.4403717469041406295376849358038194 0.0618540415435922044461891742691857 1.0638497360509894501469190418734770 LT 1 -11426624433756195135081.0286970157529039964838175599843114 0.2409406778167547352476028595546524 0.0894059838698071304689989648956641 1.0936581274513963294103859088835600 GT 1 -3069209060573700684798.1125196556147854088365218389508588 0.4182506313923264244530538013332901 0.0996826704914675351955320044599413 1.1050079894596749689654016757278680 GT 1 -388667069682625571120638352148700407.3730092068077425824344283182480099 0.3954993245691731707445651936214396 0.0034137860000078810440191476298205 1.0034196262628278977252144736098332 GT 1 -98221725819058.9379890470002042385192918869148023 0.6889185940261946079358944719555942 0.0540304985585718198849825610281420 1.0555449499410530567063068357360671 GT 1 -144324341002405847655740715788516137828.6823016341040531629332320789550904 0.8134325424964226123703105878890689 0.0427897053795980026678272063886018 1.0437321680742837901181019478621382 GT 1 -1570964.9597547726062874885443118896941842 1.6134763725024577862650878817834040 0.0919366857953708559746471785652478 1.0964411735115660476691159864330448 GT 1 -893264101955197946865647830143754369.6268870711428943624597773542093216 0.8482394105899118364268794837099037 0.0761251330883009902791828527961879 1.0791786419315422699438326187004128 GT 1 -769182426858649679547.5685102539176269976537386900463589 0.8764230715340897973512471366800186 0.0828502155531949924880319306560849 1.0864844782468226338344958553515364 GT 1 -11259219079021783753081611403.8388561304265043063432584549175162 1.6998992746174776030320171574256135 0.0992622302094548372970427136310163 1.1045411072528911959713911810022182 GT 1 -4701124.8739547018997807480560658390932826 0.0593296266652064862879238868675988 0.0987403611828909608228521819765358 1.1039618954974679753830228228518144 GT 1 -45.7096808616215460821541258644069578 0.1140582442149812845927307557145226 0.0762747252325072426601835583912376 1.0793405732295093464360535113951041 GT 1 -2333424972535988561303439460895985920364291.8167184189217478376397294753124299 0.3207073237668102049078261130469218 0.0663277241973457671675040772568592 1.0686297847652127029089450255964819 GT 1 -163655751351.5326764534760819616475059025773112 0.5383831449277317758651770773182872 0.0686296597093459261166533605586681 1.0710982931639451977911721438144514 GT 1 -463427173.0554135948814948502695492149885894 0.4884067659357398544201330460614498 0.0028799374662772757781554020144611 1.0028840924655249333481874656069909 GT 1 -32441905181202195.9856109267571684093561049589506738 3.6839241676460048481476092568466227 0.0812141582059185419889552287255590 1.0847022177394672347385182233350148 LT 1 -68384719431286944289433.0435042607708713104812950660436439 1.2011797137278007390434474278704261 0.0347542405895630175628838040870209 1.0353725371026222317680178554561152 GT 1 -1510024213439926221.6067472835917543600584861128228766 1.1944609525552939816299750965304297 0.0298409667756370546673744112003208 1.0302952691456386548676819063538034 GT 1 -414525817575536502.9334289575465931342917238941155033 1.2069018040345677633508279752219948 0.0852470644833064421496321905104987 1.0891012659962033183222967486290588 GT 1 -6535432062097202011233285459.9575791165735115961853047167821909 0.7906022608818754458346385156542602 0.0031615582600698722301769965354204 1.0031665665441595484994168159260696 GT 1 -509716115711689194.0305110594302653543848320993711112 0.0211545429524104534165675262098372 0.0696298136645728870700504872876563 1.0721727222126097856627634683262361 GT 1 -274408741655.0878892384959243914515742861240184 0.6486883023154449691422962261379869 0.0253381724109659054563163912679208 1.0256647116468347365113662729682421 GT 1 -573483972933978236237215461596133274.0158085284436629700287596075279045 0.1517700102615296725832471317986262 0.0266045682382581881337523542649690 1.0269648746678229443739735189849693 GT 1 -12396760579985569694088624940.0361175187625120065747254727157765 0.0278453095350946737697398665187790 0.0026168362850776933146575982600617 1.0026202661861154818750448692277284 GT 1 -565313243682748194371482758633120071230.4303942179704004561685135519372857 2.2389264041906034387988552113897611 0.0026498029519898715875839515207342 1.0026533198940081205895078587306394 GT 1 -4829.4433502747097383424683438286997979 0.1883788154337403270619575191571998 0.0807995163472407083273641443753732 1.0842510262806720112854779863406322 GT 1 -2387914264816834.9441678474567541230728093534194256 0.1689723270864625133741717408524946 0.0295051864800930129344444238764575 1.0299492205193386478124527705516360 GT 1 -782948385338622973232830402760480126087.7151706378396656854394586472177665 0.4587331200071225765634944961962398 0.0633924470195419483788655625290301 1.0654909180110390003009380098685658 GT 1 -83622.6470965951150161348908478891317406 0.5287255594894531087573815424253024 0.0065126745763680908878677960341523 1.0065339745717619734234444303008171 GT 1 -3541887750970261322210201579746357.8774315865021493245063422285443214 0.3863583268016480936554946427572046 0.0489356271274623590166468478269381 1.0501735290614083385624525049704578 GT 1 -42409403063112660209.8301880115001644706445510566832432 0.0517223747738586700193122288633184 0.0835859219690674126578072637718780 1.0872869661998305549246727647212261 GT 1 -1.5631114976146411663208290651908878 0.1052401319087319235182177293808397 0.0807597895567774474817838566747891 1.0842078083617072886576323085699159 GT 1 -313290623889287916809903397.2893993176883939619522513895112513 3.3925208574890515459814387895287410 0.0956389570138730861337536713238703 1.1005266144882443419613788365103561 LT 1 -1416465895110826071974233383721110510924.5936193313207644829629370540176468 1.4992689088661446642021660418406940 0.0173993182565096022687592939929074 1.0175524654319430474892332079810175 GT 1 -12509463004828.4117705314079620245336207524281863 1.0716269926010853174637007007940395 0.0903852084500602517924784838601434 1.0947340750795905296972035772159768 GT 1 -5957863226774390238837527294220509636190.2673123617751233201689593491579353 0.3478450422189798246842325710569318 0.0450595651813263785395561390557768 1.0461063123642349875930806664604557 GT 1 -1064105007971292448327.4455681697402234340541711054541227 2.1043855100102910835185113565402257 0.0473107933781957663206580536754666 1.0484665495853860166863738238292670 GT 1 -35186625297191128792316.7523710413101560418913919185658725 0.7892119723566090799877032673242367 0.0503756681209152489381172370688134 1.0516888127218950282585341628376204 GT 1 -111845721210.1011452465593679632882822250555860 1.4437863603812694499980801998215211 0.0024309366715237197116792860194292 1.0024338961953237049573549769990045 GT 1 -86072220077327.5339783130923196998510586526962631 0.1886294496780289508042844999359748 0.0126249574436357020313559542786095 1.0127053293970466013618625889981098 GT 1 -14177.5227837219312631199040477492299470 0.0610702967607443891575315692571621 0.0524624108300931016852778927088199 1.0538886708653352304273757567797456 GT 1 -62237885574118576.3886599204999359333204779749582022 3.4476041603927789739325952295839238 0.0665739436409492225726565487291540 1.0688935303224653545879553434401638 LT 1 -7704890622236685.4267855558123269284114032553698576 3.7820676810396522769422747009038164 0.0276053027232338209192166122636976 1.0279934897874871080527123920112127 LT 1 -2658101434358236636552354401631750403273.5646406145107493164584809135281695 0.6610137711673956571739305043242315 0.0129303267906046675186118817819615 1.0130146511490971191749454399971692 GT 1 -8009082545571436872112880.4791063007237469988052737077535338 2.0663985736578429611343378740712532 0.0150258137331694092243420788309899 1.0151398449891582732123176445118487 GT 1 -3092.3732607990435345684822072125403066 1.4838369016813465357760639640549159 0.0992207561968141807795817802345655 1.1044950638213443023548152648636875 GT 1 -2863326.5136740094725564600248596192965771 0.7541928370000407893224984154994393 0.0805481897137542352992506794331202 1.0839776449177245464345499984921767 GT 1 -5867082460.0814336841933786976568199662985244 0.6548149547472498338755712368525632 0.0114370486399692782726184466148765 1.0115029546763442192594832496520286 GT 1 -6554121.9135181091701382617477485312936812 3.1100946842567498288098870868160618 0.0156760411609728784648586287068443 1.0158002096505974500343924940874975 GT 1 -348748635877533632551664649742352381037946.2091324357030924707659601483702880 0.9946098946561556684907818902161923 0.0806862236149319719265646880436942 1.0841277824909286497246694222686762 GT 1 -327213887192084357.9518537266614345813265327525812486 0.5227420975045727110202570647047904 0.0097075173364095416615289297263321 1.0097549424524985504407497161462606 GT 1 -3233759225936754282320521489439609140350.6719185210815378225379528648636516 2.3240744170510662022067375254707257 0.0499363061182430239686133021494351 1.0512262504437228294528809466417390 GT 1 -1888450322843755827174.5100618088125163370362182223775367 0.4320135781591379374900572080385505 0.0345505371458095090526971869059196 1.0351615214620796075426503059412489 GT 1 -1841.7342407262445972228792029100194039 0.0750812517924514069384451420428291 0.0960084727156635061178108954058252 1.1009352911069615551553141761004957 GT 1 -384788137457.3492095542565813572532236502105865 1.1236772915203592901005725058159644 0.0585926782916302987296141944405549 1.0603793725773453314509640574857168 GT 1 -532829579169804774489387260137650914507122.8449036504253232022244318610413363 0.2828372622683386435089329749774484 0.0358703559732415900088924918867344 1.0365295079090201445170077550090681 GT 1 -256737108222803810769096578823659886.5464778869080899192836419379993291 0.2576818178842647066708938127639801 0.0385782696344511423217617192913662 1.0393421209427379082453920260710328 GT 1 -952860271357265.2725823690145998107214649562798946 0.9791917603226971901016617821013661 0.0136263409446650473902071264559721 1.0137200316092705467968319039401468 GT 1 -168471588909949083.1983718978621597858699280044457303 1.1560223123915652453410585538115490 0.0041953283688172394986197140921238 1.0042041534502701034711372228027622 GT 1 -152921449858851.5539201110330681596168518253091955 0.5460545047236599298866000603389440 0.0764918916895214765026361703166827 1.0795756994025247665516631260452380 GT 1 -293283674558375571314526.2987898139888461303344131936815697 1.8374972639760804491223433753887629 0.0449966619818053862226314412806128 1.0460404432005053091337741022143268 GT 1 -6648848136309236899227729199351157978.3922997342347234239448820416274885 0.1238581460833412145085268819294464 0.0184648032466606950208949868304354 1.0186374057421636546259521288354518 GT 1 -576543301311969294809063.7605908298292717662175568705179033 1.2363497629152281330199402475721252 0.0815380220091257340052044846343775 1.0850547709476671173515448010906118 GT 1 -195.4246163620896142362581134433558101 0.1220908922806077972184592441526810 0.0741102025698492391832708150455415 1.0770000606728177237613082451529120 GT 1 -335541444780874195507.6345302911926452430953365395885282 0.1257433209044306483667230320426862 0.0452355306890451678969861694643184 1.0462905979131030597046812052817082 GT 1 -333990033120654752072563.2680314982749521855473132644675896 1.6560305346298240221057363090384029 0.0676282897980516243005811734807824 1.0700237131195787493155501910014894 GT 1 -245503183721.4779925807840290064206129481642502 0.0208463773559366078628988207174519 0.0861239111317809203355913802224779 1.0900602868845149272823762157353945 GT 1 -95139864195423130.8480237710346745236389505157087133 1.5782842083420796474799295538273147 0.0601048804088146609581195451699043 1.0619869848460243169397177937050892 GT 1 -11119956258805636850439716014247015848088660.9346509243703842619904683920491567 1.5514317079195969352077348005116202 0.0953959615081491125684204592315034 1.1002579575532116467467931096320757 GT 1 -738553337.2457464696623790795196989019670635 0.4897936295727600445863312294613154 0.0678005418515786793691985420171483 1.0702084763047453104938285253066217 GT 1 -2907257414935147325046466581071333110.9022238865456575845344955240818896 4.9092065335297661980106548378075970 0.0639326750855452223426808441015197 1.0660678767638541582666411791667864 LT 1 -188623569649675434110635300117761300751.8858220311600222958409365369401971 0.0337247150869942535551862436378082 0.0484042310056620926981029857244328 1.0496149467650495242014734511605645 GT 1 -731359276105723074314099099682.1435280537603239274803243417701793 0.2062583091576881989160075949919378 0.0471740771707574267236492748074188 1.0483230543115255377110370139042341 GT 1 -23024875828578034178456237.3792328898004654257910634417063858 0.3161382307864683532575954132431435 0.0307689202313666582194628184196139 1.0312522231079467461884490718638359 GT 1 -116610257070265310607786025.8943999429606367609083113634724605 0.5439136266315111976961114007072743 0.0878183787111224294393501123054250 1.0919161625846828892668604446324987 GT 1 -294173844651472.6715310725440991322821983096655871 4.6633160772478328950780537598026915 0.0812481752957044891542003047734989 1.0847392423843602630206631023975819 LT 1 -21462122875090139561609257899192636515.7779368662741854247370217112935150 1.1097405682150286454607436879364136 0.0799517096324661111097802649409444 1.0833291207866500907102734399082707 GT 1 -1949005774354.0791942637606507874226131589815102 0.4726881320162581044633679297962190 0.0265746962282521027393859306943460 1.0269341866753815202611291622932366 GT 1 -2066.8404048461997922607055076800458291 0.1036708334021922589112297767636830 0.0253200683539753789455812004567537 1.0256461371132463818082626599279659 GT 1 -59081280808116323072170819553302593.5983726465337418554537584931681194 3.0556769718677685242153343127262747 0.0289287009096297915428991136568323 1.0293553848691797045207437997947897 GT 1 -9299898641754824824733954.0042713144530868103339644045627743 0.4240797955845405589693098382302618 0.0672884688920753188993922927121708 1.0696593101779727413671634626566474 GT 1 -661329500.3769285460344887840793947261312692 0.9658016506088465499481604552662891 0.0574109532508625329699210847136850 1.0591248848134304073210899410398088 GT 1 -2207225182.8786689733289936758487238828300428 0.1504094840769697815971932021009652 0.0920634556381926420226968841455817 1.0965807878870074393902800554079539 GT 1 -24092589481476193358078836860787940974.5716789601165665578329301571468056 4.5397020091248069467946925149309577 0.0843052914522950193240999394125189 1.0880722574723423034154996048126524 LT 1 -12448946611320770907899989.6887020244295271514596034054391434 0.0056410634108020047541723541550882 0.0102392558055544885833751430756898 1.0102920375918765115298729724802663 GT 1 -3403472870445601670004886707030013051951.1433689008611403128916542125706866 0.4205783838191095480347198047461156 0.0378894664436486766001306547623033 1.0386259351701739237019615681964167 GT 1 -30.9267154046157985919884821212677083 0.7799791402063318951024487224045554 0.0331221226267345864528696813821483 1.0336830817075703264039511313111892 GT 1 -8.9286412335606692099658712135786255 5.8267730514496615077672610436057096 0.0585736963682720281521038411362410 1.0603592094327069038747968756195331 LT 1 -111621816116972845257866235218291260775.1127747922692694259882940905347248 1.1746540188371678423213650720589918 0.0701097245497545420693788920687401 1.0726886831822555504111679440877342 GT 1 -9798060632404780079826477790405018.0100515993954105632593231255549904 3.3993103075521728118881211810202228 0.0834426328531280637689526086836062 1.0871306199385636958400098244407571 LT 1 -42559488195.0726895212765468946950251743322522 0.7191634662184331629795140709536383 0.0419382321472033264573641782806739 1.0428430272517616570147003184805233 GT 1 -33866036890.7960176130924005120803115218384982 1.0992019991658423612872154880378581 0.0566655108843078918605455954211076 1.0583343518027329717828128512434960 GT 1 -464835109459306772.7650333462408807167364106599116301 0.6865793977741307567430535856493920 0.0469759746195730447179194502036329 1.0481151653829307759955558592714429 GT 1 -3.4949199894823101411660818840251304 0.4034417061988572735248248378110463 0.0017966118662955038950010620177236 1.0017982277090461030849647984930863 GT 1 -1167703785990411661980159367900725821.3649558534715232311363785145484969 0.4307874551234667810159451070923349 0.0498929257208632240142138844673365 1.0511805909713067551434493633013175 GT 1 -1133074745480541127206571940565716540800.1006416889836519030350077747255252 0.5566478435200597411635936905377722 0.0729210981739205839706236303601939 1.0757166017998891591541043628284437 GT 1 -310.0302470105290157534348823444764902 0.7730480179818465566251217136885848 0.0277049560729467482292305472893262 1.0280959774467663374152671388149023 GT 1 -2.4429773540890170858389129468539838 2.5541750625134756449740136134188443 0.0329151497741205917547818250384442 1.0334690415397320264748250511089652 GT 1 -2121658703120823448112548276297592.5844088430584623660724751191392104 1.5002883629594260789003256380030844 0.0069697620981855235009256607156440 1.0069941643413594720285143304034296 GT 1 -1507060193147350822237559276112031.9657298499384023026275273250045434 1.1334231160665161338205818930486447 0.0958380116733721956941616236220383 1.1007467440158826170160936384922469 GT 1 -2102936230139824282243201823307861864.4064123984918584067018736208079308 0.0991038608801181876157011682336428 0.0586394663243555762057497366054244 1.0604290739068014431528080272754968 GT 1 -19.2134381789775051626012123947872545 0.2187355605279761303331236944076535 0.0489588328363512663223044863928942 1.0501979290838062725342609758861241 GT 1 -231222455247400784095628894948020.8734774566785765164948718388209920 3.1292281495257064555517785963964419 0.0150282321061356464242325516221021 1.0151423002574981285301800905231968 GT 1 -733933230634536708536638890553616.9779564938788533065548995180844424 0.0899598108921944379830549392255973 0.0598051941417558439625265180745202 1.0616681849146589534390279515794582 GT 1 -112475506570.2766909939764584115840742652197460 1.4201630626010455086882150074147894 0.0483107585360450924085568702688942 1.0495167245133336428823201772703163 GT 1 -1842458232149002.1646478927031812015851713408008875 0.1791105691447355839529106150439029 0.0369361849730762580468771164492134 1.0376356024772564905974975937403961 GT 1 -1297557055.5274992234133084511842686396285005 0.1073468187877079288313735534814186 0.0917989911497875040099955323821464 1.0962895494950621541519552908575464 GT 1 -16532124967960523756280695.0653632295154373537179144630976544 2.4033231126234889778909056533742160 0.0188465438733484042329839253324232 1.0190264033867378739554748018849405 GT 1 -3533395218448352782616822284374595316.0517473119428666324199059166299200 0.0975945997556007699065472296334940 0.0256060876704284271351005445615600 1.0259396296552454428059833188586262 GT 1 -12834932655646431088963800519579.1779022195265814826753321693555429 2.2413791283023524471696111433908041 0.0242216458928640960483662012051467 1.0245198145609966485011465885477605 GT 1 -4437826653368810033.6632855596431730858711344687772325 1.9552658669773361499821775522160744 0.0629659873287257313196693923797212 1.0650356978600787864256269979044642 GT 1 -5969131682716810756710801296660590906.0113657951028466315094852650777026 0.6234047180523983012465195037730777 0.0408557958656124703101135162329440 1.0417138461283769075122735768565953 GT 1 -230503400718515095201397319704871616348784.8698369644173770731271607355753406 0.4521064292098801706788200531673670 0.0467359718331090454119404466576728 1.0478633642059937634919661038766275 GT 1 -17958829232945.5116498275393599918950327833530214 0.8251940941573307166217399436343046 0.0919929776968543922130445161951063 1.0965031665967125308140260696283342 GT 1 -45707750608966405813.3682904341020485023686987532638727 0.7517067551187942033228944645031025 0.0395558445696775933089168499153619 1.0403594396086887843350559634316158 GT 1 -2836600738108986427.2359822670413920032783960240103160 2.2781030643460195223922475261842767 0.0546194874932975887258526630721126 1.0561677737964174163128510195408426 GT 1 -18791417348079189256147.4251779882992427292241597083700552 2.3066722631821321335731813990749771 0.0101674436366383840584577130234161 1.0102194851449396885559382628987038 GT 1 -379499841.1654928207525998849381545678900628 2.3301527920278143051295009960670936 0.0476243080540655854717592272023559 1.0487956876414552113206446408475126 GT 1 -62943.8133421151073361894839357985588116 0.8477670264708762396774158776208166 0.0748268910533813175845024143547482 1.0777744141719614533394233693118086 GT 1 -462645369696685235.3012486246183098435915578520020637 0.1146849474636871540984527875987248 0.0645849555956164933323629403397687 1.0667649504282149305585825983542870 GT 1 -6452209985603016037854770845330756.7595705998506842396416435096620842 1.6939290239313142190595799834412594 0.0951850464178688357888334995131120 1.1000248273692581922856597325207339 GT 1 -10809584201394791254267112363139378143070112.8880630742395139645888307194845265 0.8153372545232339379566815537515277 0.0805764378877470306729730789987954 1.0840083682330933008309293282893181 GT 1 -6971415743386309418937.7288216123606692116359043486824402 0.2000986669833362585273496441488220 0.0554306094891779151687533740676450 1.0570261267552827541184713398235471 GT 1 -23.1774699683516497820305717127351402 2.4893504491381365539825007129465501 0.0881949766422772060801953020481592 1.0965914334748380913214117640670051 LT 2 -3704693168729980.9353052270415494837657374027307973 0.0747923887810988432664325365885979 0.0492817336266049065313434133694892 1.0505375101976551830365578465792801 GT 1 -360498249188177456527271167936.9335432825624912591387927730347132 0.6290466042628894964026073021443684 0.0740248592298145862100514483711152 1.0769078905168472683833792986352437 GT 1 -3456070885498729625908105424940293227028670.0793198270576168972538653363186643 0.3692462630652720187190551102725846 0.0050808974084536593694437204348653 1.0050938490569819333189285169444067 GT 1 -58877388506095409070507.1820520817158739735365961622076042 0.9104840395032711153834473723545732 0.0893619129611339810435368907917987 1.0936097306450748667538789752036278 GT 1 -266432992143632275961348391408059406381.4314984914532162292083610945613356 0.4205840203968754739082913553088914 0.0781890905212394536114952551968670 1.0814151637920576842065180634632315 GT 1 -5471093255.2651449251118694102872287170944800 0.0493546989787017882878852286194057 0.0025316801903958894732156198191865 1.0025348903118342801550298964300365 GT 1 -2659540.3467835112192458496289401945786189 1.8188881157459169705506132921819016 0.0768718191174353807986193906809934 1.0799871799257853423079309070955800 GT 1 -3865767669996.4832457973351687157435727063350688 2.1537888548843695481245424471131776 0.0373166710311220304916567453278474 1.0380307593016434438395504752101190 GT 1 -1622987745514019184842095092.0931515079682084903598036939716850 0.0063202263352296250926963818003977 0.0280591179001564302117195493464782 1.0284602972562975965628233527151626 GT 1 -35444021394.3834633706015041878442924844035277 0.3241740507790264498891020055585115 0.0705515600472367131243261743269765 1.0731639440931788842825912780386868 GT 1 -125518808057939772953072803090519927478003.5939035179630019962402504823331621 1.6130779635509834894770973680657774 0.0853464808317418731841961175234638 1.0892099529949604292384692457409971 GT 1 -210142860100023.9168492779896032945899103242919740 1.5555674230331556553317858003061472 0.0032754879805809672462436498081575 1.0032808641342309166016684455361600 GT 1 -12154471501.1781383631942960738589838815024297 2.0321616918379569471184121370801689 0.0983679069578080311302100850245709 1.1035487212354756748765572825899594 GT 1 -655933387708776.8800971286669374769265448121461527 0.8782161603750302115762120699915787 0.0923848729777413569196527292979529 1.0969348591568838828788581096968976 GT 1 -4683393064106455481.7162910350274092482625335478146213 1.9153696124839219700246004563782920 0.0276524612377550921901874598933851 1.0280419882606077059756723225985768 GT 1 -633.3511526110322882969083451864552661 0.1732408917582909948169156785605642 0.0032486390772743966725393255974154 1.0032539273614586752465279947810387 GT 1 -5425787247323283903946506580600986.9886840850226306850492995456810877 0.6314469480419335329599415747611476 0.0395310913527324770864737992526928 1.0403336672638498754731496182240702 GT 1 -345908922245410245041912711685332021365.3680018434628357139284686494963540 2.2492406166783080072885194069855001 0.0721195979184660492500018116914296 1.0748524315686118585981771504545249 GT 1 -16249726088.3766122040229729254241511179495493 0.2347858196234737792702157983340799 0.0726219419266522734137676441331067 1.0753939669193475829502022128357617 GT 1 -203271793274914049999456.7738055300370885689550020071046717 0.4383153551935161752309904575293626 0.0633649663738627999176016503890643 1.0654615778221306310814756647358277 GT 1 -5.4247055234635331532025025600047296 2.3422321450705258372030624288788661 0.0319675509842521473365010168804918 1.0324896705569166978184846183158686 GT 1 -3868566528211443080894705850520569.6288675482987296895084662383651348 0.5645968076960863045839789637046341 0.0629197976876321137749894324278138 1.0649864056229956019896355210137837 GT 1 -164918041752652408667298178856.7556582307082679105312343925378909 1.7738742077681966410288442659919743 0.0174247643308699210945766236503392 1.0175783624258317611553893781348321 GT 1 -2070.6564588078811875525458671462937323 0.2620984870487408444125592300048614 0.0101777611871213978542233699521803 1.0102299087304135273785031453025285 GT 1 -176160742.3507539482274205121407684105246968 2.6634285633830097250654390183218107 0.0667841294266351139138106267578079 1.0715074319460259686812333830771088 GT 2 -11963887606661961195469604318359330793618950.6469138574504229989439017704997492 0.6119904917025653792438597580253764 0.0869069745108481683941154178690602 1.0909175136661452577306515580984204 GT 1 -86090264816160765902.2092754247128206590820246566860497 0.1324779697053867402144007901613731 0.0166677575662009634272194476120041 1.0168082277063535190020432969261985 GT 1 -200819325197708342131189797849373456.3175504047774585313310750025538513 1.7887247199640278484367439295689818 0.0774654710056821713515291432088411 1.0806304739637938723922874791151798 GT 1 -29741521.1255224221327712592287964174608943 0.7995210191049530524221485413349909 0.0948911442750364288292678575608680 1.0997000599465585888137648828523576 GT 1 -150.4114977575265857913848055222483293 0.0625413177364748664861257732709104 0.0877797066347932285117235923104457 1.0918737683336964498375853162415648 GT 1 -2612521896360315039804327054973338796511610.8684156498241249018658236368774010 0.7431959400845811006499420679060529 0.0592718521904640054924369183901409 1.0611010782561476792969171931858087 GT 1 -140943963796721.7119278702613103229449634288235285 0.7342111705064266416910329703101714 0.0825146477705836502768692036063876 1.0861186640534223857242029808421169 GT 1 -1483207382967243365010546245484833542399.6960723045887290837294519357966723 0.6675463977558340145274098696922326 0.0349458975701011210826072766829356 1.0355711145205216244682988053168854 GT 1 -6916740226886622064.1104644205240368152039606100797551 1.8625824611902244705157384196878812 0.0314323140693806772450284215299217 1.0319369111939060710474392335083762 GT 1 -13520059980166403334.2535372925946195799202284168053945 0.1451680062123894328006030236115932 0.0207541862933927409607412800698056 1.0209725814449693736386088725400438 GT 1 -3080407639932672356086146620.9034297237858978160718415074033991 2.4058752158061162564596871289824327 0.0080725671741328191319956815553536 1.0081053267663101251025898693975654 GT 1 -4688012426.7524724842387131057847645686173605 1.3703057775772153266049837215587335 0.0678534500161476960761109296188640 1.0702652341859030299786943369231651 GT 1 -29280350915941243937655061682993.5819110593545129100237672655486909 0.2376934152712111107861566294835632 0.0227733444318913108857098999555544 1.0230366624755811850793986635276200 GT 1 -3791154840370701966671559.5348200518387750657323893611013342 1.3959994726084111051473131478820261 0.0865474968740399875887042851779652 1.0905238989044897186371406188108484 GT 1 -222169343002541341272965.1334926535079562184786380450865355 2.6396920942183525818489178059077884 0.0134431959419050082836042219768623 1.0135343737701218836639228107862199 GT 1 -7471214674.6401228058185756330491821536481335 0.2211816570345463954722982628640926 0.0559887072225196777013925160358512 1.0576171502201799293342005217020923 GT 1 -103886849837160439066888663045512.6468487476319827823238546963429634 0.3656229045889893761852185352832739 0.0326593250157525259250972640817671 1.0332045446578148946358888109521601 GT 1 -2096365717788754440.4007658503503785208337779507594427 0.7454697053535544522355651165675339 0.0566472132852225723456366416307987 1.0583149552664650955207341556794335 GT 1 -111470083697116856362274987.3987912765817752649259213770367572 0.7616628309189620368876672414493764 0.0039067884801555313556180931974920 1.0039144399131248647073286180677921 GT 1 -28678942367.2445923194334538777378655067543418 0.6830557900799216748015993598293479 0.0363519863538197356581689046264645 1.0370291821205995302809052281975452 GT 1 -8454845366136420850235606063700803654311.6450740907708199805520990253142623 1.1176025891885351445798107442286411 0.0048703686902213436832662148028277 1.0048822675862056055063036999858644 GT 1 -5728791.6714166472813423703407409594763204 0.8790939439546967479992640458275385 0.0313827755868755405530148088824884 1.0318857663783013027168536355222041 GT 1 -222776836710647384.9361525154950761543160458416447116 0.1398899606195361795458672044312489 0.0074636088992295092566825772350899 1.0074916009964822617450493942102618 GT 1 -617923249045146028616971607736661008.0431750863109140646059117304674526 1.5160177150933687539948572462408930 0.0570499178702278024757088177249819 1.0587419329250104516144545169213511 GT 1 -68116475161322259048007963343.4402493356401089985476637482960982 0.9006934924931612659557936965587909 0.0733934240369266546794897545552175 1.0762262091511765068590920692223304 GT 1 -12839600026063.0085181913318217947751879076203438 1.1346487866146429385043749215478093 0.0429300138631692488079024736331463 1.0438787594436176496403333362551339 GT 1 -2562782420056390551422774392573515.4497457933109503606202460727797458 3.1938694665261162451229805642267365 0.0541876171978027090177528601173616 1.0557110564472002686949037708167191 LT 1 -27016102260.6914444589636861906125671755825845 0.1290537135722801739392170735803082 0.0683897716053798631303312796982811 1.0708407616477027220580301164933462 GT 1 -1467477.7995328293081350764632478465243681 0.0349768093971497802403946402695765 0.0934518367241876352693287096018959 1.0981111191718142814157458714017047 GT 1 -503783835917228720334028884873574818793090.2846373291966439130847320414445142 0.5347289281851719120665990363952599 0.0912142732229461053680567902536796 1.0956459367096073641680850332677518 GT 1 -18062.9607443727476050650408815632983809 0.0976025785895746395421510645520526 0.0018350892829710784889850087992879 1.0018367751220685295547676766776200 GT 1 -1741606154059919272718962045888185646.9603590942887495124334266964182484 1.3409498942428998479336206925833557 0.0996356242163091971176525951508438 1.1049557356104457871402980303516027 GT 1 -8798383260189903.7721985888357505283450500038296352 0.1146383815456725900746144015858205 0.0343849956537252075968878146230491 1.0349900704356622378985885267606961 GT 1 -5108802533440630230345239170079964.1425336476620237800556754387977394 0.1069127247701217288287073059215769 0.0613290442058436740892380595618827 1.0632902809997742822644348393188387 GT 1 -329299950745737427534110672708185030.8475277083303141301608449374923096 0.3247308037487925955674037813721716 0.0467226673002324930378036205406489 1.0478494074850436127070081092036309 GT 1 -379062430066502811883468010269963.7114460385998413767732733316242603 1.4476521195505218168234751490051000 0.0608835083812221612750830140059408 1.0628157482366589827620211701607858 GT 1 -104307075393826566379274609444501319.0195061609449161344513812909116118 0.9585389009586353119576065186265327 0.0008107588569232602640232333843199 1.0008110876996387434101525949497418 GT 1 -1744100240409081659586867824526.5014960163559359159564145966042238 1.2431282587740919856979619163476244 0.0642289400931331035265638814045276 1.0663844265391597513516334570379941 GT 1 -1373426558290748181223569952501923606550.8088700534015186413290673184076020 0.1437469057170314811115798070849022 0.0834777981777666622414362806245017 1.0871689874216104778085986677519952 GT 1 -2172761432563888416649552524549544.7058782012097629102096525504409951 0.2612664219452464483853778949671058 0.0783832826649666194297090369785906 1.0816258497355911834262394402339551 GT 1 -3296636443738579161007625407.4329388856796064673489150707932591 1.6187007435183025160721876776960594 0.0950429127867227040149128711490997 1.0998677538503459531656436971392301 GT 1 -52454697594825.4248794632894209377349351892710339 0.0000143033611672703600818741219230 0.0566751862491241476629767046040560 1.0583446084132419703985463415530775 GT 1 -9540858262121152495046426556.5410230944191284019207190646048010 1.4667517274313095441597185548486155 0.0323882081474807245957653024370384 1.0329243136188692810432103756561975 GT 1 -50.7903806274486820469513645624695877 2.4384141098238415180780432288483414 0.0050949520121387514914831674684640 1.0051079755351244700377776301065093 GT 1 -483332920.0340789953660193423871212238528166 0.6258359716708864128138518797697963 0.0815105840197951789466209019488773 1.0850248975504475199790478045569562 GT 1 -323890793943073417.0091173414925549932615755011213533 0.2456557530912059506421633104507495 0.0340431345279124781048299870483901 1.0346360984869877453705337674292343 GT 1 -6714980022561610932058107.4580456505066079503198281652175651 0.6376927100594340494824982293969247 0.0575745648413118685693661565927029 1.0592984766796261533854287119536300 GT 1 -28.5024746299869605278564849116162151 0.4631853852844825007849124641589148 0.0350973563117225801578152774664358 1.0357280701022848208595736906388894 GT 1 -557166224231751432343113436026309486624.5928829966831271292428690896715684 5.8575070248759767437658673166350238 0.0176293766185957016343219212402636 1.0177866249461682842018954617600442 LT 1 -24817576338490.1980312779361084276044236032202311 0.7959962986664674509514815394616080 0.0760619164618773032696098149671985 1.0791102187435426821024276177671869 GT 1 -20734743780305690802333.4884457666119523278751007969180333 0.3760232054169114081057223128920322 0.0410992572954549599608878310271463 1.0419677102847422321159381513259473 GT 1 -1147811171548059658679495566837.2436521476955463489007470979891508 0.4376514955976182471131460479289466 0.0583117524689985691916647774483186 1.0600810066002757166175527914172659 GT 1 -352429910339.9439957884703232451691935587216714 0.6574569598201254120625725408440632 0.0959769227191706259370328488585138 1.1009003909502743026758031868173976 GT 1 -16960835652125345960766390191.0007497104314156782041313001234884 1.1853498979351032819864925535859136 0.0280091072593897530653764589831939 1.0284088441740187033329877417254205 GT 1 -689313288278360430308793139.4089557766779387374768519264547874 0.5616413268883304113496536441517696 0.0639200993037366823760825595550852 1.0660544421561088974884113361631819 GT 1 -4242211.0351870945067255106663316851678785 0.3305710774894169440444961732633633 0.0326268033758585090744784203981108 1.0331709255884792892728601070214538 GT 1 -38788454052866129442154.4033177008821449925971122482711685 0.3183980851431240337984996894320329 0.0723027054445892443363712547379358 1.0750497906197035001698825357645718 GT 1 -3341253916760163620473690040686683.6831035951731243897558503977209050 0.0157045756029938563329702396491712 0.0329177845857375862703899397057012 1.0334717660320096613591748635308892 GT 1 -121020095459002.3830363412996135230909614013079484 0.0179686735910399290586448258941345 0.0319218239693521382896106510185022 1.0324424346042629948984558064149949 GT 1 -680688410480163596152.3187919584215900225819445556891868 0.3742182858312442008201580461981589 0.0194252244365146595488421610686676 1.0196163735677272681137273963195208 GT 1 -1517678781147255227664855476930.6379056248563150154089425137355052 1.5288495229589410075793872385371985 0.0072667769372727492729374224631003 1.0072933085719194178044049816707356 GT 1 -3974369153674662506121103176459669867791.3561378186370791598256586005115490 0.4067704910435988203020380702745440 0.0489012373782350284951599403208881 1.0501373704916312613006125720501997 GT 1 -5218585.0618618307044503137652107217501807 0.7516963477095565035697892543532014 0.0671565481958020855967165626502690 1.0695178823479688315708138216152031 GT 1 -1079272.9487916356321567800945782013183416 0.3377927269673818603596893583254863 0.0092656049817849782406582167021876 1.0093087977111695177006398726224096 GT 1 -31019323714.7748342359624384221866700615556962 1.4751809153775214053897272714629146 0.0465538081695735450730006601897297 1.0476722878041585727419510443238861 GT 1 -5256861429147530970991451986351.5298496552025633557615217252449401 1.4763706702137814884868298124728019 0.0917575036424709131515831325579575 1.0962438695636964272251390662701488 GT 1 -2.2745743036976302349965769884019714 1.2086894397960412243787275661725426 0.0042644280703419244993095403454650 1.0042735466767196624882970842610690 GT 1 -366.8340645038291706374770546141501915 0.3020219088174117594852649196892182 0.0451818983890194211150072006609171 1.0462344261603267915053587058667468 GT 1 -2.1768442601392695488893075404550811 0.8112436793219919169684143450417323 0.0769003350915783756392114574251279 1.0800180709928985081470337179991750 GT 1 -7047257701355.6262401357373249809005892528346828 0.6162667336020221633854198395508769 0.0427307287535081591786471396985466 1.0436705569428201912676999375539721 GT 1 -267790737918562790621381.6879462556070328867147316001337094 0.2915856396085358986508853006574692 0.0886498228815657312469409881032771 1.0928280679638888809493264324562562 GT 1 -5342793663991199348976490380487359948.2996994110761090291064313394045056 1.1203862421434071789983128459591539 0.0706774798408103519936164655225126 1.0732994312472913825287270129306424 GT 1 -805338130828443617866695424770538.9605735678948352666728837148712302 1.5353321471434888727013228004172362 0.0658426155473113582938408684656051 1.0681103491108120838756027214708406 GT 1 -1146352098270573770518356057745943399627975.5639014967859449747016709730068946 0.5917052049743210363603689052042801 0.0965730762532382251939604680315538 1.1015600535194705943268325273115661 GT 1 -4270181784.3481378531234598675431764908486595 1.7996717345846622753311699529256298 0.0779597111653609367773534639257726 1.0811663591626259593882514778944593 GT 1 -71821511907909.7810011112342406869541448352718669 1.4378665011329330983750458459473540 0.0077861148281419447056563025939753 1.0078165848854947836671519994171414 GT 1 -67843.6520842268799750933884072863123661 1.2479857729536240401334971013729607 0.0543913367235542090970467653744017 1.0559264707009029328372847677299488 GT 1 -655356972681528.7006675981505275724813732230480354 0.4871039723687602942230713151239073 0.0361879971591366019369412861047136 1.0368590211899694812899197538758846 GT 1 -258530861527284255959703.4188161463672948994913604178084835 0.0388780454917785227535910517431275 0.0452808889088527125604635060079623 1.0463381062763920745810281323518052 GT 1 -649625.2618448813027228807354710653363938 0.6987824927542255584472035081115363 0.0766241635530235025094086341098059 1.0797189372752710690929556354202630 GT 1 -7855236962507.6396901976175601835466594823107781 1.0578050466879065688106033331752435 0.0761831020468743425042059384940608 1.0792413893656053459228783098110605 GT 1 -4646447562212162878168.3824958259190647270830185233851405 1.5825989704927524659183621084580614 0.0952359226101573722985004768704441 1.1000810572342501783512488550402235 GT 1 -756112.8154956973746749779402236947615135 0.2585295450584180990296400873621295 0.0741468971494936457236091793826935 1.0770396931505700597777130697502314 GT 1 -3909027506940669107063592.4923620848972002900481348303589598 0.0002412305943562174892421617607997 0.0464174521214813116863460658915340 1.0475292841404115666872544145776338 GT 1 -8152291401860227881863850760496312.1473364178822565477830545397490354 1.7285405604458117527394482617923740 0.0701730428620059573324163966105208 1.0727567777411125001950658268105934 GT 1 -12988958101461176442733624.2016915136974542333859483673202450 1.3248405035311329403029583705130132 0.0454921122096653200651710271737231 1.0465593720575675114042007743749330 GT 1 -993124340821845668757.0296802028280784886730395603496324 0.6604846401197801317136242668690918 0.0268514181106237341335109387260922 1.0272185035320640392391305720533251 GT 1 -117872182182712304840223.3878720498929151279111847317632202 1.2181719136203789343326531652727376 0.0013237416142937203831612464020349 1.0013246185341867581421939420864431 GT 1 -6.4544256933166223595777464087578961 0.9176382229269299615067508598392572 0.0948646788180758418789604735581656 1.0996708202922621244695186878497371 GT 1 -389332956823767914437.2201262800050972835507913407162631 1.5129837021044702556828427043186005 0.0775079115018761594238410201928440 1.0806764792580255122030995877129520 GT 1 -1536713410245620876185997892837431605357616.4015059260044855966646392977861496 0.5971142312257322253521369813741317 0.0004911262964038639663396693889890 1.0004912469384253035016583610883954 GT 1 -52645095491407764.6223536842797320659621340855347232 2.8884593977773184009240292963052305 0.0932742288395259565728607181189212 1.0979152217049653124068442544279105 LT 1 -35221003232063937883440681150442355803464.5048589607494125992287628428107776 0.5454512930641880728939485395416775 0.0104651438157868225841373501201042 1.0105202885021193486275862687820018 GT 1 -922634901216595233375322360884.2634295915392340306149249734230469 2.6407203655046004722248076738186457 0.0754480916907358834145521585350683 1.0815229762034342944073747990517611 LT 2 -873821941562.9630037726134328737831521320923575 0.8240702662019448026282380314107608 0.0460353606410714290139407459382861 1.0471286738822995814903238410432019 GT 1 -219103969559073619890571604666.5943142110276469313357488334857445 1.5965504304162112343680694783423598 0.0595622704224945057714135789000331 1.0614098423452998303634736467865913 GT 1 -230645650523234397824626721185399.6324368083041563509090841139118422 0.4332962885403823546015727372659411 0.0769019479224392227376130127105799 1.0800198181848119295787067448622134 GT 1 -780848995016712430645401435.5007263082062701111766919162237425 0.0116126270400545476511649279588838 0.0989592168891438079108005294874526 1.1042047581242152394913777425813716 GT 1 -532673524780.3975562188764424175077844317345529 3.4904130672657549899449992653964438 0.0348727386788969494547766153155412 1.0354953093214733522062676948314705 LT 1 -17.2985440406479882817283032872878437 4.6629213873831622958614068816970678 0.0850377670407334046650506005649977 1.0888724900128241916186423477056448 LT 1 -1805755.9067287472004981697103371915440123 0.5705460418328891170789337495263985 0.0362959896472495360867708925617574 1.0369710747215476728292558854860487 GT 1 -333058185117654783988556033203510126931233.7058629542056216626522745420396356 0.0883196117492440402731588104885968 0.0772804481324217194446784202016356 1.0804299347797329947618076320435579 GT 1 -686872684001123709570022415.2225993599110850864322266614991134 0.7515916341622145895003265204663427 0.0854348860990893013113826851027827 1.0893066120446967937940707474739335 GT 1 -280538380905934436037508764.8846658732916718409486762459484067 0.3883489323857159367100395816547502 0.0666819053329071676276484867897511 1.0690091987626412285246099293836115 GT 1 -743719582949248039591035512.3342916706211638947062528476399601 0.2526418392562247991454210078585449 0.0731584541999310072799933656516579 1.0759726602813749407283105166417947 GT 1 -590163725889801037578615091342216761.9137447305284632307719397034063593 0.5141335972449344010841607524351581 0.0343987821145960010484593880795327 1.0350043479264085576024344711479386 GT 1 -262557198.0259663785821157301971725514331565 1.2121906700847752284019800595830419 0.0266772027554919343244982382203080 1.0270394971953004107321861642670849 GT 1 -661473689.9595938949242017240593973106747979 0.1072612832068261910570181286198302 0.0264410889851213887016878641471473 1.0267969413476323394611581695676537 GT 1 -499162491094751665867.1680063026685124599651268330477343 0.3576989482426184872661362695617007 0.0829883480577843649360730018531057 1.0866351002172882975533673783412116 GT 1 -7685426834966961.9129615572948569316883999572604070 2.9925647013758399103239443376339628 0.0553780481065407787355302719319135 1.0585933003710220799805139629954729 LT 2 -42335164541518366162660577449.1720797800053220289195197988768056 1.2589850520899437787761341712882490 0.0001461077968751736303336635885045 1.0001461184716591195927845858758889 GT 1 -41348884719371240227555046832915744252.7778126479032442980140909067033615 0.9892715876220811112901037644003829 0.0295592676102257653702357953047140 1.0300049473880239253197088833954076 GT 1 -21347145207038400850920.4054462971411435536596376256226955 0.1271204671707906768380218946841326 0.0794643949247848674220719243798776 1.0827995989101689602276169463761455 GT 1 -59212812387676450051.6157425052370444046813982189889160 1.2076621755336196654800521410051808 0.0919259487165221885125107166849049 1.0964293494292550636112782274759218 GT 1 -8151.9238381067574923353203501310780262 1.2457521548819135410249781251920515 0.0380952700057139737333307987004377 1.0388398664905215718887763143222448 GT 1 -402481155393047615.5407976119363596188871330568170411 0.7059192327718872501276276771948226 0.0957950400561186143874990400783733 1.1006992186866868287441618418970395 GT 1 -65616685699756461885373384369524.8340703796228344795714742862789092 0.0982657889366820540575883818101363 0.0732145429010706930877094653058287 1.0760331780673902324900897612623938 GT 1 -47075.1121635080410066075683191344152811 3.4437556796031182620991557951425926 0.0867281348651832629999239938382386 1.0907216714802221485375811030324060 LT 1 -211884407304401018137243926317.0510765257520708182426028161213467 0.2634799835776243454034728789683068 0.0124166791590712221732301088519963 1.0124944102311576146323799681274526 GT 1 -1315710105845866031654.6760553814207797348619870815069788 0.3142073961345926681964614981382265 0.0880348128786906435103029302820945 1.0921534616524837723202356908047769 GT 1 -8800982601911680391157627.3411074136395971469481861489631535 0.5129818011086374056574624833947580 0.0076912740899507407016934936616947 1.0077210044796744621760237827510339 GT 1 -877103529822311643656833929173.2994703208935406743464288731931980 1.4141724910508282337716492962962587 0.0735105620350436923912930572089189 1.0763526332515929310195373679790545 GT 1 -32268929095029146526999639336882331.1210248645157554012812156188661169 1.6501229555108574652840579826462708 0.0981497401719498838481353473876910 1.1033067817603539705018039856139505 GT 1 -252428.6440590846794905681242986896156985 1.4349659909401298101573926624293812 0.0282743787345966309508473900501348 1.0286817970197061818979235487639075 GT 1 -814185313037667551809090830667295130365.0410084343578944878756943352893752 3.1007783056430820015187878347850858 0.0425284481513981887328187573151620 1.0434592692317914800848268672339749 GT 1 -684065711725906575815899343659.6957021740998526127458254393119446 0.3591819088508994771098269947694860 0.0212502307680732697998484357986595 1.0214792674555154846897630292492179 GT 1 -25221659175840766785386983368072.2969310876798762201994012294698762 0.6063962635652656548917751601656197 0.0749946919117372237072976055946893 1.0779558030123792402658989005517853 GT 1 -699924240136349.4543141444702588998404012137928755 0.2254176564502430476455521050612643 0.0279405029563052046748993376112818 1.0283382654447084628999158446007519 GT 1 -121737691876003992278915579855.8151879374797001286052924225481542 0.6818244257052173756358892362643382 0.0464592198064158120440190978550375 1.0475730859064813058114317067622382 GT 1 -317779963816005694143427221760393360862929.4698301890895669118906612189959412 0.9579677278176518726276098826590737 0.0860448918302528317314536343776074 1.0899738245222296482750034792656043 GT 1 -154220143434004200259794278045804.7695639874666520227373724750328998 0.7879183767480402147068520101765241 0.0484280245683353999706195490222802 1.0496399509327002565320132732908132 GT 1 -106790394052057549674645249407513.7521774452393240974028014159356555 0.3208852726072326887948222000745438 0.0039247800709921552283455136867648 1.0039325022321066269058536090434518 GT 1 -120685239019149331628111785831567404787.1328170910433779174865659626175128 0.5957684905826850055168526757470607 0.0183621182447122448138390387915369 1.0185327944848412977207998500254402 GT 1 -797670277424828898912375038991495323697477.2577237377464436105772373319742276 0.6602859238291706995501403657620143 0.0191702284295930436676349111015472 1.0193563598864794519280981443043868 GT 1 -127074216074957240030271072962304454410.4972207178741393573536541312775273 0.6137165272348371338276750521825708 0.0402465536539885192651726976344512 1.0410788542287904846134542038656260 GT 1 -10842158966448498.1868341142174318495638475429629912 1.4125996479179764976343990266553831 0.0277022255223136516245093827282018 1.0280931690946966857071401398599950 GT 1 -24674315227850054440980848188.2492048595463619432821264303556884 0.7224628772398532844779739819598541 0.0880567737659549628588371772182885 1.0921775427818919976468373112675424 GT 1 -74302363113440123221278109469884477446.4283453755519986223166562378897671 0.7614061535566662152495524729310812 0.0160769323543686703247960682769486 1.0162075682733161503773067593581343 GT 1 -486145751290031528627404192825125578.5966179898030572586583348819140502 0.2834740471421644485750338292564993 0.0315560359938372978035350182007232 1.0320646563467335288963854598209151 GT 1 -18517513344330672304585180198678.4441855830070499306359307452371470 1.0531980606204839456181557239848571 0.0471245031146986812950602440077892 1.0482710272147756664881965327046594 GT 1 -20595.8464962116469145766281571954785087 0.1884846367250334625329012718132910 0.0637904680573979759385274281161894 1.0659159686441763551394499861651140 GT 1 -2084356905470861329514031784945390.3744939235837437067418463003850274 2.0594631344435167217156478362901708 0.0699604611753216257550947198401677 1.0725281788733211358469343200213911 GT 1 -653.6675749804446187047004559338048780 0.5742680163322709892305320735100675 0.0437273250996743679490881081556722 1.0447121818084579131920467778553344 GT 1 -859480819457112048.0548505067280860824867499407158085 0.4635465343166698552531976647014651 0.0951726169444041242747053677184666 1.1000110904299600095950368862255544 GT 1 -33373560017221614381697044087107.6113961764203739632247145981040021 0.0079789229770540937162983940947919 0.0427584747573697310898790845636919 1.0436995418970073347864167155590746 GT 1 -27281429.5891794636427251569692259498969865 1.8661673154296054623592060840047786 0.0158076397053910107963328818786914 1.0159339129309157908681241029963055 GT 1 -120245369.3794097122057369574133735436305028 1.1213735952294173674851895186747382 0.0474264137033354473845196591293652 1.0485879190108651168699867135439008 GT 1 -513059784.8774414685436319776731089843211329 0.8296491505512995505629443723601330 0.0578415180976798877200434222438601 1.0595817787451237769357711459413854 GT 1 -544261442692883911013729854639675822030.6278387100328210530691318852331001 0.2706994201410181678963471831945274 0.0387814980741214792834466077075263 1.0395535265265948761985669707759658 GT 1 -3680156.9931742078738158431592908141077605 2.2821733207391889293213584816181238 0.0757230959728558324918405242413883 1.0787435725523834663614522772109491 GT 1 -4285665.2519709651817608076384338484555040 1.4787914548357597123050201202671229 0.0646000014530930221645097988243686 1.0667810352437968255393589471269909 GT 1 -11931559950467778109257433471966413.8717862579089958234822601277815281 1.0897623405178469461738108853770564 0.0636105785265644421990317982609825 1.0657238404460282850257803675482619 GT 1 -137014923750197313.1142056799056374056522387052869446 0.1803717095440272816441654263545381 0.0864185499917794135991681053493945 1.0903827445682460236809196751172612 GT 1 -38054798469517322777982344933092156.0110477383752213605271714843383809 0.9714495373885618560609207982436070 0.0365198854260239496619025802087365 1.0372034300807329321266118568768628 GT 1 -13315828454144345692730169718599273962776.3532460118449729524647355028127057 2.4907517191278309826565078059137623 0.0836313079622149872905188264273589 1.0911503245761438625812490141378765 LT 2 -113252604035944.2741047624211578993721374458919120 0.0099180370945566183350119205711925 0.0321441588280763523179620306958286 1.0326721272050707397274452162096630 GT 1 -3870694003032550432888.4021305264142267363959304717956015 0.6225092344050877974539302502330879 0.0691207461289096873179150472479734 1.0716257052063340045436429567463471 GT 1 -21052673358339838.5854779065169853581261929780547677 1.9121713478372852288170546615505748 0.0256812283378868246804212312282620 1.0260167479170732680655452928813997 GT 1 -212910245218873862016.3999619830721513822520582583960738 2.2478626891971680117885175028637168 0.0708084161490094960341275150891977 1.0734403355408162501412444780850967 GT 1 -86618647.2477127206942016682380161777290168 0.4665517337522737279418818021613650 0.0618319632190113072167567026336976 1.0638262023304736333909444784594292 GT 1 -5441994475528541979233067754050486.2086300376924197054880279845905789 2.5625414373035633301068404031630118 0.0746172774920880420003252908887295 1.0805547092815521766229514954522209 GT 2 -64009182087486876983.0333845335342840279860279809381380 0.6600967995095032578893825617139210 0.0558501591407396967218175017370738 1.0574703957090733641938511668944010 GT 1 -534185877338921479458644541.2720638368135625583112849663077970 0.9633648861547197894416825129602465 0.0456501119764748865492040005194395 1.0467249158389558658728389803773823 GT 1 -41473.2021584606135652176312068852891023 1.4474006550515821855552493814925871 0.0056485192894929225889225553586474 1.0056645325036775440087121217475889 GT 1 -217566930430602254782738600802698087370375.7063751507711677035295870545346639 2.0047957857061943663605633418986381 0.0334216639957593239326586650333796 1.0339929323981096203939717199974108 GT 1 -267450676033116209425957046.8701833967475268743397321128752419 0.1099222540864542115671790905617324 0.0812305396867768575092836862567693 1.0847200473861069448357461574572313 GT 1 -667514936955949187.4250726592515554147730599131188416 0.8486761605410854591483831162563023 0.0862136041010069297328186328208602 1.0901584373581888872751216370439216 GT 1 -3137736541197.8981687727898389759402421939676249 1.7215140716788491375845940361695403 0.0364562942090299871082137005052171 1.0371374306713379796137669068542524 GT 1 -137896468.4073996089883639392380933046832284 0.5327609020474874868890214926145478 0.0441062091132196665648476738546469 1.0451084695012742302560636173072001 GT 1 -9602925470123582119149293498.6809123587954301258667537215080268 1.8876645124936115124364997330053514 0.0100355334461964592490550545628730 1.0100862288675433762639394698875596 GT 1 -306594614441604169472549.8073822236045223153785443668263293 1.0179947554576626266423154714028850 0.0958707389865390946422378105455005 1.1007829409649995423621382917948665 GT 1 -389245.5427691611736586228353569064570025 0.6797799916038313456005497958295586 0.0195342753586203758025577306044590 1.0197275909772674903103823660314968 GT 1 -22560079482099346974.1479331015428330824963884148002370 0.1568445647359972862741963122599659 0.0895414479803143216480181290572173 1.0938069030695485097129066502551503 GT 1 -104165171.9347333884337320030213607051192789 0.5043642045277812394544586144047484 0.0684570534874793125170692072444006 1.0709129853199534475999291721240796 GT 1 -3561909774766.5179543714298072202330579777751782 0.4279719769565596772242347239928344 0.0382540113195597700599058491849283 1.0390049082131847023052999875384937 GT 1 -625606.3296567098107849918965754281548738 1.1904491843042400566680293035909203 0.0372996521254956867104825232426863 1.0380130808453113645258523869517481 GT 1 -2.8774336079540447221279242579677823 0.0329219038650766039927352931265383 0.0375633733779049790496141358110465 1.0382870574584590069285811275943508 GT 1 -309693852594988813681804154863164935173960.9949163832879611505190078457325062 0.4525430364253961076999704430822490 0.0953718083085444414666636429864489 1.1002312576092208647110097365014052 GT 1 -404625073396648419166783877340.5651914331708380781352424321278002 0.0858744585805412410055187231655612 0.0983265511907214308062742130294536 1.1035028546131711815994847078256273 GT 1 -391505528502.1191036033300167073672127927188910 0.7766530094832311507504190968847718 0.0652374313645297951775417620167026 1.0674627192292497495168061112906625 GT 1 -3901478964055081514689975.7167277664803431202812054307884092 0.7483984840630925224275511006392333 0.0083390280326994249800130469401701 1.0083739922409877485638502713782283 GT 1 -119164191866360744835654678290369196.5309110800742762852492986402450718 0.4009362701355902166978355334667277 0.0276400381411615834182285853663604 1.0280292119468538790543883578587382 GT 1 -25906884638715.2908992285342066806333139966641890 0.2743304953340826273709045757028936 0.0875084147159443457560334332610744 1.0915764151745241094413536489284100 GT 1 -565976700604421940691322352.0829341851839588987783832872970316 1.8656873748706029147735483399412757 0.0172720975646535091060491870422422 1.0174230003714356751097020694969172 GT 1 -735466377127634325164543957589291151943902.1028224344427712965949605383563355 0.1299573481947347395180471628741134 0.0027114335213165513304861363803287 1.0027151161154325195990416091573047 GT 1 -6358324674826083543917964032638032639.6790718577408147609488704209620499 1.1753387166029474369700800509470015 0.0757830891480817059303201005091764 1.0788084828861525440225056865239145 GT 1 -4.1537292755282259453709083528002042 0.4973336124502124588915436421335656 0.0591417190321519096362062646921093 1.0609627554488300879133597178860702 GT 1 -12.6627650980287344217911518406261791 0.1483860356106258920427450670071852 0.0840763033254213987324918203068023 1.0878222183512963991201635260173847 GT 1 -7831680942410179247360812693581507115506.3226665801100093646463439124410830 0.3211069224329980882775161575939054 0.0707818709698584957327732439428397 1.0734117679123015970822252093621040 GT 1 -1469184596450.1800602363340303388392956023391451 3.2468715761871551611034225707444586 0.0596250279662050908470606466492638 1.0614765768411697394427456859294622 LT 1 -81041790.6684924452933171584576650282119128 0.4454899649692897098501010536244590 0.0619330071178564248500535465710971 1.0639339115431738631835546426844015 GT 1 -147.6572740716565383757839490200468084 0.9260192491519916430318160553957817 0.0104270000163305410431942559188243 1.0104817420435803362573920720644258 GT 1 -116004343.8134652807461454713049537016208180 1.7483415549040718168172612735036579 0.0407008160633688590894566578901054 1.0415522778448983118180661926288028 GT 1 -4411072912928081943254058595854.3682991350398332135029159584696382 0.1286903639064943667995552445988203 0.0713688027144568298577113923003389 1.0740436079176357341522641866087632 GT 1 -419482333552131010734732947.0066477287707031329167358366585086 0.1864528389366451877327236238243797 0.0407716802334834747562626706955366 1.0416261513442461821461473065832954 GT 1 -886353856.9142428112587676191692680334086398 2.9548905224034046284215189754488935 0.0312457187296366101876899286999592 1.0317442789484867308450738595653518 GT 1 -13990685665397382320932539884.3955532647085655440352024997549948 0.9141456058519000309020846108893947 0.0790731958304249577582327235197790 1.0823747201852154084862366789153439 GT 1 -6138267529158219702633542871380.0336080034934501980109765546536579 0.1383536709043736290594701055560031 0.0534987380994349450920664189042896 1.0549829751053703369948161503558502 GT 1 -281937429338868273529120.9895825683081183037629789234044561 0.5655601495865679006674960572538277 0.0468523269397532914677644538337331 1.0479854313405102244015984791370878 GT 1 -25194875096272165182598590.0677600995359703366959182572655583 0.1236650850578344198268341255917625 0.0817472064958221951679401123265407 1.0852825520826014622241648873992061 GT 1 -6672436327.2691206592984610617917646730894199 1.3240800478058628617178541067153888 0.0367728423989421296291970256562592 1.0374660096412346446955719313988669 GT 1 -1923142104046926504264661797421431309319.8145059941337772393569094881526314 1.4151190764262988231952373360640534 0.0647928414697770825000967321613023 1.0669872143088534463033888377099330 GT 1 -652580.4026158344604486782950771407148819 0.0186829888724800704465545051348054 0.0958895987769196918819578283021325 1.1008038007998711590763717454343455 GT 1 -151.1556529297192364663185338134801473 0.2442160787174514329846547121293236 0.0067716732327665255920712889773699 1.0067947050467849668947621521422401 GT 1 -3319653630369912.3559618561300282185398475940177143 1.4549840704387555189513937526061446 0.0156025030322832158508569697576150 1.0157255031668468273932751262322194 GT 1 -1172449691.9620353411560731717976564847427749 1.4477880735515993681407701498285546 0.0721627330231600811222655679110701 1.0748989204342631600944230046545822 GT 1 -151477914380009095750852717.8733217886668939107537109892772373 0.2157410262313941050625451247559961 0.0057432563750610012144055532505967 1.0057598122923060038847730599628877 GT 1 -14965379753133462410.1692377856134712601520738919382399 3.5306714007490682379200941395851261 0.0578739500151174305635331278103390 1.0596162023333790637384646657866874 LT 1 -387067765711228450506994923041080.7724142636319178099036880061492787 0.7876618208276070016766735779834896 0.0720094771141938796567424378827780 1.0747337586556199749123776527069110 GT 1 -1.3007853405938540748372495283426009 0.3876628408682643037815040811404973 0.0862899512809604142293209260694839 1.0902419912061022367876137745081381 GT 1 -4349930340796520859235155972945616203356347.4640315973816349144608738493848661 0.2554566467817103960208488035539062 0.0916381704303220786850457798222905 1.0961124890416781552474860227324762 GT 1 -16323041630834.1642338976376496259829265957478858 0.3938282254084266484020877651511266 0.0790497816967002193876694786450376 1.0823492959756288594892310290371761 GT 1 -6235702474749435342.0381743717389101140225144736612910 0.0035286816301147887841394086331733 0.0223590190314813444153457397332816 1.0226127714674431927957094725584060 GT 1 -109554288642225419120943498214475069.9724166290307599394488769618343959 0.0995036507034855218283708802139101 0.0344955903610409348838139038636274 1.0351046099163755557140283024302435 GT 1 -1941362314.1543430631319959832413695038593532 0.4240534770350101543192829340765713 0.0598983069268972316963096363944989 1.0617672254492453017893972570342408 GT 1 -26216586665015147.7960593710944505801885587292853315 0.5341211166196773698825391380102641 0.0385089777621514622978084606285006 1.0392700512430223501036522248209309 GT 1 -1266047920113708216066131563205828422.9837981427413111171257869905553905 0.7447004342017604960002681789901097 0.0579083866381983993966110147041190 1.0596527550350702663249297535042281 GT 1 -522458022879169787397309318787924222.1691668525527544979268109434113563 0.3173256574013659917888864473384305 0.0996270667700955190243395827041952 1.1049462312300223814691600431228929 GT 1 -42030837288266206374572978954682312174.2934285181658430958666192631195696 1.6706097032010013892987104647511592 0.0571483020056396446952131724917976 1.0588462748940742703259711072804536 GT 1 -32480.4988310054628251670515761439740919 1.6565167406129091503795424733340482 0.0271352071616963904601686853392936 1.0275101655080503235786663529973261 GT 1 -12601013761341766808728.1689184577466429064523551011652763 1.6031129883251731638293794315090826 0.0168734831528604926606922428429898 1.0170174622874899123740456608526260 GT 1 -1419.2293644996656911326285658763339971 0.4695506073242106175522005281738430 0.0451435013524771154413859079876371 1.0461942129883630628475083846197229 GT 1 -13490919.3597143565175413152078042143495852 1.5991104008259405886963983873472597 0.0378017883137630387996804312008414 1.0385348082861298991496962584318727 GT 1 -1140967608019162760371836667432.0768559248487330523572023835582705 0.7702768155782797905607310512196574 0.0100410358087718134740116913406822 1.0100917870244800795068005418928074 GT 1 -527.5323951753520856891373126613186684 0.7791104699596664184541645296332206 0.0193954102848077458086594972656456 1.0195859692587313145707497155330119 GT 1 -213884525938114665152239296896.9688946303483097558738869063805328 2.7996571867240385058912636339202461 0.0321118326711816607956898976967540 1.0326387279986098259822076690520952 GT 1 -5.3344058155471316773327763913522099 7.3551669282098765813463257470116140 0.0995033057157233446238433203638458 1.1048087853509024789001528889366679 LT 1 -307268451583973876848691.9620880650505804382935368619453417 3.7232809736358247819615348595369379 0.0033899144819626251570819734954738 1.0033956732602539218885290231692710 GT 1 -239699029834563979450.1884873696500462998076017934564699 1.7760142909570628706204225479086043 0.0155841281815541748550470921736050 1.0157068372526257113549132891665447 GT 1 -255306135863.4516465087208263982532767400140063 0.8759911718938335606382681423255507 0.0033203033826262248765858928888733 1.0033258278218349027900641772785187 GT 1 -1135800298256252055255.7161710219333296388729676535758396 2.4123484311765544540587583506579321 0.0550740286463801481390925608314336 1.0566486917488490368929084840908942 GT 1 -27198477638006017.0322029951033955929638086968944095 6.4189883616787570497485034643946497 0.0777094368771053702192079550891490 1.0808949606881861505911356964299768 LT 1 -1903196808504292097.5996911479389928656597105090335509 0.3338355880246834547408847562108554 0.0365686083118153293917082892134194 1.0372540010443121330693833299315375 GT 1 -9638009598214999.8375332059548684184675632183807590 1.3956272645806594950608641858871580 0.0799888697039359390183109058010397 1.0833695108643373409458940028135186 GT 1 -40692171476278960194.4224163468017398731566667659332792 0.2771654379503548174648924447046352 0.0225205425380075183794782854160605 1.0227780027275934091007480741835801 GT 1 -77983314300548406496717238070.6527078758407427377292331455931100 0.7315214934320631667725290291338915 0.0590369704532963387652581606094309 1.0608514286417857846395494387699258 GT 1 -107344071956051513514719514548446886583053.8946153658940668059519647029937619 0.8341301057141814648857825209188953 0.0743648071610347510845837630873303 1.0772750821757716707573421689791619 GT 1 -6346187452278914552471382232130440.6656431412452054706015287204143130 0.8625241170540483811969012355783393 0.0209621897718326078249520404211205 1.0211850159224677502749422456303132 GT 1 -150.0668070036248674030978527752933583 0.4664885088419069891494629245278089 0.0716988275904445146924668638337219 1.0743990596129676950620039181721844 GT 1 -417754.5684268931811594764528743340503191 0.6040008795964837775431076076153439 0.0474093779505392315527827954613218 1.0485700352476471855114346319252955 GT 1 -9586167037.0153815548678011956015168465848038 0.8723581738454387394442095206738949 0.0546628587503674966741359636038143 1.0562136518861378444565915845225619 GT 1 -17354805631.9348200350941393322557969304935950 0.0826715664396492882828979790621339 0.0406836888428964057900047401882601 1.0415344241159810735133534798122040 GT 1 -18701629042.7188304793027991212291322107138904 0.5889865394922805815249941426821529 0.0685324109833721631735662739333929 1.0709938839455884825697386906010900 GT 1 -2040767395501096356.9105337285147251720017062034550116 3.9242105656194536431677431789385008 0.0307773036186669129262795355102344 1.0312608726691624461822947886403516 LT 1 -32683056458182808581.0915661055435705675360258705599046 0.3835619084495788813185321751739429 0.0941997460586097321956506412137974 1.0989364675096651206764702386117173 GT 1 -642999283107472965052564324219203833.1242706619422263585859339110563816 0.6979513030874309434245741972034947 0.0877650465017707495599625767353380 1.0918576976374730178245655766400575 GT 1 -11717371629221139283949252330496310022.5065920519574648215781209116509877 0.8810947600618775633266815238440513 0.0967442826943626618783379196616731 1.1017495792698671182110148109404524 GT 1 -8294018370980767564.0213770029760460963106929972012930 1.2766576011213508022443448730813457 0.0360812363836209488395239939844308 1.0367482580300070494440332458141411 GT 1 -3617776766498859335204130.8403206598792128457302766003034063 0.6797624314574931628867012254958476 0.0752808619617377751434239590809730 1.0782652221292460575005485147853161 GT 1 -21757553644253906978459896155759003.7964362246607738368840884341992232 0.0555883321158871635826570860364113 0.0327678681439283559458342857342233 1.0333167587113836597082840338198512 GT 1 -10896275277.9972493370304408027207782149720166 2.0299411533817745179546104132861466 0.0322881888294189413710104330037613 1.0328209517645575841225488754945357 GT 1 -213928437698596.5920918747716965859449325757503907 0.2790924165257061505400338984715515 0.0670298842165849253511138405863901 1.0693821088906287063752716879859833 GT 1 -163817459610687668520177366880.8720438654347065831274449240692197 4.1955539030936373326819230895569226 0.0455822314984949782242756938117290 1.0466537909141631829310733052140677 LT 1 -284478542142184452459730718950190.9156151868353458118949433023794502 3.9801217349539067995980950814205381 0.0214427200726309503949665741182455 1.0216759553540860378185015371694624 LT 1 -291455974733100736401896766626754803417054.6364140424308085337166921423932826 0.1463725516190031876420641900596867 0.0207787107279287933443952106240562 1.0209976259652475386021115205573836 GT 1 -55266309248467845558054875658910785420703.7036627128602565430605392880700866 0.7526239741842130478920176854211014 0.0865317950664734254739079764055384 1.0905067095349700892500503120206792 GT 1 -4171486691.9630414427633579284769044899313808 1.1133316588669709167724568935838625 0.0027203054226030678599118301068336 1.0027240121772618375501559254379681 GT 1 -365486256428694646081336.4329438489157836671631858133404607 0.4035643870289038838306763707177983 0.0871622533315918650102423281813846 1.0911971286726937172786274661976171 GT 1 -205332.7473310476784941862066295215881982 0.0065938455258263189089595313875976 0.0202352606514218272099914447457366 1.0204427980261931152976522260483474 GT 1 -6142283292691566786936767180805.5542745794177466872949951616209448 1.8291238981093364249015536452201258 0.0695369813276793510439406554169137 1.0720729471906242315146171017589282 GT 1 -326440387269870761099517111620130723007.4341672298805578570658568945823377 0.3186963189418366151933723568167286 0.0314061987061524595992178016222601 1.0319099486888159895654024936456031 GT 1 -411.0421002842674920849618398822343334 0.0693740297658918205602097109718965 0.0870546769885052112072766584985810 1.0910792873529908206343596240517547 GT 1 -56364161569851822817.5615643411605512209540565465344763 6.8449019117903059251268088995087235 0.0704287581920992049938798783751862 1.0730318294560709850066620281181965 LT 1 -3748029699227766265605663848893407162095.8269195582295174265919835350130642 1.0948769559670130273176523186121284 0.0086526370529853402510609968101533 1.0086902884636297035919427781863979 GT 1 -30754981.9820197037799357224304429912545120 0.3233363395158152196662521781969145 0.0270577486462286968940259413646949 1.0274305496841279975410698976931532 GT 1 -1454664252149752308736864061135.0894683211481389894586666965303640 1.8430084588461027847134584088039167 0.0373068749323585397536865920979501 1.0380205835266743068580430024002601 GT 1 -24.9925513894361909706165171153893901 0.4108473851377718745363477614368300 0.0042142196111022953428707870765490 1.0042231244613697609719729541817133 GT 1 -19958440538526.5979000747304358822708748036011334 0.2970030265535891361834812995175206 0.0148255888650665470301029899613741 1.0149365863425198812677764735561391 GT 1 -31926962633495346086806.4831304356853372746791606632432792 0.3137870149099374304681418226201203 0.0213054839249596907156329777927431 1.0215357218407726680022096708376669 GT 1 -5431219109659996125549776819094328263481.6016975436704146396876040463456851 2.1484705194871838032620674008804768 0.0856585602765068773732327472420941 1.0895512108494738768584886265677609 GT 1 -5021387577491499735923762.6366432242906518234391919420206476 2.6783507259695648582629421127997108 0.0560589179016894883210711342649871 1.0576915278158613851111632317440019 GT 1 -32253562402877579296200537574.6930725685791012505370821493694383 3.2686455049768337484729658021445295 0.0513526568596808966296103786587365 1.0527181583502228508423647779264431 LT 1 -83982.4332493351658652694048951428784358 2.5221658153040115983700031129768857 0.0436937997266169062067389019002113 1.0446771240406491471240229618308794 GT 1 -8176101226313.9137333206643563677620486933708023 0.8547675742211656799352507954773591 0.0360909560297848838914819791861307 1.0367583415510827052848325516681350 GT 1 -55437719670649579383290066997783081938.7315102799848346750878253527094127 0.5532097235543757095440090973960243 0.0341310386359588163746522921573566 1.0347271047328779080272643150940963 GT 1 -115017012560399246164.9495702045259082800305648140636746 0.3518768982497112756042450495943773 0.0378366212406769500860475963178920 1.0385710103461696139269035013991885 GT 1 -66699896573550677544001285838.2834076694458989753770591539953442 0.2697393967095142461755624680580459 0.0494389109709324491161590306384402 1.0507028487043180632555111672619822 GT 1 -3321.5149413308745495226984125953817147 0.3310379961957621341015815386898269 0.0631468055768809216035903680165792 1.0652286851946759035830447740924183 GT 1 -6610345164972624579516530581023.1433065346126837097937558532322170 0.3427877200450889747199695006839318 0.0651804133278643735055568112812415 1.0674017237426152313188714908613633 GT 1 -4999553632160097962328.5479982996703969680323338636444415 1.8148451162781545682504990606916726 0.0558096133668932208047982896126856 1.0574274524160561414599529405173175 GT 1 -3813112508.4866792141348160291019895764583176 2.3630072579209740942923358744086868 0.0853614994779392064459518527449697 1.0892263731684876862117589680064664 GT 1 -168496369631831097.8549887236732926156453817255307575 1.4387600354141016626419962334664555 0.0302579797363490278554493519426395 1.0307252013490215203098386723235352 GT 1 -210812733058886952202999111084.3059254183296511722330959478753191 1.9006903709771625940124623568058666 0.0264279441683880700899598180834914 1.0267834396192357055009283197091746 GT 1 -38551680043577669006672492857513699192510.6706986515838049175566253408679944 0.7418566785076691520558828611611281 0.0361021079687008918917979747820953 1.0367699111109881829107627427134972 GT 1 -182055189.3397051994528397760476274916797652 1.4327145222007850935811700144615744 0.0761938716735099032919233769926804 1.0792530471837668445262954637164559 GT 1 -31973533770999449581154269.8889870652875297246319226642798091 0.8227157007862365198158683806149352 0.0512199883900854939715098539857093 1.0525783179821798125579139606598859 GT 1 -2722107167.4782472977351580714015180383111985 0.0457618796191241504600969460609293 0.0821516560574915064836572534619226 1.0857231046861179174228176552689080 GT 1 -1489053602130153.2725836665557389818635733014274134 0.4280209700812479484450092453771385 0.0652302949722655786717437246517570 1.0674550848146266010691540220922250 GT 1 -7727011001345156.7015339782896815616921411241162702 1.1971777782524532638628496454710301 0.0510540331633940460100945237195677 1.0524034189409069075680101704385612 GT 1 -4475797195655211918915730638738.2294051851874310366312178499588165 0.0918586604453476107554635556865401 0.0455642934236952632519470845238960 1.0466349963078359353109572603963319 GT 1 -11492423412449799594612235893.4747644388587810711785791163134700 0.3536843831167171824497480711400780 0.0978648966884612479829806345269859 1.1029909881938694990332318941174066 GT 1 -3500684281583190489564.0921911980571176909141504353120895 0.6668217654766051018491133036433356 0.0743936271837671298698370555217097 1.0773062180612977792639809642401029 GT 1 -7668010.1644749973685321052773387656281178 0.6730182421123186317453791551109995 0.0867166401017126745321788283515171 1.0907090852049065123690398833899437 GT 1 -4004600425968188207111.6359965670193580659626738216929748 0.6968944161515799290368361080610421 0.0213429188898605563488456615635429 1.0215739724697953374571588999022698 GT 1 -56184740127.7107469212515574964040042324598271 1.0395480533417613711835449684413244 0.0881861512188932298195733943953593 1.0923194229203465365925180058853613 GT 1 -21743845225682104774088267.6523592859725709892889257327708488 0.8441787942677436867992738286206275 0.0220253376142386712001071317115368 1.0222715168639480270822388446525457 GT 1 -69600721775.2049313864238104437854831618285097 1.1438546401333922326813480215993644 0.0278486827990526931641707737359403 1.0282438105053078183082026664866790 GT 1 -62101786159020873599887058.9767507702903951417172973195474447 0.8275612530877536147838470806275186 0.0362219112231872557291369452970223 1.0368942092356039052802712756360262 GT 1 -343290258024398431038638813709334492570.1836801451100146124655025654770945 0.1259771920658814847622931880759398 0.0389211966663110999329274290751572 1.0396988719859609428108669284050416 GT 1 -21458352720410237.3075377541925566153721053457291473 0.6466818403934015807679756625444943 0.0897251500321599061422900495319204 1.0940086921423127028515223994657665 GT 1 -31609200989745085286528044294070280.6603299061059161030202247761789043 1.8800714396298379171442116081530031 0.0977145139107995975924621539142565 1.1028243055713222042117652332821671 GT 1 -1402973824785028415390.1207150511788936066219439972316659 1.9021643294150553841086943120404936 0.0248371443814330074351421567187767 1.0251507905288231564691163054816606 GT 1 -77576559785.8441336002947246954037023520949112 0.4384188568180774094152959337558157 0.0350495714873589689784128141426546 1.0356785483795571106384956937346951 GT 1 -50846729602045887.3449518000898423869343394789471636 2.6436738453757700537352793051895268 0.0660608454257633823215160807633278 1.0683439878707858150210622078796632 GT 1 -3058488322682505226547512506128.3354194910017127241346658426211921 2.3978508240270261107398815865580891 0.0576799734111782673963641323914874 1.0594103311152681592016220262799550 GT 1 -124416293334034724046125418151.4088292822225772161340171476600391 0.9658990071067784723084088829146350 0.0132186789676224391063194824348470 1.0133068233342420200094871526434547 GT 1 -425335045749110087429341.8378391442236092097700652820360576 0.0065094594092093808224745500937798 0.0481306044445569996793522118184084 1.0493274431447196972077337475945044 GT 1 -161582167014091.0274516272222675631869946474730839 1.3520646996820608449392361846475803 0.0427317423705786646889396177823663 1.0436716158064415283039292007822637 GT 1 -71896861755364470.8508979360264926516182488883400946 1.0959402532209264152807345505664294 0.0471305348021456628206439935736431 1.0482773572196472611355164903103397 GT 1 -35416.2210699007907105087116103344234939 0.1412940258272582241607829020604541 0.0749895572008798749466305354771079 1.0779502520208756284527943201925668 GT 1 -596550022388654346094806106638972566170.3457056293825987037854412737274107 1.5849565443714594462834405860221134 0.0797394008783008382628576746231185 1.0830983891346760683739870490894634 GT 1 -1718087936090767237475384.7266622133607487755534579297672106 0.7296845903164316451492484462928388 0.0656366688776808397103676395572916 1.0678899109120296790380062483654414 GT 1 -201591733973409585.4735433712229299299202851419469410 3.1145722804343577343760190555046907 0.0871819739857223276573218825518802 1.0912187325855740204572450838243814 LT 1 -2295.3601807968705197663439220621918031 0.4835856537732169410805682385420571 0.0026575822043729854743483305641646 1.0026611198450634997546780944645984 GT 1 -572385132796904543250043638729423971784157.6668068918416103802024135372534990 3.6391729748129158342289586865090734 0.0934416383343130384466176328922501 1.0980998695406046276616126892212501 LT 1 -388943704857.2557907685667599062881497371066159 1.1359125339716977290851811081719327 0.0103854523576217751454712098878284 1.0104397574840425566417588288241727 GT 1 -25188107.0646644993909427984629867664776774 0.9974456460540014192757298707362947 0.0492386558568547694363322474750869 1.0504922004614694716044741033838991 GT 1 -1094934925715303321105579994571.8095533084844040012050007454614431 0.3352396696717007985430668118130421 0.0862360868050102052976460714763154 1.0901830415552854429005472545425079 GT 1 -3131487681003687535306853283082254662905.5703069860724026948754705351911435 0.3338610831693728067195843189249638 0.0766516747718244098305514423554190 1.0797487318914610552040487151264267 GT 1 -1693561399164406083007235258733.4150315316735241607924421298387880 0.1531725035200904894304121087216871 0.0518892734937979681534391768442052 1.0532839834356897798290066440460306 GT 1 -1686942.7449887240371905884447119572827131 0.8164899413314880348027434076746881 0.0655755425578499214060747595780405 1.0678244927621179948052233575587557 GT 1 -183998.5680285133049528785164919538036441 0.4536658409829425903811313046013859 0.0704542236734386781427594813327246 1.0730592246991812000194373926012053 GT 1 -31357557634221610262195774.8022002627341977645668109096471879 3.9479718872214262372205419912808234 0.0862474994768095200803380819877774 1.0901955313712058848401660268198497 LT 1 -564645120173855319357200268.6145611973178800958373753753908643 0.3026100820474455218936872841994650 0.0428768292125363347628706670056542 1.0438231907039069129667840697651330 GT 1 -862963613133483441120242989733596054793282.3983834683055263308035413800337086 0.5741306720784569840861361569997978 0.0857581098882797777724731614967674 1.0896600925288012499999380676718847 GT 1 -488896877.0665602934512375434939207433616271 0.2878182983793644041834121670513577 0.0391144271189608846012687712692959 1.0398999479847590048403254673603835 GT 1 -2495842818.7009027206954235437332580989622143 2.9670804687217676306536181946172399 0.0849232502354764441182495948053662 1.0887473377002368496203191969481183 LT 1 -16023015549550257.2819695149594409071076632209388775 0.1942583077798789961267569937835245 0.0658853023640531368035196929838697 1.0681560456848373028378281658587316 GT 1 -635775.2884195410449744730515938424292785 0.1892178205262842636250724298026768 0.0342850084457741888772796465489977 1.0348865281013614348757616405797770 GT 1 -1233940.2919556984209404017691104673784711 1.6402087666497024844496694411411808 0.0671650002139610233774947542075576 1.0695269428783638644416112232837019 GT 1 -299481243407133258914617207542729.2806508407683838269300259589528688 0.7597016830681968769235888796871654 0.0164187856360937670679929171612154 1.0165550676798394288189508710021074 GT 1 -1756071641492866096973433880827043851207.5808169035129461175246954683543060 0.3501217232702408414882146079468581 0.0158419855682706357799453531319153 1.0159688110499947032085387706936999 GT 1 -1153760593421.5992612492020081439531175459458454 2.5014100114051840313222735693353909 0.0581202548343322865849203445303641 1.0598776716146860432502851535429114 GT 1 -23.4907338393247387633343099549124802 1.0148113505532136855524971937996128 0.0482921421403026061559112491317446 1.0494971632817338942358584895922659 GT 1 -33110.2191032198892825727543036104301931 0.5625305020757279047874255289508424 0.0115914527710227050779716515600541 1.0116591573646253330496299705809260 GT 1 -20581138.4269675435211004671468653763576125 0.0988157599763064102397541864920643 0.0091188008518881339857432413892814 1.0091606316081194722155212474892535 GT 1 -10882034228000411314322939923.4400397531515172419855922637711686 2.3683610202905808619145539151709305 0.0910463561651611386180781497429980 1.1000176017149910823179414585147641 GT 2 -4404469595245973862659619705781794.6619125286162143986266699083552273 0.0620608551621418801551407516285081 0.0296135272339317974684038609263650 1.0300608613030556465534267399373715 GT 1 -606523032290882056308635523448.8922182817439548867402871686592915 0.0386116572378374734393581066000266 0.0848467614459649825424919736373426 1.0886637538992455184302032752397809 GT 1 -25937085112050.0581862417246454848685126435519257 0.0075815794465785941737050844600657 0.0314277869268993834829623689056763 1.0319322371458586064998979853385546 GT 1 -9995981354.3550929329254243598570416173579605 0.4419853913935047372115896597271341 0.0626681101760195384911006382342947 1.0647178547379675938178197682128197 GT 1 -8280491930.2652659165725493353278957536357945 0.3537236837721256033907043469391965 0.0844498373746468617124899169171097 1.0882301237685732866668013854156847 GT 1 -6898061408556020393999475089.7933697341173767539334671746781853 1.1851156884200884255604313607868698 0.0294583991290901249777334869036176 1.0299010118915508653472646392659285 GT 1 -36714883589663698764031380790148003038.9659725191702988765315322321517502 4.3855583826882300356918055383298837 0.0336730090388288756583445303261403 1.0342530020880005613815687000493670 LT 1 -7628342853773887325970941050.8286386431232819497188441116526515 1.0503819019016501870558212156198333 0.0547908578098384017382160201121192 1.0563490614878891377334090569168267 GT 1 -2723326583.3843727927094519101868018740975239 1.3109796440541474425528121172930018 0.0248089184624043467513943132379972 1.0251218461218692187996716768856766 GT 1 -507918335747.8068956903073295507440153310855781 2.4958417721262520168565798138943868 0.0932174148345545673958042647210008 1.1026401275097805853585715841485071 LT 2 -14841671813176555754897792445936362.0656286174497160099209855738718282 2.0576526761451294799099110659817380 0.0924903882654103645607341573992908 1.0970511214561461660589987441760996 GT 1 -276926137685424708216595445548983031.4677759363174959335091936091381228 0.9101728190030234648638831626980875 0.0003713244656309035467900285510235 1.0003713934236313483589607789176874 GT 1 -400585764348926495307059393473160405592369.0429813613000326727503771579495942 0.8086964302722437514307094946527541 0.0265461846692503714867168004854319 1.0269048971743292790396304686095854 GT 1 -17518696270040016036301461675580613392.7191613766619007968100018919743361 1.6405904169782088965139920340199626 0.0686094697225289245019791563740641 1.0710766156774392304623013708212244 GT 1 -1044.1658142575443842702438105464371720 0.7467279305534742010367190452752477 0.0977520481784865950159621445693271 1.1028659055404930359564350076760888 GT 1 -12766461929712804676844.6441448155310190801141249193113957 2.9049180346645876217776412267985425 0.0954138804650246350120211843267205 1.1002777663685499431860236693822184 LT 1 -106273585443429.2516984219513687063249396906478993 0.3765618642379704226117537744010703 0.0999929639323517293138841234740607 1.1053526978354430312866585216665073 GT 1 -73402.8379828423255807747136078624990589 0.9295566926047030778933172647095386 0.0950989339323290200006181351345580 1.0999296605202390065503346632130343 GT 1 -13570137316483.3860300075789719240131506834174248 1.0202735615213814447749964489866155 0.0610808495534476814397183355561238 1.0630259052417036921391593324272319 GT 1 -48732.2039377579603029237100407194490886 0.0804587015830420789916960570195009 0.0344276912822723526711112484700312 1.0350342874085734372248221637993339 GT 1 -11.7504814048077228405769453993082642 1.5987506417378080217943056844414048 0.0609378686111187004139224902582187 1.0628736343495619903451551199628280 GT 1 -161721007219542747455271.3057804577158076953125752928565200 1.2624762786076519410172805956267051 0.0793537136289576245522548108515547 1.0826793703803590932849960955975581 GT 1 -1126654999653527117035065.1204171954192056295750790711382170 0.2651860122519686331890401366165410 0.0530380718990228669397453280628972 1.0544963892430902577553470168344834 GT 1 -3155627617050187042531811575634584.4372176283842269983175629392378079 2.2117099631448720381397761411906856 0.0537766885735396627986849225725439 1.0552766791973652820070306629261912 GT 1 -23143508354480418760498.2626219613756607418595940177859601 0.1415848245366556943813867764445218 0.0354525126517554466191151704472989 1.0360962126506006313697145390245287 GT 1 -12.8609553368232884314041454930591334 0.1840366314235462542287951723641836 0.0971062322177436757863742482509571 1.1021503761376951887500872096875230 GT 1 -3397860363184611130008595816121347222151.7357974768940902935469685578771739 0.0418442234116547978376009697824750 0.0389653589448898823563409903085300 1.0397448237779485341382966570777361 GT 1 -52902933195568145230011865319822714.8379929118731815260981975725652498 0.3624192401085092508065672466126390 0.0295948280724267963554975513351841 1.0300415916802120966142736820613860 GT 1 -19188973.4272583988694133866937391384341867 0.7905168631232788028916635054101826 0.0875325878436731913824181034684018 1.0916029068685996077661878680609069 GT 1 -1009501776573075243064206604751638.6380585825789850593579708197175622 0.1278070530392300845710000273064902 0.0379916367193580549406629299841104 1.0387321347152990812304320839857958 GT 1 -732556440745997852251820525443743.4922195861981807497548206001634664 0.4243038075343134437057971878544233 0.0094409258014653783453851788706222 1.0094857738359707605650328217290967 GT 1 -375557890596157850.4311947892651808051423224458075722 1.4911765481156944858128287453999637 0.0473718784516668398921949020262262 1.0485306702151507903977774381216194 GT 1 -2863633.2404344231034304049304584703988947 0.9115115783760987772882469444870700 0.0071707381879213921972247314759790 1.0071965715010311075447810319750292 GT 1 -1510811877708873524131.8505232646229474304759537833486658 0.0565903095020043454109129480790972 0.0717749650214270854779872333809174 1.0744810810040175634699540154861754 GT 1 -15267479605588418.0367158233631486384186094543824945 0.4092212373920847701132956069663711 0.0052026644997397741014586342865017 1.0052162454840375469962840458921802 GT 1 -604719462326492655279795551173.4754661424795227088427765026553395 1.1791478135316564904699013550485249 0.0449012640502975517578649072887447 1.0459405554166142815728682390080614 GT 1 -427986189.7481363411551483417025126733433384 2.2084817428636810707507960900169029 0.0071343600586868027785328319138909 1.0071599313009615632038559270792926 GT 1 -448818166535290770028636165060318.1558151659793551702458196815837942 0.8210728559121519581875211118770662 0.0805408589031296126354994141595050 1.0839696719262981288461947849611985 GT 1 -898927688656693879.0953304684610223155610249045989375 0.4116596933097358228474444990606539 0.0719478591290571781301853684984703 1.0746673614909830154111871985208939 GT 1 -356018897823054795893035862644013256398.8397931952300957551342852301326078 0.0985437177291236734309670571473285 0.0365687773461166019609573947444053 1.0372541764946011307485006512503944 GT 1 -270985467605517528576229373862523.2265146863769133162737317889116586 0.9661393162395563158232583401460190 0.0797998612240858690155131239758460 1.0831640904501801898578223842702414 GT 1 -1357.3597786637073497776320331467106212 1.5153786022460675919978945798860116 0.0661070583665517974031539477096797 1.0683934708418640743639537819969164 GT 1 -6814203175118.2398992333078984409072617786095584 0.3724157646649447332510713671798510 0.0111340338457031338717267459291263 1.0111964811602000450527860380298883 GT 1 -1732623064009765421713122710836866774847990.7848598590567883955704660391058690 1.0981979596335844562134711092448103 0.0975635192356885207598547950954618 1.1026569726765753674244030317950537 GT 1 -2067.9151649727028323721568798818819185 0.1787624984717791014896339135475247 0.0670413305295763076285316257799571 1.0693943776471664524946636048757442 GT 1 -121298644265691959616545470404.1820135837471143323932630660071943 1.0208131689385326302128386870516186 0.0484868569898801744236469121010596 1.0497017794037375240061740416615389 GT 1 -208.5201846186974788257013526208352346 0.0022958249753488295173025185254578 0.0063867504850506759395798883551625 1.0064072330337903774228881517578349 GT 1 -10042888276.2740434972186426277988433893643739 1.0709518592558789681779062795448659 0.0256090893690764378490753844302629 1.0259427102402465647455156302627688 GT 1 -3826743368351756266019714227248435055.6137916384409068402670666150219156 1.2397895422219252658906894977460318 0.0474178468415108193141778063879775 1.0485789256654422006242871109738149 GT 1 -82596943497615828934274550340.1003425828206764124043397427872751 0.5555265327764022324037186318408261 0.0261864946623250756136593120760352 1.0265354666321552648635185947472447 GT 1 -71349382083861380145724265.4695771948188581777527867863872307 0.1260675173817320159420326938557586 0.0766921912266193978966945273334216 1.0797926127787096123675818827464616 GT 1 -3221012547240450279435959589098441851858.6681898801114910223588442308578265 0.8961870470031626781167270806896842 0.0643551269847511579109142278810627 1.0665192836701581619868471234800897 GT 1 -4127986298048008522505177799.8957247971505912720154190644596992 1.0331793179914632639045428157323793 0.0973569265074063985450813413842782 1.1024280711539837815828422362335057 GT 1 -39140.3526289025471812101491350436854639 0.3272379014431523326880064314112819 0.0887298141539279595988726540532362 1.0929158440845106001451974905519604 GT 1 -443093478027303088381315862403.6331839499280198733390926813892905 1.0433442683406007927553881038712358 0.0888389751716282084674158093575968 1.0930356412183518290205500636384861 GT 1 -1624892361240588443494019692430816387740392.0096850486572413856850482805686949 0.0268609663455429274106777433979348 0.0974257783754513634786223009153356 1.1025043521294260019820261399060589 GT 1 -28.3813553012648395786626321869261929 0.9236332195206865797392184628549018 0.0601439248456751374140652280143074 1.0620285269788078820057346875214471 GT 1 -25224285618259120586764463850486248304474.4711973948053168581679777407541214 0.9971028163737259218918745733805347 0.0524890926302775811724372558742048 1.0539168303559603661445373183764780 GT 1 -690681407063519651401343041688007864454.1939263211511295145279728598318131 0.4292615435601118965720670133577626 0.0938872735361889024057275577613843 1.0985915585334640090787509666137553 GT 1 -103060041553212733558058734433614854.7150588923442386122055801019535853 0.2052060490043303868975262359928700 0.0857298022603482202124181518967681 1.0896291300559558202909910138596097 GT 1 -197815480624511824482459065192.5843146245836017301577045711117068 0.6322535552445937281792981276116799 0.0533730561966416772836653619107516 1.0548501981464731659035507100352751 GT 1 -109325444794364848143382393377749843378.4090596073340139502448285998078129 0.9539445891226872311318555499279741 0.0963089139725983927530698484241617 1.1012676959854383755349481690464559 GT 1 -6190932801706037261.5897613070185834115953148382052982 0.0233359233899343038198989132758666 0.0450026006713634553072842597912715 1.0460466617212021520206060582720954 GT 1 -25051480367125204229442025695187135666552667.2860757040351070941108378724563992 0.1387723094043966642041280186964237 0.0823666524102404044295512849510529 1.0859573716414615973393241635462082 GT 1 -5048875356833.3804107341189442198821162416221897 0.2935429778094738358058730093038055 0.0802139247053100100876930597838737 1.0836141628312092596421220913057673 GT 1 -21296181124540988527445288213294720344860569.5362599817291203162201804427554360 1.1233986563488811947557742641020133 0.0473633654258226731522020476323722 1.0485217338971751735788088833202462 GT 1 -53535396291410366407493398.3612296685637712087685419926768295 0.0517276667290502010798941047877579 0.0416914397947249736221644301935363 1.0425854649735012202047722502690102 GT 1 -6966579496527898311397931402800.0534642095864465822678928740502845 2.1934734560265438597256523963778873 0.0177596207364509205053860288272294 1.0179192151819662929268748081070439 GT 1 -545251209415566.2890605596047596523750326521055972 4.4608253586020736597961509096275624 0.0891704796082778178785051757484015 1.0933995338205142134767951236977468 LT 1 -2384562386739224222000517994195352125295.6598443586198356604504640854153427 1.8827836195856265485676895815267167 0.0877811467085177121928083703427734 1.0918753469818274362132499738287740 GT 1 -440985102035836.6779053472165319761754056822609159 6.1029368337130709076716150911302411 0.0818698323228264305634303614392160 1.0854161035582779873491844590354216 LT 1 -508128482812088209230.5681122553538316574324887940300121 1.8419776689691494903699146868083599 0.0571518729703492764931794927031843 1.0588500623099315005154510865385009 GT 1 -6344667583325.3120436805134818082390453277638517 1.9215055728129247380908473437010556 0.0036233906616582525708508280091948 1.0036299710419363203701661046425527 GT 1 -3244048.1160758908779279024766057776552138 0.2822779781006300249445049943472971 0.0029220752185610032178167942623968 1.0029263528153578301546044329367551 GT 1 -1269488529831197408294606196546752423701.2600800474494631272495599261936301 1.0177480307184336501957955338717450 0.0718439907918730904774669566547987 1.0745554469545792456921460385500690 GT 1 -127891.6720145510711189404733222719346644 1.1764238330651480277211983560586485 0.0353297680773959137290396394063430 1.0359689646232794346825825287566872 GT 1 -1306308583368156642964.0498045895638948731304978272666474 0.9387957332100617824469315639358695 0.0213582596737429852221324082360785 1.0215896479340777763654352161728725 GT 1 -3045991020188496774068660010851.6391645626897186600670726250729257 0.6359842902321351092502458198416457 0.0568196377731313203756413088349304 1.0584977503458789881928057726166525 GT 1 -265578394934339280990723.9151363527090070693049531827489120 0.2945640342341384910656235872513523 0.0271937244150865862388328895672783 1.0275703167374719156659656289930443 GT 1 -1591.1553410352028544475728468568948061 2.8124214532264006523700352581814906 0.0853030639950460836752158806447317 1.0891624860521653369800343050511261 LT 1 -645505044986186277148383855644864.8385490035908062642699918067214395 5.2055762678714738706499996440268571 0.0750704484878361047465444012057103 1.0780377048974624710959308706246907 LT 1 -8379164.5806343063330009996384406947244702 0.4400435078801594689847385680029848 0.0486047294377049283843169296824412 1.0498256660260623731399419517353263 GT 1 -773001409026177427.6658650461736927143487864185791683 0.7269625392994943807247849226982162 0.0058555951918420349226223070336841 1.0058728064102072981376958759307000 GT 1 -2822810037350000604334363236013.1430123517312897788218828643897348 1.4996211310739121771424188960350416 0.0784022115570285766270719927126032 1.0816463887363458817048669399969319 GT 1 -4551267881938910673.0118788895505984571323347480528396 1.0174013111977797887635741294639014 0.0053588387136270051737357882961720 1.0053732487937254755823222621601834 GT 1 -507967.3046051355043911413403586628084982 0.8634461767633803572340260046655881 0.0361046887632089489445976023703020 1.0367725885708979735505192087678172 GT 1 -132666798694567393150962937.5637048432743184403667003118891011 1.8818396434540284787187227998768859 0.0012512907856583421296110671507669 1.0012520743036475721851254135147296 GT 1 -635639131946.2227625594642439744391256020252611 0.8332202078011728090831371150898384 0.0621202228466258719616373300498438 1.0641335075363879310614907757641414 GT 1 -9320872719193218752172050075350269488883.7663592586971519856198164116891433 1.2590617703609370192353547356035309 0.0930256192871438406765417179196940 1.0976410754480083641311787700164976 GT 1 -489717.6977703093804897118305124747320772 0.1064395469156659551883877096120939 0.0363119587344136789527737798379600 1.0369876453898256703582978895674493 GT 1 -34690640189598285686.5291442878153220988412337390241124 0.4754987239076449371768637009741080 0.0584547070123088457305042823783108 1.0602328247794968451147964113725362 GT 1 -1196427.7151304214308681661467439620622031 1.6443366366440473583531244794789184 0.0176530661177071154210298692706260 1.0178107398618466015003534444716066 GT 1 -17712265154.3078448919878848415619513534885546 1.1105612886302441245314908043612698 0.0705383053351029728963124558261687 1.0731496833584751154174381864567207 GT 1 -48324009972199815.5914603773043956762142438478593471 1.6092996621836008360545687529399778 0.0862275145160586465359579187841251 1.0901736603041565261029466843274181 GT 1 -10403389485968648443.3777899934213100833677442902450858 0.2668629078907453223214536734391697 0.0364010986373330889104790843371377 1.0370801483804404586610875989485860 GT 1 -6525987133605.1495959162780739830221386686108671 1.2219468325269429461255211158472547 0.0394293677616403932559316591709409 1.0402277625294368983824011741932096 GT 1 -9493070777050981817890096.3337703624073958101783483926489304 0.0636722271257302982133393561825681 0.0677503971985919928178386367721666 1.0701546859877567289499486246084157 GT 1 -3308398.8456376504182060163558454887549941 1.9791125276305612592959176925375416 0.0000872229343109307541526134524946 1.0000872267384522728468086555375460 GT 1 -2.4998825043804683857278905428844974 0.6527854528888727932885361037214533 0.0514477748895105986408936123173107 1.0528184303843316255699023632898192 GT 1 -921246695386099126293271439388127043583539.6141829954979642702436277378505693 6.3443805421735813294061820396156720 0.0434199611649573898529649718443264 1.0443908147370098844048218806493398 LT 1 -501693669737667965489268741002681632339155.6180736238121528910901876431220956 0.2349300666653160886841494438371073 0.0441134641516418345282358163949816 1.0451160593256078582241795981281629 GT 1 -1119168850594.1378238659557359011877117320841564 0.8927369585822429860198868649456668 0.0655952254384124603376578588157207 1.0678455571592562640499676116680280 GT 1 -1237859427727158550011848.6128980274686280751840086353740002 0.7278732083320452071635343313419942 0.0642693714297047009709176323418690 1.0664276339130315712416368223236753 GT 1 -6993572585884065.1619011487111508235010217532259303 2.6995311844197609124203830954850474 0.0085239451452310021357694036037249 1.0085604817377461528102241832352014 GT 1 -98231233784590136882848129904331881.9407273843108713559434710303475064 1.5146111943509680628929138819455827 0.0568184847428405132300901805666120 1.0584965278547922353522315122145592 GT 1 -3.6045155474792331985448809472836699 0.5806775925392478961743758566326729 0.0468713959639006344387909482624417 1.0480054379097332596894632045926393 GT 1 -60286117095807547291498906996620051.4158551263614823077641430775019227 1.1483135005061445765296242158951169 0.0561538938713057632601182831384513 1.0577921492951136191510421155682887 GT 1 -102728670363214.2799814212969639908665559500000920 0.7640664289432135242221648689505646 0.0928568691348121110061366378118092 1.0974550344096065457301017599495041 GT 1 -18523487727241568515336239089.5049680410793722651052156072028597 1.1137223285951119413240407331137826 0.0795514825697202680331925950064305 1.0828942087918466345208769638008546 GT 1 -18202561359208334485926878523974299416576.0092623638664188864863248666344199 0.2425922134063523196373331885080784 0.0502864523891660632476026571136596 1.0515948686872098888711994274940670 GT 1 -3.7759680816623546135845162911657890 0.5979703552219110199242738300413680 0.0169972544855691068551462353905151 1.0171433658435190292296993612841081 GT 1 -164232258355471552560018684340175863883695.0773655077831423008906334384629030 1.5238348652307912229016525939007958 0.0852313776795494553573885446274223 1.0890841174650038104967255567695739 GT 1 -1426992297048584726433095185331381.8232766011274674932802067698290255 1.1790822628970392278334317711724802 0.0106364959596572239090265901901650 1.0106934678303181047111892054553951 GT 1 -245288390267738068649792.7573167964223554007527141320553797 0.6734994063268394192488908257382553 0.0165240748159408458518005315936506 1.0166621201673658742663740414133612 GT 1 -760393813808752244.4774633036513110507251786238475268 0.6293176732841428049537195501973298 0.0540470831404433634081983372919184 1.0555624819304322637907440139084153 GT 1 -26532890285324467390170114055528.5302360165295287273219239059335143 0.0617420645678062209401017716623660 0.0522830984984468956182217446671023 1.0536994484331354222483705821744785 GT 1 -542151052057355.9398636823503466602374275659755653 1.2264831782137639015756553482446527 0.0692521851087592647900750607388039 1.0717669139180824526046456934986837 GT 1 -23073195289395368191367965647726800970.6221606748140508874206601620578756 3.6906940333406773332274653778853163 0.0641295143820125732337189623202950 1.0662781821448185536474096111462155 LT 1 -231262527487142329012144085974169279211688.9264713581733918803401814073478827 0.7677051595607410462469940321169246 0.0931759023776517901738650224079573 1.0978067863499050136259617449146142 GT 1 -1485389361109931207176070922613581237986.6443542200329306327827839157587824 1.4329300523456609323281756259676520 0.0146870903560148597990371426801341 1.0147960134925255873822353848848372 GT 1 -1332369445882235447173904535106857.0557197523015479604707200833111052 0.0416672616000920743760371431108920 0.0546418128571621125959298275849135 1.0561913892900545852828902892628484 GT 1 -28965741531192125045227.1956050487816673653326791426071442 0.9724861419210622129462158268817168 0.0264953796110846278366416451029341 1.0268527080189316233033432389301027 GT 1 -1657397226905656359813957523609568825703.6803782067864291212437784555871373 0.9895757866637714480044222039209532 0.0790320578479024993303000952103165 1.0823300509850763096077482086143709 GT 1 -116988812869773295138557908416343819117787.7184409932407769350496025376953275 0.3142591045608865697250517920303071 0.0167195479874041989934132851070271 1.0168608973767583338071450547278080 GT 1 -136.9445810920798276783952332713135128 4.7448370260923109962080274651951686 0.0151345788907409846006435383419861 1.0152502754600197935477456009585990 LT 1 -15058.9607178892880202875447389523456614 0.5527732362858982930686825843996698 0.0930048732526191241336920148281273 1.0976182018170677119087549638135214 GT 1 -57528.3212247048706247489871279023137106 0.1402688122804800898095520310496416 0.0078755827103221470010645680451441 1.0079067589068598337553418613913886 GT 1 -16043025259373447344777203674280288547.9568748450440942728632192653327167 0.1762587295808410148561311273473433 0.0360382955570204180000544491791383 1.0367037108422336735724785687440752 GT 1 -986.1336261044907618125011889034367361 0.7178401645617571445051600466279556 0.0158315685060023183332124386204781 1.0159582263603564806860916077047294 GT 1 -49297207523694.9589096178175003419076364949900120 0.1025775309812765351896792085430474 0.0324862640437817876421013035469093 1.0330256568082137169348587868376794 GT 1 -738586236621131062913761907950250.5151597251536470862630663721683274 0.3325392395782715763355642946520735 0.0594457573772378457468171268355596 1.0612859576641021910201048401364053 GT 1 -27099177013649494603170.7548332531036248677779767771987154 2.9946265388993134532375530652953580 0.0315186590590875788956361848872870 1.0320260622567509215129478887280000 GT 1 -1212027887073152431538314934.4136830325112373720261286252230511 0.5781325170484745759184798014363201 0.0728165733767914159631883945632015 1.0756038617677629673966176068964538 GT 1 -23.8244958350173788363546662875612680 0.4833600942623171101049784282914721 0.0049604365424778303619546721055103 1.0049727803451758380055230741699597 GT 1 -24649365.9893043507806944562853331133845659 0.0558950217499190551483362408862676 0.0035096015827540786861855846486652 1.0035157746820337253540349210051417 GT 1 -723174600132910667641013114788.9081160349915346527872706575063976 0.2265218466704705401436720601565286 0.0455800224398893559510438931034310 1.0466514763553588203596669265405814 GT 1 -87401693088454.2325678313585758163473428268377462 0.3010243599140843912375612415856094 0.0599885029423116353452536234649845 1.0618631728804500409136338330951162 GT 1 -1501605000786061181608548386522687866.1615093868436154444132969151301200 0.2334755997595232166279383898733132 0.0221428518366376471832400967339695 1.0223916848885261677537216750977204 GT 1 -750641202485182553301318737469337964587062.0295274614580258119166468355024177 1.0941982843852348152253850311629752 0.0700589863988184908432796616180862 1.0726341210816528482372179036668648 GT 1 -70365083358092788235018907520148055430.9461513304918849590342518271843356 1.9733929272016409305212958430901839 0.0763467387185152507432520847771392 1.0794185361208597036370426382153971 GT 1 -3589689.4305553617429314700737280411796536 0.9494091203564446396873848404631328 0.0511256347705277385264918106986311 1.0524788756171347526465256601954175 GT 1 -93320654073838548187079073193.9196710974285706293162992361884079 0.2137760958513982118313757509261930 0.0429009909625897709391282874984369 1.0438484351612216117373305818750092 GT 1 -3304589729759.2256637901954369489450192606258394 0.0582394509738807310576597598075234 0.0896772476785772901875679029760686 1.0939560694721153605694650919099917 GT 1 -7125183388030190033151019.6005636357394225561645985791902576 0.3597047646092358821940885475007083 0.0371552190485155830660470097049644 1.0378630629879381213705431071361684 GT 1 -5392584672966782684080599752219829234420.3946835246924707398640761613002050 0.7782002023659912347503838319105532 0.0865641620854407384631938492286507 1.0905421432722781969710585027841462 GT 1 -32885526706457.4072361815614832379226616990015617 1.7832531623915665892097956100132532 0.0523601337801243932528443580936031 1.0537807368565413522002943309588496 GT 1 -269542346025388712763070.3819200393835482339699620901878776 0.4516946533740531673250170672173337 0.0248041605896637717418630193023002 1.0251169672204681860093726627244959 GT 1 -735557196444297043282245419745531.2084219349039438614005259360095645 0.6210904166170214231991064632073732 0.0971863751659992822876112229114711 1.1022391424003088809349808031784173 GT 1 -17578306976415424832.0652979351860473460422654018991676 0.7719686519828197753406661338340106 0.0611454763082300994885072070464883 1.0630947386221030537688643530776665 GT 1 -26382899148923242587346356470256496945.4973089991706345198932181271959415 0.8530135430621972044225728631704083 0.0485934169524899935480413376926666 1.0498137756811022742177310118185527 GT 1 -836841440653411352533118681889858178019800.8011762227298034229085348399758666 0.3472861806990683729250217639098706 0.0865313992715454687689480667090157 1.0905062762469365567525687716662608 GT 1 -668270551395122814749.2258598609709527757441667619826658 0.6339397280836420468880691238385636 0.0186125521508381161883105252234861 1.0187879454538152741653925505142168 GT 1 -137770242534989252832589378278807977.7669726630096098458662573906242755 0.7759244725954839227543567608797392 0.0392637237853997506862499352067379 1.0400553340892722564823789764489884 GT 1 -8110416488181939942561335020615759.9968838845981191034110323966689845 0.3837227306177823999678132131422089 0.0212277523076145900712095763645951 1.0214563012152736648399953446910419 GT 1 -3761661461523969.6926518011327285181247399891410167 0.5379251879849758381825744095394903 0.0072371204693755532221835803778121 1.0072634354657867331073448446992867 GT 1 -194.1134824570072065114192684805389056 1.1557501110515387334854906691137918 0.0400084621995322743402518206421583 1.0408308093502850820672136290733459 GT 1 -156386887700431.5937134678158020545746612244062943 0.3196646564784945422142873787939320 0.0904452409051567215333184793240299 1.0948000749256158588152290814802948 GT 1 -2238600162133866921927589577599538332.7444255499897219200312955469259222 1.1088898558568850226486807841582606 0.0817082970369053979763326799894568 1.0852401796173576699093902526765132 GT 1 -727197920041.9502439720333270944561916820867320 0.9865453724001018030675856723925592 0.0361153612314372482756195763612540 1.0367836608597537412689420188857762 GT 1 -14031951263140635741506954702066352.8256316837786352713530681347747054 0.9243685888839099619272963301526871 0.0293907780692573907568790832156978 1.0298313407881355313624313119016429 GT 1 -31322.1355725608669349069898384092535507 2.8470104263908401373844619160479181 0.0469809134785059651436196866463546 1.0481203476990096639501595184964221 GT 1 -5391.4007830396852146979980660992792429 0.0365065515488435065984681252417837 0.0247641027684395148979361298257752 1.0250758913699502309098391012200545 GT 1 -236604336061023318036388418605590125655512.8425617407537536168964349414287838 0.9385120885801726070020008166428148 0.0410982758518596379398362475394300 1.0419666867762086001216028632841923 GT 1 -431275223946788463768611710996.4988505739265289866394694161735068 0.2941715293959106077773515945191086 0.0868817579975577546658828959252376 1.0908898974601335045776375100241639 GT 1 -229387525848922162817.3616731043137449940317183114307356 0.1169101122908476368692125955156338 0.0425535370197090006921437357620253 1.0434854728270555721946881133321583 GT 1 -14809682252606459811.2727236957321154568937567489270431 1.4700845175396209663656920533520359 0.0689203165455440531613426892538977 1.0714104162650776819326010884616855 GT 1 -4583103739.2355351570131797500098907253429632 0.2172612115504597983630750328222473 0.0799832795059536412366253466349723 1.0833634346541539847075349410311976 GT 1 -478536372037840395180652591404236349529.9830913753927964125261311066933321 1.1550532115141784091395410619600914 0.0786854990360835250325662023263962 1.0819538233146647305866915741883002 GT 1 -21587861229441.7366572311564362324553628919306248 0.5619562249229110252926475674337370 0.0430973756108192917290223264349527 1.0440536436056544336971243133389376 GT 1 -5440138679174.0538601807496194815907180166365044 0.4240241301277826120440998194884939 0.0347988495312909276072257974120411 1.0354187532834532735288164212797307 GT 1 -4632899600272917106718033.7271518260521936493151348162514567 0.3827437911526102339260943923192721 0.0445466931994539581229024912597159 1.0455693843132049270324774882051557 GT 1 -5928990517640810749441.9985610962407117615491145427445903 0.3209259231664537395400851571268168 0.0366702933005040860993322752594217 1.0373595512226588431957672500806373 GT 1 -157450059.3622383214472661880052513632159551 1.5654634151355072247763390479689032 0.0648908720149650437373342218813101 1.0670920420815510582766054545352054 GT 1 -426.3112590913876166367482905342396227 1.1406494087968896107112084990672666 0.0640485130511953445438504546449263 1.0661916340306763573124262135623674 GT 1 -20385892013646327.2011736378644895202831259808932909 0.0079233789072305900787486231785657 0.0073961876162597807650591315423358 1.0074236750304700805982063572806304 GT 1 -12579532576156131550053352054771495143296008.5220558482741018068410819934859946 0.0954224800628421175707043663147899 0.0297212143863715406439574510158942 1.0301718409293309998863311094969774 GT 1 -1.6105841384061973233176265642817917 0.0185337337439980063014608780534198 0.0599164982100472994516806630676474 1.0617865759719494871739751842470769 GT 1 -67913714688225999602915172849532985.5738878949978336391725422122490950 0.8946129441677644806429002871680797 0.0421290130643049356851020689588931 1.0430421792494038972729824891986283 GT 1 -882364432648175747242533047405613217.6642995712219456812112653027284104 0.1099422516661404881050618514487237 0.0020246331867567863660915836171000 1.0020266855271527804355299664188439 GT 1 -18251957191762.5282190564135522029590267132666292 1.6489776643393457785498186283059692 0.0223563501547854085829972600559027 1.0226100415562539182397434781888215 GT 1 -4320232854941366053179775693520313396763.8586276220602184210177645771818635 1.8753826836027931912425754033574303 0.0234375350640649445859134761280516 1.0237165625229191899804832737084518 GT 1 -6248946772132176811610.8723750866776603510888051508735730 0.8990260218380562479554507630865075 0.0749939503007440291424318668413733 1.0779550012756871136637241289101293 GT 1 -407528252393423856323078875525879.9869200057326463991816548004072004 0.6204044875484727674538653352629811 0.0039895861962585537091384131845634 1.0039975658259520654319427176838895 GT 1 -59280639672844348708956354157.6895130668402122109465249939403178 0.2818483417746589039127635501055731 0.0155942191357217713464625802597684 1.0157170880075927088779005730835529 GT 1 -3029273871928899252341041353731243968151143.2071916901844791536832186477492563 3.7673887550948997606393810080258656 0.0052753911812907842854133207014421 1.0052893551894027713116448722237477 GT 1 -414133834863356203.1166849292972205101214269597549289 1.5365354759195785699502098073956685 0.0288599924143085469999505876713534 1.0292846320163734912737714933661188 GT 1 -97251486193164299805811519870.2963176018821261807113163331267322 0.9627939546517281658483234400829273 0.0188513017729273331056841987917489 1.0190312526904685781498745776483864 GT 1 -41.8391130683545139591646235725420393 0.1209752968573608083490616455930871 0.0179769449973427326974645125594253 1.0181404933038183692381148534812303 GT 1 -4115809358715413527786746146221.3733798507132223254590193904395970 1.8829108980121546837526001347951354 0.0358935706226934661726872172631020 1.0365535865472877246447460848017417 GT 1 -202780171696792283801217.5878946621051874090690966690636759 0.3444131533596283159999027586355779 0.0519155685817497876322587590886269 1.0533117180154809098006009129904688 GT 1 -153290630684520169349235.5065865209841848480233121868850029 1.8904376000345616681916476838314317 0.0749126721114557352194657034107270 1.0778671373977605239067455140332275 GT 1 -57550685247311521156231389.8062036020927504222950185005710940 0.0135716136038901378962643881329173 0.0138774786779187835929165730341306 1.0139746711235155795917718684525544 GT 1 -435768576517464496760273243177170006443706.5560244089096265761705000959129014 0.1855048499807841395637081250085830 0.0599574583523604271989527352231501 1.0618301476702008630149518134563180 GT 1 -699.7339832255899361394992100957691722 0.6055474732521228135173206947276949 0.0665214278894249119759620359280481 1.0688372706177784456480260696813362 GT 1 -108341.7862827255009460070251858859726834 0.9804318307042463453053334204611017 0.0986419605549004081673282351079328 1.1038527202360967977278359047253834 GT 1 -1202349334921469793.0005944224806872874704965426546694 2.2326376686502618993713657104256434 0.0894214250099543842052557611289473 1.0936750848119704039447370850309185 GT 1 -2412815806975951929162959079749521.8720696033624194162824657099134235 0.8104817383005149130481110941168213 0.0653321583544056016205978328734255 1.0675640623864338015396652025129393 GT 1 -4580673.1681823233408894732051031387079665 0.4396298266964899869479538059708472 0.0406337047027546595038027189153940 1.0414823215535406680045274282586816 GT 1 -23529795552097499479.9537781709376598798891553155651143 1.3853307913219674604020409545793904 0.0253383711598647318417821682734090 1.0256649155626068172110954561107246 GT 1 -3066076219860370826969.4434298939328496293746647480398382 4.6957367243572631195787095994582576 0.0260278584430909564544438007783672 1.0263725778462790648156542582914100 LT 1 -2.5278947533315433920962571142322696 0.5866015777101307631793725168034246 0.0729864222591217139572482405866638 1.0757870665538839722597239081415191 GT 1 -8752743082349654311156720.0891940688178138991157746032907330 0.6151193745783335211780421344039296 0.0019835638739951841555644450602762 1.0019855337421535431028826474418981 GT 1 -171348930091363151120965904619282661928.9016788295290550631685973199726222 2.8878928313587680846931434554223090 0.0704832085246001738415591270530657 1.0730904069215182503956515463444000 LT 1 -541474340019.6181160977604906515058131629915097 0.6316014062467796194515925797664282 0.0445322047417405963582931798447778 1.0455542204660968180845638055143854 GT 1 -46056821187342049522197605.9494319259076221333145046186558276 0.1113753664698790828176623592646195 0.0772468370767884203326215904870496 1.0803935093637757334394903082561096 GT 1 -596023658258480693690741095436180.0458664906665104715147280885189791 0.0652095450294953247143867436172249 0.0554064557949127702991139015886189 1.0570005559653602923097817826107275 GT 1 -17509602419204684588941446156179.2261193263959761824662808571921661 0.2717345477715616709742404257071101 0.0330549721007080237465158587293950 1.0336136332323552830885216365160705 GT 1 -53839079.4351900820815808628231294159562886 0.9092957040629248406377429665833770 0.0353194847688762138860534631892969 1.0359583047590375723287260192198220 GT 1 -2.3135393195042142497332327335709727 0.5804700158065412100798584856814136 0.0517744053145215261516019992818839 1.0531628359597560297992771794108427 GT 1 -495584397488636849.7006996052318958324014499047750901 0.0677144607199836809390255127236038 0.0924989423404915798155242789985580 1.0970605473787873086387307954078317 GT 1 -7560450307996442187120942623204669885877175.7436993663294611725165452757953879 0.3223426276886320087402812808743166 0.0673090632042645526800143896218047 1.0696813904663227555988243253157210 GT 1 -329017.2209131369253527204566527701840885 0.5459358439964358741828960746566140 0.0050632402773983188975677425754551 1.0050761019111808609203700704848637 GT 1 -300392106434041413292270136068357144423.9551525450340556948965348862767705 0.3219846810281720091162563938677644 0.0669626469156363589386370530038814 1.0693100434759940449949963347084048 GT 1 -41661989871232083606817453935645876323.6225102518928427575124936384472321 0.0680795979289685809096057859011518 0.0378407472396890101010338451168823 1.0385752986073421264010455821082365 GT 1 -54519678340473336266916656.5844843176794338413456812281759391 0.4785051101963349959662996827595754 0.0402531551997811807637656603259009 1.0410857326291982755505651123333502 GT 1 -7158343767877501516255525.7240305939353765790090054128395380 0.4844195326225802320144048076271849 0.0698921713348267557197339022807028 1.0724547547546528364224191432191661 GT 1 -37353864637463026019.2032813234909133009204130830601919 0.4692245153677646836597826245075611 0.0505159638828515777127251183323817 1.0518365618072614153035482352154771 GT 1 -6316984509523115958340378014822328.3406547788247653900014806129025261 0.1684017424524176962623632612708150 0.0429278799007842902228249654920595 1.0438765297634094694070371459684443 GT 1 -1616429242090847664263208753329160445425.6874197442212487811255280392478680 1.4822878933390572669466251022388478 0.0720358220112606890718403568300530 1.0747621482462238456342887734007757 GT 1 -1143357610440141140423488.6257356485544491706020341027933887 0.1916717409274796934841611804534304 0.0286526124336719213076841166722200 1.0290711119884525059130457772066342 GT 1 -2700379274150426210543058731341023444912223.7452296568074139313525449985028075 1.5575976449549297959226746295404436 0.0083332191888931295244226024573561 1.0083681345668860530044452424354733 GT 1 -62696512436.0580303121898632650631574696431213 0.6672024060398589411930426642034818 0.0301800888401314989403520152896603 1.0306448833194732351138625451363042 GT 1 -5096235658379.9854075641082510840573469546827184 0.0988830249043990885330679264708536 0.0720450120084694173481629757773279 1.0747720516917803759620735036805790 GT 1 -4541938099872281429552818192718818819152813.5110501641467810368464464302428601 1.6643846987828307328852971781562144 0.0066698866922094010265578923148244 1.0066922297925031409618408161588206 GT 1 -190127911805852499839931.2994881326322020410919507996969243 0.3418444057166384712455680405718973 0.0363864098569019665692912799993449 1.0370649048299797306174251693728433 GT 1 -2022278365782596466791524000456686.9150836111667525639160033030270609 0.4845608969812383442007444561879426 0.0209070187072254927202463149346677 1.0211286651772972898145168124133846 GT 1 -77760356159274527574957151361.8147301182013217429218086407051373 0.3216808990074560593564450252918084 0.0039836168972333562963641575784600 1.0039915726344603794518648486055340 GT 1 -68790867022527500929112116971.8698116182482631644893063427974958 1.0569244984826201398609402869767051 0.0197955459824728663386505525456369 1.0199941025285143896101993255197014 GT 1 -184320289295.0173638773480720698769413925491267 0.4903554337262324199393054345969161 0.0753237215212609071146834849066747 1.0783115719354021937334016051024959 GT 1 -69488944029.7739377847419158132090464684805710 0.3739544336245643388080868517334807 0.0910432024040850490339225169823597 1.0954577133313540266138476060116882 GT 1 -1154884057325591195451083.2916123476676107394769553641467656 0.4137802874474856685714539251439882 0.0721367399022246618561388434895655 1.0748709060854413751497900104487637 GT 1 -190.5110776831195153082140157699144827 0.8789558561687308864723892151510137 0.0244671286647041569431295066425205 1.0247714225771186873788808542488087 GT 1 -340354530256698812.3871974709743968725271780330170161 2.0836534506752687033703978152477300 0.0899924942641219213825351891086679 1.0943024314438519163071781461773741 GT 1 -1982373978.8112560031511293542494936697133537 0.2700863187080538958422376887003342 0.0079525186680631961252583581349447 1.0079843085968166900613917509435059 GT 1 -1942163192285376.4049818796992791790631679372811476 1.5751615137481652201911725399756224 0.0351644611279938347802771022135629 1.0357976182066906441183093309589415 GT 1 -808313786957677953782742368295516.2734879715024912251552590764183566 0.4113334153082609066267871981315779 0.0892744778792129384242117065984084 1.0935137200719542709722266517442341 GT 1 -676339671354.1183279163544480552085883681295097 0.4668073250738866965107359820745581 0.0363479132893573193275392117863300 1.0370249554156233116818841253910823 GT 1 -1248.0963640774234894303070516151599553 2.5659273102665339428826683629711746 0.0934710667595840328400139083377538 1.0981323317671684101232581223007670 LT 1 -5438580969255158587726233072.7390586877678433351484961697584244 0.5854297582752980476556697621406280 0.0106472866921468417940480247004230 1.0107043746318039551742733935744777 GT 1 -110.5246839098606099769933306890028270 0.3181436531717611796295608397971320 0.0885546405407732653894580178535035 1.0927236323988801099281121758879866 GT 1 -6124725785260625937.1447140102050376788581670961743846 0.8273932233130013508094372811575506 0.0396457006812392654083236529274183 1.0404530008164303408801034246730924 GT 1 -1075401842522.9520590257433843568712636552763053 0.0601697099067209436040902790241590 0.0861409435284439547206063902170268 1.0900789245921794708859130948242914 GT 1 -3234286112932066752523084652300.7677660470005480899859984560724141 1.2001679587394957753802592151096439 0.0378396771060200443293180618006016 1.0385741863870201957007473157562910 GT 1 -1279367823270100411342978525858601.1574897777671046400744759972230822 0.7342431211868527135731920494725738 0.0812365586890033318751028470147315 1.0847265985637442819593361796178395 GT 1 -72479395442625547.3473653190105616232262748663266941 2.7678541913029071517686388324195582 0.0039899996976441164163057760081358 1.0039979809837312072370031158173193 GT 1 -85078802874168354377616045793613.2634320311774719154249680867844138 0.1603983310183037299954898184117634 0.0982734010869424793047085400194791 1.1034439102831413936268525823258094 GT 1 -125298693948087833235478.1319933878571689092279660512636194 0.9303952645804845076955200681872694 0.0363611960269069674956032421352740 1.0370387392586478031419430382170456 GT 1 -278426853448228350177649064986757098690953.1333786126887278026916956679162472 0.6195972840721398163262453143103804 0.0432864703235455335288510439078432 1.0442512743718245091446106736077292 GT 1 -2873593915019.6426584043808173573929071038865533 0.1595626115762193121551704939672471 0.0547337718800728536429956161266764 1.0562886682866029073327818449989583 GT 1 -2657736509993937651950530103644498365665.8251814703521732532011313210200451 1.0546485517230174299211233227014808 0.0658952918146164480913889765586953 1.0681667397719796155478609561299475 GT 1 -2872139637481973344.5056350466147862063726893541421539 0.2270743018504875583227516831724023 0.0871033474899889601807494800254248 1.0911326002926074874703608582594673 GT 1 -1847895032997.2603037490749989911448901331016767 1.5873449110234419809235710123461910 0.0853275771834651487328746565175238 1.0891892856575072828279131436659350 GT 1 -5248523389979757892.8567077749217758777195210484386109 1.5189245557447534900303228976772279 0.0136841629805040294213273783769860 1.0137786541506999942626228659531874 GT 1 -9979688116880252561171.2520423864880003765821810904509314 0.5929118131038828384979584711944090 0.0406944961438202252017420462213811 1.0415456898076764000256423745874565 GT 1 -87506222764707431179724725398028460002608.7428851077998323938291760142000940 0.2254191123154954789759416480800654 0.0086214988781240434251719510612508 1.0086588790031206688689597010197143 GT 1 -476247675815892.1969833075759994720159075652870981 1.5968985543761739726084689110999135 0.0695367658282549148802595674178664 1.0720727155861486572510287815611841 GT 1 -895564987287904598836888784738996239632.3952238265222372659602873954607879 0.8213817454329506037613446013750474 0.0609178967083866168380755653831190 1.0628523666509858648043952515914866 GT 1 -1176312.3105195734039070906172075862495374 1.3950690808207018325063455870670405 0.0710749273026472087188059607217684 1.0737271971375045628875668803768946 GT 1 -26661290418.4551884042234983458801303362754924 1.2501838220682733693170785840891014 0.0362069899763666551850898171138761 1.0368787273197044769483643148647820 GT 1 -1520684114523175.4486571944124642578521858945848505 2.5181856817847569398048581307003640 0.0504957109126046456623073179410742 1.0518152315336848060788535394128655 GT 1 -321968301496004745382256.6969028451020632140972923258283688 0.5580755575011349042896245576980004 0.0942498595116942627730380840789838 1.0989917940998073621277282366627853 GT 1 -3499816349705552.8369563364668631795764335532335358 2.5462996017252748970530950131768493 0.0776402690986118233401217790048557 1.0840859014539565184608920523126946 GT 2 -6.2310857902031852628846152823977709 0.1062235262163591290066222422470039 0.0433048905990713292987657487902402 1.0442705282574296737594038805322517 GT 1 -9177127851164880774620108849403.7247644011130977054102746597815409 0.5225805042900014649853889002155027 0.0452413776672080518619919647298335 1.0462967219324338435707661262812793 GT 1 -3668154538.3115114418054713857124419040230270 1.0243993344338584462319277829020301 0.0381529808849216011547527826328265 1.0388998647509537279337171743901332 GT 1 -1748314289348138451486769442077507537.2233065706281918466449500712855276 1.2682139962883295046839884554981805 0.0929326305766723304936362866902085 1.0975385544221874575424506348100894 GT 1 -12488967967680523499547445791427.1105941725421272268810393326577277 0.0897484641519146377382614437896978 0.0496793743872484350395246898626649 1.0509558506830802905762011658372395 GT 1 -21067501301360.4039177752130901835652635820852603 0.1407875245755874051329208474281456 0.0967015619107852082136266252154381 1.1017022839441689194110848254834801 GT 1 -3775918457026548860954101352002065177933638.8332424754607050781938601488106936 0.8403813070815453446521148450062223 0.0978689919951013447193660302657612 1.1029955277754915422824883127004795 GT 1 -10630952.1249680702875673134063262105715317 0.5526136333651728849175963797042878 0.0158255102864143650902728799290315 1.0159520707057470129009605969249250 GT 1 -32553216295223227927244879716727224.0716722081870486612862959150362332 0.0997581633889008075342748796358276 0.0392645269998036283247708560141696 1.0400561701300875387433254014641627 GT 1 -56750595743767.5659201439444829841217986952582438 0.6194908210091468019022337420684889 0.0500304980481407564088943073693453 1.0513253981114387798770712321899076 GT 1 -534442999591548949917580736503422054560.6781465011437367833949378550000610 0.3774633500361996600034851170883660 0.0456359096913571025370181371553719 1.0467100343163398309080261654552121 GT 1 -321227203.2023376533949255891208985709658846 0.0663364861724119790889464278926662 0.0585184317007450360239371681513830 1.0603005080290251762867278956521405 GT 1 -54362584096935638.3991148626268746242290826138703388 3.9028689381504788201722208487429548 0.0481203227754642339448946854609576 1.0493166416486193190890258108655022 LT 1 -10656850850.6854372905520372886102985617848215 0.2705476326579226434924339788082109 0.0806356556410780943522612678216591 1.0840727777858678578712790641509750 GT 1 -418697946476241680398218004126879095121.2968910459854957619875719055504920 1.5341418572171445583598941730668263 0.0797262273156485754125070681485767 1.0830840742021713729449144373719411 GT 1 -5762305523930296129480048322535805.0743097626695074858941066383981671 2.0168821686561335014092374639444654 0.0926270646162114516288722649583801 1.0972017387523193865837871721491963 GT 1 -56.6446773733418223629954158479392579 0.3593229645002491362993772298380468 0.0760664256437461547011524827387581 1.0791150991494405662988058168664152 GT 1 -1602684948994389048892579195254695059413361.3279462898313098815969365752008605 0.0088800896473115447574378884425034 0.0929045728943187829504074994841239 1.0975076225979768997389049292898496 GT 1 -299987045049081044.8774382035081348730937298382386110 1.0441563693182220679364612214737424 0.0488166547704982923623939482236318 1.0500484429793097397069536390508127 GT 1 -151524383963.1001634424104712792485338130365831 0.9532166555498410859247272733778589 0.0729896558825820120336202041748123 1.0757905547758234823824052623085992 GT 1 -13741026504933217094433668347.2245127496926891784346232664109806 0.4343958134574577167471725504847649 0.0591876817167530152372249077417496 1.0610116085101773184486128565582463 GT 1 -83352920962076627828068951479811274.8647085646306783253543290997909702 0.1610975329210151710873592377408317 0.0166064136976448313100841337087783 1.0167458459877837824663361037942985 GT 1 -1193842522890.1515730103106700200444376875330528 1.8573524280603220870583068314113353 0.0767582491150118045011685680392761 1.0798641601553560397248408798511837 GT 1 -66451254217260637722344761535953350877887.6099617950197357890073860510871056 2.7984188606904361656865603782273438 0.0939999615416348024711709700360677 1.0987159304906319152947298766276719 LT 1 -446514231778639.8739700964362475609019377042852209 1.3195608149787611201121748640234955 0.0798541453577396707003614050395677 1.0832230838501861531037138598452900 GT 1 -464380254388643764963.6295161493317280502285392531653187 0.9312721180430469374208493479011499 0.0121519991767786690859550535572973 1.0122264383903006564348958787244140 GT 1 -36624700712294608049.6981475480012812003662617335560456 1.3798389584136039119226077790979372 0.0712487636062667805897846713761998 1.0739143517061194114363827599273666 GT 1 -25464.2725497022217705782977273986702945 0.9661609570448467426272033251080380 0.0424806456931105357580654968315606 1.0434093447562820383211446214251786 GT 1 -55691297542206155.3787879908508683242546752724180683 0.3459390912708922391234271089396346 0.0257658464322369867468350553172656 1.0261036001583521352103872084602822 GT 1 -58038347079694.7721601410477461090936954411575504 1.2340496153667814616206876745344063 0.0675605952873693008041308593994830 1.0699511111169730758054453191182184 GT 1 -1562812326259528973488298854548.6437507558403641796724811817027868 1.6963576142021162766222566090539261 0.0810786039978777767697339664050088 1.0845546923823280091798363580193059 GT 1 -211902540530838762037134466171780594.5051898488895934313995986282595834 1.9917329592309385335078893719739471 0.0408923439514386102326924837974588 1.0417519517458812498942855578900555 GT 1 -86997241461114073147.0498082533639102037316672945793859 2.2686814986860984790693715055188838 0.0246818861635491161722301706015576 1.0249915905974798784315143274959209 GT 1 -72587246067163564302239953.6321615971593260544336542736050976 0.1658379938841528060967809795617233 0.0192986137593911140183039389485082 1.0194872630632861596617506757578223 GT 1 -8182477637609668712828674774256997403.7147713781109608340308152783338922 0.0425733249521374266470364620433936 0.0407562636653967676254016333069811 1.0416100796292185785451743532092567 GT 1 -81754916663571.5867246951029972739461451387666068 1.0239618511552029928253345871980163 0.0093283526172279845407628924876889 1.0093721341844831322410660940850400 GT 1 -6336303307581431469482.1477265429385101849718599990460613 0.5596789722710162297365661640008119 0.0418246436485692658742257857787638 1.0427244735536495073418124062898653 GT 1 -11546052209757537412868975904.6804208159397731930363752158052030 0.2999458762657381884299784409848810 0.0774782263339584399067803399961414 1.0806443004559806745414833968950164 GT 1 -2713251685687857307334.8669968227295668035588506437661452 0.0656353969334737139867641717380333 0.0932776055381106760077296907076143 1.0979189457690425058973579529986312 GT 1 -29217267857936.6442169543861782912501779205466457 0.8726475687974896843738367634038458 0.0205306042780229333223482579552408 1.0207442868820184944939577328316333 GT 1 -6091949080526166511237026015767389642160.9396549245039474837339751605909035 0.0665926071517172130571917812085754 0.0046535504173102336161816271511363 1.0046644118924346644288734867943470 GT 1 -280048978063699135070.8999183231259473082764117765164755 1.1031694690148950799843182859411492 0.0787137603616928121583675491445371 1.0819844987887256674129355128902685 GT 1 -390022121097667.2393192390413817712923475306119233 0.3778607867010397799512451418147749 0.0377251774110626325668844657230049 1.0384551907478465112963690253072540 GT 1 -835935161438.2831773791251311952051569529554242 1.0018441160503675603661207999997546 0.0643756198211934021348010488049182 1.0665411862760050591103648077938574 GT 1 -233964751762.5492916984446581667462291270159489 0.2454306761841962428313938167996526 0.0620470490849111203336742984367084 1.0640554901730516873702125317636377 GT 1 -244435862728712456251623716.6989316785420396926792984732948993 2.7759591253771124028574536921770423 0.0824177445583780020548285401778028 1.0860130513643959535778426612614390 LT 1 -6782294296737220854666.5174138209382390028385637618645595 1.4636763285344862907257959098478249 0.0551176066460345654570186650493183 1.0566948107104072203858081866643467 GT 1 -200234917971134892003386255814637208213745.1381215500962233279926799454859625 0.2296151938053991264571747481875904 0.0161582316731788396168056795743587 1.0162901994062342772828464508388434 GT 1 -584751677223967141070488075437.1121106859169799251374476885875994 0.6618441428141303682692827610924584 0.0903390840479419071762072033326875 1.0946833687441648128923383295629588 GT 1 -4051883640554704435.1151017490138613646736791719841295 0.4049439018310299327154319146273425 0.0154622923914949906607757238559405 1.0155830803581130999190594273787483 GT 1 -862214576725219422042283158783.7276914014150723644253443294995596 0.5079470015498170567437183799067110 0.0966490511261357271857925209320843 1.1016441533682606222421394371704780 GT 1 -28077251192791852226568730316809123428955.4573163055502357353500148841656681 0.6215915595444173909747248498765793 0.0357837464122250043821458214830297 1.0364396800817802657609902266561102 GT 1 -505083732.8160759812540699140108550461383779 0.7833927766402171397426060199164229 0.0544969848053765738172382876510225 1.0560382018938673666821761843629989 GT 1 -652218268314958851273906743639.7918380540366601886715227908259039 0.3634308951908564049981009002807945 0.0342239044757834589994799491155635 1.0348232568075719928373666404264968 GT 1 -2389350950045912709397677.2834549660008743932532374538865050 0.0633023585974393239839216363347254 0.0497817575755734413898780100367719 1.0510635919033688131554593341657426 GT 1 -699730312016989.6916412613893436720701768198305671 1.4802586662253137062227561471766845 0.0094510813303617427016747212523820 1.0094960262088176849998385063654098 GT 1 -218620359871434.1013389718450002583219093214218846 0.6761422568253719018440820678675900 0.0499108692306821756777928802843243 1.0511994769261063832668444181446058 GT 1 -26058960756624320069807986561364384.0719058919495377906040375817445582 0.8264285297511967241625931165373209 0.0442849918527476320357021185701324 1.0452955190065282037757542642685538 GT 1 -221219202584690882559314512867544565325.5034530316569365395321129997685941 1.2888714511463016242961021139778729 0.0378376589317555318529541712608442 1.0385720888445422021720634096645935 GT 1 -358445.2859244474976555931317023596947716 0.2097605037736304374157991587876646 0.0654109710793205333565041192846881 1.0676483875813309132979075612142655 GT 1 -258607709963599981589635045144446727500.7071624803099403261169152992752031 1.9847391710344641282455226152947660 0.0442729985298323361366360003031680 1.0452829700274274945867465470736654 GT 1 -183706479859639645916432842240.4727798361452516473946132684318761 0.5456952937600484279934262757098071 0.0867468502385012738403862949557091 1.0907421643540300971354242014393734 GT 1 -700808232463341248184649978053615769.3341170453016013305698640957552563 0.2223610580143373068198419767935238 0.0412769475321070763126232251419959 1.0421530336392062378777332841207803 GT 1 -21982618.3550159370122254756705139368142559 0.6147687052238220472511425805777427 0.0431368424093560782799664894395744 1.0440948887767344102726088629282133 GT 1 -30.9631062044412352413266486488219846 0.5072286922900286339085061398564641 0.0549459088025443731420435246084165 1.0565131137641171853886877587857997 GT 1 -9040.3749395068756054324755756084547347 3.7244947075126296934882378699611856 0.0686089997452777771214188516986965 1.0710761110801545310387616401672794 LT 1 -669795827.9572885072739347350479463153958927 1.3574819834638474269781411182623363 0.0982052451846693648721620666955276 1.1033683293623337061123774423115969 GT 1 -55334377090339371.6143797253472438950708146769193213 0.3033799391886420708049700741978597 0.0764044317933075144333373078102118 1.0794809999036376929150109733800259 GT 1 -317736784199152974491523099138367.5954937881444361882202233560672120 0.3288816215149774467927707555581168 0.0831629841877076552147607918045171 1.0868255588233029692300037159529327 GT 1 -5696624576301624046059596668.7458604801074294614951186259394070 0.0646643633507898165287338736360481 0.0421878904549137871807800200227016 1.0431036480703540337693924529062185 GT 1 -2841493419132606697678661149626042855.5340380673151185561862539081453846 0.2181944865188983989729564081404805 0.0859454585981778899783410785387705 1.0898650360022168447644509382102222 GT 1 -1258781330243159175881009608060355466654.8168423628270060500122938431832723 0.2874560639390239268462346948521579 0.0456527169694282715744454254550860 1.0467276454421563023355918063014385 GT 1 -747143215942517.2813749942805282957567193281249451 0.3653978726446294888743939589430622 0.0070399344119645354743676074678116 1.0070648316690749250329746191992751 GT 1 -526941278071.2573674557879719159337236207846440 0.3443986605658416428756544448625945 0.0584772989119938737711884916456577 1.0602568195579723841242767069573548 GT 1 -544.4160769690374409297281404408146120 1.2178683011594055299371884428364385 0.0105208572461056105009016875149169 1.0105765927327750194199033288779708 GT 1 -45071851353.4978001937096211698595253739323494 0.3360239032485144072362331035807558 0.0632883884671722166646196904882889 1.0653798226307664204553729303521006 GT 1 -3843053649633678822396.8104662348136139916759811778647924 0.4874644766709791026007195708172201 0.0800968081081698447223553604332167 1.0834868406802489633962727384249726 GT 1 -2220052668828129072944270790946166579.7616297026007656986952201665179812 1.1311351623600795743641930054137701 0.0070907326464870333262602545053235 1.0071159913639158067046477654245709 GT 1 -9162360390903.3024660758602474776712772874453038 2.0120854541892737552992808553313723 0.0273759909542259305487631655102345 1.0277576958906727109783570317747319 GT 1 -49876029875.4531101104924651799172303825198226 1.1612247357871603245345495718150015 0.0535489023608252702609186866429136 1.0550359761871453325476746468033302 GT 1 -41220200266527.9074094983599706540757567852718163 0.5255903123637992141992045752559521 0.0908703961673655659222883471049873 1.0952676164942575161726032374911789 GT 1 -27666412335.5314462192464710895736978644569702 0.1508280051724123450797591403967441 0.0460314260638976004492049896698252 1.0471245494431982367791653393144702 GT 1 -399335232227320750456911339894088437.9323738997213434362461792371096537 1.1375488735642300731938573747624686 0.0572847376630973380836881988609169 1.0589909906857339145563139661434912 GT 1 -16489401277280.2709341016657546736229540589121253 0.2805367309311456950721368235874189 0.0515916909307376381098474907177741 1.0529701636849565474345549471834211 GT 1 -1523403671377.6508841249307988726922901603881368 1.5511613392953948454164239356223887 0.0840539423613419047310118748769291 1.0877978050828006946547574352267576 GT 1 -63780.6364285568208311434027440210143733 0.2285946584106079349926586679254426 0.0272810538839670835276210003346920 1.0276600914347773548062026917442219 GT 1 -14085730692.0362877181779869645475872853722102 0.4186199058802446166714875898561719 0.0567978551542163377790734982379309 1.0584746557520367735356624351475568 GT 1 -695478329.8098278013119536003264789961696241 0.8833217936317906603560696317917234 0.0013105430633116038948216560540609 1.0013114025759062504409135621025962 GT 1 -996292435439840771986422.3888719425960049108573293421894024 1.0362714509574279267571487906998960 0.0702187685752544975183833692000166 1.0728059555340895211241159253636398 GT 1 -1.9996611562051911776213742888647448 2.8104259405996551284390177706773750 0.0061088241445215550554162376005473 1.0061275593497543008347507368028578 GT 1 -59672019828.7161904714428627886198388000947487 0.3862232543204710310973939253239715 0.0348372296518528129870800560805564 1.0354585179310961922658632738686831 GT 1 -12.2084029793921276921043462075414327 0.9079242285379267828158535553127958 0.0331852951739643978169986411528363 1.0337484204773766789747811368762375 GT 1 -142433792014161791395064220.3317031666788295894866303061068978 0.2551674368375990923471756689537018 0.0699460796892244542887454944576356 1.0725127156867518520129086354382297 GT 1 -7517525151629839891022303830.7747711227917694451389020419765401 0.6776913649082575358893713919510409 0.0964677280603558874613542470356132 1.1014434507835004767819829185282102 GT 1 -6531624578.5055887448448565606076160981214950 0.2286956966926317296170055090990556 0.0899076978914143739459233972656226 1.0942092537264504489634062031266837 GT 1 -106882418058431918761.8362730125556023682726207800926251 0.3097662577606637105167587097551010 0.0145303922263184782841286514983459 1.0146369922624895950039196930575759 GT 1 -21877002.5602267067291505139973495018937823 0.5707573795981994222821992450780007 0.0836386890665417419226012253116786 1.0873445478301892264689832268444117 GT 1 -542638854325918091.2075958773521610403642548467748705 0.8749343575646366478774146039317596 0.0726193801156703225412662747674209 1.0753912044996189168169806095929132 GT 1 -6490245116898392820.9566498445894953190629361616008484 0.2130762836378105038602697910853718 0.0355222423857017724160442256238253 1.0361685079553497930506070108419696 GT 1 -2845515569.3868966079363723692754047861583492 1.9152852563928859352170440259796556 0.0093284304873111449629324680142140 1.0093722127878088926671268903144672 GT 1 -6414900594.9638103023395483720806347913966652 1.1119899471215302831640159475362938 0.0185922225464049517593395049583598 1.0187672305018204672697997008252141 GT 1 -144625145.1940874767477595312735950724676255 2.1296607634896880006009436462179952 0.0876304022267862301501317602172142 1.0917101102875071339328226030174918 GT 1 -130715842375215030284527129932748649608.7249969352179854998442656824269570 0.6612959288813442851823714717274007 0.0272130687985064847100936572836509 1.0275902020694653261424051405037428 GT 1 -98035397416133390.8467299193243986957809175005793963 0.4656467107760863765473048649228662 0.0765777640508667650875162362737427 1.0796686886824660097134181973019072 GT 1 -294.1135227091865714676146838476907988 0.6660109735169315492343595877716507 0.0363673269699838122606782642726434 1.0370451015621945759200569058542327 GT 1 -17271209119135329549885.3048773042364699038998833713884225 0.9943369007777647922326536792111695 0.0621852385536564304776593017280216 1.0642028319447269706290633170625328 GT 1 -39344.6055059109386018570695449801033795 0.0430365250776210581327091358150834 0.0423330945897946879699138738917037 1.0432552593738716850045040427260788 GT 1 -3502461.3738281213437458715031152565322212 0.2107381453225521545665146476135964 0.0935647992696426046899645005073168 1.0982357342651944402050788840742908 GT 1 -113719857363971179.4604022359717828125242341440870610 2.2195770407615426051711154096156215 0.0009186393033709377640853311700951 1.0009190615110466342355838208304931 GT 1 -2016315545184259.1595634047322843047140643619453231 2.2287700785682850559085209897637855 0.0847401450182169816466866053419868 1.0885472595098149629474877136411647 GT 1 -309271609340402929518647566577569.0000299188461326125456452986103018 1.1327199772452421619758613408785008 0.0893889363019565643007800751279812 1.0936394062562493535561929099101055 GT 1 -18984801759171.7106822331767458572973219291115488 0.0609631680142181073715051653448111 0.0563345594230526642817363259153510 1.0579835818218326777882188881030948 GT 1 -934109693692718369379689170.8419318510431420566783645676716414 0.5831980625366070575320978876292864 0.0139362875656439638576168696193075 1.0140343093937113887705796473712919 GT 1 -7361870721280.0439634044005852737625436409399011 0.6884662760479590851840650893476650 0.0055994506844844445717165937132440 1.0056151863767822840084572434941561 GT 1 -3030496909.1527098443195587064208437888578225 0.3400269066633406197148461854593262 0.0470504525580338569483293058085648 1.0481933175037793688446063222176969 GT 1 -42545122447641530296721480155.0084493884199413845490935373492420 0.2211955249135367267370194405931136 0.0620817871486622400268985230669150 1.0640925268996948354442075924523387 GT 1 -11063478636345.2106759507992545653308447417236432 0.0844392014836223083377328619516019 0.0141744406581116155123633070221707 1.0142758575344049659251603151020465 GT 1 -9407168825018904.4792047496636791791156581388303425 0.7209424494796719151861015741816913 0.0293390204545328899477117604635999 1.0297780173355863638782377209242542 GT 1 -325012.7178511625695576478566247135525970 0.3517067674850597207109719828559243 0.0459139692333392488330226676584024 1.0470014325990395611155908852149244 GT 1 -3676178663188.6949880490117463894045016290997009 2.8912715005577069011142189167355890 0.0036390904716399014558423388751917 1.0036457280694759056380706932777538 GT 1 -3771013296.5917440353454886008888511633591215 1.5780217448313709610408392052534805 0.0629329265109448788703980962323344 1.0650004160729559613798846450524495 GT 1 -452654.4506640309199873925421527529309254 1.9954905590589418219607357330275280 0.0029378397785303428436265608486480 1.0029421637005491230612361592621380 GT 1 -236328380913461860.5691150124017557784619530494564780 0.8877720657369505016749996872542696 0.0724642943534276934826424127276397 1.0752239885875377006871243485550245 GT 1 -130504016563813060503307396066441.0186200846399352891298619342458506 0.9789154245902854355229555747303838 0.0981840270895869790041690979175608 1.1033448008982841275332586334449513 GT 1 -45182841503262923772681600136267.7944858258399307297412299624678029 2.2528152010374303732751394615886133 0.0031661939812316735583148422438878 1.0031712169787202153249433632537518 GT 1 -1375021116373067.9471282287434017439996684821383203 0.5268328236862677719463056019063635 0.0952884557352914799956928450818213 1.1001391217083112678525272383521644 GT 1 -698078.8109444138173866431362523147551703 1.1283532817799609730307156922430674 0.0655848962626445480508760301330004 1.0678345029363341283968176217307245 GT 1 -4774879697397200148712877290884061.8096733352289340190569034138833436 3.8299211051994713911476910021661661 0.0939305658186125379612653680982909 1.0986393377064103511198294997935666 LT 1 -2746060140309563.1136904404812582443263223483858516 0.8895207669031110911111390836520979 0.0390900838964540794635943590163015 1.0398746141522595131520681566890433 GT 1 -6396710991457520.9353912615669389829970149611595415 0.7564420624070569686629638312740616 0.0080661733479116777621324464121767 1.0080988809262186198976845709113710 GT 1 -15891783314626751217985134923003749.7824744326688480584464494398643744 0.2235221623428383370964579347552588 0.0817053645196561556910521915394072 1.0852369861739699442084012264713107 GT 1 -591328696503862038614.2453807328914566626553287779756925 0.1793950354510258833854464582505834 0.0306731287852340010426786939780388 1.0311533955787908300457073880629730 GT 1 -869970710252698532905.7675481773690451361827452851282660 1.4431395261742695585776049150735323 0.0484615291133656401061395549980560 1.0496751612328680881108351629201084 GT 1 -83865678124746659162124118567539524.0454013006012873958185182651267765 0.1364690470650722088351517786076806 0.0394263104670600682956554957361972 1.0402245797445251342225380934778252 GT 1 -123181037953257.9094453041229311402919388104860554 0.0743957632747716253533176313103378 0.0132458140105518348055957664797586 1.0133343222495993159301871448026376 GT 1 -8312847.7370083890637556288358554620308463 0.2157292858665324970891059777406502 0.0907091414914945090987891771531616 1.0950902596291833702596860243042349 GT 1 -1682037269.5875654503782451573311141455227928 1.2731391409940331234083126779375829 0.0101551324422836438334031180345305 1.0102070475687910303800383335515979 GT 1 -6870156997291161881479460912063.7074025944650093798886262315379168 0.0044221344956021226163843544568398 0.0223567278230767078769439690725666 1.0226104278609819309632478308149575 GT 1 -14164593991697388624420.6024583961910505942133674626520540 2.2463472566665872828700825051652578 0.0095183131522099084897716845231187 1.0095639018102210438033743892454430 GT 1 -729666929.4515143372464082335203020493532696 1.4100315329256234575972974179527565 0.0110003728917268225017503253834092 1.0110613243986535726689094107877462 GT 1 -48951993530195925613776253337419682621620.0046952352465406194097666034466976 0.1423138254070113490273697467294435 0.0657748396181800644916015816093087 1.0680377987336439803543384944951483 GT 1 -3743295656542860354996003193008788166180.7384938900717337716569112094484450 0.3341414562310853491896207010196676 0.0488844487762542328778838198825412 1.0501197188507419739661843136727778 GT 1 -1712881203012012510926.4093915376326910784587998064572579 1.1174816539356759994555267708667889 0.0536878858771872376290220072637728 1.0551828339829309735319408760548737 GT 1 -197864557.5513248086879883775424222710065146 0.1017652769756542612986817423647629 0.0479131080034713351911342110647600 1.0490989752503108627888468748327493 GT 1 -332835505716433797333414836597719422521.0826297198798907578144507409873718 0.3664667036607088000088736229194838 0.0807402478189459987671945547614597 1.0841865500117160373577982063942955 GT 1 -1043311435.3476019330705969240103879968319507 1.9518415891023212252192290923223392 0.0484535842460109565260307768645904 1.0496668117709912148948374400835903 GT 1 -6981860915400488797599080.0579704665514914737867933098503359 1.0956193944626161055644121729957986 0.0699713263581367841059669905461166 1.0725398614371566568695840728724422 GT 1 -28435716198977697072.0071781835126762193083390238699894 0.0443907233253885049582063622391473 0.0340640208417958584648485989145846 1.0346577211291982051942730850815173 GT 1 -8012334013905413532575986378.3986974796090953022553611679413894 0.1083076497445682283942935496930506 0.0825266152543891107446060246965604 1.0861317079258152427196192689739713 GT 1 -32721116982138612941342685980814055184967.1999922118303665825714022116274378 0.4894079403902439510486075871963832 0.0496928718446718178930332444920456 1.0509700538403233124589185985665665 GT 1 -19201698242484907820.2525394901577703285201889291690767 0.8851200091698003668964138218211497 0.0902802896611768477541107571639868 1.0946187375329318031894914983872680 GT 1 -274583933536325957321771400348699846287.0551863840506566584719064909892837 0.6026163261113112544374590051870183 0.0868124785153044684213879939073738 1.0908140290226882483463035399374873 GT 1 -15365625070913395117737.4995628697332057535835288115018934 0.6091501590050632586871971738673991 0.0725385366567874960177574113978214 1.0753040343198337509509266293339690 GT 1 -6913.6580295446940600294014350976226522 2.1972981957309050212265767816994193 0.0313091774711119734761405470122795 1.0318097866022247556179652526077577 GT 1 -4317354481813454076225930110069827565214319.8709638588923374795123296576314716 0.1667015024117854274817998973697489 0.0567692114198209264000571834586107 1.0584442876070684892496904563970768 GT 1 -341553.8102938860469675145319755586454892 1.2637207384954637814366010587391476 0.0638203617088811006678595252718782 1.0659478996678768748287980873482888 GT 1 -3457515858320600474055869747291314645582305.2092123453083991495045484489503003 0.5828917392743418474079607037938469 0.0020820903187971215623608624112419 1.0020842608822410285493859834049807 GT 1 -76002604640288646216158658840297752548.4589099122666698157467541778958531 6.3141549502103726063118334183181276 0.0109123439743269941204186797293918 1.0109723203206146368619062150633536 LT 1 -3319504472707925956332964840041274169.1695952762123318224237902644595773 1.2480072718072598665813948563862439 0.0134960745948608320391982004483807 1.0135879744040799366472148301115127 GT 1 -108576862066609656.8459066458551450469927875408051031 0.6361100572139179037376218024968570 0.0688327768051537688157916190658717 1.0713164010835867680035382723407870 GT 1 -160650.4709093853096438748566921902522046 0.4824445093337662928217604550281948 0.0230210616811762495366595584076461 1.0232901846754834292342742928254254 GT 1 -1430828738635736089609.5377441589441871419199024992714646 0.7647930851414449976580827795820222 0.0836973470064372429663582767090763 1.0874085616822320633355308307272001 GT 1 -164429820135067207485152485141634080.3109327207342691394204822920592685 1.0731902529412947690629382190812773 0.0845142532755371778281969100400183 1.0883004838315168518317582482190930 GT 1 -70486413360367677468.7359805035921646825677432032067895 0.4695210231661518452780308583448299 0.0786109075228947303314042508335537 1.0818728645392056285010887931429810 GT 1 -59.0830558815946433975088458861749580 1.0335183605969467741156741924765449 0.0277003308685040653066174603698441 1.0280912204612498881727743818444494 GT 1 -9320803862081667.1302704868090701178214161454493640 1.2791802461324094688087431789886239 0.0486014870603192322414248499568305 1.0498222580084266082349079028571823 GT 1 -302911230939149775.8960314202910154963979628915840935 1.3120733812468323651147948789371510 0.0506948057138883192433614274482102 1.0520249364079827492892441925384376 GT 1 -21177371760978213071590566483348.1420563982106106792078022989330788 0.4298848951964763573481456521306520 0.0568450672029932541455022293400168 1.0585247120741894923653302115484974 GT 1 -128768137397007098467167290918179786320725.9507849133630843553861484191552997 0.2268960922564805044286907362289389 0.0323268287803968295968290931626349 1.0328608817540269683324310792402995 GT 1 -1002.1787824852689901589607067723306011 2.0495907147337389553717816147494257 0.0451781081872289944437566411311499 1.0462304566144401489883207788499707 GT 1 -622172203906575728626308.9954320091203199370722305604404957 0.0207829905660808299197425943442377 0.0218437548801810990945954122388508 1.0220858618713476743771580118525327 GT 1 -6131993726252103790064246738055.8788041143516737347170866944171000 0.8986185572323858042215998799739402 0.0487800544214744628102302697081439 1.0500099649665716523435928514768098 GT 1 -29662768684232137.9127327679230528941488880348199021 0.2694026047739890376133574120530883 0.0038069743306397179353565771398793 1.0038142393016503331707909652750395 GT 1 -4117985435941647549702700441467530.7593425859446037552016526041593132 0.0838794140903918499716241965020177 0.0942720613601898071553777155712303 1.0990163065118011545710740779753936 GT 1 -1.6330909514062470050748748227445810 0.0618940583562132165428403842075886 0.0728421758671322403512708294414260 1.0756314753370906326786954113366304 GT 1 -154.0952573064067294895160619525851903 1.2224498261393397593513004100287204 0.0197328337603208831841266462757327 1.0199301258593033905518005314861143 GT 1 -2507043006415861852209007.1740453917901195151200327201138409 1.0665844296208653878498495898908315 0.0604493033643732658164525805144037 1.0623535002905671142843955543247277 GT 1 -88375863267985122587656891591277520.9919040655656782870858292000061189 0.9996283923895309646711575133555160 0.0198019183414454958565907594059542 1.0200006036004694453443701570711489 GT 1 -46558123265226873258649443029949062428981.6451805250926704538623816271569958 0.0351718766951784405648677395083780 0.0380483937861036406616985244961531 1.0387911349727493038864870946800632 GT 1 -10734840173590338133779539.1409712537045334719447987093121353 3.2296665269553977130609108604080194 0.0220088526697652405109792693344570 1.0222546607978635032412195987641935 GT 1 -122034185219604504444313414.8158777667119296384361136843285265 0.4390253148716060043408806979602570 0.0783296432717063774614456896183035 1.0815676500183250710226830787294655 GT 1 -118179.6105970172827727128900443475015858 0.4992050991314456153028234646024442 0.0596478303041888939698787224948007 1.0615008252687900802627341362923700 GT 1 -5647774.2976569862244329913946455159548651 0.0362367381968943043736541593102690 0.0570112345314726327930305012202560 1.0587009100267231004794088302174201 GT 1 -18711694729956360543361854319892474.7703343651897730155791450623628888 1.9405045422255835195011291293802686 0.0421148634485608917381321412650502 1.0430274074153788590975719492021923 GT 1 -38.8749109662353112038714402248054964 1.9789378784920093038889680642363691 0.0136594551370317608620855740123154 1.0137536038239421405297497463451601 GT 1 -321553664885088708277006989076.3619168493136092284610574678908291 2.9747970250717227230480309235350124 0.0784140199987340199926813537906127 1.0816592018284615658451489041409051 LT 1 -2467353156066446273088246064627058938.6117372032032192010760213736913372 0.8440017886957255588448701645582715 0.0445055210545895623627455949474725 1.0455262935022702948334364537664671 GT 1 -13550561650521383311.8230139836014908869743070465959548 0.2003915917770068083304102623610014 0.0134731638750844804903185055842096 1.0135647505190558487500975747606977 GT 1 -52281778485537451908.5110544919909471134244139533615592 0.4234238089868295895934370213644000 0.0483328592458817639521658015369672 1.0495399473948120024584467001276885 GT 1 -20404357750401493725443211397272396.5005889430890342464451708817869311 0.0037997673026814745731515690607952 0.0416389718747270550574866732369534 1.0425307159230331894690071545152558 GT 1 -6339261866408239214741588042.2740976180531758363982151543472982 0.2742865242281183885477409151304464 0.0868550197838926523702423428279136 1.0908606155764031503635574958324663 GT 1 -2876854811680455843618957985325540.1683879858031100875181064180335948 0.3127547313341660984580649985230680 0.0001637235364512471743195749046373 1.0001637369406125123124800446843864 GT 1 -389870863610485265409331261.8248816675273551802393878958651402 0.7575327768323343699361796972787144 0.0417159426232887333085304441415258 1.0426110341302853133530859784631158 GT 1 -724888222429683133279974.3947902296218157022271916169170930 0.1763416547451057587192241903473369 0.0293507475971230229171449770345753 1.0297900990136172945496189979940536 GT 1 -11030954964801716880.4694461744980086399372349200259793 0.2782300064207097066101848496170669 0.0376954459645800035539383977779708 1.0384242941822425069283493350959358 GT 1 -373132359987468505.8393323169128966432889723481905617 2.1556841994765980700469469953930435 0.0842789726549154619480061839229297 1.0880435159945166374689495238303118 GT 1 -4563468329770924313231147221.9311431405828271879729969352615963 0.8947935851635502985905797496069648 0.0314186121128764232936384378346901 1.0319227646765423055673187708234528 GT 1 -18200.7756201466410275888954989094498531 0.5056085353299186589330327045927110 0.0947874397931274012062005415304198 1.0995854897038273159951592782111202 GT 1 -1057158.2195763495929148342634615877729741 0.4943672386159262393940561696682473 0.0611646640386846510972184650870524 1.0631151762149851546981167134142900 GT 1 -2478764533980311532307519423555112.8441009812179948945046010780428111 0.5803840171851287660538368833970233 0.0987937038258791537502034977369507 1.1040210840146745713857515847420381 GT 1 -4481566648898448394153199.1503738994014417588408355770642463 2.1361576985167311363085592986815990 0.0021711466894823875176806984108244 1.0021735070455276736202411718937423 GT 1 -2358349665745872444822060033709395323486378.6136774416871175380793708125043227 0.5765486136254623798288113967499889 0.0967284478109904275384201776315612 1.1017320485260582306891991721437911 GT 1 -147498402313347222268460136915390991093.4043569496689608920009302015408826 1.3925949393998654167370188770504682 0.0738506006045330582574095706838933 1.0767197189095749738581565288443367 GT 1 -615322195590474.5634166682416391837219100310432008 0.2485493502632903909197452315729469 0.0964304542555314095741844710262139 1.1014021982049628357559717061668148 GT 1 -1091740283119320597804699037.6709756522179889588500060005218747 0.5248455845962539573972837491652301 0.0643317885260887881520057304141800 1.0664943402666656877709029672456144 GT 1 -4716802141319166579.5450794161444390170361638389847846 1.3749452194023114437065446177346194 0.0478079252634828067402680130970690 1.0489885053644033943266745693884256 GT 1 -53117585044.9005278485880623869687064036689738 3.0254245179068373211634953143056897 0.0042135680850863358313846521388085 1.0042224701782742905222103539902074 GT 1 -139972.2940067336702121235201969536541791 1.6880351573340229086371321164576847 0.0106952340557053175431454181793665 1.0107528391731110063060635851116210 GT 1 -57385867.5422258007381700586003110061489336 0.4061437872010577093249721332200679 0.0278071117308150634619500104118787 1.0282010494878634687947959765884661 GT 1 -25500194695939543889482786299576202219.1079658984304907477601374892040881 3.3557230920990020220833545425335304 0.0195032981458940954775888200146975 1.0196959970901941743140974799173790 GT 1 -9905510.2935282695173918828567141299758726 1.3175735213593632313375274859198903 0.0256338689023578067234666132573758 1.0259681413563396459975291725903744 GT 1 -161348706519679152333913.6965152268177584139732084850354842 0.9814248332800021057222544267916839 0.0435478648908825743012300743267830 1.0445245330590097324823762002991323 GT 1 -12850882057987408004.7120261822640078679890673957347918 2.3694652406733845942646948285045944 0.0096881617916648064115845569620222 1.0097353973626071677077986898647398 GT 1 -106899350361209967566326467800830141.9920749944168831736675771568244386 1.3135300674759723379535619588717663 0.0061199858143029926451760961866819 1.0061387896863619298971709212899710 GT 1 -113792.3408454982590436574894640526452532 1.4432206427550876511665485103823200 0.0881008248472574546612348496015837 1.0922258485798902926516374054485786 GT 1 -660339662110984672339.2758368682011518083343320075872090 0.3966809026275319535807367513043154 0.0217243960220303948475771847016286 1.0219638449880569709339289457181698 GT 1 -248085.6348783672113695169421581914321726 0.4790992941459361282871544055652437 0.0803843963503364500856754823505412 1.0837995183709653665105668653711704 GT 1 -1380119359979905161633009857402673.8010523711120913526622603008720948 2.3551998724234051018720461595897670 0.0948676477925841137695317988180139 1.1048066060650838566573653035889770 GT 3 -1651051576780933304641110055198.2364446775159131733774616128193632 1.6496255428697006502341742674935376 0.0730574101279066897769889393094414 1.0758636464321570030870796833021917 GT 1 -1101734221955950663117359358711524601.5176451197082315169350409924741496 1.1604613652653707196946575242362721 0.0637339278395966219033495452704764 1.0658555777715853897005963792325920 GT 1 -3447452366925105141038907612628125.6107881153979433061202611447583731 1.5073881847452970835765541456007782 0.0619487873042056275527886910172680 1.0639507337096052301758136814004559 GT 1 -93445988564381726597015278637303654.2323483669211148162442078541771210 1.9462370579628490568553923725630262 0.0303559289470760652583458141498198 1.0308262118814254376702481697273057 GT 1 -4373521104937608056028986.4370087061605505728681550912647754 2.0297200272854003280606666487202163 0.0253928503905721252977373274225752 1.0257208126572752198685418199290020 GT 1 -698089102120358520025188.4287816855951694246632291399532251 0.2566543468203496717965046548257694 0.0211574764633020087609872848730387 1.0213845037959084162126530809659048 GT 1 -3.3591343358615093942742194506371241 0.4306246516865269435918378873368348 0.0949926501477847853699793399733040 1.0998122139315259677784813681160358 GT 1 -15183633247352260359227332164485887951.3826321680817560549362677223884780 1.5680817034546318395108538644189381 0.0636284807294700279575663637105251 1.0657429589597869277048595879557232 GT 1 -5239063006559992410164575573654371.5426164511176259634533154465237959 0.3551511670470268317010161221484948 0.0448630866441701830857796445573432 1.0459005840066509808186942608007896 GT 1 -15291097976791962111.5093574570740672741973661694056685 0.4512393895459329238639805564233707 0.0499304003826615512965052553219906 1.0512200343160420010445405997315730 GT 1 -5357389552461925211533665101698698171837.4852390445407394375524790559540001 0.5195533924738695630054860197377528 0.0654769978900867404861400516551968 1.0677190380396207414763408344032568 GT 1 -724591922267.6618454584306907175262122367406348 1.5743690877481452826814445690890082 0.0945301803356649575375668886221113 1.0993013322369481310485497950531675 GT 1 -144.2753841973262302296905163122068163 0.9942874256117310745259059904515545 0.0237644964793787593710194068256059 1.0240514270851017648813647382825419 GT 1 -95619608.9087572558898343695504876661345662 3.7077861183128620610083769946806690 0.0908219816460273620696843529814384 1.0952143642054160668687746719306107 LT 1 -13207063887465435215196944056103304493089198.1270612678454519077649686941217309 0.6011958044706289000414121036926537 0.0930960210809331589890842826267468 1.0977187011536691962052986290877709 GT 1 -25159341663534365.0262405528958671823288127595322078 0.3331581720047728081732859704070477 0.0523394403050121726845533622850683 1.0537589002391585917939195948039243 GT 1 -2671548678437294130838456623051.6150205160748971020538461208828040 0.4528208711746758714179913857248730 0.0889078921538522541711855581128523 1.0931112805255602125485220595580350 GT 1 -14892039119389796340708607283.8789269815242712956229126075422701 0.8598328247096558231517100671590942 0.0137587831160013697641039966536252 1.0138543124292631104932968389837043 GT 1 -6997.6967671838855733253447560624395526 0.6930415074379504101646527929999180 0.0301054847657679165340224325058316 1.0305679605793160080162381380769776 GT 1 -16363576461000796199916487125326.0365450904898216480655752407017758 0.4663121660501180142705507975503554 0.0806130626952759493282961177225735 1.0840482035587512457829748112921388 GT 1 -8929798447982593812065.0641094814893994809716879995906544 0.7877587648337228440184809184262119 0.0951737892925111126203814971847459 1.1000123860902024217022326438741719 GT 1 -21595347617596320.2697045484123573566657058529045099 3.6994690000795707813386557613947926 0.0700166633875622304600830307627832 1.0725886106163925763479953022502127 LT 1 -2340303975948159614999595185.1691575208751027438299512403397146 0.6449066757617249283955698116780911 0.0903510677722797903458517954503716 1.0946965426676172102035150574209340 GT 1 -16793398.1933322761057848324400608874571434 0.4330354188325394757241552050645640 0.0764519558902530717515099252742724 1.0795324567547879347751207343747519 GT 1 -11953029221586933.8696907713434080063584850510565988 0.3147240094262042657354196421707584 0.0545553242624132170119905918663495 1.0560999058292378820817505488735206 GT 1 -16.3597944486053580092136191059830915 0.7878927988947846107890926964877104 0.0429467879646383118980578461332063 1.0438962861122098386630956961242339 GT 1 -1059781793658.6197879267049629961808364295868214 0.6070793185140925131223572863968510 0.0766422821801785362718442248119557 1.0797385596264367289357375348404730 GT 1 -13554843462181254937.3179950764279018805216953047405468 2.3910940904062469057517113741231473 0.0829418754093203836918237110027905 1.0865844231393836843455887747218359 GT 1 -425240612241586606.5925945477455539046224674322981024 0.1922587883609583496501353635254590 0.0971175618403329551899474601718731 1.1021629243400163267032028378702011 GT 1 -2479753.2707488188969944046740587054469285 0.2543633126297943292655352379323243 0.0610302535932836253299929585547708 1.0629720192420994754550086495386797 GT 1 -7584896426178836310065767407932376289579.9769431276676789596744251637114832 0.3772432548410613997580474738628913 0.0746020509766205321093548076091310 1.0775314188253101711019622343441278 GT 1 -7151880688556405.3490845878241849532220601890699681 2.2561035459869952593624000095939826 0.0774601582191903954119941537204326 1.0806247150777826178027178667667378 GT 1 -189281635186014539.5826958691008088538770453846074451 0.5875101556231873208853861125744884 0.0746094102938845222262885025195088 1.0775393714542680755320603426683092 GT 1 -34376190271115193537654120.0672195494574329101353854032991512 0.4749090643169473821281337998109276 0.0308746638807545386323264212715794 1.0313613296155281637803995183605244 GT 1 -49199681596936109876630893197244296589800.3461276683489256838947955431077465 0.2274050761715426865578227414025105 0.0975810634469808918847875035629562 1.1026764138031327520187774118991550 GT 1 -37359322980487934777.4433365706893162841717239216637954 0.2412060840020305636576580998399311 0.0117369266220304569979599382257689 1.0118063480762780107429472823554261 GT 1 -97476201857014927960032.6216229279820574685229954558181991 1.8382853793544907173819907947439624 0.0297682783667137887674104955822077 1.0302203477322323126095040163449670 GT 1 -87886469117282933.0039828426184901605039667926234561 0.2007503608344073976344782403796640 0.0511059140839255207706388097322466 1.0524580925900051535345077000006241 GT 1 -73754886157908924240827044712927.7298351620797560192091632280453951 0.2522558918952676480439032375070689 0.0441943707015556504517303076360720 1.0452007032357908642340069581966327 GT 1 -606876589091442743888.4944153949873686471884825409446231 1.2244071791984965702255762886410353 0.0040884996707218460961326276938951 1.0040968804364724744717826548366157 GT 1 -745103763954135704182483019922.4883158039175840141988413033867488 0.5495928094961535261371789692126430 0.0389317421372582833824778361097538 1.0397098445813051567747847411609391 GT 1 -1000559341973.2495812683042637529268639250823714 0.2342234106631115488903025769220431 0.0248095196851618091877852209622315 1.0251224626399590344416395394918048 GT 1 -34201588.1229920532130688314792866189354861 0.7340008680466244522950219536284613 0.0382207289729158825345564973076964 1.0389703026404434640679821086546047 GT 1 -266609239421000974.2801400547813760142045881936778784 0.7367148374927659250736554830848801 0.0911633639163274870770214049803004 1.0955899192357116253849413409934351 GT 1 -70567361806.2591666429154179847244121550444143 0.4859962467602868736909902673868478 0.0749008445558085530876125452432808 1.0778543521398917729655855339491449 GT 1 -955651513678795353030050971187576499970.7955419813199258977013545237361376 0.8408543016390666387968446999520835 0.0126004053445826216666523696062352 1.0126804636745568584799636572200687 GT 1 -44535161109.1127266080642726528962563607199200 1.0801464536339293080228151972163466 0.0842763851072479957083996371472039 1.0880406903042306277921165887018684 GT 1 -7663910519149434886920709991859753792.8992055293687108034452072011079198 0.0910260238654255414789754387758486 0.0580504295322303913243383522848201 1.0598035403740747957838279923491903 GT 1 -2858497786916922511139402.2612402036660078248780238409017883 0.1048166451256169012744431579800945 0.0690069322947274347256297031433258 1.0715034478066132170538399346227907 GT 1 -11748934512244756801528783053486271286691883.2611781170054646814366964264511811 2.8643216870039789751167062828936858 0.0239111646038891540389787729006905 1.0242016768380374828284587740206366 GT 1 -324.2408776419890230779581702365384468 0.5584629654543196790110128066554191 0.0440735092660698643450683669321046 1.0450742614248484793108740208617931 GT 1 -2675641712848483328384015859.2575565440423874793856074480530303 1.1731425209254949107011560043484124 0.0661459442839673677323151490011660 1.0684351102260808572721780113477706 GT 1 -79785567978708989035676382216042669781863.7454629992339754398946787449287195 0.1158243463266926083579574939648094 0.0655562843074957347899787183962621 1.0678038832288917251309106041833344 GT 1 -36202720.4431677210889191243849220997941101 0.0693200294159582764592220128262826 0.0737350380763491450075005459858210 1.0765949492783877720300476992248991 GT 1 -3230750744839012583088255.9151398889944081028314156800156584 0.6749363585040323973353112857306914 0.0146492308331248491781047505305075 1.0147575903731453046633312576568691 GT 1 -97017823368598983454565048478802758020580.6689500903365756268757894687530516 2.2221759564118038520358602598550911 0.0658526219527788806174551691641540 1.0681210608594180541353777333963632 GT 1 -467368335999900746382745050.1796037697601928143324537602052055 0.4514791589703525297617359495744796 0.0334670353313188766957361529226923 1.0340398736534342259740429408194206 GT 1 -606310394778593092866899763965458.4307065056031148748715254950891901 0.4074812590790917715356307790184564 0.0949489451926640228154474184541794 1.0997639227216768840681673334696729 GT 1 -28076428812154369473.5722659927993107715136567373414585 0.3847149162020543525001263047096961 0.0826898971454089036386225766459491 1.0863096928407159129523711868215587 GT 1 -5180098277006587080359775106430317.6159739731964862399242557343234786 0.9851796860173071605619685601174088 0.0740984780109658140204435850264741 1.0769873977353035126626244850297521 GT 1 -2728320623953924877573202349237.2261605953837145584177376444207665 0.2991585324314212665633843908116166 0.0303297567557866563294672816967133 1.0307992207009880536475176572804319 GT 1 -20423547406.9390814049110279766266632004892340 0.1174940541261495395437701174326494 0.0826137149591887437309221028522199 1.0862266467446244144212703147700883 GT 1 -16289532459.9973826562410346206428426609736452 0.1174670673493389463841669040435076 0.0962579815777065979892668401067069 1.1012113371694137199705269812938266 GT 1 -479588573343857946349.8370180109991350446953849663980601 0.1554366788938911113418332449847612 0.0865760869121542865942732490092023 1.0905551982719377759815706106067313 GT 1 -557933627.9382371912391958873379912626157208 0.9631361901790268530579630712335021 0.0372534350254209979373160889333436 1.0379650742243288338019735493847678 GT 1 -20514109301209894214654760889.2193664816747085916123651754383231 2.6703296143809481471703721532718336 0.0750861491589668400048316154872329 1.0811009465704011675707012078807218 LT 2 -154.1486251960572986682804580364744222 0.7726174760825318624639272043103070 0.0393213413481575363334795876503449 1.0401153081862041729436194732646090 GT 1 -2863210573793715769317.1245289042855462216033135903608353 0.2068587983216152079872556636445985 0.0458764995049430194164801860748923 1.0469621604669312280838537935725011 GT 1 -619991539433068.9031541797603060380489658853979862 0.3246131190005244464032349779049344 0.0288725179275643471159224064498433 1.0292975298415419272273311167703365 GT 1 -33701421466.4931745117138953308827520563001461 0.6179366456835164166679818456252309 0.0715137703309928899865019871979921 1.0741997290274012492053898360158968 GT 1 -236922403864727398406547259435818.2012143214225234433795068400840563 0.6983787535100807699541914349974138 0.0984795600235397148040819174162787 1.1036725632996713934731986161641951 GT 1 -285803263410.9594500905554239251100484693149480 0.8054833516455971448992861616335633 0.0104824807356210365636887436788104 1.0105378089276014965702784504935785 GT 1 -2330417035793979092414.8263451034190687775548274119179952 1.1188035504855581616336433484457369 0.0172117609214640769124422401530001 1.0173616051562715684114739453588409 GT 1 -189830391590.0183168993594180619716948800377287 0.0563084034033395468408778459694396 0.0643065014337716253771060174569982 1.0664673149276486150559546020640821 GT 1 -713865687258134442445635.3953253031730940504825058191795441 0.2355512970127598083403491142978292 0.0655660974463368340042480849104074 1.0678143848676778950446923074888138 GT 1 -16862417968614124885.1238551005856771003231811669391130 0.4815648363097591908019851678337691 0.0294725590192971454477193494988073 1.0299156016767691843504721803053674 GT 1 -40045486079830006127981.5387745013024884799297957868781765 0.3292178338040568439501982780894665 0.0668075681662986079233780500832672 1.0691438487759115919137315005235656 GT 1 -1.1323173298045017501071341401494336 0.1676428004475268857444297457411243 0.0433083809573932059687034607007387 1.0442741766137917143910102482325498 GT 1 -14938744652675887627216471428207418001265860.0641910981369180827222927154549989 1.2893552463358520244559576598671601 0.0476580533317161030220210737946854 1.0488311210064537101740509172876821 GT 1 -1359499781081.0009359416578078187141978995297203 2.8568907086021642255686664059894967 0.0701240464766396813335789648071654 1.0727040850393946883447409763714662 LT 1 -19518057660895629365211991332.0582709829388931877879944031768247 1.1475602343179318537153345772365608 0.0382925821499765062160331795635513 1.0390450140252526748410407911702579 GT 1 -30076293.4246499094465220981132826995701748 3.9208145924558576831734554933562164 0.0683360164416739196891504819347284 1.0707830619668119368344544474684420 LT 1 -154998030141.6244153060204470331514143326030270 0.0654676257747625673086246225206689 0.0207559391767713811249450837428074 1.0209743714806508820125383338383421 GT 1 -18429851297259420713210738198906205.5125543826857394386222644959225087 0.0616097416886292757273469882946256 0.0811091313713075521198622152677453 1.0845879138098046785050436146288243 GT 1 -132662308628104193460355525.2664256863022757248835832814529979 0.6456193890333075561828624037251008 0.0586089252423666008005708220714844 1.0603966308783585474421531088288215 GT 1 -7068.3588769100692980590843982538566660 0.1053625019968793875408309777233796 0.0091213479131800543394284369229083 1.0091632021126034888407240593530600 GT 1 -18054133547752.8739103559049612885256926367198718 1.8971471157766245575132980390414000 0.0841875050968623135741126149889206 1.0879436351492925624735621445449969 GT 1 -155838160109780519309789.8670488513680653326318432782112515 1.1883530323724930694598296256850755 0.0070652695047464973827181770175588 1.0070903467092807847727237760595562 GT 1 -9.9998292194447356068957209610956584 0.6081560970773190529834274759439478 0.0180206124071924589093053599610553 1.0181849610793260356525475372691716 GT 1 -17750514592524813.1696937050584811269850349127639914 2.5880590526749962621694343038549981 0.0674056266008251469384868013252512 1.0697849278674045957313508947551370 GT 1 -289996700971876756506951676.3576262795945699735008062568760695 0.8700019109031540497724055097838300 0.0097575893079372404459898076749580 1.0098055065417315650371762922187154 GT 1 -1144.0191731144396539909130432588685149 0.6726866930597914060945086254589261 0.0013920317709596362090172794834567 1.0013930015472627433079097592600499 GT 1 -131021089682.6204231408643146535551767995303152 0.7038317816124684050490447420689968 0.0043044579677315747936091306662779 1.0043137488178978252926347046340159 GT 1 -10162646269084050133.1655297754963616464811372446861989 1.4109098099175265430474264080147297 0.0794470284454984828690888073815300 1.0827807334633812879345519497036420 GT 1 -461615051259297474385683.9833624576296187798442802936098985 1.8960004591751445572868493341269032 0.0739229621403899198530200922586545 1.0767978535635656732633437757802344 GT 1 -18.5242682252621851068136649160204334 1.7408159321740747230754927146900086 0.0397774137161090471454348732522902 1.0405901606834095200647107218061830 GT 1 -102684785549822086986949514404597.9629470576162488988013919241703880 1.7411803617929008760568509103887480 0.0855859495250986171018069133016971 1.0894718008333885229140245111090683 GT 1 -1349850598103988241977785.4500456940136040635754664828692923 2.7638097649116095328737172588108240 0.0291411333701907445016393477377949 1.0295741697309201295644810743776525 GT 1 -50530666650707185721.0086951138267190752171478338354864 2.1842570393672587305254166796158777 0.0056401707988256027102078618135590 1.0056561366237670107141007174623739 GT 1 -2488931719088.5952179485132641257816344493477008 0.3374857624589612240163214894809654 0.0507123576779242149295078391624084 1.0520434258531107021341557064314421 GT 1 -71134917832355064636767.5610534666246014855995159106996782 0.3499829292578743360755166221899789 0.0650690282013546444958441941216725 1.0672825793721141835346575371780855 GT 1 -162903849.4718800626480367579138455236649516 0.8603919199300802511645473498557015 0.0501367093587841775006741765700139 1.0514372093310031141778870454325471 GT 1 -4866567334785053811481534098279602.5474303620491056935152455739366153 0.1925572192609752459973558274317307 0.0559478431694638180202320509154504 1.0575738634831047274945014277329670 GT 1 -23983723670146274005.6686493446658056616429841763085490 0.9245224843551077396176898518314570 0.0794071330517395031930760761827475 1.0827373958929065154248162513214418 GT 1 -3654501154912473009179500364278491582800740.7870088986494159049856519877994439 0.3687651689408115593563248825749257 0.0369471265611860666994006018008558 1.0376469637703447530210821099855451 GT 1 -2120335345734.4913569399000623518726615536992739 2.9835372922509921022863571795670343 0.0077375359538793750207807650907455 1.0077676260009090171006073182301635 GT 1 -175035951067629450604852031.0082204636212405625799320560385832 0.0104169590237892602330308843728204 0.0914680174291247865344399101916469 1.0959251880551727680504557096133799 GT 1 -135489235236404680392069057483.3798455132931029762546068094409241 2.9742259250203446725142177611921486 0.0911840849875401418973955873875640 1.0956127190510020191786710789883454 LT 1 -21108710176977.0049840693584719552468154318617917 0.9767299497234230024472908019858825 0.0494527967238983875105970594540906 1.0507174567653342490281239690393466 GT 1 -50605682888420876283726549072171527.2059213855988009069044630165445004 0.6897381416794903496334377074274568 0.0634362948404146597838973811651125 1.0655377346816345748879582575814346 GT 1 -2435253617160.0523991567108195631402576893121281 0.1671286303886194129633136967518871 0.0277829027788707879863945791594457 1.0281761484102860239078131755832473 GT 1 -32645923.8827566265544768049718367312078924 0.2917868729575314319392438745412684 0.0653562481981817314049957105511725 1.0675898364134733883485130055817255 GT 1 -11623122.9428168819730221268154344899824071 1.4465605096872482388059379865211706 0.0672725553270262403214903050803093 1.0696422487085212381694031112053174 GT 1 -92548582607117778148948070782454537.1269591091838868133362004230410491 1.0827840325322719148225092655861856 0.0295980180159989422787935856139742 1.0300448789141505326572191682009881 GT 1 -234353105900295.7420250564547558680899160131026561 0.7526864143248579656726105764147858 0.0365970986433022066086307167340988 1.0372835732100056671991752738291633 GT 1 -19766498519009431.1038711438877267734603510156179147 1.4323630458846959177437142941050339 0.0792792122380370017450800550691536 1.0825984507288590205770805920688876 GT 1 -227576.2047047178154713448782686192300296 2.3342951632974471937979399271838539 0.0881844042454373514916034434213404 1.0923175069900448917044767564276712 GT 1 -1339495357836693570420484600072788650083.9563752738525087614393587753583231 0.3803698709857866494074268855638219 0.0648330532094812862544242345544540 1.0670302129149569066482873340352833 GT 1 -1638834866143642733058762755877123205483.6105870208248305589526901362932782 0.4679110645171050058644552478341863 0.0552390167550250729664437521219997 1.0568233112631158386728729784614162 GT 1 -32958792083832537757936.5660190593616296779978275595090762 2.1640058845377427357190732586376086 0.0738640207964074527834473479439018 1.0767342093245290447615155699212030 GT 1 -2626704868799995262099779128.5115581392183684784397091717014851 0.3278868056113274075799425576586166 0.0905857815350253090052407482439864 1.0949546027178784708956086411263783 GT 1 -1512988474502.2234156644029825467158050519158012 1.0954647904950837784562765968352798 0.0709371629053698000294259187560729 1.0735789029566825798563065567785011 GT 1 -453971666.9863885965562864397120305035139822 0.4847446945898397494810275782575151 0.0106020534988882653926836754673162 1.0106586556898622531178383655361758 GT 1 -1299477520418803313093609524799899739036.5157983828604032120645688322182578 1.1750137056093009199707753453853414 0.0679105946687236546522744801840311 1.0703265404303523243483624729448439 GT 1 -206931550608868391433257503900937436024672.2092535685286081514163954900032038 1.6679121287076658849744489353495746 0.0652621900812220148273359603321530 1.0674892062168724147051477035286579 GT 1 -4095.1734029344415674147178459142155453 1.7841224119015851163087735699826412 0.0271907785754104876740744533277827 1.0275672885546879805033176408990753 GT 1 -4517088924949358369.0271453560610352825102586628254077 0.3350994655360818758857904234528800 0.0479444352533258369016176616681900 1.0491318795634796469485364868095048 GT 1 -541983144019646378042924.1924276863498349120650751609475206 0.1920622135521606888249011981308280 0.0849668370889226692336292352854305 1.0887949707447360653169456927611252 GT 1 -320337301816549.5179006534294501310558704584087643 3.9967336868462957747350792977288511 0.0344925047146000793840139746631487 1.0351014140309095062479820382349118 LT 1 -3592253871224295168476098963296099234.9838279691322849624872555228867701 1.6885060528250436108506939579616418 0.0597598836827569835022014828714297 1.0616199934473837024016834835440936 GT 1 -471773.4389679576567589645326314866414582 0.3696984314808182602443103647352035 0.0602942068078603484230460180550516 1.0621884386742262068891038024277229 GT 1 -82964063195509584016693014993714077.4815658478551626735976181466398027 0.2178044760287166568387680290248383 0.0111402265325103369323927228669111 1.0112027435925314436091528473005388 GT 1 -17140415798046278412428102819925.0713531157166504622704894599777701 1.0395594109334012399532779868004994 0.0375035862507454509047643759972347 1.0382249388019396929242157536391582 GT 1 -33474199989042778759266159658535.0861927935700811439640050571374558 0.0976920178395887813642893927450769 0.0003371929045419528222673456238941 1.0003372497668521271344967296121009 GT 1 -52542776207894314792588.6916373508406212702215963463185429 1.0430464979881776554808778325330149 0.0087710239165723159774386763520413 1.0088097157576985746095025746663316 GT 1 -23096094657026802613943566711734833480251.1551600334314543270991263613373637 3.2124483681643988870921296806278134 0.0843013557904290395336141757144629 1.0880679594750168676026774682648564 LT 1 -351483043207856008052.5382572489401566357460072098939110 0.1428686466913767518397509976541600 0.0628490772109558630497821454586211 1.0649109395017017432110667290210272 GT 1 -130842127362719.4121324039973768766544954905302773 0.2811649544783456611870443647899898 0.0937355339498654732395924700880822 1.0984241104025729973184029224570680 GT 1 -893414054138862747.4739648628764227037199510042631538 2.0220875192898102691900430587928721 0.0938617457803898357147232525464164 1.0985633861047299622188756953031032 GT 1 -14118021240472361682.0610641208025525593742282372062248 0.4261373280658762913138981383213978 0.0557676629474114189998377529829540 1.0573830233600375542021577833945481 GT 1 -351089402002957.3834201357817958845868386151409050 3.0775590633399846118026644644026034 0.0301189715713539331687577208291154 1.0305818661114589350494349824905130 GT 1 -143037148789285078492221905656092134418343.7147472861348452526460472881720419 0.0003981157534449260897402162491232 0.0537189774305726358963876673394406 1.0552156900181615938844156022883383 GT 1 -1259024021880413615.9925366045319750878779763306617045 0.3235330621248462607094173075520520 0.0056638270188984793289845529622257 1.0056799273087666622222552457173502 GT 1 -3.1505909441205190432063814894208563 0.1842439593820954528979349116135166 0.0568061782471641136574414488668070 1.0584834800848865063986242180783366 GT 1 -80788863744655823639.5961938689688798356942584009480342 0.2646363510316753523723794823947730 0.0801305839232576860585696496125833 1.0835235580603701190229647212918974 GT 1 -837153037666425619153.3014514946823338968855653362039686 1.2575633455694697887297622742120086 0.0412968914086590993711640460514917 1.0421738363975682337314296373115841 GT 1 -73511.0389246147464992120351760140869196 0.8983220817049499821262127248188477 0.0658210959620750695094851166000984 1.0680873130167536361824802967493001 GT 1 -3150567815259741025.8132893071698695231810493887650609 0.0694666687412048401018909012639656 0.0724723428231420543941099242243240 1.0752326658865191883473443014325336 GT 1 -2493761445696614154167749265036428905001.5341344710462826529572492905355533 0.4877591288930719370860132233920478 0.0768974861152168824647935424373934 1.0800149846826403784462454599686406 GT 1 -6957834895453766453615740433111969.7667101783152639857146852174963194 0.3641921209381464000987449825622853 0.0580805124836907299114009871015828 1.0598354777864288022621293306132354 GT 1 -102502335190224281222394344532844781614.1460030941974381484867472676355146 0.0452421889185557678034287409917544 0.0487895549745943368604901391176736 1.0500199527728712952489522670999704 GT 1 -206.3649879804521095561832962054248060 5.1513028248305219257951275721005174 0.0446564362509508726141906760017267 1.0456842505800583099090171721026757 LT 1 -3520792789256682914009443609806215977637789.6895042137658462774084544804377360 2.3953542089124695892146621900773792 0.0620814602928682294222210605742756 1.0640921784090347982031015036017031 GT 1 -7145405318814055540819632257921773864568236.7574051887191849701938339560615785 2.0624626894115642583212950586733934 0.0874336903646879858173695862690432 1.0914945280721958661589271678715643 GT 1 -102584706067421774.0091553254324844663522332301386354 1.0143064386307545260791929735710399 0.0874090878519358617152458290390505 1.0914675687369013703912741261686040 GT 1 -2261526127218098656362092.7636792748643058120954215533291054 1.4146398574195366853838311462610583 0.0775240468389011284108316938023014 1.0806939704412449998156676066699749 GT 1 -12370812111457109548353.8134129001101619274315005325136449 0.0954875299971260208732710757295032 0.0150761172437546298459453429115362 1.0151909171856208055375055086605512 GT 1 -21560634297754613309.4607304331974989358121656589343664 0.8675154153304334302439265756455859 0.0063164547885896229047146750515159 1.0063364879929118198444286894041066 GT 1 -20517895970.0253523003081005278626015473699657 0.0045040449134087843760447927684175 0.0593008582528064319641901493989940 1.0611319123601342952260069604829473 GT 1 -573726814191492408549755629.8361358761331150751007001865637987 0.8891778251101092504895654892548719 0.0671049413033345076629785488953087 1.0694625617420100841721178263625029 GT 1 -23062773646152512417028259499.0985451695332032595105658584013565 2.4316488969907578652632182113879534 0.0910550607598934852891413791960294 1.1000280924952928452604525353756572 LT 2 -1050261346560891864059843233096976587118.7812721124692451560927964186616167 0.2531182193820873403990682600505248 0.0379102202642018371046198340366208 1.0386475065423544605449645748687890 GT 1 -13370586865862917704245250896.1369299337868280579152440826653814 0.6201407029766455985382111823329008 0.0771487751592554071872921626187644 1.0802872439926318133573463180739156 GT 1 -11614749307500346753243.4885380605379564636151944042229627 1.4585013993877296003575580597644749 0.0930930608452520259625969355375722 1.0977154370475249027403239835445836 GT 1 -10913467571991.7650481324701751482854631760214684 1.7035832490276929036143228030654231 0.0386922840569667546713881194547157 1.0394607173712350556891516800985781 GT 1 -14156102223183204591002.8507015580087027760979947442782342 0.7937236658763910554757870331591128 0.0644116338499807212514032272622749 1.0665796789902754408659761355821883 GT 1 -123871913041308155232221960.7213251663275864064721942390155054 0.0009299969489885825782763146645277 0.0979935481515876450301928689316686 1.1031336061198038683747151971641298 GT 1 -1364189.6251065264688760093243959111875891 1.6181144055382512865189130919194768 0.0291283001466293450708116505223252 1.0295609513948820565354911468215495 GT 1 -189213230806554349258785222767.9303406681474307616501305593654519 2.9437349298548357575528303488017682 0.0299557700905071720973402177216038 1.0304136106794207052327927139024442 GT 1 -12299144559.9773803215395394579897838770558609 0.3736312465728806069069903647007994 0.0860880313695633375785509549033898 1.0900210265752301700517912363193085 GT 1 -1643913.1531655338635355289956412601577559 0.8957238065355907024013940754307479 0.0613548532023619827109765809934039 1.0633177766319529048177714936995156 GT 1 -832560713821130788538628010.7736618005075672026482322110511112 0.2161619581796933392588763362556669 0.0227303889585766785040928645350887 1.0229927069315820517713714404844117 GT 1 -3981944.8473781634896345377151173032855226 0.4589552481475313988776909563316347 0.0490832714438273791896593623124948 1.0503287822514118322640016408518603 GT 1 -188022670000151273545529135097076479.6270041495698072684203291449974334 0.5889633766958440778984625062404437 0.0258227279702887580777812670532703 1.0261619877630650242402558306748666 GT 1 -1220124434835059525173872552.7088240155974380923349737835916991 0.6689238089327678613022982030616658 0.0653802794355024519360167911681516 1.0676155483986240136113542834198463 GT 1 -2582593341196937799110528171949385849319.8506579348913322110186049689697528 2.3782213634221112111638831640999904 0.0171152256511470530465442513564103 1.0172633840689033165363973680019069 GT 1 -3070.4285661789501963014779650590818697 0.0250703378625000164044443913874537 0.0793257081879290445658646549945040 1.0826489515153742971322711454387861 GT 1 -202274760064435027426.2345084809621393590308039114096238 0.9364422793898495031007698645123002 0.0737290188732600311531523942836128 1.0765884509395979466627507533070697 GT 1 -97994720183.3606491619033282477282110560487022 0.1736804795068769046266552195405951 0.0785920469677316115268335286696867 1.0818523950521183361038135451386353 GT 1 -3240036598098409641370147356.1525068019602964936962071318091402 2.3064648266231334886956010512079820 0.0441586623547892846687733627320864 1.0451633445106831530962787173013205 GT 1 -7424510877728899708697.7519822587136333216812414396469616 1.1508167571224346099361150787182655 0.0701796489197143960815797572789368 1.0727638823761465441211448202490047 GT 1 -7031332487100740452.9784898493654362599824100557354761 0.0695654711843120828930806608455006 0.0713643032134697952781076664823503 1.0740387626248009728665794736919043 GT 1 -763793099.6061502330562851594951869063876594 0.7761610230533044815619762599312973 0.0436655019859780247341668449211965 1.0446475338090219687817177739151622 GT 1 -237670723728824576142573390556398963725.3101976531540047838875032995290431 0.4291426645326170519352230622451107 0.0788191939968996385444454375406457 1.0820989471155723566837348603407780 GT 1 -21062936313170937.5793696856401937814512916432514236 1.3124285592082074197483958200160808 0.0537487408902322855431763544663620 1.0552471436001693946865851255503019 GT 1 -7308893375346787789486.3020513611648510114954658922025774 0.5599049393874809766743603226681161 0.0487653830315889630517078315573050 1.0499945413236898490746586897686830 GT 1 -49886.6270683252353191957202676244490798 0.1753501231084810384803519396861347 0.0285291637519526865438354200444253 1.0289440299172919778447919452605046 GT 1 -5244740225772877780.8861750130605676584444127646029064 0.9591173205479630328059523392983023 0.0056451786344807647168102796061217 1.0056611728773630161390245949244739 GT 1 -5657440119621548970119008886.8687768145913120805537126185669472 1.8997629694400084300723409742759924 0.0666278853115666229116079471732112 1.0689513208982962122182329474468733 GT 1 -8869567133448595004371597376188815221638144.7270068001064403429298740937323313 0.0720671149994220075303020990595896 0.0739503989269516772752302130117586 1.0768274808968019962584428247434212 GT 1 -5.1578534998772250643065822875297210 1.9116103084200560074446660219035909 0.0717847528628516998694671009406638 1.0744916257454983400222093749518394 GT 1 -540503.7203516543768734827649019894050665 3.1287855016519219468524771026648140 0.0859166761454498917523270056718486 1.0898335477285178149112746242568414 LT 1 -562352966779822393607506724963.1756040838758755529618707396501097 1.7248443213513967238745972832448162 0.0999809112566781039431053115133866 1.1053393061679470151306732848944957 GT 1 -286284261221818675427988409.0781483439882813385530619017127294 0.0791299116964050201553638292140574 0.0613217102925714553918318875743183 1.0632824679481645946374043621648202 GT 1 -396208422586054413496746811759398625.3023025510864678875792387537403319 2.7308562784362359974230088221841556 0.0866843190777914934484165014926568 1.0906736959123444885291150599586814 LT 1 -16667408497610353588179743.2290202463181611784175677741959231 1.6320834521729353267426706816693742 0.0101883097476914792904077705285642 1.0102405658124278394500847695054926 GT 1 -12982444082507.8391884949331924300990222281272604 1.5289428717909786829813392481077178 0.0099216292106031009344043138561125 1.0099711765731477258041064150034170 GT 1 -585984726021.1205931797870148327997122046401703 0.2302246981731906780149838771527362 0.0422370457289044925045445701877637 1.0431549697595219519561993964288455 GT 1 -1801.5546480820334018446791578810016485 1.4562117128276713548722504262421842 0.0340439251562653228440007110250294 1.0346369169797224288850216037948848 GT 1 -5.5502909623383070097411582375633865 1.6678018088841366363846738701278074 0.0472017520661580360018815475888522 1.0483520998031047852960609202832366 GT 1 -141577637412563744065725.4548175415534355937997412567935720 2.1994966638313024858277686796548994 0.0771890494618628543195051023450188 1.0803308861099717017907245678908183 GT 1 -41325114727352340730723491749.5523881839468282483458260792175880 0.0088553213187797006792374471610244 0.0610278764574208620637007839978563 1.0629694876026480064714022179585843 GT 1 -9855098754058194408.0745142174198643857547956124708504 0.1275017674385021113616736633316638 0.0232106347389395688518656194606204 1.0234842435697861881449537052765518 GT 1 -390410669145.3606233496268385294209460891640038 4.0962805190932508296446197471294103 0.0373221069438531198646724671712000 1.0380364059436022826296556701256069 LT 1 -16175464511189572447.7244226507247684286101274150999459 0.7011130127998666540427599667241608 0.0515002666835582873187276352035117 1.0528737707705850547023615327061847 GT 1 -113941481469480025086.3923199722469120931933088355194044 0.7695723964220951292435125170729736 0.0850941003320361620323678024898881 1.0889340608881415003320191741262581 GT 1 -276885829356449913615778726603548074235.6962088306834753441412972734439744 0.0788003248495002706083636534628252 0.0845703118768341792893469059171397 1.0883617194301114795607362261112369 GT 1 -521845671163.9610291336938910467182430559848981 0.5633339281341655753691578895927826 0.0902521792455691583007456896836689 1.0945878379261737364350049660155213 GT 1 -11364699015175278980631341198553186397733596.1677651076198145182632778313848385 1.1446294480766807222907434455013226 0.0720284859173496618290761987441903 1.0747542426986960886617294283680070 GT 1 -452883154328049469030.5416912328906029075697396269181703 1.8716432506332468184397676841400634 0.0735759621311425751807021488828145 1.0764232248868516805056730191022839 GT 1 -236030845989568325073.5202651035268893700537408934275554 1.0781044213796984241634200932159947 0.0963078906719736514421165011415203 1.1012665636294140735774409111721512 GT 1 -295749005785199456607679.7865264532260659861669276308794577 1.1029533176224172923732391656520566 0.0865317356306203861794087886862426 1.0905066444688289968089734654316248 GT 1 -66515380840304210637517714792924857.3632105880853677387724150327583550 1.8427083207534365757609390149134507 0.0697244839921999131454433857727326 1.0722744829374909345710014055096618 GT 1 -9705996846963265.1376907046973601814522025792272255 1.3274407128354095627426377949915673 0.0125077807531467739800504356506806 1.0125866614815944574143723657884861 GT 1 -1382331978366.6686946288600490302365214510423886 0.4927049925564734913711656132305488 0.0986935293700896434864305165257546 1.1039099342267368606402356041263365 GT 1 -2154.5454806125294579465103406117092037 0.6932720317153043030293640929477347 0.0928856351820750075449347447210295 1.0974867455061115939168396406036945 GT 1 -65408232.8673043776459452432470149465446667 0.4611591565799312111752229891157637 0.0537261370739260985319846255758748 1.0552232561325272782181678710633445 GT 1 -53910056014139664.3678091854219046643805559865126647 0.0049799020888148606832732705497427 0.0638148104936970342449861558559908 1.0659419700380294556966037805754914 GT 1 -54676106696603840851.8164726435478773171664984873832687 0.5762756914185986784578347072360216 0.0838776437543148524403197100939191 1.0876053465411489185942297086603751 GT 1 -562558500844508558246724019643239977360733.1293138113104168344218227336572448 0.0480354668847910214650921289236628 0.0962779521003516598139244682013462 1.1012334350058443086541655849275523 GT 1 -2019881183113183474061.9930377038561790938902342368592288 1.3806702155315435595670783183173461 0.0744081323226249413832429552327033 1.0773218891423746937272312569750519 GT 1 -2171870888171073503049813395176242506961.2593853155934871029487486062248387 0.1437498476812969237945803977811892 0.0055228056295490316211927659102741 1.0055381127052439731548111659301393 GT 1 -32.5400173539269829734217061633201086 0.4693508188677420606859717838352590 0.0028405152707380926437811881281359 1.0028445571901434831113485530064488 GT 1 -14373987420524317633139977681542029100046795.7707444928206683240793311483549034 0.0494339376609432806034626123268731 0.0778538419150774520473315218784635 1.0810515451202859094164428907496892 GT 1 -37033234175132504579453529120330329.8464596859090951745222669171730079 0.1329478497326388586236001876614077 0.0801593979672515171271461878641606 1.0835548826101225814654280781938614 GT 1 -1257855150957863299409784393.2433105277114863582133743057438893 0.1253654994387677376527067025900047 0.0960295969929746614685790936765107 1.1009586591624036432991383743892689 GT 1 -30285989645339116046077421421473245.3250630630443668221597550283250983 1.7581329069347109131302547373894621 0.0311962942692507295052655406221444 1.0316932616775423931067521876406072 GT 1 -380073879263442847750.6560010842018192971171721159744931 0.8275274626229855051553142852386473 0.0739137485034965429023769879850927 1.0767879045089154690889303591065790 GT 1 -538407934502.2637523679334879643599333520826625 1.3204119368951234370361345251162482 0.0967330577506184953744287878742931 1.1017371521423302005377538633430100 GT 1 -1702138479697636727253551139037019834.9760429829068192155342093347693669 0.8889117785801750450381635067867870 0.0532740992816729940707362658768181 1.0547456672711583868305282213561107 GT 1 -257221836049694068074074206623499653679.4589757827123260178123635545943058 1.0816200102849446788302345739807271 0.0220581506367745894904331267523865 1.0223050694438683787166563598985227 GT 1 -6636776377945616610069201725841447197843.9497775683293349586005292875384007 0.5194325230726898325538453439532351 0.0432399106688210112863902125534139 1.0442026093113071261861938524878667 GT 1 -2074982038405401958369710.2723463266044061716531426343653113 0.8898646886224854694433182768571668 0.0270682462395805161483226697770877 1.0274413392761820884824101376379325 GT 1 -422765142977997715243920500278948293128039.5045403913980301529190990444668084 0.4143760542547963988378544514706177 0.0989831269043008880905630216158602 1.1042312944729010138860862861723174 GT 1 -43881195988.4249066593497131061346395250878209 0.5344494074849187082948211321530338 0.0011543275083464268963957160918217 1.0011549942574919967925157229252096 GT 1 -376627728217.7835962067884745072843340077389448 1.2352596430855542526493749737762489 0.0100725216251863805027622742230000 1.0101235927035738904984757772646834 GT 1 -325411275.1271005390096113868980557253305422 3.2574580160228971062088241851918054 0.0080355092738267134335105176908091 1.0080679679768816507824981475228815 GT 1 -5379886226313864430463854223352785294513524.4684036636788662491611923053495463 1.0239445162494258031126964278834142 0.0886177998231117037059789734748305 1.0927929305417898232929801341455093 GT 1 -83356.8373910095406162158198529768256713 1.2921744901047251069244586738158497 0.0518799432289817195734196670141593 1.0532741425820356707501734739182551 GT 1 -2894755690657592592.8791554697939922309779904441571634 0.1541199018579349959531294882358331 0.0030615884109440667368236310249394 1.0030662846605147810010801708614061 GT 1 -100590.6575108984297927565734794763927803 0.1405041350497451479649452041293624 0.0688375357397163884639281457607227 1.0713215118162295291057141442215853 GT 1 -2718754.6737989393212803023049419019958118 1.2580249218416314685509585239384113 0.0771049910454287910399196960339348 1.0802398007276442990853464052269499 GT 1 -190699777945699431945.4875419337827307550038093641519442 0.5887608780313380334691544774389608 0.0406884573842413629826512453685759 1.0415393948989659967976193823621061 GT 1 -149937.4383329270887988124728068852671954 1.8861450024328083354923520886084636 0.0752719116466002005208708930510854 1.0782555432208566498373976124577939 GT 1 -1361373437606.5447077824959911317645255282221539 1.0073022730205537295893045870236379 0.0499019327304965039816450571511825 1.0511900710105261068372651381920023 GT 1 -6973399.9751366238880951693760136881444080 0.2405213803827192773887439936181025 0.0893610886520068364842189717541036 1.0936088254459998499141654800323623 GT 1 -3.8431066321154405574881678614181087 0.5767353682344425294404719056318916 0.0976967687160642244625541445932257 1.1028046388244727879953262311284330 GT 1 -24779440.8558771168074431879457434242647254 0.1416634038708377722653969410355060 0.0800582759699674063048063278948040 1.0834449543909485792844202564104650 GT 1 -4974194744007.7714602744997801568405136460289016 1.6417598249795662163526010398441667 0.0737995261390921363010561201254867 1.0766645733172748779014983602623756 GT 1 -160.5953526320837583929421500932985841 1.8357075932211638619060182847813973 0.0815725640429636526444849497253615 1.0850923802164447637340144431728670 GT 1 -21278695500869723658014773078860793.3379123324707147949656619053771550 1.6668271722040942052088366025044784 0.0314869274283826427416157464556631 1.0319932984754138005220419652065543 GT 1 -807212091105142254714302435980.6889097585204112556422514349826138 5.8616776354010464348627142807125586 0.0782098498394273633893903788526247 1.0814376841937251125506548935554553 LT 1 -34762175.7426718319900651566922880310239272 0.3555349857030853796582231361587848 0.0802459268226333490051575042655346 1.0836489564369407232514453957824569 GT 1 -4972686860798422430975577070488562124331.3633147359692300022769795370295984 1.8545128303771737347017177514245617 0.0192634055002326138035585154956834 1.0194513626070820927003695520749620 GT 1 -15030004264191734975.8515549121467598503709870945994218 0.0202153762731177163605181383868163 0.0953987988207923312979860382476083 1.1002610940825351378979549329920664 GT 1 -2028055432920.4283722034263079552174935327396410 0.4200156007760062628505386847649306 0.0521346679648693530614208289971336 1.0535428416331191848840689631433938 GT 1 -4419022874563700996323355845088985669100124.9898046331620121322594983036953710 0.0105323287809605859215401497404246 0.0408961601628418865365784019865202 1.0417559306725131323001779353056037 GT 1 -70.9632612883569178262863197857029802 1.7690355428625149439711052494695305 0.0620754993831984556125039467314056 1.0640858229629322666142905353275810 GT 1 -4933907103895366509943277556538753742.4932606891674786560624738705356410 0.6805244295125692127759844618541298 0.0345088797044158495825644027083597 1.0351183741568091676867054663408627 GT 1 -452968944118912744499057868.9823915453096079420442019520566040 2.1689332403732324828262164350947591 0.0720895854553711859327472961083713 1.0748200869068874917768103173550565 GT 1 -8145178.9411109028140262045889541927062083 0.0625470473565205012773207620396424 0.0571200792827524947200997123418240 1.0588163419782667283278797723079934 GT 1 -1054869027950016296185516835272488098604.8771312613063638822456287544872125 0.2939470675623896015413403121562144 0.0271783831248439869742864765369542 1.0275545467227611175608069666997942 GT 1 -2080885.7545326610363334081696414940055627 2.7263848350361705226233468557913660 0.0242416782194563810685858917561943 1.0245403443587099061004909572009275 GT 1 -1766949611966528831402390781.6499173301193365927049289405036534 0.6211439272119651283723873698261806 0.0784127103307413127383461262751172 1.0816577807271313131731780095392070 GT 1 -10738959544188457819574219255611.2415843989108006830560108524910902 1.7703988436030168007921884809544806 0.0063340379617199749780942091990846 1.0063541830919033851199157855442530 GT 1 -21479223503030803846.3229479427079494167033701620089682 0.6852060247258836892346536255540095 0.0724784829424761758030451177044544 1.0752392857857859320334825348572689 GT 1 -47.9136789007929358483548990646735360 1.0244303361782351095292587426332301 0.0497694393361813794688901007433912 1.0510506283977250755411598250888518 GT 1 -5059602764867043908762597162.1663405833113136711678111759780668 0.0641959573445833938616903831319866 0.0392625204071718658150242840468138 1.0400540815317244388664164511231195 GT 1 -952660567893091482080422483.0544437757188450060226954358289581 1.0687070294924985576745303562403685 0.0183332303275840585030191613106204 1.0185033666351092004361675901110428 GT 1 -80019941904888484530662462550355817008729.8509146945891832741322055728249892 0.1343028544212656587536701870090836 0.0381279235613304499464068760240080 1.0388738138335921622275875906169318 GT 1 -3275049013193391789.3041320527072830050557639587568250 2.6753102898755300214130908614783909 0.0859369181765981192356089533887460 1.0898556925973162721339874219330430 LT 1 -4509283606401231010180502567988391803.2627593962062591497468046089688015 0.8697745238458807531465040081445946 0.0862467622174864103598029887548834 1.0901947245235909566595882416760615 GT 1 -1040945438155706.8346290666567328666284453643700828 0.2499784932949374775730734351610558 0.0425966109031871348394407604815984 1.0435304621335943336330762892586679 GT 1 -3221884603477800.9591148323014884422585679560599513 0.5044665293121577603311916944773897 0.0542436986924394721916910233709790 1.0557703527287726074825130726859871 GT 1 -1652326271726302376993306007.2682700850948199257390568328178714 1.2022468027945115840256302315814814 0.0783444209013866390275509505340318 1.0815836836772601078996269614457596 GT 1 -20532202051594744454017882753788916066646.8617962487405252571230885677936107 0.9482308542879641202201027636268728 0.0889067937794118276795917136136998 1.0931100749682198613819837725592830 GT 1 -6540182098564434335997.6861553484803685643792615282404565 0.7503712755113941440391421903247305 0.0872387820312699910621738357975910 1.0912809682247589368982557624726448 GT 1 -11.9106123174266470135117249445955934 1.4862747915944322660264684028037011 0.0199261155409344461217717390787846 1.0201273178542075200189903176156989 GT 1 -1840333454.8982048126619796134991525424755408 0.1813290938604688557723202690372344 0.0649995476118093622149572229399676 1.0672082658559300567740886275867757 GT 1 -344.6040964608719720425911785976743232 2.5799870353882767266543271476997786 0.0274002593063047573581392132143096 1.0277826476239458999945141642698327 GT 1 -410988136526514861457832098866.7578926945545965887844181134774019 0.0747288794479273119497289143087470 0.0035409826066731189572920869839913 1.0035472667246040787838020107987948 GT 1 -1184318770668071263781729659097205046342.5050325075485978979432695100211345 1.4842129326515674559155733405585199 0.0540496319833805345079721081788141 1.0555651764053111310390307664116545 GT 1 -13098073429170085015021098268.8947770115406174877541297717011150 0.6038176658286449645440080397546996 0.0542335887067285858750261163971107 1.0557596629436131351725816750267701 GT 1 -3344033636179199909595520320327111382721.4677667453190150878439738219858524 0.3674838612205287709515944176279937 0.0522052025984279630754590020378638 1.0536172585947842703907800754622733 GT 1 -72579313437830961990275.1234217658109056791350008895633895 0.4622379392124796907930790243656529 0.0418490738787137424121326318214454 1.0427499704957613450738792110915678 GT 1 -25652801128614647639645255535698238770.9236873647685455869753670745238766 1.0946194042940005671815200600410611 0.0583035861033555782823649620743608 1.0600723345899208570765981249650820 GT 1 -16102045404373.3447411250798072143055839465998213 0.2056729895491638638381652560431305 0.0834148713678791764509738967091389 1.0871003315291084205921961244531724 GT 1 -6489482663463585553822347901064483448247.1345572598016273268230449121925627 0.4112560471480290483382883129926232 0.0836177674442790731575621118378387 1.0873217168974731881486418425191176 GT 1 -634058683349484445152347385607328645.5609852443545895920919154576165976 0.8852782900264308406233825497126890 0.0937229828984923428175619222916343 1.0984102612835431726395145105660625 GT 1 -45366475338196876705.5702847927930443866107181834827038 1.5714679335750623176724072701569707 0.0012853079018203520839664090499316 1.0012861346184878302132940914216775 GT 1 -5531879305.9423630605770848672639930569744910 1.2689307420818907047486909324365609 0.0778067154791560917026205389039969 1.0810004412563843335979004645364201 GT 1 -75649624221999396578.2164496242010383547951638740153628 0.9306490683088146603589621331029201 0.0287680433431848510276713769954314 1.0291899549175632861185232972902020 GT 1 -8227761136198700897602927656851880715601597.0472360333465208239244212808923780 0.6061483678870462473704341470271666 0.0644270183694049208471768165538720 1.0665961228094498737360509299752040 GT 1 -1042.5649838855361919554915580187498619 2.3582440911928769583442797202642556 0.0786690073576194687535626460633204 1.0819359233132572756346406593768323 GT 1 -40392394825519274341574250494635631.5161096738555935425276121882194766 0.3029154772713666378761466803703238 0.0914888241104647321983554180701563 1.0959480897471265075202900373981203 GT 1 -28701320255999879602745382320074243190188.4500139407299856370862314807906901 0.8466078548042687484439010219282035 0.0441076936122907848418527879373333 1.0451100224983100753542058832622872 GT 1 -1367313968.3276340422376389098427715868376702 0.2180928018308336684888103166139978 0.0818845659908262954854232800998797 1.0854321511588676363585418303248474 GT 1 -10889845970756795064189915046.4364722109738365937258722089541486 1.6319189197249816746325865730758036 0.0045179779756676192324675231093298 1.0045282148832139285561248156697772 GT 1 -12131253778638069489.9912806977917680363649832703438260 2.2354115861350830235210638587168169 0.0864266761395967408925857642398444 1.0903916394335673400868071354979213 GT 1 -669068270.8259891780665461927022465307350566 1.3037884742189432089297677783467612 0.0996879471242854867260376790184383 1.1050138503357326280343595108709230 GT 1 -461.0572308464710992362972580757040262 2.2945866763643580008257355871324106 0.0472033902189755039735336903671630 1.0483538191117089581684261223251398 GT 1 -1742583.4845887592005676001858532970794946 3.0773313598268086613684079432044644 0.0969760922768825490087843995520452 1.1020062500317806609855267104224967 LT 1 -30151643763949020052958727424844774.3406472437254330654756716454976626 0.9968797173056547168825607609677268 0.0026305583307421016574472916502239 1.0026340243289825087257690215170078 GT 1 -4373549963498714065855087279154811161418746.2954581565063205681460514556943515 0.3654748395623189740761993791604985 0.0998228261462993549668895803054603 1.1051636751947362929849535164742759 GT 1 -611485005360512455729290968041.0316530756350432608599275957152715 1.2745154709357077274182674375793505 0.0590348692846952838457078223314646 1.0608491956462385335044551139284097 GT 1 -707145.7112541894576485948246283406897110 0.8389878361866332610421005657555039 0.0026335302792616613489579635392949 1.0026370041204452201391147011281432 GT 1 -23216461146842953616429675389402696463062.7213561707870620490650193702141504 0.2111785832672814257624156443545531 0.0497474688273838839749468515283570 1.0510275074250704394363070000617967 GT 1 -164752250261820988205766.5885741004488258353038008900600095 0.1594631796290574460473560090151246 0.0342621125443879754029074514389660 1.0348628196261134924475866841386329 GT 1 -67728288387038432844253982916867569046.9966841446768601544537664197371550 0.2569719362714940142179645924431410 0.0587210098720955661535468814895517 1.0605157007376524587171358540935550 GT 1 -57218503808367267879107144.2384430812835545970604382263637525 0.0509621045090057459594744773241593 0.0557861355574586335962151875446036 1.0574025871792590692857496620267158 GT 1 -1133631826551902404468612.6089139283542344593611923417671650 0.4767840355176266253420769184349765 0.0148129137726382855188431237455686 1.0149237205892604876175828584177084 GT 1 -1202291194944784272936706647313298716226228.6786776565127227034861751046681300 0.6336903893470203003020853676266100 0.0885576552291836597611184712904282 1.0927269399952870652029349791531036 GT 1 -101570032.7266017219170124636784266493318353 0.2300659513912946545493325478128233 0.0746591857687100577909026043593694 1.0775931615123301373797230216415905 GT 1 -882304773423415931792755626.4483439838708266058284360382357096 1.6201072930324133341948490966463194 0.0836475626840983301869647495711661 1.0873542314128710651789768003510765 GT 1 -1189842504279954391.7724146824971927669838941107356915 0.5632116000296121904516390175207562 0.0359036849291946862694632851817407 1.0365640774632771713534434146177110 GT 1 -22826609416054968839910523874024455893069556.8875449386737596076425931492221459 0.0522990427128907628068984295303790 0.0116151801453484588351194698671090 1.0116831632872695377128430304959507 GT 1 -344019596942616489940755792916750271.1840573881949951789521469053970731 0.4101375827243979010173250940835314 0.0516225912131982523091990636045948 1.0530027454174869614004982955853057 GT 1 -2673.5698921628741860225758793334803121 0.3292536022139769125007772569880172 0.0229536939830862366289528530005020 1.0232212319346608757355342038572521 GT 1 -2780393926465520631755681818955.4160432804081334324172230787667368 2.7147210018322855136305675438697854 0.0963550104528627357704803075896859 1.1013187063989384599367265177706997 LT 1 -218742202.5497891528576400402792215999777955 0.3151958114800350183957726824001342 0.0842923033465930795967680370581940 1.0880580736909240069718753834767959 GT 1 -194224219454483178.7285214339794180889185062222928532 0.4825846088269967945496027731608164 0.0665651274133440965243875801091861 1.0688840853472467982974067901331678 GT 1 -7243913.2386163923171200714928627117517942 0.2950033419928335674625975896648023 0.0663583258823000932752643709741071 1.0686625609193868533303278843469093 GT 1 -617838605761386.1523787114195392983355400548089563 0.3262524946684800624348203608978441 0.0805582715456520121425538639644116 1.0839886100243883967189659877555050 GT 1 -511093.5398203987191001688248644281810840 2.6293921138956907376454826031724948 0.0181208418134192228629739946280568 1.0182870350362606592559352301162344 GT 1 -1272396228097529.5707337627302894050910326694040930 1.2083753753494365635098107443309972 0.0605296176177093945154268642935540 1.0624389854980316468056453058744920 GT 1 -574915581007714654291442166.2772718643417276105138907401329155 1.6880647958793913785119623217690044 0.0307977912263403362092672542953025 1.0312820110765567197407514808454865 GT 1 -33967992657.9241509757261167490955373024778158 1.7517572661156075171571780637104114 0.0069860686409543077424254669080376 1.0070105854693701541098493682385329 GT 1 -226604308718055.7525139967540037221068858755115956 2.7736450772795615365016566379430690 0.0389337229808586112303765889881871 1.0397119056686685865918867214105548 GT 1 -58780561.0738809173050590784583511619271724 0.3809279109792194615079719270376477 0.0724538336674001132934113629016038 1.0752127107176110967029971003573050 GT 1 -1464699037866.5923947519634326663241529270973000 0.0741383057291593562644522013838959 0.0054288039848789656290234186766229 1.0054435934917402460696605525792723 GT 1 -4655931229604127942464281682802867.4265822289088117202601273414568043 1.6938749712487263391835346598362985 0.0319370723248826587259558096285430 1.0324581858896436424321129806014441 GT 1 -4876306833082.1805931801347344340186942814770888 0.0653597860032136314178698757000288 0.0388488572406012494099390973752735 1.0396236058338639683032201549110779 GT 1 -45005781.5120662035128501745585731377612924 0.5674876107212025046197717901141141 0.0143541539472359880225476231365246 1.0144581714032547941165893100724294 GT 1 -107209858.1001779265558268109084139668904182 1.1277322287142279667110181420317959 0.0957659664185468156570809022322814 1.1006670653901936714671344539910840 GT 1 -25300360326986458847818892151.0667057444461203916879429115713373 0.2350249385064353931876768318378416 0.0518295767825916257983335799219272 1.0532210215576636610142162959879819 GT 1 -68.5280483490234541019934114712980121 0.8337151814724723390809875152420634 0.0234403511146461368238185159489011 1.0237194461629755555073537820128316 GT 1 -3870423957808501578123029611.5478886501015202780906376315448859 0.5648073651336000806282055241034889 0.0069364338987822355409952948163620 1.0069606027851638459103426454069522 GT 1 -12.5998280952755212714365823326760373 2.1831517616073845261361644442869436 0.0745379131812605925944023556702813 1.0774621128873747502624335355901765 GT 1 -5282124052280479484442759612.7686904885982210266913402780329473 0.1241454537090931367879062877947012 0.0622549574726944106396833702606429 1.0642771765952386551867797580301121 GT 1 -2541777560379562148767037444.4183502539814117200750024648517797 2.4159629440668644447336734060433566 0.0468261870436645931376374655691842 1.0479580069041996856765555343762826 GT 1 -9597863437492581141107669342.0472580241776137322197734039059428 1.1968838791065684231215411883815995 0.0764787382116461062451602228814033 1.0795614565560508214317812174768883 GT 1 -16664946967347566689237296491752214612.1848043548068929090930021759999017 2.2199203403666977121225669744304613 0.0153967487596679265049050556021318 1.0155165095709312755050064865365389 GT 1 -579.6241576263170467613225141150593067 0.4058235527856467845496172807283111 0.0578160869621265264199563587439628 1.0595547866914256882916412203608401 GT 1 -283744888.2555998031776350344306431219533798 1.3283391443883950583186728803890569 0.0008867641216607845799184673277354 1.0008871575295550488061549264576248 GT 1 -622065110508348876447441491.2081378618661441823409025956205738 0.9336295795413820992552686940820636 0.0162534130527183778065642019920337 1.0163869486875142261070222792210296 GT 1 -14915788478219531125746035130384396602506440.9694071093078064634405722923317177 0.1061965472458852760616732791168761 0.0420162771660665722991625217987421 1.0429244919343965518976632213926025 GT 1 -16353371686721063176604105754112778054843.9359832283135807068968172903226580 1.9129996032586172766521770620733642 0.0624750257014711125644405535314656 1.0645118822406255909650379976042465 GT 1 -12178718776824567448311337211805969.2045476187964449327589154749877439 0.8379870386526531557643058023818749 0.0554650429836901095688018407645944 1.0570625815912065417903064767604089 GT 1 -563483195223019918070443496618.9663667464535028431106854442099390 1.0522907390267734923036953758064495 0.0351369512904153386357789934620071 1.0357691061501887665873681896652944 GT 1 -345954751806545901751864328094867729019.3603816833985917883097174840542617 0.3214458054744939150281607901707918 0.0948664804060877322776445159856678 1.0996728107016105159243816138480486 GT 1 -1144500798663104997601236139202619816.5163121046299869824288938940210307 1.6222504778467749908132394066803369 0.0731462604844173445830269379191770 1.0759595041649296618598095991582682 GT 1 -1696809603572868681977740181311038883.1844336160132760390166070634160061 2.2396751753824209502837881255177881 0.0216210343664976822939595650235920 1.0218581935795414839254119471471918 GT 1 -69486643539778866668194094468406162105406.9734948237291363092828025070916125 0.7704488019177473227431883040269579 0.0246665481838563349093075397098798 1.0249758645908847784918281604150910 GT 1 -32910091473029181631123758437.5028997371819667707767119848650522 1.3403733887171410716839190158491432 0.0979119176458561856636281098700056 1.1030431114098653455598024402367274 GT 1 -65868817367160219683434496612.9391982611274615342661230076540253 0.0946498749455918040146131195030184 0.0357754255253311993647124149961110 1.0364310504295007951233053877175159 GT 1 -320233978465927179399239226495916731246.1849940674114241624813804418549258 3.6306396121912655836077458773587291 0.0594407978508032505307367778296833 1.0612806846951078006427593110963521 LT 1 -2518875960764996642068.0485819117686657732691190775400637 0.4666064541611820839342494235124603 0.0677073917510469215627166769572510 1.0701085562221790744340276924752598 GT 1 -5187734949171644132090708046.1284142996122367220907368804793376 0.8165501456786587495974120805720504 0.0456006870990532122329025076521522 1.0466731281264488665261962441458404 GT 1 -126191666274098766.9674509786349876849351413738284885 2.4255551535434359417034721909632073 0.0695932909460977303304093551941095 1.0721334668687044055593691852044481 GT 1 -11341376108737.7291979861003232403381000388750803 3.0287213325687018126668001947234032 0.0383445857127606172897245512484879 1.0390990896909854855575727286703249 GT 1 -5.9499206084802033976743817502255933 0.1545170834979662382986497091888786 0.0984474827046211191647343713144958 1.1036369825775573923513557076210098 GT 1 -5963.7077671425685290393658337844332977 0.7103970799583649878239709754905816 0.0626140144643532282879295189878970 1.0646601439619704886687982352125438 GT 1 -579108884021852623405777382.4493906277573823168490232425289982 4.0095984518769364534566270136373526 0.0632863353485827109781670406337656 1.0653776307967865904628340059220395 LT 1 -107.4572579898166828984202222320073357 0.8686011418854941488329560275421605 0.0799369505862458203693425988571542 1.0833130793157873966464116601373546 GT 1 -1396634458185565012483814.7367340229686370837055107750873138 0.0860584348738206001073682168273231 0.0147582072642458291097876896713319 1.0148681930754379124928766786233418 GT 1 -18319009230235697112511210959344060.1675268957853829923066403982750821 0.2515786613520608746276255911317663 0.0358983722372348193123296759700399 1.0365585669377840540133953991097254 GT 1 -1047.7374309957445836350810978629434400 0.2981664781144957102955511995713805 0.0282468775149644005150266196772765 1.0286534959953471550626620295788094 GT 1 -2732150908265348119760608522635551.4145057010506562710913182344143481 0.2723790119500330387764701736193171 0.0223359889673994680198952681031295 1.0225892149745409047643492501504833 GT 1 -75.2587663087903200751056188387150845 0.9601232145394786709735765761064539 0.0595982137341934260660039673725606 1.0614480628435406703422660769683675 GT 1 -79635242.0864693776678309686057764574430958 0.2039670596243537385481549673496689 0.0131731336990239524028426064727217 1.0132606690175961102170227331679526 GT 1 -572713.6129128899842950969993639897550392 0.6663933443805990427172275787611754 0.0220664036099900782038881782215516 1.0223135086041773413945910608179166 GT 1 -121891886189347185497014849.7161448034588355069090371165210221 0.6062357335155277107026282393217659 0.0382553935812935971063516578118145 1.0390063454562233208907815435367215 GT 1 -264407168177180263.3449749347425083766574864499194375 6.8597191325143379617795237759915142 0.0564200457323531042898772003395445 1.0580741755618862297777877625476954 LT 1 -167736412460458254931371026270.7386360948267326318583976438846586 0.1493033311341200348170485539773405 0.0153265853212898608112596613109915 1.0154452514896042312338652074463419 GT 1 -7567695858557195801903113002174.4053281130570631545719328954840383 0.3953084712703989043675262137893052 0.0475092340744357521241568666416637 1.0486748665946103820090463931116012 GT 1 -843991053271594409808972092397893.7564903364855824814162313330208559 1.4373968420900322526529086608487583 0.0197208368177382802595324198898175 1.0199178874924739875311624232853870 GT 1 -142794.9999455480639828479378636869886443 1.0160435418967694316146366119300828 0.0329065079800372105060028160728557 1.0334601056583867680401764147931457 GT 1 -154337024951362524.6599294992744616710756198011094662 0.1069303985759999961982803451648245 0.0385271019466645392835852328788125 1.0392889015025850664072013458697440 GT 1 -16555.5863163656671811613920059495723033 0.1045686338150445332020111768191403 0.0098670887547065706347672184186057 1.0099160910816093876766758801472380 GT 1 -97533.2651781667001606969517817288720987 3.8953660802748982436001370497375852 0.0492951388618825236141612056540660 1.0505516104103683662214114230662832 LT 1 -9541726394668867611830646713550158985.2295203199245649881723304744345941 0.1873978328916603448309268863213814 0.0297189425979507979822394097941738 1.0301694995550838514092751128612601 GT 1 -1581272900915324807837439899.7225857957786386867074477243457011 0.1967558189179863364147894630183510 0.0205607709101578107141964596489034 1.0207750863095723550071042503100331 GT 1 -685605614378670.7714178398650996566598427188340599 2.8185438873339728330585059432774801 0.0312157791582811971687041003158625 1.0317133741986454664961545698948320 GT 1 -87576045912630151501784163986035011038074.1500172139166376367205777642352568 4.3006800255236344704809844013235093 0.0650790064973820602821893292194364 1.0672932521913669128171051249057817 LT 1 -118820902084195293.1112429853532863680436449151312460 1.0844302249797758542223527294129705 0.0994080077087678096514432957970557 1.1047029626806977575884756928978952 GT 1 -4437262140407.8843314667650918982826331094837118 1.7222790970752341770558349779738833 0.0317629130176977241557519618349154 1.0322782971261914592504104187597364 GT 1 -273652.3237559693347948272222402520572510 1.3548803021841483593304868436580104 0.0430763738807275438707442441587373 1.0440316962318141895532082477245021 GT 1 -8014696970864343803839552.9863355076444945439431490189781217 0.7332530762252837363310820608635481 0.0799262766637230688913143987107471 1.0833014780884428451590258474338360 GT 1 -249029641630.5879489533815788176200927008015876 0.0345954545491639086289832069654847 0.0281363658694910410111246700644212 1.0285397784682510343355811777937270 GT 1 -126989.4538931384743119263795017823429601 1.4692803178198766663342592723697592 0.0682618941557293675954367037959374 1.0707035060981079259540126729260632 GT 1 -86420485.4328724328417944444846005822815525 1.0101566367420444953832308523083235 0.0968218956222331964189335590945897 1.1018355087149280665567392257747369 GT 1 -93700179033412.3371421598131432689165306172627382 1.7557737157197298627058513387355218 0.0137377980343677234603071465112827 1.0138330348168301986312733703381142 GT 1 -10335821232690723817178738322610686623351748.2178290698661952103976157756062699 1.0246014672366166027326657965460507 0.0766061949315720070922936245152509 1.0796994777595327467786519377360174 GT 1 -71019400535961488111405985.3626187314836732242683649099034331 0.9062353715932904824959135632492290 0.0197144721917896955795125273012198 1.0199113948467807799827118921160263 GT 1 -702.8138843469510152811052580377748647 0.1089041692009381214814811074893210 0.0365755687188217114381243326846740 1.0372612256710054640234053621829611 GT 1 -1507428994117028273823915088143166322.9029070100447416424533064160033904 1.1577131922685572949449659517128001 0.0420057994884402102416618086415288 1.0429135547753627239837539087875375 GT 1 -18016076806596821549831025828143326666600079.4943476347800987942553959674554683 3.6640710689473130403282945397205046 0.0366759554906960941732755268629251 1.0373654289681421422748026306273413 LT 1 -566915439198233801405464.1149034226244994967384983563253292 0.0476728008248593840694360068478094 0.0173654011256267430801017013794752 1.0175179483120635761144206618449585 GT 1 -60641323668488517364962076616847.9390211455726541520796121125710404 0.7695143119896318584148280744345218 0.0238418575153020363779480987425829 1.0241306744603655059246982801775541 GT 1 -3010474.1963469129303876413340985142602439 0.5025769473291166598783359680572431 0.0332415520444408080383206190510413 1.0338066100218594975080971002189895 GT 1 -968839191602738631269796552062267.0044690187563185342646888997905620 0.0338646658715339094624747502480319 0.0522031288813589380328422850311220 1.0536150706583172941355715212804266 GT 1 -99829768968317632338353136.7690537074253067957604838695015591 2.0616855196913476189658795703704766 0.0924618411138450290129315240533065 1.0970196653677392737541933430055965 GT 1 -418628286072193411053665757381669025244.3616706764883237893263236861651415 0.3495965203650898423277400179304599 0.0205469964710019418004605505958855 1.0207610228109002704141003511868314 GT 1 -2215227022007721473619257.8462939407564316132436694654607079 0.1815488912558972305065142114449831 0.0539193656358685930979048374346528 1.0554274763913537893567309697128496 GT 1 -6606.0793666565762573196613447627538222 3.3899761487185881832985073823791023 0.0014010895646640489723111845786441 1.0014020720084165044304020212401334 GT 1 -8551921692319776365.1857398351470719857030805785077998 0.1092841834741939284537962365416880 0.0351351037233617058522709286099690 1.0357671913030120610248587938985457 GT 1 -11047673616.9438497535258699729593725922375217 0.6391302861492398435545672371784357 0.0419644821517591770260965111408369 1.0428704267003735668948293276166338 GT 1 -19619.0279443389656037425984597065493891 5.7727936287272014860420928098876292 0.0941760282364435728258449976670496 1.0989102834679295501784634172366077 LT 1 -1167467922033232253481894.3591456110152567237921051172296817 0.0331973798882334519664863563325023 0.0772095905646092363728958521479389 1.0803531456327405025619292771934623 GT 1 -4508589975.2611418829261954075368880601804520 2.3290593813502351803267311278218013 0.0168754224686166518368583330943418 1.0170194348898311944966630943545657 GT 1 -350110647451834105512607413035.1177488095143103674634570944319907 2.1849148037261985603119868169689569 0.0915673541069485000203223830996153 1.0960345316013998246237125037784077 GT 1 -98755318786685356243631627.5156494691578095931625675397933141 0.7664699801915164696525809961979464 0.0021468116602592607036693168581047 1.0021491193638063810345064205537340 GT 1 -2135788380325376947831083595476.9899392910741968603103117601384720 0.5295699559465513485695581957615304 0.0621550904068744064423970120939016 1.0641706852314931006885894433937059 GT 1 -43301630336137112610563.1302427932228947958350094122516542 0.1713968991767024688280074791089905 0.0327051989538274749473968488167719 1.0332519685148173238944870401213220 GT 1 -17633088474611290.6187961611786849150812889561771877 0.6412587715472766543131128664077554 0.0391268179176892671471635711392786 1.0399128432544660400046835840135352 GT 1 -184616365367612146185721764386223806962716.3966621461878877217705830648130438 1.0247744236693752275679858728385927 0.0981071356899822472861796229385765 1.1032595416834212658697764778617068 GT 1 -7944796268534992451693069780924468.4499589404985524111793540431410764 0.1854266343155783434997190968971649 0.0462090189997660686204219864969575 1.0473107290232422053456815174893633 GT 1 -639392603009657284152453052464138381725.2730638456740068436412226550634344 0.5483172931587481721166950538607652 0.0695201451492143374088325620635705 1.0720548529452768727216091614408284 GT 1 -784895174467023219399977659.4627199368554603018109314658257907 2.3046590336143783764465534564986153 0.0939095250417562551908873288151432 1.1034786851017844931700705407316482 GT 2 -1592.0295447298647402968873394815780670 1.3537815579925933804467954832811735 0.0599747939478232224060212328973180 1.0618485891284775616912751952088794 GT 1 -6583252624.6022187502754018236327048952074283 3.2173103121935466002261272636944812 0.0607044224534099864981728937675018 1.0626250702365603677943231261394029 LT 1 -3743469425162451221.1036657321506321707262004204734570 0.1375514514760388707634526587526311 0.0180404606134905162296532491721840 1.0182051737305710120703445174929347 GT 1 -36100112703884.2324267362265815205619652754910009 0.2790321061080432627377817864306866 0.0481055284694688925137941080687175 1.0493010995676373773375530002875017 GT 1 -6943639994757.3958203849731025414590454795904022 1.6183754788460074050301916003228730 0.0259994134286195673793861990833243 1.0263433731104399319449315901929776 GT 1 -6974.4153574970891423844619962362991466 0.9263768287205908649319917459582335 0.0525130487195042635068438993195872 1.0539421138560114132846565830387071 GT 1 -9324020895521770662494781828108960684747.2868774859705303882316160644822081 2.1479395482653613972007755046373884 0.0278458610174507998579637399124171 1.0282409078938967140050099691526132 GT 1 -1310520500352009441573536.2443097483708193326667945722841745 0.2510170030467717597530597844485145 0.0297643484566010164439968516065343 1.0302162972543246689991125357882891 GT 1 -601891922737078014025404197202691611772.2820610752860025696129676131769088 0.5438218893728730260202744211841078 0.0677045102259746567230886203052023 1.0701054654322342899395161927469694 GT 1 -8.3320378051897748574889137440003274 0.9139365297729243430292827275576770 0.0465233150877502464401455090231159 1.0476403063515284751189575730101388 GT 1 -830417651622.6297943233599539998211085779015327 1.1862293760252433437411413478131544 0.0505194538385056533715854166369666 1.0518402374478569780202932474040471 GT 1 -155079615620418.2987684718163686964150342408753366 0.0044119893727658811231457965749014 0.0413455734786943693194860785182538 1.0422246167754103569396572787758236 GT 1 -8503.1026578720622948706760476216554163 0.5987545710259864379928664934171807 0.0357318957386831574813118114449821 1.0363859065851549967197616067628727 GT 1 -1744601010133293578349495276.3685555222469424555892954298932401 0.1001937632074039159746549503716602 0.0009093671827384099081759323770039 1.0009097809079126778898722961684850 GT 1 -69306251968336620415215728941.5274453175294846892037071651426241 0.1640422968136747578490868175752963 0.0533870645873146115984318701825902 1.0548649964726937086244352182693252 GT 1 -2127447699999855893973733812035.5237634290824652975284542532484240 0.2058444957947983698928156846983243 0.0092092480758485033302285245373817 1.0092519153586658078051460851453544 GT 1 -10259126267205640267961182570.9852593015752998944113245465192934 0.1598324078989651305030739739220716 0.0373646414731495735536036429243848 1.0380805904722948490057820203313139 GT 1 -189985380854848026835213289676242.7667473461000425912558876344258898 0.4591182497404374116341820641021622 0.0775216823359051867120415419658291 1.0806914072308355782088724537157486 GT 1 -30227144859165390534.2264008218797926384235561320380658 1.6531939623342446930451343769654788 0.0847428621133454367259630852216400 1.0885502281740109717054019990524830 GT 1 -2134766943411707587867079911316411822.3106311194611813588617974311039897 1.1259683838553804291786574702108675 0.0682752499112626344568269838458630 1.0707178404385977003228667564026713 GT 1 -186.5795855157427674173100948698005383 1.0829196235798160532213987529967426 0.0408821462641387255489121630984764 1.0417413193283182837890371666074897 GT 1 -14655304279096291570237.0705989603371115670531126622282514 0.4194489865759672815221887962700278 0.0938204122393411175618107640464809 1.0985177720958641433784806930674177 GT 1 -13514911938295014979135059890336823.5469020643975142266596747007678604 0.2935318857622898146664441220282289 0.0909194290196531122015565588057003 1.0953215517906040743255422318142713 GT 1 -1308610542498717323883782957.5174036503313904522563491686044675 3.2108592752300135040548976274876416 0.0102619993859717314128605362772833 1.0103150167228084123497924595547094 GT 1 -113685996344495988006646416141588.4588948997514280719954884482122509 0.2428930926025060628625173106231716 0.0417603951162776970165761834042775 1.0426574228014739653410293364907375 GT 1 -121387325.8129924902264506868572450510240516 0.1847455374679554612492868207702192 0.0299099051807507828311070389339231 1.0303663305409474624223786040691625 GT 1 -2258161839328199417.1613297257121388756910739391717297 0.5732345205675309247937389750009401 0.0148047407614910736814676815500820 1.0149154247261087841232344157902936 GT 1 -11387462478847539989341.3412979650102038413843696528584559 1.2136081424222933129802263504522860 0.0522352408573185281571427578109714 1.0536489518842822183557027814981688 GT 1 -21507022416322.4619499229241979837787930731729354 0.8162364574899591168321601795851823 0.0672670175072028856762479579774758 1.0696363114935123037513390210623355 GT 1 -503675481737570228723786220419674441365.6637307964772095234549868797686026 1.3799671750124800029424199974429083 0.0165286776789653680629979386206017 1.0166668003773007049594911546951283 GT 1 -330667706.0427116666887993624513012667406816 0.6069880166370639721990569703599474 0.0711978521806008726843195246528966 1.0738595361340757339927868376516010 GT 1 -80283871632120381570465929745.6694883000415923320206619532831491 2.3071170448636705977004014944055511 0.0204031903888690087090716243943201 1.0206142107375913985214677128462307 GT 1 -1036412597603.5310250889858734035495558272289842 0.0162664343385182227830822540695112 0.0036003016144082147876355096535404 1.0036067982983006412362986221503410 GT 1 -1559599.0684742717646062035828936401660141 1.0957018828902358258279114117046159 0.0767187595844588488467542938921360 1.0798213883829545892111807084229736 GT 1 -532427107395.9773019627501307699691072475013673 0.2801804081191311281848451080434718 0.0615248093387388002495146984585195 1.0634988584022045710474327105503647 GT 1 -199824867429.3585576352729006793927046216114921 3.8649068462270838858809319129129901 0.0400520758780533657928234938031662 1.0408762416979122551276407696699332 LT 1 -18.0718358912148313757895413256637888 0.3410752317415191667956460705206738 0.0955110176670405353317078306887556 1.1003851551685051848444358467339485 GT 1 -91010036985464290.2039299542096364098407587333537358 2.2771720002745741201252407123205533 0.0127697673298645018702337404302081 1.0128520016340807033502992088906741 GT 1 -3722463174175838442718.7060779820726707345329523964731365 0.4494272714784915949062872610672704 0.0971155515028709027991631821444594 1.1021606977652830008884329773372219 GT 1 -4373839360340118652836925.5605307905726053381073238850262182 0.1549325403342268453181052886935129 0.0585782222905465367422548833060165 1.0603640169605360141486994834002131 GT 1 -1.1902443380097117476597099593496282 0.6576781907746563173286125447640350 0.0065795503342452936843505983634520 1.0066012909905116541049566667889629 GT 1 -28696574264925819.6445538970785551009123475565722846 0.3272773956400864319381588536864685 0.0411111159116097884373126027577835 1.0419800772471966181487726133604795 GT 1 -822661795036426313983104726977892284882.1623288502919589375242274449319878 0.2880766344550427653716332781684040 0.0746639857595087995556090839517395 1.0775983487937883660197961056485600 GT 1 -3255625759060145007054141343479962572633713.9809787172459006310142670393468954 0.2012895957139844507271512648813199 0.0172248913454016809852010712454427 1.0173749656251192833272138585110446 GT 1 -33408.4680029053124965571322599207644074 0.3360709019109924802676543888734349 0.0731161483494835247122032096336687 1.0759270161417272772277081857264875 GT 1 -775232804987.2011774913919509730699433088989028 0.4767686156713376948976062226178446 0.0034096887844202625825937326529029 1.0034155150207619887878033255039043 GT 1 -4031746823118941220979649122197249286663472.4544748585398195953330731499224905 0.7859993361276138127676098038981082 0.0635525997118789184793600460533657 1.0656619249454033967925980787285864 GT 1 -55750444490456950161962035758779.0733022843661631798481000804520249 0.0861839751350166805094370679819129 0.0413450378650268767427923107303243 1.0422240580615474180339327648693362 GT 1 -994785.1789130759204326715623113455402479 0.8169133262766522122268405927250654 0.0845193982204817134956903198184322 1.0883061037545140745434424208061189 GT 1 -12186643380031229826254528554984.0769758294365243687331174433435640 0.4748744538770447103659631730942090 0.0899871777773069691328339649957805 1.0942965892159017146543668503393882 GT 1 -350291200446811319986225245361001908139863.8125739304463485919279809542015928 0.4733621865656236874804774813856734 0.0860284985671739713590875340030030 1.0899558880657076174641302147746187 GT 1 -4749516414899439040467.2406060961757230339822878823537662 0.1668680448261305741779541917266987 0.0287641229535045841731043668860607 1.0291859184134706567301952610220147 GT 1 -3539438418028108162507681521613621230762045.7453482315010559964585330221427997 3.7660216951348942659119790358880420 0.0211550758941432067824373740330684 1.0213820513419564904906396813086245 GT 1 -1343086559087084135525775533121147678.6034355782361688828479159665820707 2.2447085018996239942262695761178425 0.0841682385473148664560567301668887 1.0879225977131405339537808851993796 GT 1 -23280131172321970400.0253086243339624824949140221740757 0.3359550010409800847073674947099444 0.0570755227695304910629378396992735 1.0587690873284432526315185803408061 GT 1 -885474618616618689655039280.8516893755494724528142119960529275 0.5490412748840194170735176358330714 0.0638689238754365613152236134371222 1.0659997737144146107803049918995841 GT 1 -441377533.2797046988233177249120746052860573 0.0733606745782209091002655785058500 0.0766678092857592234459700036267544 1.0797662059632303024544780639194793 GT 1 -152419232466363.5080028849424651189620538598504568 1.9131295126150583411341425383357356 0.0237865557492251620864291324939716 1.0240740235989542993422687560560242 GT 1 -1399644909034.4116768813423728546164004089648540 0.5133429680715702078223450914056997 0.0511397057459882722492368082813957 1.0524937048509166991162691622838635 GT 1 -3691076882697361.9742240762056362679226859680464611 1.6827969162758163920171799701814357 0.0500284674789998696709351130552015 1.0513232606039013937027484719760692 GT 1 -115336748.1671020602067985323772815035171452 0.3925970293930005881483848595966839 0.0050932331105106141860215744490018 1.0051062478324188313300763946620448 GT 1 -16084.1729072577382766174127945275175022 1.7694982911158606429526295326270061 0.0166380210834990735775522621938077 1.0167779876391571661885928047222380 GT 1 -83539611.7491655116885271339217112801934947 0.5588595173605304580073670125181307 0.0085184173209437618514670400569641 1.0085549064050384612069114898834067 GT 1 -101199.3748388429906713595224415483396080 1.9936151222734003285175559627622677 0.0484324140755954885670859187634753 1.0496445638442798662445973650789999 GT 1 -97514215.8442752725542946537179896504261487 0.0744970760403873229696693887238485 0.0018885075176586753603013683183898 1.0018902929962614369108121472078304 GT 1 -14843.9479698829891214397149168337044581 1.3999836074745645584726071064470620 0.0752030000437067004110317611880305 1.0781810250611831652437225297575233 GT 1 -7940138164223667320721.0701105000158401815008449977988171 0.0117878701047618973172114179353630 0.0983465883489694130027976244266688 1.1035250770495892718744277194818134 GT 1 -33283409795351482734718.1640764267066289491293053013029056 1.2542252458292536077487438138319652 0.0895082285292732464911786476325320 1.0937704172295821727594647715049954 GT 1 -388316500326.2480461752144599860842788192666695 4.4077397189470268595277063457873334 0.0621206213618195126069924898205681 1.0641339324472219368070580684164356 LT 1 -46.7999578625898625998544502810683069 1.6395737659340578941218368468194865 0.0118649925623499192318064741646540 1.0119359433655487332766455507123658 GT 1 -20942.7437344040065853948514717923675899 1.0802570530775975951426248494722381 0.0510008001070767881403644015887971 1.0523473234780195932839878733435640 GT 1 -4518623138777837663698597307749641928.9205713912025754942615865629522773 0.1920697959337716832011291115735703 0.0247615168783770245126376529981184 1.0250732398200621225014929902382940 GT 1 -13178547332584638091909362896684906686870355.1537301623465191067481071200040607 0.4387690519820462053578250362645841 0.0758903180659532053858496653036267 1.0789245109933174925755480217699731 GT 1 -11612240875934124104.1042643760337218284718032755186139 1.3183085006634364574782603778689786 0.0005085241597136519398236528525138 1.0005086535019751267641277287814070 GT 1 -7.0679475586656508733862834041929541 1.4158617593132286311415173939666744 0.0376511366113568769709125881784050 1.0383782502006821718296890197921967 GT 1 -225247053791502491420980611587199826139478.6110782615843356634643460685901095 0.5130505463692462489876121121197174 0.0247038554879319798734397595897234 1.0250141161422304770387929612526870 GT 1 -3049506865968066.7837525851075835208597613564078913 0.2818295015125021970635024929636852 0.0948214038206055645209357481655196 1.0996230109073112567601183010260084 GT 1 -957722070128545118277931660142758113026.1286277969193471937327477085700285 2.3497035080802035528422379420426250 0.0371272172097836066043320197765320 1.0378339810090839201315277430371612 GT 1 -28347.6426638173978859419546930506314885 0.1724107799255228256534943847935482 0.0501069355878430847097183104481814 1.0514058645000048317325215321255180 GT 1 -49936623.3721304817427842126009107915064651 1.0617092682360009744996786547203523 0.0351278900124497728221713357151104 1.0357597149361407724027990260895830 GT 1 -9595295049875330057759434083501.0525168457305980807876772896076161 0.4023480760179982510981901457764371 0.0096802437168689262679314707888646 1.0097274018577208030954901980038500 GT 1 -808853560187276003071237841.4341764406089287928539943981590245 0.1148832510631402533610503853251239 0.0162506465395375836134190333761730 1.0163841364700920923831138061396772 GT 1 -64115961919.3150241149465724208242663759429734 2.6079420042005723835923408118342443 0.0678478157051439301452655847995710 1.0702591897565418064050745298037834 GT 1 -257738165337610927.1362067878778870266058117499451921 0.5963080937779438867163639268041023 0.0677500008199426438624586815062143 1.0701542608027377268362904633991594 GT 1 -74220.2453986341208029146185073562585749 4.0456433265947307920865666579830609 0.0292296087837337282124017071181962 1.0296653049600033273679723714787055 LT 1 -3343984075529.3678733410385830367378999687164857 0.6212646665231547268030515152660734 0.0730160034786711521188594705801369 1.0758189772963386597989294290821930 GT 1 -223850715726631.2576538926415213879760096410350711 2.4059370209618367843267503138563451 0.0712101768321359986289315890317727 1.0738728056267606711992294431828317 GT 1 -5550681606271386657608627498.2192218664832458187212850718230164 0.6319991934542069730308161075459221 0.0346909943254209318262467160252200 1.0353070157661561024116897717280665 GT 1 -55838779704141470.5188754723765430948899394159818517 0.1121758007250373508264475361126778 0.0437960304048931158351938497798465 1.0447840313711138076423854014502076 GT 1 -23793899707533865793808702.9652797459925012695441162659097419 2.2256731595637138387201865424646749 0.0831978464233381996271634178472906 1.0868635840097374001988394303381473 GT 1 -1264301468615642848908420.8877369456967170910465810548700978 0.3901167263759795521548351672686563 0.0329413075206276928631775197096025 1.0334960899422224740301656169685022 GT 1 -286409386838706453103.5766184112696246384539435619024556 1.3809242131904096625072362610054625 0.0806905551351444193071754079276949 1.0841324941905987004070889306511758 GT 1 -3614224803471126964972552093.0863578949014746354319884651549777 2.8419505267491182673687455363108040 0.0845109622613576794040324970833132 1.0882968890095592496259437923217957 LT 1 -462109957392846415972862481396.4413493746817612729669477671529096 1.1082515870858469715229120415920739 0.0649604075611451502359615680636287 1.0671664057355778776266738283291115 GT 1 -1072972699486098033277951910.4942892638157253303577583449907725 0.8982850514813917705166875330668585 0.0641273122279461507031689802002116 1.0662758290932912598940340314107130 GT 1 -494614446056.2605402912756654273116887053931612 1.9303345411104080117175714728944489 0.0439688180565468189798924483724696 1.0449647493669993411822971177865513 GT 1 -69264234157348497445558664519850234496.2034168430140890217524785228156760 0.8378804104091233226727483275862885 0.0424608500572027158408065289434597 1.0433886710944961485647330745127845 GT 1 -16684297278622782034982450705.6402596051634927847830706122130099 4.8016306379395035837587357553258729 0.0332160899312093240085114623384435 1.0337802727522079834187550650285613 LT 1 -1767454839793477875043183979629.4904409660347846138342434212258511 2.6299199475888165480859914755210688 0.0602840198052764848072023976917939 1.0621775981032290904584135812684448 GT 1 -74138344262205350820831072165643180308.1126083041785261375561167994263997 0.2686856037560144709195324197944110 0.0980361888823758033873727028526960 1.1031808804365389912960367779650713 GT 1 -16564618.6228271944310084401236817715324369 1.2560108006087713712257849272478805 0.0728886730148403462785801875734828 1.0756816267918455330193091469252729 GT 1 -5028758213942556159397803196871415552.3824597180649419943371865646299581 7.2505169514499790720860241162536844 0.0053030787476941118360619695488928 1.0053171899805584967077861614496161 LT 1 -169136464176860868.7163360854923908266057057915676506 0.7180139970742704082202651616720354 0.0501087298278472417800695854788913 1.0514077533880975427402448380178215 GT 1 -38526861307453847.9469392236203851305628856892832820 0.9783172561778144941500336409968607 0.0278495785750904156963295154510441 1.0282447319425723405205543590946533 GT 1 -1.7675753192081797721093785085786820 1.0635106673497221975154595098513058 0.0634971153991349003052022480544519 1.0656026769096088561642749783995581 GT 1 -11142513229095843815853971160.9266975294959543970313846280758331 1.0529308968732538812881871516237455 0.0548758192675361662625966406948775 1.0564389519391917851654461938687098 GT 1 -197550388948098225546083600922.8906426191257171417544757023090590 0.1946631058750894448067428837806969 0.0485030934180438758185802030770613 1.0497188433474277591322617987370750 GT 1 -8110204.2509932416947407412100762445356039 0.8419023312157885208539130305689242 0.0516900308746243137425569591343400 1.0530738585194560563938714346848471 GT 1 -92533960123490924389289059914399.7876531531102196985566997400250716 0.9131053393310266692535975306609285 0.0310389064390384970524006369529693 1.0315308190213275093871959890503672 GT 1 -10185.5581189592295548438321625413181295 2.5758715000626200395228740175601255 0.0910071592061771376555419218553138 1.0999703639087107252952388258602826 LT 2 -102764193530377055162057.3272009828584695335006639178801067 0.6998204406812456541011125428419004 0.0929166978577687341126591570784353 1.0975209894876384913860076114008467 GT 1 -581163145388841222591.5860482049291865550986594244655688 1.5872812410094432018691602641675779 0.0258380384565560809267419931683401 1.0261777042112110273821242148401415 GT 1 -4175793656563775369821866144886350880422.8166519726247158055273635447000627 0.4141233824986998068175035012280710 0.0158525851374607290896155418173542 1.0159795812983844525795751192042137 GT 1 -12007585312600872159452294467078.8950876599060996432977636590079943 0.1321273054456136027908715771068407 0.0930332909302699625109862170795081 1.0976495339841420674322572121261569 GT 1 -3110853401446114237802488153774734.4958142688955071503223775712151786 4.1120895329483992968407690137556313 0.0799248089521458704175685948592931 1.0832998828788750477560664950104293 LT 1 -16641537287120207796.3578368111215205347746919623386358 0.8780157375882638463396984403460945 0.0033546329579882524920329959372967 1.0033602723547325113994329386785566 GT 1 -13706732455960397409198.3917571781708550289420503094298366 0.4695678869147840663769984259522551 0.0379435871874948847459479681671029 1.0386821888585169364996788834415175 GT 1 -37135.4189735052465086546633413133486491 0.3680597419050808127461231873231924 0.0679333908640507053976255280981141 1.0703509978203468009665752217494691 GT 1 -3.8609157722440499845632077180623928 0.8101219392411780279855991212701351 0.0922961835263957547278392383012263 1.0968371469044624182738945454842922 GT 1 -4163856196730140625.2783973250455661262114461215434115 0.1769767045074308728362019736103271 0.0255299971488860151310676415789827 1.0258615426005379606188703382575805 GT 1 -1608305684074488694202.9118047051230554554786260745527004 1.9460039520174289212361134626914439 0.0982302666313784883245507229070363 1.1033960760238749558758218928821689 GT 1 -725142.6732684641004140398789512916888943 1.2899796589896609729459652679839222 0.0724331231988632933535813961623102 1.0751903827321394455071826730277664 GT 1 -4390741631.7297060323314753137471077066057608 5.2203029473292026709148866900417320 0.0041765482535375929262178982456693 1.0041852943921359437799113638656803 GT 1 -25771309271530117677818.8280107065905607542962311748752759 2.9000475323181845312715930054050412 0.0035378378395212984053208810109558 1.0035441107872954821207702885353272 GT 1 -59562420815234188789691497200669.8887870821862006265124251267074237 0.5852893122394526776761247887649718 0.0978849098189682089456018031162127 1.1030131726232573561651923116332465 GT 1 -196075725899115845750030259764.4871140218188276832695411911201884 0.8528722347880866134035720063845802 0.0074625213215568816314323172616053 1.0074905052411159904656778628168987 GT 1 -400.2660377195927729017918847778542894 0.3180887477995774123571292738399083 0.0334655349485197563975118174673538 1.0340383213197948993821293427904787 GT 1 -1114051053334640619955044681040926454083.9820749379702383829605996421238954 0.0251641150686192328270793089883737 0.0082080679643935873864861542720047 1.0082419396288668899713663967441204 GT 1 -20691941.5791459523213833487754569391948254 0.0025862597883935378190590232804425 0.0498334481590071482183381905441511 1.0511179920265464300449377868271537 GT 1 -5247555293467985693315078202498672977893.9342591428367867345871892002552246 0.4166448595385931463509246013886656 0.0167259935550222607755797894960454 1.0168674525652916229498804576130801 GT 1 -189665455294097435687483020553996454.4422293150896712521724005087268940 1.3750665452294359186470327960840597 0.0292366719831466364849014197381178 1.0296725808567265934499711385474756 GT 1 -1443481887.8691826871596655561271455239796321 0.1129686477630878488189277040945764 0.0154711628495904591829152674136763 1.0155920901684916664752554470293396 GT 1 -3595921053763.9588719886858806209340828599830104 2.1896485974563568470929289442525916 0.0641929696745075919730770027548654 1.0663459879414676030045867005834878 GT 1 -14223421926619060826164438214.9985200796463210525814492037090463 0.6152615271296804051422920513473727 0.0970008020623074159505215063155979 1.1020336137851556408249491500079781 GT 1 -9.9316171930260762372637354174165791 0.5102300567582212201603668733656281 0.0236111644557681018950411755176778 1.0238943748340791668883259186723782 GT 1 -69900698052485146882246846.5395552132108168166736509679607581 0.4522664201439121618347404982134900 0.0699630135293572312056139005099230 1.0725309232271161516940224673274302 GT 1 -1220519663415522248454142310410236.4283042409411272325465620405070565 0.4830545346548062291028237318424483 0.0131273560873740226845620398265252 1.0132142813973720121674168558923878 GT 1 -84683678429936535.3400875303943937751644391560951325 0.4928611423391509773932319132372348 0.0024640192727203356791574550369312 1.0024670599641169470512145762814278 GT 1 -903177187694009944751271.2770621514956093009982449941008176 1.1971057062306038138757001798031735 0.0021581843749587243987995583877866 1.0021605166110580833253818837065202 GT 1 -355.2283479811477117304962770668134818 0.7483341523007857044587058162323985 0.0049398496885805086204048143013509 1.0049520910764365668850773069300405 GT 1 -379938349082717009053.9035162910036965986707157565427817 0.0651711745438853014482720614028689 0.0268424681926854330685766032854025 1.0272093067074994128252621286637464 GT 1 -13810730110160258316992.3048591064957139917327337203829089 0.8885757338545440128572609583352041 0.0686656746602739197054034770871770 1.0711369626874579798862868129769808 GT 1 -240443477823333583573.2270160387382697512115714020961644 1.0592046709652761910804010157669502 0.0319526901272741151414789837735578 1.0324743190643863943754591639191707 GT 1 -28581799539701797731583970970362460766.7078271635352705863108749335686724 0.1512755876343174338499774289660247 0.0735727339691904318792699483373632 1.0764197403525608258579108661384559 GT 1 -216011537548.6606928883897389207683654017066843 0.4589920518674030023370668666690080 0.0830443726435413989923500459836093 1.0866961968207084913148099607565804 GT 1 -122949767952281611077938.1103222456695888449846685388526396 0.4488825698252718262389699739114160 0.0362070978448502719035447178709356 1.0368788392405095992404126587356832 GT 1 -65684717776794629.5689538445185537627143665736608557 1.3411044364887688417532464027474013 0.0940724186836105844270563697101400 1.0987959084557819932144595795902002 GT 1 -25.0685929955601558704252538162826331 0.4995477552472279227473725768966691 0.0738636651979735840307105638107346 1.0767338253653982193807510252043760 GT 1 -2666412590.0642363093781944927977178350304215 1.1254323564717212830972349001635670 0.0338298019199520941844292826867173 1.0344152718003255328510232433105716 GT 1 -1153645932020528720157.4891631060460246498103106743359385 0.8491450203168299778153667126971739 0.0755724500962970145461451820005915 1.0785805980146503611332177034784924 GT 1 -4885065810208069791833493076.9682180804362169399113627350255038 1.7029721555471007918828706836462543 0.0861601368596774219513854398122871 1.0900999273197383935258729499449136 GT 1 -28591969835735086117060023522233699.1909395218510311585500622864681608 0.4690955386101176526580613336684390 0.0075025717600148594719676527293609 1.0075308576181183543902848545450188 GT 1 -1023331230.4536529331318886654029606351314224 0.4799059980789936862513929210835586 0.0128718727982202598491392919528500 1.0129554331797636357299853396935191 GT 1 -184959.5339419354791419928526677347031361 0.3415610134252110322308842649837351 0.0513760276563898861326668137218500 1.0527427945701661334109705629295719 GT 1 -1093771795490284037054512055901664.5156895347895573530202587137782176 0.5536812130172110126133491501807617 0.0029228085432238704512501189889383 1.0029270882894008430312098133535202 GT 1 -10633738884541331776631678896632085.0858326740719996726348032000553598 0.0145700609133038078157962090892844 0.0130613114611632875311748537989473 1.0131473604863917757782617852621109 GT 1 -2890198710075351193625458569191901272296268.6858012299626782068261067822630260 1.2393145823109497057015251250762885 0.0916379937221120190387457253589145 1.0961122945066513417679022436229966 GT 1 -711788122011096932697638475538403.7843202631473541852249566426968224 2.0659582404086486970343578220834438 0.0620921877986597055770483038243803 1.0641036160410743299021720629280610 GT 1 -74358062648598821817381426857388.1616866708355500124909266393908442 0.0627852523440379208392944504623196 0.0739036553732490730718071451764170 1.0767770058747649319312987198478635 GT 1 -43388445998792091266418278419101.8472518354673705935134901534307320 0.4400253873702344744543304441790994 0.0817899394327233863664500654388156 1.0853290903905385539348922179165095 GT 1 -102198426.7000786982158134414353890514464612 0.5098521359006841510354557041012638 0.0418284174694927810371799029130813 1.0427284121107520347337757548943598 GT 1 -39031.1807531302599995960704691861983957 0.2262750283753964525815803819915493 0.0158886726126785798257290775350754 1.0160162507407166572506243868545041 GT 1 -12682184346258070098870815157135.6771501088603402457325910692423707 1.2798475726904430702632293278448025 0.0123005181599074171191804923040729 1.0123767956808359616001768639399998 GT 1 -28026012980634692851514817420.6491659711943075466148453929183137 1.8309317012735997221989882350254975 0.0192185488341170036645115542195965 1.0194056259224540323468120886822241 GT 1 -158091863211145612965216778266493164.5048196326496775093225320764685490 0.0114589693317733720852095852853263 0.0705851511519494385343713799243995 1.0732000856479868788622807125913078 GT 1 -61906433484116306885949919440721.5405479379316321647687297920738100 0.0157694923748556250330347893857302 0.0265587929880661573917985886336563 1.0269178494071628610771915229098345 GT 1 -23859521105973.6712301793230884013025942985405075 0.0059247062887819864217180857189400 0.0025210208314406811485479524107690 1.0025242039553969250233385792480732 GT 1 -5493873492890597779710849657.2121269505324509733096496803126183 0.4160133028025148438580098917423475 0.0828541008920443740285048954851276 1.0864887145745687230425335929106823 GT 1 -524016849204951277.3041892361300712236358866621486585 0.2395359403291408491839543449993690 0.0251878247979381121451230022576861 1.0255104673603137380918900567105997 GT 1 -438571524708910995.1347709764479917421156331516791127 0.0670066465286547694120746874451815 0.0525940464941142469536370177469503 1.0540276044654856691701765255308873 GT 1 -564541781.9175607487557626366460372631669692 0.9542530007302703558584751256346283 0.0473729026233348371873658654002497 1.0485317453169616388802651107053380 GT 1 -186740093462911559490763.3892469858042026375560121479598157 0.2203261797334847146237643263290866 0.0126629450455771916535169930921588 1.0127438034632095226645172715220128 GT 1 -35809811479223400697.6958701083639514529554082950252202 0.1387910392992951013727594933474169 0.0689306644481616444601402276012653 1.0714215302011935141699839986443081 GT 1 -194730367353684627206583432303799662143906.4285836344234744740433839604093516 0.0156174893594879232090859405716639 0.0749914939769377394167295543782305 1.0779523458113842048426005970813200 GT 1 -234971713729975444.7023888765015272421784397901800919 0.5834202150393040734262373003440255 0.0095358294319671828106710708164149 1.0095815865739839273795061366407088 GT 1 -17471792036786349377463897341421160.7579740604733199359961571077209785 0.8299108005734843487973104588299817 0.0267607464648766865245979093527328 1.0271253343864678718635822002267865 GT 1 -42890954452208740949925846651792869.8474412363296435376345443724594440 0.6351646074495622329801458844138272 0.0406189514999359701406140937782857 1.0414669436009752378111971136648567 GT 1 -4245030371731756209609515501.2715168178808308367551855535406484 1.1121799589650045303363574192214788 0.0344875185321322207534170601601213 1.0350962497317019410720855703480614 GT 1 -39059870.8445206703354900575288126010599703 0.3976321702557057239973600901460365 0.0943780194910407445135992399436966 1.0991333000643463083178900712450518 GT 1 -1095756142943887109440174609228494769.1379069211162342472894246702386007 0.0869576317182105361979836187393092 0.0830509000392619530143006825065831 1.0867033153973971838150237142804311 GT 1 -199694000394459434150465806077425.2796355623137393474968442317525553 0.5763740345707684442045751704383822 0.0803734804644365971740497420753696 1.0837876483884737989674736664173474 GT 1 -2028801287714011011120576852354227897830.9213090835442937220942615811859958 0.4186911195701959840722000918101605 0.0629756718159770808772152381619434 1.0650460331703947031474094562398059 GT 1 -673345131.2074286682870422264596425593585265 0.9239283225130485438482161955144218 0.0692594409536163953013913149713450 1.0717747096636361236164180710073455 GT 1 -1623702148803429945642130.5085506246218923328977987180683067 1.4368862020072728308646552513705068 0.0155732834890711130232741938629030 1.0156958209402526906432890990449210 GT 1 -11320577.2111123514208992379903102189942312 0.7097292111298639235816935843063125 0.0605418292793230018035712813802504 1.0624519840355158020280429284945846 GT 1 -21975002920.7303110626541447634879251814486781 0.0504213044512443863751678682908991 0.0355676583897186881915590256637658 1.0362155977642979293960314100563094 GT 1 -46795524473804378569008341628.5171612064654347871170994429058518 0.3434493495829967725687039295547092 0.0249853899793517752865638558432854 1.0253028234599961385640267971956295 GT 1 -36744237225000686828895188111909218699.9208272003530105728766680960891481 0.1843361073718789688231362215221059 0.0937550352221665346916534652461903 1.0984456289359059859633915813743539 GT 1 -4821674756959869.7519207139862899260026781779110201 1.4038885124078448190538465934350429 0.0571732018577220215847985934086483 1.0588726843293357305449944370207582 GT 1 -20281262889513490103611925546449894.3643945766919012689757225848538901 1.5213596383044700152090171856694996 0.0500923292176671386429005642396495 1.0513904877608493554538840727043289 GT 1 -57842652197309826129686.2687655582484525324784233187141356 0.8391732065019993461483471468084850 0.0695250623332709896040609326083185 1.0720601375272306467113158455809747 GT 1 -614613690888883973818751968108.7201525434937161181808194756611144 0.2689879968771938303115139725259143 0.0258839783646325397648841807956054 1.0262248637115303991865732446956644 GT 1 -590876836365.9603232430079702778298868050354161 0.0358588495605967814723141678074355 0.0456897227263686858960199051441420 1.0467664221800213735862621924403677 GT 1 -9.8536053463068440496866232768908440 0.5488962103239336016830757278088324 0.0782856298267441316397396336253716 1.0815198971598704069862162408640753 GT 1 -1375.6149336614239766052164734456815012 0.1659240483565190862053482023665756 0.0430923420286276426567124599006148 1.0440483833327443601840515811712009 GT 1 -464052711053015.7508855658805273358160307592018113 3.8229236207704212412684213453205325 0.0420808744226571904816718571405944 1.0429919246402549538984735164039817 LT 1 -557811855243514144.8912654865215194827839176524719139 0.4331604839109156171828253337266030 0.0698017507668873575667051418032438 1.0723575443341904600421422100270415 GT 1 -322770606720859811523657202838804192.6330362147624587138511021945783377 0.9427672439260391539243359577989486 0.0986577046314559883930233718040677 1.1038701874504218098625825660740891 GT 1 -2526351462229619893167534217.5854640873818439927839574668067944 1.6827470604645313541097817921708310 0.0959672770293030466036558254290670 1.1008897212686568116806712488026168 GT 1 -33112813760043811922106281556593190081.4066721952531733421756836447650945 0.2955132400289118037507400476395817 0.0786489607320100398069269185193188 1.0819141652179776067934526183244742 GT 1 -795955374071252095298791.9434788566608965778816428713725882 3.3020876615567091233473696944593941 0.0114884889548842178202286811585199 1.0115549914770866345074296256701847 GT 1 -623492600106453312468899379066.7471805035814547928139664589889329 0.2769817854806465435597907577655918 0.0182568287299739601024851260510192 1.0184255412191779886032924044691066 GT 1 -829350702.6624985291719130272681432713118262 0.1142771103254792493669797910722739 0.0834384536010941788531563517917959 1.0871260602212392934807848381727609 GT 1 -28530029648337146920446.1092031634969679229924528979643773 0.0835457074424048952239443220987023 0.0996901448595451262197737538998578 1.1050162914203932739045574495081772 GT 1 -50881343632344390280553541.5030891838282754112033763079126698 0.2491452229083300033639553607360854 0.0567280372518282322797518527516392 1.0584006362866871753210796052671591 GT 1 -27685180190923371.0852021064308925115645208539072104 0.2791496317414259712841872244603741 0.0010888124357918882027693433055142 1.0010894056226706470250565125709602 GT 1 -711320977648567510790497438033617735588.9332318354033716421306031589016792 2.6248818090425266706699934720423815 0.0042639748241923809119754483090060 1.0042730914895603754840697218838831 GT 1 -18467874857160374751280522660.7161106893340572499719623732245367 0.9586819755627008022821370909619688 0.0938620793819876996198534017829145 1.0985637542623016345377017491500572 GT 1 -5419281376529760850901.1384287762532611056804796175974102 1.0116552341891637193076068194367205 0.0626797335086336991436231052970483 1.0647302552599259238478422668929933 GT 1 -181495256723069221507320.4016282474514298751031000524549699 0.0186093677076677704755413747419926 0.0991191492808228059217579622906863 1.1043822712736178862748312943322538 GT 1 -24385158207973140.8058582671175115227488567384332951 0.1394313338817179139056184883417583 0.0302205821434582117140288001358888 1.0306866376165868873404161197572435 GT 1 -1.1428068031901300609343198263187921 1.3241778192379236662187834919038317 0.0051877123139835726448858927023669 1.0052012152131922164010365204438898 GT 1 -4889.9435127040961338236068060796674252 0.1747987712005860645844491363961307 0.0300209806494975886032218792921330 1.0304808372541948477066748074250083 GT 1 -12005536539201570752681094432787998508077432.8674244740817651151747209010482414 0.0606040245599021323312151423523009 0.0868545619819513672630326664458791 1.0908601142301367358833766240587839 GT 1 -28014595568693351473883928.2809206583278041345978961540732951 0.2411405790220083212520751773131570 0.0470720914420596239929025938873053 1.0482160250330159158496992090536910 GT 1 -5897468026396.0516485998840476662951517779074961 0.1718350489244433238842647821721744 0.0501689993111411792248763632786768 1.0514712042242946063745867473008414 GT 1 -149385516190.3858829987202154155105285768713595 0.1838557457618607484900380847480158 0.0627400069581193441137728857244087 1.0647945613350591625677413277427471 GT 1 -25330850184947609.9863476801097766641561532131552661 0.4671675805423077726769240229946820 0.0243687407295096144972199347722596 1.0246705720810126667702145828964079 GT 1 -17010985448083841752554469130499.4119870757956145624055738417793614 0.3313578779760790106810151011474272 0.0381275089244274756537523737360942 1.0388733827608707872996343268933331 GT 1 -83408465316378024080697332325864.1522141745217634141642324865804984 0.9974292837507575613907628616378693 0.0081247954503513206942100411524852 1.0081579814762561349296541831379991 GT 1 -532978040547078.8274015854706994011597205920255847 1.5737702001947734905707984880418163 0.0274127468296753662056457184829854 1.0277954870305532560657876118095090 GT 1 -69103849493445750945264189.0245656166704020428981118535706062 0.1828190123720323648247761084075720 0.0785934053507157848596899463859565 1.0818538693002849598829614261441534 GT 1 -3451.1020536721829184160823998367219521 0.4800106294291243334173222092425420 0.0724954246331995842052129408730005 1.0752575515026866990975809940132538 GT 1 -22.3677099421771748932812563947047136 0.0319908023024704967383377844669286 0.0119148961414550592258572014961520 1.0119864474352426862360095478201292 GT 1 -143894048670.9068109611218868852727960965472299 1.0100290619281049584475160375290456 0.0018755077917321754977421085970903 1.0018772687586198151810734478264546 GT 1 -327585955666432886023338166744.7027435739132610702941914194713082 0.4998358791356490890707041652125495 0.0187400007860999772437970770335764 1.0189178196557578800605317047805842 GT 1 -56.7837147163724658268583289775259808 0.4975044220821836421327135652427444 0.0161154487413129051667573498896958 1.0162467147697308757015796024441675 GT 1 -1495484117122450645520520914738734296263.3402830224595463993594115747362138 0.7280006362596703297039233395812395 0.0317658884678165949283148419752220 1.0322813701903518306048414807527458 GT 1 -299340.6296761758778419375595364729120984 1.3181075185359985815349601658843838 0.0152140279943756791805007293610660 1.0153309487242893044444672952734656 GT 1 -94258066749016710533669007890678054967279.9037538255240841720212044440996378 0.1002911636531935930153382327493274 0.0956764278080482125859439037546982 1.1005680487923414086521769742666956 GT 1 -19864084940760513319130489733915.0092384377951019292885166355594222 1.3193617058262308006983994883090909 0.0467547620501516994427287484987111 1.0478830758511215473915847007314415 GT 1 -6200800080632450787652534258533533510.8839728399351731602832866053113357 0.0772024451413289223434098930740233 0.0504513491262779017509054232032018 1.0517685116288297877367752918251305 GT 1 -602971187172997010870088828578541017129.1168010126968526592613778102228984 1.4597924295875227863132746300107435 0.0750649776845343329694213646647449 1.0780317900825304051592707370710042 GT 1 -3561127971875168.8385460292417207216429316472281287 1.8322433599116549415416491446741795 0.0423063586105826037221738657600015 1.0432273419363338868296455777719463 GT 1 -31721290991821506264420.1775763220062225152418652730226180 0.3397910582630417510350068834281263 0.0785234566611831246267776745606206 1.0817779570645882189326166596868137 GT 1 -22830206784023230266661281923173231.8500436304840019984408820589556483 1.8514661246154478814067301615547175 0.0715570905036414701416260380643853 1.0742463868903673181487019822104022 GT 1 -455453.0286532502231050157044092327365077 2.2667432696537327011057662404830399 0.0431357770827655915904733628302419 1.0440937754242252309602131140427996 GT 1 -57626365.3890029426336353072666358853432643 0.0906159331739259252586949658077135 0.0918580173910749764224778190708701 1.0963545440930932595940377567421513 GT 1 -5169276438551.2892668004861887011486222522472794 0.0274425265971877653400306743233734 0.0082141368060628182240007610073640 1.0082480587149787079103408950428294 GT 1 -1176748355163094378970700290344.1938736210369218708755049741012048 1.2022386228047360142737299987520641 0.0304858508854216297986758900817637 1.0309602101670617109003404322011470 GT 1 -129432151670849746950832708.8006121086534619539225034108171076 0.7094195754971356879636180339381334 0.0300345766247787962051341850340619 1.0304948541249690716810462765850316 GT 1 -362731229279099944939156285964.8742250016229410307974961519702495 0.0094083943147430021401402832480634 0.0419865634876947709829318712705148 1.0428934755226766910265330214948241 GT 1 -3335909587580200189151655125552125536.1572324420428006710645709999754998 0.1362356442566950245566287935007715 0.0123604596959984023083070451851338 1.0124374855527388829999500903195385 GT 1 -15967739640731263.3890437345474425835187532660667107 0.6183125486442153472780814710905996 0.0829459579368994256991678541196025 1.0865888749146385173790709480875949 GT 1 -367868352237598480572543421444464.5702197360057494815898690530914334 1.0157971543227199685795179710736606 0.0680928486302622491630099656542736 1.0705220922530895361758852018283266 GT 1 -6419338786207.2202756371633837070056527618707240 5.3582760400302210995013454643667880 0.0886480902980748138287128800198448 1.0928261668485026135513002038925488 LT 1 -363670407360841910137181585990553832082.8486156855453421076160002470824714 2.3838830684664682948729715642724705 0.0256051989677030881174097408436276 1.0259387175987261847769669243242957 GT 1 -4322274097754502011.3528383954695413006046761826374140 0.2226944906854291514345790420010640 0.0790355896175255857488159162359130 1.0823338858377713403364914970102171 GT 1 -332462074331852.9134736361410626507787583138655027 1.6064857525321665896140559817302723 0.0678542915475659710635297999455138 1.0702661369750601129957601259822242 GT 1 -3975844.4417111479974642379625616374646553 0.8927648918606436449594260918248989 0.0297484134513079558321299487536768 1.0301998735386922113702169891209916 GT 1 -2836243246371305.6017843074506605685943834174352743 0.6319323048221861981399190577989727 0.0651922433160953897832566415845632 1.0674143786583375687473655491287851 GT 1 -2235835750584787300054228688460.6732264065563968139763701601444142 2.4693387917546588695055575743567135 0.0791649315160923934330769217572629 1.0858753456725971532846433102801093 GT 2 -205135242.4841258587240237549416269420257075 2.2419491694522347154535084271177548 0.0521955505376388960981263300495133 1.0536070749435667267056367014355361 GT 1 -536622578976463534695954859215252.2519661114171479382174445524527277 0.7839702608430468401651892497955902 0.0926955915246138909871576052501467 1.0972772639234104416612208522172805 GT 1 -1838871013541430271707847982.1794147317283638356983783807132861 0.1403798159000899817143203402085428 0.0404069848619642760183508939380481 1.0412460269738563628089794403372277 GT 1 -27358885816724.9474638071425556428771762610681520 2.7524811201945762672279409329718871 0.0947665998752180825746174905458982 1.0995624678425104265147983671778669 LT 1 -151981401024566968736681925049745.3527757749387764826569925106225627 0.0019986170005403508211764502669560 0.0854056160823454044924817006234079 1.0892746082563105954272519594893009 GT 1 -147149373269749.6290178125452049109292239544351588 2.6697316608498579975082489205752150 0.0619622802050941646285595097042442 1.0639651177834677165450164186345939 GT 1 -237.6027641547159444415607106668631220 1.6687221746132324932873524651391516 0.0756698635616894999508459971977486 1.0786859806358584239227571481650891 GT 1 -282373.7693559397720452318911105214627922 0.9298719690806408892883380685883951 0.0746232024102827541419968296345741 1.0775542756680478946905240797013405 GT 1 -248430950745630361.8087089275213624172532649162949846 1.2862044232098658845596001131023021 0.0164261052755545763678905358033100 1.0165625095327233483357772865957948 GT 1 -352561427578260323908077590426314290.1386726535945733756078991569567521 0.3946546564332563539476803006324280 0.0330376222001263657080058515396991 1.0335956903871797654886951349442145 GT 1 -1865610056775273455022132018036133178.9304893074717668289492826178257789 1.7730666571192564410313741880703703 0.0693801085555236987723470415552435 1.0719043649402855466944653930649638 GT 1 -20868647061780673934899254054966952099015237.8468348309715705082904054168673143 1.0578650465452413660633492714287457 0.0152721297028418675046077093177959 1.0153899497906794852420138208985073 GT 1 -47714524966558318566832952750541725353.4831303672068487545733594397527841 0.4647029661772702080356435363167218 0.0591855263949658017000537254109220 1.0610093175970201439212319738497424 GT 1 -6538291482829525668093284003666348.9198200713658928055238467621703783 0.4432463983746265040657114586964857 0.0082567675848051861402775930130302 1.0082910434928106058156792179217540 GT 1 -10500111450654948.7504358060009749940464513501262555 0.5008715468544588770271482366133773 0.0135963310313234397031913173169524 1.0136896075843006519263787352741519 GT 1 -2329388356265954158360025594.7757757002427860143124379705363400 1.4267885086820594100546011211730813 0.0490979191522114972317511845929524 1.0503441861461593012262406768432190 GT 1 -885592189.6276381797759066233334828532344234 2.2806114081172209227976156462297810 0.0988807465447819756770315180476117 1.1095379183086854659761006728433106 GT 2 -598.4892648482301118922183798325547635 1.1972404237545182041497510042108399 0.0732906161331358785293974762628189 1.0761152643299754170859972756840528 GT 1 -19875689971230575.5149610679192685474075327222760740 0.0580359689566236697676850308101705 0.0138718548943597167826487649370926 1.0139689682139870780826210880191656 GT 1 -534743589125.9054626838151797668304666747005727 1.3600408655799660773024872191012584 0.0217738184125786157479281898497253 1.0220143661692011536265962421321470 GT 1 -152467534.3634115992678671799171163520652950 0.3383619726183242151283777792054902 0.0743314943947470942348543445626105 1.0772390937354965852601851629119483 GT 1 -49388048945626501093979.5907998415921629130985666868421335 2.4760321041809478956302988113438645 0.0171224502286352644876414641430269 1.0172707344768337130540071315705035 GT 1 -122221288300994153413170740875212837.9890890649713350683139966428169070 3.8773404473692589075226844220069617 0.0819775543971622522392119133264342 1.0855334381128028207312249295818642 LT 1 -986219582249369819697600974.6438957573334728533250203786032268 1.5497355138298082203979631236220508 0.0660884465370596628488107086557935 1.0683735417437795448164321583186060 GT 1 -5561824722895471300804395042029221.6330466266382931870916547737171126 0.7675894740250275460007107202696002 0.0108706875919969742520108527321645 1.0109302052412265959350740353677338 GT 1 -79606490310735477613415967149052717.1505650801480394527034097496470446 4.2806835624374192459022482785864868 0.0576348804628465593056246121306221 1.0593624791454757485406632744207630 LT 1 -7978381681809293605661804707658627542624.1309346787508020736837588767585690 1.9141172951185109349538068733737397 0.0674795553605120068636494691645608 1.0698642031581379783132118993085664 GT 1 -1720723838756525444.1194356218234271851085257025258114 0.0291057797262826505771477104238579 0.0102731097881862048242717205708556 1.0103262423851235997365346020049237 GT 1 -64965.7866347465132615801696779705170088 0.2624823028862104159208288007520804 0.0149058439989172021826226820686560 1.0150180525296516184463882435281889 GT 1 -2916990.7566465202342054417182093387450664 1.1884976958179691257565698553289719 0.0839091534277482820221690699373600 1.0876397417451438185684764214431422 GT 1 -44048008281600137627803041251.5586462737161776652651205558736754 2.4448972257693888255487256229154712 0.0530506582269394979306128746357295 1.0545096806027405473788854886731227 GT 1 -1363380344300.4452742265193140626087307178264825 0.4450344325136823281714344747968631 0.0105780909237327904517365675129263 1.0106344366331460929190808279678472 GT 1 -16172750976166048784024158075025.1247418891452704162702498434173715 0.3335973098206235614163465764424329 0.0879441080770448415820298552624260 1.0920540057824144465135133964152946 GT 1 -9517425132990877315698809607490827181.3503496893495837652268080088250442 1.1326412282096504525377882066879223 0.0475172437023623039422471114538867 1.0486832757696809639565174600308743 GT 1 -68312042625088614702138359103024313987707.4428735832983466054994445191116543 0.7048016178650785975817837991739137 0.0142999905280591471174095020728293 1.0144032207013891859789102081618467 GT 1 -2900834955198057255591.0607087510748677770710884599645039 0.0830446924063998604424304023330465 0.0735906859694098555366086112762696 1.0764391182085608304669526428446547 GT 1 -205264871410654088385698315551549321150996.7547470615520019340325328277320250 0.0805321065658750386817259955528672 0.0826645056259601122838267570666541 1.0862820128141333747736614076964989 GT 1 -29582408600267944459067159836.0366157902264593240912459089682825 0.3808308957370328959814215951099125 0.0123558551992697691557900448221954 1.0124328234408980743145153290963499 GT 1 -313631.2583801885648046740469381037996796 0.2630323025066136190969354358546062 0.0457140629760052941297907333107376 1.0467919280984085009861336967893655 GT 1 -27461165073881.9252334839499292018860260185424624 2.2598151785541673949423548656176319 0.0659952579420270515256537459207280 1.0682737636163191423233796739163056 GT 1 -97273.6257108036546359697883439835903233 0.2567810812815711644873831383681065 0.0380901429651336167653254485239100 1.0388345364128571889293447887117473 GT 1 -632656044202.9054245235671480736895864760233758 1.5996234803351270273130038255590165 0.0461767090463570509325137928435600 1.0472768542993138570858881869508640 GT 1 -683965657638087689933289.8421549918585448915418562927981032 0.2170548217191248481495582178782711 0.0853167236126663450844598552213784 1.0891774196537512561038850518433402 GT 1 -7945662357.5259831816875017543221375772606878 0.0697352024642888456175342577393367 0.0550882063359664872519062015559283 1.0566636958829065152652040606581169 GT 1 -1.2325000197257857961409243977067044 0.7599819463442195181770305756827411 0.0441164819471019567169338407939240 1.0451192163951037072953214353742973 GT 1 -280580379703812665289.1149622569282642317982864881014062 0.4648611119068161711099788886390882 0.0239065962611426064212487066365106 1.0241969965959422773769826586577413 GT 1 -1464244.5437857843611177778957288378231342 2.2886525911025346003679384824645469 0.0037006899599438235758713387527028 1.0037075544538425145761391933421721 GT 1 -3.1142027751071602676427986785729817 1.5358261855819348577753408110757560 0.0457163942246719221035881262176896 1.0467943710260717077054984215715780 GT 1 -1319975073805298826081913953193313713789768.3679282022169080582968532738332978 0.3998976784707473566812916287141138 0.0293529793365902987890557875224599 1.0297923982396532584594365480798614 GT 1 -674244516110442945840154907961963924.3336821970010000402891498490439883 0.0651732624057964944330705229101027 0.0679613450144815108244343002983917 1.0703809898502722948538696608782312 GT 1 -19311086735599824414664284485031.9815270341544947281472296994165461 0.5732343465492979182372388881674900 0.0773895962058491648189622850057105 1.0805482313187555683527123684445291 GT 1 -615607459893312003539387946436699393.9236265551180602971990073592475491 1.2781490551015600376902806050736536 0.0074301641598295527751481211167235 1.0074579053292688658919123724937423 GT 1 -52437520550743185034934884.7278985204374285944082640062811526 0.6548297695690199098103843051884419 0.0924849549038619872223139708913258 1.0970451343622210830421332592303179 GT 1 -398455.6491234040863915159368452980236374 0.1413263622042547502982895182901882 0.0203416885083853302695112592454041 1.0205514298574074403853277240540836 GT 1 -1454737470777002873.9918403725680193299841253421836681 0.0654415496960231593199832972627396 0.0368197599951334452812493220228007 1.0375147195831284516985314025803339 GT 1 -8270561520213199347032825662826691713858466.3670224141132732487602911385413149 1.0510438309237399278112745211393564 0.0267391938290082198074166331147318 1.0271031893721259750056065555459559 GT 1 -40510195393.5828406543305024146409397461816696 0.0909617475262745629560462641778742 0.0885905965799550704801952250371274 1.0927630826501219305995527881987056 GT 1 -30170034085798518895115711149438247590.0200265164251238989534197163639228 0.4006790991836244574679697129881746 0.0964206579405464582617039628081341 1.1013913564696181050652553182710174 GT 1 -151951792364868852857867.1818765297036470648741654271709034 0.6085406173506505327449061120562740 0.0259015212775805620464605054173025 1.0262428729327380995644868781100308 GT 1 -22051110683423250252577314.3446000795514591051571274806981416 0.2858153634020185701361355368125105 0.0366591058371619628327978736330128 1.0373479379626264933503373084309474 GT 1 -194669525332736616098926.4403504395495819170357627273206526 0.8451004744246334410000966919035980 0.0907151697091513346286713760742956 1.0950968892324426412684745697710772 GT 1 -66889530283521256.4715154079320906492548108838014669 0.1771218321897782814443384011250518 0.0183611109893389910410331139175673 1.0185317683886858780316636293140552 GT 1 -5165219219240581506543100489653742425761204.3061311446834979892463723778758749 1.1781604010030032085160972498695571 0.0877122664756770826983151878329648 1.0917998413811668585335480869606749 GT 1 -25505.3896385237235951033866433076094197 0.9832066575776636331736649724279434 0.0327338648421477749211803112650883 1.0332816040644512846656547965841974 GT 1 -178279439922929.4536505870524646886126662342988478 2.3680199182261555673496923354785157 0.0277159095874489557359073268361052 1.0281072431384616700011762455088727 GT 1 -11430860919534592784243069957992.0786276098928334933760162637270411 1.1361627270462573682257428765577556 0.0736420392084980538052571505251049 1.0764945523041422950068739591498421 GT 1 -495125034074622843869780628473.8922748260244893332763045167953406 0.9018165897588058459955601092876874 0.0466812939500874130357948062629708 1.0478060072583456633579826345884288 GT 1 -1697799019.4391867734210423026489346582230232 2.5216994425464442895905995635374640 0.0626163572180023978274762088611497 1.0646626432062656643569640683958249 GT 1 -3847142.5331489339954925660856548206316215 0.4218066181501882077860204762118699 0.0414164697091227619061156542461303 1.0422985734068329760685689071748980 GT 1 -1063346463030123800.7182117717367944167035854786328770 0.3920693741891080701514906476383303 0.0866970112720209454025610381412996 1.0906875928405217165412484833920652 GT 1 -42393963804807945438570194944.5905885730271040430602630537087977 0.1679582764453004307217525333907928 0.0297575339892190234110312961113355 1.0302092737611758669441397483657674 GT 1 -65317251707479986620076846107907.0904282655452501151162105779302194 0.0206722722184803780169622878781065 0.0790916479796658216676886626742202 1.0823947568852202580662076734569273 GT 1 -440060039155335316732830750841648851.3227819512550865206740714569489868 0.9831859560817426272621132127714751 0.0924620845939182223826886009612816 1.0970199336540955779248925504047319 GT 1 -1053618.3252059566503187335707623260093681 0.5043568720103187125952677062193771 0.0478999726553422092968613611721951 1.0490851789701285802343525987781122 GT 1 -55662756045487077925119777.8624837209021453036634266657562754 0.3082488260493262224355526075692652 0.0705889403108871649362252226875558 1.0732041625859296188548759937515229 GT 1 -370182.7155318501489819204922642996439329 0.8338663147691666351261984831036275 0.0112091808623011788971097384377440 1.0112724771744661066347429362591205 GT 1 -21715118840985135530161816362713171897869.2390416915017603098492746970468051 1.7739187359403777674984147402338124 0.0967918373623566329808661598171330 1.1018022287233468625299324164992531 GT 1 -549980363073679185901.7494095876721341739079179521420357 1.8538238251616859165052266781308434 0.0530206950220537849340399310387726 1.0544780392788294126224766576650523 GT 1 -41147330329974964828180361608290749.5027044991493661702905353293300394 0.6179061214639990237128630748212327 0.0733981154981159393524422641612149 1.0762312722202152890792352467685846 GT 1 -222138657028872893263900983.8701973838086318615493876280273358 0.4475392403661537496509826607153868 0.0359622698431639084992355509996395 1.0366248459706662249008263333484460 GT 1 -6704686084848543804078655.0672855194510575017300017369375589 0.6091824419672126310409079042445131 0.0750159843477705593317005503859901 1.0779788219949874475968826551093556 GT 1 -2847172017264748948658279292950503747506339.2661797344866860851592312311521263 1.0504555749595604002584344105008550 0.0106983838196023365263671448985373 1.0107560229937288689900612414625379 GT 1 -422.3090915153279583097143428449316293 0.1634307854843101638828758403497799 0.0194208284724607663613283858187815 1.0196118905295033478815606236593901 GT 1 -4644037521819465788.9618747661220509084333348556525444 2.7972023755981832261779992890140383 0.0685081696695051809695333294977999 1.0734860779595494016429141847955317 LT 2 -14685392164833556955065631869.5248675234718412500935487868928067 2.2785718732202660587410040149734682 0.0813051169822645348111631686131557 1.0848012215278521218859192731823036 GT 1 -366023.2391515562597533102258849799965459 2.1507233158008106347196933062881636 0.0247685970976594231706313125684575 1.0250804998340035454030084235948183 GT 1 -4353090305246570952.8822239821761289086046151320853050 0.1546077301764946467878941326834158 0.0466721234843103414215481565218811 1.0477963877873215132386913338166972 GT 1 -258949.3418716345034747803857507796002259 0.9582662996110821838608627251077843 0.0169132959739609760574779115839883 1.0170579592393802510608901940450530 GT 1 -25558891123263865131666469466986100122.7191002862305212102288364324210919 1.8418409242343342575876259185956002 0.0524214725532483559587977570714148 1.0538454668880251745945254748506226 GT 1 -24499514739523906630239990387701842082332009.8682923281649746288261448875115330 0.7390847643368872927377623102786301 0.0521318106509500705780628134041848 1.0535398271652237199527863499381189 GT 1 -23015678.0802379208878696573623636442769104 2.7065398497348402772430319443093977 0.0336572048402473591934896986041235 1.0342366473038616842831516860162871 GT 1 -5296996494139844342390626617463190724277.2701320279364071877726365620245631 0.3505823317096218809232803075690668 0.0153620879518352937790689953235967 1.0154813073737780016412989296866367 GT 1 -2513947536470859518687295466683.6764610501006274108875142614711770 1.6257061689811790566896819189693148 0.0361088003010794358025985805768246 1.0367768541240047824868542704014005 GT 1 -986503415765313175629354089624759.5898992163771302342083707945177626 2.1885482580594328967170015832404829 0.0770940735791359940323042572568311 1.0802279712111632017208289234494881 GT 1 -367203.6872353804074752710798109046771673 0.6843732580571569088603979102183237 0.0717758666963778643045501749076983 1.0744820524014209335100822636173993 GT 1 -836964676012841648680242318252.3390363408584426730349137891425296 0.7378742277511885560419563330561309 0.0231637550339081006950694719639354 1.0234362510529036771218689956016795 GT 1 -89027906779249243369841.1423479603415497973725557663419469 1.2303597593280732038135591131251694 0.0372988397787845793983207890550633 1.0380122370247288089467773848411568 GT 1 -1071822445744365454017040598528.5757748860593532293083217823831697 0.4400640502644048901151082981087765 0.0497506635748928222001502676580051 1.0510308694291425316847009163448681 GT 1 -10737872.5573107939475117633511184839269856 0.1591230382903488034036694974120572 0.0522292282997759985072133655086722 1.0536426079699163650766575956849722 GT 1 -2122.6807118172888864578140061921837545 0.5040415822252015993851758196537818 0.0594046586224826635565561790783701 1.0612422623034447737995614321193496 GT 1 -12442575482579745163347762215.5863327075845091627665828699238554 0.4214984968057304714371360201293839 0.0066189543968269713941587035212074 1.0066409568179037464849737298447178 GT 1 -7263148631848781777106838743887839162730.5516064800276287647511825867382868 0.3272672160024396148928018484058418 0.0313634554340317652668404288864615 1.0318658204598534606666807310389252 GT 1 -1457110978693352663439573699109624.6182206213663601950244826026973688 1.1162016352412599360356466303780689 0.0967298597767157083581615330422767 1.1017336116958773514367212005044620 GT 1 -86127501170975533852766650258506378.9739334437756263653081747412723695 1.2030298477609575298857146611568803 0.0987473941868468102165158385687442 1.1039696990549493035817130974150983 GT 1 -15285572000969275303567585237.1402374987258986096443776896613826 3.4969726345467792804318241186248966 0.0091726283345109099750483526275484 1.0092149559254573283017964824529451 GT 1 -270687.6121043704014539042906573853110472 0.9955867624322249017675584767676321 0.0907571057346407949635081142713200 1.0951430100860657313388279588443224 GT 1 -8818.1523755831681846809671885150679545 0.6573130318512499063488024525168525 0.0107016655444520781505255293380582 1.0107593402129056812082552026632225 GT 1 -28465992437733192986383055919667.8635339421290509069525790716778855 0.5787565314681647274619484387864002 0.0685115380215654738657057724134217 1.0709714755137884797305956213035762 GT 1 -13873498857405888806235.8041754430148522404359644506611682 0.7946182211128570574644534112284663 0.0974110184978786341634082489821921 1.1024879991730312637234841724543615 GT 1 -33103486.8157358970576072602103435044588366 0.3262810447422768498931820638974657 0.0313518123298246439585872088463137 1.0318538004361434485171719014754821 GT 1 -125999618510887195782977.3081258371312741107435010789366886 0.1280598014584891284345445381776361 0.0847730233540134392888178545320775 1.0885831825607016564225315876385530 GT 1 -71376569240023762630208208305.3556995578547493836788875885020495 1.2745773259019277933484762848885643 0.0056008453965096840609757427356394 1.0056165889433881532516157615923631 GT 1 -861319207963620033788141023.1158713185507965870565981385443255 0.5079587384003819884011438390920138 0.0065772358015639083500918357452678 1.0065989611310992600382951967105289 GT 1 -84.3093913340677253646116402767955103 0.2205605198616842716423526071668517 0.0694880356737513013208488566263619 1.0720203450284388268420292166177844 GT 1 -13193171775036258792872514051.6640142128195053410934839234020405 0.0119161207861831216968691844089918 0.0220107913938719129491519567285238 1.0222566431532596493043439267849976 GT 1 -105320916949.1783101330094656511645691980895346 0.0569993379168968967021462185527504 0.0613724557766558590677398343225120 1.0633365299802315918362046020656171 GT 1 -894419580120211943003039757721852743824879.0260770640361892001940543525781975 0.0631735047966313875941459773290317 0.0086874743211590157280228953290747 1.0087254304144777693623244834481326 GT 1 -2.0482625232131534137645692730490618 0.0294046428571923206980852076784673 0.0607312020294440515399873472591984 1.0626535809188504085083460839766968 GT 1 -967793364669606560689.9507340320906331378164441657619219 0.6766801551948976355318387749328810 0.0773910085727408763585500179558489 1.0805497621577391271006511668144882 GT 1 -804.5436814578542505148482492647783816 2.5261201671344341908581081233291174 0.0037140442256570684470262548890051 1.0037209584129528783952843138890298 GT 1 -95895648277432662925863.9862567982329908548630240159441333 0.2140975389036839865907488685153104 0.0760488254356569593181891080526447 1.0790960501171889517059097401770978 GT 1 -6231746741554905995893263924585746501.4742153911191902477829904082180820 0.5557561169060506857859444140448432 0.0406485055301149657577406229255709 1.0414977493850222285757985018991525 GT 1 -20.2815789358033079540356777055012299 0.4799329783289568527483706106202051 0.0842720737554840428911763454012187 1.0880359821788261373396113770055303 GT 1 -3844574700.6750377073020846928890234410388745 0.0736096057157614646827456554103198 0.0814312362413661280436016381735464 1.0849385118503607916073367608929919 GT 1 -1220360480358911.8024834361540865241436125572782071 0.1044616496727210221605392005310567 0.0457790247104722202812047087638849 1.0468600040734787367969828324506940 GT 1 -45033355691997064.2980822123703644812032959034427690 0.0334854643934660500150631384953994 0.0509526288525994561651760018582939 1.0522965647082163088702590883805262 GT 1 -173423741837345288303944872452288.7587994665451973431708443233083147 0.7152615738510226162141582008600049 0.0886355128624239963728823479466965 1.0928123660886336336877412027091301 GT 1 -2406474637821881736848.8432377988001977517975324974917213 0.0640767445096807289834637165534307 0.0997827026591971364143619850794129 1.1051191033103511553917701739513374 GT 1 -641299535893242653697510351170293017757.9527532497454820889512211437357456 2.2929591957049995590177165521496374 0.0642944516195975720215091091663724 1.0664544370604787238187416972590305 GT 1 -15049972764719949883191.5254459919276685768775419429053931 1.1923477608471704506322387253683823 0.0246010344606852410356715229754998 1.0249086962569678802489396519557983 GT 1 -25.1371724023056725276050139700519141 0.8521679864335579061436457310357847 0.0880296515086755335234141727930015 1.0921478020555140908960202653733297 GT 1 -28.1046548895058468741643392780249884 4.3630355031109613550095349238253050 0.0038217836702164103531820237163199 1.0038291053459545116178914688487483 GT 1 -75615677640.7148002514774930138575348459661901 0.2955590603338275513232062850015560 0.0462133651839678887392940713128243 1.0473152857806352384737946103986627 GT 1 -45035521872815131476378317050990.4418492583890531694842910279908959 0.4680469544294636539613634146569044 0.0958406312896287329647806670230480 1.1007496413065067032576115175230645 GT 1 -224153815659555485710400.5887061165073231742509157635911790 0.5588101572268758994448174808101552 0.0779604945257568795045486307008284 1.0811672087575278289783379495146100 GT 1 -15.9318445240303786254510324396962644 1.5000537381596566420858874953321591 0.0584325163578702588788457903465983 1.0602092567226974766840204507883292 GT 1 -274657655107432.3453051065173398613685810857676065 0.8456725059458709402758226284155569 0.0754636876054476535762761656118000 1.0784629510522704514276713675189165 GT 1 -11124502264535767652011984027608406012328334.3760074396093183516983539399468225 0.1020870566513802320316508121132034 0.0663522260052545290298269592493966 1.0686560275165962447070041406828268 GT 1 -3238780290141313856675059564273961357211576.4821541313610983665831253575532866 2.1357559244318796078479380118041809 0.0883709544697284330663159943755562 1.0925221199744132953347170826214646 GT 1 -5924025512112651003.0723302797179356777963018612878283 0.2771491588097399959348237733083484 0.0585817177236300085690076195472292 1.0603677298973464856241173622802031 GT 1 -31227791591203060220647.2177063138327344634137134563437001 1.4157789450869658979546941795185344 0.0469042338845894530776679675206918 1.0480398912733627016289182357588691 GT 1 -6911446562613729123760.1733901815239622177975319671438489 0.8919329192436808642104731150708902 0.0799277101324764768347157578035483 1.0833030360830184087378066462114006 GT 1 -43188502698.7744334862682646168807560873587908 0.9139550739501613712278474993249468 0.0331369567117667513582527680444713 1.0336984240782818914334787212778859 GT 1 -177475858469231956534.5292486874595983341586970724830196 0.9088146994060031727074959896691887 0.0748057834648987891519049654003670 1.0777515996872991186541313514681856 GT 1 -7.5987084043923307173386641576456801 0.0062179995594632962106854238951029 0.0435331826456164465357572468061081 1.0445091824397401518816107947922598 GT 1 -850456118970692105039679679464445640303.7490951910211449396795913927673561 0.4458894928188540460688336090341846 0.0148687711938928271778645092642488 1.0149804194696833261637696227201686 GT 1 -470143969876397656171299227.2632328189759021979399204841501320 0.5877295509529584046237186459565189 0.0066965275611890204507568046120797 1.0067190499058570631385179281700874 GT 1 -277169972.2103462173747941373233497981071481 0.4467946986919666609579921909827785 0.0277222759802135863603011306307331 1.0281137910329203626070989365048850 GT 1 -160560275645008797374676402491084103114.9752811731927868594738616413791656 1.4858705375932631002857805972387451 0.0247633256802964856319339930921967 1.0250750945495751448169984433959390 GT 1 -13547592107382283024384193578.7682407783624132086462501508796979 0.7887401785953039826854120246409019 0.0292919966927795961869232402003581 1.0297295734156743516745420682375504 GT 1 -29101768249.2715137476131309458962899774888825 0.9217413327174462958270173557243706 0.0022476968167431824913166684307145 1.0022502266788527751228178047820017 GT 1 -4745646583621571527247335886880659074615270.2679836843054322209272693819728062 3.5465051831713020196725046641349157 0.0399026325865544102546210411508637 1.0407205752743548948832237123173038 LT 1 -15321752867952059831558906226687204420.8445962184368868985603294747929430 1.0376547161721402181480604399329224 0.0471757229225850230743381196055661 1.0483247815454404265736037460055424 GT 1 -14356687878171440.0778774629287619637298184316024656 0.6795341721604727483797255804820600 0.0764438099382527141756811698555569 1.0795236365140568379762289630922908 GT 1 -27.4778062953260341886339208304897103 0.8122153360988616888170302833396484 0.0929340913722218531387699127411511 1.0975401648833009786725045027755967 GT 1 -19543781822708494166.3621278222854940528973602120484542 2.2562599896501134523042361696044177 0.0826647750276553921960669288375738 1.0862823064926582883784253611653955 GT 1 -62.7049180177830181074060679067441221 1.8141086342597971152303342071844598 0.0815785061328934172837844449272339 1.0850988500897514969702692093889939 GT 1 -151678490738234667682080167388490113.0226133789753331544157234747821828 0.1738866301707913981009417116924945 0.0682082056389898128185311970086379 1.0706458858616432522772089528986424 GT 1 -162556313788.8298038011522673855001199901680028 0.1168405178871407165737245224079939 0.0739657595020143969354615907473727 1.0768440682398998575444429447470844 GT 1 -12349709368.2475724036008599768256019773536996 0.2294210548628964758193663679906774 0.0963365720144570130481617015894707 1.1012983020913753552255330208724990 GT 1 -195069888704460219891.0640838681750735517038973521262569 0.5782467468178896353721371506909343 0.0784691575162259270953292770333353 1.0817190325639154523484143967867776 GT 1 -793.9367614947489261315094426599641502 0.0753003321386294043872107312497137 0.0668292650201376615283009053139420 1.0691670991852915348202008785182510 GT 1 -24970.8799852581927020265111491867976133 0.1626086842239079777434333554807310 0.0087925382417847717767275964371063 1.0088314206908834427421966248528966 GT 1 -40085753013271338034158290.8617154303672043948756216618952478 0.5702745395955496457208025328192011 0.0295924488228728768919057408459828 1.0300391398727547396862317937720575 GT 1 -1022125135312938681587617696201868131.2498017163422976814331038953049359 1.1069438910882118208418025831297035 0.0829624717786235960747304278205964 1.0866068825670285834292762268487087 GT 1 -11504579823123764409446175376113326634.5613379222285976148350600837582818 0.7509154775893889287734526933512735 0.0586105235940941568586250472417576 1.0603983287413692617571091400542685 GT 1 -5081.5022346583661778285658029518972067 0.0550228136416702570996213657070221 0.0401134242223561315691358665141734 1.0409401517321645365276846803392902 GT 1 -17753.7329798254868562527260711145184940 2.0222837519851563576477501325633895 0.0767247739484512453004839630293206 1.0798279025233035433459352975358043 GT 1 -45048153327639711034702769947043765923727.4298496696739982134631786435038704 2.2107967799094139249069873857379237 0.0483863464770467774941387400452231 1.0495961526918337804984250727872796 GT 1 -15179822.2433844706186179452535338796788014 7.0849383354951480047828308643476237 0.0864273467485513996665486993704679 1.0903923734843361996475047019623289 LT 1 -620119386989.0348808397784875435396872772937421 0.5195719186249374438354178159463736 0.0067262043065166609328289105923721 1.0067489271684291341755686074419511 GT 1 -16155254396.1877563541264869492162352685952905 0.0243827413910029712572240948689577 0.0968363896393637198051128909027684 1.1018515566387650394416137302198052 GT 1 -732953572580205790.9963135299683408595802767507342233 0.8666087036463005984184946862094486 0.0155165988244365861440566914630374 1.0156382412019589044187615817060151 GT 1 -345469253170371186948416224085353542254.5322774271299448460981688676341989 0.1480923658238289692024186262901918 0.0224837912268927044450625218104611 1.0227404053950224185803849190479580 GT 1 -462789821083854317875092236734324052976.5566496480978123710257827145801533 0.4630184623998193065918015157226669 0.0220688114025487419569607827930996 1.0223159707299614409385665121516886 GT 1 -1239125124043538432768075033555.2661135501652146300865241645367538 0.8127858401602288340791813006213664 0.0630406548624373036752046970875090 1.0651153860120564327563742215245411 GT 1 -627922343633566809238224.8745227309201576580310298910253147 0.4630850526430688621372667274793907 0.0945225271679878606853396238690588 1.0992928801216283166260745457397374 GT 1 -6081098019242010375198110480.3187018969518382792289951812565333 1.0912093224356917612550505887355162 0.0485510685601758294557063522368014 1.0497692653207530648517399629951481 GT 1 -207963.8943390258789994393015089922639893 0.3926436165275441974236158778429886 0.0500199525038274881609354829446324 1.0513142972437168551507023974467453 GT 1 -4213295.3974385971976497335005639190922814 0.6797388188850144297222525261261782 0.0747939914888028048448889869925044 1.0777388543623293825634411174657568 GT 1 -321698478605.5498320119691006429919703145779758 1.1357524742791795790282409227218178 0.0436878453499121855350073027372643 1.0446708976268019599685383718354749 GT 1 -21812.3367459756753999544879731779711593 2.9106577843297478523440515846140508 0.0687918917137375958253988220408257 1.0712724946907865304554163018087718 LT 1 -9407930042230793756603.2943320125492911696854583765419535 0.5637643568548743309645616233024139 0.0246259339496636100516821866944551 1.0249342240744807469715064485307687 GT 1 -5422170585904002500065232305818175478269681.0543230779363868095353794454627353 0.6709338856623778867440336016207359 0.0417401290294508958918625447168749 1.0426362737356037302414466987957846 GT 1 -7319228266796588140370938630850664787.5502445954870272491855853321597350 0.2080108627194668320521244937742909 0.0658533080119200860778562701687824 1.0681217952824965286372974261027862 GT 1 -158107331205279796925499381.9585217466032069207577162827162416 1.7689586518821043646635967349281163 0.0926822142036935631025497233634844 1.0972625200048550541347680927573386 GT 1 -371382619043579385089588169731.1832031743640059670668742681422209 2.4855077373228866699651284672066693 0.0094955493744913360497326029757007 1.0095409195416539259538099941735972 GT 1 -373119895947223800033904854580791588610306.3469094538219038881215144393365985 0.2707086940074964130599656269685580 0.0056035194686624872981531724977523 1.0056192780805780823348690723379106 GT 1 -487020964246928.5074047961514489350475307021163789 0.3943716847087901051961195412271638 0.0447565516774002909718469362640239 1.0457890512783866162803669492407923 GT 1 -8825978316966.2008471047597963662961112017868555 1.3688926187784962895504855686216680 0.0427149480271483692718123743969386 1.0436540719299179594599006347090143 GT 1 -14720951344532568643417272.4149576203887597482376923285796347 0.9533399344570781615150883944838125 0.0163565363840225285838654873901653 1.0164917813122081138888044759047915 GT 1 -89885283028633871714521275095170959441762.8612680040216558414806869640633218 0.4404729654069184408508946576852327 0.0765486137955115023349661687024730 1.0796371215465147240324447130690463 GT 1 -92200602334728901196.4985855786419214543444840362291902 0.1153848821715469142065489083515563 0.0042566560531885574210236132588967 1.0042657414048772679186608729383009 GT 1 -4118846943879314845285829766447655515.2535330217504428428846357838164848 0.6005966284802009749661405078753398 0.0453837060898867933085351466132922 1.0464458057207790032397891326975424 GT 1 -19430.2044686811159343172772302604672432 2.4512844362356999580670739892345480 0.0339937157987682065625745644196028 1.0345849394064810531792579715517238 GT 1 -101035577201.1167686795655417435739337897603240 2.7196322711927487072454911817189894 0.0728329637289108923040304226474669 1.0784808481142788973932214406992635 LT 2 -198087471088960337947094241299.0091540080880168602382431493565104 0.2704431046697271869689334099212412 0.0681126038391445012668055533525074 1.0705432911657155724472011858791819 GT 1 -790792247531.8213067640050597658708870220632334 4.3932386124070688365465064211788636 0.0985975494500127438663986377900636 1.1038034501249055218468787873793439 LT 1 -7107316411300160059.8843459433709842340276547106792661 2.0146812767209473791846981111716188 0.0199898024855818639023142165649000 1.0201923017447003273020902555337285 GT 1 -36060916972026004.7527443296350764077858903110975558 1.6628609512433195230643119942960333 0.0022569531769828757449874708771814 1.0022595039344873027006284072069895 GT 1 -68878734510698963030444025.8315000090047483833285096623326036 0.4448494803434148613185506678655497 0.0610607810265303030218020764164545 1.0630045313966417340228817420196769 GT 1 -678.0722647982228579102985553270729673 0.9978507569800975697061208110092686 0.0432736949360358306087735582788836 1.0442379210515079329095599895840023 GT 1 -12193151410363677223606558322.2522278213096078060097839429983718 3.0767041208395922851090954816021437 0.0425308443558247526684798900823184 1.0434617718726483894620447241802244 GT 1 -9109030784974.7555833263800648332647283294532673 0.0173225674414607153992972058112037 0.0097506679722661705453521204807859 1.0097985170294586251335590846076591 GT 1 -33706025170823915318899503131991853374436.6571891912943978832511618098750578 1.2199614761914766911114408406706959 0.0661543881043048156763048561195047 1.0684441521726892247588883613044822 GT 1 -1125965417813900108534073537509797234.9746748284876436233267866091802247 1.2897318166844423852722698977276863 0.0948405854507774039618014073695036 1.0996442021213926946478000210270246 GT 1 -6437816118.9122131323293421516609486345963427 2.3541063445452460515391657608281160 0.0090917282251220059895222570218348 1.0091333102128198964634191652141567 GT 1 -774.9244196997354401215492050992975316 1.9949553894049219886864982788029353 0.0890282341239555087618628709233874 1.0932433746546561377732606155515866 GT 1 -2781615947990592283633482119919.3393084649553088357438653031234794 0.5583187317665203636029408415572629 0.0383128027365694974034620770704673 1.0390660399618284028462253760954369 GT 1 -717254629528831867451.2263450649078199289705034806563357 1.2525976451294772639187196980691479 0.0947574726796412436242779290926923 1.0995523851946954995898793221324163 GT 1 -88839548882976683335704611360662564.1811551909284373757046653575946883 1.6855515075531249787688850357785772 0.0210394145999411610302330589613131 1.0212638973233116139578594320654990 GT 1 -93465949434841470647268587044283937352.8918405512647624639169702342491895 1.9928624641497479958375529763476608 0.0911123662927773677537931853816382 1.0955338077292405516132992163495257 GT 1 -38729031958.5571166521859219576457146505883550 2.3984790351176273750673340923134632 0.0726308858676002054305656946214660 1.0754036112968476869799131361866101 GT 1 -11859657733078146072057973.9968953931286993737136121123847807 0.2296582757831755046652116384800507 0.0536490284167217637298639781275765 1.0551417728339452976406073249679655 GT 1 -6596686244345552997894240535556405408.4803158496542043006655029818737496 1.0437479555872026133777902841122147 0.0594484643754568932844852990520539 1.0612888357566053905106322045343813 GT 1 -13657856355891134396225132867204261.2648254318261969225243957058198822 0.9568674153487321546279203741429499 0.0892932266194208159783346417253200 1.0935343068818563968785800107244610 GT 1 -120599200.6566499564612686688436270130974490 0.6624111590780072117927633573378535 0.0731309062088543843736067138675008 1.0759429382843271966962353826918188 GT 1 -23827.0248566104774479966632822110109234 0.1171529539630514540452699178128516 0.0650299613452218696072158855979811 1.0672407944263656533290824023463929 GT 1 -503102312608.5319507320240247501803058597303631 0.9001937534235478678246314917107922 0.0310140706750269592807610313167730 1.0315051880172602127251345293508288 GT 1 -46532579203430172.5011882432729342355799119953268358 0.0085683036680684764756054848970893 0.0696713270305438425020086903025388 1.0722173434749599457328496472480106 GT 1 -40327024746379681.3271335488368933031696268623876564 2.2695095400124419352132786137184941 0.0476443402126523435886898376892909 1.0488167217453662617417120925111357 GT 1 -54506338597389398.9546144896836599663348296006830574 1.2417472888428659739659502586980379 0.0590230850589806582267102849811084 1.0608366721726895168472766234829374 GT 1 -128240670607284.0384518081504570024850830481704244 1.4521203049979045883825362768999918 0.0391411316909642230751093944242394 1.0399277399964674087541813825998830 GT 1 -4894957402904877219752897908.6092183895125986938151316428763622 0.1746115203947073584468083649822057 0.0350711037860602463671934284903265 1.0357008630377083103325979762249770 GT 1 -35974359304279591255966193942652235.0442240904507655315874769114874509 0.3566015189169859355652974216923738 0.0334254096158431434441714237246810 1.0339968075391113433493901479961686 GT 1 -8760102457912739507370851090986931843190422.5145260691688296631131161678950993 0.0856410867565107671911743301326423 0.0080245151783229323438248439277416 1.0080568848840064667036360151136807 GT 1 -24140908332340474296114474957333472141.8605924407722416978354555758452024 1.5527073289880227137829005487169706 0.0451440657927376531433355941251169 1.0461948041142842508345508653999360 GT 1 -26236105173669340303371814597934233056562.3397886202355453830708777471557861 3.9704141265813867058016371471588691 0.0398552176048654052142089461284327 1.0406711908967613002570481253129771 LT 1 -25901582396198263204997752368.1703301846887988166625287704148364 0.4417735359813033224383680441073152 0.0025500562547890042486349162294400 1.0025533131863242751075386387339037 GT 1 -30952468886392351947043544.7673923321738618289519109401831367 1.2491680257963882351728940938069712 0.0936856138198302534533633732688247 1.0983690285174606154369164280836914 GT 1 -10205170555915412302966641884352426622813392.7097339411290042818193079602912462 1.2090877567453066341222084668261238 0.0217456451147587200085968523961009 1.0219855661915917298264555662803281 GT 1 -53254931689742381214.1856100891233835731573480005623075 0.8763561930588710494199196062585550 0.0942014007565918349615739611791620 1.0989382942915480902533679555175092 GT 1 -6887695898894889605715.5039378687025920674020261937141226 0.1316865383976541308750283871823541 0.0610801244547262330049383502518962 1.0630251329723968856173430096203343 GT 1 -3249443621055237066405095764836.9710432728375237027761999457908128 0.2618628962932488623692018031393775 0.0918965815793046277462267019103618 1.0963970099275158380229810963147019 GT 1 -1290532657526807734238701936272.0193692078200879307154410016400005 1.9953444818796398380428299186191046 0.0983914076229184743468985640766768 1.1035747861588126386735396306108566 GT 1 -11200013131593132.4241635081416185647926039363233925 0.2207596530365176335611212485375670 0.0627694066122462208806068575017129 1.0648259294884573456233364753714236 GT 1 -70993708437677933851.9870849327234052830681469748239303 0.0360721477996332706213200406323602 0.0459852653723186411949847655271151 1.0470761625507335300758209463151969 GT 1 -4152257479293040532751638921725583868385.1123907625385370335286427109750711 0.8555563722365669385067019874932129 0.0793496811623496933315758047963678 1.0826749903509857369729303356671357 GT 1 -30783038545867036791177.1522023627940279510033837304212977 0.2529125488956694609825282172781895 0.0938990674127904119859130330992469 1.0986045745225476053676190060870387 GT 1 -252562.3357262126967923309817505015241598 0.9132251658577583610534468380912135 0.0640275457111505280420154461659135 1.0661692321161714010318745088574159 GT 1 -8281.5386668126870985740211510693674718 0.1241792040766451855665036943571155 0.0091268988829056056548227079923031 1.0091688041964332031673228896877142 GT 1 -514413307096520239252613086068.4596988596057802584062225433322149 1.6194410484648938848812102543519165 0.0261465853862810863195482014942962 1.0264944850088183845638816235814747 GT 1 -886875628194887.6500353729223186584250453133205050 1.0681026830887463886715067147539407 0.0599638224089992505885595066862275 1.0618369176597483484468308824957642 GT 1 -5559075909459717622803633.5711078813658119227289363347384777 1.1988881911299064056214852371795818 0.0182271158009469475225974666833683 1.0183952761964433695560465548841436 GT 1 -943018772065643598465583725.8527766614829569314948804082273729 0.1698620001867140112746347018215349 0.0703759125741901273168753442716796 1.0729749816175546411795914868970577 GT 1 -7108876814576236210037464622969168364982.8470920044088690270406781737034753 0.1650834870270120649537039917130338 0.0145084597399670667793096783140299 1.0146147366372336661909059897593001 GT 1 -405536.8333870722079453130997463211890289 1.8911094170883389826810027654823217 0.0790757936123522552323507314167471 1.0823775410235051605753646699414517 GT 1 -396224065053250416136.6726626027994558951247442454081492 0.0406911671455108300655328212947892 0.0593065084260167348083587885336791 1.0611379187334029581492179088633023 GT 1 -42942136313790528993387212004869140365.1209031061586858690378844303054695 0.3063974683560005416944632883879671 0.0310885637724009190012476266391870 1.0315820683502797173384426323791672 GT 1 -25401034106542.5317976304424216140643348934700364 0.0037153402108545499607483509702529 0.0429490497403381681456514213706850 1.0438986493855827416468975147827187 GT 1 -83546065479033.7095380346896075483322421189271337 1.3350509646510394775469036605164809 0.0810142424017866136964613581850244 1.0844846544633924497506856283864967 GT 1 -203304821256626857067045576451.5954134370614923821769075249514533 1.1595283822973145852022830816456216 0.0601727989996529286988040033534095 1.0620592493396932021836383838708775 GT 1 -6571087165484235997119119470850.3084087915813353455762536743995184 0.0473997494395873582004111713258095 0.0792425774664749955929019780404490 1.0825586622900254589766948667135291 GT 1 -62310849130489404514394781841972779766.2165920382612044070068464605292897 0.0723645556348397315385887318306121 0.0801747130808586555402712177581082 1.0835715324960605304193332818321539 GT 1 -844054175903740591676444.6901959578652610219560727888508125 1.1768629041133107643955904042916374 0.0398139826430687006861616589584952 1.0406282452107280751918987136257270 GT 1 -420724336497473088598544187885.2330969196850329317698984169576346 0.8605754148002211599515298130198059 0.0492820128015265412881390239816880 1.0505378038440197249197729039264076 GT 1 -36499679490001808040534672497730280662892.5338517274452532519547876568229805 0.5903390428611532917993213725249383 0.0209217867106623850365308733058513 1.0211437486423978209303007049733078 GT 1 -5886402506488880254659548433567977883625874.3603384311603154989108351143053861 0.1884554934582181965490660679911804 0.0764980295608206157139820630290707 1.0795823456806038952437895755156250 GT 1 -11022679751811612759.9073265548819960011854730407045865 0.4185707967912026686962163970344434 0.0964004120218297388334354182413816 1.1013689503665133671878858539588499 GT 1 -42582492337180041130082037889401422919039.7836891767224105899433881155090390 0.0086909767012213148104256084900040 0.0448125361821544847693285695129191 1.0458476605737183114734209271350258 GT 1 -564642581759710888081339821961052221086.7034335875286943040062443936998553 0.4203257668332767563608739126827431 0.0661689834842157071064914705044100 1.0684597816234080061945750747768072 GT 1 -1559040060101670475880140017213686073819.8514989623467005960442487463448069 1.4383435380361143628175205398168376 0.0250742182196311612920149873249214 1.0253939321325630853421362278561710 GT 1 -449695689842674673.7960797492989641688188462529037227 0.4034851527114187330057649855663111 0.0928046853930433476620072957185631 1.0973975106968578218725587033681781 GT 1 -108995348994824048252.9398213247129070493018545612673953 3.9787425035438395743961046964478056 0.0252044644875633922871756260723282 1.0255275371426440367457072874579515 LT 1 -15025754.8976560526306747607757373905543094 0.0536772664847996760297617782389864 0.0012482082192735613079842821807815 1.0012489878800063789360377319179139 GT 1 -2420263677747887970310.6729880985589497143829099438621578 0.3972762256428453490354230005265895 0.0335822866868701678853840308555515 1.0341591227962092512959957973264049 GT 1 -1076313627471212352714628749062164106135.5730628336694262302759398189626936 0.4728517797924632092024165192397414 0.0494756718476453139514501619363853 1.0507415222708871539072695834741499 GT 1 -460192684483.9959283685128047950384636527272127 0.6553369482860626123964217460523472 0.0077203388708147975755498594791881 1.0077502949673704987087116351464087 GT 1 -240346266761771628062275.6474314051756952454565747649500759 2.0892025421574281720219715638614192 0.0684199422466083078428405653627761 1.0708731476486983122683337752525909 GT 1 -34350.2902092226446836872173953472754010 0.7785736040297395842251368582429911 0.0682685415797697305258446361494280 1.0707106405575784403770390184466470 GT 1 -183430270922377515227906911135847892729.0163867153093828704518016890294059 0.8399184882438167185132388540911689 0.0141834911850407422958773815850620 1.0142850382341631639905348298158531 GT 1 -85713.5963526642419219420753125233115587 0.7445886031611477887466626227013986 0.0595224979717893114654554431314935 1.0613675518156227765734736159753198 GT 1 -196726036185223.5791455037263378196845951186270264 1.4177705305746467125050039946999693 0.0204276966017992593152225332866297 1.0206392276825491378348251746911688 GT 1 -70719911093825611864229.0926369109905322923811723702549740 1.9325188780315890675658644981205014 0.0555354181273904532447338985242208 1.0571370920844958057955164034513275 GT 1 -65294541165461918167232282430709169273494.4349734487032999014263742782817249 1.7336528070554443409681719390298637 0.0696424594493969949187441908921709 1.0721863145126992410376206630354934 GT 1 -1183584625279051363033917208.0317641390474103917026716880263602 0.8820603418477931577975251410653019 0.0919543316139902705739149040194271 1.0964606060663181292584566893536355 GT 1 -98309089.3235057322967635508067607869835365 2.1735746157468221064023823189994962 0.0892269062965967147879239632776819 1.0934614866173540165422704911275604 GT 1 -257495527382720074664555.3409059642783073042385522598330012 0.4403662836125306684785182684174204 0.0748172848205956173841079516154141 1.0777640310524981211371554755966527 GT 1 -31754366396496453709101337027721270104019.6240383240585002840488627595477244 1.1855504632624361680687858976269441 0.0086147928941231046427803214502646 1.0086521147235717373025387264698149 GT 1 -464632042794625849448188886873252616507535.4499165378807527053069091641469382 1.6526841379811954493128782051470516 0.0355057154550597688999728412338525 1.0361513724756422612446533736199053 GT 1 -105975078392761042162.4019186874982674989361451596505561 0.7746298185318854108814326651526717 0.0634819637687170545841609512215110 1.0655864980936120282846501529726205 GT 1 -431035643876557321155040862.2819662609889404948926532561794785 0.8609496645138865435278095965053890 0.0347240634122775874605707297626264 1.0353412738670414628486143516964152 GT 1 -4114912345508123877149098.0630631060831223054532535894215288 0.5815099797881913097040500375778578 0.0218438836249774221311651401655028 1.0220859934912248034684752168415215 GT 1 -1374713666146201240962696621.8394188768514444854593438909553148 0.0351758275748081895168475185866357 0.0944978989469885970254481300044925 1.0992656813377701994655057549064880 GT 1 -3696894964988760204632562103785159.4689680221121391526968651755744279 0.6071979888770766702582979849725296 0.0642544504844729457977931963611152 1.0664116882703279246220177181135036 GT 1 -117676868102074992043381.2770815530845373386437532352124327 2.2522641882958723478141870944071603 0.0606678930238377325115556487001584 1.0625861807536917728431503999197096 GT 1 -733631822169507.9026224127795937715588491753714588 0.5957124811699501951901248767200938 0.0082837586542817607338239112171559 1.0083182596470454708873634768064625 GT 1 -52894443026406477965165052447206575.1299012952613983343210502662163359 0.2756433133518504719314569292988153 0.0496686474046483805591437644035232 1.0509445629957780822452793368364762 GT 1 -260648520024363435474312.1929634647633706032401799836047817 0.3689320887135013103765216401546376 0.0254049324695362217222539120376374 1.0257332096049679835950298100042961 GT 1 -113532427542.3289720181642569430722511615233265 0.5591938489328860304596511250110817 0.0384610920884932981289285546487293 1.0392202489254220800925969371257477 GT 1 -194642624.7972922722830336282995491414918322 0.0185067822107615156308760128612711 0.0039328583665008471313291455089858 1.0039406123909633464546919098783802 GT 1 -217013840436586928768.2562793754558109111102800862869007 0.2308025567235929739802108494355068 0.0795038790069241812216650884932467 1.0828424923395284745928661532701587 GT 1 -568676630521426.5517566739615736326203636484741583 2.8738459831523391995093210446117753 0.0278690844867671515228413061813563 1.0282647968491337625353503116130145 GT 1 -416370418543376635438246114058602.9359844882230157411411098983322998 0.5579275017439357698104235072752170 0.0926844741198668117856624612671376 1.0972650107738260723506479967160062 GT 1 -48269047841146399523454886.5668014812196901991186073769336264 0.1825046759049225223202830303681142 0.0219369855810348139949269710788958 1.0221811791017344993496102465403550 GT 1 -2447038789473449497453270.4527634137439486140222005661486751 1.3792003533514235561492415306823102 0.0792550339189839015742510699195918 1.0825721908660252627113636544934443 GT 1 -3127007420675520718962.7116311678206243353850450716436787 0.7061945388134753790295017679421924 0.0266232333809029803127412147354608 1.0269840501447081065949647234052973 GT 1 -212285190663204469650528256672185.7908539056825164262532199721956026 1.1042794375986092034752095190528222 0.0822172033229669573282423406452648 1.0857945212839875607358503882339796 GT 1 -2410399774919968874748250756897.3124017992045814739275354864616817 0.6100393719095184362965647491643639 0.0209162071067963061603322375745610 1.0211380498249879463747896183101607 GT 1 -1928908497.8295074848745028360539889514753220 1.1326951796826959300059818170796351 0.0564052196143620846141512418911435 1.0580584630603154109174861191886743 GT 1 -2410906500840070583854670089185485163101.5768650370837242245765224547060332 0.9047116851713037554412620918256005 0.0160342201111696879613111293523296 1.0161641590703429204709069030737138 GT 1 -1735879255.4557053945074255932334072057387373 0.4073821923683470446731735040905292 0.0262354298134605459501015677541038 1.0265857189447693271450432825157500 GT 1 -1394179395816984356512873003605631374.8473231079583555943578964984482338 0.5578673074607170600147482872197421 0.0807100915958051209715937581536200 1.0841537456509853266488308135045262 GT 1 -2045752744880315608575.0872352060718423572437962160780441 1.2720563672217664630491416134652050 0.0460567727702369490911491185209036 1.0471511195459937132033207132762899 GT 1 -5461315958784.6388234352945169158440536853657845 0.8500390740122190607439056808331455 0.0883457195994855242406103965184701 1.0924944392844342568706392713264134 GT 1 -129311664077152379336227847.4303053033274019267589104921671052 2.2498881304004870297810603448841860 0.0119176321633485783285507585870596 1.0119892164534890738623168287011179 GT 1 -137135.0960411759863692505890607027082588 2.1285979874710590039166948251793245 0.0861771181229864219437653415996708 1.0901185098107978450511573070444409 GT 1 -294344.3280892376960931428859096133864647 0.3024787160953790997723183591746793 0.0533312631352503182401729374540569 1.0548060496684251947970958990640192 GT 1 -125092701173.5469530939312883064035047650087964 1.0292975244932931933692099061037142 0.0644323593047053415134180640572012 1.0666018315576184600306019257959213 GT 1 -748385968275106657.5272434464759742407252287007714365 1.3943814577633309938918766271145164 0.0220595132494444546208877967621274 1.0223064627921743640135692656078312 GT 1 -86254008679817479283.1826042850237170124529390736327373 0.2232004095013038338458220280747365 0.0653522281606197478516436716146175 1.0675855352785127385428560669958859 GT 1 -5605353525289606688388290421.2670879964263975484219717133310490 0.2820139708147486375174996036657243 0.0173380127147601849822050539011165 1.0174900762737552504869696082803569 GT 1 -3379330573232613957576512906994213.9073643790486126684934801714480550 0.4836272894468521943704793895854293 0.0622553127658142833586443955412931 1.0642775554756070567843103972852941 GT 1 -4037087039448738005053.2683341373940794844134174052002900 1.4095622932160412570883534315980246 0.0490125811655099229146498810114081 1.0502544459306808503592577523074706 GT 1 -27403415189997439439256.3335148332289861297244701301316959 0.0668135504951032064534680319953692 0.0216536012307132929030635810650050 1.0218914806874934549113590894293832 GT 1 -17361010333332832405868129100879674218.7634950859601324102751530338230543 0.0169316459898682595721147195251392 0.0612954831339542611850513459176410 1.0632545278194630122688949750998266 GT 1 -2635661880734.4327876893655612175007815242623545 0.4908836163633635997519615304834689 0.0337945277738953988231822629845775 1.0343787632201331267118456612819006 GT 1 -76832174363991218865423076862.1519194710401918613949702830213748 0.7317576242636264595620601060117244 0.0314589284011348086102586161434364 1.0319643896012514065825940085577359 GT 1 -1473.7862225492121533201180196340738731 0.0391945627226789585264739779410799 0.0113624155028018884557083377432177 1.0114274609306676042865329009288309 GT 1 -481027003378090337967942466746706.0918656197256926256336770447174119 0.8920814075313778089179468214485103 0.0655291714184641264569523866916314 1.0677748686448738752211254797400100 GT 1 -11966.8955482398781721250446349176204780 0.6917264249635271865783617310737847 0.0214137751295050575020227441421938 1.0216463765898747821956239156336964 GT 1 -192009195.0768653867054976722400714216737327 0.0460423186532829791171441173687496 0.0659086408697126880690705606617915 1.0681810306222067524013477295594979 GT 1 -862006459769417748032835622.6816805213779061680038199355272840 0.0527278995318541704893671307481433 0.0081629338588086334983775196891480 1.0081964330289591183187859052100673 GT 1 -66481879172248.7472138090325123558790586510135230 0.4836896235833881645259875648726160 0.0931423634516602445991897049195863 1.0977698019933186532760111577800870 GT 1 -2242723164815518187836453.7815842941927954339646481432007636 0.2723840874208852719258554304590214 0.0463819543327392914128904074359932 1.0474920591218516431769356469776176 GT 1 -52867015605.6901291617876303174166333565727722 3.8350995757549901127238204705581827 0.0006390361670943802203081799842607 1.0006392404377346614507869778229186 GT 1 -10603395086.0636799650283887325589022317272017 0.4161200674069020643542595013097010 0.0185114239679128018347393727041046 1.0186849046282262719334564337104435 GT 1 -886065747014732810422539675.4002086052161249890143863369478046 0.4802771595789815506362837817322616 0.0434086722316036824156773352938375 1.0443790134592457494175388887265788 GT 1 -66452827920543683.0375074152247563092376066911455759 0.0806746235063893296766775281754122 0.0867574262021226444833647571206473 1.0907537449599795914738548395362985 GT 1 -84540776376779905795813023405928738812.0449253415096039005351174665261475 2.1276631920647127429551573546978909 0.0318756327747902603951153684468498 1.0323947214197807895745202213940260 GT 1 -14350826014125475918307345506518.6565875712212485039410301758316946 0.6592658225931536638553342101747409 0.0942506091525113426346711760833737 1.0989926217465211618508830454989240 GT 1 -243973454819999581.3659888941489233916065445166156280 0.6810275541825836346112987025483637 0.0621052272216266240728716480104123 1.0641175188078916275156551719519785 GT 1 -166600457496489906786.5802287617716873318144641326571923 1.7815429548858451854971349583184055 0.0975671423590354215904616763124666 1.1026609875083084024278939954810650 GT 1 -101570973283671369794204616969291555895325.8862396662758594776450833461825118 0.4537367715940993949983301095079232 0.0319111644886459942652726738365167 1.0324314236938996762934310655202741 GT 1 -6832771213345537951697878313232019479.4455859638047102338328005351103050 1.5386553246040186225075927951294496 0.0840119495720642202056639130704940 1.0877519597774481366071771752794973 GT 1 -235780.2363488264075177365910345220089013 0.1117949299841489284042304988430382 0.0011675881865666118997740812662901 1.0011682703486946418263985292774652 GT 1 -19272535086293769216132145181919975516482707.8764808136378578848555912408379016 0.4454946846628345498585251518579399 0.0803522556808581762120462945461624 1.0837645688684734693493221477297234 GT 1 -200987834004575472592733074694811157268335.2003101060843044253255045157011900 2.0245821766732985536188538386437824 0.0601321261139834347335318374658745 1.0620159732932543396802343434320573 GT 1 -12326.9325612218205442103806709248158777 0.4425576834564379355164348935653723 0.0987486278028469431679584730830784 1.1039710678352850838898253592238673 GT 1 -2112856223257689770.9194946084049891800108715605888718 0.0939596713322207368405055378790865 0.0837153547919791431093297176388234 1.0874282145364891584852613373941753 GT 1 -3102877733888602949709516043686960.0253544018561153325106465834118615 1.0034555169362184328238522140707984 0.0105211626060735131805850132247577 1.0105769013395983738731810951846716 GT 1 -665777045103278384831291257.7733111327723132635525008987037407 0.4717077643837262287251463428841140 0.0879548149861888587166466826979945 1.0920657451638330687004830279900961 GT 1 -1404266712729311616933020.3851568513804808987318227589511777 0.1833254668427395475225962394787736 0.0925132127005279565455048818600888 1.0970762723987386056752025388785404 GT 1 -7179554744536.9263493892219630838907523190877086 1.9886298467759061637959633927107526 0.0502296541443658975780934275618830 1.0515350648162610914865289697342343 GT 1 -89318084752530643393928284245047.2137244121826703843126163824555101 0.0682035903980248387469029914260758 0.0719793249999579503348907159999794 1.0747012673492389275417482723543807 GT 1 -1869945785595401398625092949.6774077905915781791065884098625134 0.7692178875775543498230418584410314 0.0011790999241732267332998263218676 1.0011797956093975163932452620690578 GT 1 -254692720529970566539355.4305146848525107688781550389140433 1.9449282303974743312781453196690641 0.0510656264127841163858764263271521 1.0524156359907843783959660697815756 GT 1 -521.6269633158722226105638496757826464 0.1740743008480349826070981639653369 0.0699789624772341722208642821347323 1.0725480720984648966656466773884434 GT 1 -4006677434244518597.8473734766197363299424483400503095 0.6639619483274124215392686100454054 0.0380038026238589439493246089551466 1.0387447811556972247449189415162965 GT 1 -263511820451361.9931695059021910831612857851910950 0.3737047350065784893150644380964412 0.0678410911946359880636340975402554 1.0702519758204848269345879749201008 GT 1 -325693988540217581947243381.3906246794619594607529327979628248 0.7549288746673202415799289791014717 0.0791791433007197035540660533046395 1.0824897712018803418490133976474791 GT 1 -1929104583118545472962325.0793069172054587686237339658265464 0.6677701417398340571431882634509226 0.0388286214043207243183430974276570 1.0396025523050658892301140749301755 GT 1 -88898763234827774385135541712596368743015.6535877093740687794118772240153065 0.6168579984899028001407591788510784 0.0817154120242307392494418872870235 1.0852479277162092996041466685713884 GT 1 -102738.9058362560167533279191231691088850 0.2514834632630864733371411422948104 0.0042794500150624513180253185123874 1.0042886330695911956688591329969583 GT 1 -1154960.0680331919485874910249014798462045 0.1020465282257028638819156863186746 0.0078564693003579229296719683651505 1.0078874939583087239734617925726225 GT 1 -1693773270834558897273140637514355083.7064913738808811520308372261806375 0.1035293281181968081352140324947455 0.0185154916378918492245886590300674 1.0186890490253261522505313361602644 GT 1 -3.5518099855273638090188728529530514 1.7648884509977349724704761125753895 0.0573504070027668157568425452731381 1.0590606528940966520286975427622132 GT 1 -322593.2991508433970443557032537871460488 1.4460757492121645315451761268240791 0.0533696865511802954522907513495210 1.0548466385188013554693038414472072 GT 1 -2111810231477.3747316770867293837400966372256886 0.7266069266264717391731061364979859 0.0608984597787596639307266081990001 1.0628316690693678149303481878320200 GT 1 -3781.6580373952430435219087234077833422 1.3146728755151977162868537979441729 0.0712529283810470038153802609811646 1.0739188359899136573047912838819022 GT 1 -27207130368152829273038453026.9373375604837607647965223494984392 5.9526462094450985419802923938120672 0.0292375983685123580449017528566364 1.0296735351426797231279607165147294 LT 1 -884676749776220340965345231.8136135108774003418607386866038863 0.4490337242052419432716452452416709 0.0908661822201053996315055399844949 1.0952629813603048827403380977930438 GT 1 -1072497466.9234045333519041822651530972165523 0.1179031432846480540675166451746498 0.0288798691425106638283075601695542 1.0293050996435562670360025867485949 GT 1 -2073.3241564152694797501773653583888803 1.5641783034476316518467374267016750 0.0709167799753180887315693275422718 1.0735569639600418867587855865410617 GT 1 -34185.0938607722226740558788111500612182 1.1098364701628590259725758341745610 0.0225636101808747967617383808259710 1.0228220635938799492813581753782675 GT 1 -4333060713242946.2804476421247759217515094703373900 1.0216474497576053929856098284907594 0.0852267430534708173701710162569923 1.0890790510315636480882186158259666 GT 1 -20953357748520949739748.6068951923729810735415469043030997 0.2210360310595142913267697984672755 0.0291843914250977961710135221381497 1.0296187272048598824040406302891107 GT 1 -8104645260368808178206438.0806332157879449719576292137079123 0.8029136075484644529480524491561765 0.0638752166360453553962453923355506 1.0660064958304939129941199856408060 GT 1 -104703155046170.7821157499259308811941556969907322 3.1584730981415302876023978820701395 0.0587000650124255716106130915884403 1.0604934494956020634595784922090099 LT 1 -203019569938.9419531518167928136297390261906492 1.0328710649202739931600385582962496 0.0985808103626806814089633862769129 1.1037848802487076697360314306755297 GT 1 -51.1541664848810736303989604003581401 1.0450320816809525250157523037131375 0.0243961340171939497887400736654256 1.0246986499762202768141737111083753 GT 1 -710840505808922692687.2480088550806747272598806992218345 0.5075864486855683046057402437165503 0.0534831803056742334005115018237979 1.0549665380793193715028454034887714 GT 1 -5533453435.8656552867431661391323073787017047 0.2662541683815870654383836665424602 0.0878763600954219571872218314441811 1.0919797280257879810895084247807164 GT 1 -377481606397470545234006373.4522029475104782397319093338730572 1.1059207274566768993650563687381769 0.0865106856890476997665624191125323 1.0904836007574486560348121492994128 GT 1 -123549103043268911383662951999006.4397789576885888511567260966933936 0.0115912416165743142602883306774825 0.0289125899536394191144207584365887 1.0293387940973597196032821241502350 GT 1 -3805337.8241101791568221278970156233464406 0.1034614023112154390261794892917838 0.0083496207596443360665715989394772 1.0083846741008364927363397151406044 GT 1 -1162285752155823.2081690359872550557157639466279669 0.8322592720907025711805005430662093 0.0289716238631860076810799244452543 1.0293995874959662868309322901403573 GT 1 -932976582803586335.4003487384877059628022596793728344 3.4395859888749266405200425345930653 0.0731625264957081466065550347883349 1.0759770540256367429772608037860393 LT 1 -963878253353409507800102596484.6642846561257424564199571704345171 4.5485158410364558582649425199800545 0.0231356557038122052993463921251756 1.0234074858160477643280097856495736 LT 1 -11990362961103156724528222699002098574730.5127896619239879290015538698813505 0.3287253090719394461456772379866825 0.0602540239633253334148815067109649 1.0621456784978822024227880533788484 GT 1 -24637077247368.9537312178831138992393489138772792 1.6139226312716399934217678429944106 0.0677060171237102036197713530485725 1.0701070817641482584660888543434975 GT 1 -142254224064409461936851.8473903404248770137035023750262039 0.4627674607198619257175453755463741 0.0065694987717125714051717146421480 1.0065911729063863350564089096739619 GT 1 -326547653299162061425.4088257716236926967807526872612747 0.2707236109267711947787021181687204 0.0676080906957920823246692285302411 1.0700020491380970843237346834455840 GT 1 -17535952978600.5052078197425619492816624278250480 0.0320407087295093332012882721719800 0.0018429431776165709199668251677606 1.0018446434867644441639630529221490 GT 1 -1066811123.8854511181661430208276047889587458 1.2855289635194565192960355918009384 0.0588496873160097301604768867745995 1.0606524149759214598425739956024506 GT 1 -7287803074979.3001833581141902072054933726892803 1.3284970862527696223668176942501524 0.0742998512567250617530511504877445 1.0772049102270410544878467401638757 GT 1 -1293838718683.8033669064409742782221454690403038 0.5672015991780395191211738297769211 0.0205746757945892954291743552064407 1.0207892831915449519409621849226317 GT 1 -7495473292819429014606938607.6635251455063616652723888889046080 0.1092941352527393732388327071286288 0.0215726199282022353616565019686602 1.0218087104629197667263968902691557 GT 1 -236205632418595891532493194733695600279010.6326935432356658597135821370356152 0.7160057441701962893828892803587520 0.0039728434389956293516983667833351 1.0039807561457408102087225683866317 GT 1 -61069975963437.1085433803034400395677894367944647 0.6835164953428454074621720615123431 0.0584577559762500908116209575860683 1.0602360630399402089018888119647792 GT 1 -17.6206066328220134734644775670137181 0.7385672584366731495200241997934082 0.0138342758964409282055296815631722 1.0139308613187520353060083536101723 GT 1 -851038438187485.3000102771228063946667712792925448 0.1455058661728912523586117530275894 0.0743307240006241764148280472924716 1.0772382614788110979332854751402054 GT 1 -55050579425.8512382250086726863541299623370848 6.2720503131240294356378004520605463 0.0961268994489952587065693745606699 1.1010663039401989031408706161546910 LT 1 -6731991306.8091694507686964178073962658317015 0.1922361728921520916128663293285908 0.0954271209960226578246283119980282 1.1002924035906061052438360029904818 GT 1 -41017305.1067126378756133838906040259931170 0.0965939721938431934322893136432500 0.0067848256015538762701501030542807 1.0068079471740136797502808465053903 GT 1 -29886308452666160332752695491008345849388.1282725883973743672931693900197452 0.3029842238118978545156112694209750 0.0114686947665415306530600049421435 1.0115349674410057088125117901636359 GT 1 -15673677347358733444604.4513178929816513575987700083536779 0.5336239965872156801268385210808292 0.0277770447556290363475722545693975 1.0281701230013418483970811863360782 GT 1 -534759809948008372383966412395617.1093753002378954053506449450485929 4.9724834713336719601047182476726344 0.0833405313996957734966095755004538 1.0870192294564920562861969791565152 LT 1 -4197683989736475640.5405830547333987039490072760842925 0.3127370844209703522490288122923072 0.0102204426706314129126950758963764 1.0102730300122792079788933610694184 GT 1 -40262364327565084818120493461997278228028.7343480042906177221409981371306248 0.2250108963899247086477014509652460 0.0861947272122158976440271654316302 1.0901377796925679146865275866453512 GT 1 -13095955388263.1173091931821699345041396119321124 0.6148003110643022429842398576737539 0.0599804865800823139501434705347801 1.0618546449761924047713771517844036 GT 1 -412265016.5096894629142367284580908905575569 1.9438884808809848344541287134565852 0.0172006218329138266651099544876450 1.0173502710509357007611409613992204 GT 1 -322.7313581124525284419247039807526315 0.1221435917509129627475878051338671 0.0783538994640333343937113975057324 1.0815939680086329930584392266478846 GT 1 -601521824597190705083232086.0432943888632893008817971502965323 0.3413932205095828636943879078777920 0.0682015609793615296409317345746934 1.0706387548308948736328845868563860 GT 1 -1901365201262730826796699211225122.5280438902850022712808113592942809 0.0750980428970839359173132387090884 0.0892637882886199738024810880965872 1.0935019826959836020187539158365723 GT 1 -517701753690564225458454766116104345000488.7346575045756184903634470102803164 0.0819258087291655253602369327530384 0.0875332180902172265490396386989960 1.0916035975746492664099708655235266 GT 1 -706079495736463697467717.4729492177865765474753359910852650 0.2789465002251218354404203817788405 0.0880724271335816136155904751219963 1.0921947077780471588197150261668918 GT 1 -228478917134938988290539505407810213.1410116734254465128350872979958549 1.3439472017351180193699942148368191 0.0446683345741727508954244880655827 1.0456967051542741177572660260356996 GT 1 -67088.7993944004970066470884803872926942 1.0658660790040180719216877147779693 0.0842828614346902089419753594372502 1.0880477626896517907267268771138637 GT 1 -4728309.8906300245750976917428654960977888 0.2380530879228006925979546147435590 0.0762978951739304674820187261909790 1.0793656566960427233468114818839765 GT 1 -45954169879437870482038437.0413518741427622596296696594046031 0.2031787031892224264784838157262397 0.0071498985323964318914346948388145 1.0071755815507792146637146112642886 GT 1 -79864238936962390406974325.2061556181058976413281350184009447 0.1397320009194630071888901632227284 0.0934279224015315042018513647102164 1.0980847399807177368074539271832405 GT 1 -6268084330275693957.3125401270622329566229308507192412 0.6063326507128073144187970421285903 0.0787941546305935103103510796420119 1.0820717656699306217863528533559364 GT 1 -77009496772856533465286213551469565978429.7955471080492995370407170604487240 0.9630483276294589041647028958828834 0.0976179520371124940788369044061422 1.1027172920943717536332265550576509 GT 1 -922218701045931354497979.6415636486848881563991510276440488 0.0536675584537557213861511307330736 0.0938603725794767604285994977012898 1.0985618706628355516492437296830789 GT 1 -6132485917594168390793.6965864601734773236791371752890224 0.1418495434479391177582200863378740 0.0345059720847890639038179962324978 1.0351153626166847063386060622912334 GT 1 -2386658776081399594432012.0786427853725161186229591325340694 1.3787161203652003114279205501397269 0.0570326439235551871865420782785750 1.0587236140460148489185458483669449 GT 1 -4990.3471017873004118466473499434188349 0.4779870487099056602532215615531098 0.0752473549594296503969233129821741 1.0782289879972973004199752635522132 GT 1 -28520306129214936068474738102508153.5311042009003009660189366382955222 0.3738957415014031865082871538598922 0.0741722103710057008690847843026795 1.0770670339538547296536471535812089 GT 1 -16341768000.8067557088577838071081753216286280 0.5398676519413731232007546318518667 0.0187860318111108009756769841084408 1.0189647308767818047340039806380234 GT 1 -567305416102605959321526909683.3398597447783502835635969086424687 0.3804034047291163691125669471975159 0.0304974626890180175656332492379489 1.0309721871692998217139709782435731 GT 1 -412282648532875594875.8104046915064229561617283103386414 0.3517092035642988087465903275965719 0.0399585341778075388068895618011969 1.0407788018882864742005442167483203 GT 1 -68105909866141528477.8401865014895713789846718609560224 1.2528133029777592104956598596893194 0.0820382486045411130160141741433201 1.0855995543762218645000387521355969 GT 1 -794411933123766062443035.6328320543467343601030259637303325 0.2821855223811540064988300585970509 0.0404162286156942837402278608225700 1.0412556600142255404875631630336654 GT 1 -1474538072260666960172933615954936588.3425922000875895998257446048210224 0.2149005048034415730475951014418914 0.0050959721238544104035622691444668 1.0051090008714022393535829117499672 GT 1 -2160.7446328602809822331809119993014355 0.9031990812492168470480941142650859 0.0628472917121444980073923974492378 1.0649090342620364498065609569310781 GT 1 -65495915782746.4582955379997347201125921833100225 0.0056853137565863210660877703093144 0.0096549340372529186816718406982766 1.0097018451059341110992023011604952 GT 1 -409.1847622597338021452221871345711109 1.5938068989352783897138022917217722 0.0452512333602404921132292584549762 1.0463070446922088982475891645457284 GT 1 -1448068613732396765289234893340803056548.1695367754853631605873634508452289 0.2163927980820719991374721795742263 0.0613555261235455594550287081172860 1.0633184935391111462211612819594658 GT 1 -16941557652871528167398466933.1463953392724736602055232744029625 0.5086072822407629392056481544596799 0.0661780889032132125850873178663832 1.0684695322776788905791423905396660 GT 1 -24213051894887091319749835288489.2152096381222038007252110292982772 1.0091217041727767156570097107339213 0.0197895378464373320708162607443426 1.0199879730750135076214852114965864 GT 1 -3541079196708148212045948628951058145119376.7330862211099600021554299197754761 0.6271212198483626769189914461879301 0.0744400169307097436004613089302972 1.0773563375406247828339764395218555 GT 1 -104096037603339.2132647459880189727220521942677644 0.4539215117695044178031514111127035 0.0187670768880084017163076385345248 1.0189454132349266167574734706623897 GT 1 -98722742248216663.4904359229139813761260309271502545 1.8541087173348416871618619113741809 0.0962767776605925756228171141250431 1.1012321354480890367360192451120025 GT 1 -63457102318916.7030679769001803971638057279011562 0.6410945169352568308911639539845355 0.0945741377508228931739415009575643 1.0993498799424903087763396090753797 GT 1 -976010.6523713650339830206821190114798028 0.3275646497834739407779794536460354 0.0761444143721459937435604012249147 1.0791995121659633163557343722673491 GT 1 -3386140490339.2676402399611898128216265312600724 0.0761393340846263666943870698105154 0.0122975056712152072821124906700365 1.0123737456801489574941127377265978 GT 1 -523450217356424492597.3432426445528656728977522757676230 0.3338474466237621034606981859459686 0.0379704071839827900461089298205947 1.0387100670265522383302962702401415 GT 1 -10233971139620612279774.7756218877898621107440898648069409 0.1392191062013987150111638211608629 0.0668383095470496479338129312528312 1.0691767914853221252809212940911325 GT 1 -48792040075310977103635.6434764552875571718887647264627732 0.4429562172111340212459413474117635 0.0701229384511127035644604967564554 1.0727028934558693514002661336612048 GT 1 -13096256664312721132338340274246646710492097.8147597766038270835762122247215838 2.5052374434679707681103007761500690 0.0521985366547911422439434193047143 1.0536102255110259998164406090024275 GT 1 -24000757794224449616156324.4564159360153846602998951096432781 2.0139442998241577670508100335703654 0.0618913362561648519579836354134837 1.0638894904767867596535396555394472 GT 1 -178588243030196414578377146.8595071503395526471164730327571085 2.2253107888116996605699134278181882 0.0242731417183178248713373447556193 1.0245725900546399841534893590673770 GT 1 -105423364865621441.3240747062781818772973664077265318 1.2331110425664684520379761912307916 0.0302656920799938632409494560653486 1.0307331543655474799113112822094616 GT 1 -3942.8049831976624197784297963232950260 0.2300418901263431523216027057896922 0.0766864674150161247616713302688777 1.0797864135526148017644881892804318 GT 1 -23872717685973926735820818.5672395784905924771437482738339792 2.0452040395895069856482814193989845 0.0272597267025051762606912669953880 1.0276381663476308960459261020394271 GT 1 -6249718398826735.2093380762862780605764083469657980 1.7737230065966824597047471089436244 0.0648027687912402805682592042151423 1.0669978294694227354480458177832585 GT 1 -7978001127486958940317589757372608.7024868628417172967627344103485342 0.0174681379118988021978388197424028 0.0193302736832347239960787169345368 1.0195195465242218917633412887198097 GT 1 -1033783695880833962289476741066854486486.3132236319138057578560792422976333 0.1358460566940083905912850713337395 0.0523323923419598303889271701880444 1.0537514630436651930902100713028527 GT 1 -929645242522976317.7623874022656409349258746750709570 0.3610641750703559982884849426134516 0.0746657350359587037774598837446370 1.0776002392185383183760081283568340 GT 1 -241999459223.2678027031475594787375937107002473 2.7194841660221513328678919149315038 0.0886753922297321540708242730336488 1.0928561249144541585577749482557312 LT 1 -13157050320205783042.4962166398204329968122770534742609 1.0036314303892645087587947527082375 0.0364961601571866978281337070745502 1.0371788058291567105465726204950849 GT 1 -13831202758553934.4567070804674464820052248518427772 0.6952783500422031674062509772563424 0.0663129503130991728804860431019828 1.0686139614750239982214520970625918 GT 1 -686632560224534526501.8907185800040186387697654493352713 0.7031084801101634250879891668265231 0.0282298361992935654721224877626606 1.0286359594772189474562147093538708 GT 1 -588027957233052264192320512006882431.3248064374270617559503611018116181 2.6742029970184568806613539736980080 0.0976787846667421334306956977141669 1.1027847077531006830094768198234701 LT 1 -91190530061549945.0143417706474991986848544580926249 1.2141211481693225003253659716920508 0.0032713300021303645164315342319016 1.0032766925003163432332130160609602 GT 1 -1091437301865670106910026634097981913420764.8464875901350672157310619754331568 0.7209606828175130784121672260188281 0.0553132014751923428039249961658873 1.0569018365559777598864047607978590 GT 1 -15145527432736188153783.2918304656397152983778464818549421 1.2635093950472240138630361540871862 0.0517326587700862829412950609398135 1.0531188109664102613842864504867723 GT 1 -43362435288933013529917648478645371007.5363661026910174196135082243603843 1.1118535459554763300692725847656001 0.0723183008235387367143474260751528 1.0750666016098058419341003378660869 GT 1 -113043355573243674673531026810.6657645787423121712476953420655524 0.4820419757232577798445655688302439 0.0815160401250815296258569674889726 1.0850308378709312905947775886974946 GT 1 -166428216795185957809129054.5721161232486484683584823638746009 0.2689069778146082138933810825823535 0.0260108186980822854475495767646051 1.0263550828941882316096221952887622 GT 1 -429209664590164085904.2390978391607996673771210886424471 1.0780091796357558068447294189096643 0.0941871406527727477630875003429205 1.0989225512868858482333581287491588 GT 1 -9052699758094717471704369833759972571229.6640362354563738500498922549749716 1.9690858110212367373325194800058345 0.0425197082434187846095657695581651 1.0434501411610165924765241537586258 GT 1 -175660405696038957335241776355432248073202.4762876878993911489234422086770691 0.9608885109109995323527318146536591 0.0640533937710235242075156685820168 1.0661968487588135125692084754172261 GT 1 -294160962162.7276096152341381506122427418001738 0.0026737630594917221385075056012925 0.0812653338244905455442365991898749 1.0847579184713646790028855495437121 GT 1 -16617922.0611957194592645240866444044488214 0.6023698363256336248721929801090580 0.0014447109451738040091660707264797 1.0014457555462503156714928890597220 GT 1 -181795171060089508618393392.6630815624624154649684094474060274 0.2799967899664538425096165029464343 0.0819223508215496137033750342773530 1.0854733067770590056226937322669020 GT 1 -220057328605501.1924185138320802085115478678143695 2.2366367347266825165179978043922852 0.0654709027138157923533924720562014 1.0677125158284175983112107026734432 GT 1 -31.1411434141629093167288438235730963 0.4548381050956239535761693343419651 0.0172485410394208720092692328580385 1.0173990301118680196552163651326756 GT 1 -151968018221229587519741225944369491.7655779729912481318286674762574050 2.2978034618719764057544702252116621 0.0586868837663212997087406899477562 1.0604794463566182594288295544958741 GT 1 -588848798007.0509413646028766761443726156627143 1.3095912153228330737805514251730400 0.0543026372607897024778829124652471 1.0558326736510237050716453859222675 GT 1 -134500449.0270058465685376515009040568658911 3.1214612865768543185034980227273406 0.0504337207842865540537420824328743 1.0517499468313943594091618405829613 LT 1 -110.6640387943879439024833218854590452 0.3687971107005218069340522491488430 0.0348005494089813020197417605201850 1.0354205144491817152561731043499777 GT 1 -32244521625048113.9843127173909893114327995462444707 0.1675039644200125076870004103023545 0.0423205316519346758459171991574651 1.0432421411848774495321153399009126 GT 1 -5529272411901276440495451948296.9076569826074337180143519450558067 0.9254258865437500137964943264971946 0.0850943918970613410081823337164894 1.0889343795712669924939542197780429 GT 1 -5222667688.1766261401088621687177557645871812 0.1545142365244653026777278548529497 0.0979661727903198970906213985943388 1.1031032571729564708397337330464914 GT 1 -3446375787998288249476.9538276286274144742384604120702317 0.9171235773881914036570314698151897 0.0520251803811873248952806818589570 1.0534273386634112876009261605187059 GT 1 -224977570241014095323867.0461951931597476478967764854234885 0.3269808244973812595344908168218187 0.0720010548661905439968603778057940 1.0747246829058395839624144196993629 GT 1 -555216766195227676616728571.3346445281240615869135718015400820 0.2975473917780737629277170675139401 0.0914618723283824596371074790055287 1.0959184243087353449563175604469700 GT 1 -67913308239649371648278934887607287223.9834869336699649633756689143811340 0.6089898772040721403407889993380509 0.0202380669840106836107892496486625 1.0204456623225851331805986309997438 GT 1 -5.6010102535640498550331818328391292 0.4879134715353837008526218964309951 0.0750357731370849511878568045145178 1.0780002158792706557321023367552443 GT 1 -761247539150608040976752680705.2136606033015216207440060139426121 3.4096053609013979388469183251893217 0.0362128715290457656506438130342678 1.0368848298443795051177148600428061 LT 1 -975501008850358642.8509054763398940337571235409446126 1.0217491597649354844792035111517596 0.0303236945153915650748890321648407 1.0307929688628118549683183654999072 GT 1 -3090235681719602200235091183078101.6382561772662547494912901780050311 0.7365032390684886389179752601955011 0.0519322154356282387389770431714552 1.0533292765782783085122467962834449 GT 1 -299253576044670994198212.1397688037769699704961828245120332 0.2516475294607843063894564178443302 0.0301513088379677710526805110780938 1.0306152081449291006222483169966623 GT 1 -278.2930830868524331079957345179841845 0.2883420759775836020616260628026469 0.0907266158667483992401143475405780 1.0951094773998231840144694759133321 GT 1 -1541490925066088103919966200554.1250431790859762910592496676865101 0.0047352119697603781442470153701141 0.0641354638419519263895722751472650 1.0662845393052821409783311453220654 GT 1 -2169603678253388184139084094410.2342987938505143282165401353091392 1.9832550441094635988979722412560367 0.0132870834471347709871550696956426 1.0133761465460730568930290483070833 GT 1 -13357070761676876775.1161982191370806675467724453497448 1.6033837686749741489353242406629100 0.0491161909803898068761770098486368 1.0503634015881038682401111592231237 GT 1 -19688216730828688.2497735850006504347035846252529378 0.2202229410921057741624788435289999 0.0010958716353897679789666361366775 1.0010964725417613410644918699499421 GT 1 -181843085943496114547.5300260523585575655978139221564197 0.5467975222311120135296039996458356 0.0713719415476084362576866541697440 1.0740469879876414827604117707473618 GT 1 -11154433252670805618168308845.3911283591188170248943282669436176 0.4886788475419314852989296584062149 0.0157116578936092004154905314480839 1.0158363942590377237451293202016226 GT 1 -13073509027.0493313420105610045979594852010935 0.1627961278724066238751386722950794 0.0466486954537777805212255626943084 1.0477718130914141588972778425131022 GT 1 -2787300024906521145.0208918382814178711388561391896838 3.3165324632113936467542431156786391 0.0139130805084214017833017047473200 1.0140107746222310074474322323474308 GT 1 -141600191771324076279029794016.5469801738940705616127934712882852 0.3520238976033851087503236037466509 0.0087367597702088276829557569276203 1.0087751490178294819241311203507950 GT 1 -41666741369.0488335411603715576293101430721544 4.9460387375052357501321524858146661 0.0591865654377941412001844475972084 1.0610104220054144174346123431470658 LT 1 -1426152602123025112586268523750.7323795771894638254800501948100465 0.1549959929391408850934319621542038 0.0856610642109678227294167472073850 1.0895539493646288231042270882832664 GT 1 -437603373456536317090818750.1663811188454812004714935203598167 0.6104804145590462754273505967996733 0.0200741307185942031760445309375961 1.0202783537690423655546091716474501 GT 1 -6829943615100749164701501862805756246.7214106315784263980964925599669930 0.2339129958335748133179244226095666 0.0773408290288058784601427019569397 1.0804953748930912133861554086288570 GT 1 -620941386834794967502469561242769585.7540427154156488653411406702978460 1.0328893715712890662919542979318090 0.0119080463129781942974070076240371 1.0119795150316397419512884427388763 GT 1 -10306872347.5384710686823465346732930047362694 4.0247508780694372315885427909691857 0.0535837177217835089047760523479154 1.0550727620299693385989763476971497 LT 1 -47526465557642514770.4242379151022528270323310280811428 0.9947400546086250252762483989057509 0.0696303490644620516697508802662560 1.0721732976825152936280414707941538 GT 1 -1128.8175466786186323690400488975049099 3.5022896049549219948275908765420047 0.0428718166842117625720684825866183 1.0438179536400136691134169150768250 LT 1 -8164215714.8256644391092436633159238430970386 0.1367796887540270656674007940348447 0.0503724274783051969843231990818861 1.0516854001755102689051101838256040 GT 1 -1734174.2517337560529346774900017472895017 0.1910316690610038334880711524857647 0.0328370468158019356221996828447398 1.0333882835745701597808554413304950 GT 1 -270022444403536534507677705981714974065.2329400295205914853844066648933473 1.3328819974619983989773848990930637 0.0120256454506972633284128850904118 1.0120985385050603884044847238617140 GT 1 -5838199554940493626.1333783435516960824177653652170680 0.4403521274166519501285622565370309 0.0067337220714183285968678118228606 1.0067564958704166016489066499475489 GT 1 -40139162.0186691137115506574469341814330814 0.5873223811745780659320691588305730 0.0150047824247442796501596759698927 1.0151184930753824443611448782081893 GT 1 -1695843456204724496011710278818509531.8292589070550947233418453602617921 0.3720020145579642951921763155015479 0.0956175604974085219653762125590348 1.1005029555043445111814914090664207 GT 1 -5251940464.5168910222874542024002704922257964 2.1031057857825292133580592281744650 0.0800516762814609842962419059176488 1.0834377803877905903699225999335644 GT 1 -16025588594543723306.3090661114040613998313062767599213 0.0046118889571708650704511842127249 0.0864854782367820244696448956841659 1.0904560064505626452413034994104878 GT 1 -1047537372326040283.7525210146914963854775950933765955 0.5795016794681411356200407665310591 0.0195568782297950797067531355435284 1.0197506444417026859146202588044964 GT 1 -1033528051072046036474945.9494227267104437558999663108241758 0.1773635765166565295888069039420056 0.0663663480595622207564599135696143 1.0686711533076117990781291765532885 GT 1 -274694040350636765578440374941896418.7717986988059485033453490638321865 3.3097042358639856043606908696736000 0.0570342023858294020307602966337728 1.0587252667687226134191217958871447 LT 1 -820.7402590510583693050701574651038690 0.3447827936139925537624793328267230 0.0614217302224545391771407016145338 1.0633890276290695508145112299454151 GT 1 -22.1421221455930302670870656090696436 0.2837680015581641113688533332043015 0.0799977173603368986343121586230524 1.0833791278120604680711529048746712 GT 1 -1192244995140490864683992801216816044.0404762966148746787365623387752334 2.7561160081766046537777371216125701 0.0514265619634180290585047949399317 1.0527960671571553463563382295346806 GT 1 -291843571460450.4713697775774241782336545422450363 1.1738505116224231317131675807607684 0.0978853323995791458345837429992818 1.1030136410565143893685364462105215 GT 1 -87715199443181752059437200.8705206378543426510178528160149449 0.4818354909302576868991260300016986 0.0704526386206260726136284463603944 1.0730575195099354779675883758930628 GT 1 -21130136186605381226551238276275187865.1024292788359833297087768625132480 1.7412070823301480528873959723524387 0.0721337479600499402039799618097865 1.0748676815398864815940629847452148 GT 1 -14040249736530574579252309420804580103950439.3051140982588945220733204190155877 0.5931284194445361213080307654438795 0.0593297484945834368544041801464641 1.0611626242893098079110732488644333 GT 1 -25890933104513290.3485976555617812706075308223666045 1.1931162852882338146532013017470970 0.0303810035764554507049845581613050 1.0308520718380257683475689068333429 GT 1 -23.1923698900304292051227565393491621 1.2819089917868464141681634696054550 0.0133840236009446205745158277059164 1.0134743969231227916787664307178263 GT 1 -1406567118561.0304154316232671904736485759508307 0.8119315006845680072092501407499317 0.0272289969850445086657703864005886 1.0276065759705024029100779322866505 GT 1 -1426247395309585509.0043027426229536711771057130343828 1.9186381764208307807604329290344876 0.0551193731439972452769416839696941 1.0566966802548355837496073892036667 GT 1 -227441159948303.2413165623579639243526769531693778 2.1475792576911422654647903185350093 0.0821275887089609783609806050076218 1.0856968835427732204928776086024827 GT 1 -8124678240543154521315.8080425203902400272217809113202002 0.0797016636426144031420974082036871 0.0787915865080245769497890389436610 1.0820689778901936997197547644089420 GT 1 -1486674538195929989329642052394873307.5263317753560997778624557041210579 0.8613730513030040512042381605407935 0.0508154244551671997778173613363804 1.0521520045053282692090547921147945 GT 1 -7136707457971418745142126723624957.3942837586763745609593276044508889 0.2708815015095365122416897774107916 0.0185582376848768271246788619828750 1.0187326024156192956741740204285290 GT 1 -3043.7581374750105702117355651125543089 0.2573904534623011870421801463655549 0.0918701360598564463581718083499264 1.0963678886469987504973151221822631 GT 1 -33252277070282977496655.3131352105045264340244662385482774 1.9688829660861218222465996521321728 0.0234573674407056967029180874869523 1.0237368710835459252187385140508449 GT 1 -151959468955568269509.4062328961887127958073731848214613 1.2355548292371212235937011238141363 0.0404319105707443218220382812056089 1.0412720026032312268436059385983926 GT 1 -56786027839381305636155637720997846296066.3890096966887195840497908030896157 0.3468444783567904974105616250754677 0.0140707792248419392236922055747963 1.0141707111598045427981231775892851 GT 1 -15982940456.5874025777182658979900574792460602 0.3942046223664912622374715804536533 0.0701372637687280315059621271515277 1.0727182991783609713496206400713820 GT 1 -103612432278.7129587282395591320135042813561703 0.5124426534623335247683516997061717 0.0362259723655145519532774981043789 1.0368984230177296651139714678857349 GT 1 -1549493.7430906646976586444802018304894321 0.6795099280715087622362815392557338 0.0909912425201441756726104108960973 1.0954005506598062081159902702706084 GT 1 -1778734038699562.5196798697386141456133453438688999 0.5836801220628063191398335732739721 0.0499952689548530041638856823817404 1.0512883143524277754112424012961668 GT 1 -254.9848102821304320514519063463394884 0.0167556052625049104714577915004704 0.0148860753493059812135978715827945 1.0149979849542457307654869393352608 GT 1 -10193708710716.2308484783344156272985491092933884 1.1698321289851225830071996052632315 0.0718318306578925216338733986838413 1.0745423456502690904599872564482814 GT 1 -268.5960527801921278104087633948442074 2.0475434248453259411325920206122286 0.0802552973357625539654276993379297 1.0836591445525865179418809076995283 GT 1 -65553343477315380625210.6451949353327510592393306191298786 0.4970478474797025957214196130065197 0.0385791358070218839534771297651530 1.0393430218719904564065530247520686 GT 1 -3679247603648493170905199251402427.0065552800816360844236867157068719 0.5656566188562456273298934010988568 0.0883335385933833521266752815779063 1.0924810779423258130390190973656663 GT 1 -82028998636585672.6832219066573614725683418861717396 2.5209429200339754737116576474416779 0.0086799377382761223899824592144498 1.0087178278128371313745807569531216 GT 1 -37608495.0655293663167488394331374616034725 0.7681274986896833982425449917232585 0.0122581713539759176299631754032524 1.0123339224193392023609259685275509 GT 1 -729940644440261717782104600974381367001284.5927703690493574559948908467659851 1.0036681448570650024497014418652225 0.0044502668351256814559821359298543 1.0044601987499789194902481946617099 GT 1 -3351509484149780938524691884459382248.4505883202872890392018415885673372 0.2263864859792915307911290703169140 0.0146191206873742697132077968776518 1.0147270330460976027546194261406448 GT 1 -19337447560249279962787662325345726.4924280959677498178674210518335730 0.1263484712154244545188589515833853 0.0179968788349756987239639731795604 1.0181607922569336953551765761061828 GT 1 -6.3850029911693847273226570366675462 0.5123627156928826967109781369255975 0.0312904647188135773072873310993525 1.0317904692192960873376519643570488 GT 1 -1057557399622413.0910722386260410832131750063653815 0.4898639397730082620520120404794622 0.0327820957295736509043068418943571 1.0333314684070385968785605125454425 GT 1 -6743334873569758.5369870083588665645594015820228980 0.2493643168447094561312038060689027 0.0787900543949080809072289510901017 1.0820673147357761034318605612459260 GT 1 -1565903959364576341359979695498145659.6923811570693778138989671013809699 0.4435418356596765067589424546810122 0.0997656482698795610273207668993813 1.1051001587423846832802099375995571 GT 1 -102466179473668365182716892593711584885789.1166872072277638913221895186388391 0.4972064986302561025401801206331896 0.0495357102679056485193181306037148 1.0508046877414380629511831470719873 GT 1 -165937.8670836732623587571113522226249721 0.7631138700764684281850346263655417 0.0956117282389356822041721729204404 1.1004965066400008538238450475063245 GT 1 -3241867232510897591194049947.4089459960467491423821935692981805 1.4634501182982566698497811586767245 0.0370730854423511175600226386646445 1.0377777635659912727829811845891799 GT 1 -41892.8004031000947228863293123943971261 2.3884646588918142721692645604989471 0.0742015076038067790630687768377775 1.0770986788198710832865224447472614 GT 1 -143309023.6588064773942392656418377536705277 0.3462083608946573975103997258978621 0.0334044859652500478922528427896029 1.0339751605556968113274679822497068 GT 1 -215847014729443137766321661245.6255958297026019058042590345261343 2.8367278938147858081120455903405387 0.0227102323320945290423918732744513 1.0229720816932777806414881561167324 GT 1 -40309626959.4407127246188642102423162992402633 0.4775770518058806700196503024418042 0.0674955601228723539868414764379879 1.0698813662131659418429309346217504 GT 1 -12148191889.6358858269619018681681662888833332 0.1303781536134201800978340094498937 0.0845536896635678707446437347398912 1.0883435617686633527729046366997080 GT 1 -12157301665914474841258355213503541482086.5581327133554619864232270054271343 0.0971897783539561596520602911539874 0.0429487887508601981961903057002160 1.0438983766838605261255728579293656 GT 1 -14002083125.2084482396831272769888418962630659 2.4567678815654151433105577941671748 0.0834164568657258658834683742960936 1.0908954458614492520565627795320538 GT 2 -461089048879625302941980.6489536796184912013243731424550332 1.2360882898759371075596320527005626 0.0684346045051541030126024104563749 1.0708888869013911553703266085741509 GT 1 -1706317754038565635256320.4013294831739580808714654466018270 0.1277975528602615049800530435601374 0.0997215139546356928680007387442882 1.1050511345817935986788862871443318 GT 1 -5061815829721807.7847426689283332763720319742398548 0.1655158534782867469122296925533959 0.0440078831341903866284999781686673 1.0450056119209999453251459861561483 GT 1 -172754669348486281906571988865388784645.9222232405736769800640746441547500 0.1903717630727315932770853745788477 0.0175746174033961782209788713482308 1.0177308845893606631802715579152215 GT 1 -56385508637202356.2167752001610641653851570382303902 0.4858867460520558593785571868533554 0.0160776623381915479656719477490670 1.0162083101850749794482979576790495 GT 1 -88029352836029955430770351886537582.7557805820915756483513494662893408 6.3158202814967801877638904753801619 0.0194258316269514464813656661784251 1.0196169927868219363274000365187800 LT 1 -1537633548368188239160381409621552933.0698894811632571892901646351276403 0.1742344229163015652571943711000375 0.0566107250179928896679174114108942 1.0582762766701959085931680986043013 GT 1 -31551516139945788970643188971521944481.8084481083520399401891118879435890 0.8560505406546641281679843714774320 0.0031449824476858440900485216890351 1.0031499382984208134779707341150268 GT 1 -1717184308126649392022.2765212886986467460886119388895016 0.2012523991479950021098606520262405 0.0826351323453182674904416504363551 1.0862499931108049523943800719997743 GT 1 -567153292141442251504596118522990.8480367336048888615200016705966930 0.7513149318264928844864121376294278 0.0133282354937819198699951462738928 1.0134178536162131053243254298555065 GT 1 -289807024035189526659966862.0162696653769234043730534326366932 1.0789258006119004826939570691134586 0.0186787440850506064795804033276931 1.0188553950290993101026601790105271 GT 1 -586429052406215768.0932948562318227591107508575023065 1.2798001715946641876411270523311172 0.0570605658827492876433839383941682 1.0587532252222843536227414367764365 GT 1 -70855343472425613494764919712.1361832680362177458977386000115252 1.4356881169322582872651685468125236 0.0815815488863448321491309816218420 1.0851021631203285291100504639621419 GT 1 -11921373.8545648540840347907890883309093031 2.2270086981684636602887428577162514 0.0339161174619809648313123858483603 1.0345046136140674140093093642336794 GT 1 -304081215294264933613596854261360896142078.4313424497827748751054842343835858 0.1087983358974993475410218465829403 0.0370876528241560536340092836726443 1.0377928919124682279433077272107076 GT 1 -9847901447988148317482480541019621.7448591669807310667432098650595455 0.1508821116619844766207664946269273 0.0805302170146128108020319594873388 1.0839580979188663499272296125836956 GT 1 -226750.1088698836173729616130825369371263 1.3400658044364021553519836539445197 0.0372998912531840038391861417045840 1.0380133292379898795705430918326916 GT 1 -6251864118244396043204748696918859224338869.2667073216015302915718430913755918 2.1783160135803950320692705598454931 0.0956037920036615912273205815215533 1.1004877314261896358888093030868919 GT 1 -125.6307576639944136454140210247411900 0.0139560859567977635700971733255438 0.0766026391794415868741621770321941 1.0796956270240558819798556335060023 GT 1 -19123273830106739013169926758431.3650590420402916508160494148334939 0.2359903564595160089793019840093521 0.0960357220178663972608519811121937 1.1009654348772081273818430721770299 GT 1 -817375653305552442662827871290.8643292162814438359298192138877091 0.5273183102520517733922277983471171 0.0453282845131157091016091071815617 1.0463877510150312270196003371022725 GT 1 -464366134908879169.9262785432043213783421728477084589 1.3286679981427975505357403602715191 0.0216208416482223240915416669987685 1.0218579966024363466807709300475829 GT 1 -283476028426233042537658817973375012.2070168313913834168903287091367181 0.0176288373716192007621765566716814 0.0121389392905376101772772925011446 1.0122132179354315394826193099231192 GT 1 -4.6829957440109391017364486444786291 0.7555105446350079725346033665454444 0.0534404526885067854732502629385401 1.0549213971458426269702276751315804 GT 1 -15529243228559940939975278764106354377.7024178903691234163190375342447715 1.8114614227578386486674750030200452 0.0450547666894966636713321096297238 1.0461012874646718369738704044954470 GT 1 -24206542093630451273227.5081541227798543387887458169289564 0.4556131071987272130059492218073358 0.0884626084934540491449935783199282 1.0926226637557608635123441152279188 GT 1 -85007519254167642846729574471984662381.1438696735282729129344316086400174 1.9484608960122211403240020019268130 0.0397702243694797618736892459428048 1.0405826735446791928773807397464656 GT 1 -886159983422347827.0605527234738840106603983636361196 0.1370447944934945175889016906685791 0.0595337996676566936900105537087716 1.0613795688641429792617181768603365 GT 1 -414263615877145307.7461850596925062019762532626312539 1.3717366391750902376063410330262359 0.0755149541840693522190916507177568 1.0785184037147366680811438504900053 GT 1 -11045887838204033939429147.7570916748843697341245937835754827 1.5391778908466140274484437084265521 0.0282489471136231174857587926816873 1.0286556257552776396404051088190000 GT 1 -690820695455909278537374572565918644.7530565120698398415889338149396140 0.2694593058274847695200669227112914 0.0242169941754042895094671154747853 1.0245150473857949647865865947354536 GT 1 -2102400194173528782128524.3780147378623454357161202462324338 0.9126511074342889526626799052541983 0.0460976712451253417993528299759652 1.0471939935352077404655182807771403 GT 1 -345992335095489952993363766262659121919755.6323582866645867170681739297997971 2.2938046319784402610349993305460558 0.0315346710481121083163021911452046 1.0320425954832705554640036493165566 GT 1 -529272444022478324189967574309026.4815139120283194905839941360750599 1.1488502381557922148826912890950290 0.0473119806358523472186309973290263 1.0484677958033426385790881051606384 GT 1 -13857305117821485904983966.9080702336714388435287910189928252 1.7864529688405113100778403848806539 0.0056652160925284421529767162618209 1.0056813242956589899115090913381855 GT 1 -1430922419135105365.5109473037585886125658412759736171 0.8310555480144831148381529255008699 0.0207434310400352187855951772875819 1.0209615983045322539000386413397523 GT 1 -44135091729122890881.4421274317649031294716806675693172 1.5464442735575611278953652454903674 0.0666364010840550185091991595218741 1.0689604446027674916888556283918134 GT 1 -354377813222666160841714395867283022790.1265347120427680466862749437686463 0.0328837298806142668660748963986614 0.0611048455472950518666652922029258 1.0630514626078245812078698445167694 GT 1 -25202362475293093.6055499964944881261620879288346875 0.5560598096933699668474271657908128 0.0899864905151824284711606708560137 1.0942958339937243564626297101031788 GT 1 -331259281.6977032080038178530282844562309867 0.4757421027836875536270891815046090 0.0427861170821172877219416583852134 1.0437284193779156390852594952692627 GT 1 -77677080855846261052537625073600.2442100917875403574575909891361973 2.1323018577482363319183605032119960 0.0905435832577761169062087027211312 1.0949082021917058592377238509132143 GT 1 -173182978701820122955945823937347377.9537845268845728563771038405179091 1.0553575708218475483847417611097913 0.0715641854123410627917027542431234 1.0742540286481273754565425180999851 GT 1 -22674909118768276123824425858654024216240.0897535196764589302399319147622358 0.4884168244039456516671456495893383 0.0637812400112046474618625110566670 1.0659061118755800159745340564065286 GT 1 -5374842125543620262.3608961640559590563245776314910135 0.0618024299456608279930656014199243 0.0137043110132106788708992294116446 1.0137990819262064483297391620557414 GT 1 -42494.1042424951666358292929189008538696 0.0447424714966492728606000186670071 0.0122489784793627353018750088344339 1.0123246155017135849028589629500560 GT 1 -3325895970377983766196254252868876.9588950797160120091910211162157663 1.3052412311530066234001522318273728 0.0372725158265488795860935568482626 1.0379848935525996551838773135794584 GT 1 -8677065497910573901603091239073922649085.5219333256754126992063623463132104 1.2247829648431878947725382095986100 0.0934964752264291801058717077344015 1.0981603604621148242311766870370914 GT 1 -99142228476644669621682666.0730348002904253820177078557901781 0.1353241115467337380666593090507053 0.0863602114193336247079736275607940 1.0903188896050553977606755453920039 GT 1 -39829489108135.0642779571113429810921536108421501 0.5751250323835376987704259783825317 0.0229566423024606232060034784444933 1.0232242495232896231682550982985311 GT 1 -654.3085344030983768193237781006240167 0.2215978580385926161525260933002047 0.0275704862150952623756386506554014 1.0279576855148497659117793374103547 GT 1 -21308701527377135111.7150193030163460033280269621486394 0.0503424583909266171499562737902184 0.0062136483279853175005545357586619 1.0062330333837555141427554109029364 GT 1 -20211844027108364011397284989017779.6561247842003983240457915012800131 1.0292427225116921193122403638933664 0.0144797515250675992626596736367402 1.0145856062027374594197629371970140 GT 1 -3013527540330253.8100142521926270158699762909128119 0.9493937825144389930913114969511313 0.0082613838137376845568571209040581 1.0082956981650333555529626255558615 GT 1 -998733732639711540803385073.8287033295877710227723065483254300 0.4135202969198919386526804949834067 0.0235154480967160894448521951559880 1.0237963486540473282500047168701443 GT 1 -230182196135498736774062015439637507031.9800266021569741714289205796871596 0.8568376323735294135936348136045126 0.0560903034572256624721815939779731 1.0577247778543645953131058329379289 GT 1 -506984.7595896375405415233519434052321010 0.1997154179412518271965277670807216 0.0342250121353542206244219359300099 1.0348244037195851282941908497949876 GT 1 -39261010867729156290150.1374941482965734132371757209218484 0.2196576425559541886034990510508969 0.0098085462606660084071855501515604 1.0098569669349870029976767186762312 GT 1 -11390503.4432768846365724882937207700242806 0.6098962904874654488821085139301749 0.0499822532942910067651219150170856 1.0512746138191818653664964877566963 GT 1 -47828807398418860617220.1449794183713496347963050426565611 1.1711998796837266997637441290166007 0.0459485109873153426432846302551837 1.0470376372788614444195782748517165 GT 1 -6349917649972243.7658537265045558036104728206680859 2.0930841068033004795562429833200176 0.0253646246508808087737338973039274 1.0256918519309090745606737272165004 GT 1 -898847957734296322029671889455010109815.1078934174958398689817963500591504 0.0627659325152263763456870515070135 0.0103371260287469636942644597974998 1.0103909251896338061882681289867447 GT 1 -23.4893383211497440641048189300208911 0.9449079654848898811255129022958632 0.0782707395813903575859481614032560 1.0815037423449284202323414572485061 GT 1 -2525159664383711127619.8638245361164020568390355704211414 0.4162399418010738747392131961246011 0.0520991699656808102990795472889787 1.0535053918675279040049839270338267 GT 1 -81906625926986634353197166010220770926.9518453581553735324496278814582694 0.2779635126785499843612958928862882 0.0671554739754398256611181390052412 1.0695167307938236307150756252706209 GT 1 -243783821787298317712357461821617534.1000650842112427068104924311766499 0.3063937093968662964237918554077068 0.0902076481433299568578616487764455 1.0945388902822377537236498434834159 GT 1 -240386801691169112561440031.4280796224241697404502536145960730 2.9608147662958366015006755276485347 0.0240238681871504409309466424492807 1.0243171479778609260130562693024225 GT 1 -349814383660.3299277600901277732626327319039694 0.4537719318864344983831636968953993 0.0238741258329526515101899393992664 1.0241637314514368104144993425605736 GT 1 -4835662.8924991766204190342496355944423600 2.8778331932901137536740992911305160 0.0774957700253288616693101351802762 1.0806633177395705342648093269618815 LT 1 -19516963862697127275926.3199883885001021043035042582291983 0.4986372870255122797065997664730475 0.0802893583453865532914792613420506 1.0836961783514586563590725473138658 GT 1 -71337188178824876089.0908313809949151305132920972817188 0.9045995486247620836655911954210393 0.0783074154206655459021030579092685 1.0815435333882856919084943181974574 GT 1 -25561631870086220803504379.1148154085410157051576652112007050 0.3915387121567744903399063470253827 0.0977897010642508955828112314271113 1.1029076387152605474274763327174966 GT 1 -61031821814028576554904.3178254623004869016527875948208036 0.3055482686484529221482843663134776 0.0923855176490389573579266469592215 1.0969355694486224834450061233541040 GT 1 -1594810893276415275494652141273162524.2696926737438649075163536110823566 0.7258824382149132597030501337090893 0.0369407043902787096769844950235854 1.0376402952377321863723842330524149 GT 1 -95389871538162075884467088918.4071275293110473973807535625866803 1.1249076600888780621199146478323406 0.0147583350141283351025980912173394 1.0148683227389293824532120869909227 GT 1 -36363662941500.7752755419408745267748168762989814 0.6325774645356005489658979066201405 0.0844251506125858192444088666150526 1.0882031602768394235392209636583032 GT 1 -2196201299974214410390280268.5881351285028087176987714235138992 1.6054018241712926610442679165722342 0.0582888863876809976831108084628614 1.0600567248873363917267459014533712 GT 1 -60357.8891993125565387568434904342778169 1.4719552838329884631724400126902072 0.0566002048849934170479478268969726 1.0582651253092236503428156776495922 GT 1 -6113920132351338242876581539.8608350554303774495455457257447886 0.1787059798150047177822371922801681 0.0804886893253053290162191056546506 1.0839129341165219885864784772737325 GT 1 -169084981549826.3458110049257757064968885271357447 0.7563263558058117828697185998680054 0.0682960392470148226557265133623780 1.0707401534314501717822847375899060 GT 1 -20377687918369586840057606835043689240.8991771215520093987153414283496868 0.0890468849520293164025421940024265 0.0419357313231249582688637821235862 1.0428404169599220879503664022348843 GT 1 -43.4632031644396598347640395108088457 0.2611464784881967991445510285092909 0.0278492749778404470388568880408913 1.0282444196481003412211927624424568 GT 1 -2025769692560392542729088170652235.2280416908720706743823512142449087 3.2927387744206999418153881646487799 0.0950011102912304021227600013403498 1.0998215621241020667007924600894481 LT 1 -150787776646372599233652336035.6532512626586707194379038425555616 3.5532667754539010986788528687098845 0.0463526888745992843483208472365545 1.0474613707249402475853707977188951 LT 1 -1153489097554073982112825263.2602400543317413097182932619760818 1.2680444683271669677860702400418893 0.0486078256699992038878678187763708 1.0498289204434725673651782367187003 GT 1 -5430246283378671698119739082326.2295910552224628286508161682065858 2.0990250706032936772391989553193676 0.0286041465933279031901450361882978 1.0290212177571079676128544930822424 GT 1 -1707957997689386248731763156038067611.2104914142207930331974615311495373 1.5746445043281253272908708696705184 0.0230293012506601811006919729324791 1.0232986184337826898056095445179164 GT 1 -2823467710754275870276229786113.2634552654590714414222872550703770 0.0361892686553842580490980345822366 0.0705877369962567473869265630638691 1.0732028678801706288189154457131805 GT 1 -2609389386019563253450821241415167883412053.2706807106173376763879419296679746 2.1538607415241583884034446212776715 0.0993380305011149959882607854345540 1.1046252643558946591408570403955625 GT 1 -9922535729453507.4319161800766258849896651673917764 0.5818995472204784377175643860327865 0.0091855543188399328700138490047784 1.0092280016577547155979024020237846 GT 1 -5107832.8366945850358572177794731860455442 0.1073233899654090109393512293880869 0.0381955410351255631522841374152576 1.0389441140868608609810829375412520 GT 1 -914883406748042601634630847146912575268.8800906239330929119842808494200355 1.2242927745370707564687200105547125 0.0447841775066497116791183362863310 1.0458179718941499110864727050703700 GT 1 -972617968074486886470.5218137711215171088011800634351220 0.9896600531692655710228687105732057 0.0641252563914614152013446691359322 1.0662736323904132226015330063201229 GT 1 -18569329877759029630528742832519651973957.0657860558576122677410688999467721 5.8986884714043399588620137191145743 0.0968768535846047519165876854131798 1.1018963600954653735032162849000006 LT 1 -500.2731635041783398203989592886406010 0.8495750880088650100574684130394448 0.0595355638874137709123763522754100 1.0613814447650644637665419322774756 GT 1 -485878498913398891017646196331775.4626674278746271168863569552437118 0.2991338699976083376559521709516217 0.0661648379292221323904939814503828 1.0684553423343732613948534696448128 GT 1 -1174952437614142277049458751284927821845992.3024754611318308212547428146512949 1.6223523659214336750349977047225832 0.0164016964072039168177424965368178 1.0165376933337420979341450978148084 GT 1 -926605585949536184207895605526.3060053429799819990755428009630259 0.1617139232277224265042330553988168 0.0585682309494605442169130477013768 1.0603534039831185412201229434295280 GT 1 -739306869868.7316002454922398845680231905484638 1.8571584815299030348371144866068408 0.0698549746529332809344998888212044 1.0724147637590005998195003607360257 GT 1 -2741.2103532678500304259427148812504214 0.3675836432499828804801869382729598 0.0338154478098970149644162256135528 1.0344004152010873893616467836882757 GT 1 -156149260883512677.2787357111859061414196531998619026 2.0981543575181872114792691472837832 0.0508822706662795672337018447900155 1.0522224318666270523177345704524243 GT 1 -34729114882305297897757202043961501761637.6446205890229561462833903867613922 0.1147055683669553645414240129108268 0.0870222039507416913787068038508245 1.0910437184537004196081496754097785 GT 1 -2930880924222712118398873083094605085008754.9683053330726753135245176542378984 0.5441690551338231677896513812442179 0.0977224980950013103607876135927241 1.1028331544552402318298018810269597 GT 1 -7802832501198744809493496877.1391595250616082199491006266233312 1.2481372993098423544185699695667348 0.0728150939785386312120859269898904 1.0756022661858855793469169759059034 GT 1 -4361925762200.3213952038807740321378146599161327 0.1557566359303503464792755114819980 0.0286095071475246250561958777630602 1.0290267361757514352951753544465818 GT 1 -152196426912356352284192645741752924.6980698546145475265512856519844039 0.2256848899876117734262214022227671 0.0098062841732876793138348396940263 1.0098546824426437021648484989671615 GT 1 -9835379508878058.8128759926487248532314770926737626 0.8739152145215787983457037866151511 0.0094444893859271465073429702165278 1.0094893713910936098401767460364865 GT 1 -438892867685499972820547.0852524442084439328945464914163877 1.5863022734153216810303592941466557 0.0868101661037521732521859395142256 1.0908114967841609982259460207560671 GT 1 -19787397332580229220673931.1656423107661173660200183490553605 0.3664309594006422542538780140835304 0.0801753505219389580865695772051223 1.0835722254986450883769612000770688 GT 1 -47791278079664435210768.5237703286055684976854763702109692 0.2992721331942051628542645733866633 0.0192118802044970237972989633412211 1.0193988266432250655226772675686485 GT 1 -11683081105404744825239906861.6173502463303583039198253734590841 0.0407450984110011718813798764513162 0.0245503681283743617547240832589911 1.0248567533923196316806681656531453 GT 1 -346495603010.2805609427962670258917376244589417 0.5632243796029180877844202374914873 0.0940596644849547368365530975254038 1.0987818299475887882832323956445781 GT 1 -555183.1610087624323126269039046756800163 0.7076529697573727720347641389845323 0.0178368689092348609531785262538687 1.0179978631505904435063286277631031 GT 1 -22803352866562.6026429348422302727082215492032950 1.3343510182173193901029211445187358 0.0289945098823344689166582886193409 1.0294231566206321300626068814209043 GT 1 -4806708735067024216846051603810953864863542.5219143393438985846591738969745053 0.8495605490536976181073414993893622 0.0753550829819458991726794351297523 1.0783454886619982717411200053894808 GT 1 -199405545.1453488663560513052705686012768841 2.7248381911585746297646097221792839 0.0180167052868221899486033537784316 1.0181809822660772150867488988177653 GT 1 -231.9882506162591133015177929292950406 0.0775106207591541703740529403679222 0.0739527327439710542302277155183280 1.0768300010857395043821192703391946 GT 1 -14142244940423019211032953067424.9444957159435410301937069994039786 0.4633559572302876400796429444206702 0.0984378960080946579718775049316518 1.1036263490921279332243480498859501 GT 1 -20660563758139009.5449084473459248493469901434437774 0.8824771177535620692942053880312366 0.0724102091853620897194842557087523 1.0751656796826316993952036347726107 GT 1 -829834707353089407740656.7443268324367312554300246778840475 1.2446842525436699016578076742101283 0.0445487750304509600914462802948307 1.0455715632090758519559229148400150 GT 1 -13252.8456315918345198498322977322994481 0.9732958074852897326190451380987473 0.0343803256536514357817013643324275 1.0349852341512631380022574095129017 GT 1 -5941616725811491802001001.3634379664795172485534089372708263 0.0828384158982877829410070607726104 0.0921781759022329169192419363352157 1.0967071486034834369093495415994283 GT 1 -504971992655017663.4998928234684708587256602448343734 1.1867964653244505899008698029076492 0.0517852796009268670779219842210525 1.0531743040627265947156463902686069 GT 1 -2693925029379912691230639834335187606.7577513844423331264533014071688927 0.5651694293807600260811225161876554 0.0764841087484154606675817471954211 1.0795672718551751844492794742665782 GT 1 -1162281986181983706764960531538137822797.4032271596745845882776124933608168 0.7982754661239643045011338402494952 0.0167854761233038505630136427005850 1.0169279487923303852037264745750041 GT 1 -3407844554.3898323407334368762564557434478327 0.1270487737297799431946011261397894 0.0481541547621438823728811601319642 1.0493521845735672914039175062320216 GT 1 -11520342004175252663257642543326590980786901.0743918148148708704285194076904695 2.3112958405369854757833108588277764 0.0479857691350869089613961502558927 1.0491752959149840185724356781817611 GT 1 -4660101624676274.1806791719007812210269576445310371 0.1324489848105014397099098285894631 0.0868971123513082611305334397395858 1.0909067128977621354876498696203838 GT 1 -385182141538993.0152549300052434666757938733509723 1.3473421208035220667472949193767704 0.0834811407257665203092012522131817 1.0871726344190191036325785915595157 GT 1 -4172056447290420361770.9666894130717074701363602834679034 2.6739078711446278384299329945499949 0.0892098119060440521306218704902942 1.0934427176942822940684661579011516 LT 1 -6279600641668977.0225530893280791288730427570043953 0.4156929552190808023353813875199920 0.0254284144775092414782643079678513 1.0257573040126343329159173107076377 GT 1 -451930715.0163162274792918545803792974535224 0.3090322785284412350323135691955610 0.0799362264344020935997290455371058 1.0833122922484671623468374729946676 GT 1 -6804893358923.1390196814091317205656023454071487 0.2313342975206059920231566425593612 0.0391338453007036107526115414279898 1.0399201568197138054920964963408691 GT 1 -1278046408531292133893218451024042.8735523070634444424421745878306125 0.6942623791396588359466705901025911 0.0362175710274887108432148793204922 1.0368897059313926113489749338092780 GT 1 -4199537238696163312.1763746837000456531977305172767406 0.2718400922270508497342766654951833 0.0779196270562388978620004012211592 1.0811228868346388134262627128916369 GT 1 -1781073323007726025.2798204628647742598466095176821462 0.1427841658578812086946636801374284 0.0230892046267358962218842404960275 1.0233599357411779202319342245557619 GT 1 -59181077188673340926354.5836175087606438609559984977125493 0.5781528283348679632191806113370719 0.0395001991232846809464535846815792 1.0403015040856603521853692215153787 GT 1 -23311555053.6939314003056208375823501229660643 1.0720799425120682227906223431136242 0.0274493305089975908857645639314832 1.0278331025424409526387577499273644 GT 1 -50.6465866471625076842809273752243167 0.9538290216493117896735334448400782 0.0164615743547345650636879167430540 1.0165985716109448566103357700698042 GT 1 -19174688951650175668944.6069370545174133194106525160842684 0.8079299568111768327031844260861732 0.0014480929737652817985008574774098 1.0014491424737002969279149495506885 GT 1 -207.0579353789351930670008861192261474 0.2872245252968218513641965976920197 0.0229905489048028973164587700170425 1.0232589533984286225572824226112168 GT 1 -196230485179217516.4007076983796146531729852202213446 0.2724616414550558328492873660608926 0.0526239411928876231545533405293551 1.0540591592285999375679134983722024 GT 1 -17421168092953755406894729518.0913175980315553919944437417814143 0.8486386344518908622777505524440559 0.0606686308070929296238519964418355 1.0625869661878736324087285461249646 GT 1 -486611.7063362745027392250542607683033132 2.5116816429101662255090928938907578 0.0409213804824233218489203294752414 1.0417822267315349341812595769982041 GT 1 -222908813598558356545671577232697.3786038228397523168942215786359145 1.3561347534293798051287772540925943 0.0827906138184679971500214890590937 1.0864194945340336561290682963160589 GT 1 -1.5883749145625125498285833795451973 0.4126899391960489162052082543306985 0.0497664180556030704513452765559696 1.0510474488790900487020484024108954 GT 1 -258433551118997.9770649589425077096094456779675136 2.1539762345459505079570676563046289 0.0740387460962362611351811647491580 1.0769228876479170750415394467128493 GT 1 -27691496374540167461102831400570873.7312185305936797216889920786602413 0.5615386321339931055650794173676151 0.0410288216073034356891821095007314 1.0418942583639873833610903104230367 GT 1 -3710240144208327958307.6033260821750150986152392438397344 0.4257247362459099826061439828543584 0.0501167552047412209038208534088257 1.0514162021559179327602336924108098 GT 1 -11091654408698744059788879196451.3260590297546725999342930038528417 0.2701553285506049036237868644932809 0.0919802073075352002433512368797468 1.0964891024989646863419418246193205 GT 1 -6017860260.2817927285871236801863294664273027 1.6059726922416873136740995411412155 0.0208088374905173330819473573146360 1.0210283924797920208752314067987350 GT 1 -27095.4270199862326847974879032483972598 0.1731556429341442847523040835651769 0.0202461798358572417292298869364516 1.0204539427886476672389694991617111 GT 1 -42827409.8514987660584672601075228164409538 0.1847991358597447594824221373586104 0.0370196726467786287039315902322649 1.0377222958940039266808550989175937 GT 1 -289189035862363011.5517891287829786737229781014620515 0.1144306813725929633762144990747309 0.0340556123754600359878574455787507 1.0346490161736735744340721495550030 GT 1 -3131726339024.0188008022675548523056816810421621 0.0198000309467308370320639694830302 0.0558977304742466856271020203752470 1.0575207823425694111752079432043849 GT 1 -1.4475488674721675550743604364815696 0.1548529535322365408501220938842160 0.0995372490553264137295682469977556 1.1048464800804501208243660146926973 GT 1 -1450819482902382443.1209504110941245723391572823457706 1.2158370097067271931299877854945402 0.0033619234127961456384766998129740 1.0033675873754148201451631968361711 GT 1 -436680364780.1058671228134482953429825260200102 0.6437064533412070697121336037935321 0.0317247109023965618062479329800186 1.0322388425729668103261088376744545 GT 1 -147792.3843000401771912665274375985518356 0.4093390596943440726906158548815700 0.0583995161037280288034108927678252 1.0601742091276720105598572448443297 GT 1 -10714986228442784238521364.9241206917604075375370704031464824 0.4702767492313058120166512651460265 0.0699107928183431003583294765010773 1.0724747757343212503902874433674799 GT 1 -531357147883102.0222532415036680125925221211878939 0.1030061759393954517216773270226531 0.0617614777181924478254259669348671 1.0637510741547469212628798866697092 GT 1 -108628412343520928814.3561925132849370221409243994203139 0.1690737138142465366257624226262437 0.0705328729821022158089054177227322 1.0731438387527673455899078687095797 GT 1 -207144711700617346347273364971003137.4619736827072525219832719735156374 3.1142424469628716204984468567419397 0.0129618098865157747819305573175395 1.0130465471731175929777443237589114 GT 1 -24477395955336416539424403711343912529764569.0867878621085936053214673792553697 0.6164524724352780098969934094272379 0.0369350784443572082147741440277614 1.0376344535107330865469906479435210 GT 1 -17006649697776788582769306616217405740.8391160469840811203043595243021705 1.4721803298705358432774424496948241 0.0339353637473852311284973866774854 1.0345245357734850031385529278284751 GT 1 -17080899044769064131829928282508164932986.9743467731344193320554752526648219 0.7936752897039127171932723374558400 0.0501147691882806451564631744453735 1.0514141113575010973230882050025225 GT 1 -12485799450.0001815937128786707326769917094250 0.9470360346807760476169165704747346 0.0971578123506991239689900587154476 1.1022075053462201966362638329044228 GT 1 -391614431910278212.4020765178260413066926463262946367 1.3358532642582909958174261617683524 0.0281376043878587982755081891529616 1.0285410528437019011556941525031956 GT 1 -164325376799570845513803422509079722.6323875797272778180592620553472875 0.4045639196790081316539336916188165 0.0142193297461960348626733343820356 1.0143213930854884913060483217471646 GT 1 -1281646951604030743051707297135.7636368868122658276937551590822664 4.4117441238836989096160999991028831 0.0814929422915991019818664712624541 1.0850056904061232899702211903971899 LT 1 -269384049590528.1306998985246472361773447030367912 2.0002947897962010639369656276494980 0.0096128694018517601984868256301144 1.0096593712818800383136434207523730 GT 1 -3034862754.7766077040897433326486593138519208 1.2724549134521226403868298656139955 0.0851233152865987601230321078281353 1.0889659935940426858210683093332378 GT 1 -5842935884049428806236207.0301571456506169447272907434979802 0.0522536005728077478628763494106196 0.0627098501618919089969588543342754 1.0647623863662064169794970791733336 GT 1 -8484631.8219139360380075287068997260808627 0.2388158324787351464485865161605542 0.0247309583134061726591843014413523 1.0250419058574040120069050153034811 GT 1 -73880446518822385096305146.9003217808818487878393954626585231 0.0139204592076505096276329155395903 0.0157821480907194287594583666617195 1.0159080122172180439318796235987517 GT 1 -992921260968270134.2793048562613664556311823216750297 3.1835676030506323583060303977611606 0.0634634453834679994579673165549362 1.0655667246333614368873135684090145 LT 1 -302181700667421.4341099232038572423935489361012235 3.3230787129436823536509803494876408 0.0877267779184108847523192312839230 1.0918157481588379711772162877042509 LT 1 -703172826156635517893697930667050.4562581937013822506482089916260344 2.4618009511260261011317965216381745 0.0399986882751589467829688908179101 1.0408206281411458621471274930367379 GT 1 -508127.0602123369071925982641724388516513 0.7223363483332144241498025876246441 0.0377527256164188883438626488283017 1.0384838193672855643710320736104579 GT 1 -552869011252881166154293.7407231840129297091482048209394751 0.5126089369612941877851441028176551 0.0613750604969443929370554578299731 1.0633393050148218938255844772164863 GT 1 -2.0756029261767416808345717454980206 2.2298698100688751905308928004694832 0.0858860473360068547719995663465536 1.0898000406121477157090835841562415 GT 1 -228860428115692098493774290662722096308147.1151851389134135171615219129972479 2.6506731297962942778006977558877222 0.0831065022443404287326259670331634 1.0905279474910968335013093751165652 LT 2 -189715490598279784878540153799688616654783.0893839024512830395401905299066664 0.8900454218643968302351836251929905 0.0197496556014109887258215924834799 1.0199472864722530212060320109310921 GT 1 -40276005515600718077053082509534700.6981184592149198418736171316231042 1.1453102041538331993263238329580793 0.0396844371638617088078830164917444 1.0404933372463300999602686546892744 GT 1 -197350464979905443317545387571.9668577522278129328848845463718193 0.2592693135168961180063039059763995 0.0506288821365454328775932606479853 1.0519554947902119532367378090251018 GT 1 -5469656285200.8231355209385683086839613841041795 1.3414636757003468426004749718312089 0.0979269060793684075782070809245626 1.1030597268139763183876939294970265 GT 1 -161354.7829269532393310379186092159902620 0.1001314907309246073649832826139687 0.0851678375019637344293630856978962 1.0890146594956604381210569189773103 GT 1 -142337942306025868406051.3865155720432247025654865298040839 1.6716024297490024775473707681968581 0.0623248857394925181399370490183829 1.0643517500358379995962860026381625 GT 1 -15341725045194179622220046849.4988707882909075106085557205161258 1.0081277211474847093403277349759323 0.0735867148044199385083992123994169 1.0764348315974286242182031238750782 GT 1 -6273701603973317.8238455817880602516418793704730532 1.5997401047537254534906960414512142 0.0142115935138241132322823643271218 1.0143135452931253108935970144495869 GT 1 -3999233431142021259970514.5371906206398027573723252618915349 0.4615876524209752086578554042648081 0.0198358508001116481213708876000432 1.0200352221603818979373471625927663 GT 1 -71864596484496621026285.7304666914953576011504613135059817 1.0992369475299280861081689468124503 0.0852668455536492798165616166355667 1.0891228907250844306085081226689312 GT 1 -18438080771.3003642982127220603166769132102925 2.4566909912006698604776013875464969 0.0494177369246805284711199267341684 1.0506805736389166473394458245705437 GT 1 -406161001396567940918961724881078325.8212023441231534436514690162407157 1.5146618590906034520308492296602568 0.0657155970588028856916108199550137 1.0679743871669494312850982991237908 GT 1 -386790615711.7322602729326234830630003881276224 1.7151018144453082899135518002681525 0.0307201181073631720594900966888367 1.0312018729938860306562528613143439 GT 1 -1145887494.4447642214304326529413377039803650 0.2232862187281288280959180351588272 0.0458380536729405319658384665839473 1.0469218668807995377250843622354250 GT 1 -4437147893318536095162362623385864.9517481662381528597362512714278924 1.2229461970339555023910799916224538 0.0799887176171906221248550427596939 1.0833693455546712532682277596971943 GT 1 -11655774423636.1392031865002463811886111708821094 0.5698069101201805030307966943040820 0.0555743782358331839406637254627885 1.0571783439353161909458213675617572 GT 1 -5758403766712541106993448.4357207437796601087443208742822856 0.6915286874058839178306466013490743 0.0675483542565259442318604401774980 1.0699379832392447350196980438145209 GT 1 -309090323315410494173.2232980103786920579904053541429317 0.1343308840611337361187416929443042 0.0806639609455192974943440823883734 1.0841035661673777290032160882120425 GT 1 -31200990537846701284183751.9262844443169267231589954717247839 0.3785884783949713697088179758568776 0.0573467520376458489234073379041325 1.0590567755699431371516795223356868 GT 1 -767323850766324438739228848086073065.3941204081832809455310050502947441 0.5547481991749438530800264175332729 0.0407658437688939585004485862124030 1.0416200668211840365253515774236706 GT 1 -2174019623840.6497170692424091533033835870404775 0.4483617340611933560107238922532056 0.0651958214309263496002800278972088 1.0674182063134391393616135557161919 GT 1 -206954572318898131157095961765563968588.8869329162942306649702054815142710 0.5242772294571786722441264518860099 0.0333185480190655203478981047718477 1.0338862566399601624176487044540575 GT 1 -65785501.0942235231723888601458547439345806 3.1721397535529236291016976264428366 0.0823720464398289076396262565930959 1.0859632498557356508187092063751069 LT 1 -876114334677071311449348420425127725356607.5906377958220753170490820277693955 2.5695099981287282032545793011773616 0.0525826407012660086873914996903205 1.0540155655669020394826124072217837 GT 1 -84249424652859624690.1695449766597580858669942888445047 0.2036739073763551909796969071431042 0.0265589046447183249553203025622297 1.0269179641101955321331096991349574 GT 1 -7896026514611673193072557608467.7094882037364109726911583978768022 0.1514613317029260514955020491389654 0.0741835190004779600047242684984246 1.0770792486428765698719007637358258 GT 1 -2206854.6849313343672494618003485078945034 3.2976672075666432447983633485879901 0.0707992702320431989437707074069150 1.0734304927138745474032228845745148 LT 1 -670160812.3898553779842591959904970386509702 0.3619103214262755789782201507096340 0.0242281927612084576231065888812666 1.0245265239640896962856720526959083 GT 1 -584136252797798174976280763.0128370756598650434504544158686773 0.0801067901975132720723175942562487 0.0945669276583841394144256135663257 1.0993419167684395137556396121035991 GT 1 -3299576255496869236884054653.3322269398270975796428265598590954 0.5213565484524797517531809254749204 0.0149582670746595483643446241840623 1.0150712702554434015056582518683910 GT 1 -25916744458645440114882995378031920.5282706749568278490319699486196804 0.3190687061461818793702570318050045 0.0212993403352702777824980642146953 1.0215294445292051545863502603482132 GT 1 -78781585.1725677080138851810634405533328125 0.4051400959757932599491703294264967 0.0902658209554033496378856163943829 1.0946028330839559555075969026290384 GT 1 -410561063387856343795852.1771374926351966396110116575418234 0.1608588000427484691765993550178198 0.0311569643086173423791397878667080 1.0316526660831050682693856146552910 GT 1 -5603411123525.4685698405597181920408055436670311 4.0674214249753714385862733718847799 0.0561249210061067239515248460154575 1.0577614531674972595279143180566759 LT 1 -5842048392161483738740768706368730528380.4369356769714271621245028020577205 1.3515843504291193334613046634808176 0.0804741365264967451795857048814936 1.0838971075753150353973479613718875 GT 1 -46730958709342722060267032018081701769.4081941145138423212532467431215988 2.2088055371704137911014565329634164 0.0824869458342319795331789973751928 1.0860884711810392482820052028124289 GT 1 -304601669997139907782460381251.6096146707274874598201072713410928 0.3850301953514811846436901840509230 0.0076938298284762487567780685713402 1.0077235800307605247892913920359983 GT 1 -1772432943621794745888053401942035.8694374627892510846218234120323353 2.5034530854639628781707791909736745 0.0987822047877555157535801477772197 1.1094171902706411013909589852878430 LT 2 -44924074960639907255276935610726764.0241333152650288847092201281531971 0.1102628336723870121930263548674122 0.0752932059564452687352624483753071 1.0782785711306778496968608615575687 GT 1 -6946443095721594691901447578507133979145397.8980994254563544714172781790653091 0.1627865045536963325414443360842030 0.0401071936751555174271905042880626 1.0409336608329927655533239290715034 GT 1 -7010935350319567739480144926591671.8379500485046535089503702827533953 1.7228893030514445926500292892452841 0.0687731767096757645823720979706139 1.0712523973400064754905130624574799 GT 1 -203947798047368536955186371894394067.9727540213268102847358807404635299 1.7477050701273713336084161880814428 0.0212765645231715378643464485902341 1.0215061733207263188796331169456644 GT 1 -27797728846350.3331858442733598894366511194094011 1.6349630347657067004143784234920383 0.0408235727167761899243687775444138 1.0416802509636150098894875906157961 GT 1 -63016.3317402184594131422305605866085805 1.3795073482379555316582161243442706 0.0256102757143369789112214360186514 1.0259439277659539586797598301267179 GT 1 -4846.2403261398146092703970883489028158 1.8896880713756507676710118381779360 0.0159122590125966817963881363591520 1.0160402182349586984694468856259225 GT 1 -15731936838538818.1197036017267512063980749852797123 0.0913746193793674794488242141810816 0.0092855808129146281695139299457152 1.0093289605647210371565853538654250 GT 1 -206578273215709848918835.5180122622339048746193737512713112 0.0816948478189631511982004586439720 0.0803997619157194304093248791620030 1.0838162271933174529600533240800077 GT 1 -91986911301918532816572995205.0024782110161201088912644302326997 1.0223381842022781653644676098691338 0.0355343453022758687928028628492702 1.0361810567076843664121868262711383 GT 1 -1239579251694971266343635212920371034537.2177042330270509794354529401000583 4.7282271825277688332968745936442617 0.0728543050402097824325415026108569 1.0756445575245025943152186276073081 LT 1 -176660429602339463510855689943952437.8297252153966671780254004943924538 0.5103517598331779077016789883668113 0.0354365935034600934685177845849967 1.0360797085208002059662796703484611 GT 1 -1702240448024248170106537467191599.9036079344908121319556405969173454 0.5162949934416293421392517724695699 0.0857524045430068213322189344116309 1.0896538520277559837454861884644887 GT 1 -80078354730.9801855323711225673764127811726985 0.2925367248612821032826580585082539 0.0871066699792776591540605704794252 1.0911362398013357556884591704931365 GT 1 -6.6289865488977685221139903008479630 0.2375542414094864009838552798692372 0.0688323547414704722208690778173328 1.0713159478206527532246932806664449 GT 1 -1793796737809204984112101524648306067639960.0246508009162304367381334736592546 0.4986436127329483890976404471898396 0.0489236949807587039723832243710366 1.0501609830422389925309364692155483 GT 1 -745882.4246074817355503551586048939669040 0.2581782567578285349308626006341994 0.0474274331638588878103486737692258 1.0485889892285192996014992743912069 GT 1 -7122584796976286145.2204638827344702939198627579433060 0.0288831848327175932584795984086737 0.0732719083567644065556052820774529 1.0760950772164425383264895838844236 GT 1 -1086777763681539349963552623603124933035780.0768168444754896366802161526783876 1.5187524337234457854575759305524215 0.0417466796342719565228159643521017 1.0426431096967134148254519832733156 GT 1 -683857108512.1706318704136688447671181000185429 0.7932341329248013571242772740816800 0.0679522073581673176386696109344195 1.0703711859526838573876563392403475 GT 1 -83513003.6208164449641615529515038499649655 0.2217848682718794218638595037152741 0.0254925698555532859753812171357867 1.0258231354925810413715562947818836 GT 1 -423055627273146177036969832099.4686223420110441328733243675554201 1.3070358384706190322734479762468093 0.0705340258275852087843100746923346 1.0731450790830215703738461998517370 GT 1 -3807536302.2311426985026666475902696283050729 1.7237422161548955532935153023783357 0.0643223948859829711631245036708068 1.0664843008180265008699649024818098 GT 1 -27670632645384270.2850679218975210663806355324680971 0.6714669454848479799237805910272356 0.0732976800790294416349315275406513 1.0761228869708373050926830934173975 GT 1 -97951872480467004045368278605271333619.7452346753606650912842032486611214 0.5447057547995128685349318127907459 0.0948196444230520804252613458769597 1.0996210672070834342632932835894019 GT 1 -1699410429378499802407015335392614.7733928420660478230243495669555068 0.2835293320536494329278943974802090 0.0859528710304837505541960924809361 1.0898731454333563016047602523856273 GT 1 -33366213959090746805737.8090915231055547303033454548863945 2.1788209744492612763290533942899079 0.0778746392968999642542073772960744 1.0810740986126665334310383071240776 GT 1 -149311085740740461729386.7707457457135787723042677319877019 1.5450332860095628869384268621874721 0.0372560032547195301492865434924828 1.0379677418347026180052854789206852 GT 1 -1330484628228498762676503725.6007944780164639757684709675450861 0.2304170081893771768174323095979110 0.0990240398799028889750802535353981 1.1042767030614979158047234501242677 GT 1 -1863048256289.9403716252057439173889553509115559 0.5379556335008998872508590091691344 0.0092002056127132098872601398842117 1.0092427888888689186540753575466297 GT 1 -65814833297.0572177876094794261723549030382216 0.3974277784403058973264745676039315 0.0012118532914873557905603921433347 1.0012125881794650068895557509451644 GT 1 -645581551969376739095730451145.2853374875712072653065773094230627 0.0739443190511320799001256306503614 0.0972611688845469884932860236025741 1.1023219909692818128865966828025062 GT 1 -929244126086061347.1581734201580934676506345946054633 0.8654225689303284606615801164459100 0.0846268832594390940928545618014343 1.0884235189668749490924668478478088 GT 1 -2704475574266969134878653275694287693009889.9247286637047167297190668834939413 1.4357772675526309501812252982231269 0.0745488666929722191315130106391162 1.0774739486791262513181397737688538 GT 1 -228693418137213733890110027411272078.7222478237692999302249171442320315 0.4446063717044270815109766463117129 0.0335789174300517195991572070347275 1.0341556364663346356035277058216815 GT 1 -298611727536631258742791679869897197684663.6364161684973144745605559605704186 0.9075835243399171016678603207767958 0.0473881782013415183260617675970813 1.0485477806580973537041504512828727 GT 1 -412732665566690394047537961809233889.3764089988404304056823063754435270 1.7328808933780048655820037449289326 0.0871627183018639860269529549185802 1.0911976380407519932817576159896018 GT 1 -141043367159980291192750494878824200024.0431218185933340492213351980311597 1.8467589462043556661969350243647294 0.0659221731363816035565322768228266 1.0681955178183029161565170197965887 GT 1 -5074671513008984.3195908332609289421374337031125705 2.5653440542427202006760508320764281 0.0793074696614775647363858324188232 1.0860429292783558885415844419177174 LT 2 -7496121056036664056380404605038648655.8840657266205747058241535697242981 0.5038438529128977357121363991923735 0.0242636763025873736709185459114277 1.0245628892149644684829043743514720 GT 1 -4070.8860232433688627442272172955003198 0.3652111421151710200399255346875956 0.0599311941401698503894641890981159 1.0618022086736865292585399089247925 GT 1 -1427523194893598352024399.6061652203759929943120390102227044 0.4437116408392135247030703648770360 0.0162089711429899528251889379450966 1.0163417735311370342550383760888469 GT 1 -215104004181637343083915899769171813.9720360336715717845494285840122347 1.8412022718402824918896876817010665 0.0144814275589977050433582758410220 1.0145873068632341688023613880151303 GT 1 -4303998678294545051442816328596089298934123.3258002582407605419683198765856854 3.3481722511608849549105257177563582 0.0083904078159014593354139865708622 1.0084258054268860763127986031358145 GT 1 -16795653909584664499927335254580940.3096023623978038556992805527166570 0.1556449570927862407339850449441002 0.0285561420177002634417506223882434 1.0289718008388146005774440832048058 GT 1 -4590926232549.1245208515753618521235479290404558 0.0491858697296127859087325322610646 0.0410467850567827713852723299772764 1.0419129905408576264110657522857979 GT 1 -3493583.1662356992055290609656249563110653 2.2231729234865587887386580242635315 0.0982135739738937812606385515192264 1.1033775651974743122110798480911184 GT 1 -3269558970146756073521579332781490443189062.6222805803389540146080263863847721 1.3874841868210564965802625627059061 0.0171638841124165669591930797842046 1.0173128910579383667172961404887220 GT 1 -15505543823318819892553035129813492511857130.2769326663861298793700124829168047 0.1586319232904060476802575766013463 0.0410536366178335148098678916595815 1.0419201353998775705317603977338390 GT 1 -84062098208526042473779542699061.1972374044973394250152186962244860 0.8923867363889569166129941223469737 0.0582446615133401150821901114061375 1.0600097637383340030942863900318875 GT 1 -944960031275890626739545068392.8500158029001237656109893707764479 0.3470743328922466608447126594375460 0.0742006641660794229857770711104893 1.0770977677821559846982188401480264 GT 1 -57078763132555170883927683801.6539409000989244936644191439025705 3.4092679282380555798562993209198825 0.0482466481055160854477971787996194 1.0494493619033164599664954293045457 LT 1 -2101064260118758726182516715832617656.8568149248925288886185905911042802 0.2927181599852107972971345711679227 0.0183126100339942383367341286920271 1.0184823614654719752888212387158041 GT 1 -846833340136.7584701947166353608411251522578978 0.4822471575507867147370584947690558 0.0726276999641284961236513688327234 1.0754001758815953229655961740592574 GT 1 -48.8594993643798541687360019318441050 1.6333842703655861148921603029890358 0.0576145535829923012852628207208609 1.0593409093099524408989085607269254 GT 1 -43246637081654065.2823611162936847464303860398324698 1.2511592437153164872650580671984667 0.0008952664587389909033697894053804 1.0008956674491017409138766825829954 GT 1 -2827932945469470391419106141620749571350709.6213773840211878338082928467792949 0.3324611969687916133853057336748538 0.0852162320095846080021215572255398 1.0890675607705408332633672088953819 GT 1 -860568791584343955660196607159728.1053462850133103369121949701735022 1.1496686067250900475827354861704635 0.0707613177054308666267465954120095 1.0733896492767721368560095820360277 GT 1 -2714373848762590881982.4349213845480626889030172178656117 1.7380042400563134928110311939049802 0.0876257978022673743858334543580159 1.0917050636343617018470405315872934 GT 1 -5072784214058437618939986598.9016604567016455039390237852715082 0.1668671268455016999205490420924723 0.0693389637952368459438137545828537 1.0718601537095332714368336936579625 GT 1 -2.4885612504011190702786120751840371 1.3980967388421297443400574521769298 0.0562306048071494988155279792783699 1.0578734274323531782085811974299855 GT 1 -1168222054953049087784846954252133003859.2810720815306508273325384746375556 0.7083277608522181181838283701955671 0.0513939847039629478690959665484981 1.0527617243232172523269966260622412 GT 1 -6195443580863618226399621820678329403847891.9158309330519961718408697744136529 0.5883730821300756366540315342342893 0.0053215218696158345012255545072743 1.0053357316011374724116606167630040 GT 1 -7151976.3090166771984136528158354592573767 0.6059123953867589293743531126095876 0.0556666308021659654322874441836949 1.0572760298410856240454849760943262 GT 1 -41010212261069329176191358516986927433709.3645940224017510658151077222500948 0.6632444745124552287819617213048082 0.0108360803426786902423515226242931 1.0108952182648159406982183834164814 GT 1 -3924247409953675191869.9350088560324117841259190378576152 0.4426890885524126657989249190345946 0.0924950505985164740867476154933677 1.0970562589720713291980349140599239 GT 1 -70051378459208556978200112672.1524937194470070037773121995074147 0.7085270506264813425535670565211371 0.0100388194037479490712170584200404 1.0100895481412304692230565913540643 GT 1 -95959187972040772197667788.4757374177803928640890055742726680 0.1308562359691001262775239960154466 0.0434221790291162727330457121540542 1.0443931332745498120897742141289260 GT 1 -69.1384521854020483725394699256510676 1.5145348823520469509937365998178803 0.0791351082272182258914660457762512 1.0824419508030458473695220956501104 GT 1 -65781793842111707.7017751781645425121022891910423558 1.6517359070400324226075131772481302 0.0714341330331053133916571993516903 1.0741139615919257882337869646564295 GT 1 -198284253916225.9178918726344133775165797106213920 0.6444114163768526375795521196084340 0.0436559837570453945843434411770915 1.0446375810345627374108362599164855 GT 1 -388188.9698280612476343138704763580812297 0.1218230068988837885571025661897570 0.0729247842312503045243003323694808 1.0757205777987500379768135310883463 GT 1 -147892208979188221125827864834282421575.8711302863478058212922949560560942 0.7586567944670845088749262920514537 0.0729681903635290003681851446883050 1.0757673994025645633068936717052825 GT 1 -831758642.9818492980643705612370838005874809 0.5275591943835547937885128640426219 0.0828126377673553955394562516143282 1.0864435067319483069988115960633247 GT 1 -2213444942881494377015.4419070352915090799902775546132869 2.0656671755178728306937874169888185 0.0930887466918165249432416372711907 1.0977106800620084534978312265741307 GT 1 -41638656721700361343704381906.4615303294144826724096070733711154 0.9609245101505805652626549365698674 0.0542849149048035402041717818261685 1.0558139338399296495964749556842311 GT 1 -2021080.1781725374101508663582392401572610 0.6964459333513817521471021291044807 0.0062304451294261330488935555560512 1.0062499353500206381714856795644630 GT 1 -1740661431539038486062237.7921298793092723396450609331776967 1.1155803008790139210477962449978415 0.0590935634774444283888871867845446 1.0609115741781107437239517702203804 GT 1 -83532798756.2362593558795899712898988536769101 2.4120968966683719743386694542252980 0.0019907750156564758079085854907257 1.0019927592421075984175697815628266 GT 1 -9869419700597685259851105966182.6963834495991322691021011271087808 0.9730672550277868701068926506520134 0.0260995016008339940700056568857039 1.0264461382591168970470383576275355 GT 1 -33.0944754862105222261050617516972844 0.4717482133659494429824529445534459 0.0924118550959959165731234621173957 1.0969645881890797250091994755267213 GT 1 -13734.8537849115716957212971891568341176 0.1037221498937163846364139622178365 0.0503478854223528106065936519073211 1.0516595566348032822885303409169046 GT 1 -219568300892468250336836432431749.3977505467751512879443772178114387 1.1154557034916140680254828137367426 0.0793273524291765626396515105164535 1.0826507374267768159414423347231503 GT 1 -8899844024741115275793848.4399417360208416272642249990876309 0.3348125337309118002244813069116236 0.0063288585004018065211225000084850 1.0063489706281407354385562801445677 GT 1 -236643251815748304934071250.1268716506391343695162982700175530 0.5163901199730092845098569315049715 0.0054887948228152197772961264820376 1.0055039136050935027669959511539507 GT 1 -11372.7297063215913908796598397190126249 0.3335858855564308343920265161954624 0.0662245347365757932398478698453818 1.0685192708711895271708699070616611 GT 1 -1832422322716652515890405460.8174787719187416400034194541451133 0.6351030258065421880101857436844637 0.0522620648930449401706442272873849 1.0536772547042250001620500273054443 GT 1 -21141659.4398240060534250066494621468359143 1.4399242759195344466406408547722482 0.0751555710699275183312164426475437 1.0781297405548471091595452437589693 GT 1 -2122104793204391650498725144173902838299937.7914835962441515471924973394206334 1.5327886040032931121502792908813376 0.0490976356940681636490270341329580 1.0503438880522684641236108500826687 GT 1 -4286529949955274805312235604360868997424525.2151266452151062181055637985239438 1.0670551301709906800024900907758309 0.0604866116933123118660553918634269 1.0623932097706672502297555137668371 GT 1 -1715355363485.9533175193627830059571888512729566 2.2257093198537288873979517924118034 0.0758377525475042467504033725290643 1.0788676302739521574140502752303498 GT 1 -48857628357737.9381253236290123627544928085365768 0.7231089841535807959712872117354183 0.0370574642639079325129398674525837 1.0377615410972864028564185157555672 GT 1 -868810.6146080574407921669448264905190050 0.8541378984938348469034570782004360 0.0882415970448737179805292559411243 1.0923802330428352768636919166402728 GT 1 -5038376553957289003179176.3534813629912919614162429998297143 0.6905061718691824057338578065663833 0.0310159887418084244001357479081397 1.0315071674770457330002447562564744 GT 1 -491683436268174242.7941939363187732280870323235518661 0.3715117776970327951751050249515360 0.0820690102893873994950713670507871 1.0856330657945748041023311848481958 GT 1 -17846816559580721411534767245559328281.9662047050343754915063097835724375 1.5008414258086048804599219676032532 0.0843404537871931255630871703791828 1.0881106578362380645712752296049390 GT 1 -11779073419.7823003203958822619225112799808267 0.5570801914321890616297613731034606 0.0175898803090791981514568467409133 1.0177464206539987027159121980607774 GT 1 -1461144.7370929957278967059322049558401262 0.2666692611040734224168931271717501 0.0779025305404836900283954531771874 1.0811043457640732784452701302536177 GT 1 -42497.7406671323461088124802540105983988 0.1575476534046162573804647377712765 0.0587408780128009121785683941094096 1.0605368085607326098869092021689109 GT 1 -10679082134111470262.4328344922673793631206301631456418 0.3519412392105029992576713479707197 0.0270996999931467663697357185756835 1.0274736686372984222901168263527737 GT 1 -331589.9753902726041425139469168560955807 0.1370430101944910818035850365444159 0.0052874261041109983580792044941044 1.0053014540110443163443212950488057 GT 1 -640207739642242306427544727969446.2104389813939811895605898220994224 0.2277697697752142523083587718139206 0.0839522404778338805025891208738465 1.0876867764508699216389319316728952 GT 1 -56881000029057227.4654962341942335807603845944237932 0.5367307872902890423833724991282245 0.0786424250528723798648999844640337 1.0819070716611479816695240276529848 GT 1 -1130776813336671160065966.3734863205116106014120425816055898 0.7268435978705830554373641551385473 0.0565590617147674899273205503471374 1.0582215146647170473705331961720236 GT 1 -913.7511634729324085054769040936855474 0.0102651183239509204261296969946412 0.0920926228004329644421604100720847 1.0966129130734251697652302332960288 GT 1 -2510950086570827665405466651247.4029638745409289068756783325746163 0.2501834156624523416772466611758320 0.0815864331976571190853573760174106 1.0851074813108485746043714493466100 GT 1 -285479625500708.6282697991021420315422378116739926 0.0538750072019898408211336007774594 0.0639708711324495251352556105768385 1.0661086824037905400069032685286075 GT 1 -43188909.5510171958257750193784994006703456 0.1414948155187611228873790604716229 0.0016598811292429776296859009721687 1.0016612602582626953546609554488827 GT 1 -232926919717.8209020035762509556750597989464871 1.4183803399165146510265449190102219 0.0259405750901771752139067280281957 1.0262829659996594520230094679456698 GT 1 -1155172880691080280999047.1611083569213146388338960223949460 0.3904423169717116355869787643974819 0.0957299557589443604302395398625880 1.1006272416927535503576025014080859 GT 1 -372777037058994545939228873381980324502810.6669034534887725998958339232291060 1.1613303942051789658442520665499030 0.0218236513335271315324236050960424 1.0220653095923348642514850556864156 GT 1 -387294318183.2701516321954072657699003921198243 0.0517473934647489413624198499175291 0.0035322218114548315820295229684028 1.0035384748359729803893525676806252 GT 1 -48561554176699083911727971.7386222891095720462545833358773784 3.2104051745100014495694064896518495 0.0492263463230927883647457318646127 1.0504792535172625389438490772244880 LT 1 -28856850050587685599.7654326958936479107864508655691273 0.8003902523155161038968766052522324 0.0161138225883451816026983690913806 1.0162450619827023556106654388429935 GT 1 -35067510292342147934990920952.6793630823703684144492005637805949 0.7397583412329669325034159907665661 0.0009815429460677316466833664005448 1.0009820249747922957138019864037218 GT 1 -116317404514196755102164.9902846842990255214469713234307030 1.0985236687605077062801320585586233 0.0049152971736811382145391626992293 1.0049274169781045729830007308062704 GT 1 -1292288784915.7623567790454716047281337765559641 1.0093359338196997806123507914607036 0.0630398648121299267752475733574762 1.0651145428058080621024814108226965 GT 1 -61192503953415476311657771677727290182274.7943917463656083998793862939228724 1.3161272100280204113827671955506169 0.0914093636062183202884874187817536 1.0958606312417638239063160300140147 GT 1 -134246520659627441056035947413.6106851760859574901544528024585386 0.3514024299544715469251619985622387 0.0791473274220670197231988331977186 1.0824552201501873358302715362986352 GT 1 -837798677370101567843838877803226832305620.9494619790700081780542968982147488 1.3953484203234621944743557027566494 0.0194070196042274548607348977299833 1.0195978082693407227746457045514647 GT 1 -276068563486887261.5503344369692899591590925682703687 0.4605846061639626907229606366729105 0.0266362271227547492262537714815165 1.0269973993729060498027555017400644 GT 1 -187351481903131601979.7139222191484878216117827316178719 2.6607714362474379324251651841301605 0.0771877877535617021604313363909547 1.0835559346669382243002284028231969 LT 2 -700615987148001724979602966062048144921925.7236959232855744623193339050050254 1.1107638351546077574428653048756610 0.0655081480456637171079138818376748 1.0677523712745194621430723780414576 GT 1 -1838006648975521721560464646014015371.5243198797796113581101549513501000 0.1523731830482186862285359063483426 0.0133371287058339024916300702868893 1.0134268670008572518497014349280927 GT 1 -162893513410299261296755478680672246.0458755665261498967313752173693374 1.1036854318391559170561992467836162 0.0835375170599086545999329085622268 1.0872341476847153118628314987618747 GT 1 -440830532352966855444504234831.4134850116682787660560693424025923 0.6653669621672172125800874759879660 0.0102306618594279255281903115204051 1.0102833547775022234812385598994046 GT 1 -3.0342275827142652761743552960341029 3.0043744685105011441797794107318690 0.0067839005522694853113044082802464 1.0068070158059904609829397745366405 GT 1 -183525113762228862824813718191820153789374.5547294377753693617980960110602881 1.6974145987911426992621200524270223 0.0619760928259867259760576880245207 1.0639798429083721979096294739067608 GT 1 -1033894868096466270475404372.9071068525758384457823394445554952 1.1672163978652635588989297406679761 0.0194453255125315695874532598062154 1.0196368730569548575488122693292321 GT 1 -299963835698525039486.6036707002959675837035811185515549 0.3450910890043955839946406225975135 0.0702415431610559822330386140244751 1.0728304503980027391154840257015961 GT 1 -2680921064082190685720322.8167692897646407698155335497588705 0.3215236873356649759085732064348020 0.0633860694102027044646765416910307 1.0654841087688909621634548073130866 GT 1 -51592513676.6183383953326531764101815558295441 0.7877959431406538933416115865258885 0.0161426212112803213033640891127611 1.0162743326901036845967042164201517 GT 1 -3635844422911427328742.1660379371154287889812833317923239 0.6503077276206991203273076662299774 0.0727372967286943159237868515739262 1.0755183627641872714886475316562637 GT 1 -161169239786.2895163819973367983702916042980648 0.0842952211621783321541733162922864 0.0425395963181514850865060168118414 1.0434709126395075878610000226091721 GT 1 -32553.8796812954435533866047001348361474 2.4201839371502079690556873542513109 0.0391453487259625230459309387589153 1.0399321288244121917514682976420998 GT 1 -3342313006.3729383749681857435530094679943734 0.0739864512260451650918394628735434 0.0119286968608174700587390611169441 1.0120004146691253543716154820392763 GT 1 -487422570510901511062835606565113678266041.3677446753836190911057473703976888 0.3307776355397928304043932905571563 0.0203169186710497318490896238744719 1.0205261460172071773568261829058390 GT 1 -150339204781712810282380199.1240080237967137333513090965204497 0.3298685658712020477868132591790658 0.0720783412661313632999298215403480 1.0748079692272742751223231298933327 GT 1 -17857215.2420377436003322635547975155929464 0.2511757812147073161085779399601881 0.0715527467475786218196552467489471 1.0742417083626331562920960089117989 GT 1 -324076429149437937429864062583555234.0767170573135755493971327820711390 0.3772872093871238382039192517702439 0.0700656681080945658769705402276693 1.0726413061968190824949377330024587 GT 1 -64776223836729.3899159262353335704227886104008638 0.6282879299420310719171218500526992 0.0893837502683049115638453432488027 1.0936337111586484940499094967345439 GT 1 -110705869177518540307919.8082508035789486106010451601397528 1.2303361143069726876693481835407984 0.0987612381075863419460993184987536 1.1039850599282248590608334260480042 GT 1 -482340251776184926799389786946.6459299862641770033776888302517060 1.0745753395216882707488421597702877 0.0808483557701377545350967242046300 1.0843041601957340716234859071935828 GT 1 -502519613.4371747217014835196578082745729135 0.8356240967273264468984012991976047 0.0468621094901489240731820031944396 1.0479956948084634702802550807284521 GT 1 -22150138853.6981093740076980817911715220126310 0.1959259852148474257302514967542733 0.0331066740356237506435275438189602 1.0336671040251180274233755507131535 GT 1 -5862384467574.8283387769133218225092727926317885 0.6118709243635662692514513697772359 0.0110335456831990640426117387445498 1.0110948667245679296857063141718564 GT 1 -91897.6273614288474059459379198706170598 1.2526699692880659669487120381017036 0.0036556728607423879045269121026910 1.0036623711622903750666314255526734 GT 1 -15318770863527378151229516387763290812285723.2728118466299978267627006592568540 1.0825384494176402257775548307958290 0.0835372936856341921446699818732629 1.0872339039494272902999667323393162 GT 1 -344772768552987.7010750070935724066883133377827913 0.9190957133300753377517368706470081 0.0540438220722319841152826480821215 1.0555590345468128630823413508345835 GT 1 -8080.3727458451408837287106900980790096 0.8440732985778384135617392593678061 0.0129263640394094847279954990954555 1.0130106364950679198227470671124278 GT 1 -10963510861.1192031312271060288263076483211525 1.8183325275460899463430463381023133 0.0382693858507153948135164235511776 1.0390208944031215426269508173203480 GT 1 -603202077625374229388656385.1550885081844166576947428045703533 2.1966966213375869405000967091124951 0.0719111055688638297638894294419831 1.0746277593707786416615569686127621 GT 1 -2531025421.0628693043158504655758011893511334 0.3672014292107238584406269421084514 0.0883151857622307098363139444572819 1.0924609470642022040193373532466561 GT 1 -29609770140719688008390123231486.0029220604086562528701696978298386 0.0316930922801178597246888531819534 0.0292871927909415160607525906103599 1.0297246245639755667658113076696208 GT 1 -5881713.5496357237677391366309642691433495 0.2012980312508347156946524350099418 0.0834634579107586173173698226751391 1.0871533411505283656494000377185478 GT 1 -12574775472721148895831862.9352159786127332940972584307952226 0.7110982460980575631316525557438749 0.0388870806389649880945273050861240 1.0396633749780954976198676176746977 GT 1 -143170593028602429460210810.4109481747488611278507880948289906 3.6697405041709486107863393561452579 0.0952764151378616697082030510911641 1.1001258130273465092363378677110029 LT 1 -527.5965759818014160418856229211342633 0.8436678996441852000984933267120717 0.0568966140350557116832302942422459 1.0585793671885633518662052586477102 GT 1 -107917333636.1491942889732834447233076847674031 1.2307771064503177205007806240624046 0.0544803776186040722999104055950668 1.0560206376548752664590298773267988 GT 1 -4043339131605.4100137277156441246521978892977281 0.8996590330751074243414763297889442 0.0167960490246937116165344033465626 1.0169387022525171937936604384023185 GT 1 -144724180233487455653700266533.8454366096385165700249037513310709 0.2025989219611312393425475072791865 0.0945665237468632032688961959280313 1.0993414706709385691488803703597735 GT 1 -2221319753016932925651270.5990447225845421782123612580871907 2.4296798874328872718154531589589959 0.0153856334969464012422528570712803 1.0155052205568360423088677455209211 GT 1 -104770546256989540981069514897892896248.4174923674669389170890398564493393 0.5721288148877752453915948805142151 0.0158114988365397356275288153623038 1.0159378340533208026113933436309309 GT 1 -302838385193150212353236566360023219.9847140531783235634206537522774203 2.2727799119089452880285024291510627 0.0903034683696980881182206854634221 1.0946442168135799833718160815346637 GT 1 -277919019207986686789803435840433.2299706613958797830637683598264463 3.6067913002015397821770781766101759 0.0848321605708886700938639244553794 1.0886477994579704269045023801616608 LT 1 -23393457891534024726630995174898011475088.4098968251588223699771127138964833 0.0704253639918648310237590236027962 0.0634479686308624965344943650523658 1.0655501992509298196974841771594133 GT 1 -68842807744.6445945890325087852631634336931795 0.4094630164085214220949060234029845 0.0169720197830680621059662011986850 1.0171176951333188687286465870654304 GT 1 -813496331717776954148254531369017649.7548105257476591873565868239328937 2.4615942854683039222523837761433478 0.0500496633508928395581117186735051 1.0513455729655177244511068932776458 GT 1 -1008012542495940950.1811343935136826032633891344231670 0.2907582151590057402202759343439182 0.0444336323239917122470139271368007 1.0454510591309954590641491468541606 GT 1 -517423745322626546790.2695737626254505336417707267862041 2.7051117205225542809192419218414094 0.0269468011629249624936398782973479 1.0273165232269612394821305768970735 GT 1 -305023452627741306855316398119504.4026136406698445693096626070630437 0.6792737020094105099578936831131943 0.0033163869545113685147802209648504 1.0033218983543907329796194791041793 GT 1 -4492928111135860.7807005415301310553499926618893097 0.1241598945996972551203541682389417 0.0670291889417140580364181135227441 1.0693813636635308215865328849070364 GT 1 -229828466092950111471062470289720.1480535651583010339994766928133247 0.5478205548632197430644922087872399 0.0683264560377360472734656043838481 1.0707728003756651330086183093822689 GT 1 -296144085973498269044.3577812999318245053609627272618696 0.0322268305940811373204761899971535 0.0799091346299463252023543925756756 1.0832828471095810133432547997899018 GT 1 -2760861398930413213481901140164805326.0493918938406483080897853714620577 1.3959437603428502945462320759957702 0.0282044976382033574012601491419720 1.0286098851731367255495172751780477 GT 1 -147716105959061039278310235507.5450974728975809091657411973056604 2.5207329376895811708101720507833519 0.0472198537914462843055567227035124 1.0483710984707475714720296310042377 GT 1 -2473984935292036268782033661979.2485184804359290717754138202992107 0.0477790002920570605002596387562047 0.0653961364799583867212514616055932 1.0676325148488564305431735802005651 GT 1 -27149344491456499553705.2013634771064303919975842847952072 0.3154832160298858181992873492076714 0.0327367578211138221205762485026700 1.0332845949510203292904905537429001 GT 1 -1.4292682295361618939944072936982753 0.1457680189676627351014767264776291 0.0247362544964771484981816416708638 1.0250473363562972076333578924863646 GT 1 -7232582362779561981953742076352479061302659.8810204999270493087854358126885670 2.0048680830596299258643283372152613 0.0873461469153986862778954270810733 1.0913986016177938129708894645887966 GT 1 -15475923152.9537697894853666664309874501656822 0.7780132281266982332907030576061368 0.0752842193881783143413788608394879 1.0782688528884651961727508769122816 GT 1 -4183705850440807670984629088298270943681139.7710679383403340846016931548470760 0.8401606042352444750582711409543419 0.0955210072866506856636024858625700 1.1003961997195951466756237849947602 GT 1 -141188710599.8746538455817799100250670194689703 1.5619745370255864666493074813458910 0.0692656579033573644083375330344894 1.0717813892591946506162533396315142 GT 1 -2603616543152071298417663715360204.2674561906353637145327088431434251 1.8333481853321777515206317655865829 0.0359399872057168190154952400059584 1.0366017323733088875985714868904593 GT 1 -450671180.1691599239811545988393393859109644 1.3622059855111262309181177712296408 0.0547808374180862790045795874713663 1.0563384603011348749580559449694277 GT 1 -340.3412335559291797836006884447402892 0.0164847624581188045937713686252023 0.0426102001466016506872234357802271 1.0435446560877959300205611206749799 GT 1 -846893968492446607513772744193707378738.1889854980093596812844454671827591 0.9669428451139847925794541691921823 0.0529873979392939519134557883499544 1.0544428785343304300614198773577862 GT 1 -22322764501242840645822262.4571982454619188941580759167431255 0.4639763756135950980022247095814470 0.0540963279781558597046548044583197 1.0556145417303272815862887917471276 GT 1 -198874936363249097897564639757329978.3802731129817231221369966221180438 1.1977963867375897328239539018489499 0.0007888567033221014916841093085570 1.0007891680145019974802111411408364 GT 1 -7202362108431.4860515448583801997397765193667945 1.3793558454867505858754298977475639 0.0804924557159188276822369723070109 1.0839170302035233242643592799804164 GT 1 -5201130.4094089994881371187050518192417565 1.3799081902338556584755132763294036 0.0142225614156383863076638051778644 1.0143246713753120245867885342580355 GT 1 -6354271803937355162808755734161064545868.3477011854644301121125516877916052 0.5882485899616644015158037540909213 0.0453687867254468398064106085702070 1.0464301771923832721537887327137233 GT 1 -125696915785228486.2792396014454051715559231774331886 0.9678228340183215230329954411729230 0.0975544263267548944797214400916153 1.1026468967728216046646426173517313 GT 1 -4856699075146.7256559545265311841743228238423383 1.1477137373702396504160706050762222 0.0238902797444617667369260793349757 1.0241802805928986653412075449018631 GT 1 -1405208069549440913487119158776358361426.1681706070322035308741755505227026 0.8795843241588018259983238010774992 0.0463877537421146453618859425592423 1.0474981406206616457554206309414176 GT 1 -3.9248225267776526854543973398572762 0.0012990841987605390472723357235064 0.0096472240360771328723793695617576 1.0096940599697940877867750813600862 GT 1 -2256838097383698126500342659115175980935.7067179259060358780386414833706704 0.6587121042008928080982482392124596 0.0446708206633641563738014677098852 1.0456993074886425869626090922627285 GT 1 -2.0264398345637420846003526352324898 0.5007486106964090343153029902592977 0.0661803863505725354245713833632187 1.0684719925435584856353141110890043 GT 1 -287771529406530803413849469694503218.4226502266349794138682918457533635 0.1814565964813127289181717513159277 0.0122585771415819547501987200168458 1.0123343332429751183786906011100972 GT 1 -225018577859864.0173152053866807395719977443391628 0.4399213546915693815093731841829303 0.0400150973981588462383972334449639 1.0408377211003326065918609813043132 GT 1 -2243207340285772102525561468597361139918275.6089664432386874060515665647990001 0.0191547190036231747623108868391527 0.0221981158993942405544046851778525 1.0224482019621668905165766711628636 GT 1 -245919006908.7733285112591539666368943651074208 2.7964474411555566841883433568467709 0.0641512402017414038294189476389121 1.0684993345925868657459999324392433 LT 2 -751914984124823637819034970136.3308423281250184885811119532673463 0.0544571909120151526156016325770667 0.0853261769956076063275837981295611 1.0891877548506840897279030294990272 GT 1 -84076290925079.2241846486122087398010116765476347 0.1321824943571501522656209318099999 0.0397727020372821980331016484269424 1.0405852538343784588302848190680211 GT 1 -63705771495.3088896736455942962301695197844381 1.6110928552026689272747802122680131 0.0088210989791331534354059962800463 1.0088602351923213146544598792600170 GT 1 -176911214324.8490692078533305892974487552980579 0.4740929866664835949995014822607611 0.0896117845286058953134604961338729 1.0938841600354638501909469482737741 GT 1 -27135280257303680954122391632423585.0665974547836956588438495459005787 1.5744313487330031474220888031763682 0.0141215483632112807142379410563486 1.0142222061804304223327860660839745 GT 1 -236639970.1858286223225532408416495415718200 0.6649858132851543057202507090864607 0.0758629047212854687379134392718135 1.0788948468326569909276449207226891 GT 1 -45744332359216874163186841480005409.1521833935676794565249903473693519 1.1792030435679526661482566439131008 0.0476785916734545178784788041781700 1.0488526873810945103155547553814232 GT 1 -482551224831816898602.4979319923382531151982592198059075 1.0368020394537908047585217940474252 0.0806928663306163544761748709947257 1.0841350082498092171435485132161320 GT 1 -645277689332021172474607625782054040429.8801289650905105644403200482869728 1.5684311147926053684431123697629937 0.0754599770858785369854462483952155 1.0784589376759719524700737480097082 GT 1 -1042.3101659599429348793587290937877924 0.1467504142960725954110497556864498 0.0584096345378110438740231259803187 1.0601849551804011425520241220620886 GT 1 -17797820.7518231678742592379543681692680332 1.1888399373785471721969294674091348 0.0104282380724275965288312705734692 1.0104829931456936147906511472541327 GT 1 -214598132557707148.4822938481664840345567308873010113 0.2844520608263186588974921912127436 0.0860132813183132167478280915106523 1.0899392386164000147473045057844440 GT 1 -669883713498906051266273860593979.7967776149129502518778048331671856 0.6013109174085140700304763625159979 0.0827930733303625818221616852652559 1.0864221760539016989641054540594927 GT 1 -606992404.0205195976237082420912697345837422 1.6883309884145728285576457819106315 0.0709839259330467846265269524156487 1.0736292377701352805957032586995198 GT 1 -441772918284755770742573819502.6635087711794939392806655241663453 0.2793838577216096827006058106098744 0.0444861321037445669019939521616835 1.0455060016486238102577387552649006 GT 1 -268172393404864.9507459177835343026133218507005378 1.0954245981767720371678827491441555 0.0148493177902960751946105672851656 1.0149606726471716637631193236020109 GT 1 -907541502349817571483465458595533.2108237537593457963868815943445417 1.5329852936340354991077173432056323 0.0507789899366482629942440282198128 1.0521136201697578090898859837955366 GT 1 -2.1998936250191165374826022472642417 0.3507704484737152515372865952816843 0.0500903591279621080654267592419241 1.0513884137827958385930100780197281 GT 1 -8125457.5445779717190504440540020552973608 0.9843261910368033391936706553455788 0.0848165750895715624317516855005575 1.0886307694139333789952758898520122 GT 1 -13184264098491551385551226092899.4072627497865271288651171274221150 0.8531863240124728932445749790999146 0.0493181168924943194711447479754134 1.0505757801703421910250008611187896 GT 1 -2533024565999790168600785841485936805.1671138580470886958333174648808909 0.7377182810611344576512982416288664 0.0027506454808148617458067981831444 1.0027544354576125313878608482338424 GT 1 -198417569812055685092.2216055727228780705053577526079296 1.1347885593384872862055453832798985 0.0374444536211114788860663720851173 1.0381635039618654185791613697430334 GT 1 -116026628742253472842146855333186.8761366376813931692793671980337428 0.9551971832255458749738798067133075 0.0700470394074373644149842068194346 1.0726212741220443364543831450413373 GT 1 -3015185740109711537441435791749.0757962238124528297398448505621120 0.5075969482873551557099623490764973 0.0301782021053026810527684704022153 1.0306429378727239608588972180013289 GT 1 -2741372813454213535.6825808914152469317724636541713261 2.9532955331332132132159333495022421 0.0332615788020999397262665365724622 1.0338273256050904299306989799968554 GT 1 -474173327429223268168997565992702168417732.8313884774293741036156500538553865 0.2083727269990993550485305461371561 0.0658096835259547822390357319890655 1.0680750965490499967790183284494170 GT 1 -13889064891777459509252408231.2972987888316272112927421239619258 0.6759117276519235769999807132524908 0.0100233049439259804327806771199975 1.0100738764779797476297932152508556 GT 1 -659418963978.9845710757393425656171565811673022 4.0396075556645126433715273404616627 0.0614783023600261418952098065308808 1.0634493037343071017543488684092759 LT 1 -3794574040921303.8449882613832758915150136740157496 0.1320268765097773977984505223563222 0.0737607778189248022209043570931862 1.0766227384113874937945264579887155 GT 1 -6263409107.7362670109085876553376359745997783 1.4390163551468578306960007510872095 0.0728582579020057316641169241114604 1.0756488210078406762068579417366236 GT 1 -44856856047353.9660629661274371526585414209051753 0.1766197607800686877715460946466065 0.0688223250730503379180514941417103 1.0713051768123853580355411520270425 GT 1 -4989484362282253269.9116062591580835989898397009185192 0.7450897423851726472384175713158369 0.0626670641993090039290597487361925 1.0647167388299970197898427244950579 GT 1 -135243087041677070579033.3366183960767776201879723832943602 1.8111351717536774351715461166345614 0.0837035045959914926620763903469544 1.0874152817438010726611822403651658 GT 1 -345370485439574132154114.3717389542441158928709552441886863 0.4300362222181893163773082404296102 0.0689260781108717268321179801391715 1.0714166043317453927254298541964976 GT 1 -1579056986796648933421755.7838876981211187737598627780790529 0.6708795226894603320840283249534525 0.0247183573151496933934595057166998 1.0250289854053925687077034275848893 GT 1 -40603917886823443.3278464190299676319333188128273562 0.9384489072910000644016345074255477 0.0698432900236427059235494453421660 1.0724022016793456053243094600611900 GT 1 -324614057224634663264537128642037.4081279452034001507989043939520596 0.6223582340837615391597785470635276 0.0371745178771611947927647526467266 1.0378831067399930005401768543596391 GT 1 -2186460464103964412397554209693082193.8653676220264113104817746150190080 0.5986968784081529442226915457674536 0.0582382429415538067322914058671955 1.0600029482209155369711335834003209 GT 1 -6993173143230026347410462520561177817605036.6321615957128561106301338822877371 0.1449951208752071287112356521623416 0.0805843819431799712093064148679978 1.0840170085269467954447233799969728 GT 1 -2173188774241659701508.9666333129238534052407212329641167 1.4493070846152881068547293376276142 0.0233854201894309443192125055761491 1.0236631983132726123109861523582644 GT 1 -2839332068.9502979027429116304781773748204067 0.0897331705758111353874150015627788 0.0783304046132599283800190705489080 1.0815684760640608859542513785060953 GT 1 -329763454279551255616587461813631785.8953031363452911560458151928093430 0.1061561894046099911374142669208664 0.0208039920342252405479267629212647 1.0210234440647235882772003527976412 GT 1 -518286895.7089118939401790796686969056329202 0.9449451040134882819918566978888465 0.0972078244527320136922584763046768 1.1022629009490787299942159481475939 GT 1 -159944364086415341694112814975268175115.4639819848144850360436684486805951 0.3484422857282835718213136160203770 0.0023934396303552056588646746749285 1.0023963084855225728987680327786295 GT 1 -85357822532284870494.4238545172565885444538337910965476 1.1075300088486085044314493186883299 0.0894894669709786038101914084123080 1.0937498114804857040928189672917234 GT 1 -14494347310036277357485915.1422408223449448880561607784779239 2.4695134714400686326467151338939868 0.0731595176097112524643521990595518 1.0759738076300184224222142206584034 GT 1 -917791016714246682105520851869796560046589.2763518478674531193514674969415460 0.5276265435311082382735813952764014 0.0915941985338050081003977796066499 1.0960640823045979869255593918136916 GT 1 -247662.1640729420546924156790445775703978 3.6648030446802049353179657150274870 0.0339592851138080943867110651127805 1.0345492977425049491810964884334181 LT 1 -4571172976407527337484451219581.7681781304426328261651057255031193 0.7613997475294372684610408679332494 0.0294912549328306224911356143495734 1.0299348655252934324258541925092294 GT 1 -15318635182128425169553381911.6142068178976857158920591923750006 0.5692763549051455240237404998470749 0.0010676417123419097230449608046699 1.0010682120477335827032863990756650 GT 1 -207259.3173581059298700576026915556510064 0.5124753983875061845420121003838228 0.0596719246988561805269460239390163 1.0615264483322881964099608429379021 GT 1 -2289095350729165458.4201120524627446945393744016753885 1.2411222666803792274798036048164539 0.0091243899773835311164177102632864 1.0091662721846721025400387490891291 GT 1 -1831199462388.5144284911307954091916762633822353 1.7037428761136966797155905431048901 0.0214474330810723243874614991863832 1.0216807716483262182401269337369626 GT 1 -2769469333471874444371.8691153398928993940494768804088250 0.3387140438882628795045868452561663 0.0559808561364296622240656943426585 1.0576088335257689765021059473418398 GT 1 -15035824161085695.4120249406038246026224664312714430 0.6274500292379261254377662725501122 0.0891823779519633600513229139457309 1.0934125971008921858537141551009948 GT 1 -15.6608187798455341966664642996848505 0.1305167988340098005816642513070094 0.0736396051545211889789091637713320 1.0764919247553090246874677840200910 GT 1 -53802554.9073765775018728585771468269883564 0.9212615664689780820286291395563578 0.0099085855879745414551345041389576 1.0099580023264480456143489844411454 GT 1 -387361833129168999180584892.9015777902959479716334625162474911 0.5070313714818029574533319993598973 0.0280384717141934713195474115963614 1.0284390552578789215861515048184699 GT 1 -7433909048758340216507576658.4139020662510544377566074614022351 0.5762413402331432662639855738910925 0.0130943866014641151405678188981898 1.0131808739101926898717218553573623 GT 1 -301487192330734607939408316391.9690196637757155076598868676449862 0.5743925761494562181168737568829237 0.0346049659065351987369002343907576 1.0352178996539289763989242812499128 GT 1 -8223001299264028332315217203753275127624624.3214167819164695057292465729430016 1.5354294153674280054843519653948014 0.0025714284418370175287153558429517 1.0025747402425433659949516435449707 GT 1 -2674089962.5224309343296684087134682037659331 4.0450790762418908953107078773985688 0.0206500867729767222221257166241722 1.0208662812840096423740481054936871 LT 1 -155679289574.2614398075165143408564850078167388 0.4130842106967887788508751379720703 0.0453265812973896637565346720927341 1.0463859669313728591975446182367267 GT 1 -17728050.0103433481817489012943295504323515 0.0927377234810150052222844722857104 0.0976840151660616129950502522954357 1.1027905044853402817661834861098227 GT 1 -15450321630893076671224760.2088243975302340658601387817962440 0.2106498620167124463864957007628638 0.0061932700274812676566669756540024 1.0062125278781840186958257350115818 GT 1 -1726636614252717339850102955313074704.1429478239156169116791235890552352 0.7942052435414570022413705215066903 0.0597181525870823373416205157503605 1.0615756109871026010041617543033745 GT 1 -873822883.3430355586864277592718622233046591 1.0202553698176580507927609027632846 0.0047156615537629422567784807586420 1.0047268153645866907823802807796739 GT 1 -1135282163756.2372127885788674185328291419116764 0.6445207119773656805488171503635870 0.0793146817242779936320711486429360 1.0826369750784080741044975858000160 GT 1 -16613592734791.8325102303612543127665088111226276 1.9454929887097321944138197281581957 0.0488927457261255729742520584039704 1.0501284422766702234544290917437323 GT 1 -13662162218741.7338348489924760857451707333385147 0.3616747065923519123538356113642277 0.0129754880054789844896863296699633 1.0130604050094961663705494717567746 GT 1 -17660408705887610.1511823449220384653558043845219782 2.2612655702922017890634405890326929 0.0265309755126646106726620100962476 1.0268892733845467406644311678046010 GT 1 -4031779052287711794679776433599556100908.7805782355176916373725197843332286 0.0236220273841320417077579636557932 0.0572588668424166226952446340279062 1.0589635481834897255451375654458767 GT 1 -374489031995923805807429582528036446999367.4770395379954356965111551276605430 0.9401016364152415822349480161873153 0.0877293919684283427247167122193431 1.0918186135874172315986399632703974 GT 1 -8084.7023749577529229553284330857699729 2.4351331684219275203726125977962849 0.0492910717615488810873814182660716 1.0505473324353622185680337973611917 GT 1 -510354301639134465383292.5092359551110736360925769586991519 1.2395623715881462940318645255184342 0.0371233638419645448017955631571566 1.0378299790680409660981885818674169 GT 1 -1701015662895209775271207986209.9633201719269758520942026034637889 1.5653133201917208898299998882436313 0.0214740169015664867726001425283790 1.0217079384889168133884364663444504 GT 1 -23471520015143269551213327191084920999.2307156273545256687953101487241073 0.9648636952462120283826982889004292 0.0068616776960765611230422369650650 1.0068853272523216117745757327783831 GT 1 -2757045924695447419833100781135.8278237968248268189307153855681503 0.5911723964392954252031957330464373 0.0166100747349202214913424460020106 1.0167495688553529504967433620350640 GT 1 -7367775167078155.9945652851868046704588403538617230 0.6384777946449825976370528284643751 0.0393541086839712674054022592535928 1.0401494172968356442308709563550740 GT 1 -307323792.1288582925576602588075157592149250 0.5836646714309381517524216927426683 0.0261242435711431507935543784790879 1.0264715436107317539237650276433644 GT 1 -110410210916307160530977173230.2903236445555362125325082449943884 0.0856418545165924509084114478319198 0.0931713688245200918806454869078014 1.0978017869880539576282306654143804 GT 1 -154484885291361128802.8261484976103377734967470163680795 0.3460656716767102834363400875786566 0.0649379991260475629242367077808923 1.0671424407967972371970528363087591 GT 1 -98563997430579285441099862501555319.2506417258000276834985138386318330 0.4740464980438702249217336799818453 0.0046087676929689287028382553929491 1.0046194208072140855844163169664175 GT 1 -766352613587244091976293761178.3471941839449012957921503964583439 0.0122332333108609740953708225250136 0.0832601416951049234772204823530826 1.0869315347535840240754256576849470 GT 1 -199921383851220577135865077345366453.7504194529623347500796577676332852 0.5010564272386500556155195042056127 0.0170761192821556897532923050630958 1.0172235975221346584766552231869819 GT 1 -366166673218691478270194057541192558448710.4461766906913240923696287552865017 0.3625357375486199485377008810625889 0.0250555601923801329903412900180848 1.0253747944206835710961170226126630 GT 1 -55608269869921143140256982.9369660239630229819731415589498182 0.7557064427284590368675445339010532 0.0743779355363011075021020972340334 1.0772892653750161722181937307841946 GT 1 -32549891555256493.7662964267654163209589846537447900 1.2191459737601917681278975583190088 0.0018369924451994583185786384938137 1.0018386817850079808303964216589651 GT 1 -31443846303290302368063350885.5797855234297708263012323827663079 1.1300290567819947595058584053630555 0.0196188027301171263991516482417437 1.0198138061433822615123102021941448 GT 1 -509382376335855870.2560447384189222422882230540289554 0.0757902905943852814640121279200484 0.0896189257396473242636807825945142 1.0938920042044991459028678002458688 GT 1 -64524684635577.6609361060021462668726689922883530 2.2301017799177824511191346282943365 0.0776922003167461843202886819249455 1.0808762720015785511301477765329914 GT 1 -14539754280544700616.8229844112108861880021486119074916 2.4784916507234757225360646711334344 0.0081016193751567167494950102559272 1.0081346158307320064213635916159834 GT 1 -142142169506.7337626610853632057505350069599403 0.1817202938188472484009870988255612 0.0275425054845818775019538385577193 1.0279289118838923888009891470353671 GT 1 -1175477778369329.5291624656930913880351914129141970 0.0519414556996522457009241312452165 0.0852966231541463336542927371148393 1.0891554445743055899415234343309626 GT 1 -87430517626279.3378788250101838433364937101538298 2.5269531034506983514902446002266907 0.0512459475629959913755019839076086 1.0526056789380687973296939806526980 GT 1 -267010479763465697955589822311759397.6233374865810170129028406593902728 0.5363313505842475832351389093988635 0.0327224295391764861707762641677892 1.0332697818420448233164814041676620 GT 1 -33848726115929819674050930.2984391670559257520464520641593043 0.9625248999972140333706363094868826 0.0213010075573189165573547849630687 1.0215311480362501713599668655608843 GT 1 -9190229405357424100.0095115577076926710036427399967244 0.0869051759181329229150313994834924 0.0611373639748612913585768499094756 1.0630860979881003463034981308433553 GT 1 -4854.4536739975534714349645720548653232 1.3542332982832907825350360090547917 0.0488840533288492602254251819434733 1.0501193030786286320518911943338064 GT 1 -4561881742431272923787851760900.1969201363526296677917999253266627 1.3196288637481989408165225961301116 0.0851476458072874140371889708454164 1.0889925882648084006389354927485457 GT 1 -182744111191187862798629990495993132.4086626710878008209418491120939072 0.9650912421473356263346691261888202 0.0425056917870702857485858482741699 1.0434355023701428416431550548874944 GT 1 -381396709640749356721505948451298095713.8159677992492519229482044483417802 0.7255862823020642134801338347535903 0.0569875598820288391713721798964756 1.0586758043699770594232782841029325 GT 1 -17126245992661684509403302827050.1152135250718523638188100017989803 0.2966891179713659841254916545549763 0.0023263784813012471405299280918798 1.0023290887038719148850468328033965 GT 1 -8545707397053377486617198324852784944.2369014396680448848120335933681671 0.9912110198630830961796855724596616 0.0102934777742948566781639082858486 1.0103468219974322442707219374611983 GT 1 -377312890165179996387855964327623753.2050300549148447828518018157158220 0.3640931709349685272344631859200438 0.0556923170354620201875954843342451 1.0573032305982313287916219783916641 GT 1 -615.1232305251488070677406019956783263 0.4275311562010109901313003584446706 0.0714720359894027594713920072825796 1.0741547812378375498440411825097925 GT 1 -35321599376.0955204185854977771773709356616473 0.5106069430975826974069583803955297 0.0603545152534291553755847826924540 1.0622526187413562381443670182758660 GT 1 -16458532745919026759860904521079888408.1131620231021504317219970361038053 0.4526255353444524900560112458431603 0.0065713356272392235850068358795844 1.0065930219106423534066710486544138 GT 1 -98816814305005883845296430064729.5964817550631659651650711146048561 0.0939271230702631650664774517161045 0.0592060602581493170395549241403506 1.0610311434594457972537330165559525 GT 1 -313086660391426198164626566974.1804078203132117668955770752606552 0.3015964595559300849082607527331591 0.0272599403200862589593937008077970 1.0276383859515790436730191894127691 GT 1 -330701.5878354307111180760873418236152392 2.4339416368076909177794611385955056 0.0708251326578697845180294575279688 1.0734583260817561244182727820319840 GT 1 -30284697923382620.6890259128098912688971933648685627 0.4033387053641601053177496587424030 0.0097450152725978941382177733884713 1.0097928086857600330938043760491238 GT 1 -8727177947554129258383702178.8101014251023184011726203681743951 0.2094349704883602758240543606279089 0.0968889946568053460649434771284329 1.1019098036151651379908115517763364 GT 1 -107604775416147424675554559.1656103647821009750203687240882917 0.3687550488441498739080504670787391 0.0382608247533088871306969176704429 1.0390119926803559850317604575766229 GT 1 -32931181690096559346886209987298248.0105157795482640397610293680584548 4.9358998429449702546596875281596949 0.0423203345847738344251494349500330 1.0432419354092008491605318961772015 LT 1 -49.7101976552544330577992480074613150 0.2012483956659305605259379981759054 0.0542376867617104640230351367621753 1.0557639960049393906831518808331268 GT 1 -685.3172157152947168537358687195247047 0.2812683936100264020904847932115460 0.0559344261858612246641949615204702 1.0575596514629694808208831403798456 GT 1 -5439630400951704524231.0402026094960629064649095898224084 0.1778641224365510874645926210861063 0.0230051515805328719997743210356086 1.0232738998094819386063603409960432 GT 1 -574785091.6612495009392010775929623480428033 0.9254779800411105498210332990481271 0.0471665296434318739123343927395714 1.0483151331401424663646418747622213 GT 1 -238940130184232807373979216419.4968350456343738645180022530232301 1.5774088338698002272584665672966986 0.0122546254325776325329284139677010 1.0123303324984401746214073504735132 GT 1 -1814923389.6069874892819567029280977864387958 0.7387105902315792494829418244136635 0.0592506461248217168902107941174509 1.0610785363276641356817375149877046 GT 1 -2544411206905743703285821433.3510792596264222747042672943069744 0.9583609843680035089994747195723166 0.0928042643352283133317446245783152 1.0973970465655836169220755375654661 GT 1 -91583.0064183312299460043081093110812433 1.6688633650567924593649718579853751 0.0893536762428168406839385930807393 1.0936006856894727964550102553708209 GT 1 -36648.9846450367409205837681719839053968 0.2837666496603205187734091084118364 0.0344741286559774816475696981548001 1.0350823816734777675592845013052929 GT 1 -13200957332360324954.9482832194500964640249203068186782 0.3448601790794765788145368946801672 0.0512537535865699210405457138682192 1.0526139066296045539644392469373480 GT 1 -6608670171441907790128682.3475389941433927595920647413454402 0.2832074212324228540999082183028905 0.0565357627006288636559091702653665 1.0581968191851123641670311421298868 GT 1 -47070725518766817084848.6405591829081296367822428346582501 0.8076970789723075906828803881619019 0.0818536925885125934616439961019387 1.0853985247954574557163711562203943 GT 1 -2043492.0728742795976228893345978782839872 2.2119573488355423120114141076243895 0.0589714527757973151752675914910051 1.0607818027429941378385737754357079 GT 1 -103797695147968757523.3801232065342451326208722939484352 1.0349749434619049672209520531389748 0.0755331884888053339856344950615634 1.0785381276514787882558844337720693 GT 1 -774229.0214779934406802169527473956981836 0.1944431027290118291874325682567921 0.0814289041419999405454888702285179 1.0849359730133158260675137759921494 GT 1 -51646017096141885995121656669.5500866338087489977017759590426019 2.0216806882852248134004227594474371 0.0965554468379826312213488606313638 1.1015405397737709676534402014512770 GT 1 -27154457.0103184828741496374715752178220992 0.8824142786615311061868630563523662 0.0267505255208166162970481481459026 1.0271148324565948014216040611965362 GT 1 -128469544402872214238753183426545.1497336542613519214888901368768163 2.3734405472975636434504590263322439 0.0535989815682025873282563471403140 1.0550888902071723720616839981923989 GT 1 -228708165399488605933532988.7312514138380246560007930283071679 0.6725870040594666957570684443136749 0.0711390171958029608019708300720995 1.0737961931265651808809041082660353 GT 1 -3349166820814486798908739552972444636486.0947457777653869805214273381341801 0.2791516811975464490148137276389357 0.0126721824521035831074138957482689 1.0127531593864905734711508879108796 GT 1 -136.4418700765601099325217879744480212 1.8494921923888041026235749367428871 0.0104718177589288670681974696065453 1.0105270330504358895259490622546086 GT 1 -357.8223203429968039263588385616463643 1.4012241914760444500471392825325111 0.0851752234522754332555369410707350 1.0890227330860195040277260748819445 GT 1 -395174.7067837080644620832525356821009088 0.3060433284221293721055415463905765 0.0101220870346611216546250973487428 1.0101736636950985122595795090223496 GT 1 -504184245443.5973519718581099761208512319760847 0.5825512105816796617175384319193572 0.0851636758965758015306467856039833 1.0890101104689723629508865624021833 GT 1 -775333032524154975983.5488242214329735361093389148558935 0.5002750697584237474426732594548954 0.0937178236581843759206957867510085 1.0984045685146375902422451262132831 GT 1 -10905168300141793097299451040962545706387990.6083872739387603472326919542602453 0.5546333210330953244676768872358678 0.0960902789010876429007123294369385 1.1010257896179318043956701910733690 GT 1 -72213834104310839313593960622159948987.9922859147191725455017673372140807 0.0728684208049308071116481616954877 0.0380028312219813315056642665529283 1.0387437713789540187678263968401469 GT 1 -8.6766769183167055894299833290194191 0.2861301719699808666082735302786341 0.0051288238136912436998228472921199 1.0051420213751985939854051488621807 GT 1 -2728730556.1607165063236000924545111429559629 0.4766500012730691597277145577770437 0.0162147135346793815835089931511384 1.0163476105516833039807494402625984 GT 1 -17269718030624504526191617824210971684754005.2433601836364125351427661130309662 1.4984706564325089478108103296846807 0.0935104453283093017576752573118497 1.0981757715544557533079110048368896 GT 1 -348709378.0923850187783180872119701734739790 0.9579685240133716668145536782026335 0.0578086225284514248995583345205603 1.0595468642423119317346958576400890 GT 1 -43019995673347573542744445348009626490.8907959776340693709839276952783838 0.2014257465066795881648040022119434 0.0142153822147471615184016643322904 1.0143173886211445233891070797449183 GT 1 -14129415117950507236707338.5974766626238591978874643609403138 0.0117017942922424293218339259311488 0.0370185642208353118933781554305962 1.0377211448577117895120321936977329 GT 1 -129427729118943077.4931959802475289097330390525726182 0.6908923178842500187468846176991312 0.0339059502256877485444229002201203 1.0344940894939817006796293912933267 GT 1 -16417393346791586959.2857435112030723715043611422617464 1.8947026810805061617604451866960766 0.0531578010435369060100363037148858 1.0546228322505406529545358647024834 GT 1 -2340051934434883452970457567571126801650.0636794282666267929897720144620347 0.5792734954703261402955567054771409 0.0400529868185374468644188982360816 1.0408771906461764352525590085318992 GT 1 -12686336694.6606743394850540752327086382557643 0.0813650789001051045278375422097090 0.0064440380899545452168080442681977 1.0064648905343095797855880509666694 GT 1 -11205487873422381724461724272103749693506882.1534865243356553345802065479174652 0.0698141046695748340485968874776548 0.0684962015944627236988094595360050 1.0709550112187624384572588171866730 GT 1 -192475338.1229849812891621721040282076216087 2.3112935766441987226863472969745987 0.0873906798052814242974835537596621 1.0914473977481749078330199392073111 GT 1 -4762174258490377579.9346461074482461061204084086613443 0.8812242378877944713720525237587304 0.0079345869927326398098039881939133 1.0079662333397260227937732621726444 GT 1 -17065534322193904276894780185320973066.3850818737614137374070333247980084 0.4802615934695279594967714904411032 0.0504299040663614916675950625208159 1.0517459274065915804405629426008212 GT 1 -203396523420047543549336780068780994.7052231301213590247258127756949387 0.2490924834056407554546234264097475 0.0109856325836238485136885631223573 1.0110464202491945197296192606934455 GT 1 -72211361263199232.8311709733861479174862463735044725 2.0381206359023355467273376801403191 0.0233387469867041947609916471352550 1.0236154086442956950394915712920986 GT 1 -71189963418008859.5324482309850563998320049797400691 0.3452778600527937093420274910856535 0.0177715542598166054056128021904193 1.0179313645459204997501636082321687 GT 1 -34292396.1314854803815088100284591243273029 6.0443762158176167487688018082695594 0.0970314030549744871842194398103251 1.1020675025319613247406119775149306 LT 1 -14184963170676609950617199589698733682.0180595190126804318035106242710543 2.4227133777784486533946041322552434 0.0480767617878608559055506945548140 1.0492708795718226371541631775655671 GT 1 -133096297590051647274.4473814112389927342443886014468039 1.6564662592069074604323754563616017 0.0125899736459846887102105135409726 1.0126698989107567937682637869117003 GT 1 -664046698017631368767496887369.4631709141595202783257287847630801 0.9887587673456481198656301982093771 0.0491336955142828781822093363796080 1.0503818104566184609261532415851767 GT 1 -294523003.3084201253265895742612643948245977 0.2837704941400473089696910751542192 0.0575478334573190584221538278331221 1.0592701126267343651377563498871044 GT 1 -3.6059715430846888697780366832985859 0.8231237950941018296070807674888281 0.0997558390031752822946257712901398 1.1050892624538313486493686360469456 GT 1 -27482499909403053287896860.1095587587419720855541382743767308 0.6128982876508157793501346348834456 0.0629935846872471419755503528724107 1.0650651501153357266828308517908095 GT 1 -21575869312038595.4188836708047342721545776960599778 0.5339918244563622619300384836611701 0.0262369398921297512242917704347431 1.0265872697095910588877799033631059 GT 1 -635848148640297892077.0973948238015404770768641694876907 0.5347795534944422410723617211975242 0.0672424137386581361222436761998059 1.0696099336935295274513617811022643 GT 1 -111.2225388645241568838680314501343256 2.9316384788077154674054511538701128 0.0167381473906947380599128952859002 1.0168798132203152001650661015716789 GT 1 -131.6489796441785469117416259873381919 1.6549104483473051953267710189404868 0.0210739278686971766145950679705147 1.0212991529583881685673707289220689 GT 1 -1741759198367737.6823928006561292303087302228869472 0.4823947924942927949518017298363384 0.0362571008965437455749065987701200 1.0369307221177791578931704621954140 GT 1 -1937531747695.3571722812286976754716812522749852 1.6630266592057219732245127637637941 0.0091917073510096825737919790317530 1.0092342117521896981517736338620305 GT 1 -376524087699008522959565520622.2058713385054268963334955466457780 0.0026700733621193923849572233522151 0.0359603757092125448823732064144847 1.0366228811802526090755571147792053 GT 1 -129151846967975278703700505481607860249.7492457558204493645007521230461408 0.0182025319234660501726121248961731 0.0085584137998322631061277487361768 1.0085952473315268354218924890132946 GT 1 -921734777017287486829.2763485941626014940468380594658604 0.3518656407901668714969361036248824 0.0036425735190512900592572620873383 1.0036492238444165502146426168151722 GT 1 -821680993175679040228097.6074738193651158729946225093477148 0.0559538405296823119055099705735683 0.0901681588694456383554583542342538 1.0944954865134346037190185444663855 GT 1 -98947718866121469411969736.6343208860566995559437968284568176 0.1344821025784783679475315610161158 0.0496427318417693156646266479949587 1.0509172933392991626165924861079720 GT 1 -60049801222200466021404962958055.0865563817659500219628492235106360 0.4947108275025922446294385595568672 0.0234408594885644353879418392102654 1.0237199667395232375705043824192017 GT 1 -42804227620645322.4217203525424223434209523359335829 1.1873796250007203891513914815839025 0.0455007040631364165862284943206216 1.0465683734416842328114865996027965 GT 1 -81034049458566760577.5061491639016968885840283294478901 1.9732479673420114344978262459525186 0.0272611747796124157064223278427896 1.0276396550062428985050775577377075 GT 1 -962571461066840052838.1571384526120240254062105507640587 0.6311064536958201500876161725669954 0.0306566891157345339062656820413329 1.0311364358404592055574978257626133 GT 1 -652969599132797002393323949073611658632.1522766554698145032041366725775166 0.8334852703888272260036236316795652 0.0328299167080198505563416584759738 1.0333809114130574696494334444592728 GT 1 -281475527874254391558399272255624040776.1563812635638422587692691366474040 3.3175038798407530584029286303169757 0.0092845195229405209543063026485340 1.0093278893282626722082842083878311 GT 1 -306021165848393170468448.9543399788716265567737407147036022 0.2816036328200294317462570671332495 0.0042731270447150061009421010158809 1.0042822829442756791049128770667254 GT 1 -354544969984255.3049227912824877313516459349018318 1.2907557864502957861496641629226297 0.0419081540221023589326102382685189 1.0428116329784775782812331169375302 GT 1 -211.4970496485339592594880974235595314 0.6258234418437332547283184162343183 0.0647899867990950882869113088731234 1.0669841618660881199506725264860811 GT 1 -27735256875672745.7101770479330836494270471806841234 0.5027207125556227876368423574525738 0.0200274906818310104553021553886082 1.0202307594271302884127933638194986 GT 1 -69079403913681018699237773044360054.7445205666942916199304361660404931 0.0724583302908780879096297814408994 0.0058289233915127144628731386464832 1.0058459778705915254976908840678272 GT 1 -1557513066221497241.4114684679348166288272875365193521 0.9009698447859479709157252741467302 0.0207382462769700188929535631018172 1.0209563037274990308018144677172154 GT 1 -924075426020288180585466.6709005424988639877189264491745182 0.0161116034729008627753285997973189 0.0685429688632835009562366273048101 1.0710052186821604666366503867714968 GT 1 -616725481.2137637402344738248439302212433340 0.5382214744546995181232418242184885 0.0789574294294198377800327592544985 1.0822490216771456118319793262817355 GT 1 -86973268776809238757769.1160958665928755975281926054423616 0.0231658562658319441634709827913248 0.0151837559346360863596358654489939 1.0153002094618179573508866276018221 GT 1 -5694028399178064417202826608692119663920.6532703395426244379875158663617909 0.6084947900019058595591987299502212 0.0372912325099008591910536000008082 1.0380043350514666243513727603319855 GT 1 -2352384129.1175405256795081597626210743767594 0.7902142246202482846087099643901395 0.0921711276366388950206565152958175 1.0966993847030726420054142109972441 GT 1 -1392736396.7373600332884982180799380588657566 1.5367862173047639261076228944666306 0.0319555108386807303617627532269712 1.0324772328842869017018622059082629 GT 1 -530398515772631673515344676139207616157.2389498387050648460845099750641683 2.3974926385021062392795350490687939 0.0722126333340083251263499773289073 1.0749527031982506284420830776979627 GT 1 -39.4299275991990526975075671511231353 3.1463181525202409660194985366069619 0.0963123215221740615809973495430492 1.1012714666943153338041998647481637 LT 1 -2512838394947420332224798786376266.9993113184854265802985159241394172 0.6295655606873316694811585134262706 0.0558342482788662437398934296715107 1.0574535437994282320072401487353417 GT 1 -2666338.6329866323995315533407982395595444 0.3668064863628549961298683552446378 0.0574058248428225098452386345674447 1.0591194440605312277058518228528149 GT 1 -262609688966959.8187635143002143631035750619535746 0.1578522454007746283478900197877275 0.0450692820821810889610294271924312 1.0461164878159568189199316418708258 GT 1 -7783635.7382152293386479314840761483852883 1.4188951185129359680489875725915432 0.0164400316831506775490366383323738 1.0165766686175299134258739020723684 GT 1 -3574591388961897987347338886699.9990830263228034084232260556821826 0.1149228507555145125857483794779662 0.0420080268132797914428052524403967 1.0429158797658769122688583311851220 GT 1 -13917042347626956425.9074099776706676165978274647193885 0.0032756718137479356833973608243777 0.0623987558708970329965220410397627 1.0644305332307652355130010677660129 GT 1 -405853308897.2790866601654957157014503312111053 2.1620283204950590349339403120851830 0.0797410911902163966847288899414046 1.0831002259116385235011235269899537 GT 1 -1122.5221128307100960636410052026403035 0.8540204929278159824255803591832458 0.0040351454737001300075411729223459 1.0040433086403070997110589348411307 GT 1 -86552638534198933547438608314126.1942851052712032371917696423841431 2.5634860004456372868118181974451935 0.0784984051577968710024474525193629 1.0850923654649811485013145243567416 LT 2 -69144189033737790.9120043719655206084503258119053620 0.6303476007246096914304096212582746 0.0239367895643688472473814202433162 1.0242279298755873803368520262328610 GT 1 -280537515667398139.9724983867621897785752529672505635 0.8601953713252611226679809670106495 0.0625027473730831607612659819191450 1.0645414516731538916911459499088953 GT 1 -3260036371845698424.5688124720935885159568953259342837 0.3021333358065572721041170148676592 0.0283087351099726286348480846034202 1.0287171536903457401732586005203281 GT 1 -610827686221220.6353435966824112342175730161505822 1.0633864939400203586393301448251267 0.0916348771560384712379449253372452 1.0961088635389252668993798389903488 GT 1 -145542007.1287964271998128081740980484278871 1.3305899173506961023756354150782004 0.0586411309903241408867122620741564 1.0604308422701233389210397802354653 GT 1 -99.8595364369509320401680800512486008 0.0723136363199122033327005887689056 0.0435277386292583646633050099800385 1.0445034906574783511298850923340888 GT 1 -802.5887745259670435986886986390440193 1.7159104398212161662160533627543987 0.0481145258819012074420167254921964 1.0493105517235474622512003146008975 GT 1 -2808424588858062609725793339766742206.9622874764008063554651726061823345 0.1075447935603442266737895115617307 0.0053623305974441590844367711138331 1.0053767594969645465825599952284509 GT 1 -31711555255061284062.1690418253918170890396031685063716 0.5267073816770864007340018895691372 0.0200831470990441173461653206871426 1.0202875548955898445158194314864637 GT 1 -21911380321081616160.7442905801946814609655475008343750 3.2922104089207185741034909054706263 0.0382133956253952011512916031605032 1.0397217230321305983495680031408339 LT 2 -88238.0029354477862869511766286271473740 0.4129707054547714900750489954995830 0.0473219445218192084022811195832873 1.0484782545662003498290644779090889 GT 1 -234741417009344128597955660554699427083.9015476906932477616761949256548560 0.0079052122061909286017549481682987 0.0250259792485320425241021168684864 1.0253444537223941891323733740352005 GT 1 -106.7958523065604844538353953277026260 0.3225556105376385263529981494126642 0.0755148030474648839904940118231298 1.0785182402328147070961122301176276 GT 1 -5314617404929.3930621196265659918941530125305551 0.0077118095728055730931627144447459 0.0710951752760840497527775528198311 1.0737489945835094394492115841426467 GT 1 -6713954856409810633979084849000884525.7551330154643154200687140161312193 1.0022215504078783253952934787556575 0.0550402511318563007031349846072633 1.0566129461858596721256479351199895 GT 1 -7834561892831168.6734767146573489172378136656978649 0.8200393824718319680755881154520552 0.0805987331298331799138171982368192 1.0840326176795178193124912043434752 GT 1 -23623967205.7874552058081629971466668553338087 0.2559194514138054543366673121985190 0.0094087137078234955334773604472222 1.0094532552606146298210121192283446 GT 1 -15.6901492457971179467586378771670115 0.7786644255036470019877280324499281 0.0097462863417824182821287897570124 1.0097940922642523269275550050512869 GT 1 -39157805507903320921880552466206407374901.0637473376293110307422227416126019 4.1481403586907738319344578493181351 0.0389911091461965011892122901585983 1.0397716183857507675791571747887856 LT 1 -353.1545746371919583182454792117137018 2.0624790205098374183263680796655984 0.0353305908851890768913250286562687 1.0359698175656807226015351833785618 GT 1 -580836092367.0439065424751005442072139687202821 3.7447293056688808408226575492918800 0.0818372593584486612004816872353884 1.0853806266861149194890143517461548 LT 1 -1665351681522331050115295831103452.0618815806237226438705576511328767 1.7993276397208471104818164558077539 0.0621338771479858662781958119288937 1.0641480663328221349396237383912988 GT 1 -9822666741993855299776011.3566094545795723768573778484632551 0.5400529778517233759736396377287770 0.0099221111073281781922363376350768 1.0099716632991045496762270662222596 GT 1 -295644.1284124978001729514543864762598932 0.5047379038346914692102743689048173 0.0497883541165743219464482603010486 1.0510705340600266213806873337658600 GT 1 -831277069363994079.5304984006290086847299731773994562 0.9502471445403191718771183781431669 0.0942121175664822567396321986471309 1.0989501257000940699008582761198919 GT 1 -1557973747898094854965647460319596067042649.1310737978206100307363662140057611 0.2050836069628787630087073049895713 0.0832448081032604124524498050386815 1.0869148086742382606653477877668695 GT 1 -253968890755977237663404106.5427441581206103599968353484900895 0.1096301059127833717168836954134667 0.0703606544457959262309687419870616 1.0729585685282377733702729895978091 GT 1 -25533159554495004372409118122012372.6979493929613653855979068701291437 0.1423821293498860271918649848855913 0.0421119964272720392632928462608882 1.0430244143456580164775163876970031 GT 1 -15531986601502064841.4456302763891841878296267388967804 0.3170863868587679390356292771877358 0.0317687175691210272991485581773601 1.0322842921132669047567891733993079 GT 1 -18920830945469212252015914710891185514.7081337318857477565914382293900765 1.7358630131794298542709434805597900 0.0270066744835433656139370748330411 1.0273780565149767297982077830234190 GT 1 -61055921544711923212577475465778.8460867650753741064236466518921910 0.6162014058296797333875483293241151 0.0804999168006362774394737204312784 1.0839251444544986730444448540551058 GT 1 -60746572295659854528404372908.3324004913066043985343918077681640 0.5756842974743945485631750882902102 0.0923770756253136016672659889535061 1.0969262681597727297338523694237831 GT 1 -4547330785715495100093439792.0918752115417345266508416450748982 0.3936545388530782009216492714752126 0.0648913146641728621373741627148381 1.0670925154480270543702499058539836 GT 1 -895835.6671648056862911326880085932903507 0.9779422418902571393528742326741251 0.0153136019168195528873364831164279 1.0154320660834774679362984319293269 GT 1 -525.1979232833718291036266083906384177 0.0952254210368822795894255971530631 0.0412298420472388891597695611211847 1.0421039012776190703280698109571109 GT 1 -447386418258602788253425.0039503757820717014531616006039500 0.7842670855910797511607590147345575 0.0571428541134653264562693243662168 1.0588404968099421289854109802991700 GT 1 -977404646060504228255198006711336069775.3696100634328899065301573436639580 0.0358698871394446005236108709149687 0.0450722413832361679256916993493551 1.0461195867901388755425831648957537 GT 1 -345583532056507452002663647.3799598194076319795053923008533622 0.8700895288167168622626311618074602 0.0508546094021652120463342988120572 1.0521932881048103970816894790102405 GT 1 -22502944070354166508840.1544755738428981441916557830911192 0.1821046354063889618057437795774357 0.0830633671835947760061763142013090 1.0867169118217656044601583333287507 GT 1 -4815269.3628083601976996337046041293784524 0.0204665074745242080933354033285556 0.0866029233483848409609077063210530 1.0905845787491528009859868238300734 GT 1 -4075484718595.1915669756900276091509658882468006 0.8516858527302605637582489371950038 0.0884984711298403897314015877943523 1.0926620075525280286991043668536906 GT 1 -23396209173358028859590953066146791671415832.8116458690481609683276299240655783 0.5744141821813607586524018986906362 0.0043192173827561066042708110683060 1.0043285721487189344234498812135183 GT 1 -1759819231.5569093789129779795153578007605771 2.0748158091557971906669331885031733 0.0374805253646163112536925978783054 1.0382009796374783604319860192096473 GT 1 -10446002684147.2142661989753552924226373818275578 0.2430855561338924781066809842003649 0.0038100485157583065913766817170043 1.0038173252395988524855722560025969 GT 1 -11427283774399924.1476021317702391753508979131341799 0.5902477159751742354577705430215226 0.0263703968014249024742534677918950 1.0267243318563462840506908384356595 GT 1 -5936402377647784174353326081874518183550.5566109349890106875546158646945427 1.6689530898460276093995313649416264 0.0501386950834280340666529515300762 1.0514392998704934177715748872784737 GT 1 -126269363017375121191702012.1732094342837973965941849722452443 0.0976476937717372404391949474832055 0.0410033644625168460079620841656940 1.0418677124077902150292387789114452 GT 1 -69885705111646496136032676175473465610.9016225470493285228537108667463869 0.4139759433110750064856897908557526 0.0122403527149814530368765315529185 1.0123158828084231437002079966273560 GT 1 -19067.2606566571445845311128795218799510 1.5286609725264904081759154578201616 0.0389454320041126147944228911980923 1.0397240891099797980624687433466834 GT 1 -5448586654006885579.0432017869344001956362327951396987 0.8303718693218406404836241772077746 0.0974137100355787991014099071716374 1.1024909811967080896310392869079877 GT 1 -54.8612338603615832997489820220812564 0.7410343584842067321075502275231469 0.0653726327826695850927826919833228 1.0676073668661953783789423146129749 GT 1 -22178509025541432335135436972932182076272.9788121787962379586772548325448275 0.6655007934589279941398846560558750 0.0969468812020648008209152924395230 1.1019739024913476120147827208473453 GT 1 -363379113642793503266990209321962192421743.6960636491419537331555478440516242 0.7824156201813435784638911149900143 0.0951572476468272165370160639253696 1.0999941046851255725267197506905327 GT 1 -4673949607078.8553785389450718804991915285167910 0.4351310166841062938278613501013168 0.0993152738983614178400756354923753 1.1045999981449977031982195664953684 GT 1 -4420460166609601682774341312917031.4906722426487329441056319883109489 0.0034081802008127301278374118892509 0.0050331532064450344446130878924089 1.0050458621841337277913144872161174 GT 1 -89.5699576985253989527191352127749855 0.1263597461382258809559832308986024 0.0298376758597849864369150351111132 1.0302918770107847240327008733098284 GT 1 -212277349776119405270293158110555030850.5453092190273723429998487256721014 1.4740271701433467863121717129619467 0.0007938011382967083352945992589529 1.0007941163652496713561935572903670 GT 1 -35319748094778591041174976398514670799887.5099763198114007544680923620056948 0.2398495779406362314215396578277403 0.0594865055849200132584261803017491 1.0613292822152453713790123038403899 GT 1 -10219.1187917059905552977559020133812531 0.6778636680076448724397414012245077 0.0445369824324755641974695429451969 1.0455592208467520578174885226245863 GT 1 -21533360851041489279679815006555197.8627374600483842466577869193354123 2.8577390702323047746070822636629241 0.0870441237216572419019353893733900 1.0910677278372271074771327632500279 LT 1 -1046866705547036073502131800569193180901145.4171863278244099691670156134913510 0.1029938524026886538632771328096958 0.0941235628314877863176828205593775 1.0988523650563513583909153454843408 GT 1 -858192067275.8464436562672024314399662183649380 1.2871332422925394086766740260241699 0.0914706670747692629263190002138451 1.0959281044626950478876091544753074 GT 1 -145893591587243259807480734643.6654618690755380726420703556719347 0.5261442066051773645428554257595736 0.0511562029241331534932982489673591 1.0525110913109245245512841191784246 GT 1 -513.7058135630423658723416972742827411 1.1197731972567532034374628848920715 0.0155528443532632379842972495874672 1.0156750586800615792050588425832731 GT 1 -54922351037790710899184182488959150493.6799606080802086114974825682653097 0.7543848086627032830718580902100438 0.0234598581549087521474784169636063 1.0237394216300314077564299781732417 GT 1 -34508267166616020071479101.2002302279939960507178594890398461 0.3909239213857590190189895609689025 0.0212623667831797698455908427223684 1.0214916670398923484344276867960277 GT 1 -238013412951033958.5548221248749341552979759446984730 0.4280119278658627090747350699739429 0.0527165885030051755851551571338310 1.0541569576051879222944694261034453 GT 1 -5407111767869940573835.5202161270014676679629307870650037 0.4027685413445924527682080916698744 0.0893257569636017698850654689809429 1.0935700274080847931462599356345546 GT 1 -92395.2776718175616281838230394750170118 1.8002634925229276560964125837529101 0.0022969596173829402534688683053791 1.0022996016757010968348290390795274 GT 1 -495.0481893307232343023172943842420446 1.9802161272168257418007812471022775 0.0999725537959245642535338499946690 1.1053300203405071773354050036325197 GT 1 -2922630826694450941766489779441563340942310.1690488038114503626112183312865425 3.0354868178263238191387019129034512 0.0074807492872480501176524396633481 1.0075088704247621739384483645895458 GT 1 -153332804052498943429456689319627762.7203897957722382819643896159221013 0.7349689844206337189200120335277750 0.0001610122127216717310720911536427 1.0001610251765795727993245057594908 GT 1 -131319027432.1823113696639953992263104293515835 0.0421457698701178736130164749667548 0.0096759776255244194130041135235654 1.0097230940751801133997516350592665 GT 1 -527037542735723.5290718540129893121587926022152605 0.7080840363423007864352592688443178 0.0105878583245329435014101986516917 1.0106443085077446949181576845483913 GT 1 -4967202577874281738038166.3503153442770656808659546625588123 1.7835732483553272502150088148050469 0.0876404234450155550646570708229491 1.0917210940744388194285542396263762 GT 1 -1215424762751946227691091130712420536203.7937927060686101714647646277757967 0.2052221923044335890327550145430381 0.0759500883903598557061453221306717 1.0789891919057628121890935509878348 GT 1 -9639601487.8700282413824971367941596784320221 0.0001922505228253895546256955995205 0.0101105514410075532591613808961291 1.0101620102110802515906985445052735 GT 1 -341112247777192766150754240942024027967.2970193441487667601446767350359163 1.9342212520507440506481868363834803 0.0791900666468403243742715276773435 1.0825016338902973158921039906714013 GT 1 -323718448119769072633138017728226507.4731241176207337631801436775236906 0.4927427829789649853217200450887686 0.0083537681546984791756516046428134 1.0083888564253874118943116733097471 GT 1 -2558177771770.7143342532400547872122224071780791 2.7247733736636394155026036334935482 0.0467957037522583901072393814003715 1.0479260265837568245184191217585675 GT 1 -19116573104.7821078449982418238910590164984589 0.0747316935302327559145872479428137 0.0382081848411129932569362210908427 1.0389572600948436137169220967814510 GT 1 -20119501672351008811669959652322942.0842533920176495305341152752127256 1.1921636224537225073460070594631466 0.0467126109137724975926755501373545 1.0478388582638761631401688722840570 GT 1 -423660205464776985515358458808849134140.2916306002965751414678920314412378 0.4159611583684163848665075416608258 0.0660769382343932187038217346237160 1.0683612191295900849846928918199453 GT 1 -1928352538908164.1400791722663227909051212186540244 0.6519165073696173786878342657777492 0.0669418351923471017372864211680116 1.0692877383762919360250916232149599 GT 1 -37949.5220697208257176877668698974901910 0.2983925356507210418800939366487906 0.0401733633429733155796362569836938 1.0410025976436146578462592009672141 GT 1 -508576411050803612438360497900.0039170123362520610551026958868975 2.8505362516802288409008944080649010 0.0170844353951760396723607802140833 1.0172320581449390142402057216842306 GT 1 -226110.5812591012128405385853827624715302 2.5696921040329245191130626093688487 0.0882302681616415406139663026053535 1.0966337137669322649051400536597375 LT 2 -18515.8986271229705209471995463620125396 0.6523659388116238861720865930754126 0.0009759176488710502507178688021976 1.0009763941665529763927664930509980 GT 1 -627048917.3682439485706287703875866782656929 0.0252949525148909524779491188283774 0.0551940299315254381394573530778269 1.0567756952488441580357897801732118 GT 1 -289583350784108.2806728471103426369665351181850648 0.6345394838924233712087433580822794 0.0249517310439839216291867179449385 1.0252683025881472682711972576127801 GT 1 -19656917.2311549539562160050399516062478100 0.4519544172352634971863361655241519 0.0417127767830943723477121266579424 1.0426077304804535332493995981261758 GT 1 -88401835406523.2399909318166014709174927939605274 1.7541844342696632131009562727261981 0.0460017047690437517064527380284781 1.0470933945050946963408494062221114 GT 1 -348770351590936116.1728145908184047321299009157876058 1.2863346921524612240078010908848021 0.0946611537187183179766838096902212 1.0994459895778863115278171580924587 GT 1 -69790205072724752533.8766797835721379420121904872621250 1.4978719385994816631937446393868132 0.0483708788625667610285532955307262 1.0495798987333936996929903267310113 GT 1 -301467810421988907845728002186219.9057489167048575426019451888669035 0.1263203763384740098824988634114240 0.0444125868646618127101880971342193 1.0454290353048208686206027693975795 GT 1 -461634751686718416186016547599668046.5025545558695810346414243341583963 1.1523514863235252951176904339994138 0.0588154681940164230180364436220790 1.0606160568092570707356926869943895 GT 1 -3011628137878496619065819184257382.7599671230579935970015293001889379 0.6171834453922674943161416384094330 0.0631556422563022778968432720965264 1.0652381175381309107468991704455078 GT 1 -81675.8828946151206570205086091636222238 2.1632457090736609338935841109057748 0.0982169246504129802031805956281753 1.1033812808031292614998435024831113 GT 1 -104206593254761980970500411.4372513992254734722220117472964804 0.2990888199048750533297956238146720 0.0393897827840590321958135031195022 1.0401865535223845880271122206806038 GT 1 -5812302597784681717148957547782399.6756461149464243644078295594414778 4.1537267718227563261263080306857879 0.0845608680195175073352145023821544 1.0883514031723730129914915413634666 LT 1 -180229153943283976347963882572521182622553.6984819727607408378613883910898717 0.4083917062486451545604431290888394 0.0581492175279824374776731300216885 1.0599084219722637315269824269054395 GT 1 -14284491845213196507756252641807664.3224021424109948759015439982374950 0.9733763582081620973408303603167118 0.0561392387130110635456689740970010 1.0577766223522943058816589160152981 GT 1 -26.9943279249921396632151205227193219 0.4717359853012552956430492953501882 0.0037263138435373481364465487599886 1.0037332738464508141591399783203291 GT 1 -727356678341177280100708872.5706713147084587831737715539964986 1.1123526445151837565632892557360801 0.0010355228903879496020805646972881 1.0010360594146369488673041012798131 GT 1 -508533998619140671343228985051063.7360278677972522970671050300124861 0.8083204802646679852119559321138503 0.0222861424723140190061327357398902 1.0225382309720136104950191791466091 GT 1 -87228313.3865883221853505453540889410470124 0.1713162370105124652906406666881585 0.0212104770393569366710974899332290 1.0214386514342888850301809230574127 GT 1 -1056078686133628180446576413324.8928531902718908103697170961122217 0.1413329511788205216029320785636397 0.0263380090895998956223448633052683 1.0266910674886203883240996113507020 GT 1 -1329971681729597346722749106851666755344.3536522734669474394086192914977393 3.7701002765345092980888931581023201 0.0516178936654805518463887935830763 1.0529977921825826307890707697662096 LT 1 -2823040545250.2572897420251822783832346244546153 1.1411801536531311919696724335604584 0.0551934169717279257278476642674089 1.0567750464811414796232138482968214 GT 1 -119215344408450516830021199083067527259.2847649647720201353875005191673444 1.0763566943922630395238270198348343 0.0733999860545904461211916332914043 1.0762332909495033117722067637484568 GT 1 -22873784129088036258049914000271265825.8311799798557846293872382286792445 1.3566297179536940385697267434107726 0.0654335544443420549741798724852233 1.0676725518259119559339431753195731 GT 1 -1169528.5233049117800380879960191653305851 0.8730117909966225322161972077358416 0.0658139710358402369357065372316401 1.0680796861060693098653430421193153 GT 1 -866046625965541042864.6976598587601540978302212479570951 0.9315735945624113494543132203743174 0.0858230148995855596610253932641264 1.0897310883079555357787139434704167 GT 1 -1730455187064896.0169413513401086247887776518566974 0.2240839176034210432914360898504890 0.0929701728973726268977254234697988 1.0975799439582912015073312389406330 GT 1 -14624408683606143162.2202705511505625777200527145784393 1.5577796116233900753987301763426664 0.0867965669541060421597355471434742 1.0907966049753785984403687508299405 GT 1 -144.1257947479096833147680184746666341 2.5599138431292220955355449972298766 0.0342056174015343222793794010577965 1.0348043218792773167525993477107211 GT 1 -125284351977428175.4350478997005164890707001591368402 1.0748597952191773720547449911636370 0.0262139047138774685855174145966340 1.0265636141544133547761641375194210 GT 1 -2.4063807560315484138043563856834015 0.5274785255586469314188193787604227 0.0625601588849107047023345388736321 1.0646026926737582427843941187434549 GT 1 -5463869556235643445442130141150.9673354002645163323494940049771134 2.0042586295238414789185424784755849 0.0491905048618434821394601733627168 1.0504415570733538048358041140544232 GT 1 -943439934319401058105377919252833581478021.0833749795675334740461470742798806 2.0867332843468139722867661655460364 0.0504047386290529993715986018170946 1.0517194258308197039577352908281524 GT 1 -19931.1361505146158186189137994265767565 0.8990702480540317467312935437613947 0.0684362274717311197833708774217277 1.0708906290957648704686015264521478 GT 1 -155222402291160860372.9838030594274261691524943643228532 0.6047405523284906290434765249091184 0.0247403940690761901670370379932919 1.0250515809326013093758233396263273 GT 1 -6224095488578679454453551937238549653.3523777973476608261860613812634302 0.2329523927900104053681471984892163 0.0907098738269467452371452574012629 1.0950910650213637623943704652712201 GT 1 -198257646591992535641311.5193676315582563383417983823363536 0.7328924853219624836778703078676981 0.0543982695969401179264479176553976 1.0559338023795031666361526193543087 GT 1 -244401647315586952446992964200346306138202.1928892535796287733177831317849539 0.0897415809480428824924678975361294 0.0956050425022361765302392571022499 1.1004891141160196626814063692657414 GT 1 -102.3192314611339379267607742067801099 0.4092341287610592559132675532325106 0.0477313948702605762096295643862732 1.0489081357415778926425460576592310 GT 1 -1274692730426108547523.7344323279772991173816122399845038 1.1875035225437476695192203925690742 0.0157299312041343741459111071399497 1.0158549594287827487931042619296533 GT 1 -25999803333651780645849030029666429838347790.4808223490805050237673845198051117 0.5091035817567652771826067367664564 0.0403144754981169514013108997098346 1.0411496268297310382407418479297828 GT 1 -5381247.1386576676175193523017462933753121 0.1127102093918856709649460160266792 0.0778028651518310647154477364234296 1.0809962660803645516022126825160748 GT 1 -25666719047521393211711063754158.0843417736372772497608349834197550 0.3192124409451377863194898072520736 0.0072697670540878984850247678811783 1.0072963205808346183688035182057647 GT 1 -1494576805442.0576592204795069216599865841006430 2.1654699255755339588717445120496997 0.0825978377660905379101056897225520 1.0862093399067465270738895797962038 GT 1 -5.7618868694704393889251051558726949 1.9817086018138638894812400224723766 0.0681304352383422026698497300448720 1.0705624260632071631709915566873401 GT 1 -39869243602372865623721203.7958501750782688287985643564732948 2.6939644513537092290194628715973761 0.0706479674509314444647587877010902 1.0759517509549971722887053208529858 LT 2 -395154770313808465928074421587213545.9087718737274549902431366689724457 0.5462894691975932409126446866466291 0.0817778729232148329039846873415473 1.0853159491380709557693517382507745 GT 1 -7896929291620248608259297385416876300979.8095015522126700801547744914785079 0.4757821920731089377369285411705804 0.0419193931800296801784027377904629 1.0428233638202512813319583912880260 GT 1 -57269109103291972515045254443410040705.5495962937578806935765524317026840 1.4270585165395883699161476008787429 0.0996369155638416413330600878078150 1.1049571698613926647731187968693646 GT 1 -344800161847782093835073863.9424312902787362433231349006680117 0.4926664139136735626000525733782336 0.0173370034074144883551676138422076 1.0174890491587956622466902797557995 GT 1 -18.5017888203739291702492908136649022 0.2535626390570235381665345126777241 0.0710500262545548980511720578691137 1.0737003911925714213164397977675882 GT 1 -151684032427330438534.8579066470592888532033328818491775 0.8019053538324004472891585140665402 0.0508394865988477563095371373008606 1.0521773551581910794735835955098212 GT 1 -347486549615829324128526531848017.2118633260831191794910615523377221 0.4127584708113572696116682139600251 0.0048609197770022865512454400570321 1.0048727724731443634590784208848297 GT 1 -24605806009041348931131.8062779052012509577505930975018599 0.9251356797133789964191283646988059 0.0916497203247351318578141011297714 1.0961252042037056810300402438522322 GT 1 -25.2714347281764289765550243578300944 0.2001480120723564467051836632734702 0.0905825800502460004213372727812281 1.0949510823428072496086871775666512 GT 1 -145.0292644190838259293838624556376041 0.2089100188088206978790622361053048 0.0730396737111468722509095178561866 1.0758445122945430581814050926229222 GT 1 -754881549953059572999889376.9117370744376201326774842724038888 0.5166895074673436315619807409225926 0.0431070318766353400544657277428886 1.0440637348252746575534568236491809 GT 1 -62809855597.0565426115803700513832294912850846 0.3135574793849023004718487757303530 0.0310658149767253575069747598547020 1.0315585899106897543246790189541813 GT 1 -425871876461463578898057788500749434.8564764084732687516149556197168561 1.6808774750251402780335983057757192 0.0032344677416629185786667965802224 1.0032397099393137306419241538951329 GT 1 -5435936022835835.1925552049862853859131747326638966 0.6526915515866130182225609594052096 0.0743149832879643361655422120663377 1.0772212569403257425558882115799729 GT 1 -6775456515434826167.4841854258174559317902175927626842 0.0060031095152739141953586646843802 0.0687360645671008678887845195217263 1.0712125451770832622499389301727793 GT 1 -649710206427547152077276754980605631.3665098488581158748943772248969989 0.3862288927625790429768007985148199 0.0916248759380629504892478556310726 1.0960978534696623054886864627824022 GT 1 -25698951914260038474829515917839184.4041356905887798954801216482161667 0.5306604620804509540956876887666308 0.0945366370404400397431341317341658 1.0993084630409303677918260474109863 GT 1 -4.4621639757278629299158351079113919 0.6982380932875389434224161146618106 0.0202672192154737248439603631738620 1.0204754171683215120096026039432299 GT 1 -122814526215083343248717856936711.6953473904286909868372417692418732 1.8362531640327773887899310215254039 0.0921954645184577049999347377688096 1.0967261928480595252103980425925125 GT 1 -3650547169289078727794877938921885.3761970961834698394199730298527228 1.4539075730466284624995554407064130 0.0805675361659333706146685176197021 1.0839986864290932856006249606027912 GT 1 -5340519679108472.5181146079805105170945599138635438 0.4522160041394243973090257825860851 0.0011850629628916137312623149455571 1.0011857657052554508765656121636811 GT 1 -21096825621112177899480868.5903402865876241826656716997859025 0.6431188136417746901119872820110909 0.0338781124157773103097673523067559 1.0344652751059268951626750347893866 GT 1 -39.6571968183105151906606421839312666 4.5483997342404407221739812393703808 0.0362439896662589777292740834697629 1.0369171177206811607171713462964471 LT 1 -12012472777342.3365384506896413186507848827448156 0.5921559990685136068500426482193382 0.0119211623870621652488452093710314 1.0119927892629378733869372004286212 GT 1 -616611128212728158230990648730582723804622.7453570593040537994450364117960162 0.0630346368534215184371478047491818 0.0905825577815709577494438537715688 1.0949510578560597104439505288336126 GT 1 -785457579485379289.5819585841220774810187710479639109 0.0565148826805809817403416438080760 0.0472321288821655152324245809139698 1.0483839819988536996961097365579120 GT 1 -37394265564217139004040927978337760339.2600261601587062677865090969245159 1.6888226795329571792129154391662778 0.0238849944228447069524684386179572 1.0241748659277249944982420547106219 GT 1 -18758312258523920875583347585610775626941101.6775247433375029115203242238943077 0.8905111610141485390528211853008073 0.0471228601561431442575112185632860 1.0482693030051129085207001219617401 GT 1 -181397440410040789480.4649054823024312660983198310964939 0.7202572781250688527942379938627942 0.0752911280614293005297848698730383 1.0782763240479325376836598832602149 GT 1 -2809540344845759095.8713416546412610865351665845631648 1.5367435268636623861258275528960525 0.0845854326633965534095515506829207 1.0883782372595419471126245181937048 GT 1 -16503.7064645725531372521555300078888742 1.1736940906615858812468774662627283 0.0892222549255503691641200236310080 1.0934563795723598987677733966125783 GT 1 -21860739724234590.7544556987901185144228281886909323 0.9791819254715625810684351100022332 0.0631856258750530221984656125498283 1.0652701229596554595532331516927005 GT 1 -48181995810171788817266181682370730132.6530703874409201643672997444773282 1.1458273151119111538775842822552868 0.0486844197025481307194753208357034 1.0499094310025997067336210354295533 GT 1 -45611285149.5427098741468563690434124877307968 2.2135648876465117558045547093737189 0.0016657736434011081373288386026258 1.0016671625869746683125447302073062 GT 1 -20447061439484647578814259991.2280263123574745762552185851968833 1.4743537845222254512358406056916787 0.0707508280740970955122511867410902 1.0733783609260734100188590851091192 GT 1 -5.2773801886112898552004350736093299 3.3182035804107523979248964316499175 0.0314082341621337849660939821077110 1.0319120501457087743964335027062725 GT 1 -5826.7595104368510705821862828957107890 0.1798108729150646079356246307796087 0.0335935581947868889415071701012208 1.0341707860485408206907511906211135 GT 1 -35101998482222960732870990.3947509490701878329919434078435533 0.2650288598344596133766159040735581 0.0347014678868191394569529940571831 1.0353178657822192446896737189606807 GT 1 -3777428635577252979061382328313.1194381443679498919513736140110360 0.7912856067115090312293952126404909 0.0819172392573101905122942972084102 1.0854677391107354996845299763918311 GT 1 -8158985.0434140012187898605083449058488256 0.5576618151428612191750144626170861 0.0726913871486893984255453640425559 1.0754688531232096689121792925407674 GT 1 -51593.1818877083977055430403425411276808 0.2041580061704078172553776184782249 0.0766020728900725971556214893270668 1.0796950137569843330603859940239828 GT 1 -4311251191317700678362.7239500783489225792687279191805750 0.4107702851390875173250431048734480 0.0970039013428424902945831382440653 1.1020370459984520109616122463414411 GT 1 -158799697058624244568477529265933535666.6423722490310264835049630808860375 0.0736613048997156664526661927001439 0.0745784262076092903424009589842117 1.0775058898434496567144581054796894 GT 1 -125607592902.3501106061747369123888963107304452 4.3890036439751805643081469703874192 0.0981140020378229700428452905246202 1.1032671549756982431938152578870230 LT 1 -3515961945236.8998730083228828488435668646350658 1.1281817846998357898618318924422483 0.0671491409089273505670305110573589 1.0695099418329214125804945791202068 GT 1 -401075990142655284.6685331219804948490967587218109663 0.7282729737849807975168724510889384 0.0650933312848757269866438509309034 1.0673085742317703121154436581125790 GT 1 -36414048744183861.5400268898708416230971599698980898 0.1543245968489315008862770102262127 0.0522888444545652505247268375310122 1.0537055113972210383612330836754283 GT 1 -49789376934402624.5153867422663483417173643031302357 0.1046107608349819980659218558177226 0.0000552651399207534321747891921293 1.0000552666670948652488555702027938 GT 1 -15425905965316653859175306019090082161947.5864824696875494808161399102780480 0.5639515494611014892961185857808502 0.0559106082730007029548777285289837 1.0575344226938308641617510622976237 GT 1 -578015832718.2016558659951938508869802510234881 1.4922390089558827221170574683931463 0.0256948378527723830590823650807441 1.0260307162509828024628644426544892 GT 1 -734.1842939145696780901924018043017059 0.5976840418408456394525085985414677 0.0702308929397130099666939298407788 1.0728189956376110659309793350028181 GT 1 -60.2973861240622530688766259114020396 1.1947062317219356887202037095999974 0.0576341024979157303604258553033343 1.0593616536006910597309935330480970 GT 1 -70169190312082465851073783869.6156710991160222304331717472598649 0.1049692523903675291078324490719061 0.0468912017877949551297506150053292 1.0480262179278691681365632187487733 GT 1 -3601618497467531398021562669557401612.2760362165647536405952027236894172 0.1879614953390078033822441684652606 0.0410797988058093266228564913006214 1.0419474179944653891559205343388271 GT 1 -240014501519968871.9214333490613519378616857142183540 3.3906457000805251478544386900162865 0.0625305281151306768157479531040925 1.0645710849905737330332878493453216 LT 1 -105576047436269086686.9138829400790820063459721049338978 0.4049345542912242398748964493486610 0.0318636411846157653189871471416483 1.0323823350815016781025925479660232 GT 1 -1408084268882268254158423.7409090827333143487001450874387405 1.4013048229515312500901306040588357 0.0295222259295243316740629644052922 1.0299667781598130143952729761122601 GT 1 -170638646353045456788951.5528423823239730887063546861752929 5.8449201350373691485264574699111091 0.0241313693582374510862229834879964 1.0244273013806966287630997482841286 LT 1 -2929190124199489.4989477825280479403517134871645140 0.6389079684024523485851739913995087 0.0495748225657658646567115350658081 1.0508458393165730872169700304520959 GT 1 -305426257886395783912576160698972814582.7209979822851115278381184974071741 1.1727497444965052654086025156996346 0.0392378401526589287729248095569152 1.0400283929976152314681014516873125 GT 1 -201648068327682701527038443851956875758.4165579976468272177431702134371836 1.7174205441681774389534392290469053 0.0567196725831152284314930506139573 1.0583917686091182415412032533345916 GT 1 -4374615198445306474464645057514164258.1507574914262999751270541985978084 0.0453818862661059916351688492966618 0.0681698714081095888221548035032013 1.0706047463682583599505126749821036 GT 1 -7535180658506447710272324828184403875.4104360722744942038802852792931887 0.1342661921258234019554183486677473 0.0174641077641955183003526881929885 1.0176184043682666393788688218732663 GT 1 -5189550845799132231308137563946040569944267.2322947427274490665386701877072402 0.2467270898294308219398225430369177 0.0555273845333922278856164395466547 1.0571285861436846554558629125694847 GT 1 -14791551036.4211360699476961306911293360401586 5.7240553726426114216630606797632420 0.0741275635450692880198291078036243 1.0770188114334746504162313744836142 LT 1 -6212306016514181591459755481057221880.3001311477493198822735957838295172 0.3473472461619425945205144560025383 0.0710105644002216807230875824667102 1.0736579120308284035330247371932168 GT 1 -1288606012300310239.4642724425229604397964917550594700 0.0087868032861634086785004507115352 0.0262548513981317023380080081551833 1.0266056639899564524265763500279215 GT 1 -23796.6908769402276986432900625522696011 0.1523838452879957907523608684023794 0.0964831895774396784383653582769020 1.1014605632318950236899538869501928 GT 1 -4371181361952.3303933121187836964219425300592488 0.9806048211657128290656045765341002 0.0680358471014348073894983585177144 1.0704609275914364725789837118311297 GT 1 -593272597646738636060454865629.0611010842751741483975101544695223 1.3138114235334152662972484198444996 0.0387739261674975083530257505153990 1.0395456491534633017184230518420519 GT 1 -9406007034170526535960557.4354637435048068408289715924835028 0.3630801926929465885652818008216334 0.0884888096140309699166865050593265 1.0926514080479744317234522889300964 GT 1 -37196206892183.0881223602370262701358556675635452 0.1378451383108461000102851373831850 0.0672293861473463325420785406854382 1.0695959670418206770746043011091333 GT 1 -9980248460365543967460144858640931218845.4481781210985637374222066290424164 1.5947724407742925913972779182083789 0.0623192483876865358810593982179145 1.0643457380016330936125876415904669 GT 1 -643233320087.0397841506266986652938503401166710 1.2206582283397638661641741376686033 0.0909163335718173227987250761450042 1.0953181467650600625204093962540292 GT 1 -5530354752344855211344029268.1204389311928972081553540852641093 0.2183224420428142836126747614683466 0.0897438747136499859377994690772835 1.0940292627140253051643769252531306 GT 1 -23205305.5058426810445933550472787033042068 1.4784479081212903233026948666967913 0.0875703986741639511763824528898254 1.0916443457336060467005450439916060 GT 1 -182193216934195412281906515229042737.9561900920789968238990864325083596 0.5473202787126874180303701288650625 0.0019676863754121548376961189044725 1.0019696248134910060835498546982041 GT 1 -10137299632882095872.8504066236852828501236870299745514 1.8084015001404813723219823723393936 0.0988574467349775963595765503205763 1.1040918171684087717598348181339036 GT 1 -82570822127373822203749227.7636877111715219474396093702798167 4.3198547961357287716699714298758332 0.0492712898209655439980189815410208 1.0505265250839304726756092979555412 LT 1 -23288152683.9351808531175497145573970031062748 1.1714668228592013293983086267472200 0.0562188972273296885589123703586539 1.0578610223816458415829283447785036 GT 1 -2108892920929229510302.0084535871351480492625466119826148 4.0651094290493731927338428715436599 0.0211842282590931300843549164860555 1.0214118341996436533541087589100661 LT 1 -30130170891732011857077729608733333.5085226208758555940362916042081200 0.0006587193614018526260359055045162 0.0267020168172665079839835921026830 1.0270649916953339216623856251192992 GT 1 -3344244117032834736536015771824296603.1698807891152978338929030252868257 0.5805455891850980482991539284524007 0.0116397366805508894067463796709897 1.0117080087116115199900129671888102 GT 1 -859812321199052.8270514583348895814800704809725299 0.1716596661108650573629647607629248 0.0758593986597128961204442069811342 1.0788910529638254940643926406279255 GT 1 -41777787684.9845624084421365027046623630668775 0.2105699964067007134766542315007269 0.0796430260302465027480004423141061 1.0829936690129611160878864915635804 GT 1 -6327062877.8690904941665489851332372023729465 0.8619694324821642179689866425134260 0.0381648882416795795793757284731655 1.0389122445059735702899519693371613 GT 1 -6242536967058115643162.6891795274161086117283598760726569 0.5945304439675377480978840827531602 0.0472426423332669879031822209877455 1.0483950167004076490172329263816031 GT 1 -5163137829063.7938419538607464969956925458482918 2.2710083509677410110052920161897851 0.0786973935801164885166932006003623 1.0819667338037570813148740387494756 GT 1 -327933716791544105980458282968573048.5517337884750205131241506773989189 2.8292396966654263948831756869465236 0.0446171650315518872788102252473022 1.0456431445175358321779718629136759 GT 1 -3051869.8788683493173329907635771590443759 0.8758437528952873461078277741960964 0.0164464796556439069856946717538103 1.0165832243882370127354324942852591 GT 1 -104.5742686252575263432643659217277589 0.4472832399021899037859367144083131 0.0179297853903858122348536469639672 1.0180924715446732009217160870111631 GT 1 -2991309136124280875329218753413.7677848631093598383668222303493594 0.6332360511070587172302667073983666 0.0069289327820831355774434446618666 1.0069530493025617122216895865655319 GT 1 -25331002060797493292489261477784644665.2849314449431780436850710395520388 0.3364168552910871894802538577950815 0.0448739499905574416963167924649278 1.0459119576725762605255152884374844 GT 1 -62825448305098284494548681825.4712868641296929962142906761370928 0.9967662498945251294991898997843421 0.0831237491343484774237396905348011 1.0867827658151722644949657546719466 GT 1 -3.7526248603490566026355446251260086 3.3072693463467362553599001306770422 0.0275882080388343463403793313248887 1.0279759099568000833981398227436914 GT 1 -219840358401043980683500053005769446.7780996210269906872695714873170384 0.1795366203891850150116268733391963 0.0556762929066871307071706621246007 1.0572862615603771150545714310632384 GT 1 -1008416803501626676841.4416475771795286344982786782184495 0.3468107319213342816624981544549530 0.0949527810342496784399271062173954 1.0997681609905501709193637506149842 GT 1 -569143638913067.5368424047106602104886697877406014 1.7585712057826941793081356602567419 0.0620994753724779226447289573898762 1.0641113861033724575467720930892420 GT 1 -8668150811990185951485.1209514091837050129873269230525787 0.1994416979385525880939722015446410 0.0527155760817426393638969677495373 1.0541558888429682634616097855955063 GT 1 -1792458023.7671841982933660472682126314396255 0.1135684243937148141100889058572823 0.0311279340551297561395421601650573 1.0316227026963664869803754162327065 GT 1 -348386770849988772.4035603326587894460869307635533167 0.2878113339931953352185671396845710 0.0587830258965066514268596775744428 1.0605815877574515588320636456379413 GT 1 -2654211552034773589116979327576980646090233.4921088562415889370047696767679402 0.3875348493236194772192738558471998 0.0321463946801880582369233960209807 1.0326744373163488131530570373884444 GT 1 -253838633524533331403618006261666455114189.8808671360138170265270512895529880 2.5503042117679611598428284603468124 0.0385477699539305049533494379508755 1.0393103979269281083566532256380182 GT 1 -19947549094133382325374650763048.8432027886716759830593749097694826 1.8154504466381229654953076880293046 0.0968472229963289493527830094266674 1.1018635516104556489350097723214255 GT 1 -7213955231844.9085384120112497397999405421353037 3.2383664868523089063688392795910341 0.0173518923421651591634547073796744 1.0175042008919932766443947787393079 GT 1 -32432947689524734650.9405119554645752484189269499273661 1.1384264894445249997990468702782895 0.0216913268658127948959996326641864 1.0219300420421705227428727260458788 GT 1 -3194092585.8363716271324254131157158727000505 0.1608164187160261662693980120860098 0.0306199885908078380914707501692183 1.0310985753324547276288890065267828 GT 1 -821934294255777931977879.3550489211766869720776542273106691 0.9586002104781315492080748620741978 0.0467078289611038320840206647803233 1.0478338420004390771899507155022512 GT 1 -693398362.6950792571852817075303939618582064 1.0415201774638367952802559621188817 0.0831264986246352408360829639055014 1.0867857645779897158234374130475276 GT 1 -37070156691478230378946747377032426345.8890470147827786683416115004826502 0.4308145343687899549225796990378633 0.0502077976282632421424689824304202 1.0515120526589367475496790064992418 GT 1 -44923155057055401.6198156396751393386691693207314245 2.0036438198691149217032087401015986 0.0322575205641470409545628044779529 1.0327892607394341151609604987694225 GT 1 -114770938437323439477317677.9339366871241765674938330450731608 3.1663747462490902650558303111227426 0.0488605947866636974788585832997489 1.0500946391530799274648398574327354 LT 1 -63632693334175828206086154868604365820.8913165871508676558564428996358628 2.3642929076162589070638361390754315 0.0757769886780488544920559851448048 1.0788018822171671013242483472848156 GT 1 -23282419703752277060.5636861240116112756273498247586927 0.4246454652570575415099714777920352 0.0696799895603599236051277107587353 1.0722266547757910861175376233814797 GT 1 -1694080195066.7043278903021883862883042084468153 3.9819115683688351771318579805770468 0.0644693091093250815532831626089084 1.0666413268679405252138272491727199 LT 1 -31645531160214130811792910799172.3444997253972349507078291733871013 0.0200648065900873295347199117543547 0.0014305357167498589963410864207832 1.0014315599098480428554716527618488 GT 1 -54365698054965523065494839.4322922111920184604627550750492227 0.9538223943229935302194105806897513 0.0391684735478838953761338214655310 1.0399561960443261645199649018160668 GT 1 -4789007776033.4773323093502240298506180715553149 0.0010019691338662623147058687287162 0.0238384782344899234518596813097718 1.0241272126493987920080854156495615 GT 1 -1910097543745646886521378019438370379670048.8444068323732918463872584596430093 0.3420519721567696567340592237454702 0.0788598211876892268287279248965217 1.0821430514721215434901425894606001 GT 1 -204773236680080038454560548920338.3579539858299082086520155632908564 0.0297814634669574894380828219404870 0.0009557710706352092191616180120396 1.0009562281110454822290309398825464 GT 1 -6202340707.2120150142736562308289956771105618 4.4831482554507817143342827684990383 0.0754446940070443173598446258999593 1.0784424073450629443070320885363101 LT 1 -4741914482083896029071937.9742890654573595370639985763603786 0.3436726555880563635990907044147169 0.0541527372535067386458969427639409 1.0556741788361754734682602979699868 GT 1 -12728132733282957321755007321284624067188539.3674884657828462338452655738579769 0.0346777577116163457989777697370604 0.0228016557255796453534450611187623 1.0230656339569044344243303437294778 GT 1 -6203828.3156661289583500118504729283573402 0.0150255375229347175760750427352791 0.0140758178891231785509233679899000 1.0141758217469038430073654607499416 GT 1 -49826528344293630721976223812765954229.9157291339861892867398563783959489 0.0354117723556520475799849422515849 0.0586675965088689668437891942518611 1.0604589568303097413070930629280665 GT 1 -356861645.6160564083829567119948383729535838 0.1226917909866316594301254404401875 0.0368752737682930398257923553131866 1.0375723571578094954912814826187266 GT 1 -1087174797626564.7483437245080246006323679680399425 0.3181356584022477166302837659230415 0.0795773897013006479843924665250676 1.0829223553917816892678867228813199 GT 1 -1667039699569979072366249821412003479524975.7695283628041286688194723574140390 1.4379048018967409458689975943536258 0.0416989109137257144039428954856482 1.0425932611556852556744847581819437 GT 1 -46398929145215826456128904.4274945255718803917223446134048742 0.7938699132953147691067522335351828 0.0672361452876708249550526500865983 1.0696032133730339741350123020645020 GT 1 -37618563346278281424740416629.3029922642456236858591921523068625 0.7952033713683724995211472509649257 0.0234955234965285938816390634038935 1.0237759444429653629979387560121229 GT 1 -1114329005500625124506961.5507969461571555239336735692334172 0.4593601927493642300426778364784866 0.0151187262822863846707717261436238 1.0152341793716277429902307974092534 GT 1 -1950611143136264002114912975623983232.0902755145871244523079472305875687 0.0690058466742865289400219251167278 0.0896488113187571645915709457133861 1.0939248322920997256639752140649162 GT 1 -4278197233948538886167813.8191119417570900718981034800619608 0.6985843636306055222318410356970218 0.0561797999455990645424595469442435 1.0578195970216636685439051627728183 GT 1 -370436387640994710430292696.0391967190707093797989587516056323 0.8041399670851474218561607560896445 0.0775276893214062606428594445220230 1.0806979190424893038235747093555407 GT 1 -62041345404326735869425468841133863.3656701259478931946937885498210185 0.6345065927909091117359964639400150 0.0206922608701955912940056709193989 1.0209093455705884013428763815323514 GT 1 -6414688.0409326088478301178804260173671478 0.8233652624463246116906277381837628 0.0217983670050935440970537258089826 1.0220394614907185053913461746033567 GT 1 -3810266548277997437008445621.9624365020265303307688879586291920 0.2271943823046027084673550408055849 0.0144284312910928528987845228611259 1.0145335333022881380971743401222007 GT 1 -2357133.6967216188814714874544860947484701 0.5697673775615910455911427662986137 0.0124405629140264446317297148310503 1.0125185945640221968346576135777873 GT 1 -538419109618556399.0741160178311603382626221744344675 1.9668519660448290390720175113466474 0.0439280455164339387713377561732639 1.0449221025668949829066826329479451 GT 1 -4088714797360462.3743240650738092642553444361991436 0.2640908143175373249984022258540856 0.0986301884821830003326410880657604 1.1038396599478105905980585104774732 GT 1 -81173377351551.1263010483213060689543144678975614 1.0232430097414962177436621118889008 0.0404204962205794157238492103327629 1.0412601073741144743176603107826425 GT 1 -538065440265149.7417505990056783953448718833083993 2.7313676128045655383770107397234999 0.0044000232075312415560832810108482 1.0044097317987960472302897383424940 GT 1 -318763.7176028353343176996123105662845583 0.6690216819961461877074671512651925 0.0158815271286938472650232776702290 1.0160089899178352792444275445265645 GT 1 -45694883.9511525083400932861330597344794518 0.3177893563344022137006714725952633 0.0913838371226634915404600505966709 1.0958325370440459346785198525282103 GT 1 -51009.6872908273546624903987092694798923 2.4167833789267421328986747822975975 0.0727066683030046195565960185671945 1.0754853322974718189713884859577557 GT 1 -1065466523496156077.9037849377903397393713213551897440 0.5148430543658662349376613682447830 0.0437687587870852073457044505306319 1.0447555110660539206138266565351025 GT 1 -550755754158370477017470453.8605920974080975148122755447184643 2.1446711615256418697944617570659878 0.0102467123402691374387952908920545 1.0102995712941839407086870624628289 GT 1 -640.5431324528532965663021975057951750 1.5185726983441030842498392570456968 0.0438413215581071327878489547324334 1.0448313980703839228850915813689626 GT 1 -3384530209703578613.6136964152057054745787592682253326 1.2331995369877498173306319377994691 0.0790201574062075568975616865243637 1.0823171294008776025123986085655161 GT 1 -5099379463289145289312338622583.2000979681096877195558864345531910 0.5336935100350649975977907377369946 0.0671917799420774187071758385960396 1.0695556511842536415623477691821462 GT 1 -2528358586017642173670384607045219.5724366327149430763363843578584691 5.1160545633791810006247064051966688 0.0938549575322372897788613839476625 1.0985558947283375562954027486310790 LT 1 -84047306551228340976649505494127408.6297486512164121342578318518222190 0.0990105707042500834054187391833263 0.0460561339331465001666097257745995 1.0471504498658090801504032770278942 GT 1 -67469000339076539639413658636819798.6357204272194574032028784038566826 0.1588814630272459588826121241805257 0.0089148093508366872023344741613552 1.0089547840187538151208772652673869 GT 1 -18696.3007431641844122378307658329447717 0.6026094172216105097515625370749256 0.0084261795196564322651630784409535 1.0084618804601184211478471052070653 GT 1 -1180002891.4209927280543192492062229349033759 0.3405696229553481008032192420864323 0.0784186209796767541734426782638396 1.0816641943007080210792686119937406 GT 1 -44718808171113472169667075214040.3602992456751614231337088764732941 1.2328508046272246974415552662754531 0.0065135042404998615972597129563628 1.0065348096749957711781723784264738 GT 1 -259537108531215563783613886323.3760314713198736594157811471309301 1.0121893245052493885084152861120445 0.0392985967820796871034900134809977 1.0400916329472129052996973275819251 GT 1 -541353430830403856.8967938165374223195304814783768587 1.0289716716698612582684974333580674 0.0822398394670519776229667092352462 1.0858191855327835406094571629409496 GT 1 -63072583896547349264.8092872485601139027671251682154051 0.0756948046794301264105318020443661 0.0837406394534926858052283488924940 1.0874558096844755082522407162137206 GT 1 -264663773637588.5040104532046724519236361240910317 0.5243146979350708301842234317363773 0.0917790575692919587894621663173042 1.0962676013122819488297376043529777 GT 1 -705063496975261561537127556167862.1490498147617786246275613554090506 0.5482668171805268190466464049528230 0.0137803995723542711270895597944104 1.0138762306911256997858194254472033 GT 1 -187499145404045876678502139360.9376777437533223469850651664327855 1.4441831837377065787720700567145944 0.0783032701306775050619516469341220 1.0815390359227144675785476619612428 GT 1 -6699763219012658752808278209595156.0175035109748998025408806148271132 1.9971412903840753193615937652744056 0.0438939216725053738243507266013853 1.0448864114927934543419683577154445 GT 1 -2357033901062434.2310573790718986452877723433350770 1.1765708922211001713632801547390354 0.0063061141693663856430522651627221 1.0063260816965920426104470646585669 GT 1 -265830968338813295191801256229.5005657480043690315336824564429296 0.0762605850066723675682576863465093 0.0691308814644050482509144281806930 1.0716365931820085680129082266778086 GT 1 -16371323671520318.9742343745824055690335836853529233 1.4118756496138573450033103183370963 0.0893666277156302311500891066320617 1.0936149080769970828838873107734766 GT 1 -87498751968563711110628540243329098.0182666158631793055788108557262485 2.4328666820265142801668188148592322 0.0102455315253319195315092314240646 1.0102983782552240692367239285554440 GT 1 -93391140657291532552.7596908280127352889813793175413087 1.4971530970557262635027206390587367 0.0995229817990172743569582343232774 1.1048306358456190958486028975837507 GT 1 -358718669638430537818.0833395185508377811151228226725098 1.0100293814078702979112388435345207 0.0139537202934918508288805018762484 1.0140519886589834201521490386417191 GT 1 -5.8973504699091545230665738528723009 0.1429082119333202400288678600428444 0.0476487229232371824504728034276767 1.0488213237242849317659400060086962 GT 1 -8545433768995092.1617413010376849053654513039930833 0.2824250115074376603279979527597584 0.0524328819878080175733819663171141 1.0538575075821925471059348959444677 GT 1 -541535351661356094339.3973977821930167989717792861769798 0.5828106240306085223579113429397111 0.0608471028139769220859130750389858 1.0627769832251363660742359959641684 GT 1 -6136868239610919376.5673795341368818395220175505913427 0.4177639588283364749946859409766425 0.0426125257857291359024949710268540 1.0435470852362498866237414068126523 GT 1 -144638847504465103837.4584836176343966187776537759558220 0.4993494125640881496274861936915653 0.0417737886348636401330431711984114 1.0426714001116587894061531858111223 GT 1 -12770948486081251531772917507161958870.0278374093993621755470443076898379 1.5666211020777707181698872321129542 0.0363921126307845460047610285159825 1.0370708229602508370877823778877665 GT 1 -18730502543023112882333.7392779013210708633972406935021261 1.2443404697956788413095181543359407 0.0159274385773282660238683657965632 1.0160556433654354155794434995513394 GT 1 -21921180728121175783134369075797.9863305550770681399396345758213257 2.8913300833215626850144827310755047 0.0649874358891133220448077725130157 1.0671953122319826851705421273126210 LT 1 -14256374796516758192571523931635660696071.2680740825606626502951400747546707 0.8362233402827351259352183002124334 0.0792326453621313224443107609266111 1.0825478754632969853078279383209319 GT 1 -34389.9062469504731865669934996746279463 0.5606512768515315343841160672468336 0.0657440501781974076725264455564843 1.0680048420825787862657735170047062 GT 1 -28.9533821316229070670078955289436156 0.4112283427603409221895429508825451 0.0022590279260010770513452199110231 1.0022615833788712761196362774647078 GT 1 -1183340864762675377383101701162.9265537074766253094397258197536074 2.6865991770107151553352538719412937 0.0965934767771612788650943844368852 1.1015826350407039277936693572272315 LT 1 -841.3540624760447393415152012993765208 0.9355436111180574173094454184277951 0.0375628352617923261636123942990944 1.0382864983401260874337058032427967 GT 1 -194937627528962341109429009783664362917576.9696713769925650829039085982561045 0.1518637794424162360629973864054331 0.0703571029109845565524343827267365 1.0729547481993711619039562731433543 GT 1 -569424085582514.2049057054324724430264603679077725 1.8485375096714621249549374710864782 0.0724080903215131876497014871437164 1.0751633954170545435002336347073378 GT 1 -1980727963172.0818477815093919729017707973633347 0.0034663855352636347707229334533095 0.0915949703104149137556640949707751 1.0960649318994998565156458634338424 GT 1 -1336256842797138386333466775266154897.1758550809839874656644003860870709 4.4835189855103057234629113136697620 0.0832697076662172061987889397352874 1.0869419695797076315691295689468495 LT 1 -18505898055687381667132048085006826017443.3388469928341600691233923384851354 0.4956113150325486427087197404192433 0.0511184900124704069858371752899277 1.0524713459257232603028064211407239 GT 1 -10690646650570.9259244327863402579843467945818409 0.1572591181124027194307455049221905 0.0323310251549719650314502817504152 1.0328652183252980224089571537331255 GT 1 -2596469094799903220247570.2949780187243724449274325268175151 0.2806426596061063253271650293365356 0.0023471873121836050823082800829487 1.0023499462743690324770790051513399 GT 1 -20874588296801584635873876366083.7256299475699030842486610093369672 0.5981810578492644734515991158454518 0.0907867196821907191047995573300085 1.0951755805136256149696738503884371 GT 1 -7279769591462102648971.1233498279115056701548521443187229 2.5572141276988895541571240532680771 0.0913904265820928970116485593669786 1.1004324218659460897175678446589543 LT 2 -4119499692787919166058.3669649504941946107688859836059346 0.0865294910635859934300252921482723 0.0400084651498881428727904411678745 1.0408308124235995404697102150304153 GT 1 -858833125230950187816.5594054882643376401686925030610001 1.8158425554655014067869410736851319 0.0488384223991641880287575373519322 1.0500713280286040175094798066286493 GT 1 -17294331748272888750523544797097478430651.9464712067794180975419667481784781 1.2698114750348583957552910957632563 0.0013528087725004870940965476660891 1.0013537246443808259147563519587294 GT 1 -1219780667118978500.5828276749062435511404329596756108 1.5404971105477192315507323621945894 0.0833879153053855157352185776732535 1.0870709227319537643496713202482696 GT 1 -25362637916535171806584224500463730860158.0499507361958124031482272027590862 0.0235859351587104386871885690461067 0.0971696512260630634149005584270407 1.1022206183278104910711219861872776 GT 1 -3519204197940352129516528975446806.2738228705851226018716613957989970 0.5091717053701177877938194929649124 0.0933891166690059469128381630389536 1.0980419359908637952447345826065374 GT 1 -708930598998797.6076360787706024862751812199932975 0.0976661635888395860722441562987886 0.0601237601806671809177332635466508 1.0620070721526625831414368551378740 GT 1 -8409924095579064858475813701782067151.9927582168754328696995216164876473 3.1651674852648891227019587190144890 0.0327898932151492046888897543123258 1.0333395302067344587056264523455085 GT 1 -93050120084776762.4773134133248905754087302231853644 1.3796230306111350234338370249537869 0.0725161445710035123568988345063508 1.0752798911975988672912639005643468 GT 1 -71709401881343717379006.7884805232318163573895803477128796 0.6752393090956478804836602544703565 0.0470043564807462282067742878283389 1.0481449466718003348994176418132216 GT 1 -1598079655223507415154604383921843.8046628037622052385804962988124469 0.1226244389054206007490112433771498 0.0445719872885212537614715553656431 1.0455958580547298399480820963243442 GT 1 -6721160331498043085396.4978082322738696694151513191113696 0.5365501953001416251059329527719687 0.0430623305795782632540400068890515 1.0440170208724427858368725304129162 GT 1 -26867380495971089682951.2341423404039235190090277784495628 0.1193654209609273677128365195635761 0.0607308115680042487690676215577311 1.0626531652110578282580113926374175 GT 1 -668345899788084873757711343218212974001714.5890562753538307777010529323352731 1.0058492879298883459408571966234469 0.0536457479153380753600941389073449 1.0551383063655880811317382041035110 GT 1 -101.2656593692827544871976874733069422 0.8508275348235142109183362659274236 0.0021466162357643832687123606086747 1.0021489235188884867079439373137952 GT 1 -109859762932760390485055799.1220451527926326338287520303444192 0.4192625889400383003268299729943965 0.0537112029084220917842653993807276 1.0552074741816098090668521920266666 GT 1 -2653850051398638719508.1238332715080027039154896263116267 0.6006654901562375868027309558656931 0.0813609967134431615841327328897831 1.0848620485028645463812933608639529 GT 1 -5389438005984608.2667897241480743526590000170954366 0.0372271024824008388730794848925079 0.0659618841296805053818013489264654 1.0682380323029732490394165236795739 GT 1 -118338.2513135583934594477955528713202770 0.2715336065538399892302876435946566 0.0689007115225007520405168200694593 1.0713893602620408891520282386127309 GT 1 -1663227022412.2204436738858055975932942392301523 0.9512645360201387906331075490631058 0.0307241723339756685771197242275902 1.0312060557229069319217806829082327 GT 1 -468757899.2711418108791751165784800041862812 2.3067663871392385812997983271857653 0.0385228669745224041391167982581569 1.0392844968409207525528068319171669 GT 1 -18.5536509356517952079492557964896796 0.4037376745126433616557852483255914 0.0607891742147512608390920340208757 1.0627153033720433849557666220667470 GT 1 -243055835505743101626479638752.0357556264686008133626309107818042 2.3411487148940888772675474333097325 0.0843292254153920772733020212772082 1.0880983953059084189301266521925849 GT 1 -1326.2252251137539311692047953033360371 0.0673619471504423850392688193222236 0.0173669745443484875696980486225948 1.0175195495379752696595919727820919 GT 1 -53745517599972150757007667289110.6087771236935061924482079192296018 0.8495820935211929872001591236298413 0.0412678549893842228948389527239937 1.0421435496703136364305573951852402 GT 1 -142595085023.2079747678112128692436806504936245 1.7315236598212489467846376499160895 0.0526153319734046578420043775765111 1.0540500718336997791367997903053562 GT 1 -8248.4675850357475681493299468388044848 0.2333047479330896877032229032373742 0.0764242933941628728088495143608918 1.0795025047864029790662128973270279 GT 1 -409661.8541196060368891783690721983641619 1.1139717413713069223196625758491888 0.0589536076645659758983586410364489 1.0607628395116617559334742006216931 GT 1 -305129859077.4284280328448644066370483210645963 0.4183299740282206831716620814991782 0.0956730664783737797761133019390407 1.1005643318446350185625248802149903 GT 1 -1443751292125943268.8154152465777997383434053440408659 0.0690164282789388503353382612492531 0.0111594951302462387196481169408903 1.0112222294549217867999211298070644 GT 1 -299.4184955112959497757513811927358689 0.5244075195740044974788617263170236 0.0520159751540709514042993904290235 1.0534176282974470468540722890090152 GT 1 -6864294551227309206627172218735.6955459774446843607980761892583759 1.9266352185482847321585329782411920 0.0539148993475374872710220804972095 1.0554227555698649941871933849816308 GT 1 -87832200642234859.8491915008483800108842072203835221 1.3495163414181717824775701860795906 0.0554497267549195419804970298064122 1.0570463660933289961508111879695159 GT 1 -129790918412771433.6098665297526226529881503115679055 0.2090738756329279668320186873399241 0.0589559886056607417801851618308845 1.0607653696144560200103131868981255 GT 1 -100211867985774385811241946180.4201250445247566152319819183672342 1.4046688867929290960444594706780522 0.0691111204254730539769038272694118 1.0716153648172556883331074406242321 GT 1 -300903549959227039118.1043791100501581276220613524513123 3.0800922957260365281107639841774396 0.0421590217317748597653590654755780 1.0430735082466826549348606155140151 GT 1 -65801312358294440077950671624001855840735.3798889060598684915625251277670236 1.4658734377162116495346500234271853 0.0515627017808256382856865108992582 1.0529395980450300622170266602086109 GT 1 -1540400378605781449864677446909837.3238666643987061196884092124203075 4.2395661701999203149250264685715619 0.0142333772392747824585161669756724 1.0144383986417762348892773824397561 GT 2 -46560.6211565297420811744983814579842628 0.1505305757261529229140171924467321 0.0943302232455603571590147167130223 1.0990805241983933880924262340770097 GT 1 -126374522154171508607029718509609674066317.4155133537422458380971005039770096 0.5864346209160269381745156763853423 0.0628189619242157443043285164003575 1.0648788050800821973984744179420143 GT 1 -711024426769261010793364764054602.3352799609678626205723449261722613 0.2735193261338033840532024939346145 0.0806379799553724669595712165981467 1.0840753059644368618699761035619995 GT 1 -25.4901608591268782198371128897866522 0.7832060811525111628778029181814178 0.0765084570198664233715559909656524 1.0795936369590736438849839173543329 GT 1 -235800155435724831026319236972.4665811087669020832398320710803813 0.1531540476416669391125802773404208 0.0461265406839223997369070156751742 1.0472242585579423595127641303621033 GT 1 -304287671388275208423611.6351491654066708973556593735331984 1.9030616130425670921169803625254234 0.0451429867788270424970230458547176 1.0461936740869552077651970005922597 GT 1 -2124127287098328.4300024306022547576262894142696881 0.9441061228804713681687379954622631 0.0329536324971405755143845995377448 1.0335088348305618517365359324853773 GT 1 -71.4806154070082467845908734170495491 0.2280104972787091161947027358500611 0.0833824271050479110508674360517136 1.0870649352657190785388241328979084 GT 1 -99982182683809.8213912210390545721469729262514997 1.4614905836569829102164387256541399 0.0641252269210130730427098776406244 1.0662736009006779995754205052600314 GT 1 -731081853216676759307.5489586027694626350470907323240612 0.5990043265604417592340574992151813 0.0407959640847571160238827778346842 1.0416514676929858367519044566048039 GT 1 -10592861327.7851942252766931608935741582429388 1.0363211310991510987734514189983105 0.0122800292049847995629291639954658 1.0123560517776654009762764991399322 GT 1 -1634771026860646614600926.3179844014719670877026435506382532 0.3946200951758051976657110398824611 0.0718309852717764409002717908825478 1.0745414348393201580672126132083559 GT 1 -295.7233773503686202346226309381365575 1.2401100234524203721357848449962345 0.0824529698167880785828490892712390 1.0860514413118403474709332534055108 GT 1 -288257918073703400.1615150725870645354561323174387566 3.3607062867144659279200176209561246 0.0421232641629261199237547942630060 1.0430361775182672815278248920382107 LT 1 -77256159493431273241791679510113288526456.8231206817232933685189128974708447 0.3799467792675198737450628778715947 0.0962877050759753930844640560023369 1.1012442270721371193765928066591018 GT 1 -131364813721482372854.5425118076366015956168169029502372 1.9311677325837937651340363978288131 0.0542326816930712002220819199912838 1.0557587039190467824156899382870920 GT 1 -153373268277406305395674560534834.7266724895197051500537845084960146 0.7801313694290581429268192356497022 0.0526828974919378566307005830827771 1.0541213923123234653669630941068356 GT 1 -793309669021841253061619882072653.3592958332911766711177534358208472 1.6721887228180389318054312305527781 0.0386309261735458641295978951081250 1.0393968918923316813406625200101187 GT 1 -3332.1482918053153330226006329547989845 1.2553087906194018517464263752803826 0.0098251666444499198230840475082026 1.0098737520962903526490290085475594 GT 1 -117596440938975369001617946075909.8477226530470832066804085577130197 0.7595204694384755058010629475008634 0.0597278943197588195509247981937211 1.0615859714797229228239775777447974 GT 1 -58.9762759734877074262939269691071437 0.6755801064534767929577689552609826 0.0668056573002033421568481130869801 1.0691418011123497409102287773159500 GT 1 -1199942.9046097521675147807028055423467655 0.4720058059028823858292632845672461 0.0942558123246366280446804934822774 1.0989983663676304925797624599560276 GT 1 -851440301790005524680686776234456108030.7173294969929252451114244469492135 0.0696252113341592387506498830656703 0.0106644619304911299785437581832762 1.0107217348585428200545124516312212 GT 1 -25255011874001798.5047552883855306093155965922145172 0.7129865531296641360360209345568179 0.0411220933785690184256660442934488 1.0419915254243290282912046374970007 GT 1 -12814457135236328836585738457020241030155.7063161727623799271769386103678071 1.7632469176197508367215497570361437 0.0684560781534576457782515760737365 1.0709119383113160823808817649187662 GT 1 -692144331786.8669658205768641188630485170758294 2.8470634323619148358654256627850324 0.0790083064724291433832670120444112 1.0823042617386513647197345742065353 LT 1 -9230145.7260806839860543714735183146674865 0.0432360870433664427269827255080867 0.0016223558487289688880779146789793 1.0016236732930807637594203622312485 GT 1 -30773415617.6235513144602886442804898114899184 1.7988544768951235989788133346096290 0.0088213855782488579227880507714653 1.0088605243420972474764793794121566 GT 1 -360894669946169321795421.0858586705025464056741956289212501 0.0983551908133321237595269497752475 0.0449503290690865691899675014347780 1.0459919284079725126828210253885221 GT 1 -9.2757256878853322590035221641386177 1.2480850080864263182986241335474547 0.0587919316545083405013317053964110 1.0605910497628976501821554964697398 GT 1 -495900234952767546326227487871183534903082.3884000072726866481712966555338954 0.5670074420465577733020803638609118 0.0127631941492929540266963656919673 1.0128453434519552662231343209205515 GT 1 -1898466660063421790702582506424467.0769286717512053271621039250671341 1.9248997851367683407569494143984145 0.0469458418442575666278815353661433 1.0480835478180499002336965810705736 GT 1 -287090050.2441869709365752318284690402477311 0.5924865853214006932891739073376854 0.0628316548566187319638358891808866 1.0648923489076277127129972974265942 GT 1 -3731420522779.3621287003371576087767435754115502 0.0364403260094592708446349380480872 0.0369353864781895666946846403618498 1.0376347733582062172634327080066969 GT 1 -2059571183037098.6653952023545471100757766973254397 1.7741078198537163087408075332074707 0.0733090552045963133625891152077667 1.0761351618892624082472205575410270 GT 1 -23318925188193625166.0860932742553874997672270659308138 0.3352371218484174018135757275641328 0.0576239379768436882474473633621197 1.0593508674864213895604400537493000 GT 1 -246437787751539040994411268.2249883283965738106136943778615689 0.6862721416692410898583303015665958 0.0161516077459665108919585425780000 1.0162834667129017066832604604095353 GT 1 -3234024.4553147913924818519553640185320773 1.0958792085077935091562205318701251 0.0795157242337359200171694063100475 1.0828553607294719561139960120426692 GT 1 -21313303755379757570328254105537259218.5372642464664978733995842257462601 0.5709597143516593965694880241506952 0.0205846860815896663792440876386850 1.0207995038157301290982229878348900 GT 1 -122038423333636288530.0389619738464079301433602399682164 0.8363275880245117512394247255849486 0.0578637654528949904912488159021649 1.0596053922011526270243848357932003 GT 1 -14587700257712873.4603329496466214520486790213790463 0.2509132671547741060809740880791475 0.0348830310109885114140816399327339 1.0355059736010811259107496538225534 GT 1 -952002939472985.9249693350473074718465692336908492 2.1251588961500162646761084341559056 0.0260134057342899213987994553427335 1.0263577390218876467897339712062808 GT 1 -194754007108132589495964.8908520197191767386166869052171301 1.2642034191549490159849982152914360 0.0742605631645892754444377804810723 1.0771624696392436367472749817783805 GT 1 -804026121425171191102871267.0856872097330044347412292859862670 0.4961144436551125747829950550566318 0.0059382818839164280654117773169806 1.0059559835930644256390589189759069 GT 1 -16103823848605335009633258.0170220465012574679832218571360414 0.2719144788202560071591608060126759 0.0397516822388056652821920660523623 1.0405633636335289689324131780237222 GT 1 -1439084758191175314737566514518651442610.0917288422799014045490684576326930 0.2086751402860928607037927973324940 0.0851787685204075903985071791989052 1.0890266082270212148359040790432664 GT 1 -12943586352244965637167.3224175034270371500881554232024869 0.2765778791310579397708006799880982 0.0381252332179352455757657468722181 1.0388710168508138025185164765194865 GT 1 -18233997440371122728051291289849.4461083252984388943895797793837017 1.0724629079376352414274247298545648 0.0440469492445028347997101689925957 1.0450464772250677265103157907581978 GT 1 -266533.8745706292761660117083191516700407 0.8064631937928518082052556966629282 0.0969147556436080834338134832977432 1.1019383287400609169591465565907258 GT 1 -84214474536448105108.8196966641402209584632815350043189 0.4617245844404221526111917659107909 0.0567940611640096356692026368096595 1.0584706333029818454511325800508739 GT 1 -232762032802910833290798203183907177.7429401972612489143039763516066634 2.7327318049634266789011486883605797 0.0214330322281895565580639277136191 1.0216660552729308816054603583682943 GT 1 -288807968695942633700.4294038141301057181258628042331920 0.3735079497933744228662389328828466 0.0312078235761834317357255937120010 1.0317051623086688568497275825613372 GT 1 -373333410819240381523747.4246494694787230461636042378666945 0.6340703266970041976656322389720210 0.0911346393444808323254108424288119 1.0955583138659639160709754535860467 GT 1 -216.7703222264926103055913175153530944 1.4054752212084146775670470863577800 0.0651731943564282647744291389545952 1.0673940014573041535068282118769453 GT 1 -10878026150183770983966646312347.9146260478101560588185896261767101 0.5989309734039344484616102528261962 0.0815160869484217908344414426901235 1.0850308888498743100105073579932755 GT 1 -640822400884.9847386577247880434702173029328606 1.1983174609257605477174644780074276 0.0758558994898387672229218139916786 1.0788872665667724536837265108985633 GT 1 -252954006376353787714473269775692096.1652243904065331439283948850648612 0.7211534088739617439242376886101714 0.0624957553309720397846032762658139 1.0645339935008577766831364940361263 GT 1 -3193315890737195347839145778408391132.6279969590333588817620229948711235 0.6969839724044154710955660502679692 0.0423598468445242617369089562359961 1.0432831945862562177532489980954550 GT 1 -220118170714419975.1018810686965851508804032290652067 0.0625128672082901026597473071608796 0.0363880096105530376378259060625928 1.0370665649923055434373170996243677 GT 1 -178026318644396297083585742571600.9174553503674556954409085302106899 0.8695702406359111002305872125389695 0.0353393626218041124558991210146695 1.0359789106046151865281195713919911 GT 1 -8184.0244751366419351503287725647877601 0.1471756826709863316247711908950796 0.0051580547349522531310270452343403 1.0051714034212312305414539220435831 GT 1 -23785514743555404028960.7646929631894385893359301251627790 1.0710018362218342563507636980328060 0.0692362778003096867490111060721146 1.0717498231742079082447819652929538 GT 1 -830.8861384249115590862208545195403234 0.4660920268017341571440279901263377 0.0859889983736756796047753490037015 1.0899126708101394315633738406862015 GT 1 -163024475770455380834.2043465659678731374017017321321606 0.0021477749138855365916244991156043 0.0801891717338055280387312095123800 1.0835872515318283334032430225044948 GT 1 -167619268834301023999476697089793264.7412716422526706747170646756145840 0.2674076125537678002067772863658512 0.0513526994362784480935871949895587 1.0527182032315992809605276399067655 GT 1 -260796068621241164078.6017737842975004720310738888820846 0.2941613582288307202317412338090843 0.0780887201367440827181658886367787 1.0813062858003789665399878235623598 GT 1 -80735366324617453115.1571460538804557046451104517951029 0.4014006259521911604211979488748934 0.0627284005775652651883578806687303 1.0647821781022548872934793483123009 GT 1 -6950417747877028182754.0888887165136611615894275547441628 1.3831878662600001614745049281364540 0.0385821433657950093229845123281307 1.0393461501205955541913079245313964 GT 1 -1073025716772465028781329300.3652936278767726229608272686568247 2.2986078936243654231804057962217786 0.0726119595251141200561590349763351 1.0753832028650055684094805195996035 GT 1 -77778014480410053874992768678706455.4755926686151259494792526532683081 2.3083118327003662186092619293561990 0.0074135629734010210955965627936322 1.0074411800098007467815452297248739 GT 1 -2301129106196351325490.2916277118801646841014311965107739 1.9091391073428350202257315712002088 0.0955719166631099931544385875792306 1.1004524871620478675764081425294529 GT 1 -684566425002326105635793870886425099.2744682922972793234432984898172114 0.0053416577801002749869955977703509 0.0684752817487965703051986168804816 1.0709325533277747321330983865260273 GT 1 -405519769578227815007848802589840686.1338290926196725535972794271695257 0.3998120729486709601615347855343668 0.0054720775564757484540503480205547 1.0054871042159691549047949759900214 GT 1 -204260904761281871241685.2110354971246636877082773704425232 1.5200466568194837094595351414459578 0.0399166075831332734211676280603061 1.0407351311920804166119795184687782 GT 1 -388217982274037766122834478417719.5346182939161741580243840334548071 0.5230265542346964612824869023467681 0.0718789145470520016667440640365245 1.0745930746937605108026595231767642 GT 1 -43413515027840.8965871209848867201979180282243768 2.7394393243942466344129167718531505 0.0252647307558031535758998118277888 1.0255893635760729580071515223242554 GT 1 -301817144882934707874408042446455449725388.7767888300668139389764801161348905 0.0443357544147754263117382948314265 0.0846085202997838145498417859590827 1.0884034585400001940186345608646396 GT 1 -290163550072443.8980386989709493812701936945809138 1.5770190082268072691145476485194763 0.0591855637813265055267215860266340 1.0610093573353133946658227142874456 GT 1 -126247160786533.8406982712103233348681015856458689 1.9067941612680891115576933068675282 0.0448611186082934470595215760631439 1.0458985235336217480740148957973566 GT 1 -68096151310.5949972897773655832756768996379950 0.3463739216284612679852476770381728 0.0863559643902877795003150401358890 1.0903142411437823006794578370171761 GT 1 -3274671310022970236414484994.3651335360736386967745932085164238 1.2132312068598125163341581903833608 0.0724047886284756489533531277705385 1.0751598359992469495492585709203859 GT 1 -1309975554063708.1268804680138519537019369936014425 0.9464440566446751811192029496460057 0.0653813119689679681448324505123812 1.0676166531624259645009400462384276 GT 1 -104699960983370863644089304322862819518.7135985613601657101689728172142882 0.0238972888394080843268018537437521 0.0698063426595480502281904494933719 1.0723624808130522276676364592034253 GT 1 -635171014546666213826426121775559.9352684131694931856653220506030048 0.9419365200613321160512732519126983 0.0002429042353912391702638535976226 1.0002429337414032115873248375805553 GT 1 -592497897880384416248130468028353402415637.7418151363359215036584396986338507 1.7094042463434772725107054185115119 0.0078369327542939386227968991454209 1.0078678029024156027251736795074404 GT 1 -447867258729301424.3773879988511420534195683436477897 0.5301743316524608465513683007854488 0.0357848051401245614352643948455314 1.0364407781015210342645567231164095 GT 1 -5.0963740805151163232848103667777419 3.0617476435378309368016541841023917 0.0845510559570731053387227099787225 1.0883406848083473897472343309977642 LT 1 -304141852560128979796397748298.2988714145014979286204462844212945 2.1012951742090898914960202163210795 0.0874843868954115407896187396645206 1.0915500834202653775195654376851805 GT 1 -2491836432143.4841824205190501104459363562572120 0.4636455495080470807747236800801332 0.0779301170554334287221748410714935 1.0811342633471124035609120008822455 GT 1 -597700166264.3172104466216026975736839238919709 1.6050403887472472893140698779386486 0.0269071986551427351826690444057581 1.0272758248335375277294034185114983 GT 1 -17243194157117493315384896498117012279584398.6193706395663736462907049102078313 1.5373432598425289807378840060104093 0.0137540968656500379215209134298892 1.0138495608135959855622344231996673 GT 1 -11869415344403766262547174373128533.9191768329304086106744875840854859 0.3661104832279389895461816958218790 0.0323268989111514505702175394033962 1.0328609542276257495185154362763453 GT 1 -1606941603049767.7263512518878775043155308798010300 0.5887286897965647876371428087143135 0.0848442911154674358887912326024194 1.0886610545402099793573211990814113 GT 1 -11185303801.2712022518426784394375300002909690 0.6523147056085681955027396134988386 0.0400154507620574404919866799102737 1.0408380891935835233203488190702929 GT 1 -3320744014628943596128877319183942.8133082576333916810039348998625953 0.2557735969082285949925876823623289 0.0851696530198536275907409338661085 1.0890166440342083821794010513446010 GT 1 -38351.6214459291782959300538168790739968 2.0625307285489984912644947803989324 0.0301849041499828178678173605816040 1.0306498484905842185505864519426744 GT 1 -128.2191776453769844266525280437064122 0.2772705298352995014195326499937715 0.0610908278188014566899844242922740 1.0630365326938872932644574512529356 GT 1 -2941670261187076364607733182542429.8852152765966004702629785470130103 3.0995559611872011071547266053807355 0.0532924353279176218775884067516169 1.0547650353097827810191552053405477 LT 1 -455434250553.0349143828067011673228496793492231 0.1056667275628569971748621648179693 0.0428766643966101581228589618685847 1.0438230185046362063046458192452566 GT 1 -465937110940.7927416672842271428896112963643799 0.3549176243221371002861957258862753 0.0315465501936174191240130145970822 1.0320548615066430742533317865320584 GT 1 -51150925623089928.5151691797824812863458436956220116 0.0224162926069801565334287429276943 0.0236570943118426633203103837972436 1.0239414164784722103770594889856459 GT 1 -47887026340187450848260417721006376633.6482361116269161118490149667080477 0.2184362668543735187964606332028352 0.0829317397235007129617557494014664 1.0865733708085264431226520474468892 GT 1 -714445059482418506216788850669079.7181408332874888187425422147322096 1.3814071680563505740597593879859082 0.0822648573129731316156226829618932 1.0858464455817510480801403899926543 GT 1 -424803383680923541001055783.1938236557672717092946181807261316 0.5585314163195453295642352892948873 0.0159006465654784526812174279902946 1.0160284180893818120942613762366297 GT 1 -639059411513169118518979173112413419.5161437628590281219576131692465800 0.5217240697228090762302588099880649 0.0570726888295942906521169696824901 1.0587660818537250027858169755661481 GT 1 -276321041408075655546820245391609.6189300732471736430330347543713567 2.0473871122072091791856700974687278 0.0418363298636963470658591457625604 1.0427366699499715553728844468232351 GT 1 -1382535446690740726611834959.7828584266457165446829722932870864 0.5496475923052029110775972817674355 0.0836904150336148371280786207910792 1.0874009965545101667209424557655201 GT 1 -366697031774451004468.2289246896690404180776587814560971 1.4127444083753327036199294828836126 0.0657296550338469156784775763826467 1.0679894340635523155915357851619775 GT 1 -45206701695663169114398601.7875301799099062740764378091269676 0.5294903962782069627627888535161953 0.0894125857436284130072815856784461 1.0936653775514809872483084836813484 GT 1 -8463918844.2889094819152421540489832868238379 0.2690016866458458088338670811069895 0.0262522972417001619714050867475051 1.0266030409698721856659904229101198 GT 1 -1589589832959612610140368401172.2947008805959019582924072181971337 3.0649622796684273537205298583672488 0.0757847693574745892747303978761079 1.0788103008694640929878024602366299 LT 1 -2384970.0128763593774773145938682000102159 0.1178959940990331881002337357101100 0.0116540136493195471431869475871045 1.0117224539219418748598183376216986 GT 1 -3238261581766664.7649450244682781295205666333372601 0.0972189289315424082209328895188703 0.0815315805044280521224090606860022 1.0850477576120431628630398245913802 GT 1 -8158218788474805696033353095663997151838777.9482018916010237604128533203857157 0.2665604127226140876555673259420440 0.0955376680273542229656339636714620 1.1004146201520067954666007578582257 GT 1 -153728.3768923411449117070667589237714420 0.9119197529113858624618050151654627 0.0912145770947616169234644149687430 1.0956462710809089384414345129471908 GT 1 -82018823082276517573520.5378659877645195910416215927420827 0.4981424703665894441095081695727480 0.0233540781572807158622513198508106 1.0236311062987907859459000393508806 GT 1 -8802988035298.2262316037978530821258080198632889 1.6415330042658058809002421301174891 0.0826463431520792619833088524867396 1.0862622138483310786972551725460409 GT 1 -2309894017272335345454592491972320335128424.0558782467682509378991918582351791 0.2250126527155061668113915773926457 0.0803725507010352088535803812827677 1.0837866373661602491332787346906391 GT 1 -20432688571981.8426376037749382829609637095287026 1.3679090828650595791556283152276646 0.0538534941836760657467517330055937 1.0553578531935670224587510376059934 GT 1 -2337721633646641242987518802910774636.9163060042895526117239387735940995 1.7123018345864265931579607744745519 0.0071441905526104338701515584827756 1.0071698324821435841602052684547237 GT 1 -461083.8851799778476879744246004126750408 0.3484480267956057022692436895285913 0.0525602367199263027365587969717420 1.0539919184210842490285103149987871 GT 1 -201849871439559634871289935975670.4317647848992675945039623892823607 1.7927976020458018421801274024156645 0.0092183073783062579447161776430023 1.0092610589077525473759459510301263 GT 1 -280906963806773748596047076872022462.2493478623567867271126071908644683 0.4419641802172635749488044415762637 0.0913438871072233941664386302690911 1.0957885700326308695406347452269738 GT 1 -97.1936700160699742449549694724380729 0.4974398910011716728611857917175661 0.0328942363499000369930876039127320 1.0334474165519243762715358195880142 GT 1 -21964908210528535659111.2020842621182055904007054734930629 1.2117745316444865302308786081274884 0.0533756372926633968005584425557958 1.0548529247744837686105584196060331 GT 1 -358632027427741157816941383680543936777960.7866862655279397665062552235045522 0.8973462970900606870485554329776513 0.0411649551419540981050942423067988 1.0420362263409694981704739344612208 GT 1 -47208144797002139825148330001.8374125721644679393931578282336074 0.5109368481835493403378884928203400 0.0495659349839964253740576032428102 1.0508364881962260090059565769979098 GT 1 -30401256874642.4505857416006290547087712476977395 0.8463668894175676673956265550859308 0.0646992754052032186100744152615711 1.0668871708228077371492001431454249 GT 1 -4587556928150702430259782149162334907987472.8765490643310172753581358142718101 0.7933346563289344310350575761727214 0.0877186021467142343033839191034849 1.0918067862219275848022742373925248 GT 1 -232149964675223277177780.9779959119998237289326546854601548 1.5251723163216090722610487777560120 0.0439542922916858542178880785174932 1.0449495556632943717950265511356855 GT 1 -6554643130395437512712417661652548896933974.7966355349452651187212621485667671 0.2977698159252363524181817816043103 0.0704199200695275298919672097316564 1.0730223217603085145073461182533782 GT 1 -187005359210625117995.1075766323591701073161424591453077 0.8146018684472708456864190455181092 0.0432544815004994005084485242742245 1.0442178387745697812045092047703359 GT 1 -411113334596312.3733660269250159284325092646879099 0.7834837609911951126993393738948824 0.0613030373608184805830697010144694 1.0632625753542569563088909289272722 GT 1 -33.2100915815588271823752533462818011 0.4824417606262952835902722209135374 0.0557793331971578776296512518827311 1.0573953829471946414323942668600120 GT 1 -121899576795157430154052094041633366.9992362893351337176283174220384553 1.0421226838744166858812462106859337 0.0625091752720110665813097837853319 1.0645483081422755503263419283133649 GT 1 -1328324201852580248845349470462645069.5888703894002391583474609759830420 2.3520296458897679142196977746939949 0.0826575967741057752475886569940498 1.0862744814083608327614518146587954 GT 1 -523143089247349373427205568276.4140620479796887769646006519968512 0.3893571581954657317642273682904881 0.0362235259180181866113623107306206 1.0368958846173150579584684014704462 GT 1 -6206235380999904832025736884.2637677061635528893013403612655474 0.1434779797979048872099198474989082 0.0407719325083206229894705539751547 1.0416264143419758399767205918009517 GT 1 -62150028419.2243302122868491715700479363971471 0.8751692488929625791429146981967586 0.0926239540848669254110476123964707 1.0971983106954623959542918797075904 GT 1 -5966533384830843.9131716672190593866601216872850021 1.0362539775008063196780916478555231 0.0860092140575516227328881435002451 1.0899347886045685649633591629190934 GT 1 -5.0162707239219456351375360172005369 2.7515799231275798234452804212540556 0.0792960423074408837147903865042825 1.0826167301284879165190965895853872 LT 1 -226452385717627684824089237504683174.6562069240320246058946931496184001 0.4008057974976237701029665811284950 0.0607701015206314517540511579518064 1.0626949964292965690373045175452614 GT 1 -11927248840051451863769493170014227656267.5001696699748038144452661528802085 0.1173052717600485392741622920036990 0.0199249784200042301002759597656995 1.0201261576148739543181247051234641 GT 1 -237538766362905785349858371.4207521943868250322381459941132245 0.3917973330533372665961324968331136 0.0702219817624865164434803214582826 1.0728094113930330914520449414995210 GT 1 -335614308769.8626846938208174647042620742070433 0.7805111042785052650558511197027069 0.0110357091569219290311760991674284 1.0110970543377876139519038477713297 GT 1 -183049.7837770603855505475556885601407559 0.5484875799911563631018888585444241 0.0987626746485810213923727207692085 1.1039866538922223247539308152582881 GT 1 -2207719053.2460197915870458377046096072575389 0.8543051949556919207227357005072159 0.0578067954560331086815021373973563 1.0595449250708330793917799226624832 GT 1 -1929260519008139378544127852021936684.7537369833406353498036987354720735 0.3988371102412073740424098507245638 0.0783173347865169254521187704884159 1.0815542955658212643963955479284243 GT 1 -39771108273543917212.8738186306650249597459971940549867 1.3796987847117051402386236036060581 0.0438825264526110315959692526854728 1.0448744932002033391228709530591256 GT 1 -26588731947035556160283037844439328030253.3572887716234239207938622013887902 2.2927621873346368484447925444616381 0.0059436747504169474480117250343566 1.0059614086899479115668870820334900 GT 1 -6963886813687289080537.6638674528501417291657446486397228 0.7789077350955273434994274064849635 0.0016825902354264041418774945048024 1.0016840073802490350584204683393373 GT 1 -114.8441273585686334413022880705311463 0.8835321495376774594457053719803163 0.0837084516463386408888575757987400 1.0874206807207986705031636144068297 GT 1 -2614074290199998.7969473626131190679139459076528151 0.1199635285929546271100141353376376 0.0616128249036815492143496830392670 1.0635926485134168462475536084370954 GT 1 -44640295091315707473172568465043816436.2897846454160779407784341874759467 0.0816366833582274418666079351373706 0.0385764800334802009638174217090673 1.0393402595334844773550661583922339 GT 1 -59819660039114956168216223167724872.9139422475279200350343325178283654 1.6627891823199496463850299844302362 0.0826421664714036386376277690876599 1.0862576608919697780682055496009305 GT 1 -502308804025.1779246978563370903301028021925852 2.7141142597766395139914581730146157 0.0395240603357266495554407951315752 1.0403263468902201598621387996200441 GT 1 -47961287312021508498170649762.2287864014801852335751196379150630 0.2825014834778448271283458730653062 0.0697355215718822735873566041344398 1.0722863478581220401903582793974690 GT 1 -508489212547956860647950.2313527472894439619177539515688452 5.9880922454492403286681063526566787 0.0687827705888686462983523568986079 1.0712626998016337665257969996773885 LT 1 -25987525.6086186294974872572225558115344819 1.6191067971806065470221980627888260 0.0006044305963641678587420993620244 1.0006046133381772840275466664031975 GT 1 -518313639356446523585336946547095.7335937072663094279852863068034221 0.7199175289543842132001365201713581 0.0613322309406839736353766459409651 1.0632936759490161153639739650826507 GT 1 -2508777025648139069809100746810046273.8952895068832927515050758332677021 0.0662460167049611369027509587540478 0.0782120416668607768067182179251776 1.0814400619909264530177439199114853 GT 1 -4224392.5748524037557206559327793669009645 1.7179027098186233468213572001791308 0.0662800791052041708842296153426836 1.0685787562857789803682736447728646 GT 1 -11352.9273361026299538053127839026557064 3.0421752004153801303116975681523011 0.0710091844712346735766199934186905 1.0736564266232346799436119284564810 LT 1 -3089298179906653175649430315752053611458307.7229813859283692592912882942539616 0.1055187802620628041342379163622223 0.0046455819305578624543748808914748 1.0046564061826046266327504357515530 GT 1 -24680663286892259774944543686335785.5302908602722660250607820604794557 2.3377862434561402434308758167172187 0.0118251460345028425277165094935947 1.0118956191951029250844079341845491 GT 1 -26915466421695377261164705.3663011091347603887369699484339179 1.7600820063546376109534828663588506 0.0611087178948061708279066036572730 1.0630555869826051581814497063270910 GT 1 -1297091831642242531621251251170031556011158.8654892834736041855172041343284071 0.6196101639924949347715612283387266 0.0493177365704416585289431284723085 1.0505753801185653090172912838479596 GT 1 -1397824062432.4089305358643471216531911927031408 0.4384614057943813794250742050740203 0.0645116962231257636958599134486551 1.0666866359897920274262479532844824 GT 1 -1.6373206019878903544093311275684551 0.1795853967386792127522029534796029 0.0043230981139662650109231877320822 1.0043324697219578991002262149030201 GT 1 -2292135622884934870805588187392401693.7756853678538588521038801485929774 1.5637008873504784610895578430271380 0.0922150250060254370885516217374907 1.0967477401058021256826461029364258 GT 1 -128265781833717474134707915172.9734919289610454585851760975162377 0.4197003271463078827474649467525540 0.0524815373068625265797560303395026 1.0539088565234335974354709520774435 GT 1 -6015916247084468804580673992038084601.6736828747064789587522264129479176 0.0030557457855118759873328060176865 0.0820876893391715684767924657106114 1.0856534150801385929883915892384133 GT 1 -19463476073250217006216080467069099124711141.9531957633709360726625701326098052 0.2404682747075116389489180759835143 0.0233487165129333736086210732905990 1.0236256164590134843819555204898215 GT 1 -118474942613242072615337376942763388430.1362105340518899097091849478418162 0.6214381972406333392598447914935939 0.0393047744198023446086317224333675 1.0400980633089925479132701028009403 GT 1 -552443114790512080.3472558535167912381543272298608618 1.0879251510181203424991757194210242 0.0711261944242281207134210573745887 1.0737823883879606723455204237888243 GT 1 -21519887694742290251984377364343723320.5958706153695583909080521620317954 0.7951675163013282219863103764910041 0.0143169595949627659796554844435313 1.0144204360943135564006945030293584 GT 1 -66850309579890938213303.6013510466169585542962684212290531 0.2906192209183084526832592026705492 0.0882100529237015323499730352899961 1.0923456366240731548350410102268722 GT 1 -7445128819259274693.9220994970882069866503845152202833 0.8130661229094186309383072792752343 0.0799506174545111978337011214362737 1.0833279336997133582717789954539588 GT 1 -64905947414120571417905516.9382368029651967556922850271593466 2.0815845084662703082164091123884454 0.0330683687710644323358668397564208 1.0336274879632590233204711964757361 GT 1 -337864475170.0288176303037007770202335517842391 2.6281516073384705121140755502841422 0.0457906801049438400879504524060561 1.0468722187134382616550506018440663 GT 1 -6081476128051.5442946203628526321404915569028308 0.8646168876138165494253559487399358 0.0014008287605670050984229482656083 1.0014018108384309763292734647257827 GT 1 -204866360197.7360670452364490590034067821508705 0.6895070359435948139104580916433828 0.0827421914978788803116192089221079 1.0863667028343611928992564364002206 GT 1 -3409576130337922594788609051.9224433945643061497663318048087180 1.8485449302050537778231613175102565 0.0566535782698610167992849169881741 1.0583217024836261339717084133998765 GT 1 -1277.3665335542628679420248489430498985 0.8940843010584272516792688654713590 0.0963260592347026450834462423631075 1.1012866686465783248363284588579233 GT 1 -490987461277280705637265941574358.0639604123987618353319517242105483 1.2866310864847479021966556207659094 0.0051690748870500413440542656947711 1.0051824807719474890333090638414680 GT 1 -32666598198193599.4386558777792067322950184692020711 1.2491410656906158477968430758580663 0.0734443021059322062100518846767119 1.0762811186102520341037719874726750 GT 1 -5340139145600882838068.0189714083851596767326618099303013 0.7789646864235646306836771009610149 0.0731219290577962371980156612694096 1.0759332528739012191463667626037715 GT 1 -6469193141.9105724124739140479314238586756679 0.2653908713035802915424089679795111 0.0909679199490594032137748165787350 1.0953748938421983838656965213354845 GT 1 -26435171663448810137445373.3707461693882758913606082770376886 0.3828675454321368745964345333344158 0.0324413042559990601203107696336736 1.0329791884827347429904918869301761 GT 1 -7233720206405297228781.9384887160720459179252208714584955 0.1320444931999602251797696134726354 0.0987180915507925702093690236510727 1.1039371863503936156789960296063285 GT 1 -286.4474771203714140659767796056550482 1.1966140213205167046857742770736761 0.0995168443860613830545398681984958 1.1048238201335948656195710853082336 GT 1 -20105366239813796.0193620716870484461013219832619441 1.9205141417823254510151278143450501 0.0555219071579629634706346220104590 1.0571227867595025407453080511667586 GT 1 -141131543766771645525992145667911374.1789676426339516646685120488017837 1.3302073560255960228735275321211546 0.0672128703793502729077376355694907 1.0695782610575869840624622981198595 GT 1 -8885686549219893856143859790.8428308768914066778646929894340079 1.1002278441227155090196769772715088 0.0091081193501234845766857277020926 1.0091498518656013816370053321441590 GT 1 -420703061252486711102197462849659814.7828824276443916782669036642364673 0.2485914899979452048910181866312182 0.0299309183155977974922543977039642 1.0303879917892639061577505438695268 GT 1 -4.1263046942117349825654165553092132 0.1163158029177004102673834489499077 0.0727728450685888527626776162794833 1.0755567003584767787809891114546116 GT 1 -196844693259014056807512402304.8638858033437440102200245334444002 0.1231334842420691035914810452688438 0.0447515114197536505622309550067545 1.0457837748806700961979396526411297 GT 1 -803.7413158709789642914619607931277256 0.3202730326318704567919483649633469 0.0461688417504254169120397799872009 1.0472686061640868880639106547389676 GT 1 -1643.1183591318068265670782111591568070 0.1767878571113317165843234396657799 0.0535922248924405433179441277439343 1.0550817508957055879037122847320436 GT 1 -284116559921637597053347092298114000235.2271044408853572002925938162694023 3.3120976586188277162179353333526671 0.0860887996500560545370192344617833 1.0900218672260171338428623283513690 LT 1 -3600705283721017617419674687771259730456.4147841265117861972446957428597104 0.0837378357836508903220109639311531 0.0257562531488170323948194187291381 1.0260937532071314216499366012202535 GT 1 -3302248326729.8074795604737622734755273865806875 0.1819010045970378798787365250520598 0.0903090902730834842167055652219857 1.0946503968093935415759905761648007 GT 1 -14315137450681031549787.6269607499192698778438612425943818 0.6634793948660407754530739011506969 0.0390845528142347897277307074651037 1.0398688580806361911951576966540280 GT 1 -6529.8884198467702556689113076046690198 0.3305119206667023404282494521238709 0.0359211691899475594425047958811876 1.0365822130157353635929786487176641 GT 1 -8.9934719017356169131099963465881468 0.2747532128658549011652884712353861 0.0848344225151484996358581257912719 1.0886502710778828737295776102487314 GT 1 -591056806282601932.6299592732732350506726062290489804 1.0506990663805805710173265621056472 0.0135079900337399532354077317945177 1.0136000529275737248711748903005878 GT 1 -1317773129939139084.6790246892365895339634893528319311 0.3739293397381234872207124369683179 0.0809349326077770954805722435085776 1.0843983567473767338411302551881677 GT 1 -180801684078882434352.8074458072140137133791774217760924 0.2332715445900023078800130156425355 0.0309973526668947626087374196609682 1.0314879350691943986644096162701773 GT 1 -32647452718259552776214557557119.3193902615214737122728917897142251 1.2152797469420935153186567987860510 0.0032273444032624903764402932937377 1.0032325635114761753491982117339514 GT 1 -4604778768863456149299616.1294944165186730017679287829520434 0.6117025334874447205770704506884962 0.0144183094653421990904670344456549 1.0145232633492002416759561177349150 GT 1 -22847153442662216642689160191165012159477316.0712823056437240432551325903870391 0.4671403214256885898747984072796115 0.0500302879712867712203970632096648 1.0513251769708333969751096399193130 GT 1 -177.1954535054210502748945530497921150 0.5988306779448322001572312374385169 0.0606939407396732989305346053315001 1.0626139111770435111603364411348547 GT 1 -962763343505632730335014.9484953108898200662014982964546802 1.2912245128704285423499935807439660 0.0575667792869732909007484644131238 1.0592902155250675679181420973886462 GT 1 -4972117587805731825531694.9160506849704110902485606178924012 0.4133774876543437647354218370112206 0.0781522376795284825588351710194135 1.0813751858478974296968370475362296 GT 1 -1665693836066029027015146053610145391811565.8833341688886543144702087311591706 0.7374189769933697942759980172790746 0.0332217504084222474435318729548048 1.0337861277253048233696452104188263 GT 1 -9.1793377578776974893427019599846989 5.8508052658261475287460791956447032 0.0535690005527213253705391437532238 1.0550572117325897590714348296194604 LT 1 -852803381743695124154363.9935873712433993093253733441643680 1.5582390915679746499193698971300389 0.0583776227505074531758171094301900 1.0601509581851805394418393527303216 GT 1 -945697185222313962461254088679158605768.0647580231004134317514161535316399 2.1476357850510908865348816603536891 0.0409410441131868778703475349096072 1.0418027295682619601660712687657930 GT 1 -88310546971189479534373370.0564857536780977451265765806999806 0.9266320902843836194994684384835170 0.0563447941234556847310355399756206 1.0579944275680733635348907626829151 GT 1 -3519511890879809080991.4472342668531926318363466934632175 1.5374718876752799755678243622136576 0.0483024771653675918783332983440104 1.0495080227919253777213220036594608 GT 1 -135405274651245451434463551822889182.2486019814357404357155850844838155 0.4329151663905513360999184309265300 0.0765551447765376129420920390078276 1.0796441939319358869670550014810416 GT 1 -1383591952587642238373357852275272.3393497200092354957937966009868882 0.2663250509966374615472585901570847 0.0235462157348156014014446215410179 1.0238278577268452144617075247190807 GT 1 -66215969044257377170833908448244112444.2504488944153296964963485822748873 0.7675969206580538670355530379989382 0.0837613883583136254144578492545304 1.0874784551718230876377068659003312 GT 1 -3212550677228348117732623281750.3474654957695282919671907458034311 0.1067478372892088277802702506135290 0.0031026636023907398644765953533381 1.0031074868422832249254252270920751 GT 1 -1953176054975833103493860615.3930025661960048247046486444287787 3.2401387678474725062203534846955550 0.0072322484931797089382314805001118 1.0072585279855195478643149648519410 GT 1 -5701292927956034217876399527218555687757811.8115814041330872904166980847407333 0.1798737697810379400959492873125899 0.0995183327938098438429790910120255 1.1048254730340064688082497295890623 GT 1 -222326253254473097104373683295843452144.6508557361348616704747822868768343 2.6667723926603765384197895019037161 0.0287786947219418623063225631909297 1.0292009218519712813164345450536307 GT 1 -1203929297109770894703169709797762.4549911947120074975652290232776303 2.6869737944083583672917934269995082 0.0806360721167160932916680438065312 1.0840732307898753408066664102629564 LT 1 -26639351272243821.8321933145652752053776707560153284 0.0700912835415237502860435635263272 0.0451734018517621662534151071079690 1.0462255276073568256981722562015525 GT 1 -86175368404885493478915029906024.4714093221390007040689511629467520 1.8800798001760050303231619680918792 0.0705037055975639831879893864918919 1.0731124584854586528000530075768464 GT 1 -41378133647.0633677407744233140869100264858088 0.8674198534437284731241759950531021 0.0835658662118584477400689068896250 1.0872650814009907640965904669444712 GT 1 -328639.6604667430008231165962593240019665 0.0370660919876766702358474701680678 0.0657611035597534728858485049814724 1.0680230956855690800373335341689419 GT 1 -184054835974175393833142.5444858942014710857569187992425297 0.0143347044584250065309475824681690 0.0580673719817907902016381804239415 1.0598215271139829193409321905757348 GT 1 -2682653607292842109474012903.2310067785769662151066886085011285 0.4694372737456014298529385876316964 0.0317215289051188896362221371501629 1.0322355563256721741495676691856145 GT 1 -28106996877402937051938593.8559039151511241654232513728034554 0.1989356125675976211175192961877288 0.0478988692379489466452324894670542 1.0490840200406861048704972715393335 GT 1 -250410854011714595974676.4829574657844603173333208552096004 0.0408570879268662198342176348819649 0.0671611721413185675136775667166091 1.0695228391892991002073247521609478 GT 1 -70146614875400409676390247635.6129131280464468787579518674032328 2.9286042492298689774739210834422332 0.0974232529097634475406304456076763 1.1025015540635227211682838078738260 LT 1 -12532328884303.8162336684945486186146660051764809 2.1086641145735882739421372232034539 0.0133302308733115910890524735884808 1.0134198759519270842632409873181812 GT 1 -84198633059639453100536116.1747492358802726817363544599787619 0.1071416567094609587223932051551730 0.0688074067560854817951750351568580 1.0712891560272384524164919152688222 GT 1 -1772038412.9375256568598054236522338883774794 1.1417383512428282036554834635268928 0.0905150036381889352779108149295290 1.0948767777385776387047241156855087 GT 1 -36098081750643079139198977012528.5942416932645543990650585962437424 0.7341340959060819436906004979626055 0.0132874098321116135114229218795834 1.0133764773262071242610171807015264 GT 1 -229158879815273305.8920865684177924661539961853439803 0.1289088796828293535724115515459043 0.0923632024555313672630600484560314 1.0969109831075953616224421569912109 GT 1 -463165204494888412799259776249427154378681.7549038727395660872119693998754988 0.8288816094052027303894719715019684 0.0447977836694281580949422389977003 1.0458322160674168810715715256535743 GT 1 -28496694525820969005158207.2479157807180035436234891515832685 1.0578424870361414745268460746255304 0.0624127364214424005973205628512964 1.0644454443188912152049238011267129 GT 1 -6000819844278689.0684659239552324273151899582179829 0.6504023981407342805850341299368275 0.0087684874172690766720428533058187 1.0088071568171116201628548652226556 GT 1 -41657622147247.4874763573985334646712986913190046 1.4902017332038965795603603274517277 0.0594370961352376422135843836885881 1.0612767490488743331953422270080276 GT 1 -15781024380092154346708925136347246817215.0818227372991529437929693997866994 2.4135798819519605744692799148431012 0.0429202459695124457096627748286478 1.0438685534566439930641242217200755 GT 1 -2586694.5491096219001276987792714927099556 1.7041881504733456652375458846097680 0.0432731823258352553663279122918632 1.0442373852555749322457749353102495 GT 1 -220721.9836631223535590916180207504940279 2.0555668496985552923101752899041820 0.0166367590833962055667770530817879 1.0167767042874310157742953423841920 GT 1 -1251848335637296946.1845302397253876384767537772539807 1.6009240797794380253087949826965835 0.0559830779483665240040134110067431 1.0576111870951493217951563943646278 GT 1 -13929566719971845.9806114252588913499764655902184543 0.8222765576761750406576684845239215 0.0590540828774727250650166708612467 1.0608696148821000623617068408879402 GT 1 -5525945833324085492357176717900205664.8277927248165137384392318802624441 3.4882947956561073434998875657772659 0.0660724906561896424505064971513493 1.0683564568876073732708635326272185 LT 1 -4291231960902250670397271851.3962739407663980442560212619597213 0.4369695820447131023065747834518199 0.0396715979431643380764535852945665 1.0404799675422805756805068202648506 GT 1 -26110.7951579811585031386691727471518510 0.2535183283221569708635580539919534 0.0248677859038250717509534111760514 1.0251822129765034116213787212047906 GT 1 -80154046775746279021562560087249167640902.3435709001941438488169706506106640 0.3445385562914812454894850189294815 0.0942074535803659885172840100274922 1.0989449766202718385096467918972191 GT 1 -3478.9437370787222842389884643255978319 0.7272545964218459539959207012523304 0.0061260552487358300200873449084101 1.0061448965130197946706102266307953 GT 1 -667388103653710923956130529840469.0967786513875536329728237823577933 0.1315487075618563509812582033162348 0.0946948710237519207817399859455470 1.0994832330177875262587535036382345 GT 1 -33551066375471949325.0488422900929580433047442715725494 0.1839237389091253198055495099972866 0.0496871962512227074905554494689428 1.0509640814800908894822323380381640 GT 1 -1458170118467397.9756105688954119350312823863683574 0.0703091599837887835584692058586400 0.0996486717945652051655888957466029 1.1049702271575871066557545539619371 GT 1 -473562175311276756441486734210.2642725348863728121632855648760294 0.9645497771826942926695770771642380 0.0318245039388495702258975293396344 1.0323419105541478234625071668045512 GT 1 -125.3701361392027088125639136185298787 1.9712823544365026384836131121714338 0.0626946058279329661871937874725240 1.0647461222349830301565815111178918 GT 1 -41088227170045609.2156987521807587781609142598241513 1.3136861568193803936116033891192720 0.0277813096681069005067538216868753 1.0281745097747763445798247291937569 GT 1 -78637699228050039901374519120706750980451.0131764761353152104719126369991784 1.2338425024638660033389727817673866 0.0635954253849018918769058509686621 1.0657076580557658969162412454351628 GT 1 -956569671055245174186056404489219.1914264246258384767359616845322733 0.8501590619921990363060571626492119 0.0685089192375342800583732253959984 1.0709686641205647595623815682695224 GT 1 -534177.2923704762844024461334875075397129 0.1256831906372467899895438186482575 0.0181079139917516884099914463804369 1.0182738687148717117588349123898422 GT 1 -42609941041477322364655364313818700350.3883715760312376256895585911355688 0.0520523664475907769014305768512312 0.0716246170341052737977497560264681 1.0743191204806897490285751629608929 GT 1 -766164916183583400660.6862395625665992839247726300896608 0.0006779572017573176768640446107674 0.0729849084682840422810084474411411 1.0757854335793105359922228744193693 GT 1 -276219552228475173747.5587334575704748958168114192168880 0.1868291961939332695166458142163852 0.0189192743008832039932113941643537 1.0191005336085449710916494910216432 GT 1 -597155472955038539128241.0130287643035314438381316075159036 0.3046994495029152354308413904646928 0.0452189340606653587202152798393417 1.0462732151085834998021759177124763 GT 1 -6771024341594631822150721.9096386551549975971716457964179031 0.0095407483513492821576511354498613 0.0214637579721031714014232266070453 1.0216974544794339293028480885715086 GT 1 -217229978339063316490010877968187947.3046701388143497741724562568952385 1.0451340601306184442732525855079277 0.0120165039100361176702212914585573 1.0120892857361733867053665565975693 GT 1 -74271476508659262104.6409928085958561499639930573917288 0.1074404872546982955852877615523287 0.0118621533769625699578670808953919 1.0119330700928814317995146581323921 GT 1 -18309418715472391901404296860434.9565559486472848593609931961863722 0.0479491254850131108404705450018154 0.0383399051089414516987303262933587 1.0390942224668645980435932976089294 GT 1 -162621082674270362190262083233653743.3732875962572374812114941596151218 0.7539776229983616264504700587894813 0.0143890648468695065036321291951418 1.0144935913444517111195862235112398 GT 1 -37194395857680.1696229672623125120625070137402285 1.2633435318450824199583706106365302 0.0916657161681043018870058549147514 1.0961428141330141604024106099214521 GT 1 -437293337280281681998762360283222662928.2661140231935522951577168809681659 2.2030939969766196861630410841152926 0.0925684842702227320056265450242251 1.0971371804513155285985850403325409 GT 1 -582534823240668075399361030320647666024285.9174059875028667526971188842565265 2.0203556834630013227945354294228208 0.0845339267522734064408599851313587 1.0883219737216629339520828783489192 GT 1 -29753888554649629238932906.0164097501664404024582291971344485 0.1200391040512268207397554388549212 0.0541307601645753034401987124340492 1.0556509437595639110025191128068260 GT 1 -30734374535670407976948917150658345394962.8118815422613992975679190035404120 2.8052785052152145144638203420480389 0.0876439801057134147161508513491179 1.0917249923922969942485091370640755 LT 1 -8670762396996109.3796829123911164314326902890294323 1.1414724926128557391168806353347215 0.0383156768519766204482243836026779 1.0390690285840229441732459562684854 GT 1 -36170.5367520478623843703751342794763350 0.0423360130342757012560867275833515 0.0850570881769543263814218560190934 1.0888936071032665360212269370124258 GT 1 -7370291022421264422599732598698240649.8535695172661634752839455075054682 5.7768625646134125956398433139536623 0.0463183749032794640806622476611333 1.0474253895465793838666675014598131 LT 1 -1738224012683868808638118746356531940.3628344002597885279376358764603999 0.1940925099859546944938744871952912 0.0848678055942899705848852295182975 1.0886867493817499986100951225525107 GT 1 -54564920864975592367230736337440708577233.3141995862027677089288117473950225 0.1617786422398116070037801266105634 0.0264834534654354248147546745756698 1.0268404573604878870443932502614844 GT 1 -19118770204392942297.5412459340461679784691155204411641 1.3153007386215497607878445715094933 0.0561444747949627032338032492133753 1.0577821698829154284153732565305740 GT 1 -1482167.4212096945561433767096878806514369 0.4262012263497191007711273654669498 0.0971118238061702626883464917226107 1.1021565691206799370154399832805167 GT 1 -115126777481221131446046.9915533069741132148725794716758567 0.0108370464198844173114646047696916 0.0941435928851023670932402184432874 1.0988744765433496738628215317632223 GT 1 -15129638563697684915135553978025727765.5165963213156774076910472789819420 1.7363260380826889343242249327123615 0.0667356761180302048315002384998424 1.0690668129184412261743826271414595 GT 1 -25745.6719695353679429332791868483528619 0.0834746587266290937908017194125870 0.0601090546439861584485160318529815 1.0619914260271239561696526614994402 GT 1 -264.2191811415447824686754911228986193 1.9719420377452319017671923407084293 0.0587871917540279264583643050707079 1.0605860138003885574326684785698465 GT 1 -156377488629820826.4842920385656346609426143218029289 0.1243403983102717281896295294029258 0.0285785321926568486937288326300042 1.0289948494512535264467366080380339 GT 1 -22799870413084446.1672016898142030189221849500105060 0.6381299183775581838024498820435731 0.0495435728210534574787051764713841 1.0508129601044860392944396824545616 GT 1 -9060619682577687856568037.9279841633222204486747124520198159 5.0662663984663671938169447800514621 0.0456305723403422901680929084618985 1.0467044417587988416576962219143437 LT 1 -347049094233396.1252784410259729097636315731918084 0.1439533989950213066971233641208741 0.0645804409710004364495211197754123 1.0667601241067349019755998625483962 GT 1 -898833244408.4527147105789644836851168626761243 1.1658150811668897979914117365480697 0.0725885906601150687358112781413265 1.0753580045989583992045374726015827 GT 1 -90380774750974718.1679950575356775837258097954109919 0.2644559324834685203228628858580091 0.0300317072373087378132884797614904 1.0304918958924828886368300348978116 GT 1 -303354408471405455496679260.0172283586480773959810001230670715 0.3842937091927631512144148165275259 0.0273265332557835656017533133082899 1.0277068474224373462131215866068952 GT 1 -1251958070708322388954490416926.7655387336843522359194750380329290 0.5718570150751038101504887159552400 0.0912234954060237837491817268898842 1.0956560845691068444270145136223986 GT 1 -6223911851193265198648677230553077039.3478927821732601076798975756587020 1.3254031753598069959766070132994947 0.0671454391749930682068688888310307 1.0695059736459881787974628840774903 GT 1 -3995400850412685986296.6088578132176084766480079166586669 0.9127423397552776125035596834155249 0.0000938918174356316116020535601496 1.0000938962255482482569724495559483 GT 1 -253455.8408617516313494887504349628533837 0.0399086531379716825606522420662896 0.0606800038359240360531762487496123 1.0625990738402469978650482883889388 GT 1 -7146319.7329086667903665908027238314303774 1.5171418580524907722052120307793412 0.0375770280228909899101890705909481 1.0383012451373901631831559310971395 GT 1 -40144955951196910268488180052.5945107937268844013544165117883210 0.3492625867678213392422394106812129 0.0916110799511120305994075364645652 1.0960826660412277701607057121263417 GT 1 -202748356163477200202852669140229.4335067013924667312336996129717897 0.5020659105757881986297328342330384 0.0260572111126266616095285199567613 1.0264027153734155625572018106574721 GT 1 -32798804944460929880152966979198.5317533236451983839608613526244206 0.5573043075032353735879002415334215 0.0787685583536504031211698539885575 1.0820439804344437598328246767590523 GT 1 -80335248321962848839535775817182161.4930434626218647964473928980038073 1.0619932280429222604381335340882663 0.0917807980229966107070821095773420 1.0962695176470535743069296642557344 GT 1 -2127218778767174749240.1444319325394391382288237073529112 0.0065680875164294576664408725546292 0.0471656798377938938664314576055130 1.0483142412683878949530203125114946 GT 1 -39525990490104011415.0294349838840115777534836319318324 0.9019902982044914800531014619900597 0.0669768695491946485248160533564378 1.0693252869621340235219407601218912 GT 1 -518493.5971915688616576698646975893764560 0.3630175882145127288918315802148657 0.0114688162913223899277009882480707 1.0115350903756944593930561021878566 GT 1 -2007917.3703739965226049236413864345588898 0.0369686693889015244663969254543471 0.0980150173865842639389126805606553 1.1031574080454532961460340191755812 GT 1 -8375792803280500514772521197799611868695405.9617263450912477645347327150407939 1.0574996518911564530179920818836163 0.0496507299380287127065477982238032 1.0509257092584309330237030313042450 GT 1 -802.8692722031060849715273055347711311 1.8317899490871128836545681285967786 0.0401727069975103725138836130132997 1.0410019138271696181869482109081464 GT 1 -15859385920498668654.6428490283203253497826262642702020 0.1614316467723022570716472678118934 0.0542481480712735512018473453761041 1.0557750573120718912057922480617790 GT 1 -12445111693136994603695467057978611.5909176160821079016082727976312302 1.3406772749458171328980162521207610 0.0779925383780231921001903931352004 1.0812019625928056761951418293505452 GT 1 -378352957377.7589363847943649382425826631903250 2.4166769947468697148831400201856631 0.0730190541649206237534787114352188 1.0758222682822465129807525444247394 GT 1 -1018503509450685166654106038.3401264413803967066742129836441666 0.8586585450950118109740223569492982 0.0047765257488529289133178006982032 1.0047879698043941656473237470795616 GT 1 -72856577445751382101933.4733473570960245429697003175461765 0.1489617976450860502990445095958710 0.0756393034319161860422741477809295 1.0786529192615815798038795324496210 GT 1 -918426370634175454.4745816354415903727557946439572349 2.0918734311114683237332970494042086 0.0812201909721853322579690948338199 1.0847087837810822525650686833134144 GT 1 -8204409696.9795180761627547086620958208477677 0.8029745152452617642595268542342417 0.0655654597647537419559017471945892 1.0678137024423466176200758097694211 GT 1 -226997021615069944018702810360480956216.7604647510352093376483849260005867 1.3738484102445412924085845106823317 0.0789544480553370591704388660066346 1.0822457847265933110506062573087177 GT 1 -205826775.1041729359199172958499663049822648 2.5770662780563755561649153171167414 0.0098487988888964188037941474240281 1.0098976191202412703958594739243857 GT 1 -947973.8200189695549253532417583037064010 1.4037793372073955087914498773725467 0.0358128954521912670994031832410280 1.0364699113504051706315488220327633 GT 1 -2675709311178.5285577378610974958777066632898630 0.0473095553624688665546336522417470 0.0023427682596221013501557349928987 1.0023455168348702929749981468029886 GT 1 -7267150241.4109580399457756467169525819318261 0.3586762479150267288034087945191061 0.0837416031557164124123825455187576 1.0874568614638864743453593902319455 GT 1 -24673420622.9419975450791033633494954483482226 2.0137356590021839451608788627972743 0.0962688754274205905754523614865587 1.1012233914007657543933001401093265 GT 1 -171128896570.9172691622591951275423036995225899 0.6457793288708948050405875775435302 0.0392346439670822932987541229463316 1.0400250662843100886712632945098037 GT 1 -1203659731512234343832564516955700315.3515002901556319192208398535978240 0.0526801123664472107086434152841640 0.0815716366949042702189153327701102 1.0850913705040223133472601145776917 GT 1 -181677110389350780460991544900156.2577165636767322651143803055984792 1.7770858233225053828091309780893450 0.0129382217526569397839666845569038 1.0130226495648525528422305142523061 GT 1 -22417877711003475512171982827.9809516325593736339580960605689236 3.7701761874991077565350063158850883 0.0192002428767656117595163469439420 1.0193869614315070684855542758341473 GT 1 -311120687572109013224128375886.6042545784877691531019981739243026 0.7532802988967991337932203632694576 0.0377527355452006214010524642050900 1.0384838296856123069869656366549014 GT 1 -12308245710122.7263774904630503206909694509076514 0.9832086119579663376668391062476458 0.0809845281763441964937038907935562 1.0844523212690840299432272093418513 GT 1 -56174686918.5924503165282318404067045120346884 1.1155240682450304558754049484964816 0.0462220805702453440792763613386168 1.0473244234910819099616498436725805 GT 1 -57554116220.2710806447794899213749540776950419 0.1775197449675910335336796217458489 0.0460860697571832927035204979725753 1.0471818314751692258883870016577758 GT 1 -246.4562622034081260663966611239139442 1.1404366338425500537398047928122195 0.0524579370816147248373273855639715 1.0538839494295122503326559806397800 GT 1 -3162933457404835229324180089994307930069650.9809455015649365591570437602334268 1.2206908962510977673623596605983082 0.0347357390143731264749406663748432 1.0353533695510477916108483930139103 GT 1 -4467149179078280510075.8103001553139229557483210415901169 0.2400003564269759940540277163106508 0.0760317591337262255161533791102882 1.0790775792880080784819756575486753 GT 1 -763692996850337230108953650480593983675.3239887240804457983404509774099899 1.0557763443604996590523834285668367 0.0307333128108268256901768553486054 1.0312154859796912744759225990362970 GT 1 -2449.5775416870234129175244312869857469 1.4211353205109296447760063367382439 0.0531203487193399810642975938164108 1.0545832780528667777831555508538205 GT 1 -557146035562259419012049541.3036539737539126017719874671595363 0.0107090671779289192718363911240232 0.0628526232047473583996577763788275 1.0649147233111330232282228797149900 GT 1 -9058400151392581725714827223554194.3980255722388719322776585413632355 0.2608739747034229233325541280276317 0.0517696877228665296080661589580402 1.0531578607935655729595549354472100 GT 1 -322944638435659828131329015959027322.5796428667135597791038235988387234 0.6579739124886493051221248394238173 0.0377197862315787826277648376402339 1.0384495882273864385854502764870462 GT 1 -7539908486469829759711935602621.2084377384634690681137602071450046 1.6537187396425737324696521697180711 0.0253959343970523807920725249396272 1.0257239770208456624396862631050371 GT 1 -709476479104370.9287031318343350394073196065105263 1.1050502379077582016566143583116566 0.0426418415930900971821541217821523 1.0435777063348060642715833405371533 GT 1 -338577077416565716125321605820815.4050662289058825158931980071295591 0.6202455235454662318519992486232387 0.0755006880296111138158822975958568 1.0785029723733102846494360604881933 GT 1 -24655786113645399119310849435.1957395686692318009316354010335005 1.2665073052966857828988616877217082 0.0140084184003255841523088051048146 1.0141074623473146684701072947457499 GT 1 -1230691569003648031590199319167123716721.4501810675496948033035736954257956 0.7325190363705856537356968516354979 0.0806646865767404452322760729180765 1.0841043554669120584373352847063068 GT 1 -1999216153974822261859597459203270.0261915702057690619182119807607313 0.8026278158828945829507043320918276 0.0183633313851043550959696304926431 1.0185340303185069271091881007897249 GT 1 -295415205735298771.5397033219537387910232376120906346 0.0904426450247263196297335927952616 0.0774982663541685436018025239033671 1.0806660237783464576180309699665332 GT 1 -701255609685354890327.8336234274461530202971298322712325 0.7866142856238104987916830399233887 0.0501466118862249759628858816207903 1.0514476345986776370210135976163305 GT 1 -28738134020.1561324032919422644568886583445636 0.9380775158431182063256772557734144 0.0191943737963297263096544492402174 1.0193809774752171964247134869670503 GT 1 -637463420254880469.7786203126437426523174486664754212 1.2372563383364714071415354673100675 0.0583055544042370375773388185838046 1.0600744247571015457290638405689932 GT 1 -1144638716.7662182784274860919529457350021734 0.3773594197692254379588003402074791 0.0151511748489760460375207250411640 1.0152671265928853484248443181867301 GT 1 -44472900705683468281487139.0657025862285359070531389965750140 0.9564281576444579665166241161290161 0.0537613119562764825007497723360866 1.0552604288131907796523708493122382 GT 1 -2546740814835136278210003201806.7420591774075417454352587277387038 1.4699542994061779725409608139616487 0.0904540795768951533225880371163740 1.0948097925534943152669164508793992 GT 1 -584096.1677418979098377726374485906538621 0.2413015342077741007996514433069754 0.0410858242922800246743455576640170 1.0419537016303656398440151777468948 GT 1 -1379469193629636735361823858893309372272679.1566733610014951986109176647448767 1.6571435351370106788055338039569122 0.0604371641397557854610987911528341 1.0623405801296425897342510380870606 GT 1 -34814406988794204.5019943892878416452217919602511328 0.6444042781187541509853094219343085 0.0041829055781939776871308690735313 1.0041916784002026978484617300036073 GT 1 -937083371187053.9683211559690270522095561613794413 2.6760194671209833920540616700325776 0.0231105940482454968581691593538764 1.0233818309395671407576848222599741 GT 1 -3191006610450.5901943352363741071346892947384431 0.3129897274184022263154584913200702 0.0957676124785611875230000319067138 1.1006688857834231664023193576534415 GT 1 -12536790772.5970479282214034792636411851257215 0.6068850442931651187183597740051606 0.0776112897516368395223940808199817 1.0807885496421274244083571677621615 GT 1 -5172046049594699099213694185.8770882327157267496506859692162237 1.2742404939350930706815923650597198 0.0662111689771176902517065083875935 1.0685049572976382344021833153994804 GT 1 -214203683428992601.6201821228971715333057265031582340 0.5719156064817029876386492359802786 0.0710558065973798667261593462823833 1.0737066136598434515216486005909696 GT 1 -1155835.4436850010905831769553573122733507 2.0603824410273169459344749665832221 0.0662814845881200319316661123749777 1.0685802615379881412817878437542400 GT 1 -78935978601354858840000947831548761.6264578365802543155113688261761166 0.1138088848567847188997062696402192 0.0598625270320561821554962879637591 1.0617291665730219061605922926029727 GT 1 -7585494884.8803031795438447388413681489753546 1.5483525329287996788740702130312921 0.0268072825942117248353491085724582 1.0271731512431971717610878897410449 GT 1 -4752439972262666385328.9708469438264552998969000123229617 0.1885334060851063475340108498569582 0.0312113329199701732916266550430265 1.0317087847059468968529276484684721 GT 1 -14972701685242264.7400990577332484139776806845657893 3.0874378241171441030251717666156952 0.0332113267617115059312998962510203 1.0337753459451783956888430794473871 GT 1 -150089339609709337164776808064.2120990943013950350690466361657488 0.8536998562503976111594266571410790 0.0719445171170477575399090158721567 1.0746637603937549730724627147100734 GT 1 -1151044961048.6234143205206763028588218284534480 0.1011768799807462004258443288936748 0.0195333040501164356021264646267649 1.0197266003174224688184950693083802 GT 1 -7504216625622171434.1040634625617313572551342466814187 0.2339857133425731093855918893344614 0.0678091417579689436069184472383453 1.0702177017403364747476222073212500 GT 1 -622994194947236167162429.8049145443257053249215320940577638 1.2554957162808465016994507581447290 0.0630052639657178764740112257963175 1.0650776146524706058444280871657370 GT 1 -1197792904.5783681086671609546714509354648585 0.0560140432273956946872091018581990 0.0931875939610444894511321353451152 1.0978196793230771555500951527041887 GT 1 -55801092553846604030.4346575712060615235814852773072679 0.0105791013054457181727252661265844 0.0987748910303574854783614443936465 1.1040002091059610817797667361585234 GT 1 -305063097977.3066688776244726588822130704310455 3.3262554829320099908958645560416560 0.0926600158968429721099486778307056 1.0972380544475252793951533248891412 LT 1 -22536904495397601030258016659.1826466583230590050346935236079453 1.4586589887100807451995053616756582 0.0255675149168171642658974508278098 1.0259000440321570971620186140714870 GT 1 -31196710595.9466373628878722675604636954988503 0.0007301237616581001628137613811812 0.0338650554339611712459591260183563 1.0344517603581986569043765264152560 GT 1 -9143845232989089038693.4293354422509333218833228695669512 0.2400425847253922343093068540085318 0.0646127956032484381373322906883173 1.0667947130689770320462978415909967 GT 1 -578668956614335423394588.2273253552920230778033116528738092 2.1774982469458574011974460127278778 0.0167744017272263906938965082242870 1.0169166853971699246003713350290980 GT 1 -1434071646160796704147338860895.9264743230984697862144379137334515 1.6401308876255706541481579791990635 0.0363192369569660314463089378053134 1.0369951978857840117725718956565048 GT 1 -4395221097905701932523892030609524260489373.0244997972592203174449490206285679 0.1661338262119151545183014029910078 0.0505116201511989636632286974680707 1.0518319869839347561837825340442402 GT 1 -219824086091281702179139.2113374332469465102254574549160078 4.3078037268862669545145347713548621 0.0580012080901848142382079145198312 1.0597512868802532791876893166567470 LT 1 -12026846.9050543656848811667868716826272901 0.2382121764939503713516706451321359 0.0740268893206659966600629130350960 1.0769100829008405277107621983930774 GT 1 -124708546542910203665926687611641072271.3672969878991585284627993538782448 0.0714419857306318499899095792263700 0.0471642680950620697131994256558762 1.0483127596449239662976542410181902 GT 1 -739077072238.6994134044337937729383411183540399 2.4182491162734355469283877233435956 0.0541584131923099311988830121397147 1.0556801797583721098142556384841173 GT 1 -4208254434042823565191599417007743.4369761920129146919349301596202256 0.1749457312902398800989233190132708 0.0783006805300826400152964063814496 1.0815362263250745084550395474680845 GT 1 -850940.2339747907650326267615313209241599 2.5604754773133631070790398162732593 0.0522420833731845206138847829222484 1.0536561715455962086242553889676021 GT 1 -1406301144003054115701.4171758099851859709220759181356004 1.6876411485578013196970420107122827 0.0169317875694598682496136795710807 1.0170767691463155225842360653693392 GT 1 -66161346617314509068802700721357891504.5981709898948186114440218589602761 2.1601901715095653561348093672030719 0.0842738294985645609756085649799604 1.0880378995002415505359673307216133 GT 1 -26940992645098420704752951.4121836024008793971834610212625143 0.6586689468154219279395554366329805 0.0525366274215522118196665216759977 1.0539669996820431465917852923392613 GT 1 -2863350914858284437582782358581.1903701501775951774618754372582378 0.2685465764993912314044592730945793 0.0727764929797744261909202901070160 1.0755606345814360879776819594066201 GT 1 -3476505858968155839.4235611458483728419825087548545304 2.1125904448619964152552928348962340 0.0345557693705229462037953411427021 1.0351669409470891733622021619911334 GT 1 -60791272372569491326814106237390747710.7884450504586388470918445467011462 0.1279578052658499964173137008947520 0.0421448919242022891647133293153639 1.0430587566295826872456342277603879 GT 1 -725156708792622.0917188677164790372867865235848664 0.8276832097303194410920362542027701 0.0832468649529443997695064127584240 1.0869170522961010712519181023828447 GT 1 -1208118527876689138346064090183222545.2389297346505425602593340789485772 0.0338687043232734780588578156781299 0.0707122953857610133545721176109387 1.0733368953099449468428107192158812 GT 1 -996160899243.0468322316884625496133258010098805 0.9850484085207736785125879086755556 0.0330564468940101866392898683207269 1.0336151584425629947920027660153299 GT 1 -2734865314867278634.8595269967280228386724772015321942 0.0854390973600123713187742414697934 0.0356431074850187057934361917656356 1.0362938324350474456950386683227316 GT 1 -1166379810072396965322175.7012512395274817422244746499714459 1.2296863294762647131170142063483143 0.0126422271073127488368169887855095 1.0127228200302526535659664207086422 GT 1 -113118287.1933575309832898376886079899554243 1.3698790999488455965599199383500546 0.0252197244971983406319018353318433 1.0255431918399879819065756880766908 GT 1 -3227734314437956729810907379116952086361079.7201441699988538663429443308011495 2.1669028183572601843951384502661355 0.0074641495734034980177263997438711 1.0074921457365301833919003578688996 GT 1 -3457066411091.2709986114519739966710269788689065 0.4910240707595652829527134994387828 0.0673107323455865112146200700278619 1.0696831800653739055884338681284655 GT 1 -20799.0037050183829900920577709435190633 1.1989473346994877938796054999635980 0.0811687943563954190298170095863620 1.0846528452659199394369507569523469 GT 1 -6031218.2981610306397956552331881718721611 0.5399427260643538249625149058214155 0.0894534244267533225310158299078455 1.0937102272806715075891481807628233 GT 1 -7744349995707567483772350473759473882408.7181997498747388657756739429007557 1.2785591312965990710400763523179789 0.0172515328325928757641212943138574 1.0174020744194584044240290236179294 GT 1 -50142969156343236878065715194793.8540157871365292384190987952002346 1.0753885847703709649786661621409190 0.0991969988638006737264368665665880 1.1044686899679367012259744478317931 GT 1 -756518503064568355482383783681055878.4979511640428663472095286155192680 0.0365358747280736233683902307710507 0.0327261210020153048327466350841286 1.0332735981921758635956319538972989 GT 1 -60592965400032856.9799165780588097241009268189927846 0.0607174184239809768173785244024658 0.0170918225401645173379247325520157 1.0172395737169920345057380336896507 GT 1 -237977372374930999846051261.0099472478679290993604824096703447 0.0636134276801467973968250400641488 0.0924471798844110485471753210721979 1.0970035105527973112947994070648991 GT 1 -31593794509794.9418430596452183343705143911712790 0.6589701108746680595044393296291118 0.0297660309324019057580793059255250 1.0302180313456838111982225910900982 GT 1 -16075.0080759875133310853838505059981634 0.5631051272655010306478096074500156 0.0786840795014837315020271864165827 1.0819522825449224540260926547420529 GT 1 -2887094026229979530211.3231875169731396798764516617438265 2.1090778428018092153777098545576005 0.0233075024216766199206897360213559 1.0235834179564637789420458608280543 GT 1 -6369133265.2060856182254767844782155071868884 0.5821355262802972076961556175203621 0.0597172654779680470266930868658485 1.0615746675373292594081603947491318 GT 1 -37207757127876741349154839406956273366.1661097139823621679921006899717344 0.0231497896839426150111125535007541 0.0690083332366043173689325254567923 1.0715049525900316296406246832406894 GT 1 -69687707681346660.6056067729386213977024000179361108 1.1544907495507002598326101353697689 0.0930422717195367271519135422256447 1.0976594360385848173044868143101314 GT 1 -28626517324210572305881.2876086438485883571422459577317969 0.6200842680782766056035965195087484 0.0460402667903084459357952902398477 1.0471338168002344497727695661132882 GT 1 -12547123917352533819459295727463517415867958.5066006300588606465703700776803400 0.2956834370051052571066896423573751 0.0770105060612274948736480942609704 1.0801374270589389008386751140422755 GT 1 -443.6463319031138483880307288508039965 0.1092653954287559946304384649098929 0.0064348017572279167735381058602949 1.0064555943394806900878205778177231 GT 1 -211258701574041514542930859.9901334388851692421873753188442383 1.2675492850830668154780025705048970 0.0946456936313635237819894843241841 1.0994289131479759820943486208644401 GT 1 -66943565784903504177923623883651241715698.7470992456050929915143502057285979 1.2265976521487491803624633150144898 0.0424816026156376660977352391974574 1.0434103441334758146005688661738708 GT 1 -149196679475158171806923034497119097.3074698867085140836063657376806838 0.8897878978798116827834797870825652 0.0459420694991389754164121616047954 1.0470308855820137511748807754335174 GT 1 -21925482320109916335733452693931882.2149654772824836507986116220445463 0.0147059912132503613338606672664854 0.0183126443130028911500544845478718 1.0184823963839293189095851894574281 GT 1 -21954594383644591798661173460700885775325.5356176155233377299815518131478208 1.7356341106836566894505602942407928 0.0627005952591318737913527251608309 1.0647525123084560109115802063275850 GT 1 -88486110901002276.0313260842769929964944643330258642 0.3615302459019985529927850998785958 0.0400226601027515621382223506814655 1.0408455990725399257670347163272443 GT 1 -21538829050403740963540329306905179672709824.7645877681481648329346960311560219 0.8376863308126728529342651300301930 0.0502775697727098364373485438527442 1.0515855157881809871804967682197430 GT 1 -5442408498449237539386922.2615851680961927544728073495080697 0.3576358383766891545572939526866452 0.0327604758862783490638548282794936 1.0333091160482024956893941290812380 GT 1 -28387896474511283835571736705541506893785.2299914272476813893870512101937401 0.0975655588922264936990225856773606 0.0946989972660478775978286402280897 1.0994877908752074241301747591217970 GT 1 -58513814.2317089726013810371988285643282596 0.0298358892643379367280752407589812 0.0586014146072344118722770106643024 1.0603886526795281705954067099993781 GT 1 -631659112.3588586380405744959894712947938847 0.0330960700832533305069975117155205 0.0268009280438844345994126984395250 1.0271666216735986521743259823661256 GT 1 -194307855388514437.9618414876753306526112710356759763 0.0005847619151982246703923103913956 0.0473869060840602590451848544045819 1.0485464452595617090732245889527058 GT 1 -1358110399725780538157020931.1656125136252642077629940219117928 0.4502265470404868357559191755905510 0.0243985138568965409711520624827234 1.0247010893296179081195736094076314 GT 1 -253523862551177204404322.8257648507364045131238224508822914 0.3761404741709375452642946252038952 0.0180047132453710893384474983294419 1.0181687702780602304770101722156383 GT 1 -25847104321748947.2762723745442924073937645378870605 0.3609260737690320181356615544403446 0.0265111952603759806991785130344355 1.0268689542466667340035948248147627 GT 1 -217518976557001689152569.4583938813865168024864735834452159 3.7083195205452109022435703534285568 0.0625068073380893715247847482150639 1.0645457823245621890845876019281739 LT 1 -774156.0532904326921990894280095359658712 1.1155522375641230136327219201717370 0.0593764124039070320726830603227793 1.0612122326049947744332326358133058 GT 1 -155.1188539330631741002007701137451988 0.2843325879225761957343847725562662 0.0286542724554947866605161580379856 1.0290728209787299240222369923666579 GT 1 -1492965560340629761564303997881440254.7346729974370836596171818397614616 0.9923978071695941824721746711605215 0.0088907239196315731671779388941443 1.0089304822344328867104400236995431 GT 1 -1690222.5918482324326820881142040989340967 0.3993044611876773878393133020322151 0.0127036558182240205195637282299344 1.0127850372159358827703297776145050 GT 1 -369741474030127874995218.8657474133013899215809315379238897 0.0484729517097754273211077602171988 0.0866837671399920756899541516901847 1.0906730915893878454086608000647520 GT 1 -9256157507109.7979238806289781276720707649125371 0.6102836747053966511802623886668944 0.0960026700999938203858841355226954 1.1009288722447582312771987110580727 GT 1 -105.8411000931989602285128308074565075 0.4009664986313600630426627817352209 0.0927421873581247288808381620661518 1.0973286215820002801832050219287807 GT 1 -748417667824506713.0196356069815085514839557977353262 0.0540617655987782989372984917395313 0.0596099499502649144763899714635088 1.0614605429233081707223441576508074 GT 1 -8060256017891977045619866155147.7205678256639645191494876952070205 0.5676660915967783799796149877177768 0.0220892919371947165857764560665652 1.0223369136647474225848411602765443 GT 1 -24178573110875.6866855073911021007130919078823275 1.5376582036049444563076052701045864 0.0201476155573185145430761026044769 1.0203533467827867631198012638431481 GT 1 -5766630218098941148105581897588433.5035372392580062059251008049253673 0.8142327043483045794176550334356692 0.0586092191570870309294367242052597 1.0603969430916078475125395447605684 GT 1 -294594252.1161100247947934499366641555091882 0.2884319896958611312362278558905188 0.0556280539928410455701367341186813 1.0572351798376258758739753158769040 GT 1 -114281273007120006755392895.3765169462124545609085844890924385 0.6243943681956289629195489597555523 0.0413174104262566382760550704809793 1.0421952395170532269361903925548210 GT 1 -844096296425277040653336.1232480902996780752092264762658381 1.1496326585519633438363136031796988 0.0061501944115780900339213431343799 1.0061691847601560695209115218652214 GT 1 -457304054104643115.6516553529443715464509132509614912 1.7963993676061023216958381695565449 0.0483584598503754711073173392346023 1.0495668485535700186958746907264285 GT 1 -321893231743089837069763573120883.1686788353451196882997066361659685 0.4854147955705735664888809228956083 0.0041307706432093433282157696068579 1.0041393258441057795969155141823568 GT 1 -21720777997.2851956996293796482174646156469010 0.7274985209350094586343080908152041 0.0976910381423110826666187833370867 1.1027982877937361677571407123085287 GT 1 -40563386559998227541114159578567416424.0431581584602806493519300793307884 0.6431460984914191545993325933192704 0.0965077558522414792408139386158094 1.1014877532171816837972004630780580 GT 1 -385411774029591856957210334.5768100038344481033318962198139535 2.6934785404100378013589989959893082 0.0328587924619056618031456934706869 1.0334107677800495319623871434681259 GT 1 -966842482195247385201356466918846.8201940818538079765933098523528768 0.6370055332637201044761206929953571 0.0303808119880234133643881633563351 1.0308518742465864340305052744875514 GT 1 -361647429.4801370746405080066082306874961585 0.1805922745103178819477476338990612 0.0167460113871554535621541173041688 1.0168878111182175838110813615192098 GT 1 -185976172215921643357430514896998162.2432160261891606965028935021638285 0.6911196322519143502545011100786312 0.0055552849135861401467784552421206 1.0055707728955566889314893013108285 GT 1 -10650358.4935682676416458715294285430063631 0.6646996811549984894227261811462629 0.0542933129723687829950659097456352 1.0558228140037186837573522996879991 GT 1 -8338.9575714938668910505841570172816865 0.2278030280609749500754772964198995 0.0015967632404489617517593556919658 1.0015980394255632276455423324677358 GT 1 -36.0350829230127909865408955763712424 0.0642061532767222970853407692091788 0.0395720400499019441813140875079036 1.0403763022411306397267513550801852 GT 1 -2351462354542054341299483109661.1849812844009063599568895169275191 1.4459584109557208314956862241975111 0.0379823224959571176159058409737409 1.0387224527014348495168559114981529 GT 1 -398673793702777742058929031405551941399401.1364165065601180384118725200685090 1.7229359614332393458119261763539341 0.0478361810024621494280647663756579 1.0490181802157002413844929358847326 GT 1 -2665002151666597433300555.6222487655088500749516794568470500 0.0056863454896845428549263838869534 0.0325760930952463384214074031278704 1.0331185063652632824006126382040438 GT 1 -23592541201702413756095510236.7873324935174322617961290868702867 0.1790509719290256490925262963221334 0.0905190896521499908698873861428993 1.0948812704164733488900636200629261 GT 1 -3871377623062824198524124713210573.6832404585422626242800604629093856 0.6327085393712662620466512323077742 0.0451606892962578727403137536991685 1.0462122137020862188475366628909118 GT 1 -19343863285561417151674868307337.2937057552360473631134255000905897 0.4428114949813126226022086475446043 0.0409058063768693300842376018992482 1.0417659882514067190039674601684740 GT 1 -1279708188019807286868835646708251.5425212870424641332261300739301364 0.4894863891171243992745592413456172 0.0377886958102570072808867099532873 1.0385212015112743155781174848675968 GT 1 -171602713115735608.8044503010249896238447529039381021 0.2091818914853069473950469346137571 0.0624382937926048727157150084890641 1.0644727033490545328667931786497324 GT 1 -831178707087174849912054650787935.2372387219541728529703613199391023 0.6252410536477192902924438392088246 0.0815613322410724127101055584820880 1.0850801509071133344261056654430897 GT 1 -774140303065615714649003.1453430848161807615894087362784595 0.5136430573123472509773729357300965 0.0329406296508752201121426994689802 1.0334953889821668283607872725424131 GT 1 -196087519.1885379767973180175424265033094984 0.6598838739060030955745809037707985 0.0541735756189655235274054552465335 1.0556962105064380867466532566842413 GT 1 -1419285156779909478933168439792.5041998227195609502382999222468688 2.2935509284733147190728085532519182 0.0939429563167761177016987901751720 1.1035192212655284462879074492622273 GT 2 -422805099972508319471790844454986.9356978932306162272685109748958097 0.6862242177866206925823121906443363 0.0665366774695225524330099765600469 1.0688536070448967749689232980121949 GT 1 -12977213376257467449088754349.3522573607844362919182828746955326 0.7225224194740036819552387965325357 0.0495997839770616978094137588106411 1.0508721030769197109672577621131895 GT 1 -44.9545309738402077108245000936217642 0.5027164503547207525602473155877295 0.0529892084724156441356600192483029 1.0544447903725134449590113270858755 GT 1 -1356972725490839.4087392511915383942257386572399456 1.1805193287373281290112154464419518 0.0932826076727899554574300461044987 1.0979244625054852956327373565017300 GT 1 -204657929826734033805475992280011594.8858543897318449874263899211711879 0.8803743145995606420935149708996437 0.0636971355105666768097188423651850 1.0658162816705825568965570823069796 GT 1 -6239164795214387962910.4929738830227537249051022371666801 0.4961430338437810041122361330003348 0.0788362859572289826449855097018482 1.0821175016911621697073018607412470 GT 1 -27984601029696529628668051354619518235.2740366644118213815742201543594648 0.8899971693362333069544387833427646 0.0397809521194308273262135997190800 1.0405938456725899630960017121091919 GT 1 -1154147645192.6095415220421381864834180861312367 0.7562534439549234502936191898967968 0.0448742371485425214393079292078395 1.0459122583219285044909668338678187 GT 1 -35974937070903820232502062167429.1524707656744352439039705441239953 0.0231873362266114357634445800702715 0.0618101821915684865527173094890238 1.0638029860475129770870429974840434 GT 1 -14952.8019722954754361169141595688044156 0.1807040472537898171457800600429377 0.0258991269704385701760868706106879 1.0262404149633933916749196545055518 GT 1 -150197950643668293148930319256.0658190349004024648658803538458164 0.1762097442904831490142253245046430 0.0728779880688809912565490994098150 1.0756701018712918790858604811811942 GT 1 -11213.7587582826231559293017207388630981 1.3858126304642016158338740643275118 0.0673483598506817271727487917663662 1.0697235239027313594872268205103569 GT 1 -4012150706043788.6315604458160648738096071375388364 0.9475445230830138417260088388621191 0.0517622039738850141953252943447173 1.0531499684921355743333527864519663 GT 1 -118443623510.3527204414421268376357660346209257 0.3831245564654710875048498349061388 0.0936570638518839326432592837916704 1.0983375278387642026525749185357137 GT 1 -3560895306014200599367.4089621162992848113731642048501475 0.3739412635520655631553409001903793 0.0380602256131125474402873969406992 1.0388034348636146199502669667835296 GT 1 -1086257474363720734445822434709362790377038.6171535015997645324255952786242742 1.7778934346362486261768703155076401 0.0063307111324444798238649852179991 1.0063508350616463040567752075903133 GT 1 -20700833567457.5219691179974815766707110547322239 1.5187569347874329923480115273617436 0.0942197652272333060955167772378822 1.0989585688391385885819086139673088 GT 1 -29467809516115.6401092460799821613092043689661356 0.0879770261026131011546726239343469 0.0524457977454946335433465610593583 1.0538711381160783653775823746410729 GT 1 -9800139711439925374.4005564244105535558915230465482942 1.6264415756841241852917623068995755 0.0058760207254459533717411689374796 1.0058933524630119956378850687819744 GT 1 -22040505536570.1567809877817597236739419711558131 0.0267949763206880572861633946860503 0.0197388329056695551584637953589385 1.0199362457865155505010558646748025 GT 1 -103110740803225.8255568242739768220213695954911918 0.8111698409034349971476059859533865 0.0128544200818989861096836964341561 1.0129377530412308799877508465535871 GT 1 -25.7767700799783066430153900096367001 2.4027365301884711668328829227086429 0.0156019780316022631493035944350376 1.0157249698451525191792861001110061 GT 1 -115520597840253589.4968928240785419023240455170250768 0.3450912840944025919293433069397400 0.0636823331614028213019392741690222 1.0658004724354315717337229707007477 GT 1 -837291514023591.2524312918463910528817302951489779 0.3650454275932823788812479203947528 0.0998770305041044790188886711165839 1.1052238922180162576835167349848858 GT 1 -7990189324177204164012935498.8736723919648349699141364401658738 1.6703366978511814701490730339359853 0.0891772739734992539975583272389695 1.0934069933839241089403597076663446 GT 1 -43205658.0821751434317063448711295298163522 1.4459431028261961030266626452215058 0.0870703819008934748008656634943608 1.0910964899686081840733262792045772 GT 1 -2779558673909.8676251334279593792393688946677906 0.5455535058843862634304254171323533 0.0918793344759068650000510494458565 1.0963780176637850092342190575878904 GT 1 -413973271628604792344113634250833197649.1667785247456713993681126434832799 0.1799658774071459578742400730712342 0.0006516421853083809273179317978005 1.0006518545963595647790979212875898 GT 1 -207641.4054765219729417441451018605414519 0.8139166621245727588937894184480176 0.0473085355161301325572342760075028 1.0484641796001123394798229064465771 GT 1 -56568731055494219607.2140078368482618320694323284572925 0.1043278436180972491781228783780000 0.0461184310697797553712861573419413 1.0472157568226329283349451318082340 GT 1 -4.7730403052766044777363804034637880 0.0397797839586210913443611228944729 0.0100460576013328986724511459837017 1.0100968597653510355489057711155532 GT 1 -1525176112580.5697105156894180590864451684242026 2.0359679492674935797487663164487834 0.0262020886435643440258784705339096 1.0265514800741652434015187490581658 GT 1 -2037457359.6911330256389463509895563871168240 0.3593731250377648562360740650395101 0.0852928563068620702422806089961428 1.0891513264747954166591323289218566 GT 1 -3444722455650964957409983.4291405427769633946115414317765138 0.1954931505937379505883161392962921 0.0943906529404270778702139708211224 1.0991472501867787619042432359547800 GT 1 -1706048799124119832053038524.4509087283104866797865090360165657 1.5996044788685281152011698846231035 0.0595930412548369802248482794905054 1.0614425625720535461014336203425691 GT 1 -185663230131767740393877361932927.2867888583067718373378493725552150 0.7624982043233939744043679856110407 0.0051911912996698028500196799441573 1.0052047123470862552867666726484128 GT 1 -903271338140231429254331812817817875843517.3891124413649519838427502554351190 0.0383465898257530516268919988599640 0.0494299662494595815694201206841649 1.0506934388100022460068667801781506 GT 1 -20992895853729801151606131647016038.9273729876704885487640403135117371 0.0876017807567766912469120374353259 0.0353875674635393981362724372180797 1.0360288826303455301496902427743948 GT 1 -9223795164740378404439562184232706884.8067526395368013274854199208280770 1.2524213822755054982209022702309918 0.0184391739656138181382537736299596 1.0186112946597195694266364833367761 GT 1 -158858715256388326002143065491157.0866546025495779822582802464864510 1.1574632911285582923612195242150174 0.0074978943393331634689156519554505 1.0075261448505818167597262916287432 GT 1 -1905325804.9500983928556517611290030218073901 0.6505293168012125210849738491169087 0.0788329426045137370242789583678598 1.0821138722096737405401305698678915 GT 1 -9961.3349524016272812810348478259819791 0.1626982229984906860523104222952477 0.0454572019845134207260297238435287 1.0465227986701605082256827198072606 GT 1 -1484538313153255606800374454644363060072.8320230868436648237416783001844818 0.3666403812474697439763250627461678 0.0583677883675817986867566160484894 1.0601405141560154943056624163179683 GT 1 -121136467.7398746636288679379400688276049839 1.0616718599128100010441286341075458 0.0122355823903969752450513597868144 1.0123110533814682849931797787426265 GT 1 -23102996133873.2054061557998051354476270035053666 0.7990855166421903314807298168649514 0.0360504892359932399181324674436681 1.0367163604693293646608467048300180 GT 1 -505.1322735666060929123192360210511448 0.1331107680048705956178315921138381 0.0751604232320380896744980092124045 1.0781349870316459949914168045614084 GT 1 -1094808929580148864261573195653291896544617.3550132976351046339327251341752997 0.0327402499007887389129319887882387 0.0883966041517463886464693960839056 1.0925502564658858300226852953773203 GT 1 -34303813993552091.0467833694866655347235418933706709 0.3162906847735199761494495474280801 0.0394419433348326997060700684120289 1.0402408543886810216936460183029432 GT 1 -74771514910.2940806626684479442721256037139166 0.5138884974969167447221368330433993 0.0956363148734608027390727986935622 1.1005236929376388584561724224309376 GT 1 -8179.3620619399188595576524907613323764 0.6439046026348818042270044119975504 0.0597715595174024261107102788199578 1.0616324114531018755878263547928169 GT 1 -337595758229.1443994536519417205480792816396652 1.3867608136906659084378334099886961 0.0704147447638994233054593509217536 1.0730167544172323202974590716965140 GT 1 -2530708951.4950428938821417449679312261478726 2.1278289326913030019785276083011361 0.0027369618460399396138479406659254 1.0027407141743300571890972236199487 GT 1 -11906576.2740968072332445395173782217209118 1.7123296601037369338087707725066010 0.0835046945729890857476136383019707 1.0871983339991723216697738261281677 GT 1 -724041753116757425677760521939613530730137.8935123063284012385591886141469711 0.1189686806100405371923569819381198 0.0993428151217130808135177670679839 1.1046305767077746350338283401894969 GT 1 -269748664693266052316403356054994053167.0010404065700208213725427814903977 0.1994635268711914390514398229324726 0.0343142389507792414951155257475671 1.0349167968117446972506862675305562 GT 1 -37923988724572412570148917.0423408553661556945644529007482098 0.4448367014177254079114019319521652 0.0225158613844167206039638962314476 1.0227732137344886792188477369470323 GT 1 -243060691263.2353446797782260372497814554100050 0.4434796743339988461162179212737463 0.0972817339341140462005044583732959 1.1023447719587609348705580324065904 GT 1 -479713471391916663573576899167380685026335.3555960595072954342486528161849116 2.8021528886190093293635527447627190 0.0514523669490950990402266174347701 1.0528232715207270073484192723148210 GT 1 -300414743.3961496456828243517434888747574627 0.9513380953690690637249744440556849 0.0790032242199049142780362596638868 1.0822987435146136732905331423235823 GT 1 -13676788164249956454537651.6170215542441438218775561709631006 0.2973993887734438679594186674848868 0.0808229936730091750751980971038454 1.0842765676353695186617377789217446 GT 1 -341854981750200729805814737.1717508478782767383915695206012002 0.6602729052180463406429466159604381 0.0256950362766681086549135709199835 1.0260309199078283573927561921533290 GT 1 -2788.5651264798513352564814691177131188 0.8994784824568053608999173565015455 0.0603416719470789237540651186644387 1.0622389505880082176066305993257879 GT 1 -2.3315116492250960565938826836640740 1.5464446050587105526158082936206506 0.0672514312254992181687689117555133 1.0696196012969483744113141669784270 GT 1 -34377185.9506907040545596022553448728759793 0.3770894230060485301101774673263485 0.0423788202145150053343824426150964 1.0433030074124904631748148326109026 GT 1 -16610029848822.4190208476129825711441506441449838 0.4745328761107981902348109835159666 0.0652096810367943690615644793961514 1.0674330326363520137395703694510319 GT 1 -386494912598758296329592191074.8439432348768150837206835448712026 0.7956242554385834149654597160324740 0.0265108687618080615167022365562923 1.0268686188565609851054820254034333 GT 1 -985165085870110.6975298405554584693230993449632883 0.3678559861998020966612512515622727 0.0815715913447795516407621366571521 1.0850913211260572908703572781788556 GT 1 -1178763936192828662.7219308488563768215129657920471620 0.2651412489192674295649828539018345 0.0857268616911280256882538859900075 1.0896259137589589423065018036962365 GT 1 -11082607919323579147380489372762.0013474820241612842055647238216696 0.3257375004500296297010930286210581 0.0663036376925386133837448954120218 1.0686039874969958964979821131703440 GT 1 -1142015921466680647921793238958494532768.8159190599435456585224769227164810 0.5235308394770237226204447101658803 0.0633228160336750682255045159378448 1.0654165769516948256853930221453415 GT 1 -342.5868557957672304727480683766499121 0.7323867476716673110316503124716898 0.0791319234596889473363424041076033 1.0824384923564804923836022528039581 GT 1 -6754651.4052684265833206768661741210322277 0.7230551964979651498927191132839097 0.0054038877150630639025815786806409 1.0054185415318440236764116039525310 GT 1 -484826102411282082809.3232803132848386300226128680435582 2.4299222743442999814089019290942330 0.0253989907617888487748737211553725 1.0257271130323161020511732191777424 GT 1 -40424.5577712151597127406898155484162694 0.2370185419247247997656677205810012 0.0069125726510021883840118401409019 1.0069365751579996645119082459302261 GT 1 -31278.0354828664246617153701854986946281 1.7543017476072145652656724332226577 0.0331711950660474415354924022703817 1.0337338364986380578513743853055630 GT 1 -225898234471861788370.1260360362417175142805987571173700 1.6688058978580099836081573048326520 0.0202594525479287432684689261487997 1.0204674898672114614232310256078356 GT 1 -82989607770715190.8824736621799572327408145592091347 1.1851577818094773253673128132423305 0.0380873449052274593480251530785523 1.0388316275583360283620313834233633 GT 1 -81546701319627617936220.7619936711491938016720992373447548 1.2231524265477156740610434865263924 0.0590332527669467208564566604804058 1.0608474777118462156698687310990137 GT 1 -519233034495334.4064077632893335064077367599744856 0.2259244052711848144085361525479691 0.0176606665418039957928097414928124 1.0178184768977522951384533163503152 GT 1 -843736442977759478348.1668863737740878363728483666263611 0.6201233249917513132436425352942810 0.0125683969582573066319667560111940 1.0126480473481736792428393528730851 GT 1 -11697662017756005813506574312086762636964291.1313977118207015741120851004983090 0.9154617542151554582405970187089053 0.0787882582200368615578247426930607 1.0820653649379816916374686364938611 GT 1 -92131263206466683.4956820289867399823329698105128324 0.8512836914270209585947478746850065 0.0352398768082706514002072546430061 1.0358757855469245646784245656506551 GT 1 -83080146.2821578160996006284475894874294565 0.0223992117080003669121343269799633 0.0368294696711195469297723037797777 1.0375248004844219390125505617648516 GT 1 -176343789.4231078775134398928871266499008363 0.4295081796465998347306853344463824 0.0021277429330654674297885807168924 1.0021300097941626589588918462862379 GT 1 -137592272746.5380203576112824845319663603830973 1.6241734791928434114558575856565460 0.0887236004216692547293991213525775 1.0929090253482342025793740854057466 GT 1 -4522149500453073802.8189467553390303634122789343419834 0.3591211386450728859217074898383080 0.0726967815994548096730042953903991 1.0754746704599423751055839768755199 GT 1 -206940614386785811627875716347.1667301781313628908593913019889670 0.8672010212763306960404360719880922 0.0967782891875694124652735003307610 1.1017872287778891414599737518643746 GT 1 -17593851.8143888930072881146902784968517133 2.0061624776049931493249944190044770 0.0698357775059446832709675325594838 1.0723941250968947620232582431637822 GT 1 -445730.7520149478780808769369382894296843 4.5459369506587333362941325671497087 0.0530406171352689896128836846087711 1.0544990770382287225024335667352866 LT 1 -100535143046937569270611918390608493.2207840266306201951523708026882227 1.0797207017709995553990181641378221 0.0775107769007225087063874819257787 1.0806795854128991035224700836629977 GT 1 -1066662402491914876287495410016999.3739885289783901579902363216301280 1.9044811968771062080239349702457317 0.0542815010121274926285277568364879 1.0558103239931924655646140979292709 GT 1 -8519278618693791833198845472163445662713778.1908949783910939101119095690447764 0.9223168291254927959024910044554057 0.0710265669768279122566209202000136 1.0736751379688456554349806028302507 GT 1 -44450662980061142322788967765262.0031395188292699040893707759452346 0.8474169199677848506212809580681864 0.0492872324450890499535224715240798 1.0505432940713650786182818183898527 GT 1 -256674303441979323131244.5971793180162927974679016715831528 1.0832248718166021014455021585138903 0.0621954709250773272379353177048870 1.0642137428704918197673360950736264 GT 1 -58635304443194904126797842644.7650727663542477834319063477605511 0.3537296756344167092946436478023244 0.0538156044224737385865899249712117 1.0553178075956438665555215007047942 GT 1 -330589319.3908561095051834160257187363009320 1.4765625751709495538302027294231295 0.0432810564222191639180411782564434 1.0442456155347324674648908163864527 GT 1 -7710256328525942231993307373382622302.9343003579707588721811243894586433 0.5026083621333098515731032205367539 0.0000691486047939405681468672131898 1.0000691509956689307907809335963566 GT 1 -232094052517920.8913713089608941798080327232475330 0.2176711754082305521293972878483058 0.0693396545185200407657726642992595 1.0718608958954770756182450188203270 GT 1 -4000515517068395296140116058398535330293.2156088646652743288697110183299794 0.3477683154810140648163229622816497 0.0965665391812677791189250063806396 1.1015528176842878482023597265676801 GT 1 -1695755278671933373037726038283755.7695759835191771641908196502650863 0.6413200612362744565888207696659408 0.0241113124644249238322027061317556 1.0244067487293742158434450897134320 GT 1 -12328716873441844173911745552619459127513371.2074121946960173923223986603828704 0.1511082344529157112745841592318414 0.0521962482517226746623150231570396 1.0536078110810062387288063242875329 GT 1 -1175982623018133.3776924477374573585385699530559693 3.1426324648084646157042706894724652 0.0195004737871694997376749873397641 1.0196931165556126449848926656105558 GT 1 -44723371347372.1088126910393720401212352424465923 6.6936142078133814256191888333505200 0.0725379907503793922897822908480430 1.0753034457172135677370559115081810 LT 1 -19.3502091922832647972973126258284999 0.3776501853882267851560748523234005 0.0461606553304498409826867998531855 1.0472600235289168214406667868482477 GT 1 -7649139349295472653305294077.6237683949187839620957447871872073 1.0913001810262193243499582392365427 0.0121986414517376149449621903332849 1.0122736555493034562298950923968717 GT 1 -7520595564398324.4948192299610797249987624278611062 0.7563401689021258150456066723932478 0.0281270264891881107543132042371511 1.0285301687502817511936068775002188 GT 1 -1648.1447312626893322931669290494012931 1.0611678561475987073250585445618525 0.0586007053163263597076546875625120 1.0603878992360326601778396232581784 GT 1 -24405149067151.1930178143651279760598296759603191 0.0661186531481869359214441195101132 0.0924373652931660161814057010731987 1.0969926962641314829263113493421191 GT 1 -418260154985490986319731170484074.8186591053914418429510362199055902 0.1562967492607822563734324405288738 0.0314155057288598208529537235476126 1.0319195575335245437914965331305679 GT 1 -85999891650730886839386985613733.2271245529750218296483868701765929 0.5774732823429395633980750724037514 0.0022202227329235066829861128745282 1.0022226910816147576462347168096646 GT 1 -59441.7028577332476250329646329914927272 0.5029651283204713035159565394257411 0.0402204922957561651702040865360728 1.0410517003753711250784745396113795 GT 1 -20468378779010028758971578209228255615.1878983569223641613285276526238231 2.1417811868795004739769900799322894 0.0781426208730450742142550812128122 1.0813647538040013588197625447911129 GT 1 -5668224548.4604717297558913096003859963853780 1.8360487364884967126747573707562943 0.0257747576896647071191125134332466 1.0261127471361609968942435770062661 GT 1 -1622050714651592597906800743516.1627623897446077742225978980567422 1.6760768843611346263366618978637270 0.0551853749522432402873133845035419 1.0567665347016902718294510956618809 GT 1 -30658917809072487710005.2936517989647399318096059883529904 0.5308620775045635847663093292701022 0.0723961417183647956021232669226315 1.0751505141854832842218973903423688 GT 1 -10608370652516.8734582362676985074369197459897901 1.1341253472623877277763669492707333 0.0627737738172694536827955048094033 1.0648305891903802113756932126043290 GT 1 -172190927881.9004481810805377427572677758475441 1.3438092554594224841110784714316925 0.0100147943039751287925524938503470 1.0100652797065492759185608465291432 GT 1 -7748.6905826851979995168441434411501330 0.1246128566533189528191288303489942 0.0366739499883023166046848878761155 1.0373633471138402308575331585632981 GT 1 -1.5720265735190646202102075637257891 2.9488907826226027046938762753855787 0.0074645316777320548366606663139032 1.0074925307144651803606181163582580 GT 1 -165598040823304999355.5825656224593438365954736154156174 0.4469364603470217170772825824379075 0.0841316441935605147065453611898840 1.0878826410047094850765159637754101 GT 1 -3544272.9982532700770485235963404687047751 0.1783304719321710772213876138629424 0.0675418341372637505503384944932111 1.0699309908161027230242941478498585 GT 1 -17678048569019531780.0188302923543353406503099151145467 1.9646943614572953184646032634181561 0.0308169102796980838227731160598028 1.0313017378598471442697001125627464 GT 1 -4730010835282885770.2369737043979982205030595596737785 0.9573416658263359846851592164319953 0.0311486557527829152089075941436513 1.0316440903697000044994030741273282 GT 1 -289716896177620454922019.6362045794165348506602620320690655 0.4412026791331677508290192021191211 0.0243662967998500089959641487882940 1.0246680671114604924312231209648120 GT 1 -30990056742488372490856279411551309.9219107392131505720754597173470178 0.8718849996922128824420184885895697 0.0971297937024343510541471629610693 1.1021764720007539462383380834407391 GT 1 -60048605135261787139517068707193554462991.8929678992027005869446660099777558 0.2828427072180687490629209985044109 0.0245297701673656008379004934501380 1.0248356372394587626738717353578050 GT 1 -197175748.1321064852426210560675004426779382 1.1891131775595019779310719547117899 0.0226573699671021617097615060290811 1.0229179923769772461734987419308687 GT 1 -1184005180072256219141709177366671395.4353059412455768171564528107964421 1.2781796028248877013515846571254882 0.0493938336887070473071488356298868 1.0506554280661735472187229008513137 GT 1 -286342726506968640814076157637.1252099299035047436305972125053915 0.7374779870448713939223058169603230 0.0027467138138167841583560534299097 1.0027504929539348303431661296808504 GT 1 -1193202213360054222278.3573476843459733228308911297947887 0.5571503728747070004470578177907612 0.0471979386613768338627411053759717 1.0483480974897522406159804805463487 GT 1 -956928332.7136292515595193106929453737102451 1.3178989512588107046844481712847572 0.0950417075130041865713512196564312 1.0998664219939154970430832353734556 GT 1 -45682488263188813033148342.9515021456893502181217533870594720 0.7266946523678830260150876874324948 0.0698927016946594101785480037817864 1.0724553249680920940636009673022457 GT 1 -89623726.7701666034656122520475935532881809 2.8590995650892981154314986335376243 0.0245231167141774081580353963538999 1.0248288164977344179481716464631695 GT 1 -433388029685857495253899.9620573684679346464584952718084147 0.1674121611827772037603364971264683 0.0077159764218301070567382406995623 1.0077458985864245873311543626525715 GT 1 -2536115438397004020012370270800.5125437391094227411501759453466500 0.9094034686440272656165607743462217 0.0185695067526976393405308892444521 1.0187440846379483357055402642949257 GT 1 -137226194528023586.8285762180934823886021986184211844 0.6970731150225706299402987911980763 0.0816917194698838455813130862277076 1.0852221271648138426018962130619368 GT 1 -92743058297389893992400154899612946574773.1684308455209138604633425080381063 2.8678433785516555319544569385896313 0.0327980034995184063560970997653429 1.0333479154772313450600952254123104 GT 1 -20956428239264862267478.6096457921340959107542068374792199 1.9260652544931031409603364683505188 0.0030543065301920781485402204737817 1.0030589804438518912729980777094727 GT 1 -6652602652377.7693304396655179009793975028980935 0.1371036665220263516058918835095753 0.0913394782635420027568754608538907 1.0957837179957349440897914017079868 GT 1 -1071337242904720058420.1804667443101359602786028913075004 0.0569527180411556294689947351995122 0.0135791453650273977022495011531566 1.0136721851870312945801910310889612 GT 1 -13276680284765765864342.0242330862794192855549847162311013 0.0953753955077519991933050586452266 0.0330605539034325296928159650821532 1.0336194058654154039254863675498475 GT 1 -4675652834918980615093301257910254778420.1696352037862174204216646664774840 1.7297432519140317754211190686916970 0.0083047767008133871282259211542601 1.0083394534809090621177748136801600 GT 1 -10505791525.7738209967896522343017874703827211 0.6428882572831665573071549341865920 0.0036721953197401117282633030026413 1.0036789543811092338814303232151269 GT 1 -11089704.5044833113766681662105950795400345 0.7781059142271288377151644835858567 0.0701007468481831709806628859703703 1.0726790286472306231094700574884676 GT 1 -10618352424177464841909044051.4100966014237339774067751649919496 0.9118350053938518416126002601561193 0.0827040824190458778092788177437045 1.0863251569496082289152225491370722 GT 1 -4034591091627674584685713.3970523691059785935190137860973063 0.3792076539487483416620673354239370 0.0139693268449391833129564677126535 1.0140678161868342096494051437066339 GT 1 -49560.8359822124517443965052679916784216 0.9178115505366618424327091086345785 0.0707932361893058854610227426427126 1.0734239989359940942794849768310450 GT 1 -261601.9206018973359838263627325884660593 0.3824563192525051213159376704013918 0.0242298363088607668305354802222324 1.0245282083220761416684839840369824 GT 1 -13246570082056676774.2879585170125202726823223429806464 0.1735241642690336078811148233947442 0.0032295495387123854185617766076219 1.0032347757891472173493681388463390 GT 1 -113870277232385520075070758211049.2468968246859172183502317173215683 0.6245074372365978632964541489352880 0.0235831234297569388969226587224794 1.0238656561286399782907817086026304 GT 1 -730361039959758346686569307573.5988922975382623583114808565796073 0.1459938706609714613809645223996924 0.0503938344420360033595191227986569 1.0517079429129337919194521186699952 GT 1 -80713883174017530871598905794492284514779.5597459398537968160814807996980425 1.3437276176835471780341548936530903 0.0723889846950902977988013337928134 1.0751427986120729684853627862447202 GT 1 -182120655289129277001773.1901377514011014035583991275840036 0.6100808076343781663926018384459345 0.0880416753771864263690464360152125 1.0921609866374424376010825148836870 GT 1 -45210514869242.1995109448969946734747707079640569 0.6513498309780795752497985388791922 0.0164515536940557153685042154690739 1.0165883832854348636574890891077706 GT 1 -42483457089.9901268342769294493258011324851139 0.3556261509053470898531685658965007 0.0740455639151742191405427240062863 1.0769302506385487174728979503115437 GT 1 -160391118681305.3973197706026811998398727880390593 0.7156397108185632080424659920780882 0.0708551505080442258205181333908671 1.0734906325249425442785208587889623 GT 1 -153513.9003359412164571376484130312803885 0.3715645813574999685368676969609568 0.0904713208412602874230861017215643 1.0948287486362955524177065846462192 GT 1 -266076.1634052444177321336156654859332740 0.6543578999942528285596143514805734 0.0230254659027216631286743690870739 1.0232946926861475471916329436685982 GT 1 -8171362232850655567812518.1758133119222244878485009293096333 0.4853174935018091506611521695936187 0.0469618883255539526948598678883947 1.0481003848637173638645875852492774 GT 1 -52054773646642734264963252343055392706461.0440782624715508936916423672743186 0.3157061602362569382724320149805859 0.0384961546898268439875978997075369 1.0392567146787483550753954531960702 GT 1 -106.2917767158410845206176475038910649 2.6858106086678166425705344442876139 0.0114724656462259498674490101367093 1.0115387820767756903127416680321860 GT 1 -4331232933086415431166416444025.1993358481122127272613204282888321 2.3764156361169955586403619277254736 0.0575993973458306409898315197311249 1.0593248265962996568316172794176943 GT 1 -14338132.9805304592556838583788063479463795 1.1574766288959439353445980131325031 0.0969855610865596770130678250217876 1.1020167357556246190340862898533201 GT 1 -21104334888680221980.6349070175824418525492497032109105 0.7959017683959760384779569932917628 0.0651267343022290314278902401534309 1.0673443035887305432316149057685439 GT 1 -6446333377174135821808217481059285677490030.3890692993176748277205814838795894 2.7541005517921009848906016238080573 0.0232646701081941203598229576336055 1.0235395644668318269614158183759459 GT 1 -318527621696838241997070.0922291515199072014700496495273791 0.9314384706551638344698454137549955 0.0863359733933183848254084656501306 1.0902923608736915042997654693742937 GT 1 -17400409192477648388938346895131345608.3583127635727306381675003804485495 0.5859955178924202937232184087754480 0.0714888279452075481191193440625338 1.0741728658925754401176824437905681 GT 1 -44764664804531154077458642041802.2144301851294827586388528976661778 1.1025936068033262380243505378465395 0.0043870287212208326271791240383182 1.0043966799689320638037941730476384 GT 1 -13623930837751051260936907887574335.8809783554901986053730519984320324 2.1994465375746167494887144537366076 0.0547490810209724841689649096516517 1.0563048640041857469440331119513142 GT 1 -179491414.4148574250808616124788309420902280 2.9934666305966044247167542788606888 0.0176678445627755547903410807381851 1.0178257839931238746079378308763291 GT 1 -530.6137591859744300695233569309489433 0.5187299160814946770400627574715710 0.0814593949797043439186386161336396 1.0849691673342628059220648729553070 GT 1 -5926463779802173781284937549590.9140377404407664431492213237748420 0.1201485709024398657167482311515611 0.0059115681839136455726428361290003 1.0059291106730233497619921500265152 GT 1 -70219561926597128.0587919192610046530759247684051019 1.1234348742418445500333120557604462 0.0875753587738279016432039424700151 1.0916497818934354762770550159637532 GT 1 -233670830429596.7179549021306602970667891951465840 0.7512738781770204888078714180146092 0.0919514134881777861124715930974146 1.0964573924381657169400728308648293 GT 1 -162740274620431.7525116395268013159333386459427650 2.6383503674232839911070086445778808 0.0848344838967559851997420602411723 1.0925797793764798040402038458399435 LT 2 -4186421086.9945545410006167903877290966262363 1.1257053817407430880793321788329794 0.0459328487941339363147689875689785 1.0470212209063659017244913867942823 GT 1 -2950375372868313383.6110946316128596346742778060619986 0.8837889901274314111634708016440143 0.0850103528019595118452380546901047 1.0888425283082862700557129713881472 GT 1 -34739634866086323097210580635329.1944927470592666628599666851525650 0.1141739210209828314751991858150916 0.0829889844832636527263450606255584 1.0866357942386769967308474507650681 GT 1 -21159.7161950008977310796865327397723323 2.1634771102752908173699627354020742 0.0940414365094580250857804912644917 1.0987617096467184355020812243762183 GT 1 -152750465502683510960659754557480427111.3637695598696566133602266441386803 0.7992901224861083904551339901095978 0.0677044719111962062814800954430910 1.0701054243349876729762607037662322 GT 1 -12380649880123621335109039702202717168766.8855387546585115253035180524482827 0.6718116697444160353351712453894406 0.0191299501791322471858816443740734 1.0193152952444508968149648214956130 GT 1 -658.1082965593754256928898662152163383 0.0331260268209355601990149219788294 0.0750558902397322754874113880517708 1.0780219651759788796672085869396540 GT 1 -85133267634582380.1318191165659628362593789461938108 0.4517144484772072597846431463835223 0.0959496210389494543395727689236703 1.1008701912035449925529059886226051 GT 1 -1702488.1853987721758357572349843310662974 0.3274833069859765679491305505445113 0.0582877881716794153173468007599210 1.0600555586959796763635762286503070 GT 1 -34108133314479449109492331.8150755577607372387862643254707468 0.5542714280620689648891732019155396 0.0117422073931028945179948656798474 1.0118116915777439755527881709672827 GT 1 -3860644320105180001383246711561.6383065317046236170769344273214277 2.1127241120454164448107988405047221 0.0797377858751893162884642366190686 1.0830966341951557331984939174153412 GT 1 -20579946144084030570696027.7467706887231736296823132200760290 3.6693810832671839554604731027761121 0.0704347464315574935218558432130333 1.0730382714139080797411994376352652 LT 1 -5828.1820386764679247339629864491305954 4.2543312604612051936399133745485875 0.0867767471228101936945929223162498 1.0907749015788509579905179406422308 LT 1 -194600720871633490140.9945516806820168482927700587543394 0.2609061461253492468539316067563267 0.0680431540604391342376562821644257 1.0704687680085023450784067226815621 GT 1 -3786.6987641628070245294204511929569459 0.1588484479971028571985370461689762 0.0154835789234095556073081057103919 1.0156047014315059466727611320932915 GT 1 -862133442550480172009995.0707933934191572262906813934168871 1.2249701179397743650046718812385002 0.0221623155723011379420369011342581 1.0224115895641839198004650780426844 GT 1 -53098.2730280234172461360671372772557712 0.4932648412813871643711185896558968 0.0875109306007522114245240775334804 1.0915791723377865373977194976238562 GT 1 -10338944435803756805639195605.0405955976885582590951236039344447 0.0874622309442149569373359519496760 0.0015538744205705799842465379922171 1.0015550829355105782483270703459264 GT 1 -277800.6109795999461735030626007738393348 0.2048051438341197796861702920956450 0.0679249417224735471485980888365668 1.0703419329067461738041193594800602 GT 1 -1768120568824968788996533753072.4036130815661348034441227515935680 0.1387113548007866920594870474835477 0.0375196003336866142832456399194983 1.0382415770105975087490417980151014 GT 1 -1190163911361317.6459457362775722738797752978171551 1.7471690495171782473260404424949043 0.0329806797974831258972811495782537 1.0335368042015260853247391644268478 GT 1 -3371480937390891053906795524238419954.4612583702371101022561923588364459 1.9239941586095204569081260923884934 0.0653430548266140101964261685734900 1.0675757205769048907898236349854783 GT 1 -11505003.4057645984625181609832644940643410 2.4233692771990769116235097451964805 0.0488720055465050151392160223929039 1.0501066361623788862077625389981363 GT 1 -1480827226646.5677874280367806211156505107749525 0.0241139497999340636072923774227357 0.0963820392963569193249190031354328 1.1013486177557694602796442012470489 GT 1 -36901855180514525706962.0863764500370129692191264243337786 0.9967569294401825494493092706072233 0.0506483229693371711825705730424620 1.0519759725901780107219688767318796 GT 1 -478.2123804106886748808954759658838797 0.7171828802391823728412994218214239 0.0041204677607463645587168922487151 1.0041289802797838872375756062311419 GT 1 -92205755218161398.3111211538885223194685485034534338 0.2686669261177192942870031977660653 0.0931368421179964798812904107497051 1.0977637135880020941480374336919774 GT 1 -28996525052995238.1960507714540205924950644166951606 0.5561008208501693638614787553674746 0.0721283239566492507555971859662523 1.0748618358832141441625497094289015 GT 1 -99931514004380989108149.1473839657120233399282539163811920 1.1819588621285730048038572858072893 0.0033002704159728225916324991595399 1.0033057283200634295231165578458267 GT 1 -1.6511220632648369967592420790343591 0.6653196976946445572411774265547199 0.0876768999421269864062623486261471 1.0917610752696173710288345382710765 GT 1 -1474073934462287744727419559359029700.5289819326120281703827316355890742 0.5818356388921936499665266596136261 0.0908887624622910672092659201630081 1.0952878187628549852736981207114473 GT 1 -9747082.8386425373200003351315424798935680 0.1638523783468908861297330550257619 0.0626972235094838028408003042669679 1.0647489150122596949982989805622354 GT 1 -2592377343861544582423485862104641590464.0989570281607581421025936563553467 4.5768969912642603227229348151948612 0.0085160519668345619629349971607314 1.0085525207315887049257562444324214 GT 1 -399835382197360036391338624661936421646299.5109857364677255710759863563749245 0.2047055341142799212968791461032608 0.0374013403686209534864422903186784 1.0381187145602028040422176319904963 GT 1 -5437309376458568191708076908038.5658227560780609055126227820913593 0.5952001720770495278172998906997377 0.0883022832415166743008610959149700 1.0924467947725191184545852091334552 GT 1 -11733728185898498029120312431617013440063204.5824105738243508049772785893790472 3.1010952161621034847250252385127307 0.0422811777159189137928093909067680 1.0432010490149472867941583142799537 GT 1 -14380285169.1098137099223150914286338823385198 0.0218672624869404007723822584410612 0.0590401843432401343204350225269281 1.0608548441802622849456342072624082 GT 1 -3069.6824389091023618661984117787010253 0.1962143524370752519435792857889683 0.0804609901686292798009127579290572 1.0838828107899666591152829067180345 GT 1 -1338704457599611492093096957.1955665561071925456027563660762560 5.9001131065482781529730642326116756 0.0896265748705724317747042505404527 1.0939004063596801064239462821173314 LT 1 -470227157700413157133709791709924179.7504672158344280819273811674352806 1.4445167157882648967076137992897230 0.0635385257144723155577215005857300 1.0656468959201283986664150429832585 GT 1 -1473891627384133203.5375542405005399518498894207413559 0.0879966093919633234720116997430334 0.0738351914137756207075365127527419 1.0767030811375475346385110387101011 GT 1 -1637931544270446798654695477570981380883.2719103879484921146179358232098520 0.4455933598065392046494638869429730 0.0630341912223994100255762673086635 1.0651084875081066726517042772498166 GT 1 -985905172745462513.7881701430991902419402434370520471 1.5595067664359672037190368185206169 0.0757937925862906514972019891422631 1.0788200640421154798430207237860481 GT 1 -12296933644355285446216.3899357467304158387194053038029274 0.0286149362750507115877580046492188 0.0899444091600218502302860834451795 1.0942495925019474044967415589302517 GT 1 -65.2809845479855432447158050103172461 2.1187223739916597392925303803344321 0.0071563569877676780607634030787411 1.0071820865371490647370426517440669 GT 1 -80120360859188404944626256703.1131053947068271782548722183359269 0.7853009430057219690881522292806769 0.0860122465666217134884802998526503 1.0899381064871418789853262092694488 GT 1 -88460957822798489.7099075623472548430519679933933763 0.3042879972622794227999508660638505 0.0123626848479519089718201523790886 1.0124397385553469592882607559888371 GT 1 -17708581520946600750840574825023.5557196426895680267352929047508503 1.5532418321454715534497579787125764 0.0658602484221792854252380681764392 1.0681292249893095636615051261112885 GT 1 -848847270402173133964330639029195252034.4234781396648619924187306913652211 0.9299127085757952892632362158829927 0.0797255659276815102040517563327929 1.0830833555163313202090758671292888 GT 1 -168584533479667148119181216665824780353.5441919501471915952462983495077199 1.0016112806317291235939710169720290 0.0402014745173245604469395544331037 1.0410318858347758117675577153567682 GT 1 -1721515450796968.0814086499996645013140915558954759 0.9625540653584938808149299636305662 0.0828136076377653471091395674330780 1.0864445641722954797106964112365826 GT 1 -65755300923025975411026.5821658960554717314081685931412670 0.8842421802744042247222243157589917 0.0161709558737395191462394674358154 1.0163031326677131053600347863126116 GT 1 -10409331434.6893333919938024840165770478945029 0.2002510042106881744385936830778294 0.0523965465220705906872725816308139 1.0538191622571980697084101559745115 GT 1 -1155659950720.5032823612276255547854570940759638 2.0665624875020017312378904890546539 0.0979425145483131225076217869314902 1.1030770298508225036041122541003119 GT 1 -1224448786.6025564800709165262735611454257072 1.0788256897690671619584729252094060 0.0286501307062208189548819970128996 1.0290685570587614898198979716705067 GT 1 -2554181.4208783323499134485138164601907347 5.2940095123430751267006919060753514 0.0788751437562799386868848702222513 1.0821596859609703199712601126740861 LT 1 -9951432911824610.4873951574765619388664783894789035 0.9660430665040578291176135304232681 0.0694606711928013368353113450494661 1.0719909374768545144566067994634403 GT 1 -168577994711041723154221210157682123823045.5254859377457565035962978413046973 0.2636000723950876137195171900085972 0.0834093299459157658256991764537730 1.0870942858220164996607856699176167 GT 1 -34311860.4002024011485145795135463742752149 0.6925255136596008313318425555532334 0.0595820935354111710178467434774897 1.0614309211697853854851371487157937 GT 1 -18115366046278043890328552662217.7923406629548356332822585605713479 0.1272687279791779156258918855064578 0.0858160684164158433584748783762727 1.0897234897172108285524448559845568 GT 1 -16662176981699.3295496915672605758847907511763793 0.1037881031814565980067213939437384 0.0415927927110865745830454047407451 1.0424825315230664021778576025627903 GT 1 -38993719656401994192215456.4420374367422301799697544365319341 0.3373606122777000783695973440748591 0.0741985477297558310897751448110421 1.0770954817209950799057833253792939 GT 1 -41301667572920444276281675387.7285032453362853419104530464292028 1.4689439574642708185598236491201490 0.0069346834217223554215298460429687 1.0069588400827781689081174574394526 GT 1 -772515.7190080652754899757768445526355431 0.3136892585556519174187702170566901 0.0971092599324260728496879060446245 1.1021537294887392787644722880666339 GT 1 -64440328860914729.5454546699904475301709546844901437 1.4401762784371388585920836207075810 0.0019633879315223983645657744221484 1.0019653179042110365728624979290070 GT 1 -59166166065534201326516.9625359741570899834038771735149338 3.8759235550914528144238654679899450 0.0880441284926529972375532728921218 1.0921636765835723346954601849279255 LT 1 -883081.0831588013265408672398980489369528 0.0702888406846373269226152483075166 0.0034449078686727021184332506715123 1.0034508552264458940954331174653803 GT 1 -4505031916327452.1204323372076826075294002140936016 2.2243259352757697159527214058562264 0.0780787591395668966894882392142263 1.0812954811344829844860355529173910 GT 1 -178610398117573060762957120716838095.2129065484218033177011599698270662 1.0178272977421631624557038844487931 0.0775324950068508428349956482701965 1.0807031286275432675595444258303442 GT 1 -135394194435007939925221859933741778088.3699639918604858421984941778090266 0.9750988907457665240364776730213004 0.0944582606339517916033369102640193 1.0992219073416266683182132902943897 GT 1 -135.3684992970240672623258131631367688 0.0675064806244123174002946992007082 0.0410479190902963816737705971264077 1.0419141731159472958925667874082769 GT 1 -198269442511757698461736849.5076845946333949612491136247087492 0.0487756268435783433988234818194796 0.0567433485879099211045362166797799 1.0584168685727676495944368549038157 GT 1 -29455248799918563372740658924.8993287463029018025629761800640841 1.8801082929033440437563929144386146 0.0668937774583381800254792987302692 1.0692362340883038814784781292449992 GT 1 -2850791592810.1430550816442716985354548327583385 1.5275338222741793648327024740845762 0.0949846121523082363240147128322049 1.0998033322801420562182628434072854 GT 1 -1570338428212183352140405722012903405.4020738800639226079497557012277090 0.3676451545175019101727297063336866 0.0885870836897308801465837582258117 1.0927592283082190791867113838922983 GT 1 -118375008358.8690799184254804228143120399649223 2.1584753928825764519841193449771028 0.0541760490414704641906714186407929 1.0556988256012116101857467001084071 GT 1 -10201449567455852406287280299519272483659.3637396758648892012627173255597625 2.6558473897453347193628718879694768 0.0903607854634167193804967964602672 1.0947072256274928130456924518388551 LT 1 -98648157576435964015707679.6685837225644961522005290936894813 0.6847566222213472724249305391200185 0.0597717510315793158758357301947632 1.0616326151421078113496973182915027 GT 1 -652940530568810978.4416122534969647909173464145112305 0.5705204979047598455257991033398588 0.0819526977052871203973542014938582 1.0855063621349919414521189656312075 GT 1 -27785527686103078611198994237886855669.0993844212135447909661994599175698 0.0366644777960194010363068811420235 0.0654822317914917110727088274571298 1.0677246386680159076098058967236720 GT 1 -4486170254490082516618694758898.3587076061904151363280717690585950 0.7018899777724717257220139657494671 0.0799122272592770715707206273135787 1.0832862083368735161348959913046091 GT 1 -2652496836727873260253.7827568492906673012428129005246441 0.9992992390789165633403404984080364 0.0172754667552715534239819251220760 1.0174264287837003370417825435410630 GT 1 -1297742920148506196413162968031.9568716898306121984720140779725905 0.1157458540075592371561459055677911 0.0686239225207612997836813300453488 1.0710921332395132795483492723005710 GT 1 -17044226948.5970989754611047373446600824180353 0.3374469287239102691122863749054494 0.0046935620959861879004878294338941 1.0047046114459910448528278599265420 GT 1 -133706478446646839484637762975860911966.3146034199151041288405167533137627 0.6387345071275851542615221816920695 0.0533301567649755572835938545117623 1.0548048809706694000785307721898515 GT 1 -620351889998304305315959649738150647955.8270514851178449780212220455866033 0.1596227868941979095068045248569932 0.0813523547834934763178112094589788 1.0848526412283308855121886966121616 GT 1 -41379050.1177215784342739785263569518448491 0.0741717878034789878511635369119116 0.0202651370380465202345128530617662 1.0204732919202380843152327221161543 GT 1 -6251032492961342703276284001593244338005.8298802719174408399963976712029123 0.2086872026713141734998795613604893 0.0273269151704197344242039385945435 1.0277072400667565394758236534307338 GT 1 -88734102980103660.0194286706996205976029533443097293 1.9555827278745223808683240901825493 0.0247908626177498105329678253342975 1.0251033311068688087221624022842049 GT 1 -64950840483235766975909518292216199.2574666040136595581866613950897413 0.4894849147588147987477310363037378 0.0561940845809719215362078739941649 1.0578347320478810262054319079967821 GT 1 -55474051.7042928634266827123136342408393811 0.5241318614367520195472803688605547 0.0621963182929222130031623907394149 1.0642146464364284740202939731448958 GT 1 -540.1183489133200118744564664477779008 1.5950704750216366209735371161030720 0.0882999753400206642692959419610940 1.0924442633429318295125293108421682 GT 1 -21460177.4430174856551009735407263324775357 0.6296219814856180479609969532759240 0.0992271282164570438350716290468794 1.1045021377434226701961929985793458 GT 1 -100693015879484296231475.8533057072726017908189067984156998 0.5732133400395715944814968754235918 0.0779680358644477857791345405293757 1.0811753877666554351430973076921846 GT 1 -8290350549101.8179369650276180511621193619784672 0.8899878742958429214102318622179850 0.0613124797745416287520399522241360 1.0632726344698077782875489586873951 GT 1 -1403465304201280788889275926534772688.1744231404155841882126380822579424 1.2805940438783670815738382543451157 0.0094217228218887398569738176180153 1.0094663880224996287657092413700571 GT 1 -372648173372176694.4631882843422001579099317904451014 0.4571564837483491702049373215602730 0.0993510028870041763735159090481829 1.1046396676278780687027715637748497 GT 1 -129.7853980025754607630942156572018719 0.0653765023396488436749022094178083 0.0161852487605795332417258511776484 1.0163176605887463015053384988820141 GT 1 -2748267.2066742477395048480104006375529753 0.4677830721327616901532591287147064 0.0955695118823905393037596299658589 1.1004498282690228351238230550597522 GT 1 -386701818899.9452337969907733907478341133586534 0.0949448097283456991805848073315118 0.0411768331673900884081939294425688 1.0420486143936096714581323857096693 GT 1 -3116767641790843194.6718972684499179788251281101886731 0.0794291994161538390147152528736548 0.0809511972247855154252179839535954 1.0844160538196558988494259866298384 GT 1 -41979011413323617669266176723708621455214.6547938280915755237974553402501822 0.4362995238391506813033645422183712 0.0199353878833967236545182516044533 1.0201367787596267496625841118325934 GT 1 -13886436474225.4010508174096658571422453684141690 0.4583118379624483597662440773693864 0.0644768515943398961284895764525332 1.0666493891533290547117787363008663 GT 1 -41327995062753098174763000111541739907461.2543692017519272448504566649373817 0.5441002406333483634459616131524566 0.0923627601274425271044156983266718 1.0969104957673043391594938375465062 GT 1 -144264491471533542.6846944759163061169017931226645705 0.4083038783554507488608801916755264 0.0526557283368995302521347818161750 1.0540927126174602351965821047115178 GT 1 -2359280374056076580.2472454628416688153093436099336168 3.1542891899234094325434531001588416 0.0258774352794378395843508570112457 1.0262181467875965977801364251770244 GT 1 -400592362100028097125450622711977421701388.0664017995020512581751755941313349 4.6238077568149836035317053301061499 0.0629895651565105841234179187625742 1.0650608603665682821467656831083176 LT 1 -11263826529240752.9415104707395801962871147974092166 0.6694788614413185124925089186092835 0.0568866096065225401581392752517572 1.0585687592577479127784530922607471 GT 1 -81645496793763107064345365171257073511982.1579965668821093510233853100425265 0.3390570161297479630321944150090582 0.0503358030235044878092262409265294 1.0516468337420707924744131715442583 GT 1 -15197315246.6509844010427858231068266435592792 0.3328114414582874847676622467498617 0.0072747541109068070807279794536409 1.0073013441705066923166489717344328 GT 1 -1885035365082904586954657474368.7675698019081024141017528610036198 1.5186656078815805765722771171613184 0.0500402794144916586438037575071837 1.0513356946701052396470470558195904 GT 1 -298148902432508.0364972948338432961775646096766020 1.5472394407657820350195010997441529 0.0760657896285776722039549949312887 1.0791144107720861483223155767142699 GT 1 -3883431399942748049037.1919787917596102035201887271595682 2.0416962592208273133723370239712482 0.0931545374213073305965358867192713 1.0977832264282806141103803907032359 GT 1 -24315854747926485057448431161832728977666.0289854208796980612747774713662614 0.4932172434050980393151887423771647 0.0066493015956009770374489851204299 1.0066715066884314609909477929291804 GT 1 -1425250490.4586967348391152684966182686241920 0.3684778720989719931600665343830382 0.0724471788389000650693935632802930 1.0752055360832169852983005197509002 GT 1 -9184716884562291712081363226479970501.7921187730995477634697903124096562 1.4850039952973401228748105055547669 0.0568035940879014403570141349903086 1.0584807402920008385006142612717853 GT 1 -13543942439812625857700111913892508372244990.5039633369180449848248974053613111 0.9992159426068831912553588520883756 0.0467979071450332612569915949413706 1.0479283381504694279163040751954340 GT 1 -5769420913453065819079657671.8435153932834526427778967920266793 1.4742166439732352646641204824226350 0.0644011208113977733746458041116656 1.0665684422328539183697375993598075 GT 1 -5901002565802995805703.8766782771500023233219076748048099 1.0234417166652739972709348936131912 0.0766036442314818773920277382476872 1.0796967154531871515959543913353878 GT 1 -587980429824904136483314653403780.2368115175511150574510083175075663 0.7250200051420696267759221895481790 0.0360902707024569829086468742067058 1.0367576305637872144909069739630142 GT 1 -1222027718459605697159739841.5260080846020701587551185442771789 0.2016400488424719836957615629460546 0.0180699504859665850225624077670399 1.0182352058389389725906119735454155 GT 1 -2499017001443749.5377659091285912423901064359980566 2.0105221748922532312670627420794217 0.0984836184498706631994297633203476 1.1036770650672254460560062411749728 GT 1 -9969491347934107972232381512.1536125352940155235785654544334926 1.0544710677973525477728087742827442 0.0922975780355213792651617921921632 1.0968386832097764559764417508776413 GT 1 -319436537596382585.6127747373241980319191046312453468 4.8245269463287924199336230434234515 0.0743631864541060245119590190777148 1.0772733312640492039083404090349483 LT 1 -78285593266540152175.4309463368173213676296879560787897 2.1525522998650442488592185223874482 0.0986363407873352612345390784004590 1.1038464854772104433947455393121880 GT 1 -31956312093228803124734042228675.0986446596320406069517003002718536 1.1804826061398473987141711292999868 0.0783757642939598918629648955690816 1.0816176919621927950411366003968489 GT 1 -77055500257907.4933852385678662644197016828046451 0.5006763883332130936934638473305145 0.0738462691962932919759409009599279 1.0767150421283622698333110771628201 GT 1 -1444264099387101849508151528588419.9962304221613811644179395664735470 0.1353547323487599763225152291634131 0.0121383170270465919534467917743806 1.0122125880257005228222212983154779 GT 1 -568838551.6112601925820701663976028749774084 0.1499779566822777474636931581574087 0.0315504367654736832823779231572446 1.0320588746883358091050504003973162 GT 1 -4134607608149918247281528317417365422877.8143486443295257736106533983248546 0.4442202404103309828621076953346690 0.0662663438305977752516902103413353 1.0685640461213333009448879276025146 GT 1 -9258470743502970766450375014.6133465181071666580106627683687043 0.2066836705034020460720240898461958 0.0044247490212707947497298927608341 1.0044345671958981904565326536750399 GT 1 -623908814561204815115771299978.3589103681912429441106677947392055 0.4040073433170201732292273833433426 0.0524178862624097613057166327459923 1.0538416822053332021032103348604241 GT 1 -39507004.7109191856169958239768496147896739 1.5780641933001663957428892128716997 0.0996704260358444293266176512576462 1.1049943893967201717638124247252333 GT 1 -461232830471778083256715.7752703949112329090741792699565034 0.1545804547399632673648314352575772 0.0559040760542457857146187099239392 1.0575275036497087400634808922180376 GT 1 -9.9404305308281577882895531807310276 0.4598727642415649462007164783046227 0.0320170699076457769058567906155607 1.0325408260631578115589854817510638 GT 1 -1907745389601419950178.9207863179155298789361174102588972 0.5983076879937126578045203487999329 0.0491005382035180815560741130612790 1.0503469404307130348859889452255464 GT 1 -388960758669378030806.2182023512494314316233419084566031 0.2189926688618425926815795436713362 0.0922869236349840086088907701991252 1.0968269455105585117364135771640805 GT 1 -27541827.4755519149194454821689356981261460 2.3879376214711405461742504562059972 0.0729288093182841607482380980346331 1.0757249195131042653532915152050737 GT 1 -104159999.6503170019636787392923040173989513 1.3740913037440381078151830063890638 0.0304357844776945878028874205328029 1.0309085707814120821971421249213436 GT 1 -42490666046836096585958713178.3338239421105002836825669922157490 1.1934392045178571664054288683673265 0.0055564183447113166096469504340384 1.0055719126590386636907510133454900 GT 1 -5700108910774562160079326474305946962985.4391870223849940658082145784941767 0.8779292561386989457665137852414119 0.0178226481494223001762235654990903 1.0179833842352126822279965789847521 GT 1 -36471038875556709355626132669506015.2409371888737034556523848372184647 0.4354913819117004105432575816176864 0.0589727713671802680371321171123749 1.0607832039675485510967933240774076 GT 1 -68338874.5662408701057684079215031739453696 0.9088112342975234498497530243442542 0.0228905312339470461495641919178412 1.0231565873961074418622661814765354 GT 1 -16429535126588273508930.9735732121884471423631685885515380 0.4270957376815928247446256697297986 0.0349580044885606699947639833427210 1.0355836599253567734273922258256122 GT 1 -61.8016025522860857169762590251758179 0.9943756523011825477264373246484930 0.0831495892775149751317466453597535 1.0868109490157653438464910283146355 GT 1 -113348128.9603233218855947073069117692570897 0.4424698140023707324839130469739655 0.0536768989370741726407188934119513 1.0551712237793111384503705757227779 GT 1 -684120404669011711823484965558609957.8139461265418339134048828875246821 3.9780074194969058345634843010851062 0.0539356871648426104144197890725111 1.0554447282715531164693168282597251 LT 1 -4709847323008017016064335596877094605728619.1109649136678262837843303336634481 2.3340965316280812051129683872975934 0.0073391421911108497478689008536023 1.0073662061941772390041537581213765 GT 1 -14020011077755075929538354900499283402901191.7574847267943260375679080289683544 0.1877027096962661943499436952541813 0.0766812927705892375624355766479599 1.0797808091400898467705966016353031 GT 1 -494370248165035174428072383755078275128.1807589271756374747989303382754884 2.7160715870704910021855822950835754 0.0347316560277488633812388589505582 1.0353491396441155973550340601697116 GT 1 -1056569870978028310939615370488769681488542.7123562068930314667510571422661041 1.3261261239199132291322459461777079 0.0192299626795886131794690002608371 1.0194172634915300765952557703856056 GT 1 -8540873136833734028120666.5634465384518122862050992373510265 0.2232702137268150852708606574506966 0.0821650278126957820282391585287565 1.0857376733811504613184416309318666 GT 1 -17631333267474314055.6740670943329602531277917944138091 1.9713310257781293204839809239032367 0.0826660607904307420143116918915804 1.0862837081216826943730361440895977 GT 1 -186633367221025689403563219828753909.1476587536520092348752904519085353 0.1278880199041124066954536188106993 0.0035471945438835317835684421226562 1.0035535007557731559835153862455119 GT 1 -656849669615785597806180501.7482977029178379545225276934761918 1.9170274658532662077611183627976745 0.0369590305448692947839066503088510 1.0376593245218494605849649721062463 GT 1 -4726671366093598410265232033091106779739.8839792552380276316510138323739756 1.0082682116950978814985851369179808 0.0663028617043235521541805379731636 1.0686031564046580355783490159725563 GT 1 -8172944317819363067672748537080482.8813885830497988375507115155725635 0.6580881122626164988083374915389119 0.0682779320098816544875080689427150 1.0707207190811143534427189438032917 GT 1 -2307714974227948059996859637389079.9514340389213927929239591170478838 0.3315701165738558613105541771064478 0.0401077088361397688356769976542215 1.0409341975190884387716261887932750 GT 1 -280095483070968034656711.4672067471071506922320307519227161 0.1123935258561762978015305344081983 0.0663741403003422162556910242515514 1.0686794994863100095555989324690569 GT 1 -17548869950.5983113508674539424511362723908670 0.1683369962908288581611723706429404 0.0593187984248455016289962825598938 1.0611509836469193295546138288788540 GT 1 -87266287264730225690.3517273726208630297370501860162849 2.8882370306065959347501615998962310 0.0610971169466099012407434686415282 1.0650304555416071952992155088975849 LT 2 -10540676968.2617306093495065084809068558864220 1.7624123971942194399516078471202236 0.0372822390623141920443724187083773 1.0379949932797044203812850730735203 GT 1 -2607489428700205615806413384.0049960553838923043665661059542015 0.3330580806256457206452496433839158 0.0784060308525447835153770588085351 1.0816505329557419202970290397267649 GT 1 -6599806143439.2699470636160047710376908655576635 2.5316627833442017991844837316330941 0.0325937836365602416652847490047049 1.0331367927678798743512449118850322 GT 1 -5458641.4096434874073655540483027317062414 0.0040747639251328874340123388725540 0.0933901918386944623493097348610805 1.0980431219134528769814815888120223 GT 1 -80646354287653687523290460727795115663.1096383926224529010234331315589227 0.9214528318520185870527673076001880 0.0280439411060512798294654540691082 1.0284446824427903539290489633761914 GT 1 -10231998042077293.9909524344952416619069752100404439 0.8235115842324633264017982939560543 0.0660914043964628152494067441318281 1.0683767089217379078729953299706320 GT 1 -906.6677547670519147816829196695639390 1.8033460998038839812033050739426071 0.0803548854038069233270641216533100 1.0837674283619315146366483897464391 GT 1 -19868117319.4857321453209285653535043402575876 1.7201585043408799057189313776008777 0.0969514495258768995566663139724927 1.1019789612584035659820649296190365 GT 1 -687631704436338038737162070153.7302444755525425554492148459312615 0.8824872915387251135802711403315584 0.0624268936801982865068328942934169 1.0644605441034039630695614756812305 GT 1 -2309884579907638.4076714725597915634047636647436521 0.1087134266745482215098773923389399 0.0508657348152846456318716411548606 1.0522050096792219129732237240480292 GT 1 -278629612594233887176.2439069838070267444935787320215425 0.1580205729120465980008647539586577 0.0808506777329429631725060930713562 1.0843066864010155001838551589779548 GT 1 -3355.0543731180861244648517005723023163 1.1120120923438875380846666440579937 0.0675724149855559604479488609010923 1.0699637873005850209560054276040315 GT 1 -4328683982205817381866252921033026816659080.3415206958137452343917805572237228 1.8370597834608320701954327669970530 0.0071953690336308159371338979849155 1.0072213805514812101552936737494617 GT 1 -769784006931994177.9652957489884592802273832755881454 0.2165527204033795949391071725671262 0.0498073853321002966990108908127259 1.0510905626570169162823541014874095 GT 1 -425567914481357741151450801824973139.8227608421109957702660946385783882 1.5478711474805664851971940442040491 0.0218697360529000154979691104099943 1.0221124235969436210125890321528692 GT 1 -1640704934584907384836364.8043368965694994318903542193946171 0.4682398399174306853561788309774179 0.0137764390221723480057773853443503 1.0138722148084281153992061399481735 GT 1 -3749873960957409624175622948222229759693.0605266218441228461690141460243256 1.0593231549398843571980311788748902 0.0318920616198518443144853706351294 1.0324116913308957079329701818561233 GT 1 -78411255421361224091769537704.1116981444177893847900842226766467 0.3311307406982958082483399998579870 0.0649833378962200200864397574343632 1.0671909294203818165363278065402846 GT 1 -50840298966671232464775.5182028048793624734990429855457788 0.2765322285066747795027780374304621 0.0943312817727382872764407261535090 1.0990816929773718759663463097529091 GT 1 -12976403206005864327.7970302883565433922390687364582524 0.6544075840433244752024406988482645 0.0673242265001559703811451693683748 1.0696976481767322535431367005749337 GT 1 -150123341272041158026044594338.6771136926958447116156933227123660 4.2087635145426905611785316950691625 0.0346590635085843285923438568067177 1.0352739379759859263793116856526965 LT 1 -270498663139020310153577329.4151791010677030557658888726880487 0.0253749294470497968302616604488437 0.0148117125606515350144625535337698 1.0149225013170316479988185607741085 GT 1 -11832461796854437840116288245125198782827527.3410520338352334849830191559594120 1.8480035837357760976249184615354840 0.0317662629550584670102264960737420 1.0322817569638705825446449658642816 GT 1 -47.2991486841174338389745197863588237 0.2148886144399075815657844033570126 0.0209316125192719149690870453700003 1.0211537844677091109834678905741935 GT 1 -7445235684409560428.4190603842378013893743344200675864 2.4228031965250737591517955053650098 0.0526925310765327442893526427322978 1.0541315616986390791177960583235165 GT 1 -97977151272.4609916020740801281279256500940318 0.1121278862041876555777470814523815 0.0145665085007883919903618483637642 1.0146736417299213325776560391847376 GT 1 -1610482255438985677431136900144571.4381630029566632733043974759900834 0.2810455186304799501854793004831975 0.0127960993054692086586665268001226 1.0128786745680229414481741703338810 GT 1 -164440871510769595930249383252.9287538572105794391941918392660102 2.5840957559340621839595663219536266 0.0235377321669092596795858962346720 1.0238191696238442891833775078348169 GT 1 -1644629381842877411432974430744521.5092050116189131429897745205628405 1.1306738206702244338335210708036412 0.0886145925747915320225002420400987 1.0927894114444492750693684703270845 GT 1 -13302385184845.1052202703855044999526653407315248 0.3905857765152417930466558365160273 0.0229208630470807856441164351174488 1.0231876302678624082260304998559279 GT 1 -3298338184087796122647.5028030320256813605321080784874923 1.9673844456555879057680578811275108 0.0857580775651769978562677545932974 1.0896600571737135449580440924853480 GT 1 -4846395123210399.3007554395001234804917550419069722 2.7621993514061494602294679117338633 0.0522284320764831117016157421278676 1.0536417678691428366940506908994021 GT 1 -578477372392464844219365368659327.4928276326964547445505667109532780 1.9814053526755325965262160921163649 0.0355052783637902980218139063920467 1.0361509192939309396211633307472949 GT 1 -24772917448908206388.6980874615421075594284841716159846 0.0947439825271537478999229097266804 0.0101149300189944179695612592539415 1.0101664335208520137508092798848427 GT 1 -63801846587504881562869157162219748280172.2287361267600782493571945525336119 0.4087495879496863635274152349054636 0.0499566636902457751553181679718227 1.0512476782598195661584097315816947 GT 1 -5635907643.9691393499943220999798227810499320 0.3307736786747587304928667431472482 0.0106347190097361766562198417880163 1.0106916717782926926030225207449728 GT 1 -692225188.0519043362452713930200414795580318 1.4028645832750873364663947437872809 0.0513417676387050407732990551277323 1.0527066797343197731305627864615668 GT 1 -127838772811826312478105.8092172501291174653006541176159897 1.2193547543291092296127245768648546 0.0743035822268978455056176220624733 1.0772089406657274663001567652383737 GT 1 -50782.1988823436273375886730662948756069 0.3923794993408765063222650539767089 0.0705571752646112087738213792122629 1.0731699855626087325514789798806537 GT 1 -27680952318692905.5455227574610400348014114061553839 0.0857014331416939863387182597645572 0.0272224944952745007600879972431909 1.0275998914907872405273686115196591 GT 1 -189.3536513620775449498681653511503950 1.0228106958250511456625366942734651 0.0456805738538899285563965927787965 1.0467568353309197011788010871809138 GT 1 -481303896324027109.2743009377902087324388976142853561 0.1242500046382220151263301765305393 0.0933144136227705036597979530651337 1.0979595412500967476369600453042927 GT 1 -7642812915.7657227711758895775053745267938535 0.0827830517293934353906552708168380 0.0942499992206719186345348633182077 1.0989919483465274955278773000067891 GT 1 -4119698207031597934086769289818304191382.0765823553885706737749245710401547 2.5984888489891552709020864614541247 0.0182445345327896921274170979557312 1.0184130184733462338954403741933178 GT 1 -10203090197737315.0144097057874172283823148584931417 0.5556687769897062286467463756221095 0.0478374616209799454199842595223602 1.0490195251726849888868567930491724 GT 1 -521948502859211042.5093628534568240951616763024524038 0.0300508281338245565923648490691210 0.0654546959253642187862914626713327 1.0676951737809954303731483097208562 GT 1 -14417669676825558.1153255665542505379480157090690519 0.5578828003853952678932072521146171 0.0673272568189441084960808851301752 1.0697008972411950519115290592145724 GT 1 -4658501708701759387449.6569004632008882939888442808425372 1.5967630616831040870332344440684514 0.0482119631292081423854783848863889 1.0494129193268466307746131707544468 GT 1 -837.9947939618489086689983340880018082 1.9477664904095686502931563184840212 0.0465108097857278563881889133455333 1.0476271909600202347142112897776418 GT 1 -107076916718373815492.3506042669552447367351027070546694 0.7063243695240068623281120121213894 0.0108329369047286652696812180480693 1.0108920403962212185660944694983169 GT 1 -121799349277481574553374.9254778763598708364220963031616671 0.0450371877859745832021589934986048 0.0509933580861279843170274002127711 1.0523394815411984109274726664792006 GT 1 -24390780701.2185720226809965985919421125938703 0.5725006599123267849195676963812417 0.0471605982455998034311727779476978 1.0483089081495694313862613089844147 GT 1 -5760993251636.0731276174051870318287015951228582 1.9920081907236758082690968789459138 0.0802940892665776562966435076673510 1.0837013222881976962294714861564834 GT 1 -198643103954482692059211.6376133762355895522489937530038880 0.5485527054873435332784142089056077 0.0562851726284687518066810266424139 1.0579312481237074281216733309591512 GT 1 -6388541.4165107747946614319229755706784109 0.5929565732728101711124734894450198 0.0194319725928848734023875314343498 1.0196232554290175513670386505905466 GT 1 -21411942428.5681905691928874928533943322131337 1.8741226752253994402227182925379522 0.0038246583641723582706871963977898 1.0038319910726815341624491924797560 GT 1 -2693452944051622608457397760089634562929.1974864429192966555277550664105015 1.7783015910540905752767822991483773 0.0972974473120202541869205205479633 1.1023621788455580533486491582637942 GT 1 -23507430639252083121040.8746528747762123358125627226071819 0.7802647363498424841767331408401883 0.0482123766823942168891712856167411 1.0494133538282901232604077782002189 GT 1 -816892669463455755602049778523601481337746.6347453771123809501804841047144127 0.0532314751305491873177075214803561 0.0567579477605909791141760276357630 1.0584323461054615140027864146677396 GT 1 -1428260761883375928309.5869124815773038990679464440917802 2.0118496110857341481649295570730107 0.0057539568785584196236668857065738 1.0057705746644473374417431893784462 GT 1 -3074465982019745977443973508306.4272736453731226169284038815876300 0.0193111584489005999028357388575160 0.0683443578264977467997074959899165 1.0707920152185339614010791875918744 GT 1 -268277371.5103851426273652684550966398591192 0.4728016467166891760609732386977950 0.0416833398087183402803643059539784 1.0425770126314152638812488872711424 GT 1 -4367225371611602220149274219462792.9577521647100932430498479631001382 1.4157177781173143144103607805635749 0.0551404226786402231173821601685445 1.0567189579569211057574696112853389 GT 1 -2625092110853299798021310.9359082519395003068619969259310223 0.0795640934928270368281811549130694 0.0404746952049362392915719413559373 1.0413165909847323773584042764455288 GT 1 -18512204163757550700489772900206671483522.8520965393410465081268509932946623 0.0080737632187413663696901084620630 0.0663476821288904426676946550069381 1.0686511607291056973564839923508313 GT 1 -344443599540288672083626312114537555358604.6622238071202307510394354363973634 0.1512078917046986845185305699055387 0.0002845319431697071979773793469520 1.0002845724300631075892825562765440 GT 1 -2140925711193513263636793395226446.6867378911813443037850329616687186 0.0393276022709986375825998564147709 0.0559551590941935771967346461093745 1.0575816130052305154399820797641581 GT 1 -30623.2483436643655810199871409546253305 2.2792750264588125078747945204596675 0.0834138385808875863056848507199564 1.0870992047527976685398213304444766 GT 1 -7.9759924963145210915586707703509466 1.1910978987441390081294386248028170 0.0221008269920668429828595687954637 1.0223487093458960883228355913690927 GT 1 -6.1067731065036197982018699993045532 1.3643326622568218075642370134989013 0.0018560638871919330432855115735243 1.0018577885081033951353915782869865 GT 1 -245683734360652735025.2844974661885610115739393821612482 2.1794840087702241669857330768694844 0.0224661009455594289541753371602655 1.0227223083843494637725744088931889 GT 1 -285212.8458741406126711779794268222526476 0.1519630826061944936865167886983348 0.0376510088575501424913353773642975 1.0383781174486178062735147561071758 GT 1 -3.2761545110618897157173134153505551 0.7104773936211135524477550990724004 0.0744059022283639346491882989684098 1.0773194797742154370786747807571987 GT 1 -1381801031807563.8059301271657059777658302038439681 0.7435442831148975534414150483438818 0.0417573868064432191109024002021092 1.0426542833934417859668701447363458 GT 1 -1062844599840569.0667030156281270935977980832550945 0.3192769381231977761637441770105121 0.0540912324036067832028501488033055 1.0556091547538571225280430743673018 GT 1 -7441484030.6733777170218182275626280163518983 0.8331595787589595027449654065963185 0.0737125996720452492417821227808394 1.0765707249652053675808141951904503 GT 1 -23452017537424.8921370224622522364356363540013931 0.1729827199994054997526342684762081 0.0921576911045383035598787682540493 1.0966845840803172364124060534932065 GT 1 -884096061.4382533026496759784376259709705677 1.4706597698849356292007051999910368 0.0895574594958292831828194042276845 1.0938244894344324820493660453236837 GT 1 -3594953674951648125548818441235421.0967414255269195939201960654010067 1.2551705529040209600059182790750937 0.0386822125169360269476614269353537 1.0394502405102833285051131672102670 GT 1 -97837111477365677898268998997.2386919217569435032861928576290100 0.9527297041001221421429589592359244 0.0661285109329000504938653103296029 1.0684164422251890584032430583009168 GT 1 -302096383518156542300.1033714319994819042528265995150493 0.2123452640095483728002396904702672 0.0777237966325552904557081124917025 1.0809105304747735265082944827433555 GT 1 -391083582497630119623402.4608542388527172940438274161647111 0.0412522633903765132782339088606076 0.0407117078526730171495946085924903 1.0415636318117515786519981472286921 GT 1 -143.5612265124984054469195649923157114 1.4518968620135237297883871356773619 0.0019688434916424934663561988301970 1.0019707842117242312925396852801391 GT 1 -108598678640773344134084673612478293.9444761504487793895453421370997023 0.6440076866009298952572425811802953 0.0221393671638782800731358440737063 1.0223881213142791821483383835814756 GT 1 -7169632158755985233489422068002959444.1095217995981073901101922960472822 0.2995849074203446167446913685944321 0.0815934795381532886136651204930819 1.0851151536360208228094988085639322 GT 1 -1656948730.6937985050725041102145824651449754 0.4228441650425204780970883972519049 0.0478128792772153656376964956142533 1.0489937081241734885948902826219333 GT 1 -56.6583100612407310088281647690418033 1.9440236156366906139305520868202900 0.0360046087597757951640343196258023 1.0366687652541565555663405302341642 GT 1 -13873175141083037434826813228.7581386313197197538123495687514478 0.2766239965979977037318405666457348 0.0096272609590750129257401399434125 1.0096739026316353504983834240642695 GT 1 -817847625407047.7219041542201736260229509287510237 1.6423930111127100197787775718848888 0.0626552207356123243906164782532970 1.0647041036302486449464948958226349 GT 1 -3082.4119920004126613174349816619279539 1.8301239045575126308267659508178392 0.0407214460944211288888852534119578 1.0415737833910600921810159368270782 GT 1 -36190601498775644663199751311745302.8887911633638030909832179860541965 0.7980138024025400665951343538075345 0.0313043738698374020804329812173592 1.0318048277554465033798563668012836 GT 1 -588.1625611266214620097921064463782291 0.3542944387519600345477443740958868 0.0704000289050025774022168387795728 1.0730009239785124587084162782779932 GT 1 -14218504972.0392424041161696548530726579348618 2.6951958123851445557511848392159792 0.0666790052111463212266172919652197 1.0713870117715688589835774070774870 GT 2 -166881714908339162833435526926.3674051987209815234944120870179623 1.7681953377333672579531194167985814 0.0943886246672808701265752577944403 1.0991450105114911143415689204295458 GT 1 -17642102876060406336413309752136453596362.4786096833236478377853660058083531 0.1942474889703168630949373353659942 0.0100958673711775703938895246658523 1.0101471762708454902053230512784799 GT 1 -5075239108874343005673063.8969809809781175193566340205680258 0.3067971262214084964324241423609005 0.0703164043617470888842447422656424 1.0729109704665166477743183427293235 GT 1 -352981460879201624200632082048022.6073703194069599800083265078617762 1.9068095651554906475182006918350656 0.0061909290386067532525890779132569 1.0062101723033557087812404949740580 GT 1 -16502345304457510631.1113719585304977981835963027425341 0.2986670319846173103451273472674832 0.0919968853666183288560844269651634 1.0965074701737515165319806700417390 GT 1 -1013081337410898231287817.4994537823136578943532986864580871 0.1219609254892986343023631936552774 0.0833491015361825352557445380501690 1.0870285788134157816157746617038827 GT 1 -267649582771262707.2692592190844305839588785644130739 0.5811914746176723306741143044504500 0.0186837833239075038900324030195079 1.0188605301994272828621464350256835 GT 1 -1832.4680235682715751514070521530788543 0.2089314019997635319245919668395158 0.0370972471403555062121945200112900 1.0378028558141941570348042132252432 GT 1 -190637758610250708.9860857206342092956865324988966682 0.3020636494013789001009381208515112 0.0574081070708911856505353440027966 1.0591218652836744622452103670123643 GT 1 -21534132018025605641254619544388.6049992461055276065212813565988106 1.4355418630479907151358567124600277 0.0077190141186472063038194241131292 1.0077489599089840623741427844038599 GT 1 -566879.1932651965589828512098917686926045 1.0894665095540824645188157158984789 0.0367420093324326438929478213023132 1.0374339999820479867849939259457777 GT 1 -2248870065113833927168866799068277356.6705787751894732117299651613533361 0.5175548734520562304664004885492080 0.0324210031084502255047221836963858 1.0329582068775220096950059767388291 GT 1 -38382.5320506891219400501388488235582483 1.4693078730208056556044005753114334 0.0664417100755125469807783760121491 1.0687518756096971196001815367403346 GT 1 -624916094.5359657200048371108681525715388928 4.1426387510088286234041847477386594 0.0557600532551562777464038875257917 1.0573749642613465419099865152282541 LT 1 -382821315633011377648313.6053964541779616081642301606090838 0.2238294913755930006126801374720728 0.0410093986803938935511219825264372 1.0418740046476561647383968432996645 GT 1 -56751687838872784980605903.5732337147043571918187075805621455 0.6153789922093534146732548759440019 0.0644724386862907335437226818770751 1.0666446721159700484026676768943610 GT 1 -4285698019128003105558.8030508989318795619849673795484911 0.5434689674277229052795869803986241 0.0539864861683514608812027686105426 1.0554984247979909815976200571048135 GT 1 -17133985437447.2948282084139624842844498227665440 0.7222003708691789078073577398650655 0.0275493395198046177037536941320178 1.0279359395013201986415808422279767 GT 1 -1472916049246325222924022.3627079001393070949826254243956241 2.5641979778955282199431246790202279 0.0127847607045159017615307433476915 1.0128671890625152417150900655060936 GT 1 -471833182403777364650949.6801651146446736942728289660079864 0.4765355144159249987605276775371969 0.0673319505142257750381192779142735 1.0697059297749820453240353691484460 GT 1 -14473351065265072029572575700794022525.5098384296241811286619055663101138 0.2469458162687087883755491463879351 0.0989152551434157135036834275734641 1.1041559693522295301613093614860397 GT 1 -44258684726161816534596894941936557507730.0604289656132972035182220140564817 1.1035230311420415045985282698306615 0.0070331172435173895620887206446087 1.0070579661915176004532098861867026 GT 1 -49246557932859068782488193338.7580925727607240702288003712536104 0.0396916064340382619792153273230346 0.0747252166072826355995545161074230 1.0776645224569643180829428902943028 GT 1 -111153229841076507413886309755924535.0719625738997002475472218668611559 0.0200398668095701913329197585608695 0.0094142335407872726748355638097487 1.0094588275369098005868449593438274 GT 1 -5446148127438287552.7035919499782626742762314961245544 0.4342475857653508858089620960555637 0.0395037013582121341697103837740676 1.0403051503553517221336428970719336 GT 1 -16049129408369795178902699472896697243229713.0851758231690190716141004774249819 0.2725304537502810775086363193529110 0.0096399605622288765128367717887588 1.0096867257678928234018495661267498 GT 1 -27043156121538804923484285.9424910973017536041471399906404794 0.1904386818100064637448894747405151 0.0674598860346122140513121310893427 1.0698431107321470117634666554954529 GT 1 -127303695713640155757624579847828701440.9048163054891556350978771342362096 1.4505198800885578277133883417930403 0.0141494947493352839703340943151128 1.0142505532674154311112533467066718 GT 1 -2761116313344040715590083811979.1532147100961102600963474812313565 4.4607964326226511015873836000294036 0.0342332975111951647069831937398473 1.0348329827483292386714906772029051 LT 1 -2989066074.8458315843291897194835169811244808 1.0082368259675720051732142329393714 0.0307948797510122621998443462232234 1.0312790070894333898097325402068366 GT 1 -24840593515288134113.1548620381767137463426907288079745 0.0584860096906008593226196701843875 0.0645650062638197610209394649063826 1.0667436239387681162679346397951068 GT 1 -62387538746411951711195966048825207.6619230003930604513871460117030274 0.3771672733907109505668253366246475 0.0564290578596563548521886045065933 1.0580837266023679133412586652517374 GT 1 -183153785889861510.5054495995931264972025765138053565 1.6104903895987019230449449635100798 0.0381639186204638634909470907229999 1.0389112364114310361861806706035345 GT 1 -63602107439742961147634683635.6777686567162516819703508489593524 1.5658476589978428296418540404326475 0.0296802737774204621303839481562583 1.0301296471332341306197241826890705 GT 1 -3578668884140371538498210247394061276541561.9427208995742836521187497473293768 3.3937571666030079421661847157246675 0.0818357825331988927578678171411379 1.0853790182304493880341786509600948 LT 1 -4941400440518270545.8418919650242044243979669202004601 0.2491217208356901454293210300375419 0.0260864467134747589178416304641415 1.0264327336044496483145333584616416 GT 1 -196221484313520200137991542272.2490793881699248173755264911005322 0.4929581088725908112209748542550872 0.0561323436697350425135046912414335 1.0577693172302103200713628248720906 GT 1 -9520171707693142328680303495664.2312171775815124050735546841204538 0.0915392783261002236347466256642534 0.0112503757059538801359674435876011 1.0113141398810827886347917469519426 GT 1 -300.6209500561089916910067685431003349 1.4694871732873800618389579590119087 0.0522272843629462943543345505002191 1.0536405569097927743104826367956702 GT 1 -1122227.2849786822304818546901432506534523 0.3074505837169411358376923857211305 0.0992865839285570326436011384009147 1.1045681451424491368049191781733611 GT 1 -5251163634217250485913512072221.1208029712711291552880541412150821 0.1990021047749474975506105900723339 0.0867798056059055679165990578779327 1.0907782506922329753423802663277529 GT 1 -2545895777924509754617341114.8425463317482201128530791610422288 0.5036701070721590431402450030700074 0.0492925816519503157124565999918432 1.0505489206097819300199673417421865 GT 1 -2651855777794592731.0586575052716498890084936145966868 0.2303176604655124472170462857939581 0.0071299308328745562545095146919486 1.0071554702583445247903220886446727 GT 1 -577036538475299370732598.5438397616166307071134073683560386 1.5229661451368650860568440134700548 0.0724673385295526560803982544480543 1.0752272705971702581275225524315577 GT 1 -473375092942424317700025205682489379089172.9533941336178682625491016840072779 0.2532247474087958327334129763530567 0.0265746436914797607836027122436160 1.0269341327043467416718779677608359 GT 1 -49772414865184426.2355312359322607643967704322151021 0.9509420039911935981900109797797737 0.0400867403695602377478217084337192 1.0409123531540987767686717716647018 GT 1 -151.4848352540852428563902753825696569 0.1222746491355791434384547902786076 0.0924402354587868713918736021649880 1.0969958587677974027887914259775667 GT 1 -496971615782884972467858.4552362905872555285701218500173400 0.0159678142709622300094198638732964 0.0201444143261662347522927285013583 1.0203500797336130106574405040277907 GT 1 -231941300043673450359576601711.3243523675935856472500547633242222 0.0718244006514394463110427841549590 0.0085003105456402234501582866577060 1.0085366442302428705039380074543782 GT 1 -57373977210530782555236068.0384593477195412882446890369703989 0.5987518310772053053380646403382162 0.0619532530789793564418489676673380 1.0639554944149307126883947476146480 GT 1 -17918879984933227881.5180001988552801584398452006491669 0.2235042292372459060638854656199713 0.0787265269049422618868857671585695 1.0819983561884738854582308483619369 GT 1 -72319231472206396932794.4472307077238934660381957255732142 2.1050710384326564463355133062479700 0.0303345529578308281032562083043155 1.0308041669329046882503289069350392 GT 1 -3420007420.6156881028982538540423927782006997 0.3535431942820305591853709207896953 0.0196919991282221760568009974013105 1.0198884700913536474516247278971273 GT 1 -3949857599335159356100649538674156608933440.3359333097496628648504278958755815 0.0476430502489414346804585262980023 0.0925893986257915417934211679500728 1.0971602285780617928706122297564066 GT 1 -30567803977595287658506870372622636313.9458697669767073372695399437566609 0.5429488182495876523086707449899127 0.0954485554619909040676962251629668 1.1003160995474735512749802235637845 GT 1 -1331701977133475721577702811178564830734.9572355677246069903710464114730959 0.9870067869036142362886970632962484 0.0327000131460057685576831747639366 1.0332466073840480762932629319362867 GT 1 -2512052830802314833926310264183153541563438.3779184646228072449121299225077365 0.0949553248929345309446303741373002 0.0281093160411796723184703060939868 1.0285119459093094245724531131451090 GT 1 -97.0735747828306525609456082076022471 0.5162533858687053705544393116200329 0.0325674799405788346447034653559354 1.0331096032192235787019384661614387 GT 1 -5.8593323154981571314125710885822308 0.8411283864333700995228045696519673 0.0262869316493117662104131325056774 1.0266386097557795218152965266285952 GT 1 -2867522317818169768151091672628123193752.0471506407178379894083181755940464 0.5976617276293925390902662374640663 0.0028655567185330001808955520081426 1.0028696702865075702091875023827419 GT 1 -345.6031851016429534218784461591794246 2.7038913566388653116839742084101741 0.0450340121195146689058095760271243 1.0460795539204604264460359567447941 GT 1 -22837926.4202078613078119836632738997979665 0.3341869659183582393028504793411267 0.0785708601581528159939560723164454 1.0818294013651976048213872125293650 GT 1 -123570982598596940093028847387382.5363404559089144515049012770035227 0.2839090141269978801882055147253047 0.0371700815611145304993756162548670 1.0378784991492004028156473689559827 GT 1 -43765045329405636529911126126156.6539947183374739310320579027852856 1.0797278960596652232584996125046524 0.0468518534604821985662300672855607 1.0479849345873135538865255416595341 GT 1 -1607837826511249365777057622223177.2429438468482649148887796721875492 2.9741660560338646210790084103206098 0.0854392399012126125712494157886311 1.0893113725723184376185491169274966 LT 1 -19460656603700869798570809267231.8289716875827116180758407476464665 0.6921952409253710852853959818906378 0.0275170462318363326196853220560952 1.0279027319021150887191236531055250 GT 1 -27223170516299651846628163770082126975.0532737037588171278648087988738468 3.5599878530032183040911642980982569 0.0702812321078348512278660001169607 1.0728731386829217816729689249201204 LT 1 -2892702507533760.6764047119199296263495232136170968 0.8970328460215544789639397013764784 0.0298106057225165407971017557808871 1.0302639747114095604135522312994238 GT 1 -775360549710834252746250582798585352770.1298761027319355972273119014866706 0.1580289286425939065901280249724480 0.0522878849785804697867760828660398 1.0537044989837937262923436596090451 GT 1 -28253.4393869705743982245702685990216952 0.4228104852921019913154480117517665 0.0786731489164916217648071611608613 1.0819404185144540270348731982209824 GT 1 -969388445546710711386057.1035730252753520985259643777677928 1.7089896790115964795159883530950511 0.0401804010634610792199031232005915 1.0410099299534510262825664005585142 GT 1 -97444251593417690217676295305119423087.2759549621766526323802429347829399 0.1492205256347579165573834031028480 0.0407623623016616756232059444775615 1.0416164374040163690221387145500072 GT 1 -4880704731661807109964371610175344.7475827395581144927564635638524873 0.0048471531980585594737228308733890 0.0140266461494190481885586649756340 1.0141259492369812144521970899689704 GT 1 -36277907569162898095078226767787605735.5258144682039830989909677841715747 0.3783278932356599338760247570805778 0.0508666277422802381421712099388914 1.0522059504601507767558793080902690 GT 1 -5386619484096933315748205748308.5596162095581372432414158503171791 0.7547846375363418984941585441216500 0.0354498835756002014533482015212614 1.0360934869449130547179122952674048 GT 1 -35117604625439.0305305588735302318398989787714651 2.7306610654603481588441734527684884 0.0486117235246237856397519960413462 1.0498330174527969351718847171577363 GT 1 -1496207092305692251649634303133586507156.6223480691953584951243571717265921 1.8295094828467604197360873479976532 0.0692624464689854498413689732739223 1.0717779388344211571532827748036642 GT 1 -73521.8371363159638272053271899671134795 0.3974231447951301205754059860418760 0.0617241782368865894797592412568391 1.0637113201486780204283220349310994 GT 1 -334964823596687646750624399046.3172933420913942100911994275858937 2.2182220656946846201874032254587324 0.0552588996875790992549294933799437 1.0568443569478258827638920533472093 GT 1 -4079486993558457852777503247201.6414874880843545978980857903379005 0.2768691629192578570810902289749275 0.0024151351514844433958522571029956 1.0024180562946358970380585708077842 GT 1 -4073.4510706158590900862655364279678635 0.3344920275052498328006493687281707 0.0720143694211115351011421529041094 1.0747390306058102119226306037305867 GT 1 -287800411135.3429133650951680472769941364833240 0.7551995853017942435303816981115552 0.0901716896073470512722474568303248 1.0944993671698291088419907964123420 GT 1 -7821600009862324291628464149570.9297686262031251851103414039079330 1.3280135997555739848578954882274668 0.0289748077833581346696206666149370 1.0294028664170259456386815327400915 GT 1 -2376522495.8755850329748446040446607620767716 2.5377437979358756758994433867079393 0.0983387131395821044003959196937664 1.1035163429008643052547187798400667 LT 1 -1008493112256996364441993066270536996005.1390313036468123790881119453529585 0.7518117421454973551853072015119410 0.0349574866421843087203060370848851 1.0355831233204837933644449149055724 GT 1 -787717580338947591.9000415749930870677800507686019964 2.1762916564882972703219828804454094 0.0070678880892842874512686830906094 1.0070929839299462137300414730690040 GT 1 -15378104315454214884.8006452095051459565986204681138607 0.0984457786044102264884748271649910 0.0678414775092301874409537506066478 1.0702523902505466976798915950057701 GT 1 -6890354897756637587252134710391.5399702771748382742732010545979733 0.3743903639276051936529087799768642 0.0342910971977475171252634559240147 1.0348928330373116832283318660841591 GT 1 -22367116632027156002826230193442717374240.3795402080275020781617570914025100 0.1464801229212618316220282127781477 0.0891220912386977707995468220164823 1.0933464096263466301736946714450966 GT 1 -1893531766409021575077716654336186048730288.0668171763828487026499059775403749 0.0864619782758739196862816641155489 0.0842833507393117771207104322954782 1.0880482970301502796390994348856853 GT 1 -56757469922536354472370524445085.0885963359976703625980378359945950 0.0547227195244617783811951915140640 0.0450766799006750650668104661797729 1.0461242348147816020922405309475918 GT 1 -44411.9991913988269935000831813301607364 0.5861562606921463964118318962655751 0.0033462467353434655773170089638194 1.0033518579400975958148129476246100 GT 1 -193970.2885304432162285934783785499509847 0.1810461298743363256008349579659496 0.0781075688230231028155540936195508 1.0813267312373490903040867651566566 GT 1 -754629295834147541.8083933987484619716335549352530202 1.6768739458481458088476864198649921 0.0170090520228532938134439039796945 1.0171553674458877289009198711862787 GT 1 -25046448282720218763106062953761.3056555218026872455637296320928940 1.5457784803613463987278103957854417 0.0653726501057300799749208126045771 1.0676073854009197648445647970758251 GT 1 -17928798612751548255259763701.5502949563279090238164333084801967 0.1235630540987661350116758542010495 0.0744617821682445991687384301781764 1.0773798535675165642450396732411094 GT 1 -4756130279001464038371608.7138137239799669102600817319363711 0.2597885024894449671809535263934228 0.0299345652838309812845634073889799 1.0303917512896514917718929545097979 GT 1 -4276783879802614.9115417345384761345012523443288067 0.1348431657007869223020729090990598 0.0907257558951529377458699475435632 1.0951085316213545774566945113737431 GT 1 -65.4635471491054752872801146782013330 0.5163694741367609410877201760954887 0.0762598775754670390787020946367556 1.0793244996867376222160661471958367 GT 1 -5267938445.1230086665652418760058471562060726 2.7699443055758766650128287361691365 0.0349396226329915343157480614418694 1.0355646123807000848227990251910209 GT 1 -13697280860600067666971820060804012622879504.6111748090302187278773549651823905 1.7685064503383673682079172431442151 0.0084012132304569479050186297499504 1.0084367023297736049792524139752498 GT 1 -16383096796609497222409279069174147771.3590587558205410774776026293713755 0.1224346410287301408699281495421712 0.0986807839903556884602455167055785 1.1038957933212470167867965014287910 GT 1 -22480857326839788274513854791514394678.0507326947845590572242481990674487 0.0171825722161734612360728301175138 0.0858277941808168140651892368828417 1.0897363162821904372346129775253645 GT 1 -562359406505277425954598111721340.3487340806937703711834110797855097 0.4462784155145002357926278754096468 0.0788104899400261960106971376724450 1.0820894983562240115327597817090686 GT 1 -2538974999200766122648711223258644456202.3469207805608069147189596871752066 1.5315105041102845035373926064406221 0.0838837978655777782132494891126868 1.0876120641284792385068951961051604 GT 1 -5280262413536949996777032485965759811465570.2855174045210384443146303363152047 0.1386728046871609725826339473396142 0.0645830712380280852589423381485238 1.0667629359687493704705433659459266 GT 1 -1125046333073456654346422459205994594993003.2186270257926300358498745717838865 0.7592243359214494188033851879498674 0.0715020591006382684410400614045126 1.0741871158554201521967046853656256 GT 1 -1155313142970145490892.8594050222318643665942781951658056 0.1200505138597640743465034140792235 0.0084478799963163280078210814153680 1.0084837655822054887808898937693986 GT 1 -2.0485231851603514487535267673323292 0.1526713099059460248175921636073219 0.0474526339505844378686123485845135 1.0486154450818144252135539710090866 GT 1 -1330631994981035846936512.0051621095755289880009687327424139 0.1253738658297180924399266651232202 0.0088403641942027422502481248866719 1.0088796720490562244966615509551707 GT 1 -178010602.9904394453613429991568988332986143 0.4015780413143599294012967064997242 0.0306079301949689550061342469563720 1.0310861361231676962373980892219245 GT 1 -48087821892291507642977069.1131749284286076095961473616586330 0.3745022070368612153006446412380880 0.0770355057613829608031944435461989 1.0801645129996688514311294594348357 GT 1 -45877079920735274064354.0709989538349217098596679485513481 1.3832038011110170762431162675649324 0.0529291020862756437001774532085324 1.0543813227971757559037528738809008 GT 1 -1428063760458277775594.2759656476090733571586810044696563 0.0073656151260498826073737331786282 0.0709493836099973947534731174571476 1.0735920568409137635902624649104503 GT 1 -505752742722.9813758184523517023457017189880769 0.7590223267075039460213316486530424 0.0385143046969394228514166278385581 1.0392755915438896286540819635685623 GT 1 -182806887692029750689125856.0099879693480959615310222663490357 2.4964871400227492052989211965618297 0.0324740928637838999465679326279099 1.0330130770349346567266554968744601 GT 1 -78246891664841606289629038819519942385646.7607283497296971621994004616554343 0.0113897885610652459055349149503043 0.0583340948280492102671371747900105 1.0601047327369873105218497575939989 GT 1 -342825973700643806357578122389461808377.6002581613185160904780921162625591 2.9419165643565333362730412824278665 0.0874440649694692049186161491535560 1.0915058967405813970170086030921920 LT 1 -346040660.0943237274915267971992281890993499 1.1629171262372638449373130650806817 0.0877644658858511018179857099178033 1.0918570611613846513926307835160452 GT 1 -979237196892041326.9149867525210760810630824891160201 1.0608321423681242528776505854641192 0.0420967889232289550689405112597684 1.0430085383943256205009724439248093 GT 1 -54695596890777370872182.3117587980215145007521661657464639 0.6772164977667032694145375819775338 0.0962172074973077265877975534676358 1.1011662212405375661423207689569595 GT 1 -492.4109565898075342586674457644814840 0.3479570190136571426528901865563633 0.0879977159878836203977331499435498 1.0921127845116912493170929490333763 GT 1 -11883768096729237439491640134.6432642333542703050399123358529172 0.8129875560081979461343516387389223 0.0772991432780915893002283605860886 1.0804501959035219082031288215326393 GT 1 -47202698929529739.5324221389362031523007532140836624 0.1735854115336024058170279489926243 0.0775284051792683083298766411721874 1.0806986950637655214106484494466646 GT 1 -346635744547877.7301360220600711156004699495546754 0.0006665616714157592699864813237816 0.0489052949016420048493940266893200 1.0501416366438138210055976616915180 GT 1 -952315243203957097758234915046616.2012179024436075633736817305039681 0.7413146835699583419873827123596247 0.0825694647521468513419297287125995 1.0861784128211491437602843376986449 GT 1 -119758715131710675643.8984538082439304267985216839017021 2.7376251843653359119597199190983965 0.0904820173091903567590201468029094 1.0948405091569622589988254104400277 LT 1 -87961266809073199.7898369782843176222630281200868151 1.3877016972075070163097686820752629 0.0840100744680552851081798545231288 1.0877499126960601048809279592775773 GT 1 -3122427883170367481911349917212477468.6583265794000740707161528348971757 1.7365712807318962853669234228546261 0.0165089550528588119422515681074759 1.0166467464846229218620265411878430 GT 1 -101.2647307096752601628148783887609226 0.6653041924879579180391511752339254 0.0677961923257158669152442602068612 1.0702038104409350998535666646772837 GT 1 -153276048008576662969.5470212125770787447645462330956067 0.0820973371942951264897065998563643 0.0402058380170028831987944898963253 1.0410364321113967038217869237807247 GT 1 -21005001.5930029534646178218094710617160165 0.3041627963504055512765215328634450 0.0467585319324763463864400792788359 1.0478870306464135923034266706100809 GT 1 -5091335270369651750742070821890679581.4392302631083241784386874858428962 0.2287385291296544523339874639075186 0.0365535821098440481975533972671499 1.0372384046199858038610574104978388 GT 1 -414323516710000465303451320928588831.1961119783482725712562272861840868 0.0437006301160009299928858177838735 0.0861965588262836648972052713678481 1.0901397840757313082162135330947174 GT 1 -2418177.9997088072462056866524201264091138 1.4556938882143427804083078172402466 0.0948338321749860016113889030654313 1.0996367412802520896792043658048169 GT 1 -213421597833934020460849.2776922369248410063647141902325451 2.4451052060698794295004087081835257 0.0413836046081616521124580705381725 1.0422642889271351941839348396485899 GT 1 -179421389011930571777.2397980169241302200433465307212287 1.3597700919386337728014081248319122 0.0286736469589210143730990522532856 1.0290927672204250535062057584932718 GT 1 -83313434877449435.5651015743464672147838296906544644 2.0941886627537560747485821482320475 0.0733469367818801253819900813482279 1.0761760410537621387775499615080662 GT 1 -5156119213415369757940408150077187041844.6870927592240053968556259112958144 2.0178702526888421750148188929311295 0.0339672684423580393554272451287155 1.0345575617436118268553507275961619 GT 1 -52058576416204020205727671073066736.2970759556510828282056795048753955 3.3081627740774156802747001595035654 0.0563513955440085294293440838918619 1.0580014231779128927360748776094298 LT 1 -87628194130099673844484150162589836128500.5443026716759187676028924418203429 1.1952304520857307473249576956541027 0.0985226935772518807747799521297244 1.1037204097862313876145322282792396 GT 1 -940386198900180645.6278423138641755424955652204801912 0.2615256435119013569677165854931327 0.0268936114733954056362059341585638 1.0272618620471811654420476245635305 GT 1 -252647916823.1746881552956520438943039980030375 0.5142365618395295914427550976162963 0.0885233379300451811128997693932405 1.0926892890639908837032518020928655 GT 1 -5298065451457927510572245550.1372794451123841515589909564331855 0.4492732802097924323740243588938970 0.0050775233229783794351407176037014 1.0050904577463264152804393774578906 GT 1 -11103536439187644.8795323363155948436995841153085491 0.5311803477349406715406193003714880 0.0992024884139882584391576491432665 1.1044747840494479314973475360695370 GT 1 -198773991263924386.1684927134765803182164844415191246 0.2054141732637304999198437679516027 0.0685756499097341967279609682714439 1.0710403052386995879750313964661175 GT 1 -109443871432488136631360.7142878989921871626218812682773997 4.1944032774875050842608122448563487 0.0914282630142400738817762445099773 1.0958814322536043740754922854251677 LT 1 -136093064913603824121208929265199379427.8960944153512347479759015927037583 2.8339157996984437718352983780177477 0.0133735229963433607344240121710893 1.0134637539283065678165824136049307 GT 1 -7561186489620752250443258787349619523705.0311309632373031211862039541543081 0.0730744430543319772559824383160143 0.0676360097255784564329238998259643 1.0700319930356278752967478255511970 GT 1 -1860542981448960073110498291917025409065750.4298390064004123965830125451671690 1.8866206092684287812185203525985166 0.0067145735061999859984336166996776 1.0067372176757677456679098089286937 GT 1 -4576756244221435892860797577.5589967294230494009613622527647206 0.2439504281845024044420536101986737 0.0860034848682894926015180108115937 1.0899285203014367190104735600174221 GT 1 -1130447980493817152482.0247404731538933210409879791068544 5.1721894677071071577185551717558084 0.0126229751855146755004793176785036 1.0127033217950252839815313089324939 LT 1 -2575471415738084794100419843921.3680863853657534360554302865661367 0.8300925551142566666646151730498485 0.0924320855329270451477469267469617 1.0969868787649533782749563435664672 GT 1 -9781601062399756806695199699894753110904.2508254751477134941607206724129755 1.0989740069731650195019798483285470 0.0667186342920198465680638698293701 1.0690485526357105359752426192935057 GT 1 -6357470825342818544745957700961.7338531559119276402178193536120191 1.5115652508876357289602208557963919 0.0273920178718017726680244625032183 1.0277741740461306955232332233379068 GT 1 -21182432370154152435382959329869440.8764385004818553259008499017719786 0.7684947321798060241357840270136575 0.0605271354654166232941175736748228 1.0624363434253699572238125588033496 GT 1 -40526985.4600983901161681522893204076377532 0.8755741595520594435736163463740488 0.0131629023871151276714452613655553 1.0132503011818388749818033040963459 GT 1 -2093235611436727310209585361499.0302937381128242917282191796772117 3.6370639639298871554955038684784499 0.0976725436193775078859128697073334 1.1027777911188965048810947796935262 LT 1 -32919171658916181856445576.4699177474217798010251582683029459 1.7297839246437574810174473394771497 0.0829512374552564038635244738497840 1.0865946319729056209815250900172185 GT 1 -34411689521335413607482528436.4877569876301819561627888554370291 1.2521348107167432386258984246615379 0.0787186011417647531417094810047413 1.0819897531739333681117131425436627 GT 1 -5190626003082895071528396141.6938760935348345352313356268971960 0.3031280751915188815427994435003081 0.0246576541900766051343959226570896 1.0249667457062493970346019512881533 GT 1 -14921539931944945814314678655.9416404520091575662082069350146606 1.7586445016278099733430482263907142 0.0579658548957113377462076308743282 1.0597137576059151615395951750623119 GT 1 -1174164486338951645913559477044682653.5408528910292987149948455891757088 2.4772583590691902435777637269495818 0.0063659213394177961544542409066263 1.0063862702222285518076469987339423 GT 1 -1474871318.0291312859454034670291930949633697 1.0231374157603721372148592864747368 0.0782779955583242235419371547077908 1.0815116145106560597485750385588266 GT 1 -14016199849259723389848375487706384753058585.6576485975851333236115795699500211 0.0095561284802702267547091870321242 0.0949789580473607396355410036004876 1.0997970847761090696607138403605287 GT 1 -1869.7942467111303269443615024563700151 2.2841171664359990277115308917910562 0.0058335606325671502564773026390556 1.0058506423111275862384562999490865 GT 1 -3268801547757852981072051095500062771361337.0487872266920445399781847680964687 1.6527746942367052839411398977745928 0.0090893515457094873242522143772761 1.0091309117299027538858721190283155 GT 1 -12866315240140297947987402.3679925669681297366704676462244479 2.2347359940190143534276997179030974 0.0639510832596714205771558534229151 1.0660875423954182755832398553452457 GT 1 -68.3862652182850260458812052879219227 1.4247592711101843220760677909319303 0.0674310695464986182968890475556037 1.0698122101387451208480949577980722 GT 1 -2268519233434378.7972975411519108729444987834128383 0.1834302320777492613006980746509925 0.0616199952574593444696351189336122 1.0636002896890030964253810609584186 GT 1 -7311.6885777584240074038709771619422963 0.0749897253384637317923585438819501 0.0955229156296279344465567732322098 1.1003983096027497736187548825187985 GT 1 -2488229381992142983364466211294691483749.5912639680140056397529953298294941 0.0000052044914300614891087165249033 0.0810412898657440128268403109378080 1.0845140867606508331443023398362401 GT 1 -100585097764860859227492203619.6774305109425954878928644625865582 0.3664736362584588239488188024232794 0.0340757704788402638970746426378889 1.0346698851946846851521416837054574 GT 1 -52229011888501586439661844754360862231764.4297249972153942015990606806143180 0.7273051861322231592526230182053635 0.0600245085765004998922023309341679 1.0619014770117167740360159718815918 GT 1 -325554026090355308528831.4704974110715815254305406437411290 0.0435624980975605326846738108963010 0.0908804726086297614880063114964426 1.0952787001693065073814784532686394 GT 1 -77048622587191293859184737371788123472837.7787532662354264257435779628868385 0.6708018535546730215771158599131764 0.0530196750536763677216585138255051 1.0544769622037309765544207736172453 GT 1 -2844968.9082577662503102412109423656797980 0.2322777757148687354157872793365812 0.0916654944521299968274075339304693 1.0961425700423184857578212976525075 GT 1 -1840116661779991149720.4517363076795493797248358461600376 1.1206905974862492769172832288202542 0.0612594603824686087538313087724761 1.0632161535923550904296283488613320 GT 1 -312536104125117830034391274.1402045398296802972699982836099667 3.3396042496495180762005337312077281 0.0751834103721715804421025279292810 1.0781598426135128309086747640962760 LT 1 -43275967193946754150252008.0582944671092445531324334773084392 0.4645403200589579891426566645369621 0.0239127648460009518044895607040759 1.0242033162824871294083690532189781 GT 1 -113099914996024144.2591602399378045403256860120376486 1.0044502347655706210319816198690342 0.0951529339318202492870768352425112 1.0999893373322200470872469541582379 GT 1 -801021262520235606224145298636041392692.0179498608535654851539907237798634 2.6240169972605093079098770107589523 0.0950179759507549069333347366493050 1.0998401984084924642008455268794651 LT 1 -23319055.0542525146107244558147338477461974 0.1952950136114230292383909758694901 0.0883984226682337491282479650769727 1.0925522513227605227705832027077725 GT 1 -5004931378302235188418558494745.6458832275639098410712712649286808 0.8137080568865513949763087446129163 0.0272731530529842660306248235604288 1.0276519690486270614054033589715755 GT 1 -411367635605202415485052075521774023399.2130906362925668983987119244046458 1.5544099050329626697162442207302588 0.0436676471882391545860616629537984 1.0446497769620940310415586381676607 GT 1 -23459244966108382835613305755889729.1765176033071668849336103370711954 2.0017505568711230470496737770948764 0.0605886069364858262261072690315914 1.0625017774411615622561125803983186 GT 1 -1214.7914931602634915880240972346084616 0.8477726586697979296194387001750760 0.0250613158009578040198375368622717 1.0253806979628054814560387013897078 GT 1 -1288540.8641995061092685177724213886818575 0.7676495245977704368596545661072556 0.0448560653695039153913133866886538 1.0458932329674844618108855731026887 GT 1 -747682.1360608938029171923370671474513413 2.4352907619716593506078278381973374 0.0838555784941811328349595182114995 1.0914165000051722643548992556813845 GT 2 -490030700369394830740473640.3235422709093455607518120153013195 0.5830606911900804566425633249629569 0.0500874198486672232580096321355747 1.0513853195150666151068511818893017 GT 1 -310987417760020.6104468911643141398324367651859547 1.4820531654538821890696968562102950 0.0536378756746533702323528929825915 1.0551299879077537571973472230802861 GT 1 -2262.5052487337516407457290411646547730 1.5394734163776550679121619443525491 0.0931726990841885001327815098979962 1.0978032539252440503423592077692402 GT 1 -20669471205650243000.6844834181892268373626990657066000 1.0601306860549303936824571944019895 0.0530079089405362636412656775067981 1.0544645374048893238429334310051493 GT 1 -24068010683642082287617584529670819071.7028852484866808772651543314002710 0.0618041948200689686853468035249478 0.0606035087279761708629641771062117 1.0625176404696435055409558255324761 GT 1 -135983033382322498.1461369539393998427222555068142174 3.7455764092707846490928688155227495 0.0000899918848898716186412729275170 1.0000899959344024953058933033479461 GT 1 -160187689387464660.1290507719453128803273820221161003 2.2073674490475317742610630726675359 0.0223633985823473819753352995711720 1.0226172511903280633837488523792231 GT 1 -373937.8524739987742801350964560320461773 0.1359546929332226870654310331205382 0.0846620344737625321677170268555399 1.0884619206728221631963713361372437 GT 1 -45416428611580.4391424559562389914290651791129935 0.4175803690190592895488950501310798 0.0939995856723177089548159695278653 1.0987155156239396740178659142190130 GT 1 -223.0045584117035359840461834807845964 0.0814952311672942748866505735619437 0.0281498592771401345092044066048794 1.0285536626191212705489474913092164 GT 1 -16811820915877339108214008808304715415459058.5952311577392195650282178710143583 0.4605698119551016406159992615359614 0.0934525299760849070575656671158969 1.0981118838881199625941019427163409 GT 1 -54435.3594102425057110140691607117500401 2.2369450347456664276601319778539222 0.0618207203680498630289538877457187 1.0638142185672724026262779333379636 GT 1 -216527747590695726642334805982632323305.9311272998785050018955083817479480 3.4905063940938455116739653044631272 0.0653068301190367129076587486954801 1.0675369641050271993119030299318845 LT 1 -218208329674746111967011805678.4701138187736694199591635083607060 1.7789791886423123759644972701868909 0.0981099141013434296513436928045346 1.1032626223327431403628368993874647 GT 1 -25252340.4142314038484368453086387798955914 0.0712990422392266626494158599887544 0.0120751333281489923094804975420373 1.0121486300045969811799690435869599 GT 1 -1621804173052384067915.1854893008212133694299420511805637 0.1283443138852197515661552795734472 0.0369462558965784511603436270800520 1.0376460597034569847934660973477478 GT 1 -9379575438326186767.4920225024773366360529863624992055 0.6839247795539959614749002101983302 0.0324193870192843687997023592466889 1.0329565366388940303167607605283104 GT 1 -14037938.6483249651394960441880361416828192 0.9072229488521341262315809435731951 0.0637249744725429732330781594870696 1.0658460149726008737790711565457510 GT 1 -328522909463338156710835122.7412526308131625777975116069135381 1.3256720853264290237372508375901258 0.0055689840950400204450324626052756 1.0055845486998873782667720974383731 GT 1 -180870321339996638737079061.8597286819714249025515399024678752 1.5335435191080648596550895650180435 0.0339763060753386273915236327495707 1.0345669171981021354088751055402699 GT 1 -4115.7334010900208963226340694434121455 0.3051821128871398897290271652058609 0.0791811452331006290128085335773837 1.0824919452779153687590623524643361 GT 1 -238032085504.0081842666502265359038420337181737 1.5255716930862035655390239446698623 0.0900208641091888223597387410208197 1.0943336073265977831073844797635073 GT 1 -38515560156698998879223688432427329.9988713149295779017747080257809117 0.4288735893237092596448987768554071 0.0195494719340334032599561320963870 1.0197430904412475052415074916148291 GT 1 -1772.5584924848005028172867108759416413 0.1594490757468388959450149764100380 0.0169993539738832415106263781220854 1.0171455016366953475146711317587828 GT 1 -198.5707929818173576089112733110489121 1.7405855537287203000118011597706464 0.0589637960304254385239998619402009 1.0607736662053250036748487254513778 GT 1 -29509.3567768789948521109179470263613898 1.0252494763595338317658786392309285 0.0346804398083405321499401093742877 1.0352960820036840142604526948046879 GT 1 -123306262392096329777062.9853797595540680057874815693251447 0.8705115318805328577477193984334271 0.0286183942008468698998721297432713 1.0290358850134647984300253478176405 GT 1 -149581250.8953352186779800289596665605657798 2.0982590573822247736993081563811309 0.0299743712240397935562243151341097 1.0304327864152323992972415638851328 GT 1 -7210927220017896073880404077711084337910149.3119958479279488239645236327971385 1.0776569706365604536974098299529002 0.0748713908757333152970597066231593 1.0778225142433454572592056486116604 GT 1 -899102534683984.1513031328356767351417011399673682 0.6567515124641278552853239797787296 0.0385866557276447591026436110203332 1.0393508435766281280467317040538936 GT 1 -10509005687565789240612160396016764693562.1614433577075612216457841690221416 0.0534337884156674621188319494044908 0.0008552021317204757606689103318733 1.0008555680256872659857251185123178 GT 1 -52.2794451891095673155829484706356305 0.4685113822933410801346429204803673 0.0999077334803581352581144370797567 1.1052580025573161170419932366489983 GT 1 -1427802801482595791191508463111715.5026152652632450718723290698511803 0.1533808737864169397585506490846502 0.0397525379579870842004844313292405 1.0405642547775662723210880681860474 GT 1 -5272265.8962389155087212120863584525964992 0.3110801850897108582577036001194664 0.0020662713462524273251497908107227 1.0020684090300881074557738689260036 GT 1 -522152074223751796.8359039608063789717105551305945749 0.6536641466100473566012869144437442 0.0050356985401816596430257495848515 1.0050484203970034149742180510612317 GT 1 -732031556562658622271211234661.0871730384796151809799951021277290 0.2027571500295131951654354775393064 0.0267554016812019178456135055209853 1.0271198426546256667589941008252938 GT 1 -54487932137.1859420666544031749773233479693014 0.0141176415508949730652982253401066 0.0428842803006775038653918166254623 1.0438309756132808019701884407795017 GT 1 -56601314477904953615256390.4057409438383573374035302927552674 0.8813409583417338395517831402037860 0.0981884761177783587215979140060786 1.1033497343207333864685134532224590 GT 1 -31795147054760990.1977620204515970609440380573376186 1.5584199817714046897264812037396912 0.0262138646939493183444160023876031 1.0265635730571667195920480127825299 GT 1 -3575662798857773684809083770726175101857.5157318328287229998408582988535930 0.3567741278806001319891763554948424 0.0356275321580119027341247275584402 1.0362776815666806584067811553102111 GT 1 -4330132008305136275343.6881151227871932763424077314239903 0.2271437114046689750740532320691865 0.0737612839067168607266399612248279 1.0766232848014757125563396655087480 GT 1 -21.2931581691015898920338617268146596 0.2678401961432584332995071510865223 0.0049919829825917446848664093301507 1.0050044845520762861878521096665915 GT 1 -3990604.9806903594668225395704264865765726 0.5478568979241251043141626352033081 0.0902271092345582586052591997136574 1.0945602812065895501124161483395822 GT 1 -3034703270254400109.7822025509798383381354217953326436 1.5322700478936022255051549090455896 0.0353148415993085016828504247065942 1.0359534916024326028631253187310065 GT 1 -346707810815562099689973862554688554238.1877459981281596232900754206087305 2.7427454843641020428934935220110783 0.0178018285207056604704739565587972 1.0179621870369477320668922204292143 GT 1 -1917852786562269640.6883488195954614330481081426305987 0.3680975161314412543486844172418028 0.0142570347831905637733198228827220 1.0143596427278673669682134450797233 GT 1 -138843918478803851.7845442094419737244863866352750572 2.5759256330219583135710926196782195 0.0466974070520212906301967435912950 1.0478229095156976924701244979137646 GT 1 -2549178768392502149174046087765201.1412480852134108452047211829321837 0.2198098563209831400718865172153428 0.0379467693384466579797909395187458 1.0386854965192446595120803266250446 GT 1 -159686.8447046954510493699315310703762782 0.0338982586368128356795604413509907 0.0471234751314570864785650651874858 1.0482699483931557908092407627959196 GT 1 -10500116214373928133937035700601.0561985201413462953140930044054589 0.5613080845827848696087596760875495 0.0935359355538558335776771974147618 1.0982038916621953156566872195171767 GT 1 -1531437334.3801316760307762919211335718277616 1.7991855481327163415390197362877097 0.0251518886816121513796299946001022 1.0254736033829547229780671159101886 GT 1 -18107217498051096642178938474415707804.3653222443180575210780367000750251 0.0145395250720307924090591407537595 0.0155716357415612500828088251296326 1.0156941471273591388878891623108049 GT 1 -747234605988997624018045217.3576304431405339140553179088359357 1.6934901450074532831967627094998531 0.0593928622784461904328986584188624 1.0612297210228886508469475551368645 GT 1 -7785.1357285418377706918042215848078933 0.0325326602328048301907382712648090 0.0937943268094808782282039236898310 1.0984889863509962443861903653509373 GT 1 -417385945.8681772043218819074280659126543197 0.7819268435014868362694000066335758 0.0621329298391077951678809284906900 1.0641470562649920193239044401123015 GT 1 -451227782117299429284.5035258163381111508963743058463373 0.1122717427918207484890604593975957 0.0170183471622107015131266661358239 1.0171648234671503079775890834635556 GT 1 -40233694762862653581919001895.1606103905676439477879111896339293 1.9219446323223011931440961856450997 0.0750490549066221588323104136365886 1.0780145752074590832403512035314190 GT 1 -7447283024069342008436385245.5800856714347459585702195833163092 0.0843983539729959247556826477585372 0.0461952757291398082822595156836808 1.0472963200260018335746626368740690 GT 1 -591609818989548036693713467027639404.8791828500213945556879451306000588 0.6199392272408870328096223805635972 0.0998458260702360546060734886347807 1.1051892259623394544869581390069552 GT 1 -427270084.7372857907253511558984412941907107 4.3764620709872562904199033143143269 0.0593296984101772355905637913927254 1.0611625710459923034183889383391520 LT 1 -42296663716811599777702560099.4535722754536983019723108974586852 0.4036444224055928626606117752688755 0.0732593561064386937407120518998778 1.0760815326121174274815937677127617 GT 1 -125503450511344756566.0857197004819052565123296795844577 1.9971986228026348790134270009221418 0.0574067236608327799189679320489805 1.0591203976187671015081351525691030 GT 1 -2372506329493931743008872129536536.8866697682037426707167012523722720 0.3294908268283448321820649372592647 0.0913762021538127005781583335247987 1.0958241342254684738720733384867563 GT 1 -650751045705740515513279613484042707596.8795553395832769616395710353473978 0.0015874190560789029040647720926347 0.0015290832816681324989325000737313 1.0015302535225919573549402695582788 GT 1 -401526979936966242612639979.5422534914997055548559112922842088 0.4866333256578764715577882460962286 0.0022703756887506127742992700807544 1.0022729568992530991091376120753793 GT 1 -36821708406019374359921.0570744287842257992384035441582423 0.8570920351210761948873715980653204 0.0656801131721145999159572786798565 1.0679364081396221034977352464602010 GT 1 -370428.9970303688649775820684718832755873 3.5024423724360473136970863531800070 0.0440851808238336354317626762261533 1.0450864711806513444915868904374709 LT 1 -76922276940875304.8146304743696149043680334016216470 0.1070020049648213656711131275652784 0.0281039482314685183748813940326896 1.0285064228654358290562349975254358 GT 1 -7940136181029050631991328.6967569851003744801633575150006269 0.8344774118755746678818034635918961 0.0652791533431988387220581849034255 1.0675073539966241876294667079748867 GT 1 -18176563480300025192049303646025577520.4555802973992671359644188011285292 1.7007760307303637622038527175076245 0.0526148634412236656327287821389240 1.0540495772805568502555836018137645 GT 1 -322.7247708626102098105683449602065979 1.9665966703567270304632636085886570 0.0439938099477034495453166621823383 1.0449908910015971709751269993745189 GT 1 -2749025742978481822615.8054023172949422607010953675829169 0.3722692560361481555785874656906649 0.0352156565669647790473735898029632 1.0358506809258846449225043898668922 GT 1 -176615033770022616445167199179360.5386000089113880016649488354505117 0.2870209442178961770556993733960791 0.0361093985016121751625350615297346 1.0367774747342132281192719327371295 GT 1 -17738748204005294555179705.2331056855905881897911455755239381 0.5488770837012535346500022823874639 0.0388623148496196109150522324617834 1.0396376074852528645665268523256415 GT 1 -6621.3751261077981364346593125070230650 0.8327609917795568729110905487736040 0.0812807987573642548524103582591461 1.0847747514739758462243732305102135 GT 1 -11283585509972286553269937675055745492332973.0347512961573414346079403894813586 0.4217854739948156163736459464989552 0.0609426613785371565821376101378000 1.0628787381435378231762933555975475 GT 1 -5.1589227668455751904277297460123501 1.2721585394249805868488801530450000 0.0465072086815905165255132377421634 1.0476234142026389721394774679281304 GT 1 -212759651504629384102749173677113601.0106491295627268594396551875472775 2.7341484709899346742279693379788662 0.0851019604596827721587383648473090 1.0889426521120188075253134519212462 LT 1 -788296840.2661685597610361962732313301870515 1.4630661156902395729829128739683936 0.0355808613193585747125852101326605 1.0362292877033886274163693822682182 GT 1 -4053873126635115954729594014950916340785.4119036073823078579492656094506861 0.2575664394836325640617363525734575 0.0866102271876060099313903956016045 1.0905925751272998747749098877636732 GT 1 -4824628598017009637475062080141619662.2407868623257520201321105184180075 2.8168099557602308524955206803964748 0.0733954060872238079481662605441584 1.0762283481953711161610429104959856 LT 1 -5732.1909337684382444189663316026646624 0.5978613146788205278376729668812445 0.0611674770560647992552018820893641 1.0631181725035638923191216019218187 GT 1 -4498719931641135269431545807578414168866.7533748489839672114114133107434781 0.2460410929111114339920842653187025 0.0045994813117826239541033802481371 1.0046100914726096704311564134671069 GT 1 -22769048397534741005607.3685262355516728597789596240759178 0.2904114200615317896560818090779526 0.0308981964333836530746119067709030 1.0313856121695678154974367134176036 GT 1 -207759444201061.3829815439163418061361295882315456 0.1251763334118349397457674063284331 0.0106362293431103916595252532853079 1.0106931983474537993748644054011764 GT 1 -1.2255644742273666230390733238368345 1.9327722051647860575662521699816317 0.0428160957356824207324951811911635 1.0437597385256583963843132969849648 GT 1 -515557924994867875.1433329303016765727053397353100487 1.3284862256891121900702417105522285 0.0385599623664533052253760703316688 1.0393230792536232085863046079915788 GT 1 -365321370555290795490560806924501315.0581157731891729296131857181129725 1.2141465250077889632611075534767481 0.0232767395830522978566775463736732 1.0235519214985275164392609010497027 GT 1 -39902036.8639571031637782134199627589466486 0.1615625256007695864887492413428672 0.0802032254335003699696128922610674 1.0836025305507598435129436960277110 GT 1 -14149123323764747960.5841821115071157121792530545155264 3.0345818511357145015827002185972081 0.0989682526240106655023116102663472 1.1042147862831423302137505138884181 LT 1 -455340520.1009252879490807654998076736695643 0.2990760267785552641319858376536672 0.0940731718120257888629516658710574 1.0987967397901444605597740134670270 GT 1 -61070186175983456134359934214543820326712.2849089812458029218409295808129029 0.8363469556387604021918707341264593 0.0992135683191403031958926429443992 1.1044870842314001450525137379384153 GT 1 -14417290749525068780028816.0495727838420068495495041857731780 0.3629318354528520854851172746701974 0.0844166542858830164752232062010718 1.0881938805469661750415195897117856 GT 1 -27800127661404.6973665442394732869720903190295347 1.6217302370722867077578604345428697 0.0199837729376582975840708419471223 1.0201861492277260856570344706294036 GT 1 -1394119260286.4278527194842703879291713150053082 0.6055900413160074931063002044621817 0.0106435284420685514307882169710758 1.0107005759431365754816751714585067 GT 1 -135530660360222696499243749.3778561874802305423996934601062979 1.2644875453360755119530307882245187 0.0755991401549676631800187054592328 1.0786094704167962477224467896457534 GT 1 -22425537168794250575823083910.6535044151231671965632294019459358 0.0997912330905357975171884973372649 0.0054558714086192279147407665699626 1.0054708090316409178649348286669969 GT 1 -3685778076999768018935.5615404038909969947973239352991534 0.9823355812748381948136691359155605 0.0823040956358884325883057553687611 1.0858892021026068113084273173910715 GT 1 -20844323090197971.4074576679748832481210400741352069 1.4392041001774118722537156056156866 0.0402654473700506165057930914387167 1.0410985404326873437188222138894341 GT 1 -4445003959619986316023425528244707.3781488505977711093469716054738021 1.8951647453078130030659782087309154 0.0434068986463913424072299954865068 1.0443771593931292334610216796576432 GT 1 -16911949279230588023.8889556385359115501329550161345554 2.5855014606526016140314674616016620 0.0182436386872441284252044975469529 1.0184121059801966174821040611734337 GT 1 -883038139265898735619493464826457797672.9445005430867050144515510166274301 1.9669359195679593123791500910037213 0.0045568230382184793956025474235360 1.0045672370047638203905553282017919 GT 1 -674801298.3180093410852653303070303208439037 0.4825222935386691977152878339204724 0.0018322037629666022820350670998926 1.0018338843013206384416085133261993 GT 1 -7394621071173245.9909527003771770393496206965763467 0.3878356230222866301890689914332895 0.0496140947578704282107639953940188 1.0508871608266043269943204112038627 GT 1 -11070417763516.1904464782415014330167138676704028 0.0867853178434947700170465272055566 0.0291338222271795179957448248990697 1.0295666391662479204521219983518515 GT 1 -15718840900558402394944035201652.1203705019332677615068056904466165 0.1011334611764671703126546447918131 0.0008608616071229014880945925263799 1.0008612323612701560639946994092342 GT 1 -582413678122749.8185883162720735527198885733259705 0.3552984963394076450401737427278946 0.0285591301189123050580740535804284 1.0289748767816836662284927255109340 GT 1 -208.8682552644229654274043767903173641 3.8155723384600839770947174755145713 0.0046243282087645977103319069877244 1.0046350534920492136392426301084077 GT 1 -8202670280683482932094709.9074303493541864350236818672490915 0.3865804655923637271343170382198134 0.0799256360292653752601746159951113 1.0833007818026796366101103861056074 GT 1 -568955515679340240552.2787567809644992762794289091988356 0.2189973230155492587477392843041605 0.0810377141390360535980414396104046 1.0845101957047069104709022118002621 GT 1 -112245508653674061922574031488.1392508169035846984092874767113058 2.6807489074937712547636503858904040 0.0119299106812330638357574022679987 1.0120016431443956225224224869552501 GT 1 -171730614383939384771517.5819275235509708526835881826701820 0.1519652609513216556139839875527765 0.0724561953483826728359163222399592 1.0752152568808910456852322230659713 GT 1 -1737740259212036618086623156123.3083993868222768266857025857889241 0.7043300908885157333659382034040458 0.0388977477144724787524726458081468 1.0396744737100844484499583433503082 GT 1 -315782077470725185059885200210964187.8170849164565819416090709929121576 0.0607839348019457039022445088900101 0.0472628410338366338591058902845185 1.0484162171818512740641056756953265 GT 1 -758998599164677272316.9342213295229113473790412632506419 0.2386838088483642165546327392282643 0.0893979423085083001707241611400998 1.0936492963744854202350250715132161 GT 1 -6576.0631907446554475190209475735674768 4.5658132192117479831681612689794558 0.0999992981748609455532599883574723 1.1053597358524202890457791525427281 LT 1 -1042680558.9321007057867412418947204688320875 0.2795114405424339235380425769360417 0.0655751512843043091717206037953349 1.0678240740300732836598183448610875 GT 1 -23137937352160132291.9281819247262991034799767550000222 2.8749489365967528646260351036528901 0.0882382077701356957973638628704644 1.0923765157549796496279868043870393 LT 1 -510890163392738780804.7223126531823607033361171260242023 0.8784485226885465286548134225288517 0.0649445398117886877796316507597334 1.0671494357432402661128689190652825 GT 1 -385643680989664884643432.5804621538744094596049360690184685 0.2907039272243191979036930987826302 0.0722638136879117594901852942563850 1.0750078686030058203693947999963840 GT 1 -203321214462520805813.7565743287259825289167357875818668 0.0428091135899533912105406153071656 0.0588334044107558430037831247746019 1.0606351140579062988101766235085238 GT 1 -28124489101783891751368733478170022592.4793822997417547303373378943374838 0.5950144121314158586758327021491421 0.0727582181437565252565689113658329 1.0755409255729924040962400300233218 GT 1 -14210544951500243131470583145762539533.4869797594165287194117289162690984 0.0599317445307641029721135678064456 0.0375440742335551196791673842150623 1.0382670052801422917204675038262291 GT 1 -614381676079407288.2699455596878335662656315905406328 0.4187167278070537976088707078987135 0.0592983574418334655948806468835448 1.0611292539037396454522226391736721 GT 1 -30672945585.0483829915639017206151610984852394 0.7905499970831435225863056421256662 0.0367906203792111298870173145890414 1.0374844664966005036974425697387989 GT 1 -10271347773343144.1770238480801339463870408524587246 0.2832582251173935219105396980266775 0.0341728613865658949095798388955302 1.0347704063170288530049071141602555 GT 1 -280311999279410705821448847.5435037868657944473650511204379090 0.0290167142673382474687014928854129 0.0250303317299422681667675242708767 1.0253489179348068223707212285077101 GT 1 -60232762574205966176950824451042426.0731819740402506049295041034241941 0.2764790625834917687956422084362534 0.0063600261773616137646478271140118 1.0063803373092024562712792482232799 GT 1 -73385774897080462231681168395382332835.0826741931262303688508903533447892 0.4563178652012169867612202694878637 0.0919112683579356985824435698279240 1.0964131830825764228421185090742990 GT 1 -104691593171531303072095249.3591245965144986157155814805581228 1.1477347444893290330330982263867316 0.0003147208140594707149170370436762 1.0003147703490482724665333906319311 GT 1 -522041280043651830.0893802215876636555377332913439155 0.5511534630828742135582505649742530 0.0151263014587377704276633099274697 1.0152418708627605062247997751376481 GT 1 -4.7021589162144619071493895220100920 0.6645541604552177804401977239386954 0.0128863462035160200746637762634872 1.0129700954216788089830958759060028 GT 1 -164719111.7590618643422621710274492413909674 1.1953916316076228417770644161772127 0.0466501857332594236336519796489123 1.0477733762933936817344498265891320 GT 1 -828779869969354339744.5418950087556988352549443102568037 0.6037055399944971700720833367760180 0.0623048731939923269115714107143592 1.0643304075349678036131873245705572 GT 1 -41064027050846674958193917495.0381837898885020601052686235444634 0.1184302402041230179474041174215966 0.0738086269165421625290153376358693 1.0766743992916928842680793530087839 GT 1 -7945176645395645000980550857084278.7621127197698590863842634867583669 1.1562258218710474105124636560341232 0.0864984228983304484115038367128517 1.0904701767269566879368341506587663 GT 1 -2117944218047142709.1171641608943763015275290863948175 0.2124758549681333477221142790620434 0.0430417720646212091030286124435345 1.0439955374521729079553369338405639 GT 1 -700634848004173834973762137.2262394778735608093786797095483781 0.3438057309596181548347834630339099 0.0540302110476233827849390948403870 1.0555446460085221378550868995475473 GT 1 -1.3404850188320452140646044542293521 2.2465221650092368283535088616318160 0.0964763077157681043480500938806854 1.1014529465108959105872131274465493 GT 1 -9676987103259240156728659.1066208780944826969864984175431777 0.2526964898959269710674511195646496 0.0136990571246703121070371081731302 1.0137937550504980379902907605236208 GT 1 -24663971897555452657771235881.4755463878132931231893837251717031 0.0667057898058076873688979880788012 0.0064313451830209924407188852103781 1.0064521153849033671243302529633502 GT 1 -120989870154740283.5316270717696828708442295169534591 0.1516183870443668016116337462812560 0.0776090041662632464650628130452097 1.0807860717469445374503719097615676 GT 1 -100950139719182.6311387804880275597105837649051908 1.8660704878550545347055728757351496 0.0121984586998378765723251815358863 1.0122734705405653617529599881624599 GT 1 -415046984413864.8161306958811186479248445205923400 0.1056564925961658889825996910770643 0.0588525629812625813542189461167346 1.0606554704598408425081369370680130 GT 1 -1849.2940389360368122369019999273804762 0.4794224984256448792623476662894067 0.0860501263689526016331312422369759 1.0899795518863452898960510586760318 GT 1 -45570457738685033581347107066822656549928.7127452944391054810478375183522991 0.8287590694920681569226433767008198 0.0895775987424233898925956761548188 1.0938466099620268488530353591495527 GT 1 -847506425290229368499398580782.2696816604132708643373284845904120 3.3408448916772990082516519223010353 0.0639197667296688099255610502866829 1.0660540868723253807219607759491734 LT 1 -681922217702709064863117943450.1628923649670146600326763825989319 0.4574301571465241731002015657014139 0.0838663164784928921279604027729486 1.0875929822475390103747410221378457 GT 1 -23191907384730007069057085453971507713.2051682201944636009957679576213252 0.4844211589961846665414686538551074 0.0630741682989239442966884625327011 1.0651511549448645283064263120147458 GT 1 -8277614616792791470.4180631111322539824038315612962769 0.8549177830690474997950109962989459 0.0587957509612054356409048891007378 1.0605951076482629643166938517172552 GT 1 -76114104721083.9180021342255959156664368742378627 2.7971831385144846228924063819499878 0.0018168711746342859000977739938017 1.0018185236869715969646864577444201 GT 1 -8023222477552122434645499236394894606108846.9980524905532191633731432898356169 0.4145753607888975773254336304004734 0.0871157812390743410118256590637396 1.0911462204912646437819186769470253 GT 1 -764909028814027070921411271.7268999601953828291326276880934377 0.6419956679152952675001798074172724 0.0336819855656560452548717222823183 1.0342622914575455876852023818757354 GT 1 -197766554524701492777322628080602.6975474741816195946381297443442556 1.3923838459100870671143078685960588 0.0836614702488084868021456361598419 1.0873694086194599973501515240028728 GT 1 -36775.4241238052345111327557333387622920 1.8767456069637712749488479846115458 0.0508659644485202892464409182230509 1.0522052516189261734913825519296922 GT 1 -4440.2460296393121227969292370838088796 0.7816883155447888193039825178212164 0.0501086144052082773459537254361383 1.0514076318766829458552096031908782 GT 1 -2717947298318492722388117.0339848775750745469112389455478215 1.2054191541061615206992266422259273 0.0910587326382086225615391913685568 1.0954747992553926911811754981555696 GT 1 -72784217526265752596.9659466597141922370447612098907231 2.1987801292656785312768680706945394 0.0029768342223838457872358874637374 1.0029812738061700410234678190769033 GT 1 -3.1027828608124354902543048690618675 1.2674994704926288839267112024512070 0.0480393026643092549761761165249361 1.0492315293542415891624199450622840 GT 1 -43931.2007064267288268886503511738526681 0.3752704946581884037420527793072134 0.0789624201428041873205909619313888 1.0822544402398321515963257165179859 GT 1 -320494506903166826539405187113620262969525.5447312054436721100651266510530563 0.3950884815611094175361621228717687 0.0666476561781272882957538278280302 1.0689725033138061930525924527425053 GT 1 -3195823439566512724528876723626937.3025397990102052469558081660885200 0.1843126559461541113253395398708659 0.0273384249102039823394023565534677 1.0277190732387258902256103806960888 GT 1 -130021740320099185528.3927374682248021448865398520336598 2.0234386259497534638426226107572811 0.0134553848018170212237990959812400 1.0135467287963696092794356269350806 GT 1 -201564023107013383074.1352264472593432505145375603343323 0.7902256107724046440174032776514072 0.0519198148998398027980122729089945 1.0533161968651050727304307737182553 GT 1 -1420773821221805445176.2394005130441351425204096820301729 0.1474577742439914354845454703873085 0.0315440162455184716788756346811311 1.0320522450207557703586832150120638 GT 1 -400968152003283198203.8189142102608504096693944857471449 1.7939762795575553402025347739981023 0.0140010800511993396479944789825081 1.0141000197667134778935241011043021 GT 1 -3.7150206838123880553591230058610893 0.4594448806766790904129817430036341 0.0358556273694539515907504728657648 1.0365142314455500230492681643994821 GT 1 -14.2489237336847416971095794414204410 1.0790619741164437128546430938100862 0.0280994652334841862203782031956217 1.0285018102449431350558978712588149 GT 1 -6232741441495800606374437825058493832796.7392498135421965741288259194204728 0.0168426813973744745317506184209856 0.0975183886588035239582799594727125 1.1026069642278908561072801783672091 GT 1 -9098017374235637522267643567784.9164215423480972763386321208428458 2.3513863604585772709461358585419043 0.0066534277938907853221111423215869 1.0066756605153389155371261487850116 GT 1 -32397020229446474613117304077516.1275922640179943491258965401160125 0.1665792975762665556602182201891323 0.0685839334713331314447940820780739 1.0710491987129071360726041525883848 GT 1 -108417923199.8912944093431061489863572050487110 2.7204765341915107721116026302960366 0.0435666301638074488001221239678631 1.0445441529190347714207756567241222 GT 1 -2.0745958792175116085827149147564851 0.0994485574887085342035455199675845 0.0223088578680763843439637978584685 1.0225614644154867951899542174129790 GT 1 -2839615355059773284383094122322745.9870188005613933038491685329206133 1.8715997378440751298516343325430788 0.0112316722398325307243290466731637 1.0112952237785993919518181075253905 GT 1 -222157325330436360.3740293612928978738058480194414622 0.2818589553812166537720031158866587 0.0369056830601905979856021060510022 1.0376039312324277337377734507725381 GT 1 -1839822984781684904029.3122505854664414626181703840725454 3.9168634491862704667550086150057705 0.0972835394711554885781679063427407 1.1023467720721018900897925419593165 LT 1 -4933523733346264.8756931770862808033164471829111156 0.1618045850887795074422224203037093 0.0818507992184052944890484348022088 1.0853953734833789891648442676817797 GT 1 -342958245851983202756.4955351414399513223784142769485865 4.4643051439779492608458311096100427 0.0835758578763126983791118804463116 1.0872759842237410707037994419729667 LT 1 -3497445200344212620091927590329134167140611.7649199008722904311609907862461729 3.4890781409920316423701512584946793 0.0644039806338089018092767672317168 1.0665714989132813173849766632772481 LT 1 -4895560764057549962237938.7757679370319564598569146807816095 1.7154925448632071403752490253048478 0.0363716450299009436610531445891398 1.0370495825949705246978661470910699 GT 1 -49976055909508679.9590213040859246813101106081903172 0.3269527904522094603662581757811758 0.0029129073383012613222459583833051 1.0029171581096242381739910496693714 GT 1 -179086202862582609887317.3021952514119787654323671400410722 1.6152836552999158159750259676593641 0.0794258283759975248377768355531087 1.0827577040169028710210808314627684 GT 1 -938986413910401201836652026220132.5658227128952509899373815966761329 0.8042034165714994017287759066269208 0.0040498983615835038068675581352401 1.0040581214091333844822681225014751 GT 1 -5098762689527269.9715516914903143482498881443108175 0.2137307535863550002412245002104695 0.0508700521968120862882807977181013 1.0522095584469834380790757993046416 GT 1 -36339061571192718853674756028732339247.2519976074062792867159333043534658 1.9507784150002065100630132323589995 0.0394662117738590076362551608629172 1.0402661196450945920067695541051699 GT 1 -895013764397643.8246651902892486710833829424488003 0.8073224718012353953428007063039143 0.0840783860557686056972174515568918 1.0878244922663864285304106430790091 GT 1 -11899484634047.3615893152677693383636425300515463 0.2446098790270309163947826578820834 0.0806572310967222927842112176805575 1.0840962458580687750561636976077087 GT 1 -1121758470978025171773115624.2070026198435828178743742624954999 1.3841212451408544711658996521076835 0.0975391754727122056987080133833148 1.1026299974432405730620637512633231 GT 1 -3272288305647967644921.1874099627253762669863823604340354 0.4225539804153619313877776403203438 0.0407276375445851034917302589933199 1.0415802376895738264036207496952055 GT 1 -6758689878976284875261499246137335609306998.0906747696108533048629806682378472 1.3821938492808727378646918737511729 0.0041746733079805372188428426954172 1.0041834115847078928559660239563149 GT 1 -512991147393890579581041526541739.1786361692400549096686110875518466 1.0322403302056262354897634831063601 0.0488007941142351741664375700735154 1.0500317684610808089162388337154937 GT 1 -9262048997555.7937015266927662206631706722489655 0.3325916062629357673173062937006668 0.0386834041372493264533548186188502 1.0394514800806599135445559301422536 GT 1 -1266237066068370182066586888113658777619762.1778645096874709341860447057792302 1.7077686369182916657945054089675762 0.0665065180188332785311202069232038 1.0688212983694962356796493642287674 GT 1 -8200249084472562549033617964559730505878437.5692166653402442047076408281437948 0.1927339167980534090556065431782647 0.0830180221876249497786919462216381 1.0866674603404225802906196841090248 GT 1 -2.2569595689751328173110450876318662 0.1803575146800354622229497920169363 0.0894284551400253940465045449479439 1.0936828053507600603667411139105575 GT 1 -336174755627839618832785008256889084.7054396584584467696417495844344993 0.6038485789795195309982033912645888 0.0509912414728730000726081391879685 1.0523372511975937243351882321038016 GT 1 -58802519179188468178293830112.0842522482915695006468665160355440 0.2385543003991490832711741387188354 0.0801420847835046114914950722686969 1.0835360608482033472353306687246739 GT 1 -9314084420521454069327825840740036.9139252786814300130269632415515409 0.0703531355464470033772155829093842 0.0657559540986737097342513090037462 1.0680175837689622065362112382399993 GT 1 -11577789115837602826449899000927254114332.5726883532612642485424891575486020 0.0653958399004232542670004876459017 0.0610609166972897245134566308212782 1.0630046758903070125929542287228932 GT 1 -9379873251207815043879360.5051234267109079737588298229269368 0.5942804231778984338177311909512558 0.0486777407980134580569978677913654 1.0499024103238388373113074003204583 GT 1 -19310973485933540700518462.2309830533708769747048864806786089 0.4286583672228376990257303082673708 0.0625580796382923795053846047343244 1.0646004746708302199746579353939864 GT 1 -2674050.7289452304017166618042101492358022 0.7348108395534715672679562028006487 0.0781043098865468605225512979681098 1.0813231961929059524200838694230886 GT 1 -8644140610585981332403198411911095731.5252803750250877366311835879193402 0.6393180104414964671311661582251066 0.0726171772845725883804525315911288 1.0753888291766562779101179292674997 GT 1 -11951450.1433036007602906647720965025965221 0.3276606052567856790938633384251585 0.0665102793125880127294006290935294 1.0688253276438350332319332225667461 GT 1 -50129346849119318776947013174.9931294392658637531316374094057478 0.0774905936782785519009513867613616 0.0067953649576781992795731302285995 1.0068185585826135456824399854570536 GT 1 -40320739385985582276.7794093075127938050436361123724940 0.8586265358132936202157581940523068 0.0491288656521107809778670584660455 1.0503767310360070963092275978412768 GT 1 -6574.4228329065261738314678903215742084 0.3498676039984097730898899526216524 0.0728568416998084564802537876771331 1.0756472935163565236405449025309526 GT 1 -2828528.7171969906437216397169911371427981 0.3804683043939048538173427515397796 0.0828098163685994773077620867048482 1.0864404305944734650946435242758101 GT 1 -368462900406581.2505153615880836920414646796584507 0.3845419726551687715762705162433180 0.0636628447462606062625467560226327 1.0657796587596670824954430264577653 GT 1 -458287502.6135511922465771640289846954097864 4.9131416677469717707126476652375877 0.0169283795657746432203094681046327 1.0170733024511921520270784069830111 LT 1 -367413988853802796693958.6671046767058164196093804558205187 1.0338598788496075996280787581732706 0.0411109380430455676727746944117461 1.0419798917527658499273317498792694 GT 1 -479707623943779333447322185050.4203370592688058038514951300376358 2.9525680804001942347930139399478775 0.0074295545018543603373046547414932 1.0074572911077139222324984770356784 GT 1 -63040779788451470478477994224416286716.8481482262389936708034963994385790 0.3878281400786539940211705851599407 0.0780233722783518102959849580801200 1.0812354052895292335293668984738888 GT 1 -1974887465822479831.0922932079120752593341981050753256 0.8033156081918109880873283476232437 0.0633833131815932707962908014977014 1.0654811660147166265265205590962509 GT 1 -303375329428717841722025750.6535662739147517988897098354790068 0.4781431774442075657533386416401659 0.0983359383201602392056190877781542 1.1035132654534984003448313764333268 GT 1 -198028979.1831520002476213974516214658380850 0.4431878124340472965643416912820481 0.0128512788430278488203485957285542 1.0129345709028136952506946480639108 GT 1 -1083827275843502616220880451.7890492735312683899434576955914313 0.6900248260739801656539362777628347 0.0686859319788288762526216967391265 1.0711587137797499648660990017022859 GT 1 -2157472799108771942140718266926044873017.0079948351407306320908662811661424 0.7730178282188636597748907141572953 0.0806451043060369226791132587494378 1.0840830552276361179719991100308299 GT 1 -23.1217798266458144068144160941083686 0.1400375507804522556757671357550698 0.0712983073412297421733713828565591 1.0739676975909058251971494155345378 GT 1 -97586339779690.3570818335763644970925952064534914 0.2271105282156869322535437932913590 0.0716789687015397901256068501902802 1.0743776671197983038240606361344321 GT 1 -27730.6739850302555543410293973643054226 0.3487803207994493718552760326755014 0.0355800170436174713215743232381763 1.0362284122796877778606578222553165 GT 1 -229274403592661090269208106715110396511.3406863595424267254838974581290038 2.5430482545182400502178545110082858 0.0972527858768072548026448405409719 1.1023127048185946876575325398971953 LT 1 -25990730412655057068974944257721397889.9684721360452948125653820610338357 1.0952555701559308915815265554625898 0.0786205993336560808093547816364868 1.0818833832894420266297687427749947 GT 1 -2461546808.5237673069012071267785291570985987 2.2124067126204404524480483544953196 0.0250036025786349166288501071913297 1.0253215029435622973457315859828052 GT 1 -57028188340.4353615823937252130434705680577950 0.3618548420108823993195786715407313 0.0275732917630535639850268732082530 1.0279605706103406674845431898915375 GT 1 -60738206064401101822597.4247109479245717784415845650576050 0.1370673718302872828424629843157366 0.0956380757844590536115274573447119 1.1005256400665888288789398431833073 GT 1 -4704981191538021438.4461229111316483532614561867674468 0.0273473358656023540547127414347944 0.0431046127857781664574474657749326 1.0440612067600887366525242649178111 GT 1 -10998645291883904.1030621422291294097087350949554990 0.8993239407351671175504146682346501 0.0779799715093935190873315970355489 1.0811883327866371137992005989049056 GT 1 -1418300705985.5611961823413607589498501357336165 1.1066390053567122507570900444351717 0.0556974138964579574876423157608462 1.0573086280707320630802837436578445 GT 1 -24607093253702207364167136828867235764512.4626077247229953425242560076582348 2.0473199790344153925276230509200119 0.0063838719518021145421778545866623 1.0064043360020928154328026533909805 GT 1 -132624749.9500633207571624008363969218754005 0.0307764109919325022476384112762617 0.0150775025195283455090210636694447 1.0151923236666414721566313416464480 GT 1 -24337728225.2467188708097860111203288748816363 0.6100464820620579388498979019495216 0.0964975441004961955221834609762540 1.1014764507471244939922933569799529 GT 1 -90347200037.8299204439205241327173008821554918 0.1782251364725234381067453637718495 0.0700558569803555112309830236996182 1.0726307559077851581271998653865448 GT 1 -1488877727452234286853522755403.4397271777022544330376273828494289 1.1195217913004679158311060348641285 0.0355126248727442386933169754148517 1.0361585362738565724201213119758632 GT 1 -383125043151671241614047335001623962.2018653551905500365050851270245261 0.2215984615392305820343862897740692 0.0739447253676475036364113773107944 1.0768213542898494277343670770335790 GT 1 -8093496288624464.8751670610927798117626688481818657 0.3985863484936549987016415591065693 0.0410243054456361192500497638833304 1.0418895489930125915668241951071654 GT 1 -13846860570418812856684152.7525747816246208450391951144794347 1.5941394841626374750240468720987101 0.0262614420762187186468512684689655 1.0266124323937843841865909674495113 GT 1 -80673701168677383648935.9874918328341803144721526912278673 0.9256891169147344378815201959585368 0.0707550852870303058727932272985123 1.0733829422835970350413722478375221 GT 1 -432872060067348510131267711811207.5110819454655358358848028921524195 0.1412910387420666857642349398319446 0.0284340799981950193149090768314180 1.0288461586304748596214519539263803 GT 1 -111350.2712429648801930230992760120512372 0.5298974049197709278701193436014319 0.0398849766898164158461239027879599 1.0407021857495046376938653094707984 GT 1 -28601712772594893977170837115333530692.1844697693020211256837227974407991 2.1907122976647510132253302942114120 0.0184182619600121593235662705381767 1.0185899900372381045162742851256454 GT 1 -9598726933712.9203407895886766186361699741395525 0.0881795103987428777820694492481920 0.0115433703028566945827878167730189 1.0116105121977857240331711221824606 GT 1 -10184656644688019589536537482760.1646699344965377939825322260768723 1.5259806060551154000602486351737679 0.0504786851162558743750978838034889 1.0517973004470121208370813578238085 GT 1 -4408203821306031743993369845.5977446745214304365754360137396655 0.0442711374400040455871395967539412 0.0624428272319626335276219093005353 1.0644775387111306127815390420026107 GT 1 -79786500829760163811464486.2692444118514628660638761668656496 1.3566025019981441036664924709132201 0.0562100006282883153926221393070753 1.0578515958768309161676640578533836 GT 1 -150347775547319779152689104802210.6004778183089723108104703325422161 1.6535765315453311542144578914400523 0.0921790092163042146246266252998042 1.0967080665308031362612645178460615 GT 1 -672607497982976194050.9296877522219225837559426623497717 0.4320672817208591257438387822725279 0.0240512061256885178782006954381153 1.0243451592381098214354706201095188 GT 1 -195324358747478375.9257141729457625159870528555814879 0.3969808353970218398339765302476180 0.0037345715566632060060000366199529 1.0037415624798486721517987662004200 GT 1 -201951835758139703179920049568264.2071695043687440456757140189221814 1.9609702696710067440396274391708569 0.0202046836096523076852308918240376 1.0204115899581551382803659333135673 GT 1 -2272438152282055225970948064714038895.7388319060032176688725914809704458 0.9209541355461488611415483172421273 0.0938371081163218654152007383255620 1.0985361967337774991840517344214207 GT 1 -1018922547630740702774052200777112749.6259778169050695938920827097996787 0.0802156260559063497557376328825445 0.0752733719289591478256448533598881 1.0782571223699387866294416761238386 GT 1 -5639.3996973560687330928092086633700456 0.0650729683027247998011907045704453 0.0131031265190021909563053833660409 1.0131897298292587867383287283680923 GT 1 -4828931700533200473806613917815667.2900114882873940899131841649363702 0.2924139390693562535853223491888550 0.0355168090543718052765801209193140 1.0361628745273283105172090562486478 GT 1 -12627482935086496688324269203993266.3612343357394513804153975816886610 3.8234585279399735853830994118997123 0.0766855582502050440915556675245913 1.0797854288769533077300740609086317 LT 1 -923595080082639545737135512.3297491674429742170055885425671472 3.8534668596678726359529772546981813 0.0761201026894277078749732380795782 1.0791731970543640886165958046620489 LT 1 -673008451252600823421049.2275144738944628192880905094570281 0.1241147428704471329531284909872841 0.0951799024083734568940953459391308 1.1000191422345764162399651246245118 GT 1 -7550203988120404303663537731656213311863.2543287875852764662401814025821549 0.1055790853465193487328786677113197 0.0694003874960711562721317742613266 1.0719261559654765465247473278719227 GT 1 -19627638695934553.2941909088145016672927106837174909 1.0652550714776805197837047667501369 0.0661641527784442549608253999946946 1.0684546086390120670631208728642273 GT 1 -235615688573792458468123334441465414879331.4707532442559161114018747418587074 0.6099814785787833879911341853847809 0.0848239313121600872861665520814751 1.0886388074224385858117625330482361 GT 1 -131262566437225815701657819384189179947968.9437670515537826219895540372529838 0.7916013083031932381928260837689251 0.0229538760249976589521292375751815 1.0232214182532900544758593814264020 GT 1 -1755948402707.6143799048114088610933691380222388 3.9412215756362099884153200910625083 0.0581515851800612453486577866370573 1.0599109358047081185096343196233938 LT 1 -37930845702153273862243.6621404195227122834179195449676160 0.3663432886176591400398599727780650 0.0591961179879888331809344624094604 1.0610205755580105064019579203721045 GT 1 -3278308647518318097857801955802.1551519572033338601360955418792769 0.8710295713996883543905281800468696 0.0896530269923844031423807012385344 1.0939294631240695186961389611510524 GT 1 -12.0709273675584092425270971568285047 2.2322138285125885148447022873366746 0.0462554394877912457873341542285205 1.0473593996634731442828510143935526 GT 1 -554121320367179591718104036.9110590899083574383602974774466732 1.1846874055417695868643202182239614 0.0922894306459700802733873388805573 1.0968297074124341263299603131196435 GT 1 -435348281113837179944031938525466249452429.3609258899211318907807812307370651 1.0719352480201514562737524978779915 0.0815267450417794585345642501410674 1.0850424929237671537048607952945540 GT 1 -293544594.2086206409725116494003354153205797 0.1567081413522121806745005964124600 0.0330116573926570562497111271972406 1.0335688388162510064323024213015805 GT 1 -25656139685224781426825599382248124983.6924273545293152238943578082262681 1.4029914166502181905089145358325525 0.0427399971423193546369321089400908 1.0436802391022278656533490630056030 GT 1 -64971337532648239760312075858072.2193639631163131247842167194928315 0.5129740423278188996250501361309922 0.0169979803679253053064929247210572 1.0171441042774934193090431632028873 GT 1 -29135483995730753922816203994231.3041836464559415834362085021392466 1.0188486709610678944346750705047945 0.0412917697884769084849804522654187 1.0421684941738329753898097139939785 GT 1 -3090008207215384.4139055123859247052512831033112824 0.9933400554619228033511438942487436 0.0844400379525801750950651735212508 1.0882194205105499262567051018719410 GT 1 -224242838113952985010074323534570205636.6548575794181556908659945898665942 3.5924456077868940666674509019738299 0.0024775904273974980464158617311364 1.0024806647335245549928219227282915 GT 1 -53171295133297994610.4341224196084466484799952493735671 1.9034797381060391268080534460439511 0.0540154035754665234621646791943209 1.0555289929121561683753746901102400 GT 1 -92230673914429824597952.1337431032108720766457773645599131 2.5979377507333156293501287808493596 0.0135318156783478964916641390216236 1.0136242051073065761699467376224421 GT 1 -81151378.8996701997335241890646216393730932 0.3831389881047474106986436059999625 0.0937668642524916280924371526664573 1.0984586818167345407898827366875805 GT 1 -67943449985603089597190834.1774218875508813571689896359462795 0.3047770037975350759502487756892012 0.0993757174013123353121078558421907 1.1046671087880707804713382533004442 GT 1 -7831753466986159629724612342553.6746852017923348401882644719063269 0.7780493149199281261710983137007035 0.0667130251372737251722625609640072 1.0690425425104724498395338297914885 GT 1 -227992618809567.0660163978882624399430591326970453 0.5457555553865510858630515940857846 0.0772714375676671648606970230830724 1.0804201696016336425258520489895640 GT 1 -28690373032856513301296413133280602622.4383266234173165181612422206269614 0.5379265580762297785578973806340401 0.0091264492603755559423356829491620 1.0091683504325480683401995515281262 GT 1 -9622.6133117127187609196575254850080964 1.9453360153950758667613887745554948 0.0102670641901238271974731903715707 1.0103201340539688858346236911955710 GT 1 -58544318323870038860549.2798284014956764887837017239307716 0.9967814841361202643706883845650644 0.0518046137574357749145691650326957 1.0531946943321539356880584387160607 GT 1 -185468352660197750187804005231530189.6772261232607347372167546874453788 2.2591318945917636872461109264322223 0.0975377805062417371180710361932948 1.1078947512581218215197375855373252 GT 2 -182957991082924713.7609791723983209222559350978117954 0.1244701382348405917129437479422751 0.0089659894162427807548678031714635 1.0090064257821610135171996474360248 GT 1 -2347670115226574.3391036793372443215877406864437345 0.2858961788292865386616345954959480 0.0834356475883519433926096489209392 1.0871229987700383057387149312798446 GT 1 -1898352884315657501620422.9698204552728231140125952871497880 1.8863975573869677516165256600442949 0.0946270136866164031210873502809727 1.0994082806155971113908425186481422 GT 1 -6872870461772851106.0781735621875801110824873766167854 0.0589434708013151793775425920716550 0.0974053154956300381998160039715031 1.1024816806998963595331704211470425 GT 1 -2751.6389838029620381391987830742448301 0.7670895771527304702729166705464840 0.0655541710211600036215725871885380 1.0678016216866387251511404223506917 GT 1 -59908283480814747865769036771397551401921.8263872358567523316723762170241809 0.7870249330277595708747664142816347 0.0811520395959668151666399810547083 1.0846346105699636227777545008181050 GT 1 -6808988332411.3121841999700488435435955726598392 0.1741743165817087898015533729316262 0.0654435884637373342445330400155319 1.0676832884335750681524365383827138 GT 1 -781612711240663.0074427163317231803479256342019894 0.5482484491896813537117539840557171 0.0807039734672803850108403119598639 1.0841470903966308779207986048932542 GT 1 -43394163834460683428417.8581216016065629070942917932977987 0.1642740706912498300563635762918901 0.0859383835712277515210091967221197 1.0898572957643551876167982601312136 GT 1 -1740700865927171424851339284284067916515958.3038217522845330219229723572509775 1.3065344474608802513966804475597113 0.0579335044882668292177183349102878 1.0596794171818950195537619134582326 GT 1 -21511275970842015526191250315839117362815.9638751723841817104453632359228377 0.2182986878410393834748022577955146 0.0868697126777138135028775155073450 1.0908767061341439694129357822368066 GT 1 -35.4908176350118064526904912452002195 2.4378891032788537092051090610780944 0.0078982248165833476360979318464844 1.0079295810088440463376222408488883 GT 1 -1445266831084382124897581008071782.1943268334407980467503668200805683 1.2529272953773549109093303617365611 0.0727831184367858828524675689148265 1.0755677800869506069659683281413310 GT 1 -11144172387013870487777106527466727924.4556209122039457319474395384550384 0.1702689921892088974812293890688653 0.0988226889894558533115684964660692 1.1040532471607037047311224495728066 GT 1 -5369.0898512520699254712404593430621656 0.8612318797022950933925954026858128 0.0257849248150808598692383319430699 1.0261231833043360785937470934808296 GT 1 -2664812866580489782685.2940244033856207816529989709580300 3.4228783821251586970315373660964108 0.0004408540273232486909048558557738 1.0004409512320297262716376849140773 GT 1 -49452684789528247738515196941937251622.1873196903876003846983460781912676 0.0854794309460167537533640745377365 0.0339701587165545679270379022711970 1.0345605536489850369945194866086779 GT 1 -20294029656.9821305778844241930639826564217318 0.8234192516051875768084749402385911 0.0125225781499207950165631385566433 1.0126016464175310718117532224180596 GT 1 -296183649166272314383.9948082512726856549482281245992299 0.2946201290005411270365137718997336 0.0035375122094443948633384753612669 1.0035437840011554125044552213683162 GT 1 -927083540979172091261502198658.1523367005651522519141416917526025 0.0543863910813510272613983132364512 0.0720314992556315583560771416855090 1.0747574899354147603374871642636991 GT 1 -8366485352302638390.0889980942294966702732485767852804 0.9902007855954187438472432684197044 0.0767628824474808952989310979352499 1.0798691787153279946208028978216949 GT 1 -135129786448514051244601991601753093.2643571069186914720199595410438058 0.0787720254805091824561328476855954 0.0055837460275996856022644789266778 1.0055993934119811797358228578956010 GT 1 -50300328026288718183582359687928.9381296027114345714426352799004584 2.6753089773188591331662847934319073 0.0383519886101123197167251052078940 1.0391067877975378957030036929201814 GT 1 -507065562427430326944509974710017115.4142500027960414881829010958366934 0.1085565380335335434537980325084298 0.0568790692135167398715482112725293 1.0585607640761088431919657269415896 GT 1 -225483578915974552288391644186.7826832632431531024560698787139648 0.6058806947238230155614251689701420 0.0125789341121599114372875794841435 1.0126587186798314643161234287899015 GT 1 -149688.2047888526954989988290939917880819 2.3302056664712255427050975569627466 0.0509890823390631845826286722700823 1.0523349760538353068537160964685299 GT 1 -23246335438167407167421163779460448767.5882003302440140160210289147530310 0.2166667900532617283401464923231490 0.0998588589410258866365031163202776 1.1052037045544699252946842201826123 GT 1 -17802622986668211894259805522676465.7772806041106710830306796772384988 0.8713146119551854902303649519484306 0.0759933270369480925008087315295423 1.0790359855450453715100300703070322 GT 1 -6996804468539371884346712624622.4104160020318806706102850685600922 1.8995825036383139076680317767306345 0.0622483619371066853910515012006464 1.0642701432203934628265731141299826 GT 1 -1172634685710509109043584877822233208365.3197445887661691288370155260519871 0.1732001153308869496037710176237339 0.0353984127431007936314739538361554 1.0360401258407413071724606559960561 GT 1 -44621444105504.3099318829656113691731769943846645 0.7606902320505183119664980579670513 0.0312874897503873122636358832849085 1.0317873981605836813639582218686150 GT 1 -109189869535488590654311873887406.2861767708196329563624159998197617 0.8972187501493459651826690122652496 0.0578995157323344415239728210956528 1.0596433388976443806649242346286424 GT 1 -829216222663588179637505491542857253.0733624707894225824894688164628702 0.3893832250110662468468912758876811 0.0915314089936176950542934774864343 1.0959949641085658878930295769684111 GT 1 -25393614201119431680227179952894357.5122893696209155907227625142717836 2.8445992238324695611289372095203498 0.0135580753175511477843598243389356 1.0136508253157843537227869909292558 GT 1 -282243763318773276981724475723417546075641.7653499459656534698387621700241972 2.6550237800607828867514591877003117 0.0817835308220337080201453595279513 1.0889620422634395550394836314154350 LT 2 -3.8449145393939903218561132844704347 0.8946091287230668080903953160320777 0.0932016481956373820827902654542573 1.0978351779459568375813697612756186 GT 1 -6062376517588405853924885809440789413.3671883697477338559684205552449719 1.6596744926566182824229342952018804 0.0550249680581149141476204942656725 1.0565967730629594529544392065634437 GT 1 -49178225085089637751570074.1742796743703133243555878104963578 0.3317365016724387644705923672607227 0.0996770715700403915718402685204831 1.1050017706478912407344238137421234 GT 1 -143914270682487397631046090656132426411.2246631815951594696244191354081217 0.0677202029722363328925520925223022 0.0083675703864192964116842176315360 1.0084027750259242494753326991221017 GT 1 -7490241958645803722891.2992566826560579941988647346806498 0.8237418921255597046305273235228235 0.0437264285342645847477686627866050 1.0447112442463869444103405208154341 GT 1 -32237284042460494177985844033296.2249817266534101460371724028214241 0.1923383356689083651637149370381345 0.0651264370541709314917127846836323 1.0673439856333223069453861083677248 GT 1 -953188899950789602859538262.9197155477354634992756875305514445 4.5271546733034153705420328231234391 0.0380196661476231719361625456251662 1.0387612715062884121794097953852600 LT 1 -4185034972623864533992.2272002945666908206677605673549066 0.5378185646338718199646119489344808 0.0040894863606562506406724127431659 1.0040978711775401853230122679122653 GT 1 -1140651470223474010916594860336901443.4521492988192454032092637968305103 2.3096226318663694149350433150583900 0.0827440222441065597205159652387173 1.0863686987269419887265040783052437 GT 1 -47502745401259333302894125.9217036591180430273427246227890843 3.1048159387575476459794306281891677 0.0821155889275834771439558618535638 1.0856838101539327280569170308746252 LT 1 -3215834301303.6020478057872384193037910558943826 0.3340907483789788190235600903506966 0.0827058942509460919472444032908336 1.0863271321395712987326409153086420 GT 1 -2374390.8315946154764774906559187037122488 0.7338346314228729150787670823314936 0.0220273202613312646359788027196572 1.0222735441650413588538642507346466 GT 1 -48368355783182460890881.6383634106838285586519595675762116 1.6059947645303999107779054351277024 0.0886070703024198862766077243238937 1.0927811578107314614448538468887467 GT 1 -632495672912125447044292007533871170237482.1369885024371043560690103014184742 0.1252603564839443213420904107102157 0.0161030262347125067923139529422083 1.0162340888695050749230222290030157 GT 1 -15605144000660764982.9797503449538623396720093951848923 0.4726892210224030411353281604768565 0.0486685582565063932598605559829187 1.0498927579719656897839686823115244 GT 1 -6533578320819152.2979737030465700569105293086689945 0.4169887512429004194843661377142065 0.0471751975162789959137072625795355 1.0483242301256521115359828976225454 GT 1 -6.8088160595023669862317802813784210 0.3037838714949606625263970394799807 0.0878265140059757140128979814305904 1.0919250811278117593647020851811924 GT 1 -672417754739.3841196011153785376276645984435340 0.8430027065990180651100757120187820 0.0213848115711282031829387268589633 1.0216167796785071952784983131968252 GT 1 -360214149729231482713221925596068890561.2369243988544275727703341527875645 0.2178219936153295358254365126385840 0.0310127375118869191216198547118543 1.0315038121848744271218403625350442 GT 1 -59523754900535575986561052566680605.5631913206362322869182769423455796 0.6453691441763463780639060605672268 0.0644121573328592428556780194610032 1.0665802385130783227291416346226552 GT 1 -36576196812784335419352642867.9553417105968095880068590128771355 0.8092880625951467864008013420349024 0.0989966528483827079563611871237537 1.1042463064510465393877092916720852 GT 1 -4811678718513074792469471742152094921962.5541654924052241763203378611754526 0.8299811246677472618863456275403434 0.0715754507428683242600238132300567 1.0742661623882262527219449943190709 GT 1 -37362374455663596754407891822860322620435.2750855893056697843196219701541731 0.2827961061274223925238006805488099 0.0082657264937707264410622463770167 1.0083000770300590550896607353187389 GT 1 -5693283148673228803093.6780240725644162710141410848242510 0.4396802082773616435343555740085379 0.0565195080628056942624362044852753 1.0581795906594733033126036021077100 GT 1 -23516576019.4531003913955546060343395656488423 0.3564492416529678520288733364125625 0.0979591622263479154214978487922882 1.1030954852507538144128491244260049 GT 1 -34563854218089016411403158649044.2690211445994688688378317312401843 2.3977847520209814495939523588653027 0.0414042015832222083117563453287290 1.0422857753073364716646833891732288 GT 1 -145718384309.0160520982543250381503023665928673 0.0469401724553869057515527076606305 0.0494302616770508392627050085390341 1.0506937495999773939001491918922995 GT 1 -3980.2186465854173927234284675669481412 0.7663388023130271566518740444447045 0.0461453939003021755268341984738066 1.0472440236562518826091994782994685 GT 1 -90527726764038845141.4110944672139056510432377870141389 0.5703851236458928866853993875654805 0.0690761718846023475197750232668813 1.0715778223289801901338252110327591 GT 1 -664212622897983993699603738133078.7696397522282407385640667731981981 0.0356197243950979886845836464957222 0.0846456651139650228344335244437284 1.0884440374274572712302536979684881 GT 1 -40895985517896084353918783097.0407017085538401641142409788120893 1.4832356349560670840980611484548805 0.0099129094936248868975158590779020 1.0099623695141936074667527760026350 GT 1 -117000245.4166869660148787938590391965714613 0.8522043969150102759359705850065770 0.0497134895818230591527010329585798 1.0509917499427763594087668028243755 GT 1 -3508095691926384992.3050734984424703393439186164448697 0.9656039487496875091720215507548213 0.0937798796085302379670495579304314 1.0984730439593109070044109676958999 GT 1 -106.6162200489097147048226440815797383 0.2661083141255768794491740067918199 0.0585764211936508733137761733240676 1.0603621037955600047539921812508589 GT 1 -286064192969929491399810879812371372.7682652679146639104097646771478106 0.0890404858140373100486949836065677 0.0969740672818638025187801420297224 1.1020040075742654768062229863804768 GT 1 -40695683569235269507616994250883.9749503042950795390615773034928935 1.1838453009519953178042992116640553 0.0287047471155688751156608158473914 1.0291247859692700720351125203358750 GT 1 -23173223948737091228492017282600155.3680410778352007874998094975531356 0.4774469007853878714118937619116686 0.0566422280932207579149544914523667 1.0583096707335736611856941599754037 GT 1 -142353377671868583428915.1107810969859579296994696934950542 0.2199862701319530133107523855229224 0.0734670705718642923803012976902821 1.0763056921418117559642986762835968 GT 1 -77.2711346091427291868828089095705557 0.2249494836156469808770447246782822 0.0507768341576978684864340318018725 1.0521113490690557123122980190473389 GT 1 -232237.4550041552120222296825395214429069 0.2363065085027409204070158438093018 0.0872999241641811873416153159561108 1.0913479563697736477880359563936049 GT 1 -15589796199720599339953.6998045512381871860696533551056276 0.8220314739709563123986768218759282 0.0060243372459182886782579286957457 1.0060425567761279576399566778032968 GT 1 -17330508141936647.7232392845539659275573746471454069 0.5040060427022527867759594397660738 0.0137059817459931348379898021402315 1.0138007758748023713423480903122166 GT 1 -7691906411503696418579361953849.7749189429323472640844642936029123 0.2622110554497249169527417765948292 0.0126471062925371752510876086396593 1.0127277617012599174436236851685693 GT 1 -35800142725824946486969932598505246959502.5679386249877031345812322914543282 0.8849730980157533398549121806133039 0.0259553510281761254433106571489038 1.0262981355567661133179761921463074 GT 1 -47387188660730222117026512.2167442055784740838417269255800935 1.3767530403584284106811349526749871 0.0737308814505494997883843558166637 1.0765904617757356311606898482680239 GT 1 -101428375243614923531.8545781325949749156217522816506815 2.5919693277230724983565062622647071 0.0040051464043685342451781988696139 1.0040131884835473551950445359554058 GT 1 -20429253026305525574433951.9292567263510393741780315268435518 0.8612207804986609110562421906958840 0.0237442811768721384519941406104395 1.0240307198959723028493140508462757 GT 1 -476991050315940499596.2848935366151007694115268945904245 0.4967545952901372006412432596607236 0.0217258865306343587008576148818478 1.0219653685972867008826336721172792 GT 1 -20.7388094704052588092085027691980676 0.0008124626736636452612466909468328 0.0585745478912906285766647069987060 1.0603601139362250426339732305803200 GT 1 -2388142257231357830528975075852217430942.6202294842585116706172657148221928 0.0173923896497460459770094644940127 0.0434341198758060051144880525185378 1.0444056162330260128400900870432028 GT 1 -291050802914322.8660911715240473278598144102750459 3.4537801367245885099656762819368896 0.0795945558988829346304739724124690 1.0829410059089136449807013033596240 LT 1 -554436280255810138997285410.7259257781320716889429263755582732 3.2207791927238737793083658064596602 0.0342115317078844347663346178954045 1.0348104456718419526440159431071366 GT 1 -497766807441627544683461.1387860663573765021298190103657624 0.3932472020209242239616966912467006 0.0084854637635305319962817882433320 1.0085216702760295096366941168969961 GT 1 -37934436324841421054037341371310516769.0251415081878258956498998066300046 1.8754652129408532626394337249374978 0.0618993981505454928816725111916128 1.0638980842882858636520651838821423 GT 1 -717595021001901747282683917414754614877.5977109512623709553565407666419674 0.3232516612837861439819824056335227 0.0355199040004463934676627492883219 1.0361660834490278957727204997616706 GT 1 -4.4890031549184577679154716950478905 3.3893514026002088817046816444518569 0.0791708265582230179279053516520474 1.0824807393637345187158254416902488 LT 1 -2161936788194085982576990319007516.2265221233716749070788031397849898 0.4941896052223516222554112121613918 0.0187102502333871874609151225927369 1.0188875013897057474101712267922631 GT 1 -105478593713021728654377747121147.4945312202934508963903650698977690 0.0785849018516515257943934094595368 0.0462227228908685092956271269821846 1.0473250969401378855712212180072421 GT 1 -82903396830484582054761278591491.1497142735459284818405563437162551 1.3128385411450943187836097576984799 0.0887029200562291577052729624612048 1.0928863317606523102220361705739098 GT 1 -4024243.9623819136058818977962458547099138 0.0895209678412369545587989510591462 0.0021625543609346521661460540456182 1.0021648960582575964453145520012951 GT 1 -25305402571514558682324.8845204130520028315561846410938121 0.0409470204409126700966125971838670 0.0000896154482478441771207202868853 1.0000896194639520410543053733052408 GT 1 -2117055599185216019343515731865648879445133.0968395502221134725856446998824249 0.8465840864520980279928597003610735 0.0925607359733317949888004588915922 1.0971286417751988478174379328523556 GT 1 -38652711736792777426140.9797284923090157926370531691363149 3.2289582673935634956061493465779837 0.0845425128561839881231860779024288 1.0883313527084173656727289073345087 LT 1 -2.3161674484651008164661437158558180 0.3019772277627440263949186101366386 0.0867272074198704938009982377996995 1.0907206559613199941974057730497482 GT 1 -42995.6199332746338725602695595865415519 0.4653067560387529206633754469977242 0.0106213315434857609362524388810767 1.0106781405012880423702691672906445 GT 1 -916772449452016.6900105421324615619066480744186557 0.7834935226235497940538842569111907 0.0994858915052135434377419773749441 1.1047894470876522277010469924357229 GT 1 -1.1501475533123459592873009932375302 0.1460597903223986549102973772743209 0.0746367302996726102877286309249275 1.0775688945652438746187453118104339 GT 1 -166960835.3188616958072019409845753794070738 0.8638731494079796064624416724040144 0.0563123735474479687613148984086366 1.0579600717791244147241985048570805 GT 1 -2377898685626053018.9554131862125647149733861079249415 0.9745963576380321658741856769448087 0.0747693335065513896081702162271517 1.0777122033749317048503930375680982 GT 1 -3059755.1621821391947673454114935153101308 0.2013591374530860534696762002551001 0.0493368389293049985723069728604616 1.0505954736361532597615821571132934 GT 1 -8267235294651883079526778829402.2210762928154390652073939462826244 1.3272428353685095220042574001879881 0.0599390224527253265525342494185042 1.0618105360908942235165794925307090 GT 1 -40811187775622632761297541887647.5718274398828254033751551996263231 1.4030660190732458581060261601148122 0.0548800647854984931226292174651896 1.0564434439705929326304343987968933 GT 1 -159031671853028561074282951660862950495.3580685278621347577211505045998912 0.7913325482195826419357614524128638 0.0728695381802808659420454283229232 1.0756609878064923956420307438722587 GT 1 -2240284332438795676961325783110792864668768.2768979100005398517677130906876706 2.2222620980515878616669714060249963 0.0719311096531352829291202752861504 1.0746493136636693402320712608365231 GT 1 -256.1113796237314745485531185738368955 1.8209161699583179884079780435453344 0.0127822208563736297413866255590888 1.0128646163258171071792664495955175 GT 1 -910944663314543059810122246882210136389768.3536732596897000010318167581687339 0.0776231404967650358100557431698415 0.0885278680081734736051562352449792 1.0926942591192585450381912444730840 GT 1 -626139824603181729881888.0002233171447815131427960294645664 1.0353398591441934076311369592313531 0.0840095938023174260403734147982249 1.0877493879461711087824029282179516 GT 1 -85.3635740594150104911355933141691252 0.0910606668662203055221227093392993 0.0402072851700441590753912872323628 1.0410379398869068998765739453101149 GT 1 -32681853799036339601441282.6362294736019687990994874540687178 0.0267598453259889210138387974456108 0.0521380314594163703377194258348603 1.0535463901335242793768402239594491 GT 1 -12229884526331490764464324473839.4908891120799019174489930317890779 0.2515242895036180083805082990725191 0.0060278032902560943418711257270174 1.0060460438337198443921815473557807 GT 1 -4237599572197.7293046427277468777486601913604607 0.3515707643904674289685516464382446 0.0449176981058658755854497262788190 1.0459577622208314144614122299306639 GT 1 -744178943432834.1275024672005080298958658525063124 2.0231766847352170753364637492171860 0.0125668306283760069759655327133579 1.0126464610827207937125155919564865 GT 1 -79167.0128590971933490516425531191676373 1.1261899407852287288536522107541889 0.0403071929918347976556531137472338 1.0411420384286715563761096794077000 GT 1 -417295055308138.6987841511256143791677629058402211 0.0659741576047313258137611102395897 0.0583237757618393866063688758571343 1.0600937744877677075003568796124536 GT 1 -168566489083079806.9864885950118517061216663731351251 0.3408031756900503923568593223077299 0.0471494612874516853785785107721003 1.0482972200381807382536482003082419 GT 1 -107.7618064230370412357712043086788907 0.0882924872429494527577007462454714 0.0154173120324136329325455233071016 1.0155373946202676781492525192819451 GT 1 -68576537824873125878655911.3863872101439521158617139537084583 0.3722448888687468862234475039154125 0.0988158658160185111929157798378339 1.1040456757898717700732740024129623 GT 1 -73.1352101800230086542414410612809903 2.5818684031362441638850330112042667 0.0257240205134867086955319030972735 1.0260606689792454191739385896278967 GT 1 -740005775113516878.2798961505782273578666003024979362 1.2371024910920347508532808395595308 0.0157038323163605550099894141299191 1.0158284437979731679696683230261212 GT 1 -79652883508815137529119857641.0412702947204378534029515860719383 2.9088878163284163320211103462133524 0.0348049864337252770846013495396738 1.0354251114627210385213113811468299 GT 1 -2113.4480324569927147087275488062932485 0.0128987364216613983963044162573652 0.0238698883009176734883268193880891 1.0241593902870960032624350158935419 GT 1 -6927446914118.3881486082919413105525782821515214 1.1500101821867085590497785354178934 0.0612506609009785401131625858762408 1.0632067799263876889178975620164267 GT 1 -73383004713182550742132.8345343440584095063191904413740588 1.7381454258026883975248370705207667 0.0286125877779636443915744208047652 1.0290299075423095738749360737871059 GT 1 -874802824023517960.7358805065104352566759719956837808 0.0592224978960591538567835635769668 0.0627753276414217256759503732652251 1.0648322470883315330450103897076351 GT 1 -95350434.4840804184809042033775064236349200 0.0344795606268521701922938505103249 0.0171675823366522523964507407338979 1.0173166538736649928651356260902298 GT 1 -2600875746019.4746997779045623907659840603198152 3.6817746142105665512680824008302872 0.0485809011927404850320686527885749 1.0498006207611650056252860048681864 LT 1 -323409161603.9875359812631362101001732955722002 0.3837070752694538246428575248824956 0.0216994520185969022244179652532775 1.0219383473825486298796840027871169 GT 1 -426801157.5526418614188454279513410823314688 2.7633415069311345384542199977526844 0.0150722880443882746572639662883627 1.0151870293806951556602238156673998 GT 1 -365250.0873134380512503568661955573408000 2.7144724960327692546470071015239095 0.0307358563420403482740271004925361 1.0312181101641231646069650107686949 GT 1 -5726744982277235099454554158.2527571323238619552877052216190025 2.7961285963993986802638664899974798 0.0988671895372124301638437925050219 1.1041026288372924619696437887807972 LT 1 -211.0873587661304342097469950388479787 0.0962100007325914240506936629858355 0.0651693944723041970961605661825327 1.0673899366654322646019404807489665 GT 1 -68027542788755133303663094344734222025261.1379357055237332165906811438885343 0.1688697376606154495861159814708668 0.0267572961454933436297949200084869 1.0271217892014018118308878024532500 GT 1 -2.5081078966458771151515809831806348 0.0726076739867259027568093082595582 0.0634060900854667134316087379147653 1.0655054845872404957180601853472941 GT 1 -822376519284954606759108.8076235642088909062778580182857729 1.0359938059874907985959152936847613 0.0832978649622908559851575664885204 1.0869726849697656456808265210097140 GT 1 -17.8456406932319494172759440090142333 2.7235863899617823624574483255441118 0.0689091921767195146843916521164752 1.0739473391738871353263502270374816 LT 2 -117059619335002982779539265217667487294.8066644993147608461889699779349355 0.8982212793984163101519340204039283 0.0425048709023295804713631723784808 1.0434346450445360140951258469331712 GT 1 -184243199704511926.0275478270278323006196468354977480 3.4534763043028874127000392090748599 0.0477198777851923932724025984622803 1.0488960414486853382622469325188468 LT 1 -20839487472.4729589756404621035300304461634640 0.0838041141049443402244419700330033 0.0750458157811718468202911896781898 1.0780110732706310907390640506382089 GT 1 -106304741249846958264974315125524.6248723119025670675905549054285441 0.9417402461715671665637615315343822 0.0592891233676118147800019298551055 1.0611194377957595648662422799102702 GT 1 -332739767587672321861666191674880028.9882936878812036066887746798441062 3.5595836948218390262251266748442387 0.0101229514190850843356413692320727 1.0101745369187456323286747438867252 GT 1 -14540349783387631779601.8946640685178999918110487567306143 2.6287325814607673373413451719605713 0.0104152807810448939960796416133546 1.0104698993943845909755728285633245 GT 1 -62553765837850018315757611.1170416857691701978097895468214228 1.5836790639679097976901693425097471 0.0027341538854029481166755802459546 1.0027378985112838706199382535651844 GT 1 -621053922294056.8772369215687905034460393442385235 0.3452773258319118987244905779324874 0.0979945573038260630163858039847252 1.1031347249064831245520693973575746 GT 1 -84496784961695084537308754.2734942183009491795774165947528561 0.2266114844847457073121128338796546 0.0215627312711861257975370338279981 1.0217986038293084389058801787320663 GT 1 -754477136719303036683771060453336560.1876969128731912885847596983497141 0.1569172525964916043721163701828785 0.0553258066687088279621599651813166 1.0569151798964733090222296949027710 GT 1 -15174333949732806719779338.5631690927782021928163603623836868 0.8170354485726308307824239513146379 0.0408794756309034972903180345672797 1.0417385348639204144033765764591679 GT 1 -1113683515750898.4500711902638894223434535709361101 0.1205058410755385866089444507988417 0.0356308661196751494166760565430017 1.0362811387033549260925008188622663 GT 1 -49743311.9876092111420924945706204269249157 2.1227489763736510662345522261418922 0.0480479928207917111959551440786515 1.0492406580884129709824704787889065 GT 1 -1088655643431510516413994.2062746401502796899494169310082384 0.0353685575882114343485811333538931 0.0211342720793671502878902480877176 1.0213607981350484064171372768381875 GT 1 -29573794819.2421598006855606355561428036966666 0.9872209230792387500720562373119449 0.0354411926706247382757814321785155 1.0360844766657437367981767192939778 GT 1 -174718702587521619.1542609142526706379724797932582873 0.0320600255400818732442942091805294 0.0630784139486675470198295165019075 1.0651556864234720047301380799403488 GT 1 -179506986660304698.0865530565487106076787454961826233 0.2105324816512230049822914775609492 0.0870620204187280906218192512494581 1.0910873310545926604537432117932422 GT 1 -91057586742604625679330397181685057907541.7988908077573991041869664321658852 1.4629871369816190025296375569245812 0.0840049319345083849379568167268595 1.0877442985304802707624789473167892 GT 1 -31241.0024362015395600287066297151237267 1.2033817280462845232416860487673088 0.0882862040438311995953685247030222 1.0924291583831755487736312543794160 GT 1 -16558316925.0397361128452696783215088488247453 0.6148398224655032457767283950201073 0.0382617457774046254092020469840543 1.0390129503459689290546459623422414 GT 1 -846952530587389043.3212210704023579674117181121426167 0.1534319421855977719505071559125723 0.0506903764053342724016724579707727 1.0520202705763329164441514399495867 GT 1 -568543622220749440949.5702351557732676680568527086124579 3.7706078475763467920521108032461621 0.0549929773960682343841772267918400 1.0565629201890945499148260692051852 LT 1 -4071669484659447700927923545470162685486.8176500080846400948887985538266941 0.6879614100456979739981011902847100 0.0822763260857356422461477845065292 1.0858589424818818791837303872362167 GT 1 -220593310831.4677054469622928171212659508008005 0.4456600651084733814254904916915781 0.0353181216906895402306272606086053 1.0359568917759803327860723625140412 GT 1 -8893474640984180443418659084518182265.5526710334053619152764373288635356 0.1115060226529502402581853475364123 0.0709978037576782700744535398986306 1.0736441760781740207088062085487994 GT 1 -9240491303480671111565968341779959.0386459144859012622838034681715034 0.3371285403528710504354783967320754 0.0259063505365232445789671258784561 1.0262478306151687223585190673831908 GT 1 -1036491301401343.2283044440958345881988034063506493 0.1181282641360141332701491090604950 0.0963224989597446026202411455291010 1.1012827288760658556769126789182289 GT 1 -930051.7400133409427514168031152183938376 1.5513759807128300999132952077986117 0.0420325149778753413531847523204865 1.0429414420652167703014893719348806 GT 1 -33808248545900180748729734485303211563.4470866621578208208127201882548104 0.6684271595659592620681175831036787 0.0073384388457586119124036844487108 1.0073654976489600795673106833047825 GT 1 -135812566463417.5725317061986584803954526706606834 5.6114283171878054072763243602327726 0.0561668505920757266117626364796945 1.0578058769670495843143728729571714 LT 1 -37007408877543290754904939091594.8154565067824114416284075058393056 1.4639062595397508251379502318144244 0.0927893687966185546103573295528384 1.0973806273787001355207092852758872 GT 1 -265289663365698854235043266938.9138719573715037958258120093575629 1.0926948689812464121815996893271592 0.0007465469732037695528457609795744 1.0007468257781646719100867777983272 GT 1 -23518203246.4469559802653055063307786303248658 0.8477288317792935026522502802442873 0.0462956174085521907538089589292520 1.0474015270513774438657713834403850 GT 1 -224050835734134079477112.3372943261747652138456179494052868 1.4203979789850106457183064148386274 0.0233627996395381130404298659560345 1.0236400363736563465007478861979356 GT 1 -2876110.0097183369872856269254632542459326 0.9226988592253272769723796555816655 0.0686516050543038469786805787376014 1.0711218558677971582178637542174872 GT 1 -216897132326030146280310.4483425074361777425514615210120877 0.0769233937349546673582412784015110 0.0378481254600259089722556371488446 1.0385829670350015208688425710773445 GT 1 -156465314009562535319343101121722063187437.7885202557256695296966586165609984 0.4536127263064117415538894091601467 0.0721524315922400217456662175806422 1.0748878178690821171909603367304495 GT 1 -362017.5529078652995636266390594349862126 2.1568389717056373438945095989418821 0.0479762124057695000030904671323896 1.0491652575342113246932568798704504 GT 1 -1329.3225175449002402900436310877380047 0.2669577498962130171551676661392239 0.0729068421635865598264534297269194 1.0757012245750409969837207203230203 GT 1 -3794402124.8230159379040423690635778809354337 0.8676047785377862762889558955961601 0.0652634521000122718144408330416568 1.0674905563491007375971134260323579 GT 1 -65683843422164185942948533558564113638.2445857043681994157714968613968621 0.2732207646601833765381982886860247 0.0807850519015298975106855699447389 1.0842352905057635828806517017463365 GT 1 -49066.6551297268417304689151445399959162 0.6366338999172557057081465408842127 0.0296288834039555225674539249344974 1.0300766862263827199012954974899756 GT 1 -44731270546650202299526480821828954811745.8659664604804005321784640634018024 0.4386973602755139447598769992305440 0.0700367007692491301876174353555167 1.0726101568062687080929649438165038 GT 1 -1691070038140346919512566992775639.5321226289755072216027283950687885 1.1499676591565650269347621308620542 0.0015848098447189134079285532146513 1.0015860669842344888856701929772093 GT 1 -145591256571126696.3481636922552573489054520477271960 0.9656939843915433428139712670124911 0.0660755660062704838749377063120376 1.0683597498146424240958453275559304 GT 1 -349.6313028582293810989706750400652569 0.1428369702997664806105858779680208 0.0278327922909889680777479744990148 1.0282274649242103849258788895227679 GT 1 -149524068405736476378.0098848747788130282922538618237439 0.5813153625010863929931103004486750 0.0912006067113383349875005394117090 1.0956308986115759126204889142600776 GT 1 -70129310263101.9539288530401035463876443311787676 0.5168046142828186979079210221224483 0.0630651440082432842478178299284684 1.0651415231822260358383928128970463 GT 1 -255691249197438.6765132371199742907449145615059458 0.4986182014502000198564106071205183 0.0171865344433655260289447404600885 1.0173359372113970312565146946110633 GT 1 -3668473349838359220428513262.5569299167565816359716701045222976 0.0452806880825323085264837614964205 0.0763044851312139480253937488085579 1.0793727910099697890241446625218544 GT 1 -738714116729257649489492021785026347939.8440289073345988702788323583036343 0.6777350258373697704931415131471643 0.0593058173454354900839144864381903 1.0611371840835583660407309501473135 GT 1 -1887935473088400.9876115740884013858821991174293845 1.0005730250874992360879166369218420 0.0831412396930166972892317764187902 1.0868018422450404660499043207730367 GT 1 -91797688927514189199723543569.1968174539561758230857536582163126 0.1748765823303542409390430530515250 0.0203679734925608335354638817839585 1.0205782609846449931281083836881892 GT 1 -152986564875564180759965772064.5838416974405309495691939431117966 2.7782051562439522605633878831649470 0.0549998700793250052226324190799791 1.0565702140062079871691640677344690 GT 1 -5430798954236223425526130040488015317.4066413968242078187139305451977952 1.3249664096762518682677681476755873 0.0170667517356741146256368865801832 1.0172140672807518616398118739720854 GT 1 -1.7718265676204558578858061659164487 0.1922705921999951458566649272189668 0.0863193324207275835003700984153078 1.0902741475911682805500496998534568 GT 1 -660482724410060027810.8277274267740208959712012685390370 1.4104723781761574188510603752316245 0.0148631254513454319070631005261346 1.0149746885313021000183268989487078 GT 1 -287148973954915890055936831670313776.2954037920490841617957742313541842 2.3824138924222755001733717377090072 0.0671925756491863933226324479472890 1.0695565042078776226366553726057525 GT 1 -572463006266815703437744460950.5551707923355386867350874183225132 2.3310538230104676627096436887090330 0.0769353564112368602323323873741184 1.0800560105408591048860232519499864 GT 1 -536438232901112715887534.3637873977451564968041048727299527 0.7414513449979504884335616169624196 0.0021638824159409436366693797546269 1.0021662269923650230962581787491567 GT 1 -78901848146899342565225175207983371418.1793311629426252234509929354733274 1.5111376544833343262761658079748855 0.0929228131222570632542587884352246 1.0975277311894067355221876213366550 GT 1 -2759503450.6308542154110367503544576316169458 0.2513391837047719463076853188495001 0.0661142740839435863531097837645449 1.0684011973648372612802410851872309 GT 1 -110425923198329117.8516481620699232271587306516927415 0.2924353174320929289701166220864829 0.0686255699073123579478722442192057 1.0710939020073051680529722595430420 GT 1 -16464576298595.1175813014910264043814230724216131 0.6743336369765834305795971501001512 0.0752269099788770651960866760341323 1.0782068796479341746464230316365036 GT 1 -2303671048071112737057762974.5578759604447345803807870765731716 1.9550903000575227413051162456127506 0.0999805314637861261437022006496761 1.1053388841848839947474285656416932 GT 1 -97497940763.9182228646459709105109386179640203 2.6018646276750792171627394991451339 0.0344427612127102316196088503744489 1.0350498947824626254656603584882624 GT 1 -1849646142365302035185561721867679829506.8502456565803314074174573932273903 0.2593337356759082597385312392451539 0.0372588162833930646707389301544811 1.0379706637254573022148236396893243 GT 1 -6789920227.2032296644087779345133115118823955 1.4099359806449853104319564659056229 0.0890380574714119190500797463167435 1.0932541580848228777530755201812152 GT 1 -103374829218250007.5072025948134104564793443834893424 1.2564398335440229423855863418129137 0.0423131404702251018644953833693574 1.0432344234114134043089644106547378 GT 1 -6365474.2656987923783377323727043272713251 0.8269978019618818611032220843089799 0.0482422069586777855046310849364311 1.0494446956350362626634625463114232 GT 1 -595993262692521105.8360081996006750216085096567445607 0.0092069319634147655915306730562566 0.0194236087655560364941584208675531 1.0196147258916215435275960343017610 GT 1 -462102.7455425072713149391142117454320509 0.0934819975668759558590109808872955 0.0556954118737011692042697695212037 1.0573065079657318208331061952921061 GT 1 -8281305317937044368020474080511505421350.7930623309241943414258720957788901 0.0623226284450378285363354817120383 0.0409073336326242941721955100721948 1.0417675806465865837742676602784540 GT 1 -4908.4693032004102427177083608451598065 3.8984670035777635875001772555319607 0.0129718182745763033210507331165915 1.0130566870429855864720835281763841 GT 1 -26397392397356.2831410679499980809602095910212473 1.9763709030199493992922241058099957 0.0320436609079764306396923060519660 1.0325682969665643310372456341506887 GT 1 -36443900126605875389663739020297131585.5137289685690395859353739292313657 4.2469716431957773565547680681280600 0.0679164517264067655782496204382379 1.0703328242439564258718002369509765 LT 1 -135.1660083691330194557136590681580822 1.7134826074896285655378741892056161 0.0508389565963763519835829112228940 1.0521767967675754280016549432466687 GT 1 -14838080763039164324997231221994.2422343870836577866461628049598865 0.2683100059363962121645063584878458 0.0075310065810776470591021458383706 1.0075595077965339354544760775272182 GT 1 -3004645056970303.3087923288908562022763505528958920 0.4206362313517273398084141783863204 0.0447586728181774018307609015701520 1.0457912718046156742313759551382756 GT 1 -4035620890583179108411582.8400725843191615180025381881392935 1.2016114875104548280828787216882670 0.0299028446042737575491202582557896 1.0303590522986270120344501350504423 GT 1 -64621366295269.2745602873433236500005419674240815 0.4288941253378779244848625359343959 0.0434993282263791813485348581138835 1.0444737877773287885462051003777868 GT 1 -7961970440071246547196866414.2662080367788028734932050339102782 1.0648428240182246890115310831869424 0.0175513837933772429594707073045323 1.0177072356327006744881212577909587 GT 1 -157938119508005687507069417937.7841174932436487176303024679313019 0.6213627324726603582204455502242983 0.0677453204917867358797378515578420 1.0701492403507008775101151827662915 GT 1 -83797.5729504930692682451036288079396775 1.3212597844892746454153869507491556 0.0638218682224941032995403340718767 1.0659495088834200642489899921006733 GT 1 -1654927196915123543.8816219538731956726874670058487816 1.2636919736317429845400007605998580 0.0886538539981756314845206170962903 1.0928324912093398905559090577142101 GT 1 -3853917634044393377353451411.4819917352890516460194947965276593 0.0738646967784895270178189528740406 0.0963080009779162854859375042916610 1.1012666856908421058709403332455850 GT 1 -102881554300564510692310487652487606.7807537487025949108290859525045874 0.7909415353377242587250581746423017 0.0641702653506481994723620007178722 1.0663217264776137324687532828216069 GT 1 -310271740440276800061418394186702266.9964267140604897376984807716106417 0.3940609136735874297804869067324914 0.0994220336300748707883712599776387 1.1047185369148114226514290367059787 GT 1 -45254498545392800.1106760107453955471861131169984358 1.8373677792979951892020395988449158 0.0283076312256320638264601454023140 1.0287160176466727948880725652802071 GT 1 -20309661953363009186747275.5710183700781667189171537586823459 1.1990521416147740828347068956686265 0.0916387602609122305218427493097172 1.0961131383762962005599226626573967 GT 1 -1910.8790566471704437395677986009683225 0.7978062139642030937865304241763603 0.0500631820975643092618930428154379 1.0513598040703907808515714265026719 GT 1 -88170568932432519515754.7434167635683818683633194516340088 0.3253667469190680958519027461236498 0.0178440157470633050386750790059610 1.0180051398071913493328229630420440 GT 1 -340034850622620.2771072930762863457223598972513219 0.0432778803786776691682189531982621 0.0219839196368577549811403548413854 1.0222291669933868825387977019598936 GT 1 -78215096870986234965188163117293756.8886374239499696776933397424983335 0.9051918902964670837981545086009205 0.0983692173309510969701017457827024 1.1035501745711603561626040830609081 GT 1 -509958423360307282711633601059792.5425652092524225586103816746187035 0.5983256392686397459606002562152628 0.0932467695709164934071323535807859 1.0978849381796667089836258780954563 GT 1 -1037163401084251711292797617739542.2792335981566349777824339113729904 0.4776311364763885834709808558796289 0.0430775369315760823318329311370793 1.0440329116386905410825708593229389 GT 1 -8430137.5902114810057381842767754173656817 0.4779358219989795747329066018431341 0.0069878129405438455940093927972586 1.0070123420420288533905031699923306 GT 1 -5853644935693215398623147066021144.0720459008939941448729048873113829 2.1794186369307170828678942071171389 0.0781826067588014387740835802094395 1.0814081300939652044125155579197671 GT 1 -6915306987725415833632474.3689008174801578580975979434808338 0.7072856385549596352619662660147071 0.0390668843597916201714053913517928 1.0398504711434077065165496966803579 GT 1 -707.3071717304528054963378388807340445 0.2426255484563846475579295769413610 0.0681406116796168240215123659302721 1.0705733465795814929758714375731937 GT 1 -19498862413729471499635590815265105359499.2659624106550852041124254282801529 0.3464042360210691041890041966502411 0.0736285534269299964665926266873682 1.0764799945586726222910026825795492 GT 1 -11633396795839818875622781605912250942113.7645263205555426238261176645431075 1.6228394831578408184874412369383125 0.0107860949193727492554655380571955 1.0108446865385788674149491983549050 GT 1 -4265824.0074145132309219373723236883367815 0.0630118787389487474014843621547009 0.0911594129276227911312008380540145 1.0955855719416438238088500453362271 GT 1 -160111301658835064850759247953703371653391.7869530495379758129538010015587451 0.6084482973618633960671317118113239 0.0211972517056541568974505281278998 1.0214251395974297188636691030368882 GT 1 -212.0268839616594209384374126129208071 1.8126664353498311076226420547439518 0.0685950427305841655305375766980507 1.0710611260629952462621016294311666 GT 1 -149317775474942821673798115592592904032.3093907356301128074576155673159931 0.4082468451112274950112586449345148 0.0725387933268692424982576242140701 1.0753043110646122750288950332369603 GT 1 -11015.7288891877039799350294515645393679 1.0314291399898875212744898325847074 0.0463745346843848679553679167651723 1.0474842786278436837450173611736204 GT 1 -78561651391501363852.1081427924048496867437709235112780 0.8005581534918880065461886371907644 0.0595234380461086050825908035691445 1.0613685513874223169587768663679626 GT 1 -2860999.1789111572202668870737278206753807 1.1350962419769951173714763844741732 0.0054003213532645223097136637821356 1.0054149557995447661456728481581132 GT 1 -42.5041731184516530805332349340999696 0.4413741124925124927313371409343686 0.0624505652567638251808269327793418 1.0644857921349842099227818606398323 GT 1 -1192107498800.6134542024570406122512352121036077 0.2761793852010620032299986989019365 0.0533419976632578838452719626462781 1.0548173889980669531972165891241445 GT 1 -247738769091360177.7504110335473577974433187662670200 3.3697534598770241372143924886745605 0.0709256517512972796154295548073245 1.0735665129629152028518692140251692 LT 1 -15786950188575.5284903952719074020021511025719189 0.9043890403450391044699956274256636 0.0252821871743679929573787239932089 1.0256072726180764430332948229671980 GT 1 -52466044995676293376758319056545014.0780568587903183541120545416519673 0.4488868378266983643618435300883178 0.0860451896257113139577655647517428 1.0899741503538862973384883898020198 GT 1 -2172271752105.1826216827906482834206800547001750 1.0489179142769935681028915257441030 0.0591902077158126832181763327131505 1.0610142934266071192671828857395203 GT 1 -2624.9956984803344300030370797069677978 3.8618802094506661931333712613685622 0.0494608621096288498354850425111909 1.0507259417936634325801955317117482 LT 1 -275608171121839789175.0892708206637735532866314623393555 1.2374510084882652565127718636139680 0.0310682566199804662662731446674696 1.0315611098407007245312776070688761 GT 1 -34105434900422135401296309093284645260.5956254204095412294188953402490676 0.9827341014548801633199544721749708 0.0221379627042825340390927383628531 1.0223866850578843512820207213965741 GT 1 -1619896934.3646353442440072350762575082082142 1.5271030696268838626957686570615791 0.0996800257785365492271375534627989 1.1050050519298065058573944978553834 GT 1 -316366.1311492867512586942599339421095263 0.7867000077893150397927441988561536 0.0073621435250197236346093207699565 1.0073893778546879848861095988413647 GT 1 -2312902173515235849119668086760573567523891.7962597375566706377043063583564370 0.3571504731284101983700742774893927 0.0991773284055496089657832159562569 1.1044468536247389128932097325589581 GT 1 -2736802577636178458293589803232661195573.1871245317503467134833123401625587 1.7489417324652877423650341582179514 0.0507038366422255889749384497042857 1.0520344496512983918985234582283777 GT 1 -21.4450727428856598040398108979781366 0.9947549276098235015241531594740339 0.0962617889815122054681189974296711 1.1012155501104391286835160207754790 GT 1 -2993211520975485081538.3823877912426882027403452686459602 0.3794766301756646254785611419497295 0.0677500621862465615298022237476966 1.0701543266287564893899639377919743 GT 1 -3910997275257114900047889496.1667539186061816202794837032978624 0.6425006731560182879912480083449085 0.0130616778265380204161909070274596 1.0131477317003759750081879042640947 GT 1 -127551686364891.0178207980018262907956577506145883 0.1107853145756584360552974001572642 0.0785441668546015127852857415951952 1.0818004323259526853151329822363544 GT 1 -33185176535571243306423266292145.8545470840978750867517268654767243 0.0535691336225691067831846961648830 0.0033773113314796907535349718246476 1.0033830273208068889322889310010194 GT 1 -672326344565943.7042864430069304718375429189817480 1.7119796387205289361966325940163776 0.0981853792256744479676734505585862 1.1033463002475324754023253545922547 GT 1 -56546776091157487268794.8172673273083809022189520868713450 0.7915662830600870424605864633858633 0.0435721205507766131717296874536312 1.0445498934158650882904159514924199 GT 1 -53244186914589745512.7172034303569267556072354056834285 0.2164508815294395925065376477863729 0.0326207272242642797183302870542303 1.0331646445249423769389837030852097 GT 1 -36733603499322774970179839014.0392347127339733518323292201158421 0.0392877942730854377984934543713809 0.0905060335975277693797922796818202 1.0948669150179581468406940196567349 GT 1 -407533846637302198436.4734102628197880922482001415502218 0.2284060423377235958175418803363385 0.0079217728749078272688018808970094 1.0079533168173878155822863116817925 GT 1 -9658916804523.5575008366647772762610389183975018 1.7467452686066691023995294793713197 0.0772460996138890078248677446915038 1.0803927101656430639878800987260441 GT 1 -827885.2355456474218275539182060702176709 0.0152433669850499414384130100374630 0.0918863848747751346003510295927029 1.0963857814186523432452207994699328 GT 1 -1136757517092791794077706993609.4841751198658929923149193677371037 0.5987928327304314216660089622074599 0.0558785657012538495428516590156739 1.0575004830814652560753633700119810 GT 1 -27.2535234410996905870630839667810700 2.1510786184702257776087803661506062 0.0948203522496444833251891099998700 1.0996218491803827802550003422758425 GT 1 -2168724989.6171093313852597583378875098488708 0.3300001472944541395687508192090679 0.0636814226704854975838223665675275 1.0657995000192240361792617207157104 GT 1 -314103926287.4926681201022491352774112415838881 1.3921096638272081203393275952776533 0.0236979284072522928969911522727449 1.0239832408714270877622188225709118 GT 1 -417698909026388266022659.8598809951880957087410134476133223 0.5534093305397538589970817264147616 0.0056787699417768061260744981850623 1.0056949554607809511718237093899681 GT 1 -323604172003313366050394184423470570217829.1801184869120483671802462739270770 0.5487145177976774548776111680937230 0.0297415208018778701615320567969435 1.0301927695823131322541392508471730 GT 1 -355432221799515895814.5227212033466109006448098708215765 0.2952278824876516381156975565162831 0.0675112881800410888480503578263875 1.0698982328243433562745520691577018 GT 1 -10371021.8054347104108271793632108566658425 1.8234609945352355386123436482593813 0.0421373031347690336186651974772322 1.0430508339706047081317968483198028 GT 1 -3211215440446329.7033855552382348274798078794945611 0.3617486080943309468456502115465060 0.0863973460157157206819759047181144 1.0903595351105692489920126212206070 GT 1 -213927901959581542.7078222728479082401633630848058125 0.1182475278662197684183761100744135 0.0312631172172761432825634850034622 1.0317622387595690218404852306623182 GT 1 -6652703768116597181528.5822055187254162673767673749449534 1.1184038531253189881208825285601189 0.0209076712826518905377900082777219 1.0211293316876863341162404445426084 GT 1 -211134278150397389009675908.0164544922206282249075312980410017 0.7195493525776654863555440256473478 0.0611044266019647280308361594351276 1.0630510163969405777978269697681608 GT 1 -65.4323131702613842713637703182112361 1.8936969697060144373271028408478998 0.0474288520500015414515574755891958 1.0485904787603920309765309908980305 GT 1 -9826291280996198961529400313135702748158.8796676912008955766462910468121388 0.5284209456896125653403531511560025 0.0334723486495500658779087014326158 1.0340453709649899749101432921678042 GT 1 -12279137863222.6287754707246500039767380177373556 0.7025801743596606099015945700241848 0.0891047903510539299260241579309768 1.0933274161661077850352565102664068 GT 1 -185784114377133915652694690706823136080.4243242956932241057249477029434702 1.8954611795261105468431463078609637 0.0397361032872090066144402577917103 1.0405471398870934198689204975300893 GT 1 -17926842924363070736486.9199938309934149242619288672830125 1.5112457553958969508490465162107855 0.0308150015059295339021962579304688 1.0312997683951410791767275870582094 GT 1 -27303590662.5945611329934384728203557150465488 1.3850294559061029565022676267219176 0.0847653936145385307887778190213377 1.0885748461503167774470120551956094 GT 1 -1013533330531944663679591.0180761081044497682283612166008131 1.6042839148508106363081650294151770 0.0829738174230118726523744239161090 1.0866192547047265509253327661412191 GT 1 -1.1414064115495427616014389382829343 1.6450562335047972011869219251374288 0.0951689207534281648073107694433497 1.1000070054702253837850114793721652 GT 1 -834375035212230720459357086434433.3449330063281967477236722300415211 1.1288073703071019116764755087377393 0.0665803764912214587378874798788939 1.0689004220011312816665925559859001 GT 1 -2398522125.7327044566316894398281430894970829 0.3717790478006759878782242818460962 0.0025966620464938540296686669922941 1.0026000392209062692731819563107413 GT 1 -253822254251021901694961622826.3653391722450297067739675907507600 0.0428713350853998834027871609087678 0.0515642130794080211423434054078005 1.0529411915080764017882254910149310 GT 1 -6987970026161583912210406354421723339.3605712022042371104576579928703360 2.9299734990497149892211827939278649 0.0505683861167943115995663635841620 1.0518917746166940421221945824486460 GT 1 -930630274947.9331112400676878723513365873505039 0.2031867777372926182004332277217654 0.0558365280819884858729850413298860 1.0574559584240537511271332271754689 GT 1 -7185254707904577567345780028872773.3984712007244360798757366909362162 1.8376798227361407755995755695519106 0.0649584018424622762050269045858650 1.0671642606750393721825110285417296 GT 1 -40579209576943183113890019609.4088151117262150023588856559967116 0.2680759623558607397708234690255483 0.0527602471562907855892457426142807 1.0542030469369153933226805703199579 GT 1 -1340517260950104672106891445.7602749735293151424535550456287171 0.8278307338065212602192128865681659 0.0024799738337096480657632225520168 1.0024830540624625817413032596885642 GT 1 -923580691916626.6306473531881345524906735671657999 0.8904433322257968510845079897861172 0.0846427909058059774612661565985851 1.0884408974372512786524612109271188 GT 1 -28653952394.3766590279206202332753798209243111 0.4805240144184963676053340429099718 0.0717469566987297455627307594662810 1.0744509073940760805163253920077391 GT 1 -4182269307894096534084581927460280989.3859492297600643569844985704695999 2.5116585391543158638444643272330405 0.0843292502809737050205487362148276 1.0919790884816029249531326166515101 LT 2 -175990252145301786686955940070827694.4460706328931378543425869214364430 0.5649655540921083850429504509013184 0.0260693139234257282561414359951986 1.0264151420643221127357125218912839 GT 1 -1688645.0309181188384646267094590131644504 1.1623030290880414799836458331048161 0.0649363970901862092793490979211436 1.0671407275045369604668995927805826 GT 1 -19499189924028671.6711817106833662315907348994104344 2.2904449922129550333044580360641718 0.0779335087372044650756507714125653 1.0811379416887128158125516847045875 GT 1 -220.7744862054295753730827391263919167 0.5495280981155471012880900414867219 0.0296792837697165978395281317657169 1.0301286268435584057735786454870910 GT 1 -40086496385988592197273.7824360079847188595108508527840579 0.0561061359554911749420541679117595 0.0346915630085516494238340914897304 1.0353076048866293250179949330037040 GT 1 -961498983529132004318790215974739.9466049624640744387692685331899388 0.0986926814448213608712058213240607 0.0481133257687398579091918587853937 1.0493092909496020190064095056127758 GT 1 -9084747619176514209437213183244.3175604646689864766074198984503172 0.0350094839372746019691267457955260 0.0469909605767974222184656847593143 1.0481308901439555594094305929359448 GT 1 -57348215563005236475931140897.9850165575711333097723551886334335 0.2392739189873580328303608785127734 0.0759828709115846453171698614761715 1.0790246695378035258673794384059902 GT 1 -101.6024697141188772838367710690867401 1.1047205240516482597342706837885251 0.0562527606731171567916271664904503 1.0578969036397290278669391657472403 GT 1 -223186486874421311056.6129304483223645166054769474322184 0.4105397539554363248915894583384219 0.0035247031684391528379038368445433 1.0035309295697684867543757958084128 GT 1 -145749306923233249.2579224488689060536371085844955826 1.4415882464272762334578480256566422 0.0755742534831465322300120036384653 1.0785825488312489627364234777592424 GT 1 -4037309832562281981048900190485739788.0640852208571436907266978481928045 3.5513144768105174140263429304502846 0.0115566181833433802276173057577375 1.0116239148791653851801079098842660 GT 1 -188377981283491950126176227808908741.7226170886538585689727771236698086 0.1227370465106372714831425551901457 0.0110293116701240467618588859970694 1.0110905854832850462299820834090163 GT 1 -30371939620323902979692643301461883676.6943659938731843556520287280683366 0.5835236473721669078274770298834931 0.0227318446945850606823541553846920 1.0229941965277755326631211611534916 GT 1 -1424456313828650808959893134701018073914.6547382439094515964769018874309653 1.7882716528407263515471043693448730 0.0529641987806890131905968359426941 1.0544183816328088810413857733122032 GT 1 -7041955445584215638197.8652385690808167081842305672185473 0.3558056552547327914321400380168156 0.0777488837670856083640209668210685 1.0809377321695007157606499619302109 GT 1 -13624514590353.9910933002470479941955071238572823 1.3110770165921632237035023022293136 0.0386470579996119697037659142183742 1.0394136720882556842329251731807388 GT 1 -14382159853945465.2392700866109222510003221327047345 0.1212550251632528680236237524580019 0.0080489557302289276866494701763802 1.0080815234495469199125260252496442 GT 1 -1046417324452127002814989765743.2363329833888694913957656572584141 1.3364585311561034705577389018822683 0.0345039733391689317552373594784880 1.0351132924396629280504157494895395 GT 1 -124903626989989.0975992010489151787616527298763841 0.6741581245943507399732874709944425 0.0587332869233536496893416925201080 1.0605287437689449888863218371322251 GT 1 -71760294151560235.0363507049248901932896042675989715 1.3732359790475812164970440073928640 0.0970241696668878671318162459802068 1.1020594918889122906492774441776846 GT 1 -10.9416228699508968933859479226520959 0.0116770460574608928824688994307108 0.0910894388713576637223537727315948 1.0955085822432806098399355290254893 GT 1 -773784731554580673857442880674725057.9768027155583115577834573598507325 1.5691248544875702347044744037909483 0.0424903016163828781443286963858945 1.0434194291184580149145540204536390 GT 1 -15011684838399175487693423939627839852640.9437167180550352988462901757446156 0.5569194903043156706716909939330799 0.0569802314294958896554343520277155 1.0586680330790105254865925996119503 GT 1 -88246099637159303771534.4758405102991896084958798093199776 0.0636548914132293920331087659350970 0.0556914641727649349513892438389631 1.0573023274367646429805744869280255 GT 1 -12411411478284735192407574567107.2287939844092232706649620338590808 0.1978552170214102287984256357663114 0.0108057107113501458897851152340283 1.0108645164119425824242649571565537 GT 1 -2700852152915323647797161020204.8524179717608307955720334983281756 0.2570846585405119692292219971134783 0.0181942967276278632381943958571313 1.0183618483789559088604534512234494 GT 1 -51762077919212719633.9388616897329017311025597241958027 0.0890527479966266410985119755606899 0.0366475859988939985891554501154396 1.0373359798183600564361251064947064 GT 1 -18032326972389.2014528747242605418529128788788252 0.2253209561783894605759087047559263 0.0109253111060195330283107845855553 1.0109854306012000772066545377733979 GT 1 -1982615215663844059395688285556840524954078.0735515978932013143256313206513110 0.9178457390640142368331866205000961 0.0755757267142426633702689535426739 1.0785841425041595309381345372041145 GT 1 -25780745744815198648356046.6653038666721826259762702584086828 1.0190929233043110112185322631288161 0.0574513985051147284807397646852467 1.0591677944166586653950189173708387 GT 1 -19856386645867120.1100511176429143183900169111271808 0.6658529612242355148534987452664147 0.0318564162454402782503838185801160 1.0323748723804565686461931619593817 GT 1 -54574071105920321634119738611988887650.2370263029140024541479118554338984 0.2115744071492827595451989830264269 0.0289089798215914066775003133206511 1.0293350764862568110074013621723845 GT 1 -1057163.8125225759114974144741443645996415 0.5020895767145878216789651281202660 0.0890437475280869719841795072818027 1.0932604043111251183638721804620543 GT 1 -52148999267084493378368951407336.5709429761852699605977312042750649 0.0510184683782185848914709795643272 0.0555330789399409617153022361190405 1.0571346153536605573920381598621247 GT 1 -8182533133862030672711393549153610.1791166355951426483552873104126792 2.8246675380992466811419663689579534 0.0419199223827675821355063639836555 1.0428239161776210990966583523166943 GT 1 -11530965790453959748105794225978247681.3059244636117292214106324225215100 1.7045774651271964916672097857227513 0.0267810559222054069801156388816327 1.0271462025020578849810326834062873 GT 1 -156824278319993355372426520207313813159024.6954581870086144318366450832191821 1.1447281074787441794977643575772698 0.0285507964256972616686002514176567 1.0289662981252491586451746005075961 GT 1 -1001350846030.5929050773276119144332886564162580 0.3997198022492290542788499741300221 0.0385762950709259100334335751039050 1.0393400671494490780019128636700358 GT 1 -65.7512181320982384133519621307102249 0.1954771753469777712855285550870043 0.0290414957616223797482045347322407 1.0294715466828924346275753964174263 GT 1 -13781410843650450219.6455514250190400357618286823087263 1.9993842974050317540173324697406921 0.0760910031977024453745773940222970 1.0791417004999466653970125671280053 GT 1 -31932.4612768877598372021745769030781715 0.2238469784988277357997522647402481 0.0514663819470745748234080228373894 1.0528380468477949186720093721144047 GT 1 -74195953098736903050.9805334404429348721496863041846366 1.7915398159058957259526397706111376 0.0447847534833773359862332700071469 1.0458185748750550769643172537922793 GT 1 -4057.0417546756260286777093170931117491 1.7047140682779458057673307980097808 0.0649531629358515341496958247578237 1.0671586578313319998905559942407510 GT 1 -41227826.0038890826061711097142130280949945 0.9717131901313227532600497939955300 0.0606990020364823009825362339256410 1.0626192995277255252563609777271877 GT 1 -232537180657735967787388773982217107597473.9731046802591890743698195678286010 0.8142471960670661288687679322022350 0.0201595191645127928559518286016345 1.0203654952244179317406441743172029 GT 1 -40489631512.1132227216040255712041426453954377 1.7254378616057164105846000223766024 0.0724914111951629107548394595209492 1.0752532243764816708683486455937639 GT 1 -12694497934727197306116035607286811269041.5832217869033810767838245284637400 0.1491030098127084889556413942345885 0.0798037225163941481534898812683895 1.0831682866030026699369494629061303 GT 1 -34568.8473953797973274291384242642960676 1.6630602464034493606693604270090379 0.0584332377902725052827495469988132 1.0602100229265980595561985504828196 GT 1 -1691615131097537625377241.8427394187609474716130590415237544 1.7815389334864177638081440031584010 0.0239747865373554203703569297486049 1.0242668594368984328105674514981962 GT 1 -481892385312351020995076808949749497.4107648977898431958084944039860468 6.2623038464524293894186073751742560 0.0389537373787885121835306424686036 1.0397327310860339706232042529155788 LT 1 -525554054017549459347548969201925569322.4430788462757620406625648596664608 0.8072691760854799147996632858739561 0.0105560120171798649496833723021328 1.0106121219259325778647927047163207 GT 1 -22858823616714.5749107764549862751402529871696935 2.4373702022319366990530198064664089 0.0208208598547347550615076498298046 1.0210406704072108298787373467578187 GT 1 -3322898764153649283979329.8883182584776865711378059240611650 0.7028527620165824480186207860168471 0.0951958087500851485247566051029474 1.1000367219518803699440136370498142 GT 1 -352063435910739308028997448396338.3876513940613086167433236416615961 0.4107188939162308134756375265195462 0.0832090053664489921226644398477988 1.0868757556772873390812147569717472 GT 1 -47027.8175900143618402269701670441355938 0.1109806374102177353449666573110146 0.0815753103123220247820774754083721 1.0850953704074569120574524243649373 GT 1 -1280506427254807749966974571.0542257144248196965374787412017289 0.6190873285103404911186814179631899 0.0217986978686849255921289260829588 1.0220397997273725616804771284092409 GT 1 -68714465050612726228.8704270693851708677899940000920839 0.3136491573699341413977090539535941 0.0654607649073157894685477237861456 1.0677016678499627931355129710671738 GT 1 -26474031156.8851836965294512543517227218964114 1.0832854749552460125153658435645031 0.0976534346559686360299252525779688 1.1027566139276923844284219209048093 GT 1 -307613926445018847830542700232150.4823289578811282091468931757524591 0.1131357584075216391103288979410098 0.0510829181821199615066892867538125 1.0524338584594471143703785555695418 GT 1 -24264229.6512816491421914856178419501783315 0.9702644232704629580404221154730528 0.0427582568953196198989596532926990 1.0436993143034276852106828224517637 GT 1 -954663103691874791810252548672060616697214.6103014514610500738246467584192041 0.7407556726164912890563939589963780 0.0412247372813245808698277395372921 1.0420985770064343670275784390592240 GT 1 -29589314418536101406914007275068491036991.0462674966066679966610825659338468 1.2535564862606154770235569665731654 0.0893751520426271200991793625331744 1.0936242689978178764656403076596926 GT 1 -406069077798033837975867780112087457.5957074322366017258047702729540225 1.8514749591905552232330456464510784 0.0860118164876746670616011392928373 1.0899376359350537973034802745079435 GT 1 -164237596692437484200601745710536259.8222708089963370302023934838820632 0.1933018796526848639936980065782098 0.0084469338521415280394054438076715 1.0084828113774750416294198937461202 GT 1 -41398758329496174297331562559397.1540831390110787051738300362794339 0.5586231980208213537464318427399262 0.0927840117334177349892301847513944 1.0973747224133040699468734763218855 GT 1 -52082331437413.7583255807126715781157928007832253 3.2180292973466079593048111648139371 0.0957474039338842288681798593121523 1.1006465371934584199170473361129388 LT 1 -38612594964692864481406261661765716.7110441768254494479351940212452608 0.6344954929624588869758750717018411 0.0585874988651885758465001525894411 1.0603738708013613558040524159218708 GT 1 -11097799651709148462893396.2668746901467816206105145663747313 0.4382743033635657452219414756377740 0.0712424720130599632721397083672046 1.0739075774789098411947405143568958 GT 1 -2211085675875.6714433109289144020101985150915149 1.7099430985845099528089189922063304 0.0063303602519670496115799620298952 1.0063504819457561275937339671367477 GT 1 -4006438099620493812785.1614601532516835757206602208845259 0.1562628402641340679597329922596714 0.0876855333403393383354757458561770 1.0917705384072507231382642954737790 GT 1 -3472509787607193082844707305368665244.0258911356935314567230726639941556 0.0036898659363718265637899278305633 0.0761985953780294469374598574683163 1.0792581605040313659919813146326535 GT 1 -31397666295399188055625560.1085039758530401735346339478807208 0.8803533107272580815932271180142392 0.0656398761084555104716808186346921 1.0678933434485733487557056301796751 GT 1 -48369487.2776445983799755874659540348646729 0.5385784400903544041653126835978344 0.0911696043891287836977524069144817 1.0955967856999127209814143850428595 GT 1 -1753765744222169379872.3139093916217646099027778731381339 0.6242793004249854126043937473687812 0.0955223120252971614810590037510649 1.1003976422512603933803706274183132 GT 1 -52096839635608402393910625066487.6356574015228259784491062955603470 0.8189363414745431701520468035691612 0.0532428010169698088805365148307117 1.0547126083389598664767078436307719 GT 1 -367657735731559030745820720760475.7604762717309966053486601797135771 7.8145325309956370444888875093254642 0.0236913904871320736106260319288095 1.0239765442778014277924902121372995 LT 1 -755141028289628363752353749817.0054225573739651125776018607536323 0.6907906562451179913722257414926746 0.0882406872395153003823426304165525 1.0923792351853967922204992321493578 GT 1 -2244264142887149.3731413682605619787306346678836494 0.7445685026760602999177109799897404 0.0112217227768105540425584627832436 1.0112851613477095324762731087633898 GT 1 -32482722274667436979476940004.7716943086805350618526243910084389 0.0991871235242049642523958081845239 0.0926293632224408589655833689103042 1.0972042720096508022184776931844299 GT 1 -52023907808640596277603134997550.5389621929048960681100708802632402 1.7125207964119672001522446506105100 0.0281045460707639956337230525176386 1.0285070379924118703162679439544532 GT 1 -30125130754421705036453496725226621.1684918269090008841074979519238092 0.0106006542174930749282144346546239 0.0953421049014978734866295500769350 1.1001984232141894670218231867283474 GT 1 -143752372021655482184.6138392317861706188693892752573747 1.0159146300786220554215362437232205 0.0957674982457457183649816102957672 1.1006687594521726715038876510084959 GT 1 -48821952664666655199056.8174484617153931857657545399452577 0.6520890814130957184409760203951658 0.0949485384801145607698775693127058 1.0997634733409972888701205486425335 GT 1 -2445121059710741596707075.7790090894544900408195104869216976 0.8087011832594444104149607812635799 0.0159948282539200130802060839292845 1.0161241261041833228048018410044979 GT 1 -21131925593733211.3216662392750892243186501451357790 0.5336758580145699448692718964693349 0.0882353574213495775408641952016396 1.0923733895608848325841550648735316 GT 1 -8.1339696855015268619652150980405963 0.3744448875231229174847699140497732 0.0785976111950233724296397004317954 1.0818584339017660219195413122298440 GT 1 -588194909170871599854041756877683736709049.5259704936018456617825193527650697 2.9739595033341894694195196814345472 0.0021159789783712878811728192534382 1.0021182208249147879421147291435677 GT 1 -4298377750488102367814421.2736844302180825247065966478814633 0.0085614076844825447755939018668756 0.0057544085782517984049092203182710 1.0057710289783459046405206088251657 GT 1 -165829471196161852519603528408043.3585459462123909289493530688262604 2.5121251162273362324885287891855682 0.0243496451539999389064119362704838 1.0246509997390481458209142320858203 GT 1 -780623170527791918875.2412116194936467059950386737860756 0.1284357169199469496317373867430869 0.0208220509526622280270139701868291 1.0210418868328913621064834900068637 GT 1 -4133776509470085542093903066287300647936.1155604963430338154792071046173803 1.3222249763926256744187839670421756 0.0831104230370650501451732037008843 1.0867682316831894020279508660261490 GT 1 -44207810484161514230054.0324302124736410907606110856884052 0.8236311425677297569737897599658864 0.0243617747698411173247151586885473 1.0246634321552116855398202541898699 GT 1 -3320862059612.0192668027117882350121994342761343 1.2674465435334450048694033343845837 0.0687943342424176803594798422360494 1.0712751176618084666717658583685340 GT 1 -3425660772603791788283178523787383992797.2993452799904051386472585986382390 0.9647829676454599899735964755488704 0.0464700906151304076961951278282456 1.0475844864369116867840881931224086 GT 1 -408573.6152159129691825942364322044387629 0.0024764555341277986724812322300317 0.0964056502526560236332559663004636 1.1013747474541606311735574899290245 GT 1 -55130114.1136851861704262661785020716111595 1.7508028149343869538446708492216165 0.0223657797439914296980385521932294 1.0226196868239166735663008652721759 GT 1 -182289628.1688014203366493580795510937947631 2.3022712788290610167100739558601570 0.0856111019832483819889805155438638 1.0894993078517603993259146307428365 GT 1 -89859953076718323447202748439884005778.5976791574298146246712820399805556 0.5928229702618191199461308320080798 0.0850182242887042771659095574995851 1.0888511311603814132387612034403938 GT 1 -1866626577861528.5446785817702460678303941116121235 1.0268451681026761758833475976035181 0.0452768824752474208775495176819146 1.0463339098324826909368945120317864 GT 1 -35586565667066.6280299637365760900839242511870943 0.2543034425585396824710073177388920 0.0533681204704917935762324051455069 1.0548449841460532908169555441062538 GT 1 -513975686542334374042568818207299815738818.3170384905504844031865888420295802 1.3480410662277234088777426080076162 0.0524700161270718817661264029026719 1.0538966972777830033437584014340699 GT 1 -16718513184552390648.2427334465047152956311001848703053 1.0249791851444816825686297704493924 0.0514096835568463650217284361249355 1.0527782738522471593882692240059168 GT 1 -7005320323139292049153400483491518117211.7831432465432650633795683219050234 3.1753402548298630224147166921926622 0.0717339670838326948247405568130591 1.0744369138778621470945930890472863 LT 1 -2027104312774926155041993631993226.9004604423820444313018319114304545 1.0522350611706346404154489673916183 0.0529142493466878113130583963366654 1.0543656401031394699753818498832946 GT 1 -1684898662294972163808933798843.7146747076227096340577219564528772 0.9281295912607516868963747802706937 0.0839746792015159896538953510483095 1.0877112718969569346130726915416752 GT 1 -39180380295400413287214.7907585409180224354359233043690011 0.2832622779445233001828670556648716 0.0969866191097488348484155174719960 1.1020179074133117890573835220049025 GT 1 -2192253915035097386896119753968.6434045105514362238250952613824461 0.7444938216772412790037360182820825 0.0616065457875201199123673877216280 1.0635859571440970709539924921852699 GT 1 -271724757427425421366824579508152611827768.4514348919174545959884419028966331 0.7663326404327800307305974256272516 0.0418542359899268264654683911679650 1.0427553580865657133517879675550122 GT 1 -7374138.3823020940248405993662160151556244 1.8060393355839499969398667182176775 0.0708408415398708439591264573206499 1.0734752324955475330375824492491769 GT 1 -129447.1165383332198267071717066620947397 0.9789765440915795735215494591262796 0.0471014806484527196478688952203062 1.0482468664632375152212011141586533 GT 1 -49555363424456.3550900009848915481818657701689228 0.5608083303995098519312654885723385 0.0181983748903612759212329239812643 1.0183660021246406725288844377470681 GT 1 -2310599238062448934410288305968952112.0953997811279150260832360754128934 0.4927952296729391666856635775312313 0.0100590555274527942108944287315220 1.0101099896806877255841796858830314 GT 1 -18.2334353665478880777327737363442917 0.3525278272115236856564594022632305 0.0465643859609469382621685318874360 1.0476833821376835376391926294286004 GT 1 -233614274634995076795561888389582422695577.1968908093342327630280122517701440 0.8993185391816437259863113358544705 0.0510566569718216905465968455004831 1.0524061839160969866376737042699116 GT 1 -15973650885165120826926634227.5842776090306868852048493916631158 0.5123789079803769361453824015012230 0.0111610706658750550230437510900124 1.0112238227724246821806419546697170 GT 1 -250214221477941720242345922613006.8928874068602468593861638374354591 1.3667263998663158115217541989076697 0.0215296570144252369011039334217930 1.0217648012557315874351854495456369 GT 1 -3545519145997931159316018197487574983.7327190468861093726938484372782080 1.2125659816234282110298051436335311 0.0585568270686022666708142981781775 1.0603412907188712480635016292594578 GT 1 -157978.3915197782881335869099949498040255 1.2977552944795743634666743100221385 0.0553101128856826237460088713764300 1.0568985671290464362125148731139876 GT 1 -14777.7267364392418180594672447622252727 0.2808134455215157441705384610929977 0.0515069821785465112481341858576787 1.0528808509188715716109443012489934 GT 1 -334050611652998126393824696177.8242260945459998362972409602744645 1.3327575021126181439858078000028825 0.0851113555430217078076740155993651 1.0889529211596856033091025173782194 GT 1 -10548702175183767139789797769912871195.8293533071032739099098341369087344 0.7851798601223298240919671357098712 0.0823157307595357402150429623437754 1.0859018808095197369376783411564381 GT 1 -12919737030533310.8125555202220654066652624673405865 0.5038366664899014010697648157582438 0.0830591970135529710373331187090130 1.0867123638951044244013971989214765 GT 1 -15796883698824897500965847666367506998743275.9873675347488191687758924658179330 0.7164923681089531201696177976145529 0.0000066643861369688371298689929216 1.0000066644083440887930441249686634 GT 1 -4394176943033487009503088.0076782914153792118235668357158186 1.6128439389976898537214625338848411 0.0553098296598165304299015680503292 1.0568982673207945433677744804517095 GT 1 -453964313438.9007493685626791247349063085420507 0.0574034829357906804479160330187018 0.0455334350533791912486199606628684 1.0466026652966793074250984337794550 GT 1 -991367.1457231387607183333802602425693735 1.0343372792337941161534184665129987 0.0701996384122812765707430770900461 1.0727853808380979292465031275623416 GT 1 -20031326024874854946115129.6624599689060903114899212794616494 0.7805451041519496221944096594558855 0.0780889021643246808338118886245084 1.0813064832462748399641178671880095 GT 1 -953760859369471064329849017216736555973.1442622117648213828900955055300488 0.3063039521522133148808175805331041 0.0929160917220533365498992844483375 1.0975203212628884065262239431666899 GT 1 -33041390739490882686081000826045329182465.2215267420086850881615912649615529 0.9424191420821843473978200317455220 0.0025612527926749113076459068680288 1.0025645384120091010731507567392053 GT 1 -4545713398349102341293834507247894.8821058984241354911162910493722405 1.9401897396510120431593120810180333 0.0711646733103833039401177067765964 1.0738238145568827822683643790097710 GT 1 -4232124678829104450020207201434777431.5111052949927641804035955075705961 1.0227735048713227976307307284672565 0.0081339874375155288097645091662575 1.0081672488011319625360640369979326 GT 1 -32886293636116944.6294373875878026267254069139621271 1.7600795640716170878782884379254753 0.0255404511941336708700026762244596 1.0258722705873334483985239714572479 GT 1 -159263276833445225181436089996.6405553998482607380637782804701789 3.2355069446324613715271451942737362 0.0823817631135843219239587801366643 1.0859738388151963329092785479762302 LT 1 -15136002050365396.8176138789158173545905144837886479 1.8413970854362306930913375327559890 0.0824769480847112260571306595327691 1.0860775746657197717501157875753797 GT 1 -29554453733965095979908770077868241.7154966450310460567023488544037464 0.2492558394695451928406520569816942 0.0344582603216742853833411123675409 1.0350659468948993495792515629469570 GT 1 -20973976710136.7842063567177405931822369880740265 0.7698596358590586082747854502742948 0.0216777964135142826269266706547619 1.0219162116846312355410852281802380 GT 1 -8815610206597097045563.1185279662336036158275330623427969 2.0313378049454681010711845636658064 0.0015047528124318131284478594396317 1.0015058860899561084953436195625280 GT 1 -46317125544017212716416646923.7680214302885391507134154989763122 2.7454267768575416407460564829622400 0.0099816318862783734956127048454783 1.0100317823753944154152357030285359 GT 1 -136643858320925701267967.3464235164665349436220985181974870 3.0657738214933682093705539378114702 0.0760956465427621149088204897750763 1.0791467262727705570793435137389932 LT 1 -12573714054344295121.7348173325996198011083155341882741 0.6106435671101727399781193214419040 0.0024905136160519050881902798050978 1.0024936201039933479864076731072253 GT 1 -103121095265928.6046363900427100511372159883042959 1.1944028420504322645348613777916815 0.0894875040021924523911204094614203 1.0937476555837673619777062537415870 GT 1 -510915365763372684770664.1800014442069486463922662892112267 2.5191373913915083072769373142634904 0.0225542748068960748614656633554997 1.0228125127632624882747792893940595 GT 1 -5585887224147.0749505940962571176469167832000966 1.1559123511506064334356690853810238 0.0728137478914166885137545142876265 1.0756008143868581394093588922509254 GT 1 -319798339787096918712381793352928075336948.0728405888257265372768718123983688 0.0621800445080035350180981205531469 0.0056959996086771856961304631554731 1.0057122836799315407270728726094948 GT 1 -60406197629010671566548.6347966655760650487065960641356347 1.2023550304764869145305033727544369 0.0045902219877649531110757306820927 1.0046007894069803295408575142379412 GT 1 -957008055910503.6947101472731444070036810324603013 2.8320247215756759450130927637255146 0.0304028350864136181506742698316595 1.0308745876466234405793573787920022 GT 1 -546931686409811860653956837.7813031103440243542214965616836807 0.0906365475457289048455790141047986 0.0327046634875420049952034921063617 1.0332514149440375765095750715948897 GT 1 -13640074833.6554435620395906090586660619535842 0.5495827231241938457470333326438313 0.0868496382534736434784776710401761 1.0908547221918060663124328862631987 GT 1 -80728763241735.1792760877818872399062123915423948 1.5189917686496616670262486810946593 0.0417868560813083120821884641599391 1.0426850373252850344734817147850354 GT 1 -3581123468984843782882081565957.0992369405750250698575817010487578 1.4984853476306701275612370301440607 0.0603097846756967187262741811085628 1.0622050161999484456074487058721884 GT 1 -9002781754436971257109176303312.4883000354102444529937436436721631 0.3265505576906617810799263407307284 0.0581804215008841432873445987990560 1.0599415530057514302729054592622446 GT 1 -1804999980312.8597680840488728033829333383253163 0.0702709704474282023740682007011552 0.0415220214147358232681148477924779 1.0424086916322848033543907898526194 GT 1 -243989569.1404086589692814489198163105659802 0.3338605869516549444612909942183624 0.0125891850842648407744042522494461 1.0126691002947979496675272965060483 GT 1 -11526510497543375663098839341.7209251459264589672805668043992890 0.0792154377795793308474307875745991 0.0492663433644364697311411737058552 1.0505213222919999945386042647628284 GT 1 -42875458806611.4703134743931734866897229402442648 0.2788251449324339552688107121133601 0.0023423269503060453950923849423649 1.0023450744893387715807367461808252 GT 1 -1822645208911.9302239338092093845891246402060803 0.6752855211819966542709927181501434 0.0705156506311586989695823682429773 1.0731253096505688473030009870180396 GT 1 -66863316886110451091196567.1598878302800946249744708579177831 0.0593899099611014401422676818621187 0.0907283353073876368034281792558449 1.0951113684067469313534541581524300 GT 1 -1431902480053526413007964.0519699432392796026904752980871543 0.2912742405693351709856647467712934 0.0974398880258480226236103604450286 1.1025199849276442017465790363801077 GT 1 -78770146.1633937188507116645062819627929446 5.1313136389262807825410312981220337 0.0992586023535966059758938018821428 1.1045370796116907731531033636016714 LT 1 -237954468029163810218785183959158349004637.6138528018342680080775252516386765 0.8306493744562896354327252703403428 0.0197369752915298526734143377677278 1.0199343507686958572165460136297587 GT 1 -211670525640131304474103446648.3922873770008249371791071184075803 2.4890060750430654133508005346796184 0.0831767533159866562827810775472003 1.0907203681889318794175542826362572 LT 3 -200833340216878429748141727175348566431.7441538579079538979235843754993467 0.5492817981904940947052160619804582 0.0703030703017792607744567392758716 1.0728966279908519166375100767173224 GT 1 -94.2631010508541588528898323422492012 3.2652303939713605651503343087175042 0.0292832511197444592036158276424520 1.0297205639776053848755176450321796 GT 1 -2546903195165639737855270.3033593820007718701389502377512130 2.3212564045605402666840859878628430 0.0894217538695214168419203219063930 1.0936754459665543681077064388759477 GT 1 -6.7327842989484049759003525223028112 0.5651675943803859691663855668874726 0.0412519231814674901912985930008283 1.0421269322285943143531392664611604 GT 1 -1012177615727.8161193128562989718176493678039630 0.0848153634438518929291154392669956 0.0825399137045253570768597500403880 1.0861462026749125318182488107033236 GT 1 -26735955914285072578783244447211212988849.2410413418601729500404670148357673 0.9852010648530671207144803203394310 0.0914194734267240219835519116875783 1.0958717582293716382369367067527758 GT 1 -39999423100594518214784.1682830918790049055544943619610336 1.0698212916914304732056263522183973 0.0201649126275362077128311961432837 1.0203709996692463791272813794743338 GT 1 -57440065686999423287052199707856.5382236616189983609542109275832329 2.9244203211676620070662761778154537 0.0191249690570101315718963112633497 1.0193102169881871555684956623663094 GT 1 -94319.6487817535760412741327753229377157 0.0759508479624232094404815984843557 0.0157818593335230485081931365585892 1.0159077188297800278185019998952669 GT 1 -335763621765691864185187526661200340.4562196686960998867835430681789406 1.1594818494752909364196049861305331 0.0256240839495808832682946459682870 1.0259580990289917799840240573102457 GT 1 -22757853675572846755315325814642.9635172136416272865391095679708547 0.5577006706574265715101718189578095 0.0771015795384185115322338185686471 1.0802361042067271534498087847881439 GT 1 -4.8801800919997006247596286853291559 0.7378829043325556334654862970701996 0.0364364470391881842884255632770088 1.0371168327832314713469844166194113 GT 1 -1005592678693163893.1528367701861362769081073171138036 0.5364914502595142667989897790059474 0.0367141598424830953133700501159591 1.0374050886336468852116994113476250 GT 1 -18348238325529634496596.9738312588994834504416637881997647 1.8107195718751761692693291143017086 0.0494570010026415005567100509275075 1.0507218797840190985127978448567090 GT 1 -542.9121222690401667188928261319870234 1.3102579743742830996908452772612845 0.0012256263124838734503046778009777 1.0012263780066730237192808842753849 GT 1 -688668727640140271825744437.0549654322004361878554044326620325 1.0631889703844739377358145624472359 0.0180399462358803987375439187666504 1.0182046499030050450638350582063021 GT 1 -215024025097992728407379433909158998569.9519343534661332313717779130060512 0.2889401066867609473908455550980607 0.0652759999176506277773773939473417 1.0675039803474323278999223166325173 GT 1 -309.3598366244139041864141974822819098 0.7294575117712420515199341260316856 0.0454439296556330881345741170725829 1.0465088943835879129023478386068480 GT 1 -555249424788308169651416090453568940386625.2768429760712437010859075768639495 0.2394995854014871233924242518891476 0.0329946521844393505931585373876521 1.0335512532281466053317351152452573 GT 1 -50430952200.7222659737318263047639880849067327 0.8108624987898158868583024631514764 0.0997711125882651107803221857644717 1.1051062286451372337377302872653037 GT 1 -205245477853602557146308.8777697355080393684739368611740260 0.1218866811951597596979285299691023 0.0686299573346385601731427350533286 1.0710986127203314310162278741122154 GT 1 -1904457977117990034039761639625780241383.9017106630727759570643455267407365 0.2207558453866550981855467572315117 0.0113721601145784390314073191003348 1.0114373175858808740193298268248770 GT 1 -719405777505428644897222269963033952.2033234200847638166165810526319586 0.3857279937811657897626671692920379 0.0772202158586831369277243706754553 1.0803646600082012659047760542899419 GT 1 -1350742610577323868376721059705.5722499849497473457908473095169173 1.4346517990443569013785482606432688 0.0487158829528135086822532766073838 1.0499425049595777906926271792564011 GT 1 -1207190620580734276112654613430798.7416547113201328279123868511711389 1.3722227368926996200265836499324597 0.0229569281014527827934720871731148 1.0232245420374669194761827790715495 GT 1 -5254156969325.6566437856123718680414680815160163 1.2970972349167431339201323906897880 0.0711004042135769872077125389322055 1.0737546237417084654512974660831747 GT 1 -2049583346121294919840982023337481029.3522440971673723848334680879046870 0.5277186393218116876700052882516350 0.0827271012241627496478697558775128 1.0863502514621856225384809666775076 GT 1 -2918770319674043771257858501366622692328.1250546125907750023457365385925862 0.8443653101432212509594595729951170 0.0036830746914257641675979969163854 1.0036898739108397759671463102876542 GT 1 -56797423170069230072487306926334867452.2587004708455109834957846211778031 0.0770034738005167126150321112294443 0.0353021691969336851434842837561936 1.0359403553796651070470126918469539 GT 1 -28086233.1461099146892093879219489657519030 1.1203324612138085994917162899891711 0.0734618249413996803334347165648059 1.0763000305884564366667721959462546 GT 1 -53142.0421818165679522141700262786427085 0.8966520408750287576612410491211807 0.0493490579782511469007799192528200 1.0506083269031925591043949920992415 GT 1 -8190422285360482044902009928056046749.7087526268607794237132858855556439 0.0324006281074305972601644663709256 0.0306372564302698708963716079259503 1.0311163887730652919277872154966238 GT 1 -16.8203167460758371392914869925800563 1.8577215145672221326129260337448350 0.0728050675137619277797096684218698 1.0755914523660104993051583685466002 GT 1 -114.4181426147332177847301034758714274 0.2482175677398582500745040079240948 0.0494397761374536625586086608090147 1.0507037588687724268543142991339559 GT 1 -22645112520.9875874464351547613625278650734541 1.9894166335061241711589343650342660 0.0544067743858008735287116894898279 1.0559427964695452884698156267335536 GT 1 -202247807850586.7909438841794858996948014924025700 1.6209971264787688780835494172190611 0.0344607278503169266656489482800615 1.0350685024879868781050078244905118 GT 1 -5801343188217582395430483530969741341.2349777051869788190796866529902421 0.4602122147895006505224063384525640 0.0366217055051355246264457606751127 1.0373091151468769999263087855346892 GT 1 -1453873882.1363527112262791537603331767675258 0.8801427555052696593272605729029484 0.0386670196729785766619201588707102 1.0394344364503759005110202851871414 GT 1 -44207026317115260134.8933185494536288740641239272668946 2.4316541261390448361261005765310286 0.0082196836668594407307798511907444 1.0082536515314462274857234311663789 GT 1 -1533172286.9117821188203156231835123732825269 0.4099865325207452645275838299570292 0.0339003978966446583406712100146103 1.0344883423174109570143080462477212 GT 1 -41283.3382170737140677763981470737295143 0.1347784311333933859240383685646102 0.0651435995503280090033291182575633 1.0673623438952034951569205476760122 GT 1 -1351664595605261961367194763465.4119393328371520527798043243833135 0.4549577488842328431621693015116921 0.0956418213842379271847259270486067 1.1005297817795857881157064888420368 GT 1 -59874084126106638461.2261440733790574178321710851723069 0.1729141867561575171648711713594020 0.0306877488399629575256098755297580 1.0311684783804948669497434603716228 GT 1 -10349.1059130045488623902860559885252153 0.9754006684291418737647815008852537 0.0354383016964225164233584421201122 1.0360814794717438985397426738561365 GT 1 -513362424811039548769128954019583.2345462348924349055696672430215740 3.4454864804820885975006551084730731 0.0414416318686014846491521884799927 1.0423248230647230622688763385481167 LT 1 -901365079707158255202171.3252405742343497902348952356931869 0.8647906365751384903132159141496720 0.0728934907517790155208773816264809 1.0756868233085055892442647879606163 GT 1 -32763106901163626988135506037633130648004.6615588494389606038761518420783272 0.1663701672103291148667249038108747 0.0563613955922759949987104445491449 1.0580120204502523581354606746691390 GT 1 -7258418739458536557130664764485.7296833115614756548074573555772635 1.0351326239552029416204220584696236 0.0524956930102718042249214150442226 1.0539237964002899688394721506206168 GT 1 -6173538.5166190277824463542859914563465801 0.4599413621366628291912878259486836 0.0648988029303471758723183185203501 1.0671005233900712085585887079638678 GT 1 -77188787395607425124486093579689.9626773148499669460471464142699803 1.3838304440789326994081918366568800 0.0676529516372025679180093481956377 1.0700501641208775869717988839234439 GT 1 -4971963173911048.2170608588967023132266505731485869 0.7264073641163756742530135106713608 0.0552931403531296685848337594200768 1.0568806010426937354522945336970877 GT 1 -372774786265076806.3098534932400691128314146786263357 2.1036499254695800170219259127067875 0.0059269721726179458458543543231546 1.0059446063850339536278598583256211 GT 1 -360206659278450695834740810354360365224.5846987852243185124687733492028733 4.9795300908139104995067561503047343 0.0293155935017642219775789887590745 1.0297538825752925788875772883744625 LT 1 -16162789877946784562913598577372196509539.5190527224213722339684489196414150 2.6319164275477540890686265751222382 0.0831748360800472617533911322358136 1.0906089471533088659588580279199023 LT 2 -619395418734764738647.1847995143866427671079964408284578 0.0085953495815429330161841422440674 0.0222370072105762635527741302906046 1.0224879769771988641929328215981452 GT 1 -350905952751820298668.4143384494639860252186216926690127 0.5841540479544357657044154970880499 0.0728069190976677932569929808600737 1.0755934493417162283843176522238467 GT 1 -20.0991941072954273465347427473218437 1.5301191888671235770029170274651887 0.0786039396338959360588955013252426 1.0818653021937112806503702505355228 GT 1 -1009.5115892023482904573570001024672570 0.0600486983633750105689640686389051 0.0347368673658217136599782536283037 1.0353545385077301120992509535317207 GT 1 -30841041684273595000278.9240195372681177817426550279208169 0.5367063444733422406836938635835311 0.0683653222898603215373098448259919 1.0708145178453546369504688915127007 GT 1 -72840949521234943019481.2490389334370370550662710112552131 1.0762807995870981180811088509894998 0.0914973820865124953317160333441411 1.0959575095722010486552147574769581 GT 1 -25981766110696098289329905651690264.0360390491790004755389194732749199 0.1298283670345806600666734751934215 0.0938197103877734689223431212983331 1.0985169975790847650502457140769054 GT 1 -457673325.5863888187012086341075837622730550 3.3244371529140425490171896581222628 0.0204433763368572396992691599001814 1.0206552345260413979165497573233087 GT 1 -66366707905583406.3617673269965148912145897773427413 3.1333007675216929347570900886282677 0.0075192227269297621072535757077571 1.0075476345951844470975476509165044 GT 1 -148157458160870106311701356119649332259729.8457302366327375425299301153978578 0.8979519689027651984573961092085075 0.0879345341344024162471928305982803 1.0920435087366980144912194154872260 GT 1 -133907365464510123447913724534406327102771.4815147029312848997791340249253047 0.2870079523308675813478285155062686 0.0500435673595803204818787344928575 1.0513391558176754441678615702995147 GT 1 -43687441219930720892509076914911298.1231650029300425782233696107919716 1.9307362117261941347475449754250611 0.0458687421683035712998146044053313 1.0469540301723721380370090277050533 GT 1 -701903696320031540568126530870.9721259568692935742732264163408099 0.0254764079537805089607304216156676 0.0686940815726990041031683563583603 1.0711674644577513525706931043023071 GT 1 -12396324128041764518281613445928070580.2787025835248809470656022495806370 0.1737611633088978203277577033246158 0.0145970758729397543526151229635912 1.0147046614248198561873142060032656 GT 1 -61030002772250402600874839144.9954780257413871186338430441467352 0.2750255705701864529344228690671315 0.0297602495726486952136587439227520 1.0302120726360191089361837012881335 GT 1 -5109834507404871446946732.3820142188018581638226686412675992 0.5215230186468728176187924723410381 0.0756604437752929055427752678550235 1.0786757897548870301807089604519894 GT 1 -5.4903256494170214029702780014331018 0.2234535825887991246202297544344562 0.0069940230001891128887221924229065 1.0070185958213322557864813532777387 GT 1 -16850351637297835.6057010834412929713220064754234734 0.8895927595616791205489241638482496 0.0636606527306612776099366198915502 1.0657773177086672153785626795466649 GT 1 -164228789994240015453372689843616.8477401313458680482335899838431089 2.8532869132882876009825939134504756 0.0316763192416714343662996045499359 1.0321888666497236008199673722064006 GT 1 -1577098890989333516047377138882482523.7106008868935628031567056796895469 0.5989123052078959964407388314435406 0.0930349628534196467695049927879973 1.0976513774086845533390449965073141 GT 1 -61.8470266633810979131768872574075775 0.1303589608572092225422798205841807 0.0754068276036055728858380577199508 1.0784014518416119505748368534067799 GT 1 -3367566722009134715.7268986689912937963320372957509268 0.4592046260049231548687070688677810 0.0066409340664863290566811395091494 1.0066630831841381844083977822407998 GT 1 -1508296875652950582712.2934204960166205985514370165646900 2.9830810397094557290773604310068716 0.0623560071015727194134910005676444 1.0643849405066909376652080007946044 LT 1 -4725501709307136316295021.9029144173730589547967601208838241 0.2191548223964446210863678820869666 0.0960212453570906653195478004084039 1.1009494203673316497484634394948969 GT 1 -24201431705962.4270348229296819527400310883608254 1.9521093730931151745638492797601594 0.0763008977108280690721535947648850 1.0793689072481004355562662927409054 GT 1 -3341774861247096841881.5874485210969745592690456064653244 1.5052002523070894011156367835735891 0.0990546744545365373813410415059227 1.1043107051845432459110875418414885 GT 1 -21746.6413662440769585281101703870264858 4.3646648605130610677691214737589953 0.0355197698019841162666293399019522 1.0361659443083100130594919394021896 LT 1 -1786853257068778033298928004900709626036800.4726795895108149018797213655696607 1.1974726010887580929151257454662898 0.0822457998912241914909437387969733 1.0858256800874435771163275835340656 GT 1 -10961130901111049470445.2138650785000053504066774334663991 0.1972172947555839080212424641131236 0.0119844617189740162507727900133075 1.0120568543528502569574570602305126 GT 1 -1012692834565912501871224754781.0776125207253029075137886861493925 0.3643107758752839150426816326511146 0.0629510466910818191738031139790357 1.0650197533817227662132744842682477 GT 1 -26512506.5700390784126998711763938764906787 0.5418984338629778713722336792403105 0.0171002206117679922571158113181727 1.0172481178594391851310632303151492 GT 1 -8655694902182548934784889841641367.4313305098032550221781906432657429 0.9158108148693355174955075853736214 0.0457049240140205151959727400285320 1.0467823513899297385801236697324441 GT 1 -10802693808010629653808595545228775566586.0392554684915201709248687690832430 1.0483400596608619333878664147095079 0.0134564542125059180927962175680826 1.0135478127932330466823477853659653 GT 1 -32378352565134943129984527637871443.2252705843325033682370866500002809 1.1135007848485055577324690254492871 0.0422031773131000188720937592866685 1.0431196083824295726916121416153594 GT 1 -1.4131442732288868817163859492610536 0.1026589606577650864599184814043400 0.0817007860521978351848753506104797 1.0852320003493035319011732489365780 GT 1 -992795530661400.9972210389430520552380748203981347 0.1142114046250232338232110198412818 0.0234531329004641299152543015770941 1.0237325348355221525023880892826358 GT 1 -520710606185631584271991044087962377439.0484850625814965298656153149916854 0.1338585484038739412707389317383007 0.0352816167357232059900958733649223 1.0359190510482705548120873531980300 GT 1 -29587057373543376193787.3825306991292590978721015977232709 0.3865655092658028874612242638714920 0.0080487174384202613111985377721216 1.0080812832242037227285030281681063 GT 1 -425367591090177526411468946340.4024881078181801374965287250321776 0.3400584316090976270432202926347794 0.0320415042844187588456006150716013 1.0325660689516548972594943809232002 GT 1 -148904927794405879050445232.4082581925126792464546542195252545 1.3737070327400578357213897316128125 0.0525088079703636701704168108939657 1.0539376380797017269781839440241439 GT 1 -227134.7538528928767288324829113445941716 0.1729978363910570148947799160750552 0.0289011885703185857911551705447085 1.0293270533248273108871371525608869 GT 1 -1453154174247859334546690651886616.4712273265658845224995022456664418 0.5993087216568336788849769724905255 0.0502580940973994831871897216843221 1.0515650092959656956631754071268249 GT 1 -4868818042106448907648067748722999625016458.3422625097857728962428384750117652 0.4764436549912671092063802297730935 0.0395449802161381371703833407817273 1.0403481278712693952237174041833677 GT 1 -739568679.1849524109519357116886632653594391 1.6781864614688090323745462334526297 0.0535191382489052016446761202376581 1.0550045285571606722973788659741191 GT 1 -1621834.5756041112172921313340933024798874 1.4262962922819092863133124633654889 0.0978798661918572719832096394944329 1.1030075817479170570090442497910547 GT 1 -2694888033917.1663157000700566954514991487138940 0.0508663109964459191932985422907464 0.0589835952159768066391690357942994 1.0607947061969384269102112796293432 GT 1 -22.5095027555947861606883736038033247 0.2249185243329769506941699749844628 0.0239813788356441364037729815400077 1.0242736136892075268444664576674613 GT 1 -15903282372.6740786871032938097344453699003584 0.0104359116301275443694768534071292 0.0838713338900314125558197877256690 1.0875984589867620175220720396408806 GT 1 -10102866.5577646785233587657988121295995790 0.2070487189749029856822708573428640 0.0607071006415250687422960019851821 1.0626279215136207874528210844938658 GT 1 -247876323285215102786811136669684.8278458821959067542529887044918186 1.1273011864763273209190828291544921 0.0986622469096797001061101507285521 1.1038752269228757315461265122540414 GT 1 -171195865962998583758316.1960687521996834460785719485538775 0.8343347435860521820392013818115264 0.0362441770102736956016471047699405 1.0369173121101645133038215366857848 GT 1 -50745633372826234684.9817849083412507596383310893744588 0.3216441443531350048203127092351385 0.0642341803636426670107528822450706 1.0663900265041584171997304871884180 GT 1 -1336269913958463151982932256.0315701172568631699473992483778494 1.6494026228398785646959308443175267 0.0836252885973215907181320454735705 1.0873299243720838864444433803983947 GT 1 -62739250281087568.3655414138966625414343094022124908 0.4825323255737441097530417627938751 0.0961453913131327548382688839185461 1.1010867626232667609568459061116411 GT 1 -1417136475301486402265242158368.0866429333167612289014745510910624 1.7247182289507548878122557791640139 0.0631212613674451995911959404801370 1.0652014195981552240023981912155918 GT 1 -798640845703772641200094506895.6972670148908162863090416671717797 1.4381161179273212986441384682610790 0.0588104518376949104894307176432618 1.0606107269905192256933390188649706 GT 1 -6663607617000.1860055015396657706770919234735844 0.6142798990994987317557017176119829 0.0215675232044162964609834762309475 1.0218035013788169230387055202795981 GT 1 -109205435894277.0525482926190514741396359404039881 0.3755756121229639735659970242683031 0.0713968947627875190535841442262433 1.0740738594031856973617665103907893 GT 1 -555859617146831670691111391738974712090.4407107143982199999384440915037986 1.2354952057372215466530388419324905 0.0101323209271104118886530676324164 1.0101840022885930886830798283190820 GT 1 -10693724889213491861.4381504274302007885036334125172065 1.9046737408231023272899292909475918 0.0808720834918277299286966481487788 1.0843299753352787520674628460751436 GT 1 -5412214287281590434347796.7840717199787648795490381832406477 0.1837208399272757358591254966943898 0.0442504936847130975075871331170097 1.0452594229474308363866503069424379 GT 1 -14981815.3814355351752612625566165248533358 2.1385704319740574713969700900073768 0.0158301426665712515239237303894455 1.0159567775855811686067937394487813 GT 1 -816037.1714174993576662263642222355582470 0.8609444706827988233469397344258327 0.0679259112809050097173785527154485 1.0703429731222600716450627191594367 GT 1 -2264673027282485487422434.6915858405394953203989363151311836 1.7685726180446606464334387643327484 0.0745786441618458322142693084046923 1.0775061253623400526484945882399951 GT 1 -4422925973036139384341870034.3065479142057881020095492688450542 0.6291469473845978978747853089912694 0.0985029786365214990769554868028298 1.1036985404335430724721830278510999 GT 1 -2730005665280681460217889785426885700.5081618388764521864553619659792122 0.1630818511770960569109955003643290 0.0864645137667694435144836431958496 1.0904330574673145175361777558583469 GT 1 -1845206261768474.0097363110232321502257139806667070 3.1310941976878581420719964455322651 0.0602833312064903746656828567916060 1.0621768653301909282555066622202114 LT 1 -5475042715.8867760770748226535743179751038055 1.0050860760237446090309574396361806 0.0617446756308720481103744597623320 1.0637331661958683603782179099209132 GT 1 -7879060658096034286626740060.7589722621767263086339873093541114 0.3401071411190873417374076034022885 0.0726021103600454590875735870442209 1.0753725825935134898336609498615818 GT 1 -489960702015791794736.2872928829245683579990735233316677 0.9197412949229677551808701949660527 0.0073854819746403910665134231964850 1.0074128896760780653561989759887989 GT 1 -62.7457280407428499006687712937267360 0.1619448685066560942837572058528063 0.0501602446696008062292328218945237 1.0514619872149652842328931537495820 GT 1 -35631889.3334274558397243846862796683818292 0.8157165054109607469367999225855240 0.0296180349038645872833599863644353 1.0300655065454708243392142736349879 GT 1 -247452472533228908548297118107137192.9015609281587197926749416293208108 0.8788386149316121437405842160779516 0.0121732550453395519352593743672749 1.0122479559691502397111049108078992 GT 1 -1054041137552457732433993928184248159258.9822113165373652867132042617575908 0.4299714580459888676229199106199720 0.0171927974271752247838808221981580 1.0173423097367894102282446952118736 GT 1 -933226001188908180296609.6632406509863143516215318590137107 1.6779084663031503731209428455120071 0.0499383544935102047048130816626480 1.0512284064859845899455857654809917 GT 1 -7073886660455816791524548585728538825295.1375609950803983270184464783816828 3.5319462239480155524591867848102172 0.0508337003696150075867393841824404 1.0521712590221695623876671350875392 LT 1 -11709897376538282355273590499505155.5832140532215592030139403156573840 4.9646736796692554645886546880902293 0.0721224061746354900993145468296517 1.0748554581013554996826730006464582 LT 1 -229119806563771443844507.8912615495365939822203758278202075 9.4551443904125218540500638339448632 0.0875752304456592833152564401479360 1.0916496412482207421577472706662246 LT 1 -830943387999377.3500857738435757512016032618157664 0.0197057836217542768651478347265385 0.0390912653287757199096775556478029 1.0398758436463339559276384813369074 GT 1 -2665514956486909884518439726280.8801721457515625188222838675295403 1.4203090765244344588316156572657227 0.0202404767429114746088954733809836 1.0204481218607474511033933615826036 GT 1 -981268.8655663765583442642597748117021815 1.5912569647943339603717265761386658 0.0395787908971646931837846988549756 1.0403833312649306763266707656070712 GT 1 -13559849893919129383077172736869902022.5038724232365562441437891721514243 2.0986598203952707557842303363000749 0.0221125395236901744528611919533459 1.0223606866561230281192489879789702 GT 1 -665992613779770597631616.4967716804302159955916843481220904 0.2739674314433722914162216798300210 0.0218864237436358628477651537749888 1.0221294845485420848179149401543497 GT 1 -5917069488321306129592790022.8342545006785982405067037354536988 2.5055764092996670422393511567684541 0.0227147694462969734216455285679254 1.0229767242515900282365371151451805 GT 1 -2.1465041509685976238267429255568851 0.9441303166937243519713210802874969 0.0687725424364920957371497205482206 1.0712517162245662853660967440321843 GT 1 -95690714564047284696097753811801298.8498235972444770470288789264766161 1.6448483313820520203097098983470784 0.0625144058408558933238566765679784 1.0645538874858791833199646315320672 GT 1 -27798933982397.3970850149335705396909958683033237 0.2380311644121871763723708684917759 0.0863874391952226101993247788075298 1.0903486914831595995766021229875811 GT 1 -68361393.4366167264480689707080358487350076 0.0474914298628895646595476461622631 0.0392479866887182778645411665516130 1.0400389539772855133929950085896854 GT 1 -71287344.5367058413782055695744447685117557 0.9879855953119608627132550613729286 0.0840069465010028708991275362749977 1.0877464978531404705081399071581375 GT 1 -598045113182063904276392.3732828926051869808393234600844523 1.5623582199973446446487317960040673 0.0167900589187555148080131766037358 1.0169326098363047039042120753050577 GT 1 -3568127253902059325346175739967.1169282299475895525585886804811901 3.9542084329525285296156903037255969 0.0257900903895179296237244760914077 1.0261284856120742687603443213156159 LT 1 -48831329.1012276253332080141594385040878676 0.3170068378296625348837688434234377 0.0593120258210515449948591473251337 1.0611437839926661750681129330949597 GT 1 -237158337856442175196247085924799535.8579273565808979548348118501743010 0.0167240301343052499123663653182559 0.0222536959573996989935112561372163 1.0225050454174776977513807650109128 GT 1 -677384466557167643549232.0968253734113623787746946422769844 0.3175605674145813785793414559368049 0.0089870219984257486496241836812328 1.0090276488735457128999127872824032 GT 1 -37936399312115.1749029489918097401753287935796321 1.1021463175157350084813522501983141 0.0101605773554038607751893636438860 1.0102125483581312076789507104443612 GT 1 -142015826420854224864.7259986430255786861320386272409021 0.0714115563106921352691298418649876 0.0493809556650591989207378172204020 1.0506418809876097530344613744051892 GT 1 -147769312755291063237.2815228141823364298062305554044224 5.5488273076167000370854127634841926 0.0016398153698133094220083354580264 1.0016411613386650360505491577930081 GT 1 -4231452555241323.3718942000009278448515826727361598 1.7695366174484466260445448173924069 0.0219061338579455525618133217193816 1.0221496359025172961672384820785293 GT 1 -5771662.1729015917553584578312716961939182 0.7978113801047179332445169609860744 0.0336297259394247260620253638505513 1.0342082117318545369206301765239907 GT 1 -78374.7516171143918438866113887628382818 0.2204378124843728859595512983334219 0.0575696314808025546773924196807404 1.0592932419444281623465947384132325 GT 1 -270368487351157511476957664.5957508684548034762934878680657081 0.0476678838472670881790834162449412 0.0501883285721181254780948323043248 1.0514915546420456195782637865496552 GT 1 -2054156701122816981.4575809978545894567383343743490911 0.0572838819504864957607125235684381 0.0041005254047565549283928820254366 1.0041089556124668337380411611662106 GT 1 -4511529700824938510029660495.9784981477691486927610774214970246 2.4190778508357571028059357834823993 0.0405484821142391978731986041061928 1.0413934933302607013553620464201356 GT 1 -8338126277991318293930311408874060.9421671867672398637523749513984272 0.7506892267099985523087106657650513 0.0489668674970926632777995347204375 1.0502063773980943666049131790728012 GT 1 -14.7249949231423009495816329818315276 0.2719816456097177880254074306691386 0.0041811985814024773799781181263959 1.0041899642346817149785040203620797 GT 1 -503402978560131155413593.1813317983798761324256102476401865 1.2314216245194571197998335746815219 0.0007278837007179202442450181486475 1.0007281487366768461936701765018177 GT 1 -6659163540529237303.9881688628863391148255031911696825 0.7008444339338764864178940214666248 0.0070182922866167387587632506926315 1.0070430363419010817657811858209584 GT 1 -61279010490641.3332899566853360117038201514430208 1.0498475977667278155487584407777154 0.0808197413178643963179037597628745 1.0842730293077476937447260685925551 GT 1 -20826528391.5657614339768926229633560059977149 2.0569279675578935590815131129543524 0.0135521954007386840660886132691410 1.0136448646006716830432006756633565 GT 1 -32.6600105595502878806970654620093719 1.2384973377200572325126804700392448 0.0809681455348995770537601856471030 1.0844344951323891366328157796622579 GT 1 -2991141294290107689588003726755.9684892437400854015938955849528732 0.2681921683748329131352902261543631 0.0488429952929509816192112169327251 1.0500761357341369725451053230886762 GT 1 -12399226766966029544694900.9461500802837130643029468599698631 1.1251246149352865248829173819280788 0.0271690409265085551681892553209018 1.0275449435711491720431290240852212 GT 1 -39253964870586756383970365008416.5853334554229641005840140311172217 0.4454537149869124958854242679941831 0.0488687904928464208630367753232086 1.0501032559146693171323728938550626 GT 1 -20145847497049121928199143372994.3633696568143645088195254386786773 1.0271235868682094274540674014078807 0.0342591612905640796166485934625143 1.0348597636734033553816740803908758 GT 1 -5538218662538124605527744471969902.1896210201967794210056893162441056 0.1831745579855731792268415946807836 0.0273836422961159623229946246624734 1.0277655626222302675560119498583033 GT 1 -2401547.3032901477589940649786218955547080 0.3093753917166031181252080844135955 0.0669053033886901318207464764073665 1.0692485863813863752087120067805623 GT 1 -10038428.3964863551469508056524212674185867 1.6882954603148961016489505150363034 0.0656722676738305780955471879994938 1.0679280111596846879981575703344088 GT 1 -4162740782431161311886680.9216276038748292666229689514192645 0.6564389404106124226562554714800337 0.0791030901140227845133541468104567 1.0824071817974449817282190729112422 GT 1 -13488111600107335.9920653866213976895571346920000831 1.9374109088659853334004892329806960 0.0689326410154709218676153565984680 1.0714236531036797575584241785214337 GT 1 -47260670019294905855890956.1779298523744098309739144874859239 0.2539737575853524586668945390062826 0.0108826100575266127758555947523202 1.0109422588091821164068336851961270 GT 1 -108574602604042392561376146134081763762.3836747278585706150969086312000583 0.3290680807346207703402774527786482 0.0246982883511219901098833439925606 1.0250084080083961030007151104749472 GT 1 -27033397339674415242147446447027.5827596767031760095872225260383169 0.5736699434003573819628562740441884 0.0370135086150383306786542599373218 1.0377158949200303901062895453764794 GT 1 -482.6781503372068639737848624017988969 1.6867936754885899358226949693889864 0.0393168416171716535033331568677160 1.0401106242886207019596336885763846 GT 1 -4582652011292250344039909279349651040.3732366288296920808993809007274266 0.9104578022217302833924523510929562 0.0856756611920836109000713800686172 1.0895699140108475923689577014823291 GT 1 -1013206972524890958056.7514027891020450116500719514742953 0.7734525244468823972840167166842411 0.0647997654218685900404728960367033 1.0669946179922617251088520198442979 GT 1 -8097005635640339372035127603224.5688349004088506855293119899403139 2.1119793446138561589219940887695738 0.0782935402033853916904405285031890 1.0815284794396327962332547152335373 GT 1 -38670797385106646404.8437923148376456689808434481571687 0.3855339414173781177672975511878800 0.0076305107562205179543137215739072 1.0076597720508754201614295030187029 GT 1 -3531886240197034041.7834142446323814379649430481572443 2.1948153028526588047764358398139094 0.0843470589024295252464675241939494 1.0881178713678250513053705502061191 GT 1 -1219860275468061088914012884590704784228624.1507283508292546406543194533024310 0.0156459994320539451251881671705576 0.0310814431522603052212030369736434 1.0315747192844007798425819442264368 GT 1 -275469596302.9522523471874055083277344754431441 0.2318932945347472090988554182250721 0.0533268108975567359225128399137465 1.0548013466217831402750650166667620 GT 1 -38920929.6407343348460065929144499447030519 0.4873340773439172714602017426126849 0.0436383851280586058349999844734330 1.0446191792180981439463558706427301 GT 1 -146760.4070759374876769298083540182903755 0.6507116645207492527001360497575071 0.0490856654394389626265741232746072 1.0503312998205671718608979397781576 GT 1 -717333557042311760.7908467306660718067920022573183223 1.3125919614258635807606648212027540 0.0711998145461549690656671211528110 1.0738616489280994573221854712041170 GT 1 -1231988145.0676066430299742916309408918908462 0.8944583474553187242030598544682945 0.0467131001419270236622449241157351 1.0478393714651265555111518119994357 GT 1 -2269757158144561865255116946724156352981.1511664210726762256851038815557202 0.5129346045545255938850371401976374 0.0188771264216129735424651180455388 1.0190575738674740325754614743254527 GT 1 -303250567750941082241272899748171446533507.5930854186709514545744610299360406 1.0687700296768295442021889789758665 0.0282813600566284621112038545195276 1.0286889815036362936654444539699971 GT 1 -1458840720002097767241349718766844.5526524048391857692136029615229779 0.0664256376493804709467309307874122 0.0923715298297034313412421842756103 1.0969201579365531214017281959520737 GT 1 -9408352526519697367317826040662317690433.8731384850683830422678291276813973 0.9489241748478581411726758890465330 0.0472824738037203446325714078250398 1.0484368240952953812852584943199895 GT 1 -130555313808230.3708201867755751807026616662837514 0.3245899002733402642336144555888872 0.0033124954479881773737389313116369 1.0033179939068055925853336192902139 GT 1 -41009306014685278492.5628887477857742600565691851110943 3.0556945259186072157549963293698560 0.0679127494944180798745592625692426 1.0703288522559914656633252838627890 LT 1 -3.6142325393947731632915497478780900 0.2448055561324372309395271430027202 0.0997548254880783652305414531984632 1.1050881366320039943737482039736530 GT 1 -154067591.3145103681105555280204767399358389 0.1084752339346788648612721657242894 0.0168302447601249036645076740489573 1.0169734827576943690599904534397019 GT 1 -198123057854279619437.7953973195477236912277714897435666 1.6693105832174963347630793434171323 0.0213524537450615511798171683115569 1.0215837153121385919860992722447374 GT 1 -4466367.9073804463915394030011300248266102 0.5879551668728901693545322698801827 0.0010956036430049281832452459463654 1.0010962042554050425878116112246048 GT 1 -2970457100.3817574030825148112191641228913772 0.3858403145183098992614974906842051 0.0446932938872366869110597841484829 1.0457228318284131456088685695218503 GT 1 -443916229854400898912830674.7048781008540716817261309129297553 0.3387209461227978381208136121935982 0.0982520420762564235358709232146721 1.1034202237713399552221414520696890 GT 1 -233302730.2728248330451562767350189250397285 0.8004935389377953893082000501125360 0.0371921385163121889955114596352684 1.0379014078763022464573681405392888 GT 1 -26699552723483048151376511357766529251655.2113090934635916111953743211165029 0.2703829372457611028064059557441821 0.0519388294467551431807428605179121 1.0533362529087742699543258716128222 GT 1 -2844379063409708684.0280773743270450493838019939440471 2.5986022714537266821170649704402232 0.0974471691019271659461879120229919 1.1025280520971893909218854233259486 LT 1 -483219110666865692177116.0819356334048810847926781946120138 0.7525775534082860121683378671016316 0.0802831547857516795776450115832407 1.0836894332531286785338405136150890 GT 1 -7495261910611176123726545148.6997186864022316197918800073860461 1.6897422980339620220358431893148243 0.0275355245633870723089617669080107 1.0279217332707627244299870354602982 GT 1 -294267929319.3590315458196170587002007000583241 2.3363287103369689628952148805781510 0.0626321418424611015074096944692870 1.0646794823707641764663568727587589 GT 1 -839863505051035933250589.9844346362658372926840114595378821 0.5903385935414992225274940218178006 0.0586246810934087856774376836844312 1.0604133677938840989342191971599101 GT 1 -5969829244673400.7490334446615429669834995175518939 0.0290148385019916906399944303500393 0.0950515150167601833527547823280111 1.0998772595728208603738722432148318 GT 1 -4740120438281118811618.5537417358305776992019855133767195 0.6056023449207707548023455692130608 0.0471288488104538676721400252586562 1.0482755878375211755584708878216860 GT 1 -140137458734287.2042850542674115370939324206160466 2.2084000618552688421602723669112241 0.0204128236298071269681277095448154 1.0206240446694805168942799794486850 GT 1 -54380537816033.7133578711994844579894807350788978 0.8201684058592114834737171281785484 0.0569635058650802375785827378882498 1.0586502970604761697887122874142598 GT 1 -346247774720333718961805214969289.4089429635650466741983222050828828 0.9827281923123126652344321285497355 0.0017864407764599630018821233925998 1.0017880383647319377849623772686816 GT 1 -53206006949663255452153913310007832.8718915336841303629322527185137990 1.2971891237025878527552354177199830 0.0616582462901399526086366279181609 1.0636410533584321201392669766935232 GT 1 -6755001723883875447514986140376619351947.3249777783577585070034407490405857 0.3810960461196001030850913029746422 0.0298532444647522103438255570997909 1.0303079245623120941235936753503173 GT 1 -187.0394049419990549205472514521649382 1.3240645852256635642610836726227973 0.0505123775211988674543086612218523 1.0518327846454101782132838148396171 GT 1 -2776.4870368641830495833862731556646613 0.2912780002315367838461489236687939 0.0418303555996957318246001459169432 1.0427304348509360003354623347208190 GT 1 -2107640.7915930355634077621210492200625641 3.6833875076270853958829317829021196 0.0414046112418408741461269443518373 1.0422862026602488011753079198156523 LT 1 -190220201276431256386973043439167660368936.5119536058252936754151202679065442 0.2271596891368418944262026988174443 0.0628070548831469703456519267045436 1.0648660999943568260270330589438166 GT 1 -14264045523187506464475623648684344913657484.9880307813673098126701609936705160 0.4465449449095080149500050086336347 0.0577919178593260437850604164874140 1.0595291348070368269316477881672193 GT 1 -19808413279422465094190422.3858191518414459390841071415844789 1.3704539540854443271150112844718213 0.0740846663481834162837888379921702 1.0769724808575997787295379068397632 GT 1 -209479587305037688724616920655400146290358.6977224223309574861581686175701778 0.2805980873492603267201588419548759 0.0944176088826160866380455780288957 1.0991770161597818536379127107109197 GT 1 -1182789745.5212651961023547735527924832540629 0.1495865037102860251183226534873339 0.0477750095793486694947257882370972 1.0489539376378905063301139563611652 GT 1 -24408745008581037605122730601315892012318.2019208789656020066527875070728817 0.1715143598345031290339947174814894 0.0416808891730887655969530400521658 1.0425744554051893606214965847901557 GT 1 -1241136398347018051267321070472184.8773305286966981235890791482181485 0.7327715693672041584563328782643777 0.0950195929864158721146431111120172 1.0998419852253160775738256611754238 GT 1 -4679851433734554210153773648292634.3516029463209100926725736224004246 0.1503618349391643396243210035452663 0.0384359593251180711787097082076229 1.0391941112052390476757343704254699 GT 1 -473756478162963122115600481103895879334942.9803543171604433969497334632130878 0.0424047809139972566534386994077011 0.0419472175056306530074065918920132 1.0428524059795895568918887019037521 GT 1 -1.8728570903903090766472318806049358 0.1138908981563971130190687042049432 0.0800319297814311675069621598194238 1.0834163158254923863878053474673971 GT 1 -123306817.2546752214067693896803815608249943 0.9231070410096451436387926543376946 0.0094748049111341692697522607575674 1.0095199764291641132114579141865101 GT 1 -284399681168614913368797980970792769.7817014034249510543499533736354031 1.8516692556795149403966308298893566 0.0614913647218956889273439641412459 1.0634632218491512564804338170967552 GT 1 -117391978090383146.3237200810001602097119050698370627 2.1062629854003013204574026374277724 0.0736490425233547981448927143395676 1.0765021123852621334861571128529282 GT 1 -182278590038938681553202308.8947208085663612271797501528638902 0.3257853936025665184055903535660232 0.0324070805858366248996313601906878 1.0329438179516632475172376596462017 GT 1 -1636414113379233640574431984609500419.6500458588595171169928827582460973 0.2509718145308050081736619966145985 0.0534465381798316883229300571821145 1.0549278262298915661523895910157035 GT 1 -9518942386379774041.6291856286865292609456349778831078 1.5230205183729570122098537363123402 0.0642590578508570253093349298773055 1.0664166120209449975880700623770838 GT 1 -495541676930.6264205267998427846164332945491898 0.1549589980259784140082863936444024 0.0692449239683255111234419093743342 1.0717591125437529284747954352006042 GT 1 -21540915.4974384555363579339994635202674620 0.6422113930631991433138706549440883 0.0154518777751657744819872966297330 1.0155725022348322119840985161093539 GT 1 -2201459889386050.2424085017352608749926694623349551 0.1262594124692332294551819591715734 0.0052960673952216006141015569308377 1.0053101412729448988531679505532504 GT 1 -1465335479991319394597883642.7072647603520515625595444921779620 1.9620729565126788136064469292581681 0.0062536339856797049020160245989359 1.0062732698612172073642236867305297 GT 1 -47759442402.7003279748518057275689912524876051 0.0866814427228401723803422435475090 0.0766343448930629919889769152756328 1.0797299635505631520074978891057134 GT 1 -21219.5949206817897922204468792895196002 0.9732167663554592304918893864895140 0.0651713780118781939596626167421614 1.0673920584847935747384690188538686 GT 1 -1309439756168616980141671.8285790350544188792143703633699794 2.4432940499687190803760131026350082 0.0598095165239876596292421030886499 1.0616727822514455580643418781009273 GT 1 -65448576243319717520704730285841203170.4460090915802416471463445972033452 0.5214883343516312625461471081948588 0.0829204199305816442375283457050504 1.0865610274273984773962644414589292 GT 1 -981497527443658153816925868601.8691908098671770048793877149319633 1.2068613188782635172121494422266394 0.0758753311925887972091990532443275 1.0789082934899919815553154134745045 GT 1 -576040752366569451386909057844548.0063186019116038168317802659841082 0.0778206007827003770696904438133212 0.0275083542191675991469191966877000 1.0278937939831614871085685892446429 GT 1 -837541309744295991233361711677839403482602.1407688219691664040674058746146903 0.8194907174371686394310172002040930 0.0810164897632006314473451454615062 1.0844870999465170572592518599197753 GT 1 -45781860.2911040396205025314710391230308500 0.3154510380003889513000256457560980 0.0622146145060520024517271501811578 1.0642341562677132911704785602800591 GT 1 -21385822369785535894726657743783.2730430923086682974418150491381491 0.3269715632446018666610277632679637 0.0097139824582318253980874709101068 1.0097614709711325115339589838300844 GT 1 -131325.9985451512497189063101347074830910 0.1787337779431955027754438602008149 0.0522445811453582222135347177824829 1.0536588070028382634424665733547186 GT 1 -13725574998332.7698927806492537258292533431339268 0.7050339007435132445742760155063570 0.0993066977040868151334540279323612 1.1045904763298767575839066236219176 GT 1 -26592520989290450051.9254128445946007121552026283717943 4.2980940022252511447765612665669471 0.0336468176630494499806456331622317 1.0342258984045842479367767603633323 LT 1 -1605206978210258556825386254049.4053303359876909280975774288903021 0.8607965803178571716262237420175254 0.0037523588537228507350290345709754 1.0037594166132358933232698689316046 GT 1 -363984285115.8398061511723964035536431913502825 2.0078304658465476266311878672004876 0.0975644648820454305216178717945253 1.1026580205584734615593306998089104 GT 1 -95323161802724140792.3360266417219819619436261226360525 0.3771369844860139232329290988697637 0.0197098811631944050859709154244385 1.0199067114992107383335700827555745 GT 1 -27605495609058598830985043946707285889.7490501239306985369279205236899125 0.6326668726687176732253181610891210 0.0174004456414221329513875198451596 1.0175536127805865291831369119976262 GT 1 -19454045940125848954.3218537411434725406621820948977506 1.0953095673685212907826498461987684 0.0491826480305821969609142538063234 1.0504332937999642012581167588987988 GT 1 -5619869922010878278064697532866414834.3308669455839226063367035950871513 0.8340824347351713729902101326920209 0.0522041167715933632575339657400453 1.0536161129605018322917465135099565 GT 1 -7353592637668639957385264839000483676127852.4289168794185854251480237142488735 0.3701338142571353397567723852800309 0.0502955744626002407464768165806641 1.0516044738121094159008253696540105 GT 1 -1079830938639531926379978518099.9247359790777867976382054233106150 1.1367695831250703944738132489069603 0.0689873742083003778855785723801465 1.0714824402592184024741038196028842 GT 1 -3.0162370163144682518743117298504545 0.2422184731173650530469347111838937 0.0069654897756894936446718755012378 1.0069898620420511867051604833655578 GT 1 -4653.9920404163483123310376914009157645 0.1824685269269792971460551907538302 0.0214911846186173175993922310899818 1.0217254831100595817468082253081409 GT 1 -15271826037194113192460.2778679967594915997926500025242913 0.2864685492451170237320701456978096 0.0445420217976054551463983870796000 1.0455644951256375354950342309587366 GT 1 -8074424650506579.1182856827864788488255726129652352 0.1463209196942526409241887091553537 0.0427615599811361526849671229268358 1.0437027649380653830096847682432939 GT 1 -1956491686775.5164943055581152048191317144889534 1.3554472635193953047028269103530875 0.0246673995210777444901023298348286 1.0249767374591242272583382136769267 GT 1 -5106530150261932847921368829228105914.6658171277841554441866050154311495 2.2420078453367312663447618942295244 0.0494045577469144207375566880792704 1.0506667094138845719736369096950154 GT 1 -1070631749193348.8069952576540154438818253307769576 3.4736691282410623326008330952706242 0.0293207009971999267149640870084267 1.0297591443357975723153326846782072 GT 1 -444030915364273525706055832564432571276051.6252719930204144132883537091679571 0.0805173928612636082057636385018792 0.0553123555124310163343550642801967 1.0569009410608952946638224253435724 GT 1 -452164804315667947049939092968.7990298546745669118492559435056409 7.7008331392496571678607850079087933 0.0064161752240228242837893441353788 1.0064368473476950999159311746545689 LT 1 -8348185328.2758534063961400225500341287328175 1.1576874813209027511000793715517139 0.0336473449965525134013021782120695 1.0342264440991155886180528276728863 GT 1 -40962329212022337365685592149.6547719687413048203682651342725218 0.6356476503462953139675833331288789 0.0310885013718431380632484178482015 1.0315820039475351130354933941226683 GT 1 -105963762096396333716410903.7776113229420072105418206992143827 0.2374094045733123971712913957929765 0.0926917766389403758465505266298843 1.0972730592952638162570482681942140 GT 1 -1412636657196221340137882074154340227990342.8741168760303501029647847702433986 4.4765664702145336919090234270753592 0.0816243725185962934371993140341755 1.0851487917900942500466141822039792 LT 1 -1776577331614.3490524731011883788738712103830978 0.2017732656193914529247568292460753 0.0494456831388021383471438452933598 1.0507099731196468071362139706202127 GT 1 -115585792494571072314059086200084164255160.5281674886188801119894072905698206 1.5089830430750907815061529362685621 0.0126120453802548715620205785335523 1.0126922523205574443405524921889232 GT 1 -3.9057518268125582668084300513047790 1.0948367386375261441819893391453391 0.0135978200766651718683584021371967 1.0136911171553946029522514834257196 GT 1 -11955453337396230938590645049116110.5516839515403197461667932003510113 0.0127431329718481286548994730081058 0.0426889559563181915752405789591347 1.0436269204373542244610030477244474 GT 1 -23983827286534868982087.2040968481536049845893601150589919 0.3102767588307908170255486071668835 0.0403730655293328381512745975717125 1.0412106799750489722819862283385809 GT 1 -6093982333733664426367534203419848.3384379241381251782210132880106539 2.1406783038450386195843285626124263 0.0593012208118874051191960229773631 1.0611322977746996445054244255391415 GT 1 -2601012003589560334925726495550159986904557.7786663822373724659255559234074935 0.5684019252483166362983665910921381 0.0810907098224561329377797802642852 1.0845678664191634652942967188820640 GT 1 -227729699437539802555513713251637528.7174489896847019501663206568328784 3.3443738731753298157039474060560048 0.0454164606073496266129432544575740 1.0464801180194652902406332328014474 LT 1 -3997827290636694572688.1877780168742089409095329589228608 2.2916952588951453318607927329710259 0.0850622937756331492879839183428210 1.0888992966533142234175469943628656 GT 1 -1028477469824873782703479079377827.5288446603878067181336278650848281 0.1932243084339613220736166685687566 0.0281618870433996363907249185487373 1.0285660388489378437409729826564558 GT 1 -445.4062382046841472730713972641272627 0.8676139438744612161212632122102545 0.0493905214626512127349981356558616 1.0506519437417468969069921288511658 GT 1 -368875.9327270963366477170412053903402862 2.7606635963103017498285422871077161 0.0983495755493437633444043581801378 1.1035283900801663161614493978923973 LT 1 -63628092505401006067498516574040645725.6046626179926416704824847412464813 0.5928400657481661287012433638446491 0.0560000302989139404204560029263859 1.0576291449329440191313793420787877 GT 1 -726392940876064887257696507177794648702416.1210209280281072235644518149888677 3.9441909027242459742202798131154342 0.0247707974959302160817100958538241 1.0250827561197902920218723210832640 LT 1 -37319206275878455817409532.2668160793948238633754008348901489 1.3508573957147457627241234907510534 0.0951229988948539746974686188096960 1.0999562548999177995823346691880586 GT 1 -592119861829227365406915269216272.9257262225184387892696078029305447 3.2075450083902404728951207692934329 0.0086043887252515429089563900792567 1.0086416202011563404215175680897611 GT 1 -1462887666239459095500526377709762.7650056996412040362896514998033692 4.5083682218620539435001151021284998 0.0548332122242021095638392823929406 1.0563938720609602387541519446037298 LT 1 -66302464602000802592844427957229404181248.4914492610848994027275204065621422 0.2471201797549115414857182536415294 0.0434557240420332868855542719410454 1.0444282016196118465435690268414673 GT 1 -5539725090053817784367610.3281329954618791315416703156305614 0.7092651135840510596528471714059968 0.0689431576912016266353604499730615 1.0714349484573661682569505277753951 GT 1 -137476893531805141399576237854063784856.6780143672366982664801527325944031 0.6884895751954047393659142105746337 0.0983416809562145751736749673379518 1.1035196344046252099762167624698987 GT 1 -9091779567519451017181.4303980798058172845578833219276057 0.9376114070396483318005405016558211 0.0877437018449412927320493911378896 1.0918342997101756533057129667463309 GT 1 -6994.1520880376100481185199436468867409 0.2351346782728552901482014114697446 0.0684413026311386918512242527417995 1.0708960771105782657886731425285553 GT 1 -252623399453732590429072911722830741.6261418712711716791826906241216120 0.8374442051776881016891168450382473 0.0128442747302976765592706433512424 1.0129274756316229946453898027548603 GT 1 -9.7721528045994031985096161578379710 0.1104453726980279653745036222426271 0.0467813795473072927209668261612306 1.0479109992728428760607264399962495 GT 1 -79631566992200915149939.2645544203774938196006685487223520 0.0211361976320690689181332613429273 0.0372774368974631227139226088869480 1.0379900051585031330546930224313642 GT 1 -54078122432991.2436242711935178293769823512325366 1.5303216066245490631965645146585579 0.0426259893819563005967583883999295 1.0435611481849085449187114365674404 GT 1 -44367834755719301072095675471202975.5145726940922534060979549346280684 0.2389055372424207831112969780752821 0.0780577236243526739127738649532646 1.0812726643532857869286198858037805 GT 1 -36238189175.6589899843847749941571831446283402 0.0976378189696249194215688619076762 0.0273965526618106777827169735303707 1.0277788365624414878346289009655210 GT 1 -8240.8111281026165602416198335949961405 0.1019801233032524005027408868442914 0.0732481874714182454687992187213698 1.0760694811629929539699308650889193 GT 1 -110.7908584141094387229992105577862921 1.8844684104632917534107894949112149 0.0313620617161326820635338489468991 1.0318643816158368572896126659811884 GT 1 -5673674.8858865902498107554055986970142111 0.7029903414269813714374066713660018 0.0562534035344170825777726668183648 1.0578975848194899735816937002535102 GT 1 -123344283942619669494107184314072.8675731712432747918229736305035787 0.5767450730852681652194619638252536 0.0066006404244247540441790033110131 1.0066225209884029130739686527190099 GT 1 -483107295828141063588117548160316.9762868339684304281394115195173536 0.6680273413338076543941577810965688 0.0334338561936222915562203620489093 1.0340055462487456822126581258122748 GT 1 -3720718013222426409437320520694751610.4684913217047888529793592252209604 0.9514745575374344547030750145699008 0.0992356282173294132055770366175734 1.1045115741299340102111719896569453 GT 1 -8080901365439925710070401775529477582.3823202902256611112304906191501374 3.3013169453051600419694345650566775 0.0296382394108466187068137558212079 1.0300863279519402715354369542121428 GT 1 -173454538959864126277723901800051.5789803211517777297526080331765543 0.5642237437062740192406225851952933 0.0561477471233805123768461656966968 1.0577856368691256964639172446823140 GT 1 -191307869596.5414413432229980814316121919064061 1.8044964328238730227359492725411380 0.0731017314998125984693601585186907 1.0759114621566990422252474664455461 GT 1 -9681938419830056768623.4767690603958057418373923486732464 2.7691845911641194842824156425535370 0.0509539750883505928884748784632511 1.0522979832219247829578593681906712 GT 1 -686687225219342905138614180870307687553.7126083199884714809287914879059645 0.8202343039626245399842881444662355 0.0659810495311261177922333598333554 1.0682585513778897803968664128838717 GT 1 -11387182377162625231218.6020727294733717342471441279638107 0.3373859606224517921005879735305089 0.0888632069354845374629326968568439 1.0930622359534382994287554631347682 GT 1 -541776288449010304666.2087645036572349764090177593276380 1.1311650147129298210157182017909937 0.0217169738385991581192360649132852 1.0219562580102716503568311192917619 GT 1 -173865.8285882734455318150914039041931437 0.0377638189556965718335780033141336 0.0949398409729023663992638351107876 1.0997538634284222476958874546237928 GT 1 -240339.5503534935289133904645064769900311 1.6849901824518611379346326825029256 0.0410919373194721704021584522275990 1.0419600765978363516912327342159113 GT 1 -154215969577868082527.6201258802253164918961850183873626 1.0378244216260531471515635902680409 0.0283048567289031948054679352899371 1.0287131623265560666729308598761060 GT 1 -1148602944019037.8824307447883825773067550655536422 0.2470493365397416182624795144916490 0.0929082733474101281024546776396540 1.0975117020592206687991528210793617 GT 1 -9763790672260169589027.6339553235538206245826890475027223 1.6442477376981618038470814056317773 0.0506613457490132300942718893496586 1.0519896902348741550552332485166024 GT 1 -5546651008949604207997.8889930916667122680840364397434014 1.4678919217301281985254220984781445 0.0158716544737081026910560755209396 1.0159989579900368490022109410926110 GT 1 -73064804210.9722912621705879953524532751377648 1.8367696857548023605560782825156291 0.0679476175734083623288607889171760 1.0703662615555722095540122716900976 GT 1 -148863876115199069714769057.7936888954213250185609019032323129 0.4641068158088847556788238550817786 0.0097091704145696003272276091270952 1.0097566117366431107845698287058631 GT 1 -1938463126565447.4112530947457898159073057112922284 1.5608260689402686930538005191333989 0.0365654962717221153421251618113288 1.0372507708868833057397345204031746 GT 1 -91642305.6869694806141328069726983190450279 0.4458308745771471930202703511054015 0.0958531927300012385931814406318499 1.1007635343524295238361871579466815 GT 1 -3005356847787134.6461131182469714812701208415621157 0.8050934594791487613910394971381344 0.0886531931300687423141106466623875 1.0928317660536236214340410300766482 GT 1 -10242810252821063698756.7757126732814761914706957679585255 2.5276363915281676993278462869214220 0.0754307011360497074835236751420888 1.0815026913114068416455930056926713 GT 2 -123210711.5047992649823176939079229593222703 0.3675688098513059020023698967216127 0.0667323930867301347742196841794431 1.0690632951309917773982115664545676 GT 1 -3483066224143957796954405535107899229.3417374226408266004952753301294931 0.3489116042082411569226314970103307 0.0223684760597178441932869490624467 1.0226224448282794253120869131014476 GT 1 -58575787544163225875.4629944525044829691758430522279661 0.4177188823902490366829133678600137 0.0434033263698719766513176237286123 1.0443734250259837679528278529557983 GT 1 -9762588963327030097633369.8497571443835524490886023919924573 0.9696465213022434169351288387482927 0.0326688555197177200292666400881233 1.0332143969788849446550101832160406 GT 1 -16379951647739612826033414433379191.8306252243423126875272601832682225 0.0781743437999746300615333400318886 0.0193654793194633328244992214531690 1.0195554467536598168236742987182324 GT 1 -8370504311258405351419290817336616.7618384695472035669570418664581911 4.0918022637676607455576051683569993 0.0081489688431378141754968606963124 1.0081823531787144437369742749908226 GT 1 -82957989927679757190204128871735.1598597924911042368522541471340358 0.4150681785194568583881129440349433 0.0249306242456558864587889686050031 1.0252466558958196428510917395098071 GT 1 -8444188424615731097603947024.2229961146334325018855457490540306 0.6368093889495208907712145565881304 0.0865990410235495358393893959050258 1.0905803283342086266053615851402180 GT 1 -5376308873844966667286313583646605.2485642063768677674509542039381767 1.6616998001619870994066818540993651 0.0796987993085046680271987809853841 1.0830542704641626666411841289919301 GT 1 -3925075703742745630093343222135113178864.5107047745931738223907151096622574 1.1603369616464876290719676695566783 0.0455541359324055761721374807557337 1.0466243539595142878347700195497855 GT 1 -338374.8224611889170726351615172894024935 0.4963798830502584108966281861137947 0.0458644021451093783237714262759683 1.0469494815179936717344405854532237 GT 1 -1395510091711012883377185.4530767714514339102162428987425658 0.5044882632604997667059263903349760 0.0544484028528674600367507534842223 1.0559868210905814783853055009279162 GT 1 -154034746297063616577920326995210657328652.0657386412645782588527538910932594 0.5230177309271877544017025293897233 0.0009349571001120874269310792105772 1.0009353944451220769324566441635486 GT 1 -912525104248136614.7086375618195965205821405506131586 1.6335860911478117742635893409395518 0.0585366818742718098181780424939813 1.0603198927424694403059332074775580 GT 1 -2212653955528916552485.8995501891195330146740966257251290 0.6502650920110217781523827848798904 0.0124003356719214460739796625926938 1.0124778613976845977988849342316914 GT 1 -155017352144165610.0275309605817980901747455510669845 0.4080895060875625456909651659330962 0.0295019360674450112003704326783474 1.0299458712925735595100663880238950 GT 1 -230799619350585883254.1747613283051221565048926465596007 0.1268927247308867108570747328217450 0.0385103321010578982120000839956137 1.0392714598259721245994530193109415 GT 1 -876188653131468753.0980038148000822325287916556656934 0.2499827855901661852596420606627595 0.0108326672692850558874165731350230 1.0108917678078820800689140814059006 GT 1 -5293141527373826537713076794446.7107907015583926094547684020754564 0.3626513899499285668712152031576554 0.0961539158482536944748054255396110 1.1010961939800779561070555609765325 GT 1 -183365985660887974508.5354625787547707095281421741492935 0.8906639905740080379743036898656454 0.0593931093057583977814954605366806 1.0612299836483086998099189260312234 GT 1 -1495589933.3578096154806175641456626370351265 2.1025298759655473204879781657171344 0.0024524364802227571479273447916833 1.0024554486283098743659834275185401 GT 1 -10182473.7776304406368366622245489723534572 0.1408776744229264607354745991008680 0.0046957741936145484130297745413210 1.0047068339776680712213842912879599 GT 1 -283874315240827290370127.5510075668344451640049239440423515 0.9703872585058442418919143525299665 0.0383656406675262372357459748788341 1.0391209844205839638302140879297783 GT 1 -161913883816636890692.5102654673430806237515195559364549 0.8195011724291285383394269605612674 0.0379302753177903540771664735231779 1.0386683520632618441119422017744029 GT 1 -4741212301456.7824661620748189591281789371427490 1.0576519676472705927155408518562763 0.0925877405576439563267577641612533 1.0971584013273880385252637909748303 GT 1 -59212048092579988749508942873432051570.6177837494495712798057286958515336 0.4852894515656238123959509797349479 0.0038053930710405247868880637893655 1.0038126520004913400059023108448315 GT 1 -291855173361.6698517727337842018203733210417399 0.3997701369930550432197080172897672 0.0179784118326067189533191477270126 1.0181419869921304831571244798392700 GT 1 -16164504500245336.4254719515711128757656948439582855 0.2804906769209513051848827332507170 0.0572320328207246944839300080920850 1.0589350847603336709767560676606245 GT 1 -7623551022438219575194362.2709977327655553004331803454800171 0.8350494885042732480628056972309992 0.0143765048434686256281738071960231 1.0144808480570903212416125230132326 GT 1 -3723.1783895934236062021591333463787126 0.1353710226061552755395708349370091 0.0115574826583486809601718706635007 1.0116247894617658972807537939462269 GT 1 -189350383759858101450807789.4874955586488822736227984782863684 0.2462229933545517179142698736767804 0.0282225106811491867263045561061320 1.0286284211818417743122926850751794 GT 1 -19601509015880.8886395731835627436729958692550477 0.9326945540669214321288127849185935 0.0346284218688481288417896454528292 1.0352421966996366999513199998014860 GT 1 -105117661.1732909611419382935959463724158309 0.5060116012386547234483174782222481 0.0754300868895432094868016256803372 1.0784266083960783057441017961778808 GT 1 -27.8212690109215184760578179833727435 2.1984115399708109737592584815069600 0.0739471131628630726892062329233497 1.0768239327518045609210163216924700 GT 1 -346387098768235.0953054163971789134429440222623683 3.5421314810905145851887843275645659 0.0806034089878558674921685055276390 1.0840377034566223050704414009651941 LT 1 -44928017850866.4302324333571291123467420629363091 0.0118404417737582098298860165313679 0.0187881057372264143102956428401706 1.0189668445119058579264430252430829 GT 1 -153134731009542528576.2528599715138417372158545832087796 0.2358248878944634782862570004195134 0.0285246489178827483448736105178478 1.0289393825069834605147976182922851 GT 1 -10677054259936515890600905603.0445926721596933100944868697965644 1.5695698608225009361304254088089652 0.0376013741337545551631552648173780 1.0383265421424654822922294016031005 GT 1 -17180694165251566447487022212240351648.5705656040846082235719530871658715 1.2048766225642678992630798704100101 0.0471097935372620983403251532244289 1.0482555902936357452985967026746744 GT 1 -73463506.1787569752419705056518706403723398 0.4953543154050105944529249415579044 0.0539314785958825183344196112078045 1.0554402797794769340271221979772799 GT 1 -42086571304967599277.7143829623114774231850618599525041 1.2398193916710239638324427679263910 0.0042569529910523994187221788800558 1.0042660396121511820454349684597880 GT 1 -220650775299495.2361758066063351356843161260647162 1.4961711578841241515848382511517069 0.0285340495724464077913608539133054 1.0289490592322210458882478685984490 GT 1 -22471680769.3078773842817156383959730576302826 1.8997611542932975426799156209770825 0.0352864020659172659760661641727365 1.0359240113995456463090350001051158 GT 1 -41091938002047479.8226154107260488756473737847613784 0.5384125439711427425565574243223505 0.0520477397377555683734787111285716 1.0534511363683005742011187506386081 GT 1 -76933348195210932561395892045488322192657.1908575493026403045790184094386233 0.0329498946495046719190915463711069 0.0868722149195839010710829055173779 1.0908794464279807512856038736098858 GT 1 -126366749167063281367844709844222520840541.9965624918352579500084999789933127 0.6314624419176489015526702390020977 0.0829286028236288240784883540889088 1.0865699502403498100990383665791347 GT 1 -1656.0800854516855440360763755100988664 0.4737270037573937075675169062192323 0.0207769473057672557050352000689986 1.0209958251255466077941225250491256 GT 1 -4384127515891597961101362188708879078.9002149747261964427777351643044031 0.3312349452013274858718980111709402 0.0963975456989307301336030151628053 1.1013657782553360290937819417278848 GT 1 -2286287906552180750519.6247832950098110131485259708147158 0.8539797639043583913727187145131042 0.0854626954286927219377370967408423 1.0893370196690317848339353972623201 GT 1 -7835886864194392877079270.4765363594348855969207000160141517 3.8014368299486354959651672349212960 0.0314860896719693342754074664413888 1.0319924334834227706064082369990329 LT 1 -263541416862564027335165581074.7932400967700850433922037064212525 6.8873118924986532464572819980164121 0.0535618154432748570059822730257548 1.0550496199671289213129197453748963 LT 1 -16800176353470400275157180699646567.4287508543387448200161660370008488 2.7327068633905840327572898544271490 0.0496451258426455145448003092783055 1.0509198123960494221281714491702773 GT 1 -536879388755898707.3840255872616637888958419106741854 0.6122666429506850262856069969694633 0.0478714811217323171539900541465857 1.0490552544805828985692219880251748 GT 1 -3.7988547302921135396156034246433043 1.7312176616474726255084646701425262 0.0368337330544043124891577936629084 1.0375292268996685404071370971013364 GT 1 -92237065722279332746536.9513795914431831648134191820727379 2.7221809686013706475174645016406139 0.0531148546122819216917121233452527 1.0545774757409136351949366326205770 GT 1 -5254786081123565177.6676372071911102221214010580347184 1.6599616314425812463849182139259026 0.0639172165190685420024864095612581 1.0660513625255912006569243403286733 GT 1 -64898838295200642159867.5158057706529409139418136719800338 1.3873651174196377525555984534582010 0.0256582407309687215778276131743051 1.0259931546779694975735460731504705 GT 1 -81691041.9649491203307569706290783417617643 2.9144289712308651286741736724379421 0.0949258676785761476822254729816164 1.0997384244696739590359003493738733 LT 1 -362568560014116657827699986191.3592873651331348661810222270827540 0.3519966897135039708245128636758911 0.0107454624660034669085728753809145 1.0108036118845689225914715473836239 GT 1 -4486178048225608427556273599.7335551910050377823575927874059800 1.3507846349042234736224908625433380 0.0817190207284190266790083472679284 1.0852518575559630752453831751096663 GT 1 -9479715.2628777220447795580610669603693642 1.6369979583230766966056683586849682 0.0465640358402658088957910610493974 1.0476830149176933376793446286337282 GT 1 -58115784680530112063846.3291199557973822498443547851234774 0.1401135784992590501008819840536774 0.0814968501371293106468632666192416 1.0850099449775068438580142329789022 GT 1 -14.1397202706520846314642499573253584 1.0288002640027078004776672341789169 0.0802913214051602856180820856084919 1.0836983127856815902045189334893527 GT 1 -2.4746994679147223120435609440472522 0.0215370184307966237269855098435641 0.0606015459440363046249427316995071 1.0625155510623404384121250423825817 GT 1 -66080741044297815201677890.5404973317293640065400646731329608 0.7124242236265583988737749958602918 0.0194048371891670810317872277397892 1.0195955826643492440772128991516953 GT 1 -23677447177114148238013682.6506696482071205362743715254931467 1.0681886483182538370838947965378204 0.0836987041759014206533419681167602 1.0874100428200033243200113548924241 GT 1 -92914586252292361570921160934587417.7724438292633584760429194093097791 0.6334667893533048848817946338128468 0.0997112621691666640261765925274335 1.1050397472974609760525869968216864 GT 1 -3645373733939598168327028442308.5484534518072008708413972905080754 2.6716614945959880714931975750362750 0.0450922267730384297229457089373796 1.0461405157020475336802287398895921 GT 1 -107352552995422662660459757899830.9659928490763462606142437570985714 0.7446727467977987753866933926424547 0.0678790454762528871782936659148242 1.0702926931852632744268272163760030 GT 1 -440792113415.4069001334926537762366672396855704 1.3483099222902369600218898445469259 0.0433081196789523449320086540347009 1.0442739035075995182805347809341301 GT 1 -13470755734521427164756872198194586934.2687457135457633957023684051224255 0.8467319354869404607993068549916287 0.0746769294045834416639233917692402 1.0776123369401529903141485972193917 GT 1 -15108804904374170415389918009345.9620845046260843923411584779652123 0.5855701898533859207353020253812841 0.0630899233791358268021001108011417 1.0651679708038650773706062147767899 GT 1 -5073286600.9346908261467880108079737245888258 5.0938872492939591064443522508753192 0.0535610463465342009501300536218152 1.0550488073451946912685709145589846 LT 1 -374832.4446805618787453984054040898423411 0.8143933392848678448436887883363149 0.0868463450456202433887524307536767 1.0908511157737910059120335841491300 GT 1 -14279929339198542.2877390369851121743982924015540177 1.4975155136130189085611843410147487 0.0384586257794441708912173334633180 1.0392176839684912188749018983105885 GT 1 -144177232377708644.0143765564177723411358434256629421 0.2840002471443545495455048865963370 0.0857731545715181402497227198429622 1.0896765485752692878492774800860479 GT 1 -1905821831760989144.1695136652738432986400748755695094 3.0099039512383661035107353293691768 0.0709362884845814329471469164846112 1.0735779617712837476317405861286306 LT 1 -3073050465003896562509466713852180962837.8418184382754739798768980382289773 1.1075307801461925972681293150642656 0.0815204730427874927885407393905652 1.0850356642245716848256890087064367 GT 1 -25011430312.0636928651501575219069284368644107 2.3539635047358748702088496492919328 0.0714133300358797388357686926624367 1.0740915584809128156035591374995997 GT 1 -599267855649102048065098106096823.5885281333826732319710332878105202 0.0514704005847733567261769271343753 0.0967938749928859640144745562719804 1.1018044847180467146942200901816459 GT 1 -6578017454845581391930347565585175410.1480501528971773807186284243752918 0.2144276808426534971073149377679626 0.0709386516254175123399823565174953 1.0735805053469419119559848821270257 GT 1 -2583263473024396.3457069415170417543295088197862934 0.5313461378032013532079574344614056 0.0540264019159704279907411780724332 1.0555406193218051249607938679198397 GT 1 -12723766677971.6685165676201550236534517071781407 1.1599907814922805118498578137192842 0.0337249379478121533115273234253001 1.0343067419760595710654234425357186 GT 1 -72216.9605792187060059492352876645730922 0.3193034231158531616072121543841959 0.0074542398157001184812323160273602 1.0074821615044961037532653448912595 GT 1 -2753370811.9980219633861226495084050776429100 0.1607525039712286681920319946336098 0.0257911478951260522100256792569590 1.0261295711134345530141205057455097 GT 1 -36098865690878571341.5118893641936332123793403318612327 1.0147457538250754819006436506094524 0.0054979995934784726580402396441028 1.0055131692205288133755373257923298 GT 1 -1776008377960177336984375776654.2530042874703146753588041423159226 2.7529785805153855556196309707838815 0.0311988059995358745261892648436957 1.0316958542910163731299473614298998 GT 1 -68699485409767248217.1313419922252166677810454976204113 1.0650804246412867583421652560528764 0.0420816268047864025926497243861848 1.0429927100744368134640516626092367 GT 1 -369991827.6335801171796040999531925970797533 1.7236240446722097575091430833959063 0.0004608894696050741275473691233376 1.0004609957118018644486881021591026 GT 1 -1360226372356820045892729905649302.6924928623383016751040425572555371 0.1186489909952127627727057341086531 0.0334136132662708029653382232947390 1.0339846033308616259841597865707407 GT 1 -15395.4194238230764550464688540931332403 1.8562480679159070080660802003450367 0.0206277216441338523071858517825540 1.0208434448359008188493427912618352 GT 1 -75374609976069854515832890115888796933179.7820437323081590705528783562036895 1.2430541589185420067490314657409600 0.0141551485040605054796335764948750 1.0142562881845322071861914954874376 GT 1 -4655629.4717516334051450378260156669036320 0.4692460115963164329413315962861997 0.0483030621338601588994743968732531 1.0495086374501106828018659235624374 GT 1 -10659722301019669261896836677160.7536516180533383829999774871132500 0.4821276273022294313399605515960098 0.0882229364878268800697091913443467 1.0923597666933831984592514706739708 GT 1 -16175926499932802231387418.9142476371485240814759275667622068 0.5128436871866798069165686375022092 0.0487609206744840961730855430488733 1.0499898502132544534515444002774179 GT 1 -10029590860675474687343573720776649292602485.7439256761128883700530017820120546 0.6012078278490079256341336197886497 0.0283694828008572890789848847622767 1.0287796731263592042082802238347521 GT 1 -28561.8187816846875460893501580745041259 0.2391551447108484120142181512880772 0.0550973757548600011417365206104331 1.0566733999245380005189620634930398 GT 1 -11785474506426953240027703751400276376734048.3627870626286742064892880578116862 1.0908877765584644899708114638958879 0.0597411096825683364738339052908824 1.0616000264065897074487579056438472 GT 1 -65783735067192757054043006091359930.8823793016623229089739061970727981 0.7533147163537035379814368982475924 0.0118670816287093712366173373949621 1.0119380575185258380087594626047107 GT 1 -272446372.4260779532085468564305803659654399 3.4313590138540634435269251874993635 0.0678765493794090210953020554070144 1.0702900153208834971242997279578984 LT 1 -79159787352129435042348460751627448.4092973311230983905149605178479895 0.3903377260411924424208718972986593 0.0421634867563088496605523430801869 1.0430781698085100312486412954500721 GT 1 -136510812749216876091694193667066.0920088801177536868780004209732922 0.0451430977414881782439729094094190 0.0484769766021158762302677062355629 1.0496913955887173015761285838984685 GT 1 -107430509727103006227792617747237.0804659087903545753804404287230906 0.0095091995201744193071732404093132 0.0456848547191961549432011660889956 1.0467613211192107863060483722360611 GT 1 -2366595976494446327203744199236390629239.8842753070939783399977036316408020 1.3290796684576823181846107665885614 0.0380470186015617476260465961326820 1.0387897053960948815949898470163157 GT 1 -914103899685564012186055705155513797.5839821806564373913606432606044526 0.1142592058645043363507174896218554 0.0186262148176616797606108853457761 1.0188018673375307805585617551660389 GT 1 -3118278917254774106338165107463719911.1145703533773946309630425255893810 0.5743645809998647320523188205432892 0.0020973505630809215657947011464308 1.0020995530829495334434791087414304 GT 1 -557224863391751346171107304204557.4556384087047292931009329135288787 1.5956356874345756962529202759169597 0.0284527978337803870609016823360639 1.0288654244522866770615415418381769 GT 1 -9447170313751025749783.3581729264508444802711865079556620 0.2470275252156737698437743355168471 0.0511727540627459217356039525496437 1.0525285349439231163795839244805580 GT 1 -1096241.7246395539110512802430275957957993 1.3747294946097075007413884339532452 0.0122350407531130575347234736070182 1.0123105050349944101371948805605451 GT 1 -60171.9517677903316513160927285383150357 2.1437407515222367338708518354869003 0.0043794402975756672101630663656330 1.0043890581370101567146756649402602 GT 1 -95496942266324218.2792994879112203386717856161085369 0.2071838457328846070832778820046916 0.0234073588546264744259648363010551 1.0236856625607534458497913478154471 GT 1 -1391556515647793201807363.1309876061639218032522140357172097 0.6758398141200848915902309819403870 0.0842931735792624082207556606588834 1.0880590240303019736259689623533086 GT 1 -2419851503299.9278448618098108889107549971095314 0.4001171821675200629495226963273003 0.0898187471527221183552487814969767 1.0941115203516828132348293297409570 GT 1 -2025833968691729693888516863922657.1315702444846566926035552243492377 0.2931322670575089788444741828329428 0.0756691291590681211950070447142045 1.0786851861120182098124704574890379 GT 1 -1.3088671074557456162726515884402996 4.2427615086969623042136416678340665 0.0915229804332824540504842442185849 1.0959856863841406169233059463639049 LT 1 -36303129865142345027037293764141001671.2101906804301693081412277284508546 0.1513338178045820424830328621068718 0.0738803939205371179135476436683670 1.0767518884442576425814423261057191 GT 1 -387610880649216854455188974457915181969136.2774370294654290933227464767891490 0.3439253366984062290432221144155245 0.0666283154242114080633840148709809 1.0689517817142313766350190382883486 GT 1 -110250706017822319.8510826905998700731295852401571396 0.5577294955511722931697211876209323 0.0202184871082450600508599877781875 1.0204256782025012786975135969353733 GT 1 -4446167791294084712174926830639588164679.1726938596469916372865533389144723 0.2439576700990663142076670203561665 0.0068860392339440941106908243123684 1.0069098574070017625150440094454274 GT 1 -1438030748310931242892821634884132900.4122000022950009497935661686191942 0.0120860139427930708945359149432740 0.0160940765566941984853196379607109 1.0162249927572561647411816788699528 GT 1 -201672176689913815934.3101511710957978650349788692276783 1.0569466392816021241609975503878219 0.0671120786080086462123360704836960 1.0694702124760454372213832737180990 GT 1 -59213025540839956819862.1226004952362887035683462284536327 0.6333439790277823038390639940854247 0.0190643448018698087576037151767297 1.0192484125994274345226803084461198 GT 1 -47987749174830372.1528972528908566921045840865337166 0.1603140557159516100054148678832099 0.0648584094381482279715745839730587 1.0670573274023926425271388079312779 GT 1 -16409601189540950929731432488144909.7532189879168299265517292835540154 0.7845670001816865976478111267076780 0.0218295113568195150999952062639642 1.0220713003739086057800798477948084 GT 1 -386730378047852844546160313593974151.7321466195669241425139996463364395 0.1249088470456888486525832648032807 0.0274308945355259249585213341721953 1.0278141464105774122750221992367357 GT 1 -111.1804860353477416424248025837262031 0.4291043008741178783680697821588460 0.0346432729388645956082680598537743 1.0352575806042252646229038449093454 GT 1 -3237023638469216180670892940676306017236.4072074638086750255727991546798266 3.8650902883714594620763404570839289 0.0155669012324765123227728361981622 1.0156893377396255089421322939488963 GT 1 -3368287095715055494240.6891757930080916839508943028095611 0.6050544040969778195503287505532723 0.0893115553140053164236288194589010 1.0935544328758233462209068550257767 GT 1 -1729995774489729125538217142578.4781902985982974695187840126507676 0.2715812701886468022798322270562751 0.0637775852080785168452352821346577 1.0659022080913913743472111757828751 GT 1 -12834927930.5034366279033157205058801972333739 2.7124843309315751317493471916027650 0.0987125387580240245827770969552080 1.1039310253749971298321902005232759 LT 1 -425477233.2017163235044216274045635969323864 1.1650742891888372767206945240815408 0.0203442461103332458412358847611368 1.0205540405689754393793951439425958 GT 1 -54628336240190637009121008308493658393753.0710215103203639340712214306971276 2.4519690768037454736864675946649937 0.0838545587391372351378174045693659 1.0914152894260691516920660790137153 GT 2 -1283766252823114685.9754873218874127279343833702374750 1.8161892855151961248925050467776946 0.0962608382137670631813441983742361 1.1012144980721016671886609727072011 GT 1 -22809542083220038191766844784475693758573.3605739903991577636171465071415035 0.1631772865657550819460257926772922 0.0537143390278879058777940238752510 1.0552107883122137120235618210927956 GT 1 -125620911519724494377370509643056.9527965238427434664599089766697716 0.0984866104203378675961471826534234 0.0290211174693697470437540878337248 1.0294505590934961708378062119154038 GT 1 -15292178734977816744924916743055893063036065.7605083789548567805720232011936018 0.6275744188878982642150270139200033 0.0715072192374689459634183438256387 1.0741926733811207359861769392007280 GT 1 -3869105028939425223.6059686949347610874772772889140527 0.7327839096748723811576673981448964 0.0693695536928893309811437811042028 1.0718930232497881455374019899790051 GT 1 -501994074504412492.9937467118890137098793928321904262 1.6286231603690872767502520227610622 0.0363026196288484101105583159803496 1.0369779544318465328457063374917161 GT 1 -7664208998484312546580423509395.6814335518459751775190204198585680 0.3981413883407938180825845024976445 0.0100972132214449745716418451999344 1.0101485358481398328709622879367980 GT 1 -202319258848206642407415084793564.6029157605444788002708633044725950 0.1645731283919842978556613511519931 0.0502151422284847197957975782732719 1.0515197855384030434597504387299395 GT 1 -30905022921312729715.5011491312255860642879492443139450 1.0269823939185003327927190844123342 0.0131299758589152739008352595445980 1.0132169360205745759414494468718588 GT 1 -8349554869772353745157.3770824424789669484037624068798685 0.2312209988075432061717531519426984 0.0258022863932592845733504704693064 1.0261410045568743061531834114240106 GT 1 -259142538094372533099988194343803754606.1869714405433549128036461070445931 0.3139057400597613180100049043150191 0.0086179562243973241339321420094761 1.0086553055471772975135577119649002 GT 1 -19338072861795626852798831534.8739361258047531106445247288414547 0.0392452326060419119412834667039288 0.0585618024471869221318721333466101 1.0603465755750099941268183342816943 GT 1 -45151.9058652108802283690524167878836996 1.9101730468992350700292178544514589 0.0398198623255627490108543762850907 1.0406343687122058135919289792567305 GT 1 -95.8784645537198623607998825661849555 5.3961162178004023113106550126425787 0.0994944711488716204073966330491711 1.1047989746280301719661855640574884 LT 1 -15797579975909590416292485789149.5131993482874396705036905444064201 0.6749642037842695079658263343529166 0.0081315847826828383354840874456052 1.0081648264458014854582282222236330 GT 1 -773662619234998861381523374571896785151023.8595338593343723008582864757449383 1.4310084236127794739730487550925816 0.0586500932202458118400394588006334 1.0604403628396739649727311837332291 GT 1 -5077.2690156123730306460806336700881755 0.8052213596042756831852826188903000 0.0683007680742765204744250777808127 1.0707452289054863733753143822430648 GT 1 -18557888082304290987.5425026468507240817511823222843055 1.3058203761557268157553590343355388 0.0744621912766713734628285920648465 1.0773802955898007982055052122199379 GT 1 -51955065275698474917843931.1247431262968249544383509793794865 0.2873445600805104593986993371019243 0.0896778808313955593347170893724508 1.0939567649980009233002647731093317 GT 1 -90279925828.5578331643568650587111416720045453 0.6497956232052912667666246208150896 0.0336413727820893449445863716541728 1.0342202639577585998890458039161971 GT 1 -6022884803400181953510.6814857845380474904037483593425716 0.4068791332891408113563901310645120 0.0110900340801412552279108821860318 1.0111519869737195839506899175825389 GT 1 -403322806435936394.6830877952135211803265136921620002 1.6193309344173279219059051688347028 0.0652008922461267145461451470006449 1.0674236307959884297354241565072718 GT 1 -14063.8486493741718494811351296655330354 1.1192673536762630469922588411915134 0.0111206643636343174914297788780457 1.0111829612372282496257463000726514 GT 1 -4878145796113582893497.0122496275145223926450501400908908 0.7081233200027886529115122704629579 0.0050698226781598439827125185807706 1.0050827178317120356969497166543003 GT 1 -5604321258349378.9056376977030353452992925644041289 1.1424112936057599319648688028138202 0.0659199089998368267495003756837205 1.0681930938941548260086435920845493 GT 1 -100043631857018551273599873124784.7227406008480712807474472810987696 0.7611582971087431440511790953679337 0.0110697137721069264264295561913351 1.0111314389966896111883082480690617 GT 1 -232899684369911853475060.4792207540636691596730916784157394 2.2859269827375162470293831859386187 0.0480395487165885400560622385320454 1.0492317878232222646918437239835038 GT 1 -121.8836735279788808252011345487377306 0.1554868088658015713201618568844059 0.0267849597461326854959295228759594 1.0271502137595253445705588206093423 GT 1 -2349802578.0447350673589776924991605746586339 0.4528771291239540474938603607731256 0.0943002752440858744800845116919894 1.0990474575033295259118738000582934 GT 1 -924568899543314166020171389562195739148.1158263634808113986168434989257665 1.2299943659025674162310042051806459 0.0824915928273498473543699401302929 1.0860935359644390983914993700978468 GT 1 -34138478950081464462294857.5131472658163774899040983313063227 2.9788985367266364670699151376241125 0.0679640613459126989740531529864802 1.0703839042523466093102857862355831 LT 1 -184116729991169.0959128512076798671763372537604221 1.2078610049062552158179642880619318 0.0390524792908632682445974072739537 1.0398354805465348596875167982412003 GT 1 -251971206527617469293582652543477.4858230009509100076910081391406339 0.0987633401258479823692327102998705 0.0455135223609326759563633523420118 1.0465818028741859121264943653484229 GT 1 -43996189429.8288606599495538500325969307826632 0.2608259609034462268809342871379327 0.0217522732115234426734000611369958 1.0219923416474696790288925125463694 GT 1 -1021065965922669985021240303540.5957735711905318086894748766819240 0.6145845455123870936779601019480180 0.0984547427186154046792773375835400 1.1036450354009779402161361001989088 GT 1 -65.6048651851242905774278310071566636 3.4785449833096556537257279554516653 0.0492906492824363761395902072850113 1.0505468880522223479242457572752476 LT 1 -2225.6861775476738743064831770249801988 0.1783901831009269636770945248513388 0.0028136855031802869980501105787151 1.0028176513570930305126602057996881 GT 1 -273038431785324749740118.3285214693677817359649393812193477 0.2734227802851048097244426150652658 0.0344295711242257412999541726690681 1.0350362342785968636568915151519070 GT 1 -4801845241332643241811909475130.1292487774891137543547250973383691 1.0309053150057682632420520576969532 0.0346983940299443330054982996119449 1.0353146814284898796070134491449923 GT 1 -41075061187.6477752583258035002719916472846121 0.2659868410078380509100322859080898 0.0275553264209689684626949808989871 1.0279420960291903892689719018976065 GT 1 -19979558308430048438.1289564149639194667586934327719772 1.1082530736254095659785158962604473 0.0996834712021532924537930273576958 1.1050088788250304670952479958262092 GT 1 -847710473.1680536475688555728008013019600241 0.4711481007061595261833710950601039 0.0110672178627669077979312347880547 1.0111289151522638360137170801682797 GT 1 -30104.9070197077778476224573624941440087 0.3853044727100597328280708260357338 0.0988391604053461523072411610512367 1.1040715249915150058239614699077202 GT 1 -4477086984694309692820693.3619924381794511219618592832132228 1.1433849636535242264745661828662475 0.0962078874761365974876131572484920 1.1011559090580157859248889392993147 GT 1 -23125098158750642164227634322318229.3706305122144463569661562603108782 1.1142817295189081929774861806680931 0.0940715233558550796769293373381499 1.0987949201567925992954644660961222 GT 1 -175036408973100496941.7588306853163783754688703064338388 4.0629803420720400095426919577477804 0.0242920197877326442104847267826298 1.0245919379406600755935108307274153 LT 1 -4706515563477699187081264615256981202.4540722070405484547829068035958569 0.2162806596651245556345024707477544 0.0733134209442361851814611960274914 1.0761398730067586517996269825552670 GT 1 -20611.0166675304209297687221065086449199 0.3903999063484837923010188778193605 0.0692625145702639019265125279018477 1.0717780120035768285671446958876244 GT 1 -15705325336.0689979003157067473569516020780090 0.6550881240867294758393363138664988 0.0076456167700264495879476544184952 1.0076749943334465420014309353557337 GT 1 -44760026784896119795827451028575865822.1446607311637347327620202220787225 0.3066471399291122985466819854270540 0.0989879522021089748105746498817793 1.1042366498784132689101049775277558 GT 1 -90670870183.4272733782462898234746492141187266 0.6140736534163871359280430743331508 0.0514112484435356170691505135886076 1.0527799235507027747729142144115738 GT 1 -209794709179041521393796211722786.2374308792180884631298448620933632 0.3655489445644388824416669031074371 0.0990681842727062455287997386539506 1.1043257004557085359342035352972245 GT 1 -4954874565942525636585689700113277294381.5878159634201833074819094288544155 0.7698347133273900721044931923738756 0.0384451537778676008013937458290562 1.0392036732274439619932664445065108 GT 1 -3012953.2495168423031449733710734552070105 3.3641016510825416339422384122277972 0.0687759228153630135772242602109155 1.0712553462560681560153524340707482 LT 1 -11.1512993508405508920086046143274043 0.2243910894804493769868904064356848 0.0966724750671899526540096255494067 1.1016700837608513787823976799300625 GT 1 -4151237.0134449203914005598564245893813143 0.1670432689643302685811549640429279 0.0449036814568447875851144144200531 1.0459430864738919677209424348947689 GT 1 -26358.8148884232265554030894378846755520 0.8878900569508694846032077240437111 0.0955722178487796502197180352501080 1.1004528201743960634838524498284221 GT 1 -3666662864318041226004749685543.6194168955268528187429401481498460 1.1654957022501956790260587589816404 0.0969788946784493120756616895284988 1.1020093533891682390163941510237194 GT 1 -256236153701904391277066719822521470582058.3819229113500559588693812990464019 1.0056038229528070707669959725803233 0.0857031176934108024514321656884356 1.0895999437414579816776960296662959 GT 1 -1701476944.5534285520646776886441997560706013 0.1940532543057293348798633019893744 0.0653960353548839342876211517740377 1.0676324066478603415212135455734031 GT 1 -459852090699312345860.8290366582576194862458986974862230 0.9016597329356091040030142341721363 0.0524061329488977790016231456223448 1.0538292788046661656293298320296958 GT 1 -43337.0500745052143023250076952033905223 0.1432670360865467915774621911286060 0.0928245715641666123342994325941897 1.0974194314329591005780672120248576 GT 1 -653535140205724495986503175656961.2934264537637535238554563517812571 1.9258503998436421430286989624142353 0.0897948196946143679660125264671426 1.0940852320233659632380702124638111 GT 1 -6018442464166854264452177323264728339.7058029807466911081188658402446945 2.0755538289878283969794808375043851 0.0136446616943837502571142605918272 1.0137386056250058438866404377744195 GT 1 -33931.8371784907249823039720644803425716 0.6155764630267393912065046205038720 0.0835049955971413813390722748637185 1.0871986624506111331864186714153414 GT 1 -301339678833953770320452382.4076341583468911421453753005666546 0.5969849383576039991014332775582404 0.0928432137826013011255737445858474 1.0974399813832766700364474108805002 GT 1 -251013330789937831230239858475298566598.5280242697781250286849533592300107 0.5308439575261877409877917660479945 0.0831565538715460093403769786772175 1.0868185452609128606932102019318275 GT 1 -145.4156468607941000170929500024977164 0.0164106107222119285851198607290390 0.0765144367280917582871837593749112 1.0796001120888466274453348619552979 GT 1 -2881784207410976974381701230549988.1066855528343841323537421377203004 0.5359579239562523498204264274638691 0.0253504588642142938515854260372969 1.0256773175890620047208173516476637 GT 1 -309275393942629038144450336544063.6817117483013195156264237599953076 3.0338106010698270538766786797810886 0.0973778167777929370900414522230979 1.1024512148668644990206711883765126 LT 1 -67282.5658837883182350047902948946816154 1.8254622042281482900218175088029069 0.0320586145643782368282622416122686 1.0325837457748486139864368520815750 GT 1 -271432559008753237830187920515870.1267227269306333529591185716975053 0.3781206738998564142659191749054525 0.0975362977136836589195133009147344 1.1026268086572433772846219350288133 GT 1 -185897964063813.3288727729840816798082395738526735 1.9058469989489125214826888413601415 0.0373504135379084033892128969637284 1.0380658103897117891855134528759842 GT 1 -11010688151267382913461932892767902303.2697059898393139105764571739940569 0.1972949551350281215150856490135296 0.0096483750359038989442567994912209 1.0096952221824152410732089053164094 GT 1 -3877987373114389138401078875268474.5656961397750467694349575865475181 3.8239014757471642693774928408200086 0.0145329937688011933465056004905726 1.0146396321672579480783557528174742 GT 1 -257762398004486190756105890131180141931232.8941974320438253036921020574804042 0.4920107059435346084062346903339277 0.0597653705898819753074970759667400 1.0616258291089765785774388455405803 GT 1 -1086725331111664993566533423669123.9751682915965633435795009111701445 0.9882321369528124101441755303309773 0.0484840757989545104302130135269998 1.0496988564941786682086826671203684 GT 1 -840291065940870451277150905562.1615219983366506644707597199033008 0.0876325129832729211050422749756090 0.0580185040733563356815759249280561 1.0597696479886827839006722282376662 GT 1 -33881698999589735985263088509491776440.8360133147633559964408467083587507 4.3120154711577915038757063647527748 0.0016698393737982843698413791864741 1.0016712351095515102405587754854991 GT 1 -1254444386.0991646456066911538036193217035886 0.9152233385902108985350052165272421 0.0848566430419889872247637714290866 1.0886745517076972532212324346029668 GT 1 -273717462997285662747453.7398568078174875917480506266261499 2.4142857063477418267270537229449406 0.0510848392196745573171968720191361 1.0524358829139921235669352774602929 GT 1 -206447408769505453667585467760645331.2490860000040828783962116128746086 0.4164607843163124250379577647040043 0.0339338687004714071764117791338239 1.0345229882106192470526095370188550 GT 1 -568550989589477442836971233629762761762124.3008126413314363621241697010662307 0.3428865618379365933173322291657114 0.0081141727604805167052491326581018 1.0081472718295792619177187618588338 GT 1 -801488023316373683695.5914339540786200258585221162047648 1.1888699436402525224057602076775687 0.0551935928388831985528673349006221 1.0567752326220668287858666469834192 GT 1 -27236579252364499712152688316244689136260.1600767831607905666819610349775486 0.7777566081314317255916324547314471 0.0467779723772979633636755732375161 1.0479074248945764740949038261887628 GT 1 -360982452572013274567.1939130943688679047663813332917725 0.7290345885330153912451090617277048 0.0319312560693764609661168332091724 1.0324521777698535338243819344414383 GT 1 -19750238403751.7681898636122667281597656492960486 2.3003359606943114504643843174544529 0.0859597985565943873458987586153326 1.0898807244215101171964071671187072 GT 1 -3624.3855958947357805649591541463170348 4.6455727871386130216166296799031465 0.0931197934799333428840739438060863 1.0977449141939993384569344489341622 LT 1 -32927622145650368909415.8053572698748804853488831561287125 0.2642376891463349500827591750373185 0.0253051800591708775204744475318322 1.0256308621695315610871849474542341 GT 1 -3912897647.2072521615124615067801512794409584 1.2345413647253734070124430413456042 0.0190368202109964662826804840634744 1.0192203534657103498085816704220812 GT 1 -62418065625025249209103155858241457446.4694255847538674399144303205941111 1.7589353197702980308609622596852277 0.0132003200131430744437151580809053 1.0132882186208095204700408999591072 GT 1 -1462509740911656490550211726.8089144827350366493437495186563100 2.1929640110132627203817106727794868 0.0838279530071270092989433310301746 1.0875511077167414464737024362687013 GT 1 -499390226168097216947408393311556.3259398349415268628494662878876219 2.2594545108705044018852951568253813 0.0622195519899248308849988402133580 1.0642394213282988909753988681440289 GT 1 -8919002836649901134.1366786842706202386772999873490850 0.1711307883556889365251601456229440 0.0270025235848273400693043895334348 1.0273737904118564976006489579807811 GT 1 -334579.8803340189739046278166261618128017 0.6253565474395720494657834859200398 0.0650522316502013239350954626980695 1.0672646139813183730022147618090999 GT 1 -547451867184917.9356780170372321833501602385279865 1.5561853381175979565746386467818622 0.0113298846222974164941879234956862 1.0113945567139799686964011428703316 GT 1 -1603604982025116864332.2088541205799218979765347639711161 0.4251434824425939510410760486513573 0.0266532522579500373617475337419630 1.0270148905561255313417033087783693 GT 1 -1.5082122443743338331064575645422423 0.8476365254802646045092367279320493 0.0906536089341652040333335089527549 1.0950291891134886518656049043316701 GT 1 -11.7968190137257731377768607703814764 0.3658033483677573164926727802466241 0.0782987697940461097607719841520817 1.0815341532693440358702316543532717 GT 1 -1070725.5330880549006788042595623282211406 1.2924627301950751138656039240329134 0.0620311043464699819077936201428046 1.0640384908098098891615564977865116 GT 1 -101292907986211632530086983109814.0960933265435223951901771930882851 0.3984941492098179599800994009232427 0.0752673655488814563025154077448403 1.0782506270875614699523841596048853 GT 1 -478.3452824095990779439618379189956858 1.8119580480896447587997741097281837 0.0569400648618679366676679403515947 1.0586254404276447905619522179850917 GT 1 -14544383205.1610641149896102310026823509706707 0.4726444433642431980537150257236339 0.0855250428360420224768699771724211 1.0894051957099231650460308088528536 GT 1 -10638997397343351758819958447053150577.6099240403680520853767333142323284 2.6220077619943661317271884520551178 0.0622269110419748222043243661466721 1.0642472686671297784753236301946543 GT 1 -15378683689020196485383.9338567107245891691420616816349352 0.5881349290684017817192414128481456 0.0130615005022783026634157157194329 1.0131475520293268285659190861552912 GT 1 -6145688571655035554339.3743729444341393051880587521436153 0.1511745046258200415010202801324524 0.0739211145076154148220676991418898 1.0767958584477644486719882228874216 GT 1 -90.1985140499095248588235916364197437 1.7852055172066561140158016632513152 0.0422718386969010945215183532930690 1.0431912977463421871163077475147583 GT 1 -3539162377328176320963191896539.9032795149622106503702402826683452 0.1179956577434464291867581014135301 0.0791304240383358835888454252336749 1.0824368640883598649581129983014380 GT 1 -362225220147542464422523159842.3345581516904935572952389248539173 0.2172992546736980795053643835896347 0.0243480642481912983125489509569279 1.0246493793793363180782805166374605 GT 1 -44397385218946.8829499453304015938046786224418547 0.6927208878126467951594502704829793 0.0860125394941363049117153101590012 1.0899384269811095845693599926192944 GT 1 -34713958205216108577055080469729.8505297093195426901609715903843777 2.3130370154615876925952520436212936 0.0591240318481217971712668041888355 1.0609439566370011514995102403339507 GT 1 -179694810284712111302827510010684.1157233601963658606885878992763104 0.5793718144191738231913255048541084 0.0994107851715115543248288606510664 1.1047060467265813900650689858614933 GT 1 -687620850680430903439756337663689.8468662923027990551708295365222148 0.0769337325296612616514510229156130 0.0084783592849292148636808815992311 1.0085145050223806639337378873439147 GT 1 -2280045743709797912233579.7637035651250256705606168497479552 2.9296260040250734484001639917733460 0.0934392674923910382560979442161060 1.0980972543324480089775143412799937 LT 1 -5075880325308940093804756191333589.8770404240024163794463764718707989 0.8335664720198225706913947835458437 0.0709630386372175792652785522386106 1.0736067547780658380343835640596528 GT 1 -792154011997408068236725235019943750447722.8601507776128908946315356364166368 0.6957603785164042785653080053486018 0.0522094636689383677803499701499457 1.0536217543781548046265448499998114 GT 1 -21767254824089263356109522343042580181.7445335635525557248666961928349350 0.5515415056061551657989502830909116 0.0524983615488925144174309318948955 1.0539266127910534196355651603145838 GT 1 -195293214650247197230632536659010859782404.8824738328078420043135019560949411 0.0166441511333924432415664681811680 0.0779237675394625751618822040828780 1.0811273772159996485922381441616310 GT 1 -2359562037999.5241822334162385167388622326250465 1.0171742681937228086407529063535252 0.0252040851923885271963261583560910 1.0255271480404300289545605152391462 GT 1 -56109274371827421565078158869244561746912.6754649547166888520977006165282750 0.9325683998366353359633382106601791 0.0459588658926257456349754377706429 1.0470484909504128522300718914096598 GT 1 -1212022493866215659.2096609117315433518602378719962927 0.4735448866274586142327504827224520 0.0840207934269508108395422066706792 1.0877616148134242021780140441201637 GT 1 -5339271822618832664146866281863.9621753243951627362139636662549212 0.5603851635702120248468964720615288 0.0440205697711666961123998441818458 1.0450188826592552020942101310630660 GT 1 -1605448.5137891051320756790833807264575538 0.3217417939844923783069199140672858 0.0790618781433365446098135452040625 1.0823624308072826052178895874189896 GT 1 -178313966260773175148.2971301590122452044792370140811418 0.1137334506049523118267534114640107 0.0543173768692780378090513734428155 1.0558482597401213480254007976720472 GT 1 -71564.6479770836187393841444493213933884 4.0172651421083364855840706831077219 0.0458518348219580540044911405532685 1.0469363101821630590812546843055197 LT 1 -19537548727760781650153735874167475.8828030753200829532889367501646241 0.0717665112484991835021421163484161 0.0542370945346958762562718234108610 1.0557633698150173829983613307943530 GT 1 -60903331075.4994465017719974922785606370828410 5.7471142862301043975491908415027124 0.0971713408294035653290275574560271 1.1022224897812056985773916079471477 LT 1 -3419131.5281999944631404915556264463366580 1.0451892728372682496748690712182764 0.0914004171850134866719853431408088 1.0958507848083961588487301841019124 GT 1 -368119135084108244340285032154224798175028.3592450478651655193664302853182133 0.1829925094765630121538931962532566 0.0215342415141276717357396147996065 1.0217694866409099752970437924105104 GT 1 -5191232371744045737724303.8997913866888201531426706840570989 0.0764689811635574944851824778624359 0.0958225823726515540240444321796464 1.1007296794087958998254984850028732 GT 1 -8.4966728769201483626484987434043841 0.6733177162934506975648288021186738 0.0294947912617398337403147472325332 1.0299385093207460947402813101164500 GT 1 -1937602741494247009656128845031.3774955732151017206590572139656756 0.5209895731444659219752002527686480 0.0682546501849036460897785954021485 1.0706957314427400361234440727125996 GT 1 -113.1239833402414829434171214986764622 0.9915351988062242359611414687616617 0.0611687961992402838022479782515247 1.0631195775934707754458822008525277 GT 1 -11.7635203020439249679311497629341872 2.7643309148852803449809507272376941 0.0823716981893058021641640221857565 1.0859628703441311145837392191529847 LT 1 -44140540306241121691802.8394546051749696113001698745653669 0.8727461358737213125522735165822574 0.0869501869334325300774240896944821 1.0909648401092690646154719183734687 GT 1 -13159482446451916129.4697865806436848494086004083235669 0.0344069603235428646233302826582006 0.0582724885787118288654795190281533 1.0600393122583803613272932618019668 GT 1 -7590715017651.0031510788158660072675609586526936 0.4644897899992618366266350623504377 0.0194172213383049336113303058894880 1.0196082119611367846184425082745335 GT 1 -186993.4681733229462613861652673320197688 0.1624728124032763754727808382768661 0.0779879277394878497348037659142282 1.0811969619532238985451392547592657 GT 1 -574901332544557665.7645264409124340047734094964129003 0.4570140706219824506028250361310295 0.0536665629518025186802468595702329 1.0551603015807361428457896608131195 GT 1 -4.5206845915580841321661985679272289 0.2420661554615345429395924343246628 0.0053733353605958570515141541809918 1.0053878236506453696802690466484528 GT 1 -47035890613249110993291483094584287.2858858209231292258989097647150146 0.3579664399883659984475654252522043 0.0122078952484888441897708383855008 1.0122830236677176977789029472540912 GT 1 -26063435648600682160966470.1197579007904130156686204636772529 0.6901097931721863157473351817711225 0.0994974036440263326474982357986125 1.1048022311321110490219949650220415 GT 1 -262395807822916975918031.8259161087663522101461328150646315 0.8875063425599131813891795825940797 0.0506654500703740128305017343106748 1.0519940135922078468014318707685443 GT 1 -324916263659566292730797089.0219178929346558229103553468287434 0.7338946116130712487017500777166039 0.0842508353340758136800000692862559 1.0880127895093523155790471316295114 GT 1 -128826067416727980612428548411333043.9345211850555714415814304803934499 1.2129409265698389494349276050282014 0.0650665201335652430814562047633795 1.0672798967522192820299324287791066 GT 1 -17216.1731486974362799438356380945294769 0.2110506031565774618701731390865512 0.0469859548434495938831562078684776 1.0481256376017504438543005971023806 GT 1 -1876862462354337317272.5436375262596626339252655319712249 0.4758192865890969965912659715805749 0.0430316230626480969812635503560692 1.0439849320277565603702206453621402 GT 1 -2483314.7643292729748665563217906591707618 0.0209684823073964499050891485874128 0.0877371470220559597764893870369861 1.0918271144494659581550595486905952 GT 1 -57540524766.2071448606654452557559539024648787 3.9123199205457810328000931599709963 0.0886538249901326615026138515817918 1.0928324593794554546782243861274621 LT 1 -211682666558793819.3835576397991350212984564524178559 0.3236383290441917331975827126314100 0.0079327605035392057605188084065897 1.0079643922438787972935439238377951 GT 1 -1454770822925337248567697409932069675203.1046842812311803986771327026154221 0.2582253907935577521634094896472404 0.0050094303727620052392551094210691 1.0050220196300284025337736199734952 GT 1 -1044705923368049038.6810154035460293637561196554749084 0.8472598968326532645271144410879052 0.0005774377149119466534818228632385 1.0005776044962762383743603524191282 GT 1 -1102.6418136780639845997645875335991349 2.0362409901343422620279645529887245 0.0361742236955820991410243573487772 1.0368447306798915512143849390542728 GT 1 -617439.3543651546683370407806263207078842 0.5762671891416971313637632044254025 0.0553786870874819994422441881182353 1.0569711588776461530651254576273791 GT 1 -27038707.7365614603963677899949130427012087 0.3662767580603324866867751349848012 0.0800286353460950908461762564467865 1.0834127347996459475687112152605256 GT 1 -18369535487897061.6466452536098664891126460121753889 0.0173457846872942622162321205443183 0.0491457554219947586977278269715544 1.0503944936110577182165403062762736 GT 1 -9060368.9867979778991376201101824056451795 0.1540920749060171083538238753351968 0.0924549079264131962479734868858434 1.0970120258421933237281382403050270 GT 1 -2.6251645442345131048039065766451510 0.1811855516523362817471671520069532 0.0850065942913022461423228919585648 1.0888384206083255507654710135813703 GT 1 -15516412259923443802432383487694987050.2245348924361129475450217748746656 0.1410364821216694943487539985763592 0.0694686564192047415989012369677213 1.0719995188021334816324100642226273 GT 1 -1038978860052097388207439770383694978.3432716055381157786380762530393574 0.1200173265936250600021820983572161 0.0332586870328891947841682822416855 1.0338243343462117885855017323522912 GT 1 -6662205915841809.6343109639677281561973829627501716 0.1855332051363795412218045136683456 0.0148958915322541176384824525847123 1.0150079495193681814000221992353005 GT 1 -1255714654973022105395434588.2033761876806093430355943973803823 1.8824763946295400884041071670272209 0.0329741504252131328866009135936645 1.0335300521645291731548492825632743 GT 1 -667722645205617951259.5594250221964592219782753233746664 1.3617300630639147872711169629986827 0.0269393482849217036286043722938803 1.0273088639854413450917898803576590 GT 1 -187662.2496350701776194891047183937204927 0.3318565581494144164470273838771293 0.0880716990895002422833282276879164 1.0921939094210148526360563932423185 GT 1 -5582533007202275699.9436703292636065985467149116708493 2.2455670658064743747261890278571089 0.0542944016825162963758473030945715 1.0558239652177146474670374778310530 GT 1 -1252766217527256383828854444.6655028229734785775389400851426850 3.8338278683996190394647969712025440 0.0897459815525408012835611615716941 1.0940315772728296798830237277640528 LT 1 -75529564177665399154356470.1789282227734882986761264987709874 0.6800041334416306738419668025568087 0.0501556293796809505758959729533444 1.0514571282072420344949824301878753 GT 1 -35363029294333526261887972282864929981162.7082467036728624225622401073660243 0.4299265856537675921807685016698282 0.0005754002839393494872326318955119 1.0005755658902123729461264360862087 GT 1 -746363456552910833.9459447111581978601899603512590953 1.2031840259747610689440483767695755 0.0164668050488187635181275525838227 1.0166038898657856485845646536571695 GT 1 -119063604736843393602098028627344279959487.8053319387431468366964545902108340 1.5956329735587652638813644550003675 0.0761379516852388765632606174671702 1.0791925168472106846459365871062462 GT 1 -2371096416069227815025345087.1713579655120710045301186372007651 0.5261466725668063719890391628996915 0.0920620824287068636138923585405657 1.0965792754372048062150301507807032 GT 1 -112863552253231514524047378804327289014642.1136303432374616271262839839787247 1.5942548432844858783160049204283869 0.0982037873503503695999839584170550 1.1033667127714932178895875589901441 GT 1 -2302476185.3191052721974203791822505468520164 1.5302956897223858958760940382166248 0.0051684666401065145381151514703632 1.0051818693647804726921366352679526 GT 1 -6299224.2208154198552411262855378536785079 0.5296568887291997136559172618020715 0.0057383667278656454921692468222642 1.0057548944124893783152395093303283 GT 1 -1594086044197570656945.5237302555346345443229733042750829 1.1519762412102654375740821064284071 0.0763556619737579810707582233430270 1.0794281969954758388092291926465971 GT 1 -71605052477452784.7836335028329682965177793292076855 0.4414600422452397826748751392517504 0.0971914482087706492967595371125662 1.1022447615634284456813087717991186 GT 1 -87978827537923051647726004.3928366528898846664537737305958138 2.1172532560426352487042918214292596 0.0222346496461373962159686636883913 1.0224855657981974093063281374790259 GT 1 -6348614160694430798967707878865284570634.1939837991563025373034335601822414 0.3035488380430082176814330945241370 0.0759110444102983615282483134200739 1.0789469396911048630402004483153865 GT 1 -427267067843720508801486.6677660949247357232703590949788566 0.2238363503574197578956405124687634 0.0553044556682515707176252734064061 1.0568925787083283404776728999907872 GT 1 -7556017068828853316528271523330262044938621.2721490887778967603821996335575089 1.2173383198545618428844936263169871 0.0000524919200542710769662902147086 1.0000524932978033205751755227587553 GT 1 -1770386874205120425336.4352319573689309518245698787066463 0.7919754780544127407292736491844690 0.0453152046808830000627329806825644 1.0463740502397607226964135107211988 GT 1 -4996.0884253444498895676764336725635583 0.1749014397343374176433830418616492 0.0206245906316599210255787588134170 1.0208402478825682824351574725327276 GT 1 -117924270467134053383565472702332327.2892195909323560379192354775350580 1.6752814077620088643581651151460459 0.0548852460058934589601913959844338 1.0564489260627633477818497664810994 GT 1 -15683138489370917326510873810.4980909627474196509602219519900448 2.2859119642919427475964681338011622 0.0788636281141069952312123778198604 1.0821471843222263022304892281704070 GT 1 -538683356771720723745981476141755702375966.7520974041479587995292439732076026 0.1945921274115340516795315550436399 0.0265190013408379689093954905197388 1.0268769729436679952658073203733621 GT 1 -1623.5583580025746464683926832885925578 0.2205466003071475555499533672437418 0.0313212260161646433395326497856103 1.0318222246471641545285693674199429 GT 1 -11493527153907981117738440467669556.3784358963193644288212686317563733 0.6261489167923477055755160557230048 0.0993198185148029761304356260216172 1.1046050438927220285729522690765363 GT 1 -24972895566310897195390.3856151608666317575361938838167436 0.0490694277541120563450456712882648 0.0480617274553736861443658643462767 1.0492550860570080997506721841900407 GT 1 -90018406566033762952103.0096762472909360651432197831801777 0.6875727693177032763812749219624616 0.0637743341685977237160456581035004 1.0658987355897883241311133636839364 GT 1 -41203445258996002.4093961949126753272734723994773019 1.6820915856455987091847658733042557 0.0722819305336409633347523623331500 1.0750273968082130985676350578796542 GT 1 -190078869.1070836346857668643146452468399686 0.5927526999173590853800110175756899 0.0475627374045180182285104928167501 1.0487310401920327205396404599099848 GT 1 -17.5616538530149316318861462550169657 0.7021068943090488128024117351459903 0.0977895038544612360433834616531997 1.1029074201301165531674758233605322 GT 1 -56084654276011412013210.3694551359188199102395280166549289 0.7976600015654669622896113677649287 0.0469950707169851087185427728933952 1.0481352029561963666386475384590056 GT 1 -2244309932232462755240.9078793806451895425770435670072369 0.8508636499382656236421432594396180 0.0369470397563512578607580973509762 1.0376468736352822960643948955390386 GT 1 -14652451535781773308328134472.0466410694542752819248444968779422 0.6727150671576647791629943054447918 0.0852489069184691681218373724880913 1.0891032801324215788292996955566485 GT 1 -102689150475776705322023.4671619922865358211305583179519516 0.0420860573460479915351898096153876 0.0752554483182257634255001619524021 1.0782377399530293854823600135684085 GT 1 -11216342.9687881218372314256415203338506283 0.0082017349733571655329262105961994 0.0775268730837761677721204853941421 1.0806970342058828001421183193910720 GT 1 -29556593113840827909851.4030706518853815984596071562541737 0.2548047852764055682057598715766726 0.0279983716351473999282508792040450 1.0283977992506191447814383129787472 GT 1 -1217357460084471548818089372630155295.9426819969516138390072628087830070 1.3760522527130838173039329885232161 0.0547997946151824740525698519468772 1.0563585163769644621243605747419175 GT 1 -346958.9222487478862096193201627717958486 0.4249857670954731960097612833400848 0.0312314985963013859680981055968046 1.0317296002737762805214208553738113 GT 1 -11914665785056935476322112393.7480463395136995235459630742763278 0.4783752356085129052213407043922808 0.0707688481170232237741636949889289 1.0733977531603584215863555403863111 GT 1 -58546511806.3856885587329870993581412996819046 0.3405042500390679613125523996717668 0.0467071487461373046250640451978342 1.0478331284576821856068236310460644 GT 1 -134134.5762190783468964686962594627176626 0.2938355233918009933880945792177781 0.0292027068290099318941575814718001 1.0296375933793648105728118752125799 GT 1 -70525533324508343755.1173043052214423169503318329718083 0.7412856993361992135929646115047135 0.0101884630795239988610010873838122 1.0102407207225444868012473418366032 GT 1 -3998078888632305689246545.5365906763808189535756098504410711 1.7416491663678179860513938013669604 0.0360816451050155783677685681926405 1.0367486820506784069295641806932883 GT 1 -25117180304934408080.7620148408851896452357702570962231 0.4783139408988979942914563613979361 0.0215817632636319695061047485118110 1.0218180554366379433164677016059977 GT 1 -3234963603.2054213299435750016847892548542193 0.6999138628237163317828743003586923 0.0644114403453614407015166486722535 1.0665794721636342911112703700454588 GT 1 -44.9765210326409604523426467847666657 1.1083164845505463240892836442096791 0.0853679627908542784346097096068649 1.0892334397152688038395004185027998 GT 1 -118.0140939158074969167706900795081276 0.6291908510998446911474462199009192 0.0434020052708907283755912390733844 1.0443720439861940413120031365977024 GT 1 -7283830447577338474638339310491598517803.1159533194411865981525733562450495 0.1783452172915138234825421879422878 0.0840347213415827850077025574537918 1.0877768204211754465954118837178165 GT 1 -2943541281774235933.8422608998388461467456145389789986 1.3685513422068309860952533465780083 0.0140344605358003398924953645829097 1.0141338748237302001860277845245600 GT 1 -340729921277205252910752145.9239539259905746576478090990090069 0.7216147623559850900812019224819351 0.0393895181675619369751870146720783 1.0401862780553367613069344641937866 GT 1 -249684955.4085523337553868979023415540684827 0.3635340924164295969775304930237643 0.0395225644465324767115974162542508 1.0403247894456580256182019761702522 GT 1 -279027.2315837706569417286379417842019397 1.0103054511743649322027689360899261 0.0048007750779126215890728813091616 1.0048123358137558604318100566331151 GT 1 -69885900010358429786961840098.3305228357756137378764188570607335 2.1962477582027148538177953124392856 0.0334645063296441409548330478028885 1.0340372570863242228504192085789762 GT 1 -9333627222496585373467233652407.8468177295936948187326787497457385 0.9285194225166714698289501695589758 0.0646671962575373798164778404405522 1.0668528731934933545981970513779249 GT 1 -4538218628142838205005976765477516547294.1836998968689360545690044671559580 0.5554548057610406946419466489823836 0.0832175650480873351233410053446142 1.0868850922890644200390933780481177 GT 1 -3.2674202124105819632623326262682401 0.0700347993331540641312252808315343 0.0186554692900199204741595898595094 1.0188316774963534000353761040171509 GT 1 -50392737414330251542127899956868723101668.2606137844094143711835055086617563 0.7637435659443603043448624270928774 0.0191605554937724125113239486626418 1.0193464979426395464840106670846182 GT 1 -97322585761486109662950549.3247163787419325803292816964264154 0.3052115690655983938136920353349109 0.0635123442578031418892446627065706 1.0656189384532104461819592959072929 GT 1 -39653362754821548439.8127569516523383858679252706778828 0.5812673106229798876279261605132043 0.0905733551139455517966773746898669 1.0949409386075867589145159692259384 GT 1 -1392107810952848.2457394111584292751734529394177309 0.0208224785498697103548495513234827 0.0483299262726560219088293573311224 1.0495368654677594245339754192670387 GT 1 -3855988883577127598998768281214667351042731.6127970912780757483533973578145509 0.0295622826071959113478436868277011 0.0046734661484313936524966190856045 1.0046844209358964050729771907297136 GT 1 -149953262848102261.6744504733229164495527496455502884 1.8548913772030523314456749338666102 0.0695442094600756271190937291182040 1.0720807155385613155643469898558173 GT 1 -241.5150921445322330202602692905357073 0.5898966956232106294178090506629801 0.0437492501352007874846924817116720 1.0447351096693598758471794241530720 GT 1 -10402153062360342025449914158255140.5955523779808571726145961173776130 0.7606782493652482491944334634852614 0.0182837793444817723338944075201174 1.0184529933932543514364308568432128 GT 1 -148429764073894015998.6922214691329913702733722052994807 0.4928599977225567477661296585982666 0.0605841514536272758230803887588770 1.0624970346071639659237859644769853 GT 1 -19574723423633781450.9711821811267709566951247473580838 1.7216827147387657468632813524994375 0.0686788237060204201507367759850736 1.0711510812893520886438292832066923 GT 1 -947701508332295014602058992737438142085746.4138279805339756999324697797723077 0.4517002501022970119806272962741512 0.0975607934364047383497285545937686 1.1026539521923360124245286719947701 GT 1 -4423.1638665734389968743971716368026259 0.6939820009653227520826924608833366 0.0667122623350241749579872116617398 1.0690417251820853988059327959185112 GT 1 -72.8110637549074704570642133532886650 0.0759569209149040452042229565742444 0.0127925894678415152259913812222931 1.0128751192423339729324337473374915 GT 1 -29041573459919014068426045027.6513842987169018930014350312682127 0.6254804534155658709884330572717565 0.0135698775321043335619017870882602 1.0136627898165439178516439576620338 GT 1 -5318077.3254409941914833890737232533459152 0.1422338170670085724961767177683354 0.0860357517743122263246059801141705 1.0899638240198456642108904190952554 GT 1 -24155170522746452139740336292971926965192431.6405107074556662245921990484352754 0.8616838023608664219155281172423852 0.0375558709197442897105719142536788 1.0382792622138564498914668846522168 GT 1 -4440243878769730731449710700967.5594983356564775527068819346064609 0.7583298027717465990832854426746729 0.0846952896600801515218669702391945 1.0884982523794514134057073607107419 GT 1 -65275491998816153884491648986763028916493.1835461602784711456198370327255310 1.7624097864628690206889665379216997 0.0033142876287467113253453090231754 1.0033197920455016674052064680010621 GT 1 -34358888271549.3904773568156586223921766267868496 0.5543857405837186736938042961434189 0.0534817893587028495869996731387259 1.0549650685376055687129497255403188 GT 1 -362940254531169626.0830227939326591158732726625645377 1.2819596566268481820887031671831859 0.0619962753232024332430402547058773 1.0640013591130099458873253755135722 GT 1 -135359498701.6252186580005597234061607997534888 0.8933390292269245299696178088085527 0.0310754269826615616474878562158888 1.0315685101444492072127054981610301 GT 1 -17045039071.7933236177905163841600771281055993 0.8957900558954579589683013166238758 0.0713319462411890045051450141355168 1.0740039196732648402810415931819940 GT 1 -10807.2182349932351569940875684871034542 0.3777086019973043146709283548200738 0.0657678400679445313401496440555107 1.0680303064027681645068707620502850 GT 1 -4885664965475460726510881489113764.0603139102070655558426650943074811 1.3692151676163125889548337713534071 0.0227431893778555695419175540739571 1.0230058051625777516378437425884887 GT 1 -345.2466312765724563132507326484818239 0.9809268800597931996733627233420513 0.0462630213031086060606114463698373 1.0473673492191165963840727486793825 GT 1 -484991239627157726811557183698.7238575822302533011896161913515322 0.9500612769624560263759250374932038 0.0881639445673061295710871712022133 1.0922950688471915014661508157276396 GT 1 -602205378594827919.6892902431661058614713065582657057 0.4584314137490416942889056334046441 0.0848849414727497755179996053249495 1.0887054745877928930785223366976804 GT 1 -4625993141664095042660771000284211354099.3326498319958289240203297265771113 1.7300268821343458756790116232445602 0.0667546195053592810685336064318186 1.0690871111116789125469487815562414 GT 1 -28122327650829.1747116943073628346346263653230647 3.5598123188338012479180902321130270 0.0041866227067842477595003181730553 1.0041954111494682516288876857829421 GT 1 -1.3603532691792784265675069756241265 2.4284475012493275914353393944224916 0.0078433398201599002853740505655482 1.0078742605974910797472608340166130 GT 1 -167653386686829222573036788643.6173769667624325906427361961676537 3.3196249394951782169733438968929931 0.0200146622359311682516657444936888 1.0202176688946791717459047959684658 GT 1 -600300387685742499737307.3346632408560111777518606738387121 1.6339593829615630782856356428634939 0.0473287184286929538018306002337854 1.0484853649755536956189145170196238 GT 1 -431681.3941214117259645970287348525766808 1.1358622665590414236484821618534303 0.0125207670396618555433564281309643 1.0125998123415734768483467870090977 GT 1 -280422852.5009058552225879092961268795791448 3.6144114213951244196515304635847375 0.0693714875605929050597477515680534 1.0718951012708979831021601555506800 LT 1 -954269311464174212717990275916.2447148633320185938841287516674387 1.1315369816640814104443369257304760 0.0379599733385796413363931535815656 1.0386992214258550195501781962991810 GT 1 -14.7449627765134585593126389071818222 0.5290326313173919744820651469454350 0.0977936687265066189223892947836783 1.1029120364382578904954917269929693 GT 1 -102.6540501693364783698436930922024163 1.2041580436156055436575590908372289 0.0558698963170989277421990591328491 1.0574913006351856153622788634778826 GT 1 -906758664003794612803305.7436493215600555668909567508436302 0.4839923394287903517309318070957150 0.0772610755395920194774151402349118 1.0804089398962621313984156296929166 GT 1 -7729790249126574057446557.9144126066719596615953225168892116 0.6325936428869889486414539825118017 0.0183454570961500936899554367216078 1.0185158218236592083936491652496083 GT 1 -9702894282832178203070572453689043.6563294686387473245705937308201701 2.4072127971132870810820303521693808 0.0455817985262969098116821755264954 1.0466533372636611190544740238966985 GT 1 -1379851155539256641.5893968606589030129547401036927910 0.1267958769296698371939122446472585 0.0503301774715567232571344119545649 1.0516409100320861239516830753262903 GT 1 -2621996811555420384691.7077922277468463771459731621045112 0.2762449863734326111749395073023768 0.0163123297279846885827663060143737 1.0164468405746944289330680452837796 GT 1 -75788162185.1834951794380369108483670162030703 1.0982895512209012022406431012156758 0.0685395414796359790825552068251678 1.0710015390949897469696295874109038 GT 1 -510691.9884316026693392271083882947426821 0.2994961007294649419407858989187521 0.0290278359744950481284464455584475 1.0294574784287052045747031355978376 GT 1 -26.2042676425419483897871119877135661 0.1286397852880402249810538874423659 0.0958318819745926965853086990290243 1.1007399646134295017529505871761056 GT 1 -2229.6886921544782606970490049496351961 2.4183372923952802563480392232720522 0.0012780591957970146804645754255179 1.0012788766099943778171330313761471 GT 1 -77762229.5477941145134933888860692765631037 0.1348282687925340316014919547342442 0.0043695971473837165642706736370463 1.0043791717385831088810838092739337 GT 1 -201703633272824760539725772.3004132385594454946663342739294053 0.5095985526189649656264696079628679 0.0428880069608860121210743547151631 1.0438348692568465214488198193631867 GT 1 -2943133083438670046566542.8715355288758466088296181727013484 1.0574319921219700728382562995431991 0.0809211732164704843246343829927359 1.0843833857852551442946482137048413 GT 1 -1289224873728631011252603468248098.6913611026265080353404037946572968 0.9851502754907321349677710162621145 0.0666664515315369249264129056675500 1.0689926409850532937448590920623242 GT 1 -35571956125622424647171147.1104403213481227363679205035385267 1.4398054975360739179634064877902162 0.0290777542516076446181241547566635 1.0295088903663186445951011384904719 GT 1 -15163091.0614647952266381186874195651064153 0.2665314583151118993243416987215278 0.0102624748257700976945128108535512 1.0103154970922721135624835049160534 GT 1 -1351098695986848257942154434.5501897432651176427281931592539509 0.8491064363849402192947638272169304 0.0243801017723502434060906818732831 1.0246822169610652420836776032504477 GT 1 -177953077690470093789406161194376307837283.2340286036039650220179631073172903 0.8929161775286519195810858913724148 0.0898838778270961708951328735693288 1.0941830808288835501927523580004981 GT 1 -7128695603073237833407524457563114122129.2994014038770006591175651067689975 0.1528107536832463344544457059661441 0.0527656030803124917327004757438474 1.0542087011961961434146852924022712 GT 1 -480823848969637291379276432898500013720034.3811315565672093720740061111163854 0.7159041647473874031464884445605690 0.0425720691328019158921103325372673 1.0435048287839298587387053395278973 GT 1 -181823689359458373617.8355732978819057398185382891171374 0.0380630653965235942701055798263396 0.0018993054094417408774701749208392 1.0019011113770459005841676900890894 GT 1 -7282750887153693157667839.7922827312185145930043971893663496 0.0236366341424110372609625449040815 0.0904191570286553323066725280721168 1.0947713977049913484259350738717472 GT 1 -1489807523.2478904894006805215718615470873374 0.5517952425220036466218945998997797 0.0857471037852240012335533469675884 1.0896480540990083807863438235636938 GT 1 -3516242332372820664621387817221581.9338128405222440378821145984403370 0.2652322581582970690040405111185052 0.0375389327359633990012273764526313 1.0382616632341108538460896415130986 GT 1 -71388842.7202324935007870991816661425302050 0.7861920458122630905885042299764427 0.0659071708750549678443974696559972 1.0681794569072947410632238125512278 GT 1 -986230258026445358.7092803376366494955552975266822201 1.2482503266630915333805164775762656 0.0752906961082076103666409659732545 1.0782758569245665674860350803021652 GT 1 -218.8944231062003559499351473595755713 0.8985138743095591597684393909587901 0.0134376517600984557767340148193275 1.0135287540569888880643458138580665 GT 1 -1479507690088343864951852906.0700945475089410359911174200187442 2.3211536288146655182408595144276780 0.0536863148441628203469548392611087 1.0551811738206051546384287338846314 GT 1 -2247629547.9122338443639151796167896141771590 2.3018102661631341693209979541480209 0.0336688805776102167442134754975357 1.0342487297739306446414380631741802 GT 1 -130017618924787927917.3885518123355454838458729353449623 0.5888477597019546602897430297421705 0.0796550368054860685553275258744370 1.0830067192249451809537914475273683 GT 1 -3017395208212875.2076647144290118598212699720722527 1.9182058911455908293012958485507179 0.0981180170516593430207848641012804 1.1032716067831134661697069631307049 GT 1 -1548826685427370999256552561143043.9333136418124520219039271295685730 1.1416504724115425620806712899621671 0.0591191448554793768646931264930648 1.0609387625624194311868522611261725 GT 1 -12120682946.4105035223251236295911210999388473 0.4358204175923690470151513632030509 0.0454623415227433805615908613660972 1.0465281829777861955442028735938015 GT 1 -55204374049467429.2660133063504480267520818774303448 0.2317597590460763366268480087224485 0.0029196246057606279149847299551951 1.0029238950237169552591209574191069 GT 1 -23902719439823893329623.6755940387380395904560498758634325 1.2621345494823643803418827464556948 0.0949777105182835975248157463528553 1.0997957063239411276778799507127039 GT 1 -80948229790333396.1702702753677462651880776956185010 0.1418430616314470869094448445663363 0.0186032580868600920547469037971677 1.0187784751676507833752735641830374 GT 1 -78315878254976852720886277.0469138237962950284415576860686775 2.8148548647137011916689887119895523 0.0577194147405139675456056592614453 1.0612194688500913210934521645294029 GT 2 -27811590134.9959374914605459485398775013239702 0.4301855012836954328290863961800754 0.0350880734310007981767866362422970 1.0357184496124564991523291760946265 GT 1 -71.8507040958107210958554231566751074 0.3938727290780129008297508221256718 0.0124437392886508044838921243996838 1.0125218109575002142782743597813397 GT 1 -1268941452909405545270070136195274.6414527373950990166474753206803056 1.1231759182280368179229973406524606 0.0955038870530792246316045697451138 1.1003772716165843279113700716828444 GT 1 -15146434100806267.5661098812944099488416662308912221 1.0084721191817939084339860991285157 0.0889410530998004275549738975298276 1.0931476781072705285244769754481567 GT 1 -46370067463702068103391803713894675.1981213684937354147779960734110609 0.8103506862176321765566937499591283 0.0072749398771515086192156099287600 1.0073015312980758276800606112546774 GT 1 -41124677598051708.3573812275195075091661261966525741 0.6721548978681503376449277674508289 0.0610197392651655726585682848826423 1.0629608215764766652774904019796400 GT 1 -52370203253311687912316.2419467501815545931325430373312120 2.0284456244242307208167424087112269 0.0813117266978679830737194067150298 1.0848084162336278246630057815552216 GT 1 -2689571610290345.8360958622908292173393227289863767 0.9005509648879579929454932921416043 0.0299866516490197333446455042657892 1.0304454463928152107967123710560063 GT 1 -41873119353717974664917774953803214793.2098732913227478750580057175683845 0.0389658683260325744988967300170930 0.0757950533757700147374674434487004 1.0788214282293815101124048393799705 GT 1 -6308705033294767442860754124337444010167.4694180903267460699277474449382290 0.3028515826623645579567402919982141 0.0057486998278184008395053836049888 1.0057652872037848820618618752524567 GT 1 -94400332505540596667276610706066460609.0223092800909963549011511162824684 1.3619658470068390226613461033375541 0.0453399221449052047444598216608106 1.0463999412816262958106959384422609 GT 1 -88065177725555185786171909786890467202824.8106949169341352176183366592011064 0.2615490142074585509845803433594381 0.0906293695875610877951484878545698 1.0950025336785646971540026907767425 GT 1 -54987067809627552902589949348355338007516.3441396381055495034387130976696960 0.7920495313746019610461260030326221 0.0909276903762793502962686388151328 1.0953306394275288088142362169665669 GT 1 -1981076732979521733354383944123960038054334.6184650537181293873262603491223669 0.8479133337708739074799819811253183 0.0261099621219135942429938083798694 1.0264568791687628527024432192620341 GT 1 -202214825727180655468337736764991494.7390942647366599150683456948810529 1.9283231523591764760657723815180131 0.0353125574913937519398006777074452 1.0359511238815334107335289425778169 GT 1 -88612157711633175132116138566158793906.1095902598441429621566287183011863 0.4958931903926056550434767642121616 0.0208672053038870348534590128868994 1.0210880024469501333441372214973103 GT 1 -624204866862395164.0272829261420716862859129201473649 0.8845702192917925403482395150330606 0.0107074264339133837624341013636225 1.0107651634373407738816004663294328 GT 1 -100575437303690786736669445410680301246700.3376193786508991207381862577131371 0.2947026454254876873397780078367617 0.0942382387268082557575618500591937 1.0989789641704264218461580470743680 GT 1 -640746796292626112408803362560887067425358.2936678430049670525453677305907628 1.8866886570907079044306168372742864 0.0515102981059594399012082833285839 1.0528843469205783550517542325114906 GT 1 -201206711804913158249553.9977524790145690870350864408976258 0.1772751429267306875571252519039645 0.0000055713384627075725240678158704 1.0000055713539826713502206428399807 GT 1 -42.8264769681176687963493898073309263 0.0693170334214881861561551993047328 0.0360341117828508674213220525660018 1.0366993706645366632500084537684467 GT 1 -3281212058494907589743422139139044962.6465989100900887045032462633606875 0.0820950967127874793279011609387731 0.0377227628301591911543501466510779 1.0384526815084718743524452788041463 GT 1 -2063044056512562924321749517316121475367.1871139083559913006165124425562428 1.8026916416291788753271401644784572 0.0190892140670956213764166435849890 1.0192737655166647359377838649893648 GT 1 -371450843999251861.6917890892661756511596970840431693 0.1638168055046152706115138029153058 0.0589851597224317750935594206172740 1.0607963687691821917736115517492278 GT 1 -41595165349353833004.1110188130458321052217632846177514 2.5822755736796072989756065326261624 0.0105154945883580597848171801717104 1.0105711730700616240226790939455342 GT 1 -12015030392985680001584100882527552519146.7330258902650972472759764539653013 0.0749573014161677543903942055056587 0.0305028519168907333446437329616803 1.0309777459405707250660647714543625 GT 1 -4514120872464092145883269169685.7682177078280318803409954332730240 0.2699317589424399685165502317331347 0.0475963053646390988062808217031868 1.0487662850874106052686203326782101 GT 1 -979618794057399572872281126473756395.2972885395888567101776114450833912 0.0092324875289277147653127411812238 0.0698642913569346435632028115503590 1.0724247802084871856912450766589537 GT 1 -5930512825031611479909563.1916334734398683241213516091401088 0.2407493314112019467767529553408899 0.0608702642521433570043954337117641 1.0628016455818674515176295080087817 GT 1 -368.6848793716587323123439501055538477 1.8647680957433958397984617455026418 0.0516508206910164509793734317544207 1.0530325119405034642481511099130642 GT 1 -45488.2541138548006301203587138940218147 0.8587306865831500077341190264750034 0.0523573092096715970128194220610614 1.0537777562239783067482943446010522 GT 1 -2886599725171406.4807767767823803418437538552952371 0.3233315033400299932129780531961250 0.0031456267893272305905010417566844 1.0031505846731074872816879012117313 GT 1 -9491666316681121.6886101185744545936955494805294691 2.5963660386366526619121830294702098 0.0399482003705127181035339503596374 1.0407680380285502237657015291561127 GT 1 -141464.8696321265472785579739466943616010 2.1545362305257443826312658207482318 0.0922516759558659955434072577247308 1.0967881149641040421335816821774960 GT 1 -536.1253248484105802545780835242842309 0.4937923297414260886774947221674351 0.0607516729144273370328059794998023 1.0626753756469484918964591714692015 GT 1 -8248220335495844896670302500030670735894861.2219585665270148754495199048742951 0.1962515260786156761864872433528843 0.0133978422569931866652672683449094 1.0134884031354210586672271133270700 GT 1 -2663195334701055624.0669329125704513372783250106129266 0.0342179173685286642218798526845519 0.0303596367026192826526146500812518 1.0308300357202368537761409667869478 GT 1 -4190630768484065.9161654169567042748407584914189837 0.9029941575576312035473151140588919 0.0498348278549046532001254260690262 1.0511194440845004078995737279632104 GT 1 -2450551365745449969399408466246968834983.1922687362891939045781989977178711 0.1409192864048383438659504520263912 0.0489319410580879025229188196146586 1.0501696533382328024034007816847224 GT 1 -2520129431409917796641.2502679630543719173783390822582875 0.8585619787536241919895762013903613 0.0932017830066239317565273256320865 1.0978353266129634575181076322663212 GT 1 -468832889835818021.1901299628578439968011100771582341 0.1052487325532668827945929172062539 0.0984347088823662272194362876986754 1.1036228139833640397500069380714079 GT 1 -912700820030208605128981.8628078567014640994846695722826591 0.1777506926928533493797118140725075 0.0835610590235508913293696107675277 1.0872598358786752760414732680774354 GT 1 -2905553565155875432386245050.4636229121084494016606063600013226 0.0767647239009642165630245752760827 0.0417993416519561403482850043231896 1.0426980674658874836725158953074383 GT 1 -37.0644458262136678860911561629858027 1.0213592385306057166835236290727873 0.0658911306921075956283603477558188 1.0681622851180160760705207786136337 GT 1 -79825605410885.0368966329385964097902446186583280 1.6120240032410538856152426820682130 0.0256552704806355354661397219889585 1.0259901062139397241871352928952826 GT 1 -3575.5489353414838735753063584316256236 0.1883944447212306808921781076583705 0.0921521605308826634948353035305080 1.0966784921007351049072776088814995 GT 1 -2062948702757905765.6552661939023670538118600493107776 0.5794736143568252307770950711915153 0.0173648113012525748963212028512436 1.0175173480643236497138803166347442 GT 1 -4579354529681246748147.9213069188682529744311540528972446 1.0861185082324659086635081265053142 0.0495502799112066560738754241443335 1.0508200168338915039864248567981077 GT 1 -6995502972848207162949074061738305536545.6424094127114073890204177237146405 0.5584751542710207372437988319507343 0.0789891088679067292706001311080821 1.0822834174633143067889986985953263 GT 1 -85101451330648780877279624666290356.2141857983865461792593235580445480 0.4868860409147374971239748115264968 0.0340964139454759241354017740493390 1.0346912571476817427645857995319377 GT 1 -8618047121469794398320853116658192262.9795181416182738011701891373879927 1.8979449509277587156363601232567586 0.0962712563216998830934335847832943 1.1012260259204263186316726356882075 GT 1 -17490932648350754724.4239989386276928774259988063314248 0.4149281768538913840495124629146225 0.0838615509759866070366307569244584 1.0875877805065730816208583107581514 GT 1 -1057242753790398309632344043022531768.5599999959323618661555138427998326 1.8765544435700488632384425730291672 0.0912865814604925734386231154563832 1.0957255056467052947067813070870266 GT 1 -10851578.7632914845304569460474058421319336 0.7331115770119905280967426319204348 0.0506273536551037948845567011235794 1.0519538847978891865070336033417892 GT 1 -168449087603941302158528226402689105558.6077683031612782175773243485550577 0.4194875284800035797403540858093427 0.0839723851163916905680659657047766 1.0877087675095785795513347368157749 GT 1 -36672063.9070000781484990773620509132468916 0.0435986063264520761343608512595248 0.0205016903999799179360125635908309 1.0207147673774686607636471220503880 GT 1 -145.4999671922064363618064894670496116 2.5756891308506962390904642026148832 0.0995064171314765727860058482069549 1.1048122405786099267378829809430448 LT 1 -4126762355.7712218962810536329890625729277033 0.0851816758685843736213061403617698 0.0464952591142575904961051042651020 1.0476108818661977489122587586150176 GT 1 -327919126.0572414782663315597374832059057627 0.1611067978970817000029247683018480 0.0579400313957764120603075832856459 1.0596863454933793247376029009318079 GT 1 -46.2371812537090765295984854459527961 2.4978111821967499537536689376291126 0.0192025502550852239357901740084969 1.0193893139820832361170312971656860 GT 1 -5927556958086655777268857149060981168206.4097484043142114608327638651266264 0.2948472577935600557802808043950974 0.0471337366061869399766860509105204 1.0482807173959752206176555719307464 GT 1 -33424641954801419401677573303331513293.3915641955658160354764951045788428 0.1070628926488881413142584724902028 0.0824397308768799260051874863570785 1.0860370127932317772206471488391682 GT 1 -3455155276044593331521385934544529649520739.7253400517176441448804401334880041 0.7940423578824540981328318643983021 0.0590013805411273535343415196884131 1.0608136064978626781232716930844196 GT 1 -288686988829718.1812977836087477122501003093514932 0.5294952352549419853143616055509221 0.0883313306827066229381555407566499 1.0924786561048484057217187856348059 GT 1 -3823631336081.0382358599569982806869895551197349 0.3093530154211967486922584993509517 0.0613019496132618770529087815984633 1.0632614165703579296907287665711994 GT 1 -19727012942960583.3171400589923769215743098096401198 1.5211590038240720841990465941555151 0.0174091803852869500723912214579948 1.0175625022438981313351844993139474 GT 1 -36749253702383023.5392709343622923561372948241476173 0.2537459719168504098264078265671823 0.0038662749903949829381246014925115 1.0038737683520458749068627573855260 GT 1 -24233288700340.4718454785302159093841831287328975 0.4525416167530458746050025070499665 0.0003253303138560583374557381629664 1.0003253832452430496299962969920604 GT 1 -1.6504991467568195246047071657791172 0.7348618139606745162377316841871714 0.0312214821669601300128316846634650 1.0317192609847248169069530779885235 GT 1 -4216639107681164922846990168.7040772488549004116366372572372815 0.4971063277049009320862187446419398 0.0687097570613187229081225101130027 1.0711842963281752590328428788979045 GT 1 -27446004795157070916361615942.9548755268456902622240661571902711 0.9165239466914701109350915118471993 0.0697837643106093079410081914312280 1.0723382083674751081568812343083915 GT 1 -97805071829967437955.4478879827168917757125856170716795 0.2407272213837815616516779222066258 0.0981899937331713201806924913359133 1.1033514171742229834820563055848445 GT 1 -156673966434.6547723425649150779991785051483699 0.9979253384284696656781823311140456 0.0780377261769829117945498248756914 1.0812509740251520539897831510555310 GT 1 -16389425443283790889112812765.8517369718922206204025998922100473 0.5092364858572574893422790759279578 0.0852102430144002185559270252925380 1.0890610138948863122453977316719009 GT 1 -2979133547572235.9467210364533194691065379443306199 3.1433544103432443651423202917005954 0.0791602348341344308610769654039812 1.0824692370531219375998121134991455 LT 1 -12889734993377180454816655042352117.9870699166934009721204909954162796 0.2799299267417111614435777059097050 0.0952180812121469382242608430574001 1.1000613380361212569609295828557121 GT 1 -383765095346399.9540391290273869737510967589216453 0.4269235854016774438810477160035620 0.0449053531272574817875844773144270 1.0459448367391198536287322596335947 GT 1 -16039144973317690090869996.9417593033134817733211937298348720 1.2162837251472516136366816376414584 0.0108385932491191754019085799420444 1.0108977587028388910296278773768328 GT 1 -56346091290315191423273.0992561499060289090053282366216164 0.6048838206814700155896325435444343 0.0640101582845919683818083013266482 1.0661506554315916170182898816330634 GT 1 -1391587995419.0822430710238730521583252309340188 0.1159489151069412600923095418034190 0.0488654546859968244649363779526188 1.0500997487213750621597491387395785 GT 1 -167726609023337807174708069648208.3370905877358002598492343699392989 0.2832189927012154651717047847111679 0.0035156995456564014858957814055459 1.0035218941404551438093835422389109 GT 1 -617155.5034825353367543734875427656514071 1.1681023394536830967657630262706115 0.0792997418535301969369099744273035 1.0826207483077203698514537362731224 GT 1 -916624227776334503407542108194466.4609052206463043999184002879422347 2.1577521026827564475012034144514221 0.0364494710616422857281510086613468 1.0371303493908642323139472915341294 GT 1 -90735259207447107158004345774250705114592.7884176656614030378825378323164377 1.4376246118705647530125368370291598 0.0404493467441631008931175648970496 1.0412901736241602011491794166458191 GT 1 -585.2316406033983183767150814131874152 2.1063999147162844112178997848172108 0.0180106235763114080708898016551784 1.0181747889920055541459592656625648 GT 1 -9552306855565765167365950992.6072342184196985291429405336599180 1.9427165371185032113754560455864667 0.0860719796960446187349953031036726 1.0900034630317949600564224933310227 GT 1 -33023305224619888508906789.2836141470914549214376942821423515 0.6146404140064896424078487198000933 0.0509813364698458513808242678908139 1.0523268140427748518797107158565529 GT 1 -15410341465.8503098875637137737902863688061417 0.2623373930112742031803340021530793 0.0950817323119653029724069929760754 1.0999106513075033480046246996005878 GT 1 -12618941523731271622898856633006433604.5260683674603033979821105332155711 0.0962549456380353679516508123102305 0.0654528184742290090737787013842516 1.0676931648369226524526629012596945 GT 1 -6067102009901.3145131042806709001271163556913832 1.4895777528444752712336965957311221 0.0942680895047057380056388329499781 1.0990119212581219500245620953754921 GT 1 -13.2523678882904124291181960476105506 1.1009920736747183391258402529269897 0.0930321954018561789338786953446871 1.0976483260812045258861690112587370 GT 1 -16876539015173102174.5721285825797302177781506874902980 0.6757480227126962605801060957432014 0.0243950110610911757246170828362744 1.0246974989399281426821609118478734 GT 1 -318139559331000437419.5741263346502471702326321235690159 1.5549421524574787298188273098276063 0.0533365282376608048899855430759911 1.0548116113996274734539217975522233 GT 1 -29007924635928557.9178837513639364213806931320873867 0.0659126060958014411639005155050129 0.0852292375921532988360035342343429 1.0890817779828215503762626108774953 GT 1 -25088187942660175229365.3805012000974573527069931258809654 3.3618738528425333076237131381688876 0.0261658931665937887252386219382555 1.0265143113722372858231909838998593 GT 1 -1080344912022116144509408.9920876545489707569854983821050447 0.4879704895071041108523021668692603 0.0319156889016111738638126944701990 1.0324360972562544792437069782807333 GT 1 -97647318912115592633992111127687380274.2136928200607799869544167492016757 1.1746200669725773610058699801381768 0.0460088103523108371363222937473286 1.0471008427466321178306795886934639 GT 1 -1513686542112708774.6901812310219722455713811425576485 0.1391366159944490348733128067739143 0.0588688500608890396744957201426223 1.0606727761655315055379010371833012 GT 1 -414652615661.5811414855621753995223063944254656 0.1965940421295841748906026607724265 0.0114029989350666210003323075569538 1.0114685116310415244911769404692808 GT 1 -1272731411.8459531349239469596037733478891099 0.3187145835296624562355490575983389 0.0113375787730986361962490746367303 1.0114023390678924478001736892555574 GT 1 -923025418240.3205807247431602293901393646884472 0.4232697513870634434921941329842388 0.0000482588788745357474737747758357 1.0000482600433716958966360107192136 GT 1 -208900581688605968585389783314903570921.6483856459333017854200713731418061 1.2553845723252314714550933100210616 0.0775074170250444084008067852879462 1.0806759432353263574910259959173257 GT 1 -10063232112755812609772779588748290640400.1770919279038640227214085587712973 0.2260146648036847104069585292283593 0.0881215712471708811648361460009200 1.0922485995993894832457178142503484 GT 1 -16015643574187570811075584773474408.7486877391681522363924844235587528 0.6240433227516067227105530493624357 0.0316720910857939300229885198559053 1.0321845001896953145825355176317099 GT 1 -14562865510.8028758540452245884447187932056358 0.5025797527130904712321739566679620 0.0997312304955755279145907278270162 1.1050619274570263705796151297660145 GT 1 -11372007966781159564.4400992443207113021392423322975762 2.5329125942033175252981079875923783 0.0736242269737583227685996634059516 1.0764753242473361225049462644555064 GT 1 -12357669108710396631038333.4799217784189262976986388627887251 0.9835542720305754045882332222946431 0.0942986543005762973930772972587120 1.0990456677908953049717402004033300 GT 1 -56404465667089189528442906130.7208259303718702169289563969815438 0.4265121701265475046617099926702502 0.0636238398481672229640943187372262 1.0657380027327908318462904249812894 GT 1 -512946073383182065574351585799931875453688.1776907169144644000265183043505071 1.1288941447558785319872841394914753 0.0410269268190069779340006983856056 1.0418922825106278254055443359189114 GT 1 -990731165.2154422383371204344174458394637339 0.1107267495685804691652986120543943 0.0576575495688031641548060468774084 1.0593865349791964978187074729352285 GT 1 -434167205584021594162.8784507170679352275056687477190568 0.2095419734654821357208182918111732 0.0980695378598757648739470349522506 1.1032178548623666581278080916981821 GT 1 -46640361589835626898461732161451987372809.4015810403634024650291578489642842 2.1671083844230480635789894042649324 0.0186031928028003170282881818271374 1.0187784086460751397042528436203851 GT 1 -11156012677.5723651864158614120883265683134115 2.0376508592590977251502954862064814 0.0667444076265996604497091009413539 1.0690761688417222769810162435303263 GT 1 -2385990128932110162690338309150.0902219634966014547287529487927468 1.5758989827729968376128646106246182 0.0010963275188151186344000453411461 1.0010969289254286364467688266356889 GT 1 -11809101.3284699896987721788866035553536258 0.9138494018653394993988446138786713 0.0691493198377029490154046411767310 1.0716564010750238323233131086955992 GT 1 -262995.1802959421725000248048214873589506 2.7895763677933353925951030039467516 0.0291535183361917349457632609465711 1.0295869265233057944482190866787505 GT 1 -16003057294373431649641037926116925169.3789822820620545175360061065055457 0.4297634188419606079482639963011864 0.0073103687903163262949343744972906 1.0073372204801124527041313059467444 GT 1 -163787388225.8504841504864353401247374037596245 2.4910675860361714312630828454604703 0.0984520662715281612542077625835869 1.1090129056645306464781334659113155 LT 2 -891543434480130536142968135663.6901463864321199345585635959545672 2.1949010477742716861923384985659944 0.0269590859395443274620651364112535 1.0273291482860867073608374333263229 GT 1 -1661761634018755105220818161220396525074479.6682489965672729238301638263879109 0.5630271432883287603143102650140231 0.0148570051535146991303814091181698 1.0149684759135660914336131624405240 GT 1 -17407417871103014247689873.6179193447152378983642195488426912 0.5073776259413211724334861805484275 0.0528436674478262454382051125152636 1.0542911175281000740310813177288063 GT 1 -4145.2045660583960272183940350729295610 0.3012956925753724542650186657879498 0.0635201983963561245998583230900508 1.0656273252925249516800858938305526 GT 1 -10657013576553472717714639766088647.8102712623102079239302945738231115 2.0399092675687480609199759896956076 0.0231530646684532533983698780278667 1.0234253072462898275387386943940246 GT 1 -3223215301306972071280491458272323943.6834344610212566694183185258443196 1.3766976408160249911572152767534571 0.0556686123737213065030063246680115 1.0572781282246639504740193991979261 GT 1 -105858163348930513700252210739035354.2913391369924018148613531193832617 0.0188571775335636521245629504470453 0.0988431746829163655333117723362313 1.1040759795642558399987062747848663 GT 1 -316342758520697104045157.5367663970501160840292842993206052 0.7820521326030485891590738131768221 0.0371601985554451538883658341252161 1.0378682346624429732017971297546512 GT 1 -42090184830679.7294323717831791986034770758548026 0.2618352080793218605383097146096768 0.0359187819844856003892318146564463 1.0365797368670739344667539123341569 GT 1 -14084156754124142509.1836754177786630474617415399269241 1.9224271684019368463945368707117105 0.0198426501404474681420461511982736 1.0200421591248942083920070939296609 GT 1 -12912002503647609134773362994312182.8014095039321005262123609365575137 1.0968299767679164260758947031087129 0.0715091870917512330368199944605334 1.0741947927905640880055769235185520 GT 1 -86297127799281876387467970.4776350187959008653355712717676132 1.3904305289646666516386818289922483 0.0292013411687164348539457023024743 1.0296361866394176151470385026236814 GT 1 -1.8248331156122976439915806966976626 2.8147720521545096740547637267746012 0.0104188690123967259977457538994181 1.0104735253980885872247169349532619 GT 1 -7078464.3883224892484273273691481263146969 0.4147297500548591823144709910384337 0.0654606094367663579602629820009108 1.0677015014893321621483446180565490 GT 1 -306256866.7115819782536479146859298103185984 2.8844723117132300740993583822285981 0.0497846696459488204664048850522948 1.0510666565412673363241700957766651 GT 1 -14974981794019651052294873552732.6650506900834426092191915849709540 1.0514827017201551357685540421435915 0.0163789773035851792039278425756658 1.0165145956513269876811629050282726 GT 1 -41447104698776010744997616830498838916318.5708817353240560298104622762737731 1.7980157195637834757620396558106801 0.0321555833104496946532665181837756 1.0326839311838397424704835155223499 GT 1 -18076561930492.5922915769402476097091555652416929 0.4612644940680982249151112742739959 0.0300325207275498523149144037755929 1.0304927345699822587687127035470657 GT 1 -123167.5470398298535781273671290414128632 0.1668973228111805953643375306559473 0.0158149628585494205190774189046469 1.0159413537328351610018281967769744 GT 1 -974981688.3157243406506303183704314244268048 1.5855288446378832943950547726207142 0.0819331002844871381513101865323295 1.0854850155098427316097811678747964 GT 1 -546931620619286757536734271121407171.4724369364049906856488822782225054 0.0399882931676995446040914850760518 0.0262519210782860321498644776888230 1.0266026546651441668688658583652658 GT 1 -19932.8472550622357944176790058878547804 2.3626858122106845175484671005220033 0.0887727499579557819812318813408011 1.0972840177488488255071203223937444 GT 2 -20425142023085440003.4986344882954223782677104006583107 2.9638704072935628459417760714140210 0.0756052969521245604861814906366961 1.0786161307499131080864724798812345 LT 1 -26958719.9221225888899174364377572161617405 0.5486396298591920646390885393762216 0.0207884037360217193587926541435939 1.0210075247043512297197834120239675 GT 1 -129197490726782524979864870757271.6556521767277411631834741025735645 0.2176022931204074843464548571013482 0.0638803592031631106046637910481534 1.0660119893088575334151271232283597 GT 1 -271872535395411085791694763.9548818902856331463000384019248612 2.3252189244588067461763095588311182 0.0447219148858553676895623620809128 1.0457527922873807293883157707075071 GT 1 -171666771221679337542515676829967.1883592234503806701703110850795266 0.0838796296104565070162503401628076 0.0038094884827685055590138236405384 1.0038167630648534151900271843740898 GT 1 -2572.1524737290439812730802126821674153 0.1251910981860016895914292473302679 0.0208857245248896801995163735400886 1.0211069165270836255629517557188498 GT 1 -92631896565356677826585799361594605.4892838218138818063885800219421305 0.6114756571212965705445348503885701 0.0509182292392185159475468635901632 1.0522603188989874125869864659663560 GT 1 -12045076787877431811.3435773961593207853109267117287806 2.6248178899306329294630869517763183 0.0191851549926976432590953613777342 1.0193715783036980902339130495352930 GT 1 -16670709782048843804476228409500139897917.0122469291813763996017107630787996 0.0698797852141043814264860998842978 0.0254932460424854942409364026867642 1.0258238293684263009137735202011110 GT 1 -8.8213795674320117325875241054283875 0.0414088056344730468340920421028261 0.0446976081043082914187660956373507 1.0457273478930295119947759243018894 GT 1 -355018394536157489.3655042228250548324662568805447717 0.6161406082698537693398105806475166 0.0746897496277454768220804113100780 1.0776261918978228724471462708634950 GT 1 -262095782753747.0066026215543995018495477064914634 2.8002836128614412276404409411835662 0.0610565077375902726086488661225043 1.0649844789727570617887639356060441 LT 2 -6024411210.4784389262933991733528520563349020 0.5000780219597101018986613464750051 0.0114051209720428213530523508326937 1.0114706581470145735732583493318631 GT 1 -154872.8008188537945747062309387892042003 2.0479054803726756997639951498237119 0.0800184014275291019779846685455944 1.0834016106907468275347081188348834 GT 1 -2564207005218.6896588821919767026732981963377028 0.9068547521929715498633945148748888 0.0986859496428038741725941390513582 1.1039015245507151282763851311282278 GT 1 -26382951218215447597.2990709803980756752128038403817508 1.6188579233594368819034912050388951 0.0581942755827891801646702581375823 1.0599562630246536366561171638750169 GT 1 -407719713402903.2789407698966162498770660411827449 0.2349063530674094408613075705916178 0.0415343867323977277036985938380628 1.0424215927084715303249294840558176 GT 1 -31220182647383381632.1762667073440335074173289648721216 1.9359073614759097623040256810065209 0.0099768231286306108863998503295638 1.0100269251463529830833939733682490 GT 1 -9365330.1686295306352989741206150620257050 1.4920674022483697524927560984720554 0.0585648504095041249642227464193970 1.0603498131398964798333735946634588 GT 1 -4991542.5978535163992804186873396313525145 4.4558660295990111886446741827538903 0.0294194663449511283403505053683893 1.0298608982032344678870272986611320 LT 1 -15075125888137215298610581110.5162253590636296428511494653120869 0.7895602971922949934384083697312986 0.0771120847697794581637836414499090 1.0802474871400146324630612655749817 GT 1 -18027.7777455805174872867653602928182796 0.1106716604360576030725742622007893 0.0076726953303119133324482519898993 1.0077022818934137028294655497223916 GT 1 -305688472416944429744862597301576534.7806873407312220437421317348578643 0.3804062070225372930955956924985812 0.0154209029080120907209691539152312 1.0155410417310593931446171356878383 GT 1 -34144091050397334619342360.4192651349657573936545996528623698 0.0993871589630705939642531865175647 0.0550670757852813134869948587858815 1.0566413336745344197868335645129456 GT 1 -461788.8148047451144879352959100092730521 0.8995682910008435582153423050271911 0.0595550576513861097581510639763326 1.0614021727854531812099589633652973 GT 1 -6374044123567098.6103302265372800015946890359788261 2.4793737067116225409177862317601327 0.0415312282292153141335218016016721 1.0424182973393581496612702392182585 GT 1 -35848624712559254614.1258304179564610581361574750217525 0.0091594389104827827152660558551145 0.0273806256929727866243014327056467 1.0277624610925868040705387081635914 GT 1 -11545736008192421007151803203977441491.1485034145793402124810608880685783 0.3464904913760928490659637829007738 0.0936558696613225913180155094748773 1.0983362102472356703907046546612775 GT 1 -139.6264317400161843181445368200501009 0.4482820322426136656846164333056890 0.0228451148701755651195594966685333 1.0231101081532259775701257964762124 GT 1 -294.5236788099265219264256040494590443 0.0087650221475715033461117764364515 0.0139781092804666444016237675884654 1.0140767230848433213765266270741064 GT 1 -74344753571011236435077528769461802941.6388113276188279981387081921333867 2.1178338782452249076520520392408635 0.0213102989778431007002290636402498 1.0215406417260372589524805409748018 GT 1 -236755147056.1621064173794624654514678544982502 0.4547738351002203288247498084282427 0.0651323768350678668748353250773903 1.0673503392195203097519124981825413 GT 1 -1613885812679222796849752562719601.3850253012294885687760362017512658 1.5950643043565966936351368153293387 0.0595292629611826572438612908410660 1.0613747449847412744437926790445749 GT 1 -616853549827934464051.6555386562675162685975750961367208 1.1582183383278887277326543020303451 0.0472174234315931952447990824687077 1.0483685476653355631645007332381981 GT 1 -7739550299638478181494291878201970702607.9103403222279836615148679584414622 1.2934030300949547276137813855925722 0.0745036605447537776224454456483065 1.0774251021841363462599425689381770 GT 1 -50497394894930929548555352704.3665656470029565272051256681205280 2.1974735243134058993855361637849449 0.0351185274316856305774442778167660 1.0357500115410038498693923227038940 GT 1 -3251566601830470772658269.5695749718902200986933560952146783 1.5068519647906357084267008660049085 0.0001401739868201153488981138686482 1.0001401838121115834490636334863789 GT 1 -25642632471480942406371685093923976.2842941733723686617239722481400368 2.0055241906965458115358908627278511 0.0556733462301285496827539130350125 1.0572831411558600643991439602164557 GT 1 -343990178985982213442694506027.6239112380930466636090068754229327 0.5824133143702494719523614861073071 0.0149195017897230285544791908422893 1.0150319170779309812459930200470522 GT 1 -403906650448159831374757.8912106641287240224551836415529477 0.3508220765983751229113885736072283 0.0737596517613162098261204058069241 1.0766215226812638548313679847469439 GT 1 -16314559608905941092855836643190.9238752804482661632431784430516026 0.1200322168593579105924949516468454 0.0913641800882037137393207910200245 1.0958109032424083932653762429008634 GT 1 -109.1656291833158083598972478566074817 1.9096178399849505254677891084726584 0.0552142060353880998353129267838712 1.0567970502359344543998894503120176 GT 1 -70535370344812263210452275570537.8230502730767729221393599131163567 0.6853757507962795289539100829997966 0.0859702690954039625807337506346523 1.0898921797150132942979795242619361 GT 1 -82793019.8991615707480165840830461153963715 0.0665072056940805379767231427154280 0.0625779354081940433123729112386909 1.0646216556952263960589814649189177 GT 1 -54287344999.0609239470753360180774592897427654 0.6187825318626013986935037509737102 0.0182588544409359130293448076417026 1.0184276046030762873661382459074277 GT 1 -3944217926997.7137116890507166641546914999388826 1.0770199675810791481981056602132731 0.0606097803049535868144667564017261 1.0625243166686402624100177988813686 GT 1 -108782512065300373546878.9828508420005289274959247958381972 1.2073999219420789228250349630600123 0.0095516905265871750189096099249562 1.0095976005016865781436069972187489 GT 1 -47219949778309999384111843.8565842653125928679275547118334258 0.9662747109388437307370773864746352 0.0328386022028586490260394106646647 1.0333898917713091654658537084729122 GT 1 -2657975986827256241903740.1537738235851665502088677334062183 1.0317283665923745345532224265869778 0.0390434871899593283998573663352974 1.0398261230544362140317062046707475 GT 1 -55417904176829300862150917376137302686858.7399169944184189193848576991830902 0.0594891865179756829226805378118840 0.0014095106310835526267456516991376 1.0014105049256154229914564380426450 GT 1 -959357195500559998.8171048940407373207934231271167294 0.5134108226989698018403216988607868 0.0495497534160066138995480856352035 1.0508194628908021538075311858670959 GT 1 -14825845289634233688134203411314401646.9726808630115426071695791134792984 0.8865103079640805120650235355607498 0.0742011036508145701608375445893885 1.0770982424906834701817134264762606 GT 1 -2128763879450420857.2960574577574801830143426120807465 0.0706994456564925663158177075446650 0.0123994630690867997178614708069863 1.0124769778388088036224596155208327 GT 1 -122948078559211217652764.6534947787302846735669274392760227 0.1806906243070363736747472205506845 0.0050693107265533403421803067552886 1.0050822032715082566088338131702146 GT 1 -30013099837834982733023446063496189.9470527306759194716561812866719803 0.0035411022215443102485762145858419 0.0211909411342324128856369637407731 1.0214186923831263677314153032162635 GT 1 -79528442091213078886351947423031071.8787871877997037993068772360592435 0.8964086560202607800307226537956476 0.0479864788481265065477537170010758 1.0491760414010084169837714910669148 GT 1 -113725139344097194379220732866600901400516.0777916225251798906145153980705814 0.5007893820685235421652917371438755 0.0739022161143909375473507076300326 1.0767754517624437879333161279175017 GT 1 -1.9513009861832472966956485412672340 0.0163416688814111153988992309108763 0.0846736360895796382335972356734661 1.0884745954331599379489667846493051 GT 1 -13919053258228179155448668645588315.1655940911428991122717284481910637 1.0974539816830798456676108698386441 0.0859645135553737472871069455923695 1.0898858828499172228285444175371009 GT 1 -743117504420310458054297671078184874433879.5032373083374924204390417967799005 0.7246905664935519718623924176136283 0.0307635487542493511648309347230772 1.0312466811248788018383182990923997 GT 1 -2609980628611741.7306909754300069865468842848698095 0.9705615047829536383774185528628097 0.0692003798627934814376934531596419 1.0717112556576434803413126754832307 GT 1 -577497.6478630577391616570418571411977035 0.0311858226124949058650165943849988 0.0582602305424523690548136932458820 1.0600262958005060167116957719652067 GT 1 -64270804132523743955358461770.4165716597205329184519421495155852 0.7870058368485473787289723462272863 0.0228280196328967980416294798279652 1.0230926133957409175804030569955922 GT 1 -6602882571577662128600499931287233112011.2928456798899918414907034219548520 1.8886121529391529320213202999604331 0.0010600881712310918646474745302948 1.0010606504621168869341044801382733 GT 1 -122331980663.5783178260608620229228038001908221 0.6474500898120327438771638674261625 0.0163273875079502319932866601861756 1.0164621481724921051611450613102761 GT 1 -7672389312642287586.8906603280580639155925020015124071 0.5968348813132671095151504027838672 0.0609532702930854778027717628078198 1.0628900356160552823533215050357393 GT 1 -439476499570075321728206229484773051049263.7338761956994617113898835141828834 0.3163506657802859087467020136296488 0.0755817910598644608755343833818181 1.0785907026580721759503898946681717 GT 1 -3511329353172573239358198565.5444585311363173793519928404481966 0.0739568221334416840359874167980680 0.0821246538787148261785974736190253 1.0856936861206499418255830514286163 GT 1 -263.7507056271032542438907613185254179 1.4454322261786470648463594713912548 0.0990325236555734669084578768926350 1.1042861193123068602680126020046363 GT 1 -304375439282584274718367.1262837163825421741336471863865941 0.5944607105545205699601193854887806 0.0623076431967654035154766580956902 1.0643333615941126878060796654013165 GT 1 -361096447364033035512162375683.3602446833401640048653404112222830 0.3983797317681235579444441113204844 0.0492455728423101024549181338628504 1.0504994756947962313274846263639600 GT 1 -1806594549113321667879157877681843157449.9934198558177944037470210951986697 2.2198162993058784561138525996449044 0.0450843006006861838516452437400525 1.0461322152779864640159414710065356 GT 1 -79.0072625358001995405246608540867163 0.5328654893404141941137489904047003 0.0936301428522062065446338225868823 1.0983078253952449984532148450649654 GT 1 -137454087550.1233439973134488072479171245909400 0.0193351221057259164174236601009709 0.0040975445228433953990191827615555 1.0041059624615233025178458097983281 GT 1 -3539814439826066647734852719896624097738.7492502009171613064891319486834294 1.5122866994409495224004159545148688 0.0361836673330832507119582492779771 1.0368545288031606746695867911825970 GT 1 -1727897139964.7560773862113338101342572644816826 0.4116767071676466921309463051281004 0.0454924929507869427189279413216201 1.0465597709449967609310235491530898 GT 1 -280300671856797149931329275995533067244.9866409658117930083578771751973277 1.0724375187759648648366396663470197 0.0409170680738247155236425866434068 1.0417777303338301967994519752957654 GT 1 -2840937522748809371022067469789.2611105392075748776788199782589240 1.0526421954754598432354136226647384 0.0873646841146380667023552016283534 1.0914189131383519265506869161679634 GT 1 -7970.4721301939362616412200246544327919 0.1484615154594456569127265342698142 0.0545349134164070059139084391488531 1.0560783174420882504093566199960753 GT 1 -1358677051670668813380069673391657499281.6428481766347386539894125855819911 0.3821344149062067602162969973806771 0.0223381761164954898728872706345863 1.0225914520943671424273917410465745 GT 1 -1553456823950769195486885586473414649469.1712923700094847091340812581565108 0.0925965926103390847144404678108485 0.0695502213960495594995718379179616 1.0720871768400627336483276550509975 GT 1 -255.0877179193441895763594348183966735 0.0595819261989873901406924765493192 0.0486735980950949462209018465663371 1.0498980556544737551534787618503358 GT 1 -872644002812259101792927.7743378945038704288064255613195626 0.2446568577789971248157997954162439 0.0243197528937517047652278690023757 1.0246203619166097890559283416778121 GT 1 -352851582600717114115.8777406141358985421247655660534014 4.8877645789955966031013294830938239 0.0426316337533896223737020738448166 1.0435670438829424294069764281274529 LT 1 -10334035831212.2542697615028053271446182026577846 0.9215743854839131751265844060956545 0.0452924686281441903178797966707301 1.0463502352778777591356295093920563 GT 1 -30088748784742132.4053021787087561131645728928340039 1.9091665519844247773605683287504555 0.0972304177991115373865569259983418 1.1022879273391024981916772420252270 GT 1 -27125165738951883658400.7422301984077265882270298518280967 0.9514516775927571374469478983963285 0.0798586055683507641930073286503834 1.0832279311484689040646167399415963 GT 1 -1184234839618.5273814527817510723221131810968670 0.5648665217069176847889699368700369 0.0067930015003406215200942716589696 1.0068161789576680709306910714586796 GT 1 -197528615048627029319218524.4585250247711362257149425366593968 0.0252715228953731620009818539292881 0.0532818968102871348956336336688002 1.0547539036157221456992823255447210 GT 1 -21879039552473297009889934717944417.9584502485257170622940482328497689 1.4699261235416798944038322253434526 0.0985866882778972074580773923331500 1.1037914010044762890025086420659761 GT 1 -258634624644002.1736822299675095266933839643697235 1.8032406064209855694895832800404226 0.0456019607520776100279922829578592 1.0466744626348218628970857487028604 GT 1 -2180147681570566.6228069854492064906996151233218064 0.1855257285229227816151394332778856 0.0606127380588678712112944481013627 1.0625274652628119479352534949841716 GT 1 -21936.6907924950191149398417044312395647 0.4622895486226069436651225193151563 0.0016669659057048652002952831624916 1.0016683568393444777559476630006922 GT 1 -900409271535481076.3134928434135566880475408547149376 1.4619331365845809255284312941043474 0.0394490103584745308880879194290346 1.0402482116218952937526299970315535 GT 1 -250356480430.7090495345226926251548793784172587 0.9263462900072533143108729344628652 0.0429636744560134357577739582979353 1.0439139305233452941614797765714472 GT 1 -206527737218635786877671161.1302914820712453321027790538831969 1.3173872617165969443227650821924628 0.0716729190960527482162215866462133 1.0743711504239879306792439045143815 GT 1 -69959159692722921307541704.8879338439032420370924708878137910 0.6896027193597335486458259620751106 0.0094301007635774494670030547461011 1.0094748456853726016325023696914936 GT 1 -264273289024301041362104163636.9509918264146270660416143180216713 0.7037572266719522496732869306405273 0.0504619749461552297258505611678765 1.0517797020816007218641267299308730 GT 1 -451002239265670439557471903953587316.5548080531800063197126078224899579 0.0984131741093654617547988108283613 0.0275947936089073472428267883462450 1.0279826823884258925950761297732668 GT 1 -767525727369091873681868104521944940364.6073409426875229772416286737591165 0.6464207338414307408115359821099634 0.0013603078013717578423271299316405 1.0013612338599407280760742170456894 GT 1 -30240827067225464740753344325778394817045.8218036689014253322205022814235103 0.0940732343232800160808101604370109 0.0636967363326349044813626970502937 1.0658158553364744171947464011932413 GT 1 -5652837141018483201914663.2009657303842444032858109462410409 0.9216091936459810198785889938858821 0.0252802462651533949249840560560637 1.0256052813676277065313409561195483 GT 1 -1014623381.8003581496552544860212780340414613 0.1460851939030991202285469239247880 0.0184168731118800775688347447180098 1.0185885751299555897114281517576619 GT 1 -166365872177431493520158303212894082913.7372296519885707610824254092060533 0.1004371414198984842464820347089451 0.0559256752592910207218876912708401 1.0575503821004853085201618059951700 GT 1 -37285218271604397493417942480269119140574.1136415689878781095188055651343191 0.4959670216579050306586699075443255 0.0045061570750390075866749334754327 1.0045163404041337398045956356835304 GT 1 -359308726698292072754352214.7294038273039340304088590030188514 0.0695441656318219716951957961743028 0.0616530188210533003458715565252163 1.0636354824089299636098156777351386 GT 1 -32398979794451189024898571101375243015710.9540473425621309952243402574017213 0.8692103613950378345985173531749424 0.0702181223696056314355258581906638 1.0728052605260570220802315352890211 GT 1 -7605923352357934577575631309.8722695929375333388766803310441553 0.1955155841213086803654483256793339 0.0293078011168103917146701972870877 1.0297458548851141025397837843852463 GT 1 -36141422248923337335.0749263301985011267477126835939657 0.1983840101650158852851199009576956 0.0295014285099599245868874100014076 1.0299453483061079223665973397898058 GT 1 -994198867813.1036598290894976937177546546287160 0.3998481309204923073685237640867666 0.0278220112281593911108832746177561 1.0282163752649778571491001875159140 GT 1 -11228010289579004129320362989209.9337248719167576669289444397502640 0.0486195451990742139428222672323836 0.0130681146820864872953365993560583 1.0131542537660356724644349770705613 GT 1 -22477204.9440653182537269473195196716342040 2.3884915047814329323912540198914389 0.0901666026794040656748693837731231 1.0989583129606904597201829230126411 GT 2 -19802883227838307795898129563309240255044.3536596475028985295254497649016780 0.8836555775372077254583858746716028 0.0134074180588665355708499176205674 1.0134981090216986157706617365250944 GT 1 -3453699.7670606345973002615855357983897753 1.0612907388139386488514820899068608 0.0343310645990492087746660417704766 1.0349342204867447565098797780709595 GT 1 -455424.0019751152915443590419041941580280 0.1088338376669682234637831673978112 0.0071204013243258643451696387574558 1.0071458723631988417439807482523736 GT 1 -767287662.7439516497561512898605103756487574 0.1407501530267420149212287145861584 0.0397778871686680480489830839537463 1.0405906537489575351048644580804846 GT 1 -1119935126776797039085539324392.0700505193213498790642601310833461 0.4957085052698095386890710923568358 0.0401586536382058721744603182654901 1.0409872723843533149580096454083338 GT 1 -2288594.2663750805901259797236637964046843 0.3193030460303618108033466786244964 0.0428061021557801084880545597874434 1.0437492979742777902397837569747475 GT 1 -1639518348017879026131363839554186718258.4003480722152937952466628144814183 0.5116520493064119808786454281322595 0.0433324760653926781908563351314509 1.0442993627980887759513435374418726 GT 1 -150.6760484911761207084205843278775232 0.2493317926799616302766962816832057 0.0393197645807981680101041293441692 1.0401136668818500158022852513631158 GT 1 -9596585.2156872883214184909845889478807027 0.5271731478448279278884196570762177 0.0616618744464463100002734403702089 1.0636449199276285522368921513462062 GT 1 -1347840377666.5717400526974758363240908541868016 0.8178966045538831271417821744210685 0.0251928635945667466262277352929779 1.0255156363659741212202286216951565 GT 1 -2817885842414179298038909654099.6006844045060702378761502712245671 0.7371243295903648673705651622452831 0.0184576675938444359713050655443573 1.0186301358786862343984224768386017 GT 1 -155345910193877237492844846628.3253988346190252018758360805394500 0.1167086086295199774517304025154220 0.0096381114887960340531403071591409 1.0096848586977031600798716566383667 GT 1 -5327763678399437372873979706721004893492.4569651606724935091553636641844336 0.1100089753061113831030958592801769 0.0178616023464024379294472101178393 1.0180230460838692201233030580921634 GT 1 -368514111717183327090133142901.6615320816135268523678435584024121 0.7005881087960366771264525914217688 0.0755130591889577991697780134012693 1.0785163539323437928936201747730312 GT 1 -399.7111677100699788073737412146575167 1.3067596399460469375872675795552610 0.0388544137434698321500176093760061 1.0396293869422482526860910270881863 GT 1 -199776229111372686164445.5417864116263291170837735457173440 1.4727552777825102983170928165062329 0.0549151044201566388635775502009977 1.0564805189310324678957005911478140 GT 1 -30200521.5349697978059618670896244054546269 2.8632812930297544078248744016808793 0.0832910953559889657040598044085282 1.0869653002577120995780653159863171 LT 1 -2676511240941541.4308845032013768698214287802083066 0.8586536196311770244844809001554330 0.0610429910103022399215810024002105 1.0629855846455234456952410655652562 GT 1 -347028927.1384792592375664503218344961739645 1.4410667462454528984994457169026937 0.0431024564469617904443504004223839 1.0440589532886899135558892018647153 GT 1 -5005263493943953901349541418915.3622930907089827592712871217957531 1.9130106288833597287006432452409220 0.0765812707626067755184323683701262 1.0796724862067857721091801467220000 GT 1 -908634254760962.0046111054404598976391977637095630 0.0499625878474628423679712354404858 0.0239975429688686855930885029377552 1.0242901751222837119726764345172829 GT 1 -22818614915449922496292143331257127649228337.6929347227471364607149402139477194 0.7560863389836771540850853899109529 0.0488540597077516516927182722799051 1.0500877683868959671737845730964403 GT 1 -280.0502138227777996644169227003384015 0.2079582696283151665822610262245408 0.0275911593432626531517808175939073 1.0279789449970282779709513459568791 GT 1 -80678131008844277180020063944165406243.8877141461669733755377666487685339 0.9378508273521180655792237233622350 0.0590754015286178300302757457337225 1.0608922717556408956057264558276421 GT 1 -72610522818553253260722844722271.1421782656029524354144016211176663 0.2954791748193870178770147847279620 0.0576042768990264588523631226233812 1.0593300044005315000500881650669944 GT 1 -1.7186771714467275642195808170616729 0.0450488702184589932162407624187329 0.0833476580539701773174935069758410 1.0870270040796995683215964713294916 GT 1 -6297538175370179455.4940939427365546917593934972509185 1.3244570642458420245506448984736460 0.0255862865290697368615196081250424 1.0259193083663740098714760676440704 GT 1 -1129444889444930098449323.1524608339355092664463744935056387 0.0267856691095146347824613739149482 0.0663395801357958739893214756307163 1.0686424830256542169598728051908196 GT 1 -96983599500070362492657906801111.3353454496691269764395401308692192 0.0489953793886256182534876462973213 0.0485595672480420490083071244869295 1.0497781977243138842947412029088315 GT 1 -2800890288489.1248298890683978004997810726837960 0.1117836124372015022306706838291375 0.0859884913689205753375867673065179 1.0899121161071724173455037538701472 GT 1 -10001744268768.6769187140461447321524085800526917 0.6942217512775342210392561799119045 0.0250500855109639377424450722452541 1.0253691790585957267016121001187147 GT 1 -4139266306125988699171425.3351741630557080467817152649737663 2.0597994782076025330650877475316848 0.0979929437307033923529180837870820 1.1031329360351492547326469504706675 GT 1 -90676118736963850116270351.5306092287375430346914669518762857 0.0462843887035972411441385077182122 0.0746151935130773026487254332736321 1.0775456209637490153231062413822056 GT 1 -134055095896755653924649290052946.1689203844538810541286090613305828 4.0689173437845727753262585180642913 0.0104653757495722138323287981810097 1.0105205228888224777286646332526855 GT 1 -105.9349976982717736706930960124023677 3.1467858778103778434878576108800177 0.0723289046132988456524708568343166 1.0750780320933142045843806084703783 LT 1 -1575305716.6876709410009777842628289135797247 0.7622689178640934319979505810220491 0.0710315582945634685227255219264116 1.0736805109224385092054578828352131 GT 1 -777541920908240062036366972169588536.1229202261534468573312060817150941 0.5440071948126255485206278528903630 0.0369242226379966460532084344640471 1.0376231814303842550248878803312444 GT 1 -168.1339680911927495891454932617657898 1.0171743246502260815599153121521944 0.0467700537994223537188051491429885 1.0478991177586146119870068228253473 GT 1 -818969709403020151744260001555412.5907695813038470220199269537577251 0.2753090147815090723430675846165524 0.0589324427340907300497093707930841 1.0607403489175288969629892614031919 GT 1 -3942076466789.9444458298548632469798666074977555 0.2633534186932637481507090922253135 0.0323168534128152254037974286197011 1.0328505731948330758523398108674966 GT 1 -260784871697854705.6517392148778750816078394731484541 1.4598595092889641076890502181306735 0.0499389133178483088061824326466160 1.0512289946841347804230652490242772 GT 1 -13598516562443962589084219974394780277736.8857849820161401310684746929666539 0.2412062440184593281268004716432504 0.0609483831122272764595682490552028 1.0628848312231468133511097508647997 GT 1 -1331537199038024136515603487269.5999226500617210202349959008552339 3.2161380069881403154451578686747419 0.0993696197704512817803566826505930 1.1046603383618929488023796896128802 LT 1 -10.4159679108019700221249806063650083 0.5521752204571397054202123744846775 0.0170707918340844453169902168691218 1.0172181775361739756456351266112105 GT 1 -10994910040171023126734953628471.7494064214544641997465691500193160 0.3587691413249789976817218941806519 0.0394086356342501363522131412879731 1.0402061796255196771560121731411940 GT 1 -153.6207073013653246246992547629809424 2.5759919298211658616709086816873119 0.0777407703313039853633168877108716 1.0842036810248840163621216063809198 LT 2 -454589.8645821793883537023931290431960502 1.3636554194794335879503886586032718 0.0596187271682806022999496725039035 1.0614698765598954239980978742925977 GT 1 -101974257706387769261.2174482577865387461088855101243857 1.7841248002793857086654932059020172 0.0008016461605466864919748651572455 1.0008019676506557365895632691723785 GT 1 -123165655053886880640472.2510221030599732159987902310427116 1.6533505669645727345866316088616653 0.0965608315740104971437000621353886 1.1015465000200929051903475961504944 GT 1 -4869209663670355566650805355813102.7197199947296215054410526282710442 0.4979765706865945265143304365988039 0.0079948218708735080753191146033045 1.0080269518226554774782565682381941 GT 1 -244122530081.7221811635160246003607009582541860 0.9410004331237742747872194870697263 0.0790879512614818517370136604410952 1.0823907426847233455529156339004203 GT 1 -111961216052528908648176.0058114030588236055338465477413437 2.5386437850970566252125307583248333 0.0903880272153124916471057624362167 1.0992247400034953378144633904259543 LT 2 -41941.1556997132422571045481288953800802 0.0347562104286288643668058902673162 0.0349579720548822640387847153262758 1.0355836263167905019227779245812904 GT 1 -49154155533574206827566918779267411553946.0182078001282775668955095408377343 1.6367372480772255140032811777088827 0.0844004145840512495166166322614356 1.0881761437042334057879448574667963 GT 1 -12177518.2354837883184713742292471759988592 0.9733532312650165569315349196169139 0.0733883085372793886891423136746628 1.0762206884850604916648333993492481 GT 1 -1779886.9332864351954220855525042758952562 1.7481801450206751422402234696948092 0.0263020841147581759823508283202022 1.0266541714071919591853617661627348 GT 1 -339726903.0487833317311717007952862944158400 0.4191736108571893211386564694838907 0.0731430302400868476864405935000395 1.0759560189994026604273676743900642 GT 1 -124.2649727775982583275863977634650009 0.1116335855178372951964028656105186 0.0454674553595583748056575396168647 1.0465335403887464159489588844538155 GT 1 -12882725232078865458612345519363326.2123279173875177618663577838517141 0.5925018810905573613550651227511597 0.0508229636499923322588057277967226 1.0521599473490709288666667919202653 GT 1 -791653755917289167659165726623449106.8878795783700236779466858360855998 4.7660019059266297014170615334061768 0.0143668010188808325974552259865194 1.0144710027390079733047276388325588 LT 1 -65548925429469523778883.9761257489215961881780002863871569 4.5983081220143731178208754583478166 0.0798040661897253584487144556833029 1.0831686600813613603174503350563325 LT 1 -5899198761890956233898.2358330526598956515637717260189013 0.1131548895289931829782538239752143 0.0520912456129726410067352264489282 1.0534970320061015950176976923511333 GT 1 -601493740573609449553312191310328.4429011510310594308515636963448912 0.0147120721244024382000122529051029 0.0560190975661511297103683107874311 1.0576493435138928570520358717706758 GT 1 -7.3230409491933703108776069455287975 0.4951512633614880742467942328776946 0.0984248956992184268128316189386250 1.1036119294364115877649627999434019 GT 1 -1197978766175637136857676612222919.1977975103970959738723056337691872 0.1663689715859984083557859253946867 0.0526907062785854199674184718598741 1.0541296354009483762536354050601383 GT 1 -271116396535869324120841027067673276.2597829442700423736285662914202201 0.9876515388849715663591066896272995 0.0375944250451625852268326787941764 1.0383193215757303974598678491220727 GT 1 -57605274.0402548543530941433376791385567633 0.1713655463520051435464495382266165 0.0805078685959822490059427895900735 1.0839337924468967660418731698125997 GT 1 -14267651708889.6393791675816910407880091231982283 0.0136187535151182201100215410609311 0.0980906778510949677743259719134931 1.1032412937413672151587038733648117 GT 1 -398255716294180650.1013314954078463411485885749245116 1.3760155089055159576122715325185507 0.0087098114115397857918423786014650 1.0087479635122294993866835806158781 GT 1 -11.9433207421295427631575120810361282 0.6726338077921123407767374620112867 0.0078667029800473895130458184612464 1.0078978087284522812568591840421411 GT 1 -2092.7536663315624948742045951278176184 0.5308839526776020390209234050451077 0.0729361507550643021015370128823096 1.0757328385013355326308466380818820 GT 1 -32149872.0939690001640336191516612001886141 1.9931707053470326403614866273703655 0.0632147790270655687518938446488554 1.0653012428980789905467211388759342 GT 1 -4178827467788058890341.9535133374508721660516865444137232 1.0649676481633762883974600544872142 0.0973252318238897935028438591889967 1.1023929585740398918784762848273117 GT 1 -509.7274769022307721303113282766795982 1.5845103717405216021936553815344910 0.0715022083853767243465149921498145 1.0741872766363372454259809983480774 GT 1 -159590757227794882741213.7773704414190554600329697416507203 0.1240247819589525883201895126570928 0.0622259065408827173800345890811919 1.0642461975118940990903521686203948 GT 1 -11600772526795937971432271380.0767545834715443394837180024907246 0.1660170112195257604157771779933010 0.0601582568608234488590596109726985 1.0620437762545256147738429577642226 GT 1 -6725943035214080626026918457063483348.4365215485701489569405338537447383 0.3429121047159314926557080323409772 0.0322600706296470596221727723646515 1.0327918958091081330286578173509479 GT 1 -11835712661.6144909928528769352013106463334910 1.4986056769350157425174780849778698 0.0347247517251727154074824299045692 1.0353419869410076182522524096265612 GT 1 -441379316452174.7815615511710532868913660116531243 0.5446048644236066723496192316834406 0.0575370476026203097987843220033827 1.0592586682337317438557508510752966 GT 1 -43916674446.7771864622896278432983083862294101 0.2332125041991613346230633302195024 0.0146115084290566862696749037166506 1.0147193078820778184987181430056721 GT 1 -41590451634.4860487737761748078008758056953745 1.5726942437389388703489187590898767 0.0528913088798815818584546453797661 1.0543414182320353892912055838389752 GT 1 -5.3748509220720350114094069730247620 0.4158756627393769267702297214355550 0.0570996889907071256741308344785806 1.0587947166672117967644148910624255 GT 1 -29920206248943933518743945426094.9755662886628246402485154449337515 0.4953332866698697718034910309105842 0.0191014633870507428314160228388771 1.0192862532949768347014962097216439 GT 1 -28326905454022064563517495.4742946252164698073260584167803632 0.4970445788839725357116887762697658 0.0041812857139289208317766372705533 1.0041900517330600658433943554183525 GT 1 -1255426601.8373095782853645405382580962344581 0.6468120386337740988743885391096506 0.0642319105613767746020596104642024 1.0663876008978096491049156016151379 GT 1 -85137059536136770424428.9370916901352452984053120639864468 0.0117765659640659344436104204873507 0.0716515691192428175914271192920184 1.0743481523538616658413612304913805 GT 1 -13939662877336131913203618213539543355782251.2024944496060395357630435964097809 1.0932188756005813007988829840306015 0.0546511026720211994865712583925024 1.0562012161055729306229420109398770 GT 1 -1036370402890410341412.4277787863452153278774587321043022 1.1075572787284927852806153174972335 0.0029681255194264557617553207414083 1.0029725391395920133740524310248745 GT 1 -1950.7688262277463070838183017151482541 0.1264160434077541527527047919268851 0.0735815482288978402399237304259175 1.0764292546468410117766922417226965 GT 1 -131739400344061018773.2266327128409496347566485495215496 0.8176831352467336681945329364407940 0.0047450086958498497258757410172817 1.0047563019882875286230485273033963 GT 1 -4.3350770662765121980930500738757552 2.4213620102535622002425956128633512 0.0137225611490621727256621931252218 1.0138175858139401515762031467632774 GT 1 -10510056793463914241009831291779.7136109042490148840727629414120111 1.1642753753289552702984004717069600 0.0801613922188741491557427844895688 1.0835570506529117746682483417762342 GT 1 -1334428688066.8532725177742198767766618704002333 0.4596508342813552458988084959746301 0.0774055118630956928753298110352364 1.0805654821479903278613152694222324 GT 1 -728758553549737590252114637301399594.4415483384206356244129549655353259 1.3805587893274383669135765735560624 0.0321636410588064919729675649280929 1.0326922566768221462822800926692687 GT 1 -2330064336.2122698406855181862517746601492641 0.1180267844224288585926353201779014 0.0915840719692396879299430068475251 1.0960529347446574429534098050670176 GT 1 -17.8790435372030777633253746018437343 0.2834450716968142363075755603387350 0.0956572040398841667147912803588663 1.1005467913968335672763376578639144 GT 1 -301727956406450157028204121504006052.2903862946006084448864855971433442 2.4074250043230429690076010409681427 0.0138083906393408569337639585699922 1.0139046132787418684254940580578612 GT 1 -1198059555588861505.2804029187907892435503707876377440 0.2282734816241832061629338610490733 0.0887557542476011921687156683085216 1.0929443103542149590677870367724085 GT 1 -1777795495947865140413244201070.2839113047497381678401167673346417 0.0935226538329484661727043824639684 0.0328155418143838972921303077516658 1.0333660486840923469200805456435955 GT 1 -2480791079346518.4225848699585501146866282754007314 0.9165937167741377649691605062470154 0.0481592753300076385211332361608347 1.0493575642069005416019747769207020 GT 1 -3122494270190636592017189726133138990840964.9727067913274525796474599041838977 0.4660945073194758941608417131007196 0.0128294830162196584979649216343847 1.0129124915689471000534588890557533 GT 1 -408527219.3711944344399156453285659584243448 4.0573589629969499091823926027209851 0.0360620186776940458514777358630979 1.0367283211690571962906402015986071 LT 1 -621396.9001436657960108741553986809756133 1.0316196178231506398630108800945024 0.0929359394059177303217646653567372 1.0975422022606964587816225590605379 GT 1 -421835584775380348253860234786.3758791766668025662161883281941799 4.5932672474569361769136230570934062 0.0329593558680795368443470860561405 1.0335147532519198860663805303593021 LT 1 -11542568027647820027707081.1067913815649225049121473453936531 1.5133100657282356645701508350480651 0.0096420135998055066241761139967826 1.0096887987914629121178681392823576 GT 1 -42206304725427125486.0029192213036662643986767803532815 1.7683128830709155536726561430965291 0.0357369408401890763846935394879153 1.0363911386515085220924902286287033 GT 1 -151398551703415843638947493417493100059411.6219649880309385313170413781337723 0.2065561860044189156121868727813925 0.0037043560683629443508311476720146 1.0037112341865566996913087403619454 GT 1 -496572366266389706602.1393442027000445082623016638229853 0.8351206235920514043131510874500321 0.0614642743445100956957417585769860 1.0634343569187838142265504574574597 GT 1 -6970039537303246403593.4275777572922842800654824722708691 0.5581319719618459893502118650181670 0.0031650385433737879747982636242576 1.0031700578715738974769727068051454 GT 1 -2237756235744139855397998562220371.6787545816666343645357129374844360 0.0190753335767147927167856954495175 0.0041704665430102192304264733593820 1.0041791871931684777308954090999560 GT 1 -292820830185979442440717493686358435124240.5148264696288874977523972378539317 1.5901303214968540421093636251365237 0.0444996874966229846132018174465820 1.0455201882444300332604019169954659 GT 1 -2.7570651984664825185045952698287736 0.1570705218508049991369728263251350 0.0069881142517548017917587073104186 1.0070126454736086430830144418175277 GT 1 -1055829049.2476142114022441739834574986703091 0.9025774823271430133074765164989839 0.0824082628817126246709696797467532 1.0860027180916884043264474781460317 GT 1 -142159908153773133132070221754.9481046426701705095762280442830226 0.4559445100873415579002168880197454 0.0462128283869936175481847809315814 1.0473147229746536695776202967625745 GT 1 -19730363631840792757301645492292240745.8601096235843404603088228209052101 0.7972621939276036678579094680301036 0.0286004612378857628684589132471921 1.0290174238882764889704628487436326 GT 1 -1559858957870.7306580529698057590041240490382415 0.3429414246889239095232640793202709 0.0558210829911946406956607188167297 1.0574396000656493016515614926187915 GT 1 -37020439802716426571.9169436134745062738175899895905231 3.4357757206971363242314751537733901 0.0275922864999187671065012155217519 1.0279801041363349698180784779967739 GT 1 -25243720607384882959920026.4661875717725195053674303796211671 0.7776487898983332431545379235290234 0.0718494635787319044109383044309209 1.0745613433803303860561172783610471 GT 1 -49151798819687792626482717.2151043362144605841313270425410752 0.2249772187253037603259974229674220 0.0305339086212417595858531539665539 1.0310097802811106741000180074470049 GT 1 -94114369852685479196114648508427462.1274135720201074569943164662917665 0.4266093305253808721018261904068463 0.0714251294911034432906405221043252 1.0741042654587030814052137591601541 GT 1 -13010854048753193067163616445.6964334697500052562460222038100368 0.0428557890056372765890380863809840 0.0748713530652817864966062808374617 1.0778224733728649821969982733153608 GT 1 -3693060711973147970411372731781832.5837386118686698271760499231465656 0.7700862013983456097266118036241448 0.0981476314881963458469405369082531 1.1033044435880628098287816428534049 GT 1 -3762318084912610258.8386926101306931524750338998893426 1.0532956171944682408321094601351996 0.0346071592564248824477315155639603 1.0352201716278918020923925068066538 GT 1 -28685372079.5929873584260247155267348660470326 0.9527672285941955130146956319330917 0.0599172736066446077060889832767787 1.0617874007890169201079386773687772 GT 1 -4679.8337678923824605544447361283849982 0.2534306747567835724233424845300764 0.0343143576670504141733997914826089 1.0349169197464334523864457384938154 GT 1 -4858351618.8541151375779298100676328988771285 4.0085597650938918779138541152122464 0.0931339267655969550392377406557118 1.0977604988276624453647965165071389 LT 1 -3806991383366916479191.0771812712208776932908777351190463 0.0179638825469970041191032634660677 0.0641043106909784814130984728269919 1.0662512517606998237553045083917561 GT 1 -91752306430707492787388236.5323187010384640941278477381814600 0.7146491309920084990239991527043722 0.0801568893060078636496930686071927 1.0835521553356174038908286453364336 GT 1 -2878240619398797300701833447393.2679194391768619857223864891438512 0.8240738571195532343505505639117296 0.0468052305529932748157788543431845 1.0479360211341176558834180156587281 GT 1 -534.3514471541716029609376393411511312 0.7685890251976906467744914720259225 0.0984356747004530197032915892085192 1.1036238852519827779382620326504504 GT 1 -313734719602123227905628723642.2365697114212705223254703464435778 0.7704999267630728969265299636212540 0.0810310254325286418265001696304372 1.0845029171882014758621232980620157 GT 1 -8800395215345177250458074504.5064019592389319924012392865938257 0.0560513468235533911982806142814443 0.0867937023357075054917257270214696 1.0907934680906474542074823816235636 GT 1 -6868687034544966524983326706646840098380.6668410917235877385330582465880236 1.0110778667084548941517289602313161 0.0746967576981685967352149562935911 1.0776337656785727652221232718104174 GT 1 -403894434959996439100475522121800680.6399118819940300373553676561405094 0.1259512328136606535110192555261532 0.0339211360947891286776622080196836 1.0345098084485267922873235474077821 GT 1 -6402607490061979333371307.7066348166145166366942413293132446 1.9049524172000651221032853552977116 0.0427044806074849564162922689538530 1.0436431375040493710232955256156443 GT 1 -5.1084785994419109967025555413321818 0.0535590452474054113534575412893952 0.0167773616329162377661261044291436 1.0169196958051071373363732565452592 GT 1 -21586563621186465117787714031380.5066762525843082189275921960915486 0.6784569216816665857313476611650128 0.0480970904334429271740443002265850 1.0492922351410867345746557191539146 GT 1 -16656093261431556532.9394628236585490724426180981363323 0.4029658569595838686473855704496059 0.0373333283103142524441189360378308 1.0380480624197123039904631128589822 GT 1 -6271551122450448589656139730337439978.7043538336592441796314928736280413 0.1192048650835768111109340767124546 0.0923934990795673875920894090705707 1.0969443633427015365913575151190927 GT 1 -180597349514853782557598.0847856226402730781238030073989804 0.7446653464214558785829432194780688 0.0395346200072823686130563653163278 1.0403373411579239864317543207142714 GT 1 -2574343431878052750961107200190.3778699295444920114110084537380576 0.2948302458636319149298144071283117 0.0820176763006788176049710362422883 1.0855771437765285221166888895674800 GT 1 -4485493404446769330028959242477223165969610.0159716040527813290653171561113656 0.7674957249624763208780434727405875 0.0664234889342247254960018721757517 1.0687323578531015743125549957083304 GT 1 -7577839793350657.6531997845153132427952860234635058 0.4231206053327032604715020518196614 0.0080684652239914729740043697577380 1.0081011914419666708756370965758601 GT 1 -7963638662567.4494293096888132507235084548453000 4.5698185370462443880549082531068287 0.0264030497564052852583540510170618 1.0267578697668947221248370274671546 LT 1 -114339793668.9295828201715667992857316202062302 1.1137537003745576888203610387478256 0.0178443059802709652351410497031946 1.0180054353134604108878922809704001 GT 1 -29447701001315701638058389.3076324190443658175281200008217919 0.8979847707117055364616775042203421 0.0002276795838776656709344422382338 1.0002277055068089458264884515121082 GT 1 -204686450757128279130604449.0958830857084709931204839335650300 2.8171423954888489516869629470512738 0.0440550591382359804247467002423793 1.0450549608301227578852833292130015 GT 1 -3906713990935217223062305159104491445422984.8362863958411613404351201162871041 0.0682833671757437806625768993577283 0.0306260878298234390552501915253641 1.0311048672490733777570107854342314 GT 1 -1828688291344221.9901229920023652103049656385888476 2.9508069106229777975463078082672669 0.0449920152534444331188978079635808 1.0460355775452020346898322840906711 GT 1 -8915557347225779701610641228944370941.7328819556571489119942180292883522 1.7488613962783059521293089628880884 0.0349349876565994318603706775846860 1.0355598096083860987510940373912152 GT 1 -3689566179233090511073.5928854794147221724480161035876986 0.0081598714887974842802696053416596 0.0737767036145835177108283210068112 1.0766399326007430029741526008407332 GT 1 -6043001225725044161.7829952146299009664274227499127108 0.0749452399808878608897811904591198 0.0289271720436069169022986995763121 1.0293538104587107968812221068198873 GT 1 -79867538801309877548967.0725532921384072041705439975934384 0.5592489349622365526659991226177096 0.0271103607938926263648136844615060 1.0274846264498876669272897858487653 GT 1 -7125479786366416728.3732343709439892909561124726714548 2.4575191476816347671027832517729757 0.0502953970231496416130202428867948 1.0516042869756271886576354307569341 GT 1 -35478043858149286667488846207227645.8562738529981141335370662574924516 0.2469861957221146257310464688765391 0.0887287847031001858037259965775507 1.0929147143973307881482764320270944 GT 1 -625435024916714558611512802372269080808.9334581284136900686573737990634388 0.7458373671046628440145235556817463 0.0134785107587421060625692154815092 1.0135701704406957775091845082351745 GT 1 -6714838904622703380.3135147836575252275518849680404817 0.3080553425156748621940344271310936 0.0896533084616085387073409956997391 1.0939297723130666757242146518869744 GT 1 -2228212603379167771972183391019710170214885.8568856446676457875113220100940958 0.6531152088247006224126875783413439 0.0342010653115172700581885750387213 1.0347996085786292752049731183499946 GT 1 -454021087404138541434387401274873292.3069795810982606180370511846493605 0.3004674741286262068999844693605057 0.0291732501749366304261039482509409 1.0296072510953558961948745167327738 GT 1 -1405807704797273254135244194209929267.0578956800696174501638297576910271 0.6675500971267975692928070144355792 0.0332680979306721986134633996900219 1.0338340690533801015305384519561607 GT 1 -7426944546261516359.9226280136184613355390817061583007 0.1091601207363181627439925760146872 0.0932803426910711576705276647349649 1.0979219645067604395071930626941358 GT 1 -4140941416913278978533229.4173427458548831668868763495406534 1.4140323297876693556791307050425240 0.0329195238921813052968600748106602 1.0334735645430153211317700421350830 GT 1 -37008.5459709183637713509489407334378188 0.3283961307399666319721687993019259 0.0705903735655384257126927644609011 1.0732057046977233605108442005323544 GT 1 -1194909464620685647348406392.1766352042114698855342020981425692 0.3211516408564244821685437573021944 0.0445089543350792787792680819283780 1.0455298867063479868298880917209338 GT 1 -1.7320571307070088286719830499109005 0.8283439201914933798974578524048611 0.0271894569875716109309214883240946 1.0275659300283581872208007260537756 GT 1 -2805707.6170914493245712522470067808678615 0.3665608232547232397568381567145254 0.0499615745180440546850621733510127 1.0512528473298007018402764066878668 GT 1 -9389635223938280013440657714406582.8003842079592011427048065441388367 1.7205542771958387089233563507008843 0.0212054434456563979212621913835145 1.0214335087752805455543827375903281 GT 1 -25.9590189553336299458175360107211339 0.4780001390388796809761643172436508 0.0177910675134754283049727643905724 1.0179512310521026201959740955958872 GT 1 -3646384309561859355305830881641382646539251.4179644491705094233850927750735539 0.8020915978478836947766001104634564 0.0806702003424198642785151968703259 1.0841103530416092764544644422187135 GT 1 -329762106139397198846.9104845438801691757229651080954411 0.3932254037620742014591965307131261 0.0635005231979131603778112795859781 1.0656063157718425495147815673465576 GT 1 -300038704639784733525166.3578065068223687075355091297943627 0.6696296620163326320409155700739664 0.0311757171521513229375065552858199 1.0316720221855227974854757938150180 GT 1 -9083642759299648252037795613829.7315513196567712634237985107718257 2.0729184480093907908965198941844144 0.0558413888180576977395870763831197 1.0574611066306152536024644505895983 GT 1 -14769189486439.5136398611873011025649078222512360 1.4488962840414956546751093768947703 0.0475921954142575788834936956472088 1.0487619697518687871926114122820062 GT 1 -4598949057930.2426610042257436550884793076820473 0.0410235334787824482880550686596084 0.0917321515249169959337254774048484 1.0962159565736849121224549468920031 GT 1 -1022441324589136.4241974175244536903690594622860378 0.0643430571096065108440528046689629 0.0817672452183475849431256913025861 1.0853043749850957281046934009905656 GT 1 -15086141016.1909996117486605937167404712883560 0.1687416058083304896567838551777393 0.0414378607096711188834786927399730 1.0423208888739241308673525986365952 GT 1 -25988572105254358916059646965647453593784.7366246091566820263483442794530976 0.4415931850831897590134081015606601 0.0040047538020672464343675539706377 1.0040127943025709251390689112546350 GT 1 -122997839557787499059503734117588057.5683977434938787074412578498544113 0.4660340204227020329685200952524316 0.0115204565515731159992239561114302 1.0115873311243693316174957164093029 GT 1 -520026231190517126602.4203266048504240290082251738312311 1.2525459216056627191620174712112332 0.0226393744567967752424444663718694 1.0228995798529743727708964604466918 GT 1 -1153293232783.9178023553528039109046285238632547 0.9471762865929983285795812905088809 0.0736065554914342287312474831888551 1.0764562484961228736127685296815731 GT 1 -833557126138644904751667538313247452910.7469986356796418392281502585518374 0.7967606001793289983571005066611817 0.0305690661643191557358659450309255 1.0310460457894115711089392790605447 GT 1 -7032992225974014862512187081483625813925147.2128389008289145457837756331243985 0.8059066649211732788539625354809537 0.0434857355451420284006046850802398 1.0444595770349242574512380961969933 GT 1 -123601.2390984091664981056809364388342067 0.3424609982422340429735355631625387 0.0307688334339198328137458623327252 1.0312521335550581206562557884604609 GT 1 -414015214040286576634387.0696154371975968127891597914033641 0.6088404269572379462574126332665492 0.0282391922263243794676782152368454 1.0286455873423445618924369905484842 GT 1 -386989666926133619.4138022516845358477694758110646916 1.6352685130012130274918096339604400 0.0875303204815982821111068000893363 1.0916004220025894268892362896111830 GT 1 -1774083257878237336143155943926624.6383878295838896906643393567105361 0.4671411166453016892572293302634541 0.0751710286239628478492168125789283 1.0781464543747389140896702352902841 GT 1 -7082880009280.4371273496174497046716832558798326 1.3351284393136685432222250174257797 0.0217833240087450513534269716590814 1.0220240833926096355627530130049027 GT 1 -5206131730995562147.1426415579033493827586422624337384 0.6943162556718045995624065874063511 0.0583451048063144788752797962883302 1.0601164248271115809152492449137075 GT 1 -18874537880347024915311337116734653.1180654441088903201034759898786180 0.8571888817741765255146366118599201 0.0261148537457462502252529010648729 1.0264619019494949578799617870021715 GT 1 -303541.3845399730967049764965088721249684 0.0928857721955946249830051739743967 0.0520040954222451211508221059749178 1.0534050968021061686739445205452406 GT 1 -186102375927821.0556471611233161185109211258004450 0.3161617620404618336309875892077686 0.0972133299507785132211380901204619 1.1022689992682520450753522129163624 GT 1 -1481780149130374742998606386580204.7628257890612756085020884719571552 0.0001155377196995246806785369300447 0.0220564760205884713642298746891843 1.0223033570570292086975524852193766 GT 1 -5988745853374248498127400766330360226348300.3274873210777285529780279513128808 0.2383160383076937456367131427542217 0.0317277242739127161714969912070405 1.0322419546798635300501126522198168 GT 1 -569926657813625376605809577726972476.5242406963548684707762868141101485 0.2754146968058778549994027871449404 0.0602931835333964028820298749407013 1.0621873497441438111511064861943736 GT 1 -109950634652926.6575597697157800710916044090997223 2.7394690179110227699634207526538377 0.0318472442545761210663000074845661 1.0323653986334095703558233000281058 GT 1 -59687386794186.1837624640418585274789358448099735 0.1686730767628836424565623680508681 0.0920398900810635599574477426450511 1.0965548331532125924309783287980368 GT 1 -196966758195125618.9801489362795873329516934846090967 1.5552475727152800927444687296003400 0.0148454666136355306418532789517632 1.0149567634288129391972177797516084 GT 1 -457268021476822236556427024116414436435995.0627925262946535417063708099775016 0.8392633032881299978734425177642477 0.0047944349763615454279247002181823 1.0048059651482679920215039987354564 GT 1 -234979607247583267439476365091139.7719407265498635229608761117399302 1.1747710131991224251090259995892567 0.0914854010619911455094860634840247 1.0959443219981809367030108708112631 GT 1 -1497614330577833226676.9978681857398959196835117414173776 0.9365286804752765054991658204942870 0.0470526310871396219232496130285732 1.0481956035971006514322109450269165 GT 1 -29940404871025900090491715817225535.5692214911088908281718176929728326 2.7629228704207884559871583545070461 0.0239995053744675021608874874790708 1.0242921857807175547457027267582492 GT 1 -351270980766359901799748259175.6855594673005797840662097803555564 0.1401742209203290513421437624499920 0.0867001066551703090744611524194554 1.0906909820645065752844428280824342 GT 1 -3908817471455.1800075877008898147580874369379163 0.9250732407247522120280094730838609 0.0987962958278804486809988575413918 1.1040239601660505610858798457164128 GT 1 -5185770359948874882059275349943.0923202109791654040886802126401471 0.5712985955629313154361704248483269 0.0068260147130308224509572393520223 1.0068494185153991438547624206164624 GT 1 -537.8627347374273364590804792515079700 2.7571427106588922334833763699133148 0.0722271435410023851521205793669219 1.0777784691217844542126340950949230 LT 2 -114011585530360023837699890.0447198458874013904029067462729249 0.1474985438901259460127131087665184 0.0019929188217910592575216699290378 1.0019949073268982541164673281995108 GT 1 -1433128579013885775712597183125302570.8064243186227684515569882839397145 0.7838422516873599675607553167083163 0.0943937673605549327821502887674832 1.0991506892253590015086603355295387 GT 1 -2294541439220465917515088062305401.3953699718751517399061564269506109 1.2624018047284820580198093251628307 0.0540445731363803699569486883727260 1.0555598285206396357105436423454263 GT 1 -1727775572191843154504245188836839.0649643298851024418431324580875220 0.2678264642757431287792471861784817 0.0553063578155217056090113209603029 1.0568945922133104906417173466263084 GT 1 -9500590893808.8291073209047125078954451515188113 1.2125724747539706162175125461873572 0.0089684064308886889067282868753726 1.0090088646667679056063004132498811 GT 1 -17373.7299314458161265798915489491990725 1.3887031340613513312459828836943859 0.0298938054045011467746430623288998 1.0303497345126612089599601142836159 GT 1 -13108423924287555385645392155555660634970.3168212625111250011025724118526563 0.3072397680494585902164659630125630 0.0137449802026392916289194881489483 1.0138403170531446482892799575639460 GT 1 -3.9653102179162421703815317633447555 1.0806621053787135756048773986499110 0.0661439863288958525737145788359759 1.0684330135890239522336828383489497 GT 1 -101960554324234874447958696444236079.8739883925409469191779552852280087 0.0662530187409220654635082936391867 0.0653723014807210888586357304096903 1.0676070123913518227907933752890997 GT 1 -5063300935638767728585696.4752736718417765872391345607698819 0.2655124442088539155445640671159304 0.0988362911061773873267846366759467 1.1040683409931933120438863816945718 GT 1 -9048285.5055432079055261238778353726230541 1.2002237080188645882832532119014872 0.0173148025778047179316794496888682 1.0174664568978636558625119197924305 GT 1 -11556318678726230283974.1651431284724325951129086651952142 0.5739730703747750710360219831402188 0.0385764054418934723677102146189883 1.0393401819489628945905787878540560 GT 1 -2873118321831703387760682204464559428.8821686904925120186653888276247709 2.7527732969359626929876047849688673 0.0656227683468844668673906674832182 1.0701785441358883158808821041792514 LT 2 -5210531576355567342650944457544879750360488.5385663203654739765920063550456917 1.1494999693556172949546085170782432 0.0193507019413963691212885497881832 1.0195403776668442805191046608918664 GT 1 -1.2909364676668131912061875525594700 1.2110314573601457717234545198264011 0.0528401066834643238537070714834772 1.0542873581089352058667747035651386 GT 1 -49534714479399807993895002701256049310.3566432092940564895034993413572492 1.5378142233615966468121520875606810 0.0668087795147620354228846154663143 1.0691451468460719499908153881218253 GT 1 -15380.1126240872383464371772451268146236 1.0435670224351665320964588485078484 0.0436301412741069914105550810831416 1.0446105592376508532042532952993455 GT 1 -15549311022720080908814262842428.1542550272709410069922922236271954 0.8087909912194484195038472795112220 0.0674133475575856046054096436048813 1.0697932069101929685021874208214294 GT 1 -245355706251910874054226487750818857578857.0716571655417960264620752582512958 1.0922460819158343339889734755827411 0.0373171584487792750042515679673022 1.0380312656132892050788209836845097 GT 1 -16390.0973569769166054568575790059397781 1.3353687496147043118634107064919733 0.0932351385711746809949224605463460 1.0978721111780567540643782619065307 GT 1 -324694.7194670895455752739073144697911916 0.2826142952030928381419742483065052 0.0074918959026798375785008473012357 1.0075201011167774697482385717401605 GT 1 -54345822152140709850705343254515.2732110482491231430883546433254025 0.3491766513622934472558450974593185 0.0302961338712467578311710288658007 1.0307645467467666702881854330088159 GT 1 -1449513.7622528750292615191336003839225262 0.3489035855009819140555517437810991 0.0142024503726372623956286807751583 1.0143042703830879725565325361585075 GT 1 -917064.8224045586178153035197691206885730 0.5538325638090162631357551695479389 0.0280197466035248151529924021899825 1.0284197901637843539481479532389209 GT 1 -5944063196.1058115059311361064018832465108221 1.3890784694827581099222826029247778 0.0308324476527247118363030014594020 1.0313177693999511448153826189322461 GT 1 -28061335472794421780635109.7062213079678452227891464075424474 0.8156102895073159910104845973459497 0.0193139600369987793751028746396995 1.0195029114531992960049702583006282 GT 1 -1702255178125620489945919521786.5681432825656905075218543103898625 0.0416066291557190050181435422370665 0.0217230482583446079684543014938116 1.0219624672957666747692108361992335 GT 1 -371016085594390096954357.6803953308161591326627383768458563 0.3234659820825406699880618788329400 0.0434284921795649532014144365371489 1.0443997330212122348064462994731087 GT 1 -33494154189.7368993230472829626582641840442830 0.0851695934476747792622689923782135 0.0744492971104010307477040725328569 1.0773663641476361919777081186932018 GT 1 -3561820544390513628315547822508302694850.2431188544962305932469059504452098 1.5573532498528839087808279974933043 0.0567952668075560537693353002515480 1.0584719115437851821397866050493519 GT 1 -1196237298356380227996526914121532027364.4147943785237336793128360938832147 0.3070980144230674758384445966447056 0.0969869387528536337407189504347726 1.1020182613872042428181147505996857 GT 1 -391289176999264193408997356.4261968764307526128358845362611079 1.7314566502946423510685588204996744 0.0182772764115831523996397669029098 1.0184463693697086151487242454451845 GT 1 -2335741002418.1472670413698726019079023779015972 1.0809721789314470465057675817503019 0.0488655407851939229519196044046041 1.0500998392440055560669502189916762 GT 1 -2297132059207805802476542.4029463144433244972495195558768796 0.8639394848102035271685066536264746 0.0241560565938882171442482010365978 1.0244525994045761194601264325626210 GT 1 -60956612822488.1152226230376352852882077349918186 0.2823067076234072419659486868695761 0.0639060272413042197947786163955966 1.0660394092976417951416159343318959 GT 1 -14379447322510106936317304.7288209108433860811150312989995987 0.0595997512841903849258712492359534 0.0576191606594650849505945488072028 1.0593457980608894740520318994877909 GT 1 -335530338469912.0593193999732277326915688086545702 3.9161193715463024031174821026676634 0.0978794548285014121859601009123097 1.1030071257518178088265152665237355 LT 1 -3927447664370861104331512165879075.4646663956825015552332860162487620 1.3622668509853128650417341568026923 0.0583212919091157747236143332252650 1.0600911367983115393267400501176059 GT 1 -55320885538286838057090194454.0846288244955937491458895693966386 0.2707510056173874826546986746078326 0.0783731082672061882606699579413337 1.0816148100686578691251659779534020 GT 1 -9981846273042237840236259005617732264740.9476466848405365779981708904418165 0.0449748801944692820966911726191349 0.0295275844623773316573324449116971 1.0299722997160916899968084275959252 GT 1 -21652846967715451053188050468208488210263.7800826882364685777347953761295712 0.0540430050344035978815402033542816 0.0123174357223789300434569003724705 1.0123939240763331012053491702364846 GT 1 -261299776689376092461.4303472363002965482313332348564604 0.2218061520064010677078441705576642 0.0126175640033052816225833148494315 1.0126978414493763160330410920076181 GT 1 -86148469381936813399141296531.1367651683522161909812497940711066 1.2074026257438894571318473220591604 0.0751503147456262766441628834444705 1.0781240571023660232080325175614238 GT 1 -18856227903288790.5534627473283284097852134519596391 1.3191951227165646840788369153931211 0.0815853121822716748057113054584939 1.0851062607118267283412508754443093 GT 1 -41047910941568231440661666120484953862744.0729407053424665218989652983261247 0.4314469143265872290021755920441810 0.0373020975536895640750672198803703 1.0380156210244077890874244472684569 GT 1 -29351261161731418.7805086185254431586882127545741005 0.5478450313928962628689808473700598 0.0976512757170800275083222805833843 1.1027542213477360685609678293701555 GT 1 -47961873.4955404544351729760152149273374935 1.0197196794075818828878756455400717 0.0744180511686498244840761356844083 1.0773326054197296584353961990344471 GT 1 -22378810072073554601214240944.3205416533670201460024213498388075 1.9295098369639090635749963383736595 0.0568936186650882323160950286315524 1.0585761911155523740763317004939668 GT 1 -11.0489238051327575184594869741626477 2.1445107462372865700514153245174924 0.0990339934689258499740264577443539 1.1042877506859023360384079743421489 GT 1 -15872423975010.2337288648736353557525297102192848 2.0604495591962808024137182274897425 0.0231707672903069083307391463108560 1.0234434296169710322063054783342217 GT 1 -355629396366092658316704894.4583074597148686632746599716976685 1.9317807694032809165559304949341231 0.0605758513219992254478705437741002 1.0624881992282702163483237344946425 GT 1 -111577638880562310541.6527695389617679939054732054875383 1.7733834497379093604014959962564746 0.0423023732444125782648208180747499 1.0432231805242649147199898590764114 GT 1 -480269097432678352744675284.3331390493331375029088336817896446 0.7627557243592658329910682068042745 0.0882556497805678653416651642921034 1.0923956459460184072152845483006960 GT 1 -15157851.4351752788369586358252650209093092 0.8203761861671457755513432289615211 0.0339095566559584440320020759365349 1.0344978225021737696010574098585479 GT 1 -815985419681407673090145738291400.2308060449054009949506177045255677 0.7701347236825823588289083944769339 0.0479169496047064328214387234345914 1.0491030101855858912543777220006327 GT 1 -648368361492890557271693681152.6061728482243222963804227176576377 0.6186359282763023184048490278129788 0.0230646748085177708158961475352707 1.0233348264780059320402899558365487 GT 1 -19197720406337121197754661869412.4458820252176997433701756844079953 1.5120055679929755787467063790127209 0.0801803363171543783787794316246594 1.0835776458890757426867017892198299 GT 1 -295817982836006281178264686144946582.4140183532056376389556578719004163 0.8966534708353923617462807624681955 0.0803518686462181472106277997576476 1.0837641480175977097254153348478249 GT 1 -863044507707006206308754506.1708529898316277924032190184546151 0.1848639467426590770126402611867875 0.0368853658903968566448445225665223 1.0375828357331222966382911971649193 GT 1 -24785485271646020985266624662787860.2915305359281033272424428398122306 0.1663735203992656646779217244082847 0.0446135055987930562078396568178602 1.0456393141935897776767578688955483 GT 1 -27141257633774244673942450327909870099.6480233583697029302899483855338567 1.9514984277455063040413524597055178 0.0803262055518212568132214795414628 1.0837362430662799937106972262087390 GT 1 -209513790537445880.5025400788993287197942274732824809 1.4684428486424563993764793816771399 0.0823952195078556137095096145019126 1.0859885034027087041339642629557793 GT 1 -1091214823394020612076758838.6641888295847074166521971009980137 1.1806560226919617311158794391996250 0.0063956250768766512650012398099742 1.0064161647096339265653351401135976 GT 1 -1993839278268144044.5431700583866769414620614896558036 0.3828743463938920381994855070945326 0.0339863209575649990142356867298194 1.0345772843704628658035113435028468 GT 1 -104691315653686677115029871710551403.7929870606516969337933953149814362 1.3403067372635942845075378789519391 0.0180390366564067976022373861851356 1.0182037236137442470429177857398383 GT 1 -33670131200178794418.2243221764128185869513860003905756 0.8334066352805891669644205712031941 0.0702422698609020862573863154338441 1.0728312319989924944604498058208930 GT 1 -9373.5129453214854382448435103319740950 0.7333545138390849283575343581069428 0.0866571286153024329595729021717335 1.0906439252007282101582646979424249 GT 1 -27783408587.4286844003384300741278406444102798 3.0497359381772188764223975982854690 0.0977866127395952284480601311179514 1.1029042156559432752786195730983681 LT 1 -321923685264.1287519419368487385800645652936478 1.7391755063690171629586852666173858 0.0368710601979156144938783194788046 1.0375679822715193549945091157432312 GT 1 -196406.7534170030439830726164233715034208 0.1106629089418279742597568414552222 0.0204791022285550949195696918960264 1.0206917066832796211761246275097439 GT 1 -203150400011066994804734588.2848152893426002117902641165173071 0.3976552153539687554493379636467324 0.0048731048242782515210911574678618 1.0048850171152441975021962391210034 GT 1 -36015404297020567738025837606261612.5737065485544755638684491439850666 2.4551286175245281679172078629717501 0.0222284258608091793817666963770853 1.0224792005025588712810726326865011 GT 1 -390158472323601.6461920826855342803328719394578581 0.0739391338271272035169468940515305 0.0212052058445759870812644310139404 1.0214332660266363268947323947778908 GT 1 -47155345081490.6172552507453354228843923778075668 0.3888742720553582950646759689449387 0.0980335040000967010203680429281883 1.1031779037336491834501564818146933 GT 1 -4443547950842778395712599781.0300706323907458071697235861458601 0.6488740383469472106487219752590267 0.0255361313606270541900936535312802 1.0258678375414087537893028623608539 GT 1 -19650772596437029717.2049195896405633064586602885536768 1.3942451601413845595972876133386005 0.0552822417550318500101334677887170 1.0568690646225637810042491935325706 GT 1 -72030495778149626171900806778519025836.1839633335021697632333522588428163 3.0514549363274294794443248692233089 0.0444216201260044523792333239655214 1.0454384884473747473270341894430195 GT 1 -17829396583918897573088587327155952727415471.8696958997755247300508631735725296 1.6675355696553379918517475437708656 0.0765147360456865384458639915519300 1.0796004362061422207667092065899856 GT 1 -6266070386593595720664283354177.4826336145323435800483858493418599 0.8489124541507204709687307754453691 0.0699323355851876227218310554686655 1.0724979380462471220313175178917471 GT 1 -191463092445154.7529686193992992870087328657144536 0.4629843820213084439387665813187070 0.0246552029075817573355787328597638 1.0249642324559788262923934598165355 GT 1 -2887086011571283254698.2533553982033116557377168986238127 1.0199296244706856403673406942014345 0.0170766041192206734046750643674682 1.0172240907822884406594980710645930 GT 1 -21679519433653.4348013593571735476614860874538578 0.6818400091847927315797175452638886 0.0450527964999663251127662376917226 1.0460992243227981203422250520612932 GT 1 -3648354182.2430802419967245436127301714066569 0.0646861696410590489403783725231209 0.0439272711734344247359764659372194 1.0449212926459655963236082618470875 GT 1 -33384856766637891240291983854677846039258.7120392932945058328226508144640205 0.9901364116295384858147116440873719 0.0420073397428713586898512134434724 1.0429151625676317490796013654848881 GT 1 -954163108101305495449137587.8198915013931715873995545551438623 0.8005069592557182484625805091083030 0.0872167425270089542425723386454088 1.0912568225470626706702521627081103 GT 1 -1084137896601041166231592906.5048691738590161313633437591566853 0.2557460603317282667229602583545180 0.0962176594214663834423310561631306 1.1011667212769128933223014614365449 GT 1 -1450810958483759962987194918808.0236199714840590151358918580017481 1.3157472179204449898325170757277307 0.0519451932331470387876805764244487 1.0533429653530213922725586017588343 GT 1 -4037744230458390625314148103.7967924208731886964135802602832206 0.1820898556875672481854106127219241 0.0667067990010942892120238809189737 1.0690358713411758135407603449804322 GT 1 -176766427385804520452277486908536.0910776278353838441903236833859953 0.6069404589218344612010238407540870 0.0235140737567214053335978485247617 1.0237949412185432456332638861926904 GT 1 -44706719964747236860678209.3298215408294387491060373913218766 0.5330404928604218572269253763254405 0.0497821364367524367506925815324274 1.0510639906130942300677996241019884 GT 1 -2937294031.8298992040829537772162283755383813 1.5207366883620054588360892308897701 0.0364560309972656739615420944073230 1.0371371575008250279129532234748584 GT 1 -11664009768384811643594631357424531.5470714581287366024346884175825208 0.1947412664405651234241199345553008 0.0273688752202601448804504765186187 1.0277503799002485410700429784218724 GT 1 -32195754247647919100993053485159.7575100181691802171872942348243833 0.2466931164198003220132299423215574 0.0986117394653363114091082989715174 1.1038191924018504958439419420592929 GT 1 -79.7122076304435669629546998906806495 0.0094018018231416600847493503184921 0.0097561458604008334739672615256278 1.0098040488719036655558589910952807 GT 1 -186989893952901378491060987541488736993573.7352321240079233237731706090012389 0.5865086079147788545018902315226960 0.0529980610250836602944643704802007 1.0544541383061630059642445615782092 GT 1 -9573606918183651837431.6678003625678798055842374746356307 0.1814561231097949898392433582657093 0.0672845662925819576216377811053107 1.0696551260425796376367887734033540 GT 1 -351283697837.4492666363732684298301002635828503 1.1348290302597704398034682757750846 0.0068124546883506741251501725891168 1.0068357653868306778117814498898164 GT 1 -70109377249653191061798850.5110441463146145067063206097008595 0.8071872988539134297162392903360119 0.0543315630213310816142869140594188 1.0558632608177663298546973686778297 GT 1 -28206566607476268572.1706999190297354889310326169132078 0.5291790463177994871424556095699439 0.0322869387909171624425755863704062 1.0328196600187299693913204327336079 GT 1 -1313.0433764335121462310509286876167702 0.0437987361450529290176826865989478 0.0693451897866694077443372951371581 1.0718668435912581450365727815299338 GT 1 -4243368212974245813015522705622782290.8745580112580528202786520617810760 0.7219476179245175902114118378828951 0.0739459737471572936435494839058243 1.0768227023523090175080168401142933 GT 1 -4432774701435604375448.7335509164105479174396386660609978 0.6119487525830727993144423193243448 0.0533322785881397695352105572457462 1.0548071223281577134409061217388905 GT 1 -763.1633480090421499344072258253060634 0.1922602864108767255466564618698124 0.0746952134317085391974837745748790 1.0776320967498358670704580229752779 GT 1 -5148587002834632798.4265942079525352751315988553687178 0.8237791608804475663570799716684407 0.0220741980251549950632019546922590 1.0223214789267592963536510286336868 GT 1 -26924806716557.8737066051189709804079053294555571 0.4536872266810914640108495642967905 0.0949520851678425063810938261786823 1.0997673921178051102338398754084910 GT 1 -3.1274644034737744304757651770699570 0.4063552781353575891061690994163407 0.0310205743055692720482177924211877 1.0315118998302712064795481234486187 GT 1 -5.2858628137071796771843107665220529 1.3991134124961125254026087630237133 0.0750086347118071211990334951371148 1.0779708763368568613802317149091760 GT 1 -6578908623435611124.8536173915457807948288227871984750 0.0398710300746229757897879700125105 0.0673582401639715756836553748486970 1.0697341177463486891079106380917388 GT 1 -7919484903500892032516679699959506867018.3253133654066753731729013120514887 1.0944380378303472193271341607972130 0.0715566487424578147330776846276120 1.0742459110818129739955194452266230 GT 1 -493203519479070097479.0573429999432595380845067951740538 2.1656986292921862443226352058432779 0.0954668969588907001697899777399404 1.1003363766505254443191021768459321 GT 1 -649230184707444782612714.1889655258728361028188394016203958 1.3406955555552220903455094704950219 0.0626971952218316507441305272239295 1.0647488848324155349779058111213691 GT 1 -3.5572831700857821496512989105520232 0.0613908037051328629951597999292070 0.0434150446803082497611475704677550 1.0443856751022536849345243344187211 GT 1 -67723452391919936914.5416057395343662971386271143720809 0.0214726621921994964305909979234950 0.0924512467966593280113793387659705 1.0970079917480186342360781220677639 GT 1 -23705161254244641997.2118011233305268960503423415809003 0.2410106356027459294630703598208705 0.0149586539889905476932213469770046 1.0150716630453060586981040133717305 GT 1 -242540382835910368996892431589996634208.9629854385406741650931936440885139 0.3859834301159229789499828806785279 0.0199832830679265563267949422771450 1.0201856493690545850179160510730113 GT 1 -31814169.0938754944983798791001941155915077 0.2006383547639919919528243137947516 0.0357343873824027032969023227055042 1.0363884905625029060003444634502445 GT 1 -180196348652387.6846003685305297590634028761018956 0.4601956875974742845503934834861238 0.0935384548316248562131772020975952 1.0982066709022873125134207393211475 GT 1 -5985423051620112599.9486238295087276502597500658841933 1.1411337306589973498849517174930180 0.0635123103906370495439220997848418 1.0656189022891827921090041236680589 GT 1 -11378997294761384313654.4791807212291463978635988714350854 0.6272807477829807679439268554787261 0.0541297360068912816240434108976480 1.0556498609913688722996673438073452 GT 1 -13.0958029845408972397667995578951138 2.2006739860245476678589409364622596 0.0672046600593755673170945243349078 1.0695694591738764350410903125396197 GT 1 -5973500615390488791593.1858417476245174873154942587613030 0.5415805459308672598728649758449847 0.0383242723482131267322283177379846 1.0390779665841992389391559689310993 GT 1 -598671.2254502244706958453061266001927653 5.3021390843954782623658532463537476 0.0954785852207907443800901035022904 1.1003492986070337420611930554619305 LT 1 -5436426925444497747962117630451.6563577080076724310161613617614849 0.4843308344407495197836252131693876 0.0659087849201893118669630000911015 1.0681811848367665201535681087004505 GT 1 -81.9239644669785642773698306227670621 0.7215410226627493207447664609898953 0.0276897581015830838618934576565375 1.0280803465406130381545477169219282 GT 1 -9325082874041928392422637193611525910401827.9009813021043826129557980924622359 1.0320482691820342265392874537575027 0.0466687241729800836940537616943862 1.0477928220620831195804977698318888 GT 1 -4034134099.1910732444652710542181932536909701 0.4954948249804764459521335211951277 0.0658137281579638299292419735822182 1.0680794261173333366260674910216004 GT 1 -261585497682552.8111407817212772016982465272832113 0.6010528260458993979019823584171457 0.0380276007515921588842640948517519 1.0387695197379965206605148636373357 GT 1 -9456895936518064.6609247863853454257195007861863617 0.0759100530649563383171549665425726 0.0020398991517785690887020620557928 1.0020419825798575622769924613485426 GT 1 -1234414546.3356074721567286048196902121842517 0.2236705688835232370921330773652062 0.0064465576225848018178368724923247 1.0064674264114231616694511392018600 GT 1 -12501885850047551216443200703952229.3316865609162591211438704568350994 1.7041009032150598047671497460467166 0.0017804254512162561966631654627759 1.0017820122923912540172358277082038 GT 1 -136961009811109862390232660823.2620179269746636482107559628570487 0.5606368131248590886629294006103728 0.0944805366055838549753062672471640 1.0992465072519988116264494666632709 GT 1 -3831572250482287.1891244157291811542601318064265762 3.5695564874980745151360510270854941 0.0973181676332021129670318620211492 1.1023851327620251439440752185574383 LT 1 -62687405084631570433865868496013.6946303009995589082738117071354373 0.1745851751702195109839628944782692 0.0964118260128348708353936067321007 1.1013815821375396062525317031529455 GT 1 -75255710.7644877363936365607835699928692118 0.1177567889026248155053561729926110 0.0556148510203875552859187242876185 1.0572211992442623890703234996357695 GT 1 -140517.6477113092412587517809246948870478 0.8472467829584145227497056825511041 0.0678222333332959017299740506029408 1.0702317457176403881926498361276341 GT 1 -2497805992705654868896206527723818571088495.7493945138096489643129588003519049 0.0326291992783766977049169581682435 0.0256713102145577661893616563957308 1.0260065684222951038875697227465195 GT 1 -109000012974948206875558053491634803012.9762953248320186521785916468663195 0.0859903051301417033927687535439523 0.0833580286307885774662312197172392 1.0870383176770234558471185494434555 GT 1 -20660107790146288648516006365.8650069447838095940314222735480890 0.4936105502106363086959835752575868 0.0590311414540602474038646339516208 1.0608452339444399441903648277628966 GT 1 -20107090938389373698523245563401.5911995834197214222277330000382932 1.0461285203499609472019766620641925 0.0521809850210770954239895935777540 1.0535917074227111222260044305658094 GT 1 -558865613132478000287233349648739623154511.9148700960837454220166915550023404 1.4798666866233362876445613254191145 0.0663002919514717975830347515669660 1.0686004041746146069540047555309210 GT 1 -2101606558352281530175790654296035505051.1176443029542399295392499858006767 0.4757964848035421599479817090519948 0.0728339191847316666307490598421933 1.0756225700078991188375610111101029 GT 1 -2981614564638747657452.6589248080569302098681934098810669 1.3846467910487860218721391058096502 0.0699517034533464682622397470132141 1.0725187624126479506058925156650347 GT 1 -2842401.8804006926880035564071357879995322 1.1975038588809782448927043074131250 0.0814825504055368528827817631510386 1.0849943765820332483964105747613524 GT 1 -29704694355316038579203376.0634973581550894075732427853112307 0.0447633817852284679222634211596073 0.0889667334794720140364346682243341 1.0931758659009333700619708191431282 GT 1 -377365131574239.1845185060974241210465836774145657 1.8100485021942793022516432749081776 0.0913850694141401002111425717893917 1.0958338932738408590152929061848046 GT 1 -1014465029.0427423354098720460868881400447207 0.5891388218812808619591311127582924 0.0417972077258251483052260828869057 1.0426958404545237751789452686140336 GT 1 -690752000485.3005607435247335128537809617002994 1.1605402390159929281662521618977818 0.0663451411146422931092876429731912 1.0686484391476971527847815040386671 GT 1 -5258040781924.7776794046101092552974125086585345 0.4787604119467896863397697687866905 0.0903444623158032664836188311440427 1.0946892811491789328591103331670031 GT 1 -11047275102630308367417832648070725.6451365631925711596195730271185835 0.3899184963646827730093970350827863 0.0494686076903182599917138716049486 1.0507340904452430643309398713626993 GT 1 -71192481275449.5438147540692654660495702038413620 0.5564617942187477334143811128169121 0.0801452911253991147904035427976021 1.0835395465468418404375998360998930 GT 1 -2686455.0559528636634054068669647899422106 0.4338840549907404594791751932210501 0.0040881440360138772482111315181620 1.0040965233418467435240308304347066 GT 1 -5757030004.6623197180969775210704363707117213 2.7666143539610015053821171380030656 0.0585831213350169777247486228421485 1.0603692208524933691762531030046248 GT 1 -389354872635204200818391019266153545.8952971978415893654654151947162771 1.8226590842800826031634243874953339 0.0419420590878452186239480586396593 1.0428470217210261727863139650410199 GT 1 -50364271918993454425309.1746826022293335714201300974230718 0.2328435684282905830922726166240152 0.0346575974199867108106324112022471 1.0352724192509128409239113292744866 GT 1 -15199644911369878853627634538565060313.7106338824872771502387085413881454 0.7762883452286195178647424698029166 0.0270239767572829423797500890006904 1.0273958391935693451675603749402878 GT 1 -81168969919114429855193471790507.0920444264241832003525394119966937 0.3025148124996179699927490084291855 0.0781761328649346406865079693572236 1.0814011071508298316923867458250179 GT 1 -18416727291639237647493330880205138872.0927114868876261687019607703769785 0.0649155608128985957757769253955064 0.0907952038793860001559366481749777 1.0951849119179987609636421338412142 GT 1 -295005035393258.6652899379328183027839161923033810 3.2349650036964158348740065630950118 0.0858637281887942089226136644027728 1.0897756247560302508801675143302150 LT 1 -32120763.1313434806419885123254514322096947 0.1833797555505052824197419206508765 0.0793237914310283188736526867110723 1.0826468696120100764284360445322162 GT 1 -13642754864312521248086602944315259549129.1399504695012989684872920595458435 0.7113678785323164528785330346658595 0.0643960602454907631293665970512626 1.0665630333419995524273532608000487 GT 1 -6508905427770661472321794948035027798317366.7393722862976315794441418633303567 4.0797333374170751421414818056031433 0.0394448168408287737751115490705693 1.0402438458895842573172841787891105 LT 1 -3814539995701467936644921098.5924882705287348955719788088487780 1.1047038416065072722647729389152209 0.0780716088478299936255398228226729 1.0812877253049263907597161887696254 GT 1 -135472296.2706661231096377618676237322909710 0.7136057028517887832420388744046874 0.0491990549818949003733373307114287 1.0504505495776763760344127757751707 GT 1 -333149928536.6341898923363072201485195176841207 1.6635149062311516013419188101886201 0.0086257703457691063655406631031007 1.0086631876267616990565740458745976 GT 1 -12857003053135651460189782616571513035.2056368300600072871716139093848881 0.9201505543942089281670012296647061 0.0473946535587132739246941635098291 1.0485545781586445091958364904137463 GT 1 -136697.6591075884108214536421212535402824 1.4470974130652673440708434079487305 0.0232137443403657781803851237755464 1.0234874270671567649135605529638133 GT 1 -7871532792.6039695666939419774329969189270184 0.0109654843621084756154025532842067 0.0756649906609366013605243065153548 1.0786807088312116599526782096989912 GT 1 -168516095458.9897563432531064207725972345212669 0.0209387718734487218027284018153302 0.0364639174729680941979478446283202 1.0371453423976550311864885318416471 GT 1 -5346467221355864453287707114035.6354180437219870716371567445367046 0.5277075888362582018523307877800565 0.0360627031833401901467245778971375 1.0367290312830919642423057304139025 GT 1 -3.1471244012741298120452740751761821 0.1526400353362399520720620844444050 0.0147520051425244470087861146935658 1.0148618980702463576584857265203763 GT 1 -5782146083232895910812269.2807623610705863207578834756395175 0.2809109303916993346864260925306954 0.0362720875965119853130789557303943 1.0369462727553079563459043627184777 GT 1 -1882526583768099567661844004215986459219888.2426895400562598699160132463329912 2.2948322909983449135973554823561739 0.0528652953404927741659768497904051 1.0543139523430705380058411208200210 GT 1 -16369378759032382984253339836373983989294.6929423299380764458620622619632853 0.6561225137139178434848485087701584 0.0496380995733206643842798631897078 1.0509124191121905790939967788820876 GT 1 -11931084826885657732811364053553.3564920684920168586807958971749584 0.4518637590050984848987606906507533 0.0071272092702409819627088697350159 1.0071527291555677862945675353204987 GT 1 -114111050440860026399417.9844838335417578640129678080823991 0.8319643960616605381653119791414784 0.0477374739720916535557982792633968 1.0489145195719408049861836210771701 GT 1 -16767265551403464188965840003274793.3371473410257146145343779100849771 0.7252630627115245432919943633281589 0.0476042093614821929485207730880038 1.0487745841203579005509726853841557 GT 1 -3083417527775628608633845338900272748.3235417297035296462691008623102288 3.3083835582121093565849268156117748 0.0301583460063030250246865716584070 1.0306224641158142058566896854254714 GT 1 -8372965781184148082327492.0147889425762931851192029860570112 0.1126473158322841330696829308407043 0.0446614085462388148281616414240285 1.0456894553131159917628010968002718 GT 1 -34.2445103171303385814070195208236506 0.6316093604742818724975105788305485 0.0686125694523565532678781212024035 1.0710799437496977819931457599727928 GT 1 -148295862863546044128477486532.9091679931844391746916302119107192 2.4268627085615888557586821893929626 0.0646961551788955557639548334433101 1.0668838347609177140378160078534771 GT 1 -59810956306812714850578928317649928821267.8107809089532358110485819482874926 2.5515128132559387747032180249241623 0.0535654894772674608529939199339229 1.0550535019334145137360921766149499 GT 1 -46286474651381945504.4360347696459489034333041002732755 0.1750307974803231781930221294866514 0.0199218019183713500563971903289881 1.0201229165400426396775125164616406 GT 1 -4134068181.2005599917121387004500240244713474 1.3938177617182344026652919354772863 0.0257090169133045590860420005931950 1.0260452693543204097798217322486908 GT 1 -115976120275650642339.9613331724223965062248886899323048 0.4377828551756735131933315153217103 0.0472886131993604873450656501678805 1.0484432682041238840726061763056217 GT 1 -3027417915765.1010075090334333914348166927169440 0.5394800349977728907020973102330302 0.0457810940556556398485527548102583 1.0468621726984417432034363913200444 GT 1 -597023762504152019596307724.4726939675900919896469423653995227 1.5132179277868120931961578857962081 0.0933675878426978064566221914958492 1.0980181897827705735263264171509836 GT 1 -9357255293038140206684460340381810618156.4147937769522677241412848350547460 0.2427717484559984185780174959450689 0.0129153448379056592700615600962311 1.0129994730523455296333040406941490 GT 1 -14731128898517881904476447901.9619671479977110108829165536679653 0.2931921371327075106906155085312225 0.0283470992327302165852042745472001 1.0287566362724231106970420189843230 GT 1 -55271065754134612588.7642748409375450757050890288975900 0.1882603609817672612593312504497799 0.0793484292574566901815826896295562 1.0826736305469252645534834091618158 GT 1 -279348120466752872048310808335559060.5468826896248100232951636801113997 0.1869570071470428666534152308410505 0.0273365525780178716317057107896444 1.0277171482830866585304392266860127 GT 1 -6385550180426600322195444789387.5698920303626495404018423671709324 0.7920304705052023539844109703026691 0.0497019364347334221127757167667727 1.0509795924758075887967434580011397 GT 1 -398315487308074736267172989646714475438.4284032870649169653570183065502482 0.3387465200348252592467329956168375 0.0734533931864890665247627618991376 1.0762909303519285065520723142056679 GT 1 -5050.6064223129063543461552843987481332 0.5016783174819516758441030167291844 0.0284127744205961301012282885001264 1.0288242297591986120007488388968720 GT 1 -6334393737938358700049331465372912412355059.1644252193386701168561685964234437 1.1217759384107085877038485404218854 0.0400952409975116113884919456748484 1.0409212088142383584942765818895455 GT 1 -1723714819060025548285.3426800598589635842173388205733744 0.2548053536963230803497609401338143 0.0841961596807460918282951471448281 1.0879530853640754436704305673535093 GT 1 -144712599628785721131205500426392009652328.3799367787613478547055911021328892 2.1440148952444752959879472230953805 0.0340584131018206034862377912128248 1.0346519156474494647444300448510251 GT 1 -2534851494874808706644592294466413068817.5984946614299360832588523845435269 1.2521442613572016750891876407489954 0.0608575766216305454436584479655679 1.0627881356861355072887572152492944 GT 1 -784172809716183327623828.7592148168552265685980113781235550 1.0867664374697398601463058804147195 0.0476992573781695937854776652486266 1.0488743879632342242063666251744241 GT 1 -2228111622525872402912731.2773895032093214873478688832493050 0.6568393782480249630015867984419861 0.0980417601234603568680649969596057 1.1031870572456549958527097821210483 GT 1 -14573609176032759875640.6886847496395226324467893151474071 0.8696535085207038919517804368899311 0.0251699459620461924083591057803051 1.0254921267277358417821691548535678 GT 1 -1333237913559337192987400.4417323967331249337666041937813686 0.0336364494204132374931889885653579 0.0545972206231863606132207953485857 1.0561442207322372519129523527738114 GT 1 -320481698981565803045367230903724682067507.1013265630528031386319745612875846 0.3817577339073103532862332580410520 0.0685668875084769301935138078666446 1.0710308977543017349171357750880820 GT 1 -596956278396760221122862599938.9271364474956814950144920927999626 0.3755899309722665505064632734067025 0.0374111868194679388375407010002514 1.0381289436428102132539880552440465 GT 1 -2304164004421.0593159569695222328484130258865621 0.8329676725851633301332413142763691 0.0121587741401636721238108652463741 1.0122332967193268301867309587710738 GT 1 -12764323355468819783545256753710344255.8055857108592879419383583037573892 3.3170294351630014242523082761556972 0.0581166497274948994792796417682919 1.0598738440560656181687848949144020 LT 1 -33509216021.7256785299755321955058378601445868 1.4649959499279131352488272399458419 0.0600547845330993237304476264221576 1.0619336868347060863970152133961423 GT 1 -3995274.7839049801844668454902272034397588 0.8251220302044383788945870586099331 0.0374029601087141695288266114737755 1.0381203972359885623676577875922528 GT 1 -398.4889358616400702080987372760459558 0.1335008237411712434772110899097302 0.0533781551193239460464373354274809 1.0548555845729299077741928759247643 GT 1 -4.8947595776736779990817951437785308 1.5738199634285329036032271122086289 0.0840573317092863582329307725609745 1.0878015054690703223060765297920088 GT 1 -240763221574923531261811709793714786630908.7831896032479645051477430394778640 2.2452514449482071680137404062773230 0.0614850158494607371414798974482889 1.0634564570195889001343840261581218 GT 1 -4666841843696620528546676.1212472101874207812754756725606213 2.7249133726721362777852139000983564 0.0977793229181910222690562528267908 1.1028961357581533792966308574022877 LT 1 -2731376916699140153390273656033.8908667919266353444835300865776525 0.7735135592775137099916962742868099 0.0637336663402214985127051138678447 1.0658552984713454466125658328223807 GT 1 -18987822382408017149211784507015264774072.0892206327827673962289136790994941 2.0692008129149348545894838060098186 0.0075910110132665692640631825759823 1.0076199693793003246427631116499289 GT 1 -18.4868899021392447726975569327142608 0.0659754369411657787859768195319471 0.0265268906479923587518433634719490 1.0268850771995638797533248751688660 GT 1 -310889372686679256180712377559810.7986368237239447961953625702043564 0.6011668301146194930350707216820740 0.0431200536248963335227527092033131 1.0440773432823309190719770550746974 GT 1 -5.3126997953137909174458139889119827 0.0236943996610093361645260520651753 0.0237360206686920752516855988803693 1.0240222585132903043044578781794974 GT 1 -919330802.1462402565718347901244655244104445 0.1171514081141146505821666262095736 0.0072733933769518190261106697835455 1.0072999734659456458567745511415379 GT 1 -61487564449013118619934699396.0911125234288994453891927341719069 0.0070567198292659539109883839644542 0.0987219627283872909243749861254503 1.1039414815502330624977959584801732 GT 1 -124213430228893082819535.1960171115177366935425426434120452 0.1887239895187693849705618990152226 0.0785914623612521339102758752966754 1.0818517605814779471998564953566345 GT 1 -30581058934290280831535123.3161375962258518791387375579025722 0.1789989888613223592919325765043290 0.0855147519292678465521642338500506 1.0893939424232252579066283811845058 GT 1 -2911125595915460529.5001026306304625821879290178573190 0.1417387487228492411990017223544557 0.0610711267735744618531298975172158 1.0630155500055496084961992635332112 GT 1 -1237942496804664.5834815267544565886240563966272814 0.1626379367429494794777881017657955 0.0156564325078004373412008190261888 1.0157802889144540221926832725883767 GT 1 -56110445956345790696663968155858291.4832079113790220673738207280851673 2.1588921253644317756043823887908034 0.0020008796043380842939521842034276 1.0020028840381337102893285364031065 GT 1 -6843318565353561727480096202.7502328406579107079107729860479044 1.7658193079337105256835900289907227 0.0983344755348518898959094155836413 1.1035116431374009013239754405261233 GT 1 -2425596516300839882857261492.4115806380736143498904268897570663 0.7807238589092630531642150978795268 0.0807709855192263940821279598030953 1.0842199880188887112677878051813310 GT 1 -153077548271633485427193327.1532212550986570130219857840817433 4.4590336645235412798072721908690445 0.0140407153168279330810677326608427 1.0141402186568733511992877036579480 LT 1 -6779613607838792470282763018322.1516446256561823847728716303857703 0.1446502736126574239465413392141502 0.0251880266988002100861802416331471 1.0255106744780417914116023639314590 GT 1 -865793497427659294055871074175738.7579039739719219067667869799564450 1.0326954380209626658373161423244180 0.0960535633741170700299886734528318 1.1009851718654422175025809981777965 GT 1 -9772056081247209.7357472131382796775459546954274284 0.4177810864235812512705717597897344 0.0449532306754474409867323992272825 1.0459949665858359151748471387210355 GT 1 -4847375248009299786871.7611638382507002286540504535505615 1.6272285495579616382019744889150713 0.0635017433370895028319761226071328 1.0656076186449368862611058297982159 GT 1 -37593972746500001836556126068.7470701836727964205762868174321477 0.8561333320937852664348092385500730 0.0981735662715762438195472282533781 1.1033332012397571951895306455978905 GT 1 -9613842432279188581093337261.2871717339589935868534698354302558 0.1858927379724332567201984722837562 0.0173950108037339186219837655810417 1.0175480817149210721439695183596507 GT 1 -237889899662399247.9380505866212976630285930673465227 0.0479687858774427054764134569820346 0.0900690417456915590553200791271873 1.0943865523997296751159459898896778 GT 1 -2357922351561820.6871130389699734434424027665011691 0.1098639885472416240627001770118003 0.0597511604140754751958260495518743 1.0616107157872791991695384928579976 GT 1 -174885944491054327284.9703568977006038533789001621926383 0.8924617270162222377454664295752950 0.0639330634745450806733837853828129 1.0660682916796087149036909823366899 GT 1 -15527401.4884895755218925109111692375797783 1.1636207813905446114047655039929995 0.0990309457752616040876959886262339 1.1042843679961144249771004554527920 GT 1 -20201785.8973689854369496185381239197869902 0.5503447200589627672190132497179379 0.0655509031032129857506939759449655 1.0677981245205843092294436885955214 GT 1 -15491386394717887002480068805863655770224.5408716771235261371122352268840932 0.1349111773390674663021191365854497 0.0405090122652337667488866340234754 1.0413523562467937489249336865345209 GT 1 -333559436032633317770446965953350105.8463228002670874627271383946611976 0.0720033586645420162343773324640753 0.0655419497916893822638435888263486 1.0677885431868754189895364072832661 GT 1 -75.0792746364875174521558094624062622 0.6011509904252555821259376809531038 0.0075515627476141242866193279410713 1.0075802201609069561736730475262702 GT 1 -2.0279970305157135361473970418050103 0.3716836097044239772009617535528403 0.0351388617578453964348336415088768 1.0357710861921481061397319237766356 GT 1 -1878112227556343619750.4860096037671388052495220035370186 0.0756678583635674800140947421768755 0.0711823254698185264204186889159491 1.0738428193542525416106893170054357 GT 1 -46693876022266859249.3020852447119252103038850989149912 0.6285807598519274770442828490387017 0.0338551929448154258911387588032106 1.0344415522202335862017369274929161 GT 1 -15053.3542299559159476855002378519171513 0.2918297141125210667030602386459544 0.0895911331540791990452309823979690 1.0938614761518744730090189216466085 GT 1 -2054815696754509142361824.4920555916783153039946347824792459 1.4442169130722644794370361307615460 0.0801659673821320420420056719309344 1.0835620245413715280765597264049749 GT 1 -29918196682770338621.9428727179860930996963247521664201 2.0937159462160137598241963035297164 0.0640264367032910643823297880604983 1.0661680472445468504573891887087956 GT 1 -43844312763714294845.3791030946041895041687494364868338 0.7287005828802185582552867938242676 0.0231879077349817326990806628963003 1.0234609767935751983170686380896193 GT 1 -26367.2705012971261330043665396155661767 1.0090301879238662931882008253111279 0.0358063508644049824600199344735722 1.0364631236993940215763073194202924 GT 1 -3731899357884329750.6430930603349962574842576107677888 2.4770469775669300553612352760649565 0.0687180932622766465985870081151785 1.0711932476066096838666589837198125 GT 1 -214186964987977.6168113925389558139343637189091905 0.3003948550280964830730567522640490 0.0139407782886819954502527640913372 1.0140388635956430089622508096920894 GT 1 -4550488379178.5652646939848701899889621101506994 0.3554731908590779829427824001418345 0.0942701697728387167036987214779043 1.0990142180420795840957021955524527 GT 1 -1843240118540505527490351475242377522.2763284914734990927052801333165272 0.5450429507429839406799300510750956 0.0292900222268609629729786447463343 1.0297275393705198557377580315533214 GT 1 -253511662155255299387418239845783637.8720552881988529749910084454611696 1.5050496271155559189136000193258263 0.0200725897659185956678164355841461 1.0202767812506383462716805294161866 GT 1 -25547724366476239568723461815239529317235.3455043800479399977253943090663527 0.5174267094957150354631780241302156 0.0907662110603138622326764410702157 1.0951530243202401231993231266241229 GT 1 -120004253534303818541964.2391221405882251326017568775788912 0.6655920850779528115256999656669897 0.0310688277505438915556109131735355 1.0315616992844212467186190538252844 GT 1 -8812631.0500517995935512437905340816121765 0.5158862570541821167969527075561346 0.0796847443465710568756830069171806 1.0830389984482188403928593077957669 GT 1 -10811.9049875212128023622618710324294783 0.4818888614363298381759083313122794 0.0275261885629451784992530536462414 1.0279121329656990893401373531996390 GT 1 -453401443463606256231.1085605827354179764219250034015814 1.2965718297610870212623753465641235 0.0569118774092747337879505482801690 1.0585955515199529497661434841844107 GT 1 -6.7326415071613429152549581260785559 0.5326733781669271687878178230109084 0.0265477795518796902105157647311664 1.0269065355509124417082117992335099 GT 1 -5166708606708335774.8167057132320166611932350169528739 1.0317829599347778332098406951641431 0.0610293395668126723463925277968107 1.0629710458070877743862143976998290 GT 1 -2405.8249463178032994543728389041421019 0.4967883618442925043099247479072972 0.0378939905526396795763441451326109 1.0386306374569383324058766704647853 GT 1 -2.8774314009199840144071746673476548 0.1473295645271422639821664664135624 0.0026293736720760646492467409331814 1.0026328365464888963087311206276180 GT 1 -44948067240409519741.1429215719847803633390304457289757 0.2559596186417076163497534586536484 0.0996425109927093378387389163482608 1.1049633845167370134969288549632522 GT 1 -13448302304543342.3911162191834142971478472871757122 1.0090760212260525999917414616063142 0.0520326436870388031728048109571042 1.0534352115890165729352755219579150 GT 1 -1773533.8510420869157905096006596392511904 0.9404116604306775200875140877632917 0.0663827839280927586932569851812956 1.0686887576572067285453670787568995 GT 1 -312282190704067565409486876914.9451516711667227629487506112049763 3.1638380738196695566033252727859301 0.0629173929469876254507027461465064 1.0649838394204944394301795785790914 LT 1 -37364533100903308904180650.7418349351799444820728792986798825 0.7454428629608714578599921169611764 0.0519760917496095240733962106673406 1.0533755573717181892801270409208292 GT 1 -309.8049227172126686163783550364490859 0.4192906592335951505055188233689810 0.0024995325841133572564156343670310 1.0025026616308732870617895724007433 GT 1 -734473801836760931803088580692509244991.7644336292256083937124497719354953 2.2916806167140000210662701873447689 0.0002519305243845069013345709941645 1.0002519622642099977455775614976727 GT 1 -134308723342383442382283753631496604.8860765521743685325456680800829383 0.1103167849205777693626752815031074 0.0394547621670782646134766526572194 1.0402541996703037927671104796688924 GT 1 -32629051773983031500.3007381212168570134296469370908932 0.4391265678835909347275688486152993 0.0398014896985132457708146260839345 1.0406152343325672683341932638171398 GT 1 -91.6507742148204317222015710827029208 0.6240246557170968964170375894283038 0.0487227566470428121501541021854230 1.0499497306862979924635775860008057 GT 1 -192207.8356367033926658228896766319436389 0.8906913801042253988032765589846501 0.0665416037613037188181238368254002 1.0688588844935778322872324925874400 GT 1 -3528519294024070484131572234706022.8534397609539199033396169927896665 2.2608040125118064894254665188276267 0.0275993340426756371447464417632153 1.0279873516809582268667995460434963 GT 1 -610914755233154603655.3511584965875840430651470725931676 0.3346018539562659760291387816040985 0.0590456363082697801462204345535224 1.0608606382436574058889950980367579 GT 1 -17601982.1558969321464321732148468321817482 0.5659584107489883656101457720645338 0.0000230679642291959801080785658872 1.0000230682302987746167216221017886 GT 1 -1360706782148694651750889931786437548.8982818019997897323046667197663820 0.7032416319663650386400656947646550 0.0892309002881901900704415449289366 1.0934658719031935867367111579305131 GT 1 -16157996250829974029215897810.3403060836317939246910006285873953 0.3426422270930375521589327555706034 0.0757908065022927344043814746665033 1.0788168330757467217031713529611417 GT 1 -3384760295.5405833133009673944195848097422015 3.6495469534651421376681521681007307 0.0569261810433102277076853575612834 1.0586107184403755231901739647509685 LT 1 -4759.7128887992266204441180917104082581 0.1575714292745296205185766167639520 0.0435285569973313597467716713724116 1.0445043462687241229358037343866842 GT 1 -256471620446982216764971385980928384125812.6394111680796448699989048231846090 0.5456749306999377977706666085344404 0.0902055577792233431875315971851335 1.0945365926571797806790390143758350 GT 1 -2389804759302924710408157.9780695819304156378085388370763448 4.8997282303012409320387383496939173 0.0160059064331198977120191276886880 1.0161353844205813626617331810481179 LT 1 -1969307008873024.0260035346923091541294264078394979 3.4352365841930525444628512745823028 0.0454234924134096872285658512128950 1.0464874844066586724346639720818281 LT 1 -46414.5579319228106623581081051418732341 0.4057114644543113674579829984689528 0.0261845425919237573769968828798567 1.0265334620712880174616794217404547 GT 1 -5746922493.6205150037648423909180127413629627 1.0371451151137685519578727174259420 0.0536023231214368689731528226800067 1.0550924210139534251359237173949422 GT 1 -13773282134199240749893105439926125650.2826659540127497095084924974568463 0.3205076521964723451736573225053648 0.0328700325994843648828807679964783 1.0334223898708137045090679840262512 GT 1 -7428.8273943564985011812332920736776306 0.1445929907949471808593685607504438 0.0452678191897737195949833657942674 1.0463244167739317288713898667067322 GT 1 -709.7196147853888341588586681912083469 0.5772671250657265837259022147654672 0.0112710299406013019603183940775497 1.0113350293457851117400935470296435 GT 1 -3466635201003946952.6612358401921588918985947185179165 0.6324039733220923474056987039075942 0.0649823595154031429412872675540993 1.0671898830429805859547197473019114 GT 1 -5075.6966141631616978450634959527238677 0.4028751950546853504029636335895538 0.0979951057035256940052486572981030 1.1031353328849280210577929027393972 GT 1 -429298889815734515945277524.5517233674670090961436121313679659 0.9424672328541193705417190334529643 0.0562149766714771287447098567928734 1.0578568682958118650629251877282283 GT 1 -65910514488641.0780318724729413512944170763464497 0.5636265719619916017710900601959651 0.0154596764070589543437685425089923 1.0155804232928322063063493864904301 GT 1 -19899210743817263074221725911690670540143820.9267842900945665878761159323157443 0.7204462664678467817595432886952197 0.0800659000608320018615452700794681 1.0834532420055422550602904596602682 GT 1 -28402699224672088781499950865.4341075317182717505821125100842962 0.9837040997317765537986872508195004 0.0324802667209406081322447689548214 1.0330194581321323478138494925368580 GT 1 -134339052656239971620147620026343065280.0985991299459345129150807914149579 0.7267392802840594143349080903084097 0.0633541124353259601869879706648824 1.0654499896631800113995847751466411 GT 1 -7880571838628274796348213633504.6422918320587584824590593057382375 1.9275553735825609535948013916699601 0.0692634221778965160181221378693082 1.0717789871529496096725303613030746 GT 1 -320753783627908112274154819906.7524168049880985013106383902847192 0.4316780866210803185811172525246132 0.0110677940012661066139199133807571 1.0111294977385401033461101507445076 GT 1 -4417355241098057702677821617739967445689642.3545291418769333092182589065345877 0.3682994645473053996942687325312644 0.0913432955135314726385707214320547 1.0957879189683933161086947402431600 GT 1 -494270579267231780.1586491481610322541820360043010111 0.1482857878197028911490628496708210 0.0523252069492346329533242990172164 1.0537438808857157431952177630602164 GT 1 -11802622116935.6707466061865004760337381893912969 0.0118230604351215208232637182425326 0.0357929373754124143065442518785048 1.0364492121830675822696878364522353 GT 1 -3670661.1651220407581597117810539904637219 0.2792057559403173164255279582966549 0.0245940436091179948597933084737474 1.0249015291112541416341752127200396 GT 1 -84372728466879115760867481.1559720845276508848958419079613544 0.8226466377873884389818613676462679 0.0671535226031541622235593368322197 1.0695146389444422641156684518054691 GT 1 -11083079243782147354.2125069608218805316560995787870056 1.3077718212966347745687081425732966 0.0140671149377477192241839883397516 1.0141669945844077372815921501860055 GT 1 -10313049782650200706302799514925544859.5309716915906456782780229024744343 0.5964334677131855027251300505866306 0.0880631243898720110595179020429107 1.0921845066430697719784512795716049 GT 1 -2127301773.4849998950617013109281719714942626 0.2130888188588014904818063099091527 0.0001872970947923540573383047918338 1.0001873146370836605420949451842735 GT 1 -557330520.1926347413481866557726911698128448 2.0547909725935872652140972606269634 0.0754693819138362414433124520353348 1.0784691101677624206394330419800995 GT 1 -8756028990452604635074084068020253794.4671135860017551894826163958219523 0.7666597912493930422527984803484925 0.0137077917039891288561211157560978 1.0138026109864660678666992073160699 GT 1 -775790198421320495520213734.6882352980721246495130567818936623 0.4151625304415281409222951754216492 0.0857835808793064240297515483572843 1.0896879531487559773785777134958566 GT 1 -15915375165552880649078.6620049070115994279229924409381124 0.3131884089493125851351663127015919 0.0981172746228381771144946141658938 1.1032707835839259677395871356267069 GT 1 -1102722633847076772113736709624.1382991602094210777291695549020810 0.4640564509713709620525667777768954 0.0673910533395695011590385642731359 1.0697693014087775795428058184381498 GT 1 -2258751015072171781767104.3727797231136553467582732485952666 0.8332535897090225005816295500014221 0.0161259389573760285090980032480201 1.0162573768661868574844619690074818 GT 1 -10838316748589.1657276077729521960411496912645525 0.0475186654909734864651414047016891 0.0866151058059106019377562714033501 1.0905979163643913636182265530241064 GT 1 -1201971623363860027579605962939127442461369.1477800035553011910726120073050655 0.0793587308919172957777365362782668 0.0160156117853026015942464510866704 1.0161452476912142777869870404859463 GT 1 -175.9975855008837321280861411142591803 0.2724795287255388421675873193598734 0.0905868650742680818240204249815514 1.0949557941880207611840402746692927 GT 1 -211515360639549737538920858428.7760412719555556407043916805576096 0.4264263990393684519565134362544933 0.0127918654454415233892563870029490 1.0128743858380596867209228511800742 GT 1 -4174370228491641170.8988183379437010240180334122047142 0.4575497726037715287926937877363474 0.0133705979064298615224549448034103 1.0134607891937838057752181362791087 GT 1 -1128105249157769553581.1058355491408204461203782692549830 2.5509196445988973176897674466967865 0.0630320030233679311034479635672412 1.0651061521011411110302946102852993 GT 1 -2356979306.5861124609773696073433876157618997 0.7679565344282957084353101098344218 0.0301772377649491894884949150089951 1.0306419435252302869289008260343192 GT 1 -634672464814507671815101.6480951052371202587478954511443384 0.5277279832411880475218247014282085 0.0686712340454856335920838218176308 1.0711429319743759566077169113857498 GT 1 -576548699865432001.0329099887939418484358440390659274 0.9390929155619285608523730078425875 0.0646659832640904213905678417929983 1.0668515763367429382885655951148650 GT 1 -2145163652120023882250174700919396960687621.2543310344566017082983351145565544 2.5919472899210527623843474120376260 0.0080249094848448259434103552719488 1.0080572823803219448853339796740857 GT 1 -15783523637183867276208024.6360415461190099971658718175986384 1.6345353876619911889550798984655502 0.0458809710108191395157891181999226 1.0469668469842968554473793010927657 GT 1 -11445.6860749242478660234790877983425626 0.1045735680485855209183039506153036 0.0708502461537502847407404334665783 1.0734853541860988083320742468469804 GT 1 -780686893479060842992082362658854.6913438781641807194996499319649615 1.2951323622698842953202525165720333 0.0407570983366533295106861332116532 1.0416109497642927878343802029593974 GT 1 -1655728.5778081033680637227927793796191889 0.6553528587472803681546997075686284 0.0341839429955551291577063493276098 1.0347818800809356609817637376853604 GT 1 -19962639.7986945991037645533239021973904429 1.0501022283140513420741342593595481 0.0264954892436271963372118520327192 1.0268528206352936267127388289708414 GT 1 -9537348074927301595242123506485017.5575240763224528248759348712397547 0.0265625650416971910570112027911986 0.0303729870040589151018629450773419 1.0308438041171098634768465703455778 GT 1 -67704122375723785281010265577839158500667.9476942142254550225834235421171718 0.1619003489575336040513321012365917 0.0229749565901563351505396749221063 1.0232429942997630254025151652372758 GT 1 -104153590023438259.0705354794117574326767326919153302 0.3995225249535851896386397867485935 0.0820031165513385046042600464288216 1.0855612833035079856946673631031065 GT 1 -4566095904076733770891.1374976694033131955878122911149698 0.3302738595457101450151009086592306 0.0288931897464866699923512803224619 1.0293188164793124380437249138057485 GT 1 -696144904971273121.5834110159011536943927617795627910 0.4891570123314008519512384706167083 0.0318749771122556269151855199910380 1.0323940441696930875395055890138934 GT 1 -26742.1224283206560514111124805934804261 0.2620663155510106307287013593139140 0.0657896235126912091141960730552416 1.0680536236248106576861775082511115 GT 1 -22.2893990826475704614939744306757252 0.0618179456558066994918874193924390 0.0109362288371287905793063069934814 1.0109964689904026759290767168816232 GT 1 -393305778479.8679300547661109743155034806200912 0.3332241586963593801154783748889408 0.0726935658664530263334580850242574 1.0754712026326317680835692597931596 GT 1 -91144744676422.8146717887194384507390237194032108 2.1937197903803631860291465587249608 0.0506044740938497159761519432306279 1.0519297854248434904270564659377393 GT 1 -17691524603073844808851573735.4435485328109024562658187806967969 1.7647303250702504384140350390465859 0.0310217740438947862476876153826460 1.0315131379773736393418868621630073 GT 1 -7569635217050850836879.5654527895319560470440618179906786 0.2990195510885791810012572966101862 0.0406687921432091536595644019811536 1.0415188957820480040828959998382564 GT 1 -276891037494.5233540851272965886771896457400197 0.1383023864726905279111049492411286 0.0665290679964640564323331536303385 1.0688454552066196017179178917245196 GT 1 -35280038147327404.7187759379317423709879288986299754 0.1639238396146439853370629791036259 0.0977319439749224205737218078121107 1.1028436234399435401629640688609565 GT 1 -22286111702002.4080087421718591133597105682390595 0.6717009539172942856864295694843272 0.0460742621293706944084704744123159 1.0471694534666708231430520925716806 GT 1 -227687.1003823414672504396864017395936585 0.5787544585911393615406580799591898 0.0866634642287364825601595283134609 1.0906508619553762950192225066001265 GT 1 -3546322249765429064754015768247862963.7815014536113786645748918035706623 0.2811387787484173461511449233038785 0.0750248155890000682803007523006834 1.0779883694933639244311275214928514 GT 1 -11746355643.4305615522376327273077710865935751 0.4072907748829573892507721515248699 0.0572699063469992722844783848782621 1.0589752582583249166275942883883553 GT 1 -679155.0408697683993418968505792712862700 2.4444325637238715851175837237555160 0.0624600758711097808705610557900409 1.0644959363068350468540325636286629 GT 1 -11754060.7377803782632001339609194616218678 0.3304456070631774734320456620703318 0.0750641355124420271281339169854129 1.0780308795626683824051228474339265 GT 1 -2810350.6830955150297954789417671044970277 2.6275435323913691031614922876586050 0.0756615992306716794361674482202109 1.0817720780841243048756962575431515 LT 2 -208874896263042376150.3758608851759909854350132292174378 0.2924088380340396138819077257005779 0.0931202581444210158546687696336582 1.0977454265710513172722229686022422 GT 1 -19694393.8165831379070837503271760193056583 0.7960247830363856477332953573357483 0.0841256033185119908635282529448423 1.0878760452367826396206302570747632 GT 1 -183259573451946960368394207.0907400995410901878383304695975745 1.2417422056234080268020490231691467 0.0460644531484387174192721611677484 1.0471591707684363005709954444695517 GT 1 -2404803774167224944222349647019224676028.7534816858492040037302701363441108 0.1847078412888150081022437332676990 0.0531421013355612363121734851182497 1.0546062512639359067359400856579213 GT 1 -41489731188231963364736470712.4989728781706845573354579771876614 2.5380454630378075443603189410529405 0.0391733626275928824025000577420733 1.0399612844412128066574548212698260 GT 1 -269109870706503372867.4149422819729929273623081167597692 0.0200693392717738529932858779376142 0.0149627921754187723693189304481220 1.0150758640822851923809657799065959 GT 1 -1192.9046816395693474512755060252930343 0.6643109728356388484396974570399773 0.0010355983421833503657049057221272 1.0010361349446482546868809440013696 GT 1 -93748756595504.2703102977630625211750566137803387 0.2655175249783907219300403628458235 0.0423852624980764440925492951018296 1.0433097348171963935078951127774496 GT 1 -3440006584287917765239404139.8071819736595260710013027956613792 1.3107608832899060801703609846289027 0.0109697887261648568380262273061040 1.0110304005319141116875444493267575 GT 1 -30332297333211175410438017530751961355608.2476776251437435466975086556682664 0.5000539619674329827267863162812091 0.0113704398895461442447068383506225 1.0114355775746589675451100841511230 GT 1 -2468933266826329256087323193061948062.1482483547782788262066747167103732 0.4261371287309314210404074997761046 0.0387616870766328016002857808164599 1.0395329164433551832630304539914899 GT 1 -717662487946242865317710006090888.6784182371533977690382469496950454 1.0366415161844796879507930656169473 0.0384744563610776230005301146457893 1.0392341478590472795590878919824250 GT 1 -55913773612055537392244071975.2485141807752429512535424279270224 0.8296861945722712822544989406462357 0.0212905308569858378772048150360010 1.0215204433718545841905428666828643 GT 1 -64917920053164711213157329791307.5551829836385175012456465509517130 0.1288791757563725476252575354860346 0.0778983177500532055108700097368127 1.0810997770704735803446202325196083 GT 1 -22711675327875.1938572979863572754849932547962915 1.0385956815911900135912002866894024 0.0099736546074722756121283484355690 1.0100237246999775659290038299375962 GT 1 -1346544977675554483125257.1906451045191907964762442700046787 2.2941067529174205204209661028720607 0.0216963589889494597762188834476926 1.0219351857521434146386033392853408 GT 1 -3217510486722876243313374346230790.2151403814508671830032536494225884 1.6611031048504759496971176660097174 0.0203581120971709919360090202354070 1.0205681946071799584814269619980115 GT 1 -454733710371332137.7525749495767226284788477272726523 0.6513671238826527718455431299243480 0.0598605828012795930095230824609164 1.0617270985469915298515920403511244 GT 1 -5919927348004572181888320948323857.2934137563662824107057872621964161 0.4294188796046339962159678049271505 0.0913527849567486965430527737854581 1.0957983623984826165498418605664962 GT 1 -157235398526191040024244514896.4818928199547771559968729924811393 0.5311711388707931148059297881813509 0.0393934851882196521088795634150209 1.0401904077509043624158093562260743 GT 1 -234878.5425690629295338271176528483168529 0.4265313238668068396194818592405554 0.0841517815390116725505140907570964 1.0879046284079299017508899472678325 GT 1 -809865760.5026795312015131991785778325655202 1.3121603774839531952971134971126709 0.0885450836209533911914870191201836 1.0927131469982834514605888819379341 GT 1 -3193844892190188773936528703528.0515564709716359956071062599233905 0.5698800103077425798626284467902270 0.0313672863430529025722588030310364 1.0318697754175908858156123866023100 GT 1 -12.7543909228446346263494792834443547 2.1658204179313303253138484484778083 0.0275944164385790210156486729446769 1.0279822945148802759119644820874679 GT 1 -8065.3280183140223707569883380462175751 0.1113508543900379772190467418245849 0.0146995069800002405125149024457839 1.0148086152783134639372782358349659 GT 1 -10377072846954896103269.9810545657644634514976556368541980 1.8147802974466543142940289689333207 0.0650353192675202940344793562711357 1.0672465250245976544757125317537612 GT 1 -1149193104273.8186580620066428381188474428439934 2.1383430941819570509910728275661420 0.0401428890680253506283043461084130 1.0409708483776339476904873451381885 GT 1 -365953262905235456119289523270701611.7744165474870473697445416592991312 0.0771047453587601244236804536530914 0.0079688888631198905693292802389082 1.0080008101558972668534474726503804 GT 1 -12079171512950152648106.9630080987606786002256271577034006 0.3929759384515007827169255735622879 0.0646730017496652573524825982825997 1.0668590800859723736425154770158708 GT 1 -906002249232463381642695813662170.1207419184756734207539855422373438 0.9113010398543977998686087333686803 0.0363373513591954029701629299308641 1.0370139951609557250587932921488076 GT 1 -132165930.4303800594059565148435083226644331 0.0718968900086634054802640220807488 0.0557011004105730548641223064451058 1.0573125320326245312484688972046910 GT 1 -28485090790117017861446056597.3856512900161885585846959446659956 0.1774799469514011099137841618348714 0.0085145478739237474702176225178959 1.0085510037208766949517321426917727 GT 1 -145542148684996888010534918724733284.5647574499135804692768626953289750 1.0418308127456191119859919279999191 0.0150316541048314902121375266554791 1.0151457744734622527092491042800171 GT 1 -1481002101.3761301572027957043989669780769413 0.1659251011989994983867230692303709 0.0536336620924033122379859023008006 1.0551255355181647149442020106309086 GT 1 -9.9967113308818659346017181555811788 0.3354420124845091156090857822935290 0.0394599793404766498502265224183493 1.0402596311558407670022969327870252 GT 1 -305021834792842027823.6440053665519954676849601219789118 0.0344838869332421932209075761726758 0.0494326869457867524493966834731640 1.0506963009875632154113113849453167 GT 1 -15899403214598562816.2907299570686300329970055319479832 0.4346028600672919154004283708208051 0.0983837008661513440780260877421779 1.1035662384099395409127007113806326 GT 1 -109136499431233827106.3521246745865936031119367729287939 0.9163524977648749512808032727382328 0.0894086300594331085003830216011113 1.0936610334593691795498710538180301 GT 1 -291529872329539191293919989.6693410449148635559750241153629346 0.0364967779353407610232347140273199 0.0175675518813407308766816772981010 1.0177236926979728717781734601402174 GT 1 -29937500727219054892066103042.1217996424975674061040179081571443 0.7587247287429196788921021673643425 0.0596351908424984355449651267987481 1.0614873841590082617450269993656763 GT 1 -551.1714226745012791171580766302100644 1.7471482849640327536457063281906866 0.0511624508065919476131412214548305 1.0525176760649677675315597583803033 GT 1 -3.3498500718258135791541350927285392 0.3888152183410893244089992934296059 0.0103859601016092479905542154896873 1.0104402705566514196112047006214491 GT 1 -48817129354268576539974851646.9213142229680436854510229965233867 0.7481317839169119207825698567395493 0.0141691193587374661082528286823006 1.0142704597386569320554622643550953 GT 1 -15670817975406816313372271.6091793608957085335892952050469951 0.2246703224277602879787853094418622 0.0405560765547663495648416580796697 1.0414014087594848425595350360117941 GT 1 -4951634280771225300.6066806280937935452395635280327587 0.2343625408494495649612184595621520 0.0266985570490265591418778145484537 1.0270614370161395234590217664705410 GT 1 -78683567137820668473361110148.5274045645317435011163292052689258 0.8204469262996726845896371760540905 0.0084096601201692656119484412700533 1.0084452208211256021798147951311904 GT 1 -20665418430.0819617046719678726150155183940363 0.7495713611675110700788593227411843 0.0994103208464979059209893115359923 1.1047055311475734416666074480743955 GT 1 -3113540801259054296.5109226229836655279076204672772649 0.0286929041883052409422623240542291 0.0040716616566643336170015782857098 1.0040799734405072420200043214746887 GT 1 -13949384741684341.6687782805689214985116548537676336 1.0057407974865123990537519528565339 0.0396922763562518616337571350554817 1.0405015004217381874151608377939246 GT 1 -78582891873155419263.1117017534041610283325566044281348 0.2043645608738463666285655590490507 0.0806768961808454826483149392124174 1.0841176364591732840111341408205400 GT 1 -38798695438381121984999.2679281670821047338619045949128906 1.5883571295590894181629759755744756 0.0564814817752583545592400394786729 1.0581392872069036871732335372876275 GT 1 -7627657149230845.9728369076177206957782080367523977 0.6130681799107905076121360496161741 0.0710858152976026969736776204774897 1.0737389182752857203947812069291295 GT 1 -3.4880231548418009065823250372992701 1.7208218477287842470868171018309018 0.0368659324267303124380882996351273 1.0375626582101988803245299724838963 GT 1 -18284979.7309088464456221566695208698094301 4.0441456722094547259601360325539958 0.0633665111892390954083764086077159 1.0654632271482766618929995884930590 LT 1 -10826139405933296681486428371170411848253.2547168003174654696809495041914153 0.6206447091830846141854107432185084 0.0062319039063704291012918907601764 1.0062514032738545224007907481818478 GT 1 -22239256.1706490504219255083134680717447631 1.9684570736359771477892935480822482 0.0844082155438237767782007157019923 1.0881846637965633725960432178854510 GT 1 -227029279399059114960155483498887405518.3933039290954624080710665380056431 2.2919052429247022248593634128113161 0.0958910070383147537532616801667443 1.1058862185654448854429649527972220 GT 2 -71821.3641552501648051337305227388185260 4.8656700208885592347761760074115713 0.0593525013984106533114816540647367 1.0611868125518476292378756375018668 LT 1 -265397486377005389502242157106895638369001.5824353886704309282783314999127377 0.1468025967670775639513119980731227 0.0593026544183685797509907935319587 1.0611338217562389924321613841396252 GT 1 -79361960599181851222249333748217212.0062925903554049221645278004627744 1.8526074046922230759977143883958696 0.0118245342496173114567446990238435 1.0118950000893913232660441918884703 GT 1 -6888597586034226980784508208547.4982640518615540330798406167383465 0.7635352811392232340359851471095722 0.0565500138873026413599956733266183 1.0582119244681159323397250602359739 GT 1 -22266700016200232.3433309023033812187013985235343526 0.4330927944515344625445034336599562 0.0966581721067202689112005854092356 1.1016542502488170830853391482293440 GT 1 -4.2469860355280946135824118134082028 1.0264170355863593936923524239894465 0.0502691923718526662292950717195360 1.0515766949331156811619419578536634 GT 1 -47821199005985025743002.8327888479360135879468063091126505 0.7968217581376401123099156707461539 0.0869142083116951036308403816314474 1.0909254360018759433370728639769526 GT 1 -53263367614752999402099.3471017120934212090424450443882536 0.9014647588307435580764194267720730 0.0606801286692962318949870467843898 1.0625992067378548425350167765502554 GT 1 -2667234849749641859299.2496114846677377931706670264489882 0.3530454363386524459962214210759144 0.0537087100728513456130735027615140 1.0552048398565549846398778544168643 GT 1 -3428385078075151635657182131203.5154515375330591363449604299505853 0.2379234484702114052090516271797042 0.0011471184808783307597112561771590 1.0011477769248732652223158768999448 GT 1 -237436237925762901.2203468093559879354535489130880142 0.5742933230510919655042087365247759 0.0109998504913327991204339811357454 1.0110607961878820660333233981686650 GT 1 -62628373353365448532058694996558947.5849716102998346205014685178010586 3.2181578466003643869759533489623311 0.0342896936354029712444032175669196 1.0348913796373062524255670614509541 GT 1 -110951475331.8237345980661568802289797896526248 0.2079658173936410310684022850997486 0.0452034758984382565346430629033376 1.0462570249707142040224369027070114 GT 1 -2579467704381.2760315117555972463531553126858892 0.5536964708498926313186564480269183 0.0657077009198835039682531673163312 1.0679659356659638017878052412191075 GT 1 -4265210452599649037269007.7649301699534413375465722928793740 2.2235866374532346499390924007163249 0.0399247866781617252254477200308210 1.0407436503789893070771295696319922 GT 1 -1586785899696759807219844556403663902364927.6980420612286714948070944784995600 0.5081108000067229980029289474431278 0.0790010699343540972596779588084737 1.0822964044369014059064614307140063 GT 1 -44691054131570766.0608163346065920299027922428992765 1.9728661412794223690248774910103160 0.0712666422145081434531168607223757 1.0739336020496193693219499305313429 GT 1 -307.2653086372438983962579364991523963 2.3207141644854705473002124721450566 0.0565110715493987569003486577817801 1.0581706487939445447517727510748047 GT 1 -357744068135218879788749412096433258.3373330177918646966926291571365200 0.8666335611494123865900309782011498 0.0584859333596010272846040225142028 1.0602659903269718977819022661478218 GT 1 -21088104662.5701390398569430605991941819914562 0.4507196565121174444041484258487900 0.0177986537165667535759020729005178 1.0179589546963671097788337125137238 GT 1 -58410916399884.2597515236946405801346012085001578 0.8087641601353799661770001666302100 0.0461267211703467899526923611933738 1.0472244477721821549306730911683347 GT 1 -381780032855382470114163433799328.1528311626216521138705504931972207 0.3509483783081869951562613829859666 0.0754975488578239716976442998737564 1.0784995768418946079781625798438139 GT 1 -258.9738217587171565919793838409402337 0.5712235634039187228134461213261608 0.0195685229008949054298636846691977 1.0197625214593423424455493717600901 GT 1 -2024784952099952.3764295604406970526460951964630571 1.1392424172981661949766537557783646 0.0523714891763091591739863243047837 1.0537927197464818419018401914343360 GT 1 -756.2964976563961649900772597082230144 0.8498729766242716044827717192630298 0.0404743091723308212418015918844909 1.0413161886685810102737401579451984 GT 1 -64259948976856.8962825983025313758098832839090570 2.7989003470884406301816398965522402 0.0194326773926324797612995157561084 1.0196239741960803154790928053910844 GT 1 -372679551543.0807394665716983696427028929561490 0.9730668005082105868208526480948614 0.0797146525956317221748739792707575 1.0830714968066498991322908050740307 GT 1 -1034608773759.8881173051441496411378307315875846 0.8678569638997886269997325035212347 0.0434270017836561603202115401505639 1.0443981749623159095637070726958520 GT 1 -18116270003966210064291239768980675797334630.4532995853738096518647677152712446 0.5689544537526791906123091296181051 0.0257315652526854054750692155511476 1.0260684129538180501935064156307609 GT 1 -768855063.2039229387850564544179773261853864 1.7814334120378552847445226794376273 0.0462296692993185154561275717960550 1.0473323800175526742026985341636942 GT 1 -13608234881841081257190988163332315165172053.9562016831756297928565431174010269 3.0674698706048338898578475437063947 0.0510146352019994808817433376310049 1.0537327866013084342980740750614978 LT 2 -1661758659893873184242790552105824023827.3822372775516509747774370290583918 1.0906443442326091161575950862472533 0.0314522344870997486052211787272138 1.0319574782878342404422665748123223 GT 1 -236523289608438248769409155.7879010048416488981758332060063260 0.1805872844976526406823048103531315 0.0775159355575729039328349771487265 1.0806851775338097343884801087183124 GT 1 -10431785584638386932.5527226182293457340564435273656728 2.3975937414906197996627628810307345 0.0510933616852210986301406723774105 1.0524448642267272414545907510842074 GT 1 -8892017011079330801398401720344068164134502.8502295261249133163679375594264281 0.3654617997222343666242862624458007 0.0786382701534926672223856898342558 1.0819025621307285508182630748365220 GT 1 -165926180730.4135793902040425917068699020178305 0.4207461483518037086996302597574463 0.0922846241028809681577917580725217 1.0968244121889063405113848400478726 GT 1 -2812974293.3713695528346169182658291353064131 0.3677980236667372885691436280074086 0.0770624209395102877117071388095768 1.0801936750863456705759050166200358 GT 1 -1.6717227849646054812671479229487127 0.9535058268628989696585334695906847 0.0238376188007735892633232936318710 1.0241263322281582087876847930173875 GT 1 -88692838488360869688962.2792440793565639492917052259620807 1.4537430492030480617175219618735977 0.0570008918787487071505160217368661 1.0586899421378317014311230085998702 GT 1 -28035827407954595151291.0064716139819821520547230352647202 0.0980098466355062932929237572899227 0.0086314922075327227927813434212213 1.0086689592900799575921511919783699 GT 1 -944065337884405383866514684669139625.9456721188836608787553968016693174 0.6137291799179838477325915245586483 0.0613152604818832288461151709335257 1.0632755968096710315523673754239455 GT 1 -4777.3981628314923472796169453478385928 0.5571528119877312941261608865799595 0.0852314720125281897777543697737623 1.0890842205872374514409708382602191 GT 1 -135834302008.3778464000781490084656124516976911 0.9412543143937694103098748084578074 0.0365805613355863121180043594570147 1.0372664078415409032323158565252343 GT 1 -17611583692785903503332.0168545980653260344532720940428149 1.4507761436504855374232518968246334 0.0972799319118244134922491861321877 1.1023427757429328516095145288582324 GT 1 -3878.4391850387122711382083742110780532 0.0379493359635700754467042095130876 0.0719731613883296203517168182761958 1.0746946256963899023890382294644557 GT 1 -6826145107.6198053571307718396300336463010459 0.6229371559873531148135240167739456 0.0298047987845662124291262500097607 1.0302579893640059230812068441332929 GT 1 -89511469501079308231860047262832317272238.5548704232948415588214835164517455 0.1851482516891516428584863271384122 0.0596544925852500152118962414847828 1.0615079101725917213735145248160529 GT 1 -1.1567898995449605378437772484436519 0.2289573049506235763747465831776212 0.0590220839593926923509233626095383 1.0608356082793680774616195074729633 GT 1 -18731683208227014312116393620799602026979.0853860781366870310310445659281638 0.9014940093483698759574525898983715 0.0258943966620955163810506733343165 1.0262355588986995887871546213785792 GT 1 -66094198470909183313.9620800774194833546817481491457812 3.7158512004185460513221264921550398 0.0803317549784464986843350884580058 1.0837422772094748706844132140803181 LT 1 -22383.0070412578856853990493595184868750 1.8881012693725424865201890390367160 0.0400053252650910460018118265779575 1.0408275416867771355692403599711648 GT 1 -24042608736514669326146.9057400335217547539312243789144472 1.3796918485617103703125182114670637 0.0574024247621339958661381817150111 1.0591158369147989114297462724877805 GT 1 -684749689529712294.5763761355780703622426981208940682 0.0212474616024418232296853877555519 0.0126057630109673804509725088199726 1.0126858897259237604054068179692089 GT 1 -87842789304974478795109434466.0173429419351024044274599906921950 0.2865016115596300166866198801194587 0.0639090834878251880628390125083603 1.0660426741958241122198754680444590 GT 1 -583119028319455677195038410905462917986.8185687908130759445759156940768965 1.2952824003763231064354578497040876 0.0434153702899534783201740745702912 1.0443860154898991674973261964493227 GT 1 -748.7914520764362513323966627805509848 2.3711689180055837448083119312627555 0.0062555284659338791468496508998445 1.0062751762652301302128061553537930 GT 1 -612574596055745591.3010037591845972590249920852778548 0.3781243377711549167566759802861024 0.0860329893520161702453495514035900 1.0899608015623187216254478478308833 GT 1 -232952007285558425990673502209357.5865292182745468624985253100860097 0.3014792859753190426564115944574917 0.0614180809329319412684127772406503 1.0633851395330569791513623595119801 GT 1 -12728577634168446288789977687740417458143.0424804199236742593114201181184723 0.4349660594058392571144607528738790 0.0724451501902041746491148296313964 1.0752033489878503540901829064183917 GT 1 -9136350.4742739941991390521557631053374493 0.6521577389903460517065923650163737 0.0801019862698892780694365189593717 1.0834924697250649184478345635232817 GT 1 -2613656777530979025995914.2379153770083553476873111323592027 0.4648127365808623079657906552046471 0.0916036681232388654513428977898658 1.0960745067633325425167641111886238 GT 1 -1029761546128049982658.3152569990600386767286700346205881 1.3714470598698314645466062455274016 0.0475179619904359293964617575287773 1.0486840298918314331104655900179488 GT 1 -119943078861079418229454919122831532.1156226006135954152366836460083688 0.9029195229709318414379840724486521 0.0767921742983226600615055105762082 1.0799009065509737168174190177475836 GT 1 -116933622019314.9168549575147653633667625789047470 2.4673002946416960178332314698706857 0.0686047354572029834805248840777920 1.0710715326825622934682210065537271 GT 1 -4206555171007285.7358423059129426382618049078658613 0.0573145061224396971353628300651405 0.0154456417870448409465244893006135 1.0155661683967685191897864043364336 GT 1 -6748.4210065734350202242072106017663240 2.7082234061722729379457202980955779 0.0863723932130084403376005603851697 1.0903322229504714856407425661770892 LT 1 -654250299597046823826735.1967410344416823722662848582554838 1.8509582809269651417267703892908047 0.0457771229022481101012347383100092 1.0468580110274462513975634508995847 GT 1 -264.0101869756547411068933732967167836 0.3835911371138332381691637073830387 0.0939385325627867782629859112847124 1.0986481303870794746459688840607914 GT 1 -1178052345220773835102488511281590817799.0456651372359947303938708004484409 0.9307820744888727421906353643918859 0.0155799290461201084766683230638638 1.0157025716504565840215822808123579 GT 1 -34334.0399949939547158173561817592255779 0.7837737666735857253092941652848787 0.0292734299827428851784146518983831 1.0297104466211973338499165600055801 GT 1 -1966099853417545481338293323.3299317808720376912164863604087414 3.9197664404046390810313308845967256 0.0452446476634714479103108949461892 1.0463001468838160040762159366440466 LT 1 -302896353317288074494389523.1243521675248739372319419072117176 0.2139096164640503592086094878370841 0.0485225285229451809167830290585992 1.0497392693764127675148579970599783 GT 1 -10.4689551083745978424603187459478237 1.1300612437416913398087312467291571 0.0355809786949667608488259354266309 1.0362294094094089884072836227391120 GT 1 -311944.1325781992089298062127001155893421 1.4905113469788382651467680581812927 0.0884159388257403192076640655073495 1.0925714662146916179342682263288791 GT 1 -4533974839804637543.7043811758824296883271623278013865 2.3209698107739818887578220101360896 0.0881745049164728940151297125262763 1.0923066503264017125732212907956722 GT 1 -650715452782586609443434924544649252.3321469988785724506720896900907256 1.5776190504198003167310623988341592 0.0701749694202772896871969886072874 1.0727588496968161019629453454324252 GT 1 -416898878340129622583991312160.2082593916705198469778915182084953 0.0220240093542635061196649535011721 0.0539380917579288629979685053139204 1.0554472699551463863633478615957635 GT 1 -9089977799369.3582121640938801332588857631176229 0.7614639635370135622939777300891991 0.0260539274294087159681435250670796 1.0263993438430547482693491135399740 GT 1 -16347711583213079129046093.1679171147792078561720385610072378 0.5203116451137704911855629353144502 0.0128104491255689581044673785320287 1.0128932104955895558494646796424971 GT 1 -1119966060822836797102189048752051386549.2812406236559599149581657893597764 1.6892943584278342007419896335450580 0.0146467003075759083779773911430670 1.0147550222295169140926155760424217 GT 1 -50466120470009323462195938074451.7203283776656368145654871555657930 0.6427057404048785652850349782656439 0.0459945766054581582793805230641857 1.0470859226500704706757830477449817 GT 1 -160276.9134092070650653602636319853530777 2.6346988834616204255633486333918797 0.0992885789873572244272702490501480 1.1045703601211250408668254640018765 LT 1 -80326.5324894948356585999816481670792537 3.2595940789721657865748104491090690 0.0993381152658296853313450651800834 1.1046253584696926751374699977294509 LT 1 -35967131164300217971954980764.7397896733827363289721855258216372 1.3871393125581918094997824379319705 0.0053908733379972672364538111820798 1.0054054565300441369992545002668240 GT 1 -2636527195.0915508153738043361681632343227150 0.4475229282603101912934021551582127 0.0622707573126469944026848256169705 1.0642940254958900967084728301505120 GT 1 -988528771.8556977541246701853494723042849455 1.3511730242967986061372367052797008 0.0208505726432295140040129578022447 1.0210710154565453645659581227491658 GT 1 -650369342171125543974082768330.9679725935455261938620007676030755 0.5078877165948204489854423597274303 0.0214925500150827341593861165662211 1.0217268784959739254036780883593070 GT 1 -11414553351166390967496231.5890315658745543661805729004291295 1.5172565812138166566115896396918687 0.0857289491411309244093215358817738 1.0896281969414111528023197381518501 GT 1 -368250477519346326576472118881434488834745.8843890080324818290845177134041141 0.7667207948941916026685958689346534 0.0142092649396786082666161577653641 1.0143111831519396625955128902432883 GT 1 -639635647562669098379843.2336479700191360803961828218113991 0.7742908714737001247948309266460068 0.0189075300757456494969435811874572 1.0190885629780584368332464029735607 GT 1 -2063665381578799811171134855513756497259.3947000346178837243596763711981824 0.4960072730982343685222573009316955 0.0026552958122367395110643567982346 1.0026588273630887091204494928589957 GT 1 -37625010498029212542719814896591.0824965957402581661609534417280815 1.9646153387112067937954432964456016 0.0850993398130417965713460191017405 1.0889397877022437126182227782089130 GT 1 -3333890968568069427329771245.1352964834357907977359381458511635 0.1498080382645374404316931780773480 0.0856329751249030605881393148382308 1.0895232291868953069951634081990405 GT 1 -524435677967745182363846677438899.4122346469644902804452403548065391 0.5148561388401358635030490093522138 0.0782914908744132729223059134748704 1.0815262560346950379120079171042171 GT 1 -2033433738191602796.7954403789488045449633251091085639 0.5561561950663554737673049627556010 0.0291001734196298681138052879382489 1.0295319812234498884171394339950709 GT 1 -4030080311535550690931426985.1398828303340263715819103188639351 0.3585039230801280773188177104019352 0.0928788077113333457476803498517253 1.0974792189523353216395754155057625 GT 1 -10670111460.4770437977815459931899512315264978 3.4700909684904272851887999993070521 0.0446242859183419178153106212258000 1.0456505979833791261967291157293793 LT 1 -44596.4008195140558003692718984632551611 0.4664069272573608748027867801076157 0.0999112065802309270963564202249218 1.1052618611690414432070073493643532 GT 1 -268621652888254320428562687637747577.3507634678135988637014648582422438 1.1560454623271117204807638733188990 0.0874083680460072428062515187733795 1.0914667799873804581447584811646764 GT 1 -866167460212082790687290904974997581.3897602070369249396693506924344459 0.6446576635593257660004671872748216 0.0572002274873573175593830185790244 1.0589013492092835771517401936033754 GT 1 -253749239314257968.5939356422606981957311661173768726 0.1610592245575115883549124872753230 0.0500330902242745291991097512436797 1.0513281268092181096287746892649334 GT 1 -2110849470457259235192738378.3216095437088496606314559585248955 0.8440037582910612089710651936173176 0.0307464049061919450528471437487678 1.0312289932878014583412849127603850 GT 1 -482763922959657857881091504.8808911407896631297348303254528497 0.2868697846960249526044058639084521 0.0955027301568182602047491466274331 1.1003759925668410057499335781193615 GT 1 -85315440.4276886648001488458793039838052458 1.0332835187626546730151731715535305 0.0630478733448407249017853529919418 1.0651230901992735067815957842065344 GT 1 -33787648282642196339586836265184128.6423733846401741355248621528160376 7.0076747583370984371825513794585967 0.0889790054235393320134741262583101 1.0931893363494589974793599727426319 LT 1 -6586.1997461977771768743499532138245676 1.4847152888924288152548207764107827 0.0910288634279040468013711430312166 1.0954419382547827301432313471401147 GT 1 -116315749713557128002077973548098061557360.0355534415942596055681875563942052 0.0336306363710401592982270207911344 0.0337152688335984540596089825951190 1.0342967354404297715149423268870393 GT 1 -97250803809737.2751641896342524793172312087141058 0.3024592726961702150441169052274443 0.0260134227154514286875999752588649 1.0263577564565851624384280791761500 GT 1 -6358296204442824.9386611110628600356987417118141634 0.5764114896158514650301417700636481 0.0693189395873486840181910932840510 1.0718386378281428230401740775319219 GT 1 -6937832728233.1181229093879120461270663620895853 1.0228661296364343531838676383286913 0.0970326144991743269803258600750004 1.1020688441567050759234013912412223 GT 1 -359388267620159751590221436051335871022.9127619954601254830039508582183336 1.0930629775599538194156109778181721 0.0131409240642201699894131420713882 1.0132280299496295632863503274908655 GT 1 -1996399156390632182403132136598.8829944156844827533152347472072311 1.1948661676400842234307890119391542 0.0084313828171566729460382009152228 1.0084671279878818669916763586802792 GT 1 -15073.6721269173198555206300051800780393 0.5914481187918515106518428007883604 0.0993155867587780141293066494316459 1.1046003455034705039744685966499718 GT 1 -542.8337997851616127364535254184115586 1.4290697682463026770218230827281506 0.0289606358883061478659155144562651 1.0293882717476509669581190918829580 GT 1 -463852596932276173.0268065235518820917513892948169795 0.6792422884730879274003987476756524 0.0765065414775705793122846875911262 1.0795915627220936073278927009448074 GT 1 -23531941235061556599248289629.3062864050617603515112853015476356 0.6804872340702588123656389064674917 0.0523851562216199623149089354528719 1.0538071422165861199938845936903110 GT 1 -50887088.9403624635987480328636352179212585 1.9837699139975538721446960493433027 0.0076066596373357653818663277905752 1.0076357378251935233435296378225545 GT 1 -288132184173352674799818083089800.7653040248639025062675182876178763 1.3706039925567581060651346474641534 0.0868014384478302747282497629107160 1.0908019395005692766192150458538608 GT 1 -4550722.8965336510213305007172633627448597 2.2428508655442128353657912667330449 0.0772110950688254379349611223671175 1.0803547760196921663186799080427768 GT 1 -2462134487353129.1792317905472821834111244213250656 0.6933046800693221447417656170482102 0.0406881031202476356614092895785822 1.0415390256092070637194554221442481 GT 1 -30.9796697781132485320718417428820669 0.1141632271134395234646554317138651 0.0649066131212641764360116366639372 1.0671088756663360204808657950325305 GT 1 -148720561601809813489.9885486067549837673930430152745864 0.0706637776376994341920819754978250 0.0845860420559977127354149950267926 1.0883789029609910393464768473108724 GT 1 -31551729863803273554626421972150984476411.3187817382289105744338391181679340 0.3107970406227710785007328712044791 0.0946945929288665873710423374240859 1.0994829258342383346114151324068881 GT 1 -499291309512981767659079043126411087159.9343762772899831358184903093270149 1.4982397197890246409885986465546956 0.0593037586928345793733646225813855 1.0611349956461402818844844733176568 GT 1 -2573721165081342339450322650394821178267802.3445595422676654525779724266734495 0.1985922657913325808775278337971788 0.0933750204406899859592380750045105 1.0980263878444756298436235489161296 GT 1 -7799128471.4115324199121780971164492204053620 0.0744603328304625646153071755866952 0.0113790614501923823814640262120625 1.0114442983317427407384141396897541 GT 1 -666471968439225418539660.4069282335380786053862183167144122 1.3652139298170723806429769894448198 0.0158484950024054584100155164378208 1.0159754252883252007973794854917356 GT 1 -1692045012324.8238251549572122800720068303204874 2.4985472398904903476369529470016843 0.0118454211097811408459971542647945 1.0119161371056718254793760738758533 GT 1 -403391425009291368930489204133544724.6058550792946291507935129871091617 2.1554480314212991253456424888444079 0.0562173417524405991673280346110887 1.0578593742520078271210805434731505 GT 1 -84031703050885168313958836078835659581.0068721627291091625710147605758875 3.1717647216057790218191252700054471 0.0929782443047747026524174718624392 1.0975888427211253655769288576507895 LT 1 -12648156978374789.3086176914463682469991860619374630 0.2286825467590158621830722978695553 0.0023267389408427217521281075453447 1.0023294500039993482921775667568047 GT 1 -3148628364256170018957.3350505910427566370188080883802926 0.1384595609143919037037142761352319 0.0526802998297055312814310892497924 1.0541186501907425325071795323149380 GT 1 -3226291417602818909747246786907686571141035.5968803922389509523693023573903086 0.2570724799855290214271772303825232 0.0539160868513627940575692034340266 1.0554240107471949742563158450582579 GT 1 -22094204480791910335691159299.3202283884705936274888462780413535 1.0096655745197237352932319397739075 0.0405876936405869408106014458776427 1.0414343628550886297852782948324523 GT 1 -230976000808634273378.5088641673407444762829826228763196 0.0056307773182994761170725207378071 0.0336829603150559696640105398058324 1.0342633001833242564264130285763024 GT 1 -9972780.7539553209034316521803250209405021 2.3518320531163502230557221134858328 0.0642332802169085693370310762866750 1.0663890645687230044982924859325697 GT 1 -2893787684116749971975585.6268734522991104654355991371029768 0.8231919816212776474553583962720689 0.0707166626128758742755627075113950 1.0733415948635441099958014060538369 GT 1 -294237409093364072631271575000306372406.9416602693861346497871391957538886 2.3686426219814672403633625136457354 0.0772076670892656524701568500795786 1.0803510612229771782082178745409171 GT 1 -2668599084934962706974886822783085320.8070569482790505508003586287124111 1.0597785533712413633073553155685332 0.0691882840317061878165526535701845 1.0716982606453625942831243564629268 GT 1 -83715.6531900991934641425218783415284934 0.3786236775974998594042554119926105 0.0520079013206712532426484346470911 1.0534091114882957427845018955111101 GT 1 -69228672016409274858193129297781904.7187511106025974552004526989632604 1.8842922293821540636739445377103457 0.0964805146566843408299443469589734 1.1014576026707135939048246760337803 GT 1 -2157000258353350351556172741814884036712.3586330304895044505634204459047244 2.9922679949705994994912024256435662 0.0015349434147065515211180476555170 1.0015361226472076466097845551709246 GT 1 -214218248031579740862143069217082708633509.7676914770588659156768530845536814 2.3499507694337110731060256711243167 0.0242703583372639590598439498420761 1.0245697374355281085100524312564069 GT 1 -89706663935207575.6893996848285331076015414831686941 0.0032410152250022414372542385202723 0.0359734401567263041481529370233183 1.0366364330464919174044257930841271 GT 1 -8903283734038354677923925246806628561.0216436427653826416071567995161517 0.0560925472118599378701447063206248 0.0342884286574196295841386522290401 1.0348900697443222881792300020327673 GT 1 -79728671889809971201.3794676472403452953680064195782285 0.2600504228032201637715315580026634 0.0678314680141277553861380197703685 1.0702416523329924860139576288110964 GT 1 -295808308781529100804846423150804257548377.5213052561104575723149319427586434 1.9387392366145999065402288074906655 0.0277165459880351758507672768925701 1.0281078976804836684983838588135405 GT 1 -2294295874499899671428691.9262610653140294536810749837301177 1.7575980552162494262621228441951071 0.0866773338202845111236446817270370 1.0906660477016101645475022232323823 GT 1 -1452710945671797840.7330193807587956849921902130816433 1.9396343371423256950234153041568279 0.0988193412195269777849022846136548 1.1040495322827660356125458911066511 GT 1 -11428027820100813399.5869231225356850387007015291680894 0.2099777628620279438910915522758490 0.0326672774088335468654392499044487 1.0332127655731291093103063385941948 GT 1 -616847800983136897783240302720174750747.3066803877263504216964100994594074 0.1158414037585443302575819052687526 0.0366858747827821903967954785601734 1.0373757259634389725763387965800137 GT 1 -29932283.0476337283912675189855529877522605 0.4967036957301177975577388244669444 0.0457486460603102654195633425228027 1.0468281685056276799787563401798379 GT 1 -1746532.8324588099311685402694180601423892 2.6669109479750676037956413233931978 0.0269741265655834228066389689233464 1.0273446057473989743231768534050158 GT 1 -1.7487258436629827651396620172155227 0.0379655730548722179213184213105494 0.0986140489918117928293282974972614 1.1038217545934557397891636693222699 GT 1 -670907113736919.0303116963476466439253186477608064 2.5707038506260218655722713122289015 0.0807021653232139353475770277939580 1.0876853244256064810551425287591451 LT 2 -14534753356143.4205308936954472669402390390835447 3.7562696669645070703000628795402144 0.0998136314776672026999825518678406 1.1051534609592046208375065863990416 LT 1 -811880496995665834176314911655060208507011.3345325778886055031516313441379390 1.0017087003501440936058593071556725 0.0694811422181706435000072289179267 1.0720129368162815657354165281869829 GT 1 -1023330302367542875506338403897853442528659.6554998037593355767727605844482991 0.4264313493932679915579957534962920 0.0259905000985991996062045914806649 1.0263342218949690006353625749127639 GT 1 -172148154017831450.7231907449487576106903318748549197 2.8809900676236083844879487145491272 0.0814751766687462471362012938613165 1.0849863487463113172293036939707122 LT 1 -12235731821306020061152660950760.9493150531316264963497745924314357 1.1135602334955804368448759928695611 0.0698731326859876491242047733057388 1.0724342856720355489087755533347587 GT 1 -15652.8180434359051326772878004657117043 3.2558541474036310457938715581508332 0.0418441933159772307469250078959376 1.0436584390234746347845214417094979 LT 2 -1026858137453415.9052275452361688404192383514827563 1.0197907599597308436514850297555164 0.0798180952943417475418215298194877 1.0831839059774192848142828904194611 GT 1 -1541097429.5242254949132813294151170418797844 2.0537201290086044328149963041190776 0.0981117459303531453279283608886318 1.1032646534348681924862853515963185 GT 1 -6537840587043887024919297.0658275450454544333211256331989117 2.0452739301801913851972407583013711 0.0600423661877114673542174102603960 1.0619204751462480380740563804019882 GT 1 -455232.1134734464515626420410944542244742 1.2172044799899662252303416745270938 0.0163307109845929473212430361475950 1.0164655268192236894449481973938409 GT 1 -22574187558170062986361780240.9407703678624029252936310246269213 3.4041150902676459176805743981642335 0.0002434122512228533760305816860286 1.0002434418807931072061555495085200 GT 1 -10050651982517.1250764110683612684513435427934764 0.8665726474938246656620752389610947 0.0842140717417770016376635975030832 1.0879726443956214567566557179643156 GT 1 -540000550905556311.0744799468692055706014709288494064 1.5954086598636506663943300504310626 0.0944101639458164743643545014707218 1.0991687950346034042593627425116151 GT 1 -2855.6869655651189896886845862881318035 1.8857963633766793201492186473110001 0.0581463889015133299445736553848710 1.0599054187128576756925303702739090 GT 1 -708652789300821435125253458218586482103683.1272098444252845667536835235846410 3.6016070883405327527302897473316113 0.0412379806007126599541411982424239 1.0421123898480534484621269861126229 LT 1 -644873790441030131679122793285.6939876016328081547638494950304084 1.3179668193433958115029371508471353 0.0001106154588356871185374226612315 1.0001106215771767467283639112505983 GT 1 -2941063427997607.3434001944451603886117555348948269 0.2346470738752713613851195296120973 0.0789688062424979906345711973569606 1.0822613738568450467589295708125157 GT 1 -1181093.1759648897884169502927278711555807 3.5912403932329363007057882064570384 0.0417495436266007872272862779886639 1.0426460984644514109717859402477880 LT 1 -4553546881907.3212012503062973702342023993772611 0.6909178981741206068783045092438248 0.0232854607608650226488413515211881 1.0235608505545889054061555341242264 GT 1 -268106228540.6767244431319002612392013992484014 0.8605660763726885055066483458504925 0.0054267484544265785366623763694629 1.0054415267434405853393115834997520 GT 1 -248707291197555130006125020495149.1758044638152383521665121673328515 0.6033089910076600791352791158920849 0.0664224783284516075171159275359369 1.0687312753438330310114396007589026 GT 1 -110549.7881787846931576280410263064558532 0.0015122696784015152343363674477081 0.0963326140649534600711079094554273 1.1012939222075454841008816973370903 GT 1 -703742220632355621957301128083994519.4186494861478956440448331380777326 0.0551916182604400438719537978075198 0.0857723426576099403782588753748378 1.0896756604876444992244622312413167 GT 1 -59808377167708233272.6497088121070113783189080172825035 3.7610860443741959172665209190695973 0.0329610945367721932210029299028271 1.0335165511807517387089626255952362 LT 1 -6870259901685905175176464391899382.9542903847546469158280714015261878 0.7890761031912737023751194160631764 0.0857925670368829322760312973625956 1.0896977825518961073766202618831563 GT 1 -33041970918121913587.4460361691024757443258382200250787 0.0082415131934887582882105004473737 0.0370521516687739104892531744326331 1.0377560240697567095560325705683386 GT 1 -4208894134700018979274884000231740962.4404015055797612227237730737526329 0.3901352236511996912829966876485541 0.0141497746740264314040698067138527 1.0142508372097874213773372443368205 GT 1 -3285272778415981001019851382707739119521.7035789617786672442991718170094504 1.5147342835312642786240276035955884 0.0460464319495892887146216540045322 1.0471402795250100382547148912822202 GT 1 -119768275764814278392856866327607269.1158516445677772973597643707061396 0.8378249504364362424179301012469976 0.0166564160229051077495406075311274 1.0167966939872284110520825224360944 GT 1 -24003646222762149026455.1012491035328781017449390741592890 1.1450428998645313552072672762357731 0.0190841032648789019549783235468137 1.0192685552682142658428259044258520 GT 1 -650590567339840841703733957.8608719682242374253964530611319756 3.2317640759741003506899597450111604 0.0987930726117181449913760538942706 1.1040203836046323489775970037250036 LT 1 -75298129763067049247828216482810.1211306080485896407193890987637229 0.8467076769798712982967248418363814 0.0166423331111624840312804009007965 1.0167823726339098388916471417597788 GT 1 -7313467941576060888071.4105398358811930060691458920587896 0.1209800006899405879066234440894823 0.0786458814996103660664448227263675 1.0819108231397436632453756768439280 GT 1 -175215306691699.9667455215280550264959033270573680 1.3924341520441042262361472484781300 0.0836243075057563278956816455476952 1.0873288537499596988292991614311502 GT 1 -24315.3697863305318923599877481767548675 0.8850592724090624197685258132001724 0.0053623286347379892157121298336359 1.0053767575236769582377892572745227 GT 1 -142979436.2119515245989121616472611432773561 1.4083725480107016679005825890586870 0.0447155072339082100592201693478379 1.0457460846798714365748760331815368 GT 1 -4302120762448.9254097697847066731959146204888624 0.4316205642532505468507533043280599 0.0605817089797942986955917782780224 1.0624944346183926931716130240373423 GT 1 -52461867981289403664161447044392.8430915429286307403884046786012328 0.7472360988237028535804133339969011 0.0159069857851447582959261885002714 1.0160348597561319971901720321508505 GT 1 -1386386804.2092258790727632266986393770671557 0.6515879398348792704178956601739870 0.0024298213619509818148697686005800 1.0024327781685220881448950817708104 GT 1 -1167599524964286277190983558751014287904562.6739145278544463845162012839558800 0.5664490509971194868140278216411202 0.0708643879628713415765431432268917 1.0735005744632219693465535186184741 GT 1 -87602325142492282363778819733654703.1781929288005329251344102052172837 2.3672590773676600951702636898523268 0.0583471580031240447676363640599491 1.0601186052427377914013060198876261 GT 1 -50345407457618880641832248.9122230421428474482735164927317238 0.2830046859738483582185389780296071 0.0244880454693547693991238983574664 1.0247928642214869865239698126351900 GT 1 -11753357187.8282932044410874932303123214430547 0.6292732709236948025105008388752860 0.0422061334752950281643026729030399 1.0431226948060707611956840326506766 GT 1 -9027202982351865682331354534693855.4665048249269020935382149851644432 0.4080679015405276235607768041755249 0.0097975575467466144610963344986148 1.0098458694316664432756211175336270 GT 1 -8597606256477669.2753601758950496459158954077249647 0.5928183536769089042305009179696506 0.0681953488278139348037639357936740 1.0706320880126433809471579115811373 GT 1 -554118298706100240744831278739047.0983393104185550894697024932558808 1.3685483031584595221192855630132670 0.0630790838916350993922376041617744 1.0651564014707257416457241374158653 GT 1 -4270480151172656566.6288586715159204199870726202813804 1.7306151230742061286157759103968770 0.0976939149406443556763799622847198 1.1028014760618803241421480850931889 GT 1 -14815641896286389006821155658108.2422610830716537313653939876449553 0.8078646024997961119078143512509709 0.0815122248642321089385137288258857 1.0850266840118634438285821214942211 GT 1 -349728423501262416105783183711505966405518.3861871740062295337870224449953475 1.8918337022022832392482939272187495 0.0074141460564916765806859421562752 1.0074417674480732914409089331392707 GT 1 -128055087842305617.2222640399494081676770302102784443 0.5687417792228840013800013088109186 0.0564757023353188179887587169498334 1.0581331618133610604166102209129851 GT 1 -76846609381323110438342649697569833597.3492460243304700308289084288429178 2.6211981996101511355503077099997931 0.0657450665652291142924447982289361 1.0680059299938570286366782552216780 GT 1 -449291323039012056192549151522372.2118926574188529130112862147922293 0.2602474260752233272056856993546666 0.0231662432898625486004512050421158 1.0234387983162104938842223868439677 GT 1 -2615333865610616535602862729287820419.4556576648773187737618278091391292 0.0529928687846408241461741639210816 0.0515942861481973674797158978924622 1.0529729000812804573490320325521321 GT 1 -110266569314335434466481879892.8625772515041332511629287666831500 0.0361874134461119115311068123429720 0.0066122446833657765085863480807120 1.0066342024200511991501663998537082 GT 1 -68527.7747990003300269365468102166912200 1.0293777364112291117769789737904108 0.0199499625160887829756749968881090 1.0201516499639160480850835756290379 GT 1 -80532680466930402587.0515936862567631068918479325635839 1.8544609121280718985628342611334651 0.0917729831568946734513626804213371 1.0962609130805973632345304424643241 GT 1 -251259192703.0684125230919197086408957548325833 0.7451426822630904814936782876078509 0.0185280927440053881545949391954272 1.0187018879309823882735264372146949 GT 1 -591902011472212992856.2810976183307523754218013043191324 3.4744692461898124946855535135506362 0.0900103982612448754002260885021325 1.0943221061972347659636544748671167 LT 1 -2895360384181660961386257202823664571.6934872493085442838885957214022944 1.0614122163012609301032894395759430 0.0994200756160831894944845055029059 1.1047163627422952502086323339302245 GT 1 -2777660576391.7040508008910643733722519145355588 2.5428769424223759383700557422644964 0.0100853186094863209429545727609914 1.0101365199808692032654313682245711 GT 1 -1211400386869844699983365510966.1555878171890965394706606496457605 0.9524459790514915068431574312694868 0.0976930891107426160920529772704919 1.1028005608186635306864908358408522 GT 1 -3.5037155729997054257353974138263401 0.2404828492040148849495938104185220 0.0354269211740491576982005110116035 1.0360696808949846070137341416484296 GT 1 -1023103394813476693.7737992089486711161101637750472676 0.9428550547416931382016664474904250 0.0883209080104541588737801368456223 1.0924672236480524433386298797289903 GT 1 -1237121179199443875438.8243639165966911666573515691069546 0.6183533599859998025490042191214600 0.0952261655996694507664785097348769 1.1000702732540699968893495512453863 GT 1 -20164901206067604957900838172306930811097764.7574767611383780788597103107862142 4.2308992573565503631003609278996826 0.0293857499513424972602631514133173 1.0298261604284422934283791314199947 LT 1 -2293146977729968800.1098968868155806782973474223505687 0.5682109308177087440757258446941439 0.0222035966172503299083837809613766 1.0224538071193110571720518755358693 GT 1 -38480091002769973222009234891129215.8215475017952765090550942402840176 0.6063310223301680044740039279190553 0.0633859821860086879823280019418817 1.0654840156417367460332461676299603 GT 1 -33058635399868198000415884.7978179179816004226571247947788280 0.0651832002540112280239589251338496 0.0582805483386524849184209014219227 1.0600478707791124915797821833642277 GT 1 -3.2232494780984103049217031806890688 0.7449276299734888228426993345563351 0.0870579119777810248686561836809983 1.0910828308236958249249434559235634 GT 1 -6117367111888356386687113144.7223588237460034819870284530057563 0.6011280283168001177816747414921700 0.0809728062550534742704942355424591 1.0844395664821463122193658807891750 GT 1 -20032614537.4092438617350796436449465637664051 0.5203757425380577423268208247475655 0.0423323316095711874481063461899151 1.0432544626668796668253773357848231 GT 1 -52001.3545173252119156289169791435773765 0.2350974240796720255758141052736088 0.0264220746428138255221139559340361 1.0267774107815694063587347748211141 GT 1 -25436485208166.2674690462122920704309396789050220 0.4608966275716236553145135980565291 0.0214969199479439656157169731911364 1.0217313444227476113473264027741855 GT 1 -41703889274416994173941718198909389724592.5115875983597364534048395055137213 1.1834475841407150314093444319917199 0.0836936543268896736153311680261548 1.0874045317123363998499502560161788 GT 1 -8300822779019.3036286363013362194092120184061571 0.1983536440408290398727412201417665 0.0543618400964196867869007753205832 1.0558952779165710421582115687809615 GT 1 -12911167951573042006001.7915158963721604836176128053467199 0.0504209150457411386576856334556729 0.0920253990059619299049482507203794 1.0965388732456070462451498743713985 GT 1 -3026377634448.5139691298191779170735441968378025 0.2460635463326479587949424038214525 0.0940639004368167458884131936205316 1.0987865057099973146465044216348455 GT 1 -118317086988731697902154447811578516693855.2101939805223597934204654568017151 0.2643926878329672575252221566168170 0.0432056754972203326359881325903259 1.0441668275521297234771888113185229 GT 1 -336827458273791669274.0462572119796207858360923157346784 1.0059475096895602720958274845616593 0.0709370501032604084874097201608186 1.0735787815417491224303988579917371 GT 1 -4228720524809326875970740489457585.0472111175327166092322082842174346 0.0883635318169478365032748069049457 0.0408781623859099124770689523780561 1.0417371656469542878581848200022811 GT 1 -85130233601470390.5890959975103632047798791694284200 0.1294367129724367125274055987855537 0.0643581850791513224890317078240312 1.0665225521104456736470922696757631 GT 1 -1821518789476434624.6076830013800586700246018524218287 0.3419802963971553094140390667945532 0.0607889251539635717658255946697839 1.0627150381911619169827331086651682 GT 1 -11103040875490618849917407677059.2982556756133356894999274195618990 2.3832096094605128720448478653308230 0.0373979043722429609960835730537505 1.0381151450660930496065094941632681 GT 1 -115780493713584948631762279925548889.4861587819781156879792774205119918 0.0836488067084596404097014359563916 0.0731308715350535516335498195653719 1.0759429008747292109134182472394619 GT 1 -50868066454132722762401031272449170284.6129502296629934551884807164803423 0.9211811411267336959259393851773859 0.0799906916601640169538072493259636 1.0833714912295439679320535985681947 GT 1 -1961190299808902601916309073662578461539878.0327878382188773268468100732399584 1.7689954296998604763048784642467748 0.0516911752201405235017939276761814 1.0530750652411440278940561003388364 GT 1 -55.6177110579935971774161418291958095 1.0218707783020033918675625047013271 0.0827119806744857426428148763810175 1.0863337673547044731472501850067085 GT 1 -30088594541151952251.9676902639966413321605263026868250 0.2451897366892000391931523218521529 0.0483856712766007453201542468037563 1.0495954431599728257503928392589619 GT 1 -37455398999200025843605982607456082879.7859506755152780616661764292026598 5.9408666016912850512532051688620014 0.0280650963812060624526379841255534 1.0284664483499976921043953253206074 LT 1 -101444263254846025581237.1812940778270649849477620765504329 2.7163746160381757754403770251891787 0.0274813588400839544308903686759929 1.0278660353854135662989671219306429 GT 1 -98907666933.4282061647186574346451625652358094 0.7947013874857770797872722468443341 0.0647668491397136624471775203918782 1.0669594215694277622193458265445961 GT 1 -119301098799756824144911591559295.4822626213392635671753343632201232 1.1602475335724818456421812602532894 0.0183559540188717576301891173248167 1.0185265149732200457078937965093835 GT 1 -18872169319613856629.7348711247041693673695366879613311 0.1206786939149115264858789090754589 0.0610080910189025854223945417631073 1.0629484164445466233492421766889904 GT 1 -4515763670898992592388670577842968519350928.2788687221263681197879000315214030 1.6215926206542084964762101223695018 0.0299317734829450550922961033653319 1.0303888733426917410270587549945278 GT 1 -1120453193282487616227.3850975938668452357536393035975433 0.0879960942755065542790192477437539 0.0977009251870119746000043003436149 1.1028092453473988805508560262421596 GT 1 -25459050614329106336280.2316052109756429483589932498105226 0.8072123609259919278392313232362702 0.0319217151985648181922493440883634 1.0324423222468275081484673321398219 GT 1 -166507304602.8318573231146775195302502235813334 0.9701540427500811072379084999784028 0.0778896422015770828726864425156247 1.0810903686637526708634180857343489 GT 1 -13829.9546026180661356122988494392519737 0.2612956425285842377208689906159303 0.0618262047625311932348989058495404 1.0638200643694882009507247973744188 GT 1 -165146735925571874075502087744771.4078284141941821794357448066500094 0.4271675488377351909930872484634238 0.0853760691416734752421216940733715 1.0892423027185452822780532515813530 GT 1 -5443.7176565719845905135443914006475461 0.2717370347150945542959393146516926 0.0962215569353927535770529232836626 1.1011710337337460413961736491945016 GT 1 -305481544410305181541.0692818394205877084699295813110511 1.4316287505395540059938211581897443 0.0374112204006265427508581563164343 1.0381289785291071760427727919858244 GT 1 -117311317765705414646656321991440502.4465105771305509808657521859916827 0.6254867548914488460207442341668283 0.0804551834882748325251372287113597 1.0838764960366408003422978884918906 GT 1 -81411652200951468301116.1549658814180064955708171997370758 0.5059883424047940749974205848664064 0.0879067740348438876829688897921427 1.0920130726790403212627221178750598 GT 1 -527822357657498900420231992219659765.9774305033707147409708433615402178 0.1649732459820673706533597131027125 0.0064311655745299339166366509757838 1.0064519346138273536611456928107644 GT 1 -235433829278653831963448614347.6994822424905810535736899213934107 0.3098186127811441377686063588561063 0.0906740925202285823837671300453705 1.0950517149814865591643501414472840 GT 1 -4399879906049072132733359129063.2710249050109191972098041670477013 0.2089831068038452227929787252276264 0.0070509481074247662630069603245294 1.0070759235114592492865680725729361 GT 1 -53286744344704939502660320046917435187157.7524712515835900343081013496975331 0.0465454044015769587154765893556589 0.0216640562755776364139010230305645 1.0219021671894742705563827320865685 GT 1 -1109700488640900344303783874024948.7272212968453195696149330028733044 0.1488529767811817411930319004305664 0.0203906760354729912920498770968634 1.0206014358149513307980681344867081 GT 1 -752410246.5099470655118029877967733064274306 0.2940829705932709794257968436732687 0.0003558909429680638933828674031430 1.0003559542871792404179855603036674 GT 1 -8987867304315915809210652277584742986045452.4017870167613579830801963116772566 2.0504730710137186534500559732133660 0.0087914641277059626960373401008799 1.0088303370494276705682494361058339 GT 1 -46380677548305.8978484559164287130721617894308816 1.0219112603901592526559789566258497 0.0139733726575997542330802135608311 1.0140719193258855506224678514203334 GT 1 -209714601816997564206282377650634.3816001069409844901395442671862473 0.2632170960640006765233039310694146 0.0485735354920927798357236965677428 1.0497928789866461010555243980544894 GT 1 -190841115239.1073435616641312974134602155228507 0.0163691304238837784426224223862114 0.0556462921969633615066004514502249 1.0572544925462620827393448733548807 GT 1 -139805502782506181107728049254443.1715746385408842477296192624243533 1.6216843509045956135887006213275307 0.0844789053880268773967085341957778 1.0882618735033447390756824796894691 GT 1 -462006755884352101296557858424423347.3461976726209620968365443032280871 3.7200579466771999779965024362891109 0.0573948080442939297588141715273278 1.0591077563857729051047990564996317 LT 1 -464909026542.6732111860765993902207890868815649 0.2732546297420690141490640217962000 0.0770857197037454335205791364746372 1.0802189195436603571992111048924761 GT 1 -155706982642079.8184646724095719228014481708532459 0.2670728295553099893578498331540641 0.0280221950738593333376134948868629 1.0284223092205346134597269163012263 GT 1 -1292609482855164038612714858806967117001.4007863968710248305127079246101198 1.7055170867842880951715938120631694 0.0550781536098054220189906995412808 1.0566530571410108301085810722130910 GT 1 -2490430102.9303937511560665911725595527521649 1.1570305136073301803072944718604775 0.0104092101230372722771575066211228 1.0104637648621212912772450209972824 GT 1 -1937593194341644400258390228058440.0429269888930023342673096077679593 0.1210680729419700458651701361039104 0.0477239217119957992864535533207341 1.0489002880304373962750193812853082 GT 1 -2025418622211750026075.2404012931591641450184645649136649 0.9629107225227170805077535927443472 0.0762507879460529719849025714746680 1.0793146597063442238322526021204507 GT 1 -80971416825966679111924619836797850111.9557007448534454655010380070304576 0.3098502526550672721838415273394486 0.0675862335643667570484668681331579 1.0699786074125482229386308533437584 GT 1 -1033726971.9204588392946143825284031818331811 1.4754106812339476712896972513115928 0.0425884431113727562595328355561451 1.0435219309783184125474607490676927 GT 1 -58.2689609332341923725259036829470694 0.3793760517022490208448308969640415 0.0031740267135389309592112999445697 1.0031790746206194036922442600494117 GT 1 -4951114762057370006581870132409011921940.5052436824852405780156398050609335 1.8263479805733044139901660227114062 0.0590700591699824745715491761007419 1.0608865939962564183626298265004884 GT 1 -104692522508226027.7994706753832445579150972447008048 0.0009925533375235411532024652520134 0.0303292444242548641958326346906773 1.0307986923446730952294283738192858 GT 1 -4813354811678572991310763356053.7298296279493192073619209424235176 0.3770597163618632358737224499660325 0.0853664492928030149987430312898963 1.0892317849549526840157776196001015 GT 1 -303481208702275119084944.1133333877625105146588218762389978 1.7071973496979411174181374725427708 0.0377983438494179239477104545450219 1.0385312285058537859668438775194060 GT 1 -22847198.7873924126624765909529528154098439 0.6642502394449160719954710105019264 0.0959811304354830395773362595452372 1.1009050453957309059568233218280290 GT 1 -23993813475188010.8874000173215635216637679899794535 0.6417802780125365818634712655074316 0.0502889416295555851235320055166934 1.0515974897340065710830272491071391 GT 1 -6199185.4428036363814444973129797580065736 4.1399023794330289364194075917598832 0.0631687958363281966325586686764511 1.0652521579411692518147720787282945 LT 1 -59099965577825845840268915343108498908245.2049920772354044644061749983124379 1.1505754618969770195069861914820053 0.0638633618202177209708145118084474 1.0659938321974228238148990853071675 GT 1 -6390477473772886018298996026016.7538891961098674265145883568204213 0.7319100181628540996930769360460190 0.0373914888972355239229326425854549 1.0381084803666725993256644071535318 GT 1 -40625655415068455349.9679058708159663806172154626792757 0.0319722425305311083987979279626006 0.0872997341825062690983347178377586 1.0913477482163394853153537026794567 GT 1 -82699702851001720592887.5839455727145453537049261751015655 0.1676163486538648037638941139820362 0.0241969559601113233853775670647135 1.0244945120726889280564985080944469 GT 1 -2187949161691199721084871982.8659827349221478150355360990023504 0.4512350247271919222258415634995993 0.0776068080404584160013750765628205 1.0807836908442683729328576132454170 GT 1 -297.0572730353249121072145739912405424 0.2470156058902285904393131275284860 0.0478215029085974412284503173931041 1.0490027648213764476131763777980637 GT 1 -82873545184018890.3767824511903435405099831397039716 2.0965515431959452846701366230016665 0.0349842770564901224074902030318919 1.0356108845701742422751350011733818 GT 1 -4126184630639011.1284469653219283481665856741667364 1.1142580244356187532284052223196674 0.0287053214770402789017144153501777 1.0291253773050554765054268059172042 GT 1 -2608023211.8856116805947215233777419163422969 0.3141556945823458978162455889635917 0.0680105663267983676119037687031661 1.0704338016213263616033118723980185 GT 1 -414525423415800781848086053444882712245.9596243444914656948357076458146284 0.4215874908201351695752394326480640 0.0259723185527634965771566853193769 1.0263155553664136844877680166415475 GT 1 -143282996021100994047356758006639.0852592763342883716468258376788447 1.2910320858270954939642940841520971 0.0291558391041909068483859229439187 1.0295893169844310679107915899478920 GT 1 -3504822264585681227678156279140505.4864365284745544547234672190834331 0.7742689157589358789902863509113027 0.0430925116673200986752348548468065 1.0440485606107774906294237371527224 GT 1 -21916292584380771984094480.3816116035140388991995033871834194 2.0811195454244069226458786059310058 0.0520746568669249454828042354546499 1.0534795317975445084507593450042886 GT 1 -2448975.8521945287642527532064171988257874 0.3654426243387309676570362736605006 0.0349967800327840826336184572711921 1.0356238408951264512663357492438727 GT 1 -36500545326377177643758994087763.9665495759159089826854155385555362 1.6278723522011583740255341665258543 0.0807759420830694802700850471620401 1.0842253801215401364290697590578903 GT 1 -566305.3466852173381353699432070649095392 0.7018399396966338076528031828453796 0.0636917332875672587065934244498862 1.0658105119483915263722396753829625 GT 1 -37008982802008699838020994720.8164026491211068284758725825467888 1.0402669287422636565378822918667400 0.0186914084049499760515219945677117 1.0188683004884915767022754265461739 GT 1 -14362782209155334.2155240006190396107453257488866479 0.6422748545703306711105928917067454 0.0020976311334945369849040455063432 1.0020998342430939787417058064665561 GT 1 -86535772158036203227228256.1861851869219159764189790296650898 0.3192613065260914306276952578537068 0.0135063135246692916857954977492897 1.0135983534635850242462272970359524 GT 1 -3016.5533094753544734073654031553003454 0.6810094822777443480825509613178981 0.0284343873409081347153085945583670 1.0288464749680031735510775095469330 GT 1 -631058898782.1423459453018149072996754968643010 0.0359215179590582610041530353065256 0.0244708130879542975798094930469386 1.0247751994157226370353494129813339 GT 1 -87224616.1343927456728251565141146498819325 4.4541599675673541412865560679723349 0.0385584176107123571444759082561713 1.0393214725444791167423687930664517 LT 1 -3575685821.5760814755764361561580560196671323 0.8617004492661210681395196279724526 0.0757941763073303610910591941440357 1.0788204792320550085536805478380419 GT 1 -8986824549262161381027104877609.2508139599401477276797519793077275 0.6389297487153889257247007105688878 0.0948780127622261000581958674735153 1.0996855518379804947127349359181332 GT 1 -766711619325.9862710309808425946574249713717891 0.8529323692816711755203602167201438 0.0894053646223452902490798243733608 1.0936574474038226444549692807481941 GT 1 -70023009515.3628785961929863221582032580011249 1.1753249296090941225903590906941082 0.0003552548708340083431354912590166 1.0003553179887947186054232021421571 GT 1 -2076.3441782170483854737015438303501923 0.1108051975462080092039461336805306 0.0414829297729517054865113736040528 1.0423679073414607285651699114296393 GT 1 -138171.2069347052396537918349021698859940 1.1155378684970983377051065507144014 0.0830228804095323000865290389703475 1.0866727584104986704634032056159916 GT 1 -28529853590035204.8705165883601249247578427323291039 2.4445212975884663098121973285904107 0.0646970400409697049324684190098934 1.0668847808304732059397368783210422 GT 1 -41504035521010450.8398299379323155334757640435809112 1.4764050271819883641865339570823035 0.0723223278686575439009135915488339 1.0750709425964428134348720737318486 GT 1 -1.1736107373737795781648565692031824 0.6490468636410432670075344136334677 0.0101568319527414069032450769113727 1.0102087645165395620138658755473472 GT 1 -97982983345790185255933532313878814262.6459776066837157860596102020149651 0.7831719164475530279583967055236892 0.0702490066575768642962453846413711 1.0728384777801923743332542552859250 GT 1 -35017922161639918.7744489146095634000354439244669458 0.3802676848078481298789345773784956 0.0070043368510549183445819431030883 1.0070289823695177101018057496541066 GT 1 -250.5826392697451985543045955802807211 2.2788553963504982715384984609828435 0.0516177089263627839498521279260520 1.0529975973886292854660293450943693 GT 1 -3595.5227591532447869189843345006013919 0.7372702991473380850263271017384205 0.0281381539514225102917824435020104 1.0285416183185279417915940297325688 GT 1 -11082670079552516210061364560317061.4968948757150534151602106450275214 0.4942337866592683854587108596151717 0.0652616913689684460642407334320844 1.0674886726853138991183171904844055 GT 1 -286649736900896996170650616.7357343878498923951737996233151111 1.0562435123673382008633696354583106 0.0084452292730497469083185281176107 1.0084810922787350882771366024646921 GT 1 -4734502630159123105152646339843569.1870901022816103987039860402337761 0.0725453363368475909477777260045924 0.0821186148338233262206845360401352 1.0856871067686164222095776031691533 GT 1 -9156382890073716463470526.0926948314320336559897046892187394 1.0916773759257712715071702839583694 0.0130834790774617517056956247684509 1.0131698217248789140969338757415959 GT 1 -2749711061843258902.6473634726407515658495701870987151 1.0075055463884270904052259411312204 0.0843401987390158841353754218868297 1.0881103792958757915958413109984882 GT 1 -2241122520488729580403.4925549749965744600350865061604788 0.2032424079280677593962739546042495 0.0143446744232590599399362210013091 1.0144485538733578628981274306023761 GT 1 -7122070887.2757242802456045379689429253874609 0.6648394609573245608152538370006778 0.0045239349596070746795380435929923 1.0045341989207264968091306592979649 GT 1 -3014950968461647377899295189686875346.5291190358626012038884018687173961 0.2927099687065709796960778870827816 0.0877769050156437870416892335439870 1.0918706971294405829709579850329892 GT 1 -2042845323064871504093287625816290762734692.8426300887714817183295121741992134 0.1113412781415132511067661324306172 0.0180392986257435611170970860455770 1.0182039903956036967707277022415671 GT 1 -447883472021509572974760067823352.3316361147530889799698178143093183 0.5551541887194423043936216823999791 0.0403905485413237383171872474464926 1.0412288986917422971911412968423208 GT 1 -760891225326304834086568384364897.1859647871335904674142983600757981 1.0780356837633758760144205097856310 0.0459593918001042475727747949517017 1.0470490421924973407268304668694637 GT 1 -38009272692.6953361347222673617681591595934039 0.5851491270564288122876024617714905 0.0846438686016991510843828597689371 1.0884420747880350816786553876239648 GT 1 -482982980824614799508035156554745.0937088069049895685892467930721705 0.1676201627291829088454594665682722 0.0073715719311483995891981125658979 1.0073988762340259619764789565103082 GT 1 -2119717725356447676459329.1821078549539808351670040444417485 0.0981008676112981489512875632964385 0.0281327616856795993422228989521477 1.0285360699468064863580291722053905 GT 1 -11474693976833657428.6862890215197145209725764441572075 0.2434493395379476258021605719932982 0.0984897428270458218079825711962876 1.1036838585078143432787913766980148 GT 1 -6296427.1971929423277660054557682229652357 0.2262188269023489583639662433102437 0.0333378519550183969874051040774447 1.0339062261228324872092517322631511 GT 1 -5042.8934011321382681649101342296981521 1.6370162494063805174037774270599623 0.0250509659058635509050045151057073 1.0253700820745189394724855790247757 GT 1 -37790290643094368370555.5895858606205999177502660834048191 0.5392978358215089503709614342016581 0.0926384101164948373957025345507519 1.0972142425098944649503002806745416 GT 1 -30644.8827549717732819464558252545412965 0.0227363342934116236682766868260036 0.0606986986561987231978981488009663 1.0626189765426171926943245394634040 GT 1 -55.4377072909271687552205341422602549 1.9027744669064878730554607176920278 0.0793771490708895746658823624512069 1.0827048261287431442265788157847544 GT 1 -1158144743955.1700510472152211144741774614107422 2.3563965522038640357776309233338629 0.0408914019919729705719341602569232 1.0417509696256811445018325124318855 GT 1 -383533231615471.0554529981798137380596246635619975 0.1682912703385299495395761867454347 0.0117527681799158415071153638732242 1.0118223779020209494728990109044801 GT 1 -3670.1752010062161752454497286174388476 1.8030680017416316729288175085967312 0.0521181798422995036328637823705994 1.0535254467790098769112623900697972 GT 1 -13005173497886486827772342912365513.9917732160039298948347538331873858 0.8678577492565867273698302511580137 0.0303621100945350777549648763231071 1.0308325865578092459524591845121924 GT 1 -682121385286.1825722139332890700369141401391318 0.6106218147303466885427325519083530 0.0623668546514539540479144196880939 1.0643965095165829859562942165121941 GT 1 -15380581884450174475.4440150707449944837128254014681117 0.8636860220739596310929197757609725 0.0973588603646438917583442491327402 1.1024302135947401245738451012701293 GT 1 -851939878131067939041786066881572354068817.7990179773961793678673897218277035 0.5171406587290811280722769038052361 0.0180285539105533068426745774308223 1.0181930483524132152530837017375256 GT 1 -105043070915885860868550605150.2962391173636642113628493490385358 0.5327957813062077877796200145112552 0.0247374009408059010856977840678493 1.0250485118793368718196770226018281 GT 1 -2983876124083968824460693959.1272767757339384028547511623488831 0.9369043732374308349986287600170515 0.0135607560393955588303819646985512 1.0136535428862969827170653700290637 GT 1 -1449535083251552359767299895914297700.8251728285510826387273360085546026 0.3550984627894428662442470950884446 0.0961172893629222811898191354391321 1.1010556718780436144118276183933832 GT 1 -210776251393239.8497628225030769394476939954719772 3.0308724151509654340687143485333993 0.0414123352303921766305650413728657 1.0422942603035052774215858438051433 GT 1 -37907484382990565624981486999792721.6867776688675571169381263166653482 1.2590989905873900808112987749039471 0.0942645267472807243823848266732165 1.0990079876985591532604777034309109 GT 1 -4774938067263109167468691176888273688081162.8098125059914391613361928964783820 2.8436285129718653656822270628850852 0.0879761146410914088672965396383527 1.0920890991642374130251675616763393 LT 1 -142067200448655748094.8757146324213730424297534086117042 0.6815276558902247656490578979372289 0.0028174607718846737494325088609607 1.0028214372853553377506474149623684 GT 1 -22759133230168869218628784446.5367600588238394879755724185143247 0.6967517630234499263592026799545627 0.0329648293351279093398996461495552 1.0335204132855199258749158742763030 GT 1 -14064565594504.5465856928455142083677541146603565 0.0682797216357845344122840757328070 0.0104317495301705235581175715404133 1.0104865416139383421170886708874573 GT 1 -1.1663290716806811405820305657144702 2.5026480578977606614131671578319530 0.0306792388990225655154121988478341 1.0311596990593065605732449051467059 GT 1 -140879708721874.0986721849477096686077689967449851 1.9208358169402159519692050210617050 0.0134765062177229205345872887298060 1.0135681385143723194220669008774193 GT 1 -70427487503974781214366889839.1904171756663047946809526380196544 1.2693618018065866458412463630088156 0.0490998720147740548166361153426922 1.0503462398429669798633518793666009 GT 1 -97197.7789700884397514644903473790524308 1.2749542935262441692852456199544476 0.0189748669628685219175086926814414 1.0191571999313661057372049116489538 GT 1 -4598684462370736069481545309544799222449139.3145180976947725803304622491269082 0.3896929163385836887493049048660704 0.0466000782181677537630732461308892 1.0477208182527070795827696590555759 GT 1 -3011060686663644433981.0416180662052488115656684353776767 2.0076149280260457566168825860522946 0.0375501962809957565263518044468680 1.0382733661604149001742369234083823 GT 1 -4216941.1600712252017247894469459991020923 1.6668325493337980778889898336245467 0.0432603521696980867968186846507126 1.0442239748756506848624443073960408 GT 1 -15838264541284671.5267349400062330735082840888577674 0.7921698605596974773109325967492879 0.0176478845350201009977334356587019 1.0178054651784911553808973495298256 GT 1 -254147326097287529143207545.0385131873955207429036861585435135 0.1581860412864816626636695381476897 0.0404759892627165591016549895915375 1.0413179396293657864093075467319387 GT 1 -5209204719092538682643074311.8503972470292526774278096022692127 1.0029792875530874851287530485551072 0.0414399039050795895862879587349522 1.0423230203972779986946325083771940 GT 1 -42567908725756868409735661.9827758722141574288465837554222074 0.3595468020694285821446163467326298 0.0730474158024452997185471206585501 1.0758528644574247991531581228493661 GT 1 -5609.1072075639685803945740734854418715 1.0206792603584971753347251806663670 0.0161217980346791956710050030442595 1.0162531680816008252418306274583275 GT 1 -120245037191874643620.8694960071622018880290642273862398 2.2011505039447207992953713544439317 0.0676709575502547252967449174576530 1.0700694767651930625413110729953182 GT 1 -23457148154.3179968300876131940594577504404769 1.4769934863402467451846621097569136 0.0552244845018389013593703968980318 1.0568079294451979264637611897411461 GT 1 -61552678426793.2109316814225774245954838771903635 0.0407137143747238090922637153113416 0.0533177165922785275845764338093970 1.0547917400736094671419552622079384 GT 1 -366287568270687572533203340317.7102387613921134003695555736643349 0.6116026215863354331747681400938676 0.0570893803400421472134843600642888 1.0587837838101608274714676068255133 GT 1 -12390117735031865.1799810659976825994471827121931060 0.1642021268978030465337945008992250 0.0202123820008201972286217174562911 1.0204194471312635859129626446441479 GT 1 -6980.3351352193778011006011747606904344 0.9619002254254471288912092930859078 0.0385456302786004312456737967585669 1.0393081724674800692944832672428778 GT 1 -9287343617209.9584339637831217125535039044220178 1.3805880345879225897843061487272621 0.0205500320194748377690262240420818 1.0207641220440088497697792018960431 GT 1 -138444183774203913294508634595.9981261009421590212930603101817540 1.1901983027184930773128163504900596 0.0960957515957682030530242252548482 1.1010318441066932569626265514309874 GT 1 -5334419138006.6598362816645571527586379859283032 0.4319325503820841159041408355927111 0.0027476593332088630578951352988948 1.0027514410780006128556430047821523 GT 1 -93512256343336.9258097000089421211308363203132631 0.6386809528901402950096697296643401 0.0638472872682949393991799572639986 1.0659766611849237664998094118940913 GT 1 -35089232339938268062231117.3305482765008541454956580371319459 1.2974841067419548943614690246967277 0.0156620289524692223337520839783202 1.0157859743892850110899500510112553 GT 1 -57581228658855163253405300147.9247217348378906235150939390488294 0.8914993170225114230824488068141008 0.0460485476495290957335096342112295 1.0471424973502342345235888017084957 GT 1 -3639725910481324663650769553569977330.4347079252173997316969156578907298 1.3735202807511980177938258186781403 0.0990968106183682712010760941036749 1.1043574751138578858921411967896012 GT 1 -5799313422282346697516088231254519010196.2034838292663632523300960417886875 1.7379625717705345683722002252661202 0.0886030911015666800077396668905455 1.0927767917551731557965728027591227 GT 1 -1085511137456936392.9814993612179157802052110608834896 0.4991815117690902591591364391968711 0.0977298887017477566073315265027757 1.1028413455461179820808922685055398 GT 1 -585561168638.9821126644749932471214877907849162 1.1956277784737887439420580877802174 0.0623067248024221706625046720738458 1.0643323821749174440957617154143544 GT 1 -23951975318846023812544523064044517.9489931604239213578254905709654742 0.4481271745707103971973800049479527 0.0409719717592373394463780837159638 1.0418349779973572746595637681845786 GT 1 -40368892038232831309301109553434.5737357925762524599453424876465208 0.1811054214845340920901393624956232 0.0340509302841281748200104897366050 1.0346441690209342965133432820162745 GT 1 -162152089486446811398770553584780310137.6912694141175395258090825841337412 1.7039618428044036103722344502679534 0.0264240934888094495034220338329047 1.0267794844194736982207961751416224 GT 1 -252621651228549782489975043461788346251.7921175152626383367442524835417722 0.0648652414811481054708527209714005 0.0745394997097958344270769905168360 1.0774638271984391803596793571347305 GT 1 -1298296480927521754274895599761393563.0621332631791650992426842646804944 3.3197733065991677957876936659278170 0.0495115811909494417208932277101292 1.0507793014424006501533740387250119 LT 1 -47132453942536329656989.8521435562587052803915514852590731 2.0522055204551089757877727874546846 0.0906641266545840176057406973999778 1.0950407554223758566954166603342057 GT 1 -62070882255672960230816908454.4285598115434468653921089712370215 2.4500444591055349256966803161407650 0.0755073990163536081085616215221028 1.0785102314496702260815431229145590 GT 1 -85287697545224802446.1340438833288950799960512726684467 1.1371460862744886196402959715905441 0.0472367782713650194159987315186590 1.0483888618868985262791928564511370 GT 1 -2.4657274503393173735938099168632119 0.1022449376710834862124551250210126 0.0579898991907113614533437873591197 1.0597392817357793940449135121495430 GT 1 -7247424994614303332168130915078383575019.3513719927874597614672240561394462 0.2614233920598954333923477163630701 0.0176224260307797561816478155918999 1.0177795496498780552491186969131609 GT 1 -78086.9636356704891459579914948525115806 2.8654633055439816354498227610405565 0.0440557076179624149633749862526381 1.0450556391954957709673787114058446 GT 1 -553401407068292369000834506787019.3356472560590595170012682928526055 0.3719773194480748709659132908657804 0.0850747891221627486777821286079403 1.0889129537927786171851924981393038 GT 1 -4.1377207602786994071430347157083131 2.9765246630546853885627872768943000 0.0419864595200057874994850806759757 1.0428933669984333145707771252243272 GT 1 -154805091580574305684586693236254430189.6583294317805674713801709712478226 1.0830977796857583975741571688365954 0.0789266749584771911777769206526695 1.0822156313014165268616128899513211 GT 1 -27696281949218443928566486082381.8491499881127246525091880298508667 0.0018345434661143620800588696890439 0.0878589851228100869412744539320727 1.0919606792846233125769603732065545 GT 1 -1052069269113.8227002933926335399439867531577507 0.4075382602155693796396779983934655 0.0653013756861278824354444360858924 1.0675311285889777718818408328181037 GT 1 -12507999459428796103.4325601354237799765396497620954347 0.1467969627687420290348885969870443 0.0765149308557321906840739466671664 1.0796006471570623965278945156529568 GT 1 -96479807999248.7816214068992378111585274790529702 0.4724910577561996506607841317099589 0.0221501422268042037880243347817396 1.0223991403919778201324358852552814 GT 1 -25935419939393218982.6892496989187886269239960423348231 0.2121356016497606293784893194677224 0.0737702991319891780778259864141541 1.0766330180041471801689174120932879 GT 1 -5157971.3898334085973434083135355282249299 2.6387341539281477396702838433030595 0.0276038638556388042127419526861824 1.0279920100729900113925763159010225 GT 1 -42512884278584051283020606180976.2794419802464487769407144507910123 0.4646598211611636932927433085962866 0.0325893640943631831291398685371499 1.0331322243332067080940526597133835 GT 1 -4.1063298656806187523977412327794573 0.2371163744137486505410442352110922 0.0558949018349324748966721132720545 1.0575177862316945000950653276200493 GT 1 -53626978464484575.7754449785165456633700293132419148 0.7572912188308442222864839912675392 0.0822360461678581537145828001640868 1.0858150523272711287873859783847566 GT 1 -129000516.0664322157854183654755169809119909 0.9029171820449742339160868505870511 0.0839633222349342837396111332377074 1.0876988738813976839384456469326051 GT 1 -203.6935489509625990466225255718647502 1.1281381430661420920201234267709888 0.0209391826843403793825904946350212 1.0211615165060750770304989117523477 GT 1 -291178122261.0748415965986645140627182252384841 0.6638538318878184461787766313202128 0.0618235197054209394189446128174047 1.0638172023696310641607626774491636 GT 1 -602762904752006929775268524.6330898039462394774041710263698282 0.2802979103267555530360949232093403 0.0085859706519262965242102139795968 1.0086230424487100785702242042097096 GT 1 -207839606.5838202569715446751604486967268049 0.9502022416837383962998628759292200 0.0337224534892148771356763331308424 1.0343041708081790495996374395628822 GT 1 -166378763137799809630550283113680.0502581892554424178521061839371167 0.3455351489124845025162109674516374 0.0306948168565741026676162812716240 1.0311757701921603448969643513150490 GT 1 -2972815086863909311908756927.1651090658981555948413060461455511 1.0918409250683614207699755806672684 0.0724290550338778074599669589987626 1.0751859968962864338306576070596052 GT 1 -69350118280217611610599681204.8201088912761919162577359273520466 0.1118675753574455562615681266632862 0.0633521165260293556084725582363511 1.0654478587541603345711072687335070 GT 1 -1258729955678659514608284468217819.7232331075410069680637386032762495 2.9379584658455501333339402808722929 0.0852672856585035270826255566921488 1.0891233718544257928233654779559587 LT 1 -7569608186.1947774466410491494117444545396074 2.6947111069009950820226332959446560 0.0821655710955386227216313289393038 1.0857382652991096729187689998814554 LT 1 -24797205326427688569.8194051328163700683641513337359647 0.2835399755456981437261145934252467 0.0574460551120134003709812526589228 1.0591621253424625742547204459068503 GT 1 -50101639157702.8228231549358353726211618308110459 0.0515655033168896213356874511421723 0.0800836227453060427535506384059287 1.0834725073585633545417516568021778 GT 1 -50001081655440948563166032777820.9651108166549897156989837850022587 0.0203292522513812587796610999737646 0.0245635926757630699716817041320413 1.0248703108704328707466485218235220 GT 1 -7611574176175477.7920249619216666209071897404778147 1.2814843369807354869684400254364869 0.0379735317077347059724292042084068 1.0387133148776051010048564094632983 GT 1 -49462473.1924417759909610236166860379873113 2.9933236331998893920044455381526909 0.0548831273883771372723355433372473 1.0580397985048655862297687714429763 LT 2 -731219755999783249504639438424.2178150616407816491156924952781644 0.9751024610515298834308353305060736 0.0547542456235114366627681546464357 1.0563103277562375275884645789791847 GT 1 -2891192600262236364971704161.9304501327609960311147399989797402 0.3499053356492391034230317596250563 0.0126734785555102559392676146965351 1.0127544721260228344796707308658648 GT 1 -377215604438240724073.9532091097507510852020024223158550 0.2228351277348859699414805736659583 0.0584766017409310993381910782252972 1.0602560790863896478322163715341540 GT 1 -1297896621091679905316260395520397.6354890252638576369716247984546755 0.1171867710166062423439862520346894 0.0361421369151360090295140830840416 1.0368114401753778343921453491716770 GT 1 -1232889.9923973136251737547031871233461638 0.9295593992808186590989258103422671 0.0072676507032590708568227943860630 1.0072941887342334722181580646999079 GT 1 -2499945113526949342743213558744.2641485457242689526269569912653963 0.1635033124748012803333163830548018 0.0616222867391473217588763746268034 1.0636027316469244590642188365667802 GT 1 -7227713227301542087945227955872538317926261.4716310609812897774259143769478724 0.1483618362989080148149727951848508 0.0990061202752903858244312823467371 1.1042568141552389329511292180899718 GT 1 -5457232515768243.7407707132457388877560568390506537 0.6258408144099175737546179256732588 0.0202131038608197004839810475828143 1.0204201838830372950085548827423274 GT 1 -97342332941075529.1109555236401166372005828016285893 0.0712843284223809938844206179683234 0.0496343559886227680006137586742822 1.0509084800050746162935692430311026 GT 1 -143816976991757058261481112628771973.6544264164264125930045100640656876 0.6261448161897151332231528528943219 0.0283266878224852000568846131608252 1.0287356295982890371804265886103957 GT 1 -3091455909523904659651288917230270655.6808403228785899206304170861443370 0.2082989583792718809416513693079110 0.0575510288375895767405201696452669 1.0592735031284499212387413419936474 GT 1 -553.5182018748013879289590022554164632 0.0887495941313557092856429674088759 0.0403544788388013963716068954983519 1.0411913114997942136354191139498722 GT 1 -1495115752.7294080628470269268080145458186583 0.8461928915390300772404929905580233 0.0418093429229550374865037209048665 1.0427085050742386460037098508422803 GT 1 -26286331084004794178040.6996531215562387242650575496564350 3.0402974188434213843884167135690028 0.0252983799898793159700317835346184 1.0256238855801090829856987563592909 GT 1 -292458605002069853636989474827.6699150338370024753603604971665615 0.3554488416474763385762157076106482 0.0417822946097737397030569219122775 1.0426802769432068333210762982954602 GT 1 -6816429461332361988839379067789555784066149.5557188105936199881802765180331703 0.2521627593151993717064447221365484 0.0649543484561258138840034842167283 1.0671599257047462846767108273522587 GT 1 -9517474527273131877999.7099546653209218677660644127782415 1.2953812872469539385142286486091693 0.0163626274481108790859325475213744 1.0164979736808586772289750580890384 GT 1 -11640849104639658382976008061500690329.0984656002477320584126066416885298 0.3404044964653574923086810221793574 0.0483731824895107334849645981131450 1.0495823194555858081104503124865969 GT 1 -1007316498575810617528108604953.0046180797581722910713683350490830 1.5132580444583419123457691059711379 0.0670250000507166538826894251892732 1.0693768738321834157554014289648149 GT 1 -175035879053619.1725054129675509034176064050343972 2.0503807166397721633797674370769763 0.0062704796135252125492145213150243 1.0062902216420777213646070281545229 GT 1 -59997161761097540499026.4112887786896344050169836000390625 0.8739482459401798762063308183612664 0.0453003695561818956795942671876944 1.0463585110696478469631071765780863 GT 1 -68.9437633712405472738307555389376058 0.2309154607238866598119718582797518 0.0796155558427076358085081022231070 1.0829638221400974010560325713080260 GT 1 -111352575522407197695975818122089.0475180105505483869314035238125128 0.8003440248107089171042418410597180 0.0437057194580471549313110384909994 1.0446895884644009614087163522823060 GT 1 -42577147945843874312240457733399332130.8410008044907328386295669209066963 0.1423154626854871974159768812481556 0.0599774790811538669680017792040565 1.0618514455807815385185143831464486 GT 1 -1467704829771023985041.9160131253979683209767907304449598 2.2128048591243318455092419913017134 0.0629568459065732022841282943681042 1.0650259422082681592659403016442561 GT 1 -315548768638410768471614641.6898218139808765200536556042016146 0.4674723071382331488713942653314673 0.0118754892620095643294432975400434 1.0119465661603418318096874132016075 GT 1 -743953.9046878705809082539410274815786089 0.8405531687984220823182855593989045 0.0675709660829149504660845986255806 1.0699622333981280691468137927999139 GT 1 -6665162943447019722485829102746767091782.1513204119392216488866179766902233 0.2328065992406738911003827128952252 0.0201488766651072358963554645515852 1.0203546338221615629353977154657282 GT 1 -552899301806429943.1224679362680604561919108256035847 1.5516887593216860282408763613452359 0.0542683047117922957055405829209400 1.0557963703608152073386848526143555 GT 1 -10527544835270028714220499022739125934.3285755931980326858685725951547516 0.6011570715506609732239526505993612 0.0405530730454821647764054840265065 1.0413982782955675629107710119267747 GT 1 -106798851052968510813595.9771366286680062648535635913275076 1.8278585160637268481432067250572754 0.0359001788612183953074117209007217 1.0365604408332575852847222588597248 GT 1 -10.8807397510677439173103139539011576 0.8549217813617813171429844096592392 0.0207607766825077055044718326890565 1.0209793115337782250519974094976823 GT 1 -200955472184345.2274816200991419906057388432428724 0.8626714662073202404549152450534435 0.0811547663322051224337118930465981 1.0846375781341327728659808355738781 GT 1 -1898141203063838889659.5987582137237741518401135492215748 0.2849791230575085071174165368076056 0.0620249596620044846051363071916854 1.0640319397777159886364192166711735 GT 1 -5064184.6923424664563490216709584335247048 0.8856036110530495914500440499887298 0.0226388179431007328592330141453766 1.0228990104484750945288768930098993 GT 1 -16604655518119194954549767632.4023442828841424612323412920661095 1.2228039741367264062646654969003194 0.0498509154544546607283596030088833 1.0511363755993735406088022353221887 GT 1 -12307203119133697406886906481117308524040175.0351804333654113788681059254015390 0.9037778673931491858017312689759333 0.0950794964854232440638412699608098 1.0999081805608516179481893064846246 GT 1 -183928418938431158745734611450629.0796191132820450552139806341392988 0.2927094836477039027023796731997291 0.0080618107188102320074823543144779 1.0080944828309116497412066265564470 GT 1 -1064256347843041.9596069662444155352805778956394195 3.6526958671935115406432047376095851 0.0662571512281363439759601526668273 1.0685542011755605618756049577451383 LT 1 -2.4460205182814515990738602398726458 1.8294311240789938414048893583293004 0.0263904962659101116414809124092427 1.0267449759204618452112031469503188 GT 1 -339793868263872.5185075331572662191081776684702540 1.1339681868545753682940158820657360 0.0395468436489385293585646168017519 1.0403500680293920413594174448930177 GT 1 -38303579234489920403625696395433204518.3346445902771516713078958787439904 0.6808645384456461046268604594402358 0.0273379787843350741067216764470377 1.0277186145737821703033558338354848 GT 1 -6413070252038962247446813328358904852.3209909294878963089904808284210778 0.3993336300179841675049935206221732 0.0309199864400559171109055678721655 1.0314080971670852173658735156433281 GT 1 -13085645292112897203.0570629850275401082958322352853038 0.0570454273881716217620502060598929 0.0001885508721155860848281934409204 1.0001885686500660076795541026648850 GT 1 -21835897857372.2985532381550321322098649499784208 1.4894724740627253908696446469343629 0.0353481486172214456839757122614130 1.0359880185075273129368037614670580 GT 1 -3099086673484955967206937463.2371603457486874036713512829382687 1.5371988273853113807820145086502056 0.0426285299012604839349923244018795 1.0435638018214673148999599218148671 GT 1 -1883434326673.2261879222483809794513419846267856 0.2266815393625809409892675238556868 0.0629284284955370286923823032493434 1.0649956159847449054989182319218121 GT 1 -22722076992652985006304651861100850973122391.8930019600897551271299848738315676 0.4437277466243170349738211413232050 0.0940034325998023148966301089934810 1.0987197616878386804909634956981889 GT 1 -10938797603047572396237581085962210037104781.3255442944000235865280334371997164 0.2263933007217345648139224634052701 0.0098330885089169491525740299320115 1.0098817525987164478892164570683626 GT 1 -778274842275784.4162534316005159471791224686822058 0.4658471047616469661824919485708447 0.0828771660390538334039441866358604 1.0865138637215773894667910252347919 GT 1 -4118495.8231405465806493317125948055999327 4.6035295106861125488675650679968263 0.0852008663758281426855112495677879 1.0890507638997969423196655921276274 LT 1 -210964321108533395385864506770166.3485596809014322723928254265757433 0.2550513980592216653283770413497726 0.0277847919096294299492604055592201 1.0281780915283400514218655334890300 GT 1 -35809344624096421431052043898522.3756020094624262024883519877383970 0.5354555700546135149350727802730065 0.0533221144727729661298681750855925 1.0547963856561738456320745425947755 GT 1 -107115811616778291370633400.6494495456906728554702375974915309 0.2909912532507358559568115619736734 0.0153070250179083212486388073631911 1.0154253869245493236152639294655837 GT 1 -30.9985999873409220726395264789334403 2.1644903249791717256892514085650903 0.0179409435976231023829597415371500 1.0181038335333183383890276375074316 GT 1 -651201066531771972165522350.3390734104285960543304167242684970 2.2597907680809312188842408259826574 0.0302192203932889523772035574424032 1.0306852334321011048510846777568470 GT 1 -81957017062181797.6436560357156645412881705164869662 0.3577527561161900696452168902388329 0.0450442667967555512617677059236500 1.0460902922424846004802600976283805 GT 1 -2404891276934878404131835162458046406105072.1041795592058387315278495014944707 0.0737066770681044994344245896630438 0.0605404610588711911732487777508947 1.0624505276434186120517566986247598 GT 1 -245846062468098389024599.7032529909414900934120226255473640 0.0815760616103916678364464043991931 0.0553347176680895188743953942755956 1.0569246128221021233160971746241201 GT 1 -2342997946240966613643590.5937599266362053034257416842789664 1.0478144156853819954264089655918830 0.0377417163766960265840050057208578 1.0384723782574616119011747536381177 GT 1 -52050366078895615111112254.0390632168056647272098003182581453 0.3835807128993362302415919438576334 0.0426525267478204890959619050966258 1.0435888674809935794416622938480088 GT 1 -3112715.0365913581870576906882015116103090 0.9221239389327853767403908216503285 0.0564431923276849723493042058541550 1.0580987064764440430388274021201027 GT 1 -3022241096589532869619439160248939884401.8905322186777832479283087498236693 0.4556765479209490380021779975307358 0.0656961504957560266128279985841815 1.0679535729902338159249197964768445 GT 1 -209828468381084172853383932835.9017652113754294902197393773778728 0.8030107202120237701146189532545820 0.0053522749233269330141966845152144 1.0053666496613972431052500536536256 GT 1 -6672366776336527211864977239.2686754552968607820559668452500069 0.3772976555062072014409454383625368 0.0253453875893819183545305247408016 1.0256721144248219237898306160503714 GT 1 -1560024006512222119722894762652421936652.8645119538669973567905392977837290 1.2575805941587380124451802923576599 0.0916892551067878902512352414895154 1.0961687288695892247736639505313052 GT 1 -3326462.0865967308172471725581570177665099 2.2059773071159974358276309390825406 0.0171481973932300210478461737792548 1.0172969305190966828572182321357845 GT 1 -19064463782540.4088162309136648424770123216689818 0.0831161704746438232506855376405355 0.0578917308360096910124954632269080 1.0596350755920943810712071356763771 GT 1 -9700159468171013388509047.6589361453508962234643342916290010 0.6367566617002353423168218210002295 0.0720913592138177171394134349698821 1.0748219984708855406744119581197735 GT 1 -1.3565503656449281929810450991552663 0.8985521541545221520483115349548289 0.0440017618698385075630615300235099 1.0449992088925161401568976961866497 GT 1 -2553058.1403174806287368116357040661940397 1.1544378629532437764200811118211832 0.0252569387845806151028712240657308 1.0255813696721645797048345925025540 GT 1 -57052.6857087470413053930993896896017213 0.3359091582260943811667467371849617 0.0169184694907819483529844233277904 1.0170632217766648157245376793610079 GT 1 -47633835242509823698566811387943744469.7349037134283353480797594134785389 0.1176853802751869465127097730768864 0.0524458249169400815978566654028752 1.0538711667914256679182761472251736 GT 1 -63802838984159977.3096390837699493901637006416989317 0.6793326579870292727549089076804234 0.0153748063488941284455500351168186 1.0154942242836842533953250108814772 GT 1 -17282980890084258125.9654661798301527261666723708328504 0.2627879197739397917721823343763137 0.0050232561410434933069911967675602 1.0050359151027711074064566495573517 GT 1 -577399922829158947179974.2143122600380531161153896336521641 1.1427176096531956579425384344433968 0.0638507299640338822981093816525544 1.0659803386854238276307379429483771 GT 1 -736819.0472922112638205368883848089719580 0.1595741271895536082489956815424696 0.0467677889047261023692015105231166 1.0478967417400950889259867903707373 GT 1 -11320135568292868335975409256.9574953957811290008695971035367458 1.3833042292692154786411643501557820 0.0828677315182399844398133790798852 1.0865035766891996486994638764801769 GT 1 -9343340758.4484679877124566972750741946378583 0.7745619531841266504415747447979020 0.0016554815084831522415763212420125 1.0016568533322238947151062156646659 GT 1 -1642001.8186097520207917169042559222049323 0.0928764676691654026760241691457391 0.0689881811823907508844751447307687 1.0714833070298912680166671774679794 GT 1 -377454092541684703274014490075021645603.9938180916677407400888200975844710 0.2787020156666608964296916275667826 0.0431139396762190390429476540298502 1.0440709538400940790280379197506623 GT 1 -30828340078919798785692399.0919961968067427656529299942148062 2.9449735051071486816046302680896142 0.0745414839931310231496072983284390 1.0774659713044943001743282188241450 LT 1 -7526248451404.0107227213735097060545573617344429 0.0364292120836245435526071194991908 0.0449300961245001714923427397357004 1.0459707434048407532640909053013370 GT 1 -443658524759.3299752737668455756825695540314911 2.5589016488187889223726998463685993 0.0449327597573445462875309411130504 1.0459735323489252956643353729035686 GT 1 -147551493591327103177253.6570868661035430213511400752962710 3.1204141734228522507744768243358293 0.0178855137557992386628638112287469 1.0180473926530854331191554136814324 GT 1 -95868444397142635440896093.3334580559478462898937210042768667 0.4127788283812755947596783872520433 0.0407594492191785715697426369115683 1.0416134005360440356094521447554370 GT 1 -7917589486640159977373556772604924868.7020763190971714444638533430910837 0.7565156618334800215298828185023919 0.0998442068406186775349249249690478 1.1051874271280864890597064630032727 GT 1 -3827983944081677791970.3743990740141566456903372084824950 2.7467976400476125191159111748178046 0.0672637075622105649951987430140109 1.0720571236784562689980452507814633 LT 2 -1378325816935350383177126524318157.1046707002901150949980967447074104 2.4356047522785044593124650090793227 0.0847227411984563765287896964784598 1.0924468695619007692875424025689373 GT 2 -3480564510017364887371979628306029386148.9283201868528419383721402346160009 1.5710516820288093012422605728017818 0.0326260841376486698443959400007178 1.0331701820926444099384890264024282 GT 1 -692.2841654902296084589577397469207113 0.1226605257013198926890055975141404 0.0398376260125125352785707345750864 1.0406528692524400863622863571251067 GT 1 -11830447052114266953498746.7461543299101588159888284762217588 0.3374605645384237355708715195400687 0.0575501655813298085151505923919348 1.0592725871575158719073778444903451 GT 1 -46933441385609746.2226868219964907090929347303466937 0.9787998319495130719818874187525329 0.0653952621648294892448676259923529 1.0676315793565542191742641302585222 GT 1 -1226054109147072744076.2367905666254776600177626573622525 0.4348358423132673206742885348918540 0.0433980590895117884340226657917059 1.0443679187703131132177121220193245 GT 1 -8045.4775604336434987967333428279484901 2.5914506596349648209633977596056673 0.0538883787056577251693174498865177 1.0553947239793079482176405072114299 GT 1 -58989673618000809592872794277556092.1662433693556386477064178670219579 1.0756038065198308502608032247475463 0.0090376066212578508006122523807290 1.0090786935268481973701245732991911 GT 1 -512251723303004405190409240382415.8328869027463968174232953451476089 0.2691729777907949129412627156562726 0.0115458808052319895459464527529372 1.0116130520214744803289681068559883 GT 1 -22.9805443949844994496186159180867875 1.8401913310818103181099255841114286 0.0363891589250294081199680605952398 1.0370677577080181289938894248680972 GT 1 -3345330595911974729.6730001375260753159743492503991618 1.5904263080317518308262551372581820 0.0248979382779837803951152889814197 1.0252131347734741485948580411208705 GT 1 -4417166373831.2378996225908856037857934674871508 1.3965764570098984105306412062357125 0.0064155851431110998590261733086663 1.0064362534564482938972128558323339 GT 1 -650952499313624370988343503556964586725483.7824174553852372003825609960297397 1.0374277423653387044828970398269159 0.0831455620928998571965330131711574 1.0868065566135549945456696046675392 GT 1 -1.2317315846955126257497045535537697 2.6298812418049088837826001093930371 0.0773960899335212242441585501681817 1.0837998455164122631356802836090131 LT 2 -34026.1845153375827607879886009149312418 0.2641895093689817086610351964301092 0.0746827971321546471068800113192036 1.0776186782347366689927934244443943 GT 1 -5180910258400184366870075350797401174.1843913453554550246397005201275850 0.4657100275031186879545272385889368 0.0880106419788427156488616934331703 1.0921269578123374107604534978026078 GT 1 -131949457806646463053267634656573133.6659209520828209006096089873834343 2.0538394158552530614489046569729943 0.0582037679876217689138687846170078 1.0599663420169802980485265395951383 GT 1 -247208598282710664216933.6357542129153315456167196970365613 0.4106842282709493864592130228660916 0.0851967356364960352647015188065361 1.0890462484495147851534212764312070 GT 1 -69013480720988293215665082574.2388159472774406913383278560659517 0.0943270580770726951895186593475242 0.0370907058666043131567277269464398 1.0377960625513090985001217744628301 GT 1 -834397036325683020.0477823566121103946798058142675984 2.0816469861609138543046812623974835 0.0036053870522533313886876590039793 1.0036119021244368419929731214576310 GT 1 -616205063181466154426683296154815.2205612941958770945793404840370394 0.2354329898748836269237016511444891 0.0655854401259611997136279792914106 1.0678350849725969739863919818775774 GT 1 -1173753992.4904587882711667646834264103198298 0.0118435217580784938019423460467476 0.0462088791152839355950885160547338 1.0473105823616835811577820255968260 GT 1 -38390041908029199845843622655728.5978321655824805526046479667701251 0.3964897885599052870246760160260600 0.0223855749571233543760768595785762 1.0226399351060778153240358810875169 GT 1 -2514558887435369661844.6339561463662480269662845790008638 1.1949243532539836304360194282974339 0.0413140699976095209588171772575305 1.0421917551283058210341214044736990 GT 1 -102000667293408904398564691403092.7588768701813955656853328763787608 0.0157393142610634256336722491938107 0.0589958943194413943582044374325770 1.0608077763026002687548843142738870 GT 1 -7356716145695983595.8561161962242077635127962528406912 1.2858142079643921069447364260353647 0.0532843151920232610493044284814071 1.0547564581087828034081102125952948 GT 1 -10048304773462498667.9446367616986877518917930268061272 1.1785936049299927087909948848802814 0.0325523904899910564371322997382391 1.0330940059216365266513524978379146 GT 1 -28120.3606547027101789515000948994590711 0.1220725625918432337306990175643589 0.0388234726690016123200678832795727 1.0395971955896625529795154161993580 GT 1 -50750132575161026.4247273180528928678730167240619717 1.6047805150240511991730182068133808 0.0419980517099636308267468949483417 1.0429054673076697772405286327158740 GT 1 -23056899658619.2286838202271635714010748727910557 1.9813591677807912533215034555916574 0.0128101293357370626136419853133509 1.0128928865559977966609778728293999 GT 1 -1423823200140939990665.7729332961549453074534155705448158 1.7345544313213482905698365596672470 0.0584360530370179947453391444720091 1.0602130128908440659785884179904523 GT 1 -36825894867369383816381318178099484889.0982088150177470898528512145380900 0.3807208360072020233183865166886982 0.0270234183025418879127998424477769 1.0273952652281606946819817693291357 GT 1 -90806614788203083632529018764254152634.2281452080589496475340384954473852 0.0089759938378936585592642727121061 0.0176561104605646037006920900390887 1.0178138389172513482415498103389072 GT 1 -400447498392448968423110340349295689.7482988562586880891078527695837585 0.0356717582969944111456625956889120 0.0261280380714862902578286330031237 1.0264754399062400288347759788150896 GT 1 -86380005049877718527226851110609505702.2418441254607344904275366224809557 2.5665538397711064728601635692763351 0.0799618601600736714562845795609601 1.0868129440391801026144933107781717 LT 2 -113813748.7491633990331405687832379028499713 1.2783729054609561175330983536267522 0.0620374712034144998399035357822793 1.0640452787519079417818045420831123 GT 1 -52056498164553568.1877559107719179454025113849882768 1.2274727329425551713610497181840067 0.0415714831393716679855649389290364 1.0424602974093681727002152197255369 GT 1 -24.3030965535839146636350233261196870 0.3153052920124195395974334819781278 0.0382081620989227947845387366021627 1.0389572364491964256728966008164687 GT 1 -78803240576836804.3195012277650873991956533734511343 1.4515791086192330694569244700539833 0.0919727394834114793144191452459915 1.0964808782361510472650379020568440 GT 1 -248172451622711114048786717938.6120557610092154238845948368918447 1.9824596681370587122529745264316163 0.0301067983296145366898399752841777 1.0305693149170460318491777171524972 GT 1 -747170354492459110004257730483.5330128405332245014907575623297303 1.5820511629253760523146647922398089 0.0949697353756018287924041781342782 1.0997868942674472665654069312145726 GT 1 -322755909827202272768991774352376281945.3370063542654688591170373442739039 0.3318950044600842425000824712500210 0.0922647628863927498359956862550243 1.0968025319831362997220306884859644 GT 1 -3875782689687914598843120649400.2510685427988491545940831499976225 0.1405577543580734871207458861131509 0.0197871086197030697502090372172450 1.0199854948075210452008092047256437 GT 1 -189361773794634215735623119254381.7895181324573708408215617519522618 1.6161428038862530244888933382718626 0.0679402088199568436167078554234818 1.0703583127276460194021169975739512 GT 1 -11538169900170698298597.2655139339646273427497357171918158 0.8496306689295585282348796937231753 0.0432895515707378026762456395583965 1.0442544950351249891931597043827934 GT 1 -4999.2346738801185872389665836066907564 0.0614215672993304846575788255886991 0.0115263724321592866016567636911464 1.0115933159708218625672082339073033 GT 1 -4464547020220806740303438752929778856661240.8167938212531888711239196143976882 1.3338201106884015159911877475224468 0.0744911041714945756188730720615417 1.0774115350985116859255282712129238 GT 1 -3566940730460204854973713139315092248718.4768574473369137518242861138122307 0.0345365204099417432836867956276370 0.0221293644161022150586885741242784 1.0223778921504490888916433294042705 GT 1 -1365990.9580919397193767012932612608794103 0.9183661915076210460124527605329433 0.0362260304293370277786542512380326 1.0368984832640348777625124784129409 GT 1 -130475423412567273720630949481.2998144331485986763696891617168190 0.3157697519321021472412036116122383 0.0796078520116705897840908168157456 1.0829554519434423997405556170226957 GT 1 -18704210337549508037566113658856212925969601.0005042961638140627697761377860711 1.0196591376877555673246702890915191 0.0341810046557650055803335794552188 1.0347788377466328607617091847048360 GT 1 -13418504181132700983090.4460016070164550561754873663387620 0.7869713755000462636145254041791918 0.0608363774111100664655315904989759 1.0627655629956339843759308604046285 GT 1 -37809332591385752.7756262634106409168632494465490405 0.4045008342368426406494015166451682 0.0294293900947770602680630966767545 1.0298711228061552040842138444607723 GT 1 -252771.7643906855817150071048765405007892 1.9551924001888110701490465143939499 0.0862486241711493179790978736542676 1.0901967622242337242025021596043376 GT 1 -8200690111909728187874.6321137053304589514343627451496133 0.1112146072900654721885285807744005 0.0458076114365648646671570929642172 1.0468899627047021817365549870549683 GT 1 -10367604387985840527656003408.9514248570596359882916083487670018 1.5902495710195581873879088732237146 0.0462565767556137459945274040162608 1.0473605920880988141271763741157164 GT 1 -14526895358277388742173.5619787031474308688100305692851950 1.0827939509629839794922020541904014 0.0516261809280593710130987058144739 1.0530065305368093044233737778984938 GT 1 -6451.2800413659711704708292560674559472 2.1329410673798564376241288320354469 0.0713589788412912470692940465286355 1.0740330290987979620631459232101725 GT 1 -8039581009413689746.4406786231638531050117995155490153 0.3733091485918132988891236376823067 0.0428154491705014107292297134460155 1.0437590630389940715252152831865225 GT 1 -151375099989448425.4846280839579635382418353688628015 0.5623617522416756291371151299504340 0.0753114666045892261993627070149483 1.0782983188264502167189105738093979 GT 1 -1325218679.1763343298113070335389692621443118 0.8092944559614281406459158869680117 0.0903644858918546484114503123900649 1.0947112936534810493289223091263390 GT 1 -121940705.1987119826827313446332997554184382 0.0634175563922632418939589358312551 0.0813046526680347490035322808103356 1.0848007161216274491368374978007896 GT 1 -6796792.6765010081577355375679910063825837 0.5773376636350942102228608451947786 0.0749528241146286356502032559273984 1.0779105418130582244844876886620559 GT 1 -18626490185725316369.2821295019816399633323363152587729 0.5357501716164045577724491554173072 0.0948264931978663362128394444868135 1.0996286334348321774003291853691911 GT 1 -18868438243853406522191581882482774138289011.8669012515910417181629895332520092 0.0598925430425498317397141801892344 0.0869037461491363313863375990993809 1.0909139780395282762749143074842850 GT 1 -78913196523313.7780110221466291418842977279869258 0.3385329395035199848173921423217589 0.0088871609880904576462125569676399 1.0089268873481545106934267159651178 GT 1 -42734.8247999808140072828665808323377520 0.7801873294183044432558420545955734 0.0556890666634901540361000511803562 1.0572997885353989339976537097836447 GT 1 -2025666587803378669642134652078170.0772772693029942164544913023889554 2.0038760626655487356964638741765607 0.0192186671222311910893767067790061 1.0194057465284475285944181665788549 GT 1 -491305.5818756714689102274611258218199239 1.0480217396813079998051805871104762 0.0901260393536166586635915163526153 1.0944491938481088439370407706788551 GT 1 -38354018071151022.4032726172995139441071900028927527 0.7776328395444557159234549870616324 0.0981894821491341862058451064895647 1.1033508498885547476449183264135643 GT 1 -2715907642554.8502335985910796431924222768388677 0.0028359894246502449612076741750220 0.0948743722695100256762515543188354 1.0996815297443332197099296266678365 GT 1 -47692421790884204639527045263472581604091.2908128291226671409361373867531267 0.2916921324452840634037877428821422 0.0841001835912619743559494956523684 1.0878482910222402645137255550119298 GT 1 -100755335266903273559661164.3255591626904737841303301155061119 2.1219122417014419024251917953200540 0.0777885951355179667404424630936903 1.0809807922674796840222301604835824 GT 1 -387266288413381876140269938625025074793.6872429911017410679991916090217614 0.5058983181120778726361442523556014 0.0323906382575988367500149211951964 1.0329268250735560998511432464649968 GT 1 -79578400562114064647.5326791492696237968943613900719348 0.9479043427683128816764964806115756 0.0582112322457791076490503378018667 1.0599742676037292928927875520288048 GT 1 -2321836289839.0628255569552142944919278602316052 0.7675316395803884334031355395461952 0.0741347525566733585476611477114958 1.0770265760447007636308562206160066 GT 1 -3198968.8351446266207642426415296307784085 2.0018268467986076932467253494330589 0.0411564585899542332486759704700875 1.0420273650520540754740316672843954 GT 1 -6629708875.9580764582673626284268260844504384 0.8588330513730051309408984208532148 0.0619497276838172573983103424212691 1.0639517361922738305056631963092688 GT 1 -28782142293560086106980.4732871346297627503710293986547331 0.2998139787019756506999232723733525 0.0296460753149063618266302169009894 1.0300944032245000214626677798967356 GT 1 -149008548256359458004273465378549298.8039458102006683866167461534175486 0.3406398307450820448506822984144941 0.0492005627882424402090823740664149 1.0504521354064989092540368301249335 GT 1 -520121466328131221891496107487713343562565.7317645963705870604079806134677323 1.9827795926903450411088941524742603 0.0513170933935930163460220069688236 1.0526806704473163404519967819509894 GT 1 -48986906117365739276136785011237258.6327477660663329274035015800639295 0.7403760256693825088444991028954416 0.0569211430254422962835796802475870 1.0586053763300233418726983101942996 GT 1 -51878775561610154307496173.7440902202226654222771417198363162 0.3084273615747918770819808432009854 0.0054006076386802990128609043297986 1.0054152436394296215371250133840724 GT 1 -2487747099415027180889596802734416.7594227050528059731738549219980312 0.6097696483931536517233688520948669 0.0255441139905091580617101376418106 1.0258760293921641346744585001715278 GT 1 -50942144.0307216230316369252563537783101437 0.5076684327375597271160664997155980 0.0939239880983158237322419699692703 1.0986320781121973581480475700799154 GT 1 -16472208355.7639125476255580475349845299634702 0.2415208658925805461566113981184952 0.0869624160162738466985614825364150 1.0909782338634357636020302711266594 GT 1 -194043919363452839682.7780061056936522999769148158460938 0.3562571194184092410465884118186493 0.0119349713930745169329968183183540 1.0120067649721447050684492757910996 GT 1 -4389209307076.2589846279020408962418550424184449 1.7098654055522354550491420055760395 0.0749251429139828975303473108055842 1.0778806181646128878664480187584567 GT 1 -22361.3251884360095209584083019211653754 0.1928343757523246590034403124833445 0.0341007365108041502900686646996961 1.0346957323096572562931166709751901 GT 1 -55594903103418258143722148547031087778022.1151096435226646375533791513325547 0.7700075519545778130841372920541681 0.0108956334578323946924229593613309 1.0109554255841033598532706541288305 GT 1 -602599102562130119.2548590874071439164928665293515559 0.3035431205068215948154958516073710 0.0881912179115235744120706661928071 1.0923249796540090724742245238762163 GT 1 -4139697662207.1007629892206760093388525067365054 1.4847823505833189720287624226563758 0.0095324991297750768151810124289720 1.0095782242145041668653371447144566 GT 1 -59298.4043163822666623712695298035676858 0.2657939430880571190195717571932004 0.0339206981448105896604700558661472 1.0345093551212720158445201277337478 GT 1 -11335154.7683265409240531116442134648607789 1.5068328070214090634359820392262480 0.0240799679365018812627482600362201 1.0243746302870176557072737543462032 GT 1 -19540564874303.6871485994439962741826632173684578 0.9532361875289777595329658359522430 0.0763011691611351994450299261905901 1.0793692011212311375613900995286244 GT 1 -935293882387.9521518212246247616893842003649946 2.5560212622211063236961135284098160 0.0348431565435061665180672875790951 1.0354646587707902886345994756732227 GT 1 -406978379146218150193613572502243961.9078531583963120001893857542084789 0.1182513496540417757637132967118098 0.0133863956449640711511404238704235 1.0134768011481988674353457324133808 GT 1 -13.7465503585792572415644758366917875 0.3909495257170699180500954111573715 0.0922890057082748221354893555090536 1.0968292392702639906180025083077803 GT 1 -697545777410827772499896699334515417.5280025871806918849790563011428236 0.1022691438975382007354738016434820 0.0511768764296422467791552789228070 1.0525328796503691211504439695900589 GT 1 -202529499877762519263.4230888277534601349575032477974028 4.1772601733593512733674130440374203 0.0050012443788592768916330211808159 1.0050137924563456966795006944862909 GT 1 -2034225003061282591171461637923355960374757.6532181542114737101462216985052766 0.1665085385660377424214563775286578 0.0960548356776729031007503906410207 1.1009865793652670587464701508955836 GT 1 -13046281974521531960708771335686592492654.7822762451861571020151423695717442 0.8831195583716425435521912692554746 0.0940716495101018393311902624287039 1.0987950594108935529592170832978220 GT 1 -2773384399796051926752098541237008.8557918139191092643017848663692796 0.4060571529674215067295550163462557 0.0651659974181997204604696062172858 1.0673863028007383018793128484618804 GT 1 -126509835223398140578.7523695858380669227534781739343878 0.7679830691843921070858748688688761 0.0833796981141480302289313316536714 1.0870619580297177667758761703030794 GT 1 -2146240833.5428920601566194362683594199225757 0.0346588854647540676907882895873805 0.0541823857256990240605627075755096 1.0557055252681517407052123203365248 GT 1 -30988860787507049861871145283942257324207.9865000469344296557664389832004074 0.5441170714528068284067650219512804 0.0663510002622479354527906157178733 1.0686547146636809112295551879059433 GT 1 -4517910384292.8667774238965565728417699452664189 0.5835303175159581603592859485896301 0.0969833471686968801955394181482974 1.1020142840615503391301886703249284 GT 1 -11984146314302667.5556655298178306745311633567935512 1.4047359657536526337879471901738287 0.0031221849756816878960619573768032 1.0031270691640687577899007980246828 GT 1 -10011833056573125805.4627009505263440553032053763503048 0.6444271150631409398056038640228542 0.0481018130870254738066315286590488 1.0492971964299433166514420548692360 GT 1 -53729076563369053265390228555695568193892.9831931788124086621025118523663801 0.2935319322937621934757331358480202 0.0178472107061244762094756702409442 1.0180083928182293289459719565285776 GT 1 -519050234381835267323449748440.5351938324892456644985783954535617 0.1775224955840097594079760146865956 0.0868102645424386391301719706803273 1.0908116045806871066587552449381625 GT 1 -6285517864408144666013024.1877729453174671560088986986603472 1.0568644931910502929858539368369371 0.0853294660405268680369404721785644 1.0891913507236062595377004429654968 GT 1 -7723548548752373395387581100579045606122967.1331945917325535227022214487322183 1.3407474870676201563721832371803288 0.0353804416965031902208260309230420 1.0360214954762136542082515878421507 GT 1 -129423140590986267591272003.1164601574385173746068502501518118 0.3405224147585551449075912870736803 0.0155591303579346495946659154473317 1.0156814440149213520652059088173367 GT 1 -136691.1418806930030392956980057162298706 0.8939929573904824433694582192526997 0.0111622546107006836833790479196216 1.0112250200812070132207272671892547 GT 1 -30812750060255031240427444612256529.9727524951701231004976785301514258 1.8788896590742401298486983802117165 0.0697817784468768437028888409319837 1.0723360735287822058695244615252739 GT 1 -15169320472703414278148736590479302881.4815951320068444259443431980872898 0.6108934456229182240614395217550631 0.0422635975778523190283537653431837 1.0431826929209594624213115159171411 GT 1 -296978036180974050384904187366505838.6015969654269920444932940019867049 2.5683441041590008724067954321307076 0.0419322301311901099107682035255053 1.0428367625228953895125896480211674 GT 1 -42287820822350.9677442034204033024257724356206927 0.2791298825882486197514149619233996 0.0879841061574645809312349329953239 1.0920978616007416452350564080965955 GT 1 -7844864747437042860958878883656855950.6509150031644130914152989287985962 0.6889461954795484685712481446134441 0.0710531550770899728749357538264034 1.0737037593263704988784303651627589 GT 1 -151825458146541957519189.1893652697853076795845515263368487 0.2484226508476205090188831303635356 0.0045588791435188459612479512687556 1.0045693025243950922904767522178252 GT 1 -184562917047513737325048074179559806.8123669997520080126155172983663836 1.1113071776531867416245747659977211 0.0981196634104565399381907489662345 1.1032734322551053848881257722547075 GT 1 -476009730106671282743681838107745018722.4558449865641213216019888020008973 1.1559763506382579716181743726191499 0.0405438512640227587402494635916850 1.0413886667820145308713311969298071 GT 1 -420198102631035740139418940318890.5038035917638425270929237202144669 0.2674702109555490479442624440391845 0.0378851600243034198824306938467582 1.0386214591670980894208206035786978 GT 1 -6628998456919589806830414447148.6708245587326146417824785583555623 1.0548919096569410598088633399064303 0.0467243109794615306394271973380058 1.0478511317268667484696736279870373 GT 1 -21915943814339592244329.0042368243744511906708150027060196 3.3422307244203020086006304949236914 0.0708871246895674233912145508649525 1.0735250456002652939913007503522804 LT 1 -903377278124489590369573077139704589.8719559885948958065820635197180232 1.4671240820732008616027235945572781 0.0389097926047491199222654432287896 1.0396870061599087487013213214243578 GT 1 -2184203638894145192793775989164.9477661882673757686316542111552944 2.6300489444066546298044436543729422 0.0182821302906311564163219662576479 1.0184513136283376591291571776763443 GT 1 -1.7635045040245004703393174661016831 0.2152868408312819176352210170298139 0.0091778167384799485395777289529650 1.0092201923750163841931713397731474 GT 1 -4496275.1478167287272247914657248361985992 2.3219029077346785985130707348770243 0.0429821614052738866017282309725683 1.0439332475830266689343769912601033 GT 1 -94969802875283.3299030322588198004451319621211208 1.2343435978943925588501741113130926 0.0424304426483640361736399709138674 1.0433569158121715301195088363325964 GT 1 -202703559281651645609755056.7214405507432949235218453813386648 0.7716933741109381921980901227895470 0.0312179894060469677040170431376972 1.0317156556667366333971023622861537 GT 1 -18468373957451659351457609.9800088406543764771196500426953060 0.3519093062128707247512088474464632 0.0472919072937632237476142410688154 1.0484467258095888940114350783024357 GT 1 -1676087237449.7101989821416346147411001921249377 0.7083653654990452020509296949132313 0.0386868287349069381204427231730020 1.0394550424905592788162928430032611 GT 1 -20648293736605548416292197606288396136038.5777167894053651180654611426541998 0.2648138454318254304858084293926814 0.0290411371965242142275579686594457 1.0294711773931335076230316481182863 GT 1 -2847477999889456.7404854590796404715048171333603403 0.1325311524815914409074118286309644 0.0657348858885030415977803798728911 1.0679950329454260603349615973776137 GT 1 -3488398879572.7896260091539868623798978882924364 1.0050954165491746446581484772772849 0.0860933798154215940227081255375979 1.0900268788473221604677867100758015 GT 1 -13801938089.9849838789888800597437362259898276 2.1772921444161922785915994329627028 0.0503793360771263771448890793129837 1.0516926752632935738088073300042410 GT 1 -527085476503123989451872836611241742757966.5474634977467649654078062780253914 0.1700549828703593708593941678455774 0.0251669122133421671940334495716463 1.0254890146529994968165243423893337 GT 1 -4282135901685401594195474365105915675008943.2422557865013399107506322493387492 1.1074363172411632733919218282641523 0.0742959843261836658148727883649912 1.0772007329321902361608975817967360 GT 1 -364599184323111611810911141055525641200.6153699252175148800041139672991438 1.7283453549525023352224124580582351 0.0587116302222983451507671033598285 1.0605057359948261845785484272296812 GT 1 -168032287192509858193248579200088.4350756706787426708215697451429289 1.2949173527121695865317522919352131 0.0061174810457297877356655621183710 1.0061362694974244217734944756941976 GT 1 -1009444536333024763.3109614889893772565112581580999461 0.2812502479790292273824530603391987 0.0611420838556404648870012339772112 1.0630911252332606873022583066770319 GT 1 -17275231772.0546898733404135368995833016090298 1.1954663949872366357044182572794248 0.0359688898812302834977105807225830 1.0366317129848807741266242004005148 GT 1 -168119857548.8635912906755789526040526765974628 0.6743059225203329449688682280212181 0.0374860752691543166239564446217778 1.0382067456720207719231054964427200 GT 1 -1225705738220.2958549604868599130145099523531615 0.4447902227492245551385564626338444 0.0223571097599077976282587511047278 1.0226108185320135487876221100121436 GT 1 -110098071119732647988954625845932590731241.9963228773783810967070495146087199 1.0883092536042788500900995326905918 0.0674478403444358574435479275018345 1.0698301937410180547068452016614448 GT 1 -1.4950608374102216315152294667516997 1.5912740702284815405033367501696138 0.0226611299380070234852081671841694 1.0229218395212866222877943346320417 GT 1 -16613809624.4703205253854046195893996722917904 0.1392752336501097375086748586122553 0.0949048060994712848459372018049085 1.0997151541835181645684392015817535 GT 1 -47112424.2289492856934110331636172142604559 0.7193658539960078328237321786849627 0.0554562127282343246358060839609873 1.0570532328486170135331514094592240 GT 1 -2312058883359458584.2295316082584402779859534463447428 0.7260851253968582529320130775431569 0.0109452056114079092082669713180795 1.0110055450634303588680509704715446 GT 1 -8180502828577122777629226.8740785085709330175112005658649329 0.1471503477673210189569926074312413 0.0203513653074777783066477756958061 1.0205613076349668706129025882654946 GT 1 -102053209.0176087762873606656010510841212516 0.1221515832854584362777357055224228 0.0853706585993845010121297652375512 1.0892363871437355583760369140613421 GT 1 -66973788.6390485341474085276392865255475118 0.0621964947578373408273902135820388 0.0406888576515746412307115260664905 1.0415398121434157941019619428424842 GT 1 -12375547637164288403044259196705.9772738275314396232660558372115873 0.6686942225051370368021209069139764 0.0780853457404420067233745696160457 1.0813026255890329480175793879203655 GT 1 -950666835592394.1330115138566960697866155259032884 0.0064306821418925704543186446644357 0.0615250700891592933879206207584479 1.0634991362470099659423294889463370 GT 1 -7883505.3471638571269071766519219491302855 1.0309668422918031613130213950702708 0.0365941538549927251401647736530754 1.0372805165617386277582446821960559 GT 1 -12132604666969475351.3636377797362443355236613745667824 0.1313906805547319495277846605068567 0.0420452353435529936570626412538625 1.0429547206475600499054000980994716 GT 1 -31256930.3306827860503615974443641585656011 0.2297041084642601353322839516876376 0.0727420051894999090694994556956774 1.0755234405838206391667462425032187 GT 1 -11.8819470220766990988233638763093056 0.1840868639559276773052287159089830 0.0033132984621098376390063816440877 1.0033187995900728958770498668397264 GT 1 -3464684202052874231824005.4976182708600717746962507367564536 0.0004436470964920884722334734356299 0.0428091598398295761618523887870416 1.0437524924043092975863164650745583 GT 1 -192531836604088.6597487907338861871065707544915407 1.1724938875372949898087969363104377 0.0859597040620530108743374786513919 1.0898806210403499201142233923908296 GT 1 -27049585204481535444039817361000046045035.5433639695014261726135213061808495 0.4560595973870683666983187831338179 0.0593500683191436704303738886838403 1.0611842259547175635777530579824547 GT 1 -3575267.3116503711134095053760841120479016 0.9946326829848468854235567955536058 0.0840214991645884441048020197457994 1.0877623852871472355078840045487300 GT 1 -24274421780744384.5617444185026611055549313905638542 1.5480567628165453541586785479333961 0.0964224150152714487860217046121161 1.1013933010431066564779605965161672 GT 1 -31.5360818718389684803382156780158525 1.9510610571939222573475475762006721 0.0707485520760357404002324641075597 1.0733759116419170882320900193678056 GT 1 -62905342886665146.3069952046591144456872991383086558 1.1896362200962053134435938312825557 0.0435269301458531246241710908969191 1.0445026453814612655785369579654124 GT 1 -64961693228740782674861647395935311.8241131591893681727022057323809286 2.3363793417226682849762032249662375 0.0021256119083161575212064483258800 1.0021278742277524833341707159858406 GT 1 -314573499662812536485718987318.5503953421252029430227432572517599 2.6019062357228410895584807647000581 0.0027732039076991289771325898148532 1.0027770563617314530275322916178282 GT 1 -98787021378004503327255921252805572.3508287753107284884433523555713159 0.9521375096123627500724266609110326 0.0573450143865441122672344239591176 1.0590549322097214068352299540355038 GT 1 -411455170106659054040665904284734735.6150467863606938181112152235276262 0.4618603392961662863011001923565214 0.0884946390688250272256183965807009 1.0926578034422344183928853786056019 GT 1 -35612020850801370147553627298.4777384467947348980332263052280111 1.2314117686884941584026770412012498 0.0659327427760551260542130771721364 1.0682068334701370965702026820138087 GT 1 -1880245749526473239581042698757495103043337.7314340774925771626366549994431816 1.4871349633089693968519075024397943 0.0097577558233383540664235334423431 1.0098056746979459585874556367499151 GT 1 -7934626537633328198373981345791540180.4942449975902149453375344280016397 1.1896172718243673128978032447426088 0.0398889591803034185504160114863102 1.0407063336887097156297359303630886 GT 1 -30344147994593386800197032860922.7175940597278938171797026963797431 0.3750709351458451672303136833283473 0.0084822004410647459434350638379712 1.0085183790311951382770588328092044 GT 1 -5923025922519335767199074958008050464799.1437016522121808002683110017514409 0.6415346790851644865603267745068742 0.0174800756185739367079656887105786 1.0176346561757153030210629775828941 GT 1 -426212844842110824194380737.1718113094303392577351536921162345 0.3281523476533192385656643614985179 0.0346570410823753990832841829871176 1.0352718429399070122060232336321024 GT 1 -210053094369463134411044409454472863.8876840857387453381314129697982967 1.8600744271619156300108324887603549 0.0377688366021977674228915909978857 1.0385005625902419398647975098142748 GT 1 -19822956379386611505352307423643615.6176795712472696293848114158666487 0.1788852818196148967585599126399111 0.0718701365361530998609877209122529 1.0745836169090745666973141161552329 GT 1 -4171977359589914900530940471999708.1508069989197188958951509258922752 2.5424212344507763719362506998809174 0.0493681894739771033642319278841351 1.0506284517328118941866956696640379 GT 1 -752353156.4905516083095216400729023924696974 1.5746394813680176615832737694976086 0.0947707802537772500427979975356169 1.0995670858650128438794056843869036 GT 1 -43830912094816313938192061351288786196.9891901494343195771789955479495104 0.1050041286198344357560018640041955 0.0612296777840838279873213944882079 1.0631844279720215865387426247534426 GT 1 -2360608.6032094826259011165256869971139029 0.0275827938381444978154040327881655 0.0200821864934749128853376563059263 1.0202865746031338840368616445283942 GT 1 -162258846.2317208507364886316984575633123506 0.2891690012424429116087313082189474 0.0358288829141017960090332552300371 1.0364864927736402691608443076441611 GT 1 -14282806144483164511082557390306.9006407825059898137403508556129185 0.5746037718831391842392802556440232 0.0001672527402900907381388764269718 1.0001672667285894006790394464285711 GT 1 -19851.5429388616899005326694548236302263 2.9457443243736400116787232148651163 0.0435981421010274767721043416509473 1.0445771008036888923248077394683852 GT 1 -300989801769245975058.0356120898771059548106223761269444 1.1434110015639100637339062776662867 0.0704749440345214113543148936191337 1.0730815157929078926776287040908008 GT 1 -44248654969122727400521547699764.5116571980718823270250529615896141 3.2825572195326704469759720850396321 0.0219549124009088276078833398315897 1.0221995081704153365175861519366153 GT 1 -11059421191524894.9506725872226973768787859469583617 0.0216172857955376646415150452826247 0.0093597394926509159913779787527673 1.0094038171065920298218946612136448 GT 1 -84339204589616687104224.6752139688844999331353295124741064 0.4968659468052209571699460609086455 0.0473405632702056351945966960305379 1.0484977983462006513354355368152305 GT 1 -8376317810948648745.5882169274999559123355046430248366 0.8265022914693232608867535482349060 0.0766199585722135827066098284095850 1.0797143833644263220981899551900057 GT 1 -9109.1189095189263864589739247577607639 0.1046695353047025355187785078623523 0.0187222781284331198034034069666868 1.0188997586957295174855826279009072 GT 1 -278240758653743091890309567288719065255665.7849931385073664042791493454992526 0.0560074005309221766639558230244019 0.0251392449540104470876962294299226 1.0254606335208178611859329479961198 GT 1 -126799000.3651346967888495155106232480656618 0.6349895243990772199974650774993897 0.0201555381477742315314798175802996 1.0203614323093525061462476484099281 GT 1 -425323734576506.9082955874756074517412707876431143 0.8133501715505781076443968611189465 0.0276477590391674928573364566016544 1.0280371523485182027997026958366439 GT 1 -6539381773289697960545337189564403.4732965590609900541471301295323740 2.6120804580112998500240951522336955 0.0886222822041286831162785315269489 1.0927978487770141019442382306244548 LT 1 -145447.4069752554189404738412363127856010 0.4198467407846808567852486958036270 0.0072717706402796306239037813983959 1.0072983388413319003270708497205576 GT 1 -3193312441.5736065711418760871556285139902920 1.9205740494791555522355930136710627 0.0926994796181699833048057155980093 1.0972815492568119626994201476081188 GT 1 -36138803884704403499913600194780144.7274239956359249426261234240407493 0.4082675984746969591738579062338334 0.0394085595693400454825807958010184 1.0402061004400200974526978697060712 GT 1 -295339802440950626413140813752115.3048354135696646400963708467666751 0.2048550634854773611877950402150579 0.0380293862248730455588459088934153 1.0387713757943025556939968049723993 GT 1 -16184953181577565650.2938770015319175858748963696790204 0.4134112376318540072352324938590908 0.0255240494107033166092765433342724 1.0258554390570587608615665793070250 GT 1 -51560407268424805085458532546.8372770396885282162115431212733261 1.4617425722646144758007311024921236 0.0595508445723432939020007633926926 1.0613976929170248588394163127024153 GT 1 -14143020998422663435854564759.0854093361810218063153225589839914 0.3007676364302084886597891540346274 0.0248973621535485293711384155700186 1.0252125439386398580992018901060693 GT 1 -39599673625965.9744275794840459136936226552666220 1.7007091287722576427763687313995762 0.0366680975021662931811960880395536 1.0373572718412383469781521498330588 GT 1 -1765.3327148558479124848282300302750840 0.2452458806973040557769747511363775 0.0012580365636523873244504066125607 1.0012588285559566647006193667043152 GT 1 -510230122630688259737977457486.5244562217877070354709024324449039 0.8618998977046982599576936961065180 0.0066167321138566380972182736393757 1.0066387197302378911723155059281521 GT 1 -179177628.2257388593826807810470416207883671 0.4295133070838063695723026221605030 0.0433296026926312318035875021274670 1.0442963592797561821998136233292635 GT 1 -5310396738100114233040776.5309811966963164747888899857963780 1.9984496203373680789152321042972040 0.0143576182362339159247223996505877 1.0144616861495501835431036345582517 GT 1 -1787263135552241185.7327361725416183107274372881363683 0.5788055847692454416088370569914673 0.0973983202655780229836494962527925 1.1024739305955967644576766857475918 GT 1 -4194527072301654706299321384880171500.8372242363237922306569332873362807 1.3667920182272277116225000888936507 0.0975892868297869489648115855303097 1.1026855264446580893591233369092105 GT 1 -503284401587492319870771228712234.0410788804645713178605003911726574 0.4674746259657421483304159889588616 0.0726129188686849947001140105598235 1.0753842373231020776571887186527422 GT 1 -2367666.3784442608556267122244900358292769 1.2772231658812503657173705488368078 0.0618637714197032202761691292085567 1.0638601074931726431464875644075657 GT 1 -214554874032911279237798393086.9368708518206525947857090579986795 1.5454029272275164979776714440945165 0.0339888478124335103341357023907558 1.0345799001286329138224536667718758 GT 1 -196869136025872894432247368794451.9200387165036298574904523740490995 1.6422252826993960919544718421569158 0.0982720314218672800050584400416010 1.1034423913482040916881804211464836 GT 1 -205641.2057468536637333689666412181797960 0.5339007553877032540627147214164763 0.0387534323723524629860145444692396 1.0395243289071265254710351654810360 GT 1 -14890031954432.6192539120822859032694910678963944 0.8072058783112461246054130948169218 0.0300024874197073680023783906234045 1.0304617718382102789954473684162762 GT 1 -35404082603651292601886393230087237447957.7850708212927221560607370111397009 1.0950259332446384744715042138680431 0.0206868845498675465746548093857396 1.0209038556664903350781633287122413 GT 1 -332943121838087815834.1444992485277451124671235815715799 0.1448637741274226633075523813286424 0.0344877805169267335076835369691134 1.0350965210744707660802646309835087 GT 1 -6686728741400814963245068520947.0211089324706057973197633465986948 0.7640229686289900344628774164816362 0.0004377505463062500813691056605055 1.0004378463870472241504736844827280 GT 1 -2483168761417066587881882253.9059367574760531325892623296859425 0.3522228930475769965722933772663270 0.0725529020857235639354326971110578 1.0753195234164247079059323511116131 GT 1 -593489059196210844239593284837228908994018.1996822290177380311140034387588433 1.0975082173514640402626002906181617 0.0386299578145003328339259386940241 1.0393958846219875486453452174863547 GT 1 -304098429591739009499099158.8005950322856344422458314914165683 1.6206027866130686495788317805578860 0.0867819379006749072196199940474604 1.0907805856135058510720437502080360 GT 1 -11252013894823449211031649828.5076116029793444306425222060680796 1.5017632351974493217984222697216561 0.0968089698976947024635650169014175 1.1018211974379116609546571310574155 GT 1 -886693594589.7248293341080714075771882641882920 0.2693288993294002208387605091563204 0.0624928718899369166562650869126234 1.0645309178490756206707146053328458 GT 1 -50310271545148475881402828901987260680.2038538748026525325593930906395740 1.7149921674592724997090868930411722 0.0082240132160874296973135147653713 1.0082580169726703482088222838872562 GT 1 -140.3850048933704516646404869359392898 0.0238344568475600589681261025500196 0.0670630538004410463952410189830534 1.0694176621982241708228149505592024 GT 1 -42029450034634316123.2899504505555407527259844451868802 3.1301406700650474440822813472639508 0.0759680507994273691108344311296540 1.0790086308813287583625565990297828 LT 1 -284051039275810962292664389114553524.8348619297816321974611989650022142 0.2632143210380039621513524432990270 0.0919673388711970643417552352444526 1.0964749306215926710020650881489690 GT 1 -119140592575013562008110311921153425499.5010597652129740909050419352323411 0.2023151043093657310851542321174992 0.0753768991697963283167536851702534 1.0783690830654496716771959216537242 GT 1 -3336765855976076234176330617.8511893807970469742490160315050617 2.0830502875115115485465635110030145 0.0185772571977137256434129674185046 1.0187519817592142384187590970268896 GT 1 -6778007546338271285579687257315169777.2511618940966168469105399590017645 1.2661127423702446526789253787779983 0.0709468513178757678687146910670274 1.0735893311673865586600091172750956 GT 1 -703219404296723899142043099607.4285186038632382090362222084534242 1.8323010758152590120653447161463573 0.0099777740742085210139618318773104 1.0100278856754161720623143652491799 GT 1 -939717551563.5477861254848773754375591011849632 1.5207868278372981240242259775921715 0.0143083024375509097701650322827016 1.0144116532310200584790204412806902 GT 1 -3438348753703.1931328429793775120217405797965053 0.7043414142448195285151788943412617 0.0902500942662227950871168118749187 1.0945855461075954430493342906205510 GT 1 -195443384593569941272.7767138816229810006065588485931456 0.9295550192020828748309628172857803 0.0482168940284810311258577094401971 1.0494181000097871561424612128794299 GT 1 -101617242229472728589705169714.5211792924638668528219501761219544 0.1688654704422865715332950161412037 0.0237731289097176208376637871623246 1.0240602696937493584401115700325291 GT 1 -6378928633854550814544.6506133239061503014056351702847475 0.7872192048309755276555686546213924 0.0367903702196871023798497959343353 1.0374842067820495086053972514418922 GT 1 -1132368.1638353784351811354859560881711479 2.1355720835585057821227263807908624 0.0391489642072517375588241997480643 1.0399358916079784279568982513656847 GT 1 -26779196310645062.2229989568467375272880309009049879 0.4433196148326214915099326873905909 0.0971255420487908283051525854129867 1.1021717629699283733692643505702423 GT 1 -160634618640908360580668877048591457.1989588219985279383908427694130452 2.8945091441335486890314760510808990 0.0325478073404618702947800890904955 1.0330892685708713286177903859045750 GT 1 -2147.5246875704700810964096726607034388 0.6057850892569201533780218578483436 0.0120134018707060892575615977789332 1.0120861459727335390654322891999966 GT 1 -3498885350043135736666882.7470745982182474997139703022223082 2.0851586751047254505307574602231236 0.0613754344625403669807310792216905 1.0633397034334604071729182254686023 GT 1 -12155.5357712919790563659669235437028934 1.0595445230026697950002347750597436 0.0809215271752370565015385348835309 1.0843837709087335839354389251581877 GT 1 -335243386071207.4312585413224077046872102263781279 0.2524195525908965285038839099307317 0.0497598573719451731261607774004226 1.0510405446177229000041432975099331 GT 1 -234566987005634003924915606732.9032228800539441244403669486253109 0.5512883389568858372905308668964156 0.0709608980155169514463717947714848 1.0736044506509713072502954410289828 GT 1 -1404933395620481223195573.6529039903538368117923218088498447 0.0915128539426715375297627205265667 0.0541778956525559905367843765633773 1.0557007779866278430798507230830508 GT 1 -413637547644354.1797965842300573291356711696093736 0.5215680253688959623444210660021232 0.0167938764146862056972527432778884 1.0169364925303075552399008607554359 GT 1 -666894689652868.8574890429276052134703409773886507 0.3955434932086948269467996877959255 0.0249776005850960035642923027154545 1.0252948344893067383360607139122262 GT 1 -32626609.5972560273388456868232268802634352 0.7880630099014831592319108794198890 0.0160097845368853513418950641924323 1.0161393256143679839982529852054102 GT 1 -9395698122197785114529752079487445.4205992540320428645596085849371983 0.9230253640421658217614188237081004 0.0445619569211652876027592908602091 1.0455853598125054158705928406192691 GT 1 -28924238277740.2366683802320510724687898167780654 0.6036111374017001644174398946454249 0.0970559390024193280877791150116448 1.1020946754379581222808889915193127 GT 1 -292731892739579783.7054891398031166689652246047659431 1.7661162287592741784065761255715827 0.0922091407655455691309179129954013 1.0967412581507452726545411550941650 GT 1 -5129793726359.5227342720109886657340000841250462 1.7272960987330624643613842905632611 0.0291560467782698637875541133738157 1.0295895308952826068294685804508421 GT 1 -1142914445957.5266159037256530756534842322218818 1.7394560365779865118317719988442252 0.0084066906610768840294105199050250 1.0084422261825871556001519385663383 GT 1 -6919052945300826620.5703555437304466460612977095582786 0.9523928217005861497426718160466667 0.0170238527478824272685724455608702 1.0171704243866323928601112172648956 GT 1 -178549683085477787254003902754721407157.1141317373630535272455290530953400 1.6780787477547782359648109644141706 0.0906787640522132671304803954851303 1.0950568523518682492632122987735306 GT 1 -8429284.7837818723543415615010795815124550 0.6436472138732593100608333539664953 0.0515684279914341536977285082665413 1.0529456355847866668061744599244405 GT 1 -329864615939876310350773.8986209426890662168768654779942821 0.5406869346676200109757995129204578 0.0823447506006312754774524303350117 1.0859335042130406944481277287852768 GT 1 -3369796626819186501447318168359146880.9624409586082124556744133164274175 1.2085160665602063632517134416606346 0.0291016638553594431356457819216315 1.0295335163322559279908711526926955 GT 1 -94566045167624.1165459329990523728564145649077188 0.9095667947287665663148590757735318 0.0942140565639952780242142501786052 1.0989522663774270417895647344935431 GT 1 -8848457802.5260429602892137988546838614765778 0.4507732554942137268944507721063857 0.0465213934049387569878379664187146 1.0476382909054191212381342348697342 GT 1 -1516337472870755720154855788207725697.3607217758153987625640319731592026 0.8756257488767973533376838136801178 0.0873584193456534110377147620731801 1.0914120486795987841877107677856786 GT 1 -36221069734.4246113026805588779037076956152699 0.2928616287366597448204152150107732 0.0306661057773056713549672020015025 1.0311461503628628379587599250015970 GT 1 -1481870100967935366381517505926360545129.7690624550654751964649006690906987 0.0047577473446210976556615597996191 0.0116847246248972837545493761203059 1.0117535275066524839033727501708956 GT 1 -243408321586150036310693803892909287.4528396721238778088157694120127239 0.0320986391992023724050495052838060 0.0620374787275546609689511578442305 1.0640452867736998154519942439388505 GT 1 -348205648474439340410755202209036020369813.0257438626131436684355714837100019 0.6701069590929185288007936406131425 0.0323693162321263817390017608053035 1.0329047895379409863361081778681434 GT 1 -7387598456595808.2445738815635717393024693344834911 3.9527906655586581400687996128857775 0.0567025353717359701190761357777193 1.0583736010981340779488260678110703 LT 1 -372.9187435887534271539712268834180136 2.2534914012281628359745362262964455 0.0186025615002466033613912163600202 1.0187777653768633028574038970110769 GT 1 -5644075865611947082757311479.4725462553087896350075592923319014 0.2633734324248316664244337592029059 0.0887144917084798313358833480659337 1.0928990298433899855848612534076186 GT 1 -35468.8861431078609613898206489955753372 0.8023754778205977686228850393281377 0.0945174028239239796035071609831357 1.0992872208648078480534312908349467 GT 1 -338559312430147815667607190161732767706.5337069308706244513095520427362443 0.6896674264267212741101798487105853 0.0758997959063699113331950526805302 1.0789347672315168883972998096749750 GT 1 -653005303788728997621473228749653.5244390712774917041380906531763785 0.2428164487531870693748397552482636 0.0339611842421478702973973071091449 1.0345512636329454358232940814956398 GT 1 -5875840138073.5203957639343861659905191887485756 2.1273862533928572784742265389321514 0.0769281680497947049974823543231904 1.0800482230760238272406577980219874 GT 1 -2950.8637595447505139568305662056898808 0.2541412033347198984023099216252963 0.0517914662455198362889450631462912 1.0531808286026249967689299150650489 GT 1 -106232751649081849.4334501702954995413539642680191821 1.8575294824233971184818748571716256 0.0044766691703575493793718817968020 1.0044867194595509195417028800878486 GT 1 -27896108749387719260949058746697.6728610946085989239424601856466671 0.5363636152879542828393867138979605 0.0756776830549876105537324019402870 1.0786944403041793636886926489707806 GT 1 -22616401742815651707438581369749342.6199075091950905713306987454062567 2.7984992309258796719406975061676122 0.0220585063239843110743260901317414 1.0223054331539137527792575383726949 GT 1 -2.1103063490572071957186794508574033 0.5651305202909442847358299672062267 0.0576907349213074289390027984187374 1.0594217514090913086375058017579050 GT 1 -5236329355306436540758225918596597972196258.4081756862718897750268873591790229 1.2408133862513908074130331205014194 0.0705126592645911117052704696013890 1.0731220913481239917905340335126550 GT 1 -33168413897.4902305778329133193698508954348262 1.1138712588808052636234184675412794 0.0058761862532125354300427568761224 1.0058935189691860882771895370025808 GT 1 -251569869945450406672693598819885.4027824678242824243355101485701239 0.4586941078834777450779009315949780 0.0348527955615735458537078112539682 1.0354746458172122978690835350049306 GT 1 -81963048832529056.5281635917890996626300099251418620 0.2331600740330923815530782343757584 0.0023112398885302138400237430945757 1.0023139149260051036881248220780526 GT 1 -11602678739877062.6377985550398608683289752655235936 0.1132513220163810348235972313889541 0.0287521661500051353372459863040087 1.0291736075730424694866626898258826 GT 1 -125727617655.3011803165712193452624814497448553 0.4865534920524976604333195156488086 0.0539109436827398274097845402419718 1.0554185744908843991470581251272135 GT 1 -130467775729238811054252279843336.5821565309034897946433384059971187 2.3525828269287617765345576736458751 0.0846590574422103711802650846343775 1.0884586682930203121470414786989324 GT 1 -371808752493739575740976.3968082771107703714487765010900882 1.2632161497286974569282442925550617 0.0917611461533677148103476988892514 1.0962478800765446842635119046234037 GT 1 -6222447669807073418.2762395631251979565881316903374325 1.6348978248721533993664384322746683 0.0652359309840926766319502712678144 1.0674611141379855739558533262270839 GT 1 -45568917.6276872044002216299505806547635050 1.2895029023524202133006992337427769 0.0623212093726478219692943074198998 1.0643478293179029805894079962860396 GT 1 -1132.1928982732219094628530611344449355 1.3590328018852308337287520884228215 0.0042058552290812057449412169154237 1.0042147247161067456615800757700531 GT 1 -57488170193.3523129428404145376559408752256567 2.4241238054280680569178633665872890 0.0016119757466908186895612944663921 1.0016132763775062512781759304267325 GT 1 -92952223304426428408652886698799541.7885807904971566671082758338818814 0.3584877449945154706166976694862323 0.0005270894473984219042129934445280 1.0005272284078730798957985169096841 GT 1 -609075755318811998979002007294515840540879.2708975187585531762586373739791294 1.3266591619375407707383221129169542 0.0879995485165028865260020947361145 1.0921147938602339956794887441021687 GT 1 -5248759993494370245903145301875625.3435494045211497877256719063212165 0.7772161214520251034841572936102177 0.0246660587780887783779794675304119 1.0249753628079880086641374761152138 GT 1 -3386146668353.1945493756334700807185153099794005 1.6702574702920115163305479618399936 0.0476560715547460411443086568419770 1.0488290400575728933205903902352335 GT 1 -17194959536.9044008930933707932229479340480375 0.1383984154094246672228411841227963 0.0764774001019556781249527949581966 1.0795600076357320514963598664601574 GT 1 -2089241893380.1941192387292262636264689460501135 1.3746749372052804995939521745712573 0.0851410542502791249205412606845394 1.0889853832407059370250547855750303 GT 1 -1117107711661364153210248990696299055.0633032662339779660555368001470689 1.1525675808358049678178262454553113 0.0168145697625138958716974097123208 1.0169575395570690613894791170164543 GT 1 -1465017785.7257644094106155668860821481029967 1.8400636932737377551380365774132153 0.0677240095572142406563705726766951 1.0701263810489828925914793666981920 GT 1 -2795316985316300423481995047.5826286386340998483681321884756928 0.4758079426946252402368266410478319 0.0518133280463201429979731742913638 1.0532038847680650601289231152279743 GT 1 -73225218425465590995626608701789.5536958479780984980491285870682502 1.0093569222321311202024683301452890 0.0853521949823206202670201297628533 1.0892162003534499427558442362301760 GT 1 -1336630125638287881497346931196.1108184768873704620474788628336462 0.8542129183835261398270375487867589 0.0207619323773445766751361633429291 1.0209804917311103233219693167516472 GT 1 -276663458834544404192.7662284806385388009337408311371564 1.3824754789999987305862255750259596 0.0872554417316654120340205829999607 1.0912992203723146946239224354600775 GT 1 -16452380261490199758792111.1335793128612633453303421486332952 0.2361758400246695641154822659852899 0.0176039791879329424914483255635866 1.0177607720737783426885459496202276 GT 1 -13477984858403184552768688406155616.3595316678256464893264549041663216 1.0480642221476833820082560894206682 0.0409865063399430155513056112496060 1.0418501336449696894700456880151357 GT 1 -281052704647718504093597.8578181467883326279466499402916572 0.4910240735154939153694481043972082 0.0141466062259286099298381073991123 1.0142476232905481085307569501232435 GT 1 -311937179206.6793234592648995388382300209457653 0.8540798623950358485267165853453357 0.0092288800572617589102894337746701 1.0092717300126441890297768602828256 GT 1 -1300367185192055853.1807202496724970555188825288132868 0.6829668938534733076187471327064104 0.0760895112570163188464054673987291 1.0791400856877880128011523134641262 GT 1 -54286568031547392672611617477762660.0272987875477844182289574310592211 1.3957571534840325649001476548033969 0.0902563838265910595177550636326286 1.0945924596363247971272910605903742 GT 1 -4709027041278448796348739012634208067029832.6194499267334552618713057314022858 0.4789730473217990420844995045216766 0.0889156271546777288082736674211391 1.0931197703737252880403698821297210 GT 1 -1469249671.8819965771698312872531215183760046 1.8365824093006143894164427289295313 0.0277407881365054303849197383382273 1.0281328312022797524090941585704080 GT 1 -350943398.2961953115600116352331045773953207 0.4649727342197521080117164367156216 0.0144327598779937337672559274516399 1.0145379252678681320504859512431022 GT 1 -2291884.5511604883040823076157477532400807 4.8077111058756352249442905616596658 0.0911627289158731223225451185680416 1.0955892205400304465716569020406925 LT 1 -7.6806407368838024744710950941179527 0.0216778826831416890624674312172456 0.0554219316531573012737507542348251 1.0570169397159333512194182632371662 GT 1 -117671541.7534451485919614674882259109210975 0.7554252681714300276121908807822356 0.0117100419711421767486187864371334 1.0117791445047443870297966045617768 GT 1 -1665735403895397584076266547548689091305.9196142741693609076583958812304059 0.1288651436116551920771343520651358 0.0214440162004378304373952847429400 1.0216772798842815074618397551680543 GT 1 -162121717249083651730163733459141206410546.6305633603742376856993786546828746 0.5399159665356373495969811083991492 0.0230658302014701743693092440751109 1.0233360091495767470545387389179250 GT 1 -5914505669233228361728272.0132243376329064283341434047674494 0.8197369652814959603706585483872400 0.0024623553259772254157705271656337 1.0024653919086407728806131660708733 GT 1 -103127051157692647792917.5755039585476565542481100210442857 2.1638490187722971896951543981209925 0.0852865116006762805816085822791180 1.0891443901736796277475111714704662 GT 1 -5.0159171844862539008256597988053488 0.2432468971419412357740165180150651 0.0932597805622627956493699751955031 1.0978992872707510809576759187102012 GT 1 -9541.7363650833632042168613371395959870 1.6621318399022592516064648623587866 0.0548399855690188969940692958816355 1.0564010383824755547027916459141128 GT 1 -2.2052839101565279182044786592420701 0.6683253663000430100229588492314854 0.0706312413218724616459010298367496 1.0732496774022350343571454047039827 GT 1 -101760161797779264302089352769173881255478.9976314017055424740662416795578823 0.8919610386861833312930245197815022 0.0239818707950428547211368870588905 1.0242741177364787938963521070342748 GT 1 -24572025633784464497419053078.7334193696541268959438363794623810 1.8258930391092001761399758489384778 0.0430947367441097054194064004128108 1.0440508858923785885531549131531547 GT 1 -295161344368110847274765760063113184.6471782240530711345434241992120862 0.1651188503764204756540569594662481 0.0082076532147421178994309033102274 1.0082415214468356066424003063945453 GT 1 -63856199410309070513979094963876316382115.3758435083741731748220244773669047 0.7685335194740062845550120971663945 0.0080870391724595720974295227412398 1.0081199166480095881201401054162221 GT 1 -675154242904.3341878482589520619125079106594413 1.0876426545518863629416671637234175 0.0666775418323663297035275990249167 1.0690045235180857415537723468431936 GT 1 -168185.5635435680875046556228129505383363 2.4261686189288891390179034438851929 0.0674002776611260325988755216822640 1.0697791923359536316944204486062654 GT 1 -27027497537531061518.0565414637624113522988001957881655 0.1712884435330433069255867518311735 0.0112422410408916466729063874328742 1.0113059126904981474931096682135000 GT 1 -298074687970124720430531190014425.8600013493234318192094736474268269 2.2375331290581908280841917534243823 0.0692445110336973087666320368354920 1.0717586688883303197803338552843437 GT 1 -155007141945914696293468200552.0162085857120886199738296110012182 0.0481564535344999232010958405281083 0.0104682418506888335350601031361961 1.0105234193061858472015426753123956 GT 1 -30661880255255233.8969269169230724747687158917590018 0.7906978690990478886315512578755000 0.0969744934587132664791396297841095 1.1020044795174673146491432015629391 GT 1 -9462318413609566656774188497811652939704005.6295513195496156201719521782319845 2.7851731777336930843572078711628850 0.0457875105182259828853674596011278 1.0468688970298332151340200855295219 GT 1 -22515003970890112254930397787881671.2958327991197512978805599437540451 0.8408788520328340915347888024273524 0.0827216462898113695456300084266863 1.0863443045753444900039739771831623 GT 1 -3908.0848494913292821970585882827970943 0.0113749424080965187499984707384978 0.0782238633839223069100596433722278 1.0814528868415449695160802040382575 GT 1 -22009351750937588618403108596037683479335568.1862040208868015386799954466583625 0.1447058770040629504232777228716425 0.0375483861180641958444102836390754 1.0382714853753367559920582681735488 GT 1 -18617222572433062411251554586.6547122365966662247274812721593471 0.1790824215895659486053957567602114 0.0631696809765017974554021532343096 1.0652531027651544241540714098201725 GT 1 -12543.8099693694212266883713409914474129 7.2713235720692786302847986196373086 0.0354296709046943979423933607709759 1.0360725316220315973373881246751200 LT 1 -2760505747444.1416803128945123671276026656458307 0.2271773734914367508655047342602385 0.0292939753782678359370899168701621 1.0297316118118740033716133382950230 GT 1 -30543410489.7042704491256975037376430758484992 0.0673620079054321711880320774326598 0.0124254774845544664834096347677201 1.0125033192158373924876189846996298 GT 1 -4666583073522849812691023910175863.5577798197609920410016355458437360 0.3360703178058811441324322069406134 0.0591305461253191110977320256912305 1.0609508802910949389070444416742691 GT 1 -5528584952.8529159697942672652079978765931563 0.2129245651884513353888410318389693 0.0306240999756917836072911333085937 1.0311028165934197675799866369899960 GT 1 -179690288658081260682.8597486790517401677354793410781052 0.1593082240806686815710815946332672 0.0612420913751327170161120956069981 1.0631976513055993841219912970507409 GT 1 -767856250810309.7478034725140740144937881545574484 0.2045668252152198467899587728401556 0.0302358094581209686118616570896601 1.0307023395730648277573562983061013 GT 1 -1291995124378181736318.4511200256567983249590683616033319 2.1813192454073261752448613036216322 0.0968004023996714188113884203452017 1.1018117116734352984627753035809799 GT 1 -1743646824312782023159845647.4993851523592506169676975520903789 0.1179553216309815796667764084571221 0.0831970599362804381885283934754953 1.0868627261510190869546031916955270 GT 1 -1188752272988627299083.4737621184696295081030361086830635 0.3274337579270939305342711817574257 0.0610208839399648262796006045263115 1.0629620406388412701921222590659700 GT 1 -3780357357627029050464684112266342244.6567979824698141941763290567255168 1.5541558811449683018884124062387552 0.0294625951969971842669121628102303 1.0299053353301072563224384222383201 GT 1 -45026.1637814012854308891053800339983529 0.3274890850950971970721447431788070 0.0236908304665889953080267746618928 1.0239759706678004455726866821693283 GT 1 -157016145003711118726418239165571142465.2882439495166817042171176465465412 0.8615958099842138755058593197294122 0.0026247072898625691581439894437492 1.0026281578732112948168623003243856 GT 1 -242221126291098554688913845292840.0457319504200098032475788420958617 0.0199040310721272119185559470914487 0.0622781947825179868685050169696014 1.0643019568891187712116739962967892 GT 1 -390649572907606239715.1345861573640341441673016190198955 1.7113988998193019453524385001500758 0.0926776409676750285498044720151679 1.0972574796269800500346556254032276 GT 1 -1201549459986.1010532502479406575889144141750193 2.1150253259888619762852946707732953 0.0550582451867880516584301304477196 1.0566319885062104882013140654102299 GT 1 -255365031675540173854.0900381141018231901656828690599677 3.7780561584245450896534395503612192 0.0343511441591487838066372857688091 1.0349550141232880078764580549130441 LT 1 -223656985858593047893088923.9465683706089397757473700534068172 0.7886863926571286127961841416132674 0.0582015826132277947338390666509673 1.0599640215873754759333609434531954 GT 1 -169324873909675.9396305559888844071972897429965848 1.0597083597281422665203084475270308 0.0953874418805181393716209274133218 1.1002485395237208788038147519315692 GT 1 -2691.2575119824844470010440668197436056 0.3933705261766291811623195305444935 0.0044151006388154439240502769573129 1.0044248759789925294517112474251832 GT 1 -4025978250598.3812023547856178134721319011970854 0.8571244829347935345959172765673423 0.0943751765014659363694740626783078 1.0991301608018575959102846801295199 GT 1 -52082810430554271.7090879561148202249665228385469052 1.6711813433510125195072225576466612 0.0729933894350114196816238749445067 1.0757945823036408342501690228669271 GT 1 -25465018418232647856788394.7599075221856971789747819007739714 1.4397565345169469444867399970476784 0.0941665751777489295427034037012487 1.0988998476551621428183551883239431 GT 1 -132078297098560197125481051076893621.5928400755655410531264778777526442 0.2344107529994528234311150087878320 0.0051411431692071629543971885828269 1.0051544043169159649354580601186573 GT 1 -13874348805185.4778920274774787886307765903160805 1.4066758014590815272255746550461144 0.0713052258019125721667067450339508 1.0739751472235570271425347261017191 GT 1 -7.5168660570537943127420234583012468 1.4573008532019457590768881633749146 0.0481917072112621173241931425356170 1.0493916375901347172005910062574868 GT 1 -9102448953929583193320272876176731562425.8688346419647014552505917020912916 0.7447189077687783936372671678624126 0.0538906800851216739626913444262069 1.0553971564431009757226189279039288 GT 1 -39657675960544.8918006472712545005603848357882410 0.2797372196719069080870853010163562 0.0869789884978774110608172360095040 1.0909963849585265649128059266966890 GT 1 -139385023.0203418409677100936042828842448558 0.1019231661752473685424618361906826 0.0264613061364719363295524819311537 1.0268177077964232173121556558397227 GT 1 -3627.7405719278405846094002505190492143 1.8037971960101209705687205747713622 0.0021252269414001168915301514924796 1.0021274884408775248075500733614291 GT 1 -190106548655178895.2426016452151268986314204706631434 0.3451066629083274914517571439393749 0.0362325169104671424441786694741327 1.0369052135796098680401390230956580 GT 1 -572300515723961149047404024944777051479.0685799285798083766108333464906819 0.1101782567618274761767506031836502 0.0402143331201739898455635388883583 1.0410452831141457738447051597910296 GT 1 -3421150891300508156874971491901132866920241.0243329937191840659091802262458920 0.5150174959322564161298787692295552 0.0360621131855151632341463456098846 1.0367284192125284377461324253024791 GT 1 -2319.6492193255050974222926310546504156 1.6192714594802205302486709404422725 0.0637495377537887434110312854022956 1.0658722504299097977826468180273235 GT 1 -65937375063415440141737919442157.3311526291379156351212022675870654 0.7738828875774981399704795043832488 0.0643624665246774982644070925287429 1.0665271280659595874525756652991861 GT 1 -659984298713724666470964333104.8005876045996681455475510226285201 2.3983645742394731119868781375354989 0.0493788982773343435480673640329600 1.0506397167289503486920676361475298 GT 1 -1086.3926250156328980279953818876164822 3.5311029644950494433549814923331365 0.0298828960072256241383165441948476 1.0307987009633059801137420462564390 LT 2 -1376150506429.2725848316566963817702870631347850 0.0026172269624444261810776935680083 0.0725869218592892816339454588526894 1.0753562051825316145000322893922047 GT 1 -64796.4377942993952378013285988967855005 1.1539610041961483030301627134972351 0.0752277623085778997472923040633987 1.0782078013119648569806834736850694 GT 1 -4408573431126771159739508.2719069113586335771294227754070715 0.1229816642431800497478947905394741 0.0154838055405561062545231885789692 1.0156049316127073778696757459515145 GT 1 -34771942589833671761770387239922.3914333526331112381897821835426082 1.2723035254489352702166855337463964 0.0582098977358445115751933583606443 1.0599728506097760922205581967202832 GT 1 -699739465319476.3902459216906562891835064214516521 1.6623257298713783085353205010174449 0.0972283800289560398731136477568745 1.1022856700988323264647680289671473 GT 1 -16872366605428688518386617708947878757.7951063214984021633297518496721401 1.3109620336396905007256577640870456 0.0140865664696607834811502142351059 1.0141867238419368724811974458119587 GT 1 -321363220799795966683796852428076.8224720404764429633063075501529810 1.8814273213625481017862057008014010 0.0286263889886292903303881786284174 1.0290441153738450328781163896142933 GT 1 -109.3912458873107390160893746524084628 2.8430050497087070581012019380583775 0.0361261808057389132005156717090542 1.0367948858908328031286751312471272 GT 1 -15607091962387937768847721.2460845994882002300641799347232577 0.1303764857510858146700341089167746 0.0405908801113703895928480228890965 1.0414376841342236896435377887832120 GT 1 -8164579195103628674328412340203905460371.3934062647150713240018865524415279 1.1549743975860196496314013234029680 0.0776634784947721494208075548732783 1.0808451312318958072406349291292277 GT 1 -2561750089356424884830015786205781214194.1729970042885563607104395085652161 2.0341981159478565453213601997837909 0.0534553434850348190875258820054566 1.0549371287643116394261648843217113 GT 1 -10914621660099467780539796854173425085177.3737448674829732616816724926599547 0.7059976553836560902012212232135989 0.0832341043058034168585185116494456 1.0869031330000073404063094065632167 GT 1 -3097196235491365943980001981812592.5125377630342526288706235568807757 1.7581064685985971707673882947073106 0.0672873267893383578997519391898045 1.0696580856814380474403327304248504 GT 1 -1933062578417.8428260760959755634346193357040458 0.9398527448647044119227098618944583 0.0786809473985038260800769555724583 1.0819488829535485433803991181647137 GT 1 -57826.4977582685269377446674261598328360 0.2293393164705944365816454580730774 0.0334441836613308371785174136631006 1.0340162310042050521731616706898092 GT 1 -2.9641390412688558783912388532004067 0.2833563362315851556606724333348542 0.0715466180542436853856904952240484 1.0742351073704004140128023841919292 GT 1 -204611840053764.6964456749826864843777321928024980 0.6519673795758288187484581045644616 0.0273958865258997236124055131698366 1.0277781516628715149234062691342298 GT 1 -495739409162887446606529731434354066.5453929473590271862709273107846847 1.9159233334159412969689932966047443 0.0054376909130972402086312874155281 1.0054525289686155178415381665313073 GT 1 -14158.0812731904862878033750156093654778 0.1754462960549287914434963819340430 0.0259837170349520848508384654062548 1.0263272578560873785052155919699955 GT 1 -89427711446151821786361.9664391678116389085099378554269707 0.1273748364247688498631024595198697 0.0086900129201475708469391216450150 1.0087279912640315497305819763562050 GT 1 -971341102294458701500617252.8777487941188518067383745826895901 1.5387035723531310726355157153080466 0.0176886422630917821777401455898566 1.0178469559769240327654093984072217 GT 1 -805567291262193386871015411185212548.9887004961776370134154261530270403 0.2181494070487303647098594470255949 0.0712994737472047191479025847642646 1.0739689535450153886494043884608110 GT 1 -1665291611742924239915465.6035436848304833639195694417184032 0.2464635956756538169620049487786825 0.0849063860524759437177047469379498 1.0887289086147972046689535980994104 GT 1 -4282087279619317.5708446497127768692173029015392927 0.0954197591346713399263740722183221 0.0888906767034202565784912265675091 1.0930923853033983972659359754020395 GT 1 -720188554887153279072016710690681287558.1620241811159037024529055603333802 0.1348173065703451731634726688375654 0.0038845972111324635771941370845083 1.0038921618556316880993367971600543 GT 1 -325175364844749379693096487338145912411724.0360337623420825050097682097399564 3.5364043773222837706796779973975199 0.0022103216838934739843266133302902 1.0022127680503693024781418163566690 GT 1 -747.5647031911590948119792637898512117 0.2472405191544017819415055908371672 0.0019324633337662667974176916816372 1.0019343329500660254878908499898715 GT 1 -602018274974923378681486996974918.8021732664552263533112647813096710 0.3004703642229529675212667075185540 0.0743550299080711856217839953214271 1.0772645194817403391639582580937791 GT 1 -113929586785315209845233303735061746803.2023971344740114607711957766038133 1.7341886134000741422597059585926993 0.0269079186046389933710641827831621 1.0272765646907860790962815625259524 GT 1 -27646096956580553312692754.0397052074465271589723092695792829 0.4171215518108134940077056529791694 0.0037835983072291578714262566934518 1.0037907742215411895842757603618807 GT 1 -681.5144100414297432038741948245699963 0.1481555512455736852392466391457445 0.0116041302566773198137569949921265 1.0116719836063576391139517006816040 GT 1 -1903109453032309775994796078530.0764965686919641088536694480321516 0.8348306850084860559267008862445310 0.0933520575538392109257938218251813 1.0980010602872465661410358423208767 GT 1 -1666431582.2577197326026948046570111708986083 2.9310464913107057417928838818674206 0.0382276268740962785881900867121994 1.0389774746872157908146878625507385 GT 1 -17822058596340078485047371807035391213.1251280117503610452395055384524250 0.1366577334360573936026045373589948 0.0807409952306567462220986316179235 1.0841873630702806257864669556957610 GT 1 -181.9539998682234179478779140592944221 0.1142907853982956916265683203305147 0.0066193470933532266411832930025294 1.0066413521310674236346417840992772 GT 1 -15210565777803298332602942454177.0368270014115730041921455141497654 2.7333066180792430400591355740674667 0.0469697604091652705472944669202151 1.0481086448860886885725362934433572 GT 1 -23666623752177258.1669701600944469366766389487127595 1.9093000199394717235081057542782012 0.0907822631366954382899915971956364 1.0951706789853815596496823421160875 GT 1 -2007846893614795.5080319122907222188191363954338109 2.3566113651475899202990994732301437 0.0011673189050603277083219357166472 1.0011680007524472626925401980441286 GT 1 -371360858.1183470538136003551346193335550299 1.0271317116451582168623221624836130 0.0626728220425505222143350738053035 1.0647228816429787219650077735198399 GT 1 -41110499766200289539263037.9794377135641722460992530239530207 0.0054288993472463481198836229801821 0.0408282550849973556492493866623607 1.0416851326303416599522599163291589 GT 1 -169766.9130525041793905882571954155672926 0.0620574334648021738839729830573471 0.0696564674414049585442712153392007 1.0722013711945173701165442575923906 GT 1 -246437.9275709899093678825093169818021041 2.3616447611431425346648733556714292 0.0085252611260845338781938528573130 1.0085618090332672457996559247046934 GT 1 -8764387281349.3227650708169687639504663826017586 2.5021025841929539174851482856518846 0.0060997365229127012770635093771409 1.0061184159140506352512850337196637 GT 1 -565093713980351.2086709525122838038613096699961799 0.2151344605761447282622913170114779 0.0236067405455560375062412982529181 1.0238898439545474442700742847138692 GT 1 -3252.2073140268398032099152917652652546 1.2157029207013969200423270279160412 0.0815647287920131015309696411260654 1.0850838490933292082963275871849431 GT 1 -195962619603644701721778168.8193222295296426626256689411875598 0.3175146105671571017794398581581335 0.0024686210656709986440318114805616 1.0024716731346230813948323119784975 GT 1 -28236666541962764893790122340.7006491260606284628975096822459294 0.2256196320974775878636751817309521 0.0100551610154794674398790587114599 1.0101060556032718742436103206918057 GT 1 -136317640451240182879591409285.6716737742800738573489836458392705 0.1718793931770804478790723919744444 0.0219051780768862527028205526545549 1.0221486587155361718859463891180164 GT 1 -119522300.5918231126596140602622844793973127 2.8649531675450533283091548120970845 0.0100223704542664275844181099240935 1.0100729325272552875039185621910465 GT 1 -1144141886863538033034.3972475355015665503214812271844285 0.5292167536401355846455188495676347 0.0834899917514534496756587716445717 1.0871822916872092764852008935891953 GT 1 -1.2126513286880895732822746029202167 0.9545131373876541842302497460695409 0.0163272740101375856438714477125026 1.0164620327908044814424660537579963 GT 1 -341.7488925184491140405476762921844044 0.2163651292719045315022649334141540 0.0617438271721528344615791923970587 1.0637322619022144381023133597612423 GT 1 -518381261579.0540338392321108572687819536120772 1.1052968241387140105937303054869365 0.0082486735099104533686091833235575 1.0082828820639239594900919736577161 GT 1 -86984974452505.5472770017370485414106839918351216 2.6056235708102795113938764671145112 0.0718030670009339154213742390663204 1.0772873275445453176015462569303033 GT 2 -3702361863022664876860024375850280690.4927920758045341050525308612897966 0.0552751784961434833740898526237499 0.0615727967658515571970582020646979 1.0635499931093468193189767622119273 GT 1 -766778926.8404477664578720204351616070632525 0.6264969443445686007291395316403814 0.0423107757065408091594359295755042 1.0432319541692585438794688382329760 GT 1 -10385531315229330522703997104658995419601504.4904384786741480560865037156269537 3.3561059398399762604562319180241924 0.0485541491325155313152575579174585 1.0497725030955037731151872400967466 LT 1 -787138868631989180259845505802013784.8671717357639197979163388770232212 0.1838320779438759727827821741845177 0.0492732387443108456558737589841648 1.0505285750118668148296867743113751 GT 1 -3493602.2378557668260322871290796131978378 0.4624735750792613649988430129055383 0.0106782818912486582553932278389164 1.0107357038880092431612041124725457 GT 1 -282195812419512094580323578264729659.5643119223268560259280925499089379 1.0335570894987635478464378765595232 0.0471175950017018034734381502011635 1.0482637774870006114442556603114505 GT 1 -2725978935767.3999271662877801160654146626745327 0.0695436368938744026033424625345305 0.0907065915261256208626492872879459 1.0950874552880096493130336643584788 GT 1 -8909069191479782790151473267.8615147429696668275070313669973800 1.2138183742857709666333012993152769 0.0621242438924252649482622061148180 1.0641377949242997328406132314207999 GT 1 -850560535882745495995.5652796216038781193188334361886302 0.1229040101495004935712820841411799 0.0899104447459341446992238881335940 1.0942122719463153067390855978600311 GT 1 -314322227894221819.3081085832738369728283975750390361 0.0279529890124288655097297366668018 0.0073635288133316123727666517592710 1.0073907734183061581206518407750828 GT 1 -4778705130390380157547794.2546908094511307102282784436491487 5.9257625855231780951630988521391756 0.0296205856939584538693481833129352 1.0300681351943309472546881875015661 LT 1 -2318192678.0155430192103181592660589951030929 0.6667331686290004195448701456366558 0.0303554750156901370015457171730071 1.0308257437392553080319105768341605 GT 1 -7007564544325580824.6341364819047282179012380035904246 0.3684388923928378227030865618822308 0.0938692929618159937785474199790786 1.0985717150907552634733326799280416 GT 1 -481642765476941107723481086410016010.3704886918625843077462824644767119 0.0682547409839336297313096046304212 0.0935233187839905611821883835313276 1.0981899730938188649812656196233861 GT 1 -266339.1741114665174596619996863382288281 1.3828679336234183922022742425325348 0.0504414043171588312687486024321771 1.0517580384876870816755846643431228 GT 1 -125.3492951208251768045980074092095358 3.7625985924695799448913634052871952 0.0411622435960862602234895658522092 1.0420333983863089791222056104284054 LT 1 -498702393757082156139440111850784910.1666016937586807205777582103527823 5.0625812553641187934136646106817535 0.0686483795710670050801120026774747 1.0711183926335563012345771833499736 LT 1 -626041824388216848445384.2748104179955840070039556098922334 0.3140964501162978842017720687953181 0.0488300938079782870470254893122964 1.0500625718352098476373318800814293 GT 1 -51275879534.4019492613361208893304018493882530 0.6288773321793400545922058672655750 0.0154625902232201176861513848689378 1.0155833828673698544459349155122342 GT 1 -422300777048529699919632257176798.4344445405192346710260138391427216 0.4487227199454425591849251010653334 0.0070416290085981717163798068677530 1.0070665382815947780042569184095028 GT 1 -171898953201600145175074084007318687.3612413517118149824259002217585491 0.1584269372526448576989578979894223 0.0070559792385112846554709821680790 1.0070809903815297564137494551849817 GT 1 -14120762939785295.0072640530632602314356931630032826 0.5306109318706398495545327735442229 0.0998944702551459744947877294514083 1.1052432672596283600280004189712476 GT 1 -1946131859446053523285081825692326627.7550033789644953833901817240662697 1.0911466620322052728812648455259259 0.0414646041451513078763149010260759 1.0423487887955417323854024306565627 GT 1 -172603509206168584251596561.0686473656388520610860104704195201 5.8154450396426977722406366761627738 0.0027210417344650631799559995766321 1.0027247504978531581973807234942079 GT 1 -250.0534978226971306697650188570579135 0.1123064325556364241472695991725529 0.0983264257602199131879367892708740 1.1035027155046136888286656793440693 GT 1 -3262564141972652.6737209775626756022531314476287832 1.6776157965587347514466094043172025 0.0896055508369164055830651466862690 1.0938773127693836170509835711823195 GT 1 -5616670748372117103737906330354850147710168.2047531909127902494559417135489487 0.4800318735219812880283740770120763 0.0547154843132852817895988356083834 1.0562693220015607824634862466422752 GT 1 -36174739368688045850979280071443021.1825375443113820884693584649219499 0.0308256310401677448066081515772286 0.0454688040193890751155754009473741 1.0465349532905809684098778042765825 GT 1 -160077751684797879477270155848052754.6504320767117772864391517354531343 0.2751722624096815522209890782249281 0.0085720035271519453724909084089554 1.0086089544632904639229139742315463 GT 1 -3636966134750818763688398639036583.9019531457667481162124067170588873 1.2223687869858386546726384354079025 0.0300955744074866843640096681859258 1.0305577426561356864674922187172091 GT 1 -621702.4273085993972017503047374890438479 1.1512648561927344837420282756934240 0.0494896582802632762305797057073356 1.0507562368185383608124914301395126 GT 1 -2627156656418364857.7155323905725593778419016167305504 0.5558528219951219613305954643761680 0.0226993422531077192921450238520306 1.0229609386130239096839224468239684 GT 1 -73545334633.9376319534486888320647188476956679 0.6094093316672254681673088152185808 0.0446868502278371411991777714310087 1.0457160867300831738572567477417914 GT 1 -46641429162994316726323630636176214.0521266814020306150870221869707231 0.7081705450367134167368166673974500 0.0485788108672299864875451500616536 1.0497984237028792970301997981750565 GT 1 -65327037067562093276529944319771776820.7396723006634401253180344435378348 0.1395226617510532338629401619883219 0.0997058783735004649854793896117577 1.1050337672386839668395068960808807 GT 1 -367414559604133207810527914043791959863472.8741002046529495331165532574386689 0.5438525482646524980786500480415106 0.0166734840317282082096380571618364 1.0168140512540358975907793692560642 GT 1 -258975661670356256245766531442994267613152.3910674796776749016885062401145536 0.5764631586491383606328055239821876 0.0576744793482589437883619937219883 1.0594045007744622889403010587492806 GT 1 -24012159212559736.1024768837694628348887889689851068 0.3678605207674324534077337111380199 0.0116675822843557809847526589411247 1.0117361826448424076271320525797535 GT 1 -28885070197430720889360378889.1362517149574477778011027377956615 0.2702056089964866236217670392472096 0.0635911884391305663664969920258744 1.0657031333702819000178739488729325 GT 1 -177228291029921914152595962253690211708147.8985424772548860914795644593273302 1.0899581177927535715181255203980919 0.0613128740927704465331494879409442 1.0632730545439039423810828348822116 GT 1 -198081025.1546072297467606418150573346301473 0.3581734325586386272667217989684842 0.0039285438509251590389202476390005 1.0039362808493923962459987411469161 GT 1 -51952067442903169656486.9916533253807867638494873950974591 0.8956325723706900194343890112724130 0.0765193004606036727235068743891007 1.0796053788147309676321798949597508 GT 1 -7785.5812957337939927094394622563862735 0.2751341275476998617895837347966068 0.0078126801379936402786923097690638 1.0078433590174454132599656663433419 GT 1 -31286082426615336854050.5279616541259443494170582697456611 0.7740854008015377896068927640109562 0.0291821440824601891968736927882008 1.0296164123059062887602014453328141 GT 1 -3473900847405872.0711445010629293572783871500102163 0.8734772280744469983574213184316804 0.0705258773768473055555931370827815 1.0731363123123741442631677004538666 GT 1 -360241.3130569256697677065229098625775945 1.0153536448786922565023756215177310 0.0484025636587349437426609958165153 1.0496131946077567438634703637593819 GT 1 -2759.5127420351495387732995393427598714 3.1829899829893679844975725834543206 0.0778485280395049210593940390298575 1.0810457826278487046545494498371627 LT 1 -3434281765878.8221058288934999440927877983872737 3.1804741078564333652634884757666219 0.0392183806098825415988772508537330 1.0400081389258763354692025910426825 GT 1 -16595182620130464441071006652503750855811.3079328419166398353010874610975291 0.9226421811225387458537383244763181 0.0949671591393848553213867976332640 1.0997840476968396800434015997546111 GT 1 -340533759.8623278630143753748071367818673686 1.2188881783365252461968982823360374 0.0131609441926927874829945499010708 1.0132483168700570788981274973322108 GT 1 -21475341706710592141413088550.0200352952350135414962897191873923 0.0814878691157893109339128572508029 0.0178755744759930463777837176941841 1.0180372724179686877969367483417140 GT 1 -1779357428720157385645106557852765724162.6225665382665219393994963728362903 0.6478939416151675596317407834337969 0.0028113318281407850388096818441906 1.0028152910436515195360460751950925 GT 1 -73353492228624444.6260422600544757523897850945719950 0.5770110556853727045178360976179155 0.0437946642720607873464975718897440 1.0447826026677201081931482026762854 GT 1 -746150297.7393879575637852680007653230678937 1.5317683927013055872234421734113373 0.0743161135816823998564446352784171 1.0772224779759779593505691278052631 GT 1 -4.4597689342947253917512848513249117 0.8678624149653997092025396313520244 0.0917280585624368893043052222480317 1.0962114502452214872960882837068659 GT 1 -55397308397136115691808377632389.3437905113660558517364335146273411 0.9630778050498816741727747729361549 0.0639595812614589577756977425108851 1.0660966210239073608298206686659127 GT 1 -162082574.8702401615944952031301939169043151 1.4399994940352116087598688524085642 0.0540433991341401807359016864331123 1.0555585874457661931914014825566741 GT 1 -29008324747133737068368.5376437900588415272304104676241900 1.5608690702708748755997423821443583 0.0969016008635167732614687976528643 1.1019237623584651856479033867559481 GT 1 -1130688059265461909.3535754374369211393002244121893406 1.4245017054807268167748638641028140 0.0461423965027602281579665192262724 1.0472408812561279319142784374710211 GT 1 -73497159641577265158865689.7430973079034199657182076849400492 0.7277218170186987728862575123573563 0.0575369178855721529327739825446585 1.0592585305975107125486014756538633 GT 1 -3307523.5262222683692211779746254487472857 0.1987984647672718778120682213241398 0.0750270064631116329965455716840813 1.0779907380722654113200719950535727 GT 1 -1587636389072813.1183504855234825192099675896870220 0.7782271821478488495705631939644952 0.0035156303404703913407958230836604 1.0035218246911085003511922449698118 GT 1 -2.1137234500673930370621870883700659 1.1362524761609368388766401128193856 0.0959059796551331552589667934997681 1.1008219191918168077408228924465196 GT 1 -16194316.5672304485928606618161256210360006 0.6440962961940813107991000522503944 0.0390685291483168785604718174725170 1.0398521828025296024390866873523845 GT 1 -11.5545416583310981747003471614856629 0.3400739993705346006041950437797885 0.0512128141587348125766283989718765 1.0525707564777858158279065708204838 GT 1 -818148441472115056721.9840347777462852524190922403671529 1.0838599509552973016309036625133242 0.0617402575139567737777642718055756 1.0637284573427466140500064499736095 GT 1 -58.2633808576283844488121292135381918 0.1648953393841355437805336934068067 0.0681135526592387687254370436530009 1.0705443093365602548884651348156492 GT 1 -2410.6768945739430031535355039467370836 0.9714112339037160493822452022173149 0.0047525896811273075784282816642266 1.0047639191459169925180839403941961 GT 1 -4507793211169446268980001001204446570875.7290763617489880941856285755002083 0.2045274573621014145653253390571233 0.0651700164880045459841204474677078 1.0673906020436340572547565243853633 GT 1 -14649400013938216063509118821650426626.3646725255482153787250248304191937 2.8523583587098193990597478832599520 0.0790797133657645453914453433777351 1.0823817973583120855654541191861365 LT 1 -3276934585373718827673903680818083.8141346185543129929561639461585410 1.4480831423455411380396996130171048 0.0949187698822331782167693903269763 1.0997305822739262509095477088658672 GT 1 -1390348850425207670.4506054692151281629182452334383855 1.9045102820986152085810521440545688 0.0237645989352678031126977902771966 1.0240515320350795628863457021107234 GT 1 -371873028641048543828973.8585493283560137739094668490548126 2.5618227957834278929690503739759388 0.0267553758665155068465365109642456 1.0271198161302698026392116603033464 GT 1 -5131.2310028213429088373032311572520834 0.1551810068525888319062538664076710 0.0961123300141123966626997349062779 1.1010501851759015116566673717735729 GT 1 -166077060086226.9216139166468281339542017935373597 0.2938740375161791254241777096177223 0.0977838776772595315135710985611444 1.1029011841578202692141734504495727 GT 1 -232168692982553037135081201918.2691507713108414281516200026865550 0.4421336178415247165261574965135693 0.0091664512099863088748992773818352 1.0092087216353617238138406203829058 GT 1 -346724913435731354520771241062289.1011533870985327631498859909726946 1.8585842019663023105883677803977459 0.0979281571442169280349696198638379 1.1030611136924061146298683314456561 GT 1 -4633593605596833048.8426484475720606576275507461937918 3.6250539549471269653340207084679319 0.0395635954470915972542002032513338 1.0403675097381653548887146675735893 LT 1 -368542216622714385068076655181.4729770251480157882714045153560648 2.4449772270786770711522376353656466 0.0485922895186873206036703237291457 1.0498125906639342748975525267872264 GT 1 -33553866991495088608434065806573704379636.7431848558032398879342555177515654 0.0726064610811384715637261061414631 0.0349636311673748848917003991178618 1.0355894904438664641559552543607618 GT 1 -21530274074799147217247391066436249238.2423125550942432531179363930169883 0.1131888513357512454007162060487081 0.0725345029298048868328180559734171 1.0752996851167991295268457621310827 GT 1 -18339349534884643272751557561563119.8994250518124098530614818032748876 0.4918265127373644265654122669861249 0.0458920028944393428546196371965209 1.0469784094278315782614095829688561 GT 1 -623415897734143.9611317327882230915872778422882291 2.8134329394522247617587476142304817 0.0383335644097133780542720199435084 1.0390876289954726033125908163408340 GT 1 -27985263524490438283.9821596810816423682422891879273222 0.7355074487718006672163145298474137 0.0221414931363830506955829282651938 1.0223902954224745929271766583575376 GT 1 -450482130162874174940728894986.2565389322803828696110017255582083 0.1004595266951710542189659215592142 0.0559303613178679867453700407144640 1.0575553457670994587716671636196464 GT 1 -203838818770786336985551717426790.8471783456835517027124844108720152 0.3545649558504217496431636378684086 0.0374938735481755483318122873953366 1.0382148476957025339447870882524158 GT 1 -30.9083277380269628507472297151337018 0.2906275215411373815849419619709214 0.0490908182912077181897557021949713 1.0503367186743406030430104478611019 GT 1 -1894710443724552247666818821.9252992126200040781618244851682710 0.3319232223280853221774453744333916 0.0537333022184520431730004459143834 1.0552308281176933978011985096319356 GT 1 -1035425.1100747054227076178325852703397878 1.1891080010588592749652432693838612 0.0486073528937118196651654549454482 1.0498284235125720703092430263179535 GT 1 -5154016229887585.2271076214454859528699856327836859 0.7866019174480820978025340063738573 0.0450840404407479521194042928992831 1.0461319428351907742644542477968253 GT 1 -453354974789411552254572739.9561980811368765032761772879205558 0.3527709006009020953271166301739431 0.0055370783785198675806522898444784 1.0055524648205805003184123755781450 GT 1 -39987589254801813546436.0864541674639104871253986419358767 0.4601333922157993638826449374275719 0.0730396185099641329185317199337956 1.0758444527437947357606416461436306 GT 1 -29049212336659233982140181836322358419892.2900802663226896622882468878219071 0.2291216212531592659135430214684130 0.0614343050497380884111672095754774 1.0634024254584529361528824377887312 GT 1 -44396.9779966899785754761080958619622591 4.2927932753336695129473961577177472 0.0738398694940761880904910808686899 1.0767081321738985002797494515540302 LT 1 -8078607009320134618361729994255441093.7043660458667273688319916776724332 2.0388694313706223040002066284533888 0.0696438747831369699889963862129823 1.0721878357932337090613618904086155 GT 1 -2400207370.3352895344780218382668032421799974 0.2502966996182780137251310173547191 0.0190982964956405069300519466621870 1.0192830247385260012738642271308669 GT 1 -163668046808864968592132901885436.0366614850191218919680003660848256 1.9922028185431841364037965838415735 0.0443456667189448444024266636551594 1.0453590073809647765208301650033149 GT 1 -27014445048616065875175.6116306591689607606875603329034385 2.8525794306839260832816361404594311 0.0448714276644783740658233592554729 1.0459093168454848722854434449858751 GT 1 -14479151732348745597624.8859243405757821170561286472917722 2.7020171532413001804311378218153447 0.0132408399214666699917938517310060 1.0133292814029335604665351211256909 GT 1 -13573691833466295422.6507342427399287008634167176457607 1.3594611641583080005558686108148571 0.0167042273801674577340459569245285 1.0168453163816815579035860297187619 GT 1 -41392846373301449282783789544008234999095.5810966101190403029414845894935075 1.6448014476306725417452222808723283 0.0189046171089580079250861564339170 1.0190855938772320666542020931173297 GT 1 -3158923488071199153327761298.6240846362942055637779591862174859 0.7362141929152546176024887314788241 0.0282673360530227336631880906178095 1.0286745494429225531276535845954159 GT 1 -66068594774068227186204913499668254485.7262567537475939222408275866228906 1.1079775302753099111986203920308118 0.0335157936584313889340769890961362 1.0340903215520396693391343652665777 GT 1 -6727261318357800991.6246067899324177309825367943241430 0.0057433096550644381233975221048582 0.0979637022910604512573984529483685 1.1031005183667146028081280938907023 GT 1 -55172010403179697653183322998.5709790169675884054264487026053196 1.7524273915374149402220604271863584 0.0561453637477804877160022066411214 1.0577831117148088355075309504671143 GT 1 -709497350424.5073717747552036313288166982573845 1.0228534556042887486009310293826652 0.0340789264457438754041821577252686 1.0346731525027849664211499831238165 GT 1 -1827855100927196882506878850182.1415287448283185259793420654334140 1.2422118932946834213795684814683690 0.0182209622716060537992163717131613 1.0183890084433249559748150332696038 GT 1 -214418777925993553253959.4916365644991856680176897349308124 0.1853927912277865519899042400514882 0.0450599569374062093004410009812190 1.0461067226056970767415665269389090 GT 1 -638471489158.4860379827959928150780943717705167 0.1101792377773925773680290044313628 0.0185549670053364499246538437857992 1.0187292698958344610711552857009736 GT 1 -10502884044790125422993.1169970192568310478092601128855714 0.8639223580856616386893662511179220 0.0342606970530992618353389921889856 1.0348613539175917999519235841948564 GT 1 -34647845361919.7934976479087568529515641673146932 2.8243227666975172899824241190739456 0.0400187082095882824202813404628892 1.0408414824284643067513975908510951 GT 1 -160563865.3036163893180918938140280526133275 0.0674854226959951167478684534039046 0.0513288478332413190538390257412626 1.0526930607964913948326395182255792 GT 1 -261817887192977484604822051886537.5200572451103154754882372851645700 1.0294569504507307354425958751419243 0.0173408368816312202782745810245020 1.0174929502741398260606673848674501 GT 1 -262220.3179988901798607627374950437516841 0.1248595082434204846772051525158845 0.0021311114636782777265742922786106 1.0021333855131232411779168261938366 GT 1 -9733519525649356931692388959273.5299708318986065397849398619576986 0.4790016100887989453708552000632303 0.0380950340155703204577183527694457 1.0388396211542555716079452507588954 GT 1 -12599969370787183397215380598470.7065382480102778787097890129289578 1.4147145569243111898320958944180273 0.0166984595061628731117321228175292 1.0168394505402445338546779221188449 GT 1 -599760652392649832.6110276211406502142336260255402587 0.8166077314629362951924342398946812 0.0651865893663116478475421337179552 1.0674083304279445944538216362890607 GT 1 -52827159703.6562235861770618319179527525773746 0.6330350462317398269756404637526778 0.0382463308060096245705605440538619 1.0389969222345870521404250116136332 GT 1 -145716970139094227408.9386688617920391277968853628323277 0.1000289761102396492531516788325127 0.0939215698795989270855900064413511 1.0986294092240928765869449931278240 GT 1 -3710608434963452421737517879073469386.2804588180263430114786719325917186 1.9983701258095061754570262137181181 0.0925423063405182745489254878330235 1.0971083324868548415194259144622020 GT 1 -23430544743053465514573152.3057062858161286911112758161005197 1.2868503764303571399217271827188143 0.0906735393017141212060073315768589 1.0950511065985716699222354017829588 GT 1 -4659426114389920223695773131.2820136309389877537017854340468451 0.5982496464467365372105329050945313 0.0974597431396233654874791458334348 1.1025419838304409067883092704555324 GT 1 -5.0522736510959745634243774875419814 0.2710064813441268343175027428636980 0.0457896813167791673945339562805659 1.0468711719958878000010097363228827 GT 1 -847.0512399341873328485747551089869735 0.5459374959226173254182998234491490 0.0748122280873123966917323084099212 1.0777585654083814339152703220689896 GT 1 -4526130695009757.4431367332324019774304987416541146 0.2697355615572683195796974743956883 0.0603535665877715235393281460013187 1.0622516091423168708553771703603454 GT 1 -1498.0608558663641362827326526608141049 0.6282184015958117668301407093422121 0.0331981132213070241853057057974830 1.0337616785838683866171511248292488 GT 1 -374.0027965518309048033140464677829068 0.2232230131299682857362181142833633 0.0030671453529097440216274134557525 1.0030718586833313909982116335929019 GT 1 -115175526453.5632842408403156384388279742404711 0.5637728697558019445011614933698136 0.0855714503045642580897576791969184 1.0894559446623508268921043772566937 GT 1 -12563111831563088682715499725.8214501610509282845690412420040843 0.3874058343749952544499575956388705 0.0182712938695115567832463176684942 1.0184402754659012053445932182119157 GT 1 -24573651559.3288570713676209873630862499847490 1.1280011705242981028849210713018585 0.0993258525765483999551143728071476 1.1046117433650563828392984598232676 GT 1 -574526.1385867527064766457185221835276681 2.4501655409518065663857062300192940 0.0576270147943271604413677362754293 1.0593541324489244865235186512177091 GT 1 -106538222.6368764545294903601656502157602682 0.2844491640145152426612565490486710 0.0463542328290694314500942187676030 1.0474629897256986696308083871525542 GT 1 -23923697840.1277634550508672480357231744453564 1.2834321291553081252067958574598911 0.0911501363391563976173646918129943 1.0955753649358659895710675051099194 GT 1 -3323470557181142603537324.8511471615759156350135909940769162 2.9290268974990414730778297495689776 0.0509476687638377295177026640658629 1.0522913383349594043531869872225233 GT 1 -324273201478618779256509047766.5956289295398798334674314790120222 0.2436511221460044955901844594573933 0.0263634803441019261347728491080611 1.0267172280945729660036819998464325 GT 1 -4038506096291455866.9133798794658893649935012801496532 0.2520666726903269591041839467065902 0.0176146132294129004855279420890351 1.0177715967298332320699635171080547 GT 1 -22664.9188601756429095554693167360647874 0.2384193727675698568565343994281703 0.0594228696501559999582282630319352 1.0612616236623287715606084254200685 GT 1 -1421796.5334280899746644594578205170894899 0.1739681499034688055044370331743865 0.0501978674274440458574850191880137 1.0515015975837276735537611991978896 GT 1 -92674717762001308144781432616901320937012.1156113423025098685995433706193369 0.3438568474701973309195528203194911 0.0559553727464790135719794314839459 1.0575818393210794615843051135365770 GT 1 -310983610604987028436893623255801814679.3265651660444971493340116244174458 0.1561662681126702662174165273495357 0.0890676672092755809293784712303289 1.0932866624274374669867902917701545 GT 1 -1150545380700215451180296506.6246579629059262220924014820435639 3.1649460830244351660178892219789322 0.0290537637974503476707286301553564 1.0294841817370973546516098482884254 GT 1 -4579470192750122787916.8293789194317267464645619308770413 0.2710963613459192936527771961743347 0.0542473755244820281012287391904962 1.0557742404524755642044398168774067 GT 1 -191542904519020798109559559931914262.7903434856923633262611111624818849 1.6315710863000094332093569669251837 0.0330731267653289076189210993625776 1.0336324086896239593178330074622093 GT 1 -6301470785928632447577154131545503926.0714323169716014107165058946682661 0.9488318022488834859388821409930038 0.0958625623982886737276231179236706 1.1007738974005112525188247000578884 GT 1 -23.1136082159913022778186693067753709 0.8092063253795575751561589787250145 0.0883895410052020902534119252839352 1.0925425084482568813360434044467409 GT 1 -123640583212675635663370153273.1421800344340145876427625290003675 0.2449879885814799070538116857367748 0.0913593022488895433724473504931697 1.0958055349462060572712057490291579 GT 1 -10604882477782688116789572.3562243737515354124536555879292487 3.6248790899727502975765337169271708 0.0693136933968888688922551982434216 1.0718330009070784552113561392980165 LT 1 -116326997215647580.4646540171573165975684632650275601 1.5544494029429242411545128186440599 0.0877806431617818089185858405439613 1.0918747949798652897511351944026455 GT 1 -407068459428916003.0625359693984756692651324659169109 0.3152560710615019531314295553340354 0.0312054827528943106723509631493386 1.0317027460830653590118682069804190 GT 1 -5545396753785224493124257.1245730774318760304208884565850298 0.0739356902510313938229045807316208 0.0617497411599044110749092281085736 1.0637385650916432529176039113234095 GT 1 -117113296159588.2235246448045858128562295454877134 0.7143479638189712156071747352364261 0.0435042888464668818835342807392105 1.0444789740078224617295356506530199 GT 1 -48781.2761268938919844576046392662614143 0.1343577063178022782962497295309587 0.0698028282887801141175748262540088 1.0723587027136195060711535619380477 GT 1 -2923572916171162197.8213736254366138879437415157123652 2.1272623075917539942411646087353680 0.0624698499248257304305382072810529 1.0645063615745095757707793277311643 GT 1 -1688272404984500013591556460.9397737565056657340015522678026182 1.2547895066540183042062992449236888 0.0390548941097262816663437779485960 1.0398379935057185238279086420693293 GT 1 -74696.3141837602321170984563319729761012 0.0348873425507382528533168086249835 0.0544741665247317063413332984274049 1.0560140687023911765406927289947932 GT 1 -1591275358698614809043212938416.2952982597953343235484011425401399 0.3003687697262208843409941503091657 0.0725956248585191970826112435998652 1.0753655893935919308968458125595810 GT 1 -413079385025361663014.4362371057350532208817490152031629 0.2423669157144153172912743024614990 0.0295625525020626196088514136791569 1.0300083323421863214579709435142648 GT 1 -2666393004252102955922061100840.7078979938033836037392097262194946 0.6364278231442795792915164476298354 0.0449998441577520592068221018049586 1.0460437753158201813685026622529694 GT 1 -10367145893261987.1019768396197908174032200006585776 0.5693999689435299190771835499640194 0.0009467853589402857304993217552451 1.0009472338432995334749043963351887 GT 1 -111473631043036.0686559496710660518146677500204773 0.1129859748502309693400214294645788 0.0502765174961425259138830904958705 1.0515844078055211412899616783988221 GT 1 -185.1353450586838957074058584071907871 5.6844301108080603987984177058485196 0.0573783755797091362540541943198007 1.0590903235077314203503729446462135 LT 1 -459028.6123370156344053104119081874889914 0.3046602653321547139333759400567976 0.0966112719858365430013310323080088 1.1016023331317451304377681193957871 GT 1 -9163560605365103091.0488188134035133160121613846563586 0.2861649313802863745228373939452791 0.0735440548896036549818874236545024 1.0763887841871461654880812529304477 GT 1 -3710417846885680924213869060704.5436959582643925535580876431523598 0.5459652255763186641616220816013329 0.0219326061608569553264566863054844 1.0221767014655202903344732409852042 GT 1 -1695110115984615800162688434590594.4751243143342748021193045318675110 0.6024114223017449433213937074480909 0.0486713151978833091678917997744091 1.0498956559581466723268843373089743 GT 1 -2256657098112357756062154283770312888356.6857362011167393884285966126725154 0.2925329452483375813790658646841088 0.0731429726765117297188142726868348 1.0759559568931929554382633569158604 GT 1 -41964930681765997868203.8190048258760733101630593053585623 1.4134399180657020279574702246528389 0.0249006918596421295629391919554806 1.0252159586681764124110355675052133 GT 1 -797348475541095.8927830037011408915193306531336060 1.4621569351358359315331566300217987 0.0918017785657555902013642476611378 1.0962926186617096778426761945210593 GT 1 -367.6269012143468275519558837192976162 0.8963175519549518058490138575816750 0.0404038070923267176270393314209693 1.0412427153987138606414713180221647 GT 1 -1601951555747398019446154464566982288164.7624599000249399116531140856822825 0.5873197590970816013812697249623711 0.0863152813878702166776684580416862 1.0902697138496867078602914505465842 GT 1 -611715872511824375.9469427828401419613361223997656725 3.4544063984885084989729375859016228 0.0808783912101382026604371245697746 1.0843368380796708386883284285557006 LT 1 -183847842928833536495646100664477606.8141388423521118823509939940883720 0.1105726669383674364338322042449770 0.0002773138735163053685537837440540 1.0002773523321187613563680835079212 GT 1 -345950385454240775.9704919275254187627793974975344000 2.3999601353361274957076487043180421 0.0078438709803154388381543412032619 1.0078747959567937356923714466219275 GT 1 -4.0232239504775242926279496245704182 0.1906691698666533781627030538954219 0.0487676197795297127630419154352212 1.0499968927420787680940382285667536 GT 1 -75381635297900.0534975516982606073437771475787810 0.5726374579482232222061342999839550 0.0343380767653131995506024267802611 1.0349414819730226439118749704469674 GT 1 -33068702114795692.4881927154906090171800554430244552 0.8924405160692925140878436334569392 0.0127920628566396307892952523158724 1.0128745858072565922495156113943798 GT 1 -11035282737454410857106511.2279536513274006748949561171505236 2.3994258915497691530514414400755559 0.0617938255015588241269089054456331 1.0637855518917408071220666620518870 GT 1 -215697373564866204442993.0890085049175045821487656398254717 0.1207519735233399735954435032154947 0.0768614526314260654407002047019116 1.0799759502525742089756635958394198 GT 1 -530356.8815688210604232930710797238809791 0.6501868893993959063561431853250431 0.0680236904050774534407307990347459 1.0704478835091793991002956188981592 GT 1 -19104782075495175577519634934032079842520883.1896964368720753255966015068338465 0.1329379781530861232138790189363610 0.0140591949279681599061088720141179 1.0141589616056026267409131478527461 GT 1 -26414154.3124484044015068714072893644464656 0.2683074337522055735991305060594647 0.0698610028440141388272829990721517 1.0724212446952532994805127305619089 GT 1 -1409580003038900136162605806637.2218276596481973651075344121394327 0.6157566594904738302557623266029962 0.0961208496861043791010921002308064 1.1010596108074557324505322455650214 GT 1 -6325668945549314851540203346718.0726938357497858688368547301965254 1.1537080214400167572228662721939063 0.0332286499657565833376612667565721 1.0337932644000875135830604683263838 GT 1 -3097394491736419068336151345242606.4246382235227995284556463677598923 1.7816066056192669589704355439043090 0.0773138439673063874375731941665711 1.0804661282679674186812216216647989 GT 1 -5949690381375856153880167.4537407056235080906936878793101894 0.6762197173223052882638761974392217 0.0919247526861022022071936124355020 1.0964280323234192050939137228482840 GT 1 -735829248778084480938464987132858650.2331746490055360733144786593053797 1.0043495758309722869572410647801801 0.0198526715551295941267841786691045 1.0200523834688884097089258882075816 GT 1 -153806707295322499901424136.2488523999730096794763979072755739 0.3172205292158617648689133123485137 0.0714734643984196683299981373683319 1.0741563195976618925819923958438335 GT 1 -306037139532295744646815530.8848254941216856504714971333655753 0.5533544864985998833913837665654160 0.0058975554713894675273501416102914 1.0059150147301326223492481197024662 GT 1 -47633236141104927583585920045.7190469764919628381099491667790480 0.0707353274811013604163768724827806 0.0375158220421542370860478631432376 1.0382376514406661957127375760483353 GT 1 -231591274161768896392294252908550.2259192483147389642271620001986702 0.4156501086171772515517059429731359 0.0958074398915132988721359432971783 1.1007129323035850865300742061956998 GT 1 -30383335445061066003746.4182685341591351803947867747689834 0.6970898601665951662507913071339271 0.0103362566928672866707061008269951 1.0103900467738411944222250377778642 GT 1 -2996176956705116885531137582685397374955319.6051522657513406303324830559810647 0.3330234480358184241905251691597873 0.0541409871153950363224338288422006 1.0556617560427817861375102748624663 GT 1 -20555.8172586414237526790848313310010332 0.0856525763398301296354078689545433 0.0882708732104795428880944470512019 1.0924123431232507322572407438689532 GT 1 -663015408869298507931192314909738083282.7540484312299332055392922095298174 5.2857998321220960923388415696579087 0.0838767765345544293806569911898687 1.0876043999215799852102244390276017 LT 1 -1358.1499571010674161512619934126769443 0.2777916086942022064410024900115612 0.0374515198197891030065581402393481 1.0381708450702732440687907840397178 GT 1 -414740479401767540310.6711621045922075352029442984588768 1.2494036141649590507792470877311124 0.0119805296387914408589780300892579 1.0120528745851180219124484770672287 GT 1 -70578291967638903051471329738076929656.2765186982137242239263348618256588 0.1856380461372497464074933439194051 0.0536885032729549723599925514860542 1.0551834864061219296242669010940292 GT 1 -32984542091393164.3488752313802488093721668062983063 3.4205069364434046244374920017889718 0.0193307596124426486742559907249554 1.0195200420318482366421724749029585 GT 1 -4954870690497502690.5190402710338024461937621846372659 1.4299978470051601252814508185672342 0.0998054902122294726865096156768375 1.1051444170224067282002112922574840 GT 1 -132083436663494478998432974411321772801500.2387506845962122767220003641086514 2.3519510537234134794271721772457938 0.0848806641121399500829926219449907 1.0887008004754246790142630843656025 GT 1 -13190155482705520469.8256877449474007941421503817703913 3.2738223964576925685778551267804747 0.0645177233968449242915749076650433 1.0666930788208898389294251997726584 LT 1 -554704956880212725838400.4518633916184652530864677470074770 0.2601437224582796440664463046154086 0.0770948109839316115926877636257222 1.0802287702146901070665601273356030 GT 1 -2002154287664994.1137374218431169427303164815396890 2.5200601395661832596713687012737463 0.0687694396095839147175108392149279 1.0712483842547948618770613488762476 GT 1 -333150961943409533546935023726.0120155108960537076821719941604364 0.1203246752527466378937648040710633 0.0450463770895925477228234792996353 1.0460925020780773130213538380768409 GT 1 -5563683707816747169596983.3424490215490266531059372093222898 0.0105190333074147225789607262737819 0.0743656138305805548488931166463135 1.0772759536528973694363981537387585 GT 1 -2281074936442.7427024128773498302887854021797414 0.8571055579906944784158986617841056 0.0585951006927251478153490980940360 1.0603819457506738365183480157192826 GT 1 -26120081435259716504605664921645.4453383574113765342145247054837373 0.5497199408015972993518051070320415 0.0103926416530469296555011177931227 1.0104470222534991098190920940802892 GT 1 -14138104091.9373948395300396908314296079278223 0.4924054782200524012581334094742915 0.0212508648314495219890863237014427 1.0214799152856366937801710140328856 GT 1 -641582462744720635545387.5052437754114245159934837743476471 0.5768685433136642552003548336923991 0.0882599271740991288088189228245421 1.0924003373966030278372114321560536 GT 1 -1314.4505016585632476906855294807044342 0.7273643988364400141340481848853511 0.0654775046798759088218766127087726 1.0677195803375903363213244541124064 GT 1 -9224669.0626168834104661962032081804317027 0.4048957490446836579678650584965201 0.0103115643997607027435553705673637 1.0103650969004725296331373248030305 GT 1 -311008403026034233278015.5158466460786907027984169206476910 0.6338112418128198326773274033805932 0.0349280590226794321806878986284471 1.0355526301863164792754105168447310 GT 1 -26737834432471.2320471160186280780590474187275049 0.2221831282756593958200223063551753 0.0992176257430585669924736217709994 1.1044915885544156166453835054564128 GT 1 -57306943183416373813126163670669878.4712740162599394991343145609536699 0.8053186657422588962782166134620576 0.0044201978115192201242723766602390 1.0044299957691332650258189762667714 GT 1 -43519400494672679476638.3405971886281466298911222975259597 0.7278481157196056935660366756991293 0.0779121207856295172298515931074222 1.0811147462860737485010630238981557 GT 1 -965567817284.7039189059966572712931166251333647 1.3428440293762454409992843968536126 0.0863028970725405350977119315360985 1.0902561596869125184384384872155212 GT 1 -109614585801.4482210497117514220824577812945733 0.6702896930579409261986645774387917 0.0270022328321133079541754342839134 1.0273734915902483864014522472131114 GT 1 -23872355099434952673857898248285982848532.2321107940939905955044696214462149 0.1085689113169253585791784801755276 0.0960103984085341140457878731858653 1.1009374213204243539032545423031513 GT 1 -18083027524953192.8745256019981026395794767207484348 0.0034960790748497401723540206492713 0.0354960930665119621070488950833933 1.0361413959099923870104329868548223 GT 1 -3037615342247265821286368463437964488903.7958960081285630616295787599144065 1.3871011568333194963815571625846740 0.0379041435469984218402247837569803 1.0386411903979148091691840047093805 GT 1 -45814287505170493841671089175425956134.9274792947801371470413777799349938 1.2179523201371021070777850803920418 0.0625695648339310016152870494238312 1.0646127263802384934694898220381872 GT 1 -5739853462695722610215.1360938622944001311862277016455374 0.3956536522380055229505213489079299 0.0829569489642292678763860476299314 1.0866008601332742477479095658735558 GT 1 -42549087048573089152246415.6162422369572414068368168522096948 1.7823595521994712698584643155346641 0.0344901497003643739582555104697190 1.0350989748873760823154236268586948 GT 1 -14177717063577984834.9921898191578490027179895543636902 0.9327077103300767772586536349348499 0.0030403624293253733552595271825285 1.0030449937207614267477748752546363 GT 1 -12955324148812417.2731328176561073258133009918334474 0.8355844726079071510915328862613246 0.0813476772821389807852947810085981 1.0848475495161051846201410664410118 GT 1 -187.0686782748425724594014036291631441 0.2755281972169190224967519752462094 0.0403589650176655048430326650689098 1.0411959863398797200171058860452234 GT 1 -35571856140525398485050562382.8734713428379909123728933344391422 0.8024812640024955735776986077943144 0.0723175405318561010370259538337929 1.0750657820492046593242330231292247 GT 1 -115635640026014969841.9792314615477543162817997634201717 1.1217248665838341473982929055535552 0.0324194183019735602369531050581008 1.0329565689697295983899642024377402 GT 1 -6272087326174561521986862277309160235.2602562775071574833503622926536069 0.4245247766841380371004515639080597 0.0922923666971347769191882104134170 1.0968329419852288710838547840209420 GT 1 -4462600639950018078265436883150213269656991.6500906045055001123226986083594108 1.4773452950228875717061624666624917 0.0360413759207003968569852003620822 1.0367069063722920578095598632555849 GT 1 -69743749395475742.4192997540013869328969093555085612 1.2441105383778166408321236987409539 0.0413883771281612340576322697121118 1.0422692674898873847127091073751911 GT 1 -551899.5740829070703389159674303192736848 1.1387888903159450685207132937658580 0.0943497031672308770552729042709646 1.0991020332866603691109818026771133 GT 1 -11282139362023799298401.3919697974538897995835077459527127 1.8965012752379490877634254147831871 0.0980960860822793492647808148051160 1.1032472901838771845637355483437502 GT 1 -5209.9982963937255175206690851120863697 0.0721871304834595000799218536251118 0.0506908916283732511056455647448401 1.0520208133109328696734549781442901 GT 1 -685031962159678321733196.0190128686653281309903965161687159 0.4929899736403849054621790857768155 0.0675064499246042961970833689595139 1.0698930442973148080718574457750454 GT 1 -20910149657215316800328.8721463901557276573614413135605269 2.5847554845790930795352362969290999 0.0611423028786576591089119438817669 1.0630913585199369516600285085734526 GT 1 -1948443151808871479999883117439.3139780408657516955528342160159634 1.6931450994004447432035011635934141 0.0511778255364796067436804341101912 1.0525338799498859417059343159085391 GT 1 -199811648154.3487439398690623065141439517180739 0.0261077238246001472261646058138887 0.0195589576149717667469221140578315 1.0197527653065805800535337992178413 GT 1 -106086805360319224230168910942.8499315427950564596681482299260753 1.0068227650455103060853691101718505 0.0827184373119463618590531926823534 1.0863408062127820820270819686509855 GT 1 -7518286228574548026068999411669982.3083837711590211946112636394798286 0.0607773834985065472080248400992813 0.0893461372414864898285408606822519 1.0935924069868336486829863236686209 GT 1 -755204428177078677246904.0712071837697096600760425838856508 0.5304643871895660398083005503031598 0.0391279520768347024817440795702047 1.0399140235973415961307789740282831 GT 1 -1379768457038147399428.6351987563882291756106422483846991 0.5731422149915508148646809657481487 0.0711143402263408005671417433744682 1.0737696265658748929651141348686080 GT 1 -2664756157989527797702505464147997328293.0099623979733000062314105538759023 0.3968419060128277306509165073998359 0.0581007619491986686141580627601560 1.0598569761028367386417944730438664 GT 1 -2211581615707919088847163118.1428891294106618288571793133862721 2.2521513108929042556640143131133821 0.0892066360259351903268512502307009 1.0934392307500734934508158749876814 GT 1 -6659249308018779467401181958955.9807906308294979663363279148042281 0.7387581451989502822894741980615648 0.0389603610447609756237204742673544 1.0397396232503925532254865889519596 GT 1 -15484043343868832648462398901247495240655.6543809489679293214073961813627947 1.4243835704985849018367071542533246 0.0837674131866451280065548797269520 1.0874850308040475982781048525909267 GT 1 -126483980.9697204794785840695399146136448414 0.0604578463568675447628648223984298 0.0263451715296237284809991866582432 1.0266984237030304736110798465099862 GT 1 -3765154.0096781426594121970989969104812496 1.6647929899872721176434517258245462 0.0379875625881359029577190279057580 1.0387278996974440853962147376394649 GT 1 -548598425628341210696510.8345148878862673156525132804425794 0.8358921040828123035220707001307854 0.0761762246463050310336774169980001 1.0792339448438769577031364365834472 GT 1 -783265135641101843462.8620789124507796808708730406656485 0.7571036131812174016342683684618846 0.0960842462756441164453513446102491 1.1010191157154699103987318669944639 GT 1 -7307651956626091266275271448080358127281.4808105659397894586294307188907974 1.5562396739516741994444183919294855 0.0581457033970730808199717246949473 1.0599046908882969287573165671243442 GT 1 -63742715684964648087096065365923.2630316097888955061492351446085262 0.8886198903869478324426341959658332 0.0371310048289499484329383081223205 1.0378379146820297878461361918239613 GT 1 -496207542420856137.4402817191410061641318206603884059 3.4033817010542765406417280172704401 0.0979672009529691930742462900561138 1.1031043970007592049853462936113258 LT 1 -19663673928194655482876.1823567817166716654771171668911813 1.5224258034719481378797918799277691 0.0598606918393605607127312227007401 1.0617272145277549104125412878298573 GT 1 -134095052847103223664742790.1533732017639258234773217644702902 0.8183726749400306866799456101441572 0.0321138087864761129865610613954822 1.0326407696779881404178069060303174 GT 1 -1052682430303208426750762657307495048.6516595087094765361873951288634160 1.3196487746832386065836225105330581 0.0771798149470283194700462418534649 1.0803208792189342309376582706395991 GT 1 -299418940327501706363851574956200995.2542615543471239509126186254420280 1.0956379109529803494472537854111377 0.0026448720727984778549991151622832 1.0026483759264659824516890476531286 GT 1 -4584923.4720903082079387561648583544675069 2.1789783332127990306152407979941641 0.0514564333788809697074196362208025 1.0528275585363291881126993898107462 GT 1 -1826841329058482539177181097533809557.1141088529428074746362801049570417 0.2534723389127603244558788563008990 0.0224862162999703699060013396661918 1.0227428862501366656590517525291718 GT 1 -20645.5794328519064193198933897264773499 1.2971788865812983575577928224818511 0.0888428744721172651798874704260849 1.0930399207131132683101592496013549 GT 1 -1490445717058256022806.5476705835282216453730067901038261 1.6612379927938364505896344548204792 0.0911263123672369166805479802171557 1.0955491519598566393514911728568100 GT 1 -658464897400819408333966889957.8852080760890770896421846992085983 0.0838000703493547639214867037604610 0.0209750643858859155153631565372656 1.0211981662814956526974484263250378 GT 1 -30172606355591968014373.8468511725006402181171590624699577 0.0019913271930663135945464488639906 0.0994049730785739807428446192779614 1.1046995930914641439805917813259215 GT 1 -963290042168.1986623445760724818334222608010664 2.4349971014204057364484606301286384 0.0197619810165385555896421763900492 1.0199598602935089317519312405834821 GT 1 -1664433470289034749779400101892.4906469492746610575624466099408227 0.5980461933869534818702456764391101 0.0906093313687972263696538768810920 1.0949804986608026533995031252233283 GT 1 -10114409.5693470195092858106017484624041947 0.3988883944873982368396373162487989 0.0083102312468800557685779424405642 1.0083449537202358085634381622654713 GT 1 -215241494675481725426941.1726896800498275835343671029275361 0.8768027288050741628694946748069611 0.0897406990320704843829945586782561 1.0940257739420723657068515957582779 GT 1 -14650060931352671070484602465.3827042121998992284524198532995881 2.5801804407595005482300587110750057 0.0905667151322926927079601184600961 1.0994398351011871051106556570419717 LT 2 -1949904534348284950.9191337587845941944571351474427395 0.6904298916486330034764281958668514 0.0846891410744465459180011251991668 1.0884915348733437866483968220676884 GT 1 -145.5943498339267921279648389441928140 0.3384589009140229666180316526663433 0.0590449829152623983302135453888845 1.0608599438499591160647737470457578 GT 1 -17515876006703171800099.7679640901854671359352643443810417 1.2292954926982872422811611033091614 0.0074375067532352861045166263502837 1.0074653029151105553998086473126488 GT 1 -21573254264950438404559364173750310956.8405802072862831720154529776010548 0.2402618457775833075963091080162472 0.0599919040939149217342188745330763 1.0618667910891283114672565632324710 GT 1 -1707985630946397.3141522876168136686076172078054307 0.1472758460885879541094940934882331 0.0804114076192243914188089486806363 1.0838288911496358174258296622195451 GT 1 -550098353.1981661628240050266262292679148905 2.0264327207972358922010963177685752 0.0092891507725032689050199600411764 1.0093325639906443383834632307428739 GT 1 -108287766940155556556.4016482042876101285062711220670578 0.0627881824142906107243636421054562 0.0485055874405779432728173816053242 1.0497214645076075062209934652736480 GT 1 -3452550136989547776549983.1919571138821051524686559203562815 0.2055639098884828538305757545627620 0.0410932451225769166181152377116775 1.0419614404449531569618042554457413 GT 1 -4538.0269985638853780129667671029994996 0.9963034907584635972258900920379849 0.0124537735818959954612211638003971 1.0125319717398501578577399096317792 GT 1 -45602.5340092228668836733826973115217874 1.1746845406031612887357225894453612 0.0189135778129109836155927156708559 1.0190947272856958977419559337792486 GT 1 -10739952570313301978640342.9299033809960190710878555197107806 1.1122072695835180906543569041206043 0.0508492183871526329726115260907374 1.0521876082587552734497410052142153 GT 1 -13722345598638362247865882666.0543436455048768934159998058651142 0.1923214612869157177705066471308042 0.0368102286382240865502072429225722 1.0375048239173392250569763089895374 GT 1 -798787147090236.2450469357334966408724038838559934 0.7928255776315559658757890537061334 0.0068456239311707686073222531540871 1.0068691627012267062372360522631043 GT 1 -116798127450086288868623273851673269372015.4170309684255143542859739526794897 2.3569044824619926069068001087818481 0.0687321700576555108446099894244270 1.0712083632248419504411638333472546 GT 1 -107743160318287629891095984572587990.6711612424023683474067061641803725 1.3483434629427591360640552764427204 0.0279401987902808506793931789212482 1.0283379525359022726017518446210906 GT 1 -21925206371558960615024426101320.8172548378302874236523291002641458 1.4475225618426638555497417426974279 0.0933221120048227588545326094311299 1.0979680319715225398974477048470861 GT 1 -6754203.4179637520808812758062889540781190 0.0916970544209300610129615143879892 0.0017201576202502457383541859630159 1.0017216387901770292770736871736634 GT 1 -28521714183.0484020200475614536552255889187495 3.6134966474493430258546934995055685 0.0384473186834266398283831995786079 1.0392059246933948136355439761363132 LT 1 -1425865234326968180.3581511779302784280161679782983505 0.7150921262104466168071117207957953 0.0724050054589021279163093078138758 1.0751600697547139500865177993428474 GT 1 -292751.3903762010190847465179721797777100 0.1554880379925019729969455609962452 0.0983188526874794072340001321440919 1.1034943166326113667516343167184845 GT 1 -84176412585791106664654027632.2902396179322192818284392367350850 0.2382125857649796329568063296609785 0.0716678501915978176331424022394384 1.0743656901818809303799076704168265 GT 1 -2257404712632783571255.1620394372270172827802441092776779 0.8884485705780221576340631795737760 0.0695470515902598018899879560696937 1.0720837701001576903955651012638994 GT 1 -166415166749042791835.8441236046475167478042928334894411 0.4262578246865572020390758252145344 0.0617117401387854441586280176227689 1.0636980639020908415682366254373936 GT 1 -4486014775.9306570340837853832300628666947982 0.6687322264434238114777484366099891 0.0532189142627270071356004268937221 1.0546873785831774560247916598165057 GT 1 -409120697188252719409285662803965763398.0302468653160961264064061653063271 1.5361240645031815330542468036429371 0.0880251658440877485236352976410906 1.0921428834158197952138900869370099 GT 1 -2107868299700465883964407099098665973770888.5920146902829783284099801416619376 0.0397143408555404345861524775078441 0.0731548005212136807824779613378040 1.0759687182143275965495306635946770 GT 1 -13.8094827149480254250932233294503536 0.0230447929685417841106975451670284 0.0412211016825801936106440537252906 1.0420947850939885384057382734639452 GT 1 -3052024066228089334184585394211565.7146567347255211133974807143722277 0.5229965751431170106937350315901529 0.0198168705164007064348215726990392 1.0200158579549496018957123327755694 GT 1 -316566087920864484.6092149260355282979966820562904670 0.6030197893223397924102963724997066 0.0730995348513913520222026230738191 1.0759090922679065044778240851030355 GT 1 -2055246747762470668759323935592741305.0850721403943410767198140275818390 0.1217261238358944053386312416464039 0.0116055005772884230375055431933913 1.0116733700159966961398269701448337 GT 1 -1133989890587484409162227246874.9583409322659896622390249039082722 0.0311028763095073581709378292810400 0.0289510636039748066703562712087423 1.0293784140245712117955881644328155 GT 1 -6378403125112109974052738.6182229129710518270937637909007082 0.5022050813178824856939074133583595 0.0039732114065214193361794663606873 1.0039811255810431874773645345481572 GT 1 -39026884632770605159689505416615164.4992794774628750670401897519504452 1.9637443205888907855458451824465445 0.0346177800743440154331523396481943 1.0352311732387325375221964745920264 GT 1 -151816984739452874850428864445505339621.4950771553414162177691396825391951 0.3350470632918341741000434302319599 0.0349346349198404841662340066120005 1.0355594441027569727542172382542245 GT 1 -144619893352434556596664246463.3221691827852421124879109700945942 0.6791641372595540543100034149232143 0.0711401527948256746222176406537667 1.0737974156988746147295928936324244 GT 1 -5166123459099278703532589.8811908802533184847340880076112387 0.9152601944019271175453081338322881 0.0152699054363804514352584804276319 1.0153876910306540340261134714200863 GT 1 -24871331600988377248104860955074051151474913.8640092427649222011031766108478069 0.1804456130676946877802097025856370 0.0921020954757708649944435574939379 1.0966233466539784698435530290196802 GT 1 -71092150938751094386742.5771816013246246484817907549373305 1.1529223633907800644173690362734426 0.0679944304729002503216446135851383 1.0704164884269553288204257368714431 GT 1 -3453857693593748482512156426505.5616643014192267845201095454968255 0.3027262541575873287405722573025382 0.0723830397701328969212875767388315 1.0751363897771094836581743425626109 GT 1 -1555889967349.8247499525583992073934783879415932 0.0930210374518031500495757938128499 0.0117359255789432118345745720055327 1.0118053351449976486527880439814369 GT 1 -27916520797547211618754819083127127114175.8732220746388122214325277560029558 1.1174391727168632168564562986987962 0.0880134192212176814959530118259283 1.0921300030744112024164508361013419 GT 1 -8164452972.0895304704475656074970306605124086 2.4855475600554843249520811700421955 0.0153572659137209346529563836772538 1.0154764101153564210734801298232348 GT 1 -12449300236484864907526887758933311355530998.3812062277359066127175839731027455 2.1493965763652611185984501069182553 0.0513122600918706385937912984820288 1.0526755757108385025912586185027327 GT 1 -40326647787778890462105.5768803159611687082892825352975332 0.1377858982616084964342523812544117 0.0185226102352718399923017299748910 1.0186963019397987305738726394340437 GT 1 -38213536668.0250516618283684837732220217241447 0.8670051500822165447061602560229202 0.0308149593869878396690229391878945 1.0312997249370388133829091731329207 GT 1 -1932761545253923203898651713667.4213607164610204945015873716438783 0.1207003016670894697291193426031673 0.0849737458788769254504017524804831 1.0888025210897029986784094263816172 GT 1 -2721.6243785155115747078883923854466548 2.7625963030116023062867453721594381 0.0631583525625966146356540715356894 1.0674154871465781090697461603823615 LT 3 -11793883708872900.3529741092575215866697501227892016 0.1293909310121602963019291544598665 0.0134575322704724289364090000139049 1.0135489055565075572697928385430291 GT 1 -190552343087215239558244.5705146175961033837214347394884848 0.1710308246463946518752878489187276 0.0298078205791317343463540979836592 1.0302611039942036657992430573892341 GT 1 -3175730682461638.1200077423634476934225440494113933 1.1478887450643133782949526202522482 0.0779055961058843996851740499888886 1.0811076703263870010420575911251271 GT 1 -11612539383357776.2045063842125851889085302663618868 0.1004000587297942962308094139789726 0.0698204444525504912217253084573139 1.0723776409894136369265083091678549 GT 1 -111761787994667397295219775246.8419702399847801625115088169110004 1.0124267275577112576115329945951379 0.0955286469974914192722407508151756 1.1004046462873617768408952546456327 GT 1 -66298498877130706794367008164311553.1755040423281127238992298468583069 0.8760284933919295301758295557834058 0.0705903491541952243391572544840440 1.0732056784322940100136587698166139 GT 1 -158395.2671225487379125620335851521761077 0.1178351743040771315277945287043158 0.0073491904937564965616919279814935 1.0073763288392119318146656063904166 GT 1 -651892.1891507813962818879503667722743128 0.8178495662358850782903231646302438 0.0860927891927470174593966702112772 1.0900262325860185614106062322705146 GT 1 -647465173080442838084029742.5720667742941066614617388964695971 0.2564284608639631601215439947716658 0.0372422151570079773946434669024657 1.0379534202715198354351985053619714 GT 1 -287985118691718777280139746099713022876570.3012343239500381399650726616958355 2.6766518594314268055586182033190583 0.0502635053818621691479353151847552 1.0515707069490279438114199032160167 GT 1 -95142976504259317418729699.4320029521310042692528968769217402 2.1247877660714896546015395453483144 0.0343974053045079963580669120695570 1.0350029220695631685810255327279303 GT 1 -16357165734251672125.8285980279153839157811886582253609 4.9048191809476989308044304380184892 0.0870846002061550244698855460806460 1.0911120644616483931269776924124572 LT 1 -39.9032671522113709129895849230879880 0.1585865517108751934499242787074200 0.0976957289345297676205686157161950 1.1028034864613876259612864138937176 GT 1 -162027043278175499001363052557220.5313831124799692499072140201969805 0.5937275335715646161511594036252992 0.0102289584422008968145611100465858 1.0102816337545369948667627919557736 GT 1 -38054846894165165510655458941986204.3703091754695041368509782536553396 2.7872231410143834877617965554929282 0.0203676491479783398479724869919798 1.0205779298965220815932868709294997 GT 1 -260.4492478692075606964437880588361693 2.3962395323272259564685354592600346 0.0000348836011482282764842986730771 1.0000348842095951927327739213935208 GT 1 -43774632700945859087922963817623984494.8101391179668657258138414377963953 0.0427508542892815896437467317796855 0.0148190870854658840350307305946365 1.0149299867414009072967975530946623 GT 1 -8701839613606547886377983720710.5110312352374015494298493425708886 0.8960495945038324051732949995435538 0.0913726881997870980561655632160535 1.0958202668963944081035728075426206 GT 1 -3881552897622414392.1116362376405557965478795727752131 0.1034013538275673781988277418356820 0.0569633765877747767505607569668874 1.0586501599742685799636473111580349 GT 1 -26310.7573797681726985719900425120261930 0.8048167845354949904520835793471460 0.0027403405138910847131417455846365 1.0027441021205842121212794457305058 GT 1 -16039054428877931.6000266094467719394556301288890336 0.2148594969798337900418174368176688 0.0842433599414053366206347504341499 1.0880046263982649958617335884432713 GT 1 -3449030405437.3937996062654154766618521066071317 1.7656713198094607969025636149478748 0.0780433378141046717382462834264239 1.0812570606670452420154604684806682 GT 1 -8045173979.5592380170557077116931373393575506 0.3060895701898995922221781453452952 0.0925687879825536866449089433126208 1.0971375151458643903057303816553149 GT 1 -39693150681919.0410413986376280193459523331571524 3.1279326272956980908778970663270668 0.0590665296956683702533772128808320 1.0608828429542910708766172481202270 LT 1 -63945538970247151856153100686580222.7204195808064698933303215683984752 1.0166032784127801533594129257955782 0.0987365913479724152812324424211672 1.1039577126550639970933507324969888 GT 1 -10481379439452033077613524799834972.4412037490428142169287534769475805 0.3927332215975900910648611443580097 0.0400159773057750489733844459335139 1.0408386376856008469220268821350802 GT 1 -6921395654134700.3107039649130919343449709627234458 0.7281690271688582845631673020846813 0.0816644102256883503475313675923674 1.0851923889617369649187317777970211 GT 1 -190938114961756575327053741034614291.2107357112681468769158789287055656 0.0063114303058926487615129134673691 0.0378222480403860689037805235242033 1.0385560720381308738138005515499089 GT 1 -3188813991685711234877924.0785868574229114933541772911133084 0.2156579689619599704203772226033070 0.0675698344300759898619849503311769 1.0699610197377731511547308551436921 GT 1 -859.3787621202688463993152185119554572 1.8079290894038978569220723425144111 0.0808143322615468881303840263264344 1.0842671446726597756812186806422990 GT 1 -265194650888407.5917083980907973740752324189398799 0.3372604134231655409576595160838225 0.0737155423730944013960805666257493 1.0765739018471562822545085265594552 GT 1 -7912778755128165447828315479.5118989527515679258800162750663508 1.0370625698887941666537027174176088 0.0964739785082499297729823211539897 1.1014503685989542310298887057903027 GT 1 -228.1326728977864489063605666195956546 0.7675005414158734073211035966792196 0.0145833673287195304698668283870217 1.0146907499084934047334542991977725 GT 1 -60028537642664398.4277678781210567365298760764308231 0.8394545348277260557659937332699585 0.0854113428805902660729368176709956 1.0892808698475416550101480398293311 GT 1 -2012870855535822570598209713457926430.4137472076500482498360088096331421 1.2297777693606510181750724750083154 0.0283805362218538000198868852776355 1.0287910493477458847043027582225129 GT 1 -13372128.2588228319867307927975378165890345 0.9960587294722833748827981167068987 0.0271563400006903213900271907531461 1.0275318880214761576241527290161457 GT 1 -94278826476615476.3026863846772529810632049605339790 0.9629143440727136454211439208289887 0.0226141478879613784403654708670562 1.0228737692743390736809088776175676 GT 1 -1378099.1108728154358953036431293110109426 0.4404718749192321612683890444313992 0.0120264965724992164288371791848658 1.0120993999871066045701120535859712 GT 1 -34404.8374646865020716529788008624932546 2.5074452886844932980700529347905013 0.0777763028873849840931692125452359 1.0842453283092794146304686339975247 GT 2 -4512626575148896.2483896321449088782235704931776695 0.1882912892135580318646483558837610 0.0588402273136724447697871634665855 1.0606423634945944563627311661363208 GT 1 -296452358055895574336544529036157966795.8585175232674610834919892552081442 0.3637749094640377188589525319225621 0.0132238245751715829978668100104164 1.0133120378846753289861414528392869 GT 1 -2220247916352100605368070764398955344488.7287886864795310600418878006638347 1.8070780055323136558086215305489279 0.0337986942341267805092713377187364 1.0343830754180397368686399915587787 GT 1 -11492944643777389146451348706248551.5441142328902405487416353918602900 1.8422673799938980788329199688256770 0.0067398392606112302087129567771549 1.0067626545492782056435256675146205 GT 1 -8119399848320497881497044060575889722.1166804972565748922466431145817677 0.0104810976928082058168391327197823 0.0664117171232977224565284574745124 1.0687197485633748725901872042303901 GT 1 -7010113308255995.8607987542194632207923363775921474 0.1994337215929681185987091072163939 0.0262269980373753641584474728108287 1.0265770600349687529102717995435133 GT 1 -10864816189433296418074854455488039898714281.0528181686099858801167848593335048 1.1149073210229773298073697449928206 0.0135874010373389935379529696027435 1.0136805545425859554037922034639916 GT 1 -4.4933666424970105876663743775157148 1.6072606966282327234563519154048120 0.0702021871626618210530336682083184 1.0727881220220973533055873647898499 GT 1 -51580583947366860337368145636885.2789669649091935111887001727361416 0.3571366287021076108206652600878092 0.0250102992574444310864008989545372 1.0253283713810510017854435832118309 GT 1 -314341150539913523175173527498080.7059090364943461138587440431156987 0.0377517778349765959386882944786813 0.0247342987300468426466588709644489 1.0250453309864900081636474164675183 GT 1 -16864012949297155249168.7397617896954415699664434868152907 1.3123533496913825245794974870694104 0.0135725630714654612627975964148885 1.0136655123033735812816362386606643 GT 1 -65329674172487.2088865480495160868714466269386847 0.1961499541378612703081387141119108 0.0123633929237218622632949039710639 1.0124404554946655875972499701673513 GT 1 -183494116420648161677945720375071588393.8461183624786921785116588840692283 0.7637009551595743193652496286526586 0.0308299452549388199009899018872551 1.0313151873958908231203679737089628 GT 1 -2477328.8952674415724090041083292557015884 2.7826142344229159448857536738471684 0.0021057871432213439080515689578703 1.0021080074304834570457461074684731 GT 1 -4127.3435792416897926596914620978524514 0.1321467876068800015290655432148892 0.0888405052348189724695604519241587 1.0930373204654154637145286635993512 GT 1 -116670.0965888744293588850031981763006583 1.6525441596023180871277993724770219 0.0299863953770487850823477405547228 1.0304451821985775426900831753051897 GT 1 -182655940343214177373027.7239579701859710024403738834342383 2.0339090380254030754808644752741210 0.0664765268011799550442200576752285 1.0687891709508643980229137531516793 GT 1 -10361526972.0866555187892697613367074341972246 0.8735567649649669741972890758073954 0.0997682222762964830383194869643551 1.1051030180090765866664880659318352 GT 1 -3664227876411924994153312603436.8470422118432844998870224290104434 0.1977004798866513532222988425142440 0.0986391302950409660888919061056457 1.1038495802458908051500434176840142 GT 1 -20490535419330016528813588546737751156581984.6032325059494199995448000234648236 0.6955458971011280583481661036151470 0.0514332397335907094316619125175871 1.0528031069849747993166969623528085 GT 1 -3545933681993435518.0547422144173149065207784754838273 2.3095734640255181583575498923909662 0.0993789832086780284573325561593931 1.1103398444444462354881997131375633 LT 3 -229798128859176396726628.5511261733492317330817823262198689 0.1840413305186756243367007509514666 0.0720569674006813518025129052140034 1.0747849353654299590054669860356772 GT 1 -372677556185549324955521.9740117476147276035293070381519042 0.2273399225196089138098713908044192 0.0319228933255904062349910997346837 1.0324435392225214788214877685947164 GT 1 -208.9950674816103151378504628060181463 1.6319544729670799159469509558519950 0.0054913789132499875051029542057522 1.0055065119607264106548056950240784 GT 1 -333563318501622.3763032568311012506984304972741662 0.1895431244090340744593936941563837 0.0739165294615591496877878045016756 1.0767909074281722999245698213740171 GT 1 -15141044726294.4411815642989858134843265712400870 0.1442747007224432597526227223859643 0.0808849587907328351039050688497527 1.0843439836020872952416315300111690 GT 1 -47582.1090367881540192350950929437387296 1.8376899250053075797693896746513390 0.0450478130057038058702812058617990 1.0460940057293085012905219518361432 GT 1 -63661000271586610783607317785929835825205.8591917274837610558935846565362695 0.3584203400409036152194839839556683 0.0407214250870592191140997143415721 1.0415737614919343437478903267230287 GT 1 -467587.4465458230595537700982645952167808 0.1139938206677381385640666744783994 0.0658051302551463988137989730551251 1.0680702225318056115188337902684949 GT 1 -3884430233167.0529316508282898766224167503260230 0.1879733995463456647757351997885907 0.0034882888567050963450768419897328 1.0034943871220832803039363729324184 GT 1 -225492906411309740616591488992964486.7397660959006132880241527592866458 0.1969363175914761242557282101819164 0.0230734285008345857313981283906638 1.0233437868782590922507938191290990 GT 1 -24813550737497042021918183153965091015.7071289279977619192907884976214457 0.1392494842717589517418116802062761 0.0968016489646647861895006590567127 1.1018130918399642840404793352930966 GT 1 -6346042388250099851244279396057604647631.4465616047530244403068000925721425 1.7395642650994861308253218713176318 0.0377573404613642596071127295476981 1.0384886152821553031798139501284807 GT 1 -1970093415393337651725091285.8425646907271528189131015523087233 0.5680544873601370698627011347232011 0.0310678314493183170221781684738642 1.0315606710372744037926220308485409 GT 1 -93076910663689915.5290859376870635564225538320372915 1.5725929120072006031624152394264163 0.0848455210567710397827064194358182 1.0886623985105509452141413743512428 GT 1 -22941154876519509534.9566257089688143914703960716142478 1.1273125166001605586519913407955819 0.0348422926092495410363842800015370 1.0354637636480174262059988426235156 GT 1 -4434774467796633049884198234795385545800.9125246306597244603672150426560462 0.2023417127772549582107791783986510 0.0226611805837483337045264932496306 1.0229218913413299806769948328584430 GT 1 -1125274.5158097686577766365153220880843248 1.5870510966634693552633542715189422 0.0174743775117399575596457714646773 1.0176288567103104708606723197035645 GT 1 -328.3350171892233441575778919247447001 0.6486344572532196396625365654468945 0.0047503211620935921383753475744269 1.0047616397966568763732455276566239 GT 1 -25736451705635780360448877738709771574560.7336911970832514199128823710473722 0.1658143966243209211820086096594276 0.0243262698480499204882797914805774 1.0246270413344644591468002777851980 GT 1 -8415093.5670363726794810935719018374434245 2.3523170267880690984231016182925783 0.0746237430034553786511592464690994 1.0775548598553021422592885003980390 GT 1 -910684802154846706752624013.0258800681672944467483717538296155 0.8593472479568697999748369312462281 0.0315455567175045993890438480003615 1.0320538356694141955180835292611109 GT 1 -466.2349273221345576788813069358918844 2.7770032869697895254780860430469979 0.0010116184630338015966949629517147 1.0010121304943405194589640652897869 GT 1 -1232885730491952965963.9989015545495518049977880246767383 1.1711395059393549267578231395518404 0.0356726406775120210735066788928845 1.0363244576578826372021197217360384 GT 1 -371266301058760475890601054412046719913.0185880446995871645785040264884885 0.2878389592710904385916140247641824 0.0859919900903050166671049405676662 1.0899159439890401541552807218168634 GT 1 -2.5591508762735797030136641832835456 0.1726812111915536572558660583208055 0.0667290466029140750165740193520055 1.0690597093665321276474556993127076 GT 1 -599661746709.9536811493106634005296160313488782 0.2207542460274465149536482824222605 0.0375868697350921068428519301947330 1.0383114711635850576310667130330958 GT 1 -147968645006556355988674180978045246819579.6828920166839729451209286480423381 0.3659253107913758730533030397517085 0.0368328037612391551569769448243853 1.0375282620686224958440647828116117 GT 1 -2445531602335191054729609697230131442.5760778999652576225295917134212631 0.3412418408718012154994123628203684 0.0696886729540440214708098298530112 1.0722359885900822023758748844587707 GT 1 -1441051290194847874099487.9249903320089343131812152300400594 0.7888927359098833773877092763373893 0.0315171231024356775447173842559857 1.0320244763145453234164199894547363 GT 1 -72822303465316304522732279596.6551458670800051221879671299582614 0.3632241737741840530020142032840664 0.0868065975674040295992286058636907 1.0908075890212368036323176091637496 GT 1 -45882417366983122466804789980060.2102913771620506910402736566539498 0.4022008070471841186512913164152841 0.0917095384348124678852566843480012 1.0961910599436337746021273391376429 GT 1 -1580168538049947992705791363.7311160343880482679682427655637475 0.9496178554121188107876897003139635 0.0197677919101151577292776215273705 1.0199657883545387529981384642153346 GT 1 -3.6262614002296944333988687786547512 0.1399808645876938421352543070708083 0.0087159277981373364887561639004834 1.0087541336585070283783377440324202 GT 1 -1331739008729631.9871732587954235141560246393110663 0.2112107389396754557867927443475222 0.0613774617264595071866618720973848 1.0633418632598519625996697815512864 GT 1 -8637989118749484449567714486238934.5509773819441599149710223525069810 0.6904083046839407510231953437400465 0.0043277515420497822606015890995818 1.0043371433655353921690469705058521 GT 1 -16680333117176767138841720862761919643123398.0685561566079395651700239400476196 0.2714456464594568244785416708612955 0.0761137083439811443982639457434689 1.0791662758914109281870642582356685 GT 1 -9612977935145617488809648446.7849497499186327102274295505484777 0.5659540246808152534663808720501771 0.0608488310468868485076325077270463 1.0627788234308209326855936056681143 GT 1 -4092546.0824598322928311469153080745882234 0.3457832850841736496098262446355709 0.0140685426773435474090761522208911 1.0141684426957865369282815624345263 GT 1 -97905244689463.3520011014115599935822898294992514 2.6872724954791242868846898190627052 0.0685783938267544672932870055087603 1.0735668229486532932865354558753785 LT 2 -26503804114291362471007207.2327493379540805036626000537985785 1.5915933276299067441678749245708245 0.0100026950965803884600683988152711 1.0100530581769851305576160167525394 GT 1 -2630734109707688337122506130.3044579176148529443805083913258772 0.2757191224291176531351095188062450 0.0966209484277827161992772918015606 1.1016130444606226920254803693939495 GT 1 -1885530636786115712123548342527210.7977590607348586450643519708644450 1.3945675034462334790278601625425078 0.0899480776056986895654346475433211 1.0942536235228076234390646673730094 GT 1 -32019210843643879169.5550115638189144318585013599472500 0.3115319985821170412067317022802379 0.0201120741562797152010677109492126 1.0203170752412400141827906652389703 GT 1 -663472448875829785064384.8801616571860710560994609804212503 0.3657174955812348294807184530102957 0.0148066863255275190804401521736196 1.0149173995285037957324681744407594 GT 1 -1722299462369942944032978106612723112475.9367143843676945299254509892585777 0.0356964037589667886675148661650013 0.0628845914391816519730318318311223 1.0649488361737338995071115681709635 GT 1 -362225888376045445392351765.1475187904354707413516981670568032 0.1849402074119625741421413966785099 0.0177424574510423275827309720434824 1.0179017417245312306016276507227380 GT 1 -1585012039133115590.1320338763799863016720774938815540 0.3792586882329777165905403761070884 0.0010723417300651385089973463660962 1.0010729170998236043142602855796372 GT 1 -75232888239922837319365845.9167038334742860668318181728399918 1.9196218661240484842510748117359903 0.0779171714776714304181334892849943 1.0811202237530140236713407134895921 GT 1 -694042928363779055767156.7054754248713935947599151223963200 1.0853594187534728939067475891515022 0.0122598829249950572682179405445060 1.0123356552329676411286251644944680 GT 1 -284820161145121949939646164662672.5485533939733268794889524063704753 0.8427106718808502280061125241846229 0.0474942521999719122355115076293726 1.0486591375637631299166191629568696 GT 1 -69678398857571648308116316401.3141492402179490655677052341387339 1.5333958664681149423300245106602615 0.0419372164349553669730758596770094 1.0428419670782492326782708759581346 GT 1 -3619091365756944614182922300323116938.4157106326296254132041883619617613 1.0149071309304802637128345164473374 0.0067839005203272788122031624033926 1.0068070157738300816693656135164739 GT 1 -360408112146835049528419938052229636.3783897624029166501139385169369079 0.3222648025854597257674413051631697 0.0400846640623697437249177038485622 1.0409101901410097041361399966201653 GT 1 -88564117182663213104811143263049666283440.9865376986475477275328573330892221 0.9767331544729603403166261539777361 0.0678592085494079892509822271949403 1.0702714119173420909586738664863658 GT 1 -9486863804364315612.8420292611697177899770338463711090 1.7234151584223512224391550258386273 0.0694871242065213263407146116688680 1.0720193654958605121811872097886035 GT 1 -3374935273903300600297.3882749010981695660219383344867403 3.2630695632879154832776565289071408 0.0702256489269671224357658095277338 1.0728133555298491687491407539696244 LT 1 -17268857366994467064924747250428.8604185515988419043845353639579022 0.2219851769006589998941999458218046 0.0466346168733031721949134336125999 1.0477570457370757998100713918892941 GT 1 -75489335991347653251073107979815.2650124745797220973517173950941436 0.7456609252474847668581391239931116 0.0401088971055921578910658084761267 1.0409354354394247297329168138232259 GT 1 -5965699747920484903917.5227112338977252696923524602904110 0.5909134066037769858379398044283000 0.0442982804655511380510016884365427 1.0453094234708046438608120541483133 GT 1 -1634975053676777.0088638052470171641742477194188017 4.1215484459202726034451646825220568 0.0507465498144458794445594112112578 1.0520794452331075813225812382309746 LT 1 -9460464102469542456126954551128957.6563551737033219886989163744358346 0.7963932417618575799282173936050938 0.0846022455979650415855849071750315 1.0883966038986226742233136290415524 GT 1 -29095185292438669540436232420224446.6528763044466869158528970471267407 0.1975871608675806877405911951784962 0.0140454859490829281684233582552293 1.0141450572378073321886031059318838 GT 1 -19401.3733572959893008278423641365598126 0.9163275095370193013080609456544797 0.0225052235782487060773170929797409 1.0227623309509596135201505352787936 GT 1 -2066.6867181169900209216434902803071989 0.3507829833384304887971283421405101 0.0332045085307179604411114190430293 1.0337682935177557653233390857971220 GT 1 -1777319551770733420855223459964079967767.1540301826701064269566328220625934 1.5083567997230790273437968203532966 0.0651455514834583415039679653007323 1.0673644318470720019453771389742318 GT 1 -604401422522648632796749.3293501773442500944770294823645179 0.8961473760817689342095874757783195 0.0208767059166690872463432074655701 1.0210977055831605240340862793206387 GT 1 -1308599863462101353480119618853374521295.7599095055457489999508823458962671 0.5677799073644688499444832502046475 0.0103111055349840823809642293552780 1.0103646332548910120928053950642322 GT 1 -24732543963968756.9641551638934965095669783889191579 0.1885380155147108640644855994435601 0.0956434859826373702580983541865822 1.1005316224219007131113840170315364 GT 1 -3778987011699730.6101259664217032597531818628562727 4.0058299451142766837376612057979566 0.0988253457238060556189637331221856 1.1040561952356650584297315160928904 LT 1 -405.9264576137580108532518816537118136 1.3846226918791995550818906264710809 0.0297335392725271727335663073798546 1.0301845434274345987470220656223398 GT 1 -33653113564392536704092834596516408.3644076024479533018438848722827667 0.2306181664137845701323816500828040 0.0223532026270117394356987927250769 1.0226068220573010645984610379877125 GT 1 -655505924685.8049584580839059758621420164590846 2.6174418329366683044067205957414134 0.0908825664361766776282543745008413 1.0952810033097572625936431063234190 LT 1 -18704124607232599248604608352167.1699663776370561018618329637966654 0.0785657133973459089426499120361501 0.0123698027536178100904218820225601 1.0124469455848973913196888886262870 GT 1 -13451.1148283514607809835436505196083819 2.5091168528399294967307819419876452 0.0880939511128314888508812518991469 1.0964704192075264613343212389720966 LT 2 -540194975658481881.6052006498223112657255831264605152 3.1646178591314869509215281935120785 0.0977169440715466911563858823082910 1.1028269989140138349951949270893741 LT 1 -54929670689663341.7729020208221904379302643004199824 1.5755809645896244706269425923014392 0.0231396447882505492215829283310489 1.0234115693846686187929103822852109 GT 1 -1110972707.2960659753971700798858615821891679 0.6046398919999912240705519475795100 0.0228915348371841630435738106422919 1.0231576145110670301025455100010928 GT 1 -123373944608.6061881461651606309178262556985213 0.7074227787909809316567707446433497 0.0258215944611124853742614878313443 1.0261608242083924119320729313026771 GT 1 -1644.8563813104457491326191815243844134 1.7973900514459880056142168537983000 0.0813848730116592939484886232803088 1.0848880397882551025849247612748490 GT 1 -217420149373829894761779054528396144951860.4162536665380172972031532633153440 0.0877441485367840953207874670459737 0.0696458249483541428027245081961866 1.0721899319445979403553513041606380 GT 1 -19845003.5738703347177283606188669920319143 0.5017730945170572324190213176999703 0.0223211644503256545282313760617533 1.0225740518873104385977412416292426 GT 1 -20195187220.0795977514865939614685223217525788 0.1161140012242438101860079865451204 0.0508177008562272753805395897691986 1.0521544027783812059321654043572760 GT 1 -305363478637880920863685443.0406124472337144147794388229315666 0.6962408553994203952212853819963360 0.0352638999044007054966369526901278 1.0359006864467981769509248818139630 GT 1 -965179319363646.3948694437339004342540159898743979 0.8411700684721544164770128278512809 0.0027091892056555675242871619326466 1.0027128657004462249319116642389183 GT 1 -332675717156565637538.5713734424652103166252327715945910 0.0571384167638019643133087840893077 0.0541143004457691457535332321375841 1.0556335422257142005285123371307933 GT 1 -5837455360113187413958657280261738142.6758987400441285904371838072567298 2.1680625091991728096206095373403673 0.0989047760791718008275107205642438 1.1041443400317115136313439191602699 GT 1 -622777430066.2089972654615370008524729300473438 0.5557700750941742638664882169686162 0.0743355562368301228300089787020578 1.0772434817545014010055502451453140 GT 1 -23744402725713740867477621545141293049913991.7025810748563313770070901523613616 0.1808324982062015844311455474572154 0.0448605271678769165965082602572086 1.0458979043145270828971523615574563 GT 1 -67212.4278450866184725629497821049764599 2.4777367037984602193608981182454490 0.0385678401737546725785531928501027 1.0393312730455058083722896671039310 GT 1 -412492128106043784668594324278.7939042634551222440976189875750617 0.6195331630565504646530574432386729 0.0166466400624496083801791045022478 1.0167867524855793352579394632140594 GT 1 -3.9810629677247085409072813400886178 3.1705948970060038804293995800219612 0.0496116062384839274033831852733734 1.0508845423995898133092727362602667 LT 1 -199240376798.7125391728733908786172979016906983 1.5233368790836117072671329401807719 0.0659762613446601325089509915776628 1.0682534249570709493305165308128550 GT 1 -67985154535358460.9020899143148895074353854021159760 1.2778025871780109445518862172510470 0.0286416502580803978830560544700979 1.0290598265164624672988926486741266 GT 1 -218363025528.9669579241113177834947626907725490 2.0299196674456110976940933721287711 0.0443451314213126258327872797148268 1.0453584472438276793643814149605116 GT 1 -349699972222149637046060228430468.0159309782898641320811593734060107 0.4321081975311207942087654079104255 0.0591510540564748862514432324153618 1.0609726773157279216090024499490689 GT 1 -3814375028463454185674350581072153702871.6142084151659303953468598777737551 0.3881993294716976475722932891093947 0.0952263683599486598215680967103679 1.1000704973546067490224230368746777 GT 1 -52958139104091410711144332188960.7020016786680933841439537291255694 0.4009376653901922596345083103062863 0.0280148445351450806800942521212717 1.0284147467938175846008938487294722 GT 1 -43372529655620495169736970657998655.9785087538513319446493739772181623 1.1744338412218361919888136134770520 0.0400237384432771192051244491497337 1.0408467223710662449013823258525220 GT 1 -705880922490175477089860751945.6722647944098431692548601707911155 0.3766866574716839081476666755277072 0.0788114712387246825994238803902629 1.0820905636084988535788029177743844 GT 1 -14735897445494457221970220348894799947.7815250169272248807886669151526545 0.8489284869179963359778012320596687 0.0879147125071874336145707802134599 1.0920217762925134869275537660669899 GT 1 -3128188019316018923301.6075399036328100975107276942231141 0.0804842052562050043816741087654294 0.0210509456519928095522571584222531 1.0212756762653196482013171073173748 GT 1 -96328740299386584178924288.8774998586762776630392383791151722 1.1437340981736824297824116003613676 0.0853882980061949704134469696630608 1.0892556731824724584495510780533834 GT 1 -1421317924436374738315505024010406.8295877123927969931614628462872253 2.3433403500756320652533094915549951 0.0728284742313559389412649447704538 1.0756166973411782253208989002688900 GT 1 -513605187502741161309667177238.3996534529210399265151381148040986 0.2917955084125805603148247376983345 0.0722335353305609947512640246828539 1.0749752323172668206841871736938390 GT 1 -223252006621461358.8277451567003728381538981965036756 0.8400506695062775007849008915351556 0.0716654467598633696889305953372679 1.0743631012069932965450660689882593 GT 1 -17943499566245545.1749894771750485896523457156167677 0.1026066636753591562336607921146896 0.0439778117542734929444357725387333 1.0449741567380141475841495299972398 GT 1 -48972928067512909514.8245331309338192466266831417610116 0.1701692090363872687698835655769988 0.0535166069433543538352647170915115 1.0550018541215030307735533570343418 GT 1 -297286097902212950126285461541327161291.5052740640690824513000520110528302 0.2706864967254859726652749583006763 0.0304461793552726140710648082795955 1.0309192920241464058116371275188829 GT 1 -1047244269810984180962041440080.8513806967733505098103173216524224 0.0987655433738071977885990011704778 0.0682712778567383981569762026848503 1.0707135773275692455196899923528071 GT 1 -268202241257186999879.4563166347194436812880135092248488 1.1668620459198626751650328833741709 0.0607211742762251658728694156891968 1.0626429048485794185770204850436098 GT 1 -87403269136081191339161943.0835291037545004403299831398504031 1.1322884057411154876690091141256753 0.0815746581258284423754816172213155 1.0850946602934221501794071074683599 GT 1 -252834849549647251790039546532650.1995169750956024415054399546002578 3.3124678562393194506423442614162065 0.0994234448373543210626563501298998 1.1047201039178226354723230073151718 LT 1 -5013053307526601823422421.1087158797203523439301816338207336 0.0143022687258557503626707035251707 0.0622483667901998073335985621124362 1.0642701483956370321425547675505248 GT 1 -3948209262676503608574031816114645237.8156092407030948234564813307626623 0.7811409506931959132902847059396416 0.0564740969865419778803453179805918 1.0581314603760847615772590453265048 GT 1 -793142287466.7524786930837397511691814442967061 0.6073535767947954552546319972504582 0.0372028931379677748882623333728700 1.0379125779987650452216315814787216 GT 1 -307899026081671975.4511628298878046656744428386533540 0.5871263840314896450599651556233455 0.0394582390119118550212075020214490 1.0402578193344165872193861301456143 GT 1 -4154368368436035743475665689596869645178.4402430625087544476202670162295184 0.7436363661453612251058793525318503 0.0550454183158385654748276459088544 1.0566184143532773641207048516020778 GT 1 -12300079028785038722078676062.6497705635253485551514163724121837 0.9846563699003716546633937147008691 0.0468850302646580620815557104434198 1.0480197427980961724289718503103725 GT 1 -294700137275727385677109785976390.6840263021068392561661623202002027 2.2873456069228780974176143454070607 0.0615205867635421522579987283296790 1.0634943590124080501976228359364344 GT 1 -236143757.9495102540622519476329204792008643 2.0049543754993851617182598811829468 0.0082790823170682097956652035102727 1.0083135442597267723220500321191082 GT 1 -3333061994257291568773131650703.0418011626048556952447276797673020 0.1110382985552370623361196564984018 0.0327588394017154985990135197384502 1.0333074241372149279999320522072614 GT 1 -9019319064192421308918100710477514183.1841299912011100172781194892145056 1.0293376711037341203220841809999124 0.0143016505114202059807459895782734 1.0144049047682887186862852799407141 GT 1 -91775212236287784633480.5110031386399686773680201006128301 2.4523819103527470900590903870135227 0.0512738528115225783390398866999474 1.0526350918916628391530068006681759 GT 1 -4730617617881430804820907031418227725634510.2083772153700250118059691949752423 1.3614907330079117900666719813049718 0.0794666832970270202021874658881791 1.0828020848271436965613110585576058 GT 1 -834282756587886.6582897201986115162407499566357737 0.4424979512398614235044678606013808 0.0370413555553004925245999775265130 1.0377448126080226874028323039691295 GT 1 -1278884826788329150463.5323533597427461478361799490063016 1.4185331333627906903985086065272767 0.0688243713589555912710724872703385 1.0713073743394618088837365971649313 GT 1 -1190435.1026483746483210333853760828607133 0.1361053520021044448635096597770476 0.0015955412475326701097210208336160 1.0015968154790419493879100987465959 GT 1 -2584908464423881593406938.7834089368496430792217555889303810 0.0070542706096984445623002322795169 0.0008845425083425425048780383235980 1.0008849339469134681196597510992301 GT 1 -486.4956306813537284113530054232815562 0.7944156196275061698135787355490859 0.0500453785274199395403373445130174 1.0513410623993922026677366297240479 GT 1 -1548964193610192537822.2775439201811821189962387303293449 0.2905955716160603539904303522442904 0.0431445689219382559694769928634730 1.0441029636448241796106888781677395 GT 1 -143.1137047874896317012651381237117656 2.5839599850674152678977060662284368 0.0725750659634432050741248489945276 1.0781817370054857097003399436880817 GT 2 -4951690191756542.6989963680341675064666629250750833 0.6544827514086723452749246176232270 0.0309892445550776876725651618620056 1.0314795676226065683176333862985816 GT 1 -3392268599.7289493616285815351102075258176708 0.8348772522234075322596739717894733 0.0980417476799441070500252412354983 1.1031870434495438081715086107557507 GT 1 -641351281504409505621951.7432359560785605320937596652602670 0.6191355458417725242439747908303838 0.0725085162181783559780970366745712 1.0752716664490925666170946425925079 GT 1 -31246245134192485049380553977520611.0690605321186534121899520559620690 1.1450148049640959651094323015600928 0.0589697802167480218054331371427345 1.0607800253712365563865075791318032 GT 1 -31266537530.9647342757476565462412881547996669 0.1780434112911374771321092357013475 0.0524135261745809016074533562007355 1.0538370809388733416509160823753818 GT 1 -1603542649677988971605777762088594245604.1828452360937357862643891274418702 0.3513295820292277159883397129673874 0.0913519951486598037525200420355041 1.0957974931857314393894616885487076 GT 1 -2859142309.3013625557138126023075902232762680 0.3804865647670526306503249951477315 0.0085555404992399613208904231754222 1.0085923492319627849652628831329848 GT 1 -250327392963601637019999504377.1525437724294567000005527481903521 0.3584879660026721721649437430088994 0.0346250531991671241968529501141161 1.0352387071999664863972277862995139 GT 1 -978252957201192326448997733380.0918292716898842677970422941632732 0.5605194018157542780053210274002179 0.0504362926323524062027015420813961 1.0517526552800882591003726731308449 GT 1 -83464982187607938776.1792333512634008399609449019377211 4.3088944687349677659738304277313333 0.0768650068042201320450923003891500 1.0799798003568149755787418236148024 LT 1 -3833620858316155558.4501642064461207178513078948070331 0.4582319377619733440646999828726946 0.0282333322999179652155082847279415 1.0286395571457248783107180613612358 GT 1 -7325929130.0644010680145046689458888592711927 0.0347617984581551633382718716473980 0.0822629104884511161815841028536721 1.0858443242480823995408771872971147 GT 1 -85873310.0441942030039981301423151093922374 0.7816627231249994126611100381657186 0.0803331411248293496108833592358007 1.0837437844349716434779764722006537 GT 1 -1419.0927131841616821844092157273647344 1.0727640133294366432357138395784046 0.0034358358135017564768071991399427 1.0034417518522827560615186456054679 GT 1 -7313269238837985399948241128063648849911.3820789867778221666070665624736410 0.0490723014617463580135644002324243 0.0564451915131684354494378240536004 1.0581008252546512725680284623084225 GT 1 -5394141557386211213256.8870832948545640585777037519401774 0.1068993377809941091400160154985791 0.0628786068361783097654587999012668 1.0649424499977737907103038789656385 GT 1 -340166.0311567580987139934613349706443328 2.3498623075450441658962931030165234 0.0579285034973962952914017923872681 1.0596741086632071721758838274251281 GT 1 -150112049485662946868603805609.2017694696728577149342587076837145 1.1448825051889861113710050147453491 0.0708564783097203757540451538915227 1.0734920615837439028831028153279885 GT 1 -909862588916400012487818.5905025807784698268685149774197075 1.3835097149588513379746578407929300 0.0753186114733467041877797086495323 1.0783060456405103132738246306025602 GT 1 -15393.2531860887008975058021485301305838 1.3686561626114854347068377624412759 0.0790095388501665517184708337818489 1.0823055998381918831800359558453460 GT 1 -42204905027966424654079859.5370592682762901992632447148429872 0.3247151232041507393770319686520332 0.0700504457074763740559001750894481 1.0726249370022348327901373561953345 GT 1 -7566049610318338624724050323371769639594.2603311547009954108601381007981736 3.1046692937586426654224060598763243 0.0132721793946316289135327217989956 1.0133610419095640453670662177315121 GT 1 -3761680942338946293.9568781276719060908988407145011144 0.8682156869917705387476941450442480 0.0401720871642537086339684037104237 1.0410012680515586868006532804309398 GT 1 -2.8949007547543634231957695727109174 0.4474781484387471492715289510034515 0.0381931672239561132502744056158566 1.0389416460090536208852337437747275 GT 1 -394013714499214472405595488544508253963.6831616685091246652328550407870953 0.1063842416825711694695043790566161 0.0704129910145502909355605849215398 1.0730148678256744721618594150741980 GT 1 -265539757.4820125646391336135430197473845953 0.4376174095039102264576757970280101 0.0400981325922299261256535512957375 1.0409242211954631527422265029510772 GT 1 -5754691412076745954714364399024213.1754221206999888476063637528686640 0.8335194853496916392686941335921741 0.0720631451782358964226636981643794 1.0747915928841588806632133120390136 GT 1 -2793096384351262613677607.9620644849026260755719034523769837 1.1199341245034036319847310629988544 0.0975994150478511117819500427506513 1.1026967500203025969521024693376047 GT 1 -121636554988183299657485185.4051867291494856972115914268237718 1.0553755180338758373329880883444379 0.0267011403692188363904291695027758 1.0270640912027117258119243330050993 GT 1 -81970561981167085923846438.7754281701006625148148908150890356 0.7030527740428605257169203710999268 0.0346005464340524065432258333588712 1.0352133217741897842944383030049280 GT 1 -102326101598273260251.9729816948336681571645566418220817 0.7156920613640958827661490369140573 0.0393148886917284214819895690890388 1.0401085914399742041516651385878800 GT 1 -5365917655152769060779314980512.5203711294665276941490184325311456 0.3670516335049412886701235147921797 0.0508369608375823433496763229383137 1.0521746941141746328945680236528390 GT 1 -320161894930539223.1149100721792346255197698947927622 0.9264247872063395750864920556298559 0.0144242273376527232896032268902505 1.0145292678135020877879876005289506 GT 1 -82195825470.0468077689885388184606707792109734 0.6478152118128272437093099793530879 0.0815267688985180069147413457849741 1.0850425188981096067106598962448827 GT 1 -3089441554828155506866551219217180190690.7727190896534785160128517403398585 0.0623824815355247189163250515132844 0.0379270462453141787709271444213261 1.0386649956879655989080059543620312 GT 1 -45522775369006677690612170610.9169685627908028573775998158043171 0.4571344088264649486807971654880794 0.0716125647036265678526586182144526 1.0743061383912593338829481783347791 GT 1 -281.7541944874535480820806004753858975 1.0793545162834375524415383438474472 0.0252527010282542175354351927276237 1.0255770221191702705797664989578572 GT 1 -3780850.0916860830996255511004468941962346 1.0482579387537117760906241934167052 0.0544672717352672495031490105869176 1.0560067767130218538317489293720201 GT 1 -2003988558569894240604424828.4360545228771504015678289999799842 0.0540468787071807356668388269669025 0.0481453900631739630272684919761289 1.0493429765083528750612392922688524 GT 1 -6768887622283270271559037961439692096.6461587223348715618921286503156028 1.6943250923594940924537894637828727 0.0988314207026454682309069951730624 1.1040629364364821642967725437872991 GT 1 -1910325405728153.6456573802188187321790815149864596 0.2503290651034046168891745168368692 0.0289359862858153590637154080245972 1.0293628873085180647217339262391344 GT 1 -112692915247727868521278897320149628.7818687941539509166121091155177233 0.5142567198033861677263338417100698 0.0025347582468292661506042578134303 1.0025379761854620393242578121375812 GT 1 -692279805408696647326.7942054942035142636086657548788739 0.1283407789982183740591045730944787 0.0647266275192234970597280177312801 1.0669164154424835786206370344423433 GT 1 -4239286829963301868516442709857006948.3629529922989701367824060653425075 0.7029558446522254625673355733460060 0.0096997964370056457885219595596120 1.0097471458980049106586504528490680 GT 1 -54690.6053479653235089701631604447477926 0.6037455023528943631764287196248155 0.0476052855474189097373059523626586 1.0487757140986246343337609213493053 GT 1 -1565785978493938455.0814387020446121050419551968783988 0.4058446166431472620087161400772553 0.0370798804238699574603182957724914 1.0377848201820136604508220901717892 GT 1 -124737934.3811121332370820464496401991812465 0.3007740332243699059604117008551638 0.0643729651372468942206859150153379 1.0665383489405992758787611856873980 GT 1 -10601410287998.9009681497211622083187983596304658 0.5334321468404688953572614743491001 0.0980312198868627917764822997787880 1.1031753713664804100018821066338887 GT 1 -85106853.8575304794411997951605808058299513 0.1774241082124830209939281028678460 0.0461205071305564907195716198182987 1.0472179332595235919283165877322065 GT 1 -12362563.3194387441543413262487509612971180 1.9696670246747629386259055932081291 0.0356251667169958839625370767780398 1.0362752287404191359644062651670693 GT 1 -195016400702212551.7504948742710005968301262936083655 3.1674490848074982265553400010292942 0.0085696838395984665220603018603778 1.0086066147221816810694237006551841 GT 1 -45425632565036095734998771160040017721.6964770979038775619932554447706005 0.3169181650858102757998166762514987 0.0357366508567613011885280221930174 1.0363908379209335849716837343966373 GT 1 -519225878370216417890628655118337.8203905866779064759525307245207334 0.2920623175085384991458346430436929 0.0036148119176283585518722589125912 1.0036213611377911779655561795020085 GT 1 -10675213165626292428951181239713.1569626685758447602635880043750467 0.3551576275129552946874439770954278 0.0103895272164941359172140189397192 1.0104438751147619679317750070526867 GT 1 -322650561629456674162175029.3196016436147506125935749108780703 3.2240857763201141919120885686647973 0.0854614413643704848012879047906780 1.0893356484144573151128372132603706 LT 1 -10415.1210035133349274434109266479905807 0.2861480605894597214037706314442970 0.0407015770234125650806735976836457 1.0415530710910078285705622358886799 GT 1 -571616515485489389.3886531353938718967751818787802606 1.0948819307621694791191975453523664 0.0842064473407194822449691754872052 1.0879643189026390347239985050612430 GT 1 -4189306384909699317930.5731155428245889448677753944108196 0.0569521479849043856907677175855274 0.0330501002592679282842962492177258 1.0336085948599282443691464886665350 GT 1 -19672638.4121382028090451883941288572925551 1.4072720400626873087416653469255392 0.0774931676521394191151672651991275 1.0806604967557373334299881710530678 GT 1 -2289888882591422.5604373287125473345017948191256053 1.9514183815161849220268879359861384 0.0082976591709235105816913098329321 1.0083322763722762445976367281041003 GT 1 -12103.4886989486232130758495555004276806 0.8380039227718014657197859888461336 0.0383738118076707352953238130941081 1.0391294815949840349117144721467239 GT 1 -802067077693741571697063660577044.1278798882178205879604192611403575 0.0260365329268605362272370457265752 0.0358397570392047477533863627400145 1.0364977710480368476605021543682293 GT 1 -9724315788.7904405130928542918851923879917418 0.3866864763676574670537498757819492 0.0693803878039668250621415656207200 1.0719046650074639835299038551270385 GT 1 -956238380822801330008.0857522649428450039542451100866013 0.7953945216350242752226163093260330 0.0311600816596271324379882130495315 1.0316558836899930335540750041127612 GT 1 -84789095914753769258342635091595177.5036564165413054317070941325288469 1.5602988355732644779598501206797061 0.0341291940170999133657945360456900 1.0347251949323032302319590809923518 GT 1 -4473691476.6567207961743749097498893225799365 1.2436445922466078346863193464060843 0.0167991590581283127333498840401070 1.0169418654195796291255590770045523 GT 1 -44988440.7120320721178528357012097142524473 0.0966088487787262322641852341040620 0.0690930304296135698273474358636064 1.0715959319714166971051399841007936 GT 1 -156822319723938.7215279062977387421093423839533984 0.4968370617076047203856764306965467 0.0961517323732808622066820244871274 1.1010937782232652126695458476778090 GT 1 -131263875998065474387656879784187371.1158766401780574748547578287783441 0.9283948807233709185781573732314421 0.0481860856607823819257298094714022 1.0493857314282306352770790748516068 GT 1 -546589165731.1997922874284591718479014243365343 0.3378017597315062100380827468679097 0.0999978498633656078026089280852496 1.1053581266199751742078109389070221 GT 1 -1109270562001878161735240684843797611820.7372601663913331139275875547779234 0.7123786870306642544576989208405250 0.0001454859352939563793218166887818 1.0001454965193992119729829790233571 GT 1 -5326835310275957.7230798906146732598955559821648661 2.7469200856245688331248795483690692 0.0552246713652331610308023263318068 1.0568081272312430491811846754057600 GT 1 -521206154197572509411219.7992075166005815196459321484543255 0.2500193186522580365821675128931002 0.0151114274489949218044661031379951 1.0152267685227863697182010176695003 GT 1 -107201253.2909924066219918935174365512813932 1.2394469086692623195573596718378266 0.0336957018734366642323122332303715 1.0342764859617606134075311886198200 GT 1 -52449915031823230179450188928915.5628098639798663776536381288293236 2.6585485823994988293223772761711304 0.0234473059794453542015715324487664 1.0237265679906825056196354407827141 GT 1 -95430963395113874798564.4412206588458659267052880851421898 0.2705371969757721635166419841538261 0.0964458852833183351758042712652827 1.1014192762036907843330980682512912 GT 1 -1358188777172440.5397753636394127218457211482314210 1.6156185423354942708715795587348956 0.0707422912865540358935265721967205 1.0733691742099713067008422940035090 GT 1 -9779.3877758636980744556857810188630106 0.4563126624267648143538901242625505 0.0074611727391891040520952201778922 1.0074891465201804345956869953073279 GT 1 -45798203479215366.8953587051045618417078395477945398 1.1103766323604027319079572926643435 0.0697583114549297898649333955667754 1.0723108464418442671573338413042927 GT 1 -20505.7077989284687198083799379620885207 0.6447712494613093627172072526562869 0.0886097465398867617014927918512302 1.0927840942405730415886922264308145 GT 1 -1290214951915315543830546045116386.7240815756391862739662935361368007 4.6088719480351916563708785127643567 0.0310425259070951787992588342592456 1.0315345544394375364257525614026665 LT 1 -10626658511181340702668194227167263296.3955734306531829391792049937243105 0.1478834842075275237507003854125884 0.0595018079670516923677169371044165 1.0613455525895787840979475202565602 GT 1 -8403278927262777625406871.1976537614876560223597472820097464 1.2909848030488174279405591446473717 0.0219339559134543938433867801792893 1.0221780814865058423505346376114099 GT 1 -46723949764052767652203865373.2001273320968169389120187519628782 0.7800118997158228333780942842181619 0.0369722991579408804109951608255580 1.0376731024450112014355596743773801 GT 1 -3.9734500847274861191427564471656173 0.2380697967858926201015220298278150 0.0870714758596237835516745841269007 1.0910976882640343195350310683139155 GT 1 -795015652155093672846554160187519931668808.0307141338630503674469896898111086 0.4302553251070366020370535951208134 0.0783039441834747897919980722435291 1.0815397672403180937355612368326732 GT 1 -810480895147775872729.3177010202691397451407178169673597 0.2554224904505707257215353884174965 0.0241121786019552409075877052989721 1.0244076362669855690597961513116727 GT 1 -16008349344409081400800.9394781874473284656772009677773933 0.1735904238794930561903866828903086 0.0493640263308263913302601694680044 1.0506240723989954523968883214564018 GT 1 -2.7385331440506321000338129070575238 0.4499554205486725766327405343558400 0.0442016769652345529289103150130462 1.0452083473544065642987902071120490 GT 1 -26074577571510431732934724136523.6641126690825423576962406660443905 1.2810834262117234565373444056803314 0.0976177304606654306142160945330435 1.1027170465482415307955034747744675 GT 1 -843243770.3199704743238382965015379095864185 0.9067443250873992014328416695039706 0.0047032591624553405983748261329595 1.0047143542883342986225657057791698 GT 1 -10628906051456932499949473053709121.2582112829509762930524116445025202 0.3149743114066219053535829824186780 0.0666193515580040836924759957168857 1.0689421780126059957088769084272851 GT 1 -84747139121661049297566.6217231273189525333757597903576166 2.2785354749095727155172457123615708 0.0029391128120956146233798910850601 1.0029434404859179354716360006763290 GT 1 -263917261986772177949625.9756145176995499783621064509912697 1.1313270406850638975845835365113398 0.0912176979542959936713196488844020 1.0956497051862702273027917196178823 GT 1 -23483752043743430631652.9500422659103622279182466467183773 0.1940189001338280341630729915717631 0.0283060970289055893949846541539259 1.0287144387565172142339669948513949 GT 1 -6901334061473867955.2936641368505266012085882324346280 3.7751227308172154021614696862044816 0.0379998881321414977914654036863354 1.0387407120296821237183809216545496 LT 1 -8609459534137832559764374669044759364.6027597749113708403448523915520555 1.8107061706214937773345135108954114 0.0642005534813072190836824338174205 1.0663540920027577264230353556944001 GT 1 -20627150297565260272918201219553683874318.9630484208478915896275452278828542 0.0936070751923230789651435259562249 0.0440787789342884002394536805871093 1.0450797740691726329821834127165731 GT 1 -2885533868.3546358698824817392076523814013524 1.4345772159933535253540692927694885 0.0908227471086064124981918078294958 1.0952152061339337280176364113788453 GT 1 -81403996.2124624917631076215027149027615054 0.0157030870382304056297108852408010 0.0277502430939792474616916856501913 1.0281425559786893718359516047728611 GT 1 -1663202135370004218843104374879.6942601416427135408519629979606817 3.0629159047274272229888960817861512 0.0706266784228741008552478121662570 1.0732447677388160587109209854085479 LT 1 -393592450509895848157601032372824826819848.6549507979811699387077178360953773 1.2339178820761460671629078360901279 0.0985399595339772775242048610946392 1.1037395629273604673125587517848360 GT 1 -53470445024446150278786731528.0795199946364688789799188600327149 0.8142375720891602163206797665985333 0.0434623728684322869714595562149650 1.0444351525257787903883131884670064 GT 1 -122778427.3604281416243557445172278925146795 0.2884211616838527938476800181749024 0.0731247248216723468125918942532343 1.0759362692017012067863137423496339 GT 1 -43.6793234951016493693528020620202149 2.1339682587331040462864379299777162 0.0308116805370957989671202002240958 1.0312963418427809399533114795546511 GT 1 -13235367123790713418586.0883541668957225478092874385212311 0.4057860183188709178179726784302749 0.0525304780639646108258800870260464 1.0539605093650451948946780482771701 GT 1 -580944523223669814214645919561921266823037.2078742391197415602954729912840209 1.1568091772127767837242405673364268 0.0273582110696916200596522839924370 1.0277394157311661752918454660480617 GT 1 -35292548827574620044.8584405410394580108753115759838898 0.9118033442224517695654360319088051 0.0311307307496519315552284168488020 1.0316255892472919185254124009719744 GT 1 -4570039256935246210.5472381522505322135711421433776407 0.8430059395954599498299635891913279 0.0040713420647652350985037689985736 1.0040796525420695573652247806594559 GT 1 -4651923069226192606093722721029200877658320.3605209248643765064721673103412257 1.0928469623976788788308122493650880 0.0179971726127111836035476986079822 1.0181610914186910224427555633598680 GT 1 -1.5601677859376538154548343988231640 0.0111289065002399881965020119134198 0.0306941312982911740537619574483929 1.0311750629246738873731270828536675 GT 1 -47943279851913568.5589147451128518799218973005579344 0.8317283190164165812912301712689810 0.0206429000204922653972396614963102 1.0208589430221501273122469515509165 GT 1 -3557269.4458817413563167955047439022883299 1.0178396992353584789265572807119462 0.0725417732975822618949363905742666 1.0753075241105908802172658083575069 GT 1 -12952037115137196.0788941930477730540942842055236018 0.1109464803722145228141843177248621 0.0874762264995011053824093087468016 1.0915411407136362678380234338842190 GT 1 -2154960698946976073457048791.0829188791879927948338769630821128 0.5939527203878064711912354760176497 0.0653309166247440144698871588240073 1.0675627338622443235158185484291589 GT 1 -30838204142.2234072324519048259729048501648366 0.1539061085507593590614055507560513 0.0206361389724597728646641526450996 1.0208520394885002466372885187383558 GT 1 -219033920384319304092.9056045142074857207023765559460481 0.3548026588462734356244936513500837 0.0969274015985210734014525622202336 1.1019523318959466585549122270246191 GT 1 -57019041099613.4103975783977947802266831784033477 1.3563518947133871538919396240703944 0.0799738515671210087630743881303799 1.0833531871333033284892695713549764 GT 1 -7583170801084318595228770103751077068041074.2521325276059410312747679995978153 0.8256817727198080533944410654049929 0.0442408160322948224858786091957309 1.0452492972781440020522327664572524 GT 1 -58671686254559414146238918750520039251.7142239015908295533216254095240712 2.6737028435476844239415988798492105 0.0491891204473259335607648658512970 1.0504401010366642800884828538684204 GT 1 -80652642423499.6750268024291421063975019097064482 0.2690215935692575540192494184031256 0.0452107388545397788257193271206518 1.0462646318100169146727033818956112 GT 1 -4953413294926137436.5693981971535525926691318970711306 0.6426917212018932814517078151023271 0.0955479024477451416393126224539228 1.1004259356904579049297623632332268 GT 1 -219663982766675117461.9641152340543543091407963421831588 0.4563713486063770122113036279112874 0.0787685894193698760075560662168741 1.0820440141563930901407226110081570 GT 1 -26190725.3618476566285444441780838758304710 0.8246085704604494678235640513199387 0.0350539759510198923298918314113122 1.0356831128354947178557622030189619 GT 1 -65633207818669085008749323761121269383.2807581547225006924934825995483403 2.0598511213370716070677818379284720 0.0308697066797104531895002895546763 1.0313562144996798691227673050659954 GT 1 -624448481.7409399011955765575870599601834508 1.1718474257526484088270317464974776 0.0949254957944388763295056454300831 1.0997380135817172828725823417713143 GT 1 -186.4827486351092501745007530125653333 0.6764324709392098072753130303185728 0.0330875251349460668371022387902086 1.0336472996573060201299395484577156 GT 1 -2022048.7198856961076180959857125880188547 1.5797168542865823420963187352202932 0.0708074081261569465816223712240842 1.0734392507028524783200767496626302 GT 1 -745606869286764809953483875.3313137866812498938824589351186457 0.0455790502865098696071291587806787 0.0981262687108610225909942658682200 1.1032807562030006546554306756261771 GT 1 -19022521175706899255855192289070.6776566630756902407402425394490128 1.9119393789855136685434481664929341 0.0413901845188951732398535222790237 1.0422711529170976003674219615048338 GT 1 -19926226883639085955482648879044589501500023.8986514724628537513642401374692695 0.2406378392776589967845420481465398 0.0334762793447032926107190838055563 1.0340494377944702009173172389221277 GT 1 -112922124463106041550017522.1105147651680613684754458732638709 0.7691842070419636007571429140826985 0.0643902057465298680388810027152333 1.0665567759072078844988654081893115 GT 1 -32947642822744584713337843929.6699179178355993550617504662265193 0.2496332527226010103470223431870893 0.0339006498220726272686951338901957 1.0344886030829265075630958982763643 GT 1 -9272120759.3284689550088623247988777260796299 0.5118917011490931079002859878412919 0.0420183363575916380516152821728918 1.0429266414424613647084812144308430 GT 1 -21461160527991230640532274167626538391.2851542180981006163083218869936020 0.6401436189200966149592742173839693 0.0664051872439336546965340299077524 1.0687127541991056508043842048421264 GT 1 -920515179.4232556926259764952096692817425389 1.6208155183793393433902895238093637 0.0220565319805230985206596188460896 1.0223034142790822783037827505507578 GT 1 -3775266191810631.1967677338018347134684878098343744 0.5551129021425076211795553104407386 0.0624878890830269068726551636990368 1.0645256029095738722669929026660762 GT 1 -31893434949366319.4048702198877966919959527693642639 0.4923738048721503988007099071340731 0.0239132491520826579048011083246561 1.0242038124535099776093783775314772 GT 1 -3449518187077752085137003467.0141507741782563139581600938692751 0.3638001668071072404627265373130537 0.0294047294723615785130761405156837 1.0298457147535354976725925028111714 GT 1 -122482206966.4439066758409219785898026274625137 0.4751888086973748730772733381709311 0.0813543824193356990229864446314973 1.0848548484272394980351057695891062 GT 1 -40128003379887535716607569624012697.4583378451127040710117468082611617 0.3847112492961106360372598956275192 0.0740483954109877712377845824485413 1.0769333085645464360507585536046713 GT 1 -435035081175595422833376537520.4601692977162631509822667015398060 0.2540517466569909416955467023135387 0.0776054706255130796615921162733846 1.0807822409051454374831032603748726 GT 1 -18628599164243817673320040298303.6521331204843219635185788876879650 1.2249248753926067382152461132119208 0.0577182888704482897270210307624372 1.0594509927134280852807647704187149 GT 1 -1229257697788744427333221045876172616612.1071191041632731978685692477446319 1.9398486292928781879722343531155872 0.0027300634569597894296277521360647 1.0027337968767293738405307291360551 GT 1 -16429006641543970350644721987.1115448393988759933340250287573102 2.3192731658664133034445750043673946 0.0781122588264419476421413109656325 1.0813318186154315608536234708378845 GT 1 -872075775184310149514723210799795512.1443148832249522711098123744527276 0.6228063205723309639644952964025523 0.0491927219412819144757130781315300 1.0504438888569914787198732197340985 GT 1 -2928151720239862139818507.1016660265607323461150975275596846 0.9444027658815251561091428814355149 0.0965921297351204909043976443391794 1.1015811439721739854382499834980269 GT 1 -6329819234526666631931.5568639238752557973355974353467292 0.5866035614824183181692231772913529 0.0976028694263929472465227885357582 1.1027005780155533925651630702891038 GT 1 -8070234698722135411767055.5014950701990072877357129450461050 0.4987245332006967209403012987608250 0.0114671565577984387526127213718579 1.0115334113875573443952947239519163 GT 1 -39363783610810702811472423251.8073999033566838638428739410753768 3.2469758709541297536413905411958192 0.0767394613153817261460301554250714 1.0798438105465449876994654614925031 LT 1 -166938185418515925890918139788964304381.3035059557018135550364946106184270 1.2481397363496934124070461423868426 0.0017119352643426270592895587947972 1.0017134023000698186258163121429881 GT 1 -61769077183832844183786234725251634750102.9194688069896717527282231042080351 0.2742916233159196602979931430341323 0.0944670976402462403146059806024454 1.0992316661953932893555538523484875 GT 1 -945528256156705524626413948512966909474230.0755745304451086514408084903512311 2.1614129101774439904584967728378994 0.0137750453287495700938244952947145 1.0138708016476670402052598924411228 GT 1 -8814317637.4857987077475765965843998503224190 0.1661247215316647226236745888286287 0.0638456722196994230293455144579739 1.0659749359886172086659086835004099 GT 1 -133058919742221.1835519690434593162764492922021316 0.2762417722876201106387332818850843 0.0893128481389123508040101958351277 1.0935558524895586850518152974101848 GT 1 -169613316598530546353349288320430.6466650339479836607516729540380790 0.2184787686707565452949393901655829 0.0218362370823079991088559157166035 1.0220781762188549837807488256740307 GT 1 -92123098.4478713491606930308325672771953432 0.9030888609019570696825567685563511 0.0310278996999125912954296651500716 1.0315194597658476083603785361064348 GT 1 -358469815322382009861563.5661241556296420403882718890582618 1.6766806560651426799139281470487241 0.0944929757622657580088045097258150 1.0992602443859027584229513186024009 GT 1 -6.7370154401754498975126591906384408 0.1571732592376074972640426518842489 0.0011811878832768247739660487120891 1.0011818860355047418239850454192880 GT 1 -25485.3085889073869381073032912577325372 1.1782450198472652821406582791995551 0.0914730206858837512638860453841114 1.0959306950385606786612776888008194 GT 1 -458538.5423375733345656686625837619524537 1.4475541609288750448421659886553371 0.0982298704936597659674560371016938 1.1033956367347559553190403454963175 GT 1 -508593560559023578657.9258069383422040678113449436073503 0.0195444830252854731770666580418213 0.0384413686691208873996483039800575 1.0391997367891724830798048960862466 GT 1 -1073105085092780.3474595363700597496828899678043177 0.3568059047237299954204681706396579 0.0715820856979208369811960282789192 1.0742733088803845837238761045419799 GT 1 -11436730941356926443243214281198688411382443.0186083550745451336484585719452747 0.4320303476509090097082061170820466 0.0117077847077274895269715542036314 1.0117768604980937599414741440995056 GT 1 -5596611923670.1395458898290030426795819256188863 0.1268668565472577391373289714602280 0.0788739562798474845303585328258854 1.0821583968027644777507820727859935 GT 1 -3544.1729521193409334686219337405739960 0.1168489269585574023763873424540054 0.0323076685048556898710901932226378 1.0328410815917166559063487216379633 GT 1 -23935.1638681381638619905135342238013212 0.2513540086864968446343807140174057 0.0654082997583283143591677225882679 1.0676455293012828219252741743701855 GT 1 -690561174898532154156311230533787.5970515966912924356400180412925528 2.3224730000552102374184084047832382 0.0316765166194724379984844341919458 1.0321890704842729792539112886690744 GT 1 -16558448573097330.1669755743418022971871071712252152 1.4241746783346937365211969329148251 0.0713184879767359061224240568971797 1.0739894277707158798311009475627094 GT 1 -26276636960828744857743505946159.3389729429649355143992418854799462 0.6410046992231383913056994370925599 0.0923008386357459383881940721588974 1.0968422753628895803689104312629357 GT 1 -1649.0164865185852626380587303354331887 0.6234546029432981529752764016612871 0.0051707972942327349266181044664324 1.0051842121301413955511275480807808 GT 1 -2769706888.5415854538281775171169081934872492 0.5255054505852187142605093400311968 0.0587566528157531155923156749581022 1.0605535679575577473102150435658983 GT 1 -358660880213089617899837001786683316097969.1015277972562680482477738966097268 0.1785458448968810907743246974830554 0.0417787882078273146942524589311284 1.0426766176541838530011137523045359 GT 1 -29558486955.2119774908083009571375526103140022 1.0299390131481561451021789786708721 0.0579421282142189706386693436704538 1.0596885712760746633808091448077191 GT 1 -36247430597610819.7270679160783341898859991656893962 1.5889017104914514556525890613364047 0.0499638872162818364176747023473454 1.0512552816534982277594383462460814 GT 1 -5399356959019.3471356814884213722042925340632139 3.7914629944590743241199049689729662 0.0312545206848771062992833751181321 1.0317533648388900378701083826941504 LT 1 -263979945640.0979244804676198952932322129133951 1.2821505602960417179898020456897115 0.0055174150155315117667137739852836 1.0055326921692698556745294085977171 GT 1 -968406694959877.9826838863377393938527503522119311 0.5397690709119012833073710788332530 0.0768756306167710005075765731323497 1.0799913088293149015826602752023382 GT 1 -5028366812673116408115490458068740739623408.5247571666397827563418513188396785 1.2853788245517920119261272933305434 0.0094629894270287545084416526131722 1.0095080479959510758436690074902227 GT 1 -16377712.5776343274585528897759344920510505 4.7049352681929506548296791327904560 0.0284899137222383477595066659666244 1.0289036280489415113823277424132528 LT 1 -1248532915566167849080508794271.2465265129235388157753987666927271 1.7568092983759639733744526661131463 0.0556024043042281236294967142207014 1.0572080196277133709034902510699666 GT 1 -208939.7844771782446809575343454337092986 1.4120031252344826731704418010098672 0.0672108116961038820604537585094782 1.0695760540363822102276479219035438 GT 1 -616066724743473051981912.5302054637708265685728492574630854 0.8788485088908781752825049644005863 0.0439723525181996953580175735735147 1.0449684463888675886452524489544494 GT 1 -2730839763042168997938108702431567.7423517889708727904437076705176906 0.5893864391594501976738130650869185 0.0868511543923137052780410834172061 1.0908563825318357360412881490315059 GT 1 -477832133415439253375627041123734257.3125525099169602116331866343926991 0.1546709070134677781103700151979702 0.0434798062654578126754116933623118 1.0444533782132994274372952131760301 GT 1 -4141329870456547864340164777935408249.8699687095002973253511338252176700 2.2980672123320113297637679567894035 0.0690667700015469961254346005641740 1.0715677228608019446326346732636221 GT 1 -3111310994486082069145335300207.1829253804424196540883095759435366 0.1799035822725595902185875902457641 0.0095353449770309633448228907307838 1.0095810974550110890288938762742637 GT 1 -3239812277254340.1460873325433023098422749930965012 0.3648901579924374686920138580483310 0.0243904300240729998830692963062285 1.0246928033650645233850454381005049 GT 1 -26979763992331528775039.5384949484409756831980380508614745 0.4436721895560440581181793446340107 0.0820283926228527795367769407363111 1.0855888176230152913886118003523144 GT 1 -218968121727481256393419490788793801190845.1692059492319983996083314838163634 1.5236558589673860945887020491436045 0.0594964099526071423844672949353532 1.0613398130793922549474711193015887 GT 1 -760486401628984951434245619917382.7330674392056213577144919986529942 0.6015404017357407218950852643977974 0.0502209442564503431758744368053929 1.0515258943383485056883907999027689 GT 1 -1652797696714658.7661231629782733494383819176428070 1.0651915899741550080506671898566591 0.0955030140452622565228015667407814 1.1003763064301306059720923638718619 GT 1 -2160674907046930711056817120.9375677227466769342808383134155553 1.0766632663482703882562083203325729 0.0311151270627813135195468106361524 1.0316094843281680300825961687173985 GT 1 -2561870568585378238939.5311374210758034181526304949080345 1.4637792850570462966867882244574406 0.0603702920546844596126666344031016 1.0622694090457427671692914296898135 GT 1 -46191290352.6944626021558324775334088417392955 0.3303062415091681339489964013079994 0.0157999121018622729977924493281387 1.0159260612410397476079121075724366 GT 1 -185527180662721398792746.2384336408126738239608247568606501 1.3784470043031111972233133501581037 0.0339449997692008423997840023346101 1.0345345103336869059184157831702646 GT 1 -5276.3887852662096503680098947273133033 0.1524516450076123666683311507609788 0.0775741594734486281077181780750428 1.0807482959719927991878003259485458 GT 1 -1975708.5589651500182029555864840239884363 1.6481508582390677020146183180090096 0.0408826387019895760548662434204378 1.0417418327563348180610682200073061 GT 1 -217.0408975679489944452503438585050253 0.8415554536135028085915992951786418 0.0354872450378912472919245409572357 1.0361322222944445750722195911478774 GT 1 -39473.2382673570555167002873711665187532 1.1816196150615050967112002053904208 0.0609679523391754285558123185160929 1.0629056707920310502925934234189432 GT 1 -2067179403541152135.6576285094135741012257950913325612 1.0417258363390793524705813102830035 0.0671183326686806402055154540626243 1.0694769164771287616416385469238309 GT 1 -34428640531.4692097853358775562701801559729139 0.1499044560798636079940891693753942 0.0435676331192688943733636405558850 1.0445452015608105053001988929481496 GT 1 -3303519058562551820926.5694624725321948643978981428928026 2.3724041711278230518227686700765859 0.0257688622763435172277165235627212 1.0261066957681328298655356038440108 GT 1 -654621427961873352972275962586334812.3000054732031044107523605888910135 1.2735546316831239588835453844431679 0.0118082891641334759156039815875233 1.0118785607499035451896926391932107 GT 1 -850439638138815.1434312695632794532078244311836116 0.5686093675322403536883800303987118 0.0902699299972317233473893859146779 1.0946073498441292121212818214569919 GT 1 -43742468.5143179898234066027347180417127677 2.3040119302348853321408840945626711 0.0126712610180276084924841431356700 1.0127522261264024557183813943407346 GT 1 -46789309456173292086784245170601132425845.7288326796835283264585814966551936 0.3361616656164192646227423525565822 0.0061207667306374663810943030263464 1.0061395754116306953053631886488751 GT 1 -1315900611804025790958442051663.0450915722464578331494524038357626 0.6577246702122160741265786483132750 0.0519866561186647837048722054186626 1.0533867010019854652780558778664940 GT 1 -4167096812288279650915.0551076102675413770867660792278052 0.2493885938434411985326175142610583 0.0673386289638913256516312985241868 1.0697130903864988149992422408676798 GT 1 -36744771577499946372990601723491664.4183898959106095840284105605543343 0.2640472587757024617949291120241432 0.0085827076602538350940151895325978 1.0086197512038757102473990260812768 GT 1 -32451762554.5586677385076335021745435679893520 0.2746171310231908038297161801375193 0.0891720503624067542245242121302587 1.0934012583534242467308469722465651 GT 1 -98820040805322413018.6922988121539460653578473277318477 0.3505465419827168345102741123641568 0.0298276372203145391591902111739769 1.0302815296830394552566468732667629 GT 1 -5719108120838214968.0712003120298360744304222177112494 0.7819158587774184109024079137062004 0.0307239440200090942467400985735308 1.0312058201718561703398155159448758 GT 1 -635876301786984310942651008533.8965716142723387055227883065497506 2.1177718163072491476519508941289810 0.0156595525779011502050053233287186 1.0157834586157134203905192667884175 GT 1 -49786339923237424142799544030187450.0531656031059369500632142890894248 1.5739459113156468831272304919725872 0.0882839870385380868878542584237311 1.0924267266961621289462661942114350 GT 1 -1670865857323305525265902673085.7063945987409877908736421466789676 5.1869823997983285053398109410967445 0.0882769601492951580666925562105434 1.0924190194034701944288980898570133 LT 1 -11104018.1391344520906229271764030796385779 0.3023697727580555865818084373996967 0.0147118490437265666281172737478687 1.0148211415493484817357193577918254 GT 1 -113679310811331473470763466647715437313328.1945600519497964675394779806443582 0.0380595719105846467284413815788036 0.0984767645828888795776749189849905 1.1036694624977451980106720465578847 GT 1 -93212526895943493066372091966446080828396.4230804602106711702078555964599580 1.2043589318641720106960816751190693 0.0672225866770608641918817842394853 1.0695886775266900559258868475169766 GT 1 -2812600684017333028296649.6633145636156379311969391263653659 0.2219517000676135373568364934617693 0.0543755202961605396497549289043645 1.0559097446537175350751355820149224 GT 1 -423935847597.1831203026127524492635197203139467 1.0124476267391620792506040060281692 0.0102502338389605589856791511198850 1.0103031292565570001321738350526573 GT 1 -210.4537748563949997525072100658850555 2.6891121517983212697413300450399571 0.0132644290428524234711414277438989 1.0133531873409793108470467479538832 GT 1 -5.7371573543152125344909392321655341 1.2535846916492053803917381449715951 0.0349014406978449929470380055589197 1.0355250488666016949848014174309704 GT 1 -3627174992941793240659923512126977302.7357979286363755341019199337732072 0.0890985346176102172223815449518205 0.0928536785942763068927876110698776 1.0974515172855535850920583075951677 GT 1 -26954.8073010933350712626908462238118614 2.5727243683709874247938572771628080 0.0269785645216598975300805582365463 1.0273491667424540861874329109266219 GT 1 -4342943.1813451612257169861285527799777808 0.7875455907713388288142217745862311 0.0092532910799070059906192821291941 1.0092963687237280970579802472202129 GT 1 -7442522718107651098649512982.6203152659008744203974039099047839 0.0702432506587725441731230128505989 0.0314033588020930933500582008865104 1.0319070167065006985673586715982402 GT 1 -10000980971.7969173029383015247955851485321428 0.6116708383460819336821164797718395 0.0656525535482351757830948684486838 1.0679069115851625645468624616366647 GT 1 -412408697215205976407429801972836561.3957056731195378391576159221120167 0.1997804177868771571388192731443137 0.0857933947386890920446547828476159 1.0896986879286749507571960299776148 GT 1 -6332227755253966050069529540894848649.0825082405983849925183616168669501 0.0819403977183144593820591644988083 0.0032792560036312295151284702294375 1.0032846445471004405332980410168820 GT 1 -419801229875914141781142058.5990379630007330211414069306956622 0.6938133655863148102358316153101867 0.0458020790196716398911248906356860 1.0468841647116338110398339822357633 GT 1 -1755659070660734033602218497586720453619.0967323344964361382922815965732829 1.1801442831203865585563477970741760 0.0522904690639351144995919259735241 1.0537072256439647310890013248951620 GT 1 -47195445098978.1215494201097901406848267070836660 1.9930111268744280157208336838354663 0.0447465696741064044025816943552712 1.0457786016373476434438884409223430 GT 1 -86293337126518424672.1869050294204892424678234933556225 0.3028085304171022754540496732777478 0.0956381600341921230655517432976143 1.1005257332259034106570771670694848 GT 1 -3739044218.6086052832943233865264466540078031 0.0516894364913982197251387483280863 0.0230866506828328138753979067902731 1.0233573214384424112956953514228949 GT 1 -144833547650459845318261.1046747651186500917817584847154686 0.9450657669431587552648522469539903 0.0148775450763663023024506921090603 1.0149893258176790055192370248005095 GT 1 -28737628583988157402194189389019811201185.5773784388626359684357523386113764 1.4638857498429015610903142859176710 0.0170048169302151980280396112453798 1.0171510590811732260015480129547177 GT 1 -31764645540392886921284580875971913346.7010569221282579876911224073785211 1.1696965025451394768214658213111145 0.0961693508094430604937489946753019 1.1011132711055451879155420860899015 GT 1 -619439461296913701437599907020303396.9211120630117069870346894177290289 0.2720689058882497531533319744477627 0.0716004879968510618180989493754572 1.0742931302141033704865171882412461 GT 1 -22461991490255139245813749734.5634743580475697021756101946255120 0.3879634433274329218838013809653841 0.0290629704819224732583797533460579 1.0294936639594685104142656394443147 GT 1 -214017820001133809870378498065.9311679644389188682193245256360371 0.4863123341071535733215322258290383 0.0565346903645240123761077681530922 1.0581956825914259773997607077245574 GT 1 -63773939904100.1790601886112290638377718556151503 1.0302223710069483235329002396539200 0.0414730981839579373643045670225769 1.0423576503112233091301332353552617 GT 1 -3397481587431789285071121.4028849967011118636949171334352976 4.2788369935107019534197998315411570 0.0786249578431843516783719927433797 1.0818881137184422157364493154268593 LT 1 -2902105582936112054384751.2020026012497154063030683006106454 1.1376967946707772126360415697943126 0.0422014866926518445621407456663282 1.0431178432701259375722583998607816 GT 1 -100395505785508172438831970886.3450310666227473230939103153942194 3.0653293987209257114646986729475879 0.0325734626409654185813247328207907 1.0331157873393161143236308089680739 GT 1 -998198894927637107077345428027435117.5947413833789395225992627592727088 0.8079923447942908312829875260977056 0.0190376702748744771621625397513436 1.0192212200265189927942530115673424 GT 1 -9379.6254115767670997888570944870720000 0.1615098309929087328609249362053049 0.0395770917922193516984214111855948 1.0403815621417311104458423848433423 GT 1 -75525366063074600991991231708781.5684358424094825643581350621837365 0.4192897937785126224625674136219711 0.0772369025482347163449353493881042 1.0803827432396649857804526555969658 GT 1 -7787471278252056.1757565404220657124243015036125374 0.4016392741212664825928897566340652 0.0587911744345054180128670168789661 1.0605902452439779869633513163112979 GT 1 -1.5493898011461853961269711318902389 0.4742412983642534364771544900419111 0.0641413152880453234871314955032702 1.0662907917746944682213495731508123 GT 1 -179189498129326436802670971165493.0690120473868326429735630422644238 2.9606984144988804306685741181281107 0.0070031657866760542714405769608480 1.0070278030454463255636635734118901 GT 1 -1630341138394.3118383132231656761703710933072579 0.6364260646640035234796484686968737 0.0393524038522914714216137731076402 1.0401476426260829244609398555223773 GT 1 -1392864486.5763460052915143344933106544318944 1.3269756530403761451957546816092307 0.0062555638252038019320700671174529 1.0062752118470839817109634031638058 GT 1 -4154906009534496472460293256502667.5071997128451631642529638119506153 1.5774986926238517016341558032274026 0.0611852251745391573323421627291664 1.0631370771386313738746929398668170 GT 1 -11043561754223680230712853789478258245583.1240043089642202405466763789083728 0.9363079830730311518283452262405609 0.0186282273865700815700134132545055 1.0188039181065674586492998544931342 GT 1 -8228713183235819641850730794464531623104749.9105222028404439593262576959886766 0.3857701272526495022038947513939709 0.0305988651571481465023844103681564 1.0310767849063394724936368878088412 GT 1 -881731189811769595234886311.1962732987985578817220707465583265 0.8413293419310174866218420992840529 0.0371082979367432676785982832642923 1.0378143324246492693658688851855439 GT 1 -26971719839898615167823720.4195559285260973283361001637947565 0.3291981835207731535200775482862484 0.0285630633242345028364053107245545 1.0289789256264529351048881651301799 GT 1 -2397.3842334559275479807220599344356692 0.4071986760778918500613095991045967 0.0444838482603968884562188364921786 1.0455036114785854403601727936798890 GT 1 -877683497.6662648015080462085059682702195210 1.2876418546854982220334555600375657 0.0112430526826268406976550673432150 1.0113067335609904052559367384070235 GT 1 -10156144652483362922797.1579067801198213854705079173474249 0.2457999558733550019871787021392474 0.0091478545894455395263249541384095 1.0091899531489203688347865235201277 GT 1 -800271075616220940334705580637955.7944244545904103789086958924978565 1.2045507599144345932805384289912861 0.0468283063633251926798247714170531 1.0479602303412978096457310167086540 GT 1 -92945556728690150583611934205210348.3996026307660408888165358317680398 0.1421825668510571502151531888965917 0.0775839409901711901615214986680864 1.0807589001508388150630546512138467 GT 1 -170496521797354.9777220933034654025975952677797533 0.7853306659249767484464446502228600 0.0590649261832945118776042208226124 1.0608811387838495507808225047782055 GT 1 -2095240418125906881163926177002147622.3264828824898720354512726238801309 1.9005291074647573049015668566905266 0.0452349530386904379629148499360714 1.0462899928945895385036898051773004 GT 1 -1392260389501266827.6693045314618259236981031251257732 2.1415863426111027885445720236570092 0.0473025642931586821735084947931191 1.0484579118791543006569503869131655 GT 1 -6549676644279571963813.1568122264187973077045802977249824 1.0596512331317404222830960423741253 0.0424881198894425998300683628693513 1.0434171505781378637440298610553987 GT 1 -121.7230892212918100131885098497244267 0.0581116414098187147446306528773052 0.0666148636745707752909010493175437 1.0689373698213803608551254208017419 GT 1 -1248948389642173553041727963175.6915765016234589313453021519910570 0.0716512397005298447712797238958751 0.0816777302337493000954148061576939 1.0852068935772721797979619530093798 GT 1 -141528.0394218122476279147809882204177551 0.7254436095199935756622885719839379 0.0596711678064898003262711405611290 1.0615256434088985404547654284969577 GT 1 -935966343376846781.9249445196283134137764363802176568 0.3930495538165966683143025195937199 0.0849490476110470499444790881632649 1.0887755295860183272218830522914085 GT 1 -846952495360230980030150271631259090.6522482654626043082585573439739579 0.4937223308274745754067351362179613 0.0672516079705394851413076945236050 1.0696197907853731540500735725041845 GT 1 -15742982968465.3058714691674619241021788742629510 0.7955911532634946377615081986917988 0.0260306541541528081076425703520750 1.0263754482723980558649568905174698 GT 1 -861057393121174548439921972408160.9249566371241176095457570739375325 1.0763637109318183639530925712784864 0.0152096412472010050131770781381488 1.0153264942158692197864404945585757 GT 1 -14221299715.6796412471819976942579249824779554 0.3810462776702476802708053709291113 0.0993463604671816894100204125254538 1.1046345131138857482993612044067099 GT 1 -1487333908332329399175526.1435360193655257649564598600187380 0.3635489274759480662821417477274379 0.0087903186087252485263325190019851 1.0088291813710034725557277028489203 GT 1 -77043807856005974420999564614166530919667.1474734310621139640807965141357179 0.1554277184287953936601938683968620 0.0562938661612421457000277680263377 1.0579404601998177630785857600940356 GT 1 -5701.9162316892569555379853127522615340 2.5586246049982785785152227672271729 0.0632308296079721295896451243835278 1.0653183767277462039800417905210912 GT 1 -4491323205923120198173476089824377991458.5844048988304316599024679167952274 0.1101384604392410876092350517933399 0.0221546410743534763471714946974459 1.0224037411574865423155911554989241 GT 1 -633306594247.3475226737509106263666287500723651 1.3230341664467350448426585846562551 0.0418824116301818438841090567744110 1.0427847649425931537302934564175957 GT 1 -4.3319550440105769555510948106419659 0.0376233501417340745430982524922402 0.0017424779803290371919087482742714 1.0017439978609139153178245402198295 GT 1 -1300252065251082125037032037032.6327257465879873169177042534180081 0.3088667154006236645976688221344078 0.0212826681127386768976199230088288 1.0215124096162698902667313514999587 GT 1 -2450.9675021169454315674135660843683348 1.5453915395549095544020976212205239 0.0308862359181742111065246149175952 1.0313732703894178345626356164891525 GT 1 -173435206224027193086872614.3981378917025216955103562794766292 2.7225716859180692418082979289401441 0.0271544822031265464836936888474854 1.0275299783664449467954012955532609 GT 1 -484195722118315273132017.1301344810340697275089088162740723 1.0709180230643028910164720027644924 0.0680290018997442653254673843826627 1.0704535826988988703761681960471678 GT 1 -874882043284973073778541108132.9093690273254423244390874293616707 0.5240056277433501308604836223561951 0.0877214409939740937009561127444056 1.0918098980377374070348917221724752 GT 1 -51348749484824916531.8529638916635166338134344555901921 0.5783001176771602547880994815375224 0.0138090631305449431917515569866637 1.0139052951862200821631952646525326 GT 1 -44916528138179256349868215994.6399065086465440064124771255643006 0.5549688074713506818352432940225504 0.0204271119112379427609009929853695 1.0206386307992105703649778511627948 GT 1 -21021933355.3891286458058570525640386023796455 1.5736940684434911448293565994208038 0.0696134077375871786663805849178990 1.0721550886054937647456793459264186 GT 1 -72163634482281093039756254910613092731.7369378744689912444328896764156449 0.3525890312416986008609110192782234 0.0478674119658296000634948183250232 1.0490509807432388417992277507698258 GT 1 -7.1642767537670908732908233200902497 2.5086616066810876028971019607320806 0.0269599613368897057568064691333353 1.0273300479376085551273976786318256 GT 1 -3854164599644168945636926869115854499687306.5743447846968060475861016925758113 0.1779890036057011505750485850236780 0.0205079208831397566853687360628502 1.0207211282899016621966361794698232 GT 1 -12369207893717118842845954689751907077735.8205340030626025889499181898310620 2.7225766575669747099590503813585001 0.0056003578102832346581168419011424 1.0056160986110053746519561228703975 GT 1 -24.8759772187588028353042389595573858 0.1598118244564374859112246238436543 0.0793339075654476324115503804298910 1.0826578573945792403082495209930862 GT 1 -256549451927636211547.8486995802350908963180660947993010 0.7313329372744049658131935185031995 0.0648468475158219435171426667808891 1.0670449636587961636424940967365210 GT 1 -682558.1641179175591346699515344237170428 1.8053165350809305727770390329083541 0.0286167279118772376788824495577572 1.0290341696345338753110202598205926 GT 1 -12515503710.5032293714595477344441362513426709 1.0843917890049792923525559252540423 0.0826539733459762018169038146612083 1.0862705314972254414533445326791326 GT 1 -2992864595878756520725672374427610028.7212364640493015851527632582253406 0.3964983870259765582048679696316435 0.0396523504400565951946372287950403 1.0404599251170187153024697731375165 GT 1 -107212071529999126553197323.0111390279035709068422379340222943 0.4931928770920534671471522223984906 0.0230983393199657251358594268366267 1.0233692863758323307720621306818676 GT 1 -6282145072681758532906093986061658436560.1481853261911972491218283934731633 1.1595526673522962231639502541623304 0.0164008989427235814045389716992715 1.0165368825717123693407898918239714 GT 1 -17.6831789571814245777317133813938742 0.4196839754520495754598656299990844 0.0282793102034570787593014888600599 1.0286868719927912512954344230943845 GT 1 -30.2137953387124305728976559430178177 1.0327959422777014168845855669889646 0.0343501634618735857676373913750476 1.0349539985400651040195647207681301 GT 1 -4257204952982212411304274145791750.6808661200750769262334613624552559 0.9245483689125192995625091374440900 0.0119366325784890575610383896265305 1.0120084462246563127351904601549377 GT 1 -865734929981646214802200983049824080.9443374705568012631375272745755000 1.5915445055771383093110392604384254 0.0034266867281171681859389585296352 1.0034325712659076312242757672033994 GT 1 -8556653180588064208.6452124749729083231305957431059379 0.1269512152445341661720765011709554 0.0700743073081696171418359458007939 1.0726505963584021263382360910794849 GT 1 -29540427712418552743351590254.5512457871428820826511613377729004 1.4730085564239748411756134693921004 0.0909871903687442133780964403864582 1.0953960929003678445882248225941740 GT 1 -429988731599972468195519449843562821590992.0282830263646870742729446493288978 2.7256253553861858866263917117363195 0.0077745351462000397105139153569627 1.0078049144034093657338968454157499 GT 1 -5470.5863974975322922179501218978012252 0.3263512452999728224047866246888211 0.0503365967819017158272507658188540 1.0516476695730218582520877917583166 GT 1 -75545.4271585005541074020806575636921978 1.2709933081047842817084958552056531 0.0268165683610820748530087659397802 1.0271826928386128142932145365749559 GT 1 -2087905094926448293943970778123039010.2991017770549809397035193926890488 0.4351320868935262497527858884773860 0.0274885606695171642308554118733676 1.0278734407510225412722323976824023 GT 1 -15612004488385.8323970510933546877737263215939587 1.6856260860400089759542488294495232 0.0901983635322895174531340876534657 1.0945286851363644482681518817164137 GT 1 -4267981613.5524071485323308983549231701930324 0.0103169275629761279691430313440570 0.0851050482273441473251036634788851 1.0889460271032621202029867067607639 GT 1 -822032570882123409417495642936.3094207014823380693514803283633492 0.2560538061236212176459355718154695 0.0559320688701365346443674439367940 1.0575571544830488145041526961009367 GT 1 -5.3518440027692434239788672153326881 1.2132085200965235689250656028172802 0.0525222531349683786006534393236824 1.0539518284596377449148938429981405 GT 1 -442.9988448295235905003013532023970032 1.9943953653181449426602233974660301 0.0292469580379812381422999591508847 1.0296831767548542098851983283133956 GT 1 -13229918.2295752298385631545918914198162895 0.4387066779223941124473613088537821 0.0337176075779037087436276683725043 1.0342991557903122771384206102380454 GT 1 -890287656602501.1360857299393473784145232118967746 0.1423626940210345965291466284684850 0.0947454072410317778170456099860850 1.0995390568789795201328603660477314 GT 1 -137911.9007267073843691649912294076416482 0.1840986588317664588146363382769650 0.0543407992181537218834157203993325 1.0558730277102267499800039414709872 GT 1 -106401634313935255468346316414679870.2425247617738095326148362055179545 0.6358211356051144502722261203441273 0.0745837508598884534709990640654629 1.0775116436185381097256247043259993 GT 1 -1519970126377496.3556658513875064719429204923175142 1.5768041662504958685293551683625810 0.0431563718654531844473082905953082 1.0441152988586168168475734054985375 GT 1 -2868903.3607964494535754101870265283560561 0.8370346514700821759367645291808837 0.0223740271959399090541532630920683 1.0226281229921338770707141409549500 GT 1 -7550762816817713785774214086852135152.4778114368922204778782473571267851 2.6184559693700133244431405377153769 0.0456653930613198858880028682620356 1.0467409280032351470530484872721294 GT 1 -17302799586465.5434732902847814656719529739510258 2.0648613507341132464821817260035433 0.0462706689857449169862975600942900 1.0473753679008594052688924450808164 GT 1 -339563889908566043497232030430639527791598.5350568150773068895887267444738735 1.3984534629827438375371392757256044 0.0133423960755254327112713632066814 1.0134322055860061837422334746208062 GT 1 -2697202269764621028509421138618.3540149931404863254813105522232886 0.0306639475606891581720331503605585 0.0223918288113461921584689646693160 1.0226463321825384829772205345836220 GT 1 -30626549524147.6550062302277954500965206641926089 1.1473468915376625615923855037856511 0.0839159917809774724624100909504558 1.0876472064837972712007822349948463 GT 1 -65360357697953725252613625961046949059.9879613371953674645981141573424120 0.2395182151213216074321923846140280 0.0730189520056412477771561525703781 1.0758221580758024585780551902930018 GT 1 -152748319.4572675430498105611227611689156025 1.2189720124367754165962682099239027 0.0273408150656224959937241518112326 1.0277215305768344756249786801710636 GT 1 -37154261160922759696754607511565034.9796518364590158742120918484856754 0.6136749507970674499551661850099737 0.0143660871901461641833827099852658 1.0144702785056147423853055008460669 GT 1 -1560492726466866170434592945470436.0497312965341559310042752930923605 0.8750974397285471077754817922294918 0.0527014099819239638741722768641249 1.0541409345235061598769167519939554 GT 1 -23721.9836993005572961707234295182005336 0.0444928359930090274125213493404664 0.0888625748227603085579605842495503 1.0930615421909760956530117647609647 GT 1 -276989997788299530.0768253260320527723140560796332787 0.5957635016438832671455341823553612 0.0910937220947480172818023827537579 1.0955132947349886719883995017399288 GT 1 -6181065666254.2975178375167333246473488038339215 0.7535367889344957607682866007924864 0.0885362090031651885783982419266681 1.0927034102856671792084350547482069 GT 1 -25367448386.0552571338328161129358586516142524 0.3638257353329771248258534265323737 0.0551273788956353736250287413885418 1.0567051530558711866168951815297927 GT 1 -65049786957.6095590106934788690549755690075366 0.3548209529583304645738218010400751 0.0971556206710248882105736071144126 1.1022050778156461563160665766282989 GT 1 -112.4965496903221187750527140513351381 0.3381949166468367437303434641126198 0.0401879650420355425826314793071529 1.0410178106097612756484787102506137 GT 1 -294721392374.4994960454816542537192536773115800 0.0025337334585433195824827988244614 0.0936485361730574416323625744031056 1.0983281189954129226398124294274647 GT 1 -22910.8420807033135340079400725364174659 0.0240181744081781016644216784305976 0.0912578885609386342148896801811629 1.0956939308443697884373426668448137 GT 1 -94.5234670550532558385781784164696314 1.1768100455427010318005324989109761 0.0025629334968761266978121749868321 1.0025662234333920509169446159443894 GT 1 -26969077006298.6446726935400795777813248267450895 3.7377561052545013633099423696781989 0.0647123298319984262538597462770448 1.0669011283848582329812490786677597 LT 1 -3823202435984056754056836569952087.2761347730123031692391410108520546 0.7931566924321676969569114222534530 0.0917505733883107484884651159274377 1.0962362391921295994813711479587854 GT 1 -29259920781362634101995567582259.7311141224601941277393550040993566 1.6323428457839536499197221643135103 0.0644258483859166265528810802464974 1.0665948722573500336480661479913466 GT 1 -13830665350236.8339176573549482074595970796961487 0.5773687024909245604501693710496263 0.0737342623169366858654655221436955 1.0765941117652360343790518330683181 GT 1 -2100414879.7265531165832262387207373363468726 1.0457251238875248328347116491908470 0.0519918431431386468986667524797559 1.0533921724847422342485311408221267 GT 1 -25752662137366574065540708446685.4476848648682358855111297340156976 0.1046504042476842982196957471673831 0.0217880059488355383944970114050558 1.0220288696034868197175936238465878 GT 1 -218012084075520673874.1329246832175340010272621691677157 0.4240587060601331025935832280421171 0.0919076781031287507371084020001038 1.0964092294516320225584037655257687 GT 1 -818642370425254749380670205195698.3976577574265018415015019052210754 0.7871855321204344381404715148631039 0.0408559106286580139231509273679569 1.0417139657798869877622646570616690 GT 1 -3819951616212405760466827342090068.1811575820510076171793674156288679 1.2589282074603586854577285709445230 0.0508905283291385881341091991618668 1.0522311322612423047607562558858611 GT 1 -283.8490977339264584519073870859640788 1.8700033771155640728934699747512917 0.0781633576805570597864020687317859 1.0813872486510547671246438835352402 GT 1 -4011284142258879436459026682856055.6455626347200268147074696811077132 0.8907872994556959147924163978884888 0.0166062083651126568989254821573242 1.0167456371878550481628722327528395 GT 1 -47537338061644606629.6153815733121502258132393141738219 1.9581173004638952245511809938084386 0.0873679790842689678990099906621516 1.0914225235351025520646321730881320 GT 1 -1128691296955800979351709506047.9217740971271176439781053940643950 4.8356954613732043537506458659895859 0.0312011406184803784044277832292635 1.0316982640958059942364439680520246 LT 1 -420158322.0184925091008675456773982720114343 0.1470743248573186061704895856923094 0.0027785158347525465768425280311950 1.0027823830749944755378657425668059 GT 1 -15965496412086830796855949799951954443428492.3079009572431983144465705266251226 0.7145990259923885005713519795973745 0.0186127300655014098545535840000388 1.0187881267427443414458595574236072 GT 1 -3412135335377733383028441533307996262.8224635738777155167253742772186538 1.7572680362333859342527916730744043 0.0447337555067557934926359836713849 1.0457651873108482148158011781612394 GT 1 -125878437.3058201109914614722997375774988491 0.9900158233835341300331229364663134 0.0460185364642509712341495969860435 1.0471110379786486673330150097798072 GT 1 -29263.0863986266441673295453587860301146 0.1909511158075836577567609500501630 0.0526887661996610826697338232538439 1.0541275874141392438899570321279057 GT 1 -32.3624655504271403242043925300533643 0.0618823510616528796582647005990318 0.0362433533914798970896127665608583 1.0369164575177229191594763203244387 GT 1 -187816943827861.1419813938138057015905469288952974 0.0439954814049312803143109292007005 0.0807384840671508836944577204339944 1.0841846313482491469188325415061925 GT 1 -8388750.6580425107239150214196035569758477 0.3406565377597954158947967637431862 0.0646655751963593773294985943999328 1.0668511400566176283967019937676729 GT 1 -1310073381.5512834426668329919944969940211588 1.2064729235136397743939716575792588 0.0878215282732781710889171610813308 1.0919196153703120011922928748113104 GT 1 -8990413866931488399.7651417733189971510641984704026033 0.0293058849711668207645199543398447 0.0286583011849412899440242928562109 1.0290769685625273428027628554938441 GT 1 -8522046587651839763861736567.0799414963628316336741000848094023 1.2841378456917445212997329933099023 0.0247122080968931310129079941891996 1.0250226803560592372573687214008525 GT 1 -210120757431856.6912064660498457902240231855312073 0.2179935957770325361134184889633351 0.0024404466039562931661138286425979 1.0024434293475755716083774350979878 GT 1 -15488466.7997636494554452815871069560873712 1.5235947608485630262339792241770593 0.0654208473697729751324534934252559 1.0676589551595189167158867957547786 GT 1 -67665666750877056406495264278732180790438.4302337813794857379935641700951730 1.3944008292947072576962187539672393 0.0278307408466243244982342257859619 1.0282253547499688301232604026397280 GT 1 -11.8367850075207275015481256604406018 4.0752272410828535162537878777352544 0.0486191277824268912169263110418093 1.0498408000656359430823048031459637 LT 1 -1212254855629127.5343500393069365920973845969529051 0.7875262282285394000675296683111169 0.0533246429452570229739180040333907 1.0547990565497262925739144390514425 GT 1 -53703821218735849.6156061541137067976446491431370659 1.5992203078936984922014852621423319 0.0068826168841178348510913902344474 1.0069064113332734384780061548079363 GT 1 -371265177056931790527920200400859.2989206981007471718374068704079253 0.1492304869122885154025513132549463 0.0691100618405087803613742292806747 1.0716142276413954944358239228506430 GT 1 -793498079854925374958260863080.9551389225748651580610516382038280 0.7914277212630208144236033008779054 0.0385169544378048523583653047576707 1.0392783474294213288845561052542448 GT 1 -2005866093.7546641911809782592246119647347556 0.0845408335097428114326112595126254 0.0482922544593077138095064661366192 1.0494972813001056118990939526973435 GT 1 -43132465533609106735.5183424891437205639764263932537927 0.4726748394089564493197273817720026 0.0718323045333879924798913989189230 1.0745428561995769547298815772098506 GT 1 -2326266723191489439000468322554143818.8499117872286986496700878688087821 0.1715901424179936666891749346955448 0.0294096499303839593556105133891618 1.0298507842924504598370438662400276 GT 1 -23326543934988260934515182352659293.3554448974681989341106748030467939 3.7898480188545569049118034688263624 0.0433048588021065911432642653150779 1.0442704950211730050487712816925094 LT 1 -109530827911784891823730.3155884251470052583876757426879419 0.4648984131798397015368796279280693 0.0985844973255237624383969158702368 1.1037889704327481802222243317107057 GT 1 -167563111537338397754476213465849331716587.8551829398009304517607291509442021 0.4506268192171432904381820065087538 0.0213577277557435260975759010936005 1.0215891044074397995228467898087935 GT 1 -143715313464792098.9380502740238173222013081406943293 1.9337663010541925729053411997926022 0.0717234569639158646143242236367384 1.0744255916275102512614419611106441 GT 1 -179795846206363531.6789256913588554593910622794422095 1.2649191365538655746814193917252582 0.0659645963029033766489270001616842 1.0682409360144112241595375955066206 GT 1 -138.8512930532656433611407957143959499 0.6701781500749092119048837534835402 0.0571018939259755222733627460494638 1.0587970551305898792233044112632547 GT 1 -1438913180.2521685454212590997012050099654142 1.3838747041297386715010755716304094 0.0447720536749112716758600327364121 1.0458052797312749984803522566289266 GT 1 -49498514132652.5903573085597920741344268838236540 0.1325888744357673118046644530032412 0.0983210466187245419985536075340435 1.1034967497919612844843903014588978 GT 1 -7.5390630562705416046544673784726515 0.4715606365101411290578509463373070 0.0561768371023056879793215334904222 1.0578164578234956995793975639008248 GT 1 -4565580938840210879.3874952332233999781102639059063282 0.4524281950237491410667936837716745 0.0105123309594875623991458829955782 1.0105679758256421810066771275729378 GT 1 -26225037056003455489608389581558575605014828.9461361975395558687682166416067787 2.5951317127492883705847163669737287 0.0393191074191217569349577712830171 1.0401129828233803879381535603811629 GT 1 -417503.3600435581409075541757477086311108 0.4596861355495666835726680494773981 0.0667951279511078023174544462992897 1.0691305180502776543395839906518026 GT 1 -49541297856475318492797131992607061706.0057705907768664213595808102643533 4.0002572353949893118174406452899587 0.0020733249775206325829941809895576 1.0020754772912302618455627230780713 GT 1 -57623325461507455899878623302.8981401626409761720836382459897075 0.1407663702520425669007710772067623 0.0847971101343923696675832850718433 1.0886095007287134414408712799924728 GT 1 -1004267755949994907760404751760.5802012073151056803738747782803051 1.5236455855286779853982435035813632 0.0016712159270180690200523694029501 1.0016726139661894347105497918029899 GT 1 -130992198227096292284610188178352323298122.0482035687474597253909493919197555 1.1916004531046036254513949215013915 0.0483737442508150978970281642577175 1.0495829097725670409928113842953947 GT 1 -2331457037702945.0429892523994818795062130984291721 0.3587074115360317070003563615252879 0.0183106441320305842680109016623431 1.0184803588931507678499430763302681 GT 1 -3922734746870356498.7048224719344834807889528055287937 1.0395610605686564447989165080533953 0.0688927037123075791918165967804223 1.0713807599163448374716158844690237 GT 1 -3527257013605617513902.8764284191800837166352528020763543 0.2613298353920350853545787122581317 0.0067806039840197915027526797684764 1.0068036967269091366849168176531248 GT 1 -3183152973338.0625189546878459291261668534539214 3.1446571456779576181352303766296939 0.0807692437846895082901867932708882 1.0842180932430936152985289729372493 LT 1 -225244846095273930331270962785979.3988616294973380508306219027895999 0.9109828686189562665588777748453027 0.0156167026657020572599037136770341 1.0157399279656463522262324977173869 GT 1 -3251939888744841116348322874.6169726364627553867743630051169094 0.0404298542527868205733297110013010 0.0905876401184123115807948512369621 1.0949566464348651588752153652432529 GT 1 -705950143143628226769107172.0312882141798555000801472226039438 0.1458590024086037482369003692757142 0.0673933580601084253016043743345765 1.0697717726732823489916756550039625 GT 1 -7468495642769180205605335491656581453726332.0072739018665501424645413930932873 1.6975714544631870952720539297816616 0.0913829451194459080140721402813709 1.0958315553283158159488378294338249 GT 1 -41.7964110291422696209292579449587049 0.6930105563242001784682340121881860 0.0355066201963420752289363366095697 1.0361523105234058916236249660691680 GT 1 -267406048613929.9400062812349734575182537119334976 0.9345906570200745825504881460245506 0.0907720503762335697292822008713143 1.0951594465790052050609714631043861 GT 1 -874500913748505381578544332627146257.6533173790990068905463176080126390 0.2030494178826478074531246888769037 0.0059927287332283952751993574389673 1.0060107571946007397418609821960779 GT 1 -847314687522637056273180.4659240770142549942216599364860544 0.1086437389697883560048053181248165 0.0403837356996209760502529588127281 1.0412217991185687516305198999822328 GT 1 -18251341667563793302962642.5554227670298313607744778787315010 0.9863825866710707665938153584873668 0.0959604741710648800344967296892707 1.1008821962836981463998244247237067 GT 1 -265014.1321062463472689390860025331679721 0.1966042658034129971560852521811254 0.0704426615988145456330706891410412 1.0730467863631548793229661003487365 GT 1 -16433107932416289302002555292695579986610852.1581535830179385735494538839416021 0.5461101525764054739435633857549834 0.0109173425827409639014784117129227 1.0109773740901308526092842022767340 GT 1 -5157233.2901818731644226529546693481719703 0.7738902497528950636601763464657023 0.0470965484247112117695603062197824 1.0482416904545894391210563789689666 GT 1 -1363732358.2060577844297035193003761060853825 0.8198908439544226885877538320247534 0.0207605779663255706878326732349279 1.0209791086046499381450523320872440 GT 1 -3589225751633.3447348401012840534235200531092909 0.8094844042156840234645459854917927 0.0196252203979344934758532192513017 1.0198203522591591245649234754513013 GT 1 -4259532642509681897437908506252.4632203822978988144044488365949301 0.1482537008006657432370552370085807 0.0312798569611763898847547538074175 1.0317795188784852748885843075515868 GT 1 -13414066.8100912627164621552562021994367415 0.5578028154135300607418865298403779 0.0390073266298429006140212864861200 1.0397884940053638373265116930750835 GT 1 -192574244.2266918154020557606999215270300241 0.2200668068108675971711999668914660 0.0208520995285840489747929637725186 1.0210725748574931549040666368610067 GT 1 -519075398090759896226686010.2945748676886058979451544743549215 0.2278941637300119722703911097967964 0.0831505653162595422435382539860298 1.0868120135724832956647566003320369 GT 1 -4938065264044.5878259732019196437400623179275113 0.8369939748968552596615126585480055 0.0513234244829942548270203109192763 1.0526873440265309409415190324678416 GT 1 -1326278448103908464550427254043270307.4942162117192286157987013167743287 0.0149318941242756465441443677140819 0.0830276122341455043405694614965074 1.0866779186666499270826559264532036 GT 1 -403966.1776215399460220766793960828162911 0.6316890731103874590136606337159597 0.0110184228940762059932162735364085 1.0110795753327993855903135464806201 GT 1 -432992000696818.8991768267496481584997291386012961 0.8599721190474095692747104225066072 0.0380590036290793727651359568883955 1.0388021645312200677604179510424171 GT 1 -224164992.6288356572635445177015001900816455 0.2234210807342886093582768958504887 0.0778292220211015720977112905234361 1.0810248470040392662205345642004012 GT 1 -1401150.9773727045188586188844095902669455 1.8936445044486411993153851761317014 0.0219375662386651163033160868010752 1.0221817727831170941994744459903521 GT 1 -22294496.9424761031506159733373165490359029 0.0851482974983683674208128783869629 0.0198055710173010591640635472669340 1.0200043300744645665839113498353579 GT 1 -810712788708284513640813505570000.9878565242452672977717228278897000 1.2817196700528246646250618454052447 0.0202545121339716158094053871073916 1.0204624473061846502174684360291611 GT 1 -860.0304909391233801132698876084432755 0.3512767086528057915863728370462508 0.0964225749366947422900075251389138 1.1013934780300528833583262108135588 GT 1 -2077880685457141314445.4741669621753543338752195149712163 0.7069438412594401889743996362550087 0.0495370694434948552374512079548128 1.0508061177547228436270003132212886 GT 1 -184.4315691565737583100787952443110676 0.2989349996088801084866892252970242 0.0959360173158580194640640756073941 1.1008551437890890688540340591345689 GT 1 -7351657992129190740916.0829716678488047160887619224125083 0.3212052123483263071370573354623139 0.0796277520053891882753511638438858 1.0829770733891448492882390241418184 GT 1 -6826315501001069923524092874118384.9996696842315998961053150735888074 1.3344398874923330726240972845195559 0.0116054588061602353889212857304557 1.0116733277544024345484442548339875 GT 1 -10789871033085735053.2939907452403687062787930426862237 2.6364890554045388547497248181090304 0.0764633832928744970494472019223381 1.0827085202083394697097320674979557 LT 2 -1005.3487384627074791456556031232080635 0.1807891967678049067674232651495416 0.0827966848901511973587138594145789 1.0864261136243604386369049088506610 GT 1 -21.4881392127647590568873681715962213 2.6814249247051425556315674416539469 0.0717096433384370472827355009592391 1.0771791877413652854759718238223396 LT 2 -185524008022600.3197795329529753114636790197956700 0.9063426826187384499794961145562490 0.0241144733825957738402705406250668 1.0244099877496952467063240121500765 GT 1 -6272343801987139321851272893280479905464494.6787318483543873102626165032282849 0.7281236015955729298763128424442107 0.0976572390410672373320454299151817 1.1027608300385134092238957181398643 GT 1 -57235710041381.5645685078507660903081836474912669 0.6283597055777765297118943499309321 0.0549459887119193947771347917938835 1.0565131983194660742193818736105435 GT 1 -50847926210312617692509903107094.5119668237436336227760012371570346 1.2790462973326289446600612447385703 0.0944143769330441703337662886982304 1.0991734472478459002585974443332333 GT 1 -314739661179277039219514269589791533279.0437361522814294728494701128377723 0.3103809895113247952025579838576383 0.0938630684470307143039676745978989 1.0985648457800058392281707397685494 GT 1 -237275385309992022402316284612049568379931.8044295856296691919501623027555993 0.8873349188735840130089161780613491 0.0019311425733680055668955396967606 1.0019330096332804892607772719382423 GT 1 -6948768117007163351990650345153465601713.8815908464638309697671221907419226 3.5366182654488541343528728236896614 0.0967855112666720077202679503470473 1.1017952247194058690118173211498566 LT 1 -220067449833066559995281.4109237952171043595094465517041868 0.4466714399949324543862270375966514 0.0573447219675682526121410536217283 1.0590546220019200721455808376083325 GT 1 -45839.8291263555663974357593561544773660 0.5355860083319364600129572143550670 0.0413190490831408505514319157285769 1.0421969487984175668312487851551285 GT 1 -334505992.0408901985319746186528723843375537 1.4753477400668073845028233720537249 0.0390077489541470337856034784308310 1.0397889334721866704977757253028459 GT 1 -18460972934694460.3233302237191269407813812409417704 0.0707478129171915260982016764310375 0.0430281628820979627539397055116127 1.0439813162611566135816551532149146 GT 1 -959442968.7224062923588405446165108633499513 0.1737851375060981556327474157436340 0.0245992579662477578807622672324035 1.0249068749583172937867559092412052 GT 1 -270517332835078022203601961947975000285403.9362222350213552580508542102027753 0.0432813581602015611991962025593340 0.0465792133325419172360065217849245 1.0476989337771145761884832229221559 GT 1 -231066716229538800740948.7864667741306495024646439393771468 0.8955972106349958607906468380541896 0.0752350735143377652472627970616030 1.0782157072961229601903223133659560 GT 1 -1053376767861897145017744246707478000.3655766128208331665855903492416074 0.3800338153220318643047668793368142 0.0680901329154657265165312068933828 1.0705191781099417535629267220333354 GT 1 -947741105725354.6264605673827902202004575779551476 0.5747898022105580095776522976523157 0.0374470007602395613676412557131967 1.0381661501909665058890225564621868 GT 1 -4685679421613424.6500420132322373476072319890506851 1.9786793657246608778936993208018940 0.0485076885917559505696587058936689 1.0497236727743826178392900166218045 GT 1 -162806062342327168799443168736798320005108.8119296033706730516965383874716120 1.6196104754690093433161464888196349 0.0545380048155822027755103415221595 1.0560815871601064715746328374453586 GT 1 -41035.6324942262095664821341956829360873 0.0389537115337272331683623246046672 0.0543538354906684766686333020817485 1.0558868131863896161740588952343824 GT 1 -12414545.1778347016048075609917996623406529 0.5362832072994903591293591998610068 0.0680491214932323232107369855660291 1.0704751711503692333444194933307155 GT 1 -2731.5740224565151046696577233761937636 1.2664052028667425249974050611988488 0.0524670073874200738736215654872407 1.0538935219324893178713123630435998 GT 1 -116118940.4943554178626707327256384399633702 2.7548947348568198302192691920002684 0.0253219970451963261084181087217440 1.0256481159096354017980048546636202 GT 1 -98103.5765185794219646664667666270773142 0.2447992269208845787692607807656151 0.0572434244802883564043185709674477 1.0589471680393425925133440657086508 GT 1 -6464090361.3761217489500470300121242428939576 0.4732992213153736675793851396102321 0.0292425556592542647010482443682270 1.0296786417510434764445176806254398 GT 1 -110103137086177196687597779.8249881023432867278271512886015354 0.2502890616926280351893060156801037 0.0054754845969201834662149829265201 1.0054905300084516566613230947529282 GT 1 -12198078.9126520788486549261552116044147719 0.7675189829871817195347700831286300 0.0220693978654833641597968576150889 1.0223165704276879380042628820341303 GT 1 -668633207938717474154.3185010018645568896696696774065093 0.6459144425427541740701177550730525 0.0958331889119862958442819655185354 1.1007414100728657581145008506740221 GT 1 -34218521009284.3778813686716327473364318831814939 0.9659900659324408099256127148263335 0.0778002422119454888437601118580949 1.0809934218553541433125168410873453 GT 1 -2192240299.6841749983818270159315690852461243 0.1493434248432690378061784483030903 0.0580199144659431867359555012785862 1.0597711452512604610864062572412264 GT 1 -737315.9675008994901066857493398687083944 2.3214362488653417067693082567264832 0.0221208017010164589260887647432875 1.0223691356981283841392276513353309 GT 1 -69982578569835506988008121916259698.5913041002737594048902935594595947 1.0265925822036524422098605774610512 0.0403056141330022891470536046996103 1.0411403932589649232926141952984796 GT 1 -352158711720758499684814591.2083163899622401348624685514880056 0.7341121036818297046667699280854936 0.0443874499739641119447100831301330 1.0454027304793879814077478091213640 GT 1 -4011317192658998354456231190545.5245821586457300956902337841923956 0.5293084033666072059859532153841351 0.0401174071785287641871964478242808 1.0409443011437060759272249542917050 GT 1 -4140413245604593047588512670334381.7609476602284621660959785078095600 4.7548132401058752372680243531717355 0.0012518283179126328005800422615372 1.0012526125094985364702573386268986 GT 1 -30303719555.7644615376203437003273366466080540 0.1904409389169195398774333106673911 0.0603669845799153247443156539043446 1.0622658890751415143242803527377171 GT 1 -822.9414004630550005436103537175972046 0.1450387720250698026654478005259264 0.0927963995406637007410170188673248 1.0973883772562336008423953308283362 GT 1 -62956962385945872.6857660815886408155021248224342572 0.3422786658735546052145197278759062 0.0808494413524740255769082136498592 1.0843053412663268957725279692967322 GT 1 -6197042229923144541341486624588.7069743141009930805106897706686810 0.6573369315180598274405370134637579 0.0473131511274628743045746000992261 1.0484690244241563585123983809186772 GT 1 -644649574862424768757124.7757080683418648850901072456611352 0.3795677658921485772921195382577393 0.0239279541778368749251881602616958 1.0242188778526768675494591320326680 GT 1 -640034242391905745983550.5908454408467560824811429598040364 4.1937622264117991647834478899511949 0.0436635737859376153628509459305764 1.0446455175708745852139893356866639 LT 1 -1014326362.6699637612648762348396242281924859 0.0353727931220669863939408268896106 0.0445455693153898786026855799803342 1.0455682080302876170280425779608036 GT 1 -416021513701206065968331197091214.7290247125604703146005701030669438 2.0408826401104614521008454771260659 0.0601845121000774063364251608267510 1.0620717124535539352417518069469250 GT 1 -40364383616652394230894286442655.0000852464248708445456946267329444 4.4130580648573311096050160770284894 0.0115070016453056332154762212396766 1.0115737194975174798293766278849351 GT 1 -8478645.6830750541473712526920377044989262 1.4793926256071316606003880190441378 0.0059379997723134217535420238711768 1.0059556997962358848778707127183039 GT 1 -1787084594944706512247073779283774.5622869711292965605949093016581493 0.0730478247060700415568403828421315 0.0928659321736711634669312556549124 1.0974650252079979538826028127280025 GT 1 -1389807334214632.5366084995245645420213012476157132 0.6015735252517008246527093669473294 0.0553736442398130431941791029454160 1.0569658204058802875679023158378459 GT 1 -423426538388957030123187.4277263725904224724382785831352259 0.0279301349235903347502078689716400 0.0849525344460009467523878108537889 1.0887793401296696574739923887148450 GT 1 -36033.7062452842717284936526363697696409 3.0200973996637529621825675691927988 0.0791725357858877001541450611722229 1.0824825955486820649299838151872608 LT 1 -10228002936503657.2803529689245699995141709159005946 1.7194967145792683914401513073275516 0.0291847079824654821687713069255103 1.0296190532785411257459664536671294 GT 1 -1990273353773897774230530110851621379817.0596394256095798587095971650194892 2.3491674335172151412548322108087428 0.0050648537667876171916525514567147 1.0050777236129441446479427553897307 GT 1 -93739785007346296727483414867216.8639505412714290815772959971655530 0.0553331385925170546265949379084292 0.0141003330461579160684308420395649 1.0142006872104670601194269588843400 GT 1 -463.2903276206508024278305543399618643 1.2976663139842908886096542318343498 0.0161867525936789520985465542483792 1.0163191891633553782131328619818317 GT 1 -549531519248960.1481696238580748549335657761276859 1.1089669225885065808895419392310347 0.0852587221085255062466160063319996 1.0891140100925046724153821759765582 GT 1 -2255358438496089466683237209168091639527784.9587561155609141735886702850503248 1.6030133139516811920561014637135610 0.0347392172974103283990907958948669 1.0353569730091314645592751660131284 GT 1 -1192411443071962988260563.8745629640515777940644174356082682 1.3361072209215486971367704317441567 0.0657885451949306083512279050955301 1.0680524693696606255164052760289112 GT 1 -334619578099275650751.7169224953933354248889256128238235 0.3050990298413568428922499921032584 0.0876411099853136903017877733339334 1.0917218465634509199221265405947367 GT 1 -6896821145133.7810272314981305671979516769342519 2.0284470458066202745813329254894336 0.0930267234190920581854137577318405 1.0976422928281723153933500169164587 GT 1 -2778792382421561913775051902592211430215725.5071448516707525152087041356415357 0.9551541980398555101766552930021393 0.0397873371644626377711747623260431 1.0406004952660081566163060842156874 GT 1 -170748.1568944961335313753113132211545577 1.8553258927824013243488318641832328 0.0856752091724754248587606801055630 1.0895694196354085203967048455075202 GT 1 -2665391178378868295691968740057569003384300.1592556310980681407889616341403446 0.4399977531805216438791676460780377 0.0192141095578080975675882671774905 1.0194010996681524345256476030196899 GT 1 -24545438278630883782443173183464964.4565328307568542790740728557409644 1.5110151442398642241970100437053443 0.0627443515163476420267057559894341 1.0647991967279383278434641130032429 GT 1 -919.7976076894419731633323089061455479 0.1151424546148954836585094491696801 0.0511245857813465420471690588290979 1.0524777701087136143898371283238309 GT 1 -17278719917506326943113081980978259865.3830915866178097178725037420895329 0.6876489744873672601496830288003318 0.0835211255441334286308876938649267 1.0872162622071363126149284274041058 GT 1 -52274.5955832726318994462521355356456090 0.8139763261418716931634368795600497 0.0414767938449478635558735374447578 1.0423615058817945364669592343978805 GT 1 -59268289465867065070072780.3352194527134214136351325593879877 0.7069903425858024471311244917840126 0.0908348543158280508406914070057121 1.0952285228857526392224800531246818 GT 1 -720458708341481800259819329619462749.5787964049908062795112999058557758 2.3384518279649288354223771654834257 0.0274581625532508337018912860909973 1.0278421839040952712890225548410085 GT 1 -919685095939661331004408.3639567181379851311136533549178604 2.7176171164789668102468837269282749 0.0294761645760445787228055536121348 1.0299193167324106982307716474508698 GT 1 -1264989003098639792073728115829.7229949205426555269931090701341173 1.7950108698351038452372457288366441 0.0477925535251163401843808641894401 1.0489723619678150331529021471477168 GT 1 -53748788707155.8514370052490471345045399994403139 0.3196140009893788150854131710749484 0.0154024281175184780139670651984883 1.0155222777564651011225564481568931 GT 1 -1014215639053157461842035929274796169.7801907076140582596043746692010065 0.3512783115799879201835176795596119 0.0390259232484729148345800787821264 1.0398078456602552834704275266588236 GT 1 -6289917854600998935015438387.7962882363388286584590364368716141 1.7487014048769994915310185932270894 0.0282377843627586105649343976578260 1.0286441385675692589235694401706130 GT 1 -6406000847.2977606359683916402344752114675620 0.3352567265249709806546456553687737 0.0232819172879730621135468197102810 1.0235572226097576932929921123919698 GT 1 -5439742158685355219878893.0614333128127819584356038236043546 2.5223917615057643679687052166601774 0.0900509062990051074379146941630081 1.0988191517000166159055511177338032 LT 2 -1156014903472715452.9727227941012588202598090847016461 0.2928750203165243969189698221423229 0.0894409810751304847479585723974525 1.0936965615694017986692285759654385 GT 1 -11726437379371694994708251346.5687508741808860745246225068258432 0.2382666928896166791388465360753761 0.0722060620975162508178923529694140 1.0749456205266631067603285462007288 GT 1 -60100.5913824151928860970362353654055813 0.1609723707275755778025549188204001 0.0802615905136355169340287082657564 1.0836659868854477638970631203746080 GT 1 -67421695.4349611008967125775085111647036906 1.1036077967995306695435233910046410 0.0082279363135146569532480548915245 1.0082619726090627229837046648184390 GT 1 -2027604366212.2464901466992840119001127805477800 0.4410917642851696597186608884289289 0.0253039398859310278626434139042819 1.0256295897995286657214295041680589 GT 1 -8306635906540367892776101337277601662113.1394128342868920181510470015550119 0.4178714329737030257551280538271121 0.0705977018031184438655551277104819 1.0732135895595353047441101548775555 GT 1 -250244384.1251472491759947827607832159530887 0.1664504063614535601697503839939528 0.0594704930560003767768288109156385 1.0613122570553649709999002895109999 GT 1 -27.0536235912055230333629817846740977 0.1429798158553390707799357269861161 0.0194275401986230852900865249614126 1.0196187352079617872531028561624967 GT 1 -386662764665.3462094332980859058391744793751737 1.0762099104019626825319596053491847 0.0681238265127842712426226861675620 1.0705553341885782038467640000396554 GT 1 -720.5506057345198761818370865739980702 2.2224523224454632085584173362142791 0.0595701935550117672962344855489452 1.0614182673219295653728832045757375 GT 1 -1969708656050.9517289676314841478891680147521814 0.5270022250399953765301884197876745 0.0220891169300500923369127592894710 1.0223367347045136081189073345150642 GT 1 -40243208280225921807165307.7922344720697332082359375157328900 0.6580646291933789574548108524073428 0.0660960379570205799477438767927239 1.0683816704052002662029010951673399 GT 1 -386177721554634593173137708849105671669599.4117004831605288586703849015884553 0.4812868919106047788583284227070360 0.0271994490394716979369825300283173 1.0275762014047202236718825488212234 GT 1 -63630.5457472477933696083797101174633853 0.0695294300539089143177475620487189 0.0481074341654390760158133015303303 1.0493031015730432148397603486651487 GT 1 -756526774944979938819708527020202021.4824152004578642327744664939342358 0.1329558791659076967739990636277550 0.0103335309539352467591920270111100 1.0103872925705101584730468771363070 GT 1 -3473732668796874514278261382011953648.0562961951560322115779055343388555 0.7459203051028756664848087343392300 0.0824260810676343369919206057610212 1.0860221367047858373416534209811830 GT 1 -126834004215113396827625657122.0589667938869585674754885937673762 2.7675828787364660595958415078939682 0.0412914389438675753646019140923063 1.0421681490797346657641354369875934 GT 1 -164464.5632593050690574891224034555779376 1.4902792676592215226945949358829469 0.0689812686047604833480983821385637 1.0714758822562971837355193703635444 GT 1 -330245655722925493505810187571709.1056082850948594741179277580847472 0.9220551379143638527588681741707698 0.0461835741372238027385990481445668 1.0472840517704152014299288545508360 GT 1 -806143722435.7308229183209910524311951611241299 1.4359504929538420440565151723851914 0.0390432450135061154265731539331128 1.0398258710384297991024345146675261 GT 1 -4603250256063516.4419657665833510795225153818789217 1.1546489303378603669505108760766159 0.0452005344230916540875792586583360 1.0462539442401696242267811085420859 GT 1 -1593713531032917812739958954920089.3891831740049624304032106545321095 4.1517195808660035606755742785235583 0.0769375453423413672482778262231690 1.0800583819172465564745090855097871 LT 1 -5922053341865.6046485200295498216404979716076762 0.1370824343503164780573410227632159 0.0202192597840986885806855121897249 1.0204264668233806645793022799805576 GT 1 -172656.0560048055297654721668938106067481 0.4048285019976700662429999367149981 0.0409234486821478870309951916192605 1.0417843831782666813367354182012414 GT 1 -6380427860.2078389119318806766962722218374852 1.1812229383532636900744817886822641 0.0743558662137744126463867940199942 1.0772654229664542881143207635258809 GT 1 -2060939.8884378207679732960761941519149108 1.5199502999248460437888277262330832 0.0404907927246319806866963077900069 1.0413333676707115695374706370922436 GT 1 -153730392235817632186664838085722819203.2679737922878326468461737634062232 3.5536645531477009106335077915653413 0.0092780107053521147672729464734808 1.0093213195346782402796662251658462 GT 1 -6846649648369380712632905661509.2518052165878923744106784100104730 1.2332051370342676056935387305593905 0.0878648741047780970083219347758140 1.0919671355242642444427238656608473 GT 1 -85576411394566009666792265.2748449275741212140119969318438474 1.0400243721719137954179121565322802 0.0922098556249571543244115469595599 1.0967420456225354753960257288444827 GT 1 -195681668994258096917370456.0860046180456265655646272531010033 0.0293959364045816228000173375761181 0.0803243944483882878938841526850938 1.0837342737792777855266880332209847 GT 1 -81315624197954956391598916145059.3474438737966542710044300291406376 0.0711860067687911841862191631558616 0.0241797103082568064664731296543792 1.0244768389371438728780954500580421 GT 1 -1724517308823027.4985932089108363562429389400253852 0.5048105005005999928080378022343326 0.0736936135607908319052825229437487 1.0765502281769826094597633580583573 GT 1 -1785302348420536455329212070100027.6200454246275465553191509710816141 0.5524491717591842449507763493442474 0.0350241050217158915132778106595814 1.0356521572522538767631860970166492 GT 1 -579219681245960467466847058872683052490.1615794594037389004636290176149893 0.5470805673128490771705124957217973 0.0324145341505780088868641466214475 1.0329515211843969116184644365553558 GT 1 -19304778652892451626321098.3124635870376076374028449588161588 0.8318172364624042336229440304465157 0.0314381555511632241105829740172170 1.0319429422637864835450384235041679 GT 1 -6397270985662980104438499181546595968619107.8441610588172752356443228440911520 1.0508399853510872945245773405728115 0.0203308502138159781357573290698182 1.0205403665769873370930686155645481 GT 1 -8785212464964241868.4006139910863552852497739577372500 2.4792525073838583530639917451193032 0.0385675182785876494016304666143422 1.0393309382375738635673798451015023 GT 1 -959.8455002440056931063420497852515202 0.3429194391721303285821522745091558 0.0982762713619095716228456106638965 1.1034470933760419806958783016899274 GT 1 -13592376111382510150.6949587516238389787379219079102651 0.3600281061144014774789800636316994 0.0986366704589184951044017152144549 1.1038468512248641818909238870469356 GT 1 -584373919628775.3942514001687356635391019595323365 0.6090561199844900736901568781058970 0.0120834952835221148330488631657826 1.0121570942016669078022692096281264 GT 1 -134971023427.4064174234120055728734671833239861 0.2988646488205099985714785491052796 0.0978328587966012354824180680267616 1.1029554754166052967963238363138305 GT 1 -4634418991886430343257.6784858027332096168745264446718332 0.2378164934188962689818678686147470 0.0519053052558764775692348837338538 1.0533008927450918385308112600532538 GT 1 -14324943335238644558271.2010702835990331215184810133110489 0.2859534385452406691362195142188833 0.0719147704093639564610094203655115 1.0746317081818871500054954522620081 GT 1 -17867567.9586340913384004134719271053253183 0.4989166553080448218102492016022979 0.0028026731282482982164174086005495 1.0028066079703507045787704392358284 GT 1 -1130002688402315097837632110642098220.0800806599358824711952607716087812 0.4136587397906865558252269363623390 0.0029715113699990677486781375745345 1.0029759350754776588668375615218044 GT 1 -34518950828569997009845779539454.1119023232953014699485137345775287 1.3188993810206343125356151670762228 0.0436299760311270126049452967576479 1.0446103864562063151176211137363377 GT 1 -16340756619428441035.7664959475836428076966031653809139 2.5303443538770643530203443790550642 0.0501333660002882694683083555163808 1.0514336895059453040049489214444387 GT 1 -11448125629588218589594407417882976982621895.6837540727844935753958167256872504 1.0581922923697955250305771609429115 0.0977689350363430488627142045348497 1.1028846221425702739191402842721326 GT 1 -314939649629084.9876471448241024206985101323151829 0.4170617487605426195607620674634108 0.0823737679508925014007028821430542 1.0859651259022005962164665505123878 GT 1 -5578221126531560399821926816740.8767202417318981048068746463921305 0.0615376449996063357135613956510212 0.0077705984118239802353888734293587 1.0078009468308103244680726066801777 GT 1 -346785626557215432384903790228258494392.4673609329693319571319880862068532 0.5063634008898645114487224406803748 0.0709729715175602867824660127759189 1.0736174464231298269793591163407394 GT 1 -334793386332650578424124439848.6078756407924949842177727452763856 0.6246592217400749974845984235555416 0.0099406063751234797314391128464358 1.0099903440925617836108916104660964 GT 1 -388.9903317658314001065289303860959276 0.1602338369494844637277466328007961 0.0737985529236089288259584979160251 1.0766635225566681137644339596102717 GT 1 -2037419214162967683840192394940236545490.8260340172609023617245934371293297 1.3877947024403747857285272936148546 0.0370913391212830437990124026177230 1.0377967201988059271213748698463366 GT 1 -468330703522152116272118.1144264272205309192130397855881354 0.1380066194856524210995618623096522 0.0965051049397799231907571930309333 1.1014848191481957585575452203992596 GT 1 -163055488698.5715287650711284594897522967702598 0.8823584843689749640055735208403333 0.0905526138230647572667030192063182 1.0949181318705313379730440561933992 GT 1 -419022576692860076760773002.1942233864215847916688788823406374 2.4122013113439027767571564566639865 0.0647665030411547893541853109037751 1.0669590515028892579052897773145280 GT 1 -363357811209678995650405932570.2990715306460196325791907957874935 1.7480471726805986381495374121399547 0.0794437005750921761745701414760792 1.0827771183923382313737640216043309 GT 1 -23759814777939727836.9627423026768026727828977915668668 0.8381787158976994598627383949196430 0.0166313522441949867863538812923561 1.0167712059892314760822209912631231 GT 1 -26613225447.4866232427877966182418213674582752 1.6158301066372631341379934705697603 0.0238086932267014580296092312295821 1.0240967007384824971749876222842667 GT 1 -4600306092607846.9284636624330668425033196066988427 1.2874709764697154781359616335499778 0.0636049113608668378069022094287512 1.0657177883181224630685262963790411 GT 1 -1600722601919672536.4865133712511939563022613848707720 0.5288432339842772102944817787235079 0.0931900509656203233822389691492713 1.0978223888227356289189091547399625 GT 1 -1042089402795773827287193395289199.5227183322686245010496458482085539 0.9121436809364347578624111768102133 0.0236447393127863368364719473317775 1.0239287621939860166964350965632412 GT 1 -55015240029.1285783290225646197890854091109838 0.9524397738994412787833092554649588 0.0220343889656235474103964267809086 1.0222807721070737424888237817847428 GT 1 -29778731094339970136239532078975592893929.1983694235607546131964452841698219 0.7865241364122914708914299296886883 0.0398385732772555275443681450669393 1.0406538558201664687532935362405456 GT 1 -133187787576295492760458071283.4189297688546547557284554220835011 0.3437827446692890244743155508176038 0.0625294075239259718478079098575499 1.0645698896550790093180364370257056 GT 1 -190147618107441486588941223628.1263881080234023182644999673382402 2.1610310216405131945078089005999302 0.0598473739227153398747027368533417 1.0617130487310475589524551497916425 GT 1 -1676214121169373008933982368475.7236388642473609804553002956281273 0.9453110112939880039526953087814513 0.0233174658850068833292174485536652 1.0235936192369846145290027723060472 GT 1 -3713482967.4041434660586990579166632276264576 0.9483384480385364601095529463674605 0.0684752327692991722059492823220604 1.0709325007478537157785416843333016 GT 1 -173318608214663150833704329951521536.1974003151122027148312461943523937 0.0024985113282675886170744409920091 0.0339507900979362714938759103918123 1.0345405041395127813788910025964053 GT 1 -28934261400862834677706695023303387.6365829675592325908101324332343897 1.4787727220875450132777902662718237 0.0585134537172976626655630781644806 1.0602952206495854133029990038380429 GT 1 -849972488255599326188119216930.5823389202094311820117442592406437 0.2822081960300561348802053923255249 0.0468607042966722013245342033629203 1.0479942205281364687059380916824469 GT 1 -40838298820540315619703885061.4030366104484574072566975058274481 0.1692960658063618623274031437541446 0.0822807472003947633965567973642927 1.0858637599726300607709813764588003 GT 1 -6853.0401853669499422686163449164762003 0.0455151513764349232983671775534416 0.0170001632104969502118586001183700 1.0171463248680432358872004911407038 GT 1 -142021092262.6472042981373206539444982146226511 1.1250651108392596376389391256166793 0.0722683702746389902084326378291155 1.0750127801263293247979037977511243 GT 1 -44963055625325042008.5684443503889296130132876759336649 0.6822055544673624517740839068335895 0.0148214145859185317154075547763009 1.0149323492548961583888633797055405 GT 1 -19858344357299830648225529298.5897556486256707149546416954863446 0.2382807157756000099481793919879266 0.0464214381762511733713675003630030 1.0475334642327483800818459925374428 GT 1 -57473491456611857151894522908804097.3015235273531866275820887464487949 1.7791401542348394170250562139493971 0.0013925121340912848299402711276336 1.0013934825801229514489909435774830 GT 1 -9908657652066994418256896251600426266.4702277575966470563274355101775963 2.2968066646649962011579130818160906 0.0727415946459304411817926616748148 1.0755229978338191493305744552734246 GT 1 -16.0338131675112375856379924593093153 0.0272961073399517696451201642835206 0.0150368570700519119160413609060113 1.0151510568553622820282889334748424 GT 1 -1891547576149972934826.8527991567267284048629548514487407 1.1060494328704144582700061921184934 0.0210500071798227873788690080551718 1.0212747176130629043120272849009941 GT 1 -1612585550641535.9191266238564790820873192461779185 1.2206130597547497505253436214344507 0.0397161345521691623899871149568553 1.0405263450540421460790458863174085 GT 1 -271574333181775978338609876658025.7669583812030948418056972719501556 1.6254670805201455774323842775093956 0.0333351139440705276273724041786553 1.0339033936884852951463995307764257 GT 1 -2107863.9494164472140066418230346720451251 0.9035139773318678665754118529222195 0.0299951853044042608027892205067413 1.0304542438933202384098684390599513 GT 1 -13378879158864.9246870350348324278472472111465294 0.1132928656890854129763145166263455 0.0977868957508857158017622128573706 1.1029045293415290489599160859276755 GT 1 -121258151.8197134602585883380385445308307712 1.1209850139830513173232634100435350 0.0169902899810089887591258872337413 1.0171362809397173820452987608417072 GT 1 -32965.7186123826037824566716800115255341 0.9495264061964955432523678499074152 0.0832765368997209066487992358522053 1.0869494191632965181543290387527861 GT 1 -1425469494941338954593332330.4941279188661775622065772358189897 3.0960027069405071265480233732171684 0.0271110319874112538253106707028775 1.0274853163469973765400115862586877 GT 1 -144272.3281275029998488462714479608673166 0.4719218301603647052644626204444336 0.0507033741805379969632398269138655 1.0520339624887112081236778355443019 GT 1 -10923796153085363240130498574079641125961990.8599760867613021683829184535528654 0.8378164922915005242348982913362165 0.0918939773108325071062532947411405 1.0963941421211789972795979750019644 GT 1 -111.9477953906662181860804765882164421 2.1332169143180439090045321016516094 0.0393161506282558426065719817968837 1.0401099050206068117256809753718830 GT 1 -10728666791866367.3990827109891491300816530202353505 2.0192434771489154197230439043389277 0.0700698235237592042159378307816109 1.0726457747112145652438172979650442 GT 1 -13732574917283331729565856618.4121736287126793991865503443253281 0.0737866227368447855566428610924804 0.0485569580327675446740504553162958 1.0497754553438064378123606313107271 GT 1 -8092281157749951099556649575024897968.4468031744556309906330940432439099 1.6795184536531644722803492238031905 0.0914919103503141142570875963227901 1.0959514867830390234504022791431114 GT 1 -517010497181309082548.3511073367918987586630662393352010 0.0994320185057820823262446153933121 0.0946027241846259604687256012368133 1.0993814528036986052553791458939913 GT 1 -257255.6042600424756178162858207023822539 5.2079526103920219836144527112901349 0.0692409476629552176055808650568602 1.0717548404242887758405438039693679 LT 1 -48477361485195408.7171982997321043069093156179520652 2.2326832140691682675059981224572286 0.0060601652879238056513610549250687 1.0060786026161599544682567519218794 GT 1 -94388215572999716383859.5181150817605303352532794616041392 0.5748678579170645737670343043081726 0.0362436844352008129715361974633347 1.0369168010108432379199438763525969 GT 1 -5807188889.6318943265072616308743227386753313 0.0340409983222152060480384080782395 0.0742520165621176090417227182592021 1.0771532374917516861234917772021112 GT 1 -475530057532539074275698002424812312856.8122810084542253756046285047256292 0.7006398736954339497327878369843972 0.0071932882516611251924835941498593 1.0072192846912038945735512255190049 GT 1 -66734954877.4144312507913755263549261880248297 0.3142937895054900209040864814056625 0.0776743669090422034676235416980589 1.0808569365527162629318020919390628 GT 1 -212331851076213730.2511480989443069547511786366594102 2.7048761905381582935112796571801722 0.0272141777177623286636023140181215 1.0275913420106511373121619698295139 GT 1 -145039687704330844989938750473.4633167634753127317326752682707886 1.0118542391494757755484410127549576 0.0283380804079848402897044329823101 1.0287473543746565165815136398484843 GT 1 -581091405861169759065.9029345404912729773829073288132299 2.2711730705662372931541166006500038 0.0991469596782198904256727546304763 1.1098641940871489443491728929455460 GT 2 -32737839104408941173978356523620265.3567357567165038753734997763430396 0.0471326649461078679369174372234551 0.0489869143148764032726122965645817 1.0502274566101479829715713944824664 GT 1 -109457800.0111731255305703373076995720951143 2.1049801019240174320301027582116828 0.0107413744336817322117747978948231 1.0107994794558360911157227697177181 GT 1 -622449311785555.8784092608253150176755976173893313 0.4827644610659550372184348476849226 0.0100468406683474354035513753884377 1.0100976507792464374275911162880197 GT 1 -633.0683552528904566845122967848347825 0.0548458566351185083209455527178028 0.0544069409017118107200712508137352 1.0559429725663288610165246713390802 GT 1 -757561971788646276972061.5912180109705339159263173357450024 0.2854511320104276405739653973857889 0.0408968730818506370053351876319630 1.0417566739906441850936867430014363 GT 1 -1438356777000118091286241991313061754949337.3846466044501851931010843298872399 1.7223484176499888245377522440560680 0.0061849272676411483200967125150921 1.0062041331626211133268859742800015 GT 1 -126819910190975.7178441175235612108317781590322866 3.2592349997285460070836301010150353 0.0011340336545070679709734001798039 1.0011346771572203380526015980419324 GT 1 -1168580320185469637.5076992356514658551380340735749315 0.5076162738342338997011921737638876 0.0357325669732483011588257258604320 1.0363866026932143665805743713304724 GT 1 -276238264088043158844886556259470639806.4022446854977312470216808121092271 1.4578597931538534769207570961236288 0.0614149314076884178362921156050326 1.0633817839176383919127823160659329 GT 1 -173571344365929974.8444391156703724266600704294988629 1.3037425637842044041324551406612085 0.0000234675700775633699071256081000 1.0000234678454452941920196845642866 GT 1 -1071131866.5140879301707342511748811067708565 1.6079256596483243393840591947253397 0.0321012823739515820455031764879722 1.0326278277313209201642002007746658 GT 1 -1.3892859312394770268217084837646758 0.2439464587116805884045998086697949 0.0407045197915108486453317338228178 1.0415561387209981048391742108175042 GT 1 -131931320552732466158329049896225195.2138955761283341567288333815260023 0.8345319095649859208641176140532475 0.0268183160433499181856705928020285 1.0271844886807740205469447873420186 GT 1 -21609047669455554305205.2478996345745801737832627551745492 0.4813348314805378419722379647175238 0.0835077324416885660445891853164435 1.0872016486628877285435511216387477 GT 1 -17608525004987680168395145220990122.5635306744963523367245381440788045 0.2884844120623074201959728582697761 0.0099238044681015585119045929751308 1.0099733736314334328807875687168675 GT 1 -70560952728037233757449278923.0639598035238817533623542776541335 0.5010192701178695418773271861842752 0.0633260837748601040642214085659865 1.0654200656102647063396347186354112 GT 1 -50902070658495.6463093648630264721759975687196959 0.3345069822824335216451896810417912 0.0324710143080455035157105965518209 1.0330098951554439932042215730893881 GT 1 -190399537.9427374075817714619196850766875971 0.3666977679215075076134548582737582 0.0199637411669910227709041028807408 1.0201657091927656731099652961400867 GT 1 -33765352689772907793659199945862787.7833412229070693669122166130228929 0.7346128001062415686974502926873634 0.0651197348403885155480495971130479 1.0673368165464813555034124597490057 GT 1 -301.9971652788302692371533094418386107 1.9933777873039905801306895292449615 0.0626104026490386307173208098661928 1.0646562908977983589082283259971824 GT 1 -3782794204486871560.3300339618656804993790799766323226 0.9449983756041907080726346145300026 0.0885271705630154474903198826420772 1.0926934939341621398275865704698428 GT 1 -4943.3916320555898209827725288096450983 1.3957461038713783415656643832729605 0.0948056524219520472616766047403021 1.0996056096323880659823287470749005 GT 1 -256049922093420461535.7849282263153932040084172461383544 0.8151854914919366681262241939162128 0.0584624767033953499768517421199541 1.0602410768765574295380627418323392 GT 1 -261169803656545499.6046449767534493543154653573287823 0.2621705806784683612635217936451688 0.0460353423735464999911599566573562 1.0471286547332410100995191671716049 GT 1 -42592966597.1258077348732118770650302968150998 0.1388109102653021589533835755428924 0.0971329358369553872720336121074428 1.1021799521687412170429010515490298 GT 1 -27676816475344.5914503427254022489185212099586629 1.6958346801591212696903060984894257 0.0679301931637183719118629680287300 1.0703475670624849425813246219179373 GT 1 -27029.1689371971010892497236462051913084 0.1327557561216026124367970060197401 0.0980102488645092759944146540807203 1.1031521213615704355373231152468340 GT 1 -717278.2061266541879175172455585580299141 0.6884427776035638557449964002554627 0.0549305669445761725844210400493507 1.0564968800547625528646062730128273 GT 1 -22868492027907993587634553378958641090194661.6414125166106689661796031138384533 1.1174141749319915533806916297132240 0.0689413078786454542352715291888696 1.0714329616713456766866685868993616 GT 1 -259129.0551385359720615618283617784508562 5.0219193901153665941182044210548411 0.0011917854253672109852519831064192 1.0011924961663739043247333250360593 GT 1 -502338664.0045468733233534972312100403818907 2.6875422097458713973445494849353514 0.0598953354285900592037467864509953 1.0617640646277800477266182144225980 GT 1 -280.6915714731843263703344655014442660 2.9674347906650575214035866566351047 0.0930646532840839771073724562149702 1.0976841139701089017615302797027442 LT 1 -1596643972967856698448305960400785446148736.1735846844332215261398530016721300 0.1221048699242704548934228249688174 0.0173799272990973040637322907236869 1.0175327313055156989160455997758173 GT 1 -22160571443246498991994.9901211302883577718731400041646672 0.2317580630281899234908691510618260 0.0042497511696148876062847887907132 1.0042588070279867368075740828827992 GT 1 -1330196304414050081188368.0914607519459437505306298616605884 0.1553231158259626688529036409451946 0.0195457683528421304413326712557516 1.0197393130204697423814056375953263 GT 1 -13462299144568592442010120577244.9190354662280442676976549791891005 0.7729345297742125782082624695895600 0.0059936245843627881322622627111328 1.0060116584471005783736279484798075 GT 1 -1194159611469730057781591972418848566609.9902873524623098520428208198465946 1.2040615475337973893475898949401062 0.0683046389971908218749690975789340 1.0707493836056545469677401545395227 GT 1 -155347092828904.8788928238572618723602658875422346 0.3835739213224013284901109923052325 0.0648381337062431405338814853430306 1.0670356456460642125933357503665390 GT 1 -2059255478.8790102824028741960454016440474446 0.8817269086172208081510021606461273 0.0114169299665287010314442713574680 1.0114826034496532418406944835537226 GT 1 -335606693916972866839777098093023311325.9709287399568700665569773514110145 0.5210030887641773374065307389715954 0.0231800356038656013931667662453684 1.0234529178235257123896243318820686 GT 1 -1933068942819471367308414055340141836.4847726037772351665328784880396547 0.0486097810731948199372963244520474 0.0340791246464520391942179043256670 1.0346733576962877535891001315605500 GT 1 -16269405824487483767729363063109864.3766098387922166545097046486540448 1.0117104266779717830535998235744438 0.0868043297458696227093933046837762 1.0908051056275631085135165314490222 GT 1 -728728135250387704617025.1079007418954353727206793742515085 0.3334206866960139201350873033761206 0.0648999037357286907693979001253448 1.0671017005953115628390897197780078 GT 1 -9853685071052012430823392248347292023.2273176574177774648028214514295111 2.2839389192798447056613757776288055 0.0383932448472048938470986281702934 1.0391496903165557646129614442849907 GT 1 -65.1207557913832888705381223593048163 0.6832193616403957720176637774584803 0.0429133511370583471021086501631653 1.0438613494513457010381967283190914 GT 1 -18701614171958159387563823305277434763376.1892563621107074207241733602397629 0.2897519857247708706575404398342111 0.0776034665506505454603854243183710 1.0807800682202241788813690098164085 GT 1 -2679488276316765481512546887110.7430808110479353897698284539356094 0.8408640350319510173160326080942093 0.0183369164199714144434779921171432 1.0185071215745874077331307506582364 GT 1 -264.9554180036082287908079419001695290 1.5919818576197439760423007895929259 0.0199564305767088674787496672239654 1.0201582497105784677649455550138617 GT 1 -39014093194318113916789846000.8773187586757356667705179651855557 0.1566732413291243009941990250715664 0.0871514796862101803064251175565359 1.0911853263761254046297710485836068 GT 1 -13604678472052417048971186995936241.9646907220197859940916886989750074 0.7059432275957297418428921013697911 0.0030551613499339964028269332941955 1.0030598378828417935675639749552134 GT 1 -146.8115302555011253417710436691399149 1.4205325325473922689062376608095729 0.0452848648450613153252983683714017 1.0463422707939358707411091212074608 GT 1 -119988192196042.7532725486882592403557412234672351 0.4499058389981996460247354211986973 0.0463343630191870267683057247327045 1.0474421543132538304173531542464216 GT 1 -1067031759701391603832485235416.1882099823190705520622756859304130 0.0517035369692348582119884786179501 0.0859129538083722912187377926044159 1.0898294755291882615558602303567430 GT 1 -137.5490407504571791669492996055302932 1.5267012431046561337206550451190429 0.0399881525861903961348378946349416 1.0408096535403536645816117250201110 GT 1 -2346927687599678964908677319100011159.4289220516168576134025985401949975 0.8829604102195926603338506867847124 0.0043887512911475608358025010699893 1.0043984101306179630823668527131499 GT 1 -353317386522082.6794062760568352066159351472655708 0.0522235691305635092658666158791017 0.0915351552927356513181978879879943 1.0959990878690122799414272473699860 GT 1 -205381108809055150797342068909.6337229369494976596017836646560062 2.8068345904940889929256793349815275 0.0874085213263528935759921971651487 1.0914669479489890860707537670722461 LT 1 -1870567809.7443328291703353723957535752855073 0.0588015263960456921950881143835267 0.0285890949335058425553283929229352 1.0290057229995807797446017824746936 GT 1 -1518671987127634657295867015738100705.0164336030746781474752165102485558 1.4282947318550311970536516878798633 0.0970389476998213075066342131345811 1.1020758579458613263612430189467652 GT 1 -1.6000611752130724385456414782357657 2.0919393640538555988667779868215822 0.0666828184312175952964108671518264 1.0690101770987115389830162375983500 GT 1 -889253666569767262444.1821724565027211020938473728441503 1.3456262913642150208766898067123688 0.0776566449632884438227143906934847 1.0808377223241816437590042528130759 GT 1 -61320956307995467.8557763073924454754480912353110986 0.9825278810495095761357081176363359 0.0507861047661746886679094852283540 1.0521211156382688510774289421158795 GT 1 -2400172571334364538335727.2989362190871828311183532175711586 0.6550812765682959020954245572552463 0.0768032338987890316997736023311928 1.0799128861577355316331964874648845 GT 1 -42.4433893634567531863122601771278208 1.9229479931406543531895749282753328 0.0165133715158217540704027983388949 1.0166512370927499019658601921016337 GT 1 -9020104958370312618.7504190733718621083116400729376971 0.1703236567184508346595081927545111 0.0575657451316411162035712465303936 1.0592891182008836957159733768949792 GT 1 -65647647872751815329279712.6714275037459029417167193189043945 0.7081350176801242769490513044828411 0.0544289940807189926348631526083723 1.0559662948992941679214748548794748 GT 1 -1091558772699414413064.2290269902130262176121045948060415 1.9875091637845963033323702382038696 0.0056831561417527612861428404259806 1.0056993667209629751312660036330892 GT 1 -8786563653735778340663715525144241.8530990528317145655127283746057831 0.3169688441704863459400532504452629 0.0356892952573517377020915077940273 1.0363417284772763252958586612721128 GT 1 -1635074122500813340102764.8911916696868095422442674867560595 0.1601431975707226962860504486410292 0.0441193532039635351790567302349338 1.0451222201723628207430685712118312 GT 1 -272570765717324709014953316.8232575440348223359558349426691687 0.5704887578484908780678038362938366 0.0580816877817161145183553287835672 1.0598367255563010814390038564054353 GT 1 -1008491527779.7528883223456957902979887153394075 0.2174458309877273989200587741510753 0.0274048780572277175313326244529147 1.0277873965064477884850824825015336 GT 1 -769223057195244895461105760.6879823747170428895823365977861740 2.9914550954154385893705270947802172 0.0759974254342726569143913108543032 1.0790404210177899496541560420738259 LT 1 -96105832768.9131701464111364689371319158976383 0.0448326468832632764266035198526228 0.0408929451240111479550370941547698 1.0417525785501374303570178755001402 GT 1 -6229448375310160885875356206585894145481222.0965913763039604832765392313731525 0.2014628586509664339836961562912122 0.0671521869443386450070522570513904 1.0695132071355737345423857709527083 GT 1 -3022946744582587348042661887278472.4067998276135295864095656010181942 0.7264516440269820850378407287323289 0.0258451287428863367567265768119432 1.0261849825821729980611594338988871 GT 1 -403369422278177299066033.8719836359407045510614050893394907 0.8965120167387423474640633703620459 0.0756826643167240798421400889287536 1.0786998294147390114555925418545663 GT 1 -7758096340808.4723931521739395472175036729420964 0.5667925230518504892659318920551260 0.0357586092764928858358258832809754 1.0364136104029281595409496228981849 GT 1 -423406792634311334284856.9946701248841467242517758191801526 3.2175068341502837681693449598909527 0.0824344830951181468256626059668802 1.0860312935321307145723846439236465 LT 1 -1637451047157624244753.7571385117593289421492518439141549 1.9140257764990000893477071406752151 0.0296719729286371651230678252443302 1.0301210924135337024981976714974089 GT 1 -129085253309839364.0361057503038690912042447758186152 0.6865103862130595835283616415496392 0.0992246737579827853064225690518118 1.1044994129109958163866508037120473 GT 1 -101253889.4504163415277260957817109165524561 2.9434365459011685158442072756332377 0.0224146892520291168997658990714042 1.0226697165083304482152318264308734 GT 1 -12257619104698637516630.8381250048828914719567128950340716 0.8287241594896857848163947939769915 0.0264130831420954031936285538662509 1.0267681753018364654889973387254146 GT 1 -1946123988780488863457288524086707.7485417527107438693842083130478769 0.2375788214840244962484484462717792 0.0561005602409197962122573345772908 1.0577356441898399361190829264089836 GT 1 -174398.6948633628244966217024143904843032 0.4305026661283842199379320075812141 0.0423904876214119444535021494911860 1.0433151912261112652921381331141748 GT 1 -561963871757624657485.5706891211625916805491786092001441 0.5354828508657890542329356498102545 0.0444592240451977971536421229281973 1.0454778412204171900343587167786507 GT 1 -253062942.3586747902299383783505852542931605 0.6120703721087632215555123227366752 0.0494097458153789421049306803026231 1.0506721671326905310580801093258376 GT 1 -148271762595444583606024930443425.3424169510570705846679122326083767 0.3142610317713589156900270164951355 0.0534430263745358154513655042067874 1.0549241161396293990311797605709093 GT 1 -720787100106895178108120.9833623768168758045538898565065467 2.3530765073523962893201500588924529 0.0939779949389572594933331269903540 1.1035617094399455066498374438402316 GT 2 -35186449926095391661498.5659688195680237971825459168528119 0.9684811466434240107978938154691352 0.0427850824680994207722299523413126 1.0437273385186874202303972978154603 GT 1 -688591226718785271592833370771036311.4588784361869187457998563100819057 0.5149881814264144065759636618101381 0.0011541670905089890028633665700392 1.0011548336542787337103136836926896 GT 1 -183319239352402033458606672378381.6597143575867341006222688445983122 2.0488931448565532579039247924841534 0.0455688514012371140792530866725340 1.0466397718923975326830309278293270 GT 1 -631391049294.8504240208470318352884089067805396 0.2374482642277255309266375053000402 0.0028185331343285194640892458160298 1.0028225126782530928349517351895758 GT 1 -1063806889735375056043570007686552005.7086772539460700165016339072551956 0.4301022503655851262569592443660204 0.0695854563522214505955101792882931 1.0721250462921821295231922777123541 GT 1 -499191270614837.1737844575113658097358780236843960 0.7601734788647776125917204786556688 0.0195085021497480601315447451646025 1.0197013046222382339728116721371573 GT 1 -14864997866195500490949477810580776.9763713364849899297272875947237228 0.5440280502580155119471826881773024 0.0033960133543832922470363574840245 1.0034017928963791733379613924898710 GT 1 -13753761707310423300.8862582728835147191221922780635215 0.6586168605655563570634265469540653 0.0378589377067000821392844967208024 1.0385942046656837601337209442708328 GT 1 -1209555577346122964.3884945121837911270212619017448845 0.6334725932726796976648903041078154 0.0880192493857793972705565680701243 1.0921363959132097822230622071070634 GT 1 -68597341835779233845761394572858.7973387509881940219944200974027345 0.4244649190705615450251176452350719 0.0757674115788416750608935754823679 1.0787915199458649438775028941858189 GT 1 -205368132063280654202477714142660.0595281155180467592520171962422179 0.6243892220546931796330667531666675 0.0974030377178984370506966981645422 1.1024791571143971055732015279508647 GT 1 -12177680222633.6131045524878861842937685513847319 1.0901175306854276372559572755535663 0.0269001598043358946182932693734932 1.0272685913761123680005102754329213 GT 1 -11605090841649326777717891157852780788.1717372983213443301027471396041420 0.5252602840947354198945901944326032 0.0107697140798354894254129969920376 1.0108281272243337201364056508315573 GT 1 -87.0657247842127636455682983219004850 1.7092248500330194338106545387492288 0.0689908517121067020591853111457782 1.0714861754505622815379920663520278 GT 1 -46802988149.3412120029715610510336663574379760 0.3055361406421317080989387719330293 0.0873107101690508139109810324562678 1.0913597741277518885000182705133959 GT 1 -842441063830125033.0868325598642776530925700060864878 0.1360893649686137423980579084259035 0.0426250958717963397770420842993516 1.0435602148926600630364183117739236 GT 1 -1228421759066072004562467.1486834612152560435675123644197709 0.1210048214970776718630034471277399 0.0523931272223169597421844666368576 1.0538155538980557995176117504368414 GT 1 -469337012.9241865653764629350975667434038543 1.4105138946084848763048178144386907 0.0418753008346618925505861543537848 1.0427773433387946794580101951478453 GT 1 -2748325698919143509.1545189079810842204832122840132018 0.8764219449502222891770446664477941 0.0290082501670688258196265881587202 1.0294373072944352871971355718351208 GT 1 -10164631758258048932551.5133264402834242106163306592857671 0.3936315641457912968915046924633818 0.0621486188674183569486286366431368 1.0641637848185764964414490798984313 GT 1 -79486135599710784.8544081814187401511093157883646440 0.0053314357271002929401031057159833 0.0809152929028854743342649535365500 1.0843769877543110576070384565578201 GT 1 -23206625736482163494.5383988855778311558100883850246051 0.4396226362093044113434325319119611 0.0066337483308313071473512977351507 1.0066558494356261112448652531101763 GT 1 -1416220033608900653259208.0158732760940180445254383558482898 0.3927673857631198218764605299160317 0.0279092414841687435654609055387244 1.0283061059220072112182653291361074 GT 1 -563035222153615450849301787175309.3432713570615572821422630759321554 0.3818171780456332693055574199319386 0.0217008849243008002152543217302530 1.0219398120722661568610141008770800 GT 1 -17157575259225911763399768126492362943288247.9961743633568890446322130999827376 1.9277926705436061809630186108180784 0.0742963404776923929873742808835287 1.0772011176681006449247946393632091 GT 1 -1001745680294.8000069948110177357666770596266623 0.7912840556039040611869419182729946 0.0446216089091936554965145157880176 1.0456477959387402924166812527284824 GT 1 -19121781774164822124097989503465.7860165561092589230220938278604597 1.6048605352211069819733579726507458 0.0810289115313685955493205760550168 1.0845006168942990128569262696049961 GT 1 -2960972138462347282401.1865537117144280010483250882344287 2.0095024627295181150838467084561555 0.0962266258249045497805131500292579 1.1011766423027103880444734645689233 GT 1 -1021429498934720.5698491335285087881130109581851785 1.2468788234109650001497546289626806 0.0904899305724989641406139745987325 1.0948492096971209905556413203497602 GT 1 -2308909197460584876097875652481284765580.9592094500252574171704354231330899 0.1186784482421504473521195631212109 0.0410744936065661028129228071384829 1.0419418855376861516611980126050229 GT 1 -165368259799053166404398983298.8639821087061841379571688470954145 0.2104609383288756100055765639689465 0.0903880142690402836653908398141034 1.0947371597076479814510503773852705 GT 1 -474349303393825268752051479209437752022251.0697036187035371230611807935304917 0.0436357498128767509468268580218229 0.0846578254440716815842224739928576 1.0884573223493917587046530919650125 GT 1 -817.3501651956765459172735062883399951 2.0123500684767271403491525984344167 0.0214860343114457008238117708915497 1.0217202196995142912040905851430016 GT 1 -914824.8917229869507960760108321256751926 0.2681959042731877278924578186458863 0.0504120333584479644947095767462355 1.0517271077956637542632758056001973 GT 1 -923383350579144167926096224814072.1507436523243738942743013622207154 4.6047812509712872644728453181976881 0.0439312232277896606949174612872611 1.0449254262881083665299993648888342 LT 1 -63514026638491966.4238418056113238478457158919642441 3.8589110833382345818951523518727996 0.0388049664495530615372825039846559 1.0395779420594650535936871789586574 LT 1 -2.9535517637506727876209526240181836 2.0428170214128458234445967718919333 0.0263794249609651404257156406372639 1.0267336045832318183189153004615345 GT 1 -3409191418776719083.7891726386915199649033886764094236 0.5029770931790888598210904201549249 0.0568458229990697092871225710016432 1.0585255134233135880906113293032803 GT 1 -2336748590756440.9172113634681341637584838689440633 0.0729919657168392297293916246159638 0.0585139405443348712625143100618020 1.0602957377330902131075397265631884 GT 1 -863878420427743400993293910335639669016022.8641676892143353275834304989479498 0.7595925738928996995352276897685496 0.0069703197125615093880843512356833 1.0069947258696103359748727317249464 GT 1 -2066247986.2519041877291348852096042037785238 0.5574120645604013330143383434307074 0.0946834046836247882396396079921153 1.0994705673792685081405165553123282 GT 1 -18131551248451028016.5414160422710485631124932258093373 0.7639072887702396790259786709449135 0.0304933928064102385317992742343876 1.0309679892699559020239440137467513 GT 1 -4907552674389233914847377997272.6385105394069261832981387740876663 1.5039663672583068664104048900961172 0.0594955276846570538746512027793760 1.0613388749994682589205708426492747 GT 1 -591865503779277983140515102677284.6418044231123135681343096034098748 1.8486821375644019157377109680238519 0.0989944024026302463540960050092995 1.1042438087434086050480321753047747 GT 1 -69783710022743135809.1513156605676460977693909745657587 4.1049146787486175922366856454444170 0.0722387437401071845905675139575638 1.0749808462560805129015880719701894 LT 1 -331863164062261947270565818.3398760969033950781545459955632813 0.7485880321992720227512983384491015 0.0115948494144735251786395454840279 1.0116625938477441809752758812826956 GT 1 -242915977326196305130.8249013285374961141741493170483550 1.9870453401756601908139858434635754 0.0657228412317608789919974691865022 1.0679821409098353786225658188026850 GT 1 -8867196747281363.6861660374714787289571365058770074 0.2380738955049926609647998238975508 0.0399536132872774771437691362395211 1.0407736761951849050835207948469871 GT 1 -27584126268144.6448233132483880679494435790699007 0.3140705843263696650365128421113924 0.0502537066372564544933306157363161 1.0515603896724852935069815808582793 GT 1 -27782887884192035933383.3508904013315521686546326478784752 0.5391974295400817288911813254573490 0.0417660996858243955444559792764507 1.0426633759957458854355144023455035 GT 1 -3848682992173562505189771203804043861990884.1910236024421845413550398891333224 0.8247983148114498656772905627412148 0.0804350521058489851804960858423165 1.0838546035070960454826526424622454 GT 1 -44612995878590493971183979297922085837.7811447404031867617247600397023017 1.6109758425078166565081744581816022 0.0129955719272993775618650809143174 1.0130807531628726838684365989183316 GT 1 -1527548341860427039414.1308360210846830193457716380846169 2.1321457806966965186243010046876067 0.0619624624433865811880151182003035 1.0639653120595679981811425521817128 GT 1 -94153104286192851123606911668087199361406.9279519668737692918029061084778947 0.8141625219741477143333595345186179 0.0832714886088790990362026621573222 1.0869439122932916784940311164075655 GT 1 -4490244603051127058.0252466134782641153492175148164672 0.2504220564373444001224210653431788 0.0637209384391506361670242778817752 1.0658417042470307311595666912477155 GT 1 -19848596624587.8212008686583867133454816267733172 0.1175644739200850284298378349005956 0.0654060484641134961642398934123123 1.0676431204509766168163925654396177 GT 1 -21174069145448486041032.8589877444350048388766800600335621 1.2246733294302563025747850192937328 0.0854112219994995546476490600902424 1.0892807376776510905103666475938519 GT 1 -365858995946649915044.7671210671665859847624978802889697 0.3726560508602255904080219723850753 0.0409870488698829061261797147732558 1.0418506993618203243843864780861121 GT 1 -13586714223842.5402775498174392692303131580730786 1.1819812348185961367582725165093201 0.0955898392870021689108651847771253 1.1004723038857949667353043472931149 GT 1 -104471847319.4111381920411615650226453606030571 0.9957187971650306264421646224179590 0.0491338390909970540930477845572699 1.0503819614523203154565636579676359 GT 1 -938.9168644638488611861316388460202006 0.7380493856984073360400253158454764 0.0532060721326794845877578672640320 1.0546738146842503432642586406466947 GT 1 -1691881518294109224111007.1531364465632908693283110662454787 0.8585132446722671808907063762345869 0.0770510204439436832521662253280614 1.0801813227611027869032616072065496 GT 1 -22676802809961290786081218376187297880111822.7282000465547918119277462950638913 0.0418918922110550921140913985328649 0.0323956461143390695494562457296451 1.0329320005812530559030096351694377 GT 1 -117832.5023706693628038982366748192322377 0.7493605779729534529161761033488259 0.0142140249667919859388481708151393 1.0143160118021149439930288071970896 GT 1 -7781727474439427.9074479188848345955508745085321495 1.0545063098396443397431214991102962 0.0928918190823528387223781479958984 1.0974935626414100066910765366903993 GT 1 -10546.9460329107783189962751919342911278 1.9032533422025376101842491696550228 0.0478277205279469195838744607299666 1.0490092947311241891619407735777164 GT 1 -1452877850509.8517249048642955296502452939700270 0.3516338672727416700091037871654346 0.0505103270203586251442060187383145 1.0518306250610432170649731715985361 GT 1 -68118138.1806754825734343368244627496965792 1.0658033671201922643553851537247479 0.0492213017086230057125275415773285 1.0504739477317399128224145589469247 GT 1 -1542836383328247572236240.2598217720711958686383245973465257 0.4339617339885018044617389464219428 0.0260884448336649789408141779308947 1.0264347852467470492475315066785622 GT 1 -190688382.1860273687642032422692023267335114 0.0167561032199188977846920690532239 0.0773988269804220579151412254741375 1.0805582364311112035788490360381746 GT 1 -50582180164184700456138073138296866.2727787145052469633501063400507969 0.0352593378926139735458627847416385 0.0554871522043746818809731217531158 1.0570859893849418442370001439745777 GT 1 -856363966610191123960107856732455.6877839867733106790864352162431123 0.3523583817813255777316279501169728 0.0437065674781460143530443018078609 1.0446904752421346748805718456703760 GT 1 -1600396732034.9260580096213140674977354323125322 0.6736740542988478744709086397139781 0.0058178199572562848529460161784302 1.0058348093981690291628073724186672 GT 1 -3374152606095.7529316191865289687651406527615138 0.2892905394760276215409185883334215 0.0561704300674291324289397051267156 1.0578096694616692382870867576768637 GT 1 -184335701019122972286.0675412056861132799900718847067262 0.8489161888489422633923239897053408 0.0260378232972903571542509549484377 1.0263828090477175103586860578917546 GT 1 -31371488582.7999653408591604654599178389903591 1.8234050462192539523307019394215257 0.0385608448362845705695185023487926 1.0393239971166221644951217919946737 GT 1 -1876582243052174327978642431.9440511943590772030326223417964728 0.3234731585304761001603379394193954 0.0525148233049910628778616208874078 1.0539439867970015224847482331784315 GT 1 -21228963172953867.0299587863833227214479980155351358 2.4591150164045318357761604077704737 0.0036786005484141112788724679947367 1.0036853832383920311625441254148124 GT 1 -2459084006.1562941752714450488483993752380273 0.3866752235085678745590501002692861 0.0007154859536981347925267711204840 1.0007157420359292164388683440605999 GT 1 -481184309373563390946407115179.4497275753494793087322767984941769 0.1217091248858813546881771691641485 0.0556691804736729171905527935500166 1.0572787298144553480435492436614426 GT 1 -24879413110819618935120752637611.2496021025098587145708462290670204 0.0520966147150896956720036429854730 0.0871409770720297243808309854523398 1.0911738211224833857740423478358464 GT 1 -7521107105713994880151070339147842.7223361174653018715092741870640729 0.4128579294039892110498939829339563 0.0455991890348307701939104152101966 1.0466715584867535293926447583902598 GT 1 -19632310576.9055239502944118641615399068227076 0.0477118008683996584502650734376840 0.0752334269304933352861763597688478 1.0782139267545697869502522069835205 GT 1 -437.5871221979469893001713239089725138 1.0405777898045437455362450435526180 0.0211118770972450159814542543200932 1.0213379198941360544437281678621712 GT 1 -6565972269220857141492615684970031618719419.8520822399720574275830546717027956 0.3736123233939836198945880086413028 0.0714181141688576522092303465443783 1.0740967105528268000946718350401743 GT 1 -118993291265227036652215256130.0846151774788611995585994152361321 1.3515638022459964039503960177597052 0.0093712946023183643506831915138660 1.0094154814589504700335784290013344 GT 1 -68106.2539288640132073294055959261936212 0.1711456641929187438291187599018173 0.0137090874043590803951189715710285 1.0138039246957401957318217941400983 GT 1 -104291717403985593145055283912335399.3229882224275297037515480641938637 0.0674061185966078184502027370580591 0.0925139902419106567103282171455697 1.0970771292064923756099366676268602 GT 1 -308384332145430433988.6243204183799846556393288136207970 5.8828761873110676122770865097380950 0.0404965148469673090046429768108720 1.0413393312814348568946407355952244 LT 1 -4461220396261590764.1272401437683760384264846809097581 0.8896366370422209584108323676767800 0.0804975852218619632723222210182343 1.0839226087550889336446970950297429 GT 1 -150508848490299248.3643247618748561305490766918035219 1.9135763633353813451651158330906183 0.0465390859273999278520137618666681 1.0476568468399623247748468314881090 GT 1 -70217687154657969536948442510386341424.3975094080652786800717649684987353 0.0601257120180664071619385389514738 0.0652501090791229638307945635251954 1.0674762818182857931979995869225302 GT 1 -1112862642828598.2209298372063444904640277866617779 0.1267066741330643621517698810853886 0.0291837066353871207310506593469642 1.0296180218294383193104166244900859 GT 1 -56929434904002598362.5257237428980359947578401827949594 0.8322367625118208154992278038280603 0.0662175353539369125003383958056334 1.0685117751115915876919406189759063 GT 1 -2343138192953.7759762291570867204112176596216842 0.0379868199902414661227079827153667 0.0928576516198770266984716935656423 1.0974558969916796175286069343699475 GT 1 -2702886600.8420174869356950421470963272990409 0.1551299878085840470233924045799351 0.0319528104493925567623969602459750 1.0324744433580285460979844430190536 GT 1 -127.6188865495884515700159105277914986 0.4773990193082370275455859629973059 0.0360964496239349078878772894085683 1.0367640408541852475112291856593624 GT 1 -658286064483613707100880385072133328.9595051075854852478206717714044457 1.5652981387514278892746174044916616 0.0517687112806411265514630869718008 1.0531568310419218907747191513698548 GT 1 -30471.3999453780466270917383310361246403 0.9971462613100429797266953747631440 0.0856181488572252415116756309942700 1.0895070145301181246236196960136396 GT 1 -2124878368472848493249963806996.8237860311664985992541483934616783 0.1545075237561943583346010713072172 0.0743550620061361870693480042159555 1.0772645541581730915430914019531589 GT 1 -169417522315788024632065385856091.6476378545877592321688748728801341 0.0166005038605398104705444290865969 0.0850922292486563237090714526710186 1.0889320157800410561913381695884266 GT 1 -33435739021228661520436780227752665216.9542851656577309242295769219834937 0.5939801686187967568661614550292779 0.0753885334121348899341087190621174 1.0783816658308204910589206368535633 GT 1 -339677949164422281938.4138152169477202312074478013353602 0.1855666552768572812510859889930776 0.0558736936891544307615885817391005 1.0574953227288328660706033250533076 GT 1 -354562764424406988348261643444529085482.8719749642868297563855961105198971 1.2191443949706012166585293271055711 0.0826058708446988023272739202658705 1.0862180962778445234868997792666169 GT 1 -5372054737.6724250704670957323211252233902102 0.3283255119344288969740988293870873 0.0423288845599706903915804619662856 1.0432508632518523085072145217539612 GT 1 -1265347213972252971917593288309083673103467.0437139796681854429392768518390656 0.9617709523872994169857191095680900 0.0545501372572608949423826075146528 1.0560944195315657720629815365362128 GT 1 -2395.8222106046519999413900425835912073 0.1971102888658763964900463581853121 0.0753494538900868194331859151830746 1.0783394008388555318903997885070668 GT 1 -32218112015337478409293218.8489614602169275831129539152913080 0.9643331255779578863404958064883281 0.0062852102709085868070389522359616 1.0063050453604668795931764943770523 GT 1 -983290159269003779918.9234677704708346202432015636971062 0.8514159320457254697335605439325901 0.0988153619183244586929222123248424 1.1040451166393784788568497819396391 GT 1 -2198909843055036453200227607762244426743.6655756411476464522828695166646209 0.1742593096779376129520813152802527 0.0778754911994228351380037463182550 1.0810750224598490198341387654378480 GT 1 -89207130373415816.2011927847239367909578784913655488 0.5187084622079960920752477961798512 0.0374059694001495909484570321837136 1.0381235234622437632802788470649655 GT 1 -12745068769422997007315813916.7943903720001651294049866983694799 2.7898095927771006432796559307078299 0.0612595407747723055834522131798235 1.0652143856820736216555018609838315 GT 2 -911241871112.9826054948034604886365719090142500 0.1760437160535457094965938826655164 0.0046850892490238323133377984233418 1.0046960986798960447846860545392367 GT 1 -360092863356176915330971030929380033737.8696884062898154472968405351444716 0.5071320776980923855133454889883935 0.0136767232654428110089130854369875 1.0137711112453511335149559627388918 GT 1 -628730586080056944816854799206985.6971167310659883113040345670211710 1.5015548668838337624652375732725063 0.0402632962594135773981630084128150 1.0410962990751990242828266524216772 GT 1 -148550457941365880057281609.4720755799019501329773627635033455 1.7278454945142233680807291948961158 0.0502891449518023275379650225030323 1.0515977038225619426161867244520002 GT 1 -135920864.5844708945959717247241632122086623 0.5707523593194607502957454311584018 0.0164274915639042203319337616752259 1.0165639189736753963332554367778242 GT 1 -8428685732793165303045.9724219018112896938076870371645494 1.1512143484350685763727142540824698 0.0371595881130366138389376346125042 1.0378676006605933265509493184174091 GT 1 -19145825554257020946456026.9097502948550992066453102104302886 2.3791084497372590362642270727190841 0.0958733522054645180800222303466155 1.1058647231786800237391746205085908 LT 2 -3735648.8807202150939216509027943781187530 3.1088963473414899443155628800965254 0.0302830134387988171660063483115947 1.0307510164885661946801953992863780 GT 1 -93.3469307072870233657192667356433220 0.6014258141922491081539304920459464 0.0237603384122803535249843196339390 1.0240471678072653869675093866844050 GT 1 -26075419069466720913906810253341294571.9361757913312686185546512154842032 0.2587979681788042498359278585893994 0.0188790992654058778890716481162381 1.0190595846714513271309910374084840 GT 1 -25.3418728458300473639188539546328355 2.1278963423550343409268192945920615 0.0325975034095339262579430588173268 1.0331406378745808981792037591630656 GT 1 -32.3946360132929708515451046124547533 1.1267876183879825612757754491754673 0.0208413108434065489927145898551930 1.0210615564753514101845568051944742 GT 1 -19116559457760388439742324840138445410.3114776899010697191213827142739420 1.8999161929839811408199434930818028 0.0971399681981815407867134200420748 1.1021877411211714085293289576943189 GT 1 -11790736219636007126454556811402086648.3459174732414050070458015202454796 2.2784798024768003815778816360212127 0.0972675934425674857624244533640526 1.1075647308800620249918460272320577 GT 2 -1764513783323568911923996469.2035834690391253862937401212475983 0.0880011509106240455610047421968402 0.0965817438770234794327440804921628 1.1015696477269676036773940307444591 GT 1 -2235158166419347922592664233766.9249188298727009834118281152521164 2.1545871301095725778995205151666913 0.0688615187160674199701578519774204 1.0713472681005827530622243529968971 GT 1 -150114703735245585785911844902.0250370584975513416101751054726684 1.1952747290215016963037645534359153 0.0985365776905957717290670023595122 1.1037358114166043714998167230410980 GT 1 -677669135069409088533730777782160.8276603536460656377619418725703969 1.5173623145648463236741463664660299 0.0930053036788308149157339184097106 1.0976186763800517122048351137467419 GT 1 -395230588320861301302.3673909378758659817603540394703968 0.9368744609420934449450078632399184 0.0070608861735824229820056314864413 1.0070859321980804735923150434666533 GT 1 -24260188463535780017759.5780995428789424339676999692922598 2.0973328705408196195136976106737722 0.0674631899144342095682267544226833 1.0698466536206781967767969801615661 GT 1 -1105630358185169008998.2432760128853591654623359863195913 1.2809444668815675493930878872069957 0.0628425775395451408982143121487753 1.0649040039604635879703209278610895 GT 1 -160081101890012725214522489296501595131.1101493606811609072025626333148184 2.9012435667268213771909655046380716 0.0438577015728058099791071578334457 1.0448485292802689860124927221007972 GT 1 -123111495068490172098914560368324.6909045008992587904176416508727333 2.5873002921038669323424622149799640 0.0206761062557795382549422624047304 1.0208928497536667531746377563961518 GT 1 -167360212951.4973979629169781881972947062614321 1.7469979153381611138163750360657748 0.0325048147756648999895208776222703 1.0330448306028982012089085333967666 GT 1 -40874799636910550.9603126630309625614286125206856273 0.7300043936188782049536910167575921 0.0930025386602407036936285155458422 1.0976156278347992578103098085272583 GT 1 -33971748106.1602946522138446818549912168284200 0.3463661583049058924506629459209627 0.0826964741691677673707049522321770 1.0863168627686572033678155643708981 GT 1 -11824257415754420426842150.8454437220665733985263118839829177 3.1010640751979600617375355171953419 0.0215977676259738651311697841033913 1.0218344129539420507817586012726958 GT 1 -35693691339400.8531736599530957558170564470978386 0.1904806469760751597313889843284495 0.0292255056938678860209040714964398 1.0296610783362497958506860055552563 GT 1 -6114013262619105284932724.4215165430559968819140684865468537 0.2934324326324217252277215571931784 0.0831195432039940631281749997762169 1.0867781785868481920759337983125229 GT 1 -2480845042434659142529.7917509445562483594591394853989770 1.7922709349972254846068782748831266 0.0020547611020557136860842002185628 1.0020568750198760948020027630170101 GT 1 -87072657104627.7848360374779670638200159803271574 0.0841724945515434180573374511599822 0.0158624610716123238863697129906333 1.0159896163638180998514366306355698 GT 1 -439.6495279999898596270815336898126260 0.2253175811068375243294889720945911 0.0189833552668552642661618833820670 1.0191658524525131749621625217841663 GT 1 -27297700480942083422438608268687.8921786577311982885392514532622269 1.2132470944398688752965880618642170 0.0668913068841520077844675163991831 1.0692335864037682520491033864303249 GT 1 -15339007850853973319500417020171.7737972398228871375850917344175044 0.3509045374472465900138436932389465 0.0608447182878924237930444583505637 1.0627744442103875739935507381401329 GT 1 -3862706595.0224416141940195890425304052899677 2.8906432093613349721824826233854384 0.0059313494481800916094647591019136 1.0059490097689675587364258275144280 GT 1 -193062833697158834029303.1068825481041753494660879589287614 1.1556031879481240099900433153571786 0.0092636178388348212769113101583742 1.0093067919859546484467492679807028 GT 1 -9465200850642825644861884820220.8111750517319646088572136839783330 0.3652198520139736282788477060906689 0.0964858640667167043843994921668069 1.1014635233242857172955940713405645 GT 1 -4470699873098255.2529617775852112197482102507082649 2.1760096357536511113611220506053758 0.0139514836556737905743312544471779 1.0140497203726692529704101202475892 GT 1 -2428901991364640056874098346.9409152201381166438086988993261082 2.3508890380139569593273292717538598 0.0334907126668431290997477940594726 1.0340643711371295942713305520706991 GT 1 -987469171985544026.0491826679379127259455050601291011 2.3300061871897375759920825535258111 0.0345828764129762211877705577226007 1.0351950186155306293578727526812273 GT 1 -37781.5812264388245278771617502957264866 0.0733360954385521759863746034058023 0.0696866522200599396003215428839379 1.0722338164873347509041537172685662 GT 1 -106493.9434435776944800034390552668170382 2.3464629555084380899793678430548829 0.0555904931437822392675096986481727 1.0571954072646722229258662974723927 GT 1 -856073538239686945128739224105996849775662.7582980605924706024203506079023533 0.0288713696220982417754000471451423 0.0270476340654705477225485625603883 1.0274201538685803545481494190243987 GT 1 -4472934.6368548567904021790351598795681985 0.2460449364156446163132183954543371 0.0103630006648684620568888850112812 1.0104170704306575922270420510575148 GT 1 -63979607740788530.7735012740979765326956217862873086 0.5355159040266737358697968160611531 0.0909469333167932024289447942552641 1.0953518073192103582389287264833715 GT 1 -463056364336142043490933111114447779.4147955052803913231887083519645381 0.5637413285808106829855007246441732 0.0974446691250438230566942992521116 1.1025252822056822926005585173925705 GT 1 -56605530618438.4323544298333399727437856544934706 0.7751111671645576569190012952899572 0.0016351664306073214851099939902356 1.0016365047743773924524543823639236 GT 1 -2484330611364722717414863048844455607456675.1715693252541361797194277836379057 1.4795464807894866061855509078255339 0.0587731333491916363039450662333248 1.0605710774334770149627242083067323 GT 1 -3256276523088571718.5442782893832302625646170794635446 0.2071880059959516010290765062457598 0.0997523201094181767902575784547618 1.1050853536399426107462381145603276 GT 1 -2573649158061117807825768441379124666.0860177416961205960135058111172240 0.8506952177988481613648774841384978 0.0924024284127581827797322426389574 1.0969542017221169501835845511349698 GT 1 -470308636235631207909878.9990249177922293994054802970634719 0.4026477651505061883422740358499791 0.0837893098925945220152765757840508 1.0875089297222037241954137884119496 GT 1 -4813.4525094719019653939821883792012531 0.1723373162418439660276317431867199 0.0350349991484843076129307900606706 1.0356634468485229353101985571566805 GT 1 -40044527134409335318444261003.1642091081727253134671669840040539 1.6898719859150362059189391169443790 0.0366348507678804592162903339233587 1.0373227602045912860493445315224294 GT 1 -40558.3222333565054386529073726347029126 0.2064537818923984515321816991777418 0.0658283016207431183316392595032843 1.0680950264070121478501748845817442 GT 1 -587825459734.6549192044124596314748031960904396 2.6306489232409720129021819184997938 0.0614067337970996632623843236134160 1.0633730499466172518339356493473794 GT 1 -14538116552276.6515188073333919614344058789643012 1.2298754570224289362888559351278624 0.0335394370057548808818852862686137 1.0341147851039214908452522374676355 GT 1 -981.5687479240767664510735140859946424 3.2100874301167797238271756860359113 0.0852735963233779946529443611473845 1.0891302707950059234595957645536727 LT 1 -456282622339606771739866.0488482634249208053074254642216947 0.4869260975972486197114206004440853 0.0979785016091801430963488667776682 1.1031169250673779838284933541090807 GT 1 -710577439690732363543926869310.5559564370256503799655732268709192 0.6360702453439734475844023834918104 0.0821979347040191391724034343092941 1.0857735267559243747486637794045963 GT 1 -5041610776862027367797648771574.9403013009553698649863442000025936 1.3014847420107437016430288426848768 0.0291118095928377604804081678111686 1.0295439662322214265971870946547875 GT 1 -331150610930254706291278783746468388.2784240239913410882158659787852058 1.5530704496159270345676601867234724 0.0507360207092988151109955166688911 1.0520683533095005623952277830759024 GT 1 -4468618648581712910580107702176739956903566.5592217798377812147702415851945024 0.2924567579475762523676284133788057 0.0984877099118611747704544837858519 1.1036816034997583031281484445038201 GT 1 -1222721953999972871.0490995960112826853175378294199689 1.1388716502818941293130421400793328 0.0532827009525827932597248647181412 1.0547547530160182511834897915209213 GT 1 -36756.7358060064906947840003910924155189 0.1747386247194968402166727586646079 0.0833000920614810561969631936186051 1.0869751144414668836441824568720033 GT 1 -27057934897551897134585.8225381165009335456469427957224558 0.6874205885544006859822119795021303 0.0103397021792989126239461517542583 1.0103935282517195373429376553834571 GT 1 -1170711487711940762177522258668830231436.7543592400901163824137383578700310 0.6346619274263328351739339359680672 0.0877956235062156436785733141405120 1.0918912169811366855642999632494973 GT 1 -548257386669381.2104892357059383540040606311721971 0.3204683269498993844637367144676346 0.0674570885379774270097006839406786 1.0698401108693026774708261987894550 GT 1 -520459.8990259386903774932153652337256099 0.6334038048184388091015492534623413 0.0099349468175962183254008634775883 1.0099846277270713194193522530315024 GT 1 -366237657.9789426105013861244321335401989745 1.9029787643532451078239181283083198 0.0142220633409324181160275713067692 1.0143241661146308157674504535560223 GT 1 -640538504471037.1299503768558425153407974245688625 0.9775268655499208578988893245471642 0.0611585480705313336363532169815648 1.0631086618157096444254236310642268 GT 1 -20812894382357018248.4419037600232298427041503603372190 0.0916035056650442579893831953838647 0.0025722119691148500469312738512502 1.0025755257901082984090601628170439 GT 1 -459919998113.6309538647026235319339784764597305 0.7662114432186571726573057475184263 0.0955873522157760982168180384765506 1.1004695539522864009830837361214670 GT 1 -2174723157668540604358887.3837158536616655402059670467538335 3.5212156639912957706346015024318947 0.0823620319442712450233237659584990 1.0859523364557320758257292346585252 LT 1 -2627059758562719989303464034229.6731416721970754729064996764464256 0.0605698673782281067911714358755506 0.0240719336620551054614441483759691 1.0243663978078063879647314421621149 GT 1 -22192369448407329512370745586409699.7651649493572930964193085836702992 0.3175156986732179735672729443695021 0.0288328398965548888324477008650520 1.0292566729806379317928983452711314 GT 1 -2192580609113285511185.8518627865051241051351902642921573 1.0542730398870852201392644559484608 0.0359034471385141866800375210947521 1.0365638308171200837724121717602645 GT 1 -842938977366180376922216072541446.3913283459422446841271373486605873 1.1557166248203733118673768816848921 0.0415773126404857866848531429119909 1.0424663797814388920473400406604444 GT 1 -16161300.8321484759451147728614377171546537 0.0383551903259501407180153566162960 0.0409611973654188284277514790392157 1.0418237433587668067154472440651460 GT 1 -2315409554618.7936706487048529896453312898080114 0.0870964998445454874745580443547484 0.0534748214290541721445564755268008 1.0549577069211857691721296173166958 GT 1 -566309156760402706692550912878.4064000962478385764058547472484517 0.4158209590415720144501247301870024 0.0669176530212292052916175440461720 1.0692618216021085163306914312226081 GT 1 -86746256655713.9245834292362254538454808428484742 0.7360076876505487824410529690313945 0.0953092186441249685087088573000876 1.1001620717272654864897622926414403 GT 1 -920471707974160643403849102261401620.7222254546693408564856266096126874 4.3369970583972775476104384108084830 0.0632691411196239921733828674687139 1.0653592750582064191717117534056131 LT 1 -412459545779404752121720487321.8018566849383620784418010327701682 1.6764789687356109345791054709490157 0.0383754532875845871613264219214041 1.0391311885798134815665481558834542 GT 1 -3926366064.9442278346353436338482909720531447 1.1096043547699102288585470597622609 0.0386810158420048290284083800117369 1.0394489956834404749207135901372885 GT 1 -4409139819382.3480931660779310484918758059895528 0.6644827341573428628944117701585335 0.0225915011584115307706794145801078 1.0228505988272382695664054682327792 GT 1 -53633720212076.7980286133986007958667968301056587 0.2477825786439274884867048901860824 0.0142006498525454030124365042393370 1.0143024439244522691557599391805376 GT 1 -31248156948937916.3763057273936626943864818997783181 0.9007084413143560219140270042003643 0.0079868273792140446901041686114342 1.0080188929338286831877621578526956 GT 1 -374690.0954305130664866064429575541655951 0.8281247572901622573296339515319497 0.0984778166159274191154803753000382 1.1036706294489795591919574994898375 GT 1 -5698072330360108068102513.7101908995223160690802301039919365 1.2266548296484008343293101568589918 0.0617271552905354265605254101040005 1.0637144930518934064301916830063120 GT 1 -4511896686594422.6167796068638919932132958525809172 0.7518701077308475421700542846775938 0.0855729165512772207997378602646928 1.0894575481204766520135419690577122 GT 1 -3476167572278760867236159.3209569048780713328629186400084220 1.2643349045857301327608949984460951 0.0207637708339654530495328655991886 1.0209823691686890461384716830253980 GT 1 -760425893171048047626078733671406433705.9802482608808061603554863792226416 0.0440514443434171419020904152515825 0.0571723544347893287239746954367580 1.0588717855189142126414746027677989 GT 1 -6.3240199461023063101892640001812653 0.2903551315479444630553654817031974 0.0162464493881384102112699764639351 1.0163798699946622543547631727331009 GT 1 -23413649217236696409891405876809.0110750815400827254021513061719934 0.1529018278516015624137845329430154 0.0977215657477995507462826726711803 1.1028321211293309833414315883447250 GT 1 -132872559197980.2287304289506086035943490305902537 0.4206642408630634835344079007498491 0.0227206821551615177254104383919013 1.0229827744062082595714128688909539 GT 1 -20149224208668698642157679508962.1541349836007613520697905701407503 1.2424156236967228307298381600633681 0.0854019517508200920673433081335148 1.0892706017543582812975941839826330 GT 1 -686099470717628887768342811402.8717844802616510782071199064376118 0.2456477847170905723818538321631296 0.0963926064923929666120880903040755 1.1013603121424285935451673378367449 GT 1 -164468465033491107221563499.5840251818428126394247106164237997 1.2132845355884666617259229019536614 0.0174465178134609499009798330625628 1.0176005019247808728090010929091049 GT 1 -908416708887957034007583289039410367578.8722285772889678475437336244315603 4.0503606404523410614392375786615688 0.0091038565159370610921101221769551 1.0091455498573799998786580267904170 GT 1 -22650427116701328342471062408459392526532.2031150932585536539453597209555491 3.1446779369167474183663598369034336 0.0858719762474961841549492525179626 1.0897846475857404247712422984558167 LT 1 -1091425047502666207454159391819143.5205139698141681619853705261052809 1.0682378543399015664500063806728199 0.0703679677597965012170594362053376 1.0729664353884368350549841279246110 GT 1 -3398512434.6120557706417641056712122238175607 2.0980696428885752697072608074316909 0.0431944736658429043849122525609563 1.0441551199515332278813382224879428 GT 1 -1.7087389718775958728874371702893334 2.8023476186255982458595662257350858 0.0130417720198006642011845199871582 1.0131275626527767161667126088076852 GT 1 -116985731740168.4259703296006255159348945582944606 0.0473554186324381730902169741780583 0.0637802256214556198839644532175471 1.0659050283796676971014951914812104 GT 1 -821136935921010300364135.8865028935956344568510281571951479 2.2022403384852148892327089313049809 0.0648429722542897104065853493510480 1.0670408196814247071815324860108553 GT 1 -337.3865679503454035610564588325082983 1.6178242156667817361607718734385350 0.0337455046315787782810265313744224 1.0343280267048632559602074561067343 GT 1 -1744008362259.7248483252370896726795350751664509 0.9887605865473763287137460907435745 0.0365881763397102287528219153477550 1.0372743120148568051670963823454959 GT 1 -4919738221884184286889526598703015.5143106952098708743924663347271116 0.5021274064247015416311380598599514 0.0179703976722558737938952767118811 1.0181338261454176545903856898012482 GT 1 -1673421319489870277506391003494267711668.6272330247306792208294150774614312 0.3187333889367384934415210524284209 0.0773553562673553428379210039888256 1.0805111199844241503839787752158224 GT 1 -27170165567958943019671479822979665957754.8015665149632949306646704246073754 1.0319434844619231498110646153682811 0.0508944675337165156007993878757843 1.0522352826915880218218699555295252 GT 1 -3218882084298564256844.2550264069104005315940209372690548 0.4124395642535904407116548345145977 0.0637124184181657479726262617646808 1.0658326044149727937812580437896314 GT 1 -350609665993031.3238844643226061268447133219418284 0.2798929063234639868887639840961177 0.0195025305040570890145001711567157 1.0196952141793133347057416264633440 GT 1 -3341.8679637186873579492826169979901162 2.0481052701223182182352092414239352 0.0100400525658875629388612594471607 1.0100907938091736572257117384186247 GT 1 -1539912705.4090435236391861735249481853166747 0.6059730998674998316634325426342125 0.0588954226801617237084478921317170 1.0607010113317114041715603977725332 GT 1 -112009717115411112902907337979088.4514143993685699665038690101667503 1.9816218822168984553528629201617717 0.0254568543691112000737620110805993 1.0257864863805569720635950242979029 GT 1 -1068115.3148618113653545327996116999864517 0.2877815388871898903879802601426231 0.0159579288003846348317352225765991 1.0160866275597027823647044203412657 GT 1 -62366318898920377.5772512873953971568815891497763267 0.0026379148111183801301697297248957 0.0286433455369424759497165215622641 1.0290615717841506347260439405904750 GT 1 -109089272137421.4334938005459669775111165729388246 1.4531230641394563106051769356595109 0.0256558124018274409083613341136873 1.0259906624045016400988274080911911 GT 1 -136575876827054.6199556415862761054216949738208363 0.6072749527332015616962584150933039 0.0268058463075123282691553012606821 1.0271716753940525601535433937166589 GT 1 -7342646832956560332878425163854.5984114395121240749092140717102489 1.7512639120408321225345626436601778 0.0798330530808766849234545564545042 1.0832001613591335299440620845307632 GT 1 -17057953811429724168.6497948858792009332965895604307182 0.6003567323696444969157857515269974 0.0766291269907652823950738929232797 1.0797243126066214667436710896595087 GT 1 -5664187418631915086417903838475.7027853117322549343225840798922894 0.6649081519491034745576491525543302 0.0145914358409998997570885255454410 1.0146989378617359258076593548415142 GT 1 -76946025474592453998506187.0937905083698263470623997713050672 2.3664556481978318349922893464991691 0.0737401120228051736634699169529633 1.0766004271497980399367166230988380 GT 1 -431614271987431147341027674598033696417.1231831263791589332997260918937396 1.3662242791033294248323344990909013 0.0159059355519968466156933877749054 1.0160337925474715020867673113828448 GT 1 -51444634520438265048650206737739186757.9301657722592576387875722743686421 0.6833993916841120624366271776761394 0.0004118581354881057149956854056665 1.0004119429723446222700165322112940 GT 1 -1362799869696121239663915843.1857705841604946528835767459859829 1.6452114248008797354420181105242318 0.0840501035849922762586707450638621 1.0877936140409010283012737939304367 GT 1 -790957677365644697302810862133263.3265403109433244451040710038757496 0.6435351035595524803186268971565986 0.0117262733113563506689486242624310 1.0117955683015995423692622589698445 GT 1 -7400537078524353776475125.0576098632939843825938412434390896 0.9500950160741556887803118087990005 0.0463304197107097156091511691243625 1.0474380194255407406483405118289879 GT 1 -171549665288436135876203002566650110249512.9908248276589493216790721372891534 0.1817711822662643740832405876476426 0.0423069455920059313749396271641848 1.0432279548479977462256693998952721 GT 1 -757043749382729860800275697421.6091799285844382911692493564257371 1.7756870592911848083111064528904539 0.0015085003828401639084613963826579 1.0015096393150732520785696860646765 GT 1 -23674289.3988435531507320123055726346753107 1.0768618560286033829257936898612007 0.0264075540901598909849596777033029 1.0267624962647212939249201679414458 GT 1 -1.6854595743563951557914616794453998 2.1331433657896603885191302738652141 0.0597001392461106505677929486238824 1.0615564537860152873317151748648181 GT 1 -29305208.2517871106250182643212483729822410 2.5498773270426767174406198572078078 0.0930716189827981527681498615048784 1.1024636378338326417863305036535412 LT 2 -660824333501813494792822889892.9108247513953032841531191105099991 0.3166199138938944511374564687372213 0.0363253629612186328128496696338223 1.0370015547873210733336559961887120 GT 1 -1204.3456429568315819879750496937596066 1.4818104168755405839510770497337143 0.0608444087878418227601073404067673 1.0627741146589218795127370945225423 GT 1 -374830155336871351912862595522.1053758695704390811558691327651469 1.1953291119521455484564451176733988 0.0318902521511986081385797936685315 1.0324098222552580807486600058428441 GT 1 -136779521023804184405606406.6782010482556680342396894561961812 0.0174661274697889707619211122987543 0.0176029670397677440075045468267393 1.0177597417890231565866424990984214 GT 1 -2475229574914851566077.3942681851287487158168951323090768 0.3597576695307835287482666355414480 0.0264370161037056581717191827313381 1.0267927578587337954143246738042352 GT 1 -35323014485972116.6203511737868403483761348673856252 2.7938600312095435309705119460939915 0.0404007913730665685769584577892479 1.0412395727075030124551639474283055 GT 1 -74598935982.5655354756134641605259354142583382 0.3262640060764368376743185134161484 0.0439002410652243800387869937790084 1.0448930210246711279047467634970557 GT 1 -49478359713632544480669162839671.6140043245088196131159735887559489 1.2795711208055178164072081079324396 0.0597497586205533378166633662424538 1.0616092249133550087727577009353076 GT 1 -7142520727072.4177114131700057645544637519341223 0.0518859078460760975553404162784611 0.0900183222360849931918042189607001 1.0943308139993077010780634588288270 GT 1 -605037846172030791524399450936792087.3430792424307876907561967284555545 0.1454520842271502868578066393633744 0.0966818354854779023094126259931753 1.1016804459678327563443240692732132 GT 1 -44145809483808814925160218.7275733180351903546602592428690793 3.0517548490189876438585293919353861 0.0721746777600537823170138710452794 1.0749117942583767427749921624099956 LT 1 -26906556253799927841450269016285.6169462993096859750558545612602766 1.4933883336604608100760723246373635 0.0299169590995492658741947931373203 1.0303736019732424957199458690037523 GT 1 -10000975425470051841570.1979144016779632367686428563774154 0.4445675929007917828057343895062127 0.0869737216388060563762560927295507 1.0909906163685227830005860023061400 GT 1 -10424668556768672.1078161357460345476550364593043513 1.6269006324941224105013593000339657 0.0701467099432130171544440254068920 1.0727284579062006417801882945543988 GT 1 -801923824.3013696085352652827525496975527426 0.2509691525954830324802680974771752 0.0613994327951140409145779466011503 1.0633652713125138090370615181652518 GT 1 -18478897168038103092191.3459587338888474434540538699266452 1.9070824589427586592827528726922741 0.0229781479256500760166366986180534 1.0232462606855402745426977869232828 GT 1 -9897909725578089802656960368722770.2193580456368414915879642033235109 1.5119789030319442904448668988828777 0.0470922001771725924945875179244150 1.0482371273085429070567496251413610 GT 1 -895648802282.5237146275206447444840773484374940 0.2644084452799452103878234963417140 0.0475183269340406675900976607269368 1.0486844130420222912393083019259247 GT 1 -140625.0770705925943928841845384897872130 0.7702124241248531820605562926459546 0.0836962275007365682842613871180658 1.0874073399188625785179032424135083 GT 1 -151394948079.4552034235362346977462172883940979 3.3150888830929806498132893307490895 0.0327887362603649760893519860476474 1.0333383340301393717224234634204005 GT 1 -9527169669794202.8361139837224788164162717187644321 0.1022464994160448515805711911675502 0.0281055340386373680730065470256869 1.0285080545301181962443964877096423 GT 1 -296789.4814395543005548750153316213109200 0.2724143446298581579338414150099211 0.0579291764675280041185028528188771 1.0596748230149040188636923208527302 GT 1 -26806197280796207047267407743285924453.4816327235308155956223737758500130 1.3311165846335236466285886845527021 0.0753246856712382826758278610939631 1.0783126146251547809873308869750529 GT 1 -484445527306375853801937014264943711.1739658662758286455037119446180427 0.9695279406883372184780995465066751 0.0458633372781283082004370402409205 1.0469483654644796428871501649340380 GT 1 -172619194434014151413.2787270969693079647610496173652631 0.3721314572162487137033613562481205 0.0872776358034349910506163026460032 1.0913235364215375468950498749192596 GT 1 -199297731218710371019732907885667627.0250020144254322867889504557640085 2.0142143847123150855190337133768023 0.0851490176225992736668479297874545 1.0889940877596001972536953787785550 GT 1 -1.2415430163498533417417215565029518 2.2544578521736816109400337061934220 0.0474975706173420646387313050053307 1.0486626214515594157704098045527458 GT 1 -23.4960857716523280640528096072264270 0.6871266593872613876048916844459730 0.0492638901157892208665737013969882 1.0505187419210780415039654485582591 GT 1 -1171227311881204.7245138478600153980335874275410215 0.0301665184076364917579588294090104 0.0312946167680251922191530812445885 1.0317947553937979412757017767597895 GT 1 -365599004759898473376794942988534.0437457994727724687017084417910243 1.5821396719883807000659924058391440 0.0030289798394756817401419684245278 1.0030335764833508068802000076461552 GT 1 -860811384124485.6688214515861322992489979134614750 0.8673310731745962305280411068825401 0.0033675045675663954966558943103260 1.0033731873725738706212520734356398 GT 1 -216348.2357209691225131732651701301746164 1.1710232158691747940219428237706927 0.0539590584671545179944018763095009 1.0554694322908027248826834514448854 GT 1 -1211760133822618604.8084797451258331405761958369944471 0.8076053770640954195509816515908285 0.0285841020195598390918721291554867 1.0290005831549603698646526433616768 GT 1 -145639262409664425280980798668.3820994533999919508664599220434682 2.0054716959599789068261313336285123 0.0378833004162639670870578650521762 1.0386195263352104267275327006768715 GT 1 -6426466327691100800948317999008721.5477640104471244073211622575632196 0.1908180199468075845518712882253719 0.0569990094471243378334320206534739 1.0586879459220036181700795050515122 GT 1 -5513244231054272343667066765.6057731947231295158867370061527891 0.2122995515241171232973914180801823 0.0300786696112721567829034110643426 1.0305403134657428571879853080670431 GT 1 -21451433823190352013990321517039780685.7736313509745654249570022507903658 0.3689337119693091394196245321559847 0.0111719674987391046286810373417630 1.0112348426590632767878259182946176 GT 1 -31266983513815356374.9971849675760894168493053867203067 0.4138932859992883224512232411520208 0.0641644974837268087194760715507645 1.0663155631244596784472284318293992 GT 1 -11179973975479367663222567136.9409715118711731025757950692404552 0.4022846298271305994498480469823452 0.0695352590599326888731383352015136 1.0720710962130806202643690658855096 GT 1 -4863799470676243.9977072412578848662434035423662115 1.4542766949770410085196627281225481 0.0641867897353435025369118816682363 1.0663393841026865442238446035909863 GT 1 -109946836138904788197272.9859223678097096286385588057120189 0.2560639114933111399840217030972283 0.0849872703420571768506948981994645 1.0888173016089163865148968527289110 GT 1 -4444507.3028274289685814828217365977789127 6.2813276471025145202989618109504722 0.0274001386701650210058370663677089 1.0277825235892302740418263188135925 LT 1 -5326857.7647468846158052044919123035990441 0.7755259263511975911781081496790712 0.0518008400915358198125162277603792 1.0531907145001009283502560566953282 GT 1 -49849560396295959783268125923039.2083812098364543208428640443982082 1.1299799139214360219627516198588295 0.0455813612929689220682413119008417 1.0466528791487308284670634523638671 GT 1 -68668115246.2068447293389649889912250156253020 0.7665102312532613294329530755050445 0.0071611478750168642294692777338792 1.0071869119684664359495587118987338 GT 1 -32695932917059904697260360043119567369130.9673463911426352358398652360138212 0.6328846849528796617456550171335484 0.0377705843493507719162947239156409 1.0385023789404151080224780306708402 GT 1 -36783758502911363722.7263180706961362055395895500848100 0.6486791826710990493150562863631367 0.0804393213185519030144406734986010 1.0838592461618894264632089256121548 GT 1 -12.8963975528309012683577612524987370 1.0660203173222175111452793446441541 0.0802561407614093028677020144546866 1.0836600615744851227299869389345670 GT 1 -19142.9490094226062437347850736565031223 1.4357381778878517935988329971509358 0.0942509993617595366838694405676330 1.0989930525603160049353786636601620 GT 1 -6805566628835149397.9824121928238421865280751272352073 0.0911233432103464549435609974786775 0.0300075256772426505425098228479955 1.0304669659449523831768946675832594 GT 1 -10988640637226371597065775.0101128514962452683357516278561429 0.3471527054627464061683498772940106 0.0971071315843741200737375605836786 1.1021513722317103022909834875154656 GT 1 -48413240900570210792355.7149404092127501412476482198249922 0.0697278520821178216220231492718031 0.0910026570630240772566179474713131 1.0954131078705630196056999179597868 GT 1 -20167691270081836797316274187840102.8846097766547026391721479092282334 0.2667600639625824858743109575904452 0.0995953404233027501838101440414954 1.1049109949555120968845390525432691 GT 1 -5085.2235632367134076626319543775438531 0.0443327704048461412735982572096840 0.0173065318831728693831298643904066 1.0174580405099411492759123480701166 GT 1 -17934760690389054732520017906813665157.7881283162279159658985444922706482 0.8523722100836931841725798978489156 0.0020805710105327975569145894040373 1.0020827384051985494903863190088586 GT 1 -11463354015342612922109898199557897917344326.7824497258935917660553177579618897 1.7665792875236320649464099468798002 0.0374903245065414151709544582041960 1.0382111604099872158941320248419836 GT 1 -33969441714367.5939384126583243234567050843943651 0.1085551053408895035155097675904863 0.0612703342363186710886694696405084 1.0632277371091736447126052514744273 GT 1 -798497889161719984436888.3352716181190744486857559716858412 0.1358793132676810772125003102416850 0.0795512844700854910926383040495135 1.0828939935711040204492402178412433 GT 1 -65843903636177245389841029663338242093.7456534936253995016252000640968405 0.3762034671200728846419211854810517 0.0919752762936670607750498734007740 1.0964836720000714876786788414770780 GT 1 -1495192069108591849899794337534746229.4909832798717673845075792281464069 2.9528228478984256563009487063614657 0.0496246990661396365563231691287738 1.0508983187860943067377585097967119 GT 1 -1738418141345.1726785635400440732897983146547459 0.8600838505064952723820224931337444 0.0077218467042767863282308390905066 1.0077518145335439094719372436381235 GT 1 -75239792750591517461604.1752526401978580373867100404474042 0.8308662011471696342925588700531917 0.0287213156822046823638615974893532 1.0291418443332467572560678135458023 GT 1 -1440270052590371215549685807042294163538.7124959130061854024408917924357786 0.2647035447982860331088679587794118 0.0036814617972699392439708580723183 1.0036882550556248003897943062671818 GT 1 -14866128029342221100065451446.2262416279065669567011529178747204 1.1837333742197542479782410448205312 0.0576729419551883645069066284946744 1.0594028692874837786611029010818568 GT 1 -1775806721874644.9988752263609903252675119661575171 1.6125584079236476702985647763263350 0.0064658151602521548393560296003432 1.0064868090872590787167373910330162 GT 1 -8847958657855555.6790753532443980446168819796226677 0.8666584641700626271816838871975253 0.0484118676592618376451029715839858 1.0496229718997665936864452364799968 GT 1 -118006337217387.1293425634002829839242409628583189 1.5338593014817543598556114395693035 0.0625200607898949757425586136919363 1.0645599195424033774631075034224672 GT 1 -1256049836148700167889.4565473718581536420078302671449594 0.8075535536693317485607880351502768 0.0242090966278822482525585027267546 1.0245069538695977380323600401908584 GT 1 -2169991011699278060095620.5547135384103347461813277696855165 0.4445762501895691896470363320117414 0.0067952365131269486856564426901783 1.0068184292592712923696893800653280 GT 1 -14559610236838528863137221341458.2428446095203393504038769156898285 0.8627596107641682411218063219947484 0.0312895633080911455565499912462243 1.0317895386923731984333513034408424 GT 1 -114236714697868613625255334.2233119423017048078710179132052764 0.1574638526576547490949850643702534 0.0549508842350346379586669448069514 1.0565183784845535601947954722856771 GT 1 -5.2600501626871365844021894820266711 0.9318318790788002648426684617978794 0.0541119236691351891597606672876916 1.0556310294763947467977720861850625 GT 1 -1139573.9488118541886049186039322472683911 1.0558614964557257757756284575247117 0.0994051796211048110780905750787014 1.1046998224315652331672255602941653 GT 1 -2208681043.9254702120869611968194840012452629 1.2838650611018656800564007915675464 0.0831203759063477827296830643345003 1.0867790867780149620155485068016902 GT 1 -76259499256101346.9801315157460546020362002028163344 1.4305661360620549503953154201262945 0.0180643634756643178729446632954773 1.0182295160299647624612645885106919 GT 1 -12722518931031113401408886879929036.7773010344233510868994062569653183 3.9389095640718247888825731111986934 0.0071623788568859551613495238387367 1.0071881518299299351828433873726067 GT 1 -12.4701958724303260895011784179541118 2.5441282268223703075422794735026052 0.0694361963869000491688011367429750 1.0719646360801437690960740305842701 GT 1 -61.4706596520011105847109793459097139 1.9179413890909726063163459854406697 0.0968715520042498037011212995133087 1.1018904898386624259564423040084299 GT 1 -1808917686797886855206801347554.0994622909223786283893689886948563 0.9213985664911715994873600488563805 0.0346699627710284285534341200331851 1.0352852286232195282358262556870283 GT 1 -463051665520.9048353952976338137949120381230945 0.3987570783176084607543622690738268 0.0000235228497045882610869910353563 1.0000235231263711560393107318062079 GT 1 -37707729291030709207.0198807885444932763184295480043759 2.3126217187634101265452176899675397 0.0080465942453645042144643399064069 1.0080791428057972720544188444990593 GT 1 -4334.3518815362847098106299205384289438 1.7014254180894588076845802274030878 0.0785717204338483840269479277673948 1.0818303349975953238497333555244100 GT 1 -3199072908428407077902760776209783.5905316904170369612331805451260499 0.9009206828259743194919727854167003 0.0937073489099499555329018267396389 1.0983930106489141893840310390697457 GT 1 -5060088127573326643630394171514060081.4903443311873285360368939305795076 0.4929778441951097687751219636846555 0.0442517540534223879070208303836349 1.0452607416711466233342382652690601 GT 1 -4817496851160991472456220221.6241061029768952827189611444599727 0.3339787517738812013273132776851830 0.0348285644004287923367754201123069 1.0354495399506020585505418198454808 GT 1 -53294353655418384381915921688.8007441903006486127390990245391550 2.3185142481525718980372923400605798 0.0553949389368993088531906169564110 1.0569883636442549427777630210049189 GT 1 -19884124121972961430499236760505586.1982784034884301880087551692154566 0.7932487592193051511112516483668887 0.0659436295118736190982978100337524 1.0682184887328371883107981172494201 GT 1 -4668180947.7857958382531500880852402764396143 0.4942813232227283918643623407656064 0.0266457460630496600121423086166869 1.0270071788480677036945703907258837 GT 1 -2501266464028923264769814427.2846251660239058710667239467048985 0.1239881377968448156351770216440397 0.0472215457397287811483300608623095 1.0483728742736875398540582143704026 GT 1 -6882556755971829081605320518939.5877126589912961867509978702801675 0.2295774270262335830786568651645381 0.0875557417293705757325248293152190 1.0916282822180741493842442773152164 GT 1 -12.7751515298800915193031142765294225 0.0631476039086097406218626980054345 0.0604183757168119436698861887693059 1.0623205833456347931452522092315017 GT 1 -630454865941004.6783726979544851571969056931442023 1.0137493261338359382660397453081432 0.0879320736732045217865366022022302 1.0920408110598631655125192210275330 GT 1 -734631216227832.7326345543259024990372936099172491 0.1358174902758587809191049709383686 0.0017275830441357850033495831617398 1.0017290770366349952051649049989874 GT 1 -2029485499353892949.8011636587288956951785754825187357 2.8795848591857062061570442016053325 0.0348258705424683409856275067488507 1.0354467488876864676717955520590188 GT 1 -133093972525041378448989108537608.4786443370910068704190331473034470 0.8922938653889337369468472053271423 0.0403283408331014040381914168714188 1.0411640747241643096356403162147242 GT 1 -155279007851907865149651.9075788972776555459435231687844533 0.4417529083072231793807989803211413 0.0093230907524453269331197791119906 1.0093668227870865844929502158200986 GT 1 -1063113770451579512551.9166955602714688912409119378399020 3.6725850102451135916633109459000234 0.0333482845716917012788352340302387 1.0339170185935952663735893406023313 LT 1 -60956.7510301248490305195466051011912345 0.2779567757010855564063265237895158 0.0796521691952024436305555205092848 1.0830036034303998057548684317787539 GT 1 -13246490770126212472629614139572134.7922961598963446741368236874842457 0.4262667222230487152255677854259757 0.0552195988766309146398055798421414 1.0568027582563857605242533502068975 GT 1 -30685.5597606713637930561529657983077567 0.2516084976997714095506567545223936 0.0002994296226908722572793284495927 1.0002994744606911183609419076334072 GT 1 -49558671264931373810926609130.6452437645735586865942295439055840 0.0237234678994592765911124651752699 0.0565893077708600069529553971863296 1.0582535744786483232883869747110308 GT 1 -8170054795613943509.3210778984891088564759236828366683 0.0850212499922803089254165734253219 0.0805704917823851315270817663072364 1.0840019010438894856381727129049237 GT 1 -7493134540948474696199935037472144487.3083290532931281803513112965751613 0.1607434643771434847015886493063984 0.0449082856408854902953646749957980 1.0459479071344357532434377580333192 GT 1 -593783441640841314507.5375095404185033507237109149558221 0.6182523501294735449175869295197971 0.0007616588042820145003639331618037 1.0007619490137188234042033590706635 GT 1 -17504678549.5383939580658807455808396625907788 0.6992625582139833594955712513364363 0.0753212667460561548636205446001091 1.0783089171988165407879843215246523 GT 1 -66110277028449783007673345331421999286.1299659354908146194313583617232821 0.5309942922565280880204112721751379 0.0253184367789148309728533287546742 1.0256444631548093813071695583111440 GT 1 -29534899305368709568874668824336322967.3331427506668824581866649687984456 1.0126922356391356140727085741742360 0.0622619929882392797178440900503484 1.0642846792122808419286321573976498 GT 1 -85141432877165463.2950798858529495353169564962120199 0.1421915738083944297988271699724068 0.0705063319272214541332553881402821 1.0731152840302012137311927778225838 GT 1 -4538699424987698484472585473.8649953635823971660482252787257727 0.6165908420230297283048200950578456 0.0911142343102367356187217405764217 1.0955358630101242835506004071303770 GT 1 -1315274146533999150284437457.6933451434111505457504218958818634 0.1482882273741311073335685412384539 0.0366010963613261869614998884883958 1.0372877227992510392131980326234891 GT 1 -12742914372262369330680901.3097077783071843548085718144995710 0.0517124205927459534120754922963467 0.0918100914666695430376572854705568 1.0963017718826285563121218935496947 GT 1 -1682122.6076362137088216338651051266435952 0.5930636369701383648534600846657274 0.0077791878165777659516815590852589 1.0078096035405571661794176585445292 GT 1 -72581909368115190936722824958142637897978.1255311686734653032290354823515340 0.4056244950425243762998403663919583 0.0743606177011833823280507281017716 1.0772705561482362209108460089197833 GT 1 -2723699330817.9573797242380861780669632896628086 0.7158525100434037698204901888219128 0.0997319603990144898784006732624169 1.1050627382190560839889198059600567 GT 1 -24499.2610331566204318653174303386144081 1.2988060426340367439456237659608713 0.0027774761867270625479795071924701 1.0027813405307853374092308888218748 GT 1 -302382059758245602324986287741612233.0191754488943968870168353874131715 1.7482119885939827008442661096955433 0.0306658798644090854315579979636322 1.0311459173029527215756580487083320 GT 1 -883385072860291789193441347035986853807446.7428315989107744649514063073494076 0.0528979658863560491831918351372750 0.0843581385485839467627393733650882 1.0881299717092218978439113776568710 GT 1 -92518099314280181458712.2484370349731164662179654386434859 1.4169084705987443834795602339738891 0.0866920339597067900883914447512613 1.0906821430622849501188804606526853 GT 1 -4021106819229860242921065891250.9767398851669600000804301375434293 0.0986769961533196711050765915624010 0.0748317416331023978315116952095851 1.0777796570744947667941402095906503 GT 1 -43076301844957199175702482688300699.6404186365995427904148761427444306 1.8198835567182707820304773104823404 0.0052804100724907432734928229276984 1.0052944007103609692101774644274331 GT 1 -846363875459427651494730564.7509877349885445245342927361923361 1.0905191461183075749145293280797098 0.0829339312105547226641935547981583 1.0865757604776136868983194506279370 GT 1 -8895151872617460027.1801337281026218137438205582724631 1.3297240552437565873322907457001199 0.0453927077684747584092325179481863 1.0464552353953895325902977535386290 GT 1 -197626944367685996.6075430685462279269917696873016551 0.3226348766835196938870940688009393 0.0852728311007557628515024753282765 1.0891294342363375835853542603324950 GT 1 -1353056648736836211552368052054.7480653676330802105641692619584519 1.7654310147514450770731275655535006 0.0518782263081604749862135383569958 1.0532723317150949008912574570496834 GT 1 -7393458601259051.9596656228939023322423529164574757 2.5157790113758588734739716376128058 0.0255379834538310757748268815408180 1.0258697381711023717373041793526347 GT 1 -3050354628.0646508568338575888120078102220782 1.0380886720765775840298679767940049 0.0019614926295372176595880790293963 1.0019634188754954098696691651603730 GT 1 -9522.2609102262699756342112676773884902 2.9941571565084009620190044825566920 0.0633857228767376959250568927931590 1.0654837387835751510047537068847501 LT 1 -80016157014798.6049794724322570194663870679792314 0.2559232795459392728214708054432766 0.0984092617466332048449717525872311 1.1035945888765843579624437068829767 GT 1 -53437372.9731181297178957928553320205168141 5.8936615688762010224050570998975197 0.0806304624318239280211659992164770 1.0840671291063006576844068059342706 LT 1 -730488628984555881828013.3910683944269284817263925765232475 0.7985034299094374465384819423012352 0.0372772633473307893668366898684350 1.0379898248883782373621792292945051 GT 1 -106.1730573516422681441140231599958982 1.9959731830307974142364615051746345 0.0959512027076153457685971676798695 1.1008719407410556165113693531917474 GT 1 -15270836218165457073127396539.6384491112275943767693270750379077 0.3204951404712618333158382403487667 0.0448603971576587321688264675875723 1.0458977681980613371526143344750822 GT 1 -6040574549.6501291403425154939781467227734921 0.2376646989159958078326133525889553 0.0981508231299807543401394741121063 1.1033079825790811228839209615151499 GT 1 -16156797888717128520865.1415527529725406683201477157839941 0.3565288280316143423199029388636150 0.0309413727984009391935060352989643 1.0314301661335627515501797648864386 GT 1 -64112.3314951553187225267965516182936250 0.4251950099869598114189349933600401 0.0134151490014549984886316216035179 1.0135059450555589714170839887382705 GT 1 -2801243968892071663254689231344714213.4982493390391300105895758369407562 2.2029280109011050188800612200137513 0.0629367427299868527965755029092416 1.0650044885955328021690949005958828 GT 1 -675470003566109531040600969964.1703866373825355961835876694705769 1.1794508798571355455343651696491600 0.0180730421803302338423510666219280 1.0182383544331106520422274577295005 GT 1 -12257446412044610377301955072773097314123.5234754862751862081248563767953738 0.7661802443898692509258114851648317 0.0913068598631290515457926286159805 1.0957478214048833530705715402328537 GT 1 -190102338141082763793.9255300647226958070508503742249996 1.6111065791925110425513759978791871 0.0985015926981131964366922079424823 1.1036970030603625660423574036801287 GT 1 -30087.9344546158347547688845333169528075 3.0441281033504647907508722069040101 0.0781392882871042117066823432888312 1.0813611387329583144062150405292377 LT 1 -291749.5108181420571957900795976673602979 0.8169530336426133315734169831623818 0.0689540200923615405125757322438844 1.0714466152687048758723284781926895 GT 1 -2330348536921456790784900617966835328880.9455448169644072670918622060589522 1.5584835632352744319723994805585822 0.0394728923232597744574960826128870 1.0402730747077009275059219434600020 GT 1 -1373527.7883149010871832460837198479681907 0.3728736504828858011159002104186071 0.0500980419057337852732499683410138 1.0513965017192795397365850163735863 GT 1 -12579954.1792824621015972593937457763228546 0.1649471469405799433516090539819204 0.0273376655886072854950529419634513 1.0277182925753176133132428655475915 GT 1 -3551078050160427216172624.4253920009254138016736417814063179 0.5979259822021817622416322256166606 0.0279401528515753772514687976978594 1.0283379052767682864561103845690490 GT 1 -171.2767244872342091787100019419610275 0.5886518591410244058188226917392926 0.0075718811418118631020170990177343 1.0076006933678032712122012339165987 GT 1 -658086917229935141.0522376268284830915891733766998888 0.2192477517017139067316449850250549 0.0826115830654485158247955849015752 1.0862243228693955554041072779413682 GT 1 -135390525035142070949590899676501782041871.0286134208812986878727291281187410 0.0772361395831777336212759230426988 0.0960808164632372290474649365764564 1.1010153213287853741430451434498507 GT 1 -138.4826351262552808343207587277722288 2.0633710221019254481241102145880559 0.0713934743963251822063027978664664 1.0740701760640455787767287175834058 GT 1 -1235512677416017966375582342991.2392214733176589433889934219374164 2.0246759561014001164465449839290273 0.0745900744779802093536104446706994 1.0775184769108033164962842132915274 GT 1 -116905308085980126112743098541.7341797071172177851097512687990908 2.5293797069849330060695044311422648 0.0628665903789757210905896232465897 1.0649296273472089915513434961499565 GT 1 -973.6339327063704950646823161747968999 0.5273727043109535608009843283881234 0.0501402580111308300769799783368054 1.0514409452991265766249078050313368 GT 1 -5122801328215623135825290960875407944990886.7870668465535232224938051069982874 0.4209198783688181943451080001142383 0.0643805958029343390221953426440910 1.0665465046442289068510672184266467 GT 1 -376706419579272859455796818242485950561324.1245723530004615613575321027400996 0.7837985849147986846105963162241518 0.0792600644482569215923229818540818 1.0825776544234712913971565397148001 GT 1 -381469150899363657643608.5882055759685940297370037713766718 0.2584991462631490925089337644655548 0.0564107231374752665649843390223684 1.0580642955842730609531662553096814 GT 1 -160338.4094064467067053716648950916554433 0.3115082108760802233203823325478525 0.0022614572963067183406077296116143 1.0022640182525822328920472453303745 GT 1 -16699166975228131565223369909.2234625663969431890387536785889463 0.0440989407739460362574081336560791 0.0483777552960925731652285688181219 1.0495871247190404272337781671190586 GT 1 -1643390923426447790981147609598408.4454142030417280052626531557574109 1.1043921773640005429794391613934868 0.0961131804030635058463546832075449 1.1010511259889907653817324876937358 GT 1 -1634931717557704383702271240730.4895837171790681444155197985586545 0.1980849836279001295543353298125767 0.0748113696142115133460710568841435 1.0777576375181426511027665405430168 GT 1 -28369230786136409379608372.6623042985252678613051826625435786 1.1595211835854063942246557111303901 0.0428583928616122658428338349384084 1.0438039286340645005183316872188447 GT 1 -3789370841305538240983924748093.2061344059403980198527001701912398 0.3757113012757461955702829265479263 0.0611205986803713448487991354844349 1.0630682411215479000795708279074308 GT 1 -351547477.6848372741005476250432030343224066 0.5444170770008741146925858364268687 0.0446323324756716216860473928387650 1.0456590204198059249415703897620609 GT 1 -866.6438390418798277509668650753739767 0.4513794956277285240517761000929564 0.0516786059925066604075814027034689 1.0530618109678444244722984784717832 GT 1 -4018253516549710547365551334727537843.9100352852417363384817299462276712 2.2119988339026994575598072557069952 0.0570275945167564249839512215065781 1.0587182592548367909669497722576891 GT 1 -15368622388184317122566437153252705.3655534617064035482200915328232145 0.4662796313110432790196315127841961 0.0103738147877734213579987092285030 1.0104279978535384861734359369660754 GT 1 -1340258.4500585510818472760597350746994561 0.8301133356555940574683010342884519 0.0602482466416963935358853460887114 1.0621395307685834627750989964958849 GT 1 -824173789626842755274889439840095246197975.0654618760232806571088710926914303 3.1162200411843014779721443430131741 0.0985346244000432038939150549540774 1.1037336446193854978596179988344121 LT 1 -85862104199434782.1415021323576629452144805844595849 0.0659121119069263936774622619577767 0.0606715546951145628631276483289111 1.0625900789260064989174121324747029 GT 1 -964102647460626982.6370234406334781598071713566070143 0.3855133127993298200545595124000284 0.0045393196847001239941407461915000 1.0045496536810339187917905666819242 GT 1 -5128984826890243658657791437.7052784483281174444818789949118078 0.0902039322942061952951161198766164 0.0684065250269682645943777404696280 1.0708587451044321950238467716365769 GT 1 -178157401151758185.8882570851524938053990567169926569 0.0398501473846992820025303407371267 0.0893386874914305145922023273878446 1.0935842263598261080143832998733440 GT 1 -1216.1930103201020410007686206847880708 0.3229847312347635607837600480223331 0.0354999227150847824705244134458583 1.0361453665068435667633528118471810 GT 1 -263156463004.7951353794372256945288480020695281 0.2169441231800720337658266125649544 0.0743908173128811598908089997998751 1.0773031823576730783321811969382058 GT 1 -79865552907190188.5274902901934230181890222048989135 0.0081291372043788727313999778235182 0.0981248073650611728426076090391964 1.1032791358601907796618642226953697 GT 1 -2124629011016061566.7791507524721298022725984773728534 1.1715493534125926073025243878616676 0.0843289003000002275595794934205606 1.0880980402488910319174837818255783 GT 1 -589311.4375561882166349082488497565355854 0.3800136989653723639604016449052211 0.0571609613675650856031862587557016 1.0588597016577314718276330975140771 GT 1 -14516747273973444928571376262057951.3934244735221002522406303143954945 2.8985027591855378930042388215846816 0.0396214889819389825771695203765593 1.0404277899186196043276055849650113 GT 1 -353.0898465083210899623907322908277125 0.3055537188664894034086845323203699 0.0809527588167229737964576469444628 1.0844177529603973105221726652714595 GT 1 -2065642780548439.5706457866755070073843078090707113 0.4816020711541098437029430102570151 0.0193715199354011703252393341698253 1.0195616066780917381033072761914717 GT 1 -227591381041422772912388688100175.6306888475833838014674261629020465 0.0869504940781842896212410747244320 0.0063416405278314639018693794303729 1.0063618341491860210477619356041454 GT 1 -20128533783.2723511569083557561004260604325094 1.8485881424944006594444496594188280 0.0536511291533034851523423012396525 1.0551439926646174714374589787362524 GT 1 -930848225905.8410525647351981904367616580491714 0.0229091154686167578563890796211015 0.0402670633465164020109413168803497 1.0411002242084999667875705320654537 GT 1 -8.0661973506938835569186280933221823 0.5723977867336028554145813884823796 0.0886937304253573724300018715718516 1.0928762476895632371936333132295792 GT 1 -260284235759758324.8240333815319931870982968044041750 0.2220765277771880917151858536403215 0.0026543351882988735529745485480306 1.0026578641820829795135987949418996 GT 1 -24921937477518751.3264042138441796183771032694526807 0.0824908224193363311097602606239794 0.0247024908653433511973680104819871 1.0250127169552844130301000520747679 GT 1 -10951574.7308455686460308096253678122772266 0.0305209567842037366997316233191183 0.0679089829673239986030095194402445 1.0703248113043725410555824781811790 GT 1 -31.3262183257061184244260068052512564 0.6474264801124823472924738899025471 0.0655021710987942851458582064893246 1.0677459753624064360812048449161026 GT 1 -39834414.0083133998994691666992898077554043 0.1607324743117396565354975678364619 0.0953444538969967673505194682556830 1.1002010197742386039952941476896631 GT 1 -1278169422499112980802972739637142900901814.0353149387537626193090320628573663 0.0391015649374673385361724753717785 0.0158298749346146384153229729580251 1.0159565055472554655180775386028555 GT 1 -870302248131583058633990289975590.5313964222220017282189381766127670 1.5712701993314600909075599117159796 0.0552021777877742265983105106940429 1.0567843191268043146624631496022467 GT 1 -134449517962.4357266626960269684692646898912342 1.2090915477431865628114361311448629 0.0584707384794021022847177997400830 1.0602498516858986790311880996441411 GT 1 -36260470601443778277020657806212994511149.0975473893472717267456676767378853 1.0628370816622665503309823329006700 0.0308875247565426447155918811661238 1.0313746003047210991156576105874795 GT 1 -457223853.8997817136832923564547108731481514 0.3640857473515723751859243472069234 0.0600677157211540328917114400985303 1.0619474443141765966395170139838757 GT 1 -118145410380723515413256.9856617874076250280016452465049126 2.7642390393284868870757063750042816 0.0501453419624057577056975144296834 1.0514462976313243732464299104297058 GT 1 -1927473390867508310071573580645641088.3267214796425671654266275924084550 1.7413442301636293953638039268100835 0.0559155575397917102972532702716100 1.0575396650785111382240334591266158 GT 1 -1116707016903995.9931600348562612542065703715352441 0.0956688614574301725366878310301352 0.0487184331749829517995217306137326 1.0499451857838889432998867729519205 GT 1 -142367.7464558971327283653516475634947100 1.0345079779448094002445544172406331 0.0381653638273405473535448314088260 1.0389127389626353536384204098698558 GT 1 -1208368.1813705245300079872647610281884856 0.1889219223314402050701612731379365 0.0136042859007220035625876696760872 1.0136976721340636756117150815098756 GT 1 -483620490148369915081915103982299710573.6376489296027626559449335558039679 0.0637779041578891622024188816494187 0.0469248075047786508009362015079926 1.0480614776060020282659081566956224 GT 1 -17922740358.6728304815280889890932432357433090 0.9739035042275744001946664821794708 0.0016348934161253591912741753889360 1.0016362313127775314926152086266018 GT 1 -12053091556273308745095308903999186.9781305637288279260784879051507276 0.3398099481274594956594213672312405 0.0101041929418230099348246163239336 1.0101555867879675433217836174510551 GT 1 -7290667772708820263.6677227118677734902813513141302442 0.1807250270007740872881770566835019 0.0779755041008381819389925985100887 1.0811834875581230959566136782315851 GT 1 -669625.9305951832484382481469968192869685 0.1298351028449164745202229770716449 0.0011081859203771015050242164292105 1.0011088004124170631777671070484169 GT 1 -899220146417910679965241894458883894942652.4309623445011932261087167171383727 0.5150866120137399429547937243427256 0.0590360421593434809387479687015032 1.0608504421062197618228507319388201 GT 1 -4855296331439340223448311051511291411395740.6066700949997927640892548172788509 0.1082543055892211208330366843348069 0.0906701983356461086984080508500680 1.0950474324946333303331184706542057 GT 1 -18286179.9046527881987124499121204133738933 0.4823292945406044385998969823196628 0.0785709725994690858430186013825354 1.0818295233944652593197175265623116 GT 1 -84416973759591669754483852790280539342.7734708462508330635192323524312172 0.8777596013740368670516700238579608 0.0915218517991453448725128798499944 1.0959844440484384146113898718797362 GT 1 -718.9690217879416194669999503622326641 0.0823819470300110137545494870544400 0.0253755013614271509401115926414100 1.0257030117672055085041727131519768 GT 1 -237092382077501388470029949648669.0622740812023023316692736118197231 0.8783428304229356570809718190852766 0.0993419749671717922085053284882416 1.1046296438843169014782646657594569 GT 1 -359939285570626658554641051858682077556242.5080121447440432002983439183156994 0.6847587874595430369850259385088779 0.0270622564022643372245454091450902 1.0274351828126326777398381417241487 GT 1 -332257207167253.4216748901630427984394341258291397 1.1242427380724668879491908840464284 0.0565660390285598602193276840434166 1.0582289102941730868578779922475991 GT 1 -80960897320727613415037396230829693830235.8540521523477343457893490917735452 0.7940213375509853985327885213476216 0.0618293780349908786759668153006342 1.0638234467681892023734055626609278 GT 1 -7442.4821160393222071393275900638469343 0.7960680613916036161361849812046873 0.0117605050556673489074221502220758 1.0118302068195105320865607181922305 GT 1 -2029890846151159771957206680920.3668893797469688243476257066800266 0.8556809683550949392991499603884478 0.0046611501618070429383679725676945 1.0046720471972204656917770927049699 GT 1 -2487311972448275504387694042610261798480.7109136403756691367731874859680724 1.2041455382818967844241114929536323 0.0086593962209145426733018195996928 1.0086971066498926581572767311877238 GT 1 -2986709997476141113666460987808336128475117.7581525714233519661941459208509300 1.1009235707745518765171175959544382 0.0019444781689903497359940750100688 1.0019463711209323780420779783324966 GT 1 -59465103706203050461602.7376317765694136902733597414329305 0.8437625446928500014151334031841768 0.0665940360570298687854385834815195 1.0689150560043295122817342910795163 GT 1 -31052243158574151501427.0762684290200250275580516030582888 2.3130809012164145683608239148202682 0.0863393974308657127232019037703188 1.0902961084700328027365401832303420 GT 1 -14212438396287355.5534932830389819638624626207236889 0.6035286190431801844019969167314234 0.0906052897224596539406926456814668 1.0949760543251658626117167226701761 GT 1 -152219362300916062678991333860786384.3677863911296423970760552882526560 0.1638547554500793619700359424517482 0.0673040277195093630308515492001266 1.0696759916027082408546074319537119 GT 1 -11271658273041154646586262.3319435057466455975572697903587727 1.3465645180046888690603552270838934 0.0573303381282133762763745375662686 1.0590393632642343698915418966527455 GT 1 -35222095390334016125168395877897235740480.2889947518951830039437345813191549 1.6941951030871166113262263180826823 0.0573782660255895858636725046541479 1.0590902072849434576582232081633133 GT 1 -28271996241710316136398.9181294105921380845188951834865213 1.6336726334090161088375856940867555 0.0259980849293866236295196236341592 1.0263420091499400617974562240396468 GT 1 -914046295.0495067649761246311831694241126763 0.7685859926013893789857837175477392 0.0236986684796408046600941881898508 1.0239839989079923542921342674456761 GT 1 -70848108747772869955382273850795705.6711090262129781847694011501277995 0.3291648901715559868543576767989772 0.0974818197722491865928800413520035 1.1025664446813178848331526829415361 GT 1 -1191701346570896150.5257291806182013349165145503388129 0.5396809088721154815202123554418278 0.0279968263696437866800194186480738 1.0283962094752214424642980476195254 GT 1 -385552822085383127922765877.4497750951034742813985964941053465 0.4904529477399095959485941632090855 0.0612988298503195141595375830629260 1.0632580930759106758212197244773121 GT 1 -85385136691895749882433641682070318634.4270246714396557238484195739522174 0.2233036646852716286236485589228619 0.0664327851999563399741824700224203 1.0687423155929401402952857225702795 GT 1 -456258157636515725.2854017427520459691403038400661657 0.2951432420701887968548504031496991 0.0262329253581119226631976051443971 1.0265831470170111568243313934546660 GT 1 -3822794903543902.5744026766854469958421357177137942 1.5361275745379470531362693389744282 0.0533392218599967936477387152217272 1.0548144567889855081508842295549080 GT 1 -89.6492154057281105590477095759765084 0.2116304418106452300795387756260142 0.0615033962177745667411215436576596 1.0634760417343904322933006764415372 GT 1 -255699532412584233976686115576211732747096.4201664537490406563327251929517540 0.7259530242012408117443553624558969 0.0335166960300595541246525794471542 1.0340912552165977661626496163021099 GT 1 -88684328155052838603358304.4492060835547637265975428839401344 2.2416437728702585312921982013166341 0.0781052048016096444046001192373411 1.0813241669269127857331228138720134 GT 1 -74467725504199889594.0894633327474412499437036866173796 0.9697906916708195345469091493662580 0.0044146067391791724211151019530697 1.0044243798891923736468543454245761 GT 1 -67216548.5093946460012498746774865347705623 0.5901455043817328957058300827862379 0.0833072477926299261082842114972641 1.0869829204410265599024108171002884 GT 1 -3976344963644642335923939204419.8052518776522773415333693690434974 0.5560652452702454739856791424995777 0.0393502431126422838285831478814618 1.0401453933754442607562916601169845 GT 1 -11380789904715860205433511249474625596993892.9326430329770090900271278563116894 0.0958168188782072371874335712375524 0.0099198302717095615395720320548137 1.0099693596086403590555982259209894 GT 1 -1207046127392796164174421234840805142415.0847808061644113069288525490518948 1.9284769220358973201379947973822523 0.0488232734406821210780981698472978 1.0500554013572551218134233152855995 GT 1 -22264060783303956778077824766666565906334649.5817237508652748785064333038365019 0.2028392746275825183032273826684403 0.0273113311783901747240130246083123 1.0276912183761885575138261074170727 GT 1 -168053032591452284963419740439.3861512146069566186723016785261809 1.3030517957453322902608776262545706 0.0376547738710794113695835278555930 1.0383820297724513670370819939551348 GT 1 -18183.1639544453496547814656866243610932 1.7706084280768990619268856667713685 0.0978441946805573354720042427294053 1.1029680406660558952267590709046328 GT 1 -28377989196652716.9277228393954247319176178524740265 0.2792722070491506315956723180376790 0.0716053922499406955529334095241650 1.0742984127093864737928911802376491 GT 1 -305839066.1231059047877137772434333684062928 2.5321088304381294798060327934374926 0.0409213084149098719905046916985269 1.0417821515890916812554496563688734 GT 1 -4704924859904934.4076614198735010978174397381001374 2.7441524282306192822713021575573571 0.0606375085889123922252207045514651 1.0625538344266686656398588416797580 GT 1 -56766681412369635015231226114.9807814854049161245384474338137286 0.4353413132616429086055541565065056 0.0268206750694172767360664971197250 1.0271869127183051755717220599775589 GT 1 -284220894623546700.2565686194499653837717127817540498 1.9308428421520311743310440941016204 0.0946902614879385688112278899037286 1.0994781413377222274563558291824436 GT 1 -77237433330964164854.0773738985741983976702959592596770 2.1094205773712495303006533911206159 0.0904055414212675889178475453425678 1.0947564287161573464650212438525093 GT 1 -2356135751423728021852117013709925.6543910032653973972450924359596318 0.6864399909292868347865815131501603 0.0966942869745895639510086995560431 1.1016942302305856807709265917014085 GT 1 -19513015276528732885892913088755712.0189574613616084026704309445135928 2.3529268164008795735336119766982659 0.0401768529548516218189626680688576 1.0410062333191508279173653590336432 GT 1 -9617008.4436854618713960471131124981010747 0.1424979114615409259369410228482989 0.0919129958396363057563514193623279 1.0964150854113726441548375928106421 GT 1 -9875034121727801827947533041314.6159513682387873053877649462185291 0.5817490833124751207882885769813354 0.0718338974720123943995401124412806 1.0745445724196082046751169703000830 GT 1 -20.1070372349039537495294698034002268 0.8581656617464234315037136981257969 0.0488805212579144967031091795347663 1.0501155894784216542174850713651070 GT 1 -664605793979686753940.3874779078645468725446433967871918 0.5445564201440209509449264699528722 0.0617417507435397708785398737232750 1.0637300488325053781828774931532770 GT 1 -28985974063133332090628248878470054898.3892337568670707301383338055767532 0.6144066446535297845210017219644924 0.0278045891159822794274227293927791 1.0281984547233980746451703184118920 GT 1 -9460.4169290297757761559178596152434287 0.0547656640741564690122448508809213 0.0879236960530794292170788662460766 1.0920316257991955982403957740987258 GT 1 -6264925980672431.1790934263775731584809265873064090 1.4700944541753728247663639829831700 0.0365480502800835874412757431072377 1.0372326629266474706417409932776629 GT 1 -4937.8008989758037712069181443595104733 0.5260211360597868435130055065788165 0.0291641356538455793419463468872803 1.0295978627278562124381336135109763 GT 1 -3184708048329.0061650451344724219469752499417505 2.8418203523906320668499129973560963 0.0174483174900589393625991989571813 1.0176023335586601394521351313888991 GT 1 -89763167261687636182544095.8173653364044668741014013555787512 0.2196606348861768131868554985328992 0.0503272064643100537704014765010104 1.0516377815736168157572765826645644 GT 1 -6386972771783762612111861396496810805941093.1383164083461005910054437925586740 0.0693876394411333977077275959654765 0.0232816680433539948712948265123257 1.0235569674239556926493367242289355 GT 1 -15156546715583161814.8765662179097737438509045017694201 0.4448330618866276395099239470291302 0.0093255787257669490863320030262956 1.0093693341774526416369246586292057 GT 1 -6423793823480240918493105060.3727331977640667723953635416113058 0.8955973354414846383653319842046955 0.0417475376363742760446502318454714 1.0426440050784128090975102618853835 GT 1 -2148670823427545281482933521153207797.1425149732122673981323359973165499 0.2017649913587455918797806892195632 0.0684578533729363698592298209666917 1.0709138439876117341697074554942690 GT 1 -130863870445364834377.3359406484592240955030838146401580 0.0550491757756452315950362182581310 0.0606544363492625285941035634024147 1.0625718550662299703402040947534720 GT 1 -1167791763928034096979892144.9076995152138044697960259295111349 1.2068121657663666011260012339715012 0.0194201784108905619582012652159045 1.0196112275933798759569917120537636 GT 1 -9477.1232018815336660296438205481165427 0.2479513927597656009837333856388227 0.0101727222441728508084768646295554 1.0102248179879296842326279411223450 GT 1 -941915576221635994676109973575176177.3231444788758926450018005779668737 0.6310733810071213141066605691962204 0.0463910114991603477139705817598838 1.0475015568546950484365233873192502 GT 1 -8846034489114628365401619785643766742515709.3552120109869668824274769807939432 0.2139514424465568925623749140610334 0.0229284356565868838567802900713036 1.0231953805498658511000572498940846 GT 1 -145481373157.3759709882282500086832475833871038 1.6935710327906071824094654939653857 0.0408369980845492154631996176282459 1.0416942478273283859345669242528445 GT 1 -260606530156.5981901339495515874995926069055780 0.4611807433044424863100772574475927 0.0686079807647742235855875768821984 1.0710750170391493337223613104317979 GT 1 -68.3619790299333854741226157458409903 0.2008732518614323600994319323530353 0.0422978330003864593660448209745823 1.0432184397447775930549661915021803 GT 1 -35933925181343993.8842055455813688840648673272311216 3.8428728410682686097630136720245196 0.0299587053607594955685290720468526 1.0304166365978301613921063726856308 LT 1 -662852232638151178911671770164926102.5401132516166316968681205986709093 0.0670835903772570551579150380162838 0.0169470023498020068318152024838418 1.0170922460968355950466230715617983 GT 1 -256718.1629087829051289616538962437071593 0.5231190395879682833129746335223841 0.0618242245802854078578696764131856 1.0638179536942955260998279640061330 GT 1 -12957457280536145148039694526925830321.0262452745704112577322790063306502 2.7329256002149147504611912970101514 0.0004069721134989811393394116105000 1.0004070549491248529167758119390965 GT 1 -11915966971174843760924471718.6897655592714445283552856016858403 1.0818190140252446997951656344396035 0.0155236469811598827797641537209540 1.0156454004714242272194598018468185 GT 1 -2031728.6381416452439464513017973553542423 4.9759450925823622086841926429375681 0.0186023197279819943519796545647594 1.0187775190217931309886196196751961 LT 1 -149394453.7754333333487907696474225111664536 0.1208775171317516876611325064217872 0.0500815419235149436708618945878266 1.0513791316751650401414503179202093 GT 1 -60688790135948916237692.6893425383020649783938429536998616 1.0349832217203683714002932278964643 0.0955086455951795088995822087058751 1.1003825326172116694473894759389826 GT 1 -12045635486216.5610370137431150175115770904182533 0.1311659959525887088948129397493907 0.0101256229531551744862822421513433 1.0101772357768300452796582616411309 GT 1 -1373904.7072501945999007885875972608855601 0.6958975209043361648927869552317658 0.0618818831729128353883469083388345 1.0638794137809949854277347767641850 GT 1 -23844204219864253250782519.9713442427563446759010234896211213 0.2331451401410362604588052169476860 0.0085794431024840226092711189728072 1.0086164583902237303729412879947837 GT 1 -4246.1283572410828385954389347899173831 0.7846947505599838127414189784988520 0.0453710527357204825662926842036817 1.0464325508974659826304279593401525 GT 1 -57201835847655302081.4278605172429789475705998488761591 0.2349732663872409785625012491787847 0.0669390914044960992455901956202400 1.0692847977409486610138995990197904 GT 1 -268675.4074811153829127961589648531443111 0.4635398899084040654662238040874688 0.0644600626975138888239609476251702 1.0666314433160617840120510214111085 GT 1 -5459354771720136560041553.5788886981823254986583900093936390 0.9950382447293939014087675415957860 0.0908947818872518341402640879752682 1.0952944400041731819079652176333308 GT 1 -1966383337748546117542547915928380005030976.8714254770836578062639450578596003 0.8299497819577941642399894417222624 0.0483631171797217240143806441158375 1.0495717425609733021730942078721320 GT 1 -4281832254484202808751557989089221.9894493141785635080958906274011834 0.8562513228260822599575277706696859 0.0450069879398207227821461503156618 1.0460512557426497100386026979136099 GT 1 -152251473330398053754825308600.7247666582023098767733171100326750 3.3761445198638232119104878239810936 0.0288870603640552115525860042805385 1.0293125047502387040921900050192757 GT 1 -232493041024553111416.9485144581673904907077153660982197 0.4313654045494659923156098337538150 0.0871087143993952668988685470446291 1.0911384792989195524157903654203059 GT 1 -231901309.8727850056462038291959790083422984 1.1011879169849283357633942550729806 0.0298773022935664943110868238706856 1.0303327230033485414427358945180996 GT 1 -5972151172408968402.5195306577477203905055150861370382 0.5120229678589303286960970022542131 0.0765442210745967439514005904531397 1.0796323647065417113884046971438635 GT 1 -1909641205.5858556144728388390798177944416986 0.7603933621998483029513695208551369 0.0859115285120942947625242893698243 1.0898279162737839381843055168837619 GT 1 -22755690282165142652020.0801490338970986544686272503526577 0.9193996734541655325914481724924703 0.0439389201011064156134385210268343 1.0449334768640563790300823727954262 GT 1 -8630928.7293856432497000991610973730678100 5.5370802308147281464043341877132465 0.0953043387765689699984607076879245 1.1001566777799680213653098309750486 LT 1 -3101075454527875388902504.6218580346218674003007584977754116 4.0414444946129754321662601298774212 0.0257288314601819152606766403552868 1.0260656069626040351687019177829692 LT 1 -6701701848266.3987258062414064406649751597135266 2.9947002720022362108609510178284026 0.0745620510702056027868481892870896 1.0774881952132488397657004597030198 LT 1 -5782568957678145.0489318022251049257931261680013841 2.4031337912244220559201169947515470 0.0037676468888273897694546610478105 1.0037747623483488188018955335598211 GT 1 -28479468502995701164731115176.6048852295858073472442922147701727 0.3249787602750615176457877666982349 0.0030139980143928229933463775296490 1.0030185492536595515778622746855689 GT 1 -1825930091481378004267843019094272.6539904457084821458906188594165311 0.0727701833383574463441922786365872 0.0251538207016349479747311057380005 1.0254755852526581892230654727654765 GT 1 -165118261439215.7868913781304237832085805380064703 1.8474114420952279123772392260001809 0.0005570282026651832217933768262873 1.0005571834005101925973635234040382 GT 1 -4012485307807463.7423399717615249385836593696036913 2.2690712446457129685194262483780733 0.0418233402677588298747957197148131 1.0427231132807982805220158175023507 GT 1 -2174087922617120680958488785.5773837086233283003942554900783582 1.5735853273092192147959822083955233 0.0907560904117676573813129705294023 1.0951418934182175114927351349976720 GT 1 -4169259928644.7996159463581328472584457110137267 0.4443524322375179244892959399430430 0.0603728359564781442672546559963093 1.0622721163944097899699536758259982 GT 1 -1406997723979308635116997157899367.3111615899606080519601233398773565 0.0509950202963719978196198065042319 0.0766579834529176732094959092241959 1.0797555643104655573533088109582832 GT 1 -14541883176967336186082356057.8326491146645949600527261402381348 0.7436968276721981519361486545661906 0.0771482035027069725128710543173061 1.0802866245467709941321952463121418 GT 1 -4147170033287943188956543988179543488.7167655736534393883254934886848499 0.2553193969381602123962022586426212 0.0580606337707009590247984733951804 1.0598143735376142113222702792240411 GT 1 -3043109944776628502365220506.9045593969485234110088272617193057 0.3794774679078959974617434036867736 0.0752809096412880653042853206473658 1.0782652736903628961935317912867926 GT 1 -43.0422132779905311647750727005406922 0.0128652887833777639198506527677781 0.0455339728190810900668806432586896 1.0466032287169950551728347269055721 GT 1 -14399524347092458616370507568220.9671132345197866532927719487536108 0.7060766389747230656233635021693508 0.0227189692690598180465533646400396 1.0229810216989020377513253823245629 GT 1 -75350669655359291847874850172.2148139458396188549291257057218999 0.7521051741306862161563874967567409 0.0759121912575514124799299409814127 1.0789481807490763558470854515459453 GT 1 -12958807706050531013384089402640784147493.8926866174049873953097713245335990 0.2067989940598866984048467614241107 0.0343299452846364977777357460155619 1.0349330613795984303106813302341159 GT 1 -741172545055570731565533.4752599638629678343278578884649065 1.2464881021363201017246889437990838 0.0164103128599090365553307281419507 1.0165464535058718238094086612900514 GT 1 -13.2323489264126366228724329014939047 0.2889632575999362337066836297577549 0.0181103395500198512590678275276972 1.0182763390079911367555033364214172 GT 1 -15728823212797579420161386495088239702302.7184758497677870118162379419737330 0.8162833449942332369729345019471170 0.0532508366030282273318696963928763 1.0547210958584296891540224850545474 GT 1 -21402826466958950667036377638453496652467952.2767363702569766313958029815110410 0.3266643863899244648174947822819521 0.0859567616010022885199243939510158 1.0898774018646443721275974495892093 GT 1 -1498021076.5404062324729854318965482807351157 0.2691612607083811813976225492222261 0.0801229000252219633247462640300061 1.0835152048465238347417095811711530 GT 1 -187071.0900395644722046626875357283325138 0.8435398986444519172795430335406552 0.0853873350298333983103697008396721 1.0892546203030346336867444533796134 GT 1 -615732195194479274409119559308062380800786.5456266916192390689936745482097551 0.7674929321325671436605461348939277 0.0860058650154433538905609171768972 1.0899311244144869813274047724709991 GT 1 -57355544246.5211445984238270269010309252215341 1.4381167671979446490352289452644605 0.0038132901423147105911559003313671 1.0038205792694410044458769897515015 GT 1 -848188728690628294890.5011180504265984734699514151755257 2.7250995711591818967331525324670841 0.0515885951592937897186579690638314 1.0529668995144914801583814498031057 GT 1 -61986249645068895549831689328475659006946.0841374787055060540081928527589142 0.2743386582101459710383704902958492 0.0269894135895610777277724157620387 1.0273603166801521952974914136230920 GT 1 -2479889233901529901258257.2822802982510610679668762824597937 0.2976096694001558356758436140214325 0.0973293923283235995742147150650045 1.1023975676693293288618445313315798 GT 1 -117194.0523980608853488101736757237322271 1.7464527915184748532821469579281020 0.0399512974935725627854243451843189 1.0407712640295396533673218990364646 GT 1 -214865.1930645798140256088282099416407906 0.3037012728650862837959105494581577 0.0148514992704226688918991220486360 1.0149628870115133677157928882249847 GT 1 -53063416793098967044.7525143272316048268471905465425328 0.7501529501716891950115895908744720 0.0788540523686490056368275575904621 1.0821367887977655506553348673483464 GT 1 -1187272113.1538346125013028821740806263661032 1.6163725518572141459192006113553861 0.0318138058677441288585297974276055 1.0323308608921350600529162150416073 GT 1 -6223688933658645351578.3606069197704924021851053382685975 1.1010650915900582028117937625524277 0.0294231617796979383460464097441007 1.0298647056583129238009685214826413 GT 1 -10955173320806379363352.7014104149006070858754020148941763 0.6182583156613424153941579374485442 0.0876209344983688984867552991261104 1.0916997332656104031753620404552302 GT 1 -11124528052160617896790089375639.0350274542068781256349186890823778 0.2197378162044749827957481082715116 0.0867456992013825673562290031963649 1.0907409039845546223325437790588824 GT 1 -421345254988081130413658702699559.4229904965563350922017151900702283 0.6210362932986336440802578301448485 0.0570512590107495002438261071198926 1.0587433552075902561114683109803262 GT 1 -197327097620475969828540088086178018.0004279210744951423991971086254538 1.5372933902149692589280944217991981 0.0137419449549009460340596038325509 1.0138372395092976039202650181170268 GT 1 -3488732516623682427960287004073447574113.3602986450672663977162027481198999 2.0106959511768252831403690146419197 0.0786690950358604613475847372553082 1.0819360184780198470879961504424571 GT 1 -3625327275461895388752894350196992372283659.6897732934991651361074470744274755 0.6540852122813960455834446678886216 0.0702646725299230519056605142466866 1.0728553274576234113853202640934069 GT 1 -22471784889282498547586355470167880115566.3376358811155226999811593342272374 0.3104931138001391408372287068325234 0.0100543493116883347533777942317838 1.0101052356551026531648240871696728 GT 1 -1473360463101.3557336412602807206900203852563927 0.8617412530452675846303010549886750 0.0755248074020099347198963166248858 1.0785290618324570665296196264910659 GT 1 -77733921574039.3340462668665998484047335247749206 0.6262066571900640778410063996769949 0.0094144667619623133220237700372689 1.0094590629745774836262608045665681 GT 1 -376601705612287538507416743893.0872727656418444380889748630980363 0.3428636712829485063967390544128605 0.0175117386021600115102309387618012 1.0176668829967717847936768324191959 GT 1 -43886757713514440691757940415876441007.6839762796895446429995046817648319 1.0422569282609427043561820490429434 0.0780316469114584648374333047285236 1.0812443802136108342599680754233432 GT 1 -3934860842263206288285.4346162278840626756525631592810830 0.1533560288026307552969432183801408 0.0619014925892660526356488627930405 1.0639003169284254131164732675275287 GT 1 -24095780353280191327869495816.3296352691039341816250966485225304 2.8700694400005624652040952008001304 0.0311131607553607896445044035446545 1.0316074548760832841845402782480161 GT 1 -6012853555958719290.3409133422895309972202866652502374 1.7799105611494340511026675192589085 0.0356225313889366620806013583254663 1.0362724960639042350255366413672257 GT 1 -1.9711805161953933498247009155624388 1.9168941431883920607693349861342344 0.0506094840683085302911528695881934 1.0519350624537961329996826866669061 GT 1 -99812660237291245497.0656271749291162365047611001478873 1.5922256579547447359507529180048810 0.0897294407307170208811941509106126 1.0940134057831099633243410112718675 GT 1 -6252032.5169031544557892800412736067219871 0.6824968594925179114327401543846877 0.0271034799774618322412235167353951 1.0274775539189230613206065444727820 GT 1 -87469324505517076653347241231316.7924403303275620353262106824402851 0.1808867387374173879558982472148911 0.0659205013140633161128499853049973 1.0681937280093875496836356721827282 GT 1 -57029304266622215608824009567442.9961646657679316925128270238440325 2.7898565956233492231693947032268336 0.0937364904816518896920267383951388 1.0984251658696326067392003738411092 LT 1 -119666024.7023417289330691368401875291661780 2.6218692612504183053464806799366888 0.0417191377922063208704405080185600 1.0426143683965915997142450228890399 GT 1 -16855109546254545721072243907084572085.6479051588816893660979630143605989 0.3548237556113648353177163352284214 0.0758861572571130892657338162013361 1.0789200084980461476753128769959221 GT 1 -4907.1977329758208231624747098673396544 0.7208662345117862368653507732802117 0.0905957515543629291833904915056442 1.0949655659003170732491231073617346 GT 1 -14454018947909521457336682437939524232852.5656108962689109996315524892464734 0.6144044409310306100312054454803110 0.0004608911510304450225670076354177 1.0004609973940025453375393501684723 GT 1 -17304118738.8482035023759316952971501931205144 0.7293466067612663817168528818102335 0.0776487735905008165662477975164742 1.0808291882580366627288424481059306 GT 1 -52363620.9107375492914953357402443133576570 0.0663361220161706274063070200829453 0.0864323864376518285691672411853026 1.0903978899618524332449456122281952 GT 1 -126870.1817642146203795621400880953179250 1.2096277160336959951165242919536640 0.0409702414136881628536221796223211 1.0418331737289342262937334289541471 GT 1 -3137417409459526545.1410490154631458852167529360329376 0.0245530635969924250370153216637844 0.0109746126876227732657262324604632 1.0110352780100409892639293333109813 GT 1 -2317556925230121686613276295.3631574433806131579119690551796451 0.1616804937218923335746738271916470 0.0727691167917506092868800475184321 1.0755526794782394576928766573769506 GT 1 -3232128785579221122897.1296354159481749549369329067306945 1.5484187861155104590373169784942045 0.0646586227029697200201062729598824 1.0668437069210824575937923142808432 GT 1 -5814864702397965129387246814698.9175437695983083239410378879747546 0.0308056886748852374111063018822708 0.0691255074908025376228186368402148 1.0716308201275765350953961643969255 GT 1 -12562327098317561911373200429208.0428010284925308678367621243412886 1.3524235150455027515532750230277621 0.0630325215348263299829535556333261 1.0651067054942170136534836701323848 GT 1 -1102255788474635278136572446199025726.6564484945660657124435451801703998 0.5468014781821174359967913096229705 0.0934802708062445572048729417951947 1.0981424848831341407062837810402519 GT 1 -132092963114747972711.7445191638140214173259736444103528 0.0089225608458726255065113791165028 0.0180098927398200329277978900050157 1.0181740447515514692236247802343802 GT 1 -1279718642187464.3806914439331722235938583920573680 0.1284438350031396370709746750374001 0.0475455071886750411019181946447911 1.0487129496986547728118899368761113 GT 1 -382628257750464755934851341097342192415.4138921582185957183895653377779548 1.6912077206705967038735107577742792 0.0482830116293843468599676741186186 1.0494875695108672250487562688887727 GT 1 -145615845612505551265291086984859128.2768062487324889866784016268480880 0.2916650087731116414833735092546682 0.0182161355602339288223280374279020 1.0183840921644863151968679916965534 GT 1 -13878514015017052564697070339708838693299.5200747452977297462097535954762708 1.3745292816631495324194823764058812 0.0857887884512740194972428768874933 1.0896936493785440854969586092048863 GT 1 -34412619597054.2363338121714554898551694516353733 0.0739385875576779825701044076685088 0.0592414312096993438694133800568002 1.0610687410831037065231532431724993 GT 1 -37815457452.0784864098137119892371468232527690 1.0690556709806141946834598030943188 0.0944667161504677279393123799760964 1.0992312449078871592000866971435994 GT 1 -42899099713354798944.0956389894009608911523293125430500 0.3761789661108713369618136598530812 0.0932534776393943027503641228427149 1.0978923361056576234903347472784552 GT 1 -305849377315961001941246201566599133.6495424433066561078972956369175367 0.4477832966266735334752686631453941 0.0410458058396422274044780734686297 1.0419119694100815565178292742344801 GT 1 -54111291846954143224.7488837489845446002802570712656954 1.5002726873390956233303285861299527 0.0792476000965081141258676309321739 1.0825641171944434915020991259496425 GT 1 -2211869555698496085232608314164207.0479630203999091506244953842597680 0.7206016202065066528566121028675939 0.0564373207834043246387434419544892 1.0580924837180851153422322695313094 GT 1 -22749261267224879397.9848932983202876604154833292778553 1.5936310027317355012599640860482600 0.0183233143935745409575351218856709 1.0184932655659529701433905432823967 GT 1 -616848334762727537794939.6043889690271053190914885219947304 0.4955849624569642804253905264662442 0.0407431965462193897685124745092859 1.0415964574082115192878624822963657 GT 1 -21659887251401477552630198966997.4058174116415692540586504585648142 0.3690505421225139242112646676521156 0.0858473040872669657325172816191706 1.0897576581196640843433819280732348 GT 1 -33.0166577288325326954381500376799350 1.8698836174873761066167853874382320 0.0933746611161565249948636946820770 1.0980259915125077750323820689703209 GT 1 -76588240670248111101590978181.9732024960926553206607977425630218 0.0486876219519408404598720797118023 0.0368454036539981004713452392992107 1.0375413438837248607602265085964278 GT 1 -315803310905338157114349357997.1810611442366684116590592144592795 0.2155317958168152135072995387153284 0.0317437613547887651763901389387513 1.0322585173906704216465435943638893 GT 1 -2.3011886396323359858191606411269702 1.8076292887692163321926943802547840 0.0930655050146820758876932924463651 1.0976850531009974775396539377616664 GT 1 -50797343238624135545754082156961350021.5849533643353377839377598435415145 1.0054476099221261613356227175534236 0.0496311584214557057394748553888735 1.0509051154455411232559738199969652 GT 1 -796134994468136.9902318248747366150629010962765433 0.3789905395390546471723432680118786 0.0719411057772978745881448459513774 1.0746600846076159676836447495575154 GT 1 -355094994953367.2510932733041369050281849206293977 0.9748754852056165457128093835189720 0.0559064995098541027198911976992511 1.0575300706120875727355334624564903 GT 1 -1515623633.1198129861494692294990395066531751 0.4080940518218484637820257732594976 0.0485579791913624478218148325295722 1.0497765286178731474549732573130631 GT 1 -12916095552624557.3070620422183819178462687922087786 0.4832920055185516054304042287775038 0.0868048644191711527110976935683179 1.0908056911247084312352407076023818 GT 1 -93106150860886.7766613172421817339807229345935510 1.3977877728712831585014157913867733 0.0706878199376804756158319740465015 1.0733105577982688263277873473464139 GT 1 -2535357550748751512.0494322321398605983091691990608288 0.3189632425157085512578372722173304 0.0090788211943564101200061324875119 1.0091202848429910268807855097891524 GT 1 -1356343732623492639552528035.3112069496560956817536775424043693 0.0543549304763358700871262825533076 0.0297298427600674672872674178116366 1.0301807336436608900185476616529201 GT 1 -1123399462584497346555862776.6416143670380990235776639509192372 0.3652855080482824552841438457160778 0.0608470385472325040007039235916046 1.0627769147945938934447953859777608 GT 1 -1022.0306081588578350633392875326843504 1.2031939536324494023117638350879692 0.0192212560026391360011917182413241 1.0194083861421289720302274727359054 GT 1 -332030.3460784229227379836389470608147762 0.4384608579483827779365447815367305 0.0350442890948675531604676281000803 1.0356730741314747426164077549830342 GT 1 -51294494779420732340560916455.2321146983987766441964424168321989 0.2148284353676428077007733393872337 0.0632924776177308463019419805505123 1.0653841880719905533257122069104137 GT 1 -351889419091984.3310656371138511407503889645351244 0.0758342422385699834152776708166784 0.0129707896043225378340146105959604 1.0130556448541841147112174338500345 GT 1 -92923041.2200347650929835288978491926034422 0.7083239742125821700871349552350497 0.0185873625022499494046519895229326 1.0187622783991033852704696575395861 GT 1 -1925461479710515509.0760035356138396208458054205832540 1.3174703308653668289060792734367543 0.0234241386931310032763951354054347 1.0237028447326795999383358430003820 GT 1 -99245935281510300322287331840.6509623971114879226213822752253173 1.2422626676954433131118131140230543 0.0971840625804701675764238815721023 1.1022365808721001494223675319228675 GT 1 -13290245976844348062583167482221919073.4453665473976469401883700582234216 1.0825970304792670515944416654146585 0.0749783338052586990749194830678054 1.0779381188307901683749953954638176 GT 1 -365284139483647.1074506325586949654238333463836437 2.2069861668634012243414051699221149 0.0753953678513606164234532829287287 1.0783890575458617210230576942040132 GT 1 -311549992831784760444799221007051970693002.5992735838381966720380457406869376 2.8216268114744415670538488648290822 0.0939787955206638206311263393602247 1.0986925687104602551365752824149859 LT 1 -11503656596938897316457661432.9388480698693785514110188720197164 2.0621100407881925625729615207663428 0.0093260366542222747594117497773800 1.0093697964166619400099541379321251 GT 1 -17552607690811212741903143939137396181.1462895865229173317132386682563194 1.0462387047020802755609310523641004 0.0228342986144904824143377996728684 1.0230990390832281230735129491167468 GT 1 -2019183002011249257.7818507691624455538823935363298528 0.5814991332859987147680924938806897 0.0099280562650171646753308367873471 1.0099776680544933023900751966597841 GT 1 -18543537.5083915786736545023955464672278670 1.3784848726785347415833558107307571 0.0124071500142224264965248302605795 1.0124847613249085267831144855004881 GT 1 -892284692599502.3996074648484005375996053404103020 0.9548430435113340698954013290786968 0.0835754361813201961944219198967380 1.0872755240712024187196218071389187 GT 1 -3026411327508.2298009968807441023769252340902958 1.0471351879065575297489440917182357 0.0014356934548198336789654810316981 1.0014367250501559418802217957729012 GT 1 -3615937822479129134305.4160331036414290988853798101723613 0.3635498455914647793979307636821912 0.0755399482513104737290467564732508 1.0785454397443900801323872692018427 GT 1 -593053.0694949553240076297217309606514593 0.4109735087939000221786421520157869 0.0833869011525260098866797867699155 1.0870698163181115254555536314463706 GT 1 -1029550834140760951461635645.7484935640755186870015387073697313 0.0433616401341107166982168052781657 0.0230761664261828826703378711745577 1.0233465894729113644761159753358454 GT 1 -1420208124535366929104349495602.8797204155257870239434015495147914 1.0744169397326963715390708494917643 0.0584793233450595088966262589390524 1.0602589697294337154413233679217406 GT 1 -4546428349535391889250327626554.3227183526135374209558928801250963 0.4495867192855714109634071811935420 0.0987403828140727185798811760770371 1.1039619194985228165087728646631828 GT 1 -2169052801042406215468.7838951489675740878981732872231230 0.4608129832921340062227918739893635 0.0045244777018084568577056399406173 1.0045347441295651584314832819318423 GT 1 -812913098866816054715224695.6088500505812167530104649614538726 0.3213703956273858626339254930431093 0.0172759544660117013007366208242183 1.0174269250681062622669361366144990 GT 1 -421956766.0080639159667661915422064829174001 1.9893378515581750427387583448594376 0.0459963831500195505390418886979137 1.0470878162936783241065646093743132 GT 1 -210126552497179479629355174656383476536707.6963837443045502916982862387100455 2.0231951600147020539128697337118107 0.0944123555820606592899709831686048 1.0991712151577197922762737598530553 GT 1 -9457203994703939754070273.1606869371977237170266757152189033 0.8087472390408737861580027522872259 0.0399866687698630681018223540626141 1.0408081079186151243596876495528102 GT 1 -1.3988870750713009974653053866908211 0.5825887294807151701692986931246884 0.0178035147276569975765556829666418 1.0179639038069924295678322246033730 GT 1 -406.8136226567213697404209330317731449 1.1431416929480015414376631632732649 0.0747299121599263916169589310074727 1.0776695972354436294481949708995473 GT 1 -759836296071358189552896.3366248882641868794948637087412401 0.0886069432666640729344618045348727 0.0364251553742114838986556428038054 1.0371051142009117267762120206556783 GT 1 -875874087863628113709.4593517839920589715045829780663968 0.6122376538253338596844217938736574 0.0744595391054427891364112581703279 1.0773774300478384546863170559741366 GT 1 -17427056879572145179450527629868549542878388.4227130034868388277864032397600963 0.1855490929123428389696327836111253 0.0373744262727052883494192663165813 1.0380907551199972700458138853691602 GT 1 -659560371605152887706.3311740513832258997301975344969235 0.1638466789344412372989854263502713 0.0303137043322416506899550093009581 1.0307826663199618829249199033157028 GT 1 -1958060050736.1394789366275393568883717454344190 0.0037743978073237991530554432392712 0.0498744865983638673084366085886785 1.0511611837444025577659362499631036 GT 1 -1374793417286484329.6795644510341843700716308623233768 0.5960331309333788792029397794871532 0.0578929051052348092754186207201237 1.0596363220199152315944336456463004 GT 1 -5377321173531.4662210294714039022350081621139734 0.6243547761143460914896224060306682 0.0380590938500509423114642508116460 1.0388022583217707781023744109768168 GT 1 -2226194318169118502080033.3463170224853675875672994731864168 1.2723226228943136965092486915411928 0.0208547169900965981914238023714447 1.0210752480644824144302873391458545 GT 1 -41372609754256420870.5101582897723446057867943501287940 1.0536971308899334210767470185370793 0.0823065799627175916663207171919112 1.0858919092414096054785773348887043 GT 1 -18544552370.8418112817032967122352750936129742 1.7404265710986914088269853457437816 0.0905727700491012704287703571664213 1.0949402952740541695141389124950150 GT 1 -2716156722774404818180.0404799076738357274938013578672629 0.3563708474202716296258439748582672 0.0268532839787482424508322957013070 1.0272204208856398423778960576473311 GT 1 -17.2925394511311531343578000958567558 1.0702407873989475526493642308998029 0.0940609735148716889454873417216604 1.0987832748891719931051077918552092 GT 1 -176.7920076449575681307247950973657025 1.6203232737587995765321619299500122 0.0747921943006991443171008533293724 1.0777369118907699299169804828466438 GT 1 -950333538532905066837419.2028883903438712939056357654542319 0.1011390283082337070708560747666265 0.0623306902250455144179155827434639 1.0643579403499782943427738483940251 GT 1 -17592410.8292718741167692652478693664431342 0.4652203429100068060502799605071519 0.0475988019332521429504832611637878 1.0487689064252941971190749078941300 GT 1 -1152790332354733016731104516048151.9206751632783750962515582799217761 1.5668165517768227130374420769692409 0.0470858445803678239785724806041301 1.0482304576437430978695744775934806 GT 1 -3195729617379929595604312539.2258283735728856214171775970593533 0.7077008547870346947825433110890626 0.0506575330934035897489100648455778 1.0519856741254104226939516374144170 GT 1 -1649849927.3197581260740676129452875042045849 0.6801088701651528966878440649173505 0.0817761140728570604173441942899928 1.0853140336443996814128708311160740 GT 1 -1892927970459451840.6550310375492567685130065500881855 5.8265410149095058496356325326826593 0.0810172282704576936681401000162548 1.0844879035600156380614875189040585 LT 1 -3212525910831403485493109079.9577291832875853975148332342425413 0.0408526613585258270161303942663120 0.0944998930136381458408345427650292 1.0992678835069787157126151870204680 GT 1 -5780305199752259827438488132239156704.2467628483222832077708170415002364 2.8815671037026589937776357809396592 0.0625846448676827144156083527245595 1.0667172548122150879207884900446761 LT 2 -17829150393619092.5046775504964894660892486229114249 0.2284134688364309782639343222154263 0.0610498605683856694263528878135060 1.0629929008305533979302947603182202 GT 1 -70984.2148943306199987611045363189492072 1.9355311634885796269041275806138751 0.0624495370365003667698350637497276 1.0644846954251345469402761792297839 GT 1 -4.1178256144138536068734738673575099 0.5937038482286548270333698735368564 0.0131452733885937688963278371280588 1.0132324371989156481330901913365984 GT 1 -103366853289608781386094618358476.4186431301575279854682014591681628 0.1694900511776128340111403842123557 0.0192069901547063619694915329158711 1.0193938408185586471418290781151978 GT 1 -19614998077978543705287.3729237678948934588019920201416697 4.1124577210072280461654500877106195 0.0172847670839223251500555036687616 1.0174358926490509480637286549540901 LT 1 -207390815987049096810852223642.1475836057887383667844442602072689 1.5707031999217760286953999893511427 0.0815113392130038098461871135685268 1.0850257197629912428372441620850638 GT 1 -4764008616671864137513883820192126779.6435821329642192470270240353865776 1.2047986435001232757351984614947680 0.0871786420118625872856379456541556 1.0912150823862094129028517180604071 GT 1 -78744325344459506642712383739.5713037775048569725607031224312953 3.0628657968681517404510024223127924 0.0474902190524713459540693238414718 1.0498385531313577488719117573081080 LT 2 -3539877788843597826.0593773564194455967395812010562657 0.1337416235472871886543550404730745 0.0365097081151746383670872408421996 1.0371928670634543130994320843481451 GT 1 -26926.8299456629348153394320480600760736 0.4672158222986238807961189597496012 0.0366138759777259945931431753180976 1.0373009880221135077410881416644901 GT 1 -49069.4310031626257936998666256166412279 0.7360114344504484360681160213389430 0.0004239769592642323087427301630663 1.0004240668629075060054174222392528 GT 1 -199856835.3622460924791058379336707658358756 1.9353645613826658707495664850459422 0.0286321628865919997225195733492519 1.0290500594462982145591035910390581 GT 1 -20940932407762097.4303233990260380928064015996558908 1.0318884373517842684752950454218897 0.0136542909988920393922157562125705 1.0137483681833230427798664039557320 GT 1 -668723413927296227562249723649364.1260748299112642684188873261854367 0.4141834263223774319523662982745663 0.0773832438780621477111988561285494 1.0805413461742866011032024055372409 GT 1 -232067592783913765269.1399979134953353556357573773241360 0.4905509972476521180607106987918351 0.0446334799457390139014881480860352 1.0456602214974595848726641635507491 GT 1 -78080.6232244845137184090443412584795387 0.9365479334630772716977160023772901 0.0636799510485596659880560648582162 1.0657979283097599902218751232120159 GT 1 -40586916064548054072.6728014847101355910896795300328048 0.9375801893184324523480269797583927 0.0875972620908565706532172884527605 1.0916737877991777494488715550767382 GT 1 -81771.2191788679069933147004144667298421 0.3738724300882062445795961202964141 0.0563582087851095720433728043303314 1.0580086433080176191841165116049039 GT 1 -11353083255675550148.9489768700540721156880459251933246 0.4588683306440674008526110595129099 0.0686651170299726457215382829776165 1.0711363639442149109654458646235321 GT 1 -83560662.9471951803105962421190748386502909 0.0196707339122933273648740684309031 0.0136358136256537268043075225155777 1.0137296351975128446252095531215555 GT 1 -20558900207847235263609616730083891216292266.5618746513532690631682190785988017 0.1421297309439497958864022180113416 0.0777210951111353568450480452724152 1.0809076012899442487987537160448156 GT 1 -777195956413760.3636716355145543243489389888373053 1.7674915045280930303408695702793226 0.0879905520736442339078049704745767 1.0921049293930930702781789741311800 GT 1 -17963713085045337863398700814271560.3876349550284560163287001860800185 1.3312025431837491166411104343109451 0.0314244844282730883426643716661104 1.0319288274950844668608678955229787 GT 1 -307908878361112603994105347826732.4057087189131055681474484237676632 0.1808737159890798227017877791140196 0.0620188252681003897985658490890729 1.0640253997595057148813728507294754 GT 1 -18264525.7836199532351157316425614419443358 1.0501658015337488849607191634939075 0.0959896935252826172820694827319660 1.1009145176873433682012998395825019 GT 1 -4767051074773851346250293057585138460354436.0487314852742932091387374205171354 0.3128295059918314687620716621093867 0.0293717719174415957578419635542003 1.0298117593074503405082365758590146 GT 1 -107487431732894654794048.5283143667609430771136901216475538 0.9962406981979283502434929046557294 0.0788977512086689832397314639600890 1.0821842295716124500965725491188099 GT 1 -164548550132458076930163576222.2173193494328277530880350878211535 0.0579668294178009938618711831787118 0.0897080769185221895401237986399206 1.0939899363197952778311416735567409 GT 1 -131483516035095780244398047702904.9244947963738711790704212051028221 0.4648223274088685624859675747242098 0.0947145426679840974770191498224095 1.0995049625511030181723537362171722 GT 1 -2.7879990516047302680862322184508050 1.9602187002383053983213886438480736 0.0643699232832211590591785341235441 1.0665350978063677322448124437873377 GT 1 -283751125684096486193612025925569385.5920750764321270202203448825405612 0.3901634566168157477536593377857336 0.0442758574139081870468384596513204 1.0452859613506268793750415869617680 GT 1 -139388418670182559562473.2373804237888459880722282295571067 0.7381819198537300598534100864518588 0.0811093036181349375120900663896020 1.0845881012606211028206561687720833 GT 1 -1056375700.3162397291030751439038272666785917 3.6309218454312220131502838665771308 0.0225306038407358036803630639108584 1.0227882958896981230344314502128585 GT 1 -21.7038716644647468947895871185557475 1.0173449711311358778273519367476389 0.0785967490660413194956448430846491 1.0818574982317599597152887416897363 GT 1 -395064287823007725.0496622773961408173814288477106618 2.0066769659975233947751787880692685 0.0259410457398481152628871834905210 1.0262834491835110828315495596610816 GT 1 -53561111138992000638138060467013498948739.1681241870680537060152150055080144 0.7694740607711882139150160528584731 0.0275489517316427090652452240576579 1.0279355407272740200652821242920387 GT 1 -1353191841127184141.0361905005781074433136884258085522 1.7795821732339285866905139349723468 0.0434739615564881384508360151820631 1.0444472678445363703594778748216147 GT 1 -64892428389093567389637194229891.7256742279451693477538245798645675 0.8276558082825392830062869364451874 0.0852125985665529556387027734990487 1.0890635888637985540630067807714903 GT 1 -11717504242371577338208726500698128007.8679929789770001601560857978824139 0.9728304193967313095895508601997607 0.0430557327866672146745891702305342 1.0440101262016851117319543164679961 GT 1 -8002774301871540248693838428.1849776038320823729864140854046560 1.4143055755040901474886265461258649 0.0492313342757433226203068074245143 1.0504844997351348990058832043832844 GT 1 -10576317213808684477426764747512016.0352869917647850496309447116679456 0.0967750087694276765549375128477386 0.0473080615701917901579110861952802 1.0484636821191984009418032968806219 GT 1 -53214480719447154845720680463.0719379223518869749332833323886726 1.6681683709967091719779334359161189 0.0210564828793694603357815834857387 1.0212813325791106668870045658280723 GT 1 -160433705684440.0627760305196844075260342214422365 1.7427624504020870992106372775965575 0.0222761935049094351150744381631384 1.0225280552782671757792969730165588 GT 1 -16636905707786237871096140717928.1168732372917667415179854867056001 0.0298474014580752668101001879768931 0.0200670533133628871476542543963146 1.0202711314067235257511618925442449 GT 1 -6942221623144346301.2055396836857461692592120491971896 0.1950293800486005002200169289502336 0.0229228722290539317268950380470913 1.0231896865844522493163016371300680 GT 1 -10696394296672132397898.0754073041975304441789670553089985 2.4751393116808981224609723856141842 0.0874342684900063285858301296445240 1.0956808438853922441027597230033645 LT 2 -57958665782679687462829988342394698260540.6166161305600054921846728013496281 0.0923265034349004349283957968654982 0.0298995252955993471189903220995776 1.0303556306794858296277141323696693 GT 1 -147144111615353146397418776295957.0995892058270707466702059463493442 0.0700165368510843419960789902587545 0.0990034948064343912046600884322740 1.1042539001897949768790330112181736 GT 1 -54172098104835535301614291524864646284734.4297865534202127976069411744543024 0.0752342012726865961647557644620384 0.0563866450822850228445477482420945 1.0580387783930758053078472498182727 GT 1 -13780919995819450076520563.7870476703756734337728748385460620 0.3340353428892312685145292813892920 0.0795350084767788731789727748493400 1.0828763110548136767930210140563229 GT 1 -222604834440765208827.6888253170317682189385394188688470 2.9746315177477787013695540984337474 0.0057112985504023128452341259173235 1.0057276703820060943926789253913055 GT 1 -151934490420875159040475845270052952158.1232951651156521814374326108047256 1.1386251437910325981023701832761218 0.0154564952102886767338770268467700 1.0155771921487595912575366831487409 GT 1 -81463518.2534626202233004825681716535821665 0.3479320334475120342116148800616949 0.0590791659502931445639460029859982 1.0608962725323362232317990264234311 GT 1 -4584168643024121739705853895445100461845242.7730964148551064909185697292289244 0.9964638804967610995402673865574954 0.0602663942203029349475299935514377 1.0621588419896247679466465255940073 GT 1 -17.6886629949165273269303983831902103 0.7171320151028847891677315993252888 0.0646216099527436300709947921395532 1.0668041363227736968126841173107259 GT 1 -534680372160581307101878300.6297997044563198318197987633993731 0.4031485513957270792883843902266201 0.0994878484297039195136728766922517 1.1047916202092038325398607376423048 GT 1 -756783462.9222502314393136687382308930418068 0.1573566045397706005185263124842051 0.0100076802729162173389289966983703 1.0100580937350242487915724361260840 GT 1 -1845395.6008086505811346248301553108883228 0.2562270891367761331188141527164655 0.0062472361979930350197056843201879 1.0062668318330533578278312323192779 GT 1 -31630005585934814009425171752540.5734112768513571740674907685500327 0.9467292450971019578250921481112785 0.0724035117370370382479144412917214 1.0751584594391439019966379439349178 GT 1 -24701296307315903818667471314390658.9153209308672095004251028819650859 3.1852639788768939706653237795962021 0.0315092078074827866694450314426601 1.0320163034673050682131859665923124 GT 1 -1094400658680556463352583210494902115003798.6990971422557233681952672697783957 1.2113177853762547312876102753152931 0.0434536401547578962767345168266498 1.0444260230638901344716957707332645 GT 1 -1776424497468340743453740000038919.6363644362680268302021310601064321 0.5250129493731796811001261058377948 0.0015050171903852461568338182076674 1.0015061508663675918934130584473815 GT 1 -5455278420847716923632848.2501069584814175904455008249420243 0.9188367749947576222566949694762560 0.0825698582579547459689854144503241 1.0861788417428790924145666931975261 GT 1 -7669831528943211.8215080071374403935830217044120897 0.5375510081501060885182042969053936 0.0043481424751315969026205449575071 1.0043576231387890417950614086157568 GT 1 -13.2981337992993763233879696600180476 1.0937897506748216638109727238878266 0.0583649645249185139077619190579690 1.0601375152798149720266667011001684 GT 1 -1150.2771932346199600030231167882848710 0.2043053838706582813589355204994651 0.0468625155210458395575978962253694 1.0479961208024224153513542270716878 GT 1 -34107472106040462.6670671302995679961478730793623674 1.2688008997938993690292385836071429 0.0555210916429639492774467283217076 1.0571219233041687278836821921003360 GT 1 -107979058179028585800981499271045871709.2124360360111176861774118591129513 0.7324064272326917035839558636086788 0.0206104636011745386652098719207621 1.0208258234560783603961818034521396 GT 1 -15518250349831.9648847800376617288356847772023934 0.3967240420128304540683864201128927 0.0883674300134927399969723807010189 1.0925182538740076237110617821696942 GT 1 -58826883411344914.6507861368679056154047407911342189 0.5341010758699628595401039208628575 0.0816121789888219662497119404602492 1.0851355145988647387510181602977811 GT 1 -34104511716279537580472396035.5747871018328656799559809590470219 0.9749022650022472160059714586207096 0.0966992547302357120204828902838089 1.1016997297743555491360528000762413 GT 1 -123374994656.3902740285002809320670635832303738 0.5721193922017088169448497396664948 0.0189177159979916051214323250937264 1.0190989452564214270252334617987373 GT 1 -1709249.7230915436240152304214611569924718 0.9213684502079881842653449983151536 0.0860958926989875880252675359260390 1.0900296284575834509334518834415504 GT 1 -1.8165506937505859497668437455746656 1.4159644709436185294796288678264487 0.0632658505148838549386399674362174 1.0653557622039759454330814332976603 GT 1 -10776323503772689828066834.6034912519377988169809750549538375 0.1772317608467804082799051798485856 0.0898598283285973344711716156018649 1.0941566565296444092707685904424020 GT 1 -10332444249397869748129.8051274917312656558881536660102720 1.1446352480692113143127048331894108 0.0169421134570696986455948236856122 1.0170872729360931126980684649808180 GT 1 -18893479906820255157327347300117429741754.1140616065219170106402595005249985 0.0194919239691406464279685025539849 0.0028141504092260940788301525438171 1.0028181175750378841296027955407908 GT 1 -768323185779021090.8923916857313479632774413599262429 0.1574440436463500128426519480833006 0.0888104882507884320613998140834523 1.0930043772872141941678498435057435 GT 1 -1366491126204.7070800940548343898579452427575186 0.2124742551296684823449007853115135 0.0836908621959621269782885858140669 1.0874014845581977137637396550550880 GT 1 -308005606906331389937315779800405.1080585166104277070557518552577202 0.0225664334700329986256431525733633 0.0426180704560358277253229741055878 1.0435528767120232350563518947141668 GT 1 -14293361108660489054801206.5026469065887985838285478972661451 3.1134346655169859776453773579623841 0.0004461485838671106788545036631712 1.0004462481377582068345105144347931 GT 1 -4002.9528860499957699952214814062196251 1.8185252300308181619170286662195995 0.0826387681328405178208092782277688 1.0862539564135815386472972910622322 GT 1 -12120380129935325699511.4306514688042345382277156871883466 0.3738897875403551275895413280002681 0.0875286562530810573872693416972167 1.0915985981315755051096444133841253 GT 1 -3507656877507960510238368584021299769145937.9440778995904509367711045309931640 0.2655455547724404183442960459261310 0.0159818791082152218429726863156902 1.0161109665590159263784595797987979 GT 1 -59525412.1892556289760203197123553491026785 0.0106457917160988818269842425690062 0.0437723584331678061141185468909048 1.0447592754827585254796324392774014 GT 1 -56136816352.1212956287858079497074426140072890 0.8570111025106483800956712117780153 0.0410870585913505046579328948164890 1.0419549888152838884053047942521809 GT 1 -17463801136931058702861399466961409874495350.8049233363479886452449113813096990 1.0920021074029391338743733026442500 0.0213570873669507969095050541870989 1.0215884500431216336401216613460367 GT 1 -1979.3271324580854698536710031146920672 2.0573427951730989867520297872528425 0.0460768741882090659052438796273780 1.0471721916907388779710244364404921 GT 1 -27682699608942481.0125993118975715248920780767755211 1.2619234476895910755098677569201321 0.0199780276612273842323087788846102 1.0201802868150111852395879186703780 GT 1 -501497313213162524644151938753667146854552.8021848570093084848907047776462458 0.1052061785748524717132747913353193 0.0892540338227120365596331761786406 1.0934912722251083534112503990020955 GT 1 -86913629018813434164321110193227.1485281960125456101087726789897520 0.2705747146841125702261636370904917 0.0211835487973158779133766306237183 1.0214111400327114902468849918067088 GT 1 -82881365138388122840460117358.4699933462451486403610968503110358 0.5822770284891139769137198218336888 0.0211974300859908967765569297088784 1.0214253218408421991049410016784768 GT 1 -23952021553893552166986787.7160247939766390621128213981565459 0.5279576949954055491916316852620439 0.0894006951937659668957043658888196 1.0936523195275692651954856306629385 GT 1 -90841710.7449335095580152160628274699281607 2.1695389010572121718537549413927388 0.0834580588975627902256032252251057 1.0871474504990965271491998435796933 GT 1 -2703536022292162823383.0105241348098227212637375912014001 0.4109574251295722001401837553768745 0.0043888680181886643840527093092320 1.0043985273722100981216723294584212 GT 1 -6784699204548160091909482924050.6045731697301691319558581957255959 2.0961243568229299247225752593254660 0.0232836789000279352731001336584393 1.0235590262147842413734544194524099 GT 1 -10999154.6523774681624370887058822569756286 0.0238653586499502641078648946538688 0.0283805448019646863784063124277297 1.0287910581784777134791738690496663 GT 1 -3089861266262341943549295178064394941.2208246467938007096299284692199184 0.0764967110081793794101471533597689 0.0685467496560492082123338258413773 1.0710092776997130536777670722273521 GT 1 -29029992053297416512971635.8579960406789269361830121295233031 0.4676066675511399935973207632705358 0.0722765875204082592687119809558176 1.0750216375177318755361550589235815 GT 1 -6508641478109570.2416229450635280746322842178185844 0.0102853246177416740649891165498004 0.0513678373526015998009749733805319 1.0527341607292868933237083882211976 GT 1 -808606.3735608243794211364002238227864317 0.3558690590311574570338623149556176 0.0256933893665095987128071655985248 1.0260292295656583906260913043796563 GT 1 -1057247091.5677854674558688079656579426723746 0.6277591645245201346832106828967439 0.0798530188051530579843681933337059 1.0832218595313552857177454005366861 GT 1 -3752.2068990412951373118794175894401728 1.4327149441241711329900607813175121 0.0217289811440365162401707421466120 1.0219685319420529749026350074801420 GT 1 -433.4583979194122581976814498637637847 0.0778601803832958833830138984343297 0.0193431440780962673264104551588235 1.0195326706973996577300132658556514 GT 1 -76164058474866633.9436104811984648452570522034936586 1.4191619695279665119298966987198003 0.0322839138090204342683139359346289 1.0328165341157220559124952349042301 GT 1 -364468305846489469.1621154470055844274356636139208076 0.0188858824260142019622022305979591 0.0141713545302342911815931632172351 1.0142727270383273115180372889358989 GT 1 -398452002131203.4096408142980127002574319365395007 0.9229979421956774057448744996741563 0.0160767356799602443797748169362460 1.0162073683853419410408790539049194 GT 1 -93642918049203345232316287071227297.5888296204521584472699406015383860 0.2825286004136097951317529259388016 0.0047979991165215588405160286250743 1.0048095464652013336464021461366180 GT 1 -1130592215610242.4300909815278723294795149195923531 0.7438733606195907567591265119595537 0.0843556060633813003502580762485815 1.0881272059098334112921736356969398 GT 1 -2894099514.1752014718535799673504904150016462 1.2042215471197996260821407874838480 0.0265619703983053833090782074050183 1.0269211135133071697262166982498167 GT 1 -55004498941184989.4221139029260063681627283477159134 0.6372971484671359140954173840448255 0.0166816805356260288625563735844542 1.0168223867742581495639332856413736 GT 1 -1036807324363414189596554286422869671.2015382834352546807577424753091535 0.1703785089846175075529177067016629 0.0076305388919791225464815468868203 1.0076598004029754276763021490610713 GT 1 -62997975804257132452.4787193029966337740901587103146047 1.5551610056606080300488938738821730 0.0407386227686019752787656324736167 1.0415916893766510472592490663556319 GT 1 -2249680416065986.4907346117556018343028077025573995 1.4398233459132036055255005679435101 0.0535476127850938679816850054880018 1.0550346136499196145773033048675973 GT 1 -48822815267.5132190686799439637952090607835172 0.0410902729396169855453804784386141 0.0971206441459495301497675309856468 1.1021663381962921612095865723388787 GT 1 -135582713793576143943694862277661805.2018200981101357707383729675211553 0.5640690074569894532084060152431200 0.0224786666180658407678978908491899 1.0227351629291194604731778912953111 GT 1 -470417363320281305251038041257.1972223022434613426140903827577687 0.7198308516476075201123136942715365 0.0775225650602757112526084004614514 1.0806923641365708824872623902711964 GT 1 -547381430075334797383953159373536983457485.7879410545399498688797328450402986 0.3515303112305513360207603704708014 0.0433289392996319953745185931046691 1.0442956658405412840787264223549487 GT 1 -990966400610822879.5880347684967588628691619901605886 0.5541147888637977760573352544053545 0.0380427433664042296595620985236277 1.0387852610773600344458403891026389 GT 1 -1110721599523217.1887147332748339509284910223427629 0.4923698351926916455047252149353498 0.0554656765892124241172725068379778 1.0570632524035784113080809717048368 GT 1 -575094784.1950902140270049821808924067604110 0.7499485850669305298094914229961732 0.0175911187939925191996967038184499 1.0177476813145610810837991621253982 GT 1 -1.7419722376439538253417548591489175 0.2470954664263360311806072089035297 0.0929624461330397699739292378817162 1.0975714252401730532952904262221778 GT 1 -172435353416923501209595.7897248771113196604631602333510394 0.2380068332102264842096033303870503 0.0979350651802848368118908850318483 1.1030687716883556712367268528532299 GT 1 -2303599278863286794751055742735474.0367815325221906860646856549164976 1.0504246054337894549822517760754357 0.0068934038746066114872848420009229 1.0069172731399997909092135300638366 GT 1 -5053250079845139822671281318.4983799426384244411700348141099667 0.6996143964405358210611739175910499 0.0628456407441507084741543092015096 1.0649072725784549504659091946548277 GT 1 -195263238.7195159628034155381339575305117940 1.4104073909926347073750950314357685 0.0928197417965588403345019873534765 1.0974141074850217150794727613638953 GT 1 -648.6197030246615308518806358682927325 1.6855837205144999059844006507733415 0.0765471554972525870050989163751297 1.0796355423652722215924719651999503 GT 1 -43709638015892210910916.6216419211602122551605279767218067 0.1501524316923555106062230433668202 0.0190133516653792115177492785264751 1.0191964297697197963455800739806848 GT 1 -509507480867847925241512.8993711279425241770431286413470318 0.4253366139015627006166300789091457 0.0479767096083913808101065599088227 1.0491657797929596816665388321787022 GT 1 -4548995895789.1686396010338778904407206849874810 2.3396667276762116297028202462890526 0.0552104403157104886429961854744230 1.0567930644518583186574537496959685 GT 1 -83001205855851246664855622907639.1919918883524531795531479201774382 1.4879571735567152582229484310321988 0.0835268823293075578097909314502303 1.0872225436429828338164067456636473 GT 1 -490045300636890569917214090331366520219.0281267978026812530803537238463913 0.8687326681518314208979411404434455 0.0756564187673669106492481548223013 1.0786714352953861584325319148642650 GT 1 -8494459834448515649685093951.9903341533369202377810071528097903 1.4934635730369088816682713337302909 0.0790842716269948714544871646145977 1.0823867470511112215948960325221223 GT 1 -11725.8152407106625852954745803260064816 0.4906479255642340037017477830953915 0.0869183921684045720464327568506962 1.0909300181192772020304613829968082 GT 1 -6204811556867311.2051534488219081903545242715101045 0.5509613470823058707411427322692199 0.0071797982739249645048294421569773 1.0072056970654068975768276556231209 GT 1 -51631713956858024.2556911885633062422204204557597837 0.8894814118623722592268034031381504 0.0901429166810197095472463504063191 1.0944677431029116388989329527760760 GT 1 -114622747349382439927179.8661973579240271686425327219485675 0.4973840748213096411724139294462240 0.0976544821476806136339220349470997 1.1027577747813601441649000426838678 GT 1 -623.5090612126574373383776715701183994 4.2830246499798667992137514482436827 0.0301915023908832346958502608098906 1.0306566521208583532822489302669294 LT 1 -15862872344084416120503590016693955.8226142715013173879922581248114549 1.9132922626223013208832338877407800 0.0337174535623309499960033959101385 1.0342989964005089522174590015139864 GT 1 -2782226514510743766065810081184403551080118.2552306483484637040824940615505812 0.3382345701916587125004577347688823 0.0559383510066652406847799161742221 1.0575638088319821322266546881883064 GT 1 -1345437749986299261927.4387232048739168299199758317807823 4.2243518006223158029021247882927135 0.0949135616038773972895014532996856 1.0997248278032809198178439698090788 LT 1 -862440031091743459745.5929909654986618490481819270141351 0.6281605619040330337592566983246890 0.0734708731418666410101773583833462 1.0763097962353465129349763816888533 GT 1 -61315318.9103450401669620856435608175184438 0.1254589714010943265953860702036251 0.0443481150378746202918193374880414 1.0453615693136434946962144586226492 GT 1 -6640929.4752653790820905131602151502836016 0.1621847654988337009024573940495845 0.0048901317405732971145632411337336 1.0049021275581907668821894642009746 GT 1 -213413063268520215478.4298856903423151772272836029072378 0.1499972727084518585939888852550804 0.0011191246478083697511841137670604 1.0011197513354016882610661642734766 GT 1 -36423637829724442363947711730964.7623018458329474808668407410538492 1.9554931064008935221834331915730638 0.0150335534839069259859321190793075 1.0151477028409216765444852931289452 GT 1 -15673699428657.4542906355527325717809223215033600 2.4019090855522985006247562681217191 0.0724701338677889001526972292197251 1.0752302843373484489622382816297132 GT 1 -55082354518795918342499313570450028.8837222610132944593946197260684611 0.1993087186866751115421202210190685 0.0044801055917087973940558167977629 1.0044901713397589353849213122753862 GT 1 -186912702851102.5838136322944643253597931090180300 0.1836789435014706485992111395004841 0.0061319486805216730200142582092915 1.0061508262884106754549406486135743 GT 1 -229102131656971211250735505674.9602239044212446438056645072001748 1.3903782809045681152515972106231811 0.0798063166896762568217442867881090 1.0831711057590917319318955722335616 GT 1 -175404859077214608.0382039370832952336558951385288594 0.3786453192583035310059422195250034 0.0193310925952386133190641967128840 1.0195203815783933741578833960842219 GT 1 -75752042453101996719523138505697838.5578855542301978655240252267624929 0.5854190058957998332982625351915434 0.0427297810906464206865744314396934 1.0436695669785320569667800989194109 GT 1 -11866864542894659.5208343132004713812465064702861168 2.2565025964596116192693482460998156 0.0733065500880426972338226964838723 1.0761324586005536315682187911752381 GT 1 -9764838412404582671526900480609.4047937205272683006885961166809564 2.3762369999204141523388266960539704 0.0916305739016356769529820178424008 1.1007221277233549591926488815650104 GT 2 -11114902.0179930761422484623572616646552712 0.0780880104419459492242720526088757 0.0323838335978944883716839359035308 1.0329197926531943234885516002564245 GT 1 -6884653007.1637950836212780817807044682263606 0.1583009686917186472778405340513616 0.0628741805543907718239209970334781 1.0649377267342066717757090562442904 GT 1 -10291650743766431734176934029049741104.1219890745589249233466194541116777 0.9453800210642887024567819276754560 0.0153223205248279688769477026441293 1.0154409203203428853375587940991368 GT 1 -661251849810260675233086166916.8997875345448515651612346155539530 0.6961994538894712124141670421062639 0.0965773706027354734854690499478731 1.1015648069307214468976897160835497 GT 1 -201990573486.3347104241633418561862322998180468 0.7269427465017484938825785193764598 0.0643340341755080348872320090542077 1.0664967403184004236792219376333620 GT 1 -339006.4702778413831433144918299820220517 0.0422219212050224874163762182942244 0.0739708977990716423065491376641374 1.0768496169670289964278334077142385 GT 1 -2216913880070948369278129019.8920011415015434140311647377276039 1.2367930745667731617097848469561215 0.0381909176822482024889815201400075 1.0389393071412055639108136250475496 GT 1 -1812315296285525.1110411551510635254990485418098203 0.5299401557099123468208789082194710 0.0700827269191775175250769005764423 1.0726596504679833189193919953014980 GT 1 -30.6148125169981341856932520546373416 0.1047714329219169416128794349506750 0.0301484758576460430479300169403332 1.0306122870952747493125606732399256 GT 1 -959237415737198465094152756612.3602140545041930743088046656310514 2.3371679020639789980199610440699893 0.0739935296919329189124520602430279 1.0768740569866467008404498407925327 GT 1 -328518.6070786647927512732014372763613995 1.6910257403228325137554557977607330 0.0142868301290743305525877739095452 1.0143898694677432804271922162818630 GT 1 -29103195692030877.8738933288889703519808028805288758 0.9749533483977052028482741657425439 0.0808380955892379249583600687259856 1.0842929975941120325547540335433603 GT 1 -11877305425473612415903415633237333335.9745416551545725138283941284370512 0.2055017189596332641164577504721766 0.0084376726144483783956983873461517 1.0084734712879135201614888232879342 GT 1 -583767518919557955344535377.0603468846194120249961068893120075 0.8461083624385422329333508363552312 0.0235287196348346538231175961498256 1.0238099398862702845294824332081898 GT 1 -839442195422643401028.3397837787454527286630530742804201 0.3797274391060856259491250955062065 0.0634009780566171726230045180627755 1.0655000264961249338396352833118924 GT 1 -16269137194.5975274831819965200535630687360390 0.8096870405799312286397552061128376 0.0056645549177748754348906842076361 1.0056806593540875533654053867178232 GT 1 -628884297155788862141751002698.9166452862026485907170386871597347 1.0488189142259873019409398053530165 0.0657095824680338768953351028890640 1.0679679495432555547458313902592082 GT 1 -47610719206604681559088917359148001.8439188042363478508404357953548361 1.1388553035134068885477731627028967 0.0004664509817591510206372551248094 1.0004665598038597758979235534939936 GT 1 -272214224111924.6198931387790249849699179766732424 0.0608856912843865215516118738365334 0.0275259266706940665047706569576776 1.0279118636605386135814849320279724 GT 1 -152316112233207587759.2214155624722343189708585103934955 0.2972025092352348163553031784167618 0.0700377316633798729848675487452513 1.0726112653389419711711035851277613 GT 1 -50157543003713817205766949627404.6006461003524147859299668392600412 2.8520183556484174379984599519032041 0.0186734583988649983015714176199140 1.0188500087481860351985718137598978 GT 1 -71103247450800508888479230889.8791846946777481995127166091871192 0.1839110806006395989799929083683474 0.0354251632263778054139308804854106 1.0360678583829240878945282854767136 GT 1 -70503886.7390709338741240695701541086558391 0.0909497384757492289441080933868453 0.0209271895482098463350445611742151 1.0211492669476582115884772975767104 GT 1 -2022904298250107780687325604394.6972589071968027529041342872233483 0.6895029204093720479894858389546170 0.0198004485384251301795785549269468 1.0199991041056776396191799531630626 GT 1 -281746365953815405216976561203021.2156332396826442967271994975575377 1.4210618506331450449495548358324749 0.0330069936692374214554023875232909 1.0335640158913327236856121330960940 GT 1 -7164043651023355186.8241451945543599323734675856476739 3.8828500704529598598773813713647778 0.0299539391956199159893788095915675 1.0304117232467625241973425402682259 LT 1 -1784442229432073715536302855011585096535336.8753987770501469420815742886339268 0.8730982120618245343946165473670377 0.0507679439380696023001534687578716 1.0521019833283990389380091860992745 GT 1 -2762393658.9299251830710492381838417728115890 0.2579872153274847596410238381337664 0.0664997710894466820518723078440899 1.0688140707828715294208952266999291 GT 1 -2475545842620295531597318667.0533829386362056229951564119985987 1.4305923367926749764479754515889859 0.0072440718011528577752691133099840 1.0072704374964401542239422583813896 GT 1 -53201254621256800243687344757732.3252148558369124335200437485585728 0.7221661550794064861063036172244353 0.0598470990515362493320472936165536 1.0617127563624136962061701041045352 GT 1 -27562072434684222863864432670144243374.4940701983747194935540421063404535 1.2295553507877928439696632022409512 0.0459179828847908202843281526001665 1.0470056394103380027358439093406314 GT 1 -36338424057650988655271028011061082088.3922478871342383344118809215038628 0.5934516547768987891469406035794186 0.0484211222885669739187908760730995 1.0496326974038934811362493547708513 GT 1 -37939353637832497993924317938841384.9762170558614316689297127899144092 0.6654298337455105599729833772761702 0.0467418123054078382568991095120264 1.0478694910397124799907101771896253 GT 1 -769510639433181468948.9067406039973208635988022380986784 0.2885834408675641305746805230680699 0.0106061766717719353498216850236573 1.0106628230539543642609627736847837 GT 1 -19604197506513351338653370692406.9166949231917688035395119008249354 2.9755311985658087313032129247769964 0.0063824601301222287143823449077475 1.0064029151106267754480909311411997 GT 1 -19763332199034161823891108196889.9934876429980686119014028150909307 5.7378380729816560528319193468084450 0.0873186533272942679905005289403948 1.0913684771912116126827655195401176 LT 1 -4948478993388414845496961437.1785033787553105113475722958615972 0.1027347754850036982935723002318813 0.0152217669511285189427658679949047 1.0153388072716095888939821900603995 GT 1 -2.6167068212606243043905791745943568 1.6636046029267026672898336105093991 0.0752176451646817532428925488872120 1.0781968612251600376308313757617948 GT 1 -116773790800780140906393863397159479682.9580096466985402039998644299558581 0.3539455439851775742966226756205531 0.0973281429582723937876876397432312 1.1023961835883855459081731847317733 GT 1 -8107610739152235702.5504940486794290303735703729504104 0.4243881908474730281309289672271087 0.0561344713329735485312761975643742 1.0577715714293263990437041361761520 GT 1 -1419167552184874.5678995562971843515687917735876004 2.9664292827733936653115228321474440 0.0418905232133837369922518120242728 1.0427932311451110472517359949430173 GT 1 -40716550.2128988634197667094315107402675417 0.4622889444404052841320185347456019 0.0626181321044450635516222839816661 1.0646645366552677476082464124624879 GT 1 -38198419030352219913367905.3658701890143244433512377764233787 1.0776274772393769841888278173478696 0.0704465652071700828917151214934008 1.0730509857991560342878615697428109 GT 1 -3235221502169958417314722654709890537.8673785789874612131729521885919865 1.2780130948514442822959168643254882 0.0707834276881399708474151299774691 1.0734134432127900687523078102322281 GT 1 -1268705866742760694637249416155884010166.7388963621525561922075601699905958 0.5710171799334025174930451014855622 0.0395318588793721942967315908799166 1.0403344663807598335485442431962501 GT 1 -20106450016498438.9164489577087225436262426366087744 0.5127807623312942008097115745677895 0.0123210202357207057066189286930117 1.0123975532988950076394931334255564 GT 1 -21440549570926528117262678.1488082000806600706053858514966385 2.6790360699730417922853901623977609 0.0970983587184986409387305572356871 1.1021416558815625553443271893699711 LT 1 -12700062375606035384931156525.5341294971637416252746126909591810 0.9116232639222807412521497644510248 0.0009864616251599267720905217626135 1.0009869484986432233623948477785855 GT 1 -177193902304305782693533363495182.2548228125120533635076140398498294 1.3860872281713809725519674184065093 0.0268161406165614473624898409136596 1.0271822533074692316052325001849371 GT 1 -83994815777908299.7511638944948808754349241250127029 0.5097474133717442742569902960179497 0.0621693682731973370480439677330015 1.0641859094704498649571170895756702 GT 1 -2548085773244795.9021374855818272933850172900436510 1.3031538214560134418837663580026133 0.0458953047032143217947469432105697 1.0469818700575487251689290182427770 GT 1 -1895442287883834255496.4156962001616725289053818653276516 0.9021314014766707971962804841186765 0.0881796268730476144692784573994907 1.0923122675974563828893359967540169 GT 1 -7477375800915619146401767114234751016.3076736545620195255261570670704422 0.0228897032175656027337123373635311 0.0775091846937013723740692659050311 1.0806778594245545220752844670999405 GT 1 -229942148288.0292882101568245365501279199306428 0.1776220500871708543555488344682014 0.0558570099770556977279437892359205 1.0574776518255019060267452763684802 GT 1 -87247577428074789232710.5939251905481405033028115332409264 0.1036757013996766251787162477030962 0.0643500449992634815994126753903337 1.0665138521524607856620107146465979 GT 1 -867183142012319624484.7707533799075576908231868262065650 0.5521358012717891307717233235772248 0.0669321437526270812543239510534843 1.0692773516825630435929094328136424 GT 1 -19.3268664980791542959945368986257136 0.3938113347728379821869253466008272 0.0860083792332388997824642609451986 1.0899338752212562759955056444511904 GT 1 -24680285175465.9902768051617631455937058134172394 0.1827563875882817119629550340784183 0.0651997486154632042059634914547260 1.0674224073994805944782813749310199 GT 1 -1017.8802549690780926364254098054320975 0.8513711421207066082370967876855800 0.0146286878708656673577440553327794 1.0147367422155538332254173871171753 GT 1 -193854165994340.8342964272804826773867800041120431 0.0095307310875840344790906755506538 0.0887012454094081160568952155690260 1.0928844941104291383262598557023120 GT 1 -687630784103.1715787280996750260799937803654429 0.3354339009723817701510571238834678 0.0696550158335289881880628250479006 1.0721998109034069315183993857074027 GT 1 -426950372042758477087767311168487047278927.7249634243668660828843735792099661 2.2752654731101040154989725380816207 0.0751235843085374109908085749935822 1.0780951550534874805154779283977474 GT 1 -70.4360824214603612979881969213501964 0.0218000236298856504942081168124083 0.0591412943719384019950670794283069 1.0609623040948629051297447215948424 GT 1 -120937740556517010731496249983919769607.5273303839901982873673661035375571 1.2698115329639256547203824094278460 0.0421797809402765830674350940930176 1.0430951813990453919212204640173202 GT 1 -6272908025002151.6439541364323776571040570027197537 0.5965595703944806028327565387399390 0.0069447735784051306150894776636951 1.0069690007517450400186538974679938 GT 1 -2604183662.8062121364316271251564884299649088 0.2267537893182975303666949111710000 0.0769689412220953638189052255986501 1.0800923952318793520390667891612769 GT 1 -13784587225.3967526319063344507500874944905064 1.1039565808511934325890744557734322 0.0603749119956847127237011953747425 1.0622743258255325219218966058293919 GT 1 -17513445213188.3630893624602819007887119906855131 1.0738973022597355080485957725941398 0.0152665501697406214908075490574497 1.0153842837407355341072159886709848 GT 1 -661166359426730744501780206823712014769128.7708668754941233358738137302835134 0.6920752212806272117301272852714338 0.0651584279220029552008962207248151 1.0673782056781151067319018295970468 GT 1 -46279065370135106366600104824053.8489527250715000865332359641269871 0.2698742515674856883894150547098838 0.0249829671643208498502331203477231 1.0253003385618255859655263226241365 GT 1 -126810502070204724677143771116328.0769681597333883230335084950750630 2.1221438703178381681017921057738349 0.0093854591176284530085241700486149 1.0094297800720429563058225236226596 GT 1 -3993448641.0179094005372868729337471803756540 0.0835486666031947205868288813758842 0.0165465931288813888900737745110670 1.0166850170885460553774785858162157 GT 1 -8891745498051520769043541464061532.5115921232547988601073608256873485 0.0376783148966722145970455889315020 0.0602723290713350979092974685862428 1.0621651574706679068898186397459885 GT 1 -19731.9401313906442314126235440925388650 0.2643146017391125950798603180333574 0.0939444983685827289848739911722924 1.0986547147366527127426128651427318 GT 1 -41332025162075702406210238685860264.7188557591428894948248432688964185 2.5698122650300872938762907882382051 0.0359687738319031285935178428620868 1.0366315926056534319273066600257576 GT 1 -149541539722514786755.3345356737092194406821524977090624 0.0180761972507278374342779369274397 0.0038682319734134198237520701388043 1.0038757329325952826000879625418878 GT 1 -893725612754839.1380722407589773993870304913337349 0.1002711752121565447027460690265058 0.0579728749784012968780597231759686 1.0597212096806446872500377236196225 GT 1 -39745.9245399684020560220256051958766839 0.7929432348095847825819707207330030 0.0780623875037711445213289315345897 1.0812777231203417408959020945754717 GT 1 -1667942908725784279100591653616359792608570.9397603557434806698075673410145506 0.1468426481172857362944987376805844 0.0929936172558237140940149309581888 1.0976057916875979636471086295378304 GT 1 -4072641.9915655093366738850874606044875708 1.8782651019509484966669645013258896 0.0233964503392569907977994870795365 1.0236744926481548605319896057177714 GT 1 -169856620619661214098397044448558.7927629869588562039344942289458973 4.6946150293944777727315761942885151 0.0057481062308990141092226909430860 1.0057646901749028612911062279023383 GT 1 -212520896.8124538006594878043181988275854871 0.0590057584619186010662391255716581 0.0929606954746571081819762229108222 1.0975694951583525797915638833902399 GT 1 -2515192515473388781147793480194558022.8176890987470343914073905351609022 0.7092614482024802018334033440761295 0.0129650059124981859978685502359581 1.0130497851746344492158599264636655 GT 1 -10529188061.1017870581072271151206439540681440 0.6324983080614406746841136505564571 0.0234866199777671523522788516228370 1.0237668267395795455129958701798979 GT 1 -6370351609615215032105064.2036497670182697437820332956704770 2.3950181881768414636027012159356635 0.0778660434508542158083967888164556 1.0810647768801255612590320753477923 GT 1 -615713210672808182704008527.5410151628035790802072405772741285 0.5016353507630393116078191688448047 0.0565871908976967388955636782386010 1.0582513306300193708007685464106179 GT 1 -621313702452439744247160047364.6097717353993776881434090408960460 4.3155366054523105715356874461696481 0.0921766600182719363385527959711110 1.0967054788014858098418040319557455 LT 1 -17479409096226847392082330043.3382327482121577869054832901238428 0.4998732737060891415170898923847577 0.0460788730591900181784097971979020 1.0471742871143858230212065423479593 GT 1 -3373915457737628.9867470807352437167432138539038516 1.4686182355640028574914456100379552 0.0941382559204142233558551579531732 1.0988685849374344375858669756889645 GT 1 -713148637317.5980050060697396774172886228584751 0.4561408873022829310891337901813964 0.0167782753545757318671165484697112 1.0169206251186200753627911682481889 GT 1 -31125431337734.7532342958847482685558019727976795 1.3540276199864244082422201152499640 0.0993123504100572149191327386620335 1.1045967522993928119780169586955050 GT 1 -4246801528407481354804.5770457890020591432817752337575604 0.4761507575231658476959654793089556 0.0152693157874003988146821390715897 1.0153870922383486406346563644273160 GT 1 -8643465714986555762991234278865.5142396808579451439802239574130976 0.7578177789577115961957368091023192 0.0749233340416456458466072585626254 1.0778786627871049140196832063033471 GT 1 -51136613518009915918284562017.9075861493637009028281228413036458 1.1282139345419410001365029636273472 0.0721677702186524440658165984970589 1.0749043494134010671214544275390474 GT 1 -12426763236593103938412195761948715.2309010295709535315256949619071558 1.2814233045133916793908986034182182 0.0773867278340045633617126062563390 1.0805451223494940383270625082623388 GT 1 -227325040387393853365798.2875364835458782688431712957192601 0.6217708090704082299815954512410382 0.0068318792730631592948415071928877 1.0068553233995725177916483337484118 GT 1 -5380224812652.0394270544672483210271267976142927 0.1052488364129158011074915179958660 0.0557454459067966404224386194172712 1.0573594944271972272963095241644258 GT 1 -5948473804703908.6551555799636589651543709186489183 0.1907312351760285046800304313325733 0.0388810520000633059973107864453510 1.0396571024373015729308390501607196 GT 1 -915057978525006867127571855938889.1582896729163772208153222671189864 0.6473769372844189302741475418028647 0.0469348962887784191014087699377515 1.0480720631689009827410456864524952 GT 1 -3757312084058274056887882.5175602023951772080116964466425803 0.2073074691650818724388403165560356 0.0220531279662639203278604061200266 1.0222999334967608225740375910337202 GT 1 -1287184657472.4035905879354566601719184355617662 1.7051341141027632698616250491439942 0.0345777744804414918510132679621013 1.0351897339370957280562789563383377 GT 1 -8888029928941860470939296773.2783657248583053185061513410893644 0.1176822896976087843708454359624847 0.0726424769993033693896780914698409 1.0754161103158095665620049336144027 GT 1 -180352979707887871768826548064166956935.3695076951888358838688825013145047 0.5359490668767717476518589092251864 0.0133699765623703758442481986950236 1.0134601594295962424157284484932118 GT 1 -743.8732636760656204758314142583765678 0.1685174463126036807530733934794919 0.0060735532898311563359245945060354 1.0060920723369683123442941804533021 GT 1 -24283666745053.6435912391483110002197151983469102 0.2930995332192869079826130811473944 0.0065401209116618096893964144674084 1.0065616012094835386245110452820564 GT 1 -7673524045330918281126572969985188.3685039582408601078367158151369742 1.0264902699920850723507799518655902 0.0867527328261685472630738424729397 1.0907486057296933604454676799133105 GT 1 -2121072298865400092.4821855816821116428323630902494467 0.0238353488492894976836173422693478 0.0564659678053753040098659345318466 1.0581228446654599395137089664733500 GT 1 -62031227853575.2314091703318779523995464684316177 0.9913536991235353006567601241181675 0.0606662949143210073044943883563598 1.0625844794297985449543232811754481 GT 1 -1.9633894133298109045189190744839529 0.0612957647637230948516231417791379 0.0240698016745345982403912395226081 1.0243642132357407767138361215808265 GT 1 -120156214606533890868830808281196629.0100531264511237738682755768678111 0.8830225623750697499605228006520990 0.0693341878552919844397434255272541 1.0718550219510255090382731082378119 GT 1 -413928751819461333965798834947.7658252380868418463119723444138346 1.2806087956780343423886004995280260 0.0305252932305988897593370110940316 1.0310008935831246861836336257235068 GT 1 -7991367082213628.9607636028294175660243610705292258 1.0375457733298587105587718640839875 0.0638197963166967424102583636385150 1.0659472957324882990269587528535403 GT 1 -181725793560176268405024734523673893953.2763802974792905485519151780167385 3.3870643590593578946089432833984453 0.0857748572516605139783754495944983 1.0896784110033268842539363496186602 LT 1 -35904582677182404844495158636053.2689847607945256163883020332313037 0.1427689453237460639034259652673594 0.0620521966440501951843871119270647 1.0640609782663075462864470588044050 GT 1 -5505900575209.2792721668101074023061423130719102 1.5731227157571230394887624776979617 0.0384351902539030983670929258598369 1.0391933113927721872253217575679397 GT 1 -2515284118100064258807712978.7360179370603936091142427167892007 3.1228588383022551400295949581014591 0.0937260923295008919889081821890729 1.0984136922834296374504464470766333 LT 1 -4644934.5346261068922424365081250480975424 0.6372098929082656683565412231681459 0.0276394053864712050819666125064223 1.0280285612058635887617633668433875 GT 1 -48087234137443157258796225.9747587857593947753686802426915941 1.4928511564790115010139931782687672 0.0607178987381569974397694357801345 1.0626394175642213565188363362537395 GT 1 -5316370.7497335478004717066165525273241384 0.9461882013099698279480390465100636 0.0638874635546376321952210874536323 1.0660195784866965986628918046000886 GT 1 -237838248048519736.9357500321041370796176090117865876 0.0674563884270939259134838121435043 0.0920977212206654944629178791604249 1.0966185286622791621344034813931328 GT 1 -93247910651.0314233747242597725139862277098248 0.0455648426220212694839840076727902 0.0451317499318830664969696584047505 1.0461819060623496669063229163925626 GT 1 -1126013542413841604827927186535537650.4518725938164814964586251081658619 3.6106550877785910317717348985082802 0.0987252553657880428839617634550744 1.1039451348550725183970954420791399 LT 1 -10125337931.2083073710082149556258214333885519 1.2283050080311859538400239456359365 0.0140985542969933627325044732750556 1.0141988830232667018721414624962812 GT 1 -445962593368584236681587611248879685062.2669689462035274486258611179749226 0.1355709723835435157704433482858993 0.0156560998531990354939746820562804 1.0157799509688868664317487545072633 GT 1 -2230169192613626047910458927067259.9755790049897987925452260434967568 0.0689811542782828539653876412653248 0.0835544884655906589157827607975006 1.0872526662418209074118960679683797 GT 1 -912388732635567026339079098.3248372889798471041229810948105054 5.0546892654470102966265359660596992 0.0252243505447099172678623513570713 1.0255479375848546594411193102297070 LT 1 -4242388611371081485284.2710706045103993974501845946498692 0.1242685766055194958567687901593716 0.0783361791122205383668370816926834 1.0815747413429406010120666600493776 GT 1 -266455358.3421287371094591602740302212806062 0.6517542079897504116136816807076018 0.0298504882991360904035468968690147 1.0303050835883199647036364808831324 GT 1 -5898792504.1874657489093269412080315884304916 0.3982225702295212720437302380680060 0.0454325354783808418128464803093328 1.0464969578304583832912379723697691 GT 1 -116270665327847905930759100449388.0052555572234406329435803786842558 0.8663689511735361348287261493103272 0.0085107441105093133644302836149163 1.0085471672993640420425209234801099 GT 1 -1764481440.0087577469683961167864927615189832 1.5811303286432546786823543586435933 0.0642395560743825122832065062609085 1.0663957712386508188791339584877404 GT 1 -49715171702781435.5389990085619503684169646932818457 0.6234129569650998414388716621582201 0.0769514503328321913170762228337724 1.0800734460065223500039593428388039 GT 1 -31525837879427924418265001452.3987467933454789726767827247708345 0.2126931912115069245356764806882419 0.0435327580561775112867949993822183 1.0445087385253910174173117812323566 GT 1 -178745353220139448135309625735631.3119801865742836672220738927154975 0.2563631667242717908790369872987300 0.0999492280496184590983074684149588 1.1053041039707937260829151982477987 GT 1 -51049139133.0546297135991373487280694862934496 0.7890749610094110817637993112645402 0.0396951908935178828784893662994890 1.0405045354298060041928032529666252 GT 1 -56633769380552997.6386145568488052280516037428440872 0.0917579797295623244421924728239083 0.0626082494526081800461487390264197 1.0646539938870745586415592644609124 GT 1 -9838.7351317281123366272851257193551349 1.1815467903435476004947350315350675 0.0660530765658671176196462479297636 1.0683356695263345377427144360237853 GT 1 -17718874662469992817709515472662328982511220.1786288092512978141636733566822022 0.2286008665866103390830448918873881 0.0913937540274393333033279657762887 1.0958434513985329195954946100176313 GT 1 -77593244707405409697380068745952128072.2120226564379732592275827547148219 0.0630402694084798309967795692809880 0.0165173914126345655821568368122364 1.0166553244945628576145630488638701 GT 1 -3856447900420217279860285138675192158511264.5397845554447756513391890379846842 0.8107321616772820912328823005978283 0.0281999492791561419045487696333081 1.0286052048176584370002766791354977 GT 1 -2572597182470257764040.8308190740590973630352650521140876 0.3675687998761912379198814960965526 0.0640803045296388157976326906216569 1.0662256016228323959325907501403503 GT 1 -21128993851208260465713184731486.2766622782749240591094435154745806 0.0102086495359720475388838035268864 0.0410346515089238570728289249512724 1.0419003377118059596659043861621193 GT 1 -449270881979209156216.5546893221518142402259105765367719 0.7989679966633332237175709643696703 0.0942676680715151970945572691422289 1.0990114559625001308140527628362608 GT 1 -42184489574760047901953.4951375925746253146950711689188385 0.7038242727441628392191037920668317 0.0329372270629285377749576380957329 1.0334918704991604711359780120514529 GT 1 -8186.7776265339046113613392896392336683 0.1262997757880886825520730697682273 0.0093892801776860335627002841466584 1.0094336373417168006730117662269561 GT 1 -42332071297045587918795982.2978604325220806823822082759314387 0.6262963176292631775129974937417751 0.0523787277228765406478969547195695 1.0538003583666067034377065610420290 GT 1 -26441354020228072231.4764803034452631526303795166109590 0.5381819993533454842630932039401952 0.0598519972557768829408386426895986 1.0617179663840980183264597390648925 GT 1 -234046.2459557220229608945488230031098881 1.3196388743144466363612936878843465 0.0167221357199718010638526070836474 1.0168635291141913553552679298711853 GT 1 -44435663055333079859673543166327844380.2379832761946228988219574111172300 0.7756096796722346457640791486843126 0.0346249708690281476024221182385118 1.0352386219169003173963465755489327 GT 1 -2563.8211536234647982238799021370399778 0.8278605955422959497029422577806746 0.0943049238109005579810194345319327 1.0990525900860357018661288055257427 GT 1 -49789927573040027225275769.3059945233101243878444469506572114 0.6593347886035801098840337767683804 0.0014162376718589413581062784730329 1.0014172414843004731394156915064191 GT 1 -688932591594848.4444485769385863844909099111654243 4.3076790194634744658704979639645555 0.0897366032050287125826336590671864 1.0940212743255097029559936074599100 LT 1 -257.4913060935086890061891953563523967 1.0360280749264328605810171075951298 0.0726765420511467687692104001517381 1.0754528444519732851746301931240398 GT 1 -32729744487800643.3203013553149769363088201500329169 0.0549970213146127396227374119151664 0.0131437839957784932446347438455934 1.0132309279679709160324098256304051 GT 1 -14435906178238481.5918982943381806267473394139397519 0.1640060080476308581379948624905075 0.0574520706883009467434559756708150 1.0591685075718475200276321360214343 GT 1 -1084557431465.0409818900193499124879162188292664 0.0065186334167891163141346052496021 0.0884576280069239261018290611415302 1.0926171999393883151303340082816381 GT 1 -20352703.6970335070463568707133361488267836 0.5611517368104137626303673478282083 0.0995631058811618419965791014503825 1.1048751955348710062576907301260287 GT 1 -9146687222916451188068822350.3697496614630365976203848885347473 0.2261797592923046045056359460971520 0.0787291644946837103530566984447966 1.0820012191749748221145972859379542 GT 1 -1892081673979.6321887285094042277161779444464607 1.6521612985925703489458107128794056 0.0449713171038700318418576003818522 1.0460139045062223625803762805108669 GT 1 -997004824162268628935713478600.3261059951465762523517122646259996 0.2594893912449783351962796867514910 0.0220621869217861877287078765951208 1.0223091967785803370685885389049770 GT 1 -297422948558931245.7255159546240386615232650376033348 2.5439441920923583739328682272208283 0.0148630565724076877842620179161286 1.0149746186131647165846339427043691 GT 1 -20406576291998822.5849806874773912053001417749206901 0.6618627821902478029656967103061201 0.0655360023209801081287126578788655 1.0677821785867937651184382546199378 GT 1 -14951220108065.2395394062489321728074798378166036 1.8337286655951515638744484468224654 0.0604184422613237137491993311592187 1.0623206541691932863268046402842298 GT 1 -1663614810262.8679791223793599363864688484521087 0.4251886573765848554974106669977302 0.0053217502148117515880021898110990 1.0053359611680047042585450359055252 GT 1 -1102568999697245843110851121.7754006151210684105068108642555472 0.5629197859036531961532547856210999 0.0056368888159007259232371929532776 1.0056528360303477544847042963211048 GT 1 -848814158647683.9169448014917849404378164328109331 0.0584374394622252346117847466857952 0.0465684334069731980528945754041412 1.0476876272640010656796919459369767 GT 1 -202840698798.5780831793887004433425446945458742 2.2117257886269549004924088929477903 0.0943875253275036206949873337293718 1.0991437965922096888005091848858350 GT 1 -1615988390985695621.1854995467028147668117464479065827 0.1032626807508412856446388120042043 0.0620624770376893266883254741670736 1.0640719388442224142697135417712967 GT 1 -18977.7540118339222643407052362166170068 0.5724023271407897196213116447845191 0.0303107786992543839533777708358372 1.0307796492322842555404773553596697 GT 1 -8395037418039126.6891539692624162444916026366500812 1.1829614846968786122634682151293376 0.0603114967842661271477449812180285 1.0622068381941559131869796947566190 GT 1 -2710768854527043848281362967.6231037344575348311154405161165243 0.4920739693745882741863751490236820 0.0059059881720068299328500992350874 1.0059234974940873132323398762469701 GT 1 -1631819137035.2196095828670934817107032151462865 0.4744651553112472322537867489090366 0.0969909207239309439917131093393653 1.1020226710464082690795275854560222 GT 1 -17484.2363811677002819779220421919463045 1.6490444776407202944465121419805616 0.0008200597210059489748602273026257 1.0008203961539215874122590507913323 GT 1 -897025011898115904494590201509578218046019.8386704515360948898265863399029946 0.5073984956647388564409806570180362 0.0104404742167431592967632863877788 1.0104953583125642488892099886258465 GT 1 -46626910007152559791204983615981173364.9444512141690590279528751686705132 1.0637034772654331895588550638735906 0.0143684643809392385096089093870075 1.0144726903480127005940883230945365 GT 1 -22.5656746790504248386859653028137301 1.6161774351581907113805636664952649 0.0340192604984959613200217803573200 1.0346113833726318048844808564312664 GT 1 -710502452703023390.2236613267315734426914716733898864 0.6452068869371174083195214834742363 0.0878477430556250651605570412079109 1.0919483544382197090217144020065729 GT 1 -28418575971489922738651470998403525484788.4806527798488180272496839124727541 2.4895682490777912749799382251036844 0.0353586719630726477762183311947277 1.0359989275243253422270869679324733 GT 1 -221996882.8336418738751482301330191846787215 0.6339998421540787403323957949958405 0.0216263920292310536249304516214012 1.0218636696553679907873749324802353 GT 1 -115700365569603687533268.1437407599403375813779666533741486 0.3605682994619417687156235660697799 0.0378921187776072357290608412185380 1.0386286919611267488643457144872834 GT 1 -1547831.1333760066034176121665611595470623 4.6746968840318359479223767089902597 0.0648502725153406888469375213794898 1.0670486261666770328897857578110669 LT 1 -4692528637829133333.3576581266883642300363702688474941 0.9243972802061468143496049737342430 0.0591633398176455603000669509382466 1.0609857355664057734156329928144806 GT 1 -982414110679229661255.3561900308361527453378591629515098 1.8152982670882869598840369824322187 0.0260975976019749457626075772916306 1.0264441832370165914660486208156068 GT 1 -14066262608783376341287329146.5623834083667848345651603233723750 0.2330627952536740519060126461400380 0.0056329555819558429897179513372867 1.0056488805073384529379535517016601 GT 1 -15238843452060987.1887689587897730463659233338512605 1.6416967625090851424385753066409276 0.0317398613550128023261530409664229 1.0322544895396057944922243959996624 GT 1 -3402041.1002214717503584777935815406268984 1.0101563058416447369475616190065732 0.0036630348037192181043507980151936 1.0036697601441663830151223886577424 GT 1 -75395.2528733542364402053059425933996896 0.1242004645589241546402441169062016 0.0959374985562589369781199958205764 1.1008567822147345316987507007229431 GT 1 -2168.1908175702454699121860544194570691 0.1190314810852217028421438886428190 0.0721372942385167444243093230000911 1.0748715035187933689176712033455513 GT 1 -15728268345408378273115007342344421.9855816172670215626171246356529478 0.9216232678018079933665739725858724 0.0514289411453049951795470293069264 1.0527985753286634902785027095852944 GT 1 -59152000963207310207240285440051403106587.3293527174989205403535216548504480 0.1279828255246554350845148958935498 0.0835615907490770646024592896650421 1.0872604160871939827911725816429057 GT 1 -425208958.6117267905321138068116778961061151 0.0805943604072344393726361686723152 0.0824395359067005249098914918893186 1.0860368003056543965526943944725340 GT 1 -3936891270647.0591471253582990566544855468115473 3.2625003268676939767641100910079321 0.0275302038052083511414257171759494 1.0279162618692286546884869332251152 GT 1 -24246850.6713590956683163760792824903182949 0.8347802590461650379413369865873397 0.0296251513377013415133033655871233 1.0300728402142605832886670694441939 GT 1 -1652503001690121998305666.7232447532510210082901442007290964 0.5068596582862993212536670709334954 0.0269792452482905545379812344745175 1.0273498663435563383068555531754462 GT 1 -181999835428527553618708121165935284747.0746329569686695688688153505324054 0.2158684382630505414719055216221532 0.0459270293820274528625293489995912 1.0470151213416222610071133707311088 GT 1 -97408111170.9346067811019009581654688083398164 0.4263877298483531221985786001829453 0.0188174376338764091154930580909958 1.0189967384983601073214351347086141 GT 1 -8435641058.6351498496264293981080851718071464 2.7000710942019530454479914219287326 0.0433526194476115493142992073366801 1.0443204188011255748055365992095452 GT 1 -10098832292305394777600837358841324914240625.1959008179602135592548611891419354 1.6205554255499422094205147387594971 0.0881420392355427298908225944523101 1.0922710458130970746616597214047987 GT 1 -9796774185224263971446637998506535438.8481574684769211379293248576747586 0.2160075084747054521293322473947933 0.0009532760379270911746017001200256 1.0009537306944944400663224678517696 GT 1 -1568262286135452037912112.0037803880367329245470710070031741 1.0681825376718774275777343901659103 0.0068305416246228124605576806885583 1.0068539765505228697854510020028974 GT 1 -63070650959343.2976063768248469276649529265794886 3.3055521473093232032969957970190884 0.0688277563387825225049956324459340 1.0713110095140468346120835610712427 LT 1 -22310877.2158184144718191680605056189035920 0.4510244221812372245192129778524224 0.0370316111973892461424776455788125 1.0377346934729328189711622250411100 GT 1 -587737577756184075205542417377.8480806640057290818677520752937106 1.6413956866775596800786596474868326 0.0131517969567424059736595383994473 1.0132390476852767361750785418300872 GT 1 -406904427704739014152325459.3288454793267883421053685314124129 0.6381477821173227797939784650416644 0.0874919066865267834128085237163508 1.0915583241801950598861854151654445 GT 1 -20.6585479661108833108222057462883066 0.2251518392323216838459543333087561 0.0259752024692390646204343041611934 1.0263185161865216552267851909983977 GT 1 -9941409977880157322239356290063748.1291846199296959841151033440898943 0.1130028184262492318721451557621093 0.0031364255584334836171315902592428 1.0031413544498408035688693819094276 GT 1 -1245071346392387075208181217772659733599.9454018538319756911796440785760399 1.1778991799172262723378699898257324 0.0164362358473095601523283536061859 1.0165728093424081021595422869838169 GT 1 -72623782678588356396028325765289390098184.0646799922979746008891211487332875 0.7506538101308389846196303107123583 0.0081559735450869472155118195503843 1.0081894154556730759837076462204520 GT 1 -78712651020432768443229198381928027250286.1108839596818617460630795304955304 2.9274199759577542078854446933610298 0.0331225311645323420347364961337252 1.0336835042406467639747994020543284 GT 1 -643396994422221533975508740507224269.3331925060372024630664635511897317 0.1077147306414715689061742142923697 0.0259341951879892609138176389128971 1.0262764162131358740973038321653777 GT 1 -188818612890.2293131691256956315354574741092099 0.1231334262519963987200870063091192 0.0908219835431824543755388868472249 1.0952143662920867254048669402369180 GT 1 -31227223152496736949099.3753730691180407419666784424698715 0.2089185854629112058642631266285198 0.0129543222586360077712143666781743 1.0130389612462968248205789251048809 GT 1 -424758754557155501942150154271362545602.3435805090152145390336023183990898 0.0265919942265196594719245994570724 0.0337363780737814977862005452713150 1.0343185814554597215224286699989301 GT 1 -4492286.8216632394671708314877305865910463 0.1241581571308847649882175113385315 0.0215800744127656114400932033014686 1.0218163293349102939555681341600807 GT 1 -65415078896708493009.3198870656619440464493375128938287 1.3179378278996576897843235428071522 0.0218649146082107618583388871945865 1.0221074943630941406373418660232185 GT 1 -3379864199.1074103012780430931708315471167806 0.0359907089385767060932000421776424 0.0750177362351787365047492431563983 1.0779807159618425945350802903007400 GT 1 -56013506048311127631999299691574.9265901660243907496696029646269847 0.4767124771195696594230678918949571 0.0596319443996296936415583450766622 1.0614839318421698859990835957129055 GT 1 -869164070411.2278463603565353946360203567147393 0.2242851034210238700639825535875928 0.0225370890807228584522504559946297 1.0227949306360405886008426470191149 GT 1 -5.7068469713960721338394676329821034 2.5569130925637462040164762333801273 0.0853409450817806097652734879477776 1.0931825686734777680306980374348087 LT 2 -452250204532193498654141084456285505212398.9586542599761086486903768070564939 0.5285727796436169991461711567095736 0.0457905341404972954757797124222000 1.0468720657444488195390719739975186 GT 1 -8601162.3543697915556160223085481492380457 1.0495320058477769032753075263990335 0.0309670257495655874653806143559206 1.0314566385161342739526387767877212 GT 1 -2085233160260368491468739.6855760190294169552170398417284346 2.0450490366271013916356710366087715 0.0290165776436105428372090654814396 1.0294458835900141641707514076500611 GT 1 -2456760854481319415879429096604859304.1858330824372264931626474494740684 0.5937303451237599271001049478298867 0.0563608641409511613463589493884893 1.0580114572567027340679118594713058 GT 1 -33599451853739210145065598097.2602941878037293173785987511759588 2.9629787452240959601623979821967538 0.0866592528651838435859635844443536 1.0906462510001823414008101054739888 LT 1 -18033025502855303660175671347333685.3098058883688581233878493965369883 1.0303689623557776922087418032620801 0.0747041009521573231121674785084257 1.0776417017613523231495599082930026 GT 1 -5678238095176741600804700352190648681.2813989738603388217614876149042475 1.2296419534982330274419737414935610 0.0300601771990196893680925771447795 1.0305212477586713788381311154554631 GT 1 -3.6284607652600943298140754516915480 1.0998965276086547409917266202822433 0.0134898836257560935553525586526418 1.0135816987578111696869003566812601 GT 1 -248154799884.8388923638257065734894704727487662 2.0225086549130109189395986847233625 0.0400957560252029170195043572112990 1.0409217453547905768932654648098932 GT 1 -12685613856532621350170393381772739894.4608422585316499266086068497244803 2.1692793411964154926446917732995155 0.0160411768121022886608257746368846 1.0161712291592292053493430124189268 GT 1 -321782167335176.7891324552818748994691576401420577 0.0161288417378448848809712504400503 0.0153601224317548907328710644566058 1.0154793111901102961754245341787658 GT 1 -251739281456506286165381029218489474727413.3869928895991127964021132300721823 0.5842833876679868621455134632536009 0.0784680780355068894858213108570369 1.0817178611651548020213343863601200 GT 1 -261680552792762597192.9772555757323530281372774484325703 1.6249826459820683082024820651590286 0.0795689571798208857259327614504897 1.0829131938579840031951437207192267 GT 1 -75988489641438783021276.8292401360415952623362941601376814 2.1009493580548134629974531155550246 0.0511689064160506772938250935595014 1.0525244797917230417223497727447376 GT 1 -2249770.8361257129850396928375582688710764 0.8129354311454937051456239723847287 0.0496374091372706704312713796663875 1.0509116926144228509503796758286595 GT 1 -1786673682026043893913516884822413160184.9184953419560114618403798251876594 0.0562663227241214969763388194454461 0.0730787310112340291050425554979610 1.0758866479953261349995217052096225 GT 1 -1463417635703436149336088384190332284684.3945357150230614073060526800848537 0.6875817725312191206406296309724834 0.0949241011502261227046872671098830 1.0997364726664315697135306812797970 GT 1 -4594157729072314723336099742096528479.8394471621624833084087816774391050 0.3801859293253290981610033812992944 0.0481317354733043642506192586611242 1.0493286313638436661110852507448485 GT 1 -61.1769037863450810013007637792625039 1.1833515135543048253880570197544105 0.0399575244871797699474485929746970 1.0407777501731962819186243945672234 GT 1 -189431328819026832046851952457532733.0042650720241577928240584347433744 0.4132876336792933098238828635627871 0.0211947210736697781052025985135777 1.0214225541646472705003827962133544 GT 1 -446054354201596847.2441016235195613276834986908396191 0.3897644484767547745369420646420376 0.0190151494084476286175508128035285 1.0191982623580824729127088982333181 GT 1 -229638148682802145863800480832482.3539399907917578470250272021709940 1.8755061992630948531509085132574180 0.0031737888465454504719200686297415 1.0031788359962541939570166147418219 GT 1 -50280526997.5752843182588597057824125410301870 0.2938223131396634005508992328810628 0.0788333390833196720933077363538991 1.0821143026189986030354753775840629 GT 1 -1495.0319203751402544269853817068451903 0.5319556675340578582437710629237228 0.0382839660877221266046583718511581 1.0390360549348905988939270012124457 GT 1 -19726693231715956175112812.1113645234294942144643688215074977 0.2825818661764277397792212139046474 0.0423425637209923498238986397988042 1.0432651471312521271472541270595098 GT 1 -1405783137387848556048.9444240904458261559614069993157913 0.9022073743255922501165393924464365 0.0664904247006714386614965837575023 1.0688040586353678082437327510638718 GT 1 -10461592585896092089241798447515.3536265079890025072680526356976467 0.6797461866203157373007837891467167 0.0071233619978073765464127485392207 1.0071488542734925921457966469247426 GT 1 -119279804608903502574072851335309332.3368507384328354321112610181370025 0.3475391290955741509842121963001598 0.0297533045796784714806064937388567 1.0302049146442844956405165524009400 GT 1 -59470287377013375913030336835111.5598548227873523407948614911877624 0.9835832612885073174625030728060737 0.0490431154047026208028341805256792 1.0502865543779579431660509624361549 GT 1 -11654150767261146.2704074567428817519565290094504020 0.1684117520444289774910293090745222 0.0306641456290250926109195313895106 1.0311441282048526855607066404621154 GT 1 -14099347576663621621.3856484400703076890850143912874221 1.3041018591879277505507323447093765 0.0502897849175950305515113830404018 1.0515983776760879109621493330691644 GT 1 -36389061647016735055918314911422.7008302202963171922234014691702002 0.4064476553889771352375023182148405 0.0354606124341603177881083141262339 1.0361046101805514579832755547219396 GT 1 -28.0860382840460748097491750746645155 0.9454998280597049269002994028394428 0.0025111408840609538112321621886421 1.0025142990865662535268864588533483 GT 1 -153026686271751464.8704979663835989992771375192233866 0.0049237081301814835833793970771104 0.0694791167594606797136483349216804 1.0720107601204643642249672147819318 GT 1 -11539783.6128679953359926021374612997741905 1.7088066041829953881461876183328632 0.0911076515799869060168085110974511 1.0955286203987199954657998677438758 GT 1 -255293382170175154566330481334489164421.1426908813867552884913583729590721 0.7527742568155498477012347005384091 0.0392320451830258277756154542516858 1.0400223613777213835620380744450303 GT 1 -422381680470997571352403745477191144680.5141807078056398232479579115171406 0.4313827385841437016987933642274801 0.0156550005724297044890364863673042 1.0157788342045575010529081827017157 GT 1 -7985761427045173233251250.8983380718340996854801224126799138 0.3850872111089724942167709401530789 0.0671925568206878335163610573854029 1.0695564840231129238720201164847129 GT 1 -1165393176900692078805014006.1498394560117294610703750424372420 0.5242671442121084499580336556539773 0.0776911445986969891959593824314962 1.0808751273539399371919993799063085 GT 1 -140671584389413048895405.4008259934691500531530822023776189 1.1468311695834942741525137781693986 0.0553493591922686827282093845479531 1.0569401121083783177799802392029773 GT 1 -66595800381192783582764803070.9542740195293252370965407734221883 0.6657667861559696540917439635540264 0.0771175389573549763884847990957691 1.0802533970707900387223664993109737 GT 1 -219646139491455936868967815587753.3995492192657254943954915782370405 0.6651940478745495524193822360980681 0.0249501416205373048243245189055875 1.0252666724922825141530733803663134 GT 1 -627552442845058782902487560427878347.7011286269005246253631054390368959 0.0143524851898299045874538442716352 0.0498596236802010627243476134653961 1.0511455407564991265661262226065598 GT 1 -61.5063632809956403609110558887302816 6.4498984585794364843849225077716652 0.0845077354230237802507756524215425 1.0882933643003447737020305565972749 LT 1 -231422964931191426932097642312265.6691534525733355138197167594882147 0.0127225636771385805314753149258639 0.0179202039254928056517005928214162 1.0180827151973056744238215088249637 GT 1 -1186973249138180902278062713.8635001168754848531372296134729379 1.6082520011625041199468484634277631 0.0728618478506365569418744202481496 1.0756526930755279407597797837783120 GT 1 -267538240659022678209693.9718668422659083794183995833638124 0.8584698862763193065288094926416679 0.0386058046128549954650451007232493 1.0393707612072967288012055494335348 GT 1 -23357213460406261335439229779022274.3455852745324558029957830678878841 1.1795236679308894498026284180209381 0.0993509064997716286915985535094483 1.1046395606081315315058544286049646 GT 1 -27.7172477198013441791172017790074809 1.8193761389500316509158344084223257 0.0398461818320829747935134052895526 1.0406617800970243762973543693801151 GT 1 -35890705890303068682632465569815367209.1952826604278320770116149930896394 2.0675884913608994217185717777471835 0.0599598446602939764576727639152637 1.0618326861839985532682193605512615 GT 1 -1101831543705132441019614765296899320.1528261047907203563391123913661527 2.2672057254050540967994739497187961 0.0614228275459423841541012739975280 1.0633901967634557160646366991425724 GT 1 -10278307393914181309842834.6442878633982176721182707407252527 0.9529935102686737136056960636652363 0.0601492207799770157712523079589127 1.0620341618301035167162366663323669 GT 1 -51370688.6477190283653801728485606925591621 0.2291008342753867431559808068009138 0.0201545765353131693130867165919314 1.0203604509168696778871715929182366 GT 1 -127201958.1334830634516824681799605339593452 2.7367376117510642316858864778963500 0.0438411172421926117893541069285519 1.0448311843862985319410829164691681 GT 1 -28690339467521994491.7658805325955442571948373527951440 0.8882276761983820147746317671350952 0.0995328180115277407463595421645882 1.1048415592407021078028599349452873 GT 1 -7296773336135872370033602.3209980254790484499876186340313622 2.7460598607940193110558321098933082 0.0086494948216584168902240844358163 1.0086871188114326222726976777272812 GT 1 -34661632.8360136173720698452148315430309586 0.4589331657880061074193901672946011 0.0414822735638096439476199928783638 1.0423672227329776652925740332011959 GT 1 -5957827697215393975510939817.4627220045935867032271689985941746 1.1276351323052140121000459761273507 0.0479266580174969577220578695959302 1.0491132072606050137531203530693700 GT 1 -5459451492621001791812.9595484321329887937423519388110777 0.9620789367834193422131489667722236 0.0709771748980695004799366769544130 1.0736219709309099730423832923049048 GT 1 -653695375302711998578428863514613665682816.0417647666065997828460408160737595 0.2332447548405629824088554790382923 0.0302993450032006484260042055504311 1.0307678582085261075787897104003781 GT 1 -2322139174484.2229378246537496465663839456066001 1.2170063177623639696692433327150484 0.0794815494879844744797783959905124 1.0828182344990024796471328729556840 GT 1 -68736.0866850563867987180463117964790372 0.3978625245067892228651396278990522 0.0288420167746009822626541442088836 1.0292661223543204800899162510677414 GT 1 -115746954577503925573682207646.9168204711951818176796412125320372 1.0110023215016482434503488052021924 0.0891557525823836931912172597683232 1.0933833651451402955986213764733417 GT 1 -30542.7999750827228219682385094196949258 1.7922193151969127407064395148943572 0.0996507989131714882134297253328858 1.1049725897032427355429894886133024 GT 1 -550313154216065402782002837043238.5083022681603695066849439874476802 1.5159138398678295089677195021743530 0.0070994397702531049269113458006861 1.0071247607069265863535950340910597 GT 1 -21670.7903680140886449812325895015373170 1.0759042615956474750799414279387241 0.0603195625133984207812607372380566 1.0622154216382659652830060312123439 GT 1 -20115293.2102742309528193237376614801859810 0.7942121577045646925393034849874476 0.0967577511485976371885434909128594 1.1017644903901534878453470761790753 GT 1 -62446404063252578199734082813.6743106337997268584404233576400305 1.9354270550734790613060882047271829 0.0868776123852955978414418240716576 1.0908853574097207251488920649150501 GT 1 -1567328094811891628252.1968738989437589730736855186312907 1.4227198217840542738461436789043645 0.0813629030477560139913517224055471 1.0848641236774260674446030541629960 GT 1 -5.1569439626698880599992299586399139 0.7172610514268327033809017042272557 0.0966147125116614480303198568155972 1.1016061416056277397188019202336738 GT 1 -323.8068901849542309577218569043317660 0.7600794402677214024530957965831176 0.0444815061497860926596989697914764 1.0455011603345246019383595733167058 GT 1 -12231085189986266547361562.6652550413814610900309430040481799 2.1599595854241286910737345458603411 0.0910772429117107379310564855051171 1.0954951641157494547864050082189148 GT 1 -3029766392622856827.8180636285107955613177385377292368 0.6443618624661894215794347602943643 0.0047588764799188915971696909078444 1.0047702359859135333624395481116792 GT 1 -175262585495362838489009.2277096372072248334135105325110768 0.7377938991747375695433276912272200 0.0860310791685855747963563400543485 1.0899587115728418473666039813127293 GT 1 -9058662244666192.7667201082866907948222138268515135 0.3527493139003357788734656774310085 0.0166359919482607456128065341771846 1.0167759241740361742703920144821851 GT 1 -839049503631195483113793228051207120945961.7605528103948349546043099661912793 0.4085511856594172404160135328488253 0.0100362940581074205891348833273842 1.0100869971902750060962143167866008 GT 1 -2273538889412182723.5565243093927789042056261329647610 0.1955470274528612661057498102951608 0.0863770116026711950232510863327329 1.0903372779655580163955269338271181 GT 1 -3323186.9275907194048596665226488491078280 0.2262999048439860283253030570429905 0.0257525504333013457594024203912159 1.0260899526094972129989184896805271 GT 1 -4734192668860958138628502985319610138.2780568740873284627771395213226815 0.0409630991769050143139097252945214 0.0456965290905578874103908039946897 1.0467735544394381463754317889749895 GT 1 -34113045486413599830305496655703795060630.9903580037658620669153579697998487 0.7666538613288379059166038221148224 0.0319870957936114864397211964183804 1.0325098610026905789711869654723637 GT 1 -13302850538454288541651891337766876799998967.6994455764025353324681726159450822 3.7819038998074552414439893991819306 0.0015700317290001996990597781729048 1.0015712655203787433701881484302517 GT 1 -5253966.7027291831467407444745984943134962 0.5135471481181578751394334110671321 0.0521930683332916688359146994147708 1.0536044560477614586202393642097454 GT 1 -200397189114375475.5999773027771855970553542874075112 1.7649363297773640677826087124219660 0.0105717594630931857969828479229702 1.0106280375021751460433780671856014 GT 1 -11757168253693252462744.4624126800485773151894422643185703 0.1087711290636878844777397629037047 0.0478069026375695669147155764379079 1.0489874313947797883826641674194572 GT 1 -249805697886785148313330288035501850621.5050704037538260658170611682119979 1.6237934232224593279879532452226057 0.0024716143896045889432156604499094 1.0024746738707281229660810245326061 GT 1 -2543477469348641973777905567760661.0650342177303911811626839657207708 0.2778765865669927485687254090462988 0.0081502735146703981720900757036030 1.0081836685701892495490383196760916 GT 1 -141873749687240854.2724470340512632914917787418279050 0.6368003816410331946070268550227549 0.0764038933157778125731230962876598 1.0794804168807310596062727194198468 GT 1 -556508094044040483735165348263.4936228261878758376562762533497369 0.5443641978306554423276347796615030 0.0935354184118567651741485140231049 1.0982033211576691726713594895061210 GT 1 -890481432576631933896642640545.5600707030247680762481022453436249 0.0184699589066003599068200360010921 0.0192365182780677189672596002214727 1.0194239476479979515441692295092621 GT 1 -7.2463088561743503774736398840033821 0.9766469092240937621203694753816538 0.0387785547393221303686864117706237 1.0395504644441577538190577159161094 GT 1 -476614490157654966450229869.8791869104802206709401320525054504 0.1862951862402920523639016504202282 0.0069961717499431911759701093082281 1.0070207597076820603717034950901776 GT 1 -6279406312464240065415239018770207091.2720202506032352518831888385734990 1.7435894627649698708447225047227473 0.0826933453955905720980371706298954 1.0863134519366335240509829989354812 GT 1 -1187.6445367247776003100365410443637324 0.3742136024970233220296515626784529 0.0171930064045156756549105004820334 1.0173425223699102517891310382986496 GT 1 -4446159619478402293991811410.9441095609942670185714964833135624 0.0238461243413304491897507502437565 0.0468416158047979224685117841430851 1.0479741937588903004969059467048441 GT 1 -133994.1058611208195127016199699507016251 0.0118105250591300300795826847015877 0.0657712664390527953452102138680419 1.0680339739894114818318771762613476 GT 1 -856496439820069781213602864.5540395103600854307624248501435051 0.3179788973556469121286242245847967 0.0078090965614010049370516866605007 1.0078397472295810224745158111241394 GT 1 -12448260972.4497268148994610483386469823639947 0.7486310186368210655015149419908597 0.0394116155694727515406585270923430 1.0402092818185596409268534470058973 GT 1 -203.3353073692692556229326126275433634 2.7292272270188358164972414781079938 0.0350367391886518418151311989945904 1.0356652500659814282192863626553757 GT 1 -855.5283915268602577745270371866941204 0.0483064653198043253575577204577151 0.0770699827593477195727463020033066 1.0802018683282148349534258884858975 GT 1 -1870820006784598913.1666356703954108106242825506564641 0.5421987013453240934256166960584323 0.0765850045458328927534078127697415 1.0796765296495453479894064549924199 GT 1 -1120551623886611027734470196499137522150.7401356945660723154546897973846436 1.9432522258737970932157631139468574 0.0546020255076671815332698263566995 1.0561493031127799918346101017951260 GT 1 -304068466562401209672300827302634407661014.2229692981558505386840932867030609 1.3869891279020632604335134099593485 0.0668097437291340184428812103898791 1.0691461800907585174710711558397642 GT 1 -1773681088960.2615077643212037687552016863679242 0.6463123457192630378437443333639234 0.0714772515275900609380897262323448 1.0741603982499657126111790905806482 GT 1 -288345055883973858740648459.0107158254116214617231999906393145 2.5538099796584167382448942322883499 0.0584086223385204083203739533176644 1.0601838801919733589464402944018710 GT 1 -70.7698932206712451552551669018134807 0.1965821858371442830526151659353250 0.0497926611380539819825504935567065 1.0510750667673024798020039083463925 GT 1 -30011673983640482854492006814655533.4604272871648273336374209181605713 0.3618548138013758412432791926846286 0.0925258765962616631612108297754494 1.0970902274053277067916701795685271 GT 1 -52508011287.7568325667621922610592329436330897 1.2477279377044347220112436373772605 0.0151916698575140936042556848412436 1.0153082454327148301018971611310603 GT 1 -985731819440538248365900627.7482384860281780353700865661210503 1.1778918377740907198735592103048208 0.0909268481796620178197012514415574 1.0953297129927245620476257796173971 GT 1 -2349396.4379857733154294508132263713637034 0.3039921956095313796431353174095245 0.0656794404497505525832794537956625 1.0679356881269890137494393403652583 GT 1 -158334997473412838152151344611662053.9257856384629963008262578838695635 1.0804647246062660061695178133318619 0.0210441553430250305226304755085159 1.0212687399642038410688353141098305 GT 1 -140.2658675838937225724096539027228062 1.2719806621767140944344050256684445 0.0842461840098134963578220780724385 1.0880077102664447653557433369713687 GT 1 -7949269055.4351651162767321306569303110766632 2.4797509503521916186531614115969285 0.0681423137863464429904517652425724 1.0705751731516002582167377735153055 GT 1 -148383896322781202798909204589292014224311.2683506418005231475767946960209036 0.2319472898208134320617198326393874 0.0369593744888114520914319545306005 1.0376596816655375122073203226982782 GT 1 -25150979887632843.6226051395330767560353007921161081 0.1287877503416906699460695807940032 0.0468126263618998511898697109516660 1.0479437801334698474713615018037424 GT 1 -21002731347.0477828622919454441191778760539438 1.9144018271191228818769424387379685 0.0516163457780363261281688419086291 1.0529961600491095213478000411372443 GT 1 -1567133162421758320.0403013418785558744031045551852533 0.9026267318685907320131500295449573 0.0436507237300451856667100968751479 1.0446320809086190619156969681733931 GT 1 -4913.0123856346876146019707230630492722 0.0918239177749963437867006068754092 0.0310217021885371177345479924986514 1.0315130638215741802088610472657208 GT 1 -371092147691975648515751540740251.0476307341188196572944013316084442 0.3268449238246273057625165077529779 0.0559765090223056802447045277475488 1.0576042286359812465333317693281092 GT 1 -4528283347906589908396.5741611040072033763563155315379232 0.5980741994804459473941092219121061 0.0823133610248409197207394114015632 1.0858992985143725116776571542490249 GT 1 -1591263.5062478691874658406781827719042116 0.7511693041802550091495979698742028 0.0356105371241794098300227409750052 1.0362600588279047972932341474451737 GT 1 -25578104933059.6368687170415670001877031057586936 0.2265611998932758570977433235580203 0.0571114629610853454583154110366124 1.0588072037178066275051805637063031 GT 1 -33634558094519796905168927544653890537213.6422656206542975241594696521337274 0.7153025194137386063902612359980251 0.0373613846413811096050331088875774 1.0380772072324935086096305261141845 GT 1 -9853149.3775666655361185687716541689823779 3.3230329538991851488623309054124877 0.0787289191481877183522897553236618 1.0820009528619061055294662900029073 LT 1 -6855045358633.6410101524641875889609179468464819 0.4482903583586499783183601025896434 0.0929808670428488749864547636029944 1.0975917343186528309627902159737794 GT 1 -202086794085492326454704499039444960.0534030126454103488077729124856163 1.3532224155010488486474357925748534 0.0827372077353065704944627226201460 1.0863612695210800676769545128632693 GT 1 -217136476960445908829871318940326.7961607879976391190069630485973095 0.1439783142540485528805980556165534 0.0368514371479354969408202581803954 1.0375476082081211598204267924481531 GT 1 -1360745660507802343739695.2536367028668532554923087684069837 0.3374232296180881794679385007919706 0.0243572717647538620062713387690161 1.0246588167203310589068239756098223 GT 1 -668158.5122579656847634970786070764909869 0.3744182946801600624839149342678866 0.0542062031385616855719054771677376 1.0557307074093924937089018624962094 GT 1 -1170.4792933306334931878170688422282925 4.1186749807568054383325094793318047 0.0407901071808860380752928920119790 1.0416453617074283193031636715828371 LT 1 -772760916314092526503723934591469212.9385208357665554251286701154577265 0.6709181087965067635790717857510593 0.0779918515412068061937962945233952 1.0812012176567946888977893560370103 GT 1 -380476.3514388418129986803985017858249059 0.9056856582973590699399573350701606 0.0272597234775413606441092923011322 1.0276381630322918494386088151594725 GT 1 -1587687755480934809.0978857753378830056931415694536774 0.0186823871959579146613245835445536 0.0756543298184181415049817110487576 1.0786691753710130686621245509744529 GT 1 -689632664165783080081100180.4575961982420521759337427063996922 0.8590444652066046800549574992528335 0.0871025143741600410683850328067925 1.0911316876860747818856398526412105 GT 1 -616769863422222059325820.7560681658080228777145459067330234 0.1585692526726864619959985482669155 0.0987370374792653985042623040164522 1.1039582076617392037030429364387378 GT 1 -49790699399739074460308328524372133538.8110032603891761961706388576937386 0.0036167017177190054893504552282057 0.0479963806804985996460996558874450 1.0491864423917996353662938350749296 GT 1 -5119709703905594145.4116270556720555489161882960582296 0.5117939125688494774470366113180389 0.0208885317499593778277354983040443 1.0211097836378635700049371010649550 GT 1 -329548660937936382460165258.9469951994796662753937779519949328 1.9735763306055754882368012417661696 0.0034650751364175213043578010275821 1.0034710924135007113725071103663112 GT 1 -41147852454675623665847052043140803507757.9168787136867904134838274823071210 0.4217378837450377923246198279075814 0.0844883440204237691626402500021381 1.0882721831304051245775330145147658 GT 1 -86332568102.3197235178253267355910046147191652 0.5934755542351677191190955414445215 0.0117003605188516199556227379962928 1.0117693483869232365473573368364256 GT 1 -2763812.5304955293341963527474484001944952 0.5392220991531680257356293309340354 0.0292630860865078057267705124665251 1.0296997908490740954128896382795977 GT 1 -929.8409951878522545318304573447655599 1.3612372983837014035230246330855591 0.0916860804385176180367188469682385 1.0961652337411431641751140681586335 GT 1 -49468852758656334992684891998.2980176266608050219831770211455250 0.2331372384681347271573786418619464 0.0952132222625609057332603322554131 1.1000559677513728810037980783627526 GT 1 -648245572429347.6660840080601372127141623845469591 1.3178016570149374285250467315769227 0.0394987655532441654948418837414074 1.0403000115616958616368160797719352 GT 1 -38109256515544202186409803267436.2693151657890665261017025111354865 0.2921820787440350543727540802989859 0.0318039611642034429399683191609965 1.0323206927513897476438441544444595 GT 1 -6773519363654.1204352742747625493215268943991508 2.3786500646184862232707142073986448 0.0992492502659615399154128784796502 1.1099896122039990775747274947273602 LT 2 -32360931500369311462858694343367732.7833381419382911284735839624300116 0.8296579861294950582355770109847741 0.0834672945948271454189220121926442 1.0871575272270486913174142542328785 GT 1 -10311055791055111344079971694.8116246496963166909191662351210519 0.8263117377794085761311074081666055 0.0424949768706964119287728598292270 1.0434243118530511458518451887820598 GT 1 -1966495310695412028253733067733.1568658264019517699563529932703643 0.1134480814667444131594271986334983 0.0606673536363282411216427980135466 1.0625856065293566087349747845023506 GT 1 -583068598655386479344871579205711918.3610974475154870213240466131077909 0.6732941711293264421025894831832002 0.0393102460767633729950970893346817 1.0401037588432237536566330106246197 GT 1 -8966288785291373.1900377540049410274965791023325354 2.1765733751467375706042361819485246 0.0243845281588201931891738588005364 1.0246867539703239469787157823616970 GT 1 -2414948515158661319160867041077098070964.0013009280571543290554607377425493 2.5206220459611152191734752525492902 0.0151267378298303551769795890510222 1.0152423139360092926051977418888540 GT 1 -30935326635001649863529927408193746529410.0484970241232375354442998605302068 0.5381210047576089320028774240666889 0.0556561129249300412155801872240180 1.0572648920172979973383952332676823 GT 1 -5.2742167701951704695666879068629566 0.6652817121559356912489375421951564 0.0313877733542200277872664335153587 1.0318909260844391239276421691129257 GT 1 -3126386249885142546302044829263.5341589669840211276024157810198413 1.3121975457897810362978139682586444 0.0139041931735536795265171955804057 1.0140017619331437496314287383430795 GT 1 -33561754340109.0598437200609048541174498904715790 2.0198217764236755345812180493773497 0.0512884746021838629313132090014221 1.0526505040349683358337240760371463 GT 1 -411990577941656544232.4684164147024886625515418626969693 0.1545273123073017113651104007792128 0.0322290507218648048263945359021288 1.0327598423516699903990690155271956 GT 1 -1366844182630426864679844162456093504.0899657009358543740723385797778704 0.7752184894993853838039008273309770 0.0711832076206773588059633977057101 1.0738437691114567132820102363511246 GT 1 -1132325974660231638204102795985670.1736531734493681906848534429524897 2.4937215401864304953509792733322246 0.0941800295470149390825779622452862 1.1038067598100533721808959370826685 LT 2 -1877439194427006369006199.4551253893518265265024006406640854 0.6311581566906969267851414530382048 0.0762700146314391784074724448116693 1.0793354736731956227091592999662810 GT 1 -106036972021764444560092080027160545.3107282154390197359805618894619720 1.7586728744434128225190770129230284 0.0822461691775182437487143765492532 1.0858260824679157180121905538715240 GT 1 -33663265744188916.7139354918380445838461165490329355 0.4013820821719529506073715883659495 0.0018610967214670165065101890904967 1.0018628307137225433897967776513582 GT 1 -127554990710003519919244847157274.3409490077547022477451598951161272 3.0833013539925727016069847301714792 0.0876072938116034300104585717366025 1.0916847826981176924350657883817518 LT 1 -54848997614750942417689023838221.1330978417144688023319854184656017 1.7002999989768029628438764891645333 0.0315454501285305046462700399932974 1.0320537256085135837874591280933614 GT 1 -9.2325474635993803053357001730756684 1.1712513926926315453599608079535053 0.0889474045795194584704041007076358 1.0931546496669929012397252078020584 GT 1 -24329725980576738558657450928192772.3688046992580043085002833109993567 0.2308634194344578906313069413525763 0.0304849022331883224760111987730549 1.0309592316854479516962409591037025 GT 1 -819828270955204.6383258819100153567603430654137578 0.4583143070288525168877815225972766 0.0599115847726441778668126526243452 1.0617813493888283783208717021253938 GT 1 -3708.9866568740668851184998013312475387 0.8910812325896957756989759269740565 0.0697666485155093372020049723567984 1.0723198087341623309084812851372766 GT 1 -11544018502817901.6398318513026745975010683784077466 2.7857745908636513603984600376881541 0.0605788184514827706942603413655612 1.0644439425817796005378103317507403 GT 2 -496466859805455.1006937761336833291011395012218388 1.4668523362998511890120677484686707 0.0132729312158975643203715662138227 1.0133618038436421717079322447732087 GT 1 -1290375291.7783948500951210468526907876235961 1.3616074923547576078948710766609318 0.0832822926567531395005530326935377 1.0869556978016570382145447255009405 GT 1 -6726358954980669998612024150448326.0355540672470023956180133880105856 0.8677097666775008324918347047777485 0.0910289996495030470285370083908928 1.0954420881182973421351644929078238 GT 1 -29409051028220078907281479971995573.4169920085838558366260013721273932 1.9443400921712407400347239350038570 0.0255684482864834293594626825381642 1.0259010018923758113644033363997740 GT 1 -105940835102.0756983452666520545453369621511368 1.4881247430098658232408721591372427 0.0070535443750711909240311102397654 1.0070785382186647372935527031711903 GT 1 -4046892576927322139706776253011263542730340.1739341764654078302510924748531198 0.2281538115001722629002591606416443 0.0208305203126641888413888528928194 1.0210505363297862882891303549462513 GT 1 -4468183657058737612727.2171935627546655857566462198022957 0.7980651961551188396155463400487937 0.0465318245172667742137395808699718 1.0476492310243843244567756527522139 GT 1 -29150736541766940619632083837.2583606870389782648212869248921768 2.8539190706213948291674634205740023 0.0273105832730137075274221555568274 1.0276904494712831068858927003326565 GT 1 -1813493062.7402209030103363681636994313363946 1.1814488985112902544424858541869222 0.0843063435542563726606815664780154 1.0880734064388656953187661267720916 GT 1 -23102504529119981777299250884922536804207.7751723837793178798983769014492181 0.4107326564377001965893581342095829 0.0695221907299193606965840608035252 1.0720570513625159779034611762705822 GT 1 -3294126302824799039962114.2941860921202373929771633292377164 1.2211052401849397565441296567321173 0.0062188098576925217778243227508541 1.0062382271994107086855759564670719 GT 1 -8752047377549443714207447847.9997194601880818581050849954413178 0.0227128993764173947972137202012077 0.0608459180702882924959665197131003 1.0627757217234736426592580910502093 GT 1 -292630964543801.4907199307769340122432305631926548 0.1668510860340978080803362251638021 0.0547803750165740246658535437921860 1.0563379711009393480073038947402892 GT 1 -3014496624641102368725.5839457754020047270108488913187031 0.2443863927274734588878655410416643 0.0178806813929155841350883399284965 1.0180424722990300968789651991401797 GT 1 -45633404797530474108790216661677252661570.9273801061757389871588159925505015 0.5845110929354631881623769708241059 0.0428917458666313143483724379926804 1.0438387757098796348158682635801251 GT 1 -36416804633954750530676495343096123582.8134278480207667997934299794729474 0.0119200989064658936044571992371806 0.0778496692907760461165508241264166 1.0810470202249377203292846370612147 GT 1 -200402604913228.7191325431709567958914839390293958 0.7110184995272251284076812908270197 0.0637488583872621600478225914011622 1.0658715248054027924812897638637207 GT 1 -3636282969292.7508717088592661797627698813450628 3.6586382149326709263269590711919097 0.0234332929196827863070421962311852 1.0237122185763508371013592206465574 GT 1 -1168429378087.2338241318410793186941929542367006 0.0172118041004544056238936096690430 0.0323879972363319107121277654619675 1.0329240956480594960028729053828517 GT 1 -297004271016648878960295544003682.5379199493584741102947464949832177 0.2699558676226336613239349973012950 0.0444728142979089794500354982078170 1.0454920638990283982491029496215901 GT 1 -433067276173198407381075246745.8402543680704771584790478117388474 0.4636711088269994540563917216864093 0.0572419129759164557682982671940964 1.0589455647589206182272495945056972 GT 1 -1570752349309633273173888263608372921.7905471987320506830476767141496975 0.1579029512356457656571656796206187 0.0139563380465741592826771165088556 1.0140546434598898195774742204224600 GT 1 -39095281470698296371505342217.3745907073710373526111396194849406 0.1231600587004219468218059427918817 0.0576828311454249662647583380825227 1.0594133637777388038205751633401415 GT 1 -1107625460151251752.4095431964978141699761915092837190 0.0820287944299139062220523587856426 0.0662393830688814227163769077487796 1.0685351723923944016376823532578348 GT 1 -1211430705.0140221181531514505703479906202227 1.7988537459254438730245400361463933 0.0159270922947076618551551916907532 1.0160552914782136264284247511815815 GT 1 -290391599908625.4648932187457568414303298867406590 0.4832814929595551862463529579671005 0.0272762570683982523863535238364636 1.0276551600989987726279007760291753 GT 1 -47328.1109773012358058897064749479356721 0.2034704147149673595663717791335377 0.0542368162033854191058489056527018 1.0557630755221582601739343382418378 GT 1 -4515225.6555890925159987078971247012097144 0.5779442353917593861496985187844440 0.0447025528225453403201669436803303 1.0457325239829002812502756082933079 GT 1 -6569212643550085945116950058.6013217068873833520069145820778832 2.0483886267131359464912331882494547 0.0934261076277719960664355539158459 1.0980827381851761036412779597692737 GT 1 -1969710705413462136613068.5893702268756883143939521835817379 1.8243989333391286485869498271401923 0.0026515571269088484517476717779346 1.0026550787310413144371477828369342 GT 1 -19832896892260355820010935.4856230156146761395835494456361161 0.0233912559877552041126694726874171 0.0277920978178953293151699791403214 1.0281856062592927296771170106044708 GT 1 -2142558172184980891160779763168431470670139.9936107938457575412712829160564840 0.4305385514668063432992012487484958 0.0848708295610023578290594873513211 1.0886900537914594245318972830183393 GT 1 -635451097224.5324971241436674701022985968905155 0.1574555523179271383835807907064451 0.0606527495680965079859715850013363 1.0625700593696122189057872207878332 GT 1 -612526108824962.5262876035426833168982986733457110 0.3505210585744159673792664843344058 0.0290613335517794869723039830125480 1.0294919780326644549982262011248598 GT 1 -7908706986535015693160434050.8412919362081133054121258780896435 3.8919047131247759798703679442723993 0.0470921060879778879626768769670939 1.0482370285695147692998596254708567 LT 1 -1800979712523635452863.8082819352968955778717972894707924 0.6833070211242773766174236526335226 0.0708274062291340576313962761943147 1.0734607729559945002351537178236554 GT 1 -2944009170269948907086062.7637104656108107475467973523526476 0.0767566517020718814600126764858640 0.0254260711015625262847925363094217 1.0257548994964713490391163083889150 GT 1 -64513661077059408682545756233.6051446624866256205634444867992902 0.2878932466595709449292226973057205 0.0827660772926782147813848703166750 1.0863927436110998668247955777270434 GT 1 -226002477929835565374424944822772555.4791865212744530174511605082022940 0.8455131177960831041410694037788077 0.0313090389112806727471911480455518 1.0318096435639940130937861100813445 GT 1 -1436316005592238559.4763466250737849132291187353614971 0.8611693453236907387532153217574100 0.0073188579014937588949450743571728 1.0073457721434003523961526990036967 GT 1 -1623738055215111371673690.2170054429343526626475822738154050 0.3311241326278885106725150369495552 0.0008199140522525328312470897419106 1.0008202503656236787592952903239128 GT 1 -19834270.9751113802294722058656914519972318 0.0486464218933533989766770955280033 0.0584733671047791203240170361442331 1.0602526435577542250146157764020184 GT 1 -501572609969547384658475125992260289155664.8608080335209079229641365667482958 0.9873001391557093935869039842954213 0.0953722870062254392391533140757429 1.1002317867744757721601602170152486 GT 1 -59308057157049.0860044820034815782785248331828277 0.7778726729416978610581632671319766 0.0470283254728467151910325297377144 1.0481700981965665816456345198839221 GT 1 -517755302244228021343911059769556850.6322259474890794403428901239619913 2.0969899451992094906734893360154779 0.0558911533041691553821908741922359 1.0575138157803867690878386675103966 GT 1 -3360362703984076383.4734057572211628397208217189162655 1.2388790629059030293066423515930805 0.0109412077927687826859842665901339 1.0110015030117845664801898962563126 GT 1 -2863567401142613751777098411758.0095417322690636069494183297720099 0.6667086836341609318546842925360495 0.0024862676312462640811442891868969 1.0024893635271618241626621520818989 GT 1 -17395369993.6834526760677435627177327712528957 1.2870311922228501137990425746312146 0.0218552277321261775275981123886433 1.0220975909987603156121525083825828 GT 1 -10538039773116618856296856183811610575958.6824547570219594396418549933390964 2.8206013150417650471716491695860652 0.0179064743745693955535810667069051 1.0180687352182763786189720959112940 GT 1 -9287316088180285656628053886112503107.5814079123293588739582883235787534 2.8878351028179648659231355182857409 0.0837931659434930197412179343304080 1.0875131384255670723931204990374491 LT 1 -20723790218502459194352644773006369.3056844312839364956836476562957556 1.4873884495136265373463292362221157 0.0325796989822581167608402713431805 1.0331222336803587486872447718175911 GT 1 -7226447127857123021315447756690.3503394067290178994586435735935396 0.0563210291199005738513881561222322 0.0461936516701393939949138997564598 1.0472946173109948373775208138714146 GT 1 -89209738259766115615780225138198148.3237824717774993780544817200666548 2.4633558184813969601023287849191581 0.0020853026414774153387443055166799 1.0020874799124031433539705543656098 GT 1 -427316405.5934283990263756031503485555414966 0.7019535939542124400648636721962938 0.0244880791860223300690209548619874 1.0247928987845366618789586877336330 GT 1 -1639459196083240741257624950481941099.1315743173612018022150321595191079 0.8611591322697568589815080737195240 0.0569527016708374803262599625465125 1.0586388403115384566412465860942279 GT 1 -3293626603113044241802612625486.5610649196690722355949358236446055 0.3729023718222575371095822360275561 0.0772023719817880158368347662471454 1.0803453231039044173660561778443385 GT 1 -4286249016017087521362776281745.9843663615360143025967395082296092 0.7728327985028773167479906846645159 0.0094280166386789550148493357701511 1.0094727417220807222620253767629259 GT 1 -163604299614042290403382476743629507.5681583212799461541496892280626504 0.2977787182219164236759526596729946 0.0657693578478705112545259105792392 1.0680319310323024396703862322733617 GT 1 -63411019528020441.1546169041230564669305332011914234 0.6233882155330900728060610627397204 0.0626324162023826725034768475829835 1.0646797750626453144991973562517652 GT 1 -18642930621995.7413487363210022671966610679220462 0.1498620947626735632553617978260829 0.0889234907881003226463761396045818 1.0931284014814392947239480652451182 GT 1 -259396203813140738631.1574064801480754107750318558459865 1.0520553799341923258597129796833096 0.0794802638620365145497292078185177 1.0828168378675178285748818943662668 GT 1 -684176747639762833515721331693817.8489856688557845155925487107757125 0.3050330150367081151479734080087071 0.0398100937333203560197677675067571 1.0406241950560677190153030947123840 GT 1 -43237.7631573460248236274702282027610158 0.9266485746718255935846910487906451 0.0187732601148840299337390421636790 1.0189517147421547505890124584039572 GT 1 -1753217612055086111516615036457337579607613.5998967934033289316718980585251000 0.3272734843298674262472372893578641 0.0866020681486051784331701939258137 1.0905836424648125417093116380437830 GT 1 -10.4628748118234333446984098103791408 0.6022515426710712676799262712173683 0.0272642156036549713262961952156923 1.0276427810547942668032161323685092 GT 1 -457883653776595059090515.0291110470939134913926846615592747 0.1235148988026561198924094528019726 0.0512206307665760510719649260612398 1.0525789950376617565606697993147858 GT 1 -11063267478763703797.9512517935730911578320482177939955 1.1175200764997083059894580551882494 0.0463448438837235477540636698434351 1.0474531444566786370541093437331251 GT 1 -421191948001619038020895380288.3847026368088475268538244279973368 0.8824650037291524102755947056969526 0.0598903107171843549818106299798657 1.0617587197995210610883705197552458 GT 1 -103542506789784796053.0975709338101934617475931043928263 1.8035478329689727853933987593525848 0.0742582298538903970197019160446077 1.0771599491592192311322122064171951 GT 1 -409104.1664355708119761639096166940707023 0.9790584232855444814812545142059643 0.0479372903782944158208718406670442 1.0491243749088291109571574479781864 GT 1 -281343260367.5901475678466135354619694093084529 0.2436316945257569851002906673033847 0.0420473401323095714022538498120479 1.0429569178192288233773901497161025 GT 1 -975947269728265957881272929327188169.2947908883524444999223687475117137 0.6469763278194362437483012138317958 0.0378330765908760954015847500461888 1.0385673263114725929668477207064548 GT 1 -1112836921816582860444658307.6415581541785348253303661463670512 1.6937848813147621676268629871860930 0.0057665251015192149339501422913779 1.0057832157028357818864407036414028 GT 1 -118824572475112326709529909262454770.3417849993247603894308728262720820 0.5739170506493449185400335299550682 0.0170413959264264953765360386327029 1.0171882715491922935405275724025592 GT 1 -28974524723695787742201334533533.2771228404169007597154051224663841 2.9570593062977995148208422714439120 0.0603314364918574034489435344310928 1.0622280579058808210008727024998249 LT 1 -42915512298489201.7564916969853597899257442660819193 2.4457087021103212228984882416359113 0.0999150388303517746288714927788287 1.1108065966987935979460838634244824 LT 2 -77431631089547580569896997834.6149481813857686802934932351154992 0.0271896662999777896105763496951975 0.0152982336030957798155577371505271 1.0154164588872921062363225101635914 GT 1 -5456479503123537884276998720866.6749810269686702600535148486000161 1.7466794447652228198519293855783738 0.0524968025012839916016014648461571 1.0539249673624202607822322425617207 GT 1 -4813684590827576751906365.1442570661838268822602409347607328 1.4523517716744879645371318339567665 0.0548849236430715691289455711552331 1.0564485849795609628440299165651474 GT 1 -437740500.8506117232250667574095339769325831 0.5692245269604828289988496680820704 0.0588247249561938869832384655470097 1.0606258920831976359830136051752741 GT 1 -2804552365375268526390.0202648258880103234088908918045096 0.1765489410491220994237061089800722 0.0283001169814383165829106734530764 1.0287082845251819046995602202079063 GT 1 -41186697615886878302587410845224.6196569089075533304873040375902647 1.1198271583876787566164110192764356 0.0793064755939293026182481911915891 1.0826280620506719740269693453610852 GT 1 -17540.9372538914036058540018460014562668 2.3996415136033077961032881751397996 0.0610932615738702108087633910217118 1.0630391248064101532393742785569823 GT 1 -21666454308311.8103292219874981191238936155170222 0.0970736992741829618890175718182486 0.0799113062258978277096912520565133 1.0832852073096394397036993967351632 GT 1 -39631973809134524545236405847406.0286489421941922102104667740141156 0.6358302477348093887256021039721064 0.0751139395115996111017731078012105 1.0780847269071042694493540078195631 GT 1 -286783240024960665330011472668607094.1303649937979969465708490083664307 1.0454156132821492426806126302403908 0.0023690533394300814989573068334740 1.0023718639862181909163525633073868 GT 1 -22791370789802234185909191273055412640.9649880037735835998226620730316382 1.4248471514546437552147154596088382 0.0979645936989155926410932127990395 1.1031015065844812914245278347456127 GT 1 -15517.4169476541778459049116547807826555 1.1897088862280926943266807026316636 0.0831902940634019393198715395995174 1.0868553463231221883819564626523886 GT 1 -837488419861924356262381203785714841002301.6153621355360070594274671335790603 0.0577588821172171008712376244918983 0.0426469958720362925719243647771131 1.0435830902058013992794037877568584 GT 1 -133.0300929837827425350117118826992204 0.6732680941486229472829951873725687 0.0240857056123553757167481533886755 1.0243805095522562616065912249474793 GT 1 -83959093198986443773623327156078638168.6281287735331762679834803089050589 0.2147411225636899117522115590119591 0.0300399429641051768778514807649100 1.0305003866460690647661070143998101 GT 1 -136512418992013089609092927830.3671404912589323454285049617987842 2.0294162875349905329481147517778513 0.0571675656788969092114377392994344 1.0588667063893897455159352887893110 GT 1 -2461145724575203932131333448370.4017990805045097408107732771345498 0.7946470706452415087517411318871909 0.0636954223164972672961735230884000 1.0658144519287681998676868362863371 GT 1 -27501502401517650921016627596202999991640.9675365349981451931969710072337697 0.3412873816000915295066047173784348 0.0919516048067246271254924315678677 1.0964576031301593365633196466905681 GT 1 -1780123964076.8879755880803363618338299349591288 0.0265537526102141771617486639180643 0.0281597037271356678515003073307799 1.0285637922671436517760503508443479 GT 1 -107532433347744406715019020121015343599769.2970990049557650703116656956194963 0.1858337853602989177249500906656678 0.0351485754888012739509539629339411 1.0357811537339607580832496181626915 GT 1 -4056804318693489338894668563803476126979.7277776637916377537030912245084360 0.7432944964392133106181635620363655 0.0911316485994837792961195217816786 1.0955550232354637281181173079273223 GT 1 -215378989676808325289023656077401656.1139231554502063017713582874160955 0.5431725651731088104294211862952762 0.0049422590931528087293247348038840 1.0049545124451232494109264894824561 GT 1 -169127343677.1804980137516557568400069047638893 0.3611594226685049635602461192820744 0.0563979294591350971280688949198703 1.0580507371516764210736214312445425 GT 1 -38922359483044769591524.3615795617110828471915505001243101 1.1720400588484620870558970136896134 0.0444337603676161867110825494486794 1.0454511931286301441829449499148685 GT 1 -4781780730079148576104479343173.4212736832044319041657018119254800 0.4457042460484409261750038296285984 0.0246412244860420310397625813903575 1.0249499007843335145528346220551353 GT 1 -39512269740101051949870192882207.0144216187887249031866487506653048 1.8754635525477628869209909609745144 0.0570606763275499757042674138687612 1.0587533423504933987314596944334954 GT 1 -5247304994606932869791689632071364.5468801080310336725804143126267583 0.7042756677973367042633996551756701 0.0693605157276260516307322800595713 1.0718833116382536095224074267684991 GT 1 -4684766814336.2266141387467151721496441055660250 1.8676513583965156318143365114033608 0.0704900819438478420035012388965044 1.0730978015643304900165920247692134 GT 1 -20655888879946811142606.8970129845172269137694640985780172 0.1972651076530489011672196570792678 0.0751967593040160692464726819424157 1.0781742768573783755153056497360616 GT 1 -298324891307120858.3458188055423687464264440622761203 0.1356064726850609231595926029141084 0.0690617878662794599121828331197682 1.0715623711107779551411256512335127 GT 1 -4248507147421080423.4999691994449501865246131533275213 0.1980724636655015525631295809541116 0.0812146371883008624647580734932387 1.0847027390606341315000625464286208 GT 1 -100754.1378246632409097079581952882727190 0.7798150848969952071140601215792497 0.0786118613313185471846359267898604 1.0818738997250194057717436642845212 GT 1 -2967713738744429.4125340779460592785855123783963957 0.8797501899821163185574972797563574 0.0090714805499045053901311661711660 1.0091128769709829740705298329459690 GT 1 -75409018133821971989729095403472.1480190464844708908718892753981459 1.0114897953084977645595542583532483 0.0651000057449482827151854415408522 1.0673157134298540131756508908932795 GT 1 -2749609029156859422661933875688838673.7257791475380472278392145216003554 0.8827583426573251790638659998433474 0.0921726370985978367377220543115500 1.0967010474208598799089884956747063 GT 1 -13.9710796896894076239099562382762826 0.1415150975109978117776779835249074 0.0842242426059020719431199283352541 1.0879837506162907894871089028886492 GT 1 -637523398113965374598096989.8271759546238647899717869635082393 0.1824946078994013904296886235579724 0.0742484685741819940481206579110901 1.0771494049355915182668721380762525 GT 1 -556920577310057597449557891012.3994920715398374221114925873281697 0.5403191095739583300894428293292391 0.0859253938068749940804575175948717 1.0898430848273448741950916145503158 GT 1 -204.6555732726902643141169626308916009 1.3469000976914917450441685292061992 0.0040073059873455800209381807678662 1.0040153567531026940949255456714150 GT 1 -1457206172662694970523270167587472.4566275803885528456895318739327831 5.0243234731997504598147501014580412 0.0914598097086331932759471442141167 1.0959161540491335689313396888732388 LT 1 -5184957674.4020544861825372788019862024493185 0.8525052201413126599640850238709003 0.0306671615333801592401461807295864 1.0311472395197113938186659906755379 GT 1 -3090917572983278116484830134854018667695.7827122167308456646805059446672331 0.5629400945644313654010146783779136 0.0795287240528850182832360753484053 1.0828694836333489295661207225592513 GT 1 -31576740553484061682655962162582828808449.0196862562432705288902163941514528 1.5324396290030468299012406520728141 0.0138021332996354501371706516240533 1.0138982683455718496321158703908511 GT 1 -2431751817828285252.1054015801504149142585305897961785 1.1201045130143349243858527410261795 0.0212995075053118724623097725172899 1.0215296153373620929401738066096967 GT 1 -338002367.4780485795188743985320502202054771 0.3759411597202729279437320788501334 0.0325198436455968145935149129289320 1.0330603645165448266181186891550410 GT 1 -1727636598963946.8715223498953739218805273522011405 0.7939050868971687755569482954536918 0.0912557540477755564069245695482955 1.0956915819814422641335444228790912 GT 1 -173378308312261155829176227848.8243402131497866586939945230707814 0.8365680585772243832804674191345487 0.0365407094763415934919416084954878 1.0372250436823473527658284708195942 GT 1 -48849270895045533990949331940.5538083876429519551115822058507486 0.5084712339344517782981853046714078 0.0588987871924868810561652323619447 1.0607045864055346902915403637092163 GT 1 -3291778063999070149671557760.9806350048484066700878974874288937 2.8885207449391292149853368857179750 0.0374968168780913881351170848191171 1.0382179056860210263338465433826715 GT 1 -21738088908338697856506862466.5484463880099957221776126868759429 0.0493301487343924902201973481641692 0.0985652629016336981625381285275813 1.1037676326383308052283778567001660 GT 1 -31333759412374457085019686.8466237829959111040232467569735388 1.6552017436853640159612347681678049 0.0236601147258139384802947759688913 1.0239445100828049335778503529460810 GT 1 -4782424747521665504781529068200775874249798.9638961029253921399181015606420732 0.0122313611059362999431421353002610 0.0304174854063692255817156574959917 1.0308896974583760153476816508693976 GT 1 -6538826012681410326612660.2446380439056153723483972471368188 1.1654627999235435754283997257305415 0.0626559512424352821606153758354901 1.0647048829668639152145061347124315 GT 1 -1648909951409646305832502.7486674626525538387083749544649849 0.2012117007143808729045603029174962 0.0574202318154304218852748838528649 1.0591347285626951543351776361201786 GT 1 -2555397607745994128096218.5358990839338716160932366388212203 3.0602851565220179348025357572536062 0.0240380099263003359669654232998616 1.0243316379240242546633060719345300 GT 1 -30985298181.6170323606912547990096441283179893 0.0108188453344864657397224347362963 0.0979642767069926741213241552969803 1.1031011551660502566738587486580495 GT 1 -9.9067275072475405619745933073809338 0.7939292943382278361359266993791955 0.0650766116978845356227246126377168 1.0672906906953185469524205378532832 GT 1 -45745643784739617768229264110285830775544.7742321947734991666803651756955013 0.3954799600032425319377610876767938 0.0365700331348008262437951980955263 1.0372554799498692685512177851515944 GT 1 -17444589288422786813.0911229232979628175252213500246980 0.2265815432874159465963299724358504 0.0101670031468229596766591621538167 1.0102190401305636908667361397442170 GT 1 -3221290.8581496157484486589338059379410475 1.9619477113069464941128140631723766 0.0516475599356262802678985021910639 1.0530290735974801148715115743862198 GT 1 -109594623900401748968349869665861384.2365587697888256576610588499490574 0.2694437768862666954281663344349531 0.0643876855229006504348394177042762 1.0665540822412689662816398527387696 GT 1 -2305574151886412056296621896483672989.8068685649380244003152702742525574 0.6715941933716020373443113082415667 0.0819113148605854690384286154729001 1.0854612861221128649093657666552367 GT 1 -37037241123862653061554.2822260334913828023549642320693286 1.8624296774248232101691970921639901 0.0895422648812393403303879066898095 1.0938078003111524084727686596516519 GT 1 -279942675445014087172034814283680.5163928712404012554433820144051003 0.9225552638275975514137666976975998 0.0998720181776592785334369857024060 1.1052183237427528027142917820571176 GT 1 -8575901528311548.5486176740648943505663639189360914 1.1535628527825022153293690095090474 0.0469905250373637880567813838363555 1.0481304331290521396389483958960943 GT 1 -70665475095646363.7536891248945810699566938883475822 0.7738793529543266885735954379375559 0.0151839971157458966134225468988665 1.0153004543614535962105876667202589 GT 1 -1921790108965149906.7663548334118280169146873403707416 0.4049985587112806943195325811400284 0.0194069563401634993693049887789466 1.0195977437532130535947926213714649 GT 1 -4441411758788043633.9404485109447236275182725691539156 0.6812359580009287163720863144833589 0.0336532006890540621814494537170379 1.0342325036987998488370324134513547 GT 1 -955664990510166898531612454901059.8917019211743997418099204724850733 0.0526245801004568501665411906134174 0.0740196068423386887999666437118745 1.0769022182559536478900601843719671 GT 1 -6123842557350738064332.3826983921216030709293267321851264 0.2567609716377989386617534051522626 0.0533074783816324123296536338679483 1.0547809252992509650289614452383601 GT 1 -51236230113222305090063080430715252659200.7708185969271028479655683921600024 0.2842864752447362316361072811017520 0.0616004548108158008903299523102404 1.0635794663092460434227295331610214 GT 1 -1143927800771811681745946422932830659467.6269479705494857234683304163556899 0.8481388758168364269619293318308600 0.0771782270195517442823144210374163 1.0803191584870559119618092562988158 GT 1 -110664732186933989.8692265818125578538405047336732762 2.3202469740089673035328362016942718 0.0482726583679830958257584885802380 1.0494766910614813805821396738323790 GT 1 -236988610338814.8044610177058998188989857508397797 0.4632779008772348428787238449835387 0.0011562446820846238344283761581061 1.0011569136486761406397794249722991 GT 1 -3177646723599.9093301219000293383949009499144246 0.5087937424929377314997354291286377 0.0226422374333367616146731543602366 1.0229025091511867426886320257029633 GT 1 -150480652138143618845002664887347.5200473319505828715945173571629095 2.3648743944546882494320229977036008 0.0695195901674023510947284357585862 1.0720542564985686666728918623573672 GT 1 -22081691831523169906940.1661468084946601563384768028491486 1.2373950653077088217390469681696207 0.0051660502692848296887241398985672 1.0051794404430926595084095157943974 GT 1 -101956.7937193215243085478578148851447249 1.6259442604418666918590740853833484 0.0044346062625489241423546543327610 1.0044444682958575205351346257182585 GT 1 -30616000481751914644648930253005846507388.2051451308880018488489048762940124 0.7448357231289925421629866116703989 0.0007939605791262744640495510959920 1.0007942759327568270885316504429676 GT 1 -759904894608463231107150571987346710.6537094278476734332864764510283561 0.2540856806482412405631013215724433 0.0862722566730643306842556436616965 1.0902226257229392494618085091934851 GT 1 -11509684909091310331.7293616447477346957503432241631141 2.7537128529425148318685831096213381 0.0098415484876458109270639913424035 1.0098902966277805230088024379126038 GT 1 -109168508890.4038051636368935448617405190694098 1.7595209207759744039428405139176355 0.0910942856127157187682631445020446 1.0955139147308629326956349726669111 GT 1 -424827851882165885.9941582602573942208216100793769269 0.0265844275402372541270690727536859 0.0660095890084241142943356147501617 1.0682891074103048473827708642631644 GT 1 -17474362181090759.6164687287247386183561984604775457 0.7456087185912234619586994686972228 0.0888828210978203288398177056725253 1.0930837633175031229222354447979255 GT 1 -27776.9661763759652462852415650621529197 0.0070830446590686084425018036960910 0.0254144213812379951404568868832605 1.0257429459131142752580328267489566 GT 1 -76907406687842366993499314071.0883674157666831425292970960192299 0.2574119701492317985801248319731442 0.0397375825521060063464680337959600 1.0405486803657487685700320276173350 GT 1 -187010339777296897328927.1659717648372580955348835182617018 0.0861276780494288739384370225200950 0.0185385994121247834694551804718816 1.0187125929998479590689113524971405 GT 1 -15574006936.2685055554191895904531274687442125 0.3039968692550123595323574669704991 0.0489081304839791783904131176869418 1.0501446180362545183493336400969220 GT 1 -126.2932083984719076538607391665961248 0.3178611845372174742358889982256225 0.0542879822050569004987554990638033 1.0558171772112958271092107936160421 GT 1 -9400960640649092278943794206814.5350785043062466689755130961788794 0.7285165584416191899623052313707030 0.0802768714088712782327989120922023 1.0836826014162980078090743488263638 GT 1 -448477785299.1780515392163940691185199432240070 2.6451175878403076250083421716208742 0.0648364958647335316799354319275559 1.0670338942486490841470686550129630 GT 1 -6528421807948309016543946376273.4062949545030589055980178957366937 0.0198885050574191904422716873296330 0.0926601745171457528652004076185146 1.0972382292665781424368312982410579 GT 1 -50706115495858158321.9815806806760754123125706763469430 0.1489431568868190953477205596596330 0.0628766269197459627776146077846112 1.0649403372359104451760743534536095 GT 1 -11287912809262134888149358487251.0564261881620625943593575897637150 1.4075127862348142559559795588025550 0.0540055727010448465923982185123381 1.0555186007520967848413436688480967 GT 1 -19462838875142372256182034150809.6452320655469719191346123344129016 0.4492862680021395705140628581944067 0.0073793847995043376546161304176705 1.0074067471541832758564707865262237 GT 1 -3598753893841486181750941675299771.2964047618642331280895092743197255 0.2597147757798039162668884718059834 0.0245818436962528232397643896006397 1.0248890216660304108295530089508012 GT 1 -108547552434808297503966524495.9378615745404941459179522421481648 0.2729428469619369949763670925855793 0.0407034787844869907020815800364615 1.0415550535428851080191938880309453 GT 1 -65138945971638057593.7795247366850907887674653656929534 4.5602218051438696635018882308597110 0.0330240374153160239138114220873293 1.0335816415578795883823423501167769 LT 1 -50442501110570703.3928907683167455136194581984321602 2.5196775895387553201409564343348545 0.0388748165782684501325803504443574 1.0396506147891480929734573696919133 GT 1 -225532.7386185688338776934927618184510954 0.1737317948976104932403468169657032 0.0833654575980871389134218286514758 1.0870464222561666429524824956790892 GT 1 -59366253403.8110070059787039851239742780580051 0.5672888087814564190869946841581642 0.0235843289181679921160546951592931 1.0238668907336372196079449407932677 GT 1 -3951823421931018540708661695048.1051553073773207127899162069894865 1.0903979547579723512709167710789175 0.0392194123197672717416341001051326 1.0400092127499564865938996162102269 GT 1 -650030818008933485996552383523629294377.4864843512573012546233351077761608 0.1359286865213119572378085614325095 0.0318060843207566707734672333438544 1.0323228856532360706581423453270145 GT 1 -11779276428690827851589.4721687887574445342272308558610581 0.0844995707627037291786870563212158 0.0604559629754736255794597363715107 1.0623605883963247371255893848048644 GT 1 -274792129403221.8719202148853467811923756050727479 0.7552876877113350016895093068844167 0.0673125847190114249917538075776623 1.0696851661236771534302499845909694 GT 1 -162659521567963784565143127048140669429.6482626694501622247889871002359925 0.0861007057886242972484106182347621 0.0503447196845649556310969391257582 1.0516562230640538922287690724576129 GT 1 -1258012050806.0061721636058765105675493024699463 0.1211487066891178759584601417519676 0.0396086485783069694090763349133181 1.0404144198591624087452585689380476 GT 1 -6113601724139052216.3048924227243703462849417865759962 2.6315808758777871183671243206623432 0.0803924538529962193595069142613212 1.0873201941424566312349754331617292 LT 2 -6098397326154209603756662.5366046645132316437213264383012980 0.5321612456735559027961423489707151 0.0991726141803530350065499939912563 1.1044416203940377732604549439566082 GT 1 -4911922343635840484.9853581289483803392845719803602729 1.3562062791562447354026858721826096 0.0221156895341731265967973965397175 1.0223639079015973274450515259597300 GT 1 -14479051433525612967867659093706670040614.0421305342673843379445235872067642 1.0439294172256367424875787206874432 0.0426142960283969484340542094263578 1.0435489342726662941572105511811875 GT 1 -22287952766729075953914502795601407701.0356395084847997512335912089981786 1.5460063173654285579383660475685362 0.0551887881340184692976993276672747 1.0567701472494323236170672608067669 GT 1 -2661809230161180185583377913228203119105.6013480337320083859776043695715154 0.0892558359317026289628731477784102 0.0121555437413049100160163291754739 1.0122300265646782415267045049581598 GT 1 -183588049145867569637.9952964819656494405348212473347637 0.4635965310919197340821404528669817 0.0292367287413696338352042721854837 1.0296726393243499765452027313358258 GT 1 -72361759509726224291452896919127525777.0181540706656364203248155373505343 1.9276769066180242853869000573646641 0.0931828787641098230368935312464856 1.0978144795875592164714306085039417 GT 1 -287293537929702166979928737205418531.2068102221393975517033894154137653 1.1050475033006294509753610376384433 0.0264685680622405674893795858727179 1.0268251671330669617642418082458059 GT 1 -578364868200588219315186079404107341.1547184548369005693219588578690728 0.8832675879632582655969682221881567 0.0143269148178690437595437732464772 1.0144305359669617794542257452842032 GT 1 -2652503322066451642700764813.8655130114237075910797971455416880 0.6039321419614182526759567133185030 0.0389071454233724751612600015036988 1.0396842518110342655248550488797742 GT 1 -19178701.7973015052237867177140343602617162 0.7903879675738175010570804761205922 0.0814539611638202583282507689631090 1.0849632516460700110695244785930771 GT 1 -281192039057103742755197.4783558014834534059487055759859652 1.9164250944361577161904749463830603 0.0055038970069836640357167985193355 1.0055190992548462206889077079085912 GT 1 -858186421199.9743982174539885743951403078635134 0.3157620891394363312527390720140230 0.0250523241901264929424322071840411 1.0253714752603795475691189050086977 GT 1 -46070105767049034450694091682008438.5737966550619362362861442955857469 0.1381663330407076523834104647870120 0.0717534131396099923990375752125917 1.0744578628933127926206583356042788 GT 1 -607448504685657500536764138195062012.7143380062260464601231060497771551 0.7947675442544506175805983524968062 0.0474153224361206467257660556228365 1.0485762756031490030201933462499856 GT 1 -10781099221847279835140644429136488.5669285880305591528952222178307837 3.0890684872233186329106896945847402 0.0402946007295717696852036487268541 1.0411289173762270789844961954265804 GT 1 -168855557923534399.1557091454607820172137108186094834 0.9689692573697330544548814123192209 0.0001483882014146064493592487740461 1.0001483992120330100246575989793419 GT 1 -128537694783510618086993.7058914253246470775097725873736247 1.7044079076085961667442251967677696 0.0829155269325572893603603299465263 1.0865556920289470703015378856264656 GT 1 -3470332284.1548368194658260328933260535656636 4.2275364858389409132293536344631375 0.0387744094425675418094535968418356 1.0395461519230038683757079478333323 LT 1 -8729537259882941709119484.3989676989755161142926906934861384 0.0596623154523725901544476709037567 0.0782266930600772618380893906734845 1.0814559566546870559271524071510043 GT 1 -65202095171787.8850176037864275113875827326503239 0.5041294206537934591341300891601844 0.0651614041490768262745707684921665 1.0673813893531895130781810561668603 GT 1 -2579331880.5929101027628861262103689364229733 0.5611789980466519871894315559587704 0.0514898010121223084011075625162440 1.0528627369101314382810888598943961 GT 1 -596805666659.1468898549170479630355487874507845 1.0735524091673602103015905382665925 0.0018824535797998348061429892351663 1.0018842276222578733096564627775589 GT 1 -187291514128814535510348628.2601973131045872790403680390048558 1.7994378434857927779768044370080210 0.0704780364280348733782538459662174 1.0730848426517565024410206619071694 GT 1 -40241529.5211365666330792837213811640836318 0.4395477484851499580808830881858713 0.0626596834201201557578437380029456 1.0647088646266610370977027156396748 GT 1 -10304965675794773182483.5305143817384900999094147113816397 0.5635312400708351857164228996074970 0.0202352753091517421366164790955897 1.0204428129866519233124997760688822 GT 1 -896122479654194053025252142696165007.6351599800950705940057909539414119 3.0191154454299373862064628379407503 0.0479735832523587299597452247685785 1.0503709713923914176091326769038468 GT 2 -70034131069354860148486365964536218930151.7996468354157513298293720337986593 0.2126616993184972715107511316271669 0.0735279485486430583181997280642806 1.0763713994414993957951768619376144 GT 1 -172703313888000270564753678.0217263615100372594042883996497278 0.7102188353716161926717434544993485 0.0221300813685952628070614974874637 1.0223786253279572225732707410194937 GT 1 -3437890087547779880773691838049989361.5729734035779535787181535264180099 0.7619783343966204800457765092583939 0.0489440528696008220535284822328420 1.0501823883770361797469467726019127 GT 1 -1361572129921054516368069394.7507764292340564739128612351470000 0.2486353821773903707685992054240311 0.0948279546030877648885671556843802 1.0996302479390020070870268003843366 GT 1 -7884787674862602994931250932.6050242842522204280069253400717534 1.6074046064462026648029479520674705 0.0384145217549597598001414447821209 1.0391718169738771106566071973042410 GT 1 -235769161091711508.3679858826773760591782093715355997 0.5333525946333282516521357426874538 0.0040690537106038199923490244721892 1.0040773548357888911652590027501433 GT 1 -90820394093383013087680179681603333.5156345130245903395884062460891875 0.1835834483235592573365808190726020 0.0881412595408177284843698466889458 1.0922701907518647261169648427612578 GT 1 -752364834479257758.6108594823526576557277363750097767 0.7957778928730363295678767093178328 0.0988948772311613913134682524537291 1.1041333547402829645822926737759020 GT 1 -14553910831176.6299382898285270856474365890234132 0.6619546984166093387539929554022660 0.0687975008446026060383344929606672 1.0712785182076657993886946045561483 GT 1 -32073032744672202800285965750405407.6258961004303036858921415285882698 0.8634385700254814404418045829859975 0.0525991711104912908083182175359832 1.0540330135831061770136089777750837 GT 1 -34412616044.1019914892788297702657133256855649 0.5759967593124524421206551277479676 0.0721662494334476424004379435767917 1.0749027103412610294091460626640034 GT 1 -13003233452671114.8335187434179925321664805957975991 0.3652335334377127701295358913555303 0.0785042374442135875388710083293782 1.0817571003030310727681202158418401 GT 1 -13.2739075180780932326418697199350496 1.1497210977583787253851207906828549 0.0415621177762078233951364621042149 1.0424505258747756811023744480375702 GT 1 -23912154180287.2170957844928289393585292985886707 0.3915007023210974170848013868862454 0.0375649738081011380674587685115024 1.0382887203539500592257772613575702 GT 1 -8587735193026.8570838343153734276860389959638049 2.0908656415675129025776343464020406 0.0366084492786646981132316608161722 1.0372953550950431513295887454751322 GT 1 -219704.8828885986124704096943776819920803 0.9194846953061905938104241670420687 0.0084857079157126582197042511086151 1.0085219165177166090365492844109786 GT 1 -227.2329738354506696510518818874426207 2.1345673141296599101856508422509677 0.0575559048149437220069969564216762 1.0592786768727234940410709001976800 GT 1 -126520.9841376343472720730658536599049264 0.0539954594217487047367924588274799 0.0305043912541067465790876088960374 1.0309793337105204498552272934715728 GT 1 -126200917663925662079525.7044439666902400294640946138923001 0.5124921842387166736584627618832163 0.0432905946918496655100713197902021 1.0442555853563211714603323606306895 GT 1 -66949477049.3849855139064495038153812297216790 0.6494969881039865922524106956718479 0.0042089621980881002959173764371984 1.0042178448126349627790095371103459 GT 1 -119725477207610406.6360503865455508744446221697384008 0.0579518878532347326949560758515248 0.0735190290077338933243994125298750 1.0763617720620664611770805519085174 GT 1 -1021104595.7628541788870669661481367509578590 0.7063346633849349512661475963321749 0.0300092608674220313146573338249567 1.0304687548162862651435575383076024 GT 1 -10239794312750602373440282.2130110847976018982218352144111010 0.5993700583185996577846281173526568 0.0453441358760294013417069517062863 1.0464043551463320351603230537078530 GT 1 -272475170218828549735422256.1219820660782226374128772678039766 0.2609408256532665517937755810853219 0.0357910446710851711091826066672467 1.0364472492203980931370532406269412 GT 1 -118770230204157.0302611517368666364044304815938380 1.8042005438023146279804029528825324 0.0690702841424760689805833945906096 1.0715714977261183188507754443694947 GT 1 -3595067037.6495809135054985760989652149445646 0.9768347343977419959881636391855994 0.0818726605628661184555833576143570 1.0854191839977356696534539234349352 GT 1 -1147377874.3698190472243296188493657729087162 0.0349159337936166885333365464420401 0.0136067941835662450377104781168529 1.0137002150141649588186121313384332 GT 1 -3051602821463358092718.7765789260401938271637595662320529 0.2554718472553544854725772112788265 0.0116049774895484711250099945764864 1.0116728407864210148794776377938623 GT 1 -29836397739949005635167123271157984.5096419798242119393640025440582722 0.6725550937080665257600026827211259 0.0378374434197272349478911765948342 1.0385718648573885149158937689588030 GT 1 -35390617832655482225248990574.8038275103931702151762303225755250 2.6183077189279911876128553991962217 0.0097903504916606153862191230269282 1.0098385910928648534285651124747276 GT 1 -45322570495483231036257984487818531188.7974454781898561555155768126554737 1.3304946051825574939113113689504737 0.0305064843949927334578901587345800 1.0309814927127136038735248533443941 GT 1 -10012017186177481690511789504467019038.7349793797568705533796773068154924 0.6970423809893623416942678458076413 0.0729592785228098042223946625025231 1.0757577861424900916565539708473820 GT 1 -992075363273071313773234300032.4761515917284992025203831185216688 0.3809759591635501005881998907245818 0.0959595285253432275504094872719987 1.1008811502617045810471813351691554 GT 1 -119609079483298371726243032761198.7784703773597825776102624069925646 0.9145346174118427263174049463401005 0.0496610962282953178074765281489243 1.0509366171921040290620745959974368 GT 1 -110945916002390637690406874.4693456453567076475738540476793690 0.0761718255119194202693323340205785 0.0153828031692593306978910381869212 1.0155023460064380374003259936060553 GT 1 -2262.0029047394279412789691054339868192 1.3739965886274906499833181145529353 0.0344301702263725578673314526907648 1.0350368547432618544699958006862122 GT 1 -653927.6207934073158783926577376264655988 0.8068710007755718505577958562880235 0.0304040833087587521004257194987068 1.0308758750092455278287496920579172 GT 1 -19140129.4634186376444664441887208084201243 0.1133800523417431044403925455947838 0.0812836877123109826699902202532210 1.0847778960250911988984843318885065 GT 1 -8520933591910091229830281367.9695849834309135051815234737669650 0.0847084711679805514392259284503954 0.0359938412522757403736414260331896 1.0366575956495468144153721685007348 GT 1 -2383655334102280549692.7809264986985678433068255087729001 0.5941970423991470752333015100501723 0.0418278623051206717172346269364353 1.0427278327111732952359982741377407 GT 1 -9213311494122083656961563582.7261817075086627766322789071767882 1.9701157131864146276125225560520716 0.0253827171459453102118680435572456 1.0257104154506137994568763191237776 GT 1 -120945371192955.7495730647237685304624837647257526 0.5888256824587251638054941088914008 0.0818131075392977686680529092119444 1.0853543225240785386351476355586487 GT 1 -3785900725340060.7150533930456303727855999932084479 0.9138415037260538863436388754871805 0.0279035488016727275927249575320858 1.0283002498167231226552777012123743 GT 1 -353499126374080589.0994563553257707074045660269637256 1.5951728611258720031385070530662056 0.0249443793474533537438837365874210 1.0252607627882732437211960483960411 GT 1 -3463158930761904397182874159878.3836050422268002528175131632245745 1.6024154022488209887026664281328014 0.0202905644509177110254959969829212 1.0204992456183268130111341843547056 GT 1 -329200827124052836430877065076687.1572164150699460085574662330894222 0.8251119776458397998688435997770637 0.0590560835774923125777386121338442 1.0608717411489876616440299364875471 GT 1 -5279200401505200551.7464916260173752361765012264109074 4.6081520881437010535836259160581960 0.0906593838349046320778294755800295 1.0950355397397552793673991888690719 LT 1 -943087921341.2839154082916747309790284789698032 1.0031693055217023467702032630024450 0.0857536035724217239618739961461775 1.0896551635217179267097895450234665 GT 1 -67715767802985812.2022371091847341286074982528498704 0.0800780714994420477870307901311254 0.0869152205552979652304113808821864 1.0909265445988699620055497213691843 GT 1 -409642652394793104524739447043674.3040541320682321434453225509323610 2.7433326984594350063453799303219964 0.0204303519691479131052687831564123 1.0206419384277779034349697624683989 GT 1 -177522.1472382894471922487396922890352296 3.7626573109961854582018594755849794 0.0266430279809427206837445410304905 1.0270043863618779697491504165999007 LT 1 -691169925161098981824786967760636388043.4540352738313990605891151113287047 0.1122378516160038314453599173344759 0.0961142094066039737000584650202092 1.1010522644104212788416375448430118 GT 1 -2026974998875080565503339342148713.0924005698799326593336973269123019 0.1286164529703981109344483409212348 0.0257925631794282335032804414707293 1.0261310238669454180597239049701218 GT 1 -2245825653312.7984053041568891789419640541109401 0.0071244841477780790759009209908551 0.0446800437695463028588782088592699 1.0457089619102844554610233458572122 GT 1 -175401609733118543274143610398294857049.2931920184306770546548276189035370 1.1382270801651395856183699813173409 0.0228725157113915114683015296060949 1.0231381499977889984180335973724467 GT 1 -915774.9726832406779812579506748043022646 0.2647148035048862623142245151642557 0.0363413131231988451621658956057068 1.0370181063217989518492861255556811 GT 1 -153798338574249056.8532541525524351696937268666669383 0.6569476168566373620113073503789021 0.0238372010351577496038819238087800 1.0241259042609116822046376471287813 GT 1 -259699.7387678750854815166213269108866110 0.8472471715616567329081136869319218 0.0588884973129375457949528931409826 1.0606936525940002867801174460245932 GT 1 -7269085245892336750887800964201678.4721203009182261833234353237511264 0.5438505174099478593634753320313164 0.0222191945054854373774534454549305 1.0224697593283720262319168076281813 GT 1 -136657318512.3467821070419199973613461328021844 0.0340306007843790364813265007004007 0.0462339183617354812052171398475978 1.0473368350438258164740204140845874 GT 1 -7.3474085918665036749411398153733728 0.1572764593553668186041384426338634 0.0659926154218191099180138667814562 1.0682709343839279137700802786298802 GT 1 -15013091085780737315251127518687446733.0998144881150610670303324253808061 1.3663739394608283853734112079947589 0.0874099947526849401116500021207936 1.0914685625022212189703967990112003 GT 1 -19012808192766227035011711259015424999.1541954923178649622074797701578327 1.6022874063051340872270670596058143 0.0793028072114319385175838057763309 1.0826240776898699843880174570439161 GT 1 -4537340007715620201297793250702956449373.0475432037716128112053256553058669 2.1756267056791887493617933530368618 0.0926493735865116150528705595735326 1.0972263253844334180449778921149371 GT 1 -3400462905523304870480742588995.4745794072072193482422063474469462 0.6983411102209321192926166236546309 0.0987572000406013272092071118212879 1.1039805793642396464625132113372078 GT 1 -330282.9753362089646334725251666217009389 0.5502684580374025251905493748554225 0.0584283340060410329508439766391636 1.0602048148291390096612912862253062 GT 1 -1816506477086449159331549.8620296208156154401428265229353557 0.6169736973456596291432530062182894 0.0285353908906285892267574231027930 1.0289504399487634850952767233132101 GT 1 -2007112092674728652904278051179066833468626.3187692184476856546669033847887394 0.7306062168138610052018042491707742 0.0301317581471791137362086511361731 1.0305950498522869549282669269076859 GT 1 -13080715851830325508189963273477474137726774.0820286630514838528033283762590225 0.3408695928186232287381289724579531 0.0926553693061236984361842997494093 1.0972329333474934663904782611213727 GT 1 -59818061771039038994900892017591462145.5313430003995884159909174723221981 0.2351808630541712558916815041409199 0.0518076794099383567473506073832254 1.0531979274816745100439882496436075 GT 1 -8.6486811224111234502059297048014302 0.3718107215254347351029432020133748 0.0172849005931865480237568292356436 1.0174360285065901619648090364741035 GT 1 -1639362119668288260287606907463244511148.1104935810050424744464165205246274 1.5601039336831254077485294222061170 0.0110003111808217932516782544509707 1.0110612620013569383019126509748612 GT 1 -948205560578721226837076319.2879898803153214103878982954889561 0.7670494892010224385475806481955208 0.0135699033776667460524988429861422 1.0136628160176525036480608544187232 GT 1 -154719680354001249.2388269479132735648297215401107356 0.2400495782614812594862104472811741 0.0787078433951478127179130678568923 1.0819780763031944315029986388881317 GT 1 -19361571176565846843369.0936915841153013898799977900033383 0.6006471394125755585082629054735220 0.0741916557650157780162338864320549 1.0770880374260328335870895658361183 GT 1 -19245994.5039022313003895487927886953426705 1.1136708552955402359787246881485025 0.0953213758010571803944380884499731 1.1001755097315724809570441594080132 GT 1 -3372808553170514970388719531.0226893147279738693683172601569931 0.0962255089554749049334114810361769 0.0889901806227755431757913083143620 1.0932016031005487903652549939652532 GT 1 -1050278594009362779481782458538.8640592005248866993677297056588766 0.2650718000306877923466134866614776 0.0959574071027919246308426985783703 1.1008788036631515539675780562703692 GT 1 -1433941286915223855.3870161710655422079874991890357830 0.4723370752901335763976383995450050 0.0889835353738582772339036284772007 1.0931943087503238370466089051540825 GT 1 -63011630.2149033925834469351078465571334083 0.6928731871063897350898488091900250 0.0982418099319516141072920853851582 1.1034088768243763280354627182737640 GT 1 -79616761645068978281286.5115087144622449112630239381946555 1.5026196699253733643298796214988029 0.0142262618589321453448066122017518 1.0143284252147633641036334262716071 GT 1 -849720.1021237544152527822297023137555840 0.2304291308272702322021391622137759 0.0458981290145775312960723098124281 1.0469848302311621240771645752723163 GT 1 -987161524654996130963736622173.1414652780938207958291550339197684 0.5062303834966981903385857266593130 0.0572656215231427492364851160082223 1.0589707131460516631278720943757899 GT 1 -357374459581199039131.7621561446898691026727088767200119 0.3030610960602119990010737098118745 0.0242628501783639809735605660618570 1.0245620425478336024760011118869668 GT 1 -763278.5255575325610174048911163259041449 0.2630239462471744422554613265069892 0.0008320009902790669375121137206507 1.0008323472952003283178549765630844 GT 1 -70396883154531992.7062146103770923753269921055502930 0.4364216001761453027419911802027070 0.0599502266879646603173757177772729 1.0618224547879543253984479195508125 GT 1 -672413199.9426298454325790187303834261106029 2.1005408598241301196910874733332093 0.0301795307377982902751084741419850 1.0306443078495677392958249665058224 GT 1 -1238864113384148296992.3278020854881222625366099195778896 0.9201699137881370646805889564319543 0.0550457918991400313939156250920951 1.0566188096986014190655420138971243 GT 1 -13116841874901531102291278.3799304719272280753425020936699861 1.7353945639607480676828317932504571 0.0836273922426645938826747713305161 1.0873322199916938698138360423265282 GT 1 -55.8782242147881398547978667069143023 0.1544444263909279168376186562442672 0.0062771035931359130670186094740399 1.0062968874415250485360007015759582 GT 1 -4233798756741148754110359153566929.5810408191514242756960490673427492 0.7790878558150556797021160631499088 0.0116154601339479551639742890628484 1.0116834465662450231383437370170695 GT 1 -64324497459243.2029832799787464773855565696746605 0.0949475023586536526422200474634878 0.0782544807788545183208366460199328 1.0814861030447157663123603903034250 GT 1 -4092429547378412489300549124141659096.7739596567902577147788027806867398 0.4521767583089027683814470669628280 0.0342254237996417652131376548854075 1.0348248299724705869878870059444302 GT 1 -85098227882219.3532126682013162506753156900333769 0.5885354060191942665801595209011499 0.0423754944187339441145045699667688 1.0432995344420966646319875701484872 GT 1 -1106419.5192188523398807599111702122565921 1.8624792550610357553658669078359314 0.0183828434246085524917915013393079 1.0185539075643877022514794824449931 GT 1 -255246156020249217196667949861908438011.7143269901165663828685736581825239 1.0634156498899334121052801852440644 0.0339970864213732337922766020962106 1.0345884286472247348898925394913352 GT 1 -7712.8141629076621237017799157084853309 0.2173711847611633719492348482710842 0.0881755024610837969956042137267614 1.0923077443352465442416929363281025 GT 1 -12520393753329415260165074809620800760.4918217803395831028984377409612204 1.6760707443373890699982523305027692 0.0044685569965601624584618871910869 1.0044785708401316610309124895383461 GT 1 -2.2609124675981016045879157460198349 0.2738969429662124582860641429442342 0.0485666636742805947385148543048886 1.0497856563654007476294801091450772 GT 1 -137805750.9580560571801736977818967068810912 0.3258779779808190833008344897957316 0.0909194471338452476923778716721848 1.0953215717164422169522389946980785 GT 1 -18.7750304024532908263197712035055880 1.3772334885174064169124037016648405 0.0995572276781743416383705879936515 1.1048686673885466722529440125216562 GT 1 -3379791295575677.5297856390841745747346222414247523 1.3105521558466994041287545919468844 0.0298797059329572335536021424837029 1.0303352006717652622051921911593840 GT 1 -4550744718.4785467411982819449524058716593025 0.1169897745393315938217118797005145 0.0426490542651725269240895131760180 1.0435852402960400313674752880007946 GT 1 -2181666483441952144257802.7550797533948215228357789432624665 0.9328764967350629830260057771386307 0.0903507411018476822722704727961179 1.0946961835506415527747308596086598 GT 1 -14229679618016788060.1196802927165427111924661077305104 0.2379755363638633263018923102061424 0.0200853932214364862362627690556629 1.0202898470543173477162521714487315 GT 1 -913258249911964527785532579079750.7383329106831827770932120164911850 0.3387158551153241595966950794816465 0.0927672273281846998983608191740966 1.0973562215819828996851297686880974 GT 1 -14323270369358150261974386466483618926590977.3320820331692087122029308047291311 0.5463023365336713377288089868116578 0.0077250154195006664838304046094259 1.0077550079126108704721577358842748 GT 1 -356.8365851753609765328116467245882134 2.8921225008866805122863109155293639 0.0897111568109392826475159143064819 1.0939933197373004569153958645344992 LT 1 -7008118570260304737239081816456802997.6970160590492963145956674616601641 2.8362628121376235490205387596513404 0.0815919721973545645739101978215399 1.0851135123807289931755908512611196 LT 1 -135080060879368376344023934602121553327.6115490941169351249403414637941792 0.8385950304789897791031915913563365 0.0635662180297781181988691467420837 1.0656764675848708066743084284769205 GT 1 -2995953569936498591989102488965699666485015.4105771570180120673765902121992196 0.1488724743508288405304499343177383 0.0323519782555897827542707837264980 1.0328868717295264372358623003570985 GT 1 -47690.5446968456096779322362240516180841 0.3598629626439567398156185986615060 0.0577313228698051996408067663828225 1.0594648251897983814825226909969193 GT 1 -536248500337.2670615194810134007128533955481471 0.5344870167297308444532544065853012 0.0732550765222910402697962895357785 1.0760769147351584710099200392238669 GT 1 -57460374863630428471585770273824.5113196358143291326717106923205365 0.4953658945489293372247538141046623 0.0478750668945320119639773649938220 1.0490590205473278096604203325069452 GT 1 -5722901858082041047548309951537675937978864.8535157778869924848051542607816745 0.4782854368964478079125510556996557 0.0887696653576388699476253167322212 1.0929595765315187157147621723780380 GT 1 -30122892892552614822767112148907434673.0687767965149089132026618357686660 3.6076108784449046549003643328636985 0.0451136931364344441653560877340010 1.0461629959931121084857931271395332 LT 1 -3979067056.6687594912063179105089339531804673 0.6798620667393254812226113281447719 0.0560406974833156005039486307481809 1.0576722255067745957962215503560466 GT 1 -298884468067554512.4577164159674650210242579703448913 0.4944504997800412400345312461652118 0.0495637539152602762745247095446531 1.0508341933855559564467644763663198 GT 1 -1179141248800688537849195675771871.7635021071269064091968662008895726 0.6392273107386564162989967307302364 0.0039809669492271917849213865229096 1.0039889120913950529211276232337977 GT 1 -1555442751395491875069621700787270.4629901069358130024870504690109188 2.0649931221436776994456623031728451 0.0701162932334824880864964529099121 1.0726957471414148712336781440363607 GT 1 -118267315042513749045.0832345005888017525470793058339562 3.8756669123320979437676919436728141 0.0363735288335309252847587929048638 1.0370515375036877684387621449388566 LT 1 -11029495139455569637492.8122302003162221957033464631710472 0.4531476524076347815269610828538116 0.0469553841927184718546796182725695 1.0480935602566405249758655983907608 GT 1 -1184396179068738716702873344122834748232.0539401179651443445681856485785997 3.2894854173655853724265643785315839 0.0934157680843964529735221849433704 1.0980713331750590557276578078739113 LT 1 -2492172766752.8854530920523274638861036407140719 1.0451255965567975220496670428333095 0.0781907176492271283532301105196233 1.0814169289365216971210409132582963 GT 1 -953819188152735695641989908611.8820996276633833775283273008369703 1.3231701138496829482716432347210979 0.0747772467516133781961728011023251 1.0777207561382464829513680700164289 GT 1 -751080827637703.7957491200206918106199026597756880 0.6102479450451471086432047877482628 0.0332969900896846533960097794396753 1.0338639559234635870032003343743432 GT 1 -278980.6932408529970629615594296606216064 0.4010755600152848768772948744336226 0.0337950784047605371064655230848253 1.0343793331103250847719911998842095 GT 1 -505059720732692134291.0225639358553826719006986523547193 0.3533305288006304548320461650095571 0.0527479890839942376584009469612414 1.0541901061867562137132308351910563 GT 1 -5784.0760596082486007536929962903764203 0.8685726684244466602508266369746325 0.0135642202773196966206027278780404 1.0136570547538836824021772731408056 GT 1 -23886807400577.7819236240107713009472434412625614 0.1306242079519709301967875458780581 0.0060607699517882512468194935121929 1.0060792109669144492127468007692430 GT 1 -175035131290324915354.7659700833513151792515489701819605 1.0057643667710130082860378224148584 0.0234619889165765194685634130847259 1.0237416035823148565541653640037720 GT 1 -215705346435832866261.3638754391461384441917330618736485 1.4972319668614715132324104707412899 0.0977095206260074594611547553566240 1.1028187715457253718678657343667769 GT 1 -810044864552021019979733.5265299209102746427640182140572013 1.3904436915860291504960652686179253 0.0531471524667583190300217134281949 1.0546115859025096558653104375240605 GT 1 -13.9656908283914943965008148907418697 3.6823011979240825083717349001637152 0.0259479413944579203118606796921429 1.0266361244522036226971266558082980 LT 2 -17530750709481177992518657980247416.0467787586487342841805043294353976 4.8168611768209752851978693809787720 0.0335664283446429888279097847644923 1.0341427135231825440686527214736388 LT 1 -15353615.0088512471402123570041235548338771 0.1323324342126407231041053678889717 0.0051511746540864131335031901503668 1.0051644876924481545689060918236312 GT 1 -1610176071.0269540108259670196465873056259448 0.0646778524114068224966336811652150 0.0644199681683559322041285769028275 1.0665885871338548812661494762034247 GT 1 -24976586647137226304910810035.8366618740045756192769401949268234 1.6808076483526979792571215014088388 0.0962377854100481040745880505107623 1.1011889901482665804816723607723457 GT 1 -72468265339.0362367013421563493223719541888424 0.6577754191502113269668599082670597 0.0683944642324626037469601049843476 1.0708457987745594290675433011297588 GT 1 -29878445377452666772986992021715514393.7367233066845782171526898599956136 0.4195050186148386832007865535392478 0.0034641718002126217293998169880225 1.0034701859366949971750029677788716 GT 1 -8671457564434765186240264201.2357151349779533920010802447940102 0.4524489808529384828125405229623797 0.0359896656104810004901479199904639 1.0366532641079758687618941587083092 GT 1 -570635598304635488917954.3289710671459773180815393561543096 1.7930084596103163096549391272515661 0.0387211246007173547189806977057363 1.0394907191863758004225524396647687 GT 1 -126136686106892969.9260698063022845565669026390055834 0.1714650755876785192987352555744886 0.0052750156025745250625816525473497 1.0052889776189254494222891473642653 GT 1 -9087.8382799710680158559732023511659811 0.8125844545618578958040832677606273 0.0175498987459729596994587915740288 1.0177057240561587520078909782160976 GT 1 -272469.5084360450298510385841452250030243 0.0148117205240099327355049871570972 0.0761960295376184088683178915185476 1.0792553830273627645320250491665269 GT 1 -1265784491732407731640804294883655689472362.9919154896263113078777401618153069 1.1603772508173979257196336347609441 0.0930448530974057438037168411745426 1.0976622822368828010325104433655134 GT 1 -3056158926426.9227455771423756690301600252725650 0.2885461105838135092122843108125550 0.0718491245448973557912407857151771 1.0745609781014673958866683809897762 GT 1 -5325705702625.2034594422747280280769254354527133 1.9085029282868866709752211207100218 0.0149721447722584533323869353378970 1.0150853587908764515614326690930448 GT 1 -36346376953051944280239376054.3228382088259964973101477118332201 0.1460572632923914609845080681570039 0.0660393963645419975552702811661649 1.0683210219047289581344742263255005 GT 1 -166494821344.0239929125844281482779970170814741 1.0784857114988930454047449455703855 0.0438543436441028181229176162180478 1.0448450173314596068376713470044389 GT 1 -603183.5958776015364702840289401818354154 0.8206859734881927678942171954738862 0.0886239309946762449896995526164344 1.0927996578974334382658745735508117 GT 1 -17263549318114237666.0788430292904533658425847182668403 0.0810885102168874007523814281839607 0.0971799505708228760041678427458410 1.1022320262335381708463764511165164 GT 1 -227181759807054371567140135516.9489859571187327097913177402809688 4.3926631337246920453265257478407946 0.0888008130500832502327803283555926 1.0929937591345531519232916501145161 LT 1 -252091374555007056726624389.8496180228453317160571256320463970 0.1866549367565477734215805655672379 0.0254340699700146433439331763031584 1.0257631070844651213222520090697699 GT 1 -1655249430503009425246.1048594972057204556574314480503566 0.1372400006998682283185956863380298 0.0294069813227923634592419025323751 1.0298480348277326363379324935131385 GT 1 -962115035875943479.1568024837222042384789829349509506 1.3122782216666989014947134483335414 0.0949964082275075646225310673884689 1.0998163664807027272444766560252122 GT 1 -207310494269041149610962376963698092160333.4545398860116740209030814527608343 0.8248279558511604389402262551193219 0.0896614751693331863685858485539433 1.0939387433396354409383460943443684 GT 1 -90251769889862914403639.8517343351979345599583531689557033 1.4338301067303078877867486052640293 0.0806936116696318431218385523298288 1.0841358190118389427000936132476100 GT 1 -1390152609459725944302158.2331988141625838280826446954063624 0.9117961655697289443362810075310952 0.0047536195760546255430545745947979 1.0047649539594211669947571091311567 GT 1 -25504476406957.3298160634718523703522719856249283 0.4100532790862119637476284695982121 0.0930298321292140182957931909008678 1.0976457203993366444255799739487021 GT 1 -278742631379586993936.5465830506022756339384273729398471 0.5103769777397855076497238892932757 0.0323404538789224706234121820049777 1.0328749621221246959723226297265091 GT 1 -941455275075801742007726068315994395112932.0935647856464106193531398445629051 0.3982439697400854048588845206200180 0.0328179934557321908658193172126555 1.0333685835102413695511884676978510 GT 1 -111781636238.0888274001261321542097180016971697 0.5817048283030550564200008088208705 0.0995091704057826833326410676273137 1.1048152981001376647265927737911058 GT 1 -60223311343071939397716.1622698854111879564505850876501220 0.6237764180960129705154129737983219 0.0778674473479083025315325089198819 1.0810662993250076678372803171323055 GT 1 -8016675395458156.6033397484685316230574619357672517 0.0224672119368304704018194193229408 0.0079113767889411992724264899745266 1.0079428377732842797741926235892385 GT 1 -213824978181960941882317.6328372437447129054976362709801223 0.7579773303595333232974044953258626 0.0930792919972843084845406345031038 1.0977002549567793351862752077499646 GT 1 -75169906120494616707.2266669237026891105670759106975673 0.3101909588082194753935200987837888 0.0341875451860827482508700396679988 1.0347856097737886954431148932080627 GT 1 -252058200833538591281833.0366812400255882310766543432214206 0.7459560095039958763422842933050966 0.0324656437510107668028901583453856 1.0330043443738046039480090094500035 GT 1 -228427128985876544.0983894735211635106153922557146051 0.9338346233940144384459017333018412 0.0814083353572742566611943419446778 1.0849135811107922443132558696529102 GT 1 -2513.0623649394343102605129531815231299 2.0438960234082814052217274704403423 0.0441955896683087582242210670636723 1.0452019785657251470517349305976585 GT 1 -147264823444177314834549748474.8891527087190915627459301244915597 0.8086453177338981053663868835046366 0.0675657350728641600757193122221792 1.0699566233246668710924347924874446 GT 1 -17808.0066618781485889400424540284863823 0.0158023286515892274944657430881530 0.0090274347044604175925368751721360 1.0090684288945473205289862221948331 GT 1 -90751290123042727514088789589740644491985.2724466246644404236892599501132503 0.2008799949626720533627703282733295 0.0357063471387405482639362934503074 1.0363594116079008356563994207096262 GT 1 -126529903155991657237476936448.0307634684349918606985103887039119 0.7987968793654600138916018274719671 0.0142392937195887503980220760311589 1.0143416452330021211531850236076688 GT 1 -70216063368339389.7594255245687083984495178602905477 0.8025382839906576433850262957125047 0.0667404620113702954200170587344271 1.0690719410536211372773239227890758 GT 1 -679460823633110594318249711177114026.6041916566688409917415502269190187 0.8973378952233649748426196282932510 0.0865691076224387113592583028059116 1.0905475575008215063928939685304747 GT 1 -26.0292670705838935802772377628759655 3.1066926240564843377724711836300942 0.0545589405379828484483596075961045 1.0561037307833345970874836719084373 LT 1 -2447998416996917160429461668379032273115152.0077100474250168300206993596177991 0.3059992630102990486790153172030621 0.0916849652284291828823927493220764 1.0961640059614297832152745213312150 GT 1 -18705333983917214940010624388237720032698.9908277236518210569309969937890103 2.6242586194153100826340484831903162 0.0509183525301677228188840027773818 1.0522604488045034737889526812161810 GT 1 -416851032095283344867717978588239.5316290899627455274942397412820095 0.5481774592784306840506471866192237 0.0988410057066531110049070028069172 1.1040735726872372224753928773183870 GT 1 -2151315214906201163764065.9045459022707566455587124917397629 0.0007058836715888310391134288225946 0.0671411465654052700579291073395995 1.0695013720715395015096262048624324 GT 1 -4736549359956397968967651.7069915884043974349956080381703096 0.5016201614655794304105398426800285 0.0826532724448080596660612662488604 1.0862697674443162727075969173719237 GT 1 -297924481610094896.8078467588212492064451530167401007 2.1700937124617718529673698497163173 0.0545701455313109571088413303268140 1.0561155824578679443604833497587195 GT 1 -5694484848812066508828488960.1419113750640101756720531103216857 0.4490957526195390125376785396760107 0.0362696099985957266800490035849483 1.0369437019106747223139142213889762 GT 1 -65083198583565756007750.3564847567975925057142613542444453 1.2292371553963566036719139514815479 0.0283640669263391150460452166458993 1.0287740991357029792187418707972210 GT 1 -12702.3543651907267763649343424665523463 0.6054936826118874632928085406012085 0.0597491897054470020100502734743283 1.0616086198457791843588208839070911 GT 1 -29774088.1564043678255243675758340742082092 0.1323774256399035416466511606787583 0.0701806999719934571452095844246138 1.0727650127588832584930838666592210 GT 1 -663.6307325479703427823019603812041743 1.4617139428560093416638427636838545 0.0535501643817735254004986260256097 1.0550373096123934078138929334255625 GT 1 -56480678231.0548440867410269353395503117260575 0.2427193117203224116007393320534306 0.0786010621915879215226461695482589 1.0818621792827951263450664779427648 GT 1 -3022035137422766390.1848192573535995649436480675731589 0.0581361475557165886100324924577302 0.0152057451935930895421532682560304 1.0153225379973030318079248183404153 GT 1 -1916474238070507173.1360931030378971305217343285989265 0.6685358135551354545034928405907498 0.0790115499545013138971837944376928 1.0823077834726760129615229054964759 GT 1 -81631497483648624028846059296567882654589.8926030510352283405534105543710034 0.1460034387101097736590133208500201 0.0910235663591581466043002575474547 1.0954361107283647985881897438415850 GT 1 -3600776.8559480796072001112752114068297774 0.8637955751719763594317571389572486 0.0799894258215158591059504186870959 1.0833701153328374328120414275901539 GT 1 -397770.2332680203473105936701322944335394 0.2405383101646195214875288647011096 0.0012978118083786506711519360672293 1.0012986546954751116630155051245019 GT 1 -370150458534808095177255491328548288430904.3446520808061246661513908322745142 0.1835056017072880410930148408082249 0.0317949623841272726677568119438155 1.0323113984164653685075006239986649 GT 1 -2656801012946409400830844552751879440111.2789203680613478651633301410753999 0.1388780569665012689901805167118928 0.0595556132988536222565122975487748 1.0614027636202874595583746905426626 GT 1 -710996096429327.2705689214921277101482843764241469 1.9059299317822607679938066540000601 0.0114314378157764533274579080997268 1.0114972789545680973395334717073734 GT 1 -543471088954640.9404374295722300439190872579813515 0.5749459208015891749385974935958787 0.0079181583562245207009661398568989 1.0079496734433070607931913663826397 GT 1 -27872222.9031159705051184143531385765001245 1.0303173421395395823693243772343324 0.0647040208842650706919842874670019 1.0668922445824828708528787980594200 GT 1 -644934888120956214453860871559565497207999.5838422145194575966597341486938328 0.2800753926867042770451668420464552 0.0548696524718781221982925427697589 1.0564324271082064673999157035507022 GT 1 -287342123980324.7810373930472495990281950857641482 0.7268750625173730909576844893546823 0.0876594921750831195238650515691757 1.0917419947476305334098259605216677 GT 1 -225657969662.2610241850726946620023899787807224 0.3740158884200843826236084214843480 0.0809305322119685278538962467635833 1.0843935688542988808497785043633189 GT 1 -339389781308904978566242341761947180975114.1693494335540651733007760040019948 3.1497147591824037796643301494900161 0.0522941040730773208072715278869426 1.0537110612243770176934508615419737 LT 1 -221306039026630018366519065347.6599672872356069695705182989408733 0.7209337787950239405428449734222619 0.0235058996012653788990707080997641 1.0237865702620105984996711517784716 GT 1 -217387372861878097575134289223405.0776486265177545191049593989047907 1.8328353025909237007687966664182108 0.0892445491076668221549964436539659 1.0934808580525401444199494988749658 GT 1 -22228114484651961466374040013613426816349769.6233081917086326397713212349383796 0.1609457022524096812725368811959777 0.0053056463959911272047599625660759 1.0053197713212223158398251950333888 GT 1 -301070.6366040875806384809827589317457690 0.0989798833935257005226141609291221 0.0814681678521654089359934495310330 1.0849787182613614185350117188171301 GT 1 -24956421.7368331487853498728418688044578079 1.1777522089341424161555486800184471 0.0848033380141067116260195616255939 1.0886163056688786270310126660985172 GT 1 -4330407924932811086428263352252614304669347.1706005219990274664706558381246430 0.0088250376866842428214877373942583 0.0666855692369867579646961947611069 1.0690131244459556246586786320300323 GT 1 -991050331447686036474.5503981706028208964246668534760350 1.5682875499699122235946202738657093 0.0534541214475109168413073321021440 1.0549358377140409149227140056086980 GT 1 -8924726908524356774038.5113577632373331289631571604992895 2.1594002817347240426146770403771918 0.0917916439296194251436760313647132 1.0962814596665135767990277255974853 GT 1 -24516272984144060312.0006490077985681106200701210267990 0.3163363636245703150774866026662838 0.0228416350862843886713025277326914 1.0231065470210573218034199548688148 GT 1 -30069025611448452878007.1794986887546724165022829386566332 1.1083664659848341765815487969474272 0.0208542022970439433876800360504734 1.0210747224091723085839028332778394 GT 1 -6031584.7567781620223366831208143732696016 0.9911949396011067059562142029137812 0.0891725095073209781075608674875221 1.0934017624497578443269689921714180 GT 1 -152686000216679898245234898094095320563.0915500047637503229091723324580022 0.1326649852511201617486086507894785 0.0879810150967536485846659800767405 1.0920944723445964329911738030406111 GT 1 -6869.4886094371585243856027814013117141 0.7085826833557025980396982170404392 0.0788937962084963859050250585366934 1.0821799358119490869462731652646028 GT 1 -163810086821277010939205495714467665330.8716981223588416130231788669516126 1.3467440681862038823693605698678468 0.0250690822143738045879220409294768 1.0253886640477253516053354926744534 GT 1 -196345037006421399314747.9638029407200987169093650035945677 2.2066145508076095281154405813433860 0.0189711611480478733689748151021264 1.0191534224462675842499547355891179 GT 1 -5537727762353588.0851661348301427914103314172888488 0.9969382955945300578926740990410059 0.0913617104061985168978953599918779 1.0958081852352654089235880512748608 GT 1 -5462740506368803194771334077416552416813300.4589873793581748157864006889056836 0.9429464579051053535288409862445363 0.0431968902398810410501488448672293 1.0441576456237031343037791720717100 GT 1 -22204881670847.1806130907836820280005454828134663 0.7937222165604663039238171706371067 0.0716452715617731209443341885549468 1.0743413687628087689814004195680233 GT 1 -10195635804676510686619775463997199395732.5631938084939166768261031052795783 2.5950037140301134104991967562150414 0.0148000635443797098283455782168571 1.0149106772347206669777909077763445 GT 1 -107982988652.6693657027513965573365186681985219 4.0682262069235935283428735561080112 0.0927193927623768473178171282810215 1.0973034971806656483254206123877627 LT 1 -601988623500883670388511223826745847592965.1019814560007605427502169203183317 0.1232793852590910385786229370034703 0.0347503678275369665369694085277983 1.0353685249075732907090833473229017 GT 1 -43389484578110739428024.5300536365605576450062673237067906 0.2077886258698693558565854834556277 0.0252981333250615346427450376690341 1.0256236325131381186733047445430511 GT 1 -981102504.0337072209804841523063589784276947 0.0166596680640807713919757096566268 0.0014323908602007855086075993191774 1.0014334177126755146528440056209462 GT 1 -306921979480739455.6764127644121746383401776122193566 0.4601943273098928361619975551705346 0.0500947415666520617420566310536044 1.0513930273256115768694133058561370 GT 1 -92720579.8374918363194197133269951834453395 2.5232788009852422936454485713680484 0.0462396519248973663623578349178778 1.0473428465601776648444236959262796 GT 1 -3636.2118066190303133929484581166816441 1.0852062033175653681089939592573414 0.0289837958841485552284017555733141 1.0294121227601785257885746324465516 GT 1 -25176704515961571574241084270763123.4348611792918296177895976926773776 1.1835694522612103336924055552775906 0.0921318961906065262703034826435060 1.0966561710539304062769816654729114 GT 1 -3280751714426829131946196526081167444014.0765714672843555753778699448864527 1.1818063146230097801036008965205298 0.0028998926036196346072918949959166 1.0029041054386599150148222289540558 GT 1 -435128115987211300488602016520803280849700.7110450410810510910269220670594917 7.7353856719425333806455427792953936 0.0458658774935337889154624337954335 1.0469510277862267928975765961259123 LT 1 -12823511515.3637380292206051785405600551672759 0.1278080057982070198048206266768623 0.0481186833816347787911265802130742 1.0493149193800837648383082916274664 GT 1 -40881177209490699317225704185476.3162550302649803540799397898270873 1.1752864978861312495007511692390265 0.0467756139052577677895690490492565 1.0479049506870422608326984051475749 GT 1 -10.1231071668606932638767315656249213 0.2794208826424901120167880404157030 0.0204641079388505991896057770210295 1.0206763990211611893577093954022732 GT 1 -7739029.7659508272805412858747971745390203 0.6208583880381693318932544693486891 0.0696716872930979917552238453303419 1.0722177307172694338521421588855873 GT 1 -307096254090160066559066149.8229671210231635250129447936226130 1.4746704441326104347338879244683610 0.0718993137748353430277508789160751 1.0746150539939663485042484321742808 GT 1 -70838245924723697118156349284.8152769875383023194115539724507497 0.1985647468242342791960564487023027 0.0342568542680063073479911525274567 1.0348573748132560727843082980999613 GT 1 -631748749.6026477183767854841122828390681563 1.8470642800413436147763374441498430 0.0147197441782357854096267203445979 1.0148291546023154375024611734038417 GT 1 -5229065436.5475603739553060409709350103706540 0.6221262331806817879200047928631420 0.0284660587092589433305798455276976 1.0288790737798234257895095723974288 GT 1 -4731847754768912945214828173639175747.4203381542921947839056240487751406 2.4959171565378188244548040760493595 0.0827719251739448135947232336975243 1.0902390152279982876518029548894882 LT 3 -6.6100583769862788842477297293363894 0.5881921681051981990683230652105753 0.0836589704718531271567476732967435 1.0873666806172375638998458428944794 GT 1 -1240445063.8957936902182639602289867051172847 0.1865679636408655106830824544431254 0.0718666724290229885667713269937815 1.0745798845642790162821147655161570 GT 1 -21960311.6731828440849028971909905644740951 0.3167131145577470510561642636731665 0.0391838630170332027454833266047511 1.0399722129962809537711613486508932 GT 1 -71079119819.1386352476360703155971437447332705 0.9683306368255371312475353959279216 0.0870037802741519230842751571268775 1.0910235388931686418976213874275390 GT 1 -914467221629334081722712258258725134.4494353560404501170458847405334965 0.7178230897266817439926237263273514 0.0969490387009183376980592151310082 1.1019762916104214386028465725380564 GT 1 -184354119.1570986890209707458566295167560046 0.8545513790290814874063422583371991 0.0174045061722712978075679101782232 1.0175577452262212951870923164249305 GT 1 -275347747355366201753024008.4696741028103741038977560382755175 0.6582672039000066321747138390339241 0.0974379591017496457444816515129403 1.1025178477602560466446890824490796 GT 1 -296369581683.3607575522421872433697355774021939 0.2910048181839008258722242923002903 0.0915275298823105665793507620171583 1.0959906941722535514748583858398152 GT 1 -17841414191186447741501354144461501338385.6735528144311202573147425171171509 1.2782433619544097705830232622589151 0.0897597104681114122709469249348477 1.0940466598968298720253368913933556 GT 1 -325035011362802067489145592819.8994935273970998955952767453579503 0.2071834180014645083825475746687838 0.0496693962556168420862551828239531 1.0509453509854213365264387778740794 GT 1 -19700507.9409007256697638137361772188604717 2.6416841134291185689553660797507893 0.0950299674131300145962630716514973 1.0998534489941434121476839475432661 LT 1 -5464145891184368443807.0897240033669653558728425861353899 0.3941225250057447113614240875378067 0.0729168796432839863960911916256685 1.0757120514633100088309742507966555 GT 1 -48453061441915532678.6066430088978425811091602325140171 0.7002350948969767891581805163450352 0.0689397280457006424024770592438660 1.0714312648592995178284550894056510 GT 1 -8.9249762784536408954988078625813460 2.9871805099031980521813627537636081 0.0539935058406204209473672223390732 1.0570462945115812969077335119326709 LT 2 -774860795062348.5867549843686142353365616439509660 0.4324230850531376842286284217999482 0.0094798788865353709829440560687404 1.0095250989524700814300471081312355 GT 1 -968374554061466360.7425048107819861829734507445612542 0.1054174281951979678452033249249147 0.0704197837358541268996824898219709 1.0730221750987498720985859906046871 GT 1 -11228067924666.6035204580869354955741716027011861 0.6206939283014045465471969009834365 0.0953104534692849771088856265993080 1.1001634366422487847820930803237641 GT 1 -1317078665.8923218077915730721386880823062886 0.4159005998327289175419044403985600 0.0068148871073978092544357123823155 1.0068382144932831753352958221774561 GT 1 -2127756682285031163482236705057.3184942938732544839840748752607296 1.0688697114604104064352201515329596 0.0547960646061745415399828354600164 1.0563545701213173484960033859250197 GT 1 -5.6005011887226337656664536981094043 0.5292137211341545189512110309302446 0.0551033248816985831946419718219603 1.0566796959654356827271835978454481 GT 1 -3565517679525732354675165351317469420.2007251356073398938535962043629721 0.6322449843385273094810953130506150 0.0962145795731423699512981270579923 1.1011633135503640380558941661612487 GT 1 -407504886877206921726.8658991065274010242098435552188936 0.2155961267372142015538960765757060 0.0268256070528915229217025618839484 1.0271919806393402427108611352603794 GT 1 -45360541245831300475650815130930.0242372078554927704691529215259305 0.1403510762233934481973446631074314 0.0565279218708459074093569183573085 1.0581885085392056731250772104864122 GT 1 -205463382318062570055.3430689199421053729251469954153645 1.8408194351123475976775658175343774 0.0546018177873244782341305908479459 1.0561490833954487854042333814170011 GT 1 -22161219962435189000545161272729025668685.6592369531194214684394047674535348 0.8805963847706538853578683941553864 0.0164102384894762323540491819957121 1.0165463778946378255936793962566029 GT 1 -140958242812144.2078563006758329797988265108633043 0.0312982890018454786086606093961755 0.0766950399256105201494064397982281 1.0797956981023239422019658231262338 GT 1 -34164563073415951330476339173408583.5646815255295802404094619649335326 2.5217492244678796811245983213976189 0.0103494420341045590927373323440309 1.0104033699143136167105027642794428 GT 1 -23567627805348423844397786958152.3089461428219468075736294987114783 0.7911396639116987228887779729552983 0.0990646764164583593423361598988234 1.1043218068764635841931507966319496 GT 1 -1015856555.0490370195110729963968372371684702 0.8045921882142772720579240366290544 0.0990534330971256708103085249339098 1.1043093273467095010006762674398463 GT 1 -246309.1133037885005930453961167831491337 0.2996681373996977490072385578996986 0.0323818244492397044888156518649362 1.0329177162652228728050298994596174 GT 1 -1120641671622364969.2184331027626177437357700376786498 1.1351942036310765705004021721723520 0.0046894987635952063801996846576732 1.0047005289604951243990414315529679 GT 1 -748045579370381032027553474.0835060904891551844094349557889417 1.3843650995782577130064960169779897 0.0929814532431967783977372209684075 1.0975923806121168078151398018195534 GT 1 -2193625776852652227258008.0464387104230370998990030634468968 2.8718513761590815004665401419799798 0.0176520069119222523461356729453364 1.0178096616224005450986511817685624 GT 1 -4639405915359648685.4877942827978619001707967309279601 0.5526468086667541178068032053524566 0.0640487551620135432629777677141620 1.0661918927095212432515015853659853 GT 1 -1936452742768952044126742939190540569826940.7806952731539171100637699187487831 0.7890997334116449101403056826203362 0.0654290317478574801404366953363339 1.0676677124851003352001322048354667 GT 1 -11830570909260877146414580586.9973193969930098989248312650387815 0.6076502307249430390206137222412884 0.0176377337930364024020054263555934 1.0177951321325497389201199622207791 GT 1 -14725535041517.3004385989631724036438485144813269 2.3995761130662595702654507073550142 0.0186792860933691191949727494324914 1.0188559473543087439985708200799904 GT 1 -231878130293.4974018506303109028987178739066128 0.2727565996143715954018334585427522 0.0612753880553186764780576964086933 1.0632331208024651653268038496083753 GT 1 -113496147566607.7962344485296174045173060196902679 4.5493503937925355492461819082469746 0.0409896726562313210938843402339984 1.0418534352893534920457543250100643 LT 1 -20405752958253012.0642731867981271342774105810645616 0.7494485120429565302911258414822611 0.0993996841686004004279187604583437 1.1046937204247432626111700943221446 GT 1 -165933842890008346629.0125493039402612941902374976224173 0.5376710459106188577842267007876356 0.0221669511318317828453196612417797 1.0224163301981277957566056866935685 GT 1 -130730315584878427529425735667850215589897.4146649112542764480403803475512242 0.3862117033254816552116765321714877 0.0808897746501932785788015421834953 1.0843492232857627015481586194502353 GT 1 -148607715717548774681391881394157915483294.2731829965162457035528890038469132 0.4823616611555701117396885208220770 0.0634044750936108927275981423344762 1.0655037602641946789472801415995919 GT 1 -27933174938322137407868819259.8570964095446186291769429866843931 2.3435416741390197673203177488885505 0.0518037039233042738219613932519568 1.0531937347897345253178716227703792 GT 1 -176505469837245.7612428898572510817697194182299250 1.2594464582256752033886259552348855 0.0797934183929273545513127751986049 1.0831570889204778857526932111140254 GT 1 -2956236607118098893950626752607400505.2788737229782490319276941905603214 2.3644741912524275692916905372999519 0.0865774340564615787820980768271099 1.0905566731022782068907315749805090 GT 1 -7426479629.1818487557875570725566693083647701 0.9047091549137464445351810446572295 0.0284024150984935245492065091167263 1.0288135675493595592673424154913388 GT 1 -138581216684244.5318837207288834334405560188307997 0.0643450635197581368001522503281431 0.0409632395448084039717322614311532 1.0418258727632896260642253536215146 GT 1 -3149921166174.3575276791099884902613583092605714 1.3878380227381857179271817957333058 0.0796924289578152587384380273342488 1.0830473484601091550909414297974934 GT 1 -3187182528566787048544909525515648.1007106848809324666794265520628460 1.6051072316318368250429211921034081 0.0379049229864236741729961001394853 1.0386420005456103376533064894946758 GT 1 -377261089784355257167197690027610713.3612940095735318490464251602478317 0.6409084105796276786904902800683810 0.0070696948113119442183134074258340 1.0070948035142357398948994909428309 GT 1 -5365419109591179747818244808625915462108.0490327041117720986797338350683336 1.1321558177686659008201603969198293 0.0437988889372898982785206427960503 1.0447870208344086879428767105538764 GT 1 -21106963015112037590.7331338857014246771357363558010454 0.5484702822781736184540783046692986 0.0458618823264635369649599316008812 1.0469468405775192125438446851593956 GT 1 -1240333.9635809800848451885745930280996758 0.9557768611539765821375893508561365 0.0408948329329131533573750308447999 1.0417545468504958690427238104307220 GT 1 -6.9104581810666342452587687432551263 0.0581308843796777534108797213970340 0.0870497391157771700413717795458703 1.0910738786398402933800779822526249 GT 1 -171858186280768926648.7166747094068004396055410398761656 0.7067971869038459792773921323504651 0.0202884186251219668055394283041748 1.0204970553531645930518227669030253 GT 1 -10984376091156516419488.3823525306929445041023847447374310 0.0830050883751863277219108499285238 0.0595560792961039333016592527133443 1.0614032591279138044372058767258114 GT 1 -82887420651712164409916732770776224232.7624368355510971548527177956708319 0.6635558761780476405532022492672996 0.0609534555831896209469943821153320 1.0628902329333096445967751164994406 GT 1 -77216045296555239297946987819502360120.5563430821703227876961652306203437 0.0397972044293810505261366751613306 0.0188699257221610733128245698022861 1.0190502346511311045528554286504840 GT 1 -1519172695770147.4169071566497865686044130290368140 1.1121645968437339113787796731774535 0.0399109117235635643296156714308274 1.0407291985379808544374744665001560 GT 1 -1117.8939339335136083179116948293583660 1.8318217299999751422240688558734026 0.0946941091873948469558137942564365 1.0994823914937398456990425746350665 GT 1 -41594596099824.9337650902175426204476072922988815 2.7343454155485984535179186901737231 0.0900598196648698880612639785162317 1.0943764175274014092126756361727594 LT 1 -109488209587083456922.1864471248061860951635743356254983 2.5313138627191058211138958174157945 0.0968350843568643498578043691624502 1.1070368340028118987494310118218034 LT 2 -3211169424244621931926072052065.0331619938317820817029008040372390 0.0372464348111475045005176421516557 0.0278083343951230755729140496943769 1.0282023071241737101939924073759800 GT 1 -5535833984982137373407061.3436563356657332929938661780365544 0.4882234378976346991071452922874251 0.0777065434849149841535455186985401 1.0808918235123680967196225736207523 GT 1 -5202475796447174683629.6990468422528292181336352442368733 1.3831555382179868617221278778133493 0.0459374501465921126572944709297025 1.0470260437991238006023923550405638 GT 1 -20749584175737455428195262599373.8523207572536927681233108899408285 1.7157295047168751397229671940131291 0.0759983220208279273944919755359156 1.0790413913473268388197654475899918 GT 1 -108349268283540636488933440443030304.6041345668737499136510779980647945 1.9771256633222012860939131147276325 0.0972525594944663112201584955170600 1.1023124540481586044381228131070967 GT 1 -7058302617593711949609862.3744668242612149842316908323375527 1.7508294941003604107476801803077120 0.0688222052520347843165374329959325 1.0713050481355376727575595315134290 GT 1 -240022869466309292955834.6036034394507169354260262979628124 0.1119982804197412099931950349035125 0.0516419313094522469918808442049240 1.0530231384522399014245230198287878 GT 1 -718122148665464678266166.9806801141812732694922366607090664 0.9195577882487242792075767047523425 0.0923772246657343212494048340622149 1.0969264323694119465945902380471264 GT 1 -641153195412958914245111901701311983309.5683791310914985499405511105444855 0.2528574084868375220913328846955101 0.0506354295581025053412203458938092 1.0519623914020968249848147025561874 GT 1 -7998118058559.9954683474991836204544214530207122 0.2316711740825142384252971737749051 0.0645243942198715418840863545306735 1.0667002097382551709177063566475678 GT 1 -4448537149349124513427076717148191.5193115746888734394850787475831406 0.2036901780181648263619652072630354 0.0172804996590805183964392885064301 1.0174315501748190596850843609116793 GT 1 -350459227508.9114557452942971371363644652141874 2.4683753488452448277857864615357999 0.0739727812630387027173450830122006 1.0768516508835419751103208003178011 GT 1 -92063021112364594588007.8388499895627237317182147362446112 0.4596056714189637793376016328563302 0.0334233310622369650897119040596502 1.0339946571087234923361262653068580 GT 1 -745218859445477261449199674727.2522926911679463256982923025805148 1.2635762452045087102850666575712807 0.0099940497796875667557205624238414 1.0100443255480154510189234784295315 GT 1 -3910735709.0191580629538737547357980039440443 0.4747427783539717795394718984546267 0.0431714238889039425593359397764002 1.0441310298949120343207379551578447 GT 1 -3924646144404969236479928860.3752057438596533972504144823676201 1.3494158557347336859355081399973708 0.0975804032292028951226645176006398 1.1026756821944422162231370834248768 GT 1 -430852647557128325350668387165507002332259.8794984784649536934184636793568302 0.9290911811225675176188981482989010 0.0993046816211096670838609158113854 1.1045882379644801851741920635533446 GT 1 -9584487150320.6089167071033629137813615511897922 3.9832128598183517712988665837984618 0.0759679842646818440595554632850321 1.0790085588765207133559612685197779 LT 1 -8537528626801499619524686760106603537.4460729348493318481086510939954664 0.0738256455243364040725324809842291 0.0713467207938215490654522458507163 1.0740198292010031238934105182393045 GT 1 -4482957901451910933503265379282636793378921.8537868410075443935062235467915610 0.4742379359945510756001295566588732 0.0769520037187537363921436850254330 1.0800740455265450266024136517167706 GT 1 -6153956221668241082087911005677053638316.2505150226833332297206577790565923 2.9120145311009689973790470929021476 0.0890039039940640740633077512448169 1.0932166671255038404516074590507316 LT 1 -21562393561769883399149680955038269.5974202822525178670123522000612582 0.2403451817248174873934662931611364 0.0757953690397576675773808004271271 1.0788217697813746190824732919845273 GT 1 -447845678581838555462841974144.9400927752203099284841768169942941 0.1497453584956725449578303274762131 0.0461626129597107646666546883616277 1.0472620758989314934334217131129288 GT 1 -504274.3410533176854034871344415877366758 0.5308612411890096389904930809839288 0.0629567309081094573660868982163143 1.0650258194834436023925919997259591 GT 1 -3467188987856847116595947315.4577947634399073494761178643035808 0.6113752490369986536032401160790897 0.0509630496144374293999743061668966 1.0523075450021051090705707413488270 GT 1 -6092692723187.8662525344609865912719775107521711 0.2684821982015716040957535643063002 0.0616235619588357696236431092832293 1.0636040906098845925101950341414798 GT 1 -45278089756813495417.0552425946142064596988069461521931 4.4126293597497161516164060004364987 0.0942950516731932693280524656432951 1.0990416900776733582596800424042637 LT 1 -18252948138.6365522680318432113024176002499190 0.5219940472692710289751875915539152 0.0521062478406328237049363413424299 1.0535128587893331728533701806881712 GT 1 -1.5599775172966948952911493155481436 2.3345683545335538298609624218295641 0.0725889822222450973206191468002868 1.0753584268087875493415898817013870 GT 1 -733606388327.0661984264589048915975541903486989 0.7940539035176245020897778711012643 0.0446166109575057089285452864688330 1.0456425645679436572717301949105662 GT 1 -29354754490.3371450717767943623925180557494096 0.3378518262811789222078095768126866 0.0847817847540856189931431441403427 1.0885927555324694601406769965684136 GT 1 -126287207.4187750549994682929869460764354469 0.4546975700013400494937132563975735 0.0157613017322592092551671101276667 1.0158868318071560345518776497264132 GT 1 -12.7955984129138048911136802733546513 0.0566913348681503439776867788521692 0.0069018120015964176713106853966892 1.0069257396657649733828569832122726 GT 1 -17335872061558601006556483974213.7033678328465168636402947262045186 0.9832522932850372028322607720143452 0.0755851622402572405149290461171295 1.0785943494777769630862671217150633 GT 1 -2439072242397584230557027372581254812.9189873163492703769538725184734818 0.9339007251903836926193943411992756 0.0052182801364557546694287928471319 1.0052319429117664952424418737766849 GT 1 -1112.1452483385348438729026069342252835 0.0422819294473504229454686270858738 0.0217527152854653245597672865475706 1.0219927935514503002577818020434467 GT 1 -2623687619025.0124498146906760537997880834345640 1.7883809808221572525409678708811462 0.0824578003736562570512113764390727 1.0860567059679559423922219031495422 GT 1 -646.8190468613071937454030723088034046 0.7192513897137872434057611208008063 0.0831508335076784223663375003019048 1.0868123060866606071567348109018501 GT 1 -39653112649270065197191.4250264399784496234508443321559223 0.0997134499992077738837329113246491 0.0937900639195160089430635516924601 1.0984842822533896344074169492219437 GT 1 -5244747050.7913615565055765455202243341247961 0.4712449868847760630968649849082809 0.0595855729514849871890125089214552 1.0614346210382019615967813759937595 GT 1 -58336314480.3869279482400976200863375576306884 0.5037744783336170988163646927242453 0.0001838261918587009568348049339120 1.0001838430899640155524262862022905 GT 1 -8160811395849003403384183007052888637.8251244166813833364392811387274299 0.0386525014519275377364330852240336 0.0642873259462244939565847787216817 1.0664468217949141467618942819321900 GT 1 -153331128161612095358292999308083.5303932185048882646345875040751545 0.7665112352853889932367088440572992 0.0277749935391634810937700785148140 1.0281680131825079648970478810555783 GT 1 -7868106086268558.7108744005415413158604557116300144 2.0102666270468279026160788581860949 0.0149524076118413123376338285654100 1.0150653218319450701380040289891007 GT 1 -360171252981692142300643986505766769921.2667949848736616788777551310508931 2.6951693119194384935272715190895568 0.0161642486055114932605768850649026 1.0162963151770070455776935562982387 GT 1 -347327936667.4862194239599263696136710098161813 0.4607763809119369706815839983119550 0.0825864553313170788818622054465860 1.0861969327372081541169753507979275 GT 1 -210128318314730691684313036982689681472546.7738773940144086967836152372232357 0.0612671415610662153089175327608423 0.0959066159913273373844243255766106 1.1008226230305811416331986052670097 GT 1 -983797098.1672329031963006149344722947531631 1.1396547149316927464173617218859053 0.0579635179796929520829246396131863 1.0597112768963443601698114005044451 GT 1 -5.8742303256961666746585742280435589 0.2033374669918989991438358239890941 0.0048594332034429085117180652485095 1.0048712786392888000351731031542443 GT 1 -47449060375293659547.9599464892442399242155875830888802 0.8740437936258856071581639931075235 0.0045244811958725989428707970549332 1.0045347476395099736998947333947860 GT 1 -422515171880846813867083950775714831393689.1816950923364155908941221578478105 1.2402427676363726719616454937930179 0.0722236130466049748324191977548195 1.0749645375667279833943055035777600 GT 1 -188894238826008701.7722092689752568966540429770540691 0.6931840209255719287312714555238494 0.0337117461645548877248171974940185 1.0342930898662952796472057915409629 GT 1 -457727920156702768.9234829096036310285038643669743813 0.2998275132234293212179291550358447 0.0500992040423104253035969308107565 1.0513977251479477649361373298277612 GT 1 -88509012980902.8752069223642293520753796667175007 1.5785290821538549210523354429318378 0.0461359895697515917802777523168298 1.0472341644134168297368167786728308 GT 1 -1043178042699302345.2169507608900947047134834283027039 0.0133921368658627691045057821728047 0.0957257778938852132202356193969461 1.1006226215514201088089742316896907 GT 1 -44137963.6724018769663439591731935757875444 0.3728096989161618754633790346679779 0.0043953732090456389348353310080694 1.0044050612606933903591346767372186 GT 1 -122493738375.1629717476142434361459067353735536 0.1575303904739942875571492800890992 0.0118604635705669001091029266861131 1.0119313600025771443918001214590668 GT 1 -1337473065240035176341301392984575385426704.2897985096474596404863988222996082 0.3526344231362660149173072252411614 0.0561632781712387229752862946130830 1.0578020919611103122420214474862021 GT 1 -3976822566579333280824814850869881151571570.2484310688956363103616956558946224 0.2882110508181840934716760290802305 0.0885405160819747845818535933158572 1.0927081357492880276296462026180811 GT 1 -12503466298277.1677166781608720059867908561220163 0.5404801597211985820789303381047559 0.0604910249094926302318381947440372 1.0623979071242126838961298754562666 GT 1 -33976.1967091617598101856361051988806943 0.4345260073904704639591377232940337 0.0570890671625173497199920941281111 1.0587834516710733483326631364976515 GT 1 -20720466151836297433638096107243346664.0463929319888708172851831518876749 0.2393016886096425542346695327563775 0.0847104815554666162228840070175261 1.0885148501542591064790257363572213 GT 1 -37093254.9507591849346143634763530077231535 0.6708760833086214060856249332002184 0.0927877021137368859985947881180096 1.0973787902294281018940719526456892 GT 1 -45736634230.8396249206644262793954447686283648 1.7085856529462023484467794199250002 0.0084306353735389000495463068833045 1.0084663741889786852715240903365396 GT 1 -3133494.7484353525238983005441077505479754 0.1591150092600061320205583682896671 0.0908359367936099953562494899280437 1.0952297135147945662429601100621041 GT 1 -5725809022089287228659439522793389845826762.5283822955751543033291759633680990 0.4814635981480883817846981060204305 0.0967502158558382350666303312913864 1.1017561479312643106379656295070461 GT 1 -29401731034.4945819362631782890456968606283617 1.6438709556425355552945192629265755 0.0493644190882138814854669541921496 1.0506244855513266318580215060446149 GT 1 -846448124149247659647652995319.9484273200133182893518097464926076 0.0721218636284561014532381832239173 0.0295190745221340526122426132044535 1.0299635308909339649243461321760808 GT 1 -18139259950095198477.1520535831743338393445567687781413 1.1189794526473739763163046264925703 0.0981185615254245149484276310809814 1.1032722104917359000704981839410157 GT 1 -438274953217563.3724191899332625687846304691799411 4.6923718562243495361614460072189447 0.0877005811867396509562542731015400 1.0917870326875151238843939918752901 LT 1 -56795325709878296892943237714.2023080621758191546592843402680460 3.1507871517305904397089448011695435 0.0866326869262951612019248274377609 1.0906171648648887545810067255644065 LT 1 -33299173402814113433984606758244099.6497601267847247912641490929560271 0.2823421772242832173697674186957448 0.0763617000803394515666785217876836 1.0794347342805208670133511431578822 GT 1 -2.5913331824917368632445649245722362 3.8502322614418868475109758441439480 0.0969843569254220252811267643364394 1.1020154022660558003247702109875495 LT 1 -59399115132.8495560679960923303873216940070205 1.0770802233309108044945806530384373 0.0340183445974092412402625864735527 1.0346104352164056422992272938199582 GT 1 -17803695230985939488.8581317324292143415334207290672157 2.2004384567043112829620478631165926 0.0499590005240396434354593435266583 1.0512501379756857075852566291283886 GT 1 -66387952799704868412441989351264630041.1974889867576713010098746022959608 1.9467885327285933752714164808238810 0.0632636362381774530962380189636353 1.0653533983805896191880558512301209 GT 1 -5570.1827926508936294768844488631598739 2.6005926866771112952048117992960174 0.0453069582502165088943220034250569 1.0463654124201459296428458050441604 GT 1 -87234688190341882590098995032098868.2868854616944094563944071929117363 0.2050414092948505920805329019146876 0.0692734821843095074854958988447770 1.0717897958619019002831263789976817 GT 1 -38716925594.6559080298703177128410979690107459 3.6737179007846187861890207495715571 0.0134097237943316275340088800171476 1.0135004460939629253660213935284923 GT 1 -227626059126678230206631747885073973815343.8719935186702802873893103087410916 1.9307244226939853949542687774666386 0.0465478731737548761629984632377762 1.0476660630403516918118590160679531 GT 1 -8521942057876783564077596677385291773.5113448318383975864698677357204542 0.0070471990817475419723165164436529 0.0479830494096057108002550297056645 1.0491724391072723704426113086416519 GT 1 -112.4626759800134934979655840205875885 1.9847435589641783582909755900863163 0.0092659384982717187151054955236914 1.0093091343468455922349944233281438 GT 1 -22391737052983584277737953229053.4371051341085611941417862307192232 3.6011445127365548636173910783195047 0.0741707811577193066983822139738422 1.0770654902410830275005732854157403 LT 1 -202648234797536250.4252708602733157617246871966497809 1.8551823793493138239196244701951152 0.0641432928651057755104942090736602 1.0662929048919654668373036445092274 GT 1 -1003641572.6226484907885122125914287442643497 0.5592899170609193223055112144625192 0.0864160586669170825586478971017981 1.0903800175848277314504661481878094 GT 1 -62415549073260437092961024665.2214793536019651683850462873344534 0.3755645595752364877194324319261821 0.0170904655647033544054424800539501 1.0172381931459930531548326617356725 GT 1 -351805339887.4222199266353824004517520697325607 0.0178529375159017465070958462341093 0.0640384803113466626998757792870803 1.0661809147933900051522887423881216 GT 1 -93415759973710541252452308508218.0850200750131546279105967596462032 1.6399742915046580998164750142968458 0.0442449753178687145844805183326305 1.0452536491009607798558533564921790 GT 1 -653540061295.7093971387789829811437353407870027 1.0915436916857299907289052181026157 0.0165677600678400852604080106176420 1.0167065403926526418597284055870541 GT 1 -869322199212459677836741602.9807492117193488086695439975051342 3.7298386835955728424707020164107047 0.0682862058776433608650826422361063 1.0707295993092241431939345038880339 LT 1 -2468949905094283976984882702928160976626685.8060896178821510620912550515350730 0.0693245291831031501193497130801464 0.0791163743069700514337991309649187 1.0824216071784183136911895277646694 GT 1 -19220879246131147.4269280695009250201665311985863701 0.9857348905622168880388853910852172 0.0508948308462935176585838924949744 1.0522356654863712268689881215911150 GT 1 -493881340727401506021481661036823.8253485868038083253385067670410221 2.9885089832019014686942198197517589 0.0947126273628998147835738442702192 1.0995028468614686872758016373056516 LT 1 -2224383719448250696777941564016996977.6575054785245263002720260914635114 1.4703770179903116937618664409732832 0.0684978486945835503288432443243524 1.0709567794365408976270378291013715 GT 1 -184278843864793033594631359953531003.2432669802325110755977923599842303 0.1626513453169652841429832768295812 0.0164079005686458227142767783828779 1.0165440009706972079688504187903984 GT 1 -10389929736777310921334119153443.7350387269499982561422906532673064 0.2927011309632229700244618282372941 0.0848594195574290604818979122331603 1.0886775856800589608459049032823785 GT 1 -2065795787753743305816766237409144421.0194445604124929159923237581264506 4.2984694591901902543633463693498829 0.0936971552703466569206331332925041 1.0983817630874732444537329686374051 LT 1 -114405629018067449676615289385185996.1361064970851779906065751948780610 2.6873457666735975075865488737668890 0.0037977612557122146162758288578732 1.0038049910615123198464425162260492 GT 1 -1324005165954238897372149376093071646442.7399397389603722885516004963321147 0.9951322211765609255238514935143673 0.0139321442691531604057650175772755 1.0140301075477922908726061539869343 GT 1 -1.7814357167260428440375378643519896 1.1114008599507850455356966887113562 0.0741956196349241213384159313767958 1.0770923189584026281998456031814857 GT 1 -1015261212.2753042144427270707857650071665308 0.2131138778056920957851867502435210 0.0085042025950627790674165978922034 1.0085405696546307241657136936806820 GT 1 -54314460619802639473752811827389848.0007607542239466805601910956747612 0.3741086941484817677156506367530199 0.0323946040409331776111807629887479 1.0329309236195376907854778079638496 GT 1 -51383255104374340153984697470716.3346826430862396865826391793643635 0.4406423778335125355077759925583488 0.0772220200757725580989701837970052 1.0803666152080054132106785938218585 GT 1 -213674727548692093112427586.1705413979282514584579738878736049 0.1002562618548105855619125626896822 0.0225574805117513931545340602755480 1.0228157924441997929006443121226823 GT 1 -491519728.9227247747831669729373456030106746 0.3564765181236960287055596035792494 0.0495431213078782328783980026105238 1.0508124850558093531066133494371069 GT 1 -13.9347536853670302393784276201669819 1.0335870930912688657023168738872815 0.0493596081256311724116563174496382 1.0506194247788227125100019777683482 GT 1 -3960586562517236233911112.3896525077781593595517694456216546 1.7760262823805109429422025687425333 0.0656329851695996163033148615363579 1.0678859684405123664173160087106929 GT 1 -617316050098499213114515.5439454477025179596842399082236425 0.2818369853626616101426191894871401 0.0189309780977526477425637952297230 1.0191124631739452570715358802513987 GT 1 -5375389608.2991982602552302996043889983741877 0.8341984317622582941853390703192682 0.0811498655931130888901479866032311 1.0846322445634254803166484786479252 GT 1 -274201772728669703310358560517854097940.7475559211287487184835123728001409 0.8265907503409887838989553957485714 0.0347448667805241047957742507224385 1.0353628258312368903837348270161119 GT 1 -10100.9025828608355991690406301246486020 4.3386219083489624053733388105808882 0.0946851699979673589590841688416925 1.0994725173226063808278420687845349 LT 1 -1672927611231.2124753429907954877588243159989095 2.8702306625237929905245135296090712 0.0620332751312775499234525791049384 1.0660914175214405278134604507351183 LT 2 -9629505952383546127640.2890159970049536978044033809756411 0.4205231597679145292102729185508920 0.0276852026156984500893846408014895 1.0280756613331384677231213291021708 GT 1 -17605447994149610317984819556171620.9020591680492526225156188140588502 0.5763807812243761450958392420956310 0.0948757433042012630751206736133548 1.0996830444906707643462648759148182 GT 1 -33.8838062068500416833441318724704777 2.1966813895191006494883968222016781 0.0980736009909493705471095040432333 1.1032223597997163146458600506249264 GT 1 -48502069221581358912333291166433115625.3924436175359082874340863089179310 0.1884141638118350907743825941187777 0.0239085310019062563306195014596276 1.0241989787245722754654386610753899 GT 1 -457153137618.5612574614408518207255254274077692 0.5678675000446959945294673826126054 0.0987015693801903594403171633946483 1.1039188546619306130210500834999510 GT 1 -2145032.0176171355172862822137791108839778 0.2128544557235868998334535910010919 0.0871617853486432134240618751032873 1.0911966160045548288247121929266894 GT 1 -478948773879764225701971923429.3334486107696191121436218926759598 0.5830390718852242601923556803999593 0.0300402756839463921030149489647063 1.0305007296703986412734653319832095 GT 1 -87581557563.1475146803787516372194815829445923 0.5897164572962780012684548418601818 0.0313576393041689203146389650027396 1.0318598160277120014602486741634535 GT 1 -8479244327654615926713726654.0966651956568419427307402067402545 0.1167853514435435542556814693834848 0.0870607345276711220671635872270320 1.0910859225359636536955210572216418 GT 1 -1402658029614455949001663439.0758080500238739618588026041757043 0.1685296656128757051496778357006276 0.0743731317855772802742765606744378 1.0772840756345776579535658283914665 GT 1 -10221597197210295636666001.7287620004174198811782217546056325 1.6003403704936651243652844934213788 0.0954978829903412113781979330421281 1.1003706336192235682911696981182486 GT 1 -3794529383137594021658561340102.1093522628085108544536043550530180 0.9731864243054083387148065439442537 0.0375290656431333722566961240549671 1.0382514113469566016373846631439043 GT 1 -11606636540511317383.2921748325737202187377538494080310 1.2041062069957502308886659051354298 0.0605084871758750735494291685878207 1.0624164938850946101735869409647415 GT 1 -152749884590199132744602500698594445747.0105460477474882851240535361245730 0.4101519468290812950536283598135786 0.0058907037217135941844591974668745 1.0059081223559098247820990318446488 GT 1 -1148569132970322999439063941379305364729693.9037305926517299321912305602112125 0.1697502038988468324735165167659305 0.0551579516307114974134471866064436 1.0567375100413702796557935329344340 GT 1 -326294767217141160129.3795136796363362541883025928491568 2.0211457074416884920296184349805326 0.0316351255725626065750743267514495 1.0321463263362542636769619322557927 GT 1 -848474218475097116210855432454119.4064842729530062618778629452677586 1.8612868581110443891861566613997980 0.0654063514722991098340862844349324 1.0676434446647533435232742341957667 GT 1 -6079123578090121377801937839429841768.6585044060416487719526285687405097 0.6683071445393317263629792469987893 0.0951171587349197105646747761836446 1.0999498008281702072607779700043690 GT 1 -8764.5157542536042621630008175475332673 2.6002984811382489409580954703299921 0.0229145134929857115473989045549281 1.0231811317835291341130403890553926 GT 1 -18429363489591467508767546862513404.8477982956109828427532933331424837 2.3512680958489365933787835491970518 0.0838231850382232343398114122539363 1.0875459035015368161595933788583906 GT 1 -4.1825650140285785856038069818687474 1.3850400504591464559968088416790230 0.0743204406510667431546242757919318 1.0772271524437538507910337736585989 GT 1 -290707489048180027833698.7396122944765665613354500671612962 1.4763620900671649327560387634810606 0.0698800042382655715116657045018857 1.0724416734574035534140333443152251 GT 1 -13940643529255922712190906892479314101286.8688938839040416315525899082062247 2.1476109043261111761101080437896673 0.0064083918634525135383731128974148 1.0064290137559130771449964783095990 GT 1 -110017.1451849150879100926095084724562141 0.7292962087457411196739817186473752 0.0988050358861735532853006391993078 1.1040336584181042920984740037220467 GT 1 -95.1532695733147900125171908238636299 0.1582116325123024498395076296701100 0.0172641909666690160518184708038051 1.0174149548420896994872535411334062 GT 1 -271024523242225591364280826.5963528413539672156714089510001801 0.3891991902954388715266697082451179 0.0793452111883489982499601260934728 1.0826701351273922821690663493488604 GT 1 -238280975055784409919381.9693772699861580471481030439483758 0.2751204439201424005751821676874361 0.0744978135057905187797442355279010 1.0774187844708790878877445977597466 GT 1 -144998754422364173283205455485.4125871036353336974091604706487377 1.6489804997629044972616581152122859 0.0191838174364606481585014640283737 1.0193702145852228052544482783454884 GT 1 -1566034767338763910148563482080428370.7251793421272034672427088186329315 0.2849004756327010889420707231283726 0.0285088457112563322223774973123244 1.0289231154158286923135297330407106 GT 1 -2441345865236220726117049037754274215825073.3403515157426529995060348600257318 1.7696409909196700089058951103943979 0.0266063283448857759099065475543845 1.0269666828828211679109402811435778 GT 1 -322590744422300030352.8341169504462386919542257694863743 0.6478854500981996471386245255741383 0.0775043452571352384803060570606874 1.0806726133843859824804924009456193 GT 1 -42182937214311188785.5548502459937031049644690769540546 1.5452771565722180677266449468956815 0.0121032859168224568595815625841583 1.0121771271006400476592525289007132 GT 1 -25972967424.0587854930118751093063084112552501 0.0737259380939339187217870083033953 0.0529443475557771085898557808472663 1.0543974204222250569201867121242939 GT 1 -628412572227703656750355745868869817.8749529062754399644706371179462038 0.1591759118205207210139321282357223 0.0534401268324887715469281083427141 1.0549210528928446502444039151370976 GT 1 -14539234612171476264207523265546467725.6879625188404488027959229475374611 0.2040281245202542079410308085492104 0.0000997787932703025281227398694317 1.0000997837715052467041816198660289 GT 1 -10253679784059585797260793781149020568544.7658621545920878253163015108728339 0.1120402353265964249258327538849109 0.0140626833915917528701541122126343 1.0141624998198413685601603775022808 GT 1 -1672090703193.8250423911869874043907380178972720 1.4429215103318931632526155317527333 0.0379299312386492889365770258563193 1.0386679944186226785149287166158430 GT 1 -36307661278751512.9787837932964328363074404783441460 0.2385001962241492910345855256115081 0.0720455470989465731243009441709609 1.0747726283260334981873776728850160 GT 1 -119959160464581060612614889232666297987913.3575970241630851059642524599367536 0.3505400872684308782777447625367717 0.0504001182451323735485264508521358 1.0517145602076768073089625807449839 GT 1 -13609277965.6753073190998656081284197772613035 1.8574844085957103448703968784663148 0.0055069508687315664753895553981878 1.0055221700224717185423797497738567 GT 1 -11596.2176032792303275055090183280454848 1.7018828678085027836638359779241156 0.0688759059343424498875819426329803 1.0713627194321680590054479696383623 GT 1 -250194150416.2422058147191312199051066572191185 1.0089054553735564996881491580231088 0.0471100883297160833575825080552534 1.0482558996603367410147750901712253 GT 1 -37486306920848511184012756201.6058212018620548370598850281464804 0.1542159950356004163592271061665825 0.0293589836110185414886616591843742 1.0297985841062672397656489886661474 GT 1 -15577860115491741.0918397569250156453901835494940249 0.7703775491890594403709305071841794 0.0493287594834538555252448929891583 1.0505869749250959655524536918365310 GT 1 -712163109585208.7053512413917970401225911922620172 0.6666896879065777209812926939069836 0.0827227341847902379308748969425412 1.0863454905791563013377972037026866 GT 1 -226384113037560033732378975387689.6239676739368294239746640049435442 0.0636551852311294111601436313402296 0.0685009882823569789034212595198929 1.0709601498990352280035615776444526 GT 1 -312603765.7332313283122715029589730588393501 1.6263280964658577577457312240460401 0.0224189990960635512000611866970950 1.0226741251808906867574807674738836 GT 1 -5735778559305208.1184841697533157028061735235207043 1.2772230117142928890471886000992236 0.0718405360746606257777813749068548 1.0745517248316292741392718672403855 GT 1 -67150217388366187428917326485796114603.1451963414104482373343930621363416 1.0287008106552494107703526395439315 0.0792597375626349334014553690778949 1.0825772993986142821796827773882806 GT 1 -86315333540506306214897371810180.5473069040405622803153319860246976 0.0203505830105483013353817825619216 0.0169679791672193494742839293774732 1.0171135847645136837722992775840865 GT 1 -12297080092758599752428957067213094709.3283087829190032140360633555719971 1.2223181590163041207716751411216127 0.0537743761428874329612982981616201 1.0552742353473790370852200484929087 GT 1 -1307439833739714310826.7710618427539025104142089560072884 3.0734709900783611073603762193933585 0.0775903891160946468377139370886659 1.0807658906497555548330761764756652 LT 1 -13440.7235304910246669832804980583497588 0.1695250378454658304185503412269041 0.0332167747692810608665233885653986 1.0337809811197213056859004960642059 GT 1 -2713644605872543777120048257494592573.9375627899637700569574232429032931 2.7695701869101566687090127340888606 0.0926567316541009246808267633948441 1.0972344348155728505908063586154705 LT 1 -90135252358507.1540649645149032916877194999660802 0.1503402960236531072774854167078713 0.0324290436084657742546775206510164 1.0329665168278718044355621324156713 GT 1 -66004627488883.2493898349045252087254999410502552 2.3415420371668072529153283862023428 0.0870806386762062261790344430018993 1.0911077250438290286226233575657173 GT 1 -4586533728553597163732161629132644886143.8062831579517371145414221465264136 0.4697942618313245358854697279575494 0.0703715822214702398491325352220910 1.0729703234522890046284830426426871 GT 1 -282387863.4312990060253163069980808853213919 0.2617575954525278477408629180562311 0.0288372810607662657031034743974143 1.0292612460083808541624389555763447 GT 1 -19100727113300298830819184172642813529092180.4159184745600152347543444129301453 0.4025811292149721994318515514384844 0.0325250045382868654177274720188725 1.0330656988961920439040313954588195 GT 1 -413.1314323962946259033616693151513391 2.2540846042294964641639990826268522 0.0694998835673425887485530812078848 1.0720330777707073413134515582649873 GT 1 -88051186834761525051801920.1616648409447459958891180244889506 0.2386485951245536185288971026093999 0.0940249900077213517360579392359807 1.0987435561095492861317674831411876 GT 1 -19894444932718015974254304.0248146051239317687961261660700845 1.1572958233945576170609489154679980 0.0589674176346219277291591822785696 1.0607775147407481389870287045328667 GT 1 -178749783.6203760472456442147759305193312988 0.2327453705503098653924224916956053 0.0934807304764681006913063595199927 1.0981429919546575538372902815622491 GT 1 -46.0811766243903989495396536050298894 0.5126928866286256910424815348663978 0.0346439099416560440886392033054588 1.0352582404670342751081660645985435 GT 1 -11875.1157617112682003496985561021704101 0.1447536697094643693991202322695889 0.0156764355461464940918246213602635 1.0158006103167085230409044746857922 GT 1 -6797596731.0282312917399638184553166697141063 1.7988135558961792806704227602835019 0.0040114536948282108670220421121738 1.0040195211572634231004951101340504 GT 1 -1037993702716570124807579758625.6633814365025317489761242224307812 1.4706603818418450541722684054217289 0.0173478287019174776401857520558972 1.0175000655033290607534835779179104 GT 1 -212474758992.4607492187702259954981860791008397 1.8366336580379138738249983969055736 0.0369441641827895600405764447929003 1.0376438877462529942146785188776852 GT 1 -91523260686608696.7849031257101181765790021739259389 0.6501980227189119092847102978485596 0.0217361990858968803994485382466939 1.0219759102332926321267930197073097 GT 1 -6385935216742972477817.2279956799332024619679199450419815 0.7260150532616225816626658862112868 0.0594363865316158480246826851190193 1.0612759946034765826812184472963362 GT 1 -1012396.5092848876877603961035252783031296 0.0327653460261177610834077921642570 0.0272268116832603703605682082947554 1.0276043295020912758220591453980435 GT 1 -3670803768288441950664501.0909388851841317807372747413898653 0.7453540712930111947984028357874698 0.0842072503806260564267081863384917 1.0879651957817744324728438330883836 GT 1 -340886627109073491966.5188725917552139800719677675818938 0.9201804402364834288812330295899625 0.0785575484239211886117515668064814 1.0818149546351119598337553348183788 GT 1 -27494958436468698762637.3543662485441500406035770943571599 4.5153883651373097209852934812241019 0.0305404378336362349318892976895124 1.0310165151575950426948238022227995 LT 1 -218421444028.1995212084230561989447585382521719 0.7473332962255284847324388575307527 0.0680363730783679919295279690006422 1.0704614919662356241770945788113681 GT 1 -1615956140277359949121582660774047.4338168988051249554252355120696077 2.1098089557907878103711040360134379 0.0066007488745599972284108695685563 1.0066226301591408621197086928066573 GT 1 -1386910139144525229626343.7099038534669907261259544223697813 0.7594736201475033986421917465343447 0.0736299555947987663257332395317676 1.0764815081728228940207596016181910 GT 1 -15944198187542788445578683926567213771876776.2854955187412600337567370833026305 4.3774343181238286172050311101566431 0.0221698743234705058984110480310289 1.0224193196614226760570969957972373 LT 1 -115967536634199949784324789422957682.4943895917880312403777236443298471 1.9006930916085422983837891995995507 0.0434598163065287737902406670473657 1.0444324798044821985329780335102390 GT 1 -145790542548757792647388.9200694118943070609520634047335382 1.1243633422320876396012922609046341 0.0711074577671336255280158144485208 1.0737622172215303710991635400669025 GT 1 -673968962.4223183254734747809719469118219497 0.2380448020611380511002149927038138 0.0583627083262152834037371812434613 1.0601351192389761547325819458841360 GT 1 -8392923.2340089348190358526104613001379941 0.3302825442149847293187014099238433 0.0152399339649870355792008646487500 1.0153572552640832382890025035733319 GT 1 -70269887474906136279746838473.3501507207286445603201190656305153 0.3794911113391418085220834766609394 0.0812980475674044985525632921710149 1.0847935264946141458485040472146448 GT 1 -573697460004846541322.8774422982845076244512726538347023 0.6686325425963750959411600959823703 0.0251074034038898952247316074650424 1.0254279713893779378964632886613485 GT 1 -21634413612588175727512114842192107298787.4656322890343944404382759745961874 0.2829386233716167061137972140003573 0.0157854411110260751775113553720709 1.0159113580474213924715937704448063 GT 1 -1680415027231615798952274546157185.2474852552684917858726635416752499 1.9252848532171793721897241454705592 0.0772416387236725230419523707819340 1.0803878758545315516771171929423381 GT 1 -213550019.8494301591135393048407407837563827 1.0419296955557294691586940608020862 0.0990847781869312558896042878373484 1.1043441192380799088678890060148082 GT 1 -8878316452814968990.2115518649304328519277260038600409 0.6545691543629273812851098805308960 0.0385316414685316879363187257838140 1.0392936229384080404283009100909916 GT 1 -7923701432930686900766.2783304240418407068420922174527311 0.4501876734459150021773363911851029 0.0425255590927113024787737691286144 1.0434562518530269430617575656750940 GT 1 -4091735271187425020262725883279494761387581.6062941650143419474253205674442889 1.3606893923852426693181937805412504 0.0995206412500917094566557249747320 1.1048280366167254689145457372729963 GT 1 -33210826262197287717790120170664782375.3462536233552026523270722172482306 0.0024838441412171578522808925028206 0.0118973251051457668823249117844260 1.0119686646754273822665171660405671 GT 1 -212559.0713503320935029394539074968356214 0.3473011907368676356435724602860034 0.0830406793048931301971147325490942 1.0866921690018042419556598704328406 GT 1 -92558432779274087801975648494746744.2139611473844749160951926900322726 1.2136505932152752821858292224665123 0.0688116518026538558810148414722296 1.0712937147579190792037934315609279 GT 1 -27682460298535.9132665089313442499232364042900539 0.3374726675557466860459510263913919 0.0934535747056321292947188897186800 1.0981130363155258680712395521945946 GT 1 -52505613960041941668523769905683882.7569487712563403400833811352337776 1.0795953274806320627027636269312495 0.0748101591072671855237015383211936 1.0777563291296555200416480303067238 GT 1 -93817161583968555216769834902633.3678699698973564574234039483085872 3.4445793777748638024805094163775574 0.0221065187496743257466595109194628 1.0223545297559432438083065437828378 GT 1 -134515916827464322748223488855255.3175595112081314233601240119209225 1.2151967832379128167093902461529663 0.0811034880575037546203679439338144 1.0845817723879367567854336936998711 GT 1 -7745710514.4718589174078799562563441513962161 0.6246962805494041541040862810118443 0.0144480586207310927181846021509152 1.0145534481676311124687445560715828 GT 1 -32661783116751953066209.7385310173491585898720409643044869 0.2458290277121460883569026009063436 0.0635494547137364450758512483959845 1.0656585665155968951422195187252663 GT 1 -4739611639339064887915326191247.7444760803101509128004636002997059 0.9198093946760109255476343685863929 0.0215256167430791136866593353606042 1.0217606720932754902433782239578001 GT 1 -1936433796172751172426.1706307000050291864065528061932099 0.1699816687577292110898119234946497 0.0758457220471246740151580532293233 1.0788762537965046366645182511381268 GT 1 -122047601.7134770674096714464975913037828789 0.5372911700382155336775140608128825 0.0941729627913902204391683417023308 1.0989068993227071273657434018453196 GT 1 -322877814151108271059.3590211292278950169516096557097524 0.4197700551864331420528446559520205 0.0627276254232835106835327138181301 1.0647813510698752724955067308849089 GT 1 -26084849.7458988418784073156964910669716397 0.2414297317934893949800271239748720 0.0390880892482502302062009611965383 1.0398725383633638132371964838999714 GT 1 -25552479358214580484412470129634782818594479.6960678846466276598069449669860494 0.0179077531299502045165674809875909 0.0917788276701225424174772240595007 1.0962673481809902350006255883744816 GT 1 -9.1217112836255493749312599379411143 0.0584028102157190107792670379869538 0.0313486943892064559327820712327330 1.0318505815836851636698609726423250 GT 1 -61948839457667745832245918789109.6771647094103818154761443889497256 1.5114238361863965457688584244975344 0.0598169602703051392718751197362689 1.0616806995574761473949555431164950 GT 1 -65286202062155911.6594925662847310028223288442226757 0.1247414382753311257672911489826043 0.0714296323321796706880607553601270 1.0741091146659526522141062108021387 GT 1 -28379973590138671626.8055552212255097080962203591638658 0.5777875955156364528427970393152792 0.0008140470559334606404411238774973 1.0008143785721635151075165984035430 GT 1 -30603677444836382919614115593785.6170351547174577494305282570319937 0.3499415766329172418300840151812411 0.0549531734770250997228125931430733 1.0565208008398840433462514989786946 GT 1 -5438409983219869690.0878412795037111810365955005787919 1.1184220508661135740352107507356952 0.0208426628145630934773188075578921 1.0210629372240542332603749798684403 GT 1 -35746045593934394398922437945008.0182690403419730854770224404007606 0.0616159941237991023282033643877833 0.0144623179914383584674027986208079 1.0145679166834594349389779870443996 GT 1 -1801422.6975178512219017773402695399878132 1.8041745376004906900022339713527202 0.0910601565831567951126783405185501 1.0954763658539339598546399298320037 GT 1 -43379944391947958546436959.9867800052152599139136107404821738 1.3156463377708227444937654046760580 0.0626506371117085815399102306195232 1.0646992136337412800835095938486467 GT 1 -2955715939116446380661125982194174537.5873191660766125181572049422718068 0.0404106052555213297201806292183527 0.0953838919386389707440593419078558 1.1002446152636806409204702854214643 GT 1 -18.2524479072232676820068731001671429 0.6088487152028141566447133336578473 0.0604164513575360132348367529974956 1.0623185352454425837574295675383323 GT 1 -7059219928530.0355927962760209071611069682845598 4.3352334195179075393764725353956839 0.0435231004550282034565190009785633 1.0444986414180684025258235326516171 LT 1 -722580.0639408355901630473617927502615014 2.1365546905854745427177420990345862 0.0980976224516364738021703901427191 1.1032489936587618144317527276378573 GT 1 -1193543505.6669292517236611165432494156689399 0.3263019163126617858463655973315973 0.0976880184347670321735186924796132 1.1027949411545928519655047326536229 GT 1 -693832877387104405.1254253410886929812521349997444027 2.4908761807969213336110706864479448 0.0330743796665143563942503783429207 1.0336337044463475108841563011510062 GT 1 -538396742171184081463028989593707252740.9950439627914909521141882940076572 0.2283730664403386161466009678779848 0.0892723729097900658648168161724095 1.0935114087641681933441791319510104 GT 1 -76726859325459556948436.6676533476059236968928501764469878 0.4791881224155330585760696105594866 0.0192145232900080708022820589687515 1.0194015215056719879423385216336327 GT 1 -545845818767897555721698200756471.8583955254643770164592801617767397 0.3645341544770532216901055578810542 0.0235412884044814561259490634858520 1.0238228115915528248051700026980909 GT 1 -123843028170694309339786113280067433435267.9344609515923430719674908430179405 0.9655900339988096825960960209384548 0.0453050251294472201790233712817535 1.0463633875611309337835180607896248 GT 1 -55164.2238971826654476540992266278961464 0.1450038414081853403140054363025424 0.0017678508340222179655776656948942 1.0017694153264392728183806058616384 GT 1 -318563037173242893535611707181661176.3041786193561822688842709106652125 1.1555841399714052467918630719935904 0.0306077976803827561438491339439132 1.0310859994245281372892267668525728 GT 1 -345836.7983724204026369378434678368003679 0.1183737629362881567048334522342154 0.0750600111501015908325010294165959 1.0780264204933389437243976443008309 GT 1 -801377904.8614212438703221114262237316563551 1.6277763190224494105188318859192498 0.0435015482116055474371037660897002 1.0444761087247866561274253518882972 GT 1 -23032192.9830481666176196752677591564598124 1.3946378213605890602666700682032736 0.0261329085463102419362678708043735 1.0264804410636748549876433147342957 GT 1 -112.6390454598499710125908000418032085 2.1257180561344280087024965051715093 0.0184448731765527532156887172293520 1.0186171009504082619443508265793246 GT 1 -17345832773232833507574527.1708215326571741538127170867220928 1.3312574848351570197457736389936351 0.0804792004008944492679103679425843 1.0839026146399256270162844655236227 GT 1 -80533521479538735047.6383799229191825611851672436916686 0.2843016062880332238568370052754652 0.0115137297770906122567390669641344 1.0115805259743399158784370486850270 GT 1 -85676161673390513560898.2340921471620881947437751806557024 1.5176436145917221863042665455899749 0.0496565532742887148348378994183524 1.0509318368520272953405628847461315 GT 1 -1188390111523923.8177835270075862472524042153473750 0.2110875919200595851921274160956123 0.0081609847037656513949717130552405 1.0081944678340755158307456642770421 GT 1 -6890276764602711694280469.6608339704320014192523579060334214 0.9532910631141148722457478992512204 0.0530888723595207958505214476571354 1.0545500364084650501190045658389291 GT 1 -3557802020563173685308578771.8500703680109229534020293323847712 0.4500209575615958203741017634359175 0.0237333356091002186530808418537214 1.0240195081753117518894662446440649 GT 1 -102964549571107535590.1513499963488177348817073393111361 0.1274298752577084722621310602231796 0.0667051994823819824971306814747497 1.0690341574989020953285227022870472 GT 1 -34659730551301331926117041246382226443.1499001886751693086428707927730848 0.0216246673817817545482636809253094 0.0556593433869386307602777441076341 1.0572683128765615400006356677382846 GT 1 -1630918960026924634551.7634578998540682753353780005409178 0.1114042606906364003236311868425051 0.0241422311533156867460174744949991 1.0244384318291869445203510887042683 GT 1 -453624431631216868865953.1059643584732413020382769097258867 0.3127985470209740397698178900275360 0.0452437734903839640396599035493616 1.0462992312851915514652139296266058 GT 1 -9374160518856522205117618446874602271.5983999157247002336088719514390113 0.7367659914670994499095941566569153 0.0265862689323762138603199314968661 1.0269460753872032474861541672319372 GT 1 -150.0741023576161964981857180020328643 2.4746859545435354359465330147806105 0.0995756383243207420878412859281231 1.1103899769103107718076622170804753 LT 2 -73373816010440546171903205733386170561699.0836020441006917964240718987130816 0.0405622146719685685336742619618208 0.0224045873390641987551171078250393 1.0226593830257586733701345206362731 GT 1 -7.5041572114636238923752112000619604 0.6054655633052927938621247687689373 0.0073730242974081527907845359482366 1.0074003393870862627933708675810956 GT 1 -1494979949394.0755409638454351696920161412985478 0.2603371394114626798562489363698251 0.0075255560800082643802799077304428 1.0075540159513086593993639212835066 GT 1 -358050796918220345556595.2771502005404538888344879503780942 1.6323896202448218713671355012153571 0.0020139674246308901590602894669315 1.0020159981840716318906558067497563 GT 1 -16233050.9209276020530548437128032480404238 0.6602750388835102493548450316797434 0.0901914615819023701643405665734598 1.0945210989506171482675288375000226 GT 1 -52615500506225775561.6181371020718026603393727391053360 2.0372428862067614743766932854326241 0.0728523109760916751452663274827833 1.0756424067708674558681588832746627 GT 1 -41174284922178109848568818.6860989106403786513629156428695788 0.2817646048406550628808758152746323 0.0835984261989313765972243410496318 1.0873006110307786748521795493496568 GT 1 -15774593220568851.5883820711313360368921653206826761 0.7673364336250252502708756554547760 0.0203792648289656884978449430115327 1.0205897871507689666241785888079549 GT 1 -9221708677228893566263785926703.4892966812431026755128113234913391 1.2765700182087626902587631853644093 0.0412286148165988150006987081280661 1.0421026212733923382426385316207888 GT 1 -13438115129113041500241058638305462844.4076649773228622281025802805759316 0.3103880869073561553676099170591269 0.0138379319898751106262606320698133 1.0139345687080093437818931945431176 GT 1 -18168917342691943804593462431964843144219310.6479481932622736015739337415615675 0.2720664817956201438620427377004341 0.0396509563470333931655520757175170 1.0404584734635347180369846424465264 GT 1 -42670301674913738326078430929.1652445605568849622578491646713739 2.6511484310959344629275502445840090 0.0669194917785998990342295595800695 1.0716625286882830174334130554284885 GT 2 -96484935609569595248740909942.4324929932598647738862336794717097 0.4776788521073550431660618786841529 0.0676997917615345733536007981475967 1.0701004043195811577399244939440462 GT 1 -54390.5550707510460184637764005887494856 0.1188577561397694497730677059544519 0.0511507485232492965277604545918768 1.0525053428566230956754125505540809 GT 1 -18872767129031.9816178505086815253249635107501242 2.0794666532177398292815785332268575 0.0589572330521330205944512174445863 1.0607666920258204685064405583467179 GT 1 -1.9034461532622242477321883235631987 1.4169430841858524607805319621619392 0.0297517568316323281462846433054094 1.0302033194347167043111774118962512 GT 1 -3974133168809930949978850774419059014095.2038928082321480029073057870584887 0.1940954273517373873962464655507795 0.0247944876648862510288786113275943 1.0251070483135017367288923538169888 GT 1 -1257902303467604623933773384741787.4559963791962891601836214761635179 1.4263366181276607725892765474282780 0.0992101835543831132041226285713324 1.1044833266721397874496310664778993 GT 1 -6058577163619161.5857777352597411557877256242800459 0.5119427531956264019069802874142280 0.0199129324071988854442796568440780 1.0201138667815066180406943754096658 GT 1 -1499411244454830986.8510309213645804349123537470986294 0.0639602694406350547899241558084007 0.0136541315836957795389546876330133 1.0137482065613056075403092560833009 GT 1 -275207318582725599886.1291318298958680640235895365282041 0.1423182710661989227231581547420129 0.0526028338036584256952826680108177 1.0540368796344495272034582255468915 GT 1 -3465443230127.2597948126392911988616157235848487 0.3093965302395183232405241535575142 0.0488989120331233829527981762700085 1.0501349255906804730692998477226167 GT 1 -11906408971.6300217643439606117203067606166969 0.5806370572684770142678606345056121 0.0277062047967073223794494276813282 1.0280972617529759038271795988445054 GT 1 -743602044125.6338439939592780449318579347386032 1.8185570784094016405847669764087871 0.0012932640068903956239895518931282 1.0012941009944946084828125833295914 GT 1 -604200849879867657.1724060594012949263654320696733731 0.3871299243614384484663607305009941 0.0836143903716398634318850404626232 1.0873180316815265910690623146942352 GT 1 -839016318637420636413641425526815.2389071817314937915809342018955223 1.2591673801395168018892464623587321 0.0484767834797572637502651702525141 1.0496911926274286459844447163256201 GT 1 -3768145206853662304582522.4674129116347439104163400118324757 0.5888950945516229816082719994307213 0.0622153664848827764386345991093082 1.0642349581346904262881941214846916 GT 1 -18703384925741278438.0562159200042726274238126963327652 0.8205027722818538900922914383143782 0.0555682200610985313116595858762667 1.0571718234063137135803922698557485 GT 1 -76577336731122969934209663997081965.1617353959119084372519041664226035 0.6494616810689735385050758867941131 0.0342789610615985950170260253668779 1.0348802660413396269661361098762701 GT 1 -45526549064313.7536078316390241568322580015052681 0.9561977797888882152725339537738181 0.0812355630192151960317306235611713 1.0847255148579677344557850860539693 GT 1 -7866444416067349783778489878995614350.2357793919306135223593641003819692 0.0618407731232555947446452715730906 0.0461529740140841344643450393805137 1.0472519705108904791019063290328084 GT 1 -5266111454618.0856830351154657739557872393441295 0.8664868337881829547698561062186906 0.0606230745524652348835299151084300 1.0625384687657175838688909373506189 GT 1 -50567793660073010751069929746968568337.1287525856837432335317681486235970 0.1662586105007075012568084479402649 0.0317575259554057081191067566366594 1.0322727333573808313440578808077517 GT 1 -499099763818444087665.1872078238188254526731064015368483 0.8777486406806479979496099823369160 0.0008705948193404289202465137825963 1.0008709740071054033536892671779005 GT 1 -344444413128175238323145884974859236217587.4645567142103733722717162369792335 0.8288331921464271830431016016681735 0.0938350706595993868155120111505399 1.0985339482920787966577051599061612 GT 1 -11823975348966622486183727944138.7232745975182012934225929044907943 0.1001833490960571803874794690665972 0.0291891724563478248575392314705890 1.0296236519742811269580461883252222 GT 1 -1659.5358527744434149151810516572875385 0.1851689105243319032254029551154972 0.0323061937896044017865608266426927 1.0328395576423377100692617187528384 GT 1 -399454481070503719.1975074516655685797997612806221876 0.4369568288005732819123699854295444 0.0563760334284621849611016313172982 1.0580275326915393648653529101703658 GT 1 -266507599269525080320882.4827089553733395523392046458144695 0.5075143825749748758129447798376639 0.0724264985861751511906661618068791 1.0751832408330508766912201328571400 GT 1 -94001340368256181055502.0726413382098006171318517761324615 1.5005751726024590203822511858181356 0.0601599324306457020622976739838430 1.0620455590773552106558843380969159 GT 1 -207818184601020496742902.0946848602025070994349386689209371 0.3863328668657740271560960014967891 0.0643393039720093798956653601982885 1.0665023724686912149284494567292277 GT 1 -1116098.8477783126817779569010358375880070 1.8375858725921200648668186128570804 0.0380458807864393248803275626880082 1.0387885225789806239086681109709515 GT 1 -22471079625406677872267235.3534901871721398937079418047081358 1.2174087818540353686832599746573270 0.0302385474804113770508665754967161 1.0307051629668159806356857960832752 GT 1 -9503.2829529253041887395338051432852528 2.9558521995572210579651808126868410 0.0423399443021679505496816977955802 1.0432624118992758375664234203460361 GT 1 -124696947278.7218502117442687623402841494916230 0.4142761123838888408731783829630487 0.0689815961426778383766016571401753 1.0714762340622962736575629580128526 GT 1 -2.0127845945299977894576884509420137 0.9733985458612149926113310108646390 0.0617647399503083502428625795939156 1.0637545511360366384199413643038399 GT 1 -855194788774907869.8745999774028006338433511227737334 0.0826797502256242387632399777261942 0.0118143501524411418917157861778076 1.0118846941821399771079021782256307 GT 1 -1108842505043.4325543603281879303148655796241391 0.2290930019417234877700454663639303 0.0654733901535312450497350535228843 1.0677151775358305573228347305378527 GT 1 -8842.5532428521252722081592477214079874 0.1475055273353976045440562103793719 0.0923777304015047059530411200825312 1.0969269895787780280206153550968483 GT 1 -1190848863410494200919228961904356851700.7659182864095581909143814316078508 2.0812271849241579531359375940242031 0.0444576753069482285126687870763588 1.0454762204240750069442151888040962 GT 1 -3698908038753312321189803972794493071.2503693971107248866630199346600357 3.3490129067583912147890667790228798 0.0171535218469216960235701261600594 1.0173023478852752093086986058795157 GT 1 -21487805822155804734.4508224291669780589951167068386853 1.8937193828294540042617566856826203 0.0614025835716395926071014278368416 1.0633686282056630936334322090274730 GT 1 -92752879393047237712.9205456681844752140907586890627394 0.8003106935865602422453330907181417 0.0639384256692460852783595964078841 1.0660740201268493019238906273567767 GT 1 -57850418297812354.7670692664986584101686897246705226 0.1706620910844397348396121684993030 0.0458457633116667221211578755527297 1.0469299469241328703055258189767755 GT 1 -69052281644188109483881259863206.2801526550151509334916119773538843 0.9555823525128716135752079765418716 0.0187524159941361446661363238675463 1.0189304720481791762741327285812732 GT 1 -113479036541272361709554.9120869196848652929416847218381199 1.9756788876605962488842017906885045 0.0234281773955736923517882610398278 1.0237069803159495829719361554250891 GT 1 -82238635516.9586308401681728110942435750748866 0.1915839974252505783737088968662371 0.0491235852373133597175126715761788 1.0503711778122893589934769485368912 GT 1 -17948309214906153565207873636383.3697028092401667272396157868299814 0.7501422267522329881323897253040835 0.0397078164917491662430332235265210 1.0405176830066063578514396013071281 GT 1 -1486216594856350072493.9323841244259861871378346453664479 0.5129472484655387276431569377178149 0.0651602545278012937744308749535415 1.0673801596001885566800137217127894 GT 1 -4397409115.7840861429510068885617430694621217 0.6832377507678104285739968813810010 0.0300645418600211983721964252526457 1.0305257476984813229491647534784480 GT 1 -75350670297520399818712.0187421287999792486050059983704275 1.3304608106768098494809015731597627 0.0853278148254205147052004714731987 1.0891895454685394173790859980030210 GT 1 -258.4407489234751539267018437251046002 1.4694764579403998094644775900472354 0.0748710328208762457655949085182354 1.0778221272109001856231849417751998 GT 1 -4042365757688967223632047521517335.8259506099863228036601782830713657 0.3764514477470169862739860882349338 0.0232653490261911463647276853917163 1.0235402595560870252342753691710143 GT 1 -42.6434672628410756516662164258096073 2.4034499110923216763481723262925161 0.0858345606970940221009734865456210 1.0937706855754113518362585969728874 GT 2 -335384928588100.6898557387971410487469065157234573 1.0475152948546150347040341291584268 0.0286335588983535754456570900528126 1.0290514966081141460628504101542721 GT 1 -17380695915196089048616.7375897265734084651630531075775030 0.5197859055371841873275622377947617 0.0106823442312594741191332802759029 1.0107398100834731095269618323615955 GT 1 -137287571754148915213840293929757.3626958178079528272061352762621084 0.4782285415338971095338972139175487 0.0029691467471575213607736093019255 1.0029735634080032949825161316447168 GT 1 -179349152.8190114242623757840270398804102024 2.1198278109895896567038330477411126 0.0939431815065547793698516772227232 1.0986532613366472880134682724282447 GT 1 -205026.3801229640513237735701270445711703 3.6872082568969909411759644391926588 0.0905386008001136332552418692921534 1.0949027237059613942586323117930927 LT 1 -4954936688673434248740051491469650.0018280930357227009160498898246635 0.4466983656540068638096730545967067 0.0852951986863660224445511824610497 1.0891538872752869044432797757638766 GT 1 -67161693.9669864623587909039233967776554409 2.7171204008617158928447938292106766 0.0528905578345308511146689059986784 1.0543406252448524104557873980601767 GT 1 -1420072813174485404703415757715436669620149.5207378076759354225736324775728491 0.6977979391802988791299892147424181 0.0533839951308015995879173580663692 1.0548617539102674679955201535527756 GT 1 -15799662342.1889588071823027246734757900318225 1.7832516372710820062973480423263389 0.0862631529543802931763250212465938 1.0902126624998682548122122187499526 GT 1 -40334329832204103773281408998448401.2486994909852015299228330689567527 2.7472954988577316628111557500726616 0.0626417888317221017395845763269046 1.0667821574260521518174775445589627 GT 2 -2426100410496149660883644774661567159.1999713186326396509612649519065889 1.5307986001698001876877127097820957 0.0985798463476386346858265767979577 1.1037838108078330460931705350029979 GT 1 -6080044552323657539066525083262482.4008566579291023915481775986683522 0.3622549552079828317403409222162117 0.0374301040019966510498447568615419 1.0381485962381408008547417640235328 GT 1 -30889544888954351966063137.6604403275183308962472278206947901 1.7945577550503478232281000366211841 0.0294404145991166116441933604052992 1.0298824816571651245218804869596382 GT 1 -939919780116039617961305866.8191717922159871263449381355733516 1.0176868178485469447234132983644026 0.0071323154078185546298738650500528 1.0071578719601195805896790975890072 GT 1 -25201114985063108727299243.5757623258685835514911451116646512 2.8247744863455898805995777618446013 0.0212732616509438229227731722677068 1.0215027986527302875621355118307636 GT 1 -236655545004249100090870963228986.8082291640865669486991232233649753 0.1474153442457935873819453047711122 0.0736280378428341326052319476755891 1.0764794379958011157325692888164971 GT 1 -834425220594037223684702369328855.4476315570969440208224210086259189 1.3084410283667947061143833419570297 0.0239333924268967113978225638440126 1.0242244494334151435322992491611979 GT 1 -68560.0500695070006868475607805527088145 0.2449792653709769758117607311894589 0.0659851893911517785371041269467968 1.0682629836960972191303812737293002 GT 1 -1360428285868905785414004307384819.7999182052125859683191560963940817 0.4696813632176471470389391673388787 0.0880806870478198719133720114794631 1.0922037654618939116307852270750665 GT 1 -31912513544331754845995946380222006.7555419506239501244347541042091526 0.8829301182123683604005264677358760 0.0811108806354013425822907891433967 1.0845898174806523527658915618623157 GT 1 -222088340575673351.1205043192628235213381416832719013 0.4974053557410682563910723036783281 0.0421394747546735564422606908402586 1.0430531011247316297382483901398236 GT 1 -15040757872467242286574170149196.5832828043728853115246622105286377 0.0844108204227327863395477075406681 0.0963535155012548643881049555485784 1.1013170520430923328493949531505038 GT 1 -104548864928159136529095758438898.6111260921139310646517829650909903 3.0534137566947888486882509574799654 0.0545114010050784865294794976889812 1.0560534491319767441271376032232758 LT 1 -3023.9975726641432661895680509777287913 0.2578190844629125100599795510729870 0.0936938010659112407638232825262608 1.0983780621190298339668816383787659 GT 1 -58989167667149238.5232738478617888948405958176774139 1.3703822825238705387976439285917400 0.0072280898886614487497505947300666 1.0072543390946112926004517019835427 GT 1 -1782165150070338772.7850025443601156280947628941868382 0.2933485469437328326466992786164096 0.0491704981970655848000523361469593 1.0504205155772435362679825868571280 GT 1 -11049.3327887129132402162011074829751440 0.0782712391024396972144345912060726 0.0028114451438343652766366934621323 1.0028154046788176975702049849677215 GT 1 -20.5251038776543444605976360218148269 0.2290611383538379632193906623391040 0.0547605540036527233114270099992168 1.0563170015774767162828075304189222 GT 1 -56107204179636424071.0880504638248727548983827033284641 0.0357307218415824375565931454146028 0.0712209598627109113291482657643256 1.0738844154580708791923371934354763 GT 1 -4398.3922057691311419141835497443973403 1.5823296068357142440993430507429208 0.0752156692862650954151705165701372 1.0781947246399456775117140813615905 GT 1 -225730977384790035783399.5150557198250052644852405169148023 0.0541203862190073759239911982445857 0.0531400497451797452638408576079809 1.0546040845310378008333200013696456 GT 1 -1363095648257729620712513.2027543212309772289771258027912226 0.3379309118770445880967399445072995 0.0497897400096333120398980492446345 1.0510719925709548598354753638199151 GT 1 -2175996938711445367455310176585330.2483806942057500086919735626577090 1.9821894352049585514476024890485449 0.0164934915672116356438941406814257 1.0166310235513422742512167481453646 GT 1 -252136344523.1418087559636074679133738530623568 1.0078860412950745743322515538550244 0.0036636685131410084378256121681249 1.0036703961836243766378892599892459 GT 1 -9532275547096976.1146420436744760370336358733039126 0.1941759095805804445892559440941983 0.0557189773426344126809788594415359 1.0573314636455801789467795387966658 GT 1 -138008351165451816329642042964382953026.6101104146612535941756683939227680 1.4004629478640934870214902266882972 0.0437370269750933176825921055935815 1.0447223273714225123579919731838400 GT 1 -3658296102125798829140802639779742982164860.7564221798483738789900253878949884 0.8412318231362718171213277259395920 0.0311555915416136918403778371481382 1.0316512491703745911206122677420908 GT 1 -859920309577990600767.9556234373537544488356194788446647 1.6029016624161512371414890133838260 0.0007294181272777265891970606144209 1.0007296842821132385526031808224280 GT 1 -14788732846308.6700683729313837498635183893236314 1.1147566469821741877929107011718740 0.0054072553849104913084901442576032 1.0054219275048105914026268778439195 GT 1 -2944651441052270921.4249399427733723563167052965679615 0.9989980008690482238401619706720643 0.0506634769471111570186109511595144 1.0519919351666280468683835305079567 GT 1 -919624031407.8253144353513535427515608578037148 0.3790708432508429893074902898573012 0.0070697070966767113751980483217434 1.0070948158870727647701612672327741 GT 1 -554.6304444099239520742879565779297219 0.1029513639830178406824278369771793 0.0615363541254457652960203493724984 1.0635111601208140259510876292352136 GT 1 -33964705809849341554288.8161638396343366095307897160066634 2.1165800529218008511711773222361608 0.0350369258773356772122769188473441 1.0356654435331417608243512991497973 GT 1 -9813863129428178151539573985138362673.9093180587382957359829984967837651 0.1404558422698788459578919538009805 0.0348067151179947880881554432277189 1.0354269024850463406880249481771723 GT 1 -29368823856271136553777835164463281383.8925056672601374202356336210352156 4.5804813794741705402074642870872035 0.0346190170624660320822345849809076 1.0352324545850107164821364055067789 LT 1 -89704905242.9257164639258218529530022201643340 1.2701130872298817776299760699861300 0.0899471061835181733547654855908275 1.0942525560873809773241815150424891 GT 1 -17671056552078605226878938.0976533473782362718376163829294171 0.1262392807981350128767297343330581 0.0308909595560753718015303876880015 1.0313781445843660524373026395119856 GT 1 -1714225524653625953852.5177999836977811329043147062635435 0.5441036421069338112782232042493025 0.0208080254501279005809366158303107 1.0210275631830379118898739302637657 GT 1 -15558270857884779307899277019472.8729922658048588333519092793257358 1.2807573609416170405735931574473776 0.0132923260126718628515024945598905 1.0133814597221514205288088674937651 GT 1 -133723757058575.6549278552901822368211983527616293 0.3323292183557546370253583434646673 0.0674792578505097512286180775489771 1.0698638841196048209223118839729596 GT 1 -20.1795723040564877321245062059811069 0.9955888001477602149293099312010992 0.0215137200148312498365671880508564 1.0217485137208856220307358281636108 GT 1 -48203436140876167031.9477045328175106191008143049436314 0.7738418108266099285789964898134678 0.0390306841769682148029472056956403 1.0398127999461241634649773742909381 GT 1 -147497238124912.6466764061066467035197245157842191 0.4089892372927782390147071251131542 0.0779728625042966657761038034768209 1.0811806225661741939195099211509922 GT 1 -5512137752308781249169711521912429288411490.3346329915637173279573201839340022 5.5762951401139997220401244593950318 0.0893971766187471844548166400427574 1.0936484555138342399606821746800395 LT 1 -51878818296308602183986407850.6966247756385664496652357676624414 1.5808971935806910957909746488708269 0.0268679535261794558271905919065371 1.0272354953423047090675162485788309 GT 1 -2049401.3962986517408806287487778225509455 2.9075465657574745484999441251260872 0.0378818772554182017869036619002166 1.0386180471385663876806917037726847 GT 1 -4953497386123366229357530904649076670918.9843341069209405208523602354335183 0.6447276581852072107710072422025221 0.0940589267445577571927261834382340 1.0987810156112934782022921512520668 GT 1 -46509229241837352355653888387354485388.7570485268691119751367556826180508 0.2010032279224564908875959265360078 0.0891485380721083172565849622309420 1.0933754444916102879391415284560502 GT 1 -15275355568542294911422.4831584961891775006092088491226172 1.4668877308405976745596650743364285 0.0006654583273049398077832485528511 1.0006656798429760465115694573906697 GT 1 -5793933.7243449698597756771966047028514802 0.7683151704538502669456042120409587 0.0970651169326321444562514048730816 1.1021048399401170945752276916744530 GT 1 -187206257203301392358967763502978.7618994279806723334125105549047022 4.4164483002663104187263835269977310 0.0796341956538007481927829159304148 1.0829840745465375505993864948934549 LT 1 -8587.2537083330175442997054453730909600 1.7232733570017929769984363228861350 0.0380026542241695252815738705072309 1.0387435873890200898052242944595485 GT 1 -566344596753803701138190015479784.9751471352997801819156915616230574 0.2068149467610339353195017972186505 0.0954231094523396434360327511643419 1.1002879688624807326876734360328470 GT 1 -397825676842250786880.4167836713527135527433893053732084 0.6491302700917696558073527362738368 0.0355710396804815235476842415282061 1.0362191037610841740925992546386332 GT 1 -1719177003351301.8651292993903271708022932291521350 0.1651734412430771195932219148552060 0.0066795437629030631276576881686538 1.0067019517545248269968365835580072 GT 1 -230957114123457002471030.2565756661922269123052260555756347 0.0140987591539357284396366085095618 0.0441246167909476495982517012652295 1.0451277267191203729695706319137169 GT 1 -237071503771135215663076442396608940175.9905356654319431603838483967673551 0.4756907115655589634681122680296788 0.0682714849546604221551870665052978 1.0707137996003618709601288552381519 GT 1 -419331889875484.3051924200267380467084681424775999 0.0035663502513413463269240697667454 0.0492826400369659109633634792632011 1.0505384635934456583808908548546689 GT 1 -12560239064434731133538826254020126684.2649862777612682663373413120733771 0.7316521062017429981959209205502292 0.0773231658872869496777576286660157 1.0804762313425716265019764118354564 GT 1 -3583771608029544.9459652371875337269812541455098766 0.5476590955017261830704902993797547 0.0872712241895639001433046371949130 1.0913165117318807284904009650448597 GT 1 -6615221661355052.2386835165534762971300478346054560 2.7152785290002874710593954447651377 0.0500487752017356680006083091478325 1.0513446380232289302698009948259396 GT 1 -1117140638014247340648700691064996706.9421326340275032720994509598664635 0.3413887966112175971568879478966923 0.0947820469904386000296150004892705 1.0995795322228310018043454069828029 GT 1 -23.0009158604145951962049733164348158 0.5815381776184893242441397330867153 0.0271122436000612864345459076162835 1.0274865617238536533856349267407208 GT 1 -78564153728044933798672727033732590191189.5451170923009301511553356508195734 0.6159993305940690017990268815494895 0.0346692010077218372872679279062686 1.0352844395013890131953289082785212 GT 1 -485894359351192283802299733.7245827686061843737692746872908316 0.2978241801320882911453322783702743 0.0270906472617582051786682159174366 1.0274643637894415364319607272185850 GT 1 -44245519797114153330557834.0960271892697851297158432414842394 0.6962258240960978337505603335192969 0.0792590728164511954380885843498059 1.0825765774295955545580758163874428 GT 1 -13.4306251598562544690968537496218060 0.7246095578601160990709722540103610 0.0961078656999308134357301480970634 1.1010452461737387392580013596427640 GT 1 -377134385125192801905005257579.1633049195791749052592664274448887 1.0387694195026617929035215316584970 0.0801836998915677054952956918007452 1.0835813026716996254304082453834969 GT 1 -24612901029515050836643758588942.8567865668589268983117819373894430 0.0220256054362060214914775496019184 0.0493213967586354050271512268088762 1.0505792301906456917515801916641371 GT 1 -19842323179754215799.9368632841900970036373642684971422 1.2145939311791532245533512688907861 0.0018070221758305761823509927663415 1.0018086568099127255934885578237893 GT 1 -1308140922761888592739387.7545335478375136846377067008237744 0.0087988427301774340612754375117283 0.0210667842359527956925882934859066 1.0212918555670091467886375860317517 GT 1 -235676115234018899117216432738549390.2947718791331938268169164696195043 0.9871655275448316856059033376114186 0.0018968779342909228026177147453009 1.0018986792855624914368227648428848 GT 1 -3953958041964396993941318025794787532666506.4494647892145551548166118441151870 0.2583811496065739407353516276807077 0.0666553626232068279902346377275488 1.0689807600851592328171823020563226 GT 1 -95711710326843512699062.4865968403679945973879133474559765 0.0205319491041129520200210281305062 0.0354399354725877490089781667023283 1.0360831732747963667330382253111878 GT 1 -703763205624760878445316069349096946897537.8551575250745742911651596192543250 0.7570591888443026231216053616686562 0.0758487465906662919397843053047730 1.0788795265709353786672743218237221 GT 1 -250727700908329217470547593090.0300139268451598440146082224777450 0.2761762840233367447330138698017315 0.0051692437667404469060146315677127 1.0051826505291398688935799704118561 GT 1 -5660234830960596183956.2170680509403451162884301425274217 1.5315169309719747697673069074411413 0.0334370661118184855176205610642347 1.0340088672046334546371217581196996 GT 1 -14814503294924155.0467867689206566756141155641719003 0.7005730713949622010183027574630597 0.0905964658605110391385768363544353 1.0949663513666593106098703616074767 GT 1 -4881957062187903693219647673853937053.9781415712045713356263230994970183 0.6356803500012906285475500001098155 0.0554008461021495922276824431639353 1.0569946172458545186328789313671339 GT 1 -20706373465984550169429770891573860308.6636265921728516168963473397136679 0.0882980420332881835212167770590341 0.0635597691168362923594655565844994 1.0656695809359050001659597044690205 GT 1 -245410093704767284618053462083.5426263880379107540306490558235508 0.8303159033278479948956373796221252 0.0111006266905001442774534677954716 1.0111626984312386567190785997426497 GT 1 -229407246553.4640422659441905098674487239711180 0.6359482677168448450399045722101789 0.0696613000032795882881268460102995 1.0722065655923463900102385222809396 GT 1 -1333533221308948254942198.5817301609257928393613400796789156 1.5217369941570404336513975860752912 0.0173538675062108947563394388304355 1.0175062109360929162713782438153736 GT 1 -1908379242591787907.6660993742821447732324238174003418 0.2776295306672897650188918031290876 0.0756914334175053959468256383038287 1.0787093165703291544030294974268307 GT 1 -1703100949304941038753253285.8856792133651014697823991800341875 1.2563116773298517025533616744029224 0.0274842283953771752745635528575709 1.0278689860327382522781742160038323 GT 1 -40701670275141284375097144088177969693875.0067125812800575304708842701712062 0.3995079185642173880566966016354431 0.0847951886200459490305675687229075 1.0886074011807874643105894186400459 GT 1 -60596955421893825954216192077.1698865577391141820711849609511921 0.2954851391425504437183055844929297 0.0882083743035292857961953679478184 1.0923437956094486270453817796327931 GT 1 -323182512153633663326125360.2487051638556155363840836331819082 2.8833706662197317906032075079488996 0.0579280984322894336416269548523222 1.0614541526547419280401751401008587 LT 2 -94661279281793663829564638418148332477.4730204427910232285111153776835656 0.3445979754739256025504819296789945 0.0749288717835106958832549827413664 1.0778846490568315834808542712018301 GT 1 -3967678285072219042722697863954050339314561.6248538863232123697274404345182244 0.5072368937875303073672658830534500 0.0590945527685365433344749268195323 1.0609126256021140202936246268799115 GT 1 -41898.9483543202853111993533473604374790 0.0387883567700167807005821528396399 0.0325701453972874978032128891751904 1.0331123584091984008518754676366426 GT 1 -11738174422620431669174089785607331.6120897175720169124510516821778481 0.1664299948323773939850178601570609 0.0355807980068651676809387792868440 1.0362292220550737096244188165547503 GT 1 -5172598891872857742739715974417159419388.2107723327339562853731579568290438 2.3120925698530160727977505548268236 0.0897429472837946424742805295020003 1.0940282438476237324953354122687490 GT 1 -57139307406331329651428.4287715458102384154192841223787195 0.8193872236612508101415323234788002 0.0754330091210530055789874895588379 1.0784297690398397211187781420288947 GT 1 -940023466980169739921224175023366573.6271360899100975503878960746384250 0.2093294747982581671869708379032070 0.0310010731404042842080316714606965 1.0314917745640215130129275273982686 GT 1 -608009936854344918511.6650924875711686481757084550529286 0.1278322851295962285902612227856208 0.0125351083083148837265750201879808 1.0126143355561538459307780846027166 GT 1 -1059748365984912258042.1224467435632315140332190292420015 0.2176782323446325426390888793777647 0.0109885929924247203285992723462109 1.0110494135456815042507229358830724 GT 1 -12152110487460835038483.5952902895739582105698230984360076 0.9813041351968243541931207712126913 0.0927736776763440138180435699822201 1.0973633315225454971482503574351556 GT 1 -13293638966018093959443850058378059335512.4595418453426464856346451946916618 1.1344313676831279145204919183677816 0.0772485685012507885672715625642973 1.0803953857334879541238030901992895 GT 1 -1385116513342880900.4635512359107251741108376031216235 4.4948336454441758765309511019005589 0.0647234247623228596018435920727350 1.0669129910411148292291705636511948 LT 1 -1259905659604140396209475273436440650778.9893468768267878878603608819898359 2.3874702141656446796373100504227329 0.0410850465307947736927769604599326 1.0419528905450886268536742160720819 GT 1 -72125621115271384.9026270355310195576273592690938363 0.2399058522013157880785772415332791 0.0767982706204267897684180831538622 1.0799075099852847828617698804575826 GT 1 -81390172053080083.3401439955072204951979202779079044 1.7036414866666759613821695616479875 0.0050782003517776672054651002592653 1.0050911382305304738042264538756051 GT 1 -46061360145861722596392674673133724.3335460258191415297557965136799210 2.7296763907365900720677278110784239 0.0957711369596166261161197079342266 1.1006727835512678997401898559259324 LT 1 -88642643669.3624039872686200797717271998549972 5.3440095419393754491082801017841167 0.0980387796057109905336779706119055 1.1031837527547228767755526728534879 LT 1 -101.0366243766593004221163026785889372 0.0442013464584724530519323804308688 0.0695187816823894305194629439833961 1.0720533876090647769463075519829135 GT 1 -3564711782857299742883161980677655694840788.7112740486020418047946632578019430 0.5170069168008704361782587517810554 0.0292714779610873516750703043152745 1.0297084357359973400654118362020991 GT 1 -1899541469785367233.2437503140555747065521632007671402 0.2413855352750693754586327217128006 0.0186036139195242466309890434559127 1.0187788377455089179362075780018183 GT 1 -48038725102423548936916116631.1744783179780565871099904682387829 0.7248683621901302131500945740124457 0.0684187743634804140037111128638022 1.0708718939911236238354428754337410 GT 1 -162.9524726493288778743063169171891857 3.4773409635195816735121687957992654 0.0833485005116324745110054879117733 1.0870279231392065162856089301095930 LT 1 -105762243426883599050799.5722833168444677634912620761153401 1.8396776194240779689570853779424258 0.0008892035713157692420978837184210 1.0008895991473271756275441052216777 GT 1 -35270645283884337555315894543931.8447297433941102935656428472032609 0.5523604690776459343690854795241733 0.0883950648949623257940277940003024 1.0925485679514599899486550303475942 GT 1 -21846367989302557.3305028602385831172042535798173059 0.1912727670400673940491662368760535 0.0693916723321923183660568932942640 1.0719167909034748258132193262510151 GT 1 -15837914718457791252.4266545490853511866852538907114769 1.5728245006295598095368033075235076 0.0730762467097487743593169249443706 1.0758839678344114948248705675215304 GT 1 -133471492125.6599325027265971885068724010917905 1.0122958462061605131243289958501522 0.0656201342179593296722079990623491 1.0678722148907151059281743221678148 GT 1 -522909167471430966726052998097298158.8203284249975325466965675722676825 1.2721987713637224714415937780763407 0.0799246147275062826828267017782106 1.0832996717824114353964284449021880 GT 1 -8185579821539772931.2579224760669505609392169459900676 0.1694972202720688899871564725170078 0.0857128856446815980062056232027145 1.0896106273647301090997223039290802 GT 1 -2614876686522993.5439456548190009250742930047868948 0.4435702264921766648686365962352644 0.0329997299215539413282974206748653 1.0335565042336944916856168181002867 GT 1 -657552485955890.2554789451740409311982536853682760 0.9361263811587192778251618635157608 0.0555474428198066141286877433131325 1.0571498239213431892614085285746282 GT 1 -95539387748738087.5007391202182070740356304458250438 1.3400883468215818325909121955042401 0.0260851202069834853393871513972126 1.0264313715681750503924403630111546 GT 1 -234.4942190978367624759634187788513776 3.7088973205264850814222345205161426 0.0023499071330595058652711981574303 1.0023526724979096595297523264609896 GT 1 -368431661702192623165845093080157.4430081908991434995378015169485151 0.1019870348267490576219802203642526 0.0602185398478803798663718781694863 1.0621079199477637511783983488971438 GT 1 -11183391702520.6317424545448805010868197802690814 1.5006900140812696687290428832069922 0.0808113166548562990277013982303121 1.0842638639407579034513707003445039 GT 1 -121717073117551021220445.6643595941988552524929709912617280 1.4352688174836924918531283017687854 0.0151559080606803198642892801569406 1.0152719326331195539681147916281969 GT 1 -4922061479597700313107209942.6787480028777547980296008830037244 0.9802006782408384695725754301122899 0.0114711093545240270200233751935611 1.0115374100454216296164857062821930 GT 1 -84861570203.8310980771814985615817496156495029 0.0598098054872806295558002690251529 0.0381744824650884523285160598622589 1.0389222194706454597325858470427353 GT 1 -8717555887600298176126916240623.2562045481438743133188194130534667 0.4661020712516514995538788386471021 0.0502584577918055239246459011874976 1.0515653922362923433823665261524027 GT 1 -4055320338750946188715608395.1155226625607311594908514670552052 0.9538171759355849893190947657368986 0.0371588296847354679492190510092204 1.0378668129620369758347964190639358 GT 1 -181567803920762031383868968240835.3250088210431551334718070227374581 0.7662231680396147121786142867277035 0.0579745548094677581645560387306980 1.0597229928910423383034536055140608 GT 1 -2827036818406853736400814371799308063937925.0639036395449932399755965885135046 0.5974627495675540193725461456436492 0.0065122307249798443281739728621219 1.0065335278108645361233424212853974 GT 1 -9114082399783915605076340878313684447810540.0072564429432891533459553565278143 1.5538816712199050108416815795420656 0.0646023445986737306941870773341687 1.0667835402133489998783504090585868 GT 1 -6549442130259359003391121078814.7603469851181776043708392202782348 0.4524277555572760002822063815635280 0.0024178235507956639471899565349074 1.0024207512061451344383044023890932 GT 1 -190315903.0872060478189306528362339485216510 0.7981792128872145770636080024775177 0.0710543900912875817315206617312731 1.0737050888050433868262718050193784 GT 1 -102864434971528458406766873259286006489557.3380761521793191050694053378149367 1.2683155943777455706394379139014762 0.0412078126171411421049600200670412 1.0420809247833712543422764615573887 GT 1 -777171435448931904777809753274.0086376252997113125323647939555897 0.4506361477550938537830791640525067 0.0130880157920040199287755608259108 1.0131744185928747749507335108386267 GT 1 -33200039863733097283872089767936.8879988526740062837328127189104317 2.0356997036906386816521140609321464 0.0998367882892619865710005083740792 1.1051791857538226339151447179516978 GT 1 -72.5598392002238348723653981327997721 0.0701299394406579435603068006812191 0.0346495231667104232814691067692947 1.0352640551518244471268619180607686 GT 1 -3165706669262392944.2068489655381057605015615953236545 1.4094793071157398209537348481407620 0.0328368793167869132215582698260385 1.0333881103886556593259330850785744 GT 1 -1526764605057698091825816.8533805252654706988314483515734964 1.4751236256005330671391337337796414 0.0197060763844668503738460395262127 1.0199028302284820422117954274821532 GT 1 -54.8797618721347528329350697399579487 1.7266067233685859896611316542341092 0.0537458614454467903539474820865913 1.0552441006024701002547827523185041 GT 1 -772047.8668679299936261176806753166772412 0.3366887509608776907420287207708770 0.0970457077725422770981562276022635 1.1020833445345782181401088137599922 GT 1 -183762838347283388670818283574081107078.6356179713505117624003886902735540 0.9631773794140789352469100891668005 0.0526221417136532914817233986238830 1.0540572597954143420432085157510178 GT 1 -15085340.8588846666869288154610331977307091 0.2380798192377872816228715129611113 0.0601836897733170953793594263030512 1.0620708374664834562176005892570129 GT 1 -216059557121177174562193733461107934948.9310213479900800520861695792851061 0.8081869651785925121462963460424832 0.0199970458443947785667244631993354 1.0201996928775677531730243354752777 GT 1 -2646699206143.2182662968645781902622054464298799 0.0891921712127945606908717003605160 0.0793749740548033642073918890251826 1.0827024635830875274865843049708250 GT 1 -996620768.6606733557251561771440764638981227 1.3613737417550672730320260183436513 0.0647749837178936744124095409680516 1.0669681195219646969709304859066216 GT 1 -2218821504975.6310877463610300166141426869404065 0.4409940894165851692460610953049991 0.0142505640709036673561333837395692 1.0143530784496757202439593917642961 GT 1 -7496832923906.2466659045736831463758431116219738 0.0184871721957378311307850785864120 0.0817595383532788189948675367742711 1.0852959818705108067681376228286545 GT 1 -673.3188168867067339334246277623240296 0.5679975610102405844599468332390616 0.0056389284250785878221278002104495 1.0056548872038544124053906796034269 GT 1 -416311448319485850370809.0675121045335730515488806146180405 0.3156665825980028177833905609383358 0.0492470695804793700585550569175321 1.0505010499597216902213131544561564 GT 1 -1593183413585972531590888.2285358592855007804975181682539986 0.2040616612321558524188908349278345 0.0189167304007627516815134063179995 1.0190979406549217782168821467056941 GT 1 -4609088345859166331657244899065334.3442624619501913980856548585473647 2.5526786040076141175772554345397232 0.0459231054215775638107490991048806 1.0470110084985783623432992913817127 GT 1 -6579981610284855793581107.3845702862411302203602857424966278 0.7529945415207460449814876044208316 0.0053245553774831238324753044156544 1.0053387813428979469518746768835646 GT 1 -272035800815053167419365997035.7829112480376932211941190911424075 0.3617924277175316410138178781385293 0.0275959197706615223892169117073479 1.0279838405089284250014904718780662 GT 1 -4938862483156190888603659013642463003.5183599224712468223318514726647985 0.0405285804955000638526110899620549 0.0557555314231628767911466560378302 1.0573701754137852668473995547931302 GT 1 -157547669873001401266529.1670662187737361851115003985719618 1.0905703609910013124972466534444410 0.0461184632978795345679322348698950 1.0472157906089030203068014940570309 GT 1 -9814250501034898360554571523.5793564376207808422023441386802388 0.0294886072840331806981984566222660 0.0960762561032270455594726354114356 1.1010102762444575369064400492012383 GT 1 -6.4131091392288262353092300434714470 2.0102188468773832994037561478161519 0.0135916788518904555258532372927172 1.0136848912915608481684209747174466 GT 1 -32.1806525145996950460002488379047790 0.4131742067414010653444260193255369 0.0157011386333994347489792779315890 1.0158257071427227262117335920950495 GT 1 -781783783988429552668187816.0133032861857534859913403635767313 4.7298502917620466144188262943204521 0.0012396811502141670447815567071205 1.0012404501905334930864785199045324 GT 1 -372994236363840170977045169618.9798216521657238052807156950161968 0.2848309242212355767598174790100521 0.0714392709152870142224139785025183 1.0741194947442619159562870504381481 GT 1 -932541165071784044099892216024173808515.4665394189043782687913603214449889 1.7746103403910951217379979273697928 0.0211384813381292801741475352732539 1.0213650982833652715404404275700598 GT 1 -642191.0648154402367970660928307622089220 0.3845991310655160306349824204807541 0.0471384426031291859490367054908886 1.0482856561882738008275306269353111 GT 1 -10456692137845182497573258472911267169.9697330341805363691272275903363449 0.0033064858432758737864329243969048 0.0909626950077214718121363527553978 1.0953691460512934492015727729624142 GT 1 -254084391619017203237139.2368795782683377778777693229041142 0.8141900534171984816090573802275097 0.0600181956020394520119342808643412 1.0618947609288832933821892455374183 GT 1 -159620452192889113605.8925932280617075539075430936564327 0.2238139646183458511507718242003427 0.0808584781202992946999146741248867 1.0843151729660019007899345907914552 GT 1 -1041514569973686270535822670197185572.4862087247576072026404355094335410 1.0922347189404468152783459026957391 0.0135304187193504974981801849229354 1.0136227889866141195976481729192587 GT 1 -219068598966812200740321739.5506498833709467723795560108470782 0.4110399656205166478128724324664988 0.0120952053241765677029951767436723 1.0121689475414989984940037185782508 GT 1 -49469993409875185599113.3059493301607360244107579230769462 0.3620720126267370334596565706627795 0.0082546352450695892268824326696900 1.0082888934025719828380380355558948 GT 1 -15573068936897840535605759024193082018.7897358062837125907635275567012196 0.3248705967321588829131403538562698 0.0475659843535798467839571804081206 1.0487344492927934065493457267229163 GT 1 -565.0615484293703962363931675989428967 1.3524458017095057226084683199155518 0.0587577426143568384680753335526231 1.0605547257869733640043824201491320 GT 1 -132376.9394452845524270649748654390388742 0.6521031911406821139888313287181641 0.0635209783629185715012480497076741 1.0656281581635446117849273491736064 GT 1 -2501325821435637200327198726729541.0374944569332731926142765580518532 1.7447993137173656439514006147006100 0.0284030224818049398703236257087976 1.0288141926883169872009095841235045 GT 1 -62978233755.6046138816583943177218258496656833 0.5124732793237972059681512968917985 0.0162989623370361163799258734516616 1.0164332516068459668409751880533114 GT 1 -3303795479910709434049147645256.9959650459571864003445493281769608 1.7614151640439185997737250251758025 0.0683752384794002921066976715412050 1.0708251617624939035703139572157048 GT 1 -121373982732.1393553036797196616071338896623235 2.1979431562707171748633840887011665 0.0462405420922950371913378324279312 1.0473437798845865427427465645164373 GT 1 -66876086553876128013.5175180470340354554539616986866100 0.3596195202286765786410190261516718 0.0768272365411473712456002063297965 1.0799388859827710008994520331813683 GT 1 -22693378017077858899810.5471853906631690568560458451043865 0.1011070682311077156756396740541145 0.0305468461918284681698320147969197 1.0310231254171899782069286681740943 GT 1 -311043678225045400258366517.2360015169404544734832600884281645 1.1294771293054145607753734885321332 0.0491009411276665032628122878441224 1.0503473641602974705856527026644099 GT 1 -3767454385043507416574067.0983924830115847714093655205292554 1.8047411880088280395604404974370695 0.0072956344799816683037700618858449 1.0073223777734666196526279709534510 GT 1 -66515343229156518958181.3342522263496938547138034600184901 3.3708303164434468723469496538013596 0.0921837776010457086617535564002175 1.0967133191051686356851838336388308 LT 1 -10465262092375577401280309474964495.5475153893819661896267157586061229 1.2959444969069223347889036174253351 0.0791467098661335293752792719552010 1.0824545495155192685588784666025285 GT 1 -2269165778021703966902882420214226634363946.9444053143976650953950945257791162 0.0417667741498260350456353471146686 0.0242387354819855857330587762734774 1.0245373285166025982786699486205813 GT 1 -24767837833283044647477801053255926864039505.6189945036690431330589309908364425 1.1592541378169919585575775410476312 0.0365952561319697442075543416157256 1.0372816607084261459425955800123647 GT 1 -1242887589514732911022044249867054133865.6799010933462168910756776474537127 0.5142454915594151153984421038044153 0.0549000508682316304522991497020297 1.0564645908042490543746113913841150 GT 1 -8448152316190.5753198797900926844271103771245261 0.1825991073913136947817972078633107 0.0519768001131745437207921136864294 1.0533763045721036434335734197077106 GT 1 -48976601314.8404944197225699387717445742603500 0.8201351881018619687059957459148473 0.0566195564878381142437273860844184 1.0582856381410301315097650708182898 GT 1 -147737639869621.1737471167076306735454542726273158 0.6176525886763024297519945002678333 0.0202656637665645826841343378192337 1.0204738295439152298925130348900075 GT 1 -23847590137280.8946803280446091111329121089645350 0.3569682802811783317200214895291137 0.0630124980721314858851596455231312 1.0650853352234206400616012240858631 GT 1 -84981350622516834.4902792947162195056361069388189107 0.6807528549505681050605686567194199 0.0003019595957431900298205161756388 1.0003020051947215177869726104610046 GT 1 -8362341714212827693253693838.9323151071118276297173576866570712 2.6932512971527899371597992788311938 0.0910083852013675436825362813601934 1.0954194094911742031300922208280604 LT 1 -3818193422659780466125002640.2371878985013572189203225415244816 1.3965419450902375943127128317237192 0.0344344545524396311467901108616139 1.0350412918491448012744976014717200 GT 1 -2779308.5842732771218140556634554187001434 0.1661926103164904306968076324614148 0.0537068699685405126891842166655341 1.0552028953152268110223416842122016 GT 1 -345835738447298.0451826029959043637774514051635544 0.4324236811604499307733872151991289 0.0791378302408350802724495255188478 1.0824449067389971736152348999860609 GT 1 -971647057025.7123077047662625773662081306889011 0.0567132805618836110127481466576108 0.0569463127904360646127493422526361 1.0586320656155381623673557378351521 GT 1 -5934142869994237807314981.0301848184701316622293707891099793 0.1025133681219903802573857608643756 0.0230413622257411903324089046511302 1.0233109637881982400807552560106059 GT 1 -18.7407795650221530513826015532192058 1.3373019161284088167956585067734910 0.0532142860574393448794045906842070 1.0546824902367104034608191315007069 GT 1 -9800783825910243373957490221968298388877759.5743585308345558666563022077341953 1.8926678033149425942754233375539876 0.0668862170773731022648960895001026 1.0692281317413748138021400400358147 GT 1 -309733608308153725233795756.6367331410250449181668100953703818 0.1057117149422096627248551070846778 0.0158238446880002301827169903977771 1.0159503783259686999215791756468307 GT 1 -214606939267805588.7076941385994952660002791088987967 0.2629822175020301973712273449071517 0.0395547531829787881246747598751188 1.0403583032739289294112431745886471 GT 1 -131581644334522624190603539747093520212.7609501663066235164501221367875192 1.1816474183904038361936808668973590 0.0228495505922476374538955415817995 1.0231146475893045568896385203797846 GT 1 -164761350635634.4962867806026188691606818777046109 0.3894501866402981776178279443597207 0.0899308094515295462851275342736289 1.0942346487918989288721279943011204 GT 1 -335326812144879615739.3202596969395731130870643605305337 0.3409379276249348349151166210773634 0.0172797895454625468420577296718731 1.0174308275745641943892279459845424 GT 1 -2581610564565045678255454165195768988678683.4999050853484667213745170893604375 2.4583104075835041726448727481457548 0.0903255677140871908216870364151117 1.0991495736159028875164547929244006 LT 2 -1259161225.3215052775785028475848252036158149 0.7453646674689075954778197175711007 0.0370493328196861062445336216787000 1.0377530967617338799729324792937079 GT 1 -14049797942027387708909.0867182941481878779152586384758991 0.1529251186035744048726415562643210 0.0727065107234951584273890256251805 1.0754851623625756156070654124235335 GT 1 -2224458229784127253419206451787206.6285517113186496249771292900003915 0.1820767137609988153768071376273449 0.0952618073381211227687408942912123 1.1001096670109759916830257226382539 GT 1 -18.0681076760278715012092230050258708 1.0761220970286056886688149990231910 0.0846457339547999099300537644004740 1.0884441126342213101145028942723827 GT 1 -20655625605861.0823376674373320231158172672663638 1.0860281087340927482346881678232298 0.0768534997149848858452432378185698 1.0799673352053458993447219729936922 GT 1 -263949579465923160912274477589517327264.4503475997466194142325840034858297 1.1689813602413844259789227528252199 0.0759080729037445026852083279745174 1.0789437240896648752834888021999277 GT 1 -3189016819443635418.6356586702729954121934042285431961 0.8887982433799845684662146860198890 0.0746099549058873310535784950954657 1.0775399599756655534433356878549296 GT 1 -24120094761092477585260.6543874549596911855145050331468225 0.5294578568059074672975644454176748 0.0935341805625768943161557095271692 1.0982019555792893619464202458163699 GT 1 -97798024830409066438979355.4097812567997831678322547704137328 0.9873095651114962884534867211027097 0.0898274381696848843171482525658620 1.0941210690634692318365266274596526 GT 1 -53661109.1378683324747441076470440818110650 2.6707697038202627421370892930627260 0.0472597702711635969906922624673482 1.0484129940917309104806517822498625 GT 1 -10583518949433207.8353717469841037047939328391400805 0.3789973186662093008738396257117822 0.0811261840233292704419655793057789 1.0846064718462769808080008548732360 GT 1 -3766406409836199632.6850945859014918904361208477608176 1.4697265085591729132957364157612933 0.0981264393872019408574397301365548 1.1032809454494008400157491683103315 GT 1 -499.6652105438357505010851944817140415 1.8241650449543284752997803401642553 0.0930307282516329708415407069251088 1.0976467084393994822066365942055477 GT 1 -28360834186271088.3566644597546588503924428344968434 0.1091165354030530049799494216121223 0.0722835117920520229391184119149540 1.0750291012697415525965374024993953 GT 1 -101138357049136783124057565315721207703902.4071465648390842053433920028586387 0.6596415383844293290189799832819652 0.0335209389535017099075134592226788 1.0340956452901128565753176468825778 GT 1 -197975935506172793612.9221092277443432171655225023043297 0.4133389762894965454910614026577212 0.0021995215893802695973049124018074 1.0022019440898712964916790745081986 GT 1 -59223664919168618865349686.0605867986210342154803478615732213 0.2681431642468516211439517062801936 0.0904242078265228947541930612425019 1.0947769506054618165287504972889518 GT 1 -36365969203231781840315840344.3671735912710365521103256180918644 0.5144219654537130888283583714547571 0.0663471687290893912212745775500606 1.0686506108459746115201114369463690 GT 1 -382815652925700617172230620998.0351429053326474076979969589643655 1.1744451890592944751590948457052038 0.0912471911795886291557795649098386 1.0956821592776590529964829701620063 GT 1 -189.3230826436410135709921834249719239 0.0796299769001193307621850913922275 0.0931296418332940037232802343468994 1.0977557738497342585408507040466272 GT 1 -731001028653723626645538880.9127394713260791954820130249718380 1.5024170870224722964947277895547017 0.0558444429306562886511993847222265 1.0574643413811138127499807705766540 GT 1 -10179152693832675873579977995922355619.5726211137104520328237262570402512 0.0457012673917433964253146832245890 0.0885376528356810137437016419735604 1.0927049943679682667435390113183189 GT 1 -493608798.6553797502484633156629488581033667 2.0263049320213043828855187437714638 0.0077088784182505049136314897544310 1.0077387454145258629384533677053034 GT 1 -534700825546897470159183382424476.6573326198906517586274124997950794 2.0338546822652707683861691807205806 0.0378741281184436702329755632642875 1.0386099929240320411394955473428031 GT 1 -1043090741110.7747914713660456507262802160523020 1.9435234994143255113980273759065776 0.0943542806307711633206385956661081 1.0991070876383503752859172904822791 GT 1 -219042077040591446.9702980752256830415229869974866987 0.1887017182109866229705679658349466 0.0939450219596247648509147005178414 1.0986552926164761666777789975602916 GT 1 -146.7328830364693122959355123224967008 2.8507023302027692563067272983965575 0.0258910746189604876512819199583137 1.0262321485523685649939671794338068 GT 1 -628297.9987474635702874455657232144585603 0.2293948146789560826428383814243928 0.0733285789175380712572463483718639 1.0761562303141985458184561833802079 GT 1 -161560623360564313050993.5482727281310024957502662837387346 0.3376160334794781336057438928552362 0.0245651134557284804835536306984550 1.0248718699481333736509611742920280 GT 1 -16643973700684255.6129434710587271716137776730000185 1.3412553428021834767332277585735638 0.0465529580175607560373528896018807 1.0476713961422682117399810749555575 GT 1 -1224069.7185620950539459078327090784605978 0.3271608237536735888584951298184710 0.0562236483669830061984712055639713 1.0578660565485711854349498479749373 GT 1 -83351930341499.7698580167244459172225652413896950 1.6612707592912604175761292255496969 0.0174842977625125603484234812324669 1.0176389534453234829581788658797245 GT 1 -222524657000449935625936000308518.2254480187505135475424316638648661 0.0325147267753860023155612081097146 0.0545083403322649297979996706149546 1.0560502120037206046576618374896291 GT 1 -2588883334.4609017451287894521405880331407616 3.2960077165070768160216267822498353 0.0006966178589149075998274327611847 1.0006968606098785718503269010597377 GT 1 -528779556387534161594134158435087621319.3047659671631197028720535987978647 1.5290768170433941631043105753420078 0.0977806035908352681764905155501555 1.1028975552263452693818461349039898 GT 1 -2028120176505125.5153795877761770177032532258714462 2.0635216720626888238661288903527937 0.0565225586086916396664596595959461 1.0581828239545373507087074255928345 GT 1 -3521889737524101957943434849984509545.1141546707723949620822978482384094 0.4137714678118717740045295884990376 0.0834255851958055352987851579616619 1.0871120204494370870503512778569143 GT 1 -492721374413.2284698160919290676621805847292933 1.5044140126335915927838346489961900 0.0980155750960599604070460417058810 1.1031580263591268789063280322413228 GT 1 -1860452093299588398489184356.0489523474377251606303291532462100 1.3614626219378532951005392733163911 0.0815128247751607265640942075282849 1.0850273371627716800910952424592140 GT 1 -162604.0128909337364636642780872077822787 1.8325730949207380391512477511694169 0.0077955349388029021064467088026005 1.0078260789628499158022048055350475 GT 1 -165413.9117354274357448481324242073090476 2.0192039865901328568161833233148580 0.0554971320510939524572752729819602 1.0570965555720160793466646742566979 GT 1 -519057.0901614341111573528022598329692666 0.0290277026595974302910141811694255 0.0137502655091842253572217561380858 1.0138456760329224726536432634836229 GT 1 -1104247875889695639550457763.2989012781026185337712664940292246 0.2536279054843110262017278589477767 0.0129295158155953337147324112596169 1.0130138295508875933891716977152442 GT 1 -3464993065071640399012285811679125423.0719200136152211511852808162995037 0.5594350496666825002553347654286697 0.0466234340779832039339005767660069 1.0477453159953289675762744920317793 GT 1 -167900791054557197771863391506951788.0552295389660757890633705453918172 0.1513689529132292917926944262092753 0.0852026612917584874635571891914096 1.0890527259892057146836603509818141 GT 1 -727890812.7426567847844719646054737396764620 2.1986526273117308946110004041008301 0.0888583918284972519483499338730931 1.0930569512428430021111319229952377 GT 1 -250290535621237449603087405878290046477.9467528481043680151569105645976224 0.1939525315735591996556440420388814 0.0020667603748701902001563727425874 1.0020688990713839805924206497392399 GT 1 -1036991754.7798262079914421492237499125040625 0.6584480665408738674449083401150814 0.0012918036982546674599068479192574 1.0012926387959177202471243007460823 GT 1 -160651820.2656322539350499644876788640678228 0.6365378452263166560560358122409439 0.0196257674017972458195067562909331 1.0198209102131444115789119973101822 GT 1 -1053980272546276709061907.6027986163339905578171300111317180 0.4596374221584335504072329211147251 0.0316744535374044691753432373606852 1.0321869399154025456451070123761865 GT 1 -1895751388.2040875010012812199156049700908354 0.1052737031759796996926961808396452 0.0188507573523284310495436399470940 1.0190306978097977465015725357872160 GT 1 -928582272207205.1920374328496497053560362463921873 0.5922819253999308525490829908239736 0.0753729769207481327021618016747754 1.0783648410767673515559111952646736 GT 1 -224989156453250845315204815407285.0664287671029336490092193760518843 0.2542556948912082669009589700842796 0.0757617954910048183649219570373425 1.0787854434767550679429266106785732 GT 1 -70539506677281333098654.2501601406511033725405976802839320 0.2238319491695904940324163942563062 0.0452509173624635409631918348709351 1.0463067137174690515896714967105398 GT 1 -639235438210319932649664.3908065405660916596422104136048995 0.2855125382835503571413450827997795 0.0515464561259644856249766635290685 1.0529224693262856321412483863094322 GT 1 -18.6101239796051570769740847727722414 1.8136587268521692150074333394659578 0.0678643145771260078821005777157081 1.0702768896753692636203378858432141 GT 1 -4887796553976984206690.4538918320157870092052600355521315 4.9568899093767911665595751948055942 0.0267908460510137609811941195901386 1.0271562620863994401023696337330922 LT 1 -539.8810472677020079728393490267174413 0.5702047828132827495211369047055328 0.0010122869972174034457666024944819 1.0010127997057344184201994228592010 GT 1 -50366750774801972354225399340.5877024363549481847490635646858043 1.2112897957607244021613304811165023 0.0950617923185866769391371077330793 1.0998886164183828032835611423716862 GT 1 -156065417853176412170500997.2380430909836552791637831655170444 0.0397985840945789004845968165007028 0.0703862393674039937474397328681194 1.0729860902481419077326923779335976 GT 1 -7242989415849318725771624.6884626610199220480885986757340387 0.0491451878341763144692358400249415 0.0670495392241091616863341666423472 1.0694031762476983266302671996977985 GT 1 -23341223312168058457281918943500704368584905.1912144365808409616228009322132069 0.9630932661451060770424336300536922 0.0530553766282971466279707686686701 1.0545146633540925195044775160069398 GT 1 -147869192120.7433295737227911428673616078921385 1.9091901628510175882496983112313226 0.0608537341484469012366356098956679 1.0627840442243642872975332429605084 GT 1 -3497557412.9912694860604931223982231060445964 2.0647189489455084783898049172888588 0.0808776716786668185055161381985310 1.0843360552331107516335006852232808 GT 1 -16083214746910680402135672162217775218824773.5957712012909372198148963747385666 0.3947977613450699056693612095865215 0.0300776966856047193612044348858079 1.0305393103687400537120929659933295 GT 1 -10944611719040230743.9573951801269340537185269890240942 2.0335207241044284664158041947985090 0.0277503949475639938057409357819554 1.0281427121665367089528795596217483 GT 1 -35058185594167460.6797392179586033575900767716574975 0.0724405001289587876271461546606198 0.0654313111918468742575104868182205 1.0676701515152506881821665593694648 GT 1 -11560178786080654541189719959236977.1990166722067311259566685973604825 0.8707500558002987012934181111887014 0.0297784448808099806066704302223021 1.0302308262263224145275385701707100 GT 1 -3934767925695124552527822191633.1109708832372552144186420976078963 0.7366972218269911984504489109995462 0.0928667386828704935024781300081078 1.0974659142822665302265819553860599 GT 1 -102862307021813094820818449371256941303359.1636164223606075766375032142242052 0.2917043760639429756399442826468924 0.0311230951118182551427487157259886 1.0316177082998947595208733376770272 GT 1 -86668006776.8213060235687539002195256826196896 0.6117079436006513510503030277560844 0.0194788722204911942179528486344936 1.0196710856130672906190160611066259 GT 1 -27208602100812879957792856.4938201827911265920471914667923441 0.2930298234520736363613911025882594 0.0292432059285683549774935185395898 1.0296793116089319481855378136344644 GT 1 -599234070551951770861452300.0015219516433699730447876281610559 1.6740992323090121883259537173344391 0.0731358579478820247943553611400850 1.0759482807348286030125236316125800 GT 1 -38112419750731314.5219379729765094450626610087643603 0.2731686842806410024434523651868711 0.0334543820665730195048752539626081 1.0340267823442035319976420720374596 GT 1 -77667340867511538696256.1642483681051335800987558960234808 2.9833534932498789197488543842896770 0.0070545484101032079189380095218729 1.0070795493865217282814155348822071 GT 1 -2181321817684035398443990515199207659242200.1926766343690230183639609476793817 0.5530013842407975321977862721645969 0.0951152348421517162894393904701268 1.0999476747068260445769076154500321 GT 1 -1211348801548368991062073841639079602627.3138563537652235781534255094585839 0.7533548062248064692763299861483669 0.0635985616109141635326047123484789 1.0657110072825309730713872041254679 GT 1 -133412305.5025097899998172259007468043505027 1.7225914582490520226450447596903906 0.0926147093368935851848426402831997 1.0971881223056316413374867707458646 GT 1 -1240025086315924963027205866702289932.3158749559722274848540102243210420 0.3675400488681191251607097455180840 0.0138196945000315960956621960276712 1.0139160754787516081501753672441176 GT 1 -28512299262092677927526482180597339062123.8182088361776323181166681189490243 0.0693745368591993063234918172578497 0.0231248805825180102781078933352021 1.0233964555620201132631114711986643 GT 1 -177200785773522214626.5545538255027162312019247360336143 0.6189091741542807708993206600262888 0.0968281341831777538400485995682437 1.1018424160817700635995504485106915 GT 1 -288690066925.5851366747932000085811564233483805 0.4983261489715847386209696042044492 0.0959339827653584484061027314848299 1.1008528933419423887997097412772979 GT 1 -18373060885457603668839917495563122230704221.8498662271972124495233824602982296 0.1027270929314111695520724989509527 0.0360660274399069964319572782349517 1.0367324799122816966605703567008571 GT 1 -33785814848017151481253816350830130136984.3197161466367901345092189051503450 0.1804891905168099878463432803748242 0.0001289271789698454543990049630575 1.0001289354907930049665156015266230 GT 1 -16783183217627133856984117924.8187849694462607889543414779875956 1.3726117375449047744946192494117019 0.0658843337498161574519025999387342 1.0681550087525020798826531969375407 GT 1 -3837.1113444584287185977763910211793055 1.3584145785052073065553326512346710 0.0640951810550405667545516324131042 1.0662414968366064403240836365450778 GT 1 -329040200023393.8699033442927953674791779964929065 0.7774338930710333515180605878596984 0.0803371284392579944189126382835144 1.0837481200517592937041279728393585 GT 1 -806.0617369824594376371446418476304503 1.3695559474590224543748368397559807 0.0469047350230250376251455015608658 1.0480404170742162471105655886315133 GT 1 -257356123.9155855371284879361212577181029049 0.2700693200315127098972264534588242 0.0388661767254597440545702694840457 1.0396416255189418752268110460493887 GT 1 -4937175373255341998544548793.7447762130474375453090312987897829 0.6837888011404286367534433782685360 0.0909558915107020121007882907525223 1.0953616617912718223844805831345336 GT 1 -2218239431151281226199785702626989524615405.8254588060500126981836688311768421 1.6095699615193898346685351244221835 0.0249098389797468453602480497452654 1.0252253394183542091603577912350572 GT 1 -9779854472033696.5580881564006385597329401469414018 1.9880688540143027827048379361034354 0.0914597178107458394628556086602007 1.0959160529001875034254221950092462 GT 1 -12080957335904384365759006557984563378478557.7757874736614929996125387684672786 0.3713920287232519684105973542143632 0.0810065513481079745392113697991148 1.0844762854310850869897156885125576 GT 1 -9014.3493175722296400279196556252392479 1.4576585085584263480374876331761381 0.0759763265427442482859836312979838 1.0790175870439198307264871798319494 GT 1 -10412638903259090015583603373.8823659495292228587674727010863005 0.0261290214186951928222603146895057 0.0268426751181864921201112247767450 1.0272095193406202543861484717505225 GT 1 -65798328007452795067949885.8702980131532759801170002642101924 1.6048842531659778288762757256475831 0.0656299779230714223192761260939451 1.0678827499603636843639867822821153 GT 1 -110779489955323244007166964810.0508606172039013202510153159004579 1.1850121200569815036308247953047370 0.0471873973173590539801094444923853 1.0483370340316282955988085693368253 GT 1 -2090557138310468801314465647905.3987319345935813492950845898614606 0.5442985040466571987203110956513462 0.0093599498790557531900167774676153 1.0094040294807863410577284117177397 GT 1 -285457699234459029945277453784211545616164.0877869142771570654099030564240893 2.2551707574782760978892636858214427 0.0346415900674671481061352749753354 1.0352558373419850686501100844162905 GT 1 -30086321621.4272987396382724287904546963565868 0.3241750370463398364510521735601299 0.0321404019973823979039087602920440 1.0326682456110947561718746992929069 GT 1 -512786287866828185199683472994417.4717861777921416286373641397402837 0.0276188683926507197554944121204416 0.0517993463611293595728765435236503 1.0531891391673089825082884740693558 GT 1 -47794062324564.7506272254267264041739294531544540 0.0155158027605333902593781281789284 0.0106098225220467696596744531115768 1.0106665079940724904136628702468685 GT 1 -220345577651.8629000324547669365608526875802944 1.0638375071655579657149602907957424 0.0659299917906583244084319154658946 1.0682038883060448149633803038473309 GT 1 -526713573465290026923478042532982419146.3981750392502115028941179902294848 0.0863751614478008417740258096743448 0.0200333885049543210876987993481231 1.0202367778009263901197399688616917 GT 1 -1464331095484.6756293651970320416356678283266138 0.4708243037498289283059072464854627 0.0352855089922638232575938943648892 1.0359230856602982897702021268038605 GT 1 -157908704642678008.8101729037950286511253781485453516 1.1572965847355644033117101628140939 0.0968110831864985002419575261285130 1.1018235372433411963616755147553930 GT 1 -18408302971772173511.9880248577331662393579283149475367 1.3970175230654555131662285637813320 0.0995288279671969480956130281391735 1.1048371281680650129264474611504176 GT 1 -199681945946072511420578496.6851073216312779956110805812798030 0.4798674052782049538961114279321052 0.0577497019724065246674208227783747 1.0594843305413965195445031887594548 GT 1 -840120115999167373263662536863668337.3233966699689874935208406961923335 0.0961060395575637733005245291828048 0.0801612495039334965007304246572025 1.0835568955007705467042903334206358 GT 1 -6045240285.6307761169490930710441163941360083 0.0821466838649625377849183842133625 0.0205171744302824359340588260210639 1.0207305756259758612441274458026526 GT 1 -11354030665668336447873049.9529948829731336125940647881627204 0.2011275028219168776740380356939603 0.0408951305326732058698063188338197 1.0417548571395198908141076637409071 GT 1 -31585468364948473629562090578094886935.8811247019814648403933560823258960 0.8052845397894925018932413378492489 0.0575231010367182775264090408983630 1.0592438703441415595191862613268003 GT 1 -213590298712574998876666881.7672270449030690590233983548718154 0.7111170844636277031604830008835706 0.0984510434874862918823684325676633 1.1036409321976058497263553883229531 GT 1 -1454329.7708150056215925437763989833883407 0.2952182439667382225704130007678891 0.0276492662513226581884541612074267 1.0280387024177830382410415407173675 GT 1 -22386993215744900827247264.0617173663152199873356237552733830 0.4069917125673542171728971774534828 0.0688737880627843229580452516012661 1.0713604449027438446700186611679912 GT 1 -25876794.1672331251272753912003793270546112 1.0656557293388528324485320749406844 0.0523286201173748421788716235940105 1.0537474825160553137454907609903597 GT 1 -1875569118176190589400.1533354957614052931217879338040332 0.7043475562741509057705833235176918 0.0146231032895190675174713197708409 1.0147310747423357268767054247126960 GT 1 -297223378342077450616903319.9940614055494842008886921507116076 0.5764753882680895061968260055173338 0.0604897456433204618890647329037590 1.0623965454924080483423270546946924 GT 1 -183555710925402430189201.6196826420385236335570107629179053 0.3140804409580714545176180873299037 0.0792470443049634210290909966562734 1.0825635135670437629039032777784993 GT 1 -163643162397589.6505088215295042636436097498456467 1.3655654264061168631858508217119649 0.0490690875677148308450268680713950 1.0503138663603518739028385326377617 GT 1 -1378539196078504545029856791806.6905214449023595649200853305344120 0.2986825643015806530565697426041294 0.0287100644636835531604781964283951 1.0291302604762789658270378927311787 GT 1 -32334391.0484095141879180184167481943308508 1.7257715266638731460863581046035870 0.0687776665348748850365760743280555 1.0712572187604279068311241657249188 GT 1 -6524993235349.2985204412509071495028422602380931 0.4463846358595048686382998510591984 0.0770763021211063434521465742599169 1.0802087154165912172580461449792873 GT 1 -3269658054944560320211829741823.7816855765600672391832551901199877 1.0929399806181485956022245219594122 0.0494469618693038019542409514891059 1.0507113183677184703508247933062183 GT 1 -16226372846674570579437365.1940545766336744835408763525830206 0.0522390493351800245745356986183131 0.0771848365164690898543394221708100 1.0803263207807733717311980097167262 GT 1 -86934618154052750436917368809341023.0385535391536540113604958808897495 0.3869750619592993813045208422718260 0.0007847497630210351411536725971994 1.0007850578403025763450418898697531 GT 1 -14375540015066043260669823545744.3854641638573418411654759113956715 0.1780043609353606562196801681913048 0.0503807225369315562502931415458660 1.0516941352787186575960543330776257 GT 1 -261052602511.1266835399842688052971363874138010 1.0377687486731304795090686267852516 0.0030916130622144533171561159366618 1.0030964019707262173668738888627364 GT 1 -5217720345679846611950655066.7769342446709467732982724995924482 0.0816414534232456976519295983950798 0.0538251438979991471793764436203562 1.0553278896934453519983561465850363 GT 1 -560531566005379172230032537516.1469455588536751643724841623360482 0.0040770361573541630398542934557651 0.0668703964225279993471483925770667 1.0692111771951886901213086519580367 GT 1 -1537139012903287794076619082645107515.2370598859254519471997470482174716 1.3614264444634440155472923327742575 0.0988092422163340053680782458090717 1.1040383259319548028905082141721383 GT 1 -1096702976252830872764759202161375.9472701436793034450072809165669012 2.5860161649291268597680318534531945 0.0640763081735140138105194571846868 1.0662213316543596817192504509712673 GT 1 -29152958256267534093695094934048.5973016216228951806427398087384438 0.2856019444609843040147293999010823 0.0944624371493173202270014955163814 1.0992265195254889917869900742380210 GT 1 -44319564071566766710567.5860149844675471087267726089572281 1.3560624261785625427364272562952577 0.0098597895325898095090151498637439 1.0099087191468628500751373678182098 GT 1 -6835925146863440641481063043.9752898335719766640644753440917555 0.4660697657273668970196117245574421 0.0341039475261130699468751579475244 1.0346990566942671462754216470047885 GT 1 -225939705414361017755969101531.1776400207212742266069972945993348 0.3876520454629549612096535710957805 0.0352421699980060681879871173204585 1.0358781625030255661720428630760648 GT 1 -13960301749749158686459265128330678168152.6480388365776331726765566803393265 0.4163624458642084273840069319175869 0.0503982242343468056492147272210962 1.0517125656740494080684807469765845 GT 1 -828106085848133488172365267067460163.6498017588109754486211763688376506 0.4273248282795620810381326415918704 0.0715494050395580055528970576625120 1.0742381091253096427356561035602839 GT 1 -896207872.6381362672395807665788216106753175 2.1888886534817516035589617150153298 0.0850413540018897503570340703926775 1.0888764103584496199787790754906241 GT 1 -67038604415614492577292003144249349.3862280583741868400071852811951504 0.7707667323911461620654353731871364 0.0516808030829481753475089299359786 1.0530641277910232903415200341309236 GT 1 -85482875926370.1883344714627614545371642087150903 0.7215234391738569006957990784397302 0.0257914810007515523810229653306897 1.0261299130377372617413605547952871 GT 1 -935340.1332382833110385942498153140429995 0.3634637133413523056762108557746886 0.0979966200264907790488556049431205 1.1031370117275216873098611160926316 GT 1 -4033896173757095076837054107512.2456584676947264185952625520161654 0.0634409452747176314536747069977917 0.0118902530483736793578674370405976 1.0119615074926327210387213201654300 GT 1 -85457548669116614.8661876294619382420399098717284037 0.1919507885468014567787850317047744 0.0059574987746425990950876999210260 1.0059753154676611558850978863531932 GT 1 -8.1822144356089268185626149760380615 1.2125063811417654016521093543794312 0.0225324992882367297337464018063584 1.0227902350290165945453681711906182 GT 1 -23117161991176117873347508728093210663533.3778066205047033461609616936120944 3.0084580179302048639949763727516528 0.0923636300158434514681695005649002 1.0969114541775364948439629590400017 LT 1 -12022801103120309961123523211479298445.9249903562630739638749935223568977 0.0656550593104694528751744892376162 0.0673867058251914000318940131811140 1.0697646397504690637698976024619134 GT 1 -8245804824451916.2129714431829801488236520462273088 1.0975188027142758674167535004824516 0.0541366177913000639096399409718091 1.0556571366291655883173478295576008 GT 1 -4015996372295.4575118650914084491112029646799381 1.7522005845821702877956226791617267 0.0994191541265209554226087821723927 1.1047153395248485339265440114100352 GT 1 -748.0836113390837808539278211289554039 0.0724217054830044357657668250949350 0.0713309174732430147984429284361412 1.0740028118852107584963855090050237 GT 1 -1180684170759241508135853906832471045579321.1443360817384976220419790507800631 1.0066220519759266787184325932276531 0.0560291160217055132589639781707603 1.0576599565556310855709506278223351 GT 1 -3.0570655703596226289845280182060046 0.1179774135019388140859158697344149 0.0805115187930258773523838963687114 1.0839377622517099343287485304730185 GT 1 -1709125663241654897.9389279885010789236117125426418197 0.2949109596519075023503917395285616 0.0636825793648531733467559939192362 1.0658007353840989324249710509133133 GT 1 -58709838046969037.8077664196703290063032464747591522 2.8323858560058956672199097036463995 0.0632299223750387597793169081233375 1.0674505901688924028626832909554802 LT 2 -3407533590132174.0927517667447569555684971270650467 1.9511824660508615229265604621446047 0.0960371926553689839231066409773132 1.1009670617542149743517771985837212 GT 1 -858804954038102477608.7881858057355953721175109575077163 0.8473242348190367105353944577597870 0.0132807514322777480774202592145611 1.0133697292848477056592596684867334 GT 1 -2232543917368588769232915.6687663658586757354623101294588058 0.3838124600898827700019555715569100 0.0057106986597423227245485615208580 1.0057270670456932632858694069855742 GT 1 -8057153356.3265301427216373533319680530225465 0.1732389663007852195288461036148038 0.0400326215083807935369085724770880 1.0408559758355101429018982690832991 GT 1 -7392034721515392349455.7696661519269718848664690104252969 0.1590982118553064406809892972368986 0.0803918111635329990520759947182853 1.0838075813519107862362959165472312 GT 1 -240117764549234814695332531271883191.5349142397587274810955103185260427 2.1523996311851598296318323883529670 0.0921590786760498098128964015089138 1.0966861125093828491904567219135234 GT 1 -1.3388449796191827036861982133563479 0.5845912087240757416377781696595371 0.0131919264931341514674729741514043 1.0132797128577022209657305296753292 GT 1 -22276111686187523325.3671563947514559846168464096151308 0.2577162634138305801673908458225080 0.0762388164406807040608358817265605 1.0793017000982133460289036752104923 GT 1 -1184095234290030177484980088124.5111127683078108890349331996602169 1.9965003108252525910005443031126885 0.0484086620543249275902759123209724 1.0496196032159540989368511175944894 GT 1 -116849729839359097097519912813313818.7606192968607772363811149959662491 0.1755521936375799950200543652614977 0.0667879468209454006067570675629622 1.0691228229527189348590709724406054 GT 1 -299460646749301200748459000612133919019315.5417584937574892286584316717770344 0.6991259644583514467727070967391217 0.0597826048017312813758101344125470 1.0616441589696954423955097450655753 GT 1 -86395249664849154528044339279229433.0299976464242848715583610071070962 0.1096794986204141943200271039055736 0.0512718995342744990428383936968016 1.0526330330517719750687032646834569 GT 1 -268003235123.0167691956064620712785640210958947 0.0825205170715963847065758278003374 0.0614135957603355408403636377219297 1.0633803608751809415976527418780693 GT 1 -1734466.3585133279212911764281602704512033 2.0839533701787169025770755628041908 0.0093356893083655345630395939643248 1.0093795399867224595250310764036352 GT 1 -94657363625843944718059753390609.9072307147884678094287016224401806 0.8373503643928427205395394375931281 0.0649914270540565455891600791125050 1.0671995808093416675172889937356188 GT 1 -23935093916.3790811056807888146712653151119098 0.1870263291611080801027067399592406 0.0113693842226899539321627172893245 1.0114345097669227231914603883550617 GT 1 -153.4810048613075919591170480484585742 0.5249995927636270313171233378213726 0.0950064366540771184501325551991291 1.0998274476324507258274205326856835 GT 1 -106071261476676264093207830947153290227832.3595698084896176858461272700121286 0.3588823881330949585736000192739996 0.0802970454943409733870084537582601 1.0837045366119069987756329086932040 GT 1 -15986294797.4646327327515581391124854467268095 3.1898415295984073306418931928723534 0.0672667162482908161576588834308951 1.0696359885084039468948217351236801 LT 1 -2920669606337833453678105979599744467492363.0432963078775964171623589980047589 0.0431493262293282128538387608830224 0.0759657410412197940284605689244003 1.0790061312325636020852399554014351 GT 1 -9458250209.9211648770027751152888577050339610 0.7729354238936543753728902705945741 0.0395537716653344666996653345889899 1.0403572813342128983397050756471960 GT 1 -2425.5809794127602699786350204511553961 2.4868071966160639370331083438255927 0.0531634683903339631187100150388143 1.0546288177925500726136208932687187 GT 1 -110035945666.0195165459340876685208061801114893 0.0417602675091090281779921725543605 0.0972257328808989880706735441833174 1.1022827378575905157705069851948596 GT 1 -11990231170071650.9686082219929682911112758392910743 0.5348176976924715017641844178315054 0.0827609149872751333404046688380864 1.0863871155038653962794522295182519 GT 1 -18331184244071571050211098238346.6201041982212892559318762485602663 1.2148528911471561783153310598567599 0.0843880476146047204860729233656427 1.0881626368327535924541428860656979 GT 1 -142240631431332656128193509720151574.9118760219001281255956180292317871 0.0035106662233349339644312034573856 0.0269636293729039809800245578654201 1.0273338176107794224645400635963985 GT 1 -673530621038095528855439474725.8929000709537281196780505644431468 1.5148645276482170761430132163867625 0.0929317041806030330974938718745368 1.0975375331137075611083518838355785 GT 1 -2876998201766388191239.6348882904288281982392988662509765 1.6380182178117642652819518987293537 0.0423034523240034290091137532902641 1.0432243072684152889771955450446201 GT 1 -31549339849711000.9350852104623260912174191427907148 1.0033228448882711729706848693110025 0.0285237769866055324236235009064926 1.0289384849742926399690684314554999 GT 1 -5542656340983.2636021479010996871457307513160947 0.4115516698018302842358917123110162 0.0734843282815398957865487836201453 1.0763243184311227043558342535912230 GT 1 -4765349962578169995741810210082.9529479436582897280827448110984832 3.5794642961375038502248917728590170 0.0264983425143364823257066333464681 1.0268557515666443622540401172864679 GT 1 -15830945347413491115345080319483.3313154641489387684563452684010624 1.2945611471871739100811507101297023 0.0706653667857551920017743334448336 1.0732863970467306750607919288004079 GT 1 -6100286524343804153023338507.6048763144755140316133222114127635 0.7562221007151402842391446839909479 0.0647401127891750655085922502913327 1.0669308340793957342712084348562064 GT 1 -1503565338030556374686132587772.5590307062311820043616803044692529 0.8428315730488249249282229012216867 0.0705135597149797256571674623821031 1.0731230601088432739597260380097991 GT 1 -31336159656476428150800292.5283426646088225175070618910176551 0.1817730111784732729360460860672364 0.0636333088021716714528325457659452 1.0657481151238195361128018733071807 GT 1 -277796704446071989030439911.0446159971911641784406564736862785 2.5506385944888318447227981997270470 0.0742619755603754312370669899406999 1.0801411364231850798620926907132354 GT 2 -158.9203198220490676334448748568266174 1.3781501092427754739677172840059698 0.0031922488619166515207257339641297 1.0031973549578297784464597857816307 GT 1 -19341798748.9231372025494326306717064111830997 0.0977181369776701160604978769491645 0.0687384217520684255493782133323482 1.0712150763477440072012967590642698 GT 1 -10375706599794737276707314033461334845539709.3131583688705076726488246145273354 0.1069495420374108996507563011628376 0.0245038020956904226885935696321933 1.0248090165131279320629515617840264 GT 1 -28612.3235922178630506766462557394764573 1.1104495847686223856300152963971162 0.0159504886016374129166509681701903 1.0160790667339637322238376499103026 GT 1 -1271609195996445511381125626.9319028358879399197596061498133443 1.3465531437244360806161295542580720 0.0363529374781381928847608926060411 1.0370301691249562771298525377172558 GT 1 -370373488.3750834949529169707357989412718897 0.7975814678013178834064334787134179 0.0070603713597206539829634491419544 1.0070854137234618978874343515847175 GT 1 -1344915570378111398376318.9717276497235034886433056159817821 0.5676791966039271619096411666325500 0.0924975057812664372715016307734954 1.0970589643965130797733147894932647 GT 1 -9620685646312914478713925355104629718042.0561844539392257205797774824881589 0.9730107741220540350762175527255343 0.0945992186083140861476293643511079 1.0993775809458755571857291086534190 GT 1 -1476768875875081170036852.5116752757744097714926378539238564 0.3382572174507410578504167319705988 0.0082820022275750661903357964086887 1.0083164885505583234945870964973631 GT 1 -1328324073792104150.6062878083193355703016537947253400 0.0534310164691872548747670294333492 0.0286463196550311648397123855860419 1.0290646336076612252620955498879708 GT 1 -598404937.9174232273088200622948277484930873 1.5482402806479193427214006855214720 0.0839879203655851245711466064632866 1.0877257270211440682121163973504149 GT 1 -17675106012.4134584490073429758565371259176150 0.0786206510936163122704151039681642 0.0488570589521104100354159792367483 1.0500909216875204736882724722563088 GT 1 -95965128009.1040273705129543185457099417820494 1.7514629030156230815631962699880754 0.0219216888132138200952031392336607 1.0221655393648493652403995019015096 GT 1 -40423665001138030130932983415178823345.8212717155546313201094505332420070 0.0270873996290397142484369141253998 0.0520168789736415991096331278205006 1.0534185817101394719106624538425973 GT 1 -469666638671254879592839489201824.8003761082968026703954165282428254 0.4541287845056169336681991178470345 0.0352839248988292541956200636572509 1.0359214436282268646059212328139658 GT 1 -7801.7646520789617050593783044104412008 1.5524925357816158205008507504789808 0.0847362940185660342033833317829117 1.0885430519707992654515284412644922 GT 1 -461204902.4583357281847739935533724679658609 0.0560496570201961699221176371097762 0.0175336568767547430920942682416086 1.0176891921885925116067909198048058 GT 1 -528957095539599995654125.7913156975700276085006702053622296 0.4897249776338455755169180307188672 0.0925428939837908144974618809573744 1.0971089800580495278768065715615860 GT 1 -423423792758951461342713245553628.5793831316784481727500349732667122 0.0007698894698858426526035329175112 0.0947171952904187976812607674144201 1.0995078927056741703305225116831526 GT 1 -1659258153192020543611762537955473781218521.8768940993106390294364097656710612 0.5774879725067212088030186928718807 0.0759734241417850799457462114802644 1.0790144460027492826919521590588438 GT 1 -294645746612592.2581081712926428006219515993001824 1.2893005664545697613146090614485162 0.0055920645467358844232214959560778 1.0056077586754172098097717040511909 GT 1 -63750148834496.4344891867121634308173428566536273 1.2298757920338292366946237619161507 0.0582200260826742721998898472595327 1.0599836050244463350289677939953085 GT 1 -5572618929138.5468440649299679720661527874347570 0.1743953279516696125201882009742176 0.0618034221678397754132876816471621 1.0637957806832613006215901197838715 GT 1 -127522646384377.3267623038976589970216173516157882 4.0365698157462994640520657505218352 0.0695301141792797593305520888732872 1.0720655668617762189673122381492619 LT 1 -9371297595138843157067570335583798289751.3805769870548580472131815929907448 0.0997636070302064686652405286522684 0.0721139685637274117817620718754799 1.0748463646901114390357271221471674 GT 1 -44551408742874623819449501192700848.9699798643880595191005744900186697 0.0512648037480837223303476015139427 0.0103176985626136982951309291040936 1.0103712949943800870689183767965537 GT 1 -3328106726636404184385522176019966319.6493849110204064155896194532057203 1.3456060757237829379824417904123875 0.0681974210114264597978631133868444 1.0706343118542114855054842043585754 GT 1 -997344854268002486537601896063417845378013.6330033853168219997715600122854082 0.7153809119628718938923605101224805 0.0393931280692351639830430472881811 1.0401900359869067217037988380588820 GT 1 -216866872354812.2849872556035238336803343448889760 6.1803507390812805427470413559056324 0.0574547416705240063880565088967981 1.0591713413651481086772501456447834 LT 1 -2199677316518913297097367575490631.6868722724474881049155528013601795 1.7929261520806448719332739303719275 0.0752673120062056402052929113805779 1.0782505691868534476833930629463472 GT 1 -11185442228520871784247215046052.6530776464773021512697988185976369 0.6981030274990299569261435809617276 0.0967347839628263268429059020521692 1.1017390632206355756908497448609286 GT 1 -2995300824988844935229.6138082664431229142888557013853081 0.2862942853485950756275783082874677 0.0430677560881249441652474404027627 1.0440226905457146216722008179659217 GT 1 -10.7435169901691466381453670560714727 0.6997116597795869525887865410696767 0.0531368256573734955532404297655491 1.0546006795054938072490478015655573 GT 1 -5760616013784849363639567.2628058571960436164892644550042965 0.7406816286701014663184203136330484 0.0289970017070824676558487064108511 1.0294257228552936886380925676522375 GT 1 -444159134.5126380161987009741252877660635741 0.5423108058565102723783854221817700 0.0635114152899296607607264232612168 1.0656179464834743465003021377681562 GT 1 -378437628533561386148714704079263386326.1507312597670452576789113873404682 2.1877228465863014889869818510204497 0.0774689140819362170161479065448323 1.0806342061630459983562745125464215 GT 1 -42792120441139069.9935988893995698833828732490511435 0.8586593272413189056270862268665481 0.0403122811767762102801930457107740 1.0411473403319397689903662027567787 GT 1 -1000702574198772276353500481946092216474458.1428335907099736105000453703328047 0.0380535761814089190011261812274945 0.0407464994179313679848757636702104 1.0415999005710707788251389134786482 GT 1 -3961262351439956062738722998821690572465.1361011387648551685296811678519363 1.2073159829186057496280648358963036 0.0196797353181258967430611057232230 1.0198759600094458196656359626157322 GT 1 -3600.4924496500592329406164997358853738 0.0336748545759027299104669745451838 0.0054597591464371613163532298755770 1.0054747181044561883707255222058153 GT 1 -1347537239919915560999250720250459870220.8093728168965454609570387860275944 0.2454573056259432131032728923484479 0.0619836493891133410193044236876246 1.0639878987729468506762181920761140 GT 1 -122660168951189071304443975.7080148240004092074566688560749350 0.1883878564574623653729901018964351 0.0421707311645965720224825306060894 1.0430857331406481607449035199521387 GT 1 -762924027461192.0561537949747326779625019564755721 0.6108342912213498017140284421084601 0.0790772021916406545445011174520526 1.0823790705525976320231032890173137 GT 1 -14857172.1672922961730045996493954145548558 0.9728919945431946841381469494357319 0.0645087071096647251558187558050555 1.0666834407508205649750338362132563 GT 1 -403617370907859298101.8501032859414062365304185770099861 0.2393682851065751761661244811099337 0.0110176854143052699440501893538217 1.0110788296369107661404907698553119 GT 1 -12604.7089992030080360308981344061361670 0.9167438935716716850528096386875328 0.0420365723661556172420382413273623 1.0429456774875417406512373168075602 GT 1 -344968.3382583575972574060528695706011071 0.9101779465227627244986810275749625 0.0166734662986406154706464871466708 1.0168140332202626342102453392378188 GT 1 -323230975012619972630799123928.6356358721455941413483898909507333 1.4384986887040126084456448003162122 0.0214497929708936853119655675684413 1.0216831832639580345478616423009946 GT 1 -14487655806.2950218244251857624295588360706162 0.4156352784817254034147269029043139 0.0498744896100675207903128560852041 1.0511611869141981434803199481229165 GT 1 -996893414711061769731206514227750825708811.5920272437766455330923133566016490 1.0126595752590681357158947842271727 0.0806758821805821784437804942449538 1.0841165334740531687484780076595325 GT 1 -1607562026476668857.3683437861122773086279685447215339 1.2356522077281906519957259167294976 0.0136393476495113285866765706622818 1.0137332180832637940057276280315787 GT 1 -118040457873344853597704607219693307.5244173321150741021759439686859793 0.3415151790064836186432568759628889 0.0711386191030093704377600039481514 1.0737957645449844572254343471312465 GT 1 -37483918688035327298067720074187327.0885298794597642476855894393360757 0.0111896958806019016900638163665964 0.0304594027363623642162832887378957 1.0309329307422694962114246295121256 GT 1 -1351442073262192448278.5869751337044674961231086716166126 0.3854006117146649868229808219224197 0.0491640598706460153501163230743480 1.0504137443268672849697093912035474 GT 1 -39.9039592662045026398306646751232484 0.2415541269424075133947959250048419 0.0606243889456879036570000468004781 1.0625398679848240195991327426503072 GT 1 -294787613.8169349285384695828443509096279577 2.4086177010175794146020885582202770 0.0811575298861274641521429204958228 1.0846405857767443622558892336191392 GT 1 -7.3235003890521021606887177708748284 0.0807577437817867726986008468969325 0.0253579040492666353742058381464526 1.0256849564512114423142639983408060 GT 1 -7750396024166214307940809442196335824820.2991577673475316576002973975401821 0.0446082213779197908223298892743506 0.0492934917734285059712790163585191 1.0505498779199872148875080887427010 GT 1 -8925480921587269659998363275070513747187699.1219504026237500027403367271876274 0.0246458888779018632573592136587647 0.0412238145044760260254626702174265 1.0420976145531459149337059943535262 GT 1 -1329586801303797820124435.9519580073384563283335087263652715 0.0556715868000794516694844243070973 0.0579156294088811871358593273982267 1.0596604430331601564113191714294751 GT 1 -115743773065802791240043.8727649184482647473387025840765507 1.2501363038356307336597281578289407 0.0475757900948458611769347849799608 1.0487447448004953108625790166208627 GT 1 -309657691280563966347379432.5903503641626563233928432080309134 0.3630660931201027643788427449280075 0.0068452674338442640982106851768740 1.0068688037466964624504527056885244 GT 1 -1055056075356823073335.7283374084926056160776341582349352 1.8858657434992750157256637223892798 0.0564491863775468957308101513815244 1.0581050591081586359213590061620802 GT 1 -1121869953508727290615073.4047020290120928389788622107777561 2.1914869398795922644364418571118638 0.0710363846003680442509616525031810 1.0736857062747509147286660856217294 GT 1 -789008641953007634509979744691401.6136622492153898969414912107010733 0.8702722409223213593790681201953729 0.0614779455272877098788142263488099 1.0634489235271456752916013171392393 GT 1 -1435.0406190550744837944257726919355119 0.2275969938392793009158084847528194 0.0013170373232105340404895573319725 1.0013179053791243000516135871439088 GT 1 -3201455363429960526318864393608.7837382596803724556299000946049398 1.1976253894237821007940149142976813 0.0770037464672351095958923085892680 1.0801301034986116619482638645576791 GT 1 -1050689484486975005.3254033339396057061704538470379133 1.6539111102066098451988460098691331 0.0024758818782205122621287109558678 1.0024789519422154112173899760126365 GT 1 -258147025279350144665.9146957019510216126139733059547796 0.3960937320065724751824893648780260 0.0673564025426924032776897554866698 1.0697321474083819133199184875348122 GT 1 -5103581687466938.7240532292803700749670114713199943 0.0561158379744055805116655038098908 0.0314977411095668905322693393717186 1.0320044637780407012729089343279848 GT 1 -513858273192.3063363385052383441270370971237339 0.1649114223506952785608742372422160 0.0199033669301924339791625898890434 1.0201041070054169648745281356232160 GT 1 -582912.2133326212939515019491977111051260 0.6893558494061477422728333304206417 0.0468470457840696460164517950044175 1.0479798906030125874668488219039027 GT 1 -1843656726768998642202043879.7545560379896442291817560201064236 1.9083343892247126951108136041922818 0.0096094024517674476908578332110579 1.0096558706871035002788901843359907 GT 1 -18700963647037686483933739823384412587604606.6127298303375332486511455798846920 0.5221725704113006313863122681454079 0.0111531171721678878072065527552014 1.0112157795396135861327726583526678 GT 1 -7464308248923570350701987.6275644189852553474538878402627809 0.4927192563502872671276044499523046 0.0266658454158539249907770258515746 1.0270278286374402604690982220294988 GT 1 -11829903984153605669.5793394207501774388349594369157517 0.3874796480473543781273084185980448 0.0973497550134814843497020601683045 1.1024201261914100612994880124063686 GT 1 -293061885969231058.4783881409339519046237016827833361 0.2834921145487614175660300783640337 0.0520248736475017679661499414449659 1.0534270150961291357616362150492267 GT 1 -104.3946573466477417353987998962378706 0.0796088054129925453537938175567069 0.0684907993247866771854109111859685 1.0709492117211972285016990512668563 GT 1 -7082450996313828537130.7041418106754160028872160254359775 0.8142111128729498836060488446697768 0.0371595314758435050451645191175569 1.0378675418375622782267527559452370 GT 1 -49981155021961034830313073393451683745.3993365429003588433713855138564428 1.7653612780330873644731113263078802 0.0437417351470583600672560691716893 1.0447272508952734434229962037629825 GT 1 -229120623.2293988999973225245763123957033181 1.0559322567990449815631729045405942 0.0524789117071137690822980617676808 1.0539060854997392444284263516918794 GT 1 -55892185608759221447758047.8833792344282339076260825499337591 0.8266834159311856626465719113605596 0.0998209280837270637293488693786109 1.1051615666536331068427108586099500 GT 1 -14978403447002498122432154538212.0359146435291624322868574017685268 1.1041369689361412958598753967440783 0.0600265812349849793303187062311745 1.0619036820274735824900930285933319 GT 1 -41575877251.9680510705067415997410230981179837 2.6556700102955968348759288394945889 0.0599751638339630414453939241780416 1.0618489826138971121483086267194922 GT 1 -8207668.9116874764831384490281058095857746 0.8815978119796243653206834876013545 0.0659028835052249656104489548211261 1.0681748670422865686260151887202884 GT 1 -11236319408760699904472895662571440393215.2137842759586221235404128758449578 2.2208672861500761443737265803046233 0.0897094207392720705830318170927183 1.0939914125734098791382672979042704 GT 1 -15816999523381412789968043.1201069773779847337510889713690972 0.0491207481782693804801024435459485 0.0216127995506726282714003168904619 1.0218497768193093836552609908983753 GT 1 -12147048911201245.9875920155917397661457558592442137 2.1595798786134209827832289116666037 0.0362774942277189021029999547000763 1.0369518828930899160642417910306392 GT 1 -308.8168177176981110284744347589119725 0.1910836607443185649677241450621113 0.0063586448562572405038964021972165 1.0063789471475939919761591939250224 GT 1 -330583639999009498230307737947958.1410189255020719560754399821438749 0.2457415346465651156005465940065833 0.0717375891005422254378732057272858 1.0744408158021462599396313912116342 GT 1 -992444713405684376151541762690043654436558.0288083303652162225700217278675242 0.2304849806479402489181709224012620 0.0351971817804855238513412609265455 1.0358315319733553407476754140497938 GT 1 -109520380508395904336611143256989471.1974064020093274883211500447914811 0.6514170187948224773401495146721084 0.0017430049799861042903181100316151 1.0017445257805985149719926419505020 GT 1 -58.2936349689841144687645969089171568 0.2110937827945397254728934189983711 0.0213697877932853251697885850734255 1.0216014277171861526191737263147276 GT 1 -55221678958703921573905422028.3527225075800523529512493773952841 0.6757224938424342316660358303979836 0.0227000378917892287717955686786068 1.0229616504092593586193395394598634 GT 1 -115254267335149197504859119.1744061343834517152758773037851475 0.4466217693090070331482599842272795 0.0098317169961833826148613889793519 1.0098803674668080927763469939603453 GT 1 -2174482021138419206488436427627058.1214817755921124846065175407520364 4.0699190465238188685184288367095874 0.0172729547043155071125428382961518 1.0175756682440558145512294678311152 LT 2 -17933543895511672337.0462204950610490672438253982977627 0.2742023742823013466231818994968266 0.0693530510286714564678232191459506 1.0718752906278155478230545492191548 GT 1 -3948083785838926296130214657072.0768409632347339409155458572882683 1.2764774364299717236027719688349529 0.0935527922923232341525745933647760 1.0982224879815263326583418560224886 GT 1 -4437125203942457527083782771.6948036770000073785231493388869470 0.4809639939244945262546240986368761 0.0449951963636302488137562239117308 1.0460389085283296522388431496771277 GT 1 -1102543775292233.6890671258695941208621990981766793 1.1796750835365654425362227506345958 0.0139716793328407761150907528141638 1.0140702020058274177130636599996841 GT 1 -40286248317493384765748610956.1580605741087078377679466771818764 2.3365820991410468903641552990269845 0.0476267873437631004481730878458791 1.0487982909134051528849657601266232 GT 1 -4415888370006340314206099256.3964416486340129804185899519891533 0.1473169555253112659783058546565915 0.0934867543509453119666778909877842 1.0981496370362287026214618800930656 GT 1 -12884699714623888445174709437.1475279770431844592011304918283977 0.4598180286209177656768334898866572 0.0398329569151616556902808359525603 1.0406480064436851101989323755179290 GT 1 -1295710246.1958708610148594871233797768382096 0.5012804544026693645381345734453966 0.0435704518219358987577680622927131 1.0445481486660299845501799507007928 GT 1 -5136413033997620348483235326772.8547000090541504322731210514193257 1.2400123960883456866708551071868129 0.0699416248445644534738294067733863 1.0725079258203863992887482493118565 GT 1 -63624915514661403104890428558561844560.0186998376885458895388254403870855 0.8850137110018691334688857295492060 0.0428207404031852723200390576452108 1.0437645909670243206451680867051723 GT 1 -8.6931673098531098497952865537059061 0.5149580161378064807501455521120246 0.0323980660497976583393562648437643 1.0329345015399092994805264580918825 GT 1 -123339207202.9381745623478335347699783438927936 1.8131251673682277242812759513385623 0.0593189946113248993724211223728732 1.0611511922048234604692064692006330 GT 1 -3057537416788332057671.2269168405162962771400088783104862 1.1433953909720758664951505672093431 0.0182587190320132788762945726077809 1.0184274666757683524939823288018645 GT 1 -414426477890328525.7840643079720042239622283909355174 0.4837974119920946756792668613040149 0.0885680509163632466885608588947442 1.0927383458143440864420971757760351 GT 1 -2773112423352496535704652.5332394322356005848584428048015709 0.0591660565203423896860507670879486 0.0505422139053097378813848087415620 1.0518642088074515073285174322206287 GT 1 -18583599078056382.1950227757389774093351122040364026 0.1466986071349226340157113725549647 0.0681194009662235069174741141370176 1.0705505851283724705944727731286076 GT 1 -139269637324021540350728066.8324373716103279736441089563104440 1.8870158916212386498865009160257859 0.0991058720021826677628925300665803 1.1043675332749252493578427454271414 GT 1 -2209067610.8382984302339928169177997225380584 2.1027205030357978236375734462936479 0.0275790154752925073693101705201016 1.0279664566365423720772259178563404 GT 1 -84657.5070682457402742799611606400075586 2.0538647329302070878645093722409413 0.0500859638098919227152870114208010 1.0513837867027954566261037482178183 GT 1 -1072884773623541621518937431438090899.4557909522365474129448833667804920 2.5288680956721411187699356115358652 0.0808679375023396499835470506235353 1.0878808565458589807276416095525956 LT 2 -5908326225314248677963156526943327324871765.2167585987505922947520350280748161 0.6179672853204988634645101263691618 0.0333546264044172273327786963398656 1.0339235792332005851303504573131869 GT 1 -785755879130639.4459594535077041148382157179719524 0.7919285880229820070719720966802749 0.0010742456517849348231604356551696 1.0010748230672061680193203092275071 GT 1 -10195716548102298964712521.6944166457540051492331301398692404 0.2395430764189973898984572761496657 0.0901224218949231021138440140405526 1.0944452180760141070153797161033901 GT 1 -5405.9675766993891930770545124333224756 1.2468738043004528196298208874180241 0.0417029954121159362197012777524726 1.0425975233934530058562621090981363 GT 1 -87649399986211835335600359686355437.1870518334601063650718070986366391 1.4976614727047631521599765916322519 0.0534106766083162628235429515678028 1.0548899404752619153881687667553818 GT 1 -1878548290876391.1604205094118128098754467382177068 0.0386042790587615801332579694623720 0.0003760440406825722163341454165889 1.0003761147629731916517618617319128 GT 1 -1452032161560278412926622226165325344229486.2861814141523401759025000535818638 0.2153198944330291717960146465786753 0.0920778257679242173038566213578996 1.0965966152524128304295858390319694 GT 1 -780842238106825437353773843012.8545841880253486124895492886625854 0.4685090208483956403951011410943315 0.0643704185063790343662620991868159 1.0665356271002641751691202041380013 GT 1 -2796419209034689729987989993286161342859478.9795084418044435141123154650755151 2.9333297315177228728788068294607920 0.0789415822255585292426941156264716 1.0822318161015968609410401420140624 LT 1 -83273426739781560753716322366350303.2918442869008585955649172145027995 0.1282465914082332332717175241021053 0.0794850835235201521687444799031193 1.0828220736858407528656275096788879 GT 1 -909411076.2741736561877053096899557152345365 0.0388680242861208678891464094883260 0.0282533398223732494058104236236537 1.0286601461709391678602199088910005 GT 1 -207669704.8255033349282382818642806916019401 0.0488255422738728432339554595250920 0.0266394034450955395430094094539614 1.0270006626210480758396730035099508 GT 1 -12503052024191050634.9279906177095304054812401375425541 1.3238120541578306972896666167546323 0.0407416106788660776598184398106767 1.0415948041845526347390081882909200 GT 1 -5366480839762.7803517034408276932020371637335529 0.5835844331037586574652616816273297 0.0596963925474035764164919845466563 1.0615524692153490933567319055839688 GT 1 -221405619742518.4150375402275693294042912088802152 0.2136548588351195332384770884605126 0.0163948483643010977729978921562780 1.0165307311226046116070630554940636 GT 1 -808548004683534844481498725854.2197195259264112087851169857671084 0.4384060496190910115213762564945402 0.0952970215677424563170628596700391 1.1001485897791635707050168884589342 GT 1 -7724657117528.7713804454816033097747439636208283 0.4683662071763213815597402550471181 0.0400161122140786402835015200313884 1.0408387782174325040171903586716721 GT 1 -7506.2815962952694723436321656245993858 2.8687474515573355743904864812594087 0.0912039997158486142507002254610183 1.0956346321207191258846761269854164 LT 1 -3516.8239278499767408158253676142057991 0.0469213707863082231547242619540527 0.0975724332004367712916908620646815 1.1026668503898140511720699978035673 GT 1 -13607915744147540130120932.1210912402100927767029709103182139 0.1422958052970924844227818910291902 0.0722349337581333449917664911868863 1.0749767396239862744858649567784705 GT 1 -7207566099146485742223.8127520902132981224153941922055342 2.5127926594472244208302645609183639 0.0582796945846500410472394469903033 1.0600469641889237307262348316094411 GT 1 -63717059312034369095.2827063944798613447704728370362276 0.6205828719849322735067178763667584 0.0939720485938796078124264567133975 1.0986851219734196729055838610442452 GT 1 -12198117122167668137653453.9026576319479662963993302054899591 1.2280547427598124332587907974100291 0.0027053176036870022470204795276965 1.0027089835886171883182612270551972 GT 1 -914487944373140194.8746790425218132026521677314981933 0.2305147068659485633861453837110824 0.0170740376520493714579249470088325 1.0172214797305712166666180568119885 GT 1 -19590619125072198508152063005835429041927214.0507581817066509485354845759224503 0.5036599656365256718069969519473840 0.0660542354514203794773500335167955 1.0683369103744418383608084821280998 GT 1 -15696290194411007409305253880884.9723304253145374447220006585523137 0.6613917346703721427620883987560270 0.0618976172150115333480992596561986 1.0638961858417440497729038831555660 GT 1 -59.3362195452278729803558214079787506 1.3589247380598229877665979075953693 0.0728138714872623652852395001327324 1.0756009476889359403739973431824368 GT 1 -912063442785446.1833405621244183924413372309667367 2.3846402247071490367380163892084003 0.0968011911679339988904876285699141 1.1069954862082874115270509596710495 LT 2 -25606195129224854471470724709011001818995529.4139342288184396207247699581631022 0.1495632221269632842421166758816801 0.0309045494807291381419748631328801 1.0313921677947314721349223526665063 GT 1 -1119631568720.0366045524829895300922639338828291 1.3691667524278433929886241551581827 0.0217806476436867586182123175933811 1.0220213474329160749221655282436685 GT 1 -6807317778.1102930982821255926338474771101126 0.1337495960104696234322558742631519 0.0322924503869655718966100165433933 1.0328253555208007912658940205980823 GT 1 -1017939690983414176935206755678732919584.5269687210861798646140717605211362 1.2909435486230729156674616866541086 0.0997313606807755943553268811465405 1.1050620720640747201002116733114496 GT 1 -1677031695.2468887261919085336689840514448336 1.7147081318418934064122425933383122 0.0226579670944709127812823201646320 1.0229186033475138988159335665899522 GT 1 -64875498674109168988270042662269218357.5440153766417087501745058885513625 0.1641240488098733082751454149989449 0.0187375212993681388554429338405115 1.0189152928192403441940140586635028 GT 1 -16554018906657890690933562.9360347143057012119935766698296842 1.5656513274231658539441672634991333 0.0329686226769636312640575655131365 1.0335243359445821728930536198081811 GT 1 -3.4127491468319232556890516940771260 0.0732733902663438580992455198963645 0.0336009800663604179118616019560283 1.0341784659436161257307353221327367 GT 1 -55530938314621497464414091.6000966358809055442356976176428329 0.4334261267547741830793458315714029 0.0685034103774113588666349933698977 1.0709627501145726548040230556059692 GT 1 -7842415843675740818.0193778960121081859768773202211857 0.3060605805451014626396237884637582 0.0626592874388821743260987062523478 1.0647084421748072805349689698608315 GT 1 -1771220381991002993254844279614020656.0764231805236873040370217777541624 2.0180864463954741329853555135390769 0.0746611266785796845353490720705148 1.0775952590226477591868580316115188 GT 1 -254256.1655069998307437614262144034112501 0.8957103230480887952705368408041175 0.0781408101810540990192853875667743 1.0813627896279219400669159414680549 GT 1 -28565642121.5455894366011797832407399699193449 0.5797028343131851174612731710373449 0.0448755446747394323117827563550900 1.0459136272799681052663211566810628 GT 1 -13.7459034011791053182125323068525789 0.3685877866788019907740119152806657 0.0232981323862635738044903997959582 1.0235738243633009393326160190071132 GT 1 -77430480284258245083.3987138528259701768445417576084913 0.5611408253114282808643800788296541 0.0537208773525167219218492217182574 1.0552176977978867332503939963381088 GT 1 -465995146393078.7813667386935346261681329736765965 2.7656252315979374892870308203082293 0.0533826477795293763490833609001904 1.0548603305767231080417638257620642 GT 1 -220266654.4424658233003995548897123335420856 1.3126222180684492662097639733687802 0.0643476885555811389938635504293512 1.0665113336457239554852757269120651 GT 1 -97863006229.9013980787799920756588775224008430 0.3732445373021274749257645362116334 0.0833111829830723577576087064087744 1.0869872132631084385464917240649780 GT 1 -41828746849105333749984583354472346800.1898402992818547724727708579731066 2.4762962521887580266469216548391400 0.0664825963040160013866045435160741 1.0687956726862159692265031466699130 GT 1 -684732333411337927361104122.7254480602164911224013402002825980 0.3106824590596277732994583270511394 0.0482058725401134777987998494578867 1.0494065202449379947038810917944071 GT 1 -14817635822571983089475843044269284788.9881895871664339622564226753488187 1.1295282428455550544132721637548910 0.0045502327521637850669159550273881 1.0045606165723855894898050111090800 GT 1 -2810468538983146084427.4935094068136325969837927200729777 0.9985239390666899386912016852329714 0.0676471618216905953430616978723928 1.0700439542041464491796505607645449 GT 1 -4534982248573929.2333227215156952755632899955037593 1.5180188742774928353495397412722411 0.0450725685135437557582638575429447 1.0461199293609361621742250431915599 GT 1 -1192901.8952561559198385428140816536609700 1.7557057055380024840648828438873646 0.0500540652739719040909433983467296 1.0513502068217396605255813855596068 GT 1 -15.6190357962154421715908811391475394 0.2306636618612891741855598426663334 0.0911930927452111826636776787769648 1.0956226306317334698326887202912339 GT 1 -5979499444113995798351808.5499440052681238971030948814830361 0.1321705258592686191820940780367467 0.0628597913900768954634219242889765 1.0649223722817449930279514965701778 GT 1 -147.6043698054519140407483952395691545 1.8291785495019039717113592410057777 0.0123054528354257817223516862317854 1.0123817918238291256337687223972530 GT 1 -371624510337442592300445.6436648004416887713694138520856438 0.1288016343771022981898448856996698 0.0468085493205267172144717116104794 1.0479395028709225154635377490298869 GT 1 -7148486670988104235593380172.1475677265593066340361913018265787 0.5616299559508627442504231113256171 0.0435058237374383819405162632173531 1.0444805787115185942663543579922894 GT 1 -44128988930026.1546677736348763307147567685772514 0.0574786000979316818430345520671314 0.0192905316047370028539440990972717 1.0194790218988865088532203116699276 GT 1 -218.3217432922887108198232953541319163 2.1226779812246012100770491514659026 0.0170815476495450098625409379852842 1.0172291202106005857270982631634742 GT 1 -24085911924487539.7513041225330297870649119271803571 1.6641091476102671068175884353393223 0.0169947841252322271963858303090006 1.0171408527709522880651632486950423 GT 1 -87839439707124.0023861160100194431377859022394400 1.4237163930389337793920512627424218 0.0329572214146696382930258596628338 1.0335125460530112674698432454636396 GT 1 -289503748190746767561613700209917875213755.6974155416851536481226298732004790 0.7591908590931837949531265514883402 0.0569059796327812875505491929312734 1.0585892978540326304679297815786573 GT 1 -606463665551111438049325399566.4842698317832808668790324694423195 1.5768835188271908734744329050630612 0.0848585664995319537790726979066960 1.0886766535199977154284688371848940 GT 1 -721160757147827056339128651.8791393908642562862324574103337318 0.4138761865460484495232408740236398 0.0720005030602550534026410634200536 1.0747240882868754924590913195224123 GT 1 -26237618123648765.7753140598224792885517166050071961 0.1019901180792631844308230117783633 0.0130883688993599093101184065353191 1.0131747763830573938486553198189310 GT 1 -23.5349783539864478825457509253054095 2.7180824404014407089351400263561708 0.0873596538932005859420918613998869 1.0914134013994488795904268931622138 LT 1 -1.3859497508289129530877118137907652 0.4345395496376483841633265771089962 0.0451295113989845110503281271465759 1.0461795617281711431245348144794306 GT 1 -2146059212494696291763257.3889089649450841702360408758283181 1.0561839372245419314755319845318768 0.0472866256150582881962663742147746 1.0484411819666164390998803628278478 GT 1 -43.8586315855074395069118192820217601 0.1483356469420954210297014117070807 0.0868434732721518549050068393159867 1.0908479708825264282391098884067446 GT 1 -26381477751498575391817042279103747999599.1129424289194172609273755212081429 1.5659998919047946052581275982036961 0.0318627605534024759556322163031431 1.0323814254670607438386333914218221 GT 1 -5068529742879946897269578938995581354.0680505525721853186470297337822589 0.1360149913382122685342046645938568 0.0790023701717709451830651134831597 1.0822978162065487097552828680033052 GT 1 -44043152553393937.7031369433436028609713950750664947 0.2273978088098831065833508140166599 0.0262329511553392864242424054010888 1.0265831735092066492225649378548442 GT 1 -79718444099850510.9196572979365879651173267483031306 0.1207176972539908119461347840585181 0.0767785140587515773137818679344178 1.0798861101658803960341740367745707 GT 1 -2617247296709023232605992432.9235331109056649710744712106562631 0.6098589388427150721306133157881358 0.0091564372163479100782275995372553 1.0091986150508127083166996436477021 GT 1 -1107492726738399236126848112.8310504168705221417448449618431499 0.6501497299207426524410796133282569 0.0493744351543736024585106918463646 1.0506350217853228549219611924890245 GT 1 -1151330021822315837830571056064.5153710759234182446981942731577236 0.0371326322078369166171595773447869 0.0216325674127489624465359343621957 1.0218699815621455664638226439866960 GT 1 -23293148706920999711166630102611812672545470.4195065792670762624660076148917041 0.7023856573963614783089049085020662 0.0696206455532901639679412531986494 1.0721628679994748533606692572374348 GT 1 -1961228070618555197398050962804011.8862102177008565399398468234867116 1.6869453117022882480750115469462960 0.0075631414206690421803451266181168 1.0075918870044060385474100000246926 GT 1 -17504891.7638840992497295908115274928300171 0.1550839895111277930285298215950802 0.0960260135171339573265012052975464 1.1009546950185267180727504263961907 GT 1 -80565190230485376581083601439233969.3716619594341711759311345920303385 1.8388055645156377378023435069937750 0.0843590784550449647293517742363606 1.0881309982098473011590085147726816 GT 1 -2655523480666688801313577.6450262599754090437357867329477511 2.1159184778211365855655639243061008 0.0928390289331925501171291423572809 1.0974353682449309123491949934891579 GT 1 -4088436581511616505333915812173451936671.7883029338778632959586914714569777 0.5963759102463337696255555587078836 0.0969186662615628661131299284989136 1.1019426590360615369763828150887466 GT 1 -107597.9605260421445424482744016863417781 0.5987654733390638280417738591378923 0.0117000217320851993843233413311261 1.0117690055893598064962622918765023 GT 1 -11908.3912353655156975854051035626099562 0.0052839354752752374020229512735577 0.0426869036563728803771700366214742 1.0436247766223860325058415753940345 GT 1 -2965519067691619868946382572575291540.7967067039866491850041075549633096 0.5850473754446230325696359887209757 0.0760308903898128848083998808854489 1.0790766390570926561814044726716439 GT 1 -39856.8199320612534993336544717507995241 0.2525800422570507768920935087125576 0.0169677179135913439160977317487707 1.0171133190014584086692526808142480 GT 1 -44951616934578.5750428444730173699644937651270710 0.2398041465279422490741467269992152 0.0435595006977687206761746512021676 1.0445366987254741972318313079825813 GT 1 -2092.7774790247717396421379447810705097 0.2047598274728170819564778190354546 0.0092371713368704680454433765257660 1.0092800985592588871566713587880433 GT 1 -309877154347876964565544103767672419.3527123407581703875165135951822938 0.7806277787553901889788011695626655 0.0631910418972676632253259745966493 1.0652759042948059101316329852291183 GT 1 -591214809587035142067148474603651.1853497772852924611863333558687331 0.2046824033241065171533198220930407 0.0758213426701823465806053984343691 1.0788498739420115796236178509122353 GT 1 -141176971843387144116208078931496259078652.1549237213485846491479049446000166 0.5423225548742470454679417669118394 0.0965267613953273079423581675787646 1.1015087890845161053205643214046535 GT 1 -2162012485040897479813.0020028132320464418848190673615154 0.0192761386813145119034252499193702 0.0827610507124622274146227482154115 1.0863872634753151016939316887861683 GT 1 -10641184953353368456.4582728666791175335426351098360066 0.5352010590787912440353356441665746 0.0226735719290724753308966391048409 1.0229345700804033205431362361766042 GT 1 -355161029103.0540919832766712463719397493047009 3.4976098529492851163554248638735337 0.0826923189320404385334231737353708 1.0863123329400900270958761462660486 LT 1 -331324717178078500828513583953217720512130.8714386043791289792097778813935214 0.2286322567031037813755602374550546 0.0150034315846121288131298453902678 1.0151171216583625792189064787246994 GT 1 -8692.8069371250996428209471197336961469 0.6914180181779278438306418356744600 0.0619239790575493033833502878113988 1.0639242874790799569519149837791053 GT 1 -83586958462597065117023001.1819639688085891022170003307180494 0.5340100557595346800628104959908022 0.0068767716730003753682603265396183 1.0069005256303190213191192884864683 GT 1 -3997.1439338006366465865351904937043580 0.2038378308411326179925073021736996 0.0690247805200144184498000326953510 1.0715226191592193471947313835981590 GT 1 -60.8300630644478432377460472903588072 0.1172964167929325698734551490683321 0.0638825974428696655697442948883202 1.0660143802878358644909947057035046 GT 1 -2869584894096314405493740283319588554.5398271000401571159186258208996613 0.7039229010457181154181010712807632 0.0973673589874697532548081030654548 1.1024396289232260612027894230930176 GT 1 -15538709773563803067903556844638418292.5918653723577429529581581720833230 1.1762285302145798172518322814358914 0.0763960582315119952346659652542206 1.0794719336801460148940762033288277 GT 1 -171640517197336332220924653553667794725.4886766823120071820502215456262962 0.2720054910488593969260123339983771 0.0368175815486990825075800036305796 1.0375124578631716191042787359057802 GT 1 -8368702440.6171108750489276408795455672001138 3.2930304513742177880910523502328119 0.0470804106283749946262787272128919 1.0482247552030053416503430415642095 LT 1 -188995030770.4973021151107226988092160373089874 0.6827164494652722568492198084962479 0.0316342180141245168757491441249308 1.0321453891295909783450812806558682 GT 1 -243181.7262901726550622610027052906188793 3.8799223378849819323174859770898889 0.0087738142537435970130808245736433 1.0088125307895086333740449351627134 GT 1 -35432646.4471499955585265698303623511573197 4.7242580260387817659687761056723834 0.0059987019874089092150826329032745 1.0060167664787384808304788308487568 GT 1 -1343166323296737625058182659985.2980495395132766178226629938725223 0.2995410136326430247827690953709222 0.0176756884142240982941823702773134 1.0178337689529173501480494870692993 GT 1 -1139527334947107875749292652678954825364669.7990808281843771501967838522047564 1.0136368056977878205422653959002490 0.0645173772820753622078426765286853 1.0666927088355740399179645231817579 GT 1 -860306191026504358696575295.1065621960815097514967267997425024 2.4046627666330957697310329090695251 0.0602942745316357636725194682376796 1.0621885107433550196332777728561380 GT 1 -29.4264146027483403680634007862490187 0.5774525850402829008553555187000096 0.0766963810200907581246637845181267 1.0797971505969082845145418946665622 GT 1 -1509984099680746813244006136452423194921676.7150133063932358534320013546816032 0.8735316189615573989330474110526211 0.0397978217278024151191055031486435 1.0406114143269479625225330447621738 GT 1 -18145711515172422991201.6125319119469440453328339335201176 3.3101091660899576205467998663797974 0.0323213789348739578369186102637135 1.0328552498626627089266612057067944 GT 1 -10422099925680692779986527996725.7447799893338456785998707736045410 1.5073598739498483834553239621725809 0.0899714435775646631248400936973255 1.0942792992796098147441317092160501 GT 1 -7873465009972863894296004019243408653025631.8594938264509121684072526838596698 0.4350789869576713723044356335848012 0.0890150105082349292980985612464186 1.0932288588153730674934272965270360 GT 1 -1519407.3340666145829131708004626438826857 0.5238457454404157152535051724702082 0.0800745344235805016669155767109451 1.0834626278988032372568050168514493 GT 1 -2303458124654045290911.5204071901945751471206570679740318 0.8268818025966907881527527818162315 0.0311685012290189696296478792611682 1.0316645740895288247413387762263714 GT 1 -11361.8153280759856885583580104919360339 0.0965760070668775110054238481508927 0.0583134062002054218128455482104813 1.0600827627363040438482411978683946 GT 1 -96192505143977495366495.3579623860694964951199607555113790 0.8187343293450839358996153192843596 0.0395278148678845285453740062026840 1.0403302559308750518135578586285357 GT 1 -34435110460803669365169165705514597722738.3113748043083548287859354823570334 0.3521757600321843401421619996057298 0.0269457001380857614311186042597977 1.0273153917120372825717142598721071 GT 1 -10538.0482423440845415725798660158733217 0.4170430788310460523338699513961102 0.0183534024664180632702607254850007 1.0185239157121660349050473162394241 GT 1 -3431204482753071782549323121975.2513970508826207298936401575784130 2.7972172001498052945621406249079339 0.0370901061109675696045124105095731 1.0377954396936280932085258797809224 GT 1 -573213707536277349.7817715304627759699146800789144261 2.2764328338525590425334557497437865 0.0134425724413577628653188079665178 1.0135337417737202008754072659738740 GT 1 -383821577623825266829548731021050550404.0875722649424012916034885179835888 0.0734078714414803034953134860047567 0.0139752782875792455326657857657794 1.0140738519631674400994464308001322 GT 1 -1638330432740.9561597011801317254127217982001915 0.0892993521816772053611300115673086 0.0723563539994050385303137483168057 1.0751076220981752349520174707829399 GT 1 -19604.2568955080536629755831352220887068 0.9006117496241074322481562774998359 0.0405756501027667495076641426890229 1.0414218098972523494091044109127461 GT 1 -186250910690587387020611080.8177807646619794667065278112373025 1.9133746627507312950525384060331162 0.0088805991460879094886838965058257 1.0089202666890101348548181792286093 GT 1 -64387231460659753367761627081505745583.3904229946814210502092279598141245 0.9810482937611059220104551009961777 0.0326851551944082702312846029355163 1.0332312472706501605586381715135514 GT 1 -113.0617700931917211382489225276500570 0.0654329029964139645377692947784486 0.0064348463178471457721987907138771 1.0064556391886967325411814873896418 GT 1 -1288327415910846361611883506694846795.2995536043798509405505318509536113 0.7179701735423783845923928262972701 0.0075988877372171772828279440247391 1.0076279063844029192542405848039046 GT 1 -2328032601991176609.4637751880554695317873587847144952 0.5065088836212395890188274179421193 0.0165693960006673483153272489962019 1.0167082038872194449255745673580087 GT 1 -591586772566914549.7576121847708788527132589142138286 0.5856936285112950845829290559172491 0.0495681760292493086059955808989268 1.0508388461166515039856740454752234 GT 1 -257500836820669256079334942891521159898.7957522276320541791782602818990918 0.3628932211557757864250646911154448 0.0607032628699723908051275954012377 1.0626238357127857983748441010349845 GT 1 -352302156957867408862596.4133634630540792161755752414857009 0.1528948953343888076229028076056579 0.0515949088518659664527642378671460 1.0529735566609108111693864972392985 GT 1 -52.3288793657404744692990582468134765 2.5360939906959102977599919047895370 0.0406376880913161955061914934607305 1.0414864736660870508653421619261505 GT 1 -3394485979347745.4464498093533449637894352170465857 1.0433983490815179406677559291448797 0.0553632871095705626373157313801060 1.0569548562046375439945356954235481 GT 1 -911510.2364671976957881876014560577026536 2.0082399284073324511308725775660967 0.0941455163969794916459359918756689 1.0988765999636889566436961550901975 GT 1 -176964203381491388385206714292892552.0378559139765207190392742260125961 0.5908142828418291883650836502882153 0.0217912857100528457003165538435707 1.0220322224214194118885312476999657 GT 1 -8047463214194867.6800373256083805543102786966159705 0.8475795605230610541910940523867156 0.0932381545266696366282636419113407 1.0978754372448673280672449077160877 GT 1 -408309875987721.8641783526821384343746109317038476 0.5734924141344440718582020213745243 0.0762256277284163271163063818335480 1.0792874230119370069142085412683165 GT 1 -176056421808034.5804284359405399359318760605468797 0.9012293436649415757713940127221053 0.0579590913827043452806284013421628 1.0597065779418209295646101059180708 GT 1 -11871154629842831647777284955305058486.7413851411016868575965881339711944 1.9592243480588199339169120962620172 0.0011798285857479509151618208998754 1.0011805251314173862505686889610913 GT 1 -9340275272155715099919.7918555490671844960363201824386636 1.3076340699957690597816100043854292 0.0433459871411722294945341925396196 1.0443134859608922630260652577646616 GT 1 -7643028309255827313565933141838171.5087020012416176109508469827468087 0.3235205258528281494958344343095490 0.0422803451455555417501133074196393 1.0432001796888130265360136615825104 GT 1 -24528433812606512830874.9070536515400499508472640673678514 1.8535335521328640879357587323060685 0.0846767485154350700833512283840456 1.0884779957844114944127761013555329 GT 1 -986966829338.6022539378837659756086164109064457 0.0015883827644856512159349320619379 0.0267608605376898683214931464721633 1.0271254515958996253117059364823719 GT 1 -66.4984607833330904028577317907301363 1.4064422567929673126528617048741053 0.0500232277364192386929113082643192 1.0513177449353250969891283349254644 GT 1 -19474263154991104343.5322305405577121448164344123626999 1.1706356438456974276589937332582994 0.0227911652648608675751930100666639 1.0230548987725154834933713227620119 GT 1 -2040563406359720157547610227462339.3466743113125946268709204484306943 2.0740878330968057089280386571946867 0.0343610323838698384097497205780919 1.0349652541554582943416013891779781 GT 1 -26368066795201259957953.5073821342531127770924659338920925 0.4833308210632095081074684977460643 0.0647845437798027377507414107738796 1.0669783417792882427885671178375940 GT 1 -11178330127807869319905592.5916495206198450424378051241685875 0.2557530642413378348159843358211065 0.0942521700911919336417602126893444 1.0989943451150835929921491511486589 GT 1 -38302870418997955360202183491636848.3217312649397564092627633636295317 2.9831986306530790864281432357114659 0.0778202601282303720724575464375769 1.0810151287939869661971128399207294 LT 1 -429718982198.0497806573354542772189725002101051 1.6552674008584738978024447014302383 0.0994179157479655336436600105553431 1.1047139644370819478375930374846918 GT 1 -127484989128827.9889958704088450568350237995211088 0.1230256086500390325927780900555982 0.0724970452952696414349105787197360 1.0752592988401435935694280334338700 GT 1 -327243672646074423008880495785459.1744851274491022660064081325559899 0.2319775266519134112196124612327005 0.0357156810742136902074576273246172 1.0363690912118471214000874632476269 GT 1 -11.0759987909945408127923586930441057 0.7947429528723022600352035325879298 0.0033562799579493799892698482272426 1.0033619248997364448039314543365249 GT 1 -815499884611747270461273321001892091204870.3767367186754093680396778578593554 0.1289523562304306093967880638464506 0.0362507506886714661387700789271365 1.0369241330295927027912445342597672 GT 1 -1552312091296895322022578463.9580166000340031194386252576515332 4.0065033039118221920617087321332396 0.0661880653155114717324691448808238 1.0684802157554075571082350760823085 LT 1 -281820034933783483519.1196047126658873839857102047339735 0.2147839170683489948008759435510143 0.0218220064065166198016227059585768 1.0220636279675136553091672218976775 GT 1 -130849898775985503379099407795266265.8834705410569304438143846770889603 0.3336603547923771816251371275396715 0.0216222811563736736146693705792837 1.0218594679228319729503558138161734 GT 1 -7259698904398318423640.9817532097114927861684353160004223 0.8179580936504057934843269845369871 0.0496116747321450256275466662631587 1.0508846144687186199798264947699638 GT 1 -1718871666197025798569.0966455190169362230134416733474736 0.0252900298854282880532409675356653 0.0309967530336996980398150350155338 1.0314873162545697080030776805566257 GT 1 -5989148896517977181909658562.4548741490587616938510964977143809 1.0714454555981189766268763524997476 0.0309570093130118896336300310604158 1.0314463020414707429708301517158601 GT 1 -118.3703409827811683729697514925431823 1.3435027953338122098792351597361062 0.0749212845806193533914015459387294 1.0778764473396382616310474701113549 GT 1 -69364591806723261649554543363012002315742.8850971433378869000802213860498595 0.6572905903537781660817854647437246 0.0402493282031073680466419730289583 1.0410817451307610779923986338968553 GT 1 -1300321494499250800141816158884589022834156.5522281149784635594041798336840776 1.2544497791995187058340934519756350 0.0998837854308321315000669098028614 1.1052313966949629610604132889742932 GT 1 -228929919972532788.0563356800015277431672071219191873 0.9287114482920741114965807605993259 0.0458805781108404999355752404516158 1.0469664351909190847202523484786122 GT 1 -763567538897131157591717760174303145934954.8528520598126092899050229782187012 0.0085351546050497928956989113669657 0.0763736772679086100817419619636618 1.0794477017649001575939561832034370 GT 1 -8976900069784277.0459420068094104439332600339451769 0.7728549251900356873351096039586192 0.0426727004879206333024057753008769 1.0436099402400729352081684203396757 GT 1 -100402381652751887522100855371373822347203.9790145400327119185820947755139964 1.5332366512337181496077995258310080 0.0722277614007566200596147483290566 1.0749690088633510149070549008945672 GT 1 -12614.1463869130609178656323013691180093 0.5451506723679708095221450218138766 0.0178480053142274910323715096071511 1.0180092018658979957235963846989688 GT 1 -172617960538639819419333827176651.6965426936332830531357872728570606 0.0222276333058334721439802907464677 0.0512063077321780989549567108360269 1.0525638988764769085806131098825461 GT 1 -159.2520585457900563999193840853573375 0.8360990495196664904463898390822478 0.0023688837260740097238154109904596 1.0023716939700992833882379068687566 GT 1 -3841.8038389301144527226852837112095118 4.0264179617479939709206537342959879 0.0295792067280902868622717125490168 1.0300254940551628138187004795741467 LT 1 -1060652785930397886268559931450119134.4122938927341180924039440300904495 0.5218437590383616352918758158059847 0.0049013441291932270741552147019413 1.0049133951097906161031427255168146 GT 1 -35115900.5033932351463107788766602028244339 0.6297825999014995662336807396654306 0.0749504195675214036147504408944793 1.0779079424386211609519777873060314 GT 1 -13060322932011883566.3173925264153954817802189098975565 0.1712740066391738432940664072349032 0.0279386420500008231877801230919933 1.0283363510510640532867431000403145 GT 1 -722.5458165608668574830805426760258515 0.0227100344722301637640189402792846 0.0675757915169184224791285892474285 1.0699674085335154224046984790997753 GT 1 -27039136472237368952908965444.2723869715586313995794443146040647 0.4051568425155729962996584819323949 0.0236457915513662190466171954642399 1.0239298399155790276320827038977179 GT 1 -106004144820136615046783965657086.6758171902618278036366597403613680 0.5919514905768446160314139152155368 0.0092202962150992454674179240865591 1.0092630662508473359496296914927405 GT 1 -1098550854078389142682439.3413190562366794487528780135332169 0.1575077710031359105537929020977327 0.0418036980429595469165227274454122 1.0427026139049537620374550013348582 GT 1 -117265.7576544366559306734050038618925252 0.4569216415553798111512116588618868 0.0729465511698534651832412453823218 1.0757440572249837826361208264079406 GT 1 -20487976814631791597151846428274970919009708.8325795833961935822781604098744282 0.7954485961500319330579893989644229 0.0497373093174567782876207116357109 1.0510168161032537318515070975053271 GT 1 -142282647900379226230662812552470.7931630498655044647613398462633110 3.6342577616812225473836401221001542 0.0288368168529303604506004151393824 1.0292607680166747180876568261647968 LT 1 -2723853772758110905.1584748123420112605777010169124694 3.2099962656235985472220797129354226 0.0994765572156668385916699972881829 1.1047790816296525773430021680497456 LT 1 -173287366781694075140791781029185991130.0815219749819444003256997545495471 0.9362780619830625307776757560965965 0.0010497711635840807563658429979683 1.0010503225592586568695225844028636 GT 1 -1139936844617107826134723980838901.5363236902874951625717296518690010 0.0847869785588156596187734413781505 0.0936976902470010988005741251721598 1.0983823533722940934673047204869978 GT 1 -520005478004922.5254607682003798912897209271988342 2.4327106134281894607039293020437529 0.0345870474369643624743745195765513 1.0351993390619952550859048984982812 GT 1 -104499496496179.8393125533377463670892466696644800 0.4156584435408122972147972910954359 0.0240995239460163579666033366922673 1.0243946690246308727576320241077211 GT 1 -80565495935764044266624371439119215080598.9605281019205602305608312315451294 1.8830617092164224158591149797895671 0.0360601858380341206596429943037637 1.0367264197625840071067467955946161 GT 1 -59009473466414207.1053624932377385224075545050976425 0.9927223073301331147633239954302553 0.0169783037047899804794737740517719 1.0171240875676474740197273595448032 GT 1 -1511918006681.2551206986997259203729626807749497 0.0131485098148382160814302623251688 0.0348424977242906275040143597253983 1.0354639761677551968163611288680728 GT 1 -81483161202383858893899460539680.2625990356683741346873068387642784 0.3722422650403194309189848204231119 0.0758573986079703898847381692337663 1.0788888887373264918116488580856250 GT 1 -3804238007082023166360377790170254972206169.1645396494106294690933701903908783 1.2236549948641392270518848322763247 0.0289721542819944200995650668358478 1.0294001337405110568470523327776838 GT 1 -584273209634091700027343876906596298.4646830274537734229309018470978090 1.6928376350367015692346510819437761 0.0406355787002408933865002475895251 1.0414842749256006703969347092904977 GT 1 -2215937889719781776880.8037404806811009968637441311991977 0.0548856244270100382010179543878272 0.0889939048534127922918110123394137 1.0932056911335978624305365629382759 GT 1 -230703497614462675051782341331685453.4833109373599384191337434505381321 0.1368590673903896091332866155736705 0.0304751536871515836634786542573992 1.0309491766620157779288933648293342 GT 1 -126003334861115217053.9916032598314748914761620030716785 3.2261075668000816795050585131405228 0.0223873271653822926954828031885629 1.0226417274382942017541395214525974 GT 1 -1217887742902574011549633090488227084.8954578728072560203944615476439031 0.3434114638534357104117259926458538 0.0430291526587935783215345535337251 1.0439823505415492841412606555074243 GT 1 -10.5656880501273558065338526985823847 1.6860036100396081260931855749311479 0.0900882907058462903851547876704868 1.0944077069319303952437572465267386 GT 1 -2295517691964861134.0645565419918842038059728045374289 1.2591742716836493551110600533212715 0.0759637593034137097422094378558783 1.0790039865764950650829875422216840 GT 1 -66483593010339.5843017402477664649524702295524127 0.7165403762795999698985440651825934 0.0021184430247117882774537241229001 1.0021206900992300356568109907288134 GT 1 -32630694191407724281721264419659851970.6699924294439584928508999735506143 0.1594473648092941235961173029264781 0.0281102183206798391880562988162285 1.0285128742852408811294626539178801 GT 1 -1.4657850562342400437141908085748710 1.7455530969888526448729381716283800 0.0473075331090003404937234096242079 1.0484631274162314049447938458207215 GT 1 -3264771286862803985000.3691572239920675709990232017386851 0.3707729205307503416329374796525202 0.0661353595361290751015483835752787 1.0684237758127561363445813291458269 GT 1 -3961.8227482127459140370759073083969812 0.6214691498176425825516820976740579 0.0703459842061617378479573935262013 1.0729427880818171434777960716617429 GT 1 -5784481512126745758699263742354339304.1398066123182815350014556097038456 1.7136447299575122543474459721158158 0.0163749158440945364535123509127570 1.0165104665700935806079005222828086 GT 1 -11527044810638165336520995448225.6670389275187557086268927011448810 1.7688760874047107802308822586951560 0.0715962329601342464779036251572412 1.0742885470288356066241289789314606 GT 1 -163.0294176571243074575892277626177141 0.1319743022594048846221744578989003 0.0216291884115318698542017627033673 1.0218665278541934132991342181974553 GT 1 -85088936930305168483783.4252073481773453744695143136724291 1.2800787209274092167912405006612316 0.0282463359971956862759765435837077 1.0286529387369187522028308598491250 GT 1 -1470990432965536646887539817433580.8730012726364124491417059371202629 0.8834190321823648280411668520201648 0.0286567638810169138195479811609267 1.0290753859035004135183831350600479 GT 1 -3958130539463201925664.2839784357124092279860666513688113 1.9594663141181335852341505717817615 0.0054703916051300267150819175809319 1.0054854089896425322567878208478530 GT 1 -16486574723872984304787.6914074022252153638114174210799104 0.7325257751310122304860005312343191 0.0701054688621253488359953078118022 1.0726841066445678294756714650960515 GT 1 -52633998907309168624689078663348837597249.3313304830018855938371865791740372 1.9032019361174954400475820508306507 0.0325496172386551372551631078664477 1.0330911393608700176178313397382999 GT 1 -193978464147077787832271408104936.2657414363696544619335427487369469 1.0971346289640990524087942231897200 0.0257341399358063816251180654568572 1.0260710556408139459581920958261629 GT 1 -2853507568562574.5944091941115180134677745380604157 0.1063582160163630272163691476553448 0.0479978911948094952385835723859492 1.0491880290617225075593886183553127 GT 1 -5780563511158379.5041571810179758790056861615476540 1.0651222574447724301354305091999929 0.0352336208218478904646959678433243 1.0358693010685666886562872190978154 GT 1 -14848.0532758160168672334073715980374302 2.2329309671031996509532990849908242 0.0960483197106073275571148528250938 1.1009793710258255424516519449233956 GT 1 -20260168161044301979555316215368040410908020.0557093247892204164336389420698399 1.8315919573768576167978668862272894 0.0805581175161835531641126388299619 1.0839884424994101514717714680083608 GT 1 -22398479423379798103993676443182906448227.2490642279185767160665053879762711 0.2460005784495947239474198645090373 0.0440871249644077950342038890975897 1.0450885049837812461499300142800968 GT 1 -12.3193179074958428118655043257409438 1.1318304718091943903819867087211330 0.0794490992203250489741971016578542 1.0827829829560445580648814817880739 GT 1 -984967966403932078654024.2881115525511771633806897215225870 1.3520215868244337799638985908444062 0.0008002707030110576981536552396496 1.0008005910905526861899331678500113 GT 1 -2322448942602791820337242782390514976852957.5116450537542718449728485545147884 0.1688256771443396910671837081022394 0.0638187239623095112575943134871376 1.0659461502759096996160278876618525 GT 1 -50896544880479310972508781564441836445.5771917213243573758967883039953731 0.0734552102965979620022687770612937 0.0819018802190313339832920588112253 1.0854510097803714513310932475934910 GT 1 -682753483259.5108816394615196066742119078338863 0.5243959029110459987421558676849403 0.0802505286835846257895503848956760 1.0836539598096877464523723858041495 GT 1 -1030855.3128850643439054510511069028688170 1.2140812778403912392535881193686435 0.0654477085778071359074029343846909 1.0676876970739749410467567952226729 GT 1 -718.2520983084619948218328431075888639 0.0392444578232896864496639920754438 0.0034943518466773910457863185603448 1.0035004713540585132492952425298365 GT 1 -128259534554981862203027026747907255054911.5743681284737421341986750699009525 0.7282503726883478614885523538047767 0.0582100141090023657211359536990720 1.0599729741757009880673772275692005 GT 1 -1120221420933774151840147.0869530699924956484973692276808627 2.6488930313680818462790271020404319 0.0321389310975666055078806245115894 1.0326667258672175112757615529796016 GT 1 -24362532777.0154463037562052058204981369897654 0.1908305541923617220450390394786034 0.0026383447498186890942481037312919 1.0026418313151859643519334841703819 GT 1 -61374235946027465307593142913437788.6899186690966594804376481942745603 0.0645819523491414638251095431592466 0.0671454801981626449357861631499600 1.0695060176219434900573359533713465 GT 1 -2720147954747080.8616973367343732653314279449505760 1.0442943410440954586053529566306537 0.0196461663549791610265384882715080 1.0198417177422799900858189815577437 GT 1 -63849020192080474.5697185424300993854750600297164916 0.8080823408759573547793426842108567 0.0991662068662860538981918776795119 1.1044345077203099302464099397791370 GT 1 -690761.7095050095868707666624025360184029 0.1854731747771748035910777596877745 0.0271347329037754172027955130454376 1.0275096780222158402227844448324796 GT 1 -723011057033056500141273.8253865152316002213667325678339557 2.9269863207605568415762833948832276 0.0595807722232626973076368817228030 1.0633163088710544765824601797517442 LT 2 -73855338151080364366922972587201387449.7961705505628226754441739354441687 0.6603525803895118532421932565114265 0.0530509762377928206190795150220328 1.0545100164294766698453687363668007 GT 1 -28490161055278901818702500423.1866120019966664618213317452082312 2.2930781617143978704306663669988553 0.0882188248507988074695270857840414 1.0923552572272845474928095816133540 GT 1 -615473127726212077833251.4493394026973870662204640877437419 0.3722021509837260335836302206479086 0.0289443862025458204679369082792366 1.0293715375652906367224965713074106 GT 1 -4207830149011121362114.5352554919609670856512675672389193 2.1202255605129766612629119910031134 0.0163172801253289415244946951746625 1.0164518730763210232927345054616533 GT 1 -462405795740786538777.8653669309915232162855315417255182 0.7909304457226742081728255815115630 0.0975797301670275020584729958313673 1.1026749363530101343619756650997473 GT 1 -94990217840591.6568466127562042405054267338841192 0.0044027264319764114086689843467242 0.0387519555249329713264262139228577 1.0395227925205897885395127993672373 GT 1 -381158683.1417162543017773928743441847427150 0.2018449731645545604476267512743697 0.0594973814789211486497443398499072 1.0613408460651523027315096652946028 GT 1 -2561549489905.1875934277652131042050521001596694 0.8521557038984735110851064580616518 0.0686200590101970505525718789145041 1.0710879850735420536378103258051253 GT 1 -5811782949313549209282252558381496062.1988990425880847934363188374205507 1.1920908465148923920498322252976026 0.0274736677490113084995577430564383 1.0278581269913375171194401523001142 GT 1 -479655451732466332890525.1885297856995957804795273636418470 1.7242808549308338044547481664398005 0.0397848078194891318556160239355202 1.0405978611186571890982950791226679 GT 1 -14831088192162243823051259677632560104.1544104016761956691994155091006625 1.4661214496581200073618307828269673 0.0934723607904783141072270857395302 1.0981337592249917839362535697802843 GT 1 -53046601701895806056200699062235.4052632518006499709536564358899500 0.0177009357786370667263904102639579 0.0729680566674735462177917143675051 1.0757672551830842568104312058841565 GT 1 -533805376484455439370242719.8302227277230348952126508415161109 0.4823909614472509424697566789611434 0.0310531854708971076030039312828476 1.0315455555645855859638103461038049 GT 1 -24431385686094.6790359457291852927796341278624264 2.7440006683668428909657973919160371 0.0374908941712263318589433215394869 1.0382117522636256779777413896293162 GT 1 -184.2485608065426755667436207135922504 0.5214302391369451181928273807789958 0.0909247132273870067071211889202783 1.0953273645021066405378092380562542 GT 1 -1572893335331281153238299583823.2268518749561129575606724658015301 2.6124894158896603286224943513409885 0.0519623350248973968207418114915737 1.0533610465299748314073120428000380 GT 1 -5013448049583635202208702517670336983918.8260916466655654023690149033809101 0.7767574065606504266082461679231580 0.0787948205917087260302382263260550 1.0820724885934327714791950239670492 GT 1 -3815741.1285288657632857569659390246026758 0.5252265338435958136653485225933081 0.0350383996613010683354378883564324 1.0356669708300201249903044850366460 GT 1 -1178705751289198304481201090.6638264268893401371819114101617883 0.4345302171602351252852587931704342 0.0548798398838163942705939685906850 1.0564432060096242129313406780464584 GT 1 -10277180083253447502644900923559499381985.5809596087742328347349306949009433 9.2043710956665623725506398451898956 0.0775412648639228712769812966110881 1.0807126356277488478310827716472481 LT 1 -837441608036564851190.4976025822253938077665946678087926 0.1650888299238257581838929221062142 0.0552177157464175631043957807961173 1.0568007650648098203055205918543644 GT 1 -33138767655429467.9240634640376934323238684137589747 2.1546850458020829206417041856900870 0.0794671552250082967188752407272000 1.0828025974952825728679859079910976 GT 1 -8699638007904887452754772766671852.8487458948399948936954122621041405 2.5554390966294831827684193490943060 0.0273071122173748219838973357900322 1.0276868809638171523165888801561905 GT 1 -89690951940639743414209038116606146948531.7914794284051216393272180835267552 0.1647113012549818013639735870173669 0.0061410559557244135406233913759088 1.0061599897954959506316569152194354 GT 1 -45830274598971563.2568934960902772661176344517214116 0.3423905386073745476699406925862644 0.0466577944310261223227893276278119 1.0477813573387723629354042738537714 GT 1 -18424615559798574594518376281472582057053645.7959349094815528188185492297772563 2.5127876550725473163243211667758236 0.0145729176273735360367951111225292 1.0146801456162643179076759170902528 GT 1 -65250222197673812610964976669646276083254.1704528780646480086676816975332868 1.3819746331242192793212907424013624 0.0237164949233713556025308030971901 1.0240022582362396376040895954801497 GT 1 -1529982494382113728188469131586.3042386038037330404108686076195206 0.3502360230568166420477845419547700 0.0144366189010426540112598028481519 1.0145418408105595999622429399308367 GT 1 -9223783466799861787243563581031379.4410408199812409835804317835319388 0.6946584301864402967500894413930438 0.0395539598109504904594941862495722 1.0403574772281931144796748748120173 GT 1 -47155824.2351098287785574855137279248509166 4.2334864028635994026591616055851271 0.0616122433661582333447133803481610 1.0635920287933710549487925157932313 LT 1 -1795405072116.2900482711153190771895610044211177 1.3738114944625580719886004264280070 0.0494102123049340852925113535751714 1.0506726578695432932837006644522287 GT 1 -39229471944596534.2172500066752482328804506974819030 1.9041589521547489982731861170421912 0.0564084876964823762000253917357684 1.0580619265044204843840444948573040 GT 1 -1175754932232485669823152.7690816714289442629391762120011118 0.1126969059077876385212603989315941 0.0145651888244549830364974601421065 1.0146723025472558869390632276924213 GT 1 -27934193794499.2289027799251025434471148988527844 0.8187263089059696527971304104666839 0.0425085533407415775089503971527647 1.0434384909601770112486267389387737 GT 1 -37770922424653192.0504040135533277817084281261933736 0.3592830759938686101817932781355799 0.0246387594848842384055232150928899 1.0249473735111856111915667395744233 GT 1 -5003.8366731353165176712014984959027737 0.4678645001523063588159677681812496 0.0760756840466530411260048657922120 1.0791251198365892005385924378080602 GT 1 -5026366236874535037430773675950904.4767245523766792749122683916385717 0.6373269385544591487458223846999269 0.0026850675372561894051783570123906 1.0026886787968617956366599247990700 GT 1 -27513206588537825828.5320690910675699130145514592052736 0.2641905955505304443599445256703802 0.0159409006543675033023534648940843 1.0160693234228297384785981450824353 GT 1 -331914970433174394.6695821322345150408170417797515437 0.7512286064449027829483148641284329 0.0029131242219474920434360138302225 1.0029173756269017306814032379406849 GT 1 -4007844574331024046959883416705419.3803287490099548006048801067807523 0.1583872283981776694022991228235845 0.0662414862121646523823706468342888 1.0685374247316059639749795099400267 GT 1 -5135280109031943522791371210163284272.5173061253837009550954262363086880 0.1326805397215651522668517893621934 0.0136773063382465479641121810004529 1.0137717024034327023339776575189510 GT 1 -25597914668176284142636389260.1324474295778748949375100188387589 0.6967074358135862054332636491578677 0.0641521175875342277681954073449744 1.0663023345022552527447144731067757 GT 1 -39368198208.2229731142886107962115230708402917 1.2297352479695598551969519721879093 0.0940627237790339710629461004099740 1.0987852068799592986040643300702613 GT 1 -252161350845078602436227051521134.4267570174737903171604482069233969 0.0804190283155015128241005391491009 0.0916795672088185313084783353012364 1.0961580630854846057367230185208926 GT 1 -319462084986911803236476637247359570187.1204687181612085096343486477393250 1.4243546450410889292230861140653552 0.0196887856745669677102964129233222 1.0198851920926170207727011630297452 GT 1 -571045802019502452179210.9111324713580952627617330152849797 1.8188643082773193557115235575164200 0.0614626508739784407948137892280141 1.0634326271294075063539215828489316 GT 1 -98098080730591577547353816479220604396.3452171911316588877882592338594050 0.0570192664280624256715136905086859 0.0194120006100278053907405813688194 1.0196028878676559230428639390966345 GT 1 -34.1872004524742953618381385331200351 0.6661678901269294596727441860213516 0.0977817533563527312656400653796058 1.1028988296017961362019591096134585 GT 1 -107.8976297776249919581707469307198672 0.5723772856316197072885007510258416 0.0017990905857099473517654567090346 1.0018007108928556041169686028569701 GT 1 -2147378992482208.0539326449996686812153078167445966 1.1740124929680228510007750358228617 0.0678692664566892827266917259855407 1.0702822020915699829564069778806868 GT 1 -1416553166739.6045256931953646648099179784019972 1.6891885563035424323712969501808005 0.0942431286077382201428103485107252 1.0989843628241767079598627117978252 GT 1 -13287134167893595465084612304203038741.4850872360598618422484186882002164 1.7288454203984282435628833784307968 0.0899846877798716906055022680842800 1.0942938529972816191335116140564343 GT 1 -13377.8209142978726934346569951603795604 0.3494907380792361865257489640989322 0.0513136782086918232203444390480199 1.0526770705313378560119354095161636 GT 1 -1996938550.2418885509944820996881101578417222 3.7505566187761118946006588711744483 0.0438851486568432750871850036811408 1.0448772357584146121461137975804231 LT 1 -618766135799891461539219658787965455856.8768894812287397370661290509777549 0.4410482679115150672385026938972266 0.0880778452919993150383913551905791 1.0922006492307181780475422928408984 GT 1 -60.8584879560714278074987879090919150 0.2334589754357017311361714669229142 0.0403773312929010249425204513680684 1.0412151252161068637072017878220457 GT 1 -1846937699712291795708586957.8667834338957995862339441722290186 0.4244524470369499496617014397888923 0.0165442161650313260758944780195771 1.0166826001352252864798624321875370 GT 1 -1946911225176901098140113692998742258.2878658095657562023968276014274048 0.7306959217027152356285125955339501 0.0003820909968057990127086149406020 1.0003821640121703203088516686059294 GT 1 -122858059.7977906610985880267701223099360569 0.0084362459232797812166925352531383 0.0931100411953118228081783558804221 1.0977341605882690689740668963867060 GT 1 -142828533521597960604699294941.4211717084663833548092536583275827 0.7854255421552859654994906199397983 0.0117238669867104600908286571753436 1.0117931334278885855968512911041778 GT 1 -524418825909802687012906560.7511661877713967193899025004267304 0.6972411854161582022885691436100514 0.0946498732797077182109979152894616 1.0994335297472042412082317019371609 GT 1 -87826947167.1988723420807468514298172624880499 0.1112082988975501004949737816549527 0.0822441137636721749104940682570869 1.0858238428569488381870948782646999 GT 1 -90264511267022409973733022404891136124367.2842962553667501234947203423406705 1.5693896245368918754093856793845651 0.0970311892059966432413179120814154 1.1020672657031798536536157392979637 GT 1 -11558034520883706197055413996736266720227.5041346794010236644071495930619248 1.6901390277634399694524078132980017 0.0564651359686594468848069305110191 1.0581219630477113551276827511860926 GT 1 -21428650750716217457921763.1368297153830151342372219077393928 0.8481570460441018928763198799566056 0.0902206164874012115570008760713076 1.0945531445639672316205497865537938 GT 1 -111391170586498048626841906297514895.0267948482389840271074974746123332 0.6749046682263018684886981159451845 0.0330555470954851916496346548626921 1.0336142278834797402397734208960723 GT 1 -580145269709496721010156.0028045103089438986634696724947416 0.3551662759006057119788626522878893 0.0357561787509162111969621106869953 1.0364110897451999213114043626950886 GT 1 -77935719666531444309244.3340301307868366395841397128109976 0.0281659974931577907209433249089542 0.0362478022385971408378927274315754 1.0369210736803208198890394829116058 GT 1 -63326099734188391909.8473761067738259692303694929486419 0.8426437525568947484463537764347524 0.0240381394872606697158093543799098 1.0243317706760886293299106534976279 GT 1 -87585388.5157807537549466660708610540710671 2.3382490315353354395364857326920171 0.0495272547028725998735878873940348 1.0507957915340652875235466112754609 GT 1 -21.8632308578409420536176413578605656 0.3132851586289814535882373888737223 0.0187214379645451966538553008015548 1.0188989025023099324760306905613342 GT 1 -1694730739248110793810.0700711854535214892301415949390221 3.1681840811732292825880702599591029 0.0192917911351882259456012431259751 1.0194803062050960691915125597808128 GT 1 -66453543611315.8753810738411672241167514319172595 1.5885869305228034289540048072677998 0.0864477391873106624057949435594567 1.0904146953722412251040309504641014 GT 1 -6.8591282426749233487817064342746619 0.4380456610819427588661438021984430 0.0928656554098564387245488884597224 1.0974647201111194207713567098029633 GT 1 -48902309057962.7929717002661405414682726288835413 1.5956419456703582520228351400811351 0.0840719911649524295857119306561960 1.0878175103714353574133514792037526 GT 1 -518747118780091778107732404083.3612415672693035633379000290692464 2.1427098426593151171940681661503066 0.0604884646582197251546087645152094 1.0623951820328592982431300350266074 GT 1 -24271.7532761012933389284670192149074927 0.1704394914271558703540843197993114 0.0912184637450463455099248239342279 1.0956505478425051443273597073170825 GT 1 -238837389341224375921233585760.6760366302684396115714977342343408 1.9685578261846385763060402234335524 0.0901377404154164224358867518098202 1.0944620540216546998293423457891128 GT 1 -39586886786589321822435181625754098392695.1359029057016393984202542835154861 0.9850459708010971622144607199602515 0.0355835796021553902403615247683486 1.0362321062773038822813024082273897 GT 1 -1646017028065606355617147810.7734368412334002134210514277249815 0.2687175195798431137486458268205184 0.0852904057768644584902040832183834 1.0891486474460680372438190976046685 GT 1 -96351540438655039133089613547315993053806.9953639024680040057520718688267491 1.4611243933660332550573485247590582 0.0686148833101752579077365595920179 1.0710824280656945335352533630947441 GT 1 -3438511649.7385730408924285824918313059437811 1.2160671830689580868786189915159361 0.0858721901077888409361582905018964 1.0897848815358131894143805325222288 GT 1 -32205683789451116977019027980592062955650.0268580720842194453684413303632674 1.6742831896528270610498018213122591 0.0701133123576742908662635152439070 1.0726925415028939426430744555253696 GT 1 -105.7321988713861876162402759305877844 0.3032413089648383178112919934007792 0.0996536389707985104592402523837127 1.1049757441038941007271653384287160 GT 1 -4669301751020639148647673442346617867.7823952587237405510581729072805893 0.3987040751999302490781293355448245 0.0836910171086704805430270364714702 1.0874016536198332003594228916182028 GT 1 -16.4700418562060857319232986628536280 0.7214625190429438740010860204470148 0.0949341260601725538576089588151525 1.0997475490474059552751628672899208 GT 1 -129757871750278400876841807327809043011191.1250213326284826708774003776686815 0.0038399218514933390666641735431749 0.0917174739389988159457509038342939 1.0961997967290428412400129462509053 GT 1 -3026056412.0369112136422003046619921269243198 0.6750497098071544021588418678164400 0.0358597348397217817332258071899569 1.0365184916778698139239284077298172 GT 1 -5796914676961329730828409469017356677.8861297893920707752551299137739510 1.1814955427834532654978293246601271 0.0160472626836269719472639132573360 1.0161774142659655499478699907544011 GT 1 -5234720847646023994885641587573438.9664465693056068267264560211771038 1.7629878147984795463821746747879835 0.0468785220618648482490911460865451 1.0480129144712103002701615542081166 GT 1 -9165003760893817078536058568492.0752497020280444200370231669017828 0.5939809715647003131959983945341686 0.0533100263848300714429684865009581 1.0547836167820380670301065605862615 GT 1 -2345268125448528510537339565793412160.5908443149435861480979169697551615 0.9636756659925366973946006642493366 0.0276870534084874583522278826768053 1.0280775648262823275903474272499051 GT 1 -438.3505055505187209128685744801255834 0.2093680372261705749335173354370965 0.0910102120774016387588981544203765 1.0954214192763473200240483582198424 GT 1 -159606372931577206103636081409349429355627.9511944985749234965720494733420215 0.9378839514995789668579632212863220 0.0785740084319522550446737643721752 1.0818328181001821214771481034737256 GT 1 -11553118.4410271847691249924835595352054766 0.4997663043261569686151219948028672 0.0901039974851527466362089588259274 1.0944249689527526202105537594387108 GT 1 -541893346085610557181335.4097959437268993757699976090855477 1.2459963586401885609059895717719697 0.0137077077335102647197900380701994 1.0138025258489433506483212674075536 GT 1 -268462529811672045.1382684514420380589866608222658256 0.1028591168009575393922782355048759 0.0959190088282851604224560628445525 1.1008363305989751254817299030114562 GT 1 -367391037403285124106231160952.3539403341327535703953198185327009 3.2457925105978739084163692403013472 0.0801324985241399862179069449504884 1.0835256394458813124816058025860536 LT 1 -6264300430445594989446152813014.4342792799832841554116554120975668 0.5126729544507281162184350681358887 0.0317101043266483611646410994783429 1.0322237575390486722139075440955094 GT 1 -39794580800975320173156236.0111189200392076722629796638515391 0.1233243242460437245777518206031406 0.0853727487557300088388042791575407 1.0892386723959565019901708079399413 GT 1 -2679.3794928472432818896709270611478692 0.9058625828625003291424431902621176 0.0305219415870630740694085104321856 1.0309974364142900407027448541309645 GT 1 -1366112844163352614956857.6631932049602618146433885771815729 0.5572584344123296684360962880945526 0.0678488223559222601084022211354344 1.0702602696781885529009586742055042 GT 1 -304472129093128502928617055892.0604563449771039476296201749558437 0.1065887039891808719715401638708118 0.0184242796125212256503884135782604 1.0185961206229262290434656697635106 GT 1 -153227012973712896241910944.5428677201727044083184089868204120 0.6109572457655890417673113406210547 0.0162320001100383906016051051712502 1.0163651821981330686544224100709181 GT 1 -120388948829.5194463794270421355283593551300645 0.2636790666488326576329157970066980 0.0171712281546929680999535645940186 1.0173203633817533437459020552886874 GT 1 -66854017445318150221733819.6176344986417843838441389966627372 0.4395089981065020782588253609119097 0.0551898407593064374287247774867875 1.0567712613618191366003383659836333 GT 1 -49405782825010463948261617577851224589.5152558699509154391052929001894635 0.0599546214022058305563184472951744 0.0251010884152422285566860770548932 1.0254214937853662345550253622736134 GT 1 -325231.1773506553780554343944120118199333 0.4536606002832093373309732440519857 0.0196755390664807706451666775739913 1.0198716795280405865832426709208191 GT 1 -41106238571788216522221251078402777517368.8397736152695337815850598028467953 0.5490883294860904781955727860479176 0.0748870501881804238884353342989333 1.0778394410196054033312532687105219 GT 1 -126927904490368888817369506215.4415471186623475400427174449850197 0.5692540825036236422923342692727386 0.0619048350970518898088562720814309 1.0639038800017212725999580006398097 GT 1 -102798054332919.4973759909533797597212724256909853 0.5021538886118845035970628769381314 0.0782136333315598619752087250985508 1.0814417887069882903406357847255081 GT 1 -1329380530036543578306572905.8989604770239864545918465434288954 0.9919976780687685961071186712309088 0.0923302456368926620293278864260997 1.0968746731867087828220874737608254 GT 1 -96189976998506101868560584251228.9076508415904953420712487546239148 0.5723401171512391915940028697475689 0.0571265825467590961265740669073965 1.0588232392366461688699281772070309 GT 1 -205495355954626485448653368617008.2794264751265506131166947332623201 0.3593041052265681566487801275072124 0.0982781143883673474278649003470081 1.1034491372707324709218664510551232 GT 1 -17531488412979.6859485660639784043435015960888362 2.7781618518209097000002101590349310 0.0832842348132920788352855103041913 1.0869578164021604533501239366035031 LT 1 -4342984482532582031519286234010722956.1192967343342688038044866491663840 0.1626261540713216694909413102436249 0.0001523424020426482880652220726633 1.0001523540073250443788394348586473 GT 1 -105539359448728308036907.5841064238073922008319877324628584 2.9620242397787319280768326131628530 0.0694929114902602884079643868181332 1.0720255849710407771392543754566472 LT 1 -2384592.0115428867201178020094243311492329 0.3017211159930068799482453747089729 0.0503427471080933995115583877492116 1.0516541459162047957271315915319172 GT 1 -5927777967602712.0531443207313364029268054666257197 4.1820638235161425920604487519374468 0.0319822356684099994883189629251429 1.0325048402917271856543136154396992 LT 1 -438681221704576.6239946200653740566856396163331873 0.0213981577193059186163332777713252 0.0274829982924029330934901426779832 1.0278677211666741729693133953673919 GT 1 -493049289801686639515671184210395504874.1272123557186929797197606481748129 0.4001060050397296105126993762534120 0.0076794782083724377967723495602788 1.0077091172401892009698835898114963 GT 1 -109170269853565818238933.7549552876873818225587398613837507 1.0180103301623742410796019966047289 0.0333961081518730749630311807942325 1.0339664932517947606285250950171525 GT 1 -688971186623930.8886725503467698327399247819086784 0.9546114577967031451834644157378836 0.0112243914408548829945775430164783 1.0112878603022750864047892155376543 GT 1 -405263050754569265962966590604.8439757097771575360668512959567852 0.3453387574614947143986939491068892 0.0090604181215468809334627702026415 1.0091017133336548152199926419447011 GT 1 -767373560190647726950970457926861.1691273580479823681644900911477468 0.5598249865136853046174109027860001 0.0889914647397107795960893961615925 1.0932030126548839244973077307862963 GT 1 -6510756722457240077825829969.5951324941971961578877185064208132 1.1184347774241871600586749026955021 0.0448907086197812501099466275984506 1.0459295038134743205201186076589521 GT 1 -48779856524510303173685.2703262545983947248000677046671692 0.8776692843913128609106717266587711 0.0205917314413346083845359466192331 1.0208066972759355274967384866289160 GT 1 -274286036259427873.0792422328732722352116127498285246 1.3587128863982284862499938111348161 0.0149191870009085842426502357428897 1.0150315975215447571313676076273651 GT 1 -2390616250006747232713050827590098453.6328659150964020092737253872664033 0.6620365683372084830779618497656971 0.0658033319096446746149782515133363 1.0680682975118455999388435725025728 GT 1 -735711906207.4863637809391907622964412180490835 1.4607567330136667779731373678172196 0.0952969049926384084055871914558231 1.1001484609246120588861729950221276 GT 1 -134428438395285393914272722088624748501.1444673123511914147709965279793775 1.5569508007035245018144487631699417 0.0413479371375554772777239844498355 1.0422270823789789015489003384304496 GT 1 -88229742104343530.8931259601740716670274710806632483 0.5919900386508235485730472795357359 0.0924103291069597725857887455613881 1.0969629068231850296894786515441901 GT 1 -6531941177930.3027986587077369918523484340217444 0.0393078067247252446156315613776437 0.0768543884686578487430212075096576 1.0799682979497212610772211713022378 GT 1 -173.1040875914660466126109515201675360 0.9107511327001072963496434360697136 0.0397911205158108779153428443533782 1.0406044353919282970783070457579217 GT 1 -16753598701100617238534436149657006.0466841829413354242831919145930249 0.1167061853974911460139226804923082 0.0253205675364531427258776631118045 1.0256466492635322187225030659116082 GT 1 -12783422275544911008766931025350283325517.3528777895083524156764679988258639 0.1100180334662550174096109264896200 0.0993895541610138894731823655788864 1.1046824724266719835910329530791220 GT 1 -39640082265.4984545788262372008895590526736938 0.0904583396459301600101979212678905 0.0855342386555033382073914036964977 1.0894152516066160798764990877732011 GT 1 -25491.9034321279463426473561545536402163 0.0822994416884666098864095747110016 0.0926241966261906941598038898858597 1.0971985779951748759641059217810918 GT 1 -3825013421383645447428868177602397982142255.5923845304277196098372416504497337 2.5170175304354320898808624897641319 0.0753203740188140212263406152955843 1.0783079517534363355942106635010526 GT 1 -275450308922507266575.2643697497233438533596605064385549 1.3066553331397515712897933992076330 0.0577447139349434317381787058933989 1.0594790368054636475669901679049741 GT 1 -12721095.6412478198662568597168788629926625 0.7414273109199763791509834049171347 0.0547857940296269702536896909481508 1.0563437041903119882791771028990315 GT 1 -3025.9892445301126806983817364332576277 0.8508527496966894681707888611975276 0.0217843178643439572155800083005442 1.0220250993803025169719870516355244 GT 1 -50834886034640.0467266401678673207420476850814978 1.4856830782222961042463617629333714 0.0786434564208982488098056482428501 1.0819081910621614106248199954177404 GT 1 -18323865221449598984071066542890.7770073957610956996610127736209771 3.1045998783215680749521317054462958 0.0337020991112931145946136666623768 1.0342831062976577094043691286113911 GT 1 -95.3760072295891637403866706582804159 0.0587938009137185597467153406237121 0.0924699233709864329389182454902874 1.0970285711014007560372381298397548 GT 1 -4021194992881959178677.2105902137521356437354811370502564 0.8716303054686237210396547970607264 0.0462646843010787666817963832228476 1.0473690928858267729460173196175040 GT 1 -398731641952973372.5487345417835212507105217204216260 1.0391485670850933787616145215555653 0.0479639258529772355886401652475137 1.0491523518971152315527793594116105 GT 1 -19634608624918685452483395.7950576587723713196074420287889061 0.3811089136771815916276802707720508 0.0392835822846959543747431559417856 1.0400760043866567781976671838014652 GT 1 -6877446490801735669442290.4086593784867569090294382987247383 1.6479158720418731421316480306351037 0.0251298286349783681537068157477796 1.0254509744248835464566254934256987 GT 1 -259710154013353389935900259511166247.9435108368332746532206055901933880 1.4111251392853686296092513868216395 0.0830011764329527253849819957464713 1.0866490896413836070582700934907815 GT 1 -59378862710307812738863.3595554710689633050794048935743581 0.3366275919866070432206102348770735 0.0698518141590774286640859215093322 1.0724113659141481348583269219383372 GT 1 -4405216857457812681.2471295353340672352423473878084124 0.1306566136264160619119199484315418 0.0319355400381103660779675232512772 1.0324566030529128805332507753257370 GT 1 -819317477357392193068864028.4464602319650378925536218903303922 0.0344110611813368541489494966446864 0.0326242044452126834334597228362163 1.0331682390067507723668462003745684 GT 1 -7816938875940407473022436947.2947976738469225843327207097198910 0.6837134150906974377554861195037947 0.0736618820216263240617413505679896 1.0765159727771021167785940854799344 GT 1 -364508557660450294513065239778399461.6703794408888840649497121032689014 1.9941503022666564656691434037075013 0.0609202852411242457308223254899402 1.0628549101301628714486513757935486 GT 1 -182153525.9635197922738869388106368073727974 2.0455816364851326369427856193031854 0.0772377942606625175436911208652179 1.0803837095904663098325161063070318 GT 1 -350496613791.6482986351934904706144883924368189 0.3554319964940456711955120144085673 0.0426986164213204720551329626209032 1.0436370117381971414726905068364225 GT 1 -141005897352397968664020402.6405579037173886793411384221750287 1.3155436491410687953687060837144851 0.0586310839533736535062859983238909 1.0604201694187102682851443559795896 GT 1 -6539519591663829512326299066061.7552613309662880580636806962152272 0.5861045294747088666658026896160379 0.0708904273520240098417763775586667 1.0735286002472993113626853950011926 GT 1 -75401875749367371923859480793642671046.0492103832761036704567603969995247 0.1150790663742529648044552213907765 0.0196838342486887361079310953885182 1.0198801412339698786355149171496503 GT 1 -320048.0777364721322971087822528615094010 0.6790889739992730036659019281941418 0.0423485272016491088864678437619377 1.0432713743049769661944747091025209 GT 1 -18202874722032339824777666381619873.3193116692657471256562387280888862 2.1626714226444817468326103593277629 0.0836187627703346477069060176112400 1.0873228030453280351227693263982453 GT 1 -62445361080819318594394029184411282051598.8424900179445285008487798907431460 0.7595648241128066343374997444594270 0.0484596995356970078221861878859332 1.0496732384772825859022803340585584 GT 1 -2525198992272220276563589555316870028.1890788472404935620817583071480728 0.9841327196581786643770771729080267 0.0383618179026086138546772640505087 1.0391170091494403469568313798395592 GT 1 -560064807161757323184313760.4711062848283982067769798853826796 1.1592789192172790272223160058967078 0.0207420371507821804249529691394554 1.0209601748897651947173071528285912 GT 1 -1208325773482.5530575907607113920184437764274077 0.1562133804268989301100783729704347 0.0219450876076854825088017198889283 1.0221894628831360860889186135009950 GT 1 -73653204924927951255282891030.1064216301640545686695181759968827 0.4195325523007116498958060471704192 0.0301587930182601709376736960511756 1.0306229250282304975853628884696901 GT 1 -13742353104235275.4164468756388772309555527289584350 0.0927129054483158053389548841148681 0.0568185631818065592057671203914893 1.0584966110190273680218513466183460 GT 1 -1142305620386698045238203397457406463940124.8477312416267492348297683900978048 0.0289215012514909477553212253693048 0.0604136842322650723736416445243195 1.0623155901947333852483716700515093 GT 1 -512765120364244624428.3012917836387051720007848994600227 0.4754104635142940875858314706696835 0.0961293816742782686777357018025951 1.1010690501538984356230029180825997 GT 1 -10751608890336259192299389045832478092608.7794733985688605839058976204334118 1.1789672019460090825462381626583467 0.0974734614098578343834047420523007 1.1025571835673917038091883164221645 GT 1 -151036051986284730914872460243492781278451.5044606923359305874077754184125251 0.8962872287988252785294372328663999 0.0882247479333048727150608589972762 1.0923617534150829465864356193064660 GT 1 -1360.6992103490675727553420631849368563 1.7302929019864582304856163333275428 0.0008168333706829924957916946367668 1.0008171671608403942717027283577820 GT 1 -54762035524984336411292554072693099070093.6025130527941924974537306889670334 6.0847234323845508780807377650150210 0.0532862200898656414790932689382323 1.0547584702226511852638399549724231 LT 1 -711.8673491262934198680351327578600548 0.7615938245558019164514565717014079 0.0278675256830374573291415603998923 1.0282631933588475717659840356089449 GT 1 -2955122062562221849638569791065.0071760560133213836501285871750493 0.6730848470635786480290284258702757 0.0691463999673806010056048082056819 1.0716532643036757590409507963314413 GT 1 -133617373120.9673730386102499267387217158998523 1.3270345723644531917199958961713184 0.0131084856714550026916282036604872 1.0131951601504481543055142796481033 GT 1 -7030904227058169682201964270.6454878575494232580503287109044354 2.8074115126692004824160971984661220 0.0191883666231129033824566588282605 1.0193748527603295162572307900008469 GT 1 -435677824408423356384787032385417202147.9940865009588487935369080572725253 0.3553035748090794787930476606915322 0.0808488346601322590372411323863770 1.0843046812089121090341463201261477 GT 1 -525981.9965429138734271820304237429596612 1.2106456415448158454854159899147350 0.0810368994317712220744110029693589 1.0845093091537393389000948320966297 GT 1 -8254730482218397885587872610787097.3848968932833125785884171352320015 1.3446612932038143620827566713131514 0.0534546298122372661218625215434597 1.0549363747877046250915301311360607 GT 1 -33745418260029347962.7575003055030706374021244189986109 0.0425020815622002383195739361274225 0.0866301666553720953423159379983088 1.0906144055506349124982103924816788 GT 1 -2973218649191818885468948028202329175951084.4299445198858835022569580618347092 0.2083212874185186877596829853193610 0.0280807657253544684831698894856162 1.0284825702840906753766024797802563 GT 1 -2981759787731478289820296100106214720620340.7486343724550553964521255297439865 0.0427883152583514949169833896718948 0.0485208129084919732175015283457059 1.0497374662723373455562942484035019 GT 1 -127061491531377535552377196897244555994.0074454265625326451297191009875451 0.7507441868560969879212677731537074 0.0387200553063145328671388888087664 1.0394896068205104270501812203488351 GT 1 -22417166.7757016787596681259323934162517348 1.1189005502167648031602642412354310 0.0815624802906058193765854863357899 1.0850814009091997451792464720991746 GT 1 -57837146241132463926709927174077882797.8118836617838192724355684728833016 2.4490794044980743728371603050978009 0.0962048668690090940309408435611524 1.1062684878122545165830737732102779 LT 2 -19632022369259.2291469773604527869150066650375306 0.4739889385931248094184596197105502 0.0228049070849494449234050865713797 1.0230689611880626378712736860723490 GT 1 -50088820680985825972690.8384940026901570651776933242162627 0.2201065386865506250684951687867879 0.0074240211538099044767827288789242 1.0074517163571800438328190789708613 GT 1 -811600632991704510949268444848951.3095947748342575632603743867882032 2.3162884431763448552326125441738370 0.0325946881051195492002492362752999 1.0331377277101686685325508103367384 GT 1 -119801262069338595171930758214783.8181045104639422269077107727317618 3.4158808630198980773852212475567182 0.0429643618463510651373357882432619 1.0439146487725550067338590640846995 LT 1 -74587697873813.4492927250813595361735996454657870 0.0989748046666054541309078920175508 0.0278786571068283057006974536353543 1.0282746439458979218046839777763903 GT 1 -39725488.3044788608969052998708570082463266 0.9019639786567636842532646247030494 0.0357591467173137600837176848531547 1.0364141677747396394249250613888062 GT 1 -203917522085010123389615863006786187.1970150986095685964780091103272095 1.1856305648202732556666841108292488 0.0201187738611617567934729037215190 1.0203239124800804052350169150107523 GT 1 -103202736372185754.0148251264254135304706013174800987 1.3517641131882917698553317416203827 0.0862289070131775900623320937853854 1.0901751842044731565798478464512984 GT 1 -623367.2268825409248013579133214531619474 0.1081135004054292381145465705673594 0.0456245628779630692181778069879036 1.0466981449901839035737684393109698 GT 1 -16909810996243951379437.4269958963077273136254446247879891 0.2348407210876659011114030699540623 0.0975067859734612322629293803565767 1.1025941078875370922883505455054736 GT 1 -1672215775293926638.5354233912123000146162759786372594 0.0449788662988807986629206119002162 0.0788188325389364306627595655504371 1.0820985547301796770436298033231462 GT 1 -418315632750549.5432069275397357069264233153231357 0.0146970201645456909845548700472507 0.0299688839844390377197260257639843 1.0304271296326506505056852907671124 GT 1 -89838128738787605634665363930823797810757.9397266689613838349166114194424796 0.1081626253250701324120061483129720 0.0190307053764425428768067264715703 1.0192141199845547110541425881812137 GT 1 -113549648797186379275014578.1062216969542503111817354809528754 1.2139663598901829938110048496782847 0.0715504362240353452041820178482746 1.0742392197768139664395369688932076 GT 1 -778449078056885838136063869303599629.9518667503110337899610368007200161 0.5532503817486459156195925993394691 0.0435533472793780266354616502991211 1.0445302650805158858061103539240986 GT 1 -265290667125.2612138821199594285539307524847471 2.2467378911152334165249477446405306 0.0545156039204770082863418758794030 1.0560578943730346294787329507880226 GT 1 -22292114028533103986099832219800026041854.0651982465799890708117559850594598 1.1734830079138835219480880578071726 0.0525000212286780580793485087331520 1.0539283644304931545075135923471989 GT 1 -44154612850.3583688910758639383080449389793340 1.7769477454356368815408463376501136 0.0280288465119940784272792005661595 1.0284291524435585319694263344243248 GT 1 -23385716946251025441508469095380344.4500325094088011453314946985960287 0.3537092014702865070222370303892833 0.0966765169377713902714312177478787 1.1016745581951096364352223031223493 GT 1 -394754421307.8403468707624647943253352727336115 1.2745945585794301438523230175786040 0.0305920523806327184631520462943717 1.0310697571112078300385627077743205 GT 1 -254558508458678985016422313564971810103.4596985043287405311974947232508085 0.7572803750558020591583931349132177 0.0215875568339192111250385546756684 1.0218239768179273529510444047573373 GT 1 -11063438350227327183856380683.0887846121960621870933424393056686 0.8216624812675894463753587135154052 0.0036889778074390280390295817721679 1.0036957988663947594972827869422707 GT 1 -1076293375605386610106369753676697565820.8028838335500987482331193727445924 1.0486278653943348533204407409409447 0.0738634566769639246875137219594698 1.0767336002138969239381754296807841 GT 1 -41004001948113713401126995.7519999515102995754592016018516003 0.5463548177948519365615464349302176 0.0536065644714734991031972373828364 1.0550969025967428153958173577969879 GT 1 -40211432.3290472016206103230113729602827174 2.1030701349410999718101103676662839 0.0150672017932013090764065696858105 1.0151818653082537445326158853024231 GT 1 -6494962524226514464599233511831462609780639.5911405439436002597875688479621887 0.9468681134296405720696488023586009 0.0541294061349702332020892113821479 1.0556495122417822910678631855569130 GT 1 -247.0373264376890471576962951363978014 3.6655227018372249213694328059019255 0.0309507722281635386902302476490503 1.0314398657276679537317634221453746 LT 1 -507834.4509749162098738695054092102267614 0.2424237608094813671020016940412251 0.0371509847145687905185751316466004 1.0378586652649407540080468651858239 GT 1 -131813057968743610.5610063203855446359687954446318901 0.1098073861747438246254678618845637 0.0243251527442824911202747018724651 1.0246258963788369888945780769568329 GT 1 -57839203245977094362174260.1669695357844069192212977377160693 3.3334486690502577172090920752563361 0.0109516810650569369834946299718630 1.0110120921980113980638326164402710 GT 1 -3326301248660078149650245812.6681795021579846588860383389478488 0.8439265428139222672299052960941227 0.0212406395910893886738610690972491 1.0214694680866760477455598496639246 GT 1 -2756657259784.9893233886890379655342450465451842 0.0217211773407742882328298528778200 0.0376994448835063528065952319414707 1.0384284497556714033630351562822191 GT 1 -27978018120267697362589608888.8380539125381969680766454009820330 0.2459033087004442983562526294198612 0.0690135475557484107858453822652821 1.0715105534282910244046019741996566 GT 1 -607329534715461099380.1217722379694131656505518029553008 0.1087237894978580351314775007980348 0.0875591890727594632205961390414338 1.0916320603665691741936725915044028 GT 1 -2775510032035825.8950213804154795693069283811799999 1.5629650937940745136118465162583356 0.0982497403148252719798267519177720 1.1034176712194065194509530922801525 GT 1 -221257648751259621324949874778.0745983960853118812897563572066680 1.3521106347563827213034508212951392 0.0583019719087334738397797845055780 1.0600706204565602413729741525062851 GT 1 -4404732521142293692532656342.0224422952902796967920912624281429 0.7016026063098409826771859835665363 0.0837960645581137447314222248288718 1.0875163021426429340230530070080966 GT 1 -158095917521768024402917194195166.7318335854125012736458826404198333 1.0149547841876776758382999057894796 0.0472682021388941893177399929636514 1.0484218442533796354564790774108292 GT 1 -97994353714525329183859984971349475390125.2393158575768566138751657499309603 0.2913627159304132415646868775634276 0.0976076050458916574046306014287998 1.1027058258513056932046610749843204 GT 1 -145113.6003940302414671557531155908633673 0.2974421351922356319565009989379813 0.0434835679211626685124597354513789 1.0444573108674411235639504481902988 GT 1 -61292019371444614.0853869519303219323278146905861032 0.4148682798286020677770004557905511 0.0584667444538993457885584832783878 1.0602456096328955911723247333366804 GT 1 -9429037911160602228611906234309571.7839528496299274863675328823603828 2.5368176174825781394503081580156048 0.0442594141225409337946118037904302 1.0452687564384746409167108587015222 GT 1 -34915805559091153633524.1292229841213114140041077499319990 1.0701126482873524662352486115057926 0.0301107496763347327840973983823828 1.0305733889272177804058302129945027 GT 1 -107422280383285.8008864860663531509288584721092352 0.5188448549179642947442022819844175 0.0885501554685903862598524717013906 1.0927187115760340466188632526987700 GT 1 -60492729623137878431.4576188720895926176006949960155081 0.2926868502005143286305645411869238 0.0224471083054447561070630892866562 1.0227028794360233445027979583741187 GT 1 -7312022979971992483841.6662896534183516964277567200607471 2.1757088832423334363795677539980278 0.0444625557093497141037852764909600 1.0454813279056994831030322018046320 GT 1 -169531078.4116456961623170297852978931359097 0.8412934281611997561773703827306715 0.0263487506429902464432373763989311 1.0267020996668733176880005084231731 GT 1 -820605190395581939430216599.5776697330800285574671542070387041 0.5971750546609166930211250292531569 0.0889914901709415200419983443566016 1.0932030405703535508517846636479186 GT 1 -1227048192008365919636.0168939473894965116866834879310641 1.2082621256139956994884533373966480 0.0024943620297046153411759300766059 1.0024974781335448389309152223302501 GT 1 -37761261726716129072934439319562105.6661824091931467030579484014210992 1.3625443559163757825730577455633800 0.0755306471751692612366618932247984 1.0785353787046139980755872925763118 GT 1 -1538.9933781224020132069313070538634955 0.4209828641456222017514856246979056 0.0536064912910351037179127372687392 1.0550968252711477523275472089837347 GT 1 -66124721495118218241659398470945679666.8751452292028801813176170577202407 1.2396927829668290045413004212403559 0.0067640070817832185059617517202697 1.0067869866589867314320113460584403 GT 1 -14607.6649898076208394805324519638327698 1.1649118841002409429688634605375384 0.0931447156511623611059225861116932 1.0977723957880421911978694429453743 GT 1 -5111243628895441490956504.2822557401504234507061153627701251 1.5228653599683622963795259758541462 0.0173441288510020873047927508880389 1.0174963003420052533365244963258114 GT 1 -15647426980047490630253566767790146.4822395323045523145750316513006660 0.8418121869416413232114496857747203 0.0991850217500640935068294064645006 1.1044553940152166494164674059408713 GT 1 -267192740685979394345828465880042706620016.4595352262275177242727088493736759 1.1403030394442742216420160662287150 0.0164421207964081659471786918353604 1.0165787926522034054264115644829621 GT 1 -10938506489343700.9042951726226038220027200764347416 1.4627596124391398455375572807742943 0.0815481004001576981561740383375436 1.0850657441251851445190959091334870 GT 1 -113872356800887222857179.8041198608234982782085743310045064 0.4211774218392061270265287603004548 0.0715406071245618909781605962792328 1.0742286332594315838195440176073418 GT 1 -19801390902800176495102585242939881618572647.4504155835655884168531750211869364 0.8543458023373537364491595241493972 0.0069608827408198957954954597212168 1.0069852227025968447398962221972056 GT 1 -63374415329132115074597027187307466546.1929782953715359019260365236877731 0.1315491456318187858273096161444377 0.0438450950140699474795179157779758 1.0448353445527971844881170957890160 GT 1 -579.6082737049274956068244437197023458 1.6572083151704615387807424732909264 0.0433188591186617331789338556109976 1.0442851291699147026304668174249854 GT 1 -7697854361.9904775444485776781367015242916352 0.8828592208254803151775603391563522 0.0487448602511769624373998983605486 1.0499729666683306434195075042568432 GT 1 -363071218142926371261066180415.6645403543527666965527869951803587 3.5015325123381264821363979683607386 0.0169358153439206132355401579265965 1.0170808663011833421734458166504400 GT 1 -98960210167835932748.2220078234275422058172022472058743 0.6364455622235811598270518207595560 0.0903024189506756934464626631181389 1.0946430632218264636346523053198907 GT 1 -1091555965083735889130433772276765779599.9765481225630755061976751666186143 0.2400521086335159043547363332024296 0.0467104585883382020511672245244855 1.0478366004735925742256561077356407 GT 1 -10738155040226914429933189476636057.0803963001147051189503118432213422 0.6972856512931757134861977162782510 0.0597743489870367255401496025715199 1.0616353782573933677106964855822656 GT 1 -2724365193375942.9037068585219645566053021887278293 0.1943607472815993742594252824890303 0.0161998559626298592902808030505923 1.0163325082117091674741506827944506 GT 1 -16187099.0526653479936157247554005157006971 0.0014879863312904143820778658546914 0.0140224035971404327518095091492774 1.0141216463385971783601932149233635 GT 1 -111036157592317292361064023718788.9355901714926304624159418052967725 1.8895758177573506663725984727314428 0.0348773197585784432977999961140247 1.0355000559396007373990208360775172 GT 1 -4953594773619545829557697294216249805421.2899514129497125104319378955832151 3.3887142619165591700927843826606333 0.0501073086961361147134613046451812 1.0514062572898674858881571876694985 LT 1 -467329057071.0155600749619491580086098414728680 1.2079128577501756661386712788138217 0.0338304279745255482809264579435986 1.0344159197759902058711749227737401 GT 1 -3874843829984995283288514878612.5747891767598430915552225522459016 0.1983621224218397273685926902471118 0.0552865028198432606259356551003191 1.0568735750431458297474454445285906 GT 1 -355007990620240257.9130984192618090797556028410025354 0.3986612212605473236581584934316785 0.0795919192384378337668801539104569 1.0829381412402120182301529840849301 GT 1 -68487057282852471.7330409018905910628201292571173443 0.9781097771711939238730220835559536 0.0751434540232947580560526253002661 1.0781166389272896664935906000138469 GT 1 -12210580720482456810165859618801117524425837.0794650706582150294108441228508207 0.1910954877045518300270571808591858 0.0410410539793500253030194772325260 1.0419070141697292605256644289108084 GT 1 -505904555675.4815911850695331309096621978860378 3.9956662275992270638538109852634072 0.0130602579188593994059140537476622 1.0131462930019028173400028981297050 GT 1 -65578.4025518248914320709120833455975748 0.8240252364037444176803182197927305 0.0018112059262177543344595956270553 1.0018128481428993084184216911315157 GT 1 -1839059585615195883217057974955.3517608269701477325932244242569412 4.3155019737527918294694218219492935 0.0678054857022937853736743047199164 1.0702137797446707583829535535529530 LT 1 -671708320434906729762866.9570999522418462738735673714624380 1.3781724821632161361103296131960963 0.0248945201976965225631844521678848 1.0252096294231824666186414959877806 GT 1 -16017811531649412981.3453101295612918255132241370899891 0.6346570828972614644758619608670252 0.0314263146310015556445592836921660 1.0319307170787340680963687654631965 GT 1 -31647715402094202991374623827524094.5707361879968965563445525804753362 1.2527372275076546435584220814133410 0.0614357910546241939214737760782750 1.0634040087318140625096847734687100 GT 1 -608276018177702792046321540214251872541285.4177156521169601385243971351888185 2.1885959220516646993898385241204696 0.0769476627644817235379372769534113 1.0800693426897671885636545741206294 GT 1 -2695203712910343280094.9000951672643740677512657174833588 0.5031539483604247855005756798992784 0.0780107943334083985666246974224945 1.0812217630140424961702009848403703 GT 1 -542388725489633484854068021160252623867.0987631140081306341143859835611701 0.3099155940584836689402785602286518 0.0623653866045398136104924881151189 1.0643949438234628482883600013596622 GT 1 -117706761329072974394905438940074321.9336856026751663179177043936766955 0.0216371770545381678760838169332257 0.0559664884203742302784501479703379 1.0575936139120423279202351315777733 GT 1 -35.0560713997591253225361836352494130 0.3907819537730209947459582307655104 0.0570376102610593307522127291018686 1.0587288807718991769581504575339619 GT 1 -327928455129898978.3886664987824839310917198379382905 0.2301783053933861597842957863081084 0.0586074176479018580903885846747706 1.0603950294256806998486932603698145 GT 1 -2885094210102044374017974.1342653226608584271513600892545785 2.2922180296792026514671452440924730 0.0042232881715815268173149634238645 1.0042322314419588537334264135447486 GT 1 -843750248826206404191.6576128296260145616473081425849252 0.1753306189706960033628615385879575 0.0577807644599842114006407917339684 1.0595172973652450257241692001677884 GT 1 -752.9194314323773976567875662318291745 1.0196752388103406702673320813792300 0.0799424796985598683847195847524868 1.0833190888266912614152169867183174 GT 1 -6120020090.5976457241778542311462541170288792 0.5170960408263685315955541602332818 0.0803469264988421225384987089430084 1.0837587740773610682357741610295362 GT 1 -516683987851385375302852011806190522347.8618195457564101374059647795810154 0.6805915448127067695235281120890253 0.0104964788315536425534328588103146 1.0105519554128048857736348581176943 GT 1 -3399549776051036102071797924459.0302665885649975577955959859370572 2.0420778051507501874143250628430558 0.0208197724068774795983178435985249 1.0210395598369292054038316421453446 GT 1 -1948.0343048264690368974252232394363744 0.7117502216965427258426092152021785 0.0602035825351491981647859128585769 1.0620920043393608036862388254076965 GT 1 -1038586080490306336395754365450599602418628.9952488134439837878454092825518815 0.0462734818836680637181938108953959 0.0327008283403534451137686775873602 1.0332474501367641509978190914318200 GT 1 -138690811367592984499371.8843362549692170530539765061797895 0.5085286929345358273139134496382707 0.0564519649037933924457817278115656 1.0581080038677809369390305738834913 GT 1 -21547348189630902605364020.2221534744763340852811968777882940 0.2859254341949211541261341102586777 0.0855371289514393704443508496891079 1.0894184122503775073984158574616509 GT 1 -861319034352238016757886665511284272252.6896343950326447372377085756078426 0.4761910945131948909388579923863673 0.0505443131540974272641944515864036 1.0518664198073918462768777632430442 GT 1 -276034.3884949335187463022672722620476932 0.0706914514210201923039830757950800 0.0068609394461408549892261692495638 1.0068845839020301796674927640623839 GT 1 -6497237776205026572409651330.5163296887064491935914832070025331 2.4432404301692926006201108717370401 0.0502548616864208139032361968880564 1.0515616058392392969280801845043226 GT 1 -1009491176.3965922864649691414781940654010673 2.7913820291274359149008591073116461 0.0192200313592308603486635163902418 1.0194071374989959517902322622977263 GT 1 -3767556814127932.9162971419003694569088789611492311 0.6152220419445801351727161021057603 0.0620831153070944932275527016415576 1.0640939429713250039876112700285083 GT 1 -99684174454314599154089725989686450839.0553640560630359183882304485655132 0.0642343159662118991514202652366109 0.0956742058979457173879331859245270 1.1005655918096405006290140683129788 GT 1 -12920064477736689654.5726351149421989718444060582407215 0.6398921928028324025058662406887067 0.0205809772231648931993714589258854 1.0207957170142071020547858357417433 GT 1 -3975611330348845508238860224429410557652811.4699854742806039709827487143216214 0.8206019657471988156589718765860282 0.0650942209275664433432664079752456 1.0673095258167185983321587763647786 GT 1 -1483274811340359237746243.2852587367431636765975887713266559 0.9773620615229527191334502060757724 0.0232369376758725979106652703395056 1.0235111718841361970659832724454614 GT 1 -817300797589419238445250814296840371272199.3920236915490873559751623644306424 1.3115884371477143186388168094317834 0.0085042409533858407397747417502233 1.0085406083419594088247265295288924 GT 1 -42355354859129493406.2125778998488716381705395298886776 2.2613846872350008597013346797060245 0.0858938905471822628891587438261155 1.0898086207730790807721011060163450 GT 1 -219689933110119018534221505176.5051649530637313666116591167680990 1.7058120352506239499966675390798185 0.0066030192331317473309944416644132 1.0066249156059675743949367512682456 GT 1 -7326229821067522525309573574128616959.0536720031727589750256187958823720 1.1764940917425840098655468077415615 0.0293482977951100261106934259626153 1.0297875751370311491718839869511818 GT 1 -68108190168363071879632230117179961451.1268712901286022193289594688187327 0.1312069510955825582427053135531072 0.0677873998247953293959512302929246 1.0701943785341104389267917629723121 GT 1 -48269807623.1533910049628747344106991188757954 0.4402569932755203130305953948371456 0.0019607939157127980523750424771775 1.0019627187887004821077344474401509 GT 1 -58395886.3787793492132958305878661779027508 0.5597595937614867511738329683195899 0.0303878593780120024487974416130169 1.0308591424769254977448995213031234 GT 1 -105506499338065942995953327.9819840420738368803736395749467781 0.4443059665026707865743854189756911 0.0443973959478325423849257966128555 1.0454131384900688272902829500959071 GT 1 -48783419301451894933805812595195772786.5657070636196879903288208977386954 0.3415074615155875669865490737683720 0.0954827093391495439662039637846532 1.1003538580654316247242008200050019 GT 1 -5761316697619537580637428745470112.4991085438387914749197655549915930 0.1163436679534031592349606022469292 0.0964110181688208041474819507296458 1.1013806880978916770758427118754619 GT 1 -10339632317053.4318129219720922347171753398699219 1.0045529531867098738160450990540049 0.0680403181892824860446460479569572 1.0704657250920257438019592982514960 GT 1 -4954194876829189219308794365792445699.3906280993732516938986212902639881 0.7882417152016201473786089586153533 0.0867660220115290587137809453326039 1.0907631574097568095117007333711962 GT 1 -1.5242207166406757369225834700855948 0.2601000621273406802327343193054230 0.0971968963940020414361795309752344 1.1022507962887971297850378430389574 GT 1 -117456365133001135317192107146706194237.8164145464212536955004201696215893 0.6065319757213027640459615914742248 0.0425094296001222590286542413015525 1.0434394061221710933280684036332249 GT 1 -313652154855500008004034219296559475455728.6264905532515532702008319901411194 0.1063749698354432001182002342899880 0.0495642580979329601232518623475340 1.0508347238607019633433555600116961 GT 1 -146519675600943042865050000912165009459543.9675412935604470862829281362040912 0.7920257035712454038844019593839890 0.0437483826505553230091120564077718 1.0447342024969972835691381413551539 GT 1 -16454795653484076564309197666.4762745778272459558245849165907828 3.6340097034579612287333736795091882 0.0632145497608546542051799033408906 1.0653009981608887288872996794828840 LT 1 -131993104017.2913293792036643179680966293253034 1.9716219966441757523755717529189928 0.0597207183890502056320079796824746 1.0615783397492026681253427917032206 GT 1 -894913734.4938680342822879367854496536696840 3.8080992546224204537855162620947009 0.0347663474147622770741981803148119 1.0353850799198356021427406611732889 LT 1 -232.5216893033510362451141329035959853 1.5649742370751522625854847852596992 0.0212151071062069386311917859171666 1.0214433818463871547927053987446735 GT 1 -26066550.9101062674405394327601481366695355 0.6199527464606519487528429828323610 0.0653256139705674474533192100850550 1.0675570605825465375081664323120689 GT 1 -1.1237427687900952697681792254932911 1.1776630315314688158287628641101287 0.0074902770068319132672916544713815 1.0075184700021085425237564277414830 GT 1 -1466960676692367925720123093.5090366819735517249468686196755569 0.8604242223904817280450575905828854 0.0783983760577680505725385321954803 1.0816422269519673068012295188968175 GT 1 -188789718779648543002413136.6532691692971839995934487355554332 0.0993312895826704880106925590899226 0.0631427905672854318017821106609825 1.0652243995701874729062187250987322 GT 1 -469261285724117848949671476130668.5632240853352352593611568831588034 1.8194479366985322338082507854943958 0.0347655456065443727035833255141147 1.0353842492319677157386381625018499 GT 1 -7522763445814350306505775498238990610200510.3623430948550684674062306439061396 0.2185170149492112343316769816573205 0.0005835446178354419085362136875459 1.0005837149462619919290436929683242 GT 1 -35832837507357.7715189041630199778475696957630510 1.3761512406290987543013969503966487 0.0415314392398892515007495400590343 1.0424185174933197387704477257568089 GT 1 -46552172708090771452952142633.7505369882727146949254340310287480 0.0470661134594135481130053277669362 0.0743583506040713551061340996593511 1.0772681069284006425671747354220081 GT 1 -8418412541036726972992046965045027911077.2239344581387433127171779186028534 0.3942438576323132578635823992620402 0.0567577375847267057348616904915316 1.0584321232826554713747440002920581 GT 1 -37223773.0005114077593004869845659476717467 0.9075985860296155130908652588254544 0.0770593819027286252239706559423682 1.0801903823048540806438568104114657 GT 1 -2709185841249965409128042099993605977009740.4603016841373411663439387406167477 0.6153834244051414590583828601791448 0.0002272517139789855494291357018529 1.0002272775395624182469879896055873 GT 1 -599338330.9964156352150276841456354306343785 1.3677641182758391568001543463874543 0.0459685783023749861730900736234542 1.0470586712862913553815181904751603 GT 1 -41644652231.3409306845494751141172790732770407 0.4978033164234940888884367005200632 0.0439123320774846225607673844783909 1.0449056672873654448783713481043633 GT 1 -6438568030488046563331717882174388.1106270786467568066783345487240903 0.7391680262760781820107406717462357 0.0296484162965485408132678553742062 1.0300968157302944981776792700713505 GT 1 -13711698380915449279212306670547042.9870292105324351984771442571400872 0.7861356676037278823797580367572028 0.0146383259272839503907433382603151 1.0147465234050765550065832658421584 GT 1 -16765.5268824927229590125082367107719973 0.1545913806261008301846031977266799 0.0251596564076905108739041665487649 1.0254815715545452516634561755012415 GT 1 -6523798496351380319668906478291153.6333774068956871760132201987874160 0.1111089855069993952000337023657904 0.0095888434316083820474074491418816 1.0096351124056479463621806177820454 GT 1 -3841456306941595.3125179846416331826580975517327430 0.3251575884160622791780251963474476 0.0487861052753036113970074540492273 1.0500163261379311825832294484992467 GT 1 -3549577296642586018104908394347827686336.2486244186595581484527301681171622 3.0642208935990722945384501128105976 0.0197683534991448713163130709810045 1.0199663612689828510637846420541093 GT 1 -3184094214915467765805306665466500952551899.9271017665894582572869928187110507 0.6406204998270820915370282813276310 0.0875405373941994444059882260899103 1.0916116190538780885832936172737836 GT 1 -40378101828670545648.1158638858845127077297010100468048 1.5207435015151140147687532460542835 0.0833646285575024180296872036653109 1.0870455178169692719308847806367123 GT 1 -719499375256956482132.4645467185767478948959062494328244 0.2100682938084566180890367206347546 0.0936133185422198481093955480753049 1.0982892632666540479389471693347991 GT 1 -18130342788783405204163.7016974693078314264582026708236084 1.5738828131602965875863692462819289 0.0471428338825343343970661054049484 1.0482902647166478709110381653910491 GT 1 -49885136823471426290371018.1521112840953329254431418453784031 0.9687928110267604370836754342033450 0.0411087759246537586528754011898781 1.0419776369393155738825678233290253 GT 1 -505701469065406.5910042995162962846076424227049954 0.0504595404839477024092935532601409 0.0929110620532177092881044053815577 1.0975147764011117496586149543259809 GT 1 -17780879261705721143710930749829512023943.2882465439127725814029465522937382 2.0578804572738938589223424520704294 0.0918060635442790641017564383222063 1.0962973367821935931092180480249164 GT 1 -44698759096957419687273.7911440020868796168348934575214523 0.0443112604861631314220676773933990 0.0828224656439239534921005321494982 1.0864542220226594718405722204719577 GT 1 -238841126311423821524904337.7563143226360666260623574711142450 1.4573777570233061663968209742814971 0.0054224947159037896853151182372119 1.0054372498041405445612963248184300 GT 1 -1270.2697553081155248187928427538910615 1.7125879308439129292611543051012979 0.0109221476039951349151907407782129 1.0109822321602726269514067668270001 GT 1 -1323617042225473993761074136383854.9844926501130841353033091651253951 2.5260020929744242356327236429129686 0.0370758534512862535433497650319122 1.0377806381485496433394516207070968 GT 1 -40.6225932924526969555137293727932455 0.1489061211958822454125969635228617 0.0778702244578069606175716654937604 1.0810693109463548101934942461462306 GT 1 -774770968597678924235459.4793751079914490215474155434253686 1.2078765700824909892632564221412376 0.0460165574008767209539688578934856 1.0471089634505817332845374636048697 GT 1 -4074242870204.3291504894477659082176967649716014 0.3248373883128753126910317434206585 0.0272742240048797609028000853151567 1.0276530700282992112873221726280075 GT 1 -87909254845843149021374174.2224469038758648095485969460782443 1.1385771401366301448203625298287444 0.0873882388955856658892475401119185 1.0914447231026530376786822016289819 GT 1 -25495796675254734628768.6743372372429709757804266039687433 0.4405481480631427070201425205027607 0.0307674547400991550430130495620443 1.0312507110947744774711392976408569 GT 1 -51700735787704396107212437455566804794.2906477812587746343070971319718239 0.1045758974658762702352000130281720 0.0988796545384227733546070487975013 1.1041164615235269868019139379975535 GT 1 -3152.7541175665541809177498233848294593 0.4404168367969531501766094682197957 0.0443468896815697341785164937792200 1.0453602870941045807467740549806354 GT 1 -1254739542594580817.9559717826311920168250814782126400 3.5374891479570013912943702570135013 0.0561215143050840063116117699886209 1.0577578439029338704788261198325395 LT 1 -520163020746910.9289507854711254944146260328341867 0.4126786978765415560855176905003568 0.0066935784025401272576593846740583 1.0067160808693514576602421522729076 GT 1 -110013984.7147140862611198228016786773299324 0.8511074035688894993827800024105920 0.0954057865332940470154765865998537 1.1002688187456037960319576577230754 GT 1 -38423215678484805.0477349482163382145294237570807853 1.2527871083545843668432573488701464 0.0765859763867917390530167424025709 1.0796775820923527900734123135057644 GT 1 -27330116503018636105826.5113216836947189490361156560026343 0.4350732732950620381244599747483598 0.0439346708654394746614274232114183 1.0449290323507157617014336973190809 GT 1 -1931893117269.1285361433208204957859784481634662 1.0580352020327354199758780305268850 0.0668684623224930390299628313606540 1.0692091044948658827654657285270459 GT 1 -359485219205064931113444465379798127920.1657185579734129104675717784536800 2.0970216678797690524614349491155799 0.0844742935434648022858585519757637 1.0882568361175614880754712256532599 GT 1 -16120403569215855165.1069526302397199234548425857264855 3.2381201230112158374380384739611885 0.0376724769277875765590489829426360 1.0384004256859551170890138458012285 GT 1 -210566690.2144833993462798681388402458740544 3.2916056077177310441272029183383113 0.0734643347782069551480946079774287 1.0763027394247183490140160466248576 LT 1 -3793374892087285050873939033307.4593962872591986496477278320843450 0.1535393559926442908643983891053666 0.0879618480904575845312613557047602 1.0920734565486436149874402963179647 GT 1 -2.3198732397638611789314371671244827 1.7898678831680798258548777048995537 0.0838778149193772043062215147696634 1.0876055333776311579846600713948874 GT 1 -17122366623012688649613490850590347162.1080416734442347961706493043123132 0.7076471033163242485898671821074583 0.0767000837102309354109490985886975 1.0798011608677319472744738201782139 GT 1 -236934254406569257516977798.8357476107639150721434975763265697 0.5763286269311172348111171088997097 0.0682973690785702175340387355288949 1.0707415807437300968495870201867173 GT 1 -1505303468950745252873399.8298322832226179311090339235844441 0.0362070357475484153713237845856360 0.0379552763919910816632218738255765 1.0386943391600526308659962664155189 GT 1 -5424639531166143675154308.8943389841081058369691502459766986 0.1556054604189083718247996176597180 0.0135172539488578757880871347011473 1.0136094437371517354297831374718736 GT 1 -255630589799113377207146.8110040147600803445435144677408094 2.5879170517025937155532024982693377 0.0907607871397660534973057211910628 1.0951470589629953840840127184227734 LT 1 -51539921086.9247154773329320279316676529788336 0.4774247814088051857700761641365965 0.0719758761593448232791153715993203 1.0746975510158667102300379458739863 GT 1 -35.5572028554762100408837008709962175 2.3877886582616202475737485830815612 0.0522868473144976594560633729237653 1.0537034040695277939864428571463023 GT 1 -7830379328141160521578683.5135299650091208997377026923597431 0.0406046676071362268629719723715275 0.0275910586729755728672731457603505 1.0279788414703246321430744063462955 GT 1 -187482375416541.7429507078171496819952256583069388 0.4467717414633113270859687013733501 0.0586903614095835214166959826508139 1.0604831408230251000289631669939882 GT 1 -203738547190684.6208686268777924370408061214708061 0.6121858609368390548908739664129722 0.0607223088173170749978047701909493 1.0626441127346149982636111055154005 GT 1 -337.2919813701997912613368115127602342 1.2429117612206685347488792199219781 0.0595588274704817159814290426905482 1.0614061813419157882277803229752213 GT 1 -154394307463252982.9301842287760310658561041943163092 1.7399781740252136961584849660640339 0.0026307594837394177614652546486822 1.0026342260125404730332824535924001 GT 1 -74897243229077343326015937572969.7585162422519191203657206573129496 1.5868967134421621815845309628552516 0.0145743942967793362135534906020033 1.0146816441244123237664618033475769 GT 1 -4642348667292256651777.8213684210885486986295095379269591 0.2205698582969840079324416640214361 0.0902986316828610103562227337306442 1.0946389000141737304802906480834604 GT 1 -205978006114.6826336652201677446777148575197199 3.5185458855967487240173298789358932 0.0683805979041472873964903139535992 1.0708309145509385567150762384112525 LT 1 -15380914663941267263644884749171.1545572748631506075657273536036795 2.0230613480471040540865934748597123 0.0521902158711719222248801596493262 1.0536014465130849808737379154208455 GT 1 -119250007693541224580180011780848.1432896386392215740756149479418376 2.1763457376271242709917526871142557 0.0929005642333366786486189963644546 1.0975032033803237706060540995992402 GT 1 -428290635965.4255623859754888371121680773437272 0.1053541047060778844808034545257425 0.0947954126771381805177773080454983 1.0995942974904987023554595893003038 GT 1 -359183298.4702949236722915980197424989914380 0.1536291077047000359618286513745622 0.0817096387956543475426508969189793 1.0852416407649699962351145263646481 GT 1 -110454603444846428593617792.8786315267363663533522154959408363 0.8383084934937629462846947035321625 0.0180260355734382858094353183313597 1.0181904837830504031331429525653935 GT 1 -302.7590376961712904335341801683561276 0.7217197433736844132603879206148343 0.0023270642726452010871780174164118 1.0023297760945825295787213861005007 GT 1 -1518445389198087353708341371848.4795981712816039938084898784466736 2.8221954561132993389499631341651789 0.0727024107327561625583775264053972 1.0754807409127083791924291495439108 LT 1 -10172563584096825103226445462698.1504461892987878479397291817474157 0.2980037109806105823933334066319282 0.0580148674363964113873526019379100 1.0597657873715094923549207960177357 GT 1 -1594584309959418738.5984717611195006174900932512701161 0.2852507506960653202565433538151912 0.0568388334464041175601289846690836 1.0585181026235345301787673903247718 GT 1 -3123632216878371474765462637330.7167488765398615138102621540488622 1.2523531764761664940725729048270935 0.0006471818901515876671831371628561 1.0006473914027511080635197027715698 GT 1 -435429.5007652221351280277885757263802224 3.2035429994289029196986875564932168 0.0752780789832380852504719443574982 1.0782622125945695493859460064028265 LT 1 -532301.9912380164032240486853196894415269 0.1185739323786494317409629418929449 0.0147219652736411809849545745268693 1.0148314088826542126669675394689939 GT 1 -9654564197900296090807734903995975158566350.0992424465754373459996483298430207 2.0068355712130040158999157784168783 0.0800425112253209314568468886739576 1.0834278178602765223898251450502540 GT 1 -7481713544676714490731134285.2288324988660499135186317607215352 0.8748834276181300339041527367061979 0.0457108488692545531407820740813217 1.0467885600289301850881015573938870 GT 1 -7114036887173280458302.2802301696397839351245639916054819 0.3708992135157181513565996056688956 0.0550852868310432293258531201108380 1.0566606061760866518753637788646141 GT 1 -607078123007591606.0445616588112036361446408735960464 0.0246851967626389553926942719451899 0.0486619676975599352051729200997018 1.0498858302748155695253098862466959 GT 1 -795244464050307434944229002120111375116796.4149488233268678353563200137119267 1.0697319355693239625290454998601419 0.0984462014619968141744417847109238 1.1036355614271648121719585484206311 GT 1 -631343927364837529623464393680132035726170.3937848574915814903052066396637986 1.4621922195323537582242953514633410 0.0251659558027697812874750803624902 1.0254880335516035751592649345411310 GT 1 -917955245937523682250588970.6962012460789132882333462035055401 0.3513791966183818978993340682955738 0.0214580783631028019949861166816154 1.0216916503075762761532052276351135 GT 1 -2395320779946320361290562732.8976784459775014797715555233229377 2.0895899279166939250757216305834983 0.0813258230207409015509705969312846 1.0848237603187004636555045731797999 GT 1 -346318957024350545.6416313376990575661299956297254728 0.1518066535000030418635187563785035 0.0123150994629783401695772580554416 1.0123915586841291649270960811905645 GT 1 -2752969999392532552657225198954779.7194075742574613802340017919861830 1.0191257128129677511405444872090477 0.0671975470289005449900613936800166 1.0695618337033681802452131790918365 GT 1 -29142898702.9359626053297679919646292803836393 0.1220843407692689072263344666556985 0.0651447484358432781926572957614730 1.0673635728392645025240266850773858 GT 1 -22951004989564468053682082.6665015291988186142312429330773970 1.0171355556420948997211942855254884 0.0674512718508207301429109972070302 1.0698338734415718574716304817016926 GT 1 -468159242561187.4564847819369216085244821646236932 0.0371202913731688080134425109710860 0.0163569213174995249545559958402797 1.0164921726466362411089771051500458 GT 1 -7514.8472848312619133906083769873159013 0.1777112714575009090747923696446957 0.0181991945415167314699777462728030 1.0183668369689479475505850581884411 GT 1 -4945.2081071396288582408736995024464727 6.4623244526492991670323037580650744 0.0909915246632427865157206488257796 1.0954008610453113814937420834584086 LT 1 -44134231095024133349446502.1518207643168380896742271207751437 0.8273042809055595982024445143311641 0.0848499741385700880601425536434673 1.0886672644569411414439503699151821 GT 1 -12263095099.5265527214854566170672956068848909 0.2416428548621853682476230470442012 0.0502901487991754828684391722594308 1.0515987608262787630173718330584223 GT 1 -42.6636922049096865112372514050911528 0.3235962976650414563260056682000221 0.0426737567145578560563903402837288 1.0436110435484403379046204151440182 GT 1 -884466212843751451495418798071505197842031.9014477518552062349887837979777549 1.0788018835416210346895688922449343 0.0677382127595401114301880894043985 1.0701416161410214068014928116887967 GT 1 -346580803691112733.6685909261901354898885062953741106 0.0475127220804720973748002763854086 0.0814442195711166522520533507694843 1.0849526462538140777212985696674482 GT 1 -507509296.0340886318070275033288539424210704 0.1324287989468549528730498532492481 0.0628118537380917784993683677637080 1.0648712204631525165415091985820809 GT 1 -430043189.1884925396059849748395135743842152 0.5479159491166684103133643007147895 0.0689822766360081926402366770695748 1.0714769649754299192254257224392164 GT 1 -31864756016271918967683209738.1512836687602094049553059715560076 1.0570991398702952330846633989127011 0.0670835061575792103658880193026368 1.0694395849888357667109678909940097 GT 1 -1170148.1468104422096305568493504220002784 0.0248977288279402813430421861801313 0.0390346559906233217163319200364860 1.0398169330873158196967103427661569 GT 1 -278119317394291.4342469124945472928122092674898381 1.3140299724801590477928475889298017 0.0341997558870356318860763949945495 1.0347982527854647213997604070163899 GT 1 -2160634776774404929081813061128225964075.5169136142971416410987600565266635 0.9094978165814882749396815746931987 0.0575784381985879818519201556854833 1.0593025866761217476950347428678303 GT 1 -5165.9278609416724339550026171611476740 1.5631397928367420089962743301748943 0.0778366202092360961088225412924599 1.0810328696154553127114739508092545 GT 1 -1010.2820704131247390755704297831330306 1.8235955862795470832112205736368312 0.0206165309207275923987908817186396 1.0208320184766714609478713224682728 GT 1 -30238443012957745572.2829111084311014714154566353674541 0.0345630501621402356967715030591366 0.0647750278699326791916727409142056 1.0669681667320363677563861051974186 GT 1 -284032284852989680228631006833251019856910.6402179053705255220154279724362461 1.1286379260984329103706372195940440 0.0994237268398652202459935229120927 1.1047204170533949919660159686541425 GT 1 -76.9429284078278639727388525619859311 2.3975392979221251917085247010719049 0.0007929832137894991272631084109199 1.0007932977912922888025311918267268 GT 1 -3450061724670993.9847085516675758326254598987941766 0.4035491671593735744581852201465507 0.0480150053862524168874937253911654 1.0492060062753419181874643536255073 GT 1 -4286487239963805672289803579170884535809.0620138419915042715670737858502258 2.3922409670493223495554007178680911 0.0502827247678031354366069143446551 1.0515909436994523951121487127329964 GT 1 -9181979083000841773663188803201855181027185.7037272069979381426021300535929608 0.6173483260055240509498638837424884 0.0440730493724193345795584654054690 1.0450737803276675131120464093714066 GT 1 -3318724603677225738213429352503171.5921966808599651614069196959006674 0.2405447061807075599992575246881420 0.0548834930720404017310449054699192 1.0564470713332503011718634656485827 GT 1 -15255920112404118893719181858310583425033041.6777137720737686543300459774264605 1.2306794184387862877062941985965739 0.0256469884470211962882034227309141 1.0259816061439290394648612314006144 GT 1 -8837134.2657779116638872345811848538042930 0.3668231329981697802553865560493028 0.0248221357664822393020609771953935 1.0251353997667903536450396669700951 GT 1 -58814.5275051932240164681749418662475340 4.1369545340368426198977815227866928 0.0290496060379122819868842216600703 1.0294798995734914375486548868135537 LT 1 -168967824493443351307424397818703922981.4002999132138555076077102040373469 0.2497073468791701644127879653198424 0.0780777425419550164075730143495076 1.0812943784404497788620061733592312 GT 1 -5304497853648786369082.6306086568424991878814153611204017 1.6111179323286165560200901965015851 0.0670040887371488205269920218787274 1.0693544604993248399683675748037209 GT 1 -128994144545359849.6335355848121903029375354597390403 1.8687347883136385470433070186274556 0.0061734173843485444374247802469322 1.0061925517155712754597694483134175 GT 1 -59.7643080367807354242122417717693430 0.0802599050352165118990204276377409 0.0393555856938808259290158542966467 1.0401509548155596358481110169210588 GT 1 -151374049105173.4371551546997199773117843258282967 0.3069539270167603013972636334410392 0.0994525481000689728275419668056187 1.1047524206962377415871415917560691 GT 1 -27022064750362362802780901669348426506236.1770501858703725339799567501419509 1.1273330629867858896224307325570507 0.0411196105545793961445045421247408 1.0419889361261941009489469625063807 GT 1 -279068029505330559605556209573055503064.1394780372455386518276493415623349 0.7937971140432515528725591623631083 0.0888391079049232402281376913724273 1.0930357868932666715629058736364151 GT 1 -11651779475890286827161.6230921105924033907483702403520778 0.3485108450492194019696179819158609 0.0065859780516577999912321277873666 1.0066077613004487540767591428788807 GT 1 -19359707444403688150487818.8538558740088609612993476828391918 0.6925837197797386602186377240074603 0.0746086115592292714855443055806869 1.0775385083221815501042303452452216 GT 1 -9599774588772287443548381.6906083602865137704265085170496291 3.0195985575760433885484153828423544 0.0379953029854120716658377628408201 1.0387359457768034751694567115339537 GT 1 -1502040468555602.2973395823984067154756849838611467 0.3868799232639306612828493683258582 0.0414409149047641185682896704525171 1.0423240751044599501500737557949107 GT 1 -165052768767.5848679571446734404812890355723319 1.2043777479191203096841463103123772 0.0696844645560925377611871947514060 1.0722314649555627487870096977908409 GT 1 -6610896678398896970753016848.0441306006625987777756459767853320 0.7906847632346799850474205662783637 0.0050458762049683355755956062188018 1.0050586496251542736908841656873276 GT 1 -40960193496666926800532577249.5911562454523376515724688612994552 2.5805560998177240330817844976541220 0.0159861461888128122039930999214651 1.0161153029525831508773132754090719 GT 1 -2293699.9653465849811065043976725225738953 0.2467695505002333292189613335212849 0.0138636714928220907059572219333275 1.0139606697310532121351127106409925 GT 1 -4169289038347485646822283105002.2113692733811838150781212402807704 1.3624352950323195838885697435901732 0.0015001894167017902196293423508149 1.0015013158275388096616971643506746 GT 1 -20742913621601803836865175453.1362814546442638073991651193467410 0.1197615430543842398912621392687692 0.0621581380204659304604486794822063 1.0641739348290674029740494684777955 GT 1 -16791707289625893069785033685466167511496.1597300202852956655011815814188266 0.6274061182274990760006297744521285 0.0081121536936762928624261135301606 1.0081452362477675367796864321960701 GT 1 -2979348982862634824061239413402071485413361.5189737014154777063782975858021539 0.0936606249732240876985108363029835 0.0925947814055969487251035411437833 1.0971661606178271458254542426414103 GT 1 -1668191001395076633681369574989583968.7220215892765516471737416843391934 2.9723485193055364813492479424206456 0.0875325300665818622039274144192599 1.0916028435489799367151502715766314 LT 1 -2183.0301269682604055663921173763133752 1.5079966609921684426367039269164491 0.0914505663831168120980637612850808 1.0959059802796124155514301713241093 GT 1 -9.0174863777281224025818604237313852 0.1049280208505112389686169882998735 0.0045109845641815180542926329269686 1.0045211897569267563223711462488620 GT 1 -103484846520144631034400582073118092.4982236725828299172090312658385500 0.0922707311758893269175270494162317 0.0543061101931369664871322737709917 1.0558363460084405989762422192713699 GT 1 -10389460859030060539834502273573510979632.2136585961960570092005541050838078 0.7654656644653838501771238647658234 0.0813398530835356138851288518980661 1.0848390325123480921502108196242844 GT 1 -347541824416338938777223681318869.7931524796813284351425070300393752 0.9428406478518072229120463451217153 0.0178604522672727701260560828949881 1.0180218750895785503853738581105724 GT 1 -928131.9231302858099516083840231442701362 0.8325366246272449084009096336517659 0.0639614706594978631379893908612289 1.0660986395264292173272632242864755 GT 1 -6037611838340102791493975667414708252400.6491431974233581345856690074489598 3.8797749553551561998073071438917667 0.0948804077139492108160552135403077 1.0996881978403154340479277970341310 LT 1 -11201132345913275.3898164806392107648409238411014689 1.0639838589230917876008480320124113 0.0804232329428789819451567549873424 1.0838417505954644052951845652414013 GT 1 -8369590023293435334232491676874612.5964884176823586459681164456599319 1.7958727243520650301301116733660661 0.0174569224861799831016697102302781 1.0176110914020946155496756196755906 GT 1 -756355878295270928133508761.7292575923921790066212114848581028 0.3769650396204374805451566173556106 0.0593489672940194246689896881615743 1.0611830554613780199617224164048276 GT 1 -220.9814051915144698104678544776443306 1.0394136885714364332526479472836682 0.0129447905589321736295040066556217 1.0130293044959597004708213844031278 GT 1 -2895532647257133391740094256775.4100910629838680548176646244421731 1.4095942569794708245095817722521509 0.0255813548050023312193706800864169 1.0259142471572397442863770447196859 GT 1 -55838593539.0552388986685144404207679509678666 2.4696934375551466474046488843827661 0.0042893355402953225602888360942562 1.0042985611305367596396013613952742 GT 1 -56959058256537486577796256489416.7281188479716255921631994726659758 0.0327988807856297605599466751376495 0.0998985080888874426628722916189272 1.1052477532256232716961099769495880 GT 1 -26452213649850190237509502885443014598.7444264618993094030164577146421621 0.5942190502758919822524741325257696 0.0726809186895991032688678939241388 1.0754575641091144296424203396064316 GT 1 -9325777365194519061293921960255276508780.5112909126568818202047405915042563 0.3379532827972572703391706071987603 0.0354350044785426566325858503810427 1.0360780611188794473801381172940736 GT 1 -189176.6019489064160056392551999967846579 0.6906548043619482300772749863032700 0.0864649998664404159750534954465290 1.0904335895755988991667648804411553 GT 1 -2.9168448674834131937445012503087214 0.5744741781150813139645869571616326 0.0434347021124110309864719074407769 1.0444062249070277934999709445542218 GT 1 -196999034.9292529898417435864628727623127041 3.0974881294374009401478215767575755 0.0203229932439243354405859522614802 1.0205323465853534439448588458283761 GT 1 -360009693979581434898659307.7412442641024875015982619751973488 0.1743641251315670028559216242318020 0.0218729943252394191379259798477119 1.0221157547256146842704829566626727 GT 1 -26790491502285339700.8249569613896683770259330525784013 1.9990758203612118258653378957567644 0.0597331543060169191587159081347253 1.0615915656060815069234844984672517 GT 1 -65140.9242739349547540047150319058967049 1.3643247296015602162265735362232357 0.0614202629878496464241164719608018 1.0633874643780277247643938289455766 GT 1 -1811267227293934427443156712632360283525382.5152226244357270822908525291812456 1.4170094346111356322071852991387126 0.0325190023078258995582064057722833 1.0330594948993236688685877066921858 GT 1 -4111192498028764742144778054344270664.7528826738189540596320609382291504 0.1295534808119851012566494508179659 0.0863039687502204191697802382041853 1.0902573325901699958771168349053546 GT 1 -37226726887767629842887698062785777.7891879914273462919759861962979340 6.4289639112505498107174977474009701 0.0709139206011082127583905211792546 1.0735538863349721310135550625362569 LT 1 -59064473400992789403395104926234036254.8583970055891565067992930953316691 0.4072355261627349187303129040881040 0.0131679495857750515565756790264597 1.0132554157155133564358022221038973 GT 1 -13197486398506302810474692394000651826.8171228767842348109837548521058550 4.6743172204190326488484278593111950 0.0388275035568791105374069988549239 1.0396013893004067032199650449263997 LT 1 -2941109567019775366217446257840724584.6368886819636138367080342366647020 1.4343924598056370247322557207327307 0.0394075530913456952521470265272624 1.0402050526715050864155346823718692 GT 1 -1661338569206984619665919162.1840696382331047823169226814899488 0.1249420552870962502455243171580261 0.0286202852902557227305829212403844 1.0290378318191674753453766950079574 GT 1 -235736999463718140880231603.6835716762131351207924851791354388 1.0219164886535522424453442061876299 0.0602064388332816130708320889556092 1.0620950436172510769951933132331910 GT 1 -552518683004671.2995562764864675508431555494535043 0.0465644164400242137237634878422092 0.0188145562965010072686100376698705 1.0189938019060731439036969635224418 GT 1 -15948201.4101607571167641312099142620396163 3.8074563073081588407730104894241823 0.0844599446133495596782278380380177 1.0882411633542838956652794750570702 LT 1 -4473899972.7234059101795492384840070888690037 2.4169283950588578357297470221003264 0.0738571710081695714401349472146396 1.0767268132584426590370912791975096 GT 1 -7618911601790308125749690.7222479649600925107124980702838085 2.0374756080303067255378565990664517 0.0251558916381145448855407997773409 1.0254777096274809031856056235808036 GT 1 -8809116975258535166340951098687797.1818851331040268026606939861661737 1.3874675909851056466207386786906202 0.0729654550610469598373550277411129 1.0757644488043022169823532660682094 GT 1 -49162485453252140898987.4112004790250116540263319565973261 0.9912580622346719893080915655218089 0.0627409121038367376530939993141776 1.0647955270715262895473821632066304 GT 1 -4357750517002367904875661.4556686573581226888013545921462470 0.3624460976175861598195801265379286 0.0236102120775300856974226604924825 1.0238933994257798630499129255726442 GT 1 -2431479892450504515217.2101570534144494285158952355756601 1.5468768873293458373186722808898546 0.0573768184487837931401448532075377 1.0590886715939636048808581941787111 GT 1 -96414505633.2545124063829529969264078252901224 0.0126476648103786857052093211189149 0.0621025603467504475222523404697431 1.0641146753427588650440751106521377 GT 1 -491.5543621570517645985553860522372346 0.4442074046550293741655137219379449 0.0976999765318767677097777929423355 1.1028081939724579193413690103438731 GT 1 -50757022167689032941465028438.8155706679881887046016271190206293 0.5555218141858454007813032393577308 0.0013218486671416052610890507084191 1.0013227230797367064733641725558456 GT 1 -139998811.8402620492580268903628983448725899 0.0940199126993973475015692619731038 0.0688242880451170770478232511064360 1.0713072848677958582860376268071341 GT 1 -2152217789.3555120560694514772941906519941682 1.2210848746653722303504336176914456 0.0645769655565459308655254324015686 1.0667564087600064966775342775561998 GT 1 -39697125743281.8437652273723597557431771657381132 2.1792322123646640718283589899993066 0.0605607181426648762769756089693111 1.0624720903625711648816115031493256 GT 1 -1.2715297253464177672516359414226964 1.2776460256372257419935098754640104 0.0458834840667020226819768250268590 1.0469694808896232408341898171816179 GT 1 -4471535632714509365754667.3360783102182779615440610191943566 2.5984242155295244204735615023632567 0.0313613177401063236393398463605424 1.0318636135520317517087701997461104 GT 1 -26195776848465864366069678884867385605486.0269853975781150885642607551973206 1.1169168988242629305453261037604000 0.0753416824074057256916916936557189 1.0783309960960527745640900560878971 GT 1 -76190.2776732208786617142079402571495673 0.0571654382247005033673177290249015 0.0612152056415005247817363303615277 1.0631690120276843634325820913390012 GT 1 -72756110879265812527525.7586663931628616362933933300741969 2.8789748610300264758573251699524865 0.0815743448958551878780358700199413 1.0850943192423801551839967894303310 LT 1 -3593532956451593059.8082718463865964696228033314788226 0.0414897500993231949434696624115000 0.0009075367765768665443052736417461 1.0009079488374030526726177075806772 GT 1 -7410877633042619186758238587622008.4426035392208423767919054066232990 0.0666956853548553378498546399767796 0.0153479225475642623635450850002169 1.0154669210677013958430703354260496 GT 1 -130201713820694920852914.4178688054662154851823367878402760 0.6697443399926406263649164487758729 0.0043782543024919489873872703733809 1.0043878669257944225641825246345783 GT 1 -23387721601224254693596164636.6043822293468100049995037018695282 0.2386797503102592715087701467392382 0.0900611939746687170376428927113482 1.0943779278583730060566641644532157 GT 1 -19411945661430905119531160312476.7573777690161659397975091340848219 1.8005042349533111312578074173885455 0.0419020170041445915659738941312046 1.0428052275400758149958562731809535 GT 1 -88092523306785953279723422622645121716.7808609401897445993037466823979965 0.5986603882716184282888534872746400 0.0982223823984159834900852892917058 1.1033873329953558390474357897333063 GT 1 -2312857538122780880663736877593906852.7132582879483091498183313867861509 0.1004090609904742197101153300762470 0.0758549275530316651383802151168957 1.0788862148516822796226673244736203 GT 1 -28926096.2282742345026482838358772331555691 0.1485426492698595422628618305090958 0.0003569295747609977603527619573864 1.0003569932892831832054322750756485 GT 1 -1793015014346044143963816076558.3346655120416418840401033517423315 0.8647237307776657208828690258609187 0.0210021151061534429203060777011960 1.0212257969301131501783947332951077 GT 1 -34280246922894.1675978099319737979405095378084731 1.2515654373623020138639292131918684 0.0345262834995752381302959372773113 1.0351364001662198179561518023165054 GT 1 -4142672577387361827946237406197151746532.0289652988876317859163186486529712 0.2753985227650939034931757240433433 0.0517946430791478306836110185321782 1.0531841789615773519042744158824118 GT 1 -4543828469076789026478255930865738227.2257940845120102007569347935362430 0.7846782402942487168873669474467004 0.0339170831938425070388791291600223 1.0345056132501877221321912545447323 GT 1 -47.1442368889457443874213504693239793 0.1127777173324850199382270065283644 0.0664006792903434103742853511429426 1.0687079256132511249972065039692993 GT 1 -19619569114647150331854474113.9997422668817845046659776658129960 1.4797093338884857156213183751982210 0.0909891383865876788974910544160915 1.0953982359063960692914644621157357 GT 1 -100669352959449136032992.4816086046127748166276164581474176 0.1017363769651187535302366233303520 0.0220205030966526156887341711039040 1.0222665734785797089808760672705703 GT 1 -825736207151354736338413900676869031685.8877919799573338130100571738031392 2.2326263194276946342361027105360250 0.0609956289701758592038418640982719 1.0629351448008702720163690867704782 GT 1 -4379912531.2189148205043765223900716638125788 0.5361473845420674013570182564078988 0.0527919371494632949897708623306245 1.0542365025886498297327371414715684 GT 1 -9038789113015908879687.6583957193114868670308409880918820 0.1286802254203937924295087969981426 0.0740924553593200056111855485602140 1.0769808931212432836041387827107071 GT 1 -992642155177790000226279.3778419642421166402795849430671839 1.0062111226894329400173124697461361 0.0906933637272543559235253451202917 1.0950729080554725015398355922327339 GT 1 -25.2977553498068270760898557841359841 1.4283885835234918376390074800074982 0.0120645655366097077833354896977536 1.0121379331030667328004669950429583 GT 1 -2238168494417882476709561410181.7454641051818163589796757010534853 0.2649587322935509359407400997798294 0.0354720638656476529609178791128758 1.0361164826863440545940213643050595 GT 1 -103992784466704974208181236.6454468381554472742924005035865259 1.5296602941178593146634767933822166 0.0532583064595409562975434570010944 1.0547289858954852148505105166577267 GT 1 -15091690706616536059361.0838552246131328677974312773176523 0.7774176138081074836862474604597550 0.0221417821625559682676703286272990 1.0223905909930644100725841923668680 GT 1 -415899749.1107405122195684274546132727485796 1.3039163336692633356387544464271346 0.0784453423637627622055763218478060 1.0816931898643087986316850708899806 GT 1 -1768240558796654158263528526547977707978.4217319057187903379203574683310375 1.4864391948823986916462169906959010 0.0853113891137826476499572879124017 1.0891715875985843179532130945735022 GT 1 -236725379764292.1673498303549101458338110974169939 1.6530815532626678599677730025063260 0.0865615952664495342814894303545492 1.0905393332058474773735805140900752 GT 1 -2108009129799198.0699987970265976702220435165009043 0.6479168994754549285069040581287344 0.0416814114558790523695257584576045 1.0425750004041638232222355118892311 GT 1 -237737351833363775477992277618446418340.5512174149756776655534119442611781 1.7943191378673174377822759796807846 0.0152923312825937164005499274061541 1.0154104648868604605963480731747821 GT 1 -183295939966277957340213327.2478924996778492075039155565747582 0.8461009229460333936272411651653308 0.0051557476067042178158190170371145 1.0051690843336778750400626662159038 GT 1 -7032988343752578490252952628325115161641323.4448405819572985330325548585517547 0.1412994358372893996647803166802259 0.0922073614758886897040557783628105 1.0967392981311052212616219318255282 GT 1 -1790072947095577434647.0157211264690962123922506383450320 0.5733320631509599879233701580986717 0.0084254054339560262640152458852943 1.0084610997967101427170745370788885 GT 1 -32227551765842.8388296375125022744856760518880121 2.0470443402510387043762898599597998 0.0919495777234872884726464663900466 1.0964553707811066967375383166480295 GT 1 -37999296047266.1678881678656255120849521651451881 0.9344720622874298681644528799717609 0.0640374573901895432569496617081999 1.0661798218845720443007454713486724 GT 1 -120214759769885667267354865.9925610120167339424038249869750464 1.1918917346071938888483213744266847 0.0899572575462737256821131456965563 1.0942637108449149935580668074350383 GT 1 -182792893333621458575238258860206470727.0661110276666660152523152828547159 2.1477383567890704399216762137824076 0.0651544695231734630490895760542522 1.0673739713879773728470109434203995 GT 1 -2351119403978439117812.2261743717671961315424406338076812 0.8615895667464976606796896677294123 0.0194594116079075556019302702597584 1.0196512385960929665628228419785968 GT 1 -22948782216370665026106296071718343892123344.9871352466259674428261064695945112 0.9568958362458860888825997002529049 0.0391373000893405759336617119551172 1.0399237523203263725079122074027592 GT 1 -13224624526425388314514.5149361264612040979346829762293794 0.3939901156518997815146538983465629 0.0783220482149137126685092390590099 1.0815594095173219447940015944864340 GT 1 -20.0654189599368541998553964456467052 0.3135400319021063350932824584209486 0.0207260066743022967228965046110930 1.0209438049996240608583494238922705 GT 1 -43.5555155326985206064710054075980933 0.0559253409261471008298667809950737 0.0395791617725640152257116091488536 1.0403837174241152251204314235537064 GT 1 -336.7045802357975388318681066044176694 0.3578772528294909393262307371560898 0.0433900852814558134969432654438053 1.0443595832500908642813683115933740 GT 1 -2009614347.5323025291001594592696107585713459 0.2313674091306696833310374662488957 0.0017773273237487501267096617396998 1.0017789086439167591353176318506559 GT 1 -22484365293054187493831060234213.1145356661994252898634799851211584 0.1958323203833939563235587542978236 0.0811052616758799250674350154146517 1.0845837025509799355917556091709766 GT 1 -270.4065987929720129095773966841059467 1.2369643462353126541755350950883240 0.0220351709806105041210353073840913 1.0222815717418367612143235919222850 GT 1 -83420064948720377002203650707167.4057030244766911800397847084521840 0.6249743998561647236224681424535347 0.0983555261360923542675697446484807 1.1035349897625079832877832671556058 GT 1 -118876600655202901431373692670336412.7744920817849229049418016533848941 1.0969107165099052681152767788918263 0.0063937252877103441063767425612102 1.0064142526937470790532612055435973 GT 1 -487824.0740621032380567974298368876695190 1.7781095175306483399480436330051715 0.0053349862769969299711406706371586 1.0053492681346083782829278340310486 GT 1 -9258.7057664154794395850430693135589831 0.8910500806481622825694459253038402 0.0491074886443650297614158444027457 1.0503542497904591055060482128997786 GT 1 -38887.3504239656964779990479647079962585 0.0422483291352073960326354556309984 0.0688979748202126294089757127999556 1.0713864210499717602443200267164415 GT 1 -106420.5438800666192955701822358050011963 0.5548663087624919117021680424404188 0.0894365890059363469803392396908679 1.0936917380944700865876943124321795 GT 1 -3245339665057776187036298777836812.9262714205132835648642794625070498 0.6586052401328567943795017137326966 0.0184594535280936661378087897200699 1.0186319553986550004177271196924159 GT 1 -209025256152197999453872828641165604429.2883665663171493171123066698714760 0.9451096323932198943929628316673000 0.0425106679051056328021184521123595 1.0434406994046559494077855632101232 GT 1 -4923491410708.8062834467017876167016927126924856 0.0871223395058689627898591422198931 0.0256508951495898120757048150955429 1.0259856156870354342018464848238647 GT 1 -497174715378803106670663018066045397.8356227961075227939473569203319335 0.0432589496402353909223155710220188 0.0249849005124732062692157619254909 1.0253023214503332268352879992113147 GT 1 -1367668666151507762806387911863279171871302.2706218245593394423472039137758981 0.0795775593163529188173845220948341 0.0557019786934043632759710157740509 1.0573134621229170556948294277166257 GT 1 -2786288707.3060434196089997396364452692590338 0.7594394224482389098469252413697717 0.0895522482698626363141206095985625 1.0938187656124220228630636545589307 GT 1 -132.3827440491677712014947638828153804 1.1207458958622797602945898943611236 0.0730455455240897722099100151212474 1.0758508467960032573347054484845519 GT 1 -64426148753126071054508669.8396984832173616634283136660547710 0.9843695564348554433681875094524086 0.0470816997381458172681055181421128 1.0482261080040781241347939038237585 GT 1 -3682455.9658030988054973920502734910280485 0.1446441269883452244904225866648621 0.0678378076048232606638066460245153 1.0702484532622617651371052235828615 GT 1 -99999964575761473280.9336312337152458470469357257130692 1.1780704986161330345338748069961745 0.0953671987518566275097594426893394 1.1002261620959634495407592721222203 GT 1 -4910076533358844709.3372166900641689964158570698560186 0.8386166837123043189976774472424601 0.0330713155162941453345502737440750 1.0336305354897073122006634998414064 GT 1 -80837274034894656585271012612107.0681422607916612590237581940604815 2.0781924020182342635189620081057658 0.0099315116274204532251120217796613 1.0099811580720165690022473304287211 GT 1 -2335750929029946226781129926418036241801234.7031656543082832982626764890575484 0.1387515556618576911288374647498600 0.0574197438741087767764595965811684 1.0591342108970165352533834061893376 GT 1 -4893695240927414437800758125175.6765846600291152107017034639474674 0.1871342354218842673804170995656917 0.0992944210541465480671310647556160 1.1045768462004608956069291076955072 GT 1 -273113312067281752155540.9534949633042552890719643486203273 3.1123920380140521440891279022189759 0.0628816713027715590618798244368921 1.0649457200881016268168022226569372 LT 1 -91209997725.5515720794082022393775334103557012 0.5355878166009550519064411937854094 0.0427933808551475148873156897665002 1.0437360078601978080316264006743593 GT 1 -510074438306848978322725779291.6973975846298471620098084879280442 0.6264821812023111887793528010922973 0.0329642661417354353029380668474856 1.0335198308938494272036169682830641 GT 1 -307838463046165863234653796386425315.5781916963852064105851938643595808 1.2097121972062437683976975921192654 0.0842199891582255531973709086112294 1.0879791059882097966265035605997795 GT 1 -408814583.9452077390876901577895019600481294 1.0714830171045262299547461412838341 0.0315211422919484235499649751479326 1.0320286263082606820932137706128467 GT 1 -8725538217287164240299905791735779274045.6949246495087693462905726547472780 2.5837630940365279390228730826023121 0.0753565739100168859862755437689703 1.0814963878086967425468605519156449 GT 3 -69209107.2142999147792943157151087765973377 0.5072611940211636532093351533578196 0.0276591898893572265629738982090369 1.0280489082913736238667265984102071 GT 1 -85538270947856281485005997500876198568622.4884389648287280847335652703290392 0.4984981026852038855011472198584200 0.0360297159399706011512458404263563 1.0366948105105818964328433370961789 GT 1 -23240764434871188048146545780912625967401.1499779970656637466477387003490877 1.4871203048103789786322166205494534 0.0985224161044023490633247767008107 1.1037201019883480110420116656391463 GT 1 -2199178.1480358495460584290808765011231701 1.6147095604567346762259566391443399 0.0521972206815446790529519564095853 1.0536088370637785783569881702786222 GT 1 -700.3798892015155208375636291065631308 1.0944376425140237895359915211626405 0.0064499543988026967880476349379705 1.0064708452330783474901396693102843 GT 1 -67220863200109633254510097427650.4545124797550905721006078899642097 1.2070484882800855025288393747864812 0.0759686302256606830055163198779178 1.0790092579445114585215061383647923 GT 1 -1.1770846293520142488544068020661995 0.2537145289687671530196707188568991 0.0445986640667371518350561308885392 1.0456237797299297229327037378095014 GT 1 -26166257048379523438.4747627134654347920325917048647204 2.0656134495085283881676904704870353 0.0417198768195025108893555439789839 1.0426151395980319132143020792434436 GT 1 -5198464496120752812531.5349085409426615227227065613269207 1.5018365944232862311822203901512141 0.0581386065170119628362877122156516 1.0598971559082588022207118297256075 GT 1 -8364065.9383512823485192533511617097134535 0.0790842353111403982036076960542222 0.0619805301614862411246483765891779 1.0639845734338535325490577945175226 GT 1 -6617067430480265.9236565392979239676937901591600725 0.1072489525743631572925215624741208 0.0012808350574747280640377868876869 1.0012816560277902055801433514198895 GT 1 -20434692306470255836182713248594008754426.1742545106797754388471208310219176 0.1479322297594429104248194583363069 0.0309533890712342971093865905964291 1.0314425661545699736791643409188021 GT 1 -1392765013914279115297006710603373683960036.8952618465487656244934519443061878 0.1188008346467096603784041270449690 0.0878706419462615923240375712335561 1.0919734589949388792609165736280795 GT 1 -51554.9069344847380241933277652732828652 0.9339474862139060337521419533242846 0.0915064251179618011375646166086438 1.0959674633976248294092185932886533 GT 1 -16193730702781472412.7290643149516229288607697297053138 0.3088225703535897491313888332273633 0.0820617438634137992961596679071192 1.0856251497341145343343390592083151 GT 1 -2404850689239741260897282483.6736702908436369811170143395694331 0.9160231710582146455949521173897729 0.0441371094367041091263475276558436 1.0451407961292253306600863144290642 GT 1 -23911289310138911472.3039610224103770457022287464081379 0.3883160611955823321315322160263009 0.0899930590238945064117244061233505 1.0943030520540603740868362323505391 GT 1 -35.6459311689503244319286783052080610 1.4747658469766596778339026675043308 0.0701708883442027448972912380934743 1.0727544606268467307608377294673231 GT 1 -35020865800830.6841638100282398105036870319916370 1.9847506369206002250004478284187574 0.0450442907057536738676821972149659 1.0460903172792455629062205097704737 GT 1 -448.0239384167440972388193543620075450 0.1737447448821708695678513555538205 0.0272184088347762203323660259884940 1.0275956915047726501540089548790942 GT 1 -953271234813251968717012476413631.6678334974687845729714903100520256 0.4860687304276718243567582914667343 0.0455653779815484762942984953958464 1.0466361326425957841611498373205826 GT 1 -247750500.5793105026153664170167797322762585 0.6975528611569236799225464870228589 0.0302176351020838999396579006444675 1.0306835987431665946206124423768156 GT 1 -399261228955134302969784804110.3955382059089072796195750804754602 0.0666737264116096359784217474784648 0.0939416491679865102735071829397334 1.0986515701212166044781635476834646 GT 1 -211078869957996548906069390206247852030.3042348147121473402989322564703593 0.1094306966991463629390640934796632 0.0165745350786165879841022483896853 1.0167134295649194622516792104274562 GT 1 -2374872245697965173650867155.7720000460549728556944529109123141 0.1732577142891512572487988299925637 0.0046689428787716133585966969826523 1.0046798764379573319432220291868566 GT 1 -20643591420201247652.0472734175371150435153563591988429 0.2604557427552142152198599534864294 0.0158439045071766420324982565145691 1.0159707608799495170925806511611237 GT 1 -9985613734051390728161725097790339233.4186001311482336624227159976112436 0.2803592947627448787688672406950191 0.0457324364500106015032720298498411 1.0468111819196928917897280518767600 GT 1 -338219354912646945831.4700525115105172312710595600921358 0.0752179742110157824039776444644027 0.0120690888630288585264292553334929 1.0121425116783628105775153783968191 GT 1 -985.1302203302395545359218873895155895 0.0889962853175973651649646683889720 0.0054612562279994879327900546108795 1.0054762234057276798284760917452301 GT 1 -385202549543237999734165451.0902546809157666148987824843433860 0.4667382017116371330166242077826616 0.0507286975017185308144372975971247 1.0520606387227340525987177085477339 GT 1 -7325654162578542127402102986825969936.8697072294331455494525561309047618 1.9587560808790434830179698411361401 0.0634969293541034604091575829921310 1.0656024782503030288254520796012727 GT 1 -146.9065317151237893646477631255898569 1.2926966963733089001428830975015227 0.0971440264927816607820440988656735 1.1021922360634416159388634271386725 GT 1 -201026448568429561482136199339387878536518.7666650217881358610988514417664292 1.3800091623414579208137879631459617 0.0367123402233704668002876376929141 1.0374031996643314749750009447348719 GT 1 -46703450.8866410979080074484456908128505372 0.3933282088906276408309284031242911 0.0345560290885733007049063285044025 1.0351672099611627455558480414786703 GT 1 -10379.4088568651063763972626148254942335 0.4176938129623958292773240033200275 0.0963798161822460388099594228026551 1.1013461575220502673131224364130695 GT 1 -1581069178588871932273016.2194202840513782108357412305573967 1.0266382856409532267680094018204838 0.0793720295741557685019157924721995 1.0826992652386412166904640700646064 GT 1 -87853013167931222.4340785894301617820313059250287941 1.1620043437886697617340094369473690 0.0909667197307643369953318910405286 1.0953735735175046060529018420306353 GT 1 -3290696318408410653119287064713229.3627540000806082904990223468566720 0.0531866407569304400806038479758264 0.0906925468588809436883842350669797 1.0950720097138417319630452083432513 GT 1 -9246761757255438077944918.1956176404286201813847943500465946 1.0334445687054908724834793393816763 0.0973887498871160112119635477138580 1.1024633275489379850472794191783231 GT 1 -612852260197232039848429381048.7534490003701258189305046210106468 0.6156067983146307087756848127526969 0.0836397045707331711969721808776208 1.0873456560227132888427901214664486 GT 1 -22454254604443720901205866.3240096396589585453591565255399627 0.9012315143092917135816579021736740 0.0578565609726830660740978372578161 1.0595977452681490004005626464830753 GT 1 -2116733708874400501160766197.3315446446638852600159642525184364 0.4288954649196009275045021689930920 0.0924102488280525381390425862817988 1.0969628183703232810478339545525140 GT 1 -574230.5598685087969130464162154716012783 4.1820706307020859501580675455852953 0.0976817745468350731652839289386670 1.1027880213015307666889329416839036 LT 1 -345.4162384358141201069805017034278849 1.8909351032431977613128462871429435 0.0883247450926090801233634796959528 1.0924714324647988503396202233592728 GT 1 -56781633809570321606.6530437249584556689484764324230476 0.1738796640751923141660472597492353 0.0375833846376135839648889781445009 1.0383078499628150218303023457404032 GT 1 -495923789774007345.7703910398083657234865292602837720 0.4390980154997958123310886626073801 0.0429402506560502692398379664888465 1.0438894554718871721407652299499511 GT 1 -207318414.1367484019135720919679115764220486 0.1080047133552653650658745426559653 0.0614591960716510393742783295481146 1.0634289460868022384937670154740997 GT 1 -17651205948028230233980618601656162266.5723546826575253667256689152360872 1.0715480964636755501741347130758067 0.0121707014017013613217382326609588 1.0122453708596150803000195186073798 GT 1 -33275416.4149128276314678292745426649508385 0.9806249679471951145727593174882128 0.0213747515169660079384216139459130 1.0216064998437229146256664462506497 GT 1 -25089208.0651110218634002262571315122603927 1.5229067503654762013765248765347304 0.0450566141348512449796389999440802 1.0461032220752413049259868774612573 GT 1 -41942041458406.2766743854507749450424374702232429 2.0709885072041451318622420081498446 0.0883315321862779965472168748468502 1.0924788771320707115995361091444638 GT 1 -44475715324571801912676870276903402101.8962936200591685883108717371523333 0.0483859942875750558878613082607276 0.0012174923799115750541168409334122 1.0012182341258669674093231740277139 GT 1 -48296642015489775951460849061.1060249979627754517102150507960643 4.6097045188071058008310125673758845 0.0143770062829647805685349741146232 1.0144813568108144092827503754371115 LT 1 -401896.9962924148069869366556599096908692 2.5868084990430977441279882047977468 0.0727699426529783540262730516994932 1.0784077411349548985728051274446525 GT 2 -5976235044353924246.4969398744579725078093237967433625 0.6031624516129114511094797026856727 0.0631860043163116262860563078911563 1.0652705269258471571577706796073741 GT 1 -346768701200840626992886034061898470.8336046130055853857562671607121601 0.9558196020323886587870649321730066 0.0172013715508133479963453762384315 1.0173510338904349247026260394118705 GT 1 -504958474266692.6572125856667375353840003920523075 0.8302906762962683291561087930192307 0.0383158630934430348882749317048240 1.0390692222457890408841898984068575 GT 1 -2252395206029.0277035375966779574741718890918117 1.3838240402706557390825734959936054 0.0079354308081383457103205233355347 1.0079670839043697470932220538244024 GT 1 -184075060130417.6957627322349225102719423556275661 1.4440984896468570348005823202688496 0.0599279232975748966835324006097961 1.0617987293146392439267594093815068 GT 1 -4398744994193.7514382300904959148174767474206379 0.5973919998245602040559088901876381 0.0235802772965032211876691797150419 1.0238627412577749215812563448005198 GT 1 -1589499512346779562049711610872301.7190709058244671200629561113298072 0.6115208097829452644284598491562513 0.0698832817173135848180093865309723 1.0724451971799742051770614147141120 GT 1 -11985063335.5298081585756146123102970444378831 1.2498848549727298306314544792503301 0.0154412535555961872069136999659957 1.0155617113328870367793682028298366 GT 1 -217332123364682917190440.5416716581817003323524326266613083 0.0045899825113811394506289247183081 0.0523238176878182120361819220681894 1.0537424149182675188560970175540792 GT 1 -4289.4212157866894350405880410286262163 0.0192288788982011763431323539835356 0.0067642643167948579145201752541983 1.0067872456458204585011099922669455 GT 1 -1953187531102446.9957686785517897115266383767623157 2.6979052285893878732255180407392286 0.0607218889875582325485894927847559 1.0626436657638533611826928744753391 GT 1 -616592466832763457488259948.8557194400454391497312206303186343 0.6401926116265897278672518308086473 0.0657661003980805546771562521445214 1.0680284442657974655935982222830846 GT 1 -185884432620.5593102063734170243567784237397012 1.6683956900982476438736370484748962 0.0634760558829065819784728694283846 1.0655801897611000219485470560303982 GT 1 -288549145379528298579136692434919.3435717043206698255320591364159908 2.2433924837984679109434795615698684 0.0001234925783880054919720824172650 1.0001235002042242932025489404491129 GT 1 -4819064832655516724533.8167465457574961159310110396620189 0.4847042927460397245621495205086511 0.0702499051982770028996917092082595 1.0728394442122163915406726547977227 GT 1 -802562172302022662.3677012952614203780110631634180857 1.7488321596070401978364337703513729 0.0130593781891964568511642456854796 1.0131454016310993629398495764048652 GT 1 -266223350417597.6206505507762014168246681158293148 0.3811643900395121912078016221767990 0.0968376497688153262201776884700693 1.1018529518791359343527904283882653 GT 1 -4148.9823470849032643638046158885782113 0.6678179140094842085951576589942137 0.0914028844983703289878542268313401 1.0958535003243985040652752969765412 GT 1 -16739707448483855487.4390319711671201572629928112055560 0.4171437013641347376773086472067829 0.0391067174682642152855133745282259 1.0398919245322426072286749279834740 GT 1 -196.7800064433413912854829757942774765 1.4127242627398218789265768649454891 0.0138970732476420100290854131020302 1.0139945416405936368726772067441420 GT 1 -999016829740346593716118.1129722153833317700894371202761876 0.1210218554328363819069158525905986 0.0383408877580477081776640551366810 1.0390952442931975460173669158707257 GT 1 -1398735920713816.3689892281404791749190575029266123 0.2525865764277406883328596963060505 0.0413225793865317369608579710265086 1.0422006312642969868685073767475584 GT 1 -16.8012798826711755250290513590906336 2.0276010717425043236734816476066500 0.0805717661902314462728083250377580 1.0840032871302812582670622266841775 GT 1 -12232665464180255821319778595628072910208.4972519248648528268163644694884248 1.7350722562420991069391063073250758 0.0262091415369760857550378621753495 1.0265587227667922155312439193683219 GT 1 -5345.2275657441491921863796745377177352 0.6016832565774918356453646167676179 0.0041173254342210285235922129925492 1.0041258249568094853693589197443378 GT 1 -29509052927325901544576163330079001552210.5296353489506035131716367402511112 2.8627138308022535182861675798383568 0.0233970759995636844604967705180402 1.0236751332975845349256786175763214 GT 1 -11362632953.8584388185384509913833820887234792 0.5043186538605767629105460940662126 0.0005066385578985746494131556369017 1.0005067669425776664831306561899547 GT 1 -377643.1713952453670552283341456982791122 1.4790956749729290001111079642270239 0.0948290065022208566074161021272714 1.0996314100382400985333668853765180 GT 1 -52250936679.2277540112245710674547058171852440 0.2389784978554375897964629824466063 0.0651164957347086776192862431574586 1.0673333518246455725318230128267661 GT 1 -9047257307500334554166070011059592549719695.7776406642496378618605773664517461 0.3249435043189400252166570821395791 0.0938045512628767744319124255280709 1.0985002691219814334654488222496728 GT 1 -343054311889500121138858430128.5859452888273849278806369700967007 1.1677638115283849439452934530558910 0.0223973976499955196489706788424897 1.0226520285900304115628434912971268 GT 1 -4452487421986419937323640460.0183319901595664606761966358947369 1.0506937596301213282314375891797890 0.0318451731899209467368014231774664 1.0323632594436715001609388700343088 GT 1 -1012536.2473827704154404139514935811203157 1.4255216135718397163169407921556894 0.0080736929871319534393872278444551 1.0081064617421165834396368501039104 GT 1 -2899620815.2816409297045888294297055513233482 0.4061935905333714061318378918401601 0.0072141656936671963093610031026131 1.0072403136198713832706622886604832 GT 1 -17163660829998416999796873.3620980981590536302190046259732076 0.0264476006586622280430389146659374 0.0409651454403835410025085393915273 1.0418278600671631813214225856222694 GT 1 -3311198542865278.8897839163287135281676344513892120 1.1030478913184836824518823129215073 0.0951530517107265761869250180212099 1.0999894674966626462062910268891415 GT 1 -39021262070452339889078579513196450066.8532113011828892483043904941178823 0.1377563123210797135280458117539514 0.0853094112938412561995899713740216 1.0891694253132125011963875677799312 GT 1 -386003567.6825857039648289374818004235107484 0.5747512173850350465302702066088032 0.0895152519073751514094827529596932 1.0937781310886314084594079620260445 GT 1 -3491693271522813754.9361472164378855936939370976417747 0.3040493146388440177840758437992319 0.0697015338362691565171226438610380 1.0722498129634379438993285782169411 GT 1 -4489102777.6342710748904577087040254197150203 1.5172237320289718571066064032734221 0.0877611709458990766335553062267027 1.0918534492279768209719180812922136 GT 1 -71773034886331752153401881705850.7420398913931976607591021232490185 0.0180564839222669790678107773160319 0.0858430140445115460247855507367221 1.0897529652136449641172829715533819 GT 1 -82731945.3718801164029024736754772736076647 1.0449117475735096401563096253486471 0.0048658673349546448153839040845019 1.0048777442106126974265416356974107 GT 1 -899805538173620321124091378143576024390.4272922064928304756929970343043704 0.3458818502656293937331256996408941 0.0147971184643190659436018137288224 1.0149076879169692354229927635553816 GT 1 -16073040300882078539523344319758971.3837270962031429531959693763703596 0.0798879974150371778277935495886907 0.0961290500913775667347836846331924 1.1010686833062178506043770435297429 GT 1 -976238735297429177.5045526265970156801821102321366768 0.0196315767713815613762397298604942 0.0823392249419328580131246369805584 1.0859274827337697686907558535829631 GT 1 -2337.1405519512245304930658306755143723 0.3434780979512084105681927904362142 0.0208941313060519932494643141316929 1.0211155026721985120098222340115519 GT 1 -10342249679679802128468661.2793369975509237776927942655835289 0.4961227034988452325190861009294429 0.0461468126443517147900713683141280 1.0472455110371331755633198627441389 GT 1 -8375020.9383921016860291059346539849073933 5.9118867809939563132161337849392674 0.0658035681579255525304111656934868 1.0680685504011127316367550994769016 LT 1 -3261775204.9412041779748911467760950117085817 2.1642107743499230858460660202523974 0.0479299919125528890338781629288674 1.0491167089875688079919963369176179 GT 1 -271711647822305695497084109339619.7909051824869452601380234772275349 0.4813259250575304448730730847601410 0.0485908759351810983160723293956393 1.0498111048840309667350186514020650 GT 1 -9060990263216419677715629.6102381154320635884279902729187897 0.4651805618809205515855557841887816 0.0609379250796670470361006927870128 1.0628736944824841441904124974852510 GT 1 -52517429008186925943833375494462482.9256093473337150343365712902014398 0.5310041356959369129477181534119586 0.0238069999147992488340798809977369 1.0240949661292703034362026996951722 GT 1 -3574072549299080574818368772310198883.7362624500232445996119600055269442 0.3558842896166837604670505446675610 0.0333274589059042269566410746653072 1.0338954747002540217952241959808994 GT 1 -6829113.2793939736368676090933835414509520 0.6501829943116851729474197947870492 0.0964484254232154391423871063065855 1.1014220874835314214035476406056902 GT 1 -136037564902515932317.0260809811611264562899610372526890 0.1609590876080271924332128695577235 0.0060650164591703946876144884857152 1.0060834833774655000975872882557310 GT 1 -55.7490268845286945544987384654067336 0.6225897329316117297482308408844211 0.0641432922600794912987633684081963 1.0662929042454708919697119212225576 GT 1 -7533606744886797.9310163317822893098040874983063090 1.8937060405469397436014323342542205 0.0800964263370103506346468846348945 1.0834864256680132855209560349710436 GT 1 -8397284.3463214314433272655176315822396283 0.5088262420174033109430005422146581 0.0896795905944786238377128362211460 1.0939586431954572949716930254713301 GT 1 -8571836381832251171690904107246477.9480779805267170594630055177300253 0.5682732995815387483270711926897569 0.0533498904926396811331898374750405 1.0548257266049598485224122440189663 GT 1 -57039923063561490403604653483032674.2440029353338932154675278766099785 0.5461643179312406135265708768026301 0.0416120152120555196809479595269799 1.0425025884399963343912531731846184 GT 1 -699256779295207865948959764285221050137.4245589313806217039427113411493952 1.7101846016788612487037253295724643 0.0353813725933906083150804347997644 1.0360224605171239091809754950142734 GT 1 -167127861106733432280332394574491556841684.1548700588199034179384830281673987 1.0230591422566313623729769640559559 0.0079786794058616139242431915193127 1.0080106793938117718711577677187678 GT 1 -63936139123635488.6275195668276495850382641244905287 0.2005477118527811125200508095294011 0.0027963262817220251624781857620177 1.0028002433059482932193277542669265 GT 1 -867828992609873548680273033467169275.2582770697749737789806490647868334 1.0340541536638501884298320297965877 0.0115103072112938050342118035997344 1.0115770635490390064078066218905312 GT 1 -8542542038613680684758942957.2434440088891600338614093451290543 1.0157858099285273471436175819233403 0.0100331521614371397902323066191893 1.0100838234459592932681143636182038 GT 1 -9595418781009553866741.8233850610286967995649847686809031 0.4115071183092531319846546508856175 0.0833064518212481770168471973059100 1.0869820521336964773058395900940943 GT 1 -329799443350601739816136689279129.6394920081648298125220191985419927 0.9586079128683756472825916664565345 0.0251080893976069402871076519283415 1.0254286750504384422111666225992865 GT 1 -19547186817816167120.8263019317929153979718865559530399 0.3372111922285339734766368440502395 0.0476782767869074113214427942652059 1.0488523567296019632386733730270054 GT 1 -77.7504611193038930760703111534627714 0.6707053071131388753128575363310674 0.0242076995600692216686904380695867 1.0245055221419518985776222021804704 GT 1 -12.3911089273490444906813971408068539 1.1617243318506858596100996267612324 0.0410401486293606392204447548620825 1.0419060700734613501356915579886139 GT 1 -6647.8958957785933248238877787504558966 1.5422158823959852574565994005132288 0.0704278368512543343841163755337215 1.0730308383105332988806992900263585 GT 1 -13172797750271641066070592601136.3465048276587037758286321822790509 1.9430537242006204946883072680684814 0.0893127631380849264642366848679785 1.0935557591525402767328157006008142 GT 1 -3174340129704864950.6792190852749905357644419282128555 0.0074884752263714933224476603668360 0.0543322299651454977643849729799977 1.0558639660798048219977973176346357 GT 1 -15486221783569.8285669328566169735824813840404428 0.3787236908059048468298311993365089 0.0856442781171006425431344096958329 1.0895355908116607495485467430470029 GT 1 -430530373068614691428495185198609.4635231098420248165838993038481753 1.7866183510038417145762222398059945 0.0303430774677074746989538821921547 1.0308129581581392757305749470254610 GT 1 -318807339848897396674842492998379679.7461794553261115307118682954699359 0.0767899420870189238499021131384025 0.0403152691579279229150213631052754 1.0411504538299502630963049334792518 GT 1 -2815817879989262.0800409749439967776122216212375319 0.1053235988736964925531311005275755 0.0557839052187335092206755616770393 1.0574002250702338109300750696983401 GT 1 -92327028777626982232906443496.2017046391418291552808551399309374 0.0941182514403070632114507568847083 0.0363688809344440744437214102821928 1.0370467141742995051029210462883035 GT 1 -16.5704298083830698169136700318207493 0.2995456590657481173042765159314299 0.0591662732602802602495489644570206 1.0609888534797821970930578087473253 GT 1 -6553491821754935662172168741314.8465848104266285983920409988725925 0.9710820263970072920807991829719375 0.0112393064345164647311322803977142 1.0113029447218590304813779998297756 GT 1 -5752946812791299611082.1284691683964685364396252676314596 0.6431370537878799248067160425729686 0.0965855191599173938637283586216281 1.1015738266227964067959296981711078 GT 1 -4819798089377117995.5974515330656670491346563344011484 0.4448231227071184164407170851398287 0.0538988080422151173393863055059501 1.0554057474080517510724555601365562 GT 1 -1950963385688033434755196383337620886685856.0896199505784633371239662017464893 0.2613224737467935266152549171646554 0.0284632715919307322181603514530956 1.0288762050037447409655995019108405 GT 1 -8441385713468881287.1106623379149105796916816550949323 0.8364245064040074917443244012843601 0.0631893590955649227055431408694318 1.0652741079838539616247934960172969 GT 1 -1185303999548244076326813254110394.2895565518969024049525364006493231 1.3562464618709729811529593870422220 0.0995914599638448673517885672986744 1.1049066852809065097217771209769700 GT 1 -185036526412838076283342390379.2722393109665508667307845375291276 0.3998847921812051134131141417874410 0.0584674839962912429887464831201543 1.0602463950992378406803124114198585 GT 1 -3184730723401022866002984357982.3973599482072083415522811691778147 2.6922278794480338207803860696287743 0.0967919706460474220906328035002460 1.1018023762903265873552610653221030 LT 1 -1717741.7059837036231870735341482658134483 0.2533013958259907817550101009628584 0.0152955972750493374289260135548496 1.0154137816050861512478586349105413 GT 1 -503450919984189138554888555481136164.0940911714302009297888987258601584 2.3506940108373114814968288528839984 0.0133930245780993731288270099245361 1.0134835200454202579457558163757887 GT 1 -109383232106801462157194770.3062802717594209579414257314552732 0.0228790553508076250080316448380670 0.0516923189816979899242313600239008 1.0530762713484978023218181507466430 GT 1 -3107914659161314365295722675.1878380877508941958729097051828225 1.0325042292962623058340369293734728 0.0506258119048221262618458261443696 1.0519522608317514116288861652887038 GT 1 -3395489256872402240695445019010014467637583.8292110588976972391844246396496117 1.0846592137893134587340551428731049 0.0294173684869494510217418367930907 1.0298587367589629901036725007981814 GT 1 -432400286767137695504753345383421.2082631757966086957123163903503762 0.4740397499572029134699589514445950 0.0527841861561306859267849885465880 1.0542283196329470362496009365283811 GT 1 -8588834560886177912361952061738.1274683434962232884778371088820661 0.0002980767473271524841633783107565 0.0192856646138847444584485407720953 1.0194740591867557745993299517370083 GT 1 -182149173128501902228197745853547.1535913154160599439381214236407009 0.2989907139287488130038544173439793 0.0004118682719344681268993882544560 1.0004119531129675341220237687328109 GT 1 -10975415685521524969682329101953409840.3495710957712364140808542046428181 2.0132863232288132840382658435164342 0.0164905366924569384285352335513661 1.0166280191275885768254475711430841 GT 1 -1948219026996.3683670877362046747367851534792579 4.9818814647504546051545315016666461 0.0643348300955557063589379196142510 1.0664975909642668608732913668226851 LT 1 -45290045221658782652062287177897.0496002227615214474720506231619103 3.3626221027515212271910680690561564 0.0046009390378966368694076861253121 1.0046115559355610532338308184031132 GT 1 -13613551129076956865694558258320148.7032775658232317487870471533048718 0.0042655209760000727747753471653119 0.0011204610545667317828544042507373 1.0011210892403364319866531694105804 GT 1 -1261347804453778953771213307886223.7432811494335880597502238068927991 0.6337614616556908313291081835217052 0.0167973330355241612414024683428862 1.0169400081989259737584307570142514 GT 1 -99584211457601809024167025283096481829982.8935251372915541806386804814688153 1.7968690833190414881125639099580079 0.0206962187840709091797803235209770 1.0209133871212830736824591092623376 GT 1 -18162484930797169279245785.9036250684574221077935841420400253 0.2962934820127228820723955646395651 0.0973557538639596537007610106884735 1.1024267720328588559017753910660737 GT 1 -116377.4626396851238864038607591618336749 2.0869172921751091581154451312858839 0.0064681537176429614486090782838083 1.0064891628665036336602369044483625 GT 1 -11.5382358974848807635953456123329225 0.4795159411261493700669415914905644 0.0267046896978515023781228478260233 1.0270677379090334571813280330065669 GT 1 -219588271861066185329985.9129802051786764708065446071496791 3.1682478643994970208220099223428757 0.0138756223645063578153592783418229 1.0139727886883971291842006514782493 GT 1 -130166.2530824240773261831248283471252191 1.0717079746029397154386307243836322 0.0573727386301359949251058028773866 1.0590843434489544111372928439054077 GT 1 -46265159008878944.2017386318211526835637196610474725 1.3913306644608764623760677329376169 0.0697257731627489735972744975906624 1.0722758687327958097085045895235038 GT 1 -22106033855868845821704471947.2204412204818280022081309500699117 0.1765806518709669710230347998447061 0.0634015074973689606659834066004401 1.0655005917763452042960359429785970 GT 1 -202125086572447929623069963045951886.5505715488062530141897995169521225 4.4381879816885532847773846578777059 0.0906266074892736291893789086045722 1.0949994963096412558402781983343623 LT 1 -3634790479283359167505819.0036475876753504638920321140611755 0.1256785015304029805003170107580167 0.0372740165120941229108164211943849 1.0379864523392132484495632124451166 GT 1 -1088302.8000384869562226352618746430549806 0.6428097664318054189287643389466639 0.0713849911824682832847872784800933 1.0740610406822941479561662416199626 GT 1 -1638475635982148114041.8411736470468577524981687067806052 0.0660088196521974106169098027511276 0.0763886824848777041958471936942426 1.0794639478792521973436837122458782 GT 1 -110513111758741770209878248678909.5754638453748408663021176207720199 1.6236526584549806020768736107154570 0.0815307760540216444924244146000436 1.0850468817517119427757679222554888 GT 1 -4875184221609452331938969046756559.4152782594469683139732357941352544 0.0577831202136666149598779494531932 0.0098198576606863822305255055603875 1.0098683904476680519897249800955592 GT 1 -14.2917403302601269786934227305268311 1.3311477463430394601080950298645129 0.0297578288150157827210235793990191 1.0302095776293860119841608327171591 GT 1 -1115025630213798.2273691969503677029718860759185141 0.9167735088355411209595902277581752 0.0804723719964606586498093821171526 1.0838951886207612231725151190435008 GT 1 -21.5517412075050891378881794638409429 0.0755624338865521722681453061944765 0.0678069946233688534883094097735128 1.0702153984221818929945952813432773 GT 1 -38168730427.3281548388177612218446083659866423 3.2916842871180499309246972636128575 0.0147196116110856977245559816662989 1.0148290200546673078647708652185664 GT 1 -560799879067801288906315.0972390552418231986286175316515391 0.0854052604858369926330121980877008 0.0893175929589050769475916766269431 1.0935610626567864680650385210906839 GT 1 -190174634037477446.0222370549921275622846110299279779 1.8675601834565880995398794158887576 0.0593131925840821301009875396415992 1.0611450243229204119992916880745528 GT 1 -4359218323.0673729340180634348629762642896211 2.1421667006126336266573645962707672 0.0731307771683315043377714322719575 1.0759427990623866208276518735306061 GT 1 -18625496176953351742710860703595482432627.0135974297420861474780402847332057 0.3580689568806294773931667772307742 0.0464048630258537089317906011990688 1.0475160823336499086695294380610875 GT 1 -218499327421208.5833189348602403661714197456985937 0.3816336822829294321801139414146224 0.0725432161712333976771959166865119 1.0753090798407919344246112182306993 GT 1 -14129418827653.4682524852810906614936918993253075 1.4609325355014251832528916660024002 0.0852467434664975187451306336027083 1.0891009150634649451688929979508580 GT 1 -394888811543482488747555072031890.0946544791127968279667030966794883 0.3158375487930189872848228616445354 0.0822848864163268848674446782085654 1.0858682703119894406533035263279604 GT 1 -1613328555871690113374.9255002438230531615932652072050371 2.1137598996855825958340918807796786 0.0310829989030174218575968949068685 1.0315763249425803283770156492572635 GT 1 -1136645115177403541188237350359346007193123.1392713763818112263777488562509094 0.5494831808112065702579840655209981 0.0186273323196388838908393147674793 1.0188030060500482066939036718775217 GT 1 -2771090024699521658286099802768.1368000794592716155020685699286578 0.9835680749146630452702368459018158 0.0850545712385979816497428026798568 1.0888908561831141704026020081900157 GT 1 -66055347192388322350356.1155871551445088230270995142685133 0.7129388013771493766955896400042850 0.0421314961876796135576627854555567 1.0430447715886928991489474301871127 GT 1 -436963967814344488986465260485704521088.6053675883874650442432468492433523 0.5227188876946856144487630339865832 0.0173133247546560674468526803169236 1.0174649530367682541468821071913711 GT 1 -717501056382192502625.4065235298996568286500672190475913 0.5784102477260313222159246890144911 0.0629837233610792664138433935885413 1.0650546258818669241817661862520841 GT 1 -109269709346791253182343030.2001231823053927820052160516799301 0.0807637972383695238261007471796324 0.0975467766665941839039509115568807 1.1026384202198165907320974077413790 GT 1 -45580523395.5735142958512075846602638483664434 0.8752235657804870512280338757826283 0.0221877379651756765677819549173353 1.0224375884837982975397217847069326 GT 1 -6224.2792430293485818445635849502257247 0.4247429251901051944887283563553643 0.0852182076638966828214377679206752 1.0890697204682908532149614851412458 GT 1 -9095369813779943884189043418986017991780.7930624036169583132498682077309149 0.4511444169862664262129222234335137 0.0064043305663096564537290365198331 1.0064249262728774283409386727456309 GT 1 -12291427732030326539.4126022394037735258423665770893532 0.8616665085652619130011996891394110 0.0062676789180218102786922937878521 1.0062874032780266814645407540167880 GT 1 -207994817705508228635.7850982667625757980710994130292093 0.3297235933923720880139991756587366 0.0561520417450078489755302483471986 1.0577901869789387048859992430296644 GT 1 -442823504053919.9932358743677789652432633493640804 1.2204676116571914906857540998251082 0.0446314333440218611032151836458674 1.0456580792834693898563296241172811 GT 1 -5866534073017991652668597964966548.6687131183671843857278702964972421 1.0462044896242363305721648714325562 0.0218363618733231448670558017024235 1.0220783037956757952049919657353042 GT 1 -77340520.4985747818934669200527588051821848 0.1101957854559282601558300698324488 0.0605712275374155028984852589187570 1.0624832773053972700749060129750090 GT 1 -44507091140762113167328334.9095345370224562000507068869545384 0.9454026783360343406733673644264258 0.0437570595023050466616622623366795 1.0447432763547127800888881117003453 GT 1 -2152837648381915037461576456719722367795.0175484004306309048208456009179053 2.5894853733676126742177104230529104 0.0027883372003647798380325724675736 1.0027922318539593245217800271839384 GT 1 -471334100687635616328156631909816884374.1593559465118955510161096972855064 0.0867889094204752324762052968527918 0.0047704537389901786796227659712679 1.0047818686708329156559207505278470 GT 1 -2015725.7515626533495454738129248732378559 0.8569688674129473301242779415084597 0.0080691185756511649884444255856720 1.0081018501082676771584636176506158 GT 1 -217347659.7672576955644065298399262866366986 0.9457686890932500407678521342410255 0.0789960158694121661879695150322546 1.0822909168614985742354209232856527 GT 1 -3.9312358268061996837850300774840164 0.5439477897853274527908980766146907 0.0347501727621226160752443406452388 1.0353683228195453458124191048024427 GT 1 -13632137513427132231487193917818.7140959736783887105372966942201655 0.4580982341676141436893521773596128 0.0362361246000921988213151737859347 1.0369089569061287038719814523801945 GT 1 -633251550705092183168187440516197469164979.7553830603679075820855480366100572 0.0166986938633008579156873300692539 0.0550643766559873148193915223426919 1.0566384772543908207547634846158634 GT 1 -25654581468925841569682091756622107372847770.5197984995099319346157986859960374 0.2280748976675573438218453731430013 0.0787934065745158107512828569434524 1.0820709536301701988720171059082843 GT 1 -21471392461427298676923516234387989256.5944255264357201018480288812740275 1.3341042116160786094493927981784911 0.0982364038580513526324776438382918 1.1034028818051405047339148555937055 GT 1 -55002354668579296145239398626.2574818835363558120517618464416970 0.1676776150720255043799332453487342 0.0078811913804751544127576873495094 1.0079124121151760192801737318638886 GT 1 -9554690125499.9988962662013509095586104871422727 0.2233286742296145678315324248374638 0.0924400938410592523274664878805585 1.0969957027254935204911768479301034 GT 1 -127988589741.1752876082778702368050692258940706 0.7407851035508976023894134668271524 0.0907485990204191635784585369630060 1.0951336543083281414251279311755974 GT 1 -305586949740046763082588367592504346856.4479072073964534726717943458827429 0.4987567157135657941184431684380036 0.0348794662549832706732623604118952 1.0355022800079350020792558782955468 GT 1 -24646107044931141590418525823.1221073522258303203521505862076296 2.2741699797014408240605747371212506 0.0132691652889765423596489047272735 1.0133579872667449834541133694404162 GT 1 -260766120145241422005743509443874080567.3198070010528061605562249514435199 0.1479361261160575467222762129642327 0.0990713161347056351767500604035254 1.1043291767092809972155587646803896 GT 1 -575012966269503401627729147573305889843.2104334185367190423499196286575822 0.4162173439716269661146092413467303 0.0519440881101346748755216795719116 1.0533417996795177405963042200804915 GT 1 -4521001303383947413.4547776168732223794607352566138319 0.2678244519452740211151929671059443 0.0416650563740575592274322099777624 1.0425579341148763977165978409450270 GT 1 -75506079320681212725698688.1288457845577898812307388934277535 1.7344278244220949083572617064733209 0.0425060065253224237427958673530856 1.0434358310805081850032575457370288 GT 1 -223437267.2878249411935379241315917996930656 0.8211519573581100775215731814671520 0.0596216242553717730099121629507064 1.0614729573226003937361632003354462 GT 1 -84044.8897161998812914293110301101587994 1.6837420922610406333123898618888124 0.0117100713342774592752891166983585 1.0117791742157977880946249527814100 GT 1 -1035562540967733661253.9028820234707512547151090833601416 1.0149451122306506746752681561471868 0.0687515229444094057025382438206424 1.0712291446662520232126082955584224 GT 1 -58173134083806124545739654532.7946836051310571407826446564948963 2.6310993164472651990301023203577294 0.0481521305273072977957700816162252 1.0493500579343700893276127082278352 GT 1 -1358304741700492726433.0794944285345273279583717812459357 0.0952292476966856559100435166398110 0.0692175243825500558809916746384681 1.0717296749578679048146730134880998 GT 1 -1212991113110278814913245511004582639917487.8525047436162317300621719868525577 0.4904136000713470468184446775332429 0.0769683382386679653998584321113711 1.0800917419675880691205104590289370 GT 1 -114338251895282840957865945480676798.0580554190672672313357229454531873 0.9037445312758631895366950629786799 0.0156273150098755651595758336047176 1.0157507087269686174295117327943717 GT 1 -4090161614.5883239778513312338875937880687829 0.0989755437536455795267178021850681 0.0122537557199593470755146657995798 1.0123294519959769012824618849989665 GT 1 -4025400753798491887146220384.8880044598268335317498710764601008 0.6116372247381846797590205607605616 0.0144503510210644012449918539859663 1.0145557741769494784154224041604166 GT 1 -29840694127982052305214041329297.6151411684688002158939205753730459 0.9550044970234433146540386172584071 0.0491355881561610252466777682317566 1.0503838008981272362498054875426932 GT 1 -440874597874151791048619091066.0903917664828801956600608396244371 1.6671117141870515315861799251248863 0.0746866020899852370647853363497906 1.0776227903010009964207154147815802 GT 1 -1130576232654255884882000.2509042851427978059906076690324502 0.0727359730725594696222308030568014 0.0730184997859450515723112109097838 1.0758216702345603221404487362817692 GT 1 -47154931.8838969932876547053428520909372317 0.7368442012229746343700461478009593 0.0936206877029677771280345796530659 1.0982973935612131440594121471209648 GT 1 -16014531.9008857849356430240594814190096150 0.0458340018365829592841821227616844 0.0063997638187835456955494537092755 1.0064203301004384501228913367981170 GT 1 -3298718270130868109935235808284055706035007.9012226929732268493195564463785402 2.5497795957195640248343838083154306 0.0964941593442048321170075735098430 1.1014727044928346606508879304584888 LT 1 -1963165784370214610.1680938996069838172876109356519309 0.3730500882656426962556624240532300 0.0635084230865091981376449623368848 1.0656147513578859671468525013765848 GT 1 -994520137970679901110467592.3818056743457446262111175570438140 0.0192026888435409961968671147364412 0.0277665767295711675036284499049336 1.0281593559549080625355976440258644 GT 1 -18972781639912611233696135786381954177616228.6291331647717315757343503057187842 0.7265498208550208310687980946105915 0.0922599513090614349227495159690481 1.0967972313575987905391850244717778 GT 1 -2690703886814230935179.0767582690606415500687738646609261 0.2649157305264669863483127243236317 0.0061085137257891702596665281626721 1.0061272470231219191850048731711357 GT 1 -134301831313782906808403208327518582512.4878470695595283118377775008329679 0.0911519852070844556971473736514481 0.0455382885813561007611989611019126 1.0466077503782269090288912782719775 GT 1 -14152177725764437.7458971905454989347802729955456405 1.9079444857399288775518952799912393 0.0726325244121303885249193400260359 1.0754053781725746932015632846041602 GT 1 -26302824597754043157559.4610029503668263849824180593110455 0.3518921320967972648165928149065720 0.0692938760577850966157898050314026 1.0718117078806544515323888932630163 GT 1 -260510.5308349077853714711935018857765962 0.6680623522022762461600144939966602 0.0812305484096919715559480701636760 1.0847200568802352678223650885356582 GT 1 -40352847555040312351510992096292536.8654816975771850197867041514916051 0.0539741507218053062644401600235937 0.0120263489109122473359085446126595 1.0120992505280619822777600361414057 GT 1 -25290989204919.6966536005824184417108637267092090 0.5542131444845926649708694790858632 0.0612437214517762201591852598619412 1.0631993877256537730620143215817425 GT 1 -20561941775349420681553994854808513952.8070838885284389310470057668562312 0.1995253642047635701469184433501817 0.0917969786501772737109281010386039 1.0962873335788047898783113758143851 GT 1 -465311589416107273672483.5253188830092274711417087365741521 0.3587363048150100718954057352765538 0.0681550290871304816821639977429687 1.0705888183548579930854666843857516 GT 1 -22471087351.5504995254094968918139828615518479 0.5662000939052846502550490807051872 0.0297181806469611851211438220528840 1.0301687142664454466630103434574289 GT 1 -12941556347.4949959788287691109124978809864300 0.4043962643592217617399620264838504 0.0549524900051256656895534439134183 1.0565200776252949840147825747647340 GT 1 -6295520764947622996.3738487507647311818786662985273385 1.0073091164670316257355937554899725 0.0535677188110760877688216854562697 1.0550558574439220566723013032239034 GT 1 -18677016907131655929305822.9100039271832273516165187263222035 0.4584469646913841681154426321487072 0.0434404822072000684138365525567207 1.0444122674764845065121668089704518 GT 1 -26164929572423274509313.8591762109745686590517627681036518 0.1577534474531888504325475744348904 0.0440145480062328408526470112597115 1.0450125836262657728597075953114739 GT 1 -492054666846.2605858605883257110126694050515053 0.5946639525752769344525855583305442 0.0052233382993968876486803705373272 1.0052370276210044993666707012935060 GT 1 -43497309444069128.0979911895479544605986818380269402 0.6143881872838878797690175416210502 0.0711855144461831465573189557447258 1.0738462527318965624490998515877256 GT 1 -197077588072459704980.7445705897022801948322119483788408 0.1397446934675689709836934113385260 0.0095160727647246530249832912102914 1.0095616398956584395112174520285413 GT 1 -136.0077644400466983986392749955264840 0.5874301583722295233514462314468634 0.0660519353370638463315525626040933 1.0683344475852612506787054224617723 GT 1 -5901765138830574881910943956569418269516.6543790349779987970425793423208343 0.4224174604235336584362240437341178 0.0525330331692415082587593177836370 1.0539632061364589553831895096439864 GT 1 -954.4881668086967942686936136845240405 0.7388993051170165154623818237585946 0.0586762543625022016785548402056403 1.0604681543182708892640002802031494 GT 1 -19381530692017890498303073801051589509243.1790064547881343363014937109091121 0.3126344467682307234923046368984739 0.0553534738940349103622290707922980 1.0569444679099306546235265721252858 GT 1 -18581439470048800352813659015483.8028108410273745441372277200853001 0.0712364900565090128247045812304928 0.0184991799152639165255427270077465 1.0186724297237023196116892647330330 GT 1 -29.4754092117070747854291950785549735 0.7253227753971673792553626087465282 0.0557781249718492947366303606892059 1.0573941033474378899361137979687565 GT 1 -27978716.6296376844641028310408076499037997 1.2086018027655073035126789913911822 0.0941115341730523651194104847304378 1.0988390866686138428928836249637004 GT 1 -5039006215175518.4019214497675943151635137715423265 0.9949098938045101270468861179824552 0.0924250437896514507610717575684068 1.0969791198789842515639167023449538 GT 1 -2.6530429780391249988182068818071605 0.5678372007898475346677710983996630 0.0586639355519521383869721542189950 1.0604550677154930041296111906408180 GT 1 -173451564409055.8349659293297689293767198772042842 1.9157674239323746267871627386815486 0.0692238288346894472524098202474896 1.0717364482627544429274895813262186 GT 1 -1559566323134944905.9919765625049545938573951626696636 0.5863832891780664720275615766977558 0.0178177543978267295963085865486755 1.0179784016937249356961066743301280 GT 1 -473340235039407533347.5273738528188480197775382854017565 0.8374813887098851568932888388738299 0.0184490385480361299562416125830523 1.0186213446043893285211804900275763 GT 1 -1666.4739938611872949710631490506708764 0.4065320596694733518978156215016935 0.0895200406597432424953044520422267 1.0937833906659846160391839778207385 GT 1 -307257891941509214542029.7424529457083862577292327085116652 0.0520652365723255533749476670617687 0.0561453051588994094052813665296472 1.0577830496407594961663553171959617 GT 1 -122008335793841111185617902734590955870.8823346087429224413685571295080344 1.7888601844245329732239901766457883 0.0357698071354549880591614755663331 1.0364252235986397537960413484669006 GT 1 -32123255611181165322688759331492312528797.8155602130942504954930181010110665 0.1028841690385829712727852250431450 0.0118167679081079718735868001918681 1.0118871408465141485887517330536220 GT 1 -76577259194907701963602604101489699.8288276765384238572572200721677957 0.2743929931839623037180691951108757 0.0710399275156737945774428552347020 1.0736895201184828817260413931989808 GT 1 -12394924032399714796815741567508.0454895769508220134523068874310610 2.0542226603685386807997710315710762 0.0183309825231225560570398304400337 1.0185010768541392654104538720579300 GT 1 -79142017800459930936684610914412120016325.2095957219605222952777297061419547 1.5416940727366358390216065346709262 0.0336396168937552761120798796083202 1.0342184469441889192987568270522044 GT 1 -510062.4649329984303513736234177311516184 4.0900141903949474335590270140871032 0.0178904497706304553960827172388108 1.0180524185714527583631289953783314 LT 1 -204923109131232.8259776238953608313250999571155721 0.2467667981498056531282698138462385 0.0586854584626548167372054976203197 1.0604779321924545705114690839668956 GT 1 -425828561326232232640006741040512.6503249659472770094864039225135619 0.8926744163794063628156221672035159 0.0012121559513269079600369439573666 1.0012128912065748165623181071926746 GT 1 -626.5122253711188782695298658848101906 0.5943192608324865117336524431359199 0.0273392022114868887484264961552375 1.0277198723877962382434145375461917 GT 1 -3848.4918716691216756411986519977683817 2.4745722699775280276039940825450982 0.0764423160727498653637206638668475 1.0795220190008933176246134020384859 GT 1 -3104712913149220532147.0607633961931746833513556218210314 0.4059786477099486146290011806028280 0.0290005207716130075593875627144574 1.0294293470159951058172092521410628 GT 1 -2806725331699477188157408355.8510699155837044816341902917103985 1.9014753881385852647615977138901725 0.0710953811898463519251937185930745 1.0737492162572263201946206309389743 GT 1 -427742378572.5465227908545646066572116026984199 4.9605248957972799171816754334102704 0.0014622855243655688212374314692113 1.0014633557072454722727420862892741 GT 1 -5861455.8213444813186056033194571886964040 1.1469277062364205958630799552366643 0.0042220840328545386496916378304621 1.0042310221969698562023992432208214 GT 1 -257908932733529466083.0692491017212722207716656827092453 0.7146200643687078776444387726592955 0.0883400727644343694464961458644352 1.0924882452504849531485439640016833 GT 1 -6336.9988559049591070823292326590728377 0.0152092633742539362908708733568155 0.0745639957311900282512278456274802 1.0774902965567585536462074119214703 GT 1 -316125.6237569422052345712756394209967382 2.5825055151717484217168345497935304 0.0060689800547824016663401430904087 1.0060874711669896042575704143357146 GT 1 -5350627855295338833.6919483250852698113906133284242084 0.4792044749570339713117223542175871 0.0644060056696630033784494351546373 1.0665736633496445725627135221329723 GT 1 -1840708108447140602044.2440604832897946442169952724732831 0.0109648572028328286125418930725647 0.0957332332361838020939976247899205 1.1006308661445418711017257275810410 GT 1 -69419040.9758704767494238617996964952611945 0.4574189711965144821201769603669728 0.0612949692786137629473246008061389 1.0632539804105706279927487657259807 GT 1 -15943984033883434014687327639581.6574404085041887466919139475217980 0.7928273346454961493935220225812083 0.0411325723934325901520243090423823 1.0420024538981744822495562160763361 GT 1 -6646785779170790004542563.8054982114277159359184828494393265 2.1854893452145001364816609859247814 0.0182606608388785305748979404404263 1.0184294445988966435678442627289754 GT 1 -1868623140406829.6506041008839269030369034579641812 2.3381442368787848879283528674642294 0.0228918390980143833930416279643495 1.0231579259001179287644779497229768 GT 1 -13962668172399568221392751762482045161014843.8400287086570699055233074927967992 2.4458771833268424093262782290073819 0.0772723094582793487754742355428883 1.0804211145068415323149871765580456 GT 1 -3100840.2857242977256458614302977225272750 0.3190371939546126231114205892542097 0.0023140211401277884074806218937619 1.0023167026245193288033553297741166 GT 1 -1180281840742788.6093639127721583730802345092740204 0.9328721715512963916419608130443061 0.0550934472395021919359079446510386 1.0566692423456611326299187108834630 GT 1 -1391708034639462.5380556919090264884163390834762200 0.1449230994179786421018183544087234 0.0773652708677914557662282755759075 1.0805218658916098093359716398760036 GT 1 -341794.1957824001631308250330085819803799 0.4153511203021927738801548309507383 0.0260497526654583927727279515313357 1.0263950574096263685614618674935906 GT 1 -33594638437426744340665.9522776017427864839156060460173769 0.3449446684425254194738381991651131 0.0326581733808460009700824246408172 1.0332033541421560507131732346943926 GT 1 -68397649017089193433639.5605348296279311236182982861469831 0.1387907846339006674958781234723623 0.0300786535167881796056748040478450 1.0305402968721456865863821409465122 GT 1 -475183923268.2882253532161453595032945353565536 1.5650549559700310483955305457930808 0.0884977576377593712996137552065196 1.0926612247871906469468719961604384 GT 1 -42849129119772.1796246802271185153650253584441730 0.2229188646275105826300690397952811 0.0560293297339251667946811267912730 1.0576601829527027248706286103964857 GT 1 -15808546587887576719064303004208018084085.2796363820925833284364263524661509 2.2983458914194984194564125108056895 0.0078037483971662651549777946633207 1.0078343569868341215403032767678471 GT 1 -2878137867313759510534033602800.1101219343814448343366572557205824 0.8731839381615492792406881420912239 0.0220548251115448649754906587316527 1.0223016689149129805279342404723070 GT 1 -1392068374709735571304980038109252350389.9500696513529554932652173115473155 2.3479562307104635773999453131861475 0.0145771389242758517576331024715499 1.0146844293486878389702381736247873 GT 1 -2110320357597391581461190228960175.8692526498690844164969528392078114 0.0927725568668086549571808067345221 0.0992683624524269659492307537361786 1.1045479152985312420536791087806909 GT 1 -56687913414083299393019543301268.9748567806212902948091124982983222 0.4932277576136710462973526345965661 0.0433166271510137044891617395958836 1.0442827961407067152573963842883411 GT 1 -758617870045949.4252286562594229343762794193485588 0.3819554989994599812110313457323471 0.0540192159644884095160186336645921 1.0555330229954349271059601693383519 GT 1 -19476815405123.8126086410419925336109515167176543 0.6663818628005218211799548390332814 0.0880487247144095218672520037187777 1.0921687165569773582064218418369700 GT 1 -1468560055531323371274.6365792641672245347543434402680445 1.4890958711819585507590138418265114 0.0841329905581294015437655440373182 1.0878841110473744139883102001278265 GT 1 -1326111104405838615.9232262475684380628120464620441244 0.9927164117777164796245516533145092 0.0349679765722601844745958335835591 1.0355939932945454682115351568999167 GT 1 -389315832967.0458411473910519632937860630117895 1.0687434222572347146781743702429741 0.0582726459303927489175204316867048 1.0600394793467282724846487107384290 GT 1 -44513687009037.9743815765629705693321583452893310 0.2347038663525619678129871169446642 0.0963032370092060381311476927823423 1.1012614140317387784993141358247571 GT 1 -333302540688520.6314237296440420203912484209049243 0.8817859903423681922632118388595258 0.0907377763639352377630564840996804 1.0951217515583706413508911599080730 GT 1 -10623293.3509655395813567611918221735568433 0.2331560973536169358126873680783816 0.0753518181287997583647397309706004 1.0783419577418341234218753816698468 GT 1 -310597754107183886970080473417.0621398923227979095874416241762882 0.0694974165187194445523628554249173 0.0123387258416819299656930818614970 1.0124154799380413915882303336824726 GT 1 -31551976982953533297085.7117957272072420256979947343657193 0.0543694668281359815205584459794912 0.0384101838286303582969670794149226 1.0391673057612570200792654223826914 GT 1 -2719485482577423741394926161.9379960745396004762935269454912316 1.7978498346460164923383542287075236 0.0962442860961783178646636059992310 1.1011961830906189243037028863197272 GT 1 -82202131255952217308319844744325978685.5463515468698050407850207379843788 0.2807811953752801234949591960674422 0.0062767261744336438437624955790263 1.0062965076388336125320368051189049 GT 1 -297591255804868200756380.3547511665177658101335080989041175 3.0333694541159373758937051864247648 0.0154546521081032951663158431973700 1.0155753201131905796580640839799701 GT 1 -6709640510.5575308922978183444915277363541914 0.7947078187727206450418137584919671 0.0972712311278546522826585480373348 1.1023331373817766558692559878585466 GT 1 -3937113044.6344343061778026528006261908704276 1.4826066417286794350422682222688336 0.0748947829996650224212903321378131 1.0778477998300671629354171815801968 GT 1 -698040378695556638938544499800961386005.7432630114365909431231813066495702 1.3960483315016031831250468712529971 0.0906647895793526145390310500656483 1.0950414844434446078330661620982128 GT 1 -92755449.9148075837675177325501716964704802 1.7802262282454674140949183441112832 0.0269919584633933669928360761582559 1.0273629321472353397514271952079911 GT 1 -6505974810258536104715602800535.7675222783167634528407121723283681 0.0806962538925426696535428120296733 0.0480267264656221306227440953444605 1.0492183186033650131984391651202116 GT 1 -11626277164175406380243676444108.4149181920151998111254616341604867 0.3313119497291342235748343402538367 0.0956606146605980339069018080428629 1.1005505627843654782083501848927791 GT 1 -341571.7136077524267369725650781816807648 0.6430477357487849105558517433805460 0.0537748537433643636422502569036302 1.0552747400902071974016933678669955 GT 1 -269123484998407202438551639809045.2144180416781257548531895653665801 0.4481364118048794744238621438165489 0.0431531287940931600461844872538268 1.0441119095212488932274752158846676 GT 1 -119997634420.6840286909305379511851540636537083 0.0360634803364720713065847860035111 0.0080024552099426975501030213100969 1.0080346467103499819939028346279547 GT 1 -28691253627314177070452.0388229927253035004064306854750237 0.4808171234656627116844262318211139 0.0127523041536693477115039539979872 1.0128343127291368729051267680248834 GT 1 -14160037050723516562799857050219115401752208.8614422591983597814642075904956196 0.9726497423202193517798871643081455 0.0655571306027581610714687368994101 1.0678047888967574781501131258806407 GT 1 -4973002674170003.4654823843276253968869659516414437 0.4870060054213703151039146077257198 0.0724243929159705868461200979279189 1.0751809707511529636488258057189096 GT 1 -482534281068299750.2334544000072989760451083886569616 0.0618244551162364377953135267291948 0.0579201407131851921238999355028922 1.0596652316861156430735462785457766 GT 1 -2129996.6955290744212266163246668982328438 0.9836545624391774148979677058229410 0.0764723286183873153694946442980537 1.0795545161949767742512591564176663 GT 1 -46273143896281826036962.6237229108547146906548824856468496 0.7744529672653246102055373545648510 0.0188660658413477384063838669145290 1.0190463005415548754171169554187712 GT 1 -22304359692135866119301007243323821313.3355374907470436980715337134430978 4.6704603000309324371064706073785825 0.0928843584178668928504355760436472 1.0974853380062867526729504878859074 LT 1 -1191654529621540276348638333.1788804440021970998272215071074519 0.1328828113557671596745833578065245 0.0024202298171826855417271332786847 1.0024231633074696256293486599346831 GT 1 -94225.0498407467011268564106266496706907 0.6439119229271874110938935825002570 0.0621481509391581267024785910274381 1.0641632858822280400783967619118269 GT 1 -16247685136784776666771000340.4468790036187730456198475536534724 0.6484777049034125855279060320719176 0.0986634752774518134198348412689829 1.1038765897511883470078841839551862 GT 1 -103601836915690565.1446182205594549466383092697706964 0.2014703889069026280446658888899301 0.0611278752323010972802564832577118 1.0630759914035513459904076839049464 GT 1 -377150751891555772633164696426318219704867.9839436097911560631949856193393565 0.4712531004026101914001750786546216 0.0979214936384458545569522414348876 1.1030537268293611422534362181975418 GT 1 -1133511397155913303900253031872966402996789.9895302265262794791370381621693869 1.5889730862928622444251653284711464 0.0680676568682629606104210009927279 1.0704950601378509215006090980041790 GT 1 -474859.9958183977879466891515266461748365 0.2362004692567856377174822178775601 0.0636685759979006466884406754769976 1.0657857797056834201062717853377028 GT 1 -22292688302712872101378385012816.9062168678369740156545698387600915 0.3022435771233265050897230223527390 0.0302124003844389466830776850447682 1.0306782009305166353331380827465429 GT 1 -13.9242576003295893554070034915714026 0.3472391802933216372998065047418280 0.0275961707448851675073934083024639 1.0279840986055994855896921245572705 GT 1 -37541493650912265447077778036077435341.1848866448293735179278585443754309 0.0848764559372397910355109209012194 0.0501957903938046210891566345952235 1.0514994107794479580578905513869469 GT 1 -66.0777357462028085833434185702818217 0.2805736262304397160924827394448624 0.0102376885180491903958879165300784 1.0102904540917492417536174701361703 GT 1 -89864874726805416390304.0421671365033884421104538552838702 0.3234348882803632163399950970629892 0.0471965396647575912869750125236217 1.0483466291936087513150861300548652 GT 1 -205203892347464839927989600158.9021469674343479585481713836866628 1.4056848138616829237954236964049557 0.0163314504521874852152915943031305 1.0164662785636165873873671995124014 GT 1 -961517773.1130337843098956657490016377527632 0.0734230117017298880248798989610229 0.0119312027726585978166345783906901 1.0120029508373258420980926914281159 GT 1 -389795928608674135532403.1866181772997891081514809044613675 0.3290119609242153406006265890486497 0.0858595588825194734228889170348822 1.0897710638421978321712664056103406 GT 1 -6586039.9343245169135178556634265259886288 0.2245343931677293337442430413607195 0.0905192007678016158101802043649650 1.0948813925912844399868466751411428 GT 1 -14356973053727.4851863131467544455381063897783840 0.5621545387909131088709342170083561 0.0658951624622896230301735924065058 1.0681666012946582452672408517778938 GT 1 -12297.0380662743562855433832342271299893 3.5921465954810989103773026423805425 0.0753143898541863410756816028540198 1.0783014801657685223213644837083262 LT 1 -5965200216314288618190134296113182004.4789592123716876114053161517094734 0.5684149577779165394499174481443774 0.0547187034080655594898590238569995 1.0562727274315747748577698926475839 GT 1 -1590932036511104333609490555244591337.1826109938481685814687193439814756 0.1331869483738570388136912248260357 0.0411469169240569756386984363666322 1.0420174138785728228211164504265097 GT 1 -160043056335832987483437254945380821.4991214719917858758534312074703156 0.2314926310667121932677227761633910 0.0781274517982612740541796200613240 1.0813482990352640304754542036305597 GT 1 -2420751880286188933.5842073706621011877990181419378163 0.2421339180415466569581736808746805 0.0633476848609277626738034924195228 1.0654431273554182831630391111516378 GT 1 -21956540530004616142321689380.9287793036476475619227725454157782 1.5596888537584733618196886338537705 0.0082719830966170852553125428785981 1.0083063857992014091812483798887585 GT 1 -804907386397683685111613.3694508850825269511348370460641907 2.4218636629811538983784525111053203 0.0863458839787599842159141649733519 1.0943805426995890890738567694000684 GT 2 -1163577758681457616.0722218878603207618474548602701106 2.8901414450616062079014350252176907 0.0179109058144386873919479410356518 1.0180732474666025813860939232854914 GT 1 -76887029050.0198310631459034733411863009058163 0.4312760724887035977027168315466401 0.0298895064851802430229154144619846 1.0303453031320352668799041541651409 GT 1 -10477404255730.1978573842507818980615799187344391 0.0030960084391068108048036642062485 0.0531833164916357086085977934296956 1.0546497805550495783134610465923282 GT 1 -749271306992.7231511415431051086660203454462631 0.0594140942803570166713770343104930 0.0456395355721294407386600978665717 1.0467138335871810268410677888175198 GT 1 -3273607699.8774341513225826044508088251769975 0.1224707194145984179398869244585567 0.0345577151693805277794663221832913 1.0351689563931985150957850762941022 GT 1 -33292155735490.8621595828818828936415072871400659 0.2631068154287870362003554610503569 0.0034808731126448695675252762929710 1.0034869454469031926423899156908023 GT 1 -3104740541587250229.6893222161012365393239510446605657 0.3761009187209052735243868658955769 0.0933470332790842530128738770127838 1.0979955187086485841591952442383533 GT 1 -6.9322914206977525463479790146375319 0.6521195726814788731765856363348482 0.0933232384760764699327577343734457 1.0979692743884474475119591519704224 GT 1 -7139.8684342272696117474801424552368363 1.1722409394047457192641915116031947 0.0730356469766496133834217869916361 1.0758401682836539436383226115613356 GT 1 -544342.9027057826934736161009760577033532 1.3658592637598818719890381993019459 0.0565897463540414160410348529361311 1.0582540393698001497625050729677596 GT 1 -335888878405879228634080475187913425193.2475569609337020839798608732130901 2.4402062946139933359796458861767325 0.0666375262008871442707536123823580 1.0689616500467247719048698585483466 GT 1 -3111924008642595713535677333174654.7111612144714138008864131552207620 6.5767114955472663545031969012689037 0.0438552994106094701662739236171364 1.0448460169354195189445234935188509 LT 1 -4466.9013158549581287424502417133361243 0.0223300275039163672665893882526180 0.0957460490345941310204865640911469 1.1006450388308538476199040849415258 GT 1 -2946166585953425789981814139.4851811686598353223724959392995010 1.0351475542089383360811624661560886 0.0572424999516789148903554942618034 1.0589461873745770292404045763460018 GT 1 -131.1469567360233945584306838869744341 2.0866131231784412218381194564105579 0.0735877217452940691273891249382092 1.0764359185220630788699439682787238 GT 1 -41915169384049359813.0381249398320102048502048943295930 1.9879814645599135014899860269448795 0.0959768250636162622653155670789277 1.1009002829269820401947054251134286 GT 1 -794129.0405492676820129567413318919031219 0.2024848506746271776211533784736325 0.0352358613644484383352273271228390 1.0358716234392987023409912829072058 GT 1 -9441811496126661121.7845970452415855382556686678237903 1.1672927322326133823237613112750731 0.0404097392988653297344732702082564 1.0412488973999753599319022844820056 GT 1 -383.1358371357813230627746655236587974 0.1644174847293564853475614935264832 0.0383472839347288088928013116777786 1.0391018955044956679678947416762056 GT 1 -246936650012932394.5980660600911791790146226097478342 1.9620262712272944201965562348052794 0.0829222948921495743705610629206883 1.0865630719211647244645228307505781 GT 1 -1.2772781968188925594909154697853845 0.3442071648245448725590405692845667 0.0997334635940082623656972363430970 1.1050644079398310179011103668020078 GT 1 -33807366950996426107568700179893.8240268033768129443170157876467313 0.6678749704928674788426339466428386 0.0870482251962545879005610452587186 1.0910722203695793567695386789073034 GT 1 -850295706762377108476328155.1936173327028899767762901789884141 0.5491983886336512777101849236327787 0.0605673437201124152480324447550315 1.0624791430810806927385018265650026 GT 1 -1872045981217587139775349.1901705634421736849299447098493239 1.4475037738811578032449101185559836 0.0836218852749391873280863076645899 1.0873262104807899928977902919081295 GT 1 -12751830202476605.4463313946364408715654089162403483 1.7249486366019877237120494489985712 0.0418652201674102683710075620158506 1.0427668221464799636378932194444202 GT 1 -150109151278747182829522909792.3448120665532537949480008213162052 0.3146022159040343638758530088847182 0.0369886277764981351196806424884021 1.0376900580912241898596992250294211 GT 1 -482198882084843613038507047250.1719569881240810047923138650665635 0.6503949572317098797455934350631051 0.0852459422700563986192587774683369 1.0891000392031337250816210956149667 GT 1 -235977454545175303672181.5247857464721190666189370671473955 0.0975876924561753699912095118209077 0.0957799737310488442713066905585420 1.1006825563145287551147747985126747 GT 1 -149987095772559528.0994334708011013337350404123336518 0.0169379968095376320487467855321889 0.0690038594001813067301277234992910 1.0715001471488731779028143437663167 GT 1 -15452410156716362578926865436462939.1520695693920122233287129978166750 0.9958842892896757865822620720753534 0.0760220658096885734707009574208933 1.0790670883720186621413793873262957 GT 1 -6784266300891276838.7335716201334589048567214488510816 2.2301408363773304960339353627711668 0.0702541788263707988410192608443934 1.0728440407569649846999421169872520 GT 1 -26548646347997562093962301618894350.3401212767976529057430977803704329 0.3162372314319750386823157718273286 0.0763736479143042750646210282883286 1.0794476699840780370764573523779336 GT 1 -493070.7723012705943004000226745212563924 1.3609869153655009692896062596680702 0.0541470467012736755571333061855961 1.0556681624999877270844605443102923 GT 1 -58.3690087422937410498046814847511656 0.6257888009580676412635012196403629 0.0135763013406636058960092026891891 1.0136693020157656773800499731480581 GT 1 -1033066941723318909216231284027.3815762185210531251791931739468861 1.0965270377530690789123404671839970 0.0190450913039905579698157896358985 1.0192287851051785679750353338490598 GT 1 -4205897473172125449.4679828438477299192734573907110933 0.0520304387074479029729470841609381 0.0588875179124581655662828947115366 1.0606926119096956527596850598191759 GT 1 -117759358056101304876756489.0583850739811218026722938364895700 0.3654125422565285308965649771489588 0.0662907924915946902258426906594754 1.0685902302273896027387521173837266 GT 1 -54361060.0684976796018045250413407259826000 1.3438740415165286398215590798608985 0.0601908204314115175308319570465644 1.0620784247844179805358402683320004 GT 1 -220977353638448360789547845432.2344856300208561988472400111660017 0.1578629910297171539560092267348459 0.0366155723474454130721571078689257 1.0373027488645946681082691750101202 GT 1 -22758571871627608459718313440608995074001923.0234196258540281812267328350280837 0.8387385490470144968004568109440745 0.0462276716853534505641075399586865 1.0473302855805495229453005339882712 GT 1 -10661998579545565064209376573.1119707327591409567938272711357164 1.3004582158708958517227867588487351 0.0135322023549812122179021834279360 1.0136245970882292721840908782356484 GT 1 -21984770.2339456016481808902614348971391010 1.2164766178583710413473682041534983 0.0431244991578999491063707903896647 1.0440819891559822132743433009831002 GT 1 -27086467249257357994836297409065.1768499307358564316351141077420251 0.0687861042856625807438473619352820 0.0136275552319269706236147412777599 1.0137212626721625935320095236476738 GT 1 -83773418069058134678572109469520957910930.5749533848328415787778412635621881 0.2693892935598586585180552020755082 0.0171105959180708567235475721729141 1.0172586737281866624407436677560310 GT 1 -235659392029038355.4077670285619081138569083664947643 0.1127481739266022884030577770023986 0.0953300082032005650009178555315086 1.1001850517314581131887519345650678 GT 1 -11.3228521003503559236453327691495863 0.9251635586613806500873887779843992 0.0612465962395566268811903509461980 1.0632024500670174394322216458413956 GT 1 -223.4854164202189967127758331620676083 0.9560619510747896216561767155288596 0.0700620160143356899743097053969899 1.0726373789446870915116920531744519 GT 1 -40735585564.0444203258319917352677428674819677 0.8555614756902440257559301153456780 0.0085678238685138955483875184876063 1.0086047386757167326348562505585442 GT 1 -293323.7719936318083996781708495620722707 0.1454352532524627200674057519048849 0.0792856627191414308376543535228881 1.0826054566570252984678184819585638 GT 1 -126142718058554.7455254826486367244816219936714739 0.0410647162340648795549531285358451 0.0603824935238736381621430933954461 1.0622823945317349402984512857537676 GT 1 -251772483342748984051885681420431.5988651110928092839599770220395067 3.6860762757388956027663107497955872 0.0746033102486905239459865258343742 1.0775327796160144555350539023376458 LT 1 -1830489977206792206151452940119.1058162701628988119984920330947535 1.4924689707696562338287524093833392 0.0824999261579932692699628483811983 1.0861026185716637487516261382246137 GT 1 -83326222398134698.0698051178699569996414254966340416 1.6201399346318611533658509496978166 0.0278866585175639349346893522179581 1.0282828748562915855876189949008157 GT 1 -712961859818005144152.5887878238626194250460585601140917 0.9506131795697681891346426470434618 0.0822418870236269713576150419490213 1.0858214165719451174295191613642630 GT 1 -84774424595824947789072537299256971682.9924419103949948097301451614979879 2.0830635762865693814067231095520162 0.0574084687132095812934827888464461 1.0591222489517183779873481581263436 GT 1 -1216761985902344.6905179647566902629624307466809361 0.1255427978890528110621101506921055 0.0346175063829029889052858064690947 1.0352308897329908934931920716099956 GT 1 -12076007809441132539763678938675877644.4585471392210598419217310473928899 0.4543788671438443711510990460858492 0.0199561770916561810847264837607077 1.0201579910638939596210392912507310 GT 1 -209143936.4063153357433972290428657470436644 0.1607700059555380707492574579726008 0.0525782599952941258053708807974989 1.0540109417379199363854447243814184 GT 1 -168875117893198040719606996644315476.5595787790762442664164334833402500 0.2323163214287583868471673902321196 0.0677577037119798474527476944559406 1.0701625235261139192999944789831651 GT 1 -12349162190062288090219347924211162.3080128741280583287913524618475054 0.4122388966912843724943150811627244 0.0861455673442623898108875367487964 1.0900839842646565315642446724450130 GT 1 -27916102538271962311169972625472105136565.6498369616204664539119276355040271 0.0284523259377348070749575810425756 0.0197248348847792899719776567229774 1.0199219659992343557778458471801368 GT 1 -24783766290964926793848483555887.4062892077607076686098179576859947 0.7157177711894989528665772390799760 0.0183495711481383719481127861054140 1.0185200127690777443984355883838269 GT 1 -144129483914424550301710749169819.5869821581300710134737813932404214 0.0157891155993867712743936260282043 0.0939578200191082075757742986445789 1.0986694177525672474116891412658870 GT 1 -67.8693822281023743759520152528511104 1.0553093389382620756036492105615365 0.0038526908443071723856266974599444 1.0038601315750499905014617263666859 GT 1 -8179107778939052031342659723.5784019886884320620706478608427180 0.2888270688545430814162016947754724 0.0745336898835716477102615908236973 1.0774575494502413146331202400784410 GT 1 -4839832113672876559479888440389207380137.7645672343805900305334938588241788 0.7797278939824642529143482834242087 0.0572226005947859852156124163266487 1.0589250799881272364549511467561997 GT 1 -66504425287658792.2254417686809995834745166118804845 0.6952470228875879025326352538299323 0.0981171818811984972397130788748371 1.1032706807527791878450069123891659 GT 1 -8303579838773743613091461912197249117103035.8976836954384659857511215021780362 1.2104888223065649189291099235003659 0.0734189547456997276491533127436013 1.0762537624420385695502193312573781 GT 1 -47108140112976185165373835390.2539171207446482937123504687575749 1.1446887688915754168313378949388940 0.0470678278192272074693463413843610 1.0482115508086218868273868144999562 GT 1 -2123346368720481634629949106163831475.0389226091601848028634939780530134 0.3538397625133074640618373721852840 0.0734917064521594342975488046237499 1.0763322818150377280070464792015555 GT 1 -48260957067450210816713150098752626938.7627280099704657941873338161529866 0.8027312821609329104259239235002781 0.0960414231471214125695049477726720 1.1009717417052232580173861365063327 GT 1 -265315003184587490893593372.6325814167279596318557843066385734 1.9149850246822319148562105098994331 0.0214457338847561390398973297969546 1.0216790352113698856614669645664856 GT 1 -52663.9347348547300806962119334582838047 1.7884618217497808138263725520908154 0.0149801565086319824426786197887150 1.0150934923364538326252565057594731 GT 1 -11854454864735344853607005836110585415521394.4231879666492886181026165696748858 0.1244544392248656918428478632562860 0.0713291898442770861881716165047361 1.0740009515590822608579712830984483 GT 1 -38423341601340918527.8738591418013944198136281697080066 0.3169059858569813090687632313340726 0.0282303670858043008562324746093510 1.0286365057860844852099133919096075 GT 1 -3925783187484552080025.1400953253078084684141313401902940 1.9791927643565754060938813440563968 0.0090297036677550363631855618377642 1.0090707185299737992169815104668424 GT 1 -694930043384913916327058.9868987746926134887691935165005556 2.2791889881917569751658790501665898 0.0742641422188272312659921870366522 1.0771663358039700761085089221485610 GT 1 -20994866951671557498793221183847367539971.1178037643562455730344016762153540 0.3596255028746663256601983173362280 0.0269574863953720939325514967100157 1.0273275044262711463934915987144047 GT 1 -48878106521891670647099954510001149.5774504752054921011232068740844525 0.6995426858155513722935290037389309 0.0918588662158799906134918939829553 1.0963554787764555097846455857940610 GT 1 -3313613752.0142401295111002770293156310869616 0.3332460254888285080893465389785369 0.0482875642434059638914495947400913 1.0494923531019622437136268390203406 GT 1 -206373729512663569867304028657353.3664687890528741156093798980416075 2.0033603350146000028419789063323078 0.0706239524903976164610728969713568 1.0732418346564738968959487888682040 GT 1 -15900829605.6091157092701192639441241153941342 0.2103348457370550634131924539861295 0.0950154473485619317316571760906786 1.0998374043213247485006491496533321 GT 1 -10604.2438541996192129629887686950192099 0.3601396447041239682488831653313226 0.0159673421343861653362958562399589 1.0160961935928036426277616632282527 GT 1 -5059145323562498.6640009946801486433693049681871468 0.3815712557533108061561346569474469 0.0513228686516934220254726127909322 1.0526867581249156315570238339506974 GT 1 -2.2962243733867770083402440288734210 0.2416848797026680069907863023478864 0.0012715457351985502108061687395186 1.0012723548354215854442975532334898 GT 1 -316300.2441567220944472580427907499049264 0.8459961951313713901875862903859746 0.0244396245246592564479589241906045 1.0247432290091365500512361768004316 GT 1 -506149045182260577801.5795411858826518456366515936885869 0.2964334912623980276574476091906860 0.0449524043975680097795380819703325 1.0459941014161410526447309256716031 GT 1 -572509719464167166073610888347085991046972.8815484573690353639787719374651278 1.0215207054977381364952799475321326 0.0509572737623483937397212522344829 1.0523014590067065080597255710477955 GT 1 -1653534498776661314500762.3056766386550204043257689169817178 2.9902581555051998193398909264728974 0.0605128909753581695047700041743712 1.0624211813247832757395583381360762 LT 1 -25259016191308468008900063296337710362896630.2427407699500409865413760530466430 2.3314642699061129805004499029176769 0.0429576485570585107015004606955510 1.0439076341270399649451539082913708 GT 1 -3672942021995062716697367957403.3697281975757675086610570327177843 0.9084372177115148037386781973178385 0.0591501085433528098539286026751745 1.0609716723588205954244457413347678 GT 1 -2275230234827483504066.4529887452394938144943470512103572 0.3725505698552530128122285714986215 0.0798473386677229882669142245359089 1.0832156864742086922263298136649355 GT 1 -38646035903337355463685202396672160965.6743235739591734929952569536618241 0.8665216355359078151073142018501814 0.0557766392791195752689452786817593 1.0573925298914524104414475265228471 GT 1 -1095974106419273469014409547.7734444711191844490929298897851879 0.0723195491032280921751734732324710 0.0709063547904866170559158094317196 1.0735457430854021983326000661528498 GT 1 -2128172062513749980865.3231160099689007105174068713905878 0.1816525302200523837151838480783838 0.0728564997200908219537052462614765 1.0756469246632279610939412846360842 GT 1 -55311702527.5769730270338851139580570142216713 0.5944800443702197864506246948302539 0.0696548259262477396681529018162585 1.0721996067777706373722085037231632 GT 1 -2332442859183602328058068208.3804689719268032436937731261533990 0.4161661261239532484349283657269906 0.0663930032366545971791138357780234 1.0686997036469723852341475021891179 GT 1 -2692861423795.0896391412554525327160014159258541 0.3267058661167430445676700797557615 0.0297942986440633670123314090615637 1.0302471667133989960437164901906823 GT 1 -10.1614780664607830584689957721304481 1.6175704600940799896140443790486668 0.0389295303380588763360153030706677 1.0397075431873758472471401858858102 GT 1 -13595979700.1812114879465934746662348110424511 0.1171554659545100037236377258843386 0.0533026774679084145603489377899913 1.0547758540628768603929354009536618 GT 1 -81556689313209601161127561812.6227148279414726247637752247161478 0.1739785865615188908881819858941614 0.0111176660929476620334403291128134 1.0111799292534125758904146300957756 GT 1 -37171984302231734866289721728531.3332355663449983478231616004627227 0.1842653036608105823785137706685118 0.0816513148981758519759733629409836 1.0851781292136769959199830038658172 GT 1 -170737190707528614013009201362382966597.9420160456818531013294019821153711 1.7869783856566126131343452632867153 0.0763949855835746337945752677469917 1.0794707723086251914706827904250478 GT 1 -72239310979.8297594414987345626661423999952515 2.9081369137568914461630885868551457 0.0385513944477084011888909370981137 1.0393141677456424183658685635665791 GT 1 -460277200066467856996502351971088661.3039750334156590872217407913866706 0.0816425680747627312222003358971252 0.0364856362699701936756130169333518 1.0371678833716551709512936361856300 GT 1 -1579299269548731075008337553824545967882.3977706835561548141863572403254802 0.0284342238642717723321369565427304 0.0085326967550055737807728190660284 1.0085693086260572894991975788764063 GT 1 -1300275218850200994121785888169124952862.0309023162980356722391122744007577 0.8585452065112289998265521414759219 0.0731879084371096204344036201020793 1.0760044399370640091668867109566488 GT 1 -34589961439.8846775292683398552062860044525539 2.3738585406611260155170099788551942 0.0182221220273114500359380335672306 1.0183901897237819905335086882551513 GT 1 -3722032958069027013712036954926.5017366078853539022676566605054524 1.5670762227782262302670804141491617 0.0549975892651217184756062909652071 1.0565678004494489610710302557468357 GT 1 -2383522025296423062567274777970469260065434.1679005753834320013994750941017464 0.8411321348975654748074359298164748 0.0696457919201931343464018222121337 1.0721898964439667744205237402539595 GT 1 -36238370978868143205437798773877664123436.9522404439175869944675695568858945 0.6110868227822567303534631925581107 0.0699039597478248213133792639575175 1.0724674290783602527906946732456737 GT 1 -120960206817698964924895656069237.6169266622392860116638300423283059 1.7561005586173879439895786210564876 0.0450545736757667573104703762938540 1.0461010853444835082084168420157830 GT 1 -14935208776782463373923414.3111591706077026859554028330854828 0.0044945071165373797182756877126872 0.0776572104123565355199590900795097 1.0808383353813889519007212398191076 GT 1 -193233257946512869264747336302180568011280.0162200208486670268600268857453478 1.5713623800578212531693615102476857 0.0402301436599402457495829873240798 1.0410617562399036499665332866538041 GT 1 -2342625278056782027304466517429353142274302.2666721982554112233818191086931436 0.6789787753715124767277470008491267 0.0872072383669970164017429884902387 1.0912464103156216836165907898420179 GT 1 -4.9650488034897324469047097379552874 0.2875605793245908149313455204683221 0.0358873844289385151254221167297419 1.0365471700628419567941092178310379 GT 1 -2299274966382111375594791061.3685198213134635687947163502264372 2.6819038078393006769848820106030799 0.0379016784699135794178527184877944 1.0386386282063095652239622774464034 GT 1 -5443314123767913484150743.7588086078282319103317902462006198 1.5606673444463862750594559011317072 0.0912017598206304099334157165745178 1.0956321674394736194778789569818604 GT 1 -3035935.1562629625832124852073535946177091 1.5792234384895078730117380999113943 0.0352647209740601070525567285592325 1.0359015375292949543084535937326860 GT 1 -501734.2510229647603354446107083079983175 0.4540607330744164295127764573191151 0.0322109742494494031550405796629347 1.0327411640646118388566100313138213 GT 1 -118376972543606729176579842120508.2789555154855805541984986095029846 2.7785389298548394086119321043468156 0.0850693902485060141101687699308540 1.0889070529195011876754267008336208 LT 1 -5276209398368237570453643.0558168213577204765640336845518442 0.1940061551440978909060270972145368 0.0542002958141653907551128688326937 1.0557244615384978818853489003868847 GT 1 -10489145652688020575156348179302393.7140562379111188352174499556725674 3.9184601823612134449500685776165654 0.0015801109945883507477280704341851 1.0015813606865741469528722406077104 GT 1 -2983960457673016226319102450.7316752560997536222459507978552428 1.0028999952230534792064340736376662 0.0989438907201922350974786171093530 1.1041877488623751498541923909181878 GT 1 -477850448959434732492032143839901201320668.3925998087946899588462497549990345 0.7966155701935959591146880956308235 0.0262448230905586062997902861715568 1.0265953653446193310836981521325725 GT 1 -741718.1331664014161163445918693789020969 2.6865327866807612065471784891408131 0.0472239626058387231243424885265547 1.0483754109275807013250411830060406 GT 1 -520920202912355365057.3721185752977242120486354157768710 0.0790538911016127471434787093913631 0.0510683707594376954358220335808507 1.0524185280249422082397675585088372 GT 1 -788788292914322271236391486866.1354087051127875965575451769539171 0.8418541137299977580867208804875304 0.0469855564793713396330173081401635 1.0481252195974229946582220445743960 GT 1 -16011030562188052337869730540533574.9577128340235610055464552217082189 0.0809370173236114406964089670681133 0.0890483601485576999198831828863053 1.0932654678167942832628161241687339 GT 1 -3510666702.1339848427167810394799758824819197 0.9269058437520182445025015142365009 0.0457089265373246297177861110218154 1.0467865456185269403602481657467712 GT 1 -1240446414297912551961066172387.6707305280222244696645507825488253 0.0259879322885374102828750151417171 0.0303527124198339306713134777321973 1.0308228946622486300072693674656596 GT 1 -1578171115225649330345429268417997533491.1834632960148800898759247271762869 0.8674944802559598389246005720363027 0.0766267546385675474246412430564833 1.0797217433798681368474235543541198 GT 1 -233679468051089463149.9153322001595281842436768772101191 0.9600798069848757061898343191558486 0.0908315421011080549863410184979570 1.0952248797536964832670411796061706 GT 1 -1490181542840839614109.4230069575195275586334490505047503 3.4759992873205990578206761962261480 0.0462933211851373048198142433571528 1.0473991193654188712377765770024904 LT 1 -44107771360193657468.5085416987623410528134098822217401 0.8095825130948695673065682894113665 0.0022377687361224168580425174879969 1.0022402762821511062326363640186819 GT 1 -319518220408431463135613.6987278603914761380939275612127107 1.2791650514707705275221081106660044 0.0843127317879284095112520639054932 1.0880803828505843620634405747406365 GT 1 -111817076374629357767564838157300159484088.1233634702159833543967323166484802 0.8706649608334045080455037257676479 0.0598153928586830242576082836675540 1.0616790324243229859935153851473791 GT 1 -66772946109087604985938569555642.4224516853783170982929447110851133 0.0499864087196266062494363720157723 0.0483368681394510861769025925546007 1.0495441598992070710079764568799411 GT 1 -1345555927144579261599579245.5499545324580028423707296833099945 0.3616381115016515093253231349276918 0.0249085335015865762401101585422542 1.0252240005910964317875400553859219 GT 1 -766867168185964275759690950149570874521119.5745098001669175688537131429308386 0.7089519557831809718321957047175987 0.0954449016250633231665485180764253 1.1003120601646722458108952427386321 GT 1 -566285.3815125960745036039741891544595071 0.2356855690808441816956579581158699 0.0969435747792725394853293105282363 1.1019702411156539670851076946313958 GT 1 -666435476136277589694398411619.0740648331669436348607773481109976 0.2563062016855939980875301647598931 0.0693220448280803953585991877790853 1.0718419743588235944782876631873464 GT 1 -25645738275289102666725784260.4418677056128129042822254681195135 1.1380774106064336868610691259713749 0.0520344425998550985716287458613113 1.0534371092435203632011519345151156 GT 1 -1219327803230755231668508844523670.6664090998211469447914962376411259 2.8089274960482139797555929977498501 0.0568329445028746034848990562911629 1.0585118588071501990961375884812673 GT 1 -129975775756752230869261879675723747.8770508070059301626346093963512150 2.3634777955523896816879451240649417 0.0615775226381648892467514164650977 1.0635550290718559120684637801118206 GT 1 -2431589439814684468366932242165324.2641230670615732226258287528446764 1.5205029134797763181151242624451788 0.0267190070205188618485323419286127 1.0270824481699602760638412862170962 GT 1 -35553352053951516.5600069573780731387683188633721723 0.4269721328871540451192131133138812 0.0459537139217417348004636283886275 1.0470430908090676279808239267940407 GT 1 -24940869969328961493.2821506177320422979013275549717913 0.9709575789352460132553062818665659 0.0664086676430488698347165614482663 1.0687164821606956919586080617423435 GT 1 -37562.6944584270476326798056089707914917 0.3174383267427917731521059734029937 0.0832962001165743553097219728309563 1.0869708688463586133505739019188683 GT 1 -646618676877587113961683621598494277018.1024483968661558255241969807993845 1.5431563114533673598196658127020019 0.0478578468262399055857220280625720 1.0490409347773046326341791690883307 GT 1 -703323234868219.5594875530509020885013211183688469 0.1274193254843378089000168032963529 0.0184142581670718162067754941280080 1.0185859111260077617540602627045470 GT 1 -7237512431538055639234718356.3205614495379336434355132612243174 2.1237798544156779348527634273478911 0.0513491049888762416318553729735980 1.0527144142147640842003217873453631 GT 1 -53441363057891704092929422393989761671190.3024140355609462777510874537038489 0.4244676246536183299403963040536743 0.0781857575369879620026054623194967 1.0814115481066804427205479439551735 GT 1 -1076372158217318640.6604119074282598474527854760331366 1.3029786609342141565933537563318566 0.0620370402498830110393596959667305 1.0640448192949261800254044712969787 GT 1 -145964230973075054329020.8142051805549423151272298615488504 3.3654418002894388812671707676605725 0.0856845457839750268519597039000865 1.0895796311699353247883964681928286 LT 1 -133424037042089891050.2414783414714211427672648232963270 1.1068593325213723054868450981285919 0.0037256858458464139161627307778092 1.0037326435000894353184094157779354 GT 1 -933518551377412251712853178.0913368932468286979702797018865774 0.5244351733853052582195961351463987 0.0829820286867672618637730221498938 1.0866282089752527288590500842810290 GT 1 -2336579047413286862120914717658.8408194082367433824820627563104541 0.6708402517162597332115877148485118 0.0762093263663118291693804545117362 1.0792697766918347194205944654379890 GT 1 -25690148079122229150042773202644405413715757.0795841318426015699258687510329516 1.3685679509985218715328741333265921 0.0308261842480518052591055389033820 1.0313113067563982494887922425650458 GT 1 -1496965081353005921933623923720088287255.5974266193455223647912472384482096 1.5493226560964820173270755568505592 0.0005526288298017416615681071551520 1.0005527815853941943903146394230232 GT 1 -8933500906762813136383180675884428947753.3586489088131894677785309532023506 0.7503057758263952576402522149759069 0.0618781958291121774437617823214642 1.0638754832135239539107920219749414 GT 1 -3809305603621170927270133.9904683606841972254023307866127810 0.7024509406879658897641190761585763 0.0398054391156560654800601543960732 1.0406193474666980705630138848506659 GT 1 -23654415767848651798196.5226628581654083519341044073235444 0.7558877460982410584115976079584605 0.0921399923254771567956344478049755 1.0966650888371816305567075258927165 GT 1 -217085539629801719298839601139204.6491270468398516799024269624294241 0.9433969809515354941289075378671274 0.0928702423546790285553860175563021 1.0974697766459612310151322138733335 GT 1 -296411.7231224662306841827888488539952196 0.6539747899104064371530093604947243 0.0655103534647221119149608641044508 1.0677547312968740741098951259009619 GT 1 -392413896.0678571626284727658559135992992733 1.1842888309589871490137937046716674 0.0731686058330701893129824828940351 1.0759836132741283055729476400759379 GT 1 -28781793671.3675658107079781760035278643325583 0.1461593509571735940119202690675652 0.0325117871730755881547373716714177 1.0330520372770409771218020142284715 GT 1 -4063124331189895599102407836213.6777000198827449248636680094160705 0.3820149578138228450127885855176826 0.0416172083303800712500793825057306 1.0425080070517451652213045565072417 GT 1 -105938232014646.3801991486109772032152680749857276 0.1308465097660212602245344103820845 0.0857897986454818867786190488653827 1.0896947543691121661403520618704694 GT 1 -93801979633014571240057397416744623.2652032733505702141684810791611553 0.4354091270947013618663059477387071 0.0979505459246659467947174581925972 1.1030859332879491108677929678270468 GT 1 -3533898902217313515536825132.2925129803322884146696830488618774 0.6996986692756407919465362664826544 0.0246979909315175634671945927663713 1.0250081030570610186351621724326140 GT 1 -5163.6817197458673149348865070678043462 0.5204825016712540902094044782962597 0.0318962595193873624342475652249707 1.0324160275298571713627549777818057 GT 1 -22882831935.2839059356019020512300430283444814 2.0093862570486722657518546287435044 0.0699750646363913361487679796262805 1.0725438809753425007150868157780831 GT 1 -97577078924564539549692910466114492575256.6024984811259051833180603326108422 0.2408770916140955218718574006771290 0.0998295285869464284159779555316742 1.1051711209129726854071310883163315 GT 1 -11859472644398801981804093027258116315455449.7747921864769185572177174574110229 0.7293191120171692129471619268397545 0.0044793005709915416284282763618059 1.0044893626965602507148527475297411 GT 1 -104460240244565.8151858927482469238543635118390626 1.0196294520544385031338183537393735 0.0180694762873564639161076169925504 1.0182347229140138675519093154736465 GT 1 -1845318514408156204653498304.3601745576089237129966538325684679 0.4452404546115740730340558862112516 0.0778026184848910877006317558587172 1.0809959986029482086098150960070726 GT 1 -14483530331921796764706603.8301903680943013450370185750287188 1.7945519621405401402598723135620329 0.0314983204608877791633722073444074 1.0320050619712703530061463311910968 GT 1 -60250.8047394839384170486203989390858997 1.7776947180379050214187929866618543 0.0962153421474284651881413084237824 1.1011641573066258380446309521908659 GT 1 -102620035144188727746165.0864949726897279912199383531569694 1.5493806520580333125953054893410020 0.0710212168389014723667435067593341 1.0736693787917475033540246607163968 GT 1 -16226239.4021464517421597556267923257286172 0.2448977520473097204402113056827668 0.0957828346126239351659025044527416 1.1006857202414688696697003827967459 GT 1 -1.6106133814374731340303069518674410 0.8845204847919045390305686336022714 0.0922511231686590270126578932346329 1.0967875059990153579086942829823471 GT 1 -1105055579751566291.0088475864550190758992117620001365 0.1685724159838790760423573338531094 0.0879191430724841854470336849028707 1.0920266339260248998485463061723434 GT 1 -8482984717210705529141908158100462530038.1715159772630837950493518146483258 0.8829016877600681637077914675537668 0.0138125000831110278249867969141013 1.0139087802705243782930418167815691 GT 1 -49518885033626.6821786302112054788083193266808355 1.1160803153641011758529814815642673 0.0752706204105120153452463258643751 1.0782541468804589205510138113086604 GT 1 -9712871950681107484507796662717.1438881024683397280125463703708630 1.7012882815120078310234869092798392 0.0911775648067738141524461132904763 1.0956055447076948174126012519847883 GT 1 -94878104258006110217980938980.4361385157841173867127509725657354 0.8523789079773941120849375381005547 0.0309620355444362580028361182268350 1.0314514888541382354314142091967888 GT 1 -9062.9182974832338389880869172013696011 1.2234040529554948483847914783125814 0.0890636029172375815400147189431505 1.0932822007535842817885766815311585 GT 1 -2879140192252314167586691942843684767.4599349335178317633525007242794718 1.1503702263978304069937466677617699 0.0582236887054268509891057379238861 1.0599874940749422923216306025267110 GT 1 -1075468939553594411506433444531583451873.1277605779421630877137975988375722 0.4155579505768102678551772063821335 0.0850198424700815336859505937296283 1.0888528997014071719895765008358630 GT 1 -652297450209647981078203058094709976285.7548597195236408033774714935348333 1.1411843127869080742822629003720723 0.0271813212295930177153471567787053 1.0275575669159135811429152086533839 GT 1 -1357253662893288.8754983010923675994472668870528494 0.4303577163222488160645787660592304 0.0926219585728546309460613152394558 1.0971961114861852671591549767084610 GT 1 -80819276.4858583835808676210878339754707073 1.0144060419973520768759704665740203 0.0008492505039638601422122911840485 1.0008496113214705316667320751181377 GT 1 -1876858411867870581415954118733660353405.2873489393430499218246251502460473 0.7879714155832488941931952315611528 0.0947939057898865445197921846606913 1.0995926327994239011607979408336248 GT 1 -161439.9997644249256269399986075248725232 0.1524359655291367471558571205249743 0.0536981237693527339531883357177456 1.0551936527681854185536497558710391 GT 1 -18042754170904306772923345790976.0887443081396456208980487010283305 1.1957331439103575320851969580506662 0.0387545953919315900389884993723479 1.0395255388155120202506202620155957 GT 1 -12.7443564861737601667149036649948135 0.2766023143578368167916515883375959 0.0830251915996421382296905327887327 1.0866752788583627225777777206115616 GT 1 -110112046504579228761805648523415.6046868283801225524878374909614273 0.1492603522633433804868256425255196 0.0006465276582134907492926397312335 1.0006467367473460369075823480225437 GT 1 -8.3665320176252572635181919470623877 1.3022922975356285344383268230440018 0.0177912448622945039848611292549174 1.0179514116133144164166843244575172 GT 1 -54.7315643786811491058344989730502050 1.2698433808314819134608242258762846 0.0581007482692156247044879530522402 1.0598569615790082950848870534276032 GT 1 -1434680445030376454684122189998.5383468257233798387908594548299036 1.0649831232054053956609142483747757 0.0078639263442180492121789517800296 1.0078950100803751842026734507635716 GT 1 -1798634571857738965496680962577131.8941340579757675797551515057166719 0.2124390600859522473635537511891103 0.0642153475016716111635755568299676 1.0663699010923652628401763024179260 GT 1 -1164088897037844820609557579787.2896528271615051034603200741440577 0.7998429463890729033533230373666812 0.0564679456700874181880519692262422 1.0581249408980468518158129051896684 GT 1 -261164244541864586.1448681104455022072471530090803968 0.4206641459472086281311494280269387 0.0851042543202113292716108852453591 1.0889451593459454790884998789197783 GT 1 -68790387.0223320259231673098885827608393936 0.4632791119177449924838663538585432 0.0823007766247853998386833456408478 1.0858855854305857578088124563948155 GT 1 -42945089728062009773896750086395338570584.5542102752043900464990191760706255 0.9571347696281178035594582025606384 0.0607348609773864726610599875754371 1.0626574764544810102699503013853026 GT 1 -21918409728287199767215386.1672470913870959997027592088544264 1.1123773979585198939253266431058297 0.0129703812361962894860183855362222 1.0130552311196791281200711658935617 GT 1 -14232658360849033531361650813943757383703.3576631260521067389542043152266439 0.3625401300396286179767981452358622 0.0706341512436247506257081834278998 1.0732528084804864989310916201977489 GT 1 -1234339198378569684682613.5501689800641719545377237538427915 5.9444082846231930115719204517027433 0.0987382642000228669104754347000436 1.1039595687756907755699304660755907 LT 1 -191233.6908013504841245367546237842879127 1.1177957732233763827180547299975174 0.0054161634496468387475631165308858 1.0054308840397112665605391610506657 GT 1 -39399086.0713344507345132511145270527927181 0.2427961622086057073569151966089935 0.0381084588373376151213515865949631 1.0388535777465642051386066013512255 GT 1 -215949286274233092745215150407026.5953103948014908912389298875658438 0.4919667408592759115059578387365010 0.0616279562056168007793032634577362 1.0636087734396015947669024000520820 GT 1 -581782939441041.2805568764701575658999391416013690 0.2341224015349167761571994413748562 0.0940523956573940348193171033310050 1.0987738064629120128764127482271815 GT 1 -2090825761664111493585395346274067219.5632735782688577012349643718002936 1.4864458407479691288718936179259230 0.0252126458028067077639367435710699 1.0255359300304628070707846340573480 GT 1 -121789177242102594627929639061077302.1222243078464912245794291226200883 0.9385221777426120833528257981052235 0.0497183780289974226731441048797664 1.0509968941384419250490031753106358 GT 1 -13750386.2023468654338572126355024165310715 0.1659538233414691874085652315359318 0.0813485568506653804496146648851179 1.0848485069718539182333749783242322 GT 1 -3.4179591927836911377219081976837196 1.1504462192174573927185027039956255 0.0391976605092877711190725095515555 1.0399865732789528033506454250373429 GT 1 -3171716899319901522441868763038.3790501317847733527335135454720519 0.0201213554302193680898471202507911 0.0128722877206825609332697025076306 1.0129558535127863407774071793287732 GT 1 -893763.5487445166480068472021488187432543 0.8556886362347324067506210434338313 0.0555952420095862988952138633444823 1.0572004356741801903318930638800246 GT 1 -804159523279.0699614607014396147645964501734137 3.7481089977413896048521930762408935 0.0399804711708790126004716068119989 1.0408016521968272318863586005483670 LT 1 -20159621104498113364251303000091846912120964.1370512652032807463603564396401782 0.7835269932828641143214011239856946 0.0086905006103620196750607129562211 1.0087284832295526969906174440968845 GT 1 -427852470447014678788105048074.2073231576863444586622034435750155 0.5830699543488652608194081980565129 0.0897110117201680459363697946862150 1.0939931603474971441416746796478762 GT 1 -900419333960446937839.8896868644376212717600678130729172 0.1005213507804358858721781786331454 0.0422210457573043823160447350680877 1.0431382643337316113430053853204125 GT 1 -54179419831.6274926143667542486989517568716732 0.4859727343271199960092065217263618 0.0041590789459901957792765725213534 1.0041677519710469109817761419692338 GT 1 -24283747396027226912219840175.5861415627819619123811222504573721 0.1441581164336444199827741903283096 0.0311883138793830088109730066609260 1.0316850243463348404452139777199526 GT 1 -46793441165330068921550688413955903729282.0636495078744299836476592808094113 0.9855618186304116790925998124628480 0.0589049130717125502508252793406687 1.0607110956938873989858304325571474 GT 1 -1241306528696.7174876013517448346130424898330191 5.7256305718902693941947471687925383 0.0566811394475612663428111419031736 1.0583509193012153835974711571650838 LT 1 -1624047045741142.0004039889069254804767037834202246 0.9234591807111842766906021522149144 0.0034319412602563184824169171873877 1.0034378438794943525766436941104318 GT 1 -495295585550600457.9965958149128863424897581207971728 0.4549115970039131543911019112776908 0.0589245024939453294216724832489484 1.0607319114715809748431145965887309 GT 1 -1390422194.9119909756846470556801120501588530 0.1384774854057380146957772825154034 0.0025971805132409174588700007115614 1.0026005590375763047590142500983831 GT 1 -81260639858730.0172764598712763256967187159475343 1.0323123869471321687032614044881887 0.0387454883170213551158623820686652 1.0395160646149327320845339607967265 GT 1 -1824080891733278651.3475764161958009104623607913239217 2.0823983374492955584712845350348475 0.0719765980515652530671371265957647 1.0746983288970474444521558405869799 GT 1 -4133144243798012379761683.9171954894957892827110764752762698 0.0103795022238162172037349364537570 0.0112738284636911455300889852320657 1.0113378597746843353853983230524343 GT 1 -1786155275426974661525280580493524693166594.6294271544677997258013684312110717 0.6615055038855378077409344160774198 0.0624588212882254028116678735086046 1.0644945981429737849506333897463139 GT 1 -241129549430237066820.1302680420047123957262603476375433 3.3171714857550900162167400156333976 0.0641039122013948190106554648240659 1.0662508259766051012410973787683544 LT 1 -83874.4856522158475662397813212840197666 1.1284975812051007023244168493896993 0.0676855087803477842485889049307445 1.0700850842846257116750828564043886 GT 1 -20044364571976326388552.2063781289752199779060248384972562 1.7504827513380839284902827511944743 0.0961699347441373436779719920033955 1.1011139171722430107196031344138019 GT 1 -100.0045356711396988107543026155627907 0.3210471242011908618450690947066040 0.0186473725345836700934321285190262 1.0188234268547273395107626938967150 GT 1 -1062391907249500867020036486.7607339419300541904268738432348203 0.4320394139778924235756178814257270 0.0487278382618405283420303039215855 1.0499550725867859694450218595937944 GT 1 -304715769625269912817939962275458593661385.0158176281812462358154844911557364 1.4408107097336381320011718318241032 0.0933150461669588106753256169854810 1.0979602388948133466990211028504271 GT 1 -2835927803838633064876068.0645004174474027818298229853849028 0.7619043867563992207069329432147661 0.0331762473885722002839169703686156 1.0337390621763380721406689224156516 GT 1 -906848280382588493773262342220.0157943174417430723473961367704681 0.7493508597492237759934921035366644 0.0765780846749506865881140103725662 1.0796690358953953738912144864112406 GT 1 -161826292536973329777030949428528757536317.7531684437140706347040310824689801 0.9656451284658633736901283046734643 0.0929330968184237247555438205802551 1.0975390684323778110917351954156013 GT 1 -2311350766896506417434190911602357078.7049202848965959863179608349603575 1.6523805784391398828041901768121816 0.0532167597069042165558224276190459 1.0546851029215659930772648688126665 GT 1 -3355979797483002517874845090103389.1495128320726749023967074805816762 0.4367319057083128753947954503798970 0.0895670566308660360129066068387148 1.0938350306659684539620453241841604 GT 1 -244864840.5173419327012057343432336732673452 2.2978810451119894076397206172631617 0.0643650883553145534655544190559508 1.0665299302561418821255571170202248 GT 1 -203239402480382297362.2894477458656999766309686343818036 0.1129993450889478630659265058796908 0.0346353792742211183641237241840925 1.0352494036970267511507689184390898 GT 1 -3813888678701258666.2219104856813359292718331446187659 4.2669657524058783885550854685578815 0.0763721437328794493319920954769467 1.0794460414248705121595817681100016 LT 1 -36889103443110445844294686766406539651.1289804386899720423874427187168629 0.1936714847102587798312841853091306 0.0409783218029578096813362307481381 1.0418415993520585422443549219486810 GT 1 -86820740323931393332638175385704794.4716260746940990859548233909573850 1.0821932600306445621543896086597992 0.0635005104442817163260062243571759 1.0656063021534352005216830927418890 GT 1 -36499.8554815907325576764160289953520099 0.7639740720200862161531759759544618 0.0660848189120196196891362637967446 1.0683696574166383339307978617275908 GT 1 -96170819237586659448282991329.5785905384578674231539526587946404 1.5330053614866371145213581881332630 0.0678670154068390630891237897712364 1.0702797871436971885499584616346606 GT 1 -35029741380381239194571022833471.0396400787934658880301737455271473 0.6775183960152341700116665247092379 0.0342135084102111360447121581870382 1.0348124923978223130676799775065166 GT 1 -4918932753378135810937068751023621.7143373125433243314531005786496467 0.3232882233124968967555568945801122 0.0190237240228278301903159183809551 1.0192070032187082410864578902335007 GT 1 -59798540577962700.0672537489151450684096461290861321 0.2204837063778629261447506962500853 0.0592643382933502001955031842597960 1.0610930909676589600527026737230050 GT 1 -38724.5383608417663144473577063510157142 0.3608883065161404482238881290477301 0.0493952763207676038339503953731509 1.0506569456590593779884055627773374 GT 1 -404159139345749922.9161188284036507671287990733479448 0.8114817679663961940238753211390602 0.0877472919490719328490368587917057 1.0918382351296429545576010894753459 GT 1 -403851.4698995661830855278055001727031731 0.7062397965224937910741638776817415 0.0048456902862347762185380849641837 1.0048574687085387929700188239239707 GT 1 -46109920631949913971483711.8687914645409047095762090655499143 0.0470104785678286567584661693076517 0.0071546255088453527954123314397697 1.0071803425793519846100915391218155 GT 1 -5589724.4994908671768704895355134105914873 0.3051087215744020952981997902501384 0.0951837751732076024651549216904106 1.1000234223927343558149423427573719 GT 1 -1811861.5275033911222705865636041857776850 2.5425928197090509301985610271798538 0.0476235530625475685098409932087631 1.0487948948962968206900471559915994 GT 1 -11920216519757984442745542545813156054.7823799702759315711413699160223514 4.0069427983374254597797642299230677 0.0015371541191478338849652270282702 1.0015383367526228227048137383031964 GT 1 -8898139707520145049594925580187654906102741.7955691504685948349459587838226051 2.8382619796295020384721330400843318 0.0436249754749998119065108620848220 1.0446051577864145416548051513896294 GT 1 -377435598.2284413219169596475970208636985310 0.2011714054556252983357414609971552 0.0582642304244851064757670660757510 1.0600305431421357326898244246979926 GT 1 -8.8715666779776429599049308798680374 1.3634514126582220430854820301763431 0.0745073580775496247000134040312836 1.0774290973811181239808826756683571 GT 1 -5094525929478616213444801792851292229099.2092789110921028272104832073314321 0.7985607816396798447220869082858850 0.0417545506723413021090459348664800 1.0426513236733606830079712389131178 GT 1 -379298328.1179629712375479650981828018090483 1.6153761914432931234776484332459095 0.0608564162545887874513388999112320 1.0627869001266548347899284555703051 GT 1 -31.7739662053297319411453675350152734 1.8902555862979064416018978916256890 0.0427510427390772450857035829839510 1.0436917779322757842921431688759161 GT 1 -7058064645405559828025103358517.9702924416705893179302377134358505 1.9153585514406151237779195036294892 0.0530017671756452929150248797355668 1.0544580518755668741431929149644194 GT 1 -173719260450557134627331377426029099089.5918931007608474867108754592753470 0.0210929215505661340487363214710232 0.0390970968457255469704739419051359 1.0398819124168992577730613484691858 GT 1 -423456442504.8541873036582108258458834396379751 0.0307607049662950527350640356561186 0.0362685588798337201088936111468061 1.0369426112340708748177765954572582 GT 1 -26147876865638.6685617933918330602181535790966233 3.1836813235498860707956433771928352 0.0604116069716488355755602368491298 1.0623133793724968849881140357897227 LT 1 -95426748896.3655815024437603974837763755678316 0.9466591060916325307498931982299032 0.0452374719341988087702444442242589 1.0462926311340591481593910338373565 GT 1 -104110427788601998132219306.6629530722568425008721256345693288 2.1981145450113419136767360164997706 0.0565250561937236062067468028489428 1.0581854711702822318113527180440320 GT 1 -13581.6731166354229758131630428216233816 0.5315895602146789415943050852023392 0.0989237637859350091995851511314154 1.1041654120630736013749033735635353 GT 1 -12174.2465669915538542246398895404508882 0.6693509407690283430111141075950296 0.0621361966047187803820132068907451 1.0641505394572314210235377295789812 GT 1 -1.1421350818764865689708865006956704 0.2745457388176869171984130615939243 0.0177879002677452093184215019744676 1.0179480064422269619394785359332871 GT 1 -42608511908804979042062052795.5134575456703749855744420961868417 0.4027645646807534371213980303487575 0.0716646558297033402807014046027589 1.0743622492190754306973486239766598 GT 1 -7567.6491534049116745927316139038858542 0.0158337954616373468155149597951624 0.0982563796218513258639240756665404 1.1034250339358531655142207273218848 GT 1 -3511109200971.6050095631303450270083906001575733 0.0338762096178026641141033089380633 0.0349158127324205555381404783403338 1.0355399407566067939993538480775467 GT 1 -10425518181692624146326.3714836593247263088586034098014606 0.0107595179715309466334065155677151 0.0619279850898154305625032919572186 1.0639285579654057469994109979103455 GT 1 -2919613813342916693708105597948981295588.9881336627411044707675341120509864 0.8890836304179488271429460038878811 0.0721733433331756426893506739228406 1.0749103560286943364703467125984415 GT 1 -666689209285125050789462364780647640.1478083781428261317552847613268642 1.0366433298174072812865281753147242 0.0729261305321434641226268289100422 1.0757220300022474585035224251883910 GT 1 -374917863039.7905868645148869763481425742640169 2.9271427823535604127604323743974896 0.0703229793436936174559270574810510 1.0729180427707151297008141061770230 LT 1 -10402200512057587181525164342209556385275.0645927778666652839369144478171950 0.5708050475370065284229473447531678 0.0026989869766361968506740593318496 1.0027026358088988583378522525444335 GT 1 -22725536963265546596226339449561978.0743760575828866987231252620516625 0.3246832696789393306682439332823023 0.0794777829758821330544811990767331 1.0828141427783047642541725266168450 GT 1 -217797.0216752807085359173940784235984527 1.7834805203016949941694187499343517 0.0532687731050948355893442106346458 1.0547400413961380357142107301737682 GT 1 -6513509582485330316642549779653.5513075651623400595793622963630943 0.1675688056842416843159829353858572 0.0612323563572022215143793192695496 1.0631872812545299594307374787750452 GT 1 -17653453062232034765168949774872182725.9937506544088915325728454910436383 1.4702575407827470224739445205248942 0.0983850644412822015608551261430439 1.1035677507785194809325956672061515 GT 1 -45750813494.2792587897264505511170020562592920 0.2890937791719402602047693720571722 0.0537958458017493014675507319058916 1.0552969253928557591550531985165070 GT 1 -5551152981687.9812821647208664397034060041580851 0.2139714039145718926945057845868803 0.0708344928430229392264627840538820 1.0734683997854561333969360236519084 GT 1 -21032251782853652.7960344019180947715188926049646027 5.0478764386296889803692530810614487 0.0893050959489774440711531070034227 1.0935473400636129145377012453260104 LT 1 -327422796705002046321936.9458274175849724276826033202207207 0.4621919328875436410176907687829287 0.0140028427902014865115393926510319 1.0141018075380204951168788092543820 GT 1 -139811.8588673569619933315458215981149869 0.9576562627192664321253983260253704 0.0000374307723531664208045009610820 1.0000374314729020073420763976685292 GT 1 -52869441.6021929672404409835564389488908554 0.4871914371614121534887739683626484 0.0294483422340756906400530706676999 1.0298906497979525526622420948462787 GT 1 -895224768547956854709376347327.9859987170035949115542231338037760 0.3165709629622414504380604200896232 0.0501237821598416587922358995874400 1.0514235998873030649402029201937043 GT 1 -24771590593853250.8550950499757696014635105452665113 0.9011490912809440760058218305419327 0.0248453468224013799293838603062512 1.0251592019192059293910268145847022 GT 1 -998207458400375944852.5690090426234282618497699474559217 0.0003771785747401648952953250741403 0.0370586311573994211135365638676436 1.0377627528977367981398370868712015 GT 1 -7877877068343915688940234883579081047643970.6347158746465013797952207409370329 0.4695903327896073421728075823703583 0.0952218989089805663745879455996502 1.1000655575113436255030458719758126 GT 1 -6836607853605793351435265161618612324.9631775442369748941846855421921827 0.7315573108016344872061433333046648 0.0376266738704942113606173404809365 1.0383528306975484681164164206459662 GT 1 -15986207203759.4067721169359826291256348458954542 0.2813474217646596983727775655856623 0.0952713967714397168865769852692318 1.1001202661922822890776415150810773 GT 1 -31136634082664780683244311755465413.5875701339099905864978907956591554 0.1958140724964603892443255841608764 0.0698507106984610840814342610405865 1.0724101795870890603851886814503498 GT 1 -5067762399645276127788157590713113628.3319518081471791082775375757132467 0.3322204894855834976057066491545412 0.0880615697170313627181345907251975 1.0921828018413921293924576121000791 GT 1 -135668469611167413837400128057.4223274529285736515000184178117774 2.3865057986977757419275814132167367 0.0834382372743577572739516973813856 1.0871258242013978078665710685207991 GT 1 -803037048983283838773243410983.9811382513264466822231936700405095 1.0382765810044553480913895923507491 0.0596844388379825531943755705206724 1.0615397566900056554451139280982927 GT 1 -8298097684537323088139078.3220525758141486258818789656829593 0.0284566804197380878981040099770963 0.0654170292958138108619661960217530 1.0676548698274746759646392626593740 GT 1 -190.5550753347944685936845578842186298 0.9975100781285038722803766950521894 0.0975659774905093780200759566180445 1.1026596967000622600556436057722189 GT 1 -59530943735650.1685528446905649268557358232310257 4.7184337772854084952288222015314690 0.0721332560200237136643817219748308 1.0748671513558273721888582308652503 LT 1 -80990041241689419997282340.8645078096640823595901115262353054 0.9695062374004834103368745930453085 0.0520701097819915314906004540356854 1.0534747349281913718652231065508624 GT 1 -3664867315450453550600869.1238194297311080691494492149939197 4.4361734288090745664729635829607709 0.0492661649941773086509042646287154 1.0505211346787381899859020249348239 LT 1 -20765196246635732143.7348774050534833850015989975812177 1.0870260998541765238340127963112228 0.0944154385986648345146857302824243 1.0991746196010899726569126643701660 GT 1 -4355583596789700269851268115789927616838298.8789646367568443521075427416523153 1.7255791961821051569484144795116716 0.0966995812976890856260225094288722 1.1017000913012491282402442801632858 GT 1 -3056358605367452595.2912944723983166961037010348282160 0.1070284063453913971901667634773718 0.0485697201451251932631870690181538 1.0497888688613658931149058493442615 GT 1 -6.6023803251303409969835546243826173 1.5360417710037005291625227988832647 0.0918387104837909011480789705223587 1.0963332845296920300850299517190234 GT 1 -65215185375680239948630228487312.1171085187599016372143083058815855 2.6075364236572957051920251924568501 0.0352436371809011791385278677612596 1.0358796832826089141475057439639409 GT 1 -1153.5930480806666124192932014246691538 0.0212948190805577978173239497066998 0.0361796405255689972791020223990743 1.0368503508296549036798768014883004 GT 1 -7177559055819725051506281238633137483876.7539518181737224525705286384588259 0.9332989805223582836279167552530751 0.0547567517113148923104913228824198 1.0563129790150387415422344661548923 GT 1 -72417795276080791814864306371766896.9531986610328084982433613664222724 0.3577700961663739577703463110307880 0.0469612952569869154140331142031960 1.0480997625713082342116082531335897 GT 1 -9355761207268876543165136426.1572114956799565013634603936125304 0.4009993094384905267152556830338819 0.0324638529435731247537093830815827 1.0330024934774836858531159223783167 GT 1 -1.7330870701076891176080233668643048 1.0267567625322417208440294088483118 0.0363741225057507779274312286426459 1.0370521535851472256964100890594312 GT 1 -7847264271.3419183621619675449139719004208780 0.0994548350309874034009716353328686 0.0930481974259987371754128179487156 1.0976659696681415678288586716586515 GT 1 -367168864841893119.3144692373814434365164318514655535 0.0243261420138294571953001453265651 0.0251955598536964447777529527699734 1.0255184023109060534808494225784346 GT 1 -489013363763707154.4925968462014639541711545705690934 0.2269315155231294070405270824100397 0.0451868462060504272579922058153996 1.0462396081209980081573771834891860 GT 1 -18.0677031415615679705254084271526161 2.6417162067319642911401547895456961 0.0238109651014434633885480921171872 1.0240990280255315574426460118299156 GT 1 -6997195456291617721656660881873319462786721.0460048061309495272626596103542934 0.2186216015483947742103776382206953 0.0179282430035950733548053871515982 1.0180909009995567722611657622033469 GT 1 -102.0285279070413704787328689463917858 0.3834618289428277613691289842210043 0.0965302809740466696555866142580969 1.1015126847013694245320043352898628 GT 1 -24933631852174724952053209456761.1788965657451210419456008789904798 1.3469455352140150253320000224956466 0.0410941510585729156049367162330595 1.0419623852046175737107653704566451 GT 1 -2197581395503324281470868976902475208179575.6905574515323864388893727721305859 1.9937619862826364441156447284797720 0.0409690019231382098354608233452415 1.0418318812875497213347274221453049 GT 1 -144546366770552.2862910732070811450425668339331584 0.2806129159590427390771590902258628 0.0066045144811102724936723036847642 1.0066264207938559911061506315162429 GT 1 -8076570832943.6068484754110001566643448934900620 1.4449613029061155488447037901026822 0.0741856266813576851031295257488376 1.0770815252099091516777173474261314 GT 1 -1227117833710276888110615822248113.6544039694010646003872725004543526 1.1382137144810073956325143856927756 0.0848064314082322834323700194822265 1.0886196857067239978439911421966287 GT 1 -226131819979359917561761582784915304549.6809291128497609061504245973107418 1.1516895142968387907821383200083606 0.0199519859541880640943989045814595 1.0201537145933846633737408504836870 GT 1 -1252166733424425932681069865899451059.3579232947857867118613688455999194 2.6396127434300381007855694285208578 0.0161062791314328439583067613434615 1.0162373950104774971887617940506886 GT 1 -56233280870.9070885794220138597663659405551059 1.5090789063922557148481697293617508 0.0267423470227387277861940161767336 1.0271064292013869731204073107914515 GT 1 -711957219787389.8057133441504277116065778994413627 0.1340867446392567335899995541817044 0.0856926395249986417730557924101429 1.0895884834504150860954851397005896 GT 1 -1487418130085401659719833130007.2563125622922487219232467909436581 2.1606651397252488457018972961041558 0.0634781502852041859772066802770036 1.0655824261210486168302838727569598 GT 1 -7088682709519333455452.0591838133338931170010256604898881 1.2160072880969309903319409626514375 0.0611412456182849889233180650030789 1.0630902324070226998930217467347481 GT 1 -15238979795131221641693.5704711253504890180068442298509593 0.2389400814387611925975744511145054 0.0738743174996954473819018477361276 1.0767453273037011977027826509908997 GT 1 -1225288920203.1885220046325625768194059358152026 0.0323273365152188863950151573696827 0.0024718370161829904781303281737526 1.0024748970489418517011578870627025 GT 1 -745735.8798577845412804064962738019882769 1.8525265064096918770507664222764936 0.0128769410260041821954545285972315 1.0129605675089912664791907608186962 GT 1 -799167627084982402714922.2012905898511990524552533893188707 0.8052729839681287255637886610338137 0.0592241676780126821491581680514760 1.0610503906009898098506080167157827 GT 1 -248859001700938658610800979225361779534930.3059818668379768344763286779337707 1.6799137752046121021804763985823490 0.0953528867856406908247678425794630 1.1002103414746191983721312714254613 GT 1 -608696831200985149473447711676963.5364856093938675635824139928208018 2.2003165151376914388207312287888320 0.0750020703527948267833602466347459 1.0779637796914543254764137391234516 GT 1 -6.5634425911743586584589466542883104 2.9200468466043335868085718559210657 0.0095833507780815329849681817025737 1.0096295665893878886810071610465742 GT 1 -11023744435430216749886922459437266110.2953031731768428774600351128346113 0.2928937605971448443864532210116729 0.0212776365052245074006055243886146 1.0215072686073018479058954098942687 GT 1 -890439561250751931691748084453849.1904130724198037178738353679184340 2.2975514133194936166905350107663957 0.0453479649140887964153944741343836 1.0464083660636502788614669144248925 GT 1 -5695.8440105214105328622994430553363790 1.0909075254131783257648781338776248 0.0708369158884402501484137231516678 1.0734710075539946976880981769431223 GT 1 -73233804207547333023365184759172949557.8776666799000354213548137460761533 1.7246526342087468171127543538874590 0.0006898988842971730075964316731287 1.0006901369740439819860936111323973 GT 1 -1867970190534035042143857.0241104672335921124169438723299567 0.8516589112692235217814401002891645 0.0159755322542054216504193810826003 1.0161045166437077257113111083444012 GT 1 -1483929859227590367747362962324.5279344149293247575113227001464072 4.7715212770552429082116557994547275 0.0182017853668883779749473801196758 1.0183694758227517421314684782572440 LT 1 -2353162018292058451731629206312835174834774.7553082343161304540228137030811368 0.0433702409151111108922275449668977 0.0851108416739010817194684398137566 1.0889523594858912830250256862755993 GT 1 -2.3956622583478698445920989501003253 0.1871402538510597490697763856861303 0.0178086174598185841121173403489136 1.0179690990459217762877567943851064 GT 1 -38723116957650498917603723149513.2339106508567880406256162742823926 1.4273858434096873569553327027240738 0.0557421781394445476332143196582209 1.0573560337484177771758446719666961 GT 1 -1956468412.8345797958147734055129452870926342 0.7326173795515215006262535351308756 0.0877060064826769200816289626895579 1.0917929795421958664764914494917125 GT 1 -3424749610331666.6007263774125546336763177292019654 3.6766011319011340306006392374390523 0.0907589285717237723053893125120811 1.0951450148736991297521455634136270 LT 1 -7360990422656897231332212578805921418831323.1478916693053261950084373837715139 0.1279099415327205179253927946688422 0.0221291055618875494378648655260884 1.0223776274383583631717190544474505 GT 1 -3007283641096775939652.5967425796483955396128968184611010 0.0184603993941311607515607217939080 0.0068670428412530748585740213598372 1.0068907294803374930415109127206300 GT 1 -316789056.3140632901382225152666725757312152 2.7960009330507834596202497347001809 0.0549103396459781852275502315119545 1.0564754773075871563802070082554519 GT 1 -726918901834396077377.1461692379820326898367624409299186 0.4649367578296639479259875337687275 0.0806768884343882485608352876188196 1.0841176280329114297517936285197353 GT 1 -759077696768015878055910621500322719937.5121997501316200220621022168168015 1.1506272549341071111606171925885522 0.0895885184606686812166623465349964 1.0938586041569378628160584645640909 GT 1 -122959853177106690012638586.0298393101045057809002928753980280 0.2555270006153467156032799750662173 0.0372454707724083640116952913012957 1.0379568018291204796635479059617063 GT 1 -737.8011760253039052089809012683565669 2.6523441572518277725906480121627950 0.0034107465838328774915392341572759 1.0034165764398447300296454646875409 GT 1 -123346088958753506109946900323.6144686128382257755802340130042382 0.1135963992246366936758469968968095 0.0598985523466191524998191540027289 1.0617674865058477559031916507470137 GT 1 -4220533213203.0284973351046197122363577489702835 2.7561452105322705013587292949246296 0.0467630304478929091948856645474541 1.0478917498347640127389682144038677 GT 1 -1237.5554344569741928200255697025498149 0.0245223946003825635883103438359054 0.0393162815638543855205887289063631 1.0401100413147763779374610634587322 GT 1 -8026401295963326673605109539500350.6364039807736752844458331901301586 1.3362769755233907186937383059487647 0.0960196687967737313763178009888799 1.1009476763452138079575538988729533 GT 1 -158381860048142057741670.7858107954471843151140067122816250 0.6817428659264503906208150551095489 0.0423902256125730122410797131795276 1.0433149176189679552070045312492271 GT 1 -502242419074841737179294476066759148641.6847402436160064024771752424662148 0.3658586562103599940510553647846336 0.0307317832116854332614746712435430 1.0312139078815737174351019167768604 GT 1 -14641988.9911557690138322910181852058518237 0.2745073321201678712699382428012346 0.0706904631068666114707055848599633 1.0733134020232792467647236126125792 GT 1 -29683932448775652505723421755171712203826.4635811779252032915625970908415534 0.5236573763115638092261366788917905 0.0601227298650637824310235039499402 1.0620059759285055939034369329746239 GT 1 -2749377306386211192902375484984559.2400383916695339420662298849243793 0.0370173918448385788548980569891470 0.0897362968810516573086137207331459 1.0940209378032167145562136433931894 GT 1 -2249716329684268284657243504421500644.9446184615348956912076778400875332 0.7473784571006701050859152254153029 0.0880762935796077445835040269231816 1.0921989476478984426097383762091480 GT 1 -115.7080254588082204946585361323253919 0.1188795890958239592112766010807054 0.0461733479849797048678764334990015 1.0472733305276808717418136400345787 GT 1 -32708303767.5174906307338139227729203626675939 0.4539557492163879546626441512914857 0.0769249363703495017980903498266664 1.0800447220767772949511082743434231 GT 1 -97832987746451940340428460895586475.0273428983338557381127293415308697 0.8687668784474842126872740505998378 0.0015931532087366110267651847460045 1.0015944236268029017332033109228035 GT 1 -665013891600641432607978465884704148071212.0421646137616169858369083212644291 1.0776657505949836054840116691700207 0.0542215421164921313702111995097570 1.0557469256404352727520811428800795 GT 1 -38933367107339743837627087064685.3096974788155289509747864261191480 1.4334899734002711103845889789647748 0.0432598652692974301208496657995409 1.0442234659594812074737864514093395 GT 1 -565.8544928477361532433772622627528396 1.0975345510256655837750051341639839 0.0130124905148005704624759118326028 1.0130978946589241194086274595525201 GT 1 -2429227219532463457.2156227484065503654872138502115855 1.5188011495517238534641764742328044 0.0005842251732320716759822111725513 1.0005843958992567899538308493051284 GT 1 -294.5293336118796846880327966083928570 1.1508119468693656400586437608094110 0.0569085406928085417260197893217960 1.0585920134512576688398298432550178 GT 1 -14043171566452.7260604271954288794737150875405748 0.7104561604650148187918402854170903 0.0242103403723383863709639433015506 1.0245082284718147497903312345441237 GT 1 -7762112470080734613119504963192157.2277965612815006088341886416391183 0.0911583761758732147721111075453526 0.0418154966823562058870625329272980 1.0427149273651641056605272953630307 GT 1 -97542649014849747685885574982034566012678.7356564002293818266714876269372409 0.2122783214963905718332703508273068 0.0228768602644465064575180371468216 1.0231425962576510583943922646690838 GT 1 -328263149641925943999301548690903.9714324812427709838612037939943179 0.0665348076741701566018330621335557 0.0540722191219665463970586055444414 1.0555890544109853144632386216981080 GT 1 -14958119199806027971524.8470782664159781041260526688139639 2.7785905305757258466184001005486909 0.0349550111587232605491166050491506 1.0355805581689471619672506585277447 GT 1 -4419024783.3100142404291619961463866163908108 0.6760656009175065253585628428152488 0.0233431937833825001764922066715375 1.0236199617140400726926854629981458 GT 1 -3489981944776218.3010825177805796455003534469401872 1.0284343276626357603532203653589338 0.0021680911864161067134316783165083 1.0021704448987697937523873847283123 GT 1 -48427097.7094851680089972830664013803518533 0.9875175422172360858641840163496933 0.0853652244600015214667341081089739 1.0892304458044476222459741280669903 GT 1 -2680482445.3000123474155729582686678120535473 1.1207887080148147024874881759700823 0.0880414118466616104476500221793094 1.0921606976653703328383303406344200 GT 1 -1490109301901065344709036.1282463826033643584549223691247631 2.6301930474933485485511671448799386 0.0501001399085022131880543808150990 1.0513987103736226883053954335273339 GT 1 -56143483331900901629742070277268.0801229096043720597867775477341092 1.0228256908460148343704494511961838 0.0380033233798690279090991193106646 1.0387442829792264141999824036585807 GT 1 -1860706166992011099478071791394.0606542429383326381129869651291448 0.5892547946301321369663835771127704 0.0367323378635814439537119687069103 1.0374239596601480891890362361295836 GT 1 -1472842541775857423.8670900471790925859083928578280531 0.5135315110312797944541813962691170 0.0641320589744909286570073718650975 1.0662809011064449600604330123824932 GT 1 -21079534520508325101134.3838805107267245538174475604038984 0.0649783372356060941106628922285030 0.0217274976018974034486073032430752 1.0219670154491940149498807200470992 GT 1 -7604062218.7518159784791157311452232461323259 3.0054592345619388080077986314494295 0.0163992706364672634844830100778704 1.0165352271158393683997198467514356 GT 1 -341336377264421728436312665722.7256389416401713060913508049161352 0.1227292212360878848654598047810851 0.0158258979427190447162417172662925 1.0159524645956365378735246269618865 GT 1 -7543310842739442974892820502573028.9559835662545998839462113060491532 0.0530681856457256850827922067280929 0.0192543780236388562232689598601840 1.0194421578572067260018187309511065 GT 1 -34762130802.7123188959118602993518778925184889 1.3752079219788869070363165091816978 0.0373995676793365651169848468067566 1.0381168729955648408440942141499267 GT 1 -9617629774601585993.8119808180772956320977564262560066 2.1307312757586834051953702701684242 0.0254187530407189422989666695013363 1.0257473905398379726476358769455977 GT 1 -89093182131191989776021091269182940.9411926514366824657910822610049432 1.0579961502045382092042022878422544 0.0122000124977912519738322644044362 1.0122750435277601202521877628791233 GT 1 -5347524956048277417617058.5188500801519815619567193171074727 0.3832928530571702814437335146553487 0.0638441570988041249115385663006278 1.0659733175378722159553150693945233 GT 1 -6472946.8610980080725703141124481085167209 0.2130971825979754514900316381091736 0.0868494876995890249808935487666963 1.0908545573187703491663269854698640 GT 1 -2188508731108691.6435186826239570202142032979678182 1.8676307799393440239631688133460627 0.0713201544487526739270300685845033 1.0739912222217632995556558583152254 GT 1 -15322980260164860034512484322183.2240613646219620131515432080492928 0.4226041151846512333177683385615132 0.0363458204945166269790946226421691 1.0370227836851854690777648725241753 GT 1 -818842166968668619069886.6490789983949033265586739502796163 0.0739067510587655596415523664408198 0.0713931259442922700445773654655126 1.0740698008222634808522101672579236 GT 1 -1117634594629178433963507164684.8526764948700924156808839528700140 0.9786245609929915224435156965348117 0.0142152259832686254967876558261366 1.0143172301367622991055746279511719 GT 1 -8280336250232400026566468701085.6382218792984942070046998141645962 0.6006768617174520695493205728366690 0.0125478479535768565427179972603765 1.0126272370046501696216782692917764 GT 1 -49494256331073281892695390301.6926486250894382727915503540741833 0.8140166408003511675354920987849177 0.0624960354171552054940547763322614 1.0645342922581451140711343529666680 GT 1 -4198201808466734795889811690662918.1380896312158216033549240767153137 1.5198780462404732469939366664515982 0.0665161320193920630360480524364893 1.0688315973702410131410622139298615 GT 1 -2.0103643169024637315488850987387652 1.2572176200370630910315712464691836 0.0081945281570103929173102236001115 1.0082282878592518159599360752150597 GT 1 -94006166986.3640423241215248031009108497661947 0.2696995914613131863825934798463805 0.0224740508761117271282828348098293 1.0227304410566661189573280907104328 GT 1 -10385.0853404660452845099912147983805333 0.4745131619817237391680191437755042 0.0490048912083298559830396064955393 1.0502463596763978453834849075710070 GT 1 -5476845818443138822723121551741232085689908.8981024710809573964235016415336066 2.8963125726970859009118910446910871 0.0239954460985961387228271606143032 1.0242880266973438384873902951699838 GT 1 -9013.4292540377728843395535058193748544 0.4480488016683773161494504868983811 0.0484721585476944705916836376428099 1.0496863320830481609716654878666606 GT 1 -65609277110.5351277065688227752837109848261732 0.6069317268108377322453064564507639 0.0555092549342635308364143370186209 1.0571093908543444276323192140262864 GT 1 -15611113683689799513384145047733356672002035.7537757793772110682077305178403753 1.0506730254392090428283796065073938 0.0495224409515706443386680993291615 1.0507907269605296599709444607098771 GT 1 -6678934048724938019094504412771929.4821687983027706587225644014701769 0.4248415881730942898565295782062949 0.0690845686741712207635012527441024 1.0715868422156609019907037749268319 GT 1 -86037728988941.4577379395982431551366645929688216 0.6961303088984548094962485172307412 0.0403642438171846805545911401503446 1.0412014871613802857400227418362302 GT 1 -374435963933656237156254.7425129537800994990181380502171671 0.1715518773787292343204632858148954 0.0205914131428448298287190393260271 1.0208063722853792143699141990637618 GT 1 -14082.8454482941607086164590676134593376 1.8418904066507253736997982128938404 0.0766618993696833545437905683863342 1.0797598053446644554033583277370588 GT 1 -47.2829298182044261896065641319410324 2.2067560434791822314402195716651005 0.0033661444740150045574046507576632 1.0033718226843567267568110865201094 GT 1 -417962311620.6207865769931684550450639488043738 0.6971954672302185473515719571340219 0.0959843332969678374605184778654091 1.1009085883164224687653227545346292 GT 1 -106113.1400058794143548281722856489411138 3.5637944450016545172511633660537611 0.0197621939183613409464875822321389 1.0199600774875391394827564099258998 GT 1 -4.1957398510544789984218145454815397 0.0059989764985551791116328024495825 0.0243322450792960504557108690052954 1.0246331655636594594961570035858851 GT 1 -3164300997554072758920.8256041252537236843245689251694961 0.5860594987338222090758744878987486 0.0548567349152631884897009646501580 1.0564187597147360805330546408920768 GT 1 -34201262571332236779085440.0476305375761685750782357461966667 0.9191269950892474030908717260874876 0.0973685567841920663310994839411482 1.1024409559276602354431640930815849 GT 1 -1934193914803968432807452.7582288159146844413669227911624310 0.8709399214329898549560746194832667 0.0946167428836353805492724811625681 1.0993969364017987054606073526077583 GT 1 -738797.8626741392972767684340117740554399 0.9147754078421484422815266371811188 0.0011219202731934614514414347914721 1.0011225500968618594923866919760838 GT 1 -10989055382089.2910868485978440670958845471397388 0.1764147235593396089378897980936427 0.0682119886799387532075153963919330 1.0706499458336792370950800002899010 GT 1 -1434896.3214727551756078873856436993250047 0.4357276215051400212292267387277933 0.0828626392053419817818628816789287 1.0864980242744218664883946361472066 GT 1 -881141514831128150708851457201506680610694.8747487992361779061433820657696033 0.5677033830239943870598369997118986 0.0193700819848560542649186408966305 1.0195601403230754646664322410423075 GT 1 -873949316777335.1250594873356598081175150210961013 0.2464383437209698358411606165621253 0.0816296511345050399266223338368427 1.0851545395809991847107379305770495 GT 1 -184836724662082.2701762571897376888389953097051518 2.8790976275443112224170861972762157 0.0215586187382523761397075306739308 1.0217944006734982658549469298910475 GT 1 -5238146310542678922019634575613803716258467.3610744819402246847397568327542072 1.2107527219064046419224681073208757 0.0317977385033016061813630979112617 1.0323142657049491577112088780241170 GT 1 -26127812975.7950550091917626306591021401634446 1.1995027327562266607988223721439073 0.0995783706490897692190519486911639 1.1048921483023753429005541838959765 GT 1 -1097230538119825599149565.6512883615097041775918414211776335 0.7530906511336159876198542768900173 0.0847708058429944222954216537724598 1.0885807596553577439362315856177629 GT 1 -68422781914270989221664826080905675.2756409755406650455049005319214475 1.1992035490070830787088633237589076 0.0974218932369284247065838772353879 1.1025000476300639841352458617603020 GT 1 -3477106347724741837852726.4910377049844656047252154775738058 0.3177984420245813136233142825496304 0.0213172071535984334546020556005670 1.0215477003475076241482991898994226 GT 1 -79616574997944177758829534012769.1476338163230003044929650930089247 2.4335890284829718105114125911808317 0.0529478629726395103197813708159089 1.0544011323723917224555800614348039 GT 1 -7098533413283373072734944124998.3747778101831683754141537426052709 0.9050358465073427831153810008213515 0.0548471893923350157383613197900194 1.0564086602143974815311758427573243 GT 1 -314613586116598690.3394254235993167931997985331486935 0.2100292604560682859819997295036741 0.0005082339441423367947692795652840 1.0005083631387892504664501126919281 GT 1 -13125643347645320824213870.5888011723464492825044857775928196 0.0499934682388355863941623875748133 0.0576715511912739009426044085462855 1.0594013934061787801479589791389068 GT 1 -5388039255539659419.7851164705569021358173222562198004 2.4521488649422514807129649778791445 0.0343062585517199671442145460212552 1.0349085328749585812403904563675046 GT 1 -863477976788499445643699672756147.6292468995306433239135546908497365 0.0114066689376776104986447760949637 0.0400230082309626704879592952811931 1.0408459617147188219919271581457175 GT 1 -140846761694638.0803462259139415719194363850759607 0.2555560916304421551438119835596690 0.0037768618051509027307713840605267 1.0037840121573044391226613836278332 GT 1 -105701754571362266967519207194442.5543385938312911494047716461986895 0.0521204871196666337129128533795105 0.0848891079127616342891223424116991 1.0887100275119938280596432754397397 GT 1 -1717538820561165459507.8235237496921823714265553348496184 0.7965717751505548404904946465024529 0.0855913884316874488354615907031653 1.0894777488202565019709790274215228 GT 1 -1026283546896.4873949000816015377073062390855978 0.5200436868868062731360193290988312 0.0371921842670733311793277081373771 1.0379014553943627644464672461536911 GT 1 -197795544170.3441175849009694988636042616575354 0.3059615616602254637770903007055288 0.0471814803814212811760337032460989 1.0483308240827367739378709262187212 GT 1 -3744628909473282262691576.2306482623296599591223892729228506 0.1541998223903400905378681917811977 0.0777456453402807852481838457817230 1.0809342207385443638310226064462663 GT 1 -3.2170857420945962728003585113882880 1.5098744307725318064594295512258661 0.0256020257314102754319920577383124 1.0259354609812622519546839963143186 GT 1 -1003561717409260.4767833266987243330364433226747785 0.0196389412081633351299201938413786 0.0931025576691277603110489650842942 1.0977259087653934444771701629715574 GT 1 -238817598833075.0827672880339595352527632050271708 2.4053108586956521313414051476604840 0.0378666999905971841108567791162385 1.0386022724174027564390404145849333 GT 1 -3812256436176593.4329896508685907016641346873243835 0.6935694819571600066093044453343118 0.0315350976119296124354396983964299 1.0320430359367371824280517872763633 GT 1 -4845050038568138548114012.7941291491977274931265674575113240 0.4792699289373454234730522230830310 0.0059492471873939961163695229010790 1.0059670144614262714987722692034796 GT 1 -285082428393914381551521882809787.3700875445164519173071636967330539 0.0990689101516590790725370679341883 0.0861154979693895093960189682327588 1.0900510809059711694757902700785326 GT 1 -3214847152737465979663306704594482.8018214314873879536671993735307093 0.5901848478969581902533671772928958 0.0316821473807981209416258610248981 1.0321948854601500609112338957341474 GT 1 -3164021066915600904274.9646738342215354585464925644886513 0.9898219045384625081446605529898577 0.0190892607727119914645448815336286 1.0192738131312063964228206126033054 GT 1 -363342.9354011995133546335107238182935829 1.6186016807345121284989908652745700 0.0194477862412687636743922237599193 1.0196393825874163980577425575164696 GT 1 -2119037660231817208427895898.3664626437794526635290603598303689 0.4118800451486926879379296565180079 0.0466705682797756476981563654952756 1.0477947564458864517051863410319794 GT 1 -2528611482051226598379.3138530723739115677839456149291173 1.3217402328502045678339930368066707 0.0778224874099762614079873394062159 1.0810175440329466823894285336070393 GT 1 -302960614467045877181068088.7400030916257602063151166614106434 0.4784628403540048157269990693994164 0.0920652100550248005013101642963586 1.0965827202010420444702728791037768 GT 1 -515665980652563490258.7696274740431590343310296710010834 0.0553833384566082076155854305300093 0.0556514429012393675440642888880640 1.0572599467720251747492287251012731 GT 1 -73154907712651105726397843896.7850371616084805511976182010859011 0.1345817188892877216695853311966542 0.0322868613481280782438162984609465 1.0328195799921300507145354003678648 GT 1 -143506893681276020120397.9457414273366417737031865174104662 0.1067154217858363846735911703850196 0.0572623566840812620427956991123014 1.0589672499930334750054596246351362 GT 1 -525259570294059386114060148.1762031104532019052014521842999113 6.3819081825235290217611188790521049 0.0573981483763248598056716904746191 1.0591113001154044169443596862589293 LT 1 -71025.6849309133889764021530647472621170 0.5086983646441320273926228880443588 0.0966221773713728923979334110552215 1.1016144048468569715749403792675290 GT 1 -106.7512903465487311275073950367884334 0.3583932475299297065427335827969209 0.0203254168169730472640856109654640 1.0205348204374799919780992971857420 GT 1 -2.8397422141528832205187519112329921 0.1087631598832449928005689992758155 0.0582875846732955884058499004968277 1.0600553426019763455232996457195883 GT 1 -13774047.1590827870835612321705885812516274 1.5111342909129086985695242308968354 0.0609521170463083546156880078612492 1.0628888075130946018124456727275501 GT 1 -18718139284747.1391030137425484762810942268208581 0.2247679563323736114907068841793520 0.0769100965072829003258163713459928 1.0800286456552968764345033298310369 GT 1 -5310391374892.6906674666392241723033382755410740 0.3622036249760102533065855546716677 0.0791581348441248905649001432322172 1.0824669565395141927700995307180989 GT 1 -11462049949386485751262605581.8750719265231051799439700486050148 0.2479427274514785850334349821505370 0.0299703964783233274252573047468068 1.0304286888558946021556911081183243 GT 1 -1066417602120575.3046337281406937654039476057635019 1.3574181602880767417269580986391803 0.0927898516336449251875002962625445 1.0973811596003675759545800428634785 GT 1 -108740325670287719474423710.5640124930504918485755497012239429 0.2588448770979004351121336454290964 0.0286957188546280926753520854367741 1.0291154909387888087446116377608840 GT 1 -2805024454656218974012296.5274684771073719268316810287706140 0.0233485352516353163711113420704323 0.0082578603712872523449160003984832 1.0082921453779038548166221355288190 GT 1 -10234786904778718050534611.4758675359416907252165290447373410 0.8455640403480808483563182614604050 0.0744488618896645992498098287058662 1.0773658939187954098768984694124673 GT 1 -99234357949.3812740701629567131069169666817280 0.6776112288196337713690097940617521 0.0052675997529097012752657096910979 1.0052815224708814683461601188092442 GT 1 -48886447270537730548425847149.5200349140723550590060828755951617 0.4480639875024783048566630317463176 0.0887185960549380457757017068579094 1.0929035337619354887358206343179855 GT 1 -758546771971.2971577172888188391736199929202591 0.6341739311736414788356878708047169 0.0408301854499930093995928565368734 1.0416871451655819356676763541972396 GT 1 -106774109240139323143051433744.5249986321653178503724087146519267 1.1725055480804089344046118817996000 0.0179736094844566523804055341852985 1.0181370967366966046715421680590749 GT 1 -452719980865048435850.5266182319831008055399331142825590 1.3387863555522309411271125696514004 0.0022551061169571017060620591100609 1.0022576526980171679581505171594474 GT 1 -729072901569262214.3703684212710511985102076713476538 0.1576566464188472393650041669264930 0.0837318514293895190737932378153071 1.0874462185333909954446782183422677 GT 1 -1413975.8038884192904466043395229469702615 0.6230218302890900646578577589871693 0.0809618071437167532872393354902305 1.0844275983428004201230159774518254 GT 1 -30423233.9297482720331423307805801097856775 0.9202584418012570825233777592459077 0.0947259444837026581653571463383524 1.0995175573491616298385023684444647 GT 1 -995557057.4630883618725002913783302444932963 0.3932739934745010162218012661124002 0.0869322333302330397027308386430766 1.0909451769688455864241163209463833 GT 1 -15950774039082969571236205995711225356.3608899950562758038686483239881698 0.4700739032470253455463985260018499 0.0337754473322580911039527469203718 1.0343590156055834346242902620756492 GT 1 -8431410603712294914249152.3918129930347967466802772629047755 1.0662029946571306020441916024106631 0.0012556206451002266284538985801053 1.0012564095971879294732627354587613 GT 1 -989191358937779.2898236110214675532822660476885716 1.9932306214476841279866198341096754 0.0512454162220053357676319842994512 1.0526051188974128396323727666500740 GT 1 -18763416773477915766.4756949714350306815470930045390490 0.5936923230433909703578601945772813 0.0121076898566895132022872834242629 1.0121815850056218690431414593379305 GT 1 -14.1866007068803849396082056086575845 0.2266332951997192446877078690710880 0.0598626177473790123326915357339280 1.0617292630645774660374434241711444 GT 1 -1133443304189874413210446187721767531.9683671529326885925816617289111399 0.0847332881594910419702314384262025 0.0741923460312634178438885769017018 1.0770887830085383957520337624363231 GT 1 -2549679.0653481472771662586906756441165123 0.8337751074289566707460679485741487 0.0486684947261128714224578895550076 1.0498926911914635294535408459833062 GT 1 -661187019305093.2681273984440687115906087218735491 0.8296572105063512520835129072847384 0.0468285283093719663902203485928625 1.0479604631913437095455610882008030 GT 1 -4553.9052527477136560821221682204046128 0.4764419416714949615907352783512441 0.0949410718526745204495956163634557 1.0997552234270884963684538106104992 GT 1 -3496985325.1464600619354789012606204066933297 0.6763824204808293213877179555820656 0.0738285825967430445145294358147821 1.0766959454815690160130489945750750 GT 1 -5741070523677359744481863727118776883414.2384219429158071888707941861190616 2.2386054390788637106659315883233579 0.0976205911903965193913907313162625 1.1027202167504520611888582392971901 GT 1 -18361630615057123060299281182.3140786575503428656333254485233080 0.6147774785020929684819630022531111 0.0322900069138278192505353808282883 1.0328228305120273912024413151030245 GT 1 -20493874949187.6391001775047050336127207484500447 0.1672693306607299734953453852839611 0.0272928370076667880523363507377512 1.0276722051034946406992152401967946 GT 1 -12251668215170957411.7667429307012966586273874960442762 1.5600447901560977825784111198324084 0.0467013477943961636090111156544567 1.0478270433033839174958289777569353 GT 1 -640358612940151856287190120.3387112743687179566218298451411075 0.1885166081992907257478580927914136 0.0992767563888188338130480347963991 1.1045572343622277242650991412075375 GT 1 -465247872144063859182976.8490026878138730376854252755752111 0.7956002824420321949295317183958375 0.0416710086207877637311537923766458 1.0425641451637947962680840704748301 GT 1 -1043757633051590569008521992.1402622452805170654191629160542635 0.0100988113437493937806275889892240 0.0563462197964394823980088629039495 1.0579959383678356844111278936519763 GT 1 -1236.3917219990908864330510130742055326 0.1198131004967217919618535775311205 0.0103843419085174933404609963067524 1.0104386353820242417098469179133374 GT 1 -2512774388242129125241113571868607.6323239971892896908278741439274126 0.5418810299057703775160807152160588 0.0675370814450619258574328227461418 1.0699258938795711496033194473343578 GT 1 -23736542360583365.9750395441977492547579448572908477 1.0386177030408825096309744454032293 0.0294895393318660709192829160488431 1.0299330977932076470005809398413294 GT 1 -1514291353.8358712986656220034424971749796089 0.0586556005212207962610205024220674 0.0702852427488682637853742721145422 1.0728774525139667604901390842157125 GT 1 -133890264918472983996732660862174529927986.9991315125874906536495699563626531 0.3867258290418020637969820226049192 0.0505826749264984801790570261279301 1.0519068245866113848311286544439021 GT 1 -597327486754380916272636696364235.4924442860297790862227885440674860 0.4134061932612049041821738950419372 0.0724334323600380990516530259140312 1.0751907160355745510532537339295833 GT 1 -410014233441332720304363173904814424830.1827253202777314438030859439277966 2.5982727381577851863838294712984354 0.0660379707138940229110566880614789 1.0683194954489509207947513455318362 GT 1 -24384499889729156237925161636963.0234343528214715865934186054898221 1.0256714665134634447936785851902909 0.0951003850338353778067720618894105 1.0999312641239082561229845722218869 GT 1 -495781792948882160782083039.0898059634711805603521252891453829 1.0786384211051905449495515039428928 0.0289879895276312748415229448150269 1.0294164415887632230863833245646211 GT 1 -58354958054110260847415654713376128.4522213659148836203338802374306393 1.0216600402919423623580841665996732 0.0469727142368168460114934514427082 1.0481117442969010975058875230351208 GT 1 -4.0886300521468728770830078697666361 0.7919336276474036188614484099246595 0.0220850994194375432110077233373917 1.0223326264545394655674416132992327 GT 1 -732431529716.2895922577794484096643100041803382 0.8006076958244419091749460487855592 0.0106432017099856068853770493178325 1.0107002456961140044387294406101171 GT 1 -4058690153.0364402439640250438419255403083887 2.2224255499185622660458237217652450 0.0935112787832640962889843421443875 1.0981766909862723162131455898590064 GT 1 -2137525482.0254769474242239224547258932103812 0.7191960047972828489943442565420793 0.0866573877155183154895219274409471 1.0906442088841736625072707380914949 GT 1 -23484769376023619539007955652963551.3381921768353565422669560419246335 0.0382895647725581053699038466245527 0.0998769152762492985419330470800337 1.1052237642045650848381435704786996 GT 1 -100560813771198259318.6784468934963059929605668565993362 0.5621373286469638103101426692875490 0.0634359178490822016197979314338200 1.0655373321556189852464021223612703 GT 1 -6.0053798554728871179916209616888719 0.4752037834943240805335181833085827 0.0718126951181434451422676970833264 1.0745217294051420587101658281860909 GT 1 -6697.8395211675810203296960159011392756 0.5247276191778320581426074123274648 0.0837517246449500867458744788652303 1.0874679080694866926229896410837056 GT 1 -4322997356730536826426.3921809369669006164407576234069935 3.0946212310328381047673851385743818 0.0510540022374702487225291332090056 1.0524033863511448197985895068042066 LT 1 -7116651254860288.4775653197034409814163761708368404 0.9981884493031602137264131077514764 0.0056443315837414087730870142601106 1.0056603210180866576759709496256241 GT 1 -160427052487508100762298454952192418558.2770596158155807167065976622173079 2.7178941813281172774895636537643124 0.0089197586020007690734518530762449 1.0089597778008913439895516755972041 GT 1 -287265704511825078842564.4350532250938488237765157152729695 0.2326774540789845874586895899302375 0.0634463241892721394864197849071465 1.0655484434059883899581821004736966 GT 1 -4397397901754694974061137508752089.6994245154174619945107218256232318 0.7070728160348317977152968303735064 0.0053702438478588518323477224730246 1.0053847154412615059712031818208241 GT 1 -599998796935983819368996769.0540869405273221190642837458059861 1.2176021915470983768506378533627040 0.0626638776909173428975780413839408 1.0647133392876854002098541810040916 GT 1 -2708825.5521242278367080162028039076899177 0.1777193325646863612894676668300353 0.0932133610942778180746395089977695 1.0978480947915423458922980502269207 GT 1 -160732410041712.0591287270622839910075003934658718 0.1683797217174293693022398202158945 0.0806395779442899850594393160477539 1.0840770441157542441171264267154864 GT 1 -8.6835052837985206541624569259147238 2.8974749924375329089920320625671374 0.0830136571556137362028444950712033 1.0866627001360482117526967524613607 LT 1 -288845234441542398157955327609595692.4097013124615847395050154211988614 1.4995883334819572892481427142916361 0.0819980923973871611171346603010619 1.0855558103653166928255391798081067 GT 1 -160547374748925.6111274971217545520415462102997509 0.1769034412716752161363714360449602 0.0169315699668253182849640762835555 1.0170765477958459262358127742569875 GT 1 -15583663376584513.3647192473309864852813767252293265 0.3770118387378929888855876918898535 0.0896753893544725164281092322791966 1.0939540280838239496988723966158994 GT 1 -629492253231192169070419.5939690749653191068613577759048325 1.6972135959771915542332983448029888 0.0909983504904996823181242109883257 1.0954083701643901381223122005864714 GT 1 -8286758278942162183520234111427.0592720422070564885707578925404677 0.2781047664608935590597786637167213 0.0983814612550198982287114733516395 1.1035637544171900646571485460645802 GT 1 -1717973272040801533731599547848533987.3179013447642490360674850367600148 0.9101940001660200266616061911467279 0.0212964828278837225478958551680940 1.0215265248385042029002385306874592 GT 1 -9464526273782849.0250293761703682032435134240049778 0.9224783054605851945347836323082344 0.0648842343105451475190278679971455 1.0670849437861082222210151289287274 GT 1 -17024222545617.4191829427700488094767438374075181 1.2831067693500014315082867599575566 0.0839393149251944746354652425426551 1.0876726664207811037391827147892586 GT 1 -2368978611872074930322642280457149934529.0940167732603561524519569810008901 0.5822927946082991554868072812497256 0.0442100235609155500371779337085566 1.0452170799833762514295080103334543 GT 1 -721135.7196812731999115777422829006896242 0.8801582304947539348271672529270548 0.0533620252888434147235134144240566 1.0548385453580118000176624685051519 GT 1 -405122392868051.2981820676438649397270974985503187 0.9355108722778262408780846269448858 0.0966568723087493296745392558505587 1.1016528113726401140603423989685560 GT 1 -789896967467.7886521911609019753065905248450406 2.6997941730847722548644665133051235 0.0860976314352296541083066248799855 1.0900315309962438887294427719790096 LT 1 -5866499797684805740812919827390473.4393993180396002749985234288478146 0.2516624267348146579216635660605916 0.0432496575976664188840556259612352 1.0442127967957167740919495926005621 GT 1 -53240765366574506535397807.1283385487033554726696361082017655 1.0252565289060356552954612808930706 0.0829366381383992184370856832344980 1.0865787122080633061294381864733500 GT 1 -1897502.3039347624391232624985152670736986 3.4284505192143249172658053734194489 0.0693785132121086613688448654446786 1.0719026506613814822451482557234610 LT 1 -43234453660454778908475322980949534856148.3343999068163462414402002199809186 0.4262750447777396773244938666411753 0.0506307647088684640182641296544194 1.0519574777599422842250443284546527 GT 1 -30039081935983327864572660725.2812066899032801814962727707856131 0.6465601231726504132669704516525236 0.0663489754196647456672184638388706 1.0686525459253348277989573602756561 GT 1 -31966653874288904386796675039668905.1500654938045067419971242682584770 0.9480557183966821663979140191207709 0.0101019821697126461981516364343470 1.0101533534522710960375727048593569 GT 1 -1629783937960800538616289933950948103.8075480677019897953388466524060400 2.5175164369363418113157610663233563 0.0758200952797530624520249805480459 1.0819570690996360768687221899282928 GT 2 -1635936316.2554186142850765463029977718335384 0.4191325658654540506757657553581697 0.0185036440958468890835892028374932 1.0186769780548334954436517393821687 GT 1 -40617813688.7604170087567716067123951067330798 0.4390504911926505828615466433900682 0.0163131681522380093024492587962676 1.0164476929027615228164081906188305 GT 1 -128805509148389.4159760372442757239064109733197911 5.6456918199073937564471243376823790 0.0445836481550772460898025036329945 1.0456080629906968192626389179194556 LT 1 -10666447353720732.0373449211433698053849664706207479 1.4864245954388033604099863230080602 0.0593589853551608758120304319690766 1.0611937056537877024199966623464831 GT 1 -746666029200776761606596508.5538297661462466641380974068441186 0.1850662076282188683396481051271774 0.0700246586732485568826372406081112 1.0725972078887741696259110704368504 GT 1 -200945482413.2871091323888490594720784644619250 0.3500842557723122904098383273393069 0.0567907595137257757583121753204893 1.0584671328537487667909078793749540 GT 1 -7786121248885974555678938938178816472902981.6458097216234733035233969863474129 0.2822581096632118778560128516480812 0.0130390450168307309896230026662947 1.0131247996187138514426633373389746 GT 1 -14277170466942925425662.5317550307172396178925539562369591 1.8690585883562685212197416495418422 0.0514189280093418026822994277023924 1.0527880193634348886937452659010282 GT 1 -16454466063673722018967111016384010625128.4073379450955449623119580684439934 4.5342924219966598443118886973765330 0.0676148262363944681268308731809621 1.0700092731013939028451482596895803 LT 1 -431.0080365660459827770716735577308574 2.6235937593054406773276893176004407 0.0795800668049557501955277733183090 1.0863635636562370516381084683986097 LT 2 -18043479152265131014463783127093019693280.9233938276602253746609979256831002 0.9334483153719369541731854312122247 0.0963613775189998196496759547885261 1.1013257524055472014236273186247356 GT 1 -40816045284520212535622212988677.2767876765563566959004998344286508 0.1612939042880749825446317154651043 0.0230573478481291753618524527918890 1.0233273265619686039437625459808599 GT 1 -354525998.3069046955995847974657920261822793 0.4033909200018807212690499624404188 0.0609861815623237084247813144615650 1.0629250837610941778123286863075114 GT 1 -11366025.6206776768098695529079390071903940 0.5474990449468097363197355107486223 0.0220175085805652895862858939441338 1.0222635115416860414206801892121377 GT 1 -580532174932332626408388580531905.1960042066262173921324066388858682 1.5551240516096234295599743768697727 0.0586321391224765459868899359973144 1.0604212903073186232287431997990713 GT 1 -248336333234126888333814854367629720548211.6086450848617368092781320949169218 1.0904806896286790944468388611774778 0.0268585364972119841227273843745114 1.0272258183581405888137982467509473 GT 1 -691762414019107136568173521633912331545.2279163294233638632289974804852675 0.1985860336954466958331296841445858 0.0305562539486063599344482587776056 1.0310328296534272397138061004904037 GT 1 -16146023770659796097605696325221012344532892.1497478941385552576001012491366316 0.5666980316683014726247454138479251 0.0302108641286610378572292734655268 1.0306766168160551639292448062172258 GT 1 -34180919377431741668311288675017243478530.0209625943295175580737278935272914 0.2092693074375781192819688172633449 0.0524550035342903985297151125063705 1.0538808534795823488995556266481129 GT 1 -391226234600387872685293943772.0350659401168176621717262166393848 0.5898658901260805410499591539516894 0.0585824604800379152378403479938104 1.0603685188736335397716811209685685 GT 1 -5482072753017946755415367890071491.8791565028311474739468628001780779 0.2287744719723424123914135054759368 0.0551703269732658538017696340525948 1.0567506079169583112564907593953301 GT 1 -152214324931173.3790291573359663476333716326480751 1.5783153856919797639324722650589079 0.0538448361362080843205532320058317 1.0553487023825660413702317731772566 GT 1 -440917531.9275695126289366326870049286625901 0.6738458981069224873466053509456167 0.0119779446402090023667649785925524 1.0120502582447741652450880174502605 GT 1 -3003388934465784.8036076714778992774431313475452069 0.9288971384712976451969038979574834 0.0091484284806505829377125886719624 1.0091905323386348964045073584146693 GT 1 -2408502358048253953465653.2467200752855200265614594277886815 0.4085187358816504731276276105233530 0.0278822281466525578473326700028466 1.0282783174033416804525889736997557 GT 1 -75980650897418696684464982149980639.1603030856376563961963717588708571 0.0865393572079260588088249664262653 0.0489922206523354823537420415782325 1.0502330362939008227431460563091073 GT 1 -39937091904748305392.4710206602850527605886958990729048 0.5678348278414166570277845139367010 0.0468005307115925026999823704816643 1.0479310905260563356544425601133651 GT 1 -2962526081701805444727912296003944604608.0272877935551630563657994738009560 0.6904330306031442272011077859575371 0.0251922764031577789845192822299986 1.0255150339994031493779965822600709 GT 1 -176738415759868806945962416020898439.5682783821017100505402457533294739 0.4607374323278798794210808641289645 0.0015678192724749316072109478931792 1.0015690495872194328006984460331760 GT 1 -75301465821.8912190674078886475254248988737638 0.4077261881240407787353377793177248 0.0226163360589387208212980038256958 1.0228760080763659862540827204155404 GT 1 -361876865946216278107.6497412774639530257754637593829634 0.2658520651652755879587914467567234 0.0672173830556499693795831462291293 1.0695830989108036909552108163866758 GT 1 -374.8365218885723831792885922053301302 0.0123725314126507122664776953176527 0.0785426436741392216785405244436839 1.0817987793121580111759302811133069 GT 1 -281502493095803140182842090267502678823080.0783675483139498722598210387640273 2.2293750974950296797454905237337798 0.0865495096159446205862937562599443 1.0905261023514289200948002745035667 GT 1 -23.7764664581013244437146569544299464 0.6783412124337729097953712911705253 0.0812671475030872774832218728835634 1.0847598925782028155683922739430584 GT 1 -18866125919915625251325866018012.8088478399338772555655793099586820 0.2303939539582989408117350904249581 0.0058349580396468989563524453789654 1.0058520479188875315337271370248373 GT 1 -411933949091237895.3876562352729017278824920305956827 2.8277253093242362558978407066154709 0.0050856951889881799258632132806390 1.0050986713506640890202047220813504 GT 1 -16872872970947310.3431337497264195891232032092010419 2.0891187027399444734139403176535747 0.0399437902501373921671603943379157 1.0407634444115726463368556999596648 GT 1 -4326226834288544016501.5642954532207200986627266716666200 0.4757718703229870577878032009684783 0.0216704055382087187424402310087713 1.0219086570698418577955498457443881 GT 1 -57790433808864.9311735962759406398463007321569062 1.6936548453402768325539278774521180 0.0690193732300973832913104577368014 1.0715168109764657754308543074900486 GT 1 -1279.0606556340147957313579939841679339 2.9545151231564649378015956777366804 0.0374469457591603379069689574582583 1.0381660930501361355117674518512553 GT 1 -155611.9907076301499464958770231771450715 0.2096746578481340505495209528271651 0.0397001287021698436930639496080992 1.0405096773610970726088446603859493 GT 1 -1396.3299304508507491752840537448522330 1.2702834572711330372753236192975911 0.0425009839868332543465917980271850 1.0434305855903530808169296668291981 GT 1 -1005924644758721285912488491309814791.7620022713420194013656834636634168 0.1495794852165841830847724585991535 0.0574983244317278178978561350881700 1.0592175818702812729239744030043843 GT 1 -4805725429374.8331607725363821430577852644386720 0.7037869076642345586182656234397447 0.0721135457966810984125399024364356 1.0748459090663217936471798412844277 GT 1 -974316836.6465465503970618632328520710082458 0.7630292478682333747362984491609739 0.0636770026636924873841992805598773 1.0657947794075994574929959407856077 GT 1 -5878537615.8713856484136900202244862506431612 0.2646725054967529502570451183329034 0.0857171424355587256672405973412569 1.0896152832334608706314666750760275 GT 1 -813156886315483503093650129723567955134.0473201461707255577651244294189782 1.8121031816986131274813165353947399 0.0893548608138127966952342691071344 1.0936019864927984122302589822369295 GT 1 -3813948769175126405543462.5439540423256800522064105885042427 0.0577456342178850852194228610573374 0.0610500777299021045681140166277984 1.0629931321117816847600872188726293 GT 1 -70889307.4685285929346798518501561406002245 1.5092783126650074805139173924588319 0.0794424310954664279487358201796973 1.0827757393579964822609170485882464 GT 1 -82312163.6688668061526094245074623000823361 0.3644343944719510423944044433196132 0.0666217544977099662346312559147358 1.0689447524636651859868110902395891 GT 1 -6916390933943511444695783114050.2216452568730055427734589184673293 0.1615705162149442014440713885668111 0.0486462881489474237661670621186929 1.0498693488361789161682855158440534 GT 1 -242226845127602716502745804.9134357945287235719845233428114368 0.7701717213509861363405655850787714 0.0252903791879065845996196509189990 1.0256156771510149717290923267478157 GT 1 -647998672645788614530559133.7633592886765219514280936441908442 0.2460447773898011860360970709847361 0.0228571604346658639003204941959623 1.0231224354095475088743992618696824 GT 1 -5566916410968160577884019450302033613.4209439029226240184792658758161747 3.0476580122740368232313766356834861 0.0169116039462450360700819015096670 1.0170562381030319454222701573404852 GT 1 -50825680741532336.0921850008322458128720342565708647 1.3733887261832324436848971143181757 0.0212480852867724896880588895658164 1.0214770753947695067225557792160012 GT 1 -255122008052075811036220144145777.2210324047324040149570000053373502 0.6615161827094083048588083002860151 0.0868580611541782896423114566367382 1.0908639462362834744051522878568700 GT 1 -974714530638531.4429341751511898751634803864961320 0.4242121776627436126728986016238675 0.0275217718846022824404459828326240 1.0279075912821479412510160790718113 GT 1 -10.0118875174241817630573094899282701 3.4816855231536635368731117581827066 0.0517429061902054381008993994096364 1.0531296174922107479260424519161749 LT 1 -16765356752282343009278.0807473055983845625429708316021310 2.7233222511407612826232375066657474 0.0887229681087678783153467885557723 1.0929083314723889642948276017020319 LT 1 -8916.3502571071147405502208073868032580 4.6592080386073865633827611651930061 0.0977759539222553453984321234439604 1.1028924016499344456318946762628035 LT 1 -2219417117000825716770.7248103022343846689996156276475510 2.8387535350286977717818547542810716 0.0866584187087900651215838859629362 1.0906453376980927577355519596452535 LT 1 -1857462204.3067743751331321624723327471575288 0.5367085349392645548231782936263926 0.0819624929549808013359579415060391 1.0855170318487698102424200116864754 GT 1 -7247208447043496975805609111790321.0160346793740560848254039708201446 0.0159878141851568766980580116487958 0.0366022982895037100314454108608995 1.0372889703914194979228304974112138 GT 1 -45354696445021211016.2277281868922552228255673555202532 0.0368646320231684234366861083680317 0.0834614222854026272933564938153911 1.0871511201555085775925222172137416 GT 1 -13879723522935185508183607730903866845741259.2462833428502819072739199590087612 0.1528219734236774109588695838986970 0.0324448934783837476437163317293903 1.0329828980551438585720268500876848 GT 1 -1982.2239464884988593370468935913356159 0.8848484213816395074521526013330952 0.0503735828443119037875438460883237 1.0516866168279569521443347586371636 GT 1 -5.9635879910609351179880340834188903 0.8391494674715613620309248431771789 0.0070131808253237594624582441632868 1.0070378887665757063358640454753717 GT 1 -15316906337897197.2970285008820230081602932696062974 0.2508363872941277503027545640159401 0.0614598160022422463723797930445740 1.0634296066130077614116376911707250 GT 1 -412059448814477084618339108745819.3412231384571450878442231988292941 1.9024407609006606120888419330656564 0.0965559514733475122781343370139405 1.1015410983420904638870917623937765 GT 1 -42756797447133959360924149913990.0249590735622750301046217357444260 1.9273409654147740244567119016142025 0.0112820673058076273877578544438490 1.0113461925939017317500373558852538 GT 1 -475267058488568903478857115.6352211125782512014492652483053639 0.5590010810069382724750633997684551 0.0082112845324859596576585433172322 1.0082451828225292439800500677120974 GT 1 -1431482811.8017708716037833709815523456240599 1.9167268327894291574926031738659136 0.0356220982496402212655501969067144 1.0362720469252492280323105574629715 GT 1 -2992888677403181792731930908734911288476.6201332470228197382474241038170895 0.4098415960566864106480147323135960 0.0146978137233254181727177126016671 1.0148068967617473268254383457998743 GT 1 -609727.4106874812989927528203111837140418 3.7008384697877860443873546006975422 0.0161808561400898044782209598006042 1.0163131957129371619080024003207950 GT 1 -453027483354512348756375616397.6789005492957993521218596274864099 0.4623786476727695680300350554810814 0.0800199337895162362060130306042141 1.0834032763363050629478454007492733 GT 1 -26021870206207209518565222599870148437.5357357669754373302907625139500088 2.1445483341172635583847340832693612 0.0444520534627137684021277690475196 1.0454703370345574023697091283108091 GT 1 -6330965842.1210905694225100343902689394187874 2.4389875916523574450074081151600679 0.0245043816867533151367438397566991 1.0248096106633012691659249996787823 GT 1 -12.5632103888454537145350638356728040 0.5404116336415192011614188591278113 0.0758188882447508381507181892784130 1.0788472181544613833686984574400912 GT 1 -223014898245542351942407228432.9515781411284565331827148324694627 0.9387786772448152955595046216653898 0.0496887875872731822595499948119766 1.0509657560207017031869587349419636 GT 1 -36451480409136084523466024738674092576.4353256733351726966799365056532529 2.1222798614950416806307936325427373 0.0303258766082663492682772451241422 1.0307952191965754640721186265149594 GT 1 -4.7686287752213865125695204677509597 0.9561077052768222089013588579390156 0.0520320301939111912529311040214500 1.0534345644222918853879063110597515 GT 1 -18.2404438651651729891297549892566674 1.0889287455874798285168528303696501 0.0373526777658036483554288307672415 1.0380681624714972206375014476814820 GT 1 -4352819188887408400849904671379249.5144348720778218243046361725632440 0.6767368407296728537891589531792459 0.0995648469278838955788981491446215 1.1048771290944759430475455170349745 GT 1 -640053313603947559314727.0794734323716241824734276627825831 1.6130754206873301049797866513034722 0.0961823464978493009244276633683067 1.1011276496640148921171909993768407 GT 1 -652627491082750.9378381772792230713669748579224754 0.8240208330933298775075005216251868 0.0648086922362602489412846433905530 1.0670041633887090910296118187643209 GT 1 -54485994.6901896614573652879917262143406441 1.3623250129229137293919200698151171 0.0609885756311940928182963211443748 1.0629276333209358847780966804540178 GT 1 -27029710566927424812494041408.1591071804028833777709414731938725 0.2342676000825440576838926381426821 0.0656392737032608710336076915705873 1.0678926987239269910470138691903588 GT 1 -5317433248162264570095939555.6083913148030913736072205848086718 0.7717713259447103556264637318302203 0.0577580188904755263924798624139686 1.0594931572351019073116481085535039 GT 1 -84221741496074145098788.0480041558154223999185384557640399 0.3061152284874357356011605684079177 0.0313537968425568984009172767464667 1.0318558491828302206253458426178853 GT 1 -1499140147916618759.2371515779384944413596161220529653 0.4297684230196260693003437784016692 0.0369581675544012792692740607093411 1.0376584284124328104372004452432129 GT 1 -22175542163691236.6052906144691418085600005080520686 2.1186756788228339989754289992014265 0.0373806818905472205816245948353074 1.0380972536364909158803528922914647 GT 1 -60109116549886.0298525334917716497395417811040478 1.0438511790996674822156799521260639 0.0544291622601588291371119675330423 1.0559664727595011115704803061479738 GT 1 -26486264221089.3202640650728393022585958582836057 0.2960307483789848483022445457192828 0.0790060170947434969170286675541805 1.0823017759672200892789740507452169 GT 1 -86499546879596015555674890018.3679005823309596233610722967617555 0.0099480854657695838884359762223832 0.0238672161132486976678921341848305 1.0241566527585848386622402360726448 GT 1 -184628036486360661801707825622054284538.8918841749630681340769688919088946 4.1849732771116754209994094473391321 0.0345977559453118445234769537898407 1.0352104312766891836518851072562012 LT 1 -3857083248488388545584563794631087840874.5601185944520664143639903873425936 2.1513121996572012399589678935721315 0.0412904048689856865467434963409575 1.0421670704679790065684514718799696 GT 1 -118024653679755840.9150819630849680485624102086665630 1.3439649471624936166527788396752299 0.0083559312997886469000753763839009 1.0083910377954970459700087108736202 GT 1 -31123948762666772862645004.1578507085478215315853353122816518 2.2157057403900527372457423001964762 0.0611864004403366355333481209201305 1.0631383290006222891156374773073356 GT 1 -29014806125.7558994138963869016603578799506426 1.1749356130342561948858311514327964 0.0147533476903897415547453819545358 1.0148632607208551526530013372170459 GT 1 -1265838286925169113181473235130967499780.7805021402346986721006158453923613 1.1911894266175611032291505737905954 0.0733569590210758354886475089593639 1.0761868566370605777743645516929060 GT 1 -1273343413661234430096293560754549.0971156445368399614012391778874610 1.3422003349618163232450269403952846 0.0794599559394686608555481945471968 1.0827947767451283232990424382995476 GT 1 -571163.1837646500694547871103458040404835 0.8866615448126483189850653804233803 0.0303627198596307155562103627390653 1.0308332154165757132297348743068152 GT 1 -226794186.6096095937555294333602212024791926 2.7845969661268409178182745366862910 0.0011680507260820553194503512011019 1.0011687334290042806913037904906844 GT 1 -38084535621677709571.4274173949690820370249741563973369 0.9663940974856582921272983120380578 0.0343575399781177887523603309790894 1.0349616374834372469156067401004400 GT 1 -2233.4963451112009181557090660369280103 0.2697100153978346503147564324933782 0.0847310091153336116611507704379100 1.0885372778010819093396952053334625 GT 1 -55120587842649628.7866478491348810778155851258965970 0.0483334876154236179196367172411296 0.0654334283384081966540590186238719 1.0676724168906957923825491072880656 GT 1 -1325271675770.5013539150095116655978227874614480 0.3987198118088312596509285370035353 0.0300350242272765364787478101914083 1.0304953155873987927445634549570228 GT 1 -14610273978386878038830784650755582196213.2174329978737015949061722792166862 2.9229168918935278223642919561670599 0.0940270052486653263243054618761802 1.0987457805011308321721781750838341 LT 1 -36128301847.7339043748078740199849444094058268 0.5208486949885724372366079199441984 0.0758272801630645441648939303971606 1.0788562985785342296599852093016536 GT 1 -1743578406626346158296258.6650612677123683704240351092552725 0.1066152245873912062887107773434667 0.0240417870946807703633355831941280 1.0243355081318070056179938653137077 GT 1 -216058154695138917241.1238022643173319084448824109937908 1.9224643439939291410921570254025611 0.0367131682244563862067691819111232 1.0374040592221524158784357977969263 GT 1 -30183136465641145297566345.4594345210869908616741682016350098 0.2659618070082608705860468014488207 0.0290460055547361020782547177156962 1.0294761913752941648576583190311163 GT 1 -229111.3237440492748499654247703593237157 0.6098951757896550230576246825124772 0.0629712076197299057094808319720817 1.0650412689551243917007714617455548 GT 1 -6755995310.6698038606112209375241871264515350 1.7378613785480292601314949564385117 0.0661369403361111079274170370036818 1.0684254685648440612283747707065776 GT 1 -219347663314610632.8310379688303505413617391748196954 0.1232910672209003830554307750728828 0.0231353697041642490519204466735824 1.0234071930429439452870547771922715 GT 1 -43.6121151285371836280968231293214891 0.0465639309132526707477291086004716 0.0063408037615925893696087389822286 1.0063609920429645265252151848241600 GT 1 -48570090959048122667713.7261756146030445781814836600241243 0.1203670123010514859037065082017837 0.0319209449720698182802591618924836 1.0324415266229604232212522669707898 GT 1 -31170229850.3980745449512785468109994219276863 0.0959764867642055184587185525801439 0.0133416809939382002863676342722082 1.0134314808347598952095162574283109 GT 1 -1332352090472570103081796680.9462958152062467088518420556223355 0.2356556910947454595403979206708158 0.0759634259571744037033703106006536 1.0790036258263810572146881511468496 GT 1 -182059.7576993255881272066866227223669244 3.3808325999784644984358706061311827 0.0013930400452056898023745026931107 1.0013940112275248176077006644168775 GT 1 -30135961.2559527770389383076270352270947584 2.8868601011593384762509619884900741 0.0002147218559960731296198620593117 1.0002147449120342769350144194901596 GT 1 -31345946668426487668059495264279248.9488198680925421475921633773060704 1.2412357695287987893267806329428741 0.0861652105387676375986205103374992 1.0901054793791084862134963729191902 GT 1 -1.6312171889434951610898085480673895 0.1619935762075474556678483386268395 0.0156673495964531974455723815694929 1.0157913797058737925079392452099807 GT 1 -9421443244280429731482208.6814540634639033185028861305787934 1.3055445317592678875509982672047314 0.0844945524124333480972431354431924 1.0882789644892438898612275445742380 GT 1 -378079122020051131.8012130641918466225868171323737558 1.7507797663995232181855594201814514 0.0662351777494576696060522575441125 1.0685306687649358081253497259503158 GT 1 -987573548242439088670266669837584489.3437150494435933595343738102023678 0.1799898486532003458874301391716387 0.0013513386335922633694415486773228 1.0013522525150452397954742686572253 GT 1 -1378801959233435621772983991.7780656910167855270281909201659868 0.8745103315741640435724640433587878 0.0958202902765089524655317608099245 1.1007271444049430263590474423505529 GT 1 -68215588863915813265503463.9154413626864993807819395351961799 0.6609756108167162391420154252019538 0.0887365133686324179305934027191173 1.0929231956246282452749047366540251 GT 1 -9143024578506237318.3730989223576631133837789755986392 0.0547813171271225192852767328487605 0.0949087969150496242347373637314974 1.0997195634704125880358703340335105 GT 1 -140286280334995848125641289876366.2819657559591303305708791151582828 1.2319702681606113753157819465937758 0.0848439863572651334740877067289171 1.0886607215278618077443577394573139 GT 1 -2088297648064617.8066257659312297921208855670901012 1.5908944335344048774447027776636650 0.0097138023856532513078782752627352 1.0097612891321900118818378956335624 GT 1 -5255415085598202851782780563.7056159617866389876769113980836809 2.5390721482310704521314277348864337 0.0048918004891938506978545788897706 1.0049038045087195333896267294629740 GT 1 -4604080543485545807.9267253053551088134791872534641874 0.6496673437421303306867645087014749 0.0037455409315239251459850379392536 1.0037525730348043148990231665535623 GT 1 -108245659325441.3898800169384238493640203027369543 0.0569112079031946833217152879154605 0.0803851414336470627801776277264974 1.0838003285829816627322679900748758 GT 1 -2946860753382405388455581247042296697423164.6738090837571678765488426321061747 1.4140638868735776417110587283661675 0.0845096752203865318779617487819836 1.0882954831597747085338269894247622 GT 1 -210329723265602299793.0338554137552196614607517824251404 0.3416379905370278716206420103320036 0.0374230279159294023041963268857517 1.0381412450212704431588303795648030 GT 1 -546392598681122397173913154884789.8316441065502232603185939740938381 0.2454731110798498857093735196559515 0.0762609061874296291666685445841036 1.0793256132169506280693241690044435 GT 1 -190312696537964774282953169.2866126474806176368347502793466407 0.5343337373909126360873605697330871 0.0842407654802082869419193215109425 1.0880017932683608953502431871524777 GT 1 -10821417065919863338139.1927363366195023367501993461071835 0.0402452304489838404177818998969364 0.0763736115095284596729166275518121 1.0794476305690320980601433212584370 GT 1 -9320511908718642964155.0958061622560348048375399376944835 0.0404557435193172404501214634986430 0.0715026352006234052807064802787860 1.0741877363200851612306696066560846 GT 1 -3826837482202076550221743486242657290496.8891964411073759542066917186103147 0.0238379391871381653424663012678197 0.0040367893348985306369613533898003 1.0040449591629611324474109777432851 GT 1 -23218079715829202217245436089695320573444.1946439288770211461041827297278980 0.0153432130053555438363598074491686 0.0000907252550522693658113598203504 1.0000907293708371604869647157098213 GT 1 -567491367400258537654877402084694.2065832588245332488693844969089602 0.7532965319433586949539200587813822 0.0448519311279345497272597154235173 1.0458889045804506555680186742316284 GT 1 -500543448235546577966.9479813152732997258167984420056738 0.5158656391067977533115097170704295 0.0607607629487445172788322093662652 1.0626850536820771706437298129881804 GT 1 -605054.9080947763380704802318382925938856 1.9184885226399040087537495076426029 0.0018017783528074965823637937677206 1.0018034035078299672570528878206954 GT 1 -1239337202790.8136697175201428121504185012205149 0.7194620345468622606238683277403692 0.0378450169146909434228929407231266 1.0385797362141761932538257293789902 GT 1 -233.7939211296524515654824327091659406 2.7258358214607370754567135538256636 0.0030925945480631700822944163888024 1.0030973865008442584799809566577120 GT 1 -1021405510.7891507387491232638569390459024955 0.4249543285355463065117673577786712 0.0391571551722765063331843951525655 1.0399444163424404783847712345165845 GT 1 -134513383973322047050.4984531660784081327310191843156825 0.7375712626831063057634496641053833 0.0794030543196200041976306858041590 1.0827329653533809001709905962961513 GT 1 -51381864016014433190624846.2627409681499174982540693727619236 0.2875826341220569299177664472793802 0.0480078232102839346397810172977795 1.0491984618823981496723552101126396 GT 1 -4737.7939276448753422808108639319343589 0.6100228717881537091919315626301379 0.0708693606617949410474443351185533 1.0735059264400120885918702304955853 GT 1 -177340414338730852517163900.9842793524672789190179374982890915 0.0582880468997879907283714969961699 0.0743652631555856430595513190415221 1.0772755748046893456340366225240636 GT 1 -731324167449185968348193.1422763881731869317024623119415796 0.3173581336365447340021298493664830 0.0779493845595847550847430554936295 1.0811551594915551352410342154811004 GT 1 -106797971561489686621980.0737664504054840318934131654795014 0.1294608793483465144485860873440941 0.0173305276898079935885070061332120 1.0174824592126069306062768901687749 GT 1 -429107739635.2866803781432790137125544954173409 1.3232761017325127713967627718411318 0.0768037983774261803337838692776552 1.0799134975970629295655506565280856 GT 1 -112079928540684376.7822268322045863905053056452919960 1.1947832766248047482147904434751597 0.0048746783532593899576214713509839 1.0048865983509969715726618293778426 GT 1 -352753.2197979870381277486061907861778886 0.0823452835032954874343398262472256 0.0051463471159763099922439118229755 1.0051596351698595439855190917102496 GT 1 -187530465912875373294.4637821964740563034179070719159522 1.9236590727363473993419411569325294 0.0486825941533525766913140048081759 1.0499075120311439933854927318927167 GT 1 -260537156022634508874509.3277350669700053209496806717322266 0.9536020098942665587613551076066833 0.0088245754856738892430708226909161 1.0088637426445420984337311739785028 GT 1 -727517895600816272483250301280911306954.8771097286453461342839002731808336 0.6531948546560536357574746010136192 0.0294081724938551484399865355644694 1.0298492620895929657580971730532714 GT 1 -1284166910371683831532010685308027071.9364662959015104151329503867799486 0.9106663009935945298343249879391794 0.0220295980064105452690585240458761 1.0222758732155137932606291529026268 GT 1 -476582247074578012420840421909500.7574030516804373134114655429787461 0.2470490820401034274226514051471109 0.0096610220399419313655195014701283 1.0097079924798251779259011234612392 GT 1 -1600736355926013.7179274844640273023895957556312065 0.3729054117215834485046327944409350 0.0380995259188820580447057798370452 1.0388442909646409634929637462351282 GT 1 -483334552698229252415727719.9764494378664791320997721415716089 3.8536800357092362283303475894749414 0.0918215160120085672420099726972231 1.0963143514291414928401377055846302 LT 1 -5743898392955056509.0952930143317064336061506650367093 0.8064126405325097033198368575764426 0.0218309127631940651725094685126534 1.0220727330560378521220023656186767 GT 1 -12700408296930889834134494243003512692.7114887365618281462284098166077618 0.0778754421342603867247183271461203 0.0095618379034158090311889852431342 1.0096078457903231149328465098685209 GT 1 -9544643558485697654139213.4775292313710221815990714618118031 0.4807064861019935683937651850333097 0.0820067114306359126611140711340596 1.0855651993149901837122931663981639 GT 1 -36411057238564735347.8336841505430897730168985677669775 0.2277709784604051753836208661163533 0.0946404173763142744506573707064840 1.0994230853304711409006802639630626 GT 1 -2891209898645319.4198131356125720978367395197809289 0.0039895900215949376964846735568482 0.0576950427464028069278717266028783 1.0594263229813996767402924321301615 GT 1 -407520295954147816115851.9100518211990115330448166392518993 0.1627643388687050578362944668356468 0.0096506011242961649361931035551783 1.0096974699607174417957823946819981 GT 1 -52515866.2796513301982666760307907014222093 2.5557177346966121001869738142441221 0.0763750273293249644264067180203402 1.0826052482499735207600291423171855 GT 2 -1375721.2525832486613602498879863205435313 0.5684135135672876023947608759684254 0.0657973670197732205257315962687699 1.0680619124849746773191500985514734 GT 1 -416104575997979029381181807799.4112390243484470051386654143008993 0.5334260690328468873088542722817870 0.0171414791109334341139389971865906 1.0172900950436796689809086009456929 GT 1 -793.9542816105812871397364312887520221 0.8966982620914322535084365344738287 0.0528440568071984560945130746288966 1.0542915286106625385947591786501876 GT 1 -43750.3486684784069616729635056120625784 1.1690426162924468322617015138255560 0.0066101364580129102410899576863829 1.0066320801640595313885204697530921 GT 1 -37616306879542.7019094669781682848229255157963516 0.0129609296568295270662460063432700 0.0897676012943287270863987912940259 1.0940553288829326006712212364871506 GT 1 -1295428436980163395373.1467893588600083535633202107462372 2.5178784009205888283633048844427135 0.0041051921142181222534200566748822 1.0041136415476586577675662177674143 GT 1 -162108609495406194205955796157403640.1743835168677382899154812120296749 0.2703613943233397794804165580478655 0.0192782664684317495066395294728462 1.0194665155858500236238854844747983 GT 1 -3541443.8862574679714496224552717596041337 0.0095126968048462666246347630196377 0.0937404058042691933469021721840247 1.0984294861705537776479191428567392 GT 1 -2.5066983708838028374717670030749197 0.8501901052111086051881374682237198 0.0304534376653921775513676794805896 1.0309267782896160101567070606887750 GT 1 -13547603737938956570144993769.0043756796059441049209740824575561 0.0474743915476486642431705188106426 0.0996701852179839434121220597324894 1.1049941219193038530658956858911029 GT 1 -260270106118651001.3159462588471253559479196186100153 1.2165336589528974485443585961899165 0.0789456614824670645597691026638371 1.0822362449910821638958530233811636 GT 1 -9746946241447542254127884102910261850.5317138536140049400236811168970206 0.3773219148544701999691176385885226 0.0463853724190498070608918248903065 1.0474956434630371346769672779831617 GT 1 -1.3969120453655427314140382239559572 0.4711448891263376258053644152965290 0.0520503530403682033377998676765261 1.0534538931592533993635028969294749 GT 1 -158.3017338165444750050189124452888657 0.6568156026750931169792206305573609 0.0187072806405344605003081606923788 1.0188844751802093876858510263249467 GT 1 -2730458560494295.9585679059166061190024943002659108 0.0772737766412350154388068914342202 0.0835029920667027158207281600795408 1.0871964763740486796398744837740822 GT 1 -354523970461060911260719601073.3338327103635130794305112858611168 0.7412021017671455660288440494323119 0.0769868899913880626162720873701748 1.0801118408871857067873502517243789 GT 1 -6293928080519422044324682844880.2229147745391927248821304458415667 0.7407756492695928645110074229705393 0.0196876551118652409268199448147994 1.0198840388241107702484726127021532 GT 1 -818627915715443961658233116.2702071088881540549360358616057711 2.0233722244682732065769507436628053 0.0757276336109021996662113790185137 1.0787484819568759466059403224563309 GT 1 -787160577856686934368.0389374245020366950195052464412485 2.9306210671933526356059966602526401 0.0793619875793165506826201160734344 1.0826883575317342625531406190558524 LT 1 -42745849791914660.5233970128529242300152597245547411 0.9651429893818536251013820608491683 0.0024277692817011946074504151111568 1.0024307210920545993385018481431824 GT 1 -10422552794563761408102027125708707395.5062133092768072762334583660955177 1.2559474753024346232713528999414787 0.0184600592368367648206384871973945 1.0186325724989186292633282775855218 GT 1 -7231442765520791.0464312825980593444672863587603040 1.2378871337836385828113161232235296 0.0494107646140363053868625452503908 1.0506732388870019490644611750703964 GT 1 -198.3186542296639879791452282765413475 0.7260628049985726592910582368397231 0.0478884161548207254766208861519845 1.0490730411379110729785003228294256 GT 1 -126503866041628008731215844175.7792628354963833935714036922311771 0.6411333778059640845810463724058415 0.0071322269271615993375601630175494 1.0071577828438613058497804677727884 GT 1 -8468159714882793469083832791085.5100775739652532353638541906047716 1.8925805688111261319713995446942890 0.0587048970309735528565450445684992 1.0604985828550878470914468582009771 GT 1 -18039957915155351979290386390448705461498.1480395685771462972119475292071578 0.7751461389774504937012304285590798 0.0478872635401785810152087439186480 1.0490718305508706133889139711302732 GT 1 -2178737338927632640587828175517983898966150.9570189826150938947852213995611126 1.0945507590931325579673771670923306 0.0259976345969721089162369477387625 1.0263415467973476894370925819351496 GT 1 -31378706262404813175921023853258.2470725202785287740624712263397226 0.5050504643446133254809079041845121 0.0976476245166781459797982641932863 1.1027501750262678105313643646240527 GT 1 -22743983975356382225862526035683606448.9677831655588884622884289857982373 2.2222416881228467312482239724060113 0.0526158957967328097731496051548861 1.0540506669705169100325573339321563 GT 1 -8412055681546497905966308814.6493474199629891020269393561682788 1.5232031786336804830227340140714834 0.0739815623465319618297220344944205 1.0768611334613207961019415611575125 GT 1 -799666152896461897810193709717648.4152419763503123923131983942207082 1.8767920307361154753485252983691335 0.0101999145849237485817254338036718 1.0102522901690668980318686349787850 GT 1 -1231589386114069442602487880.9276280723443116413919791208291692 0.0817631609642777345533481127231963 0.0345252396294297036933138179122004 1.0351353189668423741024770104986106 GT 1 -2106413029.0024594302286458447388064450695026 0.7209043101726935083115007031279023 0.0312356883771556152525335346001937 1.0317339251356068176000784506450829 GT 1 -3212001611632661243031737556540.5200707138177812533224640625831203 0.4637533811047246908321863739638991 0.0951422757279318327420819873613365 1.0999775583902120128437892789063621 GT 1 -31953822.8268764403857901637392908960594391 0.1163218308021634170490160262665473 0.0007575301283867343527018677019872 1.0007578171993201842558614060894419 GT 1 -15455218136091156800941538790.1033150963961088265124216255302019 0.2015758447930853439924049505109715 0.0882041524414426726034594784665949 1.0923391653274922754953024317118654 GT 1 -115568873851941646890708290.1679633458615126599055056993023633 0.7111167453182636969555485638123664 0.0077880245690171513046795179725107 1.0078185096143678764980851457021389 GT 1 -499737380155868.8023880149053539726896639080747722 2.0267897330604859343616569760282531 0.0310822107556936373917190638243063 1.0315755115117061250071247737137826 GT 1 -734126092.5805937981623991136726507266143398 0.4833549106687273072869616924330099 0.0056851896251051934729975546732463 1.0057014118290634162351369022115618 GT 1 -72762709474232071267445042124244611.7343394266685900283370051227619996 2.2980698636629772748438463620118343 0.0452653037560995264527831156931582 1.0463217820765673259449146743672222 GT 1 -2511956854892102.2045342816939403186964581573862511 0.5264534876971860876792875985312035 0.0789258497393057694452700727203921 1.0822147353697036911074702121740449 GT 1 -8736632899797012406060350949836.6097006096094605299803913407975594 0.5308445317661468104737268608685600 0.0472215435516398302600639164493559 1.0483728719771526648346941412629793 GT 1 -85019391372005494399635.2655788384153705898764642980473609 1.4341694140626050921950685793075403 0.0591388989864538179395420937536191 1.0609597581414471726307814036872922 GT 1 -143486.5928446601930899996211284730652673 4.7989026920707314614552500736525544 0.0186754609512055381893558792776927 1.0188520494087601780462178369655886 LT 1 -11863652921956922944112015092498.4540084984183852049888477703657880 0.7615397876265743654338954526074975 0.0524919274585394931384509360504731 1.0539198222291732106357773931859428 GT 1 -528752974.6653226312216903061237617494410462 0.5197243193115083878711090497834115 0.0296729788101730466492646842076625 1.0301221290547820097411256748970341 GT 1 -29839321887720990325217178466.1989615817438991868692144436058458 1.1333067080056487512298264107574587 0.0392941873293407097174439959015222 1.0400870431312670482226745445122303 GT 1 -6167748652309013748084446626128707587587.9413983868321354736447613566318924 1.7210250020134949580956914286894462 0.0965502081163054316044724038979817 1.1015347411816268522616893805430548 GT 1 -4557535159066580767805116542437398438452032.6840803883561162643462025190030318 0.7507954690336748939665427480384750 0.0913332216155105041488352660178112 1.0957768324467960083983710521930678 GT 1 -2172.9414962702271182522052147236561332 0.4956510096144590283128221244186174 0.0750710085661464892671948318565528 1.0780383104338290438365971380163840 GT 1 -96873377388663851838483152.1675116619852775607071447550968228 1.1909361506313363545697298403798414 0.0873172720116827794553681967890385 1.0913669637226048139931826130590535 GT 1 -476736541531577318414982213261196795180283.3906549352845683575532309303128575 0.7698193985906982264097284771091004 0.0703741935883030379443790512048958 1.0729731324999155465643876056455088 GT 1 -90597208907931928.7452747483924811343146441833334678 0.2446214897561019849881274140455534 0.0794710720320976241101001318654083 1.0828068524389757416970010768148254 GT 1 -166670197604657472.3733592658026591155944559394512826 0.6726601082559858193995136023582589 0.0511384302593527022488733539920559 1.0524923606216492074896115533703893 GT 1 -1278496782828778676199.5760258728059191162121974153685062 2.4130810705058736939440090511605278 0.0456357222590687170686801993333585 1.0467098379214085007933982317238629 GT 1 -16376454826777516722296702563.4786465652994007589567767819075988 0.0415119900345947580144288769494378 0.0082578627294096277213549993764057 1.0082921477556614229913411574379741 GT 1 -421901975474600150148011892837031937713.5083547426008547001710163862655746 0.8107569207988553270578692734970024 0.0254150150428380951713010977744686 1.0257435550559067981710229227047345 GT 1 -2508731281942648454784881242599826554.0283453893441151071111622124719889 0.9859419367918195784885333173638090 0.0983023667591902399247594299581607 1.1034760332542469299905532120707569 GT 1 -82142946634089.8224837668785442383945752557439469 2.7415074594416483225565575312565768 0.0261276990487263445390687380895462 1.0264750917878895792036010625722386 GT 1 -837177365862307064915.2921265315455876513014912032149505 0.7022613372480092226100992216928760 0.0059470919597513913466323304607105 1.0059648463374143866590021097990546 GT 1 -527721475136380319526278694689901554820089.0355621880980498902149006642993927 0.3599654000087771673895598345242141 0.0836662319754026670560874632515957 1.0873746051039596757799380569977290 GT 1 -470.5232518657538045681018250566258586 0.6153340822489140844324123534125162 0.0785718073463340871348324657155650 1.0818304293212575441823776938219786 GT 1 -16322746076552874301337373999089.7953903250648350960192401704999230 0.9405854759325726685910941482485038 0.0992776385450536427170585817845947 1.1045582137492625901802479831540125 GT 1 -13774165954061.9538524167199079706461448607812442 3.6791788417698578752637603158756067 0.0277662210271778460726264462674115 1.0281589900938712591625154513676159 LT 1 -164503.8952668504029890181649358992279479 1.1100551664617056918715248585900836 0.0146496421719684000929268401422780 1.0147580078274593214877557288977222 GT 1 -463418175.8662179132846004573547013807962637 0.2713553172430897283386161949516726 0.0779500595125228824539543717736118 1.0811558915047156516258253544004452 GT 1 -1721.1631047960963546422333048915887628 0.0634327262267966771182659507500386 0.0038896914289432938210268602637451 1.0038972759526758066138006377430135 GT 1 -21662122525705448053836248095471041579752.3530953756130683420285137822011740 0.1229939537907203732442761959544213 0.0463809808104243375374654782967060 1.0474910382500021051271568144886604 GT 1 -1152623766.2536195342579999421716311804321362 0.8447747548160671187955122019723555 0.0907853339537908114239634768858496 1.0951740564187032082396532587831704 GT 1 -920122589823924794.0662645784582039288570202756071526 0.5624306650144437055990977496899309 0.0168689331989099181770813973900973 1.0170128342530061083359041214404410 GT 1 -41084445228.7587230109294582209150743114345645 0.4829040898736982903185006701513141 0.0246974690782721394335549779516913 1.0250075679888452677734631544911089 GT 1 -154235551880206857399781.7068932854795360146521816628815227 0.5871758460514966755490536967894048 0.0350646789682120494243815769314846 1.0356942047269413589879465501335470 GT 1 -272873810327573562318495.8605082527380522307010208396274593 0.9852448427666217749612038375411827 0.0936793142972026412841283791448715 1.0983620778380598317140810158987438 GT 1 -1272833008424602719599404006093412851116.1665162068053829141909435484966084 0.1328119879330720340090246108636920 0.0043926648584339147749962115576561 1.0044023409570155264427672530647541 GT 1 -3.1130634011444265429028375901866795 0.6179725038871232315705404116129672 0.0713133980914802134687454305464929 1.0739839470205969054805740195382157 GT 1 -4729027287695261863032155952.8824201781917198572963388467565970 0.3277741230031955595323300262003320 0.0989038053712938505007227429546239 1.1041432627789092206543247025956801 GT 1 -15576.9961081353102390646346785790439060 0.0073431855954909703681614220534025 0.0048642991997778711809361279253554 1.0048761684090300108498698676063590 GT 1 -17900724.7136494873375610498755954780344858 0.2450582240171084354807653602786105 0.0622823011275379330245888027377028 1.0643063359640086811580236989420646 GT 1 -3.1346306665917733086501657428717335 0.7835360744887078010553513109273110 0.0356181512630151593184884464829726 1.0362679541535869511089874654736782 GT 1 -15.7461522404626268685096189960977493 2.6628331407073903739803006363781212 0.0578125502089472589971049601090802 1.0595510329162951195491850742250375 GT 1 -22620442070.4484527379603283131486420706432378 0.0583460839306869420058373628331020 0.0454085299469564658402601957614846 1.0464718100745634669544346085478986 GT 1 -262559762749400976243740692624.4945574653665027875869927753904437 3.2275178301791327935673786643997264 0.0621399769789932827874195333079327 1.0641545703003878255722389889359817 LT 1 -202654571480104461474639524727740572935.9553898801531139179782129982594173 0.6209087318650082767110334673783994 0.0432038309237087375942180608745921 1.0441648996856214136166107570361229 GT 1 -781057980257159092998020723967056405.6551331783707196777857485623212022 1.7872844875197955160303643424514070 0.0920075197191627299334928911296148 1.0965191820441704808063837553625489 GT 1 -147412084562563736276.4075851453572924622471327110776453 2.3775788306320651661320479682254945 0.0462267090962192445870116130241007 1.0473292763369178026644150200004187 GT 1 -4387170728157807385390476911557009315631.8930220126017666402258347499926442 0.1753142316415373055295956579859559 0.0145229542879005468710550662900603 1.0146294446828482971357899067454199 GT 1 -10045918146257592342573645105500713759816.7923146180739890868735150825292422 0.4103730710939249498235082487394501 0.0024853625366843109615210117207907 1.0024884561770953894005055400741532 GT 1 -9954464654412489717269268.4156995597888472520396511016255315 7.5066266039081578961136887032825243 0.0787533762157861637487767751189448 1.0820275003056981998496206975692248 LT 1 -20744214235688949240511693093194961013170158.2872931005798029714224899513837680 0.1635163888214285098104137382359390 0.0089270793728536437570626366439207 1.0089671644862324791962861450643689 GT 1 -424806169162192033076.5964473221936640731126804640163594 0.2480497526942799569353731670778451 0.0473453258395305860694862767448661 1.0485027975946686485298829833106813 GT 1 -310602947311243418779684640.5301318561127175559003764328205445 2.9677358225704838196928276186932212 0.0829462250459138712201488584381949 1.0865891661832454850139467716068494 LT 1 -903536214084383450370464858554.3691490543428488735182026420857641 0.9998166886815123168794057909700161 0.0642250685217348316119045136163470 1.0663802892415287034654922608334824 GT 1 -10519238256493647472470752018097.2214005994915169934281884057093009 1.2857896306281158585175298139029905 0.0667854549866772095023885213409513 1.0691201527868837437929373242349041 GT 1 -1665888.9628008471829453026699067002333725 0.0809500836939905064359515758327522 0.0952769274527038775684929954915228 1.1001263792942105917063832688659056 GT 1 -625922041576.8417392465007815117360992261486093 1.7722356252897655001454177134728998 0.0791781397865248373076642303630739 1.0824886813985372171951358206055864 GT 1 -6942290594518293068758507249232.8652216246095022282249437747469058 0.6588028128438176759705729192011719 0.0647613297046486850172796545800995 1.0669535199193707371792070925518312 GT 1 -92195534356183.9178805857859946571906512867084624 1.5782310294037706504180044792248676 0.0013933931541449441601852517234677 1.0013943648291076668662445060049418 GT 1 -14736833.6782641523123172064703205445565428 0.6028463211870574914741570353237705 0.0042993502992068849652012036233805 1.0043086190817399430637523767440061 GT 1 -15413783983171899.6807744307878530150250991045362558 0.4768625021612928225409878647924482 0.0299907484782796136754784439852642 1.0304496698789335222475437230226938 GT 1 -16082842.1838512956733845948037184834339327 0.9169408580075610613506747992754209 0.0642918608266452523015933864027155 1.0664516682520965344548455854230041 GT 1 -22228793461001.9337661781427742764087417123519276 0.1720193328585049849404135390869989 0.0506860557195057847776997286439646 1.0520157191887892228115192180234981 GT 1 -3588528997666840780782714331366230431926674.6567417204889127681073555499563528 0.0329367262663247126725945950826765 0.0137130171353818377468826948912342 1.0138079090565421762603433645791905 GT 1 -9806635463110788188781516751374284454221204.8532022682154821008914943480142847 0.0920835115007618410269651317063682 0.0609531698267372012538589823006581 1.0628899286284691229515734779063412 GT 1 -1964.9074013277771677447457147956557128 0.8846319187049451184407348126456884 0.0204323314805685794189652925221536 1.0206439592268346562094471329118977 GT 1 -22.0087020333993096526913671056459655 1.0119601766114239828472480639785082 0.0967921011981901344679371034917171 1.1018025208330541812855193927865638 GT 1 -23761773363839066938998212280.7373901961318128303661636874952796 0.0413194729487268492802875113586723 0.0208576767586495370640323356355909 1.0210782708774170343919353039314844 GT 1 -797343282313402592322962245478788.1709329474890603681404049851162509 0.3558546518961169367265551882480249 0.0340297311619312814371446897221338 1.0346222228436020565718629150162814 GT 1 -32110586961551200812.0932863456174493268976446027251006 0.7462310223351033574371962978080161 0.0190565190195884976575206658325278 1.0192404347560047289785190912192163 GT 1 -797045926761689012304323.9676880301458800651539370612134230 0.5301364400596119867581081480595133 0.0571960684361901210657541601587294 1.0588969378357184830009763690078751 GT 1 -36041087972853.8211904692481154428848237552367033 0.2442651878769891128496255005436917 0.0991354611698554938917864368459966 1.1044003780373457110967689109246053 GT 1 -138426962.4511507523791856643635950691548941 0.7919958528391383915567516987978470 0.0505890772210151137268874799705082 1.0519135680027406725621788064440024 GT 1 -18373.1920969948899675624649189251653016 1.2467901046441086107126080628820990 0.0786984967676179941755239460527357 1.0819679312259225121551794147251424 GT 1 -430514.3863142378439460237693340858097560 0.1344718774573891362563777358046502 0.0363173180562960521169739941708636 1.0369932066674956591394073487680601 GT 1 -43282088635754659644674.1159814720479382870976075906336849 0.6323742942785740948162558683784079 0.0035098904108034044167216794245862 1.0035160645273665476446294587153560 GT 1 -196536838026232152199124201184330311.4541972105836479400097244748129754 0.6885949031446821519208889639406247 0.0056368894755577397162157622065623 1.0056528366937442608436925404098141 GT 1 -222.0687085398116968189305629695594494 0.0990593399532459935673101318961616 0.0310202512314784311278339984144703 1.0315115664134530421301934295420188 GT 1 -5309.7211044103783110527224386711400376 1.3450789507156643664661919286390426 0.0704529787356198417922369505160158 1.0730578854031326652094598885105164 GT 1 -51019864460812508196605367256696350883.4143682536677559988645307412073164 0.2382666480852178346569220942474854 0.0719002309101215391861318167791449 1.0746160421795726714727194888261400 GT 1 -951669688745104798838705919988636617328662.5101708719594907685910147061818561 0.7088421995044792414700133625588996 0.0400364429568631428205428419236887 1.0408599566542069258116241210799220 GT 1 -2626244161.0138748738417590039503246511807898 0.2140393788334499313488863105279663 0.0716752220329260108379279241735694 1.0743736311657190855497159394378636 GT 1 -292755265989780356889385.5517883766250980632931029238748322 1.4766750996714427822065522926334038 0.0334859950728604670983606323648091 1.0340594900847371473546010535222369 GT 1 -95895.5257781336428767918431520550983721 0.9898821696574395303178538232102397 0.0751484400641598256474190395685955 1.0781220300923595950014136531634528 GT 1 -473056379455651383299250517346737694791.7545146027476287418111122275454550 1.9866801901916562504814556506080644 0.0522137856528645262678562200357643 1.0536263144508868843619752297890655 GT 1 -6035129691812555755642797892.5031074435214468395194275984613486 0.2075498308248754603405694771497808 0.0684915850799415084299152716965863 1.0709500552506928744421472997745999 GT 1 -26.5264503636383261017698531710343528 4.2194441292510792470751503738769158 0.0928312965180648552839066135838811 1.0974268445292730456565156479482253 LT 1 -39577909405632569900126561.3033024736488791168984162002907009 1.0610712668665410808308528074944971 0.0759985025486796066923005448450177 1.0790415867234539791255795317926559 GT 1 -43707389031840231975581624.0755926358163849117640391893388845 0.7271342833448597045541810850379878 0.0872563072143993265896571195334248 1.0913001685928616249467546379897958 GT 1 -170249575374733295503223253220743486.0471578687282031018763176959794618 2.1141034229833143299701558775137107 0.0993137391078551787677531622064569 1.1045982941200996439953584118734887 GT 1 -786276259.8185523834833780846450484229564118 1.8312345268732005741417402105653868 0.0164502922819134495570587869539017 1.0165871007748090613270926735784218 GT 1 -11198443499826215571148478150128.4896338878972676110356949393379115 2.0585733727692027785655444944313841 0.0921976188184461335456658076323808 1.0967285659388080325409944420540411 GT 1 -261065.6759349036874283111029380191102442 0.3828920843500412380592587119346772 0.0646295717895559965891609578703586 1.0668126482477683412048996109909365 GT 1 -11286353506697761.1920423537279201066997538086238903 0.2270254620037233803044717123745802 0.0673477216507158898270115897324494 1.0697228396174955775748065920065304 GT 1 -63144492003312657266370348410564531.2860821293763429718218481076685386 0.5203678605805445709788848509961286 0.0692061652265437109815989484504834 1.0717174711540881923330743101826104 GT 1 -396213.0272416614796204361759618418602689 0.6541028416073352674822932788365538 0.0645377556185262622551599549213863 1.0667144928408753818801326014285986 GT 1 -72853291429758.1055999778450546870302921485214958 0.0414254300333827916798545733268882 0.0001779287632438382596314848921517 1.0001779445944441447747980875883808 GT 1 -17636328420817873215918124588232.5406583451023730726113512144619477 0.2877161029373494461034540772959514 0.0272766631047531695603275176856062 1.0276555775211524025467258213514644 GT 1 -10798377980.8464786398732590060475733822174597 4.4903473419981125661002729668940156 0.0446984730901113219491986977962162 1.0457282533510310546043268531167976 LT 1 -34645144928896411191425102853792805442949.3073123880774702410637480830814471 0.0744981032063001094609393608695569 0.0640792408747350170853508096040739 1.0662244651425290801158443725772397 GT 1 -7422890623974436144710807882919153.1833862266093811149621127518223570 0.2006638651857707995495571927175420 0.0440013411529351775831544428027900 1.0449987688113591099132110487127045 GT 1 -101795732043.2143194290046251025561285327423794 1.4981141869456392899754887611973357 0.0186721634109134456084259155526919 1.0188486891190491445767445925436040 GT 1 -1179154689747586744485753011173.5235919835884720392777622691651610 0.6550589604614265923844051842466762 0.0997243381221190121330960900702335 1.1050542715799078503040179847052351 GT 1 -669876830764802809979052672918124.8448223807566548106973850734122487 0.7376394835651471395548649279937303 0.0471668541921884883029249373246318 1.0483154737545540969021120623959785 GT 1 -177629323567702430232435276953863035.7247174671432209338649455186904415 1.8596616041051695949045248844659377 0.0137802984770494324262937588560127 1.0138761281832262285827058055685100 GT 1 -515330939702641447372283997066335343359.9716657424604030235704594956006328 2.1557773475565790430138760401112047 0.0380473357235935961166988444507447 1.0387900350609436348790871236386892 GT 1 -2442612912268507188824697597.2924739074088919579781086650291405 0.5757853877103795022048647325925533 0.0377493973097352932718555677822429 1.0384803604840898510007923122787519 GT 1 -599832.1225991642018801400845220340695733 0.2683627483349148497886394007761019 0.0979619329966207876181651942408156 1.1030985569238004174589654821606214 GT 1 -87.5827379420487253190917212928983846 1.3533293194429507052516415697685161 0.0998180412223027120207371268352761 1.1051583596730607253039783066018107 GT 1 -754495508828070062282287063.5048066796840413922214870998290204 1.5751643068910013434348337096790019 0.0106233583200435887567003260583547 1.0106801890381106055871965685303291 GT 1 -7749052423894853804139459.2786487530133855167955762927699170 0.0678338800084510021969370618076388 0.0429282770357825662805508953166507 1.0438769447113243977656358452601170 GT 1 -67757982429498.8222712210071581026404104713261704 3.4646756943294302747868195327246435 0.0460468393466544400437039237208931 1.0471407065868354642003328802405139 LT 1 -8967645274900777426735478920111.7392376505496306211799499536981550 0.6474115839236486423765662705522578 0.0981185151256671846586965149752726 1.1032721590440021323280389642817581 GT 1 -2361811572405018.3663765827144912491000573850208489 0.1219681788839821558541090448160190 0.0190946944416907062460462967504872 1.0192793525588129460573700905423934 GT 1 -142461797637950371301173.8851979486723850534015357402813740 0.5978905157946069854301141100434648 0.0992689187162408371880021185919564 1.1045485328675856070787692931998376 GT 1 -94516436999366856970612.4255627038527409980118922742425807 2.3175685415029833248279834527825605 0.0689951871115244861947712693370529 1.0714908321282330042480380583891083 GT 1 -502775721021806792547720712381433421619.8749285826518028831334508493095075 0.5163415943249763250468602524223283 0.0943276095071137712594186766968852 1.0990776382296417636774023327060015 GT 1 -4949656707261539254429.8497112629138098959782698823021175 0.9686449414915318837935064157684936 0.0788524291973265137078417575393635 1.0821350266775537050776036104239781 GT 1 -909673497384106725148294012029032625542.2221529844016731441969749547296807 1.1379363205581123570951505761169247 0.0176196893447802580723224402419106 1.0177767638755891046368781393894599 GT 1 -170253112390631657.4553469921618182233845235528102250 0.1026241258080413560024477284615885 0.0928631791868128443560435020031194 1.0974619903945359072844596151179703 GT 1 -254630223324268991806972313840984699.6876063226769883250014051684830129 0.1902670091499689657060975545540028 0.0394775325835569114860105459929306 1.0402779056713130154141984543232662 GT 1 -2.6565113355211097080270046238280072 0.3945368993877900636690636467902395 0.0315320188563539362933781173074595 1.0320398569359552192758556557231281 GT 1 -11926731489259219545444206.7385184588295304748102025491809464 0.9572759366201931882953456271334182 0.0608793470023356744768294826237674 1.0628113170827991825830133237267485 GT 1 -5605582761162956468826021339503.1624724786269907659830602231742250 0.7350368090122038023552631682821088 0.0281352659077657179636560193649186 1.0285386466622401677865381071659128 GT 1 -148876607552143507396074157319.8536453652978025515981334222967854 0.4617217371829764630043758316712167 0.0514759389562651110977669674256530 1.0528481224604617596459026091174434 GT 1 -44074238471499411143.0214869610824998167493709060080454 0.0685513881450616992073734033133640 0.0563267166464426363207298510720823 1.0579752708848390892548786266942083 GT 1 -5688457479651076237245766794743466.7509990632246127848760615577638669 0.6558254536971272224910033209062988 0.0554890349190534197307617092630208 1.0570879827051593077836497583264952 GT 1 -2.1920028589127739011678661707366035 1.6132549796737214716607786760028430 0.0530092593221018935560019566531631 1.0544659633751177777412462143486585 GT 1 -100174678944001841278517480256345146447.1721403847941132814646655436569540 1.9139192288736239739963643216403551 0.0436051027056144465039217916897473 1.0445843787380204955090927221635001 GT 1 -7472135683666800191744189370938838065849.7511646498621497529268442711352996 0.0640590266730854534079327409975944 0.0329793262238527710084149466447111 1.0335354044645665919812022799211561 GT 1 -493373749.4960894712056669925983861884397024 1.1507198680793105018222883985763432 0.0956988896749995385204204281640105 1.1005928874083014893947107000326066 GT 1 -1159079761186608072193892092359947793.2231806562729501372189994908386707 1.4481943421766796647994766500613580 0.0048237919000216640453727539157850 1.0048354639349416420501748491972047 GT 1 -1602713950856716019234144737937560459701089.6194958348863737897493688416447245 1.8365969575308142218826736721193484 0.0352259245356446805355161373471527 1.0358613237429970346518008691581974 GT 1 -11885382548164109702032701.4335183533334584403999865869753895 0.8431250680448079584770169957553194 0.0074063986557615477297027382859543 1.0074339622083912746664418298569897 GT 1 -30101285070084.0932646317515458133616458957196761 0.1814619204624302119641237967790622 0.0781881967312709886599047914033654 1.0814141941902380873583361777103388 GT 1 -8007432449798267357973689768.6648706132125711973640861313789351 0.4318815984496567239160821996396031 0.0743867380481990606417818622008094 1.0772987752539304467863496569142174 GT 1 -203670644595812673477809342093943.2008688440473898409626769634584730 0.1905510946150382789356543951717786 0.0546507713916594797678632328518031 1.0562008656737856714441963948282042 GT 1 -63.1812755224769551381413824620549188 0.4290570694948860802323846999699600 0.0230881698157542196044692552068562 1.0233588764730865995697440449230447 GT 1 -1185986351710994632333797891.7196374485007734968247910017806922 1.1888040237939441739105734666978730 0.0056395459209013362243399189927670 1.0056555082016309063763601050923432 GT 1 -708487947047172803707007.1922695052190795939133142317145961 1.1311175310090326329991671391161299 0.0067933500810731226524823313103679 1.0068165299225668256752765626265662 GT 1 -1664678760684497715752369597.5803941397079213236375373940653728 1.8445976903211682042571494992447767 0.0955989416196829598277897590426586 1.1004823683221328067756371953564861 GT 1 -80696072755655363.8617821847120133033585310239906063 3.7757439764411022712869650833956337 0.0894926063454563000490276621058305 1.0937532594141185341360656056933278 LT 1 -48020280508158692650217290005.0075709025852141996132720642243718 0.4463695954333727604502458129188260 0.0528968351498852713757441784573878 1.0543472531337506196488451657065733 GT 1 -358405893547655993850429.6511478441403507614284540920421434 5.9325579609407083706367768666708929 0.0939245993199922231495090734871143 1.0986327526934405762960962150293272 LT 1 -299166661958715096392920297819686.4793549165974767086495745471056823 0.2664474901346955422374438451148334 0.0345120464520361193468756968210050 1.0351216540966730102296483465505641 GT 1 -56105208.1619696463734939262974408131518548 0.2320344224953725599835003012877963 0.0582538361571070072461677436629799 1.0600195058529599987107104081640304 GT 1 -1107319421386006529157641508.1950457354436078182992194854948692 3.5457041131741006654145501199180112 0.0594324601287430441699734905117153 1.0612718200908533252653795451208540 LT 1 -89864.6634607405003128578049673287271800 1.3369680212519889270494510174617459 0.0905317128451583660452077844217345 1.0948951500707549623765888995663122 GT 1 -424554145835175654674341019363.0225944770291620132830075025460089 1.6356678352571341978809013642237042 0.0782603786825995448182164997991194 1.0814925016899940500723927626966289 GT 1 -59480230255273959187801080760683684608.7626531783513288548658443049979218 1.1153606941571266512965894066567696 0.0777929926014655001230780897211165 1.0809855606713497649184454907476136 GT 1 -55951810.3364969452173849900265505469184429 1.3170091831050073371201584031833850 0.0182478619163218895526156621049747 1.0184164076973310896018246129243279 GT 1 -22881887941105243892781402547542815786646876.6809880479996178532947508070051007 2.0810289209171283158409455746148687 0.0173219161834898268775378541259608 1.0174736958706816038325790987369242 GT 1 -41439359507483094.0524433428189065757775709175736646 0.5876206369744598226150805390711036 0.0929070479190254536163935701059115 1.0975103511180523968761259015229643 GT 1 -428620912103195924228204936.6337643111963101486044395708157963 1.3402687709018908836148529354623288 0.0465318964713983360318294231686077 1.0476493064900748708900016469435974 GT 1 -504094465043731611605236390578058997171749.1838311834000184540605445117103134 0.7732277946973357235387472800258947 0.0023199524735498895711242213905444 1.0023226477326786177393061614675708 GT 1 -21575544827679.1324320690661429761824408494518499 0.1455949485502352054779363358378705 0.0709323453701773019838244184284266 1.0735737175994496355888562673118114 GT 1 -27287.0673821549486424273481561040670228 1.0727645872982324002633868422120047 0.0536846283912332331040289926639862 1.0551793916933324489841649175998524 GT 1 -9691032876303833.6868785848005637616340795132102696 0.5954114773109656585888361719619043 0.0074042971569662657659296765465820 1.0074318450311620299288272787281790 GT 1 -421.3365505048789010130029646371300708 0.3496892402555547080513503282118108 0.0028357053081607300224936436428792 1.0028397335375079334805153824473205 GT 1 -59165365561212934614364475.5450398344182968301747179668824432 0.1663524866204239535018700070998787 0.0371135477109557040669147808313155 1.0378197845315813007500105129102702 GT 1 -11721949034441373488884155601291189289.3448650364927110115697307078711817 0.3944353584299302921372298180608606 0.0345362462100390512432277072828746 1.0351467192061858332892663194184973 GT 1 -91900779953420893427419288.8855317571117880303185551981197362 1.0547879298612242581455302914414623 0.0100268396940276924339891530443028 1.0100774470230540514486236748911022 GT 1 -766.7866591610950343581597810830499638 0.3016386931644888785382619626435532 0.0588784536009755539063240718651642 1.0606829804703044841671686938571190 GT 1 -1327681609146679656.4077362580801942654274024516771733 2.4474671535996877082543565954786655 0.0782286812747315732730453493092808 1.0814581136023699413517672305954413 GT 1 -45801079993.7662944566361535048614593974420121 0.3589187651555246005015470081005972 0.0963132255381959013933503073270534 1.1012724670581529099500284271476181 GT 1 -642834208840425813660648087157106365.1174988389802497417330084127248087 0.8940079741483537054193687354171293 0.0128875417009686495922911128402041 1.0129713065265723216307621478721201 GT 1 -460928534.2616885728449315588156499874040769 2.5121714688456937735228178959122410 0.0474046850941010572660960445407225 1.0485651088450875662234330329517521 GT 1 -151298730887.0288562051482428196402299663065841 0.8188962374296168839847725241901422 0.0416440408005352927110765752416332 1.0425360050980567013502015610328129 GT 1 -1337.4393610323821417833577826866027945 0.6206660476357417384105099174743192 0.0767049316067330309005834244020640 1.0798064115009702247607536087099459 GT 1 -8463952944716311774586908199153206.9406519739603664553830637020584356 1.2070569294659153080451999890479980 0.0694864471372330964771136473493078 1.0720186378659055536463332599578611 GT 1 -40083471028551544127930296426.0021738829692221145810189391611529 0.2254409551182371849982518672040602 0.0318684702131634564979731775494915 1.0323873230571595166834914337254733 GT 1 -514193692629762646324.8369960187774472551208422005201174 0.9926655934472904877743644646834456 0.0989618859141026057367949746833799 1.1042077202863746783625743102321648 GT 1 -15954551361824393358212198343800851676457963.4688110849124569143716571318776925 0.7116100023916915493319115218873834 0.0225757959263276215484411729659314 1.0228345307186366222113765553415430 GT 1 -13958119.7823152262767624243634573042799402 3.5854506446786373394356441768978898 0.0132280839534958749641255365613965 1.0133163543524043956742478557689589 GT 1 -245158328172610680964.6426799634369079002552501187966450 0.2955939204592363858423382694824140 0.0142882744341160344817983660304792 1.0143913347074742458537966075776756 GT 1 -1180439861470281936902685070.1929984072087456478875307253328189 0.6836925909122806144232186755543279 0.0805611304291654406869048408000608 1.0839917193981198951865262345453261 GT 1 -257244300143334876385.3561378369536586079684997783343862 0.7279807418405873146547393436734734 0.0934293580601849209018318648692494 1.0980863235942280760158284333898758 GT 1 -2530.7560108967384084969353946788994062 0.9272119574386377060707641782809037 0.0130440409064743816331337482803831 1.0131298615234050102923500302706326 GT 1 -38472323407994458781064866295.0527273675192233944507907782480568 0.7671602848860456313110907485781351 0.0184919047537304559820176495281876 1.0186650174684887286907620875370804 GT 1 -8561590790442443853.9532835260609857341043557427086041 2.5146971765665045721716368728208133 0.0422608108831826410672911759209256 1.0431797832574983467493167016573419 GT 1 -1108116707538164727242977650450809855635290.6797360056528961018684163867166710 0.1856205941424175391097010110333657 0.0033688012476419115531070313695559 1.0033744884348259943250788614341571 GT 1 -31692188130.9913721881916822338425332721520450 0.2303596786001802712702075608857221 0.0891416943772536480343409443884365 1.0933679310062279231728913787975784 GT 1 -834684598671406708275301.2080813521528720651011671943729527 0.4586457045645887775664389594739258 0.0165719027717474543116855715075343 1.0167107528970476982620177385018708 GT 1 -57327052704738912470.9639262696822765653434960609056140 0.3225169506719614970938722525460147 0.0520209574415066290909166886216919 1.0534228839772873824756572987993410 GT 1 -12279338409243.9836190087804390293913452453748536 0.4078640076791955692500143997001813 0.0877790529675918274287178059429114 1.0918730517666874091385272746708352 GT 1 -92025761240441497040161355911263.4016172600127247185800493880185893 0.8398746355480082019517943884991771 0.0475156989501488478517972405431377 1.0486816539545346092784207182837885 GT 1 -844228377094968597360304649672369807.7936640200605706846867584043774820 1.0343826586729490869315401458073075 0.0231022323203836942876705522723692 1.0233732714321912045651713711282332 GT 1 -78696219537928655471588746485575856824974.2879642204882139821155040165893035 0.3397591189176849484801520737155540 0.0902666911907715370057712886834812 1.0946037896664439602049505537037155 GT 1 -837459.9783478375903080375127318749732733 1.8770925908208301066214686349822066 0.0359687477933725485599313268543533 1.0366315655956048758421578245008580 GT 1 -148796.7177861146698756291396788820319651 0.3222546914273084100935175342703437 0.0621723593254332669755794843237328 1.0641890988064605265111241526502602 GT 1 -1100734542090675160630181980884857245708330.4906129485238810902732643052323971 0.1941925617746689778845205070425245 0.0892997288131610523546087372299041 1.0935414466299535151263907949954982 GT 1 -9187.9640771063153267468697604827047099 2.1421287419038531997883863653389435 0.0550498534689924460151301816914967 1.0566231078736307178609476948804210 GT 1 -1284229153.2011635951489415721006381715295905 1.9773324859385113267557119193014893 0.0194399721455629311250566385900417 1.0196314135425651495669035549949503 GT 1 -656614368055426.4038054475138917720393319916101053 0.6983088805929790473221881954862917 0.0582751174372494263406087292858063 1.0600421037900867066063891918706235 GT 1 -146486020001053476780127.2715524795376101264465785759442985 0.1013000504565229224171947496126635 0.0539009367470247727920577899591670 1.0554079973864076828000504276303505 GT 1 -16198031.4870567524116019326531794691898807 5.0464011029793690226063551644598337 0.0536523681708690813985219898931335 1.0551453019263652949727364782687811 LT 1 -2521294751388325689983.6032059087222315621955773728631144 0.6640315544799867947099867328393832 0.0548024356296312937746059438897327 1.0563613105131944931847427927292951 GT 1 -762973267.7881390976861790611203597887529478 0.2500111100482875723178704386050831 0.0028211553378156434013363145025567 1.0028251422968550761538069177615593 GT 1 -11786987887436979676366080113905882192244802.5153842900245862475107798878997185 0.9670225623083892978497299570448759 0.0472121034777961879805506475704900 1.0483629640840698514347350654071891 GT 1 -431219.1914233991926283824596191467100467 1.9846992280733381798746641892905904 0.0871745052769659642225178533581833 1.0912105505843546490453440884914692 GT 1 -9948446409583807363583907984919920.2933288787135820911101051616104968 0.7954722808548290303363647904342329 0.0651751951687951886517367548846995 1.0673961417623275226015529678460171 GT 1 -169.2659874570209512146898925466513639 1.8238459517834112198838446938217662 0.0906160011022186160104105384974340 1.0949878329760869993637880681566399 GT 1 -218869604731625023218261009778176.6196825914578146991722606855995845 1.2755159686747355914766636421817414 0.0298848042788432254637703246558568 1.0303404560605186760409100235094262 GT 1 -11.3572876986321782303406617109917401 0.4198804082248738208860937766823562 0.0458917414884164719272187905363821 1.0469781354483786714559144906180469 GT 1 -1526493710271424967626655229356816592.4011636077651683384524485836154507 0.0432603749647733674461884753978580 0.0713813852420799241724486283429080 1.0740571575516609412729676436433897 GT 1 -92626093225361197646798105087.8209495953990401121566060481268084 1.8699506862143779571781429189347639 0.0800093346169198041356950545027119 1.0833917553132642566781068933346909 GT 1 -2854413480646544221184439538.9905287789213342294704595026640903 2.8380085637179391651674537123505680 0.0572551555487341568235087353311168 1.0606977293795989457428944899636115 GT 2 -3895688656906617184774.1948033435459996460930716339199945 0.2709524884632834111424843450632554 0.0813488517485904541143751715026675 1.0848488279836746753570836289613633 GT 1 -64641295718777483217700675496.4089428313888665286007280143653807 1.3306375916399569967371402308070782 0.0031009542376368866687336318766173 1.0031057721589091867197800177140634 GT 1 -21771495395285953813745.8273320236647304302718407105706276 0.3920092427628116680416664251691613 0.0675967302659322809923262591288950 1.0699898650333893482733037816645923 GT 1 -723110196468229.3101486420017281585438732861710979 1.3729619607565081384953135354906341 0.0916295050925872239561614626408494 1.0961029495650935520834308582047185 GT 1 -1088062264905260757697702074.4045787860266505378526012190653368 0.5491866986447313298969569717195335 0.0242750568584463426847056917271884 1.0245745528396056406716414700507601 GT 1 -1178659978835216862019361016385.7851651092668195107735675725290547 3.0249060120487875345484071897937412 0.0974269100831695366084827176807322 1.1025056059968648947509484206885889 LT 1 -204836481810884730500962137188974.4167357048007082761036126667362421 2.1328817412012978238613386701534966 0.0541762070167825406370210297492923 1.0556989926252387657527639329638951 GT 1 -230712369330124311028165643395.0962041379939652011173562027095941 1.1542676273028228945936391456830734 0.0245541265433042214275090836540751 1.0248606064074294612651027639040570 GT 1 -53045098534386570299.4145451839708733863898235612815593 1.6153015148678546679093231637494949 0.0689720370929589880122637945042902 1.0714659668102132389184798310967748 GT 1 -12068.3251154890838936980488998909832509 0.4084356055436793680504676624709042 0.0017038795801636179601314202823093 1.0017053328339897540515445888448040 GT 1 -124381798661663664.3257335047398067540341891323552696 0.3033882385038994973448207710560441 0.0855301573123394299635106915167262 1.0894107885263907104342992456309544 GT 1 -13861430864606836.0150952757193090435329743504326990 0.8305825948310889477949259538716062 0.0655296687639543395310371388550871 1.0677754008665413156549962373276013 GT 1 -4.9051444472757739969733536953946089 0.0647070810870492950820495563493576 0.0487848835940160607137432951844642 1.0500150417995612323025276685104385 GT 1 -22901004896742532785109.6730574813591397658211542138415623 0.6860986551184449478907636252409211 0.0286531340561542467616239177565454 1.0290716489977954665651438985717406 GT 1 -39377011906136204880065389223.9380131220329161126027743262664364 1.9926372404597859397483366583855403 0.0600440726114288988157477910308926 1.0619222905740981801765314354449195 GT 1 -2293822758042748578.0700979288988672834798026709418651 0.3189825858389577333114340787903091 0.0314251054306346502981401355264288 1.0319294686454652643396453598261335 GT 1 -505487401162888624880947590135.3704362740971486517969197232984148 0.7455680224368666370333336452132256 0.0968012280821025260109771492376844 1.1018126258487855867494328625433868 GT 1 -6234014748162364108720111.8131820424283217337452692136449514 0.0870362259612498937777149737002579 0.0702123790102290961805890697713230 1.0727990834411125602623245766873619 GT 1 -3127384303533749656249875760463109.7863989322018440268343637597995173 0.1584084470962395642865754496100652 0.0888222263466115394832464502715121 1.0930172595375896189605190897245258 GT 1 -12.4064202173356251922531516012967253 2.1622134152278412400038685945524565 0.0734580509118193302616511840406565 1.0762959573381623157073748444769839 GT 1 -12768535524051147401729961.0020270338094786227263972625332705 1.0309146571075597523373353631766359 0.0053346115893842394217824263050882 1.0053488914373917784766296315715518 GT 1 -1819908.8306925269876256020923740168852322 0.1114771294421457256004657788344358 0.0320617927297572871175854076147371 1.0325870292077553175303188682569883 GT 1 -8898069685984554558741241178592617.8318423280325092083398870595152601 0.9504250837664463038721279536542691 0.0611250452410623174298472610589972 1.0630729771624220290337933963028271 GT 1 -132073674210688767716218670281.5212954360720204480532353223685876 0.6235006267765028025607188870547314 0.0791448584472473922547472995795906 1.0824525389704685058468065490818579 GT 1 -1571434767572761684919731.8043171280683168260630041122949418 0.7408947330879177141090499253226083 0.0296257143572915397550124248762391 1.0300734204227792900383663830096642 GT 1 -241833.1187825532728596976733099502642120 0.5127534294434469219635275318734882 0.0682480047116598017218577645813708 1.0706885991833232633342744761779778 GT 1 -794782.1819991041036080715167433052860452 0.7256110578518956755775115592165011 0.0067462393063690292979085881272627 1.0067690980437725250240962110711854 GT 1 -29587.4978158164162326120013719397005540 0.1195163045192042700751376888993335 0.0228151786321219873161768117904777 1.0230794724986809785702073350949612 GT 1 -3898680474281616214609976089850.1858091752816106224890114177865943 0.1728103988044492164888488508721317 0.0772088182976805175068960425926541 1.0803523087508248752538919113289496 GT 1 -36629833439368699208.6073831162545406099573185929524235 0.8131996333373539635106325632568468 0.0162744204377230446444883831169913 1.0164083033835176097956850897976287 GT 1 -208388588036303030020588227.4240572650559862377601472883095831 2.1113999476642357800690959080123519 0.0717841423943653800597512038664580 1.0744909680658411093113063238529741 GT 1 -45997754144018020470297939828454845828.9600523268250840983073117658844539 0.1758396210211919908957375779931755 0.0715618318209907570508080507175312 1.0742514936442745019900914754476648 GT 1 -7484477839634154967658.0040453735022321470104164147505577 0.4781475731600345707519637222952721 0.0232556040144048563526424273685088 1.0235302824725840933867599031999280 GT 1 -25362431.0562321080676267622176944389149009 1.2281690853486333695010301920750426 0.0419189621716858007784834824184895 1.0428229139538790123894058472140883 GT 1 -52697400182747669511481301661616716.9414136001894246506022617524984943 0.1313004249041460875249379999242689 0.0371578153060594393262110001735214 1.0378657594361045944252587068596499 GT 1 -24274.2048044954491179974550662678308387 0.8871393591518425872262446464350073 0.0649392962905999014483265240341818 1.0671438280475366240859685168245323 GT 1 -42.4740341643329475868223239328908310 0.0460874536897621338357810647310409 0.0120264223504521677176746066521556 1.0120993248615652785804834948196416 GT 1 -34686683691742725769891457.6354974242993924984253456742936079 0.8451940395330347392158107808836887 0.0334595704581322664238275214636687 1.0340321503324170268617892915042778 GT 1 -567979340428430.4274337801173934709478131394942043 0.1291333130221618472874941026096996 0.0837044982735497413409366437771021 1.0874163661941968014582158910633232 GT 1 -10311355575524741135344757312159305152297.9432791993034127125859120239310929 1.6380872323508141123424521684859691 0.0344488557318084165837135892574861 1.0350562067214005759004670720758513 GT 1 -7795864843575360874968.7835306310008017635364222011868342 3.5635623303718711656216003656047814 0.0902400382205322902517683783635286 1.0945744925311679065582568716447891 LT 1 -100435622655964724091764.7375875443649694583828230722628202 1.0367437550460950360886286332161915 0.0847183032336861461250696086614337 1.0885233957690427155312104800834854 GT 1 -12193083.1570259155095018048319442715298534 1.2948511498045689646116257029677508 0.0805820458795099667930901325806079 1.0840144677166142544665726074694778 GT 1 -414669593234438955044789.1236006264417027865351128391085825 2.1173431230031660782671625402745685 0.0985964800912602249406862827999219 1.1038022637978464352265001230539206 GT 1 -8176258294887922707429050845558726174.3244522017591823626743620752529447 0.0271934180905511929042379343435169 0.0768084170574925329626052572084925 1.0799185005331795700876768803893527 GT 1 -5971225506075710969.3949016000495772069754511480922392 1.1540026055974011961620462085013412 0.0546661080982511771923248840617530 1.0562170891291343351635431693938611 GT 1 -7075938439600274845216619173.2135393003661117150894102301201507 0.7128481856295018186731332774052935 0.0468932007718656612454015618120816 1.0480283152604829512555955319580727 GT 1 -375461626609606851820028890906084718.0544761776157464833324159417885257 1.5872553913124899137097685202366685 0.0478549389992565397753788270863678 1.0490378807978820710065943529672261 GT 1 -12755541641481867517925.8875664697259918493948109636564324 1.2531539566720810869580281205565495 0.0636236115599978814122545300533825 1.0657377589331820546930874424777567 GT 1 -1547145329823322.7015339115385195101784759548111516 1.2348267490850973383013062443745842 0.0401983751898299778314427613422349 1.0410286566961511742467227553570905 GT 1 -19359846268327873413701740305121269146819.0156568243034790425309347570693147 0.9009505100162206498403971519011844 0.0596458484745856536601222482771358 1.0614987177312326436991529526369997 GT 1 -631011773912838538571592172249.7637207555585347120966031928606633 0.3137592560890027675328331931405146 0.0737737434012638247395487152120396 1.0766367366018938825575822798031826 GT 1 -43123223800241977065239780740531178.0682220874211435316020907810916260 0.6145198744182005166053815313966791 0.0846307915401142951473376664380471 1.0884277885799399980768421773330698 GT 1 -10546065813196828800283173379325004134386.4427902283689027070144875630625328 0.2144181498370528643682502349800963 0.0452555595575457766354624117984314 1.0463115759440502206230123949494579 GT 1 -467048000098010.2419568328502206245719739676376927 1.0337999485538947525363259002302938 0.0015309327029770678223945045646350 1.0015321057778662667221814793377112 GT 1 -1844558694366697687376443.1294986292334676624032206106866083 3.4075307259724222514187387903823927 0.0400287237494487822079629394730879 1.0408519155402268645766111481299877 LT 1 -2294348947083190301811295132640.9383856621924044957369373249305284 0.1218345055722665820091286136131920 0.0178650647441065834148413514908989 1.0180265714564801902589641140679577 GT 1 -192516416174589.2051805699140315001974141593715319 0.2212419816106218889426172731910702 0.0060451221899191872564059609300077 1.0060634679131898766485006034428531 GT 1 -230053781983066308643648630912281512279.9613493992790267242576675097587747 0.4640476138552778853763808227367334 0.0041579434385545021536495882491377 1.0041666117218722624780086706877740 GT 1 -11660731758160403184043535112008.4957142573887750461676163232734124 0.1783076865607589115903450037044612 0.0700445622465693023397197648734569 1.0726186103770230585613335373067369 GT 1 -184639.7022787434705433418938647117508934 2.2042992008254967544530500693649335 0.0351616631089506805629475107170531 1.0357947182150616961946563564569160 GT 1 -504010253416301677822888599970799681.7239187407915572491954404004704199 0.2603676152423412537432868000206832 0.0659925555410554660254938487393186 1.0682708702722702191057577939762291 GT 1 -44891383957491587223670024753901361963496.7093471169435427616731146983384450 0.2240094068481776182880712871512451 0.0699713229741471614184728419879361 1.0725398577985703289020911362678706 GT 1 -19791602929450014875882788.5612680903782992055040252521039966 0.5837185334054409494505141163526396 0.0911384702137128336935598618316544 1.0955625288767580579022804524906849 GT 1 -39620064556454099699562149617772.0420217406089255177515875176536829 0.2289298994589072479204494458513213 0.0867481233371268385450273907407504 1.0907435583809910381319080444351978 GT 1 -617871180540400.3290932484549754535332555594832290 0.1216313790184653567694112506646608 0.0910809151557403365935182012259586 1.0954992043396511113712011418121234 GT 1 -5152768423282766927.9421867170986370761877982026389270 0.1001394798187324838623161194406206 0.0120756495362184250974353262535111 1.0121491525222718684783035884778929 GT 1 -7812131342749841.0607430475728541087654401067632783 0.6862600112333743793581486007219547 0.0283169887351703878112284259453286 1.0287256478083332843436589195822438 GT 1 -1082021521177280.7515594623542754539842115027513982 0.0161555011759543038998929948955243 0.0101846426212640313934876862349054 1.0102368609464715570050424332424853 GT 1 -3309879589563792.2358464976526227188445393907079720 0.3415011823851898175307041060328646 0.0623116026700515422653361913478223 1.0643375841748098803986212246815376 GT 1 -739586619942867228394.5170143804647434815349325292194886 0.9288416251371676552033300206504876 0.0210242192998865793629453823094057 1.0212483755726378136430948305725261 GT 1 -162394290764230753.7239773811816047558593778803592314 0.7924854010270381392951416346435048 0.0008333814296445418152538207575253 1.0008337288850034882793369323206116 GT 1 -2315529045780922843175.1833032027275680595962537812469047 1.4521772166573280115089384060628453 0.0490608280377965104167520923474799 1.0503051806672688976312067516624991 GT 1 -29.5487681816297364556882247366669442 2.5991073506500475488754178434227516 0.0058712272860839441773302614470022 1.0058885307024413392984613711504432 GT 1 -39.5143516780394353829056845654925998 0.2798519394130169943831129765253429 0.0329806934822751700412748604676217 1.0335368183530449382349053054759674 GT 1 -14239038121793862362042421018446072107.2602133419955425226319015541028716 0.3625339532433280658940822170789514 0.0924375387924659400114841279050120 1.0969928874347569283647717888916815 GT 1 -2436696795075742.9383892511073831097819464245514597 1.5377246578906272099159230247947693 0.0599635081180584013146249616520835 1.0618365833206071519686505108568122 GT 1 -623417448961.8738419354563188993762966697862386 2.8212691516352978480497343958600803 0.0194783939447974941172056063752992 1.0196705978361459128085579291357264 GT 1 -2178004531770009404387813210339216566.2719721289101334621628658820245149 0.1667770299456158888372006784041500 0.0402034695864852261465729742133937 1.0410339644702198221102576484997540 GT 1 -856166130331318.8400358779621262044727587750464774 0.7535225752231578094372992072438787 0.0694595850572077796740540541338091 1.0719897702666936335791041248065628 GT 1 -80545723219237785056504875163.1544430249524512841018937125092076 0.7305536064970118218682054268174698 0.0796311101427170391430293537744043 1.0829807220687541652064008296480155 GT 1 -4055846843289024728432485539880230410246464.1237845163278246462911520630524409 1.8558724944116932602047343950334890 0.0679182752494394463564622238270796 1.0703347806402685652328980512598995 GT 1 -69906147437.2727159635532367902128609180649665 1.1618793531618851720213180982369523 0.0722461465352303604574198730351373 1.0749888254906169685332033576993320 GT 1 -354615.2881047955973391267264598597765411 0.5471625038244555529858620201058252 0.0330516207260473347480669190558359 1.0336101672971095644230999701773490 GT 1 -251214859175663451659481939025118878082837.2001478804683045241061003261859213 0.0186341906681227553791058071240458 0.0420246141046383231738189425408153 1.0429331945612259237697107638524884 GT 1 -1014962027307860469778927768994266589179136.1376262109849825261135006236150487 3.0080615798232882639621085229732066 0.0386191387920706461069161688643547 1.0393846309308196426959313436167865 GT 1 -447698.5062811558897421457853247639511487 1.1277234261294798395546652249550995 0.0102987611364727695470750246851623 1.0103521603236546473566064375509101 GT 1 -182.4763756918288934343206490527069258 3.2256323956313085675949028843941151 0.0843198738683024512652243852229551 1.0880881825748735860415184832179624 LT 1 -8103578840978.9296908411012626631971622989512896 0.2458420772616437211786136338239673 0.0847973659288470834645128544259476 1.0886097802235591121930595605343269 GT 1 -24075508339944147459976104068109614972021.8635492862061742810611128712637484 0.3724161291256570263137937696920160 0.0216147994908979147755589544004328 1.0218518209407660309663477837448037 GT 1 -1053411326040544159161736886967063.0149975220720324427975612362434168 1.1568664674678284357875153515266348 0.0069566333470249428362400645520143 1.0069809435310826898472727919183128 GT 1 -1036791636047.8803780340964999635559778628234828 0.1382511360443615728010582294907696 0.0025538163248528997140657312902104 1.0025570828763970731768750180106764 GT 1 -10622370.8255648604321210433808923776752816 1.5559944652671118388117801217817557 0.0456790751285112202703129637295766 1.0467552648670259565631753932967524 GT 1 -203329029201353560157722267966642550709.6755891457294160853106100876430186 0.7083904721142410135363262515373544 0.0048559694745588459023387973406113 1.0048677980025107968471337409691114 GT 1 -2136110650989545412568430542204861.7783275250835778060312145074454586 0.9139141302135763703002925500318190 0.0434362442007540814634624882836916 1.0444078370181815904873163146656109 GT 1 -187327814511.1655451306871667207835199981584110 0.9910217038471678283511215528852828 0.0765454860679689479689484073088253 1.0796337345547439725710358015676905 GT 1 -312192390511600135884296590305798.3569364110456602189434160307511492 0.0210542901500772493703659788178322 0.0201353109023498586544310999051361 1.0203407891997203579465402316274670 GT 1 -1393442610857667851.4604220716471994758882375056073174 3.7126385930602933672846628741026223 0.0544681677883476821984732409483838 1.0560077243835553305252563088990941 LT 1 -845008215159702186.5732282313239080741713390832034027 1.4552761199912617600935964240590132 0.0889298207441119317930640757151757 1.0931353492821314084446467447918187 GT 1 -50004240684062856860460684575959244.2348913241706556613557870092864648 0.3400971511989125551850295095693828 0.0036102044701867978060408800258087 1.0036167369855617904714027409776673 GT 1 -2410286.4930804947754185818435832195107555 0.7604008280064947003066854671470090 0.0978025644257583145407323454614587 1.1029218964257121489558378314287660 GT 1 -28866474437053415522340433756697775812439.6014401763394586471874311377321350 1.2051173746153963096908592842739294 0.0347229239145407197646667908547860 1.0353400933786224579768257967989614 GT 1 -4169862356142127842643235023.2742487901368624619180963655555817 0.0220111174433102464601515942631564 0.0839895132573195128176978268075329 1.0877274659644994862197920325107134 GT 1 -105916356537765302869.0267874388529593743170186505487082 1.1404772682231433054362148593322006 0.0275163534557299304146628331138326 1.0279020195237058235432631592232934 GT 1 -33811390405227493362705127782134925683062.3618345017882227263072221809978570 0.8474093693415756151303106992034195 0.0416996724767782710374602952305056 1.0425940558572293084728741456186238 GT 1 -27670803472.7221032982927466418849083638086205 0.4050720676479541044504552426011837 0.0373736012999637486591190230332269 1.0380898981176377299315805390581719 GT 1 -2828627046577170103031768660891234027238.1247305372668897023271755038938992 0.4991970735071641520054379751845578 0.0742304645924233403899840468486488 1.0771299571614541028928464514914842 GT 1 -1013064791777535909089574.2832272961370805722537887544144924 0.3348864500251385821032383503142107 0.0846812770005049993999984605399085 1.0884829432128361210707826257871466 GT 1 -540338270809290738374439.0812982687861565958120686160303733 1.2811561317442215763231464063829574 0.0106686975859287252698763896593552 1.0107260161810483981839966841754725 GT 1 -946452961457354813842915266343272.0251704986113979765373417883275018 0.3906157536329013628092387756573298 0.0446995234198476840615118641449831 1.0457293528262063591537866937538999 GT 1 -1608768595869807336646226058265.5713042902861309108620721051885455 1.2813376268297150485675222856170734 0.0517081086170481495439194322936932 1.0530929218166095644793566496719131 GT 1 -1071476.3327084458219912253363936866091861 1.2518143774189001042600195700828266 0.0561015086509705782075127843276989 1.0577366489690434236155369382626558 GT 1 -4.3484799624209746665951080301637410 0.2170571358964672276507976315178337 0.0706333131088999189493454182059850 1.0732519066458128622797418884238366 GT 1 -1704680799971207522392642866.2916897757528437345547328383566959 2.3444968957201045060414421887358486 0.0082826901802683232698037089624257 1.0083171822486997489039167840950001 GT 1 -10019777133.7190805207409223429592443005685665 0.2204140317089096150748259405011325 0.0146208686636817917717941144315224 1.0147288069569726736696246408850940 GT 1 -123511922648291902749601876970.6852207237300493424502103625570254 0.1797518523988966105008590980289242 0.0866944077943312484375121263080456 1.0906847422268578214625994048824655 GT 1 -167.5012379238317228531064483949923531 1.0344435827088812412343288235931538 0.0331613710450835271569509838239003 1.0337236754742635184750628696338409 GT 1 -360545251054464.0096302352676119706058412216193230 0.7920839726114228997805307208869566 0.0663864021970554118266175123998704 1.0686926332026784199426958933632881 GT 1 -78159.6765124199341274698988545588744407 0.3099493348561901532850107521853171 0.0652885281256921249292550696351747 1.0675173835466650588073946073777620 GT 1 -275764499795841304328.4075256393574455104994753505739648 0.3068509439967044086366834140265485 0.0254482681622541875464190433922426 1.0257776759250411078899489376967165 GT 1 -2587861818106767322168303770065129572898983.6914725617790217114419379529631330 0.3076331291679336317336375797743331 0.0124469881671851008629489084639452 1.0125251007790604304239955136921745 GT 1 -899247564951705531081155071477320848716.5879591553122711543581607486428244 0.4289519851766389820312164183278489 0.0044135787798355513083504273356260 1.0044233473722230741895452497950387 GT 1 -961735330783428583525845796298672008689180.4120717538001754085354943507753249 1.3385702714428324328927330107167389 0.0836861354981537343116279982629222 1.0873963261619509616322906650023096 GT 1 -18606094973751482949827779806032776680207156.3793752847500308534418612666801491 0.0392960925017052017256701273259504 0.0273784720672065239480485971153240 1.0277602468416281862524397301796313 GT 1 -2105116004727580172.7020467696092336553689090232677102 0.9995046755909196976785205003532389 0.0090506257692257848256055929228758 1.0090918314961371373523522449832150 GT 1 -857580661.9660128740705018219041971918907421 4.2949090316630504857188270612451224 0.0452054561541278809185879466587745 1.0462590989809280804576193696759454 LT 1 -9350425868325936911089384131708679.9366522014718026912200206985591502 2.3876216669567712112514917803069611 0.0717599978212710993683060252811423 1.0744649565956858786375205149959101 GT 1 -2321161522.0984143382535102044272573066746220 0.9649286817843682759485812914583947 0.0686486758648093177791415458143833 1.0711187107666683762089086775114217 GT 1 -11703672181493336294.5935648719187697637488812693883397 0.4814222305814320302342239969966822 0.0215239417531631651984039861423040 1.0217589602564497586695486424845035 GT 1 -1.7630077250011626080571483671710863 2.5019225120875389312565920229618957 0.0045896679154608514506744796918426 1.0046002327797880567632505335361585 GT 1 -6438924427251317188522288282785480829823.6624635566266472731556236716903968 1.5394609881808884237901908256440925 0.0983019405818394029901792551424118 1.1034755606154882019198554328403802 GT 1 -2651828118.3298212500381052377017974073768132 0.1190625558158503744783191574624224 0.0018357017960812259211182598198837 1.0018373887614496600105482768487063 GT 1 -2819659816162551334876310940370419346303818.4431789249874431085936239669406078 0.5128325899021257661495516408472766 0.0531841516206222049362705967480264 1.0546506625941700869272750169641276 GT 1 -19255786553087824421065611252171890759527.6525946584769468910511646779154519 2.3461392729520951157828730383277639 0.0684190801770786116128173268826335 1.0708722222648586209584658716351576 GT 1 -24534016.3103055550360418975069868057263699 0.1520770030071323189512873023237474 0.0887329018223842504804690118709259 1.0929192324030743521773424663932989 GT 1 -217858770424959679183131302610465706.1000484765064345031035658253877173 1.6658211164310760649715374608313250 0.0436281448353697804285057233244354 1.0446084717224126865792559867305258 GT 1 -135.3086639089246060666921873260948250 0.2236647492807099383105342318118576 0.0399506706381658002765882654891857 1.0407706110884956457353210067100237 GT 1 -650506586426304337340173428.2382419068594293695246425798203518 3.8110163285498589684991369605324683 0.0242670274728290074651617729850901 1.0245663237247957227493618616704352 LT 1 -216636.5289227308208326992033207981144240 0.5460467885054874215373921775961378 0.0399037431587530448926446992312069 1.0407217320037436468340829263262744 GT 1 -228387.4790262785479204349576078183968592 0.0529315137164073311382925909467639 0.0865681774896942909114274015891126 1.0905465392165937530011059627517887 GT 1 -800944107890734587548413010123641735668650.4919960656646321506342143638489857 0.2727794817168466348848564862825476 0.0036368111959901583701378476639554 1.0036434404716577716443868855304866 GT 1 -1164385.7234272852708235579914985682828307 1.6856069551160253345531443864292787 0.0438823108722397406110168105353499 1.0448742677254547319520186482173270 GT 1 -46056391650487650.5100100820840989839856242449005616 1.9311538843968741464311545012952295 0.0730693258512596894742555437669030 1.0758765013813969743032137642306626 GT 1 -13885487472495364295.6333262887924806939053574656117940 0.4937108511753217750803666978908636 0.0787335830887563841761498929470623 1.0820060153809314584147654922213889 GT 1 -4832716.8936959862041349205728568575876951 0.0929579105237357043495428998234438 0.0461917957644375162153746392724111 1.0472926715240963441973631042910649 GT 1 -2752486.5049146230654396560968438240383295 0.7348721334097071540943667162174628 0.0328927392073014079408034543881247 1.0334458684881075062109342942118661 GT 1 -29791.7806233233671511588864253862427404 0.6732347409268048174627793795937836 0.0712367826146148029926827215238075 1.0739014516808972459962068113746227 GT 1 -119853390757931830714732250420469.5228471690527367862823609855861349 3.1534536326937756793892637623466513 0.0264258637631116162492522868565080 1.0267813027429344509272348015029174 GT 1 -103968598191790260535281371247427301.3705621250923833630503402532268003 0.0307345397760145566192526900274361 0.0594410254396396622474856395427668 1.0612809266669724389560872470185023 GT 1 -20440310538.6364850823876969570788875629726884 0.3716762003470649851688928446231545 0.0584983275455394936501414991279135 1.0602791545142713656807787262483311 GT 1 -49061161911217773692008943463921193.2715498655551852637250961523028413 1.0575188578782849050784260737027914 0.0213190674558644085518259597423046 1.0215496011718070062021795125351540 GT 1 -1631837940901977180517120790829934727269.3869098826272967838005813917587451 0.5625004947585981758035050721466636 0.0663974297645566311452174488228026 1.0687044449764731301603949331724036 GT 1 -883253961662108235052281754322643262022841.5355577686762309855092781865050801 1.5540277123034988396040184908455667 0.0294679081925986341715114637319469 1.0299108096272519397047122017512257 GT 1 -1085615354905464621464435177895704146.6412736460636495937117223082477439 0.0149604387232663627004554273576138 0.0265762379294750081355707003842125 1.0269357704665956981576063652605008 GT 1 -56108178064.8531617708479838761304886084968969 0.5337009126964717804596206628791073 0.0478025346230649565133702581415463 1.0489828440852330167346570503395839 GT 1 -13333590729.4894546351529484890622026793134355 0.1410283421185182339431245569974247 0.0571485159671238702879747286604212 1.0588465018242574135427167562990551 GT 1 -86294613377312522891697274.6851497563357188007083752612827272 0.0983708710579958954097040628835291 0.0173689523321695997134431434182069 1.0175215622830797679319004273700066 GT 1 -47581824865829615233192245674002477654454.1487449502265189768548919875253358 2.4012390794338441001950536689714468 0.0982586387218201969806014990820856 1.1087761671286132332122580562585991 LT 2 -1.3814600882119403750621553780226921 3.9966243160460028286290022506061653 0.0052802627056145671478415723489218 1.0052942525612074266260003613785672 GT 1 -21684722655061517.9479220286211675099965739946791518 1.5481378261938222939011967272311795 0.0577882255792128302086214812583149 1.0595252160623893833630975694417490 GT 1 -324220059848.6725102835955684850634774000058759 0.7092673936929502193824382539560818 0.0811701860473651125302608291075664 1.0846543598988743888282811016822379 GT 1 -9776502078123695564789886668886208260939873.0015594134097866555135092440617479 3.5181457746282624215781733652774517 0.0610048740551066012427519272869869 1.0629449904743602912558391525536918 LT 1 -1124660030359485717745006303804557811.6538416227679485876800477223882724 2.1411323690711814989463193398293265 0.0600130986952191000490514617877780 1.0618893385973254292820495529710558 GT 1 -59.2065278920068722341913714213235635 1.4043206578548070710911491576287308 0.0661860280520263940501152558455002 1.0684780340942110149123163378952671 GT 1 -32316252294023755.7849440766076541679741727981231408 4.4829969180337231984346868788377098 0.0761027734582733234588816069623433 1.0791544402130424859346416530617740 LT 1 -57572457121383300039399770591090.4766245708102610384077184843082642 0.3184255445764752138878225337023722 0.0331183244610099812391628517083724 1.0336791534366341699063724496293691 GT 1 -115472929.9289403660865464771666303300024331 1.3362293580920985461095624604119380 0.0175149060234310576576887652764044 1.0176701068789301719904156140340356 GT 1 -2276167230.1514659540034921461250624981342702 1.3750515992316718244216905236771879 0.0592042688836678711280415066731297 1.0610292393519677524613247269994715 GT 1 -1976044038300669864931500799998.0081886278828072219934072377025859 0.6386276913677537375643164268040640 0.0469387169738256730316038285366017 1.0480760720164504872502533758278311 GT 1 -65234958620593369.8052125183206655857059480474522164 0.4209863772052636648771358028396678 0.0154526269959117300697529855728811 1.0155732632144269253641596514188524 GT 1 -4027014592518942438910672652.2693737683527457764317141226945771 5.6317114635225349129601024735052172 0.0337988443924917123675819112026139 1.0343832308291074966760556454767377 LT 1 -3571075863943308710800.8156550935672004399615843034174287 1.8196919666200528154053259298781276 0.0737261088584956429764480138910537 1.0765853092993516539331859164449468 GT 1 -2748332050998869462892.6927301972134362369756884340648440 2.3364730818582111248572481534287451 0.0170583160027993517241962341785685 1.0172054851143725281592469266480474 GT 1 -397516898087846272499779418893913373338.0555555375456719716242121799759820 0.0949625403162988337171386640226891 0.0652176417834402699447537074941164 1.0674415487499464397286036227384585 GT 1 -287659019605136031341367767408528.5355023001338398369830896451698079 3.7339425593569656878399724928146196 0.0762378884283442305749811981308226 1.0793006954967136850733119362800132 LT 1 -131273603066750.5328209729017382668622504599406661 0.2036982424009967533808951889080522 0.0065792446253840877543558139044680 1.0066009832569490217347364228822478 GT 1 -17401477659588741.8324222169629558930737605551574096 2.6992442719129141591144920313747829 0.0090645094628132388774649443949395 1.0091058420916409348594591630468303 GT 1 -310.7967279203142548625829560526180891 1.0332156469974035374023931392922582 0.0959149658204789095527707573513140 1.1008318586558575433958696300828510 GT 1 -1697832.9781473568955325008149505358882274 0.6197796188021768241072468139380266 0.0887298974849839438528145417175652 1.0929159355294641261812242485364101 GT 1 -54357418970051272468707419222362382864.3793311102676074026848119481536284 1.2869178635907426941516023337736169 0.0024145983584381635889733940290301 1.0024175182021680054116563871399735 GT 1 -22155373732224832.6941729411991606309541636893083314 1.4227317574876326062504650568719382 0.0172351842085687493025767528067136 1.0173854389439658220028869708349633 GT 1 -444238546714772440774.1245177850569445564309775938194347 0.2767630515379028998531986724481241 0.0941155351384201865866652641857517 1.0988435032986451873677436279440387 GT 1 -60826118190262636568801.1260673203162041704909235593888647 0.6669286284002070690941825193397601 0.0852165020381816399528627968398827 1.0890678559535625861269699234648903 GT 1 -8394.7337395761540056841559773658891012 0.5871032333652559694338493163064095 0.0957248990599115031271064746913382 1.1006216496852260147365973808698619 GT 1 -406350308405007316041033.2263763925379921471470315320652799 1.2436391218941132971477798072669649 0.0690689595843920023857330078565573 1.0715700748935250607244368273078753 GT 1 -1229984358228901680883059549.0389288423927680736662380938029330 0.6487951168108004468258862734624130 0.0994620791474335047765375516844168 1.1047630043670717955584456469318672 GT 1 -534723.9132050254201653687874268963421733 0.1373050064642113094216446063113394 0.0058033999925312762514812593359239 1.0058203051549434026527108963039329 GT 1 -1661508965154691066632465710928912497374.6655751331303548551705968801267411 0.7572714473497690830542684150743759 0.0869522977135963076789316055154815 1.0909671519027478159880251974134908 GT 1 -10978575847284986.1166518944160959513941450269185853 2.2852921935649297703089241115069563 0.0718561893756516698742018857489651 1.0745685898570871561566992918739935 GT 1 -24462627486226364610555057803132.5027534529749071313024781242642102 0.8603369936108913445410780521683273 0.0579047972986055634338944233793097 1.0596489450735927310555930766116153 GT 1 -259391.9928602988438753721625588353640553 0.2313660637559421003374604304964421 0.0514660651377493870914070478943913 1.0528377128488029471926415948395452 GT 1 -145064863372887697029513404129176675006165.8169858899605217545769095952303767 0.3906674186232394722173432988236771 0.0770233082984954568312836874399285 1.0801512975592414041901536329938912 GT 1 -14031267793719212.0935251761480928916707384078118701 0.2324507253438863350920973920364357 0.0463818545587958036480952199983193 1.0474919544951211386793707567114889 GT 1 -120682330250049233026527529086410654.0265443122811646867784489254597424 1.7174802046737833225368962542314969 0.0193114251698939276165771031745317 1.0195003266669114194724655688044052 GT 1 -477086615216603876368388736935880217584.4871943436851692224605166442774901 0.1116615217192851129407519322559481 0.0790538479029685908830865627754107 1.0823537112145464478030167515965574 GT 1 -4241106917156878134831845953573031757868.4985508298614866124560856502173895 1.2113340884857277313372067894501833 0.0009139057438006109944020912295927 1.0009143236102679956689404678442447 GT 1 -152617000619603440190545881873447957059.3845565382347854175021322503852823 0.3242477937284849092156379922523788 0.0178301876921033095063634464987825 1.0179910606203431856652147358505470 GT 1 -111007708185523232760.9363040035667453939892923692857028 0.0367804873142809664075129373150654 0.0381439500620799648963252231598924 1.0388904757522179216867773470388315 GT 1 -7708847000838816896617233382679.9804112433987123679714094277290424 1.1304506653567317583599565373346773 0.0150772003658651210031806965930375 1.0151920168875622550248235689414502 GT 1 -67315722000775014121083700918456.6766603790301033820374423192772249 0.5040971501563294937685639140986943 0.0819317601589114613382555010308267 1.0854835557855045756820215541604132 GT 1 -32542744486121.3511846916696095163984663439785619 1.5991128977743165311239268392523207 0.0787765619384564498993191426627189 1.0820526683919012211814109989638152 GT 1 -24496159536742482357040.2355459618273559947500834002918744 2.1970821566092321390625342072932565 0.0215147858816960585725103597951777 1.0217496030232776296731451646796166 GT 1 -13275721061040761211429075370801540152.2417513035226991364080710650445327 0.8880273396284431126063755464160474 0.0720497882495167251121821285892876 1.0747771987661546298253072445612403 GT 1 -740440683332122114650.6734486979339059231426646549759682 0.3340792177036733452267746156429523 0.0859326461321666530787913015735720 1.0898510189215784043068076642490829 GT 1 -1216864489449441304880327.1645713093327108243527136238640772 0.8977658918875296586080970067473903 0.0812181256819190871828260004170394 1.0847065359215573571687351921664145 GT 1 -1189767911781929448962178929955.2327089809392946034795473902493250 0.0687605310221375813431035205512436 0.0817586680593252993998049964263023 1.0852950340865942348296253387844899 GT 1 -6.1581912095815143485655420741148886 1.0122222124064622080289490024335460 0.0208630166688321663791207322158826 1.0210837245531666788461145445939505 GT 1 -17000939243.8391240181169957251688666029961919 1.1028047053518953235789072755859748 0.0406461516448446707850024748800409 1.0414952957667226825201387235866350 GT 1 -1263025141601834918126039631079.0806575711533865820024408939623838 2.7019104667500908240448269676223282 0.0480828520947806791822400844009963 1.0492772774893836407440084540329336 GT 1 -28515485074126676313037.8004656722908399212576971193041076 5.9463321470994324507253571159459485 0.0284547024764725875959495709563660 1.0288673848763967029699913636331624 LT 1 -5031757820995017.5147518357981593056474270371582517 2.7420136128948610867965102073397490 0.0463830012073556761775793595048909 1.0474931569148262697794540297534792 GT 1 -192973501137687354645645.1263250423511762368118564637402877 0.2523778556157790550307223906049003 0.0449806031705763331355496102217025 1.0460236278915182015516785986174912 GT 1 -10945486817617483063094.7868839142228130268940342265124653 1.0560108324684977276242235976594384 0.0650187985697644308758594534619302 1.0672288553177747107815306055208121 GT 1 -924529098.9339178957140791304947649344377068 1.6600052527885490564389011760934990 0.0687293596889709312780611717340400 1.0712053454416074389025639332620250 GT 1 -142.5580942934502188321815634553203844 1.9057869120337052925253895833207459 0.0319678844829166797202176222575120 1.0324900150688411881669053881165581 GT 1 -5816273188728258532.8908731116903599334511791121649207 1.5615256686327170928230143771395263 0.0154938576207419707425970752324500 1.0156151418373431131820278250988797 GT 1 -49940355235841739083039973884.6427816789189049050695723663045972 0.5392428337225574920989170376146636 0.0521763937298501825343612442138936 1.0535868633754466683557008331872016 GT 1 -3326877001313687090491513071466530829.1762746100967044038836808350316639 1.1264167562965869160391898899742667 0.0160694977028428120026586777263345 1.0162000121709318557538988187456352 GT 1 -1359927715304084408780236.1819467936311677382995506857291149 0.5315471630387543981494142757069214 0.0188985785200185241437766535960940 1.0190794389503398699288278603852857 GT 1 -5817.9310478939976733800030642582791298 1.0182579232422647586563066299986538 0.0635585766176245973300062202729946 1.0656683074980356299993056304865053 GT 1 -440490759239651998172584697.8034123723095052240945267092315958 1.7617882149887250460317397285390420 0.0021330106400840585620261726957382 1.0021352887473405699608878052690499 GT 1 -172170355454399.7612708894175146253233824524911535 0.5528305015917827587666793331791735 0.0242903706166231535396706771302266 1.0245902477118731858509902117146794 GT 1 -19022970427.1756372820036919631320763580048270 0.1627374224168906873327280805027217 0.0371922964165718989587483627794112 1.0379015718760772529084544162802340 GT 1 -109952348006959482167807.2628714282733251463275347917450724 0.5589168361768970044395438576711291 0.0278239608025904885612562124335592 1.0282183806347850566188106635347603 GT 1 -197977803.0461749821277306547695848886252606 0.2008493011258609053818714553317805 0.0868794255438981650346754641250656 1.0908873430804559178193336798158089 GT 1 -5324.6170413940204650395424299138601389 0.3158117657124719573713724776708771 0.0534785610154521997648890522056571 1.0549616577868045582569912612317619 GT 1 -18.5630213035368498752897387428759742 0.9702935090083090182538696223632122 0.0792614150556975127080863834832810 1.0825791212963406285209468659886857 GT 1 -196834356764.6337379749219205363459687063141284 0.7055154785689469282182320421409378 0.0993221228325075680404762130215371 1.1046076023154559481823806940094012 GT 1 -287291194184714820111813995310281474.1947301285808520296817861820845689 1.7117783501355261672867123197751357 0.0545278058898286267180128696202076 1.0560707999779703448240413632063754 GT 1 -2963865039302.8169068810805567661862771053610675 0.0690932887549194589514778100350566 0.0643220496981238354886472964768393 1.0664839319005771827330230685059672 GT 1 -2086765433.5995077094044763918794024500330865 0.7722630851797634399537161185060155 0.0156194880290708063535019865860054 1.0157427575212848560660873308097113 GT 1 -187057051121984038964523356310985458.4142643826074437188829669610715577 0.3718829307179657493835837745283466 0.0937587011763144110311298650196101 1.0984496741573473853233070954649117 GT 1 -9988074762999520828441012849846193.6467548043630226687173085439087831 0.8973042436630648278298816390735935 0.0964509124064770555334096610150963 1.1014248399403410283706612862440709 GT 1 -35570480475739826550978057789263632107.5430344061480854258313281901380475 0.5406356646552866285524662462044413 0.0892257742057585140180668186747556 1.0934602436182553017977459606359644 GT 1 -19.4922084593529856445331565330179378 0.2974519303410083924641229445678734 0.0419843980906550458207348373590647 1.0428912152259940166830045909565863 GT 1 -742007850304775904465295196190059071172.3718358525982982550059507899271428 0.1495919462895626013300859097582624 0.0679938709485746412724212716150297 1.0704158880827342751079982794584854 GT 1 -1975.3188213298469476404874659837355490 1.4391173921044315022896154447227535 0.0320905832283698487571701962387042 1.0326167737994857062969173882776461 GT 1 -3.8412241166752222709898885213499596 2.6009007929884091576959916895290101 0.0014636556127048003498286515424982 1.0014647278029202934941526863041997 GT 1 -77572513205935494131555902204167926187.3333874974567855204756424815509828 0.9523051098777223692068423365600546 0.0683265814221747735130510145611030 1.0707729349554736677727686792422621 GT 1 -1406112839266.7025379021783887276637153554054551 3.0878741968696396364236788477073691 0.0408142303277581302135939740290366 1.0416705109999804466203546926270885 GT 1 -801939047134763638446621106222281625818846.8496859476349796475221040047009193 2.2053420821618878510084629839964488 0.0032242321464916089965287121066983 1.0032294411827338441171605787960876 GT 1 -7082241920277113866129.4596554571541514430485471517449611 3.0359091710275264744498438327295147 0.0588060638965294464877541966373924 1.0606060648786784139710941516824231 LT 1 -130.8836246891521772378409148104979678 0.2602038052226274756511903383289564 0.0836593275261068085485140756020641 1.0873670702694649979890264844816982 GT 1 -198284867289674268889864819005051833874.0043116630971813041262003704203595 0.8459490049681030448608329385089286 0.0693067410132976651644126231539593 1.0718255307664153035092609824787684 GT 1 -8423060714955462581518478167141.8923398894176943343618729472632817 2.8214547447128305164925849931143177 0.0596967858720084102513071577872767 1.0634472664912197954308772272162847 LT 2 -452488418556990734967988869186440829.2964477522669592397945232987980200 1.3522722856303419199952568481807345 0.0003075490260877435715508277932061 1.0003075963289883566158543722920294 GT 1 -856440063854798449319042379292.4845998691022458698517348099973839 0.1782961577568075248164982843624184 0.0507688679533374790259909245503513 1.0521029567634107521540438617755611 GT 1 -358.0572213023431926777111014802998565 0.1626688198788120135397664584519535 0.0023515672169613082147498077887554 1.0023543364934275853010856774316291 GT 1 -6152990649859272295784970144311617373366414.2181939226464525859624320483718458 0.7320635435329637552229722692303671 0.0817286244938979655300288239294847 1.0852623160277338829303530061739870 GT 1 -224036795247533734689387346870.9441533369508489865546430008832556 1.3196269348091809547440479964185998 0.0337075461194179816733754710075181 1.0342887432999447582413015918095923 GT 1 -2896.5657347112963440408699708475350231 0.5981852092668500201849617328187551 0.0246235280044663798189115704851989 1.0249317573877872842944022769007141 GT 1 -41444808412351234314138444199.0566611515206184832444047821769772 0.0423354222599631514249760369730405 0.0802196188244584349870750976761261 1.0836203535498195228305203236692607 GT 1 -4538806702664717088814515.2611811104783052882183887816615817 1.3568559671336963679549194551661109 0.0952100985730516575196437996107539 1.1000525153533118121024997259082500 GT 1 -2007491281048401030.3391978202190762348638245585867860 0.8349638982239776806557150864470346 0.0886863318484977156371290432628647 1.0928681290722842802758677066244807 GT 1 -228.6462006542434801099233110673146499 1.5529445930164090513017498347828016 0.0547996336871365554945263270073665 1.0563583461188209470317607918894886 GT 1 -1984607637189364265206438.1980709997765219035925029787930179 0.3868820711288094206393517193560264 0.0304824501038688388982130127658149 1.0309567024559144104616620217170955 GT 1 -22359798961401.3150410828221322199451350567762444 1.2014833205484733694069988807640483 0.0810669441083459709072818469442747 1.0845420037937186689508706301014598 GT 1 -59754050607.7579901649373717184657295024844994 2.1034028415971447455359588018538670 0.0743799775478499957920852728091629 1.0772914714738979139241824292681582 GT 1 -52412.3134608256989712277240979319576050 0.0436233324733794955718981577860167 0.0746367497562356028601054260783505 1.0775689155911088880623704491872221 GT 1 -1442673630567840812449.4747504573865615995409342197887548 0.3232640064815353363767983475774511 0.0274978469668899858673628953531239 1.0278829895761920429716941760807527 GT 1 -2608165432565646244771721708885168116076608.8624455889427754016705977701798306 0.8535410808678209338181782335646545 0.0050226272063093197670722261318015 1.0050352829929863536674170479027869 GT 1 -114396570152365428279856503464040959172497.7747216102522865670584245535295875 0.6361970877902227007919992986339194 0.0784131433148081182216727507270024 1.0816582505515021268320772722123108 GT 1 -85263783834757.8126596509884521377012312752787633 1.5899864966599130553182054969626727 0.0821381420705027256724282892787072 1.0857083812434141140051460578579818 GT 1 -105886964563.5829751978313092265867939212790559 2.0942878902827288476390650448260179 0.0657285596481955500219475954649616 1.0679882616138271098077132410035834 GT 1 -24740.3083542606022774223348328319334865 0.2638974561165276288579931682721808 0.0210954842889724583748276738659990 1.0213211736790879197764413064217345 GT 1 -16980299299374068491699235607962.5239344917954068776469816845930696 0.7479946310803503912635488743520722 0.0249731623966302172142502367495324 1.0252902826160703679221126267799802 GT 1 -2175879685339643860097.2239021779200554035986089923781453 1.3040315555255878674325467110030341 0.0785796920930771782849103587217876 1.0818389864508758939793114872884107 GT 1 -390528799864102846025584060898646.1636372907413220723573631345732523 0.9301146036846161981905604097192885 0.0552974217356048835472436989910133 1.0568851330222523379979048600266546 GT 1 -198387501917140112619253316643759040.3302753016591143703530226985866025 0.5942139002576765829954072246954444 0.0764053361409495100753815284828294 1.0794819790639064047818712778046273 GT 1 -3403011498799640774525504467367647623999855.0766719826796542850237037033075179 0.7785718755562190602472876305672597 0.0819489760787479600402328392369004 1.0855023082926829237269839335958944 GT 1 -1987472056704590898.1787188925413008635646769625257468 0.6195264948243941044102333726009832 0.0924833422041701183771629595754259 1.0970433573137108011711033484071840 GT 1 -1065561888154521893191856155456210872.7722176338470437727451064496349229 0.5790551288860462888201153485470131 0.0506497131205062892083346338864305 1.0519774369075859470565576962546991 GT 1 -52669996711430509592334984425402697671939.1359257232048896385674465104038778 1.0217545424232685946231706389279445 0.0099660214811640270618218225721689 1.0100160147062808000976016897055564 GT 1 -14466304507661369884167380786353325.8515579308711596105496330481774832 0.4966432307025062978423720556657970 0.0441871117318196730442973046223692 1.0451931086559421059900731454760778 GT 1 -3064381419.5493776376810499314865653417560343 5.2193326327706675853379191349740812 0.0483730972379718237360896921909312 1.0495822298705367926358474972052988 LT 1 -7023353869699826303494.0698856346601641223579133655756632 0.3215139406307216158880816979510377 0.0846027560517480806972476702002715 1.0883971615293606859507467130945343 GT 1 -19724399517353952642829409344773.4421526188996984865577431749558662 0.9690115884862696674265869401975409 0.0617941897402892025702761480828386 1.0637859401206940829605230675027899 GT 1 -156850459002492528.3488721205289748670031694881744829 1.6887644028286761351913663745548259 0.0395609542600870237516537554672987 1.0403647597555944677026880037219788 GT 1 -7671705953638307217537750004295369933436752.0455716895043436652586357663017096 0.2919126077729453529179880535299500 0.0818394068763074969754021350806367 1.0853829656182837259801524746355890 GT 1 -3859816414353321873259402.0230376148175303328207019584771894 0.9335659613708200766456348177481205 0.0052681479463436883806465213642291 1.0052820735674225126524406883253807 GT 1 -11610.8636058396145467924561555857806131 1.6238129023885810908204250556592178 0.0240803632321638800397922415516965 1.0243750353363342683428622882769465 GT 1 -1773199716041.9829836170378151053856861887013154 6.9273057210895496362998927505010264 0.0493508763440890327689628892733591 1.0506102396636986061308121195596829 LT 1 -4459733301858016671929495838603908316022064.5091651885742024286222365681450507 0.1029613776582923476638315648145140 0.0650273458081617483765092513244680 1.0672379969747965452932818378854709 GT 1 -58120550380.5711298904931857030367869010865238 2.3722687564280042823750743916436364 0.0695444665525565428768417010154554 1.0720809918467094812579954752732549 GT 1 -98895981508501001711811413998102494014.8657806923724127551608130835061754 0.3976047637462097510890768793897892 0.0615294074382463854193193480602512 1.0635037579571610266346155835211900 GT 1 -3266574.8393588483025385499995764452453223 0.4189466589555135279977814233772999 0.0541261258453196653463097723543044 1.0556460442367678453577457717139237 GT 1 -39360760.6192978540192212781814741312339645 0.1251487385599622923994893728607851 0.0951850602620876605594814239379154 1.1000248426698662070784592411492073 GT 1 -1130403312429900252871043924687669334068.2674851736369023677897307638453228 2.4927642588393515975885299556957765 0.0898586100137006734806123038213978 1.0985879298763227093028450838298843 LT 2 -2239627740092379080905463460.5337281653399459378133884164540821 0.6769970734875070696554848899140225 0.0083661827300806856787158896798207 1.0084013756612743528521573051022716 GT 1 -9731007057419859377513034019785285.7073057198210244773242396877663935 0.1987876225730307448317898351268538 0.0280927968929115121577024261806484 1.0284949491336894110217879058782540 GT 1 -2334177.3552001109822374910137944097795387 0.6650464113608070126454446994476860 0.0852213029548311338361964974257499 1.0890731041125621620530233659660059 GT 1 -1340094759560169170507021.3565231317108155935047229982567329 0.1032548571300349272206318510026474 0.0808556419246759080528745539036363 1.0843120872700779803088093718445395 GT 1 -11.0605133695097386094600805720690595 0.7924838280466275718824406519524443 0.0135194293801589618949402292111765 1.0136116489796747009689588376648462 GT 1 -2195002050136988941151726899153847.6706027241235335353692373384356143 3.7873292955164485800103031159689282 0.0474716768837754378090590209619801 1.0486354368682824729538132074485784 LT 1 -60326836.3820156911129007571827706659013066 1.3395145982647035563386579870473269 0.0920612256439363865107497932277134 1.0965783317775672481357569864253445 GT 1 -140365078023282115677355013362694250262691.2659716818335365052494348382407988 0.6416514068086609070932768675312788 0.0533223041925187543188339119652564 1.0547965860620011065081771153352758 GT 1 -26800063305023026951812010434156752795415.5159709102293957942518214408235689 1.0986789209509218711666271241373402 0.0607334679116314292131469673244634 1.0626559933112617960519728815529390 GT 1 -343447879.7265486962122264202107349481730061 1.0927643620861921578228329018436144 0.0988336049910837901271254356057706 1.1040653602794075491420505988601709 GT 1 -4628536100398711102904411201705173949.0390117275796778772271326122942946 0.0729340973566397351030830845622588 0.0748421776715920350796843097587769 1.0777909372900185368633365239821659 GT 1 -12774000856518595879.8125362935606521885627375426934949 1.7971182187392613681657562132018647 0.0281012206714996443531726996654811 1.0285036164375914495734903692733724 GT 1 -731271820579077230673.5854957260284637988342820736741281 1.6718180987156996957766141834974354 0.0958475789573362376146734798874478 1.1007573254545025394111314128041600 GT 1 -133292.9803188139911567818656205564479090 0.2055478921043734465882146498365486 0.0389522894237631088921624113966318 1.0397312244427110171068945020009387 GT 1 -4258914087106818682832.4769822257894306886013413390791000 0.2755251765117143873904306702375145 0.0087140091014728125359229782858436 1.0087521980934541353181759554969758 GT 1 -168.5085311882965996182075733941121853 0.5054253612578718052379871698186543 0.0455350046169855060022081589625779 1.0466043097386686724856472458002739 GT 1 -421193292330051524103415313234726148281.3166942453960522949722561115649271 0.0704937611969591763020911344571485 0.0558905531186798752340692012403036 1.0575131800641760727685005021901447 GT 1 -9701.1097576225024801269478809668115964 0.5799087687305577415957576778207791 0.0052793745445339063551270664242568 1.0052933596859071253749830136547183 GT 1 -19128718778642228988920175574.5898001589674218678089356179024054 0.3601913453263548426751987782005494 0.0948357231121094055572535139144856 1.0996388303321474794318297554334534 GT 1 -2362976348137.3970818352739098130712271157090787 0.0505733639390697449183559609839914 0.0477450841417823966796631619558243 1.0489225112757954538018842257503454 GT 1 -5948155264890310961810319152257076583.0220737852300998888282097802506027 0.6059863767046796455388286470719237 0.0518994713792803608459517899067513 1.0532947395004003106419481673043736 GT 1 -8163557077782741494.0787284521413436987410015764330470 1.4797168493312953436256718486879865 0.0517238631134534394020198812000813 1.0531095355063594937123779968679203 GT 1 -9855169138739672013679864002521370522523999.5824433923984651536653084440612391 1.4772792083722858683263554649725157 0.0396005816723882356568656792012322 1.0404060202916032268085507018581381 GT 1 -1184002995838519133304408694824178218937.0245218616129823238494113793232618 1.3780125628403607893650279735986777 0.0557865874030768594019507920845774 1.0574030657209786468426161906034721 GT 1 -8020676569575799888393756.3629904711493333572430706798897491 1.2236200137021526928844937994909435 0.0875445374082000031474064732453336 1.0916160028352208073716550991386887 GT 1 -550567322445251429231649706.6550776327806236414760304456654521 0.6440961763525086459568801862210926 0.0277787047485493873946518041450649 1.0281718304228016595098550004770802 GT 1 -247758529300818721.2607770991117779644874519789294620 0.7130091410005449139209029162639569 0.0832095023617963901262832356207450 1.0868762977806511576730789471995104 GT 1 -110287949120034214924180331.0855953334449568261212888035032810 0.0213116568863777660495210929565403 0.0317942788410479650589987754952916 1.0323106924267096204886944267908934 GT 1 -2932.7049789035748009884743238089713346 0.1110033234209754031547629668062046 0.0769612878968531622791640953846940 1.0800841037519331821001746879475927 GT 1 -607839247696555897553.9982860271717098170695199684748839 0.0856540543586644554456327318110581 0.0718348861271498608359277336216005 1.0745456375906603657130455814011030 GT 1 -5574219757284964685736948036072501415.5412130381668960405344198632861328 1.7318699489109542955467089699709329 0.0309660667542898166379911559602537 1.0314556488750934392327552236339308 GT 1 -33727403138073.1181164430634635403351131189271719 0.3601627077116918609729520092528053 0.0665588198844275654999204084575583 1.0688773280385251773524077188088728 GT 1 -78492315207237366120.1852708991248311738614258322667267 0.1486632671287535122355243450996314 0.0415672945473930069267589676750420 1.0424559271483081539637198951866574 GT 1 -14651538033273.6777748276304411924657412693199877 0.7570138678210281230175275890220972 0.0593021529372510393049190157929851 1.0611332886613108230824103657434906 GT 1 -21615368033697265124663.5778050417392537965064982697647011 0.7668061230208714576825637135778524 0.0906954143510759488311870986100254 1.0950751632090719904361716893096345 GT 1 -17200904.2054092021509089751141284278326268 2.3750620219294715299934806284663364 0.0587046915518241844235668312100036 1.0604983645610307624700731024468605 GT 1 -11882563309874634522922551433464.4932308384946510374577195038953688 0.0766655906479273721511552833093674 0.0327795777164963021406062735902129 1.0333288650538659621588844444646002 GT 1 -4591213717869026085141080813174.9370561594699544720651775749994611 0.1210429683265799656744853447841735 0.0378861028358178728380789187236174 1.0386224391041463785971932089342273 GT 1 -4816376834822683255664914290650827825676.8540443458677151882862261073210153 0.0332311149692001437702257087170085 0.0736388651536207768159869576525318 1.0764911259294859823243201245694769 GT 1 -663462144994726658688.2512776847764728910309194796505030 0.4207280636864027558075932937933347 0.0001097599097109043854447618027034 1.0001097659337705984558805825147353 GT 1 -439618514199271.8748010029177605770801015809679429 0.0698334026343485126510097622635912 0.0138686123939756602223970720353060 1.0139656801067879191974155529897380 GT 1 -118895638537581188190173238485575.5783575464576194747703538227409257 0.0166794200558166448731155960030162 0.0792088312361053049759395814037423 1.0825220124502841216457869241411468 GT 1 -2319037092443382.5296131701481361613077316256053787 0.6353611830805932123429103288642513 0.0968894898163161122774240748104780 1.1019103518973182511828380219587256 GT 1 -159332313988009249837357.9557047937163122657460373857349151 2.2366190830410215073218217699465019 0.0248851200932850689917176411226627 1.0251999893798255929314414971268541 GT 1 -52549.3127002299387819402094389921718339 1.6079583451680990967801456126379949 0.0893528896749744759071788171729936 1.0935998219430520982492384903764224 GT 1 -39119248811034050.7905926704366212706118801720197467 1.5261551766531043309649888194420138 0.0569472493080726650629626961001140 1.0586330586853011207187008466298340 GT 1 -15.3960097347417584536927611960968680 0.8212388899560521648213383311726865 0.0181801887577114724615208566077282 1.0183474790709464633634091524065367 GT 1 -22493425173449846906848801206142280464760.4434897900119171328273746815821878 0.9637496953151778314612641056223801 0.0027136285069542548710597981959751 1.0027173170712310883846796612622869 GT 1 -1548424383597221754841405803757156.4776174200375887793974224298685190 0.2079069532212695643849224121769001 0.0489194495332438066899378532297592 1.0501565192173944114271530103454246 GT 1 -3044391329961275709994011.2924495632936914455159007256642364 0.1436915583695088980298794952506093 0.0121972235455419990223952551711958 1.0122722201340089704106683710613085 GT 1 -727009414002387226603625074783946489254956.3576300396254824135210327044376626 0.2977708482298633424155096028922736 0.0189796756162627719795361854584877 1.0191621016051536037292693728852914 GT 1 -90511700242562743131052.9131336372540748904560046757611160 3.3243781579699271016870863294332825 0.0008801461445765148926845215307957 1.0008805337006150770039285839484669 GT 1 -1292535155851317351626583829243154121.3110310650050406126856611446271532 0.6982333152574874232310910538305305 0.0705838742062454647221294478005478 1.0731987117245679191805963292399195 GT 1 -2784788.9670454695417983807039890246809747 0.0554494870076152834936621225789008 0.0535559521137593119976034962991002 1.0550434248331527346266556397197493 GT 1 -33250277973069524.8518545189378162629259925212811946 0.1575490841765822326762197451285283 0.0298752368524966395402787677778155 1.0303305939542333873229227546455530 GT 1 -815920229518780153977.3790857016024005185905346313067713 0.0667197381743220797533380826575272 0.0250595766318369283125851648700102 1.0253789140890113301172547873252781 GT 1 -1684237550394317554335104.3487061276232921494011422244893007 0.9064492079097590665424833935587667 0.0309634741446612513697245272879378 1.0314529734206316139737360770841863 GT 1 -5227194051472.0815191075051638466930408745845271 0.5300615059427818613253847039706935 0.0383732604581044425841357613454878 1.0391289082439095693513180579443186 GT 1 -234753941729814561896485626.0680662227389489149229646336663229 1.6667607313436412052314156812727807 0.0602063580613459203888588180603381 1.0620949576707884077089440703126184 GT 1 -5.5348871856326355935982732557507284 0.1530089112175465943045410429936360 0.0791607509733770360400275410378197 1.0824697975625686193293819301903745 GT 1 -363439636235181652012.3030078275678075784244476112802864 0.9809791392724804827096609733978843 0.0351325220963559733430879140108962 1.0357645156708464031513571625068902 GT 1 -619400482782776554363537297427.7839678297502254375057313269177382 0.5375861137587709211276839096894188 0.0258635682601502390596072777206020 1.0262039114941237810405248740602951 GT 1 -129888329158436340750659.3663078728577977393260261408733309 0.5253674691649281638735715617159478 0.0049934136611764677308595823890652 1.0050059224094491018457562809110020 GT 1 -441250.8781542245707048352399646688520965 1.4371503649832579513928499754407387 0.0937547507850960687084032450042635 1.0984453150726163857412327956218535 GT 1 -4630787828327659745303389219000973560439.3082005698239020330066957044257964 1.3442084627002072841105549153908498 0.0882471196924931581586301385106890 1.0923862902004412072439940525098941 GT 1 -10997.0705800722090574766166432390276454 0.0121136882588046566875242535606817 0.0790139736170477915150054069555669 1.0823104150645655796903324038384293 GT 1 -8247512476707851.4744426041676180746207022910652826 0.0619489791015347393545615631662066 0.0451638260174424085082351575201477 1.0462154987850332346904314527245146 GT 1 -15842.1611604149128427167749717675075479 0.7358220212139921788016270409241949 0.0256523305404392415937368244047090 1.0259870888673355740696654172549658 GT 1 -10890639342120626057426.2254614828449164188225626479199060 0.1682120019827637627436076697255151 0.0931120706161758053750722776812366 1.0977363983714918099592875254121476 GT 1 -31711227905.4290967364536858356570297513893828 0.0543581910712870855931285372032748 0.0062366573859438682736328890327596 1.0062561865738626359822497236496063 GT 1 -43972294692591.8370278657861434490998255686667498 0.2540745981754506741152325412117205 0.0046138130007222630459961756290012 1.0046244894881267947456585399289279 GT 1 -173703.9486900251642498859330652894952698 2.9903355918958048926056953299793783 0.0939626961004503011924651732556723 1.0986747995047315217937673644639259 LT 1 -538712395803706721015888684032.9865346731067577144021547120099809 0.5135699166652680151764651638885697 0.0112836129189378942009235298170323 1.0113477558449435593185598098647718 GT 1 -141316596380544473491846661758.4008368609448488824904038768131720 2.4975872870367092951040467136790472 0.0568828904103312105772795816362069 1.0585648157352660447010203188742622 GT 1 -415129726.6714184225036672189039764123555579 1.1022044807187772153372709648397001 0.0989290667265624000796800779892188 1.1041712971991126455603093199177553 GT 1 -23463124309321936926.0879074270445085415521763713157680 0.0291040142605260873409747825479308 0.0433011817010219762814393525709021 1.0442666514832895821436096235147799 GT 1 -22024343937410441883438841286101121897.4325683362914207192283335337653616 0.0234078016516380477459484420154387 0.0732906487323470565027227586630519 1.0761152995073593077342694017848323 GT 1 -725330004200611981916322435384.0205956052065101448215472667290164 0.2284568985762573384467938500464009 0.0132208790283316246135041742194329 1.0133090528689067423866598601693614 GT 1 -5.1072057309946844890843011104076036 0.8405881715127704403210811485515064 0.0642696285116758623768723333225854 1.0664279086523621299388679067220911 GT 1 -2399817895996994069867675612928062711511011.8784076122122045812110764010410213 0.6773214726555006953792688130257200 0.0262725604881719829687314423221160 1.0266238507312218805651131582247715 GT 1 -30063307036839991479.6451918112564347710357987249706843 0.6929253393263355089043948016122382 0.0297743168539546796367127389675432 1.0302265715093954058204321507875737 GT 1 -567737223138875787952021718.3244443429016652035634325068586608 0.1271497542208855366371898414804318 0.0578384573401411601289872014628922 1.0595785300851309591565295977468133 GT 1 -134023.0760530037613841671938405901023598 1.4091109044187524176750849475176847 0.0993254098401089260578041058114260 1.1046112518040052252788441204057316 GT 1 -242424.3873604064946637282937579993456883 0.8868352610098841226780875396125040 0.0604973455122860573252076844601500 1.0624046347066224529173128523834425 GT 1 -473115744262293461374225687880343329727055.3410609497107354297727835504305965 2.0432154826262774056547078984167020 0.0903173083152475395284399555322474 1.0946594307342100110980303765909025 GT 1 -734605463369903042011112184498938028.0804848540129660392699709121124216 0.3839764650418599351902269984647602 0.0780503669033333852169453830986183 1.0812646847955020195687278907564313 GT 1 -92913798287113997394315073251207545.2942401692815628217652305313620509 0.5261572680640177112610563708035603 0.0535761113228664796438039702579126 1.0550647250081079195016535983142521 GT 1 -11087455832932102680639983144021626379.5260379036499904060371594092374301 0.6621160859278688965644514106182649 0.0335426763345820657259614519205928 1.0341181368539875899944305948685196 GT 1 -745136078.4489870349767883807807988264156319 1.6995509996324779789400412630167306 0.0271990904707627925347535998924569 1.0275758328105181868951163645699978 GT 1 -42601687659659610048153509133488033993.0206486840146874886169994203714044 2.3603038447678287125390767958470419 0.0440503416857928292443630549507666 1.0450500259843993649937851209740496 GT 1 -25255340079286903319289.2199257192290839562193732619168841 0.6390823503725251730704010253853472 0.0733841403443508241190064218419686 1.0762161901783889162141755903449773 GT 1 -26520.6878696525527824204612944523378001 0.1782358262431661251345180332691317 0.0980998155352579221557982041560875 1.1032514252814544908160199955623000 GT 1 -1109506252306917033799.0447635793933320080693260659353300 1.0805002498300497229551728877352025 0.0032442924353672685189137189685285 1.0032495665623666176447355495667335 GT 1 -15965328417145.2308986276834301709399336540575715 1.1021807265188495578310004677874662 0.0645629217358396066622110433160852 1.0667413955362906273188088850058733 GT 1 -2693347052596642.1228588172523375371939364204305390 0.2271397942188653816869387488550614 0.0437947542334204475458887994825657 1.0447826967493577342473516281322509 GT 1 -5311393766792879.7324829056240276176348391910345144 0.8019447445726055920056033790566982 0.0490846957072280575642245644108374 1.0503302800318425731366509609801418 GT 1 -197192029075763344.7064340446230999052742334578427100 1.4866471244463082144028949324961269 0.0646508386995331060075122491182209 1.0668353848568221713398370808560979 GT 1 -1.8930670435795101689249497120006348 0.2021322773441059518024519517892583 0.0397278831982013136337133472103352 1.0405385796841605934486294823504339 GT 1 -136438061728275.7100351856484375332241214394051899 0.2481825852975536536183332100216183 0.0181739063095904859738289944694130 1.0183410803122851116896628291304729 GT 1 -5968459816980714430528453304.7853492472443598198160963451966467 0.2579883222151709981791635805240880 0.0156539791081217050967913752111283 1.0157777964954427068618411247683145 GT 1 -710461370900847377507856.9476976064234164522368449590100293 1.4692364373151432367697510657643459 0.0684898643721856182237875858715645 1.0709482080251186742571566811854076 GT 1 -3581415823711831777846418655.2421413607660663232747140515441437 0.1776446311747035259238904068487356 0.0116617307734492589542889290640025 1.0117302620724929576524519173388677 GT 1 -291763050217081.5090366370880744069264381656742118 1.8416683093097441945679823581541001 0.0734239823786076457699744188953739 1.0762591884612450891252782250269927 GT 1 -182472786308947020399256701121871652569876.5307313415421237031119156581434010 1.3055887985626894147748452938336344 0.0031389451599075220958244883031551 1.0031438819819152281447595390947439 GT 1 -568971205.0007852134059087777878136695623909 2.0547791912452215974247901513660352 0.0061696690786930696275315828564854 1.0061887801334335822010172798844484 GT 1 -399827549596791.5420951386671934857979525105421123 2.1956598711226313676203970991159601 0.0343292924249838984990487215068644 1.0349323853107602983215702330674140 GT 1 -423567365892913842728632157429647615785498.4179259073028862778218927458885545 2.4225536104017521498487014867128725 0.0904155269212692720995551373128338 1.0992578374363214556120333745055818 LT 2 -520679125719.6393196411999194845963267264039078 0.3842903903299377971605473113653179 0.0628267202624344981106990812774230 1.0648870834916344476791120198788024 GT 1 -48138777461412909174772.9625886812328341669290502409523216 1.7521111116309111689037870767745151 0.0451359102205155896617791156793140 1.0461862629960892523619667318483393 GT 1 -3961334701102377413336427812658054868685.9732205951719910069622987676409894 0.0066727517011211555659005449921672 0.0451142729141046345616803583391790 1.0461636031626170377395947997125046 GT 1 -585225.5443736994627797164679095515860851 0.2734905028980467319580026835413605 0.0398805665584932427995512217780619 1.0406975924236139638300260219584804 GT 1 -25.7763158806534995867054324647727020 0.9964543657689382638506987680936138 0.0788463700683680902858419836859817 1.0821284488943377681635347155086653 GT 1 -1549359730819621639255409497.6621799653957077338803170031632933 2.3300310069563263734611318374657257 0.0321965514471246222950907465711089 1.0327262613384269396128289584167981 GT 1 -1.5781733829913132561023208650772628 0.4685529429349206611058131939211956 0.0781211834990323940336206210854552 1.0813414995292689096030308449951105 GT 1 -64716219085110113938588124519218.3062039002241730429673869916273474 0.0814075670306366542069282785494203 0.0297307800361172752239448842706427 1.0301816996390545609888865665166000 GT 1 -272040013705638592939.2032716002352713547926045169977350 2.8744722498645979594128794823472053 0.0694574635620278447615972499528985 1.0719874904164823768875191503580717 LT 1 -18738531158.8988090448713508290975211237029797 0.7578736124688222369109963987168753 0.0974512086013604849117555821559643 1.1025325277448575660476816301785634 GT 1 -295025783137455529679551736088676792.4199268138010649816323007287340291 0.0919672474349815449201983041262992 0.0912499474542844773314237688009104 1.0956851923124392882621773857893364 GT 1 -14963247142113219734985173979262.6683278717864840447094977678179662 0.3936153569646370867575644417155785 0.0985499639590610479232653873900291 1.1037506610128548432750577541737768 GT 1 -36.3959427974642750097728383037384111 0.0646254062434775610215514768354221 0.0871580102223883337533896268071343 1.0911924804212848488279219864613413 GT 1 -23763.3221976135337939821751117888598574 3.8500211536047123858310257251219769 0.0790652873789736722309834081755888 1.0823661327302094377759761272879038 LT 1 -64851815795702543.8216651946751690987234394489484718 0.8653603868586225901846732546622369 0.0669348498034851570782499843551752 1.0692802518518958119838044683201430 GT 1 -2084039081799078475828.9192457541739194175008155955506570 0.9135954814015770235097736278793050 0.0970560700130386355281578554335902 1.1020948205306991576932317181489820 GT 1 -4085675712286802.3765455056381212974626196670160811 0.9177019587497738356744518532294467 0.0392973939759315998504109727458406 1.0400903809396785170185787775838288 GT 1 -1560513576915219731169243329141.4397194794003808470482200162397834 2.7386478461446478173780005737461149 0.0203411543102988986422758238840992 1.0205508845673460802932024671895963 GT 1 -10595459924456790619321.3549728946562611740089560505451325 0.6949736564845470807303809033712042 0.0850527255118204862546659638549111 1.0888888388771003059603547273464594 GT 1 -5797.5758572356907141422191141704615556 1.7560419376924492567329092247653423 0.0476797487455543561428469864124334 1.0488539023835008873293867684535113 GT 1 -2.7308772919208309760101140366451966 0.1922459495056820154980962120669553 0.0334378529685081767561745382078869 1.0340096812820022268009841450311323 GT 1 -3055744514388601854794587109224781372798743.3354138034885801760423239149759032 0.1301772385571097230454245498548425 0.0095550791375247679748562262817483 1.0096010217975804731165471382561870 GT 1 -56816032248.1237285505352995898179356080161269 0.1178859485767999208115987022216697 0.0225843097772196970897623031967829 1.0228432412538747968030897428149482 GT 1 -22347470923855172515290.4295198025416647129473288660949443 1.4662211091707273118230452645045023 0.0371472681856686265981126877599443 1.0378548053433243709109336327699616 GT 1 -20101811696115047125909555426125785.7862079226299210923951975116138802 2.8908722688223260064760436424240558 0.0845745561464558779168280211117498 1.0883663558096344447028633290224948 LT 1 -44011478330007393949812885.0627828776676883007978347081741225 4.9945704629068621229263228553736973 0.0553922464431723806529337895892827 1.0569855132573571896001620561797568 LT 1 -5282314064226920831143811416408.2346472327975101353009833315337796 0.2268902278539540790565339709952141 0.0569641554719102110465645846376534 1.0586509859066213117974511302550099 GT 1 -283133612554580489194414.5555517414560471522033995198136655 0.1958436349035609896197225340019198 0.0212587102122737900156647073970714 1.0214879310396085021186176072380329 GT 1 -444.0334943068020184909480802166156166 1.0173329922653115793670419532202803 0.0218719271402504888695764329049406 1.0221146636767012370171737342857341 GT 1 -29489022428810.2533530594992154632385945891409740 0.3947823203026192494448692500478423 0.0382529377880643915024125971946472 1.0390037919819668347699068702586790 GT 1 -27994469592536721953261.6017279628583028620913527884642111 0.5889074370407641901210429856845300 0.0828018093744158046731622075808538 1.0864317007155709489326264453681393 GT 1 -8241302.9599985300655265214514554227672877 0.2619641991013730444857331835021354 0.0127207575937241497500581381907355 1.0128023591919764228942809712882713 GT 1 -421565036540644431.2629850738499403941276248495426119 0.8511817516424716264998433676781545 0.0817904503405697440103488887796194 1.0853296468078666117476324467968557 GT 1 -262469762821552683964008895962602131495263.1884475833612844444404086415003293 1.8856492234912252832890754981645864 0.0634011467151570872649941418650469 1.0655002065716440714998902827235189 GT 1 -62757.9819205329538248860111099101659720 1.8995789971301167610984380353093892 0.0859609095609060727124072309370779 1.0898819399096091497338843036814398 GT 1 -47217357558938883796294410896210308.4486952558475392253664885323227990 0.4976259596709574440474426750576771 0.0435487236467260610760427946654982 1.0445254309149478222410406130230986 GT 1 -9035543550697968622769755605857.2876702556796410746651286342958105 0.1629954419654942463000963140273115 0.0274800357279447258412871094069552 1.0278646748857961975781224194586906 GT 1 -6737341315489613548421659677595.5904768245288593428663477545496806 2.4822158874259710839160211963101933 0.0902076743350962767329371715460287 1.0990077226805216378042928761715666 LT 2 -405807663738012048141659084048417794.7628111434230160235817115283343455 1.2750959682133706828969947135504368 0.0769365701393914960651857373032212 1.0800573254313827815393786322719326 GT 1 -909265445013896339680426062082389.3317866160929293597990943250440017 1.2041144498818003622769660605964021 0.0132660585008640363097905618750245 1.0133548387047336817976669932968182 GT 1 -27072059568061564114.3378308314675541165414255126144318 0.0097776298336877815371250322866339 0.0295229821956714207215396779125226 1.0299675574321075108520853631649286 GT 1 -352031691192409370812417143063096.8826863475845333684870714562405394 0.2971401177078547179746679517869649 0.0962562820946733953731071184280078 1.1012094566754224854269750796618408 GT 1 -1517655152030851460017958486817071.1349027327888200882244711596545890 1.3659632981213726563552873969717703 0.0385197081882479792308590388686275 1.0392812114990472109400746084399215 GT 1 -16094303587497924842718950196071922719374701.2448527594426857942646406000890184 0.6204815992842970904512532753773956 0.0662125670731122186519551609619994 1.0685064545280555580872290840374253 GT 1 -222655379135572360365587.9319033670139445344519379591851337 1.6580030416979633213326938951198613 0.0688499663178580580770634546573080 1.0713348614319955062272086824025846 GT 1 -227.0895721130455672649090468370379923 1.8937213542743374317488763140799625 0.0691718842445075277483525524367922 1.0716806419987053631600271483274902 GT 1 -3211919670613314085236845994535788703.1908272490015088629595449599251577 0.2833866376703547539012851008675801 0.0524588655357701970078189220775033 1.0538849292853378463536736371935779 GT 1 -185.5422888425578767606359208559253593 0.7864451002217901901622856595379946 0.0400976428413808653887628406847350 1.0409237109863045377656256242284722 GT 1 -11584247399756055388228379729313595.5194437914308554041667988619277324 0.7483527258787731562356961776407089 0.0547414948118391998732878055566550 1.0562968384328383130011211962276103 GT 1 -11753829503112046.2979296363657592598139264057198700 0.6535736358027283419643557822878049 0.0046721265749664930642410602928602 1.0046830750734905508595639647162434 GT 1 -167.8593009430863837495432915284597389 0.7634601794292519565582767709995560 0.0204115141749946542654380606291519 1.0206227079288934010943646178652159 GT 1 -10082270355952442964.8899477891787959455646264807672481 2.8325408130508918564715392023323621 0.0803177786408693708199399083805421 1.0837270801735289171248086278287401 LT 1 -274008500829505862.4293241160761604785207574478669913 0.3124588032143039815537246833080827 0.0998574965025753472414041352330430 1.1052021909724800435073368330218935 GT 1 -6614374740251799425652447924443176588.7332301607875869657509943113321086 2.7833453424855736440188388779844124 0.0865539881048647670605652900275190 1.0905310051895640505677515382325775 LT 1 -73080845506061915994932426463070.8818293841501169851387545331398008 0.1349137164146004608632195342986498 0.0627345100180945581608106157481086 1.0647886964481055484428280059156692 GT 1 -1674105574296374.6213066361183777703768802548916804 0.5276244079885611326211678559320390 0.0859542452008705666700335466843539 1.0898746488256609458832302967451330 GT 1 -11150985067.0135093631576567713620587674009130 0.6364504160015993614940458283157074 0.0347654577621712115650430494722029 1.0353841582236445420133111110842359 GT 1 -5803682862756414241779409216349954857566789.2721858828093066864175247516659280 4.8645777010556471076995785476582457 0.0843377286108976114927441076672221 1.0881076816512013082650698007418464 LT 1 -6.2608237381589370311254823054084828 0.9232480936240309497033554140089264 0.0890512530984190244984506427745537 1.0932686435665579493244129730042706 GT 1 -93944846194071509764054.0703235066087788528810452238804925 1.0211911184792020099517053122979080 0.0466306591559351116606283832559067 1.0477528944334693659803178552745226 GT 1 -18076208608746213692975674212210407089033.5276825590855385497610743502348007 0.3413526450645904125222028499947974 0.0607545062946032178911933828682948 1.0626783922979957548229615890209629 GT 1 -20327028108663436758918704221456.4185647495925155159364502488946174 0.9575895373611994665279886638154879 0.0055216045904303822405809839099343 1.0055369049969122025474247091152276 GT 1 -23309.0436654889790932925670624694184931 0.7057042677904969089026869174632847 0.0133610693967530974316257712058410 1.0134511316023463394151797606873762 GT 1 -437.1769324852433487400860410778841501 0.5952194255566564421772552543141310 0.0823688653274745747481860969461526 1.0859597831927726580567206560292659 GT 1 -2477496569304361315060530182558538.9446809602079571821136272758778798 0.2541807471625447326436514144907290 0.0305508066118539270480830012891450 1.0310272106358511358604117205898442 GT 1 -17512516313.5360013932407776858766626681571012 1.2549610812720561700170184135875521 0.0345241905115957855633322019941877 1.0351342323332948412366033435352487 GT 1 -5496697427930526325119664665195445696796.4097774325989738237403957980165892 1.1933941586848749878815896514506045 0.0801688002014393810508603817376449 1.0835651042531119302106420948786511 GT 1 -995844853.9955135851251458949322249838778078 2.9826316463965049157544324579690756 0.0919133459616929423761456555033607 1.0964154709714814543271886465869781 LT 1 -243029998465438948892.3064661282753737519881937389736516 2.4045436300828943722906628009047095 0.0520924662674017743796407930142300 1.0534983197410332789874514961029100 GT 1 -7682998463.8995313554566678923269879215904402 1.7406393575010993067955938394891897 0.0581811840863909530294949749504326 1.0599423626999146749549317166786646 GT 1 -79970440.3099323626608365323182217143826471 0.7053848207529191418465557888831908 0.0109937005300617603268354676347838 1.0110545778448890648714042448308842 GT 1 -45948270.1400431524024891149509016872066384 0.1191121665868069657562667805304334 0.0580942145990457940784801036275392 1.0598500249055828912320437697341974 GT 1 -5723523259.9722367379908832469104834163199470 2.3451620056097269937075558772205854 0.0543478739519537419770763638469676 1.0558805090103170014923640260214531 GT 1 -575454914615010430408.4628549932908663906620307864670698 1.3723244085062402561509304499311294 0.0948807734833242476410315189621715 1.0996886019520505682509180659940747 GT 1 -10644367687808219125811007928379.9534974234218791891693650683271495 0.2388095665987617085752055341700745 0.0150178858286974676937669778128109 1.0151317961766336287777209373088701 GT 1 -3585601727329893354325501473798350840706.9512412291319081994558456902204565 1.2151230675824175587421026919339994 0.0084342802761932929640907138426550 1.0084700500885007707212964302093933 GT 1 -2633774550288797.4589002994037361407845142880669865 1.2149246825963737566877947335309024 0.0983830790616714082648152338246492 1.1035655487548544255784198238123133 GT 1 -3863562975944563745879880.9254657890427528347264378514002560 0.4882148863656312832928342857610663 0.0207107673722187175543935355956945 1.0209282432838908678979459682771567 GT 1 -1417810330550885633465.2093545508661796684841424753076237 0.0824952013004319790626281210698562 0.0261700489100650101603651391439449 1.0265185787852486022841398822772352 GT 1 -6871330656133069233413717690659.6227888466998241979302448198160631 6.0551756765271616892593162129338343 0.0390319900359767228834639465161296 1.0398141588447635595414759915408173 LT 1 -86673821478553113580967.1556739104061055505226805444861960 0.1086712500248184010753554273903165 0.0293857814733782550002425039657500 1.0298261929048213163208959501308484 GT 1 -5561919751312137307803.9436536797951355626766881854292719 1.6454514772575218687895577042008448 0.0171405765835127658579985764802043 1.0172891767762107446301810303349672 GT 1 -831599460.1063547128833150473712517936826344 1.1646072764518724086202839884405368 0.0488307601551355855364881804679382 1.0500632723907955187911796259811698 GT 1 -402959687885964572994.2748978135382115859463518575861671 0.5134560878368455536544718801255236 0.0677772359906624148536340259714757 1.0701834756791997666716541037407653 GT 1 -216651869387.7985950441484696766837821102760179 2.1344956643935211553026274792543979 0.0821352023452045204802836185267660 1.0857051784514415019159908416196225 GT 1 -188065208831217564985.6748210196396681672562669352015053 0.8152109740480827885915573021867930 0.0990140595290597840441330365285138 1.1042656258563251166873968440668451 GT 1 -179116494397138011529511524267403865.9091592651740333380602774815491592 4.1474113850112093083356282267994102 0.0712544291079783240882777109510210 1.0739204518530368532101536474400818 LT 1 -9638423303794894942624287403084674682.8329729605204047063114642357867306 0.4389797212685038907889116271565747 0.0713370550399520180740096614361979 1.0740094208992353865931092594180674 GT 1 -21.1433482000601068012035799615996208 0.2893202334045169093951558707956922 0.0887769795333378597929519858396214 1.0929676032672137882121811025131331 GT 1 -2953434390492478563989141629307167686.4810371360416656003969855363311992 0.5715498706743009435404329531915509 0.0825661441187838483987276401653238 1.0861747933347401637016305363076801 GT 1 -63242696034220787537549.4644721245816825339923794018511704 2.6803161184192744217882158850715817 0.0636401531243257802720481653232096 1.0657554245969486776833851978236317 GT 1 -7201642242750339619434.3442593520727671597885478569627290 1.8928878142472647400818275369903847 0.0932266741358418680261748737379791 1.0978627764583445553894724796550811 GT 1 -2035485894042193.0280179383610975738887566218200968 0.5045779661945220544709344363267370 0.0249393565187615187639583204870910 1.0252556114762369050481991309843551 GT 1 -602488183484736346476904768236031215653.5501358272007172022636735423142632 1.4661684645367236764648722883088571 0.0587633005244563490061981195282467 1.0605606306711467242756228564639661 GT 1 -1324162557151586.2604180371486540550653085197355804 1.0284056317873762126942104536761222 0.0468846174606298774868217269137880 1.0480193096877664664723525828791470 GT 1 -130504904888611975474007.9143280757882568007678326666650673 1.9792632307397989431658895135900770 0.0643149907758282604409910827003810 1.0664763877496580084963548378347026 GT 1 -40211838.7110332855635837014500905749794657 0.4067943796804915886181499611874926 0.0682727350595295393601794841377534 1.0707151413063283274455136416036113 GT 1 -5409965785644240131176.2132580718433384271998956082742211 0.3543950992777274018577954849296961 0.0368684448332908621378924541644735 1.0375652667876773875731331109090896 GT 1 -2199367941448565264988787765093998.5864902270554901857700007447607421 0.6391538596041248784525948584315064 0.0253130355208047260711101804530432 1.0256389216083717862309283861471846 GT 1 -62564180808982120320148902556682072.1141773344879798060411213313359363 1.2396375875845472369087629891226195 0.0401570637457424874281589308444872 1.0409856159739969010561347086035998 GT 1 -9685245660267.0908841150064182222232291522450477 1.4289871121808202302433488992773121 0.0140341406001797942906609466707201 1.0141335503341250040706717374852928 GT 1 -429327406499690634649085225513706.7029555107501372015191096781540397 0.8378389245156698581634013547675660 0.0417045249014698102229891248248582 1.0425991194441211422326921904521634 GT 1 -23071992287065352763804632939595247415.7447188968137630207484547829377877 0.5602011636949999030619221720159534 0.0495421671380904240332715521039784 1.0508114811498665884524193864732601 GT 1 -5005926939444437598653.7960062329191064720628016005642908 0.7836645805303453426317635805772348 0.0143898586498899293917602705547327 1.0144943967366321062910807704375839 GT 1 -4384013078950860010715356429.8028802221923875236090807998734563 0.7271738585015642086506083208985912 0.0358506348157475678414847638239511 1.0365090532368482174625071040612693 GT 1 -639575.1261137242250234632197602517712539 3.5390594706545942569928707270149713 0.0672847761133267609539418004207654 1.0696553509994751932679662109578671 LT 1 -4207993215214659144897.7628712257653197463837624623606504 0.3696413879742717527216193285007269 0.0220587594076095259096822227425393 1.0223056919461417127056670729778905 GT 1 -51978599977156691452005915471948599543.2946603517536873317020408340350973 0.0536836591884826571692269987939372 0.0586540618498528154643839268870552 1.0604445787406307732849331761671680 GT 1 -16323905031923450349958526825986437276521671.2561336849650406196987938230011469 0.2304514134788438786385242447559149 0.0627796139349860375075828393154614 1.0648368204883840521349124904987100 GT 1 -303183006560728237136817038.5387019821450314153170992965883007 0.6995567532660767436739832612145905 0.0675554339381448715754166973405957 1.0699455758136455461037551727866541 GT 1 -541998477758044.2241175932863352837599787568305793 1.0267579480080458915201273493512853 0.0401776788161649413539057186785825 1.0410070937502324916630602609855229 GT 1 -55671749138858008506506356007573665332203.7100641875515598895143636620213738 1.5391989197522284262853404018281185 0.0810612011800022765727475137537638 1.0845357542520773513646556233470764 GT 1 -731913209610167968945734848268713462270258.1294546406762639889326559708862083 1.3158879856929970840401613945402896 0.0723146121444592365874984535141036 1.0750626253841788090631026320843107 GT 1 -85727234975194.2577352960771754450984526722067280 0.2533070084076251768577869609348108 0.0491902798823036272705174437466506 1.0504413204544365684529403163947262 GT 1 -1082071576667308763851795832044.4775635158719244422180847079440739 0.6671759462878857618122089356589994 0.0681265507054629791652824712971117 1.0705582575347674241021955049850975 GT 1 -411615140682017441838030286.0888141002208823173402443063924437 1.1463216420676440616052177021255877 0.0049494071748825016569345852830742 1.0049616960557926436506050312275986 GT 1 -822882317292296371575753438893557.6363495416708797828093242851350594 1.1029701901332322826205287014888518 0.0122636042674782268291905672912373 1.0123394227720490197571133739550809 GT 1 -159429209837457428713782.7083742717120581732657647983911532 1.7477103317613421342781406586552506 0.0349600776498583782911042222073341 1.0355858081878512545283482556507300 GT 1 -603388561651286243507449005315.7761147642059934643385831444885966 1.2613163488621318704955652828836574 0.0402410115013754235268937591607230 1.0410730796867635560757403251236066 GT 1 -3550159358910022041633670235.2321892055060253484544360563444685 3.2118432489072318525064512900648999 0.0217102059804489769333381425186228 1.0219493399358913855231384281828215 GT 1 -3536405041173823559670060273.4512409850170098879466929072241682 6.8229768939043953912678795997438661 0.0619238062942885883272067355375143 1.0639241033114422075220708203940318 LT 1 -81145058956955528768334335179716426.4776919038661533272133354881573372 0.2062199217354835518752893055538674 0.0097203113350451491218291800169333 1.0097678619500265838159565180920132 GT 1 -1289997396499452171693900170.4192711243970484992121114237112557 0.0217720371228293114638146089865926 0.0798432439528301417344142469174429 1.0832112364454752805828868904039555 GT 1 -147362657591.5119909526008342148315029665018059 0.9293867010602623878454717674549772 0.0737922678629547824022177427515401 1.0766567367334010974754472916604654 GT 1 -4773231735866694417771115719862334115615.7870552487731879438607393105184800 1.0501682891969204646411784007594557 0.0119055245049087669223737436851006 1.0119769628351139592618246287957258 GT 1 -1816745785194786410162557673969719.2319581639693216148041245173896602 0.6998589556741104140062644046627793 0.0497956055554688613897738724590866 1.0510781654825579985075775738902418 GT 1 -38918494685157254479808262.8254788829293713604194605381969611 0.5446140456705485613722850703609809 0.0172087907357351753850696957875308 1.0173585829576711424854384898600346 GT 1 -62679686348610036642979638409.3378456104884209590690998988465115 0.5873985427039888660661318433786088 0.0965738775523052931217700113363524 1.1015609404749081221923098697853932 GT 1 -10791982.4454402545758118199383046897876649 0.4424848539439319950079515860264010 0.0119952943487573947948029197521072 1.0120678184407099341355147827416301 GT 1 -1814230117435011277275140835936393652.9816133166311521821434973215808770 0.4851471533292023436409455463837972 0.0087447284985581039589960977829481 1.0087831880129784961990473460961785 GT 1 -39612.9434328684307322658704831418797360 1.5741789938475627722725467233750147 0.0709633157425122426574851813824610 1.0736070530496605259723565114182680 GT 1 -11003765298063052643615249909259.0669089311747807373410749136331998 2.3914468956268885037822030335658602 0.0789715137170487143291371851777801 1.0822643134733841441085481693164358 GT 1 -3430828513726116.0222475615805615582496421513465804 0.6755657547686397565751825662004180 0.0576298327418864569246286140754690 1.0593571227211593158550711573740753 GT 1 -3264699.2134606011528147193544304174748865 0.5786244315229025102011979298526692 0.0587807255938884262062204002895900 1.0605791437940822308124885505250041 GT 1 -578264010594980726031139790824.0169420408801287504296132956833515 0.0621877099430304844229731298606537 0.0307229646240808478326498091315134 1.0312048097317164458564943033425810 GT 1 -80029704490632669312937448345.3406458709729848235428004106565964 1.5103511639004107062102196100138722 0.0696645702184852679513091156616167 1.0722100806787909710306542755779056 GT 1 -15934723042473712926470767.0382515341039070593850989963253771 1.5748723897715082213198766067637222 0.0510227727030310240593842258433092 1.0523704771859797598303343149689617 GT 1 -473772637235849902213162429278.6009060734025528645004630495753175 0.1862005389810291176503188874625115 0.0344791860065670625953390297093744 1.0350876196106317403285319168021443 GT 1 -513859217637716357740935.0791906056680007974155436861377886 0.4230381171747304876987109349952707 0.0809367060459953089571605459146009 1.0844002863604064954598486191689365 GT 1 -6255839993492799839126379315154946560.8844689385870914285520381394995709 0.6898983700344524886835819826782100 0.0965472122222928667071289144238323 1.1015314251267976770795973807740819 GT 1 -434110695468410854189.0431746419779154626049529412664948 0.2636734329142787715535156593508561 0.0688047806563577751989349600898625 1.0712863358845056027023819121280647 GT 1 -3657242781703.9553398928666239956393530999928300 0.4291988554456894413142038956385729 0.0911865451719940482537136946727612 1.0956154260764217545455374634811952 GT 1 -1761599383044930283093775594626089911959.5612668523200078383344249973359232 0.9223860960468531266918317037789645 0.0567462136786122963204472161412279 1.0584199060229137719162758723104917 GT 1 -9328805.4685567496649112676863475644455822 1.7024254963503434342571539582046007 0.0433230963612666461727121023368089 1.0442895582861661596335682363139601 GT 1 -60580883392813214216011634563911471.4861404481926697435178049222939687 2.9140041231594393343556938125155132 0.0015634085078617619194971909765234 1.0015646319062235264158744341574635 GT 1 -251938033.0868667745739076428108770252737244 0.8408767209678040247246608999292606 0.0488252593113950337415993934578888 1.0500574891635801920034271655385490 GT 1 -75397694317185859147.3088149613597764682054201698911332 1.5412031739140328530733435815955744 0.0858596972835288686250105921811969 1.0897712152423696733644478443565844 GT 1 -3902.3037513789336463491920821530575267 1.6440541229169045474669487988384178 0.0621087599956310212591028617258889 1.0641212855211311195480654516391366 GT 1 -1374664492928.9524168339224165711644631273058961 3.4340335535360206374848376002064985 0.0578816857961029776091152802984607 1.0596244133500949566162518161490748 LT 1 -10136685835173979289581868526280576.4056620577065798607627563265234223 0.3822333902226384313492607557445494 0.0512946464434189792607605607772207 1.0526570095544496837504995710426577 GT 1 -212349.6896535555612649333038305934090413 0.0544425892561488140569057992621979 0.0867339244587292031938484310672542 1.0907280108979993851634054667522173 GT 1 -43254751918799181497711946724225351209732.4956026453089181198748917089827480 0.1401600620559586807688209677865693 0.0283507268384500573142310554902825 1.0287603697172455501500303798725338 GT 1 -259995475778844220499576194054863425827840.7792579683909857356990070443044750 1.3136468946559169247066578847841907 0.0713837017433309285345630585501527 1.0740596521216636616198099579726565 GT 1 -4485032502486095402137373330253.2519062780278050138497853499183648 1.5137236773698852091760487822687547 0.0780520521464995371922401429490842 1.0812665127095722620522039378705631 GT 1 -12549000090569485550514.7330716146671433041986901986332819 0.6561669669930210845038878824844632 0.0295851281142958722874551477797608 1.0300315959486017134242318887039485 GT 1 -54446426520030.5291289067137493901015290633978028 0.9970050962951579253777020157940914 0.0228712415940101260694282413827975 1.0231368460568281868708107042244483 GT 1 -150308757912.6941936135340585692771901975523406 1.5011726676264326879432758930608021 0.0076672527497850749174525623198291 1.0076967972457818959992789931651964 GT 1 -1118389747.9454824965562558236430883423663334 1.6855851351830900774356105162816640 0.0711045516256524895657970902803387 1.0737590886175176080854436706037527 GT 1 -12433688693193.6267564222621810924876552721464705 0.5334890356721373665430128299965429 0.0982309225523183256568818648494947 1.1033968033949034068616990448254225 GT 1 -43374814439735.8023267457943522412901029894950099 1.5044822219344626841937797076822849 0.0002681153205536325068645811496977 1.0002681512698920461469231995156591 GT 1 -1149.5935711724307780545075820318257311 0.2714401423884852119860301338143615 0.0911241733997187660846500021173447 1.0955467985360197428041338907167279 GT 1 -3858.3916452486723073111340131696733877 0.9413855087378174321030476561304168 0.0174357973298767241683784845491874 1.0175895911445594693796113738213583 GT 1 -80484816370272111822787614325297.7546488162141082897312944393084831 0.4320480781661437605627818347193293 0.0641424086147269401567711259318906 1.0662919600358199167028352053768622 GT 1 -9286144546816069621695285085778965156048.9513882086164867627108997163295117 0.8469416908867781046639417803844885 0.0926542188335625107643917739996254 1.0972316653928565005962089030455691 GT 1 -508862097710702157.5762247662244986009224109725670664 0.8291537532881892559514128959138587 0.0734150984177577321178606674881440 1.0762496005611788612610745860358023 GT 1 -14799227491520618889.2113652814777129648644186690333345 0.7209664940411922400220938076630015 0.0381086180182257394931620377417900 1.0388537432339341254307553293094608 GT 1 -2084042351210608655.5308876306730354729624364336485129 0.4489191908244441348131097471477487 0.0159971914264804449988108213098991 1.0161265276925753061352297401269341 GT 1 -3559210.1081720935546738296157635885839131 0.6725547361104317898235423326606958 0.0932333400570353469002348268992413 1.0978701277395356808229625040322210 GT 1 -29838478031375959696.4936045053417416610942370135153752 0.0999007683881776445400757663675909 0.0217125984481650911908852706461729 1.0219517855002386861870596085178317 GT 1 -405516680778.8259989430449073128032027921512612 0.1328866486329333921817528791121686 0.0853087140639737991942876490450368 1.0891686630558870934953458910136177 GT 1 -3082970641140211767354.6443415771180031625128531463219375 0.6621424671968256179144874113744207 0.0924958711754021258722170812223223 1.0970571631845025461713440915804272 GT 1 -2090936727095317201644066380968390028105.1090910542922307395386791019067581 0.8811643334472207450397766107314340 0.0526717224396805105984227698229659 1.0541095958543952040985957263272051 GT 1 -1903.5585002016733251456812660685875394 1.3189494620824721565568916620108880 0.0275427909016130990712202488926272 1.0279292053847134697912706156623528 GT 1 -901358340.0145244939890048520974880943335436 0.5200789504016480355225511578427080 0.0671798481958008723572772033880533 1.0695428600555844310774285716296069 GT 1 -3848184055054.1584956362772626628070825298427015 0.8847784476765526377632755993275536 0.0659980573012027601244177802292580 1.0682767607781586088602648232323777 GT 1 -1581350864116548485987201070.4862726383229119560113012198161271 1.3805246041931709956725480395419025 0.0378604216056113233693629141758622 1.0385957469551813161833110001374214 GT 1 -10792690114256620765.4249180042616632378425209133749584 0.4211484317137065820926931026630390 0.0079198565564221733338976974554230 1.0079513851989100976932609460745250 GT 1 -60120020614183064567467.0833335284279480573937659349982148 0.4155207553240738056544183670392076 0.0126573109502992357454532660509558 1.0127380971249588990423099884274120 GT 1 -1047160450637864657005336.8032369268177307620727593548259123 1.6561829443542989099451586913074694 0.0974203200832090896405752408775276 1.1024983046758126232188551637534165 GT 1 -1106485936098260724917411.9402509904961634869638283017862763 0.3241209852675782321174898888070584 0.0473563373706256884843172537040553 1.0485143564470358614017418119424168 GT 1 -63920841562109159.4778818991693836830517697512954267 1.6718441029344583933321960250964748 0.0740589352913561005560989306862339 1.0769446913844508319662465537118543 GT 1 -6197673840164688877374.5521483925765396849587038940765196 1.2893166314521815802904136810235691 0.0052147402678844241538157549469365 1.0052283844806026912882382832725785 GT 1 -1708367225674936217475125005790899.8372223142317262240692918086068303 0.6478273943928758607383778395592666 0.0329407445786894209747776623378219 1.0334955078247369474324767318573535 GT 1 -2288082369488631721934869245703250452783.8132837056068585383215906624511070 0.1909413908648115307640012089866997 0.0070064207917740216128991724487443 1.0070310810120225714106079242794262 GT 1 -22145629935832662519888738.7755735419201309398033194898075660 0.1487385814097862957003054174339138 0.0495365690280419258014936603081736 1.0508055912583124018439551843820121 GT 1 -37178683971499559143347.5581807948338641141804651218754469 0.0335134111113049639678751199528785 0.0317475659066186902171582319335244 1.0322624466804107558056957017369587 GT 1 -210445534612488344323817038.7105115235087843411563680599126521 0.6239792807404848348373842095052816 0.0933821808287443333889864257843586 1.0980342857256191783749581617769822 GT 1 -13307261373884514698552516219216824.2703399187453982170469090051263869 2.9851695584431691602289272627384564 0.0514724079963304746969049913801884 1.0542406651835284580250602719709482 LT 2 -5118968.0652816177918060644676795673093135 1.1595224722831843188885120600151711 0.0250673614921919444469704326821421 1.0253868990809651834525355515587354 GT 1 -75723689833402990917516685.3871263453858571480459293083889576 0.4616754452647109041693267525238632 0.0355971406107560296778705656849052 1.0362461677383676267352099857648877 GT 1 -215458375330466014998500480368380803233.8459843374761521008729824516615314 0.3191466922388999959672653734909601 0.0437670934016393562178516636985299 1.0447537694538540187191850339440832 GT 1 -3110558401200.0822719711425175494524013994074932 0.0463334863017205131390073911953969 0.0497720837088686633334071610370128 1.0510534112764034064390064934161122 GT 1 -28411570746113339973639297676280.1324547411516457976462370938401836 0.7121176464610701977900757094357897 0.0191096238358945693699817436783227 1.0192945726903926461789157735937453 GT 1 -121069383.8541412587171425071500055238892445 0.0061228463190132816182254923539523 0.0524231432339735764988286197180753 1.0538472299948808321859014732631889 GT 1 -74268314789340903539784942157601434030882.3207484172244067692594015994112553 0.6373500258719034423188211152176578 0.0026808017013939501408019326475861 1.0026844014852521547218718064276076 GT 1 -9364391103443301862628725987273369691.2091931224484048891748466935803588 1.6571798227469747042368872343012504 0.0075252842748956703613066504697845 1.0075537420852388174707726738561983 GT 1 -9346412346157.1603283303836148849300772186605643 4.5634967975487298054086292381158618 0.0797637351818545328413540896574001 1.0831248323240472488433178449567958 LT 1 -178098402026326480624750731668495.6034340715263029912784235986964712 2.7974708017269804566999690719986514 0.0528080192153271868365866935659119 1.0542534811206323543091661960409852 GT 1 -333307807607640638697.2783294019485131182708144297953872 1.0673796089326092046133359303389784 0.0756540218496889876615606604689067 1.0786688421962194985912107699094562 GT 1 -496547214335178333217.4124551107238969276220149609203015 1.6651046455099063012757792884532490 0.0138192078812143672266315348787171 1.0139155820408939903160399285652365 GT 1 -294.4685136890451865998228493765758862 1.2427121572360588054284458522053649 0.0156304861340466624552223427525966 1.0157539301992090586563623844595692 GT 1 -245808.0954469624531812106919783043848329 1.1023881544702524618744302854105460 0.0204548984554700669118691538442396 1.0206669971807976114271833943772309 GT 1 -6849607750430519780314336.4660268282223364617657252954292475 0.8850285760476737976773132732276676 0.0549638262286851338539280377998474 1.0565320730979367196300771752703181 GT 1 -1520618546453080497578484923467500.7165328870083295080272498417075547 3.5334155676847857796933311302148313 0.0951326914388956919014422054959352 1.0999669664064991877109091921094140 LT 1 -336793717003543269507674217.4289673076986848624734411282369819 0.9892435801801263991547230231050075 0.0133348475353400552249638263473071 1.0134245549975142870306864570463136 GT 1 -5702848985.6778501476062933906602298982504345 0.1022212179656524660171073349227796 0.0607908821087681461604969898885349 1.0627171218088872177231596231483376 GT 1 -25938184807831176304320467430003238176.5931646582960717054678706703951283 3.0778857772406983099443344275675042 0.0126140520771609775526725297332951 1.0126942846513508814984158570120655 GT 1 -1683470854673377030183998119117059706.8211885011179737906371494294722289 0.7816308570457229944412368625273215 0.0306318782191595734523343298798917 1.0311108405959496006001013636133961 GT 1 -2299.5016742320425884887124856007525972 0.3483395376628657047994421884195773 0.0728455187701350057160684408664915 1.0756350808818449884576953003170276 GT 1 -2365542755668225793566392521.4193490697390819204166099614111211 3.3798456122916206325862211286774680 0.0291524166832669458805676603941232 1.0295857917895239303896130188140087 GT 1 -18545450565843887581377738941.7088568711344643805497533283984122 0.0096343759978563996321391871489873 0.0982514273718568626186593984316908 1.1034195420906279076799692068343271 GT 1 -418403998515796695037.2871913480322173466755708616888455 0.6821594056071831173791761055518094 0.0925575972414820613188823426067053 1.0971251828920031222999577476832137 GT 1 -41936.0420884375828338971624535708507361 1.5832920836756134419902612909427089 0.0224737066440532552705424945908483 1.0227300889105178040364719086970322 GT 1 -97.7336722488002477196966633265828588 0.1163191505329193363550920951975263 0.0007182012852594368441669452872956 1.0007184593153549388313300755169190 GT 1 -3447695726109997887985723778084096.6985809675232604063910241070891495 0.2687787754645821605880657087513724 0.0391672184110957966961810302292187 1.0399548897425097162894195075609529 GT 1 -910806500690695189264501648414352997598664.6978818595507947614892987447989266 0.0196049890295776605712013061916431 0.0230878895853893036348138248877645 1.0233585896198455341750633529799310 GT 1 -47063735700549154703084.8911064377765250763106857022425669 0.5494556355839638879269103579023196 0.0807675622000009606962071476715176 1.0842162639057492267115691135242375 GT 1 -7586733968.1308074800151133550049742537915765 1.7526740015854691495997257278110933 0.0039085619357917882574504247121992 1.0039162203260365168970894479203625 GT 1 -1026782733846324465708.5362157706282491150894606965304129 6.8509230456759410318648527259253261 0.0945220425147355372675868424467926 1.0992923448757087210026526191188854 LT 1 -2701489307161093349148185.9883266020063872800683468247097416 0.7703071823780230570174872670474969 0.0639902136041465715290993728829122 1.0661293470080784408665349551732566 GT 1 -5489679078020653332607377318105.6955279184613799600437432560791721 1.7385525315038930746057005321506091 0.0666262960435067962366181811129253 1.0689496181832892160210911244442190 GT 1 -1337455488167002376301724442157403501418256.9768602155885640780088580112359042 0.7388978810621186669097310510428046 0.0760397711184688542250281605053640 1.0790862506028060720896336076278166 GT 1 -5.1584126688864729821829896637214780 0.4606261401334263442436462025417090 0.0374044581000915913528930078665156 1.0381219534349803831225932835850758 GT 1 -20950440903758.1667030285972153668022333751141718 0.2249436354249689926616375911073135 0.0698327361262542542010325316394640 1.0723908553788765287107416018770630 GT 1 -14758006814488038163633892403897549657259.7103465413683460040502473127133058 0.3130432031055597205604143163445590 0.0209804976789784981259957441146972 1.0212037159952685701895724652274412 GT 1 -517210688843544716019737.5605634007748021488006614141951804 0.4059652727555846571156267453014129 0.0789966368479366873641432250141412 1.0822915911025926038263782453832798 GT 1 -99610138018412340816659613594177.0565168512586923431064835235131414 0.2116903353997103656072081638683915 0.0504953559702617035217446836635649 1.0518148577151768967731602848172889 GT 1 -2632195141380968.5346701286112869636304496848995086 2.1459723923930672718466142535627967 0.0700713200262736523610664314470859 1.0726473839758200578769546196412374 GT 1 -6573.0465752796840365652977525569804758 0.4258765698426193960160011984385213 0.0345521286424504102331184228868091 1.0351631699149649094382939688899369 GT 1 -410341003457746273579822467.0921255060639518274287297989208517 2.1763877400067215702612812429563738 0.0777005604870039257657866098038126 1.0808853364463884299658741884389235 GT 1 -16023730040746000495.7814170176238203520040114416789644 2.6353637256937579581846539887493472 0.0456785257757941633289977826901908 1.0467546892194166220570351179056416 GT 1 -735139536661241094584761.0457976740798178817679356088494056 1.8942022994370284384938762150729171 0.0998167958939237763688348461295750 1.1051569762555134304884345683345596 GT 1 -13655849699025664323747753653.3784528476573612445060030507693370 0.4320087478776125001638743543261599 0.0114385126126391799473816035485128 1.0115044355873493246772701833156995 GT 1 -1339777857215045406909835637.6607421851451873773895917885580323 0.9192229215720105291797652728391681 0.0445963691191913496896676686346831 1.0456213776558450719313902913589848 GT 1 -1641486492937748174056.5896542823446665197297097125991497 2.5911785435842930330770628815440170 0.0394147623673974110560856515790556 1.0402125577306256029960645316482542 GT 1 -594834574753541416582150125827192818070692.5920582108943516005256188534371225 0.5221758445526277619236590840379835 0.0475446747120468120495311986474168 1.0487120756660676976381132930403204 GT 1 -384073065863842467755605.2470818540183766436430992411489398 1.1020283340114095736837057036429477 0.0722517664746041299726413091014301 1.0749948830848532572978254120545069 GT 1 -1781772878593368775910900593302369171.2918307506977863265510483917773180 1.6446633450100039273396408525037001 0.0781006798049341578678139761261480 1.0813192585733848973870985738706756 GT 1 -10.0389318906281581752277969810056493 0.4400342330638941224314508815841989 0.0718921694152081805419299406088524 1.0746073561954027734152205304105937 GT 1 -28458996028690757774336.8014116677928388413577789741003465 2.6192425920642633326467982848302229 0.0859969234843279945305482394742556 1.0939642653751887381104287599412584 LT 2 -2.1432669108622806253889946968912776 0.2522901808586519955808096589304818 0.0240841513172092070630798129031402 1.0243789168981498710664535911938566 GT 1 -639334156451565614421128766207364969177.1023944373862058409960196475953674 2.2427347614443845744981158063525918 0.0449362176077224306031700874480854 1.0459771528862988190324912841888339 GT 1 -6918386980756015.6782635209200669521655567002310159 2.0354309765713879187497641400456397 0.0274776872503574658623210830989664 1.0278622600513064741221979600548833 GT 1 -1776133915265266871.3069510870052298067858450759381775 1.1268124205183564535113577224995933 0.0736529719504739560098626279678967 1.0765063542284010170089890981967087 GT 1 -20473.7300631073602775662557358172674773 0.3637485520343301389382425595528158 0.0090209781952185088897293479595778 1.0090619135898507232845094597315727 GT 1 -167058.8920026869313519755260256543262992 0.7842946210187317894334733866570034 0.0231215331522756371842165461761883 1.0233930288962768909419308830154514 GT 1 -331268394479172527918.7129894523235594330482968962726606 3.2869504071608296287009598386423963 0.0208679604751959108787656365588705 1.0210887737127112085081527058514062 GT 1 -49919763792902.5873082764712314219986811205767340 0.1606200785377655563142707185191216 0.0371730829689453018941352701512085 1.0378816164313406979292530488406052 GT 1 -23362159410778750.9531462713463126040327550708241690 2.9609426067936400056392228284441064 0.0695522989485217982719941777177331 1.0720894096900665117432479673349359 LT 1 -293262052199999978447.9851315426295112533388654081051180 0.5650841679387904908299987790473873 0.0538244679657143871907970098457612 1.0553271753095881153681381212795112 GT 1 -6164239091471831.4031646058078475584872879280323450 0.5253297579676613041507205867739748 0.0404788983019905428732798421508289 1.0413209713864153060963506791869409 GT 1 -247300743032251102820431896858608969046.9184354032692543819259315642027062 1.6448727195932750620000201604087302 0.0775019614119165715630111999641536 1.0806700292614946305278365912942595 GT 1 -3093029887778892.6343737271554313411796154859901615 2.1999892398173380132751960406185074 0.0548317359745211479852239656343578 1.0563923101688717910699397159843612 GT 1 -7771854200800565497.6984635770315914551681798347208636 0.4244995616446500515960388219105174 0.0862393525674562070185683249592841 1.0901866155290818703508392698236460 GT 1 -3716730449014545239842482049977455475152.5702156957920721294769555210972377 0.6094250528170079088345765817685306 0.0060713470836298126366528395164820 1.0060898526518395933667559034864390 GT 1 -934211669602.1202530078208051532224658062144000 0.6998105122202450604044544249984604 0.0914988916401258463353939363149904 1.0959591711578010379466915596209522 GT 1 -20671132975171904950922078.4551820040516458129006161307783134 0.0178951620321712583455235906604483 0.0438720767949218939293603942346461 1.0448635639986406232151929143101066 GT 1 -31066387405130.4999642388048520950431651276330112 1.2718962480572758277817731992986425 0.0280789068639915688475900163841183 1.0284806577181903924560643579637655 GT 1 -29727207171.5508112694077055858807977850080210 0.9162371963492174191045957946088563 0.0794876082945421022042922211549898 1.0828248164708181738635386798033410 GT 1 -1422960708204763739664052379342.2825849606409690566156485063480808 1.0821897994319670010933573570834987 0.0968056142526692170376237258557546 1.1018174821233436334517606541057062 GT 1 -19941345199596443762.5770250894780759183052437598711895 3.7296208135829985331789994209007171 0.0719917502141886699475393964272158 1.0747146563800508679740376893297483 LT 1 -8262770.3139072133222428520547210957028227 0.4688409203876108594207493683860782 0.0763864943436180924439756697257116 1.0794615787672392308321524199155777 GT 1 -65.4294604930778496403965095947232997 0.1057974530382155541717439680763863 0.0716862523820431888345226766583418 1.0743855132299607850318997438552563 GT 1 -698576197760050981282463230782390.2694882131969068229842349785978860 0.7066470199247923142858374349372249 0.0529035050668185710522904128068591 1.0543542955982541665537603540774989 GT 1 -252682027899830970112762820.5769764391182264738964112974904226 2.2902799728736253684449043392454709 0.0569681822732335809016684479716502 1.0586552559563167313133868020632606 GT 1 -104493327835568484555795439114.7783919772169680429792890639423319 0.6557117669340666303557281360421448 0.0884345818832863790818393158489850 1.0925919177001660399302290821522614 GT 1 -1278102978796317505832903204214.7044710956342826962969717913136661 0.7166812440420012806601768003237021 0.0587842248418667772513036816159908 1.0605828615828889841700922211822015 GT 1 -5753897331.5504991125867951804611767837983609 2.6485569404453575777494515242274835 0.0378719130760087143999659192327206 1.0386076906890023865647600512183360 GT 1 -19598823427109912852469330977590779081191550.5840174328772254614723635735398650 0.8110119401317232358769658102027764 0.0512955184367491251005862223176746 1.0526579286951793309434871905432087 GT 1 -1815985684284541.4041654275540594898342841588429132 1.2087028755630723870725743219586396 0.0849421159908877961308785426093292 1.0887679544953773471467058720503891 GT 1 -15768876348816024927576154713671288.4302570860394458593361560006655651 0.9015704821027578983429953647997972 0.0020298527903064286064786719984619 1.0020319157336017868956068541932857 GT 1 -1851795265930005987917375483.7260630731150339725199127875970053 0.3971104297113661466845518663776693 0.0924524615089658519305307220340534 1.0970093302029668179253444733903966 GT 1 -20145872260742096671060903545835292327045.4367020602082400962250867565134144 1.5137538401007843805575986500631536 0.0581498727767245543179414701529173 1.0599091176758531329458848048654084 GT 1 -12169247381187127654662505396152807044197685.2325192446368465685222606839599890 3.3056340286908975592794780887893416 0.0402207018716296587624780202427206 1.0410519187337489531429460876090345 LT 1 -331277511188256.2958489060963220941227652126638744 0.5635538851281297386487755744642149 0.0371777937782826549859391519269118 1.0378865091288529062535128105296476 GT 1 -8916211042417326479164057554205207718.7594968941063235859223394184681112 0.7391366083567394513039741887737765 0.0177636259445602190310029521471410 1.0179232928154659383312981831119683 GT 1 -10565047365462145774034970.0373740586173409717363753763426430 0.1248071433643150607428188277310081 0.0811641159204016732322156249257871 1.0846477535536942385449031267811971 GT 1 -27.2662623287436232539338677131561102 0.8832417124242922953638728428056632 0.0090313758925104014183999995815021 1.0090724059934350792790540828257937 GT 1 -44069664372946609250653663330.4784839608901002666320469243127320 0.0888262195221553574273525811782505 0.0627081911903198718930547865626611 1.0647606164019064999779575456415485 GT 1 -65344823877902800080347355920350338.8205179762618282717412439644781896 0.6435941800716799364383433180883456 0.0069372376232877849157006231434620 1.0069614121239194177713786682411528 GT 1 -73054483664649924753424875620410929142.4442258727019850724046609636888051 5.2472401177262878336581381977431487 0.0697219957261516681991045861201157 1.0722718081785859934661396110891137 LT 1 -200401783.0647455446619789935400645622646551 0.5494576587098874529493392702217250 0.0907110416623952470773941100329373 1.0950923493597337005278318214225924 GT 1 -30729254531166118489361965795423837332635.4527802034803957889274511516172042 3.7435222947465421532631377653713798 0.0457489764164657553441690116330517 1.0468285146997528543477387797604861 LT 1 -812509634124.6292558391714197060070595020873003 1.1881082084501044334755274982796645 0.0245124940946743897543689352714308 1.0248179268889214888553406534723529 GT 1 -1801.1227469441500791767148707677540909 1.8590547923901851796156622148258295 0.0987964984149299522097233259294501 1.1040241849621442034467308953936186 GT 1 -1814368906279.8866294920836733162955482794483952 0.4446542675844315468580960856540005 0.0122558742374244096261038435893651 1.0123315967975888855120024100817441 GT 1 -75615051603626730164911990710210233530600.4437397638849342251728502241821799 0.1147049558080810609270638296458412 0.0165031146925990062063532086892156 1.0166408081052663519262655425928290 GT 1 -2087813185592049564139921167096638192099858.9164186484366086454529580851936477 0.8688124686440771602705270385239376 0.0295123904002074066428723551431712 1.0299566434820905186715018399580102 GT 1 -43.0129592518951512932258578125013109 0.5754647674660412598579239477498770 0.0281124200446890436567421354796554 1.0285151396928463631250143098769680 GT 1 -2081279382028872154764073151.5043676555382954095719306219468647 0.1213319901310514078365572487083973 0.0692804381130545260807865154849185 1.0717972695446702587144475721374760 GT 1 -141517634718206618.4571629839912359048678096720511689 1.6095487904230963342260197801894950 0.0188884379719043943388753363776425 1.0190691031221709107778008526407355 GT 1 -1070166432294039149.8010757249799101737842172036761010 0.0900540871834049033977696418808903 0.0155104027663831829534778553940388 1.0156319475066584308109505969784287 GT 1 -3800554170.9592817264423696934213474776912777 1.4986646364383860771251973414089792 0.0137502322192019169446907548239838 1.0138456422788127554401459033159541 GT 1 -273467.3484848611967370936474709401930796 1.4930348378436836293664153647149400 0.0492751464081153152535859867439563 1.0505305815460216407066638409041766 GT 1 -9619938489135971456574676340968651.2849833830973271869743032769934786 0.6875241141687690813416312008950681 0.0099277571276574292733182515944508 1.0099773659175461461019662519918391 GT 1 -13.8189140415968395510727828312321726 0.8537913997891818031497570587740004 0.0561885939445105783359825179726781 1.0578289145165425559061482180180790 GT 1 -2547724098.0864065606804734395923100170632278 0.4921241765596685257783462864910365 0.0752889685624744377568742685162072 1.0782739887221896692176051650974293 GT 1 -3420241887136588.3871194305760438440581903766829365 0.0753153789274332797176527943456547 0.0613097904686898071524995822374763 1.0632697695100192418983738858098535 GT 1 -241864240065221774866978262259561524.0244383964738796246260914182707412 0.1484203767571082913901977995819117 0.0195221069741941074050366571969339 1.0197151802334635449763134165096231 GT 1 -6104644915942535392393953654033754.9935623722697355669521000890611507 1.7366141357524637182183592980334007 0.0201837079715000162112760013139591 1.0203901820035757946848159070951626 GT 1 -42131035654.4820969666888612857414932334798843 0.4722058793959202111821536279597606 0.0639251856078600534010560718333082 1.0660598757926373222917495451809039 GT 1 -591379797954182399826384362010705703256819.7480210784990574170247989298722049 1.5112962387697418464188978210569069 0.0047004759909969353478565724627397 1.0047115579689524559013182066281903 GT 1 -15482012211649317698507490811571655.3052913569148880282303654785730599 0.0350691520160617017016147072745624 0.0079253294416170493123891755552044 1.0079569017898094250173017078778025 GT 1 -3189372626844961757075730156.0064724218045139562160482994099979 1.2700058921057357195119497639368062 0.0896823270806924232909443221661588 1.0939616492692512773651840224975693 GT 1 -27714.6179219381686550406758231021018596 2.8119829910238542528322883959727620 0.0156497144086120507738741665279839 1.0157734639841298989069755300458842 GT 1 -3497778530578417116469149895056898440.5175724397499690606874034763076936 1.5469263633006679325386300396342132 0.0046794657463938694453610400875379 1.0046904487225981479992256753961980 GT 1 -377362.6191782857571918147905141872001585 0.0924683631484026430897785240581567 0.0010284544105317736047819082607225 1.0010289836326540438924139977166121 GT 1 -16906333284908781.5218613105504143201001394744051859 0.0794980266135624539092505414400387 0.0923880172099518469536286068348857 1.0969383234420892953188872142961476 GT 1 -40176819927254.7508574934615760497301857042232509 0.8367808634586834523072673668116690 0.0975596471692626599553997213868310 1.1026526820054849150539930330550815 GT 1 -2931498237492323467578114706343.0703942893206240501893289268290805 0.6805915378335412024686621835187017 0.0022012377767894980909420692122529 1.0022036640618719711678173616997727 GT 1 -4638608571420333952961706287612476867869.9990116536759699201405570274353907 0.4117752933224007027630520266831208 0.0954125120595784804162402841174537 1.1002762536276604003721470111521200 GT 1 -694558265490836647414911774.4256231650254670984892386273608916 2.0659405487407922109678817408559246 0.0838633572176898351899174033202995 1.0875897520901101891187124245282008 GT 1 -220518546319869374607756139048.2632056906146884416781828999135756 4.7481040292065132638311888446122199 0.0792301620664658090532891872487452 1.0825451784820190265569053079091533 LT 1 -611350628686578.5580073326165042657494484213126857 2.1677465078328099249071891392676022 0.0249712831781549675673815819382920 1.0252883552674151096012094397848656 GT 1 -9997297.1844262551309160220587950955808824 0.4160416466762185742293675645120462 0.0192075069668132755775703296418294 1.0193943677515994503460042313993870 GT 1 -9209143811.9845376604170414169077903417959952 0.0847038346489193950469916919746907 0.0795885065488026663828932377795465 1.0829344334464847261283072267475593 GT 1 -419815648818897157095952905733.7150334578412202952971257412259409 0.2112133240398635646887391300005597 0.0350700011859300046228569293905290 1.0356997203633572657591571553062288 GT 1 -3173712.4774185501669943719310519754651798 1.2735773977312769860421350828525890 0.0557306017358112372240792350894466 1.0573437740324760702409754587864867 GT 1 -859412144850208860567097.3638322909249020193635999227584984 0.0144191891453249648407683056321342 0.0361789296802715117993827483657875 1.0368496133011016172747722624591927 GT 1 -7587079902605619223913598940.1254400648993082162318512642765171 0.0361753518213642542265881754884174 0.0146411868105788709900215646102861 1.0147494267932672335824781581477933 GT 1 -53895.7027880308468804179844024329361871 0.9272959924240766850425268956261560 0.0602324563306539594755950226630886 1.0621227282690637430078003466135846 GT 1 -322861321413895643407628956515342361119415.4407249975171453320621051367421189 1.5308841181710471197407383009645963 0.0606757652143596065626273580798516 1.0625945614142169837411147178883432 GT 1 -12838544547.0794790000690092362763514412197883 0.2347677317301129917134705137154899 0.0031853851246538675519959087547119 1.0031904692633473913521374286695667 GT 1 -7226610384073840847.9132946764427668786189978820761577 1.6322482936068594575709709518649974 0.0642175392480895641604952233105727 1.0663722432433920007739850238220074 GT 1 -80.4339462878065542769166021338860270 0.7145806447920079355647395625855700 0.0234596022591263608237507784120638 1.0237391595867851568130413727690656 GT 1 -92.2891432651844900054762230596390650 3.6467010898340767852000401323532374 0.0752940566992414313310464912171347 1.0782794911446682197321085299479451 LT 1 -21876808398854524491556898.3190091823657850239730506543663787 0.7829703177144050311446034026878486 0.0322536797003434952955085864215432 1.0327852918569439911501512396787917 GT 1 -8582028057971519313182888858373768362.8893910702630890000498565201722642 0.6166784811628541396094177900142994 0.0781261481336678362705844159886616 1.0813468848878591705991541682695417 GT 1 -59588.1228432972836165685152105635118773 2.1874845711671516481807770191818728 0.0573454356044023335370987539739608 1.0590553790518415448827121767510526 GT 1 -81422664620331660384583375208316.4840832222642502480242258557141427 0.5854382522501558051962446881459542 0.0943636607346523233650801210450675 1.0991174450576562508504769518040684 GT 1 -2691.9874503864820010455673551954024939 0.6160314241439308839255052974532168 0.0973663486080401300996186778770565 1.1024385095543729736009412918564414 GT 1 -488287633815979664416562518427855428.0409267696525889178506981321339214 1.5814337860993899138046487107944912 0.0208980246976741513150112104523313 1.0211194791567520797610876913150477 GT 1 -19196728469633739093074406.7135901031373159217783972832506314 0.2964817594968453099904943528646564 0.0877331898290635777246709358462179 1.0918227766816868816552371398271730 GT 1 -165229392275919363066.6438408852194656090920599766433042 0.0755534345153124165533360153306164 0.0831159214670689809273037687657201 1.0867742285301693641693737752875900 GT 1 -107488836350.3819235534089498111901008715762967 0.2410400477306190153729310706561036 0.0409120256747807771350122907457322 1.0417724728262457405588525546802109 GT 1 -38870735185.5442880352111831890561710544404004 0.1513723651244452627288639500425851 0.0433097324816044886474882194186735 1.0442755893210204966724299504926483 GT 1 -1405835555447129577783461818.5866165540006272229563322234588659 2.2443439389101546526861373404514341 0.0405851248800159320580623804370912 1.0414316854273392169406909368186193 GT 1 -161401889.6469999721613357657773064669718787 0.6173243440464133766084783759754993 0.0295286621295676697192783075897268 1.0299734101729902435211900753661804 GT 1 -5856186.0427442065710330887999835165592843 3.3674536167685228799555637061051750 0.0041905312224027537933668737950807 1.0041993361050653637967566600543269 GT 1 -649950557547651959018969664250038580867.4195379830416596644679101801557669 0.4461662350452831199522084429598491 0.0603376862986969126435287269505317 1.0622347090037958537800158357069321 GT 1 -29218790.6405912584419335511516539385763817 0.6289547862317063335635788909900249 0.0983142876934898882761651242243337 1.1034892538868198719652870008155652 GT 1 -1775847278970.5846750039745519680960297637513395 0.3843075645821767869315842179029059 0.0318673265612686853176016523794913 1.0323861417598005445597810460191684 GT 1 -15083783538848296197.5114473636182253764969713189134927 0.7954873357910393568678080614711799 0.0113904119114439627614710514283019 1.0114557795031072177210125849260170 GT 1 -1213512571396014186296658630990769271391294.6876778292669943033069718795139770 0.1165363790320936875864835321600192 0.0238117977341079127258931206885171 1.0240998809679328514352188783705082 GT 1 -3111227866146110132560467498665178.2206234724400291615155939699061925 0.8297249447703632268971018099927990 0.0786192140038132444532056533084412 1.0818818797515938971638842620204754 GT 1 -55782.6268649754559783537902830649612334 1.1472962877931062945548144306178857 0.0018008614809719334292251688115267 1.0018024849814345137200765143620482 GT 1 -922193826843605454647645209054507.5037284642319464064672762696845920 2.3238654939783300237396800749791281 0.0240693317938060659377401205556323 1.0243637317662502107578369136452194 GT 1 -16.7873785850974897055402028152908874 0.3859764526169785099495515227307080 0.0037329444212618650911750910999432 1.0037399292463487025224350339362301 GT 1 -4527642021238818198034094992632614282150395.7860506246243113663726556825575088 1.9915756075835076984194087322436246 0.0271631047185349929293907220216316 1.0275388415964875732086224542349697 GT 1 -61740.1497938569547530327727688537474834 0.9005994675575800679302773598748212 0.0087714564823684087997500227158730 1.0088101521512069508966750739167041 GT 1 -403168399070681906381540393552394215886713.1202956213680890655437024359399781 0.3103621510364419406230785660201153 0.0490986284513515273444550396079845 1.0503449320688140701691368320513623 GT 1 -2045429919860750490854976241068078512692895.3834365521535628747559255503620184 0.0406373019394100166473965260920597 0.0832241325060185812994802151687048 1.0868922559095748925264586196434467 GT 1 -4273234938240914421011695839275510227.1669046280867018984711769737610018 0.8252544075465256609095286088721139 0.0422307901002687560106989916847531 1.0431484382809566034110175996301710 GT 1 -2094584417582980676477057802361251598343962.6446873235878676290533272133294180 0.0246459513398868237397305470716283 0.0175559635276695388961641606263219 1.0177118971945280447282817258082979 GT 1 -327656991668329191999.0169645787509458855293589901522339 1.3386617992147533144457949327014521 0.0647122451973736409959965178722160 1.0669010378943881290164575302935850 GT 1 -5844.2055194130822668647736196272825669 1.4150189634476368197854453342580142 0.0936911950478780784118735394107644 1.0983751866953711122897000494927928 GT 1 -3458322636.3331510439811140860966889306520672 0.3753073572429834710008922758632359 0.0320178891537313811504617030518467 1.0325416724070413840584726706535162 GT 1 -27876512721182468262270.7972445741681647037248954129120137 1.3298502795235192617406413807814086 0.0536944286701735023022585962683952 1.0551897479973529892071629814340594 GT 1 -451198819156709384780311739001890412529.5803006055143952911825589707080574 1.3634274672308393991705278856032747 0.0858005267788113654991731341711739 1.0897064893030044748870462882756942 GT 1 -278856883735877111973964.5877955215884046291251283019871686 0.8671342400973975762299153164097843 0.0525587265338502760827164817546066 1.0539903244570867833354129257885031 GT 1 -1813090217.9929245973574654395288476321616867 2.4966836464832869097966786353842492 0.0334481107971316462857563310514447 1.0340202940326535517548923593986618 GT 1 -73168586.6371877140813963129187877676681782 0.9031858829399923069935235726060139 0.0603332325438721251599310037987559 1.0622299692752731057925953376205913 GT 1 -1316635387610139346853976490902448392.2835288439713763851782544280943038 1.7231433312462545728174535244987730 0.0219945412088356369631895403121538 1.0222400273768390797560909470388369 GT 1 -117794449348066468635915639302550741281.8991750039282735029653175671409765 0.3024347495307548517318455645123037 0.0582226421410030871233452275478804 1.0599863828091037836925675457850405 GT 1 -4732620565402727061064501.9922316025796931279614323612207783 1.4503684347933449979760371581199999 0.0430600045480045463889966080424641 1.0440145901720731537286713640582616 GT 1 -258888821971497675744109174.6860924247037165519002803599766468 0.6436954817672619282215437224614484 0.0493883994453249652593355578026211 1.0506497114739169380893253237729230 GT 1 -4009650964953.6343010619060972711457971395374977 0.0609211810862926279956674513184195 0.0571551677447417722119881625473720 1.0588535568071414264765616209442325 GT 1 -830397025.1982580644152756035115734521962836 0.0401110175218198809141179149146919 0.0633795640555880262811251024714913 1.0654771631835110181595248282346418 GT 1 -1034887389348129497915246396237557963243720.6455378296805448100138751564122077 1.6593094651866752899486282604615342 0.0979391544054359015752001859054030 1.1030733048813242155497896105179966 GT 1 -323610293689470.3564800789587684704006072989383277 0.2390463400617159878144049458191380 0.0019612926809790732927388305742311 1.0019632185339889061023098614805263 GT 1 -9.8686950364328162415129530665175313 0.9634080877556788797748222352825203 0.0623630370366388845851129556225478 1.0643924379806499450334882786195229 GT 1 -23939487876615533352975.5316656842019708112068378663777976 0.8601296161486703708224430487726104 0.0214902227023697394825411633513321 1.0217245000675364533359598199956958 GT 1 -7.5163849218148389367028269415626089 1.4402544661611408786324111537594772 0.0378487296610055043598922850882867 1.0385835950036053277388414792613844 GT 1 -2957398169807163381073135694.2340357524388729353662227773205550 1.0299708931099248456818556972146785 0.0400921676732561182720571524407326 1.0409180071222926172220497401441673 GT 1 -75804649743373250525993151.7882680705445194623591939604870174 1.6887068681472608621076370521549367 0.0996396729966449806534612014306436 1.1049602324447809011272861862957490 GT 1 -65336846636534931179719628.2914627152922037227392642529780913 0.0745294785887793584349543324332358 0.0265380060602884680738002860618391 1.0268964955691617539270161739846133 GT 1 -58994509029047923411431613068912670.0080649234377662509286484752651347 2.2011622892876149722391101545950786 0.0237051378375188937630173800414531 1.0239906253245541020215223820319481 GT 1 -1978520044560745354522145.2147387210598805474616794287048735 0.0794305017343130760354318699074618 0.0041116151767232276293260988407421 1.0041200911075591924465471930481492 GT 1 -34986971092.2223382853548942519881658405619159 2.5923253924534943554682969958933899 0.0694878303516924023808776732387105 1.0720201243735261359054340193501420 GT 1 -10069522988158140314270265461237294368149304.6018560635348032707375419078863431 0.0203443464586772696151261993581478 0.0344586627669375126598476368559224 1.0350663637027187945728944168604993 GT 1 -18291334178549441892339381935001.0520991065204076150506800252442960 0.3624792520303433702162223417950491 0.0276674956597510942070089992037756 1.0280574503640520504841661534907968 GT 1 -106238014986366061477.6394747439424198268390993527115770 1.0575347776358184910712769411671006 0.0469460235160071635773169229192262 1.0480837384386619163373130452923634 GT 1 -1657678391523898.0058370509052885169452539269365831 0.1422973936935478652238878866081379 0.0504472791558020525958043578693424 1.0517642254221675560035563713819027 GT 1 -3425268174194064.1629967749633574742772084497590395 1.7103126357246460614916758237207226 0.0817265245987282950238148705692312 1.0852600292388556979677303954794171 GT 1 -2389657966512173380090180133197.4744353645013064662278449813961043 0.5368513279576022992919835048333632 0.0649876043980559846758341524028818 1.0671954924530452837237307154443893 GT 1 -298536628.0904381690214544737300198341852385 0.6656707066780539463606689791036873 0.0249212899207303524402273519538797 1.0252370829562122230017356505391516 GT 1 -99916314721.1503126320683266413234620708998914 0.4580167893582656028269298401552552 0.0982155335900364488514777919911559 1.1033797382378032360417790683334045 GT 1 -173.6950898191730269916549071335098413 0.2467373664148806647898459965794104 0.0315834393961086120588230274605726 1.0320929530691097153315455863940142 GT 1 -603565671480.2864866345383079557331703113018190 1.3054246875307571353579325376799919 0.0400378615026501166534088514173062 1.0408614343632560510174026657668187 GT 1 -1.4539221494224285822147424021779908 0.1158149784405973229415982766011242 0.0550704787424061012158386642826668 1.0566449349494663008136607450843951 GT 1 -394829130881.7462504922645531752544245079598493 1.4116997120732339231047955058148832 0.0637266873400027228484917960837403 1.0658478444233283333165550728009817 GT 1 -103979755910778443.0853013671977323813047170374246911 0.8873546028497886619411031759998245 0.0615705152719411872999253687225616 1.0635475619232845013190294127730384 GT 1 -78067.1645118684924878024826794122777092 3.1128602388336311215502968831935302 0.0337403158682066847044706984003298 1.0343226567433621735104920251758276 GT 1 -1075252542.7402034220948731370317510823253094 1.6205078160447696581208155235784324 0.0840161455863112044447043947630891 1.0877565406492790878851845787611019 GT 1 -204342562209643764922586864343.6003476715726684237501498873697935 0.5135039098039033935030213423608916 0.0011958195819560989066222965153532 1.0011965351447052419163098141209607 GT 1 -6355936183134311766247871705623760910386.5480079159208018824749091994654680 0.0186646581851533519615917369893082 0.0190210132942163956273953116377926 1.0192042399257188490741661321414679 GT 1 -5184583273356677876827000582133414654585.4269027541189207767468520052828605 0.3433350090039586341784361317739010 0.0372758277678001655627562072694430 1.0379883337233671434003918956876853 GT 1 -6049.5632574414254037212210334099443506 0.0792903466597615386974292710476433 0.0916059893472373385364866316626425 1.0960770620653331492566531952918949 GT 1 -16337243435.4834666522888379489613440245904827 0.4006113740994356374002855478168299 0.0305433628360789800703642902024970 1.0310195323095934195959843543410889 GT 1 -13209930517388054370.2979002061096232919921823024474228 2.5158922877336393474265372896729418 0.0001946084547090274589216933211352 1.0001946273933914745784886072725458 GT 1 -2716629620152305273440277566122737477229.5904494907275404857293578673277113 0.0722666489893081606901454766298664 0.0623953424253853099057827437200196 1.0644268926220100843307339572019268 GT 1 -4569143133783621099563717309.3590415460833795526864481822989317 0.8193859279098183960858892951807215 0.0147730568427192995494502696456316 1.0148832652034075263679636884069312 GT 1 -52666864039728293321452206.9530852908805365380626565788813297 0.7464433853926525774274225157292159 0.0276268781850390509317415182911458 1.0280156780010047418978589110143302 GT 1 -1161207117273033.0448914633146652461804486312486085 1.5901771825535542015853667123136017 0.0552770835978798412631129490465838 1.0568636046393833246956110288348121 GT 1 -3271652783727231551.0843310922241033661331783628301656 1.3860595669123012857079856580728597 0.0125946603494812258784053487610778 1.0126746453833407378073490281734385 GT 1 -59209030.6514858869321724949526985722212661 3.8921717430965042943188922535694986 0.0478827929210035954843928587900641 1.0490671350893900680791326601844824 LT 1 -1969737955893.0149916556891652504253216237291378 0.3820450196411078448769237020849200 0.0981057981107146511403012985998304 1.1032580586045228072421372741103174 GT 1 -32280215984766978943688139680.5583188089856952140978195694021757 0.2816178310459376811468798103850547 0.0760521497983828997529206426174021 1.0790996481089421699942089538277977 GT 1 -28337556.6837475079481823233813372709541185 0.3841005169005853560436389431625776 0.0775152364601770000895562075197667 1.0806844196918502380380638814062166 GT 1 -8120757921763536139866877.3946514688738831449484237736457436 1.1321214446571391233757499567610618 0.0244777724313960458432456441547745 1.0247823333573400908082705733365553 GT 1 -3841516402404281304115291.3608584083041152266072397151959796 0.7078293440221888379583375922663122 0.0364742068924327110943626476832851 1.0371560212654120161854565503674033 GT 1 -4835334739.7015030296710917363081699437565229 0.9737336862816080665418049229919433 0.0005371465238877410208725908768791 1.0005372908387629396560444631053747 GT 1 -4165618865964672220256941360467.4915439087176825455405717891010562 2.1700741207840985894300851099441920 0.0319915409764124155681491344256908 1.0325144530830109332724047136089948 GT 1 -185622152076385071463526.8994643954805748865775873116172076 1.2067201763203111908500414350811074 0.0940898018020829932727764199156861 1.0988150968386156948566155976026787 GT 1 -13488163727391184743247411514539562534.5468974036399896433740815276052048 3.0088037579914592828273906814699445 0.0334536165927038201394694366808473 1.0340259903758247186765568881124745 GT 1 -41022999145.4827819298321635859427684976979459 0.6535548487050413429184830935635915 0.0640256740368593088846133731611381 1.0661672324073004385490312335871922 GT 1 -149666471197240830301234117316902.6553375541566730346576540775067902 0.2711600078540602441023352459364757 0.0542655038779994645956586787114856 1.0557934088129899776871513240471808 GT 1 -2236645259876391282946803232334441288.2235022106975374595611985962093225 2.9904722653312210277281832410936285 0.0371744113471838304981405084636096 1.0378829960969185816795393698236299 GT 1 -3464701332.7346042131056223637469385883296567 1.2259465241346854742175488243867023 0.0824339066550184699555577244318999 1.0860306653046003758589280901772459 GT 1 -2530299.2099117568607724665776757462307816 2.0208242651688746666306591854603800 0.0526656207058836377301730831066930 1.0541031548832019213777030582983346 GT 1 -116895755783779870875246.2818616680353621077823446001262668 0.2733888279918888592907828157998094 0.0871248009428993366148562337520758 1.0911561009867308519989746276348889 GT 1 -1585519051583775802871.3728795021940318064706794438097831 1.4200219614110772004022733483641954 0.0651965831897424331220611123791884 1.0674190211997478666301573515990398 GT 1 -60626681087315038003201523.3268962868357280914991472377187249 1.1646745475656675992917682316941435 0.0015526180110922414174878655599332 1.0015538245714830756590067058785687 GT 1 -18863271482425961165.4612456316620984607104069080970551 1.0321997497238800522883291545875133 0.0810682064131887644469415801265125 1.0845433774582110846418569440530515 GT 1 -38797712.7822637903750901417770829346106963 0.1426192345980908650093261361486354 0.0384206093852414379615985487160829 1.0391781478198490503510180957592596 GT 1 -7131618465394237972771327355.2753968392556734929467784890081418 0.8587109157076015021470855374140718 0.0880901919949480239138092476323378 1.0922141885295146867664348183541699 GT 1 -307374520618929376785.8945115876511227741916117248559156 0.2237738286492075227152453438696798 0.0814301834212126172476614622477436 1.0849373656982253141158687554908255 GT 1 -2565571758826043469549.2085250341381344470279174320209485 0.9806226629512738885837164203258897 0.0351079130437978583178604464616863 1.0357390108846465365108235645287964 GT 1 -2802290648494999518.3109401221518098198506246906473445 0.5003360089779218396773500616850415 0.0423275604747281309529699657947032 1.0432494806432449627227319805394075 GT 1 -32525.9960361192610462582077386773514274 1.8149400806771034336162461877837227 0.0045805251727157377893228199926418 1.0045910479235904693210753705625781 GT 1 -10205837888500168824175814954087669893796015.5481934417375700960963591185648555 1.4246212989164766430633422223518973 0.0074271034575802418580726453569277 1.0074548217200156009100693158937748 GT 1 -32025648601476.2895204203417981020879118879406323 0.1052616598381313969579245051680684 0.0122782539448952196958815225394696 1.0123542544479092884735090610539768 GT 1 -67402786910861861928588705998856909.4846921475445150843405524588579703 0.7235999169107584514409929077187707 0.0368803236044744568811455062527404 1.0375776003514297246582452884191340 GT 1 -72556524474535467842803.8200684844940755967256513464160945 0.2879454612494767133362804509374036 0.0530502095288392467069922079197893 1.0545092067674738090321317989095857 GT 1 -327448920440283545618132991015595124454.1841670154811892885307650819147697 0.0021742675892965882440789150033585 0.0405724822490269961164576155341962 1.0414185080751647081452930771571885 GT 1 -38153093057.2346161226337708822027603714419248 0.7932920078604887357219829217440203 0.0362434808803556719188428848124159 1.0369165898009965606834019813208547 GT 1 -267940788832642883017865657526435089932316.7539714566926851948732486031665724 0.7387431628254002058319542405485758 0.0118332016188697190367177863013949 1.0119037712110839233578705604157380 GT 1 -27367764535517854.6931525430759127209400498911710677 0.4410654021925652849580104724835678 0.0982001486536601255331374883536048 1.1033626778362182015712971356596966 GT 1 -1181960550598416000.8700794100405582521593200712141051 0.9916283330891321983665564458211638 0.0639005825752084906201578700263153 1.0660335929475528645201347199730338 GT 1 -8326646641332642734850948125.4811315996526100917699760717457854 0.6726548075069116267560425285231264 0.0742995418638393363405482427665285 1.0772045760012829168129500015297067 GT 1 -37623429586.8968851101729705265240317823901207 1.4171183376413633369994709175335559 0.0659300124420025398211485400151169 1.0682039104150347859533979306712144 GT 1 -2359253812.7516707014999297885875824786997469 0.2633673561544864348496963142076868 0.0945467636123356350854263924778919 1.0993196469595043663845310835531526 GT 1 -28440666457302158704.7717255355286796732523496747210472 1.7661890508791736332059142516905951 0.0610358313277375324395345455116755 1.0629779595304228682755693256387310 GT 1 -7653799236788521764991501033961241654712108.6869435917961021719066765845632623 1.5648374415805278955466283826918813 0.0451306464881679094794382976386372 1.0461807504651481574939409729983422 GT 1 -39158535982957463467541919.1708708956998204350169941168466074 0.0183403541970276253818761974882606 0.0634223194795001307519324680289700 1.0655228128385514759749214069345836 GT 1 -78169805835.5523116226057850259692173298058545 0.6230290513808121914327266141225265 0.0809827235422809272170734630522670 1.0844503576108576384355746256312070 GT 1 -13643577612299377170650503.1674268730019966953144809537825122 1.1556164814408893075652549995221767 0.0834153009345861650254252863706426 1.0871008001891316199910692203897569 GT 1 -8025019849008173.7965588747425632793032878194024955 0.3726920644508229527867669089372519 0.0338597905270511575238168178026514 1.0344463109201111033335806742025326 GT 1 -621666343676965.1411571366443694906374992550297592 0.5122577117300357150739958134510953 0.0411896499838539635199593905737243 1.0420619817199016397104156220623740 GT 1 -571465120884584102787357018897.6619258097396671070458965849426759 0.1009405785080460480745685173114275 0.0558319963850480334946638247669313 1.0574511587403126515408367768150263 GT 1 -2756090349160814668900070006052.9319473272457568078268412417508714 1.0963732036556822155328047373455768 0.0309291313712727376042849284052796 1.0314175339259061419539735733693533 GT 1 -383304086160873017441449546175.4960495628102163625438869830038571 0.4648559737204804020187451984504446 0.0052129279820225423996390669828035 1.0052265626962594318407513078010268 GT 1 -7986406753572224497541.0060519078405946142903817947289771 0.0763599836485405273065659385201986 0.0928988481666108825952756550608957 1.0975013115644600499415273726325732 GT 1 -13347148896381.6626385545493699239903963029083902 0.2112533534208468880243843499038823 0.0102728246808344693242305391738955 1.0103259543184725971296166376656486 GT 1 -9766608789684984444175824168930664277.3433927225501242480982266833155406 3.3750779001507273851029255202619344 0.0645332905734597659218025929978297 1.0667097197627128820843150238228607 LT 1 -151105462349261984038351.6486612785227109459174673368253204 0.3247796612680440555547723253684855 0.0350144739889038039901802568976088 1.0356421767078684556362803912016202 GT 1 -662801517086608304211454084330.9335466122668524426907167524680971 1.5283189628009779348808792100915232 0.0332869985025462556968750541346096 1.0338536202408380857082968093905758 GT 1 -6775786550996149690084018344803830156.5156614960745675888351110522056011 0.5138168552056158368585912554979280 0.0521432838205524296967618116114188 1.0535519314210353517200540684391247 GT 1 -168627.0983203151961440946481915921531100 0.5831910840722732734759750848557672 0.0191712081882044666552564123340943 1.0193573587948824859544131506083203 GT 1 -7063803005701359044082616729130859923077679.4544223916643805163411820997203784 0.4185181290208658420397193842613676 0.0411596018122730229062587238232452 1.0420306431963341508986483970344835 GT 1 -248.9367550993342504194789847754091993 0.5261579385980507463911677862632787 0.0596731772168744442393460716692308 1.0615277803342621255726953172612544 GT 1 -347057434927217600331251.3960423955735095079647002100195041 1.7065479819066649818339518726797230 0.0622430830937599974425452557742712 1.0642645139809717436691322833877229 GT 1 -7543530056115579974242553178774686.8591835823623967081261123849284772 1.8361318972268274629864356948099191 0.0847826340500763400067965014240669 1.0885936835039309482557761507335539 GT 1 -10259.8221890746371659933318061807578798 0.6102131375961342397231443897894778 0.0557876254346557795205800053604657 1.0574041650827708622206913386422018 GT 1 -1436.3500459670450228395743652112307663 0.3197652749715304152439285606325384 0.0318276440864386004101515117438660 1.0323451539255140070488632166550802 GT 1 -583153369216233033908841753.3162534160925090415514800971830693 2.0911158129904467903243492268365150 0.0361487223734200463915412767721389 1.0368182725943823243941650211660977 GT 1 -10586.2959845091885166244178578092974603 4.4146119353380332191646646741245210 0.0337153600555929817145760119999911 1.0342968298453146789293214020676217 LT 1 -252675556319933582.3536448518873318742589352771358618 1.7045598801264717543853803527737007 0.0540755846914312522929237910705769 1.0555926123733583723683203413082569 GT 1 -4914567795452547612471.0633586956975482250586049085805341 0.0931652178479386624180630212394307 0.0040939443070687403907104691115336 1.0041023474395425560028260370313834 GT 1 -182197983572154441635488348192781256.1049846630708005954622639513782215 0.6876923157080279963613345378476095 0.0789015897691074042434004993937373 1.0821883969357045506108615864096614 GT 1 -2482414720881585334814.7888977784714049587051981080866220 0.3770426399527627716554002061613077 0.0296188155317851277763017675664150 1.0300663110000697441149206615498915 GT 1 -12557545712351174987314.4920122429362393810102632223522107 0.8145740008425294002468540101398236 0.0178622620826177709788028178872036 1.0180237178185641399907638665250972 GT 1 -3368930539196907045029286.7400232330072544490966786124159221 0.1332462817479093805732153756276837 0.0528583473055061565923195084241239 1.0543066165232893588563376287048157 GT 1 -164374338972368484.1273813362206110416130012742882086 1.8895876606988412800544899750643522 0.0716541598190170263375671129005510 1.0743509430123072579100960520766221 GT 1 -30032139309592497242747804711901507295.8426939323653617636824238683153858 1.0366526516702720732825003891361042 0.0935227214251350412572024753753137 1.0981893141042705712646432369052955 GT 1 -26736452245477.8746770131968202388470098023498124 0.4120576707923334185040978362012002 0.0444406979057304327536177719456447 1.0454584532881150188669636541134577 GT 1 -208555970151649695720231.6608906878628392339550822445125885 1.4773355046587976603177672556878339 0.0610853851677624776120000768857733 1.0630307359294873167125816769260959 GT 1 -34096143580395892907.4586761357504298161340546809994285 2.6127537958340371579031026102821047 0.0283499276053951236505118199691227 1.0287595471645526144402618518177696 GT 1 -24660674612778655386716265527303.5507040059197127116245675104093195 0.0006240476698809468299938323272624 0.0858711858446750672772185105076459 1.0897837829338985955599403169375160 GT 1 -255412435296617785783712.8026502496325871976430670365475038 2.3677802311321487553167366262895163 0.0765473677899083714211011807934970 1.0796357722553867522611901433334025 GT 1 -2459488341211303854406457317556065861102.2918286862523747790029803377220896 2.3528790966410178548085012563039303 0.0234216435758728998529482743482882 1.0237002897708281969395886115456905 GT 1 -4483916559624900013979127664133.4099230508453797858905164982426290 0.4708677905402906569290209629296798 0.0464829415428724715646682963804394 1.0475979637428815553907802460849772 GT 1 -7429129542124.2109025042396508087797041454725952 1.3039194262307357523383304064288740 0.0625184451348979348504124146596787 1.0645581961416805928211531374071170 GT 1 -382151830408884231211458507534266914137497.9691354248787605972340616279742953 0.8147191843201038484753712173755478 0.0859776060813259894574884309711769 1.0899002068230179695893801568016107 GT 1 -2962.8675815111500485304048938694764255 0.3801773033996970543900127347604026 0.0538933620626183448902793035027792 1.0553999911908849621489912994626812 GT 1 -15083263455621.7201731408264971351423251105634439 0.4411368794553120293885283915067104 0.0892720865648636457737224415679780 1.0935110943508651516399359470333015 GT 1 -3002705692445007036538967684.7081212044483031885757471098444213 0.5289206783679034474303048273160042 0.0098214297254435921871928821843111 1.0098699781042347103835786042095891 GT 1 -37479286931761342492159356.7317472460000044688128128937166274 1.7013178939381921660508811696935978 0.0814143125316630374112434250949103 1.0849200880213873848328269165916862 GT 1 -559162151566732258.2339781538844752072585290918580513 2.7819188187482123535478565139410205 0.0115298314087215643613327147577679 1.0115968152878677002073607169481526 GT 1 -10585295046273373281078178565018159.4587443808210410130901626882351672 3.6699335029479793349939974473570098 0.0788693122678588605164429172547196 1.0821533551471587762928789580157084 LT 1 -167527250680.6318468429951023705834937493919854 6.1361936728077082124541710767222927 0.0068998425714586216559435010687839 1.0069237565504911830200219280422593 LT 1 -581480269266172112506328961357648856715334.1471499497229829128280876368153242 0.3068511455426364360754327292780031 0.0428475229075235434011003226743083 1.0437925720152686934360706898277101 GT 1 -318152.1196082097703762013437291145440447 2.2427727152030178112782318187986058 0.0249590746737604552322888141350317 1.0252758341716236550451297593298304 GT 1 -74736408726935577768351122473.5584165535665046786363389559065915 0.7406898801948517465023770225666216 0.0050499705716377746360742145368844 1.0050627647647330443372522121847881 GT 1 -49086744649376372710749.4828515445579353824517384956389827 0.2055528176257602105394716681511925 0.0586514311560918974965624084973839 1.0604417841356099938978215078163137 GT 1 -154028872685135106184731941.0650578777906625887605471466671977 2.4930114781653339343736829997148956 0.0711107690203272794778253039145600 1.0737657819601249709645729983196666 GT 1 -453045455350410235624.8988792948725996382399737427425669 0.9430129294855850787840474674629170 0.0718140369989160648554025511625311 1.0745231751066028972029165806881746 GT 1 -73678.1419069871388702350254277158981991 0.4538879422960363924578099723915693 0.0905173327033311476809959025301041 1.0948793386033898577847289309336312 GT 1 -182496020178789578478630289.4048222389803396437923834358812237 0.4449491651871894319600401449582360 0.0146015068181890511235406542510894 1.0147091580171303637486210252683727 GT 1 -25995.1913033984432375215106274704824498 3.1203099351624391331356808241542792 0.0901009433951327958012098453881519 1.0944216124319129262609243471436332 LT 1 -39404905854868483692702.9783435690395381482922747417863730 1.6218711472479068676915540810740007 0.0267378613332390784125101704595066 1.0271018202685429163741287499719289 GT 1 -802949514866208582441361.8789864788563805251533608503280373 0.1954418352889342615065018330638979 0.0617916995637209795167710434854562 1.0637832859341219079389114546024624 GT 1 -150560802844758057533.3190231183650721588722187953435237 2.0409067402989897212421619670949766 0.0135046417992212676400241986400377 1.0135966588515925903194149657517294 GT 1 -1549350665452908361386051656980406.1882443004025577248560800341030423 0.3139587072973521779251413320025521 0.0436385863473883607682780046213301 1.0446193896190048660782163567030571 GT 1 -2239634795721.8451676074106223031872785117690835 0.3973627106848189333163082692691861 0.0606319044989878868536973643765801 1.0625478686006331903450594069523676 GT 1 -505.8828242387040546589595854739434235 1.7900472009091222876416887432255023 0.0491008496362177512102888198740692 1.0503472679445703679700355255419205 GT 1 -1695258375451409002109.7357473478214777545167380065561499 1.2277253556788460807650941672815432 0.0484712309424418516605175766305366 1.0496853572247622895049065760540582 GT 1 -56007481965194787034707613.8047719703639816914017540645098285 1.7903648870663752213628595337775954 0.0830591278749578021714683165623955 1.0867122884937346335585094208110672 GT 1 -236870465169608961206685434490846120473306.3200903791233058726031625762786076 6.2871964737305405415299861682588434 0.0690165437469031009268502331759377 1.0715137717307358677698285038676053 LT 1 -1224299336696540166651010559156777580.7962822618945899336855724388379176 0.6713234826487946136453692452597005 0.0727104347752060833882487152430211 1.0754893940972519426291345799303968 GT 1 -15797837.3325394438384619087204197276343568 1.1248041538997713302304808626061594 0.0630285761230659072109519764267443 1.0651024946720226534189964308349626 GT 1 -212638470385798471984.8056285469687442190027255369018543 0.7495573554022615858476539946352078 0.0553428952347091433532285335885878 1.0569332694353678346787450083263693 GT 1 -3713952756.2135301375090921624621122359790832 3.2537232801090420733852678533652046 0.0752917949994190571010933461102932 1.0782770452892339972823201721726512 LT 1 -10942878.9454127879617085166158525197879357 0.1855229491524742109009600980450295 0.0767394947635856110493355607175109 1.0798438467748934216572396974875832 GT 1 -6201.7584019737660984401091650371130747 1.4719143059484404087616370337935875 0.0834546998110576988155653484993890 1.0871437855491373219896105206775822 GT 1 -894847427280530112630280232.0046834891279270360840257440079894 0.6968330105387367992848363242511967 0.0799161855506573535050044204299240 1.0832905104263176123062689871755955 GT 1 -25087367704323063444331.2956572239621675147880222621399411 0.5734013316395198952687304256541826 0.0828277113697036486935217814941464 1.0864599414614644096186586936604160 GT 1 -1393135534206336415738007252.6629751262946796645597892291709611 0.9889285510575484042317820215673705 0.0227842862539602128105336812137376 1.0230478593491660080853532944295917 GT 1 -31214644182952544681315614172582.0250408235898550782229517309105096 5.3511631319116205383820630021313707 0.0071188910192777609625276896054143 1.0071443512282078224659326857619575 LT 1 -2.0539640403152643757378424371949864 0.1278149924567382803972659424018002 0.0783748295442414066733721919419958 1.0816166777210213502059923416678011 GT 1 -26031376.1272937497100531484895533844649834 0.9400880897168361272262792634641289 0.0416542430197975069817578682938129 1.0425466506973966398433678726783397 GT 1 -689574452121.4678093536049471230949411507976891 0.1032947149083700531562528615794588 0.0750700432688321592413771693148077 1.0780372667895930466586730703709879 GT 1 -74099204800378279740589.8119791761795371088172275993690670 0.1072174331552344321036197047393396 0.0174798786360330272104617244960839 1.0176344556886653459527953500813031 GT 1 -3345363.7955942210712476450849838140759169 0.3918370284333873138383363043181485 0.0679157761974487140562485763717784 1.0703320994927101373390830197584811 GT 1 -1624021379498519279895520298829258108370496.6695931962133952536079850485374460 7.6247230974396516712639476615705933 0.0031685442392634711163166004588374 1.0031735747045399458191805628421949 LT 1 -88205084490892238054354.2754538779680516443103514572721070 0.7314476608009904382184616617731556 0.0263144079754461140970233804082322 1.0266668282471395566919977712955645 GT 1 -33696327183860985782839466583.9594552651383999433414620088725112 0.0775584095376510677800375665208053 0.0727614159862710185477479682762362 1.0755443743477255852601978211929824 GT 1 -34048387.4813238545946696756311569668463036 1.2234878459517362244370890837683898 0.0885722938833872510118598572371681 1.0927430011009010165493476158798509 GT 1 -69007777090068039548049.9370998677763818291487545754069388 0.0404910119460406316772060149232925 0.0447621280850388227862226074476289 1.0457948889775878356320287387823416 GT 1 -48070235343940564581.9136980689450559564545519121332757 1.6145230578313787308927042374983313 0.0505242279576633919770852029335392 1.0518452655984384135828623682493183 GT 1 -2517205403814686431220286475026690421175256.1751680377379075913743239215012495 0.2818750938479727698694151088890802 0.0445934926513559444185829804193621 1.0456183669246605778352127201182067 GT 1 -298769872968749479601136.0135193365896732312520015062188408 0.5961365139687279780293516648222040 0.0742480773836842219174058768621273 1.0771489823703546907536143354551903 GT 1 -369162371782082813053773868081082.6587233240732255600249037335490862 1.4741378020760915585620189991593642 0.0959369950519057625848317850410249 1.1008562252795534344935760283927474 GT 1 -10363567389138036921042130204312654374193144.0841068462818939555185311335106940 0.2875055694031758332696456718630807 0.0316137111245720120322134839250800 1.0321242125527210731856916728694879 GT 1 -14460440589267114238427565569003248595490105.7582137949582937466248304932475276 0.3583751904393705760565055689109963 0.0618413540942425221130268786548249 1.0638362121814424916959833048254991 GT 1 -15907409346393586711922.1628181650132019949577744879416893 1.3744687890547328798316447751314067 0.0459134917389162561132126604144608 1.0470009321260338694776700623310674 GT 1 -320658307546949552830.8366909246985462507577452061125816 1.0064620742907133887033057995374328 0.0444896692582826316775258129502970 1.0455097034903279496604703463320831 GT 1 -191535.7753084815230443380932005550355876 0.9059655200848574288795761308359727 0.0053088698672783297870167219919501 1.0053230119915836483728815202704663 GT 1 -93075734098275352363.3636221922900502966277663220850869 0.4090594555182900219833341112293442 0.0511894710445307334813444807610481 1.0525461536718030345844158694990083 GT 1 -353889787217227571473572.2731890584256095821143825033661047 0.4414038925726277128868539351024957 0.0343022095152576950217841856028907 1.0349043400053147699734115565710832 GT 1 -262093210985938385933697.1856255816438925621545087364699939 0.2898391140551010879775733901920577 0.0141868160692607810249345978617631 1.0142884109610319824808232255477935 GT 1 -562235251342644987357823.5254326425744038856244902357371961 0.0838180190770857076838526579124158 0.0723460805089013548461580601447640 1.0750965473350807595997481027156466 GT 1 -828281081.8756651323634129235771685195204780 0.2604663771098856491401878469536076 0.0957201876813059806134684889624914 1.1006164395823189994609527971077729 GT 1 -3863590.3904864200194438851456563863093163 0.1568015627419810670076344976957363 0.0756297021960680811004969703528790 1.0786425324223092143315233294907258 GT 1 -86161932390146019819644696513004270924920.6170726117715800551439619696827897 0.3856970166738860393826446402848531 0.0623992900941897274247101953358773 1.0644311030075741226226225495261029 GT 1 -250256620241465297771782423226254064.3997089491894293497454651261601471 0.8697090299175213856115803183616780 0.0574691583067054839255544685470263 1.0591866369133560398718359821262742 GT 1 -32326394207782853468121613482212.2090619446126023643789401482099152 4.2474591309569429905919199882917891 0.0021790868619862170308024954015813 1.0021814645264818610713288617298907 GT 1 -4299089608.1292304741063597812337973392339019 0.7228212796663793356493654393624879 0.0182640960756135922700736711302819 1.0184329437382386470751092079482342 GT 1 -1602736966692634779805748953.1544527102687917959334823840305685 3.7332349252797682333210373652139538 0.0401532574945385051739920107045834 1.0409816504880685228816178971133733 LT 1 -1451660019897603837587999560.6530429240255582007321172615059535 0.9571424319594749165990796510778286 0.0552019736226084155890513248959091 1.0567841030328009716749461428340920 GT 1 -1320631358500227645903543112666879209.5553941974178450291012210806485892 0.0569543635455597825242795354725459 0.0059486879869131549878389805065223 1.0059664519143712336868530746399123 GT 1 -175807054832661931587804.9186088179138209420671907422653246 3.7606908338761834609724298132023275 0.0279097331615160076508492587971943 1.0283066117157999209178609703232127 LT 1 -2869656655901133436979201999016301802624.6440802196003936779603812535839230 1.0065438017280474234046014262462925 0.0688883922774956985041241623554560 1.0713761294888450371758433716653900 GT 1 -9552.7255706443137309029114603669007686 0.1872624321033435518700196447635653 0.0919543267087187384749694948399893 1.0964606006643084180414269222486556 GT 1 -10562609669752882338213808115809.8183345241948991113070657997005345 0.4121035543693165674002246151625649 0.0809842850060058603572721987373532 1.0844520566703763691002067793085322 GT 1 -32067796320545255620616424197992382739.3733449821663962382025162007995121 0.1892470696715438519142277905925561 0.0614845637400140942102779786246174 1.0634559752911717932244968547820771 GT 1 -463205.5673211020573459357320528566681996 3.2556265133062286836679255227713736 0.0244884654806854664519153363911041 1.0247932947763552947281976792747083 GT 1 -232915113020522985340657276.8406603693924176573533457081330320 0.4361252348033831595650179744934450 0.0995358347347424499096691902153781 1.1048449094219506181764815270833033 GT 1 -4641844374112124220098.3391845646780584763826271019877331 0.6352774017473308045771578959006704 0.0504697754257462840153621431702776 1.0517879171413729293721778392616165 GT 1 -3153985362518450507781343471718146.0033082601336788399985195979975582 1.6011528152786424434302631950842198 0.0239074118571433639973437048823199 1.0241978321679668173848198452281569 GT 1 -5170933393055688.8268969860612151195113796384437209 0.9893997701024177083666497242890381 0.0135090771141069190443604311121208 1.0136011548938896670274727567093846 GT 1 -654073400953983215449214930381824.0766782029855526835535524478893656 0.0304710354630289092610046748866004 0.0636667037420509783040725579244766 1.0657837801423559185163620987876209 GT 1 -2187056484359516916737303193144811.3971351092038902851576209752375302 0.0056345153184865149281734899215254 0.0403160315412108476382439712558111 1.0411512482404074123296877792318020 GT 1 -2342779801.3480746503908543582848934275137079 1.0134369377788133411443408946889975 0.0935233653618550393021440026259750 1.0981900244772318528389057755267977 GT 1 -4636105691350789342957714875829059357.3803723395794978496950305069478187 0.7818774165460612925618908309229911 0.0751524936697720160411332909578703 1.0781264130816643144709710945338539 GT 1 -366689865314648758722532922511810088.6556806893709980157657637125208539 0.4358954026962876487131085825405414 0.0237246314415397369138545421657929 1.0240105924465708022770433325713621 GT 1 -7.2253075309856909505907779892087610 0.5067811083466974833861468590139322 0.0745175640297492837509227980070524 1.0774401250306220619332037485663147 GT 1 -124375234284522499584339.8050211213326864528046661466531390 0.2465677501990906814422502684585645 0.0654207298773564848330543139891043 1.0676588294426026188898777043560156 GT 1 -68940096120281835747610516758570483175750.6135885827956315108682559972697202 1.6801630656851484246226609365338473 0.0305479050096628598816083967608037 1.0310242175982906771091454790438600 GT 1 -3562928583032627291871352996587755.0923407971949897190191318426211875 1.0972463618697255385010430723057140 0.0738643580158992994332250251806290 1.0767345734390444206709383005559546 GT 1 -3775784112377266698908997784098331.8173491091261201882440871757544276 1.0131497963293846077498722574243444 0.0805778790866941777578515957012008 1.0840099357370556519209622811399109 GT 1 -779173.8910157666318378918310361378246937 0.3705349381224799511754027519449460 0.0298114948110089928356319780565064 1.0302648911189739802764760711257157 GT 1 -865451916293804762379777799746568.4502709208140309884067710156392112 0.6520260671332690300455348625264386 0.0238803177353875451738223133298126 1.0241700748157892252482702351679208 GT 1 -48560010110815478173944955034645791197270.1273615915029056475868250678185238 0.1635627979819592498829220265828651 0.0449697061132111962260311715724857 1.0460122176570952750355111644590599 GT 1 -4113138712504.4138285581805503984718478399322774 0.0820132713727138772099676760143222 0.0183680677819799605658859558735404 1.0185388553300958714287807632608777 GT 1 -2501456769193308.7234317440866784721142497340727025 0.9110529559764548691874316262988561 0.0092121058766422882591698707288785 1.0092547997264394383181531595787767 GT 1 -431060977191110029325768092385627.0643929382543406312573808311637388 0.1125614993728046783017784968302445 0.0973405716555024996250295139335669 1.1024099524709512111325239117810478 GT 1 -509682355.6861980689047261797675399118217117 1.4819559020675100179378125513390123 0.0264450065643871062410861454069558 1.0268009653333444937101262116835123 GT 1 -85013201536480200573234156712703767938003.8417771323435077023582478615343164 1.3249973583845526884620865699191626 0.0429657258840338565214127396806142 1.0439160740472265825516347072177302 GT 1 -2330286239155230627673.6667830704901750435071899049930654 0.3680278520733531441833337303793869 0.0034418534934045341928482162559036 1.0034477902974604666025132876804882 GT 1 -293680663.8213428305513743892021011520109258 1.4507303596663785795045300780331194 0.0403815396430405306244201372073745 1.0412195106474899069418164671825761 GT 1 -629149.8972649794353077753415016961849264 2.3416395475274924837223299051668299 0.0832718995014778015806579027450076 1.0869443605096236472848113106607497 GT 1 -8030546.9045590115034216920256730086606445 5.1031771685090666681706093992466768 0.0037904647888827558052988451338739 1.0037976668056281998386840205716154 GT 1 -967682109592457548.7767151583090045313889690211380276 1.4131292070404234475496583273692049 0.0031548860885843759195086797565054 1.0031598732337125539254250151276460 GT 1 -7123402763120444.6950540195850621722872241939044585 0.4544138038517866294413159064326970 0.0185806979138249583373323184958091 1.0187554876104570282960135648077895 GT 1 -1885886.2282179833038432985297944733073811 3.1144648049804431704666846875227810 0.0871101179857608261722872692395679 1.0911400168176435440330304259862906 LT 1 -114224284508106.4315079471336052986117426291025592 0.6727366743991066802538140530687231 0.0032477988359741154330753224863994 1.0032530843819764597797275113358273 GT 1 -1461638867822766663293049404281.2222160492122660316361054641016055 5.2485720882536690158782079856294969 0.0235380682855111155594717108729137 1.0238195138446818759667917359513766 LT 1 -3449656626924574276273664110.7114996301298334742893683540500266 1.5505030078546182751549512436254639 0.0103072589624921149323718992254360 1.0103607466143129855859801866856771 GT 1 -2690072358.0757124437596384524982791609415009 0.7297731836003549495168882750747759 0.0458380064194921184507673358712192 1.0469218173572910543552479371164471 GT 1 -218.0357448842173819657391140430930513 0.6609151973866613550063425012655468 0.0867664731379261932289328258252551 1.0907636513976278627543003592965678 GT 1 -148906652144456.7209988343453133948516937459270082 0.7754366861768971392115619889667053 0.0464638628815227024504614929852445 1.0475779552172728640087438299673768 GT 1 -668662063772603477904841625543.5694909271842580354855743586985351 3.4017527426325172659121200695886181 0.0901153774325857358383522044020396 1.0944374758970252279300875107633444 LT 1 -17.1634366486652741617094162718664237 0.0826927671903070476520818742940251 0.0988445246792781136117672718169561 1.1040774776357734905099823485159957 GT 1 -5784192042833964422915968792864901238733.0735267699576168690442664445218462 0.1271581261408192838642225083765899 0.0062190979004905864201545933634695 1.0062385170447435302169679676874464 GT 1 -2378540006138488357844278617668317.8018688297572332620595699568597848 0.3819597848809621445131295706653019 0.0215416732972182549683498114295577 1.0217770820127967723383130230972359 GT 1 -743.5116881458466463413763282186710765 4.4266182408339271780104185007705533 0.0256516248850648697365891219216666 1.0259863646339423401134331733091149 LT 1 -259268376538673475689057933761950.3636337805050168649672335191266555 1.3786151909954697533976435386334878 0.0664013768300505818530977381013504 1.0687086727645742698640872539136541 GT 1 -3101628618645668814325274663084752848.9652927106701593576506807349376974 4.5504048872491934219274965878187790 0.0447867803368714055605351525824374 1.0458206967587371426911840079781556 LT 1 -492527933985607533875829612909957493128486.8178076694009768841822455698225207 1.0747592722071923117506267063959743 0.0415984561479762706234880212984737 1.0424884407582849303566256960883038 GT 1 -146616073949304118.5906708703210500932584646659122137 0.0926738902636233030726013953734056 0.0840250669551247043425091593634610 1.0877662803539871253844800431061668 GT 1 -11407345.9777415999690368843387392387411761 0.8060153068168721884216222741971434 0.0138267930211458727497350991789160 1.0139232734998663787922499042125031 GT 1 -33906.5235654705672565688480413186321184 0.8888411115107293639919283445297786 0.0169448496299423745684550222087246 1.0170900562683037304348214666363127 GT 1 -810.7011502416679468602517154231207616 1.5961227935241883275072043234368171 0.0594169361883988705055760298637932 1.0612553153619771430196744365183333 GT 1 -484668732247712871.2949278884726283975099337423951697 0.0178469738985511721660283206376611 0.0385891872801532616334881338801267 1.0393534767373353078455788153335868 GT 1 -1267015810972001343517477.4145450652846616669531364287662975 0.3558909134632274024694037665524495 0.0560676241291423819104745384997679 1.0577007511326215251809359612492716 GT 1 -5740505931891978607839070620843.4649988812485283089281159187874284 0.5214510497081173113813381219197529 0.0079457320252421334768595012259573 1.0079774675738465116671440288266899 GT 1 -65815978855.7889795243161329394225609450549857 0.1425095844963934967952981249301198 0.0559689284350595173232236501564272 1.0575961985849471335022157642317775 GT 1 -11732959459706271086683146.6782570529223073812400678599197231 0.1934300115529723780501971694093113 0.0559336666973016833219710755517593 1.0575588469762101832500076444244550 GT 1 -210501637127952972189113422706.6914222112499795874368215521314256 1.0474164374961378924196407648635127 0.0949716419394334556169819386974718 1.0997890008995836328596600175332201 GT 1 -15404669938192199707370643004543499935.1800697308419705039925073492015862 1.4400024076708874243773576747375097 0.0601033581233746726256709919268859 1.0619853652140297602568408563044899 GT 1 -42903793603226013959135479146609998.8409137180574945783130969312652113 0.3390604381569349220806711670875125 0.0894962186513940057168149397388932 1.0937572267768533665106433045261814 GT 1 -538160137.7951355293211681685289816129416400 0.7645037025100335638155442371434346 0.0221409383316848511553345301758721 1.0223897280555836608978736244251667 GT 1 -15335388491329958062443673.7197334912558257066472640751516172 2.5996960979435551940660891533583760 0.0515405561505110336041084233580489 1.0529162487189181307183241619453563 GT 1 -2088984401448699.0068464744127762681691494565468191 0.0912057337853875087639426679548096 0.0839063336392598947248977846499994 1.0876366636834437165861664027902195 GT 1 -33060343111.1359620406094544186571144368237220 1.2215991217234235098463982578076427 0.0469016583429953832712901617381821 1.0480371889865561589728529504448540 GT 1 -71662173285835867060258021040.6830638990343801578338905462575642 0.1302263740903787682041727669101741 0.0958735749706978910714726400868759 1.1007860776720268600541623880780503 GT 1 -71866312550071427646960987912339.0119228863887177998702396802588771 0.9529217123816985160539645114483175 0.0909367156429005050687130075906468 1.0953405674732159492572816528216275 GT 1 -15490893833251.7189314723001164349342153987018978 0.5520763467926771037754347011052156 0.0747375322984710588758668981421540 1.0776778328522901324412428268371920 GT 1 -952716779823523365658.9664640895694361876303116981991731 0.0765032532613489324949045656000064 0.0848142244976734910794115237727161 1.0886282009792180848595536665534349 GT 1 -9567916653596212561741909414748.5517505746723948337620740704688670 2.3897889519188788566356256174688587 0.0968293449218413147397084785062044 1.1070298320049709282527939287416931 LT 2 -580098938820.0490560028041579546515996140601343 1.1871114400578547846111987074155370 0.0591867405314042113862229196073469 1.0610106081141793766548556099557407 GT 1 -639860731975707961537062580.7290909758079787789574487220153842 0.6609336630821939878552123764802451 0.0374395701133943537165155498130403 1.0381584304932771945141094684318860 GT 1 -591575491020822921749824.2269861837822625665743971142376819 0.1824285206026735286613728205383677 0.0350630519377037650554666594651956 1.0356925185733711555972387862109364 GT 1 -3647811513412634944688002755263345504628619.9802492570733365163000551616293401 0.0573495000548455343221971055794302 0.0965055649614919111508639343766427 1.1014853283063898059301631415526923 GT 1 -3271335978914262.4292532841763689741501787153867787 1.2557051188942546629509526820713419 0.0269527022268786164932245404825356 1.0273225877277040847962413713765581 GT 1 -65645331284998575794231439214457058554.2262277744085366184862956862129315 1.1011398553835576268123167162091455 0.0145002374541090869235455746243831 1.0146063933372441408996234962785737 GT 1 -264019512421704639552.4392043649930167767776412725776834 0.9095136039249688246585248937286862 0.0688870003261645468476126039732224 1.0713746345549626006574020999723043 GT 1 -743965.5644817707098260118017874548642848 0.2748232557731982873211767904496647 0.0238513132718092536542373371054351 1.0241403612128429364226957637627496 GT 1 -4786574073223175289505824327304.7510128832692668638437766584937910 0.5626166281404756849717219016224177 0.0192715767992957929218766286827804 1.0194596944396556922354143732163783 GT 1 -41880801742579091871.8606342475030902726135098220471079 0.1476986025670378209724895486253970 0.0040524523155786785176944078587490 1.0040606857517300478683380195806118 GT 1 -26310635354343828854.1786054631751397963744051984404378 2.6035411135508858047170093130784498 0.0842484629094872888510033385466788 1.0918830963682806844106993319029488 LT 2 -6498.9540798199352386738831875868139090 0.3068574086187479069928471405457663 0.0728283482382872885794988385048102 1.0756165614514786518455100464645433 GT 1 -127597769248707.1518818877418583726124796616974042 1.2515682729134981467896916610840086 0.0203006318799619666507844805922324 1.0205095216046605401027709920171165 GT 1 -96083060892488816385463748268016416541238.7076696128454581141155964908324439 1.1015158208942853980528921558835268 0.0926158602849242916010662609850719 1.0971893907290593676057260030225808 GT 1 -288824894179379879040594688.6498592959868487248315094778795250 0.4573696250163678643678656550852411 0.0107813589137606864095180545416613 1.0108398989044275310830045632956220 GT 1 -11271589499322.5614134446872350930009697860679080 0.7275133214827211877999313484427101 0.0221861168823327120920787145765114 1.0224359306180073506287636096847546 GT 1 -5723710018665.3738624965683449974219921964214916 0.8981314914999061429097020968837623 0.0995746346256231018597732888588084 1.1048879991175999393284418117092814 GT 1 -316335300311490330.3307840198450015337961676152626836 0.8457108406707329406813421168650902 0.0475461545949435800075888454597150 1.0487136294229811885543713391242962 GT 1 -1889105137.7741233433850133327723043544233571 1.1294082186050489470323001935741017 0.0933630523003801929653126879650852 1.0980131871699012082907556310956155 GT 1 -64106298145194005530669330704278302.5708271091681447415342103402197136 0.0177576345481631637870573637776393 0.0176386218024484628756563817882559 1.0177960360860544361972119180163576 GT 1 -312254948415761046369945450651274761766.3808432600524972350753316964949805 0.3292861707151746460455762184958782 0.0515139971316007937878615454071853 1.0528882468394145025160552151712629 GT 1 -872223498239541.5495411421791336181980946724479154 0.7383835497616623140111064616363251 0.0853564531568661694939417789628191 1.0892208558989334168537927457337884 GT 1 -46819607230117.4126832289542199648462862753480806 0.3056610339108233774297182345123610 0.0245914988371214180902886077816595 1.0248989201783679570093666807735885 GT 1 -91797035549746110815213972455083311464342.7518278649254360239571462012827300 1.3476416123984625773778372844643785 0.0296924907272511074419706651945595 1.0301422378560760559340599598262377 GT 1 -386369.9574382702680961634839501128302380 3.1944909595231970300333412298037437 0.0661388801815929484402140028342844 1.0684275457939158387381267765965691 LT 1 -23704284445555000137.1825830922273503432317528129961251 1.5450945926276076773622380871152630 0.0529339346259700097341951453675364 1.0543864254268039623276245189416651 GT 1 -172580837538829188456907703173236692.9062769769256695032837136315843902 0.0178260652666272456774573201394087 0.0115992165191803543380471581927534 1.0116670121921365948578919269818771 GT 1 -18995053808.7036217524393840322681583677894097 1.0984710692355656242279753017942232 0.0243238868963151789176878923460598 1.0246245989720731341396723274879236 GT 1 -1114052588.1125915996781675159542025505723308 0.7101279492514301892777607415797468 0.0950360446169671325853464390679388 1.0998601643814200025737331098395253 GT 1 -83652923665113593517975538971643.3878950386084301938979144575634602 0.8889711877569576062948537339038590 0.0766823800790243697123018487560786 1.0797819867498001573457675762196380 GT 1 -482.2439811653903840007598135429715390 0.5334113152048403476785617871125245 0.0802426304467545587117590290162712 1.0836453724680648345453954671814923 GT 1 -2824.0729420612373076925698890878537912 0.2686743064748708006091057450873090 0.0225066240794162498702309314822439 1.0227637636974096275996516930210720 GT 1 -17598917388007151.1205117476419555116611992991673987 0.4095648399123500687353097437969340 0.0598363268296446156349674175322461 1.0617012984812887587410877679259070 GT 1 -20793798355156616393928051115389980.9935213482197291815207841417016321 2.8488058768141649050133261516526060 0.0162691765805818070856068022967873 1.0164029727880001661861483790217688 GT 1 -6796813.6278362180485699261523439835276031 1.4151671669867722901073879210788150 0.0010925099492715105453864771568905 1.0010931071732878840015853516887725 GT 1 -708785017575451917702951829100400487777.6696491159535367570505906611730165 0.9408359776241435043754788150989020 0.0647473249403335508076952853087999 1.0669385454963666705005752350619980 GT 1 -1264846733695.7762098617418596309687120532386452 1.4977845914699690296199019098753245 0.0830680087806329982305334770686747 1.0867219739041605989611376170616786 GT 1 -872430085195904192914507501735822730.5542977007440060242799233565668075 2.0842291816524302467876030138952704 0.0424522333346707717024254056233606 1.0433796723149031433068345967972317 GT 1 -23300315029494668261315.4882412644064837115368297090216876 1.4455372016094047450521960406996780 0.0713426016332175719799207059602573 1.0740153935827151091508318054272407 GT 1 -101.6232444639441028682275704934895686 0.8212479743337057305519490706073978 0.0328315999059887169914007505681849 1.0333826517475266681126642077154001 GT 1 -29935949663071048895436087523754781.2227195251182630655740094470068820 1.2956394551711594235028365720152779 0.0009257422831148015690153716359656 1.0009261710471392568035725478062827 GT 1 -10068653515.1997739208625904364560560224725963 1.7093824217439370688270224178372500 0.0787196860214184541789804133700786 1.0819909307514833008917150090875105 GT 1 -241853304344558772367431405709.1741248441612261920909483474421593 0.2227426303509169257664100503788158 0.0489544548785264468711902558181231 1.0501933257628361495619041988914154 GT 1 -3416.4319248278713156066755199573642817 0.3058817471072543811200403627316472 0.0082996471771840049345647720253294 1.0083342810143661821180207439532630 GT 1 -76518489729220419390308717.0581850921707426334559143886827599 0.8715244348592202020980538366126622 0.0832306143328910204753958530809070 1.0868993261761650312770479555460835 GT 1 -2189698015103975466643.4620739798371449291141552195896217 0.5253730247078677444949582119788724 0.0187815134185257590705307288147702 1.0189601259869940656547994847462160 GT 1 -170853266265463822907830411248616292.0307711089049564400569463023759998 0.3573844512780840292633179592288701 0.0231858679432961779155488417067558 1.0234588885827801536115341893103211 GT 1 -41891187911241212363993677.7430172353559653011720498742366439 1.2118119537995505346225707652340479 0.0005467864186741639743574393372606 1.0005469359608822374111793148616361 GT 1 -32378018332338286183785243.5486177193780609549261564137881343 0.3784038103097011524898083716371045 0.0286692495517684346301966211699000 1.0290882400116400457610464870578984 GT 1 -68978641640546954326088680229687845931.0600457190697416310936033283052410 0.4448864727376571030768862633222148 0.0496204159076913035052210908486575 1.0508938119888401396582826081668159 GT 1 -1954401711061551.4056573473101533767040731633088456 1.2706175591319609243055811967339088 0.0712624422168400987120230630410107 1.0739290797740533305407111877561907 GT 1 -1194988292663083216171677320587.6892867027492181303459945456118196 0.7320054477018642886501778358433783 0.0216838047473656197837583473347185 1.0219223531708199158878434711495244 GT 1 -1609614.1985789677259455981730505890422429 3.2867839934148224981415200458121597 0.0892513946222167831258398372676891 1.0934883743844708135404076969686335 LT 1 -33225859618861952595313798.4486927788069825273157520139803052 2.9652230880220686782188429373955446 0.0610456078524193629773683704921232 1.0629883716163204065835375336221174 LT 1 -520375085.3009156852275957267464018543093033 0.1538284909351885607248831979652868 0.0407382908175054562379915504025844 1.0415913433280693337832002154951255 GT 1 -638516134040183216322835391.3763946979064494771056870568340268 0.9739485514753459491257403144984279 0.0211821736766521950493721735533765 1.0214097351526688084193456678803209 GT 1 -1834322711.7445856243745939034673080092778010 0.5608085202805516098098038081666422 0.0539130557422441002765813885646359 1.0554208069042578188576585189255981 GT 1 -1584819632689943808281378217121538641257417.4517680199392505114765634756584737 0.5218428590975663002829637627362755 0.0924276071229447999993213462989043 1.0969819442593791982350303058541719 GT 1 -45325066831.6623536201340634874677459798512576 0.3872898078222278085312109147105097 0.0409928619484067679954623214644913 1.0418567609026317761729045315320280 GT 1 -138063376717198812548149.5681127175654741595566715221278637 0.4891139894225864055981632001170874 0.0926838616071038897933339408369925 1.0972643356916317280807007933626306 GT 1 -2634113597884824915482539256.5719682525260553450261301204443411 0.2139788243743391688002768012902615 0.0343874475018890282729535835058496 1.0349926095959544908722073733048735 GT 1 -44061399295896069.0504834564864155641802793897054756 0.1306422423442487715222467810227937 0.0626858671731051396543038981796224 1.0647367991113283018235009989206495 GT 1 -9546681851341252569225986879753275.9693797499831062496520406658865857 0.1998440998697449880138230716300214 0.0340767648902880228262748535503951 1.0346709146874018537143804579766058 GT 1 -16167495888808516901826842746893943484397576.9669415627469893358926474721489828 1.0819689227150109072520987946643477 0.0008559359585821473388553329936125 1.0008563024809261049967697056870323 GT 1 -9005848.4948529827100813368303929272611056 0.4806064500947160054527135016264724 0.0825798988111470519563234714068808 1.0861897860182836812139961268905809 GT 1 -10209709193813608.6028435774906518129298394520950427 1.5584825756161592576989450220006941 0.0050544116507635672671770568213661 1.0050672283949718605759541389211215 GT 1 -2215389322135464932068728147580.9093857351106631063392684965587472 1.0655179394300073044764806516336151 0.0271735658522339639746218040363212 1.0275495948789705613313143570578090 GT 1 -38.9964634541702772215227357036661372 0.6779818354885352563863691367994313 0.0693586834815870142026679185821552 1.0718813428369440386411827215152355 GT 1 -172083448737988374623136530033602991.8734525281818146919625110442744480 0.0167981899730770800568693241384081 0.0084560257671036984539442969952818 1.0084919807875211465530392209625276 GT 1 -1891579994060365.3997542618931794283634912804682873 0.6353467813903517862508709521601536 0.0086414834313324870332711226401885 1.0086790375546893464063987366710514 GT 1 -346.9033480732356559100327172135560967 0.6271200671084671545796085420259009 0.0768255026684725868319006156283088 1.0799370078174750070231928888598571 GT 1 -121707.5142610113676329526124568742328623 1.1452760205566175368471892898236115 0.0329328221188984841027153917302910 1.0334873155373512111998112815204848 GT 1 -9325762450691651042867269313538476698978266.9079930278246262455245121232589177 1.0657985134978042234849543265018958 0.0710707864742320701251303928558900 1.0737227394914492703103254895426790 GT 1 -68708.4783006050352225012601753259958509 0.3404979750375528718648064508100547 0.0387633370514680408796665562115929 1.0395346329544733489205128126032880 GT 1 -108147007446792631037564747385728.9077801610238967365421787738469635 0.3737350387963421312711154088075632 0.0884021627939196807901369553382541 1.0925563541385645580889894130219832 GT 1 -2385511659598484004.6422243561478439154297567166961169 0.5077577873331772578915605486290714 0.0518611403164570650243965889247433 1.0532543109943109030355572551742376 GT 1 -705788827000.4368865133941228382179161654802684 0.0304136445115776297832406235677158 0.0103221279097732871925747269503753 1.0103757705286651912441905268069497 GT 1 -7836302747801438049851052222047229852.7301094314824503506996942275344368 0.2432620298381301063735279262764974 0.0358330024277881804350326749376261 1.0364907653787970894659814862034778 GT 1 -600659653619705784854608666408.9829775971272717855268377422894369 2.2103120090538634833394796252729430 0.0065454943492838781094762631307014 1.0065670100360171360701142174335653 GT 1 -26.8293895644808310541754413860949644 0.2441042895531889509031984770498603 0.0806259029021826992295423347345536 1.0840621697095089821850741567187418 GT 1 -98632550.8397649017258956883926765743292675 1.3468176423194879079158807112963924 0.0094563171386637062748554438983865 1.0095013119872794586367657301809599 GT 1 -559691198226243326473671706890.6390751440961219715120225668125929 0.4475565486750047653461716417671051 0.0283377029767044812710631218004722 1.0287469659358390181861652176777473 GT 1 -567698250828016129836788451273696909204429.2589285031810434971897998099146995 0.6705123157418552573906766134251787 0.0282688122084479782854169222524787 1.0286760685403052231561750076220514 GT 1 -429155416905505765007651.2969321891113368269691187485451335 2.8893783585421032283079578324716200 0.0747987869347854112533288380773573 1.0777440374873482438435868214183051 LT 1 -17143163665694347281.9730794667500871954013241242608768 0.0452931510780531703705247648014327 0.0154995690129141232630724548467487 1.0156209431304920781086733176408739 GT 1 -4476.9611385038081993100545068957809429 0.2866976487600223284002213959363308 0.0904361627434493490013712464456213 1.0947900940901434976815955624688283 GT 1 -3573796430451574902744289670222796388.2424928243886568071592847572087589 1.5311464102286564682162005804452483 0.0517004803487824398889470791242066 1.0530848776293150630627077265210631 GT 1 -170450587692045666428.0934488972581477665933893399868004 0.0750948048246447035095735426722550 0.0450710471180138360335137760394230 1.0461183361568163422992434341101646 GT 1 -9003099159931965679740457703409.3947734597042180340735992438764834 0.8508511001520913519197454969192258 0.0235012646877897214864619943211610 1.0237818237894266590158010694557718 GT 1 -100236580465.8396913625138284216307511483480309 0.6702188761096305565617835168133770 0.0904411101475199158038190294393367 1.0947955334197685433405902921943780 GT 1 -3323635365692975573580488536036793745249.3024919038976867853766339519184112 0.0814124660626701766322525034653370 0.0645170332252905235424484338563967 1.0666923410503119582458797479019476 GT 1 -818037148950912518255.7848659208415960469422993775581707 0.5271973936072920658317002402134810 0.0055921224938853437062030486370387 1.0056078169484348333543394501346289 GT 1 -24203387249504884074461257.6806376890862286857298910518001320 1.7797185933429478292272035885094125 0.0703964147191256900266392797037645 1.0729970360923641156757796364831101 GT 1 -11505368877672173890967993592036013.9387335146628151268877518879060056 1.3660010781605595334429542774150558 0.0683686230674594903543156664565458 1.0708180608472688807670828491835968 GT 1 -164038742113912316.7062904301927199066033220510360604 1.1990263211100511878552093211153221 0.0836801097352752272253148204565920 1.0873897500930961169020536075010322 GT 1 -205286880614163.2244698846088573266198889464628267 0.2344148029800838142069390623353698 0.0072371511213271152447788704061446 1.0072634663411877651346549424319135 GT 1 -18845652408498913164028303134333909.3938980402320778027155158423733628 0.2159764494782251528569312874792781 0.0118208254294592565001240841274686 1.0118912468964345601351960761412479 GT 1 -282148447040654.2549505053891808783271930588495282 0.4335187571090230803353088337233305 0.0625115707951350003177770134379973 1.0645508633952138538532855954928273 GT 1 -21073962150273730920030793.0510370957743607425593480883650313 0.6707075823325817794723114648683543 0.0663092364264456770543347238658135 1.0686099838261228192469705789819355 GT 1 -57616362071322.7693452364391837854462423841785396 1.0415743879983190843211117959204323 0.0606340204391296945539885292854902 1.0625501211175485913704592603951884 GT 1 -5927895378.3679402586828409713931469583534585 0.3399454392613561347734699567720118 0.0343769847294841579380315677004531 1.0349817742814236369128537543678694 GT 1 -67507108327823197086682.0443634819268396941625198671646916 0.0908040524259278989201456067064392 0.0920040924568793266945649983185380 1.0965154075021013940220388459000111 GT 1 -46564757540030771516295384933814278897.0955429365295284597744059924119612 0.2715782207081360376130019168841073 0.0272403469040813804291980053787226 1.0276182436551018212204755077563343 GT 1 -216553650113812914560178715008758297.6684577864284669746115073577808554 2.2015652256447919979652964869352884 0.0884622985119868672861894697465861 1.0926223236913626683833381148406520 GT 1 -115373120.5967076065154329334936445349461843 1.4336843219737314024740196768374174 0.0788036074561391634921261957329387 1.0820820270833735869240862946814805 GT 1 -599464739.4264506490225563265013562747006194 0.6626773344053923643077350750336585 0.0520852633406608483093737987078295 1.0534907210047451230154892437343441 GT 1 -13627558712439031005276078667776298.0844795519074549542523966343499280 0.1035554297502203426687060375645963 0.0401675180057838325414517387102994 1.0409965076694804917218680758600827 GT 1 -5510250334355.0892022912372442985856371001845978 1.6456453198330532499009644478129612 0.0429470458432652510566178323385057 1.0438965555629137692410614940973245 GT 1 -416539642238267251895625701002.7348035549153108096787479487219915 0.7952581659084721546380146297960255 0.0291383360983342746847628707783570 1.0295712885007817160811189079416328 GT 1 -1712525363903318890674080765777088.4482015345536267274161569178486944 0.8558684962299319987246823928675223 0.0469594715656039925478945863490166 1.0480978490187641635719062375037726 GT 1 -976782758364.6529573395219646222124924025505158 0.0634136997317160680186611538855545 0.0258001880750485788396153852761718 1.0261388506656039567500989710126804 GT 1 -42414578203.9238924197022023706525609317229075 0.6327177434216435511215560859725677 0.0567893603237427709807127572119471 1.0584656494194426307870632821023066 GT 1 -170210378356656739189707775292587519.1834643803113018420882819100197439 4.7455608963257146069915158225015283 0.0686103192029466690974846345841083 1.0710775277339585067121784011117086 LT 1 -3100635823694377.1417918190517732428170898309766258 0.2486316849901006002121784893611099 0.0440520703082270332243393728313230 1.0450518342637183501947103111323502 GT 1 -170411460526255212362463175.8290028720872175315568244187319193 0.0043205011701518053794331314171118 0.0906701026368045809504378496639938 1.0950473272535686287631309651418943 GT 1 -6.5597662906666687561235594755343155 0.2072569581946649520264872343485214 0.0114402121262792565107040661955860 1.0115061547673119727033134763785389 GT 1 -5965498128230781907513474087863.9624833563903144765695182370931556 0.6942449039898109749011650126663724 0.0772331218668495964979161708095700 1.0803786461169575348759816944782751 GT 1 -2651191810504237430317194668578030696891.7147356504345311068987299812211399 0.3368646913717803905329934976188356 0.0741608229301489006667132344748634 1.0770547342897555797853962428370520 GT 1 -10858394672893516.7000707266206448573189864720114968 1.2447849600066586790763552617060473 0.0215510371581852403178468507597220 1.0217866520736955039646717436734905 GT 1 -1510788572976577384948392495631.6189740819842070254299133430396880 0.1648301794155033482726608563451051 0.0215290141747560908101659990335403 1.0217641442716312651729205982508398 GT 1 -1652626485618189993.5499669897060352425818864446840621 0.6664731087425665787988054168895727 0.0503414960622680438520583503079773 1.0516528285514423992926892294232008 GT 1 -15628026531527975719.2775624725691176051858208378348869 0.2224254459050258845339335947229339 0.0037226626886426382958488816524389 1.0037296090420350562268387673212445 GT 1 -1306918.0463254459916446470816185290594852 0.6164079208320509867770137002505837 0.0428321251653331125625160629080329 1.0437764851130161399192020727486989 GT 1 -72764407627538750988312927.8758376892781085770782861181216445 0.3705453370711109456820502697798865 0.0381493071459166152792696073595329 1.0388960452953478575305211425816577 GT 1 -349245046050387132849597385638318.9419867121567431179959877348322377 0.1896924215670239816638925605908687 0.0179653707164972832207237523244312 1.0181287072132791902403477371821598 GT 1 -5347753771026574995100608116781651.8861979339665390894748725093438136 4.9755090661649155319502425205969520 0.0451479923238031859138164421267184 1.0461989162939316431393767006606229 LT 1 -1484550698067074372557441935477793815735.9122855198092420516252930786818208 1.4341287408567265720553520201060705 0.0680771147825421408948961608676370 1.0705052089027715084705879472078563 GT 1 -30683276576129046.8622369318117442011026602435913995 0.1477330304362440355805518324151931 0.0439793853450859727432620302507990 1.0449758027166607479195668469153114 GT 1 -2004649536439.3239408468022250424072427904484799 0.4491852971430365156175396050054397 0.0172153724329463682563529518719876 1.0173652799236064052491488026982265 GT 1 -12654644129708567561.0843802143144480777965139654065425 0.1742002564982410497440319229676872 0.0685415677933602445427212347708804 1.0710037145130762268278074057249091 GT 1 -27202508099968705063415.0517750202848510962046625476652978 1.2446521066222576222394029369443974 0.0933290801252943548843065614467691 1.0979757173329283421129008791382532 GT 1 -627220750980136016235557052814486003734.7671661165058473970883683111909686 1.8183293968119360699051139413669921 0.0883646994686478472923757265572521 1.0925152586532953548173353124397876 GT 1 -1.5761070856088511464167197709222282 0.0043674505916990769181516257737377 0.0361755642076400161023544064622443 1.0368461215048965287013159758497972 GT 1 -872204550652612862839268000578258262768125.5826814319850936612453222561169029 0.9783469160003109680530557298591591 0.0608381639915406787830485582874050 1.0627674653075282681236332114202141 GT 1 -1816045694841804963406803317.4199368671463150817817299406406864 1.0009638646074574566143184733915694 0.0215739422947513387045779561031695 1.0218100619862618579266773170312486 GT 1 -2764452551964960291.5505414883649057131795655248387842 0.0791682667675282592386659637274993 0.0717330649031643550390671517009131 1.0744359419795076509325662825120986 GT 1 -1.5067621840749088321353327724902800 0.7132619600595979174411401472870769 0.0937689659423297209767259226056526 1.0984610009686086655472576854133494 GT 1 -59582969098600861.0433723110491963525794176542021157 2.0477584744581156541796779814016411 0.0202486105231360401095776194296479 1.0204564237080826759815947606426170 GT 1 -12049963137818233269547902004.5573466824303429665830834734288506 0.9352385830260493349744110117537661 0.0480331209920862737357859247570647 1.0492250357540649747267847340794431 GT 1 -1153025069319344225929714.4695226408554225148674882293674729 0.6781742378623612102614530346065615 0.0668359099869783511434555743572282 1.0691742200585150658980574336372175 GT 1 -3283242499746499184366.1691434633793588960159462407193748 1.1084472510875788603545955294713171 0.0827807623694070137646780647050017 1.0864087539154746131491002942437670 GT 1 -4.5321178504657029613993007426161475 0.1139673901044503699565811017361141 0.0389778280917949499908090524592285 1.0397577985733043679311614596113850 GT 1 -1458973492510539711125260581.8047422721732329244599450389672715 4.0966471225349110824020593979511599 0.0143049380275654904621678407443828 1.0144082399890784149714391101394774 GT 1 -400172802284928.2652467586262312356649171871697098 0.4103676377780418343227395261720957 0.0131979588378248977796804665621358 1.0132858258631493750249144295419013 GT 1 -82490492862100118070184.0969902928815581124949840210908712 0.2948388062149573887445489516311301 0.0199691649830003887619528180077770 1.0201712435094494211661117605770427 GT 1 -41917820107607558297227.8560429954018589037430295703843111 2.0259205811702892832272914677406788 0.0684760911404952478994510102754029 1.0709334222172786340069231207379169 GT 1 -2512001964097498.3873125539433793853777179680466874 1.0098259054086432590178641904732904 0.0826980903293131073728851751540865 1.0863186246299425413965700234077774 GT 1 -10963586351.1950931868336062761787585024613812 0.4622119907393406921455947340038673 0.0260553083859565673797156399284860 1.0264007617424290283213368840632953 GT 1 -10.1721760663554170995469374156734509 0.5393144625507775717434626747263576 0.0045052772883109949891008297229917 1.0045154566353937306633035651512352 GT 1 -8323.4710834230864771532576558956433682 0.2115331324508597279156898601501837 0.0283737511491711259431690827594185 1.0287840661107433727863551546875440 GT 1 -32845561187113406487972628613049543187.4838401937644162247024986755661089 0.1491324328248959134150295556918442 0.0928107139794424658933581527211157 1.0974041560204535527879307909031618 GT 1 -21844676208231615167136287457070250781.4309128719571595735756923673122459 0.2192414403806808401716197493658607 0.0619712725022981922881887586024410 1.0639747041147163495600430804441983 GT 1 -2455021820992287.5587637119246226848726343052227191 1.2159967337083584930637783401518049 0.0413898845922245367242330241090219 1.0422708400404517817908068576469418 GT 1 -75132160.8265495139167145838665696465537279 0.0261027283412015131496592849365080 0.0021512038064273138260864125710282 1.0021535209690581664593958163716017 GT 1 -681497095511761267805.2964691979061448855346649309777168 0.0760244665490681292773682787285289 0.0324910147310606800297811502997056 1.0330305670216461401367878172170406 GT 1 -192666009.6144004714538850672438488542671081 0.1267503669539074251818731023251415 0.0245590577397564280973661484755640 1.0248656617457632794536829931974208 GT 1 -2392008460719983994562108778302435238580972.9368745476920635108232172776430582 3.0002630904518471779477813402054717 0.0014633747187120425712314731257016 1.0014644464972323952746189280022495 GT 1 -3783030495254053314759545000.0590145072715512582952790858078824 0.7215587533390655867616374073465909 0.0166901967922589758633664675879067 1.0168310475439632313233186053574030 GT 1 -113798465631032666678783790366.7632367049118920239330904601331702 0.6606152084724783540605894375654608 0.0065138485007703001148212652520114 1.0065351561923682307033431001809377 GT 1 -44069598631116904923974336979427.1865029246701184384329183008799914 0.2115803711463353975608835906064299 0.0894368347261508124309996197599741 1.0936920079496439856075704970129008 GT 1 -9746979960.3304614218351432913818348804576491 2.3719533958621435857627100541762491 0.0465434184556264060230346404629913 1.0476613908522087317521214986825652 GT 1 -5389239312814470814786932558.2224245952986649405748410425356997 1.6116171056994921691249202641984906 0.0210942149946573527208785267677622 1.0213198770322017108396513370817138 GT 1 -11298123975803889585.0515672525187678126333981196442216 1.3181562022836304106650858914346339 0.0599392109832240192598701652852510 1.0618107366422649331383752301539153 GT 1 -55430084736056852595.4407652357264759701237600598197129 1.5722319494977449006278322039759686 0.0652933039796124285636680327640559 1.0675224930015771104045394080049504 GT 1 -2803.2259788266159610918343476441337521 0.7385650657123674053207799331817973 0.0096718220658640888346263768107427 1.0097188979223576348390296094030571 GT 1 -20694343304312.3812541132149240811589953791802449 0.6486441814079709610808691403651509 0.0186516213585965439647839006973115 1.0188277564230107006154825981844112 GT 1 -20009000247973.3269222550252810413879982824088471 0.3729124820393521742262865578730650 0.0756372666796524999960198865277444 1.0786507158468027561413889847973899 GT 1 -179.6649436112764376503400579987124925 1.9239366852049785619372751086695577 0.0358929258214224826706783489421734 1.0365529177403638083604684855244535 GT 1 -922556918290118635.6849715558840570480462886204615698 0.9415118486931091968459620652761202 0.0666213003340269393955079464396336 1.0689442658832518093419785509237730 GT 1 -74418453627.4827444809720103886454470903832203 0.8735946969765665014663962532892998 0.0057854267687945304038812169553872 1.0058022271799459467667759501988625 GT 1 -20314139959544.5331792353505095439016442311229573 2.1760888365030865022347556593719565 0.0199188290173124126046687628261369 1.0201198832141755099572418770282575 GT 1 -1774954447501420212933498055609115.2262911383026785410114692820784904 0.2942772282728690412396932252536674 0.0882172197737939056680735758872666 1.0923534968535941475995984224686365 GT 1 -1555552077540380263733282303075198406852851.9020896085558244284241423973067103 1.1317095416534602113486365973400704 0.0024378389851160769989069676674226 1.0024408153528289026633580466352485 GT 1 -1297775089184054757425511775586085095.2761520023293978703985261343668130 1.0820555107887113546546619471299839 0.0509886544440116652807128100831763 1.0523345251686588663232103386220608 GT 1 -18.0859346236718231806628045179453551 0.2101213985820432796147431045624471 0.0773009592944384462263545126720932 1.0804521640583369042167618034992331 GT 1 -9.6458390846732599613955332911741579 0.5264682400577825983150010869986704 0.0325102110278230453528123023351161 1.0330504081678200167964622427140490 GT 1 -12386748708022501645063042321335166753105763.1537104635857105127398747513723803 1.5854561556116452250290346962633999 0.0869793768783300718457867249892134 1.0909968103381513189851026697124600 GT 1 -820378819082727801672654989.6931202693932136449380738089712868 0.9169341546626306094079868985474822 0.0642889785360267467194058188806732 1.0664485879260219352483406017031452 GT 1 -2552612363107744695369083170855735977.2911273582338432260029851862346830 0.0491059896436628087534345046142099 0.0372334887202584338971287459169356 1.0379443563124026485648384884589915 GT 1 -1016797.5443820946065833892767061057145710 1.5662776998201864719966508031785904 0.0098080614263468783211788192405156 1.0098564772981611115889845380428210 GT 1 -1065990651619276227.6348368329572540233584391976302430 1.5366958210587181904670275923511128 0.0284539266158287084508516049841550 1.0288665862925982305908037693492796 GT 1 -44475402085612475160.6212845080877255850062728909475429 2.5916912207580438351387263646642183 0.0682607904819625667955786624203718 1.0707023215666326003783399471415353 GT 1 -327948643099555.1402261360215845136744247245616953 0.3349459181399487973593304079274950 0.0428781461142488207394425637706937 1.0438245666006134602340366645806097 GT 1 -174928744142815974061948836080287094.0749709200963380883543221985749118 0.0539347610105635943847899448900839 0.0354330042085674242620034168317829 1.0360759873675920906411728720500643 GT 1 -1786779023544.7351278661671187098719971559764104 1.2820366863450244757151197269549045 0.0896465214466256116910977655017728 1.0939223169229981216273154522058630 GT 1 -687509727271979686511670144830487.2192064040139844540683848186198454 0.0370009678419719342861781429569867 0.0740546072988798595830906678545423 1.0769400172399222279595777695018534 GT 1 -844095268022947322278251714717714864356.9308079461915970149597091037730231 0.3895071973128957293108453554978004 0.0816027200327266322567892885531761 1.0851252151293292129628758602332103 GT 1 -118673751078645.2976859301720462720934133813600365 1.1056824444672936263710255576921005 0.0533282720588035682536339705775523 1.0548028900925302602969383958280633 GT 1 -4378773657.0823761038197282501774493912857791 1.2421525732818519692488159751588778 0.0672276631080221295217223895530762 1.0695941198162464647423732586825052 GT 1 -55398524822382822632647.3842158844290795509568140653959939 3.6695557756150905576475834230811214 0.0805776359130039461084394237725877 1.0840096712517310741757063317862465 LT 1 -4.7418299321072320623767447329618780 2.2302297388153542784798363703713414 0.0883833785474390967100132533770728 1.0925357485028511725201080894883660 GT 1 -23088527209944773347039356292959073782865091.9140445639065569036515127997359920 0.5249463017231114960780200146130942 0.0058557638910465787191931971115257 1.0058729761030789186116159339709152 GT 1 -1886297995173403147475639.1478170728464964441198861927157905 1.4465926921020327338508193559723324 0.0938907067186372509659471799766313 1.0985953474538180785270697069724144 GT 1 -92646661983060319245758762578398559493352.7348372277291167455828603014877016 0.6356948391189682947209024473100348 0.0201099518227600278868481673231175 1.0203149093494422472536413098813149 GT 1 -383430920786511891724418882716.5546448476197662366505662354407794 2.0796427326612905785598876899274096 0.0970884285919546946481537842736328 1.1021306579262100672261722551537738 GT 1 -164682328771371800084421601508209.9855957064328748552539586529659843 4.3941806128502821236048067151113041 0.0474388364363703179934760391428266 1.0486009603277965912970621306808430 LT 1 -99329087900185888.2568675908784003876973964624747348 0.3762670432470094937106915903303940 0.0337420445215431970051036640587338 1.0343244457602395163700884846203124 GT 1 -132300222155906095092123316.2525343153306755106695828349816960 0.8765684980249828869119280104383551 0.0962644385614827988233616138729127 1.1012184819150505931406975698996489 GT 1 -44503697833121849566219986856235302.2231550575950956380629262281365267 1.4264800392549769635142563114558901 0.0010475421732349476849419405447372 1.0010480912290101783824603605200198 GT 1 -1183231272752716381076731.0467111273540703927628545233645595 0.0311210538320420735060708592208553 0.0894063349584673996838240040004908 1.0936585130115051517299773864973319 GT 1 -75534916040.4550004081083984759143882141958312 1.6629229295033187898982416132235690 0.0805335628323936498746280753727337 1.0839617367811000432777362015306950 GT 1 -6.1057866877462811153133308223201771 0.8561063554690365571500876385897451 0.0131590520397492833389212689165252 1.0132463994843208979641929036977177 GT 1 -11.8187869674037566109198358398117166 0.8772186093629420579560152294345242 0.0028653659826414080972741406621240 1.0028694790024990447097726881128838 GT 1 -228781471.8152455455359285762071657033648753 0.2356209069482996218129998097305293 0.0726124560861207848039510082884058 1.0753837383055309281387814518644061 GT 1 -950428987983.2972854093341801721508551941948180 1.0546375763067223597956323908128262 0.0585085918908525672341715794302772 1.0602900566736251355608983975945275 GT 1 -82049371854943622102973534489320289078977.2768841734249788705981008216390778 0.7945570098639614635271229104632038 0.0356240446755290407438911154237460 1.0362740652500672762097514759164950 GT 1 -68170.5636341904808270589552641992376866 0.4895821230083170212112717736346627 0.0694862366826747767503565342517837 1.0720184116956000562477033910681482 GT 1 -521173001890.7574312238267690668499120868632275 0.8649893920822086341376522072871240 0.0909987628302270058124728521070184 1.0954088237827318302773625857820714 GT 1 -3355065464397797662477214270935092764136.5358196017696933194352860610676405 0.8293398241397616625560129903141562 0.0492737825217963204731164950712960 1.0505291469718274938609078484992337 GT 1 -672542698565246007575293957.2578336304539792985248354156826897 0.5569358625911411257482152285923372 0.0738433119466657168480107923077377 1.0767118490894445247214728614026842 GT 1 -8.9741427453325976040657099819946083 5.1993432013050415961969741594791590 0.0822029850034486890779236236585886 1.0857790293730086650745653022241908 LT 1 -175057421239748.8587502853624933181960332490973728 1.7278086493649009320455941060228604 0.0659902921188685053084090167448292 1.0682684469302959482351378734698852 GT 1 -454693049891831376125016737008959560584.6940990096909437771974356520136355 0.3662325865122921963527966285643907 0.0649515726613338267187463160297173 1.0671569570896126034262228065396210 GT 1 -1378831854685642692.0888832365624103939671928957165527 1.3033842864495797490599790001123782 0.0386526986351741990136613304335877 1.0394195394985103092046304698809597 GT 1 -48697.6316066742481793142876530622063464 1.1592069674899524695491821389513988 0.0637049070528657636548177131086474 1.0658245819491001838887713982260481 GT 1 -64205020108549294433161898572785841.9036628464050528202331819202154808 2.1128486763485677897512497330695711 0.0863008569216831258093324988537645 1.0902539268369087281962777510941469 GT 1 -2319107009803052452218026352725708342.7224949616915478505116622946031120 0.1217085385357801105138901112834056 0.0217053457759413405267649168560909 1.0219443718860717017161767291446144 GT 1 -138942.1889630836913316826417783945586614 2.4221582698113475240882329738358426 0.0807864503433982864849055133986289 1.0842368118506188186419715690378686 GT 1 -627561878215443969229724245439395717120082.5801510890656268001221683164937019 0.2094734784987846191535338146862601 0.0991341532946447794103843856787836 1.1043989262383182711592108272696272 GT 1 -10148891839763301638115352896255343511.4609276390599636257770003925727147 0.6219692285844061297659030160933325 0.0281940316686553628688321044918208 1.0285991155069207772348737981170757 GT 1 -177370103951902362260938443232591835.0872558232949349534957735558489305 0.2357955760894340671200019713603370 0.0738453393948068447328563595764990 1.0767140381902591334575682180772041 GT 1 -41890.1697031484781572629946495566007006 0.6621205596462700140838034327230028 0.0567070837759651187286835878671481 1.0583784229230255020258284053610117 GT 1 -53936503810043145144576948.9788533357216284323891755651129395 1.4271275563572944354286506074657736 0.0500220435504917930001681374930674 1.0513164983941211937362384038694760 GT 1 -135479018952831041425.6185829628231401885290553356016851 0.9512239994670676679453086163271795 0.0128520314795050179272434637452509 1.0129353333378429431582440745705328 GT 1 -9124010647603387848902511898690401779.7616615528425386834438929367135448 0.9590316503939791958881661478949279 0.0533234317167079768262823623798953 1.0547977770955130141178079827177647 GT 1 -1627547.2787714982403331479464264916308365 0.6464283084340209408849590713654101 0.0050329246821843738959934137208826 1.0050456325038834227162984317618582 GT 1 -54500380261215.7270434407410888148730970150097159 0.0618432631125580180683897262794633 0.0351433763291963888516387145595981 1.0357757651886729920285864997638439 GT 1 -127206.2327018334961688975532532928758260 0.0708995099028652551056797250095292 0.0631862462110729501928207092220549 1.0652707851359013069173570248849512 GT 1 -28100.0848973509075583442403165757994314 1.3465307419441680044053759138595539 0.0559909960881270430634903506180446 1.0576195748398848975626110896246101 GT 1 -702028525.6779301090888925729542580404103379 0.3220887284187118513125953942950879 0.0062159244250508922629144630665772 1.0062353237147388830585282632228602 GT 1 -20619109932.5245672913657241424327732351342840 2.7688219582716464179713120481975880 0.0603859962083448441860262459972106 1.0642259028321794018183943754161149 GT 2 -152802.4401201873565474486302133727871172 0.3274714703750099755461188944845479 0.0486960180838771095155990911106290 1.0499216230157162212092367345491925 GT 1 -28533573752426027100718.5782724604140812889355596024580854 2.0735120864389440614755147324289105 0.0605259433589741212388707431286720 1.0624350745162495693583079911172710 GT 1 -1838444028.3120187420614819361528741259501173 1.0548036351807944302239790501005912 0.0192332684338465294701080399106975 1.0194206340674074748854934698115466 GT 1 -3756841791.6228568984351967327055430286621681 2.7494689806902513540399486140233866 0.0321194396814706925697895935959476 1.0326465874191908332739826127288545 GT 1 -32264194404402980374.4851641278387466871762201723610279 0.6139248205215214465569265188112504 0.0734148061728829531255682077067519 1.0762492851612320318376675073047672 GT 1 -6065153437620621109107512112050995467774.6810420777750688061996452807443773 1.2614817406584598043927999107501007 0.0903830685327411805570232122524104 1.0947317225290143742129669797218740 GT 1 -312711377837684556788379245479.0809196125673687280190017904141146 0.8384445026365681260724671462872351 0.0356581438314865251887689481893693 1.0363094246538720678887705192658927 GT 1 -9530871691903285902014854601170690400029.7425907371830623935608607277243039 0.5149002343285540840495220501617265 0.0457998780161212905539902218313538 1.0468818580612382451144730366570784 GT 1 -13914559738723835650398522392521447.5214083534059868491012664380482663 1.1088682286366763579193547015727569 0.0374792260371746176094582231732234 1.0381996297151142540232921015070634 GT 1 -22298136.6871301259508322551990854756497495 0.7246901181440934601729969895263227 0.0605846706360806754624634893480923 1.0624975872725226248185091999105410 GT 1 -5547.8773383914466296363470657136090993 0.8822491043087143745356810830846557 0.0033223310110910455312785389185028 1.0033278622071386184112431228979619 GT 1 -2273155154579820283527831195899.1712830267486406433928799140608777 4.0556149570793864654505398768497875 0.0691708567714595450836334751931000 1.0716795381724849089239002862358623 LT 1 -7565484776959295876850.2010466953665691632200276507555478 3.1568288943578153280785364623873596 0.0379961492852796215393199532193763 1.0387368255024871772725100879962902 GT 1 -242813556280431215733447396217993290943156.3553634998128814580999222620339441 0.3083091389839829634753609969969422 0.0571834863379315891449647174723475 1.0588835925219353462795832234388747 GT 1 -3945003903773258742772529028961176221970213.8928709343706405088134529252590855 1.2794306134321895512972127666290209 0.0352426578422966914432336016831381 1.0358786681681767525437216482637857 GT 1 -1058242994570831821292432.2806532584164665149394867419168861 0.6778629447664597494335278460931451 0.0088310471735758566196544042673547 1.0088702719721160207052420625524599 GT 1 -1020620521.1270394157966505599066893664055833 0.5154409009635409992580162171812905 0.0817767408550545663490864431062588 1.0853147162474347732311091779212239 GT 1 -9454478028223384584240.5825773486665782118396470353750386 1.5983312787648311426833696520879627 0.0188950240032893455920983297521376 1.0190758159708880106483742872724553 GT 1 -282352377335996665699681257439.7201969956904442483592335134831981 1.0722670382679150077536515296915712 0.0594932689470744452893087017864115 1.0613364733789159038685940474050694 GT 1 -6900928547325241071398520288204890595.0225784866051191972637597135622075 0.2551029356136093699538935548897954 0.0728847708001981116996584554478754 1.0756774177973952873302161065343615 GT 1 -1629526228698430.3626232465373011189808626491666633 0.1455551298483501343394616176145521 0.0770327413045559938976688600202351 1.0801615178111169724798125215828521 GT 1 -625902335840.2147616684353277459776737111119366 2.1297244794078235631615921207141951 0.0287404867250539575315481814006051 1.0291615824705700335539199548007946 GT 1 -426356307520782308858.9164327018191134061686348253334987 0.0768193257030190543976735109271423 0.0855072775806052477057294327437491 1.0893857691715150281878637597957332 GT 1 -235387883686367695449547687229.4070427021725417181777870433433458 0.2218681681052072755447776044138546 0.0418948940813124740992272295841793 1.0427977931268099589823963701153856 GT 1 -234863082038898606698181213845350092639941.8192574291616371587866758646237546 1.2205868466201297924907012147091134 0.0100394090300030905398919448030741 1.0100901437468383362983031615069052 GT 1 -193904259608884250043.2716460325941571834125387163382284 0.1165951141764716336985496791427871 0.0598607331367584559112036126824193 1.0617272584546479184594689401999047 GT 1 -91294565276489888545.3575446942200236078792768018610367 0.9373428639792404907348508118391081 0.0510399623756916452054372703860101 1.0523885912437821963731351732473678 GT 1 -10902.6122181472874996473962107913261521 0.2849339770343518291951939237991325 0.0166555344097068325552486976935076 1.0167957974411813964463778651687893 GT 1 -28941769583352328112625347241067487.3788219029086701253599997596015808 0.0558304162794476313745243733469867 0.0926412066081141306454076631827535 1.0972173245181697542509871460930770 GT 1 -82.5745174562283429254251423742732392 0.7732572866341843106720113199792696 0.0180102500739248952847023518399762 1.0181744086393006789375185495098223 GT 1 -665465212061614578816994293713585740853614.5289681679067953595590070541832817 0.3747059115544822728762727022751319 0.0495789549955924897401921766209542 1.0508501873061977607999782544010644 GT 1 -17.9334547132896405213269894690170737 0.2212628159693261164110740405940098 0.0981897956341065949537558159977848 1.1033511975059540681173845782930925 GT 1 -11418764569.0416061754700451745104516851956382 0.6285723375188599522388380451278963 0.0282446189964652865875366417626613 1.0286511718290313803332520272285236 GT 1 -1302502814945269066168188348787.5166389379673664757147622144267222 3.0755069708427901062657267865548579 0.0903508595797128855218489706118288 1.0946963137963068571963703049787311 LT 1 -352982629364449002530417.4809576527383680547548715784243590 3.0862677182694788605258096360887964 0.0321602246858971220188938022885093 1.0326887267754621877718493184783199 GT 1 -176478805996562278102.1549135371511289684378558366492325 0.9477020604355852748111185990887107 0.0468162316471539287252225137740731 1.0479475624874665792953838844834664 GT 1 -315955850355322904685083679848056.4673630993957383110111148271829464 0.9078260645425295377256926324766400 0.0517754490455306941666969150022573 1.0531639366805016478377383475049140 GT 1 -75237809686948586422.3785497285466277661061255715445806 0.2873661460528920524599114695688243 0.0281047322304539783894115476319871 1.0285072295353469246223302978273130 GT 1 -64057765700211.2729299154846158241749137633786057 0.5805859975744202336906623353632078 0.0776974713872893089480827061279987 1.0808819871062402585657233252315278 GT 1 -443080287110078680258165405894011.0792853009396754041844734398236050 0.9084791463968165367796062099929488 0.0766587930822168195737979711816313 1.0797564411574405651597446071075009 GT 1 -2323740182353229399167.7122861174480911735792502061914369 0.7539357297370023687590383976707112 0.0000628138748401021026759018997101 1.0000628158477141546583568276481903 GT 1 -20412911634718898031815.0712956454010527691009443585936013 0.5007015685670254184618609407783967 0.0589932166858696950636568636524971 1.0608049307998591752546382492664195 GT 1 -9180202816636185334538.2959020331811665489215319671728304 0.7213941403611783183289652221753518 0.0336439092446143931809432749402861 1.0342228887243643092973417228542906 GT 1 -7234274706956150000319539567.8004517755003383562127341325991627 0.0109270612651044110321633327271821 0.0211977259293461726636904381876148 1.0214256240911724278619790561683200 GT 1 -8334177277992145847041703408097947370451221.6628465515622827718550309560208003 1.0987990381677016797844496056287562 0.0901244725698263393726897302381325 1.0944474718706602053985702169623849 GT 1 -105461095371753469604416284518.5314847673525021254310733001586000 0.2781778238708178963454283395333956 0.0953801002516977243703352268843288 1.1002404237851506040354263018021538 GT 1 -2391639723275771168912.8867253267538806945524288098317990 1.9247906670456924822158193418708110 0.0483406828499062851969737076215949 1.0495481683744469727232024438506974 GT 1 -64005463634174023092191.6125748940947368247105746010995942 1.1098366475947827304025010070096843 0.0654879823623207722232925917873720 1.0677307922037943390636755311566820 GT 1 -5642559329967438668837821.8203830122009064089199987234629289 0.2598802950838920900692750898053156 0.0319826481477987028595371255700647 1.0325052663990692016759368186251537 GT 1 -175155594184873951602720028521106.2080359309796513251937167764739142 1.0350041305290157883687812282161873 0.0928630482279746944485604265448858 1.0974618460295121398950635605767025 GT 1 -1237635446294627655070081527075633159.9246398833013250879766329693475347 0.7380394498837964321774898251902871 0.0213013636308770006667990653868734 1.0215315118596786285203325247147112 GT 1 -18430423907400101460487305740809312.8897061927211520575426255271749534 0.2138218399598279838471777565763066 0.0189030828066584106470736088206968 1.0190840300118560465684721828306675 GT 1 -40607745629334480056290752529346704877.3105815450090512479576835544645253 5.1212529324245126916067719247415854 0.0950643955227386173561774269234744 1.0998914930876118445233642706333463 LT 1 -357.8178647364525489926195474623975584 0.0058490275357389112138705592593533 0.0930223748300797735415825180274232 1.0976374982231936517375278958550970 GT 1 -27179530833387488809.1212183854027451228982070255878960 0.2223806009598437923754185306870554 0.0611472805377669746187692642486025 1.0630966603588843904630861800854031 GT 1 -740.8475799923858891794821739065043468 1.2270839986400312011600760261086530 0.0890444871279000540761003415620566 1.0932612162053421168269956107018722 GT 1 -1416534777001245761.7098161450819714390261902516954703 0.3672388465740297360985583289122897 0.0884424808354713338995681358608169 1.0926005829986201131011942260428043 GT 1 -3545405611617335058767628857.2700926071179994846392199463039774 1.0289824806667229726937040584891284 0.0719372778365593740139988979869387 1.0746559599417484810714381341443460 GT 1 -234124530027724021894778772792052312001646.7175007145672027386605703767410424 0.4145333227834506402460018200226978 0.0659199366464310228862902780543153 1.0681931234918251667517832543197200 GT 1 -239.8600373625839642885134663053637998 3.4065740076360529092320517556108770 0.0144387451377271708145132087892563 1.0145439981948728255503170461046736 GT 1 -613215329803014756786486426837517483749.8323377954657459332469864884004848 0.3264284227301088185930227926388285 0.0686819132029578030507349378459784 1.0711543986219119733309523542292751 GT 1 -681005464457451032162649968231301129876.4972148341580816089044353477662883 1.3272146520392610271882684681360829 0.0904381937639283688723462802708450 1.0947923270535303710215207792698572 GT 1 -43800517098843085546783.4061959385522050748858892961559630 0.2747766363358635112737349277564495 0.0993632834130040492853872956682190 1.1046533029172790354710975101272010 GT 1 -3991138470954856743527031772.5384400095157413604385726098458274 0.5018188227293549845229241078902619 0.0647209860465624424982235996239924 1.0669103835636631988711160116377004 GT 1 -259357665.1881287707517835388375190765340881 0.3975704869142895915458282852937222 0.0605934932552663902217259555654263 1.0625069789232009591665376462156522 GT 1 -18931173402094759358.5861427469747392119013179728684805 0.5140738057779474476088784723471366 0.0862324986156659645881235675006377 1.0901791147397838103016214932000548 GT 1 -7.6626681619327632811149064377465335 0.3071442319413995872691610106860057 0.0924313958166352260177638029009971 1.0969861188041628455932787399075770 GT 1 -260016593394407828.3450039182487526712626703192784299 0.1711807013621246333056976239076212 0.0978695162068404553367138072753838 1.1029961088572709779480678870744932 GT 1 -13935.5834226565911032212712684961752967 0.1892176656468680173314768297665922 0.0517171828796532239621878244311252 1.0531024909230248922553407963940464 GT 1 -477329281017.1614237813332903719093631523559798 0.8971849403241573331304483298754631 0.0359702158356189619463944069184009 1.0366330884127965730671473448525148 GT 1 -17199498691142784037303939462079405.3390267750908725889642826799783923 1.1799038691156457846868922391012107 0.0676133219810505775053511599612349 1.0700076597615717117129576590858258 GT 1 -6622129919657565677935370.2710103706884558373561323007814469 0.1964973288504613289364792911627012 0.0546272622135302033856655920970133 1.0561759977359837801031995042974201 GT 1 -1248418.5057969015167108886211150838057699 0.0491845825043189431602111011787082 0.0486868870315495907013324436918460 1.0499120246027174744759801030321722 GT 1 -19148693680717994139207199482154020417.8425218596248975263706590463042232 1.6613404677943509990524389737082623 0.0077924414389058858329111889755076 1.0078229611628565737041394173021781 GT 1 -6429774.9276466793210746295685782350347307 0.1813089118644005250918342413045118 0.0129322346118172666354785189757949 1.0130165839640828427848115571985584 GT 1 -4206872944080753125462326684.2165800004916128377299810866576172 2.2327017626699844930304979027754923 0.0270014466215147095007179197719508 1.0273726835613838942485911387746104 GT 1 -3490456422402089160087709654.1131201275622445707961938796535446 0.9465066091338662444423409142452522 0.0923035451478821791507352470662849 1.0968452570954795087850792159511501 GT 1 -3812676.3835828317934447359625830641601571 0.6176561541141083077824144202125318 0.0078494087914257586561618333614451 1.0078803775647718583181638500091686 GT 1 -325572633472245323504073.2955105072785721039501450505821231 0.4823769098635104189207782352097514 0.0598068763014658800737856982593975 1.0616699740770797450443175759066490 GT 1 -75.1263213661670703022735282237018399 0.1790842522000867495464835288979446 0.0264704579675413382029331551704339 1.0268271084233768565120393314889240 GT 1 -15527781904526832310471.9047191423613002303516620971967210 1.2663812193924802362451577631015368 0.0918126356784878302745715738686633 1.0963045732960312797492112562585233 GT 1 -185726577298049716147779481827051452592019.1810710729847986503782213214887401 0.7440943150329770573478765257040879 0.0655681313465932150609180126382850 1.0678165614822723912525462482546974 GT 1 -120730.8594447357639637032449075844219932 0.4605783655831530218754988276471469 0.0421001681298678781203833343270165 1.0430120661125337810161834137692716 GT 1 -2313118067734140.8750821235242646883449165153020083 0.9947532477517692604153471512675921 0.0576531434656363007856583225084896 1.0593818592980106524635499719092569 GT 1 -25232805475321016722759898148982936.8554109476669767327405132195424358 0.0052807551025655475077285313447174 0.0952698379552000603063170003268822 1.1001185432281898506727666437138450 GT 1 -36861391900152642793.2461331421947703131412074567377297 0.0546333965977596933993107762987990 0.0289222681752775656519790236431603 1.0293487605223866899096716446315034 GT 1 -400953542283219180727.2578334189464926608435970889310468 1.7590435700558168414058455457511433 0.0011344170648872380481493439520009 1.0011350610029680894460319799571816 GT 1 -4439566925943198567647468.9743619520461921017242568172052662 2.5187422063644229368446485484626755 0.0495185449992310613454123772558051 1.0507866280269800199388556095679973 GT 1 -109292663818170.6047000343419482592377084122098804 1.3095122929671007215944054844903314 0.0528413311374836016371509016908905 1.0542886508735670104068169958547515 GT 1 -392430391985068825930361090763886241464.5093857602544080539612326010770858 0.4372245631745965766334230593365279 0.0240271808293348879170681020569122 1.0243205421672251315153402506934998 GT 1 -77149034.7044823395952854540793416291005506 0.6733363411023491429177359989937067 0.0047103597516676975350480072199613 1.0047214884567179018885602447172264 GT 1 -1294008736211034278391570088918.3516191751297058319218574892631436 3.0902493479172543412905594987023428 0.0522787141235093600385123426466622 1.0536948221942353731813147693844710 LT 1 -51770853865.2561665007279947046750830442193900 0.2276124337317257033522746983894308 0.0374830895478360571335188823445822 1.0382036436735865722581432282219673 GT 1 -122271712792242310930841931138.4684838875216882815945534837953298 3.5856830617044996229808499685917241 0.0312250520675828321637665305491449 1.0317229459417448760694547483323273 LT 1 -93.0723666634633662729536663236159755 0.8125014266299398921965162226435891 0.0045447422620638450907041062851295 1.0045551010002904383089326220173724 GT 1 -2576060.9270220099926943546071021145214259 0.9695803527508101680569780039499204 0.0505202233340516186180666512495653 1.0518410478866394161430424857921902 GT 1 -915.3405403029597339953312206213349832 0.0217581605680755324668806295691598 0.0176072435667100604434047626856879 1.0177640949538913873383919526304963 GT 1 -11902255920223500989543806.8102237758205112520722625646450146 0.2147405576317995657957785900109075 0.0068229980239234526036900563786677 1.0068463810974133841440419814534785 GT 1 -864786772830207693292437747223.7357832737058559404510322150082099 0.7083509323173836540766240064314671 0.0174697587504584168139917324408151 1.0176241558146598365386921336123067 GT 1 -1523407806134777590383282808471600.1586995354038694395526046055016493 0.0404378034381560989937445499703904 0.0483891215665082171408122360563392 1.0495990688894918559995471366855269 GT 1 -11612137541026382458067.0693385839770064587428759350225370 1.3968341385784123800959034914659456 0.0366158118944998500277606436955528 1.0373029975161997210700377373721423 GT 1 -2861649381444144322526556563.8276247180394153986056215078390549 0.1379709050632977668440105954858478 0.0140584362589658480318286816766700 1.0141581921185233659461565514407111 GT 1 -554794.8844984846471179222327540238317039 1.2173837597949064053562620214391006 0.0544588021443486555956721985371074 1.0559978192727000719627872773162435 GT 1 -32836931490105039.9225695175142150841313294278918465 0.2022973105339662918926424401942542 0.0445759386715116575145783004401696 1.0455999937835432747641856795911161 GT 1 -735377326703732360220.2711199371304550398477222366220413 0.6978932680086285933157466090215406 0.0595159375514314596206572112295332 1.0613605762128440953015816365717799 GT 1 -1404075164183494111.4155232272370968354671987101814486 0.1921940076751009332221108638799562 0.0806148468214435109651955681762353 1.0840501441213438542869650266907016 GT 1 -3534048735.3430594132600721916935316833430756 0.8129874078877758900296641870079241 0.0454952534151095593705646941090376 1.0465626629791545968484452497990693 GT 1 -17426324637166153899499.1853934148344915176985751731579399 0.0695110709891543066094876410208987 0.0172051493648252563957397838292842 1.0173548778327883281969385080346666 GT 1 -466.7430147296317826937390486700266747 0.2791076134648511347936330517776165 0.0397667776645012974200865754404571 1.0405790840925709058725663071575072 GT 1 -2582809104801428611560822841561359642975906.0218238552094069286040878098157213 0.5627691014026357566142057353492307 0.0320868213836606651521526573640291 1.0326128872401303699086370227414637 GT 1 -5174691999958849785585391079513443526188066.6662079797498362771148017025982735 1.6782194304179075378941263393776332 0.0734479829813755030500313387997821 1.0762850912616135067448553965682897 GT 1 -52249091378.7666289798822888411459085471977585 0.2000218978039018861789213337724038 0.0068224726942420096080976522196038 1.0068458521589246110039143497256753 GT 1 -16309218347725573385203734.3072639771579735159081549759981863 0.2415833310711440607101664687498931 0.0581177457361327809343363634622336 1.0598750076919609145218924252102462 GT 1 -12657308113969158965510551751196686755512.4192703852109110264775288244644039 3.3171019736930937664360445388404821 0.0654880347030694123532183570631354 1.0677308482124374790496937889902992 LT 1 -13475355001612981743024744865929528.2968739189986998443503894818693769 0.5985744609335411248199214782592398 0.0372098716191514809899471922844770 1.0379198261577224932691550528529087 GT 1 -1.9494419916067063702562859017478473 0.2555220244604110174591180993891114 0.0103273561845650604891641503488652 1.0103810533471955850211704864060466 GT 1 -38944288598690.0864511232103391617186280196072191 0.9271721514667569457693672497380186 0.0995911191945880663014210812482404 1.1049063068202665167963092436491483 GT 1 -230833.4880807399907030559548870658333376 2.2834714208823453789471021652791312 0.0749666171273529248713777972863692 1.0779254525288746256769095672930481 GT 1 -754544221743379627551244763.3966066567800958681051005025375463 0.2466380408938259449643481548311461 0.0718565943517982075389526988515901 1.0745690261862747814087487339824302 GT 1 -1646831428803320193141.4387015124698170122103012887080423 1.6162475536619050818387447630549943 0.0779419788949260675780761087726758 1.0811471277904807342053862844014509 GT 1 -455387249314.7822019191918881157399413707305879 4.0528632501311495904558152484291226 0.0682843350041661460121334964744387 1.0707275913196347751974438811997115 LT 1 -194831942021258756.3955021114144039056920838035110694 1.2025588893014430965696780472454781 0.0229851775695213064458960349087623 1.0232534556824029021424615786958435 GT 1 -52132054916106507456308005586244798.3898191220004705171131076677837094 1.3381908139631167067970213932235004 0.0830106996642914124006355156254324 1.0866594749118383655342088954306548 GT 1 -12901030529021564062941788017461793.6977728436680616234493804526390000 0.7322006342609407664634944248745387 0.0878800444458560438392215767004761 1.0919837673442685431104956133623304 GT 1 -140749.4924628677392375577568563398909747 0.0037396582946623615123948255943963 0.0777889500322701314994567101065699 1.0809811770998712383188749660089528 GT 1 -140492878889035052416574888914.2849970770166706124160674641703039 1.3680675385510096593628651982598648 0.0835775616399796865716435112843237 1.0872778433686200043699303445848294 GT 1 -350433270884238829481.3842643634556041892514978388624449 2.1317618068032636415913654758143358 0.0877083187208602192084845016656362 1.0917955140772579794689726179431202 GT 1 -215289164300856283463.9790285645614089263023944171829046 0.8382333375717100152419559835889906 0.0121108975961129857998519168608654 1.0121848320646367020307964984729937 GT 1 -94809146914113090260.8118164050810874410576622202710804 1.7134436339737186441242858227765885 0.0752733710165833419850142729178678 1.0782571213832949746157969346356406 GT 1 -59056849770664225754.0339945001075487652914000504154728 0.2691921350516449725161103926619087 0.0755896947248204024045447626197700 1.0785992525748386254026760310064347 GT 1 -433858501.2783318904434892905451040835214724 2.9450094285582062343165763415191074 0.0957134698830607724339377503319387 1.1006090107166062912629754021924550 LT 1 -12658.7859922197922388907308813391197682 0.8489867551009600847280209170706450 0.0615856891764978880064558405175809 1.0635637315209814391787884138923596 GT 1 -2244548313242.7937650777965904339166461672927047 1.2526315247844299604523322423594149 0.0149246087988475881695086668302543 1.0150371014485201499415198395378515 GT 1 -2.8931538404450149282727500092798227 0.2170381780681412001435822521901997 0.0929070100535712236728399301954302 1.0975103093743111928980382654181214 GT 1 -196549121960808019740706210726.7945274069748592257332880846063785 0.0507534033165577712446500651813219 0.0123537613679795446940149227065299 1.0124307034171205206674775705933048 GT 1 -53747564141.7325257381153840932860514389150220 3.2736879038355540525339850728429154 0.0998778705815025820431066569136110 1.1052248255102647517130502836158385 LT 1 -288587691471306197986078403140960509798.6334347019810880655430151825763317 2.4119171113111893326662649470128579 0.0153840261869604772088081199201676 1.0155035881322760323394005811671849 GT 1 -3335971312.5664224613734239132845996659386726 0.1070471245558714154714683495217801 0.0732746014022704734915533363930381 1.0760979831922549863763247731035349 GT 1 -202719893846270691102322565593797343810614.6004501068708511348434535991653404 2.7135843734345499411090903992487535 0.0369497384101204101207329836082048 1.0376496758254645907373763472600774 GT 1 -4512161123846323457.9137781160567425289784311100901152 1.1628118372503138307641661509244885 0.0710617085704351052341244641466727 1.0737129671004980055824818255230803 GT 1 -360500411551838997891306773070644671577.9311714414123145793518815191545471 0.0581176572570419306422719181257361 0.0217448727569120712902697203716795 1.0219847766652912402704276203454723 GT 1 -300665409302216979239050609838461.9303636067652858494624586244572839 0.2004356564442525835041852839723883 0.0460866391016665397952490133321641 1.0471824283263474125262551111863037 GT 1 -1628200802.1627415674477510085321745945184886 0.2249774099993205913476650307373505 0.0156721929296358957337908561077470 1.0157963001411518219034844085529652 GT 1 -10078854771659051.3095924738861272990432031659797590 0.1813955246466452133492896626293572 0.0037556562892618615273111299275828 1.0037627264740173412670724783246193 GT 1 -959.6048224296783227674768393144313483 0.5285153297193882367860690452451243 0.0411652528282868280898775240089581 1.0420365368076973647035806964507528 GT 1 -24.5224390861272900251916792278744198 0.0640393598102767633890919254536104 0.0059070597214677649845183985933785 1.0059245754102860890330690157152371 GT 1 -17068521.6398639049344733377267241622965669 1.7980827252281956121240878146389959 0.0514809522474193864073539577043664 1.0528534078344535693961346052644013 GT 1 -607091143348614425517979544820800.6056294930583058521062949425342223 0.9284713036382022555779452302420659 0.0598224785792071804383303661949284 1.0616865689731787195265375235651377 GT 1 -24966061693904099109594.8521795884136571431096086688877762 2.1601538681692180479070001396571739 0.0238146282099912529001002475900989 1.0241027804907710571057626144277749 GT 1 -103533709326514719.3123487336530747092261644787101536 0.2988567404768733381513853192874489 0.0834596926751951881367283458977881 1.0871492330460976779172476933041402 GT 1 -30218820397024082673004200249.6717847909916403513971998589327186 0.2253230074538944666745300343904926 0.0499027285414565431033118958106828 1.0511909086201589900210087523074806 GT 1 -1416269086558797655086685267853365658494.7705493662478179737115824716892433 1.1396837997144863200696842133982514 0.0186466454736533732325849070751952 1.0188226859786746165559313361097296 GT 1 -560255771318.0178523716091641801473367704414328 0.5559247852576143320811691468393880 0.0972898196801275725178081423766625 1.1023537291079958071008929308595192 GT 1 -1679225108404348372.1302977726307512615104994923147204 0.8225405079136830800341202550822171 0.0232346728692578395868013844844875 1.0235088532010528236721478800425283 GT 1 -1846627487843981575320.9283409525774923228812317117501786 0.7675322014756560818776091087163026 0.0073392096692257880271881834536459 1.0073662741711874141658526639217934 GT 1 -18621887500536.2504019053531943223369291601795611 0.6578882880398604170186525682323794 0.0244196961081205975810687839660249 1.0247228015568773773442955304224945 GT 1 -43386494317938367532640980322819961.7915320622424096069997259730630224 0.5969504472868804125757271958947668 0.0256470933684102532988254808343657 1.0259817138270720708735261868217730 GT 1 -263318102971539679566899570369637022250.1333592694663512835224696836579952 0.8440357395377024050100726613574211 0.0860466380693033651237807733101172 1.0899757351639046528965390184605334 GT 1 -2867457055.1785180431557858592920359005010933 0.4051481457932463273118777417580053 0.0411408920389081185210358056851245 1.0420111304694387140340699207028796 GT 1 -1872259702530611347034474487280243.3674519562366180932235294138614899 0.7529967543816478664845244209129973 0.0680693708943969309550703165686169 1.0704968993568917003928028138947986 GT 1 -3316269097.6312119096723146571908276658196973 0.4068141536695697908894013760874322 0.0968048716346105406206773506029025 1.1018166599107999105935642965775986 GT 1 -1.3557528226097793733484534480648804 0.6803473877990021508375011562027724 0.0179722108747925458373191242732819 1.0181356725298915127650954735004612 GT 1 -704.6138236285165014212154058408958379 2.2304128801815575168258600040329407 0.0861649114817779092119041696016874 1.0901051521241776788992872262464588 GT 1 -12814049601330376037088939909.7624110541364988019438811492767982 0.4245458866001191223337954287139224 0.0703254648300973164392204365077019 1.0729207162687912867184211382272827 GT 1 -594284735678054984607422.9068402555728887094204310778401074 0.1399416221030355900365138763261227 0.0342400093481716754674666120815661 1.0348399325223089339041373562949761 GT 1 -127797600024430703758249196782395338.7371584748685245867929155508162857 2.6125271194829601153067721305572292 0.0314749116937203140206047465472622 1.0319808921791361504073877850981034 GT 1 -10840972116339545649336547380992788000158752.7827539807316741401693183125688106 2.7921835260583057132066118416718302 0.0001490417239105412238488193816856 1.0001490528317319739493564024124860 GT 1 -2.8801925127570903072902733280340381 0.2515588947243962577753233001892625 0.0015537759802829436406537320198919 1.0015549843420259008149687645281841 GT 1 -73757655025672095471239467006836.3003868702782408232112042241728145 0.0746794690495567069802758829383665 0.0572618716190014125959575400765570 1.0589667354649900699165001967423388 GT 1 -58890329.7916180514478839932416538762938886 1.9822537782062111766864369024321458 0.0347870721602127809410093296062443 1.0354065513717384433301905567991621 GT 1 -16031928967437620582833506628231414252.5359327761664203580226576529192490 0.7404946225141888165243621251173225 0.0851768109506956610641844151468042 1.0890244683907885940679087734376714 GT 1 -1648188742429686485331.8817436713262056518050877387852615 0.3107859717034000579561928039333004 0.0477137143998381900339404816247040 1.0488895692297814085728220405153340 GT 1 -36.1140525086082597957654950299959517 0.3403681964502138370211222301828241 0.0086523131748741324965479149964695 1.0086899617587123286493877128007981 GT 1 -243760286426.7494543476317256626718043865526783 0.5577391973412891116459356440434299 0.0219989347777888382631358810128787 1.0222445197636478863764239097321245 GT 1 -724603.7405678330934763475896119263460239 3.2610978046108463613672372498293474 0.0580138602361428785494183954440704 1.0597647181404990973425721289837559 LT 1 -266783640684590941844906717353871455.9430577543344519590981071527917251 0.9428896113472012140159540451200851 0.0786873175237906849598539458059122 1.0819557971135140078013143884266053 GT 1 -715831667.2740021025675346015140470487673409 0.6471224464998039299321841533483114 0.0377415330123087998462558593789641 1.0384721877011703574615167174160201 GT 1 -2337456524584608475220530090817.9712979833759553239573810516977935 1.2577087781328305814920041293215044 0.0977433784450590107186668200613993 1.1028562965502410147637871675522643 GT 1 -11240222442658678622.9089533836322886785904980026447479 2.9864618825576955729270020187800691 0.0144593336303734878580617599423125 1.0145648885328358654242586831534819 GT 1 -2604129840737672198827510495.6620776627287443442779329527430038 1.2784522535593510839398261459715714 0.0755121885069937390724803745907627 1.0785154121326107514493911650395421 GT 1 -425.2004463891231495547778088713567673 3.7826019051680210151611509206944871 0.0245164094319482440870292492329637 1.0248219406206276500050931367060243 LT 1 -146.8915982855491021133647189976127048 0.1456475042165151665774811854333184 0.0827098532672850550045266000183429 1.0863314481216076795290011351540797 GT 1 -67379287183133069603650.6479898891634261570153993849088780 0.0702401942582123248483880783918645 0.0053615351543052501030232730122761 1.0053759597657203876387301225608896 GT 1 -85733464382.1941136709758168905642543821420622 2.0043657512745067577871858423380617 0.0941834655170433881172957693716911 1.0989184940158547190240019649103902 GT 1 -634400149674.9053020033409626779764364179120107 0.4971284221419469495454234843517944 0.0375766959272978784513691744146363 1.0383009000754522374262709740499595 GT 1 -1088039427391942042742669.8895292012376126395899159881325847 3.9722981123160792973447468943154359 0.0973395138133020677398939748176931 1.1024087805543375214130094579045406 LT 1 -3485735708207.1458087435348258709393559102100210 0.0941549074420742683893554326610013 0.0203614124490367430766649186499386 1.0205715635499189911480989383645975 GT 1 -15723147557828122119515946.7314165858982343557154241645120223 1.6539583066339765584430575590532410 0.0649468846198953761327942455810789 1.0671519434137972839131348407119324 GT 1 -3185032755908214518590730689419.8184808956334097946968903489700091 1.2972587299971932484471409758895649 0.0160788274265129290729461568470937 1.0162094943120803244348198730185108 GT 1 -124810056517504801005087354.6569813105954549263790168338422521 0.0187837273306663110295098343819519 0.0985869974403157069919869593878230 1.1037917439797435683705417546442848 GT 1 -4035951418569315400905066099436971916127.8910938736066306859899086060419456 0.5313066626267462242652422769863515 0.0194754273585226923501487552353041 1.0196675723222064342015849748382476 GT 1 -7511137872828.4603775230942089041689137407946942 1.3141486524982801818330855646484269 0.0840549781008403046135329352080895 1.0877989358700073896158472920820404 GT 1 -27213553715458537247518043083560800.7328439216565326439858056341930872 0.2693294497392484155999916970246871 0.0841066443517918188784560252882229 1.0878553450506408796708160577217038 GT 1 -5170213704296819508980525898251.6532724649513311400163597130328108 0.7769204398466965241673444917212343 0.0066721787735648304856704000670455 1.0066945372670971181652886023152850 GT 1 -8.8344049871353417555154197081556739 0.0581977453497314511939817954002360 0.0453248831275452113977824317791446 1.0463841881363411377156148215526600 GT 1 -590881.9339363337537378886334901996437738 2.3832584193855001280512427979315865 0.0403941205675061367446369350066588 1.0412326210736187945138529017956469 GT 1 -49616044652850473311135337973.3108770932967230959489209911177893 0.5371312388445360199760199731253879 0.0103742677817532643325819294508623 1.0104284555961591739668648060943273 GT 1 -73786654582590773.4669613449711891313932238690006307 0.4435865103662991435461332159288964 0.0492141967406273204666114091897552 1.0504664749712945804462988316207645 GT 1 -3780851566665748820780453564160885.3725904998532455876026732929852412 0.3160218440640431562345498000920427 0.0145706215113295074165098028661371 1.0146778155469877088761476951903823 GT 1 -136188963516843348881704775972023183491727.4159841923047407051965583901844714 3.2437588636876180944635651673815736 0.0430984609136283741838545042501527 1.0440547777894228623472661939571889 LT 1 -191.2863218833842681024227507775452134 1.3111580777210484541652453848163208 0.0016504346396073121195763062566133 1.0016517981072731453892430953664616 GT 1 -229655491042934568270261154031143524180.5736619933843874209206058896839031 0.0225901748981669567884443425381079 0.0789708724474235869513130773066082 1.0822636172197813133548018160286943 GT 1 -3991418110932537727223538958463.4757642701705197291312525246186997 0.2171039279023796902227218233361127 0.0324969261894698509302708811202801 1.0330366770180996004942436650855944 GT 1 -33687057134742638.7747245409789871190358739513611221 1.0972648606766925334697516526382707 0.0550310958459249842503024397570280 1.0566032576868607837958899299177073 GT 1 -1493.7731758484591580943957230307096650 0.0363913463783068302703229257171523 0.0053811124156578572575185417304339 1.0053956427507593259302629049278069 GT 1 -48472.5058640194838040113449427973602532 1.4728492259453256850381607848988698 0.0867286840435786630777293173042115 1.0907222728110870142636533019335617 GT 1 -35377638146322775476321895345920262977711.8820172214162488586599540696316066 0.8140952473757982255547831360160932 0.0905952544000438297213763052043880 1.0949650192191419448486831462388543 GT 1 -243867346655572.6591874741102102838241848325103284 1.3424953611964701724347468707605988 0.0373332035348150459508117031671169 1.0380479328052831463535034392932870 GT 1 -129894440113205.9378212710837985526627940760705058 2.0100841774093095018043736016101898 0.0442890545858575323880530799648474 1.0452997700036461792127723744079508 GT 1 -2095609843176502316722990410763827963366301.6775304315937891048635575537220144 4.1189166595326473673769403988890235 0.0088943216709955572599711726965404 1.0089341122659347528044805547990686 GT 1 -4790913627935877.1682180025637045754547669395019315 1.2846508477201226806649457106353410 0.0486766212033181958347062968047427 1.0499012334418457826118426739870890 GT 1 -55213789614071222.4587258582326754156545827561493130 4.5405088454399892963010378110439512 0.0452134645544868225019605292265633 1.0462674865801202135530011119719398 LT 1 -3568993112.0876350482472028792433992045219504 6.8113202463973137254344657508061173 0.0544440548603975338333956282058039 1.0559822227349906839511777248777619 LT 1 -5443934709672880214969530.9168906949723638271495234157550921 0.4957488123368485726795273372911458 0.0062115892277556983291993634378534 1.0062309614111499778466692655197061 GT 1 -320664211342733877617272724721674454.4734769644107073041144484310889660 2.2676412336574602671358642874433962 0.0283575200076463744893904460125526 1.0287673611215833905574810620646647 GT 1 -3843568013.6249336474059313941146512949129131 0.9907797516028385197171131279118509 0.0618456906944424720175742972601449 1.0638408346514711860591447556918047 GT 1 -227693329611086805014405311.0423428590377248557148286550442483 0.1137810081466037302240396267826738 0.0129542041571230793237045082564522 1.0130388415947867415337777389404482 GT 1 -1053.7632569941119304845874818527460402 1.1205919881843055533535241655368291 0.0295067323614871579538561132279276 1.0299508134002111802536385179896964 GT 1 -284222202193882322.6514162613490389183361339470709469 1.7881643044521677651443060802669744 0.0362585707129472417678179636473725 1.0369322472315057362111442675732121 GT 1 -745391.2875105519065811429700893706468728 1.1119552978776131657762574768237014 0.0446918274478202007293718594161166 1.0457212967839278737727154907426358 GT 1 -201679893.5915105275342068656244108436110489 0.0768769313060355222101484663472121 0.0418260738866395080588415647607103 1.0427259662231574405624385009972967 GT 1 -932560720652210676991345.3385839069896015701687806801722997 0.3390147263887013173767235554382640 0.0392155116784668056680488507931029 1.0400051528913035727265526256611872 GT 1 -785055559730.8781591494454329436036216978333397 3.4070641781760244839673941233164469 0.0664943235579405404289626699697226 1.0688082352025013342532543896677383 LT 1 -547249.8022535905260584423068193453387114 4.1028299521553079222563753764089611 0.0419254373308903603191838683267572 1.0428296724438501851594478179956602 LT 1 -61319799120652031164294.6641928043083158271716712537780578 1.1757834619995925428879987954525379 0.0656197734744154950101710819334061 1.0678718288127532320689079772667574 GT 1 -440873805065043520202155454338360.3457605247761456615206941410599491 1.8181442491182173161788782788207754 0.0809092638726233409987055055495635 1.0843704279558061021182289164524566 GT 1 -31668296275542321277.1858908475296116769260484912767842 0.2934440511894997712739356196642148 0.0576011293000055515613441440660113 1.0593266644089682150381034918927555 GT 1 -21758226976713.6698036941026383629498650952521773 0.8418332605435356080461729050411320 0.0751476043696726533493426168034424 1.0781211264942625508060462432142604 GT 1 -4146326047169005.0080623631853991311710429093340523 1.7278254219845875684809711129960642 0.0940677197503227289982175753091624 1.0987907215940521853936896813480270 GT 1 -7963858876638803077240022364514788805841675.0093242332583613078302926006412156 0.5559830321752137675488544254023835 0.0594853673148019408727739814729164 1.0613280719514522113704622376220083 GT 1 -64239532828523.5563123803809750689533263452121280 0.6419861841001890058428865949888338 0.0153898696418491035849368403794228 1.0155095229052066429924074333200375 GT 1 -1394843195830542715948743.9451652347942961957159433624789638 2.9366840633098211518898563512638598 0.0905898668339287360882251522803113 1.0949590949591438469911090746931138 LT 1 -1714459.8321772195507437951908944914860125 1.3557134524629190201820746109044558 0.0041396876599465372664615451022491 1.0041482798878658141111796656580495 GT 1 -661320171460108023.6090333148241102656763180491673588 0.0337713445421542575460902748364916 0.0907570634708893632682336623354371 1.0951429636037113285763190116419269 GT 1 -113665236729497786.2019402352235905207173944692059935 0.3314014526550993502394162836588210 0.0541920678040693150335720201875547 1.0557157620493037422269967957211963 GT 1 -9894394.5903045140261178753834755394054348 0.7513492039346630682942710419667085 0.0277275064325291886885192697333142 1.0281191706340932289363668872343604 GT 1 -85462076079807932686312910960347.1518690219413477663324790285651651 1.2174958622297217102632365332468873 0.0686341860930479631035645780224643 1.0711031530939914857315287570272282 GT 1 -101734702827128052839099463817573521.1361634997851956813112937753573814 0.4138939733347055756377056601095954 0.0258458476349995496876551632465342 1.0261857205473566489242041033322665 GT 1 -1.4848277111195161105467279870429173 0.0360163675203453446395840303228107 0.0117392604926245437086906697412368 1.0118087096674502221141621663355548 GT 1 -24834.2522589787434210895786348664002310 1.2616368519118208094193919109467207 0.0892459291710325751429218065693484 1.0934823733488911062438882996122842 GT 1 -387558300763327905020058.7136670249200405843297241893953730 1.3445278471705856837209295588017952 0.0617501392862952074719480079722908 1.0637389894203034515331581206074440 GT 1 -27838129057460814800805021686923848004.2749605258356826623320967666004993 0.1099799899459713644043450990092378 0.0982158339395927691701877140476854 1.1033800712992137230149283687187465 GT 1 -22628808590582459494781223869662271383278.8357314771202353988511188410738933 2.3182941330634138314890022370388839 0.0612159013773001197149524927217229 1.0631697531305032222148413508917063 GT 1 -381375601804736424.1454117915389220829045874280402791 0.0341411914971396559213591444739251 0.0194226598517578506879909710944716 1.0196137581818668198519566694957123 GT 1 -294578287085407374055712725521.6084201258007586260209162029558589 0.7020822708411192526948186705620564 0.0801477414848324458680351364902348 1.0835422104052462135756543483515840 GT 1 -11375498755358986307237942881557015779297530.9750692169425927234489479058035242 2.8664570336995706218638681691325898 0.0440828649774163998470176494392421 1.0450840485342339638487445339790415 GT 1 -103796609.7913310247157622967771081066814461 1.5433710762862450432890899276168638 0.0295710746329741034694605447759417 1.0300171141223548952381636813687864 GT 1 -4111612956735816771182202421547076952089.9493248605412461408299909510821230 1.4541766375598998376046408475807084 0.0392148173533014105044165731111109 1.0400044302267279548771681006124350 GT 1 -22302406905744955736208496352617.3593867266526155372173825635754119 2.1481906081752802848748482544960160 0.0396771883794742155912759132641943 1.0404857889389715340691921962887169 GT 1 -54921775537619474006.1678273776489407707262778125841161 0.0098800131182808776920366806525383 0.0416063469732124956996444939156367 1.0424966741107569300518583750402944 GT 1 -1156363831895.8241681559419147689059003122532492 0.1927000682196196263548602202374965 0.0259863686047587074740390224341235 1.0263299801652132062839152821673561 GT 1 -16338950.7509400859803162915832050024086475 8.2036988332066572085499281267800580 0.0484347731426529301389028807256140 1.0496470429850330484707233147804089 LT 1 -16333931613754988628771130892525472.0720309799860921199383320117313466 0.6551266485871679526043833180975761 0.0026963634999826759849333881575262 1.0027000052358134609193883885054923 GT 1 -449669.7962712858461719528695909787045981 1.2778601474878952794262014479568459 0.0857899178798486325410160368962365 1.0896948847924812606611325086514261 GT 1 -6432136182467146648.5897113745704430487971653747419131 0.3023889435674001960360201755107513 0.0973342132990473466535674732390874 1.1024029084697904350263604304315875 GT 1 -308.4936031902155145953689975805325822 0.0938136892988765227453945849684237 0.0852850895583810744664071646247917 1.0891428355435054079153728645779471 GT 1 -2769155791381027041702392947235956315534251.9802487407098837656375788101335486 0.6211100105309244388727790562750203 0.0778702104532145368993836623757948 1.0810692957591298784984592181974119 GT 1 -1921103640339870287213991029004118180114.3541197464120199086253319891076360 0.5517511145553067264071045515384071 0.0797420974253014150008287215964295 1.0831013193383095480395820891541243 GT 1 -42038572921488967069977.0288142791416441157134935468890018 0.1025422584550190956833867835607701 0.0772244598056229665030947315922950 1.0803692591084112416323863874743834 GT 1 -5091597514526641634516383407606571394649.8695462404496020389971303786794849 0.4417432802397446633569220237962414 0.0502348447144989866069997151170024 1.0515405299103643432999499360154069 GT 1 -25534310655518206435702762230738703264.6078005290218243975705799594335248 0.8418435631226568673358450931148399 0.0800326873658778267029217711580227 1.0834171393157667944565519285742429 GT 1 -124.1396525966432936940084162731565547 0.1746545242581290814653756268825171 0.0331837658168298919137051616662153 1.0337468386272897230159434611700105 GT 1 -2285266379998858879239472.4885331419773456659186193485444051 0.0230298802197115645721308273133599 0.0006476163200275737604738852474580 1.0006478261140588057394485334820918 GT 1 -597485661034834211742604556303.1101712386588849204391304247021599 1.9701423029040651669228870620035970 0.0943072114869327129950551532827508 1.0990551159680698429927021956667798 GT 1 -910752080848440342236189.9288150959710440811924522387312986 1.5997991202865615987226017889756564 0.0700447347481078635384926345258291 1.0726187958714538207091541888692291 GT 1 -316642932757353.4510700775018670266654033149839071 0.2134079874430369575609081325453480 0.0005750947638359058997544598953262 1.0005752601942580885917287260972846 GT 1 -26028687610763984796242911151055368605834.8623535952659188585626110765353375 0.0944042620320900101764764879623386 0.0044007189415762764109483941803619 1.0044104306078602749772249659321029 GT 1 -759411556610085946631504842.9316914513380226082414123998997613 2.7175185551081279375168394017655686 0.0796356989587901221864813469997289 1.0829857079255809796032787628981072 LT 1 -50574645878.6969783541525050555147286168146626 0.5821910312289325089217369259243888 0.0959090309303099669670347696268701 1.1008252941508997304760866154081144 GT 1 -33163542871724246759754.8057596405413155337396085382728473 0.4958355749879877164126019307935875 0.0373933336375448838131797565826491 1.0381103967657649743195744712185448 GT 1 -31782363962156176372.9872259739998018238414184814014583 1.1995276068322868451353830800254894 0.0643974779917418302481952038190730 1.0665645486705109041937015934152901 GT 1 -57788755798193900387808849142.3131131853374724142616283015088916 0.1222958198993120099549274970960635 0.0162389050068324049440764018716041 1.0163722010491498083472913164767075 GT 1 -169.2831124119992297824144798114309520 1.3622145571309713102248861638209453 0.0478708003046062862554409644142602 1.0490545394333291677272561424683762 GT 1 -3883972064308894580704302027663276526957624.4649165429754379922534861459596189 0.2106642220959831476186838398877493 0.0254847215307152258138355863756334 1.0258150818923808827923524357201077 GT 1 -566893089236124983042714008149755.3799753118122780244280480723974177 0.1607959453635181258207681363978058 0.0556846300197974508615938719480106 1.0572950902595304682024536703618631 GT 1 -11417416227308715031604760.0057152038133367673888342622923287 1.0801970676680993446017152593760647 0.0446506919188299244890718875290490 1.0456782377538153742384137109668864 GT 1 -8391822227963272.2396973804739186571915022200285773 1.4951163605026960272152491647072797 0.0068493786022052208493033183333503 1.0068729432596396846085777613003303 GT 1 -21899165082881147138133691069793.4443183637108662261239726607244469 0.1752127454328743828384094638813330 0.0803414002637342671829929700876337 1.0837527650521498650642341698579359 GT 1 -458802633933547451.4930640011144570718780942383937642 0.0455627194651040107002974983528803 0.0429768846082469294491283486299481 1.0439277338065152727245903287905731 GT 1 -6984283919500440510702526053572.7421199582057102523053832467517460 0.2067169881579597017034111545734708 0.0126961000437117750290836335728886 1.0127773842496864224392788970698957 GT 1 -461277776303640360264448493365422.3990349775521835526488645371435703 0.1386815922830601825005738626710304 0.0741154279529362835810900092379496 1.0770057043226847790834111671569084 GT 1 -310084590623.2058845733124448547381132031361640 0.9001311977614351244250744827970893 0.0325987779714534601371523639808043 1.0331419553848867433593392861544880 GT 1 -1622421623582536.5702532758686014264316081926651381 0.0891424056744333138741887626492777 0.0135920133209522107020690993526468 1.0136852303693152525414529753320281 GT 1 -10208.5995122471173615320806837885117263 0.9349417109272602241658602946582070 0.0389567600706867841129488165585845 1.0397358763005458478771642341387349 GT 1 -103832234049.6148491341885584411549167075205692 0.3983430698543237797373527188999909 0.0709339402888658839319073299838773 1.0735754342882716217135806869280846 GT 1 -276474385099377284099336619.7840855856291503508694141755675598 0.6729964738209172827454100213056948 0.0910086433025661535378279828525563 1.0954196934335462237642771780517988 GT 1 -4543020101532406758567569844236164411.5237009543160739302523076463637538 0.7857787718995215417935089014921763 0.0462451284169116461005598763145211 1.0473485885767632794239157628710726 GT 1 -111363545877429443748970656611256.6080787535448390820050332196510271 0.0891898466422060374307387082552785 0.0399026392483502499969256252931213 1.0407205822130218353015017724008184 GT 1 -334183589927814705.6177883004940900425664733302838322 3.7316530335654064012210687158637516 0.0343654587787272169957613274104044 1.0349698380684433080060756348200112 LT 1 -10132.5428568985487346595175740567515254 1.2088132619173807943415175154516817 0.0992871040682051618158950849280212 1.1045687226178025980036940763084184 GT 1 -2439643044703976472102936862338046499231.6660650119132052404597028484491722 2.0279813695383180730369226199234447 0.0011814016546857266207969835892471 1.0011821000597393524523886192542967 GT 1 -52415323508067289199575328257965474984.6972853087272511490157748470546335 0.0622010625636965366212759870719820 0.0011025422404639046395158333776369 1.0011031504872795472242859419052242 GT 1 -479856449275379.7900960701155525651201621224866512 1.0063335934015162192292676845969599 0.0687038628897436565713685045035265 1.0711779673099474642519272389429864 GT 1 -1524119996329.8942408305899966949942237609606264 0.6294428822639761655478196371463095 0.0953932118685057799081561811910035 1.1002549179520740981512831840006823 GT 1 -3803553651757024046477220906881772553497.8749528443586535509314008087940500 0.9101107428238137996550329672946525 0.0279373974923410983771369205993738 1.0283350707235900459147563828980933 GT 1 -59461125432357817970.5146348133210297199752129073003995 3.1303334405342995856484878239824745 0.0716021703596977361961758986048130 1.0742949423266144599080547444855048 LT 1 -1.1821187572533406708121224235761641 0.0822303837452242118883117656552378 0.0550553755190797228931181935236660 1.0566289516382381365677668598595058 GT 1 -414258923907765273488544.5116228493041820112916534821936635 0.6991626359656326330553776121135823 0.0204441029535437387755898576976462 1.0206559763075152215088102720406066 GT 1 -23599908825.7278809848197662941813529726714135 0.1820394977776897603363350871186171 0.0744719448990265156629309437603424 1.0773908339747884414694955949703469 GT 1 -43326774027395026.5332575196847333684427609463853295 0.0366745587903721169909854781897363 0.0462205143736789785062017676651615 1.0473227813946897231334105216829937 GT 1 -266735031715078745062449616670.4202726385521746767161902044179429 0.2015912449072652717271722895604996 0.0889181653884661615751047568564892 1.0931225563257180834143333483327688 GT 1 -45308832943471824090.5120089314814966125467388152891500 1.9074917940482166536416747851118833 0.0657442828903343827331319943648939 1.0680050911708141915382417859335641 GT 1 -8380679198501948924018114641980828287.7706435499597141243241262322901766 1.4716111636654923333245422625118023 0.0688695089783966582220688750595642 1.0713558493124786857292248324261729 GT 1 -3568019281793.6765044202898029082141492319032066 0.6852883916862136322006268184120823 0.0043172083531541296726412792388843 1.0043265544060747062824649964555301 GT 1 -39694976143454628547015058.6516867014612306221523868247382326 0.3852889146568259089764129784451789 0.0460120768095934532077726629465388 1.0471042667435308684121346132833920 GT 1 -27403241144338.0210697558047231150781114873505608 0.5039063589163993120238159992729496 0.0531653836535982297573693046124311 1.0546308405970547877320254772574342 GT 1 -1540711750850521575209535.3069850542057992328085489270193854 2.2629905689209161028047378724549126 0.0669826474560846928692726397529346 1.0693314796540318864431476277869089 GT 1 -596136999724953145010275441965718269615693.5043760859232312119818880015573580 0.0264715923524944474411937026162724 0.0369089680384998238636403864309895 1.0376073420966118090706357600045959 GT 1 -383482.5642084276301485977220523906673747 0.1794558166141773166217571279870500 0.0242489528198597457420867600692604 1.0245477997166181006230816845977056 GT 1 -11246075629267020305979296903488.8730542596901183374935563208388160 0.4534594625884830119907204452064755 0.0163131940690923465072074112056990 1.0164477192494135664689485701363028 GT 1 -494798282453536561359054110129498419374378.9094698097180642542776230338643524 1.2084710832814606144412153744900801 0.0014696769329252623424014078598898 1.0014707579673796057339239826145988 GT 1 -8047177366238315638341488350366090503328.8982467578700808110824886922095747 1.8562018877057689236362934798361671 0.0520555541739445575115591649932446 1.0534593798935558677665918277523363 GT 1 -102305420.3168594736563501109369237656996056 1.2727761194211872205636068732206984 0.0830549386884818316016125091495129 1.0867077198491972629652857876757383 GT 1 -5204457.6597556847495835688439121986161130 0.6900016215002284455084427482447174 0.0207817090056391249590612151533784 1.0210006878699808222935180786566111 GT 1 -154374133058064372143626376876764675727684.1360884525514753246719938217682504 0.0958923922849981627174261014064591 0.0675604088881669675076392416788534 1.0699509112120969410512413047816818 GT 1 -153290844287924699040575465268152480.0578040021764462641024286812505666 0.4420574895152759742882665403863734 0.0772244378064204191882755802807523 1.0803692352681583016297223097028864 GT 1 -151035.1704876420909158696260484685347615 1.6215070530292712962796978643693803 0.0304988242207681344900325877590155 1.0309735915314894611122657527607523 GT 1 -386532066585930104092832467.2918737100269652642083322790101024 2.2551211430074325591679850790610054 0.0880483776891519945326682302708115 1.0921683360265686564571188527610344 GT 1 -1521615858861.4135423912279052016913554289564478 0.0670447894118830673902987921773464 0.0599410941287983884373984179020105 1.0618127398610807245552754337041980 GT 1 -1594153.8933692255525198210477111445229238 0.1137648570120381389731575934428268 0.0754383085794416682405380008930573 1.0784355008836420539752702346493859 GT 1 -288618.3719132163770654942507064694171560 0.0113235721890062028209293442446605 0.0868874911775136520931989353066720 1.0908961761628147802281914128532925 GT 1 -280668580324834524886211027558626198768.7598909763104497250072802005144493 1.7056849124782886008706922513363430 0.0508809443764361091559193091968696 1.0522210344752647432801273878966827 GT 1 -411415694364409753086.4583142098047615434752788270710902 0.4803430007143508064516134785126014 0.0481700590521638928353384760591307 1.0493688936057835882630555578232570 GT 1 -1080838285690056470274766.1122048897325025425855030869320344 0.4196731454733338725450631231392103 0.0960945512625416283472851704777029 1.1010305161646775982160334045529026 GT 1 -448786184523378589768104024494936635952164.3231621711376073011598867908233320 1.0047602761085207140447925443796885 0.0470910888423928926450257421405718 1.0482359610528654361032417362573226 GT 1 -1951909910416629829017.6971147141768202604551359104385554 1.6328397304523421422866091712547273 0.0596020944250190099752382812686394 1.0614521894826957323928004800081895 GT 1 -651576872993333419952692249025365395.5951775336246854450188073281088749 0.1300115208212857143871137904993816 0.0791881957610150856492550325253024 1.0824996021095173111058947071353905 GT 1 -18431391229782139639.0778941005221712467067208986173832 0.6291680982611158033970518209138594 0.0334423001343340872131090139768134 1.0340142823064374747539768489184177 GT 1 -105032505591995382169.1499235213269356328854123462738943 0.4641623844412292434148916750495025 0.0870745291037904324785050457686168 1.0911010327200258191105866078661809 GT 1 -6120773755276283652448.5612725334233622681287777532523299 0.7899095442876539688355531237836103 0.0577683124286955520192068142486752 1.0595040818114344953854288930471891 GT 1 -21600635350888786639962029522.3049692981471226988510857691217735 0.0148834403490945327076663472975383 0.0298362574611799836191044300793710 1.0302904149899116748647165507318681 GT 1 -156024575.9889300693978029610220602023692210 0.0902308687930588192742348342094072 0.0252513206839319843791394303624918 1.0255756060153797454988644550567133 GT 1 -20043463115604548265.3713272088232075326442093510073517 0.1356593061102918233191080188660095 0.0506786379303223261368451020016280 1.0520079053773019015136133845780269 GT 1 -124988746628857183972024766454439301004.2396095095755983772838547181350184 0.0287706781676368626846177193596354 0.0035928302675334643482411678255221 1.0035992999832412986905602478440009 GT 1 -425682963571711273903607754285641977927483.9555433698623842848844301854787502 0.0862740951803678022282671439591862 0.0795970892716286265821363651405490 1.0829437583657232276533341013231329 GT 1 -5.9602401815830795892802344655722495 0.2600993630602699230031367270673024 0.0166859122177905243882914822710221 1.0168266902548159897491401380958812 GT 1 -174040238290367608804683.7225447256019689934648933568609483 0.1266782708995648512551329781018915 0.0865078504019783991560246728248690 1.0904804969634306953251439425377647 GT 1 -153610331597020324.9643060680341792109874386017188045 0.1463793615834328948357013270121070 0.0495574366462549490120787034950147 1.0508275467030068289446265806947123 GT 1 -168802066551265761482952607257836331.3620838147917934085647548347223933 1.0224075965530382838594533374060370 0.0770541649246820436547789843873105 1.0801847297599343984412030780683161 GT 1 -48928786763.7819443145166118150648917494037359 0.6135332257354487160954909690381106 0.0286998465227795557794256072274986 1.0291197405616949473647115644439277 GT 1 -2940166484195633705146122741211882994.4918733798600348477041935727298731 0.8752720838287116028316238586676752 0.0460631911745208002274265744690936 1.0471578478561207441738301503731493 GT 1 -212103.4922781372092515450739014075277037 0.2367482396969632488216591870544210 0.0515945207284631729484231157380524 1.0529731474229944412314610513762110 GT 1 -397800047330339306103993877325992.7644250339911721449464812795728348 3.9233595452408446989405245705265551 0.0843353587808166435594308384832486 1.0881050935495743911988680362843867 LT 1 -445767777102.2296775273656435555388561857902133 1.9371255079301753865401144013253353 0.0582078889153908856302137286280515 1.0599707176309877065682455785590352 GT 1 -92828893079903785516619004749257.6521845610875653132313025713197030 0.9802643187878234460556240176998273 0.0730722223224680529416280003357980 1.0758796261843780351859712233232132 GT 1 -2020300390.5161309603617792142900573735033849 0.7013616710278988584073524864479583 0.0521033800780095824337213218264007 1.0535098333887767864545920249484240 GT 1 -33930164507360421419652956556083.2550286084924467830506332334464053 0.8290420042935087773163873726379874 0.0609646819604205714005871328289858 1.0629021880854843223374658931990618 GT 1 -3177.8067496635748714982672289951124144 0.4868153812761360928530635827196169 0.0634942125449841356855856949591012 1.0655995772398699214610863151641518 GT 1 -1883809257277328.4569711642042513617127798258032483 0.2865108121408803353900140911168479 0.0138321844016905107022055368028634 1.0139287404860345280726942391153914 GT 1 -4221930087128522.1681226154068032453175936406520482 0.2289954364639934665439211962546455 0.0793158660117741340846318318627667 1.0826382613900656119707675772529126 GT 1 -571122960323424347013573018002100601360698.1564303543804690888138046599921930 3.4396622091516561935702743525823744 0.0154441220433892583087473783959871 1.0155646248126383191069586504548364 GT 1 -5626648049714736527142255028420451.0867504399887267711826822244213854 0.7447464645620975212856545208160602 0.0190344887558082196338661898311141 1.0192179767685358771216109125996733 GT 1 -12717960567533260893953079821605059.3055636163666556633654209961462479 0.2434899336688352671429572681284799 0.0090470287780967941858966143863547 1.0090882016592410384010008254869990 GT 1 -39948766421675870.7749246226089173701176695662963844 0.2438215552422332230423303127075954 0.0753609752112824121247063942553157 1.0783518611061679605943051631479184 GT 1 -2423017278990771378414996176181137012339340.1305557436107166098075819735371607 0.1768067668316313157895523058241235 0.0697737665393541000322699136091063 1.0723274606325452860705324753919561 GT 1 -190295757869176952.2284842062545430574682339447589727 0.6690274733024351430380366742073764 0.0130521710751407318528762145557853 1.0131380991778598488692790488549426 GT 1 -114056.3061381285957638605104462949921398 0.3027551383650965588890730381283899 0.0868625664567099482381850933236329 1.0908688800953630674302461784450597 GT 1 -64916407.1223796813144577953936477784776102 0.1193448867392634768270907719002149 0.0470623391435062249806786408636974 1.0482057910493499215427975770991247 GT 1 -1508643663014081222720685865945.7461758577814101484956418148194174 0.5933923005485189196918918209567526 0.0585743520370711116969318716601914 1.0603599058961739632590554575458266 GT 1 -135053807.0042438100371240783617624639399261 1.1835212723367352167934825017278781 0.0036297578510865067039776887018978 1.0036363614064961978573486031278180 GT 1 -121800944919699595454489828707132263760731.5821679003412501593954541645223305 0.0685496790646437567928995452927931 0.0474901616979077241575026725061476 1.0486548431085428826121624269734660 GT 1 -21.4067286879407015599442224346810060 2.1972868081614159018429583813941419 0.0701273321947563266952520849846842 1.0727076185471805970274955791264995 GT 1 -727100.1094333884632333937028533393327073 0.2763314139879986285275188302431309 0.0031708878011359270306628660473249 1.0031759257184588853882130809299585 GT 1 -717110763551543501280237056155.9997579618254961638921276837219795 0.6219741655748544329723912680463703 0.0571311556083010935118612189084263 1.0588280893814772363322795295759689 GT 1 -42802661.3362333087094737685489884250260475 0.7460131623097670773644405859508961 0.0642360603389564940645095397817732 1.0663920355294538882755708444513114 GT 1 -1616995863253916040659729107418089241.1406884151219183592138699938844359 0.0022358264524638469995542327997641 0.0778879680706812006186201698134120 1.0810885531225194578104189738491987 GT 1 -257460531736224174838540.3180831981622292743706790858568652 0.8629362429782988678193244692701692 0.0022143616354132490419821343333719 1.0022168169594593390921158958943250 GT 1 -2224927490169047.8204114926337399279688585342582276 1.0737052076562854693908790780842734 0.0851015436396993633045887508143292 1.0889421965203895277846948552615578 GT 1 -213524777916082723829757392630537.3528636598505424394581954408188219 1.5779379830452513728169367476965971 0.0093182229891289470746403668667353 1.0093619092261547353701297375406161 GT 1 -2033197435410341733800986500908304953202637.4149319247140914336460682246151907 1.5385202589863724045633820907072078 0.0572357311383142746522974513866231 1.0589390075970997506093762980344136 GT 1 -124376729413199351424197613959486313.4136930089994153038030038768639008 1.3325599390840861017054456663471169 0.0247787082575559606694735756107934 1.0250908678474646147711153904880156 GT 1 -80079406452207051.0521794555222253213442435988712331 1.7227205707248957334232081713530879 0.0578687815980475903723944789483997 1.0596107164401769343088464638944463 GT 1 -10535436697428498602500465223045432453.6370260193994786111358078761241422 0.7125212785522103300781987320486365 0.0796608764481945652173997774911684 1.0830130643036586484928628000770843 GT 1 -196288197759596346947462795679577.2069937874650213105185644485863848 0.0075469149874556650895731316212431 0.0326299987482727262105890493072227 1.0331742287373599554018883527918659 GT 1 -12960466304266.6563417849780970163019462796670047 1.0571490601833415329094130685659909 0.0145938086476549095921338387313834 1.0147013458066210302791118068417695 GT 1 -550178461626395.1465795706572558080738718716037381 1.6947925866977922452256083734438652 0.0026239711161883789332629837479597 1.0026274197624841872364979378649830 GT 1 -498351873375546312793309422870696008278.8180587482401021360139304126660375 3.0426542949464050594374360822332742 0.0601021861384785531580086727546129 1.0619841182852577957589562117680386 LT 1 -3153675081801553538187002176.3451680930195310009662484982626273 0.4144759494197712745860383624569653 0.0830770347398360892722408507973002 1.0867318176043630306150394713808038 GT 1 -41526345.4631718596598784363720068162376752 1.1682141663199443931935697303034820 0.0736387837536269879958157492807237 1.0764910380587980286654480871086245 GT 1 -728874496534334054707733422666465889999.4848577021665017396753446495404170 1.5409275370021491700900390543465151 0.0851949452512931445310003635992805 1.0890442913254853534748959423590106 GT 1 -1967022879635432681433.9384895091444702379706461784484870 0.1080613408574047328413064591616829 0.0864172346918347455776109811104198 1.0903813048509686792407309254135452 GT 1 -402365291418105001806031824761950461.9298661793715795043782917186625240 1.2364524438630597744049123595917909 0.0996000554945451725443786031127012 1.1049162315827749823535862887460234 GT 1 -5679345989099742695572933734.6057866680360659532667329300436086 0.6542798343993810304314494862575842 0.0568471205436331386633204028086008 1.0585268891744766744649303353986152 GT 1 -87256259706126198057530986127680897.7104883607717051219444582660280898 0.0640505717836334889538904468115495 0.0419575489943260301433001735931259 1.0428631898785470269775724211407037 GT 1 -3.3543852349657867791582793616045436 1.6536401864218768094019280866672789 0.0021972625011299526250200669166306 1.0021996800243172746566802836997365 GT 1 -18005507281472426414969637690.2759692188529168703145410099283103 0.1100263370385452210711108528508159 0.0816989421150850005402065520517667 1.0852299923597141639046826262482555 GT 1 -1905576889808332594282126358885517.5566058619640274990228020925079680 1.3491142480340694005010412945257305 0.0675361538452929235462075494625364 1.0699248990954471233626233488005122 GT 1 -58064308086787.3926991616713303258666885602682346 0.2693593381459713779960201945893760 0.0679258062841302433463058680456480 1.0703428604737376813300677032001339 GT 1 -772864818341035392011514.3027151291113592919094259836247677 2.2084265215849590946891129449121263 0.0005620457001115867052915588411067 1.0005622037070035969738582716033989 GT 1 -654666789224292602652227446511359058137121.7688485834976315025686658430772035 0.7378156389456308605480904708494158 0.0416962329456040720843009492184828 1.0425904666640475411642769347545903 GT 1 -113524062345117032433.0288240374903115961427506614629560 0.4187361502500165299598510882401169 0.0191257025379768583337019813220588 1.0193109647707464320360056543182454 GT 1 -186335273290187260242008472666981022525.1420833201520079379968231422508641 1.5440134980661275576559430570755739 0.0319242897753302697260809256656935 1.0324449817220263477310655029777823 GT 1 -151442056461867453.7720938286561442568797632776142286 0.0324450020633471069272377626673727 0.0682852691980734896361578212395785 1.0707285939800072263626365167065892 GT 1 -4034840671862940413194984319.0633188875414597611195332690484976 0.3103768702946152603396882994007247 0.0093953279807700083317926583194082 1.0094397424861739837034969812573410 GT 1 -802375926830719981878007502400241.3608643815632212761080520571473309 0.5429457155336041323836114547605484 0.0141126277958017007472411306434677 1.0142131578773289276314309513307259 GT 1 -394988554280335.9725768113693744949234181411982924 0.0369743625005206664052004872415808 0.0209413770442017496977059725758595 1.0211637577992426348025360452204125 GT 1 -33601215.6102156574670799138541177480666364 0.5617859264909207914809984722734486 0.0104028642975483412711773543708644 1.0104573523073487625511328972136775 GT 1 -22625497129655935992575.8829873271553135490735425559844832 0.9252533054712831301087216822928349 0.0063594838574462689928761753322471 1.0063797915181899814452933303024248 GT 1 -21779878203981596845253.1591741373202602865949051170919504 1.8911726845012755076882203328375174 0.0994433015985774915842045969005104 1.1047421531040054818492458704758989 GT 1 -9293141842.2580882094782970867890436036425973 0.1521173271151715351066819868500953 0.0509016330588266925481083138354776 1.0522428324865415015540088661473729 GT 1 -27105216334222745328980607308035503.9340079190266890321751552366848190 0.4130429724296011639118034012623239 0.0515508022100384816700488231113958 1.0529270516213907477436002378460707 GT 1 -145764926737642697.8527733761056394963503201141179426 1.7833280058778777034699064494112598 0.0017998537806483500492813818220852 1.0018014754636178255411948751862241 GT 1 -42742.6550014040291177627208494650098399 0.7893720993316960081873707601437749 0.0718872365651286464307921992117477 1.0746020412559010371587392515812599 GT 1 -18.0411505029249858227291041647404170 0.6850465628395602738208771582250097 0.0005064930058151267180807087822004 1.0005066213167251447102786881933785 GT 1 -52664016319955049570579495.5613891214802201323912943056624554 0.7019821761010708540999320736941268 0.0862218718221223078017325793586866 1.0901674851603392497809579814744885 GT 1 -1863147263737192061042683154395.0464663746487621965509724723318583 0.3794702724952843470727276896850512 0.0505034388467985731830967632865806 1.0518233704812718922860869312655558 GT 1 -977363282510576.6052132271158039692523909106315198 3.1536930960325190941680816898507203 0.0082861172970373749909258875924439 1.0083206379942602452445116374293035 GT 1 -6485451728.1309072926672347184375053317626761 1.2627368891946956175723320728617793 0.0758856984992110472507480309310189 1.0789195120680967706676560130804213 GT 1 -114301370.6099526589078842186364346523249215 0.1458399814162419194309484765579792 0.0485431326573319341680585956353867 1.0497609244950022380838737095856791 GT 1 -30297757.5009196966937713379825429531553493 1.1449436653048222897659921114206574 0.0562538050919095844601626519468255 1.0578980103124977743100336524366282 GT 1 -7739278627633289559.1327542611589235048259654149312283 0.0246331151094348534999683191970267 0.0882529698925769333063595786456739 1.0923927066527265972994618114401108 GT 1 -46326491012409394411458583186285442410.8871352698247655104794010678021589 1.7748280241845122408515779221960740 0.0712482996022700194156779996656813 1.0739138521063744304934815620958991 GT 1 -19895581329122444026341263406.0171021997196938565020141662664174 0.0552508257418194076259057056376817 0.0760386226360233250382809740861259 1.0790850076037073573451090771362206 GT 1 -9497869588333875885387.1373049113541272301640383608037318 0.3149899385976769838440508299382869 0.0032438648730371062398465724192189 1.0032491376084762961301005082113235 GT 1 -489551308435.1766326384046545113583347238912786 1.0383381273364028968957901300572406 0.0283835129517308970442047012226437 1.0287941130311609979490187340605963 GT 1 -62.7416204326021706247604949768464353 0.2525463911115951691518036202851932 0.0175139337469760492938664214689520 1.0176691172700497089920809570020143 GT 1 -18747.0696084311553493325461174841850095 1.2741604836245567599263323346204861 0.0180057449122881991107544533480631 1.0181698208609631741468325118632671 GT 1 -17926612002165383821253010556625396055910723.7686534692477558597337018460014179 0.2583752079397314146480036125065681 0.0835488546111540581394708698113577 1.0872465187545467741898883477644553 GT 1 -899.4513304254026352507067167491674070 0.5050101117928078895601304335061928 0.0881063444246028387388783261438574 1.0922319014355133704845977248687650 GT 1 -3834385906797085262.7184138598590547747352267813459575 0.2256791034779783621297660350584632 0.0435123917263307844877834810479906 1.0444874454668066177223147914007154 GT 1 -786101422683484.2005134205618370856605667711318617 0.4835248701225836901313904903194656 0.0723304639913143860438433070000928 1.0750797130547389193149506220078429 GT 1 -433487515619304226403132647056144112753008.9825160368261696523644623744227507 0.3045888638554516894639371303320027 0.0690368454859193322690874648359073 1.0715355787351898472029112024676303 GT 1 -8168.8783332577147014086121784358716545 3.5607162206611996046045670983566083 0.0613416698725360344711591688540520 1.0633037316680051915063395472423693 LT 1 -2174596130481549348659738.2540544224071327998520006826217187 0.0516729929762754411393496825846445 0.0218700652469409351644151545688708 1.0221127601513969993547785280975128 GT 1 -2325867661831509761321574090057871054781.4112352704312079439855777464321265 0.0345828155727181840723328590902881 0.0199931959455602777221194674229764 1.0201957644289277610241530629921875 GT 1 -12382672445747643600647688225214445366083.7116448010773409281063951957416725 1.0789374910926336913203644716975323 0.0517103311754650767522308697562705 1.0530952655686142872047518801355034 GT 1 -1094235217967416424130368667938144052.5165926667726260179982620082106463 0.7734085418626635719020622904976324 0.0460326188342274748482416914135081 1.0471257997685319410397222195326078 GT 1 -447.7070284841967591112869976960211653 3.9520136279401337471763239770981828 0.0744940395798474069880239059755407 1.0774147067730586777825526887957711 LT 1 -28859416.8867822898702268813405213433256377 0.9067581874020144326556417559611997 0.0836374585702552085019844564191501 1.0873432050241958991666700659859714 GT 1 -1698673031497978.8528335862135474549501520301769964 0.4757339819186102503710076414608398 0.0022715189476091090375125131369817 1.0022741027603016707579914963238966 GT 1 -24435487038555409168523511.1778212797902198655876518630794321 1.6183500812266538521448907946433954 0.0449580380804891242243064774388805 1.0460000002839705167737594034727105 GT 1 -3.9753659463857646633288484813701915 0.2449950424824265585764983168375340 0.0409952407932229482459228762260981 1.0418592414344987388545856093292659 GT 1 -410442820271814280699737880471868572.3027337740170387225913150460067126 3.0674600181798994546132575229686608 0.0064796321636940453568716527570892 1.0065007161069969165541865817044828 GT 1 -181245788643679250396208269821.4076577741346900495381423714031990 4.5283520030769317181330351853071430 0.0985823611127208351438040394560225 1.1037866005930179456877463672920038 LT 1 -1462383598588.6219960848252174309249669344264673 0.7767325041076414920307443421368403 0.0827039447418337416785449417886360 1.0863250068593274750222412896849255 GT 1 -237330339.9369753670126160239418811811117284 0.3950447017145790678955554906564498 0.0349211337263892194856507648420354 1.0355454542741916583656828649847162 GT 1 -100710636691375816572.2866295478595036904424078649349346 1.7497151423931048889680698912285686 0.0810470375110278580091862666772804 1.0845203412998318813583963032505368 GT 1 -10002160505425770.2577832392468762140509141938297767 1.1108095458680363224462113613209221 0.0695360724215808518864869988849781 1.0720719703590507724622899784822373 GT 1 -1256437059908516212582735842972188301942585.4064232828659976907742223833094770 5.8192859557741022610871546435477325 0.0832966651292445816408330161696631 1.0869713761124877905874594080848161 LT 1 -29784818289122417759024408882414022334.2351327473490122828871891764926600 1.6224245181820711229539730196891122 0.0295288202815127507469039711216341 1.0299735731370591408193064046138368 GT 1 -252553.1604881043278436116887997384955652 0.4001558747974255247706468753064638 0.0435157787010969984634616816431532 1.0444909865275936699693902814041640 GT 1 -4064.4929686113152376855667297446064132 0.3712409794186432563154262345762204 0.0096329237335956360084334702778200 1.0096796204694622837456176994573855 GT 1 -7.8505582897912857802872086543116859 1.6235823558761283406400562198539938 0.0568592794422040839873727540394410 1.0585397810154615799242066844921575 GT 1 -259976177116598.6099618903308645335764150374938515 1.9670244949780078426405603174758774 0.0226470509361699900941128395566726 1.0229074341795345160492851233420765 GT 1 -1054964911642629516120949671303222359786.2402232247620923483489284042794874 0.2611648184699535551812184793217370 0.0476999036790967715695907045000707 1.0488750666365960784184852817721546 GT 1 -10806132961757137273073580508998340922043569.0172462026091454908971581588514719 0.5671980129169605029408475931261303 0.0635155638091675366066925573109838 1.0656223763596034614687597606234554 GT 1 -4229792339635229186273916.5519724850840533216905430823916206 2.3943343202974428556904002811083979 0.0817253672636724891706162682937250 1.0852587689015406252544999288142850 GT 1 -731603174400939737496228935345098.2521842297784044044410436920105364 0.2484649775211491366502510685719996 0.0014938341991760620890273185207348 1.0014949510819137047672982673351211 GT 1 -31284087565512845810789.1365401429141865925138958864647229 2.0970534153677222639165080733934886 0.0484903120062976039022623332651905 1.0497054104862039501121722654318392 GT 1 -14634808.6500165981569260119990501020832920 0.3653258800173389479177898070970983 0.0239614663473978332105315562384531 1.0242532121469700394057462723214428 GT 1 -2.2748258464491396366194773576828424 0.0367565636146198480602111021000532 0.0261937554408174790413173341305271 1.0265429226856203435402666742732193 GT 1 -60498238124289112552065.0502641846266171792090204442137741 0.9144078486135199443272719921924700 0.0212471729643795573687800699436462 1.0214761432668686391002888211590038 GT 1 -45351701715448680993727898284.5463078323516002226423242012945938 0.4744746119368621504836877072119934 0.0863209556752141253271340972047343 1.0902759242030482161840001160284728 GT 1 -63473405231633134329934927.1677413902540666910132551860062727 0.8581278137067768481591380956977314 0.0878979091489624539247615647353410 1.0920033534501838678722078155790105 GT 1 -136868995.5918662396463667585453185813944451 1.3595264276630297295184646723004838 0.0256293275015388499305342686633723 1.0259634804900691629483361626615907 GT 1 -10361167805557840429372334.7595210593197380099191923881748182 2.6465676681752430795205323835774569 0.0531989832213039129958178296394924 1.0546663274321369512000248136634764 GT 1 -1369597183132207804585482964484500713794524.2146873118400408423206749945417768 1.5940112846896577537138304924503172 0.0059321202875833305298056337413208 1.0059497852080699593238536398693756 GT 1 -2099505351794428385973.6211078123840413871585661250006231 1.2722423462059379934535549809806754 0.0748364965726746203583668597990739 1.0777847966280282609618423831821014 GT 1 -25764293.4285700565601093077434546819260570 0.6630751285315597760681349751614899 0.0350638360973470326783755351261722 1.0356933312274657755839971489047711 GT 1 -3422876556445100727213661907137511.3296133488967707287446071228694928 3.6869145503399188858806157375688833 0.0811419939372010043603113828702586 1.0846236777450730069854954769468080 LT 1 -1435.8014401552989366353052405146155165 0.6198906395939065472272043769189019 0.0877909877229582880203467457084962 1.0918861350372243040269621327137364 GT 1 -54689770244532377876471.6633074990255594612554123482179279 1.2500367138458052641403602781934649 0.0663285527904041898677574712169366 1.0686306722216013811908017741491447 GT 1 -10150273962367265166207510995.7675962931967382763625123536329042 2.2449994645954390339473171068796459 0.0440454431292514540028723705724776 1.0450449017145719541274859352090323 GT 1 -92444272.7821837591426624692292642373639334 1.2968270256903810353396414428276420 0.0759913650256359468077938773063030 1.0790338621737683919421008639038658 GT 1 -598195119052728167710576320985061.7212882182991924878038017456702790 0.2588725090851206789846642854355194 0.0059265860999310696661741195930515 1.0059442180105372131004572317053776 GT 1 -3751526059187156719272654294.3057006626705017046009875368424396 1.1013169792845569363968109847950560 0.0001561024867989365463248955708273 1.0001561146720602451782860913949300 GT 1 -28.8747411334289557482474472317778776 3.1471089426215754865090695809642838 0.0130007396578976807357137559837299 1.0130859889490352364376333181091835 GT 1 -96985031312263461634245657105275338.2671349989945992300991217521414409 0.1224941917692027237965165046353853 0.0285170984850561136863690236679073 1.0289316104070769593261901009924517 GT 1 -1592601815970743.1023735148692903010319295400287074 2.7366611142987044396106711791239558 0.0394669453617241837208411976599306 1.0402668833747564733187213077690439 GT 1 -24633308327468727968348435313331024762.9889961241585220140494841676282870 0.2306663986679304511402898805000506 0.0159137970211958578364361095349791 1.0160417811136909277992027961398995 GT 1 -12815920994416401346950.0429119399483398195349476848888610 1.5482103576377274249668748127244912 0.0035153463169772718653932021085435 1.0035215396656115730371840731182409 GT 1 -3427005188340170965539361493346167.8846243844876844543091431206814105 0.5731384908292506527114335442760840 0.0812260738815613460766841747159042 1.0847151867605037666676119801965402 GT 1 -555157778046123851038160798118403505073982.6139104130473525714924519053577585 0.0414352245800810562375807778652600 0.0582008251924231081727541641921673 1.0599632173595427102059430930601654 GT 1 -9223437.4255745975175566932873721330863882 1.8734400714640329172367535817501951 0.0781666988566154456095251512069205 1.0813908731350034656639362177486824 GT 1 -380376.6317891883924132235971498388702492 1.6669165291190462707540884530103313 0.0778099611936950211519503608055169 1.0810039608225156058537607310434499 GT 1 -22845948108951578834460798.8847484685724179683383112264662427 0.5467784266877750808033480432524998 0.0761928707328038177100972637808579 1.0792519636878545135060161749537018 GT 1 -4884729437263165847759454889589.5814327628246418419787370365590722 0.4947492124379503346629776992405249 0.0004594345072121398388212674732427 1.0004595400795823133627945981983788 GT 1 -21612466.2750296483418546189478504876619352 1.6227488774093703202891784844371755 0.0023632034590604177141961054335009 1.0023660002314518314771569359324950 GT 1 -18991924524913211620362231152813951228.4436453939333344500846489828246568 0.2840511622987318801939498206576254 0.0645658287812082412104443346944806 1.0667445032278214478394276739344537 GT 1 -4381074408.7337170728149032655074656909299725 0.4886309577336440371292928735015855 0.0747926462093835122078219097738299 1.0777374003310878231968571767843296 GT 1 -3.1059771654907181480915255550285155 0.2667419652223463809222042939838585 0.0361573527485882147887909739204455 1.0368272266872046818606402783014325 GT 1 -322314931651.0753890697126259022989952645430352 0.7016314586437180768580618621545935 0.0262897514204267013176352739009942 1.0266415056552898367116895954416609 GT 1 -17221677310458933225471244298577982179498.2773554969968679012308120682296323 0.9831434207356924670134499040267475 0.0097725563758933129906602044011691 1.0098206212054804110588509852155618 GT 1 -126.1681045719114609241042599007890932 1.1547782536252331488889259946312873 0.0989290386143667979890832801590461 1.1041712660004643200255831486230756 GT 1 -16105020435465924897845951110102639.3283684431784487650636993427547267 1.3099574975100043356468666770768746 0.0169341380138485745131394955421184 1.0170791600762315352631077011238804 GT 1 -28710.4046718899096220884534943648452665 0.6690748243476002998055960379051445 0.0385995162790342990857837880427120 1.0393642203801464938678575626017035 GT 1 -2438609771388481915815773531206.4083388090371788961525971432505939 0.0982330500868845827942031727536053 0.0239697064627765458237782865894848 1.0242616545904576739326392580396632 GT 1 -7855591988186994464280.9270638925092951372693584689947457 0.4400385137493436170865747437713701 0.0878639988133433836533777134991771 1.0919661759175240845558190455529095 GT 1 -7639400842977776834208691818220039851.1274598771180969222810640085624896 0.4852947015642586372713919984411897 0.0306517856411395822453963000180303 1.0311313773001694117121243664315136 GT 1 -953854264318169357158459819516.1345302304780693709196192429248068 1.1625742886614219542770289887128295 0.0543025368319345747569215554310479 1.0558325674554755814304226707996811 GT 1 -257292695853930443113215.7036821705363114562611197827629941 0.6439624132092767384309792263300766 0.0675183013013447350149902296562122 1.0699057537171833976385693054257291 GT 1 -4852623599962724495429810386619448622735904.3540046543861979505098382058886794 4.1265233152068990578613143868899468 0.0330672335272934063959097037726472 1.0336263138956538951800454105370756 LT 1 -3768846152191075901083607.6894358298154843079787477814735979 0.5541596475143359599281180746136698 0.0761293914699601832010475119628837 1.0791832512045355456153035619653098 GT 1 -488.8570643552746409559152170716880662 1.5131598843227002674770006189884165 0.0391976487612754271697152864789416 1.0399865610516592287394818666097852 GT 1 -166562961364302372344403478608157408535264.8046309671369309165244881017356579 0.2533490809380810294042134321930067 0.0614702018432037125398319430823388 1.0634406726265930950707706852938786 GT 1 -21492.9009829551515715456561394908442143 0.3762082874718454811211484463095664 0.0216998280416459270479591700245854 1.0219387317461494328127892519896515 GT 1 -78144480577952844768754772889.0703132165796435006843711263441710 2.0540536005049166789024290321390854 0.0483543703201097635962802474413644 1.0495625512196410770948003744299060 GT 1 -2377707075512618.9917566126181742031109036397712376 0.7976487618725178909359417113339810 0.0416882792206866102272624676654729 1.0425821669033829778589779099602431 GT 1 -531662531495249938149.8723041046388327888649766909806552 0.3114823622683028445013376596995111 0.0306698723759533259437775299493256 1.0311500361301801385865149785309678 GT 1 -1521021980087707242680107503801.1897645387643386496516089227638096 2.4568804053140837041950320335983458 0.0690518026467088387587641580707273 1.0715516451937511822589273417006771 GT 1 -1256423635812799282767123469865863781027.5628889075034230567999740699493658 0.4373125453317274623135250268852373 0.0397051335494650133066820590813614 1.0405148891293028404136543931259573 GT 1 -951.3423363404883371676894442777831865 0.2653128151069936705348797588973552 0.0009114344893237470547291229660747 1.0009118500982906658016898724424135 GT 1 -570172586807.7852715556918613352592883772362050 0.8722260134661833758492646487359551 0.0130233267190365810876333278498536 1.0131088737884652992752927338655836 GT 1 -323311570521238415811397341747175285.7849359562439554599908911823451078 0.7198075406595847300761926695432359 0.0486445746349437515961315493613950 1.0498675477053910757216697667329476 GT 1 -26807610445128944083188276091133.4841822701124347734967105582125834 0.0429695860501524028656477010008906 0.0034115123498175503406550079993934 1.0034173448268971192482711601167551 GT 1 -237172951279475012974339899486167094.3164433018949257403248789910571670 1.3056942845891859488564096007639852 0.0928623978655934505433635402785662 1.0974611290901935085492642404388293 GT 1 -119441264063405884181713994278.5185699812587086367068215634142413 1.4975726141971593236248964078880043 0.0566760739086711315977404130034766 1.0583455494040350506644737303964333 GT 1 -259634517536879397581638.8766496286038478239560865131835633 1.9646578323046484960819791304598068 0.0952163078935671887630452571266041 1.1000593780977039108706057322262429 GT 1 -68192595881964225535746768494.3766750152942332657267662985959843 0.6990780657704516727346056765847770 0.0467576052007355016415177243177225 1.0478860584569721865027731104720454 GT 1 -5279750344988.7875250484211941223056160125582490 1.6899848442391679475058873036752112 0.0471295888131899719087092956413821 1.0482763644409712063491779231997876 GT 1 -9784506918732233790.3497056262729163671531802685088566 2.4911518738271072298920897269651296 0.0105545279983042223577880254833490 1.0106106220757331084290425841040919 GT 1 -744.2655916935000301942760861600623804 0.3649846062788395429000669355007495 0.0411085107577146088917682817925352 1.0419773604044012602142510123084321 GT 1 -10866597781893437748577423596518939834595867.6896105534421179342464467815487004 0.0013520374442114568525413717063840 0.0877379846195372608403378406487631 1.0918280326035517994080226386216661 GT 1 -5153140796029519036048246262384921853.7586786725792089843941198206718071 1.6166494618735826624566761425536735 0.0496466441468979972007328268367106 1.0509214100155351594273987196246083 GT 1 -168642895890963725632804185314.0598214201804936095719167513791691 0.5685138757659450272841456700400764 0.0446543573901214361840927006247001 1.0456820745476376329784167385424877 GT 1 -252647968767210149236927879863793125637.2289572676486451657261593200567184 0.5415611748513333826993861238210115 0.0116812386812483350730410723869607 1.0117500003553596902880224883749634 GT 1 -11404122807049.0169862849197163433895178377051401 0.3665423046962390330539386729588355 0.0202370550774705511276728058221833 1.0204446295145289301582829936860766 GT 1 -4.5966354734342712471878841211996493 0.5621559874608599057731479265318757 0.0443430034736042304861650225417188 1.0453562205557112643782268618291597 GT 1 -2378745971907445849177242833033053597950.0314535691239621963836449159475745 0.2071449733352246405578727484999870 0.0121509432260478740863881474724609 1.0122253694503771649875537533745640 GT 1 -4392104822597246867989155762.7776274133338586176828209737178152 0.4444218826871123654674100018559464 0.0247378102139294192628890415458517 1.0250489315337046181307178189912073 GT 1 -212544594844788284018721638540.9065735888410017111106158082629689 1.4853755751934759065315208451148926 0.0892696827536707674608786311967859 1.0935084549148875499290394435962389 GT 1 -12282073.2262471144782232614640543773913052 2.0445116458763256435435080348936932 0.0540487020430647808021100821327527 1.0555641933306276217962031470993633 GT 1 -12.6597322570113304393360490658553642 0.5550786699145925043016563074730620 0.0253814448832270256607821243642233 1.0257091100542184518637600817989762 GT 1 -4313516727514807593573.4345369819603741085390963719329965 1.3826269510400928823617427871059477 0.0964890411015419641778575405466102 1.1014670396393987167553359028047677 GT 1 -88937406656933576136094931188849087.9959878485295460452226003087381080 3.6082734273491385018946079467598793 0.0164254712525394040390296035101813 1.0165618649214600524671792645706204 GT 1 -413188766281989264604250.9791908401477811215750988997862167 0.7553856539127885866544936724027362 0.0426932131749299123874620328599398 1.0436313675061562486524734418705767 GT 1 -12209859657.9437257286829859385510268295244263 1.4277345906945371088603886128823395 0.0074262976249800237122061694277907 1.0074540098579590075734059473286748 GT 1 -600368110514279244329977709436171.0820393128451522881086997404177273 0.4839304999689892731294285316114995 0.0999621448613324017795038563197558 1.1053184552771902920682147870056711 GT 1 -1816010186681736513563053145.8832791378911897123586135857743290 2.1065742815318197533393510393502124 0.0586794351988083987748305632106052 1.0604715334337932036536722308940370 GT 1 -112990379971042297961.9896032023463132375406762120360308 0.2222647279979007645510406556975521 0.0141719890019123336110771244768888 1.0142733706307864357986820971885420 GT 1 -6991957504975140628265908233114359259.5206858840175814541246281512626142 0.0307100995617080735668177312586074 0.0473536744882624140656649601056845 1.0485115611955205010734182083861748 GT 1 -4527358.0800787970609319487985259151548538 2.8952711649869307248420760192803672 0.0759416508831572008189878961239900 1.0789800609393773291608777959909170 LT 1 -30306130333698591116196134468480802673.2451065268492731490342093624676608 2.4961015637121463816060374852003841 0.0828886943386557824973476925878700 1.0902698457513968978957412492327334 LT 2 -232.6347201221270736734848904495308924 0.9561597125864458616983865198520277 0.0731954383853952162054038181132024 1.0760125645385264844316951680349869 GT 1 -4579825869038871788176918110.8256154936878784116639420302468101 0.4499391043737495644117453984604165 0.0390317795630350470288813653525343 1.0398139398229892190443959875357351 GT 1 -841561621311800.7222203007695944455365333558860846 0.7280774827703769894585673598477166 0.0855939026506693247033036661686027 1.0894804983814554770764583600260272 GT 1 -135.0749556816691325152700312827359139 0.3231877211822109939254476056552574 0.0502576505583446918769838786682650 1.0515645422859828085633150848484299 GT 1 -98361435226708858076524740236783636883.2250036038381294620854404085969318 0.3141874055653992791152929896026454 0.0115704912578737643085964934461700 1.0116379502525036178249327534666523 GT 1 -9035.4837702809942642791612199304314539 0.1683762636937523177576751207803374 0.0206055052198670083320390425388699 1.0208207607424472342945732777116305 GT 1 -166.7089435200628677755332840679668348 3.7273484498841471632976883066514952 0.0709645283377662874624466314599654 1.0736083582683520409509902639011584 LT 1 -4.5887596044665258544720883990640859 0.5781114511757534060169547799848587 0.0761758144725485616494454772653591 1.0792335008483051240098622623030943 GT 1 -323288816.6123567264442521184350728794464453 1.9380867244527617215857174469259637 0.0609744888718472199219483802598975 1.0629126317423397646796611272068356 GT 1 -67969933648392869909476776046398410721.4679143217392020124803688834589074 1.7434701714409311415337691440265657 0.0382148591914664226875069482354901 1.0389641996148173279975936408287707 GT 1 -411920702292155979765055091395931209499.3156735082975656135425797089961156 1.8696773095625127843238778808688902 0.0709261345642850627485348067802114 1.0735670326340417873144007634605858 GT 1 -931032215904067935863231.0164821215971689897580526167051320 0.8510029939301358646374337296449453 0.0471842235400127161577270817755892 1.0483337030806610679922072356282917 GT 1 -353913280718999.7499296521079002202512950120891309 0.0992766866437686330588236076090035 0.0525331124857233423483218540033137 1.0539632898507075052404128955381099 GT 1 -305195989346110059983.4431860650401025697264292309409443 0.0674607353025412576518545661233149 0.0123855993614760135161380614404043 1.0124629401689356974766757518107025 GT 1 -1301.8168911695331853564390795307765364 1.1469696434474463101148658745111202 0.0676472228334138421060029835994628 1.0700440196425971565619495335956147 GT 1 -2524939533227903515891094576018.7271570338320516860571384015094460 0.5112065856128128134885893166502212 0.0321677599058168050346260695652264 1.0326965124125533265773397258249363 GT 1 -785.2414750889785326365794017576851869 2.1335552047663086892379752990578075 0.0875303450826804139667437450723065 1.0916004489635756554669588605374020 GT 1 -73303.3346422376961781654628052840954186 0.1228863195939745093822251288032491 0.0176750199894113069989648115486313 1.0178330885008736694194315186920719 GT 1 -139878271132979023988814670075.6267527677574743647328919461899806 1.0664825836925038479585260039734948 0.0893205977445325355608088515500442 1.0935643621501788565143166736983309 GT 1 -22521041352444285774.1729033027027107041137937491434938 0.1808960075167832810690340615687016 0.0812773890164525237571803307569558 1.0847710400738226039502036446087582 GT 1 -1007850746063187207747289.1773196938884993072640216493704661 1.9014954569519655390791516926623003 0.0991678034794606634817340286444343 1.1044362800945277689233567555856925 GT 1 -45793361678434255767342142293241817795754.7618750644029553040174404142680871 0.5678778305020060323394684701355657 0.0168931685126529357974368980466036 1.0170374857092366501069711989910690 GT 1 -215793439774518230782949.5703836192521842910391199462876219 0.1810135346468510422326092808035721 0.0512649349004455012228118534844499 1.0526256920567472266032181191477092 GT 1 -19441204718222012197294501620749364.0338887135918812654024254119282195 0.0659759616681169795491665560904024 0.0626771980811508591081912446994150 1.0647275502890164570746586188285278 GT 1 -245620568994353.1149725643877077128472809030936523 0.2676320899784653024055156261854622 0.0899820415424634535472461223540716 1.0942909450972438867110536302970433 GT 1 -7865105128193122238133432714715004663.2177097164378246897712204136687306 0.6699621445305643842592631760230208 0.0797676018351298263822754089167837 1.0831290341378059598356919124225894 GT 1 -1445363521165068593998177142225695858305.8771897083817178763389944752314673 0.2541670337473862271533517471240871 0.0629955161498198435777039863676187 1.0650672114294652923273607338061449 GT 1 -85224204512813411489512534653941160.3807023089961111148327873344079588 1.1618630728493919947840481987648821 0.0616156069684112506539412830779589 1.0635956132479396295465886274784302 GT 1 -12301232418496.3556450737346856639369947268275096 0.2573100455099110492091930492781737 0.0433006545451728139974535275597957 1.0442661004679712355478991617394137 GT 1 -1941373584190853764685845.1713392917173223852438605400280872 0.1309833230461856672204631069146875 0.0604487722850147259557372487073792 1.0623529350425072216231640026985102 GT 1 -3622254127601906.3917944191697696206063710699147791 1.3476650416032577535774905524999886 0.0573987469780933164740758638997864 1.0591119351682186008310893955717539 GT 1 -94038440111673853563855875478760.7236765765846142514569859713542647 0.9980830315599611892005120326940443 0.0179745881515422828564289920523192 1.0181380933164043828465138872557389 GT 1 -610489288700.2919237500321677039332626438018442 1.0115818970222820946356696962965977 0.0533556214226267092277373559213050 1.0548317805284494193771318298916466 GT 1 -16105377604247101544442.4138221515735152729463295594308184 1.0899141638524810178882822455588388 0.0224309194591001278103629129394824 1.0226863189895909531673720872563413 GT 1 -11836312443777841.2930841490042102910856253759857440 0.2148674698199892382375360440517133 0.0174288256824641722266814175144510 1.0175824958090480116655632594516540 GT 1 -68070823426746232432187413370447926145.0970743436178876386240886014322167 2.0734632340616757273311965437993448 0.0972101308155974005994838026477068 1.1022654556520036041863156399992837 GT 1 -103399735.1700197228004279443167524009454417 2.5664720806651146912976676492263409 0.0459576126979713395635290172287488 1.0470471773866821822210727873464143 GT 1 -1190441346115853982704281392.4964315494278031117745142761636772 0.3227449737708869958526480839415503 0.0432573925612169096559544023314486 1.0442208814490217942761359282775167 GT 1 -10663041370721480707041525220864865.6723807041523046475282194996959450 2.2692162997860661651856944036385667 0.0586189069096755125718672446154448 1.0604072340384003856558340084028731 GT 1 -12544336340211942057285.2982353657622410292585618596405748 0.6312828936057995158064580009026909 0.0682049371468264754279050630616712 1.0706423781183355679697412224553858 GT 1 -1341366340441229394120839415921139208.2390642556994561533277529359320337 1.4275536250486926636262964530654035 0.0024580235350545525595992834264262 1.0024610494344088856407726617632221 GT 1 -174269.1763470064559786433224593519913619 0.0083290486838059669117357338218295 0.0777789385887647012430791259029282 1.0809703212451680325131615451045230 GT 1 -2357663412513138618329359232278.1296636480971807260359005434224700 2.1553884174292014494033814510932091 0.0398625829398987137132162452264585 1.0406788619932651725381908897940879 GT 1 -90300.8760215527236975321004841408356448 0.8542037188876878993670496502694885 0.0176331446526807101607755755923575 1.0177904606078032943298010068021774 GT 1 -59258886914593343727358832025914681.9252889409234989708591114683799209 1.3478616789230773690873904553304864 0.0770570356737359441335611950054252 1.0801878401846304402182654347524377 GT 1 -609781584825778391721.1203560806535183344195349709444734 3.1582945374260677878869166324623125 0.0857477966147651087694505274873032 1.0896488119088074993415909428353025 LT 1 -8870333355333286075980.0356634898398508696740889297468584 2.5643983974493667287005777195827248 0.0419492632877268895831504318239856 1.0428545413361355167925405538928731 GT 1 -14154982368441631903624746720685347658584.1134287170210305763180002602170373 0.3256650279668323474261924117973687 0.0565387833776428787712662242003090 1.0582000208770581054392579838752651 GT 1 -1070336761938057798.7446594581470387982280488778014316 3.3188956230495815681482124189893199 0.0661051035620510635211502978744540 1.0683913776656896828993296965169100 LT 1 -4526068603088931393380.1788525924580643337678066197102170 1.2090207153479905991119576883051673 0.0662412977224738211685690015592028 1.0685372228703441670529835930227233 GT 1 -4459936137121545065381287.5041740291220953992051066466096538 0.6340259032165292920193120256776637 0.0119037058382873104287234669873184 1.0119751222571197883380802637075210 GT 1 -306860.3468563804405572138841993180844709 1.4398797913217760418924521628472538 0.0240361714924278081770730227129813 1.0243297542111751008243239956253330 GT 1 -3289026800651400112040412075270284550995113.0547412199413921523406329181608922 0.5515184618360885223493245289816718 0.0269764143331762902321990983178061 1.0273469569390217453678880665999307 GT 1 -955912424301180288210070989696.1975379520732648145162521077275739 0.1589743342074597147980733216432198 0.0173876547659995123399819068085812 1.0175405954816118455940686932302457 GT 1 -9364022638461839469104830.2391255162677571919611782975594422 1.0102337120166409638437361239346581 0.0798105080384340118538236085838509 1.0831756606244198645561751905617863 GT 1 -28365.2225055128292159215801126616765895 0.1675480720129822644815398150936731 0.0922110419421984501451688515550686 1.0967433524422049751662459903868821 GT 1 -49586133516.9993418214398049444447333915178773 0.5517416601921368321461654478743892 0.0992057396688534018002014866202807 1.1044783933630736116121407273800463 GT 1 -2232467956679154974795819677229750453605814.2809208357358595000876784717002937 0.8885176747181012218684927158456547 0.0419552749430137563502080510119207 1.0428608162377850781648916225139667 GT 1 -1911302732.3020614878419847192476730341916690 0.3595796933499231921184423697464681 0.0784526178475454900926694584836149 1.0817010846890398263255398305145212 GT 1 -44356350.2296197182574138236441150435618593 0.7907491508859981903399702701749157 0.0457888182604863452609939983571860 1.0468702675245300511842429132400187 GT 1 -20160417.3240845970394520535300786080763839 1.0102815996622187612421549482053945 0.0234709397105097320422910960511817 1.0237507694671576983871955995391086 GT 1 -1778758518837916279552.4081566009553977108684615177573376 0.3566110626340031951196611536640923 0.0156824143042710773813514612864168 1.0158066843115797034888746240811396 GT 1 -88438059859085331824807491456624.1076293189851008591564652418160618 0.6724089559154607050942973593436176 0.0417104908210923589883712414938234 1.0426053450168679904147060515169476 GT 1 -491643876911136745401863710072246126.1529979473448738055231061139559264 1.9311314263310075964679078907633824 0.0445332299418726500640824952897685 1.0455552934490766241621698898325915 GT 1 -102557480244451.4809580767761759579434112843481618 0.5568904216507993946137199929390138 0.0413126871234644884354422096420730 1.0421903126609613238460925662124023 GT 1 -71679257060233966664257.4249090171281642803850523082857999 0.3997235941973656603340007654272827 0.0184824131144746975071814881625439 1.0186553470506819430245303374287731 GT 1 -172692405641674101472392802542473353.9009356238804250772418904421685325 1.1865102863690060525600211866127927 0.0689786635493482939070530466666897 1.0714730841903939029217770383313115 GT 1 -5.9953837117353068199196412149034493 2.1035117657383638501826300870880527 0.0988070708554356418741276055613668 1.1040359164994747906516135218733108 GT 1 -65451168485148281453576348893146600188988.1491129954964662726281932020298932 0.2648243213854050008577404823938426 0.0555931275648533360968514460375844 1.0571981967587702007345749523211149 GT 1 -287262340759528767127739866699.3929479268615880417454064504611178 0.0166965487012607755267117526837742 0.0416470676166412039402733151230310 1.0425391634452832477791340456951213 GT 1 -558218301325110997131053187231.5334132067976332685901577920127813 0.3839305981268459362836825947043313 0.0037984966270760688092262167772839 1.0038057292365601871927589904605447 GT 1 -6.8603884924098035193648866155252769 1.5161320919282469991491647094792874 0.0605749612239326607305072094421587 1.0624872517354405540484382040533257 GT 1 -731469982.6490637988959016295398210245732708 0.3307149201217311994348264972898477 0.0876297714421046617527468505840181 1.0917094189180609628564311495474448 GT 1 -29368935102360420.1899630768472026318166067605904797 0.3898284517508698021958039675982098 0.0912308755455398122642337690002274 1.0956642055641433573722587182992163 GT 1 -12007740150168632630487.0910170668945166800418987372019104 0.1391099953329423262263047525591768 0.0671806023784014896473059885648361 1.0695436685532396715570191304315846 GT 1 -1268409722898072368096314891721470280834.7534711274812326582297183625922048 0.6766252473283950479259622621558392 0.0882089449926670645190500838280167 1.0923444215082837250915455760687192 GT 1 -5073545316162437468162877009.3331615786073846564097410137209645 2.8881555028734813367495184853106781 0.0836106546284710764290075652710695 1.0873139550837330639280392040606765 LT 1 -4134834.9302241571586199443387584862823620 0.5348132917524954307097399608250693 0.0937082146507527477091221528561578 1.0983939659046091935106486258044400 GT 1 -6.1997779783391852573182101788583385 0.0125550020734491424913335345900889 0.0792730545803429185730641405686618 1.0825917628847425144477287794168508 GT 1 -186693457604761719677341042028185866.3437583342160978118722383487282260 2.1082867030806723090550364148640996 0.0897618477296700362062428320786888 1.0940490079186570452084239825910219 GT 1 -245027742541254790995405431944413442.1165504962958453378872622228463388 0.1155409008387887720958621172674177 0.0445229133561974574065430231049110 1.0455444960772552477554606489549594 GT 1 -919762544211.7200157227711841247110051087790767 0.5044209666155401149400128159728885 0.0184207361253517934784753343624848 1.0185925106306455962659116471258445 GT 1 -201.1097005068201635744388309336999730 2.7162224563093737167324535980926226 0.0144756323010820039810404655196078 1.0145814264658083203645666467991040 GT 1 -79446734498840195.2332849992006665106800285492781983 2.7343420020149231407954498085408713 0.0520894940582136129656137547674215 1.0534951841983535877026939903936814 GT 1 -6498515391488130993314889314049074.9772751954909101718284906116529295 1.1903095052843955851395161104486817 0.0111360051626999223166318562933955 1.0111984746750232727053146580257563 GT 1 -585584611447920342298096971.6652998827842137552777483897196963 1.5816681608279200098175702706231558 0.0734441027515021597973894284794511 1.0762809034538301877697138814314738 GT 1 -5008844267322636076480260088562.6427760100489399594661005173853163 1.2799458127545760884640407135755401 0.0597418803721111222781392046719620 1.0616008460636719991496516968272991 GT 1 -349104889089478347.0944575436063686756814386822281847 1.9764703921421909066603863233273972 0.0274762372308521476247144466686767 1.0278607690639992127748931112899745 GT 1 -6804389460148616912113788644788718553826294.9133089748232441380220872214717135 0.0549257361429601482594522189379231 0.0569439602437336782186258705654505 1.0586295710133750399308634677905265 GT 1 -240671578251214858.4342901743006350745053416165092601 0.9729713966547331103947380142100897 0.0023637554952568032188382761522584 1.0023665535754654369610207907744897 GT 1 -365154647056390519121.2083825317488440238028993331477762 0.1420635772366665564038006026060580 0.0284713585086581853385801465366960 1.0288845288788472224207928372774928 GT 1 -911823.2778008746000548474515082215210104 4.2240663062370499762759311703626685 0.0244642903302066521870337972996364 1.0247685130592010295630095227497923 LT 1 -167685503912308388843634693674522005830285.9887482816505104541081599041992025 1.3690389190852298386195119193028652 0.0185150509745985597260299802676274 1.0186886000491165315680151498594737 GT 1 -57490623.0979721892816045247169299535510784 0.5021987426760389590386185056179958 0.0658065971772532540289012219018764 1.0680717927858351335775674674328223 GT 1 -6532228.3274808775147337048137063153879729 0.0767633847766388077308350180058614 0.0829546764913853813989731662236200 1.0865983820925479363387119906651277 GT 1 -152985650194329158922722600681043754129.8501202432630442456266252981259863 0.4043994015205001835864824313094687 0.0149068221539585635190348799644763 1.0150190454860315088840194014400110 GT 1 -709908090526087.8338529561798003710488407070420389 0.0782873899531821007091016170959359 0.0358775324793636858889718909667928 1.0365369514441047450175857344233551 GT 1 -655721656.8304246888936043644475098319953141 1.0898825185496334374974309231267272 0.0986066851916417486757665837547657 1.1038135852070980042334209458973784 GT 1 -5240497489294720263738262573389922187369199.2346976030659205043376697807592533 1.4146316096098206712291851526630829 0.0909009001962808468666483528408911 1.0953011700608216524893745405911232 GT 1 -251917818156546690477908.5337582500477850806560973949354546 1.1735481900348281770801094085248927 0.0979040061188322501095164022131217 1.1030343412104957836704219613605297 GT 1 -6105652566563158.3108642906579018938622144130151798 0.0120127200757210917930516010362984 0.0864822752156560800303229009417591 1.0904525001948498626276577973470855 GT 1 -832.8150224366316804295034006481469060 2.0518299910992289630195206662864911 0.0279652925149604450293200700066498 1.0283637678700527050043673653091660 GT 1 -1281886951805779133361.7473283803772902739549884400233988 4.6390547130278126758841431972087413 0.0573688355370756801324723671258835 1.0590802028038239206278046170243004 LT 1 -176781.4173754104015473740409610983478807 4.4054771990498389269694168443339015 0.0419245316533060865922858699225736 1.0428287271341723269284023038195479 LT 1 -125501809.1222290261833164286892762399056418 0.7002012876112663374050226061174062 0.0959650751923044958219770103198374 1.1008872856993889722725079817874331 GT 1 -724.1302048179033004676416632475238223 0.8340183170873588716159082823763700 0.0214227695452423067457969120556764 1.0216555678668862547203896389543072 GT 1 -1333495140929363.1399662375699653532758985864947953 4.4173675711385700712894751894606801 0.0251881625872331820052815428512019 1.0255108138776861998946683579345827 LT 1 -74469778808659501209.9868052028963191643974150054533361 0.9647701978826790426137233605487273 0.0022648949580193981727843843094300 1.0022674637119763640322763804158016 GT 1 -10.1644824281967805568375982105671822 2.1117685855405626564606391685793368 0.0103203268010168892543505604121497 1.0103739506363868254677142875079150 GT 1 -15956014337698268022729062814119.2618132150537103147272780189436756 2.5939726693514123024983684217526891 0.0506411211380769219259363172826917 1.0519683865668761091792961539563878 GT 1 -1528670448855747108172767.0897602298567121792594255440964651 0.6049947504773732552437019190647723 0.0362898130649923023633823253036877 1.0369646655311765045522418363639636 GT 1 -15309147061796026042767356645.6479466496832959303721117209008799 0.4875412418446003934902215404183719 0.0258968645713522823084845863022090 1.0262380924149575332284926820168145 GT 1 -85446280675202230691533878667196275.6092182311416283913790730541169669 0.2233348421277903659981150824581533 0.0422054337821333827167163432701850 1.0431219642805051586519553459486219 GT 1 -53967170291144.9035587477275958928698736604169343 0.1946538652699178149836380141699309 0.0010661105675176601320591906030085 1.0010666792676228048647175477815678 GT 1 -364103850132666586414124743899780.3881442764494423014216105810361283 0.0940474931920605278686931215178748 0.0083956203144592942897450962580354 1.0084310620443078797381465070391835 GT 1 -2.8690530194106830227238737480638411 0.6009371711136018888595136173175703 0.0000125742110011382700658889266335 1.0000125742900571921330017938218394 GT 1 -2201101946.4166657456171770352847704488394888 0.2005738531119053121878519244546629 0.0717578640502408713224070602063983 1.0744626578706010469232217352327841 GT 1 -931950137375.4545666012674747185236916607945164 1.4008828064773303441140821065625272 0.0789188762618771273082126797524013 1.0822071643711813592436034674187801 GT 1 -43436795444875737840296434.3896623247037343164002715506313195 0.7948467413501512095115145782939376 0.0991688226970451206223552349780355 1.1044374115129705985218859604079156 GT 1 -412718542.3632859352613517704672442483522455 3.2501341014314969563224742491511876 0.0372745684609513130507438001508539 1.0379870256581273301411703066883169 GT 1 -7302080.2124976371321052966995422163368590 0.1594595427322970944349087540406717 0.0250744806302458880427778070047651 1.0253942012921801002078550603076959 GT 1 -10.1380153477445983705071876059895317 0.1952710283355422591692122101366888 0.0140728766558152221609721773625996 1.0141728385267190128973746476818730 GT 1 -9196053247619108156386441119330.0510171186652692409680200466600015 0.2957998886098719198733494993997883 0.0770010341188659161637807581282679 1.0801271648687163401705687360296493 GT 1 -840119214122790947911180734611938470.9785241182622252879492859576235262 0.1244317083352907644162535327687311 0.0253910064697135969158876708061958 1.0257189206958680474215118221202701 GT 1 -164762340.0443671157152424512567919753340614 1.1800989184103560082123321036976865 0.0709829931227310782885747747355692 1.0736282336864886833270268108937620 GT 1 -2360372369804446777080550878.9758629054765935014149480274556158 3.7876126470483338456450365767546695 0.0222124662420086858980935865003824 1.0227151686431961994391740782399604 GT 2 -657102819033983154167855521904.7211288198623729789893176921833166 0.0947621360226353948761729968529575 0.0775862443759247518703152021575011 1.0807613972763029544199591080503334 GT 1 -940731184.0904089874070545771094706246158119 0.9895783180254661839961614478982807 0.0946305336959833533102932598387963 1.0994121685339058322186482684835123 GT 1 -4.3250635163057919701375781026575279 1.5426478528259230074302401566643888 0.0182109872606977229745567595967784 1.0183788483565318950311017825686813 GT 1 -32.6792709414010172561075790925851852 1.3159905042134526288424655134318193 0.0285080955058299844963206197930334 1.0289223431955842011518992509950576 GT 1 -6692733023183949070302647.7755458878805607811878271895798783 4.0560275866909689260135250472672329 0.0845407301330777322163532457174714 1.0883294053527012412016729490602654 LT 1 -1456620.7082302506279501172507029207886871 0.7831403196825554998948188495174465 0.0158857190402298486928934233610904 1.0160132494867585667969096497275492 GT 1 -2921385779449.6968654761716897977086366799920472 0.3116883809173382271309449983279584 0.0948767909169885854315217145193490 1.0996842019156163883040410182155493 GT 1 -1636629.9152198120919992182612569189312847 2.0680373172141754023211143626108782 0.0458908429865854875621618135185134 1.0469771937298683231670404296862895 GT 1 -826881723627911928425830730118462477731801.7312418360894451493489018494196821 1.7815335200046604226461478362537204 0.0790222154674494908268339182146661 1.0823193640464651295047844355529140 GT 1 -19338546802790046559311050077385942966.0295166273754799149505241205530090 0.3229726180449976899056588907871622 0.0606885251234242033423400210142674 1.0626081456434522379383559461431818 GT 1 -8.2785890234890550674747663404022999 0.7693134382203676150907501112472751 0.0801474297468026953108091682425084 1.0835418715051956448539149385382725 GT 1 -99125210217016357728.2692177978949070720776695133384842 1.8298416576582380519905194281898644 0.0080593229408575844398346215012717 1.0080919748371073323599044194290263 GT 1 -353045530430.1995940663334284844120994158030539 1.2384698438635917232281268889013292 0.0687481489685618928316591719396229 1.0712255216055774707767997736438602 GT 1 -227942.6717094142026392339024400306837642 0.5202747090779822635620696528016253 0.0217094537368760286141789266988784 1.0219485709988255662104662309359950 GT 1 -74.9429184175866267073929697176905237 0.5489241773551531566560100654580238 0.0865675270756183868411115397405223 1.0905458271614317691854211185941740 GT 1 -363090064869114349671445267566856418103985.7630027457657884268713835486045399 0.9891409375241404795405432063847347 0.0290607834898280567462737163501733 1.0294914115068738710528242140011861 GT 1 -4735885882929018046505553686496356.4723358087704880573498406024471422 0.0127477879045583278847963651594410 0.0142376384775348898101128289502620 1.0143399660824196168079036418089060 GT 1 -5308668019844065727918672645.3294923517600034463831895611702727 0.5007516406803441556702736032713940 0.0996570688560987957073749909555275 1.1049795536287412776121820968357751 GT 1 -4085434560622591.1215784286785049030828033871837301 0.7381806272070843498888919727345516 0.0365587923999491247529031400592599 1.0372438126054190630923923802085671 GT 1 -2003068266461945893687324950125283746.5157093546119172455296512229538637 0.5355760551722554499447621064204475 0.0073238467024613883236022640042295 1.0073507977385203932431405250166197 GT 1 -9509186767063661.6079643156122607444771796436019352 0.4666822128931265108253543251322727 0.0665970116232527293667212396867807 1.0689182438680036880775908534191098 GT 1 -61022564060560.9844241694539915450200977722576143 1.0500285277604938341787103929672088 0.0951615399013850035141637238449468 1.0999988483433215702675003628217288 GT 1 -2598182220479.3568872578551386643727633193634587 1.8806880478569134402589905201047459 0.0512797447178444978498345864162706 1.0526413022450243535503356780687825 GT 1 -20180927.9115452431775324732797293010592130 0.4328967613783975579919039440685486 0.0864969827351933676620224853747729 1.0904686001976567378924308694183516 GT 1 -15107011899585718726031819848505.1469695887587421098704164633853752 5.5491551977656237171795834258430738 0.0614610681575765486558843124285997 1.0634309407659731168480430737187947 LT 1 -38302429630009585394548412193.6034636784054775108090670313473152 1.5039911112610399240695771758510016 0.0126576002248483669415941742802959 1.0127383901079269360849418546655096 GT 1 -16661.1735463000284066277098871740694733 1.3884808089560495569696890229436951 0.0609722276107790511534124736031041 1.0629102236519112175361357222425923 GT 1 -71994049127610007976066846905783.9660704253578828133546081600470033 0.3437061131567114891716072088028823 0.0427859536129485641414166483698730 1.0437282486019190906738454808857023 GT 1 -9219318384043576076789920915751856844.9406088128152754162535975258839326 0.5843737897755788096004225813529925 0.0714767032994035650693928778475372 1.0741598078196014027046737500109136 GT 1 -480451054243147556681486409264.9091955250202380678528509041823006 0.3825831445567248409846886826681471 0.0628773318820141781386948625596406 1.0649410894981564037685985407375324 GT 1 -23171252747948358157182150.5981862512340761733962648433979448 0.3185206538702310720289813520616891 0.0835553498982959954090735578073282 1.0872536062138098100162500311204863 GT 1 -510612397652325757136066323322664.4894596727867836535830968670861884 1.2578769759071064257129819256630528 0.0292267463416932819591132404123130 1.0296623563350285504081395415495670 GT 1 -43837388156153947966084137701489106237.0003187257440788957035627069871168 0.4089673115285615903881748483902750 0.0283041819584346530078915952965788 1.0287124679006973747590595531697470 GT 1 -2244601591831162877932113.7066855766120802894769797982489813 3.0547413436908918202863277270070197 0.0786214291627356717366243013678097 1.0818842839276076712259231997719006 LT 1 -13260227363968341686793865547289741540.2175230542775589462369487277686178 0.5980030740031091810489318949417410 0.0685615322434520104565426941178737 1.0710251482811961101588301450163351 GT 1 -18543056.3619854212104943917912560740718045 0.1579713654772558411175138617650323 0.0199972793636025573571179073162378 1.0201999311617837451218633880722526 GT 1 -14948654.1121560342504144966853651307395664 0.5475578409157760735055600179994863 0.0280173785680792637265582524167602 1.0284173538667992465170380141353358 GT 1 -46606459936438932121.6071477073106430387226333652342266 2.8183559565754724206684557228284045 0.0453938606242584865921800466982491 1.0464564430715609261617176288028934 GT 1 -541799420.5627030688889525993028587898308893 0.9232258794549798334821640262968415 0.0539437086069485362705839173751176 1.0554532070567722498308878948965265 GT 1 -156674622724581382954280796600775672607553.4759230162306065977261846664196933 0.4513835016318981422763530466351192 0.0942560533751644250254486897414918 1.0989986325029953704767907591304456 GT 1 -3495263906173096.3779413670215127980943485808838016 0.4291551817547957690690652825853797 0.0746528599136730371843483766345991 1.0775863252922939209522600916016988 GT 1 -275812429217699481100848.6736359382162491053848149162959228 1.3301195325345469976965084046633429 0.0723651390839380131890682844457138 1.0751170924655624371183520416720048 GT 1 -17561311637022891407.7388581423697188852486872767284827 1.3267590695901827724225346171878354 0.0440929600980275703438478496248428 1.0450946092549777139301804453190537 GT 1 -634065791239497827936314009481693868.0334437464028354799804292234258494 2.1785436608165700282026264219337654 0.0481845281693033017377622286432797 1.0493840950892558370420749134882578 GT 1 -4382035597.6259358018632169973208030922064740 0.2056268986810762525088410639109489 0.0283736447767606608690382205292691 1.0287839566320165803329842607254899 GT 1 -334169830099134779.6348553510233832984584190978774487 0.4893728860938436742232113521526728 0.0439455828716295153752736968772629 1.0449404458683173509561290983982618 GT 1 -39741042104594.7212147287975542942603302418408106 0.6866146780893556026597004620599618 0.0797943541893352857190676230026288 1.0831581058626541983435927772329991 GT 1 -5413118660.3122861853835806689417655036376811 0.6249595309818246278447424938498172 0.0235866460384143794168584195721664 1.0238692638243857421225918700515912 GT 1 -282.6111957940464802641652473026291597 0.2429461768877519047093730196642212 0.0225646960874219783249710594625990 1.0228231745686315543454146904358081 GT 1 -1373738520428298876275761296884347315793.9389072525204485641716537157747748 3.3935673167522665283562465501051415 0.0959403710753548952176986459285384 1.1008599595654761825519340586179888 LT 1 -35256319581650996302503975386560.8164395267625948452805942211175107 0.0124537487167722867215071445643886 0.0948121470424199488904549986432967 1.0996127844935483314353138652031790 GT 1 -2745434125156405510.6595820281376421016635441728378122 0.0210197929319586615157038753170531 0.0946942448014773266952196227550546 1.0994825412929337021006375043218014 GT 1 -986498142350642019414034887586638818468.7971273221799685542124221733795938 1.1276624008416933688469465270766354 0.0390581467975485799286041893628215 1.0398413783955601583022122741884943 GT 1 -35.9816952212177412462067002873612801 0.3610190286216185456422582060830868 0.0754789461921969432325620754130946 1.0784794552311331921912920769562288 GT 1 -84049074024.9299447164370824585972270029538317 1.9795677346056520897972517442057495 0.0779469799276648950788764764287605 1.0811525515774731343514193211446165 GT 1 -5650060403934662067125659977.9360308127538126660459280255039986 1.1062214638399497919113791689876524 0.0402963153135209662682408971682567 1.0411307039510260920054152049622180 GT 1 -1943706971.4892616659786612197513923388570487 0.4074002236922991076404524802807553 0.0189122498351598879106292537594499 1.0190933737078435258007523467513355 GT 1 -8125283935654393006469199662325.5005431578742141848390979279102544 2.4191994372372638431681317642360350 0.0855951066650892434821048351529087 1.0934853127164938395257704665245546 GT 2 -384580.1866398045851316636294698911308683 0.6588841373462750203030147930948879 0.0708138482140604435354581627432804 1.0734461815697981903667394558059895 GT 1 -4441928979433801996255740.3361148507075323756003973306062934 2.4813469808284408570658706568588736 0.0698874107052715203846005856203074 1.0724496364046881943864448037651321 GT 1 -1491743640848132255863606878392179867087.1320721674694615710980937085828523 0.8937361251430934056156750772447365 0.0802369166549487012819595066207696 1.0836391602057364942264568063164894 GT 1 -773945804852119753088653030708577447882.1076083315306573080619324044608656 0.0583304630106582765567360691236090 0.0830433519560593111251076576870231 1.0866950836949654781979431732304761 GT 1 -632542097.8809883571384465007338127975143640 0.2431575321000321417488029562755906 0.0616557236700672515484198428060214 1.0636383649811198543357875553431784 GT 1 -16966831331482.5306538292146642180827390280168123 0.0522057835028542658355529756585834 0.0431902752065692734703523219933695 1.0441507319646887838575220363763463 GT 1 -44020611561830708656780634248.1258837083744260793029264247352043 0.2629001838571972038996122804133216 0.0075414650004426713987120509143475 1.0075700456315081463468123789904957 GT 1 -2483411979728653627590849243435.5053068887492181257674519995109500 0.1921124142686177178439094091576946 0.0596213395689191841468977609220870 1.0614726545865774912346193865988046 GT 1 -62075435760128343179280.3086113335587262397899749255058389 1.1572041007916019426941378253688995 0.0139795439906200487736791247385571 1.0140781781348890614414940994061419 GT 1 -374424810572479765599702893694119371367.5842342151542361338892252033827429 1.1800793166340858912692135126778734 0.0882641403578689743664987103825725 1.0924049584433575639496486468860434 GT 1 -2081817864023913.2742300396793118630291545615182767 0.1962504454894396038245060692053286 0.0972062606934766489714859436339244 1.1022611688141052560365180073452695 GT 1 -1143.2563925529378669238344217925512512 0.6509899709769538714821690257550921 0.0892812263666677762822736219295562 1.0935211301118556830659548105938540 GT 1 -356252676427333307430944390270628684.3878618159405759544006999483832048 0.0700194550922323586970045370402699 0.0427018640676130886087955866673041 1.0436404042453606751016532422849770 GT 1 -100.5016130262572722333920308206996168 0.5996558941656004260223036008943226 0.0947044890582364992800188557278793 1.0994938571546320868503545475027015 GT 1 -21152911.3377090427021472084250352157805798 0.2663557930109475213621272050089796 0.0790653265672140497229026183598988 1.0823661752828906150796058081203158 GT 1 -4885420756604833029.8496324991472131156275843708832526 2.6512321179483838040229721800973846 0.0508336792463616480611356652819055 1.0521712367676361547991967672183857 GT 1 -814.0129956180427513156186394305251370 0.2486917252912125820547793929325264 0.0314199503252709520180764048437116 1.0319241462985058454117767824685263 GT 1 -304851012733376.3819519108273062799016769726527584 0.4315470098223915982651436788383343 0.0057606957859195134667068586868929 1.0057773525945639957964317465735013 GT 1 -13191083986611451773297342242.6972844481994560899431050098322164 0.6999717516125746761483649176530026 0.0888842903166236803617318730863137 1.0930853758652872782939007333948683 GT 1 -2499842886690776.0625342640156948388625016969144138 0.8055817506841777324314275673028808 0.0784978581541404722912711941986865 1.0817501775712602931949308445590019 GT 1 -3864557807571633788657730336635265581481.4535256057525381741527317444448892 1.1255912850745341853360042949560482 0.0044947957610193418506600337288693 1.0045049277276324902825734900248096 GT 1 -307248773960779179858130535315062517.6280099181647980497583257874904117 0.5555938863352714013995505814021569 0.0202212671841679990345002338923353 1.0204285156512901389532614878027694 GT 1 -1046057.9999825284210969836779691272340407 0.1091450805667153350391584456934544 0.0138327182253537461505935970103735 1.0139292817973603230512735411737789 GT 1 -562866943876960854210128210.7212667517556049970488418216551787 2.4981417560779599814469262882657180 0.0573983827860734823591820556341767 1.0591115487991698537749175685801564 GT 1 -110613097137428541062913098203459106481.4753398908945676403757591080538475 0.6955572143628437047600514878982127 0.0874496018051487802308791942944790 1.0915119641521933083492858740065646 GT 1 -1577263687.7722583641962628106832251856875967 0.4199377168611566003188937991373993 0.0121984914671267469862496197075879 1.0122735037125012657628240530431511 GT 1 -134111427689.0159322977905078367715180217699345 0.0542209015997032089274495089683383 0.0604783649016772036360143491684445 1.0623844320826173307344934233167880 GT 1 -7225314845132332914675045983377104983201351.0772033280836355472387116135160641 0.7517545271784089855102514515045449 0.0980524184992926444261757992655259 1.1031988742437555664520954684370789 GT 1 -22797573476474.1320555432620378300316486379496609 0.6656848973299545065924606923411662 0.0099272832562540928192325000214352 1.0099768872946038860185801454711074 GT 1 -93293794989846410813682951682332398622.5219387607493086387594050545515081 1.2249901786727540612454611314585660 0.0614578343176275968938352018038432 1.0634274951610355153248487687902290 GT 1 -476576966284474382940679957315235771291.4220576553817419504443143482614374 0.3825400874516879792718420873494222 0.0843335530404488964606244472651827 1.0881031214972465475215248959882965 GT 1 -44345.2968914946801222306736445962823273 0.3537293480982638398849328463426704 0.0517864594417987483969691992891879 1.0531755483395560128915817800950949 GT 1 -2435811358568974334189256419093123.1520017658282747721603701336085718 0.9307457833511014694499734532645147 0.0788090783305788618419812329651455 1.0820879659805832114363322665231389 GT 1 -34083145016633757827808311.2587301406862150097100912586311516 1.6263884102517258767869945175128865 0.0083180804816461060120798276285401 1.0083528687618919006698568622141027 GT 1 -1.3505676888403525284353149404781577 0.4987424373265719691467163348991571 0.0713050796697398869127938079172109 1.0739749898713620453974795449227228 GT 1 -55542577.8833725382903183635943964977955038 1.0732636492657753316555937569492025 0.0277061110575343520590131635692723 1.0280971653426430249584429922406295 GT 1 -61637412673206991470410551697923129.6865863110959197305057693105471148 0.0891039497411261689657567023381171 0.0767069870914630907188833365130871 1.0798086377524562752889680314370262 GT 1 -13147132367118464633.2446459156148316048263672469291818 4.8978854065386002337935495039780134 0.0183295193261844588333261080882595 1.0184995863356227523898784736564980 LT 1 -600748221133226648522957941437710808.4627454535322318574489654189141236 0.8603585203998802325450758838288224 0.0356656035466639773401069643154705 1.0363171602343432315545972588865162 GT 1 -4055956444.3312024184036654924091945537535186 3.0670067384021950639646893338130933 0.0313134995062916772220041804935023 1.0318142483403986781856564431715741 GT 1 -18.3925428128242573365560612161288719 0.7144742834933022072658878094548731 0.0714028577218897979627625222954572 1.0740802808530108058978728021434834 GT 1 -4820.9475293440579759965807827129478956 1.3682287552957865957511730679608930 0.0362859705759843522699041640844504 1.0369606783559865883542510076520857 GT 1 -1015025735905801612580605488716664925568780.8162732907261831350603241531712704 0.7054960656424463140586557183199426 0.0097335913532888115044526420140408 1.0097812724111735243546420948079536 GT 1 -9154355549089951051963.3158682731599539300053496893232842 2.1868258040455302602711384859512186 0.0999024461550094962775854761452770 1.1052521283708399561835804132248800 GT 1 -206106154651246524126719295479294.8528593756096776116577514217274627 0.3893342872219696592813789899474419 0.0414326427758221616577254159741923 1.0423154453878597239220507007753422 GT 1 -403575649899409280906905468213.1217408777129435336670387701796252 0.0489548409822315841694867067843534 0.0308488000589415999052094786504456 1.0313346421730159162821493007020660 GT 1 -7702.2616269120959132746289521533063395 0.6616709833093188371848720194301968 0.0356032581500727383458178066997066 1.0362525111027200446057909843315938 GT 1 -88954386646095701505071700987.5182045833903603037682423868781748 0.6546467719466650171008684120576237 0.0100518088270176527102895311842715 1.0101026693713787792291525601770949 GT 1 -655.5403938588810939978468129219419467 1.3144370520638124820487651487555209 0.0872165430509106698066993536338334 1.0912566040109810160649183417872623 GT 1 -996258956576262709008155931.7178295578947705140268151215171792 0.7174381100730464436087002456968574 0.0510188606298288336764337948910123 1.0523663547844867643687024527040106 GT 1 -2041664913153094.6277164226710935287333523806954312 1.5538973795130022807340664158476829 0.0519514298940516209460716555812095 1.0533495437505715201854299000016119 GT 1 -620221525584144808885850538.6433454641593733682847413030847264 3.9546627264795866757486994630237743 0.0372007124279961837839395032191473 1.0379103130277899276840200559239054 LT 1 -499179477328455141186310538373482626348930.9906868702666878755159834676171709 0.0278006278304121588507848757185460 0.0137343323797338017224666575532822 1.0138295208947332166868332539808726 GT 1 -228324.1890499821189410752423909343185792 0.9732818145401460831513631865934715 0.0691939054531551854196880667498714 1.0717042999316406506304124658771251 GT 1 -1438360447449813524360905593.6248211249056696753468565735729828 0.2690013077744353452775084740988712 0.0072434701857581322871276169152611 1.0072698314912828483405970704230144 GT 1 -2322449263101668110044014472608215476114227.7457208766888994110952942216759139 1.4301647574250568501385641383527096 0.0001959429613609266382843689237442 1.0001959621606910034334128891177287 GT 1 -66065028912445749850742.2100041914630452226630060862205180 0.0348275874072589923155451459862653 0.0627532015722281337463487699048264 1.0648086392932389381641245363605966 GT 1 -1133627981733645041303623815312969848.7434459106823387165346565040057910 0.3629385758801468704925315850095985 0.0395577130299319164556950185892577 1.0403613850232776747212319706073859 GT 1 -10355681.1001784325332282208560991216345152 0.6981407349544649506307807259524968 0.0713680962098172463283489954326474 1.0740428471157448503498754301818168 GT 1 -15418602999715566212071432926579093766.9508736466190997441182070364078529 0.6119323058451759925205258069653587 0.0995239156922885088246999208179209 1.1048316729556581453446401394281347 GT 1 -164.3002548959424512626875910954968540 0.2622131650613592855662751828207462 0.0722339052996742527315798106457141 1.0749756310913129992604858916297770 GT 1 -243004308988585137176076.9417357490058866815481059357220358 1.0789246004112343895693603142519963 0.0418807420919465350084909024077233 1.0427830224249721694190833126524177 GT 1 -130467278.1397298493925786323021697037395907 2.4494612534037526334922453767152501 0.0252911789350509846119235046259134 1.0256164976491976297347478004961186 GT 1 -60490900276528007131.2685534954851562357672854720585598 1.3996086008675697703811366926317038 0.0097394429727053317637685920434735 1.0097871815651693608964602925114149 GT 1 -67594872.4163342699626743848900913951368172 0.1608007793525768434510483862736966 0.0886727942883211863562136520256483 1.0928532741874071682341209652290409 GT 1 -4876288651381193141712076.9333011083234951473394761339956264 0.0415715924364738732080637873754913 0.0950851405515516329951460226796353 1.0999144176653351626608295857664881 GT 1 -560214906982198417396484269.1556190210637126640526971495092462 2.2739023685661389658021483282421948 0.0495506439072300509474173680932478 1.0508203998063785295007850838641726 GT 1 -2967027087647785871722666647937.6598564925330947730758997922527836 0.2293999208554490238071268595696217 0.0977573261601972558451775340604501 1.1028717553705066904601328196050167 GT 1 -10.0276026488949526621683844128879250 0.1896087136926828147820569782534464 0.0898407531828604378525602410769480 1.0941356982789919604543016345319075 GT 1 -19528155481102905426659117336916.8825418972296200873790909848569085 0.0104691296545738553567850252080936 0.0055476117385765329526823068955100 1.0055630568855160193658499376666646 GT 1 -1931901628.8333892194147771178851301723238447 0.4972837369387820060277240021128135 0.0826327239394211364196104690359965 1.0862473677620254237088306458559853 GT 1 -37.7848261196840856736027593002791839 0.4392238633028889563718591502086734 0.0415040387464843544191894687081882 1.0423899301166707635519737551544841 GT 1 -152131695575692748904149435521769740702.2287433921985798224781050302001532 0.0116619108082927152654624621744699 0.0700676542077494065295079940471927 1.0726434419409330793461034507971709 GT 1 -1904983834163161520.1717692166525218286573343669489363 0.7112148053807669852953357103188136 0.0632354040010592641608865128442014 1.0653232598989696993752730892537837 GT 1 -55683627909258492250078068879100316166.1240737937443982014853031738796730 1.0690327681984212588503883581975507 0.0229594843438934403487518947452280 1.0232271583456503968299690776683511 GT 1 -242472028875335823291960393337.5307554649407506383607485638421990 1.3852589466576539448877980542424477 0.0921516456829964526594049059722005 1.0966779249927707077582423264708483 GT 1 -2404420296395982386421315490989847193242494.2611241179072519237291393685607508 3.7585183975517587029520602710083553 0.0226065535888833137955476035355395 1.0228659992932636240076132664613234 GT 1 -6019813049754588688502.8427236734074527507944140592739554 1.5035481165583231956002249100300655 0.0561520255640458197439474286489934 1.0577901698353280745814510409877713 GT 1 -9722170074348.4719876182223314326298212380161614 0.2645569017360332648007332523240844 0.0806048879587023047021023470329199 1.0840393120899916873606202223493189 GT 1 -41856044.4924119781297660641994102452445457 1.5665945095209350471242619564535751 0.0426634454910553951986523580135867 1.0436002727500371531251198793870139 GT 1 -3462.9771213964949151327827693501525682 0.6919656911658803435934853600600868 0.0903406772828335810487919718954135 1.0946851202059006969289436409975090 GT 1 -331406373.8459475602921358642921563116421008 4.0132939412272758820148311253834292 0.0781080708804381140943832700074924 1.0813272758318535480211940341357937 LT 1 -777719122305376604587.4552139771210499089506817020095882 1.5924733617550822927153070641122421 0.0622277581084382783335206946267339 1.0642481719419795230896547546630759 GT 1 -197634.1579497767845192290900760595216399 1.1897713899414054747578766855257958 0.0170692478436976614765336089816096 1.0172166067321310151416271562410336 GT 1 -266419509238787521.2051770815585735032264597716452736 0.5871453879722004251813061665624774 0.0192302446987933564974877581290350 1.0194175510403280200704736025391978 GT 1 -28672876347752483073040.0607352927914529419615731856105819 0.0530612983089015904579100063305165 0.0139719826232921395851960134787055 1.0140705095938465960231730535948151 GT 1 -503150535120.8666269219655113834812597047092753 0.9826055816884151985285528627117174 0.0123862190891333620966783394669605 1.0124635676687487696855906864483811 GT 1 -12418516174392434932.6752715582916312884905098041242735 0.7923377736769946785348677381026856 0.0159698207588605586906999913620871 1.0160987124396896886928789274488010 GT 1 -32133374261589284.2306123817443099261129240035261870 1.1334815683796430755850553828567319 0.0657715687549012562114755345620115 1.0680342975888540114663362297713140 GT 1 -38642809413.9510310064796542281557458649669029 0.0162428943705743453302250604337890 0.0340902457456181601799947876925855 1.0346848712306481658112357558889734 GT 1 -11.3921653663055867224835995609130441 0.3462222184810771637830638789096496 0.0465093170212036067565095221033400 1.0476256253802831497759404957111749 GT 1 -8735.8994706594745552344213235678001419 0.0327867095855422114792171508405160 0.0121206917584473340423483194278010 1.0121947463463730204405694471658080 GT 1 -404086139048035752119719120339271203905532.8081915785444160774674191898557884 0.0990996452792407584643281832609106 0.0924138188501875220324628596550956 1.0969667518977256878695088146191723 GT 1 -76.1254477221079984653285281192834451 0.1851932436572797336696052559963964 0.0817426550438521852087328768883581 1.0852775954511353979236853378171416 GT 1 -3514906153237912.1560129333848692092952456747721656 1.5179086575489974753694102032752454 0.0578789573447692825370475085327548 1.0596215172728808121421863684534570 GT 1 -25102882241.5371909376583682757116740966683795 3.7423445916080787747167762839758606 0.0570933210990903902569314507534392 1.0587879631747803546222518769407669 LT 1 -1287616991081387178.1167237427057300255692321523905804 0.0407611788530909098645640351002890 0.0241568602394312073750830055102912 1.0244534229439128519994891723087883 GT 1 -61368324.2153819856350460933736525348333480 1.6270586839947346450735799375703995 0.0863121361562846077117683774936201 1.0902662714957674155749368521731528 GT 1 -115544670774840.8654459357251428560497172043308585 0.2712840371120418760122209803883045 0.0968719387183611226928270308528626 1.1018909180326751065877779874189097 GT 1 -1707736502434501540556387739.0648930015626910239745722581053925 3.2790672449569553073299075606374508 0.0199969681312524473329052782496105 1.0201996135786851116296162930760130 GT 1 -19623429893686207480151410041445.5223141238993442095576289707296724 0.3064482677228936207703034880422984 0.0949509290591664947992067780895410 1.0997661147181021125186565793406333 GT 1 -10704483.2334060136389855142489212469240456 0.2324509897131384421737609015156876 0.0268939831861887895847444638397432 1.0272622440330244002004338518569101 GT 1 -1122162335161877701.0958064818419520703679963315032219 0.4340434881288443494190347249103597 0.0707027596368574783181282178539221 1.0733266340098850405083609108951200 GT 1 -1364247856495.6570690270530443073549650345201885 1.8516401057805368950912289543557762 0.0233437384599055480392294521404704 1.0236205194090988309000264452540250 GT 1 -613490373265802360285662.0832433780488831475900281988087157 0.1819825002665630994487317258862703 0.0933063369361775466613182307600574 1.0979506333654438269330039264079811 GT 1 -1297769935057981306678104784219051529.8502245775801574103626628273380685 3.6250254229761533283134630562444419 0.0055483476358480767996265273186684 1.0055637968883080217560288260333438 GT 1 -408981769.9488384330720894920360731553156949 0.8483512880370749955009127643338413 0.0392461322788988628862740715207873 1.0400370238142423285130528811998620 GT 1 -2042003178145397.9864086044530933955386905584881850 0.4820989624405591431114823449511576 0.0769006150094850373605089456998802 1.0800183742298725246232356663023445 GT 1 -234154933741575.9879874498074691415300626842345102 0.7843376781768030912929484949077294 0.0809517932062496253973516876485868 1.0844167022962716676233751649033811 GT 1 -142261280773736221321907537.0559577509274353226160958838847895 2.4785130379772927488395295241956539 0.0406265895430756940574692190609222 1.0414749050606649953106471804910633 GT 1 -193837566886435716344406.5771631409669623855464643682226986 0.9086976316415457112115417822108245 0.0288848745304650852023610946288384 1.0293102538986220495223350886356561 GT 1 -3126204362895352576297951582575483379950.5350688541839727291142306289230513 1.8482076663762449079405922349218635 0.0685918469691934831552878334200871 1.0710576949497257347951264837532487 GT 1 -5624255788656171579626895811010534364362.2493211351095208632570609578885541 0.8521691306518818176582066728328435 0.0024196468663517650661662726812368 1.0024225789425115374744752262527563 GT 1 -9298630131717413.9054086189621799122079011877598983 0.6097027835794703299964743484726774 0.0598857460358290183236627899769633 1.0617538643339029998588251967579313 GT 1 -1118174680155348882816378215273.4736152615588062366803073819537636 0.9269535320619229104522213101627505 0.0226561636187542399005036234356972 1.0229167580630669084213420514243613 GT 1 -156848573612542768735259093.4229506104225010779974992476125155 0.5824559525146002448794273071371393 0.0910012493468433528776267026265641 1.0954115592245723181206044615405073 GT 1 -53241399882861363067746807463403059.2873275798609352236226627941705868 0.7456145483121724960661109327767384 0.0562035110542116308819195822381597 1.0578447198220203156101030632543274 GT 1 -18434528596955135160192305500169.4301519810120672733881042577553560 0.9798292411752018768951014297816824 0.0796626624968896346204226869645779 1.0830150049474739622994483881148147 GT 1 -39557242475104332371679144.3124397127680328481305027504087582 0.8214361309222848957664979847571748 0.0027902584153125332029448213747151 1.0027941584427369324693522751111259 GT 1 -122091.3258873887218632461356083642595335 1.6594110907867708052689933075966203 0.0140933357552387036447130555561610 1.0141935898695076279142112071319833 GT 1 -84386725707506640773378438348536444.2326279032179775329655527717913638 0.0564809447995880569261466017408988 0.0532134069766126876500856416542012 1.0546815617473958698796653219669990 GT 1 -2503166020400236712507482657552164.7868618879746994685000210674737458 0.4222459263622965179839064057811996 0.0077054615035891593600680774565067 1.0077353019605796983177653418592115 GT 1 -4078932856272261016237097304583359.3703894249559052383166809389581531 0.2596504009148081776824368623569035 0.0726593359034679053471055979938897 1.0754342899897665309543468257283537 GT 1 -6387696.8721692223634981059354219375848451 0.3253190153579672047500127419815383 0.0713501589203729597757917405393205 1.0740235314793376216804620277920407 GT 1 -303033200688435268567857696670072115891692.5709105922981086972120564971296036 0.1984945632368020640933237079359827 0.0651247943651946931814395107598082 1.0673422285106501677010529604283980 GT 1 -36571931759818621680308617980472.2439305547024060455753438521003357 0.0888457622371712364999501510582147 0.0576517810358843315923219855290264 1.0593804135153270965209634229305696 GT 1 -4504646008395477995261364649.0411171408443580586491495651192069 0.7079651401511754673429765695177884 0.0672680886425472842821462344077201 1.0696374598778618885245924596535151 GT 1 -74797089753771421352032086496.8735209783925090096881221350445747 0.8756896942868414693356779776158340 0.0122414681424760895752514371666579 1.0123170120589726079416445075244246 GT 1 -3471606464393445007428567038695.7177936149146273178930918675402259 0.0336474898068224880000604498035182 0.0167808075143735855878652369590996 1.0169232004920023068799813456709218 GT 1 -22753559106413510590237771576872281306.2500229852844729429194351286362832 1.3383692062620435987241942323450089 0.0391854188884091620365618797817861 1.0399738323202866632503947997278872 GT 1 -13087704668139032761380778793252914.0427936458135848329211055976635215 0.5344855604448977744458803300398024 0.0838145893719890842288924312752663 1.0875365214414679381836911877531675 GT 1 -9783810868465777443.3688736491923520577071128504203424 0.0392228059469927285108982667283569 0.0832185687867365039297663387326290 1.0868861871390095906810357525111683 GT 1 -1105886069207.0567484436842140288732201432425973 0.3424125012560771470301385209510905 0.0263018675151492898786622398781426 1.0266539489566954950568202065167611 GT 1 -78604866858677962241957521452923478.7134114715430407076139740789880304 1.9812853863949686700249143508577926 0.0961956461941051006275686246398386 1.1011423647938399000788057174917451 GT 1 -1914.1916211715147788629414281877308264 0.0032234771683957585080607304372670 0.0420590037070493586071304195596803 1.0429690934164520059395053784758398 GT 1 -37.3852803311883233228702529539812835 0.1139914602616028998001904714206329 0.0604170760189568268982402276506753 1.0623192000736309470754016358469566 GT 1 -1506672644561972177357070084109188.9436269292829906071994308116210163 1.7090565496445753279864141741537054 0.0551352659474583634660538048743915 1.0567135003024359144106050515729268 GT 1 -4915051845292701939.4856171184301463485738045643639718 1.9554994237279405136595157509682176 0.0603905086459050259433121145914077 1.0622909247646878414024815720498265 GT 1 -1554180651351257410220181681328.1665786606000738822731945087232314 0.3726487332241429959235711354537238 0.0304777500496540303785362406689606 1.0309518546397786201083246981709397 GT 1 -181933688.6837523912593533728761184874318197 0.6164407056589379424571568753114295 0.0675845172768072814040052172314106 1.0699767667211709825827674843930142 GT 1 -16378319239671.4832275469735934748457436908569964 2.9625795671246480624001229451998356 0.0731789089488037752473919446499459 1.0759947298300263002634904850093187 LT 1 -1485.5687202152086942679630025575885633 0.2095966945593876024615805213636860 0.0090349480024226490473627990211278 1.0090760106649287000685534990789296 GT 1 -75526927839950725872580142109559539953.6561700102560211215803284395057546 0.9191771003580776661086706287465670 0.0774415964172155043164221951044176 1.0806045949546161037096693922590069 GT 1 -143959314998719903795065048919.7503317938685430957653750638440120 1.0579743779139015800991906725611250 0.0111419756260835515276565536301593 1.0112045123924837159825651545022149 GT 1 -8431319520354312278830203727252508355222.5290260495610244353314679043500913 0.4973065054335960429035321369906864 0.0290073149258082666668030708829533 1.0294363441134295610066962431223035 GT 1 -6732816.8689849913200565759180281305653941 0.7869906352416088306033453740601364 0.0002366861061025695142750712558540 1.0002367141206795084649497199819471 GT 1 -6350901020561447033978763936529555765399.8716175143186952539366129352437605 2.2657745855641268529653431284751393 0.0630998537000497207360895879348944 1.0651785698717883038146979503773945 GT 1 -33716811768446794729016224080378.5460623343799370968615693421840354 0.5619716531554201406142786263355793 0.0935651167077456226859106210407353 1.0982360844702155453355359626640901 GT 1 -27743365365726.2923131575716175705098455974412584 0.0478290638961680828956368757887787 0.0942347789397084128930640102921594 1.0989751444237336175098544139881730 GT 1 -7341.6136252591474070900899961269029762 0.0559864067240239286350295370341102 0.0447456265870028858705667830399961 1.0457776143740643708251036977589897 GT 1 -57535818997398617881222.7816446512520020961923868458193290 1.1327819781302186765473072007925243 0.0845457042298128749103708735730970 1.0883348388115258516113893089922303 GT 1 -3020069363482222084.8206327310311786099212913895114186 2.0836204881267327568678389484329717 0.0006355843371844424084863446974125 1.0006357864065352255973184809518414 GT 1 -2581194651135400612472233918341367719.4792060840709496438508623446863594 1.4624692789477897373924345484928437 0.0241129602337757660009285884099754 1.0244084372116396659750658228652351 GT 1 -38017197488939367620428745189338738280.8653359868583931027387430436093610 1.1905802745892822451768179361965262 0.0989754168110957246386695984374007 1.1042227374076034075322502849494237 GT 1 -475576626959518563922.8985528358538774669136859726678617 0.6947828954351998615301625519914357 0.0905974018196292712260467485451025 1.0949673805682895452390015346009055 GT 1 -86680.0630961619632159087561131991974919 0.4566651006481492287865018755917903 0.0659754510043550843212779868408231 1.0682525573774581469041323997324983 GT 1 -382522154842627197.9035728665699260839363520355005926 0.0321450269188812433643284992604973 0.0433391632691336780907623549099227 1.0443063529246959007801429364616757 GT 1 -791557122135500398860019007377701700538.6188013377783158370995760768063064 0.0440907155348118233339492900616745 0.0603492084697278084791523488339156 1.0622469711127536055614777176283339 GT 1 -710997761403026544.2548046640442567083116349557845257 0.0401759611658555682993869915639702 0.0464744622584742371146657403487533 1.0475890711419347362090877507712533 GT 1 -67175014360960577307986053871572718417612.4328895651165152209344111031242689 0.7414880823957068679215520481606556 0.0043372141972772611282928143182743 1.0043466471959453897630117241223021 GT 1 -142.2813340816407069002832311159188932 0.8658793258411578792937548629442966 0.0121900145606985545530070103626469 1.0122649221604561308730867739449752 GT 1 -7871815797961418324991084070779985391.9417977691878204644215204142969212 0.0060201069211747823604622536899440 0.0231046754503281375669053382224877 1.0233757723417851236720720354113564 GT 1 -3386.6565772259523712248103737935442037 0.9102674257228329688352158858149105 0.0354353837399577918032044583160276 1.0360784543132120821249245832831207 GT 1 -329048431376.1849501578397910651212085018832176 2.0922838367395892411514087706882745 0.0609870281540269861866043505547581 1.0629259853368412947674611963564989 GT 1 -5846744591402973016.5622870718568649151147014811505563 1.6509429593968095637855049828484025 0.0025543662231712788557128757296141 1.0025576341828023313092185496134898 GT 1 -86377817522.6135184883160780487474322024773605 2.7723984906820448303041740081270248 0.0893303130265534388817847376179303 1.0935750303763617993163148436988728 LT 1 -2506607685645.3193856125947950163183933402423235 0.4517585485145477812581826156408252 0.0738321018457376118116407939390382 1.0766997452702632513385250613872322 GT 1 -115925531922.8557080890106206502368062636674833 0.4431291591480521613079044268151762 0.0929558576881600505408322263604462 1.0975641615707433618244552175809654 GT 1 -7606680158769392.4089559082272843125452320224372443 0.4522956832856248077387392944443932 0.0074226391281079997221603936833270 1.0074503239955178447366650140951995 GT 1 -5963248027810242382079337578339094568.6699623251353270903253500751352543 2.7098745302030748773808536704834116 0.0484906775934312372692815307123000 1.0497057947042612951891540318735910 GT 1 -20293498108.6174137267729077859205438392176342 0.9593194435007751531528595365051243 0.0904272464295810738086992279104077 1.0947802912925819431795510391613615 GT 1 -382685201.3770302434674161781658726481213159 0.6088448748544168426050606226993529 0.0809824687330970685621635033875455 1.0844500803482260628179313544409302 GT 1 -177677420310.2055299254505255394228867434648310 0.7278051485847145328868665058399121 0.0501496296223085167057308244364899 1.0514508116583323903828106257459643 GT 1 -26803.5534005250984237675827905771748812 0.3020212304862785991949759203404424 0.0110038670279965996543173741273541 1.0110648574054883688954109319559310 GT 1 -1807403558908910248414308797203633148337247.2601910790144427578672563485668259 1.3342757948863096817109285938867774 0.0901577779453119136405859804968763 1.0944840768611854904064844055949318 GT 1 -464661414027217715063882404717633483995628.2579077205238273968397360136214628 0.0498320485370788771650701955541867 0.0660590780094319041282645055647439 1.0683420954405879094313532895042494 GT 1 -14.9783253217930160150749479035993052 3.2695224760408698522324671194793239 0.0876016203112011238796202036165540 1.0916785644516058216218438532060735 LT 1 -5313363914049374050809.6818315164024180946469009720792201 0.9007653331588861198700516540649380 0.0206447319532181937366482620004556 1.0208608135701242281074672044617562 GT 1 -18.4300471983827807333879687469166310 0.9221721007657401134836524576990316 0.0546830706440657540498000439004395 1.0562350327341874864342450272571698 GT 1 -7054.0475352190362950411145566186921202 2.7863730389716888841639630445879594 0.0630404360999426653159294815935420 1.0672351440753274253850258267536990 LT 2 -1025552765035623801095384514740.1350815850230858395966163090129094 0.9888307483714364125380002395810313 0.0140816674176879619683507404190828 1.0141817548054733918446415350823484 GT 1 -132222604435562734242688124.1902345935697874425245255551769353 2.7028946336436896959602446793047541 0.0093617344381046647225145378978586 1.0094058309026610835509456495332958 GT 1 -1848812436271594848057165505.0934805158820534336836937749490040 1.0168033758311871686222143958018160 0.0865362355850447155124222382060569 1.0905115707105866967530284646091430 GT 1 -123091.2118029549256018450617955254654685 0.1717568596510859883678928686981414 0.0731507810473370006044643682337378 1.0759643814975130876536912123004271 GT 1 -981873.1550717673867745520642492468254547 0.0255663183285322925037370540208923 0.0166265643027134834810864184256373 1.0167663370829099045476798904217690 GT 1 -2350748308054124894614443.0683108306783093603097718507110003 1.5219597453531867169599162682749311 0.0941030815812573053627360800552926 1.0988297559919579649218620135993248 GT 1 -8435478819979389074707.4844117979135784205813412232309898 1.2459497753493301929059757718028849 0.0272673598283645778470160126451001 1.0276460134122768175458610551266802 GT 1 -29524016772557838005281.9630284393098707135700062316294448 0.3977948192089650663138335925670039 0.0969750113115970481392946541627146 1.1020050529819248693809243083637171 GT 1 -344650157825731971.4326378196031509564734700361624694 0.2685851559474129122816334404208482 0.0651890998631773933483359512529935 1.0674110159908689579927429649195686 GT 1 -5390877606531029.8847406640924299752625784931046680 2.1045621465279206145303119210170745 0.0767642038675267467262240314490131 1.0798706100063434848016511352246061 GT 1 -10279934.5969067517434150309484889434922394 2.0830543917034460362549052444566418 0.0759290499933579232317004106463302 1.0789664245668513926989189363540345 GT 1 -78161717066.1892487476095219518325160261914479 0.1453277561119069547247364204524156 0.0316234556463912704973014082329662 1.0321342752425374553942639993157723 GT 1 -139211682954988788.7279897148828587158644910180435299 0.1733201853406715006978034387844712 0.0141229418539458129118560203109634 1.0142236196322784010917388552751551 GT 1 -72161072505860163311691481446.1691435016790513794045045751685573 0.2666626609185603340893552708960352 0.0753953175755156906265992396347258 1.0783890031703569800655163249826997 GT 1 -1659594398.4646238962286058738321219803234799 0.1333452574068780362570297329074721 0.0341648178046890610265560348531268 1.0347620781721039028711612823033734 GT 1 -144533655676652007022.2573448951372023891127075685440299 0.7185539807316114786528234470461006 0.0588422555328744806508503753845610 1.0606445185180520331202423473656063 GT 1 -938912530534612284902507.6803874761272220789161847761365425 0.8131877419836173500910564205417386 0.0700845820148161415811514400230467 1.0726616453739203270274757433931949 GT 1 -4466705534141675.0613288445764770322218569034739517 0.4863048341875009916083312208125707 0.0178619517130176044701256064373331 1.0180234018042831043845038546698025 GT 1 -216970799261990.7087915547880047061032525837383416 0.3428427814267156172796821050695560 0.0207811735112758367254259002739596 1.0210001410111018643154057386511789 GT 1 -942224885146508368742239244122441555.7774777068903894576495541044201193 0.2304308388919861779433865053882314 0.0151434032895473313229011760381429 1.0152592355048652824556642826486093 GT 1 -104723811.5073147764473868871884230551494227 0.5875365449861499385485669830161283 0.0359932103005316948492961287147594 1.0366569411396851937133336632365541 GT 1 -6047472740102975791373810638235623.3025396803197514921799013801595407 1.8373065708428084275332641861854188 0.0503160083386200158575395981646394 1.0516259900810679255424796992605140 GT 1 -36658105164436611472737450.4434244222230877831692514302344389 1.0900226761749248983986705721628287 0.0239025655997371213301346858985518 1.0241928672236219637019036282687885 GT 1 -568133.5988868655966600335402219345042560 1.0373303804893435916207226353576799 0.0121799854162223324423542907902488 1.0122547693034169169494682309710561 GT 1 -456212098735353101182419861151.6484132982705358215090840695887306 0.1589980725788204796192135031236687 0.0255614797183767124808247501806651 1.0258938504991589074145814413132849 GT 1 -37518576.9536378735329209503452901079091666 0.0791336981890559630726770196930537 0.0369379873933535198238551502890865 1.0376374740271328314892745396217276 GT 1 -4048735442930179482711838027913689638455074.2426155988809374503609083677222536 3.6970493414607133117145503682290475 0.0562998877478964113593574840378200 1.0579468410059285384535327902348678 LT 1 -13657434176.1453729617924583926516583912940564 0.1980626692211896030897946103379495 0.0369078995007763737523485713210511 1.0376062326094551178476416971643454 GT 1 -68946040198702050426606165950.9797274420258760547948618974434661 0.9668167145558061693166460211104555 0.0913206828532193311326579954081195 1.0957630334656088763089821045046587 GT 1 -587463989999660214350246.2452336039770166072201592972323611 0.8557362254131932600647433944159366 0.0606350414283884188162777667725051 1.0625512080100226560797905729209110 GT 1 -77776237.9904028590444554617745825033759165 1.6703475119705651561235380856365059 0.0938032735498967726781084528346166 1.0984988591479178785140928996638335 GT 1 -1148273249391911507.5716907442637479866346481636188543 1.8022922936714487170508628541440942 0.0559969028696433186555698197967061 1.0576258319835896801469530363073714 GT 1 -193486856008023100274800449551408.4003102491427264495755375655848107 1.5579911991989033958882575504608416 0.0808387239186142508177726395615225 1.0842936811837909242393966979992723 GT 1 -5664792319989047070287368.1984730530860103512827843463213905 1.6791804363821540515581475073417954 0.0845805398577924706393228557547289 1.0883728923669622170312790312828143 GT 1 -23478422045.2063217867745820264271005847037130 0.6827995818193614348504457609744900 0.0264371634699874027856049452932368 1.0267929092267452497019066866319150 GT 1 -41101107.7235571966941096610975732387184565 0.0031634309719614523064139997660570 0.0885972006065149513069623341803452 1.0927703286259275745782362433076882 GT 1 -611854109392067167134569.4166838508165084894609209381454263 1.3895049930670642716239020738011740 0.0833094951066451228456634102475126 1.0869853719895573910606152717459741 GT 1 -53032950294426385.7719532508230377799011601916547573 0.9081910978795662112805718817886495 0.0345429563941952296120624909574892 1.0351536694489562829222626607927630 GT 1 -7785352813225102228542.8431043228365982998646916674176014 0.4412143409322010557530680007863805 0.0302867100707822469295210255566060 1.0307548285688747723544136644445031 GT 1 -226372106381824983.4196527943670017454438134824802123 1.5865517593657933920604232409743918 0.0144403229241030707212201298180125 1.0145455990975372286248823894391131 GT 1 -1489013833625366026573466096785326444725032.6667925110994709119376734323935066 0.7438076695847561904172989287432763 0.0325003540486399449049339803363650 1.0330402200200138503844778346752084 GT 1 -75863676368.2687672336286109380926997502436603 1.2227836276786834654439087988933073 0.0469000468631623569646312994421410 1.0480354982077558338218681441856276 GT 1 -287075378030605307347120963.8437568869906901890249051205540859 0.1311908998789772943124562146577116 0.0193136812931739346603798562005584 1.0195026272197403991370697130269907 GT 1 -1995956293097056166877990347965.1937353412687658043004969030383928 0.0009676540014951375055909385913007 0.0786896098547127117474218317890679 1.0819582852305424857688652495940276 GT 1 -150402904979881841345068061201493930210.9721249091047293788277605361935445 3.0430254001878187727064081289462324 0.0455382713381140005728320908417912 1.0466077323122932648163780342538861 GT 1 -843713722684054806752559142157449361005354.3607979506683285722012316553142955 1.0074839317038788814463670809828480 0.0145081357669357900183900538741965 1.0146144078947079419988242849099197 GT 1 -1359410725773230059181629925890.3081360127853669363079115962594450 0.3060221872820484372427098649134493 0.0549436610259525088241434946500771 1.0565107353035193446362307002597784 GT 1 -284350732323527271.9012966018760090606166079360371923 0.5395168026083507998802194826011046 0.0972615129738991153690531899747021 1.1023223721309266249788581721705102 GT 1 -460776495.3596179978212520644078120626304722 1.5366594581909920794821066158362142 0.0724876567345574253623831750953100 1.0752491764861958179895682036660751 GT 1 -207401550596134841.4861043739218825644042144509733610 0.0700512615858177105114638002888235 0.0574639101833307340913089989428445 1.0591810688104021998438331554405214 GT 1 -12663910380895868.1234561063165676433176092837690692 1.0436174154943458682696615103077514 0.0129474097928190736598382822145872 1.0130319580834561566102890818689894 GT 1 -122916654.9499175873299631958390692335681524 1.3707056725949684115147699231044540 0.0095909098065032533985165503277530 1.0096371987886988567830551789189995 GT 1 -1.4394521996005837614386965188824696 0.1993372515632436001733204915743409 0.0724786689283396950857169727586095 1.0752394863049962638601091644399880 GT 1 -3108448266347528270763689984.2694992457486669736749895026656378 0.1483955028211515667753043070391418 0.0383070178345269272931767482805551 1.0390600246122844502552097281677866 GT 1 -7639630.3331705317581708432117879534904886 3.5867952357780984920299819630275263 0.0244428453307908396152513868384595 1.0247465305079769069180617548720132 GT 1 -6769541064404938908235115228608236072641.1297128147435013848832424258204430 1.4777849980458777037539222258950596 0.0650210283863931133110819541566790 1.0672312401991864404125908568430626 GT 1 -323561.9355892393467148718243968720285708 0.3363113414740233915378638532012683 0.0066067234562983431785943763752879 1.0066286444577202645683994924314494 GT 1 -5258778157511029013844817792657876701694059.6485395321346086258605297124881270 0.4530531183288564438545166368290711 0.0631171809858610343788103391868203 1.0651970643144559508457671494180046 GT 1 -137946182665524307379531247050210852843065.2592337582849719166207557120328682 0.9001380246710818778647617809163547 0.0361375440361443648753315433034621 1.0368066750868468183241079415437543 GT 1 -33590404335298150357763492386675270.2900311627516314228807095596734590 0.0855962462911217564916216771094762 0.0100820917566326492864856537067920 1.0101332602579304357638877991967169 GT 1 -100579644281636.1102103891496565341601290194303331 0.3989396081639475393847043421534150 0.0339031221503568116801231480909825 1.0344911621690569153106519315417847 GT 1 -27906620369.4647424888346011821570518013699536 0.2354162768384561765301017863843996 0.0330091970778230584417882439272360 1.0335662945128755680114912412960659 GT 1 -18496812654780076514.3742399492125610201117365213689351 2.2194489558361135152635084456983364 0.0422917032338863868600816275370745 1.0432120392717551765286789844463119 GT 1 -1471878972797139786273.3304185600430058685776886108852947 1.0221465457354335572812460805724311 0.0758892858728104596912587867415383 1.0789233940343823509435880204830390 GT 1 -7659677500049629521228546063071360279.6679872887706045548111962878842589 0.4483451965485010787629394045774783 0.0187853427653439052546610293854998 1.0189640286389954525964046709176833 GT 1 -5674533065261981754461003297437967168244712.0731651325011672050906609591262425 3.7194470676500427737056852577110901 0.0342864542019982853547940428394956 1.0348880251862352855206333966601442 LT 1 -236274227612151450578673408262775631756.2603840964115423388945251412509034 0.8117841912753739181327569803708509 0.0981497097307967705288595656912403 1.1033067480062442745459773671617945 GT 1 -1520534589508572219798249626.0829015721578850303813517258763693 0.3756645408576770888672847865372635 0.0640549851644482470725775168889489 1.0661985490639025627964621684702383 GT 1 -2260441174758590022228895241278523826.1921595070274776600767872910807656 0.0239835733794811805001833945879202 0.0056751542781802795827353452965438 1.0056913191540086540553034682549962 GT 1 -1369423441352943038273424452200430249240.9516519754581191162231123975909726 1.3298599373800485961679753823341033 0.0911870410325747952329631651908330 1.0956159716897303899242181581515815 GT 1 -88279488834172196562235608880993.3248692103677845287704101808231381 3.0859548261927527604802903309688209 0.0612187997845073139657897575157057 1.0631728405407882227325579834152216 LT 1 -232638822253244448991704785493177478.9071134470409671421692202834116953 0.1032109151993372466117621160485250 0.0856475196127931161143426428890397 1.0895391359324060418436625009021293 GT 1 -1167354171653.0910639243963374185686144652789959 0.1623917382597376117666560794301766 0.0638650423212165576308230119269505 1.0659956273440271459144719839450338 GT 1 -496457968446775783863430.4600852412530483029974920173002857 3.4845889758802435192475718576795153 0.0865650326262665466864141178928035 1.0905430963126610070864265413757130 LT 1 -6164683088385114481.1131994380143906558748025738790298 0.8054136109401386233564318374525104 0.0801207677139756455008196099226301 1.0835128868099350453258962299329665 GT 1 -1369615078361263486671.1007376560047344885324304261449208 3.0779806556329199634338178136230982 0.0906033107155771207004067886482750 1.0949738781472017369354231242272822 LT 1 -82726073220467.0715063106583458020731824025194020 0.0370647807633272354777433661681549 0.0520801918419701974634031779023620 1.0534853708556991243891869426824617 GT 1 -11307513244284319966855192260633987565.5211309344304125911744209747681248 3.8148937707944328931676404582993082 0.0339431211239666587757909149688280 1.0345325656789756552767353442046651 LT 1 -49926821325240952763.3696155873450711309006824593302930 0.2206822165204986388766900881789463 0.0104901945565142271738629219707241 1.0105456044954513425595936080587268 GT 1 -59326296057892545796092242510.7289990011268010882784586851249446 0.3498669503574493526842987486051750 0.0816912943234231537141419126926463 1.0852216641978872762059200616706159 GT 1 -500327898460873101533975467279867.8180078635572134230034076131371099 1.4516801440578606831823807227228745 0.0226687504324200412627888432686747 1.0229296367391767699472868949976231 GT 1 -257003449144587918903213473824875.6839684082985343407274970971129251 0.9582739542014979315417593413394576 0.0823962529379080036959538766789248 1.0859896296290060147042546577992667 GT 1 -1487.3912739149042575073455768284000970 0.4766568718289956314969657882088774 0.0279460996154794494451786793236708 1.0283440229886682584677363815333276 GT 1 -1077775653513153908775398704702078.1816995277575477128277474534749952 0.5846069080778005403550278309292710 0.0544103620500893584553095558098808 1.0559465905651429272341160205127549 GT 1 -612154001874177305.3577716392356761392502266046791163 0.6354381046721983594852525422939104 0.0889943065068898931874052218186489 1.0932061320236948477789046193836363 GT 1 -199877035083477808999854286275073839.1940283851856680332241555984546230 1.1967370866482568331139762649309097 0.0867218180017387981745803363307107 1.0907147547647952651066036902632945 GT 1 -150209434812183965265059613045238.2351674611678028415900760949592521 1.6603381357258226359114254283158712 0.0701599500580131893196602319794474 1.0727426969363844080972341459201120 GT 1 -3553438899497761846476.8434388649557307913959959489847491 0.5187173633593386535606594536744876 0.0606014054661298800901076482254562 1.0625154015220731381484686059330793 GT 1 -95393825655050461512536820662.2632256791459945568149328645764293 0.6446395652941064034841633776396607 0.0806775706090249101107238126345391 1.0841183700733117851875117887993938 GT 1 -379955084627148594.4201766298222747243582227292289062 0.9170821407783729702624281595105189 0.0660468812377172393007040785170341 1.0683290360577227847181444164304978 GT 1 -4612396406504277960.9506365291009409149992795256798904 5.3905799382302179918023354148474602 0.0545978885268029197636888376095826 1.0561449272076856615290238853909454 LT 1 -1129704504226942432249675177912128774388889.4718130128029710361710636642125140 0.2409130167476103407595669881393363 0.0480620275580585423028809372628976 1.0492554013114114743547658861196520 GT 1 -40461735279315434556200845969.3375849251219982219468518317029646 1.1089881424581331491537568776073176 0.0451225903515260659913123322242989 1.0461723136013740728721804511457306 GT 1 -7096.1351949142963004977906791915153121 0.5312987987482500729592839474431545 0.0964172643618208966626371203002016 1.1013876007702622519501763775949352 GT 1 -54617886045084.0717058347260581598538586567220604 0.1317664766002451993153408028449545 0.0927035678653224476617470309833732 1.0972860552129658090262859560635483 GT 1 -1827408651595367130704.9075097693438503432760730622109620 4.5836955688090019933633361609914876 0.0032814049733618294891102385302307 1.0032868005893622070996230717748526 GT 1 -64.6513289251392853176893725331711056 0.1281579757745136023258460730043833 0.0618954749440627263385685879764763 1.0638939022226614687455256063769628 GT 1 -458931163138179946672763236.9533096289509633773644385386673504 0.9505030398755843256202192006300539 0.0272492466251487073420594254957040 1.0276273926383586452482590898475348 GT 1 -28102245615439388218330310.0697174294456876914579203967682673 0.2091413519356315064156220997567254 0.0741553938103943665200238272823356 1.0770488703082230602242918660215687 GT 1 -3273249702328239974164174501620807399.5171804748322942200012894147996505 0.0350209246942037800875161423764269 0.0986594005611442225996693327623598 1.1038720690122795495751341579960046 GT 1 -38819.7790846112601420074360633608469919 0.8712648756394751426216620306734087 0.0044533765358596769666969560356495 1.0044633223564519511168865809751067 GT 1 -149151617788075.7779459147873276590595511978993363 1.5292003348353153008919563331530849 0.0407970746787625434416979324427451 1.0416526255224014595196920451067555 GT 1 -95095589562838992.1907649081382537164084566524201055 3.2385518523552591425700661747663778 0.0346915508460483346348631902067274 1.0353075922870261597600900960090026 GT 1 -5687.5632134755834327466843624957090647 0.7101156745947734235911717843827798 0.0427273775965074531619800242525834 1.0436670562025001968952282713564864 GT 1 -12497342418830054334129673707033114979858.4510432311817338767483646918545122 0.3794832328909038469296441755888231 0.0499393090952140529154009515437443 1.0512294112651880713684195654159459 GT 1 -176381219042546070975892372574887772.8288848504994964199395494058326219 1.6930927672813532756673069929435477 0.0788275097590809944231935610331165 1.0821079744418711350807900427223292 GT 1 -35521212588972430467259208161834789952782.2272683355847935368661026979886850 0.6587668236089945152587015479742073 0.0369931934395838297815361797511094 1.0376947991296380494418007500847307 GT 1 -9071771909771356691498906.5036597312499524952605071342567492 1.3469283123897223318149312594755057 0.0541831005784971569195060412231114 1.0557062810725029060269625439409938 GT 1 -692184465152.3263997750772942445962591474108056 2.4576466177869939111731047626085777 0.0728468064493343327228913927287979 1.0756364697335623601381974898923098 GT 1 -619429834.5238418428410300810167664866715578 0.6891806561930394368563411041452668 0.0590268073972668424183789488926683 1.0608406280036876587648481160174297 GT 1 -244563189406866492802055443112854225139851.2913545270500187082841028600577133 1.2840620914127256657883641624826086 0.0632591657172228971688537425069310 1.0653486259489216699653491492361810 GT 1 -1539132.9294346927845585840443480744953889 1.3524839785558972546317214301078723 0.0849011955212207846235945304381640 1.0887232364994470207740872248814038 GT 1 -1001843080474.4952419864661806305482484619194556 1.0017407107424205554240455952882334 0.0012665857344656619320101075090466 1.0012673885321233423870395297909752 GT 1 -997081341633571.9191018637875512269130414837097066 3.5692908055373595606655738737903744 0.0321511129899027378355622699115255 1.0326793123523973639275745774231799 LT 1 -1814.4633669343366490796262994866542764 0.9422078014388192585970320415329545 0.0035437234920393185693867593436025 1.0035500173536695378006102919777161 GT 1 -7579483357548427491.8171881855447744036103709797058269 0.0123997195736692653828947291431928 0.0265301188432204579504391344201045 1.0268883933677761380331813556174936 GT 1 -34795134886750168497346.4127257735618602928868241383446883 1.7764464501815057020651875658547717 0.0093030857466915188602660776402064 1.0093466297215305439238980398722042 GT 1 -10463222.5849148624896915280752895051856717 0.2180146701092819348458035342194867 0.0104812655373030818649028121270885 1.0105365808568012105270273090023507 GT 1 -1229363602134774670582321669758325346800939.3217007987120363388972758265057636 0.1563986026781598665416557639826739 0.0410047919404791267050750700189031 1.0418692009208587626690768578083016 GT 1 -81518854917830220295916207.3010607322335978726917756887465677 0.4348383920955402763421096761392056 0.0125269231087534439361745061928329 1.0126060464861256265169892722777130 GT 1 -40328555.3108130477659650708547582538741016 0.1454932132080787843252953670541265 0.0952788958357546763840923945081385 1.1001285549712236034080187327422716 GT 1 -46930600159706.9487286565597935486713064417580133 4.5999082143375276358877795096080735 0.0541148780481312578200440793958159 1.0556341528730035505531007703497470 LT 1 -876320217029811818384210430741763325297517.2805885212389714923632167298941300 0.7466725040508133514972064477709742 0.0161453939957292580498496040342576 1.0162771509729320328598205947358345 GT 1 -2059598462924872772.3943417999935363353051301325505509 0.2725790560270760526577386416067236 0.0401872196792763171879987898758703 1.0410170340384716226529407829129992 GT 1 -2149452824741.8706699852758614372304657441927565 0.7273631486870277448843292640238025 0.0257142871745105378179714395014084 1.0260506786987070564874921922179659 GT 1 -19.5422781531679867533723747518728984 0.4199023021981373157351517157421747 0.0598654998050682939110295012449180 1.0617323286400574676387524507528665 GT 1 -2316317115447071854543313320947290546.8805872761419627842299742588189680 1.5436483003358486302009509985676010 0.0185241097497409984414160007835812 1.0186978297545301614635512224049727 GT 1 -221193988856242.6702181577541166576955647511224297 0.2416688103106987010019322586609199 0.0697403376397168577750159841306614 1.0722915249667969688865707533239829 GT 1 -457517565434535272970466.4323498621518779744650300489602281 1.5002286848856825316815874952370210 0.0481800366086694796346949509737863 1.0493793761598319302291303795006778 GT 1 -25376334814866563878898802956.1146348300544903224526027568296889 0.0756419482357052740335401870478574 0.0352633034730527268459091180686536 1.0359000682143472994932262413873890 GT 1 -2212668668027243383410902252427550767.2140836534543457528118324002976230 0.0192915708413104542570642178213774 0.0924815716426142008414155754178848 1.0970414063194083487325544535283691 GT 1 -19175.7898217421661596737415358781639838 0.1286500907886880530005511716048218 0.0374553633743763888730021852647504 1.0381748381805843632536386224635907 GT 1 -727554243.3176245859642443894830798371095960 1.0153852729964848595913447919578189 0.0984447275985528082466078382942340 1.1036339266248472370645824681170989 GT 1 -11861377140245514344311878288044801845414509.1321942099932576153798144863131679 0.5965979539302136778617724521082817 0.0314062540212546350642115883947418 1.0319100057974859821474884902160475 GT 1 -24306077.3380561793641331225631117595393583 0.2209818744117981781350586517478685 0.0743171799901366949855849504674734 1.0772236299989138720913155030010143 GT 1 -23144521802943385352714510886.1366739037731659096627054304716216 0.0165402934518503373154580243450189 0.0304825972023752493155057549065803 1.0309568541793335330150191101879562 GT 1 -4835623.2181377527491488452232630574782514 0.0991511503022321829752734086447747 0.0045381064130610975590121746677102 1.0045484348775958237037430869526023 GT 1 -2432694312168887999163056986482010273819461.0492120985861269331439226487139910 2.0622495220740459118155988012350043 0.0299319531264117165417377997537110 1.0303890585291336681184763440708506 GT 1 -56.1220731029539310561723701547280954 1.1393953327761282923942654125574032 0.0559744420452603950089323663758089 1.0576020390985362794129164941680356 GT 1 -10250019479.1565882229491807358294564784747140 0.0923542685857825211833989697225796 0.0109728992091682450543784017460846 1.0110335455196598348932158930280401 GT 1 -2167879193474988327815194687652636.8869452511466060426976047108339596 0.0027492873148975586605569588692199 0.0837635317168941674360880364592150 1.0874807944763015212173075388692167 GT 1 -2717681414033937913.8273915430574378123209535823187418 1.0875465816089305955548264327126103 0.0003684799832991067522784846308444 1.0003685478887298597916881282258785 GT 1 -981663999095706043476065363965687480604.6497721382680093081570426563228804 1.6274139174394564290754145063520517 0.0848453309049245041502202796355851 1.0886621907294263855354408230416741 GT 1 -44418781024403491.4008285335771151656298976157712054 0.0612438212597591886483113144007595 0.0046713123726009324677990760387230 1.0046822570495466012469575754071146 GT 1 -9787349244355368815938523902436714088234.7094236930451348382833670536405053 0.9354698450135820949579071436132484 0.0502386925388760771109611131260062 1.0515445812615327097526014654619102 GT 1 -33396972007825126010820578845790.2452532529117397108878445254354739 0.0788169532935651800467723479017224 0.0578412120421460178766265325155202 1.0595814539001109277386905530557321 GT 1 -3689751485007188656614582118750434363734040.5772616110984469027230016538789785 3.2108507970200228194098942796573653 0.0658611377729991782407017817236689 1.0681301770430485739104688470520931 LT 1 -68510025253141459.9114484543178621975907347149447192 0.6923512426227763554066444720678872 0.0702732121113064717333374095216784 1.0728645124593644468139860654598535 GT 1 -76963760885.9293138441680452320922205814717338 2.4897235168232210295201995560906633 0.0675823265852586686455573102637071 1.0699744172439092733537870490185450 GT 1 -4720966690.2529832131690765148585679319397602 1.5409951356844156987078618122520141 0.0212402746468672188297971098180244 1.0214690952226515544374815927599052 GT 1 -102794092587570606027245046.0132090733913943065824299484571065 1.4375438238358644676154870273870992 0.0285499043438441225662652932820693 1.0289653798256198443520374980189475 GT 1 -2059700185703.9520464892252331115980171735002130 2.1542626551101408158742965380124014 0.0119699415475820414551089173326842 1.0120421581622195963113499462876917 GT 1 -51875861797212622179598676736727.9192622442472616844175932964043573 1.7400661498543981320163420347321462 0.0375729090498612472532306768400462 1.0382969653515418203285402034501409 GT 1 -2510346860696378.3358461028014693442657686173246206 0.3053031064659056182642192044610117 0.0675879657579430497912958336254197 1.0699804651663133882964470516972282 GT 1 -5.8359135457850072163012291215979951 0.7453246446568399127468160488924482 0.0534758202864730451619708306217451 1.0549587622105415399048243719401080 GT 1 -27440160855851157923552754102202285684901.4966353361359030054739018018594609 0.2672444415228500807616746387634660 0.0260494128275783178723313494278378 1.0263947084823359698992257541980423 GT 1 -9.4253316277873490050257497735214230 0.2375958570707554339774222426398700 0.0081224980256699557043958056353408 1.0081556652352510837824709757455158 GT 1 -12871861318177180010.8254573557128666018690651017360545 1.0950162176151241277163674090358682 0.0209162754514975320387125579831325 1.0211381196297422558211484117529217 GT 1 -104675937525336835.4083133317842909253876991680317411 0.0188755033040314404369537045715158 0.0136001538444651789782091968427148 1.0136934830976119746389687597181302 GT 1 -27848078466845346262194793214397205651758.9880103285477908803729358371569978 0.7494012614965212877549955185930210 0.0293681982494426894715017680784047 1.0298080775049674268299662283552941 GT 1 -559878761487035545.1318158024538812476848643232189078 0.8468464108057246752270738464165834 0.0215580457525103051312361108939473 1.0217938150629698569986481670986742 GT 1 -158111296879966616378063355584281386666443.6394823859324237957626178266589438 0.1625209691794245967175538722999372 0.0817876698750590928174640094616263 1.0853266186741449858715500875454134 GT 1 -30634202289025.9143955251719127684486104292040131 0.2145083501478240742618960852807525 0.0251479860643600053859648085603812 1.0254696000829583784315823585225386 GT 1 -1281663071367296735631138816005951622639.4252910183466829402832364360710062 0.0310766785697892002947073975569926 0.0957407744390259709273452841353990 1.1006392057568827682493799734927461 GT 1 -1805129947476549452686048016166123810767761.1205854332207731266522802065234725 0.0178183488143977225142705835783513 0.0293615022401907293889571775400717 1.0298011789197949492754604876039661 GT 1 -1726323.7964664672050888335139960518280714 0.5959924152841573952991958748822963 0.0802118083595186414913673317093864 1.0836118619229725995645024476025650 GT 1 -1126005.1650139810470153107674826269993057 0.5955018783576007475640647644000502 0.0723316291009487681664033826798433 1.0750809690088484584727247472592444 GT 1 -304129884.8392759172231221839920089714705183 0.3255174161628400854309859199663751 0.0823019097536980733885356573529664 1.0858868201811264326876183236713639 GT 1 -1261413625160490.2299279323563107921557910550349081 1.4616144083874549777463103072507417 0.0146981016513331870760980035601659 1.0148071889848377134947392729700449 GT 1 -6830763574712639008659403.3670666390629271151499015966635642 0.2945206801073774537789985174573414 0.0286347597855068798980211946794278 1.0290527328953120683637652061655091 GT 1 -1.1963696571031968959713777152452146 0.4144977012193266759534604007615402 0.0448488367452755886260639205768762 1.0458856648967331274565818255843515 GT 1 -3760582093976109789589679947693744.1012625722767547315118866624674146 4.4678086005359205887570422495038115 0.0292711477571635444239076334026060 1.0297080955751180115508985116933710 LT 1 -474910755835986.8022258558196975260793907848917646 0.6821598468219639845047579271843089 0.0919263112293061985872580121555857 1.0964297486399316127191372877348495 GT 1 -839785697687604813.2088589241877135055349028689536046 1.1274813960069847525753963483686316 0.0041569671895939481589483081711757 1.0041656313972559226854767227095379 GT 1 -169575656521848.7138783614521396215509652320646702 2.4107400403400874137234611677471231 0.0459820311947939884662387063582040 1.0470727724856483384327760846129256 GT 1 -105.2557036064148587347188023041608616 2.5654948634489698330585937195365135 0.0374009117490413468848195748314765 1.0381182692869002790647730222126873 GT 1 -1.3480241245184203025603121556372449 1.1989687985419167124054554609628141 0.0830409209224326385233900090882306 1.0866924325004850319817519259731787 GT 1 -6548216776855.3926675646969795690528666405168401 0.3467681384115436979686006693908598 0.0717297584949733257626749490900180 1.0744323800705594178563481399737728 GT 1 -2267603872110271153906.5631320143376998589575368871919612 0.0522246999892933963927900097645553 0.0727163336741894044047972141465551 1.0754957555596983825073979305556814 GT 1 -1355031758249232935411.2731715462898012797482989719128463 1.0231207109276295415792817854433826 0.0089115565624827237120934657965351 1.0089515019769608768484998473910076 GT 1 -246202227732562437435527936478771.1866939728424997572565843734916182 0.3737393259560653475295796861775470 0.0599318401213366279804311864827846 1.0618028958376310176148181415791738 GT 1 -91759136313359516550983115032070556070.5236698071010865649472472053652877 0.7023935170894143870698733172429430 0.0902246671998977901131544183842805 1.0945575969857166516688641070436584 GT 1 -12837609954984629934780330507604575669283884.6251048822718435513330089035428295 0.7607257385083158661706678411107112 0.0088277919615548316779851550598584 1.0088669877624297246677972156493236 GT 1 -458937741.5979052985704273765370444310546153 4.1316483588734142476257611204438893 0.0905409465736541917773047708420376 1.0949053030090168664187522853826040 LT 1 -3730286211236687623146661661319145407885519.9104600465567051546340281970494156 0.2300771259013353203329238955573664 0.0970102496996846035384716124517560 1.1020440763490450724267485688831816 GT 1 -62678129099367391722.7888667393857101315671521220186977 0.2997679841596333886585616977062126 0.0283814619311728251289539943374669 1.0287920020970417973282844670486678 GT 1 -3497192861217703007485.4137541340284761432930368418143664 0.1095425411154531712449262168195183 0.0239160060826460367458710829918210 1.0242066369303860637396195170808746 GT 1 -319916512834.5497163118096666646510580519717839 1.6975868272190919775472356436479783 0.0773048367283685526767830719425965 1.0804563663408863513886248974910676 GT 1 -3772660807330693898776.3863398446066687876084243940898154 0.1145280046828009352495790243575438 0.0618445651724986936778342676920308 1.0638396349327709044939561542835864 GT 1 -88084.2251821704828248665376482276754630 0.6524324872021636275188979040173056 0.0918818349021603775002823575733664 1.0963807710750780139780870651616744 GT 1 -20298542689039805410646160417707453.4397915506477800543387582545554056 1.2704607550382247178480796628177302 0.0995944040700162141364537948033462 1.1049099550310851086822224464667404 GT 1 -2.8457929751774722594232565316390967 0.8954119327989710076187396643966503 0.0111878386473497575497937095675327 1.0112508932517447138204007214345735 GT 1 -7226727982356958688188052706.6041469880403920169132180419046183 0.3918879160915530288347259045135557 0.0483479757354254794017064173293205 1.0495558317402458748991620481601999 GT 1 -581604178.7539518110728770246539830747909415 0.4375461743208264238233635044792949 0.0200172728061488999334816236106375 1.0202203327852439287527486281793619 GT 1 -53215932149652736993667.9788803983274327733505934276980397 2.7691025922156748159660799455195008 0.0071562981034766017223175983321424 1.0071820272284253350763150651266990 GT 1 -2209964770254012510657942417493119.2609803187767287874598172173537834 0.8998685852655472157814129321240335 0.0362985026826969744923672431557815 1.0369736824088635378914428780568129 GT 1 -93632415416462.9037367324738030225143532150045025 0.4642122735528834682057107216805345 0.0674789878951108363184187820058399 1.0698635946296796767671252662738430 GT 1 -335674778886468315520043281132424018407418.8733578305846300858116223716213959 1.0974305861509236257161197042056029 0.0359222598875950093746489294674766 1.0365833443529554818152922689820015 GT 1 -3871655.0382253821713472454977021125871671 0.2572801026991791783897726252761994 0.0828921100100170579680958310490087 1.0865301582594110660639074525781017 GT 1 -1713243144095107.9696589627418811355698176172795469 0.8366003068227297923061490358259683 0.0363268530285528118203793699991386 1.0370031010233938167016228988209134 GT 1 -528619218691605120273927484.0471781820029846139871452048875590 3.1059123561742256299036531399089846 0.0324929430813143710472454943094781 1.0330325601319993872001656267678420 GT 1 -8521590031847993905783338815066727.2929057362646557803033708045802680 2.4779769004304962053490076706089845 0.0243519885771287474684531393887772 1.0246534016506874105115177809328734 GT 1 -47989236.3636679001900788083946026246195184 4.2702225659502980599895550255551580 0.0793411085067556387587781743647218 1.0826656788724507700473800866104736 LT 1 -10898.5807280443637767335827357065413735 3.6250348875295936244077605918603130 0.0895914953478521642108880377957575 1.0938618739883391670790991626930290 LT 1 -962.9641881403081417525953657698439789 0.0292224525752679355382318786348401 0.0119588702489398674388954269960076 1.0120309527980521695293367989226590 GT 1 -475385200588310880055724676506.2666191264429305821920794429267823 0.4890173908990590068984859556876608 0.0058786613380911352256618232180394 1.0058960086871925449627066953107941 GT 1 -1320508783299588861372153422521058.2057317573420552110913950041353817 1.2320185707201919699386764910043900 0.0651648940688235604071012379241217 1.0673851225390854389085724072488643 GT 1 -354.3810055606283752236652715790273222 0.3316699147516183908081355166169820 0.0336807475175128750056426202867923 1.0342610102568108574709556158436889 GT 1 -1816942099351965133311110421608795.7088763876397420052738573363239406 2.8312827128688561650398549275902465 0.0932470568805115965730344010497159 1.0978852550350480623056858771658585 LT 1 -11646561326.0593490225717765829758181175673867 0.5399062214585805919392314217567570 0.0469438155946169834772317738249639 1.0480814217610265052874048664346469 GT 1 -423002150994.1018117845170613811505706915002302 0.1429654959058952984192387653226913 0.0470577871725958425512398680592917 1.0482010142835387662720607982901347 GT 1 -89.5397124339633631105009929903926575 0.0866959792148836098807792779458868 0.0500713762447161783440142579410217 1.0513684300993423576782954922377062 GT 1 -25097951767.5302452098717805237679561805746596 0.3987522877811119421209977268969231 0.0143424081596071812825430973793882 1.0144462546304199644601032537551697 GT 1 -1443183940009255832960758938825767891574494.2675332670586654609998413155950885 0.2316499195083065558095521474831284 0.0960739018149331786884085222470203 1.1010076717269372575586367547902869 GT 1 -680072221.6160908950204310111113430118910057 1.4564762249143391086280349401072342 0.0475631210011977060145032679448404 1.0487314429448144520822447088145868 GT 1 -478820685857817473962467358806925823.9013596575141557543237698474012782 0.5897369639859767794840917235040976 0.0425482344452491147124220446953353 1.0434799345959570389098147578449485 GT 1 -123489878233272.0027011521463650788255444287190926 1.0660548735002842263546085704522646 0.0357840618473709596712495640699515 1.0364400072233280021246753164866227 GT 1 -6031226569870.9915725012797061977839770304989439 0.3066161387708262667046117578639447 0.0564727903221064779713644303260100 1.0581300755031029550103028105573226 GT 1 -3119319887787078.5425560007196227230016835760941177 1.4805307302694123839259818114124787 0.0807258160866322927966633667310295 1.0841708508374656457047278601996593 GT 1 -7070.4568559187677962101707738713115299 0.0206632443541672203846067865107747 0.0823976927983708834018835797152315 1.0859911987830086780933003843080489 GT 1 -101.0170662923251359660550908176724507 0.4651755691935767345722103956732372 0.0250389128674743266115694955658196 1.0253577194140473938397525096022423 GT 1 -482065516677611892091181442950664555159.7415180441436997976934644051067201 0.1740965460045490745355271564529257 0.0026126128892033134401326109165080 1.0026160317182739168940765511888496 GT 1 -427145.1391540008941739848378679179214740 0.0715101687430115679979149696699219 0.0100354300939360297963665834919222 1.0100861244675790075938024813871506 GT 1 -1934676825497362655166033931.3311436414743905034137004124300653 1.0389160592725029318584480073057200 0.0012008853074376948795612997674058 1.0012016069479947197156174099953669 GT 1 -7911685704003321916318.9587800592683369540104391307877504 0.7334570098565599593442100420207237 0.0875110228980552095651846116166503 1.0915792734867326029036369914878488 GT 1 -107929167843978531653302706364002456999.2098185799588700440017366250472897 0.4264454088727148315777453053159820 0.0521760992471764883506338318339327 1.0535865526819526477743055336757961 GT 1 -95254661208714154366425447849343360494027.9773323087106049586077870691153774 1.8867901849640532368261833730452665 0.0715082926813303129847454780061601 1.0741938294961752847909933260447980 GT 1 -5361895767996890584006666730790902862869995.5156166621115485829469067817020086 2.1867781532465690673065798138996657 0.0246221318766634080412181225431560 1.0249303260155491100686294085741480 GT 1 -43985667.6795017782520908548849258987511931 1.2053087856588808542715004572400374 0.0883910696262005064839017434736328 1.0925441852854025700601338744579639 GT 1 -10286818789333663.9629803003409875876683081328470794 0.6407011950717856697889330941244438 0.0509549885635809785293054124160757 1.0522990511108837189484589598087848 GT 1 -231257521950002291132778096841257679.7013438842496803617134513824184001 0.0403535774613069835144505175431552 0.0305570714828187912306705116369646 1.0310336729561567437532062353137096 GT 1 -21876413969683012665606207508540110763303362.6960272946898615304078653189261231 1.1890398439177934874828380330697632 0.0981596986503576289794165049514199 1.1033178240961317261745019518941988 GT 1 -59915227483853288221061238228404876354896.2526275936083341706842867223157835 1.3968899885888371667253422517799695 0.0768950202300034884804926154604414 1.0800123133846179509152547530669071 GT 1 -74667862846284547271911977059233870715532.8976659170435364579421920088678649 0.5603225176008537991250141743780058 0.0901888809115040759526419607758637 1.0945182624563117040093959443241835 GT 1 -41937780705507285447223944209232.0468786556037685366398348832040396 0.3124384145353454353643374878894610 0.0819508252452777501036087975958647 1.0855043225253823419139750523198172 GT 1 -4123387224230742965426365307776.8729160058782266949776910495277227 0.8690128195101173452199201123387127 0.0301389427179857856940892322849924 1.0306024576599742536665894406495746 GT 1 -907352629034454233859613580.7782318589967417069418753331008072 0.9747928455344814605406476536100688 0.0138616777661934400122569515331213 1.0139586479775130524734506603840134 GT 1 -7372922647534.7410950538510059287614677474169120 1.6024613493988039077619864427285725 0.0150676859960069851961910886574429 1.0151823569183672235268762773999216 GT 1 -15392534472045161604723537458759632944128990.1468716195197770748995153887321018 2.7761787738601497804703568057067157 0.0512396203913281363440674430277506 1.0525990100331466278870144013149883 GT 1 -1353067328653.6578659542761404002788135601853658 0.4332349674958471669919132841221912 0.0857067718872139429429509922128110 1.0896039404750970007471248532124466 GT 1 -402267639261251883515007.6505657931472914433620833375443997 0.9658466154277958207659247954344127 0.0508318839806702278260216923052969 1.0521693453562424147238208506967854 GT 1 -4714873.8472251614258327719807904701826614 1.0255907918772625770506286893053995 0.0216154734160744131568047490817003 1.0218525097547508012535377304637847 GT 1 -1691614808903581071.4186865792654175861871406053383695 1.1918067321039401458415656931769908 0.0036046709572965592396574745264284 1.0036111834385967710362739154588250 GT 1 -18027965138751959741713632734239269528.1328757688823876833851412914406162 3.7112859082275805149009340949902318 0.0115974570287265583241240021036393 1.0116652320550534037253776840241877 GT 1 -35672118320827956209913.8022038056763214281765016232300857 0.3975063144752389297370099087365749 0.0531741009185641008602914509906516 1.0546400473845385127905332557231472 GT 1 -1575074778272.7379714740079621995867601681119308 2.3586795944504666038824283200077278 0.0457179113507549660862446782395996 1.0467959608336297878178077949712869 GT 1 -87253357447738.2894404378054963009626265263042314 0.2623217348151012873864590438586541 0.0449221985732470930006463002461939 1.0459624743571318235281516567987173 GT 1 -777948001095991892361708080822364.8272166219644607788429819619369592 0.3208870594446007245499590800528004 0.0843254309334853978911009849343382 1.0880942513775992778293508822281638 GT 1 -15944987729909508863198486935364346712037246.1006462264483599039581880085840413 0.0317341221675182277103416688677990 0.0225551484915210517979479955975084 1.0228134066083046503087791690682336 GT 1 -7489321239964544975546557897516445.0516232898930053161249646504615335 0.7732217887748480094092152316723872 0.0938114172739308530745965727796357 1.0985078458948230793403270365144970 GT 1 -234401011.9961767351115683618755923003405856 2.2110563550101245553252699888198190 0.0312260469693146139747504621754583 1.0317239729111610155640409119741787 GT 1 -128746337170230835.0748177362244786024637594301726251 0.0961716423369241210262690199555719 0.0307995470426752693560524203866128 1.0312838226881166891140106906044993 GT 1 -1771780.3062998969858852141890036147433963 0.9917149921113926466596488920556275 0.0919549068754102381365336740738097 1.0964612395824750960911785295253612 GT 1 -55543012890789834000603642288926.7757195494382806176083586819865455 0.4110953297624888981973601065483404 0.0318318988406536597398466762893209 1.0323495485599384697050902854099076 GT 1 -16753708995732165461530583374941.8852729735379928992208122864697943 1.0991148697170704488664676288967751 0.0963597585545279366912950931081806 1.1013239608010480860532804563074155 GT 1 -5716919993699976.2504827852929194416079761760793903 1.1264734499796783791810374015828492 0.0501963271304019371904441687495518 1.0514999758819643958998087262117406 GT 1 -12209.7584688293705733980398496856461390 0.7183217729730805016165059616497880 0.0073038759828997554237132598891921 1.0073306798797283703006668036571071 GT 1 -1149755550711966548061852394670.6117823957001796755550681311777432 0.6608067719445506390759485039344439 0.0101305924452783734221386842556346 1.0101822561154838266921195913911390 GT 1 -114146976027093664252942201789878033383.6318716073732953667676631534665343 1.1025422468019246858697805694847757 0.0831546053202126651958100994712067 1.0868164199806690369828105763081109 GT 1 -14534.9055630878978862432368541021353524 1.7298632837857918625011482989561244 0.0886898797002653810363047327891185 1.0928720221979969482148242179208803 GT 1 -6000334674109936564960140887130.2535066111719751134384607293883915 0.5829624197301364900901017280851375 0.0172657105070521326616452911593439 1.0174165010781624398184103378062486 GT 1 -4890819.4365191661330007203765580705407251 0.7028804261827980144612079766672845 0.0515522523679108059896295058370445 1.0529285806004697898564948815941601 GT 1 -5417207641656914986644320239.9049017120736269651869424352297099 0.6147258834497976907022352318923641 0.0672913170980496280472259013779446 1.0696623638663083994297417370936221 GT 1 -50872962899.1850821174326528900997889236890167 1.4981695877733010479850603210741866 0.0808226113258860481268755828225011 1.0842761516686504065679454420201047 GT 1 -6895342441671409078.2266113935626398988080337385164803 2.5146421386699134840626766332577868 0.0915289265424477707858130902260740 1.1005994858039701839483681084834288 LT 2 -66555153157172330565000496029.8952919948863016223850410086677337 2.5206172084028969497504201253156768 0.0979799931580508165099152687521371 1.1084352992606441278779131620666204 LT 2 -2055724572009561262916730649193180280787.8022947631029951493911478893837403 0.8800435536712623699320576003476339 0.0408191126159118803864160164299105 1.0416756010469074010568573857390372 GT 1 -1125804024789635181152.2460040474765874519009690652794250 1.4836895851999051605954541880453021 0.0177928293229726158928906859122520 1.0179530247754327749343924402193606 GT 1 -1.2886664376660826754385714160925681 0.3606639577924759601590321870239682 0.0948803484261054798795869015962160 1.0996881323375439832225310319595228 GT 1 -1887136921213261582265746571572979.6994100152726758712966521029851149 3.0543744604999389350811315253932231 0.0498409258771723022490199475665242 1.0524327888406395090392653485388345 LT 2 -3835745442763402662629.8467739653579552779615104402641821 1.0470646405213027737170527532404224 0.0756180500724738194200693163755246 1.0786299270300953967145869678545896 GT 1 -161199692868511590460.6268256010201468149942800281483406 0.6232817137302816416461311404754810 0.0314836477031612984602808145697918 1.0319899121301376360754652008293042 GT 1 -364126200679925166846654023552086870.0527941424297037638029023037626176 0.6692529815255835397424294479348303 0.0991408175755982716239880156999471 1.1044063239053826416752216270528296 GT 1 -87412656718.4834408379308311361483320822662691 1.3377796869754007083484226932337475 0.0163552023049105734102453559150959 1.0164904250502528208672926320857870 GT 1 -8875712507212826096982972454621.1899277857929693631247367795769449 0.3292196084901151627028469541839717 0.0854809319923347435097283101931682 1.0893569606221002922722590888823267 GT 1 -12182399409127147606306391059879076641223.2614878015725526942688588552040475 1.4245872619643613942259949473683878 0.0305315547077657616986038382774998 1.0310073522326835822401458838835955 GT 1 -560977.8995568689481710628687498180862410 0.6609903194950886044313176186617727 0.0644358163722785199211990896563112 1.0666055267195821908585131023419498 GT 1 -34496160873369.6717696843869547956089680182173556 0.0604696625586446097250542905388931 0.0353707938759338907613610044758301 1.0360114938416424458265218928132054 GT 1 -1607738850705333638015459648345900257.4580290809047458357917130461581160 2.0394119730250618763990686703040295 0.0005211838270082130470249656413637 1.0005213196905076037312068697276059 GT 1 -320963990036326585390.4604298800924831959235738877676110 0.4246106535701226187350002291543405 0.0964460799808390530771548697182090 1.1014194916833599302481924597732632 GT 1 -528.5219515322379873709025824686507857 0.5273834613345698920208449792104709 0.0377376179826383158530333509662211 1.0384681191251686857698226728820458 GT 1 -77053468483189352837539188003.3654926723638825375199841253054472 0.2171432513600122500146338421506147 0.0359798154859183605065533081281619 1.0366430462981786181636722961907596 GT 1 -5621666298.4686695418542577594777144056989368 0.2578851237784263860132264156786664 0.0509920071169765545147384332315813 1.0523380579808879029990480130853336 GT 1 -123010350648673892858415546518.3892718762675840812125702573759466 0.1856848945655499406884874733011559 0.0369880747608035569419487358872553 1.0376894838347286358091140777341391 GT 1 -30.9419716856627428771575490592547079 3.8146482608618499803561109799142216 0.0931841537883398099411350950729870 1.0978158856319495338166668408823617 LT 1 -3426530679665813073.6927803836973373734320359452243074 1.1187870026721082851935305527511402 0.0195060174530997515881838728679060 1.0196987704916460924590509962527393 GT 1 -43950141367543195852926527817277.8987350574632149847134424130472190 0.1714508701106373363560752721186619 0.0584220742263132724773037744140086 1.0601981666268345844493016183772036 GT 1 -217918292913832858.5747078151086781994358017598786450 0.3641334506154361071221731850848689 0.0991720356965791377106313873871889 1.1044409782248527981201040539622041 GT 1 -61531828950610404013168508300547.3286205657036924565931427236001684 0.0140385003847065591056844059302722 0.0265575298337499470812057680956719 1.0269165517905347928758240745991680 GT 1 -326481933156.7162814240438984358822201996640247 1.8530803471236858866504149957060913 0.0781608495990347802760177173163366 1.0813845279107465372319312764788246 GT 1 -1077129118692900.2128357390893489840134380600403723 0.0332809619283604148740564720994455 0.0786288891566083037677432149180354 1.0818923805171193503090261283548474 GT 1 -2.9006685852812256411741950174859074 0.2922532158131991282496653355383274 0.0644979722465358906026235024923141 1.0666719657091830474931461414345415 GT 1 -3404280223474977571186.6814444795219535590916862488471213 0.7262495429573007861784674241075071 0.0410602660660623862983667800646217 1.0419270486865823181840358310246232 GT 1 -116172883577050055898.0071607585535796929754485125946758 0.1250351719634334059581256942360711 0.0682157970985802881407790915798237 1.0706540330577883722765407960476623 GT 1 -9124154.3270630482065336145610392779459393 0.8834992442132274079277446233257809 0.0665762633484553838378795575148278 1.0688960154795624572507740993301713 GT 1 -3142580.7905982399152583552861932933323560 3.5788466062396617133720507001720109 0.0214041795881073813494783992629785 1.0216365711234687498802336168142268 GT 1 -16925168819266396895.2090331270403500784800774741773653 0.6624517004233928865885404989084720 0.0126697101970282350724483506734936 1.0127506554035821944433485846910074 GT 1 -577327099843410060453329117306844.4251545441040046411665139759633091 3.4889126360027168631695346001535787 0.0083852456484428251486104179573775 1.0084205995938015206052761979858784 GT 1 -2867234225210702883639825250047910953.1404541736151021078642594517234017 1.1240373804191483984548536007296757 0.0404148781404149845734686062856554 1.0412542526599441601366075990360201 GT 1 -145833746637732430350080516721.6586840641278897385131508171654187 0.8495964102134653144940911078871808 0.0212880087445280472421699767874380 1.0215178663974943678817661802006224 GT 1 -3554620861881756738651566574250756440.1688388596364570338952945213386918 0.3017119987814506089206031860955583 0.0164504382486263879886773753531412 1.0165872491828891251258920513318920 GT 1 -615243266199862604893463279.4110665262434519688038370253472333 0.6082822760771862045866769131787715 0.0280066760643784325709487104403349 1.0284063429242755561904643771188459 GT 1 -918742263949903494313284040731.0645276437420556735476936433209060 2.0565323547461776888338405652678848 0.0874591035157486742496444643868787 1.0915223764648569885583021956743887 GT 1 -175374422238494973483327571487024587753720.8627953318351938256568851112388788 1.9662176491508749647992933941295770 0.0951288379053089522770445724700088 1.0999627077429969977590461378793829 GT 1 -24028301157344470745139826022287753711970358.1817146948004921912362365559067033 2.5040065646287655790146093846029674 0.0261073823831763188701660598927447 1.0264542302708172845424261510715190 GT 1 -6967.2224132174660196407007251696368009 0.4703729011337996222227981103548034 0.0744930736052102182691732585784223 1.0774136630475999631547928246737714 GT 1 -1054422090903191746091100782878219698779377.6180735335728152657693665672193154 0.6169737790016203790060499692013822 0.0914465502678966267846532951698697 1.0959015599297720256592414352625959 GT 1 -24835612976658020319907649521088694469.5109454259745532031877700998891266 0.1059680083586139279077340261717649 0.0490250986288714339412319739694847 1.0502676086134834607784348155512143 GT 1 -569551.4064994604015076292760840645610063 0.1210240315135667107875389755413775 0.0684600046885305931601897941174625 1.0709161534033329173675417126251360 GT 1 -2648.4647944252059541520597914777776369 2.7060765509192844878995698647329953 0.0230921549708103588797702057525857 1.0233629558209473067898981977484148 GT 1 -148865397825680750598.6477726697448008093591546388029325 1.4764193930471209959814506497325015 0.0646345454978179543156435774777138 1.0668179656293484255209189754852713 GT 1 -7823928535989101176.6538794751427260090038428430818261 1.2099963953806175467859169635384301 0.0471464034598058402532140090157886 1.0482940109066169425884851639128211 GT 1 -8853745.2308185613426580709069062737524775 0.4936998530334816904540655883115453 0.0028502661617563419959021134042235 1.0028543359054274961198640840473379 GT 1 -228.3935006443134135784330387462541386 0.8512946003182260571576424912741635 0.0964488150801321469758442095235873 1.1014225187339566228723631772524819 GT 1 -359145393296470926137902999352.1221923645588072638672408767836866 0.9519528660599743953936395838062193 0.0719774899393255184837124695462726 1.0746992899592221403849540048717207 GT 1 -213073095441.5854562671098011757690154869436542 0.7192685371645855762864959014976933 0.0310230956598562356372697315227393 1.0315145019057131438414335441132869 GT 1 -113426257305.1259349716059374487188392580555336 1.5361299112343813899084457218404214 0.0472544004891678901420570105293336 1.0484073579627045784123591560227687 GT 1 -3121514191106409569044138915802.0963904825080230303093659416685317 1.0985848562337301556781950739545472 0.0441501675341814407413407686665909 1.0451544572795856673364468810520894 GT 1 -1227041361621063324778.6493408316436603209086029806619684 0.6651791918585493373479967664462440 0.0986418759000774383794735539746231 1.1038526263169045458371019530354455 GT 1 -43797606082401762573186.2997819124701310395901039538042111 0.2328876885810914423553115422010994 0.0595022970206930450336095170494550 1.0613460725839526681415153551727475 GT 1 -180885226225511807815031854449983.0357403818604419272196869625904571 0.6777698488629418735103361526911112 0.0960954999978213428072317428367120 1.1010315657609367359458312146310512 GT 1 -134012231907880131534077942647180154625136.7444613818174554540533346095670326 1.3152596120516471455195242073270202 0.0663582994416238819959144771503817 1.0686625325994472342394597172027844 GT 1 -17638274518738080253.6101144267983109183796815400772100 2.5195373704133993877729750600145148 0.0470796234422402156136003715329314 1.0482239291251091367763652099096567 GT 1 -3235252894251173826.3480581111291413759707230703375746 0.2819368299612197980395567114997659 0.0483453927827856225764889328057249 1.0495531175662949887043660107014374 GT 1 -226996656115987853.3031115441552693340638829827758148 0.4129874636995982837698468635916267 0.0157595763302368619296886999301731 1.0158850787766025283348044074760463 GT 1 -131.0996524108272682456809092885500520 0.0866239018211253051207397569287670 0.0448021436686251781042967246800370 1.0458367805555148660840071429783282 GT 1 -770082572.5572769026560321108447667478905109 0.1482360079165288801037784287336998 0.0492720491489343946140470955859102 1.0505273237642100845139244282796033 GT 1 -347886599243734880860604.2210752717256099774246137735408625 0.3924359515587927099808067973232197 0.0986492578244640519529522899376961 1.1038608161300515865831612692604158 GT 1 -48019858348165202299816879916311.8767113661188286057502090909760099 0.1246405965254409184875796585204753 0.0791225470573185729166116085170796 1.0824283102740805556948762797962427 GT 1 -59595602788854118581173339.6917285371503525680675147579271300 0.0112745188719726535055478747849687 0.0588484631401996934649972120838508 1.0606511142538185372226802175380738 GT 1 -867368064003062471219374957408741684133628.0028510805625371025062282163082168 0.6300268670863826997711177075604974 0.0698075814376590792080570627890043 1.0723638125560996249869132879644169 GT 1 -2812700036.9081755071282959367533998262018405 0.0110073197260402430626048941894570 0.0443403340378419063073572881827020 1.0453534272605815601440749489349665 GT 1 -782.3058736346899912279161655600543993 0.7237280571761266652872762446700237 0.0118016695298390025658908397515282 1.0118718620374468443334874934737654 GT 1 -1276968509762045433950933100366290577.3709789769540487362214604053888514 0.2606504018290318403508189210961191 0.0316683970097434792161768372615099 1.0321806852949988042756581001601581 GT 1 -37438656996817100.4586088833280978517681557215788106 0.2165278116926569522347910324647792 0.0619194651241878105519867983982207 1.0639194755849472385403323434680163 GT 1 -3306533127178804258366332662.6539531391486203070448805888206750 2.3165768350011867232607464967847457 0.0987111467278824330073705927790662 1.1095172456085015007954938289275107 LT 3 -77775617972828657.6061615586516323401157509753208621 5.1591573664177926882730781707690709 0.0372090472222987833257747423720964 1.0379189698999821526692648994323614 LT 1 -1113799832762.3204050980297457623052797285191773 0.0473436115265043048657163773093836 0.0616403076941071598644096737194591 1.0636219362036268922678142001788395 GT 1 -6157.2978697084609237550825036818055482 1.6066509403972625930708298202974408 0.0634080866215671155969748305615005 1.0655076162882982083070630037672398 GT 1 -90567920329397437119411964766352.2096522938935666959726949494615631 1.4087221043759847731630125746960516 0.0395663088108245393920202394248832 1.0403703348784379413043238392929781 GT 1 -8.9421146477542128379835347875734272 0.6212458475716060491525189343128483 0.0807959821249506410743775116343339 1.0842471814007371172113268289096006 GT 1 -1.1122827081650404211219615238660569 1.0469870143716903546475890379841072 0.0895796667246005188178437162667429 1.0938488814181366047859680816628544 GT 1 -1492111335176304126254297004.7087838512980455407094586537166094 0.4793030194776792696313947378359529 0.0999376595712411220342244823355097 1.1052912509136186614442348038191204 GT 1 -1764197364943755664687419691934338.1571034817140208930480911714489269 3.1099250169791615455402929011958170 0.0779782179999460815464728130406226 1.0811864309756939318789159586184121 LT 1 -724656519885803294507.7897469114100724027732333812226655 0.3921471051584606891509708912385051 0.0030496628076494917244352481231014 1.0030543225053524072517731179972961 GT 1 -17768.0759034592214567004621863838939053 0.4646499470443228462881091078259251 0.0927600612910245070246751010349981 1.0973483228275786222379148950187015 GT 1 -937.1737678099475034586610568412361734 1.6039623806912607007323345734413954 0.0749465271829963801499306469367348 1.0779037346897412348255062862908070 GT 1 -13836358847.6418642867477502598543426323260360 1.7563360518298533663655135277859067 0.0466363888690973214062844705970029 1.0477589044131639972967132679751159 GT 1 -3817403790853140478795416513878124583543.1963918699535490364439923079368078 0.0242738115281567993251836152450841 0.0451337055343091398729448610439245 1.0461839540982211146301871300860398 GT 1 -387827868748954667576162664.9427229512617154802833427524065823 0.7776358983721047228930997781180285 0.0999887348592270326708365856433027 1.1053479989130800027711071827954919 GT 1 -3105.5391190478920383647952294774833021 1.7240427494285531885463484179709702 0.0138512208423823373341871177020181 1.0139480441219143179583719848433295 GT 1 -31.1842198234936576708152220992482527 1.9079276708917660189483125068334494 0.0508326047278419511753870853912566 1.0521701047026987564066960510282108 GT 1 -677960181812284354810882751919710630830214.4418320304084185661080014662950597 0.1202752632901272395944882569516256 0.0040726983609872679888968586345417 1.0040810143837383926998438234456719 GT 1 -1212063420.3920351802040066888730464694086654 0.6058277684420254840047736019947929 0.0043592485233380188518817272778497 1.0043687777507795978952156387780040 GT 1 -25339813723789086334818536841664485662944.8052747743905091833528611188011441 1.6381547405977228681770021609415849 0.0265651537486101357912648518814035 1.0269243837322765109397712621843459 GT 1 -40.7694403644547818502683928427982140 0.1586875690963033418086307209917174 0.0889549184291511012019337123034447 1.0931628971388233821235751316813994 GT 1 -1591509118491761101674594.4184648138783320397322875808942063 0.2252401496548282163686597275744265 0.0780192750092744582656933306998879 1.0812309612940416677403930902848289 GT 1 -21303875700555694600630125680231944321.5456285144444794456605222432630933 0.9740730920025279289623001281422659 0.0530500981848273630437451516000821 1.0545090891857324558268364662087798 GT 1 -23789815304279744207350381965407.1905674159596311867928999615863818 2.6295347344327415251740271126349554 0.0776229293407922859697941899498779 1.0840655831153325257019225719165712 LT 2 -475753423775950677250038267976.6365395184251935025709636280904340 0.0745355063661372282930752517840001 0.0836145132395670888655434873274863 1.0873181657603839754168332784753928 GT 1 -162328.9173408822275084012164808254544120 1.1518525850768039159139174564049502 0.0679736787410901438720214773799193 1.0703942230012257150047735497347272 GT 1 -5698295107.1981832639053188100729887949459752 1.9956018974155963738156099327639026 0.0667030582883990724403592193637296 1.0690318632704058802674447446173066 GT 1 -690674310643082675771677284686477632114.1423199016929169524697451799289889 0.5427662285084780450883926467934128 0.0586919761411929546543350819157243 1.0604848562341164130903777868689591 GT 1 -1239946584831113721.3675020838985597690160300506577770 0.2415913601600914649596938253854665 0.0294341436107962580553255334665981 1.0298760204690467591675632428505229 GT 1 -230753025590070448010978091879464464263.4413744916375568779717251400782990 0.1154596730213553364225162653691945 0.0469941449700217645355767533537486 1.0481342315587929905248990784090637 GT 1 -40939548.7061776068131274773501426384150656 0.4892533173632186370547982781799331 0.0192393825136212688408091479459418 1.0194268680664161682164175252990586 GT 1 -99526354681634913305674316066013759.7823372568947273627750112934261198 0.6430732563344611376600796841613774 0.0924726707996443069293855421174076 1.0970315984752447482424451327997444 GT 1 -41.0044951149333936152041277709383214 0.8564677879247228386184291244394233 0.0337829705391956466463930088732430 1.0343668018248483987806543885466792 GT 1 -468817119928948617015204923209647.5657360229202458136669344485102951 0.5466259045981592384026052655799782 0.0056475746071192159375689071760389 1.0056635824553864862340427699840842 GT 1 -12516832394286547937613191446695564281.9812027389849551441460829735946893 0.1820817066058990616427472748341876 0.0409603870534269182535020693048777 1.0418228984381573803194438674615736 GT 1 -1432.0629411603251181509319640416081559 0.6878277794404357618737893043043625 0.0832969950884598045793333987801130 1.0869717360536618372774571782695172 GT 1 -314860290665973622321013774812114092164453.2180409779416986364820742418416216 1.1601556402355212131058987517391607 0.0796745028519770246934072813020546 1.0830278702641030097125625086051275 GT 1 -269962208600353029707774728355060614090489.2126813149953197735559628782223885 0.6694441580284420860897895577125933 0.0392659125015576694786116075285352 1.0400576122572828109325416453613670 GT 1 -112666042318954467373094150821884.9012434836112211055292576203672381 2.3006252633772532432638178966227820 0.0586313257911706237291664451538773 1.0604204263188733307445305219630695 GT 1 -15204184732086826753.1770267918180666068631463538274355 3.0245101575354953260419604058915504 0.0175630343288091873006958967875441 1.0177190943745424733600754278867040 GT 1 -538779069887045778.6325428674296774797777328813592733 0.0583721688063372723452708815257615 0.0859340949459483328767839951404395 1.0898526039414609642008896738712766 GT 1 -2261053.9473283791450385119231787701139177 4.0575664508560190087659394367408556 0.0728974753848811181254790770098828 1.0756911212415102694667487084274380 LT 1 -4475189362020742134163834744873293.1511601449280949374977658900578784 2.8657682693604513236178224873323636 0.0606943329332510183009152284949687 1.0645746057926437547676546919620060 LT 2 -56958794574217381238871259275562239564704.4752123076337443654962281514221825 0.9478934150491723875829475634286473 0.0909859232379649601187168849542168 1.0953946989377276470348387718418879 GT 1 -5199259055435041847789130650658.1321355915677250562971692653363132 0.1076330769846729996595163524194969 0.0005978704909217735160746684608624 1.0005980492867517831901539908438666 GT 1 -77362166.3484973373309364784197538142829579 1.4828394904166775029995009941045391 0.0839504700431275628546587400264605 1.0876848437645257137649574055724928 GT 1 -7281056054832512293950669118534676495.0268859603896595377529006366458165 0.8240311791260929072924856098567608 0.0550207680946455082318866172081578 1.0565923285496188356257905310870984 GT 1 -11007746901861572666027654269573.3979999232337755920711940748850985 2.7989229962053382213549734306200272 0.0713786363059614052940707359241155 1.0740541973137267867743938705328761 LT 1 -685888946.0124838946885470762278152800919522 3.2246039734328318450404714537487188 0.0681598614605007654091208198287088 1.0705940041808816978268868480533540 LT 1 -18017173240208809900496991840.4940870530606710895615792251411346 0.8486959936931159850268555065806815 0.0056076925824754858060723671407383 1.0056234747190932346400968572409184 GT 1 -1173889710958287430492480.7883267693827745779303441511181160 0.2590458190252585710024417973500202 0.0339227191135542428964331662767173 1.0345114470518760938201428857567853 GT 1 -126961732867441158254025440748.0113597293715123816578213676833248 1.9245891418760089008824808184917173 0.0222054113813275076508797101977839 1.0224556630943943960133687621098422 GT 1 -129329608606847604671983497943641.1815212971952474985691997442556176 0.1970024698674595501467130106913775 0.0640823800974287987197565428366105 1.0662278193025131434557714956839198 GT 1 -4862984518195040.4259273165743791756755344376630604 0.8336597926686331470215486448017427 0.0584729122809575615117405247716390 1.0602521604872856773038401653662614 GT 1 -2805001563996326559507335438403564042.7944695377830876286155284819250769 0.6864052906961254936223128272442684 0.0083070659562604692247895058518497 1.0083417619099864545596350710383418 GT 1 -2226591886.6316356722536448967737630804658321 0.7483876331177933314528861793732060 0.0294375963076282736633019260571204 1.0298795778814063877378009871328992 GT 1 -3089328702922435239.7561924725583544337037988229971406 0.3642435038427167123751210333095661 0.0759336358206553006759213523367912 1.0789713872146613652888508682872617 GT 1 -8787811881812.0815954005677490875974451657475543 1.1221382272382116616948593718812677 0.0028081863547353615723736274408440 1.0028121367073209110810122311954127 GT 1 -2241716335704390140765872.9932243472967216488231412700717042 3.6011340963161795694851222385436903 0.0105885576713169188827756675082901 1.0106450153386007940576750345242191 GT 1 -3254335100375826052856032491.8945291857764519960550479695026662 0.0613571783434821934214256300549776 0.0428372014341949998404758944311153 1.0437817885529415756610866771575943 GT 1 -16811878364759.4843906619370733894539327792765597 0.0671893407491775663020905768368667 0.0982322844630543193783022808039093 1.1033983136615542359681089331874686 GT 1 -29657700447442.0756957161517825971023741892163909 0.9403448591594739874107889785717191 0.0004443787124207912961766023957809 1.0004444774779014195342597372133869 GT 1 -231410463933822673984078431983790706157.9512902596203201917619516948297391 0.7360468300601766418281842819936014 0.0594400322994234615108658794265289 1.0612798707632824711509698771489074 GT 1 -1612425540946.9087381520057727954368761181007561 0.4757187538882923802754203576072368 0.0138647986920151101368169766424936 1.0139618127777138564657251280049613 GT 1 -709180128600.0652132558929568717072207829053967 0.1201244734246676531290745409592989 0.0337004533580395604219917934960281 1.0342814031460203548229073871231830 GT 1 -3696111421499478868740628883400559002.6878279148802338324029548492034817 1.0154991451748287941938447667764261 0.0973148857980120384974826504706771 1.1023814971186493577417583804502143 GT 1 -69403071366317924.2784203470708249173516315829051913 0.7152304370294730655594857263278341 0.0442588896588484526228589884034278 1.0452682076875307854715751500743742 GT 1 -489281806525.7231191938414853904376141150156625 1.0751565881986067035573881532276117 0.0241143835746500119523109725398137 1.0244098957225679044298538529192901 GT 1 -4091417664.0446754557690032831820855407551115 2.8973975108434888114936439027275446 0.0216654925395630938069901432882484 1.0219036352588516027721784390968195 GT 1 -1872037573239432405748154250723455.2855103358249132657984817388482504 3.0038987312752122965771674247076212 0.0116545218129447676961807431232373 1.0117229680776756725995809041708780 GT 1 -79132347027561024388500551010812813323.3473173498291204100551760046324052 0.5784981261056391616228639578155705 0.0512647076195991925287042874091377 1.0526254524948005403333985250939192 GT 1 -2067556573302820038066.7151082703046437650579438078508546 1.0568203111093482505006972216636882 0.0449621119622936024995069172869474 1.0460042659504604027342387338672305 GT 1 -7665056238378147550.6160086632969923485230752859012591 0.4158513018659843498863747995956015 0.0597541808943498103825182140926426 1.0616139282189235829910058050574897 GT 1 -32.3136661839550644575559224339021292 0.0144195703867067306648616809840690 0.0207229649558790779661073378317345 1.0209406989090712372765575678606349 GT 1 -16270876209831721787910.5877355878277899440073275831175290 1.3302627092148084445665311035942259 0.0307221273829769599671022092903042 1.0312039459531353637819332183889774 GT 1 -167756288195416104197595558823988171.1639367967519867160544635338926762 1.4845258084738575062664175899881578 0.0701119765004298372422637635345501 1.0726911049232518486374417793720050 GT 1 -1591947302659699340796.5597588125224270949009867577504862 5.5447202087913137023369109430930372 0.0664293057360252411386083339946563 1.0687385885367712179993516583565287 LT 1 -2.0967492409133836891667296672229427 0.0741813973720987266000445312502042 0.0807135873724916640668425400759477 1.0841575483505486340660935686702894 GT 1 -21279660854177790027580552478814.3558212445612724671500438321707094 1.0945808916444759765700659777521713 0.0549217282232751633741389535915063 1.0564875276414263066975487372291478 GT 1 -128254119550825641714679940321949.4111267837541769408687515479646035 0.5035574127134322554467833775172507 0.0810325310485438288797968371711462 1.0845045555647846233466540988891454 GT 1 -2595460130.1764141379157739565838136405622958 2.2256607392516482043840684818248155 0.0793615646744811570945426554815190 1.0826878981712336584767287200660519 GT 1 -15825895073866146264897356731772011817419.5026107445206563426680140863507663 0.6963650326675214859318839570739230 0.0133091372209540335673650691893183 1.0133984975459557539034043587362666 GT 1 -91033720713634.1861116782483299726349586316021077 0.3711882164269756987171902302986096 0.0413463188877593454382517338693661 1.0422253943333438037279793118454823 GT 1 -2707961883367738623243103749043.1324755599558352793660641523621014 1.4405972728606956427651602945282675 0.0423317201562517890486151750872135 1.0432538241853433471599456469936712 GT 1 -935936081076.9154489716153579788264353145601250 0.0859098225158909035853630893856764 0.0729852134575452457044229359207565 1.0757857625807627889909521188717515 GT 1 -2821231680783696928784430.1653783525928179138144322259141727 0.6210682241166313875055610726006475 0.0534723421312650885395470102251829 1.0549550875565897466863826178087105 GT 1 -4.3881914417131034505102593861942929 0.2383775899432680593283672173101441 0.0657372976778960465647810953068879 1.0679976144316333244166811633948937 GT 1 -819898562252972733.2735342073816961502249425285891370 1.8325744285041888180915365865473429 0.0837319135811998447829706077524765 1.0874462863648577233790890122396581 GT 1 -345.9658635036110549779939107991449390 0.1631617658222587467499256453768743 0.0634207603355760242786859764509560 1.0655211481153162726906098027525458 GT 1 -68.9974599057874738955715108952831340 2.5422246248460082018177850761863843 0.0308469340772973337710671632609385 1.0313327167976482516204345370897578 GT 1 -7.8489205472986612071458681653707882 1.3854499107568547373663262115258252 0.0522929830326860835785050193605647 1.0537098783260400789990146005323136 GT 1 -10683675727437.4947785875329425849340496029430115 0.8402160221146861619586983586947121 0.0125409121346422745470588583581372 1.0126202130748710061455754574243420 GT 1 -56751119642583.5325950878740294331592935631952649 0.3365386777407295782522026596826516 0.0768077149600526020791822713364025 1.0799177400223756080711553014026899 GT 1 -157319199366520146683.0581132983247589997797717542855769 0.2488755670965022114367118684108348 0.0460266052534661968112589199744267 1.0471194960290896908159674807239502 GT 1 -1964102458434190877351514.5152472815928840281189642535156119 0.2037504229646041118591219692671454 0.0983546168280722996675295470407938 1.1035339812634954625212409460581944 GT 1 -6516553552896219698691375027007943241807.4974481627331830700098381934163272 1.1338586424043805793886727543441522 0.0142107525492597554255954693397222 1.0143126922051805590449006651482115 GT 1 -68118661653149197.0364419878824224878404467039408339 0.4751556034378901708878229029143142 0.0931301339202578091996305851011819 1.0977563164709511529668706092365476 GT 1 -3396746546838093373.4673038997504546314504659522839672 0.1131120814936184394813741459100337 0.0243537040134777873518579260706274 1.0246551599055467892575180935275913 GT 1 -15770.3142496415957940774768166405686464 0.4174014449655386514220736973489086 0.0637249346774652925402751279925111 1.0658459724689820118356273164745836 GT 1 -4360997398306112347613950.4653370055117526082916988045807662 0.4845732537261958928927710843120340 0.0224380017685596849199546543241832 1.0226935638332093515707681657912148 GT 1 -19.0380756502467735053064284762728202 0.1778966254347792897336057478110499 0.0994391935433921856997002037198310 1.1047375914302954294694694054645718 GT 1 -55159.9045926083015112873746198023829278 0.7196523073886365279849049266582417 0.0113792192186680866979364791828946 1.0114444579161518312836598070374431 GT 1 -28159347543177.9938943305108494070699721975765809 0.2413647235516679523760734046171297 0.0215632324259890220811438039284699 1.0217991160286565820698761075988763 GT 1 -163246288909192404274347084179183610250605.2748828373870926310560883766258007 0.3516846519093671659320898814036224 0.0265236534518085308593719828166530 1.0268817517961498151462565794073773 GT 1 -64679398051.8107599535213001460646255153483251 0.3554185904425165351114855128817677 0.0596418600116665059110187903995266 1.0614944762925637407654717777382858 GT 1 -42928546121.0787943748823009416370905847003282 0.8514628737651220960108084363317595 0.0716577699853301540648087680535165 1.0743548318360370854489511707610227 GT 1 -86202729767936580050183657448207220257584.6647840332843428030264037800711960 1.0786730562878075006867696834742510 0.0304932305932881103894989783437745 1.0309678219548418489655404511258514 GT 1 -12446587.9238093486277195260276316293490799 1.4903355783802781966308579507819917 0.0934672243450473191638483244443169 1.0981280931750478358382658435121208 GT 1 -735051437342117360284311695302409833.0838746325346567423476604716452508 0.1570405961987738622244802485730103 0.0788534577378099698033874578773035 1.0821361432641792196211010616314609 GT 1 -3778359220926460203777346.4977042993211984139789939811353175 0.3026845108437259013056578163790918 0.0473949131197778332779201878554957 1.0485548506336005767424928216639438 GT 1 -295059371482312276503867725183.1556495197391608979236661662460472 0.5480346379356433815771014013298021 0.0333820260800850790306640710600991 1.0339519247513679869124003369168624 GT 1 -7682969160057257182853610585.2625199876457577642455775020635443 1.2966786464247809530289443678016570 0.0598052039957233036142283647616948 1.0616681953954310762920512003086472 GT 1 -649282587264.4360618237419699904981309992249476 0.0681153577736227345412255129455101 0.0113437000847673766060930370539235 1.0114085305954426691300634365498250 GT 1 -165291287878416108478025064306857000306047.8513597288085949061574156989277401 0.0773127873213209386798213433730696 0.0993260287799663474169325179839911 1.1046119390001100671358106134257282 GT 1 -7934935385957085802420529.0974104650085513055139026164570396 0.3224732860665106220091614366214249 0.0566610238266849428895567614310941 1.0583295952216864788349900570432380 GT 1 -329626154500879017687839347498523632.4447359151861994977988358547803468 0.9861642038043865685978031721808836 0.0375802305633148649106724345509510 1.0383045727239560409694945610019097 GT 1 -2476.7492000926384227081884402724469676 1.6515341374421240866044669786861649 0.0612393692241786782999473640895651 1.0631947515728969741154161800297941 GT 1 -673.9462617018108495598155076886566925 1.5313053085846276975452910223616455 0.0153285413847393841775427136823476 1.0154472380014397659145876572370800 GT 1 -452241755195391528866344.0961860566651370982388663245546384 0.0422149336277557169058915529214453 0.0905133422644560701605977024970940 1.0948749510210154125709241910232551 GT 1 -35925578899367.9879050641328193316051097499806348 4.0058354248172656136581939988168310 0.0845580708019016619286400255522301 1.0883483475750705350809236953808136 LT 1 -2739137379515695697047128498830197608848.5259620356546111218777394275600132 0.9335579746821825046503546611185451 0.0009939804030572553655259560120435 1.0009944747291722142794834231519005 GT 1 -2975941463795197185772941963881786.9138879371085634145124587040496606 0.4479463258079019738935742482247069 0.0823951001723739227408837132481207 1.0859883733516491759654442470670945 GT 1 -5808378084733971744620615181191248784720.6711238094948756157726339979534592 0.8543082234090114257148968288541968 0.0612689320355515453904216715303983 1.0632262433887011621088568349539774 GT 1 -399269101219905427410214426175306.7779374210222336348804473857233461 0.2094484612153808741920084139031699 0.0367505269609522487036518922473931 1.0374428425416332710571751288532383 GT 1 -6168028.9258791399279209133309657166987789 3.6286188863146526659717068232781619 0.0774268078779099213767578252961740 1.0805885651610335488485069836691580 LT 1 -80044916461.4132689793620881008508989206103535 0.2230112033365716905460581281931405 0.0109091252725759570079790279550860 1.0109690661130686530463215229623777 GT 1 -665150613.8576288505110751470566074902240305 0.0606781699788793142883448987857449 0.0004272200007737579969148792462643 1.0004273112852382470414226378573475 GT 1 -23018242767071335739608836201.8922803076692168725066610149057765 1.5189320163179440018696502865938190 0.0835176852525954060330081164785205 1.0872125083998453660773031732278162 GT 1 -8.1839460700169242039824400744011786 0.4112079426263423191595614110571530 0.0628168069483141539787292936019454 1.0648765056594404633091576502935380 GT 1 -2142871549763052788882836848222999277404360.9662745849731088733825166135760190 1.5849171276092574065894287870496957 0.0844864988247159754028559612794290 1.0882701676521353868279203564151561 GT 1 -309580096569037453415213585336.9485122153725517100559859454517349 1.5848203332619600673584920151256813 0.0278756074177393029462897195442692 1.0282715068022402457283399630076528 GT 1 -55296361572361687.8083111899017048350362253913212583 0.9187023886263466052802203927938383 0.0669120934152712175105401286361513 1.0692558632969138128786639876218639 GT 1 -5125015347081125740426237893052840207.5470713038035537529285524532866586 1.7579309647245467931113983766635854 0.0682789109962482931120752176924004 1.0707217698095607397846142364149084 GT 1 -8688655177749627505892328774342892.8633973674852595960186208257470301 1.7777317350281086874449078167601294 0.0630826472289366008849844747228413 1.0651602047203024905450712917468370 GT 1 -44818.8913970944971127011232480457753206 1.2846336050666008424875761649236785 0.0486017341056469435411325817649708 1.0498225176739152818931471684741264 GT 1 -2747610447550302384574253580.8772606028478372496143046773858010 0.1004730704629956456141263066299986 0.0457784970676875671098635289244595 1.0468594511170331804108732672517264 GT 1 -221674741427671310471965856184411168850145.5509788461378555268613599104047065 0.0201188425193830265803386777166289 0.0833800874175826940176477393997946 1.0870623827459459962683240334739872 GT 1 -48283865282406539973719433916504930930626.1577050758294841320761844117327939 0.6928933813755734300574024844589026 0.0061330660390415500678689499460842 1.0061519505414204090684982028507297 GT 1 -34246713689696898390472726152144970198.4116069205357586027657081991970084 1.5289916198921757247400821152840606 0.0248821837124001335258892467387677 1.0251969780664672765212003127210214 GT 1 -18616271394322817618590913.2818390530385155348592895209068798 1.7573642179687739463982449110666577 0.0623902342210981762751985358612402 1.0644214444938136180601382842833005 GT 1 -10.8271386899222806110816972196099892 0.4512953175287905571027247507310432 0.0826154890750787719942211507655582 1.0862285806274766264976805394849331 GT 1 -416.0531066183132051072594741750331468 0.6903115632731367642904390008483128 0.0686352596950264602162719141084340 1.0711043058124843129945335439457655 GT 1 -2891757752887.7354661476970715363514577773637231 0.4370787237522532551488916011363621 0.0705713459917613496837974393372487 1.0731852321542235472760890992916967 GT 1 -23432173414241753942149343679834000504608.1651495211500692132448342123378425 0.5547520249635562936646109362661581 0.0808087805589240994369636731825897 1.0842611048854305932120320128241368 GT 1 -15297865380231242.2982421149830504556802625843100326 0.5289344084137878224992616088442980 0.0765771581833294960545109845050999 1.0796680325716264345878942425718073 GT 1 -1.2279744762465233573843207939753774 0.0145659080651139759459761648987457 0.0219244151601499141484474132448057 1.0221683268213389937995815172864511 GT 1 -235.8617181146416257122637822000502742 0.3259084488622547711813963471330687 0.0467297291079722558098370944201788 1.0478568154382743541174035759095077 GT 1 -3471827552678038611130043576881019.6811470719485011047219433690497669 1.2830487268515207714003980211109070 0.0475811964367950118876354575063235 1.0487504212178283290839265705321502 GT 1 -497502900303.8121697350046885375308387340221945 0.5133225038072762227692251538672643 0.0213810460408205533763515142567886 1.0216129318708013067315942644882250 GT 1 -4034146144702540735670808424828567.2395696538003736158826191934328495 1.3848065351995799033927168035217246 0.0987572750787192575900128624352248 1.1039806626249559125176403698624559 GT 1 -568205809066219423728.6414092024436927431296502404592908 1.0086282212297600581487050687217075 0.0376368548698468722252924780800725 1.0383634098074731559177816495661226 GT 1 -597878066336.2025339053678187271599501440504691 0.4336914595569570023897506365977512 0.0253572056526448456388760043044296 1.0256842398842024167992564865668712 GT 1 -273006743037225667096865339921.2557646594378961941399555803308211 0.0915176380482016921146619141866888 0.0374126402567298333111806200932106 1.0381304535693118355824459849981541 GT 1 -2197993119608084763658.1516166184519458041230062978879201 0.1610879190845380825457177793097101 0.0812238236445586544878991058976558 1.0847127375897305036841265474600095 GT 1 -70545397772230825533514400.0803900992877597702749343201082600 1.9322232187928734448245644680619045 0.0132441169631366846057045285397766 1.0133326024231420960733622344124874 GT 1 -14013939298.8617560723819394166161415073355545 1.2579749907463713820827530739334497 0.0520366133993201814073702798706774 1.0534393992021941338781582433694983 GT 1 -3407976604198.9766514162905880904003730015239879 0.5884680732822653133609250458865660 0.0488517319856951379108035177480671 1.0500853211081876046941326149409843 GT 1 -377007461912817475776190490104962546.9267130765047829325286476763953494 0.1221558172262060647913758855506917 0.0374609702617350526901077134602972 1.0381806632649239649700027758532732 GT 1 -2198735816740061740.0437685735155795476284121328739731 0.0251887489642665123523462598215114 0.0582765076306989017612966979888553 1.0600435800115409058238648605027941 GT 1 -34605729385.9839876955053799492586023183331659 0.2628838901017899881312966479508737 0.0582765967013404750846135117820594 1.0600436745941296458527264205252875 GT 1 -6045355093294998388455681594567037573.6286475347897175280934152524744887 3.0729263469929193084108417770315436 0.0733660116627219657260436317368086 1.0761966259715993459592092101510646 LT 1 -2110860337713291833537400907205.1216804278834581931088507028378308 2.0085068981898203374747520400515179 0.0165054783305308068974990806137295 1.0166432114080193970724242195357109 GT 1 -2277956515200879.5134923941110728063491696918695454 0.9259329864088346314072114685016965 0.0000071036231699249034072838611393 1.0000071036484007754605947266673347 GT 1 -6265130867.5312948272620501140194749864254984 0.7053188269821862631324404851315815 0.0887052725694379275434308230666247 1.0928889132637615118687724693119472 GT 1 -1857450.9039470492727528692991425055206363 1.3874535269217639646421266437404055 0.0786130285361260231488670868018960 1.0818751665153087451587464317863696 GT 1 -54336024887489567549205832476.3505428385631590576239723878317932 0.2727372315915694048323092404267361 0.0625132280220465913117049975502217 1.0645526311272996392785588481607274 GT 1 -8.7647207624335599078989095194581269 2.0080518164868699554804661538406039 0.0971160582931101305322274503408207 1.1021612590667677062312876821978266 GT 1 -2169350159541908981006.5838185103357524424361339803015067 1.2996313193025968920490501779705536 0.0696270436233476763351411342677162 1.0721697448632254150965318727266242 GT 1 -552548820008117762714095229741527607518.4339973694681615048962867157313555 1.0803543310121881735941107122878377 0.0716234339644111290046399546141777 1.0743178461373992721508717201293472 GT 1 -7333393454000994448352533943621508926758.9291851646770752933993707445437309 3.8730094104139888078395679472618706 0.0486532661746829190809515833065298 1.0498766837014766914674144341051376 LT 1 -5288591876431739647201807037.8139322634031004364576162704496457 2.1515284528666877828302698338307639 0.0866684572509930431888318625390393 1.0906563287638406086483742507017449 GT 1 -6567531625527467129148591.2393231388055296233524410761957970 1.1890077990695976613571865237096341 0.0499664350606737480249739609839254 1.0512579634966135458810309417954142 GT 1 -753112966446910583.2866423727834065435637832840423958 0.2796163299713288519602209687002696 0.0050887003074269215172869349082673 1.0051016918349034538897119262495507 GT 1 -7888396393577419.2210630678973610176490842268696510 0.7754035002067574214108048052906216 0.0402822967480384330349495683583019 1.0411160968766537060992067208356158 GT 1 -296311.9013570796703550877478562376831493 2.9031361736170055921628138018882922 0.0570436795806134201697767525555525 1.0604602359763729193604035057640243 LT 2 -10092591027388544703321361700503.7879141272584505153842955840816229 0.4361065215589879858120877155846655 0.0622400262007273361722787875750623 1.0642612541937122281692757631772920 GT 1 -2415433.8259100779282841646269754227438235 0.6398572881615047463095283196174994 0.0764270550578108399340092910941420 1.0795054949774151152424104546816623 GT 1 -599626850360994724014368796103424773762506.9542579135924025676476686942100908 0.3888396217030955124309523831125045 0.0495401327890403471370883339609078 1.0508093407636205140550992578650207 GT 1 -25.9743805787163077272985657770339202 0.9517264062040968940145305154127696 0.0831655116532426113647772342163974 1.0868283155499350023603283746505175 GT 1 -1099526018551721235326.2010069699217179794308706245851028 0.5603756229206401983562152330523495 0.0298745509657424286153802504992387 1.0303298869456734555689229198278142 GT 1 -450518124575819518052483879276616509883.6634811254975881730695224457811306 1.1135040573077548015299338782462894 0.0827728469931723084690164213453131 1.0864001241988743869210772392241986 GT 1 -11081622081105217760.7640751829126198882802405742583696 0.6076437638620842677898220699653312 0.0989742942148869818454099771819161 1.1042214914976356206959390661042217 GT 1 -1699.8292505106123362543911988635457195 2.5372622123599698164676218030015034 0.0445779524005377699257757393364054 1.0456021014666441843679408758040641 GT 1 -869066357867713.2003922119511711237195815249002727 2.2321265378032731924259047100343746 0.0072468066270267804508919787085915 1.0072731922819450018583486613302449 GT 1 -23575816801419952419.2671264257835987947157986149259462 1.4612059159308037228823483109515126 0.0928678848514724027521553403614184 1.0974671777893772068750567559671586 GT 1 -10016337385333352331.9346844504863126251405347097913329 1.0110499852326451577516747720253541 0.0163035796333841121449380942744651 1.0164379454182862119989841491783486 GT 1 -247.2490781877683986625173631833201035 0.3731342109293057108724658417005717 0.0727149223397235253870788671756960 1.0754942335514466464607100310941579 GT 1 -9849709091096024143451941229928453192182.8148652190483871907172034235577891 2.1621377108680347834488072617163266 0.0546176579212334282898695214780368 1.0561658385224514359281260905676050 GT 1 -1.7043124391616419474195713109688316 0.4382904162754978689243509132377740 0.0261902594054219156694053372596207 1.0265393326191778655366498383567962 GT 1 -27709545809521865.7757873051784882637550533999031797 1.9950967435873463578877388416730151 0.0088461629015293386168929320877763 1.0088855224934040775911870311099608 GT 1 -889745759913040784.1777457324811838295465167380191231 0.9057358829115005369522617342395365 0.0087296803066555560072357123610262 1.0087680071830616747721270081798607 GT 1 -231306368133056995561573580907765916.9554780240488050220771687150739115 1.9518721995538822375963141273662638 0.0579052980163732099884334795925335 1.0596494765675428913192767382733692 GT 1 -1567.2931162241841371570885007705613085 1.0488851730033791183993074834907208 0.0499523457956318488743017137967905 1.0512431333252501270523093866548864 GT 1 -8197.9156530746078136061831934283804063 1.5859808356063713291590096972159794 0.0610906930326679853462155056270318 1.0630363891378034992006034414392369 GT 1 -493917442060592260552265297106815491103.0299163147640391046455376421821086 3.3586206967110163468300561106557640 0.0852015754802863117257992233155097 1.0890515390478124309908590714102081 LT 1 -3200666605623934828416372683634012622520.9140234043112150625815403161722814 0.0117579254483344825230819905011915 0.0616184989962013228941362214839530 1.0635986951749921892501992725829262 GT 1 -65093.2206860100660980859087650377135407 0.2250635096916282891120781101267510 0.0788315822658514988109434486926292 1.0821123954551080252583468109538341 GT 1 -82071408764074277781650636372815891.1762969727352824596558514081236663 0.7321443445952123500575176063353813 0.0779288000927256600036324401881546 1.0811328350803490685696149325125951 GT 1 -1773.9190731401345587480012753681516497 0.8280715011638692433195024109793595 0.0144353590328592763441637729807978 1.0145405624885335579709935422931911 GT 1 -3524544163033333077031040.0031419675938416251275098683641030 0.9940963930651128478194870780512966 0.0414141313822792347486494537294763 1.0422961340534353477999791148350009 GT 1 -2981453875234931.2244830476324104121463645285840382 0.5257734456035221952135564591786126 0.0218818856160304677851037885153828 1.0221248448858404569372598703223421 GT 1 -9075872552512223849507.7131591391298539169110337674236048 0.0892652659452379286688412553185731 0.0909180615784983107103398980163525 1.0953200475893594324270492950523247 GT 1 -113351305450615729565843269873757603.1855079888118210129795182941333028 1.2520176621354923788324818709470783 0.0029676474142488343762404994562987 1.0029720596112286518940346410839906 GT 1 -2887381924241970853.8711607217453831804568535034765651 3.3564521670766780176621354423185744 0.0630698024032566177452158468653691 1.0651464951464605170213218268229432 LT 1 -25847107320.7644012440110453628836327793005635 0.2835727501745451445238097705127749 0.0279976259556629003732052165522230 1.0283970320922351337644047917552638 GT 1 -43333.9073623812596816874860912316288292 0.2242555068723199823501531267763670 0.0894197705194993687301498609655796 1.0936732678474630204937733131720165 GT 1 -204335101551446095.0464700102725731879886520447447299 0.2285856329054762118645827823126896 0.0717595684521960853613815274982434 1.0744644940332292928306951740496558 GT 1 -2327.3808784404390220814848273156317154 1.4803123472973063688749747012452771 0.0339470406706044087142579301268191 1.0345366229500067844860915080434337 GT 1 -29290.7164427481606665342412078804910113 1.0987691983156254435739937913195014 0.0155723232706134693860282463570252 1.0156948455319533868048761059451869 GT 1 -393.7837049793854600614453380297916543 2.6808547201198333332024408054696122 0.0478281372662770948343320836626539 1.0490097324023632673621190791833014 GT 1 -42222631986005205635817606665357.1828413932037369287437807524710886 1.1351791248891437985839739724061868 0.0834292250991464187197958189394137 1.0871159916606224638756937180954557 GT 1 -271629027943387.6811302227546498822368282454381785 0.3014082316099863608424905985775450 0.0200791165613020366235977527466652 1.0202834417614590422869988104529376 GT 1 -2064963651402724897508954574641462802851890.3889665962763335139988134679185265 2.2695199047594640631374374646718348 0.0929954709182809483625248808445189 1.0976078354045846151849940821423973 GT 1 -1900266995832088536466.0212212340381541826057255224247769 0.3816258346007357382427092534891598 0.0196713068846712882613565106837574 1.0198673624138169419907344387451185 GT 1 -114886256906654463538077.0484847820452045987203390532129281 0.5509227104642812038085764955842521 0.0869253057168347672379021246147464 1.0909375898133564241221056917999874 GT 1 -166261081960801.1175167976585076065770741794554404 2.0102520297922280833389828182885475 0.0614275846549271796504789855219342 1.0633952652023438317066405357533194 GT 1 -3250242363.1732083922542428643516448527348821 0.3622425204921855376008797368952538 0.0399021047847986637843053011806388 1.0407200255367672456453038979581116 GT 1 -2248448032472908999712729038640882246393014.2079130601115645199420564942521895 1.7172658908462146316185751858121356 0.0022078544753642454474457119093648 1.0022102953794923134823682661100575 GT 1 -1194949351937072714651237784840.4504251292947160771006301948486083 1.2984518980409376071348818593309737 0.0705429647862256979233416750876582 1.0731546964352146659410154885205203 GT 1 -20734209728143635832467937552.5591212433715010250264610811606374 1.8759632013242154827417781903494667 0.0679217943441107506977144400391356 1.0703385561689814275891664306983276 GT 1 -514011046129894929287.3055706345592198928937528995489600 0.2027289931797022970323540607930196 0.0288655312562560698601998910568330 1.0292903354759154251545763550866391 GT 1 -79961223947476381455728342584508067.5035794346855108530146148599110393 6.8972479367146156533306448571007403 0.0968730816084966552728037443948157 1.1018921835130733829690614233015328 LT 1 -36882258493422841.3379990904223684662979288283107895 7.5692627357667196692402166917507845 0.0814159188577527748727125998100203 1.0849218367177976819650599760676440 LT 1 -285126741461764084316594500722.1245240510364559087122545195105271 1.3096237448530233761028192243321008 0.0263437757718090869912432204440714 1.0266969901798008822220663878367797 GT 1 -158530767796101451989991641628736566767.5937323217758824238190956010531067 1.0507503065514038600895990938358518 0.0825820820283274896930874883066029 1.0861921657566122314714842566702122 GT 1 -540397970449866915089.8349901814399643541664437424193203 0.5508597448030090542904498235801467 0.0457497843797890411604127488205319 1.0468293613990440981498111502654784 GT 1 -2206659695955431.0569721758441613423819014669794251 0.3728419765151204700177855562491879 0.0034908182053088893136091742382548 1.0034969253278921172799402217850386 GT 1 -10370755552590104748098836275717141153392.5174094879985164406046226127975429 2.4555266232062786251251912395851461 0.0078777712242644681481693689108695 1.0079089647958773726437042318913515 GT 1 -18352029205003798156082818492435906262921.5237061461181502097909818344248060 1.5751212915974723536044360751320465 0.0973732870052102932492922382905800 1.1024461964202756150752332272482202 GT 1 -8579391884026851990148.2150674592419582219359806313376755 1.5366564629663246754894918585857002 0.0643175030686938583048392826241610 1.0664790727304085406107822354220791 GT 1 -7986975559559573693887850294476.4958234327893857597200377792250215 0.2838219101735370105779119397958675 0.0444555793378297197501115918292365 1.0454740269400548767999039145532816 GT 1 -170.2067297277774869984019413534732692 0.3495277324225725609985665587562813 0.0939983666415997674444571260704782 1.0987141701169414911070378698080827 GT 1 -1128523962974640945178105745032616.3867927749809164806159129754669058 0.1047837526454947134530946955110904 0.0547372630273327399525182455992510 1.0562923615886621215256488669231172 GT 1 -143223729264870206403066287953731514.6115621210270297139365414574078838 0.4894788400660852151938307233792143 0.0469701850760572782725828658550132 1.0481090904826384949101565529457831 GT 1 -1.4324905716913426865705615531187856 0.4964589777355671255955549174157626 0.0503782953864066425167700131966013 1.0516915793623838477101224218094540 GT 1 -62894282244166797178944634657774111.3295665623154166214778350712394330 0.0246804144923797505906127820464236 0.0362631129340858616925960165843331 1.0369369603544499390706678001733097 GT 1 -74408077.4579979835062716387130786746603007 2.3518982538449383851692802933191433 0.0542334954907340117423431974031037 1.0557595643822888300301741601981768 GT 1 -18587745747795390643090857705.8744659246357457376981073222150616 1.3304454807981230828489839697620812 0.0632245880746601226250240778871430 1.0653117139203906299085493304175578 GT 1 -686407957767674737174831279647.2688836836533486801198817256482195 0.1841097476184179978707454731416347 0.0903004708144511428928716312548269 1.0946409217033931406252346941781832 GT 1 -449201571840490762.5245600945879655693487553485514604 1.7898899484048526424156579936141614 0.0109501734846293824210217076568169 1.0110105679253851663113548048914907 GT 1 -6.2529630268950673763615354201134674 2.4336039957190094231065816495455079 0.0592566641208651970147456642926369 1.0610849333719644103557025306465278 GT 1 -60858692194560.0860911450157346402614125217612796 0.0622776768942783452375785250594332 0.0143188257903056416123998248810085 1.0144223293977721878694735762539565 GT 1 -5026986532281107558883696.9475571186469236566487852854674136 2.8754404577794831245698958415918851 0.0524628086062054103836476533608971 1.0538890906652464406681602478486257 GT 1 -585365251808428121146486298002459120.4529982575286810816159500661488841 1.4173701622648475391182208011969892 0.0072102498095830200886615791004748 1.0072363692884495464229026294854676 GT 1 -61447285054730362032862741887705.3712987438792955677894623793184373 1.3657342953039109900039349482805681 0.0404774154455405028860549149633120 1.0413194259745409823576984085207561 GT 1 -5046765109553054834297150813900.4680348540440266582096271207942117 0.4601613328815943678143770759212335 0.0989758977403393727544306179977502 1.1042232711659280650201289116781138 GT 1 -456819914396967386216.1288291437206991838721326664638080 1.8710104498406878785372062799449692 0.0960413604121369860480592163021140 1.1009716723049389352337983654273564 GT 1 -908689205105395089984.4972570030224716079239627821524517 1.8489181376592855667157821525835229 0.0390954572351080693072403280085464 1.0398802060954663174772159088211649 GT 1 -22630980943158482509437.9018689790859046468406214217358944 0.5503127013379124113128729035945758 0.0176575710386966175142781626967176 1.0178153257481192179344464313745230 GT 1 -1509.5873438807666908175478586586048755 1.0294456554431302660848778381278083 0.0817462720171240543319365549141330 1.0852815344127078816103186491918310 GT 1 -53715477541295476367577727342690438538.4475211604550139426299069702457307 0.0565584559089376723546160465961567 0.0715048987498378444111944835087392 1.0741901741858878756581969467786916 GT 1 -582414917149360287408113077536097813723.3639914349388747698443586179924012 0.1709673594200150771518750030745190 0.0906016760221577309815999807617028 1.0949720805906794567187216718023379 GT 1 -50.7293799799395429450078838177533445 0.0617899835249621681904760974372171 0.0291695511828519572611365772607939 1.0296034409561745161638149311608142 GT 1 -252491095932984314741486473.7459895610996847665103929301450405 0.2960925732906990761281452661268119 0.0953145555721677788542977778985679 1.1001679709183422501998270559233185 GT 1 -56742870733342670669264020500248022.3149160730251114294626385399572085 0.4365099318862470909390512266069323 0.0056674744691085477210315750484192 1.0056835955419045415084104328878070 GT 1 -1789733465635580637784000813968.2881793906463028525320497954227665 0.3200036444284407693303259070299826 0.0489712771142441660802560067325921 1.0502110140687042292384266117494710 GT 1 -890155.6008621571107776582214285522983164 0.0499932952419116451184149302118008 0.0996804798443196940254284746452337 1.1050055562681646977319574306218395 GT 1 -350373359017917.2606054178525648481696707536240230 0.9710079699232221857671921878924346 0.0972049540769504399005287674473736 1.1022597215116664084576998981088050 GT 1 -4160086490322292013583812151356.6201903714011411724642220859249325 1.0710822994289456641780965177289129 0.0604317027161795496196143762516456 1.0623347674181399992275031841702059 GT 1 -28964774020599.4147641497800627816091953990829563 0.7093874923392560184852002668426883 0.0643428518327243964078920203408976 1.0665061642999143564685548854414928 GT 1 -21249498.4804136394134330097997078979403324 0.9331898956489071225753909299988112 0.0854537888312493512716579846923325 1.0893272808054240863081106618478755 GT 1 -101513107946154.5722014519771421135946111537642794 0.0292724404304754049784714667911961 0.0909618763228969169958951103239170 1.0953682454452881702533470001685595 GT 1 -24.0179556936552701991066293850720132 0.7739746627034954014091296523984510 0.0385000523578769191735499919741667 1.0392607684076742836291457926330106 GT 1 -5730801892.2855660866368155951926797169633743 0.5504921071780280271934012061375380 0.0405943237803523847699703561798715 1.0414412735051092834929972725704386 GT 1 -5501139872.8650043559257649404166073665799934 1.8406317634011393142548043739238831 0.0829031169161592889354176918069651 1.0865421600885458985257457582866331 GT 1 -17567520312180851827697308170.7359591765019602802903325076591377 1.3354022312978772398786813926969571 0.0024414791498136158514103619651559 1.0024444644200062726140905639684309 GT 1 -3000306328.2206820367309617771399675264853733 1.0223173845152222476821528796379617 0.0025380796518726049450154217225503 1.0025413060364024048447598259862908 GT 1 -165151429200088430687728130197251793177565.8305184578487716441535942197175224 0.7678551256855416482598120808129694 0.0407728513451362109515298864654619 1.0416273722343549319742744221697259 GT 1 -107472379332374260.5490355072861718489455616227687272 2.2831046186150647847620849691336490 0.0887105836785916184261501598342938 1.0928947413723532748483080036536084 GT 1 -30827156447140091365074.2560623327318290679265487222249145 1.2077078954129217723952315732615072 0.0941817396151039154381815946383251 1.0989165886628063425217317121407863 GT 1 -1.2246951849034065013337323961100385 0.0721389410395922340903466438177525 0.0087612395900003781820395172661435 1.0087998449019041457167839848379983 GT 1 -3656572108613776342509368928072086093.9445130939852037665626782616457495 1.5131452722312450079743203336057418 0.0450162947427001632982791705213718 1.0460610012047751179102726871287587 GT 1 -357616295258376364793329839738.9947933222823938837046588283766350 5.7655753151487765493398679806161759 0.0245777881993034100027705544223785 1.0248848639737704750267957054583645 LT 1 -1202369554157051758234618766112856.8962227099977079613565076987545955 0.9861588998825292599988559890161819 0.0142352937026367369073400225832924 1.0143375874441179404041539924816147 GT 1 -2483417278267158980.9361216359616111361424047545726655 1.1075147230991929002913721600808779 0.0429955173849991894319566560540573 1.0439472035119388021796703096824421 GT 1 -6221470819354571843214655094.4219897111795712544663276627028139 0.3609673569996170321974338078519708 0.0009413405159710827229184937384332 1.0009417838551985412690336192941558 GT 1 -7511519063580775302248782007697.4333438638822822728928667180072197 0.4146692351368398510124034901418635 0.0853072320669920707995793380262659 1.0891670428417187296824558702447588 GT 1 -23151983135692903690434119502022.9232725711081947830329098833119537 0.6685742344475556799595182230514014 0.0241453524196291086467243032137736 1.0244416303191767131725948063712697 GT 1 -679473528593039765025087009730341.9991987446882801561740340863768795 2.9799063021519101946658896114829383 0.0834170749382557409229758897940122 1.0871027356408014269166564222861876 LT 1 -244591553042092147.8990196852539065115010982684817592 0.0223155723025957784475482138774319 0.0050318564388159487657783951960727 1.0050445588575071080020965238854234 GT 1 -93551638576120840919265487613181486804.4261007461267575698328940426485508 1.2066653207072520324687606781123216 0.0862104838658914628818917124293940 1.0901550227420354069506221224463554 GT 1 -40407481448164510802584.3114514583570715218817374219872926 3.0594471134454072296463497387713656 0.0240475270315002896733618529652241 1.0243413894837162670165934982619322 GT 1 -2194968923847811704165036.8103462539693879441156461660778455 0.1853536198477261918598252201586419 0.0091736832382272423954135780183114 1.0092160205955583586626113762109628 GT 1 -3057825791895328401338.5469584454610937930701297759505565 2.5591651287923235265896579728041499 0.0328850523394725441701438835803583 1.0334379202101947514675032073422103 GT 1 -56667716639674037064.2518898201507663431577042429102128 1.0382214425705435059206220017571537 0.0450382279265354532953406385000717 1.0460839685450438116137788521392747 GT 1 -59371187179160532814212448453990943786519.6297154190203005733780574483733772 2.9042404936053789238138044869322449 0.0734682956938789260614303170919168 1.0763070144076327435674924590120473 LT 1 -6576175863774581992432249040918371106658123.6503188904911687171832214784356799 0.8684250556047248250812478134095263 0.0457703001515904113838396782694099 1.0468508609931827379608871520310014 GT 1 -79263429726942335984616.4578053175455489918163347612018325 0.2703868450819466218342375378835696 0.0144585383688682859806520614213753 1.0145640816039982440883259492079620 GT 1 -9427880668.8112322144626037982596990202165996 0.1511157000598047507965209586537502 0.0536596823390722062762817014713294 1.0551530307949356601213332714903276 GT 1 -3307587863984959317645486135946011.9840208889971490596983398608519983 2.0502412719760810943322453358819484 0.0407146891906105264963519906523201 1.0415667396809862196398589971617476 GT 1 -15701070683228195845.2418272854383440893854605905465030 0.1217354276331150388839792277295838 0.0216067398270307036981103451564916 1.0218435832541508100390344981809681 GT 1 -28688470.1399523731200486006114252479353560 0.5423684116957491119415367572289594 0.0169231116085012406335693706443018 1.0170679437946616120597008567473101 GT 1 -11713128141174555624558455579129826560.0558231448567937939311014345892666 2.0435123793365699963924187159890927 0.0470240520984767567588302545983751 1.0481656139449327196460153158885915 GT 1 -246759587638620496.8559025773825771704051382112340937 0.0414285186567157434770757449580897 0.0900078248190051763794380734536149 1.0943192782104138691202170427938142 GT 1 -60065655767674889125362566457268481045.9698377739553480242820571091624290 1.2251532493057087950694962820658628 0.0969059826905957394600687718579318 1.1019286143632007575980584699093198 GT 1 -4899732862187988600906577492032088079.8254161290742413276523763622777787 0.8087266062295405474574342934843048 0.0429948057004268047922533905493259 1.0439464598536585243873489076225170 GT 1 -10415781710517418717163785109611962051922.4677652203141764875257852852975536 0.0651230259540093855188302731664129 0.0254369600668800553720714276621882 1.0257660726110259100137112805243265 GT 1 -8023493.8350674886506732417599520382702275 0.6532825229375403504996121665389405 0.0055007256219370974323450804085747 1.0055159103233055541488994585860230 GT 1 -8980916137711681357847384373331.0501336582308862479989227002237537 0.1665171540928983228711000223773648 0.0563581729807825463801672682971556 1.0580086053653081294842317097080961 GT 1 -1939530730523155993079782314.1938710471038527294534209964244334 0.4513053831957906013502303589489329 0.0209301186945329083080868937159970 1.0211522587074879669083326797878026 GT 1 -145267100907869389101867590083928.9635838216406435665529869183775749 0.6382423882750001947305950241964132 0.0106933005338029889486287078980234 1.0107508847500864454201036643887095 GT 1 -24609401602.1552792585014191598076557588502278 0.1283345597254873844083473368375140 0.0817549700175973739179509960573362 1.0852910067855430491573905395854715 GT 1 -223425197085831008212684155.3580581973675532936650503471345644 0.4964602387117204582215540295626225 0.0726962493891538296455177627165107 1.0754740965266941206360351150610088 GT 1 -117889229615398468493360354233854847123623.8906285732311444699704708016299957 2.0334546350273938256770722214300949 0.0594303845477347906895424361683124 1.0612696133607354489219514986699503 GT 1 -108625398160821677858195825754798634.7005137546023643522702260756522585 2.3329707871036420039874224700541932 0.0567374639298019970013348284376183 1.0584106299316268756805482826434175 GT 1 -4126697615736109061605119004667.0777948342985006560037466998325450 0.5486164666158145549698089324799289 0.0476995455658906276996631591132627 1.0488746905858740496837661701501289 GT 1 -282973230234997288225399453265206428963.3036368660972807003757418313193721 0.7497150041874521847767535330146958 0.0532770156394483582768422953877697 1.0547487477427764469299667937961114 GT 1 -295761533389135851458524747880641.7129520784731596164790659602918137 0.5027270052739391492119636901825625 0.0002248496820469772902444072199110 1.0002248749645266449672387751059206 GT 1 -37264467643596590581099367713697081.4120224042382286598830417264845089 1.8469627749680467729737587825200275 0.0016096432787502368934481609944155 1.0016109401463422855911034245379133 GT 1 -24808524378.4526894505585303272092877030794844 0.3613282420186104018186329121179339 0.0618992592018947577138918823563229 1.0638979361712926851974117120566481 GT 1 -9362182753814554158312762404993639.1477177372941377841016476758282320 2.8294824475901328268766490146431020 0.0316727607922516030755619205154269 1.0321851918011660738637476720246422 GT 1 -46459418406393433222277.7905822145404306075545033227237205 1.6302647854318246578856526511911918 0.0676484398468458452683381213701849 1.0700453249577698049260906101999665 GT 1 -139029769599570700.5577788925342363721562741159108377 0.8092733911885885004181487521863092 0.0941437574287736681593877548051338 1.0988746581876864063722535083564348 GT 1 -69644715848680070439665653360211451952478.0571736478074151977728059701921542 0.5841045339282610096415956278940628 0.0474501687353750941978372831920550 1.0486128570614101952290869434346407 GT 1 -48243201533569373301144253236799759371013.6592029389361594815244397673671894 2.4337414065011427040409341649170154 0.0987854402426951714115645481752937 1.1094211537758287949543411346427657 LT 2 -2053.4052362684263289956116480887114015 0.4796464378653547670662222044253695 0.0085416401340687061085216953336654 1.0085783290136891305147848071338019 GT 1 -4133412080817822541940151609378851870682.6282329897415307051748695703419625 6.0186049238309642623194848254292261 0.0692895306849294302035840836554715 1.0718070389925920857025758636004175 LT 1 -60831202758021039139659735.2146334853436270908040364102530185 0.0098515483630953341743598497308693 0.0991507586552820442659869219266661 1.1044173590757273271758338434025615 GT 1 -14147915383306421819546065452228444746248504.4730635809154700614859045904961787 0.2647468668978422172056330888369255 0.0899518687909841538884695276627142 1.0942577894314651879074603604870578 GT 1 -104963339908943.6134067293861944080146413945591760 0.3354366571143288060346857446092088 0.0018258073440825726683245388107867 1.0018274761619140244825332082010910 GT 1 -204705757872540081669926179648356803561572.3509739217899152827545292863399553 0.7603707280377408851980939868131752 0.0794515239498682376793398308653933 1.0827856169578520707635791100796694 GT 1 -2088916319437760090.7101210725006023803302503079913810 0.2127610268775174211988880521257424 0.0279886609074808435488277181106435 1.0283878088566977111444678587265975 GT 1 -123981330.9004863772075957337704671642811136 0.3535932561511753886745956209094386 0.0545772487332216813455342606411666 1.0561230956843237894305162776922665 GT 1 -74035059668045861709522519292305679594387.3510125509859438980614334958308040 0.0582041219511623390501419402541073 0.0108515728664500384191823325258567 1.0109108806285440912635014102477778 GT 1 -1247300643586703192071969584548071675.4829013739724786843269909043456500 1.0257671316110101226332638776272230 0.0144419030513713199112031876363738 1.0145472023779592029109768606420668 GT 1 -6127713526502273.5655584048278080064721084690015263 1.4093105230915616554523876305192598 0.0474990915820518452447509272519280 1.0486642182621052040385758779543794 GT 1 -213653127.2672209540058545036875054125444050 1.6667331130955447086403723985475235 0.0946857700610250470539949536877302 1.0994731801453467909123172414260195 GT 1 -3161509229499455.1498959688136853595997917354311752 0.8675764376168348052807050599056354 0.0756315588285543092984021529689616 1.0786445409619120116628579275068209 GT 1 -1101641764267076527597378246244051871681280.8037335194733610829409614816537841 1.0279842312961275095322086678483902 0.0594438108090087731692962437481458 1.0612838880692542198619276107029710 GT 1 -17722843792764667847053430497459077795.4997996535697105592888334236310023 0.2088211200763747806685435921855646 0.0951137140569912972173934270281992 1.0999459940686486415746143112307741 GT 1 -1606.7389308665793936047000421032776490 0.8903416606839653084345467484551967 0.0184501506637079406796095855049600 1.0186224776238101338008658860312314 GT 1 -221985635039945772232873270063.5967131052102129358604118272715927 1.2966282497842527034155184747584843 0.0326039938780406892349590652415688 1.0331473470678097416276978423475332 GT 1 -3029221087212030134072588.5758174601480871446461434452825790 0.2078696689991056996057228768649057 0.0443657541465930363398276823693091 1.0453800271556531474908692026946254 GT 1 -82380857529.5262791803643270821608190011415971 0.6278927819986599109837907988592538 0.0125568095576425446234086000854221 1.0126363125276644232258085475539253 GT 1 -41948153626265605177324.7451901354106664671697112951062311 0.6079277147645103321995694769126677 0.0694130507119050187263977516052896 1.0719397636457532246601350464477930 GT 1 -24472531.4639827767267815263172069160575529 0.3416038062961194213153713453456532 0.0304808310590685063300483994990989 1.0309550325083733407220435591094246 GT 1 -5861712.8156737107730916107870564003817746 1.4863025714132401172680950164949172 0.0092896109611363576053153483928634 1.0093330284942281309438775691533706 GT 1 -47039242148024059454455366860694.7525758143056651745964999083780926 0.0202626081377323515792257643249224 0.0370707804387754772924007692959017 1.0377753698216873183610200786431350 GT 1 -24744685827922182.1439571989727749465884966137174102 0.5945081296324550106770035863672050 0.0723755701796693562533070005861107 1.0751283373581588920880639127549067 GT 1 -26287420933420539.7789531776796928471773054420802817 3.1948631678218846208484335347989142 0.0997792767611247096741224337775652 1.1051152976830168383177039977112107 LT 1 -1482326146688672846255904157452725973944.5629731569946967690984338314412166 0.0139119928375925960941016435038153 0.0635837769073953430191261519089947 1.0656952185553919619597437864461746 GT 1 -3.2100289280491091613487524503307665 0.0205615255472622753611956822978034 0.0678317306911483089182382239552161 1.0702419341243730682272312539726815 GT 1 -23602030249652393.5379021721631720802085407017981447 1.7626306003533962119131293410245973 0.0759190738671887809690478559494653 1.0789556287807495730008842530536176 GT 1 -1642694164523.0060950073532539242923536959623924 2.1736643919099517449273181439882096 0.0874684469570035071788721350255741 1.0915326154460627317139434200450221 GT 1 -835021364482847961667211000539963797193739.5861269115425982163520169593410607 1.5513254766102007423038270467785118 0.0206701124188879422511562162348890 1.0208867293898242378778726106812688 GT 1 -42995238268889.3205537180751291954174275802920740 0.0552068820067668486427816090634535 0.0819971044415155327689406267384980 1.0855547341634789553052624969752534 GT 1 -99.4302527051229782658322704406462457 1.0578054993968948764094184700872201 0.0303300595783960046867510723807297 1.0307995329954600590204994658513464 GT 1 -433448794640748911605.3065873858246233456866861402346075 1.6233568777976905749652579000648126 0.0506785013731204821452446084150605 1.0520077615301311978111326211614804 GT 1 -1203720397.7971043555115217857670893604474963 1.5632584991686351579520858971654831 0.0048167646790966152823622247200288 1.0048284026767871851874073241893053 GT 1 -82135941993245585106679.1101097016610209281754195596364113 0.9218766568396911075351482451575299 0.0864755343261768751926021391063346 1.0904451211758929495277935368689521 GT 1 -20268125531664932093394961529.2078394117781759285431507753487216 0.3710519177689285519038086775923923 0.0601337630742519313971954468574155 1.0620177149866769165093702790686545 GT 1 -1111415956724413365684103.2169535189216383256248669129699920 1.3339887280586496688677035483198295 0.0826689710265856171758175620682505 1.0862868806204280754912741340448719 GT 1 -13525720967611474179.0467619422460196056174826244689222 0.5561150887531153270113324604646707 0.0604276941691047247433342425356435 1.0623305010560932351864867135652074 GT 1 -112.7602982904726905515882608784631159 1.6410646768518914975146542514517912 0.0390740091289792562235075070310378 1.0398578855986750360345235169029135 GT 1 -36312918692934908868.3428052511470478134580267770607337 0.9984450837856838387064380697172642 0.0451941259354026174632058588778434 1.0462472323949982405299579825663730 GT 1 -1.1327440535261912889889733649036714 1.1981901956963553943826337983571237 0.0499448051554619795891751023422118 1.0512351962389248438406921236382175 GT 1 -3109539519714561662279785.9623940273705951464499296007264534 2.5300510288042804853160148869691550 0.0489071714467096215194195526060268 1.0501436096827854463284844838822166 GT 1 -914122588015235705463392.7637635871226834484857709273367222 2.3909532989970536534125655795446871 0.0271876372345072543599391751261883 1.0275640594160633247616220451432438 GT 1 -2.0884825812780266018387899627546211 0.3017348417912645519733485823378589 0.0238958948282899845563864333140733 1.0241860331224167927161323924537681 GT 1 -5201067295533277809045559942537.6954938585627078727784992599788964 1.9454465480216563705351513266442575 0.0428240598999012527368701248356883 1.0437680589720387602816652886294436 GT 1 -1327076372492660155842261223319673806326.8497407120759128650283013759783128 0.3000909836542272310858105674040071 0.0673357843117360436461362200482982 1.0697100403536514346164140595934701 GT 1 -1347747866675463753225.1735622063042475145457548956320533 0.1448108100340651994825258873978066 0.0048427752590540471636556021671197 1.0048545394915491222812584193881489 GT 1 -179951047018.2421006654100019883527995847899557 0.3472890692005865644492572371871883 0.0340584824041487655082114014123626 1.0346519873933309839811879417173873 GT 1 -2463269951.7914502224548483434532618223449475 0.1834614229053264519435417901439970 0.0724935115380101810323024444085328 1.0752554888786660583000913565412572 GT 1 -162.4712199452694552159345548832739846 0.1527791086510083355889972771480925 0.0857224501101235816428643757061759 1.0896210885375057723932070185458908 GT 1 -38227.6051346337054790286602105786231718 0.0616944130619384740467584312738598 0.0243652045318853625308033729981280 1.0246669475649035813253228227644016 GT 1 -14483694792.1981675251194294544191600040515399 0.7322993027611006801428082796136325 0.0553170609944325178045926927574687 1.0569059220657258150312741429790207 GT 1 -14866791196416415340471771123453918294163.0213883161565047950751115510519780 0.0035604841718963502603009668831957 0.0685037177901040041882664088674834 1.0709630801348290854643257257496006 GT 1 -3894912864280.5074337774086631147030843236244796 2.5799280148749410388370881987121099 0.0565605820959553759005147225048322 1.0582231261936970372278654829151530 GT 1 -1691189615935651694608521.4534324734353219621207668996646085 0.2082296361782350157724625484768976 0.0857027110253954030882939637560988 1.0895994989538481486656178148914391 GT 1 -971064746152338739043066368796.6556409429945941189739329001279839 0.3545086857194854386842264034823238 0.0570894786426376262349390645417115 1.0587838880645817170278103708496266 GT 1 -361699122318613633575541120063167214264.1877372204319805540590083730754333 0.7337591500007746584876777653820212 0.0495234824724535665664283886972252 1.0507918227480563090454851001437273 GT 1 -215861480199258280947385313115.3809052116261959049797123974293793 0.5032380347571056673817327219419608 0.0139020523061702055356132139848827 1.0139995908813608627268804227626884 GT 1 -1493734305611055353644122942236378.6709181259003675991878417172561509 0.1457873371363926520888692576000886 0.0568700658997107872787576716786709 1.0585512178233026859203423999337808 GT 1 -7346391000813057538720648308713.4265196364817876418259026536159593 0.3621546322534376825346880057780395 0.0142753515672723853316462564241998 1.0143782246045926366051257167298628 GT 1 -5.4634088869652635170503673285766068 1.4825936004041657237208068204916440 0.0058961955667506886866400840728405 1.0059136467587368085338551642127086 GT 1 -11904178290909469685654462571572063459396653.9484083170322296862554678403573456 0.9414033415669806645416330811328799 0.0129724137843404795790725046300954 1.0130572903792984175788930465821154 GT 1 -497778084263837240483131706523085135057560.7955845106551466321388551938540818 0.4814389896157782809495097743870594 0.0072630092175584604066023794366482 1.0072895132798137793928840482161305 GT 1 -401628027334601112340755.8114500707566082031621882948807816 0.1420916100930016239450995310807540 0.0463146802637594614245387201666068 1.0474215154734441478593881279948313 GT 1 -2580499644.2322517192117255508846423572940239 0.8365219710234888820473019316412453 0.0174946856038608025725855901111214 1.0176495261987550313976589061659080 GT 1 -196038984426269737168562253134888.4557629352030814095159016661659682 0.3631425260710303400371480177076690 0.0592557213455957029372603596120995 1.0610839312125430974596488773810497 GT 1 -72118720051697747094217.2782470280908763749929372627293976 0.5941578304681301042782304196204594 0.0687999906047902348862070167785761 1.0712811919156061607423330175700881 GT 1 -2579.2614176410208702944318865192078931 3.9477118944233288111936121872137245 0.0916795630660513579770469022351067 1.0961580585245752456404044041839689 LT 1 -24823135994625827280597332355.3595794254716705621065582486580691 0.5340917630732117013361353976581919 0.0833030236375568257046808232208222 1.0869783124136036037935614132110783 GT 1 -840969163154639586.7406733474830135962058558409282318 1.4448962151813565664225154877396088 0.0307391769752391609736850208883193 1.0312215361021491249788191387822243 GT 1 -45156143460684424578858355214.9754493502970992624324223309360640 0.3820544530073440173773563124742234 0.0483257819778194109435017255842782 1.0495325107171716492207918319951844 GT 1 -342190359220768573331935279401593868.6453937528017646998478905767767131 0.4403500525655262974329058839084275 0.0459079952260894904750541806923702 1.0469951711211915724832188617171131 GT 1 -69.6852726663132190342773632201876179 0.2880566412611750412705259318623431 0.0814501495966887600552038859815720 1.0849591020889850168506708278392385 GT 1 -222108380155510441550.9163769813538246549124435703830880 0.1110161268552125979676265747385273 0.0147751905602853071575886209578151 1.0148854309175014606826305589226756 GT 1 -32967666292764669141200274018688267366467.4266710815313611817907423245691248 1.5693861292737492501696427623150889 0.0575240147726602878061112420229679 1.0592448398494800472763416706331033 GT 1 -26883034302810149399280231658316285.6627091163152305009155231352440109 0.8729867722496416892263465164829993 0.0629593406437550812915895248176276 1.0650286045621756809979156289578995 GT 1 -11936727909194330365966.3794050524102664657087218975601402 1.2873801159264998102287207696915188 0.0936847882356274259592008209718237 1.0983681175931286242408581518389829 GT 1 -43331568530019148279554134895076.2623533824111234731076777661102261 0.6134675977361123218170521716566246 0.0802000452970998107957841667376219 1.0835990731229986783358377027102439 GT 1 -1718339869185227362744432569741475736982545.3199907876258951343765796883344907 0.0270648468420927769620682574637181 0.0938405653186519782925794494526781 1.0985400119517212847774845896988715 GT 1 -144662377481344827817658001.7302632644928488513498792940907239 0.0692149498979807353911850797793005 0.0677610493565872116232353747719649 1.0701661123469860777409897755239012 GT 1 -8246762987378591526595942388.8416817714781010136103791179873803 0.7750817151354585773939143847693354 0.0513694529851384716614317678401391 1.0527358638487638579627605978314827 GT 1 -996664663.6179118227916889434244470813822169 0.1952927539182433328280452948732252 0.0978434060353372973480989965511229 1.1029671664879253773809094741048539 GT 1 -5247281463104825447407699504.3434438614648344757155241925117102 0.6381224281818828378952332479525017 0.0301334244569143688773419146787588 1.0305967679322227397294071103759417 GT 1 -96707950.3702700962611216196137541782021361 0.3264626289396700418114842681579778 0.0448624364410563350918979194038783 1.0458999032635203934882596447800734 GT 1 -2618649035233423.2881985052137491266817960138487743 0.1435725698278670659582550273292009 0.0440352954950180737420648611679796 1.0450342865861630549252384870136298 GT 1 -93656872505701362177114823660.3830513508347513263334239770012294 0.3135402717673127882630850841595240 0.0750607816401112689989684552519848 1.0780272535099020525749322645265906 GT 1 -24835616467981978923975868.2303289034011036318230225173838763 0.4829581014124297350521239562759358 0.0136198359879991494889699330617453 1.0137134368110855332742327225759148 GT 1 -423574416423093155305605208.9507492193532682894809088190205555 0.9197893644622189790947115653091893 0.0434794245822853029635466621065329 1.0444529791803267230911590615964493 GT 1 -111.1262040079085087792167746841679937 0.1065502481822385413761279727394587 0.0889523276646498285009311733114899 1.0931600534147640878085374248191979 GT 1 -3335942504531755182698.3650096174294445112467965738215109 0.0222169144752557124336255287190174 0.0689016978057445098682881296070031 1.0713904195301322007037881003673712 GT 1 -82995526.9507668524315400393690955583390555 0.4422320352106708518718776195049723 0.0637306263595146605601910205821231 1.0658520515578740623706039585700235 GT 1 -375151010211539233244619923621332825288.9627516617353296857599619659604338 2.1269013007357497069716133688859038 0.0585189602320684594572695603963780 1.0603010694117325747849375493144769 GT 1 -13729915564490022469.4934146572994294917785374271967794 0.1109389454406242501640458250569941 0.0807452783218181041554337593959166 1.0841920223677335109496728824835997 GT 1 -57753988323793054969981753064014879.8015131149927774754632942289070157 0.6557032144035332676822100514812853 0.0962068797603409885653279448457405 1.1011547940723682561729779971513408 GT 1 -139092346248246105146.8391749242550999762860250093366679 3.0954906663261241734977668034268367 0.0877048989720561498178866570450709 1.0917917655585936610506126501921557 LT 1 -29426159515562234729451032.2276061366924098131338347441246835 1.6796214747810374589548652529131652 0.0978103011746395212406601474188431 1.1029304719123510829720126821097270 GT 1 -8303642.2880608253709607918180905281996714 0.1756453388195795495423956085869796 0.0782814699490506008221784989167775 1.0815153839739627106024456187222834 GT 1 -71.5406112499624513122402493192798947 2.5241665590409339198401516360018671 0.0594262576053695221918093532550841 1.0612652256649779084631418542424836 GT 1 -82466938051.2859163370852823578665936651377057 0.5850839665929716177474709803337388 0.0823236532269941719320755230551040 1.0859105139548420867971629518168980 GT 1 -5393227.6896370696362791812978202790630003 2.8582039866692582205453426691380249 0.0551382237006539437586792872949022 1.0583250187492828253592578499025802 GT 2 -878.8367208681070968283928782918171589 0.1572258594697195048615490239796608 0.0066305357565484663162090408256376 1.0066526154128448094914602343537657 GT 1 -3390557934745859450048491708560869834200475.5692432374855872763514699593529740 0.1809946905446744920482501274509560 0.0142241924962014194982599909545233 1.0143263259900846865543878503999510 GT 1 -18.7139310944059757716634744998482373 0.6329968199543627380593820803865693 0.0846259962739147288765555710796957 1.0884225499793895128749863058287912 GT 1 -42575.3492311061338149562902644144141232 0.1077802534565642106848450432458925 0.0302347596788282255012030084393392 1.0307012570637963026771015391128274 GT 1 -18848350529.7884227580848990282293752702569665 0.7844256688670744295113581546924855 0.0857433303203199897740292547253329 1.0896439267321360385656223245980344 GT 1 -6334930.0166790523629201536264271712087742 0.1927601855467607094868711479420489 0.0434478798649162591043585866797991 1.0444200011158284603875944451674740 GT 1 -621807526675593657145269129748.4257901003104836878284889975706350 0.8777787118770792242313263215379071 0.0754731228246225801690331416061883 1.0784731564570702765793865510108435 GT 1 -36.2606734066163978250954486173405433 1.3538573565753275534024195301655507 0.0139171451473907593557126171299593 1.0140148966192540223199132841673153 GT 1 -176791165234456226587480982276811433195168.3717254069334190698248766767809175 0.4265656735887878570968275486421543 0.0165387420591319421374987517101710 1.0166770339564967156404318702452690 GT 1 -169161167812545133591309035319400.9039217124799673982653059731824675 1.7990446085878592230312214727020892 0.0871052127625216504130489344610547 1.0911346435408034028287572843379934 GT 1 -17890605033596.7864469570377020351747233734967431 1.9114768484419587998873581278503091 0.0633135259457677081947075610941401 1.0654066588689267929974172392444921 GT 1 -5247840819504583936.3233458205071415527067326034011085 0.8225919002341330609947205465919811 0.0754927295655366960144351168940739 1.0784943640058223592988340044887479 GT 1 -7817062157332.6433789887523762836545595066702021 0.8052701292904236675351294830739030 0.0993343040267220532412620554539427 1.1046211268805597968610939951052936 GT 1 -27492642629397710870116013880.8418988180664726733990516778485754 2.0057407305655999222762645849733035 0.0042520060776990101461781392504755 1.0042610715623314989976757959114207 GT 1 -210861045630721456249746893602830833.0941614137276808607130356420407960 1.1659465246444674195917340272535036 0.0480680880137775653184870990197749 1.0492617677713976448609081934048500 GT 1 -173792091785767564.2748400230488075922128707494793684 1.9175854524830845467233181128713991 0.0248798257912891354766571371040569 1.0251945599809592620482967825182336 GT 1 -323285625227083600918431708.5684285283886474017581798495566922 1.9512456676765307624073251214233563 0.0989545071036351748803269585566125 1.1041995310875618346889376092533773 GT 1 -3807052509374752246523.1171280031355842831934330044182347 1.0140871077418524330378371567825416 0.0869245369728873040079454305300947 1.0909367478848387872677248000266246 GT 1 -1109002.1633382862912180336593759585612982 0.3599788185308177852665423809048645 0.0272331980343221256219916671189481 1.0276108946213832736670243514815269 GT 1 -1195883097461266220499276838671630456806.6520390766170168139168620435942020 1.0050695412708576959135597294775933 0.0210103005779986806067444689437259 1.0212341580371097969491631431096419 GT 1 -15261569072034314113951751041647.8871548048158350069203999119432748 0.6458080251830810786508305639782490 0.0923918339303928781399539106448971 1.0969425286845701420899632612402686 GT 1 -332805019419624515492694095845.4081395655668867865527416021849070 1.3735364084603607135050015413628587 0.0416803150760504341445463133833790 1.0425738563386989981932395628746541 GT 1 -1181736201578918661095304.8851375482614149260343581479803264 0.1011313841644367757370952641998361 0.0246610696772749195361059856484571 1.0249702475465962622240019919786199 GT 1 -7916915.6257482143478086287776728504334736 1.1225640611787120411331194739809283 0.0787669155730731385870794994152275 1.0820421971918857431314801106615627 GT 1 -53949210991016822598526415907905871.6845538461960587996003877281495095 0.2364556260295547589586557158166465 0.0416895993697903975197340048239354 1.0425835444822902030731719626369605 GT 1 -33347386806581663013456735356653380.2840373291842555486081395881594815 0.3414138827042493656950332219031858 0.0241149887929368841267019194530044 1.0244105158961459916779515967694655 GT 1 -18907199958663208574929165089958575261.1400556991338408603870624044125785 0.9343678519623382917653678842274640 0.0858567064937557028810792977306052 1.0897679435510638524663629916057767 GT 1 -582548674052332977395094658.3074296423017168103269729895684595 0.5659895004202614607855873218170529 0.0547297884969660117192273907626366 1.0562844542624525532206407399076465 GT 1 -33773644589034921899104597633279112719.2423925340755115416189606926540798 0.0292396920000305781370891439302550 0.0812747575483704820182825981453937 1.0847681758095909699360465596165668 GT 1 -23138855762732450.4314845999906697651460533477913555 1.8666333163082441836563795170947205 0.0160873424435731391367642071540697 1.0162181485154280746435290469743230 GT 1 -229244587432951620029307340787808403.2166743892254726079452086451052166 1.6323901715729918416434262835731338 0.0646070600552224942630224845830465 1.0667885813511016740910595042164582 GT 1 -2875034453.5971773996389700228897898980788128 0.0649256273073406965106007650572575 0.0083277106384696509453599746327732 1.0083625797421903308971080840715788 GT 1 -281678163420163485766148.0185206112487033429394159139745453 1.9296034973618036622316037823062195 0.0742035235620072401055819738756769 1.0771008563567885994759616394080611 GT 1 -9190760581.1712321400550027463530406172154952 0.0241182783559013043973280330757798 0.0400588633300637104570982541291794 1.0408833123689723562465202802614828 GT 1 -41863670467638771985957155069433.3286051719785156781614672486727340 0.6284504916809417426436151603393684 0.0488019976523148146291604422069118 1.0500330337468733151180230520354482 GT 1 -36848486059818750542221126547.2600719336723853897943832200233456 1.1908417815022590462755903987894525 0.0343605405491539500270719715169611 1.0349647448195603779127797116703267 GT 1 -475448572088980295551471971053458903340.5517735465267269095022658371276411 0.0931507652757533176696035842803441 0.0414133076701482163375331443752273 1.0422952747545409265927614834978713 GT 1 -157949203803108632145884122.7977276133612147047977332017058165 0.2323262108601538737661984918534092 0.0370979749843803263014767368781684 1.0378036116997680033646689617940080 GT 1 -52740575808679719664527005678798939713.0969705766182495721999514845091803 0.3520806275094267782789886027656266 0.0853129308405657124201898073746189 1.0891732731209183927801017224478905 GT 1 -34466761591193.4884038212561357732128950350706213 2.1477954388299659962093832356216888 0.0210760106698258342129983759533107 1.0213012805994876137770423258561061 GT 1 -365780674597626479480013915377891.9346429646588024034703280432311976 0.1080592300790253457002262302093226 0.0955847183061416038357401406378723 1.1004666416690431228579289871109095 GT 1 -274628416649825027066903390.9848712739327894998388749372159130 4.1115336492345129101996785760700112 0.0629840740441698222019127748386561 1.0650550001370051979453995712519324 LT 1 -1264982617951524227323453385452687746061955.5436401263142615644254996709665904 0.6819741240781129596282607325383184 0.0203188900936327027475172159531355 1.0205281583256813142080046130488410 GT 1 -1406311009281458314323458535.4406037361109821693052754735243430 1.3697162568835842361952575717442428 0.0332599099710980711564872616617243 1.0338255993578193287872961417088734 GT 1 -72617748395430489403845133285117980.7732108514695773596392693138935319 1.5749754499019180857185248739806460 0.0580044007296737861650917702400358 1.0597546761042381500781240851845519 GT 1 -26971921744382364400641319737792431.8134363406831837076260035468252612 1.0813165007122845053324674574133001 0.0443506802766367765262689824883428 1.0453642535988371305092440802433933 GT 1 -9901057796962976430154875243130501763.0377332973626288342877271627056322 0.6610636413266834819717043604190127 0.0751539030441058743129935924257971 1.0781279369819809449478722566577342 GT 1 -21971920283809661385478.0434106243709715693343597880230170 0.2504723052849015355213416656429549 0.0330694334047424428792530812532083 1.0336285890072519287927282262131423 GT 1 -18721855854.3042933237157630068140697477701509 2.3179785573256529912704333048326942 0.0338594463508760105964707136128147 1.0344459546818441644958949043782491 GT 1 -21908846327075014.4818013685075368935520328341549222 0.2241645752335302834008472129441182 0.0765168249474901689526724804248123 1.0796026981850255791307993069081820 GT 1 -358376.3452672165566500811685253927277797 3.3943543429235557720834729791591861 0.0595192708379011134394344913192237 1.0613641204434267454102812485724772 LT 1 -5264164536505443037989347784848.8539493762318794640683091443888767 0.3415373574512401445379845634269835 0.0422133822082097954640797539129356 1.0431302629902051786477522608486685 GT 1 -465389956937370530.3106326616575339742555908943229037 0.4180431168914936807836634957931315 0.0084618206132277445560977084920137 1.0084978250699816441308242068631286 GT 1 -1.2089991038244074340418984749091563 0.7448272071509315157277916226923010 0.0292429974254097325858710563515488 1.0296790968248196924982209861604069 GT 1 -205148951488894273910667992284462.6582247262606666886692695225371015 1.5269393806838845580400261589851668 0.0123060654090618229618226665789086 1.0123824120295675906770355742879155 GT 1 -35953397255987.3230743523137843993592106706980880 0.3923524779899358703138948737690711 0.0329576103307735796767912282466734 1.0335129482236191858088141990812640 GT 1 -25968708.4419522281979355728003756262871870 3.7646222977949005448436932627493851 0.0376793097184994427681533373350592 1.0384075259868459367462021266684359 LT 1 -595516901334251.8834565318324343328877558606182278 0.1229746890566207932219602635151761 0.0510819423222275378272788020132990 1.0524328300667568166250681557913745 GT 1 -1.9408860854707342147303253479425173 0.4884648895933452372463109251694280 0.0819232366699922931690789028028198 1.0854742716724258057761042626376009 GT 1 -2152137051398.1699364653085028424244884833827964 0.9703201497646163578906183027194701 0.0917115808320711985687324288023131 1.0961933085630363158165766104135314 GT 1 -376414272937.2226615002075743840415737679622169 1.4282204728699836372228460492398741 0.0540043934792775987134325992330746 1.0555173542108928998093143735482622 GT 1 -135399535951247003008875714361538.4293276629080937884323258438600014 0.3366179641206642694955869584734064 0.0975551488727334102288370369245064 1.1026476974263888101621461710585998 GT 1 -16091177928202810750529436249494396677.3478201260246655862634628046192404 3.5451472867043835750358474947131457 0.0437362783983751383353548016187168 1.0447215445570228152455737617293432 LT 1 -6700008884730.6317996031309771827888292786478745 0.4029818617512177033191753350972710 0.0814719721395145866277238313965255 1.0849828599743583656245379406384237 GT 1 -317587432.0699000511250551284298503185591192 1.7363807965348438299349540778056668 0.0729275650258988672119374767676469 1.0757235773383470605411772784761376 GT 1 -4074669833193047037554798437205.8936320506558642488746222703888897 0.0393538799130831753570950761131346 0.0236227797982369337078107693069586 1.0239062711310624033256004950625453 GT 1 -358716579246550032131246147679956063051649.2063989163640406333568966658246221 0.0947255684571283179653609722415592 0.0391644732276491121713577925453746 1.0399520326589696048247409716564435 GT 1 -326915.3775428716305766592429918264634586 0.8978281185347590592369330333733783 0.0584270312813354730826667760559561 1.0602034312660482661000543830753493 GT 1 -248998188.1447972776173771369086712389569137 0.5011151816287155647949212774138397 0.0638000877571029703335747902925578 1.0659262438537304958111441750185198 GT 1 -8967705488180832221097047946722516459085589.4718084536766049209936463523824815 1.9522704931936688317414188476799215 0.0758515718999703572838134412193915 1.0788825837692158656639095245407558 GT 1 -412.1458004721571950655641464650736630 1.7975788330396794473914333325637072 0.0841214678571721439081182374525871 1.0878715299320439069055982585861769 GT 1 -7915792540720173719895604147814460673089.5365795983946076884964934782556433 0.2232194148573358276832057344407288 0.0204143320119273647744952432402682 1.0206255844847393713836436892846572 GT 1 -2168355733031858488613416674.2693990712004936145517820771735720 1.7444108743318473763394735826571237 0.0603418899259717358829991399042585 1.0622391825647933825169601980906756 GT 1 -7544856749819122605311640850461468367209.5955159306597090272307745118035171 0.3413252465517486139905723666500843 0.0904490266652051998273421076835407 1.0948042371466247799559459972285270 GT 1 -5107640551172287099122566968393289759.5095685587296348630826459116313933 0.0900705079081311399322759765922500 0.0220481786447658359050218379178962 1.0222948725787134575171350038341065 GT 1 -1109470979111909949400221771997270.7802208516762982862671971983195070 3.1080120060555234122774144117582002 0.0038956054515549481740920442563563 1.0039032130864620509133198850436226 GT 1 -7816620458845505806094863494215.7404269760579336030366587673590824 0.6680966588620592819324946267755225 0.0370939811191160696114148083744361 1.0377994639704271479856903576215518 GT 1 -69975807615667765032895120808.3901811010570100787036602041696920 0.8649547347507453267933632416421857 0.0038646297199468011491606305493086 1.0038721166972045965952233379092624 GT 1 -7164.7479545992096682580638134965624933 1.7185922818423957336697238828515951 0.0752075910298117597763127068996504 1.0781859893911938279278363433894270 GT 1 -11.3567225356424206045479359327782151 3.1412234353851596151196120488793957 0.0155646075441041526322600877598830 1.0156870077837319738979382348506036 GT 1 -1822933851859612744877180571146499.1738366588351875172935886756337951 1.3811887204769544105138664992352821 0.0529332876651373190350877817084453 1.0543857423059158128960910929305118 GT 1 -716965772006943252.6740254288339625572868286034946289 1.6268633144928599965910153527946687 0.0555037886506809243333956300091507 1.0571036033251462422236047252155129 GT 1 -319487325867461293.5644094693513988539976353009806075 0.5038661879299996883020461071812091 0.0412249696965648868518844075845054 1.0420988194149293637252262934669280 GT 1 -22725076152966836964201257641768185427.7033314590865809927823129578227810 0.7427797697534476315436821345869680 0.0775302648016268020462465773813098 1.0807007109786656175445810260318280 GT 1 -9148.8121339184315040705351979942858213 0.7452739530861960354495445196847913 0.0300835274030583577953299297734816 1.0305453219172522920249057797129447 GT 1 -2758139855458185666968330190.6145492309055477264652982711979508 2.6188259649838952635971512341183585 0.0122775613671804706937130992733723 1.0123535532610874917926522850653731 GT 1 -16693812958691889142986545807612381303695385.7612842279481158197586159607595816 0.0877740448409977689924157540369076 0.0219781045444553809685679142038808 1.0222232212065726390420797227146831 GT 1 -63072185647708773232943813488464730134.2866398535705065040691594850862718 2.9257101808811838291566597478043293 0.0551059314877379344526958699745009 1.0582889049129737639424123291516153 LT 2 -299746087572886251788075602156573981.8672479837651611905240000342284844 2.9495141540579395335589855141700681 0.0390773572539033051278962691799617 1.0398613698740393770596886600605346 GT 1 -1.1589061041551321444660387142943603 0.2439576089667812415701865341662510 0.0495596267225244176551885412091540 1.0508298509756448388425089282016780 GT 1 -516672920034757348141564460.6703668726174783716950386003710844 1.1337512936085019844614928148978024 0.0410862530853938579730894915837870 1.0419541487957330592516730501870605 GT 1 -99637458527186584002597053287831620.4156000758561208124732650570401801 1.1147866944176359204839365144115904 0.0193765732695486817536955385442905 1.0195667598500325934113483482250273 GT 1 -1118978580272895242690698.6829617878043581608379813673851987 1.1519219529805381356244402744178027 0.0000631274916136577652324953805088 1.0000631294842376164907791847317619 GT 1 -7688877989994074722.4383756232938797405682990896440855 0.2791866971086817073148381681781910 0.0395690888681934503972285948570044 1.0403732294680571719373268347713057 GT 1 -1540843059583074740703.3911738859620146714469743873771019 0.0224932080103416087542658235789039 0.0955973434351060509231012892398880 1.1004806012043812184227865579347687 GT 1 -50761595310422902691432239711.2079303457433492734149559871374572 1.0148179436231307877728807188400958 0.0430708496318751464166202360551070 1.0440259233229256053813893503263249 GT 1 -33385468867907.5124666108967601140052781395662707 0.1378593616906669146180217056364974 0.0184690360656999631398687014002842 1.0186417181989967875157737867966137 GT 1 -121396476277144.0313025715522117760973879348180623 1.3428972108567372038835783382980201 0.0674577163764312401323456789104446 1.0698407841237528950481387793988840 GT 1 -5677803734.1636961917689030493889003022095213 0.5335102693525316854980232862743457 0.0877495271384108713074503052170457 1.0918406853192203952026599479031259 GT 1 -154537162597.6811644740256033320163625157731007 0.0621576256716462199697626522624145 0.0091064960708254504308879287450528 1.0091482136667220622117418572199019 GT 1 -3943197059745410301899881978174009.7768660186792553730238703611203785 0.7940873012605406221153087107350764 0.0250914986140213662002597737863656 1.0254116571203118858153392100375410 GT 1 -19677892885806491197938966729655.1231087274086975048749275752580527 0.7044132273306080340831617104076342 0.0417190997117596510750264929127649 1.0426143286582983550432744943700546 GT 1 -35888513903023.7287915859185879564286861417518731 1.6363458366220943010176539774697953 0.0404707970990830021201436362324860 1.0413125284572349978249519342219221 GT 1 -756667184.7815751724020028820027379170785716 0.9542909698901744059252043077351714 0.0181737610273492951881753605808181 1.0183409323408354062751833698625565 GT 1 -10281649744649028314987601975553511015523.8782910457866992517589491263561548 0.7260705077906193849412039112258709 0.0778117155896665780281551703975793 1.0810058632477929726992275627386902 GT 1 -11698.2277691939571055616757462207268360 1.6279738623888263349892298820883850 0.0118983409427901996222157962149636 1.0119696927448703849860064392770022 GT 1 -7280450563680049.8396118775276461879099374306359676 1.3414862067383746845690190028415132 0.0898543828973623795526381138331062 1.0941506734787756348105468525462586 GT 1 -96562803699240956037440848529654.7478112731351613158264468976283082 0.1601074730315707336290408945725426 0.0540439863419589543384550193366300 1.0555592082015180875695123097751091 GT 1 -68873135887110452437049232540232.5727491238859470336168643003092897 2.9676770693006598072295249604772639 0.0248674234474288213160988211320194 1.0251818412768265386469468429560084 GT 1 -788966336005956566.9657886890763274208561632164368929 0.0251662496627612118110396287705380 0.0109303047377945453715308090788762 1.0109904794053369431581327823267112 GT 1 -1.2877468213891747101249809222077919 1.3868777511175659527605145710042494 0.0961883321301336345762303673289603 1.1011342722964468692070132243945530 GT 1 -2336739416955285717580252679900608637.6251105410042764662710516435672348 0.1414807760557264899437303995530926 0.0635078832095327753455450269752918 1.0656141748691762815200010732174179 GT 1 -204.4115567135739282247122793125334076 0.1720579195531224114777747139751830 0.0509995288391056006412949405872025 1.0523459838908841731298644633248991 GT 1 -421694102423696.1138817894089517122651148015973042 0.1719191741934431302242056103969455 0.0785408799382033166480909617505059 1.0817968652417608950701736101149223 GT 1 -609832296923.6911798365061126060784866935970997 0.2357237050272824761851905856336151 0.0617013243131502955635183898751416 1.0636869630834312322020536314554758 GT 1 -860201069424378902158.9788944785421338281669273578915168 1.0980862658086790287638409291828899 0.0821453173226681458257696678350370 1.0857161986291670198274470356644863 GT 1 -409720902890028727427154037482881788043413.8654583554836945201122311653928687 0.5098626386175456041150564018444776 0.0736593811698541471023618013821400 1.0765132730626589246239874634751787 GT 1 -845756907883456800607064434957.0934730556480015502532427804639521 0.0046910631787735686096756339122271 0.0932827062347306962969373116081955 1.0979245712074324864821151018579840 GT 1 -12191092393587.3709648804355020692688241836953415 0.2442139510803733362603874476998539 0.0845291419353279086577839501922228 1.0883167470894795097387935554659915 GT 1 -39523944382369948231633201511692409979.3138118308481701929018269820178124 0.1184097879019953490339993217390166 0.0814221068578699755720617106134958 1.0849285731952600292778320679842297 GT 1 -402099376611875187117.9368073011196339802509894679136890 1.4859584830302169228084463344567248 0.0457495815052551176841671028707331 1.0468291487980836404577141271379074 GT 1 -235851198524823820.6233578010483546242669583725813921 1.0279140338871435690509575173939289 0.0293805381687791915005136264960056 1.0298207908714111915678145109341546 GT 1 -262774137481612261.0171971170305950322563340802864965 2.7887200880015371727252932055138701 0.0456952619996253573757458672672757 1.0467722266751263141697009150200978 GT 1 -326166.3013533982629204892958750101799521 4.1323751599378448063593840029219350 0.0628505175513552690824368583149051 1.0649124764382519155510532823813164 LT 1 -125437974882164931331937453251718156116.4110513579210291100250493626041029 0.8464465428037749422680728220772337 0.0052160187766486676464777340397654 1.0052296696922333553007697942731351 GT 1 -97513341887270590538505.8907959217958831018870469728557984 1.1330885977439902220240022516258608 0.0180372533240773751674031924795349 1.0182019075224976016182645925675566 GT 1 -25541305438609908122.6873257268621678148871520791181850 3.1873026942253525761276405459318702 0.0709041323381294066959329419739039 1.0735433510232989340048208419054815 LT 1 -15991439701.2724914549743960553911765751924652 0.1187171162595789330424379259015429 0.0150463083039960766497441663543926 1.0151606524218127122600970927192309 GT 1 -34508780631596598437853.2093374074341644253254732570696589 0.4079457759226288695076954961237814 0.0021707980198399135101509291923593 1.0021731576172861473177014472145506 GT 1 -26.9614496921509424376200577883758367 0.5159312352852035127795356201404136 0.0330797034478855178765453335971420 1.0336392103466104943166868504849400 GT 1 -144513375485174.7808246134128042288576045415051687 0.8418049253816322236515753002338967 0.0928930239034932688506368614602002 1.0974948908423521851338869052934089 GT 1 -4292.1916232057838113304191386962493431 0.3209572771948850694435294303006401 0.0134216386649756454976545602946049 1.0135125229843183418927955187394945 GT 1 -8928289897163361536412.0532847098087152976773299370752373 0.3430304927957941731843240475239752 0.0138072274239009075671392352078970 1.0139034337769666543096795029330927 GT 1 -115931.6877250612358101484594143537375706 0.9465309101408482430628026350957568 0.0889670925913838034981328922741069 1.0931762600819098107467818147016554 GT 1 -62678.2371458890971642871779463081361676 0.0420664429471406001182133874894151 0.0029125167083590515730121818179400 1.0029167663385657559859098711428421 GT 1 -930512175.5187127726129732777017584779384378 0.1306431631765104442869019822328747 0.0409016256257471100538098202983523 1.0417616291988361093643026922033389 GT 1 -12.4212764994608080301896326731911635 0.0783182278768006795027702601191163 0.0511953070804422066451603333096289 1.0525523045877992975115053572625422 GT 1 -15064293020425.8590884100805807949816523333441327 1.8870243975674146229171475645655515 0.0026847255469901002735498637424965 1.0026883358859152919778319802824887 GT 1 -457176.4314997073496650033117934600626083 1.3392002322062210142813855752452876 0.0853515720756563454895987540643363 1.0892155193192324579340232904440479 GT 1 -319347077654414988372260629340485591.2880601757174823006348575137530844 0.1018812127269756755621608321663005 0.0834126047733500968257714052886363 1.0870978586636256784989802026652866 GT 1 -3229901.0065049245203147625286918464866196 0.2499137060428538580792778175927238 0.0854591308419285322154444138211648 1.0893331219824097567986602716289969 GT 1 -564329507469117110732028803661.4712653717295242453492803744647389 3.8510160899903023245057131945347343 0.0321390833140059765748465516275114 1.0326668831381897937918415734381482 LT 1 -157489292999704626852630915972725506470927.2512313845262623497437312852380616 1.3524900951486159588595217137684217 0.0008662753129592089679998582886166 1.0008666507462528522054219707008974 GT 1 -31919978207.0711348925415411036814976651045014 0.5746822971293125388390472641759114 0.0912898251311228570722017538770471 1.0957290751729753965695574933611521 GT 1 -259503081.1367601009090836585954025340571409 0.5607866231363334313963329834960784 0.0874637164414358499537704075510832 1.0915274315121038971082556713649047 GT 1 -453605214309250529190422776947.2708964033111034789513037784536635 1.4311754212281121662771543551877614 0.0972090893930825182893674625624216 1.1022643020924104379498401241501260 GT 1 -206798845369092366102.1035895140409919364603317963255821 1.2211045546622177698304938292081972 0.0288803853180795092101915084494008 1.0293056311696668111684755683695538 GT 1 -6379135.2831198003975488382202973922335796 1.4925924318068916806592796713401369 0.0906561988311700066616131386886097 1.0950320372038515543183226437242806 GT 1 -13342404267587315476207415706930014489934.2617667509741084078444217661102990 0.2326290453155614788184734986509800 0.0586432864632060781171829395154182 1.0604331320189328991883944962074499 GT 1 -4822791162114734846762971139016161102124.0925698434891411014506170266821375 2.0257418464063741485264382910319147 0.0257518218137811735944992980655253 1.0260892047304567940354708557290529 GT 1 -441437230163616630693008744331.5405534632719114950018351466830255 1.2131699436208111897913446718508463 0.0642321426366163940955159860395381 1.0663878489029201211254722287717723 GT 1 -80355270215542.6600927279401135893545246500096222 5.1061697516520729127823580743390672 0.0337014813349738415467869040488537 1.0342824669750210507654667108896188 LT 1 -2373618425219901710882883110406002460764646.0997004068565680926673539097134070 1.2981659831621908369832057177742580 0.0675449875343678742016519523452827 1.0699343726326299173169618297681079 GT 1 -1550630567.4012658420066029965311680573098882 0.8320826763214444787401351518201025 0.0938005659548011706913066059278366 1.0984958712856009951524285234571095 GT 1 -786576991861756400774883763255981170641.6385077798519147359171963859363575 0.1856835183316311435143692147267098 0.0158303535575767861229258944124397 1.0159569918687423103194524323563109 GT 1 -2362458972793463286800843.9655109445640873698361434709012703 1.0558726295995018087626755957426885 0.0868578295071100578266831419544283 1.0908636925549783069467154488757295 GT 1 -12498349.6079215895541353234400052501953579 0.0258791281695676276936922521000506 0.0028327730072812865281374987755314 1.0028367929021646493588930403740741 GT 1 -418879549305604292984579380.9326663359303669554106776493298438 0.3095315524054741094511790552758539 0.0614776702830787896112677916214719 1.0634486302530907422759881741154092 GT 1 -125830207668947726171971071432693.0021666319904952041083986101802237 0.0141430134033559279889161757447338 0.0078178656338082880289855181874368 1.0078485853585419369450585535014988 GT 1 -32858501536994854968.7619406663488593193976053752745449 0.3456243038983170506961290029445406 0.0700662180113804897003412682569424 1.0726418975326044748180115947463520 GT 1 -177320686163980815602576015246649.1951636320206098887921513516493861 0.4407641167745295059773821220012780 0.0003972473668234377303123502720303 1.0003973262904608252971580562370369 GT 1 -322369571034724787148871813269094441807.0369913266691340418492545023793774 1.9264174931084196001235575104474455 0.0525630834714967875500874111708347 1.0539949231037644691873068196853514 GT 1 -36771562802649324.9809643884293634243344442493416615 0.2010482229043815195814004939147073 0.0599123168401542441016579206152423 1.0617821281111094393692199019315718 GT 1 -7583798278646498074828402059809220624.9615063822364162622506751459241318 2.2527871781642000609090086103660330 0.0006960566895391107180745670504758 1.0006962990494673288750952861517442 GT 1 -31138888391050.0175556424332187746832054596291929 0.6786021429765673790422465022200354 0.0779022846008833986924026007668581 1.0811040790465345812709883238735042 GT 1 -828.4141399541648905136798040266050575 0.4586776594295971049283905585340362 0.0323820329512615618895397736777631 1.0329179317448920126465040790628714 GT 1 -436083.4853417559734601510802573397590350 0.3386398241061542671677637448258909 0.0724049310916202688395078465073834 1.0751599895825705948112800259318342 GT 1 -242320314.5054339940500640756267426879431768 0.8635043895268463915325673311906327 0.0211587106246342363007557868545855 1.0213857646341746241582124239130776 GT 1 -269264538002704947.7839316105837763848929433238488814 0.6934608681581949903401731400876408 0.0980510788117696398590964143870346 1.1031973889173845603125184561769466 GT 1 -1.1442225475723100678058707749814483 0.1264962641336619473729461894171507 0.0110359346070202219340813757689828 1.0110972823036768556927840724254637 GT 1 -46440064772.4893459812147152894329263274398509 0.7628489237529978174786822867690877 0.0281837425833314394338344089350575 1.0285885279707342533950286926522683 GT 1 -3814728226.7413685852933876224518783503925935 4.7360395749104732049529532007209731 0.0782754619538213096990866077908248 1.0815088657414951204036210179611339 LT 1 -77016287616934966051.3699932233542735303166640936242837 0.4182491117158153883140931006944727 0.0552888244045835132548396415108153 1.0568760324946374982445782246832201 GT 1 -26304659958762678083830262714612111286338181.6072307129498401879747588155784906 0.0023267339228158330187681862434736 0.0243393823670006934468163029737791 1.0246404808754286767417102256115877 GT 1 -72.2594115371512096284061848936838505 1.5678835228386447774810609404051820 0.0796790531228557641632752347583228 1.0830328144736697292223792821969658 GT 1 -203823784525017793067930279787.7536602727123100560139960867101348 0.0211851577565264995485810192168835 0.0992598647269014019984692397290050 1.1045384810951717061075401339682959 GT 1 -220526079051930.9959298590508446361631959597718522 0.2525921711650703517416159997398901 0.0767923293023997030778180615781326 1.0799010744482615648585952398993073 GT 1 -23687971283148195754.4135598630886984150437865650099800 0.5351781476177499855863651846999754 0.0955218365816726593313215146923138 1.1003971165959503027180366513470930 GT 1 -7595037047188651184.1810570343105442698385969759376867 0.7691928405784384063324056873563114 0.0603261777549216396040240548652584 1.0622224615473081174723399247509214 GT 1 -124453699090884070.5295810844567328359421521796970635 0.3556515908029961906175282187410067 0.0209090318877956244290110252978143 1.0211307213483436760854745728861007 GT 1 -1909842922118.1377330655460396126604458603595768 1.2265311458072732163941374918242123 0.0411093488289191199615673620542916 1.0419782344048279515192383361850179 GT 1 -874051603.1486862947449071105360172846351819 0.9362410211683089414023822894639697 0.0423290789301146635297193512777652 1.0432510662131409640988983893268097 GT 1 -1483170.0840815766374525762325828989524374 0.2011238144284019646303783938708124 0.0378845090081030699490515547460333 1.0386207825160861260072155753688644 GT 1 -303150659107310306435011.4116899040926589783549276561297767 0.4375587783913700959701943788394703 0.0581952360857355903332462423112379 1.0599572828776990091915629945101607 GT 1 -384587700367973502860962348.1908760727705919476419124022747507 0.2864332788602523334196364198184554 0.0911608583664396375349756998192406 1.0955871623635361070672022459008366 GT 1 -2.7689375258069478059607794238480364 0.5016656955912137006877129489468764 0.0211913938629716407672371106392517 1.0214191549134225757430715361220307 GT 1 -155761252746474088557621531959320341.5794596712860810585013265759778049 2.2747164701835951316243120062137411 0.0607639776953829525745056283739630 1.0626884764012452056465335544057806 GT 1 -160033634134272323574870268.3265032945980059259393385486964137 0.0450160916019337469347123489863098 0.0277220801707804714287418536310942 1.0281135896404493018645920461136225 GT 1 -6720371297068979616696040054490302160356.4009866962074231966852777069918521 0.7603266212933206528749204542722458 0.0423318989750242645343209853036299 1.0432540109084424973789913171298107 GT 1 -2672139727367513748781363812003687207184.9440097153096096239688894420902545 0.6160397025809906587100693225704963 0.0081805386417837024673944250965032 1.0082141828588631125568551349505414 GT 1 -99835467412114.3134850347824748497762568624872127 0.0217017385632252100164629807333211 0.0433171485730959840411795965294576 1.0442833411718415435060639955904678 GT 1 -73994919400995711037101315.9967339402239083456088841238902762 0.1901429080521099769792850478684016 0.0947387212786750611042283233993366 1.0995316711802821863109352672110082 GT 1 -216608787550042273403945595045288081.9453273820348277800207322660524997 4.0778196772241731286624108698578957 0.0074810275898717347730768768987038 1.0075091508250289726593567556959432 GT 1 -689322857991862436154679.5780368439888466269115875176435523 0.4079317366216041863587613501243429 0.0365373649784073660407067057876315 1.0372215723450919168097568254571748 GT 1 -1006849549945768684530820748748071444900303.8800096083235151273991321051299862 0.3165887836317282181917738517144946 0.0569821298514919801374093708359046 1.0586700462116830850038957676803279 GT 1 -7394079581723606846802806317804467869697.3166753162911274279190897510935843 0.3158182295767871531842723189758904 0.0100804927279663904071187087133331 1.0101316449448206540093188811695150 GT 1 -6967523824886388340143629.1167140128513844200445554221284760 2.6025047100160809345215115043059727 0.0326553405576461774427613891617093 1.0332004256850440228057185043281004 GT 1 -9221015715195.2501361923427846054629316599913496 0.0394314347323961079385428563124897 0.0056681982324349883120098041355606 1.0056843234307860440339624521183460 GT 1 -212116495.9341303249152052392242745293591347 1.3489846773149822038169915869309605 0.0957277431211615389557226547387248 1.1006247948185151623934811417789786 GT 1 -3834716124165519196800332112741755.1032159882563650809179853932533721 2.8996954486207906688527232681110846 0.0060846319254529107028812703041533 1.0061032187325612321867847560955400 GT 1 -52391793868.6624346065557394646764257328871667 4.5310421645954642876461912791411979 0.0188751258831163058544673572594263 1.0190555348400382583881912801384759 LT 1 -23121229372825177.9497255259046758556544971041700304 1.1953498869788882374874069183636211 0.0560495490679351760614484215692954 1.0576816026336245108818234247197665 GT 1 -661616363195744269723933895370809135.3268392392681514472894670781605161 3.3911453336582965623110247948611279 0.0508051928957084732623828663440931 1.0521412252485028523750446360164983 LT 1 -1073580.1025979505296864404519803387935095 0.5502206902753148680593442732393036 0.0543906747151841300262082713514849 1.0559257706141079857156856245188133 GT 1 -4019019398339720466.5810475474239051032165363946482554 1.9975244140247634552577021270757400 0.0022319304142873598701638389776199 1.0022344248833198401773059921316938 GT 1 -340889730127297196932395550156898979.9958348451680890025855985169720155 0.1876125376298449949832597047216155 0.0892776212655141109571545665608652 1.0935171715967546231048851672276292 GT 1 -593048268921020176450492627801417430.9948391769212410439258777074931936 1.5841037094493481647642605822418512 0.0915411314867710682649357340014109 1.0960056662344020361327496494909944 GT 1 -61953747231855172383211.7026942660532385952461166063404136 0.2390386770367414012811862418064859 0.0365856954098182602717106280044240 1.0372717368682407246613846364852775 GT 1 -452492944746120291071749952867804.6513176659782413865691474762524832 0.8306466007077560210102485382683789 0.0673029551022135268649683776556410 1.0696748415852202813473579524251004 GT 1 -245299614462348.2158884401263535350730340794166397 0.6910690977237553358128989764754435 0.0164084570197378240995286034850217 1.0165445667044497713377776237040553 GT 1 -986366554873870.6960823675833562090852648075791457 0.0178929131940373283556262118243576 0.0454088046550157130049160408653685 1.0464720978501275614411308722640054 GT 1 -2436588.4265340543714682680098669038263581 3.7862920813339853361324196646606906 0.0812727748187043055303617119720039 1.0847660176806585448336292605522889 LT 1 -2612535970494273198.6195773728725563292196335401679427 0.6708173466619587104936176619819884 0.0804659005607216614003286017492499 1.0838881508627105215513329814045124 GT 1 -51945587258268076286947562.6873862870249581939134674001173106 0.1519303870396778964357940225783847 0.0069241343811530797442661400702996 1.0069482174335285267127940247313142 GT 1 -2871426666734821724197.7660146211034046745566511158587447 4.2176705513945807696345654251385557 0.0472352542063406615147047423020592 1.0483872622619648235992282664922304 LT 1 -1690548390208663.6985520241843045152372834073261899 2.6049455627997408067980482954002184 0.0634022070052791227627114630718325 1.0655013386365814516715303631575399 GT 1 -1832799184.6902960288128098087263426963572545 3.1517873660067485153673105943988563 0.0122884290755587021415672164471327 1.0123645561174985513402929511654712 GT 1 -11875830116035369035912099074770341913743.5853497686483239278029830212115988 0.3398835162309735493083711278396860 0.0448950084598475234185372456119285 1.0459340057587322178646491413490767 GT 1 -4703610497738170618.3088842881199303695508748949888753 1.8848220757318244382083565009038308 0.0897406017041684684499015124927986 1.0940256670188069740426822085472900 GT 1 -16.9843038775014560519925047262946929 0.3899025278983417945677527071715845 0.0797649933090200217606638119469116 1.0831261995034050200653627500311841 GT 1 -40512788.6854782804572541716402181162369789 0.2162421247452779723019414454458493 0.0033257492686057157647367544880226 1.0033312918649736014243501892974742 GT 1 -13113608862172189880468889457034.3001083283911164333124534048203075 0.7008834286492867850007129096218919 0.0811521960823821868826639992444301 1.0846347808771694289360592767569067 GT 1 -28953745597876222207394590159664257247.3928898404414967816213506621534323 0.2048637264160779789493255126184006 0.0661656260541336164746925442731556 1.0684561863004992657196216366381101 GT 1 -416490944781756944612020345935.7911534301867602156456196779857129 0.1086960016427768771686541510367050 0.0704018098167524984349781485227651 1.0730028397632706548507643628529773 GT 1 -42517233550232820730213.5845903900105051057696317655556790 0.8258092268398228805656079340325634 0.0586111109811308099887303288326541 1.0603989526990771257183929853917214 GT 1 -4454834323423573381685262687035836368656799.2576037961328206106690800232516564 2.8329103151418634775371963802170685 0.0116793555515049452468576076666432 1.0117480949701509405457982865039109 GT 1 -1051585131671561016279506691619693292598.3721711440783591253092223186158695 0.5859022596828525479721823266988361 0.0706170775209213944258675226319735 1.0732344372804964238713243188504135 GT 1 -1323277693277947081746069466.5509956137850744823175683019118439 0.1783230260355216786627404043198264 0.0388674786732414412284625328303788 1.0396429801155984248295880587685510 GT 1 -317326188510.1758763390365490944129644945041659 0.9776518325655780312727423441764441 0.0156045524023138322442487106139597 1.0157275850211487479209749161743396 GT 1 -422817173229188598421980741589742.5836065753541761615456020238235496 1.9940889745342990822837628742713859 0.0814182165221601939030555305307902 1.0849243380318615543298204971616031 GT 1 -55470588670955049234361040570533856520.3491998675128005558510147341698763 0.4626746319735172830223801729076561 0.0462639867092606370376593464413025 1.0473683614548400758384796879038548 GT 1 -12711461449934719692.6827239385551185933109175831421884 0.2261618032959395516329633839199141 0.0232180367907642909060112224267574 1.0234918215391358442958878300745363 GT 1 -872.1387818358256144642940724424482194 1.2679397546783571642882234807992961 0.0924867309924397820706531981607923 1.0970470914540901126310086375871553 GT 1 -27453869.4626674130484730014087763129700530 0.8628249865088709385955963478709722 0.0490150580256783167743418338209274 1.0502570504482011175598206228809861 GT 1 -258415349121056.6861844979779390128745784989380664 0.1788003166576109500778614376224373 0.0880822184136902924475138450215638 1.0922054447411179241199329350764187 GT 1 -1166.8013879526892822509937436765305889 2.4047861254722716902148138421967533 0.0349740630318681151084903545008887 1.0356003003171663872474380745480420 GT 1 -16685722293746725927764207.8534641346398126072126122303004288 1.2853683545983016423873578486452714 0.0992609824078999890063358530715704 1.1045397219432790067256341800726104 GT 1 -195.3533392030966143241422605235276309 0.6986199524353308574970357975396824 0.0468221855994677057109498552250514 1.0479538088914726828887640891998061 GT 1 -440598069606071721067897773.9682887786926565443879740446962152 0.1013726959152369804542607348909093 0.0525510518744480839080426554752547 1.0539822240834453093182632599621250 GT 1 -43690421962728539807767912206366584.9715642035927893339350767997939019 2.1984360547139997459334518145211962 0.0296217412276229470093826572498984 1.0300693260010767068896507292808993 GT 1 -1238742592579154344401210449765590691445.3917496828105961936565683731681170 0.1399691873147483673273353987439285 0.0875826776069844710244900293251969 1.0916578032271208254102037551564324 GT 1 -2461572945790882202738124941683900502.1128255465694681886320106980153077 0.5837839203403887547854235042761878 0.0218568447284964321401196724098311 1.0220992441259380607018792663478492 GT 1 -322124374806424387505439379426396022276938.0321852355442996346999902988312736 0.2019752628937697806602763119019407 0.0791199420793989566021646302008211 1.0824254814783197098203776506702427 GT 1 -35789877091915038548517.1328109940440440604344599557363991 0.5139429946207448340043752312405059 0.0048188204243304861713337228740637 1.0048304683741222919794188125167688 GT 1 -62099312690527134818124619623.0221026849104662388622601717865491 0.0573365371953071708366721084616758 0.0708101940092238166041379309906390 1.0734422488834961103712949008325157 GT 1 -589395181497836223138258087951672289696.5711042032776873699483571687580818 2.7332770432300051192462991743203155 0.0588964442801723622535025110455202 1.0607020968652320662205056902429141 GT 1 -1733536.1111302213823498133905906571549912 1.4667913310337968689387706369538161 0.0938822732283443208383247962252318 1.0985860401317224789614468379701734 GT 1 -2271235137828113721333142325084.5107072982407480179369852845363538 0.2679565844776001648479495454968394 0.0768868044170124528877790957172281 1.0800034132306699820956211585860499 GT 1 -199992916822432.1646187762769743225605201830479572 1.9390308025969054006232321808571277 0.0618427666380104326145362835776548 1.0638377178381216453458887380893770 GT 1 -845155508129.8953423734754127514196863538301824 0.2654346693722563532864505359621037 0.0088702877916703412291286867905461 1.0089098629972140699742112695461815 GT 1 -3908152.5551372315429619903314068399601391 1.8592247053035086605974189942892244 0.0809292745039799564389767988615766 1.0843922003972103879754621041978848 GT 1 -36845.0879732636915177522558498320855774 0.9851459085579334111699116555689090 0.0311300207881138065639590954777498 1.0316248564742537623961256938424589 GT 1 -8208868945865951266201495145066343.5143622694846965037105197076344854 3.4406338544759874512000457354187946 0.0675991442314579434115861968227917 1.0699924540082770064026262307680312 LT 1 -90971790831404485422.3496425016374886387758496803390573 0.2715897351222965669361458420464147 0.0176936434366118417734085800935334 1.0178520472203589944411578960929717 GT 1 -3697350156354314799971794236.8911572590919728029603007911963675 0.9497308297173579220010074611207991 0.0327233782234160336848017368408579 1.0332707626201934575399449503725299 GT 1 -17.7858512864723780557343740938403067 0.2255658716001848118975795722905243 0.0206960128636248624999408969891964 1.0209131768490178718417053732420361 GT 1 -80022247688890092962822433666125787663591.3934043292971876256028218415715300 0.8492072960045653232099922603415223 0.0742289292505483620142642063507123 1.0771282987134893397414448752229697 GT 1 -74547517.6819724351017859718819813128771394 0.0356169088116206728889722669580501 0.0374665111568803742051376565180602 1.0381864198222399667450392070538047 GT 1 -203851427393214221333293356565592471401.9690425570606111899156752711015263 0.1581115377416924891896779242773763 0.0280647496538466957255418147620808 1.0284660916107796332184312090110781 GT 1 -145679.3585106778045229068565965737391778 1.5095708862650434127897574065272322 0.0221134351917931439683553370641971 1.0223616025779947681640468566397459 GT 1 -7854506424.6105583186492270286083679076375522 1.2050743542717855552383931355403362 0.0961119207542540574891773673424767 1.1010497323986601827695685631834651 GT 1 -7215590026559240.4169628162291937005908202926728798 0.1469897195051555001486810406775959 0.0210917026045307623687215043997712 1.0213173105064532486991591091662507 GT 1 -7013097527365460112.1217796743512410526188156440515226 1.0163124127295420560658052708611299 0.0406323196376058254929093438194523 1.0414808778253673988764842514645324 GT 1 -474414777648701784266987781022.1501204525556641747948820488284310 0.5927429117745395224699076907188917 0.0934920428123298250786197652376442 1.0981554709022378298997517273860928 GT 1 -369914758645255314195509.7413565115787546220010246759140141 0.2215382344282895034297899096736583 0.0397244932159612260997192350003117 1.0405350494595533414307826345974323 GT 1 -28312115217944144345627813986.5502779445329646629160042988291371 2.6790975935438478569855034258199629 0.0192808696577110619224460712489262 1.0194691699501260616280806418106266 GT 1 -248060739716514073172389995.0032047583857994800888759643821773 0.1278677715086357409816099557625163 0.0067324019778983019414214977875528 1.0067551668283740690485750226171242 GT 1 -136381717698982268834521225501003573709094.3591273158450974564966186260908694 1.7016087068346718242071954976992645 0.0767666229320496219193944030665452 1.0798732302120398341136284398257759 GT 1 -959.4406521527398535457422251580520840 0.2313084025083397021799590965823660 0.0496953545255974770967369410089025 1.0509726663474750694608818510366151 GT 1 -2378554752681557829281554140469.5430299380321997613993190801891976 2.6099334389157882832548409242736583 0.0265871935803147517353263043731708 1.0269470252899508557559278276228962 GT 1 -480529585070598310019022718270744.7345154751313120372742578905388036 4.6677271615593301927500433879743777 0.0274659481744561637698938669739894 1.0278501893719007299907552228389943 LT 1 -14558929069986592428.0628793551593592069198417103516596 0.5989144334208596616537439382586491 0.0647587815145244066419498567755393 1.0669507952815496474755439033284832 GT 1 -12241230756332046.3738602207630685874079497783564866 2.6413721899706088222797230692725588 0.0120247695289153950734716763378553 1.0120976519219324496673436069753510 GT 1 -843163730898444210.0881318386313285380526283841857908 0.9747790879703255602815703972855116 0.0262703442967410931996171358631010 1.0266215747463631271469803996182383 GT 1 -675642268660346453.7462094129461057387685845053201290 0.3278223494441739928069006933192592 0.0779466378717857382152880740262593 1.0811521806055135354735543269029537 GT 1 -3772.7908507343759102813484437173066206 0.7399053134908163384878532465074367 0.0846968592202834655296627790054348 1.0884999671762085172474589415020943 GT 1 -62429004783413.0507524870287346584194208996826192 0.7932070400870306691480400017612978 0.0879753641582704721833673651401275 1.0920882762882972020288435958156762 GT 1 -36918592588904.4260086947746976567477856164779474 3.6561789333781018030149967194531518 0.0655330600226042771577134418630818 1.0677790299435597642330167177558902 LT 1 -74142049113995002302963955063815.2548866300195788304087981451511089 0.1875951574443797064059632527118739 0.0678391541767117998164323562899053 1.0702498978315353671649989173889130 GT 1 -87244552694046137854.5688323132906168441272251155811271 0.2202021813780686212524021144327201 0.0986288337912805122960366764251847 1.1038381570242966460573562211317006 GT 1 -11705716264958279961011125844100044989531.4054726940668146966622258594902096 0.6349986367742407493139156082733271 0.0015638045428642172745822679631140 1.0015650285614386644852978800524885 GT 1 -227763603772391844950125360450.3901591307624698048340003873457157 0.4818352664988461400028534278088121 0.0769644204270050719436617898019326 1.0800874974725066574965898547313470 GT 1 -2781.5756198337356185290555239585075704 1.5789717529007577865097588856020281 0.0345180749342893251465173117244121 1.0351278980907611557058999974798258 GT 1 -90657644452276173168481271.8299952058209789379533839143758657 0.1993558229901133126723054544334014 0.0855115849508472927097714053639252 1.0893904793023674597266254433217751 GT 1 -2178774931583636660047346193470.0433156408611307072773457702774050 0.5282498740551887885686992329020397 0.0151578895654778474237364560746899 1.0152739446336048496892699473663115 GT 1 -1.3447806153919797173634022494407999 0.4826497026465630328206560699851093 0.0638015517404368880859935582420345 1.0659278076057234479831601344223221 GT 1 -2690355527887995311180.9896095068947805974396727981888086 0.3601005155620727513046497531496977 0.0646989755709473032062373148666737 1.0668868502476173505570518348312834 GT 1 -22957681338694930505037.3493082654189530219681521240561108 0.4582775901445888545354847267518055 0.0200296033990704872997720274930424 1.0202329153238486031966151237354044 GT 1 -1959739204161820050329204941854223951.9122728836124304677065401730712812 0.0680631432912643933763470178347031 0.0573000868766968960973907394578900 1.0590072727373474543307081299032929 GT 1 -10521.1830253326795145664707936785021929 0.3835926050236418599267660063192577 0.0405735026668805683812270691240115 1.0414195716452388783180149672799816 GT 1 -17406427365625602351133521855407.0670792465216404616032616649986501 2.6605032730963425453122893285243337 0.0950198169866116017707092444172422 1.0998422327447338637026361052478239 LT 1 -46670026656874853.0916486163716198520848990661826076 0.2872659559633201135629271022351657 0.0022201139818722757739257205037984 1.0022225820885806412149771615639282 GT 1 -1392163659166003906982979857268193720.5334034645704850087254283584512410 0.7253775469448215289696428108733758 0.0868492980382975345048814162930039 1.0908543496188684826429813829620271 GT 1 -2157747426882582456.8391540158856903522904146578727345 1.4704123992675930901607849657977669 0.0641306245997369796932762706721178 1.0662793684397172503253787435937158 GT 1 -394780207496039255.3580771646482039820601740911838827 1.7980797619981919748701971688073266 0.0148988322859002789368966770966976 1.0150109347450009768907503318079447 GT 1 -31591938.7160372675784656430024630575404938 1.7251871268100180778265031931761942 0.0114074036946086573492610877419236 1.0114729672073280900237225837992286 GT 1 -410184783724884653257421412251.5700442189239203299020634676880555 0.5444452540183351230916529684454766 0.0679385384232993034980989280540167 1.0703565205731334625496857360914227 GT 1 -1601751937562551457681486193133.0816736207254985903604930789235398 0.1560061610117183227758528475508843 0.0289545409803171515006895139070466 1.0293819950825780284098514046801742 GT 1 -21802276446661613029015.9616977784831935213003902952858634 0.7374674189016865687927469742851083 0.0874722444276148073644981096240737 1.0915367769224524351194565071466595 GT 1 -587958.8672922649144049005039386987117945 0.9813448283983389849372205533329416 0.0548468924987929223008835232493000 1.0564083460921813373183189876050274 GT 1 -8825304981711.5982357992454875325236695448383114 0.6303302266794505417275917434977560 0.0237476989307346911875677715619262 1.0240342207818357520410990938451853 GT 1 -1349556174023593951740.5321798328851780425033546817135975 3.0509104899114166084141108684550083 0.0270401560423238218738233139288661 1.0274124679893215190138820132020999 GT 1 -24309.4073721291042695438890450003751126 0.0560724639236494871587318223375947 0.0049959483465321406629784244901479 1.0050084698182993696314104165055155 GT 1 -1711549211675736107411769453129425945.8064193654553727948920152722952985 1.3102462983069578361779093903597660 0.0743456820877424487319575270076908 1.0772544208225020548410693412147753 GT 1 -18435308339076485212720976125753806810786.8850407626073725556281560977055737 0.9537614320099602234381363170205744 0.0014454765589426304098849184425655 1.0014465222680039578651717525623552 GT 1 -2218523.9167113563790821438147398555827831 2.5084078330640875447751201493932061 0.0499614455864245359296348107215962 1.0512527116178049427585094019692773 GT 1 -156843374784682128666577041043677529936790.0613350467287967530150382261270467 0.5929362598601808975548348218354389 0.0575254938289459336907133964198580 1.0592464091811865250590092462276427 GT 1 -5046994643891.0056207071132958639005592310312993 1.3491067197628068983762229245252345 0.0477811598468390874346685958892098 1.0489603964973136127962778074036521 GT 1 -2411882139189374.1670353651371366480344180544955529 1.2118189541502893114593978247099164 0.0518290203123393234567027419442266 1.0532204346694045639105572036575114 GT 1 -30220673312163967193454759.4477439189403753231705478301246121 2.7878368437323214854950235177626673 0.0037164818000295822419879318303790 1.0037234050773270475985262892475018 GT 1 -272.2764692710983471135487066160023579 0.2587080375044945845420901551183523 0.0815523698824575649166650861964403 1.0850703926998413004035972505130976 GT 1 -359134575664283210794.1842062519065856578172748139745731 0.1755765910226580954252128997053238 0.0661433688427725279302807593367326 1.0684323523672615633825154462792817 GT 1 -1347.8831197452091745325080582556229291 0.3452178237812105464258053370541131 0.0739047693036509469762347896586495 1.0767782086989400496941530152536385 GT 1 -12894867895710730664660.6329952333890409374059967315046781 0.0935919202181191239534725749344090 0.0821199694127281554586414875934101 1.0856885825365383376249570444324486 GT 1 -11638231747.1512784625129361654325283593641639 0.6318239562518246964483764290762935 0.0430166713030387437313195771232257 1.0439693080602701893805388597152448 GT 1 -206748190283512928615518693754.5467915235583476857323601552372360 0.0753287492625942091172705869436255 0.0886205530617721948116009844677841 1.0927959514948199144723435204718338 GT 1 -1878155726919119794.9823991995850868607365596206262426 1.6200140729509357942875290438755524 0.0709588920806771321300816126590799 1.0736022915032347044863047162734555 GT 1 -3262215085382926041199159261557645809.8371307731238925278598508009358290 0.4501321430156580429453032348888693 0.0585651530020492702275791303382970 1.0603501345561872418407139034205283 GT 1 -17545540600206255533661898419018751065.9060735689140842169819268343708588 0.4642211934307066381394469785595162 0.0696336109616711287191951885655521 1.0721768037114619100461582114982468 GT 1 -513641058543772003903475214122590899984.1249748830858072138077260655911786 0.4664807155962754873026287350628070 0.0471394703235026909803813356328955 1.0482867347509671507366489632004082 GT 1 -14571153161390176477582528.9499108037921470689025190199586877 0.0395736289550137341338984727830400 0.0517086330115142035139075037019823 1.0530934748052155108078757467488037 GT 1 -2696003234005900022213418956052.5028482106124969791794074785824657 0.3124908135516234196515618633458564 0.0449967006576929929199592507141933 1.0460404836986762056964806227809186 GT 1 -4434874558525002857817.4629675467988538183131488539781449 0.3167482583134034469670974720600770 0.0039096050926634519984702727162793 1.0039172675766984786721853474367982 GT 1 -3787491862464.6651162712712498762586779117448557 1.0590805189038520291622111141885710 0.0852005264783656632398849334845213 1.0890503923456635363117875145177051 GT 1 -274185727630199228694645168.1320035017240499259149629482180626 0.8736441300690588983751728173819561 0.0093882057328808950996149640757775 1.0094325527136172331878754187681698 GT 1 -512925111636291726777143652630.2548916225526081629141381941346088 1.8572483471647683398104964497560592 0.0980919105572651400148712241228829 1.1032426605162550179388383918315693 GT 1 -11855615449103417273937121962120758.2439848672899795366417378022912884 1.1148694560172904305122952824200405 0.0854746569698877408307897423689768 1.0893500990911181474188459377369695 GT 1 -2302584918735049802700107797105214696.2699497152774878525023417149883097 1.6870874572486323580751716419172654 0.0977453766884049949841435423040420 1.1028585112699903869822358078184191 GT 1 -122149702.8232303816574651833143159103148987 0.0242201215072439450147722428395513 0.0182555592007913969675731918082825 1.0184242480822365994901290455310680 GT 1 -286812040057.5564625530077179773700243636052723 1.3843617105679481239657747418732780 0.0730202989196546590638823507426304 1.0758236110882398402830657052831798 GT 1 -325359614803729696001020881326.8878446513783510034372994329979431 1.5178130197702678726096250087516282 0.0749477638435775218775922965905136 1.0779050715437114094287052808790590 GT 1 -19351242938400302.7794999081867242395251887643401306 0.7518976132187399198906690342176543 0.0665066379861824565562835405422710 1.0688214268838985346469210871389175 GT 1 -657397726956695252251500825.4371434843200494990633225536301092 0.7173435176649467587786405751234009 0.0508816283675003109369123643865553 1.0522217551343923957487745934408593 GT 1 -3118913781782211245521252532.1106604807910177895586314065354781 0.3142190729968580058728598282720399 0.0769577000717969759838364933063897 1.0800802167881078590491233000476258 GT 1 -181132358745426519.1245903406646073947997559656460180 1.0182955275723524135442597300629959 0.0677640158052839856339216916565998 1.0701692944210824871484420691967699 GT 1 -18397922622410785047097369391636326.2408379857215459641832380999446777 2.0228926387109089049320874313549096 0.0549555636839536099987982555069943 1.0565233300372572128592815402435325 GT 1 -391584953741397.5102103070772435334403598314621420 1.6107095242441366002938208493872671 0.0774310337595599869558826257295889 1.0805931457096172126927185255074277 GT 1 -190062887703920652000488527819975634127.0487416529908673520323844445182296 1.2251197595382253655428101162363496 0.0584527938135051109647075494455129 1.0602307928041110640754676983551390 GT 1 -12548536617692145.9243386317029061769697706916699217 0.3020827308664003010631747163281810 0.0765029955582978126916152553937112 1.0795877230495626725121327288122410 GT 1 -18792848051277277.8483702277233792764836281681402031 2.4259313877268108082053664203346512 0.0558849778026971805849271743883455 1.0575072747112119398760497678369621 GT 1 -489463748812386869362665.9493301857764935744879680120312192 1.9890855572133917177015001812491306 0.0029224330600020877794902247178454 1.0029267117055673149346381942260820 GT 1 -22282.7335769961882219660906534622747873 0.9490130030438059648850594915769403 0.0406693194926357141452177705617223 1.0415194454874752694520264942382435 GT 1 -3.7053868252514218905142011731263544 0.5328780114225727932988196190019955 0.0877947766372348311850869322005071 1.0918902886052052290072904224767262 GT 1 -36309078332276500.5898948003524321620792191531806030 1.9104566204916044824145265608797438 0.0530287891921849755498891770159505 1.0544865866722948451543506072114543 GT 1 -22719637784674786712096159953.7497702199538020985621537357949750 1.3026701904298031836060173448867480 0.0709195796406223538529264956402414 1.0735599773279104869467600371720735 GT 1 -10.8982308022248433688096083506514303 1.8197549251480361663176312762314336 0.0484010120469277413874365685041689 1.0496115640752616252874063561086435 GT 1 -930844855235702822756475.7861287091510341138154867988381800 1.3356881071886068836533182167882189 0.0885128195664426619109303045802853 1.0926777492151388177709853301248928 GT 1 -1002974637047875158245973045782268196549.0423397801193866984811042110126533 0.7811869118128148407067508546930163 0.0100653816226044483618083822747982 1.0101163800774079816257338188986236 GT 1 -348604361718162798279722334200578932003271.9944153145355923340342160732117862 1.0751628756676817814925088898676475 0.0110593996646237596620896075601612 1.0111210094913530096090387312729716 GT 1 -1118557318733966203164398401682066.8165569253914232621472977730706811 2.3943056783719925668051590752226168 0.0999314323716478254010056576863559 1.1108267276207003735013380516207558 LT 2 -2871457321649945834559471099104.8975592836418924827836731212504897 0.5465376912133370685095650626951191 0.0811224282387036920740731738556733 1.0846023844766244333225681657450764 GT 1 -4.4859276748124508007536300854945708 2.4361412395861573855941414198980275 0.0503615975955401387896969400511551 1.0516739958931104890144367040186431 GT 1 -3620460695585988818261521195568050790.2144513700045496012253060555496431 0.1096011837779059133954969033668539 0.0360856750037802348120784693778689 1.0367528628064117206095237908230887 GT 1 -46326932.0998996249453696300585877823315725 0.5559639161982495766003232113734579 0.0388638600182299221582803937227205 1.0396392151319784348430609322215682 GT 1 -64599104608620.9832846211538202044203964334114095 0.7290440613605495685002430539926963 0.0670999269413562060494374440918271 1.0694571867017465840127887018886692 GT 1 -22.9255685978041246085122522315601244 0.3964722922266036438697748143279582 0.0839736023920135793200583706002966 1.0877100963739172825739939852636476 GT 1 -94968864559853484322730313915011121021.6206358516503545266855997145623710 0.7008542114769281600119805973173723 0.0717019753374407642997354683451501 1.0744024504869928661042110365207428 GT 1 -23405.5412061779348348340401989001658764 1.4559106326063790095726559127871344 0.0399780575910317025494974227640617 1.0407991381054563252074894861054878 GT 1 -221742997183856416117609741.5949973069860927644012534349458842 0.1647780548231833947839936344767411 0.0959379644086257819470066584071673 1.1008572975026555826058259087446291 GT 1 -668044008302895004322863332.2814152715389842419568848747430206 2.4066637225914199897563763289272826 0.0451954642487973545821531765140768 1.0462486340561830121724974496936264 GT 1 -1716802838106528766864395799932319854209.9475983068209068054872604957671333 0.7394870181066563359025550419622079 0.0934599015732453560894446370671998 1.0981200154282493661299480360407577 GT 1 -157.2014796355665394473929340043028497 1.1363169938078621561048422335278364 0.0693602491013919342044458095436444 1.0718830251404202063198815985498485 GT 1 -34552818289.8079057764048334413410585032380280 2.3396042500113153806574532909629074 0.0199328923645694971612614096409880 1.0201342324829637266930148263223493 GT 1 -1097921321001186432511331782.0144651702009409681129914715774211 1.9027789047519039594213894499224315 0.0875661771486884651840495509705765 1.0916397190580756331755491007973268 GT 1 -183826234207001310011838.8470765723580691458629952451991263 0.0473460387995999128806795554122955 0.0739814633790441151156367993170755 1.0768610265871177197979580147077691 GT 1 -927079.6213741163767905835056403632223037 0.2817756358976631591296849893730380 0.0985992782513501480097532628199856 1.1038053680284947421732478244636866 GT 1 -25588495225840939.2517457675725039329569345477216822 1.4886818684401174247740852102564495 0.0538324312820943103686632690606514 1.0553355916653502441595685849613380 GT 1 -189723538798276929393112805873315522468.2506963986592358603811372582491278 1.3108492749035040296997695053069011 0.0539962653582154644277338520806773 1.0555087621137548637001398349447308 GT 1 -218.2880112296511371966441252959751825 1.8892946528667488466952126510122117 0.0540900701788514519677329741133892 1.0556079260687226348571541586908529 GT 1 -15004844767283457609317684158164208340304399.8540504632789574802845999870054848 7.1693308218208546844331970890572146 0.0118234134446279783271114672710829 1.0118938658734625107471129913110139 LT 1 -384729887158289036498302392116898013.9859190318084579695832506014135914 0.9358145691827161716850474444900905 0.0665885950988959447981181636317661 1.0689092268769336080823466025589135 GT 1 -38478072724764404.9308212440175996309941094713430346 0.8719582236204464436227993578982208 0.0101818509404507627938872431555954 1.0102340405448121678554495196409697 GT 1 -4852962047408598358639588596549908.5448412250941269870233589833747050 0.2887241138094361048729316654870061 0.0535985973561513892517131180975184 1.0550884842355327333708899984480214 GT 1 -281372505487.2810193738576099166966000515616549 0.4475457663384646775192056010070116 0.0033772357664500677784567453219172 1.0033829514997086765108954406359741 GT 1 -5088007028261070444642834981873137413833328.6993660281041447411103198074244871 2.2311565076830601090524057266626861 0.0483113969713549989936753722086952 1.0495173953578659084161244160113852 GT 1 -23290339445705940140928430490721767139606552.3112036323943278728251661337038649 0.8724715260114406791985222622249162 0.0417856996445663561373123962359069 1.0426838304580536020803634604109043 GT 1 -1.8551787321505109744625119747109061 0.1178006901202298588113347479678924 0.0426187870190091383057915182716404 1.0435536251732374672234328239526187 GT 1 -78756270815977.3547846778282426378113416121134572 1.5565577771965704936217214331060448 0.0458618014487392268607152868936573 1.0469467558123061011562585536148178 GT 1 -3810523430650621104754025158637234741.2386016063117313539249024815586956 0.1778292409236249485488747071041830 0.0036627382047009183995450034779319 1.0036694624547455211872256869133805 GT 1 -67827354640075380533488534891211495491097.1546500808462918906617636870929599 0.2304171137222270022266837631022560 0.0324309716122934399128003630958153 1.0329685094525323777544341827196744 GT 1 -30846092855197188901874652332413.4552663139894376556112961810882282 1.7644131158302950680511009603546760 0.0897077901220879524788574656584058 1.0939896212599976612593067653523622 GT 1 -1.5879696457189526569276679265619504 1.7310435285000031782255804529055721 0.0797223188877195525274917149062435 1.0830798271837889565478220701199260 GT 1 -626438988542212.9077969380441749270798798609457806 0.6105540912500229294908046228719901 0.0942503255009837812151899886333934 1.0989923085787884397092613999569021 GT 1 -31215855616011250868300521491823675.9138142057466886080384223982869947 0.0594266849831159427973759901548781 0.0992474664045576144032207154120100 1.1045247165958115501441649006578802 GT 1 -671447627429.8783211171325311700313341194622701 3.7455193739470162434597443627609948 0.0552741172332831850893764466575082 1.0568604647134980998553971817118529 LT 1 -594391994674.7758309167839830171579485272396806 0.5817563206011132949380866946100853 0.0177819742675499633847957848845961 1.0179419731401324300128534889110463 GT 1 -288436566.0153136044587691945780939595577760 0.6079854653582545210565084537426611 0.0863111987571806704444737591376765 1.0902652455451554294474432665476788 GT 1 -98791163659719906245846444915337.2615868589361702069667196826335228 0.0731178700445201351583089241415735 0.0322895191421234933810929167626017 1.0328223264647561211137455597768521 GT 1 -322618044668929884226045414976085137221.3169315947086693152796413434881297 0.3937593591716426159215706988254589 0.0687428003941510903125088535361548 1.0712197781978780696681323666845205 GT 1 -10199975926374005893884394182516694.7737050540467588605419173489724160 1.7411779775162226281962762861713734 0.0971631734333143245763598142335512 1.1022134433701690922326295439375378 GT 1 -2485737444593904065.4635804318945439460635690228508843 0.3733846001980421095980336359042294 0.0905834408929173923937965316311452 1.0949520289302157809030424914840658 GT 1 -117970838806430123420813837283664864.9725604978727662377823554223639729 0.6006346410987494118326236363634505 0.0104222418046495017910796652952966 1.0104769337068112602499726844545741 GT 1 -314926805017979848818560495778468259842194.1394079189933019635611507391642299 0.4675532707931602554864194505828526 0.0531425949060421588728676913100204 1.0546067725360404759900581441528468 GT 1 -61128599038.0890975684303019828187212117909985 1.4410784372428917301683949466521915 0.0828301928696586422412640149229714 1.0864626470636099745875604181795141 GT 1 -528892883583684151.5927892392502103187329324367273503 2.3843367210185891550328542318751130 0.0944873101940943090263926496651822 1.1041796646431979905424015286899563 LT 2 -217008849523075815.8206079005659582575636205633089317 0.5461381973801598836580147891162193 0.0811304349432880794443773623534672 1.0846110980851770238014364557445255 GT 1 -39442293203872401764495.5597046987960766139779242068039809 0.3189968559955285771744226323000494 0.0309932488523647964806586844788681 1.0314836999870186472398540538428722 GT 1 -94288962826.4542596983725145446203765407993900 1.8414377007219306189117840863165825 0.0264843993094190083831510951216714 1.0268414289355950896990039832346193 GT 1 -2897241842884.8731293419382709006596503485267171 0.0866957083455079724324934957241397 0.0609816621740212665784869553422376 1.0629202708634157462638058432997744 GT 1 -2397625400525710823026093921718.0614608858055357771245113159049444 0.9770942441676390186313560035509351 0.0973416314961333333399016138559299 1.1024111266028771070105283376381184 GT 1 -11847742.5565572151495723792394385482946051 0.4429332350967330938780206260892190 0.0398149363140445431090402028060762 1.0406292384260344883625571992218327 GT 1 -144128758621616074801213.0548722598543518382050447196281167 1.0900808338783720622076282163530184 0.0093785066622051020360206793889262 1.0094227617710396474662026455243223 GT 1 -69696780294233449215017107826716267080.8233957429760513326872783663382005 0.7399771823243971094336126172668077 0.0276077341668443934672283414739135 1.0279959902604506718121032437681412 GT 1 -29398005371103371990716096135325397360.3294179097281173828160629423735334 2.5389248143950387696946760750536016 0.0610039325614318923867721649156087 1.0629439878139878400906465170468141 GT 1 -54306902217147311768058393.9531779838444274205213024856689053 0.3786641289898831279033495138890863 0.0729085361638205059601028988845002 1.0757030517935543492394192033892377 GT 1 -3846.7728906694358748608980511134825769 0.0759964907524536247266629863994526 0.0349388727731437016351556397332396 1.0355638353727800673693209674491348 GT 1 -1055506377377823859979156101846774559.4859581688285596194523479808469031 0.6378102874708642213029465759030272 0.0436333688386087413189496265383237 1.0446139340511903211202036414595163 GT 1 -241160742922979983023319896263.6408242589792724022873311895378708 1.8748973139751226924972689935828556 0.0989576131296791028853519384250244 1.1042029782291566532661397833230418 GT 1 -717028415618978.8333672456212605143074184513704280 2.1119452535760086850857614127555560 0.0938660704722773661271513357770677 1.0985681587784224935727828863012104 GT 1 -36623011.3901957104353149557914487292583847 1.5115859381448030468453047396344619 0.0469449388318486411871722296159246 1.0480826003252202440074312625479748 GT 1 -45777937843684473601277685275153794640861.6317722488305844788342482848039176 2.2866831125681611491462669887319998 0.0079860125994915170308151769527133 1.0080180715945456877270410081534519 GT 1 -228.1800926999766747931291104761346942 1.7429166130597553851243735847757809 0.0400780817422657541728504187164870 1.0409033329763311552731664541677812 GT 1 -1631550278937298813264762336275.9487470332662971602239498521251525 0.5116575729529642863194621597919904 0.0058035860341068730474793439270419 1.0058204922825125395345275888038570 GT 1 -36248137188267060299321013.0213906007401080233514670980769176 0.2737168706483431367230633812302298 0.0975051352410915241758640822317364 1.1025922788091192233976079078173865 GT 1 -1928399592005665904711680.5562646259565073708266918474601302 3.8897994192227084357420497775596679 0.0771260278199163430823422012029836 1.0802625953186288446446299205523811 LT 1 -16942230111501833945180397.3301348677614686125959268772420665 0.3573081674988537146684294173413500 0.0930533770826643119781905611158958 1.0976716807450054069379428486272793 GT 1 -446.6859992805416104124829443151668057 1.9339644646211227343866709336546963 0.0194357607687818176697005397162192 1.0196271186828749186364859026071211 GT 1 -26399305029266062214525481014.4111732274964692143548811158337322 0.3236169276356671051328012421802648 0.0106538896576153957347353147522293 1.0107110486798092979169048825360888 GT 1 -144213083739978544.8935647999330806698551966038748088 0.1957179889043965349481035382984818 0.0347915161467346413315548648014001 1.0354111555338089113496382746432091 GT 1 -784698466420233808470682759839490.9393349119947979821544384394725640 0.5426464544876845487975289699186380 0.0644068092457831802581103950062114 1.0665745222440690131807803430250353 GT 1 -186941966.6435724559339932127894201911832132 2.1344935623533482813760722893999873 0.0057388621582261844827852535478816 1.0057553927023432696803329483981795 GT 1 -58537740167713800.4164649407564832120671602223757212 1.0030709050545519717078664856670864 0.0516531831598628360690954137367796 1.0530350030817840731107722924388754 GT 1 -52487152942877301310359400731213445897161.4123947536275396854946630499662217 0.9567274836441641699343243319066068 0.0170377416618137228149661463872797 1.0171845539380893788710265985059907 GT 1 -8049434508528019225355948006085.1304351027853288267431473653107305 0.2803420232320141217949015597178144 0.0408840194500840831029278047524778 1.0417432723602290733298722771126494 GT 1 -1925517038516011744789842193514087.2710164831389866058256490402865978 0.5077294727295503882599926635733135 0.0272621241316917466969102026748914 1.0276406309645556347151446321245730 GT 1 -27.9200810481142962631046150427873408 7.7585872018788523280564536019977186 0.0838945828878875384545781308519669 1.0876238367461545172572570026822682 LT 1 -65276378209459867476077037467428002634.3213171657530221485768562465847707 1.0624204740134024041507246148982560 0.0560326347061336558112789550358106 1.0576636840974926937586308751203201 GT 1 -62959115548314886745480777.5407775625177098098525015271067582 0.1833352590649690575731682488501642 0.0230005643810564020626075444316154 1.0232692046069279190664164636938952 GT 1 -17791551.1839141829333785503921097046260137 3.2869676362169560725962638271187129 0.0294175050571710772366591623591492 1.0298588774684984798133184621766843 GT 1 -1.2962899834654665529713880254708765 3.4718066240616759858223453895456966 0.0502805542369898710749961984382738 1.0515886582526256873921358132104466 LT 1 -1738217363998982150720413561556.3860763337604218275857942195866555 0.3582082246270964806187108285392625 0.0876829560531392935447777741204382 1.0917677134125215793947280767183783 GT 1 -776916919120222624691244949840526160443.7628909711035360881652016403348129 0.0815129417211937620282605736098221 0.0086345190199774003339544348507344 1.0086720124605625534862192282703027 GT 1 -1506886380259481691608378.5785193655428911039411066060599802 0.2260375878872773925359122370108998 0.0661611258097849764024268536435471 1.0684513672087730871935437145185817 GT 1 -22062693438586715187113.6819799228656857557858587637678838 0.8064390338048566285856578916884361 0.0657754709465447751505300354459532 1.0680384745113952148520632618964383 GT 1 -9138271524760264577866600973986.7054891590569632428709250659483236 1.8148053198527277178191748096464926 0.0432392132010736914735994826124119 1.0442018803223987528437134587643467 GT 1 -29069998.2561040136345012879400277303414076 0.2394619696903517953934260704977149 0.0966618226357615084187862167870499 1.1016582913950417839462013833923405 GT 1 -64698135775245409.7213031372067468635765245343888170 0.0063153628672140892744076523143027 0.0513992727160023381456794305183471 1.0527672988469849812336026455442233 GT 1 -7157277049311979870508198.6361420797514834965644467667836245 1.2022434008444415684581392604174564 0.0643514125595858221932239912130589 1.0665153137688638603144644386982095 GT 1 -260984.0330232191384156097188758398510848 1.5059836826605829545437102260228932 0.0682210505784408980198350418799690 1.0706596711601022919304016337388446 GT 1 -6861.2202732875052671425811995470689659 2.2023392201541004781123855565008355 0.0795471486453342785172158245957689 1.0828895003110344788394067824206945 GT 1 -49129414632.2178156277035954862543928412329328 2.0292755554351017017890058007562564 0.0977770795734724067766087561162835 1.1028936492911652014808523460556190 GT 1 -7899369538695783.4049167611416142130591621005294712 2.6213696251449136083863378935609220 0.0782623920639454413438863163252250 1.0848153779447871198271506325117421 LT 2 -630.1216635283690195213191023624558553 0.1161738952013219125551494857098866 0.0053156324159577300577555825606005 1.0053298106564784234390114115667374 GT 1 -4814086005279534510071896626797877820147.2474567122135783285028794609051662 0.3142236956947814260094035884748274 0.0116367936946490389603731730593583 1.0117050310711402291563192471285941 GT 1 -99304907.6360626554054729372711633225573946 0.0974924284571741962579625705842693 0.0901602432038009088904000890154697 1.0944867864099062548410034007170785 GT 1 -356763260717.8371782409708591706425042013323901 1.0117702192582221723404895482191674 0.0893814309510602401828942995374153 1.0936311641864285960366131769731803 GT 1 -2.7011990905373985430407649178996523 0.9470185099165972778533854959738674 0.0165822574904769969657799492781784 1.0167212821602166091861304687409966 GT 1 -7020717296608140244471271990438398.9890445621831809647518633221051844 0.4634082338792494438353899713686223 0.0349878869689351461664229715575587 1.0356146253581336088091724445088918 GT 1 -78683206158224109588.0138384511520047731978281928749475 2.2305698021568332495890363367586367 0.0827297710062331271863722788879529 1.0863531620310678327742847259489015 GT 1 -146689971785.2408373846088187669908570625794495 0.9409515573066649831672089484151570 0.0582670038799971868836324461826215 1.0600334881928449311988823221848157 GT 1 -2970689903282147532186611939758822968.1543762992495446745574353292434610 0.4350297201080881535519446820930279 0.0206426508946746676444780911157012 1.0208586886452880848100830783186566 GT 1 -342386.2334854449227881460399173853319901 1.3453798823360825541492693031814001 0.0424172452883536989066585754954325 1.0433431337647307936305356501288106 GT 1 -72905000946878015867.7859509747141380471452500687680156 0.6688035194618700088835308829042179 0.0706037413246108766510920668040654 1.0732200878661647401689975689174619 GT 1 -16201833756182504.0036012526932704384920827270568953 2.8710739838188691424977383019351504 0.0736547885508274125554373881353612 1.0765083152668452096217604756442872 LT 1 -69391851027636572889864220910.2155578023096717067192911730654648 0.0609833269223170933715502672139688 0.0889987325201769004990013019078717 1.0932109904170839186652533634553142 GT 1 -769799380374952.5270570525587868029691395176570168 2.0288069272705393705844468910804353 0.0305440495050669473950174812232602 1.0310202406127859801991713573770413 GT 1 -78217384231695.1155139723535734780475228204549146 1.8701844371131814297494272196492580 0.0901474032897996350863401644674625 1.0944726742288260349620641232835963 GT 1 -24235113860106963906314525237594886196118011.7429594236640355883855132451719198 1.8519643200899394068519987526472290 0.0910649202600816730549157167866463 1.0954816067831796492820672871344493 GT 1 -18211059811237997123790321000833.3607979394771573825256322473305406 1.6466560907964043831777849375944818 0.0282796228131217144602063450838713 1.0286871937001688986469206377794300 GT 1 -76124448433370116572029.0405135246142401404392002500603824 0.3216867938259343458589569052786421 0.0049544752831167694974556451694423 1.0049667893858982653808508501993353 GT 1 -8930.0435367855747853407151027575388197 1.7258075319989804483111007860557733 0.0930632106966115380690861258939744 1.0976825233536108665445394973316200 GT 1 -28747184860966703750640.4302810195191858452733244502109353 0.8034563893582551258195346129658948 0.0522744031191932272139160043711118 1.0536902733943134581330531622499356 GT 1 -18960802269126276292796478230505.9348816343267812998630388103720550 3.0067611158745767363943435163877132 0.0574577731248893718772353590595170 1.0591745576130826591543130912094761 LT 1 -39262437912766102039705055291645.9471161704439591980363856768604176 0.0244253090795413611241085927301167 0.0624608667133555912078543414556253 1.0644967798363307049417212359738424 GT 1 -1070784937292497979252390245312.2633686874415932832019341348192596 1.2367659807324940654583951476709579 0.0317158259429216932371188134899121 1.0322296665475010524180073120178673 GT 1 -54128481039725883506968502703737391336.6151121159084328791330123616427004 1.3974942500169851529532557973143398 0.0076018188154092773879542853747937 1.0076308599104362858644197823730976 GT 1 -39845284205661970421097790168622478509.5178189621315253683490775944438242 0.1256910059854518146214940617974025 0.0293399684226549255089890333249394 1.0297789939572956064472930393998291 GT 1 -59989820544978167.6886740576920908447092521221324022 2.0072152997539267747987523853359062 0.0836095710619926524372794701791382 1.0873127726541868492658515457396214 GT 1 -9620.0269806089101510176901190106861260 2.1404722447811276340990021173257732 0.0018408929898702335043410806793230 1.0018425895157717911756342500471577 GT 1 -26630365310761347.7525606170720687780353072556955917 0.1179603285791636500428725894895634 0.0855987821430884696986265196689813 1.0894858346379091607096723775098686 GT 1 -1319685873487115756159908941.0494362439841240448810180801173621 1.0590460094645814542820100794846137 0.0378636146447663739466496506933496 1.0385990656466945974571998792966280 GT 1 -6574730300625504835717058622103959418940.3884644183396606328628767142007687 0.4026945808663724787801207032546076 0.0916884176554506068195515281540696 1.0961678068823112671528480706768404 GT 1 -4762304002042.6922480930879843461369765436109644 1.8523778523310161365836141067836819 0.0496299360884697313636351695959002 1.0509038292794270462826374172642104 GT 1 -3057.9014641650359664936743749787591173 1.7640837091174299240960047854108386 0.0704664192951849640166359121501658 1.0730723447649818714710263470128448 GT 1 -811535472898074845716975345747990679411.0944773712910266625835221454406294 0.9088876180557032859501730405376654 0.0048177551864453600630610289165482 1.0048293979787642652453858694799556 GT 1 -1618199731626178995254673475806587811106.6350584941528232345691052157529704 0.5545196940831596675937839584756939 0.0676163011287961442144632726908991 1.0700108549514808709512263592332432 GT 1 -26863.4355793874971163714464919428241048 0.1391526793439513917400475696281885 0.0482278754589517542270561316619542 1.0494296378210308971196818930584937 GT 1 -227021874341135528790132512171244959905.6888900510200868625568029955615527 0.2724041339481911582716197488637864 0.0985169939101392085624943693647805 1.1037140872209778595073888891610378 GT 1 -292719709549726450.1217946486713943149874123087315307 0.8104106529100192166724945915558091 0.0439239170923844717423652070293307 1.0449177844660275354109599771621233 GT 1 -119669798512946.5015331801470683218756003205841075 0.5211406054685744138540078176297483 0.0740979391777516418492146836990108 1.0769868157802633845228859213595028 GT 1 -232360840896356947.1282408852302186193968456809771781 1.4542435716267105032670627141016200 0.0998533898996217305816503368472427 1.1051976288130773052358141849263322 GT 1 -414820279679202589418544.7410314758944058122576014173911947 0.5762282544648513266381654721114862 0.0514557014767764349805153366096220 1.0528267869304189061707319468487117 GT 1 -1310236.7326075266263920011633433531879015 0.5353293144593536874870817106967080 0.0656737034632951385515738129182704 1.0679295478694687184370960100102604 GT 1 -59354958757628831142240697.5921009652211400097863440468355304 1.0268668804517311537520127817171653 0.0022920149396827453124245866495477 1.0022946456264088389051600463758827 GT 1 -3258887149364813283270959193982167.4867288192730424915048256403483484 0.5192558026744614574802588456323700 0.0844587095489441871588274853135482 1.0882398143542428213854112350868383 GT 1 -85542946193401161947.4349542414207222800173666980410512 3.0973707865569295740206857921504777 0.0235758889676070109752631733653695 1.0238582469619992860025034926834769 GT 1 -12420063557919470892014.9689981756723136540432578629105462 0.2051924165616710182449393916539360 0.0381571328903690372863425899384587 1.0389041814607073889002644901614083 GT 1 -138373080.9871052162769469574422102104205989 0.4890789379109843960891266925506916 0.0052299748583558339126619747939310 1.0052436990492276834521548879535576 GT 1 -1920826410512341749015632543.2638034322775825965041870579627675 0.1408605231609145597535458230277957 0.0344898975070866427694387136922047 1.0350987136852301733823158563444980 GT 1 -666979.2097317617577535068213587443647817 0.6158446088983225309726142660249673 0.0301121691640118347245388352596541 1.0305748524847480648486830404697156 GT 1 -14081.2268893896613989379171125050306781 2.0507143208277168846333465179236194 0.0445500030174163611117919385434870 1.0455728484528668907268134279216998 GT 1 -9369397304901848874187422725568716900430444.4595699839702249657478998987559426 0.4535923004305051007313529499375589 0.0418599163688230393951171539789127 1.0427612866163862738142943236722645 GT 1 -18832734909222775318805920377604217.0754890356467710943970710148552502 2.6550569528456047485530348090266350 0.0071983310091615403512449120835255 1.0072243639984321897583578654003654 GT 1 -11529.5684088906936229081789058971094073 0.1494723928559908250005267038709551 0.0181732875302122982093038414990073 1.0183404500793068106322790618388558 GT 1 -1986276411841084663929483474548453043842.0669705522489327632864190837576133 0.0481303375556626197321892162704664 0.0412728272132095007732546356852381 1.0421487359329676995562974773383962 GT 1 -10820737450309008608197883836947321577.7351382244472196323156889335504248 1.8008414332766055024642404506472390 0.0260649643001590088363029323827639 1.0264106760241653406574896208373917 GT 1 -43354839550386681377725.4297444097212794632809610041604053 1.1758509046404694746768851727219120 0.0229574606995599394800148125234683 1.0232250871498244378433952332160489 GT 1 -260965346022430466246549808134.5481037850821557074848227257850236 0.1320585260550805084593252751827756 0.0348409851468808095175959465495981 1.0354624089870401210128836138233790 GT 1 -10.9401567963766400076700611442024750 3.5747216436735650187469275013800191 0.0548547528173206018404630974221324 1.0564166625767280736671417571641638 LT 1 -1.7809772023071592309659198346311683 0.9188489160656007751952549334504345 0.0574807503319685444579037137616858 1.0591989358175775560692115365789784 GT 1 -1408358105519338996885.2391906807460452993410084988079522 0.0297162232436266107170849042778807 0.0503741001131706596209156092559821 1.0516871615358444868855862963772375 GT 1 -1593670803173303.9288986059943503530915379179047195 1.0055524277198274867901648817140149 0.0954068540006838251274675959532276 1.1002699987973924546666667179724113 GT 1 -400629.4223676274450574298017054316712184 0.3028899121621695168197569446230707 0.0169843771023562401714966211199919 1.0171302658812603330192896545981868 GT 1 -6121631704746127628567503.7253724315348639490494155201344023 0.1269809959837218330155997221490724 0.0441946214421551575567587686398460 1.0452009655701240278528324231630156 GT 1 -162652156419877250342539264648985458.9030392383292924777693179863288282 0.3621365562828569629191860641464949 0.0821552066523495399157327530146368 1.0857269730830584640658370288281018 GT 1 -12139008651405201504525166.5391348375272036271595598956630027 0.9673225280685570367453716175010908 0.0707298855489382014669002248630549 1.0733558241406730214827706807787626 GT 1 -629934.9489923891857558405873536009659745 2.3215762926313940870733863374992814 0.0413335878769552311867903624085711 1.0422121143277263597997241376258575 GT 1 -13324403499553247783299598.2229575530543704013563321418570048 0.4251407416852764679054330769908346 0.0426627633963748108270548782763224 1.0435995602582448169987353286625635 GT 1 -403451024778817485065013469259750941578.9968789325331357135188511314999303 0.0167644394769346451255524961633387 0.0181009063311739382186828463835953 1.0182667318454832544027305428789752 GT 1 -23261713973798951680770456129441.3772762846018044813058771488104630 0.8968830102345271580295455778759573 0.0815444423604715224148337469714130 1.0850617613010403962286327376322885 GT 1 -2837934199877525488.3805409911557266888995438052751624 0.1084606047604605310682095868435708 0.0824529872984237464795046659118836 1.0860514603644177733289901793182106 GT 1 -11230284765504846997.0597692978283027645878569000177058 0.0090791698309397735503903577020006 0.0376890282073844753101298069480582 1.0384176250505542016582418539925063 GT 1 -684020315438659.8370482060890866295189951161647604 1.0649606198545757968340619515041238 0.0507651722547622377458269293326888 1.0520990634109319423140392367947238 GT 1 -120053470613454800133840278532911944708.4490555221344936042087063054682368 0.4024888157234917619125469555016400 0.0529260366279466144748225965707223 1.0543780860243272938104825016685120 GT 1 -227230922849161161696755332794.5190833009436690957916230715550825 0.0767102265204251149802552532257568 0.0536166523691533927512627649823023 1.0551075619600335577013955208486072 GT 1 -925181229.7554651843017850865901085472164170 0.0960783202735755306487430453266197 0.0448854936165843944610224651789476 1.0459240437169107932609563861189748 GT 1 -207829979420619207511253129179499786.2989039055523081054902572998921632 0.3549348134832444205611376816226667 0.0461645096024816156568543295291284 1.0472640643349922912290962157284339 GT 1 -6683713736.8854459003688627599561409886224381 1.5173375041775631752407285721564938 0.0821922878348282739253509942774342 1.0857673741746293532187889307444255 GT 1 -751675831599688.2993180257362920311523948656901015 0.3411057385011017869541682331306959 0.0926311565065381705112159898617987 1.0972062483639614984431626499299549 GT 1 -196572159881202641721.4906225453739068323174564833723414 0.0164600121449206855875903099037239 0.0616026958305260739178518889644739 1.0635818544416760822916294910384063 GT 1 -6077555308290494211234.4532533342645060347233972515017415 1.4988696463006600139785198060009155 0.0613309597730766963980522258391260 1.0632923217246691685551786547680679 GT 1 -585738.5237783124603866645170218570532995 1.2911324201880402603217340914568517 0.0064592101944524783822276442267074 1.0064801611591396278559653235365231 GT 1 -387425.0253540697775242225495699654909445 0.2406352209121168819899860741110821 0.0730726135753061982245187216030604 1.0758800482808241022252591517433627 GT 1 -1538225002661231744608060261887857096.7621988561294574116138171507355061 1.3356221017253492577747444468341440 0.0222694874240325458485736821374266 1.0225211964313879489693819727029341 GT 1 -24092225718854225895071536928082552213259580.2619579656427048976469188216709120 0.5117410445811461085493151616270382 0.0142338693775562499764851462697569 1.0143361425515970479056543310728693 GT 1 -7798720865028776490618.5751475345297677001319197490436359 0.4694537837781457069609646295356686 0.0856745241547518483038945849152112 1.0895686704295750583471796637850375 GT 1 -149284851360217417.9025788498529537932058355256801258 2.8731006251164900457197334904482402 0.0688803719677604398152364040315340 1.0713675158327304594114951815657476 LT 1 -84378433755540294869737.5313189970420297166045598519509107 0.7761705493360959225985586007238080 0.0132939537814551313878434580447059 1.0133831094206070480606942817368580 GT 1 -4004747.1676299163061268695193801724770921 0.9961813061018660658578105160075883 0.0949387614345718805590988982463593 1.0997526706483889065489769132990891 GT 1 -49325160.1703377418295941526202291135011140 0.7268302808866638945724436790463249 0.0065649030907897582117468139559138 1.0065865468451901178446330552360257 GT 1 -2096598967094579776248010063519584856986.5300658941679589993311488865761158 2.2972157949195093873705596006039620 0.0230862139202659309157967972442596 1.0233568743542976880802025337438198 GT 1 -1021079313974740957699306652196301595.1225930715568045964029101586379340 0.3424877859783054492511117383770688 0.0776521038319279764437863008825332 1.0808327988646514804315786621523435 GT 1 -10437746332055266605.2493227572743285435791024665633904 0.9808961746167968936875639269217404 0.0731889695497504697505211401422064 1.0760055848436291549484927531456923 GT 1 -122406783951551035473848650118464475.4012104896055312360849632878414770 1.8799398283172025204149910651744656 0.0814261341102763013417575922188572 1.0849329574301350561627706248928819 GT 1 -1019029424769744029752267575626.0803840534749310464490880501324042 1.5991211863226389989737244401177847 0.0649470946041210962436763569030260 1.0671521679831247843729377767047005 GT 1 -403126364110077632889673910520630.7119510020823367986382519513300919 0.6637170951330358637052022833885053 0.0341759238897666596324073771443859 1.0347735771826358776100096989342516 GT 1 -1596888250113928414855929000175998.6682248265224865005792239407287939 2.6482309630950844450179955264044801 0.0365949407127480553752518923666705 1.0372813333079518777354528446194915 GT 1 -3040078.9884530980534129305161076911881851 3.6643328634635282420848879699609501 0.0434143692016661167186773970117566 1.0443849689669544760227845484908077 LT 1 -13770964762.9525533034879951432382908791335838 0.4661590928743559787328244477023330 0.0454167045120510829465508405931950 1.0464803735285145783180844826078165 GT 1 -523708868988881439682742.7332760879536548244912836617087871 0.2863736060240934754456856958284008 0.0191175045291523877906507069194433 1.0193026069469284631878157412212557 GT 1 -3235446469961.5886067380175862154268174877900642 0.3497005838717951531810838113928878 0.0404188293023765498011189773356951 1.0412583702416012515112227775642510 GT 1 -76802.6394761196107085241790009527109774 2.3170971424100245938158414930026793 0.0585756779911471101467991082244472 1.0603613143504822144269393960364528 GT 1 -33811878248.3128306976553179470435480959723725 0.2542011903653204059940448690626751 0.0706945449991658853247996494070317 1.0733177944254895839183046124222397 GT 1 -112305.4751690263835937695657350725063926 1.8157806135585042017294300173099420 0.0359594586710976796855423877661119 1.0366219299354535417840343789723801 GT 1 -2272662115675743445047.0737960651331599738626595805917947 1.5391925692520407811084996491205734 0.0693267107528245244390358478434985 1.0718469878400331498854966233710844 GT 1 -2045165887331125640485227672473315158058338.4722506173267317166934894779320427 0.0588849604608536872882163359395811 0.0074106011108435779725784228472407 1.0074381960297382662982234775888783 GT 1 -12294312543.2174003460407876822792243260089881 0.5301202281400606331249164440108110 0.0648869030005945791499976612728375 1.0670877976507904265375039139934614 GT 1 -65410395766707674712513230.4031495973710458898754898183874629 3.2688918768041588470933283731592029 0.0260035433391047672137021665844899 1.0263476132713781162631513759600047 GT 1 -61578.7466070136344112367971954046682635 0.2549087769138606569291347706660166 0.0847665780404622439987950036667938 1.0885761402739019725001999437031281 GT 1 -279860.4146832702387826436462566978023750 4.1628458042401280087024542844996950 0.0319893417150309407185262548242459 1.0325121811412084853741055960927409 LT 1 -1113991396333338642.1491022622533793463612304006945791 0.5318484961919344773445435270013598 0.0607485860336779886432891822982705 1.0626720891085669400076710374587957 GT 1 -89973989467113445648515131285.9137331423687673121797793140599528 1.4897972835575234679964588628328207 0.0719793819903116890483878125938813 1.0747013287598917544503154496181060 GT 1 -41563827942522.3618695088414453957805005413216961 0.3662340490847951016857423262345861 0.0154826770395833959265989963201250 1.0156037853640907578822700985498099 GT 1 -553633233492396355449.2090828910991647594694720848444838 0.9715307409054140481652298430739791 0.0814908521075093098407106887330078 1.0850034147766722048178635074338377 GT 1 -1125228513731677.4858510930818176424536627483716504 3.6938308754359578311167892755994784 0.0338355017759173174109869341766118 1.0344211712503288284045456521548104 LT 1 -100105.8269990909562357529922857703972830 1.0377706856900417480196960396342982 0.0284792646761386391669055332276464 1.0288926667754697531712836953984467 GT 1 -111.7864307239972546594778873752257991 0.9295764083925591512640832180078891 0.0570368644250633042918896610024775 1.0587280898223245352250184873815082 GT 1 -204856798438460667842174013046302596068.9036894481282268596998384859053659 0.1102444140816681083244066188653133 0.0742423933854688836227305690232685 1.0771428425173043881776622393826949 GT 1 -25720908710871442985286136.7249857250621748071990618957297198 0.0867932512423944593758479824055055 0.0541944889396160184486238288312599 1.0557183219122137212104449179988269 GT 1 -2020198.3474973449688271651373808649958185 0.6118201840891962969110981510102635 0.0475541923330930777460337356503691 1.0487220684377466994498027692016252 GT 1 -6391306591383883999445.9654217653308519453634319775688404 0.1077900167396300685832540524510693 0.0233314770051972878031566166797596 1.0236079649636676366827901091170287 GT 1 -211098464633427062334604250.6900642186386628309154281446072032 0.2631087501853165439584384734360944 0.0906015784923536182759067274957133 1.0949719733441667776207564229480150 GT 1 -3919212297724962687131.8658797999280917840676277028512342 1.1059635034087137386535142753791130 0.0648323537415041182878808479165835 1.0670294649546937884558645393633594 GT 1 -300093977789488595665267455.0194083882719351242900508209961154 0.6831017073845895730359859195157973 0.0519688825108441862875301837393925 1.0533679529101730285837189478852306 GT 1 -6650381777.5385952824472251305548361747563436 0.3261936153080328485568271677573806 0.0235003025049716922997708769784450 1.0237808384503686586223986969952623 GT 1 -14822833807416159544044448.5357720554599245423113157989711720 0.8187168192516599011469582579303769 0.0555439345014925589859084054279267 1.0571461092701716741911205076303462 GT 1 -562131711599.7929413461408646803615861264252984 0.7248768509159348716931542085309396 0.0202315877244381661045724836331953 1.0204390492486022680726447186943812 GT 1 -24520907.2295179113572108663706572099936079 0.4759828103878493234993874794661550 0.0463612262480321140687384266055246 1.0474703231034015371624950651150662 GT 1 -222890656.9727540872906917247595119482573921 0.3392515115149579689624137282921821 0.0746839038396000637214922894089111 1.0776198742657883072303032484867964 GT 1 -383227154906357380554.6719428533563480821913452795223114 0.5098172986501886064170338074722929 0.0673169403179659416561959353391075 1.0696898360796060001345818568686261 GT 1 -33872085.3665480063147332447423563800519096 2.6358388969928457659195245551639181 0.0906084837584798882042102680984310 1.0949795665972225413675743832473052 LT 1 -466216959043772.4242695759041154442756566494004331 0.3645495215895329658727519693246093 0.0524695802565509182004375055299596 1.0538962372707878365469952029950355 GT 1 -1910194.1924606072196209576021656775355042 2.8973899839765711333106537447755683 0.0552665533749894681496082237880069 1.0584991857883796013336292281246774 LT 3 -200226250475457398045922903728972184369.2692927738427815790209379151413851 1.0183579409563195192045394415264439 0.0670369385759697211905963959182390 1.0693896701039358056138927480599734 GT 1 -760407505459219230444119063.5066427862312239004304286697650573 0.1276699986223971803967377202909507 0.0349651239020842850920082095110850 1.0355910372621130146539352403612229 GT 1 -4855289927227208951078917407493893357708865.3071993695089190181504794623733240 1.5401857426461841150826165955177198 0.0062925355232800382600455118763686 1.0063124169719661297609191450627456 GT 1 -38.4369846061755232694592746396163547 0.4957208311887191548289892497329321 0.0617798129611053751644266092415640 1.0637706165436334301664553936425862 GT 1 -218401423683469.1891788681062221627370527117587724 0.8036450072096378963273358683005865 0.0083311706395660263403198386619772 1.0083660688052301860668803790879972 GT 1 -7778694330090619638567186492428732673.6713633296068573053028958195739355 3.0090708880464710509124956414079100 0.0015073128891834486794789882743676 1.0015084500280827916718639694415180 GT 1 -1285935966165964912668713144782.0641860384774901560330566149065129 0.4132980934887620668023955973406460 0.0694655977809037724563432003917270 1.0719962318271215835065424355641037 GT 1 -119749502684587.4890524171424300827317023219436930 1.8160517969717261719769941574611965 0.0934702368453448732118923083428073 1.0981314162819270223891599602068272 GT 1 -1794349.6164044978830371464662984107430735 1.9282336963383299073883967179215182 0.0334772926784840661903535746078987 1.0340504862263817243870888822637570 GT 1 -5251914221565538632.0630072351722585385102713997164660 1.0270546609745225874177222395062343 0.0583430654185439553538304206479427 1.0601142590808572627317930544387580 GT 1 -59214032432213.7617293570044958293975259713958718 1.4628306797516172575566585448724898 0.0745948182371550925941610509751192 1.0775236030405352622184881894345682 GT 1 -1.1231318727665545031639793740063413 0.2707697962817800992605897929547241 0.0914220878728127606815718278855262 1.0958746357397010184502105639450563 GT 1 -1613197710.4972598721483480565597512010114629 1.7526899334148226202518467470628086 0.0156408337780677802323313609884340 1.0157644422053842835094533856113778 GT 1 -2548876.1555332377886517707989006488451625 0.2331399246811000889599522568919546 0.0955797800688020060015725766805193 1.1004611815403192299508380813678810 GT 1 -2297799892006217573712610275067646.7787127686746128647630947269221593 0.1705500693242185605983291751494641 0.0661530454724237829445227323673280 1.0684427144286994800515082469022906 GT 1 -108557.8806658772611972458812004086741154 0.6288050547319728880917321929332516 0.0358785030495579414477029199940464 1.0365379581322750584356495297414236 GT 1 -13984.7872397995132725406850557777650510 0.0837481972066401663739406847484130 0.0602604018189864544031328671920736 1.0621524653077929942836981913045451 GT 1 -24425216691107339817573003997564357027162.7548798490373929869893257744130585 1.3024899919493281015967924029107815 0.0300563639929846838335654323489875 1.0305173163822603922165069516948043 GT 1 -408156382199976525447997417976564686477.6671021450085176322272161982797045 0.3597733063578976247387644788960820 0.0932714944547711850400877956455219 1.0979122060405618614939865783643472 GT 1 -1364742411005276242741769482235268943.1232823591363886751374325115968641 1.6577285778032724247036133036574156 0.0567489242815580193005467412825727 1.0584227797000510722034182110916859 GT 1 -48238371042988974341621072.9698092398568798477074731638324573 1.4364599412651309516072040618317140 0.0308916433449133834139255881403352 1.0313788501696518259405782381934085 GT 1 -343519230626.3927773424251746880051138428153978 0.1204075060710031946699099567504775 0.0281074560551171109528434436628493 1.0285100321299991998844625599934184 GT 1 -3666358.1315542655062928383227767046423926 3.4719559663040527273690246176542412 0.0385645635594949309198980637230561 1.0393278649957096535248460863478641 LT 1 -317431346214667418143921.5996707735984099955467958053087370 0.1445268236447108625502874589043473 0.0390849098771781209124434662659783 1.0398692296669299871454453061418734 GT 1 -2558414292462258.9774764854011061862719996664599014 0.6261336293421349761164227539419486 0.0754030855874194863584157173324460 1.0783974046468829879238339755270055 GT 1 -178281852153147967822963974583764.6321376543028465663137147070901998 2.0894639626671854664302961040046347 0.0905633827020217894113474788645145 1.0949299730642925502457800614770564 GT 1 -168851504314.2063472395073465018094813596165978 1.2074537713966849286037371092958916 0.0448118492075558453593541239004525 1.0458469413700251889770468538489343 GT 1 -342771253651928678099664130936.7457766335992602972079787298797472 1.1889234677646149266592596823545015 0.0930563402198712195922223771303147 1.0976749479075622333876377712442145 GT 1 -2879706490008263069.4623230653547413165586166148781926 0.5548490065006294051984461792143706 0.0121912841532290903512986245338118 1.0122662074211491072089940197474175 GT 1 -449322050694909275289050454.3490464366423524702174554122707693 0.2321163812851400380240208024553589 0.0080495990995469532676090851266278 1.0080821720395457748210497901622005 GT 1 -919520333853656725427000155.2565414153523290696301124769829200 0.4820459938605409533839673968690122 0.0975037323256045235491834974325212 1.1025907243244884766056436134824452 GT 1 -5779338252899705585158146773931353053771.2227447633040815189541243679311722 1.8993251838397884243773996118914118 0.0269122798082547515047502785677073 1.0272810465003416082204132106530767 GT 1 -5426873814801294351.9466844929837397974156408429784198 0.1167114783233081411682379368091340 0.0748772622174110738205805755068708 1.0778288607774934729914107691756153 GT 1 -269168660898807047797130041936.9532549193890617939940520233969598 2.0903142642322404389909872818958018 0.0287583310049003944332777702115897 1.0291799549482908302659587512391758 GT 1 -662101371323162200344853971158773980.5625284716284794969637717938277178 4.0799138364639793632380944539489068 0.0158625635290614366382737712579402 1.0159897204726955619197569714924899 GT 1 -97202134.0700694433130422880745433949027132 2.9216901781140333000405785211630034 0.0821210735644267362360507908131447 1.0856897854740965141910949728430065 LT 1 -896874488841.0894952583481536874564704558425173 0.3346957495153274630286964721459231 0.0864965310474292352415694887111803 1.0904681057409949363231017931295033 GT 1 -3208.6448583251052274517468387975561635 0.3176448827726126581830370181962614 0.0934673985418932337904946685193431 1.0981282853323170811431306007124453 GT 1 -408.9171534219813560415671991316335374 0.9487206788359048014038915368187873 0.0455725492547948374029900378471386 1.0466436463056819936891228956584013 GT 1 -304850748935558587748265471878.7152452925954708044920720191268867 0.0715974527980478466716575507866249 0.0015554102434784101509765735725994 1.0015566211497914454786960600304105 GT 1 -18229.0542425064482824495283995069368327 0.8825123624920102036723480776347181 0.0489188475312650608112976846421504 1.0501558862512508739292751455014714 GT 1 -132238020890716528936.4935618367453127860339287932793849 1.0156890882808161072032989238107336 0.0110077581273834263612853558111397 1.0110687918061515046329660528311326 GT 1 -88238765362.7598944532158495943447656323027849 1.0944369275569946712269713798836921 0.0683381373448822475796664032181933 1.0707853384373633852547637070372863 GT 1 -652733461046657223639.0163464911065122432995516720301767 0.1694837332341377261239504632002665 0.0697622885443678967037058322287751 1.0723151217801663269397752233753044 GT 1 -6607105025686119506.2806134142052829879896472575964925 0.2798084652491698593523023436012039 0.0211703832583518960199540368603412 1.0213976896555674693859362957705131 GT 1 -8996153021861900961772172283701.8507027532046420524834790839778810 2.4816133151327041164313044600535736 0.0770861355930528620863953850417992 1.0802193701699102841071198529327383 GT 1 -5845436011731533401881.8048374048688904860925591390785588 0.7612568135339055766749299321334559 0.0422668620346178273049475294112773 1.0431861014395463473746239112805310 GT 1 -764648962889.1405097330459147253813395157919859 1.0908595139282622259238738627775656 0.0389509030191934584872058755654661 1.0397297818467250087381892315776936 GT 1 -1082690551387842389930579823954423.1761649722404413942409347338739528 0.4931588690182372907972956897762502 0.0815264660215138927106850173985191 1.0850421891367796957465744478261760 GT 1 -8756248211125480997805407313408.8484506786875613260644533218090393 0.1127917499542000683433747555932302 0.0536455146688405888422164143767815 1.0551380598971348261651894460879754 GT 1 -251432087161323.2493762794252375711812926786199272 0.4660933222274320976429584589306270 0.0196545167101209083673011354613221 1.0198502354737543414682655825847956 GT 1 -56707909938365035990955949077.8377041321856721573991439100089154 0.3636776899093582528171522329565454 0.0508717507573462270637496634705232 1.0522113480460345941423055540361041 GT 1 -2297193667123148116880853369810148662.7828708373009456726711799616698099 0.1457481060562833276139917502158480 0.0143779825244545244555404012924612 1.0144823472929555951233450813589582 GT 1 -437084100079996091523569535.1091319172310720316020103985599849 1.1903226600193775159398993446098919 0.0068406557770952734098688516396544 1.0068641603151234920131436977702509 GT 1 -2211938845442396.9260515291236580875856904500977622 2.0615070081243154537820566141092591 0.0609842452745389823309295652973557 1.0629230217192473441448521322037744 GT 1 -1031706339923799118287541029053814.0554364868098120961992688123381616 0.0283995453530255609686336402486604 0.0588497099507847284569390532636454 1.0606524390260386041812694543376278 GT 1 -345826734627270453246677301410934.3966496585162012675621427424293574 5.6723743137455558060428329123257373 0.0023962056319446910021328918110759 1.0023990811270968501604221911690594 GT 1 -10963499117455157667869700255708592400517.7605140308424015329294456733586460 0.5680500985806966939881536335649024 0.0722072855550591303770802868604295 1.0749469392013165722741104518473885 GT 1 -19325722708909338194361752.1751055805609926251691010149822685 0.7994827706262090296409374902947116 0.0980162271325554717293970013420379 1.1031587492504686629512415186493844 GT 1 -4403225498070332790791338932588.3442685727136938341953639507411269 4.9158598166515346799321893752063095 0.0954049362978566769005968523250781 1.1002678788379356490179419106519430 LT 1 -17802629574681609169329.8243084715763112447326683220528550 0.0778208687553702747333656234626782 0.0162091479183683362841832274344632 1.0163419532190881137071087679793695 GT 1 -8767246279813005238907.0788846485128928297356649884055188 0.3073275159186911766200872327125187 0.0968645562017509582591125225574777 1.1018827436809380060520849915371561 GT 1 -5576728663748693575093311455440603002191767.6596718477818488461529568543240023 0.1272273351450346237792485696428565 0.0190679362580386334019141242787991 1.0192520738617379933177807480230556 GT 1 -100909098174595336.5176270875785901216525361036222092 0.4813137519556122402866843677956512 0.0478856654604299638092303814517454 1.0490701520958449962346000474200659 GT 1 -902.2167800132112853889168272469498608 0.0902783493327398556941796617707997 0.0668065440453047609234450994812201 1.0691427513383446366137982993502439 GT 1 -1402370627703973908419003749929165.7705483629339780280722958623205855 0.2750883932186480038115859735010294 0.0751155754783170754489586514431880 1.0780864957392169256915556349804442 GT 1 -2953317.3980197613815502637570446033559720 2.7371919592944210756771846601073023 0.0165150286621723396623922750583645 1.0166529220650705353106644208108136 GT 1 -1301650490040740610734339506179429164240320.6279393201681324589745797495024506 0.3236235210718906712687119852138498 0.0510189339332785040706431864811074 1.0523664320288591342816176527155320 GT 1 -59304546683980425929357.0825783872239530707061634270647670 0.5354938095519413337450469396630506 0.0379364493998248379474703761209913 1.0386747695834137150419288033196776 GT 1 -971192545161421909477337020695988984.1762148858743240831710436715699611 1.8296093961576334242711219552748763 0.0453609503152395617558097947132142 1.0464219683909795611400107066570276 GT 1 -763038560361025710.4068522301442038467736643892984011 1.3847485327457550312307992190642043 0.0266017714350564506739377313928109 1.0269620014273160176552016284861238 GT 1 -226898368848817707.4164374735591029257755722900749282 3.1041426691894351739465285855223205 0.0123598003373340299052572599281794 1.0124368179423229693997031366770131 GT 1 -237508123182616129981663.8833402409830690671621995329025814 0.3761375798275056510677989650301072 0.0457214301938705825426050925039393 1.0467996482648885546141560232644250 GT 1 -10482673505852307839.9931075703685812292142049622080930 0.0041299287772358487526873652047007 0.0972236352507833773463882278444145 1.1022804143225108696049161188927960 GT 1 -71432217642383136946925476416671318621.3642161061206461196660879441459085 0.9830228420353139894443070134728560 0.0137919918348570729811402177177642 1.0138879850008427552292776049614114 GT 1 -7926217935613361.1347135287568913724143215588343878 1.7378691640207099656557167946978812 0.0805245443440283622195674057999535 1.0839519284359853288129687462355424 GT 1 -12940378897666888177602.1969192111344795320327807274138328 0.0779190245200612356359452237483288 0.0692399136724410504530894471360509 1.0717537295138579445876861407489553 GT 1 -39648.9381422116211347506258804349842148 1.0471021576581847359663363337491341 0.0396303337847190751463248983738000 1.0404369996660346925436050448707032 GT 1 -185947496321063277778506811576.0389126070540149360637096018023969 1.4014919069386350400115386528573993 0.0735310039785511077294633477164740 1.0763746973660741893952780373636755 GT 1 -17138838264791492628.4271817002759967387639028043517398 0.7036938366374461779560660882798905 0.0442886643994148350360929724730819 1.0452993617354716655026143015561500 GT 1 -31847739152287644755.3545974601406907110982003019428150 0.5301539050357457303643033633809770 0.0131259555393184392309665773367717 1.0132128622202670332392333849732130 GT 1 -81747512622382524821685.9229057944780264326855583325604518 0.3607402388498707867278515619530512 0.0422772380944718708902411682514817 1.0431969354763465100498070947200790 GT 1 -7291575556531059537794337261021.2233789195520820309263040168124360 0.9798717511076220683940463504478906 0.0395019193983309676288926826514940 1.0403032951079856482784625766270032 GT 1 -13.3182592314003375711954674290723712 1.0068674939497422939624295375807097 0.0381590425117265864733651124748267 1.0389061668403556780056995633780373 GT 1 -15951882017992200786376215718356549630863332.5226499848775114141259989514374803 1.0514539267789897302506888379955546 0.0465271685268777767746216503824195 1.0476443478210004512663752459790343 GT 1 -4617377200040682846377485.8527515229584327323185845830269651 1.8882422047419625857874240184478546 0.0037901785879323648146103602473804 1.0037973795157567783372909896124672 GT 1 -405741.7336491663685603845837733854839880 0.9462141067188887292046172723429403 0.0813175778190391921908765559715528 1.0848147852490754020319698075102036 GT 1 -32018807229731376483627265958477156306460.7661555720943704196124491971572171 2.6142681218623663909124553822983234 0.0488884874195898978794234762511249 1.0501239650770863667499917927554172 GT 1 -895707552851810980305968497109.7345332092806215366384438037457528 2.1196795904762637577937104147711779 0.0793268847922366144281974665744804 1.0826502294972511384191887963872111 GT 1 -738517742410939703258469063896408484813.3797159276103106998889817037502083 0.2622657814206665660636164034796172 0.0407392977940926845042289668932586 1.0415923930698719324059316142934160 GT 1 -25175590720047591731937547717866026437640785.2729383922554101986243019228727061 0.4218814288145819059155449768261498 0.0056686217797074268297100818948680 1.0056847493925846037178672255226972 GT 1 -641426028.7467580607724317346513775675601442 1.3472699507119927266407069603544376 0.0960759714447106011884642722274836 1.1010099613302033812275387297170015 GT 1 -248748868335288719311309280763.4975744326864831273315604221634567 2.8342507340757664244398220929162821 0.0643078108393527128915920756957271 1.0686777593164321397015088097063426 LT 2 -279805013111930574.4831141089213214571885101386802786 0.1417387144080936225458580566375230 0.0017383044365374382496429561434020 1.0017398170408598441495203977844555 GT 1 -2718710885244799421941021480587.2256161732432259934342541660235469 0.1470083430868282682167100060581277 0.0609743276427310688731831398096674 1.0629124600440201780658012231722051 GT 1 -900623530930164460529935214.6909686746583001469103607447539099 1.0269408508202742062391182254734388 0.0241087450304634454227666948533522 1.0244041178652019110639620515411622 GT 1 -340338076084846429190830.9013265639128517128428065894383222 0.4098790749114520606457728700827522 0.0270583346662051227263950056671445 1.0274311520016366631335464142450711 GT 1 -23192907914078722767517934.2256516913580140160122211085037904 5.1143351353200299980756880294620314 0.0535921481135670670864047441506018 1.0550816697690787984099988778733195 LT 1 -51559297037356620305.6168878191101261881964737105029153 0.1190407914904751985482629733433992 0.0918924777254283862238688297823398 1.0963924907895850010873367317401575 GT 1 -293839865541050377686315427266810.6926720943777229674430072108456220 0.1366042925593204791114543394548729 0.0664278686761922302593411814792860 1.0687370492224634774846460830870845 GT 1 -1290479.4278092948375201956081658633657541 1.4301865483311353826464895006252737 0.0180877140506644401804187029804360 1.0182532964609584314990389287412374 GT 1 -7.7118994881250251441182701423330439 1.2738139016031078292167889667612365 0.0379169441879838939562399821468577 1.0386544954402932155233995910710985 GT 1 -1734.6085409207441340846114641225200090 0.2350755602120367053746624476028354 0.0289838263823226899575181876796347 1.0294121541686910556593321847049114 GT 1 -51630.8652906493217069447890493739657603 1.2009160141010749618158114053991802 0.0280694182086084690853511856918039 1.0284708949821693639851660128999010 GT 1 -545.6698267509987343113352866336320672 0.8099720607893278323917480984849419 0.0974796470962749377092797693323021 1.1025640373355085068358694112741442 GT 1 -168160.0781105161769047964268404592590310 0.6194116840676530564005797146478926 0.0392622983773285948788612334235947 1.0400538504281999785774862654919034 GT 1 -2636.9643233992321483805666070387720696 2.2893634391286703312512360349595528 0.0883425238676483432922518760665142 1.0924909338698218253777047220310672 GT 1 -1808403062664319233867.4897952714048857919622125920350461 0.7533530213405423115059816533262472 0.0921761256709181115335385352482842 1.0967048901988656387751737379673934 GT 1 -48922035357274192158629681.0653080589274648349218824063784000 1.7093972510347745764306035614980300 0.0607039094142687196860157711091167 1.0626245240410779009911485004258851 GT 1 -5.9776304210576228520181735248085546 0.3291003475115550697555724778380665 0.0513334888000742972259003821990756 1.0526979528796694121580968765871568 GT 1 -15702657434717665910095.5383746310235826668318408004488036 0.1978351466163619753501076706515861 0.0813622473523594682767618046947987 1.0848634099079030278868076441036535 GT 1 -360882088031623560.5706122094801154728474065415342495 3.0798086790518393927254175071052112 0.0559157556726913469125831009543232 1.0575398749463063442915858549050559 LT 1 -33169103708297576196430864484185899339286.6384057714956619539690106946149219 0.5881042819998801405449124579151678 0.0964352160336201571124993718878097 1.1014074681818654608861755980515303 GT 1 -1089083427748131286667361010.1420995181504668274875926935026412 3.2990792808374766316980633499828782 0.0917269647483991554967571373782151 1.0962102459656118213401002202868521 LT 1 -1.6652284398417863402825682416154207 1.0340105448708016979957710869404781 0.0057937902967504209609295688942493 1.0058106394114290609397647677020437 GT 1 -4597981964270932442699185619577940.2487155873417036145085145154182084 1.3276326433139317314101420593739867 0.0936290666770668497598977211003764 1.0983066380493817463185031788857287 GT 1 -3251944070566640289026194356338560268006.1364648083570659488515527145847068 1.6659663468852176331239270859366300 0.0008111863316746579543135512766867 1.0008115155213418175463942593176733 GT 1 -4511133195769260919737386424807.2449048660573004135219995607356847 0.3318001370433013369743853920537611 0.0956440746893767004069197859835018 1.1005322733896571453050571217313248 GT 1 -136887745113040107494489109.2110983339710236730866995759114648 0.9463388613785464705639261444129832 0.0144454217061196429132321427599361 1.0145507725997862162592013526796195 GT 1 -19521973601.8405469144884692391203769620631937 0.2800292833413896044329468667011618 0.0907465100900360393682616041678093 1.0951313568931343848637889068691326 GT 1 -4276343326223332916152.9336055799740578965161568419994276 0.1552422086821739145482866970123190 0.0366208861822191260208144500239205 1.0373082646787144135675824769434310 GT 1 -731704.5321770922611756550852769826955010 1.7525179351080567853868018515402740 0.0938863986015419962092544924078804 1.0985905929425403429920437198700138 GT 1 -3.2520840917529069173931990308511901 2.1100402172384967174335639955753137 0.0528092166876611129511841343762527 1.0542547453554603111278280925479213 GT 1 -53554204640375771325443567353308277883217.1123254889905065893276166041775178 0.1737489074928209937248102233139983 0.0892185612812774736246759168035450 1.0934523240969125306031231713147051 GT 1 -122916153254191116393.8372465480790540629291236369463326 1.0336297473851292175989762162987206 0.0466224241960730392291796772491473 1.0477442567272376438772742064397031 GT 1 -3364724944045043276576506220562886313759.0047855911178169781558228324196461 0.5055358290466997128861371992875428 0.0529531643490622055381600573668853 1.0544067301542385842348370753200232 GT 1 -22122157462122969056369.3246996189062616154255901668788938 2.3932848310680085951468093342009349 0.0695066770320752571732066097091387 1.0720403786720311920262416294353636 GT 1 -338225184896564413672.0966296443455302210224960229418580 0.5166376525462269511880582077709165 0.0823623616761631917497451972174795 1.0859526957825719254433043895970436 GT 1 -4364.1470431010990651121795243764661242 2.3560469205153443124249905731776648 0.0893500974384079932484524131428570 1.0979769320785196446997533097616640 GT 2 -37257907837164272479498085007847925.7995008976844929788887632310146364 0.8705406046326455178786877073984482 0.0496350496548641072330427015811070 1.0509092098994040902734787936849351 GT 1 -1925046156913618813480835363598.7767805895786185394682525804594712 0.1362073944150514981968419286497381 0.0738884001306399989008563963234194 1.0767605333802431904469099409520292 GT 1 -32554970578694.8317509376733299218893057447416653 1.4347404777029555912310263280489722 0.0923767427242668679799806776288327 1.0969259013764128760110838632770287 GT 1 -107063395720482775.2215105210388943920154917572929215 1.3285881336607821901578973430284431 0.0920828238165084370356601526351978 1.0966021201981924100117418145117820 GT 1 -1117653710142722321810746429.3151472779087825605633235295126623 0.6038787874562996622043926443639758 0.0522246420397490432756877520971839 1.0536377689845124217190520187221237 GT 1 -3990877071983093073672334070.5166638974931304592359404801300165 0.9157339246377614459638469083967034 0.0862099284343897648884819607934291 1.0901544149091339713378322057846746 GT 1 -1050134712218693302735419729758515036333.3188333420838600423886365654715343 0.1858125713504792308948639038035140 0.0558706353187652564673888281627736 1.0574920833683626071721017022932118 GT 1 -39973.8043915820551811582753272055248268 0.0828136940818684935220272878431290 0.0039996562587421700961689185200730 1.0040076762758535637040676950353782 GT 1 -73709801.8246626360263085020964651228770236 0.4753393137226687514807918550169098 0.0947254248875603334778604534702108 1.0995169833837529854265439747520305 GT 1 -1113765103916120.7186563835774108010824037855644735 0.0758551703476486458320158141700357 0.0269870706308755275593710876942600 1.0273579087352670968996591735415546 GT 1 -346828573996011123028678133134009743.7447385304475898094927994772569990 0.4265358422738585844268238635623205 0.0685474776805470641916965014171396 1.0710100593007027968754924285092132 GT 1 -101499.8203266089692910330387676606431822 0.9629852208068332149765987885200113 0.0953267533920335192300586062327477 1.1001814539495691235309649495529198 GT 1 -3505009565556283.3392681902690864177464875044311809 0.5407821706713519281197161761570758 0.0334319054568097065438023689847168 1.0340035280373107110593614761196880 GT 1 -1741420135112699254161361805379958644412.2632237425403129603708196353408069 1.0374860449859270025553382852698771 0.0892067580993749221617144509643934 1.0934393647798685502911605741701585 GT 1 -1288.4001257916426335977969048488628040 0.6736049698988932069078892836341547 0.0586522496013814391777702165469460 1.0604426535751273251064902173559759 GT 1 -23415406701969665780204550.4849033726231786180215540693687687 0.1964426196420637564886291920543416 0.0881519694301661980862833703699506 1.0922819359397630522573554757235417 GT 1 -4670771451825483119642345369.0502860300933646850251345528912814 2.4978503782901876170786063430541309 0.0295655843269825616204777433208811 1.0300114565308331609738249396857609 GT 1 -1482873917368049278680443932241826.8525700007701510842297973644484051 0.7934538325397866069113432762311767 0.0331613504039368286925829917262562 1.0337236541251512054504014467762819 GT 1 -114319.0078623329279406632823738079173083 0.0617769046786296753640019273637412 0.0417462501910229549738228408025555 1.0426426615447022016250100051011057 GT 1 -99149865822664000785000643787693230.7692741811576164474604073091359494 1.9514045374299176430731664757882970 0.0705795073774703972776248056358728 1.0731940132709956025500531692200731 GT 1 -5678153694437184068.0719562705093823963328236671441250 1.1514557488638549076500952706565145 0.0900792950148564377936361369966138 1.0943978206468864084910566033347143 GT 1 -1257206934732533087680514724278941185130.4789173302046787625521788994993849 0.0110052260072285741009199570072493 0.0391452087535328274041489987826680 1.0399319831494973492091124876441708 GT 1 -466100382707031161537033883861.5671115397404148585669002729037099 1.6273850275292114936518813975161129 0.0025332756191399266030560709946812 1.0025364897912245325708962685265576 GT 1 -714562097348466412.6244748440273748495997325157665622 0.4858780163461355364488841453694920 0.0050036047295080651133368634878113 1.0050161646738334948334825218751095 GT 1 -395030008878664987105134701204850481500807.9975278788849449505029889673058869 3.2405025438459377040468199392916123 0.0860586278180996415975521821969138 1.0899888538064311539501633128984211 LT 1 -8211261152948067779956185430520.5116670083932357843395660791013898 0.2880786527321669130459814133259602 0.0248350824519415809347414310811190 1.0251486760847591420983756399864679 GT 1 -8319479994765322.2166846561126059420129712575406184 1.6078390158383733076464908106802224 0.0861044310737736548887551855878633 1.0900389712481498143442523606351110 GT 1 -1938275618975057.3579023538583356926693527648346036 0.4920640309846330228690173145297578 0.0373493869518403978590375221430874 1.0380647439730893146585835143179952 GT 1 -295481230823873411996184115483243.6778387842855822346276251510589910 0.5080279301027842668024747496358079 0.0803636301685521192223727206008400 1.0837769372542020014856404220631356 GT 1 -1301886092958619756546908361418133895093650.1941334647396266164667631037405617 0.6216524467462891495566700190161252 0.0109690330544659922436111158353497 1.0110296364790049444602018869992281 GT 1 -3019426261877687611142.0549331665605383265982131620154678 3.0366899678474910304649499840865742 0.0267275589553789042292606409228919 1.0270912349155081935663135548129670 GT 1 -131135448462414732083366403809917958090.6538658652434797541573167260413193 0.3848417869412337327394521737769744 0.0517217735579783494245789482722970 1.0531073319781975869521229685360345 GT 1 -7435003784761103.6209733064187802647729577873323557 1.0980136459537657832941085210955430 0.0501691514728616356996209380218873 1.0514713644230378924738499769150336 GT 1 -40164531562739623822963002709943.4023694624042705785200188469765344 1.1247410327620600529112307629260733 0.0529867470483237008501401501257099 1.0544421912248425172539293274955708 GT 1 -63973154084366955994564014015924121342.7435110990979268386947255675240132 0.9185926468494780811189559369583497 0.0134588838582848202290323300631832 1.0135502755824136465116912688697286 GT 1 -86113227071280106118480950.2066311595495985909277468976496359 1.6655881165769366120964667977128803 0.0516698596976322807427814038751023 1.0530525880877146549340860912895030 GT 1 -2136754314169472461246695318537054278209856.5769992370828266068468074000214942 0.3831183248355152472283738616434732 0.0954926008180554117378356480170102 1.1003647937690309226658370003519818 GT 1 -1136358987642710438836816456882473.9448940978531821545824936751913907 1.3756543947001165779929837455775107 0.0663005233020108975353604405080735 1.0686006519529589370735132690031177 GT 1 -29501449.6605448460045487882458606116534972 0.2174645256079052755097905078546645 0.0474748699924634861404911730057417 1.0486387891192996982248901232534263 GT 1 -1123872555017586213419768617196261.8024932700715545580317720588776590 0.7995377076188284345682276027326576 0.0750994335861065836085583832441859 1.0780690430165599671713068613700787 GT 1 -103493394761102459152776111859270.3361598457999619758201434778421675 1.2450610952903525443408992670794862 0.0693880081544916712910879214741570 1.0719128535107199369757629920579116 GT 1 -1236708.8323896190336129912640901902515959 1.8424983815801159334203207717613563 0.0601364654471892091798974937212785 1.0620205902647921894408587030719218 GT 1 -143575578856598.3265009354437517308600783301951585 0.7887646288812691379236421374825739 0.0925811194514282902301758912959570 1.0971511046637262847694773201729146 GT 1 -22345774887259.8634662710468413441056740271435215 1.3839008734822317333674677633593790 0.0988687582018003918906553613607900 1.1041043696083920066699540466850423 GT 1 -2124733.0840944996723089023692741889285546 1.2960733512821414937408317717915088 0.0543606903477043023074842668552083 1.0558940620730643200972886148595351 GT 1 -129696488389341554237863742192367.1753391477588590150413752106960936 0.3808801187621236993798924011344297 0.0681297119518250823026591892769735 1.0705616498963874968382246517135102 GT 1 -54043447600021126069801362065.0254174895263714213669372152548520 1.5027143291204808276613387496525499 0.0770562059585976926485568922962869 1.0801869411965050957738833275762854 GT 1 -68784015.5948958425402168295031103844431374 0.3045152344479058640859716658087758 0.0654779891300402114663312643886707 1.0677200987309862112788249322942130 GT 1 -7948181237103373251756418927834783186858866.5904727896610153031145675222886987 0.2687422348522098769333119464278333 0.0633481735204946919295848171157662 1.0654436490641532108014770881321170 GT 1 -3061663607936082012.5311155527325144234558396130754272 0.7017756215934857329042456037211541 0.0503991988929945474529887625865646 1.0517135920612917282858134034127404 GT 1 -91665841885586562341541616.3529731560393382892488933691833980 0.4893716047283403601456588464386404 0.0342516913053125207975651495090383 1.0348520287241683202796664768184746 GT 1 -274.8935084165877157953575232997588007 0.1194320813120808222072788210471467 0.0035810314832258481164514640059901 1.0035874587251593270314733940301707 GT 1 -167.4935576903797106742821405008660794 0.2348331476916462128137006654181524 0.0562713138773207072502199379436353 1.0579165629148000240425132890478805 GT 1 -46361419587195110079633129491.7056262568470733939097436797594921 0.2598673596387068334260295155416560 0.0980515745155847717220734469165746 1.1031979385094287486575046818159970 GT 1 -1436322651103518622452.9690838886512719001029154338871903 0.3857282953990357695365932623956621 0.0891374996556574487630773282266926 1.0933633257762909682053046064197554 GT 1 -350704898682185877075440971493102840579.7363853230812248274223599558591920 0.1096404318172044386219075278402023 0.0782678145869170985259808338267986 1.0815005689729223223454636303221245 GT 1 -3889898219213321816208.6588584856977331412714210797603878 0.3420128675557733700389401740229872 0.0009162841447732986831872795066332 1.0009167041896968843304974316871166 GT 1 -5842019711.4186859665339662021413276095893555 0.1209005214627791713488356581933603 0.0300349394504937146105164241561231 1.0304952281855015752651804440222113 GT 1 -31802911797429168181591137083.7927627643989456834182838016162733 1.6200356591439325357925050872969047 0.0972370615738357756746384700727356 1.1022952866911478005083023851819138 GT 1 -109351078.4259625616894554782027644293055098 0.0987507141349117594410968053541025 0.0679497946537256604061856387857543 1.0703685973501058141995560163789240 GT 1 -5893298449577014519469017063597500660387718.6228198356460712199184779364436313 0.6875088262156047903600445264949555 0.0533639475150745083488818701793611 1.0548405759422837884541956295892844 GT 1 -2176347493951555459.5962862839392335666157065305845983 5.5101740911383432696280832055732559 0.0257512758174519468084205153224882 1.0260886443022327993876357759208377 LT 1 -327765.1988488709648933186484436752307003 1.9892605211302679614197100165091167 0.0472414910475164843979271082814567 1.0483938083286793712916556989881423 GT 1 -14136621890287145594861384025.0677961350941587069667166388606041 4.6985017185316163694033723056891258 0.0033831176281454321015075780058837 1.0033888533105675950820948737702131 GT 1 -381.0214780865526108533151688531045182 0.6778180498404640931857360579009654 0.0737742594732775539629243606267158 1.0766372937790995861884382888124174 GT 1 -157291448330750514327042079018.7082069084571764206917990393526091 0.8429269217469116659473983238924860 0.0571725234985182401541921774533223 1.0588719648345556923363733982131010 GT 1 -17176665447347387068511768984728872.2588015542714815169154079306622570 2.1695407716684349700732072355769504 0.0464355403238768408371939813420325 1.0475482530005198017104318701810662 GT 1 -1735437253072344903668968325121700064602238.6969764867853946653424398330768575 1.8279134125030642391047567417245134 0.0455863431609621202939897195595852 1.0466580989556304014334594077616528 GT 1 -614559337683032744783817187620.3900316202405675851208156261185987 0.3413400304640460580884016459523045 0.0367126599666420771860004373974124 1.0374035315935547254832931864241817 GT 1 -19.8398746430045803878903862332525579 0.8142990687895100359323369898698872 0.0605348681807718710348596093840087 1.0624445743679239927282964720495442 GT 1 -370375523378638532169907426.0698142854183206521765441053518093 0.1554792009882276059761147524208728 0.0821554174926654334184680885613990 1.0857272027954691438992120863634891 GT 1 -10158907405788119085.5090303731298974780565744426158809 0.2484395031737932686629132231663684 0.0869289570192603797362445570508881 1.0909415887301472472603745316113427 GT 1 -12271836821348093546962126.4483321029431164545577941031924091 1.1078823395814694648189824074975765 0.0319402054689551664986426334331152 1.0324614224035655909027863430076261 GT 1 -21771342575372104930.1980380321314885322802902766657482 0.3425142890319170434076845190151856 0.0469809180412520934842875487359352 1.0481203524866851720211464584365014 GT 1 -4665176399417296078967898677098856617.0808441420077708058048301911500829 0.7913895941317148739173836809113196 0.0490191774165594677308137664610941 1.0502613821674759019014013294340407 GT 1 -72578281499846504712605269405795526.4493413209460639496792665607625146 2.8749245963703773603499841057958368 0.0790602415605471389402618102230063 1.0823606537266119334044501447179327 LT 1 -38.5003204074935630538122766173313353 2.0709384445803112461415793450881000 0.0621869098574303228849854902460056 1.0642046140719996884305675571847476 GT 1 -221951775448037438187441431578707442162652.3367265828040977855578793138847932 0.6799975016225922754675079592687033 0.0676734444419008710351697604575492 1.0700721441657026302613511977301195 GT 1 -1080802766433764494894002.1645461705760118428375994842537449 0.4154466638667884795137842147404694 0.0704384022482003637224815071259536 1.0730422042457536084823371574914449 GT 1 -5799639.1198885908280683311457028666993026 0.8945841120382963672950618738346920 0.0642162670689240714175550577236243 1.0663708837625787793466126874477147 GT 1 -266416729286.8849763931165781660704035007409013 0.2838337091615510041797572638455416 0.0089385982709515177345111500009985 1.0089787872082327833435962276300755 GT 1 -40789457376298817.7416966428216457979929644826382875 0.4770308402451690331127624961593126 0.0244263543694882740315724534646535 1.0247296265041034351582098997263855 GT 1 -1366800183338438940295505843.6041556674447714927147899371463199 0.0056265030459306637871543385884139 0.0002244711778195126683193928340793 1.0002244963752451495919235202493075 GT 1 -16817105682971130560371962908503.0216901777271663239406573028390851 0.2815046534430337485142307581802316 0.0318535405979993111653879386162239 1.0323719021152825750966923674885545 GT 1 -13011274033581926781.5205913645354349631399400569724674 0.3979847318491235380753403467528618 0.0280799297860745083014970371470335 1.0284817101931582305560999602737510 GT 1 -8980147092520893673389623243209089861608879.8617851654880457771034792613236303 1.0143131354704679572445170930471385 0.0903307421752609503315727396043500 1.0946741984761164375038517526138915 GT 1 -2567095253949032810639465276255.9962284898068750558639523915160312 0.9919403102809184052278382304779620 0.0499549435937175300363265655034195 1.0512458677161260837332895763564578 GT 1 -5253.9680150036751372787777818179465687 1.8802670551713844064148254711639716 0.0857234472319059155371540437669755 1.0896221791497888703726266403153526 GT 1 -366.9506490794757077849028733484661083 1.2947999144432306594381398969934951 0.0491023801134731487536029843007021 1.0503488774512004548816137600597168 GT 1 -14146737575188470407215522746988.6483463146337106008972021704846402 0.2624223658627574287093378809695699 0.0658614140887638823724172469311257 1.0681304728404045602882154483800918 GT 1 -4252741599381942494.2444732667077825293145452898114973 0.3537599193071124819574459524915932 0.0804956020940911224535878490865182 1.0839204520172702768505945002238579 GT 1 -301601.7276430623512962564432201873355234 1.0601538259047647461324677222669360 0.0234736231070241009088855357062204 1.0237535173630579209635097831656939 GT 1 -36139754663025303574204555363.3681353141334355221092437301802631 0.2527867427347768701011899561135119 0.0628538657717607813453866417175458 1.0649160492155403266516691752105762 GT 1 -45537802649899144832655121.9877186057493052220843057352801578 0.2354777660266934860414774409935772 0.0882168403110727426264719773874031 1.0923530806770108311697747046033165 GT 1 -916418.3140592135729403188770099787057326 0.5218657034923168856408594683400783 0.0605064999878367752168831919773041 1.0624143787133133308167097093405063 GT 1 -9.9277568794950545121080359107654234 1.0815724919953603365668597036279328 0.0298506987273978021647001188059997 1.0303053004912632688694551085414203 GT 1 -504588224023146454159301778409055.7689548496872931278215431968820821 1.0113000454468665644861409504363695 0.0472976365154418107315367411204125 1.0484527394447717908603401603283582 GT 1 -24291727170680436065760052617339126955629154.5838862249990820372954316996749581 0.3598678894422255858248346146884045 0.0433777221506500803031346717851415 1.0443466594336780620514737021929419 GT 1 -280.5794103181819352727396103850138531 4.5758886055834290906241755448873891 0.0675543785454350435403657266209126 1.0699444439585723702681464733163132 LT 1 -635414140255645276557609889873217279512.7955454709976188364382156961723952 0.2767118894608073683123922910744916 0.0228857655344755184011590243640041 1.0231517100635240160683845683343765 GT 1 -1167304661.6528601941175055326810286043029279 0.2431722327595416357736863419696103 0.0398593707263610471251551237073158 1.0406755164219883436946939646729581 GT 1 -1826816555402528919.1094820933790184326008048869343011 0.4869854412987725144607012125609407 0.0128734763223266004834371822350721 1.0129570576146921558980521221507222 GT 1 -442215240176503.0270777480043665529141685437349316 0.4836513906764961724271612753050081 0.0248927422822578389014000710885187 1.0252078061190839147757204337686119 GT 1 -1526289604939578216441092933618485713350567.6110006152512106287759511306184352 1.3601805537243070409880041353730135 0.0908373259591206249891448702336773 1.0952312414750694428415217519563801 GT 1 -179918986445314850149.5847943788388837534883282742376955 1.0246086837000757946005514831323645 0.0012351115195464640878152187125384 1.0012358748984160850705814735024389 GT 1 -269325.1462330676989325051087182797246240 1.0963481806406375625121737141740281 0.0676236673080168221335766702066204 1.0700187553559254485502135827233926 GT 1 -10257015023210203.6840061871996429278850253454555593 0.9583151637678192968285523958584533 0.0030511788183275676577825556764292 1.0030558431546507524057141579959940 GT 1 -70131.9708140321795996801917473044169956 0.7149961576055827658573034151029852 0.0576857442098719094047609041532282 1.0594164551667593330101164791574490 GT 1 -695812650056366249912.1860212080125188266944274854900232 4.9052223551572640840145501130638599 0.0052388568056639717196859550494787 1.0052526277329794696250678186235017 GT 1 -35359989597927154982246785524912931.0606680616092609755135868274081119 1.4689422961376622324401736440184779 0.0061521692018878388332440170539653 1.0061711717729427219723047386716862 GT 1 -670661977850570473482906218277.1004146942655987396195556941418707 0.7006995451840254025504781189089054 0.0328982498244133192981962414108081 1.0334515665456397349483296007461245 GT 1 -2631826197607910444609114778092189.5426387073721666780375809338576282 0.3890100408255536383665750155362569 0.0415064413898799953988952824292148 1.0423924368005839997066959949065257 GT 1 -540961088388277097.4475082380794038463540939536844996 1.0760310005595420287673949307484182 0.0761952973009470456917802741983521 1.0792545903955874327047111973153966 GT 1 -2555488850306471837464938186812086205544626.3975975827343008815660099232191831 0.1978575577266210522845080811257378 0.0653335117663847905820224251867694 1.0675655104013314647640371846806398 GT 1 -8010582516.7255917273930722183260619731668222 0.2412841932779785575579687017771163 0.0549265441449677253883142604106254 1.0564926234457706558009068028860522 GT 1 -7575699805387121600547957076003816.8223314659821156779690173297883758 0.1723566789167628133963404396153547 0.0787959917958996189938094609234479 1.0820737599767918730521663615211801 GT 1 -457834355472973534167096585614736113.3471601013224201327250628946848384 2.9771061000945565197148093623040053 0.0459920340170618241427387845887851 1.0470832574817750163111485681179115 GT 1 -26414867532654644100735820903621.2347148964729078930871725617748003 1.2755611020332027945648423230580109 0.0702739478540693446268833105044074 1.0728653038134090691362688460573738 GT 1 -556958143404856235888300823967446029.8013197404527709478522731930689940 0.4293828403375906553597025186434201 0.0266998788474913797012942701541483 1.0270627950736785653779991249930050 GT 1 -2628509605485731362267908162.2722210293010529914738319672981712 0.1325187639264203507572940745778347 0.0876296376324550923210149319450105 1.0917092722565023447421518695736254 GT 1 -1763352663.2411995729853309600670766520067639 0.2588630738920583262570063829586095 0.0451960883744915194897874093995700 1.0462492877249442939010652260271868 GT 1 -38469047453533097.0315364466165053987461156875966160 2.6163874085611695960444701399343485 0.0130336246849749261602116580322353 1.0131193076922658807137911793138519 GT 1 -3341124738057997107125476.3716015990369827254570866645405804 1.4505056451493625592149914225119827 0.0872594471290331702088714127829169 1.0913036086824064321551546951337268 GT 1 -5669633710777101900079887916045683598.4434196238700706340877590563327941 1.2308591169024733120508373936973813 0.0763714985619921541412314625338972 1.0794453429068931841816404497553238 GT 1 -11098816.8589216832277786638035606955073254 3.8166974550286358287890646220673316 0.0078909838162532955899024065693617 1.0079222823887966319324489204458853 GT 1 -117464660580275541682918253689398439.6487018225258492756123017269089184 2.1533722056056205625916425998212625 0.0702949176754843867317179845208684 1.0728878589067676657952103476538353 GT 1 -1364517419035316010404392751040528675743.0317625401209117948333477893835854 2.0861917764108315525154816290085541 0.0052368262226300899494384385596889 1.0052505864580711304642017066614680 GT 1 -33.3034785611826179553146046842284260 0.4576324682619743416004536349906953 0.0044851801791996170549045177223890 1.0044952687772416318909844652354919 GT 1 -3416231627448154751490414170364104851.7656751822537299352237123210300905 0.4100613634681812245491327164552863 0.0493075029047193736664955239785944 1.0505646156275929360922496721262477 GT 1 -5651223834867994.0113044503799913134868155301937193 0.0289309302785856688356172354478849 0.0116915113448549778325534797539873 1.0117603944887066538155964562027978 GT 1 -11986020651365878.1735442649929464410059458905764032 0.7434397384691408485943492593117856 0.0012028336983037587063405084314140 1.0012035576833706332880852892808035 GT 1 -12840730841435346013121903.6620733331878264436363779078343046 0.1414007768682684838518655568160251 0.0909854005983055897298605355440022 1.0953941239856752149037164843361274 GT 1 -2504306876.6568829459765437211124269756457929 0.0232061864627871972242507282507778 0.0024173771761122260682713027850460 1.0024203037496908099472349352851181 GT 1 -3676017255292282428530087.6792621468424519125367092974107423 0.5781329524409069195399224422346961 0.0800367064407471840680417391010844 1.0834215080401695900654191720533057 GT 1 -2137240810717314663928109804795.8463072182997738271659172534166641 0.1254565681165540039498630334484495 0.0333658206787633861056702508894598 1.0339351598391500916160215192475480 GT 1 -94788282866778255.4215967773982512242786105903978779 0.2594711834460537800289589523990113 0.0921508300370686912125549929265574 1.0966770265546587926487041946224685 GT 1 -273650.6410648486386565460616580244665161 0.2699045672452108911400121901138499 0.0430292338074045096034807576083257 1.0439824353389227854712563189299251 GT 1 -42596262068275681169.7448876599905912874101002840862639 1.6537215853504030086373338268474057 0.0489626363784909812486491214608916 1.0502019284372274479832295222643151 GT 1 -66407928.3132288747106123046311472800546472 0.9999293687102240830506737501684039 0.0828413545663697662851074961249700 1.0864748168543534592698748574704869 GT 1 -11711.9922769821254700311562913317319351 1.0785937196749922646383184293025438 0.0342011775593555422073055707480585 1.0347997248014172318235026429141768 GT 1 -7371558341373733487.1782394256800060976749919024169327 1.2636006834401687049736765412822978 0.0995562441579226164488704224213718 1.1048675751262232619745116170940049 GT 1 -579.4329665544082542699296357668878016 0.2226009047331144283472871631424154 0.0826249140095623580267533030934368 1.0862388543815962554179622318364076 GT 1 -388959837620048.7099439759248480760846044293757019 0.2792578498918881325177712663412040 0.0173794261002228597245581924385992 1.0175322212419005266115176740172003 GT 1 -5890193634258661607083563138949688648083.5627240128470361378097690441789453 1.5715816821137026281024676515052984 0.0534893069922571279382025001008275 1.0549730109768782356341704910632872 GT 1 -216612596697830928.5536412719075434511475092227919141 0.1577076935275698660853371749505338 0.0823172795840279389725142162662203 1.0859035685640679311935928260572755 GT 1 -587271916360.9680295786196960428192025386616548 1.7793592985707090539412069779939753 0.0020015240555256561291685642544757 1.0020035297815842570476316204312682 GT 1 -73623846054083038593855592970326989662404.6437566450146353673462871390889530 0.0789534211635198150156342436936047 0.0926939018505704587646806517579510 1.0972754016239943807317192625214884 GT 1 -6562774148757895534643803438433818111.1623534946888046485027711766133416 0.1210714176126566538745205081424378 0.0369800067140213835972250182076439 1.0376811059395290604044837070738415 GT 1 -6898153336927330294884133343.5834499143676360275324532125644805 0.0774014610604098901048162981878765 0.0470827220640237275592879519917475 1.0482271808415144753930866113405408 GT 1 -1510521299570765381739.6765976104378950276574585172093876 1.7851913527723677063705852565583091 0.0659233837909473854740323954472595 1.0681968139151757109425135436056318 GT 1 -310781626.3980282461938268888292843197120106 1.4378919402115760666721376330298322 0.0030588506012612554793605588004141 1.0030635384468152367513087083409814 GT 1 -1531956727048263179.7573237448647733003225315685989864 0.9507895596316884207760362714502972 0.0667262677592326572019850720480943 1.0690567318394439183931214069524667 GT 1 -17958716796700246.8641514931464791104554184702466238 0.2432730121167293113497944241319460 0.0952046651487407466920369789871959 1.1000465101934530787995007850256589 GT 1 -172203330424912.2614889132507208082040064593063473 2.1507841953387889046737215592466986 0.0509152645690157160718329303134912 1.0522571951791312971033810724834648 GT 1 -1043806912694188149080694090538.8021517166033305617544844564150447 0.3067240272537346927821160343824584 0.0503551400869335233160025827646245 1.0516671959504850158313136388163582 GT 1 -1022673397868656009544807630480050589586150.2043401213165937057291384174011035 0.0995914627632851604201511518394346 0.0045750936293368741613251187931378 1.0045855914012925197534855549750765 GT 1 -240933758078501696058672046708642276616.2843540104684192987819408919053044 4.8891839141699596819541645102243405 0.0317147846564380106035609791974912 1.0322285911546033003705130977500190 LT 1 -1158027197808632017924546033082.8718594898918339816151500331413303 2.3541519102297579021150937784520152 0.0716873936323385353240960694846679 1.0743867426106521629305662235796196 GT 1 -1122629032859458954853990908071109110.2907070498474562869067908155528037 1.0546877277867018652037697604943013 0.0203542291238889919344474770694806 1.0205642309489957130731649851704496 GT 1 -114486050849593768712640385.8633753424200005656307897321122077 0.4528325400862578573353251200472498 0.0096631716975116083025382411742779 1.0097101631102361527499021077945242 GT 1 -2396746059402346400524831949303073180785182.5121546611156157229236213795555721 0.2923368023955205865555563069000904 0.0788911279988845813353599816197169 1.0821770390713384300395992615615577 GT 1 -1550577547056556470239897189.0262556929542049967817242517000013 0.4478560193915921205956142498747041 0.0465761096963604266390825021125601 1.0476956785186040369161559970894436 GT 1 -1.8699053404754948197597186840788276 0.0282857712126263191314315151776343 0.0808677507161051218393423638510282 1.0843252613390738142184388407477847 GT 1 -6052847.5929520676181816932391917233139184 0.2104832687090888191629314614773309 0.0405638089327324512358039330096696 1.0414094680206212350887959898628336 GT 1 -1177530210707950227260.6307298297090935417725062801863903 0.0460487839360272003843688618067549 0.0600312078068457352166850016261706 1.0619086040637295875667943831177483 GT 1 -27026590807947550.0894541274800664449320115037711023 0.2629418798241267459889427206507422 0.0011070634620219859865301523058412 1.0011076767094207632644680554556126 GT 1 -6069446931.5096855597552755870041379244775647 0.3932985152203379416176816576899573 0.0549422133025375452000621124120061 1.0565092034135712182843089443206471 GT 1 -361264531925.6748294623951979253738077006183970 0.3691658817425879424461645923779857 0.0197709601120995268828142319690827 1.0199690204530947840445661652485808 GT 1 -166109110060429.7413777019012286349882684659310797 1.0102839015228897280343262923853049 0.0470496195100158628130958906171246 1.0481924433256488327778960896617642 GT 1 -7866879884194440223359118575100480587175.9200161915522886103935169381666432 0.5559810779784115525874795603154444 0.0201843939592186471546806030380534 1.0203908821225311013807235225906313 GT 1 -3498331023163.1865074505670395917528221029221252 0.5780207273966754478374227720603466 0.0182254791963493602807649249843237 1.0183936092088336811947804094726054 GT 1 -5235805704757847.5386465751429396900246130139271732 1.2439309816682435096819883113937100 0.0121836405813079079526011920845607 1.0122584695441430730790183659584091 GT 1 -536224.3118880868708639173299771554613074 0.2391490363920111711863900334824637 0.0932076289142794730258948684589678 1.0978417733906364198979404540078024 GT 1 -321229596675717344509.1886774685013141625508493613006121 0.6397289779850990281323261699362336 0.0229735349687879735349261971354551 1.0232415392497172914111679048239583 GT 1 -20680448424316828.2675367959215071312182857584210601 0.7263364416913875867143066127803852 0.0145894932789311915237438931283868 1.0146969665371253501532628866338255 GT 1 -519280156983894972.1936720449322927057287817830514995 0.6320295807959970423217785613598022 0.0949530901548783945298002158805952 1.0997685025425432920366726270569770 GT 1 -40402.6686672401434357204831385995145711 1.2224446717074978505504908096997066 0.0002476284266596935487209092228444 1.0002476590916409903866163499654302 GT 1 -1126259760229011806764619169603721.6918466791015627742394057785329631 1.8896180639844174308707267582965069 0.0701962782998813582064961149438325 1.0727817670447855578962654230417686 GT 1 -1716489040615774857032100579522636634319.5895489894155994103229547163636630 0.4073832745924162505864373684554233 0.0899795704585793914251213864260930 1.0942882296777226748800158415438759 GT 1 -938921214828250350862321535925747.4799891696881226365145711989046688 2.7882870857407372364250886925959262 0.0284427077181259982630693218904536 1.0288550388907450210942164101328917 GT 1 -60662783468188300278.4044311903626575662029736325891898 1.3373384766570598257581958157970704 0.0999088546957421340660332076185177 1.1052592482252593217471039664900330 GT 1 -22912779081272627.1284623856211179226459807913444540 0.6424495999836889787110213983874317 0.0552851403451025931036107037557856 1.0568721328347278826237348875858084 GT 1 -8541484014415660731671643648860387884.5187809072869086172492099858614045 0.4298753781266515849026901785213577 0.0495060292036572935481938592564674 1.0507734602654149796628244289438906 GT 1 -8478312.4424830590299328798784664621818186 2.5466329926780577561417239697239914 0.0510333298609139501474304428131429 1.0523816020225961600345245073204413 GT 1 -230245794725375045522237275117438.0971398128801498340465100086142862 1.2417763752285819164165528520423082 0.0114774589613725656313431312340900 1.0115438333551512623796614175551541 GT 1 -15312255934916408128.7765313585781231618159665567064850 1.0950725101459628982784465649961941 0.0946752645350879298341774508542021 1.0994615759259104863250302154045991 GT 1 -52.2703272048050584968429645832298622 0.7117886546651273851040855840679255 0.0532819978217891328270781770616809 1.0547540103122213954624035990712713 GT 1 -280683029620317810114752523576250994460.0088621239039635644327956739860567 0.2306977558554532214170962673988270 0.0230504126271869423502249406492686 1.0233202276843519455741086072093274 GT 1 -27555910556673157825310592904530130261.7192543574639007325209993912558602 2.1052701829632096632793353092967844 0.0181250432908480734219340679265971 1.0182913140622313623660553895530624 GT 1 -589036274786337694350814.2600559438967365173526480821563107 0.0740901610365582864087127194000442 0.0348852654686349161314710049704273 1.0355082888232819948411442765847490 GT 1 -810667400724748142800.5119236481105910153100362255136686 1.0202929254219962318132605728487211 0.0725857822249475454740526057341559 1.0753549763518536902306906326704858 GT 1 -989510143929958668727.8658504129050866800392241514659711 0.6821463836311609154799127744144337 0.0484685117568158745958203712418708 1.0496824995268879870414256368220840 GT 1 -76.8387911693864471790758230581440910 0.4599499434665594078537271447806897 0.0337886456058089023196994423191103 1.0343726753326696312707872283185124 GT 1 -47874482364293224338932719974532060.0324938561564669624221909046922103 0.1284665288039943083560533773311371 0.0762461721088473143382423372596511 1.0793096628677941726076932855746421 GT 1 -1884491.7869898941767367248055602735321251 0.5215987990628203899370294122471869 0.0339610633571218609635151142656767 1.0345511384982029451272980734651365 GT 1 -74811103410417205573621100046244918651.6823531115347435738072485154736379 0.5774785454027633361571710821596626 0.0426644981360102212336704991863307 1.0436013723064351508299346688258479 GT 1 -1991684422116519071222560304267236280126106.7801351623210962802617164652837385 1.1753930245805361090251804022790301 0.0993361979146397049844287644537015 1.1046232296473436568450847596226241 GT 1 -13583375990.2165133234612104727090080655373699 0.8661569633505839709672084980388415 0.0425010141382232759950909939874634 1.0434306170800883099166623798080076 GT 1 -1050453695633.6534596471851507881439401350240768 1.1569152922525874508930796119218588 0.0140029917032330620489635480781670 1.0141019585658827274424583336773284 GT 1 -226961.8556394811422047153787712154767930 0.5664307773864061394371847563311103 0.0183405139850121156538551529605093 1.0185107863468427863518578006371544 GT 1 -289581595390138222.8022843816915780425137601912874568 0.6277789766903499332449120245999429 0.0579610781079874498375290067331737 1.0597086869026525608206367972220646 GT 1 -960251.8848950218672709544124283151459212 0.3922450066148645491258230054237871 0.0199008463633819449955719359111299 1.0201015352553626241314886254446840 GT 1 -107465551.1660135957250412295773722301057350 0.0209334840869347173337306219453569 0.0055432762799424862005159102731044 1.0055586972507715896897291360059941 GT 1 -887738886771382377680902606551815651196.1720862930652623287907729711835993 0.8768108935012330817551484678404266 0.0335866799667484846629869804789508 1.0341636687495828559164291441070265 GT 1 -35980136375481445854125441335295843.9095807466240235261801513572018761 0.2633198303216853951211168212532590 0.0595694255227040683885317275600737 1.0614174506400370770596334701519942 GT 1 -2038323168057240648203766267496657393.9986043399268485970773998797585208 1.0246383254863145655069143015737754 0.0648476221123120333505237137062229 1.0670457919689064757982573615800870 GT 1 -302782297407296007005521220709613435800.6425619306251929383103362585028558 0.5895087469495206922558538048017748 0.0965334347068376498058716215549189 1.1015161753975476483621524593249953 GT 1 -8759461017020501965375.0763380175141450779571255229481907 0.2767163721500993633798885953740785 0.0131276347858090564497113702901662 1.0132145638030867777874676194830403 GT 1 -42996412674410220693867.0466508298766959407640313391528157 0.5091013786412269791451715511446210 0.0364575463269359781828859058786590 1.0371387301647725020151952425075459 GT 1 -16927.6566619593431808329338040796998040 0.9304498642926255612746535688600279 0.0790059368365883459902066410356810 1.0823016888242494036430486853727661 GT 1 -265.0381042318465891992842969405923643 0.8498783344795998722299589170612094 0.0369923344824125116802608815992350 1.0376939071766607788012040271135544 GT 1 -2947032084.0015238939961637718819681161803090 7.3549465221223880215869067209397214 0.0857320446998865526980231309587773 1.0896315827688342535619812114043788 LT 1 -16939024129584961802108.4613845293342297746767588543491796 0.9975332052980131492686664066451494 0.0738578650440987124675852633161026 1.0767275626419799111857574623308776 GT 1 -376030598453079496535616427393.8868348137035831235101794086155343 0.5933518603838803347892449887674754 0.0636724382866411007854058487321050 1.0657899046304774385619360463132328 GT 1 -1157616738488396020119957646948197.3178614151409573343450569520062150 0.2890170100715336450843404566031870 0.0295572771758960147310386617405333 1.0300028963279003467007743483435415 GT 1 -11285893144424772916737434.3366800062675319591978457834819081 4.4343714919073036263045283081742323 0.0205508586732205661074230530132849 1.0207649660422952349265265828891865 LT 1 -24989695061543434477125.9785252705238592792904923507729964 0.7713673032819408376460498269582208 0.0724477274987434975417271719577301 1.0752061275967062284567175020928582 GT 1 -69501561986160824312216110054399004.0457513899154988860608309677428518 1.7652614421605386562519933161305873 0.0558997926262611495844482430409048 1.0575229665913877380291175081016975 GT 1 -732.4918577500753944874572204091322477 0.0403904711439344059028052513124029 0.0061023816210533769968486833614939 1.0061210772491539884321172532201348 GT 1 -439618294593789429014.2224130851429981098655296789267034 0.1933553396386374400284321814753959 0.0461899626248721543837148528080081 1.0472907496096111748886587924414173 GT 1 -1457857487718611082.6308945506155820242451313836779813 0.2510943889233799293189857807590505 0.0030755931954312142766163259357830 1.0030803325522334910628725880656403 GT 1 -38960034195255048530168707504286274515694.7209139796697082134951199676889716 0.2417616507323983748569810017020459 0.0616424966993354467526583163666850 1.0636242690060687438134567315497641 GT 1 -22602255000500093383.0793430806624796452375072168970485 2.3327261221104051897249627676037509 0.0704265597948103015616265942515520 1.0730294645004974101495389635171891 GT 1 -153651363243932255.0337370296687286493595805000202305 3.8044399612044250734628275891587826 0.0605494767861144871760276489007179 1.0624601244063770525596207684023087 LT 1 -14663678937147552688384286921343727776.2267561139674258952593276134639482 0.3256368500857496851570720739204156 0.0840209576174186069432283533044486 1.0877617940647449019880937758096197 GT 1 -2299360181.0750031972831038150616290588514724 3.9159801496179733336080061449441798 0.0296010079821260312260122888563573 1.0300479600813254708371948808514673 LT 1 -35.8988275608417957798167448497009581 1.8449437648303595887906771957785096 0.0218546209385745824102455726257654 1.0220969706474783927127621737311375 GT 1 -824938204244137271930620214987888.3226425902656939123370320617963938 0.1195698000997402659246168200893763 0.0663436548036510411762980095521956 1.0686468472213080181203501185360099 GT 1 -2716193704564.6305206136758412791752148963110028 0.2247443516131911403902552240319389 0.0341712871350280226748743906589245 1.0347687763667075597797168256339306 GT 1 -48580320436834739013228763580.0579929663744813913290401766288785 0.3613753058406681117170779166701550 0.0979593438615529602116012301738123 1.1030956866110644852129464829393444 GT 1 -1621683347755570626227034.3828246055550049525301325114271531 0.9388928645287382154697420763408879 0.0010366684686978367115003203566065 1.0010372061811066207739858792137230 GT 1 -63284698301334.9526827738979658015511975722094299 0.0685043254093281540814528673472030 0.0173312195848707445908913234174262 1.0174831633102977902684900366329077 GT 1 -892511831604750781728761877965546083429642.1741368748338502684492174487222834 1.0375977056590757338469872883814862 0.0043901592632348563498155752319403 1.0043998243101832144194814729317705 GT 1 -7308975853156570010696983008672374.2496240011199852777130249253643937 2.5192594791331249964931306807840491 0.0198953950148835655980380402667026 1.0200959732330734449464662912317090 GT 1 -646543394175.4914718899224227373367582055830091 0.4332035874081474109401476618775010 0.0538762130593479898200519145445762 1.0553818654879627824195208137998488 GT 1 -17684491263682159333305599972220.2825969420336843256514026115829079 3.8506183386424016269616725454418319 0.0175261057300470643878981474237183 1.0176815063093336760725235139825070 GT 1 -2874764324460087287714.1370038296873800045348742559073798 0.2531152027436829505187946792283420 0.0876215240593567909607840403746513 1.0917003794456913212244279932962213 GT 1 -465697936.2260416023885336643180883205736269 0.3803577577709614362832885971917786 0.0781847971003351492867690930364987 1.0814105062089658790799035502519923 GT 1 -2715.8873120075468986139287167501287958 0.9741325402586432155074554542901630 0.0799214220507538837273437926607667 1.0832962017719490364528141353920590 GT 1 -11547964.1066094428934894277676391028905009 0.1095821355945707153577549881906157 0.0537268083474189756954547821247995 1.0552239655188447842205069397089563 GT 1 -4024741302686.9004015740687743571378001090884121 0.4824164177913026425620516967305081 0.0569716534395639426885078751972256 1.0586589368212181726326790965148995 GT 1 -8637158.5398312499077507353369848143139798 1.2497728040547548785833926913655911 0.0076414778568644340086010577672022 1.0076708235406323102636550775255934 GT 1 -2906784376636059764911444700514872174.9943112890167765506016454513371166 0.1185634970506426312957442474451011 0.0279342179534541526049239467515560 1.0283317998090638144734242549156497 GT 1 -602172463227323890051360195031538958557060.3770507479784818942723723925768219 1.2104671190423692636045116854203622 0.0919186898367224481411307932327824 1.0964213557521128211363891994199401 GT 1 -2520082972751333330545964687806629.8790620070389546099193434494491998 0.1274013534818407744640295726186804 0.0580265983508857055235201985473901 1.0597782408456984536807221231326503 GT 1 -29847730468289819068185622814.5790260257296866230682148529562991 0.0890368750620788828636245797997680 0.0967391564751101745223750334504394 1.1017439040168817324705540595218380 GT 1 -33144968026487934996550257750049337002621.9527008076945052995037362301951458 0.9581339419998081671517230990984412 0.0476981434861957757870811572142696 1.0488732182788346296213971806494942 GT 1 -4757312946658612300253450.1946926221550738212039374196608390 0.1735295553777215388927428398675532 0.0782551913617446028278582011251514 1.0814868739550691823210311168924168 GT 1 -1760912639242301004887822673192.8928061486821238891828084412499388 0.9019820603837670737267971684147445 0.0843353574481267003231378388949298 1.0881050920941398551529746921075837 GT 1 -96862436906703.6503776108534736629086041571388230 0.9555159238374584278059329236246190 0.0000442271864583462884460725885809 1.0000442281645091950302325183377774 GT 1 -12329291370889189.7070779906698016319657052308037067 1.0953425448143723735471335336595788 0.0144033222338772330683598027792462 1.0145080569815713453668222860896556 GT 1 -49322789.6177642164377058958488353512057720 0.5026858784804923121205253681792926 0.0287557400758573860963624558409008 1.0291772873057566561202372898253354 GT 1 -20047782727307932497072155021250.5331820074484852681027154896344491 0.1823785396792208257387682887957385 0.0695235947938377643268012569197291 1.0720585603345341842343041083331326 GT 1 -688926308703.1082072426148221844332084861836190 0.0029928577386110000133284425218756 0.0599632680367816251483874216044363 1.0618363279249409287681031059739440 GT 1 -1233999381250813956474.6544518005603588320598937133794132 1.1179677575142417128845662326621524 0.0295991810948212676636787781802472 1.0300460774685031878151411790352513 GT 1 -94353172217011343730968094228.6974287129124146093700569353063684 0.1801175377508294700358311030256227 0.0319127592401087583920793602760796 1.0324330710145977356505974578542119 GT 1 -4963987258432745.9626443980481592453842827775889638 0.1607569175200712058361116233147405 0.0619036056394728977784617195564750 1.0639025694131804363467040129298624 GT 1 -554486078853693513865046557070.0964048398712334209806147709855115 1.9455981096179028651010813090458446 0.0938340520031214659740913488273033 1.0985328241524521324762666095315452 GT 1 -20510471849945198452310664352602654.4352752104783933933604097131413923 0.1575913604982845416695997366682208 0.0279777361065215322125065163929291 1.0283765695438148000062682395905865 GT 1 -51831226242.2571770748892113751243088547961275 1.5481583469895460247039744152100551 0.0927982785058524198940243946309728 1.0973904484198991668497495374433564 GT 1 -114873974473.6737837174606974235251148690061999 0.4692528218916707506838058734433362 0.0169454714411414123583908932251636 1.0170906887978169125851895189540712 GT 1 -4796604940810675318274726559941282170163136.0769194315994234610602740637420539 0.5467434806322583609898621838862245 0.0634504980204854360019091251430030 1.0655529000010791392259213814136117 GT 1 -2.8332399017146909340094435187614801 0.0224309990356689277720494916550958 0.0217588130895534398687304831749631 1.0219990269682851773482624562846221 GT 1 -5562048191186.7699221484696478919186712305981716 2.0783085305851828424533966767286579 0.0808692705882304224179405612837717 1.0843269149350423076348950490765278 GT 1 -8916906140837727447860.1196732303140486837156903310656631 1.8692522025438229227889945247807089 0.0201749023487129096417055788227104 1.0203811950299044489207235506007024 GT 1 -74662561427218363197122254659447896492301.1136510468726705218230291124507667 0.1691761429145440109014709603430283 0.0997147661823638209313225113656301 1.1050436394043694784772105062642726 GT 1 -80885601312528353178924523.1461724862591588594777823138534491 0.2432152132772235220642766645289339 0.0483315204355447604910161761127619 1.0495385405905440514423351114578158 GT 1 -2036.0939585571431967429458946543089941 0.4119994053584534146016751283788256 0.0969566596605906108204997781470634 1.1019847307707304043175913794168093 GT 1 -82354857684090496104173397260672168796.4402168506614675060071912696260658 0.9781234626479153650324233958708623 0.0122853921083312803548203330332469 1.0123614813711374959653002193925032 GT 1 -35086529326368031767.5102314467387483896382739602856373 2.2248318237771903254161466406160061 0.0274075739243904452764067792376312 1.0277901683390821026704287037772310 GT 1 -2860095580532242026184863706986166964641133.6594793252824194376796879345388631 0.0533296143065488135227625735367853 0.0071787599061137740433659297181357 1.0072046511889567779330676249919166 GT 1 -126501515106625487.2070761135057442198706439099561791 1.0051040307603058307287071887962894 0.0355584179377136987279618265558719 1.0362060165761324879018172936267601 GT 1 -29945869.9202977715811243380751923663273332 0.2748887836015456612359351530838511 0.0589317810285974560895548675627431 1.0607396457743214532983911126306162 GT 1 -8644.8572786834823234958480270363288450 0.9294278209101134400459590642764860 0.0196886669354946836150972367420732 1.0198850709687704729854202178458290 GT 1 -3812747823150126029424427324568641609073.1846225165574947628850788996763591 1.5432556813836479599503396567994611 0.0219632396894544449386381816853413 1.0222080224241052489083853565615312 GT 1 -9623311849404597392.4605853723411402882739288915255424 2.0995733251937976671141616254181613 0.0276828224111834022188507525918247 1.0280732133588732271629322307362364 GT 1 -7314197108321231392300982850256.3404047048179461682978281635268640 1.5436683741862198995126624363573255 0.0978650614615125219119501275894119 1.1029911708417519689740849210821387 GT 1 -3021.8591479455699727095818093512951598 0.4957260087150087786167746531306088 0.0710808772908510406817514587460402 1.0737336023982024874848410273728424 GT 1 -563222733934177583304163303512599231710.3664439789404193822334966104521954 0.8275357685225707344933193705555583 0.0134659722760823756406148131777892 1.0135574607297402691934155771035661 GT 1 -40367256.0545789062841184571400862326715335 3.1641631969089951524728427585494102 0.0863771376162217561756574628176333 1.0903374158928659451940626390139634 LT 1 -31.6277413578686342951127998362127795 0.6507586699599974849177876588644904 0.0962806670262634467345239571081648 1.1012364391706714711996670104081133 GT 1 -185710951646086418484411980819201815.0472305952996669150712558025687467 1.1511022952141521003998833357660411 0.0044968050927093369045344087869471 1.0045069461336732255417491453613469 GT 1 -3563669.5351888313370778682239254001309660 0.0186644750424872384993263710864305 0.0958045022093466736500759145092372 1.1007096833525053712594463282357158 GT 1 -253886319531584316970564827314713978518153.3115925072980366170752191185292579 1.4799615622093058515734671576983918 0.0415044612907425088146462469638263 1.0423903709577054396137761827573178 GT 1 -131803943822981849625451179103362675369.7280793643248443743061223388028315 0.8710992029021179052703467989247626 0.0266859695722030349949605114790310 1.0270485043368345025118465143650324 GT 1 -2270944326059361577751990938880.1515285926679584716140494863407694 0.4440860384819857807194315883950029 0.0100132439697255624946935243360597 1.0100637136901818371511852929161611 GT 1 -162468479242877088597288.2272694056016775680150622286396070 1.4728210996141414965811447207333111 0.0409002638272184955994853752039253 1.0417602093261742326163163923378522 GT 1 -90004736749959.1237287058248194348281223175437184 0.5278831810769100590446897878880330 0.0827622657853390961786169171266782 1.0863885881832144130621827095047481 GT 1 -397980690976247341982973377328561222553876.3772664429444791595866765187561123 1.9724652726627841811849209385387688 0.0121170389484736899227578341316010 1.0121910487254290237273691409698542 GT 1 -417633326077869553155858216.7387307650259629924470460684988366 0.3031882764960423856442848734198084 0.0064331095635926810500214040636517 1.0064538911878433362655613628193548 GT 1 -336590428000874425.4483990528278212672189384291511799 0.3554740744309796028737921122736796 0.0994790403934883107262326738905734 1.1047818391161622684386830307136549 GT 1 -1155400094228136235765712125407904361.0715787619364285508704147487892688 1.0103292986230909873021276895635227 0.0404678517985117813484151903442810 1.0413094589351798210525064847120230 GT 1 -183078575113066037563651383271.9407523134885723204294950888728874 0.9207219710711837837585093988553624 0.0220418775134098894028718734747184 1.0222884294074664301255754808599150 GT 1 -4568785014810522946.8471730140826538359620417449818722 1.0287185751933337194501043124784731 0.0003099792516875645975011106283427 1.0003100273051864512997071785212446 GT 1 -245693.6978072326448864357278773159506999 3.3982676047018025119789162765073088 0.0497446166745091933079737994612747 1.0510245059612481264257002462150078 LT 1 -26961263749096770114.3119968586586726522774460573619337 4.3064978514249451604965611876952499 0.0067987451683094148967412926425319 1.0068219619259568673933909393186192 GT 1 -749976396988726065340222585938041418537314.2156320464289695449448892937359915 2.7166630003550799159014804600935659 0.0248640831715482427172647473396731 1.0251784158244932641668388980267132 GT 1 -9469764727295354668311420.5881629609196397555657973371619072 0.7306683429736557397249298086233232 0.0605554110497069194635523155018244 1.0624664411651509010078239538078998 GT 1 -1119611183323881.3908611061200796323886732034625786 0.0762845669706106762326081572220190 0.0835614392529371195220887202139080 1.0872602507775278951135063385265814 GT 1 -121.7958957245417453256285751720011032 0.3143363010987564276270194890847276 0.0149635425018258125510211434124413 1.0150766258064991113489903200252534 GT 1 -290705899.4012494885717070062775026908012829 2.8485870471663661554877343121913974 0.0363265788088572470605973461478786 1.0370028164666876232894961740258641 GT 1 -1698171169814628101855949812157.3112080310155397981627696157788154 0.1346537526451077459197128940165701 0.0362287684512342462254528182987286 1.0369013242058666233136803529209207 GT 1 -8124520951475609.2003359753876480701186043729821089 0.1448912590509931735032098284276688 0.0631401920700894167913173265823893 1.0652216259419694037497867772008573 GT 1 -38260114752841647525159643531.9819578512137396400866817124654662 0.2838795405873645260561882049804282 0.0141352739832905886988557711861777 1.0142361285007762840734650832619915 GT 1 -506917604765639704.2359184146009646519146029320797487 0.2944831778142983930637185070513235 0.0371377399605146085439169061909839 1.0378449095641520611716140584995104 GT 1 -182116018007830855757371933614903918801.3649573263868611848957048355840420 1.4220497935187655487139132166642819 0.0217529402857364468226260936320762 1.0219930235549478958034038251003998 GT 1 -38280850042351198058969446440303289454143.4951038434909899426477315486708506 1.1424100888467570870620176862565245 0.0308533683099780073774584555949527 1.0313393558459735666973774443860900 GT 1 -18868860038374862309698336.2145188608477478064262961730904661 1.1165330579869135662891185126854161 0.0854616970319718868324589243302577 1.0893359279736237657498445575580707 GT 1 -64742901003498175746209744.1948321303736581230816408161698962 1.9689519432751590639407175390967415 0.0025079178486392790807654390786098 1.0025110679424936388576750187565790 GT 1 -15237483461988204533181459.8990938311220507096620015786992433 1.5385127416569778541827458547809458 0.0482508631680737043079624835361338 1.0494537906472583141756151457889409 GT 1 -1862510187071927096360.9532109051335605522707523799755124 1.7353362546676110225719396346993395 0.0191222927958149525793387323059058 1.0193074885493343485498195329755674 GT 1 -33.6149355883586429580367064852046272 0.7429148274637215489461182403784021 0.0405321854578127277229440363369930 1.0413765080863773721880828335329239 GT 1 -28657716563289003339105347346497804.4696085841243872497514929613075371 1.7584044180894210771812515171850568 0.0476202886109223470893175511250989 1.0487914672117494267809133540358551 GT 1 -18841.5304676215854102007329009494563233 0.1217471373449290650701695445576874 0.0661926076124176272300733421447492 1.0684850800195970753911026137850072 GT 1 -11841818163647372605175558976926417.4759496852339925068018604176477844 0.3944579753824238002552004369497773 0.0921849004504319383773656080440269 1.0967145559745403590424915010996095 GT 1 -9002039355856685534383381421970590720.0665907200802757572220130374853964 0.1702367754708276273523200896193948 0.0753635915251470791627744195649731 1.0783546906618064644341599962402428 GT 1 -5730193.9693483388740518136911113240802472 0.5673957848069584382911038924369971 0.0730174042048352556256719255084042 1.0758204883550275368131050532884866 GT 1 -2692383130932082795740408.1314926223371742417675587199931451 2.8896788230815365769600185443715409 0.0438028529664487601593214560450896 1.0447911664449185130642141502982561 GT 1 -13212794007174068518707508526890234823028549.0907414132226216345424093656218296 1.9802828367098877086082505615938979 0.0846946636417067199453203166636321 1.0884975684343648443448593027335720 GT 1 -30274468.7619085600401108113210752937229110 2.0391319846079663491299491810924681 0.0534625059496393522113878170561907 1.0549446957519380648230378377426968 GT 1 -172109635164.1662476887789637469138662081932767 3.8745977760375105950557345724934988 0.0349895488060165738138562115637643 1.0356163474489653243717872669862987 LT 1 -7419976460307355061.4775739472260664368689026368465918 0.3186944351013638438302404986354006 0.0297896526069393424446724203030250 1.0302423780113811697268226946382644 GT 1 -552173512331422544.7003580863074231089805536937450788 2.1990918498204164476249080596618185 0.0088583038159899594486791372397528 1.0088977718419567311051519994235205 GT 1 -90983653371212.8502701742004417496867731766758977 2.0872197554263238867417050147890871 0.0417037944642647712392237627272221 1.0425983572189561062531994098076191 GT 1 -3857850112297.5046600343839063368711114022795750 0.0175077640598943435389120353607475 0.0742584306499832934416476832977454 1.0771601660621625231507904102380471 GT 1 -34995152759764866740015956034.5262871889661525733299479030464838 2.6897504210818668472885961372984548 0.0497974974024792473004814554903456 1.0510801564740802153133142190129668 GT 1 -58779346474784719595807.4724844211855063423958824542954170 2.7957475605685156234439751096810288 0.0757349612100956148793589287611045 1.0787564099535428509783681933273320 LT 1 -155190473094823613982967821620.3689854623107288846182223404556936 1.1141887891716294103514057246616941 0.0412414409894151576245492487219205 1.0421159990804564414951854405401183 GT 1 -584764.0906261937568153780329172265579554 0.9014420088483031517490269641969846 0.0527781957869247826565865945060295 1.0542219954667155112036306645132344 GT 1 -4399707880868611.1652501251964897233385774807632080 0.6179526936939563068358620353583205 0.0132662664461948909071109784993419 1.0133550494457896243731249147821991 GT 1 -296125971929342084.2717122417455477402640871125859099 0.1136317088666072292639973967039580 0.0724805619526092212330993986799346 1.0752415272566573163463819412485266 GT 1 -371757350228110938070.6921655384927599885285409803307688 1.3905916937387346962067632190906569 0.0860408384128004388548203035636190 1.0899693895030173539329737348676859 GT 1 -85794831140.4616327888701112133368877454271533 1.1473871955259719755185569323015234 0.0449520272101804375455897444247053 1.0459937064752869782890445738216232 GT 1 -4102.3386884041413007488415141444104904 1.4850764971900961371430888643927464 0.0880642021146937021095965888282507 1.0921856884413798762976804376005916 GT 1 -1779660581531409002185940823231.2668210780352872374655725511674694 0.2581722902623613520239800593817993 0.0301597279037915539633295975591367 1.0306238889860158010853145181134355 GT 1 -1407448690645936908872182005988.9893280426521387182751490492062332 4.5471809547088945542836687566102313 0.0459378002342104874098994446385804 1.0470264107432855433010064013897537 LT 1 -1240540338044669281236520097.6706426855566672239864740785724745 0.1246347744130885843332306897229554 0.0577828726354533546321344384951700 1.0595195348252204792755939675498951 GT 1 -11139802768369165834635263918458.1245809779070117047911150764493083 0.4442137794332073597500558799905910 0.0214223001156950417982419241634300 1.0216550881608190568298767317223136 GT 1 -29355270.5041081337115536387060280914176811 1.1054073052034732016599418071875274 0.0269404136710336494767966795209377 1.0273099588675468996025215747799146 GT 1 -32343220275943873301332.1052954531860286127825815730211584 0.0471605288550698775584701392334313 0.0175691485723557233701793879038259 1.0177253179418413500877317575281947 GT 1 -2472578617999849808045678318759642237037042.1104494378412225503785581644508600 0.3389286235244106987352941099150775 0.0833094228888204677828519931929090 1.0869852932085277797992113549184820 GT 1 -779090.7316700289085062969346902957525854 0.2093132069569785498435901637369345 0.0696485091507626808985915424808576 1.0721928170891511390674403616469116 GT 1 -56566089438.6218338974087325547352139652118643 0.6415724493582597558075100407386980 0.0114402003584177154781425342845997 1.0115061428632656870443508325739955 GT 1 -114345368724042026927175948655052980130.3968508843899228237520667109856907 0.6809824438700723865244439840921003 0.0783871106843439440027152667991328 1.0816300033357324983489772618748679 GT 1 -1114502702127521220051774356.3954972590611790620033572324027567 0.6571535400071471761675581909436000 0.0034269200215337407112277484033231 1.0034328053615238514459299045610750 GT 1 -1.3706501195648977032911179679986406 2.2970400309849570672318558275085150 0.0355768661216128166320878850209777 1.0362251451171309514109628996383813 GT 1 -35563925154728576196073.6877079647534181297038919635409927 0.4322589051796409240177616996023410 0.0043038123142687406893862904204878 1.0043131003734424236850192635432040 GT 1 -1527049890200438689146341224735715323878.2845837250259334598162034864437901 1.3275439536711138748924478715398379 0.0810396110820014515330476536756752 1.0845122599297055239127379344943317 GT 1 -9390098910214607266105374491406333875810431.7383830361123152418050723854375788 1.1578453154930660800193116978115416 0.0615281798265011762401048018927996 1.0635024498597608295066046745626165 GT 1 -7743.0892561118264830691565659197185796 2.0563350792045167079369201555869849 0.0650423514643528618438224216152305 1.0672540464031303695842355272685868 GT 1 -2092276341696.6403244703542424095005646586342060 2.2988513062957813735254581446508406 0.0280512206386643333547896462978889 1.0284521720405009302992124923093598 GT 1 -1023220.7775026765937468096883507096546514 1.5318918747909098977646536963537767 0.0656612833579745279195938199339999 1.0679162548445196762843923891937020 GT 1 -871902142871342820468.9707776048324529110835718644342081 0.2560753271868875454507868619698276 0.0790809739617152087736026912043046 1.0823831662029686093166641732384438 GT 1 -117451322304216947943089105627786850.5173163910314184995645718476323723 3.4311056080150695721440398116111180 0.0132732382480989501001216666745155 1.0133621150059269284688165708106550 GT 1 -2171987030463846663.1206460800918517982879128918937939 4.1743501432067278007259375245472299 0.0477592399312690194306266825030887 1.0489373769325315801144203337216683 LT 1 -1154036.6513246763517774262731716398103494 1.4177511699076916384034096809882263 0.0046769041442484532921221588978268 1.0046878750804789135851754290451491 GT 1 -159.7283465125401793606992511844794064 0.6897375107764926138284064598323983 0.0071105721844537242918463991851225 1.0071359727829948055792179159364514 GT 1 -18658900.5489073668887663861828577945307140 0.3033542763357176768855007594675261 0.0900297200179201161582933926932741 1.0943433393649216243126956357740919 GT 1 -1453144124203131228763735140602919.9202873287024244036970992831901593 0.0512293851600894513947082012137886 0.0157363959783472098272609563239129 1.0158615275401664936643504694123207 GT 1 -3755660834206849.0388347915363684975438246398820932 0.7547139015404404534392326442164412 0.0119092221880134086587288995808822 1.0119807050785078496945149924706029 GT 1 -159433959966600527333115187215443338.2843249204601512432949661097364562 3.3391297528660841508939181484934472 0.0609362624553504416431208994860827 1.0628719239681708100012694124631292 LT 1 -16481245249181341788644205800985316866180832.0569918178258051066928288382678136 1.2704563068368743336157692338928856 0.0660476309892012935952228598626431 1.0683298388301210265469093464841607 GT 1 -18399299953428415815393894294.0574174945467787156415498671462422 0.8254955926817312236939815988071773 0.0149630286312468180898127016777484 1.0150761041299245584689113451259023 GT 1 -1061600834955406016624187.9785362525466078944848617657515033 1.4650200092725435050074767389787787 0.0165271656837395268703068274171668 1.0166652629719597964400155748087982 GT 1 -174075810757614.5149376537585548490622940615721984 1.2571768816381647104852016799531694 0.0408597460967001833629656493574339 1.0417179646323570310157144331171782 GT 1 -1087363981086655851217985846426686.2340598686362140705454524338084669 0.5745455841960433931718703546434752 0.0773621649916886194323675236493731 1.0805184995855548706138561190622154 GT 1 -13951465182049583560659977377182108556491.6902540319525812085032560853043262 1.2086276259841608586229405128476860 0.0812085719016165940644589560585490 1.0846961376639313721898968397513768 GT 1 -8324845400858531404119382.1103692881599091520332731250514444 0.4706592783039847074012877053779175 0.0612204085995935715231145649089682 1.0631745542696788578470311454289519 GT 1 -4575672201037123930.9021894066155775552769875386695934 0.5959391531492625821150413424852635 0.0098773540123663925000725787560651 1.0099264586906004794924421425547275 GT 1 -9.6535519934136111023652272361850075 0.3960644346667344227874494693125467 0.0847241174257631285921569670708899 1.0885297481418307887175248624005381 GT 1 -3215444.2655877552822583146120420312918583 0.7799704485368287273144524558710743 0.0766610198689210363812039879729736 1.0797588528221346846804247325953415 GT 1 -12155955645.4377850378920518204465650608535971 0.8728821730354884851598117023369477 0.0942352684787093699206846651493102 1.0989756848939590856622034109533759 GT 1 -55642.6368274921998768549843447477491965 0.8314780555766441311845378872137144 0.0502047720737599436303855127109689 1.0515088671730201277813010422313674 GT 1 -942335496683657302228385496302429249108.7208901863654397179235618104791305 0.1063860214519355955604482337110670 0.0739478215998964420988389112419279 1.0768246977591971395907587227725181 GT 1 -652535644943.8648943933776467697812963722062862 1.1979625610176273823092586999608088 0.0817296073026733413323515671748053 1.0852633863097088333994442069397032 GT 1 -33156761.9623292500507255242095360218714602 0.3286945163865031024862554935804792 0.0923907617454410008398521753766959 1.0969413473550507982447039774121945 GT 1 -19172223802186158693352.6993473876340063640913506449629996 0.1331503590609952704376009793760594 0.0316026384764949838131247321858532 1.0321127784949471260110162579041632 GT 1 -7699484368007533084025763860626041501.0919462463368747845211230542428917 0.9989502791218170597604872286047994 0.0739898994789636408083223771611346 1.0768701367053420280706513290885277 GT 1 -55810341886453433753527482259009.7236678025919134144976187784080292 1.5887085544702931248925458083526554 0.0434633002363186938781813199537812 1.0444361220311172599246079620171556 GT 1 -15453214374764925.2152495321556190914254283617723638 0.3914842546712214119830869278681581 0.0366359888498791097008981760970207 1.0373239415662710198370133472284265 GT 1 -358507564471624639.9739839953087752111339854959608372 0.4307976206463821707302396724567104 0.0966324326129267338301637841870969 1.1016257570181265077322674549201127 GT 1 -25617965397030066628717759940.8143578828436470738457600881236263 0.6119855975354929028217357022033446 0.0640555360338738459329481414899970 1.0661991376343623439206829305806673 GT 1 -1586041236886685559848850631659426.5133815680576800888503852337302800 0.0583875563576381366673884678278419 0.0699639639706054364954425088087979 1.0725319451668321827655605662688813 GT 1 -2722109236762186945135434.8819109781916131437961725192881647 0.1737654479915405485067701329907169 0.0833784779737330170372927448192038 1.0870606269010045786762623806257063 GT 1 -126800357378296038304.0047565396201549593725100678611552 1.1110726797088980231099653183898799 0.0949630311923404169687078541701592 1.0997794866053034347936382181115437 GT 1 -25258856385301879766962108774.7758553728846585572111631524892154 0.8500485121833221403717929692438086 0.0378305922997096022700459744654889 1.0385647443395726369197617596862226 GT 1 -50027387416484.2299236807115014269589163916534295 1.3394876642539469702050899660453979 0.0113925719660429360911584157091394 1.0114579644474824287290795019525259 GT 1 -81806829898984280713627058367156609639.5493884768357141733946435125825663 0.8795423082229126007823843068974911 0.0369294274504458551815813517045786 1.0376285858093915519366585976404523 GT 1 -288090788182067.5832631312148254973148626066354884 3.0038235398971342313566344101723650 0.0478994137402786848056939977894913 1.0502892405191038366485690964081707 GT 2 -185907823200457497285460089322446.6453315194527771772164035206047232 0.0141962812340960141395915470094682 0.0854834178208290604622911781601438 1.0893596788069471153021499772689583 GT 1 -16368616082555256763268.5675691246385538177705111101114807 0.1816817146580203686853990038574987 0.0301024700634646938671160942226914 1.0305648523056113803656062657801375 GT 1 -805002722820.8010568360164288074652464871878280 1.1813846826578506314392274448443534 0.0863787800364524580402660142579389 1.0903392135949316620092168324841778 GT 1 -6810106246400261836490240334702.4697811116609308641378392580815423 0.0821501133367451859260696403141202 0.0851240638104807296399280666821923 1.0889668117635301001226209198117071 GT 1 -13231.6589548979478660973498055284832584 0.9195758659528861053448127853861514 0.0979176548851294512805411080912987 1.1030494713847168715970033386447220 GT 1 -2410890565884435662333592508677361873478.5713591327655804189774422833042051 0.3198022859116177644671800876137715 0.0026409377793258507191295886206922 1.0026444312074760999225864680393649 GT 1 -173434.3631276365231653524320991902503572 1.3220057232880940086934971576142191 0.0539059353238502277915725008340468 1.0554132807549515028750642565978610 GT 1 -1975.5426619999563381679391536868333878 0.4106954390788005511276455999819058 0.0594076823298239800100521313622921 1.0612454769825617415746878243398922 GT 1 -186111590757195751.6881434425335928936925366671119305 0.2374237870177004137807909601771146 0.0929361222874632850136083435233090 1.0975424038799336614251775631362381 GT 1 -27859483.7534273302439957065681180113288982 0.5049896624437916581061011826146029 0.0022513941555551874174615744108006 1.0022539323537490202645668149148217 GT 1 -26.4361666336320362964558239208964020 0.1354882991602477384899510758395933 0.0386214790705165937420223880415427 1.0393870652223567847463039632157961 GT 1 -12296932894399651663639.0484471641429395823791140197994311 0.3443017834267591109264761949738255 0.0978395383363496436624945124902224 1.1029628793267797296500755559700690 GT 1 -158953730282167334405297322.7773108048182953512114767057209727 0.2712109380051553054891105215578107 0.0207258713836011269447792501981882 1.0209436668455499749747150752241927 GT 1 -1655559278922768335325340565.6056545210231490877544519955301389 0.9497486707308470811692955196775495 0.0802741579391227757372981830613094 1.0836796511091225468286798491172668 GT 1 -19000469293225477.8673025660127740717194957507063697 0.5042408176868606685216859396897308 0.0754455338141879531135876654560345 1.0784433156817731508450995380707475 GT 1 -19246459993658105654594193592689577462.7898315256159971519246158679065026 1.8470388412370745010846266078275647 0.0350656996411258301428219609908669 1.0356952624905358191336272269501397 GT 1 -2958773558309057796416.6951672189802435278826360837915667 0.1390413170291964466237926296702298 0.0704750076267122832255396586675522 1.0730815842065484277420525813564508 GT 1 -5562437605.4600147694848005328836685913681345 0.1572783446217327673518864571122190 0.0670539089067311753379334707690177 1.0694078599828364234507835106199953 GT 1 -56241663099031515.4483739557485920267604669605728964 0.1332976704201658600451644654544014 0.0686574390633526400111656952439616 1.0711281199332669436554670282630056 GT 1 -663938923376832701927422446995845.0700766881157843419908509526911069 0.6158079818081130550742913867589806 0.0207766466470278191902856990160387 1.0209955180875408618556672127411261 GT 1 -354172573283923589699308849223.9121865946396353833632142517085654 0.7225535966918777970062345031329068 0.0726137514686587133351613334745402 1.0753851351147194178991351272144522 GT 1 -6420072.9686359839072953009402265705411212 2.1406830706384778976705645778902913 0.0352150762554618414471703320600103 1.0358500794325743928857222933622730 GT 1 -4079396720.3894674259233086536409951734707392 1.8418192491532635199143835676420835 0.0134369826854521196912886875990958 1.0135280758693197045599228105477754 GT 1 -28871784061349122.7026575517538996907575426331973165 1.7294231721455900869115178805967096 0.0857504355876947827827756817371738 1.0896516983954121631490492876561602 GT 1 -448741574888.7283458386736469741078310942101954 0.1741427866643408462697030456280627 0.0445509276928553645474916117623634 1.0455738162438443045209976355701213 GT 1 -7484286707613115494063627.0740668420154354911174167825250062 0.6749263936814188537298497399494291 0.0388215901103046201645396884024018 1.0395952369932966659109406409857550 GT 1 -160051712176443119.2589332646066692862208369870699783 0.1191583040419213784712910018296708 0.0569480171629171145649315168562482 1.0586338729082133477018766103426906 GT 1 -17.2394018662989774840373367096206765 1.6221394997769191087519028275684770 0.0021887091774351276973299445242301 1.0021911079020797177920590904567697 GT 1 -10129944036352172.8063069091378322346730454128687527 0.6074083391379871443896858522339924 0.0270118307476637321372841713172915 1.0273833559118458569834486403826761 GT 1 -52826645954159223271263.2086751209084502866951438976707176 0.3331102091063792060048984322434634 0.0244706168284296829156062957807718 1.0247749982331157958129244333505464 GT 1 -124996816347178933853171707690433716255.5489446529098803283545382481957215 0.6049729474659916235502596651676933 0.0652611907660798602819130463232963 1.0674881371314054805857326252148200 GT 1 -90466301862388680096749926294214367905.9993690346078474012765444934002129 1.7061152883883698318365285608306146 0.0147436577588075656051606373192449 1.0148534257380014848970667488015732 GT 1 -974322930652259606482968659811350005203890.5530113448817932706525387809739834 0.2783069725548374819160158507558880 0.0396078371706372941264549719907224 1.0404135749876152977094410330957198 GT 1 -3781215486.7758575455585912433918668831236011 0.4184853777616073376442443741629688 0.0104072594286390168419872095029289 1.0104617936508937865733726096318125 GT 1 -3390627223861296251381216031045188189.6657963252255082312871076256640769 1.4230694462836050071923279756395499 0.0127649808963695302385322346871519 1.0128471533000918614572870180572329 GT 1 -628.4705903345509778551472331592261470 1.2357837825167137402532396935794060 0.0653844065098070802299681601922373 1.0676199641875550312599839813070001 GT 1 -1772240697259632169391117848976057683.0990240259294352228790377982369946 0.8228254895287107931425161354149188 0.0378742172202441600412975061312281 1.0386100855333331935827888959012081 GT 1 -821583931973111899686785497.4163677218744742677733964538591693 2.5949772908262397846778808075169238 0.0347402598123055856604779943824801 1.0353580530441612880793035791757860 GT 1 -15016.8233800845749638157583996807386092 0.6382405353443343268372359684824788 0.0607124670968437005610466124882638 1.0626336348226987338436906946515069 GT 1 -94145910587550.2577496677492260197384963741993834 2.0267069679558578286372596855757141 0.0792006815429042785470661875849122 1.0825131617386219673351156536524077 GT 1 -248235477609912.7209197322555257500526302344698407 0.8629975675238751782830143185571607 0.0399460984694523034625223608014729 1.0407658486688090953333889507566680 GT 1 -21529973627739655.3129392122669022146582292638183767 1.1632468033088702446263909641588110 0.0088014954846419644589626709317413 1.0088404574300878661545663193079378 GT 1 -329953231458507846.9663699263159967906657465675862577 0.1340812016648942798938861637209199 0.0165794933966380801042422517485795 1.0167184714625497670984535559174213 GT 1 -36012776136.2898304428561309746462503098252380 0.7331817458840751028447519852935306 0.0616709599514774271427447930207474 1.0636546025236665910804814072021088 GT 1 -30949556814979282419327121347.1250834926058013103759156478902587 0.8654918249427391688063353227357236 0.0507641932279014262709425143981578 1.0520980320261498853952074117799367 GT 1 -890431986490795624163217278988.2926240979444637175091239060762876 0.0773341464245704366798977291196199 0.0569075164464774316309885410870740 1.0585909273998839552512096834973515 GT 1 -18827701663839857675573534.4127372753626519795836848889078870 0.2081321352803417587659061872208702 0.0364141510655073897497038789582908 1.0370936939714093450779068850961383 GT 1 -5396272473622464309.6985075951045787236621954816270123 0.5961501047086315336093624711815284 0.0617149337997873290156707947547245 1.0637014676177437660731692817035387 GT 1 -30455636203628829833659168314.1147858606906906625548996902472382 1.0071460991722984061934156766704079 0.0820534525472538701317160298585197 1.0856161172325721987685426472436575 GT 1 -423527.7023583782171901696576945322206922 0.6257324192195460152611022696842440 0.0397885958088646909809467173343536 1.0406018060644132215000723005641866 GT 1 -1083814592124411747.6082305778091183072925788165535529 0.0921409871765753540515093110105992 0.0791573760034019715040508822925366 1.0824661324670659654240994424055576 GT 1 -911058594.8752955104293617013419342175734157 0.1813555599352113887680067691473576 0.0444302698651654500984080512811672 1.0454475403247418204791642366385835 GT 1 -59186348796373078406.7265357231922502377879170122289149 1.5107191305693868318897288562886221 0.0298333439758218780102320118488181 1.0302874119082094394975065551048128 GT 1 -520433799240267289686438233355319274415.4631388433147561242336207325542893 0.9218177053413458342639064469520489 0.0971419938143430157124038897716947 1.1021899846787134635255610562293198 GT 1 -216305736530618478657621358652114339.5229524008037587509610083304059411 1.3638582911560660786743846047253038 0.0549978996828638556733936652880148 1.0565681289330481503828442090744966 GT 1 -505141237202995160688858971403619.1890232116902860094463555625547779 0.5932920625345161622781065253016369 0.0843022664164527865451244633542557 1.0880689539358935942623372813179312 GT 1 -393663121124786341207976573.3195693329953274243313160112926542 1.4008319875477511689209960253198321 0.0710818399003857058508456552310647 1.0737346386671411858601671164491701 GT 1 -14665128881.7468594979569004415379280107097590 3.0964010439614700012626263043550275 0.0985395138741637827719280465006213 1.1037390685519213710458250481351554 LT 1 -5783061.6559620424099162498158356420059663 0.4690480155880619965286872536336392 0.0971529772226878538456286741365571 1.1022021499085475759643164573459331 GT 1 -372193184287.4957583578898133864266257504539604 0.1635388705536796270715040898512117 0.0574883382151619756016208156278181 1.0592069864900067141020422924444677 GT 1 -25269916924921508936179082209.6353723224305684938562882741993713 1.1101230451248093442593287089775808 0.0732897594553807328495883264786882 1.0761143399006191478473645816768945 GT 1 -64750163686800247063990540082754289426451.8202096366880984439205294276818750 2.8502423527091971463146444437947025 0.0516758456957277401242329381477939 1.0530589002534187594171813423989655 GT 1 -24895.1790779332479956377667726240150527 0.2573404419407888819506026206090714 0.0377935076411478553688320417823571 1.0385262023285599258426025443007874 GT 1 -7593320743827245583412433620551295.2219177034594865049487203278889728 2.2838187245167883179755488243630633 0.0695182028318873970930236717438118 1.0720527655112614174728274374298943 GT 1 -3477.9798255900147096509477694215976882 0.0914248761045631681442679683550751 0.0884995333770759951824438267125443 1.0926631729349447585894915710917498 GT 1 -1198516459005144963.9844423511409156169280629081715993 0.1282673455397957015499905176220900 0.0979719158991497762453413168807138 1.1031096240374126097877864269393201 GT 1 -2751293543478.0713529275572922991540729326085057 0.1211096193076852008755446331401195 0.0062660618025482044166813490475439 1.0062857759643894753510841826347032 GT 1 -2091654330345114980361.8744416797720759217661538440630967 0.2838272352974156726633045033468265 0.0896283580261290879605673777447924 1.0939023650694290705166653260918712 GT 1 -1589.5261267899333264232019720770094271 0.7626544315471665640804731548963702 0.0915884879125114814186991227357114 1.0960577959033721250386116487721597 GT 1 -268.6466387131190533924045562538740303 0.3208173918458961688469213891270672 0.0874353053367607048940335928058279 1.0914962977775692513170090558409888 GT 1 -9462.7740191730456459085665495847170200 1.1039390231476012861520053468141000 0.0947646503623022913566093440236007 1.0995603142423269958607709982474614 GT 1 -433683175603281057019877937903643238975.1596126679500114507827471971682057 0.5969962656323907257031637117229920 0.0646007518516096167835587984738327 1.0667818374661816380332799018528812 GT 1 -1939457542734022895007092.4361776969945053548503063174373511 0.3221306858831555101247251526465901 0.0832957554750121610558998233948768 1.0869703838026024780542300794190228 GT 1 -16304353325242781418273.8330900145852481476464744632573812 0.0014998043155824220557449808037841 0.0842116091977550772329863805138127 1.0879699554039749817335132575303522 GT 1 -5184.3552078838370518592426517357136028 0.6804379569659589041264874119118493 0.0235455223096297561805990562416871 1.0238271475806500717516829938226572 GT 1 -25675385144788979541168944909028811704.0750262610569769268775680780242646 0.6862361730826846885076595738899115 0.0408699381121153458715608734114851 1.0417285908880326340121970652471575 GT 1 -825404.4314454274184049499167353387014531 1.5183021948647636533638730549465877 0.0490658923279697786119045532549186 1.0503105062483446821582780909357651 GT 1 -378753350.9681362900707233650556140843872929 0.4638467264909293615465711271945896 0.0649757416659504642235022588272871 1.0671828052877100895982487998254233 GT 1 -18505461019739681459.1091534515001774813133085435623806 0.2226883591471877609360989130603725 0.0930186935456819548890790678687101 1.0976334393833449155317543309973066 GT 1 -38823144527958294447846368.4777753083350388261382863653425690 0.5234097560255821195920542585687164 0.0556346268858828565852067152924315 1.0572421399299323015753151341759827 GT 1 -108776770676214952885436912112700738875573.2166613268003826795699003704864695 3.9502050589181152388899684983113983 0.0620045125533541632720890709626933 1.0640101408119558204385429526476441 LT 1 -409898074225717.7381530934944468236003801893060015 0.4230437739605518011699839709843875 0.0024564901168619368656486610029624 1.0024595122389321917065625704534087 GT 1 -3141028986974332426987080889327518855656.2904588511415966223136691453539191 3.7122607686354019803485302942244580 0.0571202263656362752656804855472478 1.0588164979715083074125489334316480 LT 1 -168399233.3722597406877749991611887025241335 1.3754119558234571897049499432412669 0.0564741229135382901153812023603745 1.0581314878549240659891373312148811 GT 1 -38415835496598589396649701577853151968608.2005991032213446480683966994930578 0.9445241015697812045880722431252248 0.0978145887529762767635728567414186 1.1029352243369581721181868247432561 GT 1 -4113303649468737330333710.0375590708707851548686866913375356 0.0161860642504652154893439846964466 0.0265363283459784759776970681656076 1.0268947721193766478512557552893005 GT 1 -737941443958.2410936604129709360109130476379519 2.2303539909720366284159889282094831 0.0855055483705885426878225769342857 1.0893838782779743396521627105614183 GT 1 -2701.4363631426009033415313602638398087 0.0342949090273976733668712702976996 0.0513369990109871608773021648533787 1.0527016530391728796875072217118165 GT 1 -881598203562360129236987044011937674.3341800670078621526863934132508144 1.2168739757131191934103391456321290 0.0279822023260066935224841581161147 1.0283811643251400038423806593609896 GT 1 -10.8817107498852230969588543782912893 0.3357607271381873049537291902417611 0.0895155687019720386521333383017088 1.0937784790292780406601509232237793 GT 1 -5358312713770.0468838771041818036986459802000226 0.7245138494053918400936933708188227 0.0557331841462037566061079987279777 1.0573465088599823853062755669736118 GT 1 -52128496882445417124316065902368.3778302569873419101099261929675988 2.7913566070046302402841098049777782 0.0585567859115030703748190568014950 1.0621617800467111371225914287883994 GT 2 -7944567149870720451348842715623496813674.1347435112351188921292863076656713 0.4847085132630803797635022948582283 0.0460447284410348506809059118894271 1.0471384937913113702808868225959209 GT 1 -7524646665.1144875385305899813348091548514744 0.0578421448172224277491796548536021 0.0712858368076390256186741589508238 1.0739542697593821306737281588484204 GT 1 -109218855586247955711498020597002652900.8094508684414941061426902548834380 1.2010547066319853847246563335964418 0.0985943607453534923354310717278093 1.1037999126383840359033378059807748 GT 1 -7616564932970.7624456364832318049852222291257053 0.6133181112168597262437141113540869 0.0804848849663243021354782355859634 1.0839087967545701972572394888256824 GT 1 -121478868624216152870895305002251600704.6359521863127136275617671310223665 0.0383119658884849552439785225959272 0.0065305955273648857958269849176338 1.0065520131638738574593990824691216 GT 1 -114644105510815498005646201589153896082.5331410918654817823168866981591888 1.6216072190535323800816170247390696 0.0556415856059644569593332132588043 1.0572495086305624902801064673658263 GT 1 -200769259441000127289771585.5589598509579623759785563635943328 0.3818984894672429346365487657792680 0.0092005906386897669076624550473916 1.0092431774901318063969437832801890 GT 1 -17.4683775781722090932802720594364934 1.7087538952933176535442955239742805 0.0175722271143735071606785312381598 1.0177284515433938406925204776918988 GT 1 -6711562922422.4124234830653324695344868782689913 0.3617459858775555487936159368441462 0.0758647541446642555671546253846014 1.0788968480781851826117364889714475 GT 1 -5931684639.9105080848437201202171105016273747 0.4363292203945854117327502106605661 0.0816936459257969831057090088074341 1.0852242249983787518428270846752001 GT 1 -9754884357794958.6736036494182738859663731423328873 0.7385374027695678563485823113818728 0.0800937603018323577643882882798608 1.0834835275041284825107983189691186 GT 1 -8795.0710705123903789586027691043550668 0.3867542841094723440006752356271494 0.0763377652415827687094346243003807 1.0794088209672199608928220386843449 GT 1 -3078689390880153507396133.6281235445838579054057618586273705 1.1318175683934584074161379990243818 0.0079596106292033206963940706914124 1.0079914574345721901852020333195700 GT 1 -48126578203425045480797138.0823746798676478696245521456469348 0.4169611025692867063269761867048020 0.0675529628986856512489710449649784 1.0699429257513523484996614080628248 GT 1 -70745221887524236886.6849592866155636509424053321083376 0.1864011941720877830642376743199601 0.0540830878485411856513781822709764 1.0556005444943043148944681795429356 GT 1 -131752847563167633038878303466666.4292678877746646160248714875972434 0.3390152844185152920937652856895411 0.0048795965343959417103680228201054 1.0048915406363384302451341296144332 GT 1 -29207721287982021126725434.6923296788928473806776489118785851 3.1702470592670382786169931642632812 0.0907171196779493313900336513607057 1.0950990337429677295250338180681225 LT 1 -1752953403046110923334465606712354872000.2156346630685777241298422701884520 0.8325377706065034368704397407489359 0.0887335256093409262831354541435928 1.0929199169303347162209631839012927 GT 1 -9922102.6546461267417466111797624677051114 0.3088020679556136691191237685146603 0.0573859604457283673850568748986417 1.0590983701049438677369099977467056 GT 1 -60569994612.3869928558762940154258473626336662 0.5628907735614208156335495966507175 0.0811826820466067949974621659074668 1.0846679598975084182922917127664626 GT 1 -1.3062321207219714347091349353906214 0.0737291200176317548247388500221662 0.0657940139041564682694953362190300 1.0680583232105702229288181508044261 GT 1 -3352491621770505621029697426055162.0631797804572397578638512235390777 2.1295507367815574859102785887387766 0.0776237187598869012343309978621103 1.0808020245381793288243004550189341 GT 1 -4480188617824396.1766588671030993515953245299051445 2.5291605097921385200773164771839595 0.0584624909724571987686996912334435 1.0602410920316219955851690855781067 GT 1 -5031104343291725027361034553335660532564.6032681225824121536194485803125859 3.3926221460747144529856860542827966 0.0891956435816429561567544234361552 1.0934271617359664714804372271561218 LT 1 -353604869702944.6826265438164273419566609233067761 0.2799724751665834163690835423042814 0.0952515249184630666560363711479570 1.1000983019980787263574539567429554 GT 1 -367594662446718938671017587795468267110545.8498693784647877511205904089148577 1.1053179398326336940600522679523991 0.0040718471525909500147261222659916 1.0040801596948156590963710710441464 GT 1 -826375333923922379822836364119.3753514857425647888502342889443142 0.9121135887155095747166114777632813 0.0566471988369571489453708851429337 1.0583149399505986283505418478937946 GT 1 -4110853556423610013.9651822893776507757197044521556073 0.0949722923496269383338700413824051 0.0516092710856121750848956847745110 1.0529887003401561710649220803672226 GT 1 -655044964601735106852456769323520.4416148889142007175514910145851483 0.0553067997999387601536661009889798 0.0783248922877076599197529395293298 1.0815624952775666208654650295143240 GT 1 -20142.8733998814112137677474918703823620 0.6331769920335628379471761145957518 0.0648929372553009063776998813222924 1.0670942506394130856071489714049275 GT 1 -14409346499.6375266177181069238398893263862267 0.7867988906306154647637916747187359 0.0079766821083617719895445369477259 1.0080086660343730780448317508643499 GT 1 -276040490808413297857.9417521884585831664103240385574167 1.6460048862230804565804876244553527 0.0611061297008960986206923900867051 1.0630528303371957939119991487563661 GT 1 -140690571841.8802037026540269053073240807276958 1.0128241929836030318975244792614283 0.0827899712915820477861328159548298 1.0864187940106083870648705061316774 GT 1 -2503365271714551082491609897587229874951.4509427466618425834205555116436936 2.8952741471561882782118735757423400 0.0193277850928262821554639741153664 1.0195170088836849334627641083927686 GT 1 -5880671457337898849195.1961086786452802910673347042653417 0.5606223786456859279970553328610872 0.0516296839666574076804053373674827 1.0530102242754988891478011421456423 GT 1 -32903240.0689099874116462789427660677271885 0.6714435781485194836764734487819595 0.0496084519879003997912052365733063 1.0508812234982123216257322642186620 GT 1 -232350.2585460719446119646366772159972827 0.0915572613624373888167651738877060 0.0726365979389300744712176860700398 1.0754097707524888811904874050118854 GT 1 -6690917288.8661903304789168530041787375070082 2.2226910838110244963970344470322733 0.0327959161506538702915331193737642 1.0333457573482989138840577144293145 GT 1 -2366124781737120268671269.8837920499901666609947315596015379 0.6884232991195095118029947464065684 0.0682856314590576783001799468052860 1.0707289827911343214783464293631877 GT 1 -1507.4438152168700651754813058582202586 0.6246177202179392063969106523168362 0.0353050620305313040308550814198014 1.0359433540781617967115259222228427 GT 1 -1069992856779081319593347291920931.1435683293165331343956045120924425 3.8061102247451882242593045460873392 0.0522806526973301844974608659461774 1.0536968677068057918375263724486513 LT 1 -79682678309877.0647262840651333861679380898667135 0.1770558177213994691167643399487015 0.0217792201871625183586227491301953 1.0220198881942705684444308261012120 GT 1 -932407305075441378813089143661208814650.8861568868409040184356129144661730 1.4108522796989123936764379123683163 0.0816541468264377152897076129282434 1.0851812129363133409627804351860805 GT 1 -2980268906211152099.8353368517268625539536445801322960 0.3506826384294412846981476619614902 0.0996218543788903598568755278616287 1.1049404420998462112688590452526105 GT 1 -34431063562139806051434104087507977092696.9264981723664801937195235452737913 1.1803673309877954234338796126514022 0.0260345372806369464847085131201820 1.0263794351886614432563001796263460 GT 1 -9226140877080805609805841421858676.2754661386700674352320487601039363 1.7846666570617103857360428645651225 0.0215597588850309338236145428420636 1.0217955659425319369420505011243237 GT 1 -1034842.4683097461345501610700383128082231 0.3606023346168323274728422019878293 0.0814473112456475553194539695633095 1.0849560120589178781742751082398367 GT 1 -299733127021861466378089319850040628085878.5926903828474817090059016233175368 1.6486179551511509955356505152292938 0.0665664540995922218288619245206447 1.0688855066431828029280162665413807 GT 1 -219758257154002815361033422713.1747452888320995242733974419428365 0.9670557722744532397991107443218392 0.0691741852257929447784653563926536 1.0716831139740254630668269242609470 GT 1 -15083018673182671.6709335804431769218778583541768649 0.1742040314508643049016183311149057 0.0779275594542235072812864936482481 1.0811314895902528110765631969849864 GT 1 -17629090356269869844193073565.6501285535661080657653335567786911 0.0439278359217079221173681928152100 0.0190262799257214919943295847644195 1.0192096086907119182110155465798554 GT 1 -2572080740977225916678420200319.4688948837040106086847128580635308 0.8737426203650327450000153368633305 0.0420195224012686097423246808266046 1.0429278795083411044154650043435000 GT 1 -2481375901.1959671042705275107632969548617390 0.5739504097074213465431551022809135 0.0091490115859644071842866646401046 1.0091911208278719934838034896014435 GT 1 -3318695579997317.7307360950271972956799121330163716 1.7546576822484464855973903833223479 0.0695149694843525453356748385004957 1.0720492905997404212868414953813134 GT 1 -12937555308507231649829576084008055.9638174824120734544940023536168733 0.5827043271640061441185137800853229 0.0881795929689833894158228123931181 1.0923122304146245511548073988235335 GT 1 -1814223.8540717098601889710475897689659254 1.1376537428476371877508828256402523 0.0803173846157785034309969444824518 1.0837266517374916543622724554140931 GT 1 -404925471684185660353165230910.0948147614660374418327971553625766 1.0786811924069757107367499455538195 0.0835340869532241990259971647761541 1.0872304049234683698904662677997121 GT 1 -104230378233492.5026862394208650369787169611721853 0.9447646359934594459643812714759356 0.0804534542430317316843798288464337 1.0838746154935872261440792984237885 GT 1 -257626671104641614754302372494055084.6571598910810085033933761389669317 6.2131561744429346649550665497805050 0.0399204044780290087842462637125569 1.0407390859552120776550321683882125 LT 1 -625977424569110419788039250.4116671829522656336389664603239448 5.5447621207294128703935397738048054 0.0363174223277165051769559354517103 1.0369933148684917420877471714765042 LT 1 -2555344117050531140884992.6501364020429479244627705770537373 0.1568062629010983055411537657819646 0.0845430106097321703207601807216686 1.0883318964296611066211963393425383 GT 1 -6481840781535769500915505889142.0875707022123199285752129009536657 0.6929134541983151626509763885203238 0.0379042079362674481441685279645419 1.0386412573239604303925454297577404 GT 1 -2457603350124.7167462052652834646729237021362356 0.1113615225555530415581801213888054 0.0284134606025516138240940846691587 1.0288249360078808979366328935857222 GT 1 -332095433434799605694.8790819922096884222107317526593524 0.5202870855921875046346618361398586 0.0317138413099639357951058514367432 1.0322276169106516199025565892648812 GT 1 -258627276473126206117945801857335.4721057788558180583756215786479597 0.3866859231787530661417959695895740 0.0840683906705729953720399517289636 1.0878135793994943453072579139694424 GT 1 -445892233778958155104451599.1591607089386381987112339109848344 1.8873909452000745813555236380860732 0.0150864070291175411084232387050729 1.0152013645301249063914300498309361 GT 1 -27240.5163600432280037024777696077290698 0.9699933919056970175599619107140901 0.0238673776822752237522847936058175 1.0241568182781151367495580720713672 GT 1 -907305122059195545008373366317.7762254919712923825529206999848096 0.6916129133521196066980312183434739 0.0107397509018400843504072549337530 1.0107978382970253887937019246176488 GT 1 -275467418284821100.4234642893274243809824304174742846 0.2611539913166080653899823851555424 0.0915263256275215947564957402668927 1.0959893685910935111907271043126921 GT 1 -53.2571340876765747260021052788355568 0.7565943871112284819202580230478368 0.0056022268387481055522550959165132 1.0056179781674151375957324979401414 GT 1 -82321.5003816997164696666266586500075723 1.2722230530993006761454383243881793 0.0896998067307412687096436922908281 1.0939808511571092449026740344350617 GT 1 -19435.5686262425663744816009071628415112 0.4597877322864763940051209297928000 0.0960215158510676204979376699053165 1.1009497195934097354631907487889153 GT 1 -1533391914589275122695302.2440464908803687659364606540465460 0.8004453950449981592702674009097747 0.0193427715588356624846371340214370 1.0195322908303874593028884149090662 GT 1 -502177102447453541737177217702648887124.0990212934229632157833378710545497 0.0899846849818125265713465949144199 0.0914720419721221874542998169306329 1.0959296177857584099787393199111014 GT 1 -278962261265079143085483860345008833765934.5840837208172597616831357716717890 0.4243451162566652071766426799791846 0.0305518853691722027856675251366646 1.0310283233892845583305372295488048 GT 1 -9326076716209406422565839195.0427030576149736187964265759164146 0.0739381873984921029761617618827799 0.0559802282812520750305606147014337 1.0576081684386540813406762334708549 GT 1 -50047117364.1030486511599375743472250637828064 2.6205439419693610974072481163710687 0.0687336850547431012652872727582416 1.0737454213781004633042398037737769 GT 2 -436576832054167.9408268623506963999301720226430384 1.7106715360132387937088166878777770 0.0530804490933848556639799699734378 1.0545411409288095427143147021308043 GT 1 -31800008398891512727805.9365888589071655312506976531587079 0.2456502523693376398274668247795108 0.0748002922270432604089925044704025 1.0777456644777381617640450046672152 GT 1 -4670525243944053172848.1598896959586758759454513325283623 0.3405315009111075209234847972554843 0.0283330982573853340915837332438773 1.0287422269350335139272105440049362 GT 1 -71347493583779482786605088.7129361317064561316588540227006356 3.3089681993613076183200858886574281 0.0794192908525335931729908930265657 1.0827506024704417500221316469760279 LT 1 -101551786103783.2098178155303037861321326983021294 2.0091773080898142068099443784319461 0.0799707401726372804939136137477136 1.0833498052846157685486732052336758 GT 1 -6980.0274954888612392178436853891990442 0.3792962669844930924719157817719832 0.0585612858016686679178331353134977 1.0603460267919057669601337295327771 GT 1 -30222536139200333989126437295449.3452944231596131459823946725956393 0.3744330202075547202602906855524764 0.0113364751012368266674935808554266 1.0114012227401934438424631418949225 GT 1 -312810928133.8989786235761837638480550805605802 0.6352553957458933994413517343166346 0.0811371786264374960194537220251508 1.0846184372202972859999785062519932 GT 1 -15461645423256679391780038613247761814237815.3984518314672240460445207125721125 1.2629729145911100287020531265758788 0.0967305229540782382557592442847787 1.1017343458921896718903523556890114 GT 1 -433342008606.5171644355777117196334656469164379 0.0004928664787255246250660066893152 0.0721764777212650618413898659593725 1.0749137342387955562962097182777346 GT 1 -20725984373121987820201652022777954509.9513449586310750007212913809472994 0.3432276291935835279573362100451383 0.0160395664341949835457283698892170 1.0161695925291675005125222034120889 GT 1 -3599067161742815173363.7306740425720258714160355523269771 1.0999136478716506285843107418875138 0.0111456773815426418056039749861156 1.0112082558645459944864805367507393 GT 1 -50644436510086946.8722851286546084250795642519658368 2.6327232793620094535892292669855173 0.0088386879920671813569631824294417 1.0088779808979462995885051482507238 GT 1 -1953727519.6367695133399734636501117244146845 0.7811791115105734753487409087170558 0.0991321146639824163947657861685207 1.1043966632727911129287164093006686 GT 1 -76399967643343499883860658650099504.5971033572894155642978436881078694 0.2768063520018007960220228324507947 0.0998037247344892556944718597353514 1.1051424558062586847520967942118407 GT 1 -14097816253612681725553001157199922815.4021783867457997476863780909894186 4.2124685190370773971879636487624556 0.0174790655991463107021239488965762 1.0176336281874949949753337061278703 LT 1 -6336491918294641750823.2680896213520734879496907677376450 0.4715422671507554153157829989237331 0.0496101320240489527191476904668947 1.0508829912302981070510055168865621 GT 1 -2350465121326248608792796.0033453242969175066527004352889365 0.6247179946261515121774323627975616 0.0035940561495238535793614533147057 1.0036005302862556996076220874226393 GT 1 -251923966843234205.1522108879065888938562352434744819 3.5737356555416628714922288779200795 0.0420554475145570071981584854565870 1.0429653810939757254628899029233145 LT 1 -9067530554.3851224223615076502888599740239115 2.0399624966916706698683234837285616 0.0046934899305346903536665039153067 1.0047045389402318805571567094211309 GT 1 -163755771512281527112.6070398297788423944610693052063951 0.4415092402138464836400772946212101 0.0903225073645808698008164087594556 1.0946651459844151672792990901721448 GT 1 -121524428111476387746977.9284757149604959131821628331197989 0.9771956262638281864908000502013238 0.0113099927696833623766761806871394 1.0113744371086665076614325886295657 GT 1 -2416.5767214351764421643209558339623573 3.4537623281191059384808058843297076 0.0824204902741946323029807363174131 1.0860160437063995281749515506782267 LT 1 -250231.7253017365049222478469414931952968 0.2723597822567087541792579023278769 0.0081673422264393590708603161712020 1.0082008776878431919851530104675160 GT 1 -39217556839357118064926905.7064556789870393352925931816484799 0.4319286033369128427593927738509056 0.0884107899182397876854394982237220 1.0925658179226924729187704696739196 GT 1 -748654520631.2961802493640652122181400525143652 0.7756796503979992539912592171239550 0.0431591906191084404458995444398803 1.0441182447504263543301020319159809 GT 1 -694756606.3056059705000145737552129627032796 0.4755971526295351545457388262080357 0.0412838800173155751237690090885803 1.0421602646223927021200202930874589 GT 1 -145959305928815631712373808.5793426425729932478202755884499820 0.2572702604077654663597111740628011 0.0290979613240162794164371153516356 1.0295297028286731920659286513982546 GT 1 -4314793.7542519271008584061534241644800457 0.8091317280900023832263793645638362 0.0690940231637505572353170755896321 1.0715969983880391655584497107400647 GT 1 -5843760608745903845.9323162471620933866065785534012341 0.1890808244570076499703600380749894 0.0266505002089416803657726254687325 1.0270120631514784568123294898701212 GT 1 -391001683188534999444722173.3799978103390303796247049440388950 0.1278632642097109391985203232343046 0.0516159351917216845983127429547559 1.0529957271164836419320430466292119 GT 1 -46661226955922221114178459413401.8244001747782797545444605756954358 1.2846803871383694493008680489291043 0.0339427727904466822040186847868253 1.0345322051065654860965386498904597 GT 1 -9192574798944765455733495671933054.3573300935601435968317307250664785 1.7029138473509642805706356451502469 0.0970585225964477164450755541860043 1.1020975367422583688430735473966534 GT 1 -602029568584423741892201675270.4800451880555735618991389756582724 0.4358888751653141216260358074637598 0.0630322454129723061147904553800853 1.0651064107968879345343867148096747 GT 1 -439675239475184906421306506162.9458802715704580018929737595631865 0.7604507215577891403413470096917551 0.0655679133260112539909340266345047 1.0678163281634357369523665144803537 GT 1 -51129585735223905963063.9336985090266714713004014051051313 1.2348059306883548710407568693218999 0.0040320955166900299972160075343189 1.0040402463311038323936914603374776 GT 1 -166716057047199262023957344288.9304926786101621697363489049261925 0.0300452810824109516469840726102216 0.0228448751865568259365403054172552 1.0231098628660222896126704677147486 GT 1 -9220280955396958.7230000156181331949508211761596848 0.3002761644138829825227559379200167 0.0349520316022271683623307282866564 1.0355774706943414240800564456794090 GT 1 -679538404419710291105147.1263745534072550188873935215127679 0.4218807972965506260787440926119358 0.0128327431588868149040263900577407 1.0129157940865916300266427338795457 GT 1 -265683954628870158.1060062116397264608553650105903982 2.0127194224750531504622379513335828 0.0155041438699098434894436878215472 1.0156255900229475499726129892405260 GT 1 -1109900222323728477323198.0227606905317829196770986892687634 1.0807713522637120810875137219784893 0.0412732992307498327869612199544584 1.0421492282707984465735045415242963 GT 1 -1739670444848565721573229347374246621.7952448754535543915133904816767730 0.3295689245996219835376056588630322 0.0519266615637875100609105361124642 1.0533234184997066505845515926517771 GT 1 -20604730102688265165686236460636602519771.7175155714412147404706624528373803 0.0494349355378661608355918036480842 0.0576652330368641007404354641168821 1.0593946885961554824021616612056058 GT 1 -268256679493433619473731416.5383794481480733747414671845414116 0.8729204054242366679991301785231676 0.0600601189750812177139253366984838 1.0619393621198518256381642251803719 GT 1 -12382653754341966746807811040278710.8000347016799350694936470302681793 0.2329517917047918927354732947978012 0.0478808455204913321032373396771355 1.0490650897545234759637833300434952 GT 1 -86046588377902910111428758345315.3954485539306175787567072618829763 0.7428318682905249157512497436542947 0.0009988946099580643427704919204912 1.0009993938376572262120363077559679 GT 1 -1912272.8088193084306518247877914146818225 1.2833190215236979791297413997469658 0.0332586122479482332260181552240944 1.0338242569884563416484422635798330 GT 1 -21514507069560301865236960286492109505004.0594126022135654164592647207428707 0.6172919186962845796134770056761598 0.0850665364749469471398705560285163 1.0889039338096167476483257624488979 GT 1 -241.9226616180336434139534065426927443 1.9553438993880635879618162582076369 0.0207095095531336880588191769093619 1.0209269588642982305355094514053348 GT 1 -436932003403831399597435503970346403614430.6000382405175416344302860051372948 0.0844558459544512381664390368518551 0.0124757383475561424556277519279218 1.0125542137466987437512753502441043 GT 1 -7279123926755330060170333818600.5271592359017091451377975016471701 0.3900502470391433664058457243877774 0.0589503420046751825719996421082237 1.0607593692744331907943309297522547 GT 1 -155724043110318243500.7164744332271882475425277580674230 0.1327728865725523429369507000947752 0.0761999016637214035998753607713526 1.0792595745380531670649977169888886 GT 1 -4919104561383510308141819117.8929014241119299537899153130580174 1.7714360594865767738511811778194527 0.0277494946457883127133163382801513 1.0281417861683628205705890407581323 GT 1 -95709031870617551700768640826875.5691025459121284198832370713195859 1.0009471652372233050901248127359239 0.0006940474928936764894503752163884 1.0006942884553542510875384753035189 GT 1 -524507858651553713871465783284353855021.0826029548228103744976320734990826 3.6921069511385108564127640161661715 0.0829929979694619064809823262958271 1.0866401709527112760674948642219460 LT 1 -196740579.7122380755821747639419809189104274 0.0863825045108901037437768686019321 0.0641732073534295505369344020699620 1.0663248702197891239645627633097666 GT 1 -6782732243599731.5824420750998192482279621360231552 0.5128005069598555999665574359804399 0.0251430111753633329432347430742924 1.0254644968711563709513178420122326 GT 1 -20642156654813665305283370295585642230157521.2296103012949028871398710731999188 0.7424861333191237466782463716521436 0.0919441998112497011043598321283829 1.0964494483166923599246701836431844 GT 1 -21434243466164971792812487647819288543.5470084102693973580665203361224399 0.1045073529834557004350406165944316 0.0197067758658461131258557251622953 1.0199035437712389307581124059789810 GT 1 -283696.7029670422011439268992140334071857 0.2415548774635405537672588732540240 0.0070070911438321764013606800682002 1.0070317560942169202357702865718403 GT 1 -405809556468409219256256.7450163837258952506633852995075580 0.1192232258161974157206747752965578 0.0372814375844146277429721766498589 1.0379941607640924072845479516581346 GT 1 -2064793390720778684423561572089.2426152446366936649953926196906102 1.0750224665932446967182150610815523 0.0488636377450010750867913431120668 1.0500978384351077166935583573097536 GT 1 -68931253667871.7005359104495591053548550245105319 1.5584199883347911091145850093689840 0.0863862786322355603079771074563119 1.0903474211829254434027828510431096 GT 1 -174729255376875751042559.5141784346785956875203764794120040 3.1453230022305307289964221341684509 0.0319021411676865698235036592996586 1.0324221029801628757093780475165201 GT 1 -1370082949921845673671399226905.1195759300169724409092357000405598 1.4331463856987782281964407151084029 0.0635842076954247631089455849464278 1.0656956785945475065516760929256961 GT 1 -14306388755437119520.3819514969292573179572268104683914 0.2984930107112100192293810648016562 0.0853715871854759767951897312901881 1.0892374024037111808727545984816392 GT 1 -9639.9528124115711242432993841647855269 0.2396819159787997881035987252922611 0.0328177517907554371140817310661687 1.0333683336452263808955876859193470 GT 1 -138462659801376697653.8256122002563276760759465555571023 2.1850430198962095576420967328516671 0.0057412431432921942501051984749425 1.0057577874332910049886352097489931 GT 1 -230183814799414328872801764614601.3755591113513626586754389715457607 2.5296032073896712860598313632998970 0.0905873591735443276956755001479883 1.0994646905209567315734925229970264 LT 2 -130937113480949.6961577498466077743828482281596657 0.2951783207226271013481324381607503 0.0881860500675830114706519758723795 1.0923193119861852020196335558277863 GT 1 -48069944.2808905754881676873090658526430426 0.8628400663092009888654236075832765 0.0151262641216343511026087537737078 1.0152418329522114003937042932000453 GT 1 -409054419652920.8115800974365461550448592359419961 0.0222958293776801438437619330725069 0.0873621703209942298156053649951371 1.0914161587082547684397263305778019 GT 1 -3342935259503475952.4058914549780233612272177487662466 0.2421010305809146936427779979385529 0.0947287013053666074484040634902089 1.0995206026433958114369092386211218 GT 1 -762966279215127334139242333132919.7316183802848888524696838826640179 2.4243877381587613594185543325796212 0.0671630925693637305409698361863241 1.0695248978836465033986946994255250 GT 1 -9377384275155791975469305231674042072228108.2029615132248476087265821924063774 4.3422578298650276782599122238617997 0.0513490152935235002232865862979137 1.0527143196643357098193889115259209 LT 1 -155777475908112969305.7710458706635773291814695831938410 0.1799479213576674105791274301672644 0.0845396719932591669017749577345996 1.0883282494965732120930737839411202 GT 1 -35986810193.7201697914000175227114121313037003 2.1327516643764885423295913367101140 0.0703654201560754511567395154462117 1.0729636949490566044366228716688258 GT 1 -4276679909008814586821077860966247476112.1858152358853864116696526807141906 1.1964207488903377605436967978506226 0.0016649205552399865549064249806019 1.0016663080757557669439531994027719 GT 1 -38536113997654675512288348800.8248738888909816024931195482754900 0.0838394255979824341472517915580117 0.0088427734838722866234290100755843 1.0088821028306485512786227190912366 GT 1 -9407166746.4214317596991167143949974826772323 0.7132494134987248756759769509978104 0.0640181957783813245705670233291321 1.0661592426276710558850927876981428 GT 1 -93572537482317913218275577405292205591324.1257083648836917225981425510612527 3.0541905518403129353294325712286443 0.0254843724644910862719681434037619 1.0258147236977282848236848692744163 GT 1 -176896161828758242.0328819088179994647444018959856958 1.3989637775402200450321071434823830 0.0926478839950948929835295066519808 1.0972246836925112057322691686516990 GT 1 -120423631.4868566274277265160263772718027391 1.9193973252097914762435425322944728 0.0182287879391923885467780447294511 1.0183969793802411019326774044128388 GT 1 -301393670329556239485568152724310961250928.4034975477213113143240007529468048 0.1243044093750780139195316166803127 0.0867007700323383348173645313806827 1.0906917084167308364615061304970026 GT 1 -4808349121994152801207579636746.0359300213277818331832633392893920 0.3400910696407539376961152753015946 0.0689493494077807648969243844490074 1.0714415986820205085619346716862667 GT 1 -10449564046300.6043494153251539939174958203885170 0.3665580058904613402198450436832608 0.0025672652677403983764829505307995 1.0025705663442542995779151446969533 GT 1 -1510455173537648557816835499924280403077.9533979571930648810083638122576595 1.2915836452914102998111816848116351 0.0694514620882805097721207393407091 1.0719810410021253144895096611450747 GT 1 -471323778.1092665220626819466635815620663750 0.6294774272938014335269557389567632 0.0137322027889946855670601371998182 1.0138273616505154775005250991445251 GT 1 -4.0151885719439912450290911547469330 0.3189871167838933114272200837823784 0.0071192354713616643131779559143161 1.0071446981500502633394567444513277 GT 1 -64821.8261168560527853848606081430437193 0.0049130448384153611183218518293882 0.0036859181540190632003930834353208 1.0036927278889050489565515727250878 GT 1 -2326436633210536492.8672111665085482158243953603666614 0.5040807153118056254056496303945167 0.0205407132629153793309784435579414 1.0207546078140494103309057245146998 GT 1 -58862389742973566842658527778794.9599530474129455905412141934419219 0.8869061799919859440962896336642779 0.0182219486309529771374283266353527 1.0183900131091453694839348823216982 GT 1 -20618410.9155720986776209413717265332335915 2.6856124362203488298289903066304797 0.0294614277480159707267222917861698 1.0299041324416113768956256988328530 GT 1 -584.2789720475336456751489026680478822 0.6221359177080477410272945551721018 0.0794994572591858069089363999712375 1.0828376886939537838997617523366814 GT 1 -415954276683570814624.3779422370777964085667105759135970 0.4747112407517745953952327588874999 0.0975629480085157902293067363560351 1.1026563396935298923615084342303430 GT 1 -45739.3013700221172186159350263128374924 0.2345172941277398371290780251208725 0.0872201924209653181726988700896024 1.0912606020866714759352356049931255 GT 1 -4180350333031287265567249418.0764447422276465140590113466731449 0.1196270198837703149908295783674760 0.0494271511478163397364645802064178 1.0506904773264977658720512557732322 GT 1 -47.5472590998671127789926606732219999 1.0920957932885845984255685176692830 0.0756392911877439654629826374131733 1.0786529060154838336047627602495319 GT 1 -991892984342853462481412827634316810303.0411025761494089568745351905356156 1.2450725660735937963885599419766060 0.0696300321670968464033717294266100 1.0721729570681036813114319189165504 GT 1 -36933202580096893211741783051279597144981.6330629516609906954845578990653719 2.5143868354536113539594284546067224 0.0413911479578273902191898684628715 1.0422721579552276136337134070021487 GT 1 -699367253099199981225746.7704698663775451969103777965382601 1.4520977659175591622807625317014073 0.0713040688505844123724306721469177 1.0739739014422307514868999394184656 GT 1 -1806447.6686733026870985339925975138203904 0.4348460929418257016170875308095999 0.0881729724371222678313771392508302 1.0923049696560639196285184546984913 GT 1 -41227313988696864311956335913315563526.8105207377534085091240441972129583 0.3746251908864725639333518706498339 0.0025972884652904993112612201044552 1.0026006672707327734741497089906315 GT 1 -2442993800733309826991.7670064189740796619725245951191519 1.9777994577030453354742973669176037 0.0411695644779323616086895214253777 1.0420410335777117048793700005577710 GT 1 -17081886514326487462526205205740345312761007.0847587129582085847367673346388209 2.8619115612835470959499037557260241 0.0554552472323282982632502549038506 1.0586796880378652101482023263327107 GT 2 -1446276196286482525861596740013492578.0128191816214766496509310122347451 0.6766821245363008321528932723546553 0.0094176873955787716568389659553023 1.0094623142221920860634931794714113 GT 1 -3648465305226575515.7185350157306095276573334824018196 0.6223583605066480268420805381807079 0.0162023889277844968540883425882963 1.0163350828895345118003734021286281 GT 1 -88823378526717222370987498153140112930.8191733012447559294606573114930771 0.5421682681372482425373809341375198 0.0468334723571412029144855733347216 1.0479656501495546628990787344018735 GT 1 -46037527336729860284775.6693396746885838076354864262434147 3.4987156824681371485470806504357399 0.0759687794944104748907346124928228 1.0790094194853062097161386553135686 LT 1 -5616856.0618977510895862962809829952651016 2.2000493090280165731104254905162755 0.0478746602476125048260872322052205 1.0490585934533419998460130235894464 GT 1 -150099321922732062442310382757777806375823.2255850850813874914815142201242274 2.6528967415574268018202072215658771 0.0849485395555658211201472231070742 1.0887749743651982614643380981880688 LT 1 -1078180082097589.4864801934969347170713033104935716 0.6434861776190476121892244401542123 0.0922504256213709791296385860888349 1.0967867375629006556074903262614076 GT 1 -574704168873.7480695995652550630713889230822796 0.7624889120385009187101152297475770 0.0547756680386737797703196463230114 1.0563329913416791350552332926430919 GT 1 -299751673149365422889537.2118719778263459716929104425643737 1.3726089931934637614951836980593840 0.0034490191231190810804739815718870 1.0034549807012533434043464067483624 GT 1 -5741056637431328002110384554672583318.2677929175052179459650512897293937 1.8131882143873687562338941429145379 0.0181382946205036174006729027706406 1.0183048100975313815442489306224318 GT 1 -1143223991268076331049692356270903994.8263692549932373740493658025510366 0.0531609972469008488419673954811110 0.0423823054950004748323193554126917 1.0433066469381206689579298775653293 GT 1 -2846151739823677546755810443305949108316.0388040685207807277609536108840483 0.2908713729545181347048523584268188 0.0261422585208752303182274956590607 1.0264900419830726750026751884037016 GT 1 -465203025472669416424225.0507524637587493058877578569209375 0.0998057414171786934003016283432360 0.0084887363763705797738556902009761 1.0085249709016091482164748050177908 GT 1 -56641528817855464520984754046834127960814.3814088473262591854064957390239898 0.9616577823270333926519522818230405 0.0872776351392311765594287680764451 1.0913235356938202910193436266682940 GT 1 -2937823594212596755866620585777199454.1445081369168687855321187321620513 1.3717084383155992843684208454713630 0.0573223063242417733884283741572873 1.0590308430263609421905099475139490 GT 1 -348023055764712385838144597119975550.9593288079614573062712892444915566 2.4705662438256618320160572317125896 0.0682186498874107934954436375106226 1.0706570947035951362717301324219650 GT 1 -18105925617578336335060.7116389602244889510287726719650916 0.5842632862924789883523446688167268 0.0376263256664578875568423610499531 1.0383524688795679854472183988747917 GT 1 -900287856184967.0971938773370177690879420762029229 0.4024298228198463091673858983047150 0.0357193938808785539123128733800887 1.0363729415428540299042138047074472 GT 1 -5383040260691301659729052826891125368.3578425032455835297643686006179882 0.9244478719452890727075938806512738 0.0524089102004345076604941535188380 1.0538322096547942140888963834623085 GT 1 -3436025518073692170978497615280681160530.9232880106664478017632537336431750 0.3451650260766411814036186890989238 0.0113667604650857503844600846819835 1.0114318558392770466083952554641461 GT 1 -5044120855311586869829778030153715.8531148907493346380975484344449297 0.1863663616900871738788988477665838 0.0796921956565020868719643268678547 1.0830470949565078141733668637395460 GT 1 -112971.0536666086765952319174361755533735 1.0338465143706658075688815357115818 0.0004891778907232474953579688511042 1.0004892975772612307319219293309708 GT 1 -293149.7565335658246863879067731398192668 0.0318825735537648873102370052969898 0.0252718741961486721660030419377547 1.0255966921982606800789698385903804 GT 1 -1654786365128.6229394911067230353811573390960562 1.0176629811696040899165858413489515 0.0660497707264511507457428806853310 1.0683321298888216498199833940753706 GT 1 -1273.3327101022141810814932110529787227 3.7623843650994556067452085561023391 0.0885694355278238540349452250436460 1.0927398649760475181345770268023627 LT 1 -4670774429615918207013.6338549354084534823822330742454921 0.5357416033282826094125317580059780 0.0356458868883053753105491377892266 1.0362967145706069598158299916890638 GT 1 -156977860768854055360107364172845.0436425126505185522320753313848805 0.3647299862040211925763896823396048 0.0883717234847114151715697711081743 1.0925229635360693312175748630071312 GT 1 -11298.3083958478785428845500576419589464 0.2378642120597050662435448252618461 0.0369367311960260910561902417701295 1.0376361696495416615577317279881755 GT 1 -7021423659967299912915361928370977580467.7199898482660698514291454421079533 1.0430188381678697043211652619002486 0.0312218960361933576736143314810624 1.0317196881920936976718844437482410 GT 1 -41687503620467204002084308786829799847917.7778933917398536629402136673025452 2.5904410509106299999210122671903832 0.0160180133252996389565744851675691 1.0161476883223426155606079040794533 GT 1 -104501294773319455879948.5863052718653588133339559272174781 0.2601295769826371886606300544127296 0.0254757782093323831872249554680683 1.0258059047347278823457736394487704 GT 1 -677003247794490450351.8181450329866586654887950857709124 0.1214454248253443526174404537050648 0.0009518520887912030961880832569473 1.0009523053876624843655707688311925 GT 1 -98577024914.6358402655449462785999284724034986 2.3161772339168844092479851491099613 0.0085742073890759055229390067652888 1.0086111773825355378708196422563118 GT 1 -730806906429158341445593541.6545623927423672089158699201928321 1.2969694132303962044312317994623158 0.0117105808756870947047160743887660 1.0117796897948057395298965965278668 GT 1 -228702445481065416402629128278296944.0208466438965264425389253049339441 1.1499307234171698892973217303448195 0.0728720307130631709978019211869751 1.0756636762481254413303292289784496 GT 1 -9508477642022647723186151524029728282.1794483235947024935778623200946842 0.2749070726190900366704644365889681 0.0015840402200340123789523364673433 1.0015852961382018375777680003472686 GT 1 -87736560344884426741585768710992804.7064946367185308090580483771061359 0.6377195774287532727295000870491068 0.0593825835062770112813161796662263 1.0612187932767604709851628605646485 GT 1 -1018195936847815269.6799154284453772068167117544248964 0.0978253536006702025784419370854636 0.0727890795430672627666665572274783 1.0755742091388391805002015598224030 GT 1 -13414833390826.8805236263073286770844872851505158 0.8222884692150786000338913392954817 0.0963371294021801591183260781583509 1.1012989189005520744325074251627571 GT 1 -9415198.9464674861452601156047795311674867 0.3420123765701689705541158051035306 0.0543607933549719923515614019184243 1.0558941710017776771421953215750986 GT 1 -519452739143141090874952412524240.0597848415390029716817553982898170 0.1204147473372782246561379279863669 0.0768653856764363524684454701076587 1.0799802107759809277098112285287564 GT 1 -154657134135472377471306946839262.9698674152714006984957045987002598 1.4239782789640753445869199586116445 0.0871474286367435253689653835632046 1.0911808885746855858183523195063385 GT 1 -24027329218992554898452068915184167622984.0261973389477259507564588499341401 0.3976308798906939082429488190605313 0.0742950664297799396738899901110253 1.0771997413669241170683912341026658 GT 1 -26588878043888286.6585024499579228933287548485060921 0.9168866817962536882486938896862651 0.0198358236606367642227949606519588 1.0200351944716783982998678136187867 GT 1 -1054070974.5805432412797203746448586155961041 1.6306582702487616966176563171743144 0.0140133816836132449910682882224795 1.0141124961588323440563537222990027 GT 1 -261710752484396470586190169411.4609628636605920225669231088488111 0.0158937209786787327773729065106018 0.0011341245274956907945683138860390 1.0011347681333831248723292235409823 GT 1 -2974619061993.9491787136663291587055731207496331 0.0626487990651453043231896110468344 0.0306732289166340466211636777036667 1.0311534988787283339725362139891190 GT 1 -5567961648763763759172.5359564024207693026695886605393169 1.8749481752269223766683153392565422 0.0612125626554532122769222925559653 1.0631661967047873935110079242600921 GT 1 -2720187058702588966712.4155786012497533010246749241815488 1.0916202644617757132781230551865206 0.0283188812598875053616764994290184 1.0287275954872966841012703156623861 GT 1 -627982.0363333038821814736980325597394244 0.7404245582607997394030872504263613 0.0350806975326213666402911053699517 1.0357108055260011768827150352196974 GT 1 -20712562799972899319435584893964413877242.2312848419679333101176980039764563 1.9018934508432581312789386894615103 0.0414483324598749362225167821850287 1.0423318133690340318593986462472666 GT 1 -13089521851928260426333448167509410023000.7695589362639377682678060798448172 0.8363571784574309358069258219761183 0.0812472387340831314905114325927007 1.0847382230001056509591871459633507 GT 1 -1096553126374663652158720739234337541700.2477388477228591347681667808068327 0.0451506235703078345713907893908959 0.0489028324608965557154048045200114 1.0501390475877034757945404757050653 GT 1 -14865431250629065533663.3439120811355664775655823750887848 0.6752572179182144323420696907724067 0.0353588833809019802013842387473408 1.0359991466916431375434803487389794 GT 1 -3018920892075268628214320341954814.9166432857316269899627018783533381 1.1375452102399620537495538345019541 0.0309298955841128397744812498597531 1.0314183225298835933075556296531391 GT 1 -7.5794965770652751990445556831275413 0.0299993981311604091854804575837267 0.0612168289935249484593625774396120 1.0631707412348868398807170349043979 GT 1 -10061677656635428567016121.0808991567250607302834035100999390 1.7142875561346483306270424813069908 0.0025434471495833038359959476385238 1.0025466872063928815868565469390669 GT 1 -4.3127479463673081734274174658466605 1.5583807833158126750750937223898014 0.0845693879259037541990059524397228 1.0883607101221590097631327079611281 GT 1 -828106305402.8446039137897332326416390862755811 1.5196249265323125902078019897815557 0.0482504722748648005193187499045637 1.0494533799370054706267796230282929 GT 1 -64409652224486773.2018035873670572492572774339531467 0.2032348464450177245426784194925812 0.0286508249530429673205584270472466 1.0290692717827679393016881675026883 GT 1 -166478910241.6674188636902676127800121118586606 1.8232915325629048857275818794737078 0.0370432472850510102172469174987192 1.0377467771073494057367151927729583 GT 1 -92623749710326521.1027963280781533557043369649806440 2.9564887504056201913976247034594278 0.0022704509189281252139580528664907 1.0022730323006228846376077047569104 GT 1 -2455638548543501478405311.7406743432149595642998540443871353 0.0932156219316512464730335114085973 0.0967806264487985016697662574971597 1.1017898164750460779370247058767677 GT 1 -32338039338899254484396245350056344740.5473042900960260193024753076392394 0.3307122173423337984684773064574061 0.0261474223110424546275128416480815 1.0264953444041939452302267909587836 GT 1 -2210427258429670265998.2709553632845225650226635019299872 0.6577398171322154427143896313673528 0.0099566941130811269130381239081940 1.0100065934900924952095774243073641 GT 1 -37018654847.1602604024844673768226429273431753 1.1488930526941772831037380171959920 0.0799796277179225575384111414046453 1.0833594653993542579027439795359872 GT 1 -4030568808.9655634058696363744655300576325197 0.5073850461657337081962137255721534 0.0554805650096357103289009807184911 1.0570790152375976990110015087478408 GT 1 -28128086037901802868253670116476340.3340311187476973935017159192117800 3.0916852370761764195268207572014109 0.0607441493113162418396870265592483 1.0626673654405298404839254042923810 LT 1 -602148376267457.7108495256673172689682821554526056 0.1632640429493745491359191752921276 0.0550582083240652072532790389487069 1.0566319494956345054796699970609282 GT 1 -897182358559270565373332848189445183684.4191237544674915703531702026494958 0.9263102110425301097009579801360425 0.0269412115768734114997286930708210 1.0273107788647784284494683841648947 GT 1 -2992446036208505066598454904494737112655.6939831250388192033938550242069229 0.9845987811264850633862295485349335 0.0645292781321251932862613792702216 1.0667054305317985133824055701025260 GT 1 -3801793252947631572133892978946838934.9506665434746352983434314092386670 1.4485819167497874965450391896990187 0.0838719785927994098266083159169572 1.0875991627121432804639236956191518 GT 1 -57571083489349552214988782870347436493258.7964802228772758035627490072352413 0.3703793481284069027572537187458639 0.0356950633566091724081779595662800 1.0363477100727105576365668430727353 GT 1 -38016958449119282.6211124051910350013496494857902188 0.5819536012738308120459296472001606 0.0507511687890790537351335714264393 1.0520843111473373876099807019169910 GT 1 -9931076267383066415.0329542222052276850086965213844314 0.7902388337789987857703263244262631 0.0782322160362463574742941832307662 1.0814619483585838265477627710323902 GT 1 -23976700828.5947910208257446914891346036206032 0.2322571759175570587777356923192841 0.0819181657809790693297216466410940 1.0854687483053048985316094376997210 GT 1 -482290829843272288116742675420186477371.6307140312500419453293735355937665 5.1568379648401247114969345573072891 0.0717591150023287366573024117623354 1.0744640055285906439604802640309959 LT 1 -2746270874350032.6542206180716981338826464077710168 0.8025089438938890317964814771393578 0.0158018508137167555572294675196779 1.0159280310780554063844360176034762 GT 1 -11731074271803055518441097892.5416251065634735634080763489609514 0.5173197456077309199160232496898127 0.0331682673747074577159742086056288 1.0337308083649164259016718141354029 GT 1 -641296568758189251705579705737340349.0581878163047113585201602643219936 0.1699825497539483381577456677801833 0.0822198445157986537479214128814961 1.0857973990854038384405105751916720 GT 1 -69680270.9715288676516952589883435318363519 2.0757078941726192547022613772339560 0.0483794384160872721931323742088316 1.0495888934056096225830462055597978 GT 1 -3117548297492915924190617898858.0366448463373662494011935979015989 0.4024674530509124242080473499142473 0.0450757162888921176085258294550801 1.0461232257166933305570481818424453 GT 1 -2412954046983146341083766904888938.2906357183362088887052381902391413 0.6947508565403588117923173047661444 0.0709248628952566363212276745311608 1.0735656638858663848014576096923039 GT 1 -3429867976053639144970183817465209476962.3781109550061172711750778354641518 5.1839085939845553011728936433812899 0.0938501715012447444710122289193870 1.0985506129929320988071445367635646 LT 1 -8766735870827923.0107507510244933422841374446271642 0.1706920284197884308334834561519439 0.0841428348752508694482048408031666 1.0878948597367876459986537448171012 GT 1 -3108798824336979707115488128666626094903412.5018064108158380978992724708624238 1.0250716507691903799510029368298285 0.0366400294412726882221662070238703 1.0373281358270285994123069512832408 GT 1 -20962602995875.2765599959152748716320055789231914 0.3113351962706021375236961673142694 0.0359479344733219331325476984051277 1.0366099759476264965242304047654321 GT 1 -14576812215668094219.4034827980899148503730543941894682 0.5646462264202675254900701303337822 0.0508294050978131768693497370332167 1.0521667337223513805641176471165622 GT 1 -340938477669.1295616915778789019485146244729897 0.0477080057552099605916886244858090 0.0799579554857340134376849921709280 1.0833359094243050214110586244153500 GT 1 -3245663523080653979557796248097090.1653677507255650201768251316155070 0.4062730021831257120431453548395792 0.0982319697093886579885643552509517 1.1033979646208807815393992928464963 GT 1 -780514573271957771105649.4645913510767901444247768191425495 0.5915754742827623336402313557846993 0.0340256507978636449861298446983937 1.0346179987431495480486089478034113 GT 1 -13137938504271480882.6036924760312640729907291600643083 2.6071822568788620944759877895014239 0.0466624641233435056465612553550702 1.0477862555838377372960071794492175 GT 1 -355281279365235.7694036893185612504422655897157280 1.0958276236703673130905626050709160 0.0379919083650405939898648549979706 1.0387324170888534705737187925156406 GT 1 -730419997697571489050482478632849.4885344767706770787853763892568518 1.6834380529449588230646444046508894 0.0208669985328670323634697737539357 1.0210877912692638278291442225873373 GT 1 -602951266336.5185991894373914146025862596207463 0.9604417264950497088183208456582096 0.0712780317417036543913802538917132 1.0739458656309135825670814655128693 GT 1 -67572.7918564963190498711790778836988770 0.1905204190138485120294335579630659 0.0383717165692369102603616477228091 1.0391273027481754192748346743543913 GT 1 -14752429.3807740949731907872193104050919464 1.1333876818505813642676771319630507 0.0381262636908278881307975960935363 1.0388720881684948682141978356972095 GT 1 -6267813010172690260225383969111299940.3959575368944778029843184609225949 0.0327346731562935063306677099806884 0.0414078281621155581540008405226876 1.0422895585345939141837253969053422 GT 1 -807282.8058060622393636333645525238067595 0.7639622179890190135331964447116464 0.0436900601960778821412382038866653 1.0446732136579427900772346154878037 GT 1 -641629315587001.1206610146703618287839191336538586 0.4558366883088086458902307357365552 0.0656854440823903278837385582077594 1.0679421138144762070953088086489771 GT 1 -48419358069155.6013656897830641782467466343862272 0.2914013027775632313379703144399416 0.0297347173006010534228033571950149 1.0301857575565802529185940298046025 GT 1 -517158091526899225408833705602413159154179.4541974819044827916080095064378065 4.7265122275881739011714757254909453 0.0805966237812592589277776326301786 1.0840303234188612021617632909583756 LT 1 -924485.2517935085813202686245789162334072 0.0854650920359275389829796995785827 0.0905912915134007962291924123245807 1.0949606615576850913700926586946761 GT 1 -1021830985480.1879346262280235292109551092696318 0.8791737328748425053417530574375475 0.0637438914775504417499892492238916 1.0658662197154370565876328096340717 GT 1 -25900271530.1044734497864964852703289002978092 0.4374933376254896466659374751927327 0.0399745973784922158328177104812212 1.0407955338062723011383515603382135 GT 1 -47225406519878.1866147719400214671440197173735029 0.5537500236962841681604750239469847 0.0351473243853649100795995542314261 1.0357798570549141804617208586602606 GT 1 -5300832611145783494408.5792351663895461742487874022806536 0.2092307261052670533400573866065314 0.0036386727152995157439246269931963 1.0036453087874177560473913873742361 GT 1 -19323.0926445175670722379167089181783970 0.5406740985345988052981430040140673 0.0404324433736379899026947099395322 1.0412725578562116643226997888235015 GT 1 -933880743404690278183058.9604427285397968239910352263708847 1.3844630873998732366933344449672823 0.0100228502680399073247560540191644 1.0100734171987018291167110001643894 GT 1 -124318769749042905700878232569657502827677.3921094549542568662358799064642926 0.5213483867585554459816005315430226 0.0928856237972990394165289291649082 1.0974867329555707379455004324515198 GT 1 -9410844240493882524200.4630957732491154415941560252813843 1.5319282252422197495208060522887274 0.0483719472103333814713175439711570 1.0495810213854254439597462129696192 GT 1 -74160830665770580999080087.7536058091061237179237766570319228 0.3373610689338915082881941521507165 0.0667111106359444679617536975045636 1.0690404911592619798028331768929284 GT 1 -168162832216675238559389670.3367693148090462582606272088324378 0.0421374476422188161723229884932965 0.0866979780983408655654464995524927 1.0906886514452165399548807368141501 GT 1 -8085975991646214725388071344009332868.2571652441112723923942902650670629 1.9712286455761621193650383792263791 0.0778352008883175668759933879018724 1.0810313304957533363026473811837608 GT 1 -82101302971589921789693484.8907586013316093822462648390489738 0.1646911108818647710939429319992086 0.0238477637685609684472132230714446 1.0241367249872933339799355244091890 GT 1 -10314527875596644994618697405765100.5000851392033610423199184465841578 0.3352086177950201972393122358567168 0.0025886771890555004357021557184295 1.0025920336075573716953889677979663 GT 1 -121432960240798931.2563836529436785366099408911652340 2.3155848871331105510488078157715291 0.0507292970536248361011991233781500 1.0520612703146657411324369660978978 GT 1 -767219.1758638891987681907184144729272163 1.0665847003464573171104079070300644 0.0295050403320725192902209803914414 1.0299490699281067799448133765329613 GT 1 -1876.7016830321626239639760884859300313 0.5513370630474905383268961638227014 0.0429727436257288470833426661703100 1.0439234068749160086012369860150338 GT 1 -21517903884624706886584917665672670924268021.4972803382178845468622744123142984 2.4990252304771884238751958377682424 0.0466828753638323585122918525916344 1.0478076661107804010249148093832920 GT 1 -4288240023900151839563053525.1958130584199178401753231559433196 0.6932802889675197298918316555349652 0.0849671909994504325686269127321446 1.0887953575182548294039896017100969 GT 1 -50616856402.2898074977063456340995608994048197 0.5845340346759793976794867491903950 0.0400981600251365324636967710215105 1.0409242497743293158237927394949986 GT 1 -283744167814436.0360260430043038729034909084607495 0.9972456829769560597521066555804593 0.0150688180630170941701416673605851 1.0151835063046190544703066208803109 GT 1 -56598965453880090276943183907.3693319058639996207948098623145643 1.1470673192807381569525459599005155 0.0285631399964198210289632654240124 1.0289790045530259829647448230029420 GT 1 -21547566423373709644983577210668.7555888350792103026695998195901162 0.4563781265440204919242862006939350 0.0747334513141667050523733747743288 1.0776734222386026719613543585331445 GT 1 -4674493527796011203236.5370960215708308867043859462482271 1.6256168569847718207154845366875385 0.0854954484297309645342158359800042 1.0893728340501316652547706339439415 GT 1 -635582.4668429902638805147962686910859885 2.6637022392833526706593391029011837 0.0486748001631989166437500203910546 1.0498993192259051934659119904311267 GT 1 -22033915579877.7921076189023590813292094102464513 1.1484723432407000086052236856617074 0.0540635640861521421799134004325852 1.0555799046678508506909594713967369 GT 1 -3336751527808540793356755950.6776040447545310854440190594747966 3.7690830524410218608444550362176900 0.0983074130995852622659838980449574 1.1034816297583630944120195785398022 LT 1 -3740068896963219419391126585667.2516147039652484785943471331332938 0.1907108978313743211086190059100353 0.0717544054841625516897577836556593 1.0744589319466193610921447297150656 GT 1 -1313447577755276737280794703535402821997.0326183564905627241072673538946777 0.0208042142365943964225583260307208 0.0374993001008104423192807857168021 1.0382204856524729987793345491421742 GT 1 -4281541696206793362489851.2768423778915624176646835616376478 2.6728662671368231229564985175041013 0.0955983922315138941064560792010131 1.1004817608615409496623481334245130 LT 1 -765461724549332843788108459310.1963856498945071827811852396166788 4.0753330580462371403580354346986385 0.0747307395521240757021390893165556 1.0776704914527953973129866589376599 LT 1 -371841774691455697676711360833040849131085.2745038250388296394069727944915463 1.3000811893198440471658318998734751 0.0107208019030231512658729881731608 1.0107786837647825514161960677114158 GT 1 -272967721626432688637.0552291947543145377107898762606227 1.3670494793820744507334513691304871 0.0629596120740618366290486363983289 1.0650288942298046759884453672550809 GT 1 -48248.3335308644993785395476780691752022 1.9216054406738016073012278253048495 0.0680269513030026871776810932282360 1.0704513824217552485592720265955444 GT 1 -243713082115954807722123716101353.9878138542217349914814236571755797 0.0321847733656716192820480816147025 0.0440642647507108505639441016401759 1.0450645907328567154974120379526775 GT 1 -6079.1116594478781503850764157942042169 1.1293615125474875942666883959575736 0.0397881648982053275970813604827243 1.0406013572980678173008279190645120 GT 1 -24693818119.0233796109302285857675238477122549 0.4475068159898826590423356654682890 0.0964872168636081042694553176154811 1.1014650205868634066285685241815606 GT 1 -2366370471616014637298939713.9387591665464537381894126892928366 1.6183800324700967511956105846738526 0.0341508544208706521973168394832945 1.0347476209612461228832657320257624 GT 1 -5570956622.8403994347568529370679654737219429 2.9359035423463032278592034740416582 0.0877951778159457555242243245272546 1.0918907283952753435387301044291056 LT 1 -1270455496282519566174.4011160235708808569253436511994096 0.7178593308350988206927319698197484 0.0277690172521431160064960348063560 1.0281618661809264932723054962610163 GT 1 -17855682751190681816215458523845811521930799.9665023590928439675394688626939878 0.1520745268516088266652345664601164 0.0756413464136233854270545598829072 1.0786551294204215676315287107039803 GT 1 -18863311692520802405749519362100408269390.8500362092276867582065494373959700 0.9298864338810912684003606766401495 0.0490566127321661042785279126760504 1.0503007478955291750955956634481953 GT 1 -32367560920728099000606078894435.5082345906436797564259207371583656 0.7060890535569750054329392962301842 0.0323751421096502381904494558814467 1.0329108103216550400865631247786966 GT 1 -3287211773928.3748839841468280952671696414720284 1.6742949187304092510513689668333226 0.0581394230012829652758443697318035 1.0598980227923147265665588205954856 GT 1 -11158331185643.5240369900612860087449145802879053 0.2068482363148689401424738308290658 0.0409810605316753498300766454268255 1.0418444551088056288438165458383359 GT 1 -5973477453.4280266739231732989284548500411008 0.0130037952067923917669663586627959 0.0592836149366988269643323629219742 1.0611135822083285217693093073551045 GT 1 -10068115072902594770980787472913827.5015538227182196234817287276547919 2.0009586772114029092186339573604331 0.0329170284315202547826344627285529 1.0334709841399329963755823298087445 GT 1 -1.9853334899693213913106753060609144 0.7443576654651472076577730687932011 0.0765011575991158232800852477215836 1.0795857328348200330159083846204442 GT 1 -844112833840522640.3817980232762828196274346377179308 0.7191952170083148862022722686063709 0.0257357346204267451559323101315667 1.0260726924485794925199257075529887 GT 1 -17153581386138486468234905995177.1614317425236217282391066754964180 0.9550218212260128970496343588507842 0.0395728829276912188122338428809112 1.0403771798479832933513029313582914 GT 1 -12980234294043119685314465184.6146281496536871606710800954082427 0.5637340988521217396835475972823017 0.0114653081137518556375325795422717 1.0115315415029797529958728210891449 GT 1 -1987750640861714673335.6246060998236727754297383016900200 0.0355610890240156129492232962731950 0.0794097522999605710895614448029475 1.0827402410724003214912664546855746 GT 1 -8023650049721233305161055544079252334472673.1462098570746394657021239537407721 1.3042051199545100080862850081101773 0.0020513723476863858981283359708529 1.0020534792938546623760780681169173 GT 1 -168474726116483.8454597588008264700408198422697345 0.1907465631857552812097935505692166 0.0561577480934237879529174489969840 1.0577962328315740988575837101227979 GT 1 -454653506710999632254.4397457837187219745712091608615987 0.1820630193409240417532759305506228 0.0347781596167108991512997084196888 1.0353973176554288796363697392851530 GT 1 -7945814931493020949700786100592604947562.5889046837605247984463160922726920 0.3747669621583733967639845435039448 0.0856871597858172137155139384222026 1.0895824901455403185360478429222588 GT 1 -6656548245489041397.1482196127811949616090786383415625 0.2343523015750284315653080191757688 0.0234410238137640825752846284497708 1.0237201350091207005529027308129407 GT 1 -3164921762103014966.4979682754966916829602111020351962 4.1152506649744751358607166606078458 0.0263082418123658378349886072129584 1.0266604954600404102439978753763036 LT 1 -2557634293323.6813049847525978708698722458365822 1.6047249311976874109991018768766709 0.0352977004910231467040457919318396 1.0359357231565815274856736047462709 GT 1 -23.0591613468748674899921743244909460 0.1347140518673723895193050714781800 0.0703741113303393377075032634902835 1.0729730440148934079803333767759097 GT 1 -15640.7620951727122326225895637315652820 0.9724303128607392627667520465875130 0.0792409759772735628162963792365120 1.0825569229743604503222779529860869 GT 1 -28488841945542307033247905261209.1747728988255813893816454829580219 1.1258861349399767141461834555567429 0.0484217726393481063732224597970785 1.0496333808480289119279584305066216 GT 1 -137041.8342083521960240915098483931179400 0.6725797153497927143229614515727844 0.0568783049480310592195174085940125 1.0585599537185490982245714373551782 GT 1 -799.7773851408132988358826605308916766 3.8460136630503580866198299755978383 0.0584133425965224181712405942948486 1.0601888932687129216172580203031065 LT 1 -30364984390159.2155598489834904291974164535074046 0.2552620161742440457984655991939814 0.0307570369243024391312046978403437 1.0312399626321273934354640785547379 GT 1 -1482817879811766466808578477678388940.3363276342054639252289817373836434 0.2915496649572721574575493019402746 0.0854292180240877932094050189550340 1.0893004145008026489906780880317084 GT 1 -643367013090866828597341404830407.8112701849967189182741550407147107 0.0065100499419750690674866183771881 0.0740848381598608105114885257868179 1.0769726664163513086149371983206654 GT 1 -3829742233295175441.5633815347282877205777752909923888 0.9938988586646664584879554539070813 0.0047251492070851272626915281923765 1.0047363480158874373851243923934113 GT 1 -202477316326507242272591056273.9624689471882989382326675698322643 0.1397260855115701858534946649382350 0.0902136175316585077056864226180352 1.0945454515683376230535218358060695 GT 1 -412811838364159160858787002594.6801078155171818534257286167179096 1.7807046115265287423407268226941050 0.0531763997171041462300405252528207 1.0546424752874221437574717905664147 GT 1 -2001283113657933686017168.6436514587327369942463988605034461 0.1566849887295825374467031181426443 0.0864765718633619892841674096747676 1.0904462569284789973215932423436612 GT 1 -850438084322838417078000905.6746385230991698841396359368994791 0.0182535746613275446553506976759500 0.0285408303050145973874069454142208 1.0289560391538845111988781852534633 GT 1 -56530495485191984149429368.3966460246533451749393313369511801 0.7565715090469352633318080825016055 0.0797257954842603391313206464360406 1.0830836049599743907105091057419687 GT 1 -372878783400954381676440495940837.5934274871013491333650462192972706 0.5054932123547184348598183803117050 0.0805341198998054772904235762990435 1.0839623426407139034521983305657232 GT 1 -25765180906959777.7211067730270575243045261082859056 1.2197903802616331830928640639552602 0.0055388390877979968428900596917468 1.0055542353348938337483529341104270 GT 1 -127420304136831.7580867093700173938801408181178133 0.0634615927136722648994541420379534 0.0311152197993754473570549613525608 1.0316095800429440187235552112733600 GT 1 -231994.4861813120127606884191885303885619 2.8513267513935199125898772892144308 0.0789323531520976248049888700247238 1.0822217960778447148393811294049729 LT 1 -6946647110753175469310070268673.4382588678420185267703701945816690 1.1889410711842144589530459730128265 0.0545596119855010636699129991088244 1.0561044409785920642681243614441823 GT 1 -6313306946951785091669721176953287259863202.8359131510430593798967083236202021 0.3609027918624756121364461451302227 0.0358933469413514297989315197708005 1.0365533545383421637183867422402131 GT 1 -2993159744475890376696.8438365013881133226778686611497684 0.2848032521182929246523381480185924 0.0050446621346282961497124519926650 1.0050574293984420226297200292912090 GT 1 -88378581.4086495433649093657836362075214747 0.0117681637042849684032596042852373 0.0431889006722099522344183412753944 1.0441492953850466777046489363855458 GT 1 -27249.5122261257488076256420413572384754 3.3724413329736797027323340912964188 0.0738262303866624609944059458695182 1.0766934057712633215573457488656892 LT 1 -27124521631878070506376321918529454995.8759407005187099820688034006422261 2.4946170010651051808186516694721173 0.0565656984706505231873735630375296 1.0582285493172929249412900636508912 GT 1 -3297395294.1136826425690998339892838180428204 1.8139876801506712406316545439046784 0.0733493751568862750555455951388525 1.0761786724357875011703280788863394 GT 1 -370085635423925888907710845265.2397188003363153589843750463941858 0.0883245227936577086165161451260995 0.0775385728037908050868485643342999 1.0807097172790993703507706471991552 GT 1 -1785583207975970.7493436715931220629482981369117847 0.8659034667739581879364933254435758 0.0421557185185268990497767081213848 1.0430700596496533124590055211049835 GT 1 -3121152.6681558112759447046155082098668802 0.3381289201654648809816930464149744 0.0867468950224399102581569869652542 1.0907422133918458946135144434741170 GT 1 -6195365062103437.6257295913844229943052506087676502 0.7968243068233736362437995055097645 0.0371454183639639072252569113565212 1.0378528841565564756987962049274334 GT 1 -29.6949727891367818445745602861083248 1.4538800887723308463709884407676696 0.0842062144134519310944734660892937 1.0879640645579373791274340577475470 GT 1 -205325363468079915137585454.3751287363827739215629091517713455 1.1961521994972807920989409967247510 0.0244109702580034913649190137382247 1.0247138573304929729897118604043968 GT 1 -31442655222176611739551696652578343594184.0903440509095264851032792637895686 0.2271043244673608924715839415159287 0.0116366690893948428301343960997469 1.0117049049988162630645350800866502 GT 1 -544359.0387406438828520135495752658519426 1.7357374257638961988413087636886701 0.0179263197422381815644247090463657 1.0180889426299570331672593125928995 GT 1 -21634583624958907894907666.4585117935996044126696177293584717 1.5953760724087141000984891838182843 0.0989181533528721439948577191051177 1.1041591857135471758833772115678230 GT 1 -8421702.8958605354862457924769630485723882 2.8404575849389769294471071390374293 0.0386757158271818201388602601081896 1.0394434824247821241769815830363258 GT 1 -15627190313606446867822961088894786439354604.3564134679574993625594889981502531 0.4727835230098240851233926317534231 0.0121718797442964350183517860564805 1.0122465637208711146022850087338153 GT 1 -82562186046.9512398125725972556693705243254179 0.6241173797660786158670680961983930 0.0769295150309016703032829310335782 1.0800496823146693215711520763270081 GT 1 -524008435594175754.6456695617610828732049124010580275 0.9002794038617081079020563199235186 0.0008246309919395217841614576293024 1.0008249711871124684246145580037935 GT 1 -36284824554123423129962805959482922496.7407889393853639147184233200393116 0.3190191004602167130738337295375102 0.0045977472739630213880835795555871 1.0046083494237794177442201372889313 GT 1 -1.3587340531130125188366450935716411 0.7814941955708819118337261967770849 0.0724732170885144994325319247053623 1.0752336084630318253219462478531047 GT 1 -159031852274029189889278203402647127285.3820991066230785729482865254641381 0.2988304767049550325008110786857406 0.0192377073379506219181997853742301 1.0194251600306221630680312018712330 GT 1 -33757846141847434069.4481663708651972222465514863974406 2.5259583787657193699916147566618519 0.0079582394897339514890881082326570 1.0079900752947555988010691543872110 GT 1 -59.6206294782766324661528186926330377 3.6427541987647058181599623441239075 0.0376865507816948516242281477361965 1.0384150505994949931594470364240485 LT 1 -8381360.7537291513886599253423059888364829 0.5168956567187171570847887560212449 0.0051597973378136717774897999842765 1.0051731550606709616173897216269994 GT 1 -130803758624223756115110698055861741.6885110948672115964926141602039249 0.6380434379698283163911861361894663 0.0188712637380111803700296263965739 1.0190515984017667703642994138401347 GT 1 -8234946498938899407778628.7119698189955729547403839459976640 0.0326127466393652153816143565178918 0.0588940617725332216489879329126935 1.0606995652579409507375875190284340 GT 1 -27897412576490429795154066252487997.1603958613574910093981192356236807 0.1234597955682611354582069326853339 0.0653737083759251260371945611839715 1.0676085176926232990644934150317196 GT 1 -1447378500373.4554049625298587058442272579669982 0.4918232445892615560763924891210945 0.0880235220327376122609526962787797 1.0921410809429805139663858981661917 GT 1 -540392271273718411.9691903882382446756504979100142500 0.4879766595776233779797445659549281 0.0391944213783466538452634586300948 1.0399832020075185117958200556041286 GT 1 -2225252627.2319369727411525447981650374850437 1.2210689828230617599183854563594201 0.0574377814940202215393018731104131 1.0591533475088691938665247667366595 GT 1 -1598275982485438937009422390.5029491552819572589766086493090490 0.0647105374129360036927631960793264 0.0378595037452171443357392274614442 1.0385947929772170154881042727376191 GT 1 -602922032374994359733665294526.0738651718938766971341525616634499 1.5872976862720910819290056114072381 0.0426907150651932223498823823321663 1.0436287579910962447504114027184300 GT 1 -25856124342826677642622015038709135674544077.5343324785371369440568034412875189 0.5858456846314738548718489577601307 0.0073005430564904586770408109668583 1.0073273224365656457406167666093569 GT 1 -9333886974469.8715972431456756051876202303422833 1.7683941602607910051124643259741640 0.0292340336892582017669765029220435 1.0296698631085101288044001686463977 GT 1 -101676822872121802529628654513441147.4267269970328903006755228326656466 0.8491675186383708469309539168393085 0.0128570663620426501724523489306806 1.0129404337843193348844403325083362 GT 1 -145205168111.3347572459044976790892045358235306 0.3096845787520435826026835253395057 0.0083088034929584504993671641136658 1.0083435140029584793072999423585501 GT 1 -2275815777308638787970438.1480988627361789377175757273994593 1.1147724219995957106508875291496329 0.0548182667764474685089702962337815 1.0563780596881740274512426071220183 GT 1 -6248410684852962.2990159803838292112255311720422222 0.6680079376238457922245179042784975 0.0639852400576413900528429583853079 1.0661240334596904972128492282771875 GT 1 -1502317566113069761371067314813222118208.0521191884057013379842934456193549 0.8003158371372961105393091528430922 0.0939697613899321654812230806977767 1.0986825975468200799721442389174470 GT 1 -3068932964115215153132867.3410800141505157256440561603853033 1.0006949884364834328256557801944641 0.0922574124167632924178258165724474 1.0967944344238827461902997511355771 GT 1 -14980626337183038437142434165372452.0741783757244594521110850576986930 3.2052216648607816830342878491909342 0.0645041293718555560828074479020630 1.0666785473577514542757560866388637 LT 1 -7938287.0066496929699723784247372578809847 0.0615912298267815027003361887200751 0.0566815500680228686137283930763423 1.0583513545946968814756900170240778 GT 1 -1144938213892639573450.1484885503327163284818771703115679 0.0002365974311888120478045394361550 0.0863845684462226722846351696329142 1.0903455492928998775121933107976857 GT 1 -1900222993719158216931912525864458687815442.5566136687195521935754466630315624 1.8044208472959520293791728412673477 0.0370053381733430328089380778337808 1.0377074104738750136842310660723374 GT 1 -1107534873671756940136208729082678786039695.0505537045661919600395807377157006 0.1048069831063891137804838656763682 0.0342415574498961386047645709133955 1.0348415355116440106988454977325178 GT 1 -733728714345189158.4807577266663344655509880486786037 2.4028569025276755167456933773752110 0.0144421859053066258601501818904771 1.0145474893767437200881608234272454 GT 1 -20388936878922144606422125192723687800.5188759126235126190037060774438417 1.0567505730069790541384287729595902 0.0385497149998898783058423835099115 1.0393124209581989653761059233111714 GT 1 -772078310234426312390403.6635609351894446657024727789048137 1.9497875079277183327964716490272586 0.0543004765446569417915843948944685 1.0558303888675934976370005185697091 GT 1 -162026120372693543093055415.1104147932495001583147120807613262 1.7951704019765805866768319752401645 0.0789747424617739367666078497453376 1.0822678190657003899951045676975391 GT 1 -16494730898468532812172283334628303870943222.6275722307160490318997421164962314 0.0221488455724616521312239623050777 0.0647300363046893681511631106040295 1.0669200601433573294252528851424405 GT 1 -100553942711338751.8211100257355720924835191148189817 1.4377146573666803820910315099217119 0.0917685259368167319839147919551633 1.0962560054869471207066219825918750 GT 1 -28460185446701635817945814988504077131764.4542339923640265606927148138962012 2.5520641290248117388872405041808263 0.0358970987479325716006488142223150 1.0365572460309164629969674245178986 GT 1 -253854170326366429739399059751.5775699422793152570350461170314324 0.6838386439393898803346170875173161 0.0243306348103684703797749336506047 1.0246315151374865700149451291731087 GT 1 -1557523524147448188764529220342.8305880812132878072287163861187828 3.6998130743228663119706445866827165 0.0969047452670653582685441481316384 1.1019272441595908311864623958016708 LT 1 -161254949634.2609586929994813461578023168229418 1.3297607366816711365597650914198481 0.0336574299938302120990077180333923 1.0342368802994510450759153462285779 GT 1 -34267930384190743578705367.4608500844492708234182913097007960 0.1818164623931607533706856013319488 0.0984922043914591521357488407141036 1.1036865890011774401488209842326538 GT 1 -1995303681909401564050252119.2010146206945105798209909657748474 2.9311532353624014163427693318487736 0.0060303041854255571160456571885148 1.0060485598983783424526315057119470 GT 1 -85446903668878043999199534365167123042114.3427925489972927906988643426831826 0.4180983377658443305258319314964603 0.0331683887647464815448143520655730 1.0337309339193873313433507960119844 GT 1 -2427467971895207926739925.5216390630020945148435488931623220 0.0120551085694560003180061770655022 0.0361881990423824714975200832005264 1.0368592306532947128419415511279760 GT 1 -1698.6321116053269558342591135036503025 0.0626403907370106493088371932836033 0.0184317017420149876316563480673286 1.0186036820951598540519241634811435 GT 1 -1001169251.4230499875574665953779768455514760 0.3550148374703224003830741044314648 0.0151738755312776316501341550365306 1.0152901767741418782537441380796211 GT 1 -263561936804582532259194769388853048647.9755647947987614774342028142953200 0.4504481730422518311623590992310119 0.0628066591307092154752802811640421 1.0648656777202069202996424337630381 GT 1 -6777254315527024592696088527798874353.3402024307861680155768074215390113 3.2662416565876996317063811008538519 0.0984138484679271508820912369303930 1.1035996762546668285119804125642046 LT 1 -61754077861441522322775127.7706328852085874826655796854743773 1.0434531073779188961937501518569313 0.0119234799218016243674119587282135 1.0119951347614640296496121048344264 GT 1 -85400592987566470.9397683355474384417640054678030373 0.4687758775811118956643160183424419 0.0694352168558377508065851396797735 1.0719635834596324640294846276354249 GT 1 -911744652333432524513785015654169592277.6941938560779887957211693091218046 0.2127865425009873522623355297395619 0.0206166592253822934623534249931112 1.0208321494822143929667659122110789 GT 1 -25911659135455931445199515841.8975182353275090327549775809305825 0.5764675716716940691578079452368871 0.0266771356941978999617647107348985 1.0270394282959672049600666337139955 GT 1 -55597819548216255510885.8310524839878216236143691333516780 0.0476098617702424451554503798794219 0.0842787396128171122282366411615207 1.0880432615042715331266919116339099 GT 1 -1693919176214953.1996433789981143452112211158945329 0.9404357331838741709830628120031051 0.0574625111225992436781834297209964 1.0591795844537730438584033042729579 GT 1 -751747499294735924979491231262196964.3670628600723535998327449817304200 1.0467206882955221941189404334241307 0.0742703104376576898742447259556677 1.0771729988702521698762186039770191 GT 1 -193370885209400135041704667641128387.6410887336615110270365635413747354 2.8994423484688780365295079560912148 0.0680150270440613344426039263801010 1.0704385878643639387373721210769855 LT 1 -363.4115845093175567122563288566212777 1.3107254626810549947481406426403603 0.0821102676181130720084037037455303 1.0856780128073589200805473255046540 GT 1 -72548949298192659.6536453951567153541361981034261000 1.4252417226705612644896125719168564 0.0947710262472847671983683430850278 1.0995673576122516373294951316299816 GT 1 -57336798659813545184.0525594587803208194918257382503063 1.0122469158056370086242471190029010 0.0427452063655072110977115599852583 1.0436856809229935382903464476450908 GT 1 -26553467925753850.2713888467332723933626909589336202 1.4407727073106911660628674647484374 0.0249519570906086534465048236485868 1.0252685344193889935462640093730388 GT 1 -481754727085428662969789724784.7991728942803088778570151748817780 0.2767335394629217151166321022374177 0.0987241637246840014368030015561060 1.1039439236367959241700697424130474 GT 1 -339419490632602030479582846325307021864270.7815143063888342630645489501954097 0.5158689240359616238388753146516031 0.0700536294702796373929715079694881 1.0726283605946636088560617822589139 GT 1 -736964206524735859115211453489387.9166383492350549785158795177914089 2.2100506259663925374188078226700176 0.0329285669476187401178218454809752 1.0334829154687566473841449137827544 GT 1 -2815879080834.9831028995743790634351581652240508 1.4931163706383071123771590619864728 0.0791871664021814825405977174500909 1.0824984842282591494923494519535403 GT 1 -1357291386461006117959.4597971311886158702835300138797174 0.4332022931714357617441623517190362 0.0569707417152310321073402510485474 1.0586579700168845526312789945985222 GT 1 -1032511102.8086177074953013092057089762257146 0.5349128294914387154814055443860599 0.0495197217877291759123532129108279 1.0507878661250201374410085075211413 GT 1 -156512877114019222664198631647871547.4625846128642990431418747686481668 0.2682966534463713569917695707397596 0.0176785385404867064217883489333372 1.0178366703678204472119963798295637 GT 1 -16516487711790225449880915333474.9152048529369624934360827403828564 0.5874396971592982692673820480751788 0.0231594848577943788324563430519210 1.0234318796274960350149171864482037 GT 1 -8359520936793138408962097682.4709755190874640299199279094217409 3.7262410166206523663299895096512843 0.0327702302219846120091458169268998 1.0333192008148484650191947623922009 LT 1 -58471649328507635848727.0517835631626921677487870846861545 0.8172155124201921983236078666676673 0.0005277596962138541914282570015030 1.0005278990103807526695668957888293 GT 1 -441614996937073781949729261043893311.8456737421067481860484026193848616 2.3500389880176519363950573039987802 0.0620940680725946368614856859308855 1.0641056207965473262258397117820067 GT 1 -5011491438073288676739.3045440268944140816283526496702379 0.1717547959698733198283061570398191 0.0632376339045921796082686393508840 1.0653256403328551277132983592438935 GT 1 -392648168605541297775188609796550089.2270192510904755572125807917023894 2.0368334284613243165850894830472707 0.0693601170679073372565121574603139 1.0718828832665371023502094704348263 GT 1 -1795150677356852163128746589027262834.7774745042462631370153336859100710 0.3853915689899184172502542244210902 0.0963067678507784155526263460779168 1.1012653211481684103725912479678406 GT 1 -1078959968397271.1170239792519940577945780012111169 4.0571355711101315179121711965559605 0.0728216389181042342740845831056813 1.0756093251475051695415482191946166 LT 1 -1051403007165664243054323.7044718216487492762908384189371454 2.8001954588171007065416599845829849 0.0479473397891775752581635825572083 1.0491349303731066107144971809333606 GT 1 -1002419067968720269619062606281418796.3291784806530079543510156204919055 0.4979772049071807440375471558660573 0.0170164677154903221556594909026567 1.0171629114834238382606842569340424 GT 1 -5012610539678087902090.3252297783615801863494488826274324 2.3856303031719244222479947977249798 0.0693352951952547422578579765915383 1.0718562117880293881509874293309866 GT 1 -187014305260292890644234670.3439594933143698469659692459985207 6.1114381661911893889653863920679824 0.0284011906359462313282025809144685 1.0288123072932671675622264737905026 LT 1 -21604546324394409649331.1874779681530193305672257787045313 0.5246834241597653545565229842061098 0.0992751940867546989254756089026931 1.1045554998663986075504584873793797 GT 1 -3853400560994.8435862583873615558573225962950028 0.2316844833592730321505894389151670 0.0552936467980790076775046597407395 1.0568811371297136579019467654111241 GT 1 -14760593147023080149577121018776.9503482098231472206228447516345569 0.2331915965396699771405406689752231 0.0635761510868173787342701241336346 1.0656870749656728042799761956986751 GT 1 -3924833032842526195237993611106887527.3271994651194409393468014709893451 0.9259592229143787236980284864372702 0.0947788875975460771110337356224712 1.0995760420276039040960958413516343 GT 1 -1606737438370488364764630200334.9100257305397766810025879401006587 2.2447593511337224762192064090409947 0.0945104410242018698854309148431336 1.0992795323979272339347932702210948 GT 1 -31710118883391014864700605761051231328.7631215191798651666006122131527098 1.0303852570562200804272598271050632 0.0097523756246624131885735389382869 1.0098002414980479073524878760145416 GT 1 -5386938431.4444791057348324610753097634910392 0.0724864101157569356237793260150756 0.0639361088383533995628894198635492 1.0660715450460543536721847335883275 GT 1 -4405280185411576572121443.6572038354028656502357206368077528 0.1493691278178020589653593971897241 0.0404995367671863528245112395111759 1.0413424807488672591885162686691348 GT 1 -8058332865351924.6494101989623928144791735268984923 0.0026297635150295036747783743827000 0.0674243945491183317538872285069459 1.0698050525193201164200297232341762 GT 1 -9636592978885896057.1124290814839786369185974664443095 0.1944179007895700014383528761492158 0.0872909356699629941734864362791409 1.0913381081729825994809132799810943 GT 1 -271311242.1494838170935354902607430319384075 0.6619254760876799788104103108479832 0.0825558904558171910625196012792749 1.0861636169370069369516974912921599 GT 1 -2704489930.9359336269657074635473101207084847 0.5647727494800419341976717093700488 0.0731956017432382452833550806774440 1.0760127407977554432891141102439769 GT 1 -182880.0934395703540512528013899522956536 2.2169502007794229394779504576763895 0.0884797025786728199930171772694797 1.0926414169584961260795649063861861 GT 1 -691639667832298663659533809092294158.9818454889548499809732209162902866 0.1056732542830436113594240687605302 0.0605558931895993439945601802616913 1.0624669543833032187965832024066001 GT 1 -11779531161.0466542502562488620984507721914642 0.8991081474541091178256200561097059 0.0147766898560186600020918319516770 1.0148869526989870548282703446997615 GT 1 -1640700388022630387771077816377518079290554.6802829574392020851676687397125350 0.4813235604755448303380355524432471 0.0247997142460304814241227302473747 1.0251124077942306841783441121812706 GT 1 -353434710586288176027971396020156466.2803459200187177466983860010656353 0.3258016161240879707889169462150118 0.0879945307184517249724107407341707 1.0921092919065461813444744057776937 GT 1 -39547611009476550100212466260312731639.9287220684920395070652830131459845 0.6605061885507006154916314287529572 0.0726603067613236905275508876055886 1.0754353369171812151652797079693713 GT 1 -64.5549578470070906602334318571957125 0.1537784069703670216238099237991808 0.0076253038657605822023357671469708 1.0076545251374461653164026528729537 GT 1 -72334493569.9114936330368780266111820732397147 1.4624382691643108662464733537265515 0.0478242589320188545830713102462102 1.0490056592654522295004862083936854 GT 1 -108151178794577387423.2260370635718791156975022417300299 1.6744444534662670467630453097147584 0.0842353336475840672835877308118168 1.0879958617786089474357643019203748 GT 1 -4866247639613461396532226046539704618986368.7122419795057200765189367838743384 0.6244522401118304089454604043133421 0.0255143836100007649517635049138876 1.0258455201331903831264998555568374 GT 1 -44900147453051205091565209836362708.9977699972935950410603173789668642 0.9331543596623429782152573444746167 0.0830584323406421926961596587831815 1.0867115299562182469803156294510570 GT 1 -56905516170.5585746662207404779423503564658320 0.2080452331673947373241871338865728 0.0362830510379624986120567905863336 1.0369576488954719497601921602232248 GT 1 -1730831727450245225760182217839661812791.2592494392806716878252522532228697 1.4953610818924786857737701545273210 0.0021005783145295080759622825528054 1.0021027876235838901529703639894053 GT 1 -11217103088450107017964095080.0178736296041249792291528947028607 0.4619927614086464836068184911417109 0.0608881594875609784780405484726114 1.0628207008893894940961951887741864 GT 1 -7.9048858873135639481771407869548558 1.2741453590140414364471058431083121 0.0064818881121365793079132410016682 1.0065029867710686541882521014772870 GT 1 -18140431162574555.1315552794794123317207973796141993 0.2262057264364389532819311625367499 0.0647311157682735668251253694527900 1.0669212143172846927341510162377809 GT 1 -319936607049263892434043577959593122.7296265278960569843164943091541382 0.0183438867244704928615529485555940 0.0931892366777403479674701921036562 1.0978214908534144499888600494176236 GT 1 -5715862133.6160628915778900782728587011974094 0.3170454268937307535350947536047038 0.0629519287939766823466212007005940 1.0650206947448254492731835755161831 GT 1 -6405195136076166634227690417769627000727885.2884976731477442962876667962731931 0.3542148182380962544936508638946603 0.0345391438386528827214178360891126 1.0351497204923043076117703765046573 GT 1 -8352308.1698966571108416223997778645996653 1.0418924211430728660485858290675304 0.0499115650152885167312751325640883 1.0512002092625141810118112067885676 GT 1 -153286519617.8973886536839988609034113616539901 0.3451295222755626144273351123931485 0.0840901988432113071454770502181041 1.0878373895093810452067167592775313 GT 1 -8026132356787.1739124657301922966076670064927032 0.8291059197326927724814749966667321 0.0705385253828641032334213831142643 1.0731499201060338812018390520345200 GT 1 -116467900.3564081314055106090287071810483552 0.4376304377301903615668283722468053 0.0565886941596073021694718510158562 1.0582529240609053325767982691764509 GT 1 -5535124888843628560496462551.4678450864377720784781666433899516 0.5213914849316085386232051257532777 0.0058144717343818534727106723734091 1.0058314415876172443490303520957096 GT 1 -1230404.2258447022518614551250580616361260 0.4655511594078361940175665639821116 0.0546350732898984046160949005186773 1.0561842602004334164289650266441933 GT 1 -6066952.6418190660646209160414862637990917 1.1926295368729016628242455748208419 0.0954728478886380280149816829027890 1.1003429556793116886485521872994960 GT 1 -51236.6280279146765217947534415421551245 0.0501319911707553336745599746604428 0.0949255998573811471859627704663553 1.0997381285589349260021105388785275 GT 1 -22525445304411264.9777635350833923179209070443042259 0.5372777164577271312375888013294700 0.0572638957074793116927961313302639 1.0589688824988161750934716318312451 GT 1 -345360812206715464.9470736934401741283991421285516267 2.0700338344427584206174093835164422 0.0217801158443528946447703277019192 1.0220208037928950210554328331186527 GT 1 -30127793517685314508723211837.3392695513007501565182609783432991 0.5573980630718854249321202090404549 0.0026104779795862031042379242720621 1.0026138912186447719258336289833113 GT 1 -207899313414418299.4562732912211222052258493955235362 0.0586558531532488528954164142188216 0.0356304794015376870493190071122073 1.0362807376970946280871762438998792 GT 1 -146381.4864843349895341619037934351149074 0.5583123003935598732110364281838612 0.0918007792891292950337748824852120 1.0962915183775944181885349449125417 GT 1 -229180942.5756814121258912659996609966236472 0.3282109485733611360387768767615675 0.0013404620011707949955107213297273 1.0013413612240316319964992913153283 GT 1 -450432787140560296874569738754.8860867935113774540072392567694320 2.0179277974440602187453867957758589 0.0438116151848017270869201197876552 1.0448003300975472354682185288071437 GT 1 -14348.3533805637522851512005239333495656 0.0252456810370475652674776152782824 0.0168133143334636246383932268505466 1.0169562626583171746121438495557656 GT 1 -123057439324770744007710480664195441.0387358371312359339625725347611431 1.1072276817047543725256213737835757 0.0035550247495607438186085495898820 1.0035613588664630843263179420164113 GT 1 -4686315566726071532649.2772327770071454846228498825497116 1.1904872919811469178398807898415390 0.0182143694290519438438897742616029 1.0183822932659125972160882055712557 GT 1 -479522180397766239014011274080252665723921.1896063797097728056074223894911400 0.9487583080959285281434056812925026 0.0506944251746513631421031685136502 1.0520245355472659061032329943774744 GT 1 -338.3043533396414354499258002278526527 0.7360418185602846601714149079254894 0.0670689805980056507198515198940652 1.0694240150567049299008755159604893 GT 1 -1048988904112280664901733735.1458426702505728382943773838879611 1.0327016451920861444702868894389762 0.0691516083792429342849749141440016 1.0716588596265423594901338395057738 GT 1 -482510581179230133140866822.2041196354785755812535560874526258 0.7377093783087543129282327353575302 0.0557643971201938740652037470420559 1.0573795646545456673727802949860352 GT 1 -25611143468250887008.0847176582808277974521241992077490 3.0710701946561243593876055184232061 0.0556507504187904092057298593972895 1.0572592134811339488594065149283183 LT 1 -2726567146901389230567272644279.9621337335043113656513942238845575 0.1174221669047171527756888602416198 0.0757354002808749205541666400138503 1.0787568850022195493134349501822226 GT 1 -4148631873.8585911048199998303336305866001223 0.0214701645429618984281638831506289 0.0374805604224184121881989486514337 1.0382010160604325584956392608486779 GT 1 -1246323786138715355947161226543309845973.8624799170668964082943381418287851 2.2768948891240202797092617242321200 0.0517111709465925475552784501057227 1.0530961511329380528355347302696556 GT 1 -6406.1248826749562869642786422004469331 2.3400920267858520538526903937362842 0.0672336991091731062426540481862514 1.0696005908708027740981517720307806 GT 1 -4979005795336493173430369.2490197061029700839811586415953121 1.4872747008617312648631674731084638 0.0208801064084653334128397107792208 1.0211011785857147034088927557829002 GT 1 -411281918.2425069516755110294038225955906734 0.7086244392482884254954120698705063 0.0790167329143586428545167506724245 1.0823134110942177976151200706210332 GT 1 -10633854291088517529475180978405135358.9022963169444369048272993150718446 0.1405423360575144938945021156287212 0.0413001867764096519544930303710920 1.0421772737217874297409765948220510 GT 1 -15262222358689484778241463833.3856208114455290915826392180433289 0.8312720102052163283794433964360795 0.0930344907960739099390479869151869 1.0976508569286180076982118261817643 GT 1 -738403136781546029367780560667.7570926246399536443672883441863733 0.6593626750545069526507933459643192 0.0026386364922000739845101567756832 1.0026421238293632625578674811679996 GT 1 -20.2622558355785534796060693276662252 0.8927065102869560521489395308033957 0.0098931774342193948450851363864656 1.0099424400928618026326757145184256 GT 1 -261638182874379918642535546628142.0548148083663087246705907504591266 0.0090551938588719278976133732046982 0.0951254248395641158976342458922399 1.0999589358697724009352874277662839 GT 1 -9220367267180774312200.7581030060255069553264933199251163 0.6572692879171407596920339169065573 0.0892972961906251356905280402633265 1.0935387754774745606355741006513423 GT 1 -13019122805208184587279036132.7201738814011316485995665598453478 0.9952738425909906658688076409868853 0.0536609167842404056584658155268639 1.0551543352368476160113153587984437 GT 1 -20332.4033737939519837268325526655836999 0.3307128543115720999991035431042136 0.0085360417078872974051032396410087 1.0085726823717302826142492943402370 GT 1 -17050.9437473946087147327742040801329980 0.6929474807190284205125717127504900 0.0462880243911941884168627130299437 1.0473935654783046336366578955281133 GT 1 -18922892031011472.2289004839193725695377855280676083 1.3858540857102480960848696188068949 0.0848316506600870918278881717301431 1.0886472422807647232736463711524260 GT 1 -263.6827918652044938646465349855448218 3.1594509278589840819223781308744318 0.0907234748641544357913220500889648 1.0951060229963141497324338039542540 LT 1 -42267851678873561.0818864041854419964645224624365308 1.0306148701564925328501454483676914 0.0157555796172766134440378416246863 1.0158810180768492846044170058744631 GT 1 -218931473.4043122985685839470190990029763844 1.2722404233041491679414039403141749 0.0062002782379600035979769749385825 1.0062195797877535906888321229660038 GT 1 -3025482138635.2761557835931575374712684700180743 2.6592291919896341107318964231359654 0.0477231170833458950091802654522531 1.0488994430776675920838468966412487 GT 1 -2460073.8212144061334242851902054846053435 0.6748986507424661806008416994473954 0.0844763076106767257885730716044424 1.0882590360223955070983856927003037 GT 1 -158547253375220725283.0652115626403212505369469259759172 0.7929610999696426153008253763023050 0.0286016806259400895842159054762070 1.0290186791789895399901093656624785 GT 1 -101744706864103505441235160268584198.8013641294883279517596235100543192 0.3120360054175974286368010805256969 0.0842088132981431611967237064456950 1.0879669024111962260459529709787277 GT 1 -218383615469632134475247984094317533728.5901912698703221676050412892529108 2.4693959986320114578994123276941033 0.0055539918827109502187681666413258 1.0055694726422445237487552914880053 GT 1 -2511556.4497897425783877411437705898426495 0.9979570692896035975973652238682048 0.0684982524088480213974927954613333 1.0709572128379575132222838501354447 GT 1 -298274335084925607090457447733466497.8290678242674211468287032009913992 0.5706590257896611242102317465358661 0.0455493821296296427197261770575587 1.0466193732779310549011141635576720 GT 1 -91365905781713039938500887115021507.2245500568697615698833224323316036 0.1944493482161280745941571759290707 0.0378166967442341114383648118248515 1.0385503025427059608960504106354576 GT 1 -52287143187.5561120993226586212903090356376943 0.9542593395221175667937267064778208 0.0942486236635205369295893904545979 1.0989904296536148000148864755065023 GT 1 -4846362815907.8983527710056633783155781069643884 4.0062049472590206437688162638772851 0.0525262142997104290819178357291908 1.0539560092153710525212332412092230 LT 1 -19873940882904539174680855772100023.8240874168920747203511390700227881 2.4103093929275096805581943565967675 0.0463936621427293559952303530767191 1.0475043364501947044486016648883251 GT 1 -264188725519.6670636916542292446014072310086716 0.4610649590091875762682357699117038 0.0364942953402663718895315564320326 1.0371768703774868975473652066799363 GT 1 -453800122255045.0429112571820178897891870322850173 1.5612131380839419172420837905035109 0.0933653427513298636451528311745161 1.0980157134885656835071680920473345 GT 1 -110981122565329892618478273242372197377958.7463990934352615734905820872253824 0.2294230950684570406592352010129040 0.0823171562455306056631495782359272 1.0859034341619632594120260006327831 GT 1 -8316218680010264788178061862778868889177836.5863781449915241173071225738115689 0.0768433659954069229628808549956379 0.0300725085409768947373491257513278 1.0305339613518813097715083593936331 GT 1 -114502464612868166766075.8007762619159149493159200311303555 0.2228423662285998350758158648489577 0.0251563753587442512930113203254610 1.0254782058306641291817840559337899 GT 1 -5624847.0735883233917537313489259013076761 3.2930300876639597225232540856122355 0.0282828151938474529782480396680870 1.0286904789929801248994670204954309 GT 1 -2134519436248724198038672.9146088769524485254630059243384566 0.1565847313886759333323352410725119 0.0992577686036760415290916075651779 1.1045361539858264875647945471426349 GT 1 -9748245029.4384597970852334712725461876318723 2.4801911561752941773331033947527850 0.0090443927023457106919802822828545 1.0090855415206456909410093575806498 GT 1 -167886360253669099279138.3085187055006225316694701999640885 1.4604805596080004902667208920957732 0.0995761631169685867420827339396448 1.1048896966404614529390660962455078 GT 1 -317273853822849378128020552.8287226263633445000965582183509565 0.3232171350598050383218303701060549 0.0463258025774179287324403746866446 1.0474331779980584492311968492011384 GT 1 -30174418496798723268110757482731200404597.4346297841026084829969703156331991 0.3603616877516518339821827526467919 0.0746869263491562261711589160446320 1.0776231407327882555994610308932531 GT 1 -18544984032767323446984338126461666174279055.2515252977667980661768429771917155 0.4957917025285018805000516600756674 0.0539267984983625322930268864979513 1.0554353329010657245567192250360029 GT 1 -1886565985076028902413155563.8407764153580330817853565958209070 2.8952576648539149380303220335097593 0.0617235253382424932878424485167948 1.0657401461238640809434271007356621 LT 2 -2977.8131583777924261267280096169926550 2.6039427816580164296151263309309858 0.0043506107202780790383050754308652 1.0043601021661591538298658279647868 GT 1 -8590364855181788.6819037151013472752716477444337387 4.7318046877319286230872760300597579 0.0146988238288260043522931772576073 1.0148079219355797022385084649414714 LT 1 -255687584093365055212808969158920.0839230032582008620221388802842898 0.0223893021657179669989252014584068 0.0539109135079808316400246939816501 1.0554185425966791833845543897846195 GT 1 -27636576196.3004559764715240582925197924031369 0.0278467383118358472579364593883741 0.0529255620915130082698452554032860 1.0543775849691477889689283834976773 GT 1 -1586064148958.1716487875679304635603312850732495 0.3114819130889704289866627424258914 0.0303855253869663422951516117877440 1.0308567353409803483781284782742834 GT 1 -509729050210057440851570293553221211903156.4289647279319320813493325482390117 0.1167061634838129921609701528181852 0.0648595318586686659586298855486954 1.0670585276711063534271713846672688 GT 1 -42797957049784033524228578419410.5650652091606454222106108428027294 0.1356540784250406492101759143272092 0.0834466803464350730372118816349765 1.0871350359221004897417589518092974 GT 1 -3856256452678326623948963.8162965916472044111344609679746488 1.5626323606506647112785943273602299 0.0276487498772109682056180251830967 1.0280381713604632302880575856224494 GT 1 -350664534142319263666481134382042424.1083610613862346569531838646993287 1.4412923310623617475290576454762843 0.0674764454052164649422401509247038 1.0698608681641144360763466066316767 GT 1 -1090872.5139268606068478513035053245930597 1.4757980772079564023575916803487617 0.0359321507657422524057010434509255 1.0365936038252712432362468188026623 GT 1 -1683029534538.5065823317103827316156159927168453 3.9353736409247675070184325318360121 0.0822513886613741856116990815150635 1.0858317697214285060946656904396687 LT 1 -58027.5963521765158044855695865920336580 0.0682395663539777528194122482186831 0.0560626405916389614766811361976312 1.0576954715972697971792940745302833 GT 1 -367.1075096590132760060463028094769506 0.3402219760578315638672326227270878 0.0101297876868207487499577574150500 1.0101814431212399892985738992316093 GT 1 -6977500840983.3419761289075233946589460612014667 0.6944681599464939910931419638964527 0.0681847089415500203286860400920655 1.0706206694975020428437229180858893 GT 1 -22115356497579.6332213368404833195351487343137251 1.1519405684716186294240282578386702 0.0159062981717168416261782843424877 1.0160341610282904648761993328324926 GT 1 -7207685095634768644934144060807258415.8954949216315463090542707833577694 0.8532253186304276253881246181591310 0.0618882763351762050173113516055853 1.0638862286840792666257053919870048 GT 1 -12315363061875261990004761.1441819072809065939545301178143635 0.3985195275914587797154649581082119 0.0177144988322191306850749033661054 1.0178732784959809522863655824188722 GT 1 -4260431695188591786.4984504046765604631875882964847006 2.2673741188777410440112751200995822 0.0936272427190233000033213624641546 1.0983046256765868447665562147836756 GT 1 -1340701363498739558949978292.1538795273843137685486981770902585 0.3057824758150542193319522214719446 0.0960806123447961146436893447671149 1.1010150955138875541206206680813957 GT 1 -8139907345620358334853868143626.6313038774832923573293204761267862 0.8696029394807717201767574373059933 0.0055518829715800703533778900644255 1.0055673519550704629835267624064111 GT 1 -1645158016404963188726959.6139042899258108950657096398318199 0.3925545554754807784298096311986780 0.0394081320613514837879136202789914 1.0402056553934837265235417974501358 GT 1 -4923108160671021859372536.1579757642302800232623120054185593 0.9177449906349771582501565212101852 0.0197377184925669486488698684643128 1.0199351089339026410007581025851894 GT 1 -99245381069455147285.0948862468768017471034676960914355 2.7785076628971722314152206922040283 0.0631851790398758467205051462020344 1.0673997093303715777888686810062166 LT 2 -334.1044182069454176141335185743756468 1.1351366704243199890588835743986090 0.0762214898990100938618896599284250 1.0792829437578428816160885058516171 GT 1 -102200670094843.0247363786186651913715733157675437 3.6898424199660791883092007945636789 0.0259812876740811585279675279552242 1.0266712602822363951057690592301704 LT 2 -343264318024948223603720.8226961511900155732799748887582482 0.7263999545423307362480570120781722 0.0861144557209543546770413432769036 1.0900499404469322885454979377093222 GT 1 -45088491.5719893106933640116362788482660032 1.4614133854146457631554874428700467 0.0611886482035196755467646957957922 1.0631407232627792950772734505406660 GT 1 -2367379063152.3778474861934291959567202211594908 0.8317732918101025406283825035050266 0.0361398800512300918074469842710739 1.0368090986877476088909450837750229 GT 1 -4668161467125070898233.7758094704183738820742093081801665 1.1482809796072153311452082345391000 0.0251814318453554590364836479978849 1.0255039092440094484027815506290410 GT 1 -185186869351961274075158931840754805359.2458734908827521597373591260908444 0.4609171805520111547518384254846135 0.0470401331127929735370115714054603 1.0481824886100623855429952603207681 GT 1 -29.5003374547482067429382033162748746 0.0829554039551147965787466832479775 0.0606251661128533138495255049723867 1.0625406953082905318884916898431110 GT 1 -56301336464765.1793289018578329296350108338069772 1.1805357516680406576282538466122001 0.0117416058343116473342530665214459 1.0118110828715818170977382054157765 GT 1 -11201174184439437054025991850361.1644960633121478746118921063363655 0.4327519677088126318029309495067118 0.0169301712556424848358019939180475 1.0170751249954130580518836890732911 GT 1 -2714957891514415919552276651019945590738.7632638503973104716987906612555290 1.2353523496188286372791143862788633 0.0305311992327282814214373555279781 1.0310069855627068176887620703352138 GT 1 -3424775.4941492865824418534715263758814876 3.7337146614579560361428158321207002 0.0362216338093732299521850710416840 1.0368939213957190491296165839202273 LT 1 -5865253.9723100931537048603115298072736891 0.0188658870437384520373243428458909 0.0753210055519846245303481038384676 1.0783086347287810059119498650359103 GT 1 -502151287045991095267.4483970666077680414602532207492813 0.3848387024200585433263684870172928 0.0489550989884986554715552829611615 1.0501940030281823039743116304287134 GT 1 -475396178843692936563652531666584394838799.8111772509542820008080756252277122 0.9124359023465083189857050366623205 0.0818666015654390987107853900006363 1.0854125847198639831162708646167933 GT 1 -114142607461035.7514229262199692551989347158942997 0.1581264317113897740525424318166105 0.0380100719981794101315143013831098 1.0387512982238172006837173755409266 GT 1 -927304895160050990331894654024283.5748801962527726640387131501039525 2.2778560668159530639471048636612953 0.0466489504536874786157269168331036 1.0477720805688304958160552171033864 GT 1 -4939461926816982173149666.3889796108797965203580138479565110 0.5161771554878602974651514868972080 0.0903201448874544485818218740485862 1.0946625489386733322668415222891590 GT 1 -3512523249068452036037244855911459575.2412946023026075883152856137935898 0.4324273680581334831152765286938690 0.0944210783115735887639730439156348 1.0991808473248282531862176455783855 GT 1 -56903747313523787878475312830636.2898427617675021549689381492071499 0.0698157945199031147180832433722019 0.0562589569547059286459265153307104 1.0579034692768740772515792391180091 GT 1 -144067.9490422828525878534657038812813651 1.9572494076748481299861032451986714 0.0602448383621973839744425192280623 1.0621359039880999013636830130124552 GT 1 -4414055861839423770.3034609018813997030709279580741635 0.3435156912116893321567647082771232 0.0087681306640488751792378966769641 1.0088067969080979603784565209565185 GT 1 -2006653946799109.7356596970206466969862812509969777 0.5657053334902429793655025661170486 0.0308075740237320462439898521564914 1.0312921047873175887959472818258217 GT 1 -4192010579898226953049077757833959.1870681768690750264829978924700714 1.7014999149345601816597385433428892 0.0978981996356482164961257155016835 1.1030279045734457069975593701467092 GT 1 -71766786573697716154430.4592617654848323854159609339587350 1.1996431536960074972153259789911635 0.0948622890068799992983004103602463 1.0996681800151841716379110316446183 GT 1 -2202015322368409575495662776099629.9977187778104779831195816251962083 0.0372841240166814492219743254625577 0.0490256079270603043994218782574429 1.0502681441673918914582598046582358 GT 1 -43895136228562551759740259225680276873.0880935838450732510113255735531168 2.9526227679511137154148930756150691 0.0625049676179281422508555469764473 1.0645438199440665070819660894711395 LT 1 -313028878330714567613972338340738559003.5310068431882082214668796352725265 1.4281270006262132225815705426375273 0.0663339824292011773684827245832645 1.0686364876019484373636549797405663 GT 1 -360484237500388439419334307363092962.0125418550467842994675167853055047 0.0986448012367559121260574633194434 0.0671641147898515991896954752277401 1.0695259937033335363420246588185803 GT 1 -6.3450038656802220129997224258269638 0.8619120006716907734945845064945049 0.0180321604828119732689106699145831 1.0181967211464604675420004535721817 GT 1 -31572404711721836470441629.7686219525882966817146484952550008 1.9962963568529618255399069848222439 0.0535559676504837479396661108171837 1.0550434412490460969082571696732410 GT 1 -22324723570005281068.1126330123602530193041796514553569 0.6890972378311932271248716371554472 0.0651289111825887339050221803030361 1.0673466321213499321723251525679567 GT 1 -1317948974933864044663179196209662087745.7445542914305654906505782613357434 2.8546238094749079132899330874262285 0.0255201313562428877294934372174781 1.0258514183866856623303461419491980 GT 1 -1191700.8926154748724048052254304346408362 0.1583853523692990183956000617534958 0.0883009871829524800722521037547069 1.0924453731854962041853489791223946 GT 1 -539606506784833777877158432977.6500108531881249722000605475493013 0.4194209251533219064818283849836538 0.0070977858039574422423981516318210 1.0071230949158249082683847992126818 GT 1 -393373.6416989714749559731111772127513793 1.3794768245965397666629882780552742 0.0501371286969954877293177162118893 1.0514376508032739188035086090836031 GT 1 -2166233481074957.1433874380695675967464409617564527 0.2761038036297504202370831275190982 0.0751222643844841052276962687923300 1.0780937279189113819890379187241291 GT 1 -64110596053732849742240518614587527975.7911494082783582953362882647199577 0.2699751164973646479436596289297933 0.0506962685421759557892818866066775 1.0520264773554288523907053849078780 GT 1 -437.7294486275246948512919520979908254 0.0683565444084666596311141052372552 0.0637877198476383548392979191348240 1.0659130331840766372969991915530509 GT 1 -49685666243569230399822172617372.8135611932381966541855571933410672 0.4596901129803406871860883827329122 0.0147775673696425563650027671268505 1.0148878433742336220374562083360458 GT 1 -3033669697795995254090798533772598320512.8749663264793720110881972503474643 0.0487072989602941372799516612436716 0.0232643413206893749253286842554403 1.0235392278480576869552678944316102 GT 1 -21077033056119425522718458877168409731403.6724602203105477606572356658293416 1.9893719378491464827413250800078339 0.0371229080173700862522223524305165 1.0378295056694045800621345986707157 GT 1 -1589665764945166252726.7863308784687002257429851455567637 0.3654280222024439669290066555901204 0.0481976237080511095987997739943747 1.0493978536687532181015050885689723 GT 1 -3208563143932245800579.0163038489598124143729867525280996 0.6362335302399156044635605116431383 0.0225807897653899773289798517015903 1.0228396399146221571491142402031656 GT 1 -100800.0421780076046820657503148260606737 0.7412617781179254391730181280448724 0.0884696091400789635837517193137180 1.0926303438285400133140511554188889 GT 1 -371745351404451086.3904459760512071559613489914709059 0.1529249624501263609671300842834852 0.0611932765563785528781029627218955 1.0631456532886667960289953988803335 GT 1 -20215178710070203927207828649157819864.5257882081404830827402679117693283 0.1122921989210239489120066533752637 0.0476314129501333821416565145937375 1.0488031478513596877254211600214982 GT 1 -3695553074.6140670451302896729169531453742470 0.0695321344238920006008367701217544 0.0804668184510140583552953206112544 1.0838891490755566592762502117418135 GT 1 -21674750371913899422617171756570178249.0832712828673546064267339623044324 0.5894500990077491010269895255916153 0.0010059082190524490173613602919194 1.0010064144842577227739972570085341 GT 1 -215742550832061672120088601705.7555829765972473045232568624346934 1.2859288489341513459181607025092501 0.0517923947702039852501623182690685 1.0531818078441164200120058040475358 GT 1 -579369056032599933738994417009673.0723214283428548172095761030989930 1.0383432366707458822123679659639949 0.0258920225666820802095990478694077 1.0262331216962933746449953134259636 GT 1 -113617607.8719169981711903907157791464557545 2.1170911601090534436125787936747576 0.0787276825953688988172258609180252 1.0819996106380865853571662125127266 GT 1 -268164810116809475212233312193651582.2917057500240881466963382731339250 1.0582571144585412611959268976193169 0.0866073586751591532617433496293339 1.0905894346192408306574425334350185 GT 1 -70141.8284181994175645583116709406457388 0.1451969171454937122502050645790242 0.0152631923435419995051643620208188 1.0153808738631952556039478911303302 GT 1 -302903133071772580079926272828292733373048.2273402996306912445591766669236473 0.1534805398085401116044591506547030 0.0766691474930217282087856441342459 1.0797676552880190529790502253812769 GT 1 -225966351222608083715118001163648426543593.6872206226144199363913656182452736 0.3967312937208265344901411728950087 0.0293621600287858120075220241719718 1.0298018566065130096947950384696524 GT 1 -87678481616530147448715696741798583894805.1445801329652500150659985834998851 0.8518203730031932860856925088288961 0.0060776439741452990119756436510742 1.0060961880265605168807213612175736 GT 1 -714180719284760346058158548.6256816098842495965483269497254826 0.6357002084108021471313475772929153 0.0896564577104607368111196435515704 1.0939332317141154527813697043434018 GT 1 -4069312601195162920447900948138.8893878679218726458191437837191893 0.0605741777319657482067509818972979 0.0149036773766228374343045295126345 1.0150158531257687225085622289257500 GT 1 -7278533169199983230983914.8539758292916264067557191287862137 0.0655365910987126878331488274007754 0.0341107716769118965094011506522786 1.0347061218177740813579580136899343 GT 1 -17509895329523278796531.4618116858963188322395334025305506 0.3951250309526948173567669847655626 0.0125882650098438406399266175045369 1.0126681684901443679606511471127063 GT 1 -747879003966705437656.2915741145465445461068995451950801 1.4248880813447214157771646268321213 0.0006995935339823406353038789515025 1.0006998383637329354376506783755420 GT 1 -48807968871258.3255473442994230183462496738684284 2.6708629269791075920740521589337103 0.0276900158770961793039180716864618 1.0280806116571737383900025904050968 GT 1 -787254089486202701759891877701.1563707310626558022606202306521455 0.8143226632220183546528830183416782 0.0503262426831579380592927462263840 1.0516367667181111859969501325267698 GT 1 -339074.4248243032555629007619352954138090 0.2810559147107332906877916250443170 0.0055491828815736729848970521634997 1.0055646367944757822367440927257646 GT 1 -276451.0204715782200991961930143705105835 0.6570491711156567389915450939486265 0.0963199643706558226599144648888229 1.1012799241304221662883499323648420 GT 1 -26504220422591519694712.5116389561705178010074655873970496 0.5800605637912116343115623824801810 0.0175201877641380074483758000722758 1.0176754827924543919551946814383358 GT 1 -843249899.9307831997427430587422315906327044 0.0793335111557862688033725845288720 0.0606823672530050158737946709553334 1.0626015899370658942191355700112653 GT 1 -73376971138105534552144936513287452317333.5072415743571728924274075599288944 0.4577534447599733489206856226134515 0.0479560408245528671945266209913884 1.0491440696523708709779091794701464 GT 1 -1528712012733758931843820.4596327196959512945705849538994672 0.7018179492454697184235639208704257 0.0672899487062454610314063477874734 1.0696608967514144801747509218155692 GT 1 -137549382746843718173770481600748.4334988792348486804023178617879149 0.2876901851957598463710130640145156 0.0046645310193194525075970161776498 1.0046754438929837573822792665757084 GT 1 -62508757020754064444916153111.0042420823392884143505219198257987 3.7077915561520438737566739777450988 0.0294682249088153998745088668987761 1.0299111359598597088164754587728870 LT 1 -375267241388427717010352596751980712.4778822865021313197858058696126689 0.0770663022242286737355250672394898 0.0781338709567945910837687417054487 1.0813552622330453288161809874395026 GT 1 -264.9122260551370474252879968075296026 1.8104872325738340533714020883669178 0.0634936106345416917681481768158771 1.0655989345206715169858914498419751 GT 1 -961598181.5827787296924378476104217798643939 0.8343634265288967338179537501330681 0.0776188543846349570408722959030307 1.0807967508093072926288391458499924 GT 1 -12055060479.2483262142158821052358903064627382 1.1444614668874469259230518345998491 0.0442803752037272880664231563776751 1.0452906884473860964566285638503562 GT 1 -874.0144831615877027952870280622561923 0.0412983283442818896975532192916849 0.0312657189897864085392972193461498 1.0317649245001972058466486202973012 GT 1 -1876659.1960383786529244907219014822669059 0.2845898519398219150057720840608307 0.0477437544075962395972826168401211 1.0489211148710769385570611489266480 GT 1 -6.7287137980720925986735892696131010 0.8086001163927683312683900381315120 0.0502636959604829026821072916705733 1.0515709076137817304573599096001598 GT 1 -33507724068894826687963074.4987997084567603380907769544565295 0.0015032435704555748533944087853280 0.0880966557299409906847898667053142 1.0922212766843346371150549134329872 GT 1 -23246481390926398468335226608681855809166581.7355675881889401900157857685652882 0.1038558909249159779104099678264670 0.0288374427653415545373248383554955 1.0292614125145549460425408973071113 GT 1 -8963305756009675489.4960668331046363196672200817728247 1.1173675475737679046119633788324819 0.0474418261392818134482354768018300 1.0486040989268888034192994896263835 GT 1 -328399.4463500950817449314332094652147430 0.7926174962214696501599316680616893 0.0595617036762194656748748630075211 1.0614092397045438894844416924287744 GT 1 -39633735253274154141943117352209879645396.9901756479473403080794642235667430 0.5273822452944557414725081859436717 0.0068083952680333682733924994644277 1.0068316781305611762231894434391641 GT 1 -21652252608873132401.3583522342260385406312524486229468 1.5099510056581839319122045592031496 0.0491468234067558907674261027696164 1.0503956167962009664003638589593325 GT 1 -27853007334284309806518384.9735557051180010186816634460001642 1.6434428498156758325055577055200367 0.0781546180549364018267543614198505 1.0813777680296615961535746014388598 GT 1 -52156067770972358563711586262505878586236.6453745325456615359483156726868453 0.3660902558430970231066852673638051 0.0373824854256765490426405056530723 1.0380991272087171597178838903981292 GT 1 -1710245594676736.9491587086339023234550489971581956 0.1927551865663257657309806684892327 0.0929210162037967042737128813206320 1.0975257501929639738985886776150387 GT 1 -111441.8372995661406155306853835559987644 0.1492173761346309944724329806064066 0.0744340108863822559858871674304072 1.0773498484691971628467311586728871 GT 1 -69049669770259517392225127037926660422.6202064101002489347075128894164858 0.4286557607998615061800232926500054 0.0208426612469537457943982310307878 1.0210629356230762423951682588902134 GT 1 -58826348468141469.3625042278370011978775636871559459 0.2171744976853314839441522534228780 0.0916754226649713691275962982104078 1.0961535002305249772374228063774169 GT 1 -150388569907024920527081931129404.2070043595958364061753050133123455 1.1402323705176348189085997369752835 0.0774815447481218500655974693944800 1.0806478975744731639139023497371729 GT 1 -33502867290820792436.7550800655372604993879358746450258 0.2380104245212083575262349146649347 0.0372229527524683900251689302449338 1.0379334129424191543292179997775313 GT 1 -3484073905732102150806732069.0765219237278046653383794417290922 1.2143750309086721562258357566224441 0.0256923981749103035719460535824366 1.0260282122359140441214879784144505 GT 1 -6100682534178411468080144644.8046906960869954061231704075983827 0.0359888749448598711374941581461358 0.0465257970435280320457380153274572 1.0476429094136142123472473113255692 GT 1 -1701597.7652633488533746022577401240931625 0.8057116621283463046939940976671223 0.0603311115339125467592448129702834 1.0622277120840652494258719653237562 GT 1 -33670561.8994959080332005722238146822191440 2.7824812498795808792030796462297053 0.0568777221539443534401006025116696 1.0585593357771851182582591266940161 GT 1 -1314208893124134.4176639588959877238066263973110878 1.1302479869981727068890647645132729 0.0789254664393552826410924251652769 1.0822143192252807646200560261866478 GT 1 -2.6209228462107754006236173009262418 1.1466820187859694326618095577317755 0.0257190550720671580123329407708125 1.0260555724471838233053045935981036 GT 1 -184674544001481477.0706524952640674040979180167815235 1.7534823660682342495562306585180794 0.0894045113098316564046870424021478 1.0936565103105424239999924740717705 GT 1 -126576688701540006030273937507546829019.0585263370880211989780110921453087 2.3947122948348892620261483447626963 0.0888285734673485235147771921008137 1.0973509786602424917282062010221625 GT 2 -975745666903849960605576084841687.2145105707217323191497873796119034 1.3439990245601247452692246480034416 0.0562432505270043695005227939510890 1.0578868266850107339449170652470533 GT 1 -21169562594360393310704646341804928.1139952907516703609760458105939105 2.9179151315843502050714634245790269 0.0796005932106626445627329868440538 1.0829475653351089976755291410604079 LT 1 -1113143339441710092275513737634.6839828250567190683951102121033763 0.3175070128339536975860841954335381 0.0308860636612653769596631470902461 1.0313730926425939740113946459003082 GT 1 -76.1985670989097381416822029195968493 0.9774280991703175634394681216513307 0.0973563120391255987203027584685860 1.1024273904108531942524076202127895 GT 1 -6.7029092376438615064119382710136194 0.0509441145112471735611084174271656 0.0830754564850701517141842720384350 1.0867300963546316479522751659152992 GT 1 -7746076151982793686.0913389751821843289070836656237728 0.7167363707152271888661730602397289 0.0981831755858399653323184660423551 1.1033438566886331644136223414366918 GT 1 -2289745798298.8888014921254837828749335579817800 0.9589006391637099879849584977855158 0.0167741768697925927665169627902717 1.0169164567035634102813292793475241 GT 1 -83324096316997899671823036.9157940859088847427656256436963925 0.8540444625013255799370726281218631 0.0791241759038728511370698097044954 1.0824300790740328462891492227540725 GT 1 -29314898288731015128575008700316050.1485845434137899980358361047292680 1.4132754830766542870509538465261229 0.0505406100398497122022556107110346 1.0518625195653084053051607070212190 GT 1 -174457652008121957.5723837389766146255652360667489167 2.5150118929534266299031568862846380 0.0697140592407155717624503029706334 1.0722632769099270135772404378933556 GT 1 -339974033047950841824173889.4623000573352984230436677686590748 0.3005334210345885007265393770550261 0.0967196253779117098194009923233518 1.1017222813746712665731945299508371 GT 1 -27778149052921973528293155691187890508.5904971254442469604985441140862679 4.2153593328522656733652333276375823 0.0217988810909296841386122830269828 1.0220399870326455342135864117104350 LT 1 -100794062790403641319765018030.3238923513644771364709327168019778 0.1543418016586318120524985817418483 0.0640983569307436559246656331275095 1.0662448902170306907216862089647397 GT 1 -2100700.7441668169315630217546712683010158 0.0040498635592828008261307376874389 0.0112096775643461871557278443913423 1.0112729795073763133893028607851676 GT 1 -212940562813988349995326976635169.0661566855919659451097329377938603 1.2435193311485673497502049546230628 0.0894449620959297837890921201298492 1.0937009336413040247542024262836610 GT 1 -16637442107841610.3723469456605176385949627950804394 0.7398225112692954626722114499444260 0.0828940271247951314480965230611414 1.0865322486533579087646617057038865 GT 1 -8188609950514538490250536081993165.7733203755883976444447403750194871 1.9707552820703074749800844715382236 0.0558294929338943698934409088611435 1.0574485072547453078332591997923170 GT 1 -1.6365203040108303683270099852443326 0.6831948848801601475864529473524240 0.0091123763168003847632039868935257 1.0091541479708619306116394709279957 GT 1 -34210614978309764117030120301886032.8336088294059733281058908064413087 3.9095136995573697391860792910222369 0.0240044699351134330483475312644290 1.0242972724310827663827230782291525 LT 1 -246018.3107321217563728568964400524333001 1.0819492454328050774027997856684191 0.0897320376471748360087948329691603 1.0940162586933087577168350105637623 GT 1 -128097024400327166786097209856526284852070.7609661994014584465666324082904964 0.5944340059880364590197674503764470 0.0531661749091399167152340386367883 1.0546316762824624047640069325887865 GT 1 -58.0042573449703322189163851368642766 1.2319062149522367581142813812498821 0.0198051199782424317504835871016286 1.0200038699219259297837842447981048 GT 1 -701.5264973984874660886541751358117659 0.5142108988249368748089843507610841 0.0588833555426664991231851256957391 1.0606881891008750136846627768842115 GT 1 -15450806008465626325269059681574279224247755.6510549186358011275746185586985364 1.5181450955096597020964386670021316 0.0368333406343102857617568283160350 1.0375288194725943656704497531801559 GT 1 -24657678484.7917032038914983878780832925607349 0.8323270713333804012326151534747546 0.0291645216363017567009893590383937 1.0295982603053943746647562089950361 GT 1 -1060280.8749747256269651556489518791909319 0.6924706431254178170205718774229785 0.0405969676492964010041046761353756 1.0414440292450975471250186732108510 GT 1 -11119313607261194608.3037283194518461409076321420033901 0.4791218756758880676697186602596602 0.0332519890462237535226270739961819 1.0338174059535047780990653722395483 GT 1 -250249.4584839166478651618203575200805796 2.3683878744781021617093666942502585 0.0614561390217218926957589370846862 1.0634256888550041177094917900960168 GT 1 -644.0397460828671127402363754254124942 0.5794265721222851114016758204186772 0.0428675105996546106311877050717164 1.0438134546868475370160280185420381 GT 1 -913126873481064.8438477183513146720242874968683326 2.1740590524367830765025517513814973 0.0159007728615323251536400368116711 1.0160285464260802723734304023861508 GT 1 -18533497076809575450581889678992682034859.1321018249503340118309304557123288 0.8621777408432525038084605095723362 0.0367114554650833466821028763586962 1.0374022811869983280673813574043123 GT 1 -34752151394283550047567801301.6654506803808637197036332854460419 1.2528567418845015158374650897666302 0.0207332537780042790230099686076774 1.0209512055132367509126188019074636 GT 1 -745.2848090407336400867738340729629742 1.2988003469982566836091267612934619 0.0969602443254529480507291932604338 1.1019887003166170286137686706774316 GT 1 -288141607931944.9268650048749317913234524241482440 0.1732947711755199207503229254470682 0.0678799750869383068107746906996290 1.0702936904926883054406950778642737 GT 1 -40.3235576461706863162993601732826483 1.4233303032479869026347572650540456 0.0212223290615192691765937801744719 1.0214507603643929599915317365749969 GT 1 -1061562.7521162248384687907277522917873459 0.0711632687522027343148862020696058 0.0917344433784226646466203908859864 1.0962184799002576463862066183632562 GT 1 -164126732333235202988.8630360282516507302789867569375649 0.2579702462367703866777460363914198 0.0104343221051158307209564331376644 1.0104891413116227067490399107039320 GT 1 -14767426692847414514720176883339940470424.6073146731517157321519021404471094 3.3507434578595345798121283584145292 0.0518272044015832542124809252187532 1.0532185194989805769878721581661458 LT 1 -2.6440387961112325549453214954234292 0.4251762171788616815686960508422582 0.0965323715794441032529053975400280 1.1015149986779999799733976305950894 GT 1 -6494155170479078908089210.4380614297651995416305323158592642 3.3565486782821026009599064838986926 0.0401909123663659066097055647012103 1.0410208813452263941883765910957125 LT 1 -190223512208049056979686372081372587713667.8161203180696706638170165554391300 0.0081064703291994885683199307888093 0.0157636273248713996668576168641299 1.0158891946438985670041191260619084 GT 1 -259238305903300808552408548771677110281.6562457790499730000006722708858366 0.6250416951247210793222159620940830 0.0146575081791813506601154002912312 1.0147659908139652033686789617078860 GT 1 -4487199119340257742126084556213558675.7826763114521370712284294273700782 1.6930316635754331670441657585056556 0.0845485640851422449539284645125521 1.0883379627903084624967310765251745 GT 1 -1193193952989395384734584591686495399.2474171442432452787501878155655321 0.2819270854879450487409075286357406 0.0802822345548363458728087008450997 1.0836884326946853382821329455716840 GT 1 -221896054.2511471543665557470830159335845682 0.0699646650426910665963381953830157 0.0031899135725102696874866009561653 1.0031950121924688559670701362137224 GT 1 -43989612.5201090054748376952402358638972846 0.1004227116788823639342910957282980 0.0162823880112620146654178469128078 1.0164164028026756617415995460137317 GT 1 -46115343967865333474575.6172932040975600115655476217059530 0.9726046581250947185544560253626668 0.0597040340705216246586245764978653 1.0615605959034822271576326309686142 GT 1 -69312983963.8622518122883351140634234078560090 0.4853546433788700888862088189738284 0.0569493224526211525594769054993577 1.0586352570213175327451979126578560 GT 1 -3086416860488323826837774445792119258.9915950009154144182297701056542069 1.7352991385913569735719246968726566 0.0082264294739905741852951041044184 1.0082604532696554586767423289502003 GT 1 -435488594454950749751048719800148324.7208431870285517621569506146448420 1.7954767922948279769022995012592865 0.0528321793640621631550848674115960 1.0542789885756767109102859933685177 GT 1 -2176824951075126007687786622526709877.0205680733112464487766885178177990 2.4208577011877517278471670198084042 0.0421444882831229844884810220986228 1.0430583352286934982868834395507168 GT 1 -3086188219535089450011437.2133333084444223039480131768708172 2.3960433709970763695127147720955331 0.0192510509426472782872391453430982 1.0194387654634262754706204761822067 GT 1 -519.9406350973867252741819319552728782 0.1171911293148658761655612553775748 0.0441769629890023917844358530181922 1.0451824907943679733841417056876982 GT 1 -405210709292940.4878004578659245214387137866345356 0.2504369060837810111174261500997096 0.0207822628232513626345079185958688 1.0210012534412879993517353859668046 GT 1 -56519507710249.4568799806952032040687824969202613 1.4815611366527560811401125912570816 0.0832923175550701261279009340544719 1.0869666335052563483034213296853563 GT 1 -1326703461959740179967696989463008.6883572953302984513459106459013318 0.2453673161168273306137213801920246 0.0607391585468525176933249894784771 1.0626620519243022624781683615993632 GT 1 -83911072644474131223585964013.9762089945179933288874183284247595 0.5422656420771241397256504049044490 0.0040657781718546380167227911857494 1.0040740659196497726201568998102620 GT 1 -24032965.9989214204508733332313610789924737 1.5110011185027921054226130114244216 0.0949317642296579396942574042012332 1.0997449394832836663810160469701192 GT 1 -11297118563935612824060613810358.5751414883018484527692612660236157 1.1617096202781411889327457955126901 0.0916023986787354021638745868328704 1.0960731093076494657415782887144721 GT 1 -1144302070465540855813568894701110.5613519442389879679232239607614906 2.7585783667851768207772405062874782 0.0640848096095926510839949253444100 1.0684236491136023649192046467033836 LT 2 -13.3438703148991182185364109703741235 0.4894940632010188735157440148830705 0.0713346492650233290854315051878484 1.0740068303233697558194407250925554 GT 1 -6727196783417765735737416.5216142551165666921424235283185479 2.2585054096802326294644301759001501 0.0412098577291933120930959869959624 1.0420830577943200360106188235152776 GT 1 -2983121561164461378.9658758461486207839817580728718651 0.0939171753337606632022401462115749 0.0607279468523801567619565508265231 1.0626501152746915812606905354846692 GT 1 -133.0756144285549500042447482396044575 0.1756244324398888862680478126249740 0.0151062753098676729954916969314243 1.0152215373465955017159390714548936 GT 1 -21729.6519665139704031987376880724801785 1.7266567278822439971163227009917849 0.0022146114148581388573112809152848 1.0022170672932650684824208631379083 GT 1 -86565399077548604133.6486032910680277690610351165994249 0.9815948133514095347921223390749172 0.0975253591811315478332711608258213 1.1026146879855384075302335342491876 GT 1 -37790290579447.1095093207452232097018364482264439 4.6506539762144817534031027332685650 0.0158028642445697888296737416641751 1.0159290607806367792827061728383047 LT 1 -5111574481635690.7903699805206176795491779953243056 0.2942570256359500266463134792639226 0.0842701650012647289078457523938464 1.0880338977690628251331403981904210 GT 1 -2275573645969248431377130276356619213.0275591491145663116391528498611364 1.7249635589866003772100185988973259 0.0336767002656718818151830214297627 1.0342568219480764184475357542216271 GT 1 -7097546872419876177551812307332098.3738470595155277695745208557777241 0.7483950273457793924973307388884054 0.0042256307518786335836124835335899 1.0042345839603746420513292738561207 GT 1 -31568926608739462732963389.3078318479814712626698423283726362 0.4241050727746438300824465806374090 0.0451915478732300706481250516173470 1.0462445323082454455813696581570378 GT 1 -175146131889985007064331534388814149821560.1371932762937486150820866624031103 0.0508938654782724032537056624395855 0.0297269997291705628981351294366643 1.0301778035043481902377716853441052 GT 1 -11905113059859755972694086924026830937384.9131026415479855691359817474916414 1.6564260226533969921341947912662290 0.0919327799073890310595502670288499 1.0964368721819996216103396183658187 GT 1 -3262550518646282807998867906436035178049.2697441765215724647867182827393305 0.5601868072788676238268401136925972 0.0612236685377610006347611835819105 1.0631780268034422858582980655683777 GT 1 -725797940215296094.7349380995376738583280175969051123 0.1164415901639859341878599961298502 0.0600228758960194266874927297069616 1.0618997400738093092618372323884329 GT 1 -6135740037617462996137686032870.2295928841026772019808490736026141 1.0030687754350561758251761757523263 0.0096711404584248546535070779015756 1.0097182096583862984418987969508871 GT 1 -13002.3250075474625349657899859566244084 0.5469651360449754539768468069068612 0.0631599032488765970683498007771793 1.0652426657880393782394561664961168 GT 1 -221029170.3041419698463299833392414722543220 0.2023839701465267076783387258431695 0.0386004749504716366785092283553682 1.0393652175420280882832726830447041 GT 1 -1689.5245350088820414641346368030717149 0.6699799342014113038120345716342047 0.0368923320933797788535052053519510 1.0375900687539171040564846336766605 GT 1 -389114024365383463080527706465093.6144682936856421530132316361275838 1.0716917653128057818149285368824794 0.0504384279755305754938384359936761 1.0517549040450342490605151092894393 GT 1 -2625244820050626138765.7406278686202844834620541651530750 1.4178051708318004175115922356769887 0.0763109675080192436698932295354821 1.0793798089065031157562086771954456 GT 1 -227731440.6553181020440543088347537521426863 1.2683825177554432914154799182186411 0.0731745437596939328555065353093014 1.0759900199902607540688747074112528 GT 1 -2798144555945268946546244424015537071.2346471758417603454994836572620705 0.2559289556395297092770530050790454 0.0672865568087021955203713627366030 1.0696572601535552840484392979355060 GT 1 -812073592054360652648664758497151496379.7781869467682912072653191424436677 0.3784598271072837596727532535820664 0.0363636106110016960756899896159628 1.0370412449559172394302609603183250 GT 1 -10367996964574995530959732524650941268.9998189269201964568100911218850256 0.3317054155057142799737614022500848 0.0108521160943261078068516240667674 1.0109114298161183066113620903401590 GT 1 -346341967571.8695918680567222514986621567179681 0.7172389135914690024036488348940321 0.0174622752378378134885614624154489 1.0176165392713645651608641768286511 GT 1 -9322717579699409342079834.2582970584995222942295939772654920 1.6266408685292539897913972771366749 0.0816810489432304276787455830840096 1.0852105074670656845337069816514141 GT 1 -218079070.8054112361522118901659202361320775 0.4264427376698202275807490439471749 0.0123158707829462789961817818142935 1.0123923396217224154314786702008316 GT 1 -36791295751613114776338527.4482909398225692538502368478600756 1.8726856217579124573476104019039339 0.0055218932695294463481493601452299 1.0055371952788753862591492712703546 GT 1 -599535622572288588.4516103709189193930283549969961508 1.1190457264511746165622605538300922 0.0719956431145605662531630621284282 1.0747188512873030163433028047525144 GT 1 -1565550296144065292384748132236753704884.8618383469038583864760192558105058 2.0455671400974580223006725702504893 0.0211133157870697123061130506451242 1.0213393896135536989585366485306116 GT 1 -276722950393707.5813638403676973264467520794380111 4.4571317553590406289576623402910103 0.0851481825606626791308232317057148 1.0889931749753636772753525240745410 LT 1 -149907238294010890166035342085568.7276951327168597224673919235162516 0.0842232883744763919398677211395312 0.0736595432168609300223122527197761 1.0765134479950948586161894936693142 GT 1 -493416330726521278639235514036778.7950935880379750952677952064550856 0.6130607291488603062914937709471467 0.0747984323983035835458417091078466 1.0777436542880950521336976329929307 GT 1 -601152.4594676444221199070427034588989915 0.1073770481764236754513571321699153 0.0080816759982482435181870243542213 1.0081145097626031981873284572187953 GT 1 -3457891.1902456133984492007501032825161267 0.2241172961077131607296659704495892 0.0267971864386455842513460286346975 1.0271627770356883675626662675734920 GT 1 -1577947320735401384495640732735999351.6764151759284726676937010783626922 1.3556579902833936192428773101228523 0.0393479357449338099337005252550514 1.0401429914959653738608572193104185 GT 1 -3875718150436667206.5052700600710607776788827365479733 1.4576958437948761319585521740115039 0.0739024794316808545843740937439822 1.0767757360923838151499138913532416 GT 1 -219735756883872770.3632646603678151887991622140705882 1.1395725440732133599755581067300673 0.0930679381331036425425780115180481 1.0976877358985962055852413190838383 GT 1 -1328680981590038836077.0963123849452324598473131212757199 0.2061088046839938095147439549107812 0.0403002296340472741743064649480987 1.0411347826354902776825305839020839 GT 1 -932545674075076.5683746319634529407060722874143867 0.4671356992924163518630882848912743 0.0919282575434900435955375078071260 1.0964318919861090502739490977830677 GT 1 -3427791067411304254490771113575800.4050405536088373656537394470644691 0.0904597713491304573211382058747558 0.0503717545163204620166064811566067 1.0516846915169100369993379991871117 GT 1 -1575800328.2016002517892054462352146054257316 2.4817007171814971125107005615824876 0.0681976536549286189466042971833373 1.0706345615246206979079655566556929 GT 1 -6097900178868912.3136296560782054972286761518828194 0.5806631978377086678734039384705523 0.0676421588947351574557164075100971 1.0700385883026036189252158215227519 GT 1 -1466.2518623020073241468823898662192417 0.4243159567171601231879695120630920 0.0877346744755120739805056150928159 1.0918244041087071579600152415616369 GT 1 -4260413916095306667176839318085.5467209417121111236928476917534932 0.2097878669938212404587651067134204 0.0922636954257351896137132058938020 1.0968013560234662650041512160475113 GT 1 -99261830681692862701808153472523054464.7780092237875146420657990067272509 0.7259567585804463251685553112616941 0.0959085026692262030182977369559940 1.1008247098502623998095577140317612 GT 1 -34.8896525027314476191493497796865624 0.6076289647120901816108823629864897 0.0785808847330045994939710730006482 1.0818402808012272309335474894803670 GT 1 -7250371535920999337351250472928242771.5232306282443922697512265060154959 3.1318093532748042131555634219536324 0.0906785988052879520874930439229053 1.0950566706263088235984253733785863 LT 1 -87467945788955434937522767465120977383582.0796081376427150505286308817715711 0.3779217320744276219351931855733810 0.0490843710585546728247063860598641 1.0503299386253929129122756732582909 GT 1 -15.0794416401832014585710224949130458 0.7342577272644619204259930597975833 0.0902155307599047957180312517418812 1.0945475545128253217256152970840289 GT 1 -13713462894604163113877697701656412.8775412251075787261471403525693762 1.2408996193129505043380780214168686 0.0775573898903202284249808294477806 1.0807301162658754570002893257941077 GT 1 -109547118964601218639123390485543.4393889078411754657304654953018526 0.5165552492118023292218007124318303 0.0614970912935600596435356271956524 1.0634693236461090227004579021050958 GT 1 -1110070327455884025032.7985724192226367267635174662435825 0.6514316246461933714462594259784703 0.0251938078070952784437959262657293 1.0255166049811499424964870374721588 GT 1 -20162372270752136418814165983.7083161071417200543997761537056037 0.4975105356327290699870882700665889 0.0092328863515369307724418013762498 1.0092757736331075868956502825374000 GT 1 -4432959673053025555793.1253509670793983879649898810887012 0.6316965317379260194740037118039553 0.0932761215677679155221969626717292 1.0979173091389807919501068261137165 GT 1 -326789113810061156886.4629593887486627105862491383428763 0.2656034610096886949639005434506361 0.0163382898687898369742306371847842 1.0164732315564541958418238413629657 GT 1 -1225566890659007.5387863296405657664887130735178922 0.7986110872268168171278756903866223 0.0365021738977471946154605840208908 1.0371850473811665444050074572716532 GT 1 -2090867719.8308636149612696110343784234718120 0.5229514194024296841041705196170197 0.0982950944927237616920067622482539 1.1034679682035327771465082014717104 GT 1 -392134092579735096754259547.6747097101589707273642604386337270 1.1357318373420381883902328542422192 0.0870490892068347222040159540882935 1.0910731667623821603997362586930751 GT 1 -5238249454069664142597325407464969650512662.3527442617028176178738772286903868 0.0635179337184786840758490113396346 0.0327159874559073630920946502763197 1.0332631218490771758040278844588374 GT 1 -20182400514707896573196853129605554961.4241656502389684142892053993703300 0.7740985742146358828350707643563655 0.0382991403786109421178967983982558 1.0390518334080236412008357076844235 GT 1 -392600140744.4726366237000108843239632168246452 2.3548089364559300532039144125439110 0.0908431292777468675260988155104511 1.0997727272157645191014185564807870 GT 2 -371.9120205037622303593643868145139597 0.5521674331222461979652090180259798 0.0490859132666740068642098513843922 1.0503315604405392675903724150053768 GT 1 -1220176.3030418082574106833391538431919791 0.4802602462983293594638516555685811 0.0820180068243383157080906689568000 1.0855775038310856397572107165943999 GT 1 -505494326856530.5653647482903511778638656962695417 0.6981753619306619197387759223921084 0.0606484148823255731651162716965063 1.0625654448079923151150509910976110 GT 1 -1103907662032932616058070.3276267987432975959526136996820969 1.0046768488456327535214360741788606 0.0077292297969820170047363734603261 1.0077592551086971270757578528765983 GT 1 -9.0734387424205994068764919558831869 0.7338051757152897230209742481494398 0.0760717347560046493133621038217695 1.0791208453715278818192717403830277 GT 1 -139732405908183533316714204774284928.3039016918349543358016386784641765 0.5919268128901093319399790990425373 0.0656337348754247600655599664371287 1.0678867708084406155096897044818533 GT 1 -13249315770715249400614321221740.7144137380094611448071529199655433 0.6565180374994003108782089200773551 0.0041986102612835989998364539541892 1.0042074491747911516413690167936626 GT 1 -24752561009167360.3194717791219141589689199310093158 0.9116947664277747995146470148711229 0.0350474544293316134287326943179815 1.0356763544267462321674549691204038 GT 1 -1180848763905.5483808618407694682429266169277985 1.8675597105212987594787408669873040 0.0241240469099585974223394032725416 1.0244197978903937252526075119454835 GT 1 -9762581542.0344645431644078927187137652323438 0.7052350449913700061871949638006135 0.0313741629778188557516203492032075 1.0318768747639982834015654578592424 GT 1 -192354561475393143597647086568.0964247139941019147307979792905274 1.3967678760918316085844296847235600 0.0884342564714725605631368611551569 1.0925915607189233685449634172449750 GT 1 -2560645577665066471119.9535168092532176702148022454269216 0.1150065062753682173904909534166646 0.0217803349050221724239097387819031 1.0220210277309863990250368449819165 GT 1 -305142.0467645797171454663471876918656613 1.1694120356194546045256560572700541 0.0586343959548853504497206325317422 1.0604236877071108431832139750704453 GT 1 -1186260283945437495.5656818769055128181522059470692660 0.2032168822450009446660492893350633 0.0493242343600145325067875321398910 1.0505822150118085127267777257104326 GT 1 -65329269852406077482695962572049263573969.1103628969521339861933057650327828 0.4253263193631681274958123501907496 0.0058979194640440771003467474469081 1.0059153808822563308057419070245241 GT 1 -161894856679487.1605304052530489924480020424823145 0.1771632814199028281037998032765893 0.0468412026577502566161794255569575 1.0479737603084113695414740849095263 GT 1 -82783.7827786274508915613401656621524025 1.2983071714895704968334978079335336 0.0372472035875316658814114977050669 1.0379586016821776227523730076566381 GT 1 -97398890246776336338667.5959945625352503609391924087923710 0.4298980743621040084828885940115190 0.0563189403041131064202915529177702 1.0579670304159963286741258266542280 GT 1 -491814306807755648334033242353076614.3749269070873214819877371752872827 2.2876399948611065878124952477069134 0.0388267595157961958350955058260896 1.0396006152033557700055140993755554 GT 1 -4800033473516486097820002.8086358537204148854405903560823597 2.1617045050582564531725753826838664 0.0868679242964670929453139526894590 1.0908747476190007694260957439062174 GT 1 -56995437.5924809536241232097781596726484402 1.4578815324583987411878070862136060 0.0456527112277467974452531367735499 1.0467276394258124001197596358689938 GT 1 -12615018.7830082257194105123358970374383471 1.2731289848217171602014997562170222 0.0141306739502315086216469130223695 1.0142314625235829933722488479123577 GT 1 -2506946321450526346567499404099726.7646866322026087221608410400122634 0.2991877949404952220539034499661729 0.0695013697749138158639186791102800 1.0720346749857230919499078063555338 GT 1 -148811927389770320651248600968402539.2645743267536317890894001479815765 1.9467557072067650286143791294444980 0.0160435780515629481794131875363390 1.0161736695483329488445229631708307 GT 1 -10.9590080990676461761863017304439708 1.4206274378300952355245272181344059 0.0184600238516885724385982867117838 1.0186325364482740400672769502697886 GT 1 -538084910208394730304343814479.2982283258167151306132373081186009 1.7029284310259515753649630110655379 0.0558983766770402367476531361607103 1.0575214668055090317757308684688404 GT 1 -6184.1323464681760980090633292693469654 0.7245726616497906672697875715727117 0.0705823509900797701971318804550603 1.0731970728301316958619098134506327 GT 1 -195924795785.6659562030933644335947181551686450 1.6242823508725844582509537109262115 0.0422547914637782574677757358063266 1.0431734982473862531706836628742029 GT 1 -21333329568837304110348337.6330583660017865973830337772830980 0.9868771703637843034499124329503598 0.0714292216129991701972166239446620 1.0741086723525815086150139182204624 GT 1 -3624523590326200326498956003.2076263959824406410264875243253609 0.1860896438744781901283991087040050 0.0095069995244597788667582272655781 1.0095524795262083798457410404404034 GT 1 -968168017051823276953619796677411.9760109671908225267075613153979774 0.8023542970020611747785958344009585 0.0997967921495785742418597026771738 1.1051347546432937659164264005631082 GT 1 -1438826037906437424182581474295543.7965808087375424748348830841511472 2.5313426620718481426441675342656327 0.0809078969673854269005442642931521 1.0879279997996151948067904214584104 LT 2 -1858251.4635077050112417367453565954750497 0.3794437004725383184959279129785111 0.0263314967222795632470128331233669 1.0266843789811073667253292367318789 GT 1 -171455376498084233571210267448806363588.5468468054877413038955960386804342 2.4631628975069702339179566103066408 0.0684499445224403857812373492162192 1.0709053539617428078425165123245182 GT 1 -19727614364295266.3584692790849185371688891627116441 0.9789382960560222785897847751303481 0.0595297292913899920972284589989452 1.0613752408325168443214364595918161 GT 1 -51545455388490480170596298512794107.6996860933962229363767208394619863 0.8386854004662525274721136560856499 0.0270848323522129370055895573939661 1.0274583869816828060886192734393238 GT 1 -67698191784465671878725.0472515453835001701007629301834322 1.2703191865028228755990531628472762 0.0958861418610435555396374089609277 1.1007999772521466526091057019775512 GT 1 -113.0741018269322951675880162651226654 1.3423260926425083692405479873647679 0.0143495246148710616350762034939250 1.0144534746640435544858274576698235 GT 1 -1416.0833461414963243892681969262635246 0.2921753232132945059591691782308731 0.0992929231715302930989641775169687 1.1045751831915867723592089170900690 GT 1 -37983494781593091224085983151540776115835.0786972311082006004862007316448920 0.4468767784861611255309678542254247 0.0784906145642479638943939634081832 1.0817423169694297340781130014249658 GT 1 -50675681875300889438.9357579696362524724908005466294026 1.4484918825876530612485704792073083 0.0288409192764533614046095519755869 1.0292649922626706753566039582603729 GT 1 -879037943261070247577632747813670857.0213114465386872785826993857420679 0.2024646253024832820255640983358460 0.0392890574961932287347199126572880 1.0400817034951535623918050240674599 GT 1 -618491.4359405460940918693042489766266341 0.7975638252715166317501638259235347 0.0769134311029436981266150983997310 1.0800322580896558572715954381337041 GT 1 -1778053181440584312.9972436432499276897403719095323743 2.2504279824627796239749187121513749 0.0757453767757035904430548758009096 1.0787676790417999233269495357029888 GT 1 -59841450598346549469.0825488402220078684443658775149981 1.5217349559210370603553816315878385 0.0920262556923909021254735167715753 1.0965398167597011434314894500066154 GT 1 -448263824133946895852061648217912214079.6633269045836978743771995220965022 2.4942353338105408867547560728003535 0.0751721565858789178952655197077825 1.0781476740192773504287960234197455 GT 1 -262683181.6653349726874414609985417567327273 0.1663452247382389337170290097370094 0.0326895635354697876526109064399979 1.0332358045780566169479750278319054 GT 1 -195431703701859.2949640774271835838638155025529943 3.5026987986323362358015087630382247 0.0752164573256020386181459290683286 1.0781955767734069921051246912558960 LT 1 -2905503425.8095184057544896711888342723253601 1.4210537982809455223636351551830291 0.0632718489003773372965376643937730 1.0653621657334108645759878578336868 GT 1 -735720018379553795353843840200629.3368170334200533904363334328984105 0.9310131800399309698637230018681647 0.0237053132659265669141064096590993 1.0239908050125051845104028798818296 GT 1 -80640862852.3862159058064827771342659534490979 0.6922969166239930259969437803166336 0.0873615946443920701310184006174332 1.0914155279252630107162076343241814 GT 1 -45332926008.6167126939573519530811864508515607 0.0831308499066841662735205879706114 0.0795074693663682350346496217312963 1.0828463928083780635392515350951395 GT 1 -60498179425067792240838809.0044181833688833894814495509845707 0.2984475506631455466342221301207425 0.0536707394707166564475231218746190 1.0551647149597492023772908049131953 GT 1 -3594644694509279543678.5535343906935839696744170113325699 0.4191258671974881949684382924716600 0.0537866541110775547341501251254758 1.0552872111615390485396582767178069 GT 1 -1753.2865687724414459025286139894113025 0.0014501573307040114929533260806679 0.0225348784416781242042112033168643 1.0227926690294668330307342491054980 GT 1 -36420005574804734888749.4472429918642343295320533009908074 0.3821210140759461881694798928252400 0.0498203969643010033963532818330030 1.0511042564292997306705448636227122 GT 1 -287542445996349.9557162760332617196487653575465782 2.9755090756258609836876667850791502 0.0912691523709280858892936031215021 1.0957063258678372860120684981359819 LT 1 -1685867774585159465942.5474676305759021458500840032251234 0.2740561480908699202146674437893186 0.0448247985368611643429355986994651 1.0458604982981249956713731287321794 GT 1 -306824138654398.1510991700448055500996032733830201 0.0328825910202284881483218984261105 0.0950918202523778178991840084567849 1.0999217992719138725659250967923284 GT 1 -1.3356981959183527308485185855000227 0.1626857494350229052203300636141367 0.0777070547106500461675565971001965 1.0808923778108651060538610023168681 GT 1 -456245235674355909795472957.5538385901205974545592366260914541 2.5260235688940301816457340318707546 0.0257111021282913187668632649489260 1.0260474095950230232842082721367883 GT 1 -169279758351184699860548.0282754439089713994992610500421645 1.0783073651738550207722483394233411 0.0121860480867821891238017942588963 1.0122609067465492857027726209313453 GT 1 -311935081255415712.1590551563227292738007789828833336 0.3692523277956256988033140809810915 0.0947864895531639505148036135519657 1.0995844399620247052251874555753939 GT 1 -652155196331951345331629772721774.8918036733634470463052508895773622 1.1034215102582895212177333501262641 0.0758123670340281787506122426295340 1.0788401619750693540851774703430356 GT 1 -7088665082937993033409298818594658.7028625244407542243630379743236365 0.1387083731320526798636955134907646 0.0567575548844115993117776632686260 1.0584319295887290090158713739506348 GT 1 -28552791124280041536056468788359414962.4725960559497580053144237651195070 0.4265286258592063417015560471758341 0.0321582988812216794919956704934699 1.0326867369804479873157887958074731 GT 1 -382024432124863897474818333551258663.4494484658674731534540038553266096 0.9864973791589270537326311785603762 0.0358307957383333962747323320744921 1.0364884766809520907289895158819476 GT 1 -7490361551238784677782532298700.1814728260999365600028882072902674 0.0016889641089463100552256196296998 0.0056948016410414923639895027112318 1.0057110788503084591018863106788238 GT 1 -1799673789126071.7810540597626855454199274602103204 1.4731773926840400435095992286582396 0.0066082431194783348944470766819060 1.0066301742288373469970346071253889 GT 1 -141340648966771509167.1439830142126939183054763324661275 0.2163567945728026674148558719190637 0.0985944280703565100013670291932357 1.1037999873272949989534312873225122 GT 1 -1941533574216722593151442972.6932708134476703753165339764014693 2.7226277792095340718670166360450469 0.0281732685467854307863484919881622 1.0285777502336641342708703087304673 GT 1 -16656129683355884500194687742035345.1001678486623870623424012450353830 0.6937610257256160024406584555684971 0.0139486016326293001407326827405440 1.0140467975764934681234428025486376 GT 1 -104345749436066093870144.8363867933251928296760714374340281 0.0715224923748241909311045579281887 0.0278115123335583810155471888898787 1.0282055759689312145906287878541559 GT 1 -454011901945183027.1058941977137982923715864772509974 0.4503496214727121585823957056236940 0.0149028187122814637770698426335659 1.0150149814709392155095046069991141 GT 1 -301171194538876626058608.1115775072484821528376471487879468 2.3058816009110427213347748826716080 0.0085542985129228074301131243080644 1.0085910965288715201220122459040895 GT 1 -222689.9286347746928479713152010818272081 0.0152013237962455709235136221573276 0.0661480172036927452555568544763662 1.0684373299755303257664342924768899 GT 1 -22109372842.1270452595638059133678621738917010 2.8611944532022638443293579811077523 0.0242468248486662441328155549304258 1.0245456188643615165686544613414385 GT 1 -44547948622437807033798013512055.6071729605418143307231780780811072 1.7236598953413774767194511005164751 0.0209875439442215269687320133056424 1.0212109132886660697718902241480662 GT 1 -220526435072099542236959946950472.1623170504669862212996943289022600 1.3290218699652953419460420744725443 0.0449789979574582149072436733134970 1.0460219470756369598612825976376042 GT 1 -5252017.5655598441514992913431910929422407 0.7919270067693524735159471387673800 0.0326764328071976290222675047571036 1.0332222301983573691871783360954695 GT 1 -3405308620783202284570965195373707383099702.2095104938043279367150848848099157 0.6047408783340501249512647421913066 0.0990830581123963677810889523832879 1.1043422099875186847019085949157080 GT 1 -8474736290324410966469318338.9104244185787563049776160805760166 1.8985736491229341256627805796608807 0.0589035311577068923926520086775224 1.0607096272843608326607918133047271 GT 1 -1026557621903072953104.2381006144022695171058047330560914 2.7572988584356822877000487023893295 0.0335947178291197064210038567876667 1.0341719859940072441569879057137695 GT 1 -250823952580104905378855078.0275684940908695288961455324545984 0.0268982760826052822831984771216740 0.0432896017821917789654730131654953 1.0442545475185648600149686586166219 GT 1 -2154697420483735549136825136722.8253994380637400831471179521710952 1.4379341187249671296604122418262483 0.0185178710759893875070239813768381 1.0186914733539442169139353623986525 GT 1 -814471260669929542153547303187.1392951732027564814560227491064105 0.7981197344467169377970282399662073 0.0991302077873093940256802198420658 1.1043945465643526043705908846978987 GT 1 -51538049054045939925658033956612543503.6304353048906410563652501383898239 1.5345172227055422290309480475005464 0.0454769541701666319199422827305756 1.0465434917077711234211874781131252 GT 1 -70464146951511846067525922.2770673333153907986983508624814446 0.5812477479825442340118938137136736 0.0987497769616097033476141742823630 1.1039723429062928409377158979812504 GT 1 -364235793917383109220011873661823526994659.8540331257589911576510645401109567 0.2631871617931167714662424931224799 0.0372289994530550849995449023667975 1.0379396934406841970980980530662733 GT 1 -14062144100883526271751608598563184.3777728871540829883058657355249486 2.2997588155946897323178863321375551 0.0221384160226935643227578508405361 1.0223871486391451177872295939934366 GT 1 -78557.7124049699488830295234595836360619 6.0922090702630472164765162719704459 0.0944812271230547399013598745574403 1.0992472698173130665311346297531897 LT 1 -16424935420706072870354631061937.8676525220333805247725071990203696 0.9982638273853633068485911721024797 0.0037263729632969473274335417379218 1.0037333331873349254110493054273829 GT 1 -13427832686936824585832056945.9684046202836371773870847778901485 0.1781773166858560408981070188758535 0.0741750825680488709656918981345061 1.0770701362602777643750124842881310 GT 1 -5608722659697681435491.7599113222650810706058658092330390 0.7147446672583374933957628503398348 0.0196448271925823668754109444118826 1.0198403517441717676520068699812732 GT 1 -3539056971027999312478309189138107057727118.3857105925393265750409273143626564 1.3859391183565046490241066484089135 0.0523742346200866400043061383317019 1.0537956169237228632664542255416527 GT 1 -7561865970284582183115.8785161188371984068866360024277378 1.7349476295401494813700519490787203 0.0157890432195850836800898654049729 1.0159150179355201174865861325247477 GT 1 -390988681199672011410935002901426765390847.4026546834840591241353291626007766 0.4925352971038370341513965334091044 0.0252203796058042667757301427524876 1.0255438638979301922446424641123184 GT 1 -10770194860684599523987602367784032.2255610157506006617328334902657046 0.3509216946104823737958634695616082 0.0386430107442995536902273862155610 1.0394094621393220164725969231795523 GT 1 -24852097937003662.0752599927756344123157776970070615 3.3442140242880252437996305307842593 0.0639108029826130017633982951307368 1.0660445110861696382975360027871682 LT 1 -98789011331026673513192781371.4448431792642258940539950984914244 2.0042617882801160397935505883801950 0.0263259856162982787404665776564603 1.0266787188510261753104259329372629 GT 1 -1065674061554600054077042339408560.4061111503893457410900172125917155 0.0046150894077463917997737007569433 0.0008982491206288451994701245329315 1.0008986527881176147573535052737958 GT 1 -18448297411934775629088331446038652.3823184383199938394933690368574461 0.4149341368630567733904298383084804 0.0077590079243386127119117892449225 1.0077892656411866281151006134480441 GT 1 -72045389957991.7065810626651751960084287923118909 0.6731996117042281365892359113413173 0.0150537699626385014225598625398771 1.0151682280946274964284772503691511 GT 1 -952273.5580100860566571800658668892835210 0.9855467494066092119249098339446350 0.0300544266924475217605919899515264 1.0305153190511469857611422744962998 GT 1 -12501268089250554642173774284723678446.0198607590753716464623866004658510 0.5237187719200402803218352562775950 0.0887285636258508926286154913062155 1.0929144717942300151975091481380040 GT 1 -6167496631068600182709581.7692324740319909446069589625900931 0.0964176115081034124946295906880320 0.0607234106654477345322750995466913 1.0626452858155763386848729976407347 GT 1 -316648.5600048374664601486973614964906503 0.4890688362388324147532940127531583 0.0901765156673722238763955770459200 1.0945046715473360290900938777107550 GT 1 -172.5660838509075622841777538522958332 0.3817492988106379295045636454998053 0.0280934411738346604138753451409541 1.0284956120376525021143776034840344 GT 1 -2246219021742538.3038357135371583072500863740061343 1.0901023677004513188483082816063123 0.0211589184737624453120003179554747 1.0213859769762085500068518014782880 GT 1 -1789742193350809616140776101184.3380230793907093416338317255576621 0.6206141775721658265500034892495631 0.0646979700265817142229479745885758 1.0668857751458064960009439503288469 GT 1 -352052.8354980405501093187532835511097866 1.4608839805264801200969325491388585 0.0145783747049089970370925381304948 1.0146856834107325019186596719699859 GT 1 -82681174364107221511007097008983507472.7377670209328739459043556405349519 4.7361070454980743704745979123277727 0.0601799174584398391273052812767588 1.0620668235892338189908639875064048 LT 1 -20063976170112130286181.9838374351398759674813736812220076 1.0186767316357048506675540934725342 0.0713691547651023592986655628199286 1.0740439870247702897980833633858188 GT 1 -1.8417439923574530781148596715301832 0.1991010614272206768074805315622583 0.0303699634728816229520181177097140 1.0308406858804861645128663166068341 GT 1 -27806678459718117072784845776250550.8012286965830043779418752972992416 0.8578065232327897121300473583719843 0.0838889561179707841476476099456285 1.0876176947099523984652244665071324 GT 1 -14567834850123741362798273147839508.5090658330299130909999842426745699 0.9307627678790899640440037422688080 0.0276082903048549859489980730122291 1.0279965621882509730481552099155127 GT 1 -456924624.1602774502950155021275268345062889 0.5735186074857469204765261439397487 0.0004898444791199888144402798068291 1.0004899644921202549584941612266515 GT 1 -147937.6913003324042897451524194693848955 0.9166319084096080894429571078527209 0.0568145224547603098943923316724992 1.0584923268821338633333281736793859 GT 1 -7812.8298350489512951668108653445684674 0.4432087729280900792943585533999917 0.0079023531440881711128817703737642 1.0079337422110487989271960487839482 GT 1 -2.7881075648184688799196616124899783 1.4356682591588473449116186348146329 0.0534792095628765474091055496884662 1.0549623429774614468804608585846189 GT 1 -5379.8583984212806335008750379308328956 0.1202325208785291710978985996090198 0.0777075905335477677012617325581063 1.0808929587792614343271952483363553 GT 1 -2306478691974.7877485496223146579839272435004064 0.8798656365288950860470594243852284 0.0169138514071089924253408519442442 1.0170585242285136088418539941495509 GT 1 -18213442515228509025042770964.3345338548341585762186879852881915 0.0269144097851406520676957939191474 0.0047351407971278982838980222142877 1.0047463870922170184552706487932775 GT 1 -94562097810883799613122027207077850.1501117876262173653886693675915203 0.9139423876112343499784524327175809 0.0112205904296006865764968753721781 1.0112840161500574694640150480731011 GT 1 -12805899980298.8208215114800381526047825552724294 2.3624000582253108565725804785424551 0.0978411077684287657986623929787480 1.1082654753450670987403579016384731 LT 2 -126895857860898524975312820445.1705806364831944840550206658877360 0.5467405971101293552759765214114899 0.0056324346241856474069584474961164 1.0056483565985497889800765111640970 GT 1 -178249972930289933346390047274111716.9561965301654610304622170808270253 0.3180828551657506360188809470025601 0.0270160745627144693072222950243892 1.0273877175520382573547244469768004 GT 1 -12983677758.5965031692981289571284766303531033 0.3376860948805598856114889559145517 0.0717645124744970319826706632646393 1.0744698202777015897903749693303491 GT 1 -189835783428825317357997413016005835821869.7435213454070009502392571539822314 0.2949909313211674551257339098611476 0.0765649727195501802884571833019023 1.0796548366847275150323930527726546 GT 1 -359080345739026.4688372406979530070307784290834293 0.6372258058422720067826525895185677 0.0522888861310677814153566980995310 1.0537055553731763739155870006441562 GT 1 -33897592984.2578174146146206256808298182200083 0.1611161071353734212179211447333169 0.0196082949877849882603236999861626 1.0198030881838266097467734843954320 GT 1 -159765819.2176813614579581358042976461643446 2.9226468936188422507935263372698924 0.0945922249288751730382040248905717 1.0993698565738937843958722898503861 LT 1 -55870884546.4538666280731756702724350093199382 0.1788374288033746350941163268132829 0.0151236208978002385944679776530278 1.0152391491358084855761131683085472 GT 1 -321616132711346509049195736435398404473581.1226660243659411021168202859339552 0.1071015759401662101716714269398319 0.0374467077577898404527676144795821 1.0381658457896448569319338056663440 GT 1 -21964586.6732855134747266532637035767987368 1.5409239685312807551128761672648348 0.0837526836231784833272413020399990 1.0874689547058144671952957697218754 GT 1 -60951355681820664995426801.1455972356666757275475860277930587 0.8473327229044347647106086011963944 0.0566684757025729441178790148402489 1.0583374947207099497229279116843571 GT 1 -27593112001706659644492592.0153131427871964736235891954232420 1.7597052401463076772432211226152021 0.0772620109410824037023298893469417 1.0804099536195805125466445972972431 GT 1 -474770302311302177.3682063881491052498061399204514847 1.8310948182592219453218379677828766 0.0321795716319356186413480702204403 1.0327087167985068704834323601735572 GT 1 -1235110761820309484748.5672062377020088003307239047476881 0.3359177203545310723560215565112330 0.0636182044756333113592393740489019 1.0657319844723777889426274529438793 GT 1 -257966987757453396065986856502643.9495808248054242157584196674066496 0.6045720663460770900907593387849642 0.0563070969737756290151170519913982 1.0579544803537706619387256200122443 GT 1 -32391971251734001653973433.4761750320867267184198068074381889 0.1550062237787765892535287499315640 0.0842127994501740564582712421329843 1.0879712551072737145445931860660438 GT 1 -21789293516159794203124383279.5648589971754409024942798710056942 0.4991606762652571330931618633342339 0.0685456667776505396650432797975893 1.0710081151316842139046975368716941 GT 1 -90897541785449522963575118711.8998563414630048258235766535871131 0.7919209037605670929973911438984912 0.0265264321052713179020750411928766 1.0268846061617831334374034990386393 GT 1 -6098697376402160695508661505058331033929146.9144868426285224686687006430362216 0.6794313253066247773982324750091187 0.0422941292437899019855093597965316 1.0432145724157035212128454486393267 GT 1 -5213316313641017291840652191843644908833.0941785656955006836767262427785908 0.0781960803481508067908860510225107 0.0838146091689588122935545412586874 1.0875365430495067830518102561730872 GT 1 -43434551457333.6820863069676483670056002707287693 0.2644936862945622020345324846991123 0.0174100539811128659951578853290554 1.0175633913181667107159737479313638 GT 1 -2719882766551350425768768960480088818017690.2568646072865377061361757873248970 0.0253901596825581175235427470869636 0.0804640808839060226476043837828285 1.0838861719529384306110667298266393 GT 1 -4.9601301316492450519064629954881057 1.5799910254358507216022249567480098 0.0359167647084127515175954848458718 1.0365776444355187425164730197445915 GT 1 -1246271317364529874082.0841111826889317800463235260245410 1.7328766887125248214133611299221039 0.0808229248417998582438900484739289 1.0842764927518527793585248680986207 GT 1 -247042734757766916396596367045497869433.5311738742096881028409690407061094 0.4835201883062262537974177683742722 0.0120794584773839284935966258332953 1.0121530080285223402247913714395374 GT 1 -525572.8826953217398014972807078072322499 2.7268883993938615590071115619283372 0.0963266000401591488963715377328619 1.1012872670987344962657830774459602 LT 1 -81035601391.6008032350011407276131773123756699 0.1159621674623263874459377491724236 0.0917451603492355998517794061874502 1.0962302793502776425336145637046346 GT 1 -30328056.8828934135681975868895026749407010 0.3994397802117521753935930610667584 0.0577823157731528972837797989787090 1.0595189438126823622390755436119008 GT 1 -1485325282.5636191214556023145541116293291930 0.2986228335228830704287016066051312 0.0635489345802248425814736116142736 1.0656580110849126250486431836582464 GT 1 -4286364018614615434361970.2633716711098750111533086496949482 3.8896989257021916446425972587845208 0.0381914596629930773108705383386128 1.0389398706427440108875250788941163 LT 1 -551.0989230640392066313163627094786450 1.6852108474090695049569172800280650 0.0448863535814697759914658047160338 1.0459249440961499120872734094722380 GT 1 -32699895526184494995438518499045295.0560763932723471563544072311534005 0.1643556612554739900807635163296993 0.0796304100876121704440834347531560 1.0829799614445671200921147699816981 GT 1 -412095538627708152515686753725125.9305102458682500290296113564981295 0.3519414661989076724312478248810660 0.0149844804102575318861180617619388 1.0150978820054989545960141497323102 GT 1 -142383052187626031631927519644723799.5457603517293489393654875179040877 0.2627529838859002136747813584011079 0.0208226883657273846824710448097885 1.0210425378006477791161060649098572 GT 1 -6156266.3469797666905886733728039516556348 0.4517835033753604234269452948887456 0.0975331535678804964335790424863116 1.1026233247051263297668728654332450 GT 1 -2126059371659883592513917901333.5888641349667698221899158272654475 0.0574399066412766051379468346122071 0.0857125366660176796267882200612108 1.0896102456699737930903931481166252 GT 1 -10264006372388122403896297192816130983067605.1544196793634502854449710340219217 1.0679430350615805765261285818527336 0.0823842604238978483608274660110243 1.0859765603322841340378832440448561 GT 1 -3823873162118124090388722105016377.2201906906766183509727173197820521 0.7310287241202244796062283300048075 0.0496206668847109174052729336010044 1.0508940760696947307407675351566957 GT 1 -1727879529992138311.8866711070223392336938779887475338 1.6382572857732675730496906069489663 0.0371157113011571815966548434281558 1.0378220315178454793777041670861626 GT 1 -9.0241316551250142299435759626357382 0.0695619282632362482295689951815160 0.0235714493263594374880776017289031 1.0238537001353649585398100970130299 GT 1 -41478245600.7354630174105567572981038301321024 0.8830625193470854635085040253335936 0.0338310520600194036736274220508291 1.0344165657140465114209393270169742 GT 1 -226302836527318478.1778155808913924002883213294396327 0.0522836744840994408936971812651275 0.0143813621476806786225173493421516 1.0144857762230733085951004226903894 GT 1 -37169056275863739477840305816.3422963855354729907832878317809567 0.1018188853947816704823848813920346 0.0908240816521067244154747528998147 1.0952166739934468528605906314660572 GT 1 -97559276318524453664833.0840925112125827033348089678488658 0.1288947875719708048234968846629327 0.0092334475023007045614735383509070 1.0092763400133547266505742637174062 GT 1 -1363684694989937766694812133987499211003655.3425205759149065128493188913984004 1.6670038273687387236422500241616788 0.0606859585287228024257170495858188 1.0626054132258638809901843917431348 GT 1 -2864945246327.9061782507117217620802845605135167 0.1490409294215926693385721181923066 0.0310066712665314187435555896462571 1.0314975518070533093063967135302138 GT 1 -27938250163055404643.9456807174983918452636179495688949 1.1744614544170838162342385167398416 0.0229943848957618045502912737103847 1.0232628796639168136741237847884614 GT 1 -3267725305693246371240967573391043173.2517913451121108635616827856316841 0.3610273380163222390597027422457989 0.0943814958826840334207564062680689 1.0991371387502334675617265734017278 GT 1 -590741803947424723534.9962692454939526833743836323205593 1.8220882302889059916845832130095343 0.0421386019678013068474497793421951 1.0430521899414730945514920444953185 GT 1 -45369908496202648717781151776180402.1217428626870185100320148626148483 0.1406382665465599077642271955448020 0.0464680010499248010084783969640741 1.0475822950395622091022489752591833 GT 1 -26298931464724562018977962721262873725.6807385373115494492662621037700143 0.0717816331153952091134283914101447 0.0934479482186535702154465234130730 1.0981068298275168417633123608391512 GT 1 -2.0097031325224256887870871573591189 1.7106714094639964883721108295117272 0.0964859488659158371093570611844818 1.1014636171791572014487493831120923 GT 1 -11512580600597658896412619399475918337538514.4401299528046956680959510690210486 0.6710024389409324869446316364824146 0.0002393983565388850051829790749630 1.0002394270168996952141481621774763 GT 1 -9774063069806.3638326894213401446037914270166759 1.8152675454130967914104582935197917 0.0968493850710502867716892511852130 1.1018659455324634298978331511906634 GT 1 -821173051823859933712707.7283904140954651427688169565260087 0.8824571110659657595413730428678032 0.0063722483758562957733943967710535 1.0063926378144019640930640501440507 GT 1 -1942780926494337789786403043906607028831414.4707946688088541923500865213390368 0.3209118584164322347126921794845781 0.0623075821545836529599013394188914 1.0643332964958111811281124392594672 GT 1 -464873.4342172857751821368332191206181847 3.1539788810807705530974033644960199 0.0924261091083862978363756439988397 1.0969802936876628600081252665586895 LT 1 -168.9633247683426089956976316733482101 0.2598643982231223427709248917316159 0.0179924546450417751903130676091968 1.0181562869963367453297085436173856 GT 1 -16821894.2572003026006248124571480894331792 0.3933920018315795375093117723440971 0.0728161091063264567157759969181796 1.0756033610358307621360997742063899 GT 1 -1476330682111186430499077.4423701263902496684434428199315530 0.4565563704358695795743089369189432 0.0361783458801110580227088379640512 1.0368490075870312119196235102255884 GT 1 -237402846741944640683841810322.4270507733192497361011617928347987 0.7551450813903619487060459236977127 0.0875760589686017296939482541122896 1.0916505492938440754989092381101218 GT 1 -4705238656549919461769661034760702699.0586244224777945208327001040772629 0.3898938540202434485872968749250856 0.0880772915557669696425230294981084 1.0922000420121509273599345675879644 GT 1 -413789.1909756487549140528354897029279605 0.6203477628724594991597992479170254 0.0565291009375429325850337210855569 1.0581897582502051863868316873770852 GT 1 -21415820973351981079615076382110299873972229.5965633727980435452108695870935162 0.1111017504090809152698586704143843 0.0867529653422066133636812822131167 1.0907488603333215600327301966268031 GT 1 -1481698076756382905827453536999866961277542.7881698299232055187929299637545357 0.0921361002760044174197154822348473 0.0741150818103055698705294509652411 1.0770053304720164980561690164395626 GT 1 -121088519564799259761830730945022972664759.8119477982021575523772445345920841 0.7082383511401687966124051984959817 0.0852353027012496979261206887363477 1.0890884082004150306047141954279562 GT 1 -261015668249156199.8580956827178636170190781073138176 0.5890606544066486506811645414601942 0.0184898964133999065970329267184708 1.0186629712925217976019420284654729 GT 1 -21261853403925476815965457979.8310072412923850795218929120350590 2.5621911983885572107986262884649061 0.0727569886336630727506221211086565 1.0783927151402719027918017928980579 GT 2 -5551230230481698795804520670454101029398.8569658865504289461998963277840858 0.7692435371636745890613316697731495 0.0781406799299842368027182662830009 1.0813626483362126432272568967212925 GT 1 -762491890900001035.8270607334382516892565311564016480 0.4343510677467230577970276160286079 0.0840550389720300629869714163301452 1.0877990023272622746597196906043596 GT 1 -736756868255101097437301899905445546973.4314881314035881860695545030123879 0.2533834855291268806638493342970188 0.0315825727160951114678714676371531 1.0320920581240406794438072262675001 GT 1 -442209948560862594896966983058244893010.5444611896770047795319044457103063 3.3813659266983874044166695750610653 0.0365403012920207561306064388248589 1.0379174561847917995797831510400495 LT 2 -1307729017546721242460700473430865458.5663539446568680431876611328381675 1.8481702229425907298754228176496439 0.0869712816659005067359550960847846 1.0909879439704734725054264970739895 GT 1 -4518115922266794192917096047.3378076951508922291650217071568956 0.0176528630895401381840299731828969 0.0210952595334217303243049463896119 1.0213209440800603139304004116879250 GT 1 -216304.0675429082878106056724334209914797 0.0093461684362538565351246873464286 0.0524199154638514868239283485413877 1.0538438236594457573750493060837215 GT 1 -370234542321395162.0149732247563153480232626970002205 0.0957597778817902079190658273735782 0.0912462434257786548648802423689183 1.0956811163611403238415055746050116 GT 1 -238950583990116090537901504418391732160996.2061404127093443941058981118428449 0.9222995311017668358091964980631890 0.0525551130730572398258456615665259 1.0539865105490340789685600378864314 GT 1 -10826153969796730834995115901880789774435976.7576284285346810941352921130661436 0.7859151551529969928994676397333681 0.0322958176648119842076309672661536 1.0328288351709350044571619095003697 GT 1 -236789990494564270315837123891837738014688.6637874732498438799674123636168268 2.1343829027333760622216334679776084 0.0249221740903965649949892227655182 1.0252379897241048468378665467294389 GT 1 -339843041381727.1807516914347755415172500633733694 0.9056597778479813456041753057468280 0.0793686024005295926851539104269035 1.0826955425978381935979150314676375 GT 1 -957130461316422708666658145776433598.0806990824074408955659222030515949 0.2543135106601273572518433267751346 0.0165081187844449364823743499247171 1.0166458961789057218140101302000482 GT 1 -13215059141.0686702604200079519878913391850883 1.6605700809862623567828262050821697 0.0677355471106889421758268669465616 1.0701387568100087356776360434381085 GT 1 -37376676780111091.9903374399024789988448065833667817 0.1936941697433729300090320173923618 0.0871000278081661280651304131368574 1.0911289638724521178849115073025972 GT 1 -733529893737429966920831676280127126047127.2996840489838519099203048063450269 0.0263543758393727131664782334960424 0.0031078271503384501747771429507917 1.0031126664742591914201193662810430 GT 1 -393264029303505.3168544514597278586965842771532637 0.4294209458169743687633056602745907 0.0029574420078698186590232190921871 1.0029618238810412164578280702888119 GT 1 -9205.9023626158377697671999063136189953 1.4533494563158389613100929500493505 0.0827835764843149325996834433769210 1.0864118220142556438180619314547861 GT 1 -50412124086665578895742883218231.6598508688505031275283654445089285 0.5476851918417238161444466193362644 0.0990576253428599192237472828371692 1.1043139805144353947766653311968678 GT 1 -5090764534391830587.1302792263145806468712556493013564 3.3001944857898439024204871683220771 0.0846588883625657847952680717890329 1.0884584835753690969406320684737787 LT 1 -14707929558703.6183178038684958122071055297658821 0.7657253443621459638411691486905342 0.0545271129962487693242947284879715 1.0560700671237095016130199191938461 GT 1 -10454923784390735171584.4858858512463893291839529821386630 2.5741435317018613317187111391514971 0.0039587084162616963976069884798204 1.0039665648434817593839844651904433 GT 1 -3.4956608672415413036146414850656718 0.0469032108922477402261365114173996 0.0639330265493187581683184195505187 1.0660682522324023737977269955018344 GT 1 -576405802774324569.2140628531642921652559748131046230 0.5840289507023973468306839616998707 0.0949221247640171841990809110273314 1.0997342889997870742841150474256159 GT 1 -4664553956564911.0047430923590948270577840173097140 2.4809629752198894263082394459329883 0.0034418679672439860022681707420529 1.0034478048212889131962308132561103 GT 1 -452713.1872787335471188974115946373479402 0.0051752892366562397340848999754512 0.0211757922115699550216738338378854 1.0214032156103101278835107818657154 GT 1 -2329.3592170167950200571003846299989362 0.2675304436865767578336564116830544 0.0585312118860641300409432356123349 1.0603140826676509498173620210322191 GT 1 -106817732444294590.9542441191485975639462221302477444 0.2264808207983251932434312867204640 0.0326140640734828729657386629318627 1.0331577567116289440233683885033545 GT 1 -468656343.2728704019983674129490946412522749 0.6384632549896431984321227417645506 0.0452193524352221617522419517266658 1.0462736532976756295420290906053468 GT 1 -389890355863364.4306406590426490577706135725761926 1.6356133789212244758475521284477514 0.0740715522632928224699535613972425 1.0769583175841934441898639555934094 GT 1 -585969853886464533508454442243530.9154974259661042624942927306690631 2.3655427580044999896714126634155647 0.0023531963822398109976029616926923 1.0023559695001614077149836105825031 GT 1 -4081860901.7645275387147925022542923076232491 0.4299269025559110920437060754732792 0.0871803641313059115757512537668648 1.0912169689777672488912109508452872 GT 1 -750467541728336396665017765785.9726714682536758767630817180481189 0.6533951283670135228502479400472232 0.0104167620478464966798018996679278 1.0104713962524922982009914179795745 GT 1 -178144282900884033769927568056316053.8828828937803676399509060651106174 0.4768370362057350228984045904698487 0.0483896348063141291664844273085173 1.0495996082275300694661784391985438 GT 1 -6980120114011310382123.6069968423770973842007146326728866 1.6698296991742769166098073002125372 0.0384750975075155272095786596694869 1.0392348146605232304626281717551377 GT 1 -108819371706535726.8202810660537139353779049263875377 0.0511573936582832972684713631178306 0.0082426142954468788824627233530755 1.0082767724719404797217869362342290 GT 1 -92464512.0764081716575824500037371708314895 1.2370853414158944927358787362444514 0.0164727668056049188860949749684258 1.0166099514556594218068887597830481 GT 1 -49742122.7548572696611631218209987313371171 0.6747592552297022945785383574590833 0.0731694727712124326884261959575205 1.0759845486530474459913330331757619 GT 1 -2.4579083096964023252097525613461390 3.5478963518732537406777946167686901 0.0779814382523422101583801547287233 1.0811899235808389877042940780366588 LT 1 -217753978348.5718533586474621971361624407216915 0.5065913403609742908146139894173738 0.0080367130366982599706944571265928 1.0080691814916931109184576024183205 GT 1 -12992048409600256535.4331553453304307073036407197162963 0.4917775883715371458744935364521430 0.0629625007478751678100872656470998 1.0650319769979575868127671651276332 GT 1 -4491051.1656422600795999080083134282183049 0.0317372811488425051169212205167611 0.0759967703627042885841108505227048 1.0790397120681028020361368919137678 GT 1 -121834783382961595495571.2508806517936560227892917524304832 0.7727290825902443998424112568716724 0.0449021237229670852069576006683513 1.0459414555047664968341787206771947 GT 1 -93946590265965364.4663682659875077835559019275766350 0.6828254408997503543182995663437774 0.0097703839735020522598701291547859 1.0098184273660526126487646353215662 GT 1 -759771015.7787561721641648440011794373018425 1.1525565082149754364214381702696550 0.0010253398764530503243091560913042 1.0010258658969814617501013528812954 GT 1 -170402143590577472850907072913.4818215425496784098569683267398249 0.6119421302023482798222565693572136 0.0942551701973505328822956941449380 1.0989976574179433571089837336334054 GT 1 -44376902.9764552202155530603327191503094215 0.8247671617884858328155887606788088 0.0147999990427357115361429698573784 1.0149106117641095757267026149860696 GT 1 -9263983450625254875026909745174526.3572241618702575106142559026730824 1.7269175615428822399492862346589963 0.0839252028475077763057902781529918 1.0876572613616859962224366643865087 GT 1 -3220716205026420.9848589709298766862536866040312196 5.6011912449092372550080684705598548 0.0447219429125139503722442805415618 1.0457528216261245261407573635428813 LT 1 -292394182131544085.1765605820417841388561256055808794 1.6485903385957078429039945547007548 0.0975139895140703113276352242344351 1.1026020897418557346676066136602462 GT 1 -52.7971402269027312083936008700224333 0.1879211478836049133404273743294252 0.0819295885353604141587674486057420 1.0854811903611402403509286153584932 GT 1 -673310941681335828766.1884026087780902012563786185714719 1.1931473611263246611260985196231448 0.0104317006036530608791467707314969 1.0104864921716525473473920356311726 GT 1 -709846754698971463.8410839608406897963852609924543328 0.2711069459994433137509624375889553 0.0597633289251918952916046297164517 1.0616236576696256516855665581952391 GT 1 -21.0106743926502154947601145878633122 0.0242462091207347424520352998566038 0.0570044606105586311992739492470417 1.0586937265937575320213900349056310 GT 1 -258578849518433450005125656690185562.8680140464701928920045885813416841 1.0693952240788876928167907260902537 0.0728656715730255491303785991050987 1.0756568173047650689876664807059277 GT 1 -104282761906668816570144091358332.3428247144446651302694315142596415 4.3780600404736849114818673268756956 0.0313015035074531596691745952659350 1.0318018646388036606582852252963691 LT 1 -2547011926654326517619024593910926704.0330434427344601018742988426853224 0.6406480518974923898717730079244888 0.0664683037642168180092962743818135 1.0687803623874134525739617768877214 GT 1 -449542729.2888432116175236726823590649717128 1.2376026301503688507072362647039256 0.0516326091633027328661617862150603 1.0530133087258524961399250336355890 GT 1 -947679332739663703592837155089.0508932861316813077050439492511903 0.0753011017681201391507036497046602 0.0009531677625361188740998085714046 1.0009536223157945174808767902703970 GT 1 -9609316562332467444016979027820765255315993.4929157534017885717298625666001803 1.6847485341615582754404415718470941 0.0396721716443247162628715567539388 1.0404805649434722038004593289585870 GT 1 -4233307634536426950211813340459.6984030446123648295816437397109769 1.2037334308799661638133799953041684 0.0296900407992008441297500031874896 1.0301397129606857328947515230921166 GT 1 -49059829492055866578821064239355979.2842676340486581565315724904190191 0.6362977545320121053815750735549320 0.0364944051708282874856601689060961 1.0371769843680607408104890861363873 GT 1 -23.6003242570520375331823332722674798 2.1822462923622936631431618440175141 0.0800043188200739981666672855777200 1.0833863033197152962444893224521835 GT 1 -1703050804421289144954632338.0230203035867841546625124689998679 3.8498808966687057288000824195805739 0.0941949054316193006821134135124774 1.0989311234903460952165241648344983 LT 1 -336867112745279.2827546556036698076999489041803315 0.0520470501339483974383384224456716 0.0188264410915512413725789350100592 1.0190059146693693200488500371666251 GT 1 -73971751640511566120725041714149072629.6908103937139453841309282826879409 0.1507943903469553071947047072741672 0.0589059624089083946537118241537195 1.0607122107116953065329104827456084 GT 1 -105089744411524052242358350061965.3511824060182984290556496437786460 0.2946267697739208959163981279544812 0.0846270733823258569885717273118458 1.0884237266667768034685720265182099 GT 1 -2743031278337922985075563656292435156269.0765502419641829665318169310160732 1.8165302235775800815061405633464760 0.0816583615878880718690897259770596 1.0851858024611722762539360408154916 GT 1 -364941.1150429069511629392902615870198280 2.0341012411150757137778407838490116 0.0546192148550684327840949891712471 1.0561674854065191308273523524972711 GT 1 -318208677293837.3200048013458906515882859595371980 1.8700453603253372890877835766409981 0.0057674028733971581424685072331785 1.0057840985661546911495061437332253 GT 1 -1124576833840436761733605329753043420.8899091061277051899874806303868983 0.0279484008818921987813146480797284 0.0345474729891037135551080505924474 1.0351583476534431451978323486105956 GT 1 -729130662640085037652316359848453544953.0599641223362398214243085295525854 0.1617733474958700281166363268255280 0.0501400817563266253131482947046036 1.0514407597403750467395085135504346 GT 1 -11520223815138042129262.1272763873210369626361002250726801 3.1786037431959561475597762421868037 0.0541077878636565875854041061001563 1.0556266570812452454262427980609410 LT 1 -2200564973075254346354.6197969318644926393946991312608230 0.8026594753942288647738319653294605 0.0363105084822714815400398037040712 1.0369861404930241564528880245137421 GT 1 -22555515130069952786895370443795121.3718895481981591341666539945405632 0.8072603413570738272606576413790112 0.0449544809418307273805741693986044 1.0459962757020402899644314733708582 GT 1 -99437123418124.8564647516145320042623532346173062 1.0273802665783313779138586862282338 0.0115920351746310008440010347476092 1.0116597465984816311616743476378209 GT 1 -91893373059492116079092672182706133.0320434125946279993247298001062307 0.1799118231502184479243642552693007 0.0580708285445566911266866563838612 1.0598251967703949454897737165349113 GT 1 -566232.1066415243262585087053943372599131 0.1976933977226760998803868263880924 0.0590073281142151775412071847755694 1.0608199270086059497839727196116730 GT 1 -199735540017059832848976249385642856746396.2762452653806585630618575466161810 2.2123107225632966088945456239014314 0.0743060538220469575311417474639919 1.0772116106538588065309472928460102 GT 1 -135769260415203622.2546017818936013462305665109072846 0.8779670378583368767476251450278165 0.0466466521203738126144806316195070 1.0477696697773970991376351405053711 GT 1 -347727304.6847012789467222196863037372678993 0.0995271900467055620876045875982469 0.0905560252504735971341953446118968 1.0949218829768174289021544268171989 GT 1 -177887218258516735200.6420347664346315160658057863967897 0.4398948573240103814565565631129709 0.0391522744950859681649558758105703 1.0399393367762856589485322139712608 GT 1 -553120607993427035819183707300522444829862.1100261504125950682688464517822491 2.9157078273833791990743160811117326 0.0294585699446903703517565090855462 1.0299011878918532984348461478312758 GT 1 -1041534512223110779361561310418.8411959791092938854815411833383991 1.6582125881677291328981718091956688 0.0741960010551253766323442696606841 1.0770927309463861751800919852770257 GT 1 -48875786916030058932788792642122.6555199443893304773688417147449309 2.3727728996253394696553746819930778 0.0692710479721516589601146480453554 1.0717871804760414429109253342957963 GT 1 -7514874184.1816066942195177720007152686845614 1.1902364093920619331640257750790494 0.0858397072709389334957276554094772 1.0897493479272897256924859191483792 GT 1 -26.7858517590499278053243831159571449 0.6233482549814791572396604717613788 0.0417175783204065807625367396950622 1.0426127410338920729261849253168323 GT 1 -169499717636142640496546000968058627882.2094005232385595285632086969277300 0.3077878276494268477345217076372608 0.0096250506436810646393115530940881 1.0096716708325961324154208044511060 GT 1 -428439345418884594465826223743114925.0017485205756641628557955470341038 0.4190590858235931093019472178803148 0.0392151407406781606945516611558480 1.0400047668133417110145267045975657 GT 1 -661893983.3846514549120074029049067545785176 0.0885577638421439226680472334550631 0.0674933455739445301719760242552404 1.0698789913758959766805740135431352 GT 1 -2117195.0249504164272565261840920378796322 0.0854188085377865617304932555062185 0.0124673401501407800358155746267028 1.0125457094880882880610188999999766 GT 1 -510238251122947024053.3230700047728284594862965810153386 2.3252830364077236386619947738871889 0.0070509599275361689398289638337794 1.0070759354155055349455307163774795 GT 1 -2780016166767731865217589071002735.0761579156239413164540160334684281 0.0535556985095149352982161858749222 0.0204390422247768841220544346772664 1.0206508099706993131570073766086936 GT 1 -108.5293041559409812745263178586627621 2.8581185088090434080775645431769832 0.0899205401285089194067047955288211 1.0942233647431830545823193138236466 LT 1 -5960651296720080932432857.2698462633464570368336408925124392 0.0697130109285581441995904202090273 0.0872360516633794781136829667348557 1.0912779769015595521099607225845422 GT 1 -15697550.6607337787371691451045635847977615 1.1157470276696567465020962696479896 0.0259390311062824835383259105408049 1.0262813808985541989735725095217444 GT 1 -1220892183798140637138666528941672447.9712366400792435431943917398556832 0.4970948502802007145995304919146179 0.0829314029731415752672224729850467 1.0865730036054381928750612032102104 GT 1 -349029892.0297090408872991296102973319318312 1.3665413749053721962539363350270504 0.0909730650866151551153149058416575 1.0953805538757984115269914414150495 GT 1 -32211134036376.7645054667703274755849649539088179 0.9270422441149563987793895142026552 0.0332128594686182820587293674588049 1.0337769313052101684344972595962373 GT 1 -199.8966229225662446803931474680144245 0.2388292785084261529102362010274732 0.0939907350326722066041229765657029 1.0987057467581916541597507061243311 GT 1 -6483215655299084754.6766024030859567248056325379656282 0.4536269496872364393501364292079086 0.0092769102304251669816322957189809 1.0093202087545324008398937687319356 GT 1 -2851488576103580029600797.1469029910476740710259568583595600 0.0062994385358666271167964792288206 0.0430792191958955020183574434999110 1.0440346696346233910219236323146551 GT 1 -1968091165261538570.2858992120341148554163519101515861 0.0288223297164984468399862602297339 0.0820068985198421506115989596226991 1.0855654031173791904246881867390685 GT 1 -18260464664868123613216344066161186946.0477440149128103494012114675944689 3.5420255066865147313845308339948281 0.0513273509510274403766988635972426 1.0526914829251399614720063138944264 LT 1 -4326066720362244.8030146489984335197931583505583402 0.3420564653379253656350074111807811 0.0228754663460899514422032081145839 1.0231411697052487852188259741198791 GT 1 -6311197.9048209930229929413235036512312859 1.4943494298728285700269120356166532 0.0073801460394237172659550647528490 1.0074075140536407519932365562279875 GT 1 -2952824917637976205882813588327617701.1007068719710088429700145832686920 0.0709766573118534914649162211621494 0.0796001075518858010604077183681564 1.0829470376743509294852174216471762 GT 1 -1.4368939102124620864678259041456109 0.0557318260720312560921210354431232 0.0404317380553246835190087169991707 1.0412718228187990109692181166270497 GT 1 -10551736720318730745038903614920300175.9292907426987811481802309475428653 0.2821218779882146814554508813414892 0.0661013397143034748766831324123731 1.0683873474047070976278819443656050 GT 1 -318768037.4631235590370819307048062047539882 3.6988304531068985660474599029305208 0.0030698941198856618977730960939982 1.0030746159109145673324916967158448 GT 1 -545556510588823297782459.7007720466466869001216406929192707 1.3950445619491402447840028379926767 0.0142641068479687030182401211133227 1.0143668171033349495662624860831265 GT 1 -15729811.7436885704717123256870524592964980 0.7238651210782728345987065247767087 0.0862136889333383454180270576289807 1.0901585301942561937667035231242001 GT 1 -6831740.1135776471345229558345284379247912 0.0567345619267143124096938455238728 0.0635573590057705854352939288369766 1.0656670072447234557061413027856051 GT 1 -103876072163132510053472094.0145136694555765742828670333832873 3.6519209060062387780288653091400516 0.0171214213064765432466341721250778 1.0172696876306417341456696219686535 GT 1 -253.1883718665761135244361365596589165 1.0665590144519563248524270471027587 0.0672439508012990201382436458154566 1.0696115815642410222169923606826926 GT 1 -1.9829794279284111280476546491537685 0.3074895750849754777185859593378778 0.0354326036826477289660728159795742 1.0360755721285902526439474191555439 GT 1 -2444.9017524726098144483718275626538586 0.3265543936106188180521394484028622 0.0846844022357371408096034747054088 1.0884863575869650192640816513805456 GT 1 -58537409309235732786974.7576770395927079428513122450643873 0.4190111599695295561321229642119320 0.0913771451727645272415068190505371 1.0958251720801267168088335613028634 GT 1 -39707708739127.1671810699904065406122009262228437 0.1927908694337752122082625945425704 0.0669975833272128867465533536680576 1.0693474879207983017387863405960058 GT 1 -5055998807411520872114042408.9806717487395910867626524073321412 1.7514611487424698924863038040409195 0.0245678947182496530248730709578595 1.0248747212573541741414383466463369 GT 1 -561201393515165857688436074687673384.5094812086794962022337730020551410 1.7568710177708869781589256502756363 0.0497693994239620292732599977600409 1.0510505863950573397196145434216483 GT 1 -67.7656255140370126476299571387296113 1.0986874457624496214969034104344946 0.0953509910621295798376216800679643 1.1002082459375891884450453205944931 GT 1 -19260758066273901462969.0071507356347691261447794172585127 1.4010694612967175079082640721923448 0.0568186392711686555576002245211697 1.0584966916921218494189876784333230 GT 1 -1392400975938734.9228959386310334766794047603972892 0.7963772200624031077196475336214999 0.0788282478647333581309596934120104 1.0821087757097725255034757878379445 GT 1 -1265873808.5714246288799605114409910905012549 1.6531616654791815307300667836014313 0.0411877520862814883839614872359247 1.0420600022922764911568542912784974 GT 1 -27539891190138636177540121562401518.1705203536797281078496098711244422 0.4088493844572415165137885770252252 0.0649030724496435776468957824267092 1.0671050892371226023050305572626813 GT 1 -1768341814549503460258805765013120481672.5056914833960354791045708268092380 1.9025091581902193432504658011410005 0.0457690727140140998487042487946495 1.0468495746815252061682373724968227 GT 1 -56082267243397016295472847359384352055.0184626514004280933357733675135112 0.1347601784843802412949325123907175 0.0479406455929403263986810182770652 1.0491278990680301393253660726187809 GT 1 -556804256374134350466595326922414.8647904516034457155594329612440631 2.5083499929187622582483262772190666 0.0478145464713474716005585316159335 1.0489954590358959615175122544848648 GT 1 -4592981177951452.6675681850124742045970664718418458 0.8006544739491643572451543875471449 0.0576399054322852586344683257640216 1.0593678114553542448555004451389917 GT 1 -1584610829053816930907722312447766552323959.9547730320839155403958125429666754 2.5458048597874228114913210136637177 0.0024522586206312639135646726968009 1.0024552703314725689162466885602085 GT 1 -4433941.7243569746990668262095604418703478 2.0097949930787334027663345649049408 0.0358988830294696087433039450512553 1.0365590967495335545509982386663925 GT 1 -497631455170125257822890.2278028657789677955473153282083862 0.3496249752112651633861433041791993 0.0820155680838351461481398225654565 1.0855748472024350923815801703541995 GT 1 -1104146076131784102365915455597795593.9526604937779873517236471082125912 0.6730527748843608917898239445447757 0.0404399464696137475257898474019564 1.0412803771340294463543533935362089 GT 1 -64708491810863843.2455385680434956068144649788490217 0.4857533473313463285839956396719999 0.0726560640664214630324995120959662 1.0754307618027676281860266174391327 GT 1 -3.1340663230015685113191181486739753 1.2945906267429961094525511087986841 0.0913837098006689068172167182138895 1.0958323969166842763933678221928390 GT 1 -8741989420836203333.5518594146096226956327849813525968 1.6904780701935277908323256431967695 0.0381331813573926009284874277717215 1.0388792800598826505058656155941366 GT 1 -11805054397882550229021472.1789853986295116278833480463811101 2.1655785098695203214689699390928136 0.0973054103527493296472858987835312 1.1023710002184763987596384120797234 GT 1 -128933715939107326401262728909149746747.9168780627440771895706532398871907 1.2263739302977024110345500964898039 0.0117035052762582568338175628116802 1.0117725303797969649466951055449984 GT 1 -12108572.1040713464178914693615661363543391 0.2279579014609150984652570028665839 0.0103635289235413698037034012698286 1.0104176042211426411757352626438074 GT 1 -31294429821676790854178.0085840474580987477651748006844048 0.3583870571959884764344078471580622 0.0188846440485774559299944718004110 1.0190652361654064508400921300605382 GT 1 -56669394091897288702645444767889469350.4674220929950883583386760916477180 3.5833017420651483134087107153223100 0.0232439900547265794238097503371152 1.0235183920633032419110208531615391 GT 1 -105889252792160498922.7519043554353601161198566342036568 0.5129010172585652168797197426580722 0.0780986696790591575840611488755607 1.0813170781577586869010417988967571 GT 1 -3763604288.8888514179258175148776529614974420 1.1556543951776444781208325604854635 0.0734399244100770541065306414851028 1.0762763939234107690656933524524469 GT 1 -734980084496273656.3185288611978006616775990388475464 0.7958963909549774824412380658137873 0.0953469180067412048505537185578769 1.1002037435878613044377437645405840 GT 1 -1074716091158286744654700.1953572175836701385642509502377913 0.1731314815870831979018950679969100 0.0113763256318425989197414581022326 1.0114415310278574134094325836495317 GT 1 -4530178819220.6225302571837297933664848459984655 0.5918819697738551775105364861675524 0.0978810893663766124084576972052801 1.1030089376375627320525238614086848 GT 1 -74771869905376307017185579.5599465895802468909111307816867110 0.4093199952799262513561585138822365 0.0954415265895606332971247934502373 1.1003083290163846753036507430391268 GT 1 -237037998146089782253352131227746553.1484122390555361964705248562527926 0.0985543987001255663633253778803315 0.0352557396147265608432306144160226 1.0358922279106644797234666516230216 GT 1 -3695668632229316948166428421306.5472134377667785714073816552601589 1.1588032903699913506545634797970461 0.0598925896058267739416488672136348 1.0617611438692125999819371123499911 GT 1 -693489634075266896005.3442594788993412967576955115668778 1.8942471273836540085631029147915678 0.0071201099452370386178713184614892 1.0071455788945381309568431227674776 GT 1 -509537440897454504613.0055036474461107990520023478515525 0.3823337707472096740941907423370192 0.0798999741362480754943303750261862 1.0832728910841034788081537911548087 GT 1 -297042534549593540.8378830419226520724525129002532939 1.5562358102377372297295344015913963 0.0769225781097975264177605370569855 1.0800421672926297518981344813648734 GT 1 -12218421558406864.2668385219999253584508853820043605 0.5279735325040987737263915000873430 0.0384747158336854116970102293357904 1.0392344177142211907262045004005822 GT 1 -167930.1666851772112047340474389522401438 4.4302323955296263947881830382015866 0.0492934926342182386432598820921217 1.0505498788254083155249372456730135 LT 1 -1673760372414839282565.8429364185104850309074674354096300 0.3710523077587114340626672590716496 0.0572733911317503780491826925604399 1.0589789547470816723207223769492383 GT 1 -52117347266522406596.0912080577739201196600704825829956 0.3495365726436103407315825849179238 0.0448136681564654166185033155030747 1.0458488456552070785311780520847622 GT 1 -150126497.6526849780789571168702407153597605 1.0476261909718065340285598648586581 0.0621407150773540258561835282765499 1.0641553573033872799869941123228227 GT 1 -160404285004551321276984487158752863114.0464285573162963583440557490467703 0.2954159064234173214010013785622453 0.0753445950926500798430811594700752 1.0783341461134986183400499883270160 GT 1 -3377401605067389008021.6299695003112436320554905779401016 0.5513734275561682173368522580379228 0.0879829601756829734387189491042112 1.0920966050644582746527883518020626 GT 1 -36.7867673051563179694903991449347874 4.2994356053153305580944353846765341 0.0938933199299607384135710770965299 1.0985982314492821032092849730418983 LT 1 -438481.7276313494555208539029973908819395 1.0208952758624913909894811570350836 0.0281144394251074299254229045786784 1.0285172174871900344942435140893334 GT 1 -58843561584240464.1708774664226215037702166490760059 1.7289145749030330613025532412775562 0.0829565646724052210578678198871513 1.0866004410779822491687086915325527 GT 1 -14659278503168476976597304826496654646837239.8610229241459674576871045138816204 0.9707104449556778265968910100776961 0.0984589731532182456018166725122432 1.1036497278382063607044673017050285 GT 1 -13213686529779134207014821.4963970598632009243331817686476599 1.3992997988874462901283533481441154 0.0181916210708538882800149467244805 1.0183591231420590774985705518704432 GT 1 -280.0498057851673233017679907477695298 0.3084706674955554326853928326665995 0.0049816677671446074635639739886696 1.0049941176386420838406608848171766 GT 1 -5371.3080444512137363310073129684980340 1.0594049169805239696250284852058428 0.0615031087163826872386244529517996 1.0634757353919415796194330341408110 GT 1 -2751929978556234115162154255.3856616419794572686450955481380090 0.3968431553976213651654339843290207 0.0148922017917291051425705352679790 1.0150042039927956191183735507615969 GT 1 -1851014758676216789034856231506349.4141665490350225846762205487295245 0.1234776440774825747706680049908247 0.0549120550202251744837157315707539 1.0564772923478692433113075617366383 GT 1 -38701087713058363052595116.5353756089942350919517714890114393 0.0713293053596738436356870416574106 0.0975804429139658930946115622082393 1.1026757261703975396302505765561688 GT 1 -293333007607697323630817475169973754.7220747223256113091081972275015672 1.0629633661358280570916363190913263 0.0187966415680046360800501152174207 1.0189755438233961801543631748636552 GT 1 -2414464547271833979628109.3985586501508587249223887522908371 0.6862500905709032319501372185359496 0.0153642243430013507347491596424906 1.0154834770987678758278707570896092 GT 1 -825235696687948992690908794504465859.4157047256129296875257351463936033 0.6158031496203671857370435372618611 0.0612708270012931214474436567706082 1.0632282620367664916464734031321179 GT 1 -80738116512163682183604238680783113858.6993214908166841135035707323801081 0.0297281052141588138408065663763413 0.0444048086617379772701939364288545 1.0454208956295165083168024935377698 GT 1 -92.1637610471092058510336123758246103 0.0348437362173768790174318863162251 0.0158367118693057414492845684998752 1.0159634524746868594333262752190896 GT 1 -18729830746954521971327346109496.2595849481336803423748053957421184 1.1565783429759417143296286393590640 0.0852761353983877281911051941020350 1.0891330465742154067424581968388291 GT 1 -3431083942514903483.3836360860848235034954948431357483 1.5877931292840866839051201700030089 0.0821530391051469551189261603718842 1.0857246115240466350450064118274986 GT 1 -997500.0670107354666048853987519101592338 0.3359632355674577974977455871221339 0.0326195729141566273357017972667156 1.0331634512913767459163567224729127 GT 1 -40561873047371473329607732890.5395170600341624737978129320170934 0.5271827009662100668270004758818531 0.0820911584104003197464440299893258 1.0856571943929812442050864940015548 GT 1 -1116207102786255318282.3014129914338367243324739176047124 2.7399777396209255425629222260123788 0.0875224465206419405497168621943046 1.0915917927547799368407022611176554 LT 1 -8595043462204360754217.1785434831123842259494617045304257 0.1442878461674220088092949337520163 0.0556185613636284257368701906207448 1.0572251280973723526979152646858494 GT 1 -135777756364790197796590.0550399786612127377890796240870726 0.3967418404009837577023228753165628 0.0710265638969660170308896816191045 1.0736751346535066149012835278690140 GT 1 -11292312522385185847241653737898128.9480842715206153152244348713597004 1.4258195490228266837724707679192427 0.0603188279975103875933296296131659 1.0622146399729554422004616111746368 GT 1 -22187385145349889.9822105239133762870097921471335484 0.2492498576322374796766637720201379 0.0300059759971267547231956417183615 1.0304653683254666458776673971289284 GT 1 -34982647278734.1020826057914805021790199862882098 0.3820636990881793847539932513105236 0.0001640230535876504117308027449162 1.0001640365068398202976358687696356 GT 1 -17705972852485856078478018554.4846393281338891381147711417744612 0.6388918222196656937576132869194173 0.0157071542217545558753420389646771 1.0158318187079937844551765231045482 GT 1 -6.7062697033150797668070678993784235 1.9771648991153850808745396692463114 0.0331223582726216845678849685126864 1.0336833254259564104017991650129902 GT 1 -5813330674997691370266.4013296114958255620766006450326079 0.5502545452968040616972736324806628 0.0374345185700507011198827236672415 1.0381531824798210673337491908134764 GT 1 -489310373410371287927.4250640661475964650151409408672375 0.1470707768391990720523345810161129 0.0157255651732248921431485872277112 1.0158505236327908832151824285195247 GT 1 -213212883515073177507785.4698439663525693793240114584170903 0.5379282982955955628970225632915055 0.0075117821142156068873927281123676 1.0075401376390784958241573993179098 GT 1 -57946673020795.4228111531651814542274795720842349 0.9835138721816562647461603153003903 0.0822987800800463874503018274123520 1.0858834098347954149680510936453095 GT 1 -11.9911223336972298605787556645600967 5.9749923155538180287947572301968815 0.0071951322875042790203087561786312 1.0072211420895613871103771892902552 LT 1 -2.0270646524473728233609570655787192 1.1809114451877753082739756495569962 0.0130116679065660465935583762518927 1.0130970612057306233240769142272964 GT 1 -20144643406108193105148811226936953932.9086296833598390868556328914423179 0.3996821642380178662529925546936289 0.0338548759564867171857588331246884 1.0344412241242024399140570518895644 GT 1 -6722477602618642309138.3155631871851373472479726062138077 0.2830746509833881910999816235991096 0.0721528440470062700566707827282124 1.0748882623977654548013021774552533 GT 1 -10960751015392159195513038052936572684312890.2070053635471891748408709513991128 0.0570618983815450991562275556708276 0.0468910206604702948629501952400235 1.0480260278894309652365800498139611 GT 1 -320471475913.1315954414970923627510439196982135 4.0154109426050836242192471428637465 0.0157051946443500182690669928965288 1.0158298278620150346159936786206831 GT 1 -586293539919924331786.5419739579766127251634163655520092 3.3989585940188156994267290118615695 0.0406453468076183469927552372522714 1.0414944568302967744711781974563022 LT 1 -90857606615556841781757.8317176913563409501610470212523554 0.4968052327989032203423231531254050 0.0497736151657587045410643645011504 1.0510550229509268450420319450419476 GT 1 -285458944364547532464959180.4078039966372810405117849080395148 0.3728221484995956290797670130135988 0.0782581805447988557893441123296842 1.0814901169219653913918565682165971 GT 1 -1811836179.0545003868242681096835583210147355 0.3273455434275443735263008534741018 0.0827186623388483907884015200144074 1.0863410515321461508165165114122954 GT 1 -122291378777226683959068221.3589784358235966978640671795077459 0.4302562005738759155639631755079338 0.0907737465991211351077411689268711 1.0951613121446980276057055585124780 GT 1 -964538149306497365776032.5196067520356483725799420409045988 0.0125744350074571520842536230624310 0.0981119214814506080580480505558829 1.1032648480832780769163931875480170 GT 1 -38876447040122876.8331386794471301030725736454120932 0.5201723444896470969129594313439166 0.0207271229569294274523940385626569 1.0209449449086494911961270392181956 GT 1 -126545333.9458777387206748212214327196384135 1.5015936990830642051694168878923878 0.0692394636432231138640699706117519 1.0717532460067590141981097635527728 GT 1 -56984911976644983467507875064124490.4756561279477487637672952976511813 1.0387319091811887460500314025080110 0.0554074862082874691792892297963037 1.0570016468196679845676423172217925 GT 1 -120474118541927913979.3316809686496175130815433966250598 0.1651814806769247976908576378002355 0.0882167340756775639081104843617919 1.0923529641631359466917577906801327 GT 1 -78745106279307462891026581907160.9638641041008793694957430547954088 1.2061449470817672361625235040725012 0.0577241089792900098705677592292701 1.0594571693448402511493350778140630 GT 1 -16085139684437173706893196165039.7175513396930644194847509229235315 0.8132061365946849607537998500130756 0.0685257352366935826547670191602031 1.0709867170588012606143813671308971 GT 1 -9641955801895936843339814964.8912177504796220451327609825913675 1.1215126671963580979537223868751021 0.0184432603189253562036912151322917 1.0186154577861496003152128738933977 GT 1 -67969878992.4594940623609476806471410951996838 0.4900812078957474373109942544013429 0.0646389679732442225975936610924386 1.0668226937127514485425304819433396 GT 1 -113945761505142865457587751.0408484602814778735641607230193943 0.0483904743065973954396410438061571 0.0348018163852289584808420383224232 1.0354218271074912846277430514829107 GT 1 -175064053757785931690704401979.7725737495765366324922470184357692 3.5047969190766366600539682632110086 0.0675143668153488983173915674364013 1.0699015343553441000469770731478474 LT 1 -70632291611896491026420279295744.7456979160065906909014125234713929 2.2557637741973228793531532355992440 0.0836506728780881539798851002155425 1.0873576255210125835995260448591400 GT 1 -515325161.6217621589007656435543735550479194 0.0146021181055338407121401697864033 0.0946310124779604792150478179246340 1.0994126973590115389634670023081352 GT 1 -21512221187950751748127100917675817823.7458319166924820956812262528010276 5.6306606568627636493583252948473672 0.0347317206603833195640571054060870 1.0353492066023215963735645932585586 LT 1 -28860909969336370120111.6116944371835235465308543298589734 1.1303076943113540854327539936841734 0.0066767367664560109940724035723419 1.0066991258865349672438630543213387 GT 1 -5768766647.7814544430089043055222213113231730 0.4220494170365018444565559017742984 0.0824887219312692999535157797348481 1.0860904069559563669358691140270662 GT 1 -3388562085486081384144525806.4366254331616632546629461836319944 1.7146025499053645593798176024300547 0.0338622743823736224927201534739984 1.0344488818290650990295292435317263 GT 1 -191.6958411704809677375821440672882920 1.1248404109108067440605832062841323 0.0083456052162948749036764933664315 1.0083806247551160977380457171173946 GT 1 -100363284435664258810190164129180871161.4186766112978059339765178713324344 0.2924575332648921431779123574861533 0.0495753515981166039918724105824936 1.0508463959437653554393618522148402 GT 1 -45395064437595.2723729937731175539499409881544816 1.8713776003260598714630862583081230 0.0702020139538944496369711696613214 1.0727879357356285675444818250579820 GT 1 -1709869703706.6067731407889874408975011945606071 1.5841309438434152548862934969818596 0.0858913072966939592157846649764706 1.0898057947917061493094009934476179 GT 1 -21162.1552122016913800171577861202398204 0.0682509500951965739691188298472231 0.0014472419928047421542077053280714 1.0014482902590162703888868602311176 GT 1 -31590805895.5255887280744132090910338420809364 0.0024512731684193266820080161083322 0.0904376553778008935579069091398350 1.0947917351355711472739529864828325 GT 1 -31143086653977258027592.6401558694378418917109767534594679 1.9248328188264774225181287110596904 0.0260685619281088285010675419633173 1.0264143699405587549595893639670922 GT 1 -611245.0994318955499110356894817766580389 0.6242949183556434537050187145157218 0.0882157571035926935791955987777486 1.0923518926677510544552141585792166 GT 1 -3407.1062275230566171123897132918367835 0.1754039523783266392347444283371077 0.0725310782180120521052190181630460 1.0752959925746175490048540964983766 GT 1 -11755969681845015938848083787069018414742585.2923587431255117745103388952053575 0.3779283148974977989151424551963268 0.0146007998367195348994327529672327 1.0147084405599586778263367318838551 GT 1 -1266142919496663364926998002.4405501766184799887018105969317587 1.5932478415130112787228316587355147 0.0058822690744484472671215961307414 1.0058996377642109988551448611679612 GT 1 -820607185733904840475.6828521724146746696259895430072010 1.6965689041667867161880397326386889 0.0838910484309109607135415040007813 1.0876199786201218891312294968885834 GT 1 -1.3500635650185544187427289587764050 4.1017293252989913523658903723441793 0.0036602873332652313805279879326512 1.0036670025764339850984411003749860 GT 1 -22.2063705149668559003611417687648588 0.7928835089665237156368467159425083 0.0368325446246974947946216168494267 1.0375279930223885580024902191210236 GT 1 -1156437553807733050366.6011561544272163153013108867645992 0.7474692724806546864390863379359802 0.0917534901321469029193683989002718 1.0962394505880678802234887255837066 GT 1 -56616348180503465355956126230.0279249391578250054307994118540602 0.5133182944054626997066296185142635 0.0832099648382426372594443943552338 1.0868768022323924083509255129707494 GT 1 -1302.1238101769967704933238958394602459 0.1989751386774287275777218031173725 0.0657019926517719924452772823788402 1.0679598259605972571425963588721194 GT 1 -17485152.2491881376092950122281642166694480 0.8982253031164975137818622434064968 0.0411910630415261962727872807636654 1.0420634554823755897450577438210937 GT 1 -156432375574187493602388540344304713662279.5920069711863326335603254558491364 1.2197648597968693897735993363680068 0.0866531069694271615719676709731835 1.0906395219944984262761433162479328 GT 1 -143292.5535854585479287289371951136710249 0.5551577681472721857618166701910263 0.0048968571579112873575721868460334 1.0049088860481619419298390144520657 GT 1 -248331900.9133436249849263468760855575845217 1.2298611188530212294512460950555870 0.0306463993574037394487715834060332 1.0311258207120503124288705894859287 GT 1 -27197802778955463.0040958620631562536686723312151996 0.1143012263131063778435220686766898 0.0318558648079278712065459345580390 1.0323743027982534577896911096806782 GT 1 -11686183500255520005098913445700.7465646694094716351362584870802833 0.1263828002898398307718265895420512 0.0169517820215213589721349106019645 1.0170971081778733031870303810805745 GT 1 -34552000615834615979908.4129395279488396045741880900233235 0.1975455957412233486278289516296690 0.0474180581119206113367503852901608 1.0485791474525421583938404265310793 GT 1 -1364488024852627.2118839523255435748909075834098180 2.0324320198282145372925945669586977 0.0173725089138534403256451311936525 1.0175251817373283671585750147611253 GT 1 -176944440669275619273814551236490.5960677362063638815798287406887920 0.4649955938129418526078178717192380 0.0040741333412727952368379183329737 1.0040824552332029682904719464165419 GT 1 -1445372117.7683305706998802102236742907706697 1.6999266848844652082140606918511259 0.0447822248191900367472539383415252 1.0458159276593101837144315375036459 GT 1 -1052039288369975465110128391757116261.4919801121798027612703851288585462 1.3652912535228145755110239519772848 0.0488707025528732656633009162329338 1.0501052662176954855660038985341300 GT 1 -1668590489433165.8036816106932045002106176757876041 2.4242921631046955600661355203629394 0.0966333625494056836642720901378409 1.1067907882896268675643050782600059 LT 2 -15573084495541387886750985.4335621399821620924137323515369990 0.0625766267773927480329776152374679 0.0837305754890343881698600793774401 1.0874448259940249561420164037262975 GT 1 -3758352052848841590772075043902.8224538376560944696149992774454465 0.4010345409685873016833679746841364 0.0086791708096383863443936110562346 1.0087170541693184865174411977101911 GT 1 -277476732646316855038785355211197831770410.5086859632036741793252463793004499 4.6101252451316468704528195638382664 0.0361694793086510913795583014358672 1.0368398082391655655485327740847897 LT 1 -124300945571856251183643267283384976795542.4949204626444876836256200860155294 1.6385764093480361430112987903616668 0.0377834581831652695414883672758294 1.0385157582029137351736778599295369 GT 1 -179172141162005292730790212635.0376389294227466621004958117014010 0.0459799067794307188482950474045414 0.0756945114614579012743262147500726 1.0787126466801960369625398902860259 GT 1 -571909122222677525495280230722208.3820015523513694441139676635796593 1.8176530107882279247615974496813463 0.0124890474244976485140196825546629 1.0125676910526686123579674032066729 GT 1 -132356942766515242991845070805241580971.0655736582597522216698218377342826 0.0502812138975203348629763209042137 0.0236584626393378728697382453586750 1.0239428179619531494051164712709883 GT 1 -44379659031.9283963151688165137097168277900512 1.9324494668635526297069085476951298 0.0403432195689968298826786316999849 1.0411795788302763838920592168554298 GT 1 -79953289616074985911843.3811170342955122201175046799358014 0.2826317286143522602772661239727587 0.0946222193162757299897225639467037 1.0994029851653031593767380842170619 GT 1 -16065049.6746910409454414826789959855093303 0.7807307196885956239929136235033571 0.0053399432377114203654827060200298 1.0053542516949003032355936908667617 GT 1 -34688741.1078561194049974029674353404530244 1.3624801309135190589156687460512813 0.0489382046168345357526091762379290 1.0501762391754009786355880626588246 GT 1 -207204492957263239005.6388630119527212816618798120976966 1.1263028165827039120671955831406492 0.0918992733460522465392998021624830 1.0963999740951232301276745596326349 GT 1 -179481069039842576088027314706087764.6473788657750585994751266878414049 0.9138257041896613093959634447158525 0.0847198910804566771694678241020481 1.0885251305881191318268874193924140 GT 1 -537330661139249.9127624439884151680573469302783622 1.9476875755214662815971128641740603 0.0202560470006214432012574626399129 1.0204640139047259006700722319494413 GT 1 -512584680.3100553979873369596842792864542843 0.1494849133827095814227671954669544 0.0561149621117990769339875875491700 1.0577509021507460549899893545149245 GT 1 -81379150800249.7752985434850263174429888446126698 1.7602065872395450361378774616671570 0.0968071691816454439731227622515807 1.1018192037132242168188567062604314 GT 1 -1863811760158952069988909171915689181686291.7047118286514184941706525804412131 0.5133605051386002349179747283857919 0.0777318280738241077210820230587459 1.0809192387946995131623783339923512 GT 1 -3938584425251734042819893138596357081.1150782973774473768170814662667624 2.7371785982111537027453525353439879 0.0568247886061702779823869872986283 1.0585032114934070587614701040509303 GT 1 -1543439.2995949809191993409078854585781350 0.5983993778172554305722402540601216 0.0835091984254493520648117777797757 1.0872032482235006695595572835979621 GT 1 -99046367.6759428255629020922162190849274406 0.4140022636393647303251913384361923 0.0614625567614978017985819909763725 1.0634325268537221454694035021186105 GT 1 -3.4606573000120235706673482354546913 0.7685040768034005242112449239455376 0.0645650037071213545380791325028579 1.0667436212056028828642506482021297 GT 1 -8142847589714165735.0577843590174358744883755970954860 6.5756064664347153869348349314769155 0.0300486455918772820558653461027997 1.0305093588369854381666444116750054 LT 1 -35500760830822877.9291613859823673757355475829709628 0.1543320128840494364320989614434486 0.0292744423689900199991600365355613 1.0297114895377160751521343794000106 GT 1 -37889582888336068759153829647708.1399534343234419301963644109893105 0.6056858565501238639518358763531147 0.0861322486594707044499555286305616 1.0900694101845161897221268147229603 GT 1 -20452096512.5860459008914466291901064363269627 0.5545853087726689108764199529828407 0.0716762844721161699220121984485834 1.0743747756356538972414829108162252 GT 1 -10946376683549396667298373767502689819718.0654727519344874045930700327365193 1.8324364808862949244372746682789997 0.0985010617090031570401974558172263 1.1036964140532724143865762992467100 GT 1 -11020469946819425420833780646121024477641711.7992543631377866055041006285732521 0.0483459693800824566402754712709828 0.0174604376547795771171231223744365 1.0176146690313793054956671983226988 GT 1 -2532904538967532.7165872864166215252895298593702547 0.7906279081322126661704574855550383 0.0088706529401409172614723040815061 1.0089102314137122756549000219351756 GT 1 -51362257001623212274144944956583143112.2407799333770936980583888766639070 1.8348716940814022301616443332092826 0.0967240507178751689125037561191109 1.1017271805742200569314124332378403 GT 1 -2443191960717775209966541562135.4907158972749987149131102995237033 0.0178174285619063452129505183061696 0.0610317366084498201144028285004566 1.0629735986501081076487890872547774 GT 1 -44227380542253425.4102420677070084334163490988675542 0.5963905543790858919175010768482627 0.0483127584211680077903833652559795 1.0495188259211641305740259813258949 GT 1 -26117909868402359.9088471586312681122321918754082769 0.3031829227233282952571815024927750 0.0824861620012520446860278658888128 1.0860876168796845577026665281352126 GT 1 -808081669719830.0757896515240447670193158683735287 0.4089716909656328377420419394253703 0.0568930478542299803960645723873302 1.0585755858702727231215326105425572 GT 1 -16661801046795193.9565174028049017289586575596639059 1.5649526231512669917128284145872309 0.0913577748576439774314373830580732 1.0958038539847813668351165831665650 GT 1 -937373943403528796077556608781578405.6980810184589356583272678851833250 0.2799356753574768760715424855095083 0.0713078130219345027456626944947515 1.0739779330943271050666623958281634 GT 1 -455221.8933273693461174335250921247735209 0.2700976283329698706210081483495618 0.0640509565932996157235976367968357 1.0661942447913066868507300040089191 GT 1 -765531468077524848372192311431311802952.3848439955015221826792279197801819 1.9549046858033013600253069345458971 0.0558678221130017538826588606477914 1.0574891036902829716440965017082535 GT 1 -1952609790531079558.5358886236915412006300252609390197 0.3256463166796097219451768119278961 0.0990298480638024292166233704436754 1.1042831496293066859957653147395046 GT 1 -906850352550704176039874959791.2708052306347832642811884887087650 0.0855307605690925407607047874280691 0.0239429892624277479619755643038703 1.0242342816340412685979842171411669 GT 1 -282776715347410061348574715843.8948765140538953994367772730408921 0.4383365697866723388088100666401509 0.0736117887510721640734973963841792 1.0764618975801600422415511745059083 GT 1 -3650839742954.6802660235012237004385464198095429 0.1214597732190253920541795459091566 0.0487482080510235643866848090225288 1.0499764860245977113393363898001928 GT 1 -3202502.6028155295100074488839021071594073 0.0818455346107999933326422598150829 0.0555524511648389612333278332168911 1.0571551268434155734636182656962381 GT 1 -11140579348272248196577205626294821.8050682250447826767714007114019139 0.0834015930715107382730614909190996 0.0684991192558144347645165043031207 1.0709581434292011637905429390513432 GT 1 -716004939472934182520639174151861462.2815325042487877489291591351517506 1.4235593990474684039425593252265306 0.0672068144048727146254029732613225 1.0695717687351410548373773107157568 GT 1 -15962693285357152668934.4373018113025164273161935701537374 2.5492777171415311152465089626618745 0.0667461405390920641257161807630248 1.0690780256900663356277830730347657 GT 1 -2.9531888937320037578029647285321532 0.3033177458804541992999606326883471 0.0960786600628089553693806947275820 1.1010129357196563886362786438766346 GT 1 -5832863.8414743305754210084553829591608669 0.3243316761050925043790979347223134 0.0033176011669966569815353064547333 1.0033231166078153956960128775463696 GT 1 -9388591886493760563463292.3949334236448743676800557493354606 0.4705407409930680480154663909731765 0.0646232605606953537184861712800705 1.0668059009662865836053084087018269 GT 1 -3798346269111998666354348290.0286686761701941388573921636229101 0.0645302878262138417520740528759777 0.0310786350011006187154431432085908 1.0315718210561952090948455883061017 GT 1 -27063941128245188726080768934258952235128.3938491794882403980823014075081300 0.0473142468651351018677312500787009 0.0946853666269225461074069100757169 1.0994727345166365946322874500456706 GT 1 -102574177668032162780133829.6143985788076885590472129621328094 0.6915087732475414597308933971405938 0.0943061896841282576560700274861396 1.0990539877684849326896031655217680 GT 1 -3012598519188337454690181396569599237.9003083083359074867465849062399008 0.6122061084911452784080875282036087 0.0733223118754448007429594988635893 1.0761494673767010596081388074290594 GT 1 -2797455585554844290069688298677501921.7474739058683549959145402779111750 0.6075488681623616596973810992534884 0.0027339666567972970747042529390348 1.0027377107693805404617115782682764 GT 1 -108810687264359878842837179678668038491173.0786902493163648380458743588249381 0.7897261418126814343656805116682088 0.0023224420923114901532319170448798 1.0023251431437816918640684712793329 GT 1 -18376912533389386697236902.5811933326974006499154350967671421 0.3181169604506584654369149741040681 0.0413128759320657720393957030820535 1.0421905096059060832955644752715240 GT 1 -34504643573851309671263.3217167348021433701540629279728228 0.3679744106703926820963955010785470 0.0083135903111586721981443299897290 1.0083483409387726958522749755325467 GT 1 -4274065973932933874042344549061731.9598300424213108903698426336590474 1.8166523213152987431541439057112976 0.0628096055567121346053573752384319 1.0648688216079257605411450791339038 GT 1 -19562262725509960623835918270413969.6037759925181358814132165940593581 1.0829263839515303499553809732117503 0.0893117026045537513208320587615400 1.0935545946112238615214183776185036 GT 1 -44814104151.9699537648377830531534985424019939 0.7486426426691120197561983816945378 0.0326408678348026273692298603330687 1.0331854645081376658844821475260487 GT 1 -2849082786780543845366646585292687.8123966473670666866044773405601099 0.2056023839406148043579967571736143 0.0983670395722978330560947633322846 1.1035477592188175811670047563698153 GT 1 -2789531.4795735045893156010072568493977910 1.5909266937000923483719435517964192 0.0581195062442450215132209376613127 1.0598768768319193215910216649793714 GT 1 -77353831019.3779170325508296268752115063218415 0.3725375561805134026949223373908452 0.0562942111517831541850727829383047 1.0579408257697676628866614110681543 GT 1 -37719852.7828321513790164554781236588248035 0.7349194181587271684897404625070201 0.0088998433924230820866367390091621 1.0089396835555861282591242362028277 GT 1 -715977.4660815465677673966827624091524525 1.2293666464510964106436258092688238 0.0396536694330747981208120696041875 1.0404612985716469388046651299628639 GT 1 -49453439374667688321398651772165576395.3308519957159873796759806861015685 2.7731242689086960969368057773653740 0.0774638623225252177704651312754005 1.0806287302006025624448355840555969 LT 1 -273.9766408314196046380413995231992037 2.2390901249928038236807049478605171 0.0709881815372314530190028577865891 1.0736338185454850863409629142222272 GT 1 -2899664101828658899391211971891689495.0352111334567680407494810591140180 2.4713976725756628857252010893962520 0.0784385541082234663164963968719825 1.0816858238003627099450704051716527 GT 1 -2285494831.3791095373234030279835220064668140 0.1377459713918407746753087795815057 0.0972448917837643150394439167718449 1.1023039603346410347832530925715297 GT 1 -740579798444323000279173368.2217402213048554149786494851104596 1.5889436630745465877654046770171746 0.0253264903324713969702512518328011 1.0256527259425063172139713661386879 GT 1 -52388230476159788346463276685479762.8583279535492769238331160146101330 0.0777371092257089605059327054415760 0.0633842332938240946593876826161106 1.0654821483938432455415706143606277 GT 1 -96865405879403666.5231845193759306657964991232840280 1.7630266414852503333858756267744983 0.0210842630814612853181820380718095 1.0213097107192005403072644290253074 GT 1 -20654.4646658488794711265273536994664657 0.0021602854287185618903505107974388 0.0409434516736502995701608703330442 1.0418052399076634557796829659244459 GT 1 -21550628291973325743746678433964379318.8960217589842585056389800258908862 0.3731894648938721996271778155221387 0.0823980895535678752871719337339675 1.0859916311656211160269729796508728 GT 1 -3362572332287.1161860274246403154244522442835176 0.3401866613345740665128850594675639 0.0931452288063194680487957983690796 1.0977729616504362809315236098177745 GT 1 -32625418180595567210489057294213.6910994461234518253327037371557203 1.2423405185394395804165248754992470 0.0653371693234734636337395849577522 1.0675694236305861261650335794589114 GT 1 -202791419280011889312827996645869913.6430557827566766935328840480278224 1.7215395815188963999682910324696634 0.0942776931768871249779304440170710 1.0990225245315468713360074756291984 GT 1 -6098520537203094740300591778295.3922656134605475842333022313491910 0.1258443883040945821649177949316704 0.0950777874536559825356260577150498 1.0999062919638458165790927541951690 GT 1 -170880027318975.9400418760725869742616863619411070 0.7591574138934049722356147159135632 0.0475016143791498062786841237801529 1.0486668668689638595231560865826878 GT 1 -355677.9209910120680565369140450892047116 0.0433409886882736885259159819156860 0.0246444813503112292016241181454137 1.0249532399347964454072980365019590 GT 1 -177428856.8588972697861781762780720230965635 0.1263996205463577608279562447054486 0.0923688317995266751307554297310905 1.0969171853257819374726774876125785 GT 1 -27708640830982.2289031900006264008523276939781029 0.3667767451305739475653504369417845 0.0167726793891215439207698669305564 1.0169149336765074996098780601541102 GT 1 -512108772666.6064249943086741641291073583528017 0.5984836468118510636244938799501005 0.0644528838742411632215490442436637 1.0666237698908626649899952877008052 GT 1 -37987689258901946901224200315613325.9836500014909621657165888122478295 0.5590075992342492080773042855086540 0.0259757864477576986548457833047202 1.0263191157387046974731681840794155 GT 1 -40627297.1662809401097552551920692300276019 0.5145655293619304603899235698010264 0.0721813039011385538635084609890724 1.0749189358663784019523279489777742 GT 1 -1753375963707272276163181266.2962322700703268083254979758312771 1.3660473173359477896430817952416881 0.0438270306359072731481542587212077 1.0448164519994798287980161513888696 GT 1 -828221081844840214.2772803577252974346670828260716569 0.8954583128405032176749943827212833 0.0156345324540568048485203996529652 1.0157580407778784600959814987420291 GT 1 -556742686792919843357370397058428.9839500575342182674785105679450714 0.8768776647693846642795065901107964 0.0263721017915161464542257031634291 1.0267260830269952736327199260641568 GT 1 -677392429424989320605260817916650410794.9329700206872787897027614995830612 0.2387611352824320793409488090073008 0.0806846716362143387185965642839128 1.0841260942997500970844350188822850 GT 1 -76060015782653.5519188895918421138282210616682604 0.1048015673441540937685990744892819 0.0929502079261275290208871384463379 1.0975579328282009279280576583563684 GT 1 -11973940563233230512817554269064247484.3005370947054296516713569349300875 1.3862241043337529909498061222612657 0.0893410457270966930216199663156586 1.0935868159490479389216475165480938 GT 1 -973639749566580637228381665000141303172.8230935183873028211301468855726606 1.6334842620850679216253928928264121 0.0459878950795008906240170631771263 1.0470789190184390617307890190440108 GT 1 -23408.1701668086058964133386829745949378 0.2673456052894217927443987938290595 0.0581539823173007181365244775600031 1.0599134809491839019775364404782467 GT 1 -38049301.2730290497827132743306342058758017 0.4659981719330775889009768904338470 0.0317169331279222818694012085776267 1.0322308099986316803745806457862617 GT 1 -1711233236575692829660.2610495927959806062357022411916223 0.6029587176493972023196143386746838 0.0141461279002949439255986348280896 1.0142471381012485153782896448626151 GT 1 -1448899970314093346215.1019760679566177320158778945722799 0.1808984506770543603263260369039993 0.0808926098336620082504810014078111 1.0843523079950428221628795207463889 GT 1 -247703.0185077943444950461396865735464466 1.1175866211479449905659138602199328 0.0252399173194511836839258121679460 1.0255639073098358403418434050529788 GT 1 -6092300732859880666105134179598255070158.5405511513032091601268358814217238 3.1598155340830519440611264753881718 0.0779661862062046884056208071398680 1.0811733817012913515192294795441418 LT 1 -3529258913050802388362616046943632844285756.0171845579554118961298900925765515 2.0869363895665986441628053054700491 0.0805746915911701558935482236914867 1.0840064688963888326181114578708768 GT 1 -797079559901488478.7013929729230705567551029306305718 0.5892504172392545634825151627259991 0.0201526068582113725401943320118076 1.0203584407272265804040646450813880 GT 1 -398227698348388480838032509582057515.7114177943125037839666684157313164 1.3800094460803909739354361162123153 0.0239129121202952104211081333202681 1.0242034671648059069146352008405005 GT 1 -1.3904914065204418992119248559415336 1.7484027521118179686926723420823852 0.0480604401949658436555370363321114 1.0492537338059487405274450853395463 GT 1 -4661.4070373878298121418659815956330203 1.6720640535319504010902295076311290 0.0683898266467342267578336914478417 1.0708408207296602961520641126091610 GT 1 -19246159072171583663323.4466914864189251964106462913355547 1.7126527023366610929085277314101282 0.0571017779041744975399634629410749 1.0587969320825180470634006715390588 GT 1 -43316939796236.2660533491371031886838002448376481 0.0449191441248607780068892883061069 0.0295925117911003526375831958868758 1.0300392047611920177336867912753548 GT 1 -23189310389119832406935327204405.5174634482966509133622453157402779 0.4064024382987470793421899577760389 0.0296886856016100297602068856464106 1.0301383162970406918800910126247765 GT 1 -39426644300385.1257754633226186034207488261750215 1.9955214873038649117935778122515454 0.0251438957906960528264692285979856 1.0254654043024454981096268763318702 GT 1 -18368419773515309563475889873806344.7010770346689713545605181460715766 1.5600805566809424980321157756191707 0.0578485023227616990405299089438749 1.0595891917771169542766409419463431 GT 1 -127112887890332644353.9574642720907997383455349393866658 3.0817565219380580419713632345102792 0.0803214676409497925203534845379346 1.0837310913497736744485494983519864 LT 1 -196110087226018590054550.9589217778507219753144939205847347 0.5268170830112606680848824818664160 0.0457725147578231347364980154935860 1.0468531818272575345915833466992929 GT 1 -21508219693338619988465588995988618.1994368016254183591906173872605941 0.2891167700842961412741294781082531 0.0792424254199825146270984409793711 1.0825584971580632221343717441952696 GT 1 -49337703679.4364830378307447094905840667464734 0.5577463776855880108870009606582909 0.0995764085040574085150812585748212 1.1048899691644798176250476325007960 GT 1 -28155539.7286312357413415104155756205122555 2.7083096294405996235043833630592636 0.0562534892858522918903749835748460 1.0578976756822696924877073748697002 GT 1 -1210848834013114.3481734495771524190678160068708224 0.0184001633665794301757901110889829 0.0588103580071991393519567261691116 1.0606106272970076719388340215029092 GT 1 -2.9376501215712913859103651204363458 0.5727679040251604916748045964041582 0.0292618534923145472748084912044927 1.0296985210988533625002941297441808 GT 1 -58325038557968837812642314302389208478.8493275326461304337126262908400345 0.9392287365700230681481584027916541 0.0258919199087409480874175113134623 1.0262330163096852152188843251528693 GT 1 -7508046422573477143957290311.1905047636639986336793757536562895 0.0619840070600032815210161243118731 0.0467020685482272893115424736019380 1.0478277993666615964401762111676111 GT 1 -489715910357960846851611917.4861571313429006982059264432979104 0.4672559055595598411994805319748444 0.0160362499153040031467236362444750 1.0161662219532900991854743980267890 GT 1 -8182185775804288740988001108389305998.9646702935565519438560925330308478 2.6760184212762684526784219091031571 0.0622757425780772985106186334645119 1.0642993418265056255677496609131104 GT 1 -27675537999205040.5423738364161670449966886468867114 0.4005801016130134740625786112528586 0.0187346864663952413906982740892500 1.0189124038583969697158990499339518 GT 1 -60118.9647339307344617233657365013304109 2.9080201172568599908742850040939415 0.0131314615698696422802818605801260 1.0132184414995499000136825012531846 GT 1 -160477990446615541906846022558483.6509065141913941619026354953707569 0.7489513902301366184481378087654479 0.0011311996780932625261430215851551 1.0011318399673580071729031416449177 GT 1 -6991568721568957459695361772568254833.4138409063253354762551033533137316 0.2457728815768802905844085653840590 0.0385905811263663912326848718523011 1.0393549265309147884760197914027072 GT 1 -3721842199175712199850.0460523963279368218807597458654815 0.2083197505541465850683216875958388 0.0800206736923804304758011761178255 1.0834040805962981943231919353453545 GT 1 -10001120.1200539430362942775414294880629842 0.2630108632385306387330422951382441 0.0836873542210687347469932892160218 1.0873976561906372910622165040241376 GT 1 -12718876227095680437370496154186950801.8580943582531479042711695500047907 0.6774858675999854451309694373965997 0.0029521365161659275340414354033442 1.0029565026662690431052468695053139 GT 1 -1702659735650025038917616255037496.9255290992240036158096764060544801 0.0431395047834959271492603411214907 0.0947430927216621911350265206676826 1.0995365001215443530525970900927855 GT 1 -1888888632962358841.8002291842845173541678700654448347 0.4213217602487311819540657698634242 0.0135188244673740105285712281216978 1.0136110357769239319343082619386726 GT 1 -128315140089509257067075294247181453.9781154367876056738276479759270386 0.2066463195647943546260293385781387 0.0913963909577456049244691239304860 1.0958463535733136655143673888661433 GT 1 -38850306452869485952911532418890.5447157191802621148383480426327554 0.7546836385790219084544732603251384 0.0260812452529518311388545171257690 1.0264273928361489199451865674021210 GT 1 -37958313612438736610209978009723732599.4293093510333633711133566699097380 1.0983941165041156479359918311925936 0.0319459906544858107208226418807216 1.0324673984836070410759407008610499 GT 1 -209749437050279257857532.9346080108958233367828488648443173 3.0375538962591955705952219203081621 0.0999403352043238773337907694004672 1.1052942236377729041765691451633986 LT 1 -6385995877260556444735794192.4441851350878353027562836005460536 0.4214458091466087293261423490055146 0.0520818415685362650790255658387642 1.0534871112223287006475868139790761 GT 1 -612379222527155698311046409298899150834.8706246539805607281613087066374217 0.3310492800288882115681515447914002 0.0480097636376018339169954563888278 1.0492005001652147304189024233278933 GT 1 -466435064896821525718183985959258973.8067611853484331833871737951244561 1.8135806184282068776312984757245092 0.0369208826496069722793425943627235 1.0376197133932094193723609346103321 GT 1 -52.6084373538036541679087517022071272 0.2747789661801285212962238875785851 0.0891840582117304094560888027379549 1.0934144418843880622736475357000578 GT 1 -6420099171407891238193084758378336097.1122953594060699708239129515963233 2.0988113619647395805779576216829066 0.0604093946253157034505042418896333 1.0623110247843123498862497392382495 GT 1 -2118342669695591728321.2924285590236470158365289865884813 0.1614559946829302891932310470107711 0.0156905676324807172096214062064687 1.0158149675751282326148879118357761 GT 1 -55233087558673260295564.6424743294850140650115319720089273 1.1100263499230760577451602688690819 0.0732218833487283787920394963859785 1.0760410984298333426581832795142734 GT 1 -3194042877334320045460954395496934051419.4767116242638038000055823749395891 1.5325159985097698503331513968627118 0.0550380950659591577569973450239875 1.0566106645400646665365974459680389 GT 1 -552544921.0191334810256367651377318997784933 0.0877070261263041381408882184797608 0.0105445452524875839828646940369200 1.0106005328937212307854266072982702 GT 1 -3707284946995121054560061563.0117099548404563639512875609654754 0.1266084409582505460902682569248690 0.0643542062222717664928579678631659 1.0665182995766704629352056546391133 GT 1 -82052501027.3272866059516530606601333985672845 0.2856473385936396677580202534872591 0.0093132332193392848639823163126901 1.0093568725359283685240758356336034 GT 1 -9451110329798899203.1886952527556245419519350876372495 0.4295445512940496292261546922859664 0.0441222673371536217801001067150861 1.0451252688140964206703416243902120 GT 1 -17214562845.1163581694442099004801907935526704 0.4687297333516976617031506548841904 0.0485943471468507721840458498947187 1.0498147533859364439650777601476331 GT 1 -80069488880.5777370612742960221999381198242570 0.3762480332233189332265774396884092 0.0288327071080831492533323303784202 1.0292565362498380071967983386987285 GT 1 -753198562590969821157492147628205264275.2709072222840572774466285689967995 2.4020964083381402870749606296195257 0.0112918485455198764573975693797831 1.0113560854943653563031696677206630 GT 1 -1261302193965567378264366097315222.2714976764588390996519197185457556 1.1216838428356936239590387351048267 0.0798289521263156659124493000874321 1.0831957046184993319306296387081422 GT 1 -200510230685260585417451626431014385.2336029655213649009813648512266032 0.3740649487144075295692975428731305 0.0944941655980407921478190600919021 1.0992615583862637807426501292324822 GT 1 -15789875998013888016606832251073460509818399.4183253051317771207986259955075312 0.1266530544920029229343817549106011 0.0407738977686945019179889895137596 1.0416284631377249335187005856233175 GT 1 -739459.4039137354224427212913568315065826 1.6731742829766775422355628728902588 0.0452192601065734914921247389147892 1.0462735565962558410346657303986231 GT 1 -1853.7051311818103380834312508742781437 1.6325898264649451991932951939780680 0.0169103254269228912561189325121913 1.0170549375907932575065088198333783 GT 1 -8514829617959885093098428911070.1607565067941063761232789893720421 0.2055487227916855109955380063627272 0.0262724390348755305956445051907648 1.0266237260009493734950780665986938 GT 1 -2924.8452382276252257473244251263291699 0.4918802532181199137777924815277922 0.0703772565321198908403655804781933 1.0729764273190155039668230870740133 GT 1 -78199665537347973761897070178692814032471.6629588246238018799733240902719441 0.1151187421983836538075424343304753 0.0217853624415191268846654269625469 1.0220261672201991436760210144111113 GT 1 -17119802642.6464707574401706191394943727638184 0.2924012051428988747550599996074293 0.0436997179515624492369443043703680 1.0446833126894906771941052347713871 GT 1 -1447298736.6122824798457523042024392613808079 0.4529929589822478209381037595847216 0.0435614094314723307372173596948471 1.0445386943912888511580308362031668 GT 1 -10547665690615298208008.4281372687659046261160911028386338 0.1420139951717667797626086699131071 0.0485081053867332895573266426789525 1.0497241108179312927598298127132510 GT 1 -70999592685832.1425481974321083243147949401427188 3.6361498979103028232053207509522834 0.0412582122463354902517572474608834 1.0421334919137162231859055973991768 LT 1 -2.8605012302539015764740082383320471 0.1053936404560788299577952791495697 0.0885299997151991147220953674401747 1.0926965978737235371357075182767610 GT 1 -524985152824143003211213405907148048.6228051066343960675160543125165793 0.2900257051911304845848094867786725 0.0410969458004191831847948812539640 1.0419652997200749712649459764936517 GT 1 -5432920833672084393785710541945640104.3500646200975900617458390702182242 0.2374720582231616491714785496338213 0.0461591411294497701006793600686252 1.0472584360500540002165108065151672 GT 1 -196114699771269439053793631.8822306319131641357934920473062419 1.3778853357831825808444425414572514 0.0486200375020655124393038181777032 1.0498417562758143571329171756534972 GT 1 -6.7747364738689578894118785412864391 0.6050628966182002285383705082091700 0.0036442458098940808327186671130759 1.0036509022503798489719605938047760 GT 1 -81579014582275986848.2948952944607739103718765832262267 1.0034951724062106733351796525666478 0.0503808618401047973685757415680455 1.0516942819724376717263633568480860 GT 1 -2214001919223144863114797.9410026673539411082854276271812184 0.3310926093398174938061076669446425 0.0727953507013402835028700569798472 1.0755809726263500960453629111013240 GT 1 -19012937853664912821.7860660475900054058293427042014575 0.4256251635459535163910383775395781 0.0592874995573875257006303047750510 1.0611177116449696092555871895811855 GT 1 -276.6269047685638097641045586382758659 0.2237570699206768663379693582212764 0.0685968578611819647595474348622745 1.0710630748741458703373296603699052 GT 1 -1092668104006572878816674627086.3368269779002962753786644028456185 0.3471421205560145984705066832774283 0.0992951822385904257688299351718470 1.1045776912987741606910351810597085 GT 1 -1220656810776.0577332883533397707593047886219491 1.2275254110992539933052473341137313 0.0196540764785965571341686364764535 1.0198497864163220276303944474822732 GT 1 -1802561074398367963313521962323.7354818218063588301618392645995485 0.3997946566748920371355217654485643 0.0374341842147170361393262943026317 1.0381528351213482726311203725775909 GT 1 -163819750.6876782070628801670164172329412244 0.4775538849764226966517303416950444 0.0923247601993414517970223008336464 1.0968686297761517126155602446578212 GT 1 -41171417.5656844597861767892216672949895273 0.0426428974689116072681176153013431 0.0616206313818418174254914383802766 1.0636009675855853672543672047065030 GT 1 -522726368144680138140762.0493680461128292793037774833701963 2.3369094447380267089042360333508722 0.0323360237891983479180101544255165 1.0328703839834589780979992178378816 GT 1 -8322807003093033750403558583127087.5244481436953670730908472942944043 0.4281126234225068839879977159193017 0.0590964918574035226372398097732767 1.0609146864796132397010750142471291 GT 1 -1748670642365598.5863708687256746951855994389755492 0.5784877327021806510457504897004521 0.0705988808887762977894041726868709 1.0732148582097291607661570770012735 GT 1 -3918972796236360671300.2772063725956689733956733272120753 0.4751752490161439023830437280296277 0.0441498985705122542894045699593045 1.0451541758926750778595644901730068 GT 1 -117514.1701821991661486594506666734531244 1.8599860565267833537119199394118948 0.0264840655905859270766886631073388 1.0268410861380316550926937793356575 GT 1 -12483295805.2904682857630819495665848572332047 1.1132661570830797695474810292509436 0.0739668600429476630913733135308325 1.0768452566857899804960829854193021 GT 1 -314379761067702409567.1615492774412025291434132341076893 0.3898782536497565356972522710405364 0.0817839173582677425743727526867160 1.0853225319188265990168187421511288 GT 1 -232180197836969162842222638.4303903671947469699630917841075090 0.4669694431715580872093577204863454 0.0611007545611059277729809945747561 1.0630471053829980861135992754581449 GT 1 -9994392591892722107788.4267030965779155910955556478494057 0.1563637297955557930806972277702605 0.0135665819802292474990361490253122 1.0136594489348179830612178737349684 GT 1 -3827412872.4120599637990409480839083640682626 0.6063545909282952763941862928916022 0.0049431383976859130771994871025914 1.0049553961173821190930910239745721 GT 1 -55293525970970046.3649868392526500270490655105360396 0.8110437995488279787241188550202188 0.0234147150480617251050150397562563 1.0236931950987132455845287412646956 GT 1 -992154532177344667970206.8521092046721243317043521964279345 2.7569798191868273672412232037304965 0.0651745004023035414104707701897920 1.0696664684309470509460051495997259 LT 2 -52669269213799531.1279559853319240040655585791692298 2.6513585327250198690429751820043244 0.0893970465295387437820478688260267 1.0936483126533073361246057289142552 LT 1 -1160449228391093626115929499.8391630121402909108572319658437477 0.4835246751908496362472267197224873 0.0661277159949642578629846894133961 1.0684155909971488383736413934182058 GT 1 -4401259259801.6168463724211601002907417891746223 1.4744850503112134435426968282512304 0.0833538778284469230752524848602579 1.0870337894172738987188369561950637 GT 1 -28402001774.1483154136615983142355724316928198 3.2743236044768864514244899360427765 0.0533569859752452683492104260554572 1.0548332219922481973546002535375775 LT 1 -5024582849.2410564663710447791183773271836340 0.0663840659287054960861378587353216 0.0468256162290399000298499348323417 1.0479574080475735215107096815057433 GT 1 -12863.5711641272755752866990355937096740 3.9833055413716107836691722461989771 0.0145702780983351277341347589410562 1.0146774670563276594878011825023108 GT 1 -3616248942506090878983804253.6492633746794752136561107869730309 1.3978411393558809314271430761320784 0.0157869907791045214350943308656540 1.0159129325712733771352597321806454 GT 1 -2085.9677837328246799894325009966902192 1.9250538827794897290001176991379508 0.0613769795078203588124177861927314 1.0633413495085881530410832903455711 GT 1 -65699082616069.4809449178487356826248595807965924 0.6593453291109959541305952463291967 0.0105397033021672482095349796808661 1.0105956393551086758956708517802101 GT 1 -13431633234546165435431450208405104087015.0211365501147928862215194632329020 0.4181394562340529520398332562801892 0.0436026997080882822919148961391847 1.0445818661833068180314719006991556 GT 1 -192604550110230138040343589.8924320280359376151682400842091412 0.6025872289630692806710477216442707 0.0981434844697848045323863733479439 1.1032998452646324174843038225186095 GT 1 -67709668.1141917085254024058696195996482454 0.1938008000663694918613871147459712 0.0616060149525594975260085922865928 1.0635853914594068199084410220734986 GT 1 -117675138991104.2043375524992916124412028670713769 1.4753741560796623630004235713988517 0.0814517514328585879335167355410437 1.0849608459655594098958872035784761 GT 1 -6251964362377702495755280062113332117.0867163855628119840145899661837809 1.8629543132058158640431769914965061 0.0834062979326085729861430523466196 1.0870909779023622569521670050091649 GT 1 -5668621967084923682385.8466185621992757917067487746193229 0.0699223152665854158457023772019082 0.0708863598144078952951687622052027 1.0735242223689173934715309671329235 GT 1 -1263082402909498355856263317.0130835408753476397210534353643982 2.5086993666176232003262517012681520 0.0251268238991741626031535746642264 1.0254478922389044397255066729620472 GT 1 -1433497869686191.5711775413816860110839495198089786 0.0776577519574018612578303197869388 0.0380713951249519225714870555564280 1.0388150463771255241111768106535687 GT 1 -266340648071079787734781722804044388967.3798482327636387208604432400095661 0.8276711568389696622444101307793104 0.0916115003728311042172847076860553 1.0960831288626108635165078509600849 GT 1 -284630346740338994266342.1039899279673480033679305297623279 2.9570242113946853030726579614158982 0.0703736533995283033003004928405782 1.0729725514181361230460484551089310 LT 1 -69113331056529397700.9987428691294992423607157810330749 0.6332977205867244900637847039194541 0.0446298597916821286073413977448772 1.0456564322216978562690006654269860 GT 1 -11366683772322282026977861612705408566156.2382394125398422086255891928089469 4.8678783494512633990718027471460695 0.0543809081514355410387634433159225 1.0559154423389401670921693980633193 LT 1 -4.2184633043628572826474919500532484 1.1380317311716602568598556721197054 0.0276384476744179068339360836002679 1.0280275762712755750311320167466626 GT 1 -1321671751179338290808882903900714445016069.3537489196719185923992367987970600 0.1943949866043668787756729194873855 0.0989429456744970380138172221691594 1.1041867000428955712130462460148135 GT 1 -108558460947145610656415643826264013996432.2726410773488670457335570176363132 0.8478566748706771229209016312413824 0.0354870677959557508758497917915180 1.0361320385312768001579060262891525 GT 1 -7122215432008325.4151587062820526400406853080067794 1.5926433213674385357891218749466667 0.0388350090667020649893317447887848 1.0396091980331316068082571848289438 GT 1 -136145532396682413.2084986872750578324465892164889843 0.0067658274489139902296631309384184 0.0929260372500646729621367201193352 1.0975312856096746109925241523011295 GT 1 -83321851784502947810507039402084.4712165411167854449350297080845792 0.5044029897651860536893385818609047 0.0598127646195963186254202787209245 1.0616762369782018797801734117033403 GT 1 -35817.8956147523622788281571276107079513 0.8149177174562723862753839580126961 0.0839928299386961939096007338593041 1.0877310867607995292841651655209034 GT 1 -170031354857748761403036173258283797523720.4822085510018308001685782426660665 0.3575290666533824766133599220223409 0.0465846491712309446964077527760073 1.0477046351990481668933816570976136 GT 1 -3303503.1729438675206200186386899781800910 0.2688680710006565328967889961729875 0.0344287139721876842846306816026657 1.0350353465632816778260579687117554 GT 1 -55001648685246826029464520486.8546769061378839276456837247315650 0.6139721471190744945475974261478047 0.0500826751514686964142885876001973 1.0513803246498041514678600768075815 GT 1 -39045234243268538789195237743294013141.5801540741132976594319439108083780 0.8365787106661350551223993497495109 0.0948046525271959907048644267421553 1.0996045050141295881329169968138969 GT 1 -833944152718702725887248757011895789368.6226314566704273892068174031303059 0.0673831251425518388331730643179044 0.0716541556603185231770377006817920 1.0743509385326205788218919627039942 GT 1 -1188295736672874216423201810612674.5691983836290557035747694385668413 1.8399355421262510593242446469071024 0.0796410955995722277952035344548167 1.0829915715348038842231610134715751 GT 1 -11180217459706528311900631088939775749.5063572578080296142270435775338805 0.3996724376589212837745292199920267 0.0657146178725503244079205678113739 1.0679733391073474984620679343493051 GT 1 -3035464741326586.2986585461967834875389438439888242 0.7015276991111068743465586673555847 0.0895091631044955920987738682806484 1.0937714436811452485671356440221255 GT 1 -11145749774255.4001319958460562074565134483975653 0.1162610599382306273522496627000432 0.0684329935285459430674953891288447 1.0708871575808056079716676081665354 GT 1 -47583580427.0576173602929013464503408087959659 0.1757452896496039985644129492472560 0.0354551484444202263057747273672003 1.0360989453271155140877235270682185 GT 1 -1272383325003694789.7485720614278442191412383047926629 0.3188931756191913940104680055444250 0.0571253465986541188306960514606979 1.0588219284060807504854737004929163 GT 1 -63577302555043.0542002667424699268671861356252416 0.7257999810558450895066987548952040 0.0837653432936437586816412579368883 1.0874827716717125564154632245453621 GT 1 -180632591012066703.9587432288445436845261833594455784 0.0646890376507670488277782589056001 0.0061663086997556311031801896125739 1.0061853988990802170552359495398112 GT 1 -2341922.5302534690319197299996185384331225 1.1389864610896718252998868646654237 0.0332864510848514436169590303181587 1.0338530539739740093118716201543910 GT 1 -5711384773383712282572508440.4036480335701704701921730888831782 0.1527022333399150852649539089816014 0.0292075839866008232091298325654082 1.0296426172601237896040689234050572 GT 1 -63757979687641992318102623357.8448055153299420690418936982795814 1.1004852951657151174161971265703122 0.0083890900685103761759491105118231 1.0084244765303869954949702466474547 GT 1 -309791046934678362497864183253785112016204.8193598958074375146646634593634576 0.1526970567194628006011630727188169 0.0559488978504455346736476182237610 1.0575749806688059867330286950294670 GT 1 -2444702070898258786723819.3392658500241217050043940438742019 0.1505616314639276514090304040715840 0.0499114766134209531974231752730746 1.0512001162165826701841979397446089 GT 1 -50015330473929335182774624563660.7982271851166498193751774745048467 0.4325870493740309616343069075030030 0.0481235811104855276267237571582589 1.0493200647079365790906421466471948 GT 1 -2020376324368398072475.4649850818451103171408006304566648 1.1269632332175649726949618594866532 0.0373639279991899891642190062399785 1.0380798493051552224859441208601987 GT 1 -139776726503816889990505037.0454612068923254610129730607633890 0.2177859811722601254313955154903588 0.0951921359657497854009606071432084 1.1000326627566239685092751025082017 GT 1 -2705707612002875162526341707047020978.1726513172213480091460998013583234 0.2409785165923665932820671789617340 0.0018228652285130930975414650844755 1.0018245286691264968940003872952604 GT 1 -1391096246860912512880810.1888525761770653791749672895001195 1.9412981808091682679553734060797544 0.0387094200271608736552911751903729 1.0394785432168430272136959323378878 GT 1 -370903147240.9293861987191946310217436241786332 1.3346896833431529568067629333970310 0.0303019704585557385359173437195377 1.0307705657027365791251451214192687 GT 1 -383977358.1342913769277295980823432790849255 0.1013181278315295991457827271482341 0.0051224995274762864299634680944938 1.0051356645058219064234775239212619 GT 1 -208483849370.5088738375160477566408025493586555 0.3577943329126898742710463408030417 0.0280735398765314638872476734789212 1.0284751356931209685277994561166237 GT 1 -118234598749754422456498.7967036652623348553464594384199737 0.1403853430311146919508029939458843 0.0721476804901924479604222467492724 1.0748826973190637456683696721278894 GT 1 -23580842976301909780330477432505660.8874537065723776284396142700988368 0.3302811206855382259629363691031804 0.0140481650910672900854970889758000 1.0141477745493934293394238394693310 GT 1 -70786573575660.2474178192618292939991677567871405 0.3044324199121549279903142682951227 0.0281056206502317458468925321888536 1.0285081436463764633922698526274636 GT 1 -21483151085242256314846573110067183026674645.8250587645933979002617946298492680 0.4002115881188534168154016785494565 0.0204666937539052527091675533421259 1.0206790388616087746945668152437613 GT 1 -351654674136535547701847665643.6312476117660049929625242021789933 0.4057434310264347400049242747014816 0.0003596417256742964027560132233158 1.0003597064122695167904952531395737 GT 1 -185535703990545614092107778.8590288696419946603137010359567783 1.1557760647983319345367205609524572 0.0438411972394002726139337138498300 1.0448312680514847785853608854394828 GT 1 -9173687891534594881873798989263342808.7800734415115654496414547971701686 0.1409770143634095928677501368447003 0.0552513305271710627904703178164003 1.0568363450913669433468263601870712 GT 1 -11920966491763967373015688063208.2998699077399931885375320060093550 0.4303818918511671717475585496609466 0.0215510552305323433729576551045728 1.0217866705440991287663357981366485 GT 1 -4709997.1546849975309913654397321674789148 1.2023497584066356638025893961231572 0.0548307863190255455601991075070650 1.0563913054218286813686548121711761 GT 1 -158719879872919548496328008750.0777345761884969226255621864466348 0.0428601343998873652459230104294240 0.0799429066963406144633977454535945 1.0833195529258050764232906206431064 GT 1 -14303586723586113433.5445327828346092186634117083487388 0.0326808644728795653417322316274530 0.0933297792926263059957596122469599 1.0979764884700478878753792955742469 GT 1 -746039825776.8778572423773152975222740672115588 0.2660248275137392049187942874476938 0.0269823921248134703705888497454222 1.0273531004797207155659997877131142 GT 1 -19712078849677040742003647505430.2883864707290503390768960983258511 0.5729003835139854744914217865416575 0.0017721190409173636706464993682813 1.0017736911013916868095280107240852 GT 1 -399395183927536.3474572014397963310873058936811807 0.3947170533650846779867415131416292 0.0600851136324446716600485224594912 1.0619659542351561335932096899258959 GT 1 -139729945.0702552412236908336237878653763190 0.9828440927041427426159859967888748 0.0882983213484911028285184339736854 1.0924424491606520191199162190123597 GT 1 -13924309.3636851632174760126017496435041730 0.5652555806902491948931700579557886 0.0330576681489024825337966663764925 1.0336164214487225574658194320299007 GT 1 -263946413015906923609.8935892533724699481006633105538387 0.7137478655249010574308576111129673 0.0800439998326258591270563476392553 1.0834294359877742276666228975128057 GT 1 -421361838095954825739658955189108254720.2796319434807987363983442852237910 1.8520727879486249026602995082650181 0.0940066537805336741676357894483111 1.0987233170947503315332234966385537 GT 1 -1296705.6287905196688287530985703168541106 0.2275099243197339552845671724077199 0.0421918530140930645257142313902422 1.0431077851733793054024142196293438 GT 1 -2809732473988200310365469066.7293300948569395391306023890712456 4.0345648489308090609019373018206693 0.0379654481580486246987609460380912 1.0387049122857937820994580091062820 LT 1 -1744307452126627410498.7128629372827743036679619646779752 0.2307639631575804754441181917070012 0.0720433093163142139881564750405055 1.0747702168068828152651502884424454 GT 1 -124484686323430676924291863.3603901996383525704150975710152760 2.0172309932215306943763859928325813 0.0217701826750090591105988109465507 1.0220106495125816519179001599677767 GT 1 -193199876843986340078729543608.1989465449681128808275527298419301 2.0337537227686221079711435933065669 0.0709898814770785539610591456432240 1.0736356483837806010498213320392028 GT 1 -86860143336163908184692910362153546.4954021920898298506271950636079532 1.0260021739978881144283094763093134 0.0307126468806297179840205855408098 1.0311941650056372302055880405868796 GT 1 -1390348344180989680576307551193992469.8094501422153919903629721707657839 2.1869384853795582859703835897497358 0.0655441641087701285413986449773233 1.0677909128167414248935021430634161 GT 1 -251.2652763863491551123567027244931543 0.8387466168972679406799255730961620 0.0374960271456548500162416899370110 1.0382170851878383713650011755937275 GT 1 -232865649115245938845613716014115136.3310063767917991390274786979093593 0.7193668672620343585373674365652305 0.0116736981958937146983251265203081 1.0117423707758308861575394582329758 GT 1 -106094939522.1468648565500344636014312260355806 0.9491709258022092438067050648649174 0.0521016324550700689489007708303884 1.0535079897053077747779668069236241 GT 1 -49847334882256803299743294053101284.5593019872762273990983721792063587 1.2665229025853043546056024095311132 0.0561734516697420895074298483076371 1.0578128708946884477158559538598813 GT 1 -2977782993395873868983824548005.7790562551458277580246584770586866 0.3216707715275412905098231110829796 0.0994489537383293979154544010915828 1.1047484293967688358243924910302571 GT 1 -541692556.8507755632450919935860522680714261 0.3900636058148524843069292083156458 0.0856401537870411322348747951009154 1.0895310801812144721748382634124309 GT 1 -2551392939771125038492895.5726881965098437824802783174621651 1.3849070024204108687453198526331122 0.0848671864278171022297590273365578 1.0886860727950588150813091580985233 GT 1 -26.6015691340300736369119054380024251 2.7286062560201385976958335564716042 0.0815666253605231176732224801824493 1.0850859140951074294157766704035306 LT 1 -1112118567336173698903919525878917883548.3605760862348431336556675635859014 0.1585754549017152440762995635722126 0.0805096451784188882459564029663717 1.0839357245832275324337632967477936 GT 1 -110472068191041591.2823782801659755170957670783649469 2.4381890449114315331008098951164392 0.0819568522687924153001480703397179 1.0891669435277435054069317677082659 GT 2 -5180596777826802595348716884575557.7110408962609640331235569791836687 0.9326284402732267532995872160955919 0.0228280358956371941541266200305658 1.0230926300384004065790021708367267 GT 1 -12254889463574505093709.3383803701146853553364564786423541 0.4562169575699241847665702342938578 0.0246850007817574922186317418217407 1.0249947840408676010956932477417643 GT 1 -89265572047659690.0100776912193671884648470355110869 0.9564088875900634079836632696217113 0.0248047077950867598674226804605577 1.0251175283442490708849853065806255 GT 1 -5425996.3974881686753080756593071559015443 2.1293296559710166802119246883288275 0.0215310835534337315358222834495221 1.0217662591844860126863401843127143 GT 1 -742676572327853356731061477.2643247698097171982809614699429813 0.6074221946870168567246516239424655 0.0171196664316133396787330554765331 1.0172679021880299697368480949664841 GT 1 -277328010632.7268477488887494080270940165746062 0.4988311591338000293223628232550944 0.0530093344174065323414897863228695 1.0544660426740004283950845746260001 GT 1 -13511004175781269786.1545181689053312391175348273625311 1.1205071926400007499612163757176968 0.0271454825977521348087201562442763 1.0275207276030059104770204477936917 GT 1 -695679132398752986573699090101277492366824.6124461831239263571942420456254032 0.9121257328908253338127510302518188 0.0706234369626036311314045161665279 1.0732412799535069069725595497270215 GT 1 -975.5346896529663022743741197131448085 1.1650042254014466718723871815446766 0.0407651387573412229798531890057744 1.0416193318480921448358283332269110 GT 1 -6369390484085214187007927889686619906.7435196953999351846493843379948849 2.8184668321159395211449439023027850 0.0643473075116888484829250676398110 1.0687227780614041908122604600759105 LT 2 -1759012950203441228141.5850406168836833836728396995542894 0.1138387049104136320419550265964956 0.0477484951246757909087975400814262 1.0489260932882856864137624636892612 GT 1 -3812710495883.1032576198337589425373344519409135 2.0172734075463448102077266670903281 0.0510234731835632154790249054143932 1.0523712153288672493814816811629700 GT 1 -117259177288874037139884001036.7813816403193343320998545470939827 1.5080467274816705845543158089890759 0.0586828028123468206250597288374758 1.0604751109818552034811189666987725 GT 1 -743.0758732062984500591876579586820665 2.2102512166684821629907141305304089 0.0433248673478647956502296105184287 1.0442914094735739752198476531510589 GT 1 -5723343405927864135898629255133088181841568.3385131651410487737900496526297788 0.1731210816883626694912446666139737 0.0791733321895187237578208331619804 1.0824834604272900238950934865525634 GT 1 -120816.9137083073533102716696479878373097 1.3330120580888336121115858649338059 0.0098192848152487568911202342076117 1.0098678119213500338158024952490859 GT 1 -30218204446136417975021621172459112712459.8283165869995695753565170984987128 0.1487108872302996285521100833375586 0.0331533986953681309446413710997582 1.0337154297167941176278043593310995 GT 1 -35704839.5540616253197140813378166270407867 0.6907939476384950225084102262479816 0.0845459811337282409739350783639950 1.0883351412886222222694754771665112 GT 1 -2904841851973599.7934604897549832154078660331522438 0.3530500502020088098754768064993383 0.0894528077002292616944648602448384 1.0937095499662630560374155442204344 GT 1 -55.6547270252143298314613262125178105 0.4887918250797618073695230593759461 0.0446564704912091136321931518538562 1.0456842864208386886954169065360107 GT 1 -1.3820058601863087037072480756903258 0.0990066385350877334674791131597530 0.0461570104024034264256720211595320 1.0472562022134064283288063884991846 GT 1 -1786410352405180998392705.6712379749961724168985744644779207 0.7919635693614958467107575328452970 0.0044517053132767879913587513921011 1.0044616436594017457577519563420141 GT 1 -2095877284750540656357665315.0166703851382149325548088911071681 3.1282356368851818427732523150203500 0.0500979728475122688474651603727725 1.0513964290189146045022121218156669 LT 1 -2838174890710314.0442793881982567397214173196276751 0.5325718000635024035151098861771510 0.0985314424707661026180855617923571 1.1037301148957293658900494975666564 GT 1 -17976750.3217341152616343553208883593802753 1.3101774766731943879369729935900025 0.0014018186135349158975319493679119 1.0014028020804498077981833191540580 GT 1 -7696592339906272278274501575532784058.7080243934072902174008011188323411 2.6723630754691438596802736700390726 0.0682681222894168269460931553573607 1.0732101560691646616225608811189283 GT 2 -1278312210237424604.9826703953058409482576866110363439 0.3671067199208667991374022668253045 0.0848851485483372545901409506058738 1.0887057008714814614276762624296122 GT 1 -3792901139000678527545318.5868320496822439675922765604291998 0.7514373693448438068897124041498632 0.0508656458725462839392693345754784 1.0522049159698938897130020009966432 GT 1 -14286733254.8158399716270840799272407380566334 0.1838263980056123881324265896083800 0.0600846137996390689274964496333403 1.0619654224501190515436588508238583 GT 1 -32263310241931617553.2415225517394226201564166905424396 2.7262353935125796491258212940256596 0.0591575932387530565705583177077490 1.0609796276397210643973537401250664 GT 1 -164544524953245034353118199731665405358162.2825358110584294297354090360437427 0.8395246152998046249085506906906597 0.0377269337660384473757890778988552 1.0384570159609118920977099769501780 GT 1 -182515461743063376288638356627797.4349084636003853747291329984704414 2.6677319657936116950385964218283988 0.0363270855090314543131339652464443 1.0370033422675411869920041626546621 GT 1 -63233470164228247.2032287956140964146217643535050206 1.4806828057538815841548098943040968 0.0938953114590879613254200842331570 1.0986004293486681447042216967469306 GT 1 -928769979382971537493147338844459.2997126428281954817051143969971744 0.0316122849330395269215759634804216 0.0212943522952513095194678656008866 1.0215243479480812463943405295165344 GT 1 -19660594.2909378785398545073556439303201135 0.5981474110835078737518438780576674 0.0648706190685788302080430333990248 1.0670703839387094385916587848949618 GT 1 -652424088421947733854530033833851.5914604851600943026361894483297419 0.1186992546836536035133153327797644 0.0853847372715153268441008134284966 1.0892517800245994127154254587164967 GT 1 -2587006774730337247263358205067098624109910.3421383524981863903226984704382995 1.2353327019108603579892084432924636 0.0874285448388538207720800572604671 1.0914888895654119659159155197353155 GT 1 -733981453694024118.2343759754127563197548127194801315 0.0037645141121032822658754254792879 0.0984483035277325616197982375590932 1.1036378930330986473679249573396774 GT 1 -29.1434881223461161673820553473006141 0.4125696090493605578929552630004310 0.0846343318631119055051843388576220 1.0884316562322613391318981460831045 GT 1 -26531933999669.8417319348200193452141718920302024 2.1697107113766492766845600239751419 0.0443071683378982422490353406804645 1.0453187233532821829598785165817937 GT 1 -124597835005818840816716676.1129195069250456321749715059430057 2.7177107098564826742947902274524646 0.0657967493044575669567800600544773 1.0703774182249693206863332243738296 GT 2 -133795436492910121788353666119117857868542.5828428653236845558159649393035851 1.0250908035784073449137492948581168 0.0261142590930210502641706668114885 1.0264612913512679080315086647476676 GT 1 -2.0219883642588232617984033238274604 0.5946499568997489598140558610177509 0.0352745926976104871459072162577703 1.0359117701540075641758298413880644 GT 1 -56273279.2317938454809377637162690923472044 0.6140427969953663182989871224319884 0.0325919828174258346103054879866032 1.0331349312774037503055640954045016 GT 1 -672974086897065956162.5821607053342389680433537406698979 1.0461767226553249948065488471742886 0.0412745977783174335895524891464336 1.0421505827219115413569681774420348 GT 1 -846.8207937141568360594606345652954836 1.5381615671569952768009984347442976 0.0097926358854153210911405829922338 1.0098408990853118844492953453879966 GT 1 -101493128602483395982999093294.7866869201437965312361465243652240 2.4786968737281181368710755301999737 0.0584956140970169828962154526895719 1.0602762724751929788718745150847423 GT 1 -1.9788982610150279220429499696886553 1.1354826135433128301006388036002988 0.0108985913523118701575942002820588 1.0109584160662024162969303359440691 GT 1 -25.9927450516778037877006577914209895 0.1747234713929657654226898978281518 0.0100178499252503411795319739858734 1.0100683662435735444835871122847563 GT 1 -527689.1084515119306897162173536285076740 0.5751189738258024725929677949408835 0.0080836717044893911745111745047168 1.0081165217309281161133145049164229 GT 1 -45126697046939849.8438984052360339460844241764942218 0.5404579700457170986631104811589039 0.0568062176196020923224242423167981 1.0584835218286277103767118541831795 GT 1 -176178840793398450.6657373366165298259006777437007042 2.5415117840254264150703857602502119 0.0132925092485078013265229381330870 1.0133816454264464037151164827964118 GT 1 -322804245.0979524261443263625038972881890678 0.3453105045382461816823293799253195 0.0436508130705082920763333078334991 1.0446321743268601755372919376219312 GT 1 -133676569002567345181194.1762544469792472044673222995818724 1.7031062081095204524842097030572376 0.0205821620871887452222537687449142 1.0207969267770491541622979793123150 GT 1 -25770532241448.7034214531499807294473645175125656 0.9769183878665936197527497173166620 0.0528654109795605258852998316638135 1.0543140744366589602417500747713778 GT 1 -119214368641252.3860438726943978469837106633241694 2.3122550364099387665024940341055019 0.0485776027380018897658036160087923 1.0497971538883378024536458616399474 GT 1 -649708659192117248.6866048718734842196302974765887788 2.4411707280913030704708946138507211 0.0900109931513573978213656000012233 1.0987711514507528984914773374503741 LT 2 -16822693278433012153317980.7477100258032927350110169639034213 0.1520157345625369226943510060008357 0.0637333500392676933636618239994547 1.0658549606391613709125856894615631 GT 1 -8045487.7640032712277236176859716817403309 0.1491054775582376026546949792766659 0.0330887258486168256478180360232818 1.0336485414598967367456485922535872 GT 1 -8170204679929013.1995062875696244240721519612579390 0.4449248904868766795708595877664640 0.0567022752034703983246019411063409 1.0583733252909370383770761407975965 GT 1 -543613495470929082544963569415.3471693051122260705794058466448320 3.4222065353100724219754006722149213 0.0421405908884267583304249548612901 1.0430542663616049169565626414138947 LT 1 -141933252916066650267587898772075.0224879810590439707459955457327412 0.1511871487968408736436634779586796 0.0252055296763929803895243754141797 1.0255286298737581680195781796148487 GT 1 -4223900350895464421183379203909751.7879785110568799404237206786578852 5.6618378330537323020695753616407895 0.0682412468752666374847736756946421 1.0706813463822337620350774416651354 LT 1 -19155015.2114629423833584011059651070424995 1.8817275326964207223424475363593569 0.0775013178061414665393424884219625 1.0806693315846176415233660018702021 GT 1 -398162168408053820968628603511630318653.3515679863203626696020813165424917 2.2449918956555447462448750625360924 0.0938727620148627904970233884946239 1.0985755435226364174707131993650944 GT 1 -3024383302082492090812915817018909695181888.3963433567134203601621711620420427 1.1359504838300774567621555518024245 0.0764821371435428907275295088340659 1.0795651369674199546544964368847801 GT 1 -7411352580438.3487137327941156422174191425306248 1.5754513994314431396586483739870078 0.0602296482332046237232687912692447 1.0621197401968826431628641656057446 GT 1 -6459624444338011818423827730557251.7929436348235112186221598659661233 0.5298221820633612999036335492028803 0.0108783709505853433986143986011206 1.0109379730713106269267240031976580 GT 1 -29724663635746925527718335001.1016045451420940133192427445662928 1.3679825892039684489175705500933226 0.0508725058595674493780378043059244 1.0522121436208393637093347784438916 GT 1 -12271309114472055302170943079865193550.3576814450032192531647353599595578 1.0938794749612980210734246554097144 0.0788581481182398059890020894505363 1.0821412351710106967662681212839972 GT 1 -4536.9788548074148169798352355311747236 1.2583455844742354886872783839682164 0.0924813068701720885158174902680794 1.0970411145651086952059324469248803 GT 1 -2006453732598523383584050447521492286933911.7155242340347070157606378666275547 0.2935698197543240731390788498315141 0.0443951588922474859414854159250506 1.0454107975033897279109812431032169 GT 1 -186365982201119972106669015232.6551190059744891644628393898882840 0.3881603496598933286503511919412792 0.0546955292318460542998656629776343 1.0562482120918099727576206302606120 GT 1 -3370250262651037523.1479101019400205566685727738856608 0.0477917189236564967618817905396413 0.0542557506295543843306083592241589 1.0557830959839736226021277711028661 GT 1 -32415934619886135143985695228499.8870031363142552442947748618143640 1.3815714654296937797056149458097035 0.0369707943106063516280086974528133 1.0376715398252054978756411975070459 GT 1 -166995533669840060538863.9894029613911172598156145590313780 0.2466093354532514960717946057416847 0.0015311682972379849451131415301063 1.0015323417333870018706740867151170 GT 1 -252730.2523862279534269147227305572917415 0.3833015802253879631215436919641810 0.0374691339267247993511147321703356 1.0381891446868271983497505099615903 GT 1 -4244080306155717.3467502886177442749113366934173902 0.1942749786876178000374945907427847 0.0046699616400912220847495136750740 1.0046808999786513470471441106979768 GT 1 -27977064058843684852454117.8279632899506471236502284575223232 2.0421268623459181651092396966739671 0.0081977366199731739885052349361243 1.0082315228365165352293611446427069 GT 1 -179100297210282.4342763417183498273683606019268219 1.1434819682123386469455574982341569 0.0521808463653350497947972122630055 1.0535915611334621069057068529965695 GT 1 -12247465222384501415351541205739.1849337677844178006974439268256717 0.6292814321734954275261853945746749 0.0725464254503904587659818311180991 1.0753125401472618060455752156987212 GT 1 -117698021811589251005526.9332302071773819594191543318899634 1.0019187856467357938240217843798371 0.0825878929789864000187626108873215 1.0861984998045401346754479613255307 GT 1 -248146570269721584.1669378315587954848451437029096542 0.3791605655733546799952183418645637 0.0742541514869790363531214987406555 1.0771555436564545722307267516152798 GT 1 -633955759126992008245596277869986085.1610263563408620625863785847866780 1.0621297960402451585643625322543911 0.0254905247420336613510861933350729 1.0258210368822365578579232281970511 GT 1 -2437594052102.2061059111126997822286881266148508 0.0305848445260228202218390540892956 0.0937197898489412196547811294841429 1.0984067380297632449087350428557806 GT 1 -104556117062335806363.8965814402810502680244392721035536 0.4708578770559286355127555757170083 0.0120556745159672204192923476211780 1.0121289335466941487146511634167978 GT 1 -46075495163930046762612485.0651578720191425318746710253876253 2.1637909127494915598569493187645586 0.0453288647324129321785569504723754 1.0463883587836119131156722496016970 GT 1 -1676077830623097870403657769798600.4036791331306536552698065041444528 0.5726763532271597277816552904683299 0.0467980736135181257234906174662180 1.0479285127918184644171197756241576 GT 1 -4695839952205137425908113196832282193573.4850651498541996412971333165479751 3.7538379112788015170659646829012510 0.0132416716753728556930158727181399 1.0133301243180950154081809663059698 GT 1 -194320578114.3016777610425907609693086688932053 0.1437946722892966458941247320734760 0.0884243379022665936645001843590734 1.0925806799730026672798433848373118 GT 1 -1252146839623510713224446866281879316.2142474208346507638308780380160036 1.5278433943244189406451193390127068 0.0764089028548682575631981975970464 1.0794858408454272984404084529236413 GT 1 -19086606709794749488248958.8591793111534745840901664418724348 0.3171176135628805918028920781845613 0.0540111810101692055946351263448988 1.0555245292497569796559213407622978 GT 1 -4013179551.0887259999846178640113937234734133 2.4601221995210841308433375683436614 0.0231740025234530069069477373971111 1.0234467415965835179997745170537103 GT 1 -1128.8480141050910585779256763776691774 1.1330626079634532444180022942079998 0.0445923243965959027671028257141217 1.0456171441424869214296319180319836 GT 1 -5657232921.5775250770437391446281344394041024 0.4882521080238596673454862969914181 0.0624889199600506449389619843479871 1.0645267024981322538405970120641153 GT 1 -384020476232006160.4947444781038092997172986450705896 0.1301878095988699045269082907008464 0.0556057616643911669024346198619818 1.0572115746623154434462493972806238 GT 1 -1650531685523850.6113568128652153165652833278821972 3.4353573611044772715736845894727271 0.0456025049625108206755854974823200 1.0466750328482611083910271489485041 LT 1 -5230.8633130219227383717417252967541427 1.3375016147725041913447922034858704 0.0348962978049274321923698138676362 1.0355197200023472477192021112369548 GT 1 -36606396204515860491270970351552586796.9372174489266850572423481578999487 0.4609621176650291774450716989507394 0.0684433187629344997027461445006550 1.0708982413692376701310668807862147 GT 1 -1412707587.1648589549433832399553671593092202 0.8978745911836907209182908840759243 0.0856946329598100203423927586065095 1.0895906637204978478358487497918022 GT 1 -30047.8768579780297604880999782681145872 2.6814912503463974915295268281232689 0.0952213453550400801153478112177105 1.1000649456997066247767100005080319 LT 1 -7093082870339462950431575.9830109502694654133913226223549617 2.1714339716891379774823865656754102 0.0945750896632661291341129356697384 1.0993509312852708921906575169331791 GT 1 -23383981864621496393387420851880853387.7093567896406785596261821080009907 2.0072795126886588493158848038489724 0.0835515487555217268034956700074314 1.0872494585166293445796809588259532 GT 1 -344981139289493317835912347657.2823292298070394826936671049546849 0.7748905797506206606460833253887151 0.0702052056194051960972491105796319 1.0727913683855553082127052637144346 GT 1 -106380907210585.9530856010073897597561333984719121 0.4130850566437188631279744821334103 0.0343585059093208479854291575593830 1.0349626377829540553238566625814843 GT 1 -53596513640638492237836186688350038310.9260300509675458088340698497067798 0.3250509384837941915213886416635128 0.0981222052629983482290230230674609 1.1032762506513167889177156776158142 GT 1 -2874.5920756109268111158003511895088613 0.7516698633613816789192425002508908 0.0516452555233311066565488850693915 1.0530266436891485003029750842822229 GT 1 -763725.0067508565336492144835429821612831 1.6158562236565205014917494548729378 0.0249754834913424573637793141205735 1.0252926631633388763210922714903858 GT 1 -3978440062679197938678916503799.3067824180741190809416793752596931 0.0244605300819904346747544652866861 0.0687928290738172834681919869348169 1.0712735012977341324972645125689547 GT 1 -394030165384.6188051500220152191846463185790343 0.3655433746235178353877913562250294 0.0634608628169239683880943633558864 1.0655639670656290283417969092685017 GT 1 -89002404688.9968641090599319325311738767098877 0.5019039709684966970919641266759742 0.0280850311608336084185793569664352 1.0284869589664919974809558061023313 GT 1 -15419418.7355129990830930173302813986533055 0.3988894680130590945852881085406044 0.0602943351578083694732288414574816 1.0621885752594826948867510679548558 GT 1 -1.8290823839686050950470631711013136 0.3765133474367625646237070328826720 0.0699919586608815922636466281302833 1.0725620462710144824434548769959128 GT 1 -296021892121766599528354710169.6451269433646623794998193874319872 0.6187213058673004602905436069943155 0.0430830902222496724615386996759240 1.0440387149372874835371940952069446 GT 1 -2076012808403305999697562819545371978710264.6302576001373427158108226113284997 0.5237987059504947490416496527398148 0.0447925106725701806383215987158678 1.0458266957888689089014469335048012 GT 1 -373873895822497865643329836.9753974295619191481742221530522035 1.1159291641391184325261565517360749 0.0431672808382701239829400902142319 1.0441266999221586956636773463844409 GT 1 -1121168938860616823045401588803549244573.8941569542071771251366237894762543 0.5966577571578209640046114073675313 0.0952927316676297524778939593685604 1.1001438480130324430999686913152230 GT 1 -6052525774934081802.7263863380342284116715197398033919 4.8190951820806716998803803171934110 0.0433037075084069510666281202928717 1.0442692916148240801559039029184748 LT 1 -29491780.9233968920936637359987062485119619 0.1534273240750563929279810079286197 0.0366270629332398193199789193834045 1.0373146762468431500193155479746711 GT 1 -656202099227798441253254212331841.2361780508690814741265806186097302 0.7136010159535337688026980410674414 0.0962116720393656430892387503832449 1.1011600964934895142532891758689869 GT 1 -660901823620500369.5069051247444771341160379336186585 0.4181546355758544199919601849492597 0.0890555751578442540239433168076157 1.0932733881470770156357405343801265 GT 1 -467776105895078522682270436039802140711.7200805008210316477723328726730389 2.1105331838387428010153393853711308 0.0905965115591521730433516828714429 1.0949664016178850498554130349774202 GT 1 -277094585624073234341474.3273108105707882897145054244808736 1.6749894336381057918484135433764854 0.0764806772164611225679429477085468 1.0795635561361371642099917630323665 GT 1 -5.7820898033113215007823568907636359 3.1938558275193575402076351766350819 0.0518812268118914620525692346364257 1.0532754964019126430434381857064893 LT 1 -2742.6010457638759578759687954285689934 0.1638026543715996131840856133860041 0.0989459142273138747923873352749872 1.1041899945709086189768549738404703 GT 1 -5374624022298975726080266090915.7260293754739632016530427547000085 0.2424656983634748706450487706486759 0.0465368177698400882137964737047567 1.0476544679748945034332389625170210 GT 1 -488547.6114753189188066283403525512944958 0.1847047425336138244136151055660743 0.0193364417984591861612852695013258 1.0195258362407868124048467424787322 GT 1 -3751485608078883269503161751167088702424.7154536200488025028543768141811488 1.0182142023951560746812277593092694 0.0865198498642559966446286199996896 1.0904936328629509219283213435346362 GT 1 -213591490.0443899539064262772787742469345040 0.9377672366070901053946546756299085 0.0408647340573581679029200358926024 1.0417231650955922563381862851619805 GT 1 -14327434377555091.7108185825549527939710784499918980 2.2926929966104493351368516066675641 0.0790009466567130254321878760930596 1.0822962705848101634597385806172864 GT 1 -638528269097396284819324.7819814248540982814299489630956556 0.0602832262114666930824207168269560 0.0393533880924063091338497035902575 1.0401486671855811119120176772958686 GT 1 -91788.7153984997058459882602368673589116 1.3626430686829117572031818958106923 0.0597002950973172148142920884783351 1.0615566195323117455409417603041320 GT 1 -9682874454062151519621.1061524868045247918607491074124516 0.9207082688509410161673083788508354 0.0584212553673818861678601620177673 1.0601972969605510991923443713156679 GT 1 -518572048975959050873444774133561388442.7639702424698302997921143801951511 2.1102296789799260590316633158694604 0.0942633865034583468978620807776390 1.0990067287845182266507310490646588 GT 1 -13211736886506556285215352662583425720.5434769988894485677633418086903478 0.5897262939311269997237039797792340 0.0612869095532111736763190182209230 1.0632453944431595711235506663158307 GT 1 -394754785558020690450.5117952008197065055142123744252256 1.5103770437796751752852052919760127 0.0333660114745214334817106703908697 1.0339353572207252094498133467922235 GT 1 -4318455441711990759734959.0840186542756666195432174910036828 0.0823602106469237815112615487463701 0.0799027095880306422873460222892203 1.0832758640824427057613385772186130 GT 1 -392453272.3597232163746502428393720678491512 3.4120747642132639826367711190739461 0.0031045565601093896315456223677416 1.0031093856932950182549335485289584 GT 1 -180497397749662861128744.0672273025141989818189096314151061 1.7417455159226609619949756381332266 0.0459320373286854516034430994719981 1.0470203703738825537018066502033319 GT 1 -5726.4357963373073924892222487726149138 1.3683473667379687734090095339363133 0.0968434546794273064452565126727705 1.1018593792166634278504322464927377 GT 1 -18752473957212165395555949294392434402062.1094530863106207921322683846040070 2.8813549194842234299943808310344158 0.0229182289376894648600898666824634 1.0231849343697093766533992992976549 GT 1 -739298774915225585546965906785557.2346971605572200912897473610337959 1.4594107469501818437431759696823989 0.0494770821331122466724930990385325 1.0507430059641198035337111905530041 GT 1 -29631.9884190726501229322186730734412305 0.5835637784220354988742504201000390 0.0630691799446681556134058635339752 1.0651458307870628898828387850403598 GT 1 -5836.3380147295246835492322746414827487 1.7622863589773057285458184951595110 0.0355117891327424170153757778629854 1.0361576697621102447946358115918466 GT 1 -104820587460400070565113503.3886242046202498062759317978082652 2.0987712039075953494390220654565962 0.0485118161512599676638769326956380 1.0497280107689278180192999034135105 GT 1 -156726379191.0687730117957186459943014320347143 2.0767235742687649561971156549711407 0.0478740128648201683795568166290127 1.0490579135191513858411204522962994 GT 1 -887963102088509211089098928936697063421542.2434333281455227158808340744660166 0.4489962000119634631701378927207621 0.0298083100253442732470750481131003 1.0302616084781052881986385192822423 GT 1 -464395059935328941443940785316685091022340.0080996699200366989482317623499715 0.4835144176083029919303124458417773 0.0338787556738455959727309322850488 1.0344659409207590583470514207487730 GT 1 -808252.0659371680488995595394510421991097 1.0454759778487983031321678634644905 0.0852303275723930976760609894045317 1.0890829695172845719605516128265121 GT 1 -37390279.6366677297577772519281400150717849 1.3077632338480724060025588589816904 0.0118779928472430527218560433229700 1.0119490998374016773741114378797143 GT 1 -1353822.6939494388672569641957106113738635 0.6926778841527830892409980329250819 0.0385662977476474095631876985154553 1.0393296687462796564246217702097281 GT 1 -84748819559807908119887.3214757011543438820955676234482234 1.9838996559634672347988667014618518 0.0425699583740524897618576789689287 1.0435026241726430187265386694237880 GT 1 -264618928805391104296035125448287360.5325336276922484027007613511595411 0.6559010146315973684940260859542118 0.0091251308242576461491894494856700 1.0091670198538483095754297371785257 GT 1 -13951685033058036694142591117553289.9182256669931243209069669684224879 0.5953647470424425467810620116126292 0.0928425454621583403097836535609770 1.0974392446636633326624040689040898 GT 1 -9165839635111517014814185113431.1369136468562303331405894742938185 0.6977026228273429499843924821317588 0.0936120743199765019100481047186662 1.0982878905397431046069389084352890 GT 1 -2666428006.1017928164176578361737692669823668 0.4538187349233416963795264584809784 0.0207752244089125378158428379089774 1.0209940656741792187720663019212474 GT 1 -4080556241594609457650209127.5022688567866482173705982146103614 0.4992175736758708323851262537287811 0.0659700206557618167878295950233014 1.0682467434694475400477084233637654 GT 1 -97.3420335467163897510889183045751808 0.7569754007444788683761837799865747 0.0551055942086071186095754070321553 1.0566820976350503409921058100134621 GT 1 -305800430065954606014800579535506.3754309943509043352632918338307448 0.0899189453508929156730277071289721 0.0240746575035019540518625200781392 1.0243691888385615889010681780706539 GT 1 -17451209043381846069960414.5556147878403241808822262521058773 0.0428970812581045769568608316237440 0.0217708278875215065055187497704848 1.0220113090843037588381558379728449 GT 1 -988.8078888645903115362961766878569055 1.4996107646241348629164089071237928 0.0398728160032438512133661975330782 1.0406895199654421343882139247498784 GT 1 -117062512649499528084.6292018614822275246928761292768964 0.9949820063518414164057050539964902 0.0341487625559872005906407673949419 1.0347454551337691115444545927490812 GT 1 -834825881813503612465594226.2232779633814843102441718804350914 0.9121515442822649036666523130612342 0.0144173215797288064201147438178479 1.0145222610120750870549896617494490 GT 1 -402674117889363003346611904015.3581126429277940998015563253343836 0.9048639279411399030493732698598364 0.0157796049224518029096391822130502 1.0159054282720305124464658749518670 GT 1 -4895148684406324048212657609001961603.1669953033291845473600936606340111 0.2567136777790585012836869409383941 0.0921716890915988769445793700883874 1.0967000031622896735114013889456916 GT 1 -40847391162.0520996951204707388142037880849977 0.6931790222784376577673834162862797 0.0299690525760735890381908912601444 1.0304273034328993419594100503464977 GT 1 -4156839251467776690684298490847806428583323.6824945399925782145461166137332794 0.1110443758409579124171505297210357 0.0957001518154632905973362984395531 1.1005942831174631083381360008896717 GT 1 -316205285189873054442654560685951135.0703541173169029097779010173321639 0.0899824961272194669976797117085485 0.0996990832194117096264518753608139 1.1050262195625615234386293618098274 GT 1 -52533530017902.2481820370145537224807617679524701 1.1944762603749340002480360047515308 0.0708360100101980505765554608179712 1.0734700326144861209187438924913522 GT 1 -5047.4578756689723668579837562468247698 1.0745144779149280405882776030291695 0.0071973559261800184482084958486304 1.0072233818460717156811660297797853 GT 1 -2427886533082831623116326692878193170.8304921134378776598146963124466886 1.9367535480921572984794270539477898 0.0837464032471749291844599620189489 1.0874621002743011395887657950250325 GT 1 -8602953590264931392709749081426.3629929528315480297459459372387631 1.0908651958163244826966216010141193 0.0212322954015610220231514259084583 1.0214609428512628803062186259871379 GT 1 -543928669543558564608732189049655.4241327657705512834933358825869989 2.3331527396588254609525700138488352 0.0147127914726389474463510098732798 1.0148220980506138054249584839022066 GT 1 -455372510365317703.7962415216378670276274996431216650 0.2161337132684685267507176270169538 0.0820191133699953007689735273951076 1.0855787092428825300308154148730101 GT 1 -8717.2158711454317950919511236925126988 2.6230183909813780017448193295791757 0.0210653068300187541749146290394268 1.0212903463682247955199364343254046 GT 1 -16760202842203400835933775.6322470944246200967054455662474767 0.1792184022741915204035090062011205 0.0626916782167271985616959772566494 1.0647429988062138364588432950752842 GT 1 -2552201283696188510.0859783339548040405441178871369437 0.3796091070236761406112326106298397 0.0892870534493083159526704403422480 1.0935275284660470450401200055467742 GT 1 -296.9914174975568265211812353606664040 0.1369312078233563557319161926434943 0.0551638321755176376194427633107376 1.0567437338997560781693170400162083 GT 1 -1073337754405601971203307281397985754.0519183783761622540563963416746843 0.4252002985314428441143546098623124 0.0604332522327125145002206691435136 1.0623364165987425812933339430447313 GT 1 -437788913000922352158008246593638388.9302579493194707887625356156343197 0.5843288286329996674807196944769961 0.0735724690295012001683255824704966 1.0764194543725804620478194813696548 GT 1 -76782655301428453249654.2054415078788024124723227175900600 1.8307002015386468699477566515751371 0.0522913206293683561285524589236253 1.0537081241954597110754433016670426 GT 1 -4420761934448889416.0571809462656984976582215871136040 1.1601134583652800253506229933518025 0.0683531674347740586477708380167820 1.0708014711264134513063637072707786 GT 1 -40424502492792041695414695869492452681.9874643780936971054398089388451147 0.4476478944473269686293687433825086 0.0068215239552997611237639018260124 1.0068448969032296114325119219300195 GT 1 -547263329687971262.1336585852299435992377707501912385 0.8948603299925225298651725126294210 0.0222917696464685182567694482544049 1.0225439864293027444899373418135186 GT 1 -326613169875033160603152096583925.0766864455131663133554134314294892 0.4606381946518857025426942510237809 0.0090898157529713029430473051319425 1.0091313801953201679211954676054366 GT 1 -2930934789832583609904227095.9281699197802175776835530680605552 0.2782201544602281365572941626622223 0.0481651096368120929615866647721780 1.0493636937247221700705967891467143 GT 1 -42144513244644513928244.6119025353717564551867621982809777 0.4731610776491830667743436313841028 0.0582420884083276639255980726159188 1.0600070314984494726869771085550335 GT 1 -903979199428573515605.8644484197932366877078062350475528 0.0623477423679067049183196782748384 0.0119001696710116503945715752985630 1.0119715434956478467431810965675857 GT 1 -7267461226107528.4682583336370592864039492231502054 0.0829650117406320405644106114966267 0.0702161532077847288784992431473615 1.0728031426532708749675989962748601 GT 1 -799135359107049607288055.5805121299181519734695693852988425 1.3013438872329880917847117339940679 0.0484264707354319195057945034915857 1.0496383180224475758548504556496377 GT 1 -873864936378100010496739001177081758642.1956715913164470856090344524731060 0.0706201173979989357712170222056687 0.0649794839486063334364698258899529 1.0671868076332230242207387714402341 GT 1 -1394171179501256252709459479974805349288.7910551726201367339753221496690373 2.2810569448234678993599822440543743 0.0962184140702329760487319366683248 1.1062849934872580183280712510380383 GT 2 -409990323826205.7086394784585834899879106387914105 3.3561572480663341142010068962447780 0.0974058558446257227137586517946307 1.1024822793619167595931372683736313 LT 1 -15548970282.1112296428860662417846487357378458 0.9890698962646961331780043139789267 0.0615039696876002579855185706302804 1.0634766527861497993487611916178651 GT 1 -293318.3427279448327101426563702110711855 0.6682473891905126587791907055712274 0.0251003855135785515510848737306409 1.0254207727860893570875655623653444 GT 1 -59852563.0756083817315452160521192606131314 0.2592764243111205130131072566013499 0.0596127034880475245746704046174841 1.0614634710081106019094373975312381 GT 1 -6.7344888509312273110303945997497631 1.3266294933904468034417923619968472 0.0919232240124149314617137843931778 1.0964263489030142411805101624373684 GT 1 -3098492045495928588932930039.9160877190075755368663209067389869 0.4754482300218348325397541047488029 0.0494837317662410081200918662987415 1.0507500017516631714229980022401477 GT 1 -2039.4226351805542808984577707224153708 0.7335160931233160621989815876112894 0.0009153782715888652018451579402673 1.0009157974861250231073281216088211 GT 1 -445372022783107280.6374432404993343925215869978923113 3.4519384141111915517812191859625527 0.0927332126072391603328093137638365 1.0973187294583162359763951169836586 LT 1 -19131067939.0947579562917942299607937235595166 2.6149061533019564996401920878827786 0.0163383236124417030607919820030770 1.0164732658605773484637853887771250 GT 1 -4993108180039.9224871751149690838316674020123375 3.0705486940521061016233246092561784 0.0418140759748265513149522131596458 1.0427134446585752498268697940162207 GT 1 -144655869722638997852610419283512.1012078030692672098421456931035363 0.0585800753843670835835823457523142 0.0056818503317850455024759081868648 1.0056980534483192102056784942336530 GT 1 -6185905563370881833654269314023749.0955091804071385904842724973353854 0.5419343200454780559623359469909390 0.0255269309817575923880877304646855 1.0258583961082953890439298155776092 GT 1 -4889737480747171262423421934840.2191065812541593481267623170829165 0.0074444119515012899058488266061818 0.0701991777188997314084119533720158 1.0727848853626319621628410494196799 GT 1 -87496208.6950440830911635674890126204772895 0.5969757252643369781330625415829368 0.0516040376081543362057629787990009 1.0529831820839581079141717523625005 GT 1 -78.3658716280518114931817674461777159 1.2997251052074318573601495799622657 0.0351524999287485970556664903887355 1.0357852211456148094412972840414286 GT 1 -19167657122937525832696174979454933.2289847380387741504974966561648483 0.0540006383346952634645788999407264 0.0291066669072243366533126354205866 1.0295386693586533163323584240873914 GT 1 -85647982730667761467021124202074.7646755553253925212613841291399117 0.8531878718514926026335442459460688 0.0231719138374344925241195861660170 1.0234446033613288668393151907108293 GT 1 -87346181809363713.5749578274652346993114752682017298 0.8393390472840763391297293222246898 0.0763394349119532098654459307276673 1.0794106286322047490213246135964629 GT 1 -79402961584074009580184603754289285633630.8561260642912277088328371569059581 0.1888541571769265980596132473912212 0.0420873218864191195544757713300338 1.0429986553602999308388710834504834 GT 1 -454749211685282032721242347923.3936020165738310368305064954530204 0.7254542831490559138796453902034961 0.0042744049925717240083628227696947 1.0042835663772245211561602352268237 GT 1 -12047945906.1541489630799774428681978964822378 2.2646748425911651042775424685714099 0.0166842551363915159785269477048774 1.0168250050557292053928574778241867 GT 1 -436296650903486499009.7007636423294288168394245888217325 1.7940474701929381385310386192198164 0.0051114637498481602412942325421295 1.0051245719678806957381191389488852 GT 1 -376407715484197021142451302374062.6572258287886390068770530032817696 3.4345423684808646934811977554321215 0.0581753762908519373575451679842591 1.0599361961448046513502338475674390 LT 1 -189816776059149.4560068965516786403310143604755684 1.5256155523707681967554911871159328 0.0355697712804141005637731260459204 1.0362177885794735817269969087951212 GT 1 -1415020480982269.6534525066104794393208833560166993 1.3008129917856403571305252116942557 0.0655680316159270496989121514688370 1.0678164547536127758414962905250959 GT 1 -449519160579424417632507587991100261378.6165677389708574925152903791221812 0.4971995932002011058736610362955237 0.0955367332326952949212920981005729 1.1004135866162333183477182365374391 GT 1 -1859735.2299706382020421793448664075869758 0.7379915893659014802878550589983896 0.0324992037423081609103091817772237 1.0330390310731726073845594475177448 GT 1 -2953678213000422984912779.3266413398261076141197044358751423 1.0020870315164473134197550052894685 0.0207478580562879155714585115849582 1.0209661191077618312176077310547799 GT 1 -1.2556874567883076284219081867997269 0.6359919123092600186512507501474196 0.0660682381375677218041475641126282 1.0683519035267760920526630992370414 GT 1 -122121097015053480277306462640723380169.3973382149176295188157882889810600 1.4083455960372285627835817238474011 0.0229168139026495929323085355609260 1.0231834861449475030193757242475563 GT 1 -12.3475408694035319541722851216214452 0.2259236065512196754167889997645750 0.0254163802287598142455300965235279 1.0257449558438308469713023409421625 GT 1 -17451973346815173.4357493338210649131965453610532292 1.2275683939559065452886368058151356 0.0499005819747283506008822423774568 1.0511886493101201155438846394200049 GT 1 -30081714405392264270600363.2259525540984710218357651052277455 0.7311708240845836921634099851520238 0.0113269275541138925239448978568459 1.0113915657630901730364423285696932 GT 1 -771406029505888955275031.9808012248340129697451624140638558 0.0349190985508262552454120131779012 0.0854251874657161433692490944266955 1.0892960074613807973296656117635660 GT 1 -17490847427983098.7889241595030151907963392153241594 0.2938194403418933351759686032055396 0.0732150283014377318773938481151442 1.0760337018137335033044341657879357 GT 1 -377512009574836164.4414550115342755139803831787652659 0.5434299113469570646460926834943304 0.0482464348943591532244087317719729 1.0494491378840023949151566805582681 GT 1 -16748846404.8001555585333034293210413455405870 0.5983279092019990978158691962608549 0.0420535764300283733329931841990327 1.0429634278674591657425555748554863 GT 1 -12713128329843988368458613.7371347334120780427615929023880499 0.2111759703827102702789028622496208 0.0063524589950797185094373553422189 1.0063727217203905993726612361515019 GT 1 -84217024.1089640382149903860909620533640554 0.5375378256726066098155463556318494 0.0426109565880968846082073111221436 1.0435454461962702267066021499780954 GT 1 -77068912.8436352174003586670802210441927684 0.7298770958105758983796281215084879 0.0647608722916366873488707791725292 1.0669530308325582811789790991649116 GT 1 -8.7054900851314222262093560594889818 0.0799368535617845879880580724895260 0.0217905658984735043619528387318311 1.0220314865750667973567479546133808 GT 1 -2632170039919590097823685.6239034798002122954143091438777436 0.5212596546611092327486880711735023 0.0980141711941670366077423935208603 1.1031564699012085323815551026048571 GT 1 -25139440757690307186399708264766.6657150177737104327938939874398178 3.2314416026082381204286965249506959 0.0558821864446692139283909168596169 1.0575043181287660509099856640517777 LT 1 -248737926024555962017094954075250052.0841808650440125157890303900582526 0.0381479556837952958042793245395586 0.0114489717136035659377540288027266 1.0115150157651404903163441488915551 GT 1 -2436483773405456.8566643619599337980751038944790507 0.0792296551198072615950961670554643 0.0336275858072938129647507229695117 1.0342059971254882356527055931000547 GT 1 -1870081601029021474038601625.1666699707025445929685201708619146 0.2308448429357428100788097889669069 0.0965849422438356176562508567168663 1.1015731880278770161799739525377370 GT 1 -334548040384576.4285547562050368211570331947657108 0.1615540800308911118189908086359745 0.0566093259728533591886632643441612 1.0582747936725201431208838436546436 GT 1 -65279206195252913418167507599794064823.0656713098044287055380715181070443 0.2140611729863828390363629431978116 0.0563580831330305953256091606030047 1.0580085101514832426706903778812266 GT 1 -21609715507280920474.4949175598894863448694255194961421 0.1560219468106640930706244251514253 0.0432804875695913567767209096849806 1.0442450209479287780512176719248610 GT 1 -185537455093858297399577025793338.9988505227373396979960709234706894 1.4961007938919680983225484882341914 0.0447246654197347033683726442003271 1.0457556715932938584990551426032471 GT 1 -22838116.9479615118482305163716085846119233 1.3425301602398177049062417881082087 0.0880718693382349349187229641754133 1.0921940961119536189863127434192530 GT 1 -31299927318325557285225374726062785855929.2114204429056167220482021136926025 1.3107437276499085346264221344504041 0.0681125640192364210034385910176434 1.0705432484353305564554688082861410 GT 1 -3797498013018957677945377359369.1823261086410167244918978456464109 0.6384777089020598772460602827822464 0.0282277902452916708599770872944986 1.0286338540906529189454437981670641 GT 1 -1656030.4543268521497262260797652746604899 4.1445518300958690789626956881989826 0.0788939474926245020232761558334323 1.0821801000537486937494205657658691 LT 1 -483535190445.9064864342943580487552891503350729 0.1975642773803387466161133060512737 0.0327789275162323215166140489120949 1.0333281928182199222431452895464205 GT 1 -20464349788991695.0944662128870892300840223622470671 0.7724322482312701807943575113118947 0.0195925488458792478433833518204551 1.0197870272406580447110707452721481 GT 1 -60975.2084341189833893450814875471327739 0.2165965403161276290834531169201943 0.0694197093539107978852511840924066 1.0719469189855453037810933644624591 GT 1 -3399255848749756628648812692295576.7107880561373695087625899238721627 0.3502392066105347797174351068506617 0.0533629790538311684107285439829531 1.0548395528872824463355767808351227 GT 1 -151985135217118834655.5208010191315290000131967130247785 0.2576775398850381495068221458420573 0.0302662464467550761759065997420922 1.0307337260344212553775258147131904 GT 1 -1058924016220120159459807591496943.5796508815125813160417783331657821 0.0142637530203247958012319663326461 0.0073177360801902789445744600570724 1.0073446420517505522180555651353667 GT 1 -12331446349158989323594857255915.1829006526895701036445343097730331 1.7662244996701713684284923148853884 0.0515053256375001024810706996786941 1.0528791044225150221861882026777155 GT 1 -401643797.4111002080348296767327841256512045 1.4424298513662289505213065921524011 0.0346961067602126121702159276711799 1.0353123119441673103015004544101124 GT 1 -1620573246427702311465343411.8624276407066356813517112269987931 1.3535253000619477537469100657938029 0.0643503605471672041149549812327326 1.0665141894024710542319777746391559 GT 1 -163772522694151914809294557648.9804320318823217667920934499065348 1.0884865764041553607583311916259010 0.0791834914682882915316277458851172 1.0824944932689394565811725217543848 GT 1 -474365523262113546616090.6922232227375558087631268603679685 0.2830952839810129459212973415433605 0.0333289327993521021957316199837076 1.0338969994095106195240471909136309 GT 1 -343818903777237204249060741380179668115855.9669760035443176551009009659756924 0.0079313306919078535776943098003550 0.0570221315149255621243089650425551 1.0587124658869985359568855978563820 GT 1 -357061075930989801393649.4166673510648054257437926603892980 1.1958259045402096917311899675424415 0.0962308645367720437478032583111915 1.1011813323300208382684356884505291 GT 1 -9800825348450018663.3638793104338507722912241676258567 3.5246748942457998088218161243612661 0.0871777734137412729057658692919255 1.0912141308334215044813057078486946 LT 1 -984390781729398060530842307.3444643205529820235440498928761097 0.0140025858199963197911528098519474 0.0968972056938740201914863242418643 1.1019188956031350282397927703018755 GT 1 -61232275901967854728342.2183005324619997527394846985348463 0.8191817378688277511581806668772622 0.0800477405936281120049638187227959 1.0834335022350806283229231251427157 GT 1 -310080028242765488784058459.5974690061112017442396946334548884 0.4761098048638964727994125012352100 0.0058208675164291002632848220523856 1.0058378747959451966312288611787988 GT 1 -2494467907746609132408161689449861.6042969571795463413149670066263426 1.5652430698285801557997531419771573 0.0124228124933973562773024584713042 1.0125006206979021984618278493905985 GT 1 -35400072191132514660824260715597055853148.3564476305805950812216855672205792 3.2184558478747718681077623072744327 0.0397856775640111514996997755811671 1.0414228968368024714396803303435074 GT 2 -21718690166606.7398536234669593009242304875864718 0.1868663904557520405222674506630934 0.0368042054636921112155225439557875 1.0374985705746661688980776203522471 GT 1 -26262629841714536131233201167553751039608.2755628696567569583381809894428079 1.2633701999143574133329046053226576 0.0192187379805734406205721381485081 1.0194058187752801648426443039711040 GT 1 -284984719292057498663216476463352117265.7081776994980163243146495020342177 0.0594580875819141356978335480707257 0.0436211718386323389499331597066683 1.0446011806553664081463782886775406 GT 1 -1526352980409908.7180351249318740098228138373626265 1.3389218192388289770381685656901352 0.0085231557743365987605965568655199 1.0085596855807675685211566105607568 GT 1 -1471511780.7123716800672401215643492053872392 1.4042432411454175161412617816178364 0.0296353532039752242407458195251079 1.0300833535946476479954863600117148 GT 1 -154862813852578878.6592230725535879521987741171101149 1.0127912138559501297178343084128359 0.0379033558290952299057276624903363 1.0386403716462535938112385227813694 GT 1 -1618919334010013093381487326022250.3239149235657103734552642963336451 1.0716769687969769873663156293551953 0.0634677819079257755865188405299215 1.0655713550287008593879169731721611 GT 1 -219117488301394690691345356.2724651332350756309839583109323144 0.6574087349658832085197681314777912 0.0809821257222987275745067886937482 1.0844497071118919788631118189697671 GT 1 -18152221252161731748108859779.6568759295082223536708704712093976 0.6322132819031714322812418322466938 0.0871842295907262758365185043359701 1.0912212036233126601523072305431924 GT 1 -2745557854271048630104084910925547907903493.2186553535324104692292514667993632 0.6340051699524648441879453976565868 0.0909154754704632814709750651479914 1.0953172028464959725976785863363098 GT 1 -4886213146088335070737062555640943647418048.2637512664007999379524897994131543 0.1815481067696894196133252486161491 0.0348496510675407916298464294562585 1.0354713877764742098328864768179966 GT 1 -2105705105560911790904.3044216008024444439013905655333179 0.3984404310972721747669070711352746 0.0825980918898532952590992088012821 1.0862096169104515708480752054241199 GT 1 -314322010201373197744820494328.3543203553204189986969073048999683 0.3908548001081443599297255005578531 0.0917400622701838321238668415713572 1.0962246663168850570272630342773147 GT 1 -93059630804680017398.7199581202387354585660551045870018 1.0679778216425623674476576411727007 0.0331774206117108025342305374221770 1.0337402756589891514446491633112445 GT 1 -4.3006910830924337283548850139965827 1.3228083417286966934979396266800356 0.0284265706912210327793670907197931 1.0288384295842006557847524639442048 GT 1 -30705664067558.9166205448979792586732039833260952 1.9651647324754948749476483486004315 0.0662799902021549197623746941811828 1.0685786610719541178492131606208669 GT 1 -3076656454995974454060188229041066360252.0426998514211783333853844355596486 1.3224747704455880798585154652704797 0.0922163402102405819369578485360072 1.0967491889127378125203029732735020 GT 1 -3945700658164738732929230922289914582295863.1296135930662899309401534662504976 0.5181197482354943885175746117125932 0.0388849835341480485727360709085645 1.0396611930258120518589423378035264 GT 1 -22904249506414032281259796559085.8134191868836682374887611815100338 0.7377972208815444377294343379537860 0.0186231148335339643680053515500790 1.0187987085215134949133301380183307 GT 1 -3770622802289639694845976904460961369823.4712736796684120055116026529332627 0.1827591205780910532371756151593258 0.0564677550701722248813300256306072 1.0581247388912416061481238233896591 GT 1 -41782473847984817030537760213522.3108160361367079349626323819011844 0.0668159613168412904512666435598627 0.0177796638015724643627512628707496 1.0179396208484827911880240071825093 GT 1 -518332227869139663487983876.2831097494314852106154434694108494 0.5729288868025139435898487054651800 0.0864855692788690344668010424542404 1.0904561061119138090533989648946263 GT 1 -4666356642110508856001633.4987332569695268807153474203995291 2.5434423461879596050213415228707104 0.0898505731858520238233140663392243 1.0985782682306503733015945962473433 LT 2 -165765027001216.0962962273564931204924895944364609 1.6157231321421111917622995512055909 0.0599159751311515686063344388607353 1.0617860195546214415084753792041666 GT 1 -26.4437119075449566951708974884599279 0.1535945884756612972858696934038794 0.0200663216773055686284655410257058 1.0202703847885118756909184911662641 GT 1 -548770444920199208502753595134807707.9613000764661480107612853342916047 0.6092601716112000139415266360916258 0.0329658919405248936004799224138288 1.0335215121142006494831637797080176 GT 1 -4902321895.0151247539571515466366220939565517 0.1480897275562440941516780222459584 0.0913741920972509060038360517944277 1.0958219220290201307212773088498984 GT 1 -13400289799122781896283192762663272119.3651845229409212612803412933884627 0.7679452736371498945684505828064785 0.0151417074189109154409643626024780 1.0152575135595770217123628369726263 GT 1 -146631681253762763156275137.0384793527930290542422735437029264 1.1647059022627310019750183928181238 0.0550432954260845299323690736864228 1.0566161678036435560245715397491750 GT 1 -62168911294831966720787352684.4866849467586392087754728333954600 1.4160242227909705134002891345668307 0.0546675416284560482460369391486988 1.0562186055576725213050986049897758 GT 1 -1555549791.5443588167012644968580223060797390 0.8017944564863342902908319652256075 0.0048745339677883389540810211743321 1.0048864532582559513443696325449681 GT 1 -25274183.5067594346538692763216083438540316 0.3674270899767908981803895150204577 0.0599390001177878503786128187852108 1.0618105123318639645220299397235079 GT 1 -616.4590084466049600772720478176494463 1.3502394229115984279371646764255966 0.0572424725971015777029045442410936 1.0589461583590805320689992689913984 GT 1 -28103704931168.6098299645559665058402792483443601 2.7825777665238581584357513498552852 0.0332135500944059470712566809690486 1.0337776456569070272695461768612753 GT 1 -35696456934.5850000375864680824432767895234990 0.3099684079162965975716763459311975 0.0983476908450164378630974587514993 1.1035262997996025444112192016088314 GT 1 -3451911162225892517621245026859.6976363265033306047121762823562541 0.2693385567780617346378791314214316 0.0799461189408750594146591187068881 1.0833230442853798005388067768482302 GT 1 -31976454554105198458426790245956495836908.2813062365196274601584160865592037 0.8473821155098047077656970599738761 0.0516698768910988293242744882425975 1.0530526062179690608105577633072866 GT 1 -9293614185562299810426923016.0771234946600572210265191324686615 0.9615992340740183289199401428112176 0.0969113466563147618757167121510078 1.1019345539238068823956724739209696 GT 1 -72882485298916894096904129542091402989828.1153129113124820045415999767372276 2.4186056564167214631281824445699744 0.0842327701334584046908282817331337 1.0918644519883079519408107957689924 GT 2 -657242346640490623941826030482084775746885.2236192294848713166831723732487890 0.2311408452719845365713801073525768 0.0321311085772311481916665544963804 1.0326586436238304370614633472522891 GT 1 -2553402683899951939301.5489075989962189918624999535707864 0.5879941335576842201081843978609390 0.0002605894790470137954444550471603 1.0002606234383850677335891144627811 GT 1 -2739878870690450546799210475663.9075518040015966111155430261695439 1.4357393965894370302782421872150050 0.0128820531484039675861919475612352 1.0129657463320272706567794893827712 GT 1 -4658039.1195620813630677186087942357154816 0.3280996946177474962440669431242040 0.0037138754378220006241473497275939 1.0037207889959097174602057897640161 GT 1 -396693664.3105330863618199903632612238305252 0.4624895675937880742149829172069872 0.0478809379768644992237084839695667 1.0490651868604132389866772887765676 GT 1 -138.2946968346505612453330487188972031 1.9353357981575645234252082963903072 0.0341424937928157339696951592409558 1.0347389647524504042570091326060157 GT 1 -653211921471028894093425170.4943770071122148287499726790048147 3.3709470129025673288318815942167967 0.0255891551194264216179283138374572 1.0259222522848959658420566945161433 GT 1 -1233212245542868.6768383597080518340887742151360471 0.2032357585483751431531779885077398 0.0082385145725044429014255589376368 1.0082726386842542531776774034113789 GT 1 -368088390242338.2398521629443302775176268595681784 1.3291069330496045508725718689656640 0.0545542118905569535679987862664870 1.0560987292704921148160816841834862 GT 1 -415267402711734901306347163929181.7795754096378451419320839614404168 3.7034400832225447356256587793778660 0.0784427269593992859043061534628110 1.0816903518333461130250634608981709 LT 1 -24726.3549297754467419160147939857307216 0.4954519361838735324203330854139082 0.0159094473560446415282772726176329 1.0160373611192582152832194535996439 GT 1 -269717571073361394.5146386036948019025338464638835509 0.1268187605995248621020590244367383 0.0228392922705700638976212651439560 1.0231041494435612813817071185929657 GT 1 -93621555281138294239501.2793514196677828672200604268789125 4.1700872766485046223796311274337409 0.0107421172073321438065363452335077 1.0108002302948078899391176678856455 GT 1 -141379852097070666.5832441027690915746201789683976541 0.2247772495746422223949309939464601 0.0049634607076265521416617847618291 1.0049758195909057327601059274651273 GT 1 -626365835620082803.3151493484631177224153537891893729 0.7200857231874857241877318191989768 0.0690530539780671267045325805345348 1.0715529893417959746566097898937016 GT 1 -7123420553526317729829308996.1489895664883390879293204955419181 1.2607764305596433959560828765135048 0.0218171459032317867685111479473048 1.0220586590444332516967555799290040 GT 1 -13959980629365068434221356685555591572375.7147566119761162960357142351326240 0.6010492736703517899823533203132447 0.0472097452784955492406181727279082 1.0483604890354352931254387035166629 GT 1 -16721145933441773813.0562082723205301486865498352365415 0.4874073210901582060788812756681169 0.0033266757811431001688941671337056 1.0033322214695734490893948546032516 GT 1 -13553.1734377104613696211144420861262945 0.0011541801317287837489912727142316 0.0653995650905833176128501565287684 1.0676361833730812202271580474637094 GT 1 -11054588228720580794949645823863037184010905.3017786667949510303424151649074970 0.9788295853434524600742240093727729 0.0564156622435875283877053698679873 1.0580695299793218391404280583234225 GT 1 -573582544398286270676780613528452.6641091308443615661023318917058853 0.4211885083500830816200447803965858 0.0571081107096123117483422216062595 1.0588036484242780352662041957707212 GT 1 -124.3592976657417362809900761330990744 0.8983665557397360662277588111869853 0.0497122829545506329309667438709032 1.0509904801925556204225510823702406 GT 1 -9046884257.1187051760061710770669828385804548 0.6629303501182933105609623387630027 0.0281373844399707876346439169649026 1.0285408265278529550113711187307768 GT 1 -16.1814856194829498650494860225225259 0.0896958855982505268421054679965704 0.0081009444675467209029058428043648 1.0081339354108487110799399961776405 GT 1 -8884.8355226950579838220347082979865967 1.2953390246485275913216543113027843 0.0749155219469642834504170527324818 1.0778702180149220206046368275184982 GT 1 -8737500378707252648190259943746597975.3214736402356549477877158462165238 0.4647318869962175598763730860894280 0.0592740692848855439567963668709493 1.0611034350443859317381573910483721 GT 1 -94682154976068283208730348889887722123.9205746193234515631238686560265560 1.6214045729246865864521457726822680 0.0750872713154586901470440657390070 1.0780558932887681993862400286422943 GT 1 -6432458866934092698462376619837355319.8237620998836287357280840228355535 0.8653242185014281723496832172338668 0.0023638082092048280988683549681749 1.0023666064143129707341871352226209 GT 1 -1202623.3445815263098293820320984255046623 0.1818118722443963706002738570109456 0.0097708294444069291780998832862100 1.0098188772324248846281272853548629 GT 1 -825684171235.3970851608227534321811372193239467 0.3872992238603760986089834285824487 0.0658490866306346673853953544476849 1.0681172763222695060952749106139989 GT 1 -99512752.8844373146245348312289768697345991 0.2991347159326592436050913380957834 0.0481452968012633322824031869763378 1.0493428785292023952697054965646726 GT 1 -19330682.9343295045681816762740826977120113 1.3493464892704058651337263311351858 0.0736579037309033921168067119941914 1.0765116781441780490068952884920557 GT 1 -40511174641241284311085866670.4713188320297957742018892900841903 1.6254079843393287137483203948073489 0.0004418527858130924066337734636860 1.0004419504315196687977756550860989 GT 1 -1970415967123439402890954472267691.0690094953700642159476115500906661 0.2399606951726736027693922171534865 0.0662716637999982065237459514609324 1.0685697436610124842162285787682055 GT 1 -16971073793385533533670435166651985689377511.7433747923637398675041927883025687 0.9302704679492998115949062233552413 0.0566430778541508126756523506020364 1.0583105715172827545275417818550155 GT 1 -4162888120082348823633792.4268626558862642545347141136556191 0.4797276653410567279298085624777997 0.0822752594065361540189221016312500 1.0858577801727795834013589212803552 GT 1 -23648429386434663206519051944764237501961200.1439631480771870052529363778856104 0.2742710285912229242465185755441236 0.0980246833292976761947373213525186 1.1031681244040309661567943338741440 GT 1 -43947062985462023190451528945561671861.9134651198940405437636836052218627 2.4640660956077693887793267201941742 0.0214397544281153615083933306653340 1.0216729247292237576331255693698514 GT 1 -77407738441005810624429587447337.5731060670112403601692576928949429 0.5335199085920191180508951565130240 0.0877220526079430409033577718144184 1.0918105684625412456757725632300299 GT 1 -13468441906551972226433815541202702.5032011343213660567951139054727967 0.5865310830598462103091376008861282 0.0990797539306216605173143067851543 1.1043385424177773170891593372628387 GT 1 -94934351655697376406976807359.8422223546637414353536069003812130 1.5240848519822661815432284316576058 0.0514360147284081698134799166972978 1.0528060324499950559033898436450450 GT 1 -2438852387346470641890146890.3255752403047350379339712928879391 3.4828479206397002603185747713518852 0.0878625543413048841879508842345516 1.0919645923040137332002041155088383 LT 1 -777902361.1402392180203060175925107336981439 0.2676080001434819766841960756175966 0.0952288873295516798028088831443688 1.1000732814466950399085827722932918 GT 1 -1909316459209591231841455075864783933065949.0641891902307031917843274081704696 1.4693371910725653120052974034618929 0.0339351615017883323222925214175371 1.0345243264235428364634349754998846 GT 1 -27714491566672653993369934137.4452440806892255579495930730479909 0.9363227186247482130115145632687528 0.0197300885735053742058328288216747 1.0199273254156425354897189656260084 GT 1 -26855156205188061826352.6484738178802714566903914736000179 2.9317808353793718180048364980404581 0.0632765535056258260248549636540055 1.0653671881265749479870430895650279 LT 1 -283822300550820489222535009641869160871.5819837572472376613340348148500249 3.4355166132206867740768217806848726 0.0435616388361422150895115002645391 1.0445389342443224470664771838598046 LT 1 -71090084713066276518375942.9931587574716682196746021496671291 1.5697169034361906971140164619506152 0.0965231538803708007747737685068112 1.1015047961519088248238191797414096 GT 1 -3406859785685.2552931243540667135970599952420764 0.3012106820491196173162379907206226 0.0834006560517324933778552813214326 1.0870848226522227697561868046744271 GT 1 -28.6034955485349798334609192370031273 0.5038245165513360994221474926927756 0.0529381974898384940587173435906207 1.0543909265631219167147140674978103 GT 1 -481732359209393041868072565.4268239124968592039695811905658523 0.9674917570900956820202174779499141 0.0313511187757912891752380954941086 1.0318530844344062956039708463084085 GT 1 -1.1611637290621634962266795066803403 0.2251134840910321856857357282414635 0.0582238801539678068161343483743874 1.0599876973594782474943507555803302 GT 1 -11191433702890372441889672937323796464184434.1443200877910203477616045800176201 1.1837825497298915291252911018540586 0.0219023827995872998268275875406277 1.0221458008399580337711728590847723 GT 1 -59319.6288866955377178915451565844334456 0.3757103164980304812749144657337127 0.0733466574047865936232475998304523 1.0761757395633095558386276871471116 GT 1 -511893923627251453443086137.4431104973699510106916609495048806 0.3176223495582682894913609135636563 0.0831352476861141237715011687591635 1.0867953069011226354889410498479170 GT 1 -45423062.7157115545652729521959597650113512 1.0534350216969471342920990083421478 0.0747024832336226188739122905116119 1.0776399534372516531057893988964960 GT 1 -4064445116872357316076.3757358982399504762956096369926016 1.2209624523796947920155792553589300 0.0690485270855944711889750516252625 1.0715481266785844654598096089253837 GT 1 -103014456407400765698347799229.6494202520297424666832243345599862 0.5950070501485567468932373269227664 0.0736870837058350374470217107059282 1.0765431788550348274391654822430846 GT 1 -2430625669590.5675351544712371377516846822329613 1.3245086372075744174090006618802778 0.0066713814377683069244696421162463 1.0066937345759215786023089389414307 GT 1 -27429780771525713031410150158523545173237.9448140245235269920635878242821509 0.0318468050717341417357552024252402 0.0051488472842525692135820307144542 1.0051621482745866614268192593601230 GT 1 -7340454019.4083500124607341234374518154360261 0.5416646077182441473476687013831604 0.0229214398018938723843260947888488 1.0231882205526832572396022517055207 GT 1 -14.9918665607580570964936492105457095 1.8353398801813233636361355075711882 0.0155713820936761604201295056614871 1.0156938894673184275735771102390774 GT 1 -9303837139375874090623499900810308.9071209967365513970061010706726804 1.0402006043130267163209783475934855 0.0620009374086563538869555325476789 1.0640063293459814216158866669795479 GT 1 -1075589422621089901222430003591.7627077878346924355042968502906875 0.0398835251920832193870338403576676 0.0961985121632448694987298415114430 1.1011455358049903916504621029046010 GT 1 -1439862763604367483563111557.1953165743097014773261289597217055 0.7505471058524459196044184678356918 0.0185752645882215726195877839391799 1.0187499514338687696784431576676819 GT 1 -1776012494911772590.3634547051158726179841891092664861 0.0371661609583450761430495718081653 0.0523601280483205776672448166548417 1.0537807308080370600420526286484820 GT 1 -8937377532.4121348173156750867196302771979615 0.2692763036803830658201767635407506 0.0091716269861832329017940226196586 1.0092139453076137742408028909680983 GT 1 -12324290862851702267632235.6448028955108527238480561947638095 0.4534390584472829111775615147863766 0.0575675384218700353930123196173779 1.0592910210306310431505910190352862 GT 1 -6247680.7470762331239287984339490685274256 0.2493868128954668228429722958613244 0.0656280910311293034429546108272558 1.0678807305355187957377185489292005 GT 1 -8075506834745098464554358.2869227854141030635618995943351382 1.3230848296916129336296732687850052 0.0103418873545914855433400268941668 1.0103957362595681171177765611692529 GT 1 -1612410867303712097304132721.9741279005918172635597853426101599 0.4769851299698048020916684973097469 0.0915574374365152703441584104060488 1.0960236154191687373085839712199119 GT 1 -940084510758513099694069436547619183591604.4195519142716764833711561597971230 0.4386631723362268221625881718483495 0.0490426829258748881685705926650938 1.0502860995952686367509744105040356 GT 1 -4.4833013082239158901486473186148549 1.8433713424286864728204987920426430 0.0556983762890195747159838218480062 1.0573096472282205575351924340825098 GT 1 -7163075641229678.2992222093242188195181436748722998 0.4030617620882847046288129866995627 0.0513129602511547960942907191063213 1.0526763137403429151182617159358042 GT 1 -38491700845.0972947520595003837059429725166216 1.0635741373830001683323932088752410 0.0981481363865413712751875821024831 1.1033050034341129912729834273746425 GT 1 -405479646339816088.4078925608936573455059383172248966 5.2136519198510011927814620919488690 0.0883142547089637647603722641155903 1.0924599258200430510283363945156835 LT 1 -1768682844652757663073722215884297.7477102147925961178919114179369264 1.7939144921741558391478170910946102 0.0658632018822361853734941418459477 1.0681323866840355223456835818566029 GT 1 -29196920175023304750212579.1650416724805577929354087609930662 1.6871849064884810206226010180406010 0.0183112540295261937134596280551106 1.0184809801667557228781590887140654 GT 1 -448855769567674593511341565743863423888635.7052972295030827375648157881000491 0.2464374135442614418437718021303686 0.0145080642647469192654900472112411 1.0146143353398864646205748731127832 GT 1 -1664925699841.0507848638064460662043224599462311 0.1607847886771048192565623815689887 0.0918729618561555771991126446303379 1.0963710003172650996897585944046358 GT 1 -55.7031566733527300326071860221812597 2.2355836502876747052749021334664215 0.0284321459308160324067594827765153 1.0288441679621999363231313823657081 GT 1 -26909.7949156074821665221517472518355860 1.1450352561894792407202269136813319 0.0348110682075264514043265531139488 1.0354314125654791887268894524839718 GT 1 -201939555255332446500074327.1252827636831276656778243835584783 0.1252490361828781100741124064934741 0.0388979713363584630167598733788233 1.0396747063824265096616857180818282 GT 1 -5597032387722474767382373.7414655750868085894905893370416784 0.1508785635003446886674782648653925 0.0773399710063557017925613040262661 1.0804944449483421498327284668370641 GT 1 -34460864743042239614341706294.3521858026634557857033286772868647 2.2889145019828812564832778794851727 0.0963211419261542488342349482225364 1.1064101706895010845946685853959885 GT 2 -18.0276885211947038221016353748875871 0.1640280522329428588564908209754862 0.0517955206706607990666999130098885 1.0531851044909604980334556963012690 GT 1 -34535658.3732528146871721651260547127570783 0.8385080604180485495211779262437208 0.0782728019114115685251496783277659 1.0815059798049038859310066484680487 GT 1 -1536027.8047040705140754865918340330326980 0.0617283485703292855391813188473046 0.0926272171965964788821762079837493 1.0972019069085337786156614637007165 GT 1 -392873101137463139913408295505976158.6657335852473976473070955635052246 0.7089698220895398382820321044864204 0.0129829010987844375083586547998455 1.0130679155840094605634179860413198 GT 1 -15260302299219025120.9835463136764351747782105488051138 1.6943771974216475632760158648105754 0.0967105667279869462446104461703963 1.1017122528112742074089113720361598 GT 1 -174839398572161203546399460191046746334.4558501196583306679004329645080702 0.4548372978301818079822569678774698 0.0863090386603236609639942728947127 1.0902628813985218279158622466742405 GT 1 -139903667732844.5500655077507747029127186160734055 0.0454323255866457324430452250603162 0.0336841624300054754427131632954722 1.0342645442012271427588907728404298 GT 1 -6406022475522908377.7919188745912967936014955595392581 0.4653112125383388822774269186545734 0.0572197067143239760308246545346501 1.0589220104660720596825056972463006 GT 1 -16091004207473772998935384483343606133.2196994032007200576305697877859148 0.6692401996815800547578580128026995 0.0018559377262109632434941811716727 1.0018576621125321431282166025813872 GT 1 -3689803881562490895229.2696351849942008832127200251381867 1.7619488085891826957017046015520880 0.0959932413239148155780648476159944 1.1009184422063101257808615278175316 GT 1 -989395434038129846613662630445.2809298817557568011565275576513443 1.8615781246149034190766869727236471 0.0835670416515271911488944792188083 1.0872663640249996586351816810315516 GT 1 -7863263540769516078519958760664086027666.2570786042815810324685785811958519 0.7896331460487309135825817295778105 0.0900485986152962290972922908498730 1.0943640859690970435819209900860085 GT 1 -15410.4356632503366270785604147680632921 0.4122690086110795590654912527552227 0.0681570148218051384519933447235915 1.0705909493281984255042824068798599 GT 1 -36479690178443449388.3316420955243753328191744217072797 0.5490322333818124510154225935888300 0.0572589487818942116262084692097788 1.0589636350996942571327743932964540 GT 1 -74.7346627340460233167794444677533617 2.1318141212506358670194345407803116 0.0873138950666007920784351044169964 1.0913632637086448012830856447358177 GT 1 -46.0961837392290526661113700915197845 1.0122574804634338799620220018791754 0.0890832971696774229990935071476878 1.0933038207760125973800167001888371 GT 1 -116267269986724470352789833056921064.7908087783416264180288909417793466 0.0852818056125670027883517794274408 0.0000251470674030405895571919899539 1.0000251473835958409683081702671711 GT 1 -1340860.4045531575263504517914171323587562 1.7703768256070079976034105361783232 0.0942451318930463843910153013690333 1.0989865745518343149311697149086423 GT 1 -13388789177254376839382722.5512706560136923691966882918999525 2.0759570074579369524593970276766158 0.0587919756477780528048731437845923 1.0605910965041785847881220892344960 GT 1 -54153958983131.5052185462530744578333798450311297 0.4143100128092882891954183191142869 0.0798671209324767044735186876994518 1.0832371855995565776370561531482637 GT 1 -28803931504220599176440154342380.1389251584018420694526096226947320 0.0962684097644494719687924027053182 0.0473275987409258606324863540977519 1.0484841896623782479158671917052763 GT 1 -1472861.4268967462129161316959674168876682 1.0293618332508094105494937717310864 0.0954634983055972390531234034993611 1.1003326193011293031994913101865322 GT 1 -9340936761516262993405901094119841395141416.6850396307226205018023751317371972 0.7795539911844986809310472054669098 0.0066345130828723538010389452260041 1.0066566192950149695191858664979125 GT 1 -24610636405101791653125.6594786888801988898405309628739259 1.0373127018365424720685127084294671 0.0959373204031965950342189625709404 1.1008565851564067012987547348216025 GT 1 -422503512874999426343782080183397600.7535113237391002658891268970928313 0.0525045041671133544466606645841091 0.0382869946344802831882006262684882 1.0390392040469153359588375646025341 GT 1 -191715400926842545842.7117215144625639376717093464194701 0.3986843031280925422213848215052918 0.0538095416115229086115695791376875 1.0553113999740902992013046406830130 GT 1 -18133.2175330603159783698338166363665327 0.5043598117670056345067395859340037 0.0916446008631356336956768334297632 1.0961195682202228098546812063452802 GT 1 -984165085107863567663015291895107.1025351447857273915047873043265719 0.1703672880144947553049825811927118 0.0191615485713816675348709075766689 1.0193475104203876141432383072319756 GT 1 -1828361.8620702734461735600337702785132657 0.1056495097661023113969971796023036 0.0294313015662418316153965168143180 1.0298730922387008853083970500061043 GT 1 -85994367.5942398053584057139888770987454468 0.2027494542098274552012757980533102 0.0101445470424783205929668197245909 1.0101963536271921633788886022037290 GT 1 -200801802941667565002542309023843663.3916513566485025907658231134361642 0.9106002782954531680601693782044987 0.0349480202046163580175390475417550 1.0355733140208856568284422500001447 GT 1 -366012135901373205.8531172666961981021552198026994967 0.1060992426187088367229020899697403 0.0475512448209700529378443322025813 1.0487189737655474953744930626261321 GT 1 -1316121099566127658345422718.2089250761792323410359183791581252 2.4998793920063783789647988228770491 0.0161393350188948155989150349054679 1.0162709925851573347078156983224120 GT 1 -177513994731744291083261.0900469326490289513083753875850688 2.5313200354255066178483802502344461 0.0202650269890523265325491518526731 1.0204731795949629783972234618408275 GT 1 -778641657743635364360253733014587052.0601183338077111920724625303149274 0.0392637247807632842425710756177653 0.0068666880861436081923328382585977 1.0068903722723286873472223990273033 GT 1 -229598358887231852293.2829554688989279406684728934383549 0.4629196617001039470088470140994440 0.0305201108042560719716453130308246 1.0309955479949880537272701509272660 GT 1 -85336101544577172904996941127.4565887914981851136898580716657116 2.0463976683315309941129553998643179 0.0931250850505334770343487000063297 1.0977507491278749344625027150048116 GT 1 -45967540.8685524692283047610179138345957952 0.5632940884641274184609111837941000 0.0847321744452334020255134888371293 1.0885385510121851497525415894689759 GT 1 -11109242443147171412742260877584145051191.6302021111631440892709171005893604 0.9613154862755108959164750502966431 0.0858693102149662667396273237660761 1.0897817311138973771965102136754792 GT 1 -3908954391761351939648.2105653409217022772621734000806342 0.1204501356187205433225652344847131 0.0675397517485562567255975266833706 1.0699287575937893664298729808362124 GT 1 -42128.9052751528508587376319745205377670 1.1923939689148945460574064929967257 0.0723549235732743909761134624370901 1.0751060800997645763938137446817631 GT 1 -38304711168844598306519759997154591270.0426762875251380543523703446003035 3.4211553495666765127710911219042110 0.0519079724359749418207889672554236 1.0533037059491577539002634150292146 LT 1 -318225946081741227131459099340046371093.3398603288312505456376186929635704 0.2878659728090091285449882841014334 0.0835502151877705523612290568046853 1.0872480033701024498715354206569436 GT 1 -518774029475.0249365947143518312683018720351525 0.1077619026152618316004488734082330 0.0373627339645763786045712054196864 1.0380786089258386641209593132006430 GT 1 -312640963.5356161691280097554857041903653299 0.4000114050117858440443865174615424 0.0455260320054495795757019604812180 1.0465949091117150302489534641917136 GT 1 -98402978906093326334.1017898050892554732390869723797367 0.2048663160775752208837819778447133 0.0663901158368216799426986040883858 1.0686966109159003666547560513623544 GT 1 -241525618318055178466790.4233896191670976215788396964650639 0.2320205721084724586063813047132348 0.0766459459304675986001302134930183 1.0797425274901226995794542159147264 GT 1 -3727974775185029306.5273209558931921892081109860331290 0.0384304140229665706586641874841861 0.0930537095590358699429371806269594 1.0976720473337594722603515014552114 GT 1 -3494892349991939724337195890826867818280.8967959271556654110387969507449080 1.7239533473298533442204190849973919 0.0259270406739372770576059353816882 1.0262690712393755665918929437422481 GT 1 -546813.3034245692243765265594002259349058 0.2892221606637522986208231734125354 0.0188681715100470387420691539921322 1.0190484467021202607886384475772110 GT 1 -14602908277240918049108110686523.3955045187602974824255386015353441 0.2982865221297849004471788741565672 0.0863319003862077854065840941907693 1.0902879030008700698214759648556405 GT 1 -666937087.8307232462777725949314028496469589 1.9179022329848961572644516447336164 0.0859871751095168913877783607462775 1.0899106760175854822585737255992876 GT 1 -289733679949956231.8436354713973488244556967675791468 1.6054917776210845220739080753594902 0.0362804276082160656039447360641540 1.0369549266997291898952064209087241 GT 1 -100991752090730083199771.1335797609592200986309415491797817 3.8351603640348911631929747174174757 0.0072962933504593283075383526198221 1.0073230414863696704051142364696851 GT 1 -2211147276633120575567433094012492366.4615816344118019395225912584627008 1.6363178449223464589115076732142501 0.0787824772117673413290963124919222 1.0820590895184790665782022767480462 GT 1 -14157813818338555179064343730024408.1724193796441797440230476102170701 0.1456702773258557438813644857927305 0.0931332395041745965798044335221472 1.0977597409857029490143802891950432 GT 1 -2963601502707997899157114678.2818703725297476888312359753856259 1.5436095156461933968913378903431107 0.0378536614805295004990038450055918 1.0385887208422503516751782779641414 GT 1 -39638701.3283347477725601195147689833201885 1.2440999494688471073895439084758566 0.0380623223083865250356951546940102 1.0388056145193631846182079616285596 GT 1 -83876195998332586859664022400.2429919974574841597746559092776105 1.8341163887422453963087573824366716 0.0554148244547697798115264979683783 1.0570094155399146471168730600483893 GT 1 -791299220550314129147092.6707581059473979864532961672676190 0.1215136141591377868405453549382707 0.0544085395978265231555012423328375 1.0559446632486480406347617296394094 GT 1 -1432218706.9086710987555561623352136545737878 0.9766486099117316122813731767680143 0.0524079212824143971777534760944384 1.0538311660427185704116605761825277 GT 1 -1338339915955880443858913409757436000702205.7600115116908580239381308348567642 0.2729283204198972971821499294756975 0.0639903720898362413907706376465269 1.0661295163286404593056758372987320 GT 1 -10050502103917753169080406099.4582722401666682196099879228910302 0.0228798455119154215538337544102436 0.0293327167222286493382604278363928 1.0297715230889151745750107866547435 GT 1 -64031007591199182983287541733362.0344015011399247645708462934186019 2.2747371377341656407540604832832198 0.0266656427816831767402585366154642 1.0270276204518457232380569662342225 GT 1 -123237757386839.1495533749745138025429918088736043 0.4679965294942419813765306790535537 0.0931719507657874393739173668286496 1.0978024287206085622370212130857949 GT 1 -3169324357492783608909854968236455859470714.0205531164381554607054453229678009 0.1611180476237281544237862545638846 0.0635732278502607407452054824137277 1.0656839532681665917421248544411170 GT 1 -3101394421371253.7452802786386537360187282173124833 0.9024933207134034809264766306609317 0.0010520604282635176258955245576428 1.0010526142322934861356489334958731 GT 1 -502012951056632513600136018790026117466.8482725079910669275560271198185616 0.7627757286647651925243903423516468 0.0530505228683341367236455003400823 1.0545095376609909564610743060243246 GT 1 -59889.7021475792034089454138350040897145 0.5226149823669143428176175457449048 0.0283356756359207467807039097495494 1.0287448794715654130915306547593820 GT 1 -122319720.3138222103804376323142541161960846 0.0450639871550719627820059765559782 0.0821706246454855663108439956183154 1.0857437712636934180152579772150815 GT 1 -1725878.6195851062057107662977354971565493 1.1857466071030226522746704047530540 0.0039167069138107527565022292440944 1.0039243972975557836819550110020730 GT 1 -9290509713.2984775010485511175296154697972072 0.0776421326961899089452971907477376 0.0784285302057979695665935000610949 1.0816749467742510419500386820077287 GT 1 -817655156554260361176891.7516832879691462704066843207648316 2.9118905418234186229560266018549448 0.0164365244924077970490759347395691 1.0165731028110688144650849654483924 GT 1 -109360623966968823762828277561.8103942254733469316345561889100426 0.4177955413982062047723180140185051 0.0684148615615985442927867092506512 1.0708676938274052129948411577887010 GT 1 -12201128521.7919165123886070508857482598701709 0.7946360808789467639054752649515471 0.0951527417947334436481684757458248 1.0999891249901861151649873646743096 GT 1 -120512675503862837293645850.8163693505439046661822498892940898 3.3598624906134033968642877331593204 0.0303220728374480683588877703782860 1.0307912964731924675372628768208250 GT 1 -75.7902959179666907538474418404559842 0.7513308658459558693907926502548628 0.0851213543576294675084058839473317 1.0889638502157048704710873912445324 GT 1 -2811.1518635023449245614902452290751003 0.1044999891156790577189748516258759 0.0947410006845285060636926732166722 1.0995341891370055628583454319428966 GT 1 -78212603065674029918778158.1520148485721156428021504061648645 0.1519689586157556152800667980324437 0.0507799728630962218765340737851857 1.0521146556788188737943367165804116 GT 1 -40331891178.2317518122734723877205051964420353 0.0265187859919316833322767501725630 0.0847308683965879310089692362725119 1.0885371240553128899142042765559866 GT 1 -1149172749800.7095257612273202739948158139471050 6.2385601705542848482242255609679245 0.0655190147776497634042692617034776 1.0677639998351598450021624640757747 LT 1 -155459178900806004.4329079943644285756625406044763158 1.2789271640641970851932488999490385 0.0960032243019024241460069839180637 1.1009294853019655394189156980641044 GT 1 -333524162489050386455456039.4346254994185096872355263706980848 0.6870242059609632210855749553105964 0.0826528089454585048173180540401676 1.0862692621836350729986891545479873 GT 1 -730473370177399257297681278771714501.5772617450226446732688805923871410 0.0670928525125364474861728878572990 0.0702077148491761554371538507775979 1.0727940670811943348529788838653768 GT 1 -942892758981965146581714575544.3774166225731462319698387487824161 1.7674810650036076845044774363776707 0.0413534629903673009642287698413248 1.0422328465857771620529043452447039 GT 1 -6163252881562976526224.1134777549513315237506714926667220 0.8211517692843285467334761512071539 0.0997325314614448732006380613103206 1.1050633725441530362944241146967874 GT 1 -478152389763740404817259397283091.3278583981305333997126535445920552 1.8300034332808676057982693805297426 0.0952194181130011527211937237295003 1.1000628156317872990689436468629540 GT 1 -19929133597408525009283915512250459933.6485918253796452028544489373708079 0.2002372279812993003113710275146391 0.0837237259856072816891382641134524 1.0874373505968955419685846446847754 GT 1 -158726164310804765302091557406836925411344.0501883802508498365716822861589601 0.8158202197212765761711636560242227 0.0378593903349889864199280360928891 1.0385946751043887587178023983526833 GT 1 -61111333169995872008342311485341.3206423307661743819793445000497074 0.6408193802383970233841021551934872 0.0487268346402339811514951613952180 1.0499540175563567305557847505327429 GT 1 -8852130763447166.6428402117798193991929246100638216 0.8573171774233940699039491006119697 0.0444370010762855398599629656008741 1.0454545845357668009213590989517241 GT 1 -137645159941.6235165497207273395925022266963177 0.1854355862350360376549548903749471 0.0799192174571238098332803409603581 1.0832938056820479037985435394147820 GT 1 -84258974120.2442169068148004765508103224696776 0.2234988576614858191093234048601791 0.0223319658775480362276538534753486 1.0225850999805055889372945804544467 GT 1 -8291969500880252081716930.1211439850919011860381747704179235 3.8956136122962464540776852971139875 0.0827090202666029641868117625781370 1.0863305400116635905975009516292083 LT 1 -1116176939623340348717556998829223.2749409667942519250115635468254420 1.1449872106055896570966686690063713 0.0121979657693889597479749467927185 1.0122729715229942031241224034960469 GT 1 -166608221898723991383.2212910259964298557180378134849888 0.0312410938199875415674625349713690 0.0554866140730809262794128327084685 1.0570854196402933592170286179298466 GT 1 -707200966436773.9535347430864408091009181328022379 0.1535052873003420588312852048893354 0.0875971975005888235408526226047046 1.0916737170077796340624882320644972 GT 1 -15779841634017.9408130634024869438714748419641391 0.1555733209662838806444267448750923 0.0605142522767619143914910508476299 1.0624226303094227891180774813963455 GT 1 -2147903510806800206955096260367962537.2804489111179158341153914491044876 0.1390901147127933266441023820481664 0.0164414061320260328120087063575717 1.0165780660410526002586501926685972 GT 1 -6317153747281.7115621208123469272072312204997183 0.4729800700995153177147790915879407 0.0022971990646642177617968852675731 1.0022998416742781475625887635375891 GT 1 -440557891360044876690052.9806319255768210460775458224847793 0.1572565998047992533601640835185201 0.0154776041010023778265523574459289 1.0155986326609406478641483709203721 GT 1 -5426838170208089456441453357294236674979856.9567598403135343493117280780495374 0.5696945447605167814737305849502445 0.0058996286796081340883694396647596 1.0059171002399228114462676849292744 GT 1 -48467514279545908166254015928252313671292.4519650467697562498110251330356362 0.2576494318354668962229564185269281 0.0672789682927651531737828350467659 1.0696491242302203226626560155224868 GT 1 -60400727938.0956495198254543864601546733483265 0.4294931574222781278370083619448050 0.0796338087484236199990721314184526 1.0829836541644525393022091323750332 GT 1 -1777.0857247037358059379542104374617704 0.7675461269039060970952737967324244 0.0337048434286181858649405336625680 1.0342859463340683543181078461890584 GT 1 -31669886718.2406033626441142902646307036051632 1.0093996749947281741961224811147767 0.0605055851017426732533851020815565 1.0624134049059920148066933312596403 GT 1 -209843932600.8636715946609772039671934254104474 2.9711661632186104209969369963476439 0.0398233307363907824867976986844641 1.0406379809688609375200577550426150 GT 1 -11613262749857900310497196528.0781808612857467712085578723213204 0.5461986847565758354953069472817130 0.0087822943292011520333516976489675 1.0088210859627413498528828326622888 GT 1 -182573301490501059840556375150384299.9351984476359470013332531518218889 1.5686262252430518430157273616709596 0.0639562652411901371719034290122639 1.0660930784264630854551170976026474 GT 1 -13376863262437551.9332123683138675094954923129527046 0.0560390490575635903410017869703857 0.0372509930858202518924217428045822 1.0379625377972018142320386944335675 GT 1 -749231970218689286.9153857731368423111627706998098280 0.2552675145395916680027626179944428 0.0989391879378029600562500611389280 1.1041825296867116933043751477311884 GT 1 -27431.9772104925361799567359633818888381 0.3446498525002624670155427140278135 0.0605808758939897373554507753258423 1.0624935478084986019045884226087852 GT 1 -112686781.3688216758489288791396889297809555 0.9874124307660736340843973381079805 0.0478015815549560047547223331544294 1.0489818431713820173276047245310748 GT 1 -51658267485471169770774607086082.5331632858501784199513104827192397 0.0543259652163301024177402866053594 0.0585025033883434282380331964330003 1.0602835898245705332197139527367896 GT 1 -2598.8783401651165215384430269071857207 1.4416268463919508759951844366338889 0.0565889985161199494477589520887203 1.0582532466737040744920934288730910 GT 1 -2615218353994937819878092141.6766412124588169526604276855479617 0.3901410454218177552056014903647693 0.0934291447803833697973181563994339 1.0980860883342642119252495961919308 GT 1 -2460714458968984.1089246824200691027044323238246117 1.7821693733556413344407380351259461 0.0224308268872416445959068284412457 1.0226862242936191361143662584729112 GT 1 -6355642874586177586432.5915315631303063427130419114479460 0.4911966621255524095585633775078189 0.0588481246087314944279256087768462 1.0606507545546690848111233601949758 GT 1 -58812198501232071581613219493.4216560702226103465841734394250388 1.7810548011425180843110483811554857 0.0510193937085555864622159282476009 1.0523669165226018463167377118063229 GT 1 -95838725925781847846.6911313357673408229664258787045018 0.2804643207085839255319562822369294 0.0601745527638671634998639055502921 1.0620611153910786863256378146883318 GT 1 -685939996550958576935508999.5250937356041852563819063199138264 1.3750630534048397022583126510964807 0.0688715870722129663858360984288500 1.0713580811115179083674026109783748 GT 1 -165664336386850308261894070783766075.0360301890608288636076105093715080 3.2239903681984704205290399230268539 0.0286086863680903680194056541358914 1.0290258912229816311040028698025223 GT 1 -184857807380382926207.9350952443861361404537928084287639 0.0775318774267547650377849438334160 0.0186234585481480127019987386043161 1.0187990587586949839125765365673350 GT 1 -468421552262435074814473692397593428276886.9463054191943644784324475641191933 1.9931862123794279527356973746233847 0.0712261084480620737380263802778790 1.0738899588644130000140528380993822 GT 1 -1776011.4365078659281494008031890888184675 0.3453797603839064797865020851725338 0.0294534887765546663381905984144798 1.0298959525101607325284204510042085 GT 1 -3048966905386393887.5452648279207750279763991707166046 2.3692408262797516942372954446338380 0.0823714716967175188664341339917461 1.0859626235202702065354659152910631 GT 1 -589667725691827646985350956253452.7458004524935659522465011373525764 0.0523581524471978125394847165593886 0.0290394555834445260689475390185272 1.0294694454849261573455211852442458 GT 1 -1368.4813141172965077716765145118846965 0.6420382788282556863334724408457810 0.0398612121346475994460224171262491 1.0406774342765152608081175848334920 GT 1 -6577093800422749.3226412355663597439865361080278788 0.3470315928412392457158998343159666 0.0469618527501889821604609993007795 1.0481003475353420651635051866799343 GT 1 -2326580889274110404977931139464000512.2021272973022053621379242197411789 0.3616540124761225682134049107648876 0.0754582450716680140283779585845429 1.0784570642983514727384217555469942 GT 1 -4837062190377555818.6049915566644376669090360319318057 0.2654352384626690961000872078810344 0.0840876770082863228958382501133681 1.0878346361471503558230345924649919 GT 1 -163686838073229885.3207160247151939610144305669065220 0.0090046401530484838060984444398444 0.0715626133185531063466607934605551 1.0742523353781863990330742092519489 GT 1 -8498003055330.2407901568483502897212648158818136 0.3853035515456566554835673145218004 0.0910509258480057596942024145787382 1.0954662104092729521626002422697366 GT 1 -43327352566748580063.3526980334671837089313161025639070 0.1998618268012246344603613105770662 0.0034852789362897822265165657172298 1.0034913666700042947480033297843847 GT 1 -245603278553664025420393649047156087168572.3185565430561426620977858405633483 0.0585073299563728461309280235821483 0.0450160903998754302741467446919890 1.0460607872296028234012574805448344 GT 1 -4229292167954748652216030702602728411109.6978725904728536045980091725922613 0.9908576573863889258470186863729775 0.0142493953346263153513386021832017 1.0143518928181735268881683974461462 GT 1 -1148953574650923932152050.0619296435141991762142307492434903 1.4163635212024844928472335758049685 0.0454881842683960146421610497332738 1.0465552569179887377210226219181134 GT 1 -828707738858573837222070841.6247289434810714788659423634005175 0.2508543515405562166897509881378448 0.0844703585041653347722433491861246 1.0882525380068529570176441845883733 GT 1 -1755.2775364427345729534954014868759773 0.0055851334515003415795393256808271 0.0457981260560992284603107448868179 1.0468800220119930640839034427637075 GT 1 -59398819086.0473699978396048718430571797561108 1.3240891111843708112038383992193644 0.0262970107517682547208003881185685 1.0266489610131980373079005347571570 GT 1 -4.5064390310641842623096988047513843 0.7502893741088913259348662159628189 0.0487430612503786306965622033904135 1.0499710754837030513187999133383985 GT 1 -5813203894262.0710536853757931741207175584380551 0.8130216530434749325383570494305376 0.0945179642330406557598563304767090 1.0992878408759405489908191370816586 GT 1 -248066154565.0287276136818379058178074866794758 0.0810905872978953662528586174385635 0.0957593696000754756444498724632395 1.1006597699399418594788004145243682 GT 1 -61302532975.3497455623275713919272408719924694 0.8364764018387955796794806908563228 0.0722762853737267100995053030028821 1.0750213118316186630711228894324361 GT 1 -2508426430.6254046350796168430707960578984434 0.7546148365829493154761775534286331 0.0051947214536680052173642852910446 1.0052082609287140535637282531239562 GT 1 -1272961535429686438771347008771020224.5395977834912550903720188316675711 1.5648418106685300644072229469302361 0.0373382786837974502278231901152738 1.0380532047876337368644446506825780 GT 1 -14634479570928571356896998206527.4485558966388507293268415377793937 0.9573647621026980007719918904845690 0.0700521770231740051151280763968760 1.0726267987347355511142590855174683 GT 1 -43988819969196693.0508793436707158039331203666670260 0.8178141067973077411717496500972368 0.0972512307372111703650853998562415 1.1023109821455891588912844221328107 GT 1 -22054917394130.4964825425329385687154962739456990 1.5557927745959400671538597493518067 0.0693568430735402327807152366113005 1.0718793652692234249435261811093825 GT 1 -7093387180667923366763499561727900782448.4369794826040470657551290162829347 1.7575048708162454550242403957315633 0.0505843526266913428785656027061442 1.0519085916722025953888101838251324 GT 1 -1864784679139289.9085136277219159823164440431497718 0.1471145857354227050007098223776514 0.0968335380950364127094710799633845 1.1018483993594049799608203000912727 GT 1 -2076963297946743375894519.4338279658408676700700840715618493 0.0960318518505887528888618438675386 0.0481035808624277596684237298924017 1.0492990535372138889208058941798822 GT 1 -2276861858684349335852954158505610325653.4489281485248636514369030509490053 0.5613841366707542901404763268982019 0.0222992448379788989991843640615051 1.0225516320845756707191587777481106 GT 1 -1352.0291405569476974791487144362796632 0.1829145549412387455596245413442142 0.0818432697679068159407526478600586 1.0853871728340521481895563092063625 GT 1 -291545389.2716016370954395358070691512622326 0.5811373069373619499287717620373024 0.0247927181623688115789247195636110 1.0251052338232330852062559875822930 GT 1 -23838.6998758088922808270150663820366889 0.0177991842068246226368452597841757 0.0233333298770903020254542438418788 1.0236098621003183693353714424682259 GT 1 -3011448136805878701182175055231330879128.2077035338907228822771732889826773 0.1602162686680706060571660109598403 0.0627634537736705889000508505152119 1.0648195779889299892056619300254784 GT 1 -2411414597072090306369275845018795038.6863805048711186229844475531725751 3.3300266018576266036946561087730137 0.0441396603852787532162809938494930 1.0451434648717863634754957264984497 LT 1 -19553549395276428940.3645701336016194569170888376306560 0.0490600703621047136711836737618827 0.0187853097881255257928134605140091 1.0189639950304291902022206875514385 GT 1 -185554662382980651703998578202401210673.2789959774347460003122902554285357 0.1638056342320920920882039953100998 0.0356039416872219082550451489337214 1.0362532198747033413884670138935871 GT 1 -25384042433809820110659074111685159266.8135214755220293886769949372172906 1.7179626386514860578809649422730083 0.0188164157383338565290794024999470 1.0189956970051155273067516574098584 GT 1 -96222123545090109645462722764413450982501.8240771021755410320617376454526996 0.1717374493486438179112636292199109 0.0367169568023346704317285997245502 1.0374079921995414055125071063732479 GT 1 -163.0483095172494444374813577508711161 0.6217687677238086610180864946430712 0.0715893487560599599510789468329516 1.0742811319592341104018336030563121 GT 1 -295227542936754176364145982659898187140096.4684306626879011050553593429824929 1.1085864680604038038237641996475280 0.0604635869141489778155080189545190 1.0623687029383869955443017124824017 GT 1 -2300462866647669482400850145.7648277875281609574897449173010687 0.6301827080444842025218099928980354 0.0768685589183059534066164854750322 1.0799836482457435481705705032470574 GT 1 -174308780739660542816117960614.2557049533788295780650364887316733 0.4385867110368461752114251289471633 0.0811136903176599552161458927011110 1.0845928751798839415899444753084415 GT 1 -8959132201.3049474420258804233020634232131675 2.8087831223727528470324784023264567 0.0614570073519959532966562936859775 1.0654380817287964123133011933770217 LT 2 -166107927764875852682407819.4258486108622892671538987289121406 0.2428268366995551596752739983408821 0.0561201704988019007578337130865840 1.0577564201970799077310880896372486 GT 1 -19867927935374405.5493031256349658705751283303908744 0.5935792492998829688632006856694557 0.0317337848466798210780097425605823 1.0322482138611766497367408145289227 GT 1 -371400742610004127351361393647104715104.5184604542559249473616575393379884 0.6763147200532806632089786375819742 0.0540503801357153885925563351711108 1.0555659673058234695592173196402995 GT 1 -20966992.6384996113558881301249641629084007 0.8085643421717538589075490206418651 0.0382606873896636469904697419375713 1.0390118498519894529172329079326077 GT 1 -375097637123893130648379233128428922215.6242834042323635894383614288488949 0.1316474945035386877964867063588884 0.0021288988470913811568708414133052 1.0021311681735917103023208836261223 GT 1 -30313267926720818107787797994284486635.2458528689981475894005404287757087 0.0761370366777427045474937384048696 0.0521369028762734203633693416395972 1.0535451994723219867084314828189756 GT 1 -3021994355026285803.5367412181626281641301626793190887 0.2261945521860405906377798122021952 0.0143194303559870870101874960698231 1.0144229427460664117234375287815540 GT 1 -11354488701804006864961186847319331471623.0517203646229284069954375100727533 0.4436492227966211135103410877613022 0.0730791799339626798420436738739856 1.0758871323113650265673997032959382 GT 1 -35173658937223.7639231857021550416717340838295331 0.1764476277802644746314322397979440 0.0303733779473254193490950049592827 1.0308442073065219534037707377357336 GT 1 -7182796772069846031928835075862087974873.7387299610356544062592928968010633 3.2884911336165433009177284143388135 0.0639457718838437889252518545202332 1.0660818681612370675043525296178807 LT 1 -13288778479809.4297637371192563995209149407375696 0.0234129304614894600162803709991058 0.0388235734663821842763395497245116 1.0395973004584176578291414312258078 GT 1 -387600166118686020164252332.7297565005151893373598870906436614 0.2295192022019250154546377393920600 0.0555020685305654520521107396654465 1.0571017821229768104045990483378939 GT 1 -18664501636497710004127047781989.0493408037069185832875449617980364 0.6708120238479092482572050975285994 0.0646728421844626027173609886370017 1.0668589094876796456983435236367855 GT 1 -297248867058897662.1059118775564357459571330255333538 0.3923137172766047716269343267038734 0.0031786337115541674044371563366494 1.0031836962986100827933486141345788 GT 1 -4028796349590840356396140429518031.0222178106620601130213624471234660 5.6758771333517884164766838604943293 0.0546333798131056546170037946469512 1.0561824688548608207548353860517980 LT 1 -29094206563291974691.1507636290966990300214085492456235 2.6620415520420989545847534005171099 0.0325996313501360914558917382343597 1.0331428375204883914322807925664667 GT 1 -226344506308902234.9389455871961899530232708701767671 0.8117341436470719670867759920225740 0.0016906310109348935969071321727191 1.0016920617403268381271356861727822 GT 1 -2960.6202855030878773296807562769565594 1.7668067968507781705687930925804821 0.0496672108744199815666644232678509 1.0509430513870757698226395253836921 GT 1 -21478503889218514757079105988118458507.4961913234839224790034133149480525 0.3843283615435510806201479334750287 0.0117007074893300747994303238685217 1.0117696994652050660384795172957298 GT 1 -6039637735550308997.2376439356681260408536415319829669 0.3804616266722300819034647108177277 0.0160764179189901480754404853897798 1.0162070454323939741267712998441869 GT 1 -11.3681224069361722546020995784410756 0.0847882932232129729457424986267196 0.0862685144148016951921641920584099 1.0902185301368890277585858410533291 GT 1 -377.5231507007594175514377687411673782 1.1189322282204207384254229847469214 0.0039824611342145758470160381933507 1.0039904122495833604500909122915548 GT 1 -67245917859368816149950397183.7265349300071082639460894766067520 0.2067132034045410924811458930947369 0.0598791097819697524829665754040190 1.0617468053722834096641939534692182 GT 1 -4638939287670314782.8986579521916837385452749724358845 1.6569133039467010848750745106039117 0.0028046235399665561391781577013123 1.0028085638657117337612227514274223 GT 1 -23814184339592131890062043.2754268905051018243284903843053620 0.2893692395508264048165736788126873 0.0843337441276967341506653970817540 1.0881033301837921896167939684720239 GT 1 -104466399152069411054019127058.6517682928918259558453932018244852 0.2234859106389166492730401535000296 0.0959208753313880522498982647760688 1.1008383951319625982744495358665670 GT 1 -43262910337724741987361350645.0417325389041810972869258117935168 0.5484601676382208974307052926884585 0.0388777614059021523609768702355459 1.0396536787314897259143905672549214 GT 1 -36230100020767245143375499533.1359922356996430886248392597688421 0.6138538264559458562426221775155949 0.0834800091568286660568604303213847 1.0871713997818614875570563572877503 GT 1 -1514221118266716.0349249009503067129578549831825867 1.9775185752792294690893371085132197 0.0787941816872417335393085479332283 1.0820717950408348084812039780692335 GT 1 -66792502905562040984827326055824.0235770397923581886420469225254571 2.1789834448168878766739551851655886 0.0137557531266197662501399095814946 1.0138512401740427003171673978808282 GT 1 -220986730.4967240611528062777637564882595016 0.1877863096627358840236858073580145 0.0069170561550984735507061928277238 1.0069410898805645749128766312537579 GT 1 -1409411816.3066407572487485161408621723943511 1.8440999661468915934639683707447920 0.0947219423489164478002222016640169 1.0995131364493078106114696570551787 GT 1 -111728487223353619123197648.5903732451623390334074598172277009 0.4640112813254982968282632882597388 0.0893953472960503662665874187951185 1.0936464466019218519826062980968008 GT 1 -11116734800738873323400978199820.6747825106737933274295757429390436 1.1473132281081074567470728851384564 0.0765292678220028663644416786203640 1.0796161721265940979172286560669872 GT 1 -1655432953784664.7596949098964300525249840719935751 2.1261780447476344821291228976234455 0.0355708576651878646385298662557101 1.0362189150325370524191960530792001 GT 1 -129682530271310.6765711524775167148926516686784847 0.8658610850559459369690983098435066 0.0737975210305292120830465464767913 1.0766624084442812764866820067585336 GT 1 -109768952288219424893156620554368736935058.2471461792643244991144034457812565 1.5031451800872305822706275405473161 0.0243050112895457434335129451085969 1.0246052529781179340930540125308830 GT 1 -264365541198685968866755822962566541067.4667382430403918732711216624287546 0.1452432511797839174750503456037817 0.0059077434855364029254135389571865 1.0059252632376270640090698037224944 GT 1 -287036286.2158037678024397783907368165107990 0.0183518184578477736269173522425931 0.0094873630095270386444395689176308 1.0095326547316070871012541341207202 GT 1 -948431982817336045605059807080042.0098010842772951994786555204728533 0.1568111099606372092143730168676621 0.0294383347130593333883492157071575 1.0298803386832972715401897435598457 GT 1 -84049042.1496287569099254170172226538436279 0.0178404554054775123414847255884210 0.0156422349601011848790663607016777 1.0157658656523117265609741940817439 GT 1 -47407785962110272530.0944161412531317641890997424092201 0.4970538348498623073965176555763374 0.0628775294023522237468583351831267 1.0649413002713727408416811530398747 GT 1 -129064160530177651015681556512.5105567750618779036433433934226007 2.4282526220071799035607680102365204 0.0489957173160113258511538596127593 1.0502367130988440179407778709903504 GT 1 -6294884.1080030048313105355804390455846571 0.3216693758697995695643846176570709 0.0705369879166289055652992351796503 1.0731482659600519463032984445405684 GT 1 -78357203262805012.0706526063994616329590668401743963 1.3611471568113772132630816735285694 0.0355873807963810523773785392995268 1.0362360477300170293876596460283248 GT 1 -11054418729473802255451764184083.1489176242108642224413424050576378 0.8610755097057439058409989276993437 0.0935634729860830914125518545461085 1.0982342710799737585562077590036573 GT 1 -316648930457575398557463.9571619814404406605849630095625151 0.2410902551622880317724957814719318 0.0989477018043515588003934174080142 1.1041919784460600384553502263628978 GT 1 -5535239081979935339316018.0237682254457926738674582542553775 0.2725634440941765471032358225328985 0.0296792841933880857157523587109469 1.0301286272801887702315187758913626 GT 1 -3793917097217403122360512939460.7938694147628745440425118813168956 2.6133314762549484867257223637487684 0.0317001222098452178353817635791028 1.0322134485753847991446654652776400 GT 1 -55715027885478382835541917565215725842.1281635089849278220287162322709024 1.1448955262085904605930789341205434 0.0149279604510129632729990639322440 1.0150405038864423740518517424284636 GT 1 -11.7980496071495909605050459737598603 0.3107487433594059300629682805519827 0.0539223718756366473825378922522110 1.0554306539688616064054432889672047 GT 1 -296939706857.7064700322326687268089690340226106 0.0323644902094195912291973530651236 0.0129765179002432832413117892076143 1.0130614484438679546572269994994521 GT 1 -16402335260535037908473749655473948.3671244929948861799227949862215557 1.5298224288867729197410526455486734 0.0866480937735240636480018763119204 1.0906340331904272247547384260020857 GT 1 -184154619410028.2378076191784646976352022505100913 2.4027064487318049282451324290330684 0.0988253898284953330237006596365890 1.1094700951531114302639297705393148 LT 2 -661044955.6891156735517806209838475749935739 0.6451196027448831273173223241130857 0.0601509025675199255271304233466490 1.0620359512514508280177435123844824 GT 1 -1174773862178240246815125808.8362670227770404459392240095653863 0.3814656331960127065807858919158182 0.0076293308809495342978946339428778 1.0076585831040341801983212218205983 GT 1 -137510544411595459914130612118110.1095620911000742806691749788402713 1.6923734359989825719004396831484014 0.0592223817703601065940019536339418 1.0610484922678310547747303489939893 GT 1 -5335752781892347.1713532544926206606076954751787299 0.4512438464706973423507575091365108 0.0772749679109842780931462408054981 1.0804239955914364727581753304364876 GT 1 -16854400993752852449.7448303859789919531724326108037311 3.2559170964087719459127165603450047 0.0964167787057279849350306304598391 1.1013870632921285490449690177850699 LT 1 -77718823035671.8527818967694812449018863688156410 1.0096391185263524131744745579270783 0.0234764407590598479799712271244550 1.0237564027496357230644700713716475 GT 1 -73837519454651057731938.4304911441909095702490567840577603 0.7995259096581838557093403829380655 0.0832363120917529130882971279978550 1.0869055412359793605900088240850377 GT 1 -15873511796994.9182753304583710249224623197695137 4.2618352908157362467859142457050414 0.0283333435572257810738080565645060 1.0287424793876702872408021524937113 LT 1 -3342221487631318.1238948119200751139573714077243710 0.2338473615167360324326846636687878 0.0342140052558734147317473203653610 1.0348130068446430189276642446788643 GT 1 -3542.2659648977077587491521166258015849 2.0475664573375336794162687517270451 0.0196465403135557499119747829055952 1.0198420991950117270007577543253903 GT 1 -551976255275404888086827441889602756657365.9000159547708485200398143027323992 0.0081959512130887491753108563771833 0.0187784958131185730795954737015886 1.0189570506262988253546245615645013 GT 1 -1929411880965566158495712236.2042057934303430533352524863405756 2.0152718668644492953600006091589372 0.0212618235099665126502053153036632 1.0214911119646157466066264273721888 GT 1 -40007048945703.6880541656419669104992999868230175 0.0588362073917654502392411051333662 0.0441672672932823307301302306507440 1.0451723470269871170420418131439342 GT 1 -7638308527085600728204.4505402859532671345338140363479795 0.7179830016717011607302568673611585 0.0740957667540622501289089892287634 1.0769844695049576448770785041040514 GT 1 -24730720613634691189177460253195098861470110.9978798707521276983904689298251682 0.4050130024751311667665489533660132 0.0935522216788575286431226889388341 1.0982218584762652965870946548599139 GT 1 -100174165846610707443009766972351712275.0214688941532382305765658483805556 0.3881000581639968772663136920961767 0.0973072992217054891881282134947409 1.1023730926990939121437253573492513 GT 1 -1457084605376425712707507092896350597.9009053446831943673858377572749291 1.3362448837821662644712891709805142 0.0515239235740252632627853477327479 1.0528987124597164671025749111202143 GT 1 -632.8699100447956715203072531593612159 0.6665505153305453740270711579682599 0.0698964816570762466425728527028338 1.0724593889831843752908753379057066 GT 1 -5138429889832078766118767906879902786111319.2975453675176588891043739427053180 0.1251686323849727691564818728461381 0.0514062663116750386362290867137125 1.0527746714129676458805552409417941 GT 1 -1276132776270101726793609025.3820373819814516252360641619077655 1.6235709413119001099433750659444779 0.0422056153200914069537115459847025 1.0431221538179922475772803803169061 GT 1 -24714188181906644343.5530878979173429320392844149322158 0.5300438853059388614762985784439160 0.0856114018868913537217002951694950 1.0894996358344084868103108733414052 GT 1 -776011605.3959393007709196540165570685400125 0.4637885026182496402929657303781777 0.0598210404887632930956538508493239 1.0616850393797654803412202645708656 GT 1 -2567750626990534710223025.9099810923895740438883042039064025 0.2482762479289686369172966696722142 0.0748306420902809176447777134211226 1.0777784685964442660473310608779455 GT 1 -3323071034039230999.8513350671071434858640989749344932 0.1969290423359287670995099068245154 0.0983790083130068408737373375496430 1.1035610338224252956573695277283064 GT 1 -60912103306610466204321945978576855.8540055092196585721887852511937249 1.0926380019672095881906365726077629 0.0492667127434432016623329077273625 1.0505217108120401860893076357352971 GT 1 -543569879486261405024207940933330332237321.3190575964845739285464022498447135 0.2143487123730535688895641464369324 0.0962041744064538706151597424319858 1.1011518007437208817094647900837909 GT 1 -1623140563.9689930666165020922963328746409089 1.0727865969400728747677748306583001 0.0954653854550742248633128449906926 1.1003347056198594474011922843847557 GT 1 -13498636205491268.5249792861049885377968807344529805 0.4491501171029301555070355263258271 0.0870744897248817955624840903752378 1.0911009895851708468241842675029451 GT 1 -158143988076832505943145351134379467037.9847640877526115598768535033261465 1.2025741509203587896003762363331856 0.0104433800967973697991533879746938 1.0104982948557889060571926369288510 GT 1 -24662837186171901874455510776971793196410.0594355252196306978546013791938343 0.9411695636911799426013867493461278 0.0731026577905308589541378715941141 1.0759124615017324528567430269911872 GT 1 -50936980025176371758615220135887318.0416311134060827910240820053352398 1.1800926532402362306104548893828485 0.0489185904312024739427779754937840 1.0501556159272862265826695105572734 GT 1 -913599271258610770959457863475.1802629125982194887141219503485046 1.6098085304698297519743064948551170 0.0652015883994050934496255676844154 1.0674243755052332508372476684614973 GT 1 -5059279045440815103743318865123.1870852076453500058744556942481335 1.7323323866091180645546129254803890 0.0698867918284234971906413549816449 1.0724489710264864017336287601287353 GT 1 -6927222566186776393698657130305961483969922.8744768814378630359243568920669175 1.6294610016760342471726601918360370 0.0279802464033374487919232099217515 1.0283791520978885631833672839790783 GT 1 -592364.4595744015820943414546039834160158 0.4489728816991419598455199563110944 0.0511171996110756823984034909197241 1.0524699860082796987119748020370313 GT 1 -374141923299601.3382738483389326002018022799097437 0.0099231074187921233479913060483155 0.0209758827793443524733729108353396 1.0211990022089278609710606885386343 GT 1 -19804184726383550064563594595118450.9871160130939186085229345264277035 0.0644227969585455438907388286531007 0.0846322523070107415221870702933996 1.0884293844038419925522241450026592 GT 1 -41287903415180773744.4405620110935571491776421089882818 1.1398970883621513671157375657525183 0.0538129679813654341966293933100142 1.0553150212070207249444785398536286 GT 1 -2755057014449538158790196951055071.7243945100928075971583769166639275 2.1939173092083617102912129771772129 0.0074396992839734072041596383459801 1.0074675118774425481354524448306427 GT 1 -5571.8979559776702366642128007338878487 0.5254123242291196851709403245084095 0.0795388916032119578982259579035549 1.0828805297210961084513165299611619 GT 1 -114797440457963764474532172241965050350.3102175162205269549051206100834665 0.6137634880715128869369790847525249 0.0492111614238102993407787936917366 1.0504632825467110324068832311068113 GT 1 -149495974657439141891402596511781.2708683717259325050871156526240003 0.1940588934785657052800286476781809 0.0695325605507127046486774677061407 1.0720681960437478275789931827041372 GT 1 -1097109589772671823426972727805132271606.9649777113211502465592961329902774 0.6793015036063358135025942829835836 0.0527369371040282334037517518924375 1.0541784388423060143280256421667470 GT 1 -664154343402257077198.0055453068068744920257621794153442 1.5720090003633475933383969346337382 0.0107308218626542195731981398787716 1.0107888123618403847785816584132084 GT 1 -70513378728179998959068.5955024559124769096802564645247657 1.0104846957274435427278189781870788 0.0217288337140681986172001234530837 1.0219683812374380300108513447005305 GT 1 -2370528429613391144833436540172893273198206.8326359420455172993991252077445859 0.0493073783291929802048272993260772 0.0555819579284546476765319570908381 1.0571863696843674514295955562086542 GT 1 -5912486796549637900659648866231260512715.8437791008675705883201788237060142 0.1446323983270652389287757840304641 0.0676050497230959041211270386929967 1.0699987876686368544352154338616047 GT 1 -441378907.2995903075052570286933621129444492 0.2980052905165023340244753145683813 0.0499801366237333229341730463857028 1.0512723857890139852849726472907602 GT 1 -18331189550029529178348663771698764036870748.2338387739151879863263907852423393 0.4595722703211186589156067181668934 0.0859442019875619064061290275317196 1.0898636612376975582565362497656494 GT 1 -3219.0542025198361278881628362726502261 0.0890247862495186286553410470997356 0.0988749008767882375149758011726075 1.1041111862579977214052043358500770 GT 1 -88049670281572610669675197837300590569.0689469141624332337185293973562088 0.4090464949964747363285008354627998 0.0514058731858338401661022288992463 1.0527742569829057812088718327748428 GT 1 -60320372459425558573874.4180312944856742560316955502213471 0.0206835189268191724161607844015673 0.0867257791243120410820178715301021 1.0907190920316232154845275407227528 GT 1 -2131.5331902737971681926056149809345242 1.4368000634494424901026815382620495 0.0351240919075348626600568446805326 1.0357557785621900490796756937502930 GT 1 -36432698.5157486980696457077082994585318944 1.3808553879578324902038781257624408 0.0571845022635571383401840103719580 1.0588846700658245124535079220940046 GT 1 -113053365280545847599412499978232631189033.3785110434979624998476919042753416 0.4925877964788416179945569096495102 0.0353045920050850620366176832211911 1.0359428668512538512727218715390748 GT 1 -86418413851524110233.3807451666680103678968643772054150 1.7851352588376601990289230386952843 0.0027324142757567625275337090324453 1.0027361541337583636000637432594189 GT 1 -21867790115798023834350.9973107015002913910808200297700115 0.9098529135066880927710547712112639 0.0890292996434981741037183802375542 1.0932445443068953424158205281985934 GT 1 -2558417671364229693754327.7186201951094744890374561363311376 0.2340588037466587924245916122662655 0.0369948992653932223416535921703696 1.0376965704850517226044145640374728 GT 1 -508491955234077691021784540.6386999584505033490358402832612248 1.0095010432579035282800725849398617 0.0838488881896670261196716056513325 1.0875739586886787348129859118323291 GT 1 -1.5899871481396960349766526063928517 1.4356892639519444562172032842858418 0.0736960005204954862133116595498231 1.0765528050379597457075856698203034 GT 1 -125742241800418825.7649215899433231824187345843122637 0.2259382357490244315513707177646503 0.0525919385993249554055581074908279 1.0540253795560510655164707543822374 GT 1 -6450445148.1599997057102719307171804384189957 0.6560108656980002137571354089000278 0.0104227675832497716295020294974832 1.0104774650230576015648193380915324 GT 1 -28300852000924266.2677529849331346706608662336388598 1.0532223256550327405436706846728205 0.0639572191865823370089583116711057 1.0660940975517911778203758323119538 GT 1 -185999307777610091130407077371.4792049006166327718780937780892582 3.6480243902533735500320339374187440 0.0593318541626233260206346947042327 1.0611648627680894512713118657752251 LT 1 -18626885403865361697840544357668891.0463554571353393868388915812156156 1.5345915731667271170688194466284541 0.0316955405666045722474361991679436 1.0322087169498765936883087701738973 GT 1 -14454395073.1318414896448411805849345401202424 0.4449062803485250460249885677541273 0.0513031168965810405575382407800483 1.0526659380283372534401406969114858 GT 1 -2777088123836841413332331338.2891189628664412203192678169975195 4.1785590054392306455377209267347955 0.0504933269170006126676830733489617 1.0518127207576529399336814999312231 LT 1 -13940.4251306877258123520141236196552420 1.8851374069446044244730177767668024 0.0714107191097744523714280895343469 1.0740887467644418080015492228222111 GT 1 -63216806754174485171.1155764125509376493430950267826917 1.7753663966917323010877300892220008 0.0646400178154282801992180398994054 1.0668238161058566548922085107008689 GT 1 -19913420978036878842667728320089354.4933622498017751074346013115185500 0.7096227646822348628994571570312182 0.0478622266287183331571483272770195 1.0490455347338733936390328184418401 GT 1 -497.1621823812399988903692696700598725 0.0005668458487600456242940656032796 0.0363867677821904542096987796957482 1.0370652762707300717483994020592648 GT 1 -6000717962133519994031407277.3404254603236705858583840772645587 2.8803271184304066387219810555136630 0.0943437084927124507786661635772997 1.0990954141151109055950306651782154 LT 1 -1637739132612388.2396653806247525279905634472377105 1.2558113458557447830165024275886100 0.0552305745523803477240178688316760 1.0568143754951536572623686109065335 GT 1 -621681289595096852.9251287567712147919837945724675179 0.3457537740854414037184783261607159 0.0485876710411415253965186790465866 1.0498077363136015307887081655213406 GT 1 -95649162587535.9420470196544251997998447385458090 1.7801434028911175655529903864428822 0.0081817336950897769935938838260894 1.0082153877697088873373966456829442 GT 1 -1706371180492032530507053839.4660008676838714008935826761275312 0.6763454714655137869704915871869403 0.0632357311823740990659901154644699 1.0653236091664093199995116909540654 GT 1 -5848829.9631585896332387143066385433969258 4.2010741606357945040840949316425043 0.0781126549445634719949467752808148 1.0813322482970391310315407587907826 LT 1 -1929347620960429620410521369093725664.5240950784706173047325701785838027 0.9306627801149203244679746705153619 0.0129098441315911237075233687588087 1.0129939003884823143249320698746776 GT 1 -448.4189095566790279942215094590435367 0.8456122950967211570234614669491017 0.0013388373999611336995110713541172 1.0013397344435059261938983855509557 GT 1 -2327240158213.7235410243829150598674132086351444 0.3997219510875235079113557530896028 0.0408106655274446820831043386610944 1.0416667945210647744893309893452702 GT 1 -2809026675848154268544092657314056024761003.6425329629437284666317394982414189 1.0141251514358376987642552836993256 0.0878078378569647197002967052332111 1.0919046069985924137157532740381912 GT 1 -5626813474328035180747.4200824790036670690930410889074181 2.7942053740104447968393660204302264 0.0793840953299531243337393704385374 1.0827123713306268860672300040251912 LT 1 -1488151035.8313762461662566007958675948939446 0.0189287037555253818209738012681962 0.0702772768450859654168072423990594 1.0728688844347855152189717439817429 GT 1 -20115123334358052624949032.0518364920931195981082676314991322 0.9258649395223739221716834051564871 0.0122761131263571637302487500597396 1.0123520870194542893063013067584277 GT 1 -16622175675760127934834740280543064579.5301776876239505687034954178815344 0.3593568847281421695006801936236513 0.0409333590921847244920717949396557 1.0417947165152950043993294531537767 GT 1 -78931647498133.7572695797396018351651691659922496 0.1963330527325369039189466394916831 0.0270516686089330180442395963193114 1.0274243005791170444127950213430415 GT 1 -69330762326392517693077333.2258923251430482893218666728658398 0.8384339652067226127034176962916490 0.0321687942403131972321541112381100 1.0326975811257106761236337374903486 GT 1 -2368752049862004.1498414929713572441737095413103689 0.1117819315273975261608672550843425 0.0470446781090562811871807090865778 1.0481872579684158702895851644389206 GT 1 -472857883207440848496865586128680967.3293531237493731042162692183393728 1.2049183493600150978508603405807721 0.0628497131841286208885130032128305 1.0649116181260012942102399686949490 GT 1 -634572079327814289250367590607335.4972115245645943319574733013291247 0.2187425432203084170083965548703217 0.0590444989505093359902563923023199 1.0608594295165214750816933247969110 GT 1 -259301308047548041315.8922431387334807705450830336687326 0.2175150623568180627400743130611660 0.0515910734092728530833452361332590 1.0529695125716566725688088895196448 GT 1 -7747146290053188531289610683.0401660061948332768222026442415072 0.7633532108108848070631550942961726 0.0027300204077921892352257273700108 1.0027337537097140116117188568948963 GT 1 -833598108866701271288821344271316659267.7181378961687318115068641110199863 0.7210756801188189738039592851649237 0.0092136704453364295688455167259380 1.0092563788433611730205472675294626 GT 1 -3506657653383252730.5723497609836985460429749788808605 5.0073685147436568395946036633217275 0.0404971166865952301033785915208688 1.0413399585223214018153131836095807 LT 1 -1242993.2277145739294628763981813362914766 1.3753875060709908128748703480356232 0.0197910868219228824733543595685383 1.0199895533241224909359768019807403 GT 1 -363208273180657082058830795785.3001019937394858035528881613475923 1.6284864563767112415068657952402505 0.0198854038389860367628610823564557 1.0200857792956895303669382502822974 GT 1 -109340435707554528682848168139723435387.5404260776995374153815690565124333 1.8412568624934089407659939637360911 0.0064841662463842168062577855414927 1.0065052797708964986397631498396943 GT 1 -13299949784369309334746542279352467238919.8984771649764587000120113990003024 1.3088905257732375411980479075056687 0.0915875765549758881677642540899231 1.0960567926608258667434059298970223 GT 1 -25248837860.0080544707941545809989130395851623 0.2369787820239073019465504327286702 0.0384370148609386942439719257695804 1.0391952089338929065406741132829214 GT 1 -6669083802520641010819095125220947791488532.5969873691302095712798105522444291 0.2274862395641123203157941706740467 0.0412236930241122908599305364537731 1.0420974878495858172412925853040011 GT 1 -14185923535530219920194819568462855185577.5664097605219447762943275385526247 0.3407888164934187677938679322278072 0.0222568906929041645563912872546052 1.0225083128711214338397024412306958 GT 1 -3130170699835854890117234969658.3770123931271667295002782991898765 0.0949609689754295157678170470733388 0.0341281737904100707947152435660795 1.0347241386563036839273408563930492 GT 1 -966875067592670.7404563900970742604114405952595459 4.6417024556013552746145814832516800 0.0196621144123266906025975726018490 1.0198579855289916333308139010604377 LT 1 -904838050164936808828897135486319127021.1156104056718568387158926029533867 0.1003128799168373960758515574860830 0.0171781864656370148158450886167925 1.0173274432880152511919933811930981 GT 1 -11.2422239807033688488366713031022307 0.3667399938696233217567561229572598 0.0234533142493947655185168323975846 1.0237327205398171372071007575649619 GT 1 -1256976305793011860990303536951069.7937657092873493870422847592351394 0.1444905213924382852472040571353270 0.0106304345801259412263636512161821 1.0106873413045882293424684065472847 GT 1 -8.0579829560038392053764037402391650 0.7092819408913719884724180015683383 0.0071043402917939448019818621128666 1.0071296962803672518232550733574515 GT 1 -227410120486436763247713.5436629823003443743374237541448043 0.4668717270289212415007200728161650 0.0459768517757213670693824172671237 1.0470673434421896758154064456474861 GT 1 -120352131200909689678493065.9416403059269857562559772416546608 0.3741365059085490928892943059384818 0.0223017255238937519419811285492939 1.0225541693528030292625643616299313 GT 1 -651179868669025798621885.8525003520629549469170226267573050 0.0785977048773023561707065357053650 0.0295557841121994558876993241502641 1.0300013577903721895692012859237433 GT 1 -471212893810290279257009133540.9376737113914278401164568277271299 1.5976302387763668221798435652289141 0.0862373962620594492476309145753438 1.0901844745928223666186751658876340 GT 1 -19113881767463388638342582100825525362266642.2635425493794164786908788945086059 0.8489671554740066628856077377654861 0.0347601141789887584148714010966825 1.0353786221925997382150540807455522 GT 1 -29670049525717647272273851027.4973933083178035233845769567898545 1.1947513204653247153454157739627078 0.0144908209082576191494753989052121 1.0145968382858665296114880605247396 GT 1 -461080127475455173364263344818588152592520.6281465406570421472926367834909102 0.7876173488660312934579274085889652 0.0513225323389462634880709668072174 1.0526864036179116860264653627488992 GT 1 -25039954414723181041981.4611915534080563532822139632955820 0.5456753407944483316201163005578641 0.0820915823324929906360178443005652 1.0856576562277205498417247390219717 GT 1 -16409903303753689299839615494.8865689847144698721104925367545726 1.0839298661050140685162674281082929 0.0935420488864357111152846633841144 1.0982106358382022613530935754836014 GT 1 -39579262122061237620198516160.1513850370355066530420686182949696 2.0412364808440221506905543230597816 0.0817482753334656952270953272452495 1.0852837160739044238062373873788724 GT 1 -468436055624312905227041427221275543977909.5939591683047123751626762228569367 0.3005275818088004908168810082474019 0.0169539975762200313429779219037216 1.0170993619403590298486719858178002 GT 1 -1323704715154696381703989163766522792853250.2907609940610411555532991733409382 0.1840996746974766690931894258159508 0.0797890990770159439144476531827248 1.0831523950768772688731353538672191 GT 1 -3189318980262965.0051422718654304953420894495735672 2.1321899374441619943822523333208043 0.0608855747257028988112280195351176 1.0628179485459629702268460238154604 GT 1 -190671320282049304968296633707956720177.3907638707160841984533086442996849 0.7637432433961723469511550503856094 0.0681897205320967189313197065993432 1.0706260478209442300360608571553444 GT 1 -171980724741763229424516986533781.0925559339882477075303952050639097 0.7748245419717396364695439500699907 0.0900943273511749045729242436858752 1.0944143412738028650369671030911336 GT 1 -3247512761182406.8260704254136674128434152296979104 1.1066119146335176732481099797395266 0.0071281558066666375953480069567871 1.0071536824870375121221825394336312 GT 1 -15332767142342679178.9755601083614251358003782715927762 0.7637693252416277437651456984156200 0.0063234769962404281964462910539302 1.0063435548629401998522826273790634 GT 1 -127580048249670240883399068528955864.1062264349102895350893454106359461 0.6894376605494796505175206497722380 0.0252217728119022894041623414056812 1.0255452931513373179919135322546542 GT 1 -346525926976663441608345658.2962166011071178087052130299547368 0.4446759894605875127974227177345297 0.0879821506965679038510047988076115 1.0920957174946865618621288179194886 GT 1 -55636782536810138.0532099317531615470260226442801998 0.5550569093780022840477726989539807 0.0755093274266421769158099649351203 1.0785123173639304018413337105051518 GT 1 -16129311202299221720802409533907216.9650995540895626615335641476603068 0.1850150361565713334606962855232280 0.0522234635412731212649715431389155 1.0536365255487833425165873578262560 GT 1 -77640573341954735688729473361366274213713.2300235814176539651206807031539061 0.9908006237078244360190164389434852 0.0567045674649767007454013966441518 1.0583757553448120834704451600281456 GT 1 -423473794168827558391708322252925.0672051046256595435100383016840710 0.0266782177268473548759877148553791 0.0470226361542650430917045976309611 1.0481641281328690276146921205442250 GT 1 -3182914104333727407580910296651361310057.4455859925430985870079867205533267 1.6153415879078511448303848888178214 0.0938349629977664375308108366552637 1.0985338294816690493075645967129899 GT 1 -515991.7492613029174955307409431926063442 2.9178084905277150601902216661301977 0.0963909096007198933730910527208557 1.1013584342360591193651254152401585 LT 1 -30199907026758473167928518502596364697.6373772031658773408326244947923725 5.3454206599338734342186757424107827 0.0296053555458731231234142525182735 1.0300524402730010806415333931576842 LT 1 -143634826662541528146460918580.0945589010033874805158318465629326 0.3394933094878040290414835945907543 0.0910178099574656174258220993088048 1.0954297779091052652345904220037601 GT 1 -13054790491891023552856782652.6348600301945015670737683381977736 1.4334668931746770484749021314295172 0.0204792047756222608300986912858786 1.0206918113743308964480782636536417 GT 1 -23076007841927.1383834626702381524273692674269308 0.8410089446013783916033585202104559 0.0316515006135107061582474221083237 1.0321632364698547177136003325541608 GT 1 -2653334056604962188645.1028184772120880264273317653851182 0.3278208414186940705827113276599606 0.0659845951847491294456524132057904 1.0682623475110957744843136580455716 GT 1 -81492.9866092046877878798390475739688770 1.1746056151259775425583291859022592 0.0643559147606112072963437890783394 1.0665201256308362009308779709688114 GT 1 -315135551727587093535774245791327310448992.0341744075597851193129698108334608 1.3831486618899474002180768459948050 0.0543867109304372808884269890421784 1.0559215788444910513392553111340909 GT 1 -30205.7133764089087134918615518551605772 0.0144037807598077727541815240663767 0.0598982573595975132604094244408357 1.0617671727237808366891473899588091 GT 1 -2064073878508513963787485489013023629034328.1489676303929975935267845824118883 0.6212127636963587303569580390476806 0.0992026905743517771997612592671959 1.1044750084732319710642168833421633 GT 1 -190.5390623093521121634882880877513712 0.3856427766014681770953171419395518 0.0201888497933931557388817877639401 1.0203954297581053869849084331918526 GT 1 -36186110527625506295198759243.4083241888068003368265066354246973 1.2026877246517410293649613685534052 0.0731041973689133426652395657611013 1.0759141225051586107237258980920499 GT 1 -3.2429199981757549500225812811153076 0.0970985860157640096363997129412824 0.0351164861491977465714136226317887 1.0357478959647525959969844925533101 GT 1 -27656222879042367774728684266.7485638011995052024219147793815668 1.4787695101051966045419358533851239 0.0494373162339341314676310460205432 1.0507011710260720294843297564014210 GT 1 -2269539.0363844315372158170352747528136813 1.7320759512130355048353697436270754 0.0321059195953263403426351587725287 1.0326326187620340053692473893937121 GT 1 -25634476235061719528725620213576150380594.3126184612947937828321624071021134 0.1207988838932150325863941558348556 0.0205299033406491672413186318537754 1.0207435712525909474115484860284981 GT 1 -20491245857230.2206025869914189858206193686525115 2.7371901457075006175343942663266665 0.0316832077773220882762288509789128 1.0321959805521198258316171830388011 GT 1 -767594167612035391377903.8938827660544369111927262025277958 0.1039864190510675872856437016429480 0.0583800026055812686605149316611363 1.0601534855869699843518847269665717 GT 1 -848.6863189916687618345549311832704427 0.7375047641149661052132649460267278 0.0083142910892385336359333243929723 1.0083490475919249608589047876867841 GT 1 -41647396984385.8172186910117380129699450239936035 2.2984022193052367610278156306655334 0.0295655494834361029645166617723723 1.0300114206257320326707072010901696 GT 1 -598982531294126482188.7889070700160930088316455621303486 0.3279716701477999898284280475204612 0.0044105694806954739941806009276094 1.0044203247369922876015822963411595 GT 1 -137945692.1842790435211566997971289146502854 0.2945150108737414141892273394568418 0.0200204670824081209270855440597217 1.0202235923135769306300081385835860 GT 1 -4854186222767816726138.2991653028447699717651916443730859 0.9124659025802731998273762059121686 0.0062627740904762072665658805332606 1.0062824675268821795843855974592864 GT 1 -7170219353675626118642.3671262452593431567610041123503320 0.5132440231664186508963439452084735 0.0824242762517260080462080098718200 1.0860201697633807830954728703497890 GT 1 -163836309.6488673282488937103049121147790853 1.1382640096895507225558576101178420 0.0112611221790743774967836927172584 1.0113250086907968370746153983723317 GT 1 -562863563823775387947455533421293.2778960416296113799039618973085300 0.7931475074969423492173340541347277 0.0766232648109131405277141936466056 1.0797179639536424268274450165861953 GT 1 -15714273611683788996737565398445.0066124862553883824988765637128344 1.6753113494876947601400479903886849 0.0828460290163861145203165227154897 1.0864799135319584887001514885861911 GT 1 -6196717305248781044780.6882763449947974765592971699683376 0.1826281237852289781390568962537134 0.0258408756297642799000223320731210 1.0261806166399977542529721287334050 GT 1 -179507081804.4558068798320783215997611842044997 2.9947199866215362343064115389452172 0.0007250972512248596400828975457611 1.0007253602613830403525159986705467 GT 1 -964973979417654365216.0370534646183826447952082497602559 2.1548698363913672443467730024411511 0.0534624839814344564646078757731099 1.0549446725429212230160918364258323 GT 1 -63.8001614918219558221899368241940883 2.5351442385512877145202846190482949 0.0779577306174036101306772160521909 1.0844580257455940819723145953066944 GT 2 -251861582935209.8497209289240220269259215836248095 0.4823063403464425580279512027462998 0.0615654857637245527409889916794643 1.0635422024425555599431978663274746 GT 1 -277.8472733196657218073858995270692890 0.5749866464115644148073872514295597 0.0456231757101725130163468757117290 1.0466966915089557735420284739573152 GT 1 -4006633614820427254700053549627.9174968246152320505655256556518758 1.2710441369949482121732340953242645 0.0319146948801533973127187913972691 1.0324350704645421723636032994807929 GT 1 -195.1332211032141159905935166994720330 0.3871703249912774226229340480878023 0.0072637073980711702452817355429161 1.0072902165685646809136056797494890 GT 1 -994203.5267070185601502559655309238373029 0.4825898652828263109889165056494964 0.0239441397496523090489175760123521 1.0242354603437784560637037781372007 GT 1 -166127437260758627201076402679827.7462132345895901684093248317570772 1.3630547008572254868725334346312869 0.0001273894207172488358687317918231 1.0001273975354386645973376773149262 GT 1 -360022260453034.4128255139639195708363562041436911 0.0536552809007088609973882423108922 0.0936491567423620779827070712989180 1.0983288036851186851413834683763578 GT 1 -6580976964313286506376300714506.1410368665018203223633732333725317 0.8235771972352212338225313419179304 0.0496858065353030909880843779957225 1.0509626191038101629380426219389458 GT 1 -140257953579360871476272304.5926003669856043658987353030943999 0.0537981518686595837563994568216828 0.0492983710333771654962973451354583 1.0505550101794461155552076564042514 GT 1 -1316879363171397001125609137617176.6824712231820448380205119134446904 0.0100448233889005361482523177466820 0.0066326878952527438573313939838964 1.0066547819189767734930322049576038 GT 1 -1534905640362957486586813.5512158677863286139433377078957424 1.0061733276547235674967554745937846 0.0161654363618560147611182248982715 1.0162975224487084555231525151580774 GT 1 -5.1232235250378601229292214473989404 0.4547762223967709536256653447719306 0.0756685084930779918318698544029151 1.0786845146362498157148470826997468 GT 1 -4901876236406618960324369729294850.7898948510872357515485426123667499 0.0740100550618567676523079416774676 0.0245171075792057615668524597954558 1.0248226563143759587514608115088516 GT 1 -11323658560473148033602704170957876503253.1091639261147076597827683167191006 0.4268110177690743581614592067449418 0.0996207225541066913344912228870608 1.1049391850457098012941565455082281 GT 1 -81486316090426224798195358959858887.3338048111736195573427160852373358 1.4604324088040091623714996365629034 0.0308136857979379519139591134846919 1.0312984108554550918342352017823898 GT 1 -39389901725210942307327686.2002507034911905056015259055474447 0.9133797121679878140090835172252429 0.0249692706706926995518078111274417 1.0252862912201203044793753542578351 GT 1 -8034986749644330.5122770549887109843939742295353330 1.3918989265332982133703366214638118 0.0583975980870822215247664443273554 1.0601721721547465110398899990044551 GT 1 -92266873064282273.7060626716167312577560384749834686 0.9450706148094528269903696888493446 0.0943284079636156768745974554063197 1.0990785198473903602106689718306947 GT 1 -14328166834.9956304727934721405882672357830941 1.1317522083636548452949386435917774 0.0489288103319987113308008592391800 1.0501663615433849941168962573707606 GT 1 -16033.9756279314059073298525082025972587 0.2852586591624336636942304583745907 0.0084904996053011200838506978589659 1.0085267492278501380741307341148552 GT 1 -35261803596939161951617971508.1180699219497537421930793336360053 0.4862299971312956975181172231380780 0.0271694916607149082682706726883917 1.0275454068934834036680701451603641 GT 1 -1352380794930728988541295336893088017511586.9467380610296553403744011057648823 2.0220826687009195739765785993698825 0.0337742008713774069960242259859805 1.0343577255741168817087925971351672 GT 1 -8153964113734388274167535248943318772508.5196339813876869909167536544349801 0.5145917009746413910544894189762249 0.0710082140182348531762161437683317 1.0736553819923548950465239669977585 GT 1 -1017390253064.0087281988647689240430887333344143 1.1355398168551321041862578496614031 0.0966940216930612628744421230100912 1.1016939365520607671661626382325119 GT 1 -378475306370054222.2884082026182189098474944105476476 0.4854815994596222380093263569600888 0.0710503339084331853587994715642301 1.0737007223771754662367686346477390 GT 1 -483675536280309937088.6018062712904491860892985329485814 0.2287665011371904956607024164658544 0.0699911042881986140257383397874356 1.0725611275990755775035764959401206 GT 1 -1668221605310510104563477672172545.3652603504996731871974381640919719 0.2567486692195998296613459511175095 0.0638450466881057788979090423052444 1.0659742677960274894540536994693043 GT 1 -3852167748022670242313126280328435655453.9839619188592298947130452693580735 0.9101028474588535613970804139865368 0.0888177433128652407618802484437790 1.0930123395067815792645550547046849 GT 1 -2155467844709.4656443043154524697713384769664378 1.5087299376569214395289257399475069 0.0288631374961734893884405415342816 1.0292878705679037889939714952360814 GT 1 -1026638488188578.6841756231818497970187258690090846 0.8713586468261278400214494568800101 0.0470651828410443339796204261359305 1.0482087751918577898552342798182633 GT 1 -3010277520.2103618251491799856822577219286024 3.5259444334556524435582731572824618 0.0339149307917006400361532600348232 1.0345033852843406037146258420784884 LT 1 -4685237333253107032672445690698705.3972049794319022158063015614141426 2.0233755254600498964996364729509435 0.0509679792771088346752793172216770 1.0523127393999341168170245821999401 GT 1 -32968985787386002909054574520847.8439139884454467022198359732651877 0.1181010030154019896216573848692115 0.0699793534712446686035016353531685 1.0725484925127102857579931479473523 GT 1 -9858963083436502059110919.8502906870330421334208920783472469 0.3742744835585727135394487820067923 0.0641237988933104836359221770904628 1.0662720750270737815129511316720627 GT 1 -55011430022041957270920.4979857697622881323559867504962133 2.6365848735831519696532954542754275 0.0558705574272976912182905404786142 1.0574920008675239869350903238968522 GT 1 -19523260485822824012342012792378143562.7525095533882252061738441275740808 0.7528956252180512546994497356185930 0.0758510128620559158502672549866023 1.0788819788471834778484254485578093 GT 1 -226850986686062.9243800163181802417555509126032770 0.7588103759003212544628064235952885 0.0297040698032379654010804251289073 1.0301541713358911392899136639436829 GT 1 -335979562.0496903453460497810717056059407235 0.0291968529788136823215701845896966 0.0322677806833288135046562540691425 1.0327998629128321778027179283675837 GT 1 -87695976629396118.1555683332834236784814390598983242 0.6910208867290839121188574587215774 0.0691180623462703613580231529917595 1.0716228221484514522204057437289449 GT 1 -424764397238324579684836272673487286.7279797389427470614988433420157661 0.7132336006074993190147352091534713 0.0561286772185317490834333789079171 1.0577654327406237107277782068401760 GT 1 -634846793499997.8714176623412077140350053454467225 0.2917161108058062391480011406783429 0.0242261360620376674661914546694361 1.0245244161997660965633720136405875 GT 1 -970667554352498765101655855.9420678041432335628496103257710629 0.1570045045826158171341080046835254 0.0246892416218368216293418909466016 1.0249991322250980418213905832940424 GT 1 -16833064876273289514647901459488002044078.2310662172898369295070739112280123 1.3774849396811927746841306646775270 0.0509452364932477648440265277172969 1.0522887754968595916139937485915945 GT 1 -289199676980983935702535.0034361109618315668678804486578201 1.2843887493092371577822836573795647 0.0495721973655358468113534002995782 1.0508430771879313185751347569746594 GT 1 -6990001282018706768039423.7254872934014436504615822740336232 1.4943801097893961543802369832230578 0.0428476685478807382721247708518766 1.0437927241753181743737476967841245 GT 1 -6511920.9119770145746533426027657443514499 0.1756960012144332899055567572526440 0.0464358947634125132616958992189873 1.0475486247001966807584839603485663 GT 1 -7248650401157762854721.1381882794849828229162819552153085 0.1118838728777708262525489097376256 0.0288283797846685881764013254680603 1.0292520804636872312546011024863825 GT 1 -1660277644583576454464742810607882.2149695408255382199181133830734829 0.0574206439601087286094201037903754 0.0466514204868762430183392532121200 1.0477746714679434140235196130722333 GT 1 -137824327747262756257638285110070036998623.8442695014428835640024600334089803 0.7949265538381220437921899094333356 0.0918208631108130310232695236136384 1.0963136325165352617615297501452327 GT 1 -2.4993346986002139538313603683931364 0.1671487791373913186872941624947525 0.0808861690646191592955366506423297 1.0843453003846758663252001729954720 GT 1 -35128343342382968144.8702736115251367027241431035390578 0.1391753763018590736463006751250209 0.0087162264041061857475579526370522 1.0087544348900330840290175317700526 GT 1 -9529632161417822427942526856227054174560539.7586051380615151286265744205722555 0.0818464355753852318258008631414955 0.0011157469652545945142936459818761 1.0011163698742821764692209296829034 GT 1 -3.1730676461889259434618878468518078 0.6621284898259061746111932642894234 0.0267850203617722362063646913339587 1.0271502760434389003950062586816110 GT 1 -467840022934.0867503792028186172715343410861980 2.1081390647396774247138532185354002 0.0019207718807959230105715984904538 1.0019226189286556467074560170368603 GT 1 -277.4426112236040299631240284448522215 1.0433514779795041459610275186428872 0.0489072959372960433645010494002749 1.0501437405749453195440954406202397 GT 1 -3020913905986312516637.8706703577472177319472781219102081 0.2612422429758172745239123731438995 0.0457757107235212122281421028675720 1.0468565311030849382541555699882785 GT 1 -2999740911.0590704251894877796904203196208760 0.6927862404558813342311000415521444 0.0034116068357246753264235715081089 1.0034174396362520083906048354771637 GT 1 -114531244846124315375648238139412655368041.6794910885331612792728604392684839 0.9596179306749116060544618198804119 0.0956439865496705711232075141602084 1.1005321759283596988323375575582766 GT 1 -18840184183.8290299287340643675309646027069348 2.9888083232695077393077389895545213 0.0069507418341539412911596216986567 1.0069750107636000491302184182090742 GT 1 -280048538255783.0035796766871094201460162514971094 0.6520486633472832400217945467810338 0.0830181592388650449176905422237897 1.0866676097994671995461615955942314 GT 1 -74678611729493516261744286376007592.4933206220540229663153061754157028 1.0731679174591884276569371272325783 0.0060718564943921374075138307922291 1.0060903651744350254829527469762634 GT 1 -73778593126797.1239468523517014934144200270450679 0.5870634589553264850407300973759177 0.0165537369811590181000296924302528 1.0166922811624457274374646049024947 GT 1 -1.5402393322279028905976603644199439 0.2430210522270710119714820413931802 0.0259175036139550288058199400944259 1.0262592803780206770623852252594913 GT 1 -37835440167912975184.5972473692976320418092431184789230 0.6376761849913227805280231288060522 0.0696849111205189236950089792837934 1.0722319449696187878075458794277219 GT 1 -422718913621493354700.3077035436744091872096474419411356 0.8491585477412837987636720691195995 0.0131598941887625198576341702283813 1.0132472528633525579331109536222615 GT 1 -12097321373996758675020153804993933263439162.2706203070785798641151815822051793 1.7353817789900704147565555535940836 0.0615881008252726040456916688971652 1.0635663014432916350083326655707911 GT 1 -7248058557864759.1783579724568260147207692912571323 0.1763647828288008251714546927991369 0.0456886205444028368124059335510382 1.0467652672293144451150921842515351 GT 1 -1110382159536443507147125197.0978241176044090833032208215939268 0.0476352401595509881436082748565869 0.0487621733099009835647814990871037 1.0499911670601637922726916831801309 GT 1 -78936946826675570860183288.6389291403943487206235596533843647 1.7353406290009941249719288599410627 0.0368820644604405623130116752112562 1.0375794078708710640410546984485460 GT 1 -14172434692819897845348.4751786510679464211547861085298024 0.1286147262458397318549810394607600 0.0201026388207243235142130559759153 1.0203074462929894664946567422721335 GT 1 -79956918077226935035475901434667932266890.2742126827259548663198545622879994 3.9735022124398987972146504345531796 0.0220553930134039951761096238848001 1.0223022496243828012522916886043052 LT 1 -4999490094774925471431138584027569771115.3437055112617523705263637144702222 1.9864915847962017263237816214004017 0.0961287139912225614566288030965178 1.1010683114609975228106317884795368 GT 1 -1770129190880824452033.3393525983667427085514112115254108 0.1378722059945009816201852188632695 0.0335488674602526225917533061601270 1.0341245428745631664834407339120739 GT 1 -543766173097575623202528939046171117758763.7386622940770519154168508491793706 0.3977340486935894150588192938828915 0.0556774281349277419064575901615422 1.0572874637211557203848172704615860 GT 1 -1145534369029308965926840.2299692072198594183959917540867635 4.4988628453092802382769108793508551 0.0108835393042309335571036286593581 1.0109431982802199019997194078223467 GT 1 -2475985317227094194897096.3412729616848994362677242985927934 0.0488540663993352905127011227678345 0.0873822796036941286615977496677685 1.0914381931929052961299178058493292 GT 1 -1454304680209537862478214716.7972393339697811283622540785091878 2.7642195077632294025389410035963077 0.0149185694361772399148640336301947 1.0150309706039054996444910212563436 GT 1 -128.7549307375623562308857456886826892 0.1228299042673314260060815144201573 0.0794352062909074084077646961219176 1.0827678910968425626321666088052689 GT 1 -129628484710384625432614478196085.2914514517702324304327509543785525 0.3198798781712841549943103298113612 0.0854830745676990133035608777176913 1.0893593034686839082866049504968866 GT 1 -112140.3119521098323660090283545878441894 0.3542388289683650439247764642146208 0.0035089918860981433291704394981202 1.0035151628382363498693400474562329 GT 1 -1473454006728.9652724767518261350801057381416431 0.0289071065658984425984425580638467 0.0811017897401738910946254000085994 1.0845799241757187688812791812973526 GT 1 -450251853.2746930833645677833026366357416951 1.6876456129539996333612420464120449 0.0948249278613340362052327280209847 1.0996269041142466178544297611241397 GT 1 -526178553096459461293554686320.6254816775378448867428316400863701 0.1046209753847376546898559644613357 0.0217223844865283311558243516178405 1.0219617887848502038309919712456075 GT 1 -19836327270034841.4806695316330359722663805825541769 0.5237216330974038415611029990852481 0.0224865267417774617411105837769798 1.0227432038332353021881089534847704 GT 1 -382536617611672643571981.7244027292282983699448075399410644 2.1575703440211420354366214455519755 0.0214575984892524910381012469333768 1.0216911599108727358895871609134558 GT 1 -6489280900803552692822111487150700.9034155077400772008769329725998699 0.7830299629238183062285370857483327 0.0093389537952334905062111697774530 1.0093828352424527677197612114192960 GT 1 -317918262531230846726.7743405716828212467990269286807394 0.4020212134383274954566608935329120 0.0033192185027122243262541812963594 1.0033247393283828536687476189382071 GT 1 -142462132.8288034864195671422166191134449809 0.7386095842855448708301759972796509 0.0719941018299293063793937347536671 1.0747171904294202950747726746969218 GT 1 -5488.1921851068103320743262661987386185 0.0997750744733702463017143415459446 0.0996359234224598369413186272653098 1.1049560679272370806727243497652216 GT 1 -353738691512493759.2689524478581359207133917357079712 0.2386605880007782649300098329181022 0.0574565675354125020857102514225771 1.0591732785311789834921883372803778 GT 1 -434303706236116269.4847220321522540178050350875965913 0.6767204438232649863517181914538953 0.0133131250375020208400151940535026 1.0134025391609711909437556204253040 GT 1 -2.7478002986284905092010069425971510 0.0923000274317988554964354627506133 0.0614240458079387174730178917432032 1.0633914947523933688391252141016645 GT 1 -274164991940794163663565.1536030943681279541278324018791858 0.8359206741347806216925248764938985 0.0385386301145251489925522045959021 1.0393008916866001496087498122751311 GT 1 -4580299243.0311676478876347914127557304323264 3.4899187139213044672321811796317670 0.0878556981222178868053832669900556 1.0919570756809961665883595876497587 LT 1 -726046748978132238437164179532840407.1200584864365095362142918753572866 0.2069058252123291421574257736750978 0.0093037300814717507555351456513040 1.0093472801071131522851024784272585 GT 1 -737701738612137819800047622582460149.6488071755438379907154957443965190 0.4000859679564372594179108474893016 0.0635296213998694071844541313636249 1.0656373874966486479969120371926028 GT 1 -26366877590625208871974218269883562207254614.1772588333536603737774229365883212 1.9362294098174515287129797665125378 0.0789743442560013990923996081833149 1.0822673867152483298566010803952023 GT 1 -252330236947033592561592504113049357288.1076873513509357122239742305441524 1.0409129882593975832656162181636404 0.0174209403847809130928301671895656 1.0175744706743309361069712622135038 GT 1 -17344735655.4531410158259147137205126047254863 0.3234186741876066953940081760275775 0.0824320028103193862743840758494923 1.0860285904211257522870047266436147 GT 1 -1895439173255.6403203319701751578410445774881444 1.0221597317257379316274020341472858 0.0523712303121074185337518367240357 1.0537924465759688962746467199736600 GT 1 -63971542116637168114702211640.6308997965191752134650236121545434 0.4101741623242038150113186023529544 0.0236733820555799854326148552965525 1.0239580990184930118011538902173441 GT 1 -215444505079416885.4181224710101193116897918975127248 0.3698580729960141065162654271892885 0.0079645356897201699667745188770116 1.0079964220235093740839381216560779 GT 1 -2356756220030830329917093218696617.4965298877596548019474720559127077 4.9273393270126536931667997787467638 0.0928551328710183773528872102500518 1.0974531204204321106324596139154154 LT 1 -20433.9290832225037437438516739009160696 0.7563257367275975952829121811730014 0.0760753167447388016459884107787134 1.0791247222912114161071389503644875 GT 1 -316.0712609908279220575777521527522647 0.6063550843791490301301678068141685 0.0019148003041389134036468288306326 1.0019166358777868726268355423856367 GT 1 -2592865323899.6345567897305593408050782787290515 0.1210560842596250839552026286077859 0.0848027615969767484482833577168924 1.0886156758403703035259696032926077 GT 1 -11012254755417.0010117640558832042047727447363531 0.1733774883305110802696274538497548 0.0668788669704084862777284089245896 1.0692202548048735977063160395874545 GT 1 -3080337336.3850748281625609360741665553340422 0.4764182928929383018077912941531491 0.0264090740581231024331665113106584 1.0267640574612528422709245146348231 GT 1 -107931365621828747183098498320.8883044603392661494597684822214765 0.1932058551857413173915512494765228 0.0088649207725966628222018300396328 1.0089044479597308039292893418487582 GT 1 -142934407588344.0523885362606937154937907035218749 0.0610959431889592390869592828838135 0.0286188060241601969573078241680176 1.0290363089698153881779776427783776 GT 1 -97414398273850041506439154642378660.7694831316124469899786890741114505 1.1442591736869422444027972958254228 0.0326615355684325945625962535312421 1.0332068298457150826596844887497851 GT 1 -323.4405912300922646801244689002885476 3.8301681591967938689569043397043425 0.0016319409364834246830140627552754 1.0016332740026143786792183284471345 GT 1 -3712.1417338379181379473194626927293970 0.4186967728160525799348227498802314 0.0898457258180643244823583195694022 1.0941411617721172214025158798348532 GT 1 -9187341217630027611714.3597730021632246452387206859012275 1.0470368299794803367131512790459710 0.0914128900271750928469254148653722 1.0958645124481717583641322572877438 GT 1 -10706948603.8127839400415881684405742493151714 1.9683541190580335254581065220032467 0.0987620335155409935311225546284531 1.1039859425004568655180948509455366 GT 1 -6368680683232431951285378552575428972176.7623489460350460944335499633169229 0.0013349979241749407709763599567628 0.0668756761111679741891011354756897 1.0692168352555011544915162082483851 GT 1 -8444871848284.7424172630871271266387806004823554 0.4714304613413195909040798892784626 0.0246257961373848751630593821481045 1.0249340827827714470950372978246473 GT 1 -5950393.0364402054237675500868643114340678 0.5127424864498364079260497680151181 0.0810482390256792938859733114483829 1.0845216487828978935612250208003634 GT 1 -16128628365649895528001080606986.2978359950719725604815212535543997 0.1090808672978989552887544852564224 0.0737767929418632373045728214833875 1.0766400290432362717852987393225321 GT 1 -37.1235757928147198807603118802580127 0.4557794311420162854075274189794580 0.0762090173880418612596153563544063 1.0792694422240520117617376616370886 GT 1 -42848852.8722469036206168386772326805788656 1.7266930007076474028719122280979774 0.0446414203822866343606827131252790 1.0456685329354042995279029833635994 GT 1 -314657624262286811.3804414347576391364506533315557773 0.7418600959342951601245280894157118 0.0636719697860184574662612515345667 1.0657894042708548118009190683528767 GT 1 -1076449871.1432231596992051741223239337676014 0.0239812887944374629888529194665672 0.0125660412660885201507388580789038 1.0126456616747239184064689484830614 GT 1 -1900131685758944708194580605894729007.3183464042022022822434864115859241 2.5380945481193405502611160077048904 0.0681090854349113088763790464950107 1.0705395156048423201485232745628308 GT 1 -5137160296645206925579522272195572306074.1018262607945469103726983127701927 2.9935627088014013768976515018557681 0.0208513130363444235025782422260989 1.0210717716163041829694328922000209 GT 1 -2700.0082444019484495444638730729036782 0.2532823558776653937634953533784216 0.0025415891174984277752471455924932 1.0025448244381860605629863462872821 GT 1 -7768163723452490021231033076782811066459.6346886119913599389718608372289508 0.4448539656445246570947425589979199 0.0627641235627656922487920141120748 1.0648202926317137455320971770559283 GT 1 -308658629858511934975895671531668026.6252276118109375516261198887656255 0.3097726146591884448783769887245326 0.0796685655310352317356209553986928 1.0830214189576810164426184852174662 GT 1 -15589915461951963248928229010011780.6087661746695591472625836971201836 0.3727372435980758463577647349366729 0.0998925594747463274446310645424494 1.1052411444214628722298984551750962 GT 1 -85484862541148551261.3828702341070332116799522048901433 0.7723568000656371460384164119804480 0.0489015181264003458791674775290909 1.0501376656746530323850759223758619 GT 1 -1238205939260341613652.5166348507033772142328809813378749 0.3414210420422903422442595265448880 0.0922169700699816675585628492900141 1.0967498827564227094514016204490373 GT 1 -161570557.3477270763975563448456579884227781 0.1913964779222584916678452876474561 0.0902034944259494882484068415634584 1.0945343247262732696158347477874502 GT 1 -7521171724.8688865066942778452367636969310148 0.0997093517421246396639981383579801 0.0774144206818840518930540588749431 1.0805751384616971150844236333539446 GT 1 -1129556036988125393734419128197005059.1149406993257891058230782132776996 0.1588750793149342712897367313427072 0.0432285614424493599834407410984658 1.0441907472372243370682854508726913 GT 1 -3.2350233258145682137110843554892450 1.2907459146612111998049103147302114 0.0415893833948677838435464267948909 1.0424789742562502284269332350818378 GT 1 -15811096894587175348.4340121367786896510603550299649191 1.2523358975035094548085383513125461 0.0100558669509573707291936858050120 1.0101067687093984044056073807030798 GT 1 -7445680456768536552859133.7197895075809241586008875105424160 1.1339859191104658040949006558439022 0.0790881755410031788467359435441954 1.0823909862254055908626609708415923 GT 1 -1084185223905254417562.2039120951819638682110480833887485 0.2006138854693964649911481870345590 0.0820506384339543945141378352325377 1.0856130515758694918646382480227677 GT 1 -9899230236425315122775995105751484360205555.7451392662618135721651523152730776 0.2466984274070109080307796202605505 0.0731125246059428330708221854158023 1.0759231065510589680886855752276594 GT 1 -1070159743142049503547264.6430992366383958612082998345708785 0.4678081198461815501109386490672159 0.0053270823983724820810057502673558 1.0053413218943039705114158071556541 GT 1 -1012827221658821942507248101768121550508572.9103351442466555834019434486291027 0.6586333512387214953295166284884610 0.0422969737097725819114437784538031 1.0432175425031736882214839701869609 GT 1 -325219686998914198258506822797629750.4184437379140386064387006174992775 1.4792023916254173510307870619154379 0.0964933547160014178829276122129356 1.1014718139309711704658463355831413 GT 1 -275308647011072422084047270731191.8480509833016979631423590515122709 1.3040286548813533180043014915135851 0.0079350709630379530324062937262611 1.0079667211809681607497847691635566 GT 1 -55280152159644147383313270413772645462.6603715601954262941646660107547506 0.8311838154677148048154309230005116 0.0828924969099474430401287001202734 1.0865305801290909790549068434763777 GT 1 -19400777888653259919.9878542142831278825446080630437407 1.0060373525940544520886970598952477 0.0189151881361101733420042480053162 1.0190963686543708074368182658023570 GT 1 -34160329.7983447361505447166191233945448816 0.7571613873705336840002893200323337 0.0784001523785617323983300611465692 1.0816441543818452522038674427749459 GT 1 -860.2264993418742627163977285807011328 0.0244204591519663570827692028927748 0.0443639654110588292957843086064522 1.0453781553790106586244239312101383 GT 1 -232309580021089259220940979814520189934510.6807238155584961874639636011712985 0.5576861961833083533710000487912361 0.0620521472506448300809737452915594 1.0640609256051638367765354078099475 GT 1 -4621261.8989751646976855035334053566133028 2.5795913436171115361538641095875005 0.0441717706626943877041835025967727 1.0451770584998910258234132078419962 GT 1 -1254806772.3231328923504011422326111127645811 2.1323886991899434584214653580606856 0.0612891723187137650751889000207439 1.0632478049435060763842046250671520 GT 1 -321.6344543733615457611142941313792984 1.8297216087821479708324446752122219 0.0006184308799054216698960047304756 1.0006186221871596405002489614374305 GT 1 -56944778964705610104925116785413963584.3079582838603641657393101213431422 1.1469290638707291801980964952788850 0.0245755262805064286118523351904709 1.0248825450639209506214818814929168 GT 1 -982766465675954234088787940043977.9723242348505119911465504461302290 0.3103756764437047095812166037614259 0.0259037470208749615882128621013862 1.0262451578617117618184451222640131 GT 1 -2416974136858580362192451.2442990834291688838126425948225527 5.2315417464377999109976812100448562 0.0732199609296816258873961534871628 1.0760390241285325505107538470237737 LT 1 -1229284827471292083929046140.3789668653519363675999335384189020 0.0543886512180877183208551299421972 0.0169096422030815134513436075306017 1.0170542426149211301841733258805288 GT 1 -678037444326488380167.4668365731695759434351044394972080 3.3500748711953140725290969563258913 0.0706888575647653690565140930158507 1.0733116743527339873705965381882814 LT 1 -503007818976942010550116866061432104000929.2383071136638136684821841820132615 0.3759967248308127839257827453160723 0.0166879069459031336242728745113738 1.0168287188336400158417460856347971 GT 1 -8278406992.1182698338850002294572949624131012 0.3739348796130632739048982842356139 0.0171563317770094359486761979093284 1.0173052068608802121667802984870229 GT 1 -1072030392497157715.8894125374124669536478464791938076 0.4926609346328405008855367806301194 0.0799765495695885645692980401313918 1.0833561196656320488221573687301119 GT 1 -314461459877.3967452776337052943342963490510046 0.1351078960694897309805869566898947 0.0060877010599461825716709888774437 1.0061063066606992720969358320689049 GT 1 -1540221687629271190908535593583585649534953.7099787097574312133324199395648221 0.6296608782207037205483227963953920 0.0035894359067055820416615649853611 1.0035958933888796867218327496732946 GT 1 -1507556842162242346628486582983342.8101468827618047139970778560953026 5.5009760561788912275847993332049767 0.0587930230258338092978015445408737 1.0605922093066743347656738627921371 LT 1 -28839029578678102340817521632041.4909557189438666114649762561222960 1.1892871030642032468718188522580256 0.0003505445429372155662304403802467 1.0003506059980377601349330984757940 GT 1 -262.2581576373980433378728695602525588 0.3889132853700463185002450470400259 0.0354842098584190530924491726694942 1.0361290754467943413051242047434431 GT 1 -645700154225.2883922999529774681264449726187334 0.7188344969430971831357653018466136 0.0567824181160439000364642705485632 1.0584582892584573794393769418929225 GT 1 -50.2503394568176014632916132465373761 1.8937951297153280888974514681286826 0.0304313179277549862218878439028532 1.0309039640317198355933237922857435 GT 1 -14960903498764125036775703273162456.4192217831783099258239298383920675 0.1160960486732269074354323043090790 0.0672858005997512773907378624198622 1.0696564493915255463446537740665921 GT 1 -15497469694.1418837996048078783109666176308989 0.7103229415851100621797244100401838 0.0053602950381644548941496713991620 1.0053747129655899510239774929628611 GT 1 -423716525744821598382413107.2547293252131118077425911629196883 0.0860010231628571996814278338610962 0.0757855821893100017342315503785272 1.0788111803531232008124149238573632 GT 1 -537882376671615661062116631864157178465912.7004046556572460217830373857684913 1.6481620326559225014131411305605386 0.0956918348269297576132571196848790 1.1005850860018115510279700621817324 GT 1 -2.1250481418836469668578529346698921 1.2818728095373454149219081677594098 0.0357653941492018874301848268007261 1.0364206469154085658939910688363581 GT 1 -1306901826631817063224904307057.5085679366378581123978484576868250 0.4432055142495953453841795052019836 0.0945830591756215514393960240574961 1.0993597332823645243097939831930736 GT 1 -370820460024.3052327159401871983153946092455084 0.2198723070091547758435685316560409 0.0982884950953717049745113665498837 1.1034606494308810645479445276833471 GT 1 -33038460565659567313439456070766.5045606928402150060967748450132212 2.2532468703072633439149299282105390 0.0068976010965244354305384605668796 1.0069214995048267905830422504249250 GT 1 -1963462704321555602559405596834.6721769568217392040180952146414572 0.0049209804371673568284826884319246 0.0430080727688342955449656190103367 1.0439603230598864342388248206442320 GT 1 -3340932230677751874639767634.5789095963196851400214302457030301 0.7048577376681774473252695367426875 0.0009602083690819344682117550684292 1.0009606696644547210263367724996581 GT 1 -1308348596.1491407434712027600396016213036135 1.9032005214240618665464105159187937 0.0905338658571997156744661187811622 1.0948975174040861054084309860764747 GT 1 -17551477582487409840963.0816031251628169794469265286482906 0.6494410475990120262611722103455187 0.0782311968201893006210525887277882 1.0814608426402984778814226462784056 GT 1 -3153822563122122807531590846785910.4192311987197644571681894369490307 1.6361974577393420863103449481534189 0.0133977517182840976152321659811009 1.0134883113672202451974044936992854 GT 1 -59477362798500.5086111592282323569531473145380394 0.1839660293728862756715608088611094 0.0632333852951653359437782352612114 1.0653211049245744015362264772734351 GT 1 -722833970.6772082477876775148872242030829551 0.5192849009423067465652963042071201 0.0668954873505776312457201721061585 1.0692380665632834840582727906960547 GT 1 -4955152817.5591734775951570367990274847617558 0.2237716444138118691113473791793058 0.0076476893656880004077929233042944 1.0076770828996492549727404597782129 GT 1 -5236265137511871585.5620175429521483845925304344666415 0.7507207661197127889149745018828727 0.0085913940512765663501281934418375 1.0086285128314399706501508807536433 GT 1 -51874313588623568831027.4084097072625696890426539034400402 0.8729387827783822606081738820834329 0.0058728541610984674433127465945047 1.0058901671869595976671965947440943 GT 1 -650792907958260783217.7411029220719465328496311871943623 3.4722866581903847468671917124501116 0.0712906301444203809936897442553178 1.0739594310343375528073138815394459 LT 1 -75198061962499682.2735297774143035063051070815928949 0.9743044764635482973609380001039569 0.0056388787146811160141380180541228 1.0056548372115551860232424895498505 GT 1 -10324528532015992157139.0457892455427103959656649419257804 1.0083562915993324701081122713227336 0.0372099035257996769256804810173034 1.0379198592974980103734196918150358 GT 1 -30088231211034520037249066239067227.4004064075834828065243201852521975 1.0123856221181649557783243104149920 0.0900820768771454301734337382516590 1.0944008779094876389307895982952864 GT 1 -535867276980691708507540.9884196006024529657871833663715639 1.1603522099922723468310760733935150 0.0614317023761053620763625848097452 1.0633996524293106116914803059798735 GT 1 -88833459835297427545.2047240201625747476925451608237722 0.4314596799635296016322070396722007 0.0938995985623888959380999748658787 1.0986051607152498304643611701257486 GT 1 -104562480894818995855508363872629.9529499204183476260851955013890792 1.0412749580888491473275277144101700 0.0762110858100444925780437240058390 1.0792716812850054379575085142412683 GT 1 -15838189.2108356175748817702525052749116131 0.5209731860386241712442643067591522 0.0077492826638354781391243431348569 1.0077794643802822982590892241800735 GT 1 -439735027829373011922900335449777.0356082972793162005175114001514246 2.8838454463374481157308051627513878 0.0238793245572276403833387990291303 1.0241690573405014269611636383606500 GT 1 -2122158620422778338725333924910172304765154.7320252871996067551057226404979933 0.1008958144218071032950721292166933 0.0455164068346551419361126531888294 1.0465848248950825024012372300459592 GT 1 -48202432718444.1554462860182366356901089788352998 1.1230356808665086238106205116941119 0.0999825584507068244168215111773708 1.1053411363463917305438634494006920 GT 1 -6146915548844060.7111855638399262463256152482532954 0.0515132877951007040458922738830343 0.0448130611761602340847164712861496 1.0458482101979228897608166846519992 GT 1 -14838750645398283145410.6990649607591730894282437622489581 0.0896394646714501475407300489461151 0.0661458061002186951817545735075919 1.0684349622546311397104581282424182 GT 1 -5650750205.4346619935558345205236283875491896 0.5077739996007492754873939720820285 0.0272920871686376138625396748402870 1.0276714342253016085593338335670078 GT 1 -14499050834414513815902341159324.9214163607699082995241335705069201 0.1061898834473798741159575183924659 0.0174621718029173092352689852720871 1.0176164339981394736484671394384167 GT 1 -6567604053582.0835855931740017148476094129982504 0.0689153105481620702355806281522191 0.0926055260738129747162583537173553 1.0971780017794279924502615637220164 GT 1 -1320116747981315.6607302221796963377927396197977028 0.2208055888857651997027981493928728 0.0463142655309550292393074960494076 1.0474210805996910647268522419819155 GT 1 -176405060534091257.7193253223708845494629463929543111 0.8744403020640157756548484041939941 0.0545344553443776427059852342946382 1.0560778329483455444478567728240024 GT 1 -840742881970854262773244115250080312192072.0858555607489665750271177249967272 0.6687461666939555427536449474940432 0.0992843112916529735010121503821937 1.1045656219935802412292702034627370 GT 1 -90427.3154645601097146178008797540493535 0.1994102512777051236976008139749273 0.0460567198965304776291342356364607 1.0471510641195244046417963864858041 GT 1 -28577602530983533668483148769.1989401238602017156522996621902091 1.8789581938067373587003689719016217 0.0467081376927015969477561478834368 1.0478341658588081447414876264932962 GT 1 -1071101591102555172648.7863995769326617098036447845020770 0.1026546203298916925488861653083090 0.0180924514118200608274876408720400 1.0182581211002377730246498888078106 GT 1 -178.9096098177793120076951624040902303 0.5837807026144945972569086561445130 0.0163417343774925813906679838122607 1.0164767332834179840070796132924957 GT 1 -60995284934302474067383711.6202062453036948424319251439032873 0.3771411709773950301631757169546259 0.0132851443937873614233147615024121 1.0133741813833498337185629683942246 GT 1 -704929282105909449184721206791598257.3557184521837916388985115284841225 0.8466936836705689487941946556085441 0.0297614295140558107891469613719799 1.0302132887706127284884929849749718 GT 1 -364612.0786656864384794234670065823498441 0.4892502391501112684543176555985208 0.0318322375374664465272885977017207 1.0323498983926499841888060854325633 GT 1 -11198141597107701854987048901991.8409886826000172086105070323609545 0.0332914676863265897526824811451252 0.0371835370593114521857994701577433 1.0378924741950107357301964651281493 GT 1 -1190769121037663.7160792531731339600677194697669775 0.4793020625698260370893414231259371 0.0459989965942585957263727954106674 1.0470905557464147609321417598980541 GT 1 -1748640176108101957794126741.5527253888245903323826351650718936 0.2489121071773844394588757721039801 0.0967076592703126854702110275169498 1.1017090340721990056593649238826574 GT 1 -916402731035102.1973822375593220888637927375011687 0.1135647850370613567607018576038871 0.0041306336395776167246263011688079 1.0041391882722055099537245667606156 GT 1 -424180560229658647.0171885653878272594820900774446506 0.8482908540078920099375985041310026 0.0014868856425245943322764603966405 1.0014879921539548870625637722313839 GT 1 -211022506790930.3437318450915198855119054509417477 0.4357863376022264559055190795421915 0.0532872874055229041326507979851845 1.0547595976132961222413969403898658 GT 1 -151530196198522146330242226825.5182384528335167891575499004300991 0.2378726037256688077594351944635723 0.0741658277449580742091806872802231 1.0770601400108143296452958236434082 GT 1 -330210534413811.3746871521538805848298135362564769 0.2006627835678994170838227279190764 0.0360918896552611529884874462678881 1.0367593101340981426923016474859322 GT 1 -778973435738462099584214374613.7174321976462131166330267189377460 1.4024019448044411168044469588458362 0.0023004396436526211029077639756389 1.0023030897199367770002367511191356 GT 1 -281149592138500276271585789.0683969328112208396791068173365502 0.8903346109003416981204646747927102 0.0695412026421634160986890515508559 1.0720774839900187138527632641503436 GT 1 -129390251.1319343048731491031114080467252902 2.2557465257927028762389715059625545 0.0471920806114512112108479770620337 1.0483419492747608332974058763353048 GT 1 -338235580043392963010658495693.7061207808396812886015760921257865 0.0150473440323840285957785472532016 0.0307441098715841513432902207825696 1.0312266254535192013347846916836945 GT 1 -475841794713400.8440785101337366510652543943774440 0.9730130165469332967055713392868659 0.0557482861416585412788481309407946 1.0573625023439938009070683669292130 GT 1 -203752213746394183487342952340501528.2970052262475738166599222434218922 1.5736232453959803605709101208140119 0.0558187913774824252296971155909153 1.0574371729717056075684437309907855 GT 1 -1006495424259.6642135428943677301304668066327035 0.4940108390678850888233066530162465 0.0366733319925847513161801367966745 1.0373627055911498305847739918555638 GT 1 -2623517.1715696544617233783151291620706643 1.5998693601188368895335128194685935 0.0187605548910299967668344547917987 1.0189387665202171084233563609909362 GT 1 -27754165445196.7883635537529081899379408738436570 0.6349346519789843418194451989393222 0.0478167607840121026503843946021122 1.0489977845442631891950511203322989 GT 1 -170990.5268980352254873502786954814931083 5.0149407145561816913379416992641911 0.0010473476644551609931780065855445 1.0010478965162795313393909384563295 GT 1 -767388895304170780145.0300001596845937332963477380021619 0.5327566654619485024695187505750624 0.0846920726200233895306166292625848 1.0884947376653163987375520383060477 GT 1 -1993872309540724339108723370684341567.0234610277517494450672503648292571 0.9327249377108457213419078389670058 0.0242828887446232953263829666974739 1.0245825796074610818537991903482653 GT 1 -58846434207217252723712484292731689.4734588146715839576153795766078254 3.1067624010234604272566972620122472 0.0584487900110136095730389861394863 1.0602265404480396920516837800791182 LT 1 -38006248816247365988416431243248.1616134014144281879255271798291522 0.4860633677987787601158484184158724 0.0130615999626156809462295473204902 1.0131476528059633064619054074114992 GT 1 -175770232891387545761476803851371536.8480568141579252809623401997196661 0.9526467587174285047248570926020524 0.0701205030315448330189141204199313 1.0727002743823602749948671592683750 GT 1 -72738.7885708586818097053349288907219878 0.0390904340062663365974965802845651 0.0818581865268611042372363913959978 1.0854034193850345584708441805717933 GT 1 -339690445198901303350726717039977.9556177245375417329673907993955220 0.8613357638648690801834253075812774 0.0614770966304036848436303254621767 1.0634480190236275486796653860158882 GT 1 -67.0738267854512666080514304204152126 2.0987220069720695873354749132533329 0.0291671545608386656915111971872584 1.0296009723283538406595015501477992 GT 1 -4430982.4490482065135461391300275697683549 1.1917784062769326517367835198922521 0.0808626552517745622191036293359813 1.0843197175773240524622390740749286 GT 1 -80.6527428022547908428877185889107649 0.4485773473762601067572539026510935 0.0104564804200033592564557234911881 1.0105115335221351190044857205903021 GT 1 -17563278.5419873994247306618220244026681308 1.1049768844018149342737946027105472 0.0140841898587084513719451457707905 1.0141843132772696116302052709796631 GT 1 -1521104744367354928800820152460385399715.2774729933335475990824632892299311 1.2192872367198838239605545151716630 0.0160906841085207379532324957838108 1.0162215448236233195138845106715536 GT 1 -60872334371682732.2041103387089533068604907951288120 0.2329488449836637545229698637134315 0.0870706347857451296082830259603308 1.0910967669723132521419927525073650 GT 1 -151630271410779882198507106664494092869648.6140871030065794525188675507262833 2.1356668440847034391420400890724339 0.0165414055184976075266927209074643 1.0166797422105848390785232733117662 GT 1 -966263624285845081540609482420031.9168896096659267489000166550754905 2.1947249513803038950182953843101210 0.0643230220051594235089017270692661 1.0664849710482245754049667378954139 GT 1 -54967216043042.2343144866971092687207634835885314 2.0370666871068136475692140081767403 0.0927590206631775639561491679713541 1.0973471758021824401250474764828636 GT 1 -5350020473538330156291974087548851415.9104492803939966255339527578337900 0.8683011937973015523265206114090812 0.0703722614282394419167340561519206 1.0729710540743357648521999011410749 GT 1 -256.4210411508012891438024249209364484 0.0126170784818827057369062488010447 0.0018870960077841022388918166944926 1.0018888788166961874717038432138093 GT 1 -17453264403869108739047827667.3561159398029923771485563323961114 2.1610990294263037550717530035625034 0.0475556738646662305605359157316952 1.0487236239411816360505809130652517 GT 1 -2522265937532286150131826664807668995565.6461846361732341811852530042048973 0.9156690852964492897576697878797913 0.0336697638800633893058655198436951 1.0342496438527998056162085099338437 GT 1 -3.5205352550668260464372767037114500 1.5754031966457195957763974179930772 0.0997606746210887086000861963754255 1.1050946339198292642843026161597460 GT 1 -205138691254515646208293116.7551206876077694231669094242505397 0.7433429626691318038639596763633728 0.0718012611660806152002541346831010 1.0745094108983296630254085248180426 GT 1 -3911078371999737370460566718150449846.1137815752897355202241770059744770 0.4558744160720358262581236900501058 0.0995819558145543663227118530569822 1.1048961299621724769309911886606556 GT 1 -6857211062426869249718.1466237319622199400764622849400590 1.5034345037871050077422556787587923 0.0486648348400812014534365531431031 1.0498888440793145159503638315258255 GT 1 -986.4858344750500185635680719072431527 1.1926891336031595867982518364437031 0.0217307987193938371617850021233675 1.0219703898904238952558998935994854 GT 1 -323112140431.0664605921683087684944949683750170 0.6034169530642683371471637083891973 0.0953240451402956808306917815141461 1.1001784603298348637233058365573940 GT 1 -57063076436406.9498440071283485890670353353175128 2.0620492811401209734255676112282860 0.0094441879231879577003885630814853 1.0094890670540927195102363172809769 GT 1 -533471072622554477013959811.9032661412402344284275091662007678 1.6199290141090836278715075616473077 0.0669864624988311111973110420711347 1.0693355685925020652194785656089621 GT 1 -24555987154292974552471635.8807219249079279788471109305704665 0.2317171078231558960878895242724461 0.0859953051979712826240867495536138 1.0899195709962898574677448189847307 GT 1 -1320.8755457445713458327726894162638368 4.5045671908667431322726323691624167 0.0445225701051801314870852245672965 1.0455441368316380912932404428181726 LT 1 -11.5912021128598719820980938288151693 0.0954772375716039239488476230618159 0.0748434579839769854949160066341378 1.0777923211763565800056097126128937 GT 1 -34013831252716641305719521731741.4325049581622803064373815611102389 1.1710310721894246493663278479757208 0.0465371976472673498289826484947563 1.0476548663935330167805727107691370 GT 1 -2861124299.0519015624042682900985503324621403 2.6532647921578294205041455797624384 0.0140104931118260844346856889296051 1.0141095665373726897416324013587553 GT 1 -5495317597736.8762556513654786939910716707614311 2.6948205342135918004664214102437739 0.0532973455721854777910101784853449 1.0547702219769068247340460979387704 GT 1 -6423427163925140485167026728446880758827.6548906832324064668273773581747289 0.5850628110950488941190566514224050 0.0909728609177901238493553319216930 1.0953803292743105332720193973817943 GT 1 -499778.7568379344691545706589017106492623 0.3632414765176840927835800070982138 0.0929010250341511090630753570254066 1.0975037113741702037186458540161536 GT 1 -1338326045.2815629800038103473165810274653249 0.2698792140072455513709607810254627 0.0051165306622722318232806638050978 1.0051296649256767177111933614754015 GT 1 -11191454.0288285365593232143018444497052845 0.4037147303933689162383786258027106 0.0852936945804409931708453616053688 1.0891522429145202143172252767886356 GT 1 -1957917661674659123107701.2265392202491153006321136735193514 0.0531442960763174034888666799684823 0.0885171304995817914976013094295647 1.0926824787861367546336592888002512 GT 1 -1407338.9703046770507382609326910029389468 1.1069075982814870489580314052952486 0.0771054874091862875021358063036222 1.0802403385611856672195187347206372 GT 1 -24908504398455785192330.6011900956125440791638603452016856 0.3059670737434855522454066854301036 0.0850677300260382724752915222756045 1.0889052383327513966936627985587457 GT 1 -18419319699748267509135.7634577847736526576274958424761457 1.6613971461666982517309899174712788 0.0109422476002344604828239203857213 1.0110025543224047751361488020329838 GT 1 -5539257963777.1022181467938978326410662855457457 0.7583848197144836213646215382073740 0.0886517411381155120182532539517849 1.0928301728173434237638903129547658 GT 1 -151811778414462044496958004492542498455119.6802298669062911089792329631459227 0.1330018828480316725414898843897947 0.0274066680199253908093083363209759 1.0277892369067381192023190978494300 GT 1 -67733248655673367611882126234131.1910416516824819938847080401525834 0.7437819594833612770527095361271377 0.0134193676944115468946891014009860 1.0135102211215982885936366720399273 GT 1 -2517359.6015611850550406672412811853532966 1.5078876043231744960635334078425848 0.0233054618532589070483882377148672 1.0235813286947041848533890902357377 GT 1 -408670575150661984293024367812546452.2602357723180331748514846126650310 0.9125822752450865210110312322494913 0.0439343502105338640311372931016455 1.0449286969606100158401310038671105 GT 1 -8749.7365399067033926542229603843053488 4.2107413425368651951009256775349580 0.0858445480742622702903386168847116 1.0897546432963609602567545571028559 LT 1 -22504045.7668879344761215276876834514980468 0.5759242373286087406699212009111762 0.0112462839386668419403567956957596 1.0113100015646475721975074429342585 GT 1 -47351.5859396886735084953492199578585485 4.7426007995626764282706037006609444 0.0749722965145736006980296177525809 1.0779315922042211017119993904423505 LT 1 -161069028746.1268975330610460919606136020336596 1.3511883088728658106153611317758567 0.0270555777673563376832258158497593 1.0274283184351022163849765183061597 GT 1 -768869368686963234026647086.7498400475992494523511412081611017 0.4040050737383185626515143520910876 0.0548072423904307718767106872748327 1.0563663959823101560335303507022805 GT 1 -1030831758598283253308739930.5159024862133672155288308773355934 0.3572943871539711863019200885543331 0.0023482219232248719843310796964169 1.0023509833200873210683603454858715 GT 1 -36.8723032434545248807296315372785140 3.2794418070401025788303716839271234 0.0045888406052042526579620012162774 1.0045994016552898134932331693588452 GT 1 -90493787396780848365757120092.1242724716214307886067151338144381 0.3838084600854247890744407718402940 0.0821396737816670882347623633157701 1.0857100500266075512638777179729794 GT 1 -62909973051.7907009067497273340673601181320554 1.6602311903661008709481541526735949 0.0109077075792976338904747589691023 1.0109676327844448257631870699331217 GT 1 -152031956555294.5429211982353990299008382498274553 0.7391451936743383921830186114096801 0.0116713748483898190395926648009581 1.0117400199886780926651689495237684 GT 1 -877416599294043571324320973.7012745190913784934364503169623626 1.7958236288576180639265444003128799 0.0082307642707630882973364114734541 1.0082648240316665944247058940149668 GT 1 -17727471918158411283274763273082199341062618.9002476019345576397319247539532824 0.7514104014312665498872562169255748 0.0723938889838560957480619162060534 1.0751480856361050662401267083749957 GT 1 -62670857.3035507905487779705772871547077204 1.9648767172720942189797511943680468 0.0141851305418716219047903995277090 1.0142867011787165377215370162590350 GT 1 -57811540138172319372.6753069048180406637624219628110861 0.0382201134407625428906458570089752 0.0985873770050972691705781446650697 1.1037921650573854456010158335357491 GT 1 -2598169869028984312453789250572112.6045313709546070511852288680529446 0.3239747139580540493132158301688386 0.0305426580732677052639027887904192 1.0310188053430349491992580128429020 GT 1 -41046408127903.4684141320665562025007077043610977 0.2192312764104837891109689774038700 0.0477741640889573447257001170377062 1.0489530497279695624670216161957809 GT 1 -2117435482155537565552.4518447363619717784726860858200779 0.4293212885762338618591276777987921 0.0904375833829012550757898119788968 1.0947916559822319453658077910881969 GT 1 -1253476094653026.9808422368823853650561533675497928 1.0693330762641102584514432485841504 0.0072996906572064158333567919280030 1.0073264637689073561340283772798085 GT 1 -254053.7857482956216434246906508542429883 0.1323916853670853353247606747729148 0.0060843313375366659199806342810962 1.0061029163045271692968591637841063 GT 1 -54470039893263.2085887612156062487569539185537854 0.8376964449441715378225320756247392 0.0308562090589986618439030873193968 1.0313422870362508219348959544266413 GT 1 -44087031.6732002204094380561453636537834885 0.0824097056441680696425726990280929 0.0357510332228521731085968770128167 1.0364057534244254820878521291302729 GT 1 -748268890414921288297722084968.4660086264580800419919275406999543 0.8393802003077641849661323823077684 0.0037402325757610549557367205687911 1.0037472447358217508640656878241643 GT 1 -285.8075711870803504820751619254299536 0.4731272308168084211395189181480573 0.0402390076466643699897742364091403 1.0410709918161177242217780468709649 GT 1 -4042893051764535893705095482320400134658.5290487968032407711429182014709447 0.3212138162895785385455498766711702 0.0189094827066347126684652063897640 1.0190905532418633765056060581298072 GT 1 -45944270227610798676570519083565382302.6572029384940909500516371751885463 1.5596538687266518094920056109475942 0.0335187782282642727659734775368605 1.0340934096257211519213583942039306 GT 1 -1073599633389209426090903.1602073020804885591626785495068623 0.1140352042251310167247727210421216 0.0501862056625685392227266601550562 1.0514893195598277342015580410767036 GT 1 -5723.1789923428170534047969900156287004 0.3872577971547580966481413139105149 0.0140509680644613713423714925578179 1.0141506174645127564025397135226813 GT 1 -977606049716.1008361868983768238207184006285596 1.5166938678911565555830639037874138 0.0866867006870302229076491320106302 1.0906763035674999697225127325702405 GT 1 -223816465719644728270721815691208231.7165727588390091808129171032732923 0.7984332093096830958677575644242489 0.0786958778501014895478626816301567 1.0819650886018900765098296585184861 GT 1 -543475968365313515747635373564611814815001.7517051041982354871820943682739852 1.9366653672062269309472579409620685 0.0078514627166558332747958563250499 1.0078824477417936426799743747295804 GT 1 -6221042588224711179286229648388766.3717950375254318347572094902371841 1.0226771742840650267454267436516539 0.0581081730199589164307545297492652 1.0598648443541495929293011633039329 GT 1 -127074213282971161258691831814177.9432169108817316154650235862518211 1.5956352021827499380920478889260220 0.0029921191937819051832445722444939 1.0029966045317618465434714621276192 GT 1 -1664037470143.2462520029467685894126418423199367 0.0186656154993521657476838613953951 0.0749088678280755054700062216447169 1.0778630250556677392175895692503592 GT 1 -3922409572092394.7084694093058832379488554005028818 0.1627983731170944711637078893388062 0.0424351801904717749337478040559326 1.0433618632896584842849416253628905 GT 1 -110974844800543412614452382267007499081.0145188923490141358702060799602593 0.2990358320588533753657547289705057 0.0151995234945489343313600833731598 1.0153162202518853926037476331621389 GT 1 -10806805595440.7557299694298165355180547930982197 2.0026984468855425355762277305467097 0.0419528966052862341212576581673446 1.0428583337495324715362792778921158 GT 1 -138461542297491680905432.4875001379149513077098741118927315 0.7766495988796924067436251899198806 0.0671333976609780333859116438365588 1.0694930654855910687365731768267895 GT 1 -10842181125385.2803734503043853733827482760844765 0.0750865271627172283601708550832358 0.0509013859810747283121509703270047 1.0522425721576563093895409326042835 GT 1 -11421899720237900943531585002056375447.5216654419945844722748488819816979 2.7483432107136991758918156421896810 0.0715777118017379924596209984554561 1.0770265100697212047040617186436105 LT 2 -531976290256064.4375360264026593300982216717603467 0.3745887423574355160618077271947346 0.0994145540503930508015831362790808 1.1047102316387540650313357641269969 GT 1 -87818407569413238587227579619.8921967525852391801008053230262501 0.1451367398357042984293509685037465 0.0867694117219697699521565326333761 1.0907668691822196545798520216772310 GT 1 -6228545063720661.8007767289116111368579553756551363 0.7173272291348411205635246296951332 0.0113943791341161879985048446370855 1.0114597924427753567758852329699921 GT 1 -5626254793015673346753937661070.3169064005331820497524275978311054 0.2211605168167910258214966998776212 0.0350366036116213828162261429957729 1.0356651095663101549929122060779889 GT 1 -401702185004500085225.4585103316983379133563868859764207 0.1773172598178315768206594340239688 0.0886509255897387685324919251365522 1.0928292779365951434664901689092259 GT 1 -1185748468149804932822006397347033683.5552462159974428987684723952894756 0.5875135765189438516617279484208532 0.0678781459409644274017167989194806 1.0702917281443530255277235211225982 GT 1 -8302629863302846550590225928317696074769.8586303859141748891156827166115702 0.4917032394711163721688989684578667 0.0506186035611705077836521228295098 1.0519446681287090954377728160733401 GT 1 -28799564824942006528900343.4495403010954071040849157135548769 3.9347349655040436132776119511980494 0.0824398235240754622802469419991124 1.0860371137644740283329427936174037 LT 1 -536446504083236560132486275294.7205970457591952797263745659524558 1.0384996274450633280415882181653440 0.0203564177752307976465078038836326 1.0205664650767301824522557329518441 GT 1 -9008830152849803184.9097804380077196792299581147934895 1.6772778894091981722311056390963117 0.0843743499458397182962095126982371 1.0881476768201948619401731198376014 GT 1 -11601057323152533791.3424361815499535402244297914642420 0.1544112709001150586207631884211834 0.0456318935256397143759234231357364 1.0467058261139276088322180132336764 GT 1 -44535897435498667827315151026588910514305.2417730124138095977159894276153693 0.5163398256671322964313064887681340 0.0005262163115235305018463311642787 1.0005263548119163623471392650696072 GT 1 -57862591594613444167335783518230371.5676554459085274651728163802437623 0.6141266216234565785213275147220805 0.0091255425943613201131293439177413 1.0091674354160974304512358927773426 GT 1 -3721550741279015861559751461473610961765.0522292695692048183939545687355489 1.1457705234688803888765775071677094 0.0522284076576428679283996114871806 1.0536417421046646062451436066689074 GT 1 -1881850855267405712636486884907.4352208775728990869745171888596333 1.0597106333800945684626914394185652 0.0402116721924899020123046724328890 1.0410425106993376403821054313096366 GT 1 -73.6294211366881403305099517572345701 1.6304807146808551772688811536749555 0.0415610261892307428172722784375411 1.0424493869523940536678112563217662 GT 1 -19116001960972018017340995596805433.1917514671627606693663397715367433 0.5588276658740058282820873253752034 0.0457887392595019765867889287880195 1.0468701847326045213086047812408115 GT 1 -564768.8274115752169742076507108662316036 1.8158857229132062296536675701117028 0.0634643316843840786663577985968861 1.0655676709940038384278611924794273 GT 1 -3655808235453828631904055.2031131845245860006236267220478911 0.0635402244042990872117534795547361 0.0387589549134246266046484891409395 1.0395300741104096633299276633063993 GT 1 -26698143564437771.3577903389563238328121389347644216 0.9767017083905776355782469020834913 0.0422617750582104973011972023751745 1.0431807899778290379625496050158974 GT 1 -12034353463077413751913879374589676780799398.5557680843129030125959296551997800 0.1362257588142006000973081865070566 0.0861999882638797784497435347670468 1.0901435370097615622796797979747714 GT 1 -41942612439460982873533100776401156498.2545822289099647481066306967389274 0.2773625857093561157051262091139926 0.0799341672158623966811318437926211 1.0833100541250952085100446734425696 GT 1 -42759866265231173290694596864426012584160.9776766565649203613773510134470973 0.5970987035374295791547372041240485 0.0123231430818574608740434546150228 1.0123997026292559832806134826828475 GT 1 -10178804977087687945209546248060504267236609.1188156355450260762633896922064024 0.4883980474744100004735045355611340 0.0139654817966668193595991271296052 1.0140639166724680336638246536138513 GT 1 -2124917714090108.2921122080948866106430663047712596 0.8480324335651177763112419430559613 0.0614371165761887594299677987327905 1.0634054210193144178981810780452943 GT 1 -1187764750187.6734000333390920887320013903288172 1.0324835515749283124782815253296771 0.0513301283572183199000122515949315 1.0526944106054724181435689552485084 GT 1 -473019434949491891580037784.1974701008392857596616089177478827 0.3016047258186561102466588650704961 0.0178722607780738097038615356818752 1.0180338984133691628384273873155225 GT 1 -162.9395737476846631991961184621311372 1.8735726232751376334653773949338675 0.0212102477980154029266409085785484 1.0214384172252895946172052553473579 GT 1 -25425629267793941803048121751606324193.2006558167310826054728677784976456 0.3131769568051508716392186537879664 0.0168339123583440488046624281351391 1.0169772131461042907123090670509596 GT 1 -333267957312929671944854326640.1859203559122147665304577056047909 0.3094405104920581454499707212581196 0.0340361144868089686743796029188353 1.0346288310655886428344411415037956 GT 1 -795112349476.6159162471292371020000226941079015 2.8064513241749848475697446111082140 0.0803904000287682850129496239632022 1.0838060468574389498086070250145071 LT 1 -2677179538115354370953448418069203769.1933493879099621629959172418313642 0.9816857903104870054171182022135404 0.0759942683116230377227570378911358 1.0790370042337431054909688865307848 GT 1 -1027938283658456824251545523245828807.7835723357680840340377949532404963 2.2796481377542740711305847755112203 0.0865865237999679802668072126388120 1.0905666244534632982317494885990237 GT 1 -20684469.7919647387076873687441670927604709 0.1397590572345684543697450210830801 0.0985003421951284591667369720536512 1.1036956159230062501039657800065744 GT 1 -744338.1819329313662108292187505186631968 0.4581415299988835654177208592523507 0.0145530895897064901466579410336452 1.0146600245555163223452190716523634 GT 1 -21366427082356453676360218.0600315584596238396189422209255068 0.1398038844345525394321359072499564 0.0228126861942619555418529795527002 1.0230769218709727998403508162114736 GT 1 -33714856389418046146.4229207731259283712066220043618812 0.0031160432867939601506857282609148 0.0741684677906541144733922535227092 1.0770629915468012811472514275602317 GT 1 -30777804644028.0940510521023550254430441679927090 0.5729569428024596624057015127089728 0.0266938451212800604497577786340830 1.0270565958475837638853357494050521 GT 1 -19481348435103.2384198463087132558585252118204186 0.5156414623986508571939767387703212 0.0514569991344001551345193874528949 1.0528281549830374002350369008129254 GT 1 -64935191013965969106007602986522324518360.2673751849828421070831375239344119 0.5348536558918951215200285298288162 0.0107607306568496614345609592336063 1.0108190460403832356190283837395037 GT 1 -322.3755007013209414136853048275716898 1.0941094185737357654621787471584773 0.0440823653238168938039623658891335 1.0450835258388552363439022393478000 GT 1 -7795195486708725805101873645720386.6330035045365985136284539848206123 0.2808334302138005877824769083754215 0.0506895789663557247325199271190717 1.0520194305567820812168994839657484 GT 1 -3243752098168.3595835521233074617369402031360546 4.1682540639741149515651149937062966 0.0530805334328502909023644994502098 1.0545412299960054945020022262873810 LT 1 -94636343098014383.7625965437940105774607393213656541 0.3698538031176131507583216716799194 0.0380087079922954184002624596914777 1.0387498803244429175949194990582463 GT 1 -61269860066199.4516582262958996191108716897751577 2.1742697635419313018195773713441761 0.0546025278128368503277037156253343 1.0561498344290263377046719143711227 GT 1 -27325068978612797.0925674319528523232881818755024905 0.0282914888496922508826039597365420 0.0774682672899998009100894959451572 1.0806335050574468978675827913189085 GT 1 -5396876017169156973530123193674.0172987557125466985946383694432365 1.1604517412045986982944535678665692 0.0476880449148484338619121271670271 1.0488626139544451528532092666640515 GT 1 -10155118795461922171977975028213831122532335.3048808492280269985195832585129249 1.6035633567716300432864451455779266 0.0938035146764010388370892245752675 1.0984991252342204531981757819144427 GT 1 -114654149995947401323614981137864130454.6502797087680094170635921607071760 0.1241628865614316643909570496503405 0.0189480912618048499485087602550628 1.0191299067104627033670879375946349 GT 1 -2113088682892436124273243763895921933074.9439671822734041880524572672577981 0.0152900994535793656967527781321468 0.0119863173737272986571276364250898 1.0120587325181462447600959926333059 GT 1 -7763.1991929485068796667991250681961087 1.2716257384547731525274566506455988 0.0606391325901608078463793309142354 1.0625555632615615635884929305154469 GT 1 -21508324579132846910763038223635081.9908793986709936681292157204447534 0.5791178421325747912564193326335587 0.0944685392834942278286376757665519 1.0992332582351654585287880231810558 GT 1 -19512856471.9298223576603903227897836320560106 0.1586522075708917904148141716435131 0.0144644660419234378643074691020584 1.0145700962579853125251842450064158 GT 1 -6644149509109841064545458849370.3130549823499449687902000006336036 0.3613702647524090987299864239555809 0.0175489691048173749367086184477427 1.0177047778088994123074370931098267 GT 1 -5839888.4440496628261403844918642322105596 8.5021802908659688136734970052489909 0.0697666840220279007591349923954811 1.0723198469036379625094142007185221 LT 1 -4543368358275752432686568830279.1567619999172501818890846383108402 0.1148678681775290466207579248820169 0.0946136844353775014944032086377230 1.0993935583372409343804375118111711 GT 1 -3137882684781237435924.7442805036861420298512054477470966 0.8634056400559963501445962654734133 0.0242251739626309361172185866296866 1.0245234302142135213023779178934083 GT 1 -44297.6892108417591836741334131455288488 1.0133553572126260161644567418643877 0.0822374957649953406187577644699489 1.0858166318165024784310022125774579 GT 1 -9316498486811613292329425524370629.7462636849375624487504867642007343 0.3159685737394207761276193635988634 0.0794241987527748826567022214892081 1.0827559337936764586178049238809303 GT 1 -211218900289033580427566733845969.0541168011986167098485315246224077 0.1142507149495524287376094639539725 0.0781293841509878323438815507860341 1.0813503951544678718270340855046593 GT 1 -39305357431.0611514773674120276660886870695443 1.8760936078714583853880705161221733 0.0446375690875174533466525424121907 1.0456645016877779204636711254802503 GT 1 -232075500562075483745.7932277157387357479650182458696998 3.5237840736470540333229687944757193 0.0636222642293505352974515282956338 1.0657363200570050613736098455420969 LT 1 -287753572542043640887109093.5783334379889975571143283143788637 0.0001839130973119284207355174650455 0.0764067341808605738201513352761991 1.0794834927592793575197427218075649 GT 1 -97643136.4094905259053875748329823510775235 0.3107033847952158538879525116458609 0.0146773012557002751563092054479760 1.0147860785250734653435993633825323 GT 1 -630744004799544043866963584614133.1806878651466585998498438734869212 0.3806386746603072331509699899636347 0.0957200090324206261369200233823330 1.1006162420230400307918178489650326 GT 1 -30678369593790037549.2236883096546857534724766207994582 0.1383516489353072365019494724343300 0.0997885505187565527879410245371500 1.1051255993847664956821125786396665 GT 1 -5467793.1153317722881725892197296791192520 0.3979664503625997743160277276996275 0.0925540526175771068317962357389604 1.0971212767300569246451562689878411 GT 1 -59088255716753409807752948.3671909974527114561352892504063685 1.1507641352893242377605546492468245 0.0574099830452375796827006515726833 1.0591238555153190150119705962500468 GT 1 -941496101151130378383996.4622489662976006690633495642814921 0.9660382534373536776280810585260214 0.0159847551884127761587669444506447 1.0161138893551917203358572153758264 GT 1 -1385599314878.9955876004114678693482364271331702 1.8726241443265096836240200621151297 0.0493583208827552838342363229981247 1.0506180707000192265941402561739072 GT 1 -122096739633.6894904943467330103299327364415161 0.1229378221039013959273230525545076 0.0602440132763856390494225300164358 1.0621350260089376449451497343297695 GT 1 -2190813839907861087408756.6264656828692006407599151912298922 1.8008310050099849339574917266280494 0.0817000235442239061537203252729647 1.0852311700015848644222631327105134 GT 1 -946.5464064431593075399838859704992580 1.4330231691124189786503093263141947 0.0352924388198689676986222123093685 1.0359302689798807690568362295172770 GT 1 -44068.0980489462438327801570476443146668 1.6222699588692903434981231097311574 0.0227910900654275575107411171222889 1.0230548218192300201822727703939793 GT 1 -50353941680313156.8094732003872655406828318041723256 0.6859451372638127143248103201230215 0.0793703394179132399449118474032078 1.0826974293670998682743769610131466 GT 1 -25215570596486659.4847009648898675624316897630148200 2.4820463551996321905820167632577329 0.0682968282553673593795662135911821 1.0707410002762848582564300610588863 GT 1 -300431745516773.6315468412532836086367919621357949 0.3934429454716505478553835045746176 0.0867342558839374131434546037221297 1.0907283737991047950108949183768972 GT 1 -9684190503459913844421384303389145810631.2592308986588163129773875659500492 0.6846931518048762699764521538440911 0.0918149576611080982580470059892850 1.0963071300213060690343054241729821 GT 1 -26629837856856314494939.1688671657876848143814330135915703 1.6492754057031777293247628076831858 0.0833310633059165062815238402904972 1.0870089005991503940909463978204539 GT 1 -8575710404247838363.1166893779400480990737667630115307 0.8857154303811417428498291939547758 0.0725458271228924655564579344899137 1.0753118950181454677477326442643383 GT 1 -69616299463691888414915845833270324782950.5375998770443767786215259243094718 0.5506245739241574426601694947569074 0.0734235116835728865228801187463210 1.0762586804673986560126864706100793 GT 1 -2.4008000454135951961021079989134686 0.8975990623256504844340131432263666 0.0929960869030800675107531029398355 1.0976085145467372055766017652661686 GT 1 -18260804504.9702541529057876840520185799227585 1.1460921751053529642917021365832516 0.0022755849059583731890167058835792 1.0022781779838833667761153721749000 GT 1 -22556001358741850.2017597057740545459422508022257447 0.5183819155250017921493133180998581 0.0636827391291052654215720685724036 1.0658009060145520260170716884954499 GT 1 -91121507187055331651276250552979419543.5199008010740672652684839409087347 1.4104597865216190755772435521767202 0.0167155625993570238016120270401773 1.0168568442300062123834077986591273 GT 1 -31741080951015582836.5037969570592523961653845988190374 5.5219562496020167887066478246468654 0.0501608134872617598591858987062663 1.0514625860715914483987390066201214 LT 1 -26585930413771490790328467654421.1752969301231394343637200973334594 0.3204359447590090348352966483485969 0.0905811373978008711074782325080816 1.0949494959961316648493882559296029 GT 1 -46.8833516628369570798294601583308166 1.2846307052411666671068520913251720 0.0117815801739519642333904036758166 1.0118515329688081380808516651637927 GT 1 -292884536003739559434498595151124460545.4413068615752492135194799927993748 1.7655800969392389807471132179950118 0.0134642815426397342798957021322394 1.0135557469196269530708278901255400 GT 1 -4030468872327868761.9994019487509683094521813819282018 0.0677530005434041569095229883490168 0.0406697791778432405746853607020357 1.0415199246604309573518515231070683 GT 1 -327615994690553553621151154.2237840340193360882592190944415675 0.2690543078355597073837172687424611 0.0236911925391507207701497026805875 1.0239763415263769735000276195687722 GT 1 -37283272.0728425007764867863041178701353584 1.0248938777446767944529888943567666 0.0143757722430800453526362475141902 1.0144801047711196492800829293172460 GT 1 -2275100020044.4580763328179551984168101397516046 1.1273415621523830248509937689409361 0.0884201921428986210840608904219400 1.0925761320785018407217705107956530 GT 1 -85997989532022356289568295045013431.8206007942307941115012542936185338 1.6907869312572242419545436776100412 0.0119061336510620998798875760705384 1.0119775793210433971086233833613670 GT 1 -240240154539971727349063.8427570683691856302751718045711873 0.8311159065360519770245162923533037 0.0717802417907209655653738599536301 1.0744867658154520399346123379016267 GT 1 -59886620244121621000257.2392086733271001368937569339410061 0.0037037345256888929600995252202945 0.0643669496967091476118735014767895 1.0665319196466860959188466173272870 GT 1 -505.1501832206199383925663524831213011 1.4325457477340967847916667839701298 0.0702804510500506919399724604912533 1.0728722985821482472167418082158323 GT 1 -32.4105716991152443250811458804440327 0.0602077727167117498783389032755594 0.0051592767281365990701883516389785 1.0051726317509580453913526031378125 GT 1 -1543727182887023669861309386247.0932639382521733189016609989165939 2.2314941484950096409658895510971525 0.0556231393259552030040662712638590 1.0572299756867420011502044745475675 GT 1 -248187.3375928489571695813944238571481067 0.5128404626912602386617742099693201 0.0963582363390079402851558230882555 1.1013222762653578110927961460837894 GT 1 -3.7494630334411557453602913881770876 0.5588000998571350673482190550378282 0.0538257267881765166139396725063030 1.0553285057427444375344551945838417 GT 1 -783180336904.5296761960799995462248922674974135 0.2144468591684750965405976118361119 0.0912760658984256201226901385198934 1.0957139337902649177670061952593693 GT 1 -40819098839570338078226539798.7002617147088596351592124062147626 1.3459344557366471224130794457020973 0.0788385264881916959414661840710042 1.0821199339772513463769371608356811 GT 1 -6805896984321012438802101452738870662.6204537621241966879633134895066752 0.0090942067136618181072536738808136 0.0297804820629330318791070170442694 1.0302329259366937718949101172078824 GT 1 -16909070148424460356374122833222334202050129.3271424994282647240475809478740391 0.1395631262791958512413832966506551 0.0515574286233871711979736014137223 1.0529340382227946094818105451848030 GT 1 -5681866191663200004241350370.8681505144450982752890998979697274 0.1459926959554480346264707608695459 0.0252930110162354733239794179318566 1.0256183772699281535832800770757149 GT 1 -51906898947121492774160683283383996.2925429321701280908632193349105747 0.5244215980832446895190888866197927 0.0650380829132772339208873784973558 1.0672494809114866532139990714910313 GT 1 -16974454.9746085425357849949536462542934622 0.1381155153815888106387844875227625 0.0251668515282715046864785313650185 1.0254889524012463157504359063981932 GT 1 -450.2737528904312680200552603198250774 1.1927443521221802692332171675776260 0.0879265077685283479081411242694349 1.0920347085673485333591984196461498 GT 1 -583151784947838803.2571308716351750612898715903895504 2.9508918692816693861876324771008626 0.0447870628556543643097036974906839 1.0458209925239327269792806535907955 GT 1 -60040567733795343211662828195279345576.8087634069477575669977519712853918 2.4724822353178172280455874429833894 0.0300150542977839463156817909541755 1.0304747274997659816276598723980577 GT 1 -49216477487807775000552563.6927047769427621462903076755443098 1.4260026876921652427504536000899678 0.0880589410435413432827868286367869 1.0921799193335230185513047982478854 GT 1 -2761802668231041433206603.2880620624039432972043267630648165 0.7352206870591913445708563644566862 0.0549894075322317738938921158198720 1.0565591425906129301457608826688996 GT 1 -18.9090024751489086690537182098923615 1.2835860076569074283110089425338642 0.0840623679252170857178871703913719 1.0878070038806529299118648317959376 GT 1 -120733417953217015.5788872372843519809767545612255188 3.6425468002403726187023207535733573 0.0370460939214185414161171807220301 1.0377497332531649302448391661538711 LT 1 -46841404397936459977448426933164411448579.3661389620321771432785162044554723 2.3187147848212197270010478598969703 0.0970963221110434766223737797782199 1.1073556288018240232243615785194715 GT 2 -387566172.3375838352768375297136661571209734 0.0386824404994043531647336624207013 0.0372981651345650370646122994668903 1.0380115362423769958918815252569787 GT 1 -49338884863808691724462437798685983143390.3026212937756407084136563758799883 0.2954979920267086666498639177573287 0.0094675787335119124645012553772224 1.0095126811566161262455810946633078 GT 1 -46332378518822113565945367278197867086057.0148197515391237983672098853324066 0.4552983776607256372218547502030220 0.0696380803579448992216794021054496 1.0721816076328650822949774145522781 GT 1 -1941174218861.8615405904642307168361792375673380 0.1095661727164327507071879448260989 0.0640318239921261581079029387894537 1.0661738030741455963567193716583615 GT 1 -59920765476588746954623983553730582495382.4624894820477475244465994310413733 0.7310311420811320851741202278768013 0.0650673266201444723328780490250766 1.0672807593664527437708471350774729 GT 1 -31114398675174094102040786073052716.7574491510689226604126096679469778 0.2277132654493309415866816995203336 0.0205612005173030940015735460365313 1.0207755249352948522417076595665341 GT 1 -3736390160919.3320462850234179251813396070088472 0.9368195261757872425148349387756455 0.0804584800096314313328200791245336 1.0838800809921604767675117109061816 GT 1 -13688767591415345775510857150101576135909599.1155129752904479101720339910095651 1.7834994004520499905406061284830455 0.0230220036522087328213976177147920 1.0232911488431329522543078332296459 GT 1 -206274290519590826683.2523589619599511259546349092670327 0.1533577447416698351930698267349146 0.0823379649467954331563424203156655 1.0859261096836115257777113072026823 GT 1 -22905490283196131320606395763312173646.4028774318620086434438366822409011 0.0761178293750902080082105807264534 0.0421391532496612385966577078772943 1.0430527654756993459598678392067745 GT 1 -48394457027793165979671756055640694321.1271235614665707467173756831865416 1.2258738104795370443148650384536500 0.0064931546813264737639881001907115 1.0065143269096503601010289356104301 GT 1 -1241044044448903878814765587.5139124453989200803440432782512074 0.2069056065860476482368066282767108 0.0213275588399678744702021219223421 1.0215582775653674084090208382791454 GT 1 -6836403013802130560662457.7697884094443244578956552335143849 2.3675246204465802863401143820652997 0.0280911829747414250914420202209675 1.0284932885668936115391249532629450 GT 1 -142659.8567756059184351928535848379466053 3.1728375578388061266080289829955377 0.0955123857918311066566923316247432 1.1003866677638512910598597639187769 LT 1 -2565203887728299102006910981123.5210426594103928214801419130024906 1.2512703186975468838978938962722368 0.0645864094706760912759442888016080 1.0667665046860795475967392028422266 GT 1 -778829503961088423121575755774406432109.7288770225644051153679667850894201 1.5142400142415119734385774799397686 0.0589206003618434083712064862974048 1.0607277650199708046746862159950129 GT 1 -3071269944134699620.1430817323032584941910775388599949 0.6666348083084153582326195648882690 0.0912346075921419866157518088468582 1.0956683122774602767960963584552310 GT 1 -281535160586867581520451168276783.2108866667318269544862229269999488 0.3274284885058621459301680421176112 0.0432651129936232284167341943539652 1.0442289509794226201347648163304731 GT 1 -56451891854752526057543575.9797834265202449017648239935434274 3.1584531343894485600631516804533835 0.0109465472839797581904825979505802 1.0110069015843121791778053009138713 GT 1 -116614169093890476240.8244761197755733486654071371075803 2.5174908704926514236042163792190743 0.0206137870368162202503577364333998 1.0208292168365026047201641639530836 GT 1 -99073.6134133216523080758554655452842664 1.5659279854537414762194600206357539 0.0198435854588698085368911748022710 1.0200431133786869693852578817345044 GT 1 -638.9210102643460328751366367162043331 0.4774815244049667718946313752914975 0.0251147580338432502543077693396375 1.0254355154590744250513967824495993 GT 1 -2204773022933496377001727308541369699.4469114009555478191692091934500108 2.3957837870158552087498073155238414 0.0423087483075611610682271359389043 1.0432298372018935034778856680678454 GT 1 -204625049650440463.6480010865678150432248379733126192 1.6145582440617332851660538579869116 0.0829069195021401637511919195312660 1.0865463064267729977436500820381322 GT 1 -30671659.7396995122540235703770387254518729 0.3523963090710864057831899332017182 0.0712897069843300821835046685479511 1.0739584370100911723847335631344889 GT 1 -6354421677865005976.7831073452375574730137151990636479 2.0732048581588334799255635444549042 0.0943455952241908754517997522040946 1.0990974973926869691894041614598566 GT 1 -5337716016525413432850345370000.3806758096766944949348332961304885 0.7200120712399500435257532933702311 0.0985012561970971296352833980945373 1.1036966297918680921451283363310427 GT 1 -6036552281045336.6568305434734919932529535265456801 0.4503042920104206706995374865605747 0.0934071960238345355073279300225870 1.0980618778815137507475554796037539 GT 1 -105247313465775.0168069554349930627562228136781509 1.2099125310325595744734799288922748 0.0960425460058004776433740028321842 1.1009729838632216459356803619047443 GT 1 -199247051235629312246712848323798977914.1682148245132654149192780587135391 1.3807733212501212526748186064941421 0.0822312408354091807689611205440981 1.0858098164277254991940449904329680 GT 1 -190589325962843976009178271.3853364263307093382640442835598338 0.3257902359202253336625423734465088 0.0737334826175366314329850711110437 1.0765932699991637595408999912235469 GT 1 -3632860871120.3206177608237925621558028624832013 0.1833540702418216097597942294063287 0.0617577560308596776259716567132160 1.0637471074875689669688393280473341 GT 1 -1291315294669956208330417127920962.0712812566145470468909024661374859 0.8211378949052340742609830691193187 0.0066124807816881038677323232843904 1.0066344400899329955449878901841800 GT 1 -1479412841680.5741973977288197015570112601746311 2.8392719329656903056315279184606501 0.0836923578374509685933724818500063 1.0874031168050538941555344405262721 LT 1 -143870497718976911132035873002135446974.1141306256261606422679008265664330 0.2120487701389375498013499295779497 0.0968215696691186100293136069145833 1.1018351478192706220899870936546325 GT 1 -47266759401930088865838615156625.4299168504563538212833899019842435 1.0717666275739221511191137087801518 0.0480644187664869979415725530134004 1.0492579132517909608335843042565317 GT 1 -246677317660.8073431536753409350807984336702586 0.2770759229620775133796856989719728 0.0933007299191448332767770454011966 1.0979444493587343622618356404435647 GT 1 -1975288988507.5164034943110051150043559390506201 0.0731942627161799335484807348336450 0.0574068128137407688663164648654817 1.0591204922013558415369967125915964 GT 1 -17039718886919634.0701484996561923466393536889950921 0.0032610793101669404986045884274706 0.0065947285955117253282839699984468 1.0066165698960600993377534953886782 GT 1 -227223130321643037157422302339388.7160682764412071675364063878026110 2.4497262387809086793686324070854528 0.0462344140063008265289963596662468 1.0473373547149523887893115396825681 GT 1 -433311945671.9652889754145666529530313474078877 0.1316301914116989577514658427350315 0.0869798831557591968709787099062655 1.0909973648465125448026129032096919 GT 1 -101271833383164808.2792924708968141120696054539689714 0.6497355600927069503199506039159025 0.0539479610658054288619027596107090 1.0554577019990424572404223643408801 GT 1 -109.8227139911887237295731959559565734 0.2409473107998985742154588361631335 0.0334987861703869103090708567372924 1.0340727244321985777815608529118932 GT 1 -2250207930330801134833661352049869139971.3049938446470203115009693811446950 0.8913388855249581887382081963631002 0.0111215803515189076028689227766275 1.0111838875264890476466635725391151 GT 1 -31152789071827959069615805352772400025493.7033500156138129264208218590274718 0.2143592002103446776987269882865819 0.0997798926955455029506216720174723 1.1051159818870299270747692774133054 GT 1 -184962884207934.8439476745151440806137171889420893 1.1365505211994338346602849413724728 0.0237709747487901974824295984595364 1.0240580630770145469735873685051263 GT 1 -82200280366532504419.5150722361916066549576161300026297 1.5761230088366745175071933634310914 0.0460452039259911719693507961531940 1.0471389922267087065956607940972794 GT 1 -36484898091252817846728.0883079486433560664712772430196081 0.9929311750965194483579715966380859 0.0113446767724252035458559939635407 1.0114095184899620718310723687410800 GT 1 -127368699805801803287.8147476088311485982660230907543819 0.1672281523206168291991879921772316 0.0746258342970903941533690805696510 1.0775571197965771695947125970086086 GT 1 -22028508258738714043638.8421701118118262532878691232113459 0.2668145870373453742704319812154268 0.0002392136018884783558285619516297 1.0002392422180258130923211249556770 GT 1 -18468213534570872460426631927314365187505.0598533148181324652889432887773882 0.1205897557605459744138548777777881 0.0378822935385355216420830667000367 1.0386184798122657352529910527183564 GT 1 -118188637308189318664445451177149572582036.3527709647664703703030874250496579 1.0207658555648046717615368584249543 0.0941605020244826668117814282029468 1.0988931431852880700713704647547344 GT 1 -4713441897490289343760542972640444.9246471576133435135635997308031051 0.1340354128182957500047020019125326 0.0631598739906023043251846147058958 1.0652426345572306870568013109983860 GT 1 -297936758079859467.5411933408761453301934002170150670 0.4206083717666573642801334121086811 0.0901436863939230057786763344846076 1.0944685890744856207516788631113847 GT 1 -4588819941080915831585242626.9607538659571475798559073105058860 2.1861885169453084885372995038705566 0.0501712069654338507501177310121130 1.0514735284870915205631242856913065 GT 1 -41374934374233469040023713262194.0653972468935775605060130968973144 0.0796867430454763061887285285217530 0.0600197559560846230318157401247811 1.0618964209135052857348391147844676 GT 1 -5083312361691438908142528879419560656255.8868210999426710910244007694008621 0.2639299382174653724222477779156036 0.0068631475133119048977084190055437 1.0068868072257452326861441895525364 GT 1 -242650359367977822618621.3333382448757024120239096508026835 0.3080109849150656181875203728206049 0.0065978816620600972259585349985928 1.0066197438993023394540959351803975 GT 1 -75783903565329.2731787125732843837753419708381277 0.6174800545765583064394122308228479 0.0588759579837879431116248876267632 1.0606803287258105964688930474346131 GT 1 -560.0617949065547395775365351837554360 0.0364749630515021306969133406574634 0.0480159318042156661248149751388965 1.0492069794192667278384924876176641 GT 1 -775142412277415759514508078631670198631669.1933834618292075448992465154906991 0.8751697192181253122664890035788783 0.0558161014501399800896892479268329 1.0574343240233404528717193776216689 GT 1 -626590496444.8022798442926506277718608518392025 1.7546731291887455880056512172894103 0.0054161089983540980810153121551646 1.0054308292918969053473579801584586 GT 1 -13985927633904887166094.3894270303786671491341562068433166 0.9428033580452375416595537923179058 0.0238671148839714724845745475410825 1.0241565490541773571830707056607913 GT 1 -155209126460054535486264978124516728.9440838436064618670645391290720592 0.8466627001087741041479472229415532 0.0467548850495267187987562029108560 1.0478832048833768978985312909288771 GT 1 -23957393393538141841830551162579917.5435969237817028876660900976871636 1.7398348588818291050646350925533828 0.0366112891918230958157340386800949 1.0372983029279798925288962633974590 GT 1 -23173919412618.4588893610338838853717701226631550 0.7452812295623089249700029547905693 0.0813833586871115593346397470533926 1.0848863913032094350413524141231098 GT 1 -1916376743122.4297105787179730798084640781560172 1.3035626795910005244511020871817396 0.0668321901815462180295755628414806 1.0691702338378085839185422383730505 GT 1 -40821661310684.2444544238653964984959018913082316 0.0788781073058865549933752647199472 0.0831700578168416159186959591413674 1.0868332741056263510334307187728618 GT 1 -462935170500536645623456984.6818980314297666665114040585542366 0.0367909087010892810938585825664191 0.0843090529475118531674318719384558 1.0880763652856860815090251956242123 GT 1 -7227173033815023650247127326914.2646761226369585266290516456800869 0.0668663055414005791026550243140135 0.0686010899034747878678161639145570 1.0710676186122073052409943066822711 GT 1 -229763662961743928335888.6733267783113735564009193934619767 0.2822668325885339616102534627146321 0.0022916029604642244086317792690879 1.0022942327008438123535116095747835 GT 1 -708909463416337497972016209.2163402713353244149098665655751543 1.9892151468688889438940425796515815 0.0864368047291453769979953129124468 1.0904027262784119230836862613539126 GT 1 -55548841983188151063.7626536921027793089501210486554264 0.3077995197991291653390265434643658 0.0309954377446390141283302686016052 1.0314859588925875472014475682039992 GT 1 -23884450724352046024485.9670455781427936524425838601156411 1.1148536354875399403395512826487113 0.0586463234735534340581188102162821 1.0604363582297865574205270947263538 GT 1 -10311025953513543920781182.2345041950298848525956537252090546 3.0518586490309045075028105502770411 0.0578702176617796436715041873655560 1.0596122407128031675797293284229061 LT 1 -230414336548312855752.0781258143739864297088785937581207 0.1830760996525091917628310287211480 0.0424693988556783405992074274450848 1.0433975990183702828459100131351221 GT 1 -8891076456823198654821934246318.7442456305764406359940908960477274 3.4618210042830684193783503055116109 0.0555762719120248657652531923188227 1.0571803490461968767929348337743967 LT 1 -72132312028167010.1190085750580383721996372121862088 2.6165908674395170750180824359311616 0.0318060097364117064956960835038737 1.0323228086187279172284989501166091 GT 1 -13884166402829529219336477855860066434527086.8061709593642993736792008059495451 0.1764210825129778891324638392915953 0.0833440893002883001152694123436855 1.0870231108406038172848754793534374 GT 1 -22510037459761804142297.4355896857557382148632192786550706 6.2003155488584767484663228210411575 0.0185476825738743370097980269944332 1.0187218477741829291855769452252198 LT 1 -138261781235669213671791126.7357408077311863974432910070841892 1.2441065206444219706132297350540365 0.0416854042731737419606667533734445 1.0425791668949952069678847122089751 GT 1 -400403832191249.2677562977010707095223155746293267 0.4265705630144657257827075141011310 0.0610900158522532704853883453911991 1.0630356678965020396019431525268006 GT 1 -5213618.8555906561588934813237586031981653 0.8694219458516998936560434817369348 0.0929756019309281547710957861596568 1.0975859294833986775277793228673928 GT 1 -8517401224572676676498438620579274892206.3375738741171577259263222456201308 2.6875463176889648720307004687739273 0.0675234630675631214646603932553277 1.0723550834293853014191522665380509 GT 2 -38678567588657615746109954309347257010.1087670714447240815197519450360706 0.3916756907437980452960303897798972 0.0620813004522247537069380651306295 1.0640920079884459210942726708206826 GT 1 -6480414.9625854131013583166207330420488813 1.4471817135258841794357016080681415 0.0436031381570231677823980813581790 1.0445823246214843960526783338753220 GT 1 -1412640017971577611542316815922.7837053983712182577193326374467861 1.7474004643466460723532561743987314 0.0938227767645059270764885503278878 1.0985203814332203025188198235402175 GT 1 -2308742352638389826094.4075233625384213293382214135361079 0.5204692000029961284521115002128530 0.0031646100765501626017777147492355 1.0031696280444228553976851960294292 GT 1 -7660439052262665.8872546131961217065021035277820501 0.2912890124537114597019637184967823 0.0748327370607961259392455374612477 1.0777807330174059481764783991862712 GT 1 -2031507149382549516.0722956138324297977464658004947070 1.0232144133353494829818695561627144 0.0832717367188612218899586168690172 1.0869441829405036011271921891576626 GT 1 -237223.9013231939051814325440039470781153 1.8888213422798906185382128781796751 0.0635069461939694183441018646026183 1.0656131743107329291210530813365770 GT 1 -147192931312323227042173722.4780249373225814833103183311477208 0.5279885808482264904213494288204117 0.0272413382988611268855893421921036 1.0276192628125902974545235624248458 GT 1 -63038334522.3518748400234168990927122862947376 0.4310594031917024607998290029728614 0.0329777608657688601994600936557322 1.0335337857227346896319819122124218 GT 1 -33484757899.6072473644998344427032416778269996 0.4878316362007192137892548882936977 0.0627771497025390269679198955799628 1.0648341911930293482782266414267441 GT 1 -9987405080959027.2402742808337794923141442413638621 0.0226694689606962056997400038686548 0.0434997187658440675745762279565256 1.0444741960776636861251524931887926 GT 1 -10968179897463.4262535178003468507936268455044240 1.4645590450716697800485790265648884 0.0358401112693896118997043355775143 1.0364981384457308741612124280862946 GT 1 -108056112.4598622706421246048993463677101219 2.9663311168160537220550195863562625 0.0258782658346407996000163889733200 1.0262189994067506073757235360336411 GT 1 -488003156441725535493522134640327325.3368926766353120640144734747980317 0.8397744280377416814373218647057223 0.0701432949126474336836626980543753 1.0727247852576968382369647076024486 GT 1 -352286270475902539485107142629.3972628677050294778305231076139606 0.5023268772813853084864458181958772 0.0974934221217937631940559018975725 1.1025793002939543684818952198774343 GT 1 -95575204385386461642687396158399.9195022405771705458607389067946654 0.1714984119470969735375126624399874 0.0279719201787894971245790612400800 1.0283705862340194997762090680508003 GT 1 -344121906793168631474003836607831810.6590473617460117859244892370122989 0.7916407485383846644323280393573652 0.0203051366220018630297732440116210 1.0205141197013247935830108046268332 GT 1 -79405005025820015081693759566.0575691179164965246737122099240000 3.7840362646692069670261706062543355 0.0786415072188138790122763458472538 1.0819060754859101628260323771858745 LT 1 -155853766084528257033094693130485915.8270740209647254260058435104825707 2.9729161922059438806442227632224816 0.0813445024101034633642575459601510 1.0848440935116181533992784615849888 LT 1 -205320791050190438.3754043626736128869922523247737137 0.0148819835424495131131533582308360 0.0698208237035710435397812481077675 1.0723780487075747213018224066918831 GT 1 -299663286275918994672180080491021.1092872017416263335430936371983730 0.2931201995948835067385147628518837 0.0516965633242568956199067155906751 1.0530807470604867451851929975176679 GT 1 -20228704.0761763054719045646581645010472964 0.3363139730455754067652987772999879 0.0047156560323701471103483273669341 1.0047268098170335277828472428326290 GT 1 -923801237913257101.0048651814797671674512906180400304 0.3603256570209818691612570197627196 0.0044088391390130897710579500647304 1.0044185867312183510633150321110196 GT 1 -53467330239440567976627246.6117673050456518750999955592153307 0.6489015967053922935546041247296391 0.0790628512801494170887950676302960 1.0823634874877521442588990463007947 GT 1 -153345071118609327.2641104857130822914873554227273758 0.1738927147906183861727176778167548 0.0264132342439449338931211215698011 1.0267683305030400148867613997609755 GT 1 -429588164979427738904754580600604703.5094218635769125671826234721462148 0.6953455777066436910335472829212192 0.0121357949440110215713857262125498 1.0122100349559140172904974354825021 GT 1 -11193781693217407.6040796273616676526086623949566591 2.4791785061827924785678266701756564 0.0336726115646966327815368990023641 1.0342525907634135268339307739612543 GT 1 -1008341797863670574020209237161745001.3269550887482556685549580327912598 3.6082921665651891415744679889908069 0.0789923214482737430015270056786276 1.0822869055718707459611559959201876 LT 1 -515240596587082736393170489.0893529448301642430147060213199688 0.2177626905030620959958657925624412 0.0464639306919045438759883945875222 1.0475780263319182486080623788667989 GT 1 -1264714113481573749.8148759294600419386746548544575860 2.5769414776111664166520224254080761 0.0399693106905918323167555465803726 1.0407900270005882231420120659926851 GT 1 -38573554951215851.8467081439602814694685096946058845 1.4901756753479235785746142563400804 0.0148043565911114991829456716038789 1.0149150347827944312849967027221500 GT 1 -99.3866425423757443921708102867369298 0.0556451152613349546785423281071308 0.0230754973940767654130984779413565 1.0233459046376621501920416655448874 GT 1 -910790733332902814966451317756.7446266422952578605241918240971116 0.6872537347222931789679697524425945 0.0351487389200328794655902976843265 1.0357813231188435442599691402065771 GT 1 -79178.6309636073399985197215464363293483 1.6375792752079673303034897314807905 0.0974365022892263167470356134201766 1.1025162336758146377772946531987303 GT 1 -34179858461431194276612560378458604722694.0480551495338930031335653635274169 2.5839927779017270469824260764133492 0.0604439814490742408170392280910519 1.0623478359871446118709279258362150 GT 1 -4039559575529119129960859031.4493875707992395677639798116324718 0.2855038076226424020215202379050237 0.0138954213710643939993332342785642 1.0139928664856486230587180886348007 GT 1 -152753459863647.3286292738722412550436123435866511 0.3066471770565519458533840172053681 0.0237980494223632767727126825570682 1.0240857973978791511753442038059217 GT 1 -218164380.5856021272290992479736640511448700 0.4739314053924148252964862537429354 0.0460975711330918641322556077243365 1.0471938885852299424605373169489588 GT 1 -88964913341949777340801977.9155559107363513106258514570744744 3.0313650918483837845763624875442463 0.0952866661228629052505028563532176 1.1001371436074791259433221838269886 LT 1 -56007376935625325025242324422.6345658704722073223525273171210127 4.7220840695360357327488841873950160 0.0441328229582446364180681058278896 1.0451363117320480138411537336323097 LT 1 -2099270408541042592722365247.4502650376222743323345292068007072 1.9744338799662257893651365822187967 0.0600227029496745749942272695942023 1.0618995560838753985200957657639884 GT 1 -16465522757083926794.3811579479902052984828209446207588 0.8468637434163868445642827418925326 0.0995531664534146713902359281591062 1.1048641571456684379033696106113932 GT 1 -1895628256506311.0804399681357171362109341535146964 0.7332534814477611990638524043297719 0.0815925660551411129905559225583523 1.0851141589974402696089767225876644 GT 1 -535184716017098025638170.0284970541412913409572217140810506 0.8185828813941600427611748499601194 0.0518588671543493987341578598564959 1.0532519134980375436219589438626843 GT 1 -1119005548784923818.7097648685846055976756432967653661 2.1711403043233530759069641688078255 0.0229045466300533278537809377570868 1.0231709312307255665490301496658012 GT 1 -2144301631157246366509702689802317.9927341226792760883958635909609167 1.9219586095614517239207092507922625 0.0027869086571508138257210743247461 1.0027907993173735254071456212630966 GT 1 -77911850036.8147345719420188120759785909012805 1.3850203062801846931640658388266641 0.0880746338717889089039719489115455 1.0921971276422369906986875502710996 GT 1 -22100064827897096463171481412.1914345027262117529531536379195853 1.3421970647287013126456690736419109 0.0164744335644980829365109969732584 1.0166116461319726128424443601279247 GT 1 -610810181795336396304821048446959.0684514191128466498355519352020721 1.5988149771031742719432017145019594 0.0009899335711091935851181552773057 1.0009904238789549703425184512826223 GT 1 -2295695551761259.2843597881215504721934092537099891 1.6565467210911919953987178076576975 0.0463978159311038679425881599096998 1.0475086923329697283738827346936474 GT 1 -37535976282617368457.3053367027048054125630827544610394 0.6799858918528794166585882015622220 0.0987981986162441416073600450764043 1.1040260715537020394350901281784987 GT 1 -17291721067971.3227722522562772576615823311011201 2.1665804623852301976710243019387516 0.0764299278324545724827619662436525 1.0795086054833338501748277601675156 GT 1 -156449115151328.2165419024941734951389159929364979 0.4501119272805183481462243452125772 0.0286297245307133999520167299859849 1.0290475492202797838223957388039062 GT 1 -22251052700975312.1606543361678245001451842617108288 0.0191994551344380506975102414323379 0.0313873317018732278309148642391012 1.0318904701205002413930418700486578 GT 1 -95388165046929.2425174012112108692306169749922629 3.3946647407677050389740802531979692 0.0357144796620205403283236564458485 1.0370291553878300542519650600000141 LT 2 -962911687284445987815805780.2205487077277657755502581332903063 3.4546889525855737719940491952366795 0.0576298692905911033293967963643422 1.0593571615049691445284266882015034 LT 1 -336154447.2356372722196241869298884676648982 1.0415041683196641991323677072634466 0.0780877962342063819899471222584074 1.0813052836409576293494533226220100 GT 1 -95672960957198862511832392787.2337285976086743288609258340494993 1.2666032198579634661155035086440729 0.0161487134568130677742628114360423 1.0162805249132107961543715277623337 GT 1 -3.5661411433100300891019258655919849 1.5432507023129382865807338913736144 0.0783733920464659467719882926503443 1.0816151179799243409426914451105858 GT 1 -45502979910209041942.3401807759046157188800043891814893 0.8113690544504048819232066013789015 0.0485466585485061104175244552038856 1.0497646302832815648049821474184743 GT 1 -1064471956591084245586.6740941633260984668191055818471472 2.5256500551346485715478260498022652 0.0976057822050791245502385008993959 1.1079778417117374572703391799386209 LT 2 -20589449634631510115.8258275257053963928397894012522512 1.6120212129593605418236533497340310 0.0447304497090040158519015465733850 1.0457617267132914396298306390090877 GT 1 -21082377.9376404816544164968453351751797582 0.7246056691477506612284085724601536 0.0168131073585949719499805999556024 1.0169560521440273815297593066532199 GT 1 -31098374307139595.7132123017466576397444348408119659 1.3365226318187051642453165794607866 0.0493088192154272190418827162480030 1.0505660002094878573150600009674539 GT 1 -2004688121985380200037.7272877841261682095603804153748325 0.6220243082679717908824911879980103 0.0370995393731452771969640789392225 1.0378052363614626623969737519762898 GT 1 -348567478902673443008726333.4866710027053611134920634672919338 0.8126248006818328026990267242773305 0.0473963700784845480769452777972152 1.0485563800814703732557371276942279 GT 1 -21727201676.6817846927671143452789094524494980 0.6212034786547128498607021168213844 0.0162935936220055452159454928574917 1.0164277939523607754941106283408993 GT 1 -6185811919844148849698654.0624602772986488657633186110439909 0.9421816991052379220897102013117099 0.0877119510159617284578394763956922 1.0917994955915116647537164578250934 GT 1 -10.1898776542796021435297221322901872 0.2132182997735525374504324257987807 0.0095981150615145104322851173942059 1.0096444738443217778179630051384314 GT 1 -859180910714262672587802990014.9078934454505484725988867075917198 0.9725028988419858132261740789490070 0.0433049253362598145962473198461980 1.0442705645670007947989128534103456 GT 1 -173.6068598022686376520432690222168906 0.0059315705246300954187705670529064 0.0482341613419579930213058102317957 1.0494362422419857569568168615005369 GT 1 -15089083049277506425235420.2930862017199252596823678791138482 3.4497037251837637849269173927229691 0.0747438730329069596678533691019931 1.0776846857793065843472127689211155 LT 1 -1466716991584427670.4784089055849330863865995429600039 1.3490883527773237643099057724533825 0.0634742517811910702085566088560397 1.0655782633821866441498920897214421 GT 1 -64466050.0828719923648070347623614904076639 2.0717254116171894700919175671888976 0.0006992826214742227224465313092235 1.0006995272336085614067518825625411 GT 1 -14765579296.0817969488981998150065426003279771 0.2630467427123489494006583438952872 0.0853086429355410656460968385565852 1.0891685852936616720427558237148108 GT 1 -2.2022934276883090602438525503221879 0.5882718315785562393638413132535786 0.0876726718858068650547663400660695 1.0917564408955423712674447548643941 GT 1 -1973968879324491642042860538411365898453.6971095221227698906603278299372598 0.0768160558611415500488441088281545 0.0248273539196635178998820044629742 1.0251407507569366851711924850338800 GT 1 -1246849679945.9821995446946037333112001811360764 0.3672887151465790194781615016042768 0.0066635754317158899830111152422603 1.0066858761741447428984872090372028 GT 1 -220521585571.9084342778753587240621317330828812 2.8180126111790282319917050222590407 0.0922100813192106799592964905997879 1.0967422942419801566362453950847357 LT 1 -48319.2978779236287044521083511584754814 0.0499779725725309273772937354599610 0.0271180476618549836407111949807426 1.0274925275498891286804343614681112 GT 1 -362450953018289513655190.7716659482718330302668429576031329 3.9024498857893391977398919392551621 0.0120508836940206009647571401942662 1.0121240842751238268706356546328775 GT 1 -81463289067156940920305.5758329479732699470221174275130548 0.5200352701998855659702493120761890 0.0743482064629992265931608611510395 1.0772571479514637836699756091894971 GT 1 -61017036020715074189.1833831833425385915785823346307041 0.7921457078731760267309863039870830 0.0866359318753533883509054244348588 1.0906207176029559156626805271553327 GT 1 -3249409059800128676088619253803179009.1844111862442121852802111993741360 0.0140800542868403716999527373692247 0.0255335504168622775258923233534852 1.0258651889667104730630816558136736 GT 1 -6010808909239040823345944162.6535240888349406229511698177510873 0.0640601736156816603835500477768455 0.0479123145751385373133089912385825 1.0490981418935985046450188125680254 GT 1 -14983220300470409086962264189890.2853972496593821588607136070597241 0.6526033112744307306998480456697680 0.0786283735238496785188982510277184 1.0818918208809333732008557247972899 GT 1 -921487151872911780939787965016.6183411450085487049826003681633643 0.9592641339565479016614736314320460 0.0192326070807289734763366979063173 1.0194199597450907733968519406277006 GT 1 -7082168566109530.6324950541912338113534940322619549 0.9767079933730252343787665044441594 0.0937960749801045489952931714673137 1.0984909154630748798830101709277423 GT 1 -588476.7874716410062633151138506348265430 2.1032369573846893360331793900027075 0.0871150294874889896754953341788349 1.0911453970009902235659316720027437 GT 1 -759777362507067664202277781335917.6066459706139379809482935914557745 2.4795987110376634160678410564823863 0.0099852423618665714886037900947573 1.0100354292594199854727420997906324 GT 1 -24611898877481344974476751194485360837248204.9472123694894463582139117241405399 0.8481091175241724525972340044303521 0.0438345237977206353683530782776266 1.0448242886476743708880256479904719 GT 1 -175746783720724093541342966452126095.8050511211674456790087861339907157 1.9999476222363853006977130284864472 0.0292169334258755329649525279712309 1.0296522480361184700584576810345586 GT 1 -888674.0585906860197330142299383705770704 0.0225976547390059873208053577301129 0.0116640947615095860721606597400154 1.0117326539568923863289385507849661 GT 1 -577.4916195084163521338805095313975504 1.3101328151030288509716233623935677 0.0434926917699901631397894871003619 1.0444668495350857716233242037466412 GT 1 -647429415052943322621880713917655785547264.2518515290043041530841458784942567 0.8697034127409671149197939963937843 0.0629207812429908275263290427095724 1.0649874552192547640139141787668041 GT 1 -49246246028323139017041758168.6484351535868280699503619222482671 2.6318311262390214439637813123689045 0.0372918090961748216496666337786926 1.0380049339724135380339366173647811 GT 1 -18.7113180068108603788626734724987289 0.4237949233490457366560915979657352 0.0972974339385582369722701110055851 1.1023621640306426880058745612072474 GT 1 -21275044022501506676173566157629051.9193945318716379446369436714629172 0.0555710309871723683116482760018881 0.0355258493961795998058833512352495 1.0361722478209861153085783526076917 GT 1 -147344403939263667102275473064698005430878.9295142149044769899829391302726326 0.3991263348878744830016692306282292 0.0702023620708291219022066596836028 1.0727883101363102900538083749405362 GT 1 -107.4562939324446537929749171846795719 1.8061666185359999265198077062290453 0.0740217115866826822217499926322069 1.0769044912487206451714816237012394 GT 1 -25265998834568990044906.1075983784986931038600142351323426 0.5524900313637692041917975015652631 0.0691468203527735993685806565557663 1.0716537159165694615207830143475939 GT 1 -478.9987179829695558207131690475464292 1.9680642665749175771322348680203211 0.0656553881622270054123234346165421 1.0679099453798204456306726573928834 GT 1 -46292317133186121456872560.9217728479064648749974319937143152 0.0959954277544272504638847672138963 0.0424391001128114466438736698869421 1.0433659569345814901241449781607272 GT 1 -319361.5536644848142967528129198254680859 0.5255328008861381476272896501353544 0.0673677245558534663414879989515317 1.0697442871817266364397900788258182 GT 1 -978090398604386486.0425576402084561264492720045663113 3.1985318920588129719512985494706816 0.0483164081330647337409257914424159 1.0495226609194026221957028584418829 LT 1 -9800292.2781093275315833423489253550713208 0.5366975505979788933388569165862355 0.0981808691707491931629139224897792 1.1033412991713203515152432853528573 GT 1 -907850412239848419442.1559869362711913936570400554398467 0.1401392911527244741112284473765914 0.0266213185832257562794893937632533 1.0269820829765369256317865888862605 GT 1 -99199416245435087255961546799200.5096687116896745580514221884361777 0.2818190855912121143740045877705208 0.0657706231709112704963073037875698 1.0680332854343532251672842393485735 GT 1 -750771929484274687577312249.7713736809953057513206528019742060 3.4524887129579905043063847056905478 0.0209741728047925599945117075714433 1.0211972555991882375589704271657786 GT 1 -91.8298496362010251623491724091873775 0.0071132159046761365550623973179114 0.0897263272153690198252379538276043 1.0940099853604767911936609191242547 GT 1 -46543099422083165680189992001149811955.5380837623588652868265208638144437 1.3753289292719664984535456463261069 0.0313344650199814960061376973770881 1.0318358918138683934207621044754127 GT 1 -1.4361729015842369612480500556480278 0.2425857543898162288363430428432715 0.0016261479314479343362881707597196 1.0016274715451177839288948761269062 GT 1 -6449506359802086538295.3547551081479507511552732126126045 0.7282533156086695326738698892418297 0.0257319838778227325667669240887325 1.0260688426354256385922843393398129 GT 1 -1700986082.0281942693426420037772603512079672 3.6400139304425930455256339373614163 0.0098337211761867707688261763838016 1.0098823915490435098077573843042733 GT 1 -2083973246511470867648.5105815833611260202650337917338278 2.4427509593020058083916055051078666 0.0558601790840444900366647301521242 1.0574810084275643052789700613027254 GT 1 -610967100855623269420925185430.8540567626681727374670163239861795 0.7978564553517614102219868430612929 0.0734471669097738735499849143564728 1.0762842105002236894152118616939464 GT 1 -3.3847363594283091462046635163667836 0.5273028524608182826977993857230167 0.0541732417238212177380509423879576 1.0556958574870290672043976615371691 GT 1 -1491160307893.3418006407565584099581486721267159 2.1785256127451387534147723393110004 0.0538114576800041067465050175503210 1.0553134250108091398223552936168956 GT 1 -79266851334782.6072505654672587750276024058209198 0.9465252316716407081437815302564123 0.0465778735202496157736641155265192 1.0476975285095038422263795033933821 GT 1 -1314272030861473847163127796732019651186.4667628966666341561818353898377419 1.2288293070897214709243547298670406 0.0098955466293302176867354242963923 1.0099448329639050235835414007168888 GT 1 -49451.4601455415414122621776423049005537 1.2901850416101181339672996568830091 0.0027532770084515057334166010066770 1.0027570742470955669619946830173923 GT 1 -14970.1707089153792345386974488927772511 1.0211362100137324454153883459733856 0.0869240481493132766502369072211514 1.0909362125255361085465383927261178 GT 1 -46213676100385992522161201975691465.6631917213026602364304993470615331 0.0971150967702731030165644499070048 0.0980463864675545431086259098980875 1.1031921864808617534780986045867738 GT 1 -391537.2034105003990782279601979991327800 0.0028654267129199203460904679932579 0.0341802351807118678183130476091338 1.0347780410396408425825824777635803 GT 1 -199225711886207999680.5883411590824186375347669997470346 0.8307345595927232065400435590789217 0.0921424129790238151753965681301753 1.0966677551698246931077479603375880 GT 1 -8457067670365.6132133468283941363256759645950325 1.6640385487118227553302286007271983 0.0494204290448759215863066510855091 1.0506834057178561741733330563734471 GT 1 -5228133160712003453355553900435.1889692737643503623674943427727860 1.0785224289236113336959697024097170 0.0852038582012814888575472428181680 1.0890540343776928335975384373806712 GT 1 -220.1058111881050606950219627200168993 0.9347839648616778331489031825788861 0.0091041384820397084833931045394210 1.0091458344140861887355695926464279 GT 1 -7050791638847900051410218265791164547.1515752033133612895444761354108046 1.5424993695749284275507735638603425 0.0823285807292449932035709970492108 1.0859158835118731825841073603840201 GT 1 -47064996.1797182086607556106950131418804126 0.5755242677418551062411887020465662 0.0318790112105950059313871987438477 1.0323982110971548418167151316566271 GT 1 -103682432188954108382360147626699.3271801693220275915701567455550670 0.9575962148944498987379982151271071 0.0071981231342389132393610348285140 1.0072241546163296437696657520516083 GT 1 -893566869779163689171686361831.5223779812567286900273864536977062 1.0717780808820367317749682268020464 0.0668082011514924078327566423187109 1.0691445270769638554791088785541525 GT 1 -15045744029446682560565.3637477827624781363191152161486689 0.3801926290041941338249035033265574 0.0544069267247950588965608759434473 1.0559429575737096691328878013593403 GT 1 -10197170771302.8018680818210896406598890126597376 0.9045234776431482785743384337881141 0.0407441703011504884825930829335259 1.0415974725226436808916465779965209 GT 1 -23611491390.5580350574452851594057113597715268 1.8163393257749223851337349821541770 0.0123009385143356902091175090629207 1.0123772212703249215269100408991304 GT 1 -232191119807144701778723850768522.1877950193720301173094698172421472 0.0511263440238152554928332180186347 0.0666959568140105392719120475298475 1.0690242542801117311962669333665534 GT 1 -586637518946705820618694817758072935768981.9702757520148239332574228237927888 0.7996667655041622952171086938047434 0.0643981720800942046391331023614505 1.0665652905332074087940766330968838 GT 1 -10464159690000810996942130273.1754701557192792365794238347781393 2.0134187943728458551440973631269879 0.0039168465563936654039812359036157 1.0039245374892382165375084196644122 GT 1 -14056714.2022105913566025368227346705086576 0.2911915070299741390784694172439284 0.0573495925481260553861222570334691 1.0590597888887494219794681322054540 GT 1 -244623357179061802593592834889047.3767330877123665679603403758021047 0.8997546157734925079118701640144164 0.0661220906166030188154412045419537 1.0684095673025657307522603939102005 GT 1 -467031300957459776435.9296013790493914772580667919805741 0.6131363470842719260104901659108960 0.0685538536340948196379345190030664 1.0710169044970142847498994223402463 GT 1 -407279533279.4253721471033736661489021298493930 1.3936915322158268732683223585959627 0.0142809553535621577439173299563470 1.0143839095615705709259075219060970 GT 1 -2829625712479090928523507.3918726255977170371581485368343209 0.0670651384373706739196299021381346 0.0305998138701370110634292568966408 1.0310777635656570643122188457481967 GT 1 -384804816190239804.0543072658709228885314964482107025 2.0768968562513071295783757664784230 0.0940819669945676154911247399171520 1.0988064483283645624667528383953353 GT 1 -1191602500867302358078202085245563794945.3563963622831617104648407660536579 3.2520257411040082457014516307751183 0.0077056265504080696059110619108128 1.0077354682890499591017898517277467 GT 1 -692436340907219290335513265605.7960876756325685859637068602323789 0.5187428617092358018435043531331472 0.0988239032341023501899148002708977 1.1040545945597667942194041804835296 GT 1 -11239976594428229432437.1285453505897134328711970903933135 1.1049901876373134192777405308612766 0.0537200443352030026094997317717878 1.0552168174900292240173275365075126 GT 1 -5610690.2076916029919990952022067679559573 0.6859339886068395916236727510275637 0.0746160317386640520381364540757498 1.0775465267771582170880019279622178 GT 1 -99964285042380.8425615949408342125518185709762086 2.5972032980830219684453908743989375 0.0753273562560417803665255162342865 1.0813821617482164766856929407552103 LT 2 -14892151681420733359674911231434588633284.0968491625265743745202486747020711 1.2803937818680314125624034111744611 0.0708104946944783999325945073022386 1.0734425724829386521529943781799179 GT 1 -26591921004255994622892.4954371442874884450916470803912093 1.1354544624797197657185990992251202 0.0838243919764803948787036537712753 1.0875472208662992065204155290483891 GT 1 -38587731778413493033021833225888716545019.1029307572102117708606926422373034 0.7657048607189113544662697368109249 0.0006416620333791034954417366028631 1.0006418679865679174402454654569444 GT 1 -97579127279961322210563656498592.8696520115531680655852858219557195 0.4043413958933542048225810523275197 0.0549646166690137827370724565154638 1.0565329095110615864641446669339181 GT 1 -3883607928.8079774846018152150802372405770897 2.3366174296896821334243234462756274 0.0774397572518596113344480164114723 1.0806026014076324982619716642226518 GT 1 -836475572852087370023224743788840201912.0244740326671877260929882404915778 4.1136580186856931524684858946690435 0.0144061526833367324581019467556158 1.0145109287988041138348699404521853 GT 1 -298175636739654815565790653.0229054961527701745678789453950632 1.4622005670089121501584913968839753 0.0841149510150214653599057100613158 1.0878644145573112204302787946936517 GT 1 -73986173231711384.9447907717111343683925314693336289 1.9155769416138154320084796551142620 0.0210420991842359368143709439418274 1.0212666396073379179443023616640652 GT 1 -5959289246719739946150493798020876332231.6928273648127298452705768798993309 0.7590128823739442563593236519836275 0.0200811126000631939990344804247573 1.0202854787022241579381767363336072 GT 1 -19.3614785479475237327577890712844949 0.1268238152601994042515699406363035 0.0468037219694932014003054666349463 1.0479344384750907265990382952249320 GT 1 -6036593911808856185810035142051956312412.7595322367510693165693790890040315 1.1156224170071655215951953123228025 0.0806483759698055510794765821336996 1.0840866138855660661048583936888932 GT 1 -24616372801108422153534778076406283380.6557707536483328969977050200684328 1.9708067534328664288526000511954523 0.0481835608283346958196165211033526 1.0493830787783156651622349072549423 GT 1 -1229536290871462396.9179664261869910182098433552123424 0.1316429126949975030478938316006743 0.0546742031116690671856970509325200 1.0562256522919985308149460779322132 GT 1 -19690596806994576399758482198494.6958104898458991581422098523465156 0.7992384373802588598955393708283261 0.0727012290365420500375177080527477 1.0754794665694178901674852828749292 GT 1 -4003080.9844955089959746002765545266830044 0.2694859566271673963237847384413887 0.0332903019996492912984750124831549 1.0338570374936756539037325676222218 GT 1 -30530444206069702857785224.5929431427924887231350766828205172 3.2558888729604546608518497523959420 0.0244105066008745199971703408258499 1.0247133820719520733554238285451850 GT 1 -34353789423295428456485729152687.0996585544657874040417125993366817 0.1589843528054151463607329856433447 0.0056163090257740819391591811245609 1.0056321397907811651508113609571839 GT 1 -1177992056234430977835393569211200802403103.7106838782224635080913799603900739 0.2154393202804012517359036340910550 0.0598035629356168569673335281249687 1.0616664499500390883976578473878237 GT 1 -470160154153605711383653043529.4965209330803843866742540021572903 0.0029449348119872120487634079349175 0.0429103559514552935958061433090952 1.0438582199740722151822168099661163 GT 1 -38517641975771604278458498669.2100076225540605095231404879510731 1.2339706018784958705518843159328946 0.0245628498039179800133616579696239 1.0248695492917624065979373585062884 GT 1 -4124100069145819473551183699.5804693126784861379295328910817202 2.2047581744650504893234998097708421 0.0694277800279568680737961185948426 1.0719555917557778091401638110435317 GT 1 -2570118517217667961360051766117256057.5244549476560713572143470197578338 0.2917037700433319900137832991689328 0.0161796739717053091678910904685611 1.0163119941021719919862207481689379 GT 1 -402.3734927381383619056429865898349443 0.9922198556874738531964472242761014 0.0045420106346513406807482892524122 1.0045523569054219345660364315378607 GT 1 -47235.9869254551636322345191659043070178 0.4801128881737030366873982330339725 0.0891041348338947161145745775467194 1.0933266965257842859337018827386077 GT 1 -1191652438282757755260.8147677495943689575100150525672960 0.4003074702035417453695478274530797 0.0702657278020422220907350575420197 1.0728564624824921790089328736422786 GT 1 -13899207664394421918081667454830361443454.0095422601734621933996376106855601 1.9293863951706650585011467990905289 0.0510895342817060685036324335296787 1.0524408307468867429613330361744091 GT 1 -863659.6660060704629867723004116816524413 0.4977768204072773812568364640590240 0.0927346006932634819289457998399221 1.0973202594240390779556940783825102 GT 1 -67892.8871768250984172579394907349102292 0.4798300595965709403986772146556462 0.0187466850191089215403307207831928 1.0189246315667504051217910007261432 GT 1 -2.7194476392589841951510005698967467 0.6740061251911419912774000112249410 0.0890815790087340355819901675232403 1.0933019345889247298335678540115878 GT 1 -2267428601269085210822410141200067438.6270678564869698935159344623437977 2.1721562957091641494185755128290805 0.0119725965911972463052237864189992 1.0120448453751842493732082538811967 GT 1 -132252803.3995131576567609648874593397056942 0.1032689599841493213156371762644149 0.0978239361547547398528131302494183 1.1029455852340484502326726109548738 GT 1 -51598076913421155299.6362369546202085010522700544890169 0.2212658698011772917015419252234111 0.0630692905498434883511769764438229 1.0651459488375950035621039919420783 GT 1 -3871538565762936341077095.1257078186410391025522945655438748 0.3799883666033829581703144534920739 0.0166109959763275790249885538838472 1.0167505056575462613130934151086398 GT 1 -138310536339968487885045041624753520027615.2001759946664633618157306372839703 0.0063052071671554227024173501627294 0.0195892128108589630853414480742960 1.0197836245438092978677115146972523 GT 1 -10622546569460407314.7577923080003025123964925040042370 0.5378450967169153614988099106672067 0.0988096929755436968669862258330636 1.1040388261138735909634224953718655 GT 1 -17541076089045381055725733110518080.8322670007591399470220482634271257 4.3114217971040932377201622774845395 0.0921357998270493296780852325565056 1.0966604708468395788400288928867310 LT 1 -383302608984856638063498526572241.3707899364466210035507296466379311 0.0558977346292603937786769725173510 0.0404291196020278810540662944459026 1.0412690940397969759149192869128564 GT 1 -5246469241687229071740273323798416606232546.6625315368057770755825712636766989 0.5957583587039546007111212091389178 0.0589873869585484967289146144540990 1.0607987356168206732081883028500279 GT 1 -18169.1125783481801265704155901874088915 1.2900172968072526434225214128136701 0.0135411527283943762271358045703205 1.0136336702825482669000677634311689 GT 1 -10994259562776788447085990729891.8618063188889644625431686880300704 0.9611074709519856499030905677840513 0.0979720740869588058024412956011393 1.1031097994064789264587892232938811 GT 1 -151912891928245223487851.3616636839537570867336278227477613 0.5795355624232260125214034800480803 0.0845790075118214845313584753731063 1.0883712184406855882517348257877615 GT 1 -5976617227757853791.7366754590075665512106585880536868 1.2729667618464814328315673125930184 0.0812965131892540717631936216184473 1.0847918563372088656992339917245759 GT 1 -106844854113745179962010211574.5868814971746515117787823286151859 1.9336604793667174590546563666044721 0.0445680752938680904487407640382180 1.0455917635687064890617878026771692 GT 1 -5.4586958686048308291378561730067172 0.0640027495982365550285334312917584 0.0186704266685250723873809455220116 1.0188469193324530784105481796098838 GT 1 -25103483331730212260256831221477403406.6665796792458603476748391562193790 2.3875691373909368067002538795665657 0.0712278865307629495675880986147669 1.0738918733071197432082720591772181 GT 1 -299230191376740674786498157308114.8687492054636166360448168886215326 1.4435036315785711152993927723093573 0.0074735628842724810374358349729998 1.0075016298831266189719637846260303 GT 1 -35833265192912091655928892390628.4301470733046522629751140264435375 0.2102873811213987893643818147056734 0.0455748838906329858834119079536905 1.0466460924200427236878880513211841 GT 1 -857878164942514823512682768156728.9266383171924188612736047020418910 0.1618922308187864315337272955719282 0.0674628882817181461457744275404799 1.0698463301667790915935502438594339 GT 1 -133030399316.4399972966213019539498369841982619 0.9226734172156210612774426407516082 0.0019055048197946583062626756492027 1.0019073226036681321297376677057234 GT 1 -278290.3931617900668033034828366562202401 0.4704967113548385792709346844871656 0.0917627086647775517661550024680362 1.0962496004530153380103959492803649 GT 1 -90582122392544198693782924730604049.3540682829254429053957017787407817 0.2720079718141528962326299732697105 0.0457185290076781836663999076236280 1.0467966080815771745941521665899001 GT 1 -4320034066124553836446594.2349034874333811023441817521685064 1.2665441276778126935955222575545431 0.0948482975914480637195796706429421 1.0996527223592661344960723940032570 GT 1 -651546987160119.8199726085235547317544693995091690 1.6389262686569437304574168037605555 0.0978071134059903770758015465860881 1.1029269385501086108877108203999637 GT 1 -1210.0270786537421205785906758434932010 0.2565522095125049722506061578900296 0.0780210762176283554465358772888444 1.0812329149250282201971186526351595 GT 1 -2824125475337148380855317.7837911452676767301743978383653594 1.0019978747784937943533530077935199 0.0263244067791778294196692402136018 1.0266770973269667211605256269149479 GT 1 -9440043018038177592.9997475325638201824620572417209604 0.4967000713136682711321984144408487 0.0420178219901596386471283820684145 1.0429261045143410972117380418674683 GT 1 -30811822984349.6923488953026479985412318344006870 2.8105327004679033258885417377076153 0.0375067741850047166916717014373029 1.0382282509592560204425975950786347 GT 1 -7144170397734184590327517930450.4813340784897912626655062085468422 0.0848128515223815609342125694365982 0.0729472451382558693465713834765579 1.0757448057995810979009662363260472 GT 1 -1.2034636526351179209499818253731091 0.6253173489996153288699874466132673 0.0375720893061898388753428347053428 1.0382961136056485366120232474427086 GT 1 -18458366302188149114833691170559032977.8984934146507997483700893704546102 0.5610496828180798431866668777999062 0.0545821006004295295011649505562939 1.0561282276526957926068295155884050 GT 1 -15239295589193551984733197418049838475879.6512584885452763360695956314098700 1.5803322621945510564077706344022068 0.0466480754076325155083036753135391 1.0477711627058315581280986688564453 GT 1 -961583755570198808044513361687113.5285985582824693841740639048797843 1.7711945836777476759906945459323661 0.0622486811662829240236850952751098 1.0642704836401993231845440842010713 GT 1 -6602151245349768245155668083.6498583802198792159105020833509480 0.8813225011551307749595818465955642 0.0710844782231085127801429331141626 1.0737374788812556633883883188687484 GT 1 -327413855631777847857467741922038959288676.2236582353304429900263928952262872 1.1994873019590482570714422826716672 0.0545005738555297652873735108592902 1.0560419978172091199918707770487110 GT 1 -3315972940659691139833911718.8048759065867666186308694692860965 0.0026599761638706818777083682030440 0.0984627470650438809039547668435495 1.1036539139147266742252410943819232 GT 1 -10834950146647423514271134183.4118037173982929402404208455377101 1.6433791324273489354809792364419175 0.0218772054379600647348181103676521 1.0221200600170147318041683348965233 GT 1 -3846576.4385544945295835585616378212863306 0.5077686978531348269726682404502196 0.0702266449645184339520478249004652 1.0728144267984679190846362723861028 GT 1 -5936052652723451260213392858842641738.2507381495824880344020444901847432 0.8520074355420776686343311553534741 0.0440026396231239531719567029429566 1.0450001270466019874834809980364385 GT 1 -228643518823654923378734610554538.0069087804787430380992721752782186 0.7056175982013775305382875598621241 0.0851826361825489093763213756287838 1.0890308360151223909813176712968246 GT 1 -45452610008663445.8411839742567760485106709736749414 0.5842162536088722786536147747489908 0.0533074582474801329893094341135796 1.0547809040313613330124145473450969 GT 1 -8272500059090225812103896807462085269.9951634478830667173827660047422513 0.3589721922905277087853865892976577 0.0587995532949170804399302882562696 1.0605991475167569678197654394640777 GT 1 -696478688345.0944608988750783961339888548324743 0.2594259865482861688822605437677633 0.0347433450263251065201581965906284 1.0353612493019369342657113338569793 GT 1 -72048386031225827.1235257166220719004334579975585465 1.5684619613993058664600945827443313 0.0134560518855207156227047389758081 1.0135474049785908213295010988220783 GT 1 -91455897900269.8917903547312555895208584885893792 0.5623635384671769787454025928948367 0.0210106835792970597973973873534836 1.0212345492581548441083813976346005 GT 1 -119687178583749727322347513.4216752254121191452021181031996099 0.2226552573041496496864171190333782 0.0905301704859288463138525061003102 1.0948934541810318477944415036423895 GT 1 -130979557405579845892289732953398324136954.7602441624682607172159125655292860 0.7044869276083587150545750356501795 0.0239651852308593077022385709778024 1.0242570223352137196129411688578522 GT 1 -12665664669.9771205047880986440588655551796878 0.3103968673200545959413884660196811 0.0634660788214479801057056540186752 1.0655695365275362831774261798470321 GT 1 -7918476.3617118983253628766462741428412638 0.4291647987767289964084287301974173 0.0083191988144928438028226706573830 1.0083539964757841341916400271529572 GT 1 -104931121626149439548124.3709047347003850460539302348921263 1.9716547434669292352698080957702736 0.0708996017342212347830268967532211 1.0735384746773593202245839702515207 GT 1 -2638930129935109827100512.1646435322370438926026751082469605 1.6461175679038433599690607858582207 0.0584270977692788664684429124207488 1.0602035018797425306510945854895255 GT 1 -466776522919046848007.0499565630592506279552041960226429 0.5051840964864439207744077324744573 0.0718799231337090849172756930457351 1.0745941613916288235533522538959721 GT 1 -104927011226525436099597936961341334604.1565787806353690201475508167884530 1.8016360940046619475377869969989662 0.0197008414184778255345595658946363 1.0198974900423551270460819317096102 GT 1 -132667675788809939042335267842126647.8511776628751259546578258127130520 0.9056530167971368470461191094819844 0.0915877503197290116095248808551604 1.0960569839448343831323904262888035 GT 1 -38141.5449218745243099947437843484335502 2.7200357683909460249881597192029085 0.0098422692445551368163977413654384 1.0098910245488224048479286181633094 GT 1 -160251893721537268490675479819490959831.5843766934460585756319662539124759 1.8070681218046661032521139120235870 0.0616542857126987037233742155997740 1.0636368325411582865017814002388386 GT 1 -21364801103573739108585837068054.7959081497006238666801525399944632 4.4011766995795545917836370087820629 0.0238243570498603006525230025436070 1.0241127467211922511590327054276568 LT 1 -82618966390498.3395939120700902537913223066943256 0.4522204164396207091181039581612729 0.0106337195710115282077794113186725 1.0106906615970794999631589537050387 GT 1 -2982845046743141715894589934754486194.5495777944548747066870325379408274 0.4467946163797985285649277176434778 0.0136662909411995373113675672997028 1.0137605343185782558560509620026578 GT 1 -5248404820688421601822849762765.8869482097281519610914456923533907 0.0318072257676101141602338132444009 0.0952182674968262115945679211635937 1.1000615439251809100621764476654882 GT 1 -455062548889.8954298585610544522204269734762875 1.9073928222038761611308133536977590 0.0196974300606180387955612319685433 1.0198940101332943880849766091636801 GT 1 -16657.8569289457907668384668274049768055 1.3178108849984063448092022523040864 0.0587371071227257491843926188658121 1.0605328023498671932486377564276549 GT 1 -35690242432648050786064575.4912931385868133125388215051299071 1.7829041503701052773079821485800524 0.0932842411101841279017146974816183 1.0979262639916807770138372276217860 GT 1 -343701587436336857505197539046076.4386148310913098655413252246676525 0.5296317239952417850343568485918899 0.0599768767956060455464852367557732 1.0618508048670310994240568373288476 GT 1 -84613631759343489479660443346608.5487007964541393211011698465776547 0.5153012972313218616804624600947069 0.0238554117161039173259515934664243 1.0241445598077437402668800803887679 GT 1 -53571100455347.5115781486491032931278790273592400 0.7506576795160380902440383091951545 0.0057764649919841227660155022642167 1.0057932132943506801931215986410304 GT 1 -35820421667397171150575360741.4161989214008409960489698799116361 2.5685445974403364246003632509827141 0.0139581657093521557278869112932216 1.0140564969928948316169237630469447 GT 1 -12.2928214674671774044440445099226985 1.4807981340209934794509794661046594 0.0635322558942685547563870177571747 1.0656402007176165070050011368080391 GT 1 -47291345440.7150914637956308488289113007243954 0.3795617457587420666289345578386267 0.0692960364162746653452254353104728 1.0718140290870388448834465784171694 GT 1 -25801486959938.1364277752729324578953958974033777 0.3437693228564822195166969723337367 0.0983068547541450664287022404444531 1.1034810105392684292351570442999019 GT 1 -3691531841883744887802912.4522792189209794306399057898102174 1.5942712448702346707686954236294044 0.0232025471616049981734747869272938 1.0234759638483428536009260300050256 GT 1 -165447692429289227752883460176308860160224.9814183354997044673524845166389439 1.5124426497892059208058795014183832 0.0816786708417598714116372081758796 1.0852079178456834515367928092613054 GT 1 -13011759071.1767152028638025968370743084104173 0.3244651075200632914048186363540467 0.0803385355204283422929445621220884 1.0837496500496425134785960422786972 GT 1 -1456.6469843137987096339671967807299510 1.3525352489499999337161355796828505 0.0709209344431377005341109067935774 1.0735614355477518036156808897858449 GT 1 -39799862966261414938108223.7571388838151845597208480862059047 1.8245730354630062787727572861978214 0.0388219165222151790541511928207998 1.0395955765889041248604576148469809 GT 1 -2446934512081951810549635558364289.2886415103235352365278423395802901 1.5836224671148316881097195251279616 0.0974394851622509596885894210577184 1.1025195385712167374436025729113573 GT 1 -37672860801165077425.5236473829891235786647947050063587 1.5749951622305868036597812200603657 0.0906118622215333790489982580358833 1.0949832816850244391166631703520126 GT 1 -7499325293881285098153671349.6340396725189236131627853982772068 0.5111607644408275879224529834010876 0.0552117052248790954803949384678618 1.0567944032791160808462209557483090 GT 1 -1058514.1051138134766199286517329620172191 0.1385342280190732947371510479768258 0.0794891914895125695431932144848056 1.0828265363784980792836932740968255 GT 1 -429816879174740479253246613358967.4656380713988963220542901119346468 1.1418519846244935408726098844984854 0.0593437223498087384423253335036005 1.0611774796108172661898994849079909 GT 1 -114.8978872729589564220901050535256754 0.3805737720225127029882482264155551 0.0856687540639698972592307072729816 1.0895623596871451181884288607306090 GT 1 -4760.8954999552058852485008662586671471 1.3242421294849093404283156783703427 0.0626536502938511685777064904097222 1.0647024282163771144731286619477279 GT 1 -334828931.9422064901444841232599761838938627 0.3326255495326972055982620063910879 0.0164399526059986030174290996370370 1.0165765882186203980287273792207638 GT 1 -44006161181.6364687751624235681353560936610761 0.4739814121740605083403893540603559 0.0761908239202080727339386207481942 1.0792497480626840467237585896759524 GT 1 -98546818291115948853.2279739077809106964073922771144028 0.0307003330446159351339185225733597 0.0815606022520195272055290167030157 1.0850793560921862106771922211641908 GT 1 -5006151369229907902009417352.9730791438874845491163149217942300 0.7631946954868967097399038807159214 0.0186924860433866601699037510904615 1.0188693986537757969883451938485382 GT 1 -19135477534222431662485548.0183298600921359955699818043062053 0.7092824229342935060981383634907164 0.0984243061783357221070403541602530 1.1036112755577861077739838545648793 GT 1 -1561541061691854934063615937.2830489655520030423654839386708069 0.0431418914180077288897158964948808 0.0235015140498983824590884758337277 1.0237820791529325013843692603387939 GT 1 -2418845181518406265629993861264935900360.9312004152128412691430312408118647 0.2413924913020543119020095437117566 0.0595063678960886546249648031505898 1.0613504010200487715237074590488986 GT 1 -270195617406189588.3695970003935667271664439754873059 0.0016646160393782400855120690310503 0.0203571942234912807995419988659534 1.0205672576594431928457635321230118 GT 1 -4462252885494271751.0800632155202527805588536604259812 0.3860107455567691148240841933214591 0.0128012903859025574322315915802300 1.0128839329488681220494386928189404 GT 1 -4425979611359853129434.4618382827872001511477648590822534 0.1976543700496126359225592396317943 0.0627209049208318528609187579477959 1.0647741808186866824990260678547988 GT 1 -31308669698751354083.3919609885876128338790888621895518 0.1016740815975854616798533181321380 0.0381516386580790585793995135908218 1.0388984692838166971951125744559534 GT 1 -4593572855778036489126835633.0437058956609039241056303622665102 1.0376635712685012473730332002037481 0.0299476111690265584876855924679875 1.0304051998390513646825362860865341 GT 1 -23457203600433852927.6166426007800304393463776178951182 0.9707079754939702703443485904447868 0.0252960115514144810265432037570171 1.0256214556717774775275925841333709 GT 1 -2.0380373757386516253966511423085591 1.9967559901198791221341704879211716 0.0014178517623510853215889218928087 1.0014188578652767407033198743326373 GT 1 -11762257150221340734295219585065723514.6197830066846849374611328504035517 1.4185655880841919429568047549554048 0.0515935661174403001042035575035640 1.0529721408803675704854702090221306 GT 1 -101254087729.7995521626509268567448006045505426 0.2078632172455263302935298611337741 0.0893663982953796464500524131085214 1.0936146561422133732572109934094229 GT 1 -3700984542962104.6843516959479555969826336860182522 0.0840803379625675227278082070987233 0.0752311553603467390423715526389856 1.0782114703862030638522714924385504 GT 1 -1811148931626039438802.0460871511311712646583186328071542 0.5520893146689104886709333626260381 0.0800491331496385384348220487605051 1.0834350159626139467087232533487046 GT 1 -110197521374869998954617044171713932516887.8593148699478664742947910820261799 1.0392623551957332495509071474257476 0.0615745051168651208078217930710470 1.0635518135516386174671070827980936 GT 1 -9241630545298823019377873294682854.8675778924686532144066810581726722 1.2414820320235760572077165741882536 0.0683513145059883540548142053663053 1.0707994822537223011999894980884377 GT 1 -32225821484189071632280438.5700350168366314021486138497551334 0.1277404519861457758588362454383055 0.0902250467985267817864532751731788 1.0945580142301664611204470913614724 GT 1 -43563197951723079140278747.8583080112453249398575352980897288 0.1886829190669275797305375261512976 0.0118433786167945212525747993442078 1.0119140701306060182927638321728568 GT 1 -320482887712.1795263415096883940268480096695803 0.4393681698803432025499848450129318 0.0018521352153904412487063171640895 1.0018538525386226501238114769232438 GT 1 -4217129773944184980292050293543968530380694.3502151028607443633728095176095095 1.0080868622888224378129416397874463 0.0446865452294497495355290820677917 1.0457157674647838563444479829655931 GT 1 -197873491174391804787641495590865422078.6140626130310668665156829191338249 2.8799773257114461448767557975353465 0.0716092793535453173480909916151731 1.0743025996270071384343761256826000 LT 1 -4411379346766670135636.7942768551114226528149432065082801 0.1946782766240557169773768735278871 0.0161532374012828922955808485866565 1.0162851231232581205851353972142693 GT 1 -18587468561270482704122711551517063497476480.5783171812094738174639970089925130 0.1968065914808835125595463452135021 0.0070853721628801613161808069508655 1.0071105926136843613925498759251011 GT 1 -3.3462599880980609474864747340579534 0.3121895224962137028307649845773765 0.0222485155535208185806979603865481 1.0224997471206354444198783881039956 GT 1 -19385386072002359003731439187.2113219371876340767922945176236165 0.4439054947683752488519392457574227 0.0477308636866455937336894231424234 1.0489075779331360604478709126017740 GT 1 -27.9652720300351141743770436543263777 0.0925190357217959107000384143466643 0.0811721494864515769531821623530383 1.0846564967920775475620801870563040 GT 1 -7119076386714612595055366027282587393278791.4837169330972002730964973202160539 2.5574752281876662158470273194390501 0.0152468930801230877782537731001786 1.0153643221019512382240797540382824 GT 1 -35277.6372309666298153814462886156774585 0.3120956782764478944705891786926136 0.0257986330597584028662713868434135 1.0261372544693923716279757247759474 GT 1 -29682121014466166387092703184977924.7427264725544178886211418426737393 0.2134973249240590158935412673818195 0.0939816017729809491018698640304935 1.0986956660515039491724711883399178 GT 1 -1650628678372406415541908365.4652778940293630651270281562003108 0.3424710863928180895741278340433648 0.0983260932040379376713108077087178 1.1035023466836454919299907456522522 GT 1 -32487510820078968987384247.6917020488540507552041590242099155 0.6659655874917880712313338442978503 0.0976078900391197768631404893928048 1.1027061416709809434473713394801518 GT 1 -415063758836457030128452065518996057928019.8841380835884404868226990153085848 0.6306140151547751802655752272167460 0.0085183396120253470799633082930160 1.0085548280284788487555190192571351 GT 1 -6720903101668671068900780578501825062435.4134912653293125375296151066141562 1.5450962846478804610972992407029902 0.0587249648058014038407483073050525 1.0605199024058677088165763328392068 GT 1 -3516824782192860.7812119812214004357325536690675389 1.2414584450114376264746828324319306 0.0991061796753420427725599737658316 1.1043678747947579926799825138286470 GT 1 -7490572154536899942758355158631757181.1376689933078184434829026438129858 0.2411903479928856331772191383826429 0.0453338612118759646660152940631470 1.0463935925152641849439458085267287 GT 1 -942234545452945190252126122290.6412422803777497379331467862749829 0.6434298610193704098747680162008945 0.0151674853018127494442444456056181 1.0152836881071842297452193497976423 GT 1 -1335919003552533415412.1041187084868698492306494522727515 1.1307376959483194210130452231628883 0.0399975005987611603525284378164680 1.0408193909806872170039526481356755 GT 1 -824127909763.0894914645045650625245760403838125 1.8085611589885281038159545198083014 0.0094810459404711158710416749764015 1.0095262771765145951512609098804710 GT 1 -6011064284696.8486709442161483587586139457282251 0.9600678136183558570894022433296632 0.0998036268524452846532151398682255 1.1051423470721510918130690931402278 GT 1 -19108125861.7400047183227281467948326153638684 1.6741508958913046757831014872510713 0.0745026642241919733372153542098488 1.0774240256590513213058700244619887 GT 1 -85683354479891563810.5025731188298862678390370301600292 0.8918694003941659405298725001870117 0.0939913799555643689681380948836618 1.0987064585865874960743874365975081 GT 1 -5173605365169907745339514001704180310480.9210021860433711221504410569612227 1.6602903965749170939012591066123578 0.0968933786633738617318496778952967 1.1019146579654978638787952772860685 GT 1 -1551937365.4117597022586570148081515470073727 0.7919789074295184120167879412722479 0.0642305017209425086646094878768923 1.0663860953545135785527746490309148 GT 1 -17.0830189907440288440483064493061322 0.9372739194763245910278598463299905 0.0518267225975149671782583217557286 1.0532180113595906769087266031103726 GT 1 -155869234287998130909476895535.2646447849550824850078211278711346 0.8813139667631622697862281297041409 0.0211825867211095251504945522119294 1.0214101571357318166553499632956875 GT 1 -5386141679092233596885133.0296499358100984622768535456071892 0.8662344888388439245497405289341578 0.0802499955132468366025645925207896 1.0836533801190221033895883633634005 GT 1 -339480532605014469413059296118103567182.7419486883120864440692062269814680 0.1198833226211653554380807820349775 0.0433564861494484372167565963351657 1.0443244607393882871324432987044815 GT 1 -111260718651473314286555940.1020020422057518307051961485585439 0.4616272997957088728156736502836410 0.0621860379854909378658252698538394 1.0642036843861771445733578371178795 GT 1 -17338844297281097628.7698891260047436694172274219010142 0.6064770538739490196061296521219717 0.0619960218186155769225977826825641 1.0640010888533660541310579566503484 GT 1 -242487876085316343299388089018327.8761158293063697865631113805273303 1.8056948362566280781002968325241744 0.0282948690059309381116560510990098 1.0287028837204401740913240115035779 GT 1 -133.1877785730490943195163336014078816 2.1218142311285731366636319835277694 0.0766611467600244618192087178845893 1.0797589902484914995043023032156588 GT 1 -114664676873132212703991551804.2016580806104487198151334238674077 2.3354666754262231526424849431986821 0.0253886535461974163505823999156468 1.0257165064757125149643897660439275 GT 1 -276400372035192047433651369.8397743984179854272806909388582856 0.6729391698106351379408121450877775 0.0386527644353579444721973568402544 1.0394196079443112220642234551870969 GT 1 -75821544208148020362093342153089.7814029862083685347732783431480461 0.5287875614006680735968036894868140 0.0302743386827550784158988198677518 1.0307420708710680068332464952130926 GT 1 -3811652713293223506871.9028719823097432095107345151259290 0.0490055720834646739372048307269059 0.0963775871582189567594798369652612 1.1013436907541341023702329981032062 GT 1 -23732.6857078331650189953046580532459952 1.0587870807370886290357223572381193 0.0957177033528365657159913352203974 1.1006136922854945215796684295702048 GT 1 -4666749564300081884.2138684698957837689132692950461065 0.1942690085151475514882218981325762 0.0700070902521041022897892092152004 1.0725783167908913682025641059696608 GT 1 -1321427170987276605324684.1846260955411850226930761563382804 0.3828978980966297793786774207019568 0.0859468277831918014904083664010515 1.0898665339281910222355529993837738 GT 1 -174313998997804802421370888223401289364.4974634577019076318999317046393782 0.2264649609594206532593016712727037 0.0499583803413474186179835069254396 1.0512494851801851547725691136033716 GT 1 -1091085985356406906863151642637907.9147761614213425552264682924332860 0.2197412541570011814972255874273823 0.0380619983457877714845044980874120 1.0388052777381436583013501400807604 GT 1 -21404209578942344321060334382080681.4895199773507852385693959019001949 0.0148607987192798985914061509468778 0.0617771426569529025416514118484326 1.0637677704096562020287699806681784 GT 1 -530456694168653313013205138503300161.7807404346758515759677537806053956 1.8737859640301904446519247237168920 0.0267148850868051330498031378141204 1.0270782130877845185656655118710731 GT 1 -2497531030509278622152899230355986137216.6205411963654791977908057598033641 0.6646686308163536039705919699219343 0.0682138619442146266995983925679608 1.0706519562331865510614587529278657 GT 1 -15692335.2239405101756509798804338771941492 0.2833584964282704156355613995331583 0.0116841776025618978976212175186048 1.0117529740170954266370056244868360 GT 1 -95879273017539081256680302981787511.1737246656743074839793176062973614 0.7389342020881333628196157931378747 0.0321675570084487624068202512601542 1.0326963027715242624108354437309339 GT 1 -1.7775118979323136705873254038083257 1.1828578215573819455342979427424882 0.0266935202109114543540645785719958 1.0270562620262956250204504569721035 GT 1 -105289742733855.9558023789971278788394777904337747 0.0601536566668341534640100392896047 0.0714016433713137797758538621399233 1.0740789731279202237110840194269254 GT 1 -101452008105126631736637225924764631657974.5087440298309543775091776084824710 0.0668975420065445271385447848999861 0.0994014978942627049847222703093504 1.1046957343341953933643653514027324 GT 1 -943192226685260991574215999142688935.6109167328470634930520259082854732 1.3675816547017087232682133552968792 0.0051953496836564151711288862673252 1.0052088924394230588117254062403051 GT 1 -6368045177921632128497060204849130904186596.3547302896828254743107279684305776 0.0474908378036839592507161562922268 0.0812035384653610507719576931554450 1.0846906593558907580461484212293201 GT 1 -658.4064801512693051694703884831733420 0.2865363544477731123614710495086057 0.0629255164678738810350089210806877 1.0649925084065971680760639236728864 GT 1 -148916507518540052.7946708893412246780221708176052393 0.2980232863248925457099127260112045 0.0065224836368849287575010139513783 1.0065438479830178031053645268802164 GT 1 -2549276786339066920726549010520.6451617735161496838546742544452191 1.0516079245922236210082171881232397 0.0271022054924351858630650428759772 1.0274762439294579576151419490144159 GT 1 -476030092887802103931707.1165334837524487435691702066945734 0.8738123862397328423539179445445612 0.0227076085774048598607907965142631 1.0229693969714537651864678742949218 GT 1 -6948404248954155.2195874457447863255398265645087118 0.1906575974136408293340067589399851 0.0997747136427745314808249298081572 1.1051102288074983642913802426149100 GT 1 -2036.2969249569653561093180154586006579 0.6018365142347657009983933825031293 0.0861634119098780460436410323041556 1.0901035111599727224622847510341863 GT 1 -30784.8271238871608715156282906389326211 1.6976993733583610781289421912758789 0.0171515690595091952476093721880945 1.0173003610180320093990111864049555 GT 1 -1934622748272934170671819.1972016829823622346824409619671354 1.6290364410188685034681575270596406 0.0424069216222098001372446504426516 1.0433323528578650827183733561284788 GT 1 -438991920711363890682.1221871283657522155085800054417771 1.6555736530209491692137064460812814 0.0829913042570580442018067025770297 1.0866383239539032299307927831546273 GT 1 -73426794823980.8918383917936866668570376825345271 0.5544694356302564659654706696074319 0.0703126191138752305026758759361420 1.0729068989305836311459932525115241 GT 1 -549406717754376934642196963089367997.3069036087818316955174405099744348 1.8967490511019297945566064654485792 0.0303935141930170067564312990627711 1.0308649745320924116010906308980897 GT 1 -3541314501637012373887.5613965271492952589269531907658634 0.9611549356740316115162810506754718 0.0114711994309591063301305374818874 1.0115375011671278697371216556029873 GT 1 -28522440629590241561399.4472817995051104101849100114276910 0.4227557572620965177404914803328890 0.0977810716892269545718047761172795 1.1028980740563715148709069554087860 GT 1 -6799572781247471.4599309472898647204940679444520434 1.0436952220815674431847951238560609 0.0047951703850607899244865546971833 1.0048067041000954397141428798602390 GT 1 -2009021695038768107802887770852837865.0719930327712369867085048026894288 3.2564063080080990392181087715259872 0.0666772354170507511589985211804351 1.0690041952121903909300610902761618 LT 1 -53357913414199010460986074814053272134.3860229804670680992376813167522012 0.2210308463959903470308016269578562 0.0399963863462881524667889760428837 1.0408182303047232898819570111985280 GT 1 -1123939309963750149814.0382645921563096868709253929429446 0.1304289346120642319594252053601813 0.0180565698165776881868203459195010 1.0182215790248621663313820623770367 GT 1 -101029429980786820.6262941569003450844195256378767641 1.0412088985527498142476099202770268 0.0172151220377379668937103931075832 1.0173650251422743821578341190208999 GT 1 -6553309457695658.4416108334394623752198625961270035 2.6593520293439778459390012075057017 0.0631228668921005502329834241734445 1.0652031332948854813217022451888349 GT 1 -30847733.9887221232067118272750545525298677 0.8490235680417743387873686191187162 0.0613277598106591371589315897599895 1.0632889126882292381358116040361105 GT 1 -4720362315525340.6991638318965629855975001918458018 0.8458493507820947127778675752574474 0.0906017492245281342228220979392204 1.0949721610860701115749957306941218 GT 1 -544095716782726881970094503334999315837.0166517508142906994422895129934522 0.5362344023804157994806481927269206 0.0605667687208611379014037008908166 1.0624785310105171844631891572097330 GT 1 -1379827882594907394434290987.2415511931720511440353389288322248 0.5538012985538153566081482345237946 0.0324382648115295552379305890576724 1.0329760471335753598995538036709010 GT 1 -145416978177685925968976.6224490020590456222896601207765675 0.1229528659763965271661587258556767 0.0697925725698418118798153765510839 1.0723476774571316008181847339438465 GT 1 -52625916892816334.3319013865785561695577509538390540 0.3282716296883490458204196113609827 0.0334437888444260188859084436945570 1.0340158225261663219797317930368924 GT 1 -778394130419946028293468125902833310.9741364491404663313192993756174122 3.4341462557511314969837852866425205 0.0662309200361137590471967385809062 1.0685261090476114057661247396823196 LT 1 -27218.0190058203183135401550244135383423 1.3168872593557236075249450136710012 0.0615498271410589133049999780291258 1.0635255166836768544077238202153599 GT 1 -2071553176267043565253280896186047684649905.5056162398859057534027392411517112 0.1468816648882574587206193718619317 0.0958802213313386697746803661824415 1.1007934288398348902426475079380996 GT 1 -4062861929091838415160977.7284753911604452216931831955109901 0.2620411688382358872215726887282834 0.0448600797793955987409970332360589 1.0458974359134304214153571231019505 GT 1 -76506706018147.7228599529365723927470274695641571 1.0466172569198284631025922864225274 0.0971460048173243568500998172778678 1.1021944272509268710638106282820638 GT 1 -2218704453140244075794816.7763386816865920330053530416518060 3.6841673285771728891630379764277012 0.0302174123622020122088049777598522 1.0306833690629162925824064928819154 LT 1 -242937357130995376440047460760798897859102.5121522813293904646270216755577792 0.0057838472626170307513520451955567 0.0988967727567981716151815173086853 1.1041354582991048603268087503000441 GT 1 -126488.0432583103520768357853127804153252 0.5126633400428149992169165534033216 0.0779815993794348876065304791738874 1.0811900983355710951556338353076012 GT 1 -45956722548913213228939512110826038.6680766056712848527592169201483905 1.1573568502971101600881876575655789 0.0009696986497614081098086641602335 1.0009701691116591835464401317226980 GT 1 -1418164358866604466415221.8091208639397988475475074707317123 0.0124433937081590371260337089966347 0.0787348397633578416184564417618868 1.0820073794548144177336255509730924 GT 1 -9561650350375.8860726827337498390649117570231501 0.2733194171062486630699566314729299 0.0178680159978027978351501555653945 1.0180295763980869361875980523981647 GT 1 -1200759692227971109125587521.1491485708867115550241791895356488 0.2928251174846663403840796850528273 0.0662740370389748733591916071725403 1.0685722853446057419630191882668080 GT 1 -32754073207369.3258600420228606312095383323669717 0.2684923058658728041014585446371933 0.0744283285388516440463176424740387 1.0773437091661602774583826140907283 GT 1 -4854039.9834823652727035696218009575493028 0.9560035881707110267489644829867928 0.0187913800037798006706301745111686 1.0189701814792169907856866353434200 GT 1 -2.2026021327641069946288223914291096 0.1293780190808482095161234298807609 0.0792567061039502385388218567461758 1.0825740069894322707471354259094182 GT 1 -2099092389294070926854855225.2617355827289997568285976343058915 1.0629012701612825147048364759894612 0.0481440644899236865769548983023884 1.0493415838877641547504629526885864 GT 1 -1452623609986.5715860389571525023337005476701705 0.1527099383278474579074614380315882 0.0052688103661299979592145522114652 1.0052827394956377437505310251676269 GT 1 -61360829608123273613.3197073861650910196433204857767828 0.7866095070147885091660341881808041 0.0171705536166235028906256151448158 1.0173196770589092095471450813617214 GT 1 -18295315188492175952927.9967829606022728994385665153127966 0.5316114183981848537696528743225786 0.0531910876178911242382501866565085 1.0546579882242660528623820139529917 GT 1 -9789303764.0404688005981928135193770508783383 0.6483918994502965778054746099354473 0.0131515303950917721078102753283475 1.0132387775711762992381244997682873 GT 1 -3957106862208836907722.2390346990645962693760446165957293 0.4165860908260732497011627909491996 0.0511847144345216563915314315687846 1.0525411404495200231679049787150669 GT 1 -151935562177421123732872248223690416496.2043571485802986518129333158968010 1.1583532894603851740588846567130730 0.0868827661124899876270561662883624 1.0908910014962181631497957530794719 GT 1 -137083022002779568765.4308247666459539871460976505269916 0.1125151232735217078258398483266803 0.0663198253644077779196773079910527 1.0686213248379652434467923030658656 GT 1 -35307331585605407614938589942558499299025.6268558593319778876792506232310273 0.4713751133073262997265063624860011 0.0109386053584851990113769259687385 1.0109988717922045964717418884002207 GT 1 -425315546.2795148498034198954867645335472695 0.4336017146049173721626479437020485 0.0024734495456092732349259115035061 1.0024765135754615721863691304657452 GT 1 -69.1167054553845392254371499696963419 0.2726134808439241629133258905273314 0.0402864192904648902288536553135204 1.0411203924640611959421407274337696 GT 1 -12160806709823510508808865137979765.6450005566710572378848014625740687 0.3446033092844447803320663891048642 0.0321412302494500155805946346721472 1.0326691013678839827971067181469262 GT 1 -36.5719356056124308346924354071441647 0.2898710609406432206515981314927526 0.0603648551051782251296554072329187 1.0622636227942753034128484359700859 GT 1 -1573.7948073804346924597098660925330042 0.1074794844455584801242184112872534 0.0771075262101508821309764106101269 1.0802425477012214773855944872837472 GT 1 -432552594143.3098034017908789107444508356099156 0.9784295117843242399283944014102154 0.0922961159214782579782835625114886 1.0968370724254156717070728689436709 GT 1 -559261196891790260720309653799068.8201298879782641092317708084935103 0.4993928257503856706594151680106881 0.0871469254044928300942083729901673 1.0911803373004406830847033644937398 GT 1 -1504616068100295194436253308317458755859711.9438189716955302896659270248611291 1.2764441998144739779958522368471882 0.0520463104679617270437687035175917 1.0534496286249507559415008371497050 GT 1 -25178602056957123984956249845.9634935401787896675173344396419026 1.6587179739767092142038677100672574 0.0029249380595451989992324193629790 1.0029292240504167850394175287673873 GT 1 -614130568575527133891839074848251.5589700429853727233003827604075720 0.7247857877001716501261523407904033 0.0649242829463993922898548655902690 1.0671277721662285574157233742795718 GT 1 -5119732091088537095210330598.9276345872045729101558504074185610 0.9013138598303550177522115477619072 0.0638587743987938751911400523006222 1.0659889318335264191966550152836449 GT 1 -11316513465272172827648956506573.2446493788539898920259375580521294 0.6815884416870436220815974871538156 0.0728744595412390688269748924911834 1.0756662959850310301683366593787068 GT 1 -18413997204980809266.9675498670372963985739973132796915 0.1718720684446326465950373770415439 0.0572711308689384433121463483695728 1.0589765571695856136781489049172353 GT 1 -162270217806608648721.3695579684643452231616798864734205 0.9406656462899495897220913920584181 0.0349490234422351104116051712421868 1.0355743535899049676545534625554155 GT 1 -3518952794310979776.6473870962729450558416281338551521 0.2506039284413291031037434657823643 0.0778892378447182261496310309535466 1.0810899301514132536897690511981436 GT 1 -658028628672137493.4009254117425300992198501314166611 1.0351472049857087565852453874959228 0.0561543788803271841196724464701066 1.0577926631597604996601526636162229 GT 1 -143.9886037477743661899316481254753653 1.0017115861368626210193790629749644 0.0314695229192360968004087219205443 1.0319753282969424515505111903038997 GT 1 -3134.9874050018040924109316341167380641 1.1982339735163176357607674770753107 0.0160788730981979667472321124999708 1.0162095407301139746438007100992911 GT 1 -37.3420047164688801540073822439962271 0.1457006969774260359495154729385399 0.0126157621375071597562620197837991 1.0126960165595582181102808430689906 GT 1 -144015.2044427794523648649837965706300323 0.2140402080491499942887863906812383 0.0567542626107682180840580137889220 1.0584284392157980604722786877214014 GT 1 -1.2196236373352733918124319680107122 1.0076226629894589113858147458937137 0.0121269649594743911003946624428817 1.0122010965360092956316640251363741 GT 1 -14.0330709383295796638929633799877097 0.7965597210369495525554767059386485 0.0028174263872082905635789337592088 1.0028214028035283525142033827062982 GT 1 -83084112.4849394229191229447283412420295924 2.7007040902437707203542644434040221 0.0402418185716921184249129941639574 1.0410739205964770395630286388805919 GT 1 -450.0116225087145125059544247180021477 0.1685448950672772908126517711780048 0.0952291578554513693936876648145913 1.1000735804460069594277811202280008 GT 1 -1799228199805541810603357482584.5338675779241860962807267600998709 0.3529219862405623600182964840406675 0.0889250657842975189912511867655085 1.0931301302029491095748176734011525 GT 1 -379031044983093.8800481772594391388246530037950423 1.0634352565995106953619323568305847 0.0033577123761686295799633100669348 1.0033633621427750664262231162941117 GT 1 -14170240862.2364375771980043039976300113190847 0.5516816302882792086902936154530058 0.0553919767470504420052726205563749 1.0569852277461675741168001217744325 GT 1 -3720337298554.3522391808017625290476602542635700 0.0922352474621102509371595250564074 0.0446126415401337469621838137332231 1.0456384097865527905239494738123765 GT 1 -6886569410.8638423172425701551623986859754229 0.1693903671786153761288077651839634 0.0730612163573606735278450912299415 1.0758677526597812366191711403739723 GT 1 -272934504432369858162792775804388421116.9556943951926463647720901506284252 3.3205510355593924610537483604227536 0.0426967063837563202894071792814585 1.0436350165090128580780513209388266 LT 1 -2647852020441239.3987963600786873643705769836942907 1.0688200881317851197897745459996869 0.0167402984482131592179987656938979 1.0168820008978556476136271161505240 GT 1 -67996150695447.6399864805588899820859328138435808 0.9150623966173318562028703411983328 0.0604950820687314934776798324713661 1.0624022255161670349568590729262183 GT 1 -20238702494404624850022678362124102115859.4851669468218195761637915062441896 0.5559392650374648708040994336406823 0.0132446880509820503415804108058239 1.0133331811762262607035479918824368 GT 1 -10839250006017597043522928158365955223.6383172181935744386842819110850023 0.6516498691320672545791789184060684 0.0361808855356928175778507709491876 1.0368516425754825366319658800053820 GT 1 -48078117.9361033871341461579860473088945359 1.6472558709004425876486991889443153 0.0524051526717677794826079658098789 1.0538282443144092725128323130173520 GT 1 -2795726909719171753499110381.5382556978892143212604388408212669 1.4762582861124693326928983526940449 0.0177710500192621778542134152649966 1.0179308511822247271420909828320446 GT 1 -600417004728946190179832144585468409734.9430010349465837750463567339413312 1.9238689393177089535487509317326192 0.0998841864463125868180626253399456 1.1052318422102900863899190235124233 GT 1 -661874790807663468765677498385940655040.8526863401921645162664545875278939 0.9240446205497525753688275379729772 0.0822022224371903292758120230057708 1.0857781985074369703504611663857126 GT 1 -84234632479873817767182534950805.9721168242966843059784757724670807 0.0643367229349493751532710451584550 0.0586974623840432205183081631252377 1.0604906845694742936764805872201862 GT 1 -56885832069844.5488447008790927873971447853529928 0.4017488778108810676322301509822697 0.0332695180818601696510366451675845 1.0338355380772408527807592626173278 GT 1 -57147785108946649553389412768330787978678.1770791127550907871107166224020574 0.2245984893644364137205892800121864 0.0005641620082154391266822991105072 1.0005643212074801297146705792429244 GT 1 -701851.5717809076759064172926633322991965 0.2010750373693924338601334366255825 0.0694053284609010957337850675030457 1.0719314654217459027033247384694165 GT 1 -268584689226.6579212917436756250624712033285935 5.7240180596785677738184859346802888 0.0202224574113426515083108167444257 1.0204297304438322994838216960737415 LT 1 -4.2056060612246675196210408725611868 2.6054924390486172838959699818752897 0.0574598134393999719477212045010882 1.0591767223083724340282671717901250 GT 1 -20780007595700.4811207940507811297136505665669265 2.5466820289115650419646487381136835 0.0321762608176693662268268641622756 1.0327052959070829621732632414999036 GT 1 -190787227696021988634311969673702774057.7951618869094552456864342934048066 0.1328648574781272994020079084541612 0.0488797950139842914395201136424037 1.0501148259112051592162432153046964 GT 1 -6261422122.4395585995286508210280936939644820 1.9008215629392853048161515041564934 0.0734539671913678901403848759554683 1.0762915498621100813675616020484159 GT 1 -3.6677811485661860125237408754924280 0.0194587392019080667419961049278626 0.0074759978095631151105540110639503 1.0075040831460185043538737521937643 GT 1 -3.0959029470725845739117055025072811 0.3668726199505327597919994590683747 0.0061888601027247845579396065747662 1.0062080904812141683263173925419442 GT 1 -23.3017325425950336093304471750251298 1.2059461160990416566910549239958692 0.0041824188589617054663055417615874 1.0041911896366375277636245452803431 GT 1 -785539776934902145450883329348060513508913.5985865249327484452189520500705355 0.0037847583547602985181956373044113 0.0952946844619932969950710396182634 1.1001460064973725577258318077381947 GT 1 -9963342046334466944.4906515335038078160752811841125054 1.1374735141102962162657529658094037 0.0542679505683043803105763372959311 1.0557959958958127413862605104882630 GT 1 -646035480536834348357629873777772981.6370709853701718285786223116384199 0.3979136664687184825562717109344094 0.0081270715816433803603077137569253 1.0081602762547657990648418048713457 GT 1 -656376223222673993656804351816724.3773533396314825042067381375530308 0.4309633273428312567246954911728203 0.0653882653034366396597150668425377 1.0676240929455411539362606083684883 GT 1 -717781.5843155615018354573900847248768436 1.4972673527108900910059159601252427 0.0451862001919594494580146580879479 1.0462389315343068124813507951977628 GT 1 -214247.3476392114301291116569653227190843 1.2520443477233910206989626750710938 0.0790453507960966777586016435959039 1.0823444847601511058876496438906798 GT 1 -16733869638595125165.6405018595710099381119702693913039 0.9452286050889435904922864588308500 0.0432799467855902554961214064973250 1.0442444556998688853899861202986435 GT 1 -7604608177920.2508659634592384119928953235225233 2.1556144239502731568323466557300338 0.0813655482444182247834112973047899 1.0848670031610430352434451228193649 GT 1 -1121990050168375094169209419607172694190528.0325651189925509531070686575387621 0.4089764752442548814329703452252618 0.0690419431202419885031345104477036 1.0715410544065463734757233773556072 GT 1 -1780023741009711699237229957.1789085660717037616935107453597750 0.5213945382879570533527626994842379 0.0979816073084811307734272725449740 1.1031203681168541541943850926929906 GT 1 -501172163323301701863395891.7419539434057120654483213446201236 1.5155987115758250687746900633588391 0.0723613787258810182213064988446572 1.0751130387687968681389101745193977 GT 1 -165860200205453728.2699409363191754763422859783741568 1.5348598318974453525043921740423134 0.0375390360656776972148269340645000 1.0382617705940066038945789472096403 GT 1 -5827895527467520952465748831380162858044259.6418806476503770916866657592630852 0.0180978231018814451804384448455747 0.0740108286802685941387487249010427 1.0768927384435004259500520993282840 GT 1 -2750572114639989684427182398181706.4872584274560651127116629824561758 0.9287104287049536218942950679911687 0.0235256508508983522870101577076393 1.0238067971628990585480059545738434 GT 1 -1867204513241263827878287492172.3601926820579400771601220219793681 0.9385431407826106129861122569190751 0.0973444026600645418066267112607573 1.1024141966106249453802391225573799 GT 1 -112722726260449446923725465806455595616.6353039154257868452764212726696601 0.2785836885354630189534868651558874 0.0330297846104708069000686471242382 1.0335875850481589507860760443358461 GT 1 -772711.7012773319282636320421660561010273 0.1337976879638841996209970143051140 0.0543188435371230810999901143062075 1.0558498106504865224402103714833911 GT 1 -4309591.6724611738355933189640885171347167 0.8981503603021279060503475412283240 0.0966104801591030716474282912565795 1.1016014566249193354829044937732260 GT 1 -41104014834341058.1899757902414911500459320501157328 0.6775065856034662523272017400070449 0.0808532438764846599365215338205254 1.0843094782728710340200424118983961 GT 1 -46408.7594255015353958619868485508683399 1.0328147261768854017901683789893556 0.0329068487411837632346939064042943 1.0334604580143992933706841896889444 GT 1 -23084.5778094392491679817966318405307880 0.0792210500532458685405857093175590 0.0940802473905448168947806929780009 1.0988045501407492561365683355562479 GT 1 -3373467914559650536475816119072.6682054116923408418752397492917610 0.1449198553608373997315362891336055 0.0555552410235155085814588960571665 1.0571580808060793121237628585681002 GT 1 -741936337285456601.9369598098154569735825573236227705 1.1174145634783220106215227699579572 0.0777461585733497816113162477155877 1.0809347772370951269463582079657801 GT 1 -4207253195736875930793369468103660066484.9225159506264416865656532163015362 1.4664897687939119470817299433188067 0.0692614872728531930436463172913270 1.0717769082585790674863727825977282 GT 1 -18.8373569870921967857671904397986523 1.3190903696562604316775904036790386 0.0154755471421977429258127810761645 1.0155965433670206638330820684501324 GT 1 -28113841844570860037.3313483925216047343865406388782131 0.0514719970136168453037804639579413 0.0690614354529232351157062591147056 1.0715619925536568409773908736216656 GT 1 -976323245477469932540.0346202202865324424535046021609940 0.1325119274734926891217245260647407 0.0326286534768558840438477473504353 1.0331728380900588166030600127569704 GT 1 -15004417012149869919670919534111228677216524.4037795960597223343496647495708419 0.9993851371542072949881246666780796 0.0962329596648706428362950436939548 1.1011836505443134785195921602867803 GT 1 -90006649604765427734579990.1597775213278155912104693338780690 1.3935414897454139088182153524071844 0.0698533047992879036812592992183333 1.0724129684990132189166438290933765 GT 1 -3309863316774641191950098291792309423417842.0531805007429790212857842218499351 1.4897535830162863311108405735521122 0.0403503503181915087552175288908213 1.0411870093781897700369780696319884 GT 1 -310.4371102652831657869177837903542487 0.2549860899640352807194676110541409 0.0544285783959202055757958456421963 1.0559658552869278677836570220128525 GT 1 -2097522703001615384942524104801435691205.3807383775214741588044138326340431 0.4590964465677852566887857769773032 0.0187639069491928101129354595760926 1.0189421826730278179491041685670371 GT 1 -5050531.5810648795270450835919893623067276 0.1278267604886450526347938177798853 0.0386622282405070249948771843769426 1.0394294523079101540034933416762135 GT 1 -22965676262596134723493515969115695.0805750582136397575078458045093965 0.3034192688777021054327974884268720 0.0465586592535630174346264324174611 1.0476773757644148625687412572108095 GT 1 -3121194822646728912597055328123.6243204448554712959629224101125787 2.5041341104967585871206654699422709 0.0863307805088884296822830372529106 1.0943625193574712334753474448392526 LT 2 -14503216409301192448111503534893106794068907.0269374667240452747914554815520565 0.3700946021545795139113789194427542 0.0608648993055169683006947991633923 1.0627959329192840799943516211378104 GT 1 -129319676025051.4130365550918102707919334259640199 0.2637422675822021295105183404937377 0.0780720179411507047677054776177067 1.0812881690415716683150518698127458 GT 1 -233175344456321040907143542344966964.6390385831536091624340085912570666 0.6507243261947450950282845618788185 0.0755619922730855232775633949761959 1.0785692853227475438770237227012513 GT 1 -6791865271085381948255574926022966470700.5573461470740604809736181308973027 0.5941660716132157282150021047449913 0.0695206001447556169964209937102581 1.0720553419356082074835702545437226 GT 1 -62954312655883324972200.9083412867402004454403385183667071 4.9607643418374744594076933143700366 0.0087316912551088519351140762360626 1.0087700358431083955384929575001879 LT 1 -5602548676705029037398227846.7424423085464722258944259955649792 0.8973150981109228788422982542404041 0.0094984413369032616786593737416115 1.0095438392323548806767318297937102 GT 1 -3105805405556426515935884606212150.0061496561390716955007154772122230 3.4361165918838723831423443358107085 0.0325941460370632129436192303495348 1.0336862033093587110144492959432311 LT 2 -11745137561256699167544441.6165815804471291948025059407257678 1.3929529035122082924659402145152235 0.0907448823015687231821448244826725 1.0951295666475886600065876407697183 GT 1 -507776954953582811811045265404.4750491838348932012516544365286729 0.3384226990102714096587200036291374 0.0546484831146006610724509872718238 1.0561984451140389493374463066760820 GT 1 -4903038206270868.0796259283146803092977508693050037 1.4715731541411280464965003053780502 0.0445285004465082594645018850400428 1.0455503435295113401580596508934501 GT 1 -426273435980215793234.0991372315738599389139230478954911 1.0183835622604605935438669854354083 0.0620632672597474777896770859066111 1.0640727813549138946958287884252269 GT 1 -35554583195745303194020746287503028355.4634662681595726343014527794027929 0.6847150675203703007818622074012723 0.0269485360367169803229634099361605 1.0273183061462719839337298111480230 GT 1 -1244418410371257350027776886512105568.3711072756529617458854519905480329 0.1592546400843576886132118684975391 0.0008804299012615782795143379719689 1.0008808177073078304523759625579872 GT 1 -16395030312610.9105922110808349284648663800320113 0.4730850216362815291235017754918412 0.0259423598862988298644584171090497 1.0262847983290956028203008585546604 GT 1 -15206.7265000652408342648199034963000633 0.1241646414241708172765344109824829 0.0436702988129153268099631638029672 1.0446525496679890741427851202519014 GT 1 -32122032326931757715317.6489698714911199078455130158414661 1.2425261921915171986054116658303493 0.0859209385218300822549525355462408 1.0898382107457797333445688602884194 GT 1 -5369016867451287119.1316423454574819063026381660100392 0.4114491886272392516099385714741496 0.0550819525463871226924983835068008 1.0566570775202970129275545440493523 GT 1 -150326846891943826501044534024184772005407.2700423581934653827747696325043494 0.0609940976002024190749009024742749 0.0504045234746954965489203994822319 1.0517191992560442381171950353308088 GT 1 -33913968594000148181651941836.4097087705801635912713707242334735 1.0198788697750207231199359788499653 0.0532454659966082064203673603148637 1.0547154231930661002187929841836401 GT 1 -204043945648989465982.1124889728967019993900435310604421 2.0067662056699519902162113082004324 0.0585817569152094483698100804944889 1.0603677715277046307989213653802631 GT 1 -262628366.0541385662624069432233396808284242 0.4514591030762809651095183585633142 0.0364387171722973594354843140545996 1.0371191887625297686835432055105594 GT 1 -19555376008869208284936682827061484427.1030208627862233116106691246236437 0.0365276773920155137276935509357396 0.0784239124317887651278993855989612 1.0816699360262067320937541372544037 GT 1 -78555828297566191113825383.9780357028493968248406043331927498 2.1507270677423714352549292570315606 0.0862025896482055353878815557583359 1.0901463837902333652849569342358489 GT 1 -2300576524.8397207914702825632274928511188332 0.7485871375148780989971082233716832 0.0689958105867907110709370617842729 1.0714915018084176373009554946375040 GT 1 -40697461872953240.4224632032030832742649546624463744 1.7660900641492437822400396693384720 0.0743478637754581216579419596284758 1.0772567777393818063157455474018512 GT 1 -1.4074673581428298200268179738651969 0.0644034276166076305676443551739755 0.0820959024061609232135763448935082 1.0856623626709243380528076451821974 GT 1 -105718527590121639856852860840587789.9801735156056953429065260947861582 0.3172911496437863375640404249921801 0.0258900331813807195447860751505343 1.0262310794347412409321425692420459 GT 1 -27257076524905784916750379102580148.7329986049774536841910167600566858 1.0498511412181383915097147077819895 0.0395685944507476211021219340429032 1.0403727146810872410785299732348657 GT 1 -122727661629261546.4889678336644282978810835724175129 0.1977515043467946183516396000069443 0.0646066137618906755969606404807261 1.0667881042326562669321576356134537 GT 1 -3.6724546060481779770268667353849749 0.5716303201159229479717233368856642 0.0712239638962207495874056498470793 1.0738876498531617852581289675761459 GT 1 -16310230814132393651207414.1534921548231235201430955769533955 1.3594859903996197682549863909254737 0.0420321323767166426098268414564633 1.0429410426768363946527680387527599 GT 1 -4.8810194101396270858448535924407057 0.4434940403823495430122376321322993 0.0536299729252836871816545760844471 1.0551216372815292454268424858323769 GT 1 -713557394048126657974366602632.9926922896604189801082990459987066 0.4022851839071327137267015830363667 0.0980980315419990344761297630810765 1.1032494472449431166443935809555343 GT 1 -948972522106.3530440594607073317424896093596343 0.0596895728745078446343877429954809 0.0263376326758763066198995152159492 1.0266906808928054720355887170404362 GT 1 -23266965862787034091226.7252198194314201325399890876020620 1.1436295479697900088318236417303963 0.0335184324928744108003978722997475 1.0340930518998592992426101721623570 GT 1 -16145454788378902775050.0249815611480440998741112038391346 0.1345436862459718451828614575087329 0.0060157263635794429536236644309272 1.0060338937420483733419587075914530 GT 1 -993212282065666903666.2876325357177239114367579102952565 0.1827075374106817946134973139230863 0.0072997750926181703922727618072999 1.0073265488252073801970513683865931 GT 1 -1441734650.7733539779479202685807903495731450 1.7411049473642054326312521313403996 0.0743373335018399092454882654727970 1.0772454017447612920152519743733998 GT 1 -202128435497919352272.2291265563841311572253831451329157 1.6597438002017529739395797227121623 0.0967193441505664088009420158046374 1.1017219700346826832714479309901976 GT 1 -245447.3443234348041868710389193150239912 0.8650515962968087407886343387693989 0.0705295024384800856601862998435296 1.0731402124410745082107404879147550 GT 1 -53466719373545383622037388.5153041690870283995518182032371562 1.2178641322133584491250997966871924 0.0425250418848529347652330766955724 1.0434557116738883906216555342314567 GT 1 -386970852062782104393559738659202.3912403426005968335135471950715474 0.6567546537459674013409350484717425 0.0264379033079790276289445322364808 1.0267936691553754076252252882096771 GT 1 -3036417211718057695957267.8532514358890311215146125886117041 3.5496418558201608853329951946594662 0.0351215263712712629001367851484826 1.0357531196370046449055417101588231 LT 1 -983036758309972044077.5705477040011130825526909086782252 0.3460687367464832997726104892342304 0.0069071137905589154478961758916527 1.0069310783152346623841322919656398 GT 1 -74431591944507963653087666273956515938.1805683962795485242859452114086758 0.0730572864150717678090257620273254 0.0583728029717828853787841907446076 1.0601458396084497555048168995918499 GT 1 -561703323810184544696124771267090272.5217223827983178469434866975241062 2.7211876058714196451442055857741250 0.0830361527729067045612884532071728 1.0866872325551028642725751531343798 LT 1 -23950812127645274173946917740190494892409063.8741669584385116812904844417505886 0.2804588131049913714392767807133219 0.0884693919660637236622968014611936 1.0926301055764844082708115287404780 GT 1 -33515753280475575299740836796.4899943002529191523526875632158508 0.4259431149827793645148361882811296 0.0345296625543690308336949010733591 1.0351399000654394672815325276646528 GT 1 -5046380147071.1415665535648555892194296669248900 3.6856699092646838411620952304733493 0.0185068902301636390802960089599724 1.0186802853923139219118270030442839 GT 1 -478530393504168.2264381590169867696815640209691758 0.3443352189425902732264291557174472 0.0426632852525905695208917445922211 1.0436001053706023444763781006851398 GT 1 -823857002928.9762022620351834233928578600328952 0.5338537968695217964251889138748550 0.0817953957945446035113792836329640 1.0853350327976929952339546942007911 GT 1 -3020079784778084226421162220607623364751.2598464945028977402481322343073709 0.1673389824966706098844532547575713 0.0536361575136354223489062985164938 1.0551281723665205562915885350325718 GT 1 -42119142703667176838680.3421154072070735921444400163917469 0.1434522203125389879423124270887348 0.0355526216149540796987044562436117 1.0362000065642774848638729848043976 GT 1 -278.4679602352775712556964111531150315 3.3299122596406091830639774275579550 0.0527236680953184636213026799160206 1.0541644312067335875704356704415079 LT 1 -38812723650802509581008.8509414089618843215398178141582595 0.9560388992425572453435386702447420 0.0732477709018873147638135501506872 1.0760690316689302756741195995821252 GT 1 -905064020368145756804121676662025520213.6773585270005752049513905228537448 0.0005990699622336328431004430128599 0.0206831331711404880391181766973205 1.0209000250514573739751326870506249 GT 1 -169835453882311156.5193639244095762605617011221328095 0.1757949582417082554474773453875439 0.0668526308774388500180825465283384 1.0691921387080299661190144639163186 GT 1 -8946485632265272812796295918375518158539009.0169845273459966085552883593000179 0.8017297096481832448804614971339001 0.0545171829357027650187468460670000 1.0560595644339587762424956821566303 GT 1 -906520771577168.9424670940885503069287925399276603 1.2002186816617309144340373755308611 0.0675279765784116634694035221921569 1.0699161296068928919311728092919585 GT 1 -185925.5443320294136240512336516834250500 1.7112569853089486296843062457334502 0.0695032466782251590305201965495384 1.0720366920818727520561237062354099 GT 1 -49521585363712324972313075.2514559884245259207936965707352025 1.7900007948646319664934240931051826 0.0003767194507429997672515851509950 1.0003767904273413536331073614056895 GT 1 -13670495449879584453820.2322964856266835127778785679646840 1.0909408209473279773029454928142829 0.0435621523438963573603877875037553 1.0445394711402823367680512483826922 GT 1 -3.9978374686651723880935685465423009 1.5301752364959678873894878849069425 0.0035528046696681396001956962806980 1.0035591308684555873543808950198405 GT 1 -37602.3344545270708270308658376356374504 2.4735852035855575474542372217215661 0.0808242826861769387767515762627686 1.0878293581051067636706458383923474 GT 2 -2837837206654058.7851093393313651599679727509338088 2.1765599408622797492672121358857582 0.0767076271747505145517750575475371 1.0798093310139673529428131714068658 GT 1 -1047.8407809495436988834360537934194530 0.3094827568539979479488349499244082 0.0072316409297119555321238373773229 1.0072579159961787175603067145016083 GT 1 -87975945.3413370926900713270596903140744212 0.4562900256582617947547015084576866 0.0709056295562553806533949383339820 1.0735449625032166206492077117248022 GT 1 -29597288460748875997420425598710.6447406547593164078457635156273819 0.3420789287422446896027803933741611 0.0081141395051830464002361730214507 1.0081472383022356911604846743146412 GT 1 -13345649713735598229855.2817286591498842314048238198594444 0.5312409222716410958369925194328237 0.0780000227294702443710911990021022 1.0812100800778973723535695295847397 GT 1 -34159820242809194322428147.4143974314388517482975386452333290 2.0441151206051916273499107198010948 0.0181555169063536083583693644052735 1.0183223506908762785393192118968547 GT 1 -722288960668099034067835068494715096.2026417888753054597293789138858120 1.7871169810344598232046976022149203 0.0044627181063292593456259584756262 1.0044727057585722873553353210063561 GT 1 -27525345209587644118775996.4831666157288519787012942201273974 1.0564442549866847200420716835940992 0.0447486455536675257317573929614518 1.0457807747588992543563223980476429 GT 1 -56779996051485784961290248780.5626206744193100818972487068626137 0.3160351632507093028415623918470218 0.0324758879717104942954947361926998 1.0330149323956838015323598741616093 GT 1 -41327151.5985872116587681013626691676675835 1.1971175343275491916630430881483710 0.0741329204560523221448190327724119 1.0770245972483117436411140258803523 GT 1 -1926526957984668869023502744556176429.5961520696352664335935673807608180 0.9179986800264066334452981938799215 0.0123585795536079131149246316021862 1.0124355818818911920366465603095727 GT 1 -9538174302010714389743602.6020484687703779651295495922996237 0.7872728275889645531420479185458903 0.0987137818968947858866276010823158 1.1039324046682654229357352429391570 GT 1 -172878.6245427664949818024961778397247151 1.0698550093701779167814406086216391 0.0803193217789835837968966107308455 1.0837287580785410988706583642924569 GT 1 -26962886740673259628934548281711173154.8073822363105607921116605186221932 2.2301954151318030990587219766056082 0.0191697157227262664675533608945072 1.0193558371589403466280867416326583 GT 1 -770515845923051.0106210138545943381448487393046728 0.4713171405442050699573883797351650 0.0392216270566458922295726980424349 1.0400115178958552132604218006883001 GT 1 -732.7108438121663977189723064288813902 2.4001629629126186058808045581239596 0.0890474855950552042815044273620899 1.0976136419785332892148549981953183 GT 2 -3311350032361.6912425732291154716600168897721960 0.6348878318650649107732375616335939 0.0857310998001631527564955609441998 1.0896305492652211785327486457989511 GT 1 -104348542461442355982053269688.8244937008042649395729466440393719 0.1011924615133397385146965700803876 0.0365069220230282357800746069240176 1.0371899754016060799759920861067451 GT 1 -158085273176017614.0207532941088872443042034725996925 1.3999091263317474168219979774936947 0.0124126976071325368005190963184103 1.0124903786281235718575881935399609 GT 1 -5221105572380365868162.1376299776630907302988640233898494 0.4870653816021285257524160693225347 0.0128207754334373421690207392418052 1.0129036708594252549278376674098155 GT 1 -473972512259060394459066.5864739125695166588612060835766772 1.9332540559257985248040357701258189 0.0565322384606484361817368546203499 1.0581930837670023310548543578588697 GT 1 -1097381820140511745928424621863859.3774092823008112135614277732312179 0.4163649012584839310366383817549331 0.0140114304547536272149495709565783 1.0141105171999979438295218418786029 GT 1 -24989.9850608728246500219598028535234043 1.1051512651179328900462982736798616 0.0302957928646833987253218993037928 1.0307641950863110291118350102422136 GT 1 -1291059409594.6067437807324186813437003692545985 2.2895157104061410328538062772610732 0.0648447581558633941299008560326001 1.0670427294176786172392590801941897 GT 1 -33.4519895715082664911478373114398988 0.3623126037225651405250257441027095 0.0097698281878385527080702380852683 1.0098178660967282744722436676436922 GT 1 -780039933373499537.4780752991267584373165104035090647 1.0263313085517492323188253444600119 0.0122145797078345783035057817788430 1.0122897907616545574227679151783789 GT 1 -104226430914076698702.1523997583769639088862458441213750 0.4222546592479083218203622296702680 0.0824122644692608800364426641429230 1.0860070790684842983387350406514466 GT 1 -133550978145438837296020339881.5660688232084729609380031052537005 0.4032795658017996841511701245150066 0.0077945538466018305729269213972265 1.0078250901629094124637667164134800 GT 1 -47062.9170559809615245222700333909026219 0.6971505485496271376280405450873901 0.0650572996604848547903043875299931 1.0672700346306755470081725726767859 GT 1 -4769884105006.4514212452842396127903040145656869 1.7674683279206677546986379733178039 0.0821741629643243941508293542838092 1.0857476263654739152462151616503774 GT 1 -15195101714122782408677511086280728540.8723711500591345052159984427192443 1.6180548844740796428083135541171644 0.0975570694900777125502101144210100 1.1026498256665640091772779019597310 GT 1 -3409520797195756674980469578488.0372209340978509159490379188616453 1.0376481116247898315248703952717500 0.0449027370571949275240380142211459 1.0459420976739514659009093987528809 GT 1 -7499.5065757950537323423163214097319710 0.2526182661327762254745184508495746 0.0052519435426568800719682468143511 1.0052657834771151472179920866821282 GT 1 -33694863359047965874129239782808063453.4206207143617332879368981575543533 0.6711053201577723069765240824361738 0.0662539642082844069899847248833087 1.0685507880148416054497583634869392 GT 1 -144963505.7472017656664862739764719025637259 0.2380957821666838707812010580172340 0.0712126088869262838735142308104561 1.0738754241502563182697844422478891 GT 1 -1674.2374138875674618783180815971622722 0.5002663553121579255083701542302266 0.0637092199714719454778625374600584 1.0658291883264828519930888761319405 GT 1 -499593587558820245590603795791553.1839707645908091568124881477233571 1.1297028779162295995837006838893589 0.0726301817183812092678273477858306 1.0754028519994536545836035646977113 GT 1 -2006119444224123714424827507012319.1492471639422020990699926624176649 1.3215806764492031633881159713373850 0.0703185405290286284130314071720665 1.0729132682049577039166936525165591 GT 1 -378.5150917435304456427874977524717783 2.2056221626966850452079152111312964 0.0587356378992047528929673422852952 1.0605312414444225454308298454590484 GT 1 -9716857921379705922939667496367.1164427860394561862547419239593722 1.5408359594409037586159944647684353 0.0752900471756604951882756949868812 1.0782751551555709667119753269046608 GT 1 -105520922454749829948150367554.3965353050482877497603292025198958 1.0956045527778067813768981483292705 0.0367286089219170187882489206830415 1.0374200885300423091423328709774128 GT 1 -573562337713001980640408780312589705.5381544599868717808401183973772509 1.6837863235736038345610950807227035 0.0322735203375079347900269550648859 1.0328057939659537612592566831954150 GT 1 -50118562235531903664344122030102.0473377851359651263452712795711968 0.2253807521135324483354673324380920 0.0226970305195865132719762710188054 1.0229585731886595986473103556969201 GT 1 -1521656424404145079.1293724613550705545568607258604943 0.4387197467755543446236549577367416 0.0764316093604692910477895928906410 1.0795104261676502426013989935952850 GT 1 -1351569705292535477126153627077.4973594779994606697489538742382637 1.9382721285011180733730852705517416 0.0857694334540307124089389439576431 1.0896724783492273099321908738126021 GT 1 -103.3891190205194826894307316912874618 0.8338999119196483690886572477748851 0.0851089529568372270238559679562436 1.0889502950662868811828301102627073 GT 1 -5275216710534.6216596513957092852768691344262271 1.5715331186478999045567725247147273 0.0026164208261385062809289516746327 1.0026198496372225668268533446519474 GT 1 -912453.0271851311528231792767053381048410 1.7900439671835880959961907847049848 0.0064787512929561703950381187485269 1.0064998294917085992626738302877929 GT 1 -51404360580388325581660.1805184040612543451334170707451420 1.2531128514069045787489150814855696 0.0956890682281710893188788766723908 1.1005820266525396741993852227522889 GT 1 -2108585597675061065154042769430513431.4678791671474840882500272834552243 0.3712218704518591162483968796541500 0.0930180388942159176839706589092637 1.0976327175920300144510096429196619 GT 1 -406165247493592060.8652234560612377749649046639433599 0.0706843309223518080701817186897298 0.0224749697855656384158583557363495 1.0227313810929757832256404818622316 GT 1 -1507035143645650576034.3289999290370098382191694776766240 0.2016687042849122860689078116901902 0.0956149635649443876566313693857361 1.1005000840103590392576699342253028 GT 1 -7712619412374916267384157625093.3457026880892031226506029327973379 0.3484154176174804444929014893899820 0.0776935237781491892500294456837282 1.0808777069480823189907461070986676 GT 1 -75909712759131591447566.9196418433156225958679804150026406 1.4948689242489338225211578078281484 0.0977717139353105511655245992680270 1.1028877021775579513397780905517078 GT 1 -3.8262335794702843068231480815499223 0.2269481320353023979747572427361019 0.0647852414080152995856338308180817 1.0669790877341033834530121691675065 GT 1 -540517724906649464401.1255995849844977710144405745905252 2.3975672105778815090500790768319884 0.0995301356915517143761037763890991 1.1103341444097887771444230437588252 LT 2 -131259742025.4155446934907397121391957708245086 2.1084954665531413673497171089567192 0.0976693750219231738501040916760492 1.1027742795423967042057742593268756 GT 1 -1431879348656733993022811210986447592603.1521983931685753414589027125896162 0.2839816842059445637688233432483258 0.0038998383656366127717771741601518 1.0039074625638247385101190673744411 GT 1 -62051382612630949481633616.5961270881222187505334552578103999 0.5506763069964937237425201800034275 0.0074284794886382124973802118229423 1.0074562080484319617437795305959139 GT 1 -37475067.7233921620868483632777451141219807 0.0234050383135100322555298472390170 0.0256868045028009364139615828943311 1.0260224710756872117824291216793665 GT 1 -908583750686648377962.1418211533665796997369880149983367 2.2811784759006785913522991233817688 0.0518246164615415940030438540022843 1.0532157901056443387875305012870519 GT 1 -5025002433601871517.9132541102011132079046266266463338 0.7171006759676895684277280744554780 0.0047307068241465301387653257960714 1.0047419320337835052216023992404548 GT 1 -14140507500510091458113167415.1197985471161298460406459044525635 2.0072231029494567907649540746222892 0.0747264420403114450273225216408852 1.0776658468568747943947908485267132 GT 1 -121419755746848633311047435740.0526254933662101260023169955985814 1.4251563189161127892302961252508636 0.0897974061640111368522386723568448 1.0940880736607545868697752271822694 GT 1 -49926239665377371.0175270472393545069762552748038422 0.3820253027379050234872238136838850 0.0028941753655254986198292888149742 1.0028983715894096228512130287477069 GT 1 -515903199365.6518398350344121515206775248538215 4.0080206968993127240678789830650320 0.0908962172341608273218895493170148 1.0952960188621683847669016800216560 LT 1 -11364148126338959555194591466870163612210771.6123008522489926651928371872770742 1.3627082613152011599302925292415860 0.0804533628378709673730609453796833 1.0838745160911625820282010546645748 GT 1 -81408242506562.7645048555501135538603779357430679 0.2525264960687034533817976316882503 0.0784437912075197542993199713562922 1.0816915066706699766193296241635027 GT 1 -20582573810.5708120773719868118262078446904410 1.1516944560128857145698846593669846 0.0014257682604692154455801759645165 1.0014267856351775253813735313470131 GT 1 -34489637827992668866335.0052475101883151913297959365760066 0.3823181294769883602739822303318537 0.0251597689177592593701342517275147 1.0254816869683932531773042910940084 GT 1 -3066240644779.8637902539407033756960256969572667 2.3166674417731753376272325394656277 0.0313602767772826799696591676192315 1.0318625388868512616106024456479456 GT 1 -38019013343387280357435657738128.4474403156609399297452879843125509 2.9041079817941792843031096607585074 0.0673167274722863306417962074519977 1.0696896078716921595600455604338505 LT 1 -186265076429.8306893465513208512181907489351225 0.8410786218755664821782978518959060 0.0314544597507127325758454222821254 1.0319597758164110679541296559610060 GT 1 -180185257602.3113210665649716183864765702355046 0.6868519867975285413750177855009451 0.0194660244923839171066197457235162 1.0196579827399395283904398779858165 GT 1 -47885982317544.1317241357597725272094024516926939 0.1166825638687590019936676289611970 0.0737991916672718849233866840562550 1.0766642121948512793864576906203976 GT 1 -29306460252518344280519155166449328194800.4218943156885189799139009669210908 0.7041481828292920894870453113361479 0.0278436635479659917140342781732984 1.0282386474838309626373372698534386 GT 1 -1124180735156099.7356602565489711582758467060299397 0.1635416102780966591266787851432473 0.0411833337342563781554137117214856 1.0420553941514704701711010424657864 GT 1 -22462409921.5418325928502018135567884176571488 0.8930051635458647772605828732242424 0.0119697124913201773371669858133610 1.0120419263309778710362831945274330 GT 1 -2116677770.4742880802888732534529221702700728 2.9255450050425892356516330025450985 0.0790239872488395380891484867458404 1.0823212878530151750228413743087645 LT 1 -15902924608304822862995745606914.3155771330721411841570962121085773 1.1616586101986953222479176172544734 0.0434722696825429596123205516727580 1.0444454990767444697076144637417079 GT 1 -67177029527096093968825401538.5081071564982874916219195267513979 0.4444657994700240500544330962548185 0.0154408688686351472329707180095252 1.0155613206127931096684282947901239 GT 1 -27960.7195430916277879294083926513528709 0.2686378648672422232045656373417751 0.0941093165786865311352004975450056 1.0988366386943485962590743146790479 GT 1 -2093459064495.0949672335585650309735808928506417 3.8432229841889626374137419477693338 0.0954224557311395819213080596046158 1.1002872461810031529787913305884656 LT 1 -236.6063162175846697435654894711673120 2.7378872406382714916646805315788382 0.0304917650461311478814722512648481 1.0309663103139791769685921673887340 GT 1 -2014179309862541.6100103324083979900327628996795140 0.2796049868967846537943117543511823 0.0592660685871093694161075501854435 1.0610949302679224321002513384153563 GT 1 -137711869217477.7864397606202774268496656746782891 3.4466385074764143606177833342018492 0.0043873104355742693451926276005338 1.0043969629246602633139040709051019 GT 1 -6979234672823247.7904859035988194079742590195950099 1.9229486683873772628336085608244765 0.0282543326055093294557372389989514 1.0286611678195682832195110423108858 GT 1 -646170326.6999157561687330169649467008047194 0.8579173450843181365411675175641051 0.0655429440006859490671537455981735 1.0677896071292591737353793640544849 GT 1 -12502239277587876299.7467149347889391694333431548642071 0.9773922804791476848649633577592460 0.0210477395820848887803429173016251 1.0212724012586747837327250736459714 GT 1 -150194106.4004492729251207028649167793681456 0.6831555455354584591523202480412366 0.0888886745138127734033515826206995 1.0930901877763219464177405302641507 GT 1 -124101609.6483024875992590747466801996718273 0.7427228669317500939278701801422780 0.0648161006221371532123629117202518 1.0670120852065867615380795288678753 GT 1 -17013260150900861126939418856690095215129.5931217741824245776713055758834270 1.6113610074049532895394541843746170 0.0849193869527143475073634827283027 1.0887431158963192161164293028426715 GT 1 -530707279048499146346398.3820328688031790138465593924949747 0.0206179344950558239717571478731415 0.0217694248603990154063290995062759 1.0220098748333569024630058131705958 GT 1 -613714126783825154250747892482010975.4673997811215770895512912739297360 0.6853565875415477585400005903459555 0.0565298396675176044050723372365765 1.0581905412423087221873525955922109 GT 1 -1328937254.3860378880880486538963024456415726 0.7086607781801392133767134905224332 0.0240416278272320415585452179117269 1.0243353449409719603452092104628958 GT 1 -1812373506711459367747935313350084607035190.4674701967576921701699601578450376 0.3916992837289440164093031813686123 0.0101425274499537796074228083567740 1.0101943133389276172516040694838998 GT 1 -439264836927071194602926291056.7999619065070429838827874896502767 0.0223514413256901383867680438833188 0.0711875126060254360406618788814979 1.0738484040355451302310035712481436 GT 1 -853145.8805310887138336303598888740510262 0.2736939693042251237165025288334123 0.0013849267607955584627320060752854 1.0013858866582227245034758426956051 GT 1 -2819070049330699529923755488938043297260.2039433333310867061478870852086757 0.0306088438840315106539096741349654 0.0018589176975491789711814224191245 1.0018606476292518505351790682263983 GT 1 -1618431284793990669732826494290286878.7235462640228476670543496466681766 0.0517800297232217685914461718874652 0.0065367842003471183591570535242359 1.0065582425376524252340334631708191 GT 1 -910127752461533519728088577985290207319279.3360404581748485788527142618912775 2.4357628989403805622902555710043306 0.0365433831054894185034858432113753 1.0372278187169376365343477102143095 GT 1 -2757273358974601191056312152118.7857303474271062865083190217262075 0.2611360212630028304084711975527788 0.0357634983963960849518209543451165 1.0364186808472642466373109909322254 GT 1 -15121569562564528131933096.4025804938352735931831051806486958 1.8627914131061748480130514457379028 0.0604256075785583927120328387946917 1.0623282802709376393183998501866454 GT 1 -175195.4211388325002724613432919872885827 0.1575872940709241433321342153926459 0.0422468025955793928186570150433510 1.0431651569528447023705688067761289 GT 1 -64489719087481.3070499657834219185657943029767964 0.8458088705678268368114521763215160 0.0589103650289594147340087800173185 1.0607168889161821566612397467260051 GT 1 -404639.8371764850428823294975195453473414 0.0489920646571362508255902430401798 0.0037421228728442464941943730266567 1.0037491421313990108048895077986836 GT 1 -5.7391820652511176841412474154504457 0.0003974085750762477147082702402440 0.0206893220791635289425238747760099 1.0209063446889399076095231348912581 GT 1 -13118283744966124257622137994.6710884376000433314954596829042400 2.2669006269148009086245105974167612 0.0583422619952542789083463686187062 1.0601134058795294429693827542545227 GT 1 -94608653902976249179121704200676359582.5851812716376552862626837859192594 1.1848708504842186513267580912260666 0.0037378727569804590904649013805192 1.0037448760604391488104745258981355 GT 1 -389530743412741902790581.3450140012461148927888027463916773 0.7911312742650692719318432774398752 0.0269457733809357046560430537801574 1.0273154669831220618622511424601811 GT 1 -1.3801292043647046011430880257382346 0.3755009999396384703542209167244391 0.0288823665074402262739776370878610 1.0293076712802275368285180400849080 GT 1 -1054916160929276253121729107115264.5351978925829892866729347403450396 0.2050890314732417267196806996848559 0.0674559143801567797266278261106215 1.0698388517775579121729768476625740 GT 1 -520948067362884373086.7356833818409872193680108469092045 1.6479371246083124944408593525863705 0.0947854967960466123096470822857939 1.0995833432521750422426817741653454 GT 1 -2252700679033293842669.4892774949781319468196566308139617 2.0767633465499646634869338633472608 0.0365697732264568849319918916230524 1.0372552101759180505394561255351690 GT 1 -121599.8433967473950908693528816781873773 0.3853994532705042215114761513108648 0.0042501996717420251473518255550790 1.0042592574443724426769958671829069 GT 1 -1458.5450147411741356903165745264635912 1.3304829679890151382162648434766781 0.0242172963506571842168957383890287 1.0245153570604848077064084685556099 GT 1 -1510088332321619763641862434542.4284371592876811931818065460292681 0.0592818854002311517704848647097347 0.0310478471159361051753245930258315 1.0315400461391193637351715527636721 GT 1 -675370990639.1964836166367430120728457315744707 0.0536664288772689851450369613107171 0.0352746869087368697395525254401261 1.0359118678099107565335677754489093 GT 1 -53986414164169256344189430685593368062316.5938430130455858262365794902379488 1.3668009050415703625982506396802368 0.0045487586745991514967636984550937 1.0045591357578616265679557194449473 GT 1 -1815362084156186493.2436454387999976041344888209714110 0.9412467047836757633847107706586531 0.0040629526262908600234721829252809 1.0040712288431705159175932378372851 GT 1 -37284240705991749415722807401069312323.7293038821200814346470796677603736 1.1451998521971840116284987515466102 0.0425598373517633808417904300850527 1.0434920531978932816195074111203064 GT 1 -504542473622077348413827004120.5045392766923745716721330930041053 0.2723994195957460511895557571789941 0.0147169593921339918575156922315751 1.0148263282164725254506102503900481 GT 1 -65917961002671917229838460.6864884573626169687452480955757513 0.4780325574703569958335679903682421 0.0486433472478497959697336462399457 1.0498662575605414457820278330315288 GT 1 -99982679464434695650066379551268425.5224991213983420162297582451433190 1.2239324634188112106719158075677510 0.0292409732614887875015951706301460 1.0296770116873391001215629114194602 GT 1 -73589608192547140.9784447218504291458368106641692496 0.5334246195224603831679440104600569 0.0364182936369638288238716005751770 1.0370979931009220416500669280148383 GT 1 -2409836343065717660763241.5292111970567224612470408705146079 1.4810952720539181264613215155217814 0.0127993835245409409782807319952259 1.0128820013625507849923925412115190 GT 1 -14028171575055043844027282786893626497.1332927404035791774264223865751304 0.2679322305658045638740282030778625 0.0199867828741606696366510203115847 1.0201892205453650113269454348427622 GT 1 -462302530133610046036199.3361360671085978556270941727829554 3.1233219736794519962448030044990604 0.0949245507203528399650182691329211 1.0997369693874678320653334511232738 LT 1 -141375751045958937040242.5344821228311127538247685274794829 2.8530205342233450455864980102001496 0.0219848889132141874754004090265351 1.0222301580577018785462155972093589 GT 1 -43703339368914752529844871149960591559.7278379582661624337566278905477619 1.9868323258670945671672747765620333 0.0960448808874139838484378371679535 1.1009755668217653714810695809821488 GT 1 -423231735885872288964402168823487144.5089707067545052631293841581845955 1.0606539518059954266847540637771349 0.0146176543325238506810769553031171 1.0147255449374990326671220517294960 GT 1 -126677.4929520855574844182377680864882726 0.5724239152405270827684086228684182 0.0925051022813233019812404287185464 1.0970673352075022903084547828622136 GT 1 -14984479602414218.1246863050570140150245671058761622 0.8466441725773451955178146759191271 0.0889087944412637683798474066005831 1.0931122708621579374961831767597398 GT 1 -122659611085775725223944301266919.4056645781457376391595634577264407 1.2868266352418962098886674539345268 0.0830267475167243796980246274882243 1.0866769756535069560182149092219506 GT 1 -1627964085493979625568380643541999186542379.6076182905802075397685318566248093 1.2867842690639094249346073469819319 0.0720371286301515458041088971105624 1.0747635562960621283602623252837713 GT 1 -1540124181787844478448099.1273917971643678645267724110165463 0.4688620443086623075802427063903718 0.0193658633608873451356865461371069 1.0195558383791748415352332577288987 GT 1 -12200815492998668110504262945562.1378710580568171418321283373984516 0.0386762714202338837397851619930855 0.0817907611503917648221190378546822 1.0853299853034472120274614700025365 GT 1 -6662819529390628376.6373812442517217628295030574376997 0.9702437170173867573294698671281685 0.0230263266202428306264368629175869 1.0232955736895619405788567556283908 GT 1 -90413908171164851827279811.9495000400141775961717641078834857 0.5176476794505886697779924200792876 0.0317914595703935531079795457916799 1.0323077805800966946742393843471716 GT 1 -35050936599887.4466112825335128541543887489543645 4.6453551473634533679022922848988803 0.0545484275414890734667795460174372 1.0560926111710240815594609737387446 LT 1 -16960039026508985382598705949731331602.1141418474118512487649035903410438 0.1114483024449787783473609687703146 0.0357827155820902776560716995339099 1.0364386109963133194943347245048363 GT 1 -11157783308022970420881901571719865994827699.9919232577224103489444757046431992 0.7540044533748209929246894486265914 0.0423992476505462279291956042225932 1.0433243390771808589286848684280610 GT 1 -5783869428.3298996004595572812497072050920744 0.3050531156252515855038644265621043 0.0257671636195894516103417249122768 1.0261049521826453464589459817076210 GT 1 -16669615088.6951664143287332583443342999969676 0.2594875068494457134417180977676447 0.0751196771255692395196322394518341 1.0780909305164046136079040426993235 GT 1 -7406332736873786495807543214776806844.2055525348098199978536034743966148 0.7981155982026397441368808868227763 0.0884440288286093554857310492038757 1.0926022811848781027027056950741503 GT 1 -930309177184408746551720.2712339334897192044815129115957457 0.4871307879918715684872891380752019 0.0555943089760960568817182947450481 1.0571994477153400335589509685874748 GT 1 -4024644720228037929904.8477843553453694660856847127843252 1.6827846170749742242485067161995943 0.0214830460877833408959680095992037 1.0217171658656351904694393577420389 GT 1 -2190709269616903105428517756908.3443842115847212447930006942276204 0.6052342863426528213587181141316372 0.0608005338297329805203849123962952 1.0627273982961720557526444594179175 GT 1 -7638328554811708734558.5864621943082129373258889322617184 0.0147188430332639139496089129884493 0.0879469151715467812075687628339519 1.0920570835530276267099562376279336 GT 1 -727332079035770387535.1584843690107123460483671608327674 1.0154013749328797200401864935888754 0.0218559860811738624239325504367260 1.0220983662923192621394694704259463 GT 1 -867911234601692016536.3316145171537758146949232438153717 0.4323922624141373375096279450389002 0.0171883470906285326936275914933647 1.0173377815582625432185079448058546 GT 1 -653287189332.1681429581324841037511587510284114 2.6195131388690038646418622374114371 0.0660067308914488111783048094742988 1.0682860473011553368833106685422682 GT 1 -20636.0916685378973269244268160854802509 0.6007191882411148317074027288342969 0.0963046128076073446541339366190682 1.1012629364444605194296336934062190 GT 1 -207287096901682607412243729355941713542804.8093995484617604504943696209545344 1.1158509461788515474500098434695812 0.0215089177531746365409127380010907 1.0217436058852107670035258196934046 GT 1 -313175729128939.7123010202077786587609983554179695 1.1628597353064729332848350177931929 0.0243103815707406569005324351547368 1.0246107570506367786857095152834344 GT 1 -42244420763550979466.0625494324026331922656560792096137 0.6351391870724464153666427237706621 0.0992938691031471671332752418006274 1.1045762334021801193086697662518361 GT 1 -2967390032660451119503299165.4074268507020936168155837198546083 0.6844914056624758131685272174505815 0.0823991875084718827126516483763942 1.0859928277145258058041576709805604 GT 1 -11987055649.1383028570419044835522199241720607 1.3054341763450521604613278839453442 0.0909101423799012712597203544219937 1.0953113364228851414187573953681331 GT 1 -137800654110037214920417218410819047930.6229122151692840899530173943461066 0.5463597043407674908867471611855289 0.0175239599348505638996634064780014 1.0176793222382191848699065398864645 GT 1 -381976316326786807470390023345877401621213.5028162569115158932319150933006699 0.6790357545162278719413548755202803 0.0694536219156191395125508021640819 1.0719833620308058691524646495385989 GT 1 -16887049907315242414965494424300379732.5825403662413730179024718881932534 0.1113102976046415505255884073613818 0.0446430319881627778007280925428998 1.0456702198488521365894861035776627 GT 1 -813.1024868752488141364175553668400321 1.4117632098842879313115918729931568 0.0102852765864609147607982440281304 1.0103385355471861873100930598869530 GT 1 -424259121956838420518962057.9531202904330634053535826523789702 0.6498097397090119661603361697317501 0.0222066389078887013619770827686287 1.0224569184984905149467292299115480 GT 1 -89930623277544034605592.3837556877005344176349240627714971 0.2734317430794798666693965597683683 0.0368382450696436549434440119654594 1.0375339114759069701275039250354356 GT 1 -3909475.7923379952750836743035860045422257 1.0320448317626414680736474300528851 0.0410659412882638122512507375846943 1.0419329669302365198993979440566370 GT 1 -279007033708417282936.6944213011498228143268596664270313 0.7509258937907351813012028643645446 0.0063396203921499445879159425512960 1.0063598011228356982173361656721272 GT 1 -8526175145672607503198137.7085243075335071900241601465436575 0.4889130083736941105407371163349757 0.0303602588110822983283230178425210 1.0308306773072480096392383495756563 GT 1 -651114306300533874188.3023381860695062878857904642199136 1.7537165119867764806676142646575094 0.0822337164534690272285385534398989 1.0858125138625357781887851197259295 GT 1 -1992636105288890533.2707173459183846269268390332425065 0.1653940808778278555087944110008772 0.0889394766279543041589297080314344 1.0931459477357204256690754413088048 GT 1 -52224035386198191303318302.9143696875646223522595650661102015 1.1609156135707224188421985128356824 0.0610378176392725346158890208755766 1.0629800749611306916231446266627628 GT 1 -6815128059604658932702.8655929743528271364384368855774439 0.1901197054651566189112730516152315 0.0312719150502863699612777967688681 1.0317713205578536988750699540615160 GT 1 -470065228.9279566242876387760127239286344173 1.9993661921953328854740190140083837 0.0308694217060970429875660410027375 1.0313559204488453466504014372738013 GT 1 -807124802221247462713530881021519571767.3602618811952676620697441859805117 0.4787562645261069812112569193938693 0.0734668451334814083106209532952307 1.0763054488278956525556014530268624 GT 1 -536519102416905536103107191.1552032587233652161630206278864908 0.1121588858997727066158039841990151 0.0470125715265562547702933280530204 1.0481535669433345292065267588407360 GT 1 -262967359645713987153989454274394019174353.4049176945679372088726394999266032 0.3385897992840371186443244471136211 0.0574736024198482737303832992579156 1.0591913520095878242433075142717423 GT 1 -29.4251195062405724897759301717568860 2.0668894923049525132383876557066520 0.0880058633564976871685878023349885 1.0921217180474392991513310357243740 GT 1 -2018030552520471675262900254140760626.5030547227997330559150448922745792 1.5537552522279326615777621092233433 0.0173349256192777339670184826781606 1.0174869347147316478759496142606069 GT 1 -1984172.2193257814311206484833601099708354 1.1047441639718629948474429158006434 0.0224445851103114164651472390381642 1.0227002983052237426132332560813017 GT 1 -5782189935631270917.2744115769004756440983614650808986 0.0113266179770470225509264721748759 0.0216600882544241549321609644302608 1.0218981113095569157289614844249107 GT 1 -33570752130638838795842358701197287.4273416924173407109579052132148336 1.7568367457280931359904061411830543 0.0288160440761669390504865159124957 1.0292393786611405165480674984902165 GT 1 -257473967362157426189091709880005156.3215918276384981917725097568491673 0.5925907473251917611050737147847172 0.0895788800576655506983793483204277 1.0938480173484686191464004550251209 GT 1 -4363569735513658619471400848290687501497176.5246311228484525202467081779305729 0.1357150480905777518304454474713951 0.0701340789231795103955219421037340 1.0727148741135957338200265609476780 GT 1 -117701587874560408562005733.6200528893595097934513151895556613 1.4553401334931468538104176607213454 0.0817450728261826152648715329677821 1.0852802284662991107559786484579749 GT 1 -78063868768633071528871891.1846002790944704100592022112522359 0.5178507372054413014566311824204907 0.0461584791432625708988116311551334 1.0472577420286652888917903102538748 GT 1 -71230875326872239730550478823286748493.1925677732984599561166839016909894 1.6748038100032897886387536644038382 0.0080182103909048617606534902166522 1.0080505291146566446442190792368648 GT 1 -45669878720275195217125779391204965.6035283688376202001536302105733536 0.9667051947214910325986917921755585 0.0382994083910487050982860555415531 1.0390521120939293750692032150110162 GT 1 -272457528655093383.4459307219371718692477477056476450 1.4798977561169538912617573620794009 0.0604778970511602308246571284865625 1.0623839341160107002311074187478807 GT 1 -2.9525799690302954087273425690443234 0.4598955158154508249516379952748017 0.0772146296128187320779199726663575 1.0803586063114778369511045821016992 GT 1 -13224085081194002258792.4428431213452793429722411828507959 1.1528978868081161963929651881098172 0.0551006545103866963659388915334864 1.0566768698706796681667190045970663 GT 1 -1.3245563044634836858503994527206358 1.0037610493651182596623427934750198 0.0486253903244478423742726226173710 1.0498473826686877476416691102856892 GT 1 -12893649044015741718902.0094743062366494218696489361979675 0.4686145161380320274491308268722600 0.0843350008943795866357007656327866 1.0881047027008389407600112722452897 GT 1 -20746654614838.0645825901437972410012499927148955 2.5444453925026099232663245783630041 0.0127049324148307585289409645981547 1.0127863302394942054881842386493632 GT 1 -4123225792.9532525125697456617066222206472477 0.3902170285447639928129091797194571 0.0543060053905983032764753320921357 1.0558362351876623475011222498934497 GT 1 -5955691185278959593716160224174201.6150325594330332532728374203513158 0.9822455183660421541107515143178206 0.0184164445011240846477387261934680 1.0185881384775206861360131658839672 GT 1 -278363049.8414419634029842164381563506321664 0.0852661619377937363549639458224036 0.0817500614742702616291961840728555 1.0852856612295668066434365966671537 GT 1 -49.9489140058954848333110491568336021 0.1717284420576191573779131049688204 0.0246771036152251301868281351713473 1.0249866870316274890460467095565855 GT 1 -8467324244895391358424219952624213958628.7601562121370561889616109295935448 0.5089968787315578777471322067897787 0.0094502772532646023826249806489211 1.0094952144601441656505093006018876 GT 1 -43.6911436712747704714929261528799695 1.9509252608239494743991997876596896 0.0814348699369685817579910578187361 1.0849424676813589335249082534274842 GT 1 -2327305867735549901368161424429452804756163.1752401658870025455258130403313913 0.0580041122275488032662221239995956 0.0697304443306122332554940754991120 1.0722808900259329980081505990869921 GT 1 -344413594512469829814294460065604818773.4880592905276529193848410879595369 0.9522213623241460170118563172344267 0.0999625794829956855657845994759832 1.1053189381699550132381281251182350 GT 1 -4829644980.2662141630994728085639832518777003 1.8562826545906940719878703533784044 0.0583135797957262469017497890635927 1.0600829470816456562606689056889688 GT 1 -6662258122381237224477136097931420533.5368148529124957730244812560760522 3.0327030107578931855837439769786157 0.0240861989560419567096099731760202 1.0243810150718639931589566333337763 GT 1 -48200.9394576340190223727213966098367033 1.2763303670456802536653009882079139 0.0235284368140768254623854527101438 1.0238096502508016764445521208295724 GT 1 -4.3478640349495070276860281398221825 1.3007807972073986253530800079722886 0.0110642348174114125229717602079755 1.0111258987279827180250728822603149 GT 1 -821348434319613803904512159982942462395.4109621514694365142074038690970661 0.0483160758443510443045760817388577 0.0942039589992132835536890126728119 1.0989411185907203437691266102249956 GT 1 -231082569277378204651882172.9900879378747973496285074098208652 0.6346706673329579351113095598144535 0.0211307239363635136201094501542604 1.0213571733921731760343872970623846 GT 1 -9109025795.5922620375793303697031467941602495 1.2010960696690090608889130673157974 0.0649908096682161831984191878192190 1.0671989205099022865004664317234311 GT 1 -68937164811372481578098803004509474886.8290608559657217330272670773783554 0.1539716324049872133654270796857012 0.0143139605578553454720749363133341 1.0144173935010842304108025164051913 GT 1 -1312456253.2452569147166452643866099582113276 0.5800522050273281364585043672154628 0.0128271369834775110754792980075497 1.0129101150494764614993756690549358 GT 1 -5596698656616190904581278606.1472840308307951480351257973657525 0.7688315438408482183412292687943073 0.0192585381523620130275306269719355 1.0194463996681852135086209724982461 GT 1 -186502870215774159496568125.2538418655913203687348441941357349 0.2649520525494451326162982589454699 0.0920135573769587340512888676733959 1.0965258315242056033761640706268255 GT 1 -84.1057820860564965141982892725560717 0.1479725613240937930884799520803391 0.0438563656367937182735259273285725 1.0448471320666105217366084482244024 GT 1 -98059470290578414770359777258538266.1321919773135431781674381727188407 0.4513531475668923581130877062202321 0.0690005905966576429344591857584924 1.0714966360733245154966328056410658 GT 1 -678151297367745854632433.9949186165479624865006233194766882 0.0100444683110109174158517639873401 0.0386580136096821109723295494920656 1.0394250681864182041426990535284980 GT 1 -2349783133579183337428401745601279098.2208670812437343815600363189540729 0.3859550613375223552856643625761117 0.0708579654765265777697583287405256 1.0734936621631610215606824029784521 GT 1 -6053042032397583628075108960131.5594395933643649430821137972309713 0.2307336953247776093254258566671266 0.0855434539796032259536133102813048 1.0894253289336439765925028906779676 GT 1 -2385969381449215742791798374872.3197844451462459715459416823715678 0.3000341182387056259261008760458904 0.0712437895129777719550830848973733 1.0739089960416806245689064230095675 GT 1 -8754996700009681978.6073874634418251028476048537714159 2.0238903835915306302904748055548485 0.0834669790461652085440421836848943 1.0871571829418903367964213861979086 GT 1 -18958039534746113496638.6153495394194555551092880121042997 0.4603944554657160215847840442890663 0.0766193008806699794297649599081773 1.0797136710994001460937141539061468 GT 1 -2933611279213834656.0216305081761168677129596722060292 1.5232288757494518452280159217010841 0.0341627927182844676990971934371465 1.0347599814538243168245515843402567 GT 1 -362723680.9978871371621145807272768489557879 2.6027599554442115385560021260524983 0.0366880604916082600215698084148965 1.0373779949131496491538760650222119 GT 1 -462466527144.9458638124938900091087829019331304 1.0713837731573837571675974706878068 0.0443934987556357028890228801925794 1.0454090602422349878502470658041590 GT 1 -9623270085364429112926113830232133297946.0311475076342855545344186566663003 0.1310976029150255988403665023223723 0.0197240678444041064493234864705925 1.0199211835249838745538099122116555 GT 1 -791351582505603675249285473197546618.8676188955952276724737165888263371 0.7383808450980111020482577446789993 0.0995935663200687225456287819895781 1.1049090246175453089493064781489067 GT 1 -79708928007046395530487.8796654368971465443414158312757141 0.5668008815635816006824607598527657 0.0774162385900931179794466855497905 1.0805771089130469618229398407530900 GT 1 -18685846297719828865473069376.1003746692137137005265744382775874 1.8344505119220881996755919187796447 0.0268441008678340514791680500347166 1.0272109844179058304652328594835127 GT 1 -10292388152454713023686256.4752212268379141335144599971285345 0.8887915572844532425480208134325454 0.0212139172301610260917579680971604 1.0214421661805842744566952475432351 GT 1 -17605567711881294109342248129749728077777.0310189063065486037847711708123788 2.2537848447746905051755268408439075 0.0280956966323653089513560723449431 1.0284979326940234661305913133104149 GT 1 -9065.2529514403578020513278538188995908 0.7186248843175915979705358277275232 0.0973878197643725668741601524303868 1.1024622970695770287658767510938485 GT 1 -20733004540444715530423727685738950880113758.7727242452315070196008931411942530 0.6702275600023076470620965273659812 0.0030745856364164509616143618065519 1.0030793218853276224008956823093886 GT 1 -72927970120970022.8522790799819778345193149649506812 2.9724880053518968638622501819437045 0.0273901756099396675907516367730755 1.0277722799015717341914137390607653 GT 1 -16013748389984504286523.6130592292431679003082252975074219 1.0270340887668892385804915150588634 0.0244855821480215108558960118120446 1.0247903390671701316412037303387083 GT 1 -43589298239.2389295022389673586851879472811749 0.3174691266835411280091999109441588 0.0018826108131435359204371670974738 1.0018843851521566808363713903899085 GT 1 -1704247466044788938701254261177176806621962.8504180437218157551990160427118644 0.1154496347084764937256418474447577 0.0780805376865513071964590410997350 1.0812974103108823877204339984126061 GT 1 -2.6846112158471418543706973628582008 0.0584593094281903400995203992776280 0.0473238543290716004126083988558473 1.0484802592404506712182378137174567 GT 1 -31069032147442113857051.6876852890617488247263418021068790 0.8289294617799539153671593539946208 0.0917030814905993229404043433959917 1.0961839510709376458662851691682069 GT 1 -82787594645818391107.4829425877549537312552418755085137 1.2872682059370891627238702291064618 0.0102927199209721852752496190942569 1.0103460562623223960596278113130693 GT 1 -2952449446381507365834577352545997213092.6144224548834789039185823575637241 0.6120880215037791286106417180829195 0.0257762734141120812223447539203716 1.0261143029628432148551973705945096 GT 1 -9.6058264971164415601859845787698973 0.1052603696611444264604952178350841 0.0180105869518238979134779783918571 1.0181747516957906393136661870524268 GT 1 -217403636179549764343710986408.0527448063437059529209078841965401 0.5634990962268846799598915874925119 0.0458295452585691036659145334960424 1.0469129497609448198043467459043292 GT 1 -17543697283760796084064250169.9027024638285661200952488683695053 1.7473536345616605273494684446959538 0.0750245933269971420891678209624183 1.0779881292036999762119814672693778 GT 1 -447898384524820425187321055443971999714951.8149380345544774260442968866694165 1.6240212108190133417999803275915748 0.0102359813189595987661372858079546 1.0102887292355919089185293361065813 GT 1 -244.2569911848523917531311322439325817 0.0398110030728481154333320724976696 0.0523910791890503881853351254698226 1.0538133926314881604223596493345198 GT 1 -905135519943468602473319905999308275.1048393781419803283770668042878131 1.3981382578716486582302120159289581 0.0036695220802939126739096269790134 1.0036762712924235886051909233917098 GT 1 -591498067861548869804365627321620.3252651020685729821292436325234800 1.3489577419767332677361876501696176 0.0481920145231981229438265361821719 1.0493919604618599848857235995977696 GT 1 -6053753632968383081640319.8783706481507476481562666116698849 0.1608897267259857352787624864843812 0.0509359928579992219079403804564227 1.0522790357109288548857231235260799 GT 1 -10173516181388107829154252954432691897275.2012525798990571734935390048165520 0.0305307986223137928862748591780877 0.0149340503238308413964374102862338 1.0150466860654077089935752996895743 GT 1 -4614622244780871816508771671384.4724751505013249529113977107051473 0.1507400133775976186875298660177745 0.0920277356724817696323054340064806 1.0965414467421828144518488465734274 GT 1 -1317091447721621588862261069699991380080541.0546843930047052390681469668347548 0.2034727328490278241962781465053518 0.0231972668841864669993591733406772 1.0234705581594444724257652393610796 GT 1 -113898.3926253648381706074945057702441977 1.9049122306700131869880512255867262 0.0890842916867032143334752466104499 1.0933049125526433217667029125322541 GT 1 -7165630686065047114042480100283450841379.5298563901565108655251363990503636 1.3484624159998928460997415204751244 0.0512179463844288255550768517026046 1.0525761657409497724170321879473862 GT 1 -6585011834527457665472364897190710281464.3131017881627747281281932157561600 0.1150941941656496390114587977126575 0.0525184978484423472156737492372254 1.0539478650113176977690430352155408 GT 1 -3818587439355626482989638338797429339182.1084825838329340167353766443037907 0.6091027416680677344551630636921660 0.0888197167002877220645972986128294 1.0930145052530358853007708213421985 GT 1 -687057743135655852178487664606521.2781400109907805332457676365623352 0.8819757281793932640530297618309928 0.0801886508005552403884230386580688 1.0835866851837415699250830963852962 GT 1 -277462758989441520228.4287222885342187277362697342299115 0.5675930940408691393054901299266873 0.0057227983000072491609959485562842 1.0057392362542629309685379185403707 GT 1 -347272886100083.6457920663725025802696594039655377 0.5360436076507528949539545618152350 0.0155256416945143269416860044422464 1.0156474266403303073421776194360923 GT 1 -111981904800714793.8273018486939975936135606329989699 1.0786621205146354752069426137579974 0.0764362313514719860204748870362105 1.0795154306725845144144234661504457 GT 1 -85926920105656330183020295266062156140669.7643297338526216534978377860573723 0.1822906921097315093399130353617491 0.0356950852378101677212384667295572 1.0363477327638743296829773413461605 GT 1 -2127992500585.3627803657901753940304719713992638 0.0901252781875936441374492530474218 0.0878232169591052203035316923954227 1.0919214666389425342284080881250127 GT 1 -432508663905507377367019914893641.3181107461727254710274510840011865 1.5299465775538870229428568250665620 0.0273246723066305762295256750513662 1.0277049341931405630072154326204130 GT 1 -47708579818.8734820545867128530813428407561114 3.1251182801808471061523101081348686 0.0387867399540644061338838736529770 1.0395589799112576049404992459168661 GT 1 -2662721715769714745349645980487942294.3957192977826881283534182716373586 0.0186470736798490598346421336303522 0.0512018916134105851456260576140377 1.0525592444310203052995929748719147 GT 1 -112572679178296.4090182407609313924849215071432459 1.5479544592525472309445639767216886 0.0810683779398587804476301975682487 1.0845435641169894853441846100269348 GT 1 -427186194310018235952205.5004793667941226113364465486278823 0.5582911690513468245471867555079627 0.0303574477853801756978210301488527 1.0308277782701024777132003727651879 GT 1 -76.1339352567099038007257420444058065 0.0045261426982016836213044872573898 0.0745276324623077886694962803782568 1.0774510042077251683491468037923920 GT 1 -5184319215599527705048810277278112232959573.4876329938436668800905753731844900 0.2497039468201537335205773212298112 0.0094438609710519376929687112161429 1.0094887369847739841185831772338573 GT 1 -1074145208855817889098755399432891.5870168101289717937098625868990453 0.1525973714733367241148261730300177 0.0730177714924947064920422231227261 1.0758208845736123085265820525546406 GT 1 -25718031000832096492559215577902318130.5676336220770520356146669443107346 2.1710352233322475554240868614657294 0.0749572543880858954239769732181636 1.0779153310650894801362254595422464 GT 1 -8412091105453486595666.5790503138505338175749524323488661 0.3314837655109703689898590147882662 0.0658544692147795911339950673738255 1.0681230383459159989721601726753564 GT 1 -22266080605172576.8746290653232432756524163716012858 0.0111590286859574714482004686477655 0.0703193377336161813072792751734980 1.0729141257082683640792053453127933 GT 1 -2165.9762467683204609112083612651446798 0.9233462868478068343162981429021433 0.0556223121833630087526304539835827 1.0572290998264108053574134198865479 GT 1 -3607398046282480424081149308894234018639.1740791853518101137763955235807739 0.2527819400913500327168605876699985 0.0107181929687586405513048017349348 1.0107760465610190585054900504430459 GT 1 -8478497833428132546878653602256512699226.4138317592477897080206642527039167 0.8339816710263249748586295457283196 0.0908564967920559729502570017248434 1.0952523279490372809866336771741769 GT 1 -10647.1431302058918061992832443091263949 0.5122662025919379444709856084419260 0.0493577787833663838497759812534918 1.0506175004544196033050297478877764 GT 1 -99934550744191594.2053960812301904759694260905899699 0.0061837806845526317880357141916221 0.0639375816925270145410862422544067 1.0660731185020398453140914288716728 GT 1 -112460.7645927706465285944951805300626715 1.4712769852709099069395337847307464 0.0644641613039858293536949379032402 1.0666358243320789037487998274799853 GT 1 -19080219173.8663233808525981809128837585865006 0.6287847826476717823369133713615894 0.0871075900700142581798022898814429 1.0911372476860140793825788763443653 GT 1 -462222173.0041231248745248141373933571898339 0.1764815773234693107708660044487361 0.0765083944077782665706500477882422 1.0795935691597672937457422314974297 GT 1 -490742600764668693713795676118772526530.2040429433697070858949398769552702 5.6506530491589435759048171015816753 0.0853377079433336130275195340372704 1.0892003615527889946450395704292605 LT 1 -1566300954172760.1020812785578424129607636594693549 0.9075064066433828096955492558615170 0.0617548177241216139521976453435116 1.0637439757780813677574537645866277 GT 1 -8518889264587693807459021.5220857320505936632841955913146054 1.0689759102840854714723904122739240 0.0690551290878826474733979484282209 1.0715552183755095860959344688124394 GT 1 -84775025042878783281488371191.4589790135158278850061965184751409 0.3912258386642745493274826143535812 0.0964957734501435412878592138791361 1.1014744909864109865900722031111127 GT 1 -44378.3819951632015313033200527774974501 0.6618724376542412075112452910705410 0.0596377194117303416927646683170711 1.0614900730863339690305908198812297 GT 1 -221403.3953409097704204336843773959027287 0.0477203148439321791282589999621635 0.0784700655657475698081225831507888 1.0817200179351338244633656653690562 GT 1 -66496780830111663322935101649127745432.4459896364511870776068445257158588 0.7836969255725645787877592423581842 0.0242273501627107330182488009848917 1.0245256604444351278337079775485115 GT 1 -1723565191793400819.1437436102240836755454566411138312 1.5048716697680891172122602030400180 0.0044402862329293200871905121050912 1.0044501735831435917374094810404819 GT 1 -42283679372717501533203057920714788568663.6654799749087491555830422888238676 2.7480421663237862463440254894741870 0.0900341742768569294040904586244680 1.0943482343268083177139099386926346 LT 1 -3624834225145.6098227677432140558125084451568354 0.7471331117895804964529021117652445 0.0719361991401830241316597990424550 1.0746547976326461974363070920259204 GT 1 -1031901205014040772436603562011.5509591238927422800333913262134458 0.2479831147209046598345173414534894 0.0295970102518986673182489545826324 1.0300438404129977087792470101794933 GT 1 -1185.2672982796673797562214755145357055 1.4971952643492047473213503467982893 0.0656771742290091684928246189374742 1.0679332626018629388099794035937099 GT 1 -5136914532639637954288478800746817809.3489921256981553788331456818565799 0.5205128735915067886461708300917802 0.0308701004011458267813702093593698 1.0313566207624064235258082703319386 GT 1 -363817453798991.5358573428154891114088906036489015 0.0694718247311798361731262407210647 0.0932134025839704906631461976669405 1.0978481405461794806318603253409148 GT 1 -183.8132248881581840126655569609713009 0.2670876267736277072985671524779338 0.0091155764577827749095296794121350 1.0091573775461169386640347732506630 GT 1 -287911928584983531.7462079599326472325391023271001847 2.0904277304270619993197476979297544 0.0451002927101510791474003461281283 1.0461489625609010917049875988994662 GT 1 -1485.5396283933777214961487780389309291 0.8358579084098369758258872973013405 0.0994723263423495670484175654686136 1.1047743834028464026135071217143368 GT 1 -976712557433448784368105005317.8393417363351916858267066546082181 0.5161710252535285880461232023682537 0.0269529221909312494825501185575616 1.0273228137846264960602966536272573 GT 1 -19470870480671276961293711131207507225283817.2400107737304589631633927004319517 0.2328154507625649222170865391837049 0.0107479265477910782375465042050412 1.0108061027347626294074912412049848 GT 1 -296909851419136327316947993360.2983516797434638656063602808217981 0.7601750839014942653213402460623718 0.0154801850867292198868212570394538 1.0156012542255903755420308479020117 GT 1 -17653267543396918466.8005657988098454575731377676717593 0.4809476602638438896199029973721780 0.0713295958912066252484269132983563 1.0740013887936909806738296702184796 GT 1 -11798358661633560492575782893663.7275726361023557562620745108856372 1.5215418161591628543361127726486269 0.0648197885035215963040996826443027 1.0670160286969082518203431942138731 GT 1 -270156995947960744085338.8063727076459438807807834713349236 2.1097410809712998421187479125026934 0.0130629291870264064742364295506823 1.0131489996228525736361235251571676 GT 1 -29445402378821730828644705964.1700787040956355071190136546581098 0.2351020227117965719214429438422143 0.0350501100255880962728148832026164 1.0356791064790858463981773804762820 GT 1 -1661255337614153876330449716.1371409259138064999348750632798334 1.5308568435495667081466705976436139 0.0320742038395751465489313725470397 1.0325998515029124514603142813888482 GT 1 -16726391276389546505448311058774994.4578051029641592078926001473627733 1.5023588099269339146444981344318599 0.0928703992955616718026448525456229 1.0974699496541719049291922972020611 GT 1 -18964357877756708187111846398247220995751.8896022586994446956428387216546460 0.3280319079870888704057842925558787 0.0704292366476366928454773907704642 1.0730323441618182166364837289341869 GT 1 -92409794825257300638267340746258683520.7786156015518536455112133115281005 3.4077755290444561628556326284251360 0.0191278289703597975396416677029244 1.0193131326679921704195125410991943 GT 1 -1497121.2651665220671461743265083332010272 0.5328979191327794350531605678325425 0.0470600244216963735174555628740538 1.0482033620142790419637615597223891 GT 1 -94170285355728232.0804773532501028642038822374136128 1.4144114574971705199758603486701129 0.0128271953710767133478428698853002 1.0129101741957548048493933580688403 GT 1 -782505828863.6870548066827833539590437356531267 0.5181633208706721988879338600653651 0.0259294241050517800839166606067430 1.0262715181136139515192041974119964 GT 1 -53156331909551.3703790398482428800294590419192986 4.9798286755536616293106728979405746 0.0344047587682877386663634007886075 1.0350105375128315661051150090592459 LT 1 -107948649723743466445439093194329.6404126669533913732110124722878740 0.3843575368696306185371686150730974 0.0720438903932600248877430530968931 1.0747708429968047986554599908063474 GT 1 -1400769007603327194.9806830610699688731388245158108593 0.1225552376378871388226145334454731 0.0793803719563896169311778824754869 1.0827083269012235224678398019414451 GT 1 -12.6369325518740774439599309754050305 0.4840630549286859400187620292688898 0.0010582031416806011199593943029469 1.0010587634339286864878051169491215 GT 1 -135.6243419342501879407140111503744333 0.0812050601372397145783045897273957 0.0561044937590456111841519528983873 1.0577398115048697334204265467760264 GT 1 -63994444098191679854911923351931548350745.6839992237030904542843507078430745 0.9355047298579546655595477331498438 0.0812599712849615434709762554070911 1.0847520816132637986246944889327831 GT 1 -53671267859.9393104875302339936154098540016834 0.9163712813725610342129205366812435 0.0670065627548642083802612284033242 1.0693571121947564001592169566275463 GT 1 -305793330173753967868279263153437.7242678599498429021040691113784876 1.2850057861076869805092076932550106 0.0377141065206823512171283715345149 1.0384436858986744669561709230858422 GT 1 -85892427408475.0371760905098872692826184587926922 1.5871077722955163527328376180652827 0.0805587200279983270113933201907262 1.0839890978013097775662342256857634 GT 1 -155298265210872250694037604028550925030.8627545418076056707274095621308429 0.0286733036634303564129039398688327 0.0069084086922686735339433499613567 1.0069323822240350946177810240934716 GT 1 -890555208359210833640978866.9315899191802571751402005707448209 4.1699148979127034528736443709666031 0.0642411699588660666159736683046678 1.0663974959171043130261193957567006 LT 1 -272037100024178.4123266399065824274339872538552373 0.7674417428565851519157288532504597 0.0839538991246904993901980429805269 1.0876885871079464750145761437403509 GT 1 -15821423473180175954240785047994926.6106097999928449627642515436893591 2.6915599304653791067042489333819237 0.0479291930168214240304488511295953 1.0491158698734390734021735378640920 GT 1 -290.7058664200487630788767469850061719 1.1246774892609648713945250235554864 0.0626239609420092708929328068963099 1.0646707548848776687092111910799729 GT 1 -200791565641063608425175604426295427237607.0739539242202028793591461173169165 0.5526508606537125505033526361630528 0.0019511290153255328743553907259281 1.0019530349470921172483021770449235 GT 1 -18919851523355518889370.8063088995754661333123922030841807 2.0745923909581033012665382441003373 0.0579515016057955670910205335462730 1.0596985212361459499717910826555332 GT 1 -5688362095855762270481155786.8183453590058521703587668540492173 0.1901269287461601589910403406785907 0.0069652597844258864642593475154126 1.0069896304375756063679519512490958 GT 1 -12767.8819320470427210686603919288635950 0.6052497586640712413438695770049228 0.0513049792283750347354410203919386 1.0526679010722294418017504534572295 GT 1 -43704615559431142203016207.0092073954288552772776269765271243 2.7219114571582091315897576817977099 0.0278181513289267850660304633382592 1.0282124049101512656010010634464405 GT 1 -3819352.1303834023048234568315092709553390 1.9020140271891903152949435337339622 0.0075212357295596310425895447744481 1.0075496628507611872747627897917649 GT 1 -19307798371198459775693677623425.2866735007673447930135094395062047 5.5578926064975842585605455038658054 0.0658345176926679894478746670896500 1.0681016805291793358188691868221122 LT 1 -2197884051.7298323707357741618717897550316382 0.0462282968143346075863924945381139 0.0167259793539833355369516915021816 1.0168674381226858695115178808391897 GT 1 -2.5758622095186138221496596004258704 0.0502056187022511019240240803552640 0.0699886872497781003175101840353892 1.0725585286612688602081460892322140 GT 1 -110704772955141811883927343737321411825956.7053472087001110578207590115936648 1.8402712027583750436879063075918265 0.0923971127205936422955261483685978 1.0969483448569552097288609311636301 GT 1 -8547.8747460951334571379138608239554002 0.1620495691520905251531175852191707 0.0370915921147188988190769128087097 1.0377969829376090652557309333390681 GT 1 -23329254679361355966449187062607292808214.2567723453066527863517887751144548 0.0591669734435813693036930267447804 0.0502823859663445602068000397678055 1.0515905869602343362261845964234670 GT 1 -13185810412065222009405786.8240839518335835525354084004691158 0.3649036089357677485682222489973946 0.0387967053856426855297084198655057 1.0395693475202487058666958262024326 GT 1 -263548262023415059344164559111187.3006287616878907775709284623835700 0.4554648540470182455475864981498138 0.0865598131067723310593247505326725 1.0905373821624827217220862022874516 GT 1 -922711241694521747263106242.5061050023365493314514905447853080 0.1719891406307603707368990715528394 0.0283624176132262036559593524385936 1.0287724016771622333456962261794047 GT 1 -3283972.4685975585899312205314083916108297 1.7805785027542324805119828997199749 0.0036611427614579540509405213578775 1.0036678611476111352459019536643551 GT 1 -150290094547942865642358919327134700.5588666210988069814092467746800107 0.9910235916892417864424169859715853 0.0926676762951602203099664344998831 1.0972464971820998174870528522914915 GT 1 -55784295489573427551572725866845541667304.1427935247707294497041647206134651 0.4086458116733790017481000092304357 0.0188404402614534305173716232315210 1.0190201825526042306315024638364270 GT 1 -5898945317895624523339331387.8757921790515983299417456457950996 0.1957844579416154962104907419181904 0.0548213372079779286274243399872597 1.0563813082026233721903101427590127 GT 1 -192174049008518355155754315742123.8916892886055087452810075271880105 0.4227172775491904524738346007331807 0.0365337936016679896984989241306466 1.0372178655380084245743153857705662 GT 1 -589355440516354948973683163294959061838.8383434294154688973010575319661520 1.0929888133489100310615824561146300 0.0546538484835728470104075080954194 1.0562041206581112447165338116975442 GT 1 -21390370737601898181313518047.7413171647915204270969768729358203 0.1314478887047468954139338414802651 0.0643209759365006309479334948877647 1.0664827843251675591380712508049208 GT 1 -485419623377201796711142.6891743775132566974509549704021879 0.4535308914721854269692031574920194 0.0705157749391865254936833582654095 1.0731254433892770066519593564351048 GT 1 -18047892.5810792848962972625033710912538860 1.5023838134993135736972085312723150 0.0794251781467007228700190487156072 1.0827569976869978980034620398909044 GT 1 -1446044.8170563655254946851273855799528606 0.3283026406311279866420932258123418 0.0906657823989874148070550988275580 1.0950425762522356978676810586446810 GT 1 -2910967162502264204.6660875899008316227240574335165733 0.0318665625025815484761084560883865 0.0978582344665640665674610092568120 1.1029836032719517485944393081303295 GT 1 -15335049.0759344203967122254109072433330532 0.5478698433133981896664129545178404 0.0572042218387445879322595963846995 1.0589055859093392691537596335671007 GT 1 -4310.5191505567653568067940508067786177 0.4063400297888014361738835101920786 0.0280243640476404557333770255483899 1.0284245407284869264592779412505805 GT 1 -3442417048721380046672108100.5309049254920488240206445064054196 0.0349758943605265237584739002939444 0.0471473391680738251236520394050618 1.0482949929134339588095535167726183 GT 1 -7.7451104328648039510389750069919320 0.0498159288605824192708700487397419 0.0724835591965190895778893818607537 1.0752447587239772127553702943148328 GT 1 -1362703460.5690463008199232796319475306989743 1.4276702178146532471341168515244624 0.0613314998422760116633889616670534 1.0632928970811915812754517527188949 GT 1 -226019802723737610512351268462.4341716592836375208344419161933389 0.1449606829682091340798851049098493 0.0804350610884474586640564647744248 1.0838546132754093526901220182601984 GT 1 -40470975.4702480034854282161105338211620767 0.0728728513754140341905716959316479 0.0919983978059151754765596537024154 1.0965091358514701175930466361591801 GT 1 -215234507473.0342823318377088974694864668767864 2.8618701961134890773992193013482776 0.0503549958958838278643563258364961 1.0516670441136828223274324935032786 GT 1 -18236878751598734045356793801321834332.6365817589082464316188358212149057 0.9595927517131166130099989130399308 0.0377104198375404744551210644497427 1.0384398547336280734814862001370944 GT 1 -43425049517472336670684547958455990.9785737948498305093268875838547754 2.0172961860785860884733305715776348 0.0722932201946513759756382868825893 1.0750395661623262370128700025225092 GT 1 -1081747546681931617298607797934.2269025154759909303100603922089146 0.3961947404467652374189285492931718 0.0885617652349294179805509896416870 1.0927314493480026573660932352089374 GT 1 -250404733974423479231993299485811895967913.9413167727810900083830200524460730 0.2398365835308405287643044693577056 0.0507396423513573245642181858990111 1.0520721685274443601359010621907892 GT 1 -634435855075007742517543047517736.8534471497175211236903897828219651 0.2788726104240776608103693700062013 0.0911639767357182817718313946269818 1.0955905935258679338943632323399991 GT 1 -1788044596099380479966659163224536635235153.8801965784715705585259843095525775 0.1697839150026766601123972500340102 0.0899910888398656960756437216621968 1.0943008870355233117790862901265552 GT 1 -184524355457774082677293.9096604345314322557648207102303028 0.0879455025302098840360138058701497 0.0472653881859305894929182285735626 1.0484188906951858895327257188214696 GT 1 -11243777366603085.1250933624908093808625413233731920 4.6774399408382038795862420492790755 0.0643982585592616236062725501039696 1.0665653829648047346965077087320957 LT 1 -122583051411026210684.9915449388352469012259632224392019 1.4680255036574470083360017393175411 0.0569329756298528779981827561810895 1.0586179231902930268776850748798295 GT 1 -2133247.6196833111000974969025744720504459 0.3441981184114032057370632337429049 0.0147454602667770058079288585232511 1.0148552552208893283033399850160090 GT 1 -157031580328379209481563847335102899708.6565485432241671430694799433222968 1.0165706173207512913696006709509695 0.0159570409104290687312294447292785 1.0160857252714968345799675075642473 GT 1 -463414787209276859.6790865057577067737472717989601742 0.8640790726456014854123595194081602 0.0628796001804007346024640462292465 1.0649435099935823824322508366461162 GT 1 -1.1515180711018975932919878826202582 1.4632509965799977887249650002080451 0.0187449207307815111584018009273368 1.0189228335735977847416302655717990 GT 1 -428575016962687105405300.6146166859641513434622438996714632 1.0264457468578538383413805700079642 0.0699474238624745975033936696399068 1.0725141609515823442685798932921956 GT 1 -873753805437693412558.2714850653170670328239904863175838 0.8594990038475027018880216873419330 0.0065668652479858708021016097975873 1.0065885219708324184060677285095059 GT 1 -4758457121.0578151505274300554839191080910297 0.0213265873198355072810384411688832 0.0867848847064003963775845772871534 1.0907838124555956317943752728564442 GT 1 -300625802547305713887036634444279102689.6502903984922148585173911103323301 0.4433014370131394933898355493720933 0.0916254812178968790126884290563882 1.0960985198023475080654972921916382 GT 1 -1037796355.2373280838223040644263460990111059 0.6623115258063246550318232885285865 0.0639527244229512106275080795347232 1.0660892956848982984597202133611785 GT 1 -228524458892495189679938328891.3109017707605704299934696106884230 0.5768215901207283418635743128435242 0.0400642438888076398986976937253217 1.0408889174770542075418096438732439 GT 1 -269316235281.7491587965416223515761681614202691 4.0319733281396148385228372713227126 0.0480241883233774650248736092263802 1.0492156524162653872458514717206102 LT 1 -1620077656926226363096951.8016059859831867373369598802510299 1.2246448600786170009042245101383727 0.0058079291373315508708610286941137 1.0058248607479888010223296072510399 GT 1 -18227365571149273282089285.0446805097240692386757502985119120 0.6740434050314644183594429238416647 0.0886177280527911743516989385113862 1.0927928517929205898267453253585044 GT 1 -15167122178506348994984994884422198213399145.4980790189011788724685200735370470 1.9574991840770712967071052777423228 0.0079903334936699310019456189797369 1.0080224272827149414728228603961057 GT 1 -5972100919030766027862721740293772119.2193830342018760261860978260200824 0.3929370330493000547695129685521977 0.0378102243642918803488394261589711 1.0385435758013965429955785864763379 GT 1 -1606569682042217100428482833.0486960185386498477052605269314451 0.3565181434133058440186404781936324 0.0332897680924551998513798049849477 1.0338564852006266038766112465119636 GT 1 -39317849438238858109152874036437097664.0397194960523335617232288670534139 4.2678782681078354650739021619510961 0.0423789464736447618366644472023325 1.0433031392591337341671801512843290 LT 1 -250371411908141655877605490762391.7009770186092369318356651557827488 4.1943792943038028063833396818934957 0.0984203112068591404407587527449091 1.1036068444682470631853142242118162 LT 1 -21760169676940009179501825563043591.7283581120250226913007819573595787 0.0293146933886795964940210011680882 0.0930327555614305732318000951338174 1.0976489436993212184186854602765642 GT 1 -28138455634.1546459591886787950413379845099141 0.0033693149189196693760083581703135 0.0505814504543812025964023873512737 1.0519055348783921072021864273093191 GT 1 -8.6686239175112560497446827684099583 2.0764404265626631221843327161038249 0.0936740111697956433640996210004081 1.0983562265847720068124185439960641 GT 1 -7371804155426296072762413.4556080811234228660482672737605274 0.2203395076341446866752004354746821 0.0760045097686221395114634000153621 1.0790480880543355697400181148658230 GT 1 -15540434076593030458345942605156751617341.0539611393708529197701106236437646 2.0435075682463094869701708163361078 0.0598985461433430639816484560933172 1.0617674799073300283364857611901556 GT 1 -138700350641523390208014.6418828158998509486545716114339005 1.9257361768882547295084788094737382 0.0899940075256227234209104898138272 1.0943040943562449183166314364987869 GT 1 -2625726371159151915.9188389651997537549802710901173944 0.2328973596666614617408256103493372 0.0269689337799849779112453198499393 1.0273392690221545636209041272732104 GT 1 -90334.5853317363527888614995157498777718 0.2832967105914852766839220457604350 0.0922731165033494792113728849344392 1.0968117347275636858557936603084495 GT 1 -14837721212800714609652.3371129373397784235362145019009081 0.2339282127363839012358225713349613 0.0810454307778178004195662533693601 1.0845185928623481282168613131743755 GT 1 -671580933156272854343709353844441.1673685998665819217812293826915642 0.8805835873288391178371596228391898 0.0647669633557555395121143459934887 1.0669595436951765622504238885364400 GT 1 -442427173868.1745690383105427945263601021020573 1.0434508023992980370826382823689724 0.0396724958252633327275305188190807 1.0404809025167297537306020386757619 GT 1 -291808467632727728546764424489688647.2480782057815108496827749206455789 1.3033159569039210154603738263332071 0.0946954824133260322060675121076353 1.0994839083589084266666392002288426 GT 1 -865.4191862756536162134956931279443261 1.8900439028627427308747206406085313 0.0470000228101092963127942661802106 1.0481403992629922003067111627745149 GT 1 -10387742992164032563064444058057931437807.1296879910526641673766494172150976 0.0203882027284509033405023780442097 0.0772103382951360767822864427353102 1.0803539559259795040862257745363353 GT 1 -4902128058057248969500191.8905277267946942608217636143032597 0.3505281253899945028085902395027160 0.0283022409691083230003767234507104 1.0287104703749782102714360822460099 GT 1 -520671.6248376174322512152578259766051092 0.5697554055599371298457227363979323 0.0076481939077181881120946618246954 1.0076775913301260555800824505587569 GT 1 -1548583816130312076934286.8787908471807719417754553511292634 0.7692869609080664567043700166732510 0.0162959994795512074129531795342740 1.0164302396622515309773451854773334 GT 1 -93658299133696181989570661.1842431861734936726374861229889887 0.4459703032916149076285201009215134 0.0777071655419992376631565985831180 1.0808924979802282317699067378905093 GT 1 -364392599659982769802781810711056.2471986945599611972283456317047181 1.1578863223828969101692966431157590 0.0491421236694842736903191084781501 1.0503906741554518356661038506303622 GT 1 -1809.9084678912102528897396078339162519 0.9086376353319779415211680168552712 0.0174481652196529195852039466590929 1.0176021785842227319554191840377758 GT 1 -1124.0907677340181789579700684225768654 0.0757753442933560328700102705855020 0.0806436618292969519825255445126979 1.0840814862191769276231273960796254 GT 1 -44952572666469341762.3742869833590341265201026352289687 1.4350364762851355812718909010147957 0.0399812311344897906467830087622252 1.0408024438097983799784788147895301 GT 1 -8442787121.2120135554979152381328060491425861 1.1456393791563709586342940443290729 0.0779585732569387312576630509842421 1.0811651250433213827051636870725434 GT 1 -1256273929546636430417.4746760772082742041227663968571234 0.1127597680472450817825217011487102 0.0162870664967168961672117559174891 1.0164211587372275676745901930898841 GT 1 -488142943611.3670257430251528113937441258409495 2.4385758248718872824802302506172222 0.0624428814568807829167461285732133 1.0644775965475178673129514987427386 GT 1 -320062378670849191246111717010.0432033133623733904312818874872086 5.1093839735908828395169935496905904 0.0712904000303218569468369062708175 1.0739591832559932348350457919046851 LT 1 -220239.8707377324472547788726120063801566 1.6384107119557055947045421724764284 0.0321117262542745616382434083458679 1.0326386180510922912757275366452824 GT 1 -27390797950.0865047958159989676656875808849816 1.7976147368394831554898032879900513 0.0318512911828968934061851573101482 1.0323695786935859877343851341912739 GT 1 -826360418.1657274118147499133562355699813374 0.9745164639692561728085925635836227 0.0021196356178241131953182868025345 1.0021218852248605656648663929425056 GT 1 -12871076247567473409473821408841846226188595.0025868680544993765336177241272173 2.1966194608895385132553426884725572 0.0902222390788353703909003414030996 1.0945549280654517801653519982136440 GT 1 -233484346891776800217.2204674282932060606142400385366660 1.0249883573977225052100245708857792 0.0927052863851162202438760957298833 1.0972879493253644047101767561376386 GT 1 -4746981510058106976797141490.0036536347817775099832133613923625 0.4197515163403834771564662615490803 0.0177045518004900566892649204933116 1.0178631521311372307609805838451313 GT 1 -5149004815403.4053976207624226312328188601368489 0.4562505009068922169590086870964121 0.0203244577321673981071595389301588 1.0205338414549151187993416895217696 GT 1 -17827349303913.0973765470040026022285624826764301 0.0078200734636560450550426187607329 0.0471489548530203519429798321812647 1.0482966885442305597691039028903342 GT 1 -17834.9215171943941503748449275606933591 1.0255088443023386851222892910079641 0.0169860563497065837201250826273948 1.0171319741438204861423443036291680 GT 1 -49890238577936238632.3367674690402935724962799731625366 1.8260793926912324550352138354018828 0.0156759022274103309495181872785976 1.0158000685044316019404266142234410 GT 1 -50534482961164364810498.1896773030001961167244611638328724 0.1821957723672712059977415600256227 0.0859423180661620951162436985858867 1.0898616001824945001609831656378029 GT 1 -27902194243621.5218271052214910668941984557880840 0.7309925133964448705784145970147926 0.0741940198790938097581032299956706 1.0770905909967704713143321989917759 GT 1 -24001820975762222946.0537862718306131945304109502422946 1.8943387395425388984919616735733583 0.0350378751004473076897263719371888 1.0356664272221594610659813217895532 GT 1 -109214143.9694266285631805625830777253031499 0.2180228090331217074128601645030561 0.0481058092366565564769136337351041 1.0493013945238930004473480250100083 GT 1 -24503.2411806101954543731011210524348099 0.5061472928953511189318916776238488 0.0644842318183487472500268096837650 1.0666572780581973196489288615331416 GT 1 -2311243218191104798.1446504302289270023919855985092690 0.2617853261984280189109619198817230 0.0252987344985852897906571384852247 1.0256242492901544600851100407928221 GT 1 -2261890035797636731081154419314424.0215171321899255359382187705748611 0.3940998191137615856006054152918760 0.0562551346194306029149891749976563 1.0578994190900533250589538764080252 GT 1 -707213879949999351.9541034368780314194194386493147357 0.4222717709703049265249130976976487 0.0074522553319924869041572014467263 1.0074801621188724226305977193456528 GT 1 -18162098102105300282802223716365128.5221649158661724476957062099626504 0.0604650747723593715872707536187951 0.0232462579044347009026422037570175 1.0235207138840218262608809416431570 GT 1 -2743759788679546.7521294740526080727466610528985572 0.2776007921524764322904916896342454 0.0804786085744792176666339123819159 1.0839019710153061158300402313524156 GT 1 -219215753851356679942334184078407082.1449108321744106128868326397483318 0.3264798169528584656345094608048354 0.0597102401455254207764311272032536 1.0615671960546146426106959505952994 GT 1 -6240979424630794398621.0401361237294219044403101552730116 0.0170179712731108595760306724032917 0.0270239982062172751346853768540520 1.0273958612382385423463791499270432 GT 1 -34104136939642675501783638357187059.7922620088278559229874196753057476 0.3962079242202802930527079298832915 0.0089439180864815413780642128825713 1.0089841550187424410380458033159443 GT 1 -107908837942774504503761218277.0381003580142500518919275937457576 0.4873420845482562297741008521218812 0.0127064152368291458651020383801948 1.0127878321442039526280474135680532 GT 1 -14302368357222577949200827214878434175.1288364250003049771477233589162415 0.1338189879134585828922283506244874 0.0319878771925995785922940592521551 1.0325106682226151038721262411020135 GT 1 -108283276.9073110057237368314577164511443064 1.6429956410311093661373858032570413 0.0563416048790894491004354419020770 1.0579910479025375955158939889893831 GT 1 -24600130763596790997551.2298718621350167988199683229524597 2.2967400154096131476860238825383468 0.0479464262232079057650418884911786 1.0491339707985268286227614688659099 GT 1 -1873426800.8062238445539762957593941224147405 1.1132834975072649000823121810210178 0.0768674173636177755820844465952259 1.0799824116352983323622396336737677 GT 1 -285242626286.1719381558658791525825459938987533 0.9986615923796088400365844003404533 0.0939678448755829943652295601615520 1.0986804822616557296647429504509930 GT 1 -18710031477561736146.3348276122689800678276487045167755 2.0727749272567896688984207727663046 0.0723050398580692971520340263235260 1.0750523069754489162201870391118231 GT 1 -1985427421.4030021694051029722908316216065785 0.3695657899855852960002115756691582 0.0528542956633023658596044900096158 1.0543023387750493591776283286028797 GT 1 -591129478294255623446770911.1335074390850599913696466116472318 0.8071410588698423743107777758469121 0.0666075348593250713373319173677798 1.0689295179859608809964606843326030 GT 1 -14594218480567038055327766372.8125909126139860350082138042810756 0.7317991985581921147767487979351345 0.0019426371330672210028329442174603 1.0019445264998818928676709175208554 GT 1 -914861937026633389120390383662799585946079.0270259682270539777831889922700999 2.2785835761895922924142500831197412 0.0235919987489416940058767038265900 1.0238747458522353864996184918580281 GT 1 -2614301001308401218891459.2911627042282359294426242672945050 0.6627065828894711964098913989384477 0.0847248798654155978835037202953442 1.0885305811583939340097807541386055 GT 1 -99650289919235207988545.4028659858290518316039046759960485 0.1289595892662206232874465145728650 0.0478152338276289788061015180145724 1.0489961809084335557536118913642412 GT 1 -223554572588810406020695153154.8873888175847037165490435779812021 0.5648841834261578658316140385765282 0.0115208284456057866892806521398424 1.0115877073527951944851023658529191 GT 1 -54895.3072745445936162416683912353128357 1.5371735556518705657852648961267222 0.0204787077237093063608525053076000 1.0206913039304978865967102726457829 GT 1 -181229525155288761837149356588459474.7121408886335018369338570774375293 0.4894544775157482921618753067042831 0.0622880836737401834253858059900436 1.0643125026003413979180765168550219 GT 1 -16356899265812947488784262789210750228147063.8559052492089070502268129203233276 1.6509404808109261456585775679790685 0.0335970470963522264658294402258681 1.0341743962354272175741842189027302 GT 1 -145183823627975561836518.3995977194027689559264839061043882 0.4782920727742215343590839706139246 0.0009496130397693241432901711194132 1.0009500642078780009604690614096255 GT 1 -221503874388487599463507208.5011343147243985263583123361396645 0.0401724984814794064922439188306009 0.0027460400371497077936334725870661 1.0027498173217270483871471596114651 GT 1 -2653.3112182106877284399211612341328935 0.6894093747612591224470733991065107 0.0179512995306858373008728966446780 1.0181143787114294672519827035399314 GT 1 -2181906613734663174051612.8744372340061636913837818539814636 0.4913054620059966627007987165426373 0.0068244705170937683898485453303351 1.0068478637075211020369769997397887 GT 1 -4416362263654300852881.8704135458569643034224406271877320 0.0180192928618802835553006971663714 0.0687432453318249272965533213216652 1.0712202559797199892596426912949524 GT 1 -2089106286004951000045918754521.9433655173549390636975973032193336 0.6727595596864140529152763041641093 0.0203033660250513673338306378227076 1.0205123124086496052116798261599358 GT 1 -1123737566.6131710995772151429823358359390861 0.3177000099185509339531049034235817 0.0978964196496005441376220189403642 1.1030259314210909925032878553576380 GT 1 -288335361388680271570.9002606703327379544998138593488177 0.2627343426535357812831170468689215 0.0067597614562741172041498703998127 1.0067827121296046373830867438166003 GT 1 -38092607465444575357430918993030770421.0180636196645661584086903123169207 0.8693920743629812378551648593739787 0.0114051292386149266618187332921934 1.0114706665089556631318303276736167 GT 1 -742545239535729991054.4140033294484234969570502269205382 2.3073237962740595651021549086594201 0.0015417984117106110897396973266854 1.0015429882059876632061004472504692 GT 1 -1167195882623904688424755677604.4973151571641115063904950668375821 1.1987048189764207527076567879483913 0.0297792803640766762888369863628093 1.0302316873529609806482514600079400 GT 1 -124758724339497.9689722762204532194971772124173584 1.3977286411750724343014573682992706 0.0883327154917764944764820433101813 1.0924801750888479987260959399005046 GT 1 -2329766599110991198023918388382.2396333626023132899567867159213093 0.6124782281823584438510050686543895 0.0589658293407327504539219612745696 1.0607758269218792012880164273884909 GT 1 -15.1655469190282479590978892068434678 1.1695170346320150592349585370238877 0.0308656269018440999506173076401200 1.0313520047775123614843478045054004 GT 1 -72550317280348779053839787918173.6066394944449712164567277117471782 1.2246023678124719891338225074125318 0.0384979491364426289569855896041953 1.0392585809721584334958357968551277 GT 1 -193443540087420964463734111951024.5330555905378686999115269700470038 2.1270843799161167156605361041728335 0.0328441248444852331531507381865237 1.0333956019427518978638885165925096 GT 1 -17243518654775869459170911266096.1383294661488355672106161523394478 0.2099256719968718990134220416670485 0.0169089113424566236581370905187277 1.0170534991834070064401404613424773 GT 1 -3137888404563.9210560528999182657935129742073707 2.2106196726737396751744726744341081 0.0815373677164098247664353860615258 1.0850540585692578461020640952896623 GT 1 -242718.8885759111206687466631662459934257 1.2547315396483008206292827545153779 0.0456463537938351440371384779024506 1.0467209778961875416269184589377883 GT 1 -3209697973194205.7443369057873214465592996261956916 1.9590513718098860747311175327313209 0.0526782831522095759039259188548578 1.0541165213683935202884145061268291 GT 1 -1218443839157404635189648.5682190183881329271044975508992129 0.0575358927881933576075373172127098 0.0892156897653283054175311916426240 1.0934491712972391502105338305588004 GT 1 -8802844845223462100521289924942.3578335316417494510476792632476559 3.2292814879948147503028845033451587 0.0920834515808845942406944874738061 1.0966028116319593366784714840628033 LT 1 -53031073292185808.5267627953663340044606873810392749 1.1940349061919982282355295937342116 0.0312057976019122653768923669331196 1.0317030710736216751755026005049321 GT 1 -108005509303225143645021137130436385658.0116754773762378872163810224374159 3.6043442445868049105330394908319101 0.0991088807137070163413088148132992 1.1043708729754016368784410888359684 LT 1 -243440.5440730768884041489918167252791347 0.1106479145657691105169841012715287 0.0038076655646776290820380159637245 1.0038149331774955911946031377145875 GT 1 -85866.5155165130934468321704072544012623 0.4969918758006935138780291218607236 0.0690954911396646211887443352251369 1.0715985753218091083392442262629819 GT 1 -152270984.3604234703770970333305965244356706 1.1986212966665839208637943190620805 0.0831151310087857722514644347682512 1.0867733664168870164031172035557516 GT 1 -1.4595877730717442150884403263218718 0.1691975003339494677178185674666999 0.0067841024745101066610662473320974 1.0068072191074283446102463424329403 GT 1 -3750441639671473339224808868637743309944.9830098158643263553978463559107509 0.9924889518911153429758083998514932 0.0764807241323859356245334917447701 1.0795636069373763449376188355675184 GT 1 -8053979.9170837109841854583240895670441400 0.2958487073638481991196418830188853 0.0134379623791391979460062767075449 1.0135290689069222911897190232206881 GT 1 -3578010558012503970992069813529.4149018156344210298056963636243104 1.3623558573826762001622375407396982 0.0597585367534261619220426539903032 1.0616185609107979048054541306029314 GT 1 -1896823422253728790680.2621914918286033841377345282417879 3.7135507025365385357377756107218491 0.0432787281989497638387055463714717 1.0442431819878145249288613896778842 LT 1 -37396708148337.2885974338246194703953862432224894 0.4445589055213383393179432963043242 0.0195195179039605551465221681389797 1.0197125396162363762563234838184888 GT 1 -1980404434280.7110811670429705833959378679100652 1.7875755676376380291388252409593458 0.0603849055598856058111341260063814 1.0622849615753364539786183809565160 GT 1 -803.6679326789763583922743773301342716 0.6591851225926366590008254002794790 0.0124000965568215428475586178895480 1.0124776192802765092214587804471558 GT 1 -144676093504.7635459287829729618873080035714330 1.4849294567876577167794995903631069 0.0731159761478713391784321207738687 1.0759268303562096175885012043985835 GT 1 -630667614951.2214369730328751397551336713900715 1.7638329296284010770755157844599054 0.0055620462211797129154353934442213 1.0055775719970818246595466905621726 GT 1 -52135235274836615369975696326877220.3898314425170270205331281878086138 0.3448027258748534358601466968027691 0.0118171574946231884842077472883561 1.0118875350918113372718756797947260 GT 1 -3298046018703166945891949129212532458.2069545122354781984070654241349435 0.7497313620496692596126935493402822 0.0265528056353048818370218585355251 1.0269116987179327430879602547900972 GT 1 -1549.4087794858635482283157309938617955 1.1384840257932559573434019089939272 0.0214254466045890700331099389255279 1.0216583035354929057223503701126937 GT 1 -1422799428889813392693679467880008.8377760526747960888930967743942806 0.1224254375992344314381980271887477 0.0195508364243834260807623064079301 1.0197444821395131934234581534627430 GT 1 -922115511228.4685890126053532576902907718822498 0.0809329513570078630826726678245027 0.0166139360951423616965510335072440 1.0167534954440884320841906918150025 GT 1 -44781976335008859393593498749300.3975527861767399945934882708327675 0.3943710081595707598318816195580454 0.0353538558818993400848604451142841 1.0359939349234373697386706159989714 GT 1 -4431012511839258677306009777608911.2283119184305581933793847439646280 0.1810530290662794388540870268039006 0.0712698518857452306282447983950661 1.0739370580219460348948838511843147 GT 1 -13372095709513242454558537.1354112067230388468362422710791942 0.8831071599808198227388576861848346 0.0039112646597461409488979424716792 1.0039189336588870648776172829383444 GT 1 -149.5574620151047718951181717566967792 1.6715560437838080951995572307471670 0.0271496862583261808477377693056190 1.0275250485673235877447274608980310 GT 1 -3812544865362059164708.1792192119813587066929506274411632 0.3301888572962023309999836009630875 0.0443634623803374785017707109853021 1.0453776289959832817182826472943627 GT 1 -499239566658051636539750637693.0935071115156138780512715702107085 0.3350995846466099715689814700183947 0.0407538218604071445610239914814340 1.0416075340802728144881214219093373 GT 1 -438501322488704432780625294.5164058508461044606938753380683633 0.2800784838328641337894164820309280 0.0623004672238287315670247211086028 1.0643257088224689794336673666632219 GT 1 -2445522424496.7315992160153115980860767550281159 0.0354412123127097780936688695647794 0.0006802996126428579816513629007384 1.0006805311214271844661127857920732 GT 1 -2341987817597385996742847479992917611686.3994901038019661304488316492617744 0.2535675581959840881974894326352745 0.0364806547240268387405282370946468 1.0371627132016471583788783746677589 GT 1 -38283803004273057662.0266343454910296279169460811352977 0.8649701277730262185522585254081228 0.0169523527919195158937819321899254 1.0170976887908619814154501872130345 GT 1 -939800.1518347565392161330531220471459222 0.7207159317759031011964537808773342 0.0636388858697386820862701455393086 1.0657540712137020698480606164396692 GT 1 -29.5768416700488912933664771939182504 1.2491547659375831584320182632328168 0.0942622064719542017394048849298227 1.0990054259435842676995758946534876 GT 1 -53693278162682949530335845418336695175.2369998588956353050927487342809380 2.3003296305774255011039373349592344 0.0145470228147810784821819011058283 1.0146538682053499704059307087433625 GT 1 -4354206596.7719630633512569018267052226150306 0.7963433910766698479205346022717219 0.0229464748947969678649659386857595 1.0232138432760321544616365759056783 GT 1 -8477256710280157558700.2390912946126842699093440264609304 0.3115566129620995489173537568255919 0.0377320822748034591988498394930186 1.0384623663367240326250603916864981 GT 1 -608044876.2293219285174693849458700968969401 0.2438617148919638067024992881087534 0.0299283844234364583687763866219024 1.0303853797187425075401072098850319 GT 1 -76682499446476500176850573764164038446100.2146145545501162873641695966906586 1.0295421653839540960702435375199669 0.0341760817534687180299868741325900 1.0347737406323974486526317874287063 GT 1 -6517817628982061023831728418038269430876.4048145814160430859186696064706339 0.1810834288605091868051774270207496 0.0717728731852570205022211081718316 1.0744788274192356694227948955908607 GT 1 -26794967153629082158.1394887745038431641875274530574389 0.7181416819414377423101595492491359 0.0609829187335852774445539701730894 1.0629216090272770203144454410195594 GT 1 -116874241833109331.5913647643014550228967650105013120 2.8344392879677756727227561338658542 0.0087917886816752076690828536816036 1.0088306644820623120153461206001558 GT 1 -396977830.9583094735628259952792973902232059 0.9393371096840583999495506712357086 0.0480294636963126429285078969208015 1.0492211939305426014901134298847235 GT 1 -1501912460131829317096.8999874688969052632939525008754526 0.0954514023482925202481927361438724 0.0060359809999799748480661106329528 1.0060542711698479373163668969362882 GT 1 -13725736472901441434962966507332531893045165.8540919463561361215770587238845305 1.5952666278738662381285486981378011 0.0924881078600142721503625602603472 1.0970486086425059688851607009868304 GT 1 -5071071830706890366515376225720822715.3756671332882799871648726947806131 0.3303836897676513071583085247754506 0.0583749182286787151969939412234753 1.0601480859956381772902403138412893 GT 1 -428587741211195106633698.9368603176408988592373765478758884 1.2751575524925601287893260717539310 0.0318314299100637279785446722822355 1.0323490642117392185629038150392586 GT 1 -56278433.0969289692376263433813359676961751 0.6179219041476066041866674462029598 0.0409250546155386378167273274185497 1.0417860576376548079597270782220272 GT 1 -313224594334794456993367376.2522030248281435715238560783348474 3.3268583181857391962368763120208124 0.0818378573198583948285178051980025 1.0853812779449582370268333623739191 LT 1 -43239636459996231355136830391793665.8936107172073919779155939079620585 1.2473633103503997768570979903727556 0.0076704753408276757736248097646540 1.0077000447414270904080640567451723 GT 1 -707383274905906791087788579349082234.1670279501916663217335904953719784 0.3620923070583691341572433274421177 0.0834996140824937760545094618543171 1.0871927906249905786432272895047489 GT 1 -37.5399757809074400113643157496684174 0.1695671173073975839214329450636185 0.0682013103881171830755483607073523 1.0706384858980439945945936561705808 GT 1 -233139755615403465574909171766.0439567125647458391800513093777816 0.4981902416112622135283378444843452 0.0566182324325612647204658434567959 1.0582842346199408553794218729066026 GT 1 -2771910569635737766.3676938854576674397185606809629200 0.0673320043437471439672157384012015 0.0441811255207242714304280988145249 1.0451868457226595813118077778014634 GT 1 -12.6221673320144981795074924167470801 0.0617472037436887098758709487873625 0.0685093386906704274601001396705879 1.0709691144235673868892540308290139 GT 1 -54942244387401567.0135006134066185501370915113795734 0.9866998163670710173023655886797398 0.0789777853061133189103306700998417 1.0822711228289152410493150048766980 GT 1 -1441909963878428573401.7394798195693922281449947178874510 0.5786083346313913189263282508051995 0.0913143554435791588809871952513274 1.0957560701866048969601407957314199 GT 1 -10542135702884019665564243154404737.5844376708757131730380351254524744 0.5315442765134646825836559747311795 0.0385625282298980422674510790421302 1.0393257480283446252705033400201694 GT 1 -152124313466872538071985776015434127930747.3148394149134970518491775841741254 3.5220281216677079763602463447796708 0.0737795752704838783862030707602750 1.0766430329981992178475283600019770 LT 1 -2424797826838344025869307178608.4506978928453610233408326503630751 0.9024348464422633787107095073459220 0.0968144515345590543442620651486040 1.1018272666451073333316403405126835 GT 1 -13.3318656588940335998429779041127562 0.4783399935597283670306830614761612 0.0749719807635941189018512923245248 1.0779312508620922092252027426389096 GT 1 -3193815.5682214197953324326815352092485073 0.8440524112046289979062455688164809 0.0963198464805905784355463533363708 1.1012797936748926575306791060310906 GT 1 -759050837099297425753310331849794.4652533204090544636213226417892342 4.6925081714597502339224116024567746 0.0957499659560146396868081566989519 1.1006493705010663348221595864894896 LT 1 -34019.4205622713211175396334953787342747 0.5528262791834008442223392257270572 0.0479154131075476156887182637645177 1.0491013963600710263776813621500799 GT 1 -4.3273860845766324309939344945137857 1.8332731101270250203363498013866859 0.0997116987464143111688721349178199 1.1050402322278340403984067624793130 GT 1 -557551306393336636871093147092090464.7523301090040344325499114252612202 1.0022812019528920774972086679687834 0.0642741167747812604129613785892428 1.0664327051984679790906082835321823 GT 1 -4393561059691575533947721773.2541891149940736285602132865841027 0.0207404405072647354998072567721634 0.0591391442238741976789522614183478 1.0609600187935796461554249869549985 GT 1 -3022960472507197311147836624915105678236086.1919746107734818830965311532687032 0.2028634742700471260261834989605860 0.0522244412010080382478433118833481 1.0536375570791088481811123477237491 GT 1 -56825958718300362483147.1143199704488749955715818318512741 0.7127316956728776016582615033799450 0.0178501216498159947640044025315204 1.0180113566625894366536796641625346 GT 1 -197774899218198577680274648922659607905.9014787842234198509720199093569865 0.1145003141287086508586456918718286 0.0194433861119144377729616300181847 1.0196348951981473251020986574424543 GT 1 -17250296303729280104944614155996775.0568965064443890304310084851926030 1.9283518951071844098417505060144545 0.0798233902006072337575781634152420 1.0831896601891381083570098315887605 GT 1 -1764976763311460208114.7364861047382365532469504252662799 0.7977759795244669859054659865566496 0.0401887620665287794433771463614042 1.0410186410065422402667140314817690 GT 1 -309121763877101421567378.1686494382427768855551074755489925 0.4293189447733038116413659115296260 0.0825254014127203084291239403790756 1.0861303849001166092983097061166322 GT 1 -270715528834840361322711800315803523779.0829236892537930341106042027956310 0.4253641397478039604455434749289872 0.0031925373956184476515334676106865 1.0031976444155945539169076133183371 GT 1 -55540261.9830574300428434164076664496014891 0.7256027991673493007322200928908552 0.0327619044013822130652681418792896 1.0333105929483116597168710528780014 GT 1 -454947938213812215964326283.2132764135250737435571429568777623 0.4277656781523990954041189611829044 0.0283175224814320651617510620821777 1.0287261971092905751972588154558823 GT 1 -77.9061532728978596250746455843917767 3.4785759413823821183281002717950368 0.0577131163989001262813164311482385 1.0594455034236642221620945447635054 LT 1 -16692146782755933851719137744237315074577.0034901659368303311868062734417301 0.6304248434886593620584951014345769 0.0996532493124394240142812271637737 1.1049753113168116700571015088033896 GT 1 -754720705747811721735891.1038379583720555129948544998535744 0.0851488251944663058999901010941482 0.0403150451982924980291574558419816 1.0411502204620513116567999946998173 GT 1 -1192500373759820248083918812517893.8113512533350603592199911862327373 0.5798081421016710708795562555985037 0.0182596405067446386207413517461113 1.0184284052888038615483805897767063 GT 1 -6654393656510230152344632409920808026181578.9845446769260141481552845541585849 0.6718514895100876481729048043272480 0.0007744177260020147878762640141302 1.0007747177423111531655778603852415 GT 1 -147275718765926648206359723.5084472150357655493573034961454544 0.7194185118779026045846803584455239 0.0967973179491517840203156806511093 1.1018082966528118375491249785383471 GT 1 -120813380785942621642370995756717174.5313846193334950559327504349857291 2.4343683554693645272669188024491405 0.0953711175194672462323345032516102 1.1052535699559766509704404035087810 LT 2 -3812076886493361236.0697839939524460292602724043017686 0.7193758080223209421595178307180997 0.0106467576891598702466768331769740 1.0107038399358978055881510250578726 GT 1 -1204958684334392208.3171643597013199712090296099102454 0.1056823010692683388099812711586965 0.0456915602689941585602025734504757 1.0467683477009324930672903328540999 GT 1 -1276751364487554867396.8532597519848713458743296557366562 1.5172480832362556283969840442981935 0.0275250601183863765154093762940285 1.0279109725808220718567684698653393 GT 1 -443218664688265764764.8989271151946474087200031939094285 0.3021900588587485226297174149606504 0.0954776407242378189600381311692971 1.1003482544127843034011845886513259 GT 1 -169445888.5499090425001744029720333613789875 1.7996810952251528853190323224071769 0.0551830209308321775966855159396697 1.0567640431881000723200886345689260 GT 1 -1770655154296210710326362199139374.0232670093864320633926805700822084 0.8744330443990082035633124809893815 0.0540983341707454696031704043365018 1.0556166626595259373891607601601647 GT 1 -217621742.3987274605222860978824651447141122 0.2916074866442122989390016164036299 0.0625558783651786437572108364039391 1.0645981265034595858986372554761783 GT 1 -653432116467355416811284109.6997305887894903284631675020907159 3.6639065845657575285192595793968294 0.0173625950992506539755625297336877 1.0175150927008599352238420968786506 GT 1 -4784637274056477915257840483866.5592246657060194439000944803908912 1.6556937574686843268684222542500876 0.0931990863594758185489648122093807 1.0978323528056842572393808014749478 GT 1 -10272381813281686199894.7206460609226282068068579514663949 0.3015723180307091742511015043373483 0.0219184053609672928853374914919806 1.0221621823261566167142851163597875 GT 1 -60993208690897505549909.1654669540041022834447408910200525 1.2152041617680725761583989685606641 0.0456667783927797032910916556161899 1.0467423796245587725969847218413503 GT 1 -85375.5329050944619415696939077179317566 1.5688282881782221195299978343364503 0.0803588367186541281822503377671467 1.0837717249359828043459867139953550 GT 1 -77863264116620357111671.6200954943856890443598730618249422 5.1688988827598064425301283629473633 0.0104482564641833293976006602927257 1.0105032226985246074952897279423525 LT 1 -27733463814013041022262014.8621525484354607221507339533246128 1.5634056933832076169899569086471359 0.0982133277636487174875169330115920 1.1033772921725048214031997534318663 GT 1 -1501301699670712239561575120842738591523949.4961275895381612578210101171361274 0.1488265502804862319291246151408974 0.0668261488058313138676772532132186 1.0691637598080624468806388205901948 GT 1 -82706.1478631341580564364430798258960124 1.2470735259871001450369374863764250 0.0852550520395737504899731974672199 1.0891099979617764930204060958430369 GT 1 -690874684477596.3408766023971243352207134633807043 0.4650544811568218388913297861857697 0.0739477699273142375388319529990662 1.0768246419604182282352526935774528 GT 1 -9355023456499497342995233220608.1100245485367948073086011994475330 0.2025954843557021108495340958813849 0.0859194431177329188860200559303503 1.0898365747791145196826857655734961 GT 1 -15710771006793.1879781191834110703658190633027700 0.0263026982572301502885413353408673 0.0355622224285509091661191827685423 1.0362099613441846876891120302263678 GT 1 -791651201.1445709460946617112988617820553437 0.5005228042359051521478253624105993 0.0564952913403249900784757056435060 1.0581539235556991203151656100873475 GT 1 -7994149083332473734271034117500563732.7012715861219788415948878860873856 0.6778805883028802298917155256305728 0.0830872843581637235094884174764974 1.0867429959432234671553716198199253 GT 1 -422952636748861624979560525.5312238532985093008008365155574937 0.3590649300829210100834250646406089 0.0175497172384851106241814791156042 1.0177055393063471833007933076253285 GT 1 -514834519433492133763302905181043.0546750845486317592206455103746153 0.3440399466180050988695639974901648 0.0158804715038698044654758233484751 1.0160079172581027575638072158923342 GT 1 -7490003913544395.5841578915970355378707328443468986 1.3473743586360116984622953303783711 0.0813060819090204155150280250927555 1.0848022718518285154914233315114179 GT 1 -7414.6432738574224745740380393122186474 0.1071129937158095571665421982609854 0.0726927438369906063132622156910921 1.0754703161628869139625976765661308 GT 1 -3413237614231788744689261.0755157432846324874564281300425173 0.2714577473842616556683272924251530 0.0124949360582196155608181357955183 1.0125736541776992320442519543815733 GT 1 -40583634144.8839799583714266885041167825795705 1.5833014519616224066096487285475823 0.0966437304422901796717806923188963 1.1016382634445460517648859151200249 GT 1 -409508715334490782261861837116012519.1688834399906579617412568584314610 0.5297510210684218119818147683581518 0.0306582801641745125285735343118568 1.0311380772091341243627904756637986 GT 1 -2076885973996331812567.0475804782287567636961086163751618 0.5539146288822820289023150116426727 0.0609038957671692768459730976443628 1.0628374575852097759109861466186839 GT 1 -17645139910898.5231614305409603162210259177770093 1.6762355879086611443437491509318722 0.0170541244116175968828080578929222 1.0172012207899341103309469895474705 GT 1 -3659053.4578174457465080177762529890179878 0.1340563974957026383335063013490676 0.0596226478807620110658368871918809 1.0614740458482128088850097061237289 GT 1 -341204533112233917818508.8335836932391437204258294084034882 1.3619731886505008075607532998923327 0.0166403227519836849088226816412224 1.0167803282535266658107229152697077 GT 1 -59911503653184892013.2227324930925188015288056275239928 0.9321544954957261850544949878107990 0.0968747350161788767625706918437361 1.1018940142736919055122646711759887 GT 1 -9896231142908678213757124393174.0803317300049891838915998689778438 0.6345221164828539875940389858610275 0.0278467918115742326169104067784525 1.0282418653496454536918640929545515 GT 1 -23944710704339430193185.2930759200769491665242232164311002 1.0926293362988195405256677257557314 0.0285902229291876404816443287415804 1.0290068841933977584062722866991265 GT 1 -53666886972885644480202295389863289911178.2205965915236463230014465529686637 2.1857839753050224702184434136389126 0.0079636576112692656213432563373402 1.0079955368958159713926903489465179 GT 1 -1566393686814288416378153965696.2253806451046127288621447503285150 0.6927158224405364785477883228299145 0.0693613173509692399884444884949485 1.0718841730069167517007005936911785 GT 1 -2589676092730972766546665805254.0055087295430924327262678443615082 0.3932615027488186215326743137673059 0.0962201376700631551945467695067512 1.1011694633663334240924350675130836 GT 1 -700566002691628.2139170952285056754655320300969688 1.4954532333975410996226378222411863 0.0141451967918510188005104348488590 1.0142461936326709961207148596171232 GT 1 -52163434145271324.1015220529177774089072190600484518 0.1990845873014264672655243328915035 0.0843396677906775312851241592029267 1.0881097994427647500751069671168399 GT 1 -2846301307953100258426355376216499308277353.3480515457329692536204916080059801 0.7157582524627110232127766942349199 0.0490621089468568241999365370757305 1.0503065276618620004567174602094374 GT 1 -332824527027934338.7551774653571332983358930236814762 1.1592803367845770751181950988799895 0.0593140859010721941905239574937327 1.0611459739667414884256077029031512 GT 1 -407678938594.3013330810560924062948378962819973 0.2885441679726162342631506101758851 0.0899690254658882630039302525748827 1.0942766421009458501808976114855131 GT 1 -28.8114928545301588389605464711664490 0.4865905115772538686716501429134814 0.0284850695859275144967810318480616 1.0288986418688674216988943713572621 GT 1 -11278259480590642662296.7811027002009554232326656141013773 0.5803770355722219084149731502944468 0.0731383486854909557640707513168157 1.0759509680121139979990746784699439 GT 1 -25194.6305254751620529697222066883789589 0.9047568612195518361652417155125557 0.0386860112463933503999077756315642 1.0394541921036193795393012712950167 GT 1 -5291686711049124976723083801405004143771988.6749019283269790267354597916957699 0.0155074684880912935461705107459589 0.0063164378491374315023326570161346 1.0063364709457823502566787651179055 GT 1 -59479622905187273487991884.8466323484065272766367439858867782 0.1697090631529791542829563016404473 0.0613959754981190779831083409701500 1.0633615878599905830597783970033418 GT 1 -158.4003809960746767792350868669781552 2.6233603412961263156655569969240070 0.0434683772727730222246062111665885 1.0444414297730255360665939590380500 GT 1 -32643204542123162787054109145.3386967728851823714679882410197179 1.2661152595636981349378946260688446 0.0244416852232802270020481032616391 1.0247453413343695220170952540301119 GT 1 -3919988061694877999485459661711.4747735190018229350982942870863004 0.7630442367243823129204754706658139 0.0518511418021008571336530543204545 1.0532437656384959415581197042998268 GT 1 -76202410304624680432028633753726817.1270489168796467143047990860598814 0.4652328914679153819062134727743818 0.0461940594514680310922454654661507 1.0472950448416110055762480412744671 GT 1 -13.2349043652447819000418174975059498 0.2712861450092660979676943037555820 0.0031728815062313182080927354454484 1.0031779257674790709718626343396752 GT 1 -691796630229326673028233767474478588.9206943468484015461993207430316033 0.8927906513932762890595800080811394 0.0442518918132993474191651364378937 1.0452608858094042366753457822884544 GT 1 -14741.2690862883018463538733357003254436 1.4689953817974252623787183484303039 0.0650645955712576334674795848262477 1.0672778382524776429444414871584800 GT 1 -17004523.2125323102171818607106633625527648 1.4865657223326384950272711228559921 0.0598927501997167817732824621525234 1.0617613146942714698271571794135141 GT 1 -5842975384382985.7083573716292856291136101853870521 0.3403225558179772684584044337660825 0.0275085285708395680623406565083120 1.0278939732666425890082982766494578 GT 1 -183667432916204726390694936.3804223430850394865507900766415613 1.0548689410610059475153903403490428 0.0884290326980994607058796561055091 1.0925858301850121351359119277560168 GT 1 -290679672577848536033649968613915.2086638017328958399689412434126570 2.3299403234738269817392368805705250 0.0570053530240007970324294526090906 1.0586946729543999335619376589760438 GT 1 -128.6143663114247622046879623647635293 1.4040075382191317412194654455750980 0.0231001533558589848306408813601969 1.0233711433053990856109940149473977 GT 1 -3959419243175454.9721348915400661951732159503730924 1.1913215577961940709972816589841301 0.0335850928024691587310716662850863 1.0341620264264245271871417084330020 GT 1 -2480062786310112857717941791068.8044039092725154802381307658986268 0.0899465194495824945916459049687997 0.0149664370434684997328442630385614 1.0150795643230113530657310738329874 GT 1 -34103912655207511634839.6351445786313059855373793838837988 0.8008938000364978754395351149940358 0.0703843500073065483615999355112297 1.0729840578361257804562841702680826 GT 1 -802665711634994697905859602.1681574738971269780187684592404815 0.9933662727601431717018114919594420 0.0284997958160116269685940002153984 1.0289137999907185319959824252997177 GT 1 -17.5711354195542901249257332783722613 0.3167731746416233930234295093883748 0.0705302733205211657067819587824340 1.0731410418190513012410225953733791 GT 1 -47415.3710561631318864353889287300585918 1.1466746587541424562316897197008190 0.0709547634170118896985449716234513 1.0735978475077471265500904842469598 GT 1 -1446805247315.5714896088811354863157524976729754 0.5669650188385453790453314336912082 0.0481787817440442226405082305621467 1.0493780577762653682803550155381479 GT 1 -1375870513527446886594133352265187029474571.3038040509379963660524496162082928 2.5157403561976552369155442390940001 0.0482612526395997746553980996857809 1.0494647068938101874491829540220006 GT 1 -50733420469923797.4637231850826558866610028660528463 0.0905883864916161151333752865990220 0.0171608597674381455047012842373640 1.0173098139016593653724152787661118 GT 1 -2182.3767123983437695100365890963115243 0.2540071213570020861969325916815075 0.0509833958228476958249995932356637 1.0523289840266912548729300828625270 GT 1 -7.1206561879586903814603374173753840 0.9015590731400796169611890888672919 0.0305140454732921881677450635152087 1.0309892917414459497710656216112415 GT 1 -5446463774556389.3304575566351797905738160124570408 0.8202376392047432071787666385699766 0.0913496769939335346717940872136663 1.0957949419758494565664021922563193 GT 1 -48124434137725557.4304619570263061632156753701510169 1.0926733795203886106570114382504666 0.0435710228378293211788384839966902 1.0445487456949120038025305450712317 GT 1 -93802207958458841.3212233491558258860915111132361451 0.5061100805844745577356523206381041 0.0211123196510815736940312435195690 1.0213383719927224428153065689625580 GT 1 -2227717941311381472179629449534746276076301.1850823462994040453435765348079355 0.3702535482535921252736058039328186 0.0201510224798030180437020108625070 1.0203568237640764984977233772334326 GT 1 -45398731371628977984237677847854.6190690864968643898121780093024429 0.6555077633691262383205209251390502 0.0992236841349718873247921517779143 1.1044983142769208690315223277617191 GT 1 -38356506614968614319272774322.5395038721709779482517983009174827 0.6925869308720421858459923730618935 0.0065219337085599401039372406062906 1.0065432944443984304788115604349122 GT 1 -1004167825495518015519081429121.3536751811600698506342534324342817 0.1524670688796782402625725368961068 0.0965077760614803203012914037871633 1.1014877755850981744834353116268663 GT 1 -59105766644759926849614673.1321444702875205614533112486149159 1.5506720503956925927172577361695675 0.0169751402298729488887149086240355 1.0171208694598083947603798355208050 GT 1 -99030246443622.2844550670369530512990145415433611 0.2892375488141801645908969093761117 0.0153362681983482530759237744748841 1.0154550851304064430048608264053073 GT 1 -553971676932666076941359839614763043429871.7271245601111815529163839376107035 0.9726922896023891824598133095758198 0.0682222555553752078096329138882065 1.0706609643613644548547638445140112 GT 1 -5144510870240.1134287634862685420292800854203527 0.4014158592532242603140144441136667 0.0343663290588792608553104903781388 1.0349707393209431557482729189818177 GT 1 -14280259293712956410.6438596045671693391552356473878634 0.3545702955979911004187647354628522 0.0283268450389435638537509000142448 1.0287357913980103141448965392028147 GT 1 -20765128473188738898663360557.1281255295141397754033863360015204 0.8207548042318466256279498396251899 0.0701165889248944948172759535740407 1.0726960651289834974623164733151029 GT 1 -407285986046699970962517384179722724440635.1030977413377932170431488296519780 0.6306504349651247137550040196352380 0.0439064196066499924818032857278466 1.0448994832806559802072030621399469 GT 1 -9799913057.6338395156014421993298769110437260 0.9668399140506154588416321113626629 0.0802501159308830641650216797009175 1.0836535110433423240322673685483210 GT 1 -571280929959937880715108473950743291953815.9286366368989600801550197580814813 3.7203276265053184709302559431360438 0.0830355591657784428649406653966126 1.0866865851937724065457067246735477 LT 1 -1865577654581098017224.8010753565693238692899986347840114 1.1220965198956420461647866710331150 0.0934971163375184075337811923335768 1.0981610676974409039598448474579858 GT 1 -12072518714235963410440064803971.0150389252443699555373720361998189 1.1549145730932956112068243991194026 0.0160850070655274203842456396559360 1.0162157749558888159493930911899587 GT 1 -2734625.3516898859129565994113129986575957 1.8280324279181734575376286285277768 0.0619941779101031587711808966555245 1.0639991230763086505866248442677814 GT 1 -2011086913470932309.9616421095264415334015987188518018 0.8450766432223114231152311772731711 0.0244255790314337581589159816372782 1.0247288317534970730732548834471787 GT 1 -2291876523387043481222657570953604529642021.5580019722273521212357559257153562 0.2490353698137275606501106250731210 0.0312394534675259033844445078870408 1.0317378116306413923244003881815731 GT 1 -223654566338617466320.3986288634539731008996899416672788 0.5122951125243871714753994095129434 0.0809165955660844842448617869222688 1.0843784051036719113609923577127278 GT 1 -14311858601558768136.1634297822229199085164678083650443 0.5311292889202382447955091893720661 0.0587942020779848735786158936303867 1.0605934620097655889800891291632760 GT 1 -1332814412772.4997595134265794132947301041090378 4.0032274682984382986753225385088824 0.0699458780931331136634246410771685 1.0725124989293519965927831726626478 LT 1 -11603893432710355077172.9292136246631197357317970901240464 1.6528408431174417119597924532747409 0.0613720633197739963755556279007699 1.0633361118625210777632222046141316 GT 1 -1.2097830211603500970725831134762626 1.1320977471979177512029129369580688 0.0117965295326491628775124080136638 1.0118666606687905183735864844986506 GT 1 -21247424017602269521914045251827.4380011202198994451435738820238911 0.6574629840490862968219674765104686 0.0134305682612251331533184991502693 1.0135215741018077601163794679280930 GT 1 -20868650453950934386163495754866412221.6061122347714351722187952130145747 0.9081884579467237115859949470659006 0.0167757214984004169554736626061649 1.0169180276853102064366298405189709 GT 1 -9505638272496137574.8881451882297929767195946882065905 0.9090322673945347950614625942410809 0.0861938348145461297312403533019369 1.0901368031199209874776581089310209 GT 1 -70.9512383089346314424599462872330084 2.2084307674345183200602449515866982 0.0213129054158983885620004958132017 1.0215433049210451287683569150971425 GT 1 -157542155528646016.1221349281421405952248991087869676 2.5126576636769210886968082311106473 0.0189711485019090667465238766743040 1.0191534095555775002429928271134918 GT 1 -1111580367057287649645338646556338688936.4833035615019975319162987617400467 1.5961617258564114304870983933914407 0.0555084602293436708996248532262052 1.0571085494436798180231323418653372 GT 1 -206322.9868150352314138601636603074636610 0.6932675389488730710938117857939897 0.0343770606306616001039025803949831 1.0349818528847493912652943386785787 GT 1 -68344485475.9862241139713634617030958500287125 0.3994214483007582175427173603462474 0.0699883485293694357966017940038737 1.0725581644502723509132160344760010 GT 1 -583267310575919388.8517038465358610880106580683323797 1.9647212519542374230927539315729585 0.0379453810160538247620043655730051 1.0386840534375659591780086611988472 GT 1 -428928486.9349671865589866477962023583510590 0.3705716501220158584820004140733035 0.0220469145562084027065472884410360 1.0222935799917854947020055142644815 GT 1 -387122105667.1021121467886458879535658595544513 0.8022612768239183915003872868198980 0.0350180796680872413409490945821694 1.0356459132260053534917653380469004 GT 1 -703948865481522.4683398257891998865796038467682789 2.3682228407067689168526866768608093 0.0822877683699443976066587631494391 1.0858714106745050481723181396113451 GT 1 -840440150805508159493196289630298453.9167253086427563693462827271683769 0.0621126612833368841261749734340005 0.0229474496014535309841687005354916 1.0232148408745441102981817207935916 GT 1 -555.8623571106328485354910613243977465 0.7647751983846481689686364078917479 0.0475299577566729077547799742562414 1.0486966241889389429491965115161493 GT 1 -1745247807374888560178069.9819804151888714479398103369668213 0.1117708503287146469230496936172752 0.0594268321311438693557556426337171 1.0612658364899711214703138318969380 GT 1 -832382393707384004249759722602681712461.9997733167608313362852303919655535 0.2860813114249162793432386008962253 0.0863629947808685275611791568561804 1.0903219360636372057663490061426161 GT 1 -8.0573371941092129672082168111621284 0.0162044136836840332346560272283820 0.0282658876039119127638806501805092 1.0286730588600852723694995462755738 GT 1 -1934098446145636392792.5830121516968917169147096266896113 0.4749469311122351738604179894088720 0.0910000546860078849582842443564263 1.0954102449652847639574480053480654 GT 1 -16138096.5593840611449956412304368069891443 1.8662114349058852555385222600599924 0.0073830051666523375829128980612238 1.0074103944426788249847229407537074 GT 1 -4953100764539.4911617532087673924295080122422475 0.1959191107423716626450739854534979 0.0673854476532212231026880629406110 1.0697632906692053206291552613648216 GT 1 -309620722881138860220.1933779561482374918333996152897246 0.1851007802058784984853877321331343 0.0815606731372169145603729711695746 1.0850794332722378249997692050947380 GT 1 -560796912144867923898715.9289123543501837220929294515115148 0.0803077784741574418417887492892889 0.0614468902886784535570862909853169 1.0634158345606464679575617825306119 GT 1 -9039447443669911834.4020833644260433108858973145384506 0.2692890244192002311437620546098997 0.0026674133420433376212724014576306 1.0026709772279940337144090599998472 GT 1 -2.3875401692254041155305662407366681 1.7362513713047343156723323608359526 0.0346768757710993592038894560317085 1.0352923899302931820651904795354585 GT 1 -156.6143679484715609457300926390378504 2.5381834658356985025835936741748544 0.0166020539727976482071686278106382 1.0167414126507721812552983470544156 GT 1 -205505818655.2504893514743525616370625921896243 0.4896114695701116906477704347423237 0.0175462252226778812497244430140020 1.0177019849182396977728663085387771 GT 1 -8682416811611013.3352027858394981936629382775310054 1.0745736954099935566351839165063901 0.0447694274447923707347892295715972 1.0458025304121006237269340487847434 GT 1 -269570024880291.4835774949408783876583960098451593 0.6963874289991688906117892256532145 0.0173777821225329809149663857112923 1.0175305481888846267478537293306908 GT 1 -552175076508449208651.8591325697011262553513904545735747 1.4345699336707570403520894633156979 0.0014221176380194505880053520469918 1.0014231298070370521820605977112655 GT 1 -77734.1860101851711328376943769651811677 0.1907395020504533256198582933321791 0.0727647268624723024675227418189989 1.0755479450383433256774810218784990 GT 1 -5227722152719019.8392213528321856728567955624351544 0.9361019351457901179403338512705002 0.0524021925853542893571539228308984 1.0538251205302324135861291272909225 GT 1 -934336798498443785689543139.6454435991386021283579299518992796 0.0257368977036704206336749436181958 0.0040788222100501312578959181815051 1.0040871632942866872093858857452712 GT 1 -11111685117085858503155823.3645911780408691265072603983096545 1.3888725129820620938641002364062050 0.0767933373133949871077977068386276 1.0799021663061149824006364010444560 GT 1 -743405479921942825171348671491.4499338169419114083761155915491247 0.9529526718793914984584155359578992 0.0682188151017276365773020183458120 1.0706572720137886384386511845252556 GT 1 -435433112292257603228785325647106505738.5644460653831202528070782451125182 2.1278488018373572708461495545105445 0.0693851003062668190567044255434198 1.0719097288532823369859391216855029 GT 1 -1122316838030435058590748377121699.4508712981600189525548126611723281 0.4326011921265064441328766544790588 0.0529138466903879979799224525669228 1.0543652149502808820986140682268331 GT 1 -19247717458914522798141531791875410.9151468743922943322497003239466150 0.3102697587424988273525676016932616 0.0343931230005447056434132068534337 1.0349984872280547129270984850906408 GT 1 -611831527802062787589.8747430431270447147910272402870804 0.3500030236100731273845604488752461 0.0716847691536162129213300128960264 1.0743839154649316050605995204369373 GT 1 -16843.0070804969262585015364174562250843 2.3740894927616690691640203807117222 0.0896071168210336323776559422516624 1.0982856692948201556471074704087685 GT 2 -2388116359676120193002717662948.8796031920439903822266368321047302 0.1138532488727328615103527072389763 0.0252917345850992356146477341905568 1.0256170677170934173725657179809795 GT 1 -26735815510299662704338202294989644.8033808698725603195000093712965946 1.1954217376969545696864924911603981 0.0187529277766242262518852438791841 1.0189309936113706551668775406790465 GT 1 -2914909847986993709243182077063067145267.7625536317347835626519082122900630 3.0319893087353495196871831239883053 0.0981127294379658875375463124907061 1.1032657439337682073679404926861256 LT 1 -242026548302.9844758101084564917534761697188206 0.6054531733641398153605050103132085 0.0406152634860622088799799238178090 1.0414630994487576299808532640783804 GT 1 -134138639711.9364753584760120478083942239237782 0.3353962067029087485107281677512753 0.0233223692291057293703902183559906 1.0235986396568610921336291568171460 GT 1 -6459.0912117430339717556768549190497555 0.3864959475267651398206168176584545 0.0115118694774641348346563867488902 1.0115786440080122016503548582367628 GT 1 -1.2333693628077678519790954674230281 1.1473796886334576916304671553170711 0.0658904245222980869980863108187995 1.0681615291359611085023891297608435 GT 1 -53152317689367426255.2676275894728197325429815669502746 0.1512873675071136431661870574098033 0.0315808271995569155153515687167501 1.0320902556833617699178519336184511 GT 1 -57729142915967023255.2363715891038784840902802524853895 1.9278928063027977516747626777403733 0.0240156783943414451916836125437902 1.0243087566266993788156070037628428 GT 1 -2460017939335299469559443032567.7455674802453983865781800597612250 0.8918077396631371721278733328881767 0.0557949925220633738891383802659237 1.0574119674759045883065958703064023 GT 1 -74811341373454892028742.1368017059961073818628162671491126 0.1545515901552353677583558577455389 0.0398934046930848985196245472729192 1.0407109639063453115894770622030421 GT 1 -327250282612872392709.0353739282551144769758956568044067 1.0942498058703112678059786189190578 0.0141334147114872973099704392662202 1.0142342425726149453336637766877438 GT 1 -13915.5212495137678549694387833343713584 1.4530953243961217284468433082685660 0.0580964100179523794419798370373039 1.0598523557347371308976372419661617 GT 1 -94728599606361.1351825517798291643536728868386096 0.4364928866409016363399103274439510 0.0850271506219490025189185586107336 1.0888608869577355255858623360956155 GT 1 -4662351028484485107050434780795462664404604.0135217716932339999670456363856000 0.4406509000824623428547257058595475 0.0391621670609661909465013462533092 1.0399496324938517736714170967516052 GT 1 -17541759.5147895951782184572337042482928536 0.2429001673545444066004724393478434 0.0874966568320592213834873688464679 1.0915635297865134585086091768341481 GT 1 -43777254662357904312.1743545293749460684172377684396746 0.7038192780329339738271411433246683 0.0267535780624953774013836399230965 1.0271179689046955994174109357547952 GT 1 -692782958578927405298557690067.0991654724684877355765618308414596 0.3874386797281321900733542225253395 0.0152363370780003618889945856929843 1.0153536027191214342814390120219717 GT 1 -1224.2978557868836659337135531360076404 0.5836863196702974925240787045165681 0.0952700575037090241807221153167063 1.1001187858956113792138721436839096 GT 1 -39.8499824238122435538806014619826243 0.8430758446105063412885194057803405 0.0260671797146072742397093687616603 1.0264129507312934027914519439464687 GT 1 -1158748.7498273171836799795740887426392920 1.8123327678579930549486098794493292 0.0046407977710779080054406268270957 1.0046515997057400672603752027635709 GT 1 -2356218128194086308347295.9811702012286118651286332541184261 0.0225349060752226225488425390829652 0.0570224411766593514478276376027398 1.0587127942741166040304326509000174 GT 1 -13939657165700180708823299032850275722737.6346246904340414850134563438398340 3.0410012982391826334844363622311592 0.0467245966712512925666620123326701 1.0489963111662901014983337349568821 GT 2 -2751.3396525372170923257774944968491151 0.0736315601911229291748945452331690 0.0331036009175343948079118685184847 1.0336639256877325767037878751673456 GT 1 -3.7754802582402102576537457399123522 1.3112277569248607015223131881900767 0.0504462185743518018281141465862661 1.0517631084953927982403856900541736 GT 1 -1150508872964011149604018423617581605294.2171760912375952062394136750591494 4.5510590372028329803440893185434915 0.0211966662237805286128301456139713 1.0214245414363604509992210261329811 LT 1 -920814980997609.5167601670955803800147192046677056 1.2012766618439025397730948209677260 0.0129856775682555396794870541928010 1.0130707285782111731152438130332799 GT 1 -9901501.7503512006968754239189506986617691 0.1176271757361717317801044903872065 0.0990817875797338668038316116639288 1.1043407997223682201119259187270208 GT 1 -39575066605379857334539413.7498016271157789610943868399317157 1.3793585919545052550072114411753257 0.0607053236102203771583814804361181 1.0626260296334362990507157176087888 GT 1 -29790862921732142277649.3046646674826921962109261947034301 1.1514779543508990945446917039051733 0.0711686480827358810624545495379324 1.0738280938739404193115921397243185 GT 1 -1404316585746610590572080928132771879.8924370650919101925945137706180006 0.2992111563714919830550782241731964 0.0141922796376432136206387867803109 1.0142939531708660839160526418004622 GT 1 -69438855725069.4640809052959515665267206397344433 0.0452056231595895027107442747424175 0.0789302840596442511986791719147308 1.0822195496737543676361814062722119 GT 1 -190600.7776397181588609195738192560139599 0.5985584675803264424729708249194226 0.0277591784207320800201411886410500 1.0281517463824401124080269613255695 GT 1 -1289540454485401817348.0555546153488288908442588911517135 0.1647411527263390688306582032874769 0.0360953148326653972785368468127633 1.0367628635677222182962338607996445 GT 1 -10126730622348189688488420.5366909042861209845889437947328376 0.1063496908437384328316692053136605 0.0591651429411143189586030470662981 1.0609876520788812375809277494778663 GT 1 -199288526750127902316745531981903.5762620455560248081403124108182390 0.8845675930191072036625856209898460 0.0466758428739949719470191013416975 1.0478002892749752737730299294142093 GT 1 -1339538.7450023914687704180178380881137956 0.3556783431760933512296594873929430 0.0016166991525247743582063793607423 1.0016180074208406461881081729579367 GT 1 -28670788941586243472268369090897252825.6705193142320440396759350320660664 0.1366179394001560779833507778569783 0.0021452036385898129901352199896003 1.0021475078838887027413473421226505 GT 1 -1153968247.5962834604856728116514058061021344 0.2657575243901866906620455068979532 0.0687095736184445592628346823164365 1.0711840993510701217882018617982956 GT 1 -111968056581186591182130.3653844817513169133904911735832738 0.0837870691797868675892625738368306 0.0578356606490027148192695893036081 1.0595755617120218843317229136132146 GT 1 -338512579658062341706564401681004802.8600742904140699149856458785913073 0.0059387853442268151436459423161409 0.0537322374714741552205679114763176 1.0552297029102002527452411166422616 GT 1 -36937480124851912893.3363648491017325968557152895114788 0.4742249779511157396390627690489681 0.0869103505246448306926005612049851 1.0909212110112607804801623270722175 GT 1 -1238879575613.9881967002875303962835746870082731 1.5677485491475318484677602929303515 0.0149299043530407135110488718338711 1.0150424772486612959189647441405739 GT 1 -100540382436726322008724917614471.5649050836614581513744852480773167 0.5824930989930489814053280171206090 0.0515662644181722894052914321129837 1.0529433543756220438959247369329154 GT 1 -2201802416654552927321468.0314962167083697941186460302559060 1.6830082085492609869912502863031765 0.0093631532424262255619438072409546 1.0094072631159995937133791408311232 GT 1 -1259828962875572.8021420849023061827060744228019444 0.2011980640420752736559155898931450 0.0509841451266412121197716782922499 1.0523297735851521161505069249191520 GT 1 -15621261735705937531382992534678913541.8031312238161648356393004185076036 0.7710885582339269361428125825009462 0.0004541915908880587370419625588020 1.0004542947671310461563637314490376 GT 1 -268967125097759.7663283093332457822442955122967490 0.7916393832065692222484106675513716 0.0882498054811800806324955502904523 1.0923892359467072838335890902071957 GT 1 -490579851665069614813407591951917.4684788588648680416634918756958097 0.2224810171319648153108572488154488 0.0321068676786461094265152240301679 1.0326335982946123139564691843041751 GT 1 -4119.9263729858425683427207667059998730 0.1790118104158235872661002696412083 0.0727641978704012819096537730426633 1.0755473745338171826921532918674434 GT 1 -3039751876984236539487233720057734475.8560534041894799399954240427569871 1.5682024341548459986688752416354188 0.0466521768040614964731871912588482 1.0477754647952756300049908170525601 GT 1 -9094678236922086622011738583817089.5431234950101414234753116245368390 1.0062223514254687657007366359124433 0.0275566728493256922833352416293323 1.0279434806110853044181620188200948 GT 1 -7087452982537829288492610.5853393099673570170836850677758011 0.1103639102625945523356733985200878 0.0253659433901289523877251933731273 1.0256932049909083979990125529164870 GT 1 -24652409446008283799.7151844782224911305938133496555468 0.5234019413150241764396488543768287 0.0568045346979359267705481855765464 1.0584817375503635784487771296736831 GT 1 -1238996631533455018990045051728112.0713971536656856405992499929039370 1.0515390235096658512445033401395884 0.0247926802609053509144112047092176 1.0251051949582005633775455079531331 GT 1 -11058715804458928702500541444423097897170.0523389469053446491085871250278789 0.3127212157905734490239778318990371 0.0816480602456418413899745400553003 1.0851745851929585744417956205036719 GT 1 -64102506766.4261217871627673970217325989557636 0.5530619311059639760496726191113395 0.0247075321706593467216253483240083 1.0250178859609447961584386170593248 GT 1 -70365463973705632457.3583535606502555987039416818531956 0.6670135930194705251168108842357419 0.0343244228807970947117545360736582 1.0349273426685107909236425887276488 GT 1 -8620088104390475923611.4485338970178646282808374642409852 3.5707144906320402852029622782107461 0.0284855037308660436730037886032883 1.0293166674082401012125694621356846 LT 2 -1136490510250094763113634.9096193897189815600130988359963047 0.0564763202098687497508558440225819 0.0001197395186717682343934272363526 1.0001197466880202427090801999169782 GT 1 -540781405.1913997196463842618725028551270092 0.5318169309943179083414779402461514 0.0227876771654001195860781097931921 1.0230513293274680413810389197366694 GT 1 -43451167164610084076936316193046963369.0598796036673031619916619684934166 0.7052743188308088287231460086904059 0.0182919931966308998306513570292197 1.0184613602576683716163838974871899 GT 1 -114310861199023084.3254850007683325606242969189515529 0.0306917245216300804552882676581574 0.0017866703369406046793101792873860 1.0017882683360691498413963436113495 GT 1 -62677318389463.3871826033782674391116190852191119 0.0341078664600626720367493531894925 0.0871781708040049548697937592231882 1.0912145661759653298669508323063691 GT 1 -693986437376435178011096445033278.6827319191148277444030794591337884 0.5298121479127483063407725897416061 0.0800777150235101485110296728950726 1.0834660853587247923763205420468394 GT 1 -9658.3231262091570352986910372960137333 0.0295751922261328193711762400279640 0.0586205704697214133077307523546454 1.0604090011883123518038537538650776 GT 1 -10154668985050662.7660912122859438594260620661269554 0.4292291525440463412972797436296279 0.0373629672540814356523795419506792 1.0380788512700128991546487396086548 GT 1 -22523361052880232162257467682300633546.7840992552760968998993408140089804 0.0583561020826984140901785239340719 0.0887085968779894608575694361271770 1.0928925611665912444038017619684982 GT 1 -16268064019652307.0892937292874299350596806492785302 1.3357180579934535413597924565296117 0.0051992955899982169388345376402570 1.0052128589610575461392121642238204 GT 1 -4057088113865.2621487138941042505707610610273584 0.0179759095151951068275163852424418 0.0787198416404756195625360597912016 1.0819910996675753387417050807679193 GT 1 -2382341604102751085790345.4869855316471493708900102406913224 0.0696448553802759724273046722704369 0.0364963854906954179364603423228481 1.0371790396980067881079761176784831 GT 1 -801489083908315028.3213393307255577163841079045991169 0.1231687799571667261108557741871604 0.0442609990588914376017463563148843 1.0452704147730563270439681662091000 GT 1 -1829886752281541279255384609.6909516093202998673723204061124376 1.7368223827875681463924887136709600 0.0341344211516359534908201673637748 1.0347306067830889775526957367482432 GT 1 -2089340273955649871660270304.2889429899161849953525597818339400 1.8985650423325124756680159785696293 0.0684330313309693642364111803610135 1.0708871981601991733952482298599872 GT 1 -16.1619213301882679733591451991572469 1.9484784355116341899105834394030812 0.0434751018625795715016888487050972 1.0444484599780751366387966928596487 GT 1 -2373422584652223235892612903908986534.2605591755693741395923834917739381 0.3313161498940487571796592195823057 0.0121090984804691588119128080222128 1.0121830108946276373781245587781054 GT 1 -2820420917614820379340674599444186500617.0000880208111454270733553489130526 0.6051415015695410155711473133445881 0.0205130340884830384051836631013697 1.0207263485655919713425211613936497 GT 1 -219342344803535257634509646911.6487900040380710315644909843179510 0.1071487540239085538950299111049423 0.0542795062050661630738217260516517 1.0558082146922116336042556599360564 GT 1 -6040945943423530366358890333574980059746.8259153026662919213419853633971687 2.1970981791230841724298569513891108 0.0214630459595624036956740820219469 1.0216967268494789555839436089439713 GT 1 -2579999566396429678358318083121801145609912.0628670449977557708135493831232160 2.1933888793628509219758464422223783 0.0741321535804481727374792871257003 1.0770237689703618092805198690772734 GT 1 -2211491122.5130157097710393940982232932276859 0.7597352199918637745273584270635639 0.0660979750473260161029155829722871 1.0683837445931179873998064708156208 GT 1 -3869666588862646247963693007461823133225835.4905025538443922286616747329860060 0.0308562710532848240312682804438683 0.0207744920189100950053417813986886 1.0209933177460764874852429331678875 GT 1 -380489255679107907295.6835422313790299129570613170054342 0.0572114349010938400330735901845791 0.0841118583650773782001421778350090 1.0878610378838672298056640819928933 GT 1 -5577159302548683623.1503041211594207700894435674076288 4.5490403973495411675427975265345261 0.0567790360608425384632670644719241 1.0584547036073808006391451315932813 LT 1 -54563759334626011954325970535173.5085225049278387899382820790959896 1.8063165202829298720738116588014978 0.0885625368607735541381505682896793 1.0927322959508127374145572219988787 GT 1 -5150466249951798921259949082.7511164085161518866980879853964512 0.2296864612608413384838927336742854 0.0647138225371597191222121682978119 1.0669027243712056137673409439408125 GT 1 -3881159901441383414851582.9050754914818267713011208484431126 0.1249333263775597583810575695258534 0.0449756813617446362906242051799275 1.0460184742829469939329378200170998 GT 1 -23522278274760994877632.5261623290814881680155927019386860 0.1976181903757587690342814019349077 0.0737598310931970344831190456363608 1.0766217162939676483293665099615073 GT 1 -1015932832389978690161908214581436537408.2133089167071566529489269677737276 1.7205786286136130325095024923220239 0.0147741552126149048896251486665480 1.0148843800435116134478016775909170 GT 1 -66315489345272052544310.8361155361499037719627687823981930 0.9649630785449036923024503285975848 0.0686968061015523799159114998168635 1.0711703899549319990997955174724666 GT 1 -178496617.7856337008184333399369584962361334 1.4672270293522658476176245565946205 0.0247565741338661740997654030851830 1.0250681715910382233427609584286631 GT 1 -2.4117961259594735458690430470462779 0.4659289652889861531789751844496606 0.0048540605927466998066916991364583 1.0048658798078346600493152118733633 GT 1 -34.0313347132549183210368612188019511 0.5856498211684670150947354602200836 0.0783296540935918103892176224004649 1.0815676617599259779629610898289429 GT 1 -578345769054777999260458465771.5564528125868960593310343984622140 0.3811950555752674624757409486286749 0.0140110807396239431731176087908833 1.0141101625152901626476707798755347 GT 1 -4053.0450462367809935543277995677933353 1.2354394647967743375214222992766845 0.0226113291389658012986568890548295 1.0228708853110354267938627195885708 GT 1 -6095.9429035605262623223304826557938832 1.3031382389103092238393646908046869 0.0266063884362716337419281455516934 1.0269667446167212974373538498474329 GT 1 -2617.1358928526152232751589747620368336 0.0370095543931631363987771204773608 0.0448273230099290538455144803399735 1.0458631412440474263163265604493011 GT 1 -1602913.2280331713794080261203944676171144 0.0084266561478693251150991871485343 0.0063842146342803246344884583005118 1.0064046808863269070568000726165701 GT 1 -1770214588931750054278919964972818.0167033162422814834114314388589377 0.1966602851958811885327124062592107 0.0217090063586466395515623132608870 1.0219481136928352307277370683745788 GT 1 -3133645280939682368435326751033359057505611.8116467200867349172907198715435403 0.6937650082868688574491995369344428 0.0943702551829917580067979789314672 1.0991247266474761195672716038245124 GT 1 -188559438897.4253680634484861002525397716357375 2.3084726824257867043747701039134124 0.0808247270844929472158786348511402 1.0842784534670497088319812315777360 GT 1 -94314171748752281563254.6938151197306001740829203622147136 0.4279698861858302349160257805019660 0.0393787141097388267737276714072632 1.0401750310439092639323410048453723 GT 1 -138539403368895819851446704.5609281970799563696636063233562433 1.6213939731404546779781664743653967 0.0410479334674996404170655007572052 1.0419141881085664817025834454692989 GT 1 -14729712111652015997369951833077005782.5342708577389946503729092617404442 1.2061913771212559579416650484561451 0.0568935044786796914192958158995616 1.0585760700407681416492365960712952 GT 1 -73771249165845603.8539129637132704074887834334725312 1.7802277751491023948761413670222522 0.0611158149453017089606163042906986 1.0630631459806000634088212182579536 GT 1 -37872682492850006273435137099024403817.2598194452286105228127831706771639 1.1863637492758103286330462802240578 0.0314098856208660214508909597971735 1.0319137551572506456129393988163502 GT 1 -3128109964567.2715227004903347395239582570430390 0.1686402120375773318798500634140919 0.0606625949076658374480876942970777 1.0625805404682260491204495459633228 GT 1 -3124924292937557259265.9124247807704053942613791721632710 1.5384970665463557158287269842764991 0.0097477361300693527085262001272063 1.0097955563227337299002811260320663 GT 1 -5178897.7532029562980157107521362782866065 0.5202356127513695702182114717358410 0.0350421955755528119315341212057162 1.0356709045841886980075083064626137 GT 1 -431.9504950632286118525776277265951283 1.2111781322489506924158188205494824 0.0255196024408180373123338634927357 1.0258508756199253313058734957140076 GT 1 -47243062151112853551529184737862232684131.8532217311312313326070369001652904 0.2142936486584632180965816353485477 0.0545039762221949970221691078468603 1.0560455963099134522548281252659388 GT 1 -370045553156487884.2947443804493112296492171279348033 1.8976560242136228039365262517712936 0.0773683634379062670404892329399121 1.0805252177872193633044633740783116 GT 1 -34259607712440902958853630752.5758363650087792652711395525062181 1.7233272505326657891381983091156012 0.0334764146404415948568134078488905 1.0340495777762884226040165282122290 GT 1 -121377266889721057005741388815419721793.7294729879405891096997947130886519 0.0078131201339445124617943992268521 0.0333839061910838242924383582837807 1.0339538697936472745045946416880530 GT 1 -76846072843334948181.5662305328904962612105285932884682 0.7810638889097910250765573934608262 0.0231441827523846439794284515911404 1.0234162148538499384797460296672650 GT 1 -30475558084628665947611000450897599734.6888373656206502147574196682616756 0.1815071525371759223213781972891261 0.0382689370546194547424783089517455 1.0390204277485463207560554647257750 GT 1 -2264920349461593055069291.9819391284176942284728137821058072 0.1167978229936160647234679919337939 0.0195599452782545280008978659492584 1.0197537726734058491711685318224256 GT 1 -153487964842075426304962.2801589640465652194174626169044864 0.1880940092063132442237875672629888 0.0719251860804649320788999365467614 1.0746429309976540360748396522363854 GT 1 -3040585929926988859054532492352946716062.7662668562806662699690474468720918 0.0097826354239111413971940715423305 0.0067909168545620709117662072193065 1.0068140800562366800560388307405186 GT 1 -1587841031456504251.2724125369500047326062247287894978 0.0807747446379939367813461605507541 0.0458726840061424111662299928356567 1.0469581615179800271504158457206587 GT 1 -401221901482764438180393969104292080407934.9890867672676207686974771346519992 2.6903951270646388300900501691791733 0.0364796976321429439729109414056216 1.0371617198729576681840756203107163 GT 1 -430983032149572.5825688827207257867636293709204197 0.5267971446908504318825853531366047 0.0120008338684106608540530472999831 1.0120734252309924679329607631536703 GT 1 -3611392420921345465652338388203177942.2329139186274914900437977668133270 0.3652362276279472434041391585523793 0.0533353735062428014652935407174174 1.0548103916095455883691028445400559 GT 1 -5923.6777103364864613139274514869273616 0.0236445427395668028768732913510524 0.0086236991352209930461324731249009 1.0086610983971624797262762773634090 GT 1 -17270898898284216113630929.2282051745353801070298249010132541 0.3568301692217977970263574618665402 0.0534942755198955946671064259180713 1.0549782603002254379674905241383581 GT 1 -9.1276690703567438462566827451002711 1.5718324967574249228322957446784014 0.0919565912869982956356044280216043 1.0964630945709146502501416282453669 GT 1 -80.3729603827135161114065431866933167 0.2668843511185347122027590302190481 0.0938069126195969429324701792456237 1.0985028749172324101710427640767982 GT 1 -5385732054915619096868227760825073964858.4594748600388994081755447221937000 1.9887348519233768311175250821267041 0.0588134109340197480159410141594900 1.0606138709916211490326061449154910 GT 1 -4987427423267225247616.2277102464850616457457634815952849 0.2760377713009541706236461041372547 0.0562535361304943363655448022186435 1.0578977253191612468080678568308969 GT 1 -262693459942923.4512630997989269494334621336803540 0.3900079963347992626394556166877903 0.0945793413046311502775656399979990 1.0993556270378383532126857934005356 GT 1 -762224684822459.0481780912731516118268921966922888 0.6190047766648133973265349841024258 0.0424624555229135043075590493430921 1.0433903477539380046743410596820964 GT 1 -502160963500070556672609117800027368.5332061874095397887068743423162569 0.0857488753868552997745290028735582 0.0033500694095208500452431473375998 1.0033556934561891488457975363958001 GT 1 -3507732622.9285867122506362209912918337081092 1.3200942914190801678149484097233074 0.0131087167301439465048710762181381 1.0131953942782247515631349985564264 GT 1 -573501826403155.5882802184312253260814039428357728 0.3027407905921348649940139284277146 0.0060009761173813266007295823792317 1.0060190543354831421124051252193463 GT 1 -6123178575662857881.0494433452079602299403629609278070 2.8920923998147469004244921612827463 0.0468163298641679960030340874094469 1.0479476655284775453051348529285337 GT 1 -59062.6982570832854376858004136729723369 3.5998651118700524130016912660520930 0.0550915399717061967481790092573732 1.0566672238752996539276452633033874 LT 1 -462742064687505308573576272336458.9197817534088104910212540801826191 0.6161651147542529215677109297817471 0.0577285743846118993549847909934407 1.0594619083134853776131206434463869 GT 1 -251340646228807525471334392523773040862116.3085590044540404862153673932260723 0.7772321653425468518353106026570154 0.0944411807580865288445005256759596 1.0992030460191179977371469894732562 GT 1 -143500966.0405819998279471204966512268202675 1.1628131414996732040806815521792403 0.0616612260270870612684009280878222 1.0636442288983315940120728684028157 GT 1 -5279637466578598931406286.6606211725403584043863936363383665 1.0377498901237050697353871906054171 0.0210615661470227279087300625887148 1.0212865251982578541905793068184064 GT 1 -516833644900409529283424117842401667639.7729493987728325255704830994064981 1.1115498628787672921499304492837463 0.0205650248513422564307082272852800 1.0207794295605838267688810572020900 GT 1 -27523461163261750421160491146775.6561522354109503047668491167352246 2.7706494481781345520111023072928339 0.0674669519838835099373425859673481 1.0722902471576815689862726347248303 LT 2 -16166887046013182694.1466350804404451415786014737385522 0.3535761827262932607515142431118586 0.0974391833428397119788144061606921 1.1025192041677547853750839851914311 GT 1 -396297948229259114971079394167895143808.8391812636673782951847038972294587 3.0426275955730536859133081692425785 0.0488840482987521249303614902171140 1.0513752697954834538103719368856233 LT 2 -5225221526087032105682.2823963234257293691814196868991777 0.3105819968089716120370961181529909 0.0205479028405637776878341658343209 1.0207619481947399647607783607636237 GT 1 -3101558673592054595682.8242823376234691254443786638484176 0.8344442405090724361923407549814048 0.0326731964732733884393087125505191 1.0332188845458578532619466740913259 GT 1 -5562111.9554955983228496266183170772172380 1.2858344798224839105378239286194604 0.0735907193372684996856348108328898 1.0764391542270450357942146502011828 GT 1 -5417361629322423074247.1987184969796898150133209609973450 0.5589273285444837900665923233291160 0.0548051025631863731108525573692357 1.0563641320792015132968174558438044 GT 1 -81264289187658530715081640086250823169999.7460072875916581055430272786269494 0.2905140138676230322877674987065873 0.0381947875295808694519913344937979 1.0389433306581269728698623227592905 GT 1 -6404533523826018788030.2341839326882625634812328336489430 0.5644743682065335087565776525083414 0.0099156404744165054072416454928709 1.0099651278418036496831447914346006 GT 1 -13722422857018307.8560494287666056252943870545710017 1.6319870153167704308244673968197972 0.0601104596875287058705911624454145 1.0619929209288460027456844013146029 GT 1 -162052825475685161847599713020244327885.5185024609703039322480161850086301 0.2876075890133231741300753622943479 0.0044660819912343893554299337981262 1.0044760847285511590729343187332558 GT 1 -29559841399448708160130750910303.9557291427522892424036821422467486 3.1959992140043596163277133631368856 0.0385005008280863272184338264989674 1.0392612348354833514517526077057100 GT 1 -552128640163593464140932378029984.0989704771946922617559609615646062 0.0372137664391927597550319006104750 0.0040285127186913829512607018352189 1.0040366490349075088883849696737306 GT 1 -200808354.6371736715839012637696824471779755 1.2585035008296443908590234054624020 0.0916970405339518836630200452957914 1.0961773002319491570778401053608962 GT 1 -171160398327183.2354168960344379622252490192074439 2.0972765746979687127265730720390344 0.0218680202831875979500434921213496 1.0221106694663632500522076273282392 GT 1 -678901728723193163043511984220.7972987467870328348732523497839832 0.6773984811716532132197746561896650 0.0695188610067527438662150249261339 1.0720534728599705802992600785304434 GT 1 -109816641567360878216.1210376538899180226146470459191351 1.3034918434936136422332105862839144 0.0626507779351521139035130760584902 1.0646993638695654948694244420209352 GT 1 -272767754347220969919250875.3827327345958207623930595787975141 1.0581453392182943227178013111604218 0.0417201453511770349553985818884700 1.0426154198205948702102976676298531 GT 1 -8454300285637300315973973497019.1109477595666318739704048259095912 0.5557808850523809914464372253145856 0.0046681620614578037542379131614196 1.0046790919582588883752588806731587 GT 1 -5836366.0015459925113047464738220530076268 0.0459488553118287175450861930933508 0.0994491521292572979714193361353486 1.1047486496962738736792631424515134 GT 1 -92880203324975859188709918345395381.0674733978610368097436009172214386 4.1285542824370234298357095902892350 0.0977694281666493871067107584773677 1.1028851687103623313690561885527940 LT 1 -71988051383618439553378862656.3495573097715705897674748079401797 3.8420374117111619188952679722766892 0.0022363804737137321280636154619770 1.0022388849071327016884689313649041 GT 1 -224180959965.8672262653456520092605954237235964 0.8694588479333818552204008771668784 0.0384790517114835982417343353143474 1.0392389270990971424636712287407494 GT 1 -8.6673801235975907395391583486902425 0.7703801885716485251050244664606127 0.0469601288652742145806191580694800 1.0480985387060096445541158092751431 GT 1 -14050149760229.6701571457852326279971140428416857 1.6957610132862319330483636424193764 0.0164440734503789213007835307363929 1.0165807779506289922660613710197825 GT 1 -101.8119276571584759154684039578412610 0.6749447370571552945780542133758317 0.0991321839018065324011058329480254 1.1043967401295954276702571077504450 GT 1 -23448062509664322227926317142702918.4495650855380669341985733011775869 5.4473049738416488735739544805705187 0.0893182990048358191893661719049031 1.0935618379503454297764060129308422 LT 1 -380966553031047502803091072550909631080022.9577485078496016266575166903483244 0.2958690827089277082872967127503794 0.0586253427105404242117657282273647 1.0604140706138442673122619081265868 GT 1 -7458324548048210839585669239.5153348020177725745542514002352628 2.0058799517555508585492423920758266 0.0551373518621223076328772826248221 1.0567157079379748853178420430354251 GT 1 -18546676285.9000842487346596872599607575320183 3.8406351943404226143266287207802048 0.0102434442652167654454154352416128 1.0102962693908736032527106739461807 GT 1 -6267546202824238458020593.2978582673289547261482779214058488 2.7311269934862952939550939214638501 0.0485404152165270004519283036863182 1.0497580684150078701242364359714073 GT 1 -1206476572577150558771206230381874577.7888966660723160358099400466337602 0.7776989220522775816323521912093895 0.0062441005182004625415029328465648 1.0062636764457581958140611708124611 GT 1 -1.6050030411218429871358587184995794 0.2699423493707722363923704461644567 0.0585095640726764206356532953150981 1.0602910892718171281735624420257966 GT 1 -2920094069762.3536313894408243340081159623514753 1.5972238792455478993192718521949924 0.0572275335302209736379613039417523 1.0589303123455676593190660983874422 GT 1 -4136785947767896117376.7597284266940511427064817823285882 1.8352699472549443410920116393889396 0.0332052102802016393577987032834774 1.0337690193690289185993644655638804 GT 1 -89089088518757138968803946425300959001.4905706305007387681972263382927584 0.7106495552903475124996159554267649 0.0925324188648865695496423112784027 1.0970974367483149483706690120747989 GT 1 -154223197396149713031118582888.4054417724945384806410569123070315 1.3671131456149434413214381010233700 0.0459089792922403586561162966360405 1.0469962025381340011235995828536694 GT 1 -4784272577831575.8844357301767596735806871377785654 0.0497759694652721130180373407210928 0.0986087839237646915803251968927081 1.1038159135298531523963785402208033 GT 1 -31293464804.9191344398752315042094034893644795 0.0579727301982783043840720580502829 0.0838959011236079309155289704039967 1.0876252757035541915848491245822238 GT 1 -178717623539043796326788905294021.6907326322657062150428595549708877 2.3503328964220527205841775875863947 0.0413972282473456355627765752636497 1.0422785008017269799646195382815694 GT 1 -5.9912659885348908474310933093007352 0.8199945432233719132396386544139393 0.0191613469926300737731077402954478 1.0193473049036375456151125090706252 GT 1 -562787.4165650692239541533069798897803889 0.4872111282122485714742882596587248 0.0066681256235666364885376400293329 1.0066904569004322378387761827377040 GT 1 -1447437063588024319.5494456093328651555233698317258676 0.9469002456752683059528421644617394 0.0271852453016540138847841008847657 1.0275616006377786556937532006486315 GT 1 -10016259156158642097865941660715836556350594.8134123829690895700377829778737405 0.7170858598717241314928234804903167 0.0094305503287781600755491657877179 1.0094752995304804265781705506934543 GT 1 -295770334510575354.9038428508973088753101964992989481 4.7743805924172581181642156154957466 0.0870039326629262756006428487296550 1.0910237058038127143668741396033723 LT 1 -79758178412835.8669424204184219830344553995264244 0.2038780417020864763752328536705528 0.0873025948518280475363988341831044 1.0913508825134488570374896690129982 GT 1 -727397768350616841878743395512.9831937119682090199546669784984428 1.3834742795236447801911815412937105 0.0230303177631724300143080146978395 1.0232996589082230982323398080441407 GT 1 -5090523377.6536984197347000700992891722347686 0.5837450601193256578136986516351706 0.0169493642371710209161042885751520 1.0170946487040317530018142904161247 GT 1 -51139144197743646547477088794.1615983862676353717914160364134455 1.9086560931712158770623050892583911 0.0266142507753299790490568773186016 1.0269748218947290157821321009959602 GT 1 -253919874245026189722549.6910315273902037284730758016909354 0.0933925499601154272248170401538962 0.0354954824896606966739682952392177 1.0361407628626261563572001732091374 GT 1 -259112102142388098440083477203.6307178525860578819994227655514386 1.2477638745409997181074954730078624 0.0142653805660734809935918775841890 1.0143681092536325539970720571671978 GT 1 -476323231433612604261.2843384360388149214377818111954827 0.0477217861504469407181465942052982 0.0596564449684626795943514664942049 1.0615099864150197233113430607301540 GT 1 -1309138833470041002.9516869420910629105504571398819593 0.0495629740620948868718649187046710 0.0505418710042160718711604602565047 1.0518638476528675249446874426194457 GT 1 -273804.4569604265215324815471374836267582 0.3011954770001486079773339961772467 0.0915248236423193560306691921211297 1.0959877152862119395601380734242327 GT 1 -630273462799221150832.5151396382124815879142890031979407 0.1311157109492795046842557191335742 0.0579563351664343156415750730667225 1.0597036521535533855441213629824994 GT 1 -47287921770762435603973643331287.5408774375917106647616594030345436 0.0009999017900427341916278606538578 0.0611693144659570332817343591883176 1.0631201296275933118504065121565792 GT 1 -6489.2531243948143407016858610150818857 0.2302907154982390524678861677325126 0.0557698739298531951117400449550482 1.0573853649288904728587129975929339 GT 1 -47216.8621600054809423600361341193919643 0.5408248750004900813592908934935175 0.0348210924654754477042553786379970 1.0354417984181077543328413377921048 GT 1 -22541754224196445739.9911327523681774645014582084621699 1.8789288836641278680395014418578145 0.0198026932319342562894903416961065 1.0200013941455741064883513167785361 GT 1 -400991711055550719.2639377787066840155879149568411421 1.6346780431105877936367432320234636 0.0470636160404699182377274924314044 1.0482071310087949505645229014410871 GT 1 -242585.2290129599741476137445126630727625 0.2927576152538649636880052175698840 0.0580125566637861095494093260828231 1.0597633342863214562899488960683870 GT 1 -51018951298591880767714401486.0223456825853895224565605947442973 0.3511478620633123045739407313717482 0.0822903281406360852722480726803999 1.0858741999739972497279073649786809 GT 1 -2135854.1910628973522360205787352021278428 0.5521212586122713494374820147918253 0.0717789812140244769562862271866706 1.0744854077579130010524450853385217 GT 1 -1792686203162906268694732.8915492468379902577373460940520572 0.5786558241176028157858359622661463 0.0848143919208007159846201338617827 1.0886283839181874401445525994461431 GT 1 -5920.0525280761665117463812032899969126 0.0625768889005292829749193732411902 0.0256337567933039995413170868481491 1.0259680262978993127494561326407885 GT 1 -2623.1904363948222028328759746815899370 0.1740946543420121118422916137133008 0.0965132309442916487483696669530116 1.1014938131570151629413724313019009 GT 1 -6445148295422104204003.0102562434479489075790914423658558 1.4325906950851882345792098630587879 0.0064072528790911927449137378519495 1.0064278674260737670390459880655216 GT 1 -83670311814923138098276265541025.4013416146089398858916814862771886 2.1044239690147065906305235737871677 0.0006338530918984305842762140543481 1.0006340540616975248122143119243345 GT 1 -13107186952780113.6678343838124937207771615025523675 0.2821567765957753099667323688781911 0.0001849777434805522685259640960381 1.0001849948539734166160321257220492 GT 1 -1236985114315871769620405738823233809.2970914482968138928071965896689799 1.4585123891496488444601846855951219 0.0920491149139757518609646567398155 1.0965649931587829602193366306972276 GT 1 -2537946543187752383944186154631475.1425138310030084730961542033740443 1.1550037993294211587237764788714421 0.0090304681936384467579987853667746 1.0090714900225010253924754263834529 GT 1 -3736717243851335847128470218561859486604993.3442074479266391958146447566143219 0.9789864443469018450875589994952493 0.0871656815657911497098982277459317 1.0912008842586664872959419261940446 GT 1 -2203.0646876702180313863832338509763680 0.2960821582116724926568044711787221 0.0085837731013247475627033085635159 1.0086208258690561957903516212404031 GT 1 -22359841970135928846.4980516647400498985238169796616766 3.4310594448979853820297569131319434 0.0970089586742712455266473463066940 1.1020426466268472013895581563367281 LT 1 -40421569320454.5789001502621195081869292783287393 1.5255760118110267014455853575354680 0.0596383709481319071284519599282764 1.0614907659433750539480447255685669 GT 1 -2309290283273850162108900089200.3330584920687411495337616927648268 4.5503578028228161907231589060612953 0.0921191728931881667458469821888018 1.0966421566742968214278532750642621 LT 1 -47718399751003976309695477024340030.5839255059933431883015904075092457 1.6618322160047626924164027076559787 0.0443730969829844347058459190948063 1.0453877109160809406202550202514118 GT 1 -12589731159108188831062775692.5860413511651837239817207320540042 0.4335929118995065315551327341644844 0.0765651237891727770493585129603673 1.0796550002800325348207083061498152 GT 1 -193518347526007496545702276322604351202.3967539579711779831569829944566245 0.4030224446256220581210983767384631 0.0532796138091451053862016565320227 1.0547514921287318527194644729800734 GT 1 -11561434672419694923124132.6863494811237113398961039784447460 2.1429497497508947373036694393920539 0.0925865988048654472011846914037004 1.0971571430767436122008851687785696 GT 1 -42862451625252964856.2159193734296824242971041959876340 2.6005101274500333991284222349929140 0.0621388814494468162686533208424299 1.0641534021848058379836869454300737 GT 1 -21228.4159797722935240139307544392639833 0.6227542420964813875411127248294976 0.0229036325643506060899380918221321 1.0231699957384233369592600639676045 GT 1 -96835849092358350550969399403675.9726005161959651394614077685378098 2.7449002061841396109030486501443510 0.0137783211070334850705164709094889 1.0138741231857286288701669259948842 GT 1 -438572710292800.0687706789869589259137783368870838 0.7746353376272036173881744083881009 0.0170371967755478389485991055885889 1.0171839996074319826311887438913108 GT 1 -180250365048494451048.7928856104099191487086110841927635 0.7599609557218446146508763370022910 0.0388763918215134749191280053247895 1.0396522537479050536616214658060205 GT 1 -831216908683.7222200252495322461716727661299652 0.6795809508461222121737712551493162 0.0389176086957187962763373849504727 1.0396951387188423298987408404400239 GT 1 -306713014972808939.8774654129177575106785721014446766 0.0856204546984743339363076185150264 0.0856490100937755203050304164336305 1.0895407660282708081090268019860319 GT 1 -889378827614118944616068450.1583663120891890177462395748083383 0.6916657267309837845209475680122998 0.0558382829440615916005456758918539 1.0574578170679815586713655713833677 GT 1 -713548863430346500841430910768897071.5938975232682280289243733526677717 1.5988244631012179397782552916113303 0.0481455328499766949830100243135832 1.0493431265174109297252453910005495 GT 1 -9290.6021181693334814081381964549684746 0.3067607785360206546869549877587403 0.0577792080240733367347903273709548 1.0595156454836376001970639815782090 GT 1 -80528956536240.0546497388073841757487239298529720 2.6675754362105937383546532653681514 0.0665809942317980191617006025971296 1.0712747634798239565540481618907587 GT 2 -93217503923879755153345.7200549717221838164455117579263568 0.8647992465290893152898614286316092 0.0578055893371481483482785578384085 1.0595436449532232763558245864839422 GT 1 -223483029546253214365295835626066539172.1987271298349673236180749118436803 3.4897665797487641355501936629197049 0.0914174921799278067053189349992503 1.0958695776360415769155368111807924 LT 1 -223031598.6506535278171118833321093446276262 1.7186594758544251763639888707850789 0.0345123243579374965260793858326410 1.0351219419365578603066828263476451 GT 1 -3283808591642152027449878838478655151795.1152749148779527410160958003320918 0.3663749465249847729541026964016544 0.0211821814655667409441134969859176 1.0214097431101399204255769417363669 GT 1 -47318908327491559407058.2886752772732386711324654527736286 0.1368869730347717327906201898282889 0.0997533604035643433682260661520619 1.1050865092049837302162105260766250 GT 1 -145333444297175974950856961564032252525298.7823421912659219292906202120147158 4.2921799745788398732061059544874445 0.0069222851042094773765996409657859 1.0069463552643974530411624828829856 GT 1 -5218369958948398865685970683467626691.7358508421112582849200850903357011 0.7126855411622523002924376791547990 0.0656386152778387077154780680594354 1.0678919940440623060339270036018125 GT 1 -4976002674586930.8894412989117922015028511737402630 0.1388611925269628608662125721012449 0.0665725418287410787978273449957790 1.0688920285311386829538313843027311 GT 1 -14009295234102528100833007302211160704231315.6615574776449527034410588332802941 0.2980861763988716467641928808907292 0.0928598880356483850696930278588268 1.0974583623363216363680125603809307 GT 1 -19924134904263292895572228798205624885.6111624901537734915522602792908421 0.5677789724313924329967461714519198 0.0797074730179477034531436750686664 1.0830636953679996072648619068575411 GT 1 -90604428556363.6732103029941224958846154920947669 5.5932091838542534540700614026483541 0.0515381436995916361452158785938677 1.0529137051754203502628691859061663 LT 1 -52.0257546337494951132669347750762314 2.1712008984744286862737130124549315 0.0342408912067672990032464537700102 1.0348408456466946849549130172818004 GT 1 -18453023385080423777019660335786089030.5963374587739963715629129818935505 4.5140346277204038684297672067351924 0.0365045048369043336939340287872277 1.0371874666310221792115573661296783 LT 1 -773035114622879.8770208818959670915703938326801031 0.4608082754404411980716031349000026 0.0865795321212907170282189467320869 1.0905589700317793140020456877150473 GT 1 -5607321994048996778.3188499876876556583112447322578589 3.5796369344001219569250185571968578 0.0296531937715400785033253168364063 1.0301017391898246675787250726508008 LT 1 -80555176346509811524867346181921.6642650937097804902662113412553232 0.7874784198331491224291864344048862 0.0917381581381464070103790638106647 1.0962225698575320028241109818765586 GT 1 -7996003019221200364084191422039579973.4469132799311627749352540124680520 1.4980497043635675702371944506039963 0.0202535842910032414784749802897398 1.0204615002821457332075022499919620 GT 1 -271721.4174379134963400012547200125100487 0.1756129947247410463029769368032574 0.0624589141330315666221690219929963 1.0644946971730888019780490834260762 GT 1 -85.9540346515917957324519697890929999 2.9784506928053938980793191086252734 0.0718221048022593951606965851283469 1.0745318671561790067628133383786923 LT 1 -145922164315774354009906547334382.7396162553349868713117868737663582 0.7582707116272895710175141182984653 0.0379138918977115686134057583291743 1.0386513228603251230289460165579387 GT 1 -47003414081807.2586886222354547786865216411752765 0.4488209069173156737036395737729307 0.0515498207414927610431959207772562 1.0529260168078865671933068571903921 GT 1 -25763246660038030874416944436469675006500805.5254338123854694563412751208812605 1.1410126456088871747780299810245317 0.0740239168625323854874278250655941 1.0769068728147933099743639523873815 GT 1 -2246352657554721948495.6097754168283065945968093371228273 0.0925883496596881157226330327828424 0.0185737034850412645770495352998422 1.0187483607852103475558529493779937 GT 1 -1527393966346438633963555988439727822.6131150344166256424244419673749905 2.6943110295825791465247526685614356 0.0646819247214633354818117330655116 1.0691043262561391359791527145169569 GT 2 -655039208705677663164362322392926.8031922136517102372767397259551138 2.4586209468839848820996513278585253 0.0093596423986956326994959964990237 1.0094037190952811676799765985299394 GT 1 -11504750703460945502919679710813.8490860754454663119772674180170454 1.4895639183620334519044351643345461 0.0980871686981676645175608618431249 1.1032374029443497878870401193788867 GT 1 -625.5806214978824556946681433287485453 0.0821095483610940437679222013559698 0.0964537544763908434323583748008153 1.1014279853968774999030621803088302 GT 1 -5.0372260785292992781944946363600109 0.5804690398585228989335315458209090 0.0806794747489354886212456749278251 1.0841204413182000564974613680535816 GT 1 -353029572473978384.7871591227080253258429347493901423 0.2566320299428742097084880361186333 0.0238939458228991337354612375354073 1.0241840364056375894068105424201642 GT 1 -41676832223922393.2939761522031722030144447463382023 0.0001456436407587288610881339747872 0.0223409251313341985602454491063801 1.0225942639242212240167358185255410 GT 1 -156989549009089367042.4213148771819529825161267569295040 0.4954907700762224395523457702586717 0.0467200246164348298990777105971706 1.0478466352800996957276801855233540 GT 1 -279315232643699942728.9415646707194803697560929780497025 2.0657942317565502184286820661940551 0.0755205569993251962918749891439165 1.0785244642045835522656789463667490 GT 1 -4533151054154492103746787853206434495827.4885775826430226397525689047243244 0.8422195229064863144672191239234703 0.0437327690627065048759684972098195 1.0447178747229069504086295390095377 GT 1 -472108357579.2388495258143905761300486532965799 0.4487019734355406388275858295175080 0.0671215766224641065786126254636446 1.0694803938307281058871625746374129 GT 1 -98930.3022412142911598015453711676861637 1.9136530967214652094696626467872247 0.0386465184524618280352595916429956 1.0394131108510917223331682605636723 GT 1 -7518984171724699915923276106858.4847150213362111772950540388093603 0.9494624946325598072610865960932710 0.0415281647110549276291816405513124 1.0424151010815824974012422726183473 GT 1 -7471818.5289275704646082277482888446239108 1.1688052815272989017497459470977042 0.0739700402676355184753075974174012 1.0768486909366947059558929331352636 GT 1 -11885333312019489928056823429458675938.8447745896706014125131304009231669 1.3127700109873243967606496684935277 0.0528088015010432796003278309399471 1.0542543070208247204950413309349090 GT 1 -7043728747280983850075664222764226.7998994007025789792588388636529117 1.3461920683278150942115470603103823 0.0716468029606120750901636322871092 1.0743430183478812951946607173753076 GT 1 -1177548864239149906302.3559163593399617764209132424158761 0.2114853611508167804122211236214711 0.0987933342157963000742293495586970 1.1040206738865955410405493572683677 GT 1 -79.6261952160658441013020079688221530 1.3407283225605616896075769625675009 0.0750819059543742758978085944632583 1.0780500923679288433271964504235975 GT 1 -1076748823962469.0265581141534976421961983613847391 0.7680497056216507445193148822882010 0.0171418078453886676030200219120257 1.0172904295114623887870058285840291 GT 1 -476017504419362443915960753320380495156.2448256005363960474601207805409558 0.7246095328304318811763660268925021 0.0391474371971817753100264063003958 1.0399343023825941610482221732529534 GT 1 -208139702342440169209562216.4936080675075441396609905152193752 3.0612579815638815537336754230702790 0.0456797510913910959999887548115867 1.0478490336997374902410656888443719 GT 2 -12.8346865931835319622046490762078074 0.7276540313367925305865583141867801 0.0391381479489552300473397472329383 1.0399246347148545463506911474583806 GT 1 -2597021480.7021034294001406409475536940192713 0.6991987247286204433177309115706605 0.0764718418466014629364284671918317 1.0795539891163925010437200965352583 GT 1 -746440489905732754.5355708393929617467980651253505387 1.7005196539759854167975952043794304 0.0906814742390707418568481627147789 1.0950598328067274681743500122081349 GT 1 -284738485043834932629390126030617748.4608221936500456860051440876529639 0.5048653141249628459707805014688485 0.0842335578800427433827618804611844 1.0879939226714508871249078545360509 GT 1 -2326472198.7020252513207420142600706469371782 1.1828942166443985145083732960530558 0.0332943423642133704778013664631847 1.0338612170038386480210706383763353 GT 1 -17.2237787993330604027694278403867567 0.6424828931871136885514610379562588 0.0933114895440323659815012326761638 1.0979563162357511179017439930747029 GT 1 -11687379516562988753272611404914087073.7183029333037004958076429691446278 0.7519865316388432944920909723998490 0.0099968339681647523051294059612484 1.0100471378466602748613767943532567 GT 1 -19046.7430429743416391690692682875787481 0.0984323227401492627773946653946053 0.0390817918690817790770619388929329 1.0398659848401292675131959121145414 GT 1 -2907017609189211269156957852714089745.8923336032346244609302483488222325 0.2346090762072578655955691761590633 0.0453387989774185004911169554010996 1.0463987647719428499788331264321891 GT 1 -91904219772993271709536422633.8907384096041450937049832413360174 1.0797082537932903747855181495680210 0.0270631329499435988449688670272037 1.0274360837418852259009991404051844 GT 1 -1282933678747866980086371720580383.3680248971873512646088084853079215 0.6591885225879723078594098653340271 0.0311344625576614046402209462153606 1.0316294409694126014114736586089055 GT 1 -39419948365825465888546815998403958215839.6005934845194929826091723872901829 1.5247679664082150087102326872712517 0.0660544323321883546333635533474164 1.0683371211798185532290602024709292 GT 1 -44519892833583778376772600022362748876644.7841339155395525005323611699635407 1.0913902610326036666326000025119869 0.0487220097579906032218724021821390 1.0499489455432030425366261933983985 GT 1 -207708.1801649986442562639963454231504092 0.4583742955151913881369827501345629 0.0661620141187347113262810461558450 1.0684523184535721484114462384066890 GT 1 -1253788550256617452262014632475904032047.2632506717778782900781582457151058 1.5424669863613985785552187209592853 0.0047752958005974059764134708517932 1.0047867339538266009715263430640386 GT 1 -4118523152.6756416312243691523583376817756488 0.0796613531278149362665754253059885 0.0396071967323930322275725945679106 1.0404129081370770375193351244804804 GT 1 -1942871231384724691339.9188973870381181717034564182659894 1.9372493026550609727691826873959726 0.0234266971409247681263191876395549 1.0237054645508078880053184341210889 GT 1 -97870267788680188.2318867995329112627780469353821221 0.1865410529187470627374062361648200 0.0744220992333973674492802096492486 1.0773369789639683459840397024127942 GT 1 -286952369.7478815146525002300019626478491676 2.0004138789927968324283655889515730 0.0016577646222093638752830802813798 1.0016591402344851415178225653233777 GT 1 -39917113563641524.8253833687408357248581499972791685 0.6708862354431918671295932523290673 0.0812266956157350096991409419269964 1.0847158634605780211469220014927463 GT 1 -499099.4228516683659819812388695682519001 0.4124429449428192568792216491621194 0.0467299681599438247773023417801676 1.0478570662087104434104335146183242 GT 1 -525.6027070043036774233710459554828998 0.8255016836454009509292409239197389 0.0576031007612902143234745101772736 1.0593287563717326768825155698749980 GT 1 -124099443589912625943286684907418376927418.2949511675495897568902455404668819 0.2059240437260301736735340507301555 0.0945034503199827809051919214478854 1.0992718120690017818488206223051360 GT 1 -320363390212198732285.7843374874180505326504750882706517 0.6013698346200057779137382276520952 0.0344088754803062155105143033479877 1.0350148009149469609150195863055476 GT 1 -53827.6994717696137865681923020295446428 0.7764161324099013729325741572779082 0.0832556714024853915121065654831559 1.0869266584719651537382865782745246 GT 1 -351708368937405468.6797170042552565778942298916937349 0.1888284773494924383958404866489414 0.0030406048751990997109707589701544 1.0030452369060360049305489262873869 GT 1 -674986937915.7107656632399559071391095717450543 0.6858244963320244728044614524602637 0.0968686135287917297642295234592362 1.1018872361811298775493217991539445 GT 1 -8895229726068689931038.6480436079957905800562803358698198 2.3313621285793391056922382514520178 0.0630915573236401267839273747943762 1.0651697147769206038013299146374888 GT 1 -18855748601624686388481224565632776389067190.8045043259957482155075138070946801 0.4425851951652873778052534555394719 0.0870761397798486572661589476283380 1.0911027970233894930516387287306254 GT 1 -60662420517000353387961802681331.0852848889961309721076193145093074 0.0291405416938540262052727262204113 0.0569041872495698655990686483191383 1.0585873973208201701999166363832096 GT 1 -21208901486159.5374128856855510859499610680705828 0.7413763351754567806990963848744750 0.0020680848131618693564119381700146 1.0020702262535219984557144386723944 GT 1 -8678889082969020380.5550628727348581023318006514240512 0.7713839225844213548288435294069368 0.0081027314389576306263860233623142 1.0081357369782669053556605048352616 GT 1 -7598070.4880354535551335211164909080142799 0.0979996167632467493122452963173993 0.0924207546708029303057493658082249 1.0969743939787330326111452121520900 GT 1 -1383310484573670927774397766100359.1766778886884712637985937896564619 0.5952177322131872973382180768107123 0.0562146007265149697939202160685090 1.0578564699583960448709463882778440 GT 1 -5730939379506334.3517868786033910253229984547493188 0.2373436489861830716555437639958955 0.0431095302619059255690348968824336 1.0440663457636088075590026751002076 GT 1 -6519978421050.3345319998794899657858759777262217 0.3355945064398985309668889285692299 0.0662458648753170597445047999358462 1.0685421140311991583232354855706668 GT 1 -726343026675318528274982479749248273387964.9635449972483565468730398910595605 0.3037385673435064509764492423700625 0.0819779733830333886125661165140434 1.0855338945133720616501451471316858 GT 1 -125774538.7797837624107962289125797649876367 0.5519405947106266921620948116996858 0.0420055574391990085249842570452308 1.0429133021128617463341309193350822 GT 1 -11233083755200397396969235.8031994304443577814541415229241625 0.0228096111648160973905097167560111 0.0725489631626585461933898793931421 1.0753152763658819015664304519816750 GT 1 -126705145240034692.3356597010960079969328853082310779 1.2551552033041692904537489900600813 0.0179536790020136095510552480213155 1.0181168016810941383654310276010547 GT 1 -590191552705075864844692359989.7440147961494122854090097196671497 0.6787664269097030653391296172794886 0.0596134137193641301000767033201858 1.0614642262624483014546223742956268 GT 1 -3626325423067389540111971195547450873980.6071833053731432117223872938153489 0.3208928037940199529299293077720253 0.0585772222551454572483419411304567 1.0603629547003529494970384083276709 GT 1 -2211.6960580718467042756247212104959417 1.2586173768927107895321038346245634 0.0389738842857112121563930166286401 1.0397536948199188359592963485702208 GT 1 -1317900501169.5601500108933687173651279857839925 0.3783455937585829165657021583240562 0.0527719680883402159986215093306580 1.0542154207889744226344678874329140 GT 1 -20955593189005564.3634702435999152245960462303159689 1.5567589515988426840145309942508571 0.0066234205893001071355628078765917 1.0066454527789781247232588865717630 GT 1 -6021445395465374186173890465341836.7165251122718197890367907703245385 0.6897922453104860762531920366990073 0.0295161895933717004404103487866863 1.0299605582158420193313369958368935 GT 1 -5011157810366875463812128.4332970964291749138346613118165254 0.3353053280581649046572193345712865 0.0252858344359433497122379145972422 1.0256110144891607306720034842374956 GT 1 -12614706519552003027110281076282924149747.2369840307010440454678642635298577 0.0339706557406990558698497845323360 0.0446149776897128546497552360762816 1.0456408550276527976804545805853340 GT 1 -52623601326803821059437850062993166016785.6952570441145655420571811646590049 0.6770686711828584510669388482875899 0.0439884253144625895699748322003340 1.0449852585923798721769226823911644 GT 1 -593195919149932566385438695609141252.6533286978092982743786200425377789 1.6328410905259629385612805493106240 0.0619237347888950016103672488551805 1.0639240270858740274179694699111955 GT 1 -135838256565707457.6465646398193112834131932591063863 2.6401704523651562927741641121478019 0.0837474859106657684515434446852173 1.0912881947348214239720501914540033 LT 2 -107041419938941626325232885655.2149886125767246086397649007349627 0.7642072497595839597110756153563303 0.0629132531598431809074308303665963 1.0649794216904362119911507772683362 GT 1 -125011470545825577730283.4119284261545223959215828479854130 1.4242233734741808000122902111152554 0.0773977217292226003574917183814839 1.0805570384589323798454209562470429 GT 1 -64.5484115153788098914097859006694677 2.2529966275114139584574958374891592 0.0224352783554078054412685492455676 1.0226907779133769491760243374254489 GT 1 -7646373387224845718210223799419620745712.1211549462172021776552129547462899 1.1822506583866792557893110056407748 0.0841795824418099610158671309401453 1.0879349842291234598193304077131395 GT 1 -655871.3958052253392218255418625896205961 0.1981932677028717563533984130657238 0.0093089119660406385815697764971620 1.0093525106689698247333468623753620 GT 1 -571918816.3160752541050511734822027959602602 0.1990890528674423738375350892289135 0.0084762238776669906901018352413519 1.0085123513578764685789419844544581 GT 1 -25091336926310569650.4032331034789589666627164193334533 0.3731296271913228742347843097751892 0.0290353119748518434691476605234939 1.0294651779585317668972381240652921 GT 1 -20182609078219899269613251838.9535578820398155862866233777083271 1.5121125643675384726423321324041169 0.0883695531906512263453527967559411 1.0925205828601592964538682563379823 GT 1 -2235375507131437.9441233324152730866198516160771717 1.3890651037649166285097230646829918 0.0594435016686380367737276761745420 1.0612835593910492542969942278939238 GT 1 -633340006990098010890077871548.0816131442429446255204946182935059 1.1573862230300796036533491877693194 0.0147481431158496615966583089961895 1.0148579782255720463098172392612839 GT 1 -3822211759114177.5762037138067911507708291758656510 0.1022480703440609485802518427901101 0.0618996651996895384692414073496660 1.0638983689583751158674755416819745 GT 1 -2381.3542609512364497219080673916687263 0.2084309382898666793854986237446603 0.0754393478558236593702495466160632 1.0784366249589479504191301451055917 GT 1 -15607333488855878439359299854679269.4792616089109128598541910237337900 2.1044492788639200408677120446445125 0.0449618130917670406153356598390604 1.0460039530094938285672854139283642 GT 1 -2711021911894648.1842935086064732841287614431083846 0.0719398902806971197617730375279368 0.0850988217643909100763483599450713 1.0889392214675400322378273327693692 GT 1 -1430981567934766740373231.7953974884893569964479599903691501 0.5452433657443313038770128801643385 0.0848648939707819971254912339401406 1.0886835677442839475869627473651957 GT 1 -2314824080033493406725851312183081615607973.8914518092983756133112532670439517 1.1813163940723150650936969322512270 0.0197609758478469972308783601285723 1.0199588348607500244954034758795243 GT 1 -2819723609732253332.3423305413551579019921653495387476 1.1924473977195669896005455613685275 0.0448504974195686760771871767056120 1.0458874035490016297520104952230843 GT 1 -1292559171.4256637205025289664661960816007823 0.4233528451607390988978638691785315 0.0767196086719801660456166882148647 1.0798223080246353443052062505713346 GT 1 -111741005202173919136749637487478473671472.6827015361542934721904783338103035 1.8814414780432686207663527480526709 0.0993008206532892082526303499677419 1.1045839513211876254247542842181528 GT 1 -13992518967173697114731724.5367900615228159980047524154235148 0.1751879183358859158789629150169769 0.0854571484010779114061718183288920 1.0893309542950282288248049777304461 GT 1 -4064.7896104257979779835385267876693034 0.0606745465119144426638555318313834 0.0265377680535079020012313397167619 1.0268962510739960956564659453112431 GT 1 -1335658081430155.6300677093852278315901443994153042 0.4199691751842143933578162273493240 0.0161023558805789928024261657852431 1.0162334075442006743889543176953219 GT 1 -5201547609884299715669974055691587.0343282875009782503818419643497473 1.0528503165939392817680195320952092 0.0796053411468203356812678510477547 1.0829527239090595763478404040363793 GT 1 -1238962775784589552459729769942762771495613.8119778568202868314665973107049794 0.5468286878309503178121765933794719 0.0335095079848096273864767123636296 1.0340838179246232037053317090859872 GT 1 -5684823282872835838680604744792900118557.1417599289962497023595823737819815 0.2339068800783395092424869845808133 0.0969385554512528249245131427614177 1.1019646829756192105176936732249824 GT 1 -31.2718654293277136924972917843401791 1.5243634965312516866838186566690432 0.0243084502304663219877954439842458 1.0246087775908512584105992883777887 GT 1 -3997982665437595902.7651277367838691602725685548778429 0.1843566466254501662955607860326420 0.0871288268011348056357359712472025 1.0911605110825652487919478048142150 GT 1 -6705174.0504956224843091792515601758013191 0.9551172094371871895143496415806636 0.0456252754931652794536957877438617 1.0466988916727163122611601627292838 GT 1 -55468752992096555.9246649067094409126753242354068738 0.0130299991467381243550435802659711 0.0325011785656936876368332356592359 1.0330410722346978824277242410461174 GT 1 -497.2388564893925804225831584392125761 3.0533400107112897884748636904073593 0.0786020323723378764847995091661211 1.0818632322265537066982113186975090 LT 1 -1808842563996715965819.6427023621837693639857158592886497 0.7079505684713760320766127948314491 0.0460532402286709874154953936845815 1.0471474164587192542379675828334204 GT 1 -2338805819.4784300630096119748717196292670775 0.1149720638697321681831767694837581 0.0508546764553501536885777947856970 1.0521933587506650515751392133023397 GT 1 -21480931131226061266256131534737102583361.8842586254571597066263301316489335 1.2388952551795002681903221255507878 0.0130086133845794568039614622931281 1.0130939664201483376694077799518280 GT 1 -15997933818319618429206640634464.3104802935957444803486667050809084 0.0645260792566300664851639785446975 0.0827043621201173851879050552599707 1.0863254618687829354856063791389183 GT 1 -1705.3792760329284162743494423406226550 1.6348922278143023800789468476463404 0.0966620530523861283045804614175193 1.1016585464674607075657125027944379 GT 1 -89550482612.3787035872880656022035577037948434 0.6621517271148984355492377149647647 0.0875530033811201392179512734821194 1.0916252811096594955289822812335316 GT 1 -9451103623071830634981497941741761312464555.7115907059266667403870873886778562 0.2628135191094957417810967181659742 0.0080830714321983610713029303842464 1.0081159165668711537586552048277065 GT 1 -34652648818688337190967649927210126363.8001581604033626932810148928758759 2.0166233287181408051958293812371028 0.0704635685320561505244343604014543 1.0730692778948692349469099402941911 GT 1 -121462431711194470056904161.0106548164604364384959561881936458 0.4433604036506184629792218247641215 0.0131937986011218173239217953920033 1.0132816099943529536183118630265264 GT 1 -317782312011734428075868031965134.2184335422996950120353305004238360 0.1553497565216121331662202879069641 0.0479610248478938058914794953799059 1.0491493047429765333193283346130839 GT 1 -29.9530441868924167123415361207084199 0.1735085242876003745250179375093368 0.0273525574774273154628092776839750 1.0277336031330466678828620928108618 GT 1 -7613704816966933609720283189.6049693160374164828556301015687368 1.2515205278705220530234696766124146 0.0341230801714190134283392420886261 1.0347188650729750904039525001880954 GT 1 -343515461755548447253877851.5251566631104888578455999628248531 0.4711865964938668760661524377266089 0.0714365276176294903910205089406972 1.0741165403940301342720083798419770 GT 1 -6082.7598069632711501875059602982554918 0.4548305741195819779935395748095137 0.0143782521342462816584507368650745 1.0144826208357781496181404671429316 GT 1 -45875085622015557907340761647666290704401.6392401305987526225220957242803491 1.2779473734862129573476351309228187 0.0772060453302206349942068972446312 1.0803493037770577636773292887956914 GT 1 -11.5330890909984861651352666478780151 3.2149607365325145095062819329634849 0.0355433072528982304311396746247889 1.0361903488916173253484796604109334 GT 1 -5154667421154832165366.5426586073071669430176846166414843 2.9842430427236325480072625846564462 0.0506221555256811685454138831766588 1.0533210930912564906042013944212934 LT 3 -143679261919236684.7145247272775881497885959335714847 0.2727132017447432996884406805828827 0.0214939624280059536280956215659804 1.0217283219330602818562844055912494 GT 1 -789826978013410717380236.4338201281546634572749527943538997 1.8027554087452896993908061423997204 0.0855575614493088527147600629207386 1.0894407562151121381970310485842557 GT 1 -2038335234046046161245132507325213483.2645262216312178061092105950533277 2.7453572792770838685317837910159164 0.0890205261139109863106574897814583 1.0932349133853572132157386056863861 LT 1 -1390146777707763883293630052236.3033117084158187918039383508284919 0.2608211340474812209915358744447948 0.0681094905840620704412546220650749 1.0705399503652123384041553156522457 GT 1 -289810417584938689742.0937323626172465201673647124419907 1.9042951991234287528173138520864675 0.0410004515844639666395936902832407 1.0418646749898044522817082337891024 GT 1 -4619629772899928378595.6925726838928270266545811538402650 2.4079500089855892448557049160491580 0.0585482793924381774699656727680445 1.0603322114269856746787932076062352 GT 1 -254774228345.6227910072237298910570694778774608 1.1573086818004390175272983036023758 0.0836237548601321862671978612945454 1.0873282506725733995659472885877795 GT 1 -44147.9819841309919042477088460439177637 1.4844896018839992639398535668763421 0.0398284278386541776231216470279559 1.0406432894875488031187964768318733 GT 1 -1664197438971235686158094487675110065870.3954341138307943516799167836145698 2.7368951817510870221590854892202699 0.0258653401834404316704658499431899 1.0262057304640791146881754356269777 GT 1 -7121598170047.3007825986807994079591214357742948 3.1015576274604453889143226756206519 0.0961366843741938814416673194088381 1.1010771295507372054830930753747163 LT 1 -51.6360661494471036944035761119818233 0.0235543528125970049883277192357746 0.0307422611513638999454165485665425 1.0312247180950228594517771194095151 GT 1 -197834119717754709347686477401.1406857671024113152166831265194402 0.1104691900523673496954311832396111 0.0297973619908702076187975827391328 1.0302503241383025042702030852019208 GT 1 -473486238318.7867676406673351308225104622044757 2.4502716016510023875448071495206065 0.0724936973858677125022299688303655 1.0752556892523329413810248212412704 GT 1 -79828456875.5754561493394090676319804788044570 0.0146486986460352700102373592117053 0.0083861646836254751293004593750862 1.0084215264009153732026784436989866 GT 1 -36280834630933719514181484.6287458217148924470221441096900312 1.4874098165376922896003921341214686 0.0543686671981911003109205190669330 1.0559024975135642525419451124945488 GT 1 -3255829727444167802.7507077858486955292997756026045114 0.2530980029388473006829460312222764 0.0980539218441962116817184507814667 1.1032005410215010504773302328849369 GT 1 -2917020497411911089930302471676866365209.6280576773154209833922385531114114 0.2533410314481122418145155794087546 0.0588997892148091020843340294973300 1.0607056511399564807979086324872467 GT 1 -396422277165.3933511782172701310215493543422235 0.3844551401893304238294132917097052 0.0223974883753322226508986789900147 1.0226521213939373311488259514588413 GT 1 -19037793794947186.5268205038825332212125644002037124 0.4199273927085627616221476862841443 0.0371168202850207721557992847968357 1.0378231832496945007006844244352199 GT 1 -65336275391120347228583131070613898655.4402392201514765338599855182314587 0.2948419532363440924776609709199451 0.0304296257382043285769586429394802 1.0309022187318712964446236042476259 GT 1 -58810373323973397015470098.4391588976849748124926732101132953 1.1109477022656129592155000714906507 0.0638266170030511977184671446415030 1.0659545814144268038078234165223031 GT 1 -3399098847015792721213835915994384555870688.4777013668052757566619663039567402 0.4138529668364287316497136400054782 0.0858953832579976534588932960307557 1.0898102537476525291868425635759306 GT 1 -6961453404648629114127968165744478.9502808552595166190155719547163228 0.1135990474449741980123396811753405 0.0905092317624051687869372941138539 1.0948704314464542172509599079631570 GT 1 -86428257.2453575453034852415494621903771115 0.4672770859101174487105608685060019 0.0550325220515512458277625640733670 1.0566047669499658997653596155831055 GT 1 -5446566938889491684191798.8619775056471978768787827338020615 0.8716252063272749072842885103363025 0.0897637925443548525044900462716046 1.0940511445207733307453175858745478 GT 1 -10.2341026567565225073612553189280893 1.6775607928007122079371240482654398 0.0678550422901282122823289465541627 1.0702669423672404929832041431117735 GT 1 -468623125350123950695.9138217002828367524834490233550233 0.4941527949706689515069077483846916 0.0731157889109719134792024386208466 1.0759266283494043476263312749237024 GT 1 -100897624592010132621439282.6359105471479938888483798762409879 0.7981890143366601986123829033980601 0.0391457526519593226322113291693804 1.0399325492064972091222658720792395 GT 1 -16150762655.6229509902535871503758448646692310 0.4415878547188481552429691566605559 0.0163233618702890067704371955900563 1.0164580557240771035243774071268818 GT 1 -358361317738862342330.5612779432730258010155720793846202 1.7891789359354743628751392576383001 0.0567281067124359039885813677601736 1.0584007099246335707671901290397243 GT 1 -285015594087680267223549533278576207.5656216753967160466391921228069787 1.6592863237430679708004428235397371 0.0679688965187968340671799114490406 1.0703890920194975238421050533267868 GT 1 -64298203207137726041025375717738291362.4006948499813196411997865232007049 3.0686228829434356660878006746112336 0.0695831562364474409339206525433470 1.0721225741544166433056826041754339 LT 1 -409960033700123447754675.6541194577140916556358058607533909 0.7691903964664227713998682584544428 0.0503634575054511805921362604347691 1.0516759544404140667964458503897195 GT 1 -1147996789526011263680345964753977476.8308906454122293079821130887744568 1.5632326892010569370064956992153060 0.0208049840974869661369594489520537 1.0210244572058681653322263429930669 GT 1 -61960120960297103717.9258626148706899085814725205987403 0.6656776898213891030184402368104884 0.0490948835720030056452250966170721 1.0503409938349588362845895570089206 GT 1 -9079784006704927025.2792686664167086735679022121107334 2.1707867291273750161384205020205413 0.0972294395490706489933679887205212 1.1022868437298071083681143202576899 GT 1 -15981604807733153.7806336196709339350112298028994206 0.4472776772106980800375172308691266 0.0863706942464248086655829534176486 1.0903303633689622057375321689171087 GT 1 -68992165984509139630598909908384638569.1697297072700545239971878099436656 0.0606673394180062851888119445723543 0.0244249160993947674461148023800372 1.0247281522237764275102726987616624 GT 1 -103.6042176101386231117174405898909105 4.0998520039272984140587718907149485 0.0510708610353712503913600672191682 1.0524211523227571753949542390021719 LT 1 -19658945318770757728928.1885027917943647184375910828084472 1.7848795243783149637343095795248341 0.0376945472453379573213504870685471 1.0384233602587578782613764384980430 GT 1 -20107976702274532090229451.6510096345106442328784464938802272 0.3416980112392029731296872864013130 0.0950106643440287724473413076606867 1.0998321191571971673809293821449262 GT 1 -26358174429160274678.2428841038609943367746072908456705 0.6359775250159357367209712193143760 0.0221242321768376690379195366127751 1.0223726437815852964823180821020389 GT 1 -6.0790162251552250597066154679515416 0.2744917181233309446766682967763556 0.0422996120811404402799971291655129 1.0432202974020616068064144299780350 GT 1 -37370044095910006992417016262520791.6066602140288850597078143512952007 0.1149878652855009546645126347464593 0.0750402215628666536989449697747050 1.0780050251857815894856941503560622 GT 1 -331644525461898998393331961581.0696297255557909348368030523390834 1.5500562340599034236653820338086187 0.0831862917757811115044076751522458 1.0868509808818980798060980337689473 GT 1 -376036.7472594448472730470569451197486055 0.4603078209355688188483540181498888 0.0086164342315175402821435051865928 1.0086537703249881915445170953640951 GT 1 -3178262453375480489978443086054.1944865579270896608726363649429032 1.0781132327909558678203147067035003 0.0126534854255561020268797398450725 1.0127342225661309908089299086953113 GT 1 -399521628385946747324287200502891.1862057519012317665865555765468232 0.3965332960198228575796605158871554 0.0339650234380783066109896904102474 1.0345552378040621940269888389303138 GT 1 -68604292477.7284196890908767487881329945330062 1.8592815983279054964048219659668176 0.0115983165920130095612908442104499 1.0116661017044349468621030394259275 GT 1 -7633336.8508160711752247827822129093157500 0.3506471840710668070865730969159036 0.0797813274171673948424176591060289 1.0831439495922355598125351021511342 GT 1 -2082948005810720656894930458430121809.4666100450477209551242289772011240 0.7747511836235230112138622674412592 0.0631134622217239707836423400670579 1.0651930950274958583930475037197430 GT 1 -2281708.3387701555121669473846028637128419 1.4486356447105836556004761099903090 0.0899199624154471288604364514718755 1.0942227299492953782445664023983109 GT 1 -154137549991296047020906503.4440672800137926445760645079690765 0.7795671233551095009028191103184196 0.0763125489507343916268840182163295 1.0793815210022553761366857982717439 GT 1 -352093016719890.0223226463272532753193086062820904 1.0897819014651711538575211207709783 0.0534138316353443034365311361784516 1.0548932735281582599818753798461060 GT 1 -6803251127433063189369.1446824953493701694275567867765889 0.2015120574064120561530227988540021 0.0223826428126779526823569167981067 1.0226369358254073063822691435059325 GT 1 -128469673848270.1777372963842097871968578116915058 2.2743659315664479564545386230152624 0.0988113200857848478864467626041301 1.1094528581426297342927149887570104 GT 2 -30337467167191976.2316842585444381390637253741311453 1.0839131144170125440462778639789791 0.0627897047936894846764957048140201 1.0648475873402120435224159675713835 GT 1 -1574158782055669600859445334949700103885887.8767474579242244792014884839343954 0.4397360155728595008260752210003762 0.0918258569041277385647170075248840 1.0963191312192047790059448057520092 GT 1 -21850803635.5136727055623453738893739275378820 0.6572798214901356598638930162098422 0.0876175079584933089844763697941386 1.0916959776627356834457904239006093 GT 1 -527975157353380082814740613955947434513.3711620909892189131479624620823599 0.6712274069526801856694758159908962 0.0200679174614757090607071917026586 1.0202720132512382611486665393940168 GT 1 -1351194293334624694719303328025.3221550350396229266360524483963865 0.5103562746288117776149016950280061 0.0801085753771437571494934671117310 1.0834996326178581350594935568676451 GT 1 -2071595373781213559.8639176844363865515101846022396905 1.3693864821197037518810157552033791 0.0864599144213639839241155520405326 1.0904280228146964999396504934151148 GT 1 -493280616270015.6513982816085881737580459637741807 0.2969483402940656783452675596377494 0.0667142942996328759845163610379354 1.0690439023957556397088165527734119 GT 1 -12793443.7481733924193137676912510933414431 0.0150015946393367688307585904210425 0.0666889371004069249419675186700224 1.0690167329506413314479297786129724 GT 1 -322213551836649557717649409021533619760198.3037751893102868638407697559263753 0.7615232584730045170037862758218342 0.0760376610380877576214190497917962 1.0790839668703404201117312740069945 GT 1 -153865718696143.8955411632990902474578313463629161 0.1705536433794281760424123755262426 0.0481707395167733356834995480196850 1.0493696085074938642857080265786317 GT 1 -194739135.6288896451306228787277850965764349 0.4333494835505076631538409603625686 0.0426016282947742430070366489749213 1.0435357027717531559372183763892913 GT 1 -1886988735257265849940590464917.8726355328083320511154902352092055 0.2531915689028391753672503015783439 0.0879508952754845194824421995267396 1.0920614474575945303790472212077120 GT 1 -28418966395.9328217366939192842900298527509766 0.7833102907554635935541759375071967 0.0763222833125754152062483842720128 1.0793920596461695512441338265845136 GT 1 -10052882175885849254312794447126359.1826070963270669008964997122244319 0.1704596454724225714261688136557485 0.0180815689700446963118133588888818 1.0182470382019683530516667620425604 GT 1 -106002726865627.6905062075694726557789852726189780 0.2404999228126122544277843364899507 0.0383335030665381532707503003262576 1.0390875652070621960820641933305177 GT 1 -30542889700474942736.9262921115332892732402214594885513 1.4520466510515352713591523235235066 0.0578479866873368250005046759170175 1.0595886444816076409510187894147161 GT 1 -8197470.5907850258120492810132247517897175 0.2185827259015792795018792670807106 0.0316227745503106769651515990773994 1.0321335719047242415501666329805282 GT 1 -56237294181907103187949699398889424.0741092839148210492278131623623245 2.3944020139939717345673533098597463 0.0367185775848027610470130184405526 1.0374096747619440868138029932140677 GT 1 -1120896.2007523313894814245336760833994347 0.0584047367133875532175336975555508 0.0914552468571606535428529131869892 1.0959111318827356395685729946637713 GT 1 -903680789141020339188035141.6825755558757711929640330433939092 0.4733830552742964690277358450358997 0.0977627090005884641219265942907982 1.1028777214554686854511494760573318 GT 1 -1583895946334.0016438694054635284848057273805468 0.5097846153482517175472471702726432 0.0777722709844813258991713796671605 1.0809630913298480612926338025903383 GT 1 -17.2660493760940488598160076176674056 0.6633599051013552050951961480195057 0.0128212760839650225231005896269740 1.0129041780121713566589839577945060 GT 1 -84197263639.1852945043215168887336807262176659 1.5554690932631124574664597897625061 0.0936655874778251923646380072402175 1.0983469322989099369626406423927962 GT 1 -118877504.0537337349524640267277892696129667 0.5448910914910414366582937471933323 0.0352865402755979680601064225292243 1.0359241546645425307342622563159668 GT 1 -341436029588595724700.4746181812818764405154154614429628 0.1719048503303288207587604781794237 0.0874092508002886893974855774379463 1.0914677472926651921208167176475816 GT 1 -7310564081.4744729548968923375422399960589915 1.3062152737652176430863328399918655 0.0571324440527459882481780223221831 1.0588294558974384951217159786429299 GT 1 -905204949039705188022876987853034788882.3059958288559939274583691784444446 1.3611022663138281976732231603714897 0.0311504159163622099680583145670394 1.0316459071243431593198546173476782 GT 1 -99919504872.5484644331090598954075117576261255 0.0010031922705011979793145155500141 0.0077497022432373150070876455132400 1.0077798872366060247821384095462271 GT 1 -475503570140206212081.1298693819490141186509771988024473 1.8238301051847488529424507959932117 0.0451617436585470557397262076884942 1.0462133179327766536728143354276064 GT 1 -62753.9630301293028614254604364362776955 3.8122985785299537853952655390786363 0.0302823020716326786109131324991389 1.0307502829065880773726070712667292 LT 1 -4853844394658.6680766747089153462103891032486343 0.2091701714854492296742790273540228 0.0362535828961383626232430920283629 1.0369270717728710894458435077112979 GT 1 -503401398252828953031.6585444262331769607614113270541619 1.4114117207583795725438898888498293 0.0873287615771303305759682178825900 1.0913795525855422226724742355743510 GT 1 -60175.2913081799541224095200341447532435 3.1749354396288968042540595603699781 0.0220130764847493506394904114141726 1.0222589796755105219728343435622255 GT 1 -282852749311277533190147953.0954984283743559466424075035747134 0.3588524315500834255989662750358758 0.0324839095033781214210566173441590 1.0330232232122334590386435193678662 GT 1 -3582331475.9471806133481443681977773523458816 0.2833489905909005417630426402503538 0.0777411498882598425924824497271665 1.0809293463337319476939444143784710 GT 1 -231230958919317900297.0802808132014864693600706544727702 0.8842329653290592228514925799569444 0.0221999991190202247601085778248406 1.0224501279366103059469414627829070 GT 1 -5922322253399974405004893660540972.5987242862228160303998121360969501 0.9889820423262499801108369348516967 0.0877937644686831125309421344340235 1.0918891790215674104724092474337323 GT 1 -49439728517894933435861.0514260300331642383461223134977978 1.1500238902170093884147885615518322 0.0549267696161268157165573987967223 1.0564928620210735482779422912077981 GT 1 -30669533252845641914.9322212807913313283430153334347216 1.3576273964487469460633741303687658 0.0590319106107333576649332195871343 1.0608460513540497126738016581124774 GT 1 -1318119.5910202132634048881004632071724755 0.7711238642745084759096776255438422 0.0381010687357061892526015653630142 1.0388458948915575065730297288060337 GT 1 -6445283466655071134571563113755750019.0142323160644790894701251433617217 1.5544081514204964229992984664403546 0.0133810923675380037291772493644241 1.0134714259302315346615341230976360 GT 1 -120236424754807705995410441274383413729.7117488127876230605392572613539049 0.8518829324742715633540588946415732 0.0971063265378907492502048417248142 1.1021504806019803190841826261876241 GT 1 -5740.4342380676531397456449043497110798 0.1235243071486166401138330045307654 0.0769805274413454998014483667158832 1.0801049476718625626547051700375438 GT 1 -8627605920007117949176194905471990.5008505361172005646632617414052201 0.5244870620507518631609601843784988 0.0654048730840856124970961126096995 1.0676418628146663754171961346521038 GT 1 -97535960648202310281730146317323154.8421873465419001769572397178454232 0.3354418497521879485322640095046304 0.0276941964104670054268234052322775 1.0280849112554771650680314479311197 GT 1 -696595.2410997199301193499934016493979865 0.3482810026294251718250808251655929 0.0205781172222304249542048850454618 1.0207927969190361667427131896765637 GT 1 -105650.2504967213604924067114468519044235 0.6899228051754522779605767824808541 0.0638274260278720725438714118287538 1.0659554455974778725451555238396913 GT 1 -301387330309083255838502827819989152215.6928433629387289547719931121811753 1.1254024198056051399467063972431859 0.0612118338930681613680963715930792 1.0631654204245846562277169624440434 GT 1 -14220075792023.6231322913049940954237718115841348 0.5563725089108047483408226023864772 0.0905070857676898789465343640748736 1.0948680718928903536108666104671294 GT 1 -802103.3946806685237850462981360813136607 0.2666882329689266636333706220118824 0.0139256456997507946061685719225048 1.0140235171818751323392693667163955 GT 1 -20852151178615981180084675455610392403345.3001523229322304617395250986814494 1.4574607199327107372533197454177347 0.0613662598068391423559682525591050 1.0633299289067761564015560285440157 GT 1 -1108979887099785.4369089049432991199643524969021882 1.1538151067739820174875242254237208 0.0451042806104586585330815844950107 1.0461531388200457887317263869358812 GT 1 -1342779971854378725978507056155692322.8992314913905583675168969766321248 0.4307336799663619269625389325156257 0.0247943796859353859363868913799922 1.0251069375892046307865201323979658 GT 1 -3.9144445226018492297618920869666494 0.6434248967069902129629830491483499 0.0020787117615472855631546899199612 1.0020808752815840609599435692037326 GT 1 -4567393644066150002250058070814493974.2254038112585331121102714164009006 0.0702541801580842754967676162697128 0.0400120551030870669169425690902872 1.0408345519981489530890548031932896 GT 1 -2550796550711544068.9454862844973220376601023700727469 0.0678441346223505232431812900028408 0.0772805307646192860710919369590258 1.0804300243326216263676211273656508 GT 1 -193462456305093716833910787602.7615887137553415651600360402677843 0.6770650415744167380725141176297558 0.0461193036397229467968500705401440 1.0472166715801570358988561979763364 GT 1 -213253905661185088994918.1181612002773987710704739746036262 0.7078329783059953904729392688507288 0.0602562236200148561418912753776517 1.0621480191934743921634630067686908 GT 1 -8997210814647796538250072424182.1359495907338932832772626848295890 0.7348052155521633632994587778587178 0.0779495387280308324245455802657734 1.0811553266932861294961541450972173 GT 1 -162396166753464439854209523498986897.7302550191832177240023014968822539 0.0426793922343344999215657880583313 0.0391283629570101709256772934482016 1.0399144512091804514112409383143493 GT 1 -2535329800953242651216176173626809738.4111978640113383512569482950890331 0.3571737281701146307837805086227833 0.0932873793817988783372374269208083 1.0979297251392509997555123778578641 GT 1 -2070552131.6309442647766612089534159922554499 0.6519506316640677431847469519334969 0.0292539935572561864184355342553794 1.0296904242673170769915098644821950 GT 1 -15293335912106406332523980604676581741499.6508195151885960022614788606003121 0.8156365876206176178299538662412013 0.0977731677988713186554515317377164 1.1028893135931548823938267442900542 GT 1 -27310770360.5197265804700969307950894964951349 0.3539714426556527215113390048714787 0.0137312228133196858916802616541210 1.0138263680307390746302854852252758 GT 1 -63061.4746406159949303394944962291196225 1.9350766431328472195860275328921248 0.0717215610732353757772460016112682 1.0744235492525750526716853720032255 GT 1 -166345638267868585682228296519529.6259383245637517776530348188342786 0.5199161332851305767105194609617525 0.0822545828422977244183179621755063 1.0858352501805026865378554121508073 GT 1 -466287139482.1354452481390058640988809780204273 2.1563640543121592082230293179680395 0.0304316308329032771629056891991116 1.0309042867579016606063834326620383 GT 1 -75.3566318980692473412658592614146767 0.1154585624157769444153770960074319 0.0975932208999923840440080052230693 1.1026898859660194351782771314003865 GT 1 -102737768550359046576507535776729049.6661934078791949630577753558035090 0.1038561484304363680225477995486395 0.0781093199240857657567705914551354 1.0813286307026950696975810677370463 GT 1 -18.2447529354852113193340607041452437 1.2536356703751342401166658507760797 0.0399223851475447570065234973914602 1.0407411489837027111889130401427116 GT 1 -16017420029613147110429790667.8168520581641991036880136844493785 0.2442329757303799083266346581907678 0.0378215825088350526311703816334549 1.0385553803454374092299930245178090 GT 1 -1962914.1807583412710352827861415900461603 0.2791174155239340676677219372190813 0.0786432522099772161389701581012786 1.0819079694206049198218204804993359 GT 1 -6021371288502770635.1115564654393398645876536870227624 0.1467076164682460870461470356563176 0.0071163915944287359251558114370394 1.0071418338858186232516794475404184 GT 1 -36198092135647953065179321655535128947507.7533345592151601894667738618470812 7.8307853002705429119660196865668453 0.0206195606779899027476202653571218 1.0208351120166834224847037584290158 LT 1 -11646295695089.4768855194187229452369767595501827 1.4575944697824724015644981142692837 0.0680775757135422926114988151570798 1.0705057035049767466383697645419746 GT 1 -784228689164577977.2350432647277568985925878757547591 0.6642851096752656452145244013123195 0.0764103581156117608864455113404493 1.0794874165014665317161718971929485 GT 1 -7266143322723725303523349222565752170987.3676621834844575508809582774786815 1.2829012272184206816740084662589469 0.0413962099304199075030826233648181 1.0422774385093835192969287194123863 GT 1 -531772333621284872254974672256430823830524.7387600633231627698363468702048125 0.2906496028201893531943872231079266 0.0290012091611460043260276368494999 1.0294300559656822473616081903824029 GT 1 -2214003816206615.3386362868763675839690236911891112 0.4404379851356829200006155787599523 0.0671961530929196302258289894102185 1.0695603393516595630040254146044464 GT 1 -28362914052617880325930544664817353702.3785931498960378588301918675006434 1.1414500861515656227058255210553019 0.0593255259926824350851634930912927 1.0611581354767665797415152186134610 GT 1 -23321327644337640492907599684124.5586446066617212245164237677405044 0.7227721806245141908716231404796475 0.0289624489477212411425178045926427 1.0293901388821613843520301644726359 GT 1 -610512139137527.2759345993953535950594103526461630 1.0354357688943754694698846707186221 0.0696462764516215567566981173133975 1.0721904172472805953479123483854083 GT 1 -1107852155.9241724081534124397778533940203185 2.1723375623177451128539646828095157 0.0942512191283781820039602908359590 1.0989932951955771556813150555897395 GT 1 -351429740726743468909645871258137131709.0865412284897285484237454737523890 0.0642106127408527933534700395397256 0.0044515656648155045912326275196596 1.0044615033864966197468435988779432 GT 1 -2720324000763148380804248.4745333142363803219305435612231413 0.2704083513363053820311746575653316 0.0496661491144972667447111320280771 1.0509419341370537367729134062500640 GT 1 -812629921918358208093.3895596861971214745474600734339407 1.2036273797770255789824996816254252 0.0974472929470525206494272126582375 1.1025281893136820014097316129825857 GT 1 -133131223973814.9942978550322739958447140708019522 0.1544113799933629230042618805036595 0.0004424086661737472305130185942995 1.0004425065577608223812071316037055 GT 1 -290260086821518958459864749866315.9070095659243548952266473827494944 0.5345990999709639840163584705213225 0.0566181404127217259516748563026857 1.0582841370774207278985877837692586 GT 1 -18222904830166399197731628567099408315007.8246168098980089024552131834444068 1.9774446785705775985233202237140518 0.0144362151240705785699176004692448 1.0145414311191109249645505249833611 GT 1 -15510469375146813589.1064043334573118368382272685372972 0.2605295480230385648533552947434523 0.0077492093396075858680038800518564 1.0077793904834093588222806310077118 GT 1 -30344768900696662477589945819.8360253621438917407258939877327921 1.1122428514398069790826152627630394 0.0490008768080411003680234912708637 1.0502421384224936472880592007120507 GT 1 -183026590040056255284610391.9914771146628714174776165930057783 1.3605255380750174530653512632388059 0.0209641373159650923094442880857269 1.0211870051674685153225385810546694 GT 1 -68708931848.7052861869786889465417190728241165 0.5161738127025793480683276575361443 0.0419094600147940376685165901925408 1.0428129960978771155288579660789586 GT 1 -2231434595928515825591677102667.3390448532947189437068617776245010 0.4003488967613525653333293254426839 0.0206240799994014036013746137722412 1.0208397264970806391937052512362242 GT 1 -308672179127333308473893127285007753339310.3155174557333653716135484028714302 2.1865500154461964068208946471882681 0.0668308275453162768109567027991633 1.0691687736125192775744032185798318 GT 1 -2407348445932177.1188547962442382136778554538975889 2.1179651213084279687728705930888676 0.0944729585602423629270143027626443 1.0992381385598406495698112734785523 GT 1 -2961893175211756342530420.9752286740140457656371943176763014 0.3577959072454099844484428995032115 0.0459511045966103314321481785656499 1.0470403558038574803010413337650046 GT 1 -148748600278424674806454100447770.4106171623718750797790725663052279 0.7582917405185205083747958459757818 0.0566394756681460195489314495271093 1.0583067530483206718435096438598662 GT 1 -79408.6962900081473286721607931338227697 1.0851992648617666377655992299465428 0.0453389528241390445347256953339285 1.0463989259251695399284709299005025 GT 1 -4633736373157102295022995763.1903413357527786853321707790255971 0.6038041274262618837153339316032967 0.0333947167959140015679208409700802 1.0339650538256043319005833108350022 GT 1 -5221545.2729576262111484622059068718954615 3.0212308719466395385342326477207723 0.0066751685127333608445929963466308 1.0066975470928605184568597550343083 GT 1 -258830922364627553973.3570682584830924624074556562179545 0.2835486650195494682992748020426505 0.0932848531593210819885158122268667 1.0979269390095543778406866387316233 GT 1 -24289237478048908166.0883086570608917479604502871324112 0.3604867972019938386050301623632381 0.0028958676517103197550365609005570 1.0029000687890238319459846056192042 GT 1 -1417643395149019093519807.6371584363929030547697012843595074 2.2809904446277797087532572580227035 0.0371797237501355916701470588404583 1.0378885136253993889545834495773864 GT 1 -426907050204095680983731011749955156142729.2770957492760939075705621537553147 2.4382227727024158403850542753732545 0.0968301921677034156135931141928810 1.1070308656229184207588558361051289 LT 2 -745367573807.0539801434278062454186675379148652 0.3629464654004040542542382067374016 0.0082584041256538386501361798171667 1.0082926936600569710454587116705672 GT 1 -15154831878101355397465.3040076076365253472640998218495481 0.1689639084946278160700985287853522 0.0615764542871176410696485431624908 1.0635538906182650329606300387594934 GT 1 -3851594265434812038808768.4369838213805981134489881675492908 0.3553318892026785524692086439840186 0.0541198497782740229965311351981810 1.0556394090537950122965843385440367 GT 1 -1.5816658260375563443047800123345910 3.2564654625426006120629145072108672 0.0913293724907969066905552903244132 1.0957725964422972066241291762772568 LT 1 -17041150021.8006099697162584653758177107575622 1.5351003979261543904611530396999493 0.0024719125536182911441223199688779 1.0024749727735589239042213148977287 GT 1 -18152.3724915832858213321670851927652817 0.1578311517485336969806209522484039 0.0978198262564198546909069233632756 1.1029410297053238294702653842940936 GT 1 -50.1412788848699358014260673297558088 0.3884541204960470412950968432178955 0.0040906492316929561526427818810066 1.0040990388243314291400500199937351 GT 1 -9289286059799.8879942698688921261634343261773461 0.6659438428165432898539664282415022 0.0836786033736528595467652636442743 1.0873881061689597973075594508487808 GT 1 -566400613097539758829502072740904116150.7076956779749306577281696234203496 0.2218153516544899753298198032828886 0.0416202334795591185485072866650716 1.0425111635712275849576024184256035 GT 1 -1082.2380023661669649163832923478852491 2.9780890774244271652988366472446949 0.0029965458515191851532936335611760 1.0030010444841930977021813113483229 GT 1 -14050559669870840061648904917651526934969.5629462590185162687532665499345030 0.0162858445121904835592601224165678 0.0681125216822940614421144037505763 1.0705432030039407091497023948154818 GT 1 -1212026471949985239231819151120772735656.5944645483045906948974101345464695 0.2008030111577191734641000444702656 0.0528710789272096908590246606903736 1.0543200587652584199125220362462595 GT 1 -21236848675336707813600.5240713517422286338532685005572555 0.7128828600232343998882630023424091 0.0808754266236670068720275657728777 1.0843336126286948384215520340031212 GT 1 -122127637971.1355153702480456535375863517745381 1.1446090369861185164457252425308301 0.0195927317994182852132816795222979 1.0197872138503741300532125704847868 GT 1 -671373783924167020247.7654655284903833439972129564672458 0.6726455271173595915317126045168663 0.0616164854260366870318796867670315 1.0635965493867364157830898007071428 GT 1 -36288918.9831893066788608732258127843996724 1.2862836007100274787979705085913433 0.0392839321572190964349005655906343 1.0400763685654929036238079185984730 GT 1 -2563450787674327397920627412660140442408314.7549853650490494840932923040293665 0.2845139621553486713432395031692185 0.0588432856386816109073880052604459 1.0606456130278479909106125513020004 GT 1 -18.2274050633380388587048063416093842 0.7566509060956015864439225419075027 0.0463194489333293652421947868059093 1.0474265157407163166417887882628134 GT 1 -4652857.7282606228006797116914768410453949 0.3875615157640838263382692361477379 0.0838223158551500110129121889053735 1.0875449547952972242394958409193098 GT 1 -103875806134777109159739546.8964853095021138768203662797035232 0.2339986267085259456267342332378795 0.0941162590457252989801408172436795 1.0988443024155551636639988886723724 GT 1 -3.5356051357234159166281039476346803 5.0159378195011910025805616246768979 0.0262619730460319572131056599635123 1.0266129776838457503523364362327166 LT 1 -11076353158153008726.6621128983497578980809127823578416 0.1817323855619110466539905357351341 0.0217683958661649355150065152841426 1.0220088229405628775666035061475880 GT 1 -25388050255370101040182160622.2357306018425284479772571960144793 3.0992706664022897828977026412043655 0.0070703323764860374671866138014131 1.0070954456190999518528868999578633 GT 1 -1651784669536788.7222081386133279941133394399469464 0.3906542012909841446137250152146494 0.0946698427025753676605458827232827 1.0994555871176243232715733168822178 GT 1 -282390954170346032143650114778270.8471868603976299073531416126232442 0.1011889688299495355695981118791749 0.0050072308166852620055227544653981 1.0050198090023976618241798324166207 GT 1 -25671341420480595941521122.3199896836730366562901894040816703 0.5604650370371315644632126218646646 0.0148980532002551922094311862562459 1.0150101438766490313497834164165816 GT 1 -10049593627726421634026449547064650.9224391929977613686374886683422300 0.3037936929825925512435814191711920 0.0499972817409366315603598981434016 1.0512904330663142554237254573222302 GT 1 -42689831067785922.5861592120636564087684434920226763 1.1066012019284230168134355240901243 0.0687318989740223716929144294320803 1.0712080721339388093471502827511931 GT 1 -121261123636474845.9549314881612229720320019633969789 2.4254608225115073290872716519951677 0.0192109233127487842552540996060401 1.0193978510081596137095959488657588 GT 1 -6.0442550768643059733173814149031807 0.3535362667987965190314024220754466 0.0241988043496445384179205888446125 1.0244964062984705946909133650107560 GT 1 -60.5901791562852000892161865962844063 1.6037816806726438644337637513325698 0.0354936204157565952939371627117771 1.0361388322629526070193179154150423 GT 1 -78422730148065613142513935001.1648616333859084312447865119466902 0.9052148301185065071956864904165177 0.0096869185811951433490236561909292 1.0097341419906714280880123830832006 GT 1 -3218456.2345863645444670087391255830585894 0.2383286038586987316452021407438840 0.0562579009111499617803325798545282 1.0579023502803305924437128102860124 GT 1 -1.6524029889283913524617672779963813 1.3901518378567163262620429157705868 0.0581511778040151348079754193371176 1.0599105032765522075357877117229922 GT 1 -209909247439224320909182267440725799800.0829784268561655253765040023478127 1.4537096223432047716181178336018884 0.0244529522157916745414041192944861 1.0247568906773499382672716107107422 GT 1 -1251772225516733059543595912957425443.8170300875332904016352023713823370 1.7960698472772906603931660665208854 0.0727380472278540682137182438090155 1.0755191721351032165896375035919129 GT 1 -19563501820.7296282600926816052869790906164779 1.3079039659314678504756974960701161 0.0595062359703053805156042423568947 1.0613502607471436523456218399933854 GT 1 -350697833446181.4201835326383540509245148969801005 0.3318295914249736517549788122924527 0.0199118503866328398580652720290947 1.0201127627775823281532749225167679 GT 1 -1277638043303131743826654.3676160915101302132140235373206656 0.9345215932406971931048153319349305 0.0116140376019710972045879044675770 1.0116820073177584346169097025752277 GT 1 -32777676710684563406084714568.3607580488721933850714416001305555 0.8969767014092684012794778581905422 0.0618204076997933266508374661553552 1.0638138852959976870226164043140697 GT 1 -1180737758177367.2159693421956871692927234401492801 0.8671690157913738202999078941521706 0.0261250929899239045169350348631598 1.0264724158155747024049070487352087 GT 1 -2692232.3379532139208329777450404599296950 0.2231832309300303500742104536575352 0.0597424442728377743587719628237264 1.0616014457935589043786182343438176 GT 1 -95924524457014.8752189343829578783812428340550855 0.3889471910886885038009720402736246 0.0829162182885541904392383488755586 1.0865564458921710136856485819698973 GT 1 -4328755361686752885.3352833679884661513862060402759824 0.4580506782805247073518389060709216 0.0906780704150365700640664475005385 1.0950560895445294122273266466794445 GT 1 -2.7433244341968101709096168761155205 0.8367366824173797648984054759487734 0.0130930488479480496056334762665538 1.0131795184081150441867308446469259 GT 1 -1028397680272286504744653.8390454216550777454520531263733785 0.0230619014010743729714416790506003 0.0933244732699133048781313567700412 1.0979706362791785906147387706194855 GT 1 -45248248391076.6240342612562099743824620719153919 0.6538608200937490818724782458316238 0.0601620898671224922874146458396639 1.0620478546157425130171624750607536 GT 1 -363.4844981814144935561896975059923222 0.7752972515747929554240692618633291 0.0525710770792910656967530834624519 1.0540033602264650917261451990190416 GT 1 -285629206064147841379100.4342633313243307162392187353273468 0.6829801006562725756669635951757587 0.0352681466254131233661223922420600 1.0359050884074576291231843002953322 GT 1 -57240390.7769072466228123472873063733825035 0.8247555698310938672637524574006679 0.0495022213778931234726242720288424 1.0507694541188703246885114112023267 GT 1 -7347285184073975276691428.6478774284817743071357987677434187 0.7755012005648286265652921287778621 0.0616319103228096901068768651860789 1.0636129872538877323957717003422778 GT 1 -32524379200846383333345472291886.0870160130846447587811403062590328 0.1333651583292236983705385928838739 0.0696408849896178279481789921775957 1.0721846221972416866853875637977323 GT 1 -2023257135847749297570.5011847875540893300981975246854407 1.6351211144337845797366812793840607 0.0368455819861788983338448106450398 1.0375415290380064100564749896322635 GT 1 -31063.8815111965220381136865017748871806 0.2854039789420623466622194661213421 0.0669926254889684254166036430002609 1.0693421740813233998575121647473454 GT 1 -79.3626399002449140663521551042833389 0.3637976006097338814603027383492090 0.0213197509708853151686563219088208 1.0215502995764012541191664561695360 GT 1 -859959088007999.1694170596338183265205597961921656 0.7887543636621530639563917847725116 0.0549188256136455952764261204533607 1.0564844563559477588228068810562764 GT 1 -196945437776665679903588466.2051622979454165731379250161930633 0.5713393006574320980379941196930639 0.0183670464500829344230698945030778 1.0185378148878158407972196077751405 GT 1 -706503528670630319065034888985142576017887.5953999554053053029567932915130974 1.3189982517114027334206399359896833 0.0846352613594298828727099793987530 1.0884326716699407881694781034265947 GT 1 -256769092777698935147345812299501.3450820736156101482612364374077605 0.2281673095176630292982290963934508 0.0237780789746561653230644688726825 1.0240653403157892751141453169491216 GT 1 -629.7552971090440821973054823921761319 0.9041323918141526583861474204325411 0.0006990445359957729660945442959525 1.0006992889815529518082970969450917 GT 1 -1331232551694660655666.6340126720376658952494495618944226 0.5732945642265796658924425815663438 0.0593299439480858401372328523034312 1.0611628320704343797370142240114379 GT 1 -13371999243336326734.3514118654824783692553020033196696 0.3760275819872582773008436836665923 0.0597726567477394942886270048349687 1.0616335784364966024170404919278209 GT 1 -10.5087631035536609786608901446867694 0.3539339242376271654065978524426296 0.0862627511018998993935573762857301 1.0902122227097981402807725367975732 GT 1 -1152738010613211923919736062163.2178776436091792572556657629591060 0.3225241675698027518205387585285093 0.0869955227286975988028402276083520 1.0910144944875800130808370667599406 GT 1 -3086979272861942827884.8215863487978945282107213171294535 0.4632368191845851888519861304899493 0.0939752530196851056814180112190655 1.0986886587643842564741068545574640 GT 1 -85440465205709482481040226948637153152.1713602919552641892369122811865829 0.7687939695348689434696623532349819 0.0367664877060157175542509400187922 1.0374594123688109296127464040040185 GT 1 -888339223671366051.0830972034476268098494592427075443 0.0665594008514735284745240893482306 0.0857483530667403382377724934486365 1.0896494205506488961326824803871165 GT 1 -11790556232.7803835115279271262632502197576256 0.4591001196729456646177754123719078 0.0608093121629583661232965748946444 1.0627367449520909254737072584127951 GT 1 -32369393551.8759999835511155824705802802058756 0.5320132407196403521575437506535142 0.0916630408092333726263203321999497 1.0961398687912180522547259588317812 GT 1 -1821918549509.2683593955219264040833509070461833 0.0334625755804603711127686105570035 0.0151733788455616817536426374038232 1.0152896724357837046000418410693189 GT 1 -237980634080439520157195629606.3496973682056436523923514232086013 0.3368915400942573255932897885099284 0.0725865922450995912596440620710468 1.0753558497701065744056648731788119 GT 1 -154913.7349202127358398219877449189645816 0.9284157805268070063685326299638139 0.0395479758055358269714710939065808 1.0403512468034499844154752219700257 GT 1 -239894463.2368781135072173574960988990200416 3.3741042060832409397547454648248884 0.0977683158143399919195097270130745 1.1028839358197261488308136282232434 LT 1 -86186599452.6403122384387999525208335185067401 0.5070249384606973900248968514376319 0.0804325226160336493751365403407862 1.0838518527646475185521304104004642 GT 1 -1105.2734710026993381437206391604186526 0.6512450079051994379627345911743563 0.0960477550097126854201504878874089 1.1009787463234984486079238471019119 GT 1 -173471411976.4799635595771048142992369537453577 0.4673212299933818443068567047351972 0.0009259626694724028807108923224102 1.0009263916377312039174686895854669 GT 1 -1237452647077205023615905587.0730479283993278894697075390662520 1.3020611087251617054783008747259239 0.0227784671320548808256767719773376 1.0230419045691745495030543067537643 GT 1 -10218428943601471440167145910050146347.9852597251899653534352238827215649 1.7171291933239690002757750608091884 0.0781575673684560530011424533291054 1.0813809673929120724640278381988917 GT 1 -28770118904428399865332.2563773289692798910594804808904764 1.3147444549320964570796078088913831 0.0701335626877383343294411865215773 1.0727143189418379834226674476055829 GT 1 -149835.4492994709709501353284224163278322 1.9076543157728710195331141176470035 0.0070616083765308913932142274714929 1.0070866595369485422278079284303813 GT 1 -2849754135516263783339103.1426508469914767093640490657473112 0.4926759359524364186603249308093699 0.0743094552264452464752060816239674 1.0772152850979463711188768183388558 GT 1 -24796923212897899779669411138.7386410169573069615882928495516545 2.3030136813156231120338970084972790 0.0965545357436386360117346704497680 1.1066946695159332255037859232713029 GT 2 -757990317782622166.0472545368336048759346535276108911 0.1504496669515348206673286085794992 0.0564283012872677267607712945364883 1.0580829247844530935837289448083496 GT 1 -209421682061598379673966663087.6534222580015941773450101720075983 0.7325460412067088426791784681976240 0.0923181975991982079007850317745211 1.0968613996831279027069298053830077 GT 1 -2653021333872098684222504508160977130215366.6404724982133590774066164500369525 0.6483411477410542249635977267214853 0.0477314447712455146631624647665412 1.0489081881437950581617596392538919 GT 1 -1078915252154948250074431593879769652778740.7952470503024872635375752095073814 1.9426573253068074189165082468282947 0.0998951115727196818165515693070156 1.1052439797514206900807647577769801 GT 1 -16.7044077324917559917548213224253124 0.1589406562266454074855285175837311 0.0133171924366913869109237050867628 1.0134066614490811063444331079699593 GT 1 -2459.0580825015604349447800037300558263 0.4890380296446273280245016787336876 0.0990907796114078220241730217415219 1.1043507807355443956391812868242445 GT 1 -68525.6888306902248696196444817444795354 1.6095481770870967543444080920434728 0.0784510902377995684456643016353300 1.0816994270331130867874231424153824 GT 1 -57.4156515546662429762858042241363736 0.6928517066279174837750019937787404 0.0700982043176376725344118097359920 1.0726762944509604426816092972682827 GT 1 -89.9408996258451151870136033599343971 0.1864088907891003536858720252251727 0.0233117917277872023759588187504594 1.0235878096309568693303509302648260 GT 1 -8639765862511862834.4281027170485708005554508760646481 1.3890473604420204241845659085409383 0.0062080268873223518333151759774785 1.0062273768110379689280279922587564 GT 1 -354455306572054885.0432969816774895003474519124795194 1.5720575166975041520946569026357468 0.0688412269187499367367093908024661 1.0713254758788837490295067195754959 GT 1 -2.0070741116312325212714362347153826 0.1756353537290903163616434699066525 0.0007321432311694196255504029867792 1.0007324113789145860750286557411539 GT 1 -2338026790526627505965058304193.1948150256556615847598706727043925 0.0651489251354401522674201520678809 0.0690283656178550901705876605213550 1.0715264700724000749761112322636748 GT 1 -15189267220453269109.5567640300765333562076404647651107 1.0841881710010035334059509401655036 0.0743313626623773809267258282049412 1.0772389514249831107589526924739366 GT 1 -27111251402481344602440263175713600754108.5652553179464834212436485744395765 0.6161056604857113170526336529041716 0.0965151881621874557165430835473407 1.1014959794532829104596725971046229 GT 1 -2072800322192356155.5821042448394332545557144386445155 0.7410468791312612554019616394373193 0.0985690477261956229979278579839736 1.1037718313144543143751575459653518 GT 1 -178574413511600.3741231233269476602417235493036575 0.5941288794098119163256914510317494 0.0327977773943900142116906506739445 1.0333476817048624069578192642690914 GT 1 -47750995903543696769427651624333834091.9169304597561769000531074185866731 1.9914895553939017051589724965626486 0.0911829639133117592717212496442428 1.0956114854969693363550604864888034 GT 1 -96597585.9253178029822476268635293082166832 0.0050893542479778047580325601499787 0.0422284258302281208877801521150492 1.0431459697665190110044686992968107 GT 1 -9531334235390334399106741765226970.6786781710175004095077111989427182 0.7920448843267262913483617127942891 0.0468690240799274539069264711705253 1.0480029493882348011327615329801504 GT 1 -1543.7721532587158202632380487230030334 2.0888461200400304987057836512471180 0.0730173350589484465746926259133151 1.0758204137625977071485188960682105 GT 1 -1394613733751363242880176943.5178087894015840939944203968365325 0.0971790290506559404724281597530493 0.0619674748809738283198311083850103 1.0639706556100962874615995994328910 GT 1 -153312.3266989022292435892375772544992653 0.9042920990637603470247338876907021 0.0338727098398037902644241130680813 1.0344596830983993352471890665762908 GT 1 -1051458743666966554159080325.4749689561855351100476422508749519 0.0142533398554684311447124566871757 0.0827928045593152286626264418537132 1.0864218830218713480796928000398299 GT 1 -38149678232020611904407337427.5031709259603506304703612536349673 2.0695712198057511036515946178433722 0.0078260190838253628344245051773837 1.0078568030871586177112402794052067 GT 1 -6789665631457160468331.0698528222680243983161336489548315 0.2610076892467383073286021416727514 0.0490483980656279283299882472322951 1.0502921094937405749120148744028973 GT 1 -45224783986326457466813622644705545365.3061615029713746401049977714051469 0.0357898906016658401976285109292147 0.0175890310721654597429060729517242 1.0177455562120211021351224451810285 GT 1 -11707012483287771266791111.7018422380107961817462048312703906 0.2116449246693432862194534978739444 0.0931347719483839034534631756772590 1.0977614308100198642413703096814304 GT 1 -162193489.6945820634498706344136902991575858 0.6929421535894855630105790970523102 0.0978647549690981647634814128897701 1.1029908311006010612788747823382069 GT 1 -36410625950595.8111132085639166969073464354448615 0.0881592249154399156584887978681977 0.0638686621111639641574515577845104 1.0659994940909273924057190076834739 GT 1 -6660383886499501960.9537475050399962545354816246390837 0.4723846322807903247639890318235016 0.0700913314596668675281627918728527 1.0726689035279572120362762804123367 GT 1 -41956004928948183512084282751569050.5409631078952624763503617709294387 0.9210248477777281823378568397077701 0.0568152647746012766427940582207118 1.0584931139172937076904928289441499 GT 1 -3148972518.3047496588127637310187878055338964 1.1796396628673974895407745287847529 0.0630942993033911111303297789318888 1.0651726414062884989425298103411164 GT 1 -3423310404525708.5458617816685398987401804602617340 0.5423283696346038783956843239578138 0.0999147004257959547668844459793109 1.1052657428442401138443126031641232 GT 1 -1032510311544579685100748933237.0566864684074565915550433816630965 1.0870324482976483231780376061809234 0.0272347432396057753305864855545078 1.0276124830868898886839644375466517 GT 1 -4454036305843233405743388.9850813029737941380710319412136220 0.4737059392795135939719689020154779 0.0233403502994583753036695393564508 1.0236170502718971335410014429182087 GT 1 -7752525494595366399576606276.6222099090342751118335479029515974 1.9558955682161314082030746005809124 0.0557607091577264771329649677255375 1.0573756588970694503071296267357292 GT 1 -6707049192467115590899361459788159302373735.6894712423123521424774545993184444 0.1903504945461537079312991409977905 0.0652621571695291490558867758189085 1.0674891710073281584089468932248272 GT 1 -5360146809452454208980185622.1895797525576195067832115788109355 0.1541427410410218505482528701527675 0.0051442737527323723953275285449422 1.0051575510833435085840086036807188 GT 1 -1.6656491602872872722393341990068239 0.5012587781543923217566848779574782 0.0538487849615534779596103165904223 1.0553528759407059131565567372547714 GT 1 -26488502048281591570634459968797.6987116608392239629699009725777366 0.6921142935610537876838860678736797 0.0326922803303831473478991692600290 1.0332386131890527944259394604304554 GT 1 -662481952980207.4036753520392567906439198639881907 0.0882105462446269147843491172460146 0.0290446777092588352427135521905320 1.0294748238083683323906187004762651 GT 1 -10642035466315618487167.0270744398625451554141795899031375 0.3990152600736602538940372366169643 0.0136037203812402388241810128536498 1.0136970988151496030305383051447522 GT 1 -72078851882245265127143663014280978764.5832421823625624406149014983115478 0.4919681751929336363472724997108038 0.0921973928276494793144266301544306 1.0967283169961160881614597618453250 GT 1 -2896619545387861585182611977201.5586124113401163434996806608118792 0.7110726828918285677578723041062642 0.0647368455334049964580692019121711 1.0669273406653107172675286945478265 GT 1 -144847434034474145030961022796469308.2083523900402276511357469769743572 1.8009223964512012106209855264863278 0.0149622401009319459214093278633496 1.0150753036219008199379615920578936 GT 1 -42307507728031900.0919149707934218081472118366683714 0.1103497128236904788899908235997003 0.0632444881482668286514284461679554 1.0653329573099230914143965183287972 GT 1 -1412791947432423050458506009990209200979308.5756978278186464741965951924873666 0.1801250392949537614030096223995129 0.0611040920407874958285434082654820 1.0630506600621924934273934519849800 GT 1 -424786158017782710373184830517.7380083752441590202114164266282730 0.0257218152791821887628055506978537 0.0167798600183240214066902037018564 1.0169222368253039039082261517519472 GT 1 -159244614574856.7500561133037051200510039037452254 0.0887963234485387403815883781160730 0.0810296620972186831456451280740019 1.0845014336405122689077546439471496 GT 1 -741933809.7111971572407653117902941520571903 1.2630100934158433580635838091838403 0.0975183222309326880502328935512580 1.1026068906221048141618579149602593 GT 1 -450014428443808745.9205871504608074358271488733162545 2.1199373152443910067856364869819740 0.0636876422607623159094004547122108 1.0658061426418149236333593485356400 GT 1 -4183987789935220392.6569063136384208794102401081465474 0.2141692247841819727833878940483083 0.0562799300617738209016595218438668 1.0579256928945417314988055740689079 GT 1 -154426816762557605.7522191924278843885097056880579502 0.6625144547771716200437510441115828 0.0881164993603327333913787321393807 1.0922430375940022446625223187174899 GT 1 -189222100494580659215090052492727.7409044785919751897167329466816470 0.2926705200528682840455279602957355 0.0572347959745471308115984912373928 1.0589380156595240287228882479357639 GT 1 -24850527036716306.6043050329562460052751943217589716 1.2894077762470400227473200117086899 0.0332871608421135708519175163695367 1.0338537881702863236918825634202224 GT 1 -28736.2679280518029846985439627737474370 0.5840963529896735285034841935217042 0.0005864803970706094267444454110775 1.0005866524439700613935290223249171 GT 1 -86450601298012505905650615887769920945.1400583986658488720240845960965473 4.4314407405445273028218232407810623 0.0152614584872643769369427217381580 1.0153791131340971692241010205862780 LT 1 -169344723819978.1351759492653212495682424752083989 0.1962789254226028805620695211452864 0.0759607613347366403364508597276078 1.0790007421541643199662687467207006 GT 1 -14040418874921358853501601217207668156.6446319432246765596255295842804623 0.8822149960372454751602402569327206 0.0481223362396813980991997754640867 1.0493187569016232794540175674540333 GT 1 -3432739180.4234502435755417078818485633668284 0.6049546850453272049214118969787952 0.0794143657293405785469727084994821 1.0827452524669392062151427227255693 GT 1 -11126009912540579920619290221020633.2879851012732828984230659073973099 0.4613002392468550522971218726005255 0.0399158152704365639221777092567514 1.0407343059383826252936961068615241 GT 1 -2447339547758.4690828941931991526415168311634722 2.3278519619915130254337151690989829 0.0822336950194407752135007694843341 1.0858124905079754876361459535263591 GT 1 -136069415283531976121502417061952271.9710515971066176781497454129228798 0.6346955803180779038125694334871950 0.0671257365185293080288828451507093 1.0694848530456010176080617903280862 GT 1 -45809475623000882549.4279959344662916873033209983420301 0.9178399009876480955500920524622846 0.0367694469387007632663432522167090 1.0374624845597105841985376290259204 GT 1 -108.4840505708092271351818990956340274 0.3716897889551086975637578039600728 0.0649328982262544214181601214946943 1.0671369856656130506233600395507721 GT 1 -41297017710385087.1311147888967023563095838688769524 1.4627003409451479502833490658223929 0.0422613767794918000078422950655184 1.0431803741244930089665217487939123 GT 1 -2587.7350938549195865963438515191594283 1.0380984894334661905805121917030446 0.0959617780126132352861008270399926 1.1008836385242764956131849373818478 GT 1 -136424866135440735781510328159964718.7268087626815471958473722217540141 1.2013306556388290113224496198841521 0.0226599228516412151934740044883765 1.0229206044474986417543319699560046 GT 1 -1549663408578673862271695375248117473697.5820647179920634953002677107972229 0.2087877104929968108216941840052566 0.0873824571984898289241343577419143 1.0914383877922528773470802248772189 GT 1 -8647839929350945549.2676995656435821056923169327822572 0.6384722490931883076363474596565023 0.0763443556913087496172134086909994 1.0794159561222473533963855244154072 GT 1 -35791.2704862670609096368294369104556853 0.2093241284876019744291895496824085 0.0321663877258522392596720180989066 1.0326950946265621265863063300219107 GT 1 -327226311710506884122596714212375998845.7463133467294028582802358492918079 3.0596687578187472070796312427232315 0.0399375962250510395976661193338036 1.0407569927006806785513810780456548 GT 1 -1344191924956.4873374244820733058269450328377274 2.0474988399199670932316739217818767 0.0078643951049017333351095405803382 1.0078954825566885350730916502685618 GT 1 -214865137013235611150449258.5279393847971826450749691067835120 2.6878043496371659712426999502032193 0.0438766036066394475675265887112339 1.0448682985350178946897160858487374 GT 1 -2536119693940959211550655278524819158.9078713582547946703827361123997569 0.7409091497164308449193060436186639 0.0053334133311045011276169071003710 1.0053476867533121486339463404829457 GT 1 -7159204328900384.1321881024264189336825480292133151 1.6135834915109692826670390238923203 0.0986173100527885822686455483652339 1.1038253724298244318432855447299170 GT 1 -50853611123616084121403127852509309594216.6244120541487294492327819797208467 0.0648481903834511616792834428493236 0.0855708388318950905118127795523740 1.0894552759688100058528316824964961 GT 1 -14820634530496940528714653997299703.1640627807829148148006625834732983 1.2818715168563683231840409077185234 0.0770794524712927574224346400106078 1.0802121288683970833225194928403341 GT 1 -39544913682452.0679046964803326057900377889102156 0.7775991072397396470621932503971593 0.0359752121669411828774587907110799 1.0366382711824077630447078672025232 GT 1 -4931385579244849726280121177240004402106.6639479431299126422779989133374825 1.2995878339885591776737531013664918 0.0649184313444829446932893189948444 1.0671215142948065311029156031832809 GT 1 -273825.4982906744235963017406520946700758 3.2099376175863008270054268252875322 0.0613643040969546393197588322468985 1.0633278453381131831685557786595268 LT 1 -474707450.8331091126092047562032046365503952 1.0171377192501034175557809922333853 0.0690726128683184662529992000437669 1.0715739992347879796158958187822761 GT 1 -92349525915891137933711419752240354.6064686428264426035725328733533751 2.1881214378627052426023506631113838 0.0675493003940321225707740895019089 1.0699389979170465382391622210291224 GT 1 -86592775991872577589267227703127065.6630280004388152529586223553724848 1.5247336270031189485238179392435236 0.0097692533912937109368718979979730 1.0098172856292830495447321853329766 GT 1 -155682069.1574819510871616232146420106034548 2.6793413498275881286029781116634699 0.0622987011384591134197299162838194 1.0643238254007067352333120439568726 GT 1 -186067407183207540317377740055056582.0111479839795613454478670292160328 1.1910065787638805874607645989167690 0.0613797016393856703441806510337914 1.0633442496457605436368092178115846 GT 1 -13912422986750019291647695591.7394303788558940383422558192783249 0.2418958572212130364253749227449966 0.0997181945976210003631577150872743 1.1050474475550048124716888692962603 GT 1 -7830783185921.8050523801259469000533279928512661 1.2377282282362709170968741450308466 0.0656314997046766224873475742787584 1.0678843786329542923786268472297020 GT 1 -383947999.7491567851303590116621378941220901 0.4223237118312246605532015572846151 0.0029380624782391349184564473893541 1.0029423870564666851699980331239851 GT 1 -4658829330812.2356364006706899181687720985351142 0.4375405678052973894611673519755080 0.0647290289180799954169302171606712 1.0669189830360985216356481049728643 GT 1 -332087710084178274357833792.3415239676932306513844968501832875 3.4273280980525733271613015146593484 0.0888954738984859213366353535103240 1.0930976505416878114644781323517664 LT 1 -830274.3042297483514079645833415216741436 0.1862293700975079303193028351217907 0.0083872062307557333933359219000972 1.0084225767570521688978324577434597 GT 1 -374248281808919687929795144325.3047278902269187701681066348030370 0.7622153737559382425656086993498555 0.0237157067368618803190684207898376 1.0240014509029320356790060510895632 GT 1 -29802254023.9062108277184274363891278259495766 0.4835331635496699134521254907198677 0.0171937397084999006003580715403273 1.0173432685024292250680585744704731 GT 1 -594.2963647621530005818984192637662893 2.0585239326047681166210224250843263 0.0399179452656659062396928467749654 1.0407365244913241017327571132136370 GT 1 -5045424963239.7307304896821205591085031176412529 0.2258717528172200695019475788676316 0.0933293370105506102282805494556321 1.0979760006609661292329419496035013 GT 1 -117277207707075091.1578181854063422852592138716413725 0.8960999839658532540583715145551599 0.0155164603781871738596534519148503 1.0156381005736461139380907810479620 GT 1 -2412544824762446517845539174539152.3649559513760997089132738707248301 0.0916513227946274563364078763168372 0.0472947594432622354543677308336057 1.0484497195427062429904788838963342 GT 1 -26695160316975493150925985.3159889327670566040723116335326892 0.1452011047765153979369432771612988 0.0047370380273868137320256578770736 1.0047482933506864887621473200846361 GT 1 -9185737279522037545312574.2994466758600858595007633174124953 0.2317225010849707831019391200462650 0.0560352092981400202106672980765122 1.0576664115175413322261638966978897 GT 1 -3632996555199070732820025112111213561043.1698784504371773855561642999410685 0.4277524882076191772356637520183596 0.0393453360089684712112647284454762 1.0401402852794855996722924557077019 GT 1 -39021421073170405070300754086696289473611.3900046440901200903561129245192248 0.5975729724316096530376608779155137 0.0166062393319222878809185276234815 1.0167456686775902711889847338129310 GT 1 -1207438685686537338884741397871739592842.3711801743307782272882313935043244 0.5200201644463941513225629963983638 0.0452510954357869045867742832248609 1.0463069002307040035463059978017172 GT 1 -53305140912835068985066.2160301299207240611279145336405744 2.5160214404438335222073551828653652 0.0775514316457559007619041489242869 1.0839818114896485045781655186465467 GT 2 -124877362917517596.0028908342832608214148540727357747 0.0717603368648243536061532240105512 0.0970217446209179003263339375039141 1.1020568062769256360446511224608039 GT 1 -2607944190337265822101598511373685196558.9778876424602860373264953628055767 0.9226367255226551447352259218564173 0.0531692219944960892452689981347702 1.0546348944715241771787094054145164 GT 1 -450942.5064711662962961839596192131225591 0.0115774375977347832868726808445583 0.0611339049991231584270699679662792 1.0630824137756994988025800772274284 GT 1 -29299602738649079466144.6418459688565618017948653969063455 0.1698532757467535209749295291880918 0.0181154803263740690503623478061851 1.0182815746164498506365973588516402 GT 1 -14852590284613951008313493814017.2588912362337125626460537533813053 0.9845706975782782313021094801285371 0.0322382022540977245536154155274568 1.0327692986961798508359138775290894 GT 1 -801402373193129816866385353195.2411760821823433503652621805245497 0.5036343389318105138459366427865935 0.0344114788621429822562768638279706 1.0350174970720265182574882205074633 GT 1 -8222156458881683214739.6867726008302074780819755703964626 0.4143775847819129385212766469569111 0.0300113826097043339799189532960674 1.0304709422027398059903019052429586 GT 1 -303.3558659937922431827110297963151729 5.0147729774130815633666707563217086 0.0529941673262992409611551984759045 1.0544500267086894268630520216045000 LT 1 -86926.8072987696092811516144829237875789 2.1336939275628106014849427209907370 0.0005752289110359955605346038931654 1.0005753944186589312701247516953748 GT 1 -664937135948557844942712159715.2319384186346747934684309862590092 1.1456232264458652030218860098529474 0.0900106831666688574832931093442693 1.0943224192837448070971615954448428 GT 1 -44439484898449.2922131701421742210390133829364539 0.7960466819630394332661821213734020 0.0404007332505701623836696858039082 1.0412395121379505123728270752577647 GT 1 -59037048771339487495028688502260358.7528783247933224155260844355987994 1.2423612125856282696064875778163563 0.0012103328357948804076922055520580 1.0012110658801263613940417295032530 GT 1 -269165476044305.1436072120229541537896757672739835 0.0699611073736197191344040043528255 0.0110568297222326751270265694417469 1.0111184108124728150466356522493487 GT 1 -104485692967194452202990688.1214936683506322159879470848771954 0.2617565097191629852562443947360311 0.0400610995288284637117883021951089 1.0408856418882355329063944208742219 GT 1 -817307977374.0358049578081768941137081078555841 0.3562014082763255344769251106608456 0.0881646847780391361843505532573567 1.0922958806280253925370289176129310 GT 1 -1534414755632441947503385245533309429.1470850611240576218565570012587460 0.7822900257480352541527397426636211 0.0750652982359118711987776454363992 1.0780321366489651823222348790562319 GT 1 -604682240943231297.0532877962843705577196600659537655 0.5009811050856366449509385613800703 0.0922876238701844053868256165119484 1.0968277169387649792847591710403578 GT 1 -571136654918426.8852400078143503543200968507631313 0.8033123607989018963350437271489015 0.0426824864223261396133522892133483 1.0436201624330757193618466242709559 GT 1 -1950727880785003712648478883800898867485921.3059867201422633643661022986263806 0.8451979573216097264300221568375579 0.0080776532410164574365061874732953 1.0081104542380935116256822852003185 GT 1 -19442648731.8434187735726939794857168398990568 0.2493379083610738268825228785571317 0.0095906245830761423566732118426731 1.0096369108032705473314921633814562 GT 1 -110193831143597785650622934060589664010.6502920196281738413795264367383551 0.6106475161607809965341724817661144 0.0436585750757532432559480958522720 1.0446402906476042513620732592008884 GT 1 -1879781438336121368531025077269.8122897890131714189261778307787928 1.5380902089861866725072043426652576 0.0409273360918658022623256901476550 1.0417884364705622575797860510713460 GT 1 -3634760291.6141054927392668775848459080918002 0.3746177556836099203472004209616998 0.0048895620300852956783978938689324 1.0049015550482166516833016762767857 GT 1 -1098757193823303344481938.9599196588264386537651690261982060 0.1365979078294233102110130308254555 0.0977101672796702828340680293725717 1.1028194882261174713702074089422895 GT 1 -245.1561090181791264779384599680285033 1.5602099669513468886455798426940586 0.0077793828281081171310596214476576 1.0078098000810319480765488631179433 GT 1 -187985194756501650218299426533699725498.2169587556083730760394637891221772 3.9639005655493510642735328944876354 0.0889225410672688298630943730549276 1.0931273590658716795436288042546515 LT 1 -330324653326460073534524009446087686.3719369089110371891767296517876505 0.1409688246508485128795523327995274 0.0788134612164643992267452272333579 1.0820927238393603895947052843021351 GT 1 -80017538510043486377661812.7820227738119913792881781842722934 1.3789935592136094256621376768276019 0.0871391826222999741013089847364616 1.0911718553775863478775379196563306 GT 1 -31763147259888809759430846.1113698635174980251691559473866351 0.9530308416165960278306642817096461 0.0636511409985372094886115422996915 1.0657671593362352223242004185849060 GT 1 -3943817574151933984383537920491142179.9764527692327449744112999500439692 0.6017724549611433729933708101281614 0.0814130604183809940253825775835284 1.0849187249341482132331307516533090 GT 1 -656413682947653961313006909793273156697.6693100698224003744042704344104177 0.9537217327626896582718274577558771 0.0776319083974334615009144223007120 1.0808109034242376656273871516065281 GT 1 -270069174155577130243057552523542341831.0408011930339953450494243022562911 0.7924146513551451774332612565261891 0.0841853828445313360643391418444315 1.0879413178082606389910455096798531 GT 1 -151999213129111150895386845124228.5062468590679125160468508780592008 1.0738463775624712831116259231985236 0.0195103570888962844129385641144816 1.0197031964702623354693176131036703 GT 1 -242893475534249464720410234252268506896.0457293674453245437024296811679525 2.0441315270474238193533170751828852 0.0103255943496394809206703628057410 1.0103792731288896992148962416669461 GT 1 -143625377138338997112.5035208129179991401438787531975056 1.2886807087756452365779282303754848 0.0064705619286060712092991167260758 1.0064915867584913376617134327316776 GT 1 -27956044151582416192400.4493694771246182558180539648327109 0.2611043590449651812306963508856108 0.0727163636540446550757820802188440 1.0754957878905339445069811605463933 GT 1 -24890835.1218748882080388929829884765823161 0.4944466293253251400113500947066456 0.0391514022499071966019496657312537 1.0399384289895888574508278920897242 GT 1 -137497.7460354300136431726666260650712492 0.4295917823544172697993982051573852 0.0887383886425343412912377197897391 1.0929252535100356872879730630284690 GT 1 -35382400829344755970958779650.1065733168081841405761479805022487 0.5659410417506642432496251925462480 0.0972051578972052753282660148923772 1.1022599472775019252671789565534514 GT 1 -70.7747293761191652467784376169484659 2.9848993217442307722760462672631844 0.0251552737268330722907480254385871 1.0254770757711747113540711890449854 GT 1 -21752526796408951402.7996707483251318602153301369183379 0.0527126743895661178928978544639641 0.0986115532523689287800635074201271 1.1038189858172339646621579370390383 GT 1 -504595667998.4478044470089451030517672259776420 2.6092888189716252641668087766354615 0.0285459249712924951237916260173298 1.0289612835118523667731085816278259 GT 1 -24222908267048174357232581380829695504278.7282774946480931972467757615802146 0.6948002855781626945553182596316757 0.0783037391220646797066345250765416 1.0815395447576612518118505691462124 GT 1 -368265753529395489437580256737563112455199.8025490872896733779014496465780044 0.2278535018037038653941213563134491 0.0261756488639003462852917276819206 1.0265243292449980056511790882842314 GT 1 -21123440381846357624807137344214840466.0001976866440429861598175387659487 4.7845311654549198618340419990345299 0.0930737682259941578466793519899999 1.0976941642870882666868660947574829 LT 1 -6113408672.1646887715744412066462277277363859 0.8045709246963323347375637908649179 0.0530950072039579896293613064282940 1.0545565152258866709334140758869924 GT 1 -62471559746176439942155307.0306421217904264169277986204082398 0.2698609149708723599912844441535607 0.0458441681949892745816460930932955 1.0469282751657495932174288305897617 GT 1 -21163749030151100786627203.0958665532999258574228135674557427 0.1263085998857587051036353282873272 0.0152025880074731361244636809210641 1.0153193320676952087627449060233714 GT 1 -2390334109.4290534884692387310741755740946685 0.7376468517106564296179061331751760 0.0117445611671469846243786526886691 1.0118140733215204911910136202514896 GT 1 -948825380.2592377060558038857735268446335029 1.2325013203656363277386155191332440 0.0169638403577510546649366150598636 1.0171093745244931154837745918581291 GT 1 -1218.8078994474046626510317047942315456 0.3679877059925935101716609606633003 0.0770496353064361249872887371396405 1.0801798219885803050779514975978021 GT 1 -82428313687804081.5088017402208305601660493846676988 1.1708990196395508156860486735735038 0.0582891484786510719844788709758221 1.0600570032009325228011317063753844 GT 1 -114761061723571.7651985751362041870783040165001619 1.8860168087039362723605830316407003 0.0719270103317735765345518289890151 1.0746448966291679908735795997362465 GT 1 -2776601909126578026443761523597820144.1297651830057878484300370065248528 1.0522523896540825292688538237018633 0.0458550590240718471516399846046131 1.0469396893298457694869563787930483 GT 1 -57999524698163128969.1076335229151033479355351422507635 0.7796108892779869348577895964708195 0.0355158935905753150400984766843471 1.0361619253522979763440022798648083 GT 1 -267.5340436195990317703646887399797817 0.0238830394011835951040857376355702 0.0782000771065804673549214305204110 1.0814270823435743373426933256006290 GT 1 -16605312089280.4923643517635437432286235431202764 0.7930974261219471191443797040258135 0.0128046257275275745167822725774453 1.0128873115465373924914610411209400 GT 1 -13022396258078251355979883824156.4305344846080709467777998124968417 1.1929068494484211146661282149962045 0.0021253253253464142443596347448169 1.0021275870343622020511077475567115 GT 1 -17415740122276403058938162042477972.1662868835798874603724048239146227 0.5193451745871061291687309482482361 0.0471334446721131174210675280001910 1.0482804110213659840749986096708152 GT 1 -706436719157939706.5367964678281230367319158705777493 0.4645858485116597309812943094592453 0.0429314966595343125819015126410587 1.0438803087530048392635564010069689 GT 1 -253976320280458714528.8988037079256009247758027785563038 1.2211910422968525316225685289472511 0.0829573254991581734098641724059261 1.0866012707301440264198412437107029 GT 1 -4744998287664166525.1087925186054455333184504469104098 0.4923395928204904719255835936129594 0.0810820126337166809183947930211306 1.0845584017770332860732686244161856 GT 1 -21005942894138994401303558136968996938.2586850953648639268092359603118484 0.1763399456035866018072924916394021 0.0025799529488491148278129152405435 1.0025832867627480840357933355897845 GT 1 -4009359717927614373237407827321.4775344692284471392455009804727595 0.7041292846970999699745274542274245 0.0240884278843370910223571078355886 1.0243832990141938616201307717557144 GT 1 -55326657969070215337.9470108683682579353349932091516597 1.0216491084794217749546305973023679 0.0222973983220732073250640441269501 1.0225497434554094854812729054994499 GT 1 -59999318443463693609823.9200644408313245709454663208902890 2.3432933318464270635201563526975284 0.0977737005298472222672880328195533 1.1081830702339730437189386887326806 LT 2 -8346381915488.9368405843281596739673869866065524 0.5865685285884003700353219655304412 0.0316278484339278175149460939172261 1.0321388114919185023239459744606972 GT 1 -54689064202.5316868083820503268967889749913137 1.7520628223417752388397452353710979 0.0887800625467356160101741514124053 1.0929709866525585652067853377755326 GT 1 -309140934318884484097645336939727685.2418498341416010236695360299993796 0.6228803487067563698916801148952864 0.0475462126698839852212830708654583 1.0487136903970036631522388098211857 GT 1 -10791248106973293011088113755520.4935527446945822938544852266253569 0.8548700527255094817957300120557869 0.0101192696736555313152292887607501 1.0101708175289608987346997231090573 GT 1 -2404821222548229051668700173.0221561888313698972712555088904525 0.2160825921873520160116416360642505 0.0811685708214993035915432140815235 1.0846526019841642138234226417360996 GT 1 -21324256231831646472758095136531327090.0114587062219891920355588559424235 1.9894003385765005119278461117340243 0.0074338137194181078213785153274614 1.0074615822154347420976587121392813 GT 1 -4208762058943941484.3703302349672725896381342076621679 1.9924037824081458046473789797826482 0.0391831269446196328112895324949624 1.0399714469057634357758870938799037 GT 1 -2992499432442.7758970158452484968246595276499239 0.5835640565984009657710824192112611 0.0824043193335054803958307672537806 1.0859984203854498660050116713636476 GT 1 -2876973167596370.3736373564856298414171952640535157 1.3538546257686130701933246375677040 0.0291958304947421580705403223077882 1.0296305102220846090729313725498298 GT 1 -1135819729307606.9231592487644189992620184654882184 1.8517955257132426276854871440683534 0.0961482387738787962975399348526016 1.1010899129808618175843780088774164 GT 1 -45027903755187406181123983596915930492.5286814856478684250176551141065092 0.5765306922272610865918606643229226 0.0215894365136868766839759812313215 1.0218258979725348734048228305187373 GT 1 -604675931391.9843089847936842952730095059914083 0.2195054525363924090668402192292111 0.0827626004618395446476606571353560 1.0863889530576074104952403725935165 GT 1 -812487521.6316899877690211204730102107203470 2.1190593002664947422875637393299516 0.0528324547233188028946594140792223 1.0542792792942702552839380534787176 GT 1 -217863771873434.4230588796738048134436522617740026 3.0052340691512552354798348158150450 0.0962765636619618069895800175254804 1.1012318986514679677386729626103946 LT 1 -26329157097211218648562.0949180136706997572095693633061685 2.5110993423449741208880565243181405 0.0255773141958992784123747426879433 1.0259101004788634322169005504415302 GT 1 -44619094635058399976807575816205840894193.9285517460259081848745600745196568 0.1134364969051090929586936047651297 0.0050747828107957290006357613029478 1.0050877032519084757662546751322036 GT 1 -17959876746503716268.9166222486693701005380256563778429 0.5216270112591473553464272172632210 0.0967697400977457630976093024357467 1.1017777637160305292724020477962641 GT 1 -819052043916605780227451547487925038306.1658648929027081262450753766923188 1.0468175708166562830180074367883135 0.0084855897443360201215139117222590 1.0085217973349972680028573366913048 GT 1 -660817458287131919308850.9015349756010569377668444827891839 2.8625077856842679184231586971982654 0.0721511209635469209077983078888834 1.0748864053226552421062468104289404 LT 1 -5414959.2023120971762130436851642690084964 0.5475031491110637174958547223213738 0.0643861502755026088773796344639822 1.0665524413413848018766968651197790 GT 1 -1436254166556871524814921.1477915327508565693291063889002610 0.0437102389817209698050045806636063 0.0731654760859359084622485219167715 1.0759802364551408540553993386550377 GT 1 -399665121416904673020825238684192813885.0005454204220304313848812160816043 1.0458582359706289536227947804059359 0.0010306114807482563875138430717685 1.0010311429259340986287086249366642 GT 1 -961380753977368612444.1473925618007476981066497347192575 0.5541926505142443441170868243531559 0.0545907812592526517005811604409750 1.0561374095168016140426605149168078 GT 1 -891501440761722026930851910803578080.4108756068561567125589172906727693 1.5987663084813596285009279062763030 0.0008688921953548974864433297308269 1.0008692699009846371400270553147138 GT 1 -120316691833.4527130926532610458275610150209778 1.9552699148902118926920731723202177 0.0833279773496345530891831610895158 1.0870055341153916288279686040834726 GT 1 -5206207405484749020445660017515.2651800714347012636039409454201723 1.5310111911450338613262814188554316 0.0404917488119107565038933034630452 1.0413343641048758959299390854468427 GT 1 -1570020373658.5775916207317345799982264311401780 0.2821655786358623948020860259753014 0.0933937120231196454475020363413351 1.0980470047208388083781247489826963 GT 1 -3908440747680513127470898031575330.4424089950999984202856680101141063 0.0310976564413179784711464828822400 0.0710964221630508132360228913088974 1.0737503369038101173014998334291605 GT 1 -22661559612994476268081150457228.0633509546754943224913240777985450 3.3618080916139644675717798303654383 0.0270899902948659281415482841573235 1.0274636885295433595475310390232984 GT 1 -35911.3153562126913026578264941710132196 0.4493429373263621427147285929405880 0.0031045675887097327644463644749332 1.0031093967562409638016216736681219 GT 1 -535328.7284860348893506684713491984037351 0.9902226274182290358757666576313233 0.0722815425031813187954778469276372 1.0750269785449591357489594955454628 GT 1 -1151952888784724281590488162356134613.9112411351937780372144098801938095 0.5790530041723235528417746093717008 0.0842609434957692488088152894995021 1.0880238277039491441219700931750681 GT 1 -4707730262118245042927513110674.5532366520017231138276045911353536 1.4329573110090736082882264314692535 0.0954507396697282746186829137821918 1.1003185142364198259852115180848859 GT 1 -38257541119075286545791363047350272.1191996728380950214449499808625681 0.2794051643373257611374477133986101 0.0837176592420245689584562918413871 1.0874307295332811718751798206860849 GT 1 -52900377394349594698740768660.6036686752909890135818705293062584 0.3715375889024329406778357070150731 0.0398732221387495139029415081713655 1.0406899429673093142121714339377764 GT 1 -16714116133965617254056749.5377223443873305305338182007688546 0.1611462938734797772497101522750936 0.0204266491806521362542741333807421 1.0206381584193783589536871876979839 GT 1 -23235523951148991351450966852035850.4460938851730398932684585924162173 1.1276048153247826913942127749424586 0.0558829565408124488491437517289045 1.0575051338071128139390547719414373 GT 1 -1281767649242698946740373263431773.8132740336724811553953619147541996 0.7346696881382229836583622185034943 0.0537846886840201145689637693685371 1.0552851340136899520380207957921112 GT 1 -8261521.0268630289408379937709400109003336 2.0563842156278498965131042061564149 0.0147728836975655167368255397562670 1.0148830894620316220870297194445855 GT 1 -2613315891507943940.1986417206050603894160924613003857 0.5288588831058205816170802139855773 0.0956367853133610297318349124804257 1.1005242131266184944583788391536396 GT 1 -23247517536832648042807771649.5594837956007049207558065137887743 2.0103915389618277072271442942974766 0.0990759664125278647513475074246112 1.1043343383718044623732785650957242 GT 1 -37469369108732931270683681.7957535462308993274233685279697083 0.1462216551456182547168039898132013 0.0558432554345052160739234586027103 1.0574630836483224258180365918302429 GT 1 -355115177997998290121384328701228.2490729536687792898068314183234183 7.5141430315747328690836896858988568 0.0654225017061226520295012604651977 1.0676607253015226481110481783723208 LT 1 -590736672553483365917889838553650100.4510353095688629304244647317851324 1.0649607854930885086440840902478191 0.0326780905050114144812371614796116 1.0332239438950876082856217543125588 GT 1 -131531037931764709981.3011636555771523552905807424110327 0.3056099552833451337011086393686068 0.0016585031394804718836324172281852 1.0016598799783506160503570721993549 GT 1 -6003328544856837878646201180265.1492949952471981655170565706650564 3.2716326645511711405443097355450376 0.0281149776527967328362741883770927 1.0285177712847359298538238082189213 GT 1 -210.2788531379854455219740773017477442 0.0392441109011644985056638601625896 0.0223237119984634979630604993215862 1.0225766576013387100007398108172004 GT 1 -622628218918203.8780313623838455388167839771625874 1.3566178966076690833540524984978756 0.0648483706029639638865184560896554 1.0670465923635471494523032697245948 GT 1 -29300322480715267964472059442996538.9281676121607534055297811468923997 0.0275234530692458712092958896370726 0.0066867192070961919542626342159699 1.0067091754757970603502395648384772 GT 1 -7919548747800436135469.7364787505641311967223866631287490 1.0841949848872420774351560623732465 0.0889440304682057257339187952050716 1.0931509461430880838900521588736353 GT 1 -110089100582156466386397.5969526185471975557175808590629695 2.0403015338460325039160091110301029 0.0943594749753818808043156532408108 1.0991128231698013636173285843060224 GT 1 -2350253834177307951666413.5166860396227938592013174762852691 0.9053366877342191501608648012204754 0.0925845511252763097003718903775196 1.0971548864677095872586557275248660 GT 1 -13697913459871872.4110562714085605275201023431835018 0.7734511824004823750150419569216803 0.0593902999626224464246533459812233 1.0612269969181790650603520323579675 GT 1 -12917365769847082078424352528374.7115980842674075146528341155920863 1.0885152903944424729762449122292011 0.0675563514745828582600061541329544 1.0699465598259105277055608451510269 GT 1 -53548038441785877490903655.8965582788591644864544433514943986 0.6854523374179105505310051971560477 0.0056322032303491736444789825775635 1.0056481238940473416219522370038527 GT 1 -19749595541440904146846959257304588958724.8346258369746166202719003884788131 1.0499170083057887710129899829256907 0.0746658400220302665148972477902322 1.0776003526760006577220643413688341 GT 1 -24495930975359149.5928185942826543405762674486786618 0.7656883021968296275283303427728824 0.0120388586811099610137092989669503 1.0121119126566362109404714336589196 GT 1 -2190068799359608960759988603034557052885816.2663179046575838556036766597161891 0.9767805260399108489837451854370012 0.0253315015982345848740285661991946 1.0256578674371670333193130669911763 GT 1 -13647609649936.3785168784106997471838093353428664 1.7970783465331378874491476055486986 0.0462492369766461550683756597748557 1.0473528963593039721564644317750150 GT 1 -7.0267194938581705706064354693096049 1.1597803300040234334605085010963633 0.0453976476383976812925442482374322 1.0464604101753692206192174701546684 GT 1 -4313.5954271954500621216438273762339424 0.0729980912419457468373301038243473 0.0134171110158518329054036041391619 1.0135079337505463040930262428754952 GT 1 -52262221240948709668846772.9764072179365375998468164675839140 3.3545069803939687014353205735449196 0.0912941108642167913575616600483873 1.0957337914657152094379455717959344 LT 1 -18784064597225473170239364871799378.2705938940366378213687496674104880 1.9018539515854636766873113939139425 0.0204729195959514620320668941791628 1.0206853948086624293684662359624883 GT 1 -513836745138.4710013514255722579719996586095764 1.1013509515560574399398030269164123 0.0949644095135714185991830963727994 1.0997810095511366553465445944625848 GT 1 -8070884568743989260382639002573918049.1369938094494509289756675463229533 0.1686679545390777263770571223273260 0.0308165835636943159343536389154853 1.0313014007553803365926666412903303 GT 1 -3307004275751682336357874915.7410768962586717402174432907771281 0.0011450035696907532704290334471550 0.0839056406142233858985942594719031 1.0876359071835356610366386151378361 GT 1 -456.7690415474322151583029900259582016 0.9986557171283692884304647315317507 0.0335849145698717186725882513496235 1.0341618419998602459138398994855678 GT 1 -70320429017.5086932114067717284519821969989745 0.1647164437995167352694607038052377 0.0079275622270115855691808186942812 1.0079591524146599331308933516379460 GT 1 -85805048436162492107782705545.8272417644833250343990205783639800 0.0636517765617581424702179175306894 0.0215286992824284193303367415636860 1.0217638224508705438341002207642165 GT 1 -61527986980794021267411040817.9285455363536012047731283114107337 1.4814791871251725858970688792625041 0.0348779723571554879212803754591240 1.0355007321218219646331368377613097 GT 1 -2247600791411800683004052570618681.0364631575366832901397171969259712 1.8979855979518466136674360263367422 0.0191390863903053980994605293378126 1.0193246096829172603029179175452027 GT 1 -39368193640367966.7403900977704725147739223309217459 1.4426016106843120399129230336607885 0.0926773228226088702308514916668933 1.0972571289853285865198786283278746 GT 1 -52039016.5882127026144570984500245199320297 1.9096152100077494002911115300183043 0.0648333942617084011360009775648692 1.0670305776116460653932423003634228 GT 1 -1210333009436721575852703092.6173819767385648265061217013243128 0.2578128853056141727368597924302660 0.0066109813360533981979819273713517 1.0066329306643824963016184128746772 GT 1 -38059937319717267533744.1983036383571838536402037535974987 0.3751887072786565922830811848455497 0.0563206339667524669068010863538535 1.0579688251581306580373074910095917 GT 1 -205570845948548859856548965.9898079383438163978698029166819928 0.0181826821381011760297082817634830 0.0127564622752337622594201210297544 1.0128385245701354275036430157900292 GT 1 -146740.4072698408711859774338656423676586 2.1545519920687356682436288770458323 0.0645000010733702656211260412614550 1.0666741344153687652758152848617775 GT 1 -22981774202165780045639947041823219671.0256963486954465589604637304804405 1.6321888911318384297401847612279660 0.0053434833525975839629728755244340 1.0053578108216209936215622129695838 GT 1 -73175091988555.3001432692270877750474909769116362 2.1844009247896621997973670321847566 0.0445445267589702781669519242507205 1.0455671168679911018610194047010052 GT 1 -1766011777909924.4178420486167384662860732109371494 0.2863762375698161498198195698188696 0.0939901934594931980183432273998723 1.0987051490015923729580736515842087 GT 1 -5233120148490589091178656937744488.0590088701934189278877992544929200 0.8161912669328681249908146391533280 0.0300652888559880897860089167632200 1.0305265178489570809924792761011153 GT 1 -938568845691.9906665709291207067887761710819232 0.3631584624639187157989390247862319 0.0855540443821593455417350767053866 1.0894369100896069124130179279401012 GT 1 -290405452.4698290508662175803842607761393568 2.2592050089658500309598958493713859 0.0018336341738618373314307253011830 1.0018353173388575576045212657322870 GT 1 -45135071200205063637.2682728008669274637413662071083731 0.9410260943381278065118956775260067 0.0064958611582194763947341798511335 1.0065170510786807067923803598991795 GT 1 -193946226854.2301611116607459438306437175110626 1.0170190853163899253852974820321527 0.0917539979200698861944039629511968 1.0962400096742404279968151538134915 GT 1 -176635429063003364101680.5639943332218846179290043280907511 0.0869100788472264622359436230612506 0.0870586679850357733149532034157323 1.0910836589239419327446753398034493 GT 1 -79259377434093834747254738910993.4151543505070842358114459753524323 0.4383196861175184600410466919815290 0.0407209903594545006069049956596020 1.0415733083102230221244002838504184 GT 1 -109304.0494907225994983402465058078294759 1.0758877811216754275825498401750988 0.0125704810399346077064336139379564 1.0126501579590455863561575463229607 GT 1 -574972917755653727494400655.4917511260797384761670340587450403 2.6541738018829546829821171441171708 0.0192138072772419271038595897040739 1.0194007914657990621799257001377352 GT 1 -308841863008721852292.8828853585473641377706545018493387 0.0196344059392886255498633815698538 0.0118783537872603976610429816387643 1.0119494651162646660251552822713057 GT 1 -12494648485313494106.2410694005174026533680110121268076 1.8940123292312949684668643993596779 0.0537553141307888405346446337724644 1.0552540902365138698527767906856113 GT 1 -219446394557808805054900416612.4352678013981965909911675608636035 0.0767275536848634144660393914391407 0.0480910292537859105386506945887842 1.0492858677266171480708984141771595 GT 1 -850172827.0888331637872309491256084664829903 1.9884050002085072098226686421334598 0.0412687429435589381497623085966685 1.0421444758461913695745708227282030 GT 1 -3511921876956519938.2779093195364714321314144973628089 0.5547688980831283046505312916970235 0.0025801802455580491285818685781428 1.0025835146474146345193249276667862 GT 1 -1997550074271503618791456282969.0415386306038926128204999045055787 0.0786084814652192373243967086349275 0.0307920001353205552186300114061373 1.0312760359831590572867610168053890 GT 1 -8189090160455555451907866130449680.4752192513115160799513758264633719 4.7674050152674842391002208539973103 0.0907618455595369863619784436952194 1.0951482230355210752631614387164790 LT 1 -75751.5996924033925999662615744328113564 0.5916580148655018540578175587775351 0.0744809429385927328769093178085880 1.0774005560823535770093870537420792 GT 1 -6949357808717835548517761636173993.0204086413665262936151479742938946 0.4853501876831608824368655204865353 0.0190502519204865948753335377543724 1.0192340459281020738597621473039280 GT 1 -1210021156226833559732007977119016937.1253280618721214328172190692182142 0.4668155547106648153637544682912910 0.0916854955607301457598562773801842 1.0961645898254367433502430803845786 GT 1 -7723625788.3631694881744022201981581188086857 4.7035141248823169194935139293669389 0.0115574150671839852697097260942604 1.0116247210802857415299040777007434 LT 1 -31534307127.5509344673911289384225413837697733 0.8592868232799965204596578833848210 0.0044796583522668249661882697668765 1.0044897220877208566819686450390735 GT 1 -1094463025887846088672525852299392759571856.3880214220936390133465544145778480 0.8402675061225892896275668295092622 0.0278487413363111461099969613923225 1.0282438707194526531615745689733978 GT 1 -10269328708579019885419723178992238408841583.5905926656470078026143622441288670 1.6053170773419081375458903822623377 0.0013785067373780448023680923657627 1.0013794577518776133805812527143545 GT 1 -12713129663830444840682494763206915927.3269862965384810081320123838840912 0.2879244026227200370615952028845430 0.0711647844767978177727057796297028 1.0738239342405532585343852030114856 GT 1 -35714117484810812725296034138557315.7685593791318495032639209629399518 0.7637453961550481204817511220601957 0.0349782795168295377432249827918861 1.0356046696237429899863184013953644 GT 1 -147591637550629738555956003556266758.2098822057930723658972565118937644 0.1951669813808636605410245843880850 0.0633844029096072031701570309479408 1.0654823294881665487161586156260677 GT 1 -18.1692372065110834688603623830943200 0.6776439898462838219615458674625348 0.0612171857889080379088952750031243 1.0631711212965048054505309974542926 GT 1 -201495988391658787427.9762398489803235515524132840569804 0.1232825379905648128796908429644071 0.0086053223085265266002917435088451 1.0086425618875063078784124150216725 GT 1 -5303488851578176766862.6062492601130727446884158585985848 1.0739726703963805146689833052783057 0.0247505677937223942651207703468645 1.0250620127987935446016052515701740 GT 1 -1118.4120540941945695767917981652514697 1.2855751651338550608759782201764825 0.0104310497844991118099615256956251 1.0104858344919953363757546732681407 GT 1 -2483612.1675021522946783373937127342155617 0.5842631651426028646082700833409377 0.0449977701057387681447361660716424 1.0460416035363200294778177805435357 GT 1 -6801602871334972443309015257423758513.4319949231221665713615701785329957 0.8728115942222207366196549179859177 0.0789539266316652563017026230871410 1.0822452186052727016207348687113928 GT 1 -22907959436965597.6124524677342599744877293078423777 0.3395027115722590136195498253932233 0.0537015404261318424111262955393915 1.0551972633104795049605286015113496 GT 1 -13870049506997808013459159057770.1617886965949771006334986519081521 0.1931716200570102221860628066036639 0.0808945728844167193559178160461188 1.0843544438203795364638810350177046 GT 1 -3709436242350707.7522402563508097363908039873358669 0.2967077402737040265764063040478750 0.0201179864631403109179696455451002 1.0203231089156441458665873087064316 GT 1 -35773117716800648296567111515038891157264.2001652473377583963365084722413300 3.5658635445110020757870356511451797 0.0536487294939878540716628341231402 1.0551414569652077198904707958734536 LT 1 -2.3063176950699115127932689665174946 0.5752164117222357846730526541899163 0.0926176095987311810252423895563523 1.0971913185955676592454434215488271 GT 1 -124554332010.8038706170754967433990553230387065 0.1848485742001992938295856871754907 0.0890433920708465787953089499889602 1.0932600141088842549398475635470628 GT 1 -323341225529633333703446887.4254980803283385935548881047896258 1.1849484767444251051371602333027395 0.0167027559225305802492388664110037 1.0168438199280438358225334096866170 GT 1 -2701442169531416567514709511875198.3441909987637493483174222064548413 0.8058076975143574033720168661447770 0.0501209238848700822935443650803620 1.0514205907892569395044011779716402 GT 1 -1395116389552998016211017657032237192271.9124688936530419674219806971729771 0.7418929582437051117837212403848400 0.0035732963066284037990480947146047 1.0035796957792319541987732730382615 GT 1 -2107075798748104.4475107394854703980297313395806932 0.8796477392630974181905920861849716 0.0526634200901784929095848042941057 1.0541008319302960823421252753645307 GT 1 -357798987470514869681696311.4639842079898815798697566761299913 2.9374495682182226981511389960764587 0.0812780619343903600869380074335664 1.0847717725236134665720742781762208 LT 1 -1537251700347.8655305165589800380842245975203440 1.0871840466455585360216099232028030 0.0840165118644326837618355206657213 1.0877569405233521372784116711900209 GT 1 -5507340734595968800404708149005.2439382768685131241324243550001035 0.5158878240777836780702830224978173 0.0541835487397938083657649476034814 1.0557067549077696504473364456232488 GT 1 -70099363728833389468436818824.5267675302152951875521259721847227 0.3166161677219498543264267273173679 0.0438614008909823334893379817125230 1.0448523982915437358015549228248915 GT 1 -262570702876796325913199366244.7766264353438724591762169074397986 0.2666041832826385666241846140061396 0.0105613612854949325005642491820035 1.0106175282782274669173467924286555 GT 1 -8687038520285053947231384596504448510.9968970496595919276285405446459109 2.1088505017622045032886628414527759 0.0970861465977876974335942212205639 1.1021281305565810365530172604703184 GT 1 -3841794025404163078603089288385.9251961430621570915870898821890682 2.2122592219746877463288088480986510 0.0997873764044175905427319744033297 1.1051242951205583906274736119296153 GT 1 -2458780393298517.3008479283571130362163964210305822 0.0871086444216294003050101970557821 0.0116050496975078359734531421466856 1.0116729138421936138244104490559241 GT 1 -24579615563417829012891273704.1409341219426043661686276171933668 0.8199601243121381010117606038012866 0.0408969451820453398357049666891616 1.0417567491652478218882859835899721 GT 1 -1426669426477913541121.7083613207153188320398145800402044 0.1855488872208010772814009304391193 0.0517522261785766533764537269907589 1.0531394460864109106721631674946234 GT 1 -1007591044692070.6795364934322424701705505086340245 0.0121390226821475559551632936613179 0.0766262438141527405373641882614630 1.0797211901644960486178563435927915 GT 1 -33596784531317206.2785269507664657362755844230610387 2.2766747593276088279616905424524019 0.0145357547372325366334461834165699 1.0146424338564891196662487520939081 GT 1 -3234463419767.0729096711193450173775031951031606 0.9982353932728184762968297113633094 0.0031852829921823315036567358717110 1.0031903668045102317131970171029193 GT 1 -19861935434770200312061972531.6091023178657330416019981198074252 2.5854259247005205103204726254915213 0.0233463978644487488396693540671403 1.0236232423816211711113345914588128 GT 1 -713268940917215415520352731655923643889.1584636159480555680203549687980939 0.0878069517067711427018118071227302 0.0171837543723028899627244580209540 1.0173331085290192472221098044492053 GT 1 -571259278973200749666004636100254074.2297959970430394529191972243856749 0.7290373234120889746129772846077258 0.0673184462131942479026724914145285 1.0696914506649985108293939968480675 GT 1 -175313625017120695404516736132450957386441.1466645291783971974389601421943284 0.2371787111994849021930808975802754 0.0641565383781261419458640127139658 1.0663070583479961788093223791963834 GT 1 -16260.8787551669414888398976837813945371 0.6871214547252564154728446153966253 0.0985698141597814447574324281760724 1.1037726815558507466855953170347365 GT 1 -128358669625755052040945738176168030938.3874978986655777450815839495879571 0.0420420232682752891390891179962218 0.0884728921296780421113424099963316 1.0926339454588795595698433056741604 GT 1 -59074508529700191957310954.5466564031959326118865496346058634 1.0095617971095157856482927032655410 0.0405811244681012445551993240619223 1.0414275157988726192022069344608316 GT 1 -67297273832676.7003164800457896187691095256244039 0.3577125205626709668751739096808665 0.0826793217756735429058880778037898 1.0862981642325136035440033198742278 GT 1 -8039800.1131327746603496244442622148337880 1.4960070416356867900900202960320695 0.0923877451587274053368019128884785 1.0969380236981581580644850377148438 GT 1 -320030617576622275409564859887041.9468051773895257260382248339909325 0.6172115213793847871871736698735474 0.0364715716407647383441753746123884 1.0371532862602018685056739573383672 GT 1 -28838179072852566764838.8033609487173585133281474476048305 0.7605354214071412382034336482798469 0.0910708016419056680184665813736473 1.0954880774332659901959354138750940 GT 1 -8806246946778933459320220335306.0445952135374034857627400615479469 0.3229748850402345007607984276669158 0.0927189651055563060699750805246226 1.0973030258196376054652730567361242 GT 1 -1330187556433.4656501926935623252156680449605692 0.4585506527302922062945338729590040 0.0803289395729913612380457584428675 1.0837392158869154062702601631867861 GT 1 -100137543218182276041001249543.9439582812227477977120337457695583 1.5245113168174189107031870267006028 0.0218943873105958733654834594880679 1.0221376263426774814529765923609538 GT 1 -1467.0815155659838101751640315852076315 1.8726162313510548554221908711832784 0.0060011621539523658015354863371771 1.0060192414952126575485934522495972 GT 1 -68023797549.3497243980586337695942379306413605 0.2160272639228046066104256841259940 0.0793197180183491336511343933808583 1.0826424452512737436275322456241158 GT 1 -2945789108115422807065334371542971759476661.4801008331267019815294904924443878 0.1270093670369795498013991870619971 0.0116582007736077289608806673501756 1.0117266904273917890903132951243581 GT 1 -10133341681968542967929062312.1427156366847708797989335422569359 1.0605973204732018886740121755586796 0.0936191788310107619301439811688413 1.0982957288379779407751005429389270 GT 1 -343816773636845338046061565730906956481442.6603436005714824912617074325284383 0.6980105555206062309053552623882173 0.0569756784852635115470175168546888 1.0586632050431694533087397217417676 GT 1 -1897697184006524193.1698047414661547545165798965839348 4.3090208460889390466003658423659075 0.0658159296227458715449267983396818 1.0680817826788054350190191513622902 LT 1 -2613554366013288.1940950013649901614713044788448293 0.8407875025128494794817512323051088 0.0428437722956832034693209718146959 1.0437886535126458441459613839438429 GT 1 -90788462188747988298171767.4827148758260293459014880600514383 2.3426011205692036606221871403842718 0.0638832845702106839610848800553998 1.0660151143064443462565231641274250 GT 1 -5223035856898115811862269349255656.7099975574234988164039941567125775 1.0236956365602382450517225419144223 0.0828328724532461857767269047150617 1.0864655686463758115934550926245479 GT 1 -1917505396954568.7251882081636019897384260798945318 1.3908809037800953570154100688867729 0.0752609546078946886487018689471410 1.0782436943607112412706772988396564 GT 1 -93872.3503921283635305749311041720404700 0.5001452542703830695153435532085382 0.0541713712550870704556239219623101 1.0556938798871480514170911654159571 GT 1 -120708528366.0754405908224949190515062431816207 0.1699692614032432024258787647048059 0.0728689775188930328718734348075462 1.0756603830790657840796660973706986 GT 1 -6693865870671724701797442789.4735683048589848520409067405082593 0.2397333877533800421265393271040260 0.0825350610552126685202068448497967 1.0861409134677286421418852961452795 GT 1 -10231529986496525.7655559834785759940213219133329871 1.9860094215554444669081071475620777 0.0804366209102170299773699365777834 1.0838563095374420822134915404261365 GT 1 -1164608217769259671649511250953498085.5631325611874629370185826667336845 0.1734846876319065531526602018683078 0.0992352491587438713760449011448946 1.1045111533112186405296747086529698 GT 1 -17669495640973013713252393775.0807793955057439985382152108214373 1.6365361814902608880664113595562024 0.0283142635490780596311924945657486 1.0287228432082330376271691259928449 GT 1 -167389.3854286595388863932955195213241544 0.3455470505561756634106863072366192 0.0527382833368096439342340759399881 1.0541798600248589540817312736514589 GT 1 -77703233304454046545130378911572.5417355389057929443154467861234951 0.0768820527045259936368176645254612 0.0704275925866492677341042227696267 1.0730305755395697768775539065744219 GT 1 -519312583.5449802208997956196489076676129063 0.4891306620556517125890604600949222 0.0149075878972907785625637747966183 1.0150198228171988076976731089065140 GT 1 -3362509136165315150.9364947289108014568485740391013134 0.2518146236357589380379579847709828 0.0549210155793359563743104728506334 1.0564867735835965992075590352417655 GT 1 -778711.3569349106161282791171786384787360 0.4934781619712395424859424108426687 0.0630695027284525028332345446767785 1.0651461752989873984521201905972032 GT 1 -213429233971355010858396301265070.5563563744902783278924063504451160 0.2071738436132097109524046722777102 0.0880288485902564892857417387015182 1.0921469216342735107124297487005147 GT 1 -31741688626970804327606662.4923085049336464214417012390937688 0.6233929883091079694527821061741282 0.0821639615975092424340398095952049 1.0857365117185427404036618882626749 GT 1 -10.3526619105142641963783398938708476 0.3855186565256301628390477935269597 0.0535413693112660107338125721169732 1.0550280169596697005508706489222907 GT 1 -281827164000399.7563296211263580611896405882622694 1.8562677856776629225481796922526571 0.0820228968463393641932198281242862 1.0855828307711147905029468044106999 GT 1 -225.8311450687607658661071695732732033 0.8311093844419790304543140356115135 0.0091743908922269108035715184674384 1.0092167348017117505311064928371410 GT 1 -4135514629670.4691927460889761694591260288367950 0.4348840574079087646532191057061966 0.0717090119215109792474935658674921 1.0744100306073339424551958576247268 GT 1 -779705052052104873570634142986.7433451799715361764391851445824785 0.3877675009948150546827546016294897 0.0594301738419510884243019505966155 1.0612693893414213656497521141675188 GT 1 -865918355.7541427443173390404165317656453013 0.1047998185218452316884115542418810 0.0795491700235193228331162807845171 1.0828916963826764057889493072192161 GT 1 -2.5470552614489527348674822679341254 0.2613833012246505723855184826075378 0.0816785186629215789544542377939499 1.0852077521315473954172161795373504 GT 1 -20.0529129506275950476306792531128914 0.1491749156049694526159531774253423 0.0382043613102814508613322526771677 1.0389532846781565298769855880523721 GT 1 -527070342977887563674529.4700606032828775856785400862364053 0.2223010780939946133704701331672264 0.0641333105010549974252543634444484 1.0662822383970455173424327731311707 GT 1 -2790215849945295225761434293045172084.0797663052013723030296886139627487 1.0113335460267716595612882731671070 0.0391484741737764970072255628287316 1.0399353816086840233899489655254778 GT 1 -75.8803424457872513768747189911302949 0.0265691865113781819378512084686361 0.0894120204910779688679497713061238 1.0936647567957290928701976564629134 GT 1 -3.5648747992389091923973119187771162 0.0804805266116647547316356301953790 0.0981841723758840386660375260281961 1.1033449620024485324908116557456098 GT 1 -2278082297346154287496382870272.7030572090793759992360868818361650 1.1643157817052890385352255214800844 0.0096532919521087245017979850974082 1.0097001870133770146951707475554821 GT 1 -136120323273875680409124489285253.6150152223448571376070164546403780 2.1042063945797187432139959446518368 0.0724487480692135560942424683839816 1.0752072278808215002580991755388117 GT 1 -111486773618148723223698041667.2539889240471396535766376836387070 0.1519857137140483530180895544545396 0.0928290070361829674815796856448217 1.0974243207660699651556844818288545 GT 1 -2605086717918.8461080718897875430214219149114077 0.9589406446610176714610811311912461 0.0502822662943168708200426720993013 1.0515904609522311348351689633405743 GT 1 -18742324050498897120911501240126879.2045812335946580064350418003775236 0.1270100861749690608620248691282428 0.0092675979538870185339211431019612 1.0093108093240867703976609506362151 GT 1 -2178039425209796658.7138245936028841245615015887515435 1.0706187854367534927637162732759851 0.0998166747474324024311823063723043 1.1051568416757049321660054699868741 GT 1 -2876084347127071586347993531103520317.2328373747870119337741462795834868 0.5588054110394807046514744800980570 0.0517307249954852991426332215630252 1.0531167716969498868449551315394744 GT 1 -4612496401494053058769.0754520467398048269894427793621675 0.6232195638096918789350739521056139 0.0685398046649233306869828256287954 1.0710018216462479628537785688639416 GT 1 -34236896193442572308235770188.7339308071723575269733995839692199 2.2321139583412090583495171355345079 0.0275898430174824385387665210358604 1.0279775913226947665706202228887868 GT 1 -462263069493475501137674483.6537802234567044797118483514525301 0.2540173226291538664446521173582231 0.0285616980842676954235835735001994 1.0289775202454591484131210245153411 GT 1 -52587633.7289727458535007931886674385363594 0.4581019227820515292821207810702425 0.0357975029683432244439298421487033 1.0364539472694582891526751952373566 GT 1 -302340.3788483999400731268399879807900516 0.0020857209142651104338353841966109 0.0438244063854733269745745657183487 1.0448137074679809681892050954034836 GT 1 -160462453.3040025843845208748092319434038544 0.6538484436386981814635600190465175 0.0585535838001313901104920006833103 1.0603378457282678679072107872519465 GT 1 -514.2557356311629471702213186164999575 0.3631514466404120633423408904844106 0.0106693958358216369454906713097841 1.0107267219609399403483664474398844 GT 1 -25042919903741536294150783033510190627452.1063547196326232189098808646636601 1.0250240918380307819572430930695818 0.0169155621612493046226595882662937 1.0170602644174393494489612746448954 GT 1 -14670388.8122956023016580865974352071994978 0.1803549943341151297582907328148198 0.0319738969590688260827078671338615 1.0324962261177595867183916176463612 GT 1 -80401202012691975222.0715941235830215619423614575676586 3.7607378615160149187213807075088193 0.0297245212803715175787787663690002 1.0301752491246706095530880670544682 LT 1 -276345314086527692044041.9507548147150306949059165178154934 3.4949163950674393190053780193254508 0.0025492864710478328848704418511771 1.0025525414348705227826060259287306 GT 1 -4089405413869566955986.4423951325890964249507398305787548 0.3282706155070080036630903681254799 0.0716502503815762494786310937174926 1.0743467318347052202994034192579420 GT 1 -31171445996376867458.6972339531972289385627845467730316 0.5460793250021809972560321594189990 0.0797812889446072997378412719744523 1.0831439077841735880968688261278812 GT 1 -3683615506811746240757209795.1611598619789958505480139596358424 1.4599155181178059138763465250335365 0.0853334460871779952768408959338999 1.0891957020776322829409713707182287 GT 1 -1785.1298982302732116176687727982682398 0.0599089270198509272883907836724117 0.0839395784411711969404203528289551 1.0876729540829621333489751335818644 GT 1 -84783.8740165888044887662633880352136973 0.4710608720596835938880262097484716 0.0194966549539522616448015519768766 1.0196892217798596738573536985340437 GT 1 -68215916442548.2371551138241868767182389933878997 0.6555312417596588704721634702885897 0.0864985890378546565122787665303502 1.0904703585980595744945546647738524 GT 1 -26.9500236235792769868216054300591378 3.7042416853895803122230094276684370 0.0104051648593207558093836433466250 1.0104596770558383550393913537899794 GT 1 -24383607.0397941684513643366360133814553312 0.4851060313085410223264544176172099 0.0003874197189834989826800572912225 1.0003874947853915915031541262285120 GT 1 -10412553.3148320244089599183317548366867109 0.3504328696498986379089552379185639 0.0513255657944931670422255024015355 1.0526896011855784134394530848054716 GT 1 -4187262284059615.3189902804779406868666666510445644 0.4413799374444485053401735758484131 0.0269199778256553646223498747286157 1.0272889574498790764100023227908254 GT 1 -3101607425021946576050672827032776846543095.4253053558665536012502649585229080 4.3379234630318269622792626239191966 0.0387167590770789820666010463147469 1.0394861778260719458408472390989937 LT 1 -24727550105734776096356853395491002842.4851551727899755820160097565247083 0.2103896558903907212562922671187838 0.0544136780274498398032572831233880 1.0559500973539671894703485413457364 GT 1 -395599264842938.3896406059443196753731274704229109 0.7653246937211296704655019889462512 0.0443344735973218882506098968519655 1.0453472949283720051164139963142454 GT 1 -14.8564384517745628967320961491218103 1.0604447735597972235224864533009419 0.0193050414216660950967833021309835 1.0194938172330152741797227589112041 GT 1 -9581773636893082890110630320766056785.0865498402285866001134113397669171 0.5607274035250093751274697743959862 0.0936885379819438643481965612868486 1.0983722549550804034228567164495971 GT 1 -60312688.1865542721119878160724463950617269 3.0273265205686910409574053317034455 0.0415392796160943841205060879492578 1.0424266976346345996209247783865694 GT 1 -305430387684822447722810405077156767761295.9174306098133697454037435361410609 0.3703104603951651534515632585438588 0.0806891082692241998180827915872789 1.0841309203301432038815505772478921 GT 1 -31.3169970354459585825324828455284101 3.8761808859339430001374574513132756 0.0853075171879324595445044060681090 1.0891673545540169157781841716099777 LT 1 -39318980592678013.6864519682325360021038359020130868 1.1497157557596861425603195464622562 0.0290384974756805772110853458379380 1.0294684587225940047750147885661384 GT 1 -22391930229375785003713749.3457263341503179730253623010998113 1.8658441773271713105012559336648820 0.0690332244041170265645430450690882 1.0715316891346804484281639947710195 GT 1 -41.9518423948565859732681517096296768 1.8124122588005231405562179636383252 0.0956709388112364716647349190686182 1.1005619790841946344477760540823356 GT 1 -53834363259437043274802.5315292621646080365434220657471914 1.0044801899277276657934594169567235 0.0922607481826367807228969632953498 1.0967981092233779517127133986373729 GT 1 -20907.2227559291871480206745793046662131 0.9311985257260635617010371796701039 0.0899762671529383602657971720059416 1.0942845997596038751812842083475308 GT 1 -85892764593891367419956638178251357.1724217054992893751597675979582115 0.9865361047219524595638581539575373 0.0371697437034803618547490273819403 1.0378781482486224074574127263182690 GT 1 -1346569742250901002724457932833244083359866.1270210729467228136415980033621658 2.6044414567754264242248386895787728 0.0472433652512456452128368627726959 1.0483957754646901835700950433447689 GT 1 -59409412726193517340137.6721282389471532323350086947597674 2.0596526121780303105590974428016183 0.0982707336103192570641424284837491 1.1034409520997175077219615456436802 GT 1 -104788090699021696385.1190587793717753470946605562925982 2.4687168531551205752813965743050181 0.0216150834355029865091070286138973 1.0218521111584084552917214973697577 GT 1 -104492863827670383726065223196038799.1668473386855894926171582522792310 1.4696743698248217758706102378252072 0.0218667371834392254890119223212701 1.0221093576813143974492775171664137 GT 1 -1120070516780185504032292609456827.5832948949012217736648437955484112 0.5458321912449531030797744705015695 0.0384471670701704069598021738391828 1.0392057670179525566039333571514179 GT 1 -28865551079925398061646191161.6138592674761046177979216863403489 0.9477219471635540255963637654880808 0.0979623862954560082955472040209357 1.1030990594513163837641892533915806 GT 1 -113401170629.9221450803989810591685119474659892 0.2836505269624820668271177152665939 0.0590878550345776010793293981591457 1.0609055072352895807184039496694845 GT 1 -883223346698876127131209.4227088805303244426054419959980937 1.1037843340041494324208292243361074 0.0965656316926364871979554791261828 1.1015518131961712703445324683168558 GT 1 -48747889544771663477762022832.3836288377616309281200361081671055 2.0891216514434735816493482762955874 0.0271520072690263010442144446991492 1.0275274343541564180132168691505941 GT 1 -6086003538262278457979898731214186585310.7081312786932425535775703679250864 0.0435307159097775412942849187896241 0.0979116221704487897473581974161152 1.1030427838638476286069665399611482 GT 1 -29678969097125057082969.0759665602687845766659577439019902 0.0393536316262392930528148721146423 0.0587090416315835214759064759858861 1.0605029859479345357285633353783785 GT 1 -13489490137482202389051050054349548.1580348351139526759203690801448847 4.0907951411701360617530693503482912 0.0960017501286592013829044679830412 1.1009278545748646628105928966881334 LT 1 -852058411744647025494883729316.0002263444874554131704663412149628 1.0537264812126165491087294586159787 0.0282845559524905360431621411183364 1.0286922704197754137289516098895579 GT 1 -226654917014122514.5116294941901706388740856907775758 0.6027107038291680589400647658489052 0.0855618163309522042111130668008764 1.0894454092051341932849174155806482 GT 1 -626576876394417931657053521.5728884886053206699977698853425171 0.6435255396835938637072458555675739 0.0549307459634898028943109558534621 1.0564970694788665647657870386201748 GT 1 -40387999420035557628933677416649491358.9574693215745272999269080892948509 1.7413480773675330302691210826242908 0.0083311985473436606415677053194882 1.0083660969474659816536963792682879 GT 1 -4052489261.6965152361267352202411935279674152 0.1556448571923882175855297544440336 0.0491082357843455676471756980450193 1.0503550355157278807838733246265993 GT 1 -449695364680233880358388216897.9134414220787570493030692760939090 1.4250582726670241980909861211378396 0.0320233108692940824584517060695057 1.0325472734720669207234980752969210 GT 1 -671570.6404439226930910998531959302152327 0.3843728610668189638606832735356249 0.0354373258626422684155506381119709 1.0360804677860338544937999218781548 GT 1 -19762201801205841207.5647436654358908659003400664176256 0.4062119119866488106869803479718001 0.0476405137770776262010898881142596 1.0488127038893810897695305955480175 GT 1 -4914964960863187.0127272439263073666139434244681345 2.9257321708253408603781243020045528 0.0364856111650586048885201057099049 1.0371678573160900369373800102710055 GT 1 -294.6847037287088757279582760636905208 0.8468902076183282703102721443644947 0.0821892044722884702845524398166248 1.0857640146938582839644274131719331 GT 1 -2580836673498115985.3161998287982206424076010550719141 2.2842502170276641626306361732902210 0.0915478661609051165763729699201880 1.0960130795574820988177653514239280 GT 1 -252263991185476729349748510015066470306.6603537609978725618112996607517858 0.1956280229096754006992022352607183 0.0091044878866619239872876452473256 1.0091461870290252428727249071452283 GT 1 -1484484447.5120866577888346779919916344621748 0.6304652193282825918066299761337923 0.0488264725412682165962429142145365 1.0500587646712183013620174108627679 GT 1 -50575678.3912547914663862681378112224666556 1.6081733886726625324428532599196728 0.0365055369368670500685991939260595 1.0371885378353201678830944565464645 GT 1 -1024781968.6862089913475799335797698839455577 1.0814487725585751892885043794589565 0.0408067819887712457732222297592787 1.0416627457575181987682904985277560 GT 1 -5123.5721914375909596827173945312198100 1.7266298272362290444389693443032412 0.0714264632670260747001390016951780 1.0741057018284809953692959020247104 GT 1 -613901115481501318895042.7603675578831046688533815503328610 0.9180128837498976440162853459252290 0.0988394809223829552728185641036520 1.1040718806628665777617865316834737 GT 1 -2635983563.5821546798671364429721450237376794 0.6307458389447190299252529809427420 0.0427011861963428957713268306192067 1.0436396961367738664571048210555392 GT 1 -2241161278491917827719128.5803002277284317290768839762770585 0.1605837836071923702690512362273173 0.0717226930773146981918538920864640 1.0744247687194096503227084633720580 GT 1 -91755.0600577068450546374718656518307706 1.0682789281429377707424932822351293 0.0047570096172707500699202462349780 1.0047683601983751122161145846383615 GT 1 -38747190086632300205.0008455588618706194830756145960500 0.0968702052947348619727146208305467 0.0399794253569910574519753247739288 1.0408005628301144595431807300733101 GT 1 -282293160210488.7484788865528109378977290411759963 0.5288829540767924871640666902886756 0.0324472122470887098643796750757625 1.0329852945816753496106173645505155 GT 1 -25711755.7272378986134016850761880295592853 0.4507962069522543527283087792460793 0.0780196113118335147985451593306171 1.0812313260550516063701671203688144 GT 1 -4079718437140290876037342879255161131.4508817828733420366887923774492224 0.8180915721557102081320325518534685 0.0492061522975887593852061579482858 1.0504580141707863920682658482816048 GT 1 -3743.9066867151793128382067301171627817 0.6659341844135239216653000610016162 0.0639882250000775799577170834181754 1.0661272224555519094735628493128134 GT 1 -37224138184535130587365660279570.6878885668332707173284373232833669 1.3898528299732304712812615279954599 0.0068010250014744048933520560515530 1.0068242573678630394059718581203545 GT 1 -9934.5250638969971977567690197850864993 0.7525424364017179052145049384364218 0.0476579008450726437316373775033773 1.0488309608889331233037628483939396 GT 1 -62627436399764514234287186070632449426608.6161888233783187903367187964037710 3.7543141910214553489302101615200651 0.0007652992681797274189022597390503 1.0007655922591580570480887120287213 GT 1 -2194451180063046255744504809729868655.5021176574027472979339872129279543 0.7343903446700339665069376346346530 0.0995775954469323405696519167694845 1.1048912873703425469593405116214149 GT 1 -187858198896354.1011196473812557292923004150813696 2.5460092473964513551883947742949681 0.0557978006460915986704759458425609 1.0574149415421102961342994989852646 GT 1 -4806.1831749468309952536971135143143083 1.1695835383263525802832872601892824 0.0264429258331062734959952575498739 1.0267988280847336363424509910726756 GT 1 -628141407599170570115505777307471369909.3881423473387944914465509801688247 0.6000999005971033505222992188717796 0.0122246995954360112204014197561663 1.0123000358404268792471406760067143 GT 1 -14966701618379957859782037252019944.5555251825191950032242909499428769 0.5105507774639444837407995329873484 0.0225753970966974510726454856997366 1.0228341226772282564758868080928978 GT 1 -14262605.7038322557065963941919311438977752 0.8333822181925323669358448061395573 0.0045030305856311474111891768482529 1.0045131997674331723592114253554914 GT 1 -1889713414864406.3670330944127815874011606810590021 0.1017293534721487274204446841893738 0.0157446490687623488270201070079862 1.0158699126160576068025099189570951 GT 1 -6405.9546344658811850365557888557477383 0.0118279304140449156073495800054757 0.0780569888674867440448232980217659 1.0812718673873672369060355333001642 GT 1 -382227394477823253289215.2461421915132171890426355171754128 0.5204814758564631292018419179594375 0.0503799108303767536417423482936585 1.0516932805085732369108468437930865 GT 1 -349525675664890284474891571.3612374866900254889303154585415621 0.2854900254705117622639063219739449 0.0334023118946512232311571971360959 1.0339729113541204569093854156868407 GT 1 -72508814509544296367.7233790234233136153974953118389849 0.3538656711211918472906214696951544 0.0263138249876024651364987441635776 1.0266662295038964665134860812266030 GT 1 -11710392246272086.3488005654573865424785435692078199 0.5813142945799823812846485921676810 0.0552167004979857914974973720886468 1.0567996904808520051418471508017775 GT 1 -24491019170934.8912958890024162086105636076755214 1.1969965903760467743197119408931126 0.0926534899128879795119790197300678 1.0972308620382844394901904657862106 GT 1 -248285651424617380014989049.2305037569613029956989349279978830 0.6948319327291164568041102518999265 0.0499148069846081590653472307645512 1.0512036215499724145953977521569413 GT 1 -7023355718368527392934332016453.8044169373962060941531840061491151 0.1926096115529401742935559850609438 0.0458126601966532008623685324189903 1.0468952538530132872769378169553317 GT 1 -485129614480311.3419848743203338183609133603767357 1.1167192092091070124057573811007741 0.0107892324425883004130517621955920 1.0108478582774466103070966730796880 GT 1 -217678353514812854466787809314.5116559443180346567335246177545692 1.2241388625240333379204860649176790 0.0963649218418470192442839812345978 1.1013296746922998395741631498333162 GT 1 -27134454728660999606779.0666092918086514940213976991638505 0.4528106323541226642517712155890881 0.0917655353978743700715428835857837 1.0962527127866781996354478775101648 GT 1 -39.6986428904521239398424939403330181 0.3687231133052626441015810495800755 0.0350971382508391456039832573005002 1.0357278441096831621490465185098054 GT 1 -20.0256390577765723409896725240397992 0.7757666424260192003574166506646003 0.0654837106314407529654456841278361 1.0677262211324370849355470353509535 GT 1 -73152085050041881885.2728345162624493220924334520373143 1.3639348262053442237003238059943234 0.0330558308633371273064034411288635 1.0336145213521404495085059934012888 GT 1 -873612559782.3259149837970429629837213807871977 0.1193513789899773370831887929559350 0.0943382328798705843137513797922988 1.0990893681169320628777530332023760 GT 1 -293839904838965902443735288584451599.1986217388642770562262864732546294 0.9930703008453820984934795506113441 0.0980775105440833115459867805626472 1.1032266944789224803657930743741136 GT 1 -11861413364.3017723988056455488411868406678018 0.5666431148775145253909388787231499 0.0284345583054888251854981802884462 1.0288466509361452166962494862343573 GT 1 -855104561166206948700520682888953832437589.5897442809328383196821827377039713 0.3796671344136997524136826471878768 0.0435677037966273618876249696716319 1.0445452754576834325897670622830754 GT 1 -47872272479837746364249046.3598003307826591263333897898298901 0.1980181914143910535019918976741703 0.0000336141211733724750149570244003 1.0000336146861406042242223560637320 GT 1 -312057847.4014019110314956906579739345849742 0.0754388578908213446062829461913859 0.0365901691190333731551676802504635 1.0372763804775175277131761292454620 GT 1 -596621986916487548.0695165534503917273269503298835407 1.2214459538346325547274917354913596 0.0504574858551641574233643817346083 1.0517749744348280633004553538770763 GT 1 -2930860274706689401006637567182736364.0638523448862138189011668147159452 0.9687367077129217396149335651602588 0.0370566637982934011979331638410002 1.0377607098272447093223029337158685 GT 1 -2249295345804767489000.0026365540621789959587247734223413 0.6607481294628059209188035823603496 0.0053911791550295396914771697426570 1.0054057640046802428404347840400567 GT 1 -3088803228734057183905379.4477735766149483642486793403492853 0.0004137613332154365450225348454437 0.0834883609919359176283412610175504 1.0871805123743244852427355938616893 GT 1 -20398761113198282007584944330.0361691029762980375957125769634338 0.0209017215920786135196504811553213 0.0394883508002267833823774965870726 1.0402891685807807992362377286630149 GT 1 -1622369027573825.4242554595171514543480943263857193 1.4572450011749612351628031787534878 0.0463809442724927161397496054911896 1.0474909999349830187069105221059910 GT 1 -539488963442110994023.2697714504549132648665673948602470 1.4965508761333123869833794800983841 0.0901025817989310868932056420183624 1.0944234130770081051102747608453765 GT 1 -3762051587.8349285847416398175118178657386092 0.5539582676931658194388289610780575 0.0510453881445877719285256180085924 1.0523943088548429770904859640982898 GT 1 -37859397298.7370787083546661498853001757291805 0.0821454151645543199447344567366422 0.0234344265072550727758842843641623 1.0237133793656978382106890203852827 GT 1 -222155013059553.0198792712364975489472481307760851 1.6798247052874509135446253861983411 0.0679493305694607207688050244446088 1.0703680994325615233508367002461330 GT 1 -2.4082597543082629473367099860224906 0.4115260657885406539572277985561507 0.0314937162779918317196708358809460 1.0320003080590683560925299482589955 GT 1 -1262424023151333772346000281.7782313046601920976490832193139187 0.2158644832729416416282535758106430 0.0702026565767443392071993805346665 1.0727886268783085967198251648435914 GT 1 -113187708169.9737982126612938380580993443904923 1.5628674127273880799106614356310397 0.0342146706741675345230883528074068 1.0348136958363316279029568881584742 GT 1 -382462129343.6889982611595621330981607121087472 0.0482965592601370524239917902164868 0.0033846934810942091322204640372638 1.0033904345141599917369926192314851 GT 1 -178258385010.6764397087614022288397675492966410 0.1230999993576301804475269756193631 0.0355989806324385397572004615440119 1.0362480756790377757482306414073267 GT 1 -266255.4940828212424520922362965769579648 0.3381347809955392604581357748884166 0.0320939323760480531790219812338811 1.0326202339925725008937371169847312 GT 1 -3001451742417757780160213928456737984053943.2904235775357285577198014584181584 1.2307930455852196903695584984228202 0.0561457516732208064249466993644637 1.0577835227161485947686134387493280 GT 1 -14705689.2395299074299948150577040416677637 0.7513642029186792763641646977886985 0.0563205822113210268676475996422315 1.0579687703138351444585558237499298 GT 1 -552667363511927873470787.1919625361802037306646287121542390 1.5552616375214870319566952512134109 0.0337117107666921063684622833959658 1.0342930532334768711739009570195342 GT 1 -2725465.5326986534899640756900020867567124 2.0456395932061096115024998211392197 0.0928900992870814895872724861891603 1.0974916667334276499624797980754136 GT 1 -1230848713.2538132969818144662828415975790930 0.0093586292628223424876213216862027 0.0457308967052011173362123502085518 1.0468095683852649365516584456290550 GT 1 -39355728213090067491313518.9645767070474581849880649826643097 1.2017994438923677346836989139788643 0.0213143713361285138897417366148019 1.0215448027657966313049646632251162 GT 1 -42842796622.8270525722507103739455626536006759 0.4011043811841095856675952448041751 0.0006054131896787621101938073739509 1.0006055965262438647903002374250873 GT 1 -5716874569454300516988779616.1071937629326030309577718756239076 0.9760778526808678341074764890996863 0.0335473944337033400827948558321889 1.0341230187153200102367021381445509 GT 1 -265056438314664847072193312.2045360025382382911169922501468358 1.3990054196511220327542518410873492 0.0369805969909979759979524069413906 1.0376817188833532915220564253189364 GT 1 -83830858237706805567037938026623627620498.9776279072037388399694708012186655 0.1724310229802477975041425974989551 0.0918893363732543146616894790672216 1.0963890315662400748655247998817950 GT 1 -444765717748326117052594.7684183627776008710049233901776503 1.2513651412194388106937382135843613 0.0726636110697020864645554972442902 1.0754389001360205233944576059643582 GT 1 -36364.3922747471297537805906020783853600 0.2459733285112971451512040739484176 0.0211112719166545908293620198050152 1.0213373016616851800228396333949562 GT 1 -618854652388928515556.2829704604679237945399952122696453 1.4357732674878257218312658975148128 0.0611173072857974956642244635132727 1.0630647354649108743081953657704815 GT 1 -6858902287351.3639460317261870773047989934690415 1.6416851781127877787266624254850623 0.0927319095094000841274179097429831 1.0973172931697610151676679229208341 GT 1 -206465532754496705387.1462927182213356831000189755322327 2.4017139888296234330681703390359791 0.0132055428024760204759725723257678 1.0132935112888759237202755020359657 GT 1 -81664499856173026788096.7083157384779490772329651086911321 0.0922611067919082397001141533132954 0.0504277445923165053513870083640740 1.0517436532494769628254951246163116 GT 1 -7678293222463808998585911302.8664719736603405472208879135744778 0.0305181461802294470692212971652819 0.0700877545013134508103505732772726 1.0726650569658216643096645127949362 GT 1 -1536216084427007519686586325880161657688307.8759738239766797118043583061100671 1.1696751941177207028034511314546640 0.0727649538965327496992934390014720 1.0755481898889166582874265381137681 GT 1 -42915836749261338542299577268203653872.6675463591809035989201266850448713 0.6636623039056414055133377809411477 0.0347986332765257874758229478051365 1.0354185292319788124614479287368122 GT 1 -1764071855952291532135337768589062744.4710518286137542426744316206437353 3.6180440424978487952434456277529973 0.0458942817977491378145127967762904 1.0469807979478296419335829828143962 LT 1 -313471.3791072450785462759686298475680006 0.0171245637104150476422973791607858 0.0187879011142932696827313311722558 1.0189666359709036493928165878452666 GT 1 -8583165261467.7237221523296980525365157927459490 2.6851907910612661075741739135091756 0.0492322797002901731821707533218200 1.0504854941147889507310487043907813 GT 1 -23262365611742421456194794493157359.0781352457234622140174025543554917 0.1879766622038788786002639711856844 0.0336389226341984755336045601991264 1.0342177285172753680382748427783231 GT 1 -510916036175957530577589194892685355224.0184009435519526638147187622459332 0.6084253890673362144038804032762830 0.0743238445028573132411805445980472 1.0772308295888462588402377588664986 GT 1 -32.8438775934614866308257966258096178 1.9764899365968474811416975144754669 0.0250369773873859766267802950794725 1.0253557342290048809874368658669998 GT 1 -552139199835572874613.5898837237959482863691961958355587 0.7341196956929872457080948434976680 0.0289956602095423435682998739358422 1.0294243412976509165312131959255741 GT 1 -6876108808.9129167416834756820999778561979693 0.7933248018859584725941338323304315 0.0953479401128190459516250390738734 1.1002048734205845773275984117855918 GT 1 -100533254876493892789228367021253.4275046918880587256977294794329476 2.3547725481219085841344883308255406 0.0532833555446647846944352863896091 1.0547554444497851778502194610719426 GT 1 -42420799741793489483920472679484221643.6953997388534901577857426742953768 0.5175386731130162790135335284055913 0.0629704088730444408848220000510604 1.0650404165305761553214936744109656 GT 1 -732271625157178130905918710968387.4723716530398650448518999321574456 2.0413445042292887008417737469834995 0.0243096295746060888461521676878040 1.0246099863179872044019515914144305 GT 1 -271392.4587056580463678864268867198077242 0.5192958156536016135238928538881514 0.0374931218743959397142845081862634 1.0382140667412073473937928195010707 GT 1 -1177695045943705.0291568054791939753926058488167272 0.8827487621048568136393699569949967 0.0315616895716952729256475905275335 1.0320704941593178191985713062046833 GT 1 -1075175.0673991085123096107343059440050960 1.5572358521509807721954807449066307 0.0975134811663250766326785389012473 1.1026015264670834295919432734981171 GT 1 -11673964558171445332986330255731545884.4727198862071213483784211901301219 2.7103212634042505297300715437317807 0.0943786462983528430116243915220212 1.0991339921936701373596377286814234 LT 1 -6926482842946660922.0413377223767050356148438295359294 2.3631105746867330406010563795640024 0.0691547265540164091987293463842308 1.0716622094523831924875500381225320 GT 1 -1651496848294836393904.9392948181441680333509082283459612 1.2923842123545224320141050612515327 0.0210587577712869036670141436906984 1.0212836564052772287648423976517016 GT 1 -469499035113335634127342201.8857395933006876394195452341666688 1.9766340275666080617096328714373569 0.0224678240768145199180664562936942 1.0227240711188955185699687049011757 GT 1 -2368794.1463455542488011957727910474614621 0.3572324271075702364368529306123462 0.0360888470557295834587540220995763 1.0367561536146157290296239974862883 GT 1 -76252233380407375936943570843051004806465.1963489351822502167022752892667263 2.6246129093817212659331459232574138 0.0851514985535314990051589371703093 1.0929570147748092707139449194328517 LT 2 -1876963634337599904999.9277858291055461816107563096142042 2.6081294746622781980087780341762609 0.0993334820729490750120104178958579 1.1046202142740271034236134133244726 LT 1 -9176189083078654971286671632641725760792.4978703294410821194390899489525117 0.2440395118260403611789690977026945 0.0188500663843691329634795487598450 1.0190299935665634259464258006029414 GT 1 -82241056963.6938070358315776069415242899548419 2.4183308605106531985932804631541223 0.0811841485835296416697666629134464 1.0846695560124972981118195863640280 GT 1 -89157605903948.3387915013262843612124910043975809 1.6416246330090004508289130719247000 0.0047473493565364227802402809692039 1.0047586538111464289907814030363732 GT 1 -1217494499568.7400247106868743974705771962939178 0.7279988280347645502625896949597962 0.0942679294073559917294312885779126 1.0990117444979418771924850185999741 GT 1 -13523.3531394005945725242096789688458100 0.2031991514187991626191059463307859 0.0017741241002139399607846099327515 1.0017756997222171765370150310520722 GT 1 -2600331575302300006245.1626294679371714650137880875127940 0.2103857442957509777764300819061216 0.0786252143039818080119671579997933 1.0818883920641987367532446522267954 GT 1 -2809795205077206068540009885426902035574.8166129375339879773590330145959043 0.3546697933196913600770302751147700 0.0792505006572461327059349230020873 1.0825672674064950872366976399952760 GT 1 -532263530809647748703260.5198844515039373849392809202079207 0.7049565477929915921256057360297235 0.0495963780428140194582766809829234 1.0508685193991307379734547990337906 GT 1 -10826366312143364359449910652831440272365976.6410491282835543927949887710830886 0.0359909027585318451953565836519353 0.0868129931271011707594546617919810 1.0908145925563870731181841018245412 GT 1 -2379287827073589.4752857224293776521146726666955551 0.5121129521927069988972554495676852 0.0691331039428208787492039165576186 1.0716389807153628257450570969538686 GT 1 -86206742939224975473777.8248240611140417439092384814841918 0.0063141845050424024831867441286551 0.0329865958493879264449996082229357 1.0335429220420675867379022293092287 GT 1 -2411.1097604417927603596643362936887469 0.0172754801656391628501155729920601 0.0977284158706909023958067654613449 1.1028397131858787185913330023547010 GT 1 -117591529470424497376958623629646358674.5348878685207776056784416324154426 0.5906361565459541485283652367180513 0.0631867483945035466907357270441919 1.0652713211907608394245997247210646 GT 1 -2185062920670.8316539869508615084796913316915364 0.7518731034104389562266458596964960 0.0899833570233574430060823137397782 1.0942923906531612886053516417538571 GT 1 -655247882348920709826.9757505075438120066002164358269619 1.7191694053364218854330617982697141 0.0211055989061126207586488729986163 1.0213315063205593526112577773263554 GT 1 -1576779736562272747967133279275233045904629.7134772713438867924957812044722832 0.5673108872097096500241042298330523 0.0712503724468475120759457356542929 1.0739160839697344208692379805665111 GT 1 -9847853334009917869.8364071839162664283747565594931821 0.9177941004303369520332030180495114 0.0435847844153026463148931076099880 1.0445631342975234906937434243579601 GT 1 -146617017312184176920283051196814.5405092772479077439040337399105977 0.1692172411950496880992687594542838 0.0809326593160709775656020232226990 1.0843958832675597946754917181540992 GT 1 -8366149428655755381693761782888336741448435.4461154016016954783190826791397302 0.0560016485123318698483759144297665 0.0484617573121252711323379562548902 1.0496754010537413122977326144549771 GT 1 -1110033265804197867487532365394394.0462826922674761611698030565255197 0.2819940589835526506148859405841199 0.0666132231933999924666282650028945 1.0689356122620778632264723543768615 GT 1 -506318364892292250884389747.6410391489674372415153545823496339 0.3464706272483902042359340972949720 0.0035533480543183779649653700594991 1.0035596761906773214456626274756162 GT 1 -2628939.3351282619389573967523891368946040 0.0196941862543729770824369667877106 0.0544358102673516964169584683407874 1.0559735034655018139701007506986646 GT 1 -47260097889334360804603399646769983387767.4471621984974817556059701122703521 1.4917906533134357915429144907049980 0.0073965886903282271481093072076289 1.0074240790931428933673905735606115 GT 1 -491477545967642.7573618740466459701443827792660910 1.0456157123683735238090135566776199 0.0646386953197914385056796515838655 1.0668224022173783147121256970647757 GT 1 -689987.5601983873998156009744411718891967 2.1863327585000785417350497583488650 0.0512837601321494704493540669208926 1.0526455347074179485953515176640473 GT 1 -236488439919974506457400.1872311290114565664967726102777928 3.9343661872229001401039466601021273 0.0818776997774335019501283316482451 1.0854246725919426425443465850422304 LT 1 -634251519526049.9807217263127435964774999338381047 1.8582527306840364308892141648683471 0.0098765279265053126836542062617588 1.0099256243641462620840366013193579 GT 1 -8937.1513333709333113152921607770688629 0.1406194912432767380497568891475357 0.0229469926913009911769412124719575 1.0232143732333251007081224743856923 GT 1 -21857212271476525.9301220146544899950016370680370068 2.6446362290190274925681012786218089 0.0575120644667709841826807752453891 1.0592321602371459906415604303438346 GT 1 -9508937449655.5275394770176319200752239291681097 1.0898767381546441055057272428326758 0.0025302345017073860480267973479353 1.0025334409548851590477126285812294 GT 1 -85688077404988959.5522594077289222411118866303943287 1.7222771311821058008376626565797355 0.0499015747234065760975078606834263 1.0511896941999264322844302464410880 GT 1 -128576262986142975281700085471858495882215.5349541073201808986415943143143797 1.0407076072950061223018206443590397 0.0292655211094726913212126154475266 1.0297022992795087772521319758112901 GT 1 -265285771785924.6220596082363439878647957810209466 2.1178631719138558684285799970222005 0.0864340921015364126432418556601172 1.0903997569998817294005897845338475 GT 1 -30760247313836100163052255064.6540073714935683850875614577350991 0.2608083868674971670945443773895985 0.0681501529215338160897242289919820 1.0705835855607871996897913904315195 GT 1 -92841170854628899579243464783493114271191.2322578619148752449100909217748940 0.2494772044607775980160768460930986 0.0976605793939680811290027772625382 1.1027645319123779264217964172475339 GT 1 -20816315190.4297240845755522511289875834946357 2.7827175274287775623108547911327206 0.0675550745903462342574226801342191 1.0723913552634718026461986773118047 LT 2 -60878.1999334699435068289152363610320988 0.4134266946828914014496955325214363 0.0477916774192941034080605867644410 1.0489714418895039075273162626763662 GT 1 -65818095561140462499.4586218621163715308425754897765973 1.6002042167646369849906570449520696 0.0795493177761069057674385360016680 1.0828918569046669671747679746393073 GT 1 -249954194854677056.7890740699168655654358526668432754 0.7482004186442766745023860627447535 0.0252964642569838872503871739915279 1.0256219201262989547278210817826230 GT 1 -885305296553.7132033928410664503961780832813554 1.7340155435713513962643784610341733 0.0904754411795470698968182085607988 1.0948332788371723193363872813182123 GT 1 -84300979351813970825084679896.7356136777925718377883439667965056 0.0205018793493026281157483937841370 0.0825333401883243422442434302430065 1.0861390377935732752436288067377063 GT 1 -586534401414234343497760.2210987799335144411133556347642462 0.7255702861304119547952545099599576 0.0776564088934613666308713174504703 1.0808374663785020033708532964398710 GT 1 -4945990.5473977258404731812103787211475254 0.5164659829737237381552103901167558 0.0192634872367186046067849341536464 1.0194514459490210549476617653613008 GT 1 -13166778489761318301862371451595979732281.4946324482831366076324522891585582 1.4847378658754962352370538876398893 0.0965091911488641423749053587889108 1.1014893418282317779279347736194784 GT 1 -189536490990608806901788293291.6772919683622115446897059235121614 0.3562939122561984346412945600065815 0.0996778347897550195236961216632120 1.1050026183659866318299685503447753 GT 1 -19005278969172870603970406039486.0666108067948104018522793730339162 0.0511339193782455741587649127749983 0.0488679947076132960685780413558371 1.0501024192426179063076073327916660 GT 1 -230391103134831606430239004.0511761648304806779924793583265201 0.0026679077539846929079326310568966 0.0432722209484344838749487474679458 1.0442363803951487515939659746548456 GT 1 -17384.0268191908805829872102858703344315 0.6642326188235398046535240753662041 0.0667954393688986859642207539347043 1.0691308517581827161803250143238144 GT 1 -35350736051415351247863016.2617385284594758888831798970829715 0.2790418118594047812087523209013838 0.0392546305466045028250421483690610 1.0400458692694382324996279733037631 GT 1 -11126584404819.8931757338488780356623630453178473 0.4311361637846222833300007212240491 0.0915377011126584337054736572583418 1.0960018902047380233601018639737307 GT 1 -8350983253717215372465064141242029979.6670211179142768407171942975571374 1.4328365544484342820927729807210609 0.0391385735102945827799588879760168 1.0399250776103995031534167353270345 GT 1 -254114336624006775333997235.2388229732492626043491884803025434 0.3123515603323502731784857797920213 0.0310770396118295034333059963915011 1.0315701744953748016294151880197705 GT 1 -52907359038090862014380.7952889102774155394611774911962554 0.4225701570508003488853445640137850 0.0685329910351085838443969866110333 1.0709945066746279766806581531210494 GT 1 -1074644146898690059831962494623406840084.1519903467000282183521260553090399 1.5739158543489317957544186564124528 0.0338352760392041627557931205765799 1.0344209376082448988178104805745678 GT 1 -116151673463557143822967127.0467332841884755451389723893817450 0.2185725500966871048540474444563652 0.0383976860874791920447875393008319 1.0391543088890716113124127368217999 GT 1 -460894071861604833535345025.6621030181841657664343677409919880 0.7930614228995522700999987812152384 0.0590039324710973768425722381750266 1.0608163184395994631099025092728869 GT 1 -2369219770.5536480030679415145103218268823082 0.0687132473193471556955302978981643 0.0069002590411115187826041036393221 1.0069241759137720242476511297678292 GT 1 -2375738263.6988650039862893063317299640251096 0.2003580441887896710778673163863712 0.0866079509006109168052943101513376 1.0905900829993754660458843875870998 GT 1 -43787236772119808.3927929883369086752918498196485465 0.0765081757152975895489629190406371 0.0702788323034766168602753823518434 1.0728705574708994896648593797849307 GT 1 -4492185.0021164876243381822301315856679954 0.1931754719663843452773618860928591 0.0851284636598518408146592309003537 1.0889716210057202661386340934941149 GT 1 -540727059053472114348083827577235605.8790044022265016969072197518438344 0.4146527333550251895083030362032344 0.0015146528852791245607355036099641 1.0015158011315700721538304535168511 GT 1 -280365232285.4294572311926045058496480946216687 2.0554795065872705240335657936409892 0.0785200963755651771008704404487565 1.0817743104394891959026184382838727 GT 1 -4339698733374633251370321562343483581979071.2296685203164303234548076626042475 2.6787147479107742287535951216354479 0.0131093708004344539283941293671611 1.0131960570366443878364113193607829 GT 1 -4179748.9880763416363415704648059506112067 1.6886294284815884697420945179196976 0.0767396364719144556638925013670918 1.0798440002617358849447921330278266 GT 1 -211328176588230720481258.8420371850048404610446571360973350 0.1197993495166264911888465488357089 0.0741698220782073204956529447422761 1.0770644543275519943542121660232345 GT 1 -59471.2582678023585299510861454652137712 1.5253772266691913136364483604153453 0.0538063280820876591392947215933792 1.0553080036980554412365486029043464 GT 1 -34774025638211722109280844622.9353800399216539938752686643293251 0.7639776268395592644466731016565944 0.0905188759231675230310645086626189 1.0948810354154360287901828522647777 GT 1 -5298615906648237893535591778130.1873303917753400193104986889797129 0.5158058486503956746646809219317637 0.0636409959905781818905205874545900 1.0657563247494216485350338955737393 GT 1 -409906399442940487196303617511854904654948.9921031554446449845827174845884217 0.7694739457948873350817928021375820 0.0404588354788948834183017672596264 1.0413000624003448148798827147517815 GT 1 -11421845.9187784546112688032370465884608797 1.0526402316457429554248602961090513 0.0504468363961048328821793319523612 1.0517637591399019430002629331106271 GT 1 -4694318285.3058133769014100926699559411419744 1.7722188985095907388732166897572137 0.0828764622678413071155973295738608 1.0865130963533291680401059111289103 GT 1 -2533268144415103717179622910320571.7075322169994860065444554423290445 1.3344497979222376472775243957998974 0.0109567837383942061935030696664631 1.0110172513862961540693008059265917 GT 1 -968597841372337215052728870.7715578977560303622079127181163986 1.4134959562399472088577031541694910 0.0079721847930403905051596339621335 1.0080041325672195722869943431752493 GT 1 -5383559895550994258982846613658348659960234.1139742920632807515242034729128114 0.6075594158457705802614275575626272 0.0118095444952784315876704830433640 1.0118798310822980943427315489749642 GT 1 -169429.7611279175474546887831473047447801 0.0666440043841868038164122692690837 0.0197359824630915995559284311058917 1.0199333379507985675953158850776678 GT 1 -646258409901188.7484059876920846484634034406156818 1.7818935887470180111512331965283937 0.0856382720785079022486191254849863 1.0895290222314862624241912971195768 GT 1 -2542.6000424023730216714501221092808988 0.3397989770658724880099564867142780 0.0392166939354258727054701876300720 1.0400063834041821931636963760003006 GT 1 -15907001865106935.3718533431613908645657359261421470 0.8275998697656433131047903752663758 0.0380738574490276565839379701585967 1.0388176061588128160128901960481856 GT 1 -106792632738372519325402770987794.4761954749234937150856725534012497 3.0149368274088835013802844527450845 0.0893679624963185372702979479853833 1.0936163738498395613379896863918171 LT 1 -1823386994507739366517834615.1381365874770673647485462135386899 0.3297184625937464515335303582954335 0.0732875003624959833611125722687667 1.0761119021481995043703612983965064 GT 1 -4535566366.8878385819376540223312153390962206 2.2189296248470579178384115391958617 0.0082369731014552798142417893614873 1.0082710844094877107217444900401177 GT 1 -1552813012336921.3446397177835957035420776408830105 0.3751526675468179592372579627946088 0.0130194330300111590135048251288786 1.0131049287293261944045864026021666 GT 1 -17062293263111651411598929160316931129334242.7152433992601160386806487825855399 0.1183465680412682267021214364217167 0.0192089792607132190583693155100688 1.0193958688795296216947601583668283 GT 1 -470883459691123237806277264907685682775.2004444493726903591163249170997305 1.4402403591055698849949960038524190 0.0292105007164558656192543464380546 1.0296456217481982456569864224476710 GT 1 -2139607379599996648560586181197587124679.8441317641851922965123366119255811 0.4973527219910810700169387798853269 0.0925321160357306181529192877308522 1.0970971030404098743826875645653512 GT 1 -216131775798624844342459953821739058993369.8330500292705402730793836376817814 0.6604007531091599539183649665682773 0.0089852002040965008124746372691311 1.0090258105599260392003633872611346 GT 1 -24777207974940414889889196878468.8984195143449884940743649474223103 1.7698158229893183948094930892016185 0.0919206588288506187780997589802135 1.0964235240538285583299075324021095 GT 1 -3763.2713728142708388543085536880373814 0.0801687161931992948640172926810591 0.0481737887462777013217866432710182 1.0493728120593441221929790229458795 GT 1 -3787.6067427058238008327756095511705519 0.4044437142983984167539404074775331 0.0585097022439571261142885573133611 1.0602912360298569039678298937959491 GT 1 -6421680539152755610475004348605909513.3670651637271755180978934081685384 0.7263886027098883988935212302946004 0.0696493053349471261130928892615934 1.0721936728781007556350819123788539 GT 1 -49967475191141955018617068958.9388691089812442426944884810872361 0.2734963988441177121988812004903824 0.0427113173517410993323507688344195 1.0436502792575944850199446889848468 GT 1 -43955307590944.6417445918780878971844990619466425 1.0376016431391475778014419480887867 0.0956795525934158720386634850673377 1.1005715041824942549478573877139718 GT 1 -69177034510057100193836752263.9711092930612066514099291399180466 2.5408807118588286781294896876125605 0.0323424977787238731355020913077296 1.0328770743339745878772273322358937 GT 1 -28119275511876030445980659617157348775712.7305136222580362330936406581798070 0.7402854331303755820981392559869693 0.0950173057635299685680265769227031 1.0998394578556870226061898188170966 GT 1 -109173980062308337764357245447406.0784220008622423708736003052157437 0.0434288332227591269587960900511847 0.0912792575200519678411249218231369 1.0957174459980008409325256397555242 GT 1 -11727311893417433587310851605886559302818.8245625312364922916900115242152325 1.6679136194982468822556682709051796 0.0199982034074969153513984675539858 1.0202008740615436543462106663393638 GT 1 -347.9518517570409560846369566628391097 0.0870886447558949571073885841306901 0.0236699492930982417037934445565605 1.0239545830266273058488281323151937 GT 1 -96146413009996132598563049943061146567.8181021160322133350753096265005651 0.0122970910589403366534585633616744 0.0597517391363864663803361266312509 1.0616113312865648432235531416915945 GT 1 -242183050031750038154927515.7985263914223574468902789943940089 1.7398253765406638428667528992053014 0.0483194897582877890186638065689893 1.0495258990021421715891734099483687 GT 1 -52214170616081170827760.0265368504174864474831093349692569 3.3600723530553187972133338630935679 0.0071570747375117369352038038307332 1.0071828094606512189850999812942182 GT 1 -96559782029543216013919042531492439053.3406991016633233244975905173725443 0.4069516898415616928517982850725811 0.0226278467816797925700233547437727 1.0228877852227902716000748809639567 GT 1 -113063674355614987344.9316849076879312865571299020542652 0.8267469565629066762898966839566700 0.0728886385422151335363932993172819 1.0756815896090136891375401251573537 GT 1 -1220119.6450466666030983315135423031767968 1.0673758372045390177747906013745979 0.0083310847999182096807238950327410 1.0083659822444333151529933619822035 GT 1 -297847363111623850845268753271618630.9741355927318496765958610187108910 0.0095405819047949760120827730218204 0.0779543147912192554889122902806119 1.0811605065351263158905314582915801 GT 1 -46026141.2935582857293224813321153085310361 0.1471127629276908769706039594385414 0.0445811949695500485589682520765551 1.0456054953327611024364289955518065 GT 1 -525119231858721.3695078906463338264699868966294469 0.2593853181339714631373695563294459 0.0363859341238539102153983403175194 1.0370644111331955748662118732128836 GT 1 -14837529658.6157007184904836584129627129087595 0.3881063514621158577438408550906687 0.0034922793443308326264791164136283 1.0034983915864272527760927738737031 GT 1 -20453946161099871194730446528495466066114.1726883231744400033347825587766597 0.1684061989771473558591334683858103 0.0681918493030486722388633602516308 1.0706283323776082955696576108234652 GT 1 -51645615880690645568988699065585995.1039327537364898936348881964563235 0.6848266174664487652099751272697625 0.0740901225384514458675313803150249 1.0769783736278626535609994773254122 GT 1 -1173107525507242787296038421202.4126271716285553991936495581598209 1.1862084834868866381254200186311840 0.0702427762316158880294811681640348 1.0728317766256573542672070305153890 GT 1 -4919176710075.2277486539140959823306696323822346 0.0456151189306637357032178277441575 0.0539367642449694255892739034902181 1.0554458667573043733723196776525394 GT 1 -62249910049681.2198490205529047545092383585755262 2.6144332156930947660472782611487967 0.0018771341026620769247387246497382 1.0018788981267673027946557059641993 GT 1 -151.2564901305876365575347682125523501 0.9741545393566401134950638485156042 0.0822013797570240066035536066792754 1.0857772803533511048030172287797699 GT 1 -940572.9725287358665682659838030779264463 0.2755948986092972415280882358793773 0.0973331530846049457474570668033738 1.1024017339333945828536860418043220 GT 1 -71.4038060028686877265907864272331612 0.1908044841519262878895921797389774 0.0964992795303529176688260322629609 1.1014783715294224086152799743774145 GT 1 -329062334349905536328928137334178910816229.3658777757011239255003703661513717 0.0106375572042343241821067881595593 0.0944355755299392034968424225945362 1.0991968562380892312022076578367163 GT 1 -64295039686.9587740476978934650307229039132381 0.5918333406148871662441035143002636 0.0507323063213046497657715191274733 1.0520644404034931945016474618596837 GT 1 -64428147623762.0989628299210843236072116336008233 0.5730448831425085972200507390782928 0.0118474996535386152829495332159221 1.0119182405680125848015747203191751 GT 1 -26551775861.2433937085810425705949369105617136 0.1948510500391157862713288393136627 0.0987048654889594975407837421446041 1.1039225117356414054033832932664657 GT 1 -3111556412106853736127483814485257491.4905528327687289579372607915820783 2.0367099988774079289044471936499061 0.0870453756898732001633570823289348 1.0910690991730242946480667437285809 GT 1 -16489117271408414596007819.2823367950582087299260652966898535 0.4589134942250032010517539470230213 0.0069764155939309473942261224140158 1.0070008645583130258092037140406019 GT 1 -4618991742.3848962388033221624570142280790448 0.1310254011901123744728597679021409 0.0123025636210918950834037881878961 1.0123788666177353902616981158096208 GT 1 -18499252727593147252931717089968607610639313.0800125894144340990066140681284959 1.4230297150857730478216219843043184 0.0681965654726885832507616433033725 1.0706333937001256199580402667526327 GT 1 -11136459987989141.5206354288303794050660727950063637 1.1697743210495899087359251655932840 0.0788211636960691098842589762684541 1.0821010853508270169546245045617359 GT 1 -272.2140160210750581677834622581754048 1.8374993802582296129487469870057770 0.0212251662853229749262408747000277 1.0214536591104515853157530657419765 GT 1 -12665948777158222307970904102970097.2907640317099296217398382827594284 1.0298675227353049528350316703823418 0.0690247519412186033534762415280030 1.0715225884615221599291441945448791 GT 1 -1024673089665787960714025880281385894.3114116329590014920706200666730667 1.4567636433750635270879466056930568 0.0786101461448449824091175092441427 1.0818720382023829039308937397635034 GT 1 -718513345960311010498753.6212123648278507707668648905170323 1.1660956153867309430823307121078165 0.0348880757306142181848884545795414 1.0355112006698949206555993190284708 GT 1 -67828385303.2843805948448902459121064947266208 1.4031598492954095101418232048734453 0.0945710493291318886343547196867925 1.0993464689327627786241639230418980 GT 1 -35463.5446613291544795364063301455909612 0.6369467265581361173297511942908522 0.0840463592477443688167491353538387 1.0877895261212350150392758579621969 GT 1 -933695895518883746092724225129104077441.4723520453184060592133908496211199 1.0853318022911953510522595468684827 0.0222526592652568082241386389479566 1.0225039851305822024644272656463053 GT 1 -279169851037484591189945704033597726275.9462422373755644709409220952902937 0.1744467328592889978701159288705061 0.0165824943048332398118383780256043 1.0167215229677336180553817081298326 GT 1 -8873517628500894.5958501240704142678540652955436562 0.3798218855818504828512200286185994 0.0990239928710745709738289965807710 1.1042766508860468800393175583766086 GT 1 -147994664278556.4302939438218024009614171205659589 0.5443816223023257891298129149638057 0.0120590791511019740781006719328714 1.0121323797338055467390231808558667 GT 1 -46276004630335793506219042914903837905883.7426852385480594538133867565254259 1.8400770105114437799974701344743684 0.0364572565602163320521466428036019 1.0371384294341975588207685363567619 GT 1 -1412050448732102573280463268175452410231.6187724782661728250991106812186886 1.1156027248462354816398452952397149 0.0789231606178051791737398215838527 1.0822118158245461972774819652740737 GT 1 -5697735758721.3779383221415069651333752091750104 0.3642640752927773804339833984178291 0.0861272506071158376714439887659966 1.0900639410795170132208514213513544 GT 1 -136421257290458.2580893109762557138207972340808809 0.7589569717694261455930903128475876 0.0680132280237290867874757355930658 1.0704366575557772990381166168857382 GT 1 -1917602966941172576305281165399884535.9690517669383243218530223871407673 1.9744763980941558355338100369317443 0.0087028399610478405935604851768094 1.0087409308329411942174443948043041 GT 1 -734050.5805791023721460882379457492794792 0.3810372553544593717287444069894856 0.0028693950249940252983725966968391 1.0028735196308706834021246851308384 GT 1 -72317116733.1538398595803981695636118857623912 0.1755505906828645316355022821784800 0.0550269267061388076085045560356619 1.0565988457632822481630417061569986 GT 1 -210283383919904886930006.5473773464142553062169804516646745 0.1611673230350897872013560470059403 0.0153044232407661008622153759622668 1.0154227447063441640300672757962225 GT 1 -402529960.6754173455788471716296717613400342 0.0298368965541340684624910048264089 0.0355754540866778785798436790852191 1.0362236809943287913294935095969482 GT 1 -42.6353708302270954748655021624316963 1.8763092171567505768350796836060261 0.0653984818179695719877366990151156 1.0676350242980952839703691315047888 GT 1 -376641491088418793681163.9252029275828045616333637310809389 1.4915034847064802901365761102021458 0.0865619887140383703396354800542939 1.0905397639384196273027211834495815 GT 1 -115476405596.7910627094048345577164618170627246 0.7522759936592960554136226841481192 0.0871788502213981572635019225578892 1.0912153104807401703796235338155280 GT 1 -55224002246271.2790463179685180943525983859263924 0.2615375561993243540678026581634790 0.0634340975077338013517263910610542 1.0655353885197118940454344733307662 GT 1 -2763128.9629698723817737218009716606350439 1.6256577878705634331405429369264735 0.0651224152418322118935177147034725 1.0673396836572613060190180170138289 GT 1 -26132481059551217098335839577443088367.1510809431425440937811250242239823 0.3110956172373708322974543706113914 0.0157418457049925703652897621968716 1.0158670644123116455465085465597016 GT 1 -12922611727003208201957922800459241477272.8568945754603352693199518593526362 0.0282624545892152322852080415926943 0.0546817002358406150925382986947334 1.0562335830539910828279483199489861 GT 1 -622679186448018032.1408259676891269997220817272573401 0.1420863775195285542173328007101464 0.0819937946095869226915442819702224 1.0855511286999473169760984044714597 GT 1 -80222593845322451545676817.0248203723200726423864557584406041 2.7132313250779578444682321608381809 0.0432503493632038430324191797425322 1.0442135198326020008089360319726117 GT 1 -684.0388945544792297720603828614324549 0.7221670292790131863997551871590409 0.0635580044793308099267934874605432 1.0656676965274989560992000641119090 GT 1 -8039141916019602645144301.3996064295524303389190247861800538 0.5080883023865875731527421646014984 0.0333080762446862049997205580189446 1.0338754239942737801980206491103383 GT 1 -2978112401735799672.9832510643138730267116514445652324 0.1687904238006161707580970172653020 0.0944175222341200970251607717094572 1.0991769204771662306448823523580094 GT 1 -6651016362998736368751724427684.8049992755439264413949467488762035 0.7066241919296734795844168749884856 0.0507387261682055326606931575531016 1.0520712033731510402862733100951655 GT 1 -1894736.8845115440272587703774251530919891 1.6542204131934226092741215550806995 0.0555212136790372690073694099883998 1.0571220525141279170787314790584005 GT 1 -1153231203790622.9435680084384936450627634298302923 0.5705788271798673114277602887787730 0.0939259341314397508263875682066969 1.0986342258737407313479656772572232 GT 1 -6553261793552714020.8918158432186567799618461468443413 0.4252482675785140084891827674452731 0.0021928075390137778243671846965069 1.0021952152618912109446846641646947 GT 1 -31641282765805461726.5371826128883322164580480886779631 0.2027219441270844939362481614851556 0.0089221891776750239229637891116273 1.0089622302548432712299701282341638 GT 1 -17475351993617789536003473838507.4119660863677697332938392815463969 1.0889979208999086727663518098332875 0.0745156525759758130354115379061349 1.0774380596734361634375492718264693 GT 1 -117914519.2155598184525675708139859393333218 0.0132120629825819668331014199374867 0.0122825333632542756473959432830756 1.0123585870726051719341138715576644 GT 1 -3549996165806298213047443803115888.7242766278211764356249387726758208 0.8686842043259415207563247908262156 0.0436335749161518092163612499295714 1.0446141495308594731089182449002062 GT 1 -93844647095355479.7385528805207339986425649505799402 0.6074280787692866287301704222640117 0.0669550703121345693804307808342148 1.0693019231443540323351201622015785 GT 1 -5649589755607422209033431289862302745863.6893849604235834549491117420588301 1.2303122313267018560148660956440269 0.0221133767361631185743723560016868 1.0223615428004802977686150845572987 GT 1 -4.4954241267156222584327550053474324 0.4097607699407755268496538030454936 0.0277184071154713310681814849435994 1.0281098118642638677019050104915798 GT 1 -11290270697955956785835.7121405346528279456905225047343014 0.8980687741768587902547209674492988 0.0566179892537817425309665608316797 1.0582839768465170518569150222771435 GT 1 -133101346402055.7783065604949737018643029344311640 1.6761567400401529485831876223361000 0.0018224857143459433059569648273531 1.0018241484619650799212844171482206 GT 1 -526087958911.4133407506129553563750569140662956 2.7544307065985040049180358067663531 0.0671717940387392556349437340982443 1.0719517301766200508976361011678410 LT 2 -189582039049768097573683964087119.1472851047172791686691037963327849 1.1147745838044574991629951798959383 0.0346377391491177960520001362211356 1.0352518482425698802267368850015688 GT 1 -8993964535697.5591652284025431282795899361075461 1.3592733092025842119805126428758591 0.0408136973959507067120876850072256 1.0416699553915923499859160846368756 GT 1 -10786582665862.5026082850850933254273417586680820 0.1081769395273435976794742865846107 0.0329359445166848634780245692325250 1.0334905442715058742051156429938138 GT 1 -4461743266909294.0774265447543550771587087118815578 0.4292695310051607391389191398280310 0.0192835267695229753756699351311967 1.0194718793042410528462903134107458 GT 1 -35084675046273916001408.4888048787185888043655030786937644 0.0875152088929576706258826018193401 0.0659224301120292419904342714076348 1.0681957929299430776477298065995840 GT 1 -635586968452781394536485924722601830184.3063009566309342808718503966013887 0.3172036893401296175341341648176329 0.0501574536839382672356141328028670 1.0514590488439964942986556707839129 GT 1 -40104337076.6919982038756607124705443235052358 0.8503361976784468904868318866770713 0.0613318062667946175795866590225595 1.0632932235271824395585997023389290 GT 1 -20258769239889137383849673086328818600246.3799234633725334718584247556422674 0.3242988624188950872938340006134413 0.0760089512790051470561247729744139 1.0790528949187681797285526904765116 GT 1 -633396170890268.3563043234454151405053875886306934 0.9775051173189719965549281472788528 0.0117861413332376158120976908283368 1.0118561485170718387011821065454181 GT 1 -15518541399551.4340092167987555405980486888080164 0.3823617447082560752244743033396276 0.0724786471314919496423603019428116 1.0752394628048925367090172571951475 GT 1 -1607582738113296992461674304.7412024621632625302566098021525389 1.7797702471119293579384450436856049 0.0502443018747295417747013077217972 1.0515504873269556400697454369901750 GT 1 -4212127344241752657368136956793919668823339.0487156627130765799291041104311480 1.1718613962910805499174436407100897 0.0447403026576490126037233741657611 1.0457720410789650239161024849319371 GT 1 -3408885238046457.6551925327356979879502266270395004 0.6896535754230755896083792694640665 0.0953106471238471749885971469612257 1.1001636506986437845937036595468561 GT 1 -56710.3399772912965295118359641091702734 0.2873202339403395037718939080866371 0.0396340204440167107111641710187746 1.0404408384653049166643453919508801 GT 1 -25994173581544936738689399.7511315366558912610045029640142010 0.8952598764204277150748004856653342 0.0758333601972062349522568194562654 1.0788628774939374030389111629129987 GT 1 -12907442307164515018392240155462646598.4813187026340891318315489319070680 0.3989690321832565105536947247083090 0.0130988991316073728486006663602721 1.0131854463236014075768145855179955 GT 1 -412733465791463667166.1996598761990781424602377728407554 0.0825759437278420914775005549336845 0.0467669185008629589075118500427163 1.0478958286326112815138480740233884 GT 1 -153959272243870935815.2651978120439774671229824215112555 0.1572466259838997598462605707474598 0.0565645664465454616477153586871820 1.0582273494208888289824796131569157 GT 1 -461459753.0827409614915647835323319896391844 0.0442378379725325432333308988623935 0.0650310798699089218682883466816598 1.0672419907485041890579785561542069 GT 1 -648802007438820844307157455966.0054743334219037296777736971641978 2.0302117432376368891775218110919718 0.0412505187107820690094424577028125 1.0421254673290125830357777874075171 GT 1 -435070090324373206799275337522801524.7150719144994209342140094039129716 0.6105669188137631341834271698708337 0.0140448046253928494751545359519953 1.0141443662085103800374040349072111 GT 1 -75997291205650838.3876914449017866288163897911834814 1.1619446654236101875516078526574368 0.0183625357336459671823772269520762 1.0185332197832433464905012204020435 GT 1 -379054826605.9500428405451551718709370035858865 0.5893328635379604399689831869925460 0.0352802045803496444706085438960762 1.0359175872487156760907936128812138 GT 1 -314897158198857313347716857827470532344506.5062902858823710501186601706073687 0.9312770934886178778281333767356137 0.0219258025413356654268951693324107 1.0221697453028870900920126890561090 GT 1 -1834.0320851672737339638265928787396881 1.5395134072484009606600593845228758 0.0002333207366503258428045620680352 1.0002333479601680245146974180639678 GT 1 -57856.9837328525723271791179066788847529 2.1353909427314991414658856231812150 0.0836236101622879191746664022649271 1.0873280927703649884860481320810107 GT 1 -323316013049606628966221584242730593.4886562370817108772501674846033365 1.2361742601315848879574029262961392 0.0784186111866621213731900158855537 1.0816641836743924251860713507069739 GT 1 -58669392227815.9554741606943722227887756579186202 1.5004400194570151335676558661685710 0.0776168344509550295617553894539979 1.0807945608995527470089230159602110 GT 1 -74.7605765791529353819112959420048827 0.7555398781238787520424817879786196 0.0194664310293004278204825234405662 1.0196583973477052378238461948321147 GT 1 -68115198555214913600702178098690568513012.2175215656828887154092538378965087 0.0596093461588068498977103652019712 0.0158582815557535075497759183914999 1.0159853694909791291632273223069016 GT 1 -6.3109093584169447144891086586096074 0.5375234611810092510238566959812574 0.0862199487912574195842833421633158 1.0901653806791943219076162272179942 GT 1 -23933044329390091134900.6956851504374431955287253277364792 1.0628638252187973848001591985037308 0.0469616196288823851732169421839608 1.0481001029267933329056207952049863 GT 1 -203142.1164300083959160614111274429157680 1.1220375007122978322502836410941831 0.0242613849970674249390432635094933 1.0245605409342107573827394256727271 GT 1 -3836347057431.7689765221470213988348796699983429 1.1307662091279552526889797057838815 0.0556092942525952619389030043273134 1.0572153152556690337271674111347473 GT 1 -238.3715630323950326637407730735650629 0.8310951601338698377730965686097589 0.0340989272962065220521932716277860 1.0346938592231236922737116440340418 GT 1 -7603.0494749055360789309801941169003793 2.1347597817575848820895824025115908 0.0691550040332643919095252237268195 1.0716625075462740417374202887205182 GT 1 -8298974435215981622157476953022.2492974514840464997200650411086261 3.4168138572612814782042607338156729 0.0610641505382979483394192043206682 1.0630081200398100537757743417997841 LT 1 -163808707760964053.8325612716089217321562530209428893 1.1009034283358305124466863841648922 0.0197735917508628340773554985055255 1.0199717051749187964627763411110325 GT 1 -963645179.6984072281056635650524932885078716 1.8452578794870099094232428665420169 0.0128799154427618521916843214973573 1.0129635807313164072926366757092456 GT 1 -1929.5422598669254650597174518050561176 0.1015144697683003440800715999768432 0.0184584497380290551057986214825303 1.0186309327312217013232423486625633 GT 1 -56799.2515748887064955404030212262043647 1.2542590655324441332931855176252336 0.0439945115346388900486097702287676 1.0449916248746621979213420809970155 GT 1 -37.8948230454269234696775262845196618 1.7268599567749299958217405011673189 0.0544875071405027084379116342139452 1.0560281780047627264174952737900284 GT 1 -563215736.5310029058536506045504978549998758 0.1200980335225761426071533929111365 0.0788131042554728430572174510617056 1.0820923363381243574847147032647619 GT 1 -7464846657740702974906659907127.2926785504295897829633000988722708 0.1826136613615329426180901486162197 0.0538799118407166358407396600103958 1.0553857749009272771649215752129198 GT 1 -4634373882195202717231356545071855929765.4549829537189974341608599482902178 1.7088246048257111240311911766336131 0.0284257685510200428261176861089732 1.0288376039750951931638838707344108 GT 1 -25331856794281971398324920824319732.2834099022417566285500566530345106 0.0245870056252122181569269347552094 0.0006011895200790404748922230974065 1.0006013703069603170887754195285237 GT 1 -1942717408818189877733958858858790077392142.7366096062372686116824648536418850 1.3687604666510501465950558186539966 0.0187405809288225295695487885890526 1.0189184108781602135803219335196945 GT 1 -599467561.7363562085335166981465234705840745 0.2221615286583730291450468546646194 0.0838654677105067519491739224500742 1.0875920557805743858129614767481889 GT 1 -1313739549729837391259026777712893576570.7147343827680458984372111033889166 0.7615064360401482215190550942170787 0.0801643913319594274349706460383799 1.0835603111357282046903632737094513 GT 1 -555201393162202912848336065144352.7962185400751309015287581212720842 0.3788165390027062105284074129642062 0.0920330162868367661222701920789440 1.0965472625913206189514315025283257 GT 1 -92682206316204999301.4285706128111535537127716350291578 1.5968640151474073606658399492183506 0.0656714599412721197410569641442715 1.0679271466533863439742700252111216 GT 1 -128626461522399483240935174888091.2023725763580892775777765274483044 0.4389383411957694477979439022374551 0.0515488196525400385027476164145113 1.0529249613086665860509605096845818 GT 1 -15529.6905105280769747108348781106662197 0.0827762253067042742577958309240573 0.0044159429238291865097324455339561 1.0044257219996288190726177336233392 GT 1 -161176465456649312.5533693897357096702318347304837131 0.0740713882563767889269307340079903 0.0467193375181859180126177408399628 1.0478459145075889601612684992995227 GT 1 -142.0921931743617942699548222630532656 2.3265753747663018185106458893170232 0.0016724353572119563578994469733331 1.0016738354384720053343354675747954 GT 1 -8160352935234446863452386524826.6945388834244879830797343758324258 0.1538284153825425437457351042240645 0.0689922324711049122529566462296777 1.0714876585294607401656312701034172 GT 1 -11519136234424268.8546275214231000523204297177646081 0.2071274216109405965522283151027744 0.0578312262281891213699384717144418 1.0595708550911142331380564630174882 GT 1 -781494.5818895143333473363769618401684651 0.2618543202224922772421507893018760 0.0343276148944873012123980411715594 1.0349306481460867037935838037272534 GT 1 -118730581577524455984205250.3459795324416776753768255451154415 0.4102658798907980886798058598305129 0.0220422602534690829994463687692314 1.0222888207740549260304869002675795 GT 1 -4730989656078868890364814150772.9696514092814137014929235791722454 4.6494267882127656129190860325234393 0.0652441541271457335538922912112483 1.0674699112018602310374490519080393 LT 1 -3741813823584017696.5700090330244995398571746117439782 2.5425943789556349875323663565286492 0.0874615767057163321977238930966046 1.0957135074392430618123149124682409 LT 2 -9134534250.3539012549966755704552277554812210 0.8395081479544887353779914389498777 0.0486321667956332375970877351158258 1.0498545055151988784523343007061799 GT 1 -15458599.9296622028212246420859324002685919 0.7940256552154785848037541862441712 0.0342622775002825234632808193298167 1.0348629904342704247277900184813985 GT 1 -290579603976112471994780245912187377823.7360383217784775772364765095252210 0.2317438340366142667489141196165304 0.0990754344215173146632304099570122 1.1043337478771193968764350084450154 GT 1 -240774856976410210.7569414082204324776662546080769278 0.5960597656796397300985102138423148 0.0159523786014822136468028326291322 1.0160809873707181950643209964656993 GT 1 -35076340975237974352315595176185494398439.4094854120187991317339298103724592 3.3009058110771416769660347997054559 0.0949343774544773773660902026765683 1.0997478268109886691619451207215973 LT 1 -10053160181861638276100131805816.0593743078628528165497324716286408 0.1355741727151861042850127888296531 0.0671719739672778402983607775262727 1.0695344187764444290314223884040596 GT 1 -174024418182767722798226686828966463897683.6926598125320774066771144628999448 0.3006890606086906962486524628458439 0.0292852236527178447926285803490478 1.0297225960173119154315643622118331 GT 1 -62966232618192124492239975.0226804659952102762447630393190777 0.7564828047889667886534408961607732 0.0750705071886391142937613976732691 1.0780377683626256030399020558291080 GT 1 -21034497901.6181380082387995203136883954814349 0.3876807248201466504188466176422993 0.0599862524885948900569595438924937 1.0618607788128988233523577131806082 GT 1 -99906017.4773206159254282911813978185535864 3.1871483559739937481632893729612794 0.0672842671513556177089462667027410 1.0696548053218457901517068763690707 LT 1 -323832536790813376.9956900792642681326470294512344536 2.0749341502307311873310264949441192 0.0739008415887736027917635433470224 1.0767739675513580806935794416326441 GT 1 -15294359028823079630089523213169887118.5178431049552850669719108878449484 1.0254074171672209948649795443627213 0.0110421461260956800446622071444699 1.0111035631573495636906290953980277 GT 1 -34837404749187060682.3416426141164447009902773557661414 0.0630201507317609036573221759058694 0.0989046237675061949169512368994423 1.1041441710022363926835893668002063 GT 1 -243825.4119130552290389278092892450304519 0.6464050621384539974302748261776130 0.0431593987177212963397775508376532 1.0441184622355434656259337429425284 GT 1 -30533773774321.1992710360918732645818153997544020 0.2014448990239234460498321021628644 0.0048584917308038690371155372757022 1.0048703325697332990228219148086023 GT 1 -2.8112488753018976086872725866811616 1.3213798994018241282265083249438894 0.0859571462474227307177341938339621 1.0898778226833597418090947305931848 GT 1 -685099383074769065.0145847363417445933494794704608637 0.5005427631060551296916281793262174 0.0813762837381584216643813532114437 1.0848786895902310504291167736342970 GT 1 -193849395539140234738236596958338.0202771797766232177475009518293221 1.2339046657763583009795947434937619 0.0886792856123392399766820653956986 1.0928603971473013942897910601666223 GT 1 -1515952547857578306208.0153510625630459035123593422014138 0.3527774555822856440992985465037216 0.0886351892760100061211548626228505 1.0928120110316162588223387561795593 GT 1 -1069322918462554949135751.3832154790222162944808849407699231 0.3755253804286773303026732027744537 0.0402656385889638894516725437304732 1.0410987396741669781876581960559792 GT 1 -173215994657822211157316216290321080102405.5690345877034707324722471123795314 0.3167960490611289666085927465252554 0.0626876276324719906772486705726499 1.0647386773087846734949292512826478 GT 1 -37266307778980.0104556406728600001593832761118783 0.1470987900148288213333233755212264 0.0537764029903380411235852633723125 1.0552763773836654116343125269219016 GT 1 -6295038219029.2724177311387462840108971219628385 1.3768592015280720527330004760698187 0.0316937850739465732382552981270700 1.0322069039962651713669206969177361 GT 1 -15613797466550316916261378501.8965539190688770734897906248942839 0.5088118173385765898450585086045160 0.0533147588358326062901140438973220 1.0547886157394191545859272534788646 GT 1 -4988147428.5672238353970721292333821707742751 1.4129268237949039890020517960591537 0.0018931523228405748047796940792050 1.0018949466006176985611527105734024 GT 1 -29036327701791514698712523.6302131494214993220395984050212341 0.4000834986248548072674549719406391 0.0249505782593321540016919631867220 1.0252671203041445053915128701337899 GT 1 -6038601292593935782933.5746592539747504255706257610471778 0.6085225836042008997364260141492074 0.0151493881837416332791515186258157 1.0152653124427659127905902284380497 GT 1 -14693889049426962250151456085032.6250179409659558999615760852880693 0.1297274012845891515584697235965895 0.0074167246301734387194275360716334 1.0074443652858531439930311772729143 GT 1 -77932704159274.0226250002854335268227761740216632 2.3999466970766596524163481203811393 0.0453679511572318103053594427387917 1.0464293019142258713437703375835275 GT 1 -938669862660081191243512024871265.4569930989940617942421049550999582 2.7878120204110589782982530998820401 0.0752348532920195441395992789630982 1.0782154691574504260976067435297639 LT 1 -1012442343579133.7456552047858875462789546302265798 0.9260938048940077425354046151154633 0.0848366732638470677458423313907250 1.0886527304705017398698690699895263 GT 1 -784238.2879074754336373301462344353974563 0.5735768299660221408744951232536642 0.0120613968421927875535263990410138 1.0121347257180243767462038445084703 GT 1 -606589824073897666715501.4814415733842411425447827519745959 0.0268438456253269973569629976524147 0.0109958970420746457352948269442043 1.0110567987755881049299691141531137 GT 1 -3904859960204361240595.5630173508836823068528304990646960 0.5054567244406687072475779991746453 0.0201847016929478727310001252269898 1.0203911961956849211229642191036068 GT 1 -124712117133752669.9911200282793927140768720012555756 0.1753631471085795707352438762668528 0.0953691031617489551746685454078242 1.1002282672726652676418785904266289 GT 1 -50922905498853210438.8978296872387896726580493733402240 1.6493816474528055576495890586650864 0.0432827588315236712218346696916648 1.0442473949610003296578801729561776 GT 1 -118851010968708594866.3492976839719222188540173849889033 0.0747933012773895432578227127539353 0.0221327171757827532966233194011996 1.0223813207894798957615820230922130 GT 1 -162060594185637944.5232203225356494148895737824504406 1.4010430568904279107681130239761853 0.0880714131340893849875494207375029 1.0921935958488121499052839372552300 GT 1 -3843042385358268764222227428040373.5672869978328343763383666289520597 0.1359636429213368292615103130947451 0.0168901903995163391293863671181723 1.0170344564264258289433443066073243 GT 1 -24741145810433790520463665412841027758258290.1196401601435668219374256566949216 0.9179703539139258263913683285454810 0.0313629539417043340435492727182315 1.0318653027298540859945482850271099 GT 1 -10761409993062873847655030488.9970907779135282122429897977898411 1.6467281674858195881040086945136258 0.0300191972710627820546599293688345 1.0304789986816486436820728148210585 GT 1 -229019841862492698521455550960248.5255495961678386512910101334311557 0.7212336236316980313884285088991031 0.0598565659943019629638903035884827 1.0617228259908970431275013383092061 GT 1 -140767201733655396438256107866979280.4850654699012231431370155153687299 2.2619358388092607737714489599170254 0.0855190286630077114064292875841144 1.0893986190910548666864689283489318 GT 1 -116341270376278118683397536739625.8841266073992611696050560321370335 0.1542321500260267002101170815923833 0.0007050902011431755647610602079378 1.0007053388941465875361275164920424 GT 1 -716761813070840917.2477915108433099383756959667066679 0.3404742790376213402687086015437754 0.0450767579101709714207837850859955 1.0461243165066802611509502884538181 GT 1 -64027218440.0206618278653692789077204653091070 0.4040932611548166965821351729694967 0.0825577916694706605533031196343497 1.0861656892328597637183896042780841 GT 1 -62219.8074974032648202035941061833262226 3.4185011085081401115311097751064451 0.0125185073313741770695130939712506 1.0125975239838776955181421461532623 GT 1 -2.5065399225628130371055402365175254 0.4042464518569069144871276599412393 0.0988617306773745559916771592428370 1.1040965710806107747470714129847229 GT 1 -3940.7983291986464279428903016014758710 0.9768779518680099452012461291258316 0.0758695665054918773523183820820203 1.0789020555122477200740352972215336 GT 1 -21113873355452550098408.3429637971126241435954050237881693 1.1623284147869224984639617720712073 0.0921868516720862909944873829036776 1.0967167053370617170339961173364262 GT 1 -89471341581816119.5234735544383200342638730600511621 0.1659430018343869399936997882643282 0.0132579332219063144952245428862083 1.0133466042200744426007671496894365 GT 1 -272234354755960410503698.3159670108050207796295237585082038 0.6385105596625603254513871582689864 0.0838767967301876174906898059825988 1.0876044219662491884626634259330750 GT 1 -570643.3402777083223543051076990951331323 0.3690889870372525049304981162536620 0.0686446690695375575809227479418929 1.0711144086450639143896069974373840 GT 1 -2430082195898.4099562732228459143976994215388335 0.0368860080076473405564020569008967 0.0344103331387098982543466924986634 1.0350163105182012897360614424976023 GT 1 -140679531005657491.1903168221208357507095259989831542 0.4065242024646448998436606726149552 0.0981247259432186385987507709931596 1.1032790455795848557386232076100034 GT 1 -111195193479406192.1002345076564359610865129688406906 0.9323090776490357426321203069130347 0.0953659086842144783304788789090087 1.1002247360292538318888381050636601 GT 1 -8.9344467532578895263610851808086482 0.1637861908627952124954913819614486 0.0839784189872894563432484654060713 1.0877153545279963197558053410845898 GT 1 -38016935.6311473179054673658182105192029163 0.8995567097381124215195309186682831 0.0228145707902553581921124063153761 1.0230788504651983777238755425822752 GT 1 -986.3298314474710103185545431255437925 2.5912732106433008391779191927636005 0.0806476606147226080140310803990831 1.0876210496668295616856724265357278 LT 2 -76610107672882024594107938993540970.2754697462729912930621911032571017 0.8991823672111190398088381052868978 0.0995228843375420052939144694955977 1.1048305276124626411787141787535375 GT 1 -11931961765658.8144274474237024849976190283645709 0.5412551830693867402212491569562495 0.0114608381892783134123842913123782 1.0115270197452667657543089456012782 GT 1 -15317361493520993536.4079548379603619751434299932764315 0.0679521440741869729488205099119142 0.0643066202919218788123324319771001 1.0664674419544559880349234489195062 GT 1 -24420.9995876073401630945417186467089311 1.4467806022081638787219780163261565 0.0542084216619874787820543941462448 1.0557330530856224765124390398252077 GT 1 -10.8997626349129058763341146924190163 0.6204108938702783503466080393372915 0.0055604658338846929459299283179660 1.0055759827716975569916680859596016 GT 1 -16.6598069890318162027868593296217209 2.1778324823296415559886347015947696 0.0599594449835612697325258443202744 1.0618322610142380156791944223366066 GT 1 -263.5134778423963808143541835786750299 0.1051292641898330881983815742764746 0.0331839845915487721941091096008551 1.0337470649109782852914771749832244 GT 1 -1873714290.1383010933014054383443988077417260 1.3032713091467292871117420333969043 0.0852698238779354714170058169320503 1.0891261466791518661822331244682759 GT 1 -303535268089035043743637576.0487535529448656232526422471996763 0.0586114888449433698527495513048059 0.0501627373287245473566188235474890 1.0514646115127802513880798342429167 GT 1 -21600181073277986493424281414825011454310215.2593793362526094254985032003835332 1.7190924088247251842455248042277556 0.0201577084003738715945080298349995 1.0203636472068057018687484556399170 GT 1 -310771300121042546958442768.3370088609175549261846482133285103 1.5917164028609190325769675830963330 0.0186387174125868370042067896967403 1.0188146073095531207924080628247325 GT 1 -325360.2748419260224601198379589180096481 0.2431307637659885973651210974206630 0.0936130106789324051366901647478876 1.0982889236067258333990919793925989 GT 1 -111239976198206097551350255894203406591.9938440055560496935834890422940546 0.0280130858898240914017654721406388 0.0616439419749617095612053031391709 1.0636258092257975788919712518308029 GT 1 -167504939027417236249445308431980925.4327422194766938183737269974476149 0.6919032723101693212236555949376894 0.0492028499056284657536498582618106 1.0504545408771453060916427241758545 GT 1 -16619018311871924009025817139033205298629565.7948289922774428648662437061622854 0.1787033858075307598261135680138804 0.0643198296854399112087033674692593 1.0664815592786193994346752717330436 GT 1 -57816756.0851006139358779953043691949316795 0.5104311533962684065069184350765432 0.0515292158168208594015100514758211 1.0529042922077900746117282128652652 GT 1 -59875073409089670299644057.0837019960454855989709793216071050 0.1327543837009875222056509852166645 0.0491222655788128280445601119076901 1.0503697899793761528273077608154224 GT 1 -3332926912717207748203206011759571679877.7873903662446287153366810964875884 0.4525289551570437389559085274050564 0.0697328653951287129349728942974222 1.0722834925701656776231452581964191 GT 1 -14643670182663430947.8393803737591694159132451307677318 0.0610450076757595355830708326967185 0.0912914981813364588732768829924909 1.0957309163009830074569812046348860 GT 1 -1550132320321.5982124284189829683609900652833894 0.1328339516755906350799335192366053 0.0544234922124011729200529371655800 1.0559604763491515078133773153720865 GT 1 -1030970143099964940320457788947236.7294732972838982347784106576795910 0.6450412990919967552702208274572655 0.0602097613432002924830966019017729 1.0620985789849415144602324944475298 GT 1 -428218510886288637110212287388801787.1739304132679568416800551783966087 0.1931487461411525465730368159228182 0.0167456012412847752718740452833132 1.0168873939871508544204527519216916 GT 1 -584258250467312607046.4074314005594948334157596445136203 2.8543509623364738405040704201952862 0.0474979274814622729599041005023305 1.0486629961111676761968142119163786 GT 1 -50555578149788497215.1945812253093113651204081913653449 0.2804725132895457228433306487289677 0.0464898286881203716379364026854484 1.0476051866552138184554512885972371 GT 1 -7374446.6595999494373488184436965832106223 1.2544336247966062019231279925731166 0.0578101807446833461976139327026311 1.0595485180650465549049597558158339 GT 1 -175190202124000982410324374091611.1447810337843496193775304737617706 0.0037960378475235982505955350342000 0.0820090316401458598879429543013425 1.0855677267980022974832126417612740 GT 1 -404713881697387064302507244975770.3128688422427471687213294478510285 0.4836924494305296108946148082783337 0.0851901560476853983027710004686858 1.0890390561214966262565729422925722 GT 1 -387161562542711137313594678548354.8834749205681770135421889071063730 0.4537435121270693281328933649299229 0.0825610978065950365321663252571361 1.0861692928855492129199358067586887 GT 1 -2192942253468155419164980.9482256869935288689293726873004081 0.1222226841447913395788116814757595 0.0683344423930474974790840653121988 1.0707813724657423211885007124628255 GT 1 -1033714088470074153298017589.8973994463971202853951296514199854 0.1500250069970400409094260571570920 0.0126190189939532244957618441960112 1.0126993150341464364900108348837858 GT 1 -350736287134688716.2204571431056418105287462987039029 0.1558528005872360557904879096898273 0.0188538100749048516042443533294986 1.0190338091889772012394397842035358 GT 1 -2170.1607331973115072441540079552268540 0.2633407632446902871830594887621438 0.0491650037014354214264069891296044 1.0504147369599998910103547934313935 GT 1 -26606956096441.1843806590663618614184393447524871 1.6353950727713787748524972999422522 0.0588667451371083395035180361058032 1.0606705395788167687551161067723020 GT 1 -6105955698128005825647474512139912548670319.5961805326784175850880459802459342 0.2273897945992838784688199408126771 0.0647526130564231437589802096148257 1.0669441997234870306501704252663883 GT 1 -890944291198424919477.4110622820974390619214369316175841 0.2024483287255906015024223725506887 0.0993820101044100234158212816940815 1.1046740958582653966098982229213712 GT 1 -604879533133.9192364970235295046176485938061933 0.2985562198065728950976965666422252 0.0074465611141850835410894056842492 1.0074744251641472988245379840807859 GT 1 -187295119120716803528458580235416208.6550079907540762036690724087225553 2.7473020054914608902200046621119682 0.0892845677227796342631111623497393 1.0935247990405504654863305121395008 LT 1 -1108438004940808.6769185014669667173615791265629914 1.3947659544268972275713498184814764 0.0413809600387114153869128243309782 1.0422615301950551653047718018528398 GT 1 -8230787642.3180744318695337322585965241355747 0.2003406880754713599484190711310160 0.0432904224426594821380592564025348 1.0442554053129624237424868930969860 GT 1 -8837790148830858363349.0161666063420725777756202189318852 1.2861801795935903321901881466810186 0.0472919139349267995200766881297021 1.0484467327804162122248822464264374 GT 1 -452786002763793469178607674946806612345279.0050708973990893194594366220869263 0.4767990715601755548342937409549284 0.0479804910259333006422023528804864 1.0491697517809246418750137852668896 GT 1 -170124531451525.1393893801409701174656315882600957 0.7057462042950450232299350057187650 0.0038742004332565803199325348249151 1.0038817245874297408973225916213880 GT 1 -328648820002.1415300876786536719165068385128582 2.3719019345992875945502585650754756 0.0748584893024491429197826378408167 1.0778085686327600969979469528273549 GT 1 -7431806303601038992250372239861874.3027877387980006900156132009078340 0.1190821561876131796493836618306420 0.0977638550968530150193067474841750 1.1028789917388009283544328629559177 GT 1 -315.5533912155708783628922297775337535 0.0306234555543193236395503835811941 0.0062693445207386385888179584943681 1.0062890793874551052024946578989684 GT 1 -255091447.6035447692050448288525482393479807 0.5385748000903316354557056522122588 0.0857772004670005624271132043258372 1.0896809740681928449677979138527447 GT 1 -111287952946387220.9131003157604506743237926029373439 1.5678345952687448059179677956619843 0.0264958824900034539844789356571458 1.0268532245845833715682090943679627 GT 1 -34952937755102044623947423138151923160.3213192327828120194005712389318849 0.6952025420428406164039704855975627 0.0211286550246549944549589429354564 1.0213550598213698875427167864163763 GT 1 -8750181278241081761594190681013.0825881977333056435844004549627967 2.1907652892410272935260920480980035 0.0099605766187399959285027612541262 1.0100105150491278683739766893869022 GT 1 -362.7723590704883569029656101751894086 1.5049332896931407324604955845679656 0.0207429344387444798990053340826639 1.0209610911839465345192766179345874 GT 1 -126514457114691414886063934778447071561.8625001515709746789309548226972101 0.5021294580303591347980052056695528 0.0505536453374524151684414860419582 1.0518762488382223674073183973070465 GT 1 -1570089.4888114653685253106765775824270812 0.0182875857333977718744450410237240 0.0915030987463618230971320058706071 1.0959638019897708309788553067070884 GT 1 -58.3235720804179810717636338224566213 0.5237996509374964954823990605498693 0.0338182994408077808459552289623041 1.0344033666404500989541387659308409 GT 1 -46470995243189.3553814049399482205038738386598570 1.9756671633375785770974951059710859 0.0436319457993357163531106755535410 1.0446124460881352088888297498091504 GT 1 -208597815894375477.2135012702234361412339717637679846 1.5503686608796207277354968513810376 0.0407441468900082290596826342670609 1.0415974481171188470295053019026500 GT 1 -65116560774177173085385868453130.9224146144195142723247767098744098 0.2812305766724572840716443154080669 0.0079545376753321210206724767776642 1.0079863437910603676200748439429220 GT 1 -134273529546992203899319093140.6535780660135598059922043299874225 0.7484560261509574671792406168142803 0.0986497500068474726927524775355384 1.1038613621799906046406427300912276 GT 1 -227752562260799223504354322244800.9548779741099416494669881449779528 0.4173619350406178084905354398956826 0.0806488122895187766406041873610315 1.0840870884807104684905884993374726 GT 1 -3540585698000058.7839461468408307663383871015613921 2.1142763154281568876648114414916657 0.0691265172184947750651510865166210 1.0716319048368987835886470368200076 GT 1 -527942468825994676072839755690770.4787703953474299473687781826912911 2.3462307350678755500200699479848703 0.0379934851644098393871299825868041 1.0387340561609935082860271573906847 GT 1 -28698589.8060843406025692010397611866516496 0.2622201802976280270067853654576387 0.0196795915112899067939712144303729 1.0198758133157268146457572567233487 GT 1 -10325966245049126656583990641612888.8470409335775318683805688408100872 0.5058523764967891993737352018811385 0.0376245878837852432751666308051137 1.0383506631557103888882542916301213 GT 1 -15203.8502539517201819389192118684385684 2.9840444149896211593370279316164931 0.0565369491884765094615791525513397 1.0598915848423610613731052134869322 LT 2 -10218577745.4496136743671231872090990079728786 3.7003322458966857393606722484241821 0.0403952859007325356080858789353769 1.0412338354616909805288825115402703 LT 1 -1073263035858539626897.0486653095025756301042070650714235 2.3806786752394918480943108836654951 0.0785803543497742506037163915754352 1.0818397051857782863698167459671793 GT 1 -13348473992617090605369138575.8950433396495221042888200476076482 1.8307641030926417312996429122955013 0.0076649435760300302141634050595066 1.0076944702329178078052306245016378 GT 1 -6527734639731079840774.6958337162482845386609359944405002 0.1412998239195901609535963159636702 0.0696110123942656904127468645879055 1.0721525140410514913699806834344599 GT 1 -3410060177412143625.9485626044103002441840552682407249 3.2916264666720556257593413864058780 0.0595024944613451639906937632402611 1.0613462825160686297994059670321619 LT 1 -57277059615686593948154466.9425115672255969740487757998706982 2.6357864812534870217384224763829995 0.0890548918479226361881580033165217 1.0932726380358224711696468314834852 LT 1 -139711174187967850081060855552252411.0439966487386806480496316822827847 0.1992971936427222575515961555288028 0.0243886334057101810599179115510311 1.0246909618325869379820911283004224 GT 1 -24300941572623492.4689739643867156046938154339563657 0.4040299589091197290325302461817132 0.0410909683997858149668143881328344 1.0419590661576966272079115216136165 GT 1 -19409212827037619723.7451668293422076794200549536703335 0.7879909170476397363483571312031452 0.0816161003042907743888958833529160 1.0851397843896336264234961865436710 GT 1 -367624.3288205807571256042437370755892206 0.2472950470036280621483954475959018 0.0558360504531567590963098419772951 1.0574554525490383300513220014304781 GT 1 -2768514800838585795965.4801641508344785071658844961080206 4.0355432079184666145012852916748661 0.0951795983112602845289339940512609 1.1000188061489137740772646552059090 LT 1 -256681666478299245592599131728542069504.6153771997296010236238737195663700 1.9214151853394063821539989720888918 0.0820185566678565535977757659334857 1.0855781028010948505790997786322863 GT 1 -4020799.5723893925325844930072521119850674 0.3591025436779630325631788074596302 0.0659527228825444722890713600104060 1.0682282241355623854099921889824861 GT 1 -693290.9442808294191840467305561044628475 2.3326671850648590340919615990044470 0.0113889196944554655636992753232393 1.0114542700944586530058497343779127 GT 1 -2520.5960865744430884097957937958333231 2.8127615620612580953971504514954952 0.0740698251054333308620103716627355 1.0769564522605252280708111968643566 LT 1 -380805327206908283426787915296763424.2742646388223759245438075459129536 0.3937350871590107236856120765417918 0.0425863984932279420922865942092734 1.0435197954119082361635370922774557 GT 1 -133218752743836019327.2413397951176453937317253057773640 0.5774180347946206067481610580935579 0.0182392358061394551905084626478815 1.0184076212919323940613548327331904 GT 1 -4446714080147.5430842072075235526621689174163233 0.1641367544943893743551306279001807 0.0434926977108088973856462409840319 1.0444668557460354440186555917417543 GT 1 -208157687098606790763577.3896889336979337010167778714465916 1.5654571725495006691569511058969025 0.0214361751219869149332837836162102 1.0216692670090183873463905303573079 GT 1 -400557440.4944171990459642423057810899638795 0.1704900411276876719032823860871254 0.0815285823579078529785457553265534 1.0850444933281950064154816346126921 GT 1 -52632628595146291.4541907588879684397573987528961562 0.9243671013304136751243779667194324 0.0944369208665639176317265539055592 1.0991983418724490845454281564204538 GT 1 -1803190250.8398194886319622061244041035383016 0.7354148291698766600542610832345609 0.0591125879366235633671425812633180 1.0609317936715415241377093804468378 GT 1 -682570098293944.4307434834844642851231799094494587 2.7380684725153126505182516534473498 0.0042962892023052754522644955312397 1.0043055447720092506282947223956303 GT 1 -4309.9818329290168509436876073948271943 1.9323229575494271576531659231122983 0.0091693786359426011128784276026346 1.0092116761480388811799938177247840 GT 1 -566676912564716577123949763774116879.3848571023705176104472512043430439 0.4972720797876157149909069532414996 0.0494574774925660367073128258018239 1.0507223810659647513290202886306993 GT 1 -5229738816327545971053013197247260835829446.8993353455918516395316001463804148 1.2101641961447292977915510322623904 0.0123187947826176725296708920486120 1.0123953000864227163863157159348212 GT 1 -13734397780045554036560842.5357076115188066940217902268889290 2.2762298650989546513853928052722484 0.0052392687749388458851990437920588 1.0052530418719544375645674235148809 GT 1 -42908.0038897955313647740386586934692325 0.3625027885966383686093202763381140 0.0304055117760632531585548915273808 1.0308773482707683578151134673313911 GT 1 -5192887570668335409454454442244689519087610.1977972932749138089112888030843577 1.4314060524582887318488358404648410 0.0721833211070157580217940015230065 1.0749211100067341965999555437130413 GT 1 -56099199762276091641609983.0273147209028259152480647208836685 0.1311805496086632903046282444752512 0.0395240123193248862896972048705121 1.0403262968979209463864335598937434 GT 1 -1189440456860021090439312057.0972237569485341261959819646726017 0.9431196979432823644906350986292638 0.0579577529809737753986231703890479 1.0597051571958983664160850286750664 GT 1 -9603125958374838161640579145385990.3921665912910390677163341009773096 0.5970237289274271623117173009989556 0.0403677313075406852519360054702852 1.0412051213493215298228260238479333 GT 1 -73489602347623610321856458389992644104224.8748219770996975356183457130470568 0.8356823386554371949429673557667325 0.0168496862692524960434356837070085 1.0169932572689095280613099955724801 GT 1 -6997526222852735736721037443.3268534742938279954043731136838552 0.4073691612802788683582903155716285 0.0499109287902321380471078062585121 1.0511995396144899257540628785806590 GT 1 -964299364376803512427265501793853488413.0638626884051829527824936600932539 0.5234415269502216863980457659934033 0.0269962931198044682150259814092584 1.0273673870601253928513643825305117 GT 1 -329504724665582488873.7793359364146793696664677790686552 0.2068979441028258292038954506338627 0.0188089079353330005099020402244885 1.0189880452522760057063431022410900 GT 1 -31687424016554.5276112263884593993151075862792335 0.2644533170021740779054430127272450 0.0493503569959029073761188956001408 1.0506096933548330744507336489226642 GT 1 -27463872197971.5795455568367313753232718896721731 0.1827902484598019147054369370832952 0.0540745045564552805856735077015838 1.0555914704910453696290250443150382 GT 1 -7626.7303359244549384957027533565731706 1.2452373249642228107392821597226623 0.0983707407960589712376752538364984 1.1035518642499337983494200909897177 GT 1 -5141197773315811799360169417140799695661.2152016780544258577313851517561473 0.7759316677202584359772803832700161 0.0888776521052660367429955571998475 1.0930780900868676401275287456046442 GT 1 -24619623287309100343924682508812926684.0041398014876525065521746739748523 0.8128610033082359660745866330401577 0.0123326976215193122655453980847456 1.0124093764267225756997158946911222 GT 1 -515080683208789894194595332266538327.4644106526345854394288362425886962 0.7037624171795502953262835393410341 0.0200351501598565993595732501680046 1.0202385754708317230661048423727010 GT 1 -619190164804122529727323443763359713.8383494094677270822052771475426001 0.5703616317617732851101636582597587 0.0005836350554962365951265890979932 1.0005838054367321052889665066542656 GT 1 -23441371319211836303809203608574673589789697.1418759195766151988657190624316972 0.7720993033464160525034519590995337 0.0394791311977935309702994904422273 1.0402795699900782198884986123040836 GT 1 -16193056.5191621496966455529731442559941130 0.7712874787717447026030052400484364 0.0059430608518026083251241393782856 1.0059607911208935397089741592057856 GT 1 -4176714921262126763234108161338.6364269166575339942801393380134884 0.0293810947849051930380935514223887 0.0767326998410524176096442034748810 1.0798364870996008319068186926875615 GT 1 -4214793537853442138550.0563861360010243076932970485128231 0.6948560043474424929310974125578848 0.0429274355542829614139350116227285 1.0438760654865918217844810272017443 GT 1 -10286338.1072086657216290183051699816014959 3.8670935640126293672805196972477566 0.0709812324066101435508881820756203 1.0736263384419028390310385282862036 LT 1 -72066466074645452729.9562441166943505210438556187790084 0.1903091255026738411248364047237060 0.0040787502090346789846620774630830 1.0040870909983917356009739075917774 GT 1 -465938730963832989271522829568727994.4687322613398552442619850789555155 0.4189881803829310026517560456672974 0.0240946393248646516741611897433687 1.0243896637919793481057114092609538 GT 1 -18680205415828056916481235711313.0970396690461455769254232607619777 0.5396280133287524024334652912576981 0.0583182632926150625129468807642108 1.0600879206146977444400153206338875 GT 1 -803660652260271345595225054136893606260744.5510277242626196428527287138667018 0.1384481120652952891597897541630402 0.0355018736934959300975207547999617 1.0361473892960898355779848085974489 GT 1 -14210159295674.5814272210710996805788058319561233 3.4230170953956219035346152458824397 0.0983899182710375136757196716100364 1.1035731342772052131464344120212771 LT 1 -1197904228562048074099870825.3228411828345560385500086182095142 0.6721341819166040529051329811826235 0.0491585261224566188616534639059148 1.0504079244668335557822723081582159 GT 1 -1081345517970968126530659695332997.0601770447823171568248355635726921 0.2364095723110681079300176992385530 0.0226016999712951718681329870896507 1.0228610334265957381958713717696029 GT 1 -1795989623729945731753297702513893165541.4896590739919491625158908973976833 0.0520965223742637847024621814451840 0.0607110225134423344350624878011465 1.0626320968673443716948902917625325 GT 1 -2.0195586917349532553545842288547967 0.1910596363444243073297717289656529 0.0072996680191254492278427212510345 1.0073264409643605101002837162048055 GT 1 -425745258144632801184309419845227694878640.4514054510303985907635316286733655 0.5047003091133747832081580575231091 0.0251649198805379911145243907172547 1.0254869708869505116975924132673684 GT 1 -9177450176086922751332613121.7046366137018828896193681316185584 0.2225068460283006610584338149877887 0.0778135599346943092878290036406356 1.0810078632155904670255284835712746 GT 1 -22162.1203795291245659070724948584261743 0.4937969633077476081751140548260504 0.0775234763998950250517056290488192 1.0806933520632506736122758013606950 GT 1 -214784905073506111186968701.1257286918043687177084037700414064 2.4929356050067151555204670505902994 0.0395088390862552739251846010561278 1.0403104994043708560166370355495530 GT 1 -32.1158325513256362773446160861128171 0.5965045688701620412284374572647615 0.0348009069399740130514126122163524 1.0354208848711278847991941232638679 GT 1 -1967680915513352196711.5991856018627624242796859728357803 0.4242362597473278473711990274193907 0.0565276726109265384174144921750986 1.0581882443449680050184480147355956 GT 1 -896257.7396343583047788221156368735493847 1.1155745456748361768869874530133410 0.0450696051361192052326625643607661 1.0461168261169316429466412355951202 GT 1 -36397973460.9961431929353085224792722603739891 2.3720319206355017624087737999514979 0.0104684137678921220116192406763896 1.0105235930421137815465241658311273 GT 1 -5471412.1127908306366139677929413153707175 0.6280238511463217999714908112845036 0.0313818602726810889097405080206452 1.0318848214087726694846207157101842 GT 1 -7949227779422216374139165968212997972.6605123079787400845150999527678353 0.2116314124357184287948287358478894 0.0709237433522346468491610974221867 1.0735644588785394751170037218587603 GT 1 -1519798244.4999924018614506783024766894728632 2.3054303392161427375809895797409877 0.0082670253337952554402642323545408 1.0083013866962768622508991512556931 GT 1 -2866132872410481952142262922946837.0567232915178595983450478732449442 0.1615030030831851664133880650098168 0.0461767219584389880073701714591205 1.0472768678364985189972519246725189 GT 1 -11041281656877512945850772257471330737.9905372337765306341172023212459194 0.9356717020660420518010561278826164 0.0289818624870966346187711994766334 1.0294101316552732441059341424003257 GT 1 -64287754239014102469504001.0394413461153968236066291003994626 0.0966430367905994262333775107717696 0.0901536630553922081381127434274893 1.0944795542302117863962806931359576 GT 1 -399741461644610033672475.0221513413641462274434970145376436 0.4080761679736001320390985925970255 0.0565931138757151024758180060219051 1.0582576088960703002142429545916287 GT 1 -8032397562824161210712568966712704086942.0389124488036291580403189640146238 1.7288355833196993954125295404451816 0.0031696470337506769701508626410755 1.0031746810049991095871602991077565 GT 1 -8379890784409447726253307.9242791968176769325220860524870738 0.5395053234651882227391759890775379 0.0576717001847662591715962471511129 1.0594015515182514077111299404467917 GT 1 -25189474932174635.8354246320490406133760549951686734 1.1536487636215742135656292371108504 0.0038678872954042333323920173959768 1.0038753869161739438823981137625096 GT 1 -129168375132955206954814716550141.1614536630210701447888060927037499 0.6854533388294311131972288581576308 0.0479769040180573503240880460708378 1.0491659839998186750417048748833914 GT 1 -424016612972492808955246045210928.8401694599791296625892133553594510 0.0017927934413832041288597202080134 0.0853905804098304889113197023665689 1.0892581686747982230724594939524381 GT 1 -25344525.9048364293235072672618866279473553 0.8730721811716590422636244557304801 0.0650882527947546440608300206567967 1.0673031421640595064557632739513146 GT 1 -7581736131819968040310058253656415.9548243830339222035791009359142306 3.4518330772002552657974355894696988 0.0795293451193017321583770389444898 1.0828701583601355964598625323913691 LT 1 -3113240977637925373409735656042896912.0085920940077928465007782240805633 0.5575290196271279589536358273874530 0.0268826979099799817584119444686997 1.0272506469299588686459073707609154 GT 1 -27208018.6712933959984176061460230391684121 1.5008047248748279495123495081981533 0.0227367884540292694699549879579781 1.0229992552948314775199730520471059 GT 1 -2695535686462050687791748808.4130837381083921544515420731676754 2.0898840425578825011004838138811918 0.0187076199929055988287704575314745 1.0188848210020249592608517635010154 GT 1 -3480162531388009684821788.4335865720969326924348075561819612 0.0508551489658745453661835952321022 0.0281392476697421334338690476924229 1.0285427437037249194620339075641538 GT 1 -20888131376785473288215349084494502398298412.1243347672853937803759131450920719 2.0654265518477283390544755216776384 0.0132257415967898821110625809516705 1.0133139805982593759110430003000030 GT 1 -538717800001400996.2157485701869094040142851480430606 1.0983918968397617797431521015521447 0.0466311733134857272870603432193699 1.0477534337393471955781598378283344 GT 1 -21338168748742114346558265678839812.1468475972770808722444807586796258 1.6447630445109619198175878083723416 0.0406895718887118610852739823388261 1.0415405566749567886629231818735166 GT 1 -66213279469488991376355647467905157.2725800182699216095702370318530173 0.6384144611688186225161266319081748 0.0490464150603281669474672083223091 1.0502900242107165337896636347792446 GT 1 -122862.9269217122731908587040192776965817 0.0426091607208851799757221636455582 0.0756021206240363070312694612393556 1.0786126946391038659916183775434034 GT 1 -20277722246381732718468812627308569.5467694033208061540429039179301713 0.5850180272792484082492115676265782 0.0181464038494975049787328354904257 1.0183130691654192932913927470843134 GT 1 -2771694873747801405348961799925445.6880017530267793846384048530895929 0.4265071478913622147421068115344731 0.0790405491937298167877742934339223 1.0823392710508181404396812315645064 GT 1 -56390326274447.2262076188866543823949402595630465 4.1982649412688208889742322681685480 0.0294873656223091642233768518430804 1.0299308580366973245034123112705173 LT 1 -30751577498268674.8973879925810680949192790600241806 2.2456467399162698656589312085378820 0.0986601757956874472414309055330915 1.1092677218034524336577595347257139 GT 2 -12889.6837713844783163001421327063609367 4.2769668846722830623982363833617430 0.0628267412250479335221690786580296 1.0648871058595509505125872922650466 LT 1 -7382440130072108150752.9045808188949506134687197338004482 1.1461202370248742332391374393731060 0.0294538888024421542442510480399446 1.0298963646758481060495291060229415 GT 1 -405745464147511427193.8413999480992683686441335666515308 1.5450087243995750116673564536313196 0.0302983324780103431620566098183518 1.0307668140464370467139503516302606 GT 1 -896448722631786174122072053839353459412.0705825346104102018949508769447072 1.1907021774032922666605974532154540 0.0901456485809046585118079187274236 1.0944707456667608288000882930345638 GT 1 -17343087381013533408004.2180271091871178643684247202135240 0.6207465995292913770059306935185085 0.0061489171673532662783022098942348 1.0061678996128461656539333858846775 GT 1 -2077419247245071831714130164536728687890.4791757605883748872844173391085243 1.2575861963884702049246340020476721 0.0056233681215903286219166344289674 1.0056392387817808959893944095506147 GT 1 -3929864466849797713073085.2851954751411108101726300501932367 1.3103501801750155147893989390445068 0.0459879813778194626317889444313118 1.0470790094767487939740316712964163 GT 1 -30072417056709583100780722330.8806071404581542271383198798868495 0.6611607198184312502867765818437343 0.0341095728731894299688848466585336 1.0347048806785798832484776378202079 GT 1 -1.1337491656471663559109764561733716 1.6034133680719823471747356732603605 0.0114914955816427385303362893143179 1.0115580330515117858725582925624615 GT 1 -26851441387.9687481755120713960784895764745679 1.1572585491068858853147126738188379 0.0342404772527307594871375115029718 1.0348404170160516459392574153857670 GT 1 -206526478112719490557160281834916.4094029742698035201252293864873985 1.4130421479556757697559112404058265 0.0538623735313368543043057911258973 1.0553672379868011459855776441416294 GT 1 -7656829809091820392120623727882844.4031354622823821283786721974527563 1.8731778252037323159173571167815497 0.0247731472420154074150252476807294 1.0250851655522703042607670133820914 GT 1 -625322472392406027.9380842095166060685930933675618706 0.5674015395527327076417384984825798 0.0036123338555997950649208929076366 1.0036188740886291937789671112769198 GT 1 -60091569141815919032817597241619412.0263335680627608415614755707011695 0.2124812652362281095579706607425771 0.0632407588903963485537387159947743 1.0653289762813621041686392853684941 GT 1 -116145499886867508089740870.9112353708009187358386803872583197 0.5318601195375356897310697066270399 0.0605839892767117713392771887329504 1.0624968619712628826564671597154014 GT 1 -2716185826025629379774767.4907966807730610753692491780075040 1.6662683748022691978912120985918376 0.0165023263931443477314386153946526 1.0166400065784384448441726817116479 GT 1 -70.3502298452617847638326853173621673 0.7935331347487222155670716025223221 0.0154825852109925030565440483481778 1.0156036920913930930063682939839777 GT 1 -2686689968734833165.6014433574858951272861484552588791 0.7244264820136401739787600719545711 0.0578285310784028282222803095966477 1.0595679945145312667460590030659848 GT 1 -627008737438988087742565645595470173.2587316911426676162595974427629233 1.7505330564390055922630023871872017 0.0920161984414349809580027052592230 1.0965287402331833091241640991137856 GT 1 -120199601085298062.6950963670913705743397411738270006 0.9309577878283306462554025424614438 0.0652050382708522620049393489062525 1.0674280660098064760360924827117049 GT 1 -3338005100330210452318020426849091774047808.2838389506405931922345629081307458 0.1745978479512299186297096179111367 0.0806038324518701800964206053827607 1.0840381640457913032916985304473599 GT 1 -202027829.3633881049472706605230881906629895 0.2285734195446584286047956142087950 0.0778131900431109059796132960754714 1.0810074621128490356346965844874261 GT 1 -12013752869971200229747554943.3313117023330091677272885992897924 0.3756741792902976425959904908685106 0.0568550098211247807628029623832780 1.0585352540012823302113062067820168 GT 1 -1168469126.4129308367479877612557093324274909 3.3947267504146136816256086559917587 0.0646496962717319386970091247251587 1.0668341634657622771689507711095498 LT 1 -15474029016701241.6433682538883845565931209725322788 0.3257957686626330561699307262530581 0.0408458567929044757341659763582476 1.0417034837436916912622444907528157 GT 1 -7841161296167649874078496286014906107253286.6341449719585225822378611056439879 0.5098710345214042906029207346671008 0.0314707168385446951448557400123322 1.0319765610098748075478914777102573 GT 1 -947264971153097730997512111861913689640336.0386705617379992167257060113692794 0.1207097417635467357869838731572465 0.0516569671377265921403005622559531 1.0530389931678430614005498095043593 GT 1 -16766157390349185332335.4339146317507967374961406436365835 3.7538703459206874083923165132794874 0.0469937691131673423900788748465581 1.0481338371679523455040567018868563 LT 1 -175106427366215634873435507288800.2351860256952176643555999856113044 0.6449791723584907005591625904287949 0.0972920923996672775637016780267103 1.1023562467736322740096763419885598 GT 1 -845907127976164906.1911706404982886919666448608889224 0.6358524475886288586775851209385303 0.0344495801738989271499223450019011 1.0350569570103589408338028359769677 GT 1 -72153.3014881604275525293733791204921341 1.8029910989833790895276935415455095 0.0453471496472360221792190660299100 1.0464075120702844294121515141525635 GT 1 -517351609189615421.2096844857162790669396843377344423 0.4892841238307902840615302694757115 0.0285352024410351166248489846523449 1.0289502459637501070241571314502210 GT 1 -88306798234382350541210516246079967367.9494426352610091039541573683457802 0.0212284246550596720023650393681189 0.0538881849987724816890189234229539 1.0553945192393374691462674338184436 GT 1 -1231784850110614067998503778963844.2795812596884765027095800679297498 0.0667371052755885653785899318592442 0.0157342064133295744974834888932579 1.0158593029708811210830775045464811 GT 1 -30758622.7689144682750204200016468099717761 1.0332082443441140560329166766554204 0.0069594955898145059914474872311516 1.0069838258290875902787740128881084 GT 1 -36181934796323850385623225665513.6361050602265820985051969409106933 1.6597839646472368807138057295382910 0.0228704307265320433278910438615787 1.0231360162100606455137991464023475 GT 1 -3516883553640125294.8568406270920231451829506242647886 0.4868856474908595198908166183589880 0.0609998881085155999647365116857916 1.0629396806136209666353513553485672 GT 1 -442200522442405134601241868858728159470.6504578514764712310948248547201222 0.2361097364824913234473557527790608 0.0302505212901709311043556077797097 1.0307175102132964283778548761976804 GT 1 -668251999473280275643015.1436347361064388628135043525347594 1.4376516019152507126051895731438659 0.0783358344726606930606392118373370 1.0815743674110496025349887128554284 GT 1 -204336663848071906529112335183934.2963001609671268703028666667611674 1.9073358959436210962183510474035532 0.0612272891882960526167619706638313 1.0631818835874234610361967078649143 GT 1 -81291925439082955731398856.7536323536397550523718625138951010 0.9756358628936074798246685255579770 0.0970690877814011931232951015685738 1.1021092376631144740849643574622334 GT 1 -314876402961.0635098319602814432463627900153057 0.5528599143502471898379639465499569 0.0426055564082569955516676508020354 1.0435398056840383671564733942559889 GT 1 -118755998851120017601083965692372754.3612224496513374449414052189153499 1.1682791016846049067511661171250812 0.0782785647554922271908265479138100 1.0815122320475500591257365387749221 GT 1 -45892974495532997537071433336.3596923080131020233851520044240577 3.9271414081372858589478234214630956 0.0987165427837615484298770407356003 1.1039354679472105495176801964134557 LT 1 -106151585763139091625472097467692147786884.9855015562140680729037685775933120 2.5090539594879462519609569782849576 0.0951895424651953588903364692016957 1.1050327764902067271579638281081503 LT 2 -1080141.5947976356150052105264776770714587 0.6389407068025350797412965041866847 0.0984562007453236015422285609686614 1.1036466526552149530187748633652248 GT 1 -10032968761350115900793643439654156113937.5477025732780097471557445580150717 0.6632954855857532436978128875621622 0.0033039718175304957157189491400982 1.0033094419845911644662659498751798 GT 1 -2938738679659880947947.1430935369708981288906724133235324 2.1324641333702101393421547843447263 0.0561635732312759653815828791138291 1.0578024045788296050487991177004515 GT 1 -1266519.6202083902504228820316860576161145 1.3158583133739489891374554402797150 0.0092130856795071543303635565483381 1.0092557886397630141255203585222426 GT 1 -16.1515804647328189216292623949581456 0.8083303544040438472934336102614602 0.0324762081191138691734481420546758 1.0330152632892009368140619574389123 GT 1 -183849657823321604.0094477882165022543094646253057419 0.1084726086653464161572351918678128 0.0623241530481933371390625435477449 1.0643509686447124607345920273199816 GT 1 -6176490785734577081536712935644995.9100140105252580899393698328054789 0.1021428923493804017441648469844585 0.0594239416086141031118117724913294 1.0612627633445880569605278211021969 GT 1 -1494360687422576082712082894354817.3599245476010110659773570734498938 1.2627033605516777095459743339276524 0.0914933130600092887286814033071611 1.0959530307547372695941742167083766 GT 1 -1427448005673035823871138290950939297442406.3272269443386859409751168316546958 0.4699986281451487331813273527217378 0.0601556730086828197826359888800468 1.0620410270165739271021594868030531 GT 1 -18652351271739246741631111796300062122906944.3047630368088395581805789460582638 0.2345734674663940998771934519073867 0.0724938582868659113863205736200651 1.0752558627293343393273335072586029 GT 1 -10119811409830188.0636818332021363820585061776812687 0.2583504122641556473300297129714233 0.0331139563556262052714687205542239 1.0336746357219774912214523211911405 GT 1 -237.6152113941338311722987534982984990 1.2038487602418289410254321407701084 0.0194966401109330452862156807773958 1.0196892066416970362648337696309568 GT 1 -169146561653045935942050573683.0670542035598289853019961664271915 0.2278101447172544042343423187571241 0.0208811052513700936659777018535545 1.0211021987298469795093451281021738 GT 1 -278073882541.7309952158309850115441351322689375 1.5871186820879138495958203326066553 0.0612216401060094776227002936778148 1.0631758660868880760978899397938286 GT 1 -1412268972325179680005.8313431379629743721837557721822049 0.0637152053403856433779860865427153 0.0637229168442936799428998777088193 1.0658438172999809741851825465251563 GT 1 -10428282044923378361105.1143764232884283317398857588321071 0.7100593929078727089341900894759528 0.0995458478267383386414664531262369 1.1048560294065707243512455038201397 GT 1 -244547208242027655918712.1337564200486719023046824449336666 0.5409602216477859060499683229299007 0.0603801028790575265138117031940585 1.0622798502605198857464294257074580 GT 1 -92430396166425669543.4472707502432016973829613256116028 1.0597890825694267213025956646728888 0.0952840324491399705727645088579044 1.1001342325529042298157722414713605 GT 1 -484101.2795827514271794531612529194436663 0.0827087871846010118899172899064171 0.0926684677481579130382701944309261 1.0972473694681654651971700341037854 GT 1 -692653756664851210903554.7082797323054071739210494366890642 5.2504737460252056790362168692656307 0.0058721851009515285852454613676895 1.0058894941745339774051350329356274 LT 1 -42759893.2435529784507591301857626026977320 0.3185724876539225119348352956288418 0.0248468802698345792729867829611273 1.0251607744376099486739554568159658 GT 1 -266861367347212364.9234723630736908547843171177605906 1.6347497173442517576081396013317627 0.0228402245078498892603051956693366 1.0231051034705878913634794748352946 GT 1 -1675885736309.6506499096877015917295711341469424 0.7608562412179923134117602289241234 0.0773297554989228145405852127886343 1.0804833732094998175227698439655957 GT 1 -7995801031166462147901646456299803145648.2523096967358253568782171587443467 0.1030790337714760780218883834912121 0.0103328398782966323620062680306246 1.0103865942792989845433940963035028 GT 1 -70271424165101532537736056820.4556118315801295547263148587114132 0.6793035783318765946913812801775213 0.0382694058538453182703121846999081 1.0390209152022204141695278410126985 GT 1 -77519780844930455.7198604090973972243938523878563650 0.5467538409959480358039711982977946 0.0560032746080850714047207975815852 1.0576325817071497858060823242614820 GT 1 -252.6541541390751793270441942006715881 6.0084131270623974099780324853344027 0.0115341168834234494506575603992355 1.0116011507591118910589836818463950 LT 1 -45536292780582290.1686401353931638625511278247693281 0.5768125825238841119955759103327482 0.0559187644856950646309017887568490 1.0575430619688802054084525359889009 GT 1 -3705549854621567630243.2207982840740280137333805206230157 4.6778758459646216054296979823585351 0.0344019780675339670908921911054821 1.0350076577381276947412663987187471 LT 1 -16836525777658663730120608750078276551018856.6974819234160301501900051599091180 0.2840293353449228397784311288053900 0.0692629958990062070494906061567410 1.0717785291514023961092640585311799 GT 1 -4139010827028477816825817020204715.4776298889149609677842411699824372 1.8942115911845534762626185998238651 0.0127330452605908159844281203976659 1.0128148052587076924382646819968356 GT 1 -7506907495802519888682310440182126.2055390244236482366761414809465288 1.0974339609898318096900498063377500 0.0164377802594291924106989559647087 1.0165743795642772433862967501482982 GT 1 -239834663633574135945995760186.9415434346558034123211836182036366 2.1993077019843818897024267586441119 0.0659485509727462853958266681852283 1.0682237576587752579842594754023991 GT 1 -188072383246007.5521088974146034336860707308250317 0.0356513515877827798014053362386563 0.0731775853349914553924121046483278 1.0759933017088064018706461576849383 GT 1 -582164884900.1491721987183438481262295195083382 0.8606876453085305511415241430915796 0.0634475072581353169378837119652906 1.0655497066220121691152705712893834 GT 1 -597394947595623797593.5334040707805001385448549234438123 1.0271327110678457278036526183309021 0.0605945156558169679424008629076498 1.0625080672711095599217623029181778 GT 1 -1143081607498140.4169869603304210584801395804569985 0.1816049611656658868050246075749826 0.0028974519192711536132545464380735 1.0029016576590004317276893978235141 GT 1 -981342971363.4903737700088202905382236053906263 3.5735827346582579519600754671013964 0.0140085509513702978615069599980120 1.0141075967815797241204634401294474 GT 1 -44255117898119.2500008279419583165558367964788658 1.7034297317565297795524797046236853 0.0756306675522493609033380068217639 1.0786435767621021017372249611840364 GT 1 -15006589412755938283120794712840894624.5695983569903045192669578289041650 0.6798664839243605916608361693693572 0.0389190970091408726025625495443883 1.0396966873005122575726374450221753 GT 1 -448060.9085688171955378358022101672708188 1.2308081203483972747044635064001325 0.0864961929021641227155517367893185 1.0904677355779752864762979959405379 GT 1 -1800228518272784393781607912.2102580856767697909251396882774415 1.5482682349575502969927519502257580 0.0889613260248803831755724161517841 1.0931699304002854913860172949018742 GT 1 -13.3039942249607089762864716603991918 2.0453398139898352716135412155879812 0.0459217012818548641486667423839302 1.0470095367737127615581838090867735 GT 1 -1382399724301059737120022218402919230.9624705381427945771590878882323290 1.0701798304847713188873049766562505 0.0935248929250121837530697481356037 1.0981917096441582502895890098799281 GT 1 -3631785530762487979531164297280728.9275877925634056762524348909048435 0.3373943368589380680347051576242806 0.0344449576796234042349509235585335 1.0350521696029737494397164205614813 GT 1 -12818648384462768109677041261570353.5804113977399762758583463158816892 0.6095742611986001311210691817413253 0.0634351215431905964563288319860383 1.0655364819142225286414835036170138 GT 1 -203213834348380538221.9601380806837805877523132292682964 1.5372470006514375528244341664569862 0.0151199930657406491634662878884424 1.0152354656020625755539054162229824 GT 1 -5413985075763668.3619640269184333835643752806891115 1.0110689384642625153605239535060389 0.0356407251595521841348217855656341 1.0362913620607053366534456133675018 GT 1 -6205170958838813.5228869519462616998071981944828239 1.0760438837216834743432921264291401 0.0092085312647207026563140647794279 1.0092511918851502227038397272877511 GT 1 -8436923902620738720550005794777987621133603.1978330011520104962893054265775792 0.5150992926812026596043753400448760 0.0601977163787276831195390875998418 1.0620857624150413791810627100639846 GT 1 -773872256.7702175099515563134682989867145513 0.4301723608077158381868279146146483 0.0465105374150818712604554686493992 1.0476269053032871765587764024083294 GT 1 -13892163431535309048655015561.0675147851997451334580433478113485 1.4593530588426430089893429354965595 0.0334584795228156779891627376239534 1.0340310216318809965104119148740202 GT 1 -76556484.0292704308674262631084741508403858 1.7491497172903610857764708380846194 0.0467726948329778994543715673299080 1.0479018883778389904785208246845628 GT 1 -474274435081567257622760962296685577455511.8015071254034191722645128137487781 0.4314178534631291851452722069579400 0.0651750686498909415248349164543024 1.0673960064226413784610080893694430 GT 1 -1031988.8494010880279618059710900057311398 0.2934455453046673391517739803477213 0.0801707937337199487698931763923460 1.0835672715360234897425870021695712 GT 1 -743870949734145578001038940432115.0003571943137558065648884510309600 0.7730848851545568613840695029767383 0.0227271537264929765735169805928529 1.0229893964564664082735512688248938 GT 1 -5773121269072711692265993899.6564539931101725427553748776975318 1.5404157558453807932023652143082378 0.0215306451614645246644604188008414 1.0217658111458578765100424749014412 GT 1 -1147914695835814004.6763885205078613500496528923050282 1.8855300518551875650346363152835693 0.0640844538438847226545124276001345 1.0662300350410666933357935616413239 GT 1 -62503264683513146326047464972800684345.3563142286360767567519747753000523 0.0083202369756367420237027077753909 0.0215363583418407353102443210547355 1.0217716500584690437027769076969083 GT 1 -40141112557928965019939468066603.0713747771875021350543927645134023 2.2638566795439004293603800323820819 0.0963293562695090441356680768640980 1.1064201813038901045320991444983908 GT 2 -2209341032106215552390846.3021832710189566587403789016147319 0.2316039923365056869434192764164740 0.0951585020551776142302358214320354 1.0999954910135419151395693296365180 GT 1 -5469259.0958085924723030447984142397887538 0.3230224087923816887369415423926498 0.0128247520356029664837178963125668 1.0129076991149598672265228351581475 GT 1 -59587421559446648644.8922225254646876220423300934947122 0.4881542056099829052610588345965221 0.0204716042172301439293555300833239 1.0206840519383483343285744351856378 GT 1 -150883210429425828688870384019410835321010.4743659004111600336906793255020821 0.4785830188665923493821271214150737 0.0823003476492911823728756099038556 1.0858851179839725001773917917934309 GT 1 -9166954811338259932943745811.2286531682828257725982029974079018 1.0063944251445535713195721449472083 0.0363638131587176971225905437351572 1.0370414551469597511524698534962539 GT 1 -4621239089241514.3461117298899261198483269078623031 0.5536220059932229723170667961092149 0.0130542941854192528486661841951405 1.0131402503681253381086334467747443 GT 1 -46315060480767748438161.1131503616863527503228167105646199 0.3390254891226503756731576341530346 0.0358937968770331261440120787295111 1.0365538212250777633844512028752732 GT 1 -405920247586541764147825953709.8389654028979604931196452012865919 0.8388273124703683806103491977476307 0.0796498365088010101157980679307551 1.0830010688631773028199777314494232 GT 1 -413815286530394892385912.8451259067598441372250369281571292 0.2393656718180476336019303657444093 0.0112687985709450158895677052618066 1.0113327725421453120631497292742329 GT 1 -204080496555442080906649460976996656672156.5595758888380215750085297198845353 0.6114846389368011403420609944145747 0.0955380433611229840237877921310452 1.1004150351320821076939887771091034 GT 1 -79813713165040177279073247907.6704698879202038056034586920365168 0.4086180330597913707873673091162527 0.0870685489374756834125828369830683 1.0910944821888830447073478851548066 GT 1 -7509801346578809.9087047619542454873358282200386393 1.4263990190814280679827491698450252 0.0461011252330510055714687005104566 1.0471976144448908787748963183044210 GT 1 -5921279844541017648243627782764.7908582101085828900384145475494230 0.9215090062617354712855531792354958 0.0933370582588730544374865787308882 1.0979845167424001774268060948504408 GT 1 -171414243860274.4364648808957568371633469043471860 0.6498822324826690840370081612609308 0.0440030194893376840517809316254025 1.0450005243973740138826756917547786 GT 1 -1132.1563853649595703643119243264381486 2.2904395933653432049108910403246064 0.0203833139685024069713398193567759 1.0205939205339852171343524701247768 GT 1 -12463659291002295529930.5908275913981959278286159396269499 0.4536471090281292093061406228151802 0.0283675195327516166033293353286928 1.0287776525371666648802645522330103 GT 1 -7887668907563374240532051227181401900.4034026079372731581674424443105049 0.3007543525340599370309970547624035 0.0926468366786376666441188326432221 1.0972235294373611735624969364294986 GT 1 -1807859713330859895483411396.2812000269686114812121260701518050 0.0579557401021613215377903855617676 0.0943681091149073453190888835070817 1.0991223569532893580729676519633882 GT 1 -5285094581046831913368424414011582359476671.9447081984927097674135374200728066 1.2105239883472978820611390539187250 0.0074742109772289725760810349582307 1.0075022828563310089543489439319968 GT 1 -6027007026632285.0386464813047434861490619658830329 0.0151571902352314663461399741229717 0.0583412286143944281892898619671828 1.0601123084741228654646186611216881 GT 1 -2453057330455631806724854311446518.8049715033151579639055067583922905 0.3881878174127250675707660626951575 0.0588256246893539332343711291454734 1.0606268480513514557551850648412044 GT 1 -21866290004419123.8667948946572154140181890530759360 1.7297532848854915739842232915681159 0.0486404811176861409525955751183443 1.0498632448882297418954511583671493 GT 1 -41781230159474869513860546439249.2524289108650027848731784563017379 0.1247464299311107222929878259893210 0.0097334237612418715230586645240729 1.0097811031718341960340460555248509 GT 1 -2546173057696914724195298536395.4111162004949530804316236424332790 0.2622516206573882178213058923862709 0.0602480867017394683914970404881233 1.0621393605747607397145587012367379 GT 1 -50257227146258729576921300167.1303308941884929955750538327192529 0.0130682645570460537952648436489214 0.0427967586103974159301010338008454 1.0437395366293705300772001161692759 GT 1 -534125710007168627.0841617197313635849833940251029308 0.7204009660252639226146702796620053 0.0748744005483186019912887749500767 1.0778257674964080250771753430210792 GT 1 -983743977065246632462.6371332151780945872145962869505987 1.8962486201330058001772833776435760 0.0350028841966842441043665179273991 1.0356301664524717506942409374361302 GT 1 -1264623185881052593154929945909428.5867589797480521861888806200420148 0.6947371532633588282224814915809179 0.0988932723659371426788358907929520 1.1041315737451975196873667638620271 GT 1 -791207684731764932544.5948787952824137597903321313051750 0.6615453951654393410754536196794342 0.0471150141957466741558589266642705 1.0482610690704671077690745715602078 GT 1 -1.8404568980999511786128313048003287 2.6651795695617379831668397628583743 0.0709547398564167323552829305694154 1.0763061418601839847710081967148748 LT 2 -874777678009.3397786068616270715978522881060824 0.8093974411427806701978309873053165 0.0277145453897950028690967104534529 1.0281058400540027522551529660827392 GT 1 -20298162969005761302686464961037085092045978.0398362384641990702880678913632497 0.1689207115283408296759649559385273 0.0934539154365867156016426513465941 1.0981134121716421266264594462539518 GT 1 -15185456868964657779746.2634857473016189582939827251845296 2.8405482278087724033637483436961223 0.0192336266871376603795709560535629 1.0194209993462704620181322612234586 GT 1 -34672498568241548097373.5847717138449149713916234136975448 0.3366006620073035094934611868098033 0.0474103054511663341002740674367635 1.0485710089094250467021376332047377 GT 1 -83544071781821861456168384.7697376829343118131108450935442532 1.1091695001059471986331092528565685 0.0787580086094215761096281282920618 1.0820325287152061551084070401394208 GT 1 -19486243512294.4929460481099269555937998639869669 0.1040575686240230145329573998424986 0.0221007814890318449040510395903609 1.0223486628144793580529003795680167 GT 1 -78715787756860.4473607421343553592240994555708980 0.7869610723579653059673456354618838 0.0457353264200165232305615910323199 1.0468142103935637548118634293297305 GT 1 -2077103145985780143298623988259868648518.1407170722800754565365523980057157 3.7199771253093903306529591468414693 0.0816994259235394691070337116350049 1.0852305192115322709166927247713540 LT 1 -1756938331387298.4675525476372301032556630047189208 0.3520617279489227283501803004218912 0.0069688753498090407534778325148348 1.0069932713695780328367744996190809 GT 1 -10068384123968254269228054169.7604146773611541446583471510711742 0.8419297635268532478794034593703547 0.0691446645109953577712915638698086 1.0716513999344909406986523995377917 GT 1 -396069234416148097475310123414227016.0108894086105225429298478619581619 0.5793728399861437559566688644229913 0.0687619356790505016409662456301682 1.0712403262070684293361134621165618 GT 1 -8994643427527239671151393815956680.8247823566898841239766084899963913 0.3142789437492238343126980089325315 0.0373972097452180926959910650930715 1.0381144234524819872138675028462524 GT 1 -3348362.6204814574688088733550117666786084 2.3685766087013176002525913185837461 0.0279521404352000059782750196144993 1.0283502374984691584458532747445092 GT 1 -318365.1620776702623794433371756973949475 0.0672781481313776423602184408169721 0.0224284517339963732735187621379729 1.0226837946442140564260975198906339 GT 1 -1516393617985128383328.2095485559617480332971566258467863 1.0786314048356242126704604322841820 0.0289497717975146904189613054314986 1.0293770837047979848742759956455757 GT 1 -13017618885019923227124860251578687746705.3872807987956518073785644184534461 1.1813389609826115844807700626437967 0.0961464956379786754356068081948798 1.1010879844187966357168830263032558 GT 1 -32222783750455329.5444200702583544689087452267478379 0.0592633364434783692725674384956949 0.0371645042177455564382291577788603 1.0378727065090794340493905023992310 GT 1 -68978157932802019994.1526069568443987081861108732887778 0.1114209118780923560061947379767133 0.0613766497043842187751911561026691 1.0633409981392194093561191973443807 GT 1 -41944024005.3569968439813130252670318714279870 0.4080509833695795019263378532988257 0.0918915774676844222871914885785751 1.0963914994341830863308617650097675 GT 1 -733668304925460903652454246785321492083.5161140528738595497672341462115596 0.9473952668167622109310816968692023 0.0375318035124331475209189657570724 1.0382542559764369905162313150177004 GT 1 -25256744846916645736921194360521171022122669.7245839790424363780608201770244756 0.1807920426508605224314411268480468 0.0852810101946812760930081660489925 1.0891383758429398345972083134779113 GT 1 -63187569142490655080.3910750548784174403112280441043798 1.8473394096698198216474721756324571 0.0825104404560027536490022076482334 1.0861140783617555303591788936237920 GT 1 -94471721293391118980.3064101791966982649093984334737644 0.1495618715494634221440791242807044 0.0884859053246155834862310048666078 1.0926482218174386428088321913653706 GT 1 -5856770941245565648122465887829289296601786.0376433729677984321935338960316901 1.5400693748771851270403774206810057 0.0013763483514502605430534851165000 1.0013772963888288314097902463675748 GT 1 -7634.1326946326097470931246332716456346 0.9757580841397252659453260411321290 0.0684211271236594586098786632865416 1.0708744195499104653809799800940073 GT 1 -8166.4217433190179628495872860904347755 0.6830377930140095482406939608044058 0.0970629352356136562036349283298986 1.1021024237145136028109885280122527 GT 1 -2780712737993111401890932209102557.0659773837816534117325058585432926 0.8906715136207066258556006245978893 0.0498774719144641097202968624944595 1.0511643257722168935196351645495356 GT 1 -4639387792627525.8657402761470509588843970299862633 0.8609940075153142470947564406894804 0.0157039466340515170873015658026976 1.0158285599395384344696530047479307 GT 1 -2539708.3129784381577889227176741899443219 1.9801484280431864798133490680635934 0.0838872044819421324846680270862994 1.0876157826771636255353742230538105 GT 1 -1814968263377860211986293918.2111362250686760974459440308897143 1.0789223630203059337362250164186360 0.0216014716686916502778434284895944 1.0218381987688212870692217535931572 GT 1 -11474176.6718785127343566750910552043046155 0.4358861254394701620119874355796224 0.0836587751978072598275054990167147 1.0873664675153259740122300494442266 GT 1 -131403640370162274164800629443210175.8522678832430191721956834122224698 0.7904754019557110932151051284320659 0.0562166117685355132615532949408925 1.0578586007861930042495880982143746 GT 1 -70461199.9406552437402472166302759993064175 0.8613297285631139864622814514952421 0.0036456467293281304493647050229713 1.0036523082947701541699564023457600 GT 1 -972.9874131435340841071830917512702493 1.0158996370074579310993513045787373 0.0435893283652311557566909830296358 1.0445678853310167933107422269769426 GT 1 -168242752435166331868.9905658092785016387921186293814583 1.9162991908898557663433238067388890 0.0158609564879890362213322254516084 1.0159880875302824973738048338921094 GT 1 -1562021402.9061400425482523532681057201664946 0.2212680623581850765314159078789000 0.0203049433278409784259959662309309 1.0205139224009723658677638199245305 GT 1 -887513637119643007580304416.8255923708855423433816874932316432 1.1029210701404271339442460858586097 0.0129320283684553996305805556367525 1.0130163750186106551804393623353550 GT 1 -1268657460914402698.7340874500985378618169996165221942 0.3336192882812269382523060486204257 0.0723331460591593446635146642562324 1.0750826042477964041116611698857662 GT 1 -1532073873855097.0646137546469487067160952209423099 0.6328979484609113764452623196959374 0.0735272927752798010657696232926544 1.0763706916239995089364956181484603 GT 1 -2760499373714578434650270893089206508145.4030611259884541179363700478102650 0.6049836392044268431179883488998472 0.0299104943620832058932549318065997 1.0303669378881562303642829734027628 GT 1 -22330623922468186116023358060768658217.8628063383831539306735540017674861 0.4272010269160268052253023776539001 0.0862693118486592402972992242844775 1.0902194028595850217057825175137409 GT 1 -10790866737040368209450471515293762493.7537407493416501163819245939920761 0.2291930282503391162238085310482407 0.0889213787150668718994318031092646 1.0931260832671466666200320172463028 GT 1 -28245656301920.1932823289168531751283544644332135 2.0364904874487157830172594457501085 0.0966254253295680352520985950492327 1.1016180002019261019923033492841491 GT 1 -203481902118690925.4021171646305397604838901977674721 0.6976255252533476900520223637672745 0.0963887834909828019110733258697504 1.1013560813300753107991642718996696 GT 1 -8528447251713479309789439.7559717989828936051415700820550702 2.7847720817384316770887006060403661 0.0453584618537438214970930106043759 1.0464193616903074837969876078995896 GT 1 -259180885705585873597218929158.7202153868125035248845264338806413 0.3421698936024718084326372550523582 0.0745538510747706567231489559295899 1.0774793345877299295018666485336216 GT 1 -5167635331439858217008857799.5883122328689543291449096993272254 0.1316945288135275156437343775575165 0.0007136946435234636471314903262886 1.0007139494447863047134288491080264 GT 1 -705797424274898069318790412859.4938849492116234879610081328710121 1.6845074994483850812587687785800196 0.0444807664239918744195816960244144 1.0455003861731529009863299878474514 GT 1 -76.9832363100650572722537917586098303 2.5916259286217598464738336288314915 0.0951857034129969174450203167264907 1.1000255534794578591842821220936991 LT 1 -762700349391699034438041233.6306445865394715873225732709538743 5.1512076274641698810428265032749374 0.0182009310378793146971686070795062 1.0183686056555171459366632025885394 LT 1 -9.3811668168571478485659761601781407 1.0822951302998908816770908230388175 0.0396648691200573190127454825253503 1.0404729607730139588162982014445541 GT 1 -65136586676726729092942287374.4932346400763645922710097163520740 2.1530880386743241542860511387563298 0.0810056373559572727252371863208969 1.0844752908737272147973081275005856 GT 1 -1482620358757540861717238.0178297887277370311292348019975147 0.7395967736305626647222290013221649 0.0009844445944349059497548309904256 1.0009849294782682946370085780226043 GT 1 -2400755833156794290799230270720.2124881798160016736896590513085336 0.1280346704094422008548538371819313 0.0661483273723866308854280593989716 1.0684376621146177927579983389673157 GT 1 -321566721199570506306063899038214.2690461502278354275545243006205233 2.1320534462121439006757586882648843 0.0599392061484131866652684895434049 1.0618107314991817659120435324487319 GT 1 -8383185186893260715446209954.0991131580902269324639131668889393 3.0094762581589566490100128796257580 0.0662072974666106464001936907701829 1.0685008112826584469125557009661880 LT 1 -44780400080509790054274092433247472.1037804751183991824352950466038194 1.0934905470136865609755684043595147 0.0566516844037768776392145159779051 1.0583196948816048089993518684358631 GT 1 -232044839199044428522279950180.9316992803367310985307047463383011 0.1006673719969183633110195456151978 0.0382727196227497324558757925632581 1.0390243608393183813406508301443154 GT 1 -3172537436621.7161349583359014344838030998525738 0.5488897791973500111567958449254993 0.0053232839739203014613262977088464 1.0053375031342549804663644950271763 GT 1 -26953912156630088135907254605891.2321141779482613250957396107287279 0.7245554771734305210101623972095112 0.0732410716165964069582957611496332 1.0760618029179579430080988714793317 GT 1 -42555613129269694.9208414864158003771382453283089222 0.9007526448980201102738751890626625 0.0197958664257454816438510846205279 1.0199944294432959749624059837876993 GT 1 -796215064905541193993212244307947493.9772732091876159016011908451208520 2.8666739753857577010293876471278463 0.0892486401958786817728246196490384 1.0934853500348789886719922868793406 LT 1 -735681064.3136014360528195733723560793538168 0.7309179782116750140373492234142853 0.0307783145775640694238817089127091 1.0312619157312246301565855609987702 GT 1 -83164838919918710957802390803432605162946.9017483324022550390572410440574707 0.5391658012807586936796186576301612 0.0011929456217226406093918564227684 1.0011936577477589303759524343013799 GT 1 -1680075447269121569694.2140285576135265225897967615482967 2.6798797243573649408881153748610734 0.0675596552540726915891087107077780 1.0723966114263606420298277878089444 GT 2 -15922718280634545835443858932671097154.4062565986243945589495821780317735 0.1738304543566333469781234555286836 0.0641399405484926212957330316847521 1.0662893228151544847087074024080553 GT 1 -6038446460655082474613.2709335184451832463013105665595096 2.7055590454709354812749587083911201 0.0441595146417033128437859428368556 1.0451642361725735080246284747509311 GT 1 -1310.8996887717998064504346656670086654 0.1937354439179653849569339545747101 0.0057645008217678493338743832408322 1.0057811796843936976048859290032456 GT 1 -191876.6383740339293420775208767567376817 3.1823055353971634524385081981054577 0.0588693956256736644448592311693156 1.0606733558561971364534446357866143 LT 1 -30625699036615079722357.1316848675005490132099234659691059 1.4632493732034830486411314856754196 0.0342321049984414084754962284539826 1.0348317479656281617030348542109978 GT 1 -199843748795262148553302282943.5433451138264792207843555622249249 2.8414419816279845015753779155442827 0.0545172560761284720276592703830293 1.0560596417917142171059349390103705 GT 1 -6827837455377000593432531192601393.2523659733839574078980903219208917 0.5235961591202050846558433535980939 0.0964109937047186948664640026231573 1.1013806610235223896948365079444599 GT 1 -965058127213323786029803120795.8673891898639547649362827243151761 1.6537269069086518628193193916795333 0.0811567944492444529972369780968187 1.0846397853821037007490837493120673 GT 1 -75679.2446335678146944523875081170798406 0.6848518296329744946458126220670667 0.0150175357054279151858247337723539 1.0151314407151462702863575743748738 GT 1 -8572368704594389170381064130737697489422.9519525720565167455839869265255040 0.9769229840618151258153053214996674 0.0731597063671010106268049048806417 1.0759740112868639803889160761166022 GT 1 -3485936765222678372686781304349267648703562.8298120327269676613605366538697917 0.8058652050868927345570694869199734 0.0819322021806527784712277088555676 1.0854840372549951264539702322992254 GT 1 -9576.3225858630229939216628151218034768 0.0663318451473198355253682908709579 0.0438182274839727441498247789864189 1.0448072453896999545748514935212213 GT 1 -2239502304.6985059288294047788130937055522623 1.3762854017257249087266347333370765 0.0248964953564185425512909298858710 1.0252116550099147335377260182900767 GT 1 -70646.8460769184823850864730215554224375 1.0231417053995317803888249469280901 0.0262043737223353165747099394463321 1.0265538266405578896491428139571060 GT 1 -333749299481128338.6932280650581573667631547457987220 4.0969407216266118539627041604855539 0.0235424314050373208215484952315485 1.0238239821492131391955893901534871 LT 1 -21360307309546.5270817641877527104638765235506185 1.1575472286955236268053846594771972 0.0599998632865804564156915910740666 1.0618752582782900230759640551648087 GT 1 -1532970.6708197905669711589934771135990208 0.3526498803875622439064300913143751 0.0781197155617758167049659370106587 1.0813399071984098186439294967222586 GT 1 -179870993022038513855499406733.1391629381947910117221967491000606 0.8398244046891275795131382205446843 0.0967767454576700511522905285766354 1.1017855196420682685314691599029269 GT 1 -5862081277167239250596870445629131078021.1299993220411299782526060349816130 0.5133151168483063551059753112441206 0.0026193824444758310858200967950769 1.0026228190291358394321004064575486 GT 1 -427265249.0973067036942589535286235502317787 3.0182390176272551487016172483615142 0.0134502346416445229185687649826226 1.0135415084072962215910013232706378 GT 1 -43835959424332505910.4188461249222618005477748541583891 0.3513244781213556812064850592681467 0.0604415902006539545182108568206354 1.0623452909069896082878448687372082 GT 1 -42930205117.3888549047301197516144646803424782 0.3083038034842686583920905752063169 0.0850830086233212261516442570533797 1.0889219376288147580668803704737972 GT 1 -970035468492901471593252012672870043242.3498264177446644910891765459561699 0.7410228132195739664055345455857436 0.0024959246872777890809444958911161 1.0024990446999257138659574896795625 GT 1 -44197461507254843713816247626205493.1820374958804677698183951858701543 0.0463362466858146636234397142199275 0.0117535312605753965012073960614811 1.0118231500579446835257862238894794 GT 1 -5163101902.5099242172171972608668992396305271 0.9148698922774455912847546884212838 0.0500861040935310650394177731301489 1.0513839343831582645491968777203229 GT 1 -868891697362344872720253168358185.7272261672869301404411079934273492 0.4834596329357856273290615867859893 0.0873478909045292336588721971906605 1.0914005125183953372886422255086504 GT 1 -9851834003088112.4567431118274875635324569806994002 0.0359839048023963657625248155059771 0.0774629863756355887496310942165327 1.0806277807023249347642127341097045 GT 1 -386818034917431441.4281289044789765859790371449027750 0.1618693780109578581708328638839745 0.0189662517779820754147805004486749 1.0191484181511975380306323857131502 GT 1 -2982260158685863633707329008906840.4822448346251682672331951446313075 0.0275237495537454444713826830055862 0.0523406372968116565301420870255775 1.0537601633417993000004840087773923 GT 1 -1399674.2846650657364464315154250566080274 0.5387478664880508108662705844682047 0.0988606093822273754677974725032822 1.1040953267716209848495871270364657 GT 1 -8.5590412619850650680920680989630083 2.3877201220942427590695098836084771 0.0519155596270297040366435579984750 1.0533117085704148961005476107545686 GT 1 -2535726.5193675933879508516760641278314829 0.4596094319561658318918786919207211 0.0493086369788637760790462923139952 1.0505658085210093481896842702931703 GT 1 -7140048109936762216476670.1706527245717354310559765249947125 0.5262927102951483560038798176685838 0.0890554308906540892115162748835559 1.0932732297760778562291119275098809 GT 1 -2922435594683.1428424549348300755951762158721745 0.5132494040442983947864734590653860 0.0105947595827218028423878282379773 1.0106512836417326415289656904055699 GT 1 -14440846.6126108619256728545765874663095117 0.0013588606808841506376646715805431 0.0083000439723798216566953069738107 1.0083346811304638212344735902847468 GT 1 -1478210917360644595.7997741376037941318340856033431288 1.7791038544689086544451601357639789 0.0667726497860671470860154779699361 1.0691064312768351235175116902424541 GT 1 -36163279508514.1844780180177818657606197709986950 0.0548849635941540530151118950638991 0.0552950270453893246986994455698466 1.0568825981639429011299065584196043 GT 1 -8646356017424994130100377263479184.9406618285808969040405082359005365 0.0679787115764071578297750954409626 0.0009541368759066752692155828314578 1.0009545923542444915036411251323769 GT 1 -621388299135043886401026324788576.3258616752294227778191477125196753 0.4846715409134576835391138605736207 0.0657236806674280862434407476707916 1.0679830393970095969450493675748735 GT 1 -3203181133.8642801919673062678381836519166768 3.0363384043237350308829900603347538 0.0194652963569829647067235332508669 1.0196572401495257466566878483377444 GT 1 -3898259500068290.6778351932667742991537316904389077 0.2725034118382935291516430473500239 0.0574333359007604466407385065009876 1.0591486310215236290394981064953626 GT 1 -4067435251514489832078690125.5709672731604496533195351428416624 0.0172919643013501733360858957095113 0.0394294722246606884683710644437764 1.0402278712804464228128253960668622 GT 1 -565.4845773133246344088480967022810620 1.1808917519800400707502161219194646 0.0884922217656910096013807482921883 1.0926551514557159607106496670163646 GT 1 -20958090120158736005304.0277315214324361109766314259101808 0.8731133637769372618597415316745572 0.0028941022309419860322227600168106 1.0028982982425501184432673595769159 GT 1 -873680453255354016567507692.5361671062728442367761836692208941 1.0899833343214457190986576241818315 0.0573438844716824566613554455070224 1.0590537335588876304390410429172153 GT 1 -7739.8741368440820326015434508408285499 0.1164358638830529949272641200819742 0.0279026714548425995339949778654604 1.0282993472864925775552897696343937 GT 1 -3664554606043384881386648926.3117777385635606638925392990372702 0.1334781448727244322219507844450965 0.0276945743911694727487832402440346 1.0280853000022835106670233564254619 GT 1 -24412492405407.4335292798901786043339774812376197 0.5261157276937158157805555738155637 0.0011564337417749601242744971157886 1.0011571029272366984808493402680624 GT 1 -1033799590057391756269705899856078.2275126999006725659807234778493208 2.6114318503416394892804361367932641 0.0963812257552601917973362114088315 1.1013477174408511152645260297309138 LT 1 -60815171879975142122939398115925967.8034412341280083591919126824215068 1.9721766200657108351730606160249681 0.0604924097345922859556878868759309 1.0623993811134527879790605347368599 GT 1 -625338909110328702997836551176125659114.1575522938347645928854023080522997 0.1352644196227167247429478099653411 0.0758583427565099094281647473211208 1.0788899103859556010973197795867924 GT 1 -11836997206433729316426112087963796860820499.1498548310272716772347542348037487 0.2667688020724205178763975685408696 0.0677824587731407361940466849996176 1.0701890781996598393825728525609732 GT 1 -584235202443687605332610861405163300.5967131675324081105041100303170648 1.2236013805158877788175094200473576 0.0209395307341798267589622562760748 1.0211618719997228224274617006049081 GT 1 -62018447679778612.8702249131415153650180828462830625 0.1123636167845397602304218712915983 0.0191962535207470809489841686198303 1.0193828939876926484427678197930001 GT 1 -129313234102326207213390055365.3781115363111130145819501752468247 0.6156629310794975178198134123492323 0.0782032558834133450942554017118673 1.0814305307950602432200956789643906 GT 1 -2651329919133520187988431550346.3009003116972687936474919620694957 0.5204320799157524544916328986979761 0.0111733626316529149374730833619008 1.0112362535554498562759822537144116 GT 1 -3440.0466389436645287740876827133635655 2.7659672460942726889779710697921635 0.0248397350235729899173113498565274 1.0251534471574736886606963219250661 GT 1 -863851419956649558865532122356953.2037782331900202322234277136746879 0.4582348639473321694711360377415080 0.0553715619481810625284629663529625 1.0569636160535199793991932912960973 GT 1 -867430113517037874444503.5863793398619873294628619316790810 0.1959796237764638092116095311721957 0.0006722551119263898884143694568707 1.0006724811767152966389359656732747 GT 1 -8854632793377145529338349771823.9491289404821712755395507264267274 1.2140842726856387623030452438319909 0.0418000239434382071092770971693274 1.0426987795210494553409603156276171 GT 1 -81.7608421961158513458036239588600311 0.2883893313375173032038409266096845 0.0414315583431074082989790237970093 1.0423143140827999713476657647140560 GT 1 -477371675021557043820638626860.8035138516487975108828121888964242 0.9226050271447943686953274749572159 0.0549565822245661683837965182408286 1.0565244078079125330814947764205359 GT 1 -754511443080338114573289493545489675.8858942100156387971305216501662950 1.0018654996388310034858516360144678 0.0653427924463950651078816961718146 1.0675754398533908015983092762763870 GT 1 -7011505861491552612403.8150537148046260906833062654438752 0.3673493496087347562354653858408907 0.0603798215834831934203766720208225 1.0622795508888983512860089515307337 GT 1 -268731535444402564819177183381879394.7571121268558456035620562292796638 0.4103411341185524128803012410818443 0.0867648651348610771362439347829601 1.0907618906194674579774575420319119 GT 1 -2024886880395184788088495851307.9580539331985842460100020178884186 0.8566826898807530958846797370205153 0.0457323030087800596516568556041156 1.0468110420834181309959623513068005 GT 1 -41547316272272673063764901.1739486540615103435350581031457817 0.2553242111824785651913916858840998 0.0085570388218136582646471033463331 1.0085938604852574215301023540441906 GT 1 -16344469182658.7932381082211407587241711929844325 3.2164901683614235842842126652969757 0.0725960301570907205368799265112872 1.0753660264183364220821919710410603 LT 1 -3704.7189131597943930013244572629458077 0.0186801697431654508487507331260349 0.0567275380139395214181959380035489 1.0584001070249510980447005291195467 GT 1 -1430486077977575.4891424797149223705166934125049418 0.1757787847446886788558439445855277 0.0884179927866856491854016135927854 1.0925737193950035435395169596165630 GT 1 -13899668189222.5835503704235827115503317154273821 0.5017223351359806403352081958252922 0.0589557309922989916675601911033549 1.0607650958617692490322459963130361 GT 1 -678299221745641840075096000771.1821845384838240004101852089197116 0.0225399451613162686530342051149052 0.0892647046146124628641556353643659 1.0935029888341404921755939477455862 GT 1 -449908653849588898.0655938841941899468516034206867713 0.7774081638152089164258177615250726 0.0068735963782854213923347351328951 1.0068973283537391974711381081140258 GT 1 -17.1332621287371914574083339483958067 0.6855810021442438401861672164447059 0.0559613805372374588570690802719496 1.0575882032256042373748661259894269 GT 1 -11722095048016735922369853953304328.5927674922722751746113459136818570 0.1951893456406260805885195359242021 0.0311569356019617943751869496823376 1.0316526364532743679519374801357870 GT 1 -4589687282916063726548929943739487796.8923891435344921744912731881600630 0.0075869087758477473976631327189646 0.0307951066064855719409656965980252 1.0312792411528892254033948311154675 GT 1 -190065137890243665954062481964310257734.3152376943868150633039754557832918 0.3505214715864433506997042948357656 0.0072223127688195332939325630442408 1.0072485199301344506039820770267666 GT 1 -6433868187065230121191585566443516094117698.8611430195810678522492942503998648 1.7665890063047911231844175843413499 0.0174806816456927090370051285080794 1.0176352729848920283016575937918701 GT 1 -20571493330195.1641527789746239350812325726234562 0.1395933585929459798331716799893126 0.0094024988346499632415107979362001 1.0094469813777692415550193173594619 GT 1 -5650286517317974317607.5032225124980354903139780634324255 2.1650097774048697699908274612332220 0.0481174981457897013387926740715441 1.0493136742299936359673532767485889 GT 1 -5047609788200165956.1611942242641243468059622456036183 1.4826624043827482258350987347734042 0.0502652739662507681271531718696468 1.0515725691350609520112580718257438 GT 1 -102810.7798966729838188895076348984075943 1.6862354114852646957145447360645224 0.0931598214118760081184056534788726 1.0977890532269812897897157457508000 GT 1 -476032334862968167827014565334836.0329124030482504607568339931605774 1.2863541255536384236276803367296150 0.0324569875654099648194765695342863 1.0329953977696626223082759996446739 GT 1 -4015869400.6738828522503774018981898377907847 0.4713050552183893976350556656958836 0.0167566150077168287971894076638694 1.0168985953894846627643669950794588 GT 1 -121577567828867996985044915750578.9383222276831119094998881701769614 4.5504453176977442409751924654827209 0.0822605082296286369984705929185960 1.0858417066621682248293002412841391 LT 1 -27186298226944099.1610948616041546488311400138205436 0.5873358540364684338635879602192665 0.0889637625359374052085693726558569 1.0931726048359431329098428038416514 GT 1 -1765357977513.7003301169467051601488424836141099 0.4997579116041003831273710630989668 0.0136433844783407767045838707052333 1.0137373107415430090889569810567301 GT 1 -3557347993393254027.9802362183493243416665525800814044 0.9483040584622030288191968454369763 0.0844889440311147662626858932824219 1.0882728385135274438273507209939001 GT 1 -304806112828403.5864952171157545454846774202578724 1.6051159292223287076007004783326704 0.0970096336811625040953876787362206 1.1020433941504799490504206086856624 GT 1 -2332390955081461517.8522797202901051551963415560416289 1.5563440390959585120200084951233783 0.0657771582443622850232161402457455 1.0680402806075624081313888596269704 GT 1 -197505736750195526657645500735101841712.5251643845611142018216910024924734 0.0085101297727457283481878998702641 0.0755014521570322857916106289967890 1.0785037989047387733255101195116214 GT 1 -267700879086130639140014.5751150234492139674128023476967430 0.3539122231951535140193316235600994 0.0730878078836902933889478387759492 1.0758964405388817206968315173097738 GT 1 -269.0586021381307718314835226479205247 1.1481547246205075156289523500244748 0.0891686811787093161433320680262739 1.0933975593261080217399138977366555 GT 1 -22192843.0396173490429921906792732850113323 0.2515344289584867459745845763668880 0.0865834058275766036196730994232031 1.0905632109204347511591616157736810 GT 1 -3358575787423462946.3151548338231873217549610129867628 1.2495311633193823109939709445371160 0.0903533124859264930743483296889843 1.0946990103409544575629730169049560 GT 1 -209799.3825244185471967572012071381088838 0.9829037369344112745037914825075597 0.0754973575412445447062761659262651 1.0784993699018703872729327574648655 GT 1 -8820348689.2093258800387616569215702516302597 0.0216553403426678400547144694938777 0.0630108396061020054078377245690182 1.0650835652269603574121330063510268 GT 1 -1285289249642898884696026579629169805104.1443638474602941374664257419550162 0.2415286198875589180775634587357151 0.0624754871137679043739821383172059 1.0645123744007525053677625769482356 GT 1 -29121111721.2705048890132576877913603953384038 1.8835212714559551924828219273562958 0.0924959305902500684007037853715801 1.0970572286551136434960525962894200 GT 1 -24372409350552663.7008893031293709595296439104319193 1.3720907796358712180451248285457936 0.0617659414408535584648152392761363 1.0637558317224371654881453031709858 GT 1 -355796812988819434054114098439.2756944796861896876094772962477216 1.9123062460884764560855937348738485 0.0173918928970369488195998144731117 1.0175449086170999311466511825185645 GT 1 -133755991683230.1990608806500187560888353076418919 1.5392985991263857846586739171245797 0.0932830211614500587615525915988021 1.0979249185337449094631950239721003 GT 1 -71508857710921191871.4236621061746692351237132699757553 0.5663314448327569235580630515080185 0.0856935725159544082725884937550845 1.0895895038856342779081844775414289 GT 1 -720842789597695399540551.3014736955800353326119545845404550 0.5458617581741590280262874636193636 0.0764240877348297961259138488011113 1.0795022821091403487421423763217447 GT 1 -1409747214.8402143995238672953935743791362049 0.0263912395508473442996332877413942 0.0942854508950507778352408019066773 1.0990310897963401900481358754684592 GT 1 -10404669773376904336507614.4122835145508652425317126216625115 3.8266143103503849144767873367017743 0.0849870025546480600317918225328101 1.0888170089491956505717063249512636 LT 1 -101957485291663973931909.5655268513354786613437478115922104 1.8718812343733880784245081812347559 0.0179736546394071137820433434928997 1.0181371427180998904225828747355835 GT 1 -34810217580278215191708071685032.4584175450544319109822958010374834 4.0548972670614523345813275551046196 0.0194254438187462486843420016197161 1.0196165972959544235264393914629506 LT 1 -10920150697483781957481.8692126380559801338172808194272768 0.4134168885024284686291433462122040 0.0536240292777372862052445646806733 1.0551153568323265119445280613861616 GT 1 -176792861672425980608337.2956623136356213929084445358985130 0.1445605973938488268753115174629943 0.0015288252889732226209980949644712 1.0015299951348339776380802821532298 GT 1 -73695880957751982688859014562383835.8878494273734721213145399793901864 0.1004309719372507182355173048097079 0.0772960432678611085617435568642635 1.0804468361959846970477191902757093 GT 1 -58628900653050027568877394114082347663252.6390097419163838495326648284539173 0.9240419627935668044243301710240015 0.0884304917679757314068068638508727 1.0925874307965896316086606234469676 GT 1 -40.4850542542499862853479822039840289 2.3105625879203775648385668806540882 0.0887004388225942250164010841474587 1.0928836090148961149485862440129186 GT 1 -232724720591051.0762892472508805485884851524521523 0.4054933054761180646558796348181029 0.0673269015312981751022935381343911 1.0697005163063163817203156835310061 GT 1 -25969930144.5581067058427874219459241156171285 1.4149949097386135936475055401858589 0.0482999403896813538261144168638356 1.0495053572682222520541023424298507 GT 1 -4936344653819168.0836975285925289182596740930165888 1.6769241731742358574344901228652010 0.0714239049267290445736285326905008 1.0741029467028269105888364808743268 GT 1 -79.4598759220367915118196241823239540 0.1040795908348400534752032551050873 0.0346456647387288606051013347435355 1.0352600582404816075901910335101427 GT 1 -4843916275801335918547625.5893659685295708523837255771893445 0.1594376058638961032726977679826844 0.0600542105881551020281959258778053 1.0619330762195770898731150405428039 GT 1 -13552154.3678704665764902312915978056515866 0.6212177940843704657601049452794420 0.0427557767283590805988279218041566 1.0436967233552524577166527976403902 GT 1 -34214003657395423644914965.7061311465059616992302119121929688 0.4749168561428159311589724428309258 0.0396404116230674779798551814668378 1.0404474934285724375328902112031504 GT 1 -1709664638940893219931564713723350.0620482749058986770470556366304566 2.4264952947420617059766999624674628 0.0030945024070043196794028154144214 1.0030993002801544801311614038500437 GT 1 -27043.5907486311162222773066419519965516 1.5164231734517007168437985620506421 0.0331637679237239362149327994658933 1.0337261545659543853410029785740053 GT 1 -60392440460090235672394269801227725073814.5336021227930999015742986605287936 3.1220651448927049392413264620865014 0.0671420545824300849767660221445339 1.0695023454422304591353226644577448 LT 1 -2367702.0348816669257641116390993289733654 0.2672051531627045489239198886801177 0.0759889450947949634030940758386590 1.0790312432289008267173783216729843 GT 1 -223390936379819664.3844586881078590536512136852277575 0.7204577665298339374875474465944626 0.0243540429438034437497904416024210 1.0246555072961799739025564436413998 GT 1 -23986088616967296663703.2922185614855915624606755589346215 1.0207056879900420270734105194164798 0.0078664156230133695557046680423062 1.0078975190929836716535238186838442 GT 1 -263646513547964782745262580.4174553959765255004650844688463869 1.7352497141420704814786764460402784 0.0211322287430727106639084495712557 1.0213587106841310075297186081877779 GT 1 -1623088278358050030131932816910938579.2402747208615245417114552495701761 0.4399044642695471412692318947665948 0.0518107695126244798080420407781483 1.0532011864278337047912346766795720 GT 1 -1535503664614993266.9374322871335875829689943813685374 0.6453141411950928459610173087936572 0.0542548866340822993248274932150307 1.0557821824229575192406524035492060 GT 1 -2372050752690172847181.7382100342612464655288893083292947 1.6834768777817251380184978367874236 0.0349343237178108403141543299226192 1.0355591216355016674373748196028545 GT 1 -1661.6194852267330694493976525055323121 0.2234892371142520739886884388080272 0.0494853719764364045251221320286290 1.0507517273524397037724293291601779 GT 1 -99959920339601795.6752192143346263488887860190168931 0.4094619721597998744473123265980356 0.0023398842072286650345981094570038 1.0023426260141224014822377202066481 GT 1 -750496851450868990906949164804941.3066911334141667894553150882286120 2.1582484612531811941550725440132111 0.0328370498193021445747006188377657 1.0333882866800449959785211353280516 GT 1 -31044916.5344755900602024033517803179385232 1.8409006804490217632478076249916704 0.0913542367311105646630488421594571 1.0957999601313514430204538236191998 GT 1 -526532001.6215085054898605707040637683281333 0.6358936514394368055984969854860557 0.0796088473768637115376335454564041 1.0829565334017463632904476305655154 GT 1 -2128842989046030.8529682208295250112745254838163829 0.0758818343816777700261840643274311 0.0640721041776953105670721079136626 1.0662168398497246883025507835649573 GT 1 -100.1064200087219018263561636457600182 0.0449620817292369156775123711993266 0.0584261266750968843326123500134596 1.0602024705271208576010520804339434 GT 1 -1762933708588339107.9355560284761710633924636312811430 1.1426540873450526188858557454309204 0.0968590578085316376961636282831306 1.1018766555836102819805143299352159 GT 1 -101492922903662914765.6159152896161749494989035031692027 0.0144406736069971143645081651230891 0.0550370880300046390592299809372121 1.0566095988511594661062343914171694 GT 1 -1005.9112573282206977642829818983048445 0.5507561747578112715347076326452734 0.0092420046947732669617955895561345 1.0092849769918691776938611345044652 GT 1 -4.4399320164669640130485621128052413 0.8754226541993178420199565222606648 0.0400881586233468256266042303941392 1.0409138306363817661470224145858787 GT 1 -30338228433380.2407350889160453360109178092492589 2.0126941793260452894638561622796496 0.0882131807834556862431538505904580 1.0923490670908480914344244326181203 GT 1 -1483689241436791868668178.6117125757169516516583016727327164 1.3443072736317431711197652878191298 0.0430035128237271931043618238041401 1.0439555581981215600718355267007470 GT 1 -251619088919115668441627957988220544.9335356321942179608546187594703244 0.1601492697599842110251395214535560 0.0916071614385462668415678569237220 1.0960783523557262522364691415508914 GT 1 -578382236057821152888667.5881280357544327827382950869312159 0.3428709311964529444541991608267814 0.0712993532987767705180886754444994 1.0739688238493635257098493422559482 GT 1 -1647493493206069738140429272322213049568.7430005793393961431089078514000534 0.5634160057263759138466509960718802 0.0139169142462645750039889555780307 1.0140146624593170411935032452997872 GT 1 -174991.6106253207571652750759642162059618 0.6622934403979322313951546498986353 0.0069389928502992511741823718250185 1.0069631796139806089182110080674497 GT 1 -42388872071943971088460.9440321909674821724452450677706814 0.1320872205677386972264673518791643 0.0701813225935388253863915801440849 1.0727656823747471238084226629892065 GT 1 -5038907558027.1751836576512937474877695741106155 0.1178390860479359087715290183676084 0.0882939544088266938927066576908970 1.0924376592942865785429962567234225 GT 1 -117849024645088385.2998495651910381006636065035453234 0.7483735027947148125573018318330137 0.0780811526326645120445128804985198 1.0812980773391244805250223918697564 GT 1 -351295501081.5747701469728143561422570819356962 1.2318233251478228576711262467065940 0.0219110711642548259112694043337222 1.0221546838012330599628825167218506 GT 1 -486239304674739162027598066056.5905361921326758886383304097958620 0.5336906144315866425546698646491387 0.0390923777566765482161017153885211 1.0398770013302061178024924811187172 GT 1 -181228025533766165828.9507557779892953916233708104963695 0.5975603366880587339754928037628611 0.0764692842329005620981531740383740 1.0795512197258365045498109013309723 GT 1 -2145860960243060769565307266.3253089758099705106443296499162011 1.5267430377592649736089037638216828 0.0545100815450749312933431907681855 1.0560520536005189517245745752894038 GT 1 -745297069450325109509255042.9774880616906158047747596227726760 0.0743113590556227495350018705726607 0.0864945322247355716448805287165621 1.0904659176589845173958202859836686 GT 1 -812989226585268518080436764149183.2331388578945734313174929899480577 0.1633690591229536380814144410484813 0.0798228028185699161596455942853671 1.0831890218531452252900308838428786 GT 1 -172.4465842966361353611424068489121480 0.0476547250067057883504875918419625 0.0524498697400572412698765493928535 1.0538754354990696344860829555362759 GT 1 -1326739752338306881269408141054391972.8942265767408301004523814910972435 1.0169866109768821880755341402982522 0.0702234840199622556244672872611009 1.0728110271106128629061949878498664 GT 1 -900.4526774380829318972020767558656043 0.3225271293255686395033338038467148 0.0875157896945680090402143381082088 1.0915844974500715735980613865336455 GT 1 -2749809596734320465957.1824131649681243757288699979602893 0.1229903629456193703724383388361684 0.0419677723890781813762134057937879 1.0428738610646613693787835440935321 GT 1 -192325176768919130827686386140047.2339091975246865061513637269599566 0.6687556940973585867364214539714289 0.0085837955339438192604320218115440 1.0086208484958992076912087444938157 GT 1 -4826.8029123203695959614644678599606957 0.7548875649530087800678795461904568 0.0913002037794318318484028640967858 1.0957404965346650390272005352915961 GT 1 -531074854839.0721067917510318212082249891231100 2.1989391216753503250332609180085088 0.0036356886619339050246057826003043 1.0036423138408904706153128358740159 GT 1 -4596138499676815479709547691.2050623063894877180076659943620430 1.5977437983059203958249810172137781 0.0479238125644861137585207817366145 1.0491102185740897107621413448966294 GT 1 -417508680414598306577024487.4894315117009289985940894757864512 0.2331795917424929930564742643069515 0.0374232188605899871373608967484455 1.0381414433894893608590265247602406 GT 1 -2377065749874393857027142.8928731065467645815865995758599706 2.2555327638335505432733533410780245 0.0005147954955222811800883126001975 1.0005149280482170250902210913769678 GT 1 -124894535301.7098903193886892067978266665493057 0.5988594894151450882989854575743656 0.0842786128650809636050935469774946 1.0880431230912709184364100233628304 GT 1 -1880570157391.3766775397805454995512407002600478 0.6190875543080044229259102511975451 0.0883396394161170836691961578819891 1.0924877699107213573220908773813807 GT 1 -330717276179824139706374259987295.5973487789495268688596379040848111 0.5405501551142445214707330697245202 0.0471977300849875583568398923354247 1.0483478785813609710694245333834853 GT 1 -2409235636610.4959129424156326079700299956446801 0.2603152964183601378038098951996899 0.0954335559290314774044616177686450 1.1002995173965211847227380658639851 GT 1 -3677526343297388623762.9115720057639970427723619843309426 0.1235213018122314959564734799250260 0.0054467252169091779090789287703732 1.0054616127080274054257245198439462 GT 1 -10598053864488248373104034634472292379573.1409439211747318276384897072089906 0.6253807084551486882149546113717711 0.0891583163105851225099894915771618 1.0933861798215426906526038202655810 GT 1 -6132024169500.8766922625538614094445036670625020 0.7635517052275968853876233030318820 0.0478999981863256767044221002395233 1.0490852057855713661400022167403433 GT 1 -423672591581252125795041.2647788069726051239234406862953610 0.4839327718494731102096498685649637 0.0478591981448679553780827107891456 1.0490423540187303686711059090681592 GT 1 -188921767787015851623.7212934889449773227691066515333418 0.3405475248725047345168530057304914 0.0237097418613553367896506732158632 1.0239953411485031665631810101032536 GT 1 -2971644326482028625005544780217543443.7297497409408197739464293312360725 0.0880964462268691730358169392288804 0.0184899968830814244302517223289303 1.0186630736548778170225523775021013 GT 1 -58.5883626945639733282314626847542185 0.1968537653478353519222878091733135 0.0478947009846271508700637735388483 1.0490796420979834435362450514275261 GT 1 -16.1771039183368044386275235078123533 1.4578144857165132160784963163448367 0.0285362114492136389003031111083875 1.0289512846104463735742022424357039 GT 1 -94783473629659338579040.3683306609535961970248081343140516 0.5070193241195156942958475868282027 0.0896751709810505148862624263917907 1.0939537881986299699216367290000565 GT 1 -183415810865314.4670399218551707491075074340604845 0.9569873215798868100446413278897875 0.0203481563446022062462352308918612 1.0205580320139878151455081512666265 GT 1 -608.2035126985469408753909634865141106 2.2168080685199332726365577808956874 0.0038789043719902350771272423875901 1.0038864468321926859663566211006855 GT 1 -5433669499905388397154704089201594.8170892545275755613232427971891687 1.7808151787282767100278978187229875 0.0573131323482446736425261741871463 1.0590211112469636328286564370657251 GT 1 -12984388567481270114723.9388910661637591899473500013857104 2.5386977651437107820178299895553975 0.0810526105146065434468582215464403 1.0880987624742352285993536900799876 LT 2 -1096138357697619897286338668.9726277667892338767129144763133177 0.4886578185778093920222439102816106 0.0010650348987717026618184673509495 1.0010656024514508958951035187346231 GT 1 -861917849390383669457384990833026.5243773830707643446302621644022739 0.7827566753099252968988946635757464 0.0376048059949447070774923153211607 1.0383301080944700299987115031097825 GT 1 -3048528103592.3091674683175810194432669959578948 0.0958311343315139724144676307064045 0.0856233791550444003640837756645999 1.0895127345832572230324075129359729 GT 1 -3242597970077835423.5226924210468496558931099907068502 0.0424715450344524365513714882949533 0.0756819926971970979892244680176154 1.0786991028035882184350715938776373 GT 1 -4480418757.2349910697312196535706033919877882 0.0419805041024717782501182060467333 0.0573009833099349443121934504884466 1.0590082236588992524092956398229371 GT 1 -1638107869117525943484089.4720675901817411115971160506112220 1.4343679458688071159029347749001029 0.0270292831488749126092559434925197 1.0274012929827020605722636724449727 GT 1 -448765538147395883572.4719867828789696764607878280786960 1.2461076295960800775167193813077765 0.0286349900053411098236762308646897 1.0290529699017973538443832934682331 GT 1 -98721874348409564364.4542265741640833335885975922062718 0.9176432101725636803621294687081162 0.0236680882645956903278644211104208 1.0239526768815409087700830973355731 GT 1 -10551624099972924.9220209119419206317950753313640686 0.6677665720650607296659343348403414 0.0595231466069034558528373502831919 1.0613682415028682697029236115841262 GT 1 -2829728766677178.9239686241257264834499771157804111 0.7191668545445057631960464992230446 0.0110199851225331529317685389529616 1.0110811549675741748691926276779503 GT 1 -169756031466065.7897663443138728163817845250448409 2.0970249224631238989414173696342527 0.0979345339597649380774040148107496 1.1030681827946486026787102290994659 GT 1 -8994930259654901233198736064220523905838.7160844449110389991266511503844652 1.7587751727968406940180543173282853 0.0903274911970126138895130090635471 1.0946706246800238365944220102559465 GT 1 -5978835998.7096234786489101591448768627792159 0.9730017065962022633216199567378460 0.0064414907345835383080936992197038 1.0064623266605036571342223393526120 GT 1 -4302651512.0673249805190954907086800422128493 1.3758560726725049302360661904497682 0.0536377615841329985417461792702732 1.0551298673508225763099269859448999 GT 1 -728026880809638653253449248345002.3593289510499408021770735419272114 0.1596175507338832605189617058159097 0.0736972424035435011556161606352712 1.0765541457251220609731183020068211 GT 1 -33362169303114501359331997732317743.7233067431943481852783118726448574 0.1378007055622200079052435325905791 0.0800096081909830125356302622110116 1.0833920526794378257577900480068397 GT 1 -211439888414235359020812480662081542261.1333893081501789607563620457695454 0.0650808322237784306205733329010970 0.0682780356708587171613954118151428 1.0707208303385229633021588316667657 GT 1 -15664.4078823286554509746925888693816953 0.0658246519354578164443210546610158 0.0988566519938163367746765192347616 1.1040909352426713523174055403604768 GT 1 -833117651.3072831802503651611602213754835438 0.2520826631459281863729874671958186 0.0699411748083591116079321683027797 1.0725074419409778782524305935485304 GT 1 -10300277597709479340193762662.3450289486371045829293317102211263 1.5842211175336653553587825040003104 0.0041933674866228609968039150705940 1.0042021843088113273303656119212395 GT 1 -322.1913403084909456807906586499053989 0.4213111277350206599953983536452411 0.0835731169515555713561237319908354 1.0872729933371720200053434728955461 GT 1 -17935756420659.8436789537608081796632427046159882 1.3477014713851507533809063157834168 0.0672624416963168134230984491956269 1.0696314056954457979736556520559100 GT 1 -7737274380041.1428851934277638008392447301929431 1.0044509854276994190185539394212441 0.0219021211010849962502801729373649 1.0221455332813190067338506416521154 GT 1 -1598896381925169753218160237014347365.7018643525461006756047637334616422 0.4040183337469985351517758998390820 0.0748642802572195177636974984602738 1.0778148281863827891104557579474507 GT 1 -1767689680724729462187749685137635.2317835468525848371246885003323843 0.1654454966044386495140434904750229 0.0459356409135000465265664734815717 1.0470241474545110915630959098587423 GT 1 -25585717070490447804194584107.5736583831906957300105008140632616 0.1125154833395454613755861127217765 0.0768244073168846832016089062154640 1.0799358213127120938619519516112407 GT 1 -2.0823923883871418191564080977087778 1.1290333822022352278964874653077300 0.0009344662724574687483377853050001 1.0009349031582558830943845342398657 GT 1 -140539752293097.4294208452330280257406878254193765 0.3127164854473734921388369914993611 0.0140374758912651363262951195273942 1.0141369331051355931032836753795865 GT 1 -7.0619439497442552695462178633459631 0.8165803629728682011477124619071771 0.0210885376425219480863262388540361 1.0213140773569326652327989803606270 GT 1 -6183167986.5527803913628987570646156757479628 0.2524648796859020595374792431730886 0.0210872728039317283889490851958465 1.0213127852709558255027579432356069 GT 1 -52946187.7990815616759849113861229138357362 1.4887289724298916197294628913901001 0.0916274023195984574992691168911606 1.0961006346830418777837477702130256 GT 1 -915875059330.6732284305929374947091748438031395 2.4276417424688684474518971363557069 0.0085975444076156018112189991233012 1.0086347165050610719174441846940575 GT 1 -347379114680751941489179988459927188.4249849411861590068207246983573964 0.8355101211380513964835196139618471 0.0362268891501097720354901770175349 1.0368993742625287324054942036925601 GT 1 -88055315132481622140622.1896227393601001688971742531675732 1.2936306042598218548663662137488564 0.0316375307613101892910265321809215 1.0321488101022375858842255600499715 GT 1 -19498770695631668546100473426736975037.7412120969683245785872888084665554 1.1444435098138932349138228810143142 0.0463888995508301209478733900824679 1.0474993421671060661604842789310184 GT 1 -17041715136233442.7558888346531842224953970551093800 1.0775382212504703015332911784644852 0.0415191289007718518587325140246859 1.0424056738168899140206217817269028 GT 1 -15420243401500.2562995856847039634946239658115521 1.9204636425218917748095783721212180 0.0943587528150309052119302173719066 1.0991120257672524552104243133168523 GT 1 -261927052225534764007982335039.8681473939670069196883780387329283 0.0368594887028986980960795193871534 0.0186272979403475913646796889696938 1.0188029710182077830121853464156019 GT 1 -10026284848727034793250414121146140.0157334868429627139326352617744077 0.1078300579121483310340147637973515 0.0519985187435465344758678045627690 1.0533992142215285070568794451859329 GT 1 -267636105086765810064950419517003057.6379438530804553622634939743878949 2.1246584140253207834015479355206512 0.0558296219399796122931818748866237 1.0574486438890640990438518822432585 GT 1 -877573324.6365274034589795663998082732122371 0.9494125858307741914721344016658961 0.0680847954231371187846508708826291 1.0705134506493449664091313946640107 GT 1 -590831114941962206864948302857210.4205981301983369411908599643204148 1.5843914670276090905539617867484944 0.0296622270057433781572933277356538 1.0301110485173682325250852611576173 GT 1 -15257636160051994.1717231084607007395128063091019644 3.7184128953958743364518600978309895 0.0335688207811633188158110637199809 1.0341451890575097639752144187735275 LT 1 -37.4742048837002477146765086018295189 0.6403535228275008695980030711844961 0.0860218927057088774343937938733144 1.0899486604469225212629665453678574 GT 1 -2.8157388780476865164918325491666678 0.2204883592460556477911380831016596 0.0315706614337795033265277395328554 1.0320797584599415113546956797671894 GT 1 -12.0802613151105308820842419898158348 0.3022159377298327612906786012961678 0.0392552761140113238645104314437883 1.0400465412139973627767403746190950 GT 1 -3482607428345276155471031014876893588.5645671489349142586811792562598319 1.1332743778034444389601343421236744 0.0785252479722039750078481446051787 1.0817799010237425975673801703606527 GT 1 -18110774403924658691553345.8412894239358163923922917342448646 0.2325200266067224788040599093325478 0.0316822299144021853009483229796022 1.0321949706941539145519292657234839 GT 1 -49634.5452301710543237478536918547756083 0.6820645085373067894918885974173293 0.0744197066745270051695936371749058 1.0773343940321370207058418480338653 GT 1 -14814885296329699044008617869480814630328310.8145461930303365084917422082362892 0.3646656938419000894175556726576429 0.0935341677638609648965445911073172 1.0982019414599308989786636366451734 GT 1 -11791555073785391992071662583158.2036637948200616071341905333877264 1.2681922790356068113242901679186678 0.0840317302995326686170821990661376 1.0877735549729796880350679508400450 GT 1 -71941957171350268803937442097.2818764787917588603214824483882329 0.1305131957350277983747386413656262 0.0873556586923209814776721691901071 1.0914090237799935056899705346937414 GT 1 -794880313738519121.9144498644924953705273435194827767 2.0333845018975276264269057020068062 0.0598680685508974733553162918017986 1.0617350609611646790541762571940163 GT 1 -50691506.7572374469533388995035545662940704 0.8222376667504156141548128459737703 0.0015320163644879805372623406268517 1.0015331911015227202594814951502933 GT 1 -20280736966125.7794705928983723427069673140656770 0.1830924524455776651294889652749987 0.0984715884872720023811586433761143 1.1036637210142711055691082818136966 GT 1 -38034086797539789602770762924178902296.2317003420356234658795680100273074 1.4834840188689118157579021327519008 0.0188544922331955474584832505310624 1.0190345044559362351635919257998741 GT 1 -19534.4455319705150863331628734027187067 1.2056426317462819422650567422868395 0.0361158709266995783932339701627436 1.0367841896526990702185916446699119 GT 1 -5634963740576908768748.6132134938960853622853800234719767 0.3175864599494696198655792953619294 0.0234526557898609107030015382797897 1.0237320462665627480418349631830016 GT 1 -2369574918241660769178675691256569546697.0076444464417506934346033576670554 1.7256910965877203459115234691198958 0.0736764221944444126560177300123316 1.0765316692994099681833353888833252 GT 1 -3574815379744321700951833397982.6176211509733773483576712951695274 2.6195512114298428404139050179960438 0.0217850111165141254795141860792771 1.0220258080710631327465485562332218 GT 1 -28487500494031921.2934129336717741029692402939639913 0.8497932505687338807260366773831841 0.0654887053712608898880944410764383 1.0677315658794733662711993573791381 GT 1 -9472295198493336188339335109071129076285.8906028961700642347734817041638467 0.3802004795897404471126689338383739 0.0305913507572209435380688143025737 1.0310690333466053292250093843951515 GT 1 -12007586075852734186.7942666962868397216767073935528257 0.7717707782741476539565682358489876 0.0126905350565250216843257142255855 1.0127717477161901037082152484790174 GT 1 -30.0947124929341583655002838324495401 0.1624023074198232843127217686327078 0.0617299755305880423187688142289706 1.0637174988346004670378155025922676 GT 1 -495023718432740797846574620949315811888.2999609565410279078056198221126374 1.5456833227689125421716999530333653 0.0171982762852734551063510668458266 1.0173478844551629093143499322565241 GT 1 -142352495717222209771638.1398535873383669722346849276696763 1.1776425310163287114946190041274688 0.0734214276537301293530599320975544 1.0762564312979826733161528001689824 GT 1 -9988964171969974292158871350910163515617.7542001943482558776115404584873987 0.6742288378735406713074193247432460 0.0188322150341627009738974910069161 1.0190117994178403242469320117558949 GT 1 -61.9300102693812965139113308467072731 1.6531393827106768179892441592336682 0.0429718556706241907351323279159584 1.0439224790489979813790714205700353 GT 1 -1437816819375393881322.1385208448357061912402747199981518 0.5987096589751691313150883507646894 0.0727196121972057155279704835843727 1.0754992911863153396686543334949450 GT 1 -1478270472724546139255269624.8263025629455527208291754715150689 0.6489804247213592102660435668528315 0.0166919616264535956466737240991828 1.0168328423351598790834962164333703 GT 1 -47566015310250421171.3814829229296043151951587422832353 0.9237954394403691418611387737738279 0.0816104034377725133460509915613210 1.0851335812660259681566923347481448 GT 1 -1347238636187.8372823084198029168586850810572708 0.2105597538220208056035799434957469 0.0671318390825215079133401453483392 1.0694913947460119814572900379684609 GT 1 -3930189707156284098875307126021605926091.5576805913044173937896556509544719 2.8811420082419417071548808962510724 0.0062718118123296208403993589247257 1.0062915622480173206987089168441167 GT 1 -31260998437411431263338527038343093.6573805288529143587404776623337473 3.4371719208736357717481833414753416 0.0512932440871523168147489929219973 1.0526555313766098102179915759922843 LT 1 -7.9589335083265800798369893649090759 1.2830587477860444513119031725785917 0.0846796911593739453260243420250993 1.0884812106581342141465410753825902 GT 1 -1949254326268070492.1248768283350043789747527668451047 0.6793285123486509026768001203870185 0.0786131895824774673158334873872349 1.0818753413022012304052552970977991 GT 1 -240078349005412.4191155713225159859895022723727811 0.0707306142593504006926571484539329 0.0773665677887593603254640917322754 1.0805232715636905117399857460124082 GT 1 -271659167119037003778969506019475908.9296020448354532176108847073127889 0.8095951553292696106694062607015314 0.0662085220234225109125987191951813 1.0685021226632373189263350006829469 GT 1 -146036274814356880841523853028.8983899864835816310963608491833988 0.5201672170167803238883249255790492 0.0118993303783667485150927409603057 1.0119706940953517503694039484694624 GT 1 -177.8505766544449585594721299078643172 1.1690904678142524084539260837585733 0.0857209329838637593438829455292748 1.0896194291672179771129797645450241 GT 1 -7638575317183664.2977837547900165754535230734766470 0.0682163545410238827149728168801191 0.0823316723065020924888852347601491 1.0859192524546122213243995486693240 GT 1 -1627347748505452.8749606838715396905408851018005779 1.4594304020642077672011820770925489 0.0371166977237207656769235097732372 1.0378230559639605837310175081799992 GT 1 -55783109940970351713707853566.1387916983200474070147095295562337 5.0820682822625890426359531089127091 0.0324573789046885919716038310489189 1.0329958022368054156666110263697217 LT 1 -709294042974225541869879876.8495599572842151093370255749473228 0.3066953990805211489349700221491586 0.0270137686336987063652748926037166 1.0273853475989249457961022137971617 GT 1 -10629123983680.8168943408977534371204843050427897 0.4799785963191352382068315194582087 0.0888670165657215499571369956997778 1.0930664171458019654194147798314044 GT 1 -94574137235400194.5267556713429190560761985546888031 0.9058456784032068826101426469555697 0.0360185828708444569092740030087158 1.0366832613943676251205252000593452 GT 1 -201184657035240.5253486835285865659000070727934253 1.0191039080288970865093122863951202 0.0660784061948454754132998256566124 1.0683627909524372140398439700032945 GT 1 -3869685001375803321.8870141439122130361343094019357459 1.2196867512197207885480799806029111 0.0466150262482487746109319513690714 1.0477364970323285681351733681654923 GT 1 -642576893494656878365742791216200911779.7112657532552382284262757624060996 0.6965183091166783206153167573570619 0.0934788008906555916046273487820633 1.0981408633912350673883626890177830 GT 1 -595840754501.4650910666472001531292210989481701 2.7660948361877377076518077940277055 0.0798983714687745797730842888769244 1.0832711492451374410860842667980697 LT 1 -606894138970619887413524.6527585347317048418747924337927392 1.5420362721599498299883989161432385 0.0281146130710559202770031937529348 1.0285173961563369453951707981666836 GT 1 -49323072065842.2039584212352545052240997489972855 2.0987689039257094597859637051860520 0.0054995382763912567776587237919047 1.0055147164110849643898914347278511 GT 1 -146183537837332764223171933748284.9901933863633305741167721975262148 0.5181054971042825872232988621171549 0.0186593578224099623072783216035025 1.0188356399580296412412023822302705 GT 1 -61221677480313005814.3199077736644476119830690072812426 0.1219714663936009239964847602376800 0.0211968137339489369025314673521742 1.0214246921409753958910046889125926 GT 1 -4095372332977253258.4086082146088682713138258408789327 1.2945716886266787051992574890625468 0.0776011394131132105973438187024398 1.0807775452981214252067681487902221 GT 1 -3102413808999317243426195403.6181276317749781569296396741601360 1.3257496591410746430714400166800931 0.0649530584808837516901802841723789 1.0671585461203911062290198790084017 GT 1 -32679080422488232352232482708448043.1718693007879731807906978294708382 0.7118532631367936835516023668346605 0.0253008024153790305662853810688608 1.0256263708827496192101601473352096 GT 1 -15750241995954888269240358511151584734.6561499364405175497069736865466034 2.5017495555340507901434366573408185 0.0001717862155805053238817893973029 1.0001718009725224874000513137809536 GT 1 -1679549901781565040075128.5070770168037146573079953901965224 0.5439429602279109020857431626460447 0.0201471082897252529239365235370634 1.0203528290849477723164581377905379 GT 1 -21687005768607797779085121555869385.2183753207650160002921250539868750 0.2655461735724716680562254980047021 0.0121377192402519384052039728325885 1.0122119828938039352259210003078897 GT 1 -222429741012012435958297138613534739.6976358590154451624696828203573143 0.1392622910367620445869325726397565 0.0673397418003221943455562251790118 1.0697142835710021488825440164748860 GT 1 -33276763827565328212437975399214976.4894936388731715261138182843324772 1.9722342311837240376664254885086949 0.0176714672357159611427358026190485 1.0178294718288526250302469755738928 GT 1 -11848331914.6037414533599018962218362612687703 0.7111232329263925014356060470356675 0.0097152812115127757459662742328550 1.0097627824650944560166673933687417 GT 1 -111051742432.1940797534643009724758751485873935 4.3424241655539289412087478158076561 0.0520458205420693084724006271750448 1.0534491118003724819067975480682023 LT 1 -34.8714347658715140497130535315529999 0.2615034511401209065658656930700614 0.0524887482867879120819850890662774 1.0539164669370018926101325756270767 GT 1 -64011438274012145463522460.2057929673038610656232677180910779 0.8452208817345060149910019055508030 0.0110082624807939930156050267656733 1.0110693017732855374783664425495704 GT 1 -61154262805452344781.4302822436947242048920963774457262 0.6084398448725286841053240323918015 0.0546714044734723986799535784826586 1.0562226917951378687673955069342108 GT 1 -103584171609503439486481680.4532382069562864650311667533097578 3.1686368640574076126040639421941500 0.0513297077202280453377069895361102 1.0526939672089763412925650208946086 LT 1 -4791290419355906071343507466745229.0863710905022144507230513124197032 0.7770984309240916339848573467667790 0.0227107034047100728315324353014880 1.0229725637127817820059515512988300 GT 1 -291101870006875110068.3882243822594178427493759845635394 0.9183415693829149297222646959716275 0.0728881776513956424476915700774049 1.0756810924835074219021056971939385 GT 1 -213326399686054347.0390081936750742154945393483238500 1.2013989166764361932684628670372419 0.0597676605475312168710160631791334 1.0616282646291821026254162717945194 GT 1 -2043056849965246064716909.8404590624993978065399064035781950 0.3826037625533899424462560559510406 0.0045863883899722187351401758648679 1.0045969381383919426041329078073213 GT 1 -501564751214383445924977893855536511339.0117400876089077545554085385263713 0.0609845631834486793027458443969771 0.0447802168812789139831552563698913 1.0458138255880832018109779131967939 GT 1 -11662.6611346010855674180057835660126770 0.9405730602106271840166687173225400 0.0176713108371154212528014542376438 1.0178293126167531357605779576511038 GT 1 -102353891642953178.3654953245045210677891190483365942 1.7636725176504309826749394985429309 0.0582977579222131967726881044405499 1.0600661455856716374830700346658805 GT 1 -489418443264294.5237155441073311310807268284612307 0.0676819776518755457327126331824915 0.0001232644629429467344292829482454 1.0001232720606312154307748617487891 GT 1 -6871541242998112774200545991791836110.3719290456016826844966811542313878 0.1134309434182253805885876392202181 0.0544220574559662951981434954878929 1.0559589590151922149607725109271413 GT 1 -1028172063617489737805773706775.0229183921544137880122907200740603 0.1601559848380341318912098186215461 0.0845679146957543146104018305263552 1.0883591007932327615396571702039607 GT 1 -6672206675515193680372453.5853169656491901395917817768927682 0.5496243490410456487861935839697673 0.0177666384260870462507810339897250 1.0179263597820597143145421258708012 GT 1 -383196095869.3496521361696184450315638668791327 3.9264306812403972429281397872790757 0.0392528194090961274105902922366896 1.0400439841333149264835418727769681 LT 1 -5372822840.9688934602808099280965621756273950 0.0664052916254021114478644778371854 0.0849269409935769674679240886130068 1.0887513709854715779340776942952481 GT 1 -1249392940869054230959998838012239282.2333693640342487089188549429641106 0.6283143205093907759948468775260197 0.0850537015963507240191632135779819 1.0888899056981927428555748405933611 GT 1 -40153166097.1085367150744522629604690131631324 2.7936780115558061746426743336074981 0.0525384221598706597968191317767034 1.0539688939399851849477490453773396 GT 1 -40377600787.6297876754654843788009176061857535 0.2389766772558687531845244064139820 0.0525540881441033549135717699710033 1.0539854287674828219112519507815590 GT 1 -10714287971419472344173247871927.1619493117267189737029879864669571 0.3872170823355421783371638977862743 0.0493642378613927862461850102353421 1.0506242949138126781893883091020676 GT 1 -74648168406077887880175621169.5405041813813976053077774338539002 2.5948780244041067574747804063189044 0.0640201281717985774693302947352969 1.0661613071928189186202219524311766 GT 1 -230.6841537800484832176164433140768565 3.1075084747379518984885748042542821 0.0049998745575112295021830809312101 1.0050124157506991935483641642095592 GT 1 -11.9435641572858840209747888528603745 2.0881689907914437994524561108687038 0.0965529598794663337001988700223267 1.1015377870258744753421806498849203 GT 1 -3524050142433857207739689323322812300259998.6332493508068551820761102334979602 0.0716776627468424878650965753431812 0.0119689818893086471495152519925853 1.0120411868781993032953659669174045 GT 1 -245373372892464666809700885327.2616850248465344128844770832163799 1.2770916688644061617675699973845541 0.0640715665026305409550777434331284 1.0662162653664629680564366749103659 GT 1 -56521992487489646687133824462455178698.6126605234338657416077038121950424 0.4753956750222720272594576498642817 0.0787282454061822200609512734971646 1.0820002215443024793724527151314769 GT 1 -56666580339396727445973077.5644036256406449952080092906383677 0.0001472619878066300752577355065777 0.0126295629850673489647472699777487 1.0127099938375826598250204254098499 GT 1 -29754811965225451905696165085.7302035799655336002056553631621365 0.3200684535400667149021179905175909 0.0411908937018192494904229541521812 1.0420632788677389656586738319282816 GT 1 -866565942973539168.5286755491731992627174349465703759 1.8654619541221700516361178297592275 0.0619723511145949425030164371273127 1.0639758539866608481743589712526680 GT 1 -854365045.0977973469408767517974367907058013 0.3863151777785159988799782316126434 0.0154362981764484965147636879124963 1.0155566782490866261792583414056263 GT 1 -69331121079686011779793378279408.6759520640032003379488941198663729 0.9898372551644367247116432370964701 0.0594728201788092133377630813363815 1.0613147313272199459260641385518800 GT 1 -250149482569063281742533637512461.7746957187931847184297247182294678 0.6729040094457844166484378718431568 0.0746042725908124574881328460301317 1.0775338195404414315901300845767386 GT 1 -3270951335015810955470117256843182.8787468107915755106548091032366711 0.2574592150299363374567941319967091 0.0881773457075310943344621580509905 1.0923097658298601781335175529414389 GT 1 -206792875225569080092281936.7379856422396125370629182158254920 0.0528804796406340869825410098843240 0.0825620192290800422121271694513958 1.0861702972281223420320699001268071 GT 1 -577739048472.0846540310449671436092836578391829 0.0923325418023644345205013297708334 0.0986054764130129522034515889020409 1.1038122441966884015340924520675257 GT 1 -54114242837625400163271460189.5191455609060987943539434059816963 0.0419066887252067518579240767968247 0.0097595069935474888826209061161108 1.0098074431255886312036963475063706 GT 1 -439636.8374872870061123367518922066136434 1.0545679364871094405917173808709489 0.0779457345261836587233708379586520 1.0811512008952313821246096233131439 GT 1 -349135448849162128.8085321756576968737171470418724475 0.3671947776735914169472144049545458 0.0457008368017861623087689362144383 1.0467780684342857917902636081694788 GT 1 -931.5872823517762405775232136240129901 0.5622021040922723325801220269491726 0.0660439674052917900282930631270708 1.0683259161710587734551513890335647 GT 1 -75826892031658982247541685789180750549034.3462130497066307722989940581007627 0.8149299924732968265846246669637978 0.0922122611608839079575399765364762 1.0967446955071248343120167968076831 GT 1 -542333064063996085002610879918375049831016.5389572381913916708722966413362504 0.4084839999951553204149199374859382 0.0789332111683287388919546263992417 1.0822227276235717753316350040937107 GT 1 -3127065690.4572106605551753345535325311030219 0.3644214221192620492111805871074861 0.0914798178878894256443599171345113 1.0959381766297378398122645269541330 GT 1 -43235903317784719923938860.9684137407643583099006456980132116 0.3409956768910168861071782307084584 0.0518755229159506068713775430760472 1.0532694804058741034375903906547334 GT 1 -5333406525079307993321869192601965886195.7418455913839042043356910800070306 1.7735281900710800285258899068419214 0.0222395210263943617200435214054222 1.0224905479673755591178565516477885 GT 1 -55099421023070.6034925742791095319442927326134907 0.2986885570726420688565210763016799 0.0629154304811055759609641815401076 1.0649817451933554925088129593673486 GT 1 -1002307835105299875996112162216020371660.5314335781603485202632105993687747 0.0063773400211586943727062756385183 0.0243252543206903193850046899039077 1.0246260004877144509628984178137531 GT 1 -12787672066877581522173392053843.6416327488521268665406371742705486 1.2335738888286150342795090248709323 0.0746063136692239863311068824981255 1.0775360251705324371166297565346614 GT 1 -109286668.0915553481862354914536836188287373 0.1644691786959681529726724317055607 0.0418050141428332765196294298024324 1.0427039874239027350563683623224619 GT 1 -14025743620908148292325309473.4143318677036112033988671822946923 6.0647728918816825977826030391809653 0.0711261038494047496853389804937941 1.0737822908776009105126150188545315 LT 1 -2961833051230774866829.2198056706840186965444579829673346 2.1742493796662486300301879969292553 0.0068213028776794583534842212173029 1.0068446743071896955214670914419809 GT 1 -958987644467959243245441332.7042017939978979692104810616278369 0.6674479798662603975836357038986968 0.0804601430341348414581929188854359 1.0838818895304059816646541227894070 GT 1 -130015726511031096067144480274692.2221710176442141845671202919233987 0.0734183543524774390759983966300323 0.0507755860018042468661051960748909 1.0521100341463716457165331068474697 GT 1 -6544539872573292352974403515557070.5561258536918436055527146139062848 0.6785483518218460932209854628117087 0.0554906492151975207606496875576177 1.0570896918409801807121543502879429 GT 1 -160018049637.4930504307459796404425584122585067 0.3075668339201308566819364822747917 0.0186997035661498846467473301233378 1.0188767536869363152662319997537506 GT 1 -104504017288796140098194188397371780.9522509069942913128984942501029444 2.2143530260988893808482163847283310 0.0819853660971076792158513962387182 1.0855419474180153026702804885113165 GT 1 -704552517530.2701289272791193537875001972697846 0.5553268478279908024480330632992211 0.0505474265690311602916205114195404 1.0518696989704760932894477067656637 GT 1 -12258576520736144459285312048313.7846148079074067905855293460248292 0.3138663002263969877194748694038022 0.0652547752963008985660599140622039 1.0674812737726791968924444274880803 GT 1 -10179548838744080316929419578073833247203.8449603278889820513979996770570156 1.8581245078838913121634582272005596 0.0731945047825624831664343847282066 1.0760115572038615779251790136740948 GT 1 -1611895689332272104435103358204844406592.2040445038738049924057194539251377 0.4570347628919517761402412776760677 0.0718681418867837109082807646469495 1.0745814678054797405492671454807769 GT 1 -590860339845796967999438350235382045476.0473095878177213809389764753613492 0.9988658663434827971876289883797889 0.0200598403316758783203152762181208 1.0202637707447871452447668879715379 GT 1 -2031321072.0894947387040603441123604504618636 0.0839595970502866024260125242929965 0.0443193685527193961588528908016650 1.0453314892674865923307346052316109 GT 1 -268698360408560839179.9049329313262713560479107359891018 0.0909624978668835267814209331718176 0.0400908266936598491553985196159385 1.0409166101354002887735933680334922 GT 1 -166905941.8737022684794639840571955368861216 0.5431733862159113315472981310239614 0.0364410391168195970325990405918841 1.0371215985182570683562337594527217 GT 1 -119598479105335120493465941.1211757937085084923823208545019186 0.7284405429420195242857622497940007 0.0406119148226337697504152032822352 1.0414596090267643782243151609253383 GT 1 -139363782371654513.5762900490777719345590196632193230 0.8501064818088580192619025352034244 0.0031081588054439589835125372112241 1.0031129991633600896445337043238408 GT 1 -5771009132632.6317134285206229093895822948110861 0.2778235521983572907852828776070879 0.0798992331833560276790844207139800 1.0832720857884042322062170981467207 GT 1 -332756955939325399796.8184340914565416406037307899166608 0.9511065962348536179264133268144498 0.0983459516304454647824425740868286 1.1035243708821296851675188255134129 GT 1 -13290831.2984354821560743794637273517479837 0.7438135317686484636365054810523958 0.0199710296704155530416395472835004 1.0201731461936533198550362378346437 GT 1 -734876395970997452187239472602.1298116682174209376264815735800344 3.1549974115485527354944356774339276 0.0135463111250483486884578998458924 1.0136388995023534788081580189837267 GT 1 -480250860765876384.0660225026060248007558014257533330 0.3718177700829790163790395621754538 0.0316847559053175012804443291517218 1.0321975793359531834644908321483694 GT 1 -1548065538318318488453342317037447212895383.1633115934554512048740044940647109 0.0692573424411056556359808071172326 0.0802463293428704859934952567266142 1.0836493940760194236564545933475548 GT 1 -11667763139.2145202678283996189211066762669019 1.1529440758460326408831337234833492 0.0311709255337308178623550039138696 1.0316670763902365273406046745646824 GT 1 -5133977160385057544699108610242158418528.3427553420222612296966915494994690 0.8195738678589293488720670310529867 0.0152274825816491911819389405107090 1.0153446112657634155027627780736016 GT 1 -85847198729352174165726023274.3589416217876708572341854150702314 0.5399779210023111075979741829245052 0.0183734038213835198639395022074463 1.0185442912309987752354533015893821 GT 1 -2279183645.9349309835548552496526041590183102 6.1576621718576598180222188540377692 0.0894940264708675606315020707291979 1.0937548191230551656041973942100560 LT 1 -53948706571.6763855659960643687852774460843471 2.0585332289861629553671563473048055 0.0237724953750682066513818922889600 1.0240596207314408977007959967560343 GT 1 -19888567302133070820040993601.6038380698247248262618740361578863 0.1167432206165982162771422835075231 0.0190563248283202889194150388942569 1.0192402367922557949042838624282042 GT 1 -34051461160034767884214722096166422.5393454315020520709980877653086163 0.0669495801097568179342680677157392 0.0061642209708916535533319939269815 1.0061832982189670064969071354507110 GT 1 -11207.4904481332537558224682611675592813 1.2125267218541890080066837293723798 0.0152468558109314324208843169932765 1.0153642842557228910201325941410129 GT 1 -795765607667097011323719778035.9643485702431752756918988312736967 2.1833827688826400811974672108784647 0.0443486294835268641650209465165807 1.0453621076328775244276521235256989 GT 1 -82094879388642328.8788871991445738415139996297023544 1.8355135682048234222266960487251117 0.0479843589312469128793909750363249 1.0491738146316693149158822010525492 GT 1 -1519175687190983625489934205898702321675332.6578244815548455382731122197702765 1.1674332899189378205836681402870175 0.0049462180573744522583434399479005 1.0049584910806682366030401166021117 GT 1 -192.4664378254333568222203770503529286 4.4215194545221318381988833469044106 0.0620771365841119457223786694198533 1.0640875685217073376064483689280593 LT 1 -1766773159028792457014785639994.4321197356635363388140243413773910 1.0195840814424817103533773975246472 0.0476360247939516810216444959618294 1.0488079903619668941736158286654174 GT 1 -264908481043.9932291620724094356741426125189768 0.4810220861430502597167464654585879 0.0518982003027123173214049583257953 1.0532933988453984035396857027519327 GT 1 -15667773.8723638823156224869742105180218509 0.4896394030300329015014918296398595 0.0457337087079191773630291773312872 1.0468125151503351968764471209363238 GT 1 -3.5098247294000312123884820098503834 0.2945371097388741351153467072783357 0.0342870399914229873423141845688944 1.0348886317735664015708017739461380 GT 1 -2780774668.7498570888573262414272073744278155 1.6383716678232664285602410268091871 0.0200143133498182081419986920161708 1.0202173128831783748092671398286200 GT 1 -58481.1349182629461077860617967842611330 1.4705541326126400634769146610951002 0.0703472752813326392674875841808563 1.0729441768523118341501837362727292 GT 1 -2974574222647.1389396621135491917114624142598903 1.6634077194459970367511450257289711 0.0243932071930226074001561492578358 1.0246956499678324998494603014383894 GT 1 -535345723540429.0618478946613375647005035626455559 0.6494558353290730374088316258532332 0.0831873818333913935673998843935263 1.0868521698456412300029320940535786 GT 1 -461337556117592571516819874328.5186545727491217915718685476544470 2.3052260412790130478418063402665161 0.0125737777155128105887873285947999 1.0126534966085574017175577732235770 GT 1 -2558979475504308193195491981.8940671223482087118725673900123054 0.2834454560802666016455438720307992 0.0144145857526302738193280231254055 1.0145194851685448360345485895458825 GT 1 -206516327156631336900598.3102933606287327973514855651548549 0.1082168453308671023558993421551741 0.0883680664362814266191877834062733 1.0925189519875149589526118662418695 GT 1 -43.2503574244429292803148829500633320 0.3300008280039658287973638052768584 0.0390742391594924922764069048513246 1.0398581249829178957634808380335105 GT 1 -5078356109.5150107647519792281124439615397511 2.1000887392750078519813010789985178 0.0750840599981741185762355804329792 1.0780524212728578229146479757901539 GT 1 -80350412.2513035430114155220576863592656168 0.4028997459785913869215323715613407 0.0729329048595028476319013159373632 1.0757293372431624927923203165158289 GT 1 -31132261205.5647347886252031739057940293552272 0.7197001349045989334270747475834680 0.0037201527163259192207488741846905 1.0037270896941978893542406301256107 GT 1 -203937125667404240816615590114.8372564210312129961672727225173854 0.1559453099914664658172845471566685 0.0867488116122125908751906877789443 1.0907443120343507528855065121400776 GT 1 -547525009643767286553777921680467091355.4419500019927863375969369632903245 1.5599280614449905834749312614662733 0.0350325202743601096042947536336901 1.0356608779771772827901564153725495 GT 1 -307054101120357317585.7358300762671935216103090514767611 0.3253344190985406221413706697583927 0.0876073944218394234463825973032738 1.0916848929688825267225822062693354 GT 1 -3898862419830085102.5470752850649846166159243946653675 1.4778602763239967547470746289529901 0.0537604050405697929730605368006816 1.0552594703707982461727326197782556 GT 1 -60011.9323559228769208745150041463079893 0.6939297499824687628079275550045222 0.0545253596429637031231984078617805 1.0560682126531229868464912639236900 GT 1 -14315689793645302705133.0837803543634526576501138124303571 0.5800283382591408300692797051525085 0.0611966538226039531782070798249805 1.0631492506982461828928006814879019 GT 1 -178918959567237436815799052.4906700350694716229959566359226730 0.6983485252630291644561399121381951 0.0216374929981108842325523614960542 1.0218750160692201262042264236691452 GT 1 -659897124697046302522597174.5977582707421956260269671065768114 0.8674071767520897975641434626755493 0.0964712857172183640503023593540194 1.1014473882896384608644441572384042 GT 1 -21689705793746912526355564398103887.5503194194444218473234298584025251 0.2719293238853556485085259992318676 0.0476773858355952732336636732551708 1.0488514211729789719849448593291165 GT 1 -329359455550714518564113400004665.3767109979296920102709906773992699 0.6694655271129728788859540406185079 0.0904543193148894658574358691469625 1.0948100561333977863011230313840332 GT 1 -511812748185113731054031352024090.5363440097216101861098267585250700 0.4244745530468935427286318269039979 0.0658908828182666486504788290766406 1.0681620197594307937038654161262978 GT 1 -1319146690292365014304981264405129233.2935988548621664095264730886930403 1.0190992949934887906260783299095869 0.0901261143019308025965516516385277 1.0944492762203059529933757169132662 GT 1 -28408.5447792715639340667915068523239619 2.5981140780443108666662094533199774 0.0407067387694037015047188329051236 1.0415584518565283273807169891108284 GT 1 -1953468798235628660.6796987105614907182980549736659816 0.8871023463710230662040339821598323 0.0539888752403910215302591625035384 1.0555009502112343743974639968823738 GT 1 -158177669502823789180903758804134552847792.4480451595483944584920907621283994 0.5379863367860483274176785019308752 0.0761097554805263339555004245347844 1.0791619973832932766166189660861260 GT 1 -1000757788692578411988980202004358.6678438729491486571563517908110445 0.6454744791921625642229175959239486 0.0043151637142497422073569047677954 1.0043245009038727940288403790456180 GT 1 -1963.3469517279844783614401544341161651 0.1289903853350030103973823092527121 0.0914571102613689852783206591907576 1.0959131828616365554002536405074954 GT 1 -3356742102645981930.7710080283969414451086256545753879 3.4110552700196896720357313228915494 0.0358247302456112205436960929504376 1.0364821858000395497538376834677879 LT 1 -321486542412484294036854.6540623648578402559108773127779286 0.6882654342405981017698834333005338 0.0463517024126950190599289776577509 1.0474603363159060536978484394270010 GT 1 -1557869507625.1515082076938014540232402345596212 2.2827838377473277145392081924762460 0.0940494080665904084872118348579054 1.0987705087160410579644142695617493 GT 1 -58240104840848431963709.2844285437038302888295896102137041 2.8549646410985312830091084773808556 0.0905304893546270308592509211647203 1.0948938047905229335140493926772554 LT 1 -5939024898136874696512125384180181655027.5851793394267780320358839563050757 4.8030264513728451664192185440737437 0.0916716040048034496735919172803392 1.0961492961692937065858705065654445 LT 1 -228910625972255400.6859077312242228816770712828774190 3.0243308350475381802415721355801793 0.0384085851147631106976295147327702 1.0391656431890132491422449383440889 GT 1 -1471667743.1639488331122092301891731957422856 0.1180696007418882242864503070782437 0.0094927645289144912453335175411593 1.0095381080028867479294724583787606 GT 1 -108804028.1414691443296847764841438266424641 0.2020809212161401055820732779081818 0.0609787979962105130793556568498927 1.0629172206850249171352844971428588 GT 1 -16199826427681574743033219550076813237592690.3024478532909577609619476176998873 2.3258376884169110109298777104485014 0.0290079095867643503642231239100393 1.0294369565394007527318345179175489 GT 1 -1697763.4876052411448586808056123506009717 0.2423143452885886177905015431604582 0.0280229329210694327252854944858138 1.0284230683402248132415540029482141 GT 1 -113652477.7799173041389459113522544443861147 0.1333375023352464098199940767899904 0.0506364500829490392296617566900057 1.0519634663583642247216092102572000 GT 1 -3950073111626.8016528842976245678958627916565822 0.2013853003061224031986737593074228 0.0030338717816950419742059334159551 1.0030384833002214865234441698946313 GT 1 -2724798291150153394274540314995.0026401719775597448740990845753076 0.0650024988383110688331399249889463 0.0590968811718299794952195644913885 1.0609151002462786101610106021628070 GT 1 -141405113911547962308759023604420.8727481731727335472157345413954985 0.2033919479986128491641987182454761 0.0409326535837194531240485076878129 1.0417939808957085378422144856703474 GT 1 -71.3659652750896353442801664707405095 0.1964280515189212184852417554101800 0.0194321424930850897355301788476508 1.0196234286961547480141260616035580 GT 1 -1928345250968336011981993568208.6997790759770850373134180836820386 0.4352461075741299309040756970343791 0.0189161530436480123108858372963202 1.0190973521656846811375860155189198 GT 1 -3344988981925214754413422017407826333713033.2022817626903175430177658900047369 0.5629256044356231196847723935997300 0.0032347920031967724746514266856360 1.0032400352531173315821455663485418 GT 1 -38643412431539323812271088.3657363429693158036392021030201756 0.1867304571355790197989458362873785 0.0663186844915835514709953239052937 1.0686201029290523220307119737069038 GT 1 -5988411382724093654591630682737026214930119.1434388747955642766282326013636114 0.0591049296279480832277767469996282 0.0929419194270533999811490224748009 1.0975487950043711976369187920776677 GT 1 -1485.5773091272458839400342393558055709 2.1070433560583407988086092150259088 0.0960808154398314441118167892699578 1.1010153201965981133837072370789467 GT 1 -10.9832251435856830039175281684540740 0.5480568351862544200356882604386526 0.0678585826092656252873800023111998 1.0702707404094133069186409598191518 GT 1 -2868.5983695025733875994153525959703763 0.4555485835356268338838340570231810 0.0797843169942346457971016771690686 1.0831471983656114485423007071879252 GT 1 -90175708430042833143869206156993330362.4365810362548517666710059668043493 0.1091409847316871751900800974058525 0.0452203282551056633691317973687683 1.0462746753338727939990745136682592 GT 1 -114816973365876058396727.1538479437746562836663330763237660 0.2301920112510711584715322173574359 0.0092495473397225149814992082690977 1.0092925900252196322848725868454976 GT 1 -33952405137983936070560480333602864187.5460639386473613943945991156406286 0.4840107735266349146896845031477394 0.0517388075541678779452471599823617 1.0531252952180019833581352595177385 GT 1 -3608590677157912712.1105986612377406217885368867645655 1.0079011994346263861280233286973350 0.0243915346502039612260525529290921 1.0246939356077057483184084272138728 GT 1 -2178056.0635719939501219755089036888354066 0.9958203574647591714174931634253604 0.0954792603475850518154453923941280 1.1003500449984792411099580252773967 GT 1 -24879193630140573091598220325717710.0911312448463876456018677665497011 2.8040168246885266605863451887522745 0.0684740805641748010722825241647862 1.0734468859417398475049615638817541 LT 2 -395688538574730078134242729.8504140995727169214672751898027303 0.0314610643693381550883024850928789 0.0154501134545193992650025769076130 1.0155707102258631129877907373876083 GT 1 -40352640522775360849263234456594408169160.6701310607156133402535616853944359 0.3778727960174871293047195646936566 0.0579025877039993485002432693798855 1.0596465996715477081784254963272714 GT 1 -10166.9603231803872156529798010118198925 0.7286862972809466104082604594938978 0.0388969367162678795841573958302727 1.0396736298895018807236429174022809 GT 1 -4835999542223717894084.5205782224238899887215162609272551 0.4822258743053653717423880838934703 0.0593273073234530072667173246026091 1.0611600291525347927466052525271258 GT 1 -640096418456084862396488222698.1038753025920312215157821544705689 5.3933736874276540430104581383080527 0.0459704629408260965819658031014893 1.0470606467351809327479133545342190 LT 1 -839105605912537378315.7045109883489058876106648614465341 0.3612909438184761696231614039052686 0.0611496118787448871533166388124710 1.0630991435426939055403367245113222 GT 1 -33137799122193285317219813.5713074108671507790344012359226632 0.0489033224098794114000645875141480 0.0069778525580106666296661949773289 1.0070023116187272715175556455370658 GT 1 -43074505737811370203143539421588085.9114166705712733709259842171979930 1.1901144674462807146549421751269533 0.0104528139505204362632760353072818 1.0105078283160296100422257369835230 GT 1 -6247041618180534805.4706207056717725878167768813182080 2.6137995008251342586101687882040124 0.0348708185214712360082097251688758 1.0354933197853856714464243938855485 GT 1 -52.7101331347727313890908901157556230 1.2450058640522165247728550487235518 0.0836905579127684216640991814203368 1.0874011524834309902152734008082005 GT 1 -5491181986241540158897.0158109977349924847614895412007970 0.1820094942893953021479417019772328 0.0510764761068760715162172913372852 1.0524270696119279611127013543426286 GT 1 -10.3511875990832157004302573045780563 3.1482239733862948266480510824354493 0.0606886737161899820321842340857936 1.0626083038367475465096414324153625 LT 1 -19708.1396642944234908424877085417950715 1.8881180532876954862992847523549749 0.0727929452850281796117629590340468 1.0755783783628357976495347517351240 GT 1 -173104.2115746037803242296111004557541161 0.4937465000306080363712758676414455 0.0686666165007291243979273924876805 1.0711379739686980372694585425911780 GT 1 -33605700810928479145585053190307.5903684292243658816025938810250601 3.1407424955572605571078785619692132 0.0508137565589117936194558809493427 1.0521502473183353743743834280944935 LT 1 -1056002511003352208008467938.0113086243339306594804695701354728 0.2882396938816235591629383932834488 0.0938704160711618416079191755186481 1.0985729545477487714886311740990914 GT 1 -24040004951431742324052682154017692385.1129049095519949706248593610724386 0.2078790342379881801585489576243947 0.0511034764329334785346065248944690 1.0524555236543387393505071302168010 GT 1 -2181025087915.6003521330138229816020434188195138 0.9225899570766271999519981233535537 0.0520215702519398885666874485471737 1.0534235304162948080737000495278210 GT 1 -17599583396632864684.6400250071418246733609789875224444 0.1752972367468697891901019823036371 0.0883785047733328138094433232848848 1.0925304022191576619832074744816467 GT 1 -76087530840004601564.3848048356297182841962890709184872 0.0561878164638476395468309207752474 0.0303138703547654066890787112345765 1.0307828375325888018678942600222529 GT 1 -1561384365488507.9041091549368702821841659563120464 0.3780545403099097128021088547092394 0.0665010322225063498604316154425908 1.0688154217562001791390912542968136 GT 1 -28715542218116671491169341521.5194924847407958792233633956645069 0.4633063347821618287976231851330468 0.0340859984640038273180002102370317 1.0346804740576642338572037011851194 GT 1 -166218029937375412031093609287938480465995.7292490771785418711275209080205935 1.6645191996839562124747018772312293 0.0244506470754231147092053418049871 1.0247545277593847126596751855735154 GT 1 -2951240322738894608524387318473187375.9849805379238263162706508380344746 2.1460408447019002704564468277229832 0.0436289065825021646941405181418541 1.0446092682195404882751108888706654 GT 1 -6474382367481453166.0401526898040960605807252188668592 0.6427872107407625836099080292353392 0.0971882204643818877499345825237268 1.1022411863440617108156356409797295 GT 1 -22672555327164.1508103315818920919350702805785343 0.1904363311038776507761534057000444 0.0451544733650310448516947443350175 1.0462057037993993313016846145529519 GT 1 -8061228048521735.8974251728676878138966589994267870 0.3117374540382966882438734323116455 0.0371031975456955247607014428742511 1.0378090354867604095843222104558915 GT 1 -26902852413.0798110931314841375718580897866817 4.0948991676650457433859045541133797 0.0578364370762809449211070713088717 1.0595763858013720370954993108090775 LT 1 -343851.6502707310997742550817542214561398 0.7304449747340654518358166873201619 0.0169951241496642206102607505234393 1.0171411986739905527955189346728427 GT 1 -57010445987679859714787544307.6750461697519900946591704614362748 0.3226221765910197178654021049656659 0.0981336871815499094976905875735037 1.1032889818569280741878897262844824 GT 1 -199125444593557076829382342943673832674351.5713680176377616635871925098110076 2.9381924832336614849793998581316738 0.0454520624186105257091071953227854 1.0465174143625348148335423541020017 GT 1 -1641309822635104650.2478720219403247512551506519367038 0.5225928702872460786544860796202818 0.0119249450603131241453296264880487 1.0119966175814359609890088219624936 GT 1 -14932112728697184200693586155798391316.4552860791681576468919054431778883 0.8947618046787614698653994735050691 0.0297358414389180117293004575580426 1.0301869161458735215044973984354427 GT 1 -6593700775.3536239835832023500033030495633874 3.4507233314533876626427996694658917 0.0531875441767088734166909510250670 1.0546542457219456305862340047157540 LT 1 -79246329091750468279897.4638671667355137111995760796024914 0.3698718791296547746766198861548941 0.0922786099017019488023192906085073 1.0968177865643825981744209778748226 GT 1 -1771870996756410771582343810555.4328317750067531259990295291428624 1.2545947983700698378474687524787798 0.0430666623308446189969372027027036 1.0440215475633747420423569345610041 GT 1 -16377733096881668341305131201182.0007711269417731191900204907271312 0.2442966831772951070033056130495614 0.0657020597438984931635199198598714 1.0679598977707995501905531075756097 GT 1 -107164158301245167105906953361059.3148704558934820639834879369189555 0.1380157476928592077816958231966949 0.0957687233050055243358864915857965 1.1006701142586934375899364685287743 GT 1 -107435356249066902803633852104514111.3231753423716337849042503825747063 0.3773161535805720008569644359599201 0.0296681424399895842449766605490226 1.0301171447989332044303150983813232 GT 1 -59782627265649463228128615916972.0515216352957325075911931773144717 2.8992456844506049338509064061341636 0.0328207772628801341266757034588064 1.0333714617804484077298185288564559 GT 1 -155.7334469530415435641188213470188137 0.3180257258021159374862520418780780 0.0467529000057189198945116135521780 1.0478811224790615389255572077809074 GT 1 -65842804358804070111052735741639645.3978979853262335898317271117992576 1.4725059278755129974999876333912491 0.0856924276930348487580579764739633 1.0895882517647168065293014468636779 GT 1 -8013556956737962729066934.4463983473390840348525426266152031 0.9960769185397921760204912556458391 0.0708222198620273858626268953491862 1.0734551912667936890092215245737210 GT 1 -1737733974131023381616837455001466055174.0598657074750876482230555756142308 0.3907390808574118614833823833255995 0.0918744882200150326267989225413824 1.0963726811009859757322259111814715 GT 1 -227975289110.0979256501365361367002015130665969 0.6103713455717845645657313847249978 0.0390002597605811182572025375991993 1.0397811403142547841439941745044552 GT 1 -15222104383315866972818518104.9596099103436184031705018317010114 3.5956864404932839982224943981963125 0.0515527325474268492420367273555325 1.0529290868799551854478367058654996 LT 1 -2613121438836130091131307881835608256729712.3950767907667773488604933184796221 1.0455443379519956113940456008347995 0.0105875622983937632273181794942746 1.0106440093138269869985994832948600 GT 1 -39920935169447746990.6323167372243380278613985772841013 1.1408973290903196457000692483127605 0.0669223426809374644098786744459299 1.0692668476016985499140704915180337 GT 1 -94420640.7434012427774180772502319924178592 2.8614307692714664406887565385683758 0.0360691703249370259330482284988719 1.0367357403950981145354448647966383 GT 1 -577924109622895184.6554380551514705075999317605858687 0.1187510927341133705063250898555052 0.0159816324887484184754309701616558 1.0161107159341232919047430178914053 GT 1 -2134455251884.6148761975152966282146985773307150 1.5870073268669802332782737473321367 0.0982246961166805781202415235570778 1.1033898987290662654274027056419577 GT 1 -211819925756842169139138937.3572065427685929174714656035228736 4.3338998080702026199830581049659465 0.0228484520901475291829272613402129 1.0231135234006155864584444471220009 LT 1 -285803444884666437.2458098484460851667421198396717876 0.4668781671323568107944808945240389 0.0887951701827783648552153820599217 1.0929875663614326079939702574852026 GT 1 -10473048736078294222631340578.9881324711526601500285073022175774 2.3775419169208444445032210841881430 0.0787111987349513268732644363925261 1.0819817183030633509935804537106107 GT 1 -742412164960712281595942815683283068.6661691148762012603611988841016690 2.7326062277151994320999123026822686 0.0523136314330991233673651472791626 1.0537316663100770042955892693414081 GT 1 -22662389257224254156584079151.9380028464157838315274096544993685 0.7953950004483336406503514402335793 0.0277309923106404066427767548987029 1.0281227559297621242867730920940258 GT 1 -10300021324672334644101105394081184639549913.1538696793984077154019664975602945 0.4893726787515894969161766999256511 0.0348180346623360202188014909040952 1.0354386303025679067700596892505612 GT 1 -59535424665049790035196.8524998954508398715549638717822786 1.2760604218439450630292861308703623 0.0124949751562597499214274982800982 1.0125736937704490173406939471600963 GT 1 -144352465384581859.5086623895419420693208492829320665 1.0907850075770355750537960749263489 0.0676404776492826829012946767519597 1.0700367850851451199425078041053388 GT 1 -68630521600375862877805252466.1344247325246155578503152451794510 0.1211302483622421942753202342845668 0.0477667807460320998723168899187340 1.0489452959850836151295540965168867 GT 1 -92363369982052376.2774686287112692728987358862698397 3.1523462667716154730239309800114761 0.0816896308819579098640523146953142 1.0852198527809330770121600694742716 LT 1 -52071345943.1599407032586116963229086147808673 0.8851415404458010837006381411394279 0.0026843316984400949270148424312568 1.0026879409772215950377134732280760 GT 1 -40574407704536537.7255785702100889512061488617176668 0.5324863382773675721027023659902070 0.0457302453486822587780402551440522 1.0468088858143902103813487830269563 GT 1 -4012411337525355524869996065.0703189099877425286173525896183074 0.5797874273945162869024456985570926 0.0046551584699016546373968354169216 1.0046660274644709719532798384651916 GT 1 -138410917270253908283311510359293616424.5425628068222463853050922630290201 1.5050245803138335982912499152427306 0.0890460970540154301093892241292627 1.0932629835007975317207085210467826 GT 1 -151407760348541118718379923443.6445528635142243471760562015293528 1.6729298583456941662867966344203639 0.0236024979993289242242687661490202 1.0238854988436314558732533231999427 GT 1 -2303701631412506592371332990320.2444671340460156528554163521930758 0.1451783993286303959658673187180359 0.0130973287428978834369066104289244 1.0131838550927691768058062408803682 GT 1 -28404174263629.4164278982091079623223907322053057 0.6519805975077683897583018363093070 0.0953701563778650912916142164921740 1.1002294315228947489201683121312200 GT 1 -5032282481580045542570087688481995560.8106425017641012156138052543333644 0.0410311372817370721026087402524429 0.0333013784906025397107174495573969 1.0338684954881836926874400202366586 GT 1 -10493323292917862738326113458208927392197.8153556962132893061008125322287380 1.6588595652243970289792673866381405 0.0964784831435140360669971863204740 1.1014553542290148913784781015185207 GT 1 -25030673765919506951897568380481019.3373111713142965516110684643031923 3.4442804768038910415789022630870851 0.0565983583188467279289593568274866 1.0582631679584280889104826537303941 LT 1 -63039132178130007009754107794932763436222.7647826593464658678143004164032515 0.0107185573748776594323286387838498 0.0432561332953714534510050427092747 1.0442195652486070303225803686614735 GT 1 -7.4206327844412623864052474546930270 0.1094755627511399540575029816012294 0.0568227888059625716185279939259471 1.0585010912107029778261898589245629 GT 1 -187907026742510016033695204.5709932186194335921755716361584539 0.6432346452156104888297814308620612 0.0298337997524526426153443129959947 1.0302878817004198753612367097374295 GT 1 -8114597170388195.7069963354180735619797973083515269 0.0275680546935090240507146576641523 0.0517281102901614733470955871009127 1.0531140143559836323477270099208351 GT 1 -91342605886240601897998686086281405262968.7550876948051564898584660050276389 0.0617147286082061579410313825205774 0.0951188262454261759093082915518797 1.0999516436214765463828859825811501 GT 1 -8249206227216075804665429454589096.8895692322771138238294783402838149 0.8396617152009001158493339936117577 0.0559049358093517065578244592431272 1.0575284143151142237105623705752572 GT 1 -1663164063624846969294557716.3025937636768589266447635139740363 2.3526924059349818678963402590482956 0.0641500139004962314802405684970277 1.0663000866105699674059714500818528 GT 1 -11211391201371324424410063.4023601390193915755094729258659262 1.1417004849714582911167368406222624 0.0889858830215065287785980780286033 1.0931968857077821309744193887123617 GT 1 -585993732.8988286419754328070846139760870446 2.3195655019621853649103571572655082 0.0820666934083319846499996095258437 1.0856305417724451917580423731664643 GT 1 -834534230709599405905590735988661627201.8966219532418478027048369950571767 0.0336543166381980219482946638030611 0.0494093814581195996178631005287293 1.0506717838369562120363038086977199 GT 1 -39.3776028215014971331935464157594116 1.2145362482122093223611994365328294 0.0801726044547153888296333451861818 1.0835692400784065166331136380230382 GT 1 -14386677777492495827657233.4818079726060785507382572091209596 1.0803395843793462634906800195741756 0.0746724249357184715442361948260972 1.0776074689561544509084331741103897 GT 1 -491472750484035334.4641542132788000992034037017148380 0.1838642823595604236446311440875231 0.0279540458702263279399467951597238 1.0283521977279734141748038789768262 GT 1 -31236290461890406172214638.8809912519727982093453499554303231 0.1716119294382070593052922038038426 0.0523783634612062421721133630664182 1.0537999739708455014517614620834944 GT 1 -6898088926547275627942464669270542879.8941010871543072146202716882413426 2.8129935936953335244267360029265765 0.0042636764391934694058420410676189 1.0042727918268519268298073351652725 GT 1 -3079747249.7940397369604700689764210931008528 0.0529872619509549736589327170575217 0.0545875685335360770308185945992647 1.0561340112843810939101125745573744 GT 1 -15137606845194310458936819650428516169102054.2717670970134596170850822396016434 1.3493523813752566715483557630455238 0.0020175760158252923546039394081651 1.0020196140640546515277516719638000 GT 1 -10894684193421506.2894261713878123079846545794412933 0.5572503916566213737028317954048106 0.0971692088751309484016371166263685 1.1022201283677373183022541558292505 GT 1 -37097.8151665141837080602380216256311880 2.7785962951793958778442698122660315 0.0193178270217021478882393377513940 1.0195068546033715673620415412012515 GT 1 -37710861683370794039895.7728757328926452786441819498767250 2.0479439157584510271344481527282692 0.0184982337578856249257089394617109 1.0186714657337566292061382091707235 GT 1 -13746944300218885695425999.3248775114809706991733999180238121 0.0764748262714573973877124793647993 0.0447619005752121409175078955657299 1.0457946508067549176705238489869445 GT 1 -2206889716713750915867529068088696424.8155292154678228484563626757440016 0.7927574517876055381612897087639252 0.0458259341275173276697307649701529 1.0469091651916359000426950270001958 GT 1 -7335.6674554647784960506899787252589629 0.1980143131308591271053112587853181 0.0678126650335619937144583312456285 1.0702214813121056456605343338093163 GT 1 -1223244010091858036383076721011.1385844862078111386522957877406296 0.1549039717028415624006073589541055 0.0369702970447740487408905733888878 1.0376710234694179660940471468703019 GT 1 -11146377299.6497327163091353501560248331182847 0.0539731400485462844562882642713901 0.0699296784514620254001374686522573 1.0724950811251523968773488795907012 GT 1 -433425988271417222801710283916282.3377495571730787288462812460561768 0.0267851117367151213245116592006818 0.0025845183946760943643959274494082 1.0025878640281530794474579618335065 GT 1 -50632041517672193445903.2612170687644301130175399327304241 1.3524852346307707145728796268223516 0.0030209363793276143307894657399001 1.0030255086182487297547236361219192 GT 1 -1053294.5456114083262738832065475565617386 0.6278697394268104538798547011064901 0.0171779884528759959472151507516380 1.0173272418143215003309416479594628 GT 1 -22476320422316989559464873559065529720933.7731510713905003623258185071732710 0.7432871914745757336468218042862036 0.0186655835977540598455316184309232 1.0188419841313220081428445778496740 GT 1 -873145858946475.2499010729176557207071719029996929 4.1085013649293518861317575391014306 0.0390246201166830997310590177234231 1.0398064896081641978217571697628582 LT 1 -874.2700269938472034436775786030153775 0.6106394767370477831300710973335548 0.0472013957844408450944548109809594 1.0483517258712137989662233969267232 GT 1 -4463.7281638614947178671904926526647727 0.3035356724878042295958678978756424 0.0078164617870876344750816266203535 1.0078471704512594206218073671538357 GT 1 -23.4142146831973450697757428310178884 0.3615097464771647316113899985453113 0.0131342348440184932828158224498326 1.0132212516793636814512542289113975 GT 1 -649156904428545715403561844860260944476474.5818563904093614918740160113474473 3.3490285857033291723561552308440763 0.0567999549570556127448757203519913 1.0584768820035228362111172817120729 LT 1 -26276053646821864849310079525608940271.9337333090297029173392036379930842 2.1054280220114321906704394709026695 0.0517649522564467727957705850376507 1.0531528668015638260892036673365973 GT 1 -14931863952989246362070521959009.4204697887771577502106262774350728 0.0205892859285073409730030437941558 0.0738654872266792845117481097171215 1.0767357927112732420688419624434007 GT 1 -383655748927097708982783110357133.3949660931368737868640328374745449 0.3063184822980202987435501199049401 0.0383402711588167002149111565184568 1.0390946031106563707434203435270838 GT 1 -1673195391712.3928855778220076179336216167666380 0.3882911522913124759789201006107816 0.0830517736319657442743998842717501 1.0867042681145327064965958912286630 GT 1 -102561206828338499820573068909487122112306.1424178934174200274248080221553058 0.4617277084318233394105295458379526 0.0557768419458485929604835595532978 1.0573927445300212052358307652767628 GT 1 -24245.1378068816651999943941652568069386 0.6451940183921806202955004420603939 0.0656485749064091361117080815700188 1.0679026533904511229217288577701102 GT 1 -58298693169271750571572.8342972929702299885793279580896089 2.1601243368404334209245942728966737 0.0171938139082576295098783074370666 1.0173433440002801523332637826617027 GT 1 -5233188936552771994042.4400711307067021864182135939878550 0.0098531128872368866455244383379393 0.0377089964047055598476411314782251 1.0384383755200820907960082585934322 GT 1 -700.7485473797398389572560035589685763 1.2372288187977852251988420257514996 0.0323083374900585058695878057252949 1.0328417729121005055489341224280478 GT 1 -106531104941597516584551321.5792664121182921825319927015239443 0.4832819135899885206260067531570171 0.0996142906427485287656314728775172 1.1049320415134828577441979644001697 GT 1 -5637983365286293972904836308.9573729167869193850620856766447444 0.1559200935265152656809706494853016 0.0414313441324642108361423779341023 1.0423140906134993417047912032142689 GT 1 -93388593872145205962852.3069716392318101507235525602131820 1.4018900321692577077030736270974626 0.0185165308324526852148062053657850 1.0186901078246267336964223833075819 GT 1 -89450130750254999135772491.6364263431948568599904448616561688 0.1731008485709214131225700344597120 0.0710786013198588786890183485017958 1.0737311522729458145773608088634725 GT 1 -15.6910503634784374228400951740540859 0.0963049604294781367495469151377624 0.0538990672240396173091235835433623 1.0554060213553442861564017563655963 GT 1 -1564699805030963.0923268470005757847162547786260088 0.8825680559236051383808937956432351 0.0733668580186950638199291530678586 1.0761975393380096730675651482233383 GT 1 -218469712653800745387221.6660926443875356701072070535699067 0.1939550821340516186613450396553548 0.0534270017996602163905781576188234 1.0549071869534515191364844343598415 GT 1 -5916218449592824660311195641045787.6094343120388161008780759152721792 0.5554650275087680136252815856105454 0.0975945282542022589665122912727160 1.1026913347086343664255957856564885 GT 1 -12188255267001580434186001428834285766.6836128367862823099062986345907142 0.0807216874085838608670541514760179 0.0207239077173887730327962014600838 1.0209416616212862303243179760067703 GT 1 -509700556483262727004841.5273821224555428024155638751994893 0.1083690453530917026661594844718921 0.0724007853004047597778036282136259 1.0751555201949143831465202001607053 GT 1 -3103793097581503400412.3374009691786743724745160172370640 0.2605677793681503782221375221920482 0.0689407226151166623415620644305540 1.0714323330715057351792303307483815 GT 1 -26683978397463490482341845598410128291.0131848929457447231452473624107117 0.2470499719048662352242367923748927 0.0717071459839581083431419844699160 1.0744080205310739159226129666300970 GT 1 -26022627278769481899654010.1497794692345255402078105020802972 0.2450502758976670029671965378209511 0.0831221096559545690909723719933170 1.0867809777037160283464186640764922 GT 1 -139112.2816812449791801521861946035210633 0.6300633297923272884657790168203084 0.0309075934922027108320143097034005 1.0313953088849643294560230022821386 GT 1 -39567239036917977571196851.6440378737004448687820099747837710 0.0480723976833494789622843534277930 0.0426853063549080252875582372965853 1.0436231080981191149433271370039616 GT 1 -7026024820395212432716.8395981211211770050886707310292510 0.2441207722016185483223913613724727 0.0399064010893074435061886604368262 1.0407245004076558313143473800423624 GT 1 -831961638517.7714603942449089066665482479143623 0.3000396085223998498362859858538399 0.0857062095394204106404380261461655 1.0896033254124417150774301228644034 GT 1 -27492611556255121862191907.8501447967648398735975569997696478 0.2975883134598859920548122746929482 0.0635110736953454057284446041137597 1.0656175817224644078705281076841707 GT 1 -1976162895286330307311102873381823660914.1117320904461523157150170656941630 3.0274078953849358563689627455214171 0.0811985970012502061076484857043111 1.0846852811779920681884653423923145 LT 1 -11.1792096143884406091207147735048201 0.0181146188900742524410449588304878 0.0542918684123545773607131072906608 1.0558212865122345433382796843197639 GT 1 -12789756837251482021240818981329762336622.1817558239335870785511029179480534 0.4435971036947732707007267697501875 0.0165940693449423770454929070448346 1.0167332932567136500648305454777479 GT 1 -64726536473886572081629398500258849340555.2632492001846945389475595175946402 1.9387595307472245819471474507757693 0.0405923556694835931934575638532300 1.0414392221217384113666466639565197 GT 1 -7968213633135741.6544796217863228552873591584013955 2.5332425621382680313481130164446424 0.0710877389286497238377862551030254 1.0737409891157039989683395519008148 GT 1 -424119396871098172047354873752244289617386.3780656502002126266467424438760005 0.1236520472477932395809107165706975 0.0193909959636671776928745620435071 1.0195814676367206985863948315675043 GT 1 -809610964436774324516698141776.7274195839116516399092090103023146 0.6249717672238655653892260952724421 0.0154265842443464101116791259900650 1.0155468120675846419990278995735509 GT 1 -1505946.6806235212437524841903596378177859 2.0926644055313713387981404692165167 0.0985173426088181637470958026255251 1.1037144740266569892423614823130607 GT 1 -23552692722612406208.4781776502616871808068269723370947 0.8157318370001752238979350382516479 0.0711520953728411074177461873805198 1.0738102730258721662676864203074862 GT 1 -2683995763942737124459.2932374822328751272956852392685636 0.3387867270802149644976607781804581 0.0817414705212817905300751817525154 1.0852763054839895823776652532014799 GT 1 -881422593891649448135442640951517621262373.4383718365564735837404716098008294 0.9418618139623985990547348166301544 0.0702125613451381885542219389191071 1.0727992795449569807383257568158633 GT 1 -85582855612018391081676.5976232735138528043794905872155973 2.5500418486667184942931499746862305 0.0065859201943718799599354135062209 1.0066077030595915113641706107952887 GT 1 -25965984172423298235.7742216123442877907848602951480721 2.4940456859323696829289086971254566 0.0838679177167536980338380612418938 1.0914311484387669623380882321477472 LT 2 -1320252984664996445054789414710139.7678462590385642940392000472027645 0.5650119911573356227571781683552563 0.0828090934984579991308876732905954 1.0864396424592867620677909183555010 GT 1 -36920601934357.8619117558392938856034009945540809 0.0779148891599371905948807759725379 0.0274278117458434903195730860377659 1.0278109766771576423556373089149257 GT 1 -5985217081056715254903633063122269722528.3750159640897575436630740665448252 2.2959176771404682917342618205123163 0.0267600325928872002393938265349687 1.0271246008857124507481589269682284 GT 1 -46691058.5113170642910170594526082012169867 1.3794145751247212458575245674497128 0.0744956995750553954516910160230340 1.0774165003830057463863964467802308 GT 1 -23270261651330941491571621529488587106486.3744368114569980648453663783030099 0.3074031170608701523358639392279441 0.0551996831493234645356230240158223 1.0567816787363433030275718603923449 GT 1 -2932624978771.6864485485942216930426670203572079 2.0849078432794205438262396347601562 0.0852118098864237797050464415624445 1.0890627267183558406488215248366007 GT 1 -312464735386002617343.5735882565097374874797639092274771 0.0223545792815500333762323587312286 0.0872887699916346442424760887932528 1.0913357353733209896417032102849776 GT 1 -2719336060719097426161286273.1973013510187394876381198480084429 0.1990280640521543023861068401577143 0.0305695457567953000297460922835246 1.0310465405049998984481057889930357 GT 1 -1916303332365.2905252009327617683427204330735835 4.1374857967687707844786214980730358 0.0195562274652970599324894543649394 1.0197499806966392558485598322680956 LT 1 -61055.5981235070950698600535430903537825 1.5210123695558303556450257257490260 0.0584762731411924925948319344681591 1.0602557300778765590514354153962329 GT 1 -715098.4320579065461301791034162740056850 0.6713256358116171210962147198432370 0.0897669507738075777124127614614208 1.0940546142079884665496168814162136 GT 1 -19874944442434332.8958539070007784321636542290612961 0.0788714011700997876192352819394150 0.0473679537930331478034879663000225 1.0485265504012795735205161906482215 GT 1 -17416839978017255005157973158829980.2579972435394252019224779706446980 2.3893583964415675331985394813571960 0.0853231273869555402432839995289385 1.0931613512154156515845400059205037 GT 2 -243117827369611108415654.0445377159146939447268743471464947 0.1650915387724704299336803898571595 0.0803241017056493061096833255840707 1.0837339554684618597170134184614718 GT 1 -64692125796380.1428208113781433098630123751596877 1.5643081050271131251933974072565825 0.0637402731588113444936213615511091 1.0658623550552074686324780542019388 GT 1 -111028218561259980458889756861667477687.2205568131116642608412909343723777 1.1516615894595311271778175247601595 0.0762838970492402866490806198576250 1.0793505024395440889918846901492482 GT 1 -117148140284932118711.9275813178898580589151608776872558 0.1270562509784970025705018138174275 0.0405156854222703897441473168410793 1.0413593111638566296047726990879292 GT 1 -3876842285.0452076493229651361715246984820794 0.2265507956668308526974907561871625 0.0652835988639203488976716297157346 1.0675121099954968613000359949694492 GT 1 -49890198236311378624012914685363471877.4881496024855254081271096469401780 0.2119190244555281635211042765846153 0.0979685418306023899313670187250743 1.1031058835083797993916874768410426 GT 1 -4939787188354217014745856376322414104.1250391287945452365779189439395220 0.9165932906660554627275575031365809 0.0623759924577012733380314218115971 1.0644062551733141761547038471274473 GT 1 -4770142738760741177950778612651417588.2731591384151999050094913346655451 0.2659073009662991891446925744872085 0.0599770747602365804574867452561993 1.0618510154625435856617963290331251 GT 1 -7009591436806.0560037273220591148068485494244351 2.0900026203680236814038354341238512 0.0002095493226168125374381483058315 1.0002095712811437669929569952209910 GT 1 -1.4619545190573979181933698166278209 1.7488990412379551466514689226919346 0.0402632463244002923347123482998810 1.0410962470452914554839745613128779 GT 1 -64.0589800359915697757805219942065722 0.5980610057774454687582272701480807 0.0181686604464228878961758035286570 1.0183357373608325822882861277651068 GT 1 -3698219687448398905268950759916590822149.9531704703248772894831464287334624 0.1555578880303375100234565762286634 0.0059290129229514164100339155435909 1.0059466593050620526778511804485555 GT 1 -582770662735140181066595149282867815.3833899252942593620112750798029464 1.1895855771680078548130027449408938 0.0199882132315454007508597218387599 1.0201906800750974274433068905880665 GT 1 -58844014475979995529110124443.6282667579252516402918796724725058 0.8514741709086074863196994024759404 0.0772883634052013891521194946731423 1.0804385130164390875994427832008175 GT 1 -2972.8414965715885933834204616950463890 1.4412524355491339444991255344760711 0.0340334781905406073308673690276624 1.0346261018821166393382319251819715 GT 1 -2127075430380601.6960714222421240111462061241079552 1.6703528917594567382938630297272288 0.0973146574895754909142765345890154 1.1023812441972218482486777454353983 GT 1 -30741956464542.8383062593700419607733040737684625 1.9129152004411750275846026502174850 0.0706132387225321235996480341436926 1.0732303068081492333056967020497617 GT 1 -20735923540443500425343985989142.7615474339166998007847916802687290 0.0006344594967785385890363665969949 0.0652352747233228883368181222847771 1.0674604120779030635431668192267317 GT 1 -1.2599895096619170607355269962755330 0.7970200010948536559870901661855511 0.0536868721526066319031592861989150 1.0551817627464726131388548895163183 GT 1 -293112817.8320635873014554616226117322525724 0.3061704381776280361346455366045308 0.0721874375434542753474737669736098 1.0749255467081471688889267459722004 GT 1 -1282847230260986190684154.4247768431225891123157467538705870 0.4967760421885607104442354554120208 0.0868153068899436834290887726003076 1.0908171262825092370796040732232515 GT 1 -4329749243108508.3767062518665270294882581616013056 0.4034805449207675277268485070806955 0.0401770284041969049333372539401101 1.0410064161125767405302913389623633 GT 1 -1096135.1469298722319521048291178715434536 1.0819593802247487705291325690386345 0.0551139231869470362231247086482007 1.0566909123925490455658532892266474 GT 1 -1153962900578418569761.9626376309599378099483840357447321 1.2380216330821531096643017075457501 0.0546597493354977234791377541538265 1.0562103626789118269016980988375892 GT 1 -155838802626656640436084969300068291.4605591580176473350199932110049278 0.5849042797345468710677837438376875 0.0158252161138294257389081786494876 1.0159517718029162146200291492742415 GT 1 -187529519819039853603.4776414613498695583005704913041659 0.2126332417019619514163574088537738 0.0493975378473740376884266985330980 1.0506593247018310319444959165903364 GT 1 -160574672598424400556471009029.5240290585394770375728023033663815 0.9439282896964912920208679782723727 0.0211200415449994866624178332399010 1.0213462604609603493681367757092795 GT 1 -1316351215308.5025971236169087588493883385260717 0.2849916546365723750323937917889450 0.0559019476879229378294715518282138 1.0575252492559868969852605752700256 GT 1 -12283785734926643383689605405474186355235507.6522017242503106374148714113686982 2.1502742058428700140461837551728924 0.0365293872442075349644575956816738 1.0372132921057955337628643888577221 GT 1 -363993940080535.0467635070438336732776300196964667 1.0617050251814883453273362388853949 0.0822828594986171157282072039573655 1.0858660616576462920844931091742128 GT 1 -8792680005214430522692786320165391870841.5805542770145574902772034844567319 0.4957005036243635793303425549984047 0.0203406154696943041039400685764983 1.0205503345386715305270862171056332 GT 1 -2169238534772845848031510871142459613.9204147305433503635177588279126415 0.5578148575474715343893621823410861 0.0096698946321379310318142527906946 1.0097169516666683948505475024389102 GT 1 -322249805547791.6125625229210046477792915933186854 1.1066320066451389866916896795016826 0.0297588678120162168211513160562347 1.0302106484935347817305055406885709 GT 1 -2062197233809282294.7455388339240182841820104547745301 1.0321606415756836635823363667276440 0.0019396796872381449213513417612025 1.0019415633020163569907448272142092 GT 1 -319867027667313923203749056.5911151343848338646833842305633256 0.7570213061452660234772080138527533 0.0969208229658510721010455465687920 1.1019450472006519414932114571691826 GT 1 -7080338661939947986580056359034406546.8179257567501593489915208109299445 0.2190132391392251921856841196584115 0.0176541288019223300118863171803998 1.0178118216433978615944716375358381 GT 1 -17897195803016622054590.9890965920327382994586544534384113 2.2430639930658885365034198282272028 0.0538500600185100494092527692677134 1.0553542235665351202514057341750602 GT 1 -153287636843587854030130455726.0457218614914978443250559731106664 1.4118573224340167797961885097982569 0.0480572121905217353076011519041992 1.0492503428354424421733508547882445 GT 1 -15326234878540006712185253447500.4510777235601270346954878339188550 2.0767181059231124975912725899463635 0.0093586918049346940279460984389546 1.0094027595207013901434560454015272 GT 1 -21501.2962101607462150068913895849874336 0.0553110396719999473535490088572152 0.0588910710567757694647328846897833 1.0606963873893462240502484461712311 GT 1 -865869641583588666374277041678087554.9653997038988208433531847247522630 1.6219547750550284795666431205593107 0.0226317122710281683014150731271914 1.0228917402126880684705554326491107 GT 1 -12257725608476403633825034617076291433.8032072193651075517868591008739148 0.3808877734401540198707195203763034 0.0246900150618273347077946648865183 1.0249999252444414105992183009507639 GT 1 -32442.9211903690945472697490988742565895 0.1358833037989412797715918148180705 0.0762292932663789303779099625981849 1.0792913910211664020091375395504040 GT 1 -6393418929467165917330588396048.8097366507736189345864565461078469 0.4265002138657008090287198052828494 0.0340494579443460587835152361487805 1.0346426447804684410376295255283018 GT 1 -155220034492070149.5591098788482843457493640782332876 1.2096129232245590392069199047884341 0.0855793672635911513757850706566599 1.0894646025211868578173737503346299 GT 1 -65107196316168651438760278.5473134856742572108118190713798088 0.1827269716332763920149217219098040 0.0028191865890239415684829473624520 1.0028231679801527371502751286231322 GT 1 -7375829464692788152687678494033830.6051887644193936011056597804881926 0.1740502364086872755903684146812510 0.0333984572203209307976448981511345 1.0339689234833736504836170229270484 GT 1 -36086201310138250123385345502265482919546.7646365007999042302896304019470501 1.8288609841605338052519538634604287 0.0033103262822820493424323808753680 1.0033158175342356891375155383862541 GT 1 -4105545610939221777095715.2870387922523865913441264913196380 0.2409409747099917156173739580558149 0.0863336234382144173576719682717349 1.0902897888647106499341289493895549 GT 1 -93695962192.6912620257972904307873371138512420 0.3001788921281732352245204489132080 0.0215287989028786282873470177731732 1.0217639242632131308830564885137133 GT 1 -168038998842933985051753604.8081830453068883924184313609001156 0.0765301771869560137546070848624582 0.0688697806396813117877953296042688 1.0713561410667783271086064151922257 GT 1 -829411525952168283.3356919882127957886892465792197655 0.4499982116639255921847499807292863 0.0973777228358344485571076082475662 1.1024511107901474117107098496007206 GT 1 -154965.2427656699832066504299542559142143 1.0100154937489742124916787182396180 0.0901631500158641127203857988263351 1.0944899812765681387927166630585968 GT 1 -96443933793549758614168176350238718985.2010522709284018403163761541812336 1.6018888504573829925464730873779447 0.0302895434629393523293223037038920 1.0307577504596294565639518252131422 GT 1 -1.1552546428462610957293056429435469 0.4237514188949469041715904243449555 0.0035168554472504381728597529778567 1.0035230541208621822220066681078235 GT 1 -3396.8054315015903854964417639753258025 1.7371261950565992174675112468130640 0.0648345884040929983111059122441654 1.0670318545425583633706578414175472 GT 1 -7337377.5398608927780672033898245159716603 2.8180316953677848396812630032786746 0.0917790615210022931479801616534492 1.0962676056633271167372652615636571 LT 1 -265024597851682.8321922484816277341735460902653603 0.0627670281203115459581107530553426 0.0412796742906474977724918807314723 1.0421558777998958905770909094685355 GT 1 -992566815469519334.7976515398261632341494540337877417 0.7155695746156856056888998157470406 0.0495704837820753087278834579625307 1.0508412742293993514358843851196069 GT 1 -460544857846997671594844867281730453.4026379358279671952354482033656111 0.2885628139549525939447374197343010 0.0108421597402226553889024409802294 1.0109013642797536109381513975806017 GT 1 -18108710527.0289849479852414868604934099761021 0.2952668610906190664093871167044198 0.0941449494818013275039284772384077 1.0988759741291746627768322700849892 GT 1 -120.1724347983234677181693283553817938 0.7519562143410742927370256275164979 0.0397208462290387488065975380658827 1.0405312516119862976748450354527226 GT 1 -25107898051872061755.1197602640081898855663662609323448 0.8661610093932385429379152994284279 0.0782281693990284092780072211061728 1.0814575582850687422087149523706403 GT 1 -10740485195446192.6554956237604608464180268770988466 1.4372178527686728382149193645402514 0.0575104577103877062394061433736466 1.0592304554354683237610859151974371 GT 1 -606431559212451305597665597656597.3661406906758040096608170529130009 0.4778358290713283886664895952293490 0.0855860863998969008303595987502565 1.0894719505191992962178549601161484 GT 1 -123464805030976979880195321165451805432.6574775111291489043330092532880199 0.9048474599783482219219428467336597 0.0336801004856724196569578600373974 1.0342603406731073638771657156354725 GT 1 -121851851073314593439119152685.8869664142792504136648722959103120 0.1501407424156928617612063438267843 0.0801590995336188290528036104074934 1.0835545581695797128574982957532747 GT 1 -1584925936908424721732470145765556.3666112127765801039534791834075966 0.1877136685052481252179239452842882 0.0982081049416103007185430912181275 1.1033715005511880242248961006476458 GT 1 -115057711066972675318.6477778391828231520374162670192754 3.0314520809529426069010334219395728 0.0413027557624741753433663880436651 1.0421799533817509498673493860248972 GT 1 -6818768406168187406003660246394218405.1627759268158838749632553246821364 0.6353496225857898111199812928845804 0.0828369050314313246836062225206716 1.0864699654317917065969732815228107 GT 1 -33774874990.8516200978220782074891877233960683 0.4477280746564810315971982478285124 0.0989629923940656288015907782163125 1.1042089482928542133707023945814568 GT 1 -116636909409.8496508604888421293847537162882342 3.1009772890244727268566665196329903 0.0559235633406248774690854319507043 1.0575481450771402255002973809360529 LT 1 -238504968411560224756.8095205212256887299535676146799536 0.7847874204267168802509115579094189 0.0611374454866521329570127365621220 1.0630861848078237566528680584099071 GT 1 -4340682585034371705741798331449474.6038287951196286219650550360244919 0.4939217821680901546234280941308028 0.0822364666681628310136482786736752 1.0858155105065221810387549779172803 GT 1 -672156574059118214983332626.8902704198391739639805870231257064 0.3025014945710242960713039218451777 0.0703356405764308646765516113962137 1.0729316618219265850228816431739474 GT 1 -1317013991297708226790881050895671457232924.9947252881742428735734171069355849 0.8660957221337940832496997491363539 0.0031923098352775475702573740230144 1.0031974161264580232238264740411887 GT 1 -599786.2140616809450560495717002799936211 0.9545928136594454643132497085346517 0.0512231640233623542515284238148816 1.0525816650579534867338698588003454 GT 1 -15061710892295892818907665676849296215.9693258353775111560328092986363753 0.6426073979063119679558252640968137 0.0441196029434900581012221574778999 1.0451224814388294913401347697257201 GT 1 -61766985.8530989702417317660060524222102138 1.0910855106956873479579482335023566 0.0754481750252761222711377105967934 1.0784461724251640494582059034486004 GT 1 -3075643306776537918525119612933792706951.9343147646143007269537186241999280 0.0212900661721816644542371847616994 0.0686811093678285287292288020894509 1.0711535355067274097626199372018167 GT 1 -373467610909019213611552308891698.8154816286889685745166398722604324 1.4548129738516602007314568963737998 0.0760499714395415086527637791507245 1.0790972904474432007843289189941269 GT 1 -114546023665.1941882228451396160047197692524332 0.3458430837173409277510136389433264 0.0905684118413604336830197811551487 1.0949355030299311486152595044594868 GT 1 -557666273115658293.4264212922296233781007947071913582 0.5277562322854113427872420891893180 0.0209415162005447451807126741153184 1.0211638999320522766892860308165132 GT 1 -22143296740.6492284459844743197902607050969605 1.2743165201316949529705129689949570 0.0436913167561032220605914974279160 1.0446745276261434528226249538335517 GT 1 -121415934.9860695536113850697205767761362658 1.6007233514245754335003353434478241 0.0817807093173264441796932891524776 1.0853190381493339167841740321589270 GT 1 -120344122723754731685548230481.7851788870491014231294493948804847 0.3676566726181753308038572631746861 0.0306825916916895934113271965321260 1.0311631579746626456650335626001811 GT 1 -66121378254790454746516464691985284566.4139579455486978476058447342619255 0.8222649858176512966162694656203967 0.0971862963317011501006598883048707 1.1022390550796343566109527410453375 GT 1 -19484376522981.6691973230576994242408566169638667 2.7354065556942481382374549704140640 0.0858072993961783255540777828553206 1.0897138975794825158784780404623418 LT 1 -932216146271919276980.1192653451128785770710204269919233 0.3963457221327312153576611291666966 0.0915832693883590355970583977808423 1.0960520512501024165145631262745690 GT 1 -3676948965845335109.1566674900486239921992611624062954 0.1740451649440950001264515612366319 0.0163271563754740413653419599942805 1.0164619132036151628564334015526148 GT 1 -5347225505003347126400.5900851756221046265381805515646375 2.5893387957684206703401200137749877 0.0001432735083078938744290144564308 1.0001432837729374299973113929357299 GT 1 -108716570280393734050562204854687039398.9894180039325204411221141527433500 0.7245858820684891130137623283392390 0.0271158201456093178253874853632785 1.0274902379466230293060132342162684 GT 1 -990.9303910763105077531461734957106284 1.6373955590557445638522953634382522 0.0949339265428601093178880167109458 1.0997473286023574808218394748233944 GT 1 -139405321976006643997109622553833252218336.6868309715766039906396603504088456 1.2689569043253473366494770605979860 0.0135441905890374690965994411571796 1.0136367498487452187700519140424596 GT 1 -2771.5289767379891199052830082632026309 0.0683327509947168866759337808861718 0.0621340632669757957855146916175170 1.0641482647822637579424152562259041 GT 1 -21760393310627037806619.4704650152269686290760713856615664 1.0110111694231214307732812987883295 0.0578503440646132518492204318013904 1.0595911466046115109358022029111160 GT 1 -55091208095102077730.3886499539391671445778262712161049 0.6896832721260874604732179974489884 0.0004772111210842367371368043604686 1.0004773250225494186490178377174763 GT 1 -4567698586.5535330226555188062092260864212881 0.7047597433139725790569824300258592 0.0074132197152979022623982298932430 1.0074408341879851736881394395691257 GT 1 -1805415092667.8889653241717788631295605262545824 2.0920973352567183069587280085278507 0.0523269347860386214560261253155297 1.0537457041254935546318511389952057 GT 1 -11618808913940663922982.7705008981948373312791942656281149 1.0658089596596865029872618868643904 0.0318516002316352596845057307957768 1.0323698979098229959606282701249455 GT 1 -194784.2062027897920194224127064811149916 0.2060612755787983097216413732778605 0.0796288119224552113848833170575046 1.0829782250076107935870750127299389 GT 1 -7836364999069274.1787084409707513097124817447234714 1.8460957866635428375874998595980394 0.0749829012209311841235654857924281 1.0779430564739995624077562352141567 GT 1 -4615235700597017236.9095803983026181445054369293031753 2.1374209320664082207093368811987695 0.0016295630767403527676268137313077 1.0016308922588378628511922475404677 GT 1 -15104211162913351806911551.0475830712908521782269879606556647 0.7189791002195328968616126200973279 0.0532951527781381811199137559178623 1.0547679057359017720684578375666075 GT 1 -6.3779345407141334994671123922615522 0.3792963685928092984076951072542354 0.0849009442113100627409162717510165 1.0887229618734995451746206211626428 GT 1 -18413704664827499930970441175225999418147.4388283250011109613286501512106620 0.1698384527778906071225809284188195 0.0289169900127198176141931761589470 1.0293433251714972093642228697120535 GT 1 -443.9975762928821016173631507886240541 0.4823283031458940978289743234983565 0.0629706807092805479213752586457428 1.0650407066348355208435837550311366 GT 1 -280129577217003085000502.6230611567209795498123036992080705 2.0550684532592934317222694677537158 0.0942207088252679358485336230038927 1.0989596105913097034768598427877841 GT 1 -88449570895.2592940813316075146326184305960699 0.8346346053202460055389009858792781 0.0683250702832885849299232748863913 1.0707713129947838461281181368563164 GT 1 -3201096581728836042456742759785724.9109215974311860540926496499227136 0.6332050907030574417941581443544415 0.0831323248416172777231437954391762 1.0867921190374484596930844875083234 GT 1 -23114204979503919.9321355155293655546338189305080564 2.3251793388273748010805587818695963 0.0656808656957904773669672171495330 1.0679372135639628855748292193051092 GT 1 -22233111820764261496660170.9602006280009757748036438620538346 0.3720213751570059874358943005308422 0.0084861507092328498302680324877881 1.0085223631009102137221688085844872 GT 1 -31945388930261.2692025490799257125411374593166065 0.2852895608146047989805120028998544 0.0542249891129637812478259856201150 1.0557505702600863304013420447784449 GT 1 -1813540.7663283716910523413730991778967742 0.6497519972676843859038334406412559 0.0022995091429600517760000070494606 1.0023021570741828555606873463053335 GT 1 -1037032625.2925503785473472797698452028388510 0.0723979834836057151078068414397918 0.0502096143820850290331439102787097 1.0515139654516031723712652420001703 GT 1 -12455862600101322530336753213.5000101148909849010093535552720357 0.6395375188113001922678324202630386 0.0878770840319243046238382830347328 1.0919805217085278683735648103635831 GT 1 -4629627647523152872698.8666518698385862884783690375874077 0.0898260326592980780892621034177455 0.0963472833806798975922881704153783 1.1013101554312074428804574238632644 GT 1 -71497613810900157479534267572281.6353092294690509445780480408871488 0.6627085460318058935603768477409442 0.0882714412945414964889166765619790 1.0924129662076979037443655999101704 GT 1 -2667870975831321050.4942097540178293821298845823239523 0.1488035243749385715762055581737533 0.0625582493735387080269090088049117 1.0646006557329931210595959809440674 GT 1 -23958269850017405637923481601.3032187959879859716962114067235430 1.0293667680160985383075169640374835 0.0952665906245587181423190481282635 1.1001149539537853962824346959667977 GT 1 -296986644443659755097458.7857097755742295607341110636260230 0.7357810825495404770921359610657130 0.0886795525551310292605818308547381 1.0928606900659486620764392335066303 GT 1 -2262532559436966669672528733249797.8042292891141627598818386242053050 0.1695777272948862551819929731541848 0.0070595876326248427402395243975350 1.0070846244239275578244797842326968 GT 1 -20989575290365372.9347506361059710457457595757718428 0.2187568721151312253017475760837632 0.0317076219699417274485290042159280 1.0322211938920088922227924726557294 GT 1 -1027384747537339.8070737890921116106594903582592048 3.2536348641028464270394226319469469 0.0585477263475032882658281089462408 1.0603316239887131178721890803544025 LT 1 -4578251455942108.2121685389553931230193288935050849 0.1094784391643078077058753662039866 0.0239945028560838690018154604980316 1.0242870602653198182431617896988271 GT 1 -393.2798914780694892485864092033594609 1.9066662263611458656802827198378491 0.0426343803334667522281703567957237 1.0435699127724041912550307673749780 GT 1 -1502065424766045796120403901122680871237186.3128918483396967845692448486856130 0.0362944094101206702832943974282505 0.0082200653846360417454841253317269 1.0082540364129000865137187065952375 GT 1 -13528646897237679196231062221551432301344061.4202215965870584680521756413621529 1.1542497571679097396778117612822637 0.0850074543884959512227248180607634 1.0888393606124748554594749324488358 GT 1 -181796.2555447100795946338467419157159839 0.5025511496871064848655893904075246 0.0944235623509073363556653979934317 1.0991835903687321817331056135903275 GT 1 -125331291648938791090624401237750210661.7624539612674249803410322641321898 0.5061842519261242413907941324622406 0.0350587282164315971867999543969728 1.0356880377504594172290811378564973 GT 1 -1774512704186221210276327557211302.3076042490010959425290081717572745 0.1206258239324480535139031017889949 0.0651771517077698078768265231127239 1.0673982347117357721651289396415859 GT 1 -92188899417486.5830638498284775074366266162573552 0.3321474637054543381115594267949617 0.0494637650627331758231306978043560 1.0507289958052463720029494558733398 GT 1 -7738362557222295195.0001246375171048955353307771908652 1.0684669566374073180538851024867236 0.0074510173572657357937613718869090 1.0074789148499512467995459572622245 GT 1 -1862517514547211655549826926695574269.1316169336070588362399817771340697 1.9828747975710444750043026623313436 0.0849699927384500789670443063470258 1.0887984194229881009481557359718886 GT 1 -141386921462.3667312378785105919612081307355449 0.0052149813512895374337893568648573 0.0201624157911538338120823666684701 1.0203684514514561494041230964998474 GT 1 -10426830110677167083418127840937096953129.5777186963697930801590194195234691 0.3810496516193842831447763620941725 0.0886504257219093669714041396684674 1.0928287294445778137911918939257207 GT 1 -23389209974.5430061366814150538630504689881331 0.1657802557640805704882166371994411 0.0714360101975269959842774942391051 1.0741159831677621152809665300714976 GT 1 -1667657175.6604474402883000369234047687171763 0.2943613765246083632461152017013598 0.0430828314669184245124643096469155 1.0440384445321001369616132995422969 GT 1 -1158.0031634982661320341231212823377064 0.0290278681153116811412479833418071 0.0760641412808952579197687584394661 1.0791126267205881704426693897266472 GT 1 -75494798512756642.2238028185709228026606846528208022 1.4479093601699145591768314945179407 0.0919218823440756648185121861081133 1.0964248714207312457285393075974736 GT 1 -15471389770788429.6483740042428147032014502862518067 0.9864892497936104107058765300256449 0.0538903366336684847465651926638861 1.0553967934286124584828841479247223 GT 1 -683.1182258141825809066149143493055948 1.5913216550014931111268840457311458 0.0793458553243981735746454604773135 1.0826708347775568587591051502370063 GT 1 -410541867934.6685750967850928720837030620234920 2.2039905724677507777749174322003470 0.0097293816928445885500457816786221 1.0097770213818951635304296117296720 GT 1 -1897750981136.6555317893650223900093207250192201 0.0910830150685463369689199877165219 0.0064391158940586767679841770956332 1.0064599364261445293687105822171069 GT 1 -1320921139622909904486836211568960553.8078545509683215090341525713678809 1.2842936631841244469536906834002969 0.0053224082070372844115912210116979 1.0053366226808540202099972908443550 GT 1 -2457841.4966788984734840546636924584896689 0.5991607639871467537766810746326738 0.0291070275052812326260382993410141 1.0295390407672432918154039725707617 GT 1 -499089523068449548137.1707107348199449814297646090356540 0.8975837587763056950690045876555949 0.0753515793753118348831042242422329 1.0783416995317799858095294602297057 GT 1 -157583894284036923.1347487942566133363692638359724522 2.8608827330574331628660035130536893 0.0745798743542951592055090912451205 1.0775074546954694797034024393764728 LT 1 -22694858648406594601813044474.7290857428141756147655258436786756 0.4179869962633187549665306394784810 0.0694702248193189135674479615279335 1.0720012042923071908113700078939644 GT 1 -297071798145891316627505960963.9010141779275919927555678534040089 1.0397666577320926262311887428191796 0.0457953805427815102019236343136395 1.0468771447284298257716776992558647 GT 1 -4071.2612976347000453463227575043389138 1.3078218568052000326320871301098625 0.0180094696848442998309868520101402 1.0181736139377566291759392680325012 GT 1 -45876764619300.3741238024310400623354832364206735 0.7493905250305893908736380119789614 0.0790628651622102559487768522216913 1.0823635025615940050034100174073945 GT 1 -5801085132488605967922623238808135.8442716448962214194987246126926323 0.4369905214409341140719758269272048 0.0487678975825173343302200536828836 1.0499971847874653251856667768543722 GT 1 -12560164630.6746654185620124326225316239646491 0.7993501345736945155232722874822726 0.0589536868847080687902209513043851 1.0607629236947010541174270368792933 GT 1 -4702011240448561380256879492730906998581984.6298103174079026415118163767871948 0.3541475650617618885847252659507925 0.0699664462647667331761318652816825 1.0725346142004801252195967319411145 GT 1 -1595567133101868.9270110184719864513911849397047523 0.1435000215365573044022497898267549 0.0437911915709826691922741798382665 1.0447789709218571818017819467359937 GT 1 -40636155850130436.0974478409233754767636883185863460 0.5844045017252796733686116740883765 0.0727690057420363110608054687957254 1.0755525597133463125659817322483760 GT 1 -752153088929594972.4721834109611462713883315085904291 0.4344637997691119801547521729446358 0.0162039141990517656957722767898201 1.0163366332820466377123182146120455 GT 1 -110987531216435512476016734.0355622019917540302137070000381994 0.9563188240291306401053782252047455 0.0793315531361812920918547728162906 1.0826553000871306560403826935478037 GT 1 -143180559348535.4699436945095258058430437271492575 1.3453796306428461083394374541917927 0.0834130442734204337399445416685160 1.0870983381598286538326010931774462 GT 1 -104233807773089733687217914894.6451896785030919995510105813625357 1.7921158578931202915796799157292408 0.0746157559170760380764855431817164 1.0775462287154277699277816330795905 GT 1 -10129759418.6711125001943846238191390226448876 0.2549823759587959419155482456348675 0.0579158638573526384597141606009393 1.0596606918946294076354989028364594 GT 1 -498280340447628011891262050777620584.4917933580824467104439183371078531 3.9854007206557378972655092015180147 0.0252364981052976950297826535166220 1.0255603995665281469239453567316453 LT 1 -2066836451788442453922.4777704706727797971989839524810760 0.9349600000743121875685676743798593 0.0067673604760462075648031925079547 1.0067903628958003674683187727228437 GT 1 -49802063914361198820038847520165667854.5289210595029079376271262572900216 1.1370045475529694355529235063500608 0.0616933721669783637077074785323365 1.0636784880501814977584995582654649 GT 1 -9633703157080331682219447870.7183039978842927313726937968366331 2.2098212108507841116515650931241680 0.0811926290777583051240490077037030 1.0846787858634543737162387178328740 GT 1 -45293672536412804906080113477435113152.4885936493288512331975138871821960 0.2880378009901450703430866100371812 0.0752088440783463423651268381782787 1.0781873443432580306123379019549754 GT 1 -3299802379018701266687891419986.2562357186351822465501913989267027 0.5379858004900972913840346930929360 0.0151339507255097956851688093442678 1.0152496376418799772044920502967974 GT 1 -1724725753489259752518656622538688130568110.7347198782384934082762594539912381 0.4079879795013391596350804736530808 0.0247778395411309741623552694978006 1.0250899770588349766114054700095124 GT 1 -167024409.1274247644946004592218848056020486 0.0760342688471182657965352997673203 0.0149319863979139890573579007306052 1.0150445908516249682794245747457873 GT 1 -53296213944438061.6384567500374441806265617433631741 1.5789694010162219536361280920162644 0.0274569108840842708506114643086743 1.0278408968968808614158356350963513 GT 1 -200.8155746873263886619773615338786634 0.2800164646465464560643966728181100 0.0559626446087865631113361791600885 1.0575895422305658382517360288023963 GT 1 -10051277502928799442334923535270.6655375561667564371511220110702446 1.1970656233310415912961009060140731 0.0140747361852837900334509430123968 1.0141747246004237973460590131794677 GT 1 -1818542365608593244.4829147261651026466086725081531663 0.4605162709184055741677107941557679 0.0217286185970721381103517643568806 1.0219681613424029697083213977649818 GT 1 -2569589040144600892.1155051076822183476342285322224993 1.2658580882530099013957999080383022 0.0175132998532095567230667697858603 1.0176684720766125968830395337305033 GT 1 -42763503030.4055157120346653090289490072328696 0.5589997029448563639331283907304406 0.0652266744454124640759411734657412 1.0674512116469124656993038055575557 GT 1 -52322683121.2407271342891318826024821559140201 0.4683555727936293399750082235883076 0.0984213996288518470774440988053795 1.1036080517077880922987939690718089 GT 1 -630325564220375831.1753617034117478217286461816320233 0.6611507262997476592700479882757060 0.0648673357228364050033295449899504 1.0670668728310003983903081387292238 GT 1 -56228877381022404.3329199124469321894723245366863504 2.9950550074669366423335697187093041 0.0261910135744776980899408712578370 1.0265401070716364700536859655101804 GT 1 -3155623179495413065741712657493.7702212992541084584398780857780111 0.0743648729433888152206764800581346 0.0367213319995501086769991398323390 1.0374125341741794510930147102664876 GT 1 -5292613019532.4638112907049649047723759640738665 0.6318513016753863366597128560640549 0.0074163137877524670515878579918570 1.0074439513736443247874024244745305 GT 1 -177532789982267124244227.6105686251072780730741835048077783 0.7774863109048727942036541269273125 0.0086039928370523258682885609926938 1.0086412208770967309919698218463711 GT 1 -54764702.0511338792120051525128230716940531 2.8543595074937260573949541462097235 0.0439344502712991513375029254754666 1.0449288016195009042064852140924443 GT 1 -47473996168610786827299841522.6540385852356472848914130206112544 1.1533850207838193135241918603305549 0.0896837477344143152681124631666522 1.0939632098836089912498843321884562 GT 1 -142018740.7902419863181283294600547575967317 1.3389067883472441831467427849633885 0.0023643722340823342058361505824160 1.0023671717757559358643477966707368 GT 1 -7608276224418288556902390103711015306.0302525092796530263523750385094121 0.1517205802580889582061263732452025 0.0167057365587842569031038934829483 1.0168468511994006817650707828948209 GT 1 -1355064395066569378159890595187087078.7386407232925754762991544152232120 1.9301401957026472594971949154867004 0.0886805239299568115098432753484049 1.0928617559647180789900740928586159 GT 1 -1749398379387475362684905.4295614930539080711235880995992095 0.7406847632718327666384423658230096 0.0182199020581728231226985326449260 1.0183879285538385933477202088270881 GT 1 -92426168396561110.4971204330480882379942868251751229 0.0604144900140130721869276280817866 0.0152564232225209784585869412633975 1.0153739998459930042959135359950546 GT 1 -87814429263040537771.7482453434403232469459987787022686 1.1873322797249696489581847743830207 0.0830986297633651477698545870939020 1.0867553695041955807549119714113157 GT 1 -9224277964162037267201910.7619537543462549389314791902118043 0.3281565816687989955230460617637743 0.0898729307538255085925116676599623 1.0941710526852570275790619331401098 GT 1 -92156.4609193496749642186141829135339705 1.6505214940967891164307636655306908 0.0493542418448744407892111924572544 1.0506137798833853133307966687137932 GT 1 -1310865620530180138180.5387016765220942663621960664056268 1.7238327353122163506875864384735984 0.0306173658306210127297194110119767 1.0310958697303091444391266462515310 GT 1 -2165024162079334997224678282487894.4226514849404489480017210529034430 0.4105969829322369095094817721840840 0.0740992480891190925835284301980267 1.0769882294419755828019206213111584 GT 1 -99738712113061280912871.5053803269987481375626559312181102 0.2504142599985168351943458671682097 0.0092757302453215345183807103822909 1.0093190177210204977854780602884852 GT 1 -1930434543386053.8436353964385672283869811944393841 0.2192538914204019873936379811643803 0.0966498433868641218332736286139504 1.1016450303929394565894375062428887 GT 1 -12402422415732.1505641542426207171872016112905316 1.0028098349243031476689712100942354 0.0473374043939718537105619664155377 1.0484944825012356804893749180099378 GT 1 -27316707159517013967951334.0535842475880747616633009984415304 3.6096537370761879123170426087533937 0.0631308319856102519367896983576746 1.0652116350792572278597070845039489 LT 1 -1966584185202884897105556474998.6738720685332249016984355883633122 0.4846011243072378725360665839320144 0.0946065940309464255283960432964477 1.0993857270098334164257230454315349 GT 1 -6574093520539765822.6956721656695674884023477789270513 0.3744523511289482405162609418471143 0.0969067968107606104453889910931154 1.1019295158424667290204432319994102 GT 1 -19088643249860878965023213751975.1553317276669124370807128537789209 0.3813352855533423954613016857176318 0.0586046973731463568304714445023068 1.0603921398014408099011596896734772 GT 1 -40049149156704665.4272815125585002173643999459353736 0.0159035905311515731436786817329629 0.0001023926540512563082878618817401 1.0001023978965369225395738896244314 GT 1 -62314579717703136.1224508340597437076208257670469819 1.4623666665759402686010215181197674 0.0511993660955497533118626196968180 1.0525565826271262068288414109673259 GT 1 -73030760451168157538016138697926704532.2417897342783710980222751924852744 0.4968812901252982813829883159581005 0.0403313035581414887286153793195625 1.0411671619567454714652542519776106 GT 1 -1408764097070613588.3329132084606524830103022540850855 0.2959701577064661655112703105207867 0.0882360098033467419966744830212305 1.0923741050769293178264705727125249 GT 1 -9325853344255339.6927636548557701312941690013260289 0.4444218448601558629018647636150677 0.0081541328818338278026114951493292 1.0081875596582935727936833504477490 GT 1 -64739249660878640533777.3628193937694494566199771375170289 0.4905411231171856695246610124835836 0.0196619286496274077838771443385656 1.0198577960405668628024848134127570 GT 1 -1975850826243543430497602992798046.6336924506752492120089901238376736 1.9726000221182945221256029568477735 0.0336749420195321557073207099271600 1.0342550024281076585018513232865309 GT 1 -5274840218091499231825065.8270466484929051977009365936350686 0.0260023664702811948325000716957237 0.0730348040659318161511266534561457 1.0758392589602999129393699967012643 GT 1 -1404471145.8954209105853804228449062694064274 0.4563117725692164614046126029978841 0.0375584699881579004891118142708902 1.0382819627050792254292060195066186 GT 1 -129821206142717422946325121267238221.1669444639923405815298075413864412 0.7153733513461100008597183530706301 0.0800094088805475382063045625220900 1.0833918360354210412881886420734766 GT 1 -3.4793561768867575705587250354223242 0.6198797167921708242279643757972123 0.0757316218786468183185297790007610 1.0787527970013308428960820654122511 GT 1 -9617366785.0571066189541659736259978282192909 1.1012160177834519568427756601415773 0.0255087900356556332493716037506496 1.0258397801220527339277451081166200 GT 1 -165576544742510251962273.4826784284089053057599586817468204 0.4762201550029798736969675629266560 0.0704123642029693620693120583074416 1.0730141935355181515051970998901981 GT 1 -254902357195169383067.5793022883089680225827879585059894 0.8751255128964375263076519159041900 0.0241805371816099069764588107529829 1.0244776862998316200023459586923848 GT 1 -1225318.9581849389964919276456557554482789 0.0512423479487607394189654232156790 0.0383004217541797351183469645202913 1.0390531658144675266582401447779706 GT 1 -11063096805868512354.7330534483719053519052901753938495 0.4207651323459776847698508952206407 0.0186357088911815662086664744266972 1.0188115416528504290725541934006376 GT 1 -7604735776460447772175291104641678584490513.9756488959229869218699854559807965 3.4842835200962979221399793712450925 0.0278544164151079452304153107844136 1.0282497083864935068653076743118960 GT 1 -4.5158108305957406573995116472305990 0.3757517843393456662315036625993283 0.0877685282427444649400638737786914 1.0918615143599136426768371930181201 GT 1 -7655929590622662357047071.5694256538327218925984549787000974 1.6925924083534170699161673728202665 0.0470802084221609577863319074067830 1.0482245430065148524001564050442692 GT 1 -3754411768506497.6580169743591642450593567673738187 0.1702877444546496079167621260061534 0.0317891987672579347352177777705295 1.0323054455454407419204316317059518 GT 1 -30.5849714518823085341556017556978500 0.7468064607756805976839067402070010 0.0620339685766072144800962502435507 1.0640415444659851572817252403455633 GT 1 -15301966659380727229798064932.1248908149731066490446233250680251 2.8906315680769408607634498721395191 0.0771902999302490832649166397450689 1.0803322411754189997202310309734574 LT 1 -128006525681365327759989112.9572192116906826634507137854812320 0.8003374467826845307386087422293184 0.0033054322791889186842446252356279 1.0033109072886428888996199264562455 GT 1 -1.2707123833919073457755172796375455 1.8116468235186980255899809149920769 0.0984505925046544760198227604893009 1.1036404319666247584404956901994171 GT 1 -90927.5907594953484310494603012241321358 0.2153314504557273257268309735846751 0.0978370118832661159860198147129999 1.1029600788831188806616142020286810 GT 1 -1702693989142339071410348.3980150209541769534352003348111017 0.7516758711057019023498125623559799 0.0236726553393469488290607572733025 1.0239573546815577904565019747083391 GT 1 -5316888863843592929367826486739.0760837540506146120279072916205119 2.9753253473598365143166408798676908 0.0028533873758073755192068159622645 1.0028574660460974849184208772847436 GT 1 -29.0120150236432484639057721046748460 0.1664932369207397020197425667365879 0.0351633447145072769804382244875718 1.0357964611049922954470886264641094 GT 1 -6108147816723696579710335.4519380534352311015587731076078296 0.1530875028589346360278827320478183 0.0956378806495818655696455931545861 1.1005254242958327733252186980584876 GT 1 -16868174906609052480295203519362922181482.6198826679897133164515526177945501 0.1866392436089694851891833214855242 0.0448671715590227305119107337662102 1.0459048608004075644997885632111684 GT 1 -22674014384515631106584640816335.2617100359777680372920536353380501 0.4660303007185189923629348443000815 0.0389800582133764340978890126798940 1.0397601191484526387920202206360338 GT 1 -11563100048.0706418520942800894319542624754275 0.3435920670191901595692706067216466 0.0698551081809009072120676532076799 1.0724149073150844060305947943871603 GT 1 -397100791597711332843224376757603173916080.7347628330545114810128874713007992 0.3528374347206578933099897741266570 0.0001139049753933587044015144856708 1.0001139114630577245617685721139328 GT 1 -540435594239579907968022736712680.8897034676711067624789996526256246 3.3785702065978712591006468259682476 0.0319260065836509419963833234215834 1.0324467551472087540119952763535101 GT 1 -10220.3670915846984836830698460064658260 0.2301753071242770933252532471705894 0.0401576094462807424560948597482267 1.0409861845052354686031346509880029 GT 1 -1826668683073384846273858.8347425168703162800664277064261851 2.5603179284995741596788791097928922 0.0446158192170333765263555370031887 1.0456417358533633645268161196219336 GT 1 -8659993937522697149.6404917675437842762533282977350361 0.4247662012632493862113942322077877 0.0413934494721890751418047952544714 1.0422745588480627128099839539953885 GT 1 -884187051284124063245.5065658390261126423392080289110897 0.3052562148978839663429936389345105 0.0700059100096067908808819372611576 1.0725770477040671295017164176855173 GT 1 -891.5497175960721662483150246887261011 0.2498468657153883863284982613192098 0.0037512022423656161357276806969282 1.0037582556461850603586601108408081 GT 1 -692538574620281937604742346449.2586321772343482487611098212105828 2.3412429861774786237785855510310574 0.0753092496943572616463134439082905 1.0782959213623372533213420062944856 GT 1 -1069906815658773162172.7848940866804929325915706699984214 3.0401968885247496706419798256520162 0.0249003338000990746568088838638183 1.0252155914650881469793941934717395 GT 1 -9474596339459940708526785800763535.9465687915473405660325485954085563 1.4460509530616798844130517158108519 0.0004661025402619953557735692021182 1.0004662111998166561284548788310830 GT 1 -678022480389574311681067805536326.5777803835902286856086209369538668 1.4621242346772230387773796826711226 0.0572849619621895936651938005536926 1.0589912286145422200185173073411314 GT 1 -501087.5363234666359492605133769465360418 0.2878582285548784071357839452015520 0.0245426714638408793408027047295625 1.0248488630472752800382073894418736 GT 1 -14352.4572035999285818846837028327494875 0.6201680527070882634470990378645861 0.0496456623065895032646371618776864 1.0509203768842316689712872206676062 GT 1 -379187401746334297432395534803912.7718456928006354759543752285144675 1.1651096529413745602139413742207142 0.0603722954120242321500857166531779 1.0622715411191100582577951028394670 GT 1 -1856742319229083.6900890994266021109049973155479176 0.1998708876955561867202717330016422 0.0251296244354092129026996941258442 1.0254507649615583088309834842548894 GT 1 -1625111752207.2808988535611321191429604505567552 1.3225477982992731624200415663267410 0.0089824130263629291148575283647526 1.0090229981157377620570017475156650 GT 1 -38528959195866071717.6626768576180504905103804979899544 0.6729485859089109350492127483596697 0.0309892863532152065528784596617847 1.0314796107574615588248963624179712 GT 1 -3193468486528332412092889942223093734.2144634496670976418489585566560138 0.5320599809160993121351842384493482 0.0457526025620901128883871524210884 1.0468323146983113243773472871299132 GT 1 -561719468992.5133631195720242247595559935044729 2.0139145182518541609033327284647971 0.0292143821086653362029285704366679 1.0296496199372717886250681663331888 GT 1 -95710074.4076091950567739274908414358032607 0.0782976537128901565898896931047368 0.0355526301937641871323745294591115 1.0362000154593300692290823117125252 GT 1 -16684591155209285393949107015638767742049659.9752424362661402272157488205146517 0.6731087845179193588476881000517630 0.0376919013858623369329384311163240 1.0384206107618796708934757458119488 GT 1 -1628.7110867395345468389947452272013278 0.6961123077798798526909196850626339 0.0265879692464685633368126141483154 1.0269478221424863287543679113655757 GT 1 -175696423.2758916062295249249190462426135837 0.9042725008945541173599180732282556 0.0612038870882164454376770851199123 1.0631569554997974539904448594160779 GT 1 -2518738864186049166669399.1182077110038814419414021641737752 0.1846158639793068691400089064329225 0.0996357966747278419360604921171834 1.1049559271533808475199805961431805 GT 1 -455055622204137342044054488938924268601.5029371588363582863957033423060668 0.7726156611439985313590317728399584 0.0155514421526464677457037379195575 1.0156736343277130415897290891013124 GT 1 -647.3926479536918825139251665846533951 0.0622266904708303798298849641790283 0.0414925679151074038707333010785068 1.0423779626559798241183846831442913 GT 1 -15673430705517180734980773777485361.3683545044646218522283838207789681 0.3970853233883623721085727518996953 0.0521028419662936521786082955819627 1.0535092656986385578810628114946413 GT 1 -3164574554809451299775399646415.5797557384763058870002755594761763 0.9268696581103364494146736123201046 0.0021337574724513002646981547741211 1.0021360371763944224347933102424153 GT 1 -45313433604435289303685517109557267496723.1185369614682087193214688203534273 1.2620202461712367026254136009511427 0.0468863262827303404262966666163045 1.0480211025699962852741103045313591 GT 1 -63774215697094.6711941650443223146875719977143802 0.5277312574072877347181999119878605 0.0059339409416123475022100908231091 1.0059516167285661519796535155475920 GT 1 -19460182733021045697327288349399374999260.1112389433076763536803161064863483 1.9086701685276596460408332810418273 0.0714561965810530908561403514935718 1.0741377227604778118934224682138002 GT 1 -53308905038243507015285272546222287182.4240752700970219905294102636835376 0.6240638298704947538546045500328021 0.0682909851157908596314714596072049 1.0707347288355178104579500799566072 GT 1 -47545026919353672.0602814433568202694526505639384205 1.3357283809429978347723008715648156 0.0192173531680908500638839450392137 1.0194044068279290314161504877992531 GT 1 -4300906262996331.1234129459751447581926178678752196 0.7982224028090776454059820618059188 0.0997056501456694492585503123423892 1.1050335137350826380691727538603691 GT 1 -13023166875101.1893509787691257389260997561496746 0.3075095342915546312385984008494583 0.0805888461683727493637671727163030 1.0840218640416271720344545437555318 GT 1 -201236369778.2354836396708113982040579316161626 5.6024493602341547041728291847880389 0.0749489829827846077502608208133425 1.0779063894584872412716118302342659 LT 1 -180130924879536038434590008816143.5599048604245643493941963064037323 0.3129113215978898505230336331511363 0.0346661623325905200401147810864921 1.0352812916992553634306185241825298 GT 1 -1742567355126.0669062810630805751638304120556084 1.5672514774956223929205765712868176 0.0061168574483665760343269245716321 1.0061356420619321119877404955460509 GT 1 -27438764064007.5970539601638923874602371374084086 0.6218458703753483235404976323157440 0.0561756709982345087696906796082018 1.0578152223130773788824759164953878 GT 1 -4499605701885193702016822603616865021087.5089463652610417189360116549781136 0.7989310839102988004166982459148180 0.0053708907085142721772060785327689 1.0053853657946837350188334593557119 GT 1 -3415434.9302118979821428619737540796026507 0.3517761526300871638971305601139560 0.0922120774727810747132767760369963 1.0967444931601703757927555444810173 GT 1 -4976692737284945759416.0609676321262008095775032047591528 1.6527993037864657149083871930898844 0.0801275904132250339988253934812751 1.0835203037885033856906620250286652 GT 1 -15735061655616998455031516.9641500794462577941271060918830136 3.8586929982458404628892058537959065 0.0844537373191689206850802297656766 1.0882343834508796542802378653369651 LT 1 -4.7014466771244472530300920894641311 1.4807603581171082993426572372101819 0.0767839354118237957415001505692795 1.0798919823959709068720353814553581 GT 1 -160537731890.7479358180260271295886126768177965 0.0843959210987511970831637794786267 0.0097880832699719009781851225685066 1.0098363014574383701853546652636797 GT 1 -243336630973.7663831542849111486351150265479469 0.0202130351120404458222019959479911 0.0911135264819041999587254077563496 1.0955350842235224547646735674057888 GT 1 -60339492829899011582151149.0003671399858199680214026508778565 1.3863406775355994197617187253044777 0.0608423541397196566165606652395111 1.0627719269001587358720110251826065 GT 1 -1425170250856.8957166578859248502294902201791978 0.4548049192286948190983280491414044 0.0709545451202703860122900856132075 1.0735976125388701963926192483267344 GT 1 -1008342153151304.4508701772662399590269946435252932 2.3885502205693116719157674666187475 0.0878873908554083373899792423789510 1.0962230692107750951350572190483623 GT 2 -340359306057463137161021860938820965681.5297928962390188361226155111907484 0.1784995818585119286958905451954773 0.0985266132849177039204706527591990 1.1037247578892391382216847209891448 GT 1 -348244677151612981393577103928119846.8535488370191549687488216570605967 1.7194329496426130412739436443908936 0.0308767249831593470605953990926168 1.0313634563833668891846211723640951 GT 1 -1153494272333693288226892068969813612697767.6760428643564559458458383508965784 0.1970290433462583040676420760644787 0.0648423275002548487109037960213018 1.0670401302209453802476114517613583 GT 1 -1577061383096447966091793.1615329780143159965472150193858586 0.2382244072487548388631847549614080 0.0303345800576816088259985746063808 1.0308041948805347106208355835933024 GT 1 -328214787.9094113712141451118522052185235892 2.0191305159128713693392769224193155 0.0995733864263611789469896070835982 1.1048866128856647058066187092098857 GT 1 -35694885968866644595543531635521872199290.5689830245754078161010586823311034 0.3168709463502630956104473017106245 0.0990039191365473718241860024858403 1.1042543711463530270027893325873097 GT 1 -5423048703213680141907824.0597779646804177916694424281766088 0.6730650509829817110527234689426972 0.0351975334693657799586138299408947 1.0358318964923406850990085312921761 GT 1 -1.2029867658419024696372564391028321 0.1825576513159336099895756592104651 0.0676029777148891378918642472417670 1.0699965654280467468157160739811115 GT 1 -149013237345373.0959340730687460758480939866981836 0.4412652455871173442882455197129867 0.0951749631168036174871685140070956 1.1000136833835831963961840186227855 GT 1 -4323892621213027998336.0760486964050536688022816469438727 0.4284395437006669236472403959383649 0.0420519676913437411109613845208186 1.0429617485070124600980529180524024 GT 1 -28073515.4243984318171017365067586755830816 0.3941306234551524867391401846153488 0.0317767480017157964584642552855464 1.0322925860674517701822874087248905 GT 1 -96020078634502.8415279930934018500841547906426569 0.0191321685341574928181222222309197 0.0321647130437813200170493218363030 1.0326933642871723833052132681668921 GT 1 -187664385417457356888058859192967969.3405621438356437263987795181682004 0.9833643220846740504579810840766379 0.0140451075262712781951958836367385 1.0141446734242199555535317260977626 GT 1 -2600.4671886830589031358065595819655849 0.9675754683890478576135994686584013 0.0309431096406762677232319628231861 1.0314319584336187510746839793329551 GT 1 -60979811185662.0503003053101095816962193535962650 0.5081432222357100282800984755146595 0.0929769387713050401653061466315486 1.0975874033592557106601859253057673 GT 1 -24855764409223945379.0639279862049836124097772908030445 0.9764101922900880297913395301812695 0.0429297104094909420998607165020867 1.0438784423783720616141408966274617 GT 1 -6665864477730868669403505418.3809032442113369161571327417871881 0.2418037691214534404378803949939073 0.0408183423941515686199305270181717 1.0416747980477430112534241300822187 GT 1 -102094683639971376966814312398852.4586656951803186849560377902433110 0.0421350553954942936870287832264372 0.0695656439873232805381726355258793 1.0721037523924973847811043470313746 GT 1 -3035645527241470803237555281507.1594415412676953373774572341628512 0.6669371162819442839416243487684765 0.0185604721115726460372231670734306 1.0187348790960349393200843430829765 GT 1 -438858545114104887209076327393846360386773.1630338899925234134752441144012250 0.0265615716016016845902683871057585 0.0509899320962114909727515823349335 1.0523358714676950789209434831210848 GT 1 -1529118713349570601184041.0610649803890671975938706498955345 0.4640120789402201652885924212201866 0.0231825575801395761828197884099081 1.0234554996498822075437767041821589 GT 1 -325662860770378389798359732387578.0423442937209672606093220140071108 0.6962620900615798162069331107858300 0.0630732419724909028444288252764979 1.0651501662583070913632971207963586 GT 1 -610680288002885779340777107154.9140721076599296451536811188926251 0.3455094580514962902083090910085177 0.0114809615165860187674950208647948 1.0115473765838316663181841246666417 GT 1 -2318535599301789993607455050697229737.5310928923892126990602615448797445 2.0422028065811651166339524220830147 0.0748615823449136346082521384656964 1.0778119119565643479614050098461522 GT 1 -4537948857008.5809850488331819861935672396553508 1.9496445210064760821520335597160311 0.0741507648971174607306216084346175 1.0770438706552850945879340329184872 GT 1 -474939093607708568897969605.0282721110848466942211050745693887 0.3819316782311027742374759083309776 0.0176430851307337049523624988091920 1.0178005795651893331837987068476449 GT 1 -1917.7751563923593985769303547883045762 0.7474893104363274984590884828208637 0.0449366022929552652877334050780955 1.0459775556712409344438848530526410 GT 1 -3949067201994.1570329484885589341265426600421296 0.4335447781956688423327175868258667 0.0923214138344605916848768681841191 1.0968649430404498360469895804125975 GT 1 -1110453472689440964267474746886981042399.8561996978318131949787556030841918 1.8790163975958758044100659027309260 0.0140766044977496595430890432243141 1.0141766195860831097985896502246654 GT 1 -42314068037509137075005571063225180009646.0510497914532296211199645363774374 0.6280090381150485397660291323330953 0.0299000778474076121781727552868818 1.0303562002616889465578363965670908 GT 1 -687157891191619132815324716994034974255.6313404491743600542209529803480991 0.1503462211992475627654929593932581 0.0110696285695022410587959014080238 1.0111313528403627178267619354489757 GT 1 -1657466448950273073360705.5040070666962447289835815925193154 0.3396098055245801771579835075411922 0.0976204273653350421588301692979940 1.1027200352025964620649335868254389 GT 1 -526689259027643205454431554240110395041473.7768047630101482390084129908005912 0.6249782020021977048446530933514507 0.0169794257700207889250074516429630 1.0171252290133301335587532678492630 GT 1 -10294030778327749016987.4881645170002150826321854651475229 0.7292786239579511444086040612659462 0.0434948743175911847845404638013418 1.0444691313264242198844476458625798 GT 1 -49833756102226071591054.1709552119360350623025915322925029 1.1412756041833487724744541508261879 0.0972124122045872193527424150048722 1.1022679826983853595729151968768401 GT 1 -12143517452946.9110278650294988615870096886740396 0.2624679504575875211693917581751686 0.0389773532185104133404492622673973 1.0397573044398898720164888807220254 GT 1 -2751041180031239153794826400172732083255.4948219198551865135821507215254848 0.0500837794872273201903692196864821 0.0998849031236755074041001437045907 1.1052326384163309541526663243748433 GT 1 -1816531500296096205479.6153964341461321010657278755208623 0.9908761093433634045217719486587524 0.0087919795185563111857007347757388 1.0088308570116411585957875272253803 GT 1 -1960606610334809.2424404797310573386517198871537112 2.0098816579208037275805123503748521 0.0674716733154106167561206156878167 1.0698557507838916563417598521076474 GT 1 -2118342687748699.2683687265048729680779355576555832 0.4402332680191813520291494340878598 0.0257197954244364842256965035340600 1.0260563323436536003966439811760196 GT 1 -26792548709619862946270347921.8733477452988346084647158442520150 0.2924761028409157449829194297772779 0.0134779959064209722790662804165738 1.0135696485542570111826438344940663 GT 1 -716206.5069408940594755651692650106961797 0.4865050392275367741214101915105731 0.0616239185234178670458503691473194 1.0636044705902798649246540478896428 GT 1 -1780668827.7163256423893265760641904299256060 1.3571433807487266986768070084834917 0.0787906045473902935292909078205501 1.0820679119423619795931744881331477 GT 1 -79.0502520462652608973580835242971960 0.2359561723087191451176194916662544 0.0400256372786213729024961453570468 1.0408487003754172352042194205000827 GT 1 -1620714794447518486162976077915812.7414730638992767532477217176082523 0.4702442021895053275143491331247893 0.0349542760766189133964575113465234 1.0355797964616351836010529570892038 GT 1 -866156029363203642463539974861453472523813.9140742541651192389346861065917865 0.6799034505669578680961630503771071 0.0675540980405215924716576635612172 1.0699441431315162876145922311253500 GT 1 -16503978577172.3087511198599481487816870929379721 1.1530769947897055269805180442202310 0.0574943776978916186610893655976341 1.0592133943704868011524763741911737 GT 1 -648490652350590753.6609423807265313959469751984326601 1.3971590141211976484875499906144902 0.0336489794774164383095666361659639 1.0342281354922501108414602491782954 GT 1 -2675182436958847275.7715524525075579141369579191275620 0.7074683453350084652035478600425241 0.0921620572888999202040405159067015 1.0966893935002112532637623477736791 GT 1 -99873046039852888480.7995137064311648495571818335710141 1.1200732448401354709383960083063476 0.0810921469308599188982426937779071 1.0845694303488602440071749512090594 GT 1 -4593585335294552394858806982597296053.2011626323546744196241722821251651 0.8544019127567416765866394164520879 0.0211750720895433657853145314631999 1.0214024799095009712078509715399133 GT 1 -100599133938399224678678536123.6871190997921550411279562442916110 1.1824108097997147115289989182984258 0.0290143195484573274138348614570556 1.0294435580173261626820136899654990 GT 1 -254497552432742673944154376100143453.7709831259071992302793233424723388 2.5592854105206703543427529995919496 0.0677852445736362386471152934827465 1.0701920665629278488661357871716610 GT 1 -20930681813868909634798047800435770.9830095797732834750171763444051085 0.3949639877028268353658150948940005 0.0005152129614949210540629185273559 1.0005153457292971874219056771289973 GT 1 -40.1114858950714933465849973755665784 3.2698801482451633679770021433201944 0.0842355052789510064830165884372255 1.0879960491972649939562077480231467 LT 1 -76096400374951295434.3039887968913686273259327251341823 0.5463515088492903090637256175303172 0.0680983988951942942934002058842977 1.0705280480840455745094075709107621 GT 1 -485.5445060010522891238018105938302817 0.0831929299265937904474914036150024 0.0993871916785857837926603219883871 1.1046798492288838690319140113226145 GT 1 -39382135022868.5588429614577751102088094882114152 1.3208481057832773236108595439982480 0.0767423079872919668310160798148135 1.0798468938325509622107025504897767 GT 1 -30788836136.7766565735760639717840122880357817 0.3625078301115651879577006455495587 0.0298234642278702946902292288573767 1.0302772284025353506316765578794994 GT 1 -20888423843512666278388.5413195052618470817017418333850166 0.5100544508857196187924536307810484 0.0150901895959334772418321497875799 1.0152052050437561892910910687721997 GT 1 -600010730813963760353588975.7331949578693356636766548304412395 0.5206870092581588657634554466645842 0.0920438877727801574943967163730846 1.0965592361005158323224016410927323 GT 1 -27131192407704777141341745875555843814.9110295838731882458889236737383771 0.9383416296257537561832885615779772 0.0978408604350780403037398557429416 1.1029643448085352863183107541481258 GT 1 -4621264378935104544736783724.3691148305680471060933126347484801 0.4433286676321989590470615426015342 0.0522834219171203373828418393602583 1.0536997896940416215798122811761876 GT 1 -53693481776104.6025072691294720769031910408935755 0.4100154633937005844442556354763569 0.0770740743210374825340030317731113 1.0802063015687452936685260032262421 GT 1 -82.3099036820133204966810829388544502 0.2893650325368487053517079011289536 0.0700549182744228886340487356419352 1.0726297464864495930845914427193454 GT 1 -9111736474735403912.3062002908622532784121318015448387 2.8366508779776995795338426289309692 0.0490038724365675333936356766061213 1.0502452884077790950479893891545286 GT 1 -15932956594703048764280411694430373753.0672912540847273144978125663645856 0.8449101852154159076771276425230388 0.0266825055910272875682167560317985 1.0270449453878176447403604771041214 GT 1 -2975.8892484377821280545295403914139238 0.4788576910857659323844181845685589 0.0015896666466778041923344612404044 1.0015909315073505261055524259149930 GT 1 -8611281720388781.8265661426997546660415324665384229 0.6137832789804620653195953212422449 0.0465210305466016236409198302259751 1.0476379103428500416936621377533115 GT 1 -3085377002191545793427.6513610043518281421038179512553162 0.4041740616456274926616265351202572 0.0413900615865562334592404644182990 1.0422710246768802856210006833142099 GT 1 -3729864053700.3283152733317215576134313574840309 1.0986176010839691923606686412538826 0.0190773602661886888032826474166750 1.0192616811054685627522882784485114 GT 1 -34744479438984039092140543239241.4790419838475814777808306571756797 2.1995425967653999286382816795119732 0.0409376009437348938275800642314891 1.0417991394205967829334792721289203 GT 1 -79432514484716.1212149972164331822889132413481116 0.3967810134955180227500415044706956 0.0220865932064296089333309169411749 1.0223341539781839837816833367079550 GT 1 -5914747573359598653625833.0780900172348766396488455262875075 2.7763831723899440606030978954498283 0.0184620931645880380049714970329386 1.0186346446813883790058761218105092 GT 1 -15605767823602211120262948056953485095135477.3344942163104660702265044008339567 0.1779691860267833384425908117376341 0.0454156150146815701763816811003380 1.0464792321962150049136331609423704 GT 1 -19945025431751216617112938.5886456444515113964970334533601181 1.7546772516395303690975500718660052 0.0548737451267852175781010935494579 1.0564367573720467339164637016831076 GT 1 -17536156475083458857161958342589301331.6558208638866155585319110992890546 0.0575646602813133995176744730063931 0.0217311160466101002918799843012035 1.0219707142666460173839217778371748 GT 1 -24054249420600663716413639081867751341.7956058197218668575162586064420364 0.3813164702442861749484340845610652 0.0503163153487979095665410391301473 1.0516263133572631798903833149645813 GT 1 -4531325871503.6752336338009425143604949110418505 0.9625228722832406519631450471087366 0.0954081695253562423294914624797834 1.1002714530706586204589319953328776 GT 1 -29742705.6288914184947037946809559210778772 3.0814887432114533397995939998185529 0.0563796241211234216243604260564333 1.0580313379144037013502682759654259 LT 1 -620351677890924560904.2926422721950798025110236210863417 3.0455132765443625222887057664301769 0.0970664067530875677084417552938862 1.1021062684167446460497965648452195 LT 1 -88788331176035373738327930.3821232741889484605140401984763090 2.6690487466483883781328637982133448 0.0003465093644806811257908749327027 1.0003465694127224368794977448216503 GT 1 -5388892116589666221804365844149429938990.2701557483104220903444604927578199 0.3612006375535709798480956421728473 0.0705905242897728365141525598671232 1.0732058668697542341956756416106350 GT 1 -2929506153410535.6016126007193690919025760869018625 0.5727023349666195609904385675227566 0.0096719100956289487567148652370043 1.0097189868118497585674498076567613 GT 1 -22279084970103442057284444047.4661987182255241455159397507348441 0.5161847891919817226121797968353485 0.0935998397471010265607152814641693 1.0982743924668347483264591517395749 GT 1 -581049972752459959.0940659425343533933753234606319502 1.0434057517227365787397906031791127 0.0932381637509613373526198498746226 1.0978754474176506158638650939591074 GT 1 -1674479069301444850428337968963.6360502790728855895914631167880655 0.0379290219144416696165071021816280 0.0307100451745211098218667052451878 1.0311914808659870370646313719301235 GT 1 -123132798411670550143846.7532076159309232263694903084998552 0.1957807154534544997209050673312692 0.0617830453121644296803643207155187 1.0637740617441010389532584642886493 GT 1 -94.4408631467511379257497772804690533 1.1437939782859247205910804638506548 0.0624879447158227780599080624598290 1.0645256622504579782044845443442517 GT 1 -588789133398048512.3107046249954943770035609652636708 2.1270921412612312602215623822971218 0.0953778074579383452987093253163072 1.1002378892500884910429451333507461 GT 1 -38045422476052848.8159412935002997998161906388200700 0.3028075369505694349821071169960960 0.0267826451626978804560965873896790 1.0271478354766313242853438230877961 GT 1 -204.3074951546226912289749669422358087 3.5301202553026588506694188099309090 0.0117813482292284277895125271326111 1.0118512982588577230643824920294536 GT 1 -287329521178728658164401715.2485861420846983686811815498236331 0.0112061661571426614203095430844621 0.0640163391478468276094661908474020 1.0661572590114461439555743330632042 GT 1 -127892792757239604214245450532276.9080005801081492425721519873736529 1.0114889401448720836658276656350933 0.0519313015378658331107034706033225 1.0533283126204930050122951666396994 GT 1 -2921917038.2854967576532790355677197399916569 0.3880523312943144046028617839922981 0.0412121114368774843725795686380030 1.0420854083716086099829074214640099 GT 1 -256255877520211712.6902073834967546900449715193851501 0.1765240607881669399121033482157929 0.0932654435448495358641878962385925 1.0979055327202737746270613376537017 GT 1 -70954827133589428753.0383781674070458962998056258796452 0.0247256496465860873855703872997013 0.0395352389632065034576724892642462 1.0403379855914834527226799638568938 GT 1 -32669991176370860713.2731035479922477799477715622586594 2.1703225078915687756531733931154979 0.0848098043388823265846529108049877 1.0886233711968555427026998432287296 GT 1 -62374714789828735116620420718625888189.6922282614047747661971009902094579 0.4225671944926484894349155499003086 0.0194477261991632251330249062614706 1.0196393213544673946532275472165784 GT 1 -263534311514351381368.3940071114152640661511560102706517 1.3203602298711013843515520270779943 0.0200844281006861103815229983486825 1.0202888621518897026703596115144167 GT 1 -525496194532.8784828891789903136150765667602277 0.2614469820683174559858589137973678 0.0550399628579328615465949768704832 1.0566126411211415046623305163980016 GT 1 -140375212594481789602.1386261396427354463784168768532972 0.5907819283970261332149310844731726 0.0320680025627680069948228343898386 1.0325934447546196069483574702568924 GT 1 -337.8695210138092963396361007229340572 0.1580848131163347717538079885606696 0.0370897539908038336616680419318641 1.0377950740102951163763059600458669 GT 1 -334.1685100601945370664342607146590678 0.2443461230157090511709346418079039 0.0234927746014954616458378531750542 1.0237731294111553057518014484954206 GT 1 -29862738606035.3245222148639495827355307524796898 0.4108772734520403842961644745336800 0.0927029482777104736516631141614083 1.0972853723188438075694208556555506 GT 1 -510440710660485803586870485.2107739585570893947030791517463046 2.8296954974810499353554329050617015 0.0350138085598780198151979892343622 1.0356414871340060334573544524350326 GT 1 -11948198088957524615621889984573243013449.1810740402321309305972836947485682 0.1173253719593788860669434192004996 0.0856583661527708171876918541077425 1.0895509985396003227313981451243198 GT 1 -384692192541367887.8593863051473454835624605024763760 0.7142574545288265082583997623674299 0.0116439569554098940631218848685559 1.0117122786969861778419902109973687 GT 1 -1223767473.5830855872034956708363703095927115 0.4749804641524209659616724966037614 0.0986446770677213389499683555802385 1.1038557340405957563001302738419490 GT 1 -36277691962794206959548.6314713596774459442129487519763766 2.6949024142978477724939089755794318 0.0119380821163552823705338922472352 1.0120099132752294763998430593520164 GT 1 -1234.8421297277883620119084763440034015 0.2746267770437041415431787379732546 0.0362216840329519114152259452720470 1.0368939735068493171574438357494763 GT 1 -6925988118349407097288072982100464357.9045459742335042728637141948982970 2.6919151378592267522628104222362804 0.0288552399189792572079655564856021 1.0292797383000571052879383059858271 GT 1 -5240410961594834895.0748020753442690045266030724913801 1.1257289774135375939143901287311883 0.0101251161963195262261655765483524 1.0101767238364084278854997664179637 GT 1 -217402282619379947671484791149.5357819814988173122392919302044769 0.0585296981869092053608674517344750 0.0986851074615241007234046491098739 1.1039005901584397877244040556791659 GT 1 -29501096069501.8503956880352469233413416135153953 1.5781216197779141648288991318556327 0.0504521638893046135340522962179535 1.0517693696821538772341309599491372 GT 1 -3481287676411843.9532820072227272051727118904798376 0.5719181879369837759446474870051003 0.0123375427622288621032796699458447 1.0124142820792456266580858868961239 GT 1 -10.4403841842859814930789402750604319 5.4940366927509073191106072059422050 0.0496371309271884767259497158738011 1.0509113998734793975573533515744086 LT 1 -3309184.6762818902196942425866987269053924 0.4484765360526911708576230401571805 0.0422529871749281930296696028059082 1.0431716143568332727908393136418128 GT 1 -33679574630544107940283713091699070.4791259795774163408136631182278808 2.0796553338472772226545316522983030 0.0113712318706785374116678396470357 1.0114363786648565223165032384654683 GT 1 -31829291222462158750963152.6718184295256862259830424127678885 0.7085028100943685856511785215282992 0.0553870613711296086143973377218400 1.0569800241452971408751136796103044 GT 1 -198279809245.2529302789617037390560077309440046 3.8996661235900157837860936557294747 0.0415616905291809879311214134883618 1.0424500801005220421502717036932332 LT 1 -5875697.9112785509486781952824846272778615 0.9651057342436284698810996459987891 0.0904903988055613805668388797963601 1.0948497245162512931359870780079694 GT 1 -606883.0146777016828193625831800198186163 0.6853226815558237980724084458468545 0.0939891844577746934628048373381588 1.0987040353258359183591224648928960 GT 1 -26683915955397664719619288359014356024322203.9863819081300894058658103754325437 0.6110736570679696182261870999703704 0.0141399724222244920768121186053177 1.0142408943170245681644491629783157 GT 1 -30700247209820274970047380954522.8939818833182614645626829492926476 2.2883739801776230692795493650130006 0.0629035646479034321635222149756587 1.0649690827736943572442849142063459 GT 1 -16148131587587998584.1816819596931450047549026992017043 0.8215603553622331432075046735600198 0.0286905018118483905451137179140401 1.0291101197807797220924605082155350 GT 1 -528970272.5592042452705960162559306493932772 1.0893671110675728979016124218354177 0.0087967133297447749599507023979457 1.0088356328229689039425295202615311 GT 1 -7242375237356321293773.6819666642740731425220503621555106 2.8977669938074344870231272199944615 0.0600850499068652103295780532311893 1.0638857719767401253434936774250355 LT 2 -290803186799308642.9367329597027553692750391968872730 0.6543825761748597511754465305534164 0.0286399114591792937204957233590142 1.0290580364486205811297940793353413 GT 1 -1743344764325291605468195506521232205954476.9243792130986334829668566900703020 0.1952454556396090601407327433215843 0.0498797497047288630682466332096529 1.0511667231398487235316964079429866 GT 1 -1058566630128461815069095076763.5051184244151593351456596620163459 0.8116203129500735746042521237285472 0.0159861470481134610947516788832697 1.0161153038258438737195733242988973 GT 1 -20545470034221551630389.2673759251948046668950557098754113 3.2962131743636964598763295955489934 0.0077422304433138677966069351820756 1.0077723571085641694988840930669413 GT 1 -13999387317556256507227876441582854371529.5187340064185027235878889329067428 2.5193910295001296693799855358055717 0.0375991752588089518427471862645189 1.0383242573590352809312047461692600 GT 1 -850909247717.6209203716448847962095903070859219 0.8633770950294864549753834974939461 0.0757507221287052194719751918550802 1.0787734624788794726715940128654435 GT 1 -450185.6093021174017481386304354267651143 0.1099444538102250002506401840066495 0.0832677420521623343175834923630237 1.0869398254245902328360161380084980 GT 1 -131246192116830307805.6814466089935652853650831156263099 0.3839975983560581497050221215250342 0.0556702892579468005459837864493290 1.0572799039632831693393299784018348 GT 1 -1135730258191917077176841.8180009284344939869694116941597436 0.0992191763878409340714763472470473 0.0786657993562839007028128145561436 1.0819324413987485955872788650011984 GT 1 -1092263612798083239804478486472.7328661621352047177631209720184639 0.2263373305238165892326179883087041 0.0608807256653935295550435624132298 1.0628127851200161461140702405745893 GT 1 -18570715152771927803340649.1029192624188117850379212254599567 1.5666887076752400124232001120554739 0.0969262365613942199938623834062508 1.1019510418154177842056085094041745 GT 1 -55142755676147988772142966534.7008234350204401377313429453467781 0.6713269478970081554280517946321044 0.0491430457303754768302478462646184 1.0503916438706545216856704289816275 GT 1 -7799344374204229070693335501931949169848.6211444914752747254256309232345092 0.4733204038859966945884724355023687 0.0900249659275335989523779379007456 1.0943381149327919174387822142022544 GT 1 -1183461718701119164478451397742468970.3219734542487497329022266348478380 2.0240998213378760540052899388909469 0.0065769989399849779210180214750686 1.0065987227013398170661553997613288 GT 1 -2749757386044581243460257127456067.7356244136824931394881461603123269 0.2712472685351732776148804681167860 0.0554970761105476839097109967814392 1.0570964963445150200652162417458695 GT 1 -7290520339650871.4110378965155493588172670785532196 0.9657953055712148329945635082150983 0.0854392837138196440158316357147419 1.0893114204779470107790227241036439 GT 1 -13644567181.0357615361314235074514828965099159 0.5080709450481081356086543681380802 0.0196083523720158295924709736537225 1.0198031467157707575427736111428333 GT 1 -85381.6958363659516922737692779052278792 1.4987980875821392713038385244516411 0.0168666581907286043202204011801649 1.0170105202120547973041726100542402 GT 1 -608328.8588787849559004744333763185165976 0.0781056655650850500660776363372940 0.0816441083652066115616489346706232 1.0851702819713272418055655659366532 GT 1 -537538208.5812748316714744640784477751675554 0.1854082464222449003603355618867052 0.0559210221735979967808267542289237 1.0575454533844888827213996131121636 GT 1 -3701656688810517137880608848575888763102.2726090266114731512364375255498908 0.6273052134644402382723699104683978 0.0847887243975862789951441878415105 1.0886003380627284946087903714594756 GT 1 -3630663142.3380425252176667316959740844379554 0.5908099119299893918352423703382875 0.0077740217132312178843050582179758 1.0078043969475949676905895792250634 GT 1 -358688174748823105490547586054644436083.2878143290411445508087067632179134 0.2265738821878935946313835659556630 0.0358612955326376441589073165717823 1.0365201104197017223467689873572695 GT 1 -85413355481208406456210118410730090.5333721992223385993062051437308895 4.6807329361028912966241571823244949 0.0506104790551005689026527027307998 1.0519361104812376637330630957260329 LT 1 -24976720987.7249054613713507393365978714217714 0.8464376134709048966125328715014663 0.0083392164863838591988399177203707 1.0083741822794259529822384932927200 GT 1 -55059889745993471.8880998877207546536585204599787819 0.7333364366348606498577847753638020 0.0527069682929514597446831607876072 1.0541468020793042275206950016581643 GT 1 -10605656687.5114344446602157372179819681097523 0.2739636608021682295323773551686637 0.0092494855195707040083542141185120 1.0092925276279230009546859329919717 GT 1 -657661864720569636907510.1998667372376622474842116947705286 1.5448739765925829044367458157860361 0.0988745782296915109040649699231860 1.1041108282088885812926602521651685 GT 1 -3627837404887001981956368577739722232188.2970602832187070381788735410623374 0.8309836700554398115092161247815086 0.0549829346312304936474179864898514 1.0565522930601582119288429643479446 GT 1 -24619680.2365776659228977175485670124878434 0.5263211596901499815417016382577062 0.0167528170223788539846000369031370 1.0168947326856407278665738243500159 GT 1 -2419962573352764582943050126511036.1974610711130711001924528648770128 0.7222132005955040408850985815030400 0.0165094823377532116575382565337415 1.0166472826207051535982444017444061 GT 1 -4009733343621261.5268446642764885188303734076781097 1.6922292555966575420309639393320565 0.0242859951373045767016455871499077 1.0245857633146958659952475249585659 GT 1 -1670104871388791196.7226662317259409092121297834504641 1.1697123407828582651410623948302452 0.0054829891486012738175099052924555 1.0054980759058922773417139496936833 GT 1 -50789047415330431278391826464041759028318.3846832092544228806651566089149251 0.2590903025669345243947329425262350 0.0585443872117963668598650548653028 1.0603280772026690730479081735213571 GT 1 -10716248985.6681805692466899617331084475929178 1.8265715673939888232811175925999407 0.0242517526116546105203387124776956 1.0245506690917725362156417830920291 GT 1 -6360494194280172787657677.3606108266880377659825499802240697 1.1094461956709451402753232615918074 0.0774538523631683837737896003211385 1.0806178797800694456513210382966341 GT 1 -530008893393821491584057670033.1306200153506895152850919701642615 0.1301317487526419985126844576853168 0.0574006177722626414230078704359039 1.0591139198844703835775362246996735 GT 1 -1703618080654815076608840319175129467.6727014769999972031905393427099826 1.9493117161481625336831697651252843 0.0738460476698920272461310830556762 1.0767148029387251681366125497574557 GT 1 -56062013576410104.5035813959191626881612913302557157 0.7024649115269740149888364095776439 0.0484055734998522119964352289396523 1.0496163575480530281838905707991012 GT 1 -310.3181885039991525653526661553660671 1.2101037547856159828747094051753326 0.0642268083372953283006352642248135 1.0663821484676303302869781122470768 GT 1 -536709929081634.3856218496553789052145178402805154 0.1945786198715641983795092682744553 0.0119809548597180373947926390829314 1.0120533049622824959837888058851565 GT 1 -20801905610576032024713114742534.9264074092295891068749973739137601 2.2115439913757029823993962548931823 0.0243263172355706329579251368602343 1.0246270899034895325926419171313367 GT 1 -37545227303805540.6414712921050108079755131093377330 1.8402416697180515260707361309413700 0.0518847514042257810467735653922555 1.0532792138674720968200055708829160 GT 1 -1818567795444703295988100444074.7812908462785636511139871112965721 0.2621373043473917652315175384047347 0.0539556427097317341966145021773810 1.0554658217163482728278759216015237 GT 1 -3095569341738.3169646745995926962729967601873574 0.7648234352748458722109408496880791 0.0643020345279846972625828839358272 1.0664625410405461297873545558933393 GT 1 -42861749054328604408962182105.0937352933852649303347292001081783 1.5371232289681650110858403150319796 0.0490042823849678946119810869759291 1.0502457194805004639023224409594093 GT 1 -625610524960568115938748.7778555145803134973164651107902692 2.0428780503265477829947351018571041 0.0033764278063308952000558358935968 1.0033821408019997110999037156245088 GT 1 -25177638817298753211515542.2753249450939490589872421335968580 0.1847953661264625807360222565663463 0.0619857788511345710477168219348267 1.0639901689513259092513602671732416 GT 1 -129715.9925130160297445329248459070957098 0.7190851852496749858247481512238745 0.0092712575660647235201458061272450 1.0093145031761594230358022657662234 GT 1 -2880450506732403848608414403488942.6617141355984518434806593877018409 0.4268235041902657987543590037221294 0.0225262346036959095814797609193948 1.0227838259520285032924983908294699 GT 1 -275528982708933454132078664982420114287.8720206061860601278526248137068548 0.4074656271731598764551569886387144 0.0850253484802720661799731228490382 1.0888589173474859935263360099522187 GT 1 -203826076159912654.0552613205522906089017511939718392 2.0093836270618498745842459872805615 0.0272920829840648551396409905651004 1.0276714299233187681592324409550089 GT 1 -1585852.7391779417823184963146588404698885 0.6198181554095747523260841596943883 0.0903517590402841228053978923053277 1.0946973025962473650900235530393371 GT 1 -1240642068832694366379095.2160892341820565430042407600410886 0.3850290292156980114042735297345325 0.0222636711669723376056442925643345 1.0225152477168027049262908902614370 GT 1 -19204360839625.7447287413348267369738187278191405 1.6699549602387969985817725208210064 0.0781807610192856836195535131903930 1.0814061278127309339435551027713096 GT 1 -22960924065780732504457.7159338886575121426398007903019570 0.0190842366546668105054858286298623 0.0665692073319443684324781942154252 1.0688884562226410080327045179995121 GT 1 -76461911270140861270634665.6807421472555449586025080450772153 0.0330585666299183002426523084288981 0.0298556924275511337896532538977980 1.0303104478567244323713156030249294 GT 1 -58.9621181015832467833690506666197649 0.4426429155957808419528263032961824 0.0575839298948089092316490312261135 1.0593084139114527696114495925635123 GT 1 -9571.6098285174876595319596507524093454 5.8272615148517138136931881866873880 0.0990113372221618357521018674085010 1.1042626043854419618211181666157993 LT 1 -164950847.0219053609065126852013536296130628 0.6810587335655709228317295958408461 0.0330580404002930113054003535800810 1.0336168064266575605081574024379770 GT 1 -12643381318201347164082764740.6699538353851586388453662656705092 0.6589578861361646102708902561819141 0.0966352691447348005584603616048276 1.1016288969761721225148908339209949 GT 1 -71802544315982120819377837770768569426579.3749594613102236410180156098105322 0.3680739056336792596589829519277018 0.0805700887053599407364154313261847 1.0840014626449331394150477352109372 GT 1 -3800762137700701065.4654142531736677687151480934291537 1.0386515549962384316951971211641215 0.0824606498337292536000127660159084 1.0860598115084953487864102076908411 GT 1 -1716098.1946292115847196322718324881921727 2.0942119239093132119758429906206677 0.0515696539818976539487836491095430 1.0529469282360353943220724834531167 GT 1 -10078289130305.4983886512463940772484137951335859 2.3431571340733983387713151469709943 0.0954612282826637672560108939696276 1.1053631751631908133808877870849030 GT 2 -5099396322190517122781094.6218297000598202254789454907328419 0.5326242264004835891223215967402665 0.0869033309474030727148650098357366 1.0909135233211597497446568193080117 GT 1 -7871705170.4894252897287091717397223313378563 0.0582727173391706715379756720346506 0.0780199671042347515357437306027339 1.0812317119553096293940903446718069 GT 1 -71967824395453320.0976100614779035193551634350857749 0.3221899222602212484929313014992344 0.0605579676240001001797897148082394 1.0624691625366952655379759088312557 GT 1 -2142183525284516.1210542523892163998185757034005876 0.1353388532720602587105131215121828 0.0844481763533398004648178602698598 1.0882283095372311609140024528246316 GT 1 -4475766396502185684359900200.0171351021488460880120447519880859 1.0754841820117155766631345378883343 0.0623474471201824889667783680568816 1.0643758113037288135920482286232232 GT 1 -96240650777375141733723522429370879.2977618024944639881937418038135841 0.0634193273883576005522481151698357 0.0358487036923153068489062069454098 1.0365070503091193356842336541138343 GT 1 -15940199295.3896111924224826989446242211030463 2.3428344908523752823866544490124303 0.0877121777837226862036726046803381 1.0917997441618940063392694356292299 GT 1 -61200955566436771969323.5400203007049061205433154602183360 0.2380057079108091614025554635525415 0.0570700122502681013437582190863947 1.0587632432727488878443513902465658 GT 1 -3829656882979916087288.3175132046991457814371721116375525 0.7613421913961954054723963036940970 0.0314138130014714235026854114750836 1.0319178099049807457546429520258219 GT 1 -8200895248.6338718392128255378729988612090227 0.0151485463154157308366683908738042 0.0489067456277263519813958904035674 1.0501431619674046097332230599517142 GT 1 -515705994982.7894868587045483515330545465592265 0.0953127484436939753882452487822424 0.0269236491758831366939282451428873 1.0272927303740682256536934606763018 GT 1 -8228248512490322.8957908873429233619726502082427316 0.4051771407503432646249472392057327 0.0568141492658360576737776139048658 1.0584919312135625088074547259035686 GT 1 -20072392288.0879322915032075335295636659478426 0.4641659753535559673116381729613555 0.0176962757116919405390132907478624 1.0178547269124828984363200072550230 GT 1 -841162048566797404679233417301032725433861.0204710436918678339322400671914767 0.0621408307440819624103159068535690 0.0441550104413260122084528129149139 1.0451595238907296502121958830001718 GT 1 -231000126720.7057612588496490324950226610859220 0.1570574178080323842065120648702694 0.0693252910682957038342943259383293 1.0718454624030592902073471682686693 GT 1 -598806416.1291412876543984927391068322211724 0.5227068269432388866156526409718370 0.0199822280547791850018939570065488 1.0201845728439695843583243542716948 GT 1 -1313006373221654032088267767480418183771439.9833817107022974163488800364739263 2.1454649894058524625271479571515916 0.0945696628667980530476628227749513 1.0993449376571488493446647823489493 GT 1 -286712502105048312594102154601.6942922111102285201281441756262968 0.5114301572891823769793803091157433 0.0902820106370956187723085109666801 1.0946206292997332206410728084301262 GT 1 -8810999894669849099319923181855896536.2947658472009095195310798500086939 0.4497078237659024999807797083820902 0.0719984319495582561616555462237582 1.0747218564878362941153943886450822 GT 1 -13744892156060383566412223865380825610.1011361927444849786522942867076662 1.0018829087571396360811274687671291 0.0895678984232040552657591812412519 1.0938359552730285497415402911145118 GT 1 -5053724.3600204566169307391004986378953646 0.1974054583708392441828827676868115 0.0142555078164135215389807558150943 1.0143580936774067000780177080121721 GT 1 -1972110887815450.2674876572117190943923905680626929 2.1587605832918561392193736605752181 0.0265613181435071392564686711205467 1.0269204434608129308425074536374825 GT 1 -1861732744927027724475308800995695631597376.0412542865187602052440751395074054 0.2958918582586676052300326679405018 0.0841262113432391507955794396144287 1.0878767091104875808673671157731124 GT 1 -8575282663526840619492634.9525848810035473110406060267481429 0.2977786332433653353310521408743466 0.0416025281005242251703466036619785 1.0424926894588680368478999450389954 GT 1 -17156843244019.6681821567830822555342499249632791 2.3474255179946548604861457160494876 0.0270861873468308950906003209056793 1.0274597796987526780057635728972050 GT 1 -1712479436074378727967.3585357809214752200286551630479160 0.0181263849062321902611121499693430 0.0564143140031461939919593985885089 1.0580681011303846848718774827480764 GT 1 -3313390064413244120793821905402665368110776.4280760637425140400678069359727224 0.9455280790378947448943446948981392 0.0817761746790496794079165457054474 1.0853140996481222462129257307572101 GT 1 -275730133428632174373.3935894755295472922546281606152514 1.0612418636906708651366105958860101 0.0534092427949622812361060777143926 1.0548884257610847728414834732237590 GT 1 -55355621702701736.6617117937036412197638906268327597 2.8715962006299331021081981761605394 0.0080392100642162958760993525420716 1.0080716987528596169773558918381279 GT 1 -35212965640027586.2110575496672773563346655170403601 3.4262970032768084366356738624025125 0.0976419531317595040935011999367486 1.1027438899349330237973763770391820 LT 1 -859881758660056.6444410028025068669556798688496988 1.6509581078130032109416792651099578 0.0967132271911406699095997908243848 1.1017151981209099377614269150853436 GT 1 -3388156794277813.4461035219581853463777610723869047 1.1417155378514863531919754666872136 0.0427399797561659748438056994506901 1.0436802209398130880553284948660503 GT 1 -29335318875291313399768259529946895928771.2718299304557102711060344333382880 0.8220870987140586072527698953037973 0.0932288781399351688235296403893142 1.0978652070622330541121663218882745 GT 1 -38913118151414972543238047638473804412.2303611484001393705048698632921754 0.5277243585903985859475515096376886 0.0707808066499981360282209226504218 1.0734106225200437654088729840888263 GT 1 -106696453043488406036768.4948225631832778634916153590010698 0.1606783331817169412815940917350926 0.0982234177806318316642057180512491 1.1033884811529392940668815384774841 GT 1 -5108.3305936891069376457660324731004400 1.4487885409128886751889990855581009 0.0838895390966875270069123824645782 1.0876183310726576939466352027889259 GT 1 -672257170349103593469752439951837372705128.0941881307862864386087973471661549 0.6067602377080465127095655024209182 0.0397852268201933410537021828664259 1.0405982974800051860718934173528738 GT 1 -508416932971058905510400167511608.7187564062503659184097310297510848 0.7655193525376615173726923355321206 0.0366524983448535126877409603734895 1.0373410790514265109500840920363485 GT 1 -1087177484281650852175039.0062323123315701444331606165016661 1.9584898236510983802289371261614269 0.0421102534985299828174587012185521 1.0430225947935288726630426368027018 GT 1 -22668.7264952403424611538976510139125339 0.2602936566364305851087870374895571 0.0776396662852520785629027950338381 1.0808193142967674021936733232190792 GT 1 -72106532130144172695415779872331090.7602372405148243672215455911968907 1.5104242681258886388137374577120072 0.0676528226939534562331207149961682 1.0700500258212600553792814763320192 GT 1 -1431286738794974837381063.5470509667898057469901514012135849 0.5997997708951181236988451765862749 0.0304929925034437365651748269256911 1.0309675763765512665535088985583347 GT 1 -543609885865321069460428661370.7431704294108380743053431948947241 1.5017652414226478756452360720543031 0.0829299688001938093061465009418943 1.0865714397400621576052807631267533 GT 1 -4486755625906879136.2388174605369567106180808996847413 0.2458592577350197033617755384714163 0.0593996918052299504479014502159642 1.0612369818136096480211651834649580 GT 1 -4243182656707664132686.7422034619795098442196619031947438 2.8190211396152243182337382836860963 0.0927380923003941879205427491189270 1.0973241079273018597671857970983838 LT 1 -807.6238113996975601632490437465959920 0.5210666106999973192469105672718818 0.0570121574564164543058296419732030 1.0587018887503614539619492161564678 GT 1 -2117479856254947527178154568636096826.2778432527608240985999402453794034 0.2808876014638188419444323768024619 0.0438096866450273127352176413148364 1.0447983131960033516151220584086540 GT 1 -5693090388501600305743224296098.6938571656822801827686454756443040 1.1184158363306179392317026418592465 0.0969362229803587831915398314473551 1.1019621001304585437755880871523608 GT 1 -3817414989816897.1528203630419440055994965995928728 3.2135241872591198999887129274152244 0.0358147540247729461738165939094265 1.0364718389579869486486692307528027 GT 1 -819741995532.7674360888733470109821307171483279 0.1521898226638286069258782449692926 0.0720504239370570516621226604684013 1.0747778838112680575558432531939554 GT 1 -1625210.5083310836284856662779934091527195 0.1651233683456141807219309785448233 0.0187773648831037741332692473588536 1.0189558980533494620213634693254647 GT 1 -368481977730024854188320.4328460035380722968249099356509056 0.6455290981476383563407395923496752 0.0427594481384050135104423165572155 1.0437005587579609299274804852014447 GT 1 -2386125482751121250.0054586159922340402096389899431529 1.9852247019595288046351950569420412 0.0310452507600296931879699311843201 1.0315373665925389084857026064843268 GT 1 -391972995245616.4947636139687690821280565700386398 0.2603351699782299935816763208891316 0.0890179311898909582632283654413711 1.0932320648905243423211104796861449 GT 1 -160850134463159687832976092738007.4268981194426231617443204403118930 6.0283919632978313066940035664376409 0.0123671553109873364746717130576984 1.0124442649873523866870976205339232 LT 1 -315288054579.3083888864668945825895203276355821 0.2056940070189756825739514952323967 0.0614772752288219401731341579135792 1.0634482093209922773494859885943431 GT 1 -1061078151164.3960654113967672064022197237910717 1.4851217845784766640824717408311687 0.0635941637035205339950056206179261 1.0657063106888631852231286225649270 GT 1 -232676657528304376375.7391798738339700343426203114932984 0.0228346672338018145065184706050350 0.0628806991949341576785801186467309 1.0649446827512964111252360194532437 GT 1 -2961791.1481886132114755639202318376058520 1.0625141363464862125534377060266364 0.0962972469639665392676704694811688 1.1012547856740498392003875535710376 GT 1 -27402072671854179351.2614377892477416408447406726687113 1.1314357799159539413571828670622535 0.0308881604604859712176041709476037 1.0313752562700172497899692481097453 GT 1 -20172998777595559083580113925490237693.8629702484453597683966333429150090 0.1659419241517488532813394165710509 0.0075863380704539370029807697601378 1.0076152607038824139658442425038951 GT 1 -223566965645848385649671263308151271475583.8188059775814905349901079253761785 0.0975656753270311677545271610156879 0.0089347452100622813596043124588851 1.0089748994033071304295044286775651 GT 1 -690.9978928455003384389771542292111805 1.3209954652436413033635472331403992 0.0484007119126102011042602453264686 1.0496112486753147897903790654588904 GT 1 -15.6841608104860452688774499983093120 2.8145922032727754485499099333914393 0.0422755882499020848392638837266252 1.0431952128033409812835589769556944 GT 1 -6187401.9705908287357548481867797788623870 1.3786153658853225742146875597371832 0.0298448550615073955313502514618448 1.0302992770387047433792745980375822 GT 1 -38378946672259342663096547567474.1716301142509550243972894721133765 0.8476993128644144906370158931122747 0.0633946363454690608890027426351523 1.0654932555199336606885923204591200 GT 1 -21445.3077889099401287162633019378874553 0.6611816637380814248140442004954793 0.0160416015426533037884901125156227 1.0161716608141243843704992535514261 GT 1 -157892759741573524946359509.5022687922800806313340202828198300 1.6720519182926091138074821915585556 0.0562852297888518023033539704288613 1.0579313086932599282040102031296921 GT 1 -196348899222759611902589207.2071354196215651513300666153629887 0.0145009102019689064525982485218832 0.0613430580585302075446629106462321 1.0633052105735623209145537905437083 GT 1 -3935972046704488388292003501.2860272756772825028380760721799307 0.6947163008987264388495656576257027 0.0528736800799045339516090634877478 1.0543228051245014132875879268943100 GT 1 -184121317799205401300818656.2988852756721968673970749991920535 1.0536477867597492149621974516565014 0.0491955234354843518282810907052030 1.0504468352988144516108660333980324 GT 1 -715.4564187155970728059935606176604886 0.4738760193602619893880495347086681 0.0571027086249530687962769575454891 1.0587979191680974992149433536979370 GT 1 -23502373150726016027216502248311.2287191316204918214911624250028611 0.6197499811412276856296096682781311 0.0538101128651185004643160205388347 1.0553120037148731108972649695338109 GT 1 -63553344108080129811239592334142386.8948969741787043305001595561077163 0.2844665729351700232738211793127659 0.0436936576330999254311940343400041 1.0446769754548652385635006753980623 GT 1 -53835907568183659879973562654393568846.4878303518761909934473976856408791 1.7479390438993008413137905119064313 0.0127203570101515677483395644360211 1.0128019534471029276229401382080110 GT 1 -34871316965127647658059007.8347693351216410824753901608992750 0.9407906049503990730213422563910903 0.0018328189249294315422754294536524 1.0018345005926443095253194195334508 GT 1 -180128855892610800096218534838652.1218178776873291549703507069334037 1.4209641115351498625041633480952617 0.0050738868875746304746637085597644 1.0050868027592862829526034889773627 GT 1 -440213434.9359675573798438664591813351357650 0.6367049972025573890014290171959995 0.0197254181713008169879584668210369 1.0199225610226684066126490160866411 GT 1 -4.0075181739817175329833711228923202 0.0023617090424856854090285090822865 0.0723491456876082234638448689344506 1.0750998515670863589806879902582822 GT 1 -3.4894849640681637596846184818053506 0.0621128264250786752577395704639048 0.0431105682093558971037074469763323 1.0440674304729310681994939713607257 GT 1 -274007632293110.3985985450647455198403127980657913 0.5941537864029377600549310445286726 0.0412927002375085774612544884126997 1.0421694646979756286612981251540949 GT 1 -18911237118483.4995947519769939033292734284268421 0.0740801622131547381256165902717085 0.0072408805806896847211672900392254 1.0072672229950270281737286688808349 GT 1 -9832042610766989426559.7031746046386024860386533996898731 1.6728809066362021370862368457115827 0.0611409527975805199015166131892217 1.0630899205170206751091907486089002 GT 1 -133455987690654.4490944215539515706785264930352323 1.9066759869818848928083895887816979 0.0813043653633811168749581004850049 1.0848004033905250853795357707443214 GT 1 -82305039302450607803329799274559.1066681360497690361182755332202432 2.0758471291351457738295214772312877 0.0098145871002021414535623082029372 1.0098630676319178892903421113135138 GT 1 -4350012496668870.0232005846111574747539168221351835 0.1593341524220257114095275444829693 0.0193692810587568391257047522189009 1.0195593235768622146892240786188719 GT 1 -3487830778884758636532594406.9639258546228228707132216213033361 0.4575480513240713462700729179760374 0.0803152137245791245838125873638701 1.0837242912616047585933534801857134 GT 1 -419536955090.9790950029756025240869891952375208 1.4981348793190785275618838913101743 0.0495668659646706797869155628575023 1.0508374677288043175931783719083728 GT 1 -118843465599351762848.5716143638151618456883130322232909 0.9706031744126712919565220454065308 0.0161978393527102696833130812566363 1.0163304583971559023442174751995535 GT 1 -27979018500448102473931.1467939715930936522859132513561836 0.5175123330867877124575472830582870 0.0020237043018427255179704550214973 1.0020257547582053078816237635187908 GT 1 -2750580085831346353950125210489963.5793177252330351538142659621236640 0.3828084737271113021041649670320355 0.0126587460650738367827544633487587 1.0127395506383474083876241148012332 GT 1 -2250470262387127351166.6453861505710290460706111985576490 1.8346178955956907540334136777094203 0.0864036900950313323852094095820166 1.0903664791592919273529730358082094 GT 1 -110694377504231275740547515.8638917099914043300213282280520525 0.0673179663206397832666788114052269 0.0701092340938851663725622088316162 1.0726881557482636241219043383589402 GT 1 -850388761667600694642626581.4970604512020411403166008412545669 2.4554101488174023956357527336575760 0.0805204224545700916337807867605931 1.0874710323847880905455174566616390 GT 2 -2662358945323760382107852467217199.6044849970441748670224570978064448 0.5044537155805864329680776644136135 0.0168424137327866801536737613451299 1.0169858601196981999745437451984863 GT 1 -1609758613334288631742564.4636056683376944921133975225090894 0.6417731669646006858160355397514957 0.0799099438189201555512707690310415 1.0832837265763381714556101068524418 GT 1 -13035604604599145750190409260449336.5580155612783896380095380217045648 4.6188522252732925061802318919263891 0.0345699742480940844837316295979625 1.0351816543625531255817063142043101 LT 1 -1.1316269399892312493295596169040413 0.9538542599083528913061073928381475 0.0530130485034091132687596798870503 1.0544699646696661569069936522317329 GT 1 -12531149763840307830.8491500087004620085841084867608061 1.0244045380944131446891598971497639 0.0651682503949304635599557920372099 1.0673887128322940588132373568497250 GT 1 -52022060926850528274349722458599.8705480696071741685393965328100328 0.2020206097428903482512022478717564 0.0332058939217701219071629706208613 1.0337697264909719213038883572238380 GT 1 -41837125485443692820908997108407.4917998047636162613350126784725346 4.1556011932994812139112025922742756 0.0789265836992853399371018203292230 1.0822155322222391701795305078354424 LT 1 -3194382.1975982568980116848997313344771541 0.0165860054441474643255020342268490 0.0802741460240644368219262340487781 1.0836796381541116981209494066825896 GT 1 -14708612441801664329034007205.4443918035027057236735102804576405 0.6532937972768167645342026439806697 0.0942254908037334551488117836611115 1.0989648900132783483807372488271177 GT 1 -5333972140715558737893729688.8548170881164748848984382020465546 0.9193480704003634753159622413443834 0.0221783932921395482566390223315670 1.0224280318145407669317932131321910 GT 1 -9109075444523894.1506145154417567324127917949420363 3.5287682977271699577298831382592785 0.0673042315472102597169928624506093 1.0696762101387899076071816767119958 LT 1 -12265919227803829861945882.3458427574703866740638100399796141 0.6042756366638488284346537788173273 0.0024761433857467083952894129089368 1.0024792140988447331113026382590315 GT 1 -1029017566121.3370013763503499492647691202648904 1.4246257784261118555321336447789751 0.0573720650646879578129478631602113 1.0590836288873933479662125456766896 GT 1 -184055358142297330416343.5909581406101120232767240717311664 4.6488478659860839211402308037846862 0.0558474888491912324691720877962465 1.0574675674633259355069560892587377 LT 1 -7872814479086025341571344029130244943433915.6140637619013021890111640824948690 3.3214125235854820720709084109257595 0.0333796041968049159261739622259850 1.0339494192318023771649446877387760 GT 1 -570335445147.5536550648440311287537103434078703 0.0741833841074706079291163724182268 0.0786599893713487121453490860148983 1.0819261353627714642705398411663994 GT 1 -2.4335883673751339741614482104095609 3.2876151756998022185040964182739018 0.0565987050900167832718622390999749 1.0582635355338259540992956242090884 LT 1 -1936357428547783241.3437518772758152015263151223413298 1.6289926063775870904240076514440212 0.0868110920615605266236066351957751 1.0908125107664059112176326339227542 GT 1 -1710.7654460520934026822189972948889495 0.4853520869336359619376398917774840 0.0023894935989305990510449218083201 1.0023923529946736514247939756691911 GT 1 -780339668292488653368421069.9816972319874847557456623720232729 3.2330243770806453080434119379442849 0.0964161130180013732839468228829760 1.1013863265725152238181660996460954 LT 1 -2837930.0267949283702467421865526998709358 1.2947385619957620226913307802540143 0.0346125426586062938590167608960752 1.0352257480284659791254392017125450 GT 1 -1353928719957871712162241539439.9346159779800900084131583895519351 2.2924705244712159439211643976548687 0.0279028148730357804896947855448687 1.0282994948213119306590695223354744 GT 1 -22476616.2132053870992932799923928151440468 3.3244228442038587493303127432083882 0.0688285904396792854776712732263629 1.0713119052680558438253639659253259 LT 1 -25586389988856965369802865368.6017071677781688563495314724560445 1.5491248124609465746807580380409149 0.0900852865252653194840473020931568 1.0944044053197069583159772937348613 GT 1 -16099660309398222247553757966971.8971684239091863453065910992701208 0.1256644891642184520397561356474432 0.0115602035876640878179323443644044 1.0116275422096623987024436633906605 GT 1 -35488201935237790835497388694523173.9743307259686896230217995313066290 1.3291592671578932932290897653712367 0.0427608916582478195465706319713565 1.0437020667602372800305560442527085 GT 1 -10262714748525918.7981932115341535797460229998723816 1.5711573180028632593617979569441297 0.0238263824356806509405606627420781 1.0241148215403460918093268992460831 GT 1 -10345670894131812086537927047228521140991.3442806898393720575476261539684912 0.7100027756206452557076375881715145 0.0678136891957493354123543966967398 1.0702225799783409951053127654750034 GT 1 -1644321406484308.3390065875791860788293064517774142 0.1420801548008227775988286189741303 0.0739870859267451172936939370123493 1.0768670983497747868905225189953853 GT 1 -38634111045515887711253796047898.0081877661968772093949650499090934 0.7761609146360465043617578542638601 0.0511470620305572800075026271420886 1.0525014576393192183088812604337647 GT 1 -451234037643724200846749078647640861828219.5156987225093904716366697231105127 2.5294860040662584210853964783859704 0.0430591753009489682451544442849771 1.0440137236112645107430000229130004 GT 1 -70830343489814078.0093019638960596142899675882002280 0.1663883011638009316994735580742543 0.0232810825289020438544499464891986 1.0235563679529953405214985739902904 GT 1 -77644821.8602891676503269082933894589639729 0.9289472630860060019349076981138159 0.0638896566741986676907577595871836 1.0660219212842179114642922492908397 GT 1 -53251198328330940603767422.6570781043379848716646642832268347 0.9266742176737141943095283101268634 0.0667912282828222969956047414726167 1.0691263392678319343188128039048086 GT 1 -244923209410566144.1397038455531013406442644584025630 0.8900758341079844813367989942731362 0.0621416024935502807592779127592411 1.0641563035184862449290889953479654 GT 1 -14696988634338728360576457482489.8997806262195072916522128646133284 1.3068686853035810004653033163853977 0.0603050986364395358073014796721288 1.0622000294207986233762259425646165 GT 1 -3313.8066296765430259756390215926673914 2.7590950521078625754991343596026814 0.0350117482963373190909370572354340 1.0356393521176092924818949828912860 GT 1 -27561532805369784155569303048004573.3555447917629840903721641067743335 0.2088648765909410130389552781755461 0.0415752031921931570522203227399518 1.0424641788256403175676830398816641 GT 1 -66363461934.0657305077666856942030773578446201 0.7791347100104636492298851641939640 0.0680496208585609001946288346277598 1.0704757069784626239506140794823913 GT 1 -76839458279441651891270300279811.1996960964766276071798388740281062 0.4176634475205438737559993002590028 0.0984576338651227431784155004518567 1.1036482422850692005166017519230227 GT 1 -239916911588428421548425619271088.1517203021599329628714737013962454 0.2491985771119988688641139591710444 0.0320370068859501339488764031509729 1.0325614226904355418121334215343345 GT 1 -7505869442904233222571771567337.6668550588556039708462457419593967 1.7815717031882740561326527972117663 0.0651159707109299321355904255495266 1.0673327902320739575503415543633136 GT 1 -1046271622633.8238483988156192566843754505609400 0.5896739610706426994871408825114256 0.0522240460692192142934717148037771 1.0536371401748082576547217458513096 GT 1 -12003229172420838572165204982792.4921064737028464812800362096806778 0.1261507850382176339095182714443100 0.0468868721496831367639330123114306 1.0480216752898346040498269469293884 GT 1 -424100823794470408901935374014722463585.9725238915003720917399307399153776 0.1374453814153776606102052892685496 0.0194093097798386225149001606490876 1.0196001437727874238551829075561613 GT 1 -15247519037289166688986969094882565636192066.5474002353000493474156796320714217 0.2834979672393685909687208160571795 0.0382723365616433740939537957123229 1.0390239625340629450174613506531362 GT 1 -140468457309758895618.5911475490507588750125105675780259 1.3632821721305346913201059519634774 0.0553049277448991224874113392989915 1.0568930784214563802238577308270377 GT 1 -2507664660440926931007685825935.1435302293520198060945428710274291 0.4344655929356803543613163196012339 0.0104610347954758103558523064047337 1.0105161360341652883905661415932750 GT 1 -34410045056309941319586267874038.1771136427470387473280922925953630 1.2036585957366233625583917441112099 0.0706965488594623431606126987653341 1.0733199507266778944753277125800069 GT 1 -592160482.1318164764653528219676195258040846 0.1791160435220128058998003278387616 0.0616379425742663780572734575643076 1.0636194157236024866527514248176542 GT 1 -76203105454126440709011779.6741074860742166877846461352233355 0.0332146817818836618989756839236482 0.0033100017231432043931338972553877 1.0033154918971848003838970010445904 GT 1 -1582274758450723814.8011519015825721176824728148542639 1.3230855842284871469089845172645374 0.0418624098750847345590782407713171 1.0427638890641378139701614467415122 GT 1 -147502362395051976463296649640963032502703.3472620694218201477456461329109237 1.3893291596043489780867376152316970 0.0332234632583915514411037707728686 1.0337878994361261678348442059741084 GT 1 -95629.5488005065010312322880249577614292 0.2530338469958880329675493062959449 0.0589519521352399282338714835115627 1.0607610802701585803578796763355720 GT 1 -9723566764084510155812522379158.0888924280874849874676436336818954 0.1739193826344050127744371079747172 0.0745110117825953615044901243087916 1.0774330452377432224008263735447639 GT 1 -7884829283666615.9292574126734020872189054226464165 0.4305650988658468294601972360776802 0.0406277936335144182082230014864881 1.0414761601415138237734016806900753 GT 1 -369283362697553928.8854025880585608398559550769680612 2.0243964352678179188623524986501069 0.0486276977356068677884119852624505 1.0498498080161099899666465622153265 GT 1 -143769058760350843488350887294896840174686.5055760556233778119847910486385662 0.6227067916144218020110795247995881 0.0870724236413548914284114885146470 1.0910987264419398499055871527733575 GT 1 -17706123130915.9635703869232369572044477813986823 0.3752251913107625435290946326035064 0.0952743584420062389573013613365624 1.1001235397434926144635300986163187 GT 1 -178403187462.5982348463500185000194770014246613 0.1320841201882506589363931452314775 0.0086118790622417826914941944437843 1.0086491755758233670219788366138587 GT 1 -316.9321124915555832728609403963368264 1.2149255501613707088769623017780467 0.0386491466672179024384538199594894 1.0394158447241146274744735829779583 GT 1 -99989056069693200.5840755377959691587103669512925258 0.2900179645011708945582566879877268 0.0478430502423331500883285860919905 1.0490253945883875913865398330914048 GT 1 -199598048466927945013091.3391197352792556580340326272748799 1.5946553430160821482308480419839471 0.0175333104759804642272346863988261 1.0176888396058138383016148193058514 GT 1 -52597470422059.6124332407321102451353876366577874 0.2837605695026912251211964373657343 0.0494126630541018378145127462038361 1.0506752360082511390365540474677848 GT 1 -4599918644033430911.0719826480701415785545303417081757 1.2171249965632009482734902366933339 0.0431254923474008599003161462071940 1.0440830271071216017438512717581045 GT 1 -218230341191025663254112.8012946854032910101357132792459776 1.9971811746875471166363329632488719 0.0443723599549709347909952035338940 1.0453869396655783056863919112170455 GT 1 -1.6782404758244667488911599274598274 2.0655200060060002407808639339033883 0.0939654625144471423562588330896674 1.0986778528207575892096043603337570 GT 1 -113537225488748892993988496758984049.9646022699348169846461203550983490 1.4667853455555555043808181932126087 0.0821602653511273067970650182369972 1.0857324845951953569778085143119778 GT 1 -1038283.6773870623451235952801077310944085 0.2744772844022874986098778746876758 0.0918416165164974830024529866515758 1.0963364844429559600248080114816997 GT 1 -882830144965582285848655602170466.1078380738639520913617539349044017 0.3653263960780460180076017622197882 0.0081461474223398370297748431420759 1.0081795085813944356901068371168726 GT 1 -19412799668650.8887465212477030279832987385846535 0.5373467684555715656380121905275492 0.0213629363675902070984236314414521 1.0215944267053369061273396323645150 GT 1 -238300931524748574017794018046969.5052726440246276501632533242231653 0.0309090582940827773710435406945646 0.0630265658513721462143701182948873 1.0651003491748537774432732887245911 GT 1 -84970273116891.5642051013618049848484142551736820 0.3533851086609749446534469047816776 0.0468229812154790338861832733315247 1.0479546435902365000543412268803963 GT 1 -173707458469516151390.9816451325992191518859745161027314 0.0852413619793057449880662285153921 0.0676659792091546272149243385727025 1.0700641370969192049888926564287786 GT 1 -112356978653472.8299401294452143106936560331851411 3.1889475465826304723814438675389763 0.0121612406447857215258327641307049 1.0122357935858644361817727170655203 GT 1 -2057.0416862629889103061227913095092162 0.4173743914182387566351786395607885 0.0846210308595769178759387877432611 1.0884171255290006124435852369156343 GT 1 -13.1162970231896318622728559989956009 0.4749130237813980492260523746609423 0.0736231903916829840749897982987548 1.0764742052829530154922489436639967 GT 1 -72174885721631431984164838.9292784660375369529442997436925649 0.0614279176401825089180246607951417 0.0144243617459261654343649315829962 1.0145294041888943562655529552956085 GT 1 -31313082175021107840544186258136748.8832889635888043448763893592679268 2.1901121482898820909569728953891054 0.0305763483589034812033226296753444 1.0310535576416555793620540235377383 GT 1 -415960438725086109831.9416470878636975772451926913754660 0.7961077186818346265044051128672616 0.0832591332870973678600885593936476 1.0869304347605556862071515855167131 GT 1 -89334121451218430199410194364883.8544104755489253601634154780179726 0.4005782895962028185191228703058000 0.0103259617791061691858004803120421 1.0103796443919362092497930424911360 GT 1 -154173043695793729244554309612292224.2521575480099652473836201258887144 0.1264905803338432721783500689994658 0.0929341597217285144223061654385205 1.0975402402356084420079660162873255 GT 1 -1303374180767811882164.8152717300225593544729816898010857 0.5253571597991848446641048508994540 0.0146665815221495215785732195476746 1.0147751991702665293499839292739030 GT 1 -5474069583800092778236161687676815.1341429172308394589652422425068898 0.1610244152527459655681112556072253 0.0643443105336001723360860042393721 1.0665077233132940977089091099103066 GT 1 -4358610641572096758461017661763455512446.8503359868216035839720482303774056 0.7767698401547493356209590159196657 0.0508097786704598355007706466312488 1.0521460564862999123569311677618528 GT 1 -18433817663096069022541502649768648481165.8102196805717235502420911086655403 0.2579766619402517331341611853203048 0.0885296185100243876014425565582059 1.0926961796426299278177202163081849 GT 1 -66608565701867070879293931.2663384137419679360635833775556248 1.5393531535527361650083941577572795 0.0990700218047938053615751972004502 1.1043277400484162100545711397252932 GT 1 -699003506.7916192592089096404387284498387075 0.7627675499417128123153225006447787 0.0946154487288328509149505177231744 1.0993955070028481218572128017046397 GT 1 -4229893049468835437106167163322588175519.3819739874217120913634047325958720 2.4342538641228615219122029911067584 0.0860216251916982071065400068748830 1.0939937221859394939338705769190069 GT 2 -126848957997.8078127821960047421838805845870459 0.7023091822988040136004121541829360 0.0994280707364665562446807120980821 1.1047252405283267040475502321874015 GT 1 -6762283974802435875385094500499689309099.5209245107620352862646740899085538 1.0178771336437080723305067512149717 0.0555069617693009941824617199055273 1.0571069629193003945757307234676600 GT 1 -24128238024021744599929112.8686925384574855133240952811292259 2.0354337229372287257548607452150470 0.0855489085791721739047919598269280 1.0894312938051960419633075396325188 GT 1 -58698640154901590144329765743946937.2940962082727921388537726539168465 0.6801679075260558640010717720712857 0.0333002234139168145411660077743356 1.0338673006214796930044372106056476 GT 1 -37446433692636588223.2172928532618989695568818508349504 1.4914634229869394568140423245731258 0.0443858428210130717978233425406157 1.0454010486768629519981879143281508 GT 1 -20156517173414811822114005142408.1251673094771688561636711339484431 0.6517365899684593685802853668838009 0.0697921272912877427223131037633363 1.0723471987698685623683846166469484 GT 1 -1370176867451106581841498584481857219544382.8927326994237238813173934379744388 0.3992392336890533479127055752290704 0.0941083876773613090045917550198412 1.0988356132937500759081459758936542 GT 1 -1805949.1497056810778575928148046126781382 1.4538572281550611270356022425790590 0.0715732610485734409583933309875912 1.0742638038856269445385942305547797 GT 1 -8585657421556441886144252364150963.5177658367468018608550107586550765 0.0169612830409296738679997138912163 0.0504899134346966074611012661268373 1.0518091257579914929661441353545789 GT 1 -33062138262892147204575396966182105.0163596241420267297176866225899247 3.8148219096438270487289493030000258 0.0699009494143457455768717915632268 1.0724641925001175669505437305146714 LT 1 -104483190395733.2183300060737139700636964823555946 0.7294705699301794378663316679496182 0.0922856558350523495437997673266667 1.0968255488147530807793435348188174 GT 1 -1057241864172493273178211.3417895050092640900898171750100175 1.4276862784860093242736026779397251 0.0401168173183595451394189549747601 1.0409436866310642256659944111901523 GT 1 -285507454122.8414281718280711407847482490961355 0.8777726415079918881843097274416360 0.0561103332858799585015517448338855 1.0577459981482632981097715002119585 GT 1 -100301929599622701305.4803315141765800768790245146513183 0.2255553111556319561661532015705003 0.0905555054080083582368918419549148 1.0949213113722644272471387461505981 GT 1 -171.7461977614284291558037591620188301 0.9940705813742521837809793565534085 0.0517716196543978486145772137771706 1.0531598982031214308638420997726383 GT 1 -145930089.0563148410629457867393510327958487 0.1256448959860071167749845619041474 0.0087135032576374588751808998273117 1.0087516878030728180757898100945621 GT 1 -16202629265016511505809319452103747397066.8401267779523877262943919978915918 1.6970306250387777617396023498430427 0.0050272235205301841605584914210383 1.0050399025199856118092681791921148 GT 1 -6.2421986648818674126818482237587608 1.6548387457509263348346431010196987 0.0100828675746142887541452806988983 1.0101340439777512319953301146018467 GT 1 -10298530193433737602939.2859743594997298366452360361325907 1.9089323443034214698425765710662110 0.0982350741712510964230893759428663 1.1034014072658869713161402209853396 GT 1 -2961881846007761796.3210156978326277831337241161192799 0.5541479977064562565383714977148472 0.0488859714957075808754719267027851 1.0501213198346290671592944998495902 GT 1 -2117941289820327456883912218418.7138477500843017808180553309341023 0.6170062722727835973157265741039414 0.0393434366668876605813034002840025 1.0401383081483953322117154099499667 GT 1 -6258764931.0521827818615746646098785667844343 0.1425675433011989222226854962850138 0.0554702772606073025876333044776653 1.0570681232510271926330211759697923 GT 1 -2.8357884349110247141788530637592659 1.0782570605840283693006945222143987 0.0998622527986366411477790859471532 1.1052074749231976707123637453576637 GT 1 -414463965263174.6124187768808062920892235791883106 1.5033256597835118951625724038360845 0.0557699699570696686636934016235759 1.0573854666278499798467148906221350 GT 1 -12096267291389675604429668497049165.8650650784475182419770681455178213 1.0106254967281492304285175383741760 0.0248440789840755612201488816657607 1.0251579017792768381956269675634568 GT 1 -61038157640301129987138388608325.9076959106947394609131780439312248 0.2599023005703955057947205756265408 0.0942903123224376646432844863767210 1.0990364573157629548064142803279546 GT 1 -1578.8167408652071496707026997535071928 1.3336414520838833211833713427849391 0.0428716826420958026335482007435716 1.0438178135938746979099996216244674 GT 1 -712480579299095242730622988903.2755669168571078178739439305462191 0.8532321090693857698239542707289278 0.0374304933298134891021961869715620 1.0381490007052835942130767907485806 GT 1 -5455797485905236243174983452581524897554677.8509442642755218417976211117619643 1.2805352720279437489905924799449404 0.0395652513613840614771492818443515 1.0403692338666054257744763414334948 GT 1 -82174072.5363907037719337889539909406009504 0.0308054901589203510654625536818509 0.0142796471873871494538493649993581 1.0143825824437533105509582652785160 GT 1 -87668191392339218247451535.7933104791793238959103006650005125 0.0968238468453498378148796816857229 0.0679548031210872353780941828052635 1.0703739709670951682554013285538777 GT 1 -26969865306915509159609950839597118.4868941047626601062999807739060647 0.4826007409218835213400300919161665 0.0254158409485988551157128765239201 1.0257444024998172445242485920595268 GT 1 -907688189881732829850901735144382.0735428867411477029032979938260396 1.7250383551906942467535668368467598 0.0851989084833924648691266354857952 1.0890486236590943288152790522395299 GT 1 -144534844077431191005474919019.5839915834363622357035384106803648 2.5235837844711634675905390495733071 0.0623330462436897770200999069012577 1.0643604529859146649757496186601013 GT 1 -347539786260942835377854818.6910811756336624507670248859367729 0.7398134890870769127693517971389216 0.0020719688953983465735253927794472 1.0020741183925908737406906339715094 GT 1 -98060535605303781316.3559526755689571442294925296817515 0.4525750232666792499838227634471161 0.0340115628673044154569410779760150 1.0346034146831882216226068235935691 GT 1 -40919102.5975366043940398195989389951885705 3.5481742098253771721550071114817806 0.0750650726025477180249333629205296 1.0780318927038129442760983078325574 LT 1 -335971581969632356.7707584029766134257310950253002311 1.6221181798092164979114867405858255 0.0264003849284506520931372473752365 1.0267551326750139098353419542130933 GT 1 -11.8574920820141126157058614344479359 1.8658508754140335258015906706667933 0.0881460516263314756026313127725147 1.0922754460593954589445681501470042 GT 1 -3687.3951275578566747498897619213719025 0.2742907110954970296794698061583781 0.0809884577008344280852273279155445 1.0844565970761968137579171941014680 GT 1 -872303846416891957198478682599201068446.5385357079006933121375983419327643 1.9283304417079411065674077015675714 0.0963146389130736638299265721317815 1.1012740310690723696710211844389094 GT 1 -6602858947804831067704207013514081850936147.4730160180164043970142953856492608 1.3551112291088183755154311507131740 0.0109034430963616176713482864589585 1.0109633212820951088709804096635170 GT 1 -135.4011677639245269837417318224250532 1.5085579937971998768668025001827980 0.0428884641737685505070295142139481 1.0438353469574657478849751951718868 GT 1 -1183778220261323.9343078824311234412832946645123325 1.4975334855693054201446831571289386 0.0814630235569046151069633092085087 1.0849731177141889334096611814610106 GT 1 -49925193820717273220338215870511838019.3275259163109541402761289285282607 0.7379125892499461479153490988296770 0.0220928642519351708547004787711892 1.0223405666784999688455138902726633 GT 1 -2749696465.7444871032136853017269297082216150 0.0749861331955401109761947211456587 0.0246935833658890265481409391472458 1.0250035838869698130147790176956594 GT 1 -2.3088740280692476409702174930307849 0.1370436568362902129851486521820475 0.0767628591982424590566364955681779 1.0798691535330235773755291088781778 GT 1 -225851886608348.5337180141572295301445132917452815 0.4514049745467381099764277146339416 0.0737450764915650979358635425179902 1.0766057868572931232135962832288394 GT 1 -335230155335983138739.5272459806735034705489933052301219 0.5596134219834694880620836982000744 0.0914799925696406897353308012336625 1.0959383689003901560676533409966764 GT 1 -6236.8316798842469884475608754023689263 1.8267920669372112310782275389249307 0.0619164758753478731779607906953845 1.0639162890311641621919163842599556 GT 1 -58644308861696118.6994478217707785618099561557307041 1.4645055649279486195676447091066123 0.0814365274367643769258123382874345 1.0849442721274858145052210774998268 GT 1 -82777629836357215942453459367474011.1317793239787480381570145692612063 0.4512241455275451542385416855291912 0.0794720146619682208255409500302052 1.0828078764484604937396147113418263 GT 1 -10885929407567410074412713900310853606.2601556500881546893884797874720138 0.7854758855610438848185839350645468 0.0626781998399713020237300971219663 1.0647286190343341904897419504531451 GT 1 -377295869183690386321232607806453.5827594298956720623864848292468484 0.0003369860799385811282240954881526 0.0712794631226845394676799664996546 1.0739474068694465953071694114851574 GT 1 -24350687838.1165592140223132808090415264363876 0.1487632399711896054519940780246550 0.0764894217638028326816613599056185 1.0795730249025463572902589771870507 GT 1 -8.5238394990876716805201903338708454 0.2684366466147135772323685414343221 0.0326291618398128825122855258286446 1.0331733635998254645933210358642027 GT 1 -779467074007997794582363812272679692418.5693253600516962400622293067090916 0.0308007728842209057858054394144173 0.0241680003931640506811339577603920 1.0244648389357531488880311313373035 GT 1 -6871253750071921196460056801392254551990.4710508516228287945549654214833918 0.2959788093431741993249726387555685 0.0163069549129690550094688265538441 1.0164413766449388035269136695765621 GT 1 -1702091947163.7505538535626953811821304480095568 0.1693670170708778733049679867653987 0.0852959929014878030408874591321020 1.0891547555504565970974414708921476 GT 1 -1.5902112917802870986690132855050085 0.2263369318649414927813571570884337 0.0449462819367953602188038558311624 1.0459876908024957261169926404132021 GT 1 -2911799126732156053769168837250056020.8208547805455978437305056482752259 0.2772572866585617264500247399036434 0.0644430846768018537964629967069339 1.0666132956496930698910156499696627 GT 1 -318.9361183981949386884099928113992430 1.3004391398327044794537005574381832 0.0095450947661690304473160206695498 1.0095909411552135161275805716543504 GT 1 -3750867375108546287395229429909.0756766143699145408998520329726757 0.1269341941696191634677032172239279 0.0561652386576192686057577784020790 1.0578041691089594208908993522493336 GT 1 -843974078102944412389729441838596218723.4348010422251723882680412998872724 0.4776510134028205867171754427008503 0.0957213413014377743334660053511753 1.1006177153167232567942113680351474 GT 1 -174252294788968177.7242159633370108451198943524923380 0.3921482416794395079064445667969854 0.0128941000043912575138169191608755 1.0129779504759562157292160519507505 GT 1 -10221600511098740305499186969201863.0898973115271360554677250126839223 0.5715372202259860609957475805376149 0.0489184222712041324691806426726441 1.0501554391180438383904065930205108 GT 1 -932280606550768223892701308467913.8138224945685341103726944042134306 0.3805277889390237530276280152584795 0.0740289097476050200430469800159464 1.0769122648531239795453076901829666 GT 1 -779532085950762290176616077095819.6309813212522265517715806071943903 0.7373763863787260639741420531390933 0.0239869760948273487077343796168283 1.0242793484929412319688805496060083 GT 1 -2515343785048257376.9286260598847291659410995659894062 0.3765298667658403536713845490955529 0.0545883218571241887486540787216966 1.0561348081047561708925229145034130 GT 1 -10869237196515.7809115241980494006195666189702187 1.6286167947868496481243113078728832 0.0141555815265138619486988989302337 1.0142567274245888954195973080714035 GT 1 -161454359924161350061471210233468945.2999648682982020670554101794981740 0.0832677010849892051560162378209167 0.0819461990623679793659018143011749 1.0854992833930776452292437005039572 GT 1 -43615566769696158698714169.3044792830124290014800694331428731 0.0801633050004248892461081843410119 0.0220255677239473553050941691661858 1.0222717521560722568207463660535419 GT 1 -36450.5212827749818018026973093580374873 5.3770765953288505547601572252674373 0.0408972821505759541527441433029047 1.0417571005024561817044607566319575 LT 1 -4388454520989476242.3090508188734429210255046753702614 1.4950253058904597469928727883347568 0.0484227890183900968563043086934620 1.0496344489468520704754500388445692 GT 1 -1580137150832045972777544728039.7157107515156442517088898780675406 1.1277460135708163575856209653360571 0.0308373459817775325320566702862647 1.0313228235739373365966962576516547 GT 1 -197087649339738535171095502415277596206931.5645951638574869451038423436783213 1.2527801892318356250036278966591569 0.0276046498937912390685739335840306 1.0279928184251017849056130740641404 GT 1 -106125919046435524021021166053566054942295.3894951586441360070896810120581672 1.0557758396158099425703584733171881 0.0891266754421745243131299500885826 1.0933514423699978157749919385052144 GT 1 -8280973446595238540560375961524681278897447.5148481982603457169874355898347746 0.2369217917250130443075267197306057 0.0463118803380375759282868020191606 1.0474185795767140655589972029784965 GT 1 -15808543603533189757854267503335369301400527.7394855436595447139073002510484395 0.2115604692972768842560613958450955 0.0661727945289544593762804819790547 1.0684638627177901499888190075037512 GT 1 -645522686730663219305.5264981314595733343231553981452263 0.3966130997227255589304019011601129 0.0714952331856861328237719542645484 1.0741797643153025070669974392635608 GT 1 -55989316283674237693364631476382.6821639666176757989462593044763999 1.2294338896083200703923007074356352 0.0017982245344732285985467880768744 1.0017998432810824102297698869190110 GT 1 -23727405934.4670403892493164928839159681652966 0.6158322076214207284149375375392279 0.0605484916083199669569615969542228 1.0624590757324409469586486360565121 GT 1 -18084174667.2401606817044295133263206515977755 2.5836558091687018137451256973992902 0.0593149663158236801725141725971249 1.0611469098956740824733179190056195 GT 1 -854393042394028157898.9085985028928876923183251127191547 0.0415824098492277718157375492264350 0.0769751871107922620949300486369791 1.0800991619704085403803465754830246 GT 1 -296.5863616843841359948130422774459983 0.2028488036501434826311768438212082 0.0672732400718314160729132053884905 1.0696429828405127787382152026340207 GT 1 -1.7957952895695209937709010178212266 2.1154802772844665593119851055918838 0.0584333331657922192713331324025160 1.0602101242210875981022900569043900 GT 1 -95862391.4663264303768120103734169728132531 1.2697521104590238566881468556039964 0.0393515673214696245060914163302152 1.0401467718276122088127457616835273 GT 1 -262880788771532602299095835280.9486104841136606847654714632760297 1.9467517420014735052980290906405856 0.0973334316246800335491748837323274 1.1024020425080575549565795411314973 GT 1 -2071303967371.0657080936163269523792609514345366 1.2838323900016615321803024639156129 0.0997606812164535344374898313680765 1.1050946412460642598739551778050057 GT 1 -423461551248543.8885637231378354441844528031911669 1.2981318722308382932959347455949353 0.0564069634228700813881743331266301 1.0580603111100880125109307339877294 GT 1 -159949995435509560441637852609.3348203616277346214341707619876717 0.1769426529521562203806913955915561 0.0912383486773365792998773385117809 1.0956724289536962675332823800531494 GT 1 -790658779903607119248993886010.4013866098104808498491846023174212 0.3895019985718233497126288295329987 0.0640479746513688651276673860829233 1.0661910587875370155426771724537592 GT 1 -13699.0012360648291908630184237400974239 1.1415893354961376707115768896590209 0.0783124946854468724767503358503048 1.0815490442048657188871690873082908 GT 1 -16411401309380.1351553577990200670676194405668321 0.4544706254590556467023324872467713 0.0135416667347174382248618473862182 1.0136341913447886211893190701046578 GT 1 -11507575904922208970628673387.5347937539045628561490356495790370 1.3988929726037345217866212663329676 0.0336825717217436587670867161270481 1.0342628980448767098089909710804472 GT 1 -2327.5675502407169936512011492194187285 0.0012874717821403784740254150700975 0.0042708274627422602946018500855902 1.0042799734963941135566943529563329 GT 1 -34402971904402831516290167.4103344583583114763207869614593741 0.3623295936349038399913225968861665 0.0572469233903749273172955808501083 1.0589508794073354569923445435696190 GT 1 -142120719501458634984676.1972389121873150232617929757239608 0.3992497739051620349053956112485849 0.0679902124517791916081793243067560 1.0704119626905068007597967542523482 GT 1 -25843800139846432407331933410464101788571015.4308983849764768219642057714625432 0.5845043964198086907705059296104090 0.0830579440279432088953757860500385 1.0867109974113035191126490102201308 GT 1 -380361208259518893.7982260988265946585842971845142603 1.8018809018024014413686828481457859 0.0561824885157459909915959898091460 1.0578224456298796346835381932901502 GT 1 -830146532524135080422357685100125478.7223080794162767383942846730864406 2.0190450146096445476052303379795694 0.0764888393929651471602933370845048 1.0795723942972584625493238253689309 GT 1 -7771857451474732.6543943199336520939369095148789895 0.3086629769004878804390102806231645 0.0034114170745654132951837569942136 1.0034172492255042038354437538725316 GT 1 -27920796637628940381.5075238900496123998053624020893863 1.0164503224852882339282194098536785 0.0181213297078146550882883503298536 1.0182875319350007754798912265171351 GT 1 -2632662418581086233249520.8638067404246451521100248713537897 0.6788138896958937614265886431438478 0.0220127126511265996044716038550804 1.0222586076525863646014167096294675 GT 1 -7627909.9152821978827151399102680544071504 0.2816641609914927063156558469316013 0.0948573320826862131689580262706174 1.0996627035992084519243758757849184 GT 1 -75854483124947101.5109605442038952631108376459581158 0.0232410498526649667667241773211997 0.0035515938702121127111037778865958 1.0035579157526661401492273515953733 GT 1 -25624425376634.7509483987058160485288226745495031 0.3617380251485989406688923596687832 0.0844808443431850465621771429668393 1.0882639913761308618938341710287583 GT 1 -4397237506114853660721061991618884062895.9706846354749771527429261000873601 0.5542946890009591598872034335516513 0.0384563270004523139584802362658862 1.0392152932484394135688717494790864 GT 1 -467678781037691357845634469852534581.8325045161718487268970007164538710 0.4321098072298999172256210245389828 0.0420670185273386227428176577393229 1.0429774601674829460585040443995211 GT 1 -2700747698737021028262203734510.9063417209412742524528655195832740 1.0970245228639008774156443133207094 0.0590183535365099051944821007870030 1.0608316438765646203917739139175244 GT 1 -1455384583451.9109554505537210135783549308970960 2.3090772801605688319375504306873648 0.0701068084741403811845807591066435 1.0726855472520078161022763606541966 GT 1 -3600104.0204511277567702830023589926791529 3.3736596807808735573384496404520742 0.0406323296145973984515818193274308 1.0414808882249168407213929752294257 LT 1 -5378151875705409892745920.0406080332662859539162508670705774 0.2399885535437360896783061015706555 0.0363023014015982175658082665746324 1.0369776242169843441531448736228521 GT 1 -116873655266799789439.9805463439880846709239183091068069 0.0448099102693337279579875236364352 0.0514164520402320915710843982234359 1.0527854091849783905799354064976081 GT 1 -5475742482130368388766691581409063630722710.6184417786724352889704872957267506 1.0076770080820779649548594883290349 0.0824595809199983825778061350830979 1.0860586465305485751906929662229768 GT 1 -6226334374304392115266859929056410.1480185875648038021020075417114449 0.7427897360002997818348495073683286 0.0328121898291973501567887478109747 1.0333625829756127701557069929893116 GT 1 -31998005231581771503756127873.5195236583825300155473816345974454 0.2067660428979750930575189431177175 0.0423285840599015072094706912738576 1.0432505494697853832195500490470387 GT 1 -25441860460390338250865855806.3348676324875904441517872856656169 0.1555180588964500473504701644145345 0.0072904572051679032755407497911144 1.0073171624631556618210477846693712 GT 1 -368.8705206719361668209192354508145252 0.6437141134691765306758076795984020 0.0569394507924724953484617774450191 1.0586247892821845318274168403621103 GT 1 -145251666268510355539.7283125028285198244997280439430862 0.8703599356838050889218769332225770 0.0829855117455300241442832308360677 1.0866320072272897592777587057895233 GT 1 -489701270495377435951329708546824987617359.6154672934625156715060869152037778 0.1880878555321235072026182326508229 0.0919702122121245677890958947562512 1.0964780949851631196468297432437221 GT 1 -121084039103013362754011519174.5100661389106029617679133320731613 0.9824407774829111590427969095682491 0.0956712160062759075454769951356551 1.1005622856043473258097463931436906 GT 1 -13827292509821923.8930417462265155359270768593410323 4.4014773382566576399948508127392318 0.0976955209050880742925228595934215 1.1028032559078765950072002035902740 LT 1 -11006397587240055398774730104.7917605697277549615340261462851173 1.0348069928077583934388687115135422 0.0217146030104856108463259334491032 1.0219538345549143054988770359838402 GT 1 -165191018066378160953157437427557097.9448489250030219322690722743890560 0.0622222899981882081721577946947956 0.0470869875925256544810381682207963 1.0482316571356772314600947533985433 GT 1 -122862237369147089810912191.7149152851326853670944167582220324 3.5115283832976667966487018692047538 0.0834018863913355243683971903432986 1.0870861649403630455188250982455820 LT 1 -4611564708860453927602487962103348.6031186020860626851044130227873515 0.2068093125860837764385016142818222 0.0021696589703087822389122550135596 1.0021720160903807980397319593126379 GT 1 -189148906591733591569439705680.8252433345470294407696691801081615 0.4416492661192482096196383053798211 0.0015631793319851219686876498600222 1.0015644023715166748315673341474086 GT 1 -20241082303791661910634094650733207100.2206504845012758173790662511227603 0.1438529778875737557113378193886722 0.0192030465901761036702953163938854 1.0193898200348024746232744779557929 GT 1 -42526148254579890001830000988855.9491168100854460134329366887566779 0.3274544680643303348853840363953596 0.0023415217339470449579765298928881 1.0023442673827973149731126846789552 GT 1 -2387088861237478.9696393882183090610590954569118920 1.3637864027359396572892737898988118 0.0609108217800502406308532706806880 1.0628448328031349747326475728887821 GT 1 -47336238357535442211874935.4670937769339943502677975045507615 1.1727708636206716991808240507777845 0.0984802165946432875787085477328307 1.1036732915930228765879014458398007 GT 1 -153130190702150132660333818832401422.9002207420744180445146450968552887 0.4316599929759664052195513110484954 0.0341896417936454426437464024784779 1.0347877805988054252625645653072213 GT 1 -2048741174297215346745152.3443122022268234512120728181665912 0.0964913507666180761748869516660688 0.0393888045004107394141319036898362 1.0401855351247737576111799461409810 GT 1 -28357491884752898821.5844770203344061346536508411923747 0.2046684705911141093841116973589995 0.0907292032322167192513798902075112 1.0951123229347246674571250727987227 GT 1 -629033275156663590446729760437363.5128253016536365675363202191712819 1.4094507756380645667076521504483718 0.0045170132206929377203377836692562 1.0045272457501850549809890061156498 GT 1 -35180075.9674007774558520896176146621541223 0.9393234131203633797658946487050802 0.0766717788768928237185338684352406 1.0797705051739657043292334794773469 GT 1 -34660465734691687980266476.9698116980501903911819326358944123 1.2632708659585281415292544273111246 0.0966857015879226762584914820852937 1.1016847258670641883703244895185845 GT 1 -7526097.5545674937800578001247509821236042 0.0694743089485688172205537126979256 0.0409315066482927120268920276180242 1.0417927850102003665712584622668050 GT 1 -127392474063358541184734338027970790.5403918629938080779732228504291630 1.4930121882131747282120832257332207 0.0058915693094474488440917826210317 1.0059089930731578541077609152903248 GT 1 -11951054108099369.4845021377180695423107078511625707 0.6777329283607713987540554335585714 0.0419942915566656642616334832209922 1.0429015423199122834814779179548034 GT 1 -2305101916319.9640360222659698491727769983278961 2.0609901847554901401033002706085481 0.0400012543053759092853740653274441 1.0408233010892085959035107616779430 GT 1 -28771918092769.6725949797692758559856964112362089 0.2946347861237746411810168467687143 0.0271992208237749613953563896339390 1.0275759668081528780875323795494236 GT 1 -16186.4400807731698766962815595080360190 0.4036140894050537806690245752420455 0.0417852905671925901221492698453269 1.0426834035417716248804386363353165 GT 1 -3271537978453808604093.3840041306532019573343521435372610 1.7482671416839228951509679943919830 0.0259446198801160389448923289493599 1.0262871185166758276202154358956412 GT 1 -30973595498650914205499.7272425367437585679007361508587134 0.8030221556905651975582827008867872 0.0003927803908766054193114441061523 1.0003928575492992057243972734908170 GT 1 -22.6159020223533236663990568925795577 0.0880630472040329367580112007636860 0.0055590586803975924938852108948368 1.0055745677510319666810827368103608 GT 1 -1113572971185124.5386744592105278760731380631305010 1.6883079122126683458700189437320825 0.0597719486591143900391514165021238 1.0616328253331503169982859995507136 GT 1 -7078740095376202978682286110047272079574.7828015662158706708996653357117274 0.8618112576075695053241782787392806 0.0839965817838379427706060647385434 1.0877351826379366606260145872639072 GT 1 -152762.5862764144005139539074715736342525 1.6693698095349101854743078076229134 0.0830129423513504616061987703046860 1.0866619206217291027965828168109352 GT 1 -195332243506263282460250852953419751.8843095405826412125884647849997669 0.3129644582779611860674148354416316 0.0778771024013976322744681108169944 1.0810767697329851587156475887774899 GT 1 -5033237414565647836495330988524795749.3002041089761198197880984867750247 0.6882848613762879815050404840212691 0.0162336523528996606784199178439010 1.0163668617041232321550485496347849 GT 1 -295.9554382990776244680456484399287146 1.2746240116425697098903464925570150 0.0588092568982837967665833193135185 1.0606094573858419354528164632935417 GT 1 -2269027876873433123860.8781706659545127961752964550548474 2.9648817270448367565191220266892549 0.0208596071066135460943827019991640 1.0210802423475710679024552548999560 GT 1 -641377727919724.0048377915689551781435821108485304 0.4481239140063180268359999498067281 0.0774955745120089077294966808649025 1.0806631058020065829317005479230198 GT 1 -545744960954.0067276961616898033775554581472535 1.4321798149213997749093005948310976 0.0895752070899878746511336269051888 1.0938439829953673978108826912254972 GT 1 -1150862881842809422994897620842872.1982649489474302056962020637603934 0.6322525664204441845695597684189158 0.0900092861005397700291604064020917 1.0943208840293953127041164999457943 GT 1 -14343153866.8561131391033658851661110068928923 0.9910663485730660963684663573713633 0.0731078118053643756099810769405512 1.0759180220195247897461164941441915 GT 1 -1839719042347620629452554911053072.8338430530155249419865921575274752 0.1294233325598394634636710826366594 0.0447349845234152931298764211128736 1.0457664738814322723782883913390608 GT 1 -6091207051403543737453.8645864649844568826069639893881204 0.5906262610858093532388938433725809 0.0222829529402814756873688092105344 1.0225349687426757560460548911492540 GT 1 -1545898144617996726164698940424542607751900.0179288518399509767548076218861817 1.2801944904255764887197984667955910 0.0176754204212770512993815182136005 1.0178334961378120636762007733737273 GT 1 -736528418260801341853705571.8954041880062338384811959976108050 1.3161591663443377492422926464887501 0.0229044282804864038544707093676927 1.0231708101068790187617492044818849 GT 1 -588618.9669773543899978975025232430683744 1.6205266135621091052476420030531455 0.0647362559934928431437715774070885 1.0669267103189493422228107644546315 GT 1 -185902970051743608248164670812467860.6556755033959821074281642343261982 0.8480445573137135691368478792164655 0.0957663170734951795591092860413035 1.1006674531825166010685113647938691 GT 1 -194391784571608.3747783042052224183760526367761135 0.0395791657116737676764084880885371 0.0165652493417457321963699045886481 1.0167039873719284486513802775559640 GT 1 -17106792237425663155040582078321453.3522441497465487580718443802871327 1.3980357989774336152118310390160921 0.0703278811584612858325362209819612 1.0729233153843018427019542416958182 GT 1 -602123737505540590337552006670698012964.4310257767775403591420466865864407 1.1431983441534857690774445972543868 0.0916672171855817577785949309532200 1.0961444666289557830019384437572142 GT 1 -1069655838860264.7724547648599380819235167620993538 1.0100402805165624030515648052678018 0.0909717658558427880206310788495776 1.0953791246223912766692900553946368 GT 1 -1001137806399562292286.6928527750325582028388588909005347 0.7792948522833050314865328948406149 0.0828196862561555310891139750406029 1.0864511916567237265354640041940664 GT 1 -89.2907573665150449143003297049932677 1.3911152823688687835746556978518224 0.0826240756640277120769062706920077 1.0862379405294932424178601106798997 GT 1 -39708482079602.3724029527556325936000699070210479 0.0629529536479525332387861404440534 0.0839853470032324438278888793434076 1.0877229177145910065799946126226684 GT 1 -39138779380563624.2680343324375557451262233686347431 0.4815312777764552508739305089230351 0.0878201302807031543148760403398384 1.0919180827848069967598339786617006 GT 1 -85738318759037259054.6874311837004992826291806174067393 0.4180970407767426395200918868236669 0.0441846571722620496171822282930922 1.0451905406256967924435017326225671 GT 1 -413326358949.9079153733973133917100683849120979 1.0782045444101747056832860448290141 0.0719655251331605308723863015848735 1.0746863972449764938625569711321992 GT 1 -7983846551589201.6110489098768612366049535772418737 3.5236637959714913287220890836598252 0.0560278073671377188626745304647553 1.0576585702272147186636202012014781 LT 1 -2612523.8366653169686577819791542394127306 0.2083308476550095218607064026259181 0.0678574688538352095714131299861882 1.0702695455748696850308072582286279 GT 1 -126790543455411713753882783165736.4503116378640742749975661556539532 2.0601309289544038836194212115958883 0.0489251811196815776550040690163749 1.0501625456298843182956858380453954 GT 1 -847717400260182884775.5709773705020440831109036377048219 1.1378444416773824806690148766271906 0.0096770404503465655347140470702284 1.0097241672849260659336209920009488 GT 1 -78907577780539377359319279.5734552454558945287036467720649729 5.1898637236442551144768043758795144 0.0626698613301932254164234668163058 1.0647197229725048820286592152954786 LT 1 -269.8577766681120327250476544756056677 0.4455960181760993471601622153985403 0.0597023088406854582569263844838939 1.0615587611319677495584738964101353 GT 1 -492596.3879236267401436453939723062707790 0.7412973333267262046368719279521880 0.0146244748109880286956179082091068 1.0147324666183052507099486773618799 GT 1 -427417906878219.9515684414552537561916726166265327 0.7633165840916002735605428684302014 0.0477452017306898191303867251801054 1.0489226347604976321988674601226592 GT 1 -18700312163634075826346097401981241414161.0238592230944809061154330448809425 0.0326077938791224230140866577605032 0.0638379228618282910556221511996296 1.0659666581592387776625245887693173 GT 1 -1009734.7087362612637080322622610632400360 0.1628469403130951312698063830180962 0.0880765071449081748428351309540004 1.0921991818399958015313175231171632 GT 1 -2.4473100537408490685352424694499657 0.7264051226698759175445639588230406 0.0769361199199297231748574642906871 1.0800568376866217906345199262195972 GT 1 -1523791.0496776629731307311046137593545259 0.1519909456306531949401085518328789 0.0466556846772538412977272060634286 1.0477791443333840464590661994893444 GT 1 -10982979837564722474315367288482747085.5617977805826751279595452276959849 1.5692971049225530993029236356893307 0.0775619168074511350862352645469416 1.0807350238104634084624927925801840 GT 1 -967.1307562468079820930550320469268832 0.0067044632224080866115693156299600 0.0445892875364553104865289809298544 1.0456139655461749327929663850050971 GT 1 -2588308314383.8419506347666012417094381682458113 3.0448970806706788671768742466695715 0.0908154644404510023773591604603465 1.0952071959918358200482004364455632 LT 1 -37480868198002586457569632882716326.3687393369631672489985404866733443 0.0733438804014580199313824587615940 0.0119924032205584222945078467499656 1.0120648922158120241386808564221075 GT 1 -76358941840242042285135.1374796548162422099282175271777381 1.0619285659722889827902135409675444 0.0711582961499014452117669176441442 1.0738169488203989425475975832113122 GT 1 -11552271644078955305131578.1367164315742180351493249405490735 1.1432384533670659091393601264586877 0.0154663516959812282451910321970674 1.0155872034230026017396795337324087 GT 1 -52345050317203791438564111185454.3706609353541872185827107158885201 1.6990010208052345647972294289166407 0.0649975864667267359473045231685648 1.0672061683777728127621227256573345 GT 1 -608931605561618512494353699151.6257419510428086547404291749149796 1.1270576679494072946488558600380358 0.0552583188874326212004483814392355 1.0568437421762575067328240766020139 GT 1 -199845031613431507630031.1379764939858549038084109418350117 0.1369650699891362439837149637650459 0.0477462101154647431869053194678043 1.0489236937053416684640718840714005 GT 1 -2556608230854356885801568499326656915116.4921420525974077772464662175199037 4.2892351467927958526730715480275790 0.0435106267329950411699980865405328 1.0444856001823596273277232762351245 LT 1 -1900.5462675834834528875012958307963214 1.1193427047332264600037183808565803 0.0451637925677733564893778764855593 1.0462154637531928231559535511000307 GT 1 -57319689.7242582635927102092532475501226811 5.8371091075233825878286681864261231 0.0914051216790210571926985045396586 1.0958559625635656745597748051525320 LT 1 -44125548572660735588959532043966195.8133202608021207150522854622816877 0.7456055005692352582543227661809507 0.0067568242283081651355885448105710 1.0067797549159226228900136099425526 GT 1 -1549064882201578405942867.4039616208330323515493417817684166 0.2995458164720438800994243440950059 0.0575804149354642958498093314484823 1.0593046841864393695021697528377587 GT 1 -36209284528136249037191679.4102413293167777057446436240396206 0.8676974599147067780585867298139949 0.0722949472752360267663613581714369 1.0750414278305061754521726680887970 GT 1 -589950970432373433574311270682649866035.5807300549526230516543119996922384 1.8830101198377384685858756612574837 0.0297306526430302858378971200415383 1.0301815683424247132577450112522282 GT 1 -442904494942632911782.3317716740438985255078925134000195 0.3443329998277627024723533246552334 0.0758296176050456895924151083091197 1.0788588278080677769681843586069786 GT 1 -63928789022069498461202299.2446797628311220759012997901151166 1.4676242179506013795850927648859112 0.0015736142955125519173555514386040 1.0015748537269167085347734621740039 GT 1 -13410919719144.3887279622519112213599691059900598 0.8337488604736063694611901113731252 0.0319121061863940623298370581979101 1.0324323964333545053553083890673643 GT 1 -6647954704248458951799700873442111602.3073674334773249420310004793545070 0.1383025105706534197431059083900638 0.0142954688866857602311234024465649 1.0143986334730651074862580398837051 GT 1 -1917730198284387310320552808771040718880157.8200951491475350358395351073113837 2.9902386599627219826589335563610781 0.0492651653853461908948410651417184 1.0517962226785233990146503431929879 GT 2 -81299715509029132470.3648482159086989948050297569640548 5.0766782338515910940027355728707231 0.0439885295907089092014037965009519 1.0449853676666366779675225539894338 LT 1 -12897337021.7760166492194067272134068528500762 0.2553865951498766586661275827219277 0.0365079387554950133443549020094456 1.0371910306588014607662773088522343 GT 1 -15042621871953151623089.3169138535334761185664407032034106 0.1124334882887840198746187941661115 0.0505896092670099156591968352395336 1.0519141283988042894148447782117305 GT 1 -48594798982328214421220.7078750587761305026230051623719577 0.0108256312093176428544051472151664 0.0740104402195585429912801996844405 1.0768923189346761314215145737809697 GT 1 -209622.4684610346817390257635227907793251 0.0656752749971395643405234695893514 0.0130746182648715204301318508724697 1.0131608434854582591669901470137893 GT 1 -350594147617716650.0760907001470206903284386833292737 0.2653505592490320237630184297600052 0.0963946505333778139730863272290653 1.1013625742346950350070219188345961 GT 1 -2439094321446.8334639389351459462711086057467818 0.1982047381025092391638928453122200 0.0512462425947957283822228979270488 1.0526059899057477778374588772087579 GT 1 -3403820606794457499498076021.1392031071438574930144681733028178 0.0324443305252513406617160525031163 0.0309150646267354433787005910836629 1.0314030183286476598789609552676879 GT 1 -3650279719633491773012222018933915441326.8651362686730117477190650704648938 0.9158040799619730436376369451958050 0.0793548011401728964342544857918553 1.0826805516286557318276600067864646 GT 1 -38406734368066947837392158.1026460215336321859259198384588314 0.3764556204156844169924060851651308 0.0410226419344372100878174658396113 1.0418878143194796422377010564370967 GT 1 -41488342538720029523373663421846673.0906069663114513133588598708727489 0.3419710177160162323872396702189595 0.0525786268000536501966440327095540 1.0540113288990067495702429229734172 GT 1 -2525474909434416434428678092106364611355.0573100475528174178585943350884106 0.7775369563550511220915729446343304 0.0702980266519812288597927065531686 1.0728912029582892090760959244359058 GT 1 -56522444943027290.2807889601437734331626679463275515 1.3528563637641309958956150732432554 0.0093348671765883151517799515265381 1.0093787101077945403728504105410473 GT 1 -4349378095007250792387847457094893.1639596686036992233495947466535889 1.0054650903380672781430933937339767 0.0945949002563426556564242178064800 1.0993728114098182398246567196933556 GT 1 -33329122996.4415832375653513499465363759195965 0.6949747320693447470637688487966624 0.0188475906511004709718156791992052 1.0190274702721510846618937669689704 GT 1 -260884753397.2610829509257645233063004138568277 0.3385749678859415778054354579229554 0.0742896838366930747366348475121972 1.0771939267955170220738396494013774 GT 1 -25862415307434.5839315253522318464798190408856414 0.0639766360876927980311410336509710 0.0474255382617577372320717021363518 1.0485869999835185406275231508855686 GT 1 -15556398991.1588318136694585225391752158202866 6.2496600216124168107323405331701577 0.0023179344560718651975776802898962 1.0023206250246550401820227972944352 LT 1 -203459414168404952.3025913209276308474775498890245512 2.3484301627468474628680620954131004 0.0679542881475050331148847837878662 1.0703734184472799702536116818404639 GT 1 -516572915964295889512333.5072045217655113928411511609026650 0.2770183360044181646412720111601065 0.0557988606863799405732036175310832 1.0574160642263024242698447051830776 GT 1 -602.0532737795386486636589333984380565 0.5083868852639922304954045280237167 0.0708452125359007640818344773667617 1.0734799367555995171798253391441981 GT 1 -2671206872655581.9892132952931829722915559595045576 2.0691378025760658921482589639986105 0.0925334810782089661906779658403835 1.0970986072738148697818687616929132 GT 1 -1270584153123473879027831406483458014766.5312872612710883886652270770442634 0.3151368367003966944581578163782529 0.0386708496520453605113098396762245 1.0394384204879305844953156761048218 GT 1 -11388687249182913320265041720911.7955020315903509148989169193788279 0.1571756896689684442378399251692479 0.0230305658550483853377277469391820 1.0232999128484547823501837627908470 GT 1 -558.8215778598962743046967656579578210 0.6332036926627783579696112795591098 0.0508165547964588741312632818672593 1.0521531953611363320569627508179364 GT 1 -156787224903353420966.9323100112694426873754880280703009 2.1310808635165140389935540810483712 0.0764816983680986440211790072783116 1.0795646618544225128763318877863511 GT 1 -1069192104810005440979.5506824516709915369458401673216364 0.4477935741879326970874375651228965 0.0196988098353425063046110153965710 1.0198954176331192323656758678408262 GT 1 -22239239805767537188550644160.0349763786238777659389262734304943 3.7851546058610763681791655181438104 0.0079406843353260104031537429057698 1.0079723794680467670210404391383426 GT 1 -20419867768292905329507870321338309568.3993559696119320253932177179006690 0.4494987266911713315137265743971375 0.0948955686625739277317283832555858 1.0997049481965445201394705108841310 GT 1 -1156611819361005426229995.0700883439559367033820946950106920 0.4652657854910891246791614935218782 0.0445564171267474775977413756934141 1.0455795616569916588631619381966006 GT 1 -18889558600891.8424060576809975123052487264730590 0.3107558437825089223489181464460302 0.0604009181885642713693008979958841 1.0623020034100367363355491469643225 GT 1 -6978469353260688840825802263204758225.7954007494882856948469100217568086 2.3101494449354167324430766632131114 0.0818751461757573035011907689081314 1.0854218912651799871515207969319523 GT 1 -68633920414592789950013147.6980405256181143682760975727271549 0.3029767591646122391593633443018951 0.0530036738984739987471592270564498 1.0544600653162282747905193574376843 GT 1 -20489083505902456223638414315236735909857.5272368558901090040537196917903620 2.7607889799186015589066057018664806 0.0026953392349760831532242032329531 1.0026989782020765639364576925580672 GT 1 -30492741100202725291376.1493007420716973738281616766309218 0.1089545094795977970116047155194928 0.0166860766928418532144004130257685 1.0168268575208677304841679659148954 GT 1 -2821.2759405417608348358850920380073472 0.1301463454148203397441621861355867 0.0522753560024023952587587790842035 1.0536912788369134459148752062735991 GT 1 -123687475022319.7661031181312079432261060882489771 1.7921289690241372106998313526815420 0.0703389412140145980127864673469487 1.0729352121822362022243172705305902 GT 1 -3117658546129877881785018372700.1061047027266430135598019387088338 0.4503781306191054642203089148938921 0.0012494284890027361439518249787893 1.0012502096755362366140180060881344 GT 1 -55031843.7682998085549079919294238593472025 0.8292335489751124908710476668540743 0.0068071354310063973707679806827323 1.0068304096580711406683845823199212 GT 1 -92960603297499901350891323089.8399709694199084726097034044141738 1.2715022720984636563132556370566407 0.0520673214339624783572163855988351 1.0534717934195873557909103977097138 GT 1 -2896679248.3066344665774496779298784740783953 0.4413280243105997111251138833723958 0.0790396484690845611649061152600552 1.0823382930227366650376779858359372 GT 1 -66385.6358452649549512689969355156557256 0.1928062608739125407918637163255699 0.0344462849489945544817825882077007 1.0350535442219495932755581560420661 GT 1 -1560783493.6544917115136954985524030192340169 5.8163439846129592520610141514502597 0.0433373891211696336706139319755956 1.0443044984050471070951497119425827 LT 1 -1083861147243918347600598491829791534259.9384612434206015859641696294160849 0.8197754238423909396438095707031605 0.0159407213959907565572836081296615 1.0160691412606399483558710892832194 GT 1 -1.4961548414701931998263458076998921 0.6854831742909644911971985093572873 0.0033900756522362893200283385641012 1.0033958349787524984852200233064808 GT 1 -3161818.2173697033847133133198495705530016 1.0823554034631738216874227037481722 0.0060414232033608511914914100916452 1.0060597464367344822408257348893587 GT 1 -661593864045523373746.7827891068799887360470614038465827 2.3133734837744191334304152311080934 0.0560372171040217193993413848912063 1.0576685385121461873841932405484622 GT 1 -235452416072718732950.4173457344783592126628239850293819 0.6711077560515957169817706911082556 0.0922466814207699017341236600914316 1.0967826128648727912001146028077511 GT 1 -744124820803322219566377053799774.7236475400164127331165792636176213 1.2335287871458400558628840678264675 0.0429755998980966454914802195355612 1.0439263914049919199378077664584814 GT 1 -4063587002487286061927771556415.8082326764279913495795150836977431 0.3754352239356941746492297082159170 0.0186803084173805156829892580326212 1.0188569891386402366886911569409529 GT 1 -354412140570012.3136523750655109233730846186758447 0.3035684991507301163237726109056051 0.0980560932109524970943532848716352 1.1032029484485330851882471818417529 GT 1 -432779033522058.0179451305840292293053797090906270 1.2746582559453251755511663626629024 0.0695785867619526432399698003075811 1.0721176629543404263109694680640285 GT 1 -676637784348470887617.4041429349545738974477347147027360 2.0672568152626650911633652906136592 0.0470046526008951934629780497613680 1.0481452573974547332759820493651142 GT 1 -28421688482813175186458679896287965.3774284514427156600036514260509529 0.6618785959616638790298233133250240 0.0106149529942569911573826298053311 1.0106716934968489077212871722711359 GT 1 -484037553361618529361867663388472.0100459997761284680924551054057894 0.0051411077182342180118887271027518 0.0887081863293944426066853132922207 1.0928921106537244127408979184453266 GT 1 -112364452377193681326.2277901870706131471691921897858572 0.7364559569652521332727263697989261 0.0359271071848383841924812154236036 1.0365883722767707754768132761428351 GT 1 -934666801406.1493372980309011893374782380441991 0.3605090438064873412765460440699697 0.0978782705203964313282325924322911 1.1030058129479647785620117306706607 GT 1 -5478.5613709701052918604574544087135599 0.3626217102660755326280397477515009 0.0672175714540687511176783025718420 1.0695833008854485709749712139836338 GT 1 -111912682545349576062535683.2324464602113306146419245134011663 1.3851077770634853173205581831796160 0.0240794985660515079310226063281904 1.0243741493353801443277595196572406 GT 1 -3200244826477855404858003119317219773.9220321504489585059388370628025076 1.4344421479675261501849235665698895 0.0307469976868454562065161321034631 1.0312296048726723110929524586250100 GT 1 -6920487142375885.5677951411756204986179990215547098 1.2617642872517685583223921673196811 0.0511075309301456705165985277915220 1.0524597965184220793518615305010425 GT 1 -3140366112724570236283396908385422191322.0139216926545489111393693486242030 1.4376826398149568754454012050990182 0.0674299614795945081489819360552056 1.0698110219517815297399125626882152 GT 1 -3051050142605535006636604077115049.3053114829011972948661673059088605 1.4125766269082034367601675663044298 0.0856700784275010527816021136392269 1.0895638081386731397971207613838632 GT 1 -787976304700049.2911900398650020646783021977083517 0.6251164072134240550800704535788335 0.0737569203365936634511763202682520 1.0766185737483002367415118804129181 GT 1 -6246706244158176170915386540.1049278047891687224499637910840479 0.3275148278901278574287163606763133 0.0379767359162994842604405378941077 1.0387166455696458149888607333656250 GT 1 -207565433286281129514093264466135515558.0986502556704849233040234465326778 0.8401947304039132566807224216682001 0.0018978725741438036901430029720656 1.0018996758162079591864250654622626 GT 1 -5331880681930899407806985406484567.4444159243895802984238270381525244 0.1349261443446837407492428673977563 0.0160639483563352513861321472413183 1.0161943722087134194649938264325834 GT 1 -2114292220895328367176279705.6146820532932721113270760523473943 0.7726672419500349887132627133807195 0.0738173239480942156410135633470213 1.0766837894378744036517498858881551 GT 1 -242204505.4351453771891473840918837611850356 0.3019557330935285308468594214098632 0.0119623000184950241031850664407688 1.0120344240862452870884124975644748 GT 1 -23064241846830817.9688451140546354458472612661352390 0.7215206426390961896174144210056148 0.0078991849951717711478511803830120 1.0079305488319818364085705035581174 GT 1 -587878693776570976109.9081115989981820608930459695510688 0.4809923265442146488942784002201506 0.0910556277121625239886570302110323 1.0954713832802858081962899635026617 GT 1 -1105638.9615472961637715050208329408699612 0.5183484553943898818473593073293228 0.0995208038706810197085209647137205 1.1048282172100976702617160278093442 GT 1 -253.8376553397172124891892447073051558 1.2425236017996303621606753702134283 0.0107269771776009594943011906603062 1.0107849259801888840415938836782960 GT 1 -10.7957459593426337418807184140035645 1.1675044817413984167536595816243400 0.0802991640238476301351006485163965 1.0837068401077654070695221075943698 GT 1 -721.2887157174642871451585095822049237 2.0913333002572259626554109619981883 0.0014411233939062849178048135501366 1.0014421628109633615627359622334355 GT 1 -2818054223922031.8647183544125828963630395241538273 0.3230665479787605340108426778859863 0.0873908860775625533691589031976165 1.0914476237729369564859566432143181 GT 1 -2773868458958069239.4175506651521293965258458740996746 0.8784334458554992941392659495706685 0.0828248352653616698218414338525832 1.0864568056276977965480340105109038 GT 1 -67588238743238320.9199733477868844482213992298004665 0.2892925112099087101297526687175455 0.0455376544448419378230166659397695 1.0466070859866689040952391284489070 GT 1 -6275.5356293354603685385650282052841400 2.2228632974743509399142991908898023 0.0583262132774162466113673170922937 1.0600963629769626797379331456316583 GT 1 -224070035793893.6659082766541612337454323069915079 2.3842382353639384077656653503322562 0.0754988550583781448307536681257112 1.0785009897115687826439123916260938 GT 1 -153708164299473857109100039736507761512260.5595228144484840428505841116795918 1.1625656845398605966210240951043748 0.0568240151744580989566008685384539 1.0585023914640151521193541866254630 GT 1 -796827480599048469676339404.9843700283258107937512337701237371 0.3984113280948538092374095932699434 0.0150392465983942166993923755393025 1.0151534828661810307122546294931890 GT 1 -5517998590911648817064153997.8510159782392291191321138360850803 1.5899456278684074301243275506059442 0.0080600229199248009216909402433113 1.0080926805036158050921551788308989 GT 1 -36025893.3499626910033285299701279634612879 2.9063521010053053459632138291142947 0.0967696313966266494345561239424594 1.1017776433689635648682536154619940 LT 1 -15252341305.5273553860578154801181074573358098 1.2648573279534507835606881605048016 0.0975310132430997538802015750729832 1.1026209530698123341876889624736476 GT 1 -5624942601787.5636203347236899380996007568603161 1.3647223999592393122789391036558844 0.0595175188781754562530079847932314 1.0613622576108991562692311447573624 GT 1 -1503394915526357.7489863099012050726885582519103076 1.4969224301456543849222013840281289 0.0757854669117866211388192814079408 1.0788110556228506907055697262719266 GT 1 -52330325237375996093800461.3902092981015456784437315624284312 1.1914914713758639684540828635925710 0.0372624384738837649499475537921151 1.0379744261045535699783432068052784 GT 1 -292702424473492.9743708411889280920128734520110153 1.2441852801300548019030748778302844 0.0989808791206964154552586078854755 1.1042287997573548326463103831229087 GT 1 -166940664280847592371736162277364081.1831194283932147643645748969446496 1.9373602021583904747503854247577057 0.0386644795562872182007849253783797 1.0394317941678499822986753094774471 GT 1 -2213836504570771.8616110738710452784138857503814579 3.6349042915929043212555249264217474 0.0820338008297911830641800394250532 1.0855947091155474810095231472592252 LT 1 -736561066092.8509200454757168666204908284691684 0.1707226070346866054338762381023946 0.0651289701963373540832001171976498 1.0673466952463638391174837434082816 GT 1 -189768602.6199052068030345344156016516460211 1.0779357418511974315716712413520011 0.0048174886271181292756322800907239 1.0048291301290383270510318454647714 GT 1 -2501775604140557942970434325477430294.3949943720200928685479403779478077 0.2190545628894910636094869418222199 0.0378573384964462602265334200130497 1.0385925425300703415074001667990661 GT 1 -61949612.0702894849432388265795954632791059 0.9634446279809926066315243535551546 0.0976426662525698939796671179057257 1.1027446802211111652451403150216443 GT 1 -5261295.6413062648072284366778688475579014 2.0542338208086735840810638436407833 0.0961966232838055053210120212873232 1.1011434458798342851291968763048571 GT 1 -14518461569874166628476.3508911510539431002716856419325811 1.0428787273372806608560588214992475 0.0181139751376728954245204629184257 1.0182800416586352403733466543380919 GT 1 -388069607674330433975601008635299195.3727590061389639955895458039350406 0.1622511632097234031890078564402520 0.0934565630293898189515803561674669 1.0981163327034434081756115869672492 GT 1 -2223474870797654858933851.2741381627720852952491685148633799 2.0810696557261274287869708459964571 0.0175255328934978065501952462904553 1.0176809232542666649686161519818408 GT 1 -9887927918665.9057155238158951689250468761623231 1.7247889626464636377801474980810074 0.0768914898811965150936756458182189 1.0800084889636327155321084488015695 GT 1 -6235811819436811913632332.8271122248022418130594718231193786 0.2316276451662320380001906567397758 0.0030003189600097345041155769660840 1.0030048289401189377824799187770805 GT 1 -5327880338.0277942887785014082641722582880470 0.8664960735866213239955836266184226 0.0316585780937259408393044563315503 1.0321705453117477367939847329411076 GT 1 -133882119093767966043401056507464549.0688723472188737582983317441115627 1.2403088390996753126957499820568579 0.0225873253848436745553974910515514 1.0228463265453287397318742572761564 GT 1 -465490552137.9760208054985584126684726866202728 0.8111607470884958413726404326086986 0.0620229098570934891461322913713711 1.0640297544288707909655812772808799 GT 1 -404180614.7887273446400630613782744377493764 1.5219354282230079781871129241760647 0.0349101901144111030929234277780771 1.0355341147346857017031510058796287 GT 1 -36126623855455657621224255558.2574177267591370768846273987079240 1.5924209622517461154897864118436584 0.0653357560998934390181343903981301 1.0675679116174138513741035933172144 GT 1 -3696.5006210796639432127152600085386680 0.6950989715316338139517162882114449 0.0058451579661844584031803332118866 1.0058623077635128934710558097805583 GT 1 -65359770047105414093.2482887965862776965611691926865467 0.6614839104119024406609354744467483 0.0587319624704021790042122869220190 1.0605273366735901282315834948595046 GT 1 -242991428833936256786836473500877370843.9164443805230839930611053818375241 1.7867573675221483083841047987019293 0.0228309282204887527288609254628179 1.0230955899361853421523835615018657 GT 1 -94925579.0978776099707844658016335396225439 0.0038722043010864036488111965161725 0.0047239410550285542184219453592702 1.0047351341287663767327908145629120 GT 1 -9444200674931.3669548634935137829195054223013066 0.8997225470152677242998252258478631 0.0640370168949356977055009682321153 1.0661793512512612694635445877854354 GT 1 -438306380150888677397858941168088428161.7580095171586446674596197684883803 0.0708722512102301442497753475991473 0.0650265360053892287467032390995649 1.0672371308506182667655506271444813 GT 1 -1504961893.6107912377201496742680916565487850 0.6115855580118991509689648211802655 0.0410280866999924284076646263748702 1.0418934920145433456695988339271224 GT 1 -110970641400977240357545317492386411150.4796969836029963073493026328999197 0.6194590794078289072270681418358737 0.0357487016145911269742160191199382 1.0364033353710778454101177069679722 GT 1 -6616865800924930586154666277731490190.4448847898829880547901622802349899 0.1505597459711985061165012347824480 0.0644259530660346523767391987450839 1.0665949841459947781449453838217607 GT 1 -1173187583.2763553803130580377312524030940482 1.2599283502492489258052084819003433 0.0956195324248618832633568470035045 1.1005051359199707338147886078777752 GT 1 -14.0088778123071553793685024812021998 0.7957567353264061893905405400181562 0.0785149657641747260020639778734773 1.0817687426597826311611710494040189 GT 1 -620523156735771398307714.0103610582055168354957958844626884 0.4827563911793880359967106697938805 0.0770438967679923798330692188661159 1.0801736044054649345500975945921151 GT 1 -50812527269129979754364169313282174115.1502829690523001945643400798660516 0.7008373821376410015103846125092437 0.0321595505731324421774770064492581 1.0326880302629328312482655315469356 GT 1 -5996751.4366805161946793292231839631869500 0.9406910948191438359291204772636119 0.0115718931502516360121734838193778 1.0116393685563478754292612284756812 GT 1 -25416507080347091595479151.2471440601986352442373501034355665 0.6870667807311183338548122404982473 0.0875661720869133250117086173279436 1.0916397135105224853600665926470769 GT 1 -149582991914088063603028897704.7828267110298468089815203911986046 2.0691554609788221279802046389072905 0.0987775449909611658947784646728325 1.1040031539468060759527932526816663 GT 1 -2983609310739713980.0466858363297503890057911791023208 2.0088288012715029839902156835012632 0.0302140456792207846654653525919937 1.0306798974836362623478939346778928 GT 1 -287207059531563310488.2991999299991124343282201821238997 0.9954744377227412120071488284854677 0.0667139347635074546610233865779513 1.0690435171588941169702613606404108 GT 1 -189737875172607.4796218767779342693921788012579620 0.4090598028483142233695746510903304 0.0400072280181614568527793003731431 1.0408295237341844405023414135870816 GT 1 -14741060716743350584620.9234387980920303469351295588033063 1.3534955123178406466092117021971139 0.0304245353996847682366858572494323 1.0308969686486464482931877910436664 GT 1 -40401749735283506847904694894009308275.0500431200671042303065385869019334 0.4505464910474037476344774070589897 0.0023593701584705707370915497538542 1.0023621578579160353588631315736406 GT 1 -1008052661754537.2604784478805367615236685948091391 2.2164402847094033797836803322583863 0.0638128920006196989070775984498818 1.0659399207734896077542741244709310 GT 1 -95352897934.4030527524028033085793975059314418 1.5865655992592513521176626384055683 0.0131074280458108855110793772693362 1.0131940884773594233808679507865583 GT 1 -110049544101940412696.3761330640530990715371753327977662 0.2671876182582265244739215263469575 0.0471478990793559571358330263922607 1.0482955805294103360833997050289262 GT 1 -28979255527170393633.7753564693082155324420980568516967 1.5894657835670048877744678473976477 0.0196479418660300134115035783684075 1.0198435288359869018457831121107531 GT 1 -1680824251407671021331852852490226741583596.3427676718955395738818050375031948 2.8703022298875896312619713483532940 0.0662524344094212046079954316940786 1.0685491496704188236131562468628608 LT 1 -250292272792035122089745470010892.7634352870645578734087285321457697 2.4737070531222432465052858824934104 0.0997210748484136055471459295943981 1.1105684660374720822940655937460225 LT 2 -206328791032799144972195048261144.3376800170653359361969287759631176 0.9001837079263290009676117559592294 0.0763572511978284245644656204351665 1.0794299175987126344571613509879959 GT 1 -2881442262154.5460768177070887139213724257706116 3.1106222700380708684908798415113167 0.0662050000396457721507582072574760 1.0684983509677165486434385634930410 LT 1 -3767816099455856272764550525387.0306917011568606687654856585827130 0.1444137891565872731143120373123254 0.0638441732239323220480081377424956 1.0659733347627055151207373725632764 GT 1 -150131020311019.7204531947095298912455159267715255 0.2303269055046455882383436137933546 0.0727601205699053716836186310287711 1.0755429772796105515091460764431397 GT 1 -3580884382470800667084368055.1510046395229610469828577387190834 1.4623303086787224500645256477557406 0.0018330322984216075657728128639051 1.0018347143579523936246830332349770 GT 1 -10820490370612531340904827390179932039.3697301072259602564863630079921522 0.5445446392861342976118974496497875 0.0056161955626537737492806567550759 1.0056320256868242471411507922093153 GT 1 -3.5914378002872333079815001088818102 0.0141188699368279604643218573786001 0.0297063822089778341224138437474380 1.0301565545351021909740324574046928 GT 1 -9242967028824526458164671303.1762993686339762293276015664127914 0.1038245416199978383474424394682304 0.0263847682981263293294999870855132 1.0267390927086480671775593593802247 GT 1 -39103510804.2891346609219777988398629421417126 1.5678900846836441419181597822721610 0.0341777097320041864407407602793918 1.0347754262190522851434788433027868 GT 1 -10116749.3252747519987061892227141937660752 0.3901604644771448597480625696383924 0.0500824431777551670667086717742751 1.0513800804457253997991264957777001 GT 1 -633634245.7808016989513869452848085686399293 0.3126806468133974879388666976953194 0.0193544233566933107878849492735983 1.0195441725223195559910905169218794 GT 1 -134976867.2719688964849594294826872655983220 0.0322196471270228024728200501849060 0.0583271610352609448489511685129064 1.0600973694383668330340881915091352 GT 1 -1728761589117762617942088239402.7256023629506270977374721027635455 0.1732047201542293412209839407495223 0.0486961620035907798191708487516188 1.0499217743025049793046536926157816 GT 1 -65200509.9224471209338610596460468874257212 0.5062523712701978064757991461002854 0.0868874925064891428536348030464663 1.0908961776182493284213251808675314 GT 1 -1291656633358775288530412060832079763.3226658033264667722564543472577455 0.0606507405966742333389163756007035 0.0067640285117220483360485136372566 1.0067870082348651871169234090902767 GT 1 -3097604100242261359888681818461424319.0256192361958138422898532180397661 0.4164885490765312007909996995194323 0.0053655011529472458845376850882371 1.0053799471507745119687649646856464 GT 1 -44271989228240030641512964.0164664767480244887479520396405627 0.6009921302856441469266547261342678 0.0198038228059993968311383382306897 1.0200025465408196341703198182163027 GT 1 -759554773544445386054593022791170901833713.8341372797872045279932630529015658 0.0311669152662750145719805133235068 0.0383258323489957509604485346424378 1.0390795887547532649198378922807251 GT 1 -9003564965148.6165879475079157806857172266181924 0.2070944728438051123516060687501596 0.0631343955652951390684823905939863 1.0652154387976247250857836891983973 GT 1 -994689711131137614369899793156.7950780319361309710514345224714283 1.1972596364754495703716789229551123 0.0642269175040451804640746614404914 1.0663822651270486513634477672155307 GT 1 -824731.6264224406858788780199072615804270 0.7068502988564796247925907121444544 0.0807705118063969991197942874518724 1.0842194726819053571477671802358363 GT 1 -496.8255540258378532673263316954215330 0.2116622764492641266225884735814302 0.0418616424595967002621945091917553 1.0427630881194837109812715632692319 GT 1 -62110557913496992966496139.1019500932496115098432163858636373 0.2410035962811763763519257865553725 0.0819925290769842568914804742690139 1.0855497501343963161899808818188519 GT 1 -13393940588776640155605669530.2039638781192757760018228654842914 0.0889237130910522355664279412348099 0.0109417459331351042268734580204135 1.0110020471053379132594491366282806 GT 1 -120255481186845.9876377090725707666011220100311392 0.7242077103943297870606711001142546 0.0065156988762241398531510343173888 1.0065370187016485248185720774543202 GT 1 -17381564.4365084804331047110939579505863462 2.4579261801319939133536840697293063 0.0018823875871543738599598283211412 1.0018841615051522117461916056396527 GT 1 -4958679849259.6327648796783724749599770078098259 0.0998048597467488153278499597483721 0.0549760565893666755212113537404094 1.0565450148669000769011003360904690 GT 1 -704.5364388510533586976774668491836673 0.3881596766134144912544704169808086 0.0453906652326551222489109210005813 1.0464530957368607383631647208562271 GT 1 -1692007373100372632406661282451815016976.4994967784191155784425414210158887 0.6286056677973342339939403282346318 0.0824664033081253926552623490423149 1.0860660820760016798162503518220127 GT 1 -29445717882318143148332771805659.2917381929239463540135935324969687 1.2757261142285828067908704752172799 0.0247863386754722087157602961695407 1.0250986921718844458276438985812398 GT 1 -6758388214934995407841472776.7012199028241499567510110345319824 1.1218755803922889519404535143901169 0.0533073450047271531265743006425552 1.0547807844120116366312127870992283 GT 1 -10450532.8778510695417261431617214605841213 0.6745764052543332618177797727511508 0.0762381994887004546634808223923219 1.0793010322288709142508445528227216 GT 1 -514418900.0490824095399859850034197670051978 0.0098341944222439277725085316390613 0.0998583544032715662004598771353372 1.1052031440450232314178739796539474 GT 1 -25958.3409160978346656435251604393257929 0.2240263670475646804468421380616928 0.0372603841321735188769702840402607 1.0379722922525044614837705397542050 GT 1 -4335045392626422.8678050254108768137436269597224201 1.5233159585740566754407732714460397 0.0805789205415915122130234587180716 1.0840110684653895566724512414187951 GT 1 -144801752757247038471630764809825609334223.4103239631635531439398069641805228 0.6052083831759622398635101112728228 0.0410649778016197601765436718098084 1.0419319621831934162717332521621699 GT 1 -5697992240951822325283775972524.0750038076758749166977420835919150 0.2537603308780537959057324276615854 0.0995433488566179245239653744842102 1.1048532541773746825504674707001918 GT 1 -32812.4106091539411833428500818871451623 3.2840357822869416202263868484735209 0.0172070359220442280174347229333319 1.0173567974185782386174894268176859 GT 1 -519964845266150379008.6562695384763400837131429797011588 0.8144790090023449455484298751598580 0.0170592577293689348516922280028323 1.0172064431844554588449034537774504 GT 1 -1900186123002849599175270.1394585950876673005174678299486167 0.8458714102503714219555050603178315 0.0488239140401251869812629940682136 1.0500560748384714873654042214981841 GT 1 -671401793407903781955999493.1762843830803827316952237757141113 0.3470494723224023546504287248420251 0.0919586588152031677077960377082946 1.0964653714780964206130495347874572 GT 1 -32033867817463120221.1255788891312735729666444635676390 0.2217895567131307355276907059470479 0.0405441261152347653819767274533961 1.0413889532476875441314474932705347 GT 1 -111881336349521818781942009717.6556970317016934556076826865221022 1.0084518091681872301144131681075200 0.0662208973098001745563290219201867 1.0685153754811023620077184306983253 GT 1 -10683215914981488173521596946778763754338.7680170555736932562027049490751262 2.4609178803424116809754853220377474 0.0815062954772313573190799020038055 1.0886344480572414320855442456485888 GT 2 -1124853454350679.6231147733454940916563429033063950 0.8554621622685934521102661101283779 0.0651931095202540591723030910284507 1.0674153052708456420548382594011479 GT 1 -214.2649531432529149871842547648614218 0.4948170406638645754943252187313910 0.0275276385556854958047260171705969 1.0279136240020686660476280427257924 GT 1 -2878645627158126222717471440238770084985.4204518373627837720703672694078951 0.4292812197634439561094972183443168 0.0736214576032481195192078294932335 1.0764723347840412300572145315144017 GT 1 -13930812271809251064000979713425.9268346864287535050183447223383663 0.1007697916460524789292086556475383 0.0330436223552979364614689101710071 1.0336018955652977166436625708429968 GT 1 -2363.7782569535385313853693427197999824 0.0563095872868709786653390463390558 0.0558587981812558981994034733136472 1.0574795458245174429073524434377875 GT 1 -874044112239352138.4213132542464422218651432486662796 0.4601160586817173210256466663433550 0.0343471695278798925425272618393716 1.0349508981104485174246400654851171 GT 1 -20835347223261486.7236035435837833942616641579133526 0.7759338031864284682280865543952916 0.0215893924903378889022282442799376 1.0218258529777753723361359116961960 GT 1 -18265306699458450841918786572.8552549047642810723796998876770165 1.5107479698734829066712699525891823 0.0036139396580377352283256244120040 1.0036204857140903261322370400195875 GT 1 -603756717419774559523310594473.1185419778715058624557329594330313 4.9968777240478760243649675323203590 0.0219201878933899113879652166684382 1.0221640048060567641119420764097344 LT 1 -1738149000347941561256529024.7252342435906871562906127284260131 1.1569306051824921481721871178670612 0.0906185933717307401371664592524130 1.0949906835575905287945084624631884 GT 1 -4472514639.3078390455289108877988207362666572 1.1692438553282603939244484312925103 0.0037493550806353840470207461754874 1.0037564015310062366339823259090253 GT 1 -176247980252213265640914166047381.2565946291802382990180313275026580 1.3900114222311610228642407934426750 0.0059365907254643190583692545494244 1.0059542823334919670062154931297350 GT 1 -11175300347690708291890.5530273845207891664555636781938651 2.6795360364669708314290609510308424 0.0976462238659555869212392942224330 1.1027486228060115609635950353560475 LT 1 -445512328322.6730700411612840179508164143170778 1.0921568106185076658454220872211572 0.0086305307495486187727251738416648 1.0086679894614941975852504508255268 GT 1 -20550265699672378634463134363066.4488725143341279934899116410021419 0.9059180682978130369905358503055924 0.0447296319214624820249955322604517 1.0457608706332549316444229704304515 GT 1 -809879122349249254355645376481776167151016.6207917695861569116248478538796128 0.6964252301348507640009219533264397 0.0555145814756823000474808629078434 1.0571150304611551986922592366555163 GT 1 -54025143249994809791858708668385442352.6279859673605216713461207718008802 0.2151549006299565379197218485203924 0.0191641724394299029716049746350185 1.0193501855516021489316514861790263 GT 1 -32321282603.1024029314236407069917881615616422 0.2254172985464641424504870931044991 0.0034883596102919890823704397030931 1.0034944581233455969895409709489806 GT 1 -1644813554768.1997663582322981926310439616938964 0.0548427909908406624778835918551297 0.0285034371028927472895141478795666 1.0289175481049128698251915826056155 GT 1 -16823579434439768633480870309476139953.1408991139187176709939016335624752 1.1863808878794864034806129284980338 0.0085226852879014650313046340132213 1.0085592110499439353914101978102670 GT 1 -2652861528788761632860607825011445334046873.8656145294278514945749056735149770 1.7066271998562162824957033686908363 0.0525431018314634474753714778352879 1.0539738331198518081817581781062134 GT 1 -1195522694837234040.8687275489098513057603806872570229 4.3040110340350019908678412052274465 0.0584458384940418658905472077000367 1.0602234057142999619452278952600229 LT 1 -45655936480510721.7506346302759809020496804763339143 2.4990398908740128695476621202378654 0.0172855234615476135788221590441137 1.0174366623307359760011743629694346 GT 1 -53601.6123657730447460617000357050237623 2.9465913304907082295974268329182223 0.0632113550528388037977248541179535 1.0652975878788784667580706655378038 LT 1 -325353472.7938013894323238474258371829692655 0.1896955081656290152775550963346279 0.0952816493643155522391713215886151 1.1001315984867759736739768209362266 GT 1 -21411849791227800006316766158017502559821007.2072524457704018840349782876109606 0.7903491431184724263537862848594598 0.0232463870646869070866287408084506 1.0235208461182331524246207618783284 GT 1 -3914264139130683367221276047022353406255710.7318024842572961423634705698888537 1.2788584823831541025941468983256778 0.0115538465347068746874673222602043 1.0116211108290785784272974624803961 GT 1 -29.4032284054214287832058829479084532 0.4254029643379096719698876664462293 0.0934224773804665501746607276609794 1.0980787338342151914908102448124514 GT 1 -5630670450135574392575116286250.5291775534544167977774696078744957 2.9032032725929333806451571919662340 0.0015086995822800177351215048385488 1.0015098388154794151642525762117634 GT 1 -1.2986100859266556666075525013324496 1.5507007198150630894056560432337318 0.0555114948888369258866183905049171 1.0571117624574980211218531612705248 GT 1 -476399715066.8600563362884848975466919615871281 0.5451078912095010145715040137003543 0.0544316107594169502626013370035389 1.0559690622031794937320513579400177 GT 1 -160588206138530752105388298001099.7335784913022402966471882507912127 0.1754523885258484426468482707643502 0.0237400346335541737670118929881718 1.0240263700786035025736712041533606 GT 1 -198834961814001671823.6203341786436779337006499563670803 1.9210295991009447467510859596323874 0.0519139893163401849196615569298505 1.0533100522734415470755765188733355 GT 1 -2782570243716491620155906.8366128442385888977446039946451584 2.7850395266813426018217060285702465 0.0648883700637036750434173173137944 1.0693398580633113674034772619089968 LT 2 -6197683520608951668558630528036979.0256558448322915953244308762450566 1.2265010623672137055813617320346928 0.0912310744242524035680781363995613 1.0956644244082138713284764493811055 GT 1 -18393294.6189284119440793563715096163244640 0.7991285753928371925933201905298877 0.0227094367422880992425394185499307 1.0229712676159090054408156632459408 GT 1 -4753325942170090999789398632.7248608543213725219763049089164242 1.4327761594251698628785101062137914 0.0486623005227445675058604455736368 1.0498861801244290094268019951526732 GT 1 -1043841831992397958246022887729753786.9847807312433603869110115710159419 0.6567360024697987305943481859792723 0.0169884626281407598979246525126810 1.0171344220047026618256295570716016 GT 1 -463120593156.3751245722531732088784846147200697 0.5241206498407425029049548819799255 0.0692021452331757845944456518826106 1.0717131522764411553805989296284245 GT 1 -170942.4296559038342051471739886080193507 0.7633650823339016889170656033122072 0.0098495759789063012867055319983336 1.0098984039400889344074200578631376 GT 1 -2403399593.3126989892988669079239749721628390 0.2068064841919008093387655860780971 0.0825066428438259963012605102744584 1.0861099392363803557804030746753337 GT 1 -430764127890367388.7655605116688316761771766988850364 1.1994644170116857502483925122230739 0.0619071612038919787125182652650865 1.0639063596112652031528134007046955 GT 1 -34117688013.4688869934306049185505929464392177 0.2447591472481851526551635214454653 0.0971754104743581900541453299659892 1.1022269974517205884991275584668691 GT 1 -27241793234804660089.2262801933805176606612751146645583 0.2879541217366152623270677907993977 0.0232115757535383550469648063419283 1.0234852069453976845148922515520376 GT 1 -3.1996361587052003779523407766031164 0.4910642566675375901846557441610531 0.0636930510341998576384119982072866 1.0658119193348332966656047712585307 GT 1 -190548735063199348609471535622158425239738.6622450975576719599520015774061224 1.6552478287728520688744132963780881 0.0252059759917914777378428111842802 1.0255290877297619298003412115446785 GT 1 -2479054397155.6663606007258523928659770431569342 2.0674557999498310300866747459348919 0.0998083520577483161338453786682407 1.1051475961687321522453410125308610 GT 1 -291279054163980.6846702160030312650299203547414640 0.3475288273646268994545663307542398 0.0961261332481561140066229284572981 1.1010654562542638655460141399176545 GT 1 -25958171846263041700978.5970081966103418424184605905357990 1.3162736349487837219326645433828290 0.0784169785732652532510436923229744 1.0816624121412749254825952638310387 GT 1 -378647078335102216168011097660887.8074013638767063170032600190974055 1.2585398443091778362620020095220903 0.0601253726967690505943873498482850 1.0620087878226804280463091205752055 GT 1 -72045657172361557485571040.3258258904935572413484001641894789 0.5470223869732380821364258202906193 0.0105036336646247935871009734908945 1.0105591861692251974860383825421788 GT 1 -335714420457214036154121102.3155892081393285116234831445250347 0.6395086678356465538117893141470496 0.0193662948878603098046090443069655 1.0195562784281714939837507971623567 GT 1 -600923309478821977231.7069400608376565899163803380370110 0.5190336728309123740040819447100656 0.0666667988287560978899835527805610 1.0689930130892001533820619926748909 GT 1 -27614982.9207887229432786995787840755089988 0.4469523956655874261201481120776883 0.0872557685683370763598352748280817 1.0912995784535842246788760510229090 GT 1 -203333802602421440270919110178.8206863106024335402716444451668976 0.7403337186465490961911409828195474 0.0363743491300449405955578808185449 1.0370523887638883784107733416994906 GT 1 -385500683523838852263221665117421527.9135776509559405215519470468811532 0.3944312863258297062833646739068637 0.0629699755444779834126149701923060 1.0650399540815026526124328141443660 GT 1 -190386519215023358256379351823466526692.5472283692422748408498086069364273 0.1123733885061143170229336858810111 0.0335900965560561169299957349546918 1.0341672040851129095126790053621603 GT 1 -2251446.0629558796392485082910775701583619 1.7164541924712950196459728087160445 0.0355925328906041181972020104001485 1.0362413899537522938028997812646484 GT 1 -262983704578461130914.8526914412916868289613427836227875 0.7773509523919097739588323237422955 0.0751300663124163001668179587510993 1.0781021635861774806292233777184523 GT 1 -4448.8554632818287880653831302996798290 0.3694258755473594642950892964691067 0.0690814237810683975304555046962924 1.0715834639412389265745025531665646 GT 1 -10.6732162631756056189820316380676134 1.4855543873627476887860214237633465 0.0531500244073782228327951188883894 1.0546146190506729620815289099936094 GT 1 -286211166514619975666849586122405383610709.3713501305044950243625293609222533 0.3658299082908322372961612665172608 0.0754283420935782883634658739775814 1.0784247212545070282736581642277923 GT 1 -2893286399703986327463025.0753628926295427587633785720082905 0.5237335723717663246230250187564259 0.0694340137183831284946812368944040 1.0719622905494572228909895943005419 GT 1 -871600360832791363295.9920722507991813420460983120213461 6.5697960307341835861409816335237672 0.0967973313300229662645742287059249 1.1018083114677271907446591517574580 LT 1 -133490307522528345486811.8659227384236650369603406719574135 0.5108373965449615064267894188084841 0.0080782782067260190767843278038438 1.0081110842933679846237987265890632 GT 1 -21134549943892609524.6421080884097255980769838408384370 0.2687808290789490934683495939086508 0.0967070789406834494911577480392755 1.1017083916119271208803872802854055 GT 1 -16015769254124452721918972584773565245.1700253308219254720716509508800858 0.1402178952640147717828513323627561 0.0778016484909171133630760961695553 1.0809949467744749514509914289024749 GT 1 -155360121058961682525133308871.9701172107582467783729640768136503 0.4705258041565240208999304928827516 0.0266867166829134649390119957817308 1.0270492719318488688763898481147106 GT 1 -248237696475710865177081115.5809102597338037628471864792306730 1.5018211591897299865565452272473469 0.0722707281368796489591437812816015 1.0750153216643791337990012423670208 GT 1 -15985555042781596.5021410190931044804266961642870243 0.6938779459911668187142431798676088 0.0677153050061773112885336268224770 1.0701170442104396575853122080999480 GT 1 -598380097.2706332920836018500756896691840417 0.2885131004457927948153905593158078 0.0268226737765311752720147685247126 1.0271889665115939997415810104598379 GT 1 -4118901426795377386473125690957.2312969135557458727076486923313154 0.3592520318413611519587949549758508 0.0803173611883430468285526349619990 1.0837266262641003274783719128677282 GT 1 -944193106512668780.2295626964393178431822555965430496 1.2018909266336861279319683114079184 0.0196237786649014598599486759233213 1.0198188816664807632814751578117534 GT 1 -11283304849187314712788086134225287322728079.3974511052213841887982615196039196 1.2617499870299360348576164543176972 0.0228072581063896601959684905952697 1.0230713670784374585649928718474251 GT 1 -77131549404027140293403886937207858951.0754858278566731266664499537379667 2.4349450040724155768117821400972446 0.0403897836870489424856504828535949 1.0412281016446010661604424193744086 GT 1 -15760752663817873136273403192680928873649.9219423752746002413179134409437951 0.5641030650146627569930502707822596 0.0467650165030776204178340481070974 1.0478938333222042928166135154866250 GT 1 -5677.5551154400591202782070642189908237 0.7530495753764485032766517212792914 0.0924258823527338768955635440439363 1.0969800438395498089175412175009430 GT 1 -411011.2505443654597529455272831665346355 0.1438308064196149209691003965847807 0.0013886741184619468071899611806043 1.0013896392199433611583117702416645 GT 1 -5507651712141816719695585612973.9601491078668385359606602673027349 1.2593263997800657097813357463514725 0.0341699794044019997327366751662543 1.0347674223691267548719696290037855 GT 1 -762615937011355465738.4449799692596489197912027585449740 0.1388292370015306738169964780225096 0.0149411380197996018836543560871487 1.0150538812399741692078215763040460 GT 1 -67186578623.5149037101869130837711498095023151 0.3058210903942576530818821918947995 0.0163856447049120961704001014790988 1.0165213740992966960571212765309337 GT 1 -352352137.3380205298186719572389292468639166 1.3173141311996695625671136547847388 0.0722127123235229830021556829282201 1.0749527883357733608445115474032738 GT 1 -113942721829.2977643018779483859219605077856418 0.2219079647198835373001150390834504 0.0861813028595044543061564853450250 1.0901230891950338824881022583087554 GT 1 -108856122915292953336256209.3664689732322588626453635166578836 1.4916651564445116382397948669844227 0.0742940912644261117244501522702786 1.0771986879374728629707406341011232 GT 1 -469363.1783375501598889031751137712198462 0.3246515494859506821389815744564331 0.0921399007606557299421692548138600 1.0966649879793224503949359379566998 GT 1 -14905795954693.4371557470706836630864593968696274 0.9047775227910645841398249727600489 0.0754939720453207559449147598793185 1.0784957079440029473604850717180922 GT 1 -31485465127886005.9692448007213007760627384848694903 0.2339759878846064523512751559970158 0.0733479630624311598582216162020138 1.0761771485676312241941151771280745 GT 1 -129304.9953206493600548783496147019197566 1.4173054859701093632143308536017258 0.0898641214097398593217306656866449 1.0941613734857807224245247010471757 GT 1 -195670284620452157074658912783301476.1984329047977347554362223890273631 0.1516099476939043394369923632992140 0.0348094067033890245829648775613164 1.0354296911380439795232628740952742 GT 1 -560242005193240.0200727024695616370880545183655090 1.4912178258431827555158692936407299 0.0765230412303124995235460041401913 1.0796094295515651370124088091600714 GT 1 -38922367328.4124301508224280491244576366251993 1.2367982247019997276633260181684625 0.0001837175741967927380260910411614 1.0001837344523375661532397010537454 GT 1 -1460502892571105315838566868.6234840689643683313146764337500297 0.6719868567013917876042055498948769 0.0861471004672881581395429155630056 1.0900856619107421693193963395089333 GT 1 -80232885975262137326699759833133.8500576257485340695659962734122304 2.9084612328950622431167454024658783 0.0290190012875458061550058811036066 1.0294483796645137480709133307548114 GT 1 -547454981743076336559353378056556305.1743057904681021617831009164361044 0.9735890987765684235623017167473466 0.0103977541089127378652234154900949 1.0104521884126111840380074516906117 GT 1 -1112165621849956480122570256117777637648.8168814084603803707879426570115255 0.5928570912608260474708346673272290 0.0175730499102093919217229661417566 1.0177292890565455904907567676859157 GT 1 -10323382832572756218907783764.3092099280611831774862707127136710 0.1575768215041495001160959636024727 0.0394625101783123331811715511780120 1.0402622659665882530265366058061899 GT 1 -22346393922438843868.4540105054498783226807612351945291 0.1576618131967900867558158755028026 0.0256219417997423363776170687564544 1.0259559005474319192118338263995178 GT 1 -20912252994684194134484.0109046160628833883481546058498155 0.7762842909743971695110334540551873 0.0208928281002636577139780708776877 1.0211141716568683918239223952170386 GT 1 -6513.8859232244354192753789190738790416 0.1171430210045850204279414618147943 0.0315885808348013058403955841362771 1.0320982622021317597818462876733014 GT 1 -22628193286.7743143223353723857206595986208609 0.3297088254556240182228643913303491 0.0411973552348942763407012356613015 1.0420700180140457907847916993568701 GT 1 -36109104948813.1158807105026237828157467099610352 0.1297721309420308370788299228520248 0.0634412962214455813543243756887735 1.0655430748356010940376420095573366 GT 1 -48118168914664425.2812078961736900313433983359353568 1.8260413532392512555234155724361270 0.0672836354093368145821629661870220 1.0696541280074373264527338159892459 GT 1 -56605199994920985430111.4003514649901931148855993911621185 0.7754565547557858325522889040384807 0.0997260558219831968123714550046045 1.1050561795527383771122077483881613 GT 1 -421532.5530429483165510380778861626825257 0.0798857134931549537999561384156148 0.0575303776518063960307816262803268 1.0592515911096973821367192515657487 GT 1 -82263557.5175866724004656359109886583326317 0.8492033649925406547024671378816933 0.0725646741007129395415058755368287 1.0753322164203999473382831046462410 GT 1 -8433786643378983.2243275668455718408459970227586677 0.4673962474740909100522554776849356 0.0752901973771712561787108517194933 1.0782753175865283722402644135453021 GT 1 -364.1530501352947122905399175940810252 0.7629816462473939446680781386524211 0.0115299516311985104504092642899403 1.0115969369126653695613250615969942 GT 1 -38906973976628462587560984914413698748.7945990822714751037255216128920844 3.9551809339945801319097189729568717 0.0592356477695718922670008015490811 1.0610625934671880499732286669691905 LT 1 -13485967.1827275511411431544756364854267378 2.2457116964306240774509371002697725 0.0709907632997447781795826611438404 1.0736365975909713069445770045448115 GT 1 -85830266355549315442470528263.3014247212915475724391767480170792 0.1478744591157508940804617452476580 0.0512615880406137325794640993691536 1.0526221643554410036530238820240045 GT 1 -902769284067262251523319372970980742.8375816277629218174355423786507832 0.4849667386999390509365993631224604 0.0800557967459154199877232938911476 1.0834422594151185859142349455032620 GT 1 -9986816769666994165341383111085482485447.2012238325836177596962601246562606 0.6126877908358955073898280741444761 0.0310664153509929857274742107791446 1.0315592095342544000906923636391481 GT 1 -3.2970229863009834598179280788437573 0.7366256777775194877303390866180635 0.0276688750047347883973761081622065 1.0280588689589832116535011701839556 GT 1 -214205840202717111542780230323091.8749270402172755063722369403280551 0.2780943292540562794974528111021098 0.0455304869379936546582126388998187 1.0465995765443428600328731496775094 GT 1 -91.5701331081473532317940375343632862 0.5486027753153895191360470276160698 0.0901116096059562148593846593758093 1.0944333349117455367162675371930164 GT 1 -2225454208121413192299746862014731608931199.7795423226462297612809475804263380 0.0702085923672145044490704924831715 0.0407206322907559637914874523231710 1.0415729350417285482271712165013323 GT 1 -21929707746338255.7465772848953793331495190146433788 0.0717202815342770876579800094296698 0.0289243430110280916602013615948972 1.0293508971566633410944939321180805 GT 1 -207418863958194551278906396963152460.0153509230096984442487577108710024 0.0760124950955023337485806340368068 0.0477495110061246204883739872651854 1.0489271601093781293826027888548808 GT 1 -26406277656602766761.5488825054780206330900657915137668 3.8403444386083961406240438140460561 0.0558650870959701643592829752761449 1.0574862068362892437868985411629896 LT 1 -1733744779841713320844453313163946322098.5613205852123559318160013083136755 1.6946078876649334057071936651210415 0.0772997546713575695562908564795197 1.0804508585163981018043321893730078 GT 1 -63372111362429127722171494277565612.7594538268989478447745230336972203 0.0935670288919816614748344526079082 0.0817767099948867907562384401945290 1.0853146826388685017264948766769021 GT 1 -309157151497418960.8421204570359947370498576513963957 3.6158765766168527894778558695890171 0.0202335094508536022507311679898536 1.0204410106593560817002584343026930 GT 1 -30334433001931697968820617184.6072802258369045380762516906980373 2.5562127874224889800572757722505850 0.0790835265915874150938015104038220 1.0857796594286060323249006601825227 LT 2 -17954255.5156941793012700935086484782724668 0.0723510387263386982994198926185321 0.0458046517450580125716257398723487 1.0468868609330341361198812563560891 GT 1 -2858927936312403467465286.3353938857988169512240738470416745 0.8551150629843662296343822430903429 0.0424629028887435724864948510617209 1.0433908149585266437328399637670061 GT 1 -134935339752894.6099310790839462248338960493266250 1.6907517378754678946422962953053799 0.0963153603763487199843413064471106 1.1012748294261047122964010888757904 GT 1 -11110358937711924.3857103815448171121730928878386051 0.8846339792714588628260032168719058 0.0008357117678331602190499549989483 1.0008360611695922786054723836587940 GT 1 -176368555773078966886491.9609872125429389457887339478845025 0.6087481103181989767445966480166936 0.0371441167933334751691451710793834 1.0378515323742878587286783445216978 GT 1 -1802511570428297604207136126111590942635.4173099727720144348635935421828812 0.6827471625991613479154507487842651 0.0074929175694852647596266654864623 1.0075211304961115536943078123519747 GT 1 -64877666983941470916273.8726852631802385102051623005233895 0.4405435997599132258394437798385291 0.0285258145244778847829682130408938 1.0289405823390668008832698527052864 GT 1 -294229860286264378.2014655322764614950093167011244274 0.6989421836754783198559400629621440 0.0011232869354112325455171239326623 1.0011239182950238188150397619770179 GT 1 -2956479041581333835872.9541619485257746705129077639414779 1.5394492235360051294773072923166587 0.0794172654219905148942722149959593 1.0827484023066811870085191105291875 GT 1 -7335315773807962200412916412.4514376359383578538144218572679720 0.8496069119061199269856342805385305 0.0794130318435371659514807452741626 1.0827438035144600584845522636683513 GT 1 -2739.1971299266314609536177761546372049 1.1516420453376103475882754378477928 0.0871041933323356948363121446642494 1.0911335268407948051874953524508559 GT 1 -16611369399242784.0554809014190688430237383319421185 0.2079974021506084164453847689479810 0.0895804868899825228297226456561943 1.0938497822830683912831706523441979 GT 1 -22219236767202904135305325797590782.0444357792969016649007367608703374 0.1117284496070736173503096467308869 0.0320283467868665723290036824703135 1.0325524760050708791642858867647090 GT 1 -259138524328922959.0538609239200545808817097097761493 0.0609538391331888430505153317448672 0.0783674470023205289646668335563838 1.0816086674012196399901749414861978 GT 1 -178261381044.2871044159692190326694228406031300 0.6914395417399046965219183875530680 0.0387789652093062956988760145777276 1.0395508914738228019695065968339159 GT 1 -70081424524609648.7440847880376471427198273524017004 0.7719162362330656427956844733528116 0.0680038283690473045222815664450180 1.0704265719970933000214108834866816 GT 1 -2.1759516942372192097772122727560013 0.2142273195729320386604848895840462 0.0311042639156250168847413060598842 1.0315982723807413341848901428713911 GT 1 -200055116374239168518592690143883687013582.1540178283528330063671849839086749 0.4025505047300042051017324670232091 0.0169148959859897294563173128314515 1.0170595867797835983161923526217357 GT 1 -7025700356800695.0409067552276504361842774308847845 0.0414976169835677340796782056487681 0.0046405833722289956043324561396707 1.0046513843072936152598382865331704 GT 1 -3083284255047045455541165065241771861805445.5657640820521248410315650409103163 3.1013632236758105101174419755526531 0.0112591226787046314694098872870220 1.0113229864194036182812532159296698 GT 1 -20.6533321167300897474610455582943831 0.2091408720867337639902794129848056 0.0707927804636712129327579095984802 1.0734235084902282356188709633887837 GT 1 -708718582157.2773110350069857955858588821969967 4.1691770694000957811771803209686278 0.0529920576725021193490473830270677 1.0544477990017688463625644666193347 LT 1 -12160254180626715972856.1906506344089221630976366195129754 0.4300001281270858534776512621797038 0.0947358253069989095271385169226174 1.0995284721402789731397970444194394 GT 1 -5892618.9964155223054369980353028827484217 0.4271088041345026863877006536619066 0.0286039475996093141835248135589512 1.0290210129037544054437169390096013 GT 1 -137541628671614791728091.3186413406275196389791149775349703 0.1231508919947943970106632366165007 0.0854292395165957940364545033375814 1.0893004380009063882890104191139848 GT 1 -1244024975544673461904802141567936.2452264720477138947019954858918939 0.3755312029008964846886866984940513 0.0624472009171115987400673430835351 1.0644822037016801066531610656608412 GT 1 -168950366421274600905616377.3898692552629028973791367982082174 2.4301009946907959977559933086495919 0.0852197012118035593754702783801783 1.0930382061279217009328393320982250 GT 2 -16531203037.1674259897338399615980083235107168 0.5175330599649635660021497891518689 0.0597533468009913601393868812105349 1.0616130411179426063798352977009565 GT 1 -2355305774839637984040306598635.9635301029354752149016963504405625 2.0200518626955522997597018155513443 0.0206148295373880386601589553816647 1.0208302812798374825510955731689072 GT 1 -404871649105706262052195554705597774582363.9002644199758322729556946512650072 2.4991319498277885485620183260172696 0.0739068391705364321863089846987966 1.0767804437489975451284492288486671 GT 1 -9088918201911818287160936185268.4603735221957900169205042537608285 0.3321020890997305593199326611853657 0.0512189921088321977054485936859106 1.0525772679171299325750069121369785 GT 1 -4600746869365180573974872343572217566147.3428300245955445572402371456320949 0.7625061616819393533226640026753243 0.0443093791214808808083283830355304 1.0453210366343558481734942478391059 GT 1 -243596990606907476272175014.5993233056529821143386114819313419 0.8681056917769652851185074051401789 0.0584484275042226728250759456602919 1.0602261554379443233614171254679907 GT 1 -1558140410012571752.7625664207006872372607852626617903 2.0494362626870416620214712487591082 0.0743314583590700978359772298150188 1.0772390548061432835466556195269424 GT 1 -3632.6482763793174265238442074311858884 0.0878792917520229671875386631340720 0.0321674110730121501500132330264307 1.0326961519856866243636968321495907 GT 1 -19090149027493390039739712647328278.2477417545282434310430069508571924 0.1340498768260733328490369175437957 0.0407852597912867769921089305245279 1.0416403081968386217335978531147020 GT 1 -28785171.8484694141608768231723518413435206 0.4614790902127537619276382551623206 0.0549668283547362413992919329893486 1.0565352498343441855580783417566170 GT 1 -3885672935957341016954907333286.5560530438249074877205208340876492 1.7921781267144584634851543425613252 0.0349002282035402961408805165438091 1.0355237925249240945820325786991060 GT 1 -2245833245339132524.3441699137147298983134093672926775 0.2204258251011941948152443667604571 0.0825841612116542471693523627813103 1.0861944321017991979732543895188176 GT 1 -73271722501677198324329539910560.0555146192496871768356389009145975 0.7751209430543042994126090276451475 0.0047426985009287120870603007323861 1.0047539807819031307167756832102047 GT 1 -1064623708125163898574443838512802169.9573637933797562903427408537439707 0.1138305547063081462696243890675598 0.0955399542427453794197727328008639 1.1004171478617850632858087707432093 GT 1 -114887460747202873751857410112079819525084.6922926796900742651581361627728381 2.8726492791345102861685745765051543 0.0696368985182298711559338615735764 1.0721803373326309139739177187703707 LT 1 -4961571272431743740660988399.5375040074298408664534632972641321 0.0144466245717720104164452302126737 0.0568754740305382847524460136272946 1.0585569520770229525994821986664783 GT 1 -47347059769574626170.6852621272750058671629266330082886 1.0565776770318706852757740908139469 0.0442223151068500640380341385233623 1.0452299401569221012481893735249941 GT 1 -744316194246234596203114212887.3251137242107838084998012877635261 1.1127712705197752218730634990630588 0.0888796815513499544367700809779754 1.0930803175027013292102501827431156 GT 1 -245530560628041708680344007755.3928002536665644784484205432075177 1.8352320423677777936357012062188943 0.0870917798592042633336423186055123 1.0911199290253125797923247576318357 GT 1 -1595804599660.5534677313687130206054808598820536 0.5938519213543491924858034238721353 0.0706461024019426593640758248729172 1.0732656680396981698982110038992598 GT 1 -200208027750571901.4480424333309278793263966738112101 0.0469884887957056180023479618448632 0.0516360017881272010234078013837090 1.0530168860640502612632393288830546 GT 1 -4427587180720400700546585343.2991578440820274255180092930098621 0.0584946889702241779589549870902862 0.0207652824922721615647775538791807 1.0209839128814607634755960809876615 GT 1 -61321548349152963227253756535247.2260489820396312220259687317534303 0.9589224358670717061591200943701973 0.0114772396077188870421973059825960 1.0115436114546682336595840451556709 GT 1 -3574633645840088282390.0881864152764361692222706563875980 0.1508593311186255276068820940754351 0.0604296242646641615015484901468072 1.0623325552860124116670453706143222 GT 1 -154657629474931864435476.7207066880570435372883785091497624 0.1337631207716126581881485773084702 0.0207929957472960481556008917864720 1.0210122142138086314408808745776468 GT 1 -25722766298308911526687.2751977342697921691907202631128373 0.0408168376311047962496996178586081 0.0415150459285672597648822139136126 1.0424014139890401037351123488416344 GT 1 -171349932378194210308752.8566688535149976530712438713270877 0.1638907502832478398322713557309699 0.0817380795098422559959578697865860 1.0852726126185607265691181497628748 GT 1 -63643216132.5369895379176098861291505898336551 1.3738857094688884902087134367195570 0.0858519794658078802329904300580045 1.0897627725721158787156461091977724 GT 1 -408.7947332829710424448016866459368118 0.3878798954019838997893502531838497 0.0117108250649614033074930368884719 1.0117799368775931809400325989318286 GT 1 -24098335951.7347890555869909195372604016135780 2.5418190008505637768903143447087618 0.0409252903609810346747826724610375 1.0417863034427115504936673802301354 GT 1 -482194883810757980440074902.2330625704804663204618694073876568 0.1357433576919276910499141661025326 0.0804363609525540776077988493878358 1.0838560268406404054364089702529568 GT 1 -3200077073578659415170594393646436071843.3614837365601379782743726953372695 2.3159755314436465661366077831783564 0.0361138394552653727430480863058953 1.0367820820660792879267235606597073 GT 1 -25.8840657039434121965578925246875989 0.7048418817260562330092927771368747 0.0408116998405716389114133599064800 1.0416678728417335361936286246874820 GT 1 -5460954538806644286911340051711419614464.9586723016696779668551357677482925 0.5528305576259435290048250934333275 0.0164349821623244186550639042890687 1.0165715347080307095695918786307055 GT 1 -39870889550913182705932034.7306738462776681059301433050181245 0.2989042128100045250553255807457013 0.0531208242302192865882603113906043 1.0545837802402335251631869396394053 GT 1 -41.3773238699779998662157524883372953 0.3118402942567305540469208621537450 0.0887745941930501736871973906502429 1.0929649855357561526076705677800156 GT 1 -7081355346732493154764163394.0494190712930901353832534785178410 1.2487580211108323220406498966495350 0.0260493611129687168905460498453398 1.0263946553845619050418042906773901 GT 1 -2033095983817251489401929697424.1032232966129128695238584809953200 0.6366183506641001434566607557368533 0.0170859200965422654588921374605453 1.0172335686536144467354868407659568 GT 1 -2695419566914520214204677330285999425135.8484546581909491182849863806700973 0.0031842905847910502894916045896686 0.0200375450755309944760936643372264 1.0202410193529783457830845648464706 GT 1 -5581262850200352958268572444740400880007658.4533830812475671313785716225302722 0.1675996559708153791908734423455007 0.0808852458843526663983553032805979 1.0843442959608800440577111308256218 GT 1 -261849770942453910300878650.9261323583380222269409474832637163 0.9556172643306484586980439692028684 0.0563636656521974000214633360893768 1.0580144260986025693666884178058171 GT 1 -641102724091.6080602104955998951034885341157976 0.1182794471562259687062785865429098 0.0531766888351427289252626114417891 1.0546427806432272147857957509725325 GT 1 -80060762758.3539502465760162583241336421303824 0.7064463549790996208865556768669584 0.0672166520151381260614948038504915 1.0695823151909829114262240837580203 GT 1 -89042123877768405397656166435371410024.0557889304357740767164009677066629 0.6723717946936722411690991201944073 0.0128058327881980406121987255700486 1.0128885342643902826778682562684325 GT 1 -2652294593881583017618192753632938.8455334337609146877781052362576612 1.1292491803821961546031189688326148 0.0713014458264321570675038576982868 1.0739710770296754391678576517061963 GT 1 -5050670719146460718104390300778425.3217954037565686339915331510217788 2.5695535332288914125781318373563273 0.0840867496964267561518726913859181 1.0916909964278365015965219318875993 LT 2 -4436762579450050038420015245033190036546547.0513596816123915253747687491138007 1.2485748239734295908235471249827035 0.0273269916570376121879626970828456 1.0277073187022426837706737696193661 GT 1 -45745194729.2874470614981725679288250691293635 1.0282186528675204280190879298689601 0.0239248922054761756945503768389296 1.0242157408224022502763987502687134 GT 1 -9.4975950388254892174027785973207760 0.0772545227825080599622164973230871 0.0181001906486954306846559065071427 1.0182660029699579580843944179163920 GT 1 -84503415733387075692421698.5557864381999715805089407602855096 0.3545642358872801882914434068697793 0.0952146116027016704467524239816239 1.1000575032968092728882295036272130 GT 1 -1439629780.0981233061570490241013864515679426 2.3070737222583114264908036188669510 0.0379404256888965590711954700327975 1.0386789026755430559134759310336517 GT 1 -1831270952273501642550224103503644446.1946076810060679754919314320341992 0.2680235941147301349084497491096434 0.0000395978262554801209385615205613 1.0000395986102700991186086291397404 GT 1 -299094058171050.0620507563706518932293916203702121 0.4318194477734742307863741921976641 0.0933299242024826282975050882528361 1.0979766482964815711806608227838595 GT 1 -549551475248102957627798169315411025.7445875529284771749465369619428738 3.0251630386839885816408236760732432 0.0640883446458709222133069516440396 1.0662341922645358959958719445670787 LT 1 -117083065748973264665.7931677959127378446963972909600483 0.2315001836599483130207210616321181 0.0285967657975466201309611747984150 1.0290136196520559402047113767618988 GT 1 -1556461236376753579621779836390604445238160.0338150331390253804323134058069163 0.8275919784387346003722038883007505 0.0680420333208491557942216446326248 1.0704675654432537713062504966755838 GT 1 -436237201085050718975985097627622904042825.6452427437617464328522175269083729 0.1281265206264990100756661705526296 0.0249172673289777791963416947605303 1.0252329575626274683665823630375807 GT 1 -971095931356109889319577595826638061718.5550717882177319387335298939685784 3.3188599115365372336658623627431967 0.0806418784280795294204360869106894 1.0840795463843015628476030050945923 LT 1 -7705490947043331543358549729964.6328348346756275414444602191189116 2.0464657555309663538640449730284102 0.0186782542771134997203765379105766 1.0188548958981450835601086434612543 GT 1 -907847194158.4357948343362557665598796129899761 0.8432707597943778320913938902856355 0.0090030960444630034442773940887640 1.0090438688189495522404177925070395 GT 1 -8174356565875921129422007.5766799644723304104711691664222664 0.4990268974041534641262872712351267 0.0793772081979278289923713909330879 1.0827048903537839341359062049554961 GT 1 -100431940553187554913.9190073230530933910990895624420719 0.7597491340631057417346543104854631 0.0014574011641865585663538257493113 1.0014584642062412677713167599697542 GT 1 -1221305247883596092788395657417983189694980.8762553003543451690434076507117563 1.0269194600819950895606011467405259 0.0029709426415527369480098546433889 1.0029753646521742041020483581285222 GT 1 -420209055570849.0549706507197424287726517458308821 0.6118518350076212553430027492747147 0.0597696527655793910992180805816273 1.0616303834886120496044531284594426 GT 1 -1856840620837.5740866020353003845799574307321773 0.9030525183554671419997691857195682 0.0243540045679170458502326639044008 1.0246554679623567098207367255674811 GT 1 -9.4923145657436536538631618965958908 0.6482985647780272853591480944789880 0.0482822276223451410161049526384094 1.0494867457295058951941425103416433 GT 1 -8296206.1072631752973726213767302686921090 0.5930238536676348148214956660382962 0.0642999793935910109355230663886793 1.0664603446778173296409065490042775 GT 1 -47420.6459458844607575742897437321743059 0.1929261094050612200393355908959571 0.0342731179538288617210314545753788 1.0348742155465721858164982915631992 GT 1 -164577322932842404770136178982923087.1724772418806853914433667799699327 0.3109064329738589868945550286651785 0.0330893899934986061514929900658261 1.0336492283327542850951990117115310 GT 1 -732676355532671470851481221838120241859.2151299838990040103925481045486952 0.2974370466793712951535539345133779 0.0983526029887777292966892636736893 1.1035317477500951962881930254417006 GT 1 -21665908070106687461061092082266152.8554407606548312727923462366173683 0.3103592600571548821168858209279746 0.0247482472842383047682729929069006 1.0250596334006142163061196101952761 GT 1 -368389419069828342856380975902085.2002715851029438266565407126397917 0.4118955089099800963231378521375020 0.0017795173105786093160251954243392 1.0017811025324068713871847695262166 GT 1 -3733769202359343702340756.5023626055798963407774721003652918 0.1966852183733581152129271110132441 0.0790675475049903566703145339172309 1.0823685868985224313873405166843477 GT 1 -25556625.6837067259862572952811629256741699 4.0286178875057029945331228422268699 0.0446940182755840385489150747026902 1.0457235901070030064172249272382178 LT 1 -53970053378979623104287325996.4751919482753296081499481581287918 0.4957394832667202588645553960776413 0.0223739877776032889402977805953159 1.0226280826716668252697305290677050 GT 1 -31292547260288811208939738893821.7152398235741011947899428611464390 2.7724780269298083993531648697184139 0.0472275361779508352837901067215413 1.0483791616293968298858613789409275 GT 1 -1189843134932.5899302241335726522407468184498245 0.2116159849640346602956418368867481 0.0502558271376745947373166050396018 1.0515626223769456167825885163407937 GT 1 -241902777001962574500759.4281782385337523571493114881476017 0.1822179112165402694474767915907848 0.0807931064879817285556150406934929 1.0842440530065885585336383404101309 GT 1 -702554467837974285628007574034746.7889371679517341315375881224635985 0.8150168661535744363170189935871487 0.0408787690277413618032036903652504 1.0417377981443070831029534464014755 GT 1 -40666545.2881737087548471051438808056623619 0.2280418443741666355213634020505747 0.0466283611028134953691155499180703 1.0477504839821851760798497372844459 GT 1 -912122986027640.0267295424867780504261417725225264 0.2598377874320561728221331680102477 0.0915315572765702708135440007662515 1.0959951273315613170346035517784281 GT 1 -1541517356737758752.0355255020686346574553206290766277 0.0129368413007636005268927999315899 0.0619295479634204385442316707894806 1.0639302240154339751489395141072379 GT 1 -226402304723331012054827.2216957501699960506031987336630443 0.2312236545361942739448014523949799 0.0912414804346303959965684785061109 1.0956758751408076761864897683499748 GT 1 -32.6479698174709225596443030053084284 0.3266854868670720047939315068852963 0.0553503202129747405181558616330688 1.0569411294381226491005330353713883 GT 1 -11541039735.2347215807908183381474673463012795 2.4887351075593851745711841700188259 0.0104171927432349171412574792150192 1.0104718314816530480808973266559918 GT 1 -484343466342103228322314204738.4299114102501448241534169369351818 1.1839611382360990541248159065365858 0.0864050868894033694700151484712896 1.0903680080571483127522340022668748 GT 1 -8078804188002315153725659173362.4865872063058581741693728482644108 0.1637443642637065502047586361537619 0.0120457378504227775826528072561302 1.0121188756767136584458550968697977 GT 1 -3564.5581582160687473822283533486370536 0.0827902725803816417131372157270887 0.0381488588228164358085048898438818 1.0388955791907860710680899772335752 GT 1 -1323101.6850739558834486878331206936866227 0.4293066910305975914646517880433736 0.0062800672151401563977465337654197 1.0062998697884491618773516776729193 GT 1 -2561001951581861424020824.5281556378268936382243620584291243 0.8570940346426179759107509350479060 0.0983817429566860809436078383822368 1.1035640668572055309230639433556366 GT 1 -197927935763844201173.7923698162380913319049575688335925 2.4477700621892150793254392430228077 0.0549492015647093721728024158249863 1.0565165979751607768971348977811646 GT 1 -27063900576136202.3587494441318770635257185034306678 0.6502908465772942191081255294284583 0.0290879816117857709150944883045836 1.0295194240770138446650084262243026 GT 1 -92165932412966525629.2721202610052805382034977274158687 0.8964733957920626101344444003763471 0.0860650163616743144546850305900291 1.0899958439330383030734435595930960 GT 1 -1773491538952804465810160.2875774793892481835051681532254243 0.0755337695765324260025121281797813 0.0461815983476090696827779841891218 1.0472819803156627136367074704955321 GT 1 -616378797183622122129956438.6857374746916980106085756763225330 0.5609455636863738102000726941096770 0.0713126323350665587295133235057131 1.0739831224624560043900681719788761 GT 1 -3.9716052491247765226505355108954308 0.4363233967592064735077929974424130 0.0167538220159389935225440235388755 1.0168957548030605885157843021740190 GT 1 -14919.5056396208160678504329077501545146 0.6090367060781873601794710304750074 0.0744912786174314781483738253599119 1.0774117235850342133204905599307538 GT 1 -2712247.6688158212283319038288479561998234 0.4443986114253298873345634688194564 0.0244174996990508461602917196115725 1.0247205501721492218941830535537829 GT 1 -46684143682360512715919427716.8851794973522070138530508240185158 0.5895370220455406304286520287420490 0.0441426983656219987236300017326645 1.0451466431448510646783653978820012 GT 1 -117091618047684787832.5982047628711751596323518332313335 1.1787277123528605206069458935844114 0.0368219211761139439647212146698550 1.0375169633826951009732044139569380 GT 1 -108754950267349704170405785286010.1824265526182083884051172524738967 1.3676451408537008227368485403367598 0.0142964330930487821192751738880209 1.0143996116635919600885408653376608 GT 1 -17366052168709264467.9333773689596944688148698003769447 1.8454413349181467169479080434094719 0.0874721766703453476614188684071282 1.0915367026701718547481637919653475 GT 1 -5309696374520098101681915538221154197733819.4505769711442376068426985643211942 0.0217273616170373037862412849540478 0.0032793318021122908526190023840736 1.0032847205949647997905560672503233 GT 1 -3729751613040901100783.9677628659191517516954325223413331 0.8980297339352355479715546935901334 0.0839012963281838232517600885947947 1.0876311650129345771369204552239301 GT 1 -1925596.5769068691036968314947020334051681 2.5105554073045987746526182749444816 0.0617662536413949342774518519951404 1.0637561644758588416993723887450302 GT 1 -1353852899081922897341060090401460872227.1998840279869336309628554234900947 1.7626817144491198649947394896863110 0.0378971876193397397085834649597815 1.0386339604504344601534871541547087 GT 1 -658.8873769632669293041047437278328423 1.4420409768222076344847696967604537 0.0136740388709765417602869398535103 1.0137683896317821868536035187113687 GT 1 -458446030886363326290392554790752604122054.1226773113631487115137772199375296 0.6462343921340423109990879797844147 0.0070458997028594209761305322403141 1.0070708392710119851378409040313544 GT 1 -65661225552060852190767898110736699935694.6638576777400566684548951111083243 0.0422289666372079465580228775521625 0.0909768523542136265117854719854987 1.0953847201720240311667616360908429 GT 1 -9993618560825637.7760407392744245035034421511733071 0.6806748078470719644801879714484049 0.0121191403602147603563681174360456 1.0121931759146396612121381262205312 GT 1 -3573848556996178238655273.2438917429268040378152619353110631 0.0267755655877070746492679892143815 0.0265848926016388319338818788155531 1.0269446614665645264740921395959978 GT 1 -248381335729.4720371234174205363866283029657709 1.4022712193124321966000447100883681 0.0818729148129328767271899127705008 1.0854194609202180324195250240985555 GT 1 -122918024733555935929334197668539.8713011412118844213382147638069504 3.0860662198699404779615717453269333 0.0161607927026917537664140995787902 1.0162928025004803892694951912354020 GT 1 -610144547668487022156923223398.0028104027908284105337000488628442 2.1546089149675597767972226476387567 0.0225224757101842795438346755839554 1.0227799804408574928017685211876519 GT 1 -249798575411147915055332524580883474867871.8314142717833809075942658306634615 0.4034758468348589199785119847448518 0.0829963040063594853238486419975120 1.0866437762063787100606275757620595 GT 1 -4213554083858226191604736828118432191229317.1696066682383878941976553762795190 0.0999447128603119243261757237214032 0.0420149773922129522959135589681328 1.0429231351545882042996664043269536 GT 1 -33506669582488621.0906826769916892279605304129316145 0.4511604281776140896120644416722090 0.0528106180133052665194698951571068 1.0542562248110308698708863111770328 GT 1 -97800219903675178246.4660927737879447508648080899227683 0.8318667112003685730457619238225256 0.0613822856480499192683891344320844 1.0633470026356816423737501060569803 GT 1 -1868992087663021604536413747.9242867678953095822128313658708461 3.9124951155673314561697707008223017 0.0466927062627408795530465626693566 1.0478179784710060138568291238828479 LT 1 -6139414933567293640.1884469776892310653745064262136842 0.3389580923601816344447756805058131 0.0667025487215522441638404977520650 1.0690313172847876420947823475423407 GT 1 -1552437.1691786172482290871265219343650883 0.3250787998498296974028356641549348 0.0996443108906476754063623328612367 1.1049653836112737910545899388247290 GT 1 -2.8443251827608620685265705895543740 0.6484969673387660876660716386003543 0.0227244871034683589628534727797918 1.0229866678230078310753759218714833 GT 1 -15582529.4300814221500780419574189380967454 0.9488008368636706067206124261499353 0.0800041849040836758594955858285918 1.0833861577581835246526575692964733 GT 1 -2531879722935761.0153765901786185465373665985016209 1.5782258448495733184569132312324937 0.0297931555237044734424036436929615 1.0302459884893544762488824765227289 GT 1 -1637000.7581295791389572712500558972502604 0.3348268678726358548389051907823305 0.0075586598223716904174383836532495 1.0075873712630369550400833479489500 GT 1 -7989092424897.9692202962032219179691132138176393 1.4289894242256554819445340182900900 0.0745871021363043393431823094449806 1.0775152649970119842144917683793208 GT 1 -1253645719291667171.2761447330293550926163207452995727 2.4060369112805092266632428118337277 0.0243703298227260414071905334312836 1.0246722008669863366249483868081365 GT 1 -15287779490361442898192.1426760449676039094082572236784522 0.0150854353486684008528978534845357 0.0388435089344353613324459861340547 1.0396180413694964623163304767486146 GT 1 -616142030489073814845761438271.9778225516239255613969601738906435 1.1920909582597205704983704762978331 0.0673864569750932730399979974132768 1.0697643729195473077923321630770170 GT 1 -619.8874207999954066558500016745501478 1.6384516278493174597270568734453036 0.0835607236597527946109592263241288 1.0872594699364157977338967623736090 GT 1 -1203349777151538677924165412.3736956968157217856610591749933967 1.1601989038476230121648549947720268 0.0420404323644521982084057061834256 1.0429497068752636030804250200690397 GT 1 -546.8221609877669116848040787895656964 0.8663412118354565452441689293694943 0.0846648098477651376874828264116474 1.0884649527531189642435901183168629 GT 1 -786963960375791696812.1548050743598331513249078346682972 0.3632083016751271940258256219085969 0.0840825721072449639353761879400716 1.0878290625931244892178161579130146 GT 1 -6889724902484999283857155.1037608837357060660658125154854396 0.1307932656928253789496249668108228 0.0732703530941871019804947157824642 1.0760933989881830448523631381025002 GT 1 -30258719466128061477566001.5215173207172805995924851398830026 0.4579606912006139560949707246837464 0.0698062765091536229772093752059138 1.0723624096984068491419381222227211 GT 1 -13.8065836416211773567516217258197471 1.0579095400981701703296470807739185 0.0524640327510091484000522107507545 1.0538903825887778940874913873701823 GT 1 -263633988301010767364616043.3370406776811425039220767720533856 0.1320759239782010497291498447990893 0.0924714431685812843004266944686189 1.0970302457553946649869694312606450 GT 1 -1071630920964.1206424583545947832901953974880904 0.6477493736721368238820535199544351 0.0191476991211956868066973576705201 1.0193333905086024150486855517488082 GT 1 -13309.2362814091148829299029470467145585 1.4855716329743420498619103396086831 0.0716406993473033074897005493039294 1.0743364437023005965679074721729102 GT 1 -2855985503673633943599454895.3897634000862742627058258552440712 0.0620854306779082469675931050768210 0.0149079735728457140328963378449459 1.0150202143293307614587080110749615 GT 1 -18901.6100530844913778663419755416556164 0.2163646007742850050752305773446882 0.0837766389797604332847317156506664 1.0874951001245420858485521766345564 GT 1 -458922292490727750848.0963290353048435583505472536095214 0.7769443337448011650018648230035574 0.0573909421493489160021735598246110 1.0591036551066260746931602914890839 GT 1 -2285802834897721829446995454.6632404677678581017938268209174894 0.1979374871184093414847111062928302 0.0317376485240676300354821786763405 1.0322522041740017677803260214414084 GT 1 -7976769962167549945709910572848031482607548.8588097772707497067755063124276790 0.0177903860076201028282929271185901 0.0708019215004498137850209515088476 1.0734333459963829324424581624335533 GT 1 -5011695661546690957767718993663545223511.7125894246695610451734707940085477 0.0477029552913365283956994525664276 0.0024441925178603454360921964766752 1.0024471844325972295490400767524867 GT 1 -164704171006080266182668220899.3865717860981419522224850871628365 0.0800457587317745244441878257954534 0.0127103659203124287564021896888307 1.0127918336807769245538307113130513 GT 1 -1282412680.7888989564783935504175436641887676 0.1765484150515233115117826140894738 0.0845800921675374015618504978675975 1.0883724033123101266789797220989459 GT 1 -1128.8940627862936436822244820036125889 0.3846546839035049101232323722446965 0.0680719657427485162733868390017675 1.0704996837400668766231084552413887 GT 1 -85700202446.8297501841831188595043641374799683 0.0221895480241454740811625248192639 0.0349960890264850827870101083008514 1.0356231248290685366891762660771069 GT 1 -31552985499450004402813613042734149579759.6399021571250032973983313015958360 1.6211488977436704182696348533933872 0.0094456958763544234294212406649750 1.0094905893855917460275301843451944 GT 1 -26787.0453650259407494204345660396323011 0.4263983877889867541230134508868777 0.0752652005357600426462484024790064 1.0782482858588577762946415397705918 GT 1 -2549.4645434636788236656666964403744053 0.9701171767457665933233354865831234 0.0831605548801176777232089502437221 1.0868229091654797522150607616741700 GT 1 -138199177393206570369069547221476964.4493613901561266336792613940310332 2.5464752234387161877517914329052476 0.0310413004622964159180291293960056 1.0315332897358188373539814264509715 GT 1 -1372.3281023869599912163158756568289447 0.2491912603170669411252204420679853 0.0262362626622546129505005826137079 1.0265865742327678115171660629250105 GT 1 -50183189944186852148774827787360413.3670295351193064525871174594690683 0.2724279876500368882488059268935448 0.0706340808378603155480071052635142 1.0732527327237090550064792962409535 GT 1 -99583003485420667368.2776787824255207078084016884407104 0.1662709445297601988271848878767473 0.0917812084215678560384247931739918 1.0962699695188738086302195278342477 GT 1 -261088835702758675615890746055861834434833.8119960272714577205031322895940343 1.8253051885232161551447195355995231 0.0076270245243905323805238560700736 1.0076562590189410910322409033736468 GT 1 -33381890849645261974005896270537455.5231894387557880489208164273267539 0.0754426786034481973205737952118282 0.0495927748191554412501179954580120 1.0508647281500814096369826656085031 GT 1 -292153114363689474392490.6669298121895771695688980016921092 1.4509190051004556832681228915465691 0.0010295902708189157483358225181161 1.0010301206629707841091879284235369 GT 1 -1180991595659217486071850467673615.3154248377528663913825057188488885 1.9633511862199194042296579933676233 0.0310328086380743239391169758107098 1.0315245259082008429093980876910405 GT 1 -1.4002801321223034753154799505902728 0.0608483493340023336808968917244507 0.0461774050668164348857757670890200 1.0472775840159394984513152527627856 GT 1 -3311923314404534869724417371889346981988.3597728288339280235645565932535832 1.1766886254135291233130481888322154 0.0439295845054019769111202502110397 1.0449237122681308339241398731096920 GT 1 -4505158028850682982159611577548592400226222.7017672842471862824945585713924780 0.4779034289807684016568471080130166 0.0825280009418112953941776485172118 1.0861332182567868517108482210918635 GT 1 -238512470.7777765481644391456699823834460445 0.3586048847656023524631297352525102 0.0927032325458776764514796006816457 1.0972856856321199784567356660802785 GT 1 -526763252410417587485647575.7731328497587520072831844547195032 0.0012274633344778719180928351673904 0.0624106768946934607752950794701774 1.0644432476972358832150181486752904 GT 1 -4716525.7030439140630009041220599797679388 0.1765829275512288214278164312828115 0.0849791438519890434586543119386781 1.0888084203620024312493482907903553 GT 1 -85433852.4193331662855326700626348173785894 1.8643938256238163277111096767080465 0.0282288881222085227008807308105145 1.0286349838590554362449602293310977 GT 1 -597.4236662305175866253704091292041311 1.0428795949581189755234661147422757 0.0762877816851232823448151634106935 1.0793547078918891522462325418944852 GT 1 -1365952719707573907687.7851253984928539189133805200088770 0.0059756040944845031413188562570828 0.0921070006333715362231634664237220 1.0966287494320077819637372372693791 GT 1 -200465411366335598815.5760022611080885753299737585948775 0.1412868709865527583496159336897838 0.0467013355831480891237365919487259 1.0478270304939165296810321240423999 GT 1 -2691006228909.4500033253076143585495788942156756 2.1160863047844170101524092245434712 0.0850878702581174191689624008895319 1.0889272513870669303510783260084182 GT 1 -4989519963974579.0956395470763238313921344380618499 0.7002435013748340717493129983151408 0.0843438155656138302759664200953757 1.0881143292713319141998059613842535 GT 1 -101578298173213846196912331.6211495477649763697429127345601055 0.3035383888830952780992403463367049 0.0554284296114622041753161556823339 1.0570238189574414811299999006355107 GT 1 -1366616792923504919066525381.4215986001890368154201783166746149 0.4472120755809807382335574735192391 0.0265246396098732508818837958225329 1.0268827648239113212507585127605843 GT 1 -29819894961.4715838220446740991927962928782686 0.0956258780880150004734550025033832 0.0664808287947907923833268598840819 1.0687937793015346294183185948467884 GT 1 -17881980333227474524.0980394031877441418495819220012912 0.0348963344312915370477127184047326 0.0627389310780146429682357204555584 1.0647934134364022393917532245609299 GT 1 -16143794219809696079216854683555453.8157047968207193832764036284089864 0.5282457546885020777008531917426461 0.0255930057917130474183340004781631 1.0259262040880962394331368153207270 GT 1 -93888908448788.3794198452696527547945063427975458 0.3449413978761388301014417511978563 0.0596855433787998885347135948610048 1.0615409313397846028627932212426487 GT 1 -9296195178505389504561736745055901762.1174150583263965630271611069228016 0.0269571935632564438829868863872629 0.0964814513842097270825546141863126 1.1014586394253449660246565243569064 GT 1 -5315518839060221527.7972168841522677742029431571510939 0.2406570348343313375965360378674947 0.0848099900870449753183913543203014 1.0886235741581442225888645584764498 GT 1 -73.1121939953314831508694639094019551 2.3973576028912913747686533865718314 0.0021633409366548671771765745995112 1.0021656843389877634019108526011050 GT 1 -33345795094005974163675408190085745988263.5817147806041577107683406143221758 2.3908744212691968185167902189948269 0.0019049275088613866900909559567554 1.0019067441907331871839468191709882 GT 1 -6272849660194.6840270639843860433856400745767294 1.9687125029065360218940853089273526 0.0397237182798844045983965988112624 1.0405342424663949584308914726522202 GT 1 -9614808829902188455709606485625641119657908.3383846751634142257743204708702075 0.3111485422825836790665371041242983 0.0538252470708834189045543593866036 1.0553279987355417799937869101428187 GT 1 -582129739156738292473590217730582479420010.6321212957739707592579600680397630 2.1496546103465205446388423275959988 0.0192213950864337271107342880581002 1.0194085279516913264831815966886712 GT 1 -599483481357.5114518191866455179302633806112423 1.9385692159668866742763609402304030 0.0136689158387885574391076116991877 1.0137631955893608473729247535034366 GT 1 -15746379639892440776066169.4954169028211959238897316517645802 2.6714903186563488230399138337205713 0.0744092938046302355814898654356061 1.0803125782952058021651333391472950 LT 2 -61539224459.6215896784902104480489460754889885 0.2737415808106657238440583557165222 0.0384027464331648032338447558041784 1.0391595713129731050255361652955360 GT 1 -3312628664244704.0393800136584747307771929111810213 1.3257351786554850325747794899710660 0.0145951556502813536534926181878711 1.0147027127592126717473490220691560 GT 1 -45274191737.6007689451318296935567441499821554 2.3685863917293023121227899744172353 0.0677438385807202808146820503674637 1.0701476507530070199546978260864166 GT 1 -1784436108113481152.8520714750083761576795588961454717 0.7739781467424227720697433114675180 0.0580161802533644559405367266288499 1.0597671810430627681224396693297381 GT 1 -183982366368775138997282608245695969250.6283480870739515896003589251664369 1.7869323766377082225295233181751159 0.0321397449023863302712891576206195 1.0326675666957083016076949179348552 GT 1 -147508190974002637318581.4889688896617212407199977423311955 1.7589042327150403918266573500515437 0.0560635349347375801819804477401700 1.0576964190579390695367700730936771 GT 1 -109969690.5100327189702851730912862004287203 0.3505367955224791837573634570117124 0.0430327098328358550026676098788455 1.0439860676669595250662558701571945 GT 1 -9774122085068265877082288640757644650.4422249531185930031906835802236286 1.0388724075801954903172057656502895 0.0125467578336810553787473279853756 1.0126261330328862605662380303987246 GT 1 -21475477012080742954737302892705759807689.0881691048341781122444417021752669 1.0315433329421738755472146612950505 0.0819815089706598865682473979644242 1.0855377458310227578734353824048323 GT 1 -5837139623038639547643961759.2021905287896632306826288074007024 0.3654461601987218279592007131132065 0.0275864131259824763379523045843230 1.0279740641223396697423245441690459 GT 1 -21657.8660060358525152424908705131937959 0.6923592422499906348274689415911752 0.0867424796633792985754218772438666 1.0907373786441040239184316192048573 GT 1 -16885216918.8843515595279719066910598074934620 0.3698933077735287681244712029508159 0.0477287690294333186912007169314369 1.0489053782872285671947938791983729 GT 1 -97351121073037330250419813371.0937497135495926159154697155988687 0.2336773356558124488850035215985175 0.0987981264961252505147994881963138 1.1040259915271021207583050958127555 GT 1 -1889869917022689147269266744080046.5896436555325229598077576751073393 2.8787753035965931338650135347363907 0.0644390769626377332703755319622653 1.0666090118851091801437146032727180 LT 1 -19365.8412074665874751692738821682965372 1.8744228060979975370330127965857746 0.0112721350291564016037373925007656 1.0113361470324375062109496906081842 GT 1 -8671796876163326752674624689438332822175270.5824325793841545193486112408855112 3.2196673801345580179119606718419509 0.0756807447150973238861560164211411 1.0786977526391995298951771871708861 LT 1 -13342897300838.9002456979208833368774373449637471 0.0973284797578843523596016564989559 0.0811487998034432233357512250241963 1.0846310846473392293808696814332561 GT 1 -531101244.9391149586890357855495180088411786 0.7138201579934911069231451294484060 0.0925266005560132746487115677037515 1.0970910251801862058453157291248408 GT 1 -171.9680760460825948369515198205792256 0.0636838791637189476353849676428444 0.0434542867065064504174628755053062 1.0444266989871848177151137030172604 GT 1 -572610772801091054903457440407305111509667.4546286637749125053364421275158923 0.8808868768098052017105590903428820 0.0627425463238982838127063575532045 1.0647972706891741507491408933835073 GT 1 -3582689660606.4296989851150860748393403482479191 0.4109648215416703418472459787386380 0.0825077979178756441861094832664783 1.0861111981825816844797996847569446 GT 1 -79277199713863634522780732723.8240700922994786483238667709131826 1.3327887598229658088049035177018910 0.0104046941455499707196899732247826 1.0104592013928274748159525114857009 GT 1 -3486449318769364399864178240786342333718.2011446977687512392102059347977127 5.9511219085108280198093261545056407 0.0202702774344683003148415223879106 1.0204785386559635050273720344403130 LT 1 -4539512542731564166465587.8946492806765442704731310193176019 0.1546009811218316660345433192907320 0.0767925898871182202914320403106471 1.0799013567084328832513578915869332 GT 1 -91087240.0426587962539461277586824543699247 1.6105689554625888221468987956898004 0.0637379075928672488931472547860203 1.0658598284454560837774388396473721 GT 1 -89474247311870764960196264076463650117688.4548830700067147181555316396406320 0.2855280044535436767409334868857661 0.0801514288163230022152396286551964 1.0835462190260295883310543478799181 GT 1 -2937445325774.6924085846477186799873563307267111 2.7191773202636804789189795201198952 0.0501386788604713511603164952441786 1.0514392827912035673518457489924265 GT 1 -718840318985321079532507179680046616.3173278595072511435443813758335677 1.2149580266753390004388265339633367 0.0208081937812273742443694937515258 1.0210277350912217180238157450588713 GT 1 -1652802052596328828419310823.9974339432257828837759050583440393 0.9470358945899834488541199624296331 0.0372189829809551285249996803497029 1.0379292896998258138204951966632419 GT 1 -853.5389037301628037794886699583194388 0.1265177275869016849873405413421569 0.0709085462227829065503259084883853 1.0735481017657053452040535266777700 GT 1 -25600747.4688720020249275798408429074320748 0.8232939952639790583534740992648395 0.0188755541989279957335135083739995 1.0190559713959920225044787299719913 GT 1 -104655183649539121381260237717.5675840121049608058533133038139021 0.0912146156467632268007352073155223 0.0639607604725495431757219298342269 1.0660978808112090163554475838407081 GT 1 -524715178943996980197536852877.6323078738015721105718067857424789 0.0036413444849914249801415322634585 0.0752334757940920164272264206670731 1.0782139795934173351482665547386069 GT 1 -35053879776250896825041571612925.3220810046595924330310050047054733 1.1411776774092319799523942752183588 0.0022696886004723615564809306274357 1.0022722682477137170306638791844611 GT 1 -244446.3550419281330896087924519574678172 1.0427256384569471181005088244450472 0.0120122282765769393654497726167183 1.0120849581090172323542356497741155 GT 1 -1717609523141502505547978196633663670741.1319536881419831458442989531249126 0.2931055543613898494426278457567736 0.0392775831226167258424477513910164 1.0400697599390363367720788816658922 GT 1 -22900.0892597778307178398369816659008654 0.6993463046657571238127587039118025 0.0219982406808321742353279345727200 1.0222438100540830990139091913618958 GT 1 -26591604089092.1807640374474721122867866630645230 1.5821249611314565664215809723548266 0.0108612832067179036236556564634455 1.0109206975454641178437328606045181 GT 1 -3971910980087345.5215264389680934681294141881354252 2.1031768321849750862708952105262165 0.0905270557968827156752134690944462 1.0948900294564158352636600188827779 GT 1 -4384.7227035179854131229635176522127344 0.1272047414473813062877746989912614 0.0003356567760443980243518932745654 1.0003357131213888674699470358140185 GT 1 -955514418078090680819920219446546.8007517806095112850654734750706344 0.8433942386888395932298516442019857 0.0292643003878417490667613784707511 1.0297010417565816068034596018659951 GT 1 -316866484479347456765519385131911562389.8470085524374105770461041573359011 0.7792344901684221576442796919280001 0.0725748941415756377516040758213049 1.0753432361614950947181789563681152 GT 1 -194138886309996273381264477264.2570711142061492365902705241596525 0.4203564301204943428423915552629288 0.0522050722389690928136204553318512 1.0536171210550443785427582360810192 GT 1 -721753975288072257140024739064181166.8976787608418635717580172341013981 3.3946388638161710327237802508021448 0.0674848149672093025186147838650869 1.0698698433792829585928149610214148 LT 1 -1.5579300263374628090599828029826979 0.9403794663155517567605124982958118 0.0658050679450196155324465090361003 1.0680701558325261321965204789045727 GT 1 -200171151354921338.1945431619196682442670269952976081 2.7417517782320934984740712852035208 0.0258600238203169820048959074373389 1.0262002729551373690501939348379126 GT 1 -1760612799426841609257454.1481467459289659524451493258897344 0.4480003649904852884689989621048571 0.0823139184831404427971410399299809 1.0858999059749643566437057923435620 GT 1 -4080278294559321664968406814549651461.1374742667895118916745785067295976 0.7386718581625363096884083621796620 0.0509965327434168458992196472038779 1.0523428267892279401899333061195596 GT 1 -3.3032002171093221734039462742649125 1.8035805415894106375459492915146724 0.0973097187405694378623557473413423 1.1023757730377123910064791917979723 GT 1 -1.8156444707259415904760086545784314 1.4403788317828751739683411812693153 0.0691722786338988800934483992746553 1.0716810656961294392853824334820205 GT 1 -61095038799247368590533235883298313.3805009906940560278658928376554369 0.4219485220736018618720789983244966 0.0455988702658687368119229656447991 1.0466712244877615579132769811154003 GT 1 -38384282869753302265077433266085.9907189676447390121618629784422203 0.7693580740151375195462509505135291 0.0071603752111950999737040434196612 1.0071861337318780380168809004815977 GT 1 -1513393863291227.6080274138546142330112188677685211 0.0366484723263832069294297330244277 0.0016698209021304203951918799952999 1.0016712166069875072641243497369341 GT 1 -790193612052285457843627109.7476110117754125387609456004463152 0.7147233812488806675399764093789723 0.0305028439199372225802325287075249 1.0309777376920127034212067439954687 GT 1 -244133460303575043314412033.3653755900777227239243240989196717 0.3421953851153552425436766988091845 0.0689140607714551190693668990589310 1.0714036974490789800223307943619709 GT 1 -7133823658433362281236439083930251.8693146061883129931061083726308998 0.0383214953587772791130539780741403 0.0438357199492073947194005138793175 1.0448255396364045815075707722973189 GT 1 -1253825747269954325131171308785448.9019504822232244493529102322743066 0.2276459762882035014856718314288791 0.0313964686821674934025096620995096 1.0318999032238328943750120465306359 GT 1 -990285778413389369591490650227382240.6902153737937086710961698853719114 0.2521650572164300586176413758767838 0.0198207189049932037376840497075520 1.0200197841561170343854053729124808 GT 1 -20330194995057310729216331.6475668684657134404516481733768870 0.5703741581823947177885902578975749 0.0721152690096025256455163944742694 1.0748477662057527497853330005542790 GT 1 -21024635608347.6435245247501683251933809017365311 0.2880880328746403372299856741123700 0.0891778916080519687052084940717733 1.0934076714903705962526176562155450 GT 1 -4347937636504.5330086817287606703241588660261177 0.3600416123930535368131577742870088 0.0329995445898247978399423023808846 1.0335563125773763725026506193039260 GT 1 -1192574967912011127696316.1821191489276587841398083826268538 0.1001202468950958210870178226190228 0.0298717060685284935344033703783547 1.0303269544455051130312042304931659 GT 1 -227445778999139645950284996013656.5031821372449244086605357006073416 1.0459126568649031115638589153108421 0.0423302144520388312561908177496677 1.0432522519258658536468544384060503 GT 1 -4.9279608950136477096458047466774269 4.1637356730400570644490158814952093 0.0955526277865490461928933572911669 1.1004311602359706827541998416472831 LT 1 -69938323573657957468226100200.8079338951652476365469973411194936 0.9974281787451874402224680668760176 0.0315763271280112188634083160137365 1.0320856088721289851356469989018128 GT 1 -118575.6298619690926670068770541222642303 4.1663018445897044014228805444604712 0.0951800227302838706248611940930179 1.1000192752134069419180481377501242 LT 1 -58995608003211971.8731253152468043548048378124091765 0.1723781705767837049082774522659451 0.0065175557398416264661441048874366 1.0065388877451257757261181984067917 GT 1 -19567.9462668973999284881368438174422899 1.0150399963756979448102580972980523 0.0278505161423406563075658000753431 1.0282456963691483984208556510205934 GT 1 -8724490981570834046386092921.9672509409899724955148706463605767 3.4774888182017933539583049953386964 0.0714285723435164647732900191002892 1.0741079731390473025565354596553061 LT 1 -8185.6622212591610071505922099296132953 0.4989478971854984529972727267180142 0.0714212488704669709315089488061272 1.0741000863530100860978871346072611 GT 1 -176230275026.0201916716673938942472193280219730 1.9674544570456578123633206442271348 0.0803629942711170089606638158999109 1.0837762457882746848765012206341913 GT 1 -2215.2877634018248292133499168659486693 1.1329027921502007993377492422943397 0.0098458903177405520878353959606237 1.0098946816225331987486668809095036 GT 1 -9557147481088307706086905.3129792012119980416037592663127267 0.7208923485475391049963826518856621 0.0615346232110031446478958156041737 1.0635093157096277523251359510407301 GT 1 -735541557840593339589257918.5036156191819192958477824955935484 2.4530192783056856710325614696832150 0.0006126938845684356999577683218523 1.0006128816581689379587133462965583 GT 1 -4357268061223.2853035442094517640190189560557256 0.0419424844476328239976773343993413 0.0920538677839919289240497227168266 1.0965702278939809391109301804001893 GT 1 -267552471.3259946564085581064778122261942002 0.0091599114102119728223208656921959 0.0939570077393478605268156757843062 1.0986685212386806045275333801203510 GT 1 -41669923653050303468.9657839267132904898102184015263827 0.8341945250185514363338945820785102 0.0995661295949477496812043227714650 1.1048785535923679415558088592370770 GT 1 -294768829782063442333590331421890.3534330049091490960292452897616984 2.2456924409107395254828688369212485 0.0452803590452758655474605735411485 1.0463375512823381628717717157703390 GT 1 -55603091.0017087898049124345479528278231729 1.3987801863030270017378248414904629 0.0895387861998122308940800354676050 1.0938039795134950729742033405085922 GT 1 -3150855336771871083327141803329729658409138.2207642164973095433394416942737147 2.2908717923325477566907190559867320 0.0119493255319069228040095859560786 1.0120212926020909900567211817779748 GT 1 -1616722590340993556.4707132856006551330174646837204219 1.4403136294401181289379712455319722 0.0873965984525453688937195764054147 1.0914538831810161998527722834517079 GT 1 -4.9968311459327316315402823341372753 0.0007362761992965844390781315471422 0.0645742621231304265611376158284093 1.0667535186991362604929212122117446 GT 1 -141618947733346645196348124607364091200694.2920074743587885637438682660904471 0.1410368900770400620822930121233138 0.0595872582113069807152811352251795 1.0614364130793314353514481567966332 GT 1 -39418265769557365057948908588590604.3960734013593079996185018878421635 1.3510651656622983291019308318814238 0.0715860261599876600758902232470652 1.0742775531656017788645249040384538 GT 1 -564.5197196305975657293587815564412943 0.5891437897782803924380669212509845 0.0840307077038135633804457113491450 1.0877724385640579878851923487183194 GT 1 -47879494909921597331040.2142348861659129106658085908659328 1.2245395473855100995501473685886305 0.0464362836100706577104839019197431 1.0475490324826785207241362739535687 GT 1 -5039636816074891821060939165706010375.8287305418146682354531176107409976 1.6396670767417861258349700349295501 0.0276772543360045592158156674492513 1.0280674867715371567777767403380191 GT 1 -1679194534356545826423.6848691212871053565684415190508303 2.1933014075870903153608868527404679 0.0849236335111088971770036990590691 1.0887477565456646438634886903254412 GT 1 -33039688574189.7875805760595056853749486557609445 1.1406180943445862464418081515576221 0.0906071138642577903506203053834243 1.0949780602128261196947222778950258 GT 1 -129352336511895560475282379.8786587131328082542097916716594562 1.2011140141969450214311347273736254 0.0601397280852815053974730405985748 1.0620240616663683931345089883527513 GT 1 -1806242140260.8184660638303481599383773271538202 1.4085806580846989301886690337151112 0.0391763894613783453434617487623809 1.0399644346854247862608426552746646 GT 1 -32975984589215367.9922639528250340058052556553270547 0.8064247720514702966987628104045579 0.0304483710831230434112265858047236 1.0309215525797556180722434155381993 GT 1 -6627347509905.9923010170272157050714137438688167 1.5569239134875301914200974985891623 0.0224667018260250747595072619162040 1.0227229230746951436114773308772936 GT 1 -11433529.9811154364018274554688468029345193 1.2499369500075041742454578638875332 0.0714799857700006841817162879110508 1.0741633429774276115392007025867005 GT 1 -10875841700818518265482.5996697964938445164169662626232923 1.3520754123109799630180060267602569 0.0514748110568249464510027849902270 1.0528469333511751424825147481939523 GT 1 -6617778441151171561930.8130011582589416024151339466829232 2.4174553732840054325930870336218657 0.0861849697442234637580824452313706 1.0941885491570975976933308538265669 GT 2 -182575703826584023163919970551918582.5242614443882449369563323122704482 1.1973698439232587129326329238916017 0.0968312094721694612266219751505847 1.1018458210751536854622737521930107 GT 1 -134149.2660085304783447367855242649569550 0.9535971141147281793182868272289005 0.0946462342565233393330774521287023 1.0994295102902410905180839078332516 GT 1 -317003350190048136598864876618150004974.4543775994230061796671037720861315 0.6461788787102002954770515223039210 0.0376529128063491524926595633367697 1.0383800958895991549606717692402901 GT 1 -711916870637.0187637573922382083209173734807806 0.5834333088701009421721358054961034 0.0273340315109339903917919463746793 1.0277145563651695565877811931071986 GT 1 -4706396990798845999025458.0071485084461161903768760395445500 0.0341208553871897967615219328464632 0.0875923269165770899218975626857814 1.0916683788271006903511322677152478 GT 1 -177125751882135534834.4772096479128574252647451119219647 0.1199435350401781947166733927810114 0.0959283263157730580462941303535784 1.1008466366839303164015948253536426 GT 1 -6309203599395013563539144935.5712936566249633303192853825482673 0.6082553279001531160949735075973615 0.0591207624883794308516344382139939 1.0609404818388631898223270836152809 GT 1 -7125967246002232508727077427377.5315159391507001966581422360959378 2.0930793101753631862200053824563776 0.0441305120042433423819306682265781 1.0451338940831703638261903338337936 GT 1 -3450260081560559519595926230799351856.9339380150026801583314253057065258 1.4426992308779752439644927556756058 0.0938799592133419249316592793646222 1.0985834863663790771283251991705653 GT 1 -13.7928956626270988852740127202516232 0.5675295941673169648670415901949906 0.0725380757269094029446699805042504 1.0753035373398709446084257900906956 GT 1 -159607358957130866155943581848494.7060851516425453501455213055781781 0.8121183943346132693436317187581566 0.0477431800152455832757368946584353 1.0489205116803075622695650073223406 GT 1 -1145984933416047439290050437428782.4023273837137722621179652913499606 1.0726251400267344614626667964485191 0.0398810865304762749100462299385811 1.0406981339938662906520629695792285 GT 1 -117657678121087047648851139874844589569865.0129285728046576381827877429952162 0.0519858570386445450893766554981301 0.0662900962282178946710472410769593 1.0685894845315009939177647116161748 GT 1 -38491038628234856699765321136228709885734.3484101411905741765367208369300998 1.4376797639757271993888750589300327 0.0640768753780258942142175148104432 1.0662219376916773684345748529294885 GT 1 -340062868797741221975393488.1516617997384471419124113354893082 0.7838569446397049249687031246346415 0.0754539797239514842637185497031629 1.0784524508367584276173734765123171 GT 1 -215851117841369328690647.5217967001837827667018395564938897 0.6558187424987469446629065432905179 0.0457520122292358126726686954307269 1.0468316960613904541832574124208367 GT 1 -6928497468510530412452667183977.6662592090728366500462672769147192 4.2721484830551183850755072158342770 0.0437935658403446302984059185572384 1.0447814539279628521173095824825659 LT 1 -27033584489367783.9426656379270831181711391362855220 0.9624283130984749608432438915029348 0.0023727402571714194392983952902967 1.0023755596660349782187550293246591 GT 1 -2081.5530978462198545923122295421154604 0.6531911740883334258808671478577261 0.0309329925850606818843797246781617 1.0314215183831892649784327858079837 GT 1 -195658055151.7313526616250541954278776225442902 0.0187858758781723247743817245594886 0.0394491149120337003854551773883712 1.0402483204693859394213211191892315 GT 1 -1969136.0196830992939777107225424802000823 1.9615470821685666204522269870668410 0.0298095035131658533132078789313215 1.0302628386355762312595768761000978 GT 1 -2.0814595475090825755185537020745343 1.0459147337892248595242998031613962 0.0301745004164675863285161236858501 1.0306391210047398568928313771469707 GT 1 -31775878209780.1293114921982727697096534445978965 0.0981594100524673553754631334049362 0.0179798028417309958977992315117872 1.0181434034682306049583880142262754 GT 1 -1.1129276734669278754099195858428623 0.8133466992531250204873391662650991 0.0136070696199412776527848805308274 1.0137004942500841280954438259115164 GT 1 -2136.7279592933821407516316268956001364 0.0487158630032506441478432136512937 0.0216270082846283366877428370639532 1.0218642995329386296526038360473894 GT 1 -1870546582.5061707075231914540960409511762680 0.1652596428143801741392169700713563 0.0376928164339895145589744157464306 1.0384215616512710729560335119349520 GT 1 -497990467147192614.7719122439297689046947813340606244 0.5162964937038023805311730753655006 0.0908274750330205807463272132269238 1.0952204063704028053654399378204920 GT 1 -388020075181.7787384777486554809577025754575002 0.3741808164093889587683613541750544 0.0420907475733706777983232514769745 1.0430022315663104716445687438393526 GT 1 -168504791304366680676290136.5869188759961035014153264801290046 0.0503772602035319955682185294738682 0.0203054321331932227192016779780266 1.0205144213373208313412464557892117 GT 1 -4341851082956421.4166715050553271117069802835789656 0.2184771750477334276440927736427824 0.0941461403175577951047122741762239 1.0988772887286114297915608968040877 GT 1 -284176996853780467635.2535536804054985684681736512573833 0.6105020236686960703287943104474151 0.0184893968122133240942118427863976 1.0186624622798711837909667423979513 GT 1 -139931092455491275802099567122246783548088.5044234437692254078563102192529785 0.5412559139218783530504517558815077 0.0016217542497059339862939533148925 1.0016230707166455796095304136891654 GT 1 -1371189016743973134996026618621.3668447946932227042603998326840585 3.7063077748829116364955999776968615 0.0834807476852697240786927508096266 1.0871722055785118481336511848623662 LT 1 -33172058558755895018598147282113.2499219860890587115719415676075079 4.8061876032173201054906636752821840 0.0966405482092042199225271120221299 1.1016347407729399311641195307780027 LT 1 -484899084115909142.7029221668143965058941041547161641 0.6747584263324000581488145230174620 0.0027314253704391722810117413452255 1.0027351625194299325637829240083830 GT 1 -1.5947375350215315472600707690823686 0.4703762910769426652815112115914172 0.0514056320539746762858105855672246 1.0527740027837475743580005503438528 GT 1 -16.0490216094563068137427944079843794 0.3379998119710351650624554451456653 0.0446454942242177907297694780080522 1.0456727971464596433688687576625985 GT 1 -131832719517924447885263115456378891127.6236055991884378645499919916233269 0.5212240718376082199143850151821178 0.0252922549541265393287421982589820 1.0256176015888011609950189313486833 GT 1 -273.7796020098895683721784313861046468 0.1339180060614121877586840960808852 0.0686075838917119714144925544764435 1.0710745909318073116271178953276255 GT 1 -4164457370961184246436358755.9697369650498582988604774893389725 0.8173046993277649960827108812110672 0.0759460583070339878965342759687034 1.0789848305888176931779933941183275 GT 1 -14315359457013345684.1831358330389304839736262040828277 1.5435064724765338989479847393131604 0.0164573159854809002298360820522724 1.0165942419783407308048473318230569 GT 1 -3926320820059342848447068.3042042190305553292237552609239255 0.7155197606693960740026959903600484 0.0314689234372636152736020876651657 1.0319747093367742999962456658702063 GT 1 -105941846549471431487453370.3159713222949033654106880264391053 0.0287470112007461106296300496367153 0.0774141422032041700389170813344001 1.0805748366158368547692959654717320 GT 1 -603359302498826993253.5764135767385187796704627251685141 0.2499481083406385080460122699025264 0.0170841677183212318098031185681134 1.0172317858155263984760526612760980 GT 1 -336429559011270723363649103595897119748367.8602083888628768713912664783911656 2.2102173535436934479944538064705846 0.0447209218547052617590935784824940 1.0457517527674237217751499750760451 GT 1 -17855346539379177831358743007682.6520556996722950736830480577471880 3.2052998786887405140959315408395498 0.0739308048890502514762551824007732 1.0768063223858657353115664609751322 LT 1 -5144554259479.9770762560386756808573210732097257 0.4955280952365792219897130851074188 0.0814378956653148819856449322370527 1.0849457616593585519538730059253684 GT 1 -4695115175884.2566146808021223842737473831429109 1.3670672901882975401094846471525012 0.0399387266943398610903307621017299 1.0407581701970079363968886315439247 GT 1 -122996469.4088097665268565350120124438579848 0.3116695437923235091698327339481765 0.0100020532017864430990991393080987 1.0100524097968504875771488977020606 GT 1 -4214116124690241.7267922095656534995551672054650385 0.3602058472006515166633965432755846 0.0431640858552908648081639033339210 1.0441233608038561274203325101813095 GT 1 -5227101856656696002174549.5111678784680156214967985724068415 1.2682610865258020369830130201017516 0.0815333257700894292064401311089818 1.0850496578051064224267212230976072 GT 1 -13380621742937170829114858.5194718102432258364584615725000594 0.2953524106102032649110926718759207 0.0474409038618134776300395241237627 1.0486031307161829748794323081318838 GT 1 -8530470286.4993589488878532276150997516836009 0.0077248573909469142582832345069896 0.0436198445436960856649805675865020 1.0445997928224531959065888890373539 GT 1 -283437432971898108835887.3546917961937483793765288454518966 0.8536765156788049165802895426262400 0.0395232422539410438407554531899286 1.0403254951443268761456218436126118 GT 1 -14498783.8658460909559041380657966914555956 0.5316997600630469708984057195856187 0.0567596118635785241474495553919148 1.0584341103445044323535003194512099 GT 1 -54590745477781108155.7674415935786426608393323763245579 0.3094711901720761124632410803502985 0.0620654422781177821669618671816043 1.0640751002969237908226915085124438 GT 1 -22150531816340833460883385702726016235611201.1768091061232387980592111088252644 0.5063037902680115929381271487466911 0.0377494243114616814158705393408082 1.0384803885451029503954432576979519 GT 1 -14926662198248840.2620093658922119012113507582561569 2.1847503039750018054360618744929124 0.0232406513738113010311353568887908 1.0235149739372049417628947281619908 GT 1 -2623608345519811.3386276197431535897477884325073559 0.1023483009162274002800978547431587 0.0109233268919353174721044267651831 1.0109834244715152304004232286459835 GT 1 -133822268996099161.9337992115570382061097420283429063 1.6322760758150073704392384465176512 0.0517894207615974848968456404710699 1.0531786713960156159425787175705589 GT 1 -107438091176937554147591000932640315.7720335908125359343346230818564941 0.2634355354749400643425720674068392 0.0638395621036930351599132805922210 1.0659684091843443154620504055557497 GT 1 -21224633631281708060754358975614.9647971266708153343452905570674766 2.6182609015831897216198417081808575 0.0541554225875643776554435011580163 1.0556770179181027023843840178560970 GT 1 -926598666041894941749283330758.4039017002201553389506022025755657 0.3958604216088412943775656028898868 0.0740450015689402949417944323210290 1.0769296433235003212525424770997125 GT 1 -8.2591521599437238115703648794423774 0.1521072137225036541235511480882734 0.0210319841479068648555482810391533 1.0212563072078910824247369095604064 GT 1 -45999774222081857942.5190091153427053175066402048178795 2.0691299786757714830813224019345563 0.0047059704513015740149515326452863 1.0047170783930438859275662815377463 GT 1 -6405909.8101135106664232225978025202356467 1.0186490711226855138592232984418544 0.0928836930767877191744922557560030 1.0974846045376917123895064286271955 GT 1 -660570.6922461915817973005697126039924690 2.8807008054924386845650736271180608 0.0595928628453343458690950183623806 1.0633299554480035019535403467891876 LT 2 -6029.8349168153897606958977137449192052 0.1433630959794989035675131497256412 0.0346013711283964244708011957331415 1.0352141760264821595135911369208997 GT 1 -38571226893363104996677207124672250.9079550722232238285035320982960757 0.6832944210443420128453434262181805 0.0902788011532877421965203898183701 1.0946171013073400941258720296222917 GT 1 -23467.8406557576918996258816426498481091 0.5700838960016009172985605326152275 0.0585924825176462855847027108292821 1.0603791646185169452314012332529550 GT 1 -15343905245729816.6070849291443579050431130186823636 0.6241190024114470188344891584537353 0.0186537306928761327485184269439270 1.0188299058498528172341355364615610 GT 1 -51566.8188454187911492511171613650247140 0.4948617206775659459236700580966241 0.0580300781290564967482583298442665 1.0597819349888580189943002978248655 GT 1 -28293904176502556050561241091644901.3417808962018144313082922609094732 0.0237856336172763343762257265699958 0.0510776335326376345863610713545132 1.0524282893376890906071820912738218 GT 1 -195.4850400057554583409073507999603194 2.4626609135544005726398263556933970 0.0923438647588992139977588547265202 1.1015834826206390979583991512061500 LT 2 -210069422034243050840865723841.4703008529878503640107873287063115 0.4832923756282287034307123363304697 0.0421106334504181031368068824065867 1.0430229914487440088344597664731274 GT 1 -20493574456487435794420270.0495230871254448238622041065871386 0.0438037314860226461787646670659800 0.0054737709206681385480096802331937 1.0054888068988157672331474790334707 GT 1 -2660157895017409117.7052228228642770712367580889177052 1.5470268664425794121507378300719539 0.0152886325480682448302277228721249 1.0154067087187138682649700000133001 GT 1 -1367.0715468874507202323102674266715884 1.7430570238511597995704168383535872 0.0546847130585816422431044301269927 1.0562367701577876249529295259971270 GT 1 -35422.9102111027953502402088027194430553 0.2483125703268920357032277813804796 0.0413420784561855728701824144799939 1.0422209710235720324574382585878362 GT 1 -14477934641964421759664896982.2570271174893021801707234464168785 0.3328991721888312624899795040511244 0.0717997472416581789444073376563839 1.0745077798648834122538257468446224 GT 1 -53758825524710585931343014245029765119.6592593124179112332136251390905539 0.2104030030123278569147148202138442 0.0708480097264013827552238711009035 1.0734829472278575219478867482536412 GT 1 -10426105023495033688537203028.4391540885207137464934040233132405 1.0299086325331891476438494699987865 0.0489364881680843842099649520184269 1.0501744344060268041478591650244292 GT 1 -15960694965700962019807810999179.6629282925286405393969444104376741 0.8663658680954788980601029279711743 0.0293078777778405075632861979917570 1.0297459338607494596862060711005350 GT 1 -13355.0974098819560504618101736828020558 0.2381085352470269647708196200769102 0.0602253430124797921136959392510083 1.0621151590661251600413991165617793 GT 1 -5295047913389905501742197.1198451470032409584918926843066312 0.5254462809049232310200855771981977 0.0009215351726591835564980707948448 1.0009219600472410434561346084412765 GT 1 -702660972423649.3629085849448346645657343187050002 1.4264726609575266147063812539943643 0.0524386737474849074677359674954178 1.0538636198430204986139654969612398 GT 1 -15052742365866922045785187078294.8408424303920243299852207952372290 2.2158369217738214422056653042742359 0.0970728915633180894507778177790877 1.1021134503773737287496648594220123 GT 1 -710924795021493338489090578640503.9011734683218022261283899275210152 0.5640862071692322098817261672904548 0.0355727127887884636594889062144814 1.0362208385801605903882761939475617 GT 1 -75761520193836876970323.3444167754683226556364724645980047 0.3335005978922228105067158859401709 0.0473541055167998020387909950356417 1.0485120136495145546739615791703836 GT 1 -285492560.6966252121384445587577076904638181 0.3191030750696498765371247914591183 0.0991683445951188592199338365129224 1.1044368807788980719290776550376144 GT 1 -2359597380612998.0397293923843191228660165102336145 0.1980949134032045626757004217194701 0.0884551693841899186254546092880577 1.0926145027313441901838824165105501 GT 1 -130886991844808864196854482102234737094.7417599041594946916038140064344524 1.2745774450712105836039639698974199 0.0724797142016383772598390836403529 1.0752406132590108546005866552093128 GT 1 -287.4320924927067362862850095307084948 2.8892057811690689727630696043952584 0.0869376666659886732204922559068767 1.0909511276245580554416570366082765 LT 1 -358329929190575449276271906285.7749756011365397375893748156910366 0.0795772461552141813727730811866195 0.0238327684550113345819541614397387 1.0241213634506212569577764218907789 GT 1 -51.3669819239688326705429758344519881 0.8173884343369382182636365457164097 0.0478563911582727389628134861634941 1.0490394059437690331933574783042293 GT 1 -2498822075444964866458.3582444982059185292017375261253396 0.1237467681190895548162356666371039 0.0197366128938798212711855175935496 1.0199339810744669526596615608449111 GT 1 -235308867364028255170384.2517268373716974062846748910346008 1.8691911776227145821560546101050429 0.0968419548240086747654823814521743 1.1018577185364845452700048131977740 GT 1 -4420023867911805174315551651.8782274921723704906769596302923916 0.4058750745046795981974582438909800 0.0894620571535489298465526970297088 1.0937197081440892728386583757008069 GT 1 -426923873605834678098578.8592010174087375727360525748987430 0.2913804286659304376509522486264745 0.0286864860820708013267815796377551 1.0291059854430800555846716292071559 GT 1 -2087062430474147479067384356925419351320.9704672617272650210175474016968740 1.3251520169328745751373856300773006 0.0052653506041476297161378772413532 1.0052792614143211436293007492030793 GT 1 -314778528255111059078426575.8348607106436940752007699603855167 1.2417301289390946962789850735348359 0.0932142170557785469601302260642256 1.0978490387422668014629575443476914 GT 1 -92637.1112922931793397668884458173548166 1.2961937156284853432068786632686151 0.0585594305733582216308381804189584 1.0603440561628520815335148253730028 GT 1 -27172033231450974.9549761233487011691254477803929368 0.6042571453942850307594080864853375 0.0406150626389020745993722288962556 1.0414628900988154572321150998310719 GT 1 -5293816095888478137450939001515305306368018.3839375381449671547664388508996850 0.4232088972438934901999286098635208 0.0928725943358213161198244762787897 1.0974723694218806034226574971848075 GT 1 -13892574851097344.2913069613793352676382029282568835 1.0646558905446786061829641784718381 0.0769748922272421087903553701894577 1.0800988424952450003106457939869923 GT 1 -893883630062958597763.8652567288449246197676118543109807 2.4448103626957800298543875222636097 0.0807152992532156781271749985784196 1.0841594105365816483395519491987345 GT 1 -22994639299.3317747492079284424168892067946329 0.9151988301488914434938130410958749 0.0138168025853113946063033070503313 1.0139131430429040272764151059091614 GT 1 -153.4549707439622088732839080084581186 0.1355422728313633939879364817227817 0.0260427708422175140628131175979184 1.0263878888727988586015726180400800 GT 1 -261207406343087504.9264319158558425677771138416322060 0.1291591654958832552306834818971268 0.0971000443662523554694787244473734 1.1021435228062087562549664571585329 GT 1 -11875016619862817663589335403220194701346.4685911534830076577945382023708362 0.0442745074794734643029595858711239 0.0851165240032621959034273735579441 1.0889585704535869884211569670036706 GT 1 -1581834901451111156524681911551459506259.7798534207329666854843727565910042 1.6921234118107705007417653225937062 0.0094149527344968370813253683117812 1.0094595535658867895141629299118558 GT 1 -18354908500281014761883583036975714514489.0691867587600510936213661852895993 0.2844817789252066600652471279328970 0.0553646044165012565710261076554179 1.0569562507172911587355252976661709 GT 1 -1849987496722645079231254402026925276.4029487310875594691508253874813838 1.0586484706651633077784624316482038 0.0428240978748724141690934921228998 1.0437680986460112493622976010674547 GT 1 -98821483.7546398225428599347215126685133590 1.1084886543959389384954530179367995 0.0593444138737655745307504118213725 1.0611782147616129965675254258653795 GT 1 -2.6368254720836597422507030720805174 2.3325714030139190301869374073257104 0.0744690767665656240456210049338093 1.0773877350649271525844227118638291 GT 1 -253039154.2464133620891038136738191155244335 0.3504695841608431986767754779393276 0.0562042166551864277550283664067006 1.0578454674421342088037132635621589 GT 1 -5774365702.4417949412178330366886719556699592 0.2947260585499786610604906492136592 0.0520115518109366271646885845107111 1.0534129622559330035993279435377662 GT 1 -130918705815564118317991110854374001.1895257798914991870166542694068150 1.4923625337608389930509731230937120 0.0425418011719020284875301834267367 1.0434732154567110495657486021018989 GT 1 -526630728762628675268471333241660158970255.2684308124347536905381628234692210 1.2327248028176236475154793123592462 0.0460419431826333028901453365962210 1.0471355741006104094843447750570900 GT 1 -903982987825353792.9878168399056238388077041665743958 0.3938604712210372356873917285489027 0.0453747085414355072891647767864722 1.0464363804615343852399059613106735 GT 1 -4528842006671936890520789781.6214405415642272135208818173981777 0.3193251152039893332337777776478017 0.0530030412601642073376757029869052 1.0544593972691820103979777502080026 GT 1 -3220088446908487042865444528409734343756.4118876148107073410619871213457132 2.4883656320694375877709296819798962 0.0688774926972036203782443400150009 1.0713644235704492134533140287773326 GT 1 -14995.2115201460846343481864913499523355 2.1345308248692888297135357944011688 0.0795144410077828327171937103430586 1.0828539666534486997573263282856002 GT 1 -993878483033855.0986002064990156121877817938346557 0.7336890406646602934184521403646730 0.0702261075773952882926859191937020 1.0728138488221633317639628158470816 GT 1 -520637425.2468437494654468010497978037113002 2.6685373033971287928163658807460817 0.0874853405059861917124220931126401 1.0915511284556151673002850572638413 LT 1 -57.8178312075272616432964074147375307 0.1314804352319754929592560880796298 0.0613320090469646613807136670331040 1.0632934395568650269557784930261094 GT 1 -7954.0590898926220970819875015576803374 1.8353040352598448240139741571275224 0.0835034620293128210157393970854873 1.0871969891555706390443138138872288 GT 1 -39410926563700677.8846325090701143030720450655578182 0.1874513484870863851109012105571063 0.0107742367270446764821312694405511 1.0108326991198893878202285666845846 GT 1 -60155607638211734790450.7920545923298431021504804852499092 0.0489807452230461070524100431794487 0.0621718989622407933742061490095768 1.0641886079240643216134306445598811 GT 1 -31508356475377266518469401599123273149140.4463218129717503713122368689009929 3.5428962048197568025200362202947203 0.0209716491331453686373773355796413 1.0211946778649503723952678545952891 GT 1 -145.5576372644280975830864722540254075 0.6636257292024138995115548073059539 0.0785668742911675965424552654172206 1.0818250756301063449004695683682679 GT 1 -51173266140502.7255334634236732265895628232381967 0.7174322655343745407380683166174394 0.0173349961530500852125995225690232 1.0174870064927735479446867251268152 GT 1 -23881332723656670928893312.0266562576116247632904349587650585 1.0893395164795212800143392005232902 0.0565739581988657258243124628750962 1.0582373043141791027582427154211048 GT 1 -340168722971523265026846646.7416151071763127950307034879076589 0.8109311087847199628142173201947718 0.0119384375213228244985606947666043 1.0120102729743789212193746517967169 GT 1 -18211573526100562.4916699887990623604341542809548651 2.0876931238014018025391466882528338 0.0553028410234953080279935799252667 1.0568908695403470776067587761514165 GT 1 -203265713811694442570923777.4289329198557973601273384439865446 1.1994125358395526037279475541971827 0.0124933520907891604630561196098261 1.0125720501695599882168057581105387 GT 1 -145369927152631447135341813475260204216.6040254510502866452521148039400031 0.5860283985777401067932168659645038 0.0545091047293384457583335603309370 1.0560510204692154551948428644136838 GT 1 -1675773282953715088578743280083.9375229561090873424042763961246681 0.3946668033044901792077390785878251 0.0016934330450197755768497871410118 1.0016948685235788799918358097717686 GT 1 -5974762074.8499049413548959200090693731677818 2.4502157079524650260664916857579766 0.0923439633936925929488323370318280 1.1015836018194124719989322547658575 LT 2 -24.5740049901292990784163796065605623 0.6409500928304341240654685011783787 0.0415652597465661082678891940091069 1.0424538041002784557559663385081079 GT 1 -457208391294.6089171262486096242779844045497686 1.1976385604131381105088893066582042 0.0572314035256939183930419763496465 1.0589344172633008298454382238399974 GT 1 -1.2088584275910143495436469388955831 0.6955336425705311286583507655840456 0.0206154619372458572807442482546599 1.0208309269911276522734320756464215 GT 1 -351681.4030851624757634170711669504798023 0.9767242810109972076022526979794334 0.0463652566648861562632470587260127 1.0474745494682285429099439973948726 GT 1 -86605152167.9575421465938506586955682423619363 1.5577113228726752017045556843854003 0.0550969267584583782357677737486435 1.0566729247472198031504592983136366 GT 1 -6556973867143021129957964779901579240721.0277835942338878510952616829828087 0.1616483311125428778048161438578708 0.0755875328881054861562626813247514 1.0785969139659170941980933459228995 GT 1 -68324312584568.4574898423767874959549776550697738 3.3406677988242923655602208364378942 0.0048691330797345928319240144611348 1.0048810259291583497835282449101346 GT 1 -187208059290196.8770248175083315578372615824253346 1.0320655335967691230634273802128660 0.0107420223767509435974780207626942 1.0108001344344884479972503015079396 GT 1 -11823994289280544.7251556943154192192135453409769993 0.5169504595478566742359022843211300 0.0209523738817709310722472540815384 1.0211749899145320858262403825479841 GT 1 -2617924959293568226903227102884650249964.8426235299039858629162899493433407 2.3351923473854305254985006519365638 0.0749594555353759834299669014254675 1.0779177105766519006399058994748759 GT 1 -6622.1730788949045714251419764708749927 1.3892744083207040297838064296423172 0.0174524703575629978360313948392419 1.0176065601824136709694214973123482 GT 1 -49094856193291.5979082509848126493270026820061297 0.5202765900801571693502553659225143 0.0398623124593972599692343633743219 1.0406785802831072834802722134342345 GT 1 -576307025160740965356075733883321690.4763614561849216269367169601583994 0.1548256968533146114153050227460784 0.0909661056906986886878256952856205 1.0953728980308402690465634043947572 GT 1 -966194990095332711484845697364901.1205031621493981507966503939891180 1.3736281170199608960582945441215876 0.0282791757046713364530993201108445 1.0286867335797906366051525348233050 GT 1 -815869881188972276371562652919273941204865.9833185176410199241342655965229827 0.6852027659834331023661439246886118 0.0659844424600648458233507207897909 1.0682621839970134478513533534701426 GT 1 -1872877744208084980184694697490.1299956733962512364164612781502514 0.4651337522361704780465006168322131 0.0847370167762590500693751117194437 1.0885438416426431976796293401633360 GT 1 -10786315855727.8874556922736952761854945771580623 0.0840715289203587139387217380358888 0.0327453720812417933205366782461901 1.0332935007980648885976796093379952 GT 1 -86588647207157612211437169912562656496.7130649564106997696402521404616412 0.7032882861695998642722283317654240 0.0931649530137041347717297615112355 1.0977947120150110100356295502921140 GT 1 -177416093.4337096540653868265822592393371415 0.6465649067386465311312110935593716 0.0853510193912780113352613248083698 1.0892149150605965946983880943059646 GT 1 -45986196586033671404158914996861039.9926911470381116244999908010521540 1.7831245165822031071360242470558751 0.0131176431093544253380408050797401 1.0132044392659871920651475615313229 GT 1 -87285684521.4224978613412446335551389808865758 2.2910361977122705281144134806958725 0.0726474651544764411922956992723927 1.0754214892214255487371155322146816 GT 1 -720581253646251047438166648953790679795.4292224513077841766943284765370873 1.4538154171458866481125628016657969 0.0512354610395257986690433015975321 1.0525946260571981267719132780499788 GT 1 -18279773262305237096549072937446.1012556104071648277500897791523988 0.0347259265280410725194081570870574 0.0762083035689891115224490710150304 1.0792686695181148468556014203446372 GT 1 -30188561295371324407575657.9718917718149965556219366434942537 0.1087618516601834893766582826509079 0.0047535619505828733627596820253513 1.0047648960587131439665634859827790 GT 1 -596386873476920390789309949562990639705699.4554335420665799870406540076946800 0.0021933127637824581655089707478095 0.0347796168891658299992320216552723 1.0353988274363870410718940803191188 GT 1 -57404845622781901582533174634384.1318553692978305106351700330571627 0.3175103562124026863418031000995698 0.0886725195025194309019908844256615 1.0928529726647942075000295828275991 GT 1 -950704.3601976049332116959686536354667302 2.3478978460459346153577840976722222 0.0234428395188274411086010107545671 1.0237219942995430890383470102262273 GT 1 -41871662544470.9042790008105801652282782003088405 0.7331958255039082663277223700347723 0.0156098368661758781678166790024530 1.0157329532682887655181494633254415 GT 1 -4352438873.4882363074066764434714990647335284 1.3562607582040393034957588207290156 0.0675021073969032038503258054066456 1.0698883874097798567312992250994129 GT 1 -1382835327.2351083087796373386366314918031827 0.0810011753554289488415158276385313 0.0443712194360286058148256962822332 1.0453857461899880803853240177631453 GT 1 -2585364464.7548274339963551755878433566169716 5.6148951624758774946575153274730530 0.0548491467421393228886930427455483 1.0564107311512969056374819356879069 LT 1 -207668363142732947020555365295604.4948701934265766175999524610624705 0.1150976021043339659411549198008846 0.0504206016133109390106084082559405 1.0517361309655231470795429721711735 GT 1 -924609.3112480665144838049363096310657051 1.2980410385325888335875544936393124 0.0660219976411975188248707304127289 1.0683023931090189182403027711093349 GT 1 -576267612449925605541482399764806.6079303735724202715815471779238951 1.3433527989043169687324913406328225 0.0290150812979395983842725583337184 1.0294443425291849961923863703571199 GT 1 -18845537470.8236985316276616817369628928133208 1.0452054000156502621765906230072275 0.0044737932023147461254713881010280 1.0044838305630283021723311404189512 GT 1 -26269604981226259167942.9555182558428153881667431689996456 1.0561182179306156129502630283020667 0.0992502901216199598131396437520449 1.1045278514429343633483852661566302 GT 1 -144934502518716895251727145654939389683.7319448461995373018165319042083348 0.7469644886900932208918068445610927 0.0939952778091637723391737560063614 1.0987107608215750166969727496763287 GT 1 -265630285851923.5620876819737185507894667918342911 0.2724624695551051875376841325615159 0.0290070755442585636697240382797064 1.0294360975806555504498092690257938 GT 1 -64469368.9046838589218186728176188370311253 0.3034054097450546032775427930705607 0.0742575698362628791447003826605345 1.0771592361986361406054779934105500 GT 1 -988972924401631179093010553.1836925453752638326210443152214523 1.3021461059069069137508256704944720 0.0564359262269508512480326181857573 1.0580910057501094461457556554446162 GT 1 -1.2002079624739918784696583939703442 0.1904193294457364919742107425494730 0.0258930861535466715562963493875530 1.0262342135541467891502263686117534 GT 1 -3565689577126988691.7099281223970389420143761091795726 0.0829283263249424395105598932606322 0.0509177045458007829123776245793182 1.0522597660559249271514009576096072 GT 1 -632083683615.8122803659368954544315587053294078 5.8901951728709581189379576768642146 0.0954129175838464041242721050564943 1.1002767019252150623182821542070358 LT 1 -632535248023586717239.0580311882154574099564684549087313 0.2070801947178793156802252657218526 0.0474525600170155940323889308764897 1.0486153674651324525066570685929857 GT 1 -125506606922535134552.1257903684638765243940718676374119 1.2118090090838004798240482416086453 0.0702019882687986452168315807712924 1.0727879081112458143869103742868998 GT 1 -6503090070.0676046211580774737922185113462158 0.0150103848537357441358982657239543 0.0591153279263379009880494694071551 1.0609347058092413413699305407372534 GT 1 -995684334403376568004608347886287039024.3780562795173563431506461791962042 0.3539278132780815088523901844839737 0.0595101650161146745826055598424166 1.0613544383974021237542955442069113 GT 1 -5626069441879218039343983168552671.5866623500480840152289280159017551 0.2531609995554638862311376202812142 0.0578521058809011899498182500930800 1.0595930166025721702489380566567473 GT 1 -282890978716153208807090405917649012820.3156123004044666881797039369411857 0.7075238559698762816298877998053515 0.0427782494241720915066681048378916 1.0437202000804813528410654213262124 GT 1 -315019235749833599804.7341095654372005623304386385113603 0.9695248811747570292045758062872401 0.0111297955284534539886974755352267 1.0111921951312416474524546554082510 GT 1 -661768190584784665631958864823667285867373.0709368763373887874487452240853467 2.1490336988076553569596067370177556 0.0922654666182094082895459565842430 1.0968033072445348593437482246107639 GT 1 -626864.9262631930889559331708121606301447 0.0003920719648060224891015179258027 0.0965598414202815792516107075766018 1.1015454040379604859363077391539757 GT 1 -1141005260056587716124.6624831696430356451993588482535952 1.2690011588777202326965806592662632 0.0967588983318846111616402319312316 1.1017657604636215264125990821139810 GT 1 -8838278864269525383344350079951475.6527226391024266335142104278402416 1.5126392618292844584956574682750066 0.0062042707721380831778998021700309 1.0062235972392687835902678624637349 GT 1 -180522942939.7847080712650178769939378944162402 0.4524706950759122391113938919717507 0.0940145811134519638799018801761474 1.0987320670128740977141826667845582 GT 1 -5246022730429050495922035136713091729448645.2249435061066507795348172638488631 0.1779405988696887031587052271289811 0.0257204552390998438104883432430813 1.0260570095768393770138823046728305 GT 1 -301007445012391886.9979180325418234484380392372967226 0.0483144166271809477104964230466086 0.0653454651789209389478237065923502 1.0675782994433300167128641139268717 GT 1 -91516849.3188124538507375638097982912441508 2.1584257701717535753119444228417587 0.0639543024226809474257961117538257 1.0660909814983192829252355948384146 GT 1 -23849278832743748180.4941053607615925799294982320830596 1.4318617394887082126720699314050544 0.0046971994548808452924289501271833 1.0047082659642404379643646159216702 GT 1 -69977721719777459671399445750568.7927225936511136154457484731139592 7.9962800275977997327895749960125703 0.0139232541239572533110499201964272 1.0140210918344528900142919147867581 LT 1 -1870084800828166357806.7787089695179776464899908874928690 1.1325665654499271332700864325655776 0.0585517568626605131885960371300383 1.0603359051656752472559801480159478 GT 1 -1299416229778339.4170130421238709180753777432244477 0.3469889629938297264489767261857914 0.0621604921823929880840682568257373 1.0641764450229254498419680007537424 GT 1 -31034114877413770100225218960588674.4603258614424810944406780682155061 0.7970095438233270986335541651520381 0.0697426374566695719689409183036260 1.0722939972010436127840685986572362 GT 1 -73559042519381597338697477495363.1137611337929397136635016951625923 0.5054620961445826583389298716945332 0.0829687095620179292231816933242414 1.0866136846928058667548595202349161 GT 1 -12715327802499461578178391370.8958691995208797437682427879027561 2.2810724388692816377101340316760821 0.0741979338475821092313147144588035 1.0770948186393281744195717786877564 GT 1 -15526169484472005645015054328237561732438.2801395213467911127480159234932518 0.5557611379245772002642684116573540 0.0839898849238031659421000229169648 1.0877278717093729708622974947332172 GT 1 -1280440103789.2281725174926232326952036363902447 1.0321017036731745496423595514593506 0.0060184660687189981624886613995087 1.0060366500320500701048367160088367 GT 1 -2025537.3522287864391220381881859236950397 1.0824247993371298361420343898459612 0.0978797561067912901976584686143755 1.1030074597186494025107139357581080 GT 1 -3944822.3208369613740498303821151809434251 1.2464363300822730973402783625301424 0.0026851498165710946603665125081434 1.0026887612977004185308801459098686 GT 1 -1370197294441378188879941599059.4438206232349801438199446237025078 1.5262505717649832284400835300685750 0.0454884511884142989597797734768498 1.0465555365583778936606253388549812 GT 1 -107847830201.9707558467579896325462497236947950 0.4696236552645317671555216917337331 0.0697297909544724832684168115840917 1.0722801876747635779568373384837921 GT 1 -13285918922935656681796838376102616686372.8224274275688094548648026499466014 0.2116543052245057423440563782268556 0.0611461635316518187549656602844167 1.0630954706031031923584863839565242 GT 1 -834988697316.7351463923038099026891949090163852 3.5954982912601453131953798074772904 0.0130727392264635281840354268875238 1.0131589395556840439522542363398603 GT 1 -148778609197379141863669662199850956030247.6563921542180591779679614166458223 0.9418197816238308593164757555275149 0.0033522087642729254036638196066283 1.0033578400043225768618518430336292 GT 1 -217353088511.0128967055480022403099539921876042 2.0582122510728026652992148052583035 0.0028995910525487924556044429201093 1.0029038030106258525044978998875419 GT 1 -18.5991376501512777324279454247880346 0.8618646313029612378621176709106387 0.0575173609940281643725072639915460 1.0592377799824393503706610584953597 GT 1 -24.4515786433031447034983386682493762 0.6965151522276320959675039417269810 0.0276496238362551868170766392120553 1.0280390701708847421179572079566907 GT 1 -46235424047927316353036114.1805276791686965252015058651317168 0.3466700106031166853334099055565881 0.0995597655659716899254458652517583 1.1048714858812392339625220896790960 GT 1 -65549875667974975400978406787907152846292.2994971036691008993114475312082701 0.2200859139606631493868990834598345 0.0058047074280321699944691776195899 1.0058216202231709217901816058357068 GT 1 -7785000908700891355135114750.2972936072230543663908967707940159 2.0629361242812391958183162870956658 0.0852219935788693216067303541438006 1.0890738590758129641068220129649828 GT 1 -41389671477916374540225418189.7888377242089937511647148124230971 0.4940879381091851645087732598229826 0.0150764864299062600795580240113630 1.0151912920229328925047721889473770 GT 1 -128238996453164444.2016584202683906512139068975637464 0.6792410029014180565721024158412265 0.0912648067893802103170570311812185 1.0957015438455598561227546932672820 GT 1 -1419491847146838265380762545371658.1655351801228573935048617429176009 3.0112303408555368670585287931317370 0.0925062055203515145992458416273151 1.0970685509054655393292037242260622 LT 1 -274786193060964224844350473016151.7228979923712904209374247471727269 1.1379647283804941107606030141883309 0.0486569308595952251182342792011142 1.0498805358111654052303693456289419 GT 1 -177503601213589.8397866785014506330846071262271194 3.4604945426911800666022285449622705 0.0453964212190727043977951535822360 1.0464591254325293079702255154769475 LT 1 -3642061556645193523729316104.3594272391424976429137239656248602 0.3323335327984531848766878729556368 0.0476065393355120650917211213922796 1.0487770305579659240571539146089913 GT 1 -3167076346096637075816332691870687365.2084972520154032769833724102969633 1.7912387312834160623286271819710961 0.0484649070736057980684830542629297 1.0496787112377700461569260325116472 GT 1 -1068153457343826995206.3619906787209630030602853894129450 0.8674317398042163588248747135032654 0.0624087404660011251300304279354747 1.0644411823722103746617732038133680 GT 1 -55382845398431901088985440361822168567298.6692290689979404375014295529372348 0.6888049763779238548669709122203164 0.0550070678846383098538033607552500 1.0565778307593674780670739352785996 GT 1 -1249175142857040812080846821889.2002563812225772361784842109646421 1.1305903588781911763261145066628301 0.0923994250466558146297277516184816 1.0969508925890527778547538787287540 GT 1 -12101795389011547430352221766346.0860041410450260681953232230653617 2.3740842923267328947318730291465823 0.0701510659173541682261497071198343 1.0727331424993410029919516432905375 GT 1 -1623543703897275538338880511487.5960798376106431380589257644351663 0.4943902828351142704250837711820363 0.0272723171269543969576495075793947 1.0276511096854118785342272996347537 GT 1 -84046102383400150357195140107065235075.0437586266547527804886226251733163 0.7019795309461636151978358732551858 0.0140890453982791803638996702958715 1.0141892381922343110035242058171985 GT 1 -41125821172243160253801222314402169.4409132130404760753090983760875547 2.9126183753715416835871948328652044 0.0509213100833776785130915122070339 1.0522635650356792134458158273690671 GT 1 -8986735775308963593642.8720884695079704123482745227359452 1.6105308427532639666351474848688704 0.0412143558352154559979734611182354 1.0420877492449046444853052835331993 GT 1 -258688761514879.2863369006156958507494611979663274 0.0478540122621145562393389255692844 0.0914195778051180865622919161797401 1.0958718731101081358337171559010918 GT 1 -36591955420826496428.6665981040366091035767128386832199 3.1458890139642519859546467664871032 0.0785844404522254186218085882832559 1.0818441397683602223275265718795440 LT 1 -253525624919611467365965703050172609512190.5991504069300495352139262776034402 1.7733389327161094150095330015690944 0.0143311877355496031166939882393619 1.0144348710015756134399338446765714 GT 1 -120.5649034951157739554447038513774773 0.0460289016676437787329628556696530 0.0180040697102020326163389759302074 1.0181681149440002083665176707415948 GT 1 -7320873172124.9600320679354059902817103773986167 3.0247843899092818226336992479636483 0.0410874760776978513707468822557288 1.0419554241899880976597392386690605 GT 1 -257753400940.6753018009434296279618059104429869 0.9242858215799107060669749428771406 0.0258649136117226788752791330285384 1.0262052925660738885133288044182371 GT 1 -88649492004206.5571055691578075945109085930199258 0.5233172018201600062709496036101972 0.0758433318528987144163413647268230 1.0788736674413991774300770082977538 GT 1 -28664650.3682479898726609539761310239682700 0.1712337185958913825284668488064483 0.0518403163007040172187201469960113 1.0532323481912211146973046130132265 GT 1 -147884.8567079402330385215233730503307122 1.1357274083172392709180302835198880 0.0593587450430901701353705573941190 1.0611934501768987860640943086618831 GT 1 -2902427877587642207802163734234.6363583397216071480822464504286355 0.4465803721856411699812037586183120 0.0581441435121508866051757959899094 1.0599030347047066506828695320853300 GT 1 -745688408541285684.5136186315393249615978185340742292 0.2761230635794699279498003466864878 0.0956155914323692616355250333272606 1.1005007782585138924834385441710329 GT 1 -1427734798072389199767629352837931035197124.0661870752073476604742732172863485 0.5022420220161130105354377688183194 0.0042175947233881091745357726617864 1.0042265138630584500520422042444740 GT 1 -123729064065544806240.8781310415755183536285613939658490 2.0498395333949846046403986916794030 0.0728773079188154391096189157984774 1.0756693682571533779094828332023404 GT 1 -1145080638.1734032748584251336480840495987242 2.9059316071981213601833195573535037 0.0577962899254070654835241527240524 1.0613059102378781202362897858014246 LT 2 -6635013286638.3635867465269140956461984643353673 0.0781574300817231363231199272975745 0.0682995854250649067957239307213370 1.0707439595597356271254898960714324 GT 1 -8894978982595.9363918338472397644745653291372109 2.5937794702446237929083595940595811 0.0829972288327062110668058119717530 1.0903984440986599499120007487611055 LT 2 -1.6091968131360030686333097772176664 0.9790990296924295469073658977018663 0.0564390802359510578406788773140805 1.0580943484105172211183265279682939 GT 1 -68134289158341218962016917001359558.1928564883837037707188027335880364 2.1307305066514779763386788532528585 0.0164385412971905619162594462343639 1.0165751533211789667859856311318449 GT 1 -8428944.6917196080292255024690897814955374 0.7295820242628823967351954055340007 0.0859382753996897756717712030057154 1.0898571774227361642989062996266473 GT 1 -3660952280865232783338413201280.6594589779596177594022644432913163 5.0148609811735120785078516219738965 0.0449859057582398505318056809330038 1.0460291802419752160251691990320514 LT 1 -10887005954706376962034.0777397055801509686563851836489024 1.1250991311179902149287611823173937 0.0031811920439162385928411933486952 1.0031862627921981667590704707646348 GT 1 -12745908837144780160786045331.4939619978998776922137714649051641 0.7974444635963889444005219324005728 0.0520397186399869188351803825025032 1.0534426749043958794640975232107391 GT 1 -291189204626493186351334.5498894668976540133685182508369630 0.2358677545202789689319819588975865 0.0517569222633479410565648629650024 1.0531443984802149083837401763018171 GT 1 -1319468231307196610987466027707583805567.9317345845296129601351334248970026 0.5261070539956507481183397222567516 0.0726510371115173861484830055691301 1.0754253410078669932871352178513049 GT 1 -66261646986566563172624312152.8375165984875437653346115437320145 0.0637558346193455889643211502419832 0.0560016725628807491202263569827675 1.0576308846209186305797779582108094 GT 1 -23.8412792329006532214072278870255146 0.1794321887791430968418982587815205 0.0097397047060824838204468606550880 1.0097874458727901014720185980841298 GT 1 -4018066826479696948015225961499163.8693431753076875339113281990929805 0.5112884730792630832917089044689109 0.0427247595866424693842781790076425 1.0436643213428335040347590551288742 GT 1 -404615959962577521697678796.9390406522097089714859966701498135 1.8977129058839084854842440928979108 0.0046572460369105945520799072698968 1.0046681247970847550723121516744910 GT 1 -14429065203701727974748912941003565699.8758095382191906353076227153156931 0.5144132177411077551961442190977047 0.0954823368495543894052633680351897 1.1003534462551519285792975585075267 GT 1 -8046547103357479530418624755017771.2842992901731071505374624996558517 0.8218627263996418125620988342968173 0.0247409712798515903548326544224671 1.0250521727862397684226225984543009 GT 1 -33759184084797872604959461.2020116446024302465880040566100553 0.7159396076781743441134665974266029 0.0215936228161365071269852955988728 1.0218301766583563515161303955914729 GT 1 -390530921532952844259858025761.4232513698186897582611715074626187 0.3843092441035895101128855927511853 0.0260553995432260413488298533039278 1.0264008553383739775942244443131035 GT 1 -18609087468747060391641040896028367751653731.2553342178330061734366290769495506 0.3745485945686901419439556992680228 0.0824772747629196974793032497007207 1.0860779307093809586291629755931485 GT 1 -6351231606248035.4333352646855632797967837332129824 1.5926401876355283919135349421685234 0.0331160371535757318099271337121653 1.0336767877855037048214718209804472 GT 1 -864284343824271911878768455647761130.6991378445029931018279548431845506 0.6359658338806963076862314068765231 0.0625073403321038209688982378750402 1.0645463508558007444843471204751410 GT 1 -146008344418479134.0287671521751423620627740153557662 1.7990078518536490482492839918447856 0.0885517109003539206061504608558957 1.0927204181242331348893770179499466 GT 1 -76104848325903847677720469240535.9853876590970380199906194615878477 0.0265549960544292225694137090221386 0.0283389607410730451048110569934876 1.0287482603826714945995287559098830 GT 1 -57214860339840936095.2320894043213746010455372473940767 0.6226380988423820401100464789689919 0.0302297088614602279368466080735268 1.0306960487886334262413320019321209 GT 1 -7321898843040152443143704719834.3593854705215844431226996546449570 0.0070475000715253174537229031212358 0.0020467985706242236398304410221941 1.0020488961254888368379091180177291 GT 1 -58407725705077977820867349.4153576769336752892794467690820669 0.5698359403612268254903577254424514 0.0267355485583214685936022210132217 1.0270994439589364988585324937112660 GT 1 -15484070690079843850158886176.2368945086918563612092081790542902 0.5762861689250933051504436261330298 0.0549232261899393625195910483231522 1.0564891126613088787388711706887774 GT 1 -238308772904305.6095880435393827579858195225891312 1.5408971110314503099302700153388125 0.0727101999738539508756205539596471 1.0754891408847375234974271913127330 GT 1 -9762556200604.9316406443369882315154284210828394 1.4636714324607253059572879041190050 0.0582422403127083496526895020262303 1.0600071927972196417504091364996426 GT 1 -6018068682580476752369125797348349732.8351282067391442444711359159711797 0.6490542425150779475433453067345328 0.0839730303851962706347782735397826 1.0877094719305167327209639568419605 GT 1 -27840102830896725263637133937570504.7831011290628232699593194590808890 1.3628422976415171774425846290263913 0.0013272662553533962011578846542510 1.0013281478533729061062002637048534 GT 1 -165866688.4657548508590833855763573729815088 0.9245717257596900163183115256470848 0.0784160370091153439805403088805769 1.0816613904604854262545148104519483 GT 1 -238979033754699145583105157.3502377022967923058939472929243462 1.0392458670229205449773771606838203 0.0983336308232173569086272820236340 1.1035107063030472127124562794120603 GT 1 -6171880055253401314377355276902554041392.8922610793312116370672767451692702 0.6277242411308427430142873175914293 0.0782821556903554838388952263716164 1.0815161279554902758285628824255433 GT 1 -379367791014848795061804490300.5097360306872827353461123546782511 2.9813255180700588763974026633678955 0.0884127706155778697619775789389131 1.0925679907209968024710287770746026 LT 1 -1349620595379378503008739.9911053591914378374169607643415241 1.4265617928223395174415916816101359 0.0255098869653421649458639868045905 1.0258409057661762434416426315105657 GT 1 -439278512680662938.0924276727071415878812202317159821 0.8414072116929135375523958132890235 0.0284157085769282186618450717899861 1.0288272497255849215345685433285881 GT 1 -61448892933839607966983137111.7329925351585396611682501828057164 2.5780583743306986565919697601101259 0.0210731562942820919781573862013761 1.0212983647741391441067120703217973 GT 1 -174527199230862.9535935853133050899730915508739998 0.1489826204144528430124264390021308 0.0990653511399551929732553712618630 1.1043225557912101001623279532392768 GT 1 -25304089780459805890134263475595406047421658.5522938566875485024752962455292935 1.2627184612341860559972260756900149 0.0191007344729684241242396364954544 1.0192855101867099953544491008675684 GT 1 -47848772074571.4615779904481216193600420237562769 0.1126898070778424726212468246077792 0.0695244596488842745882241286275196 1.0720594898104925237554824474363206 GT 1 -257576.6704207177362333545810978370725251 0.4078016745274132610112744577415915 0.0562742130501952196392496552212482 1.0579196349601562177353709253496406 GT 1 -1042940875436752986060691871508878918323.1030310906267877502249034229417011 1.9027072226348063605026644694295418 0.0114109408892506577927749892452950 1.0114765452241808305858735050690434 GT 1 -130005557527372476727119905.6496925554890877305830905794088389 0.7431054035052559002683137357376214 0.0148777562831936202251919893889366 1.0149895402142232151456096685908990 GT 1 -886928043978118426094754566.6605701330661849580131742232360236 2.6069117579202626781915619713749362 0.0803950323115832092326129562004772 1.0873232330064928553273872482707580 LT 2 -581094921887915329797573105359168198.4691170315876634199870585461204865 0.0164104002173590546791454105705027 0.0300738812110031707170906288356487 1.0305353765824111028997200365268747 GT 1 -58650381437072982632028854970616523763.0914742108112250823465065030229308 3.8191499793487643745326513708568154 0.0350368740160996034572457722777675 1.0356653897888731241361482183018343 LT 1 -653291159333472509223916229914.1870419111182689270672677003270958 1.6690953150097477098802596201908914 0.0369126970138005130088618989070773 1.0376112139865952410090751172043733 GT 1 -827404090168584877116385019416462642.0121257362586113675113592747321656 0.5330098680791248149093522237688812 0.0056791012884476638858242963807198 1.0056952886998952836658984449444967 GT 1 -4791312661176014.4663690400533228896179161328402483 0.3155494935271747629377245214764550 0.0470450660913831037845577337792961 1.0481876651044031414612659666759712 GT 1 -101456122646526.5694531607221889835330919945914755 1.7231040954763716679961145565015400 0.0552485788724406796632768065766268 1.0568334325170367555830448575736660 GT 1 -2100226130031423299498860226333035578564278.5667450727600058032608184638410166 0.1219653015233977199414755693400626 0.0705780534065016966785205276950639 1.0731924488877665278878382856867665 GT 1 -1514559137947870.8362649463745538290600641086734556 1.3597701307939852343057370041598153 0.0394783455773097235517062031940296 1.0402787520795173556512642831441287 GT 1 -10065413323151.3824216694007042153518912155446152 1.1839478613006188334679976968981067 0.0796690727068102573350325020766496 1.0830219700373201307759075869112426 GT 1 -1885474881304603.4565666047791134715053135133794145 0.3484543914602088656852097753641268 0.0580304207935054208560539623399608 1.0597822987632241577576700102580888 GT 1 -2332829.9802395759367901917094884747742238 0.1424588639095993296056031939311478 0.0083908202118631933051015414291789 1.0084262213123824846224006203779663 GT 1 -1635242050287627500983376715194561129.9734976381431494147425419373735485 0.1826840388227192421844384781501913 0.0404600730370826433211704938907523 1.0413013521407244703039940499268516 GT 1 -16.4771022754863876200350955882726756 1.0680353986608870146506578414067140 0.0503558099733815856687730552979957 1.0516679013580669567201067526558701 GT 1 -3048009094.7062845543046028560443990178883502 0.9760302573383373274142636507814515 0.0248363392464061206223669624380441 1.0251499648875573190898887101907384 GT 1 -125683458315135500808513351.9096177047287728506732868302560470 3.8173766687656422880741886861441304 0.0487630802622782680042151978368873 1.0499921205050165951244509560542002 LT 1 -2750268344970718215848909517123676.6842927874266517275699397676940770 2.0846246169512990045364146458640610 0.0403126730792410225385310975575379 1.0411477486965954221596518116487587 GT 1 -357454616068855299664189859513224693378.6285495014978862340331219239933150 0.2661039055864377034968032376964091 0.0011689095533913498054547491850131 1.0011695932610101976541619285064877 GT 1 -8983631065513378962168559374771475.0621879818311290978846876728076958 0.3817517077754117388578924240145022 0.0818529102935721676830331464538281 1.0853976727584772502139870227726783 GT 1 -20962619941646637033795743242045065396.1666888350377531298705108351230970 1.6539377370098757365671900903496716 0.0137763890960477809892709456505745 1.0138721641848927642492514462955736 GT 1 -7441765417237.5589991302536921646272375030889251 0.7372989342839674799470638812540832 0.0573650758289261424794114225393743 1.0590762142865825514816849248152742 GT 1 -660406407787230303954937040059952.1994097575123194532178803184277674 3.0010350873797637112618905216905165 0.0125058668088479076059997291082200 1.0125847232967594034194556954819630 GT 1 -143983999006018596773622001182334702224.2463151069059883561924920037327702 0.4501855547303337824356065685720272 0.0003767317867705971375433250323259 1.0003768027680180000488978189765358 GT 1 -67499744020579516591335.9810890226348940363283127685643303 0.7828893312555584455243329881128768 0.0393968952001935550015054012929353 1.0401939576102628595689666370974713 GT 1 -551072400036539640.2903436083073350149496056553943763 0.1930817113527221103407674046732730 0.0420045712990101116335109094603668 1.0429122727335276608696566257435886 GT 1 -9409573438134282970334234993816806.1329006143764310728520401240260834 3.2434073951962935902603138331564297 0.0742390590378158428557284760102887 1.0771392407735817466768651846103328 LT 1 -624208.7448058146790876585308608812637190 0.7064718157548296598154000284930214 0.0308124674463375360925258539216035 1.0312971537691582919171231701600844 GT 1 -183070428937738.9259916724599805378302951502669264 0.1421559495639450266259340412941735 0.0071102160712488284903362075993875 1.0071356141195514683942512170053603 GT 1 -2938538455470977513988.1268627883950409053233063114121786 0.6028989142849964609004806587557615 0.0088971050088959465706731550388372 1.0089369205858440236806283397541298 GT 1 -22657421903429706342606738.6134012386151976308991701189701510 0.8908703551252086346746794325290275 0.0708486117343210523594053974180030 1.0734835951392014090095991520422458 GT 1 -135052258393129387724172505.6739870952536911292319606751053989 0.1838848218859180461628864235545151 0.0839539306821727196731815139488426 1.0876886215576130733454207500778571 GT 1 -349915.8229166875476011868887014286154503 3.2146910227614622481395113401596733 0.0183227688061531539631043119712926 1.0184927097951194811246218257700024 GT 1 -778283469913630544593192548.5015063862045597148989384949879442 0.7356995491853189342031100868919809 0.0253903575917179412929759266832755 1.0257182549131962711427348620794478 GT 1 -4116556543.4718671249785493157960821132198765 0.8557646004819527991227468031999876 0.0435550397366970354101740828223201 1.0445320346081854322760895451328941 GT 1 -8852640073598567290.5945133685008698952247039898397571 1.4269009912639016761633579027335939 0.0743254318777359668971952447562421 1.0772325444177637647716392953732098 GT 1 -389054433842653235326302.5683545387832727026924337064460230 0.1301477415388395378431017724050952 0.0313320082558340049971727282375314 1.0318333555813471440303264670868809 GT 1 -6925851.5150079198840247622631444745637515 0.1438395632476820503904717166950787 0.0924115749788700025686105002491472 1.0969642795500959973159677601185719 GT 1 -44413851741049098059674458.0340878551078530573324532060603046 0.6283040669541315403076440736770784 0.0019021699117340149291668926130339 1.0019039813343741546947787692992687 GT 1 -2.1162118556021661667097415731783259 1.7443558843374265904638017701052011 0.0142330672693835246897477165024775 1.0143353288617963187659260218857457 GT 1 -3578.3528848444036117783317243772473765 0.9900558761401840972919976320097017 0.0643177419476423235029638048815347 1.0664793280295936182785818923460501 GT 1 -30559.3093065589401511329910160362710642 2.2114918435418956940361772407703799 0.0687710417509876095088150002128232 1.0712501047124882087793003423349406 GT 1 -101532362.7929985406155927413580071726100121 0.0919414552756019422665124168920402 0.0473404208398860490822542874719661 1.0484976488380937167197077845687794 GT 1 -6157429563535115686375327433.7355035927672552617567686798547836 0.0718987042883734476676271456476091 0.0600666475060194967252767512895618 1.0619463078338732808227706364207652 GT 1 -41506020833572633449719251.4374220791802151836622747172402947 0.1149977319175009136491951413492590 0.0530838464472132839075406028539478 1.0545447287308775174201163610615731 GT 1 -436726664947305493579153523.8301018151831330663893950929144536 0.0523011218291056591500768866029952 0.0794071497127155976723525131856909 1.0827374139910005192116379676238665 GT 1 -31214559381291504832337.4421773006947251195399766329779252 0.0688288019556769160280037665297788 0.0160174059980019252494315474658630 1.0161470711086959096908624774254107 GT 1 -11649132734035068213452891868625889.4367802389991167155492269682333948 0.0488834792136588997106927768598696 0.0748455434686856829160594990015787 1.0777945753754726589779510239169551 GT 1 -5070425946239923.4581519675242435025252322581487882 0.8007135720766037591750987146493576 0.0760838494882667958588091763734498 1.0791339576575612981735927534554040 GT 1 -387514945867706.9366121402990660505515343537022547 0.7545592340122397260183075140994234 0.0248203282882945379303032414314298 1.0251335462828476508921557531881372 GT 1 -187049849092918242987705699173327.3312552030682442556557411849902528 0.3965487538546352894230126357753004 0.0229847935549528681137133464304725 1.0232530626336137191801783835488613 GT 1 -162.7033557050473416524185718219011544 4.1281297508479358442707257776393846 0.0750499304531259251021669687532271 1.0780155217948676388291873651237053 LT 1 -249056637106570948.6441407595386379525230075565917008 0.4215026209698625874929636970814698 0.0835880214212035618448453756347621 1.0872892571451481193944631793076530 GT 1 -10147228.2016824620077566732870426368705608 0.5656012600856890808019263349843199 0.0103181468607322974385654705236236 1.0103717479662271952459467208274070 GT 1 -415833155.9208762549750811333356761431833504 0.6570085840552000683231849435021075 0.0106490060473872217183357690267579 1.0107061124920344399300373869625528 GT 1 -52528484916.7029163942600782416110463047652112 0.5554375452116290780718224343922912 0.0645572146581084307120504197131331 1.0667352945804332122194959527655890 GT 1 -5010242815998960916441.6338382325596380183999833675784264 1.6385857538137524029828466420273326 0.0643466641260475201520596498804782 1.0665102387636184191954046682459633 GT 1 -13811186015697808011757407782657492916.3312344507662448849475796659249599 0.7937350031044776609520216430179945 0.0545509593291878824763094735733144 1.0560952890354038710092288859942851 GT 1 -94440014256828.9057138911432234135625329652521209 0.7394253883199758469553328923222239 0.0369349736481239863169551168176825 1.0376343446954028065262282099888943 GT 1 -45267.2455749075621607216324775021705972 0.0582308700702246186486863155638208 0.0687665492273069089639576245037050 1.0712452804286165476667048817489842 GT 1 -813431483.0323086720918223350366177363985495 1.1929120375495996347540461174992580 0.0435354967449946707891686745341832 1.0445116018672996193026431884921959 GT 1 -869179769884017153224257.2419985029751586536199553112106979 0.6677519977435008257014773036440315 0.0900358105201491826314742178256688 1.0943500324655044050606244744858386 GT 1 -3037000.2872047413095050976837105238037523 6.8516471317053007094475109540171309 0.0575675317151711921213872622806020 1.0592910139142602761914506860285785 LT 1 -4260.2823699605774034770854434866357966 1.2909501792919180638935766170928742 0.0900062781416693133334597697223788 1.0943175785518193937605550730274718 GT 1 -1041342.8674629688663580568973961322359869 0.3067390508321718864388951475934761 0.0792146114746456588036969059950645 1.0825282899395554676761288194725115 GT 1 -441942042817180946816604541.1776391773292652108028443558648902 0.2056429288583199200631650054845486 0.0803635270491046626564638978377276 1.0837768251235326870048011210659901 GT 1 -880324841670.1397096881938546075547459358077455 2.7669300470562218219927599578447287 0.0576907119540600009528618290191503 1.0594217270357268525705336337045212 GT 1 -302327165300115166504383695.1014032232557709800829419024503355 1.0787115299616059576075142776176528 0.0877132018028080838113964546698021 1.0918008666362219301387832608633627 GT 1 -5446366305618233623376763869496112683.5409745339534797385831166164436329 0.2409049341191145827247678080828788 0.0910421938107029721495472631007379 1.0954566037155558181365568990907712 GT 1 -3088149339406029894746158.6450550697458819424418084460270321 0.9912500698876675389733305555725820 0.0523855223810706637280761470151853 1.0538075286177952691397063763972673 GT 1 -22029640.7778473011101077790832186372757646 0.7635938138732317775830411149141531 0.0607673204890459978136266894921611 1.0626920354636451465157840723463463 GT 1 -1301919454946412692667.3152974522299986302944416148818507 0.1107059353216321618904906275470804 0.0793963450792225031887948919334628 1.0827256774561302256733572321591328 GT 1 -17279522998202755927.2840339161308003852234357389643916 3.6937655542463896528354987985550235 0.0406197230605671582034414062672508 1.0414677478288080156858553878953226 LT 1 -77930732249906164183874903174612397.2739646306805043818873139993855990 0.6504636089141886856306812792386931 0.0525242311450372542812877048364729 1.0539539161204193602855843164496662 GT 1 -276358.1199321449966839931096267135311438 1.8460505649786762321647135577414159 0.0223017703689769440790913960834817 1.0225542152208232470998911174235800 GT 1 -193097278275051584118077.6878172670308573873559689635564030 0.2714346665415642309914504695173446 0.0012202516912150165343422321745834 1.0012209968045221667146068441901425 GT 1 -2129212047513282010.7520167994923845515436887424630215 1.9644482668897185321809382040791066 0.0523425436187094313248461093558743 1.0537621749547165496606949808318389 GT 1 -98278924533766.7979881404140315139173553424675510 0.3601991729268732445311580824896916 0.0546682594934380665012183784994026 1.0562193649362892468567631252804063 GT 1 -4682741.7712628756573195268137676645205265 0.8317995564511512283764716372456329 0.0101329231773456568214210898137761 1.0101846107036683420547181992067788 GT 1 -5142074264549990030510868368.6705685374909649145187377990304618 0.1402312857839226549593152512476424 0.0118626452124142927910733445772059 1.0119335678327218869969413834639131 GT 1 -27397259.5580955055773282980081756670916779 0.0421033966790613928412056042287109 0.0722717238441137279595033364276454 1.0750163949384458373679936564506389 GT 1 -620592850985086307635851730110488230277.3459064910191837675427432924636749 0.0726559560148104757994318126925605 0.0629055941889378374045069053649748 1.0649712485521090532229102127217825 GT 1 -107.7596399311707855233590634568654105 2.3950448569784994804033899281457352 0.0011174466480923960247694151111266 1.0011180714571019212072557958151906 GT 1 -1.6689257150804541032683720742484897 0.8683872449187629400393853627130202 0.0208711886869624687549497138912871 1.0210920707318648923603944064690779 GT 1 -26417492693379034957300189499.2460807961070037709842913439447584 1.9626843689855065340136555223128020 0.0429704522796210587891986175490787 1.0439210126449193986556307565783443 GT 1 -5521.2065641246105852528750062443025234 0.8809783206096558427745858092527617 0.0477536254829314292580645341630293 1.0489314809112504203395999043557567 GT 1 -13574693282932850466492288106441.3350787698366125481141293443047508 0.8643995860825948814661751498189484 0.0850114853229532275365537305811175 1.0888437660509187344761413234949051 GT 1 -11004663.2773908152611487960887670316039847 0.3317998367116126355119754889054175 0.0735059198581672428067971850350108 1.0763476227624751408594700449506543 GT 1 -4363939733888709333014.8280325538195092060452343981858034 0.6027515769903489925464339984418310 0.0782740144472207398526423153479033 1.0815072953097617596567846440361776 GT 1 -681.1531863420796119329705004815488252 0.3200324066868524610178576961102721 0.0880904375182774333348880410980832 1.0922144577703544130083692353635803 GT 1 -3528604861.0104776058444261368031242865734499 0.8848652244976559665426775461310181 0.0244777851006701623422647569185820 1.0247823463445113112375499118930017 GT 1 -2526947732693729966.0221770023378160216538164348347138 3.3524784739683978672106512530850692 0.0389262208995511892160002033804283 1.0397040997012693063496881049789107 LT 1 -203678.5361056286950137634412430933434889 2.6410311382068794930708376138863081 0.0662350185866629719314431543415713 1.0685304983121865289268709374539363 GT 1 -42782209903828656409596291511536980911.1661486882939932075008846810294904 0.7241830731440177471201288467808809 0.0360645160785183589563771719567501 1.0367309120038493528341461695677618 GT 1 -66867242530.0702306685770729035732226563092547 1.2243602382363118308135910938318963 0.0516711799306932428109600992717092 1.0530539802547710914427662035008937 GT 1 -2202476281254205505873.6344527642773849252263398120870838 1.0850772385542707837006561131247503 0.0144818823870395447116354871695108 1.0145877683747262021892543011890071 GT 1 -7127328223.8478492109400645802828110598945066 2.3198389915241345077872801555747245 0.0622558331480789509845289516135605 1.0642781104053402129032285977857860 GT 1 -181898950.8692601041245234138122021169135426 0.5494933015465544168495987756467184 0.0909822098414116285361821739935928 1.0953906138646099502742893081462799 GT 1 -501300749234953184160.7328955360278038503947464152432288 1.1646794185821309721329418876778297 0.0815062137581862688466180545267448 1.0850201394649041877723862492560864 GT 1 -49907758390333065790667792262962019130.6239460939978029495837090071440418 0.1138436069984432307844153489025030 0.0678481348375808794665325368430133 1.0702595321174748765534446032984735 GT 1 -632039881729.6788239585959442054410916116646820 4.4687090425003857599723096735608992 0.0575980824089309862155076832214232 1.0593234312916080184773427890056959 LT 1 -9768448569.9906731019882153377908296481460194 1.1889977632404286524345041651336539 0.0778272299015891786061825630803825 1.0810226867562758047868558887893288 GT 1 -131394528638630884913162.5446745731472153246971218529559508 0.2417994451227518294622044839510193 0.0450548230319655379169206196811716 1.0461013464654067179125494518095301 GT 1 -623453893809176348335904129969443.2060106707437839568710413576747082 0.9411783597199335770272089843032490 0.0297862043167017801598781284613417 1.0302388238500398260999438092361506 GT 1 -626112421053408277460615.6492783402533893161274357047921862 0.5481000435771855534390803150734212 0.0252853138589305841158777975950480 1.0256104804075887766398986779873937 GT 1 -1.4792651131506167389011596137221606 2.2900267889820547554268723819002547 0.0850355118145313546025729298772360 1.0888700251860352364661520128193829 GT 1 -287155301828245741931477937054114432.7547027679694538439598588178073867 0.8181685553022700065605980399805466 0.0063371542173531255404908899309312 1.0063573192167568964411293249490168 GT 1 -317342121718940403216.4989785474768009566952024104925839 0.1288918130298945893051066095362315 0.0812465379024669390212164555236847 1.0847374601927667896288206461943928 GT 1 -356874997362338687263700357280002.6963309882628656511455834125414713 0.1466428579966752843999672187424509 0.0103193171527619606775455061982762 1.0103729304600941715720928071481543 GT 1 -46345000302643392716432.0109612644853264766484240174325126 0.1010593504671303290802903948668278 0.0469007908050644597513152215251067 1.0480362787577810397837116024919061 GT 1 -40536832789.9875349803911051178414733795583599 0.6124909388519715557094914390041602 0.0619318338487768700718876694258686 1.0639326608133701965547075877773510 GT 1 -708614068436789917763854703170530.6579113619704865318734948908964221 3.5643870243257672283766603088629042 0.0180568212520598802523157321218148 1.0182218350839248928541076053892553 GT 1 -324792078447574291980601317536586005065.9453379722014744516197388771407537 3.0351769284685999332210141017312259 0.0916940432957871942501356835306010 1.0961740004153094690475256672724784 LT 1 -3959857536847178.4416321370227467010348447460554284 1.4600809489943271673343967718527452 0.0465975015158101729734631749401397 1.0477181156104928716977394040577388 GT 1 -167977741026863348672620037.6722104644287659628101171924414824 0.0691984349460266480432993919034912 0.0786545363723505644794582689011733 1.0819202168280303529165509745315378 GT 1 -1413675835.5374424403244405925824322166328771 0.3624365412773719386456893549361967 0.0856120699297092925510397912686384 1.0895003664242948327971373522869983 GT 1 -33658413830035087671476612394463591892189.8862019444119330505201090458642772 0.9467215319878089713320702812330361 0.0111800528283087591574496213961247 1.0112430193716560170436515212428457 GT 1 -200983789356733827077578.0186787275671140206259359818554180 1.2308033625817331411248258000245628 0.0379707436714664795486296128788401 1.0387104167949429911500536422631050 GT 1 -26380150328.7201707557143370698194381990650197 0.5330237577137459053263099613474529 0.0629011583954644394172007187082980 1.0649665150023755633939307230777600 GT 1 -3065903.6381026150350471842878424408603589 2.6913334601400790810647544565998224 0.0621844915262740478050213554632678 1.0642020353832784133428701988414190 GT 1 -77131061745165936427.0299549037475785345509106907894894 1.1572975941684119516253974029755875 0.0401765275001191220997090579113532 1.0410058942413964265811434643784206 GT 1 -30315.7736953029318823953013305764030216 1.9941622881415316122103273537489694 0.0699388257675102263530935872022663 1.0725049162535495255262170567263157 GT 1 -3056.8513653562388310034545021841697227 0.1094621754945127841342521485569428 0.0022071489785729228120367608192919 1.0022095883218700686457901700005933 GT 1 -27126.5961809684676736157240503886535739 0.4066114477170368693606584926783024 0.0284041865999121720364109703450794 1.0288153908381996678433009964314189 GT 1 -136422962606354112420681.3782457662256662197825846222526957 1.2245704096970321594024137050665707 0.0370430367660185049537845767123312 1.0377465584900450458287859992129427 GT 1 -167151057085.9892770901399775711356656256218716 1.1808640946427727874767554471392991 0.0351315697985121560441272989627147 1.0357635286986500340975789610276667 GT 1 -296018939606893074987789.0279455747221368188345557625727253 0.0839766382428871711201898510148869 0.0459797850422452908602171300315602 1.0470704180751676541662549086595172 GT 1 -157099745722125977734272433566914247.3875548931988534415595348903140866 0.9825630644563206849246734696472138 0.0950894834802572063253741594768346 1.0999192169446062452162539541695564 GT 1 -7858046350666264284753200137.6357759488292769840098830805003204 1.3516434755568474165942254685626049 0.0073433250388776185169263980451381 1.0073704199763030018746640563304442 GT 1 -63281491202.4083360383441484895394509910457311 0.7894566472110753029236340211743416 0.0296728265195426188172445272112325 1.0301219721070570146588415160818224 GT 1 -40979529024848659610949872551755101409.0540799520416065298494002122300681 2.3006387823432726938793390730691608 0.0933413747064935382807778464468881 1.1027902268195827477431624260145394 GT 2 -8523127669.5589273808221224806210757096714383 2.3401978259883691924415526143144128 0.0362770853088412534364217989143590 1.0369514585813316610873245263860801 GT 1 -62056163382381882.5613264002697564652228468634433426 0.0397054615984702363445752100566916 0.0293299888587329973633271747702413 1.0297687127957183191501048961949529 GT 1 -61045582759.3539612379319779249233583279113003 0.4727797054644615023787837141449278 0.0284900696397146045379965918827836 1.0289037885387716949729773017928568 GT 1 -240614122511354256281292790508817151037117.0655469610412252817158989200504361 0.8742465892927536618254976628583442 0.0768033856309497027918962695149937 1.0799130505129182093868679448083696 GT 1 -790165665352992814696013045295.1663281794653538020666647570555205 0.4714168743130038480662419208833863 0.0682866457291355698176654387913941 1.0707300713979694297825478839532022 GT 1 -3116345204111708189695618536.6265516045409114445440595682563074 2.7396460640754167293984383844788350 0.0620082834005308848354342858211102 1.0660630673322496765310756601763360 GT 2 -722658852402356718.1439536089086225783421093772751134 0.0118604237743458343640742475785099 0.0331647771444098852077171077717877 1.0337271984047961648456666876195059 GT 1 -428605287233426151.7117457272331227114630777509299848 0.1916173367332171414662128936608502 0.0017212972792140363432874598350982 1.0017227804135635183937719743606752 GT 1 -13056796152995009528027817855768286322307371.2934181350151939584158559874628915 1.0303636789564878404965564251278214 0.0345193080682563339884632402104957 1.0351291753127603329538412325432083 GT 1 -9581777562929579357414036591072462781051.8556162511322470391661532374411434 0.1529848838394593867530004372934857 0.0013605974788413746715810206365324 1.0013615239320396977719351854916794 GT 1 -22718490935010866122458989.6596457552189360978187975684867619 0.7989610611453029993334544464091860 0.0116667209431006959996017280644552 1.0117353111355563493737675955358237 GT 1 -6.4882423598053974022130793724202917 1.1964046332797404115900678018809487 0.0034306525925017656443772031757484 1.0034365507747133389810418637433611 GT 1 -87221703243733122095884670.9014817178954079004465635433392416 0.7948984780168017691819636357755756 0.0699334303297064879118749440716518 1.0724991151059440032716445171483095 GT 1 -185.1086424028651417344670106251380132 2.2564896274446858290391363759588475 0.0297633964153703836323469299304608 1.0302153160073853046697801749760984 GT 1 -977184.9377530659127997017591395304750008 0.5483772173289940546376294756274245 0.0494817721443550963280646895838493 1.0507479401142863183446722585814774 GT 1 -34406737662662230640124132554444.6762781628911916765397326449702438 0.6106018095411968024773925826090526 0.0130549510210031756122858226946236 1.0131409158918705886175729731719240 GT 1 -1316922271712113893182874177453075704.5858407197370215188650003640393722 1.1989725595231143520040472338464484 0.0541414751628922342562551604448651 1.0556622720262597272723630469320667 GT 1 -843758219410684146500.3201596494063188400644526825192014 0.6136883002289331133741164702375263 0.0682428487947994026664184100772500 1.0706830656265171550226235799511926 GT 1 -22115578686740170502624.9547353221154635038848067469867290 1.7704897398092095934485084418704438 0.0546550483771482299467087969947416 1.0562053899226393221054841967423166 GT 1 -87639722249889236768517500333.5396265677893201058366679605123492 0.4871286977245816365146053108472791 0.0335721581081421241325612190162386 1.0341486423119296242273762993158159 GT 1 -55194870135360581972.5560109940618241264112937741157713 2.5863865608926392314162167825501613 0.0528159774980454826602476289972593 1.0542618831302698660845515130297418 GT 1 -18396045339902171042066219.4236775926990407697395129601808663 2.3402800348188183333271267908510663 0.0947924490143626898335373545678989 1.1045502094484482467661367867998169 GT 2 -1300752073721126683.8970671965043154982587201592786389 1.5279200488986182653570541893677959 0.0233887741710909094579194338502108 1.0236666326132396561677920467948295 GT 1 -107342808387225704107452571.2132340751776696068788003765446554 0.6810023111724772289572574690561891 0.0492463101247604496876864122629190 1.0505002511660590074324739672898755 GT 1 -10004144816616127697708293836560228041868893.3179453812548534334932469845089574 0.6299578607315686227029355310334268 0.0318026679228005045023274016700377 1.0323193570296068034318820066335218 GT 1 -61065056.2083311159096787387890050748817789 1.0705089629232627612619720657455871 0.0835645179015800496194138618583104 1.0872636101449159055645842230942908 GT 1 -3327511711697924772208420424199.4518606825515459235394754130012375 0.8624977271744042225794403274568735 0.0727119283025719777242634447822866 1.0754910047360692781528102969816612 GT 1 -1662200653940725033.2224173644063831344597892194360448 1.0501165383356568408735335189488143 0.0836409782369685173521940573174884 1.0873470459422971535450515774942247 GT 1 -6954121370155515443454308838787705274588.1256886568723104538130331619437186 0.6818976330716857387103875265854254 0.0473547703248691925574214754220079 1.0485127115040953702192944415176341 GT 1 -149115468.3738175348386116683441640368211118 0.5686717280780479377826127553210599 0.0479823865947604039440737591297334 1.0491717428858299235576542753131155 GT 1 -66625053402040498537898.7597592656066767501368774750154233 0.1142399825332514565386020374988041 0.0060400267139137876543709884346004 1.0060583414602106647501715073719903 GT 1 -2697281325860990863509388285.4604881134247771203825756157110654 0.3077500026305257363084473584868019 0.0222048267871192986506667099933644 1.0224550652244120317139272268900650 GT 1 -402593086253623553501923090324435881.3200238999349260215176994027904513 0.3415316334556768136750409200544403 0.0404538078661255846699825964936210 1.0412948228131505419588629494341766 GT 1 -11745194736848822823634631466457.4247345529397119521965403358805589 1.3211569516214867761636022687153810 0.0965757047128577090570546275237386 1.1015629629561655438032983802120559 GT 1 -413999843275248585693916.4661815914755209874529521723196397 0.5502140079158151335908265679628195 0.0279519310888400672192115079267170 1.0283500221321830895549031519834741 GT 1 -212140962116474626372872841107.6515821297197199224207451890452395 0.7746697132201706930200452079400112 0.0985260700781342609498623768263280 1.1037241553128039529329909827123022 GT 1 -637951037770.6359870735772512410609314972732791 3.2636788530176188931811176766728931 0.0043053273041569114064544698773475 1.0043146219129034220338130834990072 GT 1 -4359017.7291617878742157439162940788629650 0.0801056348473859327432559667497240 0.0171732562170992684900903192171304 1.0173224268790347104224618476098684 GT 1 -82442673057570763622847735351590320555286.3212385541774293450681520215528216 4.5803517382434951781010931627195201 0.0753211799604484197915131595543505 1.0783088233439450687820694335905604 LT 1 -25672715560.0743229085811793298549834194128152 1.6590607834260707425139498722483717 0.0386865538185458034871714998774623 1.0394547565105789332270620939906139 GT 1 -301752992.7242825884864057211194261368285757 1.2183090795228427219244394061843416 0.0968292219563891164190916203685881 1.1018436204747627883588221449354883 GT 1 -102383462338.5950873290753112720754662616383266 0.5960473150941062811310940959301670 0.0968960941797336294649612933718277 1.1019176648313298820328115863191193 GT 1 -2146873740744059924791809732708221.7468350976719115252093108538477048 0.2962752092896434759545352717949492 0.0982666135114562734333018280779336 1.1034363830016478411794012613020401 GT 1 -301305073054328928787512976.8466824598961172480560182474946728 0.0886042483668417981875976323129748 0.0977497443238769885249786954917088 1.1028633520831384813269568552000860 GT 1 -2654413813100234521732.2336904379423196637061584813626588 1.8972053859865550506565729929916488 0.0002051020117000762650134588448199 1.0002051230479941179600752213862010 GT 1 -447275.6967849867417134618355033063382933 0.4158874412226582432205072735899913 0.0468507993771869918049964990432656 1.0479838286913243726057029320636384 GT 1 -3145475421389349653131240953193859.6093925850122927662928986010964393 0.4805125167523537167542766179971213 0.0299550226654328983641309438106660 1.0304128401735372819605132215959549 GT 1 -5312599772842237644.1400175045032994439079473108984737 0.5311834548964439536414750194414633 0.0105212161214589654035692734633368 1.0105769554240162279681715054983296 GT 1 -7168840809423981987526356.8472038369913884546654677375028379 2.8756194696577066740826439924090593 0.0174247216616139098640469117984054 1.0175783189998898731567400722500305 GT 1 -74639291371441699054839088941.4445375225690749827747669987493317 0.1461032447661305808447646239034532 0.0329714275402304933823240114584137 1.0335272364371622287177445169580166 GT 1 -134318739271364150.6785624695637532361501640209024090 0.1432978978911177741417109767313854 0.0973915817955987871967175444811464 1.1024664650158429607046597194278314 GT 1 -160700167018415379.5012244845338471050066630954029017 0.2776006509264410797122757811125335 0.0052566339452075332670685678983707 1.0052704986545696338552488855074050 GT 1 -15618007050402.4197778902176802001803865907518328 2.5001609136643963445706223073440285 0.0733693036396544894213987895357672 1.0762001785962834603848398025746437 GT 1 -794380408675148916246.3673995973576285782448685055414536 0.8009738637628049044334777472486898 0.0220481822511085424557291200683979 1.0222948762663621069184339931186407 GT 1 -1594039755419895243591787165.4478297063267610316568171562766974 0.8131711145378472871219621717933464 0.0472082513120614757939238992722491 1.0483589210457802682908999914192718 GT 1 -1580748839353062967717003649.7211811673751344456170820397966762 0.4867012102419450566841547101763754 0.0326429466467646265752805859316615 1.0331876134661890432868359533177988 GT 1 -152355914620.6400553089299940917364137533335382 1.9065973396249139835661018130030063 0.0626546379182971089758420211569775 1.0647034818556925607595702190755148 GT 1 -26699.3035406054834585942665782601811676 0.3750253917916487565267230181952891 0.0537940795228120025037195786433873 1.0552950586949757001454620444123829 GT 1 -399170649993160643639547.9412556246907054593319499417395022 2.4401009965441635051242527929376948 0.0748277929358589111026524790009297 1.0777753889980869227165323254090522 GT 1 -25887209772199228953176621098435867624005.0628468891562915393279731475919184 0.2093414866007134523565438529887435 0.0139935669136116929262772243648298 1.0140923999723999185355271794810250 GT 1 -1497594.1064967104755919679350183839654160 0.5159296049330794045237369879762088 0.0242762794039740067599259631334476 1.0245758058016234297663244879436186 GT 1 -1865014862387630759960735743781547721381.7131548807398371943443609764281419 2.8890066496983604172423789942645230 0.0762323790962604198486506373288194 1.0792947314984223607656279719714412 LT 1 -47796236872984125801602757.9306551246598429157210354253539174 1.1852430862479049433949870820569179 0.0396470117927485952673740382789128 1.0404543660546609083853694382425973 GT 1 -13660879398362740353842869.9897348557091623474728976639885510 0.2246124368009170482780201382303339 0.0839505379440497854753050952088415 1.0876849178881647951028141124292922 GT 1 -291666544697819839122.8056223208319476816186207726334487 7.9322617262048131418459958226738898 0.0172861922462073680486564979016984 1.0174373428792607931521097614274823 LT 1 -57657416446241612093280367028215647.2941136168582918107614099744178787 0.8048646103233087710962982316425601 0.0022717927724008028220302839511547 1.0022743772085453255106147757932627 GT 1 -480944025945388454.5676798143997827441416464065575604 0.1198387480840412638999598318718995 0.0305302129627793670921578705782449 1.0310059682329624742209688503293669 GT 1 -19762141920580630041742664.7250175217961664269129541560227545 0.7879671955388932854629913321283528 0.0013141070330882761608483339408042 1.0013149712289156590703282325906463 GT 1 -2659848809.1194687313664958435479939500353539 1.6637846500867092082642864182750856 0.0131204654397076582078359812526274 1.0132072991148529132102741440896170 GT 1 -39006548435905561908356426.5453037907362866746527141446348161 0.2016861634661839266544500128530455 0.0853562813950551663606131933672579 1.0892206681079677796866080210638729 GT 1 -8202948982817002609135533265019256861955.3788587911291295665718102198555439 0.7286056669966418257146679497659089 0.0290204329572216764493082802796735 1.0294498541225445822597128046427276 GT 1 -19964618699834564915510203664799645285237.4607221602700584592664713726048339 1.6599967095214617345930991256404097 0.0492785329663944829605375203245958 1.0505341436326737185446048921218492 GT 1 -429787296206471838764811501332362232.7276423543858505572997186961702761 0.1297129877751171995194400668389968 0.0196647821611688381638578932877419 1.0198607067871529117263912694447798 GT 1 -6676646975592018201226010305.3595381708509757242809254996024019 0.0681487728794862881694043687621485 0.0745884413686327823859291385508006 1.0775167121708093084653930216164010 GT 1 -124632436564.8559764534591729057662467556134892 0.8336441222561379650932479522458014 0.0666177555573077575031932631889959 1.0689404681000055151027589559413195 GT 1 -17112779301216.5835389714435086757357568350694634 0.3758774947658933600768301603408578 0.0085327926950687541809861497710638 1.0085694053917978320784941021844247 GT 1 -2915548382231893812.7476868074500802255209026201058823 1.0773741374939359069251632644365750 0.0738199361217806088913538947379264 1.0766866098073734074141484265507862 GT 1 -7890514739432726054547512833.9623531721637139519578180524173161 1.4179732272997956741434698420480462 0.0983910476620744111117110092189654 1.1035743869159757239177518861488777 GT 1 -5193115590601930065000673659862286390442.4371722045066130782780305987537129 1.1804652829365005154483644959266079 0.0735827128459006120279063462966902 1.0764305117652982016362138052229249 GT 1 -14433887120105958809128206184451240903.5540217120014971818245471292756913 0.8352096422052203875370896798838715 0.0449357200374915377214733949105699 1.0459766319052811594169999792967562 GT 1 -3365797106735619132459483.4120145493047943427745783330352406 0.3217584260433828634053636679117930 0.0143148526243826488533915746316626 1.0144182985224554146360335267345458 GT 1 -1353276768688082920557572.6904360612877300518525138672424181 0.1982038987077571174488092341511411 0.0045919690790909991173401149619010 1.0046025445563648758852047652843012 GT 1 -2735403822741520358502585247190949824038869.9474760165425878581441091122270398 0.2123112830134923030177558310352410 0.0350837561267985697526077097846460 1.0357139753237417206132987773786354 GT 1 -99766415380214.9683801283472315950603181418970952 0.4828716743538957300716082171319420 0.0920846201044794683713600265412231 1.0966040986713341304204477237666655 GT 1 -5.0845712182613182818031110779715377 2.6323819320230863792323381125712700 0.0267385212770452097659679454280132 1.0271024983428290289280276964400012 GT 1 -158682844736152762213269.9867570482627295526917658427627521 0.1912277049723310060138903980198426 0.0847279829393725127773276294906466 1.0885339714824056635699034733219555 GT 1 -227.5015820404311907379331205425956873 0.6531082249565668932327078802804432 0.0983606298243532677499867120886434 1.1035406502005780036854694215176734 GT 1 -26922107254854204531623253.2041695530074145552973373020796426 0.3327892364421646338320521340517674 0.0827807148390651190864838719971680 1.0864087020954312547598997960173658 GT 1 -66913.2217120519199418314747154156259581 0.5838484949560544779526029860963289 0.0163484694696164548327873254847647 1.0164835802905716822667752388622307 GT 1 -209346473934989832700583278031138.1450805575504914536454779095260664 0.0192539513525037815113570075949979 0.0645240418287482658857461697437223 1.0666998330410385612417753098201544 GT 1 -874412930490883689141655170103846554.5047014132740164046561276909468832 1.2039656384743634416869869365548656 0.0996978459678112310273881261104807 1.1050248452989933509053728079317826 GT 1 -80190874268173981542723699085893933870206.4261980402994374436814510557840175 0.6681280685449884659337350696686968 0.0662422166579096620520529822010074 1.0685382069959922317525537460667509 GT 1 -4697.3967808383662392315903571120815498 0.5218053465421189640104699567647285 0.0224985052665655000544248903206017 1.0227554579847219207056688198346134 GT 1 -360844455756742461763.9710384709953607999224853038899655 1.4198266641487405646685474258507278 0.0212566152461405631077878697083746 1.0214857905721397406395627417467798 GT 1 -110051062971782578994.3564368357083248529512052256246739 0.1836193875179201550180558704209954 0.0688909995583551528205628388991275 1.0713789296735793543208470800444173 GT 1 -633542046897866957286.5054984299417582106859408995301665 0.1901253375353783145717597630516423 0.0800713484415217685454174609041141 1.0834591646002416125359398060655255 GT 1 -25640586259.0945401161088586574353219191990006 1.1251658760825367021333421615245414 0.0973003451335580987704917530866162 1.1023653890128279520931619292337860 GT 1 -27.3215670545522780551662250701696630 0.0656950058619963721214991141605785 0.0970132558878689998789247709084522 1.1020474055044285450622641759695377 GT 1 -4614.4743861564070506450735771984225351 0.1005477600113471639706996282268702 0.0969432510463641085517390539101850 1.1019698826299144685882436924609336 GT 1 -290127203061356882076384.1883495724347868053177423900657986 0.8737318547739700855698081682185905 0.0756959164667762076527006636703483 1.0787141667473205753660691101613840 GT 1 -180638407.8436554946975044844791938654247717 0.6549965501666067050146861138173228 0.0137856327539128879351400323290724 1.0138815370097598298243216101692176 GT 1 -1801781.6135371584083094902358263708165990 0.6144156752514586091907697594910819 0.0315937490764793616430104621014952 1.0321035990407592505450733885254026 GT 1 -113584591705110343.3352414148667188803036603891823042 0.1673739888929844072061214984638806 0.0908265086669590775384940349273411 1.0952193434637251536989467156238442 GT 1 -5412125006208091539678.4522854983250772083698665663186117 3.4190232127862034947285157553062275 0.0669169269221408659841999681577434 1.0692610434298408967644276305816385 LT 1 -25323843958242221504432041645266976281577472.2243234113364841212266112950689530 0.1871973363786852744992444994287514 0.0041012660133717737683683796897959 1.0041096992707471031791347718378984 GT 1 -2694790574959070.1888180004372065424944794473253056 0.1636334112272109368947162384090071 0.0164326902735049237287657690124554 1.0165692045253710265507294939292571 GT 1 -320932689969316.9424024859687860365878773494732202 0.4905902918985739535698907077509463 0.0280947845149161439767419276711308 1.0284969942096294773672998023755984 GT 1 -37.9596946354094621414020284348250140 0.8493364771280018136296623786507376 0.0731685053842831828013113464555688 1.0759835048954283657156444848507111 GT 1 -176356575723984112794603982429.4758906013787158795459071278379516 0.3483120240335195556239140975003512 0.0645042026326287520317740690726980 1.0666786256699903050631901292654431 GT 1 -11212.2782251453072158710846780928955029 0.0556419871187385063046294628477626 0.0013358174988440851471415711342012 1.0013367104983840583793554647216973 GT 1 -232949664294997167865337380132686548143777.4183200236712758578151094199893032 0.2618514388829165440004134671360478 0.0852797930882674485259919069395649 1.0891370452642400758324384991283108 GT 1 -3766574.0954390303174517565329867410385248 0.5690228653827127400623834500881858 0.0656205624673211614373399028055463 1.0678726732155096069252364865830443 GT 1 -14790720469882678295373805148.2154653673866392489504038989729209 0.0103056767962559935688567302715236 0.0318622541208265471385218719659821 1.0323809023672120478918807101829499 GT 1 -84201201116355450.5900657277103479050812256882958576 0.2942060004342294486683032994352656 0.0247909551707839035044998667345477 1.0251034260127048361848198239500332 GT 1 -170265896464563.3577177805219886623463761553224311 2.2931566656714420020289605272662688 0.0244503483338104000085983483650160 1.0247542215303189278995214941556491 GT 1 -8235953959038478377871410846389252.1596841561598025496474076644564129 1.5013785099713251641864567740839728 0.0691540871814439125197386240237673 1.0716615225795256380643794067458703 GT 1 -447937345155259016851271541366619382454241.7610025118009271306642042695947332 1.7558037016051955952475398472189940 0.0782541550867867660249841675746210 1.0814857497020594471890685096755820 GT 1 -11780074519485778577151.8150042380989496535802588906725452 0.8255555786868835632504896464858300 0.0399008360559902818153964658674530 1.0407187040798862131467915242010764 GT 1 -912650.1078340149705699706256760437077443 0.1088073623951707021112112346916887 0.0587096958361331789477655974775498 1.0605036809559670469196881492904331 GT 1 -3546500.2992140654916066161106700839961881 1.3684750465666310650644429526556893 0.0743967196093211704734583191905777 1.0773095590395048519951295312276681 GT 1 -1406808058781435219205.9769192710324041288922857836212372 1.5692559448953339049268109846004557 0.0336270474596991700133749093624764 1.0342054400447636775545973320497172 GT 1 -2783240.5102771556080461297703631529853188 1.2720205128830793060748478705427965 0.0906065629581609183816065117573400 1.0949774544175330151105983649409718 GT 1 -7948489375368332276721.1725538113418319911705181850710957 1.0564727464958346102045551640607775 0.0104401351739392922382888086082816 1.0104950156927046529710024814875136 GT 1 -555349216364873.0720004832819168205394222866853526 0.5254252294431871948940527603419831 0.0151990816441536903082244543819992 1.0153157715820211278636307877026436 GT 1 -32511231692878078856008.3970705374319955151211304636186601 1.4347946214523554428892802603468708 0.0253780868374414468732948307511530 1.0257056645626639425487605754281422 GT 1 -13916822888052557239800427016852787264345988.2445114177326794290986914288565006 0.4650496039730004392585195837945073 0.0121753188400581404390360195712932 1.0122500451987494590414026793190877 GT 1 -32259942.1049052376922154626753258944982283 1.0524101624034449777414179445328019 0.0108592356881296045574656829753312 1.0109186275461461691332149266853762 GT 1 -13976165086347698605401933724.8059647350195130239772047604921059 1.5401355713792286366594752448620545 0.0802130893633417620729448349710965 1.0836132546400424654080265351417282 GT 1 -28483.1934084598131403862959038624668981 1.3760243625809653816512191936955557 0.0318314576726333129004388094701398 1.0323490928870865089563571637859234 GT 1 -366395.1648538886434736159645814533479656 0.1632360389923573334321177815096021 0.0500889491993974388725844845918273 1.0513869295073893757629351756538964 GT 1 -245613895624079229405167363230879.2305169598076916399111230132152969 0.1848248573852918620287078436369939 0.0680545045292617361910448236377773 1.0704809472612137870994114088479106 GT 1 -9.9548808385483386045897647431279318 1.8209350533761196211478649953175758 0.0589345897472450698065013175767069 1.0607426303856200395694562061196418 GT 1 -20220279473186904150193533924509915683839.0522763716188280658302342770857942 0.7803298524006908131698224548237580 0.0139064463298593490933673058041625 1.0140040468621174088485768765377029 GT 1 -3678630677257.6833035981731272620513342048826870 0.9503050954111228156470752114205586 0.0872941137428490061521730400488793 1.0913415902008743869205204027112547 GT 1 -2601607856489880722488290.5999680484714486533384855291890423 0.9825110766769871317571711295885029 0.0583086494511474163061375419756891 1.0600777114410265463635451394621049 GT 1 -13855255560250215856046725191869185732968.9064168060898392740873972995823641 0.4185394993067847202809829656113271 0.0229946581687957413379874393569345 1.0232631593686267252040647178063033 GT 1 -110270018504367740652092247842999.3212202542219631272904862381431042 0.7735722068749935163747506365484276 0.0236592049359420137325460409263671 1.0239435782459909725574000425325723 GT 1 -609369469539323627649616792131.4801578525853390752791815338274386 0.1673688883774541078576902595810367 0.0613936182940544672446921057973030 1.0633590764696245198421837422755167 GT 1 -637621796348728643140635064537989559837.6303987830131251289568568728672438 0.3716352450760885530889071037388074 0.0350842076732079954982079053790976 1.0357144432882080115635336735111517 GT 1 -22524931205414764098417276053650076884887.0728182100572992036740812983285081 1.5052252862143196610304366804233866 0.0361649421024134525675308469572211 1.0368351007771575875286360183958788 GT 1 -16.3134968100076084000294683092405614 1.7559187062594640283537962586043931 0.0463653704911258777655851516051966 1.0474746688286517135213083239970985 GT 1 -2002337820438.5589624600291661397875984754283497 2.2406575511637376084714988284837754 0.0275953861151498510453174963234297 1.0279832917089222481225487105709556 GT 1 -69209216835943463571603330.9849191782942028299940733461004515 0.0423271320849216254568178565331451 0.0499177148671097430560763937094934 1.0512066822091353847978029827991998 GT 1 -6000554886391931149.8060761866769785724207794313559729 0.2281765886982868293684572215446800 0.0785080429333220106169250063514957 1.0817612299985986678033748959554099 GT 1 -303716592152165661263655433397935032532020.3169187239567231537295293454256015 1.2936076736969422698544701655930048 0.0860965657237947954994944432777449 1.0900303648861098665216280479776771 GT 1 -69404103752007803.6157437025981410904121820100779124 0.5427092083147925346865636835101411 0.0206135902234166495087337850029399 1.0208290158806619053987872980067338 GT 1 -392466780533203.5897570675806791511685175772117417 0.5482614926132975276193996376362628 0.0345180511212070520911459556060040 1.0351278734263097960739212877423121 GT 1 -7302435739694298273.7239347101634879018251820945760692 2.1350221383872826287142320443800238 0.0722675106563446872422580500567746 1.0750118535459816171383597716818127 GT 1 -9822606252.0601794722583353682116525827155825 0.8230068165031338491345586544984131 0.0884079617968400379684727449551485 1.0925627155197883048118978148455362 GT 1 -401820838701490900428111665.8378347019084423179911723154352108 1.7262598467485012447422343583452006 0.0763242429783006430485306534613381 1.0793941812387647073323738271675421 GT 1 -70001337165440796571867553290653280915.3036013379030135806979782993003393 1.3825737522492501777879577465518532 0.0637567331493078006273765734265265 1.0658799357913155878508595684810547 GT 1 -251744014450245852732.5978868459855666979628411692199263 0.3408945754505341194796944452722966 0.0506333796604159850037336592315045 1.0519602321731375351390892409176464 GT 1 -36470666626746454128.4871903002086858941520286271870508 2.8209207164541951339496175227920849 0.0471329706390704060388619075778787 1.0482799135404520516105992120235780 GT 1 -664548461132386387532734759.1225411149547807529042954934265698 0.0876760357295563869318344546418536 0.0177858160775175992167246933319913 1.0179458845094825747788057290674483 GT 1 -8536773128365700908734415156743723.4862018996004951403164627597653581 0.6754764226993565372686955106261855 0.0942866975620131429072580488963636 1.0990324662430601666502324456117085 GT 1 -51759326968416734636278103659131511322.4817350400133380628964522304822836 0.7957684402413027532574909600716215 0.0752927269387032644084378637171993 1.0782780531095915775333420857803416 GT 1 -2942.6144521475074139834148560176657011 0.0376711176647917968940988675225348 0.0411131154642369082177456334642761 1.0419821625302206653447440649028501 GT 1 -12449680625160125417133886226.3483423048000176971944763551182984 0.2793683547503010896012134103469583 0.0165920210646706331115728137853128 1.0167312104157679387811567557629425 GT 1 -1879582476726730869930603678708744.5484599853494144220945003128578306 2.6616661489490844256104798671449097 0.0922836393045195728306249936615620 1.0968233272697198512403813151488026 LT 1 -47551399400001809143226.5296823836351065621062405415895569 0.5764495978973593955678122989384836 0.0920614475568050867612670229718255 1.0965785761915102223613825841750598 GT 1 -500559444124.3119752318789015916452622897012616 0.6512768831493739749713517772721889 0.0387148107932580185969385582808846 1.0394841510749920555513062321821013 GT 1 -35.9009840125232130796083678782577897 0.0270437057898196364315917789977999 0.0338709865297256046702851784197381 1.0344578993701486387277185293132849 GT 1 -7460732298780856114.1408653104675341028523054916436033 1.1984827407158217812835311581507493 0.0351957675666513507145720392926072 1.0358300661683525087928847780658380 GT 1 -10320886578316096489760591258986773910.4440832777250842828902179180333491 0.8409164236641492266197970900265894 0.0180568504100289271245296504582416 1.0182218647780763578723242738678104 GT 1 -102819789166979236114377325.0413961573326971316585510167674868 0.0100037673900518554747399250825679 0.0614648800640497781050875394609286 1.0634350023068266843678506744542033 GT 1 -403457852494721428248071154336903.2157344515240536715930586185648018 0.4214231382937761417605437509548300 0.0228329172946276817454058484809126 1.0230976254858366803848164652460655 GT 1 -1219766589558869248530771.6228520914437911249068944901693574 0.0710034752008216413038155117842455 0.0455643628260801154310228094656241 1.0466350690234593107754825302739808 GT 1 -13208497326046084241371961486360.2462487407895363999072062435084063 0.1275582176326506553564369253576544 0.0705092946157544583583111430570712 1.0731184714572450432899698455140595 GT 1 -94240842407.4602290136015338613559654405718896 0.4111278482119487341405032038615472 0.0029678307451020571086823000718795 1.0029722434877795004160811054993733 GT 1 -4149480921059259610.7690077526867762092686885531408043 2.8904148462655763516715657302990470 0.0287989308105428645048901866992801 1.0292217577822691720695646452470488 GT 1 -1300896204409871573925005500.8070105590647836317805246064397049 0.0181005111653414180315617469945571 0.0044242848340970442092887034185148 1.0044341009457929567668133764239309 GT 1 -435411623734411326216138354213.2168706194496557328642605738930269 2.1590429134787754933000118410467015 0.0751876270848094562358572015986581 1.0781644021362314691620207447203216 GT 1 -11892053811003321390923647354154871517772.9043599711629605918152886959283158 0.1987142821819844280459382537688265 0.0983619596754630232776531050418742 1.1035421251273995922746185576877842 GT 1 -1.9453313098987444642001043536309834 2.1555687157883162921551272200500083 0.0402722592356798784199913169644620 1.0411056381137959887756101361684474 GT 1 -425458196823772034267916974954087882.5875286701786949815697462682362987 1.4684662224552163658022927129876734 0.0383187150199934656768014548448701 1.0390721878045102073708182779019013 GT 1 -5559.6267389095491276160488698537949076 1.0276624540862393051900297155443512 0.0066821864505590004432279912183904 1.0067046122163674580946112806584925 GT 1 -20058901777962.9922899397188939507635636694143027 0.2902803202981582508010702655546341 0.0719938740668644176336635801667507 1.0747169449966731674820544989308289 GT 1 -1.3012190608645058124674335222135827 1.2785851910615466491536254072840031 0.0556400260487166937007935310415641 1.0572478571855854231373211672618006 GT 1 -83.5548641226526147231928575957686920 0.6556129003077227480612909205558709 0.0925270603581082109029362997647170 1.0970915318641415759521881519225289 GT 1 -15417740633510129857.7597432228969271693943262484539900 0.8717621529662277508488742049557958 0.0625623697303158436679963458353527 1.0646050510629744800172208256655272 GT 1 -91697890940808076786920732.5706462416665893723759456501237234 0.0121215757043309197266885660939210 0.0640130252057218938977759009942399 1.0661537184194498461088485053419503 GT 1 -49010619874147.7169042819048953345137447746550243 0.1313545325750825956263522853333216 0.0327936225741137915295291124466296 1.0333433860040718279435005650725650 GT 1 -109140519593576821644857222876285584566290.3491869469403638076393704331777081 0.5699720022044958316715210677723985 0.0727558724078223844819633478212446 1.0755383957765434898881801726694668 GT 1 -8042018650083487269924.7263031080721739179986802922998187 3.7411593714166527103877600009949646 0.0402209365329994661652782827994206 1.0410521632289146144503064222417636 LT 1 -14632153540365874449583047841245483.4837203313426213625795425609092507 3.7814321292819773097715719471721075 0.0446177214383950927411614715000795 1.0456437269092063369228909808256327 LT 1 -3391471687154525488696257090.8444308026229954579983446339908402 2.9521651935551924044940909912160461 0.0434776995346272657517996691836195 1.0444511757208436298300101313374331 GT 1 -7256685789960330499104262208282519029.8636473356975257583933991915658883 0.9709304007596468005697298245907369 0.0170760669164148157524979815801884 1.0172235442466567640415613807837777 GT 1 -48296.7066672575232676541872623713478659 0.5077201600153680138247063165979940 0.0464225235336646203496472080992167 1.0475346024274127455670827240835632 GT 1 -1059772330565370.7332925978248725232073330235280714 0.9334529011073830742711640129042401 0.0659350365668447640655777912714145 1.0682092891751073072355749405513515 GT 1 -1736401820457179548522671479234903228.9332657115407708932739089891317160 3.1924177765514892601246065028059995 0.0669021017538136895807525061467899 1.0692451551868941584391414884634769 LT 1 -742.5374361826128923195117704900442762 0.7177303935057449100226878185471718 0.0744222500693258673758146823857632 1.0773371419280372432821560316604505 GT 1 -12375072.6770659569077443592683976565681131 0.2600441657989131085494870926655016 0.0410830329146046846036294393585884 1.0419507906570134429454403961117164 GT 1 -6071611404866241201715503.4487062402199509444058293344946384 0.5779352693814259891237384603713479 0.0316491169785158014374600348860269 1.0321607749262444313732581765073664 GT 1 -3261700918562152014225188022544873735301217.3907443119826841281727398519810624 1.1206333004613678921063338994121932 0.0029033703817151693471508819492259 1.0029075933373521418793216171719196 GT 1 -76945.9121985709136139554562630747769344 0.1087377075052402728248270322850599 0.0486279267559081437888413257903595 1.0498500487424043087173529587617897 GT 1 -356844326055235582.6898678431956778512354834735711904 2.0197574009555960971172433224018698 0.0308448665313346287635701748869556 1.0313305834465502631741402165239303 GT 1 -2852784118033282445061.4420433026971016070807455683178182 1.4908778178242139776649900122875513 0.0736816346092281213009338679906526 1.0765372963066175557645099387616999 GT 1 -1779966413952073659221161355614677619735.2683373074766152239560376800077063 2.1618151788830804220387277164047631 0.0863461943103987412951111259957023 1.0903035476709741850418476619921430 GT 1 -189.6446343182425533304452361793794906 1.2363869855778321055671274038108051 0.0027339588662271591981628921979793 1.0027377029574528832747936812136543 GT 1 -22.8979525308764947413757092635884951 0.6375268219906475695624964899329643 0.0216310192742652090775690798998302 1.0218683991942055407444494652370297 GT 1 -7754634127248506493204506856.7099818597591284972904440494935668 2.1951016924222255654659297007714454 0.0821148431678670362691821910025810 1.0856829976775419224637805172665476 GT 1 -9.4737044308105835007055560633550427 0.7554393687745578666030662179640565 0.0861664887939631651091765912936155 1.0901068781615845635594182597333247 GT 1 -2443858.4142521013953042208044158273501941 0.0348939694575760709949939576576123 0.0687740996448407393676111112941879 1.0712533884364818462562899597880734 GT 1 -2.3857517885441275727620267107397840 1.0065213228789718113120005120508352 0.0411313877020041156018644601486866 1.0420012183877561311845335090773094 GT 1 -269.3217029835114943052900435815257993 0.0767185531010008284738069063273675 0.0131594813979852193911696764597959 1.0132468345679381990984056474914290 GT 1 -5919300530554423321877.2093572478299809808595272685947119 0.3211587653700012739699635090545610 0.0766892582508109430398299174563221 1.0797894361878455951852738811428687 GT 1 -6842747708944710.4715486477874178975458073130566971 0.4359016340217914035222232352856351 0.0904550870726884181880724166563479 1.0948109002450672636660652109349082 GT 1 -23955168455000234762769456713051923016.6150826646858078810228999236856819 0.3152134193692010974106828799691923 0.0846745636809118883643119031925026 1.0884756088332310316633998906102967 GT 1 -2342273929262467778716182746879.6954315756034726866585696874260841 0.2847602937893193251323372989980596 0.0468201982906474484245270090828370 1.0479517239638563069953778192599755 GT 1 -5411211398396444062787014206266317651027.7633546453457400280586890741548509 0.5687370572334547979644117285712572 0.0848667110965455957062008494643215 1.0886855533828587381677544065505957 GT 1 -15443491962777857876.3908258808817055279886143489340628 1.0895626243049467170132476742948358 0.0697921580725291841933420343968716 1.0723472318605817823333240506039847 GT 1 -869449195218861212811434836185467.3247951066891457873778661791529296 1.3483465919510409191202256868133414 0.0745682763656389612589699583630932 1.0774949221001017185591058725822813 GT 1 -24849576999853244.7727221323952032175186338226828040 1.8880148987762505573930845986815222 0.0322264446021005541127405960964621 1.0327571494456087179999592402055424 GT 1 -135841.5274200380748826216639758553087319 0.6333468969674369558695306663704257 0.0699238681158708201306998359638690 1.0724888339443667099008361620247153 GT 1 -4581652209154840707276181122703989284156.2990739632257514631269808637054798 0.5215117121441332577127049597445196 0.0742646159601578101198508462529740 1.0771668475497859202863580938497007 GT 1 -24441146149050511926211841527779320328122124.2985155392862127486005536516759761 0.1307196388004036303366156184710593 0.0231848880241370245399634826301356 1.0234578854045546569802868984348759 GT 1 -41.9725915008384287688637280447652163 1.2786603948257655251018224614315186 0.0949324239115032973123940872521874 1.0997456683588089566257319600139845 GT 1 -3109819153245622272605175940134537950.2093459504418633180001129422868255 3.9471036396192208135715931432304423 0.0778776534424155962394966749637967 1.0810773673118806012292219465569834 LT 1 -2255756219125536228118389460898816104283849.7399325542072841737909590133401807 0.1496097803137072830278084933041442 0.0082085812365554904099626531784683 1.0082424571490020496786320909344991 GT 1 -1990392547861324941694354385.8251862226305808197457659662700852 0.1755343100792811712662893327516882 0.0069997280369353972783228289630453 1.0070243410567757790325682240419865 GT 1 -15384923705772294855071516.3084154286434951108708621814857936 0.2232418179934119395433149900178921 0.0965784381630086130201374729893758 1.1015659886156484802663948172703176 GT 1 -651684351348408727855.0917625696669069262270391646292850 0.6340068211669654581270562374329456 0.0495255605307236171855043290684605 1.0507940090835452944354869333473471 GT 1 -258268729827.6988197931004661034600127240713054 0.0286581075444391937849526489528823 0.0404736288078573187490012799327157 1.0413154796055107917051969509429215 GT 1 -314166618018056.1338877510942830873760872658936817 0.4320600205525380336069904580212471 0.0796802005784170654867205491513207 1.0830340612738001825395874945714687 GT 1 -41241061202657.2687241985928086122835537168468600 1.6286711413674709432119098977896049 0.0191005077521187277216769402844754 1.0192852790510251572703498071958651 GT 1 -6326371333541654345809887660.5851349299750181891061314028027603 1.6468477113344393420344210468686596 0.0174626184378121254098939032392660 1.0176168885709645726907022044474969 GT 1 -12128405471876980167707183308117492062071450.9367297505687649178224084635497078 1.1181682765474011148443919948114240 0.0592000307549646493168174004087565 1.0610247345280011425993159772400742 GT 1 -20.2572928835400318146652551558213173 0.3125849926175242767591881276126921 0.0849666877344567128445713880471814 1.0887948075217406361753717179511082 GT 1 -5276957681340534751283196976889.6154943947499901279628041563561975 2.4147839136016152775669196658117125 0.0862356203127446998722421521944242 1.0942489754903603276069069495565183 GT 2 -184116101186.7150847750786143123061861229398753 0.7732069273103607130371967681021311 0.0499742877819629635866240506419601 1.0512662292611438068048220114585663 GT 1 -55560.2251818154752302145754811626951189 0.9718049227534277991912564796511276 0.0979474373613741181722054738566804 1.1030824871820603832227001044945173 GT 1 -1791716201203612915.9510633695243446340639116341500437 0.0926980688567540192161963774937951 0.0557154093504040131337500713992149 1.0573276851247755391961290983654641 GT 1 -1740366752022933859014738634.4120585301570136457989974758953137 0.2675881458153108763512940600627133 0.0514859732284041723779145441234338 1.0528587013436203055462197243531623 GT 1 -596302988164661380467969342790681715965.7339607600228867589722781071359405 0.0075372608920191707763889875307061 0.0969538909726130450454826757757249 1.1019816648229407877750602265930718 GT 1 -110408659699050105003421932753725370005997.2409423902787594404541171349482460 0.1385473600985882184632806256836757 0.0145189494296057897724567643215937 1.0146253808132994555437783831465880 GT 1 -23135826124539809405974.5399877803366808460415478365924143 1.5402600616867237539783716322481480 0.0428082669801275344774153493803761 1.0437515596130119357523016867662875 GT 1 -130819789145304376508615.4006413451660701554905637696453947 0.7912325431902888062022311418154922 0.0001081383034167351019162342385288 1.0001081441507846214543275540440991 GT 1 -2766556811661124.4088176272809212200213497122144038 1.3765878737822094173079760210007484 0.0449631793640827177474654351430490 1.0460053836049524163731156634459252 GT 1 -37654367355693894397752618005331607555.2171535631237764412022373904950808 0.3427951623725484675370755545708239 0.0488201760631849265471563839178996 1.0500521449987177177977879268786241 GT 1 -7276493070680087170437442.3905589395930437537951032993887515 1.2383799142724760516339304417106442 0.0516873102277184409910795077362767 1.0530709895809319791856312546760773 GT 1 -636.6229085321378270280906581221908630 0.1805487710910228850997254090653437 0.0672583490587162231453677456046551 1.0696270179353675140717482153849050 GT 1 -551002234688390051261.7651547020686085954711096980927698 0.0954131064726116974547227727501428 0.0034999724880888016364164775844420 1.0035061117207469316457560982676344 GT 1 -15333075169871071958777635339348250589544.1951519229493764806400314794429804 1.2806047633995427792746797519045031 0.0783275052235410218128263831032269 1.0815653302673752015702783139146795 GT 1 -133565761990157835057187698568913493515.8782651631407263684624262563747426 1.7712188176880756272462409496660213 0.0975719916302665911075213729477651 1.1026663610762354411235534668947742 GT 1 -464825490267830650592853392280973.1727970905958355496461229976232879 0.2882169154215362132595325761482134 0.0033296944337570902631903963587840 1.0033352502023708321873487170260668 GT 1 -117161936.6283521375667968719207034386908696 0.9447149397822810459677969404483846 0.0443384190534045078136642698954631 1.0453514234274315898756127658946549 GT 1 -103972172204075930227558048446.4153125348884397999536051010409917 0.1772112226265464898086577266002049 0.0169889472539156308771265072097380 1.0171349150059299182386349713055700 GT 1 -473802919578614986450607333375065378782512.2681647506405054126893437770668788 2.2200714940889904696593217073617408 0.0791423675123293721493708274906116 1.0824498339504967358606774840935837 GT 1 -2126648975392639.9456436211631551599116319623854638 1.3458676466633011684906790951288395 0.0197837752921002778698577560996863 1.0199820941973429568935422424570553 GT 1 -78000026695086440812546962.4491252774516191957975234551651505 1.4241223882942027167470324354031088 0.0176135161674365973253251210287025 1.0177704799976642535967223712210711 GT 1 -41.3269764133355126393939398932282369 0.0064513974306724415752780668632177 0.0644634782951845185826863265113017 1.0666350942600455971544077919842418 GT 1 -515664640772744953222069262649221209.7860802517636039402067291826941375 1.0199131582933381760321869055324131 0.0546445157772868920069300955662449 1.0561942484433634298658847845903435 GT 1 -3.9947046308160414058542008012609461 0.3956686623435601730251916091456088 0.0331948419495405355837017442725836 1.0337582949886593809920346609282974 GT 1 -2538397916833392779.4938613968917738559947039395391353 0.6256040521968365786775506742605107 0.0300834221436013192499918921584323 1.0305452133930089155691498834424478 GT 1 -127993304886284833299247184791.9623624355122039303442936305413938 0.6184171968297875977167617926717156 0.0788493639191265223444437583812878 1.0821316990097651341359100317174763 GT 1 -1190459951278077.5079528178773505255534420072448300 0.9800775373447696327890110739938308 0.0272177610318517138625808122757246 1.0275950255765574220927287239962069 GT 1 -180380592510998300.0658867232277841584583643472310685 1.0305828577877648322621940394186154 0.0522755569987685514472287041461660 1.0536914909200208581409175740326026 GT 1 -584051414981127079527460434736957229886764.0601276275807000383707785382255514 0.0930747398388643378369635563184294 0.0262842446131354401401669026774337 1.0266358501825991569994728658615837 GT 1 -7478172523278816837.2191274154768921008428108523971986 1.1558932343662185325622415068583334 0.0461895087631142894777133697432662 1.0472902737688964650875475712545868 GT 1 -3100249885296190542005381379.6618503660488816345747288001608611 1.1076951751777212697772624180691678 0.0356040005996732471037595325154197 1.0362532809621089051577191771888493 GT 1 -1545821915091422448946047418.3947147262311981915428506705391268 1.6152266987093761230176136600980082 0.0793295723782255086926746461852818 1.0826531486548405649305621178880013 GT 1 -491919.7029582462230659547604326826567483 0.6257582685922457803017119351952458 0.0029909983040410989464286454094214 1.0029954802787521129299139078904639 GT 1 -11132.0038692193240616718176900836759652 4.2878456649204664513798584186160094 0.0300169065702569930882313051317815 1.0304766370904764307924528778612503 LT 1 -36957438.1283350427773900964695865140928899 1.0159673709059193903638503006804070 0.0986136536786389430713244771379110 1.1038213160320540194025692178622558 GT 1 -31921730815740949144844775328.0319210879571263979371764050876450 0.4130902613546911451512162345126898 0.0751444559961759472724828968001606 1.0781177223098188901216245604220745 GT 1 -308236847898703278340157246.7235633592470354465947054004218657 0.3034499477709638725454468882401833 0.0467580132184844309281100328536071 1.0478864864885394747497786843603437 GT 1 -467554581816944962824291880656697040830154.5174088143733150687440217411837516 0.0976973387010050658849163148293017 0.0882705235124564817415291478575104 1.0924119595685898996128674334346286 GT 1 -125091697605761021572910.1517951580575907968493741293842818 1.2789420578464157887263712500878945 0.0009008539616950703565158192352071 1.0009012599744823538874425710630561 GT 1 -5140312998052483642956505935008.8383565763166855763117841254222377 1.1135406052811740334369648446095577 0.0578005457308182889931552242645779 1.0595382919254685895065249170376588 GT 1 -183302848.4979682983817119928630807666498565 2.4016960572957313443355863255177497 0.0933355245868177215656996066264190 1.1027831422026157724609663090576627 LT 2 -10122230845221.2178126467623665593715331165730228 0.4439321656256011604885873986440232 0.0383592559203955305888670578282550 1.0391143449677886742377405821070974 GT 1 -8814107237201085983958775049861107582.1212641762595426996170484815451811 0.3649251637634438408496935359541478 0.0287837350476953479311150089749591 1.0292061115433474620000159709289603 GT 1 -3833820598488484109729570.9889988704188025619203827932191178 1.8217573127716016838384007542471878 0.0868926214854792563982189330552497 1.0909017946625378325419109254665665 GT 1 -220750344099629.8989431934091500666561699710817973 0.1307289907880392438484277314050246 0.0274053895899933357958074631893252 1.0277879224528448009332836360130375 GT 1 -3781992637271377099954418940185.3972246697817298538938786830550735 0.2489377077684897717965596524265640 0.0993044391902701261971067047285670 1.1045879688048632006765742906954095 GT 1 -425142635221064487308842040944.3968019527726070323173646280220837 0.1461802300471829797967682476329807 0.0552856906461222363436880948503117 1.0568727153397814400983174265838303 GT 1 -101190248378833699182377680.2203062068575533589520772257191151 1.5915660988557165407631261526525490 0.0192328441133266249964201151076809 1.0194202014258685051083632289063620 GT 1 -80178894429417.5815456981161307060613791784493538 0.3752775960244000116252911220871756 0.0540864630323298581657901596405382 1.0556041126616210505385796172740271 GT 1 -3716553526.8675020938423366541251267187736765 0.8692495066376627932455279247748950 0.0523286899789189726184566006163359 1.0537475562352244144941966574020924 GT 1 -404.2374290215670127851092220548372272 0.9495135306346611565117884412265924 0.0017383854052656089146938263105979 1.0017398981505846930414069659630632 GT 1 -313642399775.6019438475157291830630883392698589 0.7537362289974017578439788384238715 0.0765249433556900908477183087953693 1.0796114892968771078077617139938209 GT 1 -128836444442200537373.8981823249531539702718682934304719 1.0783666529140294880315904249897810 0.0358291778286033260485256739611845 1.0364867986472983856552229234188464 GT 1 -27536923320006772490709904397554.1471989286937608083198577115835844 0.2384472026466939388209159856086063 0.0993507052902565460864213467439553 1.1046393372031516574533180831861517 GT 1 -1406012.5005386191427007179441134118000178 0.0746414189031680507535062782736720 0.0477872436975013017598009217325118 1.0489667856484635492752104010435573 GT 1 -14104349946608514763422138165606603695104766.1482672118861630142831201353649043 0.7555860862934134289584263555576240 0.0695433915909684331228226321152524 1.0720798365405948814842402854818823 GT 1 -2465178557272573783.8636406119493051316517463240981469 0.9712195430790554632996055598974461 0.0564810569825760531124197012435190 1.0581388369851237530017160235298678 GT 1 -37763403966.5824946339900218690336963749878162 0.6744713366282999759215257124142355 0.0322788650874307181291623372940351 1.0328113169776669668330652669371652 GT 1 -1203.2911745477014402992028682951299184 0.6887309574796016744247073113301605 0.0683999481833104938577979080153114 1.0708516853507745812159306401784881 GT 1 -1022005274000019443898897630603382483106.8285737787487801683819334664378974 0.0420201767368849416356318285430689 0.0976330266165559722515947723632146 1.1027339975523224477471088265316992 GT 1 -15615214681155699531653.0409033960810206725855025911732068 3.7125002817031487644424001161580367 0.0456646723263879711009706619123685 1.0467401727810578131557921947107918 LT 1 -397991656810388195933875.0766440899755012120237172920125045 2.0766041518475661167449877225558891 0.0011472406287859910751199702161811 1.0011478992130674416944709921273355 GT 1 -228321201.3649154991566961374661126845962641 0.6554056125225636914727273128713445 0.0761028188689285344296527575220010 1.0791544893642413665104963757761724 GT 1 -131972778749284302911809.5132982380114323161386425120453444 1.2217111560580947066279656101973240 0.0727372473283293382815153224633996 1.0755183094887093649063132654156236 GT 1 -517058429617179579.1471812328492572239104439526803524 0.1922305797104818575165992904100680 0.0635233780711284747538143209441223 1.0656307206462367653687758300394312 GT 1 -15090190054995268173200161587155461379.8801188873551760538457920709925049 4.3884253562973479609439174173071969 0.0303810819561273364338976851595166 1.0308521526735656482026555600892193 LT 1 -178298539304520430758102596130.4347472394473398418986540673603980 0.3941182565716756748009776984060169 0.0763359798966258854831575041352812 1.0794068880710115243883352839453906 GT 1 -11510344579149947.9026406057132817572999627500701328 0.1242044334358763249222969362415152 0.0750813412305992028871370435004539 1.0780494818018621743107225421689396 GT 1 -3652381141979871.2987230188822193019562636563214489 0.5744309374791286892736147480445031 0.0226072928758361732640195320986936 1.0228667556797885873489462555559752 GT 1 -1680319281451015572.5124337089823805024334960128002288 1.4635048978314534237239172755492745 0.0252031720010097652257332894409544 1.0255262112382367181382104621655704 GT 1 -2988930050443777.4565024619827809295774408150592772 0.0748068550464531436339086453536200 0.0651921545515156581097322397105029 1.0674142837034392137772818628642763 GT 1 -35065354.9836232980995414005722138391321266 0.5164488470145504220659138805509300 0.0101425462288908585609701207911196 1.0101943323102823605831414174526242 GT 1 -33607407986745501776004775.2079402040234361696029174461754801 0.7433935373947391882852784710789400 0.0451110221317467504575888907224486 1.0461601988004695505143108439971257 GT 1 -15738355978138250645884542096383690637.8248415444172868214892663331868545 0.7200754646785744174133517108845664 0.0028711322508786407059926188645450 1.0028752618574047690831447093958449 GT 1 -3349936214762.0147554810882655708569197466923183 0.0368406762126603874964034589373270 0.0997020011131543622300277476532135 1.1050294605883305227190557097104064 GT 1 -3018515749180737604111339847145.8621179939846050878681374896478898 0.3139201024740861962340792789155904 0.0147635924539559036015636504803673 1.0148736589463207446526200517948016 GT 1 -355273944381220277981267023414731395006.1416654584843078218931832153357919 1.8697035807837371430214945743065498 0.0724769969143245336400453182232396 1.0752376836375512063594855461877834 GT 1 -146799727674252506660515809604.7161004332172850775260360949190482 1.9736918114381826401681394350077694 0.0384666851861511381429438115624845 1.0392260657612036601641030630565364 GT 1 -31812642753471.1777503638222598560937973183973734 0.6137737535539405903309048290126518 0.0845579300720401788313514321583858 1.0883481938462034410732090754866594 GT 1 -112146144830285678694228184557.0055942559494650154928211440159170 0.0164963752619714279063777283894830 0.0799956866849241919494071702206223 1.0833769205640895401880499911364820 GT 1 -1229414903.5894202132092547516556091665711697 1.1666670678708559873233898441277823 0.0966963970844601341987353363049363 1.1016965662197250616695897658716214 GT 1 -4193509080381562809708701.7287558518336816119097727098136494 1.0637136476236135406503680498557996 0.0487122064785491531170218219345441 1.0499386402181255095821174750225366 GT 1 -417816128288.0503671621309936252459127944526442 0.7649635337783829143064261181482168 0.0379702059540784771038340110283451 1.0387098578543139103432810146721799 GT 1 -1116462537642349898478032193710628.7588639096540359042940555859457283 0.4392416875316810627377817611816354 0.0243077900903257148461994392912799 1.0246081010041600627345729000863655 GT 1 -47408192143721886053571.9519539982395189223698822013048384 3.0721830649714982119066819405244370 0.0430895371153189320658031057329719 1.0440454521103067150041235392527266 GT 1 -390032838522718292428082182.6804011759743647192252274841071981 0.0307355140981402620893570916461808 0.0702619938799349766161813104390748 1.0728524463730284466476512625400932 GT 1 -4134315580903573880835651365.9392337408714491263413093578064771 0.8642002304861910211021580695230370 0.0162617178130967374063446954018278 1.0163953906943715022495953464536964 GT 1 -22375281182167.8958656217884392430803606150771472 0.7951853151552287201285404634981465 0.0060629315234399091399360332448047 1.0060813857216044295447591134030967 GT 1 -1465148.3281808465306747420629222475908715 0.0511220241122240357162641342169232 0.0030706634697856509700567041215153 1.0030753876302079384458438322762519 GT 1 -8109123724996566507066.3627777756746350906580677451773562 1.0335354281748081643839055995055054 0.0152027149981081860518281021384369 1.0153194610187278691511466533784342 GT 1 -18.1363337503011522017215182224439574 1.3114289060710953626197759208087031 0.0765464030175648582642792794094672 1.0796347275111238721190972773575895 GT 1 -75978267438754857456696970611709622349799.5786091475285512102645548230184636 0.5121835412526207916836086059402524 0.0718839634301627806367802429454856 1.0745985146055593757389077601080095 GT 1 -504546387623560084714265393743441965755455.7957968903765221324880493939717082 1.2948681929757081566129829094619604 0.0999560009216023728830156494227247 1.1053116289879127691589311303671959 GT 1 -133535.7830817660872042669599524699144148 0.1796664803131503071147079227811280 0.0698799052228247858163173700648865 1.0724415670029288979293529836302780 GT 1 -778900214952182064771463169.4586946682743569612129518614667170 1.1886683819466418004263943581662045 0.0144910516433035283377954912160884 1.0145970724136431299059188853924216 GT 1 -37609713727534144605469081646.1495442366089165526306073759702806 2.0147257067715418004691764281599669 0.0385671980315558196508067091176455 1.0393306051440029866518210128382373 GT 1 -351.9208712276430420729590188607828436 0.0683326379143725076313343265907786 0.0481050915304338070395438703623052 1.0493006405472859921863334837430756 GT 1 -1842673653523918451148566456.2254794063265556550556002055829571 2.6943518298159253905844004813591802 0.0679497510885041490116758047463636 1.0728444170662182537598487676553068 LT 2 -2218726524460485653285314682.4797845150705927521483576765376266 0.8934256008991587481793288104310065 0.0858944653163958069925141154613239 1.0898092495506228488204016350905181 GT 1 -143443034836414630880.5545245518691388929730237858580580 1.4199935689251586943955021305769590 0.0253608727632746924166796098002821 1.0256880024088421272348490066468134 GT 1 -63887970.5092684009466468235000650907763572 1.1010784333659140393096376536788903 0.0128700019472087939856750651382171 1.0129535379351777990260223219843581 GT 1 -137356168682716895962996192876305049848362.7802861622166636797397487812400427 0.6641438037101409758254382538891261 0.0337831691914377244853093832019971 1.0343670074228211543905149235910434 GT 1 -775572108176638304108838903671751084649.4728751095179101404838547848849850 1.1302498982738342852795983253176917 0.0505912632924767981937629441583484 1.0519158705610176145707101642118045 GT 1 -8681271457452.0747333483552575838560738668899655 1.6257338511676627373151625659655198 0.0761297397880199193568829909295931 1.0791836282249994305777900465986222 GT 1 -22079496030722158926140266103547904046975.4314455578674568386531233429968877 0.0550087548371389531889946409569986 0.0084841246858582142494914671973419 1.0085203197393312137476028488466270 GT 1 -12.7250225729384034788282084030826084 0.1152961734384676957739244436901064 0.0328424705443468564416950871017597 1.0333938914648795598400146372964777 GT 1 -13309037932020119806742137838722638.1607362917674895361734532700384087 0.8382998559030804266461619929783257 0.0381103318242501892991147450626407 1.0388555249398349190044718143471336 GT 1 -1324260234346206.7065208640723861244272722465386109 0.0237717110153542586781125097269243 0.0880561641759189111630228419460562 1.0921768743303757465915246816740761 GT 1 -62828851706617704791203512384011026.4939135546630300303041268239954476 0.2013674397107845892886458440799067 0.0056602272705446066113962874494608 1.0056763070624800401414982966466955 GT 1 -1171484227366297176543674120147979495462182.2294490940049135498734581317388487 0.6988667646827822716551032467496654 0.0784755908094801494295863061620737 1.0817260136820869279351006239749522 GT 1 -6529809154138624222237306814742.4336260169968127609641335023281289 0.3377320469915410370766842954752267 0.0590873008766531357328653211339941 1.0609049182772617322755682621598745 GT 1 -13300241242895870145.7985545909364073230855393480403996 1.4406237215275516314030305835227128 0.0370996425316795935819596088272921 1.0378053434945922644707947320696758 GT 1 -423218364091812935217175202766977401728.6748475029230730935604777514306879 1.9981930060920649938822388594170300 0.0679339206372276444301666985351494 1.0703515662060418833261607277388585 GT 1 -134139109619185291577210527218510096680.8865734415615847622051562491036665 0.0980736217801947126618562817504076 0.0574217827922077143680191236622496 1.0591363740234886909836796619135288 GT 1 -2170.4520197736035503674591493844646315 1.3664965347689755050097463527937324 0.0695436208435670831996765927211312 1.0720800829278254311481936708582502 GT 1 -1.9497949063224708165543752157431357 0.3290826630018664712230628827051692 0.0172179200926292129862592492351941 1.0173678722138330948017380088848252 GT 1 -6266825027840552332931.5245396949875744727779132392809935 0.6214796081617211398949509562210999 0.0828112393222280485570913116564787 1.0864419820226917031963683892118753 GT 1 -1069355312690548008695421384144.1375936509539120106936528407982898 0.4207047579701464530852056067103612 0.0344523116554993674291762283511986 1.0350597859516632536748552657418274 GT 1 -15864012764378480320123173.5647038186965793613830218626108305 0.0710536633285452587081866788029969 0.0639408411425094011950997150326611 1.0660766005942523883440367676828074 GT 1 -279625610970285099102122043818608.2973645997494709523511196234449735 5.2130458087252722131337683251651258 0.0830379792390821764914969999319702 1.0866892244198857917733314233094942 LT 1 -13321394647902.3835019745897024262296404067821486 0.7089859189183877812638246793176509 0.0415895079755301386222449161061796 1.0424791042429889949314948229708305 GT 1 -278634091745054178381980994721262396305.6796028945710574700370811041142287 1.3861511830880511714696801445107825 0.0124398771904988390901583772662155 1.0125179002024842635479346289117614 GT 1 -272829731526343046850081853254988511467.9711035603716784912746016032503632 1.1293924275778243440034490447613575 0.0726590577738980525679493193985270 1.0754339900681315671590823762238568 GT 1 -756.7570790888161004397659771272846979 0.0059773838618281230177933764832249 0.0213743017697001917581196112917713 1.0216060402733580910291726365003742 GT 1 -271.3042256832201886941131829724443859 3.1631728887482194352669879567970019 0.0459920271666248799746640143271573 1.0481916665305407268550638114713948 LT 2 -69465010248489658.1966804782534225753588059455772631 0.1534952591910047524630879631807062 0.0517744150681276943039297623932048 1.0531628462459223946200416344147991 GT 1 -21.6665912429179955581451623367545728 1.3820833073218393727175901763524685 0.0907215543067175893107066341625799 1.0951039108166246113282173618104847 GT 1 -720620654122591096628794.0883819087386436969795739487070545 4.6093711701910465175876752511760545 0.0748878561333155162909324625027177 1.0778403122056441680772016521923990 LT 1 -63649770621527177.3190702868622851536845005398185430 0.2029243486372083308204705914561655 0.0676466532531328736159438852106869 1.0700434087363812503994226071394286 GT 1 -11948840505798901690023628990869779916932.2940314593367366799808470819214140 0.0544784799188758618969344293298966 0.0052018607552537985632658235825156 1.0052154375363957495171829392350905 GT 1 -45023770817941143421622.1673005253742499913161452004003923 1.3580249570655020889125135334545639 0.0628557351360482685263356433730618 1.0649180439590319363018026018613737 GT 1 -25622759514946885659848362106.4860636726576152633353279960235570 0.5322927778184374078032211820416622 0.0330658564762806263852812716445935 1.0336248897531695679743672499375130 GT 1 -1521009038549708818.1882433968388176188513131009262501 1.0871515793419427055248617747880775 0.0024460283860869515996361784939127 1.0024490248007271862671202165090948 GT 1 -28480870919941079038428104961.2125993257707157211324644778621670 0.1170704145375109209797097265692931 0.0291200917113365377075995917733614 1.0295524967241008534710548145944893 GT 1 -2877429780636679993.3729061843425472882543807771966719 1.7797225701020562002014013304135985 0.0153560513029564008525758647899330 1.0154751765613237321762493254049749 GT 1 -56970429897342598712922809920838078592.7583360333650278898820564240912148 0.3079696146535400879527832068955043 0.0441020214879044742807515328207413 1.0451040886629609492074175079989522 GT 1 -7595327969502368785951.8134378002582066738153338417115408 0.1954123024897576137555476345166284 0.0011608423470342985674477233043015 1.0011615166463989828213624471097707 GT 1 -24.2245790622925154915873579316640373 0.3596116885800835522669491139228388 0.0759083188966922505278158066397197 1.0789439902893505087708553174553199 GT 1 -3394567.6464334211528999459659079655558165 3.0626122194405151018643121183252338 0.0816561005124780114522267455104513 1.0851833403353881888572010133191555 LT 1 -35.8990064824647002293830856174892818 1.4585316081598396693949226261309059 0.0296111823860165747152447487362498 1.0300584448997483221747050914332603 GT 1 -133992134.7053856601617817795582740060492085 0.6427834424562821153098661672331012 0.0675370962094181229665872222967723 1.0699259097132906683131866224072821 GT 1 -31019476132856287718212980288515455842.1665390427965784032180431900546218 0.6972833015340046466207021143046917 0.0008339859116304303447353263378369 1.0008343338713566203920216428481662 GT 1 -1090843148003045136110.9673790790520377726336389604389271 0.1638882408982521383534347605632729 0.0476296808185800539155817757065100 1.0488013290912685675242322972965726 GT 1 -94876.3761627528454160604166456018485370 0.2582012609941194926216033239233826 0.0980229529008341296593931078431804 1.1031662059182679265531717895841058 GT 1 -976783263602499.1150936378529283594104907711676956 0.7154343703316385554922973209676368 0.0254459999396790240285046810419213 1.0257753484755466613115806505476041 GT 1 -6561.4816456141903517781803840809679801 1.2370925859754949919616424348918384 0.0139149619019646075220766281746600 1.0140126825629011564604528879898699 GT 1 -4256158582448272148613682631970576897940.6693151916426491289334161242802245 0.3716529063297127075027030784501919 0.0969723711611777335515085746215771 1.1020021293124883373972160941000684 GT 1 -40205227336989829563691401026924420911143.8084746304837280438300259299209661 1.0658096143349252409792615070279917 0.0654970855792558459087618777063612 1.0677405333960973025512738715564730 GT 1 -738169.6048421168600047141878283019506594 0.1772898049183910095873222679054413 0.0226081486818887877134163252753335 1.0228676312811932725559504063701469 GT 1 -1997607538948344761682303870716741310925664.2298067758935013487701749621655619 0.2740051319825472651393910705314068 0.0007239148547547359387328099316724 1.0007241770076384163102478159963115 GT 1 -250.6422283315837150124835051405539436 0.9364002075794568072502936284833975 0.0675522157585057343525297056943961 1.0699421244834509459297352391097736 GT 1 -81616077.6493415839110544409121351278043181 1.8579891057502772601839259061533763 0.0499449430015643227407406662020539 1.0512353413316658671057944264304509 GT 1 -43400018297235995965761.9086611657788785222320954335570180 1.1773469287428693105503070046515258 0.0941243628307678283210636126205724 1.0988532481785968063302611695470817 GT 1 -278081495213457324022837176903405591114639.2269935886954031084935883342608766 0.0218002349603745032420136384788900 0.0183548723593346807470960318500311 1.0185254130881267951885458259226390 GT 1 -19361407620.4220680406868516868398127702487808 2.7645281086002969691818763148814337 0.0993446787220003811189083361425813 1.1046326458659922478076856511373774 LT 1 -4358050708031171.9867932544932481829935027464522808 0.0727493781322715596244917675903266 0.0726753296361328445641401198714524 1.0754515370179695883319873163354578 GT 1 -20.2973349919074215988407504470117399 0.9698963320123754176946306853593087 0.0086254547486959915547847181154893 1.0086628692837854136725909588307513 GT 1 -20087052977792.5020018050625760559099400266366579 1.5243939071824097546454817475551945 0.0646836282894293426051007810768013 1.0668704414602833110005943063065977 GT 1 -753890567773545812287772860743956534561382.3772428015186677772386725074495676 4.3389382015708803784751083046156599 0.0740381465297652644590133173111845 1.0769222401410431564217374295318755 LT 1 -397333736123430610134269694648876988844.1394337316317534425198128852238100 0.2684811091553680170438009567574310 0.0801795378688172292152172255554973 1.0835767778406722040808286316134325 GT 1 -34536346652304889690461.9804528746674771602391550608288471 0.6710952913392278225551051353011541 0.0759925808316509031764119674875068 1.0790351779697131631592651892374066 GT 1 -190140873223999598393.8406669063790002720204518907990448 1.1717977356486086107789867187822469 0.0334421915032987267886262457731431 1.0340141699168416223560596904401935 GT 1 -50455.4072372510034913346999336122331622 0.1494178020058266836992480340849588 0.0238557040567266711144405502724388 1.0241448592927483578250650352451470 GT 1 -4777807384.1022144348489822726779719677079294 2.6247033466232378285135067813454049 0.0594635366447494943450460539779459 1.0613048608115747465873733020266775 GT 1 -28387169034532869423.2989178595169671201816022779857230 0.8162557322434939609449248202232811 0.0662852201799238483911921606247701 1.0685842623146834689078604143500290 GT 1 -204.8883464242846299848557594476580014 0.6588690588231036535636891494465252 0.0625182651575791677577877983892342 1.0645580041621151740571506531299856 GT 1 -78070075436.8534784258202266397488820221000698 0.2946430053477043372771615634849864 0.0069261861748720154743860263459888 1.0069502835353336140939563235038443 GT 1 -403496779579401310987901785578.5799330915679631455037209891352269 1.4677719023654036685067264836137403 0.0052069773416465432621668183533581 1.0052205808909609777023536357704100 GT 1 -10.0324448440735880496894467022186407 0.0763972252112122922689790869602384 0.0773925864206907911619021735820521 1.0805514723614264930509150252284297 GT 1 -2855.8870620575937164534967354274183625 1.3958715155381732502488667171796123 0.0306721584621515390170920939944945 1.0311523945515567596881310054122452 GT 1 -12998566454835647043385434924467.9306644948231681120316027122174853 0.9224510430172225961594640540375245 0.0049605990366224682662352569236484 1.0049729436493939549880343123528302 GT 1 -18533155162004953008337519683638496442952.5767041564003584916643624632189602 1.0987799739130089521450363539371139 0.0739849818371362761954989503661493 1.0768648261490458253696263916729246 GT 1 -164716459052815326148494804215943185879651.6661186213280595383940060896277562 0.7868874403983290425764913214741537 0.0063504517860893500927386769044678 1.0063707016812114969715148047759301 GT 1 -23465810934841089.7098228261917697364885063401700831 0.5407640664498939074962813132083017 0.0215447331879395283373972778405764 1.0217802092747580732934737111851605 GT 1 -2270786561252.5194780315303420289307301499893791 0.9905735056935147461892818435060774 0.0716050204684460443015242750415934 1.0742980122531396294168914282779063 GT 1 -22086965845728764154645482.2116542349672635332550377829360825 0.5497146771262591043260490581989603 0.0261691400416961867683409658035722 1.0265176454930001082546063336462826 GT 1 -190248005975628839089.8324539291021768819959569449034257 2.2937630235163116903165350533295935 0.0122810135779395955761322011717556 1.0123570483895335630200375382958013 GT 1 -1122551468404838460504.2544449894824256199199984026533089 1.4521530780374070042903705025712261 0.0438349168605939246768644957875420 1.0448246997302368172308428731556994 GT 1 -1854910401311448719084677126213890062.7134925430230393798812898479675882 0.3479309597779495442375077249315061 0.0732000298342617267140630175766872 1.0760175186145311540165934227847033 GT 1 -76296023066516186730527805731.2726900096517735923436694645087800 0.1806374332443995744998821608086147 0.0790621035763006465878694302897542 1.0823626755935351700902564637358486 GT 1 -5645319925222241541386450182142.4557463990518844223826371662421845 2.3227471434650375404720847352947879 0.0921379857055021584330299613088720 1.1013347346111905087941507882268231 GT 2 -991457661674287206515266555154312331748626.5596243489929893004909009747818897 1.6051472314529934707674242657076033 0.0821657928889325264842967275881622 1.0857385069477270237983010741602707 GT 1 -551309654545.8784686326311564464373541058454335 0.5025057657693183750296028334798408 0.0938642823983345739783542125129251 1.0985661854805243303328182066294332 GT 1 -27104686476072547085476417480604.0172160985502440345668959641901868 1.1639384951847516833449882140804483 0.0921800431533603532572879281977659 1.0967092054531847758430681333993014 GT 1 -20464545443209339778602342096940667214964186.2420511354838217388934462501189762 0.2832543306445551060151552531169232 0.0156400981209774159409976820355197 1.0157636948594553654262633121449955 GT 1 -2970053919864666345833146.9061234348902638900198179041022249 0.4569163920090919955536338899671974 0.0776493030926264117254756968793115 1.0808297623368283659440844748031477 GT 1 -12136797547005.9445762035750684029321744959989247 0.5091438732766539718641104177023753 0.0904123809602690574259152370687725 1.0947639480723401586277901871420018 GT 1 -19341153888671315780433.4744435526062021934476228428844987 1.9669437877772877064138750912556658 0.0092307010028949865262407791016262 1.0092735679217938821401754498590276 GT 1 -260555193092572838092102593214286119042055.8521877773816575987356110990821275 0.0022945044005149551803908795975186 0.0189118037961239240960725661098623 1.0190929190706976681313689597019221 GT 1 -412723002617476316996362269075375.5112426778709138530295920728971649 0.2507456337177792674209556806721188 0.0764180795383203604056965543716485 1.0794957767673628273662291542394264 GT 1 -7560.6983906956075209101749600738330109 0.3307820653118459372590064727470688 0.0275931738938726427802607140752272 1.0279810167107072854603899517371078 GT 1 -148527398.2296868131550909735803314493183192 1.0442977990134103825717037009545557 0.0360566662917539701844670815943376 1.0367227685596736621209323794591221 GT 1 -443822938890687379500.2801362178550992813353315536009059 2.4487802281856366114558331567015617 0.0451839079839784610655690715474093 1.0462365308513359358619722649243570 GT 1 -5802048015383858524440303630341843724.2663240927635728569583118090879016 2.5728918797584152391752880844855358 0.0894705967131973652910461202831837 1.0981216576293146355630925522559045 LT 2 -4349172496621981267657331701855522986260.1906449078010644189631695598430908 0.0720337975189496410988607113353510 0.0863790478896658567277277122389912 1.0903395067725054859338034990614183 GT 1 -14307017142044783558703734748.1245765228631525190791010947770461 1.0337465570552461405135760775710746 0.0131400788026117878782112469867244 1.0132271734329626923614075814876371 GT 1 -33314976240226.2086947704947906681925102869786894 1.6673777267093636941822215148608774 0.0504055331896146121767576095267021 1.0517202625671918764464592798912412 GT 1 -451911904976349786542.2344150355321555114595897990433742 0.3784126495489062089283497979402350 0.0022901757875515977493674693079156 1.0022928022509286748117795779196080 GT 1 -6739245532844482211023.1730760255474919705017076740065742 0.3098508017616869058181258734767965 0.0889324593438772315745036210672904 1.0931382454405682460740671412891682 GT 1 -422728391155559914108.8227594017718852812648847636167274 0.1875488540260341017999629233961905 0.0203456133293718305635470967544423 1.0205554361816559249373131206781995 GT 1 -112868029458822251274615.9849730133846434488655729298308179 0.9438510582506856055639545081096792 0.0131146730799491000626935883081158 1.0132014297634710769297646909861153 GT 1 -26449092583197112170602494482740.3538933542155473238559927942881955 0.6890169218127474104696871218722667 0.0768890004355103433417626875176648 1.0800057921600585833220480913129839 GT 1 -306434308275359.7552372586783012967263303925081106 1.7635219314431399873755664229126917 0.0512092057384368046052471818310355 1.0525669532925298225188976325704864 GT 1 -831.0570373060167689967005219998549226 1.8578292744992114100487197032183194 0.0558650858896199914552508869499558 1.0574862055585585342818674699093797 GT 1 -1041398387159742641224.1330171443098117986928821217825668 1.3518241275294552944424232147687193 0.0074148379019712881933361958102269 1.0074424644615537634575559076168624 GT 1 -3802298.5187241667311705622697235943423978 0.4964927012688570927848429129472528 0.0316154317105709426734659295802239 1.0321259893101444575653352539272099 GT 1 -7543900150262730812120.6691125909985929010854612606958537 1.3677147794058731863465885919251152 0.0994173351492756435017788108498485 1.1047133197445959557768299606984267 GT 1 -7136586901114954838084248106293840605550.9426626561397359398101251730614934 1.5072986323745655530796473058822904 0.0603288667634518859561494444641682 1.0622253231917575890333370749923545 GT 1 -183460458379945557218.9618303005424034602366739116230541 0.0743881700374945950114106248417308 0.0223008511064433200042795122823449 1.0225532749899078126520795087091127 GT 1 -245120001838107815266342030897423.8233311043577758625472901218368875 1.6546607058727780438363307254772591 0.0883319592126880968230905033163402 1.0924793455331673670077111356812517 GT 1 -39072663857757114299643924412.3529089485570694860111239549629221 0.3774967542140322237921527284301433 0.0427738419313133026488127943938248 1.0437155956273239751829909498793177 GT 1 -8979107399325105171849269886621824.6993064553270850531794392270185397 0.6481120457254302722018912286578396 0.0005845693062247614997947655080866 1.0005847402334774478775697658863669 GT 1 -160191056.9607348392429252028574049983120680 2.0955252328526847931869070616306406 0.0220557886706673213305819871125885 1.0223026542049086685979608781309308 GT 1 -9413596311505225772109705.0432976744633244237948778423384016 1.7947818760439804661633755606624865 0.0509880170675527714431623359313449 1.0523338535473470234798937989500638 GT 1 -512985289962063260.5714913983156424070732794867356672 1.0531707302711876963503882519901408 0.0444237251643612306037502819600994 1.0454406913443005315970902936454011 GT 1 -77.7513970915823970392713230400409569 0.5453568176826047413883957175807478 0.0024173634943777040926407086451310 1.0024202900348023233930152408648696 GT 1 -82377258330794716895488552477272.8027699413160771906516712300627641 1.9739451534946339198369338575420431 0.0496359762333141556653910719935660 1.0509101848710730326907617623397564 GT 1 -584739215186964378287550436.2123851442255775614472005925844341 1.7832961201561307491073136063502270 0.0890770305409605735709750072050253 1.0932969413246402388389228341519406 GT 1 -7112073012959819256343137799536.3845059018504897058947885652143433 0.7865674774232823029367875742380975 0.0771552817908667105241494722628245 1.0802942945923103048829752651427982 GT 1 -583919582268383228.6604701599201004497133481418237271 0.7612271370389338397873256568828947 0.0900100632708868023533263150318905 1.0943217380718234714399975290606499 GT 1 -3840923898141127138992840481200063209894.4487416297806497615200575144181280 2.3641726317422058670066210706053027 0.0149651600253107687197989433975335 1.0150782679028912890667993241367633 GT 1 -1525699344082039202804088301668676.4062055483741665204624350454562097 2.5530794424357078467444696935798029 0.0919198263641575303951552749100213 1.1010712669245012157854174054207560 LT 2 -9237159553773.1818107003392548424745031755882010 3.0956492979430034753154824486867489 0.0225226731358401797859729141472878 1.0227801824155023637110986009065331 GT 1 -3066257344321492449965.8013429244014397481869757786043019 0.0719393978854898230174902858711838 0.0287963944168377362523598735183302 1.0292191461805385217786507616260306 GT 1 -47901546127205379816136721241555673299.5618136266737656630165322630090725 3.3370955113188659715307790568695530 0.0851426736790931760174314308921694 1.0889871533827096684202161681925726 LT 1 -9752604594886620294046293938728.9475814422845145722619257978811905 0.8853139550894362562650712729500286 0.0217168473866842813395767450519854 1.0219561287512501579488364154098886 GT 1 -16279362159790135830252120811.0632485352133560184917193014929193 0.1295475031699143224469604141647228 0.0217064112602213428789907474191093 1.0219454610107598767441035808187092 GT 1 -13842968887234227340708535511969473663427924.7391701580026494401775461151654783 1.5878802363375216591046078278855522 0.0265634169161819410450999008207446 1.0269225995030747004456425903548121 GT 1 -286715457450696740.0030405998182036427255859620207686 2.0881574748081963961672739432317215 0.0995732367618606752832020902036010 1.1048864466705775357123839449194027 GT 1 -2241588185231.2344775889164394158190510026811450 0.1962852387960465512513517544175253 0.0162788993986995984403151313728363 1.0164128564532619844120688755443170 GT 1 -10215939733545817958456886.1041960706649556220921091622434340 0.2605714185644543089132070567614990 0.0570387113074251519793873893728216 1.0587300484186904162199730506763932 GT 1 -64957191262118560529718175838872786918.8302802125598688714356355970802970 1.5659877366541395750284381274551061 0.0595665913209213067080164504269856 1.0614144369167608116426940498371604 GT 1 -34400521310104217468428580491078361179.7860645243233900388274935489153981 0.1539993308434721818775193672041106 0.0642623222197228966547192642725890 1.0664201005661317951445472781874988 GT 1 -283950756858.1740038925262716010265475285137178 1.7482362389924546993822447073607932 0.0783149659668420856676984501322764 1.0815517254658072420259890233267998 GT 1 -4455433055577139437086665410375049423.1762729874574371631975942842476854 0.1456114533599239204305989158797617 0.0258872594226517855366966964927359 1.0262282319587125446622777629736949 GT 1 -153357001566397388110444310.9981434865162411976703145995393114 1.5434944223230097556615712735399151 0.0442870524432101696275884094273361 1.0452976750809503542108686149857295 GT 1 -17348324491922221113.3385369092470080655324051021933688 2.1691113781736314298627559106509175 0.0756379722687440006283331759550332 1.0786514791719946568641899280161973 GT 1 -26605264539490345131677.5236765825756465185945695575164603 0.1926344526815924482970118455793556 0.0918035156852255940361411151689412 1.0962945313731534034352872693015381 GT 1 -200175027.9963726659606184333321071947963555 1.0726148929976893866508264307899231 0.0744474084785871342404336374143868 1.0773643236004451200805861523297298 GT 1 -227575.8347774098388189580506149375444620 0.7071322020263108540769005052120719 0.0831021908420052988364840066308729 1.0867592533303856776658881334358030 GT 1 -21737757459.0544865241695919324695136888955696 0.0797540385187812536620575575007128 0.0925681728086445615266431326066698 1.0971368372171217416815751298667434 GT 1 -26520192267762969833364293616108.8430971976055622553380564081028875 0.8763843074901739602297905825722307 0.0999825399641932873339028914681428 1.1053411158062194029919844951081381 GT 1 -67327656532.7658088656026799699936894964131084 0.2543946271018475084391042436630786 0.0702421807340248038785298599086487 1.0728311361386730570737975983822256 GT 1 -783.9332259301090331908142754482286605 1.2803595526915842237305514352980636 0.0014814813389466416190189574350579 1.0014825798174764735893466221270915 GT 1 -116122040282218668991815017353780.4052702668592908020147833056044798 0.4193823601384870478023922821061683 0.0039007932468118594782065904147831 1.0039084211839210992898220963214565 GT 1 -7279199721565675988308942456517.6850512901672641289600524293901040 1.9555446183708984616554765637817333 0.0325735556292702570477886876446105 1.0331158834585620896273608738878200 GT 1 -16800660495814963293087.2570345984011215846602322162654825 0.0604290848743983704499175143598969 0.0129255363145311715747327548958278 1.0130097979309516191229834023257130 GT 1 -7001733203968970124706380430081459075730912.6238189775718034237665589700493546 0.0896607219877344648452707551196109 0.0923765542109858229416289114894064 1.0969256936765110094877382607691917 GT 1 -105558526040422315407.3787696996334355511979920769695382 1.0782440329148916846875928757308690 0.0850540316338476514790116397925097 1.0888902664161463850759455474651442 GT 1 -28795151829582.8959955790431439577397175136623530 2.8653073203467932048779437859509046 0.0311310512486814569415064177799185 1.0316259200443279143479869482090981 GT 1 -153972956978.0665910009903265009187030911545731 0.4313920188121827677041535812682812 0.0271813352170571169770254981418259 1.0275575812941985638068890395495052 GT 1 -385411566465166016433862726356516790426.1155098864887204757336493726029780 3.3591414966765317854234976806254654 0.0081375673698045468746350797519625 1.0081708580978557126778657604860818 GT 1 -7732.5509109278488154315734086408700401 1.4800062914850233744905709907042774 0.0205483790579949045023795783554773 1.0207624344028437386116291976748603 GT 1 -32.4692503853646710057363451952378936 0.4201884061406946244404776592576719 0.0209366722557811517428554987049002 1.0211589523902445638967049197458858 GT 1 -3793988253338883235685890107277.3874423770880400124412658586096214 2.4886906662045291344539469959910195 0.0148236885747819588682207927843121 1.0149346574572074028560553114605666 GT 1 -62596.6488409069568258678401715653135509 0.1045407808755675402088140509041656 0.0831542131777253504937683784478584 1.0868159922723490422432210759818654 GT 1 -1457135351598047.7765081247490961896330454423305604 0.4072789410506790693087425906994577 0.0995525575581100846215748792177144 1.1048634809312868328740845008871136 GT 1 -8204526258471068.8630657693483778478687774876315452 0.0991847859440623628528279264638441 0.0898320661792949879669157889737194 1.0941261538370279923102961975472878 GT 1 -544204886946350027758297518647660.9012594444356774744541411759794526 0.5641007251935134915931263593804139 0.0402142947622820422956049734687923 1.0410452431490863811990663056688887 GT 1 -2635185001583442373294453305550882206778.4420450664161666170768834256731978 1.3614739322926047199095892341499018 0.0121286909935152029605527813672833 1.0122028437600831115609617428163740 GT 1 -791772780857261714978.4655850362135978102330570266351007 1.0271506943002748810967758053546901 0.0827958989189069304188877780461633 1.0864252567032235856044062994226864 GT 1 -46926794469401992301518938.5653023522079415863302607234632057 1.2543494950332951744586685027241090 0.0377366746054645964838691118871831 1.0384671387514900321355099371222445 GT 1 -1120546529695.9818351177373840172953523568877313 2.8494079841283600423617178740847040 0.0110358615256656426817222546174334 1.0110972084068039192927855852124610 GT 1 -3204686.7865195109833913404985871341838222 0.3021362992510978522864952394248884 0.0531945158443411610546880785643980 1.0546616090527264919427848907598228 GT 1 -8002371547041454077185670303903767257.7927135354022079199059340371342533 1.0181240398089828883693981043222824 0.0545658566783897149637239635893514 1.0561110460629434426114879978123708 GT 1 -109780908528449307.3316345758368478089812593246440178 0.0728857099321904393129108332879846 0.0948987000980569747376324344546226 1.0997084079530009381311096853495085 GT 1 -392591457337344.4464747048037255995238602973249957 0.3313258835666476537890082113915030 0.0996687365520785846955936621751551 1.1049925128814645023338064778993474 GT 1 -1503123177593700718570.5987484484086383567033062246223193 0.9001006273295387540406696634508535 0.0803541474054932870441312075791181 1.0837666258806201824465102132956240 GT 1 -86833580158685331439705835839478387.1346648558786560294085943574276918 0.6981998683964779345788450388910760 0.0683002470383705794425950570622485 1.0707446696737703890035352129680099 GT 1 -45049477.0708963380277893784421855037915508 0.5503524516879791137134994048998275 0.0039566323688395217124860539136364 1.0039644805471015105360122783191554 GT 1 -536504999257355845996786345427008143605.2006403003667126041942281266172899 2.1150667059285760126831095957025089 0.0596713788688622175151989717109963 1.0615258678648429699640443076475070 GT 1 -456862636.7102256112453115426489508108549512 0.0006513640450520521580610386370069 0.0593651946658534956843945789393238 1.0612003068237242955346334076644176 GT 1 -3269099143218275448069097084.9384879885478743913552502033917133 0.1859089862177407289848668500400840 0.0991157138640653249040087748321509 1.1043784578834182273740330617987496 GT 1 -288504280171821584598.9827491775817391095318142952470517 0.1866924531260824089726893885582081 0.0482669329013620005732600294211511 1.0494706752109863018692254675007649 GT 1 -2501805803644807031568944.8338538026228966496937540673170294 1.1208833878312917911321559304768034 0.0897417614953555513835294455331740 1.0940269411522332465843542704151555 GT 1 -30661811460696127349735738425090372287289.6540401120910411129488608117989309 1.0150100383575541266810341498753484 0.0943000430677961404079966532070468 1.0990472011531798806400911855651501 GT 1 -401231342748889576549426270.5536293333496576555122198855028535 0.1679987105726547477145628109508847 0.0765029515567101577437544452482974 1.0795876754028606311951167671984544 GT 1 -37729086223400603741295.3759225575178965347446848128090779 1.2712973513609652017338705299417636 0.0728079935134587350470252393114483 1.0755946081256152671497202384173554 GT 1 -823011967625449461072112747281.5696539017708748215693727074927285 0.4856036735160027779790402378165296 0.0162049313532511526231924565695783 1.0163376671901297145883723323780527 GT 1 -3348613185186788888912.8956306293864898473122753806724326 0.6567477465448184014619650143172206 0.0915624000899978248013715146912532 1.0960290782488974858241897605154304 GT 1 -69.5027526653229788860691567420195753 3.1272775564206103812236117760011579 0.0501043098913153185671120979101064 1.0514031003015943299723702992250958 LT 1 -949209431.4652311454939318458512111217981719 0.6184452977884724245854102754817421 0.0961882063731205874303120387839003 1.1011341331557289864937846640350721 GT 1 -38241110865893641657389974163645718.5371662454262017547804521927888450 1.9929136095685787129412497564700742 0.0666351606337841446650013235593781 1.0689591155928853520677436388986706 GT 1 -25207893791531885962608833021323061.2155677339695147546329914120157701 2.9397769981395074347277166855776109 0.0444950519803340661176491943266637 1.0455153368540286705299098729257127 GT 1 -4048656705938.5964094314635525747042857249510972 0.4905346669488930688388604651740868 0.0947023748085121248384229895120947 1.0994915217324080849987925052184546 GT 1 -4743595485680350193460907027459.3062063881153937114198711092057525 2.2770473563669333555482244858160808 0.0891793428649954924425523917658339 1.0934092648400338648732924301796463 GT 1 -76067.4494545429129732955537625640561168 0.1992663433842122752697873819350006 0.0246638891404811868599780508924255 1.0249731383030233916732027273303485 GT 1 -7190981553201447.6560958674318989932380342481592823 0.0088216011922693741075772160230207 0.0860427366024876505425792853931171 1.0899714663919399185911535702310209 GT 1 -12935047789197406517418.5858444966960481034501517199661588 0.1110994575444583048171440940222666 0.0429652126909542061923264894372168 1.0439155378146631992090488867835519 GT 1 -10840964444055463887555153551700087.4910637361831219909511213652564872 0.4367143463807205720616610819188177 0.0816873736709143578362290155244843 1.0852173947794279791801833139918696 GT 1 -696516480.7699303389194508578343310294544011 3.1930522237131979184925927064578398 0.0177804802915729263813250230314120 1.0179404521185244847221395892222080 GT 1 -200210498059.3535560366883981354652604312956676 0.7485400655745205445461262534064349 0.0695342943359548623431903061277454 1.0720700593941284804069585776439734 GT 1 -7611641194654119032867677.2607970993307242842472017341260659 0.5441561197279724861220197598894508 0.0377424519818604205584725509484447 1.0384731427148407612360731793903933 GT 1 -3995.5327500898508165285084535206603663 0.0952753467110618746741712712181747 0.0017678365943384150936854100365561 1.0017694010615373527537030404194987 GT 1 -290893187370807125334765.1189626325258877980627780928104219 0.1652459815571579202431335702645742 0.0590733041433677763749390756206241 1.0608900426897669063712326688684172 GT 1 -11981723073775472818620782.4241766609846868697539675474931039 0.1134697132354828395054499845194119 0.0603098026698795300630068131564181 1.0622050353490070291454938035812213 GT 1 -1904014.7826785718878071982072327165737155 2.9260292979633735974536705237546965 0.0189888398505107620904885167276343 1.0191714431823100344830477366217291 GT 1 -15042026059050145755604422785773.4958284482523050131247622119260096 0.9236590215227367754128149363755935 0.0507479713408360992569935929571675 1.0520809427546117964253931247156135 GT 1 -7048644754876685397852946096435.3073934537968246525641124245985588 0.1876205189490742161615942557375108 0.0136280231523845532957981724777283 1.0137217370574427703240375066170602 GT 1 -8559951944309515860668396876839300.5355459612752927148141868937733716 0.7941363640783262037386814709056451 0.0290882995200139203656728325935128 1.0295197515096484967409404815763808 GT 1 -788859367124224.7680059255510525267953799091161236 0.8232867130756576957059680356595349 0.0195901719335254138161343008930002 1.0197846028308172868923117702320283 GT 1 -12701209249206.0349800766961220094051785252110544 2.6936159914309740593150093419032659 0.0035371021627635345070757830838990 1.0035433724988645415463221779890937 GT 1 -1822605343677800.4174878185758921549806345070449927 0.2360267799519987364806607116866543 0.0083814014064453720360828365910144 1.0084167228518218143766763139072911 GT 1 -144059.3903721832905939632317051956349396 1.7868260215018707706981312453224254 0.0898469283405061488588761503428890 1.0941424830022320937791195041512969 GT 1 -336639144063214382415164305326864930.5234687037719835207891891279457956 0.2243581500437004302167307787104085 0.0493915553641518902855948170053035 1.0506530313619382235656499015465719 GT 1 -328.3245543905184489541508038222653012 0.8689915324063874787424079072396637 0.0875739190392246382104909541181543 1.0916482039730217579243370304649455 GT 1 -93911151052148196694783787618016582541677.1030552201744120993659897531619457 0.1925265609636263197223862146346313 0.0970658139341267636976020108155779 1.1021056118692746760982314201172582 GT 1 -3916882139616740.9087164953836721868522712108115941 0.8836959268085514420592716905178981 0.0896484784923806479955310591622648 1.0939244666899894480607304550503104 GT 1 -1270020414386306.3084896127503559321407393237039972 0.4517619183858166740612959308197404 0.0870997297955815199879187474073262 1.0911286374264612717490039815199990 GT 1 -8183729224184864809530672374029.3654028241815827122491380478686332 2.1540612050902720911912032487576661 0.0078831485469188729232881794706525 1.0079143848309003677981000632690087 GT 1 -25127684.0857792939715609715707172151723795 1.5878902726605651506456643745432860 0.0838863145129940196466365492196214 1.0876148112154394999049077588416124 GT 1 -127.6813206761641063779258170266367983 0.4964306188572355543114473370254104 0.0609057230002134310432686111877165 1.0628394033230459537309580154377889 GT 1 -571889539501934063287228353180394575344795.8443121487929056114266754267227336 0.2323623657687994254238312867412276 0.0871679304786463497889993431447401 1.0912033479211078160411656705063514 GT 1 -52483385216.2537131664103531514284116815248218 0.1507056190745139283090406228125329 0.0122893543972564432587026760009282 1.0123654929518522399518121122795341 GT 1 -4667293148893483357099685125.8676898329138685706818557381725968 0.4523644139406482629847897236787725 0.0474739905283015084989229059778976 1.0486378658221306593774942760235823 GT 1 -1897939625007040.6966324996865131283717799471872089 2.1829897798907221127477908209259131 0.0154768778124027435789084469221263 1.0155978949546835166973209232119175 GT 1 -85318061.0352379991657274376037918864637880 1.1962870602830473499456621433845960 0.0794610527347925196311342832213189 1.0827959682152705892929932241675902 GT 1 -79848451481272420970648.4113821148893727484729939968390870 0.3140496474915044966373759672478391 0.0727102677773682180040874385712910 1.0754892140048308795511032716354486 GT 1 -2085422878618789337.1408651422335909066033448077438186 2.5417069159861655910117416175723455 0.0039629934657707410460853398128698 1.0039708669329258335384841928560772 GT 1 -33.0620298323462213424793334855122688 1.8994721722378339804473030170820116 0.0293033303594716313752254400734529 1.0297412491542260214502984536034595 GT 1 -618775437612471.8131566096690813405421764351509762 3.2462324051222932914816259054221790 0.0503768098901069356955481292061576 1.0516900150603774722768826989965970 LT 1 -8542622230123497505203121271501878521.9981732318795920546200856380841965 0.9813216159435082196589133894096416 0.0058702469762759330509889731089451 1.0058875446035056915685381655813656 GT 1 -169154000359.3182912603529602690838838710427904 1.0587356696057958115343832629068518 0.0470711264378228103811688117610609 1.0482150123606620780109723513436650 GT 1 -2377465631021541.7449144626704627219502365371400372 1.1927191321270177013489332518462890 0.0178469153427070663450921746607275 1.0180080920876543948619755682558705 GT 1 -1780098361793579875823.8708183806563023728119983286842381 0.2604773609511584464777360102076477 0.0867281897535164057274226806173314 1.0907217315809839124404289486769060 GT 1 -135124802782347581660488805914827639.1717038368872357664996430363485886 0.4864833028634191789174715419111315 0.0355534533109104817651949923644954 1.0362008689195844208349502574591212 GT 1 -14699.2542622055694337424616655170144959 0.3158551465077000640414001269756590 0.0166857942282944372824687512513303 1.0168265702631566875371465694860741 GT 1 -14651505097903222866125314845827452309831.1116693357356794435770006681607943 0.7309642712652103170622653228185648 0.0516724579527432288758256883030958 1.0530553279127607127745055799739773 GT 1 -6490257600786590049053528.2636336531538126506229199482749524 0.6167430329031821565975263646617315 0.0522543844735482232738722835666285 1.0536691507884783376365349609146738 GT 1 -1924893765691.9520748374935762807599314247793954 1.4157021096047315801822633517281877 0.0941957201792196703078064120205137 1.0989320229641641134054120312574490 GT 1 -282640979455895893625296268844431928.6941783637348861285708407700311479 0.9619348708610752317878346230081309 0.0371334667884042035016601259320368 1.0378404715850083854512319969054593 GT 1 -4783674107706635839824.6381601253869431982486056472784069 0.5363386762122129503947337510459895 0.0038468975299747390152499832971243 1.0038543158714556491724202386014486 GT 1 -630971245055449111504465.1865775189144839789734218495486272 0.3031965559276785441947445395634026 0.0971599917741055090679130481068221 1.1022099193074492154707888791745586 GT 1 -165841056963131.2831600308906113201041984474744851 0.2656275698725870352336639240128832 0.0513941801030658945263944765923874 1.0527619303087580570346114507496325 GT 1 -39880638272910.4615487212745108276998517332470948 0.8506579411165683491027617330271072 0.0473368145949351120943810051408263 1.0484938633955240801894162286935384 GT 1 -6991288950719054639757537799384.8705628388737054266730892312655805 1.1361693885188689548734872011892782 0.0585819461751494295322801750294117 1.0603679725647680141652228622502677 GT 1 -33759.6298429190910310530678955289054486 0.3198073335291419237777133850162210 0.0441020146238959331068383371943108 1.0451040814822694205843187469925524 GT 1 -19973961.0501504671187685810935471968773251 0.9139782122383163487067809404054340 0.0831574977841967119187572463529964 1.0868195747857903949033776604060270 GT 1 -22921499931.3907211144270542374917298038603314 1.2103544875471893362274850324625150 0.0407701828588475234894133047803755 1.0416245903254184633778153387724701 GT 1 -930.6397635873054858445486599340837632 1.7101594605119459584888304035504278 0.0688308950557208818355837193462794 1.0713143802354677089793053790141204 GT 1 -1295806381.8301315568171178873876113232109846 1.2837781276545600349978915275468490 0.0524281994112836232675790708012556 1.0538525659111852725994422606267841 GT 1 -41619191339741736875605414004509.5076036675371856482799220382880595 0.9169426471355585881027510686458432 0.0601378275373826313158545142164770 1.0620220395083582468100759157319876 GT 1 -418007076596035043492078440653051997.1334321723195620749824459599124768 0.6526720713916196533625882215080689 0.0767075845563979725016187447479462 1.0798092848548602133196192381729334 GT 1 -4929844338388.1006032825643114646272692126037981 1.9375789584046445358909009340145273 0.0029764375380687921199624249301028 1.0029808759375449623253957315814381 GT 1 -13002090295710371.7505327016272224639098754747173852 2.4348035102022370104349990642726868 0.0930726654421236295439171853293733 1.1024649044069218880483866854534435 LT 2 -236834107.4668136250567510987013542778967643 1.3378463076854704241230922641056122 0.0840564125884656558576164223843118 1.0878005019997579221098226972324337 GT 1 -336547486098170038368564561.8559943317707504255314289393119567 1.0943632932748102711043967223367475 0.0239459086759244534274191092077866 1.0242372726661537589317030332232165 GT 1 -299335990677935222333779267744274.2254704933089395992778154469040840 0.2335080731220465871353831317952422 0.0365651712131494287686482006531283 1.0372504334913295944976945074466287 GT 1 -89388515419598678017036101.9848030417748167973433261398384900 0.6864996945227239292797882220481680 0.0181703266658806406243347222914998 1.0183374344149033384617506440597796 GT 1 -76964177177324090030399225399458762.1849246047046217572301197872654560 0.5726996815401449442110615492489271 0.0861156315572382143008681604858557 1.0900512270818371259928042146429896 GT 1 -565743554030397030142140587278394.1512675428619776160339618095267259 1.1037716953226602425580609518242328 0.0812157586110538834829829666607088 1.0847039596105936624029972795696768 GT 1 -17043771860966350887204.1538972344044358442077801813454196 0.2790887318285517910496650686790712 0.0045958519512980353673345044040869 1.0046064453484617484693733763034182 GT 1 -4366842.0082424711273651514681507662094289 0.3499096553691755890256776165637203 0.0132913115446757682476605898828359 1.0133804315883876576637662192373174 GT 1 -366224024057144235013080105068663406.2592717443336407567798762028460200 1.4061438085480146626984002344184083 0.0161344958141560877627075728454316 1.0162660740097838249841247955606561 GT 1 -141932201611959201381173038439783.8452647368450039617290828562211516 0.0563815020943388850559758099990811 0.0328402372544918900459567376078352 1.0333915823402452802071869218497405 GT 1 -471366944040257201659695736259257919874687.1116408223082754394123337563266917 2.7490887706539257972949549046280641 0.0057447450053857552196377219219482 1.0057613095227233085897556663548390 GT 1 -15555859028663038996384338.6449041750958296319717073470420616 0.4225688132686599374552919930443143 0.0556368085795368648886326629642418 1.0572444501545934580986914360344188 GT 1 -76048068757848839167733999297.2169291677978864594264644700571018 0.7381181167364214749408046341434637 0.0748821453158057772243220371256242 1.0778341391163371846433765334427254 GT 1 -52.9291977717649563636023214427272371 0.6172216307979042508542757421433155 0.0790944079232514269726862480980035 1.0823977538693558737677497021749346 GT 1 -106399917735862569820544658293816589.1917380345443223787218293159015003 4.0498022500575231658672720333464914 0.0044924118719014428605491299600159 1.0045025330779074466112211244960483 GT 1 -39788014929534018396794639.9823127224965984377386620425850936 1.1411783756403685446359685097050398 0.0015755914461012133704809025254722 1.0015768339956421907473878364596226 GT 1 -4895134175589651027.9406056116661011041388625322092947 0.7528072679305610928304740026274176 0.0941495169485795491664943092764208 1.0988810163026334279216506759799956 GT 1 -122525072.1343878257400310629995368229271955 0.0560401442995767141523791522878266 0.0827948133210910203622696281166319 1.0864240731093297323877116266902402 GT 1 -17004842957469435.9004549122518390690123496179140197 0.2113646573388496658620976111408078 0.0202003721964312251156989659753326 1.0204071896475359832230687586935927 GT 1 -957270865368767.3816023612803703710288531063425425 0.6415858134355309157695467360256062 0.0715646605652217293404957757732711 1.0742545404261036095768012216790478 GT 1 -552632.1642096142618741736113191654273537 1.3792262671345487360579671636310679 0.0815852064813674666388954593275346 1.0851061456212260142611986214948773 GT 1 -1310552572405732.2637034041885757958727889032510745 0.4210473041608528694850158937541342 0.0693902368226758488288357424394781 1.0719152483550507257729312009846299 GT 1 -1260979951758657180847098692017633.7580357031595911286843061982587701 0.2374192372492443312965028905119461 0.0437354847065095453712487593230580 1.0447207145647118190692488271058185 GT 1 -1187.2611267477378580670951434829088715 0.3797352694386737562113382198108716 0.0685537423207160986562241491058282 1.0710167849910476714664621427740324 GT 1 -3245001443520667656675109824939515150.4074946458770562272151996708771632 0.0238459018854837916662707043693677 0.0761680534467593694798123772087016 1.0792250999065341052562362117668315 GT 1 -6927778980447680294730460736273550467.0762250904911034134647424424513809 3.7618900718728385597266205784426495 0.0996854675804961950780052772320902 1.1050110962457846706277306719699821 LT 1 -138607151.8022276073642425335857810893724068 0.2540570804480132648352667003852474 0.0193042298154495900832055641305396 1.0194929896506222270100960601966806 GT 1 -1465.3174199049048964458177976655977712 2.8072889816651536979867481256732343 0.0543223267342990482158348821403984 1.0558534939253058975821503720472363 GT 1 -7477.4268452118291112513277444927412229 0.4328215272577027314580463901872469 0.0892512285856878569018822330409525 1.0934881920767375807456076882054297 GT 1 -27589374634944782952196152628340358.4752419742048521566128651460676794 0.3457933059357826245314872365075820 0.0948172195473710900766809147592947 1.0996183883238994671519519456426121 GT 1 -258039835246881482259204.1063568594008962905359204527092393 0.6187491486168646065754409705333277 0.0253304280191782176150857935098566 1.0256567659565437603523058008901394 GT 1 -2602318.7365814396391906203989865320426499 4.4506715378321023106824161618400984 0.0609375702743360660205672679592635 1.0628733166530802859023839681243695 LT 1 -818723721713076951371740437073524108.4420156617254449374673788529878962 0.6475081004437900033914889030115613 0.0025251164573568070980915861088295 1.0025283099409965775630333370504461 GT 1 -1898774340387439116567595225232358395493.3186295026921522928230045714849849 0.4611437352726068883675718385411108 0.0307287246180001021232417296203993 1.0312107523165747197700392644687736 GT 1 -6537480922639058621617080748806702789952.1928718345545752257018126492743351 1.2014380859743869448442316464901968 0.0690297307218399333990779155848098 1.0715279363952559706178171593723519 GT 1 -7767932123447655587749901124924.0700220639168878114761271059617278 4.2220180635110997729198086349627649 0.0775638401563348376933824635749080 1.0807371088836232331015722274027206 LT 1 -10397671.6070880082030819679791271603064585 0.3472559507842085629007590136170897 0.0769940467402932614619473791165203 1.0801195945979112763296486633627860 GT 1 -283355239624502485119023575452.1440691594457560025772349800335924 0.4679371191330793841848943461707827 0.0063658408418947636987155896534670 1.0063861892089848431340904930853537 GT 1 -69.4011166992566728913572264972959226 2.0549630331880457257604312578008946 0.0282541966889539789688855478775176 1.0286610279511331507041964456191572 GT 1 -155880067.5587175049241514922609715038986181 0.2076169797319384111943823833084572 0.0403352776943948558384567234196033 1.0411713031197289892199364984711316 GT 1 -17768321489390479777081450213068310887003760.1715252106080311688555813543958945 0.5676698133149057726482517496882648 0.0357804173457992068486219483108713 1.0364362274738549864500402813192095 GT 1 -1111198203646949403405485581.9551628854597932186330224440696465 1.1093608675939659634854822599589262 0.0939117497051412227655494193872433 1.0986185711763967892239073825978428 GT 1 -742018650427959857466494861.6882063545900234527115286476936711 0.7198739293753600217638613306737589 0.0963494681664120237984753916347562 1.1013125731613077981980161963009481 GT 1 -22151801061656658584438269910.6975782396070636162340060061540775 0.1316426211461979889949596575493684 0.0757740371897484529098067277837249 1.0787986887416189978280902130391260 GT 1 -37179495876194263100983.7649277228529212022599202904069073 0.4181483296315494095551509519461747 0.0425930441331174860485450260465241 1.0435267366784033961287287341044261 GT 1 -8997087562556.5174246482966579150983287104661362 0.0797357950130468376570761889820658 0.0312601448912737283319696813343656 1.0317591705152445484994506404873112 GT 1 -110174298158408265.2786947692816416691324177087184800 1.3285887335262971857524507774212435 0.0934283600757328764718359673848770 1.0980852227600993627323623607787139 GT 1 -1563682701582665790888179477366604.4518741692178359832065396559546823 0.4115154074281268439187379429461361 0.0349196083792434430460605165571985 1.0355438737339957775598049447351503 GT 1 -1369835338162125580654075789624174591469281.8029294782154886089068915455869691 0.2746690598107870432910669962974952 0.0033673007261953442683321636109976 1.0033729828424675981635179604758528 GT 1 -154673867441649090893236952380505.2657401767304385640153078533950462 1.6212598047724331044936706155633973 0.0696903488357093931368552026854461 1.0722377900119569403138769633352884 GT 1 -9333199117.6359178166663447063629017957676129 0.3407433388213591055432555025732425 0.0835797301811426775422744044163878 1.0872802096831469575929585815663067 GT 1 -297935590452366553333089.6157805050414286456130042046560737 0.2051921732442657039495266182236965 0.0283340526920282951397421150856691 1.0287432092007770559181163305083762 GT 1 -87854.7513314152380082119682874906764023 0.3992170028280560840926011061021790 0.0580171945962291293397171417058134 1.0597682578592347027151389674087741 GT 1 -77720502016253112343377198572345177448.3623381795842230756965555462465660 0.4771191517595165828980632092451032 0.0027646918264670073240633869001147 1.0027685206455461543839400278236153 GT 1 -138823985320.3513108639975417459477723500851626 0.2083613509398975119116270325629526 0.0709166039247855685773444723422608 1.0735567744716171192672666048527401 GT 1 -1815678022174270308164074370633113872917451.6865433575932304544366160042569418 0.5724293656733141919228514099566484 0.0389699708968033868478463031892316 1.0397496227339723535544060115123413 GT 1 -2033067741478650238806103380641447318800.0444192231421784951895735100895807 0.4441887621566444782861459687712988 0.0351909507962738784677960665877061 1.0358250736961060535587650702130025 GT 1 -569453308317264819612188115836005443549625.1813855950857802854890842769260380 0.5623980088664417790525061140154741 0.0556074369644870334690720968232679 1.0572133486053508891196136141062011 GT 1 -5368272382649239.3725123278733355358604959265865456 0.8096049261686877840582741638987841 0.0362353179029268097538453865502196 1.0369081198786696278182509216329759 GT 1 -38964367585190156478715225103544549.1388397458012496204002018012565097 0.0475747322574478947693851234553545 0.0880580142567237605404829520541060 1.0921789030547432183930136881363390 GT 1 -394601779850485892020729849588044339535.1038893172508227513546888996797849 7.4751730678233808295385953937914403 0.0017085141362733406637393697579508 1.0017099753110793096300423888062799 LT 1 -13.0070515740325432538829845141401447 3.0283479540652124461171237427039552 0.0654699400483071586666510424013514 1.0677114857213662448237897369935481 LT 1 -384528782850.8552410196899522388647826592435096 0.2028743347942243782126186650579705 0.0902816796756935960711268892968079 1.0946202654932067040825339879564158 GT 1 -8628102181479328.9094917233347554878798976008112571 1.2432815888719395050761920957258589 0.0912218479086977122116233407169872 1.0956542716967180970401207534118154 GT 1 -140751890231600858.0308741450820841905857917510440775 0.3788166842919139549236994264666295 0.0903526700781798376933297674670723 1.0946983041244325554958782821753108 GT 1 -2037733106172363375603084457278558.6836557765272059601693955725615179 0.5723039986000586657343090140099191 0.0048901032374549322676981492258073 1.0049020989150038527655001705151174 GT 1 -16692224127709823007467996511.9618509462561169121207131662433680 4.7068397425575083352587224612562740 0.0144826352313010821008599147848439 1.0145885322820919161156885396947922 LT 1 -542256544967.2541618693568470959614519700088382 1.2699578527453579480524723303078956 0.0812801178917221562342434588952792 1.0847740103711569631476331232826366 GT 1 -88500.3385982435550881477483428756428770 0.2935230677228992353388445541830199 0.0227363274313724728887206511721631 1.0229987835462353916356914186711582 GT 1 -1530730403822652472472678355228284.4854157799463369877825800014314888 0.2956700199393201516448119014952317 0.0679321517005483936582696246942199 1.0703496683416738765770125103805419 GT 1 -138608047269817550887569107.0624431092510746620680590531127976 0.0581282179880610572245507051884664 0.0576000551875751643793624732316355 1.0593255246454862486300695712463313 GT 1 -988833879864550820829300.9729273293199544335804639987469332 0.6354348485201049720306223574688016 0.0105440581060154509779262474648713 1.0106000405558904822498144901326907 GT 1 -23059285270784909235445574298.2210358109243454501741279073863105 1.1177805912143610421949107840807813 0.0388315095239561692753759972037229 1.0396055571011291803394346364589587 GT 1 -4199341933537054142424948077904894612.8085641906840692892131514168976203 2.2226946650648753118573062050526352 0.0755421179593004323571724573631587 1.0785477867474130999483817823831314 GT 1 -9194225031673816819083.0667763030096471002848065094411164 2.2130614694945777547852841120938746 0.0184755116774881855544638812246541 1.0186483156812847190818711189925781 GT 1 -369934280730514270075.6739411495848007233412920301613964 0.1489314760326937932763930037933083 0.0555630282718373723080877141588570 1.0571663261590787323818705584257750 GT 1 -40309788821459519505160.6489359620075222175839764370285031 0.4948778277023414257701518640041727 0.0837408854656349714169488486962619 1.0874560781806960167589713045765361 GT 1 -22806254589.1276160311803876338746882711723417 0.2431767388853632288299238905621665 0.0287962427742749013080653103965113 1.0292189900417534878746682237009522 GT 1 -93430008.2967877885994802425828578911919946 1.8827561652076507217664520679806489 0.0902284633392349933184893491157711 1.0945617696062750146544897465567839 GT 1 -332049496152897444093590155809789803586.4381137213199275244243652191480768 1.2549263666223806960358304035714380 0.0910497033497775900923479432466694 1.0954648654522881985866161731865788 GT 1 -221223908458166368955447451.6004844289835114547545296722923922 0.1710523293598751562196259607296828 0.0715838553357632198412005081682726 1.0742752149611502161018526055625493 GT 1 -16523233817.9379834156161946191459202994391084 1.5759310841678372039960949417747475 0.0687627125154828408030779570461613 1.0712411604048811264534122533119060 GT 1 -144500118.1264542714324082025179490387703536 0.3568774712472246328929381706713562 0.0110892431691093596089448056603567 1.0111511871934131104058767306435728 GT 1 -1090399420.0846821495829565012951149404841492 0.2980952126347046345603196158412238 0.0398771694442330918530060038981900 1.0406940542093752220107787923089457 GT 1 -9904133508830410864528280666203031380115.0330413772262616712034884241050276 0.1080060128935039833647617429495605 0.0104660293629069361169792825729861 1.0105211834150279976097252029899519 GT 1 -60151120098590776505453819574018801983505.5065079424552449431842790285099966 0.1628529075442731706526158084844725 0.0573057157988471403630139344339374 1.0590132438198491920968441668529572 GT 1 -2024167830264668669213603566306228.0056270056589614406753005333090192 1.4394226661668758771666648599616254 0.0614509909693946988486969027781797 1.0634202037216796462452297921701002 GT 1 -605558091265.6018734004746742892720427287450050 0.0681497158219918790947277531847288 0.0997886031809301516230390888703266 1.1051256578845502626461334913872217 GT 1 -139576015927478288569144002091173961003587.8335768686374008990975520367877054 0.9606559362807290597021417226332986 0.0924919145160834638224595328809373 1.0970528032586712197630394866441846 GT 1 -55110640773760451260187238684077525.4174311730795254014788783807209242 0.7543273581801176232281136298774087 0.0716337996171163109360543866730277 1.0743290115534092499258829580117145 GT 1 -1210493857594667071337697336121042.4856302690662430041627096579742501 0.2443438173350496013121573449179501 0.0340878704414771248643430470983116 1.0346824120969558315144019417105391 GT 1 -293962670067450597078219931612050933479141.8737268714699584604687242497909098 0.2397902378608682985832801220190043 0.0573674197635116477672837003488187 1.0590787008669538002479874930041617 GT 1 -2434353190323933.7900562839429020730756942847922589 1.0336065792944411406116320179806731 0.0421696853976096054978811499008127 1.0430846413318570707102886234056705 GT 1 -24309.9128831039099212916718243014714423 0.2972450916428378963380246665621818 0.0067356128090564674251074170553455 1.0067583994278812186248760171559369 GT 1 -6303233031302626109761094709643.2364086416009807131837303399023544 0.3253395671931948537052709305925096 0.0554023160852567636521411940961320 1.0569961734448463333141942154412390 GT 1 -44757.1269194602273268843689335569977815 0.1755178004870574792072769713862009 0.0798373690059006174538775182309851 1.0832048517418516453969892780961910 GT 1 -30420755854495524774975043.2405883073338034488050289982508433 0.0409491835539533748122427294040451 0.0486996346004525869410092245190043 1.0499254246643149792433771679019373 GT 1 -11986798924422619522891530073258512692.5625467797805975120818740109135571 2.4094400141128504058799326128835151 0.0870203608938651543295794898432834 1.0951859952687674065630933192938778 GT 2 -28463238921518769074149661800513.4399593848498032396061815316912678 0.0387453210504521121476049716244120 0.0692694360635776225659288830006041 1.0717854485999944886494446152183967 GT 1 -1839.0821638534503160150245069907105660 0.8839625011359990394569020127933152 0.0819481441241191260636952540890721 1.0855014020748037535201778604082515 GT 1 -14340050548598922496949589301588521.2012991236903129149982971981258199 0.2087323192751261118239227777427649 0.0539049001198845407546676495409319 1.0554121865684028446657303381422377 GT 1 -37142790672467825116126.7860063066541026206548515399408983 0.1649374690487450621247000405670199 0.0365620026918033960310592180485672 1.0372471447207339171062603044910559 GT 1 -3123262936202530.5606283924060878940117620448687296 1.3179192509866600658530306575500835 0.0906462908341372234804102015508787 1.0950211414974720389647348493773646 GT 1 -1838584.4996877202757609915496015224507835 1.4705456803739193010407279685809058 0.0348269629627717486585497828751314 1.0354478807258577241632481545647560 GT 1 -57809674461815.4273098571153982267171906259104509 0.7587351754605734425252715505959609 0.0788101332756553920039645535284174 1.0820891111782352668565650623150302 GT 1 -86453379733226923976192318682069751820877.7151904347692465780125934004343883 4.8260877238342432571064048184498181 0.0025891640745068632849581217583606 1.0025925217567883500222212227039260 GT 1 -553.6966305911976257391055847132377199 1.5660387272697201786819414363750690 0.0922930286699119065251745335337038 1.0968336712652241297704810836724380 GT 1 -9386971.5303046646133034428581944861266052 0.5045061137666406314724364941230287 0.0959836848357854311916006664533089 1.1009078710047942346255417319921765 GT 1 -28.0571109465657367560316551648980232 0.5737611653459907950112934622301615 0.0006468519210835672611212575840216 1.0006470612200492976406289259993427 GT 1 -3.3811783671690193776725048718154350 0.2434989153218998093376335764957933 0.0378724252194337491733374074792914 1.0386082229918925140803655456889410 GT 1 -168.1831502096403393114709622515313565 1.0797237218300672444626273647887287 0.0988614383405187862076616117422527 1.1040962466722282839343107385846233 GT 1 -2528503125069532.5789212231422378033134154440439019 0.2461404751945478643718947878290507 0.0991212018849084491491249783341303 1.1043845497174569101334683415277506 GT 1 -22776092442221236718386998765651188057.7965438896203604425494763212325352 2.0928985339008597636644584019636437 0.0549985888233482041854702161982839 1.0565688581808830434215418245229413 GT 1 -50753747988049312102029227607022170.9650530777044221196294411957118360 0.7562655199158159045840510090331027 0.0235578279649239388997711176499744 1.0238397500450929040062967820593017 GT 1 -13565749959770533195630390.4306348829609641405389669419884104 0.5328935865059815260314398786130207 0.0794159480672205253989078473070964 1.0827469713067526186135380505665599 GT 1 -2841.5002229187578549666679455725690096 0.0210345170913784131951731881739609 0.0415464447736496356466254671320470 1.0424341733550113012281523990714265 GT 1 -2639666306177503093334850186.7315725327953906464515057478900025 2.0524385630384170754175687793674720 0.0050072591716340402567854699397148 1.0050198375000411226399608022807335 GT 1 -2.4857218044902201537766970259584725 3.0646507296022254970309383970744127 0.0369913840511234366263568504935348 1.0376929202366247875425949336748180 GT 1 -717189210.2017235560835121006916983293479122 0.2299344951799299600943623159651549 0.0278131169200911278828073382412104 1.0282072264594248596621788783479065 GT 1 -239173082107803444127.4146423881032645342888384462209040 2.4476883392189980814268861694317211 0.0155240428768725237035114321002877 1.0156458026098717677632616474239558 GT 1 -8705218569.3272321958127271764748683743147729 2.2693124437660331120296106454438407 0.0777017351708466828649586287835263 1.0808866100941220166158000672225548 GT 1 -12566235.6067127364322574106996308529938844 0.4634370431068470210398990474307207 0.0636536577090661436428519233939877 1.0657698471313736931449071804044271 GT 1 -125646087588444658445999339467267300264.5104814377571250127110638693056770 0.2510070122818222375622099828791817 0.0049488294354161924087455623521007 1.0049611154428039639037801721154591 GT 1 -1243817.4791115943576598420078298425191480 0.4061313125671276248808502223986403 0.0956375102426185749022573975355486 1.1005250147177671844621008697500257 GT 1 -7355053323872042827297215910162431869.1450214453507592554916977324208705 3.9931397756836723901188134201698786 0.0577325049438707354135742123364511 1.0594660796884734210361247435838254 LT 1 -1988447254498724126398420.9295499525222573613349626944950672 0.2092493294749903889915031409532708 0.0300411846262602512281676747134009 1.0305016667636788617284421386596331 GT 1 -1178469885835701361067174427.1165375558065181836951549324977773 0.2587652620189183384437201015103625 0.0435735847482568451040367049931321 1.0445514243191694208495536016995070 GT 1 -438872759202014857601375058532190647282776.6038712698824142105288920233396021 0.6460944644328166817366053459697839 0.0727823980867762251245300074394922 1.0755670031924136726102547510790996 GT 1 -222677435388835023759127499082033470901215.1079643020986881609902265325032309 2.1320080697936714924094908082391191 0.0778148560616393912632788020389420 1.0810092687099673307414398929470502 GT 1 -261979442502.8677045128962721499009618987794021 0.5786871788187640553918414110425316 0.0300607188041632744582219187336299 1.0305218061492870303100597677186157 GT 1 -84.9733420293356425794529903295213537 1.4694283944953282851642678050711604 0.0108358283221455442037948793467381 1.0108949634834839160884986467594753 GT 1 -2032203150273776294.7661264810308853868147405226269382 0.1367688580700770365425808686397128 0.0872156975783609621775169980497573 1.0912556777538805958391701773612856 GT 1 -79438494432631.9138418926642271407633488379164972 0.4586123131800973194617188214676977 0.0775879618415008422445762405643966 1.0807632592034094368499598430164177 GT 1 -722.1733879559964470262816278773601417 1.9362773507151654675880741987350886 0.0457695126389887200716281500504016 1.0468500357073245688474346323832602 GT 1 -23867626789161564322824307730766656733535.7726217442498255634277458233376855 0.2116904423888066601416316970372235 0.0027101655034203235815851842850885 1.0027138446508507233523102698217626 GT 1 -104.0668240781436385739477559420348324 0.9402105447843980235948599541000636 0.0433546520015292695801384402303299 1.0443225434670351771490327619122073 GT 1 -15877297089.2817554478002549615442779719539473 3.1760137510609438747214322760384775 0.0907863705813828421239450788451763 1.0951751965544947774416688818341742 LT 1 -7389.8173799438489680487406229831966953 0.3833299539994464264802223601517469 0.0346846643673653874746041699921091 1.0353004583454086968767386177757043 GT 1 -3141097187159086895482017733011.0588973835514357815113251960310678 4.5559164663425165521738517082325768 0.0447980620288299527775694260626765 1.0458325074815673035257607259742527 LT 1 -9241670002427009176770256202916925417399.3246794482419106675901947171943182 0.3160983848340324696154251289375964 0.0238627563407816540486595180612361 1.0241520839516020696110662814964166 GT 1 -380521404876966130330067197092914864.1556330177035088681653248435106841 0.5147706663362842911480650841551797 0.0429681026208987941442093664341486 1.0439185574899626112514822614498561 GT 1 -146720238505296638522553935336.4962975116635983651425468655410336 0.4393183063498994582581713490267372 0.0320135112393327523772735421637738 1.0325371496948449929665342213115282 GT 1 -1145509903248295245476757901499655979164291.4794873187040696441955938982327986 0.6550698848304872447603964832982396 0.0217945981774503962546331374067166 1.0220356086854728892533732751942021 GT 1 -35034.3274360420494048791961667581590514 0.7753206644165753051908071679548192 0.0505165173459773855786688127848042 1.0518371447167849715881422204147195 GT 1 -13909256421542856671667419.1441395055337074036795517257718213 2.6996108596397105046997100772792910 0.0876394048193921991545665375719929 1.0917199776011963636883404214236764 LT 1 -3119561151638306989049.2392377599874688420392777558945993 1.1602298133796672313572008289150757 0.0900361547286293041172281446643644 1.0943504107315386095857324984948379 GT 1 -18437441395387.2826121124196486910372949380713703 1.6420910618704881472908063183179927 0.0748168062593423816676449762944053 1.0777635137912894826445120561108783 GT 1 -464677.7924520553924077475649475147962362 0.2780789241093730654187869378190750 0.0608062776041202511787702396170789 1.0627335139214013753017983999946068 GT 1 -835761776264923537761666245335.7410151317163473865667122629546548 0.3225037610414868231125809400733647 0.0142590520716282743795154994848594 1.0143616891949212046588501517948196 GT 1 -974733461007941297803617080941465888713262.2040997081601464686913910112523565 0.1842401670025300033913392478395746 0.0473621844730273376852063261328659 1.0485204942303174430066183724293624 GT 1 -761983507112052437243730683499933364817.5820730835957342760078325651609007 0.2509593558511491744328158913454136 0.0753427643391783226068454411088623 1.0783321661849223497382103110578936 GT 1 -6632290.9750614033601473423836989329842729 1.2329415335533292169966170196574104 0.0570154555405398879413863512727768 1.0587053862396631694646822353924089 GT 1 -2988847284217174706899753638279358.0136618410023820785598599332740139 0.6031828441924272503313023416654459 0.0381022333845726242115892269714597 1.0388471056732037363421152980678546 GT 1 -49413293043852448415884494722523180196448.0513226889533110396498725588517204 0.2493976707852996331040009919305638 0.0615227089591739349141719893449302 1.0634966203278949204235853279220754 GT 1 -1255638340610930877483293572814407127293.6997437899057946364141677786135019 0.2511612527059053999151441598128998 0.0132669947162682342473008585528205 1.0133557875074544207689173321744757 GT 1 -143930363818.9011271182488839136658807940484051 0.1921642977269498664070727805848382 0.0746279127443018619609546529699985 1.0775593658605182917990997257772772 GT 1 -46050035696421.6711508324780139997141558201988267 0.2628535267672341074312015842969424 0.0956104122052396618170702623212720 1.1004950514765720579924040481288651 GT 1 -2482441733714440.9791611162177268350041496357234007 2.0622014473060664349633858963684167 0.0257961025229328514590206025354099 1.0261346569226994256776701282857926 GT 1 -34958995697088854954526408299.6437710697431030885215962722453195 3.3475684972603220848236471071672647 0.0373798709822830804854273502815030 1.0388220795138349746113784627846821 LT 2 -202353265496382652396260376120382577.3178154893510224303220033416289195 1.1106920871001911623864891842440295 0.0002065843318779331454821037516052 1.0002066056733602830583358271176434 GT 1 -592287874.3452198711311146748955520777650125 2.7069320163174027468017212275883382 0.0414741222947078508270205784777045 1.0423587187332937429641802814991083 GT 1 -587.8517270785903149814613517392366513 3.2759312700700181106175408609538747 0.0054028733726718004657635945150622 1.0054175216787986572145859852361052 GT 1 -513987211.0736737103199370525991706565179400 2.0576692244765986505796620407729963 0.0749634780269703251838956790614691 1.0779220590350673043287829380311673 GT 1 -455792904424321850433123.3807488367219626146131232407611922 1.1155080120626368302751278654135978 0.0959809638710211480840072315600690 1.1009048611468704512243837858037879 GT 1 -45742710113998284232.9326555911418222483449788203072937 1.2204099597723550012785088744730318 0.0309074620846079242003982259524251 1.0313951732863516534720204782432038 GT 1 -7.0458976563987024965660241447275761 1.4101766936793923055458144439426268 0.0219698668498514356105671444253394 1.0222147984299966335192864900740630 GT 1 -186162.1522454134415147737784259837143095 1.2302187831955736839860712251758128 0.0730216826227682295422594020736688 1.0758251037899081573724811199498163 GT 1 -13381604552543208734668022198396.7625138902376736248737025791860776 0.4316224995851806097867987807123934 0.0585514476728570359494861114594243 1.0603355767463968013872639869318254 GT 1 -1589851355010833715670486000850836009.1365041503746868328305590553163817 0.6875030712718997465951658880371793 0.0901146651907845841737873578901903 1.0944366931147858964655979835118988 GT 1 -389332323959300419077.1272532344562024413053446603470336 0.4838117303401308319302416765278881 0.0723661901713215343157388063889739 1.0751182255493039949515655477972751 GT 1 -24938274851466.9630817991255423310949828478649403 0.2355545288416585457743823599635566 0.0301344945182321199612164052930079 1.0305978712405901363522388932615662 GT 1 -851921171.6680509482246175456168876832393726 0.1676638699130169929633210306016967 0.0402404652586407585123381393197090 1.0410725105411907975299379794117388 GT 1 -71948862759174797748642709399.4107637522198272662672956016810982 1.4266920674744143101231014049904803 0.0065953697591370056049921415530256 1.0066172153162633601806657707531846 GT 1 -275357.9829457114484161309050948110301392 0.4639377967929566204179416414518117 0.0863745421960988761529584971328694 1.0903345750965776605358283532261254 GT 1 -67065931887356739482037540977899.1878926840650799806713348216796658 0.2721877517613620700152905482576503 0.0794819851852936158350678660281182 1.0828187078164161725278319073506535 GT 1 -144439624.2431997606050651914272080632592644 0.3171422347082636638656022121199881 0.0804465158891193451386586771736520 1.0838670701139996699098062610975944 GT 1 -2981967143247248.2012337363854994629701404291845645 1.2697062259203322252284732764734605 0.0224473001495825422404670555666467 1.0227030756854112197981125153040440 GT 1 -26420796246910864579787139881.0200836487237619015809302743346073 0.3367948111029573229463298650803389 0.0278845733046232789489092689088912 1.0282807298279134579386253031539209 GT 1 -13730366605791143899407047290.3074230407936348571848741132223985 1.5958493508868995670399013761703260 0.0922790643237535319277416505149728 1.0968182871829317324844147537226676 GT 1 -2682186957751088868947112450573999619199.4415818032206913874738849110659182 1.0465773050177749065532882130320117 0.0688794544987712655663412416373101 1.0713665304936724650917130210239561 GT 1 -12477755073804302805788362302944046086.5981287547369642828548579252924473 0.9427235165630571587390043245774340 0.0778931759661238090589842205716406 1.0810942009288259412286513950947957 GT 1 -16474739621391773346270.2122762362741029685938546959362727 0.0705750871771651583394197656223898 0.0520934702475974187281339174352316 1.0534993788957415195886873010153315 GT 1 -35962574480537027811517625814014243642.7006702938925004655367666478187700 0.6646448978236710120985096145187975 0.0472941244244707047961112554711645 1.0484490530001568117831558258485463 GT 1 -19307724012624655300528.4957736772034765650941287234783342 0.4398142870441038022889487843520213 0.0275919056488995696373496035571707 1.0279797124786595642745403049862616 GT 1 -34010669834698528983488.5593613602457470281226514046916452 2.8916976600258111301393955937911768 0.0766109008913193905055591442478421 1.0797045741460508908647826629237456 LT 1 -2155272774.2098784999397470177647546634060357 1.9300143588654405600334340567797703 0.0801966679921971918796784050770595 1.0835954013477555915612539527294011 GT 1 -277992039284194815522243616697579746.8922840579805130008121337417276336 2.8810633289773518222173983750251876 0.0258648357654511767938997809015122 1.0262052126528570468606880408134308 GT 1 -103.2887610865501767685948472895771075 0.7952092146294374631939791817214325 0.0067301143724244364368875061174337 1.0067528637200836946683895835621906 GT 1 -11761583870827.7606123404189531609331992420027743 1.4788609548396735438478379539755809 0.0388380711972174158596176037170305 1.0396123838913578172233764276639618 GT 1 -57620195106525068687020203122217924.3350314375588052460884002499971682 0.8219504353020070168568474385713150 0.0042533156662882266353390524303579 1.0042623867439420906040756152650929 GT 1 -256185309981736416757715744543520276.5874564260567434826203150938331479 0.1198382588720864127825902395297541 0.0892690685691073822850125550965928 1.0935077805282500837396293804533418 GT 1 -89.2921225528652818500497682483851587 0.6448714926794556963747439019247680 0.0725062432051221010569738935185499 1.0752692157416620865796013407148784 GT 1 -1694321759827052.0697047694757114628776745635810494 1.2535850626621020339174690836903695 0.0358551958784245621047824254957603 1.0365137839078730069212488014734549 GT 1 -540484916936.7134722242332876213685613150392831 0.0079707309751178662700508003348335 0.0150344141695931076997652974165121 1.0151485766636445413086103440823379 GT 1 -11092993100473702290759864442954212201448038.1360119771347968421809084240065053 0.4317149091148543593357274782756695 0.0389561317266636436737417454546362 1.0397352224862411174029032929224686 GT 1 -35094443105729375.3943678907032500961942218837192399 0.3569983844881824232436649235892400 0.0854902810298877573290094007327779 1.0893671835749807040231924371863417 GT 1 -336.1586979785849564825798161190318986 0.2323782547325027300104822501722238 0.0170349315357433869143820699299576 1.0171816951080278338690683886592664 GT 1 -875859.4798961051534072084805057631807281 0.3990036646946240506089478587725090 0.0869500948451784265155646822257848 1.0909647392514098966009407542748880 GT 1 -21977680111307386881232218803809050584094395.0362427379968670008009815056044653 0.0186661399056451122377859915270940 0.0402334906282897161101763229397199 1.0410652435073597501652198550480450 GT 1 -806301419074531722448012.3040288408488426427559748560542491 0.1055142905226907942589616031536033 0.0276414162514125049961117037509463 1.0280306292318939529235231952577999 GT 1 -61.6165447875909930510979301643465903 0.2402366808470040061445932856620407 0.0945966302620637891500966846183139 1.0993747221648763153967163157305034 GT 1 -3908411986136114821703048883648146068236442.4483801610566013060506537236925829 0.4644593193143492876689143841514992 0.0559139434969333064535245253216491 1.0575379554417391513208707325986402 GT 1 -15161372760664126261767304523.1449052844059546902420466332673078 1.1159077257231285037842211489702150 0.0415992280367745339710774264671332 1.0424892461504653285649303489740069 GT 1 -17281280444442155047376985816244.9133166408704193451408042087558324 2.1887533841853434413392682261044639 0.0277404850400365940195512172905788 1.0281325194578211824445765372459840 GT 1 -405809379546657831.4175446133555965003637787511068793 1.0072718225515639746006881228289189 0.0877141990400056364193455587892072 1.0918019597549040953263579128664921 GT 1 -5957378106336874668620414060.1954148512682933035685672353196621 0.0309689008366942884061788797790850 0.0548714133345112961863833925619017 1.0564342901996605762371830290907418 GT 1 -1416255583267215.8293329750843867028683013302822219 1.3335996691179364395637834023756956 0.0639149585137921512575353390885676 1.0660489503430440174493289237161113 GT 1 -257421420695314263786.6177733901869089838116996953477983 0.3340800864318622112619568526612613 0.0123879347354145365921244027895443 1.0124653048334223657319821687682212 GT 1 -44302639761361639734921349937763639.2694863238828650547217645759529138 0.1301017813741501443880278815791660 0.0847676379610048080048762159469339 1.0885772983622441088905845420112865 GT 1 -86018780920366812438082098128549876169726.8512563198608121405994869576855761 0.0067455736099173743637506529368113 0.0633554988720121293140803990527000 1.0654514698786282281079991977420771 GT 1 -497143281458134.2362080480139054490099296081238314 2.5429545655048944117969928310660500 0.0903601829308363084747376065374782 1.0991912298018797908668189170474011 LT 2 -4940392005700142763136117290813.5986134424805108123936504598491216 1.3138552690903866779773813824193513 0.0429835734311056877310114611785688 1.0439347230277013029895807827987817 GT 1 -330.7202170036575263200277686568768891 1.2857503991030729305652651941197528 0.0178677919622432789348276969095069 1.0180293482866542411458095039222863 GT 1 -35845.0896779119128274204671255425005341 0.7304559657491421007996541537624114 0.0720351767685168721773472974882199 1.0747614529149440470093680978453863 GT 1 -489858908688.2474269898354648701634198380498174 0.9748257737889111437567919335076195 0.0969007944508144200757985950490925 1.1019228694188441151409023461340096 GT 1 -3846563688767181787.0077070849821157457361810477056127 0.2129119102793088028754404435398591 0.0403773934525093897794704504178564 1.0412151899911610647305125165644061 GT 1 -161597308450.5506334287144661447283528318390126 2.6269035549309605751054142088907553 0.0192475972535646384666846874897948 1.0194352439883281651459100023733447 GT 1 -48958492704854735483149832480461231858765.7491485534880842274645174219116030 1.2866431519829533658264740864773056 0.0645413332432081560012332564296634 1.0667183172940209950584480137344233 GT 1 -444212588948632151764454767184979403.1775064082881692674576182995975804 1.6303835426640009976288268432565324 0.0093564684570356553844120019444483 1.0094005151711213130523441116768300 GT 1 -1620607116088282189081411162464871595675.3067837708779872182252060231293609 0.0041024424600940197775481152972427 0.0298987348048811452759939212173227 1.0303548158253374740807192326085905 GT 1 -10515654.3166782020185222431471363588796370 0.3990048957409469218277018405938320 0.0528477892649357527425616321925551 1.0542954693187564801131530116419637 GT 1 -2205501766371352.7682033577964867661473442176053589 0.6016434219261198945039755314860551 0.0087852936685666368006774692431831 1.0088241118811508029753863854861164 GT 1 -404538951230927148.8986413704353714273808498672129177 0.7869798098880442803633104781384591 0.0938267931339818748610810752003837 1.0985248136549465714251060887518770 GT 1 -2088969089153058.5014983548552513304005697126044808 2.0413032245276508829165943926940454 0.0377324176470737089291703505495889 1.0384627148595444598085760124150567 GT 1 -11660580527231538642976895726.1573364603303405786166933466140210 3.3774856350071130224016924552433216 0.0783565811697551772241327943724063 1.0815968777042545108200839966230427 LT 1 -82090171241191376332624334.7269707570563884272498404410483001 0.8782649339372463596435003613862006 0.0274270233311957445884610766739045 1.0278101660285109877496162657256665 GT 1 -29617418583141979758791.5644011517571401040010009757980462 0.1929305959637136378080132453126843 0.0407440762053112149537276453710194 1.0415973744301101301495887254501223 GT 1 -6325140644380.6873292210043660546003592830614390 1.1362946973103251749830486716742439 0.0430911839480095297778398236648823 1.0440471731011115658234301991558705 GT 1 -1485447012552417400775851778859.7859829829248764679946196323778893 0.6950296909682460642211211292193058 0.0353711659077764457308599534203916 1.0360118795151343269493970034317602 GT 1 -10259794790891101120467337898065627823.4834187546905171357769244999149005 0.5468116842634576070386377667748353 0.0252891076244802461192542901250639 1.0256143725957199631094468183536346 GT 1 -16.7138360579400052236708698273072776 1.2914229367105117366098070451380841 0.0099275801685964061061553362918938 1.0099771871840784796107007518335147 GT 1 -1546463312684362666604248611500554034.5442590663409525435173503621008628 0.5738241725202317711456918402051268 0.0886017621421636108032359525071680 1.0927753335996525704235093185514538 GT 1 -77074.4788306649430710877822753271573797 0.6441541114278333860468662192993480 0.0522230819290215850894350924370261 1.0536361229093846758508869538451549 GT 1 -738385485392668341.4339565378445553180605333799415602 1.4712135818383445319309453736701323 0.0568991260510660937149809595490642 1.0585820307558808153656330172965534 GT 1 -26210566548946.8200474622960471553894970829187617 0.0522648020026397857758649874552047 0.0619488136570406947419069930540930 1.0639507618027786952183933110227072 GT 1 -48682831.4799400402554007490328621823640505 0.0519924421960098572683202089279277 0.0765815580956436373890365093344436 1.0796727973690705167228240489220105 GT 1 -1529432428961085202784225.7938255263807046520751351279813553 0.3419247349240735259445467306182071 0.0875594715584299592663595043827171 1.0916323699600363239581395165228273 GT 1 -3914973449397970.1334865834544653137228684198606082 1.2315277870894655493343641107191440 0.0626458166613142027909675904816991 1.0646940710068933275133108343001261 GT 1 -36996075404648.9902753150131463022004285496846408 1.7668694374057422276810142156626815 0.0091715978846575992941347096276356 1.0092139159367095905827618722141601 GT 1 -14209490528786317668147054331659296.4175834988966519116035409113268606 0.1009147956748283741644542535077691 0.0418937099750288025085270623343736 1.0427965572440820111970121726304973 GT 1 -26072734223455343542076.2366118567073588923102285987354822 0.1073248752390498577665321211288664 0.0527014678499353260241420301065258 1.0541409956109116932780678556956279 GT 1 -35137304348195862304209186714290142332.9955266328121286332423065033200346 0.0243985410409346591911907525717296 0.0500619225407653965844528608708941 1.0513584781338230753384751752917268 GT 1 -34443091844664792675175027.2705013826583766592336380203559922 1.4114191449114580172911812558873567 0.0592715743060204574661742590251013 1.0611007828632616978028022499777484 GT 1 -422007729588648.6156902202685395682795037483792509 0.0539921481649548977986890120021607 0.0477226146040713951083774296439429 1.0488989154169095238935351772280170 GT 1 -77239688558651612320.5237442239319016230594453582568060 0.3187748978080908790935485983653316 0.0934941235143588090594516656074043 1.0981577661986005379825889515083273 GT 1 -902645210660.6220298482519862085090532693940942 0.1858392648673511200217110919791997 0.0954694072420837609030067189601568 1.1003391518797215104143610576407518 GT 1 -4838639594872288921509064044657859963092710.7372485950156785100527930310996580 0.2152053253514410642993713416763473 0.0043021411304472315538989229288925 1.0043114219674791234092962335739208 GT 1 -15380768390056266960994015021758338732730627.5872083622245735033089723652879597 0.1694670981011258052478167256000516 0.0217137364536137737897222929158101 1.0219529487638243949302359662058914 GT 1 -17.2535790515216759248073960924663155 0.7546136521283325073742539615536585 0.0380942158838029389951145315539437 1.0388387706217722296588807260866629 GT 1 -24455503628843268.9299397469740522634143092519034153 2.4732792344380237982031222640297222 0.0294150048617708377661157996499518 1.0298563014976839918255325081878851 GT 1 -323751129161504756050036672.0503017373463216957330266092482428 0.5010663603869825795849383039144182 0.0039496500921881007109195777515231 1.0039574705589769804499936967403655 GT 1 -1845726675841100740182507866996870601502.3635016780707878872778391060904379 0.4332071559748536505934527681332228 0.0918436597033795303213967207979908 1.0963387342588664932944525575345946 GT 1 -687554529792357424705982372176.5559563476232121549936314271382349 4.3374573286011430231605456163500395 0.0894166270351435079974293986180608 1.0936698156761680934935230744019516 LT 1 -1.7492106043703171765070604914141749 0.2276215252415837448934314018075489 0.0085534010248994050426132143570288 1.0085901912976361239687245897126574 GT 1 -153430.8979367982435794839588358926480019 0.8408829497632138657458530057706844 0.0645776609792502737806978584804163 1.0667571521915206204215671420942513 GT 1 -8577786384884490681212.9814180530598946187584415555735699 3.2550888691803207874022512001094855 0.0494644402671637823407702637202910 1.0507297061460472818556630983730729 LT 1 -2635103504566423517864130715707623677.5923569566808335996779660901249169 0.3854496273069821738648304259042320 0.0169322325371932983787597999903814 1.0170772217780134118360720269548180 GT 1 -11532920591444788802.4480797887685772191376220580463917 0.4757475859859692071133736673070699 0.0955360351090340589941042759810225 1.1004128147513965045622931480130439 GT 1 -23047979754281443671715652548482672.7487482783017961661028826564792910 0.0058191991962346771172928841961875 0.0659618020851441156093685877521504 1.0682379444644456853229540180966445 GT 1 -66200717692688905709734939210.0940276592151120759105400217904779 0.2504202959319030544829239587267677 0.0750661178334489505068370869002785 1.0780330227633023833614819164368746 GT 1 -86876.7471171541617201748376803633760461 1.2518734375705757134947694416256889 0.0553937845469906662172299786719295 1.0569871415576381705263395710478923 GT 1 -50159063468000.3324100511507695329418158825877285 0.0658869775023676458143869787510677 0.0605773559008399138310258960455217 1.0624898008264915005402363239989196 GT 1 -36094297391678429.7787777529711163608853815736437068 1.0651847890079041710317823268528965 0.0119308500823452563511334814135548 1.0120025938882435667288567703174705 GT 1 -397669119125723224885.5014532013843486660697992581948902 0.5425321143583241387058716001439163 0.0715872605710112985391810031666811 1.0742788827576577499101308245747280 GT 1 -99174872404736037185072493894624.8179854195553647873718884954671413 0.0269835696789883984033223413408759 0.0639279703395222336441762020496381 1.0660628506999433690929239027903866 GT 1 -668309862810881396120920989197118.1913855476619213770607487675292201 0.7521055887003629251613958475571327 0.0647131192888227463297209632564612 1.0669019724643673325510221501781476 GT 1 -351410278249497529428755281126328.2469253173686804923682703863118889 2.6695410381358218114877944665647654 0.0892439274230196458047422098977393 1.0934801754495050647489515759072518 LT 1 -4450401123464063042354900056501442650677.1007262412757332978270088603091694 0.4276296702111667587954418354992922 0.0682883111768029049195844215505941 1.0707318589103499333833055822970753 GT 1 -3425.4969984905477123138641420212862885 0.6472188145932779718775987824018157 0.0173965151872178826637374057888605 1.0175496127316084726168211194495976 GT 1 -20903815.0943527985815630622272542352619088 0.5290229588994846779701155606654122 0.0746356257658583560787022247428372 1.0775677009441101823511236177176739 GT 1 -1.9479568826714461794801482604757657 0.0807039830442205843630125883863466 0.0505235081284309817120797045318263 1.0518445074653920075938193873343747 GT 1 -112396011961741.8673434128932775155090526678339668 1.4529501498644963132624006089807984 0.0863054472256969584826514688214444 1.0902589507176677133011550112053422 GT 1 -86.1966116539244874233920948231719124 0.2989249166956291760367473061423092 0.0199269092433601854502806142274434 1.0201281276939142104098996339554659 GT 1 -10765932184243444228160.2569895558743530961122259362551321 0.2589152257077412940692308855137455 0.0997322954792818438015793446000133 1.1050631104196840891588704545315206 GT 1 -2511.2667645234407687959802368461087495 2.9679559967788224668725440546278774 0.0280204086176291653995444984053463 1.0284204712623226065075475389434591 GT 1 -6451097500005429.6990308497492260379013776863868014 0.3723885667780140086549073648422650 0.0112756559013884441447105537197903 1.0113397080512230910271314753733630 GT 1 -327572993611.7709385413354711247721461361953007 0.2435457451669557294002061263032527 0.0252365450543469568632167982610783 1.0255604477310832428174462915920764 GT 1 -49615012915089230832019144037.4821438734618999574148456904666022 0.2394874909856586259927336412631683 0.0086409762837981116471745405252148 1.0086785259865773272510067849134252 GT 1 -20035668042244923230128.7543869816402347925163994893459349 1.6649386001803335041154005134667224 0.0682816619354025380215687423441541 1.0707247223489503080467941693130187 GT 1 -64026401111005436030958370.9200002321554944058841036796044051 1.2898571129570974374430761904112877 0.0375565827105914199665412536313100 1.0382800017800180916197182750638231 GT 1 -9931984405627341755333.3874607597906485673366802349216145 1.8292321491974202706116947544437028 0.0443677013327735238441775374894630 1.0453820647429128319360186399432468 GT 1 -2502919.3421716819818525149101632297670002 0.3115046785265227814073493730402940 0.0724578337510685867684065457743652 1.0752170232709253781623766122367230 GT 1 -40721649297529514406.3373248222394301206821501375775264 1.2904776446842446879329498159171784 0.0577065784547186333889206136352831 1.0594385650680381282150693793714230 GT 1 -5234583990322620436389527773667060777041883.3022188368107379515808167583865063 0.3719929554559308099223506081421583 0.0007554241361080496346923106128676 1.0007557096127004166735422728198823 GT 1 -70993159.8712318822137799371390283375152885 0.5383260837688569019980780965297978 0.0049024199158315977550780751390106 1.0049144761957849874878884075128112 GT 1 -266341596270289192807799595.9118161275883126061404195414199174 0.1183731102827099502416775622475833 0.0518275563925450227759847524925230 1.0532188907298666955619543741327333 GT 1 -5573707107.1015887648474052665736142760133417 0.2224528865575229901367410098329067 0.0621202004730238965295944826462423 1.0641334836808765386814338988354789 GT 1 -25935670229996015601421080726296186399.6179854569677271082661458108066875 0.0819630095544904606366607840962912 0.0304612455821887990059459414399741 1.0309348314853461911835702152648432 GT 1 -54396383450977475465201.7509575099880526285182558374116337 0.3515607971811215015270335118344406 0.0407920662759766491851888171029922 1.0416474041145239017617095806494608 GT 1 -425318574519618923430729169.0103988067142999746066210486053748 0.4191875861791014991972971484776846 0.0830263629872307584870036901750388 1.0866765563071280356531468574406638 GT 1 -32170773528051118910496950.5283194600805761681052034869452203 0.3081164756211521675363543344896726 0.0048844247067599310617760524736527 1.0048963924955305344695328856391054 GT 1 -958571338842713231702115461.2298377419286307381747744616854338 0.1382977093845952104754790126797236 0.0223422840922098771375954178002436 1.0225956539402862312149349165528553 GT 1 -263935881.7025739964892300791861055316287960 2.4673479928358165414435067723754565 0.0006098581702440035305938004294316 1.0006100442093800802652739823323713 GT 1 -761.4223131650262550604560137124457174 0.1674186745801190341958803434300091 0.0856581877783789833331533607530052 1.0895508034545600799169703906870676 GT 1 -683551742980798438.6732231007196177279557915561703616 0.1091109101566337801007768919498775 0.0542546811934517386840281851377814 1.0557819651967669276410379142475833 GT 1 -75.9735006350305010933947814077614657 1.2625100101393747532388498369235354 0.0794986409794387038902751691835245 1.0828368019162200704279062589486114 GT 1 -454.9626473063093512711254513877148869 0.0206310916241267570939130123698908 0.0519162722524516622304939204398908 1.0533124602183266576206491827923087 GT 1 -19895897242422.4484977690879655721810574048885399 1.8868309634925677669864684488485501 0.0937833512169413710919687830863296 1.0984768748332704090613295727979538 GT 1 -7155989820595415078377850856475663.4706178152016423577453198998049922 2.4539085458415247363988448572219752 0.0356049201286518920358245545976991 1.0362542344391220736574071342659698 GT 1 -27425537639809940128803262311817116020218.5549242055258234683209757468019149 0.5016852123403971870450245081662115 0.0039229117887273950030775836458899 1.0039306265901116583012344429020387 GT 1 -144840236.3126311585750901638891764092055380 1.0311534042605707854306945575570898 0.0378487384066318090726431207670668 1.0385836040932636944307904475696164 GT 1 -961909482045813814990200710128828023545959.9158552960814408155919915688300024 1.5736280203310699167717780638605817 0.0900659413125651523815362482498412 1.0943831450776507882914490812220123 GT 1 -123094963.9844836944442948227307604900324410 2.2735697853066408146030883258617769 0.0092528484847821257876582402614028 1.0092959219949910390714523992249599 GT 1 -9752125252376388150817713983221902758656806.1692897074343486490430735855935543 0.0804339150872216225040749859738830 0.0690844182476675893823723542049939 1.0715866806258038475831258410542469 GT 1 -18030315.7533684894333304971247371755119217 1.8101705118476426042231614394997937 0.0370624063531318110577499317752035 1.0377666733889056873929074033763226 GT 1 -65.2740302550419030193240378159734199 0.1068613807787410410246311253351720 0.0768901645377788699507299545867678 1.0800070532250909362054656539039534 GT 1 -67900690508.8485515419108302026100968069072140 0.1557409779157550930865688986541814 0.0419642876606127025223286030493758 1.0428702236900225837957191954451048 GT 1 -16737717822555264776208893569375346376669.6627212927905864317098613154176569 0.5664875921676365437259819723710975 0.0109628696885384789343150663736661 1.0110234047765311215934267456801009 GT 1 -9226.5862661472894611453790146121052272 1.9460504723518873839740144146385612 0.0940174772090698923594093116494838 1.0987352636429593406209519119516130 GT 1 -377698636.6382903816748309236623238339113240 0.3178836073148995691856016886447100 0.0325560935075687488142966677234873 1.0330978335445777316176718202222701 GT 1 -5111579.1730351622684237828613319045011091 0.0685183960425704506633911226342861 0.0706779876431727402414947432752253 1.0732999776695399669384689046537261 GT 1 -1394146803566375211324313216980.0995013440152522613067488728237855 1.5999660544893085951933680734255255 0.0203262446268825757421277053768745 1.0205356654224101739644408898702886 GT 1 -1190546934239171222756.6221043040621553145975396930608739 1.4776864837447764914289477871994983 0.0714960268136404560206707805745359 1.0741806190532875560306560324263309 GT 1 -82120798400.3655203181654593541904442170401148 0.8291815141517862733624699204592866 0.0518231057624233973451513818164233 1.0532141968372037633222106761246824 GT 1 -146258687709421311723546570979927.2485093049323484239924401810722687 0.1922127025300141442781221762789168 0.0357404319222908557510706292709858 1.0363947591245612898703079238329944 GT 1 -27376699745735893657290.3625803336710560680623608080583506 0.0175881828058411239750880075450878 0.0701642410930793856217478986458070 1.0727473117569308558786684450101308 GT 1 -67506475069744569893575043794989716609169.1493964028516874762764205708269283 1.4841616407202447332767699673245434 0.0899319232236814638486444216884400 1.0942358726250371346608311182003619 GT 1 -438495873769371851631239003711.3503882402168950614354144669967871 0.3029393721347266861257166323662384 0.0107249633172122577747721596831348 1.0107828902849940894714425501529929 GT 1 -154765839381.1700994818902118186149644346065603 0.0001313410035662605962869138371540 0.0749971520122729121765067541253069 1.0779584625688007730038520201914774 GT 1 -324164301519166965866953312.2541914937148200303220762031378579 0.1673730949437957879997856944551603 0.0402151589801052671550776092741264 1.0410461435773878153855691697833965 GT 1 -414619077017517963704655297519107981189.4928307692569380925369079907433715 0.9075693374917051827627706205401136 0.0467887589529792222014582273190719 1.0479187408696579419423853500493176 GT 1 -2.0070670326479253677871661473748699 0.1719135812040886858810119841031471 0.0156322917957287186234610916953224 1.0157557645340931809080113064918533 GT 1 -365.4515753119910881709493671517662704 1.0694144094198038631241349527423241 0.0654255097263727827501415660103399 1.0676639438950544011149014616431173 GT 1 -853579642325569750687903532478686707805459.8094855757370481330950758090871910 0.3415107666602992540623158728957454 0.0489024815844907312742583156747401 1.0501386786702541576575986417292228 GT 1 -1121068263487529.5797462181212408848211539340105221 0.7764561641743765833935546562336201 0.0777874338221394636614659235851129 1.0809795329980310800362781125960725 GT 1 -5765182689639347869646364106845.9120549231072147762210506770512188 0.8439058873264033620094637800968211 0.0297940684789829736634710432347370 1.0302469294801475625884300772848027 GT 1 -44.5475543570210837441236227627616605 0.4700160500722807617072936400956813 0.0719989694980556113060226457539193 1.0747224357418715787938584926002774 GT 1 -10726380556012488021286967745023057898666.0729030410579070630574438003398537 0.4318680746588393292755237936983676 0.0148218903847819221922852847170156 1.0149328322119816351491149338990787 GT 1 -13694362921642359975608.1572257583603438430445282279665900 0.3012671117022423585735544724611234 0.0890654090388831589573972880787940 1.0932841834643880991542861911545026 GT 1 -461832753613956331757518.3095996509878436124800574088578725 1.2529850042067797804775754511545643 0.0154716302936801097024853200549620 1.0155925649582418299300544523625106 GT 1 -68291087.9877245885243542683350436925535531 0.7565499059126156780625569391049324 0.0510918362383793857523346161207643 1.0524432566443224206947746753505370 GT 1 -9.7163932946814318977580167096792601 0.5733155049041500886435873764670942 0.0372860162309628199959702361390976 1.0379989167308046910127077067747741 GT 1 -11129588547983402258615761.8087209607368392818167048305326753 0.6750551309116840528985330112500885 0.0732620986360993114577216253728436 1.0760844919446304874163585958116807 GT 1 -3715821057969731676.1091684619930407665336723695195528 0.6241395970436738394235081737526848 0.0535496901580624412688308726948863 1.0550368085572139029723388152547279 GT 1 -9588970483001224385651782802475174286.9142159655099469052047992889756538 0.5264565760457993767466989871959009 0.0559832342479067664901347180035226 1.0576113526637419291690398592058768 GT 1 -68453131.3532626226262643673194116869887881 0.0779883126082623482797797534850181 0.0358004675325805712286287630757248 1.0364570219024362675035236582493878 GT 1 -394655218521437.6023040610039354086862569148896123 0.3792363617436507913987155721159508 0.0166776022435308810452611964653306 1.0168182393038438108443617972344832 GT 1 -1936364305670.6550379802996381571496213138200054 0.1573050232645602799884692580409461 0.0370048542109358482737650570075950 1.0377069079141986635102179748821731 GT 1 -1679799570054451075011949570.4045107759682689686563616781362513 0.0542481551787918989174470745365544 0.0544842518566268732788428517473085 1.0560247351329903704452253842918756 GT 1 -53691190285025254472655839684206234.2805778771572645158433561085502103 3.4697108689444264232010673021970895 0.0765798242991347511992101594554724 1.0796709197859483542710588356436307 LT 1 -102504069866258238483396668674180.3504511252915573293132989239633977 0.4644143305299146739673063135635656 0.0533736698632165702184733467323868 1.0548508464132247303414685073451376 GT 1 -263202385550545085222374844407696510125.5862977547527456315132755579118194 0.6359890808786375168401198895102322 0.0072312858713669099714663055774437 1.0072575583515395534816982823227280 GT 1 -673709722542.8584143323134621281038424664771033 2.6014181862580088474039030810145457 0.0498725918157568925182780455873103 1.0511591895018620499432205340413982 GT 1 -59961882592343324860988020113518383.8312802363714645670241365975635080 0.2242932977614089092571573691236592 0.0545073328693666201682918574214635 1.0560491464603588408257515239840297 GT 1 -622310903366064638065.1409935728767226680683084230164799 2.6109380610344057631749940406441760 0.0662908231927456393883019295790535 1.0685902631082385940731793227022110 GT 1 -24505836774551.5821611621838524309963733910701221 0.5862289646592701743856846774928971 0.0302820135380259144783647642678280 1.0307499853627106635312010079152335 GT 1 -23704499901795762475570.0490716889842909758963554496187417 2.3206772217544482161714144273752554 0.0375255488294395336067323569824822 1.0382477574108810293215064673341512 GT 1 -11393911.0200404578988472015166602456757613 1.1044744884319310032030934662566346 0.0619523853745213514320346967016626 1.0639545694034005998780276987269224 GT 1 -4671291487689645528.6270008111298209546873059498915225 0.8912951780741122689381196840431337 0.0534897567381207485598287176894426 1.0549734861389379927725208809229608 GT 1 -1501500357.3910523416181709699022213133346763 0.8628045863077300627238333918418156 0.0225101544609224202153480452555082 1.0227673753718909443977673854386967 GT 1 -170579400915012555.7930598230953817249543937205846185 0.3082242659981596761016039272638386 0.0049567977644353553903343564630834 1.0049691234339104296562921825373892 GT 1 -107172293393878013594295186248143.5326293370943369284307177073343812 0.6147885543553509201320164011131953 0.0485637529802215450648223649324104 1.0497825970973515578826300065986475 GT 1 -2862674.4804893369671640917360070609370655 0.5227005485929439231244949328878419 0.0715537411529122695449068073619017 1.0742427794044857647265434136438396 GT 1 -1656829388558657644.8980186060935255150769671090738417 0.7407648778268418890083990729875614 0.0796178291025482818351390873028953 1.0829662920456487678445163878184971 GT 1 -434305998388769226555645595.1778311759276173016697688798331224 0.2056527846301372614052115475630535 0.0277922085466259621403313968817815 1.0281857201533854334811133540207425 GT 1 -843884773148.4554029328724264332559349185405135 1.7309557552569631856428521855470908 0.0048399348572570509921873542170988 1.0048516852714592550134122441091121 GT 1 -6129215329357058647961504141688447199060.7592060306810954951827323982400769 1.2854494777056468177955785100928208 0.0166403283187200970910818600616724 1.0167803339144628997607800100589714 GT 1 -19091382687633302086529968.1099905199343335274980129114790663 1.9771035167253854941298755184227688 0.0154106977034070714027815487708382 1.0155306767418504668188209139904660 GT 1 -10192972141005848565245781203978007.0033670548849768175959292304554864 3.9184521639150702557589765052517067 0.0000982532974957454143653200034946 1.0000982581246671727373301630971908 GT 1 -2132807680907306804391.8134254110643150143840420313523370 1.3828767588528004280513844046990627 0.0167787701975503563111639610237775 1.0169211284060136965965610374861137 GT 1 -1392169078619069021585175994.0509399262234913460224225454228336 2.3941357398360451779225007707977495 0.0079842370018495942910435243928520 1.0080162817044076326540198706768981 GT 1 -5035782522305.7944414114033501114695154606962275 0.3553952055622059624677937754053561 0.0330705118467456359251816294818473 1.0336297043330486896170719746439265 GT 1 -2231085186588857.0595628521152698190027786114126130 2.0153681911817741676081705527315139 0.0717985688987700622241651518210380 1.0745065103735891929638272481154123 GT 1 -195147644710893.2844685742291424348162248764487268 1.4350892034843361746387048821702707 0.0134472450620397638687060352960539 1.0135384780735208510442521090738746 GT 1 -8.3450483401071571861922712409290899 1.7239674940553719750702266383285512 0.0590404426946623439354052792932214 1.0608551187418890171020030187376309 GT 1 -15666387.8190311776339448145279505982097045 0.8486921393031153629737327204572809 0.0096209879026634007380019301146065 1.0096675686158678235711837744697586 GT 1 -906940453304859404717661.5310897819357959699453860891255174 0.6084663466821266568830751469578464 0.0558286119142505458434928217256910 1.0574475741402006524918283479219933 GT 1 -3046522999891.0070147288241636776866726488909155 0.8252123567388302048120358765608651 0.0713056915047517548898343389064120 1.0739756486832065125732396547176204 GT 1 -200157693447551250829.8912138573073894024409150217915964 2.3448419624344504120247667559338191 0.0463691719123249877478166859641236 1.0474786550815185854432330511391884 GT 1 -82006938814537821151758047.9265679998557222472566563695792400 0.0294729164094220705691507141866310 0.0493681634289308806428392085627343 1.0506284243351953011510329683335472 GT 1 -192389903398815564680345196444.1295004928073382655293235737602884 0.1964304798668253316264725691796907 0.0559858205477471759489655558732221 1.0576140923432445139692853353327734 GT 1 -38301573327447625.3187745467653568586846864621568507 0.8989618136220661606380288405730652 0.0255800774586142169711891779613006 1.0259129362776119892840659855288138 GT 1 -420197359817065252235087771556177344.2575540165234208311851600000473866 0.1388184151374304930991364398947201 0.0894374751147567484987950730699758 1.0936927112383948901651022345056183 GT 1 -586867585462287856653168473960604123.2586342749048524407450779498425781 0.1708601830436551439899777690302046 0.0241782434398470411340561515345108 1.0244753357225430369196270428655756 GT 1 -14264162.2070766228585406743265169134116585 3.8064048882107115412722480955918528 0.0037905460429739304292259389179565 1.0037977483688853424022996604870150 GT 1 -20.7488125106937868208852863299181660 0.6541192568342054851182637211757772 0.0943076581262964870250131151504251 1.0990556091148405451145906688240951 GT 1 -5058105489765253080309225143.4385676926368908025036902061127255 2.3600760656847519118569425982793765 0.0461071402570417263469158483271760 1.0472039201897810943793883766176542 GT 1 -152436955328335109866849505.6405672932355072108931425028647985 0.9010977622519326143506373505957116 0.0671178184706733941091423346962281 1.0694763652841066006523062360627075 GT 1 -1097844915232852227.9772940595169229319701779299857427 0.0762785738700258375412474387730816 0.0429165977454885185668168049473019 1.0438647416352619411597433902055931 GT 1 -36519683103994344249.9641557540516858266070146621465763 0.2001959264909677677263538622837129 0.0617386107265020440246324664235746 1.0637267021933620866857223611732430 GT 1 -495802335397830088.5532150846348151808859011895144242 2.3211257132239813331466302719456263 0.0635928630073603726768300763873933 1.0657049216594419748545237362290159 GT 1 -13215625461872216.0606726178474605138453181513032730 0.3932069668362178981038852307799606 0.0456948081802544865581080566232578 1.0467717511254985140072164474361151 GT 1 -497173.1210155855434650939474214516521706 1.1384472990068037730203371752213085 0.0254527844785723838049927955076794 1.0257823101857330275903843463831031 GT 1 -7452777912700128807188963488.4714660049010432104356992946704520 0.7969620476092353026550873214910983 0.0358735909044612441818271302068230 1.0365328632011914503954121487304984 GT 1 -2120722790413319550.6281236942200312346044465531717037 0.0639380845941354787175561711517501 0.0567226718467348052263316144825520 1.0583949482242344017658220001340094 GT 1 -464934136177925383589027.5148747902795503037382251962647077 1.8748226687846671540903334632182426 0.0978233167369027511636733342477815 1.1029448986522778054481287331810599 GT 1 -10031362893636819507331114932607.7296954019499221288822821085094239 0.7950527392743698445788384530319500 0.0516625948304865242124479560693110 1.0530449274229206205138817943699264 GT 1 -145460788912237583412216.3285478448277028866086469487974273 0.5251213746977065501728912108443904 0.0459311615471101093077367698835443 1.0470194524296609167848749412359412 GT 1 -2189227.6631938418592198751218797734709707 0.9963921387438006185183006827432863 0.0472451618027852160361618488303189 1.0483976611017646157080797022755277 GT 1 -124.1330677960821766412722187002877647 0.1202839857457899843772255820740982 0.0472246237445292627169536591536737 1.0483761048355863356256174105063962 GT 1 -134533345120412086713197730610017567129773.0129214231494995736405648650366647 2.6386726579932892216729364956428427 0.0469333585002895154001660115725598 1.0480704496513749589943726010068298 GT 1 -858589989758176093566959.2266565312911312827200789529557893 0.3185110915321496756119512391596930 0.0085954181561589046841378711098316 1.0086325718168321586384277164534987 GT 1 -4795196881667564431286097826992568.0506169174432420441197020560569108 6.3276045344856129269081723167622181 0.0777635601226235109063648461656948 1.0809536459179991466177653307977886 LT 1 -4171850976914297185801353469.6250765341571247284150310315428638 2.2162235739723233975265068324618618 0.0550917115481838879815330417928503 1.0566674054553156308467390238156256 GT 1 -8214794600423994811775986.5878212056256206172840126656059480 5.4847428269525856507004395761198567 0.0935588424428687484210109814669375 1.0982291625795451168830577441493081 LT 1 -5841440112338014939.5925652186812029718543719053399302 0.2769605043107417046496787365104599 0.0312721672381559533657271185930216 1.0317715808867388910395378876046054 GT 1 -1115507.9306739764174294713657285178031320 0.3105808282634473680064377069867006 0.0099643974777233662928653299432958 1.0100143743564100574354774125159408 GT 1 -221157379277620973126349841428157986003817.3346095941468248945132692544018241 2.3019919149407695499571830103795227 0.0757356991032945188502660696081776 1.0787572083105751814565076739267771 GT 1 -261.1326204946551272555171010543357161 0.7274735387602605846904875153652828 0.0314825115232533867269537500932738 1.0319887390170159178590342006634829 GT 1 -761692122990148510776955832.5346822761041675497544644508413195 0.3163743817049056766421783502278594 0.0470932041364738698274482711965266 1.0482381808835376099000933900256095 GT 1 -6699333198531101426082938466829785781329.6264325963094867021834662193475715 0.1977282089149195147725511120610241 0.0404238264934997106773732046703327 1.0412635779345903268905994432954157 GT 1 -384.8149746021628930397749947454154525 2.8445203616205327114124575912746498 0.0785820476700759653963979573934754 1.0818415429172241514209480096405088 LT 1 -39779704625831511721251716700.9473864203524704549364861819253133 0.2005476488220866592771830129651086 0.0639531252628079963179938136066834 1.0660897239110713447389845809747094 GT 1 -109859012254080224098391235031290.4156527709914693747327261619362690 0.4154666389907319400443559100826345 0.0476978930023102396498425294030633 1.0488729552489446000692749993100687 GT 1 -133237533423275769.2455378375250706823844626172994612 4.0550241282202200433565590333352800 0.0936445356223426580724200420801682 1.0983237050985468115686364180401035 LT 1 -14541774000875.9729867163357471883118523820468912 0.6594233298961283998719020063248851 0.0254885854614942462393882849281164 1.0258190468773581409185909007250883 GT 1 -3748642323283829626015976801299719465923762.5419728259771885442953014908946462 0.4126752500650904999850434603037929 0.0740730211651989949566299292336363 1.0769599039951897845395010933114319 GT 1 -19.3239271996023652264010116996229270 0.6052937017433378328310114650029507 0.0071023966196269359612180850150225 1.0071277387028055408978486708554183 GT 1 -34873575410733.4556047762298475199731468060281353 0.0562033354239268997001719602943840 0.0202480769557682953808505331778651 1.0204558791135782061172470678260441 GT 1 -11692209869502153472943970.4398219055913844770781224686893964 0.9780920373178054801322409544974282 0.0021299597166676971984777691341213 1.0021322313070355122210900108954450 GT 1 -6007643.1675637243397774964148053314303394 0.8761140909926007573288338183740253 0.0141040753268295124513708168570815 1.0142044830204257515890278126059101 GT 1 -220947008509136641210620893954672.2349218783373166378193024402063447 0.4186642431947504972496532436759093 0.0382594283603210168504335126776873 1.0390105407357850781276485732827850 GT 1 -751.7677220511186367830251002696566577 0.3352212278305965416666583335183886 0.0545355967774853391403422407939048 1.0560790402200469392092652018870463 GT 1 -12401287822536445349445474759559.3351683726220628674926929966217335 0.6613640232686599268625018869535757 0.0924922781390846381887279483462007 1.0970532039416842303345681999632368 GT 1 -51309308002296817958335831575618511701142.2254248782517588123874975950458121 0.2140547832719853872873552464235377 0.0736578434871873867384027809967707 1.0765116131101973100665067022686166 GT 1 -13523472977114302.0447856594851982330241161443474710 0.7227684789989331987233133545423765 0.0888630593811834299016224212235097 1.0930620740081735676449721357409253 GT 1 -610865495920.4988921934348486994550585090764567 1.1439078430891329325479391470241358 0.0437015737718263453842652355483434 1.0446852533164040655829145139257959 GT 1 -148522047.9572123078370373594604374721775085 0.6130598430091921084921134756205833 0.0365438245102343197684020133729031 1.0372282768640283049169273897876281 GT 1 -1.1599496038360089075040631548420938 0.4383374518838778722001143878177942 0.0987227289297689291388697762712655 1.1039423316782464360049500965447749 GT 1 -344328238889658111682961276489066463.4025687657778771769085959888745679 1.1472743572448074719987709457719567 0.0906259003985029150702970418184738 1.0949987187517078090519561652647036 GT 1 -277608666177241702344242080113473363015971.2776172204228037649782305959299271 1.6367700189965990003206885688033893 0.0306393366950471219905743250354132 1.0311185347880872133695650129755628 GT 1 -2028615298619523109878.1476425282690068485264561906820497 0.6678731477533092039090443492602042 0.0992662542135136684398825562953844 1.1045455747163221111162877883956314 GT 1 -40250719586352788782450159.3669123178721452180226186183753424 1.3965118548571566029304289340370625 0.0763054695918705052837208237860128 1.0793738567953561228400150411941852 GT 1 -2202766139046675875.6657103675882328274568251353423246 1.4995451567335764613589647241925922 0.0259583190565118895465905539761813 1.0263011826787444246458277910262701 GT 1 -2.5079710507335366116992628140984796 0.4523364315893476266452276921749340 0.0637410738541312537451536492078776 1.0658632102619832537756256738907497 GT 1 -7848235956651678081643636052287.1653310392726101486478751490973765 3.0669996565980610004843143463632475 0.0443655721835443249985114146237238 1.0453798367449053357232841194365158 GT 1 -488482371091238715590446797812887.6885966668575101639275777437278162 0.6683506198724373045288966104549546 0.0351206238748962692571005715157305 1.0357521842902458701350850012620503 GT 1 -5861690443319773078987870611782522411.6954127332087192583636901392649025 6.6084897267859718698727652973505173 0.0835276309883368378070020259588142 1.0872233605347395386129282848885068 LT 1 -16213243422319186466908072599159543320170585.7639933689765795915722505153771015 0.0574391281972482769455261975135916 0.0429983145099534762738129138626467 1.0439501263081145931002578393001116 GT 1 -144819924596731963038070501659735.4690242082234792134719862698597479 0.1492998334767013729785597659514067 0.0067775074155933553222711011698159 1.0068005790233969332867764389705949 GT 1 -16337442869423753219701898710297.0963720337769424489408200174837866 2.1165320341024395556560578987812164 0.0039786285299480267491026811801390 1.0039865643284944017118653332305755 GT 1 -2904389753255.1762657744464383522031804366283804 1.0727801399399309335201632352852077 0.0843163647031641036538517301252384 1.0880843502776399500283564896544644 GT 1 -324935270323440765268573860784119.6516119712214303855983245056088448 1.8226865484246649151688359611924088 0.0730547836303052309584998790083876 1.0758608129299433119288480034442545 GT 1 -389365.3687561981952155876246597640849637 0.1139835785701407363714773279820745 0.0078878204447548762056135874618321 1.0079190938617259452223889550785439 GT 1 -9393257769694.3502356656161390407159230144530106 0.1023999711533512141672620619415253 0.0762937599239922107876682116320979 1.0793611798840269339609891082948423 GT 1 -11723106.1754636642371993173866600799692009 1.0009101612745912244334074131366058 0.0710229548966988884214850202740384 1.0736712497272896471733789913515456 GT 1 -7956412687.5272252245283063944127608115230811 0.0545455865402746472231537735466523 0.0755155725609514149034346387173630 1.0785190726028832896680168224064612 GT 1 -1236328525693622861455100409119732632.4810917410164279083718807627420842 0.0082278245227963345724913814834707 0.0354491541429976320563235093713839 1.0360927307039315492327027889335360 GT 1 -16611884818742148087689816133413522.1383943514798706817784289018694812 0.8392308024198827759043305293254672 0.0449059089492393202718725597761280 1.0459454186941600060629516709787159 GT 1 -188327473133945199767634404454543513380.2758033316598713087942593335152442 0.2179144460072674356631297126601575 0.0409958400397502662339057418278227 1.0418598662976277156005390354344672 GT 1 -2774182273.7148243503765693038943531654468332 0.1355110387825542296838400038106543 0.0947557798763784726433450586123722 1.0995505151967348281295030445493492 GT 1 -17300932921647596.6701697276455498947371799450313262 1.6387943480893294962678290056106710 0.0799999347105478380516691014692309 1.0833815379722577483329942692619001 GT 1 -1355232432420241611237302468.5111426388666704460354119428518715 1.3812319540920885919221375309274235 0.0876963974170853465114276543315143 1.0917824467369217609703931067694764 GT 1 -2569961188642226400816109.2239263918554575022651272554850866 2.3259841233701308631005851043409830 0.0318284711970405245509231356688420 1.0323460082268686915545816794135785 GT 1 -219816259647752195184164450375473280501834.7985041304101066403755477830967984 1.9686428255209915043601339986455871 0.0872805984873416506447606644992421 1.0913267824126858990081860714392648 GT 1 -1126138799403942422542.6486196351051260069373693987066526 0.1223898388186997812066111042309055 0.0416107807209558864820275763971467 1.0425013003496569730452939759115839 GT 1 -12109591601855899.3410521893635934106028838358507372 1.1343884185034447601317511544182564 0.0581349280715226219968111876765569 1.0598932504097091048512783832002263 GT 1 -3083229905684031.3385298917020635616844485248470772 0.0024925153134253038868467985029103 0.0807547069040218562625942077202403 1.0842022791881067139014377537568613 GT 1 -1668616297368983168729586043453.7320766220460593835583891057251345 0.6167299304556550671389477794623671 0.0914920955064143601949489324513405 1.0959516905854280423100377233214520 GT 1 -259285300431922809790852119858371698863.5442918036429412071277147831868099 1.9805051845945493343112669466867254 0.0512878544894045050966476715878132 1.0526498503983674379739456196627910 GT 1 -384927.0717111741744200367999968606286294 0.3288338349252196886557099732874373 0.0348480096567603171307846276287425 1.0354696870990755689588915051978408 GT 1 -18260820703737413830884425433356190659630785.1734831959074045243537670107306830 0.7301360941615987248612568768866286 0.0037814788421691747626799341770675 1.0037886467090832654249134399577086 GT 1 -218195694.4536834839759755774166026838328928 0.8755654390145320248039236073804049 0.0396088938271781382522495365054190 1.0404146752226682541506368657804287 GT 1 -6065.4106602606108999505856669307459600 1.0616019007050139360435854920378288 0.0491159496816801178221140505559748 1.0503631478255760136999395833589695 GT 1 -495.7704820420367161930099328578294212 0.4096876173445809471621340832696179 0.0566487054660529591816030192517142 1.0583165370522313080364740391421222 GT 1 -26793697180283402.5436262145311511211214111647580514 1.0580195321268308238890436438091008 0.0292050663709674254119559217514416 1.0296400239020306161401507686440415 GT 1 -2647728013273264018759309266344952042.9569996699541135539421035361683981 5.5124089048214934875592628668821233 0.0347093960603528348092160212964699 1.0353260789989888670540771944715942 LT 1 -60650477737176782846691.4940978373007165163302631640466577 0.1493169475952617945782383718491252 0.0245443226071308379059090279816953 1.0248505557350424341476120851248553 GT 1 -3064519.1730196248118661513076462280534404 0.0331376350337869909639497530301715 0.0588059952738613873294250558998618 1.0606059919684492622534494523233876 GT 1 -20977776244333262757978172.0343420258054461519580882149250460 1.5287873016407438544976641265063058 0.0468954056813012653319914434002603 1.0480306286549396934933555319763217 GT 1 -7825.4641505031075339758593711898724380 0.7433746615203007843782510227433749 0.0836364373131456176087989886180754 1.0873420905564013966599531434504112 GT 1 -492402354641401.7328950873863554378992852183480280 0.0779269486300583328266059869370956 0.0151308060198926680363832347491933 1.0152464446182206814332365277344681 GT 1 -2778870280160206333128.8712642456164948035856268211789435 0.3363104383609370631265809436233144 0.0386677616608993891945647236542500 1.0394352082830523425748964775897674 GT 1 -170383436964857738825905503888.3615273603636442375964019811360374 2.1793359842671203780902971428183061 0.0538419017715052143452782164910675 1.0553456010306264287201016520806095 GT 1 -5859665980744755473.9635232635791170663815489622033130 1.1469460733715155141435039758111117 0.0276660636621559248435112205531905 1.0280559776203822720374772455046084 GT 1 -459013376546421194602763238430163885718530.1856175796245961371156530831016975 0.5316222545438550980025932017939011 0.0749578925721823214576610449967572 1.0779160209621992018961876837896047 GT 1 -170322834.1295565662752716418472246695427917 1.3625273761830308566859387312851072 0.0662557625017129591077268051307831 1.0685527139080623337983884182239688 GT 1 -6855793026007069136866510.3663431299083732495894043218819353 0.4456533632664694994777145104369812 0.0735484733744237616988055511047020 1.0763935534321165853577673121250992 GT 1 -9429872024.5132371243421724468065429171521006 3.1867380792565055207913717801526931 0.0803561784196324669356572041400653 1.0837688343572595044744583575261785 LT 1 -5763738188563059405545079297940012869.2298774608109446614243546190897630 1.7457249287586455647515210949861327 0.0904929819007768050591045161217194 1.0948525646169826754192033759104571 GT 1 -52253365099452709283061852.1779380754907104368957701588636092 0.1710678615780598707500740806744665 0.0048558311543311314859401637811219 1.0048676590073363712308261368805735 GT 1 -189770.2069942395217092852533271646022820 3.0982516716418504568760350095997804 0.0115341857073849918299806199930133 1.0116012203861623678908599904472449 GT 1 -36.7526895698947093024961358651019163 0.9513402448015757564039305306281061 0.0259181914790740585645065682851477 1.0262599865454802668061042251872508 GT 1 -94748961266582609061972613602612531.9074741962396067924233402636459529 1.0831777610512353789157907681166714 0.0396607775810378796916149583970926 1.0404687002496072522293909925926533 GT 1 -223.3691784023732624779595947571551439 0.9230160342911005343653582940858011 0.0617532321167021220186226080172139 1.0637422858082210037847705792175345 GT 1 -1178871662302455744088184965.8727317076874128824567923039133871 0.3843167197040244450592044777887824 0.0423804079599688995744206527948911 1.0433046654238248618682762784751455 GT 1 -2384979835885933767759.7221949089587164368397271904795266 1.4075840159873457289793398043344800 0.0153442552667094090107513208466159 1.0154631966313146177794355702069032 GT 1 -17679591690.4699486844660545536195627654133399 0.7699745648831811439565554057095321 0.0424691416845231627226886329832305 1.0433973304409270811838244759705749 GT 1 -202625422269509138517848936050.0167258626024867115510354359710319 0.9661365704298438625855676420923082 0.0962109590449332380351824139506392 1.1011593075984251411138399421449175 GT 1 -1917054113440.7852176083204501306448908337511880 0.5724544250862468965290845927868456 0.0022692299599580119897389467675012 1.0022718085639658198264371698775277 GT 1 -247953386700673567004486704817764.1428911592441949728603723640405456 1.3493585137660052961828423001033947 0.0697353807296697313452108989581280 1.0722861964579502111444172644886611 GT 1 -858193127285578021415323448.4721801934964345756231543146236607 0.4972493176228765337297948704036726 0.0969910433311691947911857837777363 1.1020228068227247958988732300930218 GT 1 -271413284.3433173137482261313361446861964904 0.3067987459916117128833990514994117 0.0091050965477248002864264827037001 1.0091468012827405658457129636234588 GT 1 -628.7777248473150824768205208463406378 0.1839279241835094360807246208942421 0.0850978382851067102324242140336849 1.0889381465112726264274126131496387 GT 1 -2897454974656983571248094.8852766377542958023586917634748320 0.5882283233060249997131455749551980 0.0458980796343444839083478273787081 1.0469847784754395212783022931268893 GT 1 -155.3753402029469926462024631104183758 1.6845686479519518500728499712345642 0.0785767564398262476454269146957453 1.0818358004471062348184990795706867 GT 1 -169979937883385070951579454941933690213892.0436901340259220440297583680960967 0.5581939108117897170461617707629607 0.0777556543264517607725254987161935 1.0809450735368350487992561741143842 GT 1 -1667418100900776307627188624851.9579415279371877348665794990514956 0.7663208208330996226241150672796323 0.0898933936397011001990806461311989 1.0941935364862664070242024009952382 GT 1 -43182881492948241543841542424012229507935.0412802751041850837746148746987194 0.2383760523604040725473336757941599 0.0911097459425735678264804116836936 1.0955309247035183892324715352100465 GT 1 -397904144012325865711883373320488999.1796398168849149451582050127367423 0.1145089555404037925226506340763776 0.0245549330635815261529826437648900 1.0248614332299448626166136824896919 GT 1 -412822.2604729031281088356025617835575548 0.9919471342507421947074095644001632 0.0591314399963112621142571935634981 1.0609518303393859959225112669479341 GT 1 -96097576441629.5001673804212539751737372113349431 2.2130033967513582019757319115794142 0.0230041264142473143693932033062468 1.0232728505043096953311387547239475 GT 1 -1.3797088110026073742070099356819945 1.4025437367543407545890618401676963 0.0591259191982410311601634982248576 1.0609459625889821641728540116397746 GT 1 -39595130864472911898651284752679154.9251939594524770593076259261448413 0.0730611143861867996200529386147841 0.0371261828018618493784953540480019 1.0378329067162130267537214794248579 GT 1 -365252434922211025913310632007743384.8203203492283112853743369248307053 0.2488529122347004688487265101778203 0.0941590408156049701707387155290300 1.0988915300874904732176207769925832 GT 1 -2134.1189791847216646806905886018621184 0.9794389821485580367086351653637763 0.0690509872657552989150141280123485 1.0715507693334199864661362870396575 GT 1 -750812995310336116292299514324.7642713499886420151257534761507236 0.1940527344854699704750267866529488 0.0538263601467075808056722463229840 1.0553291751318421730959863010668255 GT 1 -2151228986750076238256934769476676564495787.5037503317450643988519312264030390 0.4630079040032910883433108794159099 0.0400131305831564070187635124484439 1.0408356723045835191235011994006654 GT 1 -7751.3554089678493360703639383153079139 1.5598453296677822185408264788913630 0.0707458056400687281081203496581496 1.0733729561104357425755280254769217 GT 1 -791541152768344601199613.7818915298482545861174801305195340 1.5123797846024029321729517401589448 0.0332552047122349005209782705142869 1.0338207322301795807324442466876572 GT 1 -10774385411520775996340873706479709353842928.8143862574410356616998042479312296 1.6264540465697874361746644587284224 0.0390378369574924325261435839351556 1.0398202432713445535559037608228270 GT 1 -267.6263007251655970774261824223292836 0.0677590395213603966083218928625106 0.0298492652379357575562951863346717 1.0303038228955972146142006206967425 GT 1 -9716596406.7849546385702633227581056541316187 1.6208900023268675892368886122482433 0.0069360592682320100460234060206694 1.0069602255379338099363777292111252 GT 1 -2454658647863438026411376872.9007704016181011321164518439407342 0.5945307407844262246275232571873230 0.0165119021260804784965852136180096 1.0166497430321281913264890752577324 GT 1 -6292404270179653676187030096215589268.0774052573111404054477240276458714 3.5208437938647853139516345563840647 0.0825352155251736957036543735154395 1.0861410818338072506570313924979158 LT 1 -99889474447274664351853465086241918.0771492501090159613158561793712833 1.4939028657899842408822025303047365 0.0274140959721295500184733215358382 1.0277968742000699558729685554422684 GT 1 -1422411457687319231111174949523.4337446379018949821203122546699975 0.3470798478150734657046540383981978 0.0641163544468838316966571592883386 1.0662641205382113604478088687260116 GT 1 -13380531899317.3007810968481391346076648028811903 2.0737247537711456112380315496342830 0.0703923894326294592100655917214837 1.0729927059909692597644223836290399 GT 1 -48884068253589942379388.5397895288163254280399281562942258 0.3399838074683889337481703113121825 0.0781457343499701191944740222651409 1.0813681312051626174673239295802728 GT 1 -5101069.2879261512530854579175809359914949 1.7379665517459094255244982522414045 0.0187106687334085582027074024467600 1.0188879278693573601521559204635791 GT 1 -631.9873491918136358347970397317624321 0.6706613921896198412575644350362505 0.0654458981931005979504300960434838 1.0676857599079440540845781797496426 GT 1 -3637829362282740990.3890382049692579742028824419343328 0.4785088731207714760080336023465765 0.0660650607591747595125224897752588 1.0683485013799407866913882678273541 GT 1 -21465396257964219318251606503.1285983694919315047303881990309515 2.6816581367424061999480713877137929 0.0936416692653314963331668762137165 1.0983205425948808795589159175672200 LT 1 -12238616325667257636508.6570717957208723359632314753968807 0.9459878079844096594691531757656604 0.0366982038857014256211286725811435 1.0373885246772696801262671417465835 GT 1 -57.1445791529128231073585576139359030 1.2292983298307369821727293285891972 0.0682082661914015783147084213577853 1.0706459508465616637101712745234010 GT 1 -486956806737453518001119.1006786501228934408398244858834731 0.5089076710110080316691703682002028 0.0856889611856776300699810769007253 1.0895844603701240355207563604744024 GT 1 -39835388790228704883448494166806.2454657207881744496952302152358265 1.3352938855661374184195389855596662 0.0196271070979187606659053213093278 1.0198222767291056916260191880926560 GT 1 -916410056618.6674535312532503871302421805201790 0.8827664043286195555340459414232232 0.0976937806371464066999464831027328 1.1028013272171698898117883650167291 GT 1 -2849321989156327395306233849.2766503305576800838156075751784453 0.1039073778589421085911531942045796 0.0497997694828262793465562216441012 1.0510825476307623668564238624925867 GT 1 -1714997567300.1692508085386497083715983171115107 1.2291239336849347651221337918878876 0.0168571277788596054442261886767348 1.0170008263432065968102246875029780 GT 1 -6345807343669861811959.2897186725775887734036098485547391 0.7855895769911364700597075433508261 0.0203829312605663285645800862274785 1.0205935298629535993099781909275908 GT 1 -1603.5037826948125598749279565653403045 0.9055823189406641613038220197770285 0.0712093136492329625040159808241277 1.0738718762641854147758155847592985 GT 1 -158.2689451616789711909793239712022911 0.2475269032115207500658878642850257 0.0818210881928610881673603739440938 1.0853630143147281163515867476868056 GT 1 -219001504105015.0796631518851143674939921296199964 0.0607566824400160197620696001344022 0.0652208693508981244223861542760999 1.0674450015034151860061073687142189 GT 1 -17264447310703739619863091828639.3846079187475450317287592125175500 0.6406827420546894265892970238350502 0.0005686071401103632274817471608698 1.0005687688584559651168676366402020 GT 1 -4465088290199309019.7078306513458116451823391490852551 0.1884277823883277711628418332938273 0.0990356572882702979373797309700375 1.1042895973936234725364833018066198 GT 1 -59332917977006241.6947727173387282984803260803718104 0.3307812639749856889253565385731876 0.0853049204304770435038384200986809 1.0891645156176331599022344642814452 GT 1 -2931.9688044297829910527314146989786086 0.0146130869339084174791100048793538 0.0438241198083500625213135055812325 1.0448134077562102087299720268626668 GT 1 -650864138372509989674332667226645.2353084889607244514070923546306282 2.4646948685488913139135862655901575 0.0177487055967561841579248404490378 1.0179081027503473029851407649843920 GT 1 -1436463797528810490140227.9548397621155114185087302217694405 0.5254779626485030813691551257038457 0.0519770767944452599732603999443839 1.0533765964228844303457027504326607 GT 1 -1503260863400246558921106253492337.1901399190609797149902876315050913 0.0512859993690240242030344118981087 0.0147876935690616236049479693793673 1.0148981215115587693291437123044562 GT 1 -542854149966595404035061716701502876130.0679047868091005149925486852584461 3.6028247175242794431213799719313655 0.0210908535452641739221383879813208 1.0213164431536065821002028798516138 GT 1 -2653115521159278961014194268439458452908810.9031572209983361294113006186872567 0.1207620170482587361283498295773322 0.0427067418719874359971993185579037 1.0436454996452350193213796498219430 GT 1 -31.9400559912669119221025592061594282 2.1447136908580255521607148041458800 0.0177076979466099362925976523522541 1.0178663549874305954036639102051058 GT 1 -751725399849783.5783126272282592852418906949718894 1.4628846802480940476509070165039771 0.0299384761011045261832375339685976 1.0303957827962043844587218221993539 GT 1 -198532215739171043511984510402163318068313.0089568785109645225765072309785995 0.4880157049092969264413258172085769 0.0998099435002329790009806138755991 1.1051493640632633361285645866396604 GT 1 -31.4125384368110661443594760903141820 1.3998447691057210390650936201869029 0.0726233834451459571339546160520787 1.0753955213227556487340519822064072 GT 1 -133.1971926194033516714148950873070822 2.8602920318991902752729208917067446 0.0909666291060399903785024238323235 1.0953734738239930522983968446685739 LT 1 -1450702831776063036001.7780643774193608498760466223750807 0.0292898352999816176516343526137788 0.0978432823911163915421669181862645 1.1029670294338781532037731820516802 GT 1 -203040.0274782280510865362159080212929509 2.8165023403162740742830962239604943 0.0531574717363993845496666336074500 1.0546224844554374998675871279810442 GT 1 -8277850852534568041.3586131091830756275123475140812356 1.6632603086474196225298775925935118 0.0194375441301564491229928963970368 1.0196289373939037234774889245708021 GT 1 -1028285826402372022505294110138619.0827521152098079578946033557892459 0.1233912578809745480615694734391088 0.0922574787909836241517682922905292 1.0967945075439761143912162552957286 GT 1 -3200077956802486848327055167865804829506.0907929198490444654568502417574105 0.1188999721701583426111190212460056 0.0105857934536456928618560463061352 1.0106422215425199728120548811041390 GT 1 -1060761948758108.2273022616470412071785399573174581 0.5667348016318160429761100363115602 0.0003830584818269833436712297152103 1.0003831318674684931097854615396039 GT 1 -25.4474507024596022355715555569358735 0.2449397558297757617442957205999968 0.0347294949806047804392565922057923 1.0353469008420886787082400054530207 GT 1 -4023628115125362169221401084.9862935079100838720524519356166473 1.9471237973174190173410848666779187 0.0650797806895643356804230673720259 1.0672940802747110709245798522274742 GT 1 -783934725112719035556204871.1474784699832048284958875767167883 0.1124174631686571351673907422395924 0.0814016996240738510865381090122260 1.0849063573251992644799449901695428 GT 1 -6874657209542756665782635963287217217.2203965575356603205279088607054614 0.1507658111791455166380970301356287 0.0548389750812466734001205949401824 1.0563999692648482427882074595597877 GT 1 -95670518152824667075107850624.3374423283734691248553438689061952 2.6950134057461004251252948913158798 0.0367729889326451905160770743615978 1.0374661617691237417644596183960763 GT 1 -77300931654520244173233001688757104.0730884175135269481179079324753828 0.6597979337359513701157245243966390 0.0640473131515648987631692829817500 1.0661903520210016719934980385589056 GT 1 -5421761073499.9247306739913421952629098666400637 0.7675243032368611501058497478799329 0.0678552261426824914756699544647750 1.0702671396032721742185432296111790 GT 1 -161694284925.4601251983082255478646390139121293 0.9581083009768265238758458535318287 0.0939647108788995248449829186815680 1.0986770232329165675488100242365810 GT 1 -3739365693181635823467695886.1897350599882751583488966655588955 0.0881919514805917448450601232346484 0.0445784291728084326317081999540413 1.0456026004842153399599683545111182 GT 1 -2164979416.8489285483195560734699859774661501 3.2756630433970730769262980801499011 0.0107846670017721024256014407235039 1.0108432430524301956021570403617179 GT 1 -61649544.5327022715756749226003751328735548 0.0066208689898620296651045345256360 0.0913297506581553422997884045912624 1.0957730126188805352011933179800127 GT 1 -1189.2439012929932861128602743984565552 0.0570962380837027652138948297963937 0.0467345999563960306983295865367573 1.0478619250708902444026510732973250 GT 1 -2372912342144783212206941400570816611843.7681312147209024642790948178872313 0.1580228971760287586563386346705778 0.0194187184073093588519783224174435 1.0196097386758413477280028227118405 GT 1 -43713745034758.3790591686522990701756687063215575 2.0806871654891445433932453775977657 0.0354546835932202110719118083890602 1.0360984633888342089154251866472116 GT 1 -89718643154158.4817951859102161501258602884323110 0.8996614747185900625308681828837735 0.0732689221436601460602198783878252 1.0760918549031017277580671436950161 GT 1 -1028031640274044676598990846438261316.3454746032765736258694201467231872 0.0043891713096894320796131582342323 0.0615854999741012863067073952604984 1.0635635299017442365352334098166595 GT 1 -33985925893436198220314100589811371.8451599416432066008822695197289883 0.3676495597648418979846920911727106 0.0452425237723825456137173293837577 1.0462979223466910032164918678999762 GT 1 -1263209809522936990201092.9621480763303256808599965906318158 1.8852584917048766846144322999501189 0.0655639090245024289143138316790803 1.0678120428943549957989862828453614 GT 1 -674608230054751702070648033.5714441524569595539980822721601971 0.8857163769148614675260386515788328 0.0499298722698777273198900053963153 1.0512194784487273786402645580977173 GT 1 -51192905974586915609702970.9835693173859628067303310108271425 2.4214651234891413362556875571826299 0.0842321569209883696837575654670989 1.0918637234511177412425426922555641 GT 2 -86559678847003676167053365165285.0001187247403022758058875632533483 1.9904993203061503893555082724782823 0.0957223308820527305911183871660774 1.1006188096488153637492384513734766 GT 1 -1223751455033154.7810074059224368406964000092214249 0.1429510392552013300628931924519495 0.0008243853895510643276623361738291 1.0008247253820557283580824670876644 GT 1 -23569929572158221619992775479227908211.1380029077961256058123661432010887 0.1168701317130515546553582736187383 0.0061148284002319682209228505130048 1.0061336005280972447794293704708552 GT 1 -446554857516200637199834217331825500245.0097957150569519546970601294321717 0.4364715101909373419565830431959441 0.0451027835899233912887392308786106 1.0461515710893172835934048965634149 GT 1 -178684815762571297130610239832.9093413200745351160076927903472401 0.0579294516960156041398114993749304 0.0628857549985713618296361647672160 1.0649500778138792237384905024446537 GT 1 -5644414758614491191455130.3864903336849997182193812842737150 1.0535642673655438289990971059902744 0.0601707098978092938654684598674433 1.0620570264847688853444759849067657 GT 1 -348623.7488745397543368208378719993837230 0.1140884691561177575559949327777128 0.0412409673125306524249491159817720 1.0421155050282646326622475985337725 GT 1 -561476171185843283106930.8907091294944282074447206268553617 0.2241999387536244332154147031524865 0.0608269556357123493523372220529525 1.0627555309544524862200003060878152 GT 1 -233151271.8929273350615532060889486108253467 1.7060326339692994828763622951501508 0.0616441748889579946782722093111248 1.0636260574407722673957996837885534 GT 1 -222540621133.0864342059710047277497537284619726 0.2086987044252546332854382537482515 0.0201704036158726186235593027619039 1.0203766036773013687160726864711908 GT 1 -14923671172736995.3660957758705264191615941872465047 0.8035995225150098346009318373942584 0.0370589199643058406364547832550324 1.0377630528193717740823419602131343 GT 1 -2733.8724181079660898623165259426805180 1.0398298946706187360619841560454866 0.0460295024484802221999711971660751 1.0471225330104450891055578954420213 GT 1 -313946454101003441235251763066744.3206404227715034309495211988227231 1.3515761594412049880467004122926045 0.0569272094333821098188623513436630 1.0586118089071151602766599978002884 GT 1 -8416417187016853286944210115.6408812464716828853888788537486934 0.2081959183725523890931514308602561 0.0009768403353548230812104133875450 1.0009773177548089197541720400772715 GT 1 -266147872458891993.0804038679907046106794019548872426 2.7526960131701835097472533874703975 0.0458589131115811114906005051907045 1.0469437286483263254343233554559443 GT 1 -526010289725302779910626830170239747056867.7183001644442096941507783764693406 2.0879119212768562613490389487002757 0.0263072741907835253986235940826680 1.0266595016947205525544448846556304 GT 1 -7399673394063597882993682239395066548429749.1166998990544066320355398903480305 1.4166599168501737206304565631478581 0.0334339235238547569524393869655379 1.0340056159079565307660833305348938 GT 1 -1529181927720400110270050939.7713148764021984282995714239178934 0.4014354824419502119506297940277898 0.0918068034866004537545033054788833 1.0962981515229588837793091028624943 GT 1 -2412126968257303428668014325929101007.5410802043742156008497737872282023 1.2014863575338371380949859254318894 0.0863186012189213245684313627521797 1.0902733473099107021410086962260396 GT 1 -1769788753871157182658953865609684885.3112666506736865318304520446064175 0.2969568873880558485171013484348588 0.0493035696454100313520293060082154 1.0505604783790242035662943166829806 GT 1 -43283399.1747862318622570499440871122089142 0.9628351796450470052019777571983692 0.0943225714931319747342082207122598 1.0990720755117956973014125404044710 GT 1 -223525868523365488567460162402689.6764755997109647312439672016629393 0.4657891854734879287876028387259220 0.0195112305290655485328349398327207 1.0197040872910523544610067475820196 GT 1 -2438029367.4406825297440405395510429799872713 0.1744272748462931760565615295238103 0.0750494954850779228269042889611557 1.0780150515338664789332086078024837 GT 1 -331440799042750251504259447.8819885918873742227927566699986218 0.7041155482130269584195702537830051 0.0109686165001281031287380727424671 1.0110292153048818989209042654536742 GT 1 -35522210459.8040908864023950858465327584413128 0.6224819827783311772807107981111060 0.0505681816412117288411698931985177 1.0518915592504079671576242477688929 GT 1 -620120620653871572545971291343377881.4104451795816208423928235586918575 1.0728081510837000764603084952861074 0.0325928265016790026441843500519338 1.0331358033857655532539583685374486 GT 1 -3022856759081321002679694.9646100075806244035567952115457335 0.1538820309606807981851885022743156 0.0412278263320377956041536283049292 1.0421017988831447949172001130882061 GT 1 -330506045827220421453084630630120779064.7808976551631022536572911557859534 0.9649534426733509069415061556325499 0.0729965623881700846172719784532227 1.0757980051040315745555681369236949 GT 1 -141007643.8865137421791052327721599107009010 0.6836148437872078136227689390044746 0.0420111797326057233638019310257783 1.0429191709463905234829402402529011 GT 1 -343743.9489678898818635847154063772855820 0.3478153853193064129638570886011178 0.0625151261320717546245687834621154 1.0645546558086108146706445314107879 GT 1 -206141782.8503526215572975563750357927257209 1.3893227463296784637502918735980625 0.0767941332358648635073409147852936 1.0799030284346557946915261957708958 GT 1 -583635941.9924716437391067473571849124732649 1.4090755790470426429191670189641350 0.0453412341599730892357281234217474 1.0464013156095152360815311322387158 GT 1 -14959522822427036111197296.5840031343156000110293786227309831 0.7394978047321366436379268488863359 0.0398955028277542714777213422792136 1.0407131492230301193179054697154126 GT 1 -8052174206231.1783706334120414221995360310926142 2.6547463363801622463320040714037710 0.0804676020312148736128106976554085 1.0874087673787623335563724690178788 LT 2 -547877379283304233.1204499996133237077103949128118053 0.9412920765005205728757057952074598 0.0897676283675651572858862708306945 1.0940553586261463901600540636050272 GT 1 -410095219.7105629421264297071065304752368711 3.7893436862808550859200724296429701 0.0738649004598777482268889011496191 1.0767351591460539720231747053478662 LT 1 -679056560.4518219840243210350474123221767637 1.6766541333961547813944770645576557 0.0953494488871449834944143528355441 1.1002065412171342147199257542498273 GT 1 -25716.1163485091734143106568680100194771 0.0112130650365607885146780296909539 0.0611920420973103222833798468712740 1.0631443383659827172859900628430284 GT 1 -23421013104242230913000.5498227907184222850257414376364480 0.4916810946511025742077740328906115 0.0144396174849013232455008022698824 1.0145448833225662267231597658345541 GT 1 -922628235096351043799794672754590409816362.6707099517301416333714252723460718 1.4761050857496335181223336045005483 0.0921928801653599402899974796885231 1.0967233460354273201154709506160761 GT 1 -5373497251285.8482904452302676973940561026579649 2.8175757477279755789877938143481834 0.0701644960739800714453965540582543 1.0727475859784083630362246621212612 LT 1 -19761285329.7073162509691621752334244429009258 2.5141736292201872443491962912365459 0.0881900922457980610505641877762285 1.0965855820692083781413395725255163 LT 2 -198385798668870752675757.9472757439303935998760270355568995 0.3975978568420792577583891497389079 0.0651940019251501038325751433493671 1.0674162599122064369617928070522236 GT 1 -24406932910720353580590.2860049663070134171509622553847692 3.7318115626897661453591765619142068 0.0781941994358612211807290187883145 1.0814207060662125564161362255936693 LT 1 -175210645599.9197965871386481557749953764299802 0.0994380299046286765758599554228258 0.0542690876576578864299458456174695 1.0557971982342951611101281989723678 GT 1 -2028660789663677174.8076317194376971904676656027792397 0.2101001562231356377802584911038209 0.0115467433709145015578179143330115 1.0116139246629477841576199404740273 GT 1 -1289947718312687922505605106035.8016608133179751694225870393290443 1.7797307175406549431090757543603233 0.0979937013026662831505759662225996 1.1031337759091566229933451058156461 GT 1 -120366664381979869.3840428238110884044485690276267856 0.5337892901899802454049018911967770 0.0103048897760804516789570084169745 1.0103583527566259693239253417754902 GT 1 -6127800314.7344934653425503017569650305018523 3.6976579351170092711806862423004713 0.0989303181506277676529135772178825 1.1041726860186696394456424014525503 LT 1 -293470854495305167861178514281738775640.4271541439430979448633189601975760 0.0195908684045928804746171608994985 0.0510999761623073298124966078926256 1.0524518348810285135324098265077966 GT 1 -1022867398745143749680.4023687601210679772694982818641260 1.1127027980712994793512538025032547 0.0848606427738745405452874818381224 1.0886789223241649311130725169069504 GT 1 -84385866469367.4412067253059254350869518677768380 3.9563232753310193036057977933755099 0.0040876443684103233203488436098885 1.0040960216232707315642859416853229 GT 1 -153594.9926545464285818689883453441942848 0.0980258502733158559225492799639073 0.0509506267171597803810667411672980 1.0522944550839881955497250006626948 GT 1 -336916943628297369095362893265806.3357546287268125619046713633548082 0.0079902443076152138954553636844612 0.0861304269817537862158416122365082 1.0900674168152364351097722072846700 GT 1 -7990153125849400910672476424139214446478571.0393771935827044500392419449556745 2.5497593901289957618019611793223408 0.0625569667364326146072873871541535 1.0645992875026707943808085421379427 GT 1 -174879976224018.2312711743175876792033614905298546 0.6494097233460009431185878580700443 0.0628827251632014479302168924787494 1.0649468446643586372353202676796710 GT 1 -4976454823073418.2668160982684104233283406242800593 0.2696469218345307080223340603308600 0.0410237156623672836520707965594217 1.0418889339794196273309355174390848 GT 1 -946350940968715798596556797.4461905588855160559986729719755353 0.5708774831108681857984484365615187 0.0392688489834250526847098768296025 1.0400606687600063834069184363556146 GT 1 -1390163570334.1717621221930652651323824119455053 2.4520746623278720584903108374225431 0.0303840347577149949723405476861465 1.0308551979999602075962315383063634 GT 1 -2860679316730211.7545060993432837691949737947735489 0.6040143420270270720818295729267439 0.0778581913297178487685648298790081 1.0810562617531749229891627158736920 GT 1 -78996315.7654306637189054860326726143797257 1.5801548298590951528495099737868312 0.0447385887981322062854156498672785 1.0457702469511648734044828000666022 GT 1 -2133667525558.5685941649215088150339246928796530 0.5383241311662897014012062537036753 0.0053746692771861383650400413684494 1.0053891647744380228316533820948512 GT 1 -48559413095188633.9069116751616713928827236477863257 0.1048576825055720823605267249013395 0.0378217365867079606240549602836534 1.0385555404798599275916776142135911 GT 1 -2035324394618364.0028445298382975885796592587443579 1.1031278343043978957503150326739367 0.0250960188225998199962467218945484 1.0254162936775386805351386918313510 GT 1 -4587620435007708152063314.7639693144588626135025747095549138 0.2659650925657934302085727204085944 0.0927077050768937981792998279055790 1.0972906151570563532865590560159822 GT 1 -183287820713177008485171008808438.0547041392248582667463003948982770 0.8864208956875428636317130973199907 0.0328407839395168818515215495193738 1.0333921475883051728684184734759581 GT 1 -472819210918372553.4666045937057469154562684179758765 1.7593540593381412508912213128217386 0.0694788688141245296046044847255324 1.0720104936618522231886239016390507 GT 1 -7701654783861868971945384279875560.0038059938249529401391380144069253 1.3774722331800993359666506843165851 0.0749407522136386287648651000309629 1.0778974918600006914620403782606287 GT 1 -1337228745465535025991785868720042515697972.2196057118444350739116484068188899 1.8711920522703763409875119962545477 0.0442481964790637184391447059673766 1.0452570193857512715442744082746312 GT 1 -401056.8385046236016897407178647345659918 0.1650394805784413511383706285169188 0.0352811518792486484288191987865272 1.0359185691912119306479035377413189 GT 1 -1062349569619559794296353.4827786680613080458714727941830277 0.2011491292547520234830041927238135 0.0472672668266425452589136075340554 1.0484208625376495228004172662351617 GT 1 -80294789350503359595031521048948343046.5135636673342969079511423320208536 1.8444971557038965708992402669022607 0.0614065029796796266725710205712765 1.0633728040281774262022308666596164 GT 1 -36.4199642322142680273403577070713356 0.6201425061266628746493666431535933 0.0905008779912513840921786201314639 1.0948612463803924019374750428408644 GT 1 -97320679897903558135950219.7575533738254183967718969779799369 1.0228780276801069026437397124534177 0.0544200116666163361005041604247504 1.0559567954842500786413254447578835 GT 1 -512796408575.8941758131569879095281719848584905 0.2782025461815361389340218701132654 0.0408033400904636128946968835120839 1.0416591574375971543019533365535478 GT 1 -188286189625411512346179465584.6112034641668528613559070360480224 0.8567625223638878675216709126450148 0.0479506961848704402898975002237090 1.0491384558100383303668762410714111 GT 1 -135789075924926836229103193618711.5305604040796401473133476813990749 0.1859821538404663973785855384814940 0.0917266021560339080926128805787510 1.0962098467549352965267220077027962 GT 1 -393173484378750147742983628548.5651056300279427146075862526503976 1.1411401932304377353523612213319797 0.0396763102269769453583989913290225 1.0404848745046947078654567798452314 GT 1 -10913128955679678735165763403708609447.9200206495017694825858432797764300 0.4019565037390682241401686181319412 0.0455047082296773869078755862914512 1.0465725684944798360000650918269865 GT 1 -83347572778159053790340032.7379426644845400064509381714475879 3.9881077048975268312159629959710067 0.0379861431909610653086905222194719 1.0387264242527694452673907341820686 LT 1 -157535831379303564851443273498636138.8781202538539687922630936527643853 0.8028052311787682759235293906968045 0.0992806096810678576300693659245597 1.1045615123693942618608862987905521 GT 1 -4429355102255758909408105510509409497234379.7710025581220389182173577747748104 0.7994786004069357057311793980098547 0.0563248742003390388859597237890777 1.0579733184672624907128459195165134 GT 1 -11327048548.8109990776348867693074642897956883 0.6217319132879296839954961710788942 0.0064079284245875433638475662214116 1.0064285473281040108407947162165790 GT 1 -27775011902688193931550200.1733816744699592084296623532491732 2.3492147883293427655330776087953684 0.0354347209567244448685385165044247 1.0360777671814279958582963063440983 GT 1 -2606.7214495583145350496641961105629960 0.3170320820260064338470094046131955 0.0077496302674624364583098400653896 1.0077798146986864788952855185511301 GT 1 -27817350647055393428843822835256399467510.9142594578627304016526214841134152 0.2010625803336150889183670407880611 0.0610602164736212465968760992667754 1.0630039301300976117399073353620595 GT 1 -1053.0476707452499116308254064174311883 0.4921605197285816742062210305654118 0.0078754425632645905364736115742974 1.0079066176473109147108519246851133 GT 1 -8965193.9148852190517827122881399467979218 0.9553662624496946524944228577920687 0.0966622266643742368467313354371127 1.1016587386568903428129867918726855 GT 1 -617028515580594854638063467.1690001450518653101566608545121350 0.6793285335453872715942563146822297 0.0761471164625114245714959346575666 1.0792024369675870848042996452270301 GT 1 -8901949113053405903044072737528034.2971925669221500499118935797596635 0.1102038224458402675242561051060624 0.0157188132712482745931791687358794 1.0158436638804905557678382712755875 GT 1 -67692007540949.1821126532296967239095337284686340 0.6962286360779095831884816569740458 0.0861458780841773231332191977931919 1.0900843242968943367508411409543568 GT 1 -1660686981510658891725.6753964098503607718201450238367187 0.8737992696419457152029598891570613 0.0589071525526588354951576986727950 1.0607134753509932439407231896976111 GT 1 -129026362132.8152705435521399235380544785246578 0.0936405966783351416729131333617001 0.0741503286679430195225899963251459 1.0770433994888628158336654829107992 GT 1 -138568765838481.9729705632761568388578953068282334 0.2148348005374433342997197497479775 0.0295735968865680955486511077136255 1.0300197132378654451480765729186040 GT 1 -171271316848.2324961088138800956747138951609300 0.3812876628801128465240235391341994 0.0963462070412466394514607896518195 1.1013089643333747796804883403998013 GT 1 -186669387866.4951935035299999123421383152950434 0.8975904884672403732854590551568576 0.0986701736972762927305639603856635 1.1038840214312889939121409431026488 GT 1 -123364148645273485900312952039131894331167.9897244868157758835421751604821273 0.9477536458790479855355111656242386 0.0231657537627855054199083155279169 1.0234382971798082958873133198714014 GT 1 -35849203373440.5100877914126334653871203041393015 1.2176008817995023721252423160642949 0.0056364758215319247270472352462130 1.0056524206948647800651614133457640 GT 1 -213953359945705375943302772531536.7251641499225074910968879049476332 4.4900231861659614769712066548490792 0.0754084672692318296127225740868149 1.0784032252346339790605975187420206 LT 1 -10855604784521965391389275403550226310305553.6365932292277883733962267207081002 0.0005456918060828050710230451428381 0.0574926267832080902224523404349344 1.0592115366488820257370697077156269 GT 1 -58492696528609639257508258018079.6787511528161563921120290178638149 0.7764130195969248053065748280059566 0.0448252367035782884252978565211426 1.0458609570273894833312063155111936 GT 1 -1613026081.3758131633621585583626811422259296 1.0602025353325134158440578602681980 0.0225803800932229466341649566955651 1.0228392207781074593409382051417128 GT 1 -68199645814617090.5299146717540082766470110170515225 1.4765024301936351616282468241308080 0.0322204238806513524702204921859316 1.0327509282560674094470219324732068 GT 1 -29678686720987456265841854712237339881.8115983885808516292430470929545644 0.2525928391145888592200595768351419 0.0234543741180392897349954537721399 1.0237338058634735888463944571529447 GT 1 -13820327815154184060543.4166823198711812276813989654502194 0.4079210301785887137581411809877021 0.0708630614493295220984924996556653 1.0734991467786324293380291097796474 GT 1 -133579516.5558296643707082529995067471806775 0.1820634364613916293921915448583503 0.0081046083572621317173537854196079 1.0081376292307609828861020973078028 GT 1 -23075074325258.8032534549524703068509740137327586 2.0799434713855902993605417286094680 0.0748395205142976988488193669190257 1.0777880651816988678670924338948654 GT 1 -2947918915.1873847531413128351085901829160928 0.2394595207717352853574706215331195 0.0412448970853349847544457646852239 1.0421196038484311956701921809147156 GT 1 -132326128073580363087706657697261.6509738801724873519998042639402349 1.3250986127988458113716157843393586 0.0333457694558460716610406805482116 1.0339144167127591052648233494190495 GT 1 -375082610304.9532450765558124373511799020235103 1.8025175750300281102615370874063908 0.0735688652900305097845767186815626 1.0764155644488237879865168358671450 GT 1 -1080348540397537403695012.0407755768261361536377604010822298 2.4699187184103981658306766030261381 0.0342394156735874963000843355801680 1.0348393177998028732332552203110253 GT 1 -6260521349211279749003554605.8704465042340551349718888007785416 1.6755993674886131369543890167165350 0.0754854865172720585121289562814062 1.0784865295407796273512847360710680 GT 1 -279737792752919194737248211659308285.6006645458706880066324130431726306 1.0235945033997446284607249814510946 0.0724941137543804912620582671796835 1.0752561381642218003995825795423690 GT 1 -462623101748526366188023446922507172.5259891553999382133403956555585866 0.4554458366214637753224466447155504 0.0569458705139298822718780805731188 1.0586315966322676755346867802552328 GT 1 -540524456.9146176755979197694129008719642901 0.4065331372836661470307326478865648 0.0198594663880583679212631160592823 1.0200593159537140532226221540092842 GT 1 -1093432993876490748059884482688503.4659951977842980574709322396372053 0.6289322002748024590311671915477103 0.0430752092187258882972179552493030 1.0440304791427371540032839663461067 GT 1 -24625353421719279006858.0106248808326821539180177037855868 0.2923312290134834225745473183570456 0.0073583076623530593103954791194545 1.0073855135498660636783248660727333 GT 1 -75762857933203762116265059488.8291310698836172488794910703902964 3.2358561308248545060732821890938487 0.0114118822710976613296688414227478 1.0114774974725256231615768674099524 GT 1 -1385445168445651229349.9735028022220226406998496033809655 0.0435392737353099841461798550979442 0.0713094126586185504300793402441723 1.0739796555574684294968791326288678 GT 1 -15.6686452510680857872611554082755155 0.5217409683469716251488006360704719 0.0640661841658327684010154222125257 1.0662105145834662924396521370568297 GT 1 -50373927113987468719256659302046311.7075511420513187588410722421223496 0.9036811547371968252538949340177787 0.0707278911540381288108829765022603 1.0733536779479472674265103984579126 GT 1 -1889492.4558816836298954597862547580280975 0.0978907719884160575028534258839665 0.0259960272661960353849467883643313 1.0263398965657805670985698191256827 GT 1 -83844760987391.3587631313945732174166936156741428 0.8037709815166112981087883612099215 0.0067238792883119598834820578181721 1.0067465864085161797341251200930575 GT 1 -4149654735170225811360911.1861094286204244549322482443348008 0.2508770330469821881647246271267916 0.0436812549479885591098887381484702 1.0446640061749021930118099087303301 GT 1 -4711169394909297602872788155998639.8046397547750901688602160819247024 1.5036851156479475493800826018379209 0.0801862183426678945954006689109375 1.0835840406690015322837122636491528 GT 1 -44507071736901061226.7464165510945901355467532062584007 0.1437232230281896716920959202498054 0.0938505904174123840200545717753903 1.0985510752964621527705122321474582 GT 1 -6211405231744306201055462296514262129.6243573019667312679983668623609466 0.3520082880686994007722679163778909 0.0090871436839469489587958778852765 1.0091286836185121836858034357200067 GT 1 -9683989716760853330858447575889941079597.9366884689838684314619560500774684 0.0305321905684290458475158164235838 0.0822625335643416412718653798910187 1.0858439135378295620656618764551847 GT 1 -2969.6857894814712802537657201850337767 2.3290306042650722071929424612404611 0.0892670532469699390451856885402480 1.0935055676684052281562248948090566 GT 1 -7028096745626.5841050624583336345222124414852873 3.5816469621501032791692680326914002 0.0998308029719837313990361936368919 1.1051725366291951765743293723712431 LT 1 -23636999062587823124843.7855793699640141134758674883783845 0.1841706102574255833608617793934758 0.0115155726787144963265725148145991 1.0115823903435247235919000746209202 GT 1 -703024733971626501087116071140797727798431.0607025380976665327975470594589477 0.0787824669474067373873658104087339 0.0935751799210277424913904452739588 1.0982471865022851086164118118186436 GT 1 -928936954.2148309241564440199086578225798301 1.9679081017400652685371023954068399 0.0904591914791978137703108261674917 1.0948154128488011164781014781961328 GT 1 -36859623505391.3509489387389130832457191372068450 0.0072088583245160207396499096795234 0.0051307568831509889127560943049649 1.0051439644120299237888873990271932 GT 1 -5877966665283759401179352088.0933554026891158117052839065114364 7.2868403199122283479359515390354724 0.0822635514695416913810355397908684 1.0858450226848370465107039806874967 LT 1 -560503945579687069906241584097127.8703501921676489400489101530891274 0.2219910848667090573490247279757908 0.0902572835129869510695183631525106 1.0945934485818087416193970496962502 GT 1 -89848006349265585.6442562740807594980325405328186179 0.4618317338053284138044821141881888 0.0457167406126939563871639791908663 1.0467947340083998167819630339167076 GT 1 -6186.9614602190967793247810317203917044 0.2691029287004332164193392678082694 0.0149356358727415899347979595366702 1.0150482956532604920973185889684614 GT 1 -806.1924671804358848554884992843285386 0.2294769540449809791396672395887337 0.0321669731109408926931032315325135 1.0326956994673718090991950333656897 GT 1 -1167501586443439040297.8787962749764618761771351654339000 1.2527094349698902393417482864645824 0.0726318940875079741004253929464247 1.0754046984804086491806307784777445 GT 1 -111533538794062.4884041882146271336737487167608860 3.7688559175999856941850569089429393 0.0452977269137763911765732641635057 1.0463557430380452592032042133478598 LT 1 -168023716143449725013488080983638404.3016473148136917651182310140293495 1.5511049407500897326806030742750553 0.0340793336262408249002134619268804 1.0346735740492176101992141481349114 GT 1 -56709270171758182753508112722479634857.0455161958831943611483382250691902 4.5395393369705510914114686116644351 0.0485001386091230548227553875061401 1.0497157379202714419094581867941487 LT 1 -792637009061321.3943643968059865480624332654282791 0.3394810086749880557811171729187049 0.0273374064933192985144284564397956 1.0277180261979281411377736535315704 GT 1 -49616803582933.5393670625315222052646231476981064 2.5290501812278750256110169403113915 0.0332123743349040593335551717233768 1.0337764295054114701522201604536796 GT 1 -254742765920048057398419074068313761.1058234958020557032263574475785765 1.7564880368032550130761366554093333 0.0653296028156447579574029841880513 1.0675613282223239989069735503332415 GT 1 -480561643592367241458852111286.3875167580561287077341498528779638 0.6328559634260164354822927415107448 0.0018129816110837049781624716640351 1.0018146270513141129981159684952371 GT 1 -14307308633533402100326865570014643215748991.8614464624554639640757138968197861 0.2878912641660977252124073876899813 0.0699811767940850542886146660696179 1.0725504530333014389783300819450812 GT 1 -693349231669979238146784780897090661.8676020623867607677593248964514522 1.0582582940888873433324348743617210 0.0247731219738661888969361169595027 1.0250851396422486311397869761876088 GT 1 -374730282578779480818270547944104746368014.4625667380354926612676391945213968 0.9169729910317024761504212770343974 0.0436793582081813710196914537057921 1.0446620228007018753607323669369946 GT 1 -4615441895922333.8393591100852171197017499917994503 1.2353726350184518645105659898025596 0.0380516451353110284649421190207570 1.0387945149293719633232499862202892 GT 1 -1100848380063395.8931835420329159171712681831896879 0.0989267779170926831776986056058068 0.0541640259192211767070864550054906 1.0556861138848081455996707673503001 GT 1 -543013507056.0996819229372769357718065731266660 0.5569416083665833120220766814885093 0.0892653943515382563919835236610047 1.0935037461751488745513520404911540 GT 1 -572813930566151020262455530409550495.1637917488881612782230696777472027 1.6980940833528461352623332778702098 0.0923307470977467025770663709067661 1.0968752256574616654636912797129947 GT 1 -5022002980319465074118816757095085236576845.4838134603777608085278790736758337 0.8595815772659865461643760633553934 0.0267862869201093531918183971582393 1.0271515774610986950218169650377484 GT 1 -12737523895173441111.4884793701219745900993132322161149 1.2914817828906927011622679306830540 0.0135644705977249627437570541849789 1.0136573085164115354239437960252804 GT 1 -948601536689023806972050113.5488748912866156263430722651131511 4.1333060711872912504031049371685120 0.0527759855820236339784739430018822 1.0542196621142602303231441578145373 LT 1 -1187925903899231029314011.7462718944458248058105778370923561 0.5151302829128283416301525383580347 0.0658783170124285953201749308629084 1.0681485676679257140639960482290154 GT 1 -908730382048.6548316266988906461421162352812169 0.1825432884866143807927129207791749 0.0799516784135585163054693956539857 1.0833290868548365196246228531831782 GT 1 -174609157984.3275774217309472426287058103275984 1.4378691913333395008915765931385823 0.0746033691435870482497732796636851 1.0775328432588814018726469366278203 GT 1 -12702341932309.1527442862336112978727743285457285 2.3640562374460119510940021101085653 0.0815389917864673252630564919635460 1.0850558268191967073614930629197196 GT 1 -118332730693999276601400718702357550804.8460225157578247484973050607013139 0.7040927794913655460151314493675533 0.0953867272989408866352708016511858 1.1002477495929504025850157836329289 GT 1 -81750435929429.5983268797293991274459248838994156 0.8973347611150277061881565493338292 0.0807464848250202880928485634036187 1.0841933348483392537803805566933397 GT 1 -4663578010799003883913312.9014990905567210465574713231509610 0.1406929799129944099008627468602628 0.0349116004856274281008709549824573 1.0355355761243226344545566162468026 GT 1 -3933194957767703541972509602062169.3235206717291947161744267580507201 4.2055812431080334598232582412119067 0.0787576464866736560834148332296912 1.0820321356342565973877648429113105 LT 1 -2904942962571351432.3253577097278616737398901161052278 1.6280274030509643927261656191816357 0.0915319618224406115639834668570595 1.0959955726370242137335970576780063 GT 1 -130171821228.2824947712611903568020660349316631 0.3627737654709180723210940538400494 0.0885825364084060526968574379970953 1.0927542390548305311007814268792382 GT 1 -4736007708775578672182184519206652599596.4779516061534718761894209965773161 2.7137837886938137358226293293555484 0.0137150845083003912192414323735629 1.0138100051757460206487333524126490 GT 1 -159228756657258044593602468297880391.1720014378663755579293888142738360 1.2720186999315880609883162022130952 0.0421952223736451857600251848193298 1.0431113029608287784730661279911075 GT 1 -505156834278289936693493133132196460324.3251157084285682986920593693831523 1.4603617041366738471277502459674581 0.0751039198212770782658341520981783 1.0780738935337006131331590684687244 GT 1 -7868.0886076438451333139209785531593281 1.2925643498681792444300653046348403 0.0869665901569544430032855398388776 1.0909828055812876047449909140564936 GT 1 -1994000023278148415.6937127633739626073781947672955566 0.4511654998525909582633117959984308 0.0176337746719324236368385971490346 1.0177911019358879183494407440285253 GT 1 -268922170870.6730944309125676744077397612384250 0.3088107916019996873872184688609152 0.0995792831649284809650943587918656 1.1048931617346068144101563978974552 GT 1 -94021422733712452472744335.1270161984395938248246983308236965 1.0554553991828387036514976185261197 0.0673415791529493230654341071979857 1.0697162535857216372367403053884776 GT 1 -5816427494658001791.6119021814074676135998974121246400 1.1460412253316253549816863513857884 0.0039360984977339297833888996139893 1.0039438653207786313940809015835026 GT 1 -650537638498867883894190835122.4260834694035894861015240495054516 1.5373824564335031479650338058357852 0.0227323967774586189785645643456294 1.0229947614525881378905568511363743 GT 1 -3914689106184642352.7406692749663427449138249115065057 2.7354016003246001642387953020710142 0.0625018663482591678732796539930257 1.0666232507498980569484668616684601 GT 2 -199441588843698612253322182362701132101981.4673410290212724554192447711995412 0.2815507354652880139067199734118518 0.0339990711400065886125251366635836 1.0345904832172931363692637909045425 GT 1 -7582543742668646.0064137894394033913137788815344487 1.4373532684596414767903833823739760 0.0011582869552031404368977618771305 1.0011589582879858425273511910653719 GT 1 -13280777382379964183908162834441594018495415.6365368672768939066061682846219850 0.9498006035350421179417835964166500 0.0128241272821393628217684571916694 1.0129070662452974661509624003950146 GT 1 -341753767418881931842188673818125.7850704135174100126335891728449746 0.7221506648359199361208312745145906 0.0848703977756698567106399236164177 1.0886895819616406576395011246780958 GT 1 -708654928862.0900685252857423021639229681307496 4.1354117721499327344332647822837667 0.0869505647383631348546554230193807 1.0909652538928363604931838151724682 LT 1 -2089753021490253304646232539984.3535516002957565497284086163201916 0.2708370973445114657009024427078165 0.0055334160704885495452117792344911 1.0055487821279349330656879848723992 GT 1 -11840852.7487692569028159071119653891823425 0.1124442834404783578016134827222148 0.0437271547076907810881015888478144 1.0447120036250036760356252530247826 GT 1 -97045356195486353207773894972.9030174020626910797102595012863393 0.2085387281381233962975997443759134 0.0700664463529939975890903677968565 1.0726421430787347098029750988669713 GT 1 -7972.9937595529172506780271719304862027 1.6742177075768138211321447984989574 0.0899400865340519080930349349281526 1.0942448426649620878613178191695578 GT 1 -185995326806027312064765051.6980762890775822891770699221121300 1.2601435555593684045654206571604915 0.0199660918439980709949863824175317 1.0201681077569055073244622381479801 GT 1 -1035565022993685699.1119428245356812679635443808914938 0.0332045878340916508485150779879058 0.0121276459784182106989405362957510 1.0122017859152659445942806403809342 GT 1 -143400190936659385.5701513098635998118868351876370397 0.9099825917161594021043347115600937 0.0848214512693929836474556845133637 1.0886360975183101682955189920797033 GT 1 -37817239302116085478749035.5505133243703982447194019663867687 0.9895821910648353153890605040958690 0.0238081639820726484669286958386625 1.0240961585860563571493173793765410 GT 1 -47712509126929270984190554827580545802.1498060190642607225709343779080626 1.6502074287877233721577725915036341 0.0130559722126365600642095499261243 1.0131419505919916891069119791073068 GT 1 -698923210740587991238005212649393427014536.7106867416651553021828179657215773 1.4576352903646714726524449718728102 0.0389973234059361164443511212841040 1.0397780847981750054624014892422518 GT 1 -117805186353763351407267356748504.3181197413386760750055729068294288 1.5393247496648199907452219641911839 0.0169396749958618766718518664925548 1.0170847924532884653765732279448248 GT 1 -6355324989728178307858705095.2928283379480201170953751722103354 0.6027087952565308294406070137801053 0.0893364206703304280539818595333951 1.0935817371596726967949207969336982 GT 1 -11166331457275726.2008813403178941725835820310297539 0.4294121010652131400580478328471242 0.0239196657658390207825715337762540 1.0242103862901507241682603197218183 GT 1 -41172171517236436.2865554193806288417980044561767691 1.4863070088592215477794445287803978 0.0636943220469546895685165390989593 1.0658132768101985284177589404533761 GT 1 -509376668319907.2527609559483454761524119877799012 2.0964268876650815594244645571600690 0.0417804357930310718772626333461861 1.0426783370761711028976232231073759 GT 1 -94337.2041387027345848430313637125308255 1.5627827730816819626911562068460719 0.0218993743963815607214296070775975 1.0221427250747928128818471254579909 GT 1 -87665771277887527772422083942988486898.9807300858876629378560925116868034 0.7954438472343875367961392970423279 0.0954989127234381269970741423031605 1.1003717720728144473990034394705758 GT 1 -2395563224274979258000768309237345983423.4761340353881086664094385868189010 0.1103304083457330242112215416877147 0.0096476107621527888527524104773526 1.0096944504631218684414517167763228 GT 1 -260898875283183999827787986781887110.3934816465594359297370109969223332 0.0900150909321874783815510996276472 0.0135937473088148794807322044929753 1.0136869882518650284934715855221665 GT 1 -9191.2552452181784207318046143558657484 0.1901494341844719296339777472320483 0.0696083307777254352784934022424769 1.0721496317921089123722855151446268 GT 1 -2376733478015012995544439352442778402980580.5899958760525443329477904424927504 0.3314344673017477119508741432457444 0.0399475390423036183534566548512545 1.0407673491824050696097222624779266 GT 1 -172999227711910.9575576815960440894809565597774564 0.4033103054483957213686018707186722 0.0741918269128880978755635296598730 1.0770882222892274732447112932691062 GT 1 -64240846975534375244586145453289251.7677235545865558585869703052872175 0.6499947773326648674933102188725338 0.0989565202542752619440238956264570 1.1042017653286793932394130496331444 GT 1 -77679524712929176724314900.2749963222033504242148773547596509 0.1850158900456603328432701910217527 0.0047810698406578680352256361083331 1.0047925357157663089104836005406313 GT 1 -432795416199047218112239365148843083541969.8024088773805163775309463859193724 0.3893762017712456358502250897696594 0.0966016076849823834115221495651665 1.1015916353569541622528161279213191 GT 1 -1411819473383.6592018435391213841470153620156696 0.9593979638676594633063077986163230 0.0778501299218314886963107755345697 1.0810475197434599716751096145786428 GT 1 -12251684965912151892318490032.6363848949227141944262633272209816 0.7618823195260702143670215854587188 0.0071008779207632676958133887452006 1.0071262091415526719156752550032359 GT 1 -1826418193214470898025.8108189475340241924195538744761117 2.6760567714654232735435304681721617 0.0926265939466462298647107336253378 1.0972012200356762120452504084866189 LT 1 -4380998001768.3481811534282880453246272726143537 0.9408293284789836463309580321437134 0.0706501365707759180013566728528192 1.0732700088807916805060491510448797 GT 1 -382892157022828.1308330817522780449973587038392540 0.7273858113876478480723692688650635 0.0142439512626943044906362381553550 1.0143463700653868410105770354293207 GT 1 -67362207741726010688221736783761856842.7654131583945235553889945013666258 0.1841097426365309677781535252486984 0.0086125903405039163356216023837832 1.0086498930329950514258580770186969 GT 1 -158268794668650519649642.1399380377411744956815916142306751 1.9833228033578417851583323381897680 0.0223243436588750094889435716415061 1.0225773036849384825170580156992943 GT 1 -4801395124781486739.2505758022271179336275453108752350 0.2711954364016127480283342161994001 0.0895968466726630739275969532079883 1.0938677519436866887150265599595670 GT 1 -4880.5813000574928345204514107486853406 4.7210733829831333614300083576277934 0.0748553015652941615046881693221652 1.0778051229635017398844144318178150 LT 1 -356614664652705897973423899620537.9894121466225956925399533382230333 0.8432267445076392257791776709244138 0.0263894505279254130455090700170974 1.0267439018374551743902889000578495 GT 1 -6162794227112798323298152128313.4112930566727541634644369591412791 0.5922781667371698111108893780951865 0.0931910421284850638847231338398402 1.0978234818449366728682169064590665 GT 1 -8632776.2443353075095898091660729730953212 1.5639806535431177962643071887234126 0.0208378343915583789952232801010029 1.0210580060338190998277662290360996 GT 1 -15858810427093613591345859669900660108289973.4150915926836151077268725166216115 0.7462644902844796480310911830148987 0.0778665210465958784815525156493689 1.0810652948047307121842839508409940 GT 1 -452570.2430947298474689569494494276205120 2.1513057034852788791569739401497201 0.0891293569750787421114338471340048 1.0933543862885197778191927772960053 GT 1 -9041785420307243527004501788905537.0103736230382527650341199649056375 0.4595481897842972884901944912746288 0.0882680539745843728502009261957435 1.0924092509421921916016549637197058 GT 1 -59999230767836693056227528.0928574839687926042295135021411550 2.1049778481236102502152710499125005 0.0720564653347413399091813615507450 1.0747843943130306715758644818647786 GT 1 -95706900984951334136327291777564338576422.2158347563382076556945761742991722 0.2194066854826959477250384570148983 0.0638298174711613984660581631144144 1.0659580000905385302539834108902651 GT 1 -138417033459931347984756.2204500109385279892610331762639759 0.9105806316515342863874730941741307 0.0931956298481023726993770697944292 1.0978285410486229609253381860414396 GT 1 -1546.0949165691274161096267347567634826 1.2255201653395706066246946219467233 0.0840475305011850705103077533306278 1.0877908048477310376196760660449091 GT 1 -18671603.7464515429409686727745679798152467 1.9937923606372019420823553442112140 0.0949472366464710954010792589790171 1.0997620349336110438773724020703505 GT 1 -901077.0293935480453060135261290329885587 0.2999321333517415818902740167200360 0.0718430735114615592856137528718205 1.0745544586724917893381676577767485 GT 1 -1753637308787050676.8188342046139361747470455821702851 1.3466040661033931932014849798957905 0.0639795366012787654367951443139491 1.0661179401380568763178706486560246 GT 1 -8120458740252066934.3813757169369035321260757356527494 0.0646423055119064421357108827863069 0.0085514984821080242461776021161423 1.0085882723430823421119928069778604 GT 1 -1721112511067.3836693307164468370450496532357794 1.3914291576396760822608818656151713 0.0496111662399883708928161771949691 1.0508840794326632469132965848689458 GT 1 -1074.8569809928754561238406850001143793 0.9280130237687044565884269553906728 0.0561944754780585125206048708652657 1.0578351462190163772545183063575266 GT 1 -833749864563179914401900692.5278766323404946582674127061663518 0.6607132194775377154707859720084388 0.0066080303010677253603963050282626 1.0066299599947385244405743874283026 GT 1 -48.8216831349994382864955091838595573 0.1274678001246587933262837702679032 0.0799058414661641215105271605252998 1.0832792679436390790119643983674640 GT 1 -14.4636865616061241963587443095767762 1.3400777758878123974237620663965621 0.0980958989461828793212415452608135 1.1032470826938395345236617506370293 GT 1 -175871151286557072914577547689111265.3046971414994608215182179885419246 1.2074826998114768895350796966871792 0.0528489622536783042926512757162301 1.0542967077569458165404982920404822 GT 1 -2263879867433018127419246008.9425089441582292826849006299740413 0.2299913697532033581986757011369042 0.0054148191007123510490251223643629 1.0054295323708257220593504104668284 GT 1 -25495551081155.0198608666940313761788631656552513 0.0270661011705947769211036924118494 0.0045396138815426790106831551930349 1.0045499492194633573828264661609276 GT 1 -9.2991137541469116149207121475625559 0.1958451527129341038849026002276826 0.0694011137997529004196533753132840 1.0719269364342790411103752016203156 GT 1 -132385293030833338688327489121288845925.5804031683835324187660335357305950 0.5961319567271032570409174191246017 0.0858997121890936189292929809748629 1.0898149894652793585600288464905562 GT 1 -294595143997441.7043805672401055445987780938904048 0.4494960588834572148023869667741143 0.0727544818740853553508256922161671 1.0755368961362082202332462740818797 GT 1 -8964867240950081743363978177991277672061.8690189526615053709615715275305103 0.0792659516894786600581016428046495 0.0694473308642457666980146549048536 1.0719766014541640256990899866132838 GT 1 -252345987143293375313181101.2719225381496683199890633472735233 1.6107752922748298506198603388863820 0.0954736933056328010353314756420026 1.1003438903305135731912313321483545 GT 1 -1568810490023275796742878481416861377867.8529529534308520438125594725664118 1.4434277476625169387039001188954719 0.0124738034655920600751367986744523 1.0125522544226155916965640089014588 GT 1 -338396308109310374793311330380881.3005252387728905971737543791907721 0.7256610909727331613521495525524725 0.0454588547468063451774499882659691 1.0465245301417374940452530522770294 GT 1 -1.3418514418748327695405692966926741 0.0889792598861821842955126365559403 0.0865734113207666990664792520044790 1.0905522690871084739775489962333196 GT 1 -1.1087752060148614476931775895039460 0.5227839798150906294342774212460461 0.0847027213789728972576807279432138 1.0885063718056703315017745882059737 GT 1 -105534110174566218.1663898110755341561152567189461223 2.3099819090278445314958046359078199 0.0026486936140653641501741867654955 1.0026522076093654331600675865629600 GT 1 -10630558670348760832548709961506190261704663.9375801067511994836284449778899764 0.2598593544474098268588100768348170 0.0785000781507842605551444459070128 1.0817525866804930180000296752144944 GT 1 -177412239367794264553416180017377208.1793422855719634607874155115872822 0.8630144575554861792630087974445003 0.0608325846124053407565499368937363 1.0627615245182537491811739769161989 GT 1 -73334.3986467799997660190554565671437363 0.2243933175274916049413426314391829 0.0100645906610369821544375048608634 1.0101155810738810899456480918296240 GT 1 -63935532762373222428478461953017.4967955030225297257082517724332632 0.2676263199876229271960768483319918 0.0142521404686111546805901408026362 1.0143546776379790645396040632376489 GT 1 -2810116476824978359540843001953876.6489908250471360688308493649946386 0.3816518400565904262511562213192637 0.0793064932991245763392243445903907 1.0826280812809532507203693918718498 GT 1 -45947945314232077755072181280.6079314059712991285399101793442105 0.1260143511087345831891528893542307 0.0443262289120014197928393375656881 1.0453386677993935513991413441675122 GT 1 -2107829907310236992.5649990148922467903797535376631668 1.1805677486186502199144272525313288 0.0414398072575831961205174727101062 1.0423229195715792084752704523191004 GT 1 -1488358443131.8008303609535221188248793313002387 1.7604266277149076646352870735178949 0.0768360643754700482322367847898209 1.0799484485228289728302791864684127 GT 1 -6.9554789359773794577842264857833967 0.5683683575460624715206058821694176 0.0763310605217163717437205137357321 1.0794015621497865391569321979829040 GT 1 -1252807365963864636.9964908823480963886442166136120071 0.5502970572363605764460079039800289 0.0852077803825157886471760560468333 1.0890583218789876820327041022046767 GT 1 -126677887060328296332537010894732466224.4075029910139216055711540323173436 0.0938720794208354331650514213091022 0.0505347394486582503065215512895216 1.0518563364961804129929704741088843 GT 1 -616743127917225633831.1477584029605794804837938264004401 1.8538278912353313381592767052950450 0.0586219339044707278192789171752925 1.0604104495264573146092620215135489 GT 1 -6481692320942486.9842891828133035969664607719364292 5.8412836808447862638137557077865885 0.0038482676337814104660258743156791 1.0038556912672110725953818544824807 LT 1 -126766756587000525477695721432510530749394.9206919157610736092376692669500954 2.5561602194587002323539311736225316 0.0055651218903161422544248335590164 1.0055806648736972805965934089240460 GT 1 -76751160861464395673845000040449370666298.2880336921169106273054161138128559 4.3680026779593464865706500100004037 0.0311070352300827766295530999572707 1.0316011326662374152327416968949184 LT 1 -347868526621165834987.7275093667501128893777264060801850 0.6681549541468077576865299414494550 0.0273827151324516889564536072446196 1.0277646093550812912451149499074271 GT 1 -4634471301312354361544.6838202822794763556414263983596295 0.4772424458681231715508874836047201 0.0512389856079455318237452584413638 1.0525983409672961858328993683940573 GT 1 -4373218049029688787892.7548840698896116160306487335442078 3.3088257345415117809110279329842452 0.0908532348854203217453523985973860 1.0952487400657466070518568575229584 LT 1 -37031257166218350556577511686844257845.7831972527491686967399678324110616 0.0267148393837203781191131612913978 0.0223036113270304377754946866441191 1.0225560981737947460103270957258116 GT 1 -1280871543795021043659627926115.0641938296637658196274515812473653 0.1778738116247675718254435962551557 0.0236579544728972908791052568869670 1.0239422974818866037642833009454385 GT 1 -529856990811064241635856249491698273596.9738944178767329277878713086929217 0.2430992814862391945078168113438866 0.0683338779043788044092603907473192 1.0707807665739680953661098992247461 GT 1 -481069.6098488851529109666495911117396567 0.6319444701547573740375093338521004 0.0975864132593137265832208507320713 1.1026823421230890959980119632152913 GT 1 -2786739578961008244.8808065673286131874751973472797214 0.9202478813925024319438760415346444 0.0401019969703058164274676441868755 1.0409282470089194427942594856889594 GT 1 -67684.4423311887747628947287250309389115 0.0293337650785401406499904575783319 0.0418640437104203553184744091283652 1.0427655942855438895226987238152701 GT 1 -111465342128046219052819017865255555.0834608290854795619381876285510184 0.5944287894923355626799733960873152 0.0696416105639685917385808600163377 1.0721854020838703984354832018527373 GT 1 -1092019006354896608.9182802179063729876027969393848244 0.1082248175150479730866382993432918 0.0934849290356954889081853514930119 1.0981476234821842370972315926962997 GT 1 -421306201842151.3256821475807497722980609859183519 0.4620602327034118382216360945253209 0.0311947184091275019817800529097798 1.0316916350747205242840482940347241 GT 1 -132033157053186077345828151.8359128582395152395413249103456751 0.2115792875204029911285382117218088 0.0587744387919742215503134941855031 1.0605724643931295043602535590570936 GT 1 -47616595405811478247163753240567623599.2161790072475836701297553802992881 0.9328110548578711275185175623771643 0.0764292362319639871853487810977851 1.0795078566498100273610055523619201 GT 1 -77791919076338611629554918499.2324134075162768635431294160743771 1.3447945567834327319981413587008180 0.0312808107735456544796428991571732 1.0317805034898260072590400079236948 GT 1 -32523523537189193763975238397579355854.9784519065101954604774266097792860 0.2700871935162309717799257563138536 0.0463653748712362313010940020675768 1.0474746734217214574864162582932272 GT 1 -13122028297783038810213888774.6854354489433433892583163565459517 1.5163988262247693472508627433312723 0.0854474409958701317172696323799423 1.0893203398621762319975755174203938 GT 1 -548622214107978881.5698666996232495865088494334697697 0.1988310437492175274762548456178552 0.0322516885786888335929136470136410 1.0327832343760065297262337237494143 GT 1 -412174682037744451710896929675.7576713810857090988388581271642695 0.5313653621557983039843388489011637 0.0512810632076755047278624816158752 1.0526426920021628319418872364930951 GT 1 -24103652959.8507671949275908832325774479857720 0.1852284413705419259399526101785246 0.0326977433408106590197386298525029 1.0332442608498158108776180810371926 GT 1 -7809044160721599440768333347730576003998.6282271575166845768402717641850240 3.0046911081624414143329973806773139 0.0114820002129049948259451651136536 1.0115484273444384426024889491561814 GT 1 -4445136551213684726775097024200990419899214.4899213138973183662838704820638271 3.2284716580233750669014239557803836 0.0195533602225952609107264706436927 1.0197470562673251053780267915097890 GT 1 -206182568660556063391583.4838068109524160073796085748302285 0.7763613663358260272135471629752442 0.0075239026471671422035198944437633 1.0075523499825031471812661485835383 GT 1 -96.6654757797500759729919694585109345 1.3034898962823888667276730471013638 0.0043108135422741767498695631197628 1.0043201318883830978917766998417844 GT 1 -3869777170162669177666298574.5742336279102716428719147417932846 2.4682308731377106188008751180728343 0.0607442386953720133704304625392723 1.0626674606052924119372808953580059 GT 1 -54044454204492469499902.0387768064141811101009267553652235 0.4610473435055645932567560352484214 0.0329829842536749490516554711908976 1.0335391872551936821895445810864338 GT 1 -702451589344366627988041878515323748615.2146686514409600068941177642747937 0.3563459342023230894196557157324212 0.0930486854206332526569151478252906 1.0976665077284490900113195386742123 GT 1 -3224534949428329250554438667119053796233052.4116205030575441002876421879263411 0.0080683031615435538308911531753686 0.0580492999751236392878839585910605 1.0598023412053879557007237901061804 GT 1 -27137967388253569182781.2528591965328230892100225161244152 0.5551866096948889640718310054367729 0.0883781479950683952607681698021390 1.0925300108525691478574354193178283 GT 1 -73478827.0502926468288824590018401563137583 1.2266983823086982648187838245822121 0.0666578912908652622156761367675217 1.0689834693427930997603149674130574 GT 1 -102.5230854719072489129613256037061722 0.4463461533561145185609688464043714 0.0279177327601861600159398948504821 1.0283148410252155999092094783881291 GT 1 -84756083040222719893078124956028039478.8023959310899671586178846725453547 1.5570465136209835796342122956180080 0.0924516591669520848962241047456770 1.0970084461262379722092442873922525 GT 1 -331540681907973688305556905284298.7563965340033814042769287094147023 0.2189583922512960524804103087020148 0.0149569696695901355133572735658798 1.0150699531496075399514836412813942 GT 1 -96178641334861247831403.3259957771501280441764941061733970 0.2164361049486774926455421684617981 0.0027382057646025939806200020975550 1.0027419615075719946841074137030691 GT 1 -30106095772522595.3172391533807813092213749958234899 0.1038073340572916654685871529082631 0.0657955187531709003320846366052142 1.0680599340439933225583728734996411 GT 1 -1914862539956395948.5282062415395091970519587618540094 0.6538841491448415768405688676546078 0.0647066152703513757456459551574347 1.0668950184527255342877516587988980 GT 1 -5669845338137834455616599513995528318.4599327894123304008071602979450254 0.0867727313438383382722257674608246 0.0052635319426740709249222835705531 1.0052774331279413067030707910726052 GT 1 -6385403772780311139551778432551442114731002.6803149903706682458927272112156370 1.8946697666461005416923293801575861 0.0645757543521108521703783143482258 1.0667551139408644235438092488382026 GT 1 -1079145313110190365469807861782434178582.9350192084113230593316762562100856 0.1306820104353602218539665678785608 0.0043157166671339289835451316263338 1.0043250562533343671710491328617074 GT 1 -4263.3384877796132187939791509508466485 0.2250506314112490003299565278871394 0.0541434232204657855544144261150750 1.0556643315938678593796132550051872 GT 1 -41538778.6599737886161594969901331552332409 0.2789358963822754739287194298642502 0.0145998913908113037751035171202337 1.0147075186539034163976859067904809 GT 1 -923035091756159829324158592587759921987.8175852569398161149551040769035514 0.3444141372606609411056533969655575 0.0606585076760981082689697528531136 1.0625761892919038401108004672963480 GT 1 -37374169594521311128920916628428422591224.6154854958085893205352651983178762 0.9966774252621760032235246371187010 0.0491725836551305862004367149521508 1.0504227088835598337978113762660317 GT 1 -3571322776791402.2511550830282150664254400334923278 0.8669981237333016990726666425957889 0.0390625904685457352054791776413579 1.0398460026933329975788689835549004 GT 1 -21042258060892549715507548517575304128498811.9819809396777623706742795527897128 1.1825373651432239143592127541243054 0.0537139642600068855068344865851120 1.0552103922713327547037066709123988 GT 1 -884229221366610474297866863820707361433806.1956488722366311616983306161866227 0.3822229029868126497319915244388660 0.0847929962077888770174265808932404 1.0886050056408997731384032218279773 GT 1 -446102224.6868967029005386833563892973867830 0.3669718041555519754894824389696743 0.0976475381772385374449763712414504 1.1027500793436522118328148539460141 GT 1 -5258092767404720.8129594737651263080243345334779618 0.3002829131242614899533022392394307 0.0555645455990538418562655268007780 1.0571679327548397593489025284274012 GT 1 -15882700999395619291839330610245725343.0759978444770609547102339164817600 0.5676334817660422876677851185849400 0.0873553910960770261257485976923810 1.0914087305702593161174551839134496 GT 1 -743028696413719.0071069213148169595750528904608107 1.4367316306521346320797878177383245 0.0090037520341308173989986682840368 1.0090445307684292242985823864619038 GT 1 -1724612022220.0512178016000412639315828906403467 0.3358909012033344221357157272652837 0.0983212170247358748188012709468258 1.1034969387794349258540107247432556 GT 1 -3421851946962173743311740020749.9773163479116625334199837794414016 1.0661379438895073277490987275029767 0.0980572807719378639667206190280630 1.1032042651177386096157726156587088 GT 1 -1232191716412267534.6039803658028416973493968652542594 2.6156956392615735097145871252452154 0.0897166026430931530268959908916673 1.0939993022872181174009594678641148 LT 1 -30556458.5934316756474350552353751388901177 0.7344260041762978241436372958439242 0.0035899684420568773675678959105656 1.0035964278427612427887167318381363 GT 1 -192918518401209649839663785.5305264498144137206561065151096476 2.5261058836366927444024909347179177 0.0708546491740500351754944987043656 1.0734900929601381828372212306727897 GT 1 -92387229977196363709663604.1760100201279779177369518043890236 0.0897565555992779361375813750508544 0.0006181292037789603986928736585203 1.0006183203243974579939557222537152 GT 1 -15488989589065657350634610733.2605558953645648752661737618873604 0.3538232394270906270073198133375056 0.0207744123721401421049942371158697 1.0209932364095854906186880393861242 GT 1 -49053147389288123.6100716856015414871226076769161500 0.6882081155736187717316056554858423 0.0807929779495050293884966205978664 1.0842439131703138098871130636776073 GT 1 -86302727060966480730164478866453162275.4117383215064735711073074424760826 1.2387165031142231797357324333154217 0.0374691361062551428109197399177497 1.0381891469512016955739454750285265 GT 1 -674705823160050088.1873657603490374620654852601943998 0.0819288430699739915270328554223573 0.0122046825681744969888318465304825 1.0122797712879158467295730898157799 GT 1 -213372424703078496077912819184218661.6774161696693014671135016561586702 2.0744487104550738542117967448523559 0.0972725475329290437984848535400116 1.1023345956337783746278267961876769 GT 1 -7321573130987355133599715122691855927225.8974577412457154518380607374151607 0.3784587080543414784760183059502560 0.0868923205695547801287814046838484 1.0909014651110721745028185533612836 GT 1 -21421219482773886997422176523536468.5948548664474086905981285317943369 2.0832936687261676808994733160368260 0.0528035236596054954437331481734458 1.0542487349391353214271127613617742 GT 1 -2679434107203543412542893665026360.4589309761041710489154715055392985 0.8041982968898052357208802870683972 0.0076509839712838750535896767894559 1.0076804029010536144363992003534396 GT 1 -111178372320006202373.6519895783508034246846570376839069 0.1417901594594012125471616835104017 0.0838383587058794271269229813044724 1.0875624655811075791922051849542408 GT 1 -799504487168261620467069792.2346712683552194145414537377976859 1.8885067264682687849330343919691869 0.0455404871160315880070253747131203 1.0466100538097645738796826849296050 GT 1 -59896500323027636872493788437405617853297.6477624600310701125187265859460233 1.1601832013744678715405921775743721 0.0642741704852179602229942145492158 1.0664327625982248995321816694616283 GT 1 -186222494346401108499194.8232775467211194352290568515147562 0.5106131239760875614912198100258611 0.0770329671295759900103869490252911 1.0801617624839864542544149172200564 GT 1 -76420149379.8207808709398156370646326583120406 0.8987506069849507809756474647535564 0.0235550408693702602865588644699276 1.0238368957116199635103189704685269 GT 1 -1781937224711763920719877346562322306809362.7418177812653872953485123989246788 1.4290799086363013349387851214975849 0.0185615842753935076149108917064462 1.0187360122931595802510623298879015 GT 1 -6643.8090617913425605352022019007872407 0.8773462105920630765875356918966153 0.0805489198679568762163274555751148 1.0839784390370947921029263025605972 GT 1 -6810236550332.6494330688074603301890618468526869 1.4671855750148893103733297243419405 0.0190515341296158118522123956901938 1.0192353530388584832686091624491751 GT 1 -219780910860.8509577894766375416990689550470815 0.0163220516605194270151354379308130 0.0436253933260225293072171039675780 1.0446055946977759679632474649476078 GT 1 -317527594319678346283494.5375942346782711579082670945944848 2.3310151570796658520209739208992287 0.0414015529158906305943566576840039 1.0422830122411132185166296388062747 GT 1 -34923893241514.1528834706773277237699014785045490 0.3623843329790702298445923471688758 0.0144023670274236187573498871112817 1.0145070878163820886820996830661629 GT 1 -6832136499375916069127101449406516.5555889114824279250130779953364115 0.8435102647586030826415433796031140 0.0959286691873113822410860972793228 1.1008470159366083086458667431759683 GT 1 -3657572486491885416.3603898274448022531022322304160093 0.0945091233813060076560930796728193 0.0139058666617500023298248648378521 1.0140034590193748896736825745969573 GT 1 -355665338734091.2626217519018586524131276477163608 1.2059999468195444002828398727051184 0.0530075978691146861854762311312883 1.0544642089212901223838790538400526 GT 1 -4669.0419839774854940047248758888064812 0.1999354797538269620669117282732512 0.0455677166633581226391523054476693 1.0466385829777166735519018606310685 GT 1 -12517818779825100091360198623320.1124218016174899902179816781771138 1.1394630656816403614991924058857613 0.0989398838860782978395935597988872 1.1041833020524996453589392184969833 GT 1 -1321252291256399727997111484400030482679.2983700098769094472677316678949455 1.4376076584564048004335327290338337 0.0679229384887809201786688404966357 1.0703397836897682645583079081259495 GT 1 -965723689056451381245140.3489443089537961860998650446020340 1.4155163428495113080715333440235644 0.0648965425594760209452075393028084 1.0670981061456635391327761186104183 GT 1 -23579057423394924992927711879010144759235990.0563231797772229479517396812387122 4.0589579831813789621401959318057038 0.0774099432368797832990865286403408 1.0805702853247742945221710676671047 LT 1 -20673440170352373.9628393423729034933006669029024129 2.3090729092109571902401007023389114 0.0427452562491351679467335027353969 1.0436857330341238123917939113930577 GT 1 -1289.1320511036182769300948135776120897 1.1295308096419033470217203283875651 0.0783596004624641875433949014646101 1.0816001536975431478237893943109775 GT 1 -5027554081301046250322374536.0565369042574876153348513275463955 0.9110246113777705383841478514925789 0.0619261900681761291035754265261684 1.0639266444450220602284983022397335 GT 1 -155219117749795745678796744084.0368761289512117353800151267123823 1.9762572867329459503608057805565329 0.0870885271686577214213276277167201 1.0911163660332394134641949733212865 GT 1 -190474471816195223222063317773873.4037431533129428338252671247314859 0.7715074563502878179320755328865948 0.0454363815151919490961935793852707 1.0465009869270933360817989220284009 GT 1 -257128457377179297752575276176234187741.1798957978344449433938193491383059 0.3759897576439337897047940258649295 0.0460468195052881206590111441875594 1.0471406857877365865841356446294454 GT 1 -69779638206772743286084540370893610229198.8936502073807731366442597571271349 2.8870058975887196134679468555688406 0.0147962643755944974516128589574465 1.0149068210007529272083564527262985 GT 1 -23660031040800105318225.1619591383463005757714288171742525 0.5527095425281370901353620234486863 0.0952884803032687135398428675371165 1.1001391488639032605361288149223340 GT 1 -92635144942940894104957400529388986189.7696631480322067666190237449458191 0.0438593173610187493269469907648926 0.0738602107930995905636949143032631 1.0767300954626809927306089125554293 GT 1 -150023243.5057177147480077539134419622304265 0.0977420720582000178694436470969239 0.0181100065182884018558501897828712 1.0182759998337555929233437997666565 GT 1 -375510475764190385985.0132468351093131654568657493716819 1.0934471096482688991887206451914243 0.0647697132287230074218291644230007 1.0669624840072725498278200510882746 GT 1 -171211266575831.6996942239771892646903925125799300 1.3678917182276147089229140500886303 0.0620752140443702245863664504668701 1.0640855187393144381244438455362134 GT 1 -63933200.5555696368020334322282343565965124 0.8749489045007536520387932477633621 0.0580299053341530612394534734478592 1.0597817515489375132929219588533217 GT 1 -1863344158907076805410913593595698372454021.4398930550978322387185147556292278 2.4810928929724447550172799523377991 0.0817254604585294646700532176576867 1.0888934078807795425945753697060094 GT 2 -5474256114488808149358410041185053.0054800500073051506616813494625760 1.3150161197989675463275273494132817 0.0829413240127852836639425325344829 1.0865838218728395620626143680642185 GT 1 -660399576084319771.8331233692592193114889092806142656 2.6922763532101427519699318611521905 0.0637114975983947873780673839628557 1.0658316209358193039492796140322736 GT 1 -44347685095433919743334090914.9508192452709279821824406069673336 2.1718175701994542404381620440649735 0.0156841723499620499689949413205673 1.0158084703685256588964985544107738 GT 1 -21123407532.6267246582153989974993955719972139 1.5612197257953699132565439528715606 0.0407224434227205023558923662807011 1.0415748230565605424662546854225283 GT 1 -1888851551.8960269719986594079079728801320675 0.3493193526681937891017336638868516 0.0276351907578568219836140197282529 1.0280242267855839609589082005752789 GT 1 -276783109165744431758736018593241744286.0389314127499284797365845165910836 0.2499673379879329599107300995241602 0.0657203679351889165358392660373080 1.0679794936297697176351014625956414 GT 1 -8867617208536700580941348940406739773.5342561633344123494208558313989535 0.0572837029760188912701606296567298 0.0795950057890198398406392359347613 1.0829414947046392034895429669811317 GT 1 -336792.6737323612307271561418593987221524 0.5600363665680925839413917875927551 0.0828428419974502210451562020044073 1.0864764386373394300791822792583677 GT 1 -1861.0890697844441096828875746510003198 3.9028572485768731480125581187738702 0.0027562159462161038295517426164530 1.0027600213032527346478025324579896 GT 1 -23276081834956.9583037278949983771787756463283571 0.5864298756186008718479323663748107 0.0314710711856075743617891579593464 1.0319769268709115987737332465310699 GT 1 -4491666860718194489492555330343013281.2663923913209102747833127318823989 3.2107854256301235063838157627951081 0.0292804719668178451557174658915865 1.0297177009911044482191512074561623 GT 1 -97347849324642170395679921583008063.0193752661872418209673955399827335 3.5630601563318443801702150586838097 0.0754662368637820088758012699609371 1.0784657083932366937776590653001199 LT 1 -561750221079615108799145.2931203239034231608137409653627240 0.6951187832071280387353843685975700 0.0389282447651216977816666669877640 1.0397062055413676308097956673720287 GT 1 -13441994481977969672495512290093820539.1243076071130113409087383784918427 0.2311757097263650607249712076909026 0.0610295753665824323649634342965912 1.0629712969329315349818295180111854 GT 1 -1646535225766250601.7552939948001874832681522587189770 0.8243793563826504129977609685514750 0.0227816518557435774346870920235100 1.0230451635322356696680770426730504 GT 1 -146475.6300509616494382488957660230884435 0.5870880080747091422967536066324223 0.0921330741378003943866857197793622 1.0966574685419169450768120458654756 GT 1 -3565924602984740781.0230730087188894339562207671251884 1.1729170224041548034452569014292706 0.0415963102569219172288377457423126 1.0424862017294918698087835276871753 GT 1 -201983634558701072216212.2743646814338526635364432439000987 0.0470179840340855622609913027265038 0.0424376915732179161631967629538256 1.0433644859695935290835250640759588 GT 1 -2317763693427050275824.1791577283120314043141539416585867 0.2211017991712838234189042995824610 0.0048970516732991292306424954714959 1.0049090815207702361196286380018641 GT 1 -13227087510140138.2285651654529127561538059104144948 4.3344647075782790818596538374225593 0.0854494107074149638092256391588843 1.0893224936079031113972960512335052 LT 1 -25385990375276276919450273003.6607817077277575449093151377376558 0.4413313575418021485820596025225360 0.0189427358310012160221638056057883 1.0191244478594695017441674673490625 GT 1 -1210135382215077926096.1091789715512080618222515523104841 0.3057810492286621032613768379363212 0.0846555539438278711569031309528774 1.0884548407665602284189890565986023 GT 1 -270077395243878021834274464444870193855.3711013576303883306291298949018544 0.4942939050996917506493181778131459 0.0260482754548841337756927439193533 1.0263935406900012697444695723354691 GT 1 -8765252.5597332320659292012973261098291724 0.0019205829273368834409832635153491 0.0423642716236946770010231107457566 1.0432878150998992803167196059745835 GT 1 -27897.2773193107871086619611065139870816 0.2558927526771421191703393272979754 0.0054782905647810466188726122789524 1.0054933514289152189172742751066547 GT 1 -9839635816464168559157.7399657477624511215674943860475515 2.8594588489549872231486336046684401 0.0902507947624911660529877419800151 1.0945863160956258269291793394771908 LT 1 -228358332444571859480423495312012192898249.5408346743210645609578027337026054 0.0959055141206598489905136078579141 0.0035199494490756696173019132275954 1.0035261590470673778781268805858244 GT 1 -34447305282408960439.4327560097986901877678453657982960 0.1629610112917611767343081971775674 0.0481449722780938725630615348114200 1.0493425375915434772984394472875805 GT 1 -71241.6195004391848286268813639777046888 2.3061615222253757438530479022711227 0.0186624869598916749708839132608800 1.0188388285984833973833813514601513 GT 1 -8161675411.7645348129605996768666710806433973 4.1415958001032741241932772514446934 0.0592620671476131637479880863615351 1.0610906767475034336692008295653803 LT 1 -64963126931468083712554.2425977670592360651181806949911215 0.1053435227806267810955191334971699 0.0163137849858401860914067687428736 1.0164483199659442381594082597506348 GT 1 -12982684614957731400582.2051177722592568767938970340925113 4.5218573830329941850397439404832681 0.0952688287984590093521806030602030 1.1001174278059119503892953592428816 LT 1 -56979732244113894040725489658467859039199.0714243484811447276290318482032576 0.6234664356422946112685249561963275 0.0251188981446493621385731993235095 1.0254397622354322562804785547380882 GT 1 -1163257126879770295106.4582238488338768890848292068761638 0.0734094561918573767549843446201199 0.0083468364296534355417973728477643 1.0083818663309406587870611704117132 GT 1 -6031320247832034628234628.0480407622061235128202551887863061 1.0593952366893839985937418771932354 0.0476878174701293145245793160961562 1.0488623751202157346063363446986630 GT 1 -73264885768189997661343767085.4941297004108445889163539936054272 0.7085935314647271019122172262783775 0.0043689980091897528022238157825735 1.0043785699710878855298942183770640 GT 1 -12764216.0602276751925721520421838001589897 0.2253728819335602769249976018412071 0.0674373383920227798394862685521402 1.0698189322869848130043194834172170 GT 1 -274026747170812956136192483.7609014073216233360491081210228404 0.9056350937260030470107591288840451 0.0651761713828999073345607694027793 1.0673971860377996665641568072957893 GT 1 -2765369333918243854707142281901.0367034826758780022331267638996318 2.6477315565861402910430260098270972 0.0238256894457123815109057766213834 1.0241141116361755403409331752319038 GT 1 -2875410077289843763998554293063.3771389549111049808988461860521457 1.2627182447263306339194714328700350 0.0559065430580036992407231278954582 1.0575301167390342981218370161376279 GT 1 -15387613767519100015930217098397699237.0649792952510623857315570534566811 0.2281054065868827999029514411719483 0.0305088336178075984128847451459517 1.0309839158600821106382657682067874 GT 1 -7486234587141309162090.2682783612823722628820208314737634 1.4780944049516946377707437322005962 0.0118608276491865171873810061485989 1.0119317284512357263492529289088685 GT 1 -367993220860083954753847019235084379.3152188603210696393593718071246356 1.7998430650514867993895231936759896 0.0935385037834432654269009032753094 1.0982067249054824749714612538127532 GT 1 -126565117553.0110009306821166357208410035656066 1.2267233590187629214475737202458280 0.0707916938244435729614907387779194 1.0734223390647551850245995882636504 GT 1 -51808774405008986075073373306450033267059.5317009519134364148983001359239287 0.4605754875234036924809292721081145 0.0418350784908453419700220361982914 1.0427353639392420167809658061709690 GT 1 -7748.6312855435318942973086014238534475 1.1691161968857876443860546792419478 0.0142270836466969758056727296161967 1.0143292588625626258124680302204609 GT 1 -13529.6723807100524295966249992920786349 0.3304723523468887380352412946104481 0.0790384211362987368006897259162388 1.0823369603573662477368159031800294 GT 1 -1673639427102.7469191392339865385838187281188749 0.0307082905813963731421957842916816 0.0965114834420386247792039076029934 1.1014918789830760533735758768216443 GT 1 -352051225933835403833381038389678229404.1487598631472349537710044500797718 0.1340584683785131285365882846919685 0.0034714582460607768712981317592441 1.0034774977385193976337396853619511 GT 1 -9266789778521348629958425574646132368.0281577355394542235166178733483746 0.3231307424358562374823860919361586 0.0057133229064977363986994851684137 1.0057297063682877986014570125194564 GT 1 -7596627409856317124.9797295714329894069520020168899454 0.9585888445724189075508732464026174 0.0529306627963003715635871150020322 1.0543829707322080123333418814610213 GT 1 -6601990135341615305007356161641.1193293800059436399709056949016322 0.5243455726072792942057253329719593 0.0330094979688438215098853323376639 1.0335666056751603247723755673335123 GT 1 -31134226954805128812435530224.0096711124518096245159097995626677 0.1417875149444250686407446292538596 0.0051802543667621745437527301660411 1.0051937184026297214653646986263986 GT 1 -6142291529424640829886871970874364815.1287702365167305093853436099415430 1.7028270743872178623819010344338101 0.0892890280890343653603586509529643 1.0935296967034420144960596986105335 GT 1 -41601.7375306749157653168520728405457341 0.0026933175307557249802164578488406 0.0001989797795739670733766537102381 1.0001989995786767643541123548738946 GT 1 -999430983810059586837778879285293705576.1841985630134497435483493054510038 0.6221498841792739529548775558607038 0.0166521057111838226058243473627847 1.0167923106746764162959696432597943 GT 1 -84840528634915908634919540578.9673432658314214099743728553832061 0.5139572530204903818727812786516912 0.0934578380937864180295408867129838 1.0981177392166244617003368458717100 GT 1 -1278061268029547407333.6779002369126804270916341957781051 0.3470377697534892301319120592146792 0.0300686887321712517137438567713661 1.0305300231180260637397206605137555 GT 1 -12363018246450012591750968677383715453342320.5875831407717355895660341687881530 0.0469328266915962027048858842614664 0.0400487659267717345600361649810727 1.0408727936508963419866296505886742 GT 1 -511673728157594371876594253864.0029742307882906041467450835798582 1.4338725940179555412414648600254400 0.0730655279300466786598057125614079 1.0758724040809857090051209540262147 GT 1 -70307559822663376786.9370955905381869366406048725701860 0.1977925572044000703449651642237332 0.0061727630413821841866253104031251 1.0061918933081967957059828873721443 GT 1 -74972707553836640113457513048446933.9138646867902894569497850287189634 0.1766106445690276500109958240157230 0.0951319722947677711537784458488117 1.0999661716558928316995743877489252 GT 1 -564742105418308844478875063830581139639789.6240085564822362147511663619494575 1.8513759216841867430469518740485880 0.0439431203930654973667902669636394 1.0449378702038482128371222733320401 GT 1 -1844748432053494323491654405125658735379521.5616677552142867506368057716284770 0.2912867512519164424996523918627728 0.0093194116720569714185875922202157 1.0093631090903984687178216097908994 GT 1 -28530921137519586354487152661633219184.0002282002401438468988113935145536 0.0384031670123682155165287023410289 0.0438170715812527477264082041539938 1.0448060365170205628746161315612326 GT 1 -249857.1672708253747269945008009160685594 2.1780320458310228218932598713534943 0.0089092166228610675322363746389575 1.0089491410001228564760873667383436 GT 1 -252821637779301306373242958895484220958.7801434786720643542599839709870374 0.6414890320749657434281280661343602 0.0839875521351550417237634487059489 1.0877253250282399824876279285747015 GT 1 -544691857010413661448829.3058344965284464653051639780813260 1.5903233894448501878376398705084529 0.0555861316151966862470060388914219 1.0571907890154036758074512904163543 GT 1 -44148629984232.0187198342857438865925593176729292 1.4497732968237334417590125227671379 0.0644233844871658724610777961716724 1.0665922386921728793336884381853048 GT 1 -617211335628056955730375026.3453386548049392884496444238969471 1.9690301185174464479772179650645253 0.0448746950500315292469070292972694 1.0459127377369087927428529874969645 GT 1 -93734.5562520875986565069732181844998844 0.0985299195381463557557632549752201 0.0285315050869878757471283900396376 1.0289464400131685085899153054854773 GT 1 -559228291361856949819647746660345558838625.8176985607124904790735886214018500 0.4251656725390949235693722436769940 0.0986564203347629079573268721977295 1.1038687625802202207075779453048429 GT 1 -15029360218278183709821.9281239953038270924223497803373938 2.6775494586663752479903417984632147 0.0947578172101104701462827952207570 1.0995527657894249690767609511267620 LT 1 -914063055960.2279592070589094419337514860799201 0.9337786368949509599644683418713419 0.0892388259396379699235709251167291 1.0934745740933926184452994176609992 GT 1 -10595958604754982273184.6887728180471318654548240049403928 0.7261014398076823442014252530333286 0.0552016288132000871908761109899206 1.0567837380771852932337739547810278 GT 1 -52228457625310194108.0728222775594286022704488784579820 0.6832841181396798064390955606195882 0.0451195067453364220793424578992933 1.0461690842850455905896225824667060 GT 1 -1186886.2078098252721432749629204786280161 0.2516617919856967286899557866086952 0.0856333680115118322138501431924523 1.0895236588685029014675615438268103 GT 1 -1160241808676938630115893729231122.4127243581022468187097249499910245 0.7864870265895059645065710095119286 0.0431190242931355132013301328240793 1.0440762675661858735170667672447962 GT 1 -7574240828461883952513826768094458207870.4132091022243260131726124761213992 0.4880998951915882716922415669153935 0.0340576131118283537368310803813416 1.0346510874507222235391908368496779 GT 1 -1481711239772554618.6025976814107383421908879077443232 0.2070068089414667062127275073315823 0.0357892958234042901813525323592070 1.0364454354578467096373635464806469 GT 1 -3713972250583929209985928039.5404509289818123748584690433360996 0.2401256170641997555248147441876375 0.0204492961337508543572023913224882 1.0206612778875361436524608277869914 GT 1 -155054464586264071212397138097645074928483.1791441208499373169366836998287538 0.4315158003464973340209464328737871 0.0027660735954498850004220391102952 1.0027699062462452498519124131517920 GT 1 -2394596.5902671744557903448170021136567736 4.7172890941539929139432312204047944 0.0556531423438307968147061941771712 1.0572617463661557617001153335589724 LT 1 -282067747717957454407.7391762423840110379095843756630319 1.8268454549211645450880058937964751 0.0744640332342989754755796069133550 1.0773822857402226699641509164933246 GT 1 -4460854983452.8693709794293562307515708820163387 0.8342396131176560484864601172159600 0.0761929427795874188673684336995088 1.0792520416768460768596543559369463 GT 1 -18902521236037582257274062379404.3079318178216285981729753704273891 0.9044031070678510135456060417200221 0.0933863402099514582594898192573978 1.0980388735361170579240032015046655 GT 1 -251545625879783937616954018002446077158.8386303423227837018302259860718029 0.8571564032936195638744026434438262 0.0387470807184492902732662511698401 1.0395177212029929786008913824433714 GT 1 -28980512153109375816572445366828170.1442973631435099345991887963354266 0.8066847219832070093397727153940319 0.0871942415963299387912696687541932 1.0912321719488344054376725468088602 GT 1 -7130193231280848424.8005115827244860113800787262882851 0.1105901428761878545170643203984045 0.0209973983540777958566305718816275 1.0212209790027346010963935077088935 GT 1 -11659052698912.3961659404806731956104316658727923 0.1706676162654331481692901283441376 0.0554447746943909826080943939357215 1.0570411233363391192945470887359443 GT 1 -184058944341258146.4644178376270809284538660718286736 0.0867698560534551041449565313118501 0.0824831755777535613423534002546076 1.0860843619765816897329244839050402 GT 1 -29562764220112970622940846667621350426.8826719689809479011873569317058783 0.1083862289452250614318755128278822 0.0377888202466307734839078910964028 1.0385213308346165696500706167491622 GT 1 -475228.9491899242481166847437161809739884 0.2070298111612161219918376321814153 0.0797039761533586307155551863938023 1.0830598956436261153824836322889222 GT 1 -47835061473.4697352263041263981636896273506643 0.9529388524539870275322128823693228 0.0989630983975151415432721313282580 1.1042090659389163100190955195258011 GT 1 -416284638099742128665873723189.9557778943255445278741527294029553 0.1187592675848378719764063220291883 0.0622808515426067604011318871779922 1.0643047901002455405840384987144427 GT 1 -63401744247550272.5162552472385792156042060980941930 0.1627764448992396683801622681297582 0.0166361125199318625875084677072645 1.0167760467854776358987354118833915 GT 1 -294492793237869281358344285215.2861805526654267765963576373216185 0.1847740057200829018712356344652809 0.0285322710492140871024146585822403 1.0289472284716025051241839849678392 GT 1 -2037051344823274907289631654176204116045.8059122246296547240923055043466611 0.4781460904212401500149121642733656 0.0884455799152694874683077940073062 1.0926039827676978502877500355433365 GT 1 -489310979050878931136660.0161804080860273654893018604222975 0.6572742915269559694924057145230353 0.0498555395863240486045936194698673 1.0511412423547036980169128517762613 GT 1 -227259366929067011585407912596670768815.3914323531179460645715517801425174 1.5853662840641783309714541279576720 0.0617281559861440445791925146098404 1.0637155595818989336867850426503659 GT 1 -43595895053122219535056736858396.4504539404771780240548854752830908 0.4974952788373040445714794184406923 0.0596612898104620588539200176095707 1.0615151386324771686953893469908705 GT 1 -34323378744387313011995977264868.6897442822776375382292733548392632 0.4516152779516465413990669533899230 0.0282763277948975537473483666744739 1.0286838027939833619567848352278204 GT 1 -2668245311161639317.9629693897888249661955744574983560 0.5452317017817170444090606061216972 0.0906530272296883814590276409691233 1.0950285494185423904327207842053183 GT 1 -33.0696861564310808381637363101487840 0.2067546173332970055997614911468999 0.0984803293328583094286089923969397 1.1036734166465426619813020812311364 GT 1 -23619.1242223636403108892303018781757002 0.2895285456019197665686540374385227 0.0470234466308280170602411037501308 1.0481649786010316139734184291354832 GT 1 -6324350173977446408027255458151668010026935.8488450193475931153492281252277484 0.8205045189819313829909503365581254 0.0386124495371852857279463128252491 1.0393776729895046250474017977862713 GT 1 -7014105476809367809475844.8469560120922274787933867732915241 3.8771264669655187044454194164019029 0.0538530090171064359573739025521345 1.0553573404120450752015521313302828 LT 1 -864575.6356883914286365814394472534515463 0.1888372780637156798428783667294308 0.0735998166524834265603797716873786 1.0764489742494399016089219005148386 GT 1 -48242030815506.9419686662287980118834339498721296 1.4682547267799275297713112341554713 0.0096405781042456135834698985770519 1.0096873493211307174028179718768925 GT 1 -5244320883135794105.0207007907330999235609382503447678 1.3101737148675174279388226443002402 0.0646316434007041575000697307217310 1.0668148629996781033657577831350143 GT 1 -62455700226.7018291954989881629706250273323268 1.7083979593441277964803013385136814 0.0921279749911520688483133171473036 1.0966518519342587871933057959145582 GT 1 -81187.4348824280597055509615165124796850 0.6911283233837050228061670501372235 0.0182230463476626847676441964885165 1.0183911312002677475807519423046645 GT 1 -9586165818342242653523615966003247.3019049898989171286062062179634764 1.4022781073599554414671832920477450 0.0151325278572616199087428164399296 1.0152481929101609858290783529279234 GT 1 -7623943430826830131210411324271.0905013873805416158657272458126597 1.3735666870510170179542579349171142 0.0775288638226469542991942864090800 1.0806991922535925442364210934910541 GT 1 -514082746963238.4875950190213184519172250035381491 0.0410610097593740541962149335761364 0.0421064842422079923008164390649535 1.0430186598428523015170233286810097 GT 1 -18920438941954569.3174573585914256342284587613617931 0.4241976645966257365495361064233214 0.0596215736390422946591670971761680 1.0614729034971090578189849587670335 GT 1 -267236585464533299236139220273828393.9984995784699389123735954982869312 3.0686658133006867867891110208461859 0.0917670211057799045611310139029386 1.0962543486077999645516378073423823 LT 1 -2499130067607554916663295535071922.4288855044570097117843417757929874 5.4455478880128984128112323553499710 0.0881926202609678474023898971647115 1.0923265176415238002709536109682419 LT 1 -98268550427717893259511981419186.3505224010287027020638282431573122 0.0091545950726018538760553737632570 0.0024710240796473774296565413399400 1.0024740820983123578338392409962040 GT 1 -9817352.4336249199214224954149679836741410 0.6548903412562729721287526371679432 0.0992380022423193813705138520393086 1.1045142097005591299062870189675627 GT 1 -20450969999998783012604067142689660322118.4706253449102811094158007302228222 1.3345697550072770307983586990024343 0.0567074631102377583306546562423121 1.0583788250614730486432504628568670 GT 1 -231098309940266321815723750154.0226765344007091617245582178079725 1.0892208571854188369901213381376438 0.0080326382602043028100510406000185 1.0080650737105097045464809077285298 GT 1 -11395745623120264615.7273759669494235472057248842070886 2.0460603615407509278904237616232823 0.0269560700023074224963256525291189 1.0273260487940515931248908310953917 GT 1 -776618105.8240574481610622494682227890071319 0.2156114706227781781639489266119777 0.0626859388932446194042769350509411 1.0647368756279834037134695268437694 GT 1 -4087703007661294283534793019425369994884195.9762643725606844265994045891234481 1.1613469865201009010689225291664475 0.0909847529326336575373411808696980 1.0953934114938828605564712978555232 GT 1 -11.9952682380699298758262320823773111 0.7768653380268155808152948861887892 0.0308757313529458879780644272900813 1.0313624310961514276369764665834843 GT 1 -10608.1495460589117660784790820191502465 0.0505463654927969963638668652823940 0.0834658888913233610663185523362516 1.0871559935093564382728578755498005 GT 1 -7798893371647979615808460648.0670090302810962785838469667831714 0.5518447539374648297021123829725658 0.0542135244066171476434641121332155 1.0557384483106506754364034204200811 GT 1 -5386211675502182524927040074865.7437392437252943662366768502489058 0.7806011151028888617252507661581436 0.0124395107697962572713590552494197 1.0125175291662038984508960477313681 GT 1 -702.5859268188951471405491414649820134 0.5936967735527756188216165018439446 0.0737989467007180625931617123157068 1.0766639477095266894939613174292974 GT 1 -178350753319440715211086091228684250.8936980443843488933243415508804107 0.0924789023073374582255310893273092 0.0865343485104829770814079256919732 1.0905095048677081366601086524599351 GT 1 -29990896329799775513568804.1133575695902183794734743021762434 0.0836760559003848117406728859165070 0.0234782890128310947831199222695722 1.0237582954387601604976366353094219 GT 1 -21222993718344000287431944249430565600.8085445349466039591523827559984842 0.2285566152941250827170836897467415 0.0625811229972129583584922061992259 1.0646250560786383424652003135030685 GT 1 -47677246899553905722642900214679495986.0149744157269295054321899791651986 0.4125756528817772237387946262231711 0.0806582387089848004021802448573939 1.0840973418723615599581322388072786 GT 1 -100.2195269158103337516610661171506284 3.3286653755616146622159584466071080 0.0314554919806966990204169736486221 1.0319608415696370361220713504302856 GT 1 -25664278914583710154878823811.4474682539206956138335497069130815 0.2744719801547157887731662734995493 0.0649103240874039900447480986451181 1.0671128442255788570578791924798265 GT 1 -5449105189268.3591118388040450580596260824925872 1.4976901794845108895713626215423425 0.0009991039772993956140319468772205 1.0009996034143655410516232173101740 GT 1 -79242366560318218566272523107498346357710.7395157999905689152252409385789513 1.7612527853973159954274142704650634 0.0508886359261305627485622628989940 1.0522291383910114118792626662061711 GT 1 -4518696383914144.1326341314948597937909243833286083 0.4897790439472458118715586814707267 0.0281624433200633334379516314400825 1.0285666112455288872301341872485861 GT 1 -8115073114510098551794922797465.9965835236884618484367438431438519 0.7112265602129266452172881589291728 0.0081401054197954546987196890535099 1.0081734169741219069789600949097451 GT 1 -16533507395194199103.1333438583827053212771881702167520 2.0773100272053122448481898238386938 0.0014133394898192782375445720785762 1.0014143391961366555108163293258485 GT 1 -5306452806.0709241111616074847278005172974681 0.5710873770965802432883513096938976 0.0373928558797909719449421950325001 1.0381099004491986682624416641452628 GT 1 -191957889133302650529173290722666878.1491130461979820904067256988096150 0.5165050716592960511970008868971435 0.0652715436118073090731597432291604 1.0674992128489833537147563552175165 GT 1 -401532900071.6151556641069435091126112840486386 0.6319557071784888002820792720722970 0.0749436754829651701203563086110823 1.0779006519537486775018727487838700 GT 1 -75693240160481.1159565207258946975322313220202300 0.2120339449837407784453871869242725 0.0603428719316201085293419306141671 1.0622402276323035500928489257098235 GT 1 -89144433354784986287067384558050813.5716196453016129259501868768312941 0.8739791808619241755081082706648522 0.0951925009354147620413797616277898 1.1000330661237398971243019666589864 GT 1 -793495273883646.5688296407779641911503477509846870 0.2141303134260472965092188423078801 0.0310880111449022275143922832935034 1.0315814979912970170251878553320996 GT 1 -80179086.9430464512071782538713425234668008 1.6686151391500855828039530607677483 0.0016959964646986184279715360467741 1.0016974362948976653011615778896574 GT 1 -31469105222405348335665.6741268276291974719710462842234720 0.7803852332318819804865460187330841 0.0599271162850272821976571336073136 1.0617978708568451859874933546498693 GT 1 -4099176900287281729276957103905043.4306378884983366708848651200873724 0.5998635254983752705279799702272711 0.0102308477928129509303197040063326 1.0102835426327886268675968715080507 GT 1 -109226133058795118577270978785.9843855633440041260897022929717992 1.5099325145406665575531656803293716 0.0472429955634123944208242328383153 1.0483953874456011059940498069388282 GT 1 -115000651804731.8221401373634595063259636078597365 2.1016462291613357592539318377674585 0.0465605655179040466502744184574425 1.0476793751178781658962397747159291 GT 1 -22601506237234592437406684179620227775646447.8082945478064291284861004787650435 0.6287229840926263599863121333246221 0.0674438191977669076781503601722809 1.0698258817698775803774787731502864 GT 1 -672008044653891737.2551224304009485872363854996737192 1.0192334137137949270831640246845916 0.0344348197145943887106468942447887 1.0350416700339563126442506766789876 GT 1 -33135356.2623350526041035187706039123007812 0.5434347389528030244913304115146470 0.0493466010383465815631890586878950 1.0506057424248935237019135770079059 GT 1 -3231207152986136504913360674334.6552243462302132875557705412348110 1.6272496787140715638664035801588538 0.0965146473962084403688150637807585 1.1014953809199040458748630297148544 GT 1 -24663293148624280985240016078019128.0985769352403758536029914247287918 0.9071938299604982947569656075459337 0.0906406111551501225209008613421007 1.0950148956756397425013677280292845 GT 1 -16476310791558070935668069089542397288.6050026093197084074517902198782828 1.4549772640886498454123288132528091 0.0958358881524152125460993646940735 1.1007443954118816245557530400888851 GT 1 -223227.8820308364698884389148819241097757 1.1275258892616303267123208383878305 0.0997435775753391302857130811073965 1.1050756424328780188786730902825806 GT 1 -4464034305146376075367956879605119.8625051532718338036520345190526970 2.9076208795742768187841155616754941 0.0015485238668448032973859243451511 1.0015497240691158259732916110032280 GT 1 -6291648392458405245668238179182390.2121905245528004689492551841083437 1.2190979492436140069503520896592178 0.0643744227318723146269577379702960 1.0665399068217917685070179276227437 GT 1 -7.0905325993216225455712320442085928 2.2611819674476637652758921930596047 0.0603001012992845038482757739024775 1.0621947113927239763398552786210478 GT 1 -35882297.3212764146201157036220042825619047 1.9593546043842940422680031283462766 0.0489366351127559476266071267989831 1.0501745889116734693914658739307937 GT 1 -26445872742358708265464314766535907229869.1970015357618267076052236249557039 0.3428533732693675432915318979573909 0.0793609664854619090737069776651893 1.0826872484168871559032676228640275 GT 1 -2805081530703272135844721299922192929.6720052289412731678161390904344636 1.9947587944394820513055876525675132 0.0241169181643618264116621067085645 1.0244124929460135659831736937254690 GT 1 -9517479531267869643.3805754668691336976941504535655896 0.4825617768658508175530165545300988 0.0260310319936694672850731798402495 1.0263758362102644372488370721623199 GT 1 -873546711814821018812831310528762124.3423770626684587832235764898687100 0.1194304120585757651697273372166120 0.0468837679890941559200086816247237 1.0480184184303460799859132120371671 GT 1 -5.6480073343910510926286942582651935 1.2043912968566811823720915672939117 0.0019328952523118333815618466793873 1.0019347657049880688727539904517140 GT 1 -7314327575329041995114616221255821019153.6357976159905193449169085441720723 3.3629363712544599835649667048963237 0.0955663206426898688117376077798059 1.1004462998230974248065260488830423 LT 1 -134788897027625367352.9330508665724519481776366579094400 1.7844725736128910783319324448296613 0.0524444649970821417942555465895837 1.0538697316028973179264773276553301 GT 1 -17049545998908564321074.1364580076949123979958609623090945 0.4867087288671245781749901627493211 0.0937180047256354475054822459644936 1.0984047683061306661931655075450367 GT 1 -428766746245783863529761125.0199727033465980723070051893348260 1.6214093244622237510264052304202441 0.0573610477647044430486392905943301 1.0590719410992519301201548748064158 GT 1 -1256619483.9177034515599557641291726756251066 0.0008048989810823266360758024306274 0.0444141715162688764492305696690834 1.0454306936072421830263111807833881 GT 1 -47511602309788831246859404080754316.7863261974621020941241282813397419 0.3705535367702280237236432561730648 0.0408459893039478797662487019334643 1.0417036218977657741090687334615345 GT 1 -206290301397029806.8742809508779308792397489245669042 1.8366866087539425928101515374769053 0.0897546887367290449276594289449478 1.0940411429826832436018547911296279 GT 1 -16786345364667259615033168803.6287022592254080573548728790892544 0.0186873815722128303351893635837159 0.0187767395328532030518693683661326 1.0189552607361607657263882651489090 GT 1 -42580833908550279857254569495358861552.8251628181126121397202321897713385 0.4167717906173566743658261166117291 0.0141168921872020692897012071164699 1.0142174833213332809505319478483341 GT 1 -1330671915397868822348922827324327106717894.8553392552816239320471253220826431 0.7410116722876795470026153854708692 0.0084618447484606191394987357330253 1.0084978494111857148106020019776279 GT 1 -41122055759.5543283523116946865891384089931256 0.0353352282000483732496232323334465 0.0890717864804240738286295526323311 1.0932911844762373517197404970234331 GT 1 -107020899538681318104.3745659263655667231208772194328775 0.1925224461790146605202883487696616 0.0757885410999177430979148766243733 1.0788143818995254933389486007200355 GT 1 -92630505032245775070.4136899644545893197586951870582663 0.8995273275096686413881049690133379 0.0142662394040017406980629097071490 1.0143689805208940118983753894508065 GT 1 -121630485620757.6974756237049027451285598454808139 0.4118227318112843255478306337285574 0.0867258484733136390693904424410342 1.0907191679661044980972425614401772 GT 1 -1776418048582581739376930742378.6181397362136803378123709234350347 1.4780090980728130848044475930534848 0.0299071333759598443286270591868140 1.0303634732797035244168377952414600 GT 1 -293.2103504900479979719308183472769651 1.8581149076687694451619536478237627 0.0627846284932792245842643576484252 1.0648421709606773199741500174377735 GT 1 -133365549929292530684.7060534378020272599483278444881198 0.5328286343595298886291509712555779 0.0268101093898274660562319531154495 1.0271760559091185598420138533002898 GT 1 -25434418832035857667353197467552190381945.3364032919921231869888160093975005 1.2312306100512600183593410011206310 0.0353576033753643432287040198929137 1.0359978197684316443112202037147080 GT 1 -507748743.6171989113500709435388034188383125 0.4017663471895069451111480964720725 0.0339724954690158944174876034933059 1.0345629725755933904408937457420861 GT 1 -20556687178507474468.6325923862153267526435407271597911 1.3228220273034109310020416766696883 0.0477485111725167007186392485211490 1.0489261101408093767115828525347168 GT 1 -242278221159520607338457.9103595389410285821253633881218433 0.0957809487837549925957328601747457 0.0826746736561964829082686663370093 1.0862930971847392683575546113593096 GT 1 -451234709.7220843157784565773490097417635749 0.2801133195323388356073180672152641 0.0263260920547150122748739496446807 1.0266788281673075784162768233364945 GT 1 -403954039262452308089730448703357579760418.1319888951891981315097831921290167 1.1192040484192630754832610346417042 0.0071970337719897404497003436309032 1.0072230573564665226026200886998770 GT 1 -3059191938931437958685219682049930554340466.2865506932431773234543173421661022 2.3985584051935185393823524495717210 0.0859545129124813530422491087293056 1.0939136942860288345997767683143524 GT 2 -32682971898975140.2357827404309399071375889832016890 1.5520898547265961188689256626105668 0.0314427003151896129521407506141671 1.0319476345554714431404360362901458 GT 1 -401200.1665883126643510981908625960753262 1.6627809018210736794115964193044625 0.0242063694377480153567773482920100 1.0245041590225523613299973530390419 GT 1 -28565978742637238.6738177244970994281050988786834020 1.7277669830169585130165634506229424 0.0842853729720802175639542984464017 1.0880505053934065185692830984365851 GT 1 -14529065338809975162627.3355824176793657203669748278313556 0.3474522263541617746428026782101079 0.0238049089510202115793012406715498 1.0240928241742066220424651700679110 GT 1 -15540639.5382221699841410396191444602297974 0.0480415733385265446424738173024242 0.0001635850817922860894682300775231 1.0001635984632911408693310716447656 GT 1 -1669228330051.7197738986152693259685989343468111 0.3573905289753997054045001746214326 0.0293408614742698385994918144593821 1.0297799140034463542777098158306926 GT 1 -96205.5237179447089552532026059899667629 1.6080075690078921627778896041338362 0.0971817834850265059159767013084145 1.1022340564455005564889279097960694 GT 1 -3343702284021275121275910335585747392.2844868364454934708570254371358950 0.8831536967724236033904124919148314 0.0644896352032881483277283314866284 1.0666630539101153415604631314879760 GT 1 -5983878715526926392229225510540.7433495041246616128155303777796936 1.0315418782141650493951245470306114 0.0222346923911324376562966722343268 1.0224856095152262039067940910073163 GT 1 -126242.7309840945991197799872484521703458 0.9277021449452827376926407726358559 0.0848863492773380329763366700372530 1.0887070129797776136116426580722086 GT 1 -839113948213285295.2805402227191789030182625594321005 0.4929591244310866843955576129316392 0.0351852451116906077855372647225898 1.0358191599168800846278344593151689 GT 1 -23110406256817273611681614001718817.8294877604076839434153423280065526 1.3513547860765967744424063031631545 0.0865859694240601276532224458109771 1.0905660175259829571827685169489375 GT 1 -100.8066774347116956638215182288730513 1.0012065796916351424684407673521382 0.0472160767957355390758526413604980 1.0483671342947102745240927868893903 GT 1 -12924144170995696817495894.4329974693209840513959756693722623 0.7311914323347051269117834242313952 0.0960675082207606654244725601357800 1.1010005986137988387483202181273260 GT 1 -16248859699657792063199935241829710725243.5993858170313949612327374773079086 0.7378575782395146548077446488685178 0.0992851899878757208671413174628335 1.1045665975474230029238066793232538 GT 1 -343252177829779066337403623.3053140326189196226820933490023916 0.4805601022400405848485803906289001 0.0241454774049100957946332216052202 1.0244417583969486446451162929177892 GT 1 -575551193.5818962347778451676497137144879466 0.5339372422382785822618559524947799 0.0542255721697706895990735579299500 1.0557511867460157743217610112628040 GT 1 -5833074483657756427195752143675439755360.5472430965454072606612996732018596 0.7741774695159108462026440821057138 0.0253830504225672408499644738661279 1.0257107574070768920529056881327601 GT 1 -1595754.9849535401575065427331722560910443 1.0601665021448140598184207815125188 0.0957842649918572598352250044908172 1.1006873021406181409887238992642175 GT 1 -100.3846962414093856313863462419153884 1.5584330628666890390652408821599637 0.0613305449667809206907687319907537 1.0632918798157680055452371726314582 GT 1 -13903736368071445.6788244509498829069786228820612339 1.5454260787968106160757210547639653 0.0900948982873723714646653629498144 1.0944149687414555579323078767086455 GT 1 -60837271353146849816539676.6742700209944321803856558977734691 4.9316488504666219340440217493251101 0.0348765305146903196088517016236089 1.0354992381745833219074796718002683 LT 1 -16715036479299353124.5527963813205820187489928379997560 1.3729709310385851302822774400225011 0.0881829197259955593643732554011161 1.0923158788996281029670901986857801 GT 1 -198564667131583204461797830086346897323642.6618043868646408415449273714168560 0.1771778867934008408453885404947966 0.0705656895358189091491980019913434 1.0731791462231457140028225689090753 GT 1 -67795315131889404118.3481294647838189913384517305521541 0.2519928157024305370248446582895082 0.0235746571747882840218886036034135 1.0238569854281761908659766916477487 GT 1 -1163044504601.7224214373971734158940011360679982 0.6094525055044933259965226619499097 0.0282195889074219529476235932664329 1.0286254145580343565103375008024497 GT 1 -247037485566317876648418.6656010828109649783162365468148394 0.1569373656395678702997242276308422 0.0307660968464957225583893965084695 1.0312493100969862061139678626835949 GT 1 -217070909809033412130292487109.7607367889102265890022722831918607 0.3746363931358181174702438275944314 0.0402242173438139185147430909707708 1.0410555815327167502497251380425820 GT 1 -1632473441497081241.4151021977751543483249243535008588 0.5916172334225726809547167627901670 0.0977787277654682341139084923457901 1.1028954761052085852946404425142057 GT 1 -43088051.0617686143599920899543366363554368 0.0939092342845597038979726192173922 0.0729351640072332861047300304066800 1.0757317741223214195006837628251096 GT 1 -49618146462020175810926607.3606925974953001691561402763205711 1.7131290245842332848096202940496690 0.0532339107098338626538016375676114 1.0547032181115556721585429977058227 GT 1 -973745225.7261728360385970535696696480096286 2.1451159242968141138667962390468448 0.0762766381478682790344844171945898 1.0793426441020880149520213882447124 GT 1 -244.2114696191479896666619983047841803 0.1175973559402997987416445843248932 0.0710666132203131127342478575241655 1.0737182469590970088706791500479676 GT 1 -84592478940852900853.5747129046948752194322195157029291 3.3204656722371724689154785606178053 0.0730983879613634656400614522492533 1.0759078549297440327937869672787801 LT 1 -49577256553332465659.8877316282539044830900218001234598 0.3159941522006311063916147169833688 0.0962100014555186305108524194053796 1.1011582480714073098658628586653524 GT 1 -27292620609430650673793026731763.7260655604971384926890703079673323 4.2308370829725681030215994385886510 0.0610551931592500903346345929659996 1.0629985801587554578753279429895240 LT 1 -58749050572651475539447907967.7309813852743111755549864584321852 0.5685981591362576382188295746373777 0.0894634946007192278783364798369216 1.0937212868243806613039729890033749 GT 1 -36.6957158554663261507519144868586539 0.3112560935664039330463769713903540 0.0736384367884653093696611214777478 1.0764906635125728452631879485059285 GT 1 -87837725341269304902650949666555.5902545669608635220545171664087887 0.1288847833960538825924517687151997 0.0322065924814664556425575928263610 1.0327366364682587820136964702354209 GT 1 -42.5753598650800132818548707960592948 0.7940622042883786501923890451238633 0.0645419533321754330850963580908051 1.0667189801658237083558686032997166 GT 1 -839475773125303745423159261459303704489.2598594500037243542555938925039118 0.5813612431401487583609604973765175 0.0237184403987148951296170110368536 1.0240042509742832849102958085857306 GT 1 -7622463708978035.4128253843449552813908975079161727 0.3610701291435563225047043344047264 0.0615850426467943069837776908373896 1.0635630425614532140722850903719548 GT 1 -10585774295.2706442914611509295914445511201272 0.0827303268828513383485893438490417 0.0530968097976725368172544229789581 1.0545584188967343634151226588766376 GT 1 -104582865587499214.5793086614105776393842683628171191 0.1657542305955370000381842051855579 0.0291514008097642186885616866664760 1.0295847454121226876607645357381996 GT 1 -1851505253.8713958643072084800175458713199638 0.1049181443066950625049427159642849 0.0021104361826450172355958580909543 1.0021126662913059747142017978926812 GT 1 -13842076976627812109202325057.5985458490863961918862135890975544 0.9796577925601458963395006899707558 0.0817489061144977847720800441591789 1.0852844030110827581142270825113801 GT 1 -447829482520008485200433961688568.8516784774628173655036294265621188 0.2749966422447498563624252458608439 0.0030319684989031622914031097755708 1.0030365742273640877595222419839645 GT 1 -7189769140731453611.0841230795222956109483323597807444 0.9118460030461729200833175052261150 0.0669058760021752733053587279842562 1.0692492000529278804228516090327768 GT 1 -8275865699639872993.6309801608382075275419138843094889 0.0195045715002554323231569061282365 0.0398757644968077800535063230323723 1.0406925909107714694113836103960934 GT 1 -106354609303835313630174943255034088.5074342284627918678112869726798489 0.4194054515218859626577411172766389 0.0654169591448726882982601446322778 1.0676547947662541222678045027504929 GT 1 -49815635918555075891421596872129907.7016940576656018256771259253149162 0.4555569180900495533555575276589607 0.0968473474052578568225298965509115 1.1018636893600597511926832045850777 GT 1 -24837154316614003243495370849.9917829130154429286217449737427966 0.0738636100976220738879744313338019 0.0003720070737961126466251869829171 1.0003720762855929740610135612266423 GT 1 -2816339065833847044300174072494.4506943515580356211584082043174073 0.0640325596599849337914081945244224 0.0739629862848223919378501745248551 1.0768410735201387269198554572585775 GT 1 -8120041401308.7779564568060475446179720887420158 1.3879306944182145239862348870574472 0.0915850925969375598464397199258910 1.0960540582699499100624257401954509 GT 1 -39396479484.3461580144015403862237350735197281 0.1729192501203888208173780793536979 0.0125302532926762092379902496887274 1.0126094189219075399238660733458442 GT 1 -369057567667415812415407938298523714.5581372341384990742954708763621196 0.5845369100097387486057104456337998 0.0776219892178964759413268986595786 1.0808001494461978054977783204919283 GT 1 -131954.1317902900432551909446050385586118 0.0722116823827252340421117046261429 0.0178159211647250776159129148520830 1.0179765352057090840593570071490430 GT 1 -47910950474609832.9161564673784744473682403105715551 5.1446626227259527250975222823305477 0.0323802431943073171818773677942520 1.0329160820941414262614729552043074 LT 1 -10.8170710554968435690391264785503545 1.9371404392678589341071054600586734 0.0743298370392039810473476600258597 1.0772373032953450841498644673311476 GT 1 -44413956050805.1444045799668910116993352904341436 0.5712625444990946121170923595947378 0.0697598238648632049094249139505608 1.0723124722678865708177658578166835 GT 1 -21164201220702281045320151759347346905999500.5703137109186825559409852240932621 1.2988175020556940048812007093698313 0.0759936080524090732592845814053497 1.0790362896721820423198885883020667 GT 1 -4089417267737959264241730502987074703649529.0639160851646209464665584209402901 0.1471682526545641547597467358149289 0.0729597763820188198589250566531769 1.0757583231839934118829605644968218 GT 1 -7366540823542573835515.7552964623220779720066744007461218 2.6950597282359127973494214525899594 0.0696035034627228621800926273326109 1.0747468536810556915992417136937221 LT 2 -51085682944190937444559094.2299719094026378633656071733364944 0.5993981621783799913823903757449574 0.0015854055234170146814392164465038 1.0015866636086465302060788196170207 GT 1 -14.3053874157176138404816553645306287 3.6899513912437603966179450192931370 0.0424276554019875943664824317536098 1.0433540050655854872692225922192915 LT 1 -59986995950708661155984650947400.4611571293478729888956552646057886 0.4046610464320495193621138125041993 0.0895483297111416137662618953841229 1.0938144616309130565559582437004592 GT 1 -781640192541890319456146287655811578937.5848803677742720110200220605572220 1.4138154962573174695060105584453521 0.0538418219529015560415575196302400 1.0553455166698832918480461190623804 GT 1 -137558962.3150421249381705102633929450667086 0.8223944493625870579114354349939907 0.0668297321826001893087205106549788 1.0691675998038406934246755020409679 GT 1 -37799912489473.3330661154462243030793805628629859 0.0878809998326005709731254075837233 0.0355298575023951019212269791881719 1.0361764035721188382841264467171680 GT 1 -30540258843505918134384619401665.2123601583604951764124747603187235 1.7621207799353814851433396680807255 0.0422547385803378330540961292341723 1.0431734430307811550188109289661153 GT 1 -157135058167288592402348159.9596684975209209933732252809918856 0.9381773522632209718771675441132302 0.0386686642283604711667919909091719 1.0394361471550143804359422781676110 GT 1 -3851007177227074012625812028643986277534.0039916187582285922532085062393704 1.2016713345173087992777970357593907 0.0757107700945389073068887850615297 1.0787302369425928812571902913589275 GT 1 -39917834065254567650143758421915786421.1318756417281226978531964413332066 0.6244519620824646144269034472010973 0.0349239789254228634728415643554221 1.0355484024303756991460266683878138 GT 1 -3877242573923875532385488.0421882951320118893292631017094272 0.7759838691191406511338016876416440 0.0062710925867822359171039221468006 1.0062908384834148274771808583633451 GT 1 -1474588815856649.5507822373687219639501654559517502 3.6726376651596429514763331967480558 0.0426663457615299052539913987069721 1.0436033022748725655303775786530029 LT 1 -526591345664778516.1565818640043656801813486932887818 0.3745665703464977346292661854102441 0.0422250018902241755904554824066820 1.0431423948703995453517307943646027 GT 1 -896527978923572913.4046155589069932031897727024469345 0.9950493113411927352626731004885907 0.0222386191163359783210174800471314 1.0224896255434672431127207533077699 GT 1 -833473576355.7109693518904187749562919799455175 0.4145157832352862387436661573520888 0.0966839621623074247107323747885282 1.1016828002649303696603211883844027 GT 1 -2774447395222583335564657.0674116466916954548368217861352971 0.1833144075870602495531698213437430 0.0697780419797886384463255590691387 1.0723320567728238743461702794615470 GT 1 -33869127657097012192416811907208.3762773614667988781737616366335093 0.9215170489135942853536771583182740 0.0002436312196606305262901681855284 1.0002436609025674469440330270237625 GT 1 -1035133249443881533185.0102747986647301577961174644722339 0.1808280959505897282078304005920399 0.0279211329947474694545628179442379 1.0283183389189872838538528842317010 GT 1 -22235356026169990407684935668937312239.9053799425179342937276468927800451 0.3976262546752433123147002845921278 0.0628326675763080164024959773452998 1.0648934295248313494366590058762294 GT 1 -587244155574234736.1326300160376068199033016364189152 0.3101032322761270888714105736286061 0.0936509124927271119003614328763604 1.0983307408511495721035620838493880 GT 1 -1299346407653294.0988960935860946897087665302180741 0.2476055410145196464366989127932671 0.0874159651548532553174437253498446 1.0914751047848059899496381300198347 GT 1 -838066049540026605141361881392445780492.0872220415974054882090437427944023 1.0163135994685075049994114930735959 0.0121332332155323310296445931656689 1.0122074417602662255820740193859114 GT 1 -120536213584568463738239343696748054.2686357504007721889862291621087148 0.3968437245054801939317291016158834 0.0019311161002340937243622160790652 1.0019329831089246156509632502932981 GT 1 -654378556771661503927819845590784.4035917566919544614581563350127584 0.1060382580950590050994002285464143 0.0522399481002014312278949740634537 1.0536539185751485055758986723997522 GT 1 -645712155738.3683397128632963733954184733188251 0.0295345142358991938362475987549336 0.0569217989913010901397868294905939 1.0586060718880692823986670994341268 GT 1 -334723195224723569.5020827185025237066421832144959238 4.0443214983200630975749152351908522 0.0245360718184849909402053087526526 1.0248420973766125725714464457351839 LT 1 -32.4363810735061430461917569004980286 0.3788302873205065217769157793502676 0.0012111158974814752410424145491677 1.0012118498910340659355063771540111 GT 1 -19754744187600.7295511040929811690511691874146526 1.8230135049802625863809719631685228 0.0076957759534526058102569444765661 1.0077255412469085682374058900816416 GT 1 -16606049492889938572936814373699162168.5289844941422709970567664605747073 1.8190758934766761857792273556179725 0.0673403923298542355204244683741387 1.0697149810701752870516714853008786 GT 1 -93514766349210112048317191898898.9862305699954171580655218170177066 1.1730523119470726028334329255377707 0.0897979386874536291765837166660152 1.0940886587212695512071794848500753 GT 1 -1639346350184914124366080753858894659672049.0100084655869846371355600643141418 2.4615694400729599942347464776971324 0.0121272500275861851618854891777493 1.0122013851036114198052653889405745 GT 1 -55719090359192571771854435794731.2662707370894713008445100428193318 1.4655392487426678521020259797869356 0.0947420972818638558293722396166967 1.0995354005008256058310642964916952 GT 1 -308072067045.5616339202712442757052178747984728 0.0717407843065055801940133490550786 0.0609571211679436928650317877264145 1.0628941364585717543806403515607333 GT 1 -944441650321609314.1996440596355820326798978570354317 0.6135405161389363528688117955553728 0.0239984053241214274263951159671310 1.0242910586811595122227219651468595 GT 1 -28770529033415291290354383030923829063.9195811289797707632014541384328548 1.2048861870272281876636243055644507 0.0722114580212372123712360143677373 1.0749514364079612769078398863586784 GT 1 -52381615220737644696464642048593.4175491156458612933991973305257413 0.3615382798939258242315713531238577 0.0447973026500263460251051913914890 1.0458317124889363532359850087721607 GT 1 -888855120093087615481.6942706628472204287637005234772267 0.2714806434895978583890765815940542 0.0223543524418309145775092945107899 1.0226079981625145389516033574307946 GT 1 -3379532228950025666235.6621327476483830500796430514721403 0.1815796575216726011113227198227817 0.0802475733476329394535597119560105 1.0836507466181656803710680219634611 GT 1 -161506059704107241701.3826839604653274178228087164962340 0.9609147285320434849033287251892133 0.0580305088974459762450517570705223 1.0597823922948483423297890365488458 GT 1 -16458581710473998325526347965334585678.8034517997720368800411655611223008 2.9118568021445177306241172084030252 0.0429019046954115128512998677765669 1.0438493898516447341517113941247654 GT 1 -376426002705929396797344179033271.4312908788233912993841715444623763 1.0280858424529346321418654338785989 0.0412286288195038334105767961869102 1.0421026358784434871021413238762196 GT 1 -10548412243036356381937155336246084456343.1746916795607350881893230752463330 0.0489260439597127637172657548338233 0.0170410567447671566005611204258497 1.0171879264872543708204527213147381 GT 1 -785289821407406754772137042.2499255025392731629138415299158186 1.0062326498204109029194214000203320 0.0662571243768943748836244187791135 1.0685541724189905722531764482780238 GT 1 -17946103876586656466302368165658496227122.2463229517380965300759488607436737 0.9376994155296395921581966255549521 0.0946511744869397836632657777897122 1.0994349669902428597937132579353887 GT 1 -37119308564010854986773.1326355522033213445457555409153692 0.5247269361108242187408548247262731 0.0005242844305695642446650706847773 1.0005244219157079448227156725766464 GT 1 -216331773671831888929604655.1940898642772752486773311590988699 2.2840980611784442012225510700570618 0.0761683858671081122843279178955667 1.0792254597343250688484695012718779 GT 1 -282432761399178155305000196471.6363805756371841084250048294134114 1.5052696598283133641009935850036028 0.0065440657577804134692118597412667 1.0065655720331008678705042488572502 GT 1 -44697154739980897973826712566.6184558768695776397539224183082510 0.2902998254728612409172155719063041 0.0109082462969969576178693266065854 1.0109681774432700542546830847900278 GT 1 -40628041700035729813814894051.2774732124809199237457821291706923 0.8884651192843584919098414595111665 0.0996503850371811954672217047941464 1.1049721300194948440327817279801671 GT 1 -22949731573973810.3434729779578079883284352143161478 2.0673436874774341778763439962711565 0.0651096216813205945638957502009242 1.0673259990067972300443251193085273 GT 1 -263362615397893668007877665270137058.8548156476972994793992801790547560 1.5933322944226955554450450907607298 0.0186321869757717859320200914318654 1.0188079528641386453899178989410296 GT 1 -238407708100.8861007361894866465069206546556488 0.3698675956368519760364596911148309 0.0848501728742392834618718716591093 1.0886674816188109531587457954609589 GT 1 -1476590420804856885.5126366790553679191249623061500451 0.2602997471206221383938120357185454 0.0615655685581340741019972972915705 1.0635422906686511666837944496347130 GT 1 -1143344449747705436207962770868.6785739209989876541596486224657591 0.3940805888483483718074724328389153 0.0362842304822674292983432336029435 1.0369588727455120809666715930057879 GT 1 -4444788843692971127433452043761202783952094.6807630277524981061874814130456475 0.2318584838412299224938448934037397 0.0748003373728939319343837296196038 1.0777457132735293771109347576977916 GT 1 -57603189024.6371787166869691421862587372113842 0.4949141378705553958584365482830293 0.0922127119751105719270580155182700 1.0967451921147780500077763574838129 GT 1 -64362546331424561.3125886499048516197977043902122312 2.1095508233073797050118992740898323 0.0089447047021485696036397439449499 1.0089849487336426954884359260815417 GT 1 -673919818799405559620967554744.8141336837176113723107613320903680 0.4214555867535530677831473577415611 0.0456111009779169263241228148051380 1.0466840396343875349417225293626296 GT 1 -96622549298860713016930.3314480120672148414375507802205919 1.0893981081015857236899319479247351 0.0439550052722671462168638321931226 1.0449503014235037422799723849029294 GT 1 -2400375730285592539233.0242697911974858839865769653264816 0.3810736232916112305161250489224610 0.0096111138390935710087994963145935 1.0096575986808960440700030144442645 GT 1 -402808413039214681714260071975331179140.7600971850888123930378549754180333 0.3431570272561058567929350220374864 0.0071340060409476829983202001443772 1.0071595747394473323771591366726357 GT 1 -43335591885961902290207404855233052741.2372870209023831133395845269996757 0.8452483276608210517310681912289658 0.0632916781446245009970813188093732 1.0653833345795758239246751531233307 GT 1 -32248.2972746368103777738858343000574918 1.3891989519187231890546931469169096 0.0115132420204228115290786532080417 1.0115800325364822995627066629858254 GT 1 -21522136803263840139910670004.1661742322935016713009042303276460 0.5536442106509453506503040843445094 0.0423657046184959937723785025451743 1.0432893114892162346601935860883183 GT 1 -1.6485023397980210709032693917704159 0.5054257908005898302560280305001844 0.0318609590157343587755524889465313 1.0323795646399811322255610309487187 GT 1 -163482220334233725494134194486380300162.8559178634789291702850475525752889 1.6574421228859458828121215484514449 0.0101770756697007245104668220337157 1.0102292161644593490628658872586802 GT 1 -294456093669105698.0570044539591521188679520806502979 0.2686031326523299307119084830257539 0.0835557058514298446160095470342829 1.0872539946204669245428091333320182 GT 1 -1026401.5689911456604929486024777223429000 0.8738269451898557005592860878008336 0.0790318055215749808982993001371570 1.0823297770056233845813924805074079 GT 1 -11777218103104539930.7318264459536687760833262222216099 0.4652260813567370140067874137678917 0.0505101379502685191746396191606381 1.0518304259329466596202814581929278 GT 1 -453261464693.4579931296008870766469261028666230 0.3804327300739974135699864005059534 0.0734170765249464295681091503172390 1.0762517353998717756956717826563558 GT 1 -95.4188803496551600719446077191465374 0.3154337114963144476073678902505606 0.0942776415105460746911119784826285 1.0990224674871976404178799070584462 GT 1 -26742241715041062709335801552436588421.2233013683241757023085833577351767 0.0722495057028141780272094173532246 0.0530800686835508288907686935289321 1.0545407391948319827596636669987336 GT 1 -1379437567850215814380.2434430757307808985453722355561213 1.0358753802037312486440729516267961 0.0904754422678004838931272174528743 1.0948332800336803235388229799326547 GT 1 -275613154237971661947184743651275301254633.9891673310827042679668720253535470 0.8075256738951579875138163712654534 0.0302502818228777299531271637142353 1.0307172632760524372318170916561040 GT 1 -34427708069801524912337.2163565147570952333229958711601738 0.1609074723606070748975830994482385 0.0762374149198508161049420792967459 1.0793001829097975019219920356482531 GT 1 -6.4104783128331520159707637189022375 0.1753894661883190088513463562496423 0.0389497361336147180547407307689568 1.0397285676685170452800516385529042 GT 1 -70454100357155000077131824.0698407084311162146220651499311628 0.9266453279469064801398161535341905 0.0233419495815702287165225093978025 1.0236186877752195642568924067742309 GT 1 -6208614544447289047032527766737528801.1363680412437336145707469883535845 3.0315495243797736614693679613686405 0.0539486229710386046181204000770732 1.0554584016492070216832207413915901 LT 1 -4602343396654732251514160732496859.0306496369142833102232082141228008 1.9894965586654482604822241748960634 0.0692750469094248659714794839956361 1.0717914770500927447675040823821481 GT 1 -29450834419637618283250.2585074909223662179055311851305171 2.0340673723772572874710921755577311 0.0984449064674430647189530903086418 1.1036341250252265325599477213530236 GT 1 -26276798201241336946599432998067384154865.8977068939644418259882795544687684 1.1031764999787496316218154014774392 0.0782944708613778637492747444124350 1.0815294891520552587672494676661485 GT 1 -4529266898675533740348.2522997303864971254149793494687468 0.3569572742151513724055956797234508 0.0262789580805991834401870854840065 1.0266304209614366708780510599323101 GT 1 -127174444504583735033.4126265225859714060013815381163946 2.3949461006968076490687871118581785 0.0438190239681437252802727463276895 1.0448080783741027159983180653000837 GT 1 -136297581521311156966.1799174201061570917498456224572577 1.5396572145048251538043953779723358 0.0738692411427414866603749464399483 1.0767398460357291961070617033539924 GT 1 -111293199237851217952141127039757519075.0257642992780641557014021387992729 0.5526009921363504792289685649294533 0.0907733752000885187012357079659792 1.0951609036666592852650352570221253 GT 1 -10413618135767919.1643797621396846648753739092048419 1.3223589049825206383296945900563526 0.0929483184780246877984042980099976 1.0975558497604890686697155430384074 GT 1 -5171449.8737648514956521632999246732049502 1.0747986248946826793615354456867563 0.0551152436991883981152378809029984 1.0566923099294548154963940605025309 GT 1 -528796750131324.2854183538778660123498894620509896 0.0629769327943106593040269888283578 0.0598667234185084752076314045930051 1.0617336301711003271424670020325048 GT 1 -672308809900.3358393593488320970786958605681681 1.2577250303347998335773124086334741 0.0737136185059319760968209780265349 1.0765718248770110122937333185569526 GT 1 -103067358216.2819405970883285369902410623276111 1.1442592127263077960237152336039496 0.0773071601662254698273530569276116 1.0804588844431532009762090747805338 GT 1 -179866905201688756476955034645.2412843721755314119601380219488285 2.2090224914183093639372935706744823 0.0697422516591875174069016567150732 1.0722935824798948324001382249687192 GT 1 -4850844077714990503797234948899151845.1298867063611817110208707520034822 0.4562402000159430815180242303761108 0.0962054588062671568189776250812360 1.1011532218619530719464524174062466 GT 1 -732359494.2560776927487528090581679541640976 1.9440356182784802571197999117164608 0.0110155273239851085786504139942746 1.0110766475069234877650830051422296 GT 1 -729474392247620466842066671093.9351817576476725533594715063179868 4.0228865836878944813720081917401245 0.0769399557420069052509862950683203 1.0800609932278903032004164274466754 LT 1 -224377087356.7249146230692816550712491148484744 2.7102549962358375129121082402302125 0.0081431921571122919382538521787306 1.0081765290488582534630099603536588 GT 1 -5.1476878383777001718187439352583122 0.2720912297951776960967259143899786 0.0821472852688227069722765116444746 1.0857183427030617375524459416385419 GT 1 -4664357911618.8917096008159672525289887570690524 2.6593563827087181595424439603514328 0.0474713200098201947848358622903671 1.0486350622086742186010290120036636 GT 1 -681955051737335445708009632732818.2837326117916377609561850357185313 4.6495994820865095860101541080092219 0.0947027055236536291818533881561618 1.0994918870434314529634105106302126 LT 1 -916541.3895215487847363775644135997642243 1.5536770336126558450711288352711542 0.0266804402119693362574763293695284 1.0270428233907525019893494541573083 GT 1 -55928221744293322989497148202933004890657.2444491948256104328143302565812289 0.6113187156850634836357327019140091 0.0819306611102314917801331728748108 1.0854823586544260544803429317875942 GT 1 -17768038338668706711410841072413105.4106765503274419888482142190840012 1.9743123215486241561334472599684546 0.0182312543410519486576461911750847 1.0183994915795471202549534681120792 GT 1 -2586454121.9316131143057327177948121072416319 0.5034098869756755562019507468349930 0.0459994935798617078108434508509616 1.0470910766952720366788437448309268 GT 1 -7058565123154.7062426209147409282093204867918277 0.3191737590851182824699264418249953 0.0879708647150277972438100600005150 1.0920833428336875774456600918351172 GT 1 -103028380630604524617425.1895998810605840472293241797873533 0.7725898966766381831520204029600736 0.0210914192999095873280463384402540 1.0213170210977507855520870164314300 GT 1 -2442298904212074530067.6041930964479254902211538858730960 0.2423277674416441716172627512128168 0.0763160960639788540083869666012826 1.0793853611757374370743443288082741 GT 1 -444.8313913407555789650495557241508517 0.2238741401975110497773807789480920 0.0899341235200041960317139965142825 1.0942382903551374899783898906380456 GT 1 -135857314618269936338368390.2408102385438986013959769475600041 2.3041382913802362618095561972075549 0.0974481405908066579612121389507139 1.1077852395698299294163045294099186 GT 2 -2156819403627640.0072747977353443529230278929242505 0.2276601868030495702242687021985817 0.0552968647793249062713264087462609 1.0568845434651487448600393564280274 GT 1 -121733935213.3924706463705962703380606312641496 0.8867049224080515444531526380842552 0.0750826305615018108256435522794586 1.0780508757966627375120372771242769 GT 1 -153812862188007394712888297310187.9731075911517885580526586646832592 1.6648263437053915095721517495374941 0.0517558555685527190458811874510971 1.0531432735638086668927893249962730 GT 1 -1.3871251667872838307294933380237869 0.4144915714120861985492555928266851 0.0432517788041138560223779263353236 1.0442150138932237084114970428571540 GT 1 -23850337705073966975997571645.4309788943153594753274874531187547 1.2055876932544082151511866680218244 0.0380720555054980296072399222655433 1.0388157328945754072317622604276905 GT 1 -5283347025521658.6566135725148683309771185552763006 0.1395933481766066381459989827410876 0.0601592609777224739574586747546266 1.0620448446444356708127208958675820 GT 1 -2285403811.5384258634343328749528574299791565 1.2910810841501852574309140428306227 0.0378762195237049554663682865476853 1.0386121666599178430507319077955677 GT 1 -179562207.4751028930316037331029330131844062 2.3439957998781315699902718240447136 0.0153019429885666938524365597590238 1.0154202259085204302883257463775599 GT 1 -63375154.8021868246436857530201734108586103 1.1041847524525815036531420257315563 0.0206597433087572077483313783768786 1.0208761414813281051704255908931639 GT 1 -61621808002163272693403048228724274.4757497480515410209925793590110654 0.0464947025920179935961664007686949 0.0336435412353725397610932903803961 1.0342225079028686918357917682567893 GT 1 -10457344302881500303582824293.4096351702107697832922879160141286 0.0546584951981940849329062476153978 0.0654193636379792953185774132550021 1.0676573675672730123939663347420433 GT 1 -6690584367436915871616159951.5546531578476589752687594106759468 1.3983151370450246280026867456784536 0.0194622662482328405372582997158137 1.0196541498926924478583833792977511 GT 1 -78241428021781.1756192182523418967540383335035560 1.4949424961062833575789052773631683 0.0206538223439867273422221382712546 1.0208700956286927172724613357187484 GT 1 -60018419615976643400712178408.1616019239547207185488129058360268 0.8767985306580019724236025209939306 0.0435083974870521292388842884489912 1.0444832695309092081293718650076353 GT 1 -7720840473754478887399.5680665573056706598347687891361289 0.4932682672394334823363398859612090 0.0001531695348196365682702366627815 1.0001531812664708046603470878444083 GT 1 -77735972798839460.0328871645037996396044666285968917 1.0452938472317635484270808312693357 0.0567437481666248645838309061374453 1.0584172921889690082699563435817424 GT 1 -1100279498735509511573.2104738286113230961197769668158172 0.5167385016662660766033091461275876 0.0382039687487030179643218829378215 1.0389528765233650871173515720427902 GT 1 -2077010282980.3388764879262453998107658396712421 1.2370926230011596602422350259585825 0.0112757252871574923922292508942480 1.0113397782282869987122568122816649 GT 1 -6488303711352176.8966035324601653136525101821356640 0.4253633686107731776203054173743849 0.0366346209327207686117011983165869 1.0373225216292883935723090432006835 GT 1 -10018335503086335710.1259515879061883660190144276029997 0.9216241451471691260746748567300083 0.0854496314998846030228322578930009 1.0893227350297543203757800118278829 GT 1 -204174713980172981898293341927371828187308.9144711019879474381011329902233999 0.4147903367300435745459641297830476 0.0691065103912855913423420674374328 1.0716104125368347554984342767405393 GT 1 -59581929.1563246649661263057799441563992813 1.0208493633511310666268208203077744 0.0892698722513222033963081560864390 1.0935086629870990070991263246712195 GT 1 -4.5468143999030531127512968565726934 1.3293362119987397851125782077708728 0.0139444480215450001779735504578868 1.0140425852176418574300365285571679 GT 1 -8589.7394136121158366178519243342078277 0.4998876854213906269019420359288655 0.0093170586589602460492453971346692 1.0093607339451396684990616262261148 GT 1 -145231.3228414974181970518787794708145516 0.3432815080701626964413855840236115 0.0623522669817905462831398390942026 1.0643809516662022932325328707796793 GT 1 -1988455980014.1946236366378695527564826821489451 0.4617629330390288337291872795571774 0.0144726128500542316846152805496343 1.0145783626690101422429468260375197 GT 1 -65300869615.0551607407378116208497231177547974 0.3009044401796334033574337096611514 0.0170712556092851894028514236727049 1.0172186493659927486116514968701719 GT 1 -9859139285364870110485002341744.7178852290414566053585696140864051 0.6220285364017306375374963763274628 0.0117415092614753204595121799934703 1.0118109851513578570024216314365215 GT 1 -1095211930413199915949960560630.1384708046415426426290738581638232 4.0365332520942762131927081779834174 0.0995603461749323924699685235350847 1.1048721306871082848265687994701440 LT 1 -303628289875900458278520233.8765751814110585062492124093003239 0.9610695254392651780982934281117425 0.0629277589301094302417124835458322 1.0649949014553442201230070417335810 GT 1 -1892450875845.2322432925685011145296706498158979 0.1495228602326862682862204385644960 0.0016192850688268501633076967168450 1.0016205975279155364168731534408293 GT 1 -1.8697717460722701794736404753739140 0.0724976439208651780823101114547330 0.0325161597983093149645477391253589 1.0330565568516021602945258734511337 GT 1 -1688916314993080829674514493945478625.0809644412785142079568712325826092 2.6038591134747317224717591569430204 0.0715619191244186342611110800790390 1.0770082368131162832148120332040685 GT 2 -53277481849932137818517260075.0709583570102219487738173275559321 0.1598946087199554413444548462295148 0.0969691843456779922900227333897197 1.1019986002843890956554251568802270 GT 1 -1121418915633447829077194.7952553786112150294093010628216411 2.3115274647216269971263093385375974 0.0133568435767895996231922584374314 1.0134468485654797025067748562820382 GT 1 -1800.8043071897592868560479623323717161 1.1640315209984558020300943243707345 0.0122322879089482688610246409105158 1.0123077180963578285624725735238505 GT 1 -20433568853.2344196853548083433247982783175110 0.0459164406226391098060585712646705 0.0294829622774723435592865924929745 1.0299263209140555425842298633983312 GT 1 -8739028.1370845026269187943058665681739721 0.6585348190423466687025407914323539 0.0308286730338091759053506967812291 1.0313138747054208698800087066168247 GT 1 -21795179179347654892417559528356.2394897582577844893837099466418418 0.8700113543503982605993347099305950 0.0561041781170678043951363408847580 1.0577394771014077570574271113812284 GT 1 -27676854551547351.9753565590995043722506580073237023 1.4563367460649705676112782683533998 0.0391030402542171854980801239558137 1.0398880976691790541540915976467251 GT 1 -37395.9327225015202121579869606118336010 0.6288792294482635130530710304902688 0.0327755076990579261633786991864055 1.0333246571103802658529137258867072 GT 1 -36837.7077398344374399626978277258749684 0.1741971963466265111985132005053746 0.0898961360476525647522391079430331 1.0941965497729123140568219028245183 GT 1 -27035219411387628913658090715717.2715314857039448911560046039245234 1.8219579972189135782123374249843763 0.0944843987877573611302575321017113 1.0992507724175375593177898148163912 GT 1 -301039598705172.6179772657212041037075437968629760 0.1507219116416079194079533009932934 0.0760475505269565439236817883784318 1.0790946702739072657092419939457519 GT 1 -624961375704008650199.7337274096706724931193637939365076 0.6985052210721058585906310265128722 0.0398237315044406548103293248035634 1.0406383983588541957173339042431349 GT 1 -5203465294122026575014498667.9914192353729310528972402418336298 1.1525846675463317559152432647782132 0.0778774315975023815980293924279810 1.0810771267311297312242087148932262 GT 1 -4933587642490076601860245333054725262179.7916159743718416732920256614611248 0.4450426355784159498289568074389525 0.0313568903117818605040135196201600 1.0318590427886633326370447664265512 GT 1 -478043917121306671749.0434130472620167955159294836195019 2.2533482101250002501918306298227053 0.0855458958894722333052992849249774 1.0894279992771829941994988118068620 GT 1 -48.7444131819527326582380712222289910 1.8959654882574014712316686524851497 0.0220970736435174458796115371529073 1.0223448711778619897291042743777791 GT 1 -545907014290756392136334556591.3780011279233219859544748656544082 0.5157030743129914936109565968080467 0.0633863519868796440426576789394832 1.0654844104692077494384084626377214 GT 1 -731502143.0250917150908826897546128612612675 1.8762882974138019197191127461541821 0.0763156252545918935572175667711416 1.0793848514675299360724015846521971 GT 1 -21975200015546067355630.9445262796228370294148711572656322 0.1242090499445023756819055263694344 0.0133384138508375725285542882900234 1.0134281695185439127382253568381727 GT 1 -109813546723353440240947365446359449834.9670803179551173470636481445683216 0.5527786889808454601054680966373128 0.0766054029835935810842192809713076 1.0796986201106786257232066562196414 GT 1 -93994767.8190343763307423631399200262591916 0.2996382224351066999643407479649618 0.0576373443919522570825117929806805 1.0593650937714585479475081151563239 GT 1 -1189916191566608288578002529438654303.0776039786650810268502475396803900 0.6343078429605708704810960271225124 0.0449035220103735464484253120615605 1.0459429195310875235301407865971665 GT 1 -593496049021792954926.7701693575610913531847790380874681 0.4698049414849808252767004593423341 0.0842469772248933389718699100221659 1.0880085764549438237682936114682042 GT 1 -79603704673096733512931.1868920449311318829097993424946951 0.5944913433067305066150239623147008 0.0406904412017278362424093556986204 1.0415414628606755932218005708581084 GT 1 -18021648021655.7942383943154123970869903862789067 0.2280734884549076733591996496690472 0.0665347499999711096269294842729673 1.0688515421886619904479269558388774 GT 1 -301930108725119513666181221974441.9034770383761024264327142296320282 0.3064247856233240150175938758496339 0.0378808793853331400866518109072142 1.0386170099794650288980888330857741 GT 1 -444640398735793.2047025600029609077597988876836790 2.1230447397310646016699727452655643 0.0371497406300546002136995919631123 1.0378573731789639203516260399795217 GT 1 -1128709305880454.8918003113229388927526056121686748 1.0648415021431765179618572277719300 0.0946319616952011061054245725276895 1.0994137457909230624332386456497645 GT 1 -1000515540525209804517014649490.2437160057815529303202126980813939 0.1073009769750554375647367465764485 0.0284928882163753418574326780346827 1.0289066897759709624592518156705693 GT 1 -51869288.1503240781878385623125117097467539 0.2543411293691931721068317725545389 0.0485176345552812204624080850382086 1.0497341258441437021599896567437093 GT 1 -16996261595277304381905270362606029388069634.1533794901153211474266364514137223 0.1995087966894872190758992530354651 0.0331170985603194729970399634639151 1.0336778855463179414815806718783858 GT 1 -6195389330270006355749645808069475474391204.0446835537050139270468587569271684 0.1910083464303549624462465452423179 0.0831955558200777655429710815561029 1.0868610855422218078938061100045123 GT 1 -12910684061363752627831128092518219548611236.7383175590565482796713168372303751 0.0844586593156299595070629781787268 0.0828996612223853248808406432545453 1.0865383920163530281274303062190051 GT 1 -2511427982169.5201913731214166023512271337194623 4.1591799965815018153767058745326870 0.0532909889026025308124232350762614 1.0547635074628909753711176202884905 LT 1 -154.5142994667061333761461559591477669 2.5774664741212588035866982769383887 0.0815998420329441926638580319203271 1.0887449657865529654778759659793921 LT 2 -168608406669642140510452548047227.3636841669374173972474070106508573 0.8445313631383000443128343130228072 0.0166124946418737153518563520495510 1.0167520296390855849453495260342519 GT 1 -4220125024775791264912372114269077.7454196536569527717277074557808326 0.5376617894276146291725782655210524 0.0511184216884369688114796563980988 1.0524712739209152213698313025494369 GT 1 -321321485219581.2500988624213733490632179584176122 4.2172523778244640651342207454400249 0.0103561191743881044406767632475414 1.0104101169047084844107329017015379 GT 1 -97698537440798070097318590411.3115422551986026455224726451410127 0.5783555653499431414977290203845211 0.0040466986937765996453307507768001 1.0040549087354643934759169471331042 GT 1 -1.5828065033037522418235253826089994 0.7347461888930902893829425780960942 0.0622573707834031923361041206018414 1.0642797501239748254831286859474999 GT 1 -23158613485891986324.6827611065947888370689669900345770 0.5413683923296242727854844166311337 0.0961322539202138807142350262757657 1.1010722278769497014174084022196608 GT 1 -2623505850216550581035.6519410491417358218855708575120384 0.4812816932169316233627299972840918 0.0750956966385689650593448570484183 1.0780650026471148618408175628941642 GT 1 -460869894073008.1734785517559830757775899335145989 0.6306247705943818346380903299168913 0.0957826303396541224175428311815106 1.1006854943300898798200473117945218 GT 1 -716989197645.4289991056786497672128836316671560 1.1115315354936635000255467260192226 0.0624041058223997183190542008769890 1.0644362392457685762566276481563173 GT 1 -38025072119.4556990754314156849098713758966778 0.5377100062243462694997835905784679 0.0962991697323144078260464502867196 1.1012569133320512189382657772664733 GT 1 -11300954157574754381673552095978.8017627422191610805824519963349332 1.9366180156017345957817779969908636 0.0693216247627983598932076754546959 1.0718415230048564116946726668961186 GT 1 -10070006328862719862919.2524995711635273784105747484946924 0.3021586224186508105007652493141994 0.0086722494557027699761425606892417 1.0087100722422070558260735615506013 GT 1 -976639781.1962702690095854245269470518885833 0.1214594756100103056601431186501249 0.0928338028622488053919950810767143 1.0974296073534717045261284854735763 GT 1 -230386836755664281065745125295068.8368340220768458484179720460425460 0.1598005849106597484602649339950481 0.0788854248806480406956182064346793 1.0821708475116278278777303002674440 GT 1 -413594739359259391227460311439083838.0817619328575973425483652191837652 0.0946973418327845969227529222010479 0.0251024227262516241549034866669168 1.0254228624523189348021832493620866 GT 1 -4216938767540222280235189606.6125532133140802630188183797323794 0.5141167247822858176841056857471345 0.0506195191227997195219004190468436 1.0519456325062228319042680553193177 GT 1 -5844257357.8714006355221362212450634541467315 0.3492821951559151614085101249282786 0.0902108503444569540565470704254406 1.0945424099939124868724436987105875 GT 1 -394091.5116649145717977042274537994240539 0.4906294421707066071771858903992708 0.0375061471505826205784358470273298 1.0382275994905484682006461438936005 GT 1 -8.0365751244393999102055645691356483 0.6860079513420486904403244923874555 0.0167034870795302176793903364660821 1.0168445635051014113490695450667334 GT 1 -3168807879507812.9516812482036330679424226525160675 0.2901833407772251138260584575167453 0.0035204379424095426829518842868409 1.0035266492660670832496548829960518 GT 1 -4599783035608142515106671102920774.9511546168357579745374988093017461 0.3831032693385958584022245062651622 0.0319822464709336115930233965148040 1.0325048514511542854645785431709170 GT 1 -171791425240782.7036641920423616120205954999418196 0.5959129673249743131482375709173830 0.0195295505356749962107998629238903 1.0197227720310847635668077147540333 GT 1 -157796150839286011983582998883.9369189315092456086674347570154395 0.2481674704336568511632397003356550 0.0513268743243613349214527645882041 1.0526909805110070661173065995056860 GT 1 -866355390162510361.0890473986426398273985319526175033 2.0177280094629991810037521093801903 0.0081395053898121090869566753773542 1.0081728120199291535155473347237474 GT 1 -17871205270904105929807737.0278616460895049195339614693365853 0.0313460873331201018600841642049994 0.0256530658532258849680460031744512 1.0259878435394994755952676285291718 GT 1 -469270163938308359213026960218933001.3413568327737100435268228696742376 0.2212654618561970083000230619479076 0.0959934904504525897205275490664400 1.1009187177867410355988037649840036 GT 1 -245532434179457487777373.4388845686740458164931804529261898 0.9333906886356755859461635377472157 0.0732503064551634713847384386951673 1.0760717676286238514987576141401543 GT 1 -28457.6927721623263534629483565174146797 0.4715923777215099048858391920111052 0.0470483340096936467784890059480844 1.0481910943577681484404373815694553 GT 1 -3149072176868.6073227080431583530029664990955112 0.0119388928248590370784529056725000 0.0914928166023889819738920111581166 1.0959524843003282952420227931073699 GT 1 -1619306685306874303332128526190169665333.4344053160834405530465690933799492 1.7157223984772516373587938832883807 0.0829066915694282253833673233006200 1.0865460578885510218060257884370469 GT 1 -63251051668517097711506941053960669.5894069727213506577191987002889279 1.7068680869947407847430199385726562 0.0467797791645197632134143652473344 1.0479093203490265227269234897600014 GT 1 -16642530707783.5739968132820828997946218804149328 0.0288407385357426981599947530404459 0.0590033629374969696884100379546966 1.0608157131943198000078629954840413 GT 1 -3572788383098387954548259.2926378763338938057026628630974799 3.6664550032749147085772220129027102 0.0985951560382022546605257114342563 1.1038007949195291327219724772754595 LT 1 -140303405972790058603983704501624.1272997995415416551389671577221724 0.8054800855237167298949871639001296 0.0351320928257615300994185986316475 1.0357640707698534870415144670523787 GT 1 -1363301051959665862065828925192724102580.1119575259943340863297230858443824 0.6074092915796988090280526439667370 0.0737180444370462917635309055364235 1.0765766030339359601672656492992072 GT 1 -30820772101364145659985512.1662961040616908952683373005321936 0.2279580798087832575248025178885484 0.0980872960287026012068486219362983 1.1032375441226760137761751072834304 GT 1 -2198411172313445222000420416.3688141972277971411235047357363802 0.0874652444397869668937983165581802 0.0133138804978540286383861223822358 1.0134033048148583444810897447920219 GT 1 -16773439878886159893880515621757954.3162120301887518359289980615387012 0.5012213408598807630934885215692548 0.0690137487819925816464814480828280 1.0715107695713566827523048217290558 GT 1 -1503906401676782591278132374908406907557.5940948811144160441143536786593031 1.3830625460011026285226112627257103 0.0397435976799174658452712786424242 1.0405549444312185418603948778254174 GT 1 -572453136288743223536873560425779.6133703291104469004805120162127783 0.6316372274732466294051230471378318 0.0011245113641542250711538573309747 1.0011251441014496112403079392280482 GT 1 -857464200622996789054317038051532976938155.2309918083444613007274546203796125 0.5309512635168335989979468945250787 0.0493810072782363282250706508358817 1.0506419352818918190575084305809247 GT 1 -2239.7024863810791096797256589304078682 0.3152752075199026161088112350430832 0.0416114504047746121953169901859857 1.0425019991096588892280559951891469 GT 1 -28849468432086949229349802608225679642.2721952529080213792136194734438906 0.1330198169118964097929809404493301 0.0212797741336094024376947920260395 1.0215094527105767169036814920307984 GT 1 -3412488382928618819.1167073205763050904623812923511980 0.1882259852899925064507393872881414 0.0853328371178332289779416729344919 1.0891950362949605096990045166367653 GT 1 -44601.1398085771066318445600660863322519 2.8207693097113780359269357537115440 0.0568941504723529995578704568461408 1.0602923731180967905756015465135778 GT 2 -7734358242738512336032319587963879692968.7787544127554924925814505589725306 0.1722821343075761998863536766578843 0.0717543646935275795948801704775812 1.0744588880028244033329599207868248 GT 1 -40388968.0303453387640060772348362936370804 0.7183775490223236338441580383737798 0.0406912604453770257320782986669413 1.0415423168540414365974957592117194 GT 1 -4825980564169431060740460947642570932028886.2035540273976916991622173465438775 0.6560206831442781671017682893734627 0.0079797792376806115275766509212618 1.0080117880720285049526603156282441 GT 1 -250393977687323144861842429754298.3891896300424676848350889731791053 0.0668734885166131736684405268288024 0.0854042763961332873786712066755190 1.0892731434701119289867943253591585 GT 1 -674285.8129071940672298975868308400617636 0.4927694479617197789690737529396092 0.0373858157801603804793556315509577 1.0381025869008528342664252726199685 GT 1 -54453847821821038341890942380629911818.7446169184920474720777150594962126 0.0026168637381619191080119675327423 0.0054241161480008782393149800383808 1.0054388800777091335715102663763270 GT 1 -65070460768009599432186997322142783449647.1682922081069006201732193751868029 0.4070182924914015122253240663054786 0.0903751643581732211601616469142940 1.0947230330027392937207228326606533 GT 1 -859402578455837220430686732483973.0120055765092397408105670993862529 0.0098308195701294630045243684333851 0.0047522165931856990305075175080827 1.0047635442764445269964456255770434 GT 1 -1488347915017372472759101851820559753.7579350425790818258725497084339655 1.3116532836975576342559004536485811 0.0585334021294863832498964168050553 1.0603164090814392902795704676474016 GT 1 -18138491975242267648535898300.2539308000168078833023614698492524 2.6694520876137606974450784787349997 0.0925163210866735059932110651210584 1.0970796976733680475408279989659246 LT 1 -216387295939427885498520561.4013887283929828279834451412963508 0.2283532436208811212753902967989673 0.0130550415276894179958259039875695 1.0131410075957506434602472707593754 GT 1 -227410006886785367500174079462.1409207638676015312283981613401807 0.6566216438262044450379767119160788 0.0772458253523525309777311030394107 1.0803924129450129436538901089366013 GT 1 -1475716500556.7222620010271455260495738083673572 0.7290375382240045119529800024892824 0.0473169435161550025823461890605101 1.0484730051616304543403894960322863 GT 1 -449773.4729380441825054041654997374382156 1.7152933628331666690526145570446097 0.0925127754798788156535923256632487 1.0970757906060007553222175752589574 GT 1 -66844406629439787664017663.4929928643040189432984337672646737 1.6472054140363905924117362080836224 0.0321260663376591206049841872656715 1.0326534340066161076775649465744344 GT 1 -2297732836636.9732821934868311415430703837541512 1.3869659971186856358008624478876643 0.0042299530958711026439250505279141 1.0042389246559247084686894150580731 GT 1 -457248.1377704292147814362235537122458751 0.2138409709237925338640350380517744 0.0427833930756656206508464235362517 1.0437255736162480076679355727807165 GT 1 -2831108.0929490413279055505657128919404909 3.3534904938766570696761206289808641 0.0623578299477373446615120998659252 1.0643868845792283872504955683106622 LT 1 -972024001946007954596492756.3628669921802605821940995275913391 1.0327551960889321083506113674947169 0.0997090677185518012237244506484740 1.1050373098039678644190413591036589 GT 1 -8742536159092033070826440533.4936431170672266803950166887265403 0.8836225986978900719716580126446497 0.0112763875916906088089947765924646 1.0113404480861754719716819982703690 GT 1 -35312458536209908.3024798318712375078176655229766594 2.7736524656613837696641318376609898 0.0024168313486648719934637343843152 1.0024197565997249411916920519420785 GT 1 -31301898306583409858661883591.2107435982751244233801323581829478 0.3643133425111009331169939364223526 0.0960967484565971713538663945213373 1.1010329469462699234795895197092890 GT 1 -23716601148350304096936611260168530106771090.7865454321835491158254251273817825 1.6770823591935874913840240116993168 0.0799332595081578504594245001408392 1.0833090675573688078981768585709768 GT 1 -3798158370817165513911298197372194306.6569396457749293717098052866871974 0.5889612983286315655181928943298819 0.0070772376943518029449949565076893 1.0071024001316928534619801550458844 GT 1 -2512397218132714478967645342813.3675420446611075009213488540767731 0.1344871576653008505704535135021944 0.0197841213589156878676487411278873 1.0199824472489123724518275814007684 GT 1 -1554254.9499237731109672786209903429022399 0.3753206273076507748594101852144780 0.0807339697506530247023063221030079 1.0841797205526429105132702158398536 GT 1 -2573361.6468932018847848791376803265859048 3.1315850325594527337778187554611953 0.0364747971679791831334338260175691 1.0371566338859889659428536188878813 GT 1 -160994027542817345184423254.2298130300314897740902620593495679 2.4862976674633518341737144260100163 0.0932899891864506314252971004063001 1.1027280008686022362891906271650191 LT 2 -2.8846797327965894807198975282254279 0.3715451427971752631753194324637813 0.0751435699788112296928809454056011 1.0781167643040567393207870970485174 GT 1 -687427867.4324607517179245926968078018316551 1.9966390574104087667961485250599787 0.0060324813529375341090459658354682 1.0060507502769236401952897184144038 GT 1 -27300146634402584969.8220295524437204366533495371418248 2.3704655990929649348769913042646869 0.0762730147639727296799177435363620 1.0793387215242484914573396511081558 GT 1 -512494203323365808831.5110012794782523753621793949859408 1.0431117149298748946585371542967317 0.0704883845014493077373012030937799 1.0730959753967817053648764992721683 GT 1 -504493023463209250169374.8196995993202667469099214923486905 0.9053195480938506283889032586260243 0.0868277758290095726380164593560096 1.0908307807209687752387346934471997 GT 1 -28159653152813581.4641200702038062770238940467375505 0.4021111780972588174699635753829989 0.0495588457343307501019357458386367 1.0508290292640522421062111290775343 GT 1 -862051855423470631646472510.5192887660791222524114501176834141 0.1632082490693759423708337458993167 0.0280202559261662951429322392466759 1.0284203141690541566059500033268235 GT 1 -67097878.0783922287450874916668478229026602 2.3929035866921174576885452450529581 0.0000329835368838847036850707074284 1.0000329840808526987654827873148277 GT 1 -284527777285966789785997.6390481110008069272177008029925582 0.1084867125749970279425622328103355 0.0074920596043293184622408577191678 1.0075202660541339561503281654315848 GT 1 -519814114225733816522902648888094750674901.9443057820994097107560604720252051 0.3754034338700630358924383440022314 0.0445737160186699355846685756525047 1.0455976674340756898923154490569079 GT 1 -1122934232809388935386.8300422320526154107058656659152433 1.9450694279086653932802053886941245 0.0426420660466642599878681431071553 1.0435779407858299611102403449262471 GT 1 -10080197077045150.8776169207086517979270726443345284 0.8514565405951213442255961341230285 0.0157877579552865881631405413522406 1.0159137120534320961489641359531480 GT 1 -147338648958715652320890785441392795608269.2823155586977544225480237888741735 1.7194542681517523264407115447068899 0.0437641939753733847719020319744660 1.0447507373244948962381601990845015 GT 1 -179513.2525187526639538307176233579517357 0.0856444708719946215348623776375536 0.0600605910008964534618880734816341 1.0619398643072185790918158258846747 GT 1 -919617195.5996219151071868576016357525031248 0.6255967037300932322649595801483859 0.0742169435062660014424102855304336 1.0771153520282089328506572827072013 GT 1 -67266452149243064980502588.5701154715940860225202919820267992 0.0077826526968208879083227977353558 0.0765112895723507940260150251119389 1.0795967041845939456380652937568086 GT 1 -12.0387016994804182044743845101910702 1.2437710271429064415059393894477410 0.0125290865893485662395536256405128 1.0126082374146843573905040927571411 GT 1 -316208.0629748119572442423777751558545078 1.0645386509143692284467271727094006 0.0800362171135946049926788973341352 1.0834209761417494370653442761090493 GT 1 -1903141176438374779413531592320.3313990794621537206875088835922217 0.4215733125063159925456195340773018 0.0598290405414831795198357003078743 1.0616935484903722103216372416938033 GT 1 -337915803047575372503764307185250328.1007900429025539100002733987736745 0.2668674817505303226060118649184760 0.0928306965169701628035463533937665 1.0974261831298068059700051352804926 GT 1 -189272658228509.1622041581236540770771937218267232 1.2599916229375562770924677160290424 0.0963333056980897842085726218312572 1.1012946875703457401468294919383963 GT 1 -246402398656379382050415563524501814.7276605662053114459676096518638690 0.1183761786405573486836001227604815 0.0626865562400824411897819797663792 1.0647375342621240200538865160406021 GT 1 -219089625127105004021943052791660.7146132235048835616922254859696594 1.4591440436402263724887638105448490 0.0222451354065785504804230745901175 1.0224962900651838668527035673943132 GT 1 -35328.3272962128415167254069831348492822 0.2519542169930647527120332645003887 0.0945831716105248470345519800974622 1.0993598574626235929345547816133018 GT 1 -155312333.2814091047329046100916932952179896 0.4367929735203166310307818096995234 0.0175105215960304867711274970254861 1.0176656442996559104492536945395988 GT 1 -30373970742649448667653161040456379572214.9639455999455902188461032234209423 0.2072982677337691628800125036788088 0.0719328709704949274643887629541444 1.0746512114958769570388099463169168 GT 1 -486737587.4776119724480396708469860906149011 0.4060446174331577816749652246939194 0.0905964451512220655704899748871563 1.0949663285942728393344847026136018 GT 1 -171277488489369296839886142563243793.9242776362209793760855904615323403 0.3341954311962546049844945633087386 0.0946632677429476260034502358718746 1.0994483246447026602976546545303195 GT 1 -40727426316056058361118623868574434951.9564154333284343680568937336309784 1.5233323967805792655686514882592281 0.0626519537314922251302259417578946 1.0647006182548574270307811662533148 GT 1 -3900669228659879284821636279.9727539553229997275589841438980566 0.4230866830893528414896828805483033 0.0547079786966847974626230253529545 1.0562613819722060615121536110689490 GT 1 -52308441150.4012804427943556722905024967917460 0.1428377965377385884158827876780746 0.0964651283380609347847276061481685 1.1014405734999372627642380226952391 GT 1 -447.6848322291952496603918633804663127 0.2232262938321610484627473535997544 0.0821615705695299389813726485980519 1.0857339066510090317210146185239510 GT 1 -1088091839567248579827058306686287.2568315408551541576312959533500259 0.3091875763240919985410757156282250 0.0459406705718468802061966197669269 1.0470294192913182333283439563653274 GT 1 -21831394649170531416010299870.5601488232597519708829825942429412 0.2645399953900520757244795749014015 0.0373389399407372949067275054077070 1.0380538916926516812300248139371627 GT 1 -27475063485726749.7253851478452057579919635062103229 0.0572051655700771284890408705885579 0.0348718207776795002411200800685396 1.0354943582543781175292274438665563 GT 1 -20466687.5679316109009508341672422872843895 2.5687469117530218268772894118508079 0.0331208933535095720364809618830329 1.0336818103242112248309797937570583 GT 1 -1809983766640265.3151923821265093190070998988929560 0.6098563824156800565627052202130415 0.0477645208995403854631408850187028 1.0489429227809520186275730044569855 GT 1 -4980879668004102936089147073298109.5897251563204502415487152977263121 0.3897584554932692310392750683197814 0.0547128974223133024276428276196593 1.0562665853784707185007206237516906 GT 1 -180797129511872921687128721421331325125.5610936900997633082305231624052798 0.9608012713367725631009587980358896 0.0347999995699990826256968531334356 1.0354199447857559112443161032695424 GT 1 -13559.4271745873113454707610913007460659 0.7785057396768786446938101147738122 0.0079031248459707330462944794775257 1.0079345200600691462437145175783777 GT 1 -636445987991667796.4900730100909984499634590141935904 0.3898657009899462202577429812776944 0.0905249023131170899357626212035377 1.0948876616221335661099193739686515 GT 1 -105120803694073317055296065488903978.1354014221545587993830155977587839 0.6774973226353348812837329122058725 0.0607585885353941152448167462843622 1.0626827386054197443854081431899728 GT 1 -93819514501346946.3084353494421293632219042299323628 1.2668991751042814547944025464318714 0.0217745602597210232283072043362101 1.0220151245290137045534974426908872 GT 1 -9439090405518166.2006106473441836740660803577473721 2.6878606179846057204522797121517908 0.0193273894106318313805626116614127 1.0195166054031859338972131873997650 GT 1 -77332410423433976669113573056719.1943960108576452172547611606565601 0.4585989463073708844031626153145886 0.0791650489932954425779336095775367 1.0824744650764191544158969883153379 GT 1 -172218115.6911595187814381042438388114679137 0.5165181248857648626942773458504064 0.0810934904965278888902088346004582 1.0845708924831163823465439663853923 GT 1 -66626282383824182514240357750685949.3744063508711340181008751937839827 0.4183693999906430834072408294163527 0.0418589670688091420195443690903292 1.0427602958431581783350728641475700 GT 1 -24158849127331236378533.0794158161176768199453147705064178 2.4131728795366072730206706681114285 0.0419510179140582563814582909970418 1.0428563727923109477843820015713973 GT 1 -20802.6474852588280564230295292056811830 0.3962750916252034681148670551659198 0.0083783458023051604891170812693581 1.0084136414257203489084581146334897 GT 1 -668107030309911972801594486190953.6966378693055208496514811017154202 1.6750150762412943894506382013521535 0.0945664029771496974312582123191461 1.0993413372876380628816465467890944 GT 1 -62.8843430130039357051416973217553405 0.7402252637425250319597702650008907 0.0016943451227766558398225929815435 1.0016957821489157452070702369475808 GT 1 -21171765498174079181015856270771.8898521419301188115698980383806313 2.6731901447341117747715534484355547 0.0390001196580544924628300493402842 1.0397809945259568827983547315017432 GT 1 -8186629716936681397126795236529370879.9599617387449697640871176391037676 0.9731259460554701172216407829135755 0.0975900499805956890917980486434308 1.1026863721251451372787616459667997 GT 1 -1155.6810913287409257046708825744598192 0.9704655633962668017794360445782213 0.0919021171462975250850563007609001 1.0964031056912277462412956424136865 GT 1 -104921879284613611777989380016776.8614998171176229123060699633071692 0.5442828447653015469710495509996036 0.0794882949549369826942329241694014 1.0828255624256333145279837311332535 GT 1 -68805937544915323872574344.9068342200414527817670080243571208 0.4224203529902944837685176032296622 0.0022985560023930503990020072370801 1.0023012017372651624543287064630261 GT 1 -1662162265803806340041643010232229143719.9990016469403367968300952136150883 2.3560721634665699533451044607460745 0.0919663187021654970054394866831901 1.1011274048593902875613662242763372 GT 2 -27532621702350024058816136233725122.9871912653290566200781873444830773 1.6741546724147302186180220377695278 0.0805830801177002163459779566959192 1.0840155926008601120887341388158169 GT 1 -31846796355696.6854707595830825019232030781365800 0.5243743769311631350987846454149039 0.0065608057517311307397352296460673 1.0065824224382491570022638734664990 GT 1 -79999068.8635178589235374309396126419978522 0.3897912433440922519118608909781300 0.0430533875625915449508784179030419 1.0440076754620942538992919065498794 GT 1 -852.1924008285997271470616524761880214 0.2854119502889900463354089289763929 0.0031436538444022999633315015158270 1.0031486055044088724695905322148148 GT 1 -643874.0362206340924042045532486214234753 2.0539907029428157907355430396626581 0.0586212440415662033916518929736789 1.0604097167043568248989288378666349 GT 1 -11642648961778161339849121737184.7163253684354630416187609735816480 0.5032962031849638011437545933979391 0.0673902991613897601342582191648076 1.0697684927334185246695934105504149 GT 1 -2479017651295597411.9596692970968367689646999895147453 0.6841708440643531910235740842038462 0.0052577500673243942987067444758020 1.0052716206753652525949957416571497 GT 1 -7478000095792833760603415.2465252150908106111351904882044218 0.8901628550128280753603741057627157 0.0331354177860952394448480852313855 1.0336968324108193007597454051750254 GT 1 -129051.1957675008972504159984094968015723 0.1330494983659136813038955019937248 0.0274354624595301431872960364370670 1.0278188431819490388113834775579056 GT 1 -4286229475313.0071450005264086535056216932475825 0.3756085154849319399179114859462351 0.0529648938454141355367922224767565 1.0544191155701946635779390710156740 GT 1 -25170755928587.4016300813063827578528948407528011 2.2388374367421785450017445152446255 0.0410285921842585067925196697602600 1.0418940191252879784514463660938636 GT 1 -144020.4277213672114800396653612825764238 1.2900650145937550516205065790779363 0.0849897134413509911772907061495266 1.0888199716292081166880969122144705 GT 1 -6050823970620126927358276.7924249480402346040589159066022543 1.6059424234726103129870021579090726 0.0251306925123835563207377903527339 1.0254518605713811252910416388468286 GT 1 -19000550833168375479351327191.7870184150307426098655080453315940 0.9608918787596313972292671166483346 0.0674925769091250878196354161719385 1.0698781670766816074335258115461562 GT 1 -60877928.0037718527367291349591847044757076 1.9858693224752630502261650611886398 0.0398314773470688078661204027278886 1.0406464654962390010238509712297707 GT 1 -62686523980130525270574171677455153229.4727400432207579668003940455193734 1.1319279326539877922588412706309385 0.0364778743447482205676138559128541 1.0371598275561428335448907587775215 GT 1 -13311813834743508913504457772543909753538.9880571168703995606476265503484898 0.7876668464101719128722972157092008 0.0865082772189809396436891096841133 1.0904809642001797364732928023380332 GT 1 -21.0186166320405739623040705359901443 0.5292675627042364798199937104643525 0.0642957454393413531098036683183179 1.0664558197824691162592674476409312 GT 1 -6241628971233655640214857731.3975983725729446037609751817644051 0.8205809459939513814592094752488733 0.0170439380434663262282627981789626 1.0171908577418523907587397653143405 GT 1 -475769977216199153917.5539569515433955249461792119113082 0.1319605056478774795929294351572935 0.0598946198449012998740699518381342 1.0617633034535795732774881794285079 GT 1 -28266554550777490.4838822960461922896424135099858915 0.5918758535167111631306212248891232 0.0994616985381891607660915732811285 1.1047625817206122748898328955090733 GT 1 -696.0698534751376211818730296020190774 2.8223182502748634092263763450674304 0.0943698764939517125582175505647034 1.0991243084976052276991200983325398 LT 1 -12182383.9303554958513828787991187332466227 3.7156922357783223702741189317419634 0.0623232737058389187722102469062798 1.0643500308558753500518376565956436 LT 1 -3445563650378473732369346.9648198951263083131679548942261987 1.3307501429759325535951005958210827 0.0408209946127257783202143353556787 1.0416775631363161612736117207557879 GT 1 -94479760731274179061299485840042646813616.1018926681519668536296848768624728 0.5746972916143840444190457239555269 0.0794941144255695788549089456417712 1.0828318844408734375947639425985545 GT 1 -9007174.4207102859990578384524175551743713 0.0666658835901004626205191708114220 0.0458750542794555289837865100589297 1.0469606457527540916107887119595962 GT 1 -18269435650079148.8295701440844985075901403208512303 0.2017685489453989817223207216397591 0.0363172285917815704711318226674764 1.0369931138314283465742052507690637 GT 1 -19878945749394816926898506016.3460978553405794869553755025107762 0.2675145804026249815981224702603842 0.0772039227944564679300269235639647 1.0803470036608591393602349570993007 GT 1 -260904511610839773.0796461179646363755281238639989784 2.7595191894168403015105474450298765 0.0329369834261473139534427893869992 1.0334916185643767615093016946873991 GT 1 -8422619260248542542634797733.0268231700752573219310462132396016 0.3383816166858254368644719238457029 0.0744311239993878615059086463284513 1.0773467294236334905572088602065743 GT 1 -820952449702999520456323501.6270212151169712882727835678288033 0.1204207390311841903008032560891515 0.0318853304897917966513420931283205 1.0324047384836015542978269168069828 GT 1 -8122721010761883777709232154665131624904.4507767887081524246090366853048467 0.5563184456747025006003671364851852 0.0058401551739259313656929002606430 1.0058572755698751364453999915583733 GT 1 -366769610636732956186645481100910921815.3130553129056592896092147340363973 0.3720006158975600797092114056902421 0.0380970218270998268012344293314706 1.0388416876926910158550224150372997 GT 1 -6889.4223127267556471756387152777842584 0.5334946689695746370464430062564343 0.0731273750909111471108135756920000 1.0759391285648742435580991948033733 GT 1 -206243688.5892470130237558188377564896981617 0.3471415575407855987637872118362391 0.0470469833739490828743360466390812 1.0481896770405676785552728003737526 GT 1 -2600156692674233630.9338627293519451253469453133200967 0.6869244058788495521810456130499134 0.0630117384740393479715701646079099 1.0650845245426136076604110728561168 GT 1 -20086706955857740356220663955063047313.8414919036746429706095672348157986 0.2594758686822238108532844938894847 0.0925035654557393975982928050747208 1.0970656417276970852544742453756254 GT 1 -3989.5788562228977198577827340443545513 1.5982602649199315501593602656057846 0.0072973495126668986303007934015875 1.0073241054118514982147758313779028 GT 1 -7708459424769188.2868795054266233190432344914292058 0.7309393620986044147478496621526833 0.0133702215388230046228831413194007 1.0134604077257936240749118292526940 GT 1 -12240533166846730868996139010.0041137980431865260321669580577748 0.4868095727922557053711134579688521 0.0991750313369571747998715745767790 1.1044443036604272374855313518048209 GT 1 -6191871191653727.8570068239249332119037081914096043 1.2309968503709641766043490823600625 0.0320444107158621957264032343801962 1.0325690715967267620951440342272659 GT 1 -11472698829038250416480226440582.3064767891278760228499557352874653 0.4443507974501784541075014791278765 0.0822019772731716712111607968141381 1.0857779313854282804397881257230966 GT 1 -8834532121341087974592919140.9055642225185578887945608105202939 3.0710807349677290337885172558577137 0.0573268064738171398921900391908113 1.0590356168322407100092741972080884 LT 1 -11382919637162368487868432.1768156490403325445980671241670723 1.6043346533900374905517828683658533 0.0630788082528545718008811601094787 1.0651561072743477522068044689848114 GT 1 -41804011025764099490143772820995.5355880691850846149855030790167597 2.1983658180152079863317985753356264 0.0101085149361492384959016251052830 1.0101599529078466167076433014990893 GT 1 -45287018537.7306350369190565151834898153519180 3.6043556539374730512256760653774395 0.0398977948270552354835810332080941 1.0407155364652974917059084340634967 LT 1 -59153943269732240281342077161.2356801595438989816110369411331157 2.6818591338089103586833978006386963 0.0916460193799421293915858141493977 1.0961211298533847256954357894022881 LT 1 -245226974155641779433548641.8907085334302215316133778650660326 0.3900040553600182538546453928659039 0.0666377258872446267989521885962818 1.0689618639897366764714755332543479 GT 1 -516746627061833126.5213652511952914820241732129391165 1.7451560422858569543490305008365356 0.0317929648852137045079592206844804 1.0323093353236539793832815361631916 GT 1 -400426919692963692062290019.7506623342887173868925363976574933 1.7507904396772445907017262661762532 0.0136079556572594983603970463581061 1.0137013925104922045168792609992672 GT 1 -279228260570087002.3398248316629107423436432305943078 0.9736097647008230779034661672416281 0.0137345760689740108890997297128393 1.0138297679775206596153743093645139 GT 1 -585176574321814134961911.5331018951633098070528594345633882 1.9667890629025629427717361273976075 0.0371204251940124427831945706741834 1.0378269271262267597937506171288110 GT 1 -72942281083021605.3625162041511107185084984971895215 0.1306028685367004755462583464086747 0.0856488236725743327614101310958272 1.0895405621446591082412768328433955 GT 1 -3482.6297605474752046244010872292684599 0.2114087568529159469402965236401730 0.0779167499970862234480559332488350 1.0811197666568879046718833557292919 GT 1 -1679471.9829629956490224188424805136392329 0.5921236067312184586280225097810281 0.0304297074383329222132464854185476 1.0309023029961332877839313893069578 GT 1 -18972959201049135869.1375533902129752966897067224942029 0.1844959617948606743435963381416012 0.0591716012410177262591033884466718 1.0609945165376343799439038978601511 GT 1 -43853583946263492303500661.5469216806003076027478979501747327 0.6371440865578257263991945727867993 0.0701504279058079401032915970559341 1.0727324563542006922972468363274055 GT 1 -1228178.1996071630626208478736576714420276 0.9471424471449561272512255484217338 0.0123786779771092942462027398197392 1.0124559320085553031937221108539362 GT 1 -182979918316073773799646717473430239888838.6691312004275377686337908327731950 0.2040108324105241751569434829498131 0.0101376618552194173851465419459591 1.0101893979011893200023429157805081 GT 1 -20562047498165.1822557926699020959918302744503262 1.6238944742240417140449285290046135 0.0844015331844810742692176508105567 1.0881773654185405630981461811818075 GT 1 -13225983816191813863889154211557.8839227917301517863025259805366769 0.3806761512150928481683905614475117 0.0254917776654521274852487833739792 1.0258223225795598956149604984444061 GT 1 -13168427206.2314114962425044189799554723701896 0.1091619614382023406015760994177546 0.0769011755027136231630088876041822 1.0800189814162793853684338596773555 GT 1 -67630.7782201519402372861809170821396289 1.3791024756614105107344344917617667 0.0434023615648873461941441992223092 1.0443724164457485601045507949753731 GT 1 -1050958703375055199180501.3031078748717982073506206879309183 0.0960098040597437883662775458439213 0.0178813800958483399032863972329098 1.0180431837229559430204005893714952 GT 1 -8055233780490050.5887755532495075808789618770273973 0.8143179707634075241650885994428854 0.0556293179912991905562664854293098 1.0572365182925740474160012433621008 GT 1 -3993.0014605243620267455135758927341870 0.0306296326085588434903940297026635 0.0833528738082252512603003142010357 1.0870326940985379918974055552059723 GT 1 -42351776833149606807263776788.6083362299491921986911131377727823 0.3950486487034854225149543757549023 0.0266732675348969341295679860550468 1.0270354541248504437195617703199625 GT 1 -4761858010514927877782169.8455396044712963421714952358007255 0.0867901083442454395837466660267510 0.0497829693554506750001152157390996 1.0510648671689823343092288785670762 GT 1 -654828293171.0797362842816117980953782868663264 0.7726065609013799658149073325238792 0.0287937889495256990249549428182679 1.0292164634641624747411779052681546 GT 1 -38339989847375865.7241535376915575215202257097326491 3.0720420092237584751842873153877674 0.0163317895607368294918305341547263 1.0164666233023072287472664008756055 GT 1 -97197662521311435.6766843185143444810900189378106545 0.9037828439695768933431688703359866 0.0534299468352718980259460926661047 1.0549102982192478998870175199745834 GT 1 -53322907972.2634807622848862876636484592756916 0.1370561235898230408828809999223508 0.0281967619071352655611091030941398 1.0286019249590172997599291715649639 GT 1 -434.8297414980373487357554314426953037 0.7498308242668644501108466197890115 0.0988610678111506768802338868032596 1.1040958354931846859851255535417806 GT 1 -44131010655222989711057620783815205825161.9641162324861760834916761253232188 0.1802556028824039479462951922497161 0.0898727339483392533475411079690985 1.0941708364457102358458517614892492 GT 1 -6855597490220.5668969662365908141445907327886002 0.7718262474232840752606337334801281 0.0319600650739044985808299624771769 1.0324819374675861793515211693653369 GT 1 -164.2428711287378655898176335708935343 2.9546701620430204892266793592899480 0.0718584097312537365614836623673274 1.0745709821137961724431170979278765 LT 1 -17672839997184524.6593124986714171611030548377921008 0.2946369230096605990624668073734870 0.0805537202830780097022344272548403 1.0839836600083419732557282127761843 GT 1 -391324706930920211626161545842608530997.0480592836805359891917560719116845 0.7249224319114726915222523735522656 0.0734813102952660049280134074467503 1.0763210610859415004737945475334855 GT 1 -16309849812646260046581443606.4262141070692126200840478040111047 1.1137300671953262436908936710215746 0.0122093829544486944729907974142432 1.0122845297610272174051535639019202 GT 1 -131056501140783351917292.2530015305429321343696159869344551 1.9430188159991222863261391117716290 0.0616356811354104478921809516447483 1.0636170057411090329317723333536183 GT 1 -185314502016143.2295732309379194408612573037294552 0.4874336012540494543192381256324664 0.0550353158305070647243281928597684 1.0566077234359306553459163952468286 GT 1 -1974318786043329103529960757792438128971.6355335680726581037118547890858137 1.5298377892712690906663445562689501 0.0161225005514554916034717218102283 1.0162538821100503844958432592425947 GT 1 -58830016207102499261761474050960.1641417865906621387536318629668546 0.1671819797178945439033155004888744 0.0185880471312021357831682551314974 1.0187629759947576750459650862431939 GT 1 -714458086531030277342618376031687.1274283587886560375233303590294831 0.2057485490640474405596958609215010 0.0618172075847922961566408148022486 1.0638104743184305589600906739959469 GT 1 -21846505595529316214.9725249036123291077232057047529828 0.3753954251155267596766737574317292 0.0564746840587308897219330316224153 1.0581320825872712041485036405591787 GT 1 -8666257618396074642.3358554451637763136897468072348466 1.9257680321220491813045174736497105 0.0208761584392431435355562587961893 1.0210971464326672297808519528879565 GT 1 -1617592102105132902764910459427438.3257450087781539449168967382097353 1.1049458409739622709280418902167148 0.0632876054740378204267623585218752 1.0653789867354945930137398821383501 GT 1 -2981489264082521.8362061986591893211811213203084218 2.0156484358443515123386184108284559 0.0173145367913868142799393733152754 1.0174661864283555597702131199655265 GT 1 -604666739246669.7668613430552311630600447256585621 3.6846591964087718801362589040469009 0.0261391084393847509680215631863931 1.0268375828276481094854656727724824 LT 2 -175020714533.5855101437967688971327270833368285 2.2845929847638685781220641967839317 0.0106639840434111851292030236551859 1.0107212518202346455836907896969128 GT 1 -71919691651254882.5825189286617511869182232500851866 2.5303734163993524529063271937519269 0.0755272177374473884064313701816592 1.0816152806076346721992899136698107 GT 2 -5616240787870382764988.0060302462981604110408969399717318 2.1208752489907203657443389473674565 0.0019849065980328803941190654904069 1.0019868791357686569611929512352089 GT 1 -3176151618112411473045328301823833297716.6773117610807573433436992292868364 1.8350153638669100028031049864758108 0.0992908829627415194691691109216094 1.1045729180750682000022840147338288 GT 1 -19174.3977569370423543241397255727476019 0.3851742514704901358043692123454873 0.0874072691920224101165113251594844 1.0914655758854746430241135383427274 GT 1 -1750615611386902114882942512.4615333635060278091202099907221643 1.0986987367582132765888287245694953 0.0868854847481108653917431751914832 1.0908939788134421802153390883134685 GT 1 -3251836894903557577469113824693.7869628589492015204609824907514884 0.4809602743923404526384696633922559 0.0972043508067549291393862878366337 1.1022590532869163114506758060372123 GT 1 -9723975.3854448255137928217877130238695542 0.6389607778047305460866868395001074 0.0379815037392017887979873785579286 1.0387216016189380721593271995794299 GT 1 -31530668.9696354320092669383696198528742374 0.0256227655707221611160691776945555 0.0188107099885104192804427676567676 1.0189898818515346191085667774215924 GT 1 -7489476060919.4870227208404041376915130283327066 0.1316315918809899419504906381757282 0.0998604852919067043556799028233693 1.1052055113292920712367706492403012 GT 1 -26102149421735333396981194335750802127640.5283314478033495443284058510891249 2.0650693388592177741181477142992686 0.0372299041811152841235587782571294 1.0379406331537465739326145825747372 GT 1 -229857280524.0924384610727120187757866028428548 2.4661647120479040893374525022604834 0.0163782134830761125168008930972941 1.0165138191121977155176041916905042 GT 1 -6328.3809934568857661001036928951409940 2.2073725473500159800870218487499287 0.0850049827605369984407032330388843 1.0888366593613744341036200174655454 GT 1 -4378116319965408627590991048953788686958.0215838408102038382037121389128917 1.4023349673114381759186408760969534 0.0499656234614229585758039993953266 1.0512571092121607928667089998389554 GT 1 -95433514642144575005015436927576255125868.1088376288497984203230023138818949 1.2682390594190866597406260134145111 0.0323492428825495006829054590935424 1.0328840449070531728733116707764691 GT 1 -6352172082876.2774685686700814575005545609129007 0.4259930105247177235124332519694887 0.0801513793346030502827942087922574 1.0835461652326986302090452143519925 GT 1 -195540.4346938199995848413106043788901519 0.9535140453657622939897403307739729 0.0522112075209774145286574179066519 1.0536235942927524615992757061009095 GT 1 -20251795680253661107870575769614215.9359807867615630828083548375112948 0.1354663860187631524713361288485843 0.0923088350217566348893440525614124 1.0968510849129843621259879966899634 GT 1 -88279357517599681049108609109683.5570457694560836315946169832640068 0.1785560508678885234863561489910744 0.0926480933495267589900188386848828 1.0972249144237260510799772280408997 GT 1 -119194936606314129619422400325584824.4510191979212393078586270745412907 1.7244796912258580648008713927280498 0.0942603621658344979772335183955852 1.0990033896983760483497957447394504 GT 1 -31365395340591777004567635373.6971665756004534592677289187121889 0.2959823147209793723452936008359869 0.0687438050839593165504767055107012 1.0712208570516583231422572446337474 GT 1 -10187922475719.3046243044485447121231745248410522 0.1146089731752473410295692579878509 0.0888021014711177888284583803023505 1.0929951731195126376361222117095066 GT 1 -39495414047402206814708994524.9561276970288874570407690020547307 0.5358320920580849969035996283698691 0.0873219283140762456816065280533941 1.0913720655111326571491026815143258 GT 1 -134.6561285821243522516569029172158935 0.4220292060505732394850822934619248 0.0395045686232583565803129769239308 1.0403060532900522417491614271762628 GT 1 -287744756622306548776852359631832851.7887626734606862614164678004372256 0.2764412755446953895373701117453270 0.0824598090678679175464535614020279 1.0860588951821536220788413166662809 GT 1 -782895569305876451.9120003567358435489788344317575794 0.0892101522003225392713565480602376 0.0001904713716111961176263618135163 1.0001904895135866190403825907380096 GT 1 -1665009.4875142453450110905304094352072259 0.1781624037528359832832454352353446 0.0820604788252839607980551806031698 1.0856237716051938919325414550412610 GT 1 -38000516722648761511966757408514927588.9506731022328714197975637545208373 0.9767006109532497555983958409638279 0.0087962516942982059279645313487046 1.0088351670907167233108901632773871 GT 1 -243585033658523566443716315914142598.3300908968846616524207732186963782 2.4141439424595497531955302971186996 0.0009031790040806805832442359252629 1.0009035871159879612337939000318805 GT 1 -59213946547887540539407131911400184544823.4325883702823518819082164350874084 0.7337572987131923970075674569641410 0.0469262221604487645917682150806182 1.0480629619135688871120128028580951 GT 1 -7343769076162429693088020853734903.2922529987963618449745024182457546 0.9710178564538084260608659443420376 0.0419503793642456856742264628953727 1.0428557062819219065194684754015324 GT 1 -7661575.8070192048840831374570298681142095 0.0934545597515701983793757726235304 0.0532447939682754656212273986035511 1.0547147133701182358321339970524745 GT 1 -28877912013048837.3709298240218036947925497405628732 0.9562953536703171612889977268231948 0.0683005185188591635961458461855388 1.0707449610557604275889350933294832 GT 1 -28690940161028234.6918013789144209814440644407528689 0.6933872236525721219591119929201049 0.0449217294028101578955213114587433 1.0459619831193279534014931790245162 GT 1 -119813272930200652190630147542.6905466483026189770102295992832418 1.3404256577277175188754438566147712 0.0410451559851096013146170066747090 1.0419112917402654275898912441708333 GT 1 -50890293688541613021973.9915044280540039677644790215129691 0.1178863425336100654658967930849876 0.0311540156152832270695083617800471 1.0316496225675527101506679502987718 GT 1 -298726114795801691959819566.1308958394434366255843643748666910 0.5560184875867721553427267965560663 0.0859543467034014644998796661410113 1.0898747598732053392593983798074909 GT 1 -1307909975655009848468938027683131295018.3542814962115207925164239358115551 0.7887422861994008196036727706537709 0.0847455342439895104318352951299673 1.0885531477191684655353902459524541 GT 1 -134577820396.2872055188396794128958157734513943 1.5244600187776698860444617868190819 0.0286095413497405593688709330211233 1.0290267713852956794441357409129767 GT 1 -116278673265.8198931284721735018751602868862537 2.2185727560100283817948695379799827 0.0317494764454434202625948182320795 1.0322644198649258480951363245665171 GT 1 -26672655309538283351737923915596609.0854007518104164461171880612059763 0.6409081964175414245746701587936039 0.0032630396415448905265973211421985 1.0032683749648050438356224478716900 GT 1 -8980218506973381.3540224362371736164156579555598877 0.6359734317574003445943746358186544 0.0401779139071411380712978168807157 1.0410073386820285113547405141038058 GT 1 -9568021352092624007448230.9644408006185262407564665736355798 0.2281416851767250210895901445037875 0.0853362940283638594536483475453802 1.0891988157211862318662234782421257 GT 1 -16132102944237994823785241702925520728.9376794223932600861897971024502655 1.3658152398501457112405152183998809 0.0651056224170297346562978421121656 1.0673217212263968464968264992473863 GT 1 -1859952186181764276526494025704779121174.1412968069832361941743003378842283 3.2290608925852078303650760007716086 0.0912428577365829748282904671646939 1.0956773907282455233545744750152691 LT 1 -9924217749232234.9646070826238236024059964448195324 0.1249559062150032092104813389643109 0.0421434323867973597212927450443889 1.0430572328748095115880464424379315 GT 1 -65.6971957231843341256654556325223457 0.3838062435524153802693957593028581 0.0403124328532506775407036111616338 1.0411474983796916348895787360649714 GT 1 -18042283055113243611795602909.2386626488808835210536127768473685 1.2919435911887713256058905206104192 0.0674084587625084428450636665885916 1.0697879647353769230704172526309893 GT 1 -178765048754805481987302.9122011232493084614294997461065986 0.0567645007100633590660483191281812 0.0238163500693755190980334248910270 1.0241045443575043544416341810505119 GT 1 -10841900704354305906.0823295294051469448154949966395138 2.0309671314728265914997786138754714 0.0854532621085451668491122950988556 1.0893267048667278543105840566913529 GT 1 -512042033.7777892538803932494246431843596613 0.1309596190924597165815946507420795 0.0556321404309659378511701787158744 1.0572395069959912940456171961743169 GT 1 -2494024924419970453817776084340481319.0526459367485531780967392827432125 2.2899556772691926025283346345013144 0.0946589621131130283867478241467559 1.1043880805137142662571177077788393 GT 2 -41017436022627695.8825958439735403307866613137609430 0.8530896725484817191678915332116996 0.0025591272750311947114976635086255 1.0025624074386686751075565094087348 GT 1 -2800109515776947092213351.6999123031207271749405894421806748 2.0110599923637125007166676764354852 0.0440301400479807816722490438501406 1.0450288936745716807328953360843732 GT 1 -30.1303474692953059362850630805304282 0.0961211965192872530459396108553070 0.0756685674547126326403579422432092 1.0786845784246602107981332818726272 GT 1 -4491398802980335823177507380730009.9444348713741508167818029102515584 1.7496552847585169158948814100297549 0.0887926703806465250724594784371841 1.0929848229621209899236364721145668 GT 1 -25583838450997154542.1230246890120844871655097065258296 0.2832232397572172271270362560619973 0.0246905202301016845892390216167590 1.0250004432012069302092089666063757 GT 1 -295356927453295204280225043516877.9017182245582600350321891694637322 0.1715154991220641744383906118301245 0.0315937342592747920675608260069954 1.0321035837401512236050334560594933 GT 1 -1086162960172304316873.5459098344396244658569156039551141 1.5813745347522097329619023227550619 0.0815542077115586132523149166066859 1.0850723937186033380394002812399825 GT 1 -16846627141659133.8655851093182320610128110328844411 1.0692852626141599787316246054289449 0.0124471639890444614037254037024594 1.0125252788169712112426986087416230 GT 1 -60316738242.7839675611048001331051372625107084 2.3803310334835475308902715566046210 0.0656870681669904768941572256024711 1.0679438520791766845874640363195546 GT 1 -4277040993465045239378107.6886114729591951859564001751042309 1.3365915700863274873683013652404948 0.0800115159610898510793887538221174 1.0833941263664044329800372890885927 GT 1 -86333953176025949180.5627848067348527176421915954637927 1.4127714167564806001006647917560625 0.0208719002436329190503487792401170 1.0210927974563987654418697291663027 GT 1 -11861239263406369002805037805913991629532136.3851322367255296155276118552009547 0.4061130243907306444572438727139789 0.0652402223216133804859624971092642 1.0674657049727356086944495349880279 GT 1 -4730480384210007958.3732945383911271865124154159776446 2.4586309626521372139279831957841976 0.0062726480261863296934556625639898 1.0062924037399046219448456848271181 GT 1 -49518937432015188911754398254648025.2922159752270255534531598203070933 1.0771401320469843421201677581086150 0.0874697635773404730598398600734536 1.0915340582688148880573170160714229 GT 1 -9079817822.8435992013218996594883100648855726 1.6345176196262550538572340712658982 0.0362037344654118098196767337607794 1.0368753495140732377116521196305555 GT 1 -9091510421293932.1685595754958866544476763180344360 0.9289374026000480637487251744458258 0.0816749443169280413138455245977581 1.0852038598790954442468995052120583 GT 1 -166480832707286656787856579179534.5889732104701695447216156227784295 0.2607123238417424920063514437903604 0.0691962484424364551528717696880098 1.0717068170963260157117781662770737 GT 1 -29524997.6677580195542973362474467018507369 0.2117578784551363916752613951169013 0.0779292303813693789636044113656004 1.0811333017349242904405102851071681 GT 1 -472436.7771748677846092072746915138825260 0.4181009926034577202866653802073026 0.0670601495517152931068183939464663 1.0694145491859063443877617671648097 GT 1 -58119937178.6234331351697254072688428081809079 1.4516183714809302529036178701269047 0.0583429627685761290300493958603899 1.0601141500709212003842909750840269 GT 1 -29033932.9563824723416640799657803284339458 0.5627562864207544924795345133023079 0.0440363497394025919166631154865866 1.0450353893935793375734121353327264 GT 1 -33619036158.3014247435796293350884540499660180 0.2108813042302497499278774585865406 0.0297045939367161170284472290309899 1.0301547115150296917300156953873202 GT 1 -3552565825329343892.0343847208282348957927979735990304 0.3436491009080748174349115597722692 0.0054587611873096114856576976316014 1.0054737146673041644512357447070478 GT 1 -959175120103020033931582656590.4152154298554925179074341951606321 0.7553447925202583239728717995728705 0.0467121428229150081561304893911677 1.0478383672359365034231619873922540 GT 1 -91845523635234326445.3427332940894429417485693637551921 0.7150133031684993232322273465268406 0.0316541841460171843367146048752159 1.0321660077203152186953132585428806 GT 1 -789455427812.3666008273211984142763447758429491 2.1667992658062267328346056909846491 0.0350435337443796894425606972606746 1.0356722913492354232991586515690245 GT 1 -47837.4702399310326018417731994035573123 0.6882091551994956582309516110999934 0.0357695297628548050975682060247869 1.0364249359364587302598691415930126 GT 1 -36901895448562673531465009576192.5423471117854098449025227237263366 0.1785191871708353996943255702560804 0.0367237063116900840856790162663980 1.0374149990009684001718848332340316 GT 1 -809526570932279214349428870.6078710906195129124787302991846990 0.4222281852070930748067548320641903 0.0373426126645218245874606484259318 1.0380577068784351072491491969302803 GT 1 -7.6604133768845460486411551352985747 0.7012621736365519273529305629669566 0.0043243185563199410628934864273555 1.0043336954640629315697416487564976 GT 1 -105.4049125447456729788662328019759804 0.4070578822236148649985903042910919 0.0183318568394565432550311245960462 1.0185019674972254517876605216943683 GT 1 -287372487502535846332775534079923.5113765710568889181062971780171791 2.4094685701658392358215913643811243 0.0095299139736248314272167428654537 1.0095756141815911190156255031734218 GT 1 -2605583894990060454470791.6315170762530808040687919816205355 0.6994087227312583895872061559154833 0.0143038845216598309796464738898979 1.0144071711946983753066002556316923 GT 1 -6336493790063688955813103716802602803232.6468040227321769924100582149245357 0.8464557349119942573060502751711630 0.0330701828091282902791990358794109 1.0336293640418843465133976486535041 GT 1 -1095414.3722161262017995020553775061850716 0.9298663754699373804559438351640959 0.0234479746776057479270896656163001 1.0237272527447090267483548017719404 GT 1 -292227951204443077.0684762092531929643149883880078407 1.9458847272136541761636912698162597 0.0977171886658711754738066710768426 1.1028272699978561281599163421624607 GT 1 -274653524469.0768775423618196060161805793858426 0.3459945648966475919360365476236299 0.0198884460026478045415860790281046 1.0200888831861886183884935692466889 GT 1 -477401787729436444751875988.5369939318679085421176839398022850 0.4167069462617346639174630391234565 0.0527815016323141247099970039355061 1.0542254855163991480189466414242612 GT 1 -11602190387267.5063037762295870377611912489252949 0.4842140772721853973974904000073886 0.0797170959303008802729587422668101 1.0830741517852601220616681538186057 GT 1 -18959574143574009108.4719403973127004863068827850062749 1.3029118431162566008854243716412001 0.0410422970834865234927420655708232 1.0419083104764662475004519098460957 GT 1 -1060768687740886630414059867961136.2309713882861964682404107893322305 0.7503931701543497474535664146948408 0.0477512189399174062006539605285323 1.0489289536871648384121380745550073 GT 1 -1719.1001307314264810490227770644747635 0.1116481020777455809990866094995865 0.0038476067006974746050509230514697 1.0038550277810741705767664410592419 GT 1 -10541309.8728775905526929058138985874166974 0.2851943111186121204984795794282608 0.0071274681771923742090767754099423 1.0071529899210833353249503343694623 GT 1 -25629017326021176540314490660.3857148853837270141450653051999424 1.8285600192325630532174710583169210 0.0241816407044092181363494964614971 1.0244788171682610050819806583900404 GT 1 -266223572611211903778817121417429690356132.7356191062975455706305991783855484 0.9756716333852665291999313000481736 0.0168145864115264903974928438559172 1.0169575564908154569898948785010776 GT 1 -47405025867304197355283004.6562210733068956326660514516853002 0.9336840616930207949746907669001322 0.0215224150924830179031858079685142 1.0217574000144016263211592934826833 GT 1 -3054387007400399881807792085241200749.8187467271070393788322897202385947 2.4031580716490756985712698013714827 0.0714523487242648283104380599018827 1.0741335788000082929974775902088920 GT 1 -51747212566536125529765963023.3203173315701343659572130743056405 2.1980451273611113322032754029157485 0.0515810397273390357992412060747336 1.0529589331384846912600275870374354 GT 1 -567527284485431275451526768129261.6886448914774512695554323637624630 1.0155481875197255772818493254159488 0.0208228728479049982853136415393614 1.0210427262059476163925235107853143 GT 1 -223598389228.8277278157680300822088121629066614 0.1589974436144736572580017994699531 0.0786325280062983704064800808356300 1.0818963299104016779302181192097889 GT 1 -255893713427124299079483.4747933495056572107663763562690351 1.8024218727919009654149253157078551 0.0422154564979407687593576516376591 1.0431324287042991129624191313644130 GT 1 -291318290467065462683417622982019.0494096340438049220342179093837765 0.9353277738279416768582327049721094 0.0389482169050002004768331545023285 1.0397269868693946265570958608222597 GT 1 -27989462331703733743.9559165343459614115217323378342111 0.3730526754244280101072148646335001 0.0371369573770661174632838021916647 1.0378440967966743641607114270447389 GT 1 -748492425870187396954453457643714728.8387768410961347532798358162094921 1.4141441246299505615639716223637478 0.0934198939981373524344496307582353 1.0980758842393554619264941681566650 GT 1 -26312154622638944976996531174135699900.6199454682332757791669407494442196 1.6269147376313315298011847906029801 0.0657814609375724469152372872135668 1.0680448862572277839182788177695895 GT 1 -22654315442166579758706503863915637543.4262982267697949481081734401550006 1.1583299344719794570825304137012424 0.0331283083304531651318233765502187 1.0336894793340444325024100780131439 GT 1 -2668782972765.3536053939384148543034945182357314 2.7670023155907580840947902825494947 0.0425667703002115106681924318704121 1.0434992943538630336584146063300046 GT 1 -564834451170289488566.8435176531205925172235984597434429 0.9335113193365143263616417417083817 0.0559023881788135602421395266983609 1.0575257158293394257008009790628669 GT 1 -6424527361631909392626912323937400990556.3774826483312261730990416261811900 0.1287351259416764020012415190915477 0.0666897706262988774040739570074978 1.0690176260358058507006239841176169 GT 1 -514159365711775.9743647720769277622417902916302905 1.2898720923570071675102004229384315 0.0477789738653694142122306490929474 1.0489581008286412958458386689581200 GT 1 -2708025877798707691123108227065.4375011034409797819836843568252699 2.8476111568784514442462998527093684 0.0417530850069279326015035386630504 1.0426497941442682054866124079185378 GT 1 -10115459170242533185395.8614738319107736540131612288777557 0.2472401177719735330222606180079616 0.0556339074485239006529763764039415 1.0572413781092372644058337997326587 GT 1 -3380533205190723005.8988225215864144177972494679499640 2.3025626232842458171620566320518697 0.0621779092221715594031370500828608 1.0641950166456447233428546075623356 GT 1 -14223424948194746481993554526672335139945.2420510892406431520749598679682137 0.2960344712633428355018547642557700 0.0539038000047872500512159739020858 1.0554110237736078751388531129395779 GT 1 -1729.7206685671431749899836500225914847 0.1745675295177232435078958006088751 0.0021896172362560956284780562733520 1.0021920179531510074035280595271656 GT 1 -266344314139.9233702073633517179600012780393739 3.0778554507944000153904403885528412 0.0744051594263330833835338143456799 1.0773186772607437270933674962658965 LT 1 -11859750698576947639147975700658314.7598454945707156544042398639126022 1.0929741819095494375485214665045835 0.0894539957204230216360222941349433 1.0937108546992618851243031136190906 GT 1 -5964651.4519486131860215525708312747606965 0.0460697252583880966357638315890367 0.0447169835553420771526954026386502 1.0457476301070042126909211030048871 GT 1 -54663421928849488924312282535920.1803042494392975962690906272455620 2.0509602491110823859655031144432375 0.0815616512980073224690190693060964 1.0850804982977465129975238036381802 GT 1 -1177439997780813641822142399629912272846542.5562143091157126737453013257495573 1.2043193009229532933840380806747882 0.0777209567905960195460044966935686 1.0809074513130465537090560895974518 GT 1 -11854579597.8709800352827415724691080214873067 2.5599641127875226701430356415465159 0.0529101932105004700136786133043174 1.0543613573573597457424138050401633 GT 1 -4974735463487603076028.7727429182769555470197465489267482 0.0965367641150509723668776783628738 0.0460238499519270822779631736932893 1.0471166077959635752503688262047237 GT 1 -483.8924277241337961226416640775636337 0.6142441092305956751287451029642568 0.0078002348831168830249570034944081 1.0078308158448243791746829439220258 GT 1 -1093157741306763596020845373284838026.5707468390370455002807478469336955 0.1213791897758175573459225483136168 0.0625877342650689658861023617550505 1.0646321087328271147317524208377713 GT 1 -11129623.9969804059260531132226890998160520 0.3550949795264540107486683471901481 0.0753266749264759806766473018569019 1.0783147659288033366219941827980350 GT 1 -2097157415169125720627.5729764767740754937360964760310269 1.3084203674320834450260986094845422 0.0380305755889043988598106259478642 1.0387726121779816174540391370238156 GT 1 -147099944462370.5460806392541908540928819823222228 2.2694904044303409427399633826162697 0.0245435234457044641480265053888650 1.0248497364655281642131816299501997 GT 1 -54653084390931570102676404373148.9490490764848808974303491200352976 0.8497950409213309056489946822925426 0.0407361620058858912530217791759951 1.0415891241117313509851509650543033 GT 1 -1183841554403750947773282396164931813575.4690329625192556152946968745974619 0.3357217191777830707851691428547952 0.0251018605981062945198785932013835 1.0254222858502261903720481881981367 GT 1 -81302899223557827818128076356488045.4470649145250742100804004219324863 0.6130831422423652439574786380534769 0.0295476295488332149347900654935032 1.0299929549074739610251761319638792 GT 1 -953144415.8960122048207888411721163556338501 1.6384496991595689954918584715491852 0.0726744662251178332425280221338460 1.0754506059410332640192224681727609 GT 1 -2173040962613909792703160767234598360.9964716331201657469584289803918116 0.5523964617008610761321502800171069 0.0898675547178082697302460492233854 1.0941651457956356897798437534832643 GT 1 -1984132528374305340058.9115788756093991395110340734587571 0.5966255049681218107660825430091711 0.0681761695882372405480170763180697 1.0706115053270202567528032484522804 GT 1 -422567297281003237711839488069247828191.1517759742586238290305032059166782 0.1137495425780380179074259666044160 0.0653657197231264348981755008459263 1.0675999702991578543853790416478817 GT 1 -2621334100121192393.3633733784203622971319768302337291 0.1292236555715694393907006673963793 0.0904564291872746293566932307124265 1.0948123758352853403933419554375745 GT 1 -11014816587020695454406207035614426649155757.1719264806727542768226066922635508 2.3968862181923726611424487882760895 0.0266353360847858434926078197914303 1.0269964839519854267694258736051757 GT 1 -16028042627.3087963873496638346376913186349842 0.5521115202493435085313571883188630 0.0434808030311195562878076805904294 1.0444544202887178297660423036398403 GT 1 -4537070726218190576795461888415.9375418708445089464074488994484092 0.1872277349124590348947190682050240 0.0384747332663832674453983425213768 1.0392344358444755905290559604996479 GT 1 -17765503934618767405899196979175320.7435994188260096440437629510491230 0.3390307601068100392261526476112736 0.0507847031007674099087590804005300 1.0521196389801842752547727192420013 GT 1 -107349712008412117782270306985.7175367115089418762387819445465038 0.6417331368735316945681912117534929 0.0753790093383535040439412062187692 1.0783713652612580944538499622960115 GT 1 -47735966545.2248822089193405982194724825942356 0.3651590156699892847090735456792455 0.0294270387425179002311965663532329 1.0298687001597378112941310641649070 GT 1 -8296183699807114917135612798424894346625.8367109447935328386660783336697504 0.7837876925515991794036403912634401 0.0876279781894582068438095445163028 1.0917074534320904446561439430928538 GT 1 -4246534687763055375394327552134965777.2721126294163019204438631149080594 0.3649403701609972907310265619438610 0.0192003188919793962011422783814701 1.0193870389348059611314968035299525 GT 1 -12720915697252153305924.5728630605461032778899383940179063 1.9802985222139425346525477022417627 0.0332320717458555977435888073511112 1.0337968037955758193745910212706313 GT 1 -2472208389809180599290797385947389276736.4229803748078340865114037863095914 1.6666201568454512461559499483570133 0.0492577785028752905297599155577910 1.0505123136459690513528647297268333 GT 1 -66005537169249628568823315046298439229.4080465926788014082532862235473159 1.3702283388779453375010189828929877 0.0624754439749230492151242126953685 1.0645123283871888387847426562718809 GT 1 -18090421806138728371771196127408701271.9192103244594540481816545912898768 0.0637601624939760966309194308665512 0.0550550728075097968327964867359017 1.0566286312898139040239070890672379 GT 1 -139386979442819020646030243.6350502661279006328879804600602328 0.6701343371890296497185181616529485 0.0405170338931997496515278331351325 1.0413607165770108123125695834994090 GT 1 -89998048721.3272915196602390937865381340308980 1.2414742004385309542621283070705489 0.0948290218301567588797966241586722 1.0996314269719864759129220111049874 GT 1 -1690735108476918585504911198.4560071416099600128724561754519886 3.8291844920347163029889235095968994 0.0187856784407895813398506352818599 1.0189643707410020000117474167280897 GT 1 -406435055.8581330180572122744088451852074985 1.6522552634947541984892931480525573 0.0139709353162325669869882653694554 1.0140694474470465871379855055676969 GT 1 -242431555072281053282055513.5026806609728269826847373359563150 2.8537387868304459209007342937040251 0.0876716101062376865888826595277948 1.0917552770819432362262345278079209 LT 1 -1890506616105758267693591404663.3118694856866930233157650021617127 1.2507820443984963705232147026695709 0.0319054239222728755541354595171418 1.0324254939185087962683031700273349 GT 1 -19904267977751286360150036818908018905459.0504392421358763887604097193823859 0.1714705979233388924353303692827332 0.0988324575863114943226643710002964 1.1040640870361439430812755305216062 GT 1 -45099539.4391075307377364321517288050113159 3.1835468765349654179576535170832357 0.0320859338168014403884724226419636 1.0326119702503921489893203114656301 GT 1 -370981875338162286126233.4052311935433487702218132438720243 4.1515199207761794926547726117402062 0.0389268106520892664954286389670408 1.0397047133406504337686585991906380 LT 1 -329755485953.6291973875118137478126088855822852 0.8952934983396741013049717076943783 0.0180603466299012924240490723247669 1.0182254252959108226402277121477433 GT 1 -3849486658623794207.7088383883705909378013353953540070 0.3728479964417726524102711997131971 0.0700394041935321705073153384930362 1.0726130638330457237467830906047873 GT 1 -7810551666431368463327448589.1247136242168329764162910618257675 1.3693832117202091334136356456825290 0.0793569923002198710311567662557087 1.0826829316580711917237748901689437 GT 1 -1457117730382211213769.1146762502278240711526611448339156 0.2179207376937127933341821488341898 0.0112827001030703402939019501082304 1.0113468326120952821351223906346200 GT 1 -61881436213362340329574.6176793444328964596792209024855084 0.4113561031576271612180236099911174 0.0413535844234582895567131927867452 1.0422329732571768819501486462537419 GT 1 -1.1344049783557850820959805999696487 1.5328697017135544288753911535991637 0.0136907515800376561310311758897353 1.0137853341828888614259174173067560 GT 1 -1514528124202188669294733485953789132934.2371059142345642290640364165981729 0.5062072372229478332503096627512503 0.0576301364275890649882845155477895 1.0593574449785504046886417712243292 GT 1 -8299.1748294178464821630492273254840296 0.0255890771946012798128048374043553 0.0709912150967882147727524048394385 1.0736370839124581638931923221357029 GT 1 -232988577616845404075.5060092004763110055492505928215001 5.9343220363874915511737507548243204 0.0830492700114678437699611748941902 1.0867015377345526927243307643736786 LT 1 -83920911718838274067634051473818.9280636087134895353619060502429469 1.2320217181708056893201528944999045 0.0256933611756549319868829250573266 1.0260292006313845683891803100706309 GT 1 -115367319786226337014409245.3263510623242485882003939752339112 0.0723462505564265759080058580360434 0.0616509141295272842780581368021783 1.0636332394335617400380775102432691 GT 1 -907356654331130531981326.1920582051239333430925155781452132 0.2615576556575654324397394660713105 0.0762562066013031810347599060992835 1.0793205256611643309789251904000225 GT 1 -59574744202299818220013544695.0099324094452948054842949181483458 0.9113537003082762951677820126387169 0.0655481482273206725719002612216525 1.0677951763965606401706487813141929 GT 1 -204900783831374981799316012338461457998695.4950596154839948090370847420243222 3.0787580202030074281449216360078654 0.0366042498733457301970991129409106 1.0372909961236952226980385024742928 GT 1 -26412815420727470036176.8689196058829413296156640407120253 1.7772438428333199583251759090437032 0.0445976060849736749376404167206667 1.0456226723616040801882114751534811 GT 1 -5664131418193347080118783525.6717991604987796987945084671666141 0.9332766653076752136218955058303144 0.0508802342270797611953672595440245 1.0522202862560750993178671595811161 GT 1 -53520107943888615453480.6466586162324599624443948055000943 1.5893443849510392765692016162722655 0.0352881150342066116152383881044314 1.0359257870247817881502013105480877 GT 1 -41354650977048801598613710794690129437.4299679350364363577995085008042352 0.5266188226021611979748082112917979 0.0865519813414775325230091883205695 1.0905288082768217967919787083408714 GT 1 -80136109877729689200727021494175.8504806544400447304081893111650282 0.8251162887319283390813395712260626 0.0063517848261034008599300385810996 1.0063720432416345092664215851977220 GT 1 -2292816.8318783107471654545612393608118303 0.0926521888709802568985143303901892 0.0439629101562765224765559229043921 1.0449585697756557817881340693576347 GT 1 -10275472.7712169662609614020343066750322299 0.4879065232037040847938096880175405 0.0638726962213242370632456442900380 1.0660038034422856921346850776064382 GT 1 -12197835708929696922587270502872088148728.2325895707115050228592648793031079 0.3578170130153205228085140657909018 0.0760654201117397028011160006008767 1.0791140108336923433387502682043767 GT 1 -555687512.0620971448989091826520816297726553 1.5420928848108081469723381323526460 0.0974166304314712928145514711753445 1.1024942167883069998992667596630997 GT 1 -665118559526755717297751364528454636.2791236972047138235461222751135779 0.0058461722482577735476199686635034 0.0789974058760763224182247076547798 1.0822924260924433124097215009105639 GT 1 -28149217169701344.3509252480983460596828765124962612 0.5519767540474273875203472770445678 0.0960255405167871529023757150878615 1.1009541717731345612330641564371767 GT 1 -246546960933490472415864328069654454216070.9194966178039358655834660388036780 0.4225854176209200039839300501384873 0.0648872468611996090243063390851306 1.0670881653717317283247696255174257 GT 1 -265292461891947974238.0283441691275219627465402498024209 0.4767667148515255887709394345415284 0.0361205089619283923711735167003966 1.0367890014825110208925956450625908 GT 1 -549357276.7997207152753790124944767961956121 1.2098491432586488936355066398553727 0.0872422948925273107794194500864272 1.0912848168414047775130311141933013 GT 1 -36738450471.8812700015696110091380300444937890 2.1327389278005663249469437659572264 0.0006831314741025055885484330234991 1.0006833649147277736851326902828021 GT 1 -195286522040218091.0843039421066211373062284254382952 0.0523495544125656376217693297588393 0.0225382149346323905477063643976655 1.0227960824491123091527980650886218 GT 1 -21040018720205134386512868615682211871213988.6120023478290495956328328125851553 1.0554356307404191184373241733164507 0.0138645458960762972012171443450711 1.0139615564275642263779930433086128 GT 1 -7485673676411865584652446599008702702153770.0863831799554224759696261421102032 0.8212743558729692225980082514829884 0.0273933489221762835209935611238656 1.0277755425844418815529045723050727 GT 1 -4084859982102888603652540782172477.1121074636286033124052544476894926 0.5245184563756921361014328312269379 0.0022291968779029184654443725274117 1.0022316852359776324130270975554446 GT 1 -310235568094122982755772526992863.0062930478346065580475852316872785 0.2162061445660373768171620405291734 0.0215351296095141750925426867788287 1.0217703942820633189386246315312641 GT 1 -6.5023921082143637687926171195787892 0.0472779636725599833861247419706260 0.0711956555723165361266446051366404 1.0738571711463417813404946650101064 GT 1 -6.4633958904139547007247192620519623 1.1129487901793990076077210244700810 0.0500200443376906900434658124763257 1.0513143939129762597892764376942639 GT 1 -1740294731075.9440176144913651709448095828054078 3.0468315305254751319225093584210111 0.0091697647470914909132287842425726 1.0092120658324267021747738852305669 GT 1 -1896399083586452173845799292.3405498384273140039946497850864288 0.4061873383712835905834553567440218 0.0685732047283066510419428860347145 1.0710376800354635323296559828799062 GT 1 -962744998.4190406551187253540780553672106139 0.5730188464922041594111068787587683 0.0848817173433420476926765477716980 1.0887019513983337330853215089058086 GT 1 -113658656.5414578841547282484642821024010006 0.6707866089585985854052721783568616 0.0204957473144762536856395572932041 1.0207086999167944401448042222934887 GT 1 -31.9216787156286069891337020012338049 0.3125396069179813972362908417678496 0.0759926772979875220339784398798619 1.0790352823696775500502628134939694 GT 1 -30132251003066333.0262251102264488937333533723464242 1.1479384102065398923930422119390946 0.0278401061717116461222981281156999 1.0282349882269683722597842557404373 GT 1 -60378327643997056020862749939149.8604985352590094275256308477948745 0.1191306828065971330044780129087683 0.0560232029077666549023920311525733 1.0576536924901613001333473537768167 GT 1 -24291212681091635899599233560931942.3886856968133688061218316408969427 1.2929035970094628291732266857983720 0.0965415981702868590895958287578733 1.1015252111501082688713077301699154 GT 1 -755052455533646537939742034925.4446334641557698939381646142275169 0.1115845752133075515056341228416708 0.0632168167578918125162598666587870 1.0653034181384616317167962604293106 GT 1 -3310553011657807.6780130268763438540179751988621163 2.8649151700042487015858534167428509 0.0756205083055375309776267118234517 1.0786325863597507754042515499724081 LT 1 -1110387501.1746559332496687473196414017603102 0.2886390657267007630594833989389476 0.0561421386270801667722453895080390 1.0577796947530581648034815220008802 GT 1 -112866301821789.9584305156122343075595406486349355 0.3987929310675860183185966721578681 0.0920528463907174342021663283298573 1.0965691029454143380456708568103119 GT 1 -13435180.2635835482097858254536610439532834 0.5074861398855553814224899503111923 0.0434177864453041495939478105977318 1.0443885413076125348127007347532317 GT 1 -1284802726408858569529062637150429.6855880478293204569644438465164106 0.1498779056615580942842230528947901 0.0308514971017797317163761869601818 1.0313374250685961847450127017500839 GT 1 -84.9368490012303336172832305761767701 0.4940975947177384924223564322289650 0.0931551166891773153316133033089600 1.0977838652009038434144388330972357 GT 1 -968377990822998360274373.7906196546731417379743859771512982 1.4465700398504107275475405254662735 0.0916096316140929707629107324639768 1.0960810716405999339360479805930682 GT 1 -19.2423700767729168514216524338248904 0.9332037875299803936123505071866359 0.0528105061970881393456557571722024 1.0542561067604987865597221638689040 GT 1 -3586042398489503080927087567748185522847404.6946438791984804200432259134162000 0.0801058280988289365451278143764913 0.0794225720447096963353026324304588 1.0827541667402456137080520787027512 GT 1 -1416441970162.9370957948922356131192115488703432 1.9045950115873414532528086485185536 0.0748157430898052739012183862475042 1.0777623646470622277586619897159383 GT 1 -90581694944.5900131031002089710308472599725182 1.3710229894505955914713911948053382 0.0139521584255961010476191561983352 1.0140504046900654096411893508325439 GT 1 -78587359943938.0608511242357277009118620800773845 1.0574958306240843543700828751237887 0.0378323019798657785100852019354563 1.0385665212425394761187187175453685 GT 1 -3446077515.0338871351575429810361552113788785 1.6408887055430234750372091842520460 0.0160532652079911558354262519004593 1.0161835147039699074338878437886820 GT 1 -58389719672287.2234731871599146709232688566409392 1.6735227430131858582750003671977347 0.0062900104893350477099192183199970 1.0063098759517693654666738293255768 GT 1 -5210364041653329459.0432235986728884417078088356697432 1.6019704199480867118872943164519197 0.0281573963588752568251393968647984 1.0285614180442078897597362569306333 GT 1 -4903017538339961712934213.5311569521961502721307200808740663 0.1824484798049457320436745330234122 0.0479785912498090571835630039708370 1.0491677562606534549153680576851640 GT 1 -4456936760075.1271192823837265976980573166053276 0.2022088650364618761091242729608873 0.0321195203153825071659380551684554 1.0326466707289694146892956120153473 GT 1 -55506048008565029764033857132953673.1232851642022775840809600681773537 1.1112523390696407261575771556562202 0.0529542534384015240573573122035531 1.0544078801395661720205376587268656 GT 1 -1996261645669041935380151879.3044903439179881085410140793230705 0.9370769159773725881485791741106127 0.0874072204403853578107918035152017 1.0914655224644532998433265310568172 GT 1 -42534901307073170.7699397684225185064956229034197784 0.1469804508703413528812980408959458 0.0428975389478764594657090082416097 1.0438448284199592578295152061988876 GT 1 -1601501832160020403.7403717304511532326216811223843662 0.3043186347690288933839716166561807 0.0337780046333604793048844491765967 1.0343616623034752763345011110769972 GT 1 -16409895649092976868586.7958419277406749127443591468213129 0.3793148150702897632242070254286495 0.0984996250424140891653776564310307 1.1036948204125222361272747716797610 GT 1 -36130910025665674.3129790468178442525911356505136160 2.5355397303093534252973727830876103 0.0938051754919033943357878043660853 1.1033521773284459079679176542236894 LT 2 -280522255214934665902.9022015398673634008873763926505929 0.2758668649058973409875380671253445 0.0414676067232115818567980581653713 1.0423519212649069774149037742461577 GT 1 -903808721432853678991974476675320644801.0981244057004777143773302688819779 0.8256412381083642493918068536534624 0.0917152838308309632601257629441713 1.0961973854688186780140027835332595 GT 1 -107513810214977681703804.8952340529664679547109063492662929 1.4649157140100397424359840407928162 0.0166619573200233754206868677390698 1.0168023291617713301595702569309901 GT 1 -433990616942238342612742672622.7584821863676397541726628498126872 0.0459782549659147676068733522769305 0.0409760492430118914684666845403277 1.0418392296900321403243594423718901 GT 1 -50946004913531985199533837207.4012808494088161256155402487536851 0.0038777586109788177918127419226145 0.0118292619847784405200574244192925 1.0118997844082036145090765930474781 GT 1 -662297645919665282651140931.3456447929414830189541901889216493 0.3097497436102940788294580925658917 0.0369716187713023840638451605387698 1.0376723959374023836562179741261692 GT 1 -53842343409919281499571957554370952686.9765426456088406030993061872506482 1.4861236193158445913478122270336744 0.0858892388015383982529212343552624 1.0898035319395620620294306323208782 GT 1 -41308206041298.6129348078682770993580065011395313 2.6222192186905410967033960448213533 0.0185953532150521250233756131163182 1.0187704204843256885073479573896790 GT 1 -8323156413002172861557583059.1935503732850159460346513277365746 2.3880869345814260229123040616512935 0.0390210389984367555501853726173359 1.0398027630698483088446373370802391 GT 1 -4709674414614579678253201015933069007293697.1892199935740663177873415696950941 1.1596907470583332614656342852098130 0.0203315765657905666875602610788470 1.0205411080030534893827439486793061 GT 1 -16808290558.1574307007736559297563217958170922 1.5867009986737377909896102473994317 0.0295325642083247684280766386729357 1.0299774309889068029453441014441493 GT 1 -1375.4602072355643147655868269949390478 0.2373200129615030264221586097172446 0.0414759391351263702434697310817895 1.0423606141877437976698201569890648 GT 1 -659204003833136806623322127169184983390.1108765129323484951188843826590287 0.6405957204687470660220210248842598 0.0332168482288936141128386084137440 1.0337810571032649036588013575428749 GT 1 -92979516736532538135.8318521032965633020256728654049568 2.9357071570414301193622250825892636 0.0877508446222416209787079345426473 1.0918421295330863320015886720253554 LT 1 -725408493.2556571914826962329210551143210543 0.2678558541053247007617805029445040 0.0381762120682699977384594652538692 1.0389240177227245998089638039220043 GT 1 -1893883637939449666433365428088079875.7882880844494878977402469427144080 2.6299995509022762164831436979001785 0.0790420623757187297041829089414977 1.0857309271692449838918165977951332 LT 2 -55498516853510037.8990418032535661020661684407672482 0.2886297179073926960775977982346323 0.0008710937574431467610014812079615 1.0008714733800842275910930847730554 GT 1 -159480926627427937511193028187100919766.7362495249441093126018591682911388 3.3172823181773892019711716173220732 0.0731283588906803808997388418908406 1.0759401899839569813835299647827310 LT 1 -153472858065732602982638131227901888114.5470519721982979996569423507986075 1.9403106595205392586396533543796856 0.0433285305718510541357716931312623 1.0442952386010120255186259485547440 GT 1 -4787814228687931353368329501229629976040203.8740036882460494790079379856070078 0.4319653501708306138645680593354064 0.0683072781706714587133810144474056 1.0707522162667678748580202577919678 GT 1 -24988725084070739532166805126386097.8362265826799772557766459390118692 1.1860070378181793665434691158174867 0.0476946780154018466621562780370464 1.0488695792388970975827878949418659 GT 1 -2627627.6332502023918313795867709338142461 0.1706610723937424279114775942842976 0.0138779928594704632423912309069776 1.0139751925411636036652033037489038 GT 1 -84773978318872664917987634159078647176142.3688123280959190944244450457946304 1.0098135658183520562797400618932540 0.0696365408905285758019437577488768 1.0721799529368697423560736794054258 GT 1 -53.2164095475207806738074496555103754 0.7724640039925322558354499295674551 0.0011111596751139657876526376828942 1.0011117774707145396690237420868958 GT 1 -623026315728320687622283.5453758615244499484573688403218125 3.5472469486317546182555042346448191 0.0810287326846445606784556045050264 1.0845004222780495183692279655312206 LT 1 -253561332098955812764187929265839370.2815721929360828617548322784806897 2.0586030050688989852014935888581994 0.0581048436587780400563756532605693 1.0598613096007933403894441734983409 GT 1 -1043355896371962787130291163089870381430256.0117778640630850473517426059137718 1.2195091218227418875292627437723558 0.0899788766853953246879041395123453 1.0942874673070141840812096840979076 GT 1 -28920469136093714662597729160022767.0208115562510574479036450055616319 2.3317404582000550288502354198576056 0.0873066094751687069168008568315153 1.0913552811587692808232924363705666 GT 1 -10959007215675953045654328.1625627874999324877562704533764673 2.6645097885359324249781423756171332 0.0796742478436178123155297584076693 1.0864743837937385757675699858272663 LT 2 -9718337.1558870896297590804501164170702876 0.6641747369556106416921477595788194 0.0921591898264001813089532119314028 1.0966862349431204842779378463915367 GT 1 -169993519.6551402864869724292381252742070399 0.1171938119222702673549511199285008 0.0442145814208885834095903925074984 1.0452218486783332176698692465254615 GT 1 -1816465373.0243409148399595829858282367839051 0.1844159295869011336138479523946834 0.0707574890013964435628032902436483 1.0733855290262705494471879922396402 GT 1 -174434302307682951304611885461765771027119.4775316021367658756859008404552469 0.3040931795606531860054698337482920 0.0689353414300103626794036704126751 1.0714265534507163646374219107885632 GT 1 -14087349898060594631185660.7905530834672742234474189983364909 1.0879366419116371202076541635203074 0.0099712536226476081586092801812826 1.0100212995302591592553189688092288 GT 1 -8119607894231437592271935691.1790553343486602061917201686326749 3.6956840584031604825759767427802697 0.0058421254992228592581272241216325 1.0058592574717389850407826153931867 GT 1 -1703090308339121954071.3148271423011828980322398489369523 1.1391749491943141648367561446636633 0.0456973138080306454267520185571075 1.0467743767332045563153628833861109 GT 1 -10504529609642713410087.8535320008084887718075159275616050 0.8192184550032028232720127146334496 0.0067749279041138406495874701778082 1.0067979819133343464799932874558336 GT 1 -1821116858390145643587981139202544.2480431632437480968706405084761448 0.7429358198652812572636607143602871 0.0446272198511490577875869304377289 1.0456536689608688390150679094160814 GT 1 -20631901205770897729081558.1077317456281075176252914576268786 0.9845438700384913048878191755446775 0.0543477121051803164111442745130838 1.0558803378620108563605885211520311 GT 1 -187123957060252797021658759347.7636094617229078032565968717353510 0.7301082040201966438081517929771761 0.0225549013541333565867712091568699 1.0228131537680998339710534828551494 GT 1 -1689258903344288807291414826265633003.7529226232957131530307747638129243 0.5468953779812160688588442954874943 0.0432174005311377896731280374469939 1.0441790821249882510384859029561131 GT 1 -115969119423578.7522622974153501148514539383757757 0.3532534495352615662537820865715187 0.0238509122153808711992568754779970 1.0241399503570466350177367582413188 GT 1 -1253644063.6018871534971481822618535946633834 0.1821076005070612484377081274683801 0.0632820304200343761980295892999252 1.0653730350288176049811779042570281 GT 1 -5360032716358864981449569659.5002561452935207776329250027729642 0.2952029765317212535087490769399726 0.0458878490018957427904632239676675 1.0469740557451102898963650502307778 GT 1 -65432295374848878679207339023365744444926.1302115020518896022652397469192702 1.0089762387078511005569343582266981 0.0383055605216993217867172591905492 1.0390585092516127449881731351869299 GT 1 -1689802768809613.5863763002660883943741344492853193 0.3551586669266899337188144375118759 0.0252249207845882677971332668689891 1.0255485225810488742618055637352566 GT 1 -537217832788137295121292906093196910.6057131535131678034073606087566648 0.9978654398237792223828629380374555 0.0437524435817772593520505226982024 1.0447384492242927964012239669230392 GT 1 -8681691092989.8825504852376328773496257693415665 0.1455703070860077298773114742958035 0.0299940051449552450891665313086331 1.0304530272408735551706438642483917 GT 1 -3890494928297023640.7474555466354701371041254021191834 1.2485599075410705240784536588041657 0.0236111972707964277122265612841206 1.0238944084426454292825099020386231 GT 1 -2137665619875577579962558615027.1268428294962972299500742954160253 0.2088400580099210383631337072733720 0.0686924648995609953159395844538408 1.0711657285386480654580877905003976 GT 1 -11360575901608092274962078128827920.9271200411492160769749874505009317 0.1260963582932803499661559704312405 0.0929206372756438123921561279898802 1.0975253324475630626195879825681327 GT 1 -1338.2001091374022768441305176032195282 0.7863408526016997345729563839292345 0.0307741479788427034132363163744194 1.0312576168284780876327140556019438 GT 1 -514791166769527.6794762793741639845154216361542406 0.2992484574828828389787769035462628 0.0381831388490625664044583536100982 1.0389312194636484067579367560934880 GT 1 -1.6477392295096792820889841523610553 0.8973628155964205068090113084741031 0.0374789662649736862678451155237017 1.0381993598277799711346265969671370 GT 1 -14580006368196253343538736.0121078711388771886830241501572059 0.7982877994518889662533132932551855 0.0103446215218138957370142723388771 1.0103984990025440767584142379741542 GT 1 -18432302280554862807117887003.4515228020742612933761041793799303 0.4031221055942043187507346069165964 0.0732609230640161022430223647782549 1.0760832234399800679927644147332328 GT 1 -31329228163745458333060.5942216539218098694956280319930357 1.9909817822068626522569068257703909 0.0344364247540652847190064150696813 1.0350433323151131739426444071147423 GT 1 -85424352256797000718014616793051927.2037800309835090417715355853256453 2.2455452814686187566771646928169477 0.0038385147565786172329996353797361 1.0038459007612638475356365791937062 GT 1 -67024738400189.9082637941335079857082215202698865 0.6415484762286289193694978563055988 0.0320746902799277632532246030990574 1.0326003540625888016343273725790126 GT 1 -453402.0235163528881322754197695176305889 1.7378069359953024280433035702336174 0.0734495199179130875541749462740270 1.0762867500328255573300528344801392 GT 1 -259161571998228675375767.1790212138948917138838253352378074 0.2488804770154902864951167041871068 0.0078777205831065507370750524466193 1.0079089137526135930824210875755580 GT 1 -18381099171424761216409603088571788926627662.2210346849613161674728055277393620 0.2847595291147094659149094805923747 0.0037675919122966539504233427167511 1.0037747071639040984451919076922206 GT 1 -106818696101701376853291487485084450.4645559403218400308171940255313103 1.6104663523619236331437457856811690 0.0922408533666126035266866761641146 1.0967761925793952847767940539541404 GT 1 -22647805412078095733692353998455.7056114308342785421489889277602503 1.0936263746571142726190772373351356 0.0430640366899318760800727309716205 1.0440188037595931555301127625827376 GT 1 -215257145306440133310.9350772157079734279476693535657163 0.2553731360817612107078386421889860 0.0364611129524869159014013150632823 1.0371424317475501217217096118498036 GT 1 -8589081395.3559726301968691418556541218450502 1.7667967480823758731413623641945251 0.0607525222703449325800019952049947 1.0626762799406024020251232977914365 GT 1 -5154263545338300.6186478233333036431034685274478568 1.5975736507932880449101529156993948 0.0774171563316449367653627959662303 1.0805781036650105981212264074090125 GT 1 -15000993723436338776937357.6495680428639582752067538514356390 1.2339991845349356791076104469859237 0.0667592610505758803069392447329425 1.0690920846768913785214643045416472 GT 1 -1727441937012659285374498.4254877733613005619496581634376734 1.1724175924097486058611211871139965 0.0382795260800015111482791308287044 1.0390314381901188910343507552570190 GT 1 -113876075637499226604482986640653702981.9263077984593053650231454586081145 0.2530604708974030712759021124729678 0.0363269539165023641985237612314497 1.0370032057144450828631462170867343 GT 1 -60046257527705.9758523332536729830115494570050472 0.2179505999404055116091532404970782 0.0585281020390763065108353922729424 1.0603107794866099058931646672213199 GT 1 -627804282341440042417.5578711955328299618922466906955538 0.3305161505792299761171913780960156 0.0680131265793021042462076954528627 1.0704365487082866351485648589719064 GT 1 -243804554316232560483900366660913667337952.7974944674281737463840942647355729 0.9309190836848174748523040472337708 0.0221431821881979265191622729448443 1.0223920227207102464905119244178970 GT 1 -72834378474902126405729961201238.8117831131834628831787294933524655 0.5114652530232780133381055331137737 0.0455361874956499988462119456719545 1.0466055490501187439024929989260537 GT 1 -159216519041630062896402.7884885270084359099702184995493162 0.8340981685722582777350784949114502 0.0467997657252149429118204849226797 1.0479302879804242418003459556628578 GT 1 -2052922351.0880063030873782282954988928740383 0.1025855753549194947704155291183160 0.0520959098166281974085559302568728 1.0535019525378607547619400738562201 GT 1 -84962576937575877287022285766790700809016.1111534274364238150299051705973617 0.0785817464540554230271729049298851 0.0414581580249631656345824150804903 1.0423420638498160573087759092821846 GT 1 -17494214960569104853496433054649.8379671585361896904039930124982115 0.1870546529112559923435837616799341 0.0301120179304372676760766996122143 1.0305746965558272474279723073457532 GT 1 -940.3338146539922774335555651948771865 0.6189237235801953533167167673368704 0.0593039631130792420801880373531094 1.0611352129535535544922134875835754 GT 1 -1682308019234595444699934.4402155505192016034650606629161296 1.7075006279251152721702189312228660 0.0711596072189990467836372470963591 1.0738183603311197267002017987756863 GT 1 -8087964800475494857956625848421676808983.1294653106714753406519678838723189 0.3811426865982708805255534956234499 0.0616286776940286461477389844958841 1.0636095423123466675996666990960112 GT 1 -105874285521276079860342210121.9871923390002362922748914498633704 1.2124004503525930132616631634776059 0.0256773594195470620224746239398018 1.0260127770291351786739987142861932 GT 1 -140964466302220.5037290002662910509791299214971911 0.2249609767195884492522889235191611 0.0017194625640713927906768397138685 1.0017209425365742034581437560698802 GT 1 -33182097586516254026910342.7334551176016431120335191699693262 1.1303032982970681064196748025549746 0.0128028166832981143904133312083722 1.0128854790393974045244720067310000 GT 1 -14712903233832633855083046503.0174014266117105827743018958665832 1.3384160406865697461184572783433451 0.0687096521228923923442850623302191 1.0711841836474925030699191787355505 GT 1 -18394001651543268304044.7896613987952974272463112704969893 0.1272043685560212936043737666076517 0.0747443022335392276595405596803491 1.0776851496516542574542382891614668 GT 1 -50984.0899531803862630158523376244652155 0.2275607419418345162886243431468172 0.0886952200677987680255031980826055 1.0928778823141769736129066967724825 GT 1 -5011800133611035416008754916824660056.1783346886878123428085001946950509 0.4349463903134525591317915650390517 0.0092745202784030006007836719450843 1.0093177964264417643313900282976292 GT 1 -85659.7027367300913140195074340661729572 2.4765344133250323470316599098558889 0.0644852599856723802608346984187956 1.0666583770967422597404485717659722 GT 1 -1.1339844799084551988935553570721540 0.0087567761613899896440443869322503 0.0154660157764048621520935095997188 1.0155868622264171549617659448523149 GT 1 -5.6345272803958690616560174104817224 0.3149180037912946845332245044838829 0.0995909206459718089187218687549739 1.1049060863108972746054072112642118 GT 1 -23262764701137591929917359364786968236.5393199106538219785892197176469836 0.7559022160785073479238175639639487 0.0531206684983465154206874419054001 1.0545836157716677886062318492911372 GT 1 -208483.2533176955725653948916427342637871 1.0880990517317967651085182852046561 0.0934484300746116053405931739956947 1.0981073613536273919694055543788281 GT 1 -6183.3882181915845962890276689672230869 1.6282453836869326364933334111841586 0.0174245798919076970118789325464631 1.0175781747160888141067494963072893 GT 1 -184735874231296867337920759484787505.5745713273792044160374664908210335 0.0263126600463482495349826630422130 0.0371431183764163790642353442287803 1.0378504954419526418471235875192248 GT 1 -10878746065061751712799849501208717924.7831624114870877156926452866967713 0.0675414881597081807750136669622382 0.0381301218191116266527120249137892 1.0388760992313565545874146493782370 GT 1 -17300155986107853989039364577496.2019323947080479438425009850747353 0.0950464347504738447584509340656555 0.0422435486806625780396787760794002 1.0431617595124622058513057545860712 GT 1 -19262124535102824029748897653286.2310289095504451630487737918190641 1.2604558966779334679144973535198894 0.0320833179189800675868681465238109 1.0326092676403383310466995883457160 GT 1 -10538671431312650897128998451298527.7664514560804097959665149570963730 1.2974652446725766920163874933665321 0.0010601387242157385118067765499801 1.0010607010687503062130613897439137 GT 1 -1.2905144870237713131103002933041006 0.1621486565482942537454602929837120 0.0127848484893224546159187634328836 1.0128672779841677462754894777596439 GT 1 -10.6344825378284957096670623946797532 1.8732729152428700285405225300643986 0.0646754549617386169985534534567090 1.0668617029283527865309481775762487 GT 1 -4906544858532485835119335253.7400392694412739795204846879082673 0.9691553650995653045573372064851848 0.0701631720656480721657939449963307 1.0727461620626901838052148271248542 GT 1 -536219164195869141314726573.7120738435038468036499162466595322 0.3883853777499879993264611041983696 0.0025044727321941782861428304129921 1.0025076141702207301026483768863641 GT 1 -5221256385551251656801140165294702232.8212668557244522513098873738413096 2.5255624674849297029801619283759369 0.0630872069954930046551683359824918 1.0651650715077930136011105924039608 GT 1 -421429.0395406364830947374063644935945631 0.6250433149788695077178366698847071 0.0360342841850987707245195727695135 1.0366995495113873946181777988502720 GT 1 -7602746000729.3256135096830102310130084008146500 0.3553683501671454482299516660279154 0.0484333696058562800905301544518839 1.0496455680091491627422489736052073 GT 1 -9293674204856239.2506601421038414790108070826987914 2.1164353279966257350531308783193544 0.0468691383396190240921139183685512 1.0480030692665110354310411507070976 GT 1 -1720154695164488060.6220065416415719476821203558452824 0.5007066149246342809073432319767206 0.0649041833828654378602283202417873 1.0671062772785427446675197874898324 GT 1 -9957.6419019723684004338396987427852806 1.0157290262838028298720160851199863 0.0554414595370466310832442205286555 1.0570376135875834574591016149506763 GT 1 -13447934417805671690705212.1049683400966107186696208475383776 0.7713234916536702970825774092380981 0.0139914175814619770910420850549942 1.0140902201389475182162935938347251 GT 1 -7016219369058855917708488333466923655476.5327551878248403446154811438578317 0.2593096634709443498037813544989436 0.0882228260498750761701018579727609 1.0923596455695366628192109493274904 GT 1 -108003120471148850925027461551203024040385.7102881954525126824826059848122718 0.4303756206968346435366461161155905 0.0087269426876726118133334529047708 1.0087652454588898882378475981271703 GT 1 -983891630247980756464265.0350801152645349806764614110950162 0.3200923440553257343148338922332473 0.0365647522405384772849053244538628 1.0372499986175765052915384095149949 GT 1 -6110671826245570374826556505271773.6054618903907771093752532678900949 0.7190485899860740023468162133600932 0.0551846252063970616694179200607710 1.0567657411644938454383282987991560 GT 1 -13.5703367061815023003606560887076253 0.9653128293389707013112747593838937 0.0277792605995774251807226535814822 1.0281724021559962027136481728992191 GT 1 -709367393317536.4539509577310358768405791953094215 0.5128202278897182866255699713093513 0.0587757258430522755902005761552620 1.0605738318145118698607393769730851 GT 1 -7763.8543579538706376258238693105858704 0.1166201953494029928135056901208233 0.0597815794648992268586421707586309 1.0616430684386350618659259197727170 GT 1 -4583109562465051104300849113190685262227187.7017309517649136549276248739146617 3.8637614441380606883711177158456779 0.0487903189951050401884833719188691 1.0500207559818998893884169037204690 LT 1 -77911295824664064302.5727370041913105494517481843750725 0.5672168500381140095669544291197554 0.0015201146445822617730828398869819 1.0015212711910526750917555838153105 GT 1 -191716883134888965417030169708.4946468969257893168608969474395497 0.0528314888985070699755742171976316 0.0975064798266849403598333152771428 1.1025937686642392239855748502113913 GT 1 -971039517967176243692221674719869221128550.4918679041243642831919654738749131 0.1636895356668267697084934875718046 0.0900266293114467905830243460998160 1.0943399428790225255701869455194375 GT 1 -81392436003382058018453244976.1075574948415538313264452437928751 0.6563757742476021734901389591801094 0.0046245202826161877394768478178766 1.0046352464582584201224090081988655 GT 1 -3834150884089636525920706128856418025983.5008171936027293739679304384974816 0.5972100854004804893453771295837449 0.0959233952331604293901927426402943 1.1008411823938464688013727575262760 GT 1 -46500051347676725848.2764115440769139630582794034370483 0.0507843672524892181476164882201532 0.0678331622124519927149796767076963 1.0702434698153529088573558441198479 GT 1 -6920914089972257426565301418.5305292159590990290948459549690608 0.9692374624893228819426447119215037 0.0403464667623964317819125471252979 1.0411829625388684543940795256798821 GT 1 -3054593002476431378.6913093782494113913612296420930129 0.0660374193387821460218599433034580 0.0126280093999210757206696394286031 1.0127084203815971621094935182077867 GT 1 -47919.3536592715091864434020965317723240 1.0280091546441791513969507165337561 0.0166301026722344526161755939668294 1.0167699352845273271720104850361491 GT 1 -365985129928338797656933.1975102016020332293490545816274805 0.4797163201801487313996405173525411 0.0417472058333084046551169900809437 1.0426436588199668791381896062237611 GT 1 -17812144626219528882.1610135915215049106688595869426957 0.4084858774342009667099415602369236 0.0269319075788124931172844110487344 1.0273012173113642412009950187318176 GT 1 -38.3303029947597844936041120576357956 0.1233219102778160148759858805676061 0.0566123382511809906760759810283149 1.0582779867114378760854816355773435 GT 1 -431926395475164860432149584.2205953192213657390656663667476922 0.3927687883174877243238400280472202 0.0858883727913811330181210059263245 1.0898025845601154949745500063966520 GT 1 -70219469605107.8878084439703125728504719810216870 0.6187931744871455221011364713639480 0.0080032507873083082628218120613466 1.0080354487059686343659150399132535 GT 1 -1687126156698516359895299029657631.4657432962734373669676618194754761 1.7603507581902481773724025079586002 0.0460678776340901217358887401377430 1.0471627606250145742385808994222946 GT 1 -153351575742068828.8588099573253218141558343509135539 0.2195875806828188722357936687066038 0.0556034470901272299451675477658071 1.0572091238093415025158225066828524 GT 1 -16486856129748320632775.0669705627274323043665650948983380 0.4723683546867229158367044286132865 0.0568786775018481111037499751809632 1.0585603487406258778828531618443257 GT 1 -2336.6983556297208534212511577414556506 0.4884497584278456163024551258483424 0.0424471050164156388167600809760339 1.0433743166504643564393582598794326 GT 1 -8010995456655072725085995828457220827.8799712325119118926604105970725185 0.0128636798882723462028982948064471 0.0123261193746063463072598655116716 1.0124027160614453360221160434354745 GT 1 -34593869.6209498972797445036049735314057789 1.0123572124151245518403997757423289 0.0833162333978729883489138146267238 1.0869927226885746729223709412425467 GT 1 -1513145084317651182868091168509404239236.8276866262170032042068232476096411 1.6063511384641960643385345490098029 0.0686271114542426355035050834516037 1.0710955571399308906706767608503199 GT 1 -56840674177717441221541138338549.6454297784829247303255800728998683 2.6353167753339514070258719625003186 0.0342151897314643886516917392914977 1.0348142332823049469393749280091344 GT 1 -527832.5472576391343356478715347603266302 5.0520421818596537864835594360931116 0.0524261794693211287655223351508313 1.0538504342101275964521607137191461 LT 1 -377911357409423238333958.1754830044361098888321463978341700 0.6730360188235851386417402989551009 0.0032585532466272786151609707324166 1.0032638738928078613617254349280735 GT 1 -834210294768984944938337501583151160.4572213748402283404274309492075394 3.0155888756904023166086201315765791 0.0647679250819247572494821957381308 1.0669605720235460922581556483961973 LT 1 -21330761.8026172168972175209267854825459310 1.6076791343442354529376694737079276 0.0562813101346106452901604673016843 1.0579271552708224519693750782494082 GT 1 -1605474.5128288893195667205524426228046239 0.6930759638148544807037094901025003 0.0404566059016711329180735614223188 1.0412977388162028472804857957697553 GT 1 -68046042813959537402616944266.8604657731893921195373979850621131 1.9847330818043711686812268044353433 0.0811433414870743996312341556555411 1.0846251442946950688227303654147946 GT 1 -49370415426043360481800890837586997009.6466957272210822678571164377829781 3.0139656029878865977599038791478394 0.0790065807330715306423394279159785 1.0823023879565609165461721951361906 LT 1 -230464736469809951626.7355013564318485866375902661581784 1.6510579048304952218229598054092878 0.0539285301781051424914104075871987 1.0554371632893746686004216181807511 GT 1 -57.0187526709033667404178145761684897 0.9824129635741605650619610122726814 0.0547105620384431843523272395734732 1.0562641148264247768446450839545497 GT 1 -14305449.5942562784032174771039426457689080 0.5166038346381916284123801607501503 0.0440314091022757144191342985506914 1.0450302211799569810951685644769042 GT 1 -92040888.5588841812857025132908281253862347 2.7547723102428483101145051909513691 0.0356434761363406736298336838094825 1.0362942147119775870552415432596000 GT 1 -3713358360560734340025.3462773056806200851787178442690262 2.3622053460812857884148939022343162 0.0260716746859950573053068866995970 1.0264175660206305776419449516844514 GT 1 -1060905103854311392669725217636040577257.2259274095798392953572471529592189 0.9644760885052897791608915039141965 0.0547894455482281523115612053363032 1.0563475673629466623932694061138742 GT 1 -7326606089293904.8306728967324541970838432234281561 0.6190824371049788567557721624027920 0.0058175165545800044558392299142700 1.0058345042200677968225861087731784 GT 1 -233151.6769420529824466475362399149540067 0.0565978061523080955452636145053325 0.0634868416263019393565891752346201 1.0655917066107995111461010268323660 GT 1 -19344988524162129414827634269210627015558.7115944175248802488551662304180607 0.4493140727437070326945851798838816 0.0493726936780727527427606956171854 1.0506331898603566816770105063657416 GT 1 -668314877.6223185802206125826207140455539417 0.8526766075021885435400159676941780 0.0503681202738974098566660579076160 1.0516808645083030351790615039676568 GT 1 -55164602745076280996088114603475631558.5448114427840553806720607632538849 0.0026429906808908655527579989068593 0.0205418012742949863431188169685950 1.0207557186432575636124589687301756 GT 1 -141333254291555019263044539144959367539.3740853644983402009021755352070493 0.3431030397721247903624316335121782 0.0641709695820723832866693459723162 1.0663224789987862107574946918304545 GT 1 -896528395613590.1775600142791899070060653175891021 0.7984267615145882003753119788676527 0.0402483970679162225138278575671654 1.0410807749467676497197228171008313 GT 1 -152292086946566050449881222338545007.0630700530204560734464067918315553 0.7363178479662481728282778511010134 0.0084837718071617015902000488056605 1.0085199638412134892798943025286795 GT 1 -7818552933344770945642157554388040238.5887331790519234070247063202617959 0.1707346905214764890641911215683240 0.0987675007914596694679143211573002 1.1039920089254249891312082280465830 GT 1 -12498137135871.1843497378239124201421952160963333 1.7709105477159999066781182066908319 0.0535553612201459075836025083595450 1.0550428005031352678713900919777169 GT 1 -2527474359282799401264210.7471364551197960357501358410670323 0.6324168568762886446983851096158881 0.0033898384338423318593774266694411 1.0033955969534630345838259838226677 GT 1 -19166557353587388028610427320392454847041.6953371966976828429241376779047908 0.0321549841458980663838131044241754 0.0679162467958158610691492276639169 1.0703326043810817342540090801778380 GT 1 -1814703590284195892028297934.5765652630096627038672932589575507 0.0314949446505578483206565921847412 0.0350978212730690067379469948730708 1.0357285519762453643679136030602041 GT 1 -30473207198144077931932458127334.5007596951723759774683667717353596 0.9018850415853004127435331667387099 0.0579886056558972520782857344296129 1.0597379085722380680341044850896074 GT 1 -11262059548851457720.3451742802290948958988305663910386 2.6583663784894230287180152512400183 0.0942011546374209756051482064563570 1.0989380225764696745984476163149183 LT 1 -110.2308644958083954503693364069835434 0.1367535552783650985328663975051533 0.0002329899845885424228442950286166 1.0002330171309716405053691814566755 GT 1 -3372332.0100004956050224362956477623240990 0.8201653995703264869458366993337307 0.0399601751882668457290758033307315 1.0407805112018111797435312935516789 GT 1 -13743509615.0823039817367399163746031022116354 0.4211431923820471229392339414172591 0.0362549016625739825027965654884220 1.0369284401487368770175645352375644 GT 1 -374381064.6939716803475742481113773926655036 0.7882750267619016842601542428572908 0.0864307553584715467472604183255938 1.0903961045683030024171705617434241 GT 1 -138966321773254.1406053515458778440662329568366243 0.5773973421837010997997479550794184 0.0263346668431017460907454924188779 1.0266876348386936446190660667348905 GT 1 -21376752135376563270391521589445542283.4873780621449196023040370255199216 0.5681551205102766860387174802527250 0.0024773597512433903994174031466016 1.0024804334844566421621859397651707 GT 1 -27111854980763494792426.5347113109858494734022558651488449 0.6330359913007768892429251675341996 0.0585251103276487644894344503809200 1.0603076017957190178939282911247460 GT 1 -53.8639100869976310106999618924274874 0.1429373896578891397946261901637371 0.0125583442025249528218170167860858 1.0126378666890478886575971921642497 GT 1 -38348106001.8424338446597004317949624930398204 1.5861758193209835446113145868953257 0.0664812762777139510280497826886593 1.0687942586521941681534867443136779 GT 1 -4370510534583212286140667.5533464739291896510322722808742140 0.0227627020148632223770435445900167 0.0852990315200028999330397178591394 1.0891580775251485471834785288908218 GT 1 -7488545578159.6957109102939108198175514668127345 0.6176097909814181675080096854700502 0.0946766568248104753456969351646439 1.0994631138169440564417711307002916 GT 1 -9397.1965673771592266748850579955475598 0.1287989031650842710148579440406150 0.0803861502218797525341916236790761 1.0838014255517578818527121647221567 GT 1 -1200861836894468975689462380601502429552.1273189958605205696233411072452641 0.2973248538293177957715704272998608 0.0339190677482362551941782967866961 1.0345076674801069046863701235125651 GT 1 -64661200532219595684599.0124393131217393545104575609481798 0.5544765310668293034729497683697951 0.0486395386435457668235228607840164 1.0498622542283847173667537556846737 GT 1 -13897797516005403397470708786595.0028826746967308078434692674832923 0.1993575601222360778446953791999514 0.0874865167775255707427904366678448 1.0915524175004379264229986164722791 GT 1 -626.0811684826663466736050966913485318 0.7977022746753745809784511698853704 0.0547482547333297280363879138160695 1.0563039898582155947461121993545865 GT 1 -16900414857895038776563971.8885039822433819102001420571451579 1.2704227322079142183870173963983352 0.0974708658949191418785685657983424 1.1025543077392630136900963409285606 GT 1 -47641458800223286165054743044186.6295627370926115152848007797766568 1.7605565392615869352922922689385535 0.0377224727908744850674923111612271 1.0384523800992419845688779532449234 GT 1 -104295716290783684971431446542287.8403996079758685791713389458214984 1.5212254837493621499777370643237209 0.0902461071274530522243534007973698 1.0945811634415380231608131347309206 GT 1 -92028600903938425684.1280682855822431097648326526376603 2.3460683298396149225623086331449673 0.0293607075279829189351455777279511 1.0298003601681337399911352175946730 GT 1 -61.0023421303629373192355733280883411 0.5148103522878743536196819154524132 0.0810931211321096958239933376070270 1.0845704905223726744172246056501660 GT 1 -42984969072.0826874029861873968898917944053837 0.9257393362880212722452634940438867 0.0703339245683358836685893769106991 1.0729298159874661652934461526805839 GT 1 -129747389237.6307298252313838428862781717699891 2.4612617025564509191469125041735121 0.0359851049653316258780924374839026 1.0366485332101849252548639237742500 GT 1 -244276569387954941706898646311420801442.5501509825954393001619519354522384 0.9973983491606853274657132467689050 0.0017174059224162674126605333146977 1.0017188823546318803520911446692949 GT 1 -105919181.3922163419190693446304828347184929 1.9293284990012501873169497047174843 0.0815217797057238232718386007901821 1.0850370868625591788461486201241055 GT 1 -13466720983611851855.7030583856764982068368138163715099 0.5571011792965438971754268372277495 0.0868903394042208830593223481680796 1.0908992954182426568537450922832854 GT 1 -33229464288742836968595046874898027.1048191786910508299932620805488960 1.4282196321383674910179309134157251 0.0495949147951441589605373762014035 1.0508669797937360999673628939989344 GT 1 -382192026552763.0903789470775250883853005720803341 0.6472004634850240666490161598931825 0.0926376958586792357802754950623887 1.0972134553291911597002020366896358 GT 1 -14005976339636492690765630.0983798029915125468769869675452727 0.0659758450792926608592755209684657 0.0406810129098944485105060209182352 1.0415316347031057827863795618464956 GT 1 -28380022820975719808735163303.0605096612195341469751538561977426 6.4137602717417834295475695673385353 0.0759088150376491976889116826739667 1.0789445271853103802515687462220537 LT 1 -4643220756957688638507613.1448637918030207415383052312223324 2.8975351252542444497517056487576816 0.0884403001239559681397468148950905 1.0925981907097507068723668881109982 LT 1 -9637441167032399541812959618138204946.8891345704553702360882220733665356 0.5500207834506326536751651846101941 0.0268836178067485361531517774813636 1.0272515922396367177665225670589507 GT 1 -13293754496955422159390.0571193821491078166713694558505467 3.3511952918369044714365496807762935 0.0909401216156732847390467971858665 1.0953443141641361045412857263163377 LT 1 -67472054709054.1523238617145372083062901298092172 0.1604885552098590424107762411860700 0.0783591649342449545921788172224063 1.0815996811400071007612061400448966 GT 1 -82648083782463259990870570836.4738066739471049049701889827853862 0.3797369570076849226861990016268997 0.0604540893712304967307031472775620 1.0623585942350069467527094653597625 GT 1 -6102995213444478091433455454870156634.3118087601806196723864130671375865 1.7337929251762330475146827953856567 0.0853077813753488946274948586812245 1.0891676433805455596480027571391029 GT 1 -219755374855387851494534548118611.5240601892337466437403098531113069 0.9414715804035721123259676515515699 0.0303399074911391170543556653727646 1.0308096889901344839001427049039502 GT 1 -437.8622663704177265596292864120667045 0.3683949136869494675601900955523609 0.0496265268959548771170585145408559 1.0509002420595328665596084178642653 GT 1 -2782489936498976676563987.2167395242907265240060641245869622 0.6766873880886113056174609896549645 0.0284231235907769122660049922122367 1.0288348816338089845532049665372041 GT 1 -11.1942569313026577810489589895041201 0.9233339167539239742257502010605117 0.0411045036108588436917226162155153 1.0419731814764120793005462368412963 GT 1 -406867.8005028397524640911769602525590004 4.1988944886417900122410379274706977 0.0812120291379472841639000676715464 1.0846999004796580287058373849464744 LT 1 -33964681106186746620045023448348120582.8779401411855641291502406636207343 0.2275806026426214775871755285310662 0.0685893737803684641917445316069684 1.0710550396309662625724556929697095 GT 1 -428179390110751110646093474709144061642563.8062784651388320004891042149035560 0.1951648936340688069497484243132439 0.0743097078878564309516742801439333 1.0772155580416931687714019641963762 GT 1 -106051801756071075882534.6104512380431583227583086511181440 3.5304690889876334617625799742552672 0.0262678466711352696203244956841347 1.0266190097403699505690995200418346 GT 1 -500467089070136658655482054.9591713163456761475748934248348620 0.7101020130250827330065735703468332 0.0596730086620344298023064525490273 1.0615276010829413893208943140594907 GT 1 -33.1327600581623042855791835890120677 0.3112109758054199292819180380801830 0.0761776027270828914299824324822166 1.0792354365589014870733879574367574 GT 1 -337357789660095615773145096398600846338.0498693308525081093809150340388135 0.3198140650670941152291016689437691 0.0425661322693612371553842047306720 1.0434986279568570694176453489210765 GT 1 -53941442968852112038079123764010977.5847323974889845257190583058670311 0.6006977799782582889035416124373347 0.0436253770225806576594050732563919 1.0446055776506465074859278585394836 GT 1 -920485297309075762113021121899354918799.1006177113492435226292544466764988 0.0559343108346472459914515378787702 0.0435365353440510432074461745092806 1.0445126877409695063504010753266692 GT 1 -234526805594744684678058768904144.7746761717762554236835664429615525 1.0283963796228574547493096123276295 0.0904874402006000758638256989798362 1.0948464715542756228094037133639625 GT 1 -9670252286457472435494640756011150.8909339479738214421147208161677088 0.4712353077049246009138643728797304 0.0296724632595254716823792315542080 1.0301215977385356760183042861584733 GT 1 -13651498453.9436533701011211307225600095074483 0.5113453508279070394654482695519993 0.0281946173347876716228361976531772 1.0285997181645786556789224851956501 GT 1 -2027028064246485220812.7839475564939569190043596542506596 0.9428591789866087476143351933223316 0.0212431272845360361608895968601825 1.0214720097702693206764009889593220 GT 1 -129406922308790495537330180.3923739614431193081651057026988466 1.0538378261237037056696011062684963 0.0558418427447980885461232087405619 1.0574615874045489262938759885179320 GT 1 -32623124786.6662727685672183041453579382559598 0.6024438722942500217793359048813412 0.0046122853760528030342811834744584 1.0046229547837907425939003700849275 GT 1 -1375868529996124673250.7186775993440252357791800424013351 4.1673110738026402951252995632807942 0.0685734496157539703568228559796934 1.0710379429519705030784945312145488 LT 1 -132569.7750861866754828581201432554186501 0.7552827108389736237194182974052373 0.0253977253767854396689507968201856 1.0257258146710688312986524720172759 GT 1 -4152092425.6318402539597169476581906854927432 0.6338682767937386699255307030822096 0.0758707232243107905865819661018424 1.0789033071965348209213579855762950 GT 1 -20067506217455.3979583119738006237166104404381961 0.9290651402340271137836082941337374 0.0004973130826099386671188239866593 1.0004974367837748447018993868631331 GT 1 -30467524037712024856854605.1010690344235208885932774049229837 0.3116254303897559464023841706916417 0.0490309864901212721066288671276850 1.0502738000276506081209904000439041 GT 1 -393339301980491441680403.5749411298052574954320268906988853 1.4295745983383825205157534617711200 0.0236947751876557894925227106793505 1.0239800111184682501321511413656925 GT 1 -738177470453262004.9284200053707499525051706923020566 0.4512970900290813677822820919825874 0.0972283940023366200472760044211789 1.1022856855771442042401510820311214 GT 1 -4877367172566.5663815940476655372425818954275539 0.2952410209902437063893216179647098 0.0111887045962031667855345223577457 1.0112517689986928508099081430908101 GT 1 -46638452967147605888395621.5381205217934529253918924898702696 0.5436334848649601488016956440423657 0.0896833344299761364951846352971714 1.0939627558607973306529235603852255 GT 1 -45904926874481014033745557336278029418678.7195184909432890705894707312189135 0.0901312290302258490474472082687119 0.0783277430448303832568480945330728 1.0815655882997255126417619624316276 GT 1 -3915415640383012825756025621.3599983178417666735791221643345494 1.5550951177232242129698188021288608 0.0493946538636890685297063619041655 1.0506562908581108476477403039103089 GT 1 -1430526677292609777115744730019761630559.4862582313506572492473101688690465 1.2055115630825230919422251102947267 0.0654395726862821989215517144447556 1.0676789914550537978539474036887312 GT 1 -26100310465034132390950259188417543810612328.6010749610292159920825271285593729 2.4997303861292116134317736917252724 0.0919230183096523459727674952630810 1.1010751209156622004553683722769936 LT 2 -216759520.2035825735108715875816334979808995 0.5528685913481219005865493407302098 0.0339839170087657589771694754111256 1.0345747958489644072468096718903579 GT 1 -2680.8748942535729099922960619295929350 2.6820305618111347556487093727236540 0.0355834656119125722262792833804538 1.0362319880812283380772046721991191 GT 1 -457095640612843853713079446605182.5706819493836837893217655118811997 0.1321707895319632648841486633403882 0.0385828192709843168782130928765504 1.0393468531504199269053820164617532 GT 1 -1887015461117717094404284.9725915902507267041566878316379404 0.5855689707125343987847437712397852 0.0413309852662464139605258176115241 1.0422093995072808987373363768804251 GT 1 -39035882407920916013789974911477519883981.3319553707134146369816495572001996 1.3917983002093327350439312145406627 0.0318523906499006326068369742042021 1.0323707143327889585040405709050461 GT 1 -3252486446518331181366185067528841268454.2883848365473378433476463143403020 0.2850476575556087636059467212703985 0.0278852437600030155728654365579448 1.0282814195151589510680752987627273 GT 1 -197499091197311329739335161237.1805091025208722903865568621237931 0.8037643562199822141902162481639547 0.0835614059774454103380100115504640 1.0872602144679567680003771537297697 GT 1 -6438319937843070636287413394679.7260554634326939845058940083846880 1.1111634095740942818006090598721924 0.0118661409044007178541760753238083 1.0119371054969471934077244258669573 GT 1 -1718926799738274132025036338873570061.4521268811933536027101967160498199 0.9540364381189242338359264611181715 0.0983947660964082566666921142393097 1.1035785111452128521456385830764934 GT 1 -83221.5662606482215708502169867824330560 0.1099539185099635459104146418193183 0.0665441528014760978794537822917133 1.0688616152458674367062388980095680 GT 1 -1573958486761394698488266129065462461524.8470992224815989251112900935493445 0.4257047323325594141822202172959561 0.0100664246242519802206845905996206 1.0101174336845630668194618507623977 GT 1 -54589463689816604629121638485259.6096403133911860000318974857105397 0.1592006447877464151284600002686868 0.0264146913597773977628563960662529 1.0267698271512835101841233433151480 GT 1 -35732715021602232.6114663760261716953597309375046621 0.4761402864118299222573946718384687 0.0478988467249012493575117982684747 1.0490839963950389107528515636556332 GT 1 -980798.9826534524630914910366404242985939 0.1158568278328906294660778012237592 0.0127227166616130793445040339365956 1.0128043435037582204963618310320858 GT 1 -41090612623303046487.0409287687612780627664311947064826 0.6320600291412281773537873915241865 0.0626604194422416702728568903013543 1.0647096498509786801800090570438138 GT 1 -4855846856925368551840558598.1246354861305922215874718535563457 0.2157871168864296445204691063412507 0.0429685565918573888891820350055253 1.0439190318430824072115310304193965 GT 1 -29441109389911687.7365578193691833688535903004312829 0.1347309204518529007633028564447708 0.0214942097707033925888938842710681 1.0217285747089443365300516638046414 GT 1 -13504431856.4377152910597193238797507157808748 2.0377337801116496335181978755765711 0.0930157685424097439957396262864343 1.0976302144011596635917073868082039 GT 1 -1242901776193046.7068783733539006311224353248878222 0.5074559114141439085528943938940341 0.0921966492982028491630071739818157 1.0967274979533679570912673143957482 GT 1 -142800203365133568836202936562746821.3444051734553275458138941563865118 0.2410341734407029522054155962138037 0.0342290341449193016207726088766070 1.0348285682692893083230611586098483 GT 1 -3692649159619805531849888807651190980.8832634543425422934470881853088145 0.9114483470065909188360889176380968 0.0006496256421666446443577591380759 1.0006498367403322634099814002178635 GT 1 -18062570576.2596505319003999748915262789219518 2.5195804883350417835902634901189963 0.0111653606344064582539237295680395 1.0112281611714398750970430757439255 GT 1 -44768.4759843197939815999550460581650891 0.1607491665032224061980727759290875 0.0896606475386469159938039234811164 1.0939378341939852489274961762449260 GT 1 -643696.3093251727568268345872033678833150 0.7952916399384561057222904015884550 0.0497990950086582194049305273687589 1.0510818378078145085433850872801391 GT 1 -242720011.5816459257916260467377348413511770 0.6116776343797695333768496572108053 0.0270066349374797975107292109587298 1.0273780158712624027106687333302750 GT 1 -693250243704106502372695209929.2133898990335536880282695991776117 1.1424626409864874673418301758134305 0.0290072956568316182347988519954694 1.0294363242688140933144937932840742 GT 1 -238961266894923817237106271693238856310.8250337862260501825707378450968979 0.3539512165705600518527093895288101 0.0335379359698726880605406304599258 1.0341132319782441284928133274318820 GT 1 -2493853946066249148825429129676791285740179.5587752297309695100566722860039155 0.5921680360683409496095225103893725 0.0265085657130428366437082169934377 1.0268662530920474551436775518310106 GT 1 -28436988619748935447597668878272.6657734897712689025956563623099161 3.1819258030447522230739599632383124 0.0822481672174719112299811162293375 1.0858282595682028879645502538842059 LT 1 -22811005251.0518087873374079131029616884016387 0.2102912226180937536551173317615967 0.0117950256532759339797869509580267 1.0118651388382426119045709639196791 GT 1 -426938391498401366686696714783.5669976663312112997750953716909599 2.2221831506670602096430410601981708 0.0465363773966544407977677433271294 1.0476540061079948078541911856186811 GT 1 -1587316212027631806006180580403266144.8459130558013600577096027532004640 2.3125568257767435076064747339892412 0.0908069726681305248978597471151216 1.0951978560478177731388484315246344 GT 1 -2869.1042206018372879245747392088561829 1.8182035845987930228378233946999048 0.0076794293859423715095197093274538 1.0077090680399280019970329203764944 GT 1 -47624977966209977170108502641914.8693828385637848021559084645513623 0.2308217885105264687143884387034598 0.0928866397204072974541597290309296 1.0974878529065976448246020708937916 GT 1 -153865.6310370714068730654666228898223321 0.1951880275484214738421085397683768 0.0663818546365182883387429528169340 1.0686877622909088708801770491799225 GT 1 -61.1288810442517171578688827097287358 0.0529928882109646804838844109809735 0.0385173896354097735403133309603327 1.0392788000611192272468223847178005 GT 1 -8504634724877975045380431988994162.6510746046392013324238344161082436 0.8555455128167240493475810108932647 0.0599969853044670342848069486377560 1.0618721966003228691383651869125829 GT 1 -36899761098882671233363078716.6864699647013841886854840549956566 2.3026783834964543725967344947821747 0.0849840672182416687299853700816289 1.0888138009819794934610503029672338 GT 1 -53783322826680083991497101696660665.9302906575848908198387625689537143 0.1551251015644488832231425610325372 0.0318063620191420414741304325342814 1.0323231724743167430736033994328462 GT 1 -582922694939797042902.0626467090603867473013148558510076 1.6732125968198733801043060004147930 0.0639540348384442464214684808041144 1.0660906956317220143601491145867041 GT 1 -2198180335654465499344039937102216041048568.7824185081557274501240796230415814 0.3790007662161993455316182396033086 0.0177009632639935322412651475076638 1.0178594989227789203944288482050618 GT 1 -8340366968578951169767861309444067127548459.0038314051111366763983448731260997 0.6072776679615083784514857248749919 0.0507045125932182963187271811183033 1.0520351617064603696405880904672744 GT 1 -47.3059064915315921821169301279896613 0.2755181281851663336360802459878967 0.0725974700961333100242191696261182 1.0753675790752230421815216426320551 GT 1 -17899949817310840471642977585076376134.9020622176880307516372863197727592 0.1253158562202140442766693867075598 0.0957854640553730498180511675860258 1.1006886282227292952475133153578686 GT 1 -33930624702827813.0046425531734001829819559210518905 2.7351949340733879701202572360884430 0.0855250423330685262163129852937318 1.0894051951599097478584272573625169 LT 1 -433519939393045343.2217935771048739843023591828228068 3.5933733908693634042739845844967489 0.0209789345745260027476545423529152 1.0212021193945870075151085145050006 GT 1 -80.0644483707286274765930768026913379 1.2955756006189374438868328317099673 0.0423997858969637275841927037365743 1.0433249011554451537282922980570298 GT 1 -194608.5649222934022177312243991115315462 3.4113829689648645907131706936059876 0.0656217319845993896069921391384681 1.0678739248676363178301496430598828 LT 1 -27606659506999.1520569496930323709703279459043832 0.4889618153140647467174581825515779 0.0182832917368345818031291535334118 1.0184524967043784456221264533247103 GT 1 -2456138868768543101949516611566051279854.3079957609953762820078544329849421 0.3629929661218179728902665462152720 0.0072780309449552429603198111002026 1.0073046450228524758342878794990241 GT 1 -7780469936535.2626647531832353121272665973866925 1.2637954394176817615092288624409830 0.0635688156020935066751684244257687 1.0656792414872738479043503972568856 GT 1 -13411932662706519414129702715120471447962969.5690605707218556450477771304764667 0.7308743577192395918740526290833704 0.0047900216453118261996534245887020 1.0048015305656860697294396496402071 GT 1 -12372000570492245928.2893767162183854361354977420711039 1.2059229095872899314283250117346903 0.0853409638396192567488885861059306 1.0892039212295231204394722797785731 GT 1 -81085196929358740923767926769324628951288.0825436772894531851728811696712280 1.1867854165462737766939903578029641 0.0971329814989802267640085280522234 1.1021800027432142558694800103997441 GT 1 -13946230175798440313066019169458404626246.8288363884128691056111259131991087 2.9616775859653822312684862149655229 0.0427426822572363846673210748652515 1.0436830441067980929589896670400685 GT 1 -3.2092224490415939313717538600940518 0.6087055596889584608055098186543917 0.0510487123007070048692302192608186 1.0523978118273770908919834873222246 GT 1 -6160277299648318615300333149029262.2741145221867301691559194241566936 0.4727962101835814326057754997538172 0.0486195601769457351782344256269743 1.0498412545572383398587546014752352 GT 1 -4396324424237677203154930038921790715536.5173255219228469532789173914265005 0.9421444980641574922116649732767334 0.0960097031212333450486872719230482 1.1009366521887527492270325976968614 GT 1 -70592030331193885.6927413350802726473306618769239295 1.6243384139436992217492181574862204 0.0941800080991837464870568312902749 1.0989146771157102433363872279342628 GT 1 -14.4408179552093660086663778025169701 5.5311037485806611620781204357599503 0.0995925004728327326178320844734548 1.1049078408781080069869186405337545 LT 1 -5320771815186174350603908282067841978053.8554902158884530128143889369692000 0.3346274973509364279579192570036105 0.0939571852123845978703330689684846 1.0986687171157588831024864465644148 GT 1 -412518292065024322053402000790.6516560030595020022793375997384379 0.1933410071376388882024208030160047 0.0310583655805808450329788981491901 1.0315509017027356538286380081465362 GT 1 -56147190107036888050.4804659096733528359132832471597061 1.0948562238249169036891775082749089 0.0482505371877744871468791013416480 1.0494534481407817892079316954928269 GT 1 -5752148287.5664020350815816215287622324706593 1.0794865451143224592175444416225833 0.0641404576596744682932102071183400 1.0662898753671300605056661571619563 GT 1 -160536322303085370204504230107833451704.6598231457044195118570271949442919 0.9555028962969400552422397325825323 0.0359019011085048919147156109722060 1.0365622272134508281261420508326939 GT 1 -23072242335156983533.2407123702947413320025233914460966 1.0928193348108072222150644781371474 0.0732540836992006595801790391013651 1.0760758434343793428792554127669014 GT 1 -328271642822689669819.8469051483829219660134617017830595 0.6442289689203186882572479361330384 0.0283370427655689869435123561721934 1.0287462864704391342871414609919231 GT 1 -6654350373855.9946089260015294449857544507293789 0.4068117928594988309655984516057918 0.0910804702184317803191604585504685 1.0954987148162082969866532299396501 GT 1 -125041158815781784216836917555115575517945.7885272600406532551655362605141925 0.7058375888254129363796933044102620 0.0352443581400387665348501466179439 1.0358804305794755199073200826284376 GT 1 -24079961780100424740821608494.8307984888364661910898907566180430 1.9823890808816873095458475374656070 0.0549162868171271024294469478878153 1.0564817700331457737602506199717517 GT 1 -55868386567443405.5321958589019643532543016964510383 0.4534294220567203352856606430385545 0.0295464557509713263857301603411295 1.0299917453713980508187121020777452 GT 1 -406466028718015274.1607657248696591641184152147775439 2.3796962488012155873938039774263000 0.0725942925374911572218674599826738 1.0753641527817894226543227568534216 GT 1 -12213889897977039669396732206161756.6281696522950469071648455391345825 0.5249157608615025936899520814410026 0.0732412910244842939815744494268035 1.0760620396655167087924997370571309 GT 1 -102565224.0448792822738087527899487588346502 0.1604030109836493452900102526908754 0.0892020621530340405101296236977745 1.0934342089069228515218450424215488 GT 1 -17.4166327506736709215145870790402553 0.1223895416227238143085528659732388 0.0603395038738396018713273340624618 1.0622366432911180585928172947042793 GT 1 -138.7047068868715485105262598729880670 0.2050582718650314955864500917808083 0.0461209651755188966497763767729837 1.0472184134512834574897150422922805 GT 1 -53150042548891303452074.9011054518691854753182135872545227 0.0530375147985135029242816375492270 0.0308946255480700548464161505296331 1.0313819274393138982359831567582374 GT 1 -26019050532433814815.5024275377502154490374401231343218 0.1261490456739667966030153269865000 0.0622205533125978419607203385188776 1.0642404890869728123768374582804482 GT 1 -5898644967.3299526288676191562734240563336733 0.1007240236974683185698453123933170 0.0698782383779530278081863793497690 1.0724397749296390463795170947869171 GT 1 -55060619870667094819574568385789569075155.7942558648081603089381563098641170 1.6541326434382411298556487679662949 0.0225363995707312372232120657456124 1.0227942252284586477120495331796030 GT 1 -1914771291854383890401007175313189.6138732099648009206794235248631536 0.5009628436631830161048913222121448 0.0663368204272040890954757442449991 1.0686395272352463637543340134124469 GT 1 -35643434283.4431195656177355969975468320047365 0.5534064536285152307775241654169532 0.0286889638520468542272467863661312 1.0291085363940355247851341156933373 GT 1 -3621.6029455242294927554225984181114505 1.1371812499538218376544293858788311 0.0626472802668315868232559321966121 1.0646956324301910025763127648811462 GT 1 -6548924480915529079602.6526289828685544653891129571663528 0.3406391690848016560174221647142370 0.0476670055158189754799394160273558 1.0488405212289373657479736765324579 GT 1 -31308594391803433030452401310.1561131061915439315924875526285481 0.6823588403250170801385107490277567 0.0839501215327632519694377038949825 1.0876844633153397051710093652982889 GT 1 -3841568959724822745241709987758957.3458697186174616542890940817146289 0.4994131564138957032095238046760339 0.0521799450327638610493449009560520 1.0535906101797499249583300231177203 GT 1 -154478.2530916632480060963912868638379521 0.6588084230630689999343161262880549 0.0641135893326054941565146477318094 1.0662611659933738146576511924858899 GT 1 -16077.6275145063322485465835535307396526 1.5381772770218697107028024837476918 0.0972068177494909292683070890187096 1.1022617858500481171445405253199653 GT 1 -3710109273476.8157449921958084743372650895431176 0.6820325942953567998698047792416121 0.0531497829224848436487491701863521 1.0546143640104144101835666867132811 GT 1 -4329049901.4932517775810570129503205664365792 0.4616624626546886986099931897587290 0.0607150566493540273896189405235343 1.0626363917591949956045275819876436 GT 1 -622148550399912972606804237656809560.8894638959732332855535033328880620 2.8364763560876927231996720920956353 0.0766317458841892787984761534045508 1.0797271488420003913055867611104230 LT 1 -5048471597004157633187990673102971.8676104141138505016674973651168065 0.4783630681546726677867082296613621 0.0953523875210930669782685323332153 1.1002097895860401471550213965164235 GT 1 -5990.0121459088730247544280012469530295 0.2804627458863804197858065133765369 0.0679694890858387637419716843842391 1.0703897278000289757517814347280129 GT 1 -237436073082616538476.7938632162423397444432610742543133 0.3659395532191964597179490646188230 0.0184374196179117923965794382298961 1.0186095073572032914195809076720960 GT 1 -203431852143224896431621103384044236945546.3376084175754834212739769429927378 1.9063183326006646513245242434798237 0.0619747781095531518132256698700222 1.0639784413284101315696853794186750 GT 1 -8449041722519957112121020632832239731.2054303673628676449457899663133729 0.5204328013833380069577140278494468 0.0962316689459953339723496372938158 1.1011822223909332023315787249219128 GT 1 -69267084965449533409630582329.7007794986967519039126578972432181 0.9125362698265859488091563616009341 0.0004563918034183658400329847319633 1.0004564959818561421353439543661120 GT 1 -2242596932810459729054209897343019955043.0093538439599225546510646381869278 1.3866133853601250042180664693181496 0.0710729054184509767606536124114040 1.0737250205550704566221224714889341 GT 1 -1896197839764350576623742605076.1863928997824727240226593152282169 0.3119754702324112662806000086014009 0.0457713065839773328520958782937991 1.0468519157003646954899486113674360 GT 1 -307335946.9625709541702187338462804821357310 1.0079395733913813770319778054078451 0.0108830287438599247849781673998393 1.0109426821021362013142027890478343 GT 1 -11111705587147451843869038265044100.6909498432900748418720906789071159 0.0482114582450862657193545662942415 0.0430063399215057431089059417353857 1.0439585123384891131256019686583662 GT 1 -1126694587797617963139347637403858428638557.8990917941054437064111302232610388 2.3670172378527927874658050656385772 0.0887819714800639405171104478765289 1.0972950785240538438906259622625229 GT 2 -1535290865074568.3973642113386278874614014861114522 0.8246687119839357007883995769020646 0.0808967745312804407997037943819325 1.0843568392468841688327835988249902 GT 1 -1943222084538821016706507.4139398560871596916420202073669557 0.1309037207375726172907830207400876 0.0668021430630345522259909045079105 1.0691380353045313434416274426403864 GT 1 -663316001736607418594713821621565457.3367004287093012487960907329588722 0.7460755467686101417253362164854075 0.0521469174628810599869359543009885 1.0535557649638393133694578132970276 GT 1 -334420920155313405195361519551548715117038.5567139468282172451733675455019942 0.4387801904974325488633151491650299 0.0787695596326270589303331286184766 1.0820450673269178245421559892847748 GT 1 -1054029007659291923065221176752592.0018274454704045159547412799822696 0.1958464881026408067219868130797842 0.0529714958280773287355164662833633 1.0544260868066697488593914417262408 GT 1 -36183277283938424.1657052942341087595901099766180254 1.4057740146362319199565957978916922 0.0093803927341657690476902260433009 1.0094246657008138611625335032185718 GT 1 -164239223708154.2438410132361536861752257104883773 0.1576552196300677006357396556067764 0.0204286576610820781293023725974554 1.0206402087839450564552744765800125 GT 1 -329898730465424847843130058376424834784.1107563917222395523150032733291331 0.2594560396546122275192116869749606 0.0072591829262561957911230181081337 1.0072856590022316987544313897874923 GT 1 -408611045.7073571538743782531639111443438948 1.4675992833257370884705142882581513 0.0467406675837797799436247507388422 1.0478682901888249498134240932479388 GT 1 -574269576901552052288403930706693038843540.6760753166595807631017911537970324 0.1879027181351461619752539961073664 0.0862564409658371953984374729289293 1.0902053168796133967336904547150250 GT 1 -876785620124639034516029125570073277.5804809543240078309538112742991130 0.6778659798209400054669688865540299 0.0833144509116455779170664284920647 1.0869907781963088146650206117991286 GT 1 -152637352967079456295520.4308564385586239198789528416704972 2.7921442230309085417451063866879890 0.0459432960505869347806446904474594 1.0470321711981143927397529909197817 GT 1 -232605916715230127835810152.1815537282917094209716832984124110 0.7908514457725450785341913150499127 0.0790831256477629174899830033402291 1.0823855026608987142475759500972616 GT 1 -1216471040705680831395895443862906752759.6925301610568248820874381521882268 0.1404885525754384230061292667697271 0.0413890969216855886556050592252160 1.0422700183610195689232983784820030 GT 1 -63832894088294.0039668156439811982969047316217874 0.0403266163511226620306399704227295 0.0116212842641734121605746032361213 1.0116893391588040653553228226608075 GT 1 -130312926514800962378800.6739943876141805391728957084373795 0.4702193171776025789933306105554617 0.0659476266266801312122863140162217 1.0682227680498947767650641826142240 GT 1 -1549010113.7700012941452305957268934192432131 0.0082178984138692267525316773399227 0.0325909689156331308338535419271064 1.0331338832178018235561539425487339 GT 1 -5281382302524559362846230.3457258457785328018347546101920581 0.4047252763233576678935823251908111 0.0994234894081010163427610085382073 1.1047201534091707531942307482310984 GT 1 -8236805.7214444441710099440631377205471045 1.1870091664983841544078607848524326 0.0332411457771287427633721728394106 1.0338061897853179288829926906645558 GT 1 -1088403.3085582165323578775508222559510276 0.4647018697027414428291491843694656 0.0129216613651731244604776076091102 1.0130058722476372396913702824557665 GT 1 -216023.1636965085451111010726801939564641 0.7285969821010271183427346309358453 0.0125229278348064719170990836966831 1.0126020005369669743181776158955487 GT 1 -6980248658135411363144787316948597.9642762509875965498971488621960423 0.1950219964492339257899987413271706 0.0272353964902536858093119889914006 1.0276131546269790444455462403356349 GT 1 -308.3818811283906121352322539193061779 0.4688904850788189792417825936373167 0.0349340810365817622467161298097425 1.0355588701695087000638077406835595 GT 1 -82386571939491969121364316472628639187538.5992815603666218237158995868141382 1.5241900475120513997335490675250284 0.0327321200551675400573525297082025 1.0332798002326586007577645877580375 GT 1 -1311343567.0011194311122564363767336724683779 1.0135846715317540433635393148397178 0.0014032104436676452939408513209085 1.0014041958653861604000458296045372 GT 1 -9466955254838141376651035.3669471398467767822196826652447353 0.9112125181278658257227039441007066 0.0869813397459073853085171104847247 1.0909989602016237909512654205158046 GT 1 -200100929742546284549994003.6635513066423218648034798882277872 0.8017939800782076649387258764810055 0.0435106751069398439522314694509661 1.0444856507568326722279224470045567 GT 1 -957677185563802857705405091797.8648232163806779334747235043518335 1.6358828152791557381519847322928854 0.0193610606133549606810131445699117 1.0195509407975059735336185962221619 GT 1 -6805.6714588581655545492891419594191278 0.3985496062876456026788385390901994 0.0440996932678453842114202502555680 1.0451016530293723420616756010653585 GT 1 -15580592961643753378.2397085376509299566668268869394538 0.5186120876507814218152570628064516 0.0001241217637171491254812557548963 1.0001241294674607380084402557766359 GT 1 -297798025687079161370.3906652782613192268652864838966958 0.2183784126801719575049352943763217 0.0849791021187161501723126183262158 1.0888083747529087574027196043965031 GT 1 -9864146763559651328791587151785800788.8288158157473055334427049641166618 0.4936941367148948370649732785330625 0.0651816934038190156481131502581698 1.0674030930729644409618277279979049 GT 1 -16959423553585495406377609829657.9582529059523360324080394816818695 2.4299059288987565232210710749561493 0.0707015613843021851996493875210727 1.0733253445927526907389060731195386 GT 1 -345172817792233.6808920086668925102075577005955736 0.9865457947904235571787704331838189 0.0767391108975343889951837337465750 1.0798434310027800858165667900673297 GT 1 -16517016509415.7173317830629668093415682926790599 1.7742081546108877919821719210298773 0.0154720823554261955661698584975474 1.0155930241241366699005873457083606 GT 1 -33978612009.5959338801343046189103531176206280 0.0244285841088672748625080560826829 0.0746905321144795229676828994350205 1.0776270375461495668660963195554689 GT 1 -28747652614105833029469.5004981836045839726299174567440574 1.0371410105426703047884993624552965 0.0591289612563267824548717842208192 1.0609491958197254316841387713690531 GT 1 -940205.5653759566657987837953621147932736 0.0271268537599843064283102340521864 0.0778714610722618327580189160302751 1.0810706519889247906879918480165703 GT 1 -1.5707839387525383408031216007002781 3.1811671070845489570312572775587434 0.0490671486993377362048192251307616 1.0503118274462991767397126072117217 LT 1 -27254003483639170.9482101398771154773738709414474122 0.4808421519448824075162113692625496 0.0990109612895645225700965237899975 1.1042621871409921523695351822979854 GT 1 -48609255871396386465365957.3392293792632000903939756269413637 1.9285485502762497791089090482512064 0.0301071951054447291717956399146264 1.0305697240094189530414099981328787 GT 1 -18105568474369230656866707.2850398719878296010746943045498782 0.1176544971544041733042447236392253 0.0854469762461603201565644729668901 1.0893198316906259480496406424054156 GT 1 -63513350394978940951302735297797955514042.2291714719596499547260788084298782 2.1068381455766865850177470700927598 0.0343648964942154828564249176034857 1.0349692557732539548675244767856695 GT 1 -1.2039240195682871067982316868126354 3.2497035615347843847005664486592451 0.0397380949602685688273873418562146 1.0413713333556682954076976972274862 LT 2 -1360464.8078621230921944513272499861799688 1.6280506541156934354377835899616853 0.0590529793449816310393059463650973 1.0608684420922256315790717023654537 GT 1 -4219121248352739110221053.3107835918552016275913421397262078 0.7813241191006206658518745335987163 0.0660341155242380641943503488376037 1.0683153676776086101321194599585461 GT 1 -236.3676753245503469900926487774071277 0.2916813771683211907763385621672355 0.0265345014518452690731484911783586 1.0268928954264171215122864759466319 GT 1 -869984000307967614498138104236.3247359389658519288900072590344403 0.1952316905361266442715914748629078 0.0230740170628212433381037439059330 1.0233443893413112005153432886450049 GT 1 -2147659.4773407659625343890919601566946205 2.3683941077918952085984882905762083 0.0793935310837483522321611591953736 1.0827226207757028023636373205668203 GT 1 -20828361542740810.0227334654949739683477936476980906 1.5878767787313477148129745585007592 0.0806743627323495678481844208641582 1.0841148806870246365103234202209226 GT 1 -37695619.6900149113609840445370821783231368 1.2552629338694329893985885716616228 0.0840508129738241082823643691905643 1.0877943885255200166870992410430259 GT 1 -1885780575.9475955524195577505718585820359758 0.2530691057339573419567478138627971 0.0614247384742445045010536665448429 1.0633922327497374157181996273316849 GT 1 -513908.7762559889403269042867130422202541 0.8012679451045264999815146427924918 0.0959222723871352808106674679567930 1.1008399404135519317184216527259293 GT 1 -4163198481310200772656512325680.5020783421753269708740010605218050 0.3841282263394034514866578630602735 0.0937057983040649268119897872845866 1.0983912997175095554108205085674027 GT 1 -21013095763789179429841546812397851854.5562194549282897310035803193146402 0.5737576723734647388936209879106786 0.0890129313564474667112064163044395 1.0932265765061815737662491990425298 GT 1 -409592826680.2102577271874642003262321743277041 2.2499760518886133539169987878911901 0.0258661910413900300851751334369847 1.0262066039144923766583187841757910 GT 1 -567.7381571425738415111720500172373160 0.9332392487743892841702531213522343 0.0094104557870410909557391324445424 1.0094550138877836113609941342276420 GT 1 -45775191836866025967269517516141144470.2478201607152047286554815295656503 1.1572567906145032383985192242299495 0.0479154543447663854456905003266809 1.0491014396726298373521863992739446 GT 1 -11261158.2538608985999488603395880118287066 1.9108412704134126679135756598091526 0.0349772462806012105895408473885114 1.0356035989372980528544561782658636 GT 1 -220597921756.5377433654640266419982954452464180 0.3554352752643671006167683644485717 0.0285772548789345631824199875170942 1.0289935345607298437197610157973697 GT 1 -13451211.9225891953495061042593424030690485 0.3499208357195969390333894530517653 0.0388495709510500852849164069402345 1.0396243483921173692049929705593040 GT 1 -26407286690332178602622925387621681594245520.3463362332693957942980024703895741 1.4409841290128847422249346471578056 0.0088645756597250679345400493028789 1.0089040997601576641795695827635345 GT 1 -66169652981287812677018094469020748.5276305660969105957896517909487066 0.1045311735029843814162835754424844 0.0333819681262916997328716347456323 1.0339518647961496839024860799925042 GT 1 -1590727714762136771492505237427992319696.6320554701139274925841086822596550 0.2194288817804724732532750316014448 0.0018085420137444187886487085717274 1.0018101794003382775010185952867295 GT 1 -2248915781032166112483778241519.6186087349968859238333768352930800 0.3018704318563255590704891729368337 0.0393953231250112523881712726293792 1.0401923210614238448506906709330062 GT 1 -3138611655435395655987598791048.3392779736090709178378334955735702 0.4589227908401883513688330266170675 0.0598453257456014662705854886357336 1.0617108701753258286597212579272859 GT 1 -537511815283768933186613765109956372227.0172554209035451521209575341210295 0.7172333837670698530122096266305794 0.0573171162343601877487893494607627 1.0590253373528641067326477237831708 GT 1 -3584160167923061151605846136813130129812.8965259098091087322014988429768262 1.2586655841399739615107542354089767 0.0521809856498569241697521498728837 1.0535917080861076346586128865732367 GT 1 -146211704518885267878357383407.6284479197609777253351500043553546 1.6601011292542481154543163608322276 0.0510738890646649851198826281268382 1.0524243433240665712572658152985271 GT 1 -55013341810319635569197475274337.6486892525424390027100282520316834 0.2582558623505865921252646501506316 0.0483297296110262954510948070399271 1.0495366588188221134673723504909381 GT 1 -94135311745315985009489484033601415366130.9637005817716926186177692787065299 1.9913226435043045957356107945088638 0.0797067094793917563960237787103462 1.0830628656989358924487126219586334 GT 1 -5.8601420492180831286035492535572391 1.4697097309288504684341796344520000 0.0906949786075620275720552270728208 1.0950746840039559125939371285628868 GT 1 -9292606598479245227.9648436733991003240760073070523273 0.7826994754002767304920802432033444 0.0999839287497132109477872783394121 1.1053426588724965424247070638243728 GT 1 -40754352509.5424092230684183921291720762797956 0.2475836963222176494771628807388754 0.0184372849479183057823852363882196 1.0186093701576126184967514507362163 GT 1 -59.6160810112071120577836439163386681 1.1900449665227450213744902187175516 0.0186196711553553617550710092089806 1.0187951995004751071744515482401821 GT 1 -768.3685898416320664278619739048114736 1.3538916544519519320390277843593756 0.0159650278295191745279070515350728 1.0160938417377843621872520999852694 GT 1 -860448272763178301954080258907737329823818.6547851864331247049477773564274628 0.1862526540234279829763016842621575 0.0485645762415496467187933892904843 1.0497834623804294913632702764902988 GT 1 -152867940464006108875663117351755410635623.9368946903703262198460663821023897 1.0594575851882498265125167314413195 0.0279302607730739027279931095285290 1.0283277289196253423445898283909304 GT 1 -124864412229324175122788416869113630323.0465631907302659486225979397828383 0.3275851368478553381905192817778672 0.0223555608387439036537354472113120 1.0226092341907859415563009317171068 GT 1 -165260423521951.2699882761964897436707436244007598 0.4996790458984304097524964167839613 0.0034423987600112098123294089774308 1.0034483374474263349784549077786080 GT 1 -34489.1283327019226393175402960626732804 2.2959050497862480431414314721809954 0.0233315812916316928771204346510528 1.0236080717413895735276461195265928 GT 1 -1379030657239775322347244776347195411.9042520961662600795499681486893961 0.2340207869154790474187525557385192 0.0368734396241745522770475925850529 1.0375704527914049249290357594186029 GT 1 -4874672819580107954263590381506.6920593087853264795451624720318430 1.5022284454468846585394847257096109 0.0891456677350605455306600381181376 1.0933722932285941367478004806786802 GT 1 -2563655354381184507869015639964737700.6950325219352338250295966379985517 2.0198998857024484172375888026767010 0.0267943488554205321291349564938821 1.0271598613237229627692398569626841 GT 1 -195225593488433402786975961618.4241229359071520788835481397658634 1.9726517253723605228975011167924944 0.0861951215276516933781699354790327 1.0901382112019196479988007688545036 GT 1 -48667002.4019377292053832073165908644038405 0.9978828219237621668803716473437953 0.0344889034114835215561582212667732 1.0350976840791299460167934490685667 GT 1 -202114848716664076519321452497068409.5401926471561570539152847597557803 0.2650520150039765376229500259332822 0.0444619762006076301618947482719964 1.0454807214317514258561474575234211 GT 1 -153561.7329395774412043154815383847059405 0.5137939242551336284364522225329907 0.0493129304300121865345293031513981 1.0505703246668484138045667857936590 GT 1 -2907715656623974677167.0987475590662812858915926570681128 0.1314939601518257391241372124679597 0.0865702888422815802773262405750016 1.0905488506699232793748466474277184 GT 1 -38326.9025225655424665038779163457208342 1.9315323558883389362325201632453617 0.0865035896987574746894322221045359 1.0904758327818211869263043874445391 GT 1 -2505926288504244646641.9324846625529863738159628502643976 0.9895649778398281357506445132831478 0.0700650922748211789483280857209529 1.0726406869777244051708347749251226 GT 1 -63935585.0060494776923284858748215546347104 0.0941025571218432749828772298003370 0.0417539943024255716111107717087339 1.0426507430603720138899817506587347 GT 1 -13945003138306707464888909.8942849488415382986742842565497445 0.6289436873906645484062812869865724 0.0445873870969091540382744814626643 1.0456119764145572386958941064229598 GT 1 -1465849426145729.6840591022057268696475996904165792 0.0047084286525558083113207916555270 0.0653396235142162342842509361497391 1.0675720493838356111452529683728952 GT 1 -23259619928723707061003951.4077084964639701308657760607348909 0.3927447294846521428737092632317875 0.0429375550279427463118709675359287 1.0438866389034198826565695234953551 GT 1 -57665841405244770186288260660808987340.4060444786075588599735259377986237 0.3412939772721952436895863556604051 0.0605719034512703491557369849026401 1.0624839968001773082835270517826662 GT 1 -52551528039032673624447382.2845998603321508113248489870604022 0.7078390860388853733561656599265547 0.0474241200026146035333728884708815 1.0485855111150423216850998903861722 GT 1 -71754734498278912132.7853456339516206250155305247680267 1.0602256825955749128809009377489056 0.0278005211523151240211899035725276 1.0281942704255595603096048838802634 GT 1 -471375786685769236931902096962092725970.9340859652079077990618159103348588 0.0302469844922575304956064638059223 0.0942244278607891209810454589941669 1.0989637164956866617223958620536656 GT 1 -60032922409854731.4840782956318317156807291265819495 0.0552236864416677570338794818248363 0.0931554326132733635782017289578470 1.0977842135781808097050208651056524 GT 1 -140645751072100067775462356.7549080039753706198752041549602866 2.2076111117333587353671703014031796 0.0751129076330300480277831703077457 1.0780836112258998251751846539488031 GT 1 -12947851777835469713432480840.1487622377462790937703549465662836 0.4345658428973350686637604198208537 0.0895676051329106064379871243055602 1.0938356331290205561529745817813484 GT 1 -515491728145257383673.1041820507908178141594168980839012 1.1267292940997315439605958494938234 0.0463317927242929426184300537152965 1.0474394591428180668676686257765501 GT 1 -16224779023697964030772367759849031017290.5645052118661841046009702364017151 0.0813039874065521325780548652755021 0.0776916442574990004197830136729535 1.0808756691018960905548986004502497 GT 1 -1774969204105934203177031667367659475065814.5122046297329901004296406765076319 0.3114306123598759536775387755607572 0.0298642251482906786266461593778714 1.0303192432062380337108007628041570 GT 1 -747390026603840341694582949732.2588362517150643039530448724533969 0.9343622436961891081500848114830762 0.0164348827073862568171719502651656 1.0165714335912450066747929630104051 GT 1 -1944886412809912387916.4258984492072626524176854824526497 0.7684990486133126351580065684786824 0.0252965063006786475657762568074876 1.0256219632611539391614638459832947 GT 1 -833422968253991816028231267690315959030.5340241235067473080043434007707686 1.1085417076780017386587556099394498 0.0377476552514474107928976263804488 1.0384785500859398233949855338549389 GT 1 -73833951096363535.7762453673334773550498160821489426 0.5537985634047046266909741869517385 0.0397071521864349505561732010306169 1.0405169912326902001122771254732965 GT 1 -43699055450240337664720131023466007450741.2583875471987319212359146822791932 2.4022022938270647681019739762394204 0.0547042679402682633089057051165228 1.0562574564665955040661876051831571 GT 1 -2639301843356852579402205243125739625882.2277485165668249471253761848928942 1.3099280324858429778124187308589852 0.0040268461951777952889685927018613 1.0040349757720273925414492201861050 GT 1 -13373.4373136990833903183182561821622751 3.8476602978483733803234820178514789 0.0321127451825299549712596234899504 1.0326396707849866490719803606801927 LT 1 -11647158463913818841365869595.4681937276149882088610823728003225 0.8637591902559772428117082364739623 0.0527637159324683590131857803109686 1.0542067089269432353247782117820901 GT 1 -191226913673463548066337106.9671230052623014623137598256282151 2.4908082000924057815106086649345765 0.0143550923663010953666780472572208 1.0144591234891542003815827748098749 GT 1 -107171428428155600788956523174673596.9656101841149271437405818811478851 0.1185282086537892154824569494000185 0.0081241784705716367227213491663490 1.0081573594427735325649173376456336 GT 1 -3279688550455440774172400769763.5158051001557844812089681752497028 0.8189604076753078591010003155241378 0.0310371574975882640367277104921259 1.0315290140573475647199678738533033 GT 1 -144528458177851730898172892872292667948766.4247398265937951927628601983427862 0.2276736062556004159652779215395538 0.0628534240073524404297111021744076 1.0649155778223519181435929353558865 GT 1 -4806339955560444205264808917489145.5320446300628901836692781551706551 2.5291631456580823636148108202540052 0.0122183455540003203237472437156632 1.0122936031821123600957987747005964 GT 1 -181170556750988958013598235.3392831632557923853073473879278797 2.7478074041539972352122410110922481 0.0041935780365820132993201643499205 1.0042023957454241563375884650053361 GT 1 -11419932161599345657847338129861063553.6210691000273108515800742371490594 0.0206064926459000158966833787397559 0.0335058560423958551597463487625766 1.0340800393716582043803727963704522 GT 1 -140783395384250985461275.3300462892937616999961528104899779 0.1607259185098096949107005264956587 0.0833516914077583994398416860199267 1.0870314041804545038588117351889912 GT 1 -436639798539.5469985373597191946123069328116712 0.1691541469327068056272800409950935 0.0394153950723143130371237032334754 1.0402132163969266092788910527230099 GT 1 -16234526483356762714782379599763651219.7747658903794552180805054950712805 0.0291719513474568968081702831590181 0.0989955863387616673020869789360232 1.1042451227606715770799881424930494 GT 1 -13205216468800.4528490458311045682788688130034455 0.5372986282711860665915454742211836 0.0882211164855846534932812413315810 1.0923577705909381982959724478052675 GT 1 -824830872114407139466491491502492105365758.8381989067232681466676006999900014 0.8718598714541408068122455182792699 0.0125604450582272686626980142500987 1.0126399942658265752401204670579537 GT 1 -31058083561054223.9070916102318704489740677737515115 0.5662012499053109440250334687148728 0.0825808956805600077677182428742449 1.0861908726196708362847006858134556 GT 1 -186884322699807635690995.6723755555396106141186543162016839 0.0672869479018071903790741579067123 0.0349032390129373724522409020310132 1.0355269122169823295919061766146527 GT 1 -25164991327684649378486.4424905517601611042383422340434558 0.0119554273339293844060902583657869 0.0784942123037162535081048405610131 1.0817462211580883441473462686562499 GT 1 -3944215826279635215273499539126.0162940070633438272056735229205175 0.2512572446646931272786865493644306 0.0181627871936240619992922490651813 1.0183297554421510564401618724024315 GT 1 -17916211.1840049540533832941583489632207900 0.0633629341987646462484357616093594 0.0470740021969084294558550287334437 1.0482180301760569734183615713880996 GT 1 -37617876699.8346669779872683169404252773790732 0.1358085185601179929399934192833945 0.0362522438642681412966913003795751 1.0369256823711402702096367070520893 GT 1 -78336015027966498253.6844232156722875348755736150349119 0.3137346128447108281423726840528264 0.0169345381437943894798825879248563 1.0170795670988357354842644465187122 GT 1 -577834961090448.1390007516433476980484825667688920 0.7472303539467311795343931634611793 0.0865322841000437224264897030602451 1.0905072448942727558239962954837501 GT 1 -2434846021963944197884237.2747600053369183353240815948398796 2.1311361102751742386398383566069886 0.0319806827081459285821400714977841 1.0325032360246614236490552504234193 GT 1 -45895275521504.3769380753067380484847654929450335 3.3018356394902240358157675898655493 0.0747147824219854341482707315230472 1.0776532456701626594979677077062428 LT 1 -15729394948445228.8892899886153767773585949065490350 2.5017982829674656886693061659884767 0.0205044370214511355297436144181378 1.0207175714918762306988210504336295 GT 1 -9937.5920150427986911437428364044170915 1.4943632253501749128247484013528377 0.0619606668050930296866802407557308 1.0639633978114670312400427605852634 GT 1 -73786651828008922233819577955210.0354145747919010796487399760975702 1.2350750850705344761538629822088863 0.0705726893966088166182330789908260 1.0731866775645975004246939458658045 GT 1 -14784642.7152398339709570628631012880257142 0.1441576735102495284611626524709698 0.0569303456325733247672059583760709 1.0586151344239123049446826682820729 GT 1 -431271011911588026.4621673513966592629509238043301000 0.5505374204132974371320282684512427 0.0292627944075432936605169973618844 1.0296994903774256901355407896098923 GT 1 -109181239477660908359444.5282119546395699397201939114461132 0.7278721568419161203723384125649210 0.0007023465017687379938594113523540 1.0007025932626208572491918757484351 GT 1 -5608380848442.2922098978755499324338574016907926 0.3109505282827179994640994382962073 0.0046031955815416378045248078313302 1.0046138229119841437442049283609024 GT 1 -948348422419224237454767874.9749566046862940583519688342997723 0.9577920761552504097751122793333291 0.0248466230971083428388165412785577 1.0251605107121630197836253935505490 GT 1 -56101551748765831.9430518341658749488009684740214423 0.0507228442425457449203500137697047 0.0325082127040744120026292467975440 1.0330483426972510534239039210507026 GT 1 -45288591189739754.2605405753917275506327848738901459 0.7073465540281206610501012884968965 0.0905522920347406704430077559571411 1.0949177780421823329580059924813220 GT 1 -12744.2567578778650609872824647848819957 0.2698205421500880262177998790120068 0.0731347468101745072618275153645061 1.0759470819215494160111439752159562 GT 1 -67250387545732173.5290762897178553762624208796344578 2.2668223087792387081052765772465425 0.0284762233607714632023757504668594 1.0288895363115524795961398832321452 GT 1 -2411054.8421589794968824955123976870095700 0.2686596606734567629990560682986336 0.0659516669451251171484792195898303 1.0682270936394425879402886618926151 GT 1 -28328578568.8054482031261047293472761873602378 0.1270418586643713754419328901578579 0.0857735062330922467328438196144806 1.0896769332299570156050600126882252 GT 1 -250116257362170237042864543061.4445062109638384078347739912360436 0.1434885800429590556237764218243203 0.0350223793021720976866381499412591 1.0356503688987730524098183054983096 GT 1 -1231595198.1681065463709344013393192733725490 1.1311006792078401965286377597347226 0.0033080354221639389015671328331699 1.0033135190680773771194339803480528 GT 1 -2320300078405.7090349088708368798956212751381645 0.0570914794950622116835776885821623 0.0059874781699817954811162427007413 1.0060054749904045400004935318838047 GT 1 -44605348595465529610184684601710966.4637460529282538629402034499487830 1.3947432728068067156503771927059993 0.0601083839913705563438757156253480 1.0619907124843670585129053651245355 GT 1 -1243200093975137817596569299793783670347434.2256033324830944325044974376481273 0.6317368076569580433746027224863903 0.0034319399869107139845002130475664 1.0034378426017636521820429407348988 GT 1 -7236273181645444354912531280194164758857791.0918585186106394864265078127076873 0.3430529640338767969593085995941751 0.0888830669674719203391888291278616 1.0930840331726770340893520532160827 GT 1 -2029146894209251050012502.8672782804577350061938702299694785 0.5644592692451593009102968088672726 0.0532993899164444524843031632978289 1.0547723814157303371366635762971454 GT 1 -1982881915407719420.2724350289695072164520800696468830 0.5378930823678257293324317651049437 0.0182591032526740173101247354798264 1.0184278580423568544725139601282470 GT 1 -429139776493872617601348812241.9135815411544167401959997987900675 1.3147538170829325937279746151501937 0.0530772040658553577295412709787188 1.0545377140041397946232966803039486 GT 1 -42233360044073856662888487410121638107.1943587784441601113203516436698148 0.0122941043178405625154433253427688 0.0882275162359717626853453397973621 1.0923647895874983958449648369718398 GT 1 -6296163.4088474880838940542442546000665118 1.2658608274622648677345193848571151 0.0081888997952309018944214050365331 1.0082226130107364138454362402008709 GT 1 -69822881734327017605180760168728511.2920068750118312705515338637151999 0.6209199255374647660157867586756018 0.0086539295344095099536458632919816 1.0086915922268866840430882394721648 GT 1 -67785210086965094565899.5197515064618740116574816641369907 0.8354345186310862098962412568071844 0.0674511691836710918321701515451185 1.0698337633485108861666976082496097 GT 1 -18205784.6582500678533203279569138008733059 0.2841361210771716018361861876629270 0.0820065642651680444013253814004554 1.0855650390028638266625058799417529 GT 1 -12703282288975885408819612614181.8846375789248501192579331100050319 0.9510747004605444671587835663555858 0.0616536451646699714495981273181853 1.0636361499059628047411335215557657 GT 1 -8400293135211396724405.3552579464639900844168641934233657 1.0375341639152324083279575730688224 0.0642951482357242234955894054753443 1.0664551815429573908722766716913824 GT 1 -80522339850724861026486505.9221489033216366315351674257178598 1.1417500826952631456864777404626451 0.0944896853689511805448199311096774 1.0992566106345918666508477431575336 GT 1 -79018303197355259667843366743862589.4634259927943995605264620142103490 0.9385741531345343084037937644726835 0.0018990392795140599316279920019295 1.0019008447407299022592597811845057 GT 1 -72289972617934830876243408549.1985590825096282440404655927131977 1.5456488019932909063699704637855490 0.0862718436521653105616658563617371 1.0902221737055755542455850568948300 GT 1 -17274409893394169462526865.5024131869494933853219165340571632 0.6538773603368681395651279227379475 0.0830477097720212204581978624283350 1.0866998361838933350816959557824154 GT 1 -81248146485950019225350487429802839087.8557753512394245541337880766099016 0.1666722432146994969959706714180991 0.0536634941565502530201168423636685 1.0551570587593833825206573743716451 GT 1 -580130800194629686243862083477642868836.0182976482603428446722633807678691 0.1673722986369293416497399923827703 0.0735181493152300594082645139253100 1.0763608225637888456436981258000609 GT 1 -1441661925461580416396172.3071386212212129213160693914055632 1.4378132335886791914687254786068342 0.0781233689472323588902375292082103 1.0813438701779391174630508541413816 GT 1 -10531472253423429172971.9372487345967225833332633467389995 0.8265818435837738094058778452710663 0.0183090103979615255004565883718814 1.0184786946877686282525467632729516 GT 1 -166868235153654669327497.2920637926073911030189598885801097 0.7288056830473707084440209398877614 0.0375167500378144329520859781801150 1.0382386156083157217695812224119147 GT 1 -33387172397582072074827569733306.1535698532361497070238221164848133 2.9506884184920521739779131343300022 0.0944660237768076913213809093465933 1.0992304803049645611194951065086179 LT 1 -4232475361593281225954163.6074553867316444306474908520967560 2.4910425961590299734817374839491913 0.0680749109893211269579718024431037 1.0705028441249017601543271555300419 GT 1 -84574396286294594.8866880572007511439247319970538158 0.9546345241897133425529362471303635 0.0820971612641198937996368070250743 1.0856637341201045961742656825029693 GT 1 -431776511788542983783211529739.2621468691562754263028386507511974 0.9801457839546762872590384847309330 0.0822951004510421625259024613810405 1.0858794002273682646407276241410851 GT 1 -19993.0534479812394029523336560058736792 0.1978290855574088724238964589890622 0.0641269392225396062450720233680598 1.0662754305291093099482475421133269 GT 1 -15557968736132868531279967795730277.2202216971251180207874490877144625 0.6347310480518896638852987744087994 0.0828943276821283619900396870883001 1.0865325763770794522583598789026587 GT 1 -50237295834795784324.5901614086131033263134890863546314 0.0809575759506141678675136948501789 0.0200901165863590013895470219511319 1.0202946672460703970592584680612409 GT 1 -426879329271518111434189102634787793.9288775044236188958156809413247821 1.3722104972723296281628346378133636 0.0796952093978524994422813157066624 1.0830503696720657659665220378487426 GT 1 -101084192278668061236089240902082.4519939405793460809245960927422197 0.8738499005420636390091714660111616 0.0666340238899049328321863011200720 1.0689578976948683614131379485488599 GT 1 -2242096708731255448355405334.2274880369814072731174264330592090 0.0195368232745945283938838931669071 0.0216883414843447133667564366940081 1.0219269904726659101219861458337754 GT 1 -1215976436898443897337066929772466797.6508940255096902740932890891790081 0.3139671967860051563036725996600105 0.0484830106704684842530110217506119 1.0496977370931652088852856397620230 GT 1 -51854870265451359008925.1323329512740915129757644058961616 1.0365181499371115111902043269693738 0.0803002826074483202078193864209036 1.0837080563557421097195958719608628 GT 1 -324604088392897401400758445388782347225.8592715805019704526728396440684768 2.8085439767744057345390185705300447 0.0012547891744658942166300461033799 1.0012555770815759133397155080840167 GT 1 -783311240924560793.8186228884534512487786810509414158 0.2733636711528065139212320339389794 0.0208323690289101088294419085166457 1.0210524243767786663970031438266524 GT 1 -195973307878797764469.5109442174486441438189389360535521 0.3809296113529450475227314780523447 0.0670393114392896329477889792175085 1.0693922134697297534548652392572525 GT 1 -454108285768040633.1233073833824279816282256543769841 0.1692088341811942490672355822943179 0.0964905953186424836435380415969627 1.1014687598381655318141172507011000 GT 1 -19255814937322822665534456844.8585363266311912405852452552306873 0.2752609190381511297044119281780323 0.0089390702590594341663627300478542 1.0089792634534174752522633122416521 GT 1 -3564963535.0266686611737579270982496289374773 0.3045516067641075265708422735793482 0.0683083667660250346332822086023913 1.0707533846734367599379586310632877 GT 1 -7029930901113614.3417104536711654685621755592287957 2.8416354256450439878654326816563269 0.0978025534233403562786666496002758 1.1029218842305789582134635929604133 LT 1 -31736566864365.1486740409392691173400402850825636 0.5898253467237890259277324268671701 0.0035278121497198316861350975003079 1.0035340495529136298844710943471278 GT 1 -1170611269443.4248894178779307455985106935826036 1.7464544243805983979136022147987836 0.0018295475588893812249263698203496 1.0018312232251438117898162539592108 GT 1 -325435828785413432714670577460390762066.0068141716052525495372063598056481 0.0470722452120060917406006462488750 0.0367805421260576329996349557659776 1.0374740033505372467447694317391819 GT 1 -3167798829256107.7583010332289619950970387959216965 2.2174081142952175741069765771037930 0.0667839057877993721065818315963328 1.0691184927210390461376920823486871 GT 1 -2498651047490635567173861.0922916419560887005747636407154590 0.7031448005620886914419330208277612 0.0479374823630510382593147721429859 1.0491245765602266913958815600943737 GT 1 -230136802359170679041276953420650689068.2197611311270812680858125511595254 0.1793438475598319036691112090392946 0.0341683638778098514044961581968895 1.0347657496884204517286671748031376 GT 1 -634687193559248208392866720403879307980312.1029699151968719368520880648172873 2.1943678645487067758588427759144984 0.0174765362868299381498548115196350 1.0176310538819792504062825832389133 GT 1 -10251731702119626033651345574083.8820799536510438086710291917260144 1.3798469229806201108856919213310933 0.0705535092724435675585438220199963 1.0731660412802492065086900025278443 GT 1 -99100038370970694086855.8229154055080792217308859216437536 1.6136348012137118400415519682760559 0.0267277754915933222171555398077770 1.0270914573981650263795939046213509 GT 1 -288603473542753089.3236339059250952549949986474392577 0.4171735238131069978573497851410195 0.0497124338674783421861981791727564 1.0509906390001851260662591838886040 GT 1 -5.6346000372999799932660602865631490 1.7968763459088077974951853679340834 0.0043916011290153032829312786954512 1.0044012725349450880535050479818691 GT 1 -17991909535487943537550.2444561029337538743441605572758581 0.6633683493374930568036606799369863 0.0440924000303847339136541410855016 1.0450940233533624045456852468019095 GT 1 -26701317774752431113771026657319509467647543.1401383869720728745906421847810042 0.0906570892340985386933789907705533 0.0669897078617277626399008315165232 1.0693390469649055749793355951763575 GT 1 -3431076674.7682008467198245128501264737345057 0.3402766346733197637811197965463652 0.0415593233828272836401467913869864 1.0424476103083537463123119440249810 GT 1 -390630173678022519322794.8463737808072744940408888116335324 0.0690265585131751798140834163550822 0.0507967995614426944570865727056088 1.0521323827041760204802562322662032 GT 1 -4172.8765999845373780511310644245050661 2.7559922671762441013222157275058804 0.0529796696513672294949921239761164 1.0544347178653214341091635721616754 GT 1 -6388161598379539946621501476.1850453294117807116921271798673612 0.8323280618137295512438900088657085 0.0620969301533677661467052663778453 1.0641086723660519236626757621973152 GT 1 -320190259902494920661508130917782545869.3799897672482588525244755153406505 0.0376073441444112488209299349547909 0.0456516033695532849118557612410047 1.0467264785721446464569017260086533 GT 1 -6223735469812579783957033069462513220.8787666660488376076003029213353882 1.8377018239123679243410142083035343 0.0353680688617077173176598720818284 1.0360086689112340698205643139762148 GT 1 -3834685.1659431824716033273914923170498653 0.0275672019558532942048411094065616 0.0782073690175722002530692539520605 1.0814349928886418370903720511307469 GT 1 -51061712307943206285725222609861616.3006094842894138713956800994196280 0.0982062827815122392016108113950677 0.0007081868400300876913525913067124 1.0007084377227851868720574516235672 GT 1 -241014150496297529736.0211969667271890975103096219576823 0.6686199624974413106290605650020770 0.0124537794113426703661576705884890 1.0125319776428109876046429702423255 GT 1 -10.4160496926565303129413496904621261 0.2161898126841586828485839503180468 0.0686771708105046586765855188643228 1.0711493065052163161442347612879305 GT 1 -16564653862389849787363460528727.7692961857151367227071434884014684 0.8517379605195818176398898447885988 0.0356667169766964898087311279276658 1.0363183148449009350269546727112565 GT 1 -1221371692275425657304422672066241525.8282857955338350554840171055799592 0.0847249012542659272254403949636054 0.0298315641912464724184550977865324 1.0302855773956214876681852541899766 GT 1 -5206286458058936434.2683995973953905656181226929544861 0.5940941457931220256466344564152811 0.0659963590278382886247622915534874 1.0682749425037601624035817197542505 GT 1 -3842347158938261062518264145744.7496333523241840255052760676961870 1.5191065001883584990990959326251594 0.0533053219910196716108855272484484 1.0547786474866480636605233221723675 GT 1 -28.1836550946475198850063137401674277 5.8512795663186277868494326024545497 0.0986052994126692122278416976932182 1.1038120478339174613618740502140995 LT 1 -57756565968.9852574200453103274635597905610043 0.8184127159001710017471608109320475 0.0826161043637362743311641978152544 1.0862292513264654493594118252620139 GT 1 -39831265336757.3879165176180387913500091219885148 0.3461966814030612403451902055137572 0.0069195245208289695026445968507365 1.0069435754421316460176057737513962 GT 1 -106.8431526515945442334489470935756570 0.1833208714215266789132630312721223 0.0647976993410774647719068958570233 1.0669924087557447694100285193222907 GT 1 -3531265073687643315632778.8970330851856031008141257445110562 2.2484973745463150016506791732159764 0.0043780751114318357933574623215239 1.0043876869467564372694980115904067 GT 1 -32913005.1663144233415007844727073524289289 0.7787416785210630624707185686938549 0.0763163219299063680360107638251390 1.0793856057030634701032535595627724 GT 1 -10004898030833978891109901440.2697400977607918588228104730871480 0.3401363925519258205994144404751767 0.0195117775484243623753325002703384 1.0197046451959753261148094286796558 GT 1 -603.2668540971460549338268923078372853 0.4955460042079521519872187360652477 0.0754262629766408180630507966848879 1.0784224725217214161086848361096849 GT 1 -46841078383482372885762895230.5936724149897847521304172789143241 0.1958221749905709573507373461575146 0.0912015483683907901898357207327742 1.0956319347671315400452909464941865 GT 1 -171286110978042007.0488694341843057162360464335196906 1.2475432541118139108342684703366260 0.0038160101709257062543273730255191 1.0038233097137417814005055975858575 GT 1 -268786414947344319370928199112134154065260.9225725882905000425541064748892872 1.1352816291675823015869545086477252 0.0247966184637202065347871922350634 1.0251092332900373255321283788839849 GT 1 -43181044239100652265009226037128168.1876476523132766491265096760528503 1.4969469853916919946735770079974543 0.0350906969859353269560802205501767 1.0357211685740829055653525773309043 GT 1 -159296245322816750148070148.3749892167801329868079478474297258 1.9142605764581101167645934116955255 0.0411710239950442623997081058982364 1.0420425557636672796141605967799235 GT 1 -6496.0137809699185760153131351569608929 1.9939800740833369749585372722924428 0.0970756318188035849357454889207125 1.1021164852398981150024747454681608 GT 1 -3880326857105.4243401169692087045547219915152798 1.2375635889565350282662708077834832 0.0515334470835124749732775021779011 1.0529087533637901900494063200608219 GT 1 -496.4737816807701205168832482318296708 4.2080274891805347481624496706915695 0.0999018777183722018669434519153710 1.1052514968432290050193387359995364 LT 1 -20979785815910630989107763371708.9260137675860039020905470107985830 0.9373617665801860480483678205094112 0.0185729996075712431886295697609402 1.0187476435869651904402161955964777 GT 1 -4.3053452185351638965406997933666799 0.6540024779843611991418960544314665 0.0894394766731400708584058870409629 1.0936949093967074635034966037730113 GT 1 -71938.9291121537762770553530703564988225 0.2946395679369297449255952450177246 0.0270963394177533223350860441183242 1.0274702144605555299091292680781332 GT 1 -611328118998267.0658288289383275467901178133634428 2.6875892003600196463922856918766899 0.0460810259001105459349170309361807 1.0471765439501860080853447330422544 GT 1 -709840154788355111905224199083103746300134.0219011679929668871898069218576309 0.3891070024961638276180980614670925 0.0848919064124890082760277902591646 1.0887130856156953853256065754934962 GT 1 -12877618065659502.3501199064655449822538332077114111 0.5581881814427551786223633308723228 0.0802813332001469307665467645082665 1.0836874526611559217938732280134111 GT 1 -56259121701856373308307748.4574295582129912199125011368787434 0.0646542998116316277729973525044663 0.0106494639718945514186332738378576 1.0107065753455779293018692695929369 GT 1 -37550841.9519858734855001455449348244867387 0.7357088133633572806707933607167063 0.0305382590455725721351931444618052 1.0310142677347005117564304414800713 GT 1 -2997781141335562713960895130307285530950.0562456139333845812861448163700084 2.4414463458500797097544485670999313 0.0813487041807081535046829791467184 1.0884483155236923536184996463403562 GT 2 -2.5403064003168791292805261054859986 0.4404032450140036175259491565741878 0.0164160620463611659910997153214742 1.0165522986294326603606643761212727 GT 1 -3618557703668049448585239368950591336192.1230579770569953247875102964993974 0.7109923460980664822186746127457561 0.0099684156091781109707979152428889 1.0100184329373322678714135437300886 GT 1 -4522181.2012962440827419476989776698522023 4.2048892371633731068710712474290537 0.0719075983993434606321285721090076 1.0746239804624059831812532981321231 LT 1 -8202777726613093869664310522338189.5551309444197920960803883968143040 2.4822027061133373990129281605690588 0.0984966112631356908220527276147976 1.1090674385849130550071386134817214 LT 2 -83291300771983379442003.2742475440729450554638270938080267 2.1380896576486728263048927202988811 0.0285478951373893429214527657154658 1.0289633115728233382892295559200974 GT 1 -23907418716178.4504779662417681987363915662507546 0.3289521531221155325405674659384100 0.0894889774588261537279104476357436 1.0937492738568085402946780187617164 GT 1 -156202204.4270642641544157262295319338673257 1.6271925732841382797182608312226573 0.0378603884292802764573012605697943 1.0385957124733543339836770738407101 GT 1 -958320407886721215652156076593000237407714.0195430483862665590715742411935569 1.4905446619266594758468150723401631 0.0153853104971350169998020451932266 1.0155048925098672053077534987600960 GT 1 -1923607795779.8572663138693489104853049709778320 0.5605575968107943903546292242509099 0.0972640080269342643762186039898004 1.1023251360060898271579731195901616 GT 1 -66413996875.4797577445494645663075339207563209 0.2087104317645265274715769008154060 0.0573952451554858791231073880853131 1.0591082201125771173188909880198412 GT 1 -2976954906659762366475128.9864537231520251932350005852631285 0.0812686732510344259768059480991990 0.0375850497253085677265141821508005 1.0383095800754385989158664462361124 GT 1 -312821261724649813327850939223578211354823.1548080071110276614298515313258356 0.7280083454106114013983516234890272 0.0801858859841897698384403564531959 1.0835836793367137294326402130434946 GT 1 -237221852146794243652120612968.0668617545749470749246032351179092 0.0966146251246386902137558373368586 0.0312121172798685741118128515491728 1.0317095943357893737973752659664820 GT 1 -2.5582946867554992780585658241264555 0.3709250113587831385419760140934051 0.0597809907396532754088832647891887 1.0616424422808734441235449016118662 GT 1 -8526912893776.6363980710047142800591999013223617 0.3174469567378146753850801815782839 0.0123162576971629478774561368906046 1.0123927313606205186855869509521141 GT 1 -13905423088366577191919901558385717.8916214433512862955488828415876424 4.1126973951748499607899293595321475 0.0231904869911510580186714578214013 1.0234636172805173615583278871771362 LT 1 -159613914226200211153.1273399355785189458946275901733548 0.0891892067193560884600292746560308 0.0739797784682924218847805222564208 1.0768592070671489537786533718539550 GT 1 -16758565323908431880982620278204751706012.0770027445039303469893808588191673 1.3639443067299980753307974723066093 0.0676523579190325546488249288247646 1.0700495273215419574005490768309685 GT 1 -1.1384074594982363624933997194591598 1.5850816443646333560289269165191371 0.0462684316879702152439405878364023 1.0473730220621840300810251582296367 GT 1 -140626227484779328441137772082372.9558226116757560366810603896410424 0.2129197741593454603239854055834617 0.0033566328078487684416168094376271 1.0033622789379496537753996357673624 GT 1 -1551722.3357056025706271190568135359397129 0.6964169136114684464492508548979873 0.0372137465347495263552269287086320 1.0379238508389915225618501292198868 GT 1 -44231375071453.4725139064273604833806475551398790 0.2716328562643518623981293089106401 0.0768062330760072270630147830979080 1.0799161348498887393548475675373796 GT 1 -87768563234759677172539109153404128892429.2740166340092716048139537866128044 2.0930469130307875263690900686675390 0.0769055130622324255300269196518732 1.0800236803386424381784660462232428 GT 1 -1598527.8675004040817934925621604629999820 0.7588823196596335807589515616483593 0.0246837651986717681388980791031744 1.0249935171862574878974916284027879 GT 1 -457335622405223364931999355304439971.9166897122847664766462812453534570 2.1155758597471377305326254926032135 0.0284854022258729230214602778547357 1.0288989842619608696424335528924393 GT 1 -14083440943257214362207.8469783213558976461280629135014539 0.7361423718935786448665594766247872 0.0844129102477486339237818298257240 1.0881897913174090866265618982868846 GT 1 -941561227813748290228479126621490934366.9020290701144638293494547228611357 0.4678283514416154939468043755826134 0.0393806391415054328175914596874701 1.0401770349904423172985676685653386 GT 1 -270292923234.2690982793562322608591387945295321 0.2714656860675703739670970309771555 0.0794559644496155278116129289380664 1.0827904407238706924837401272157762 GT 1 -5410.2069425628075766503321549381698075 0.1855228323578112969081394236199291 0.0123218162793277909992658210170107 1.0123983592732492160146209756388782 GT 1 -1298386683649533950251.2311040565742688032736101349478503 0.2574807389524922662223748323274719 0.0032568662350617389464988060407979 1.0032621813674860939426319000934752 GT 1 -41.6507253335260309477457434355626365 0.6221932809982869741667691547717785 0.0982466664725790041443408918758234 1.1034142624740534865229723713136070 GT 1 -1278076186015070479274681605490.5268238099261960482282882149338881 1.8028533873870204314778763291881321 0.0734242762984706863510647173939668 1.0762595056720341319707840414560888 GT 1 -380835505104047460346.1082034143998875516150918379920095 0.1022919687928787937816081616715789 0.0827627340803098803343040866008463 1.0863890987325222530375961825914455 GT 1 -141710856037654525715890508623387.8492899234228649145773357444116792 0.1597154791491002846400147817271489 0.0617540937683143606754867176677362 1.0637432041721710736682458977871574 GT 1 -148610904639071814302908570640644552904.7570261124976702912266023246594348 1.8790495204617104996900075035477434 0.0113168415789111733135726184989571 1.0113813642879635748620114644274292 GT 1 -10020262.8954786676442663383889585145599659 0.2730523322119271447878384439360537 0.0106718631626916718398653958147876 1.0107292158997065488338452084974033 GT 1 -97034158216066846.9124685489091533306041180988011347 0.0823561715573787154438133053874908 0.0527391126222686172988754408475260 1.0541807354807201875062321536235657 GT 1 -699607755248315592816632065332263907459.4469411853629343405821681322297187 2.5389011795845706696332034263530632 0.0809181520886015658948190183226210 1.0879400991900320205189148251820628 LT 2 -27372318988734652663050686598484386049.9659614284052156984709292291468701 1.2975717471885130043891840443457975 0.0620801341797138394209733293477590 1.0640907645205564701702591138030457 GT 1 -247583817365925.0588574570691715716711694683460588 0.2908354299403776980077808329565305 0.0907130226707550658224048117832728 1.0950945279966780996814398144138090 GT 1 -48797149013498650942842300168319690854.4367230175351519690117777581205980 0.9602984147661485321230012320961629 0.0338792468792056210832655336132801 1.0344664493512358559175833055699581 GT 1 -239034116410.8620795157843130348868125858892773 1.0704867911176415566706765651063064 0.0923393433117332501688032278688169 1.0968846963480961307693408645705227 GT 1 -67507591959.1844141829133218174219563881006764 0.7074390425792088220212427697523966 0.0832783808572031943000585678973632 1.0869514306306703129952266340058088 GT 1 -758033723008171224.0141878847324836925629686364502343 0.2441907021859399609637377637503557 0.0156373586513729650060312935125539 1.0157609118673939635778925869755163 GT 1 -2039781374.1738982935686824523072085941004383 1.8130849171372894238102217153765731 0.0539406419496662981396535635201120 1.0554499655453105768059557877491492 GT 1 -28810582495645650.3423023815081223276709683398492758 2.5110795763138786146470623762289961 0.0538258602297578385062093198939120 1.0553286467755272025306565937682435 GT 1 -20844168606815374786.7256128862470503020024691048302586 0.8530413834719404281310239469116198 0.0428936934402995615361258371405749 1.0438408105639740919309539211544873 GT 1 -144411193126845125.3420055736932541227396290073657338 0.6884140221796233328242328832138018 0.0106358821747305112031530829917629 1.0106928474468758055350348157431422 GT 1 -37708358936.9291810283087888599057777691022329 0.1289671288394098829213229299461622 0.0432092651931964494980218560692584 1.0441705793539727167813171698276729 GT 1 -19049802.8129738053663173279178074220006056 1.0750339909975928280514613590884010 0.0520491829112376242981533268093106 1.0534526587810222969105776724639162 GT 1 -1967113941302435724718587.0636691900699843470488499995984987 0.1264926525056169550815834650152471 0.0173490425237283222540840375505136 1.0175013007548208769382385333952175 GT 1 -153159.1593276517935251069681628540501183 2.9493348819070283899927778937729918 0.0323054118025182257857369678794067 1.0328387495491524501788219703959274 GT 1 -5478619329834777074421766496644402979.2095868485148196592815746578592912 1.5155996891786451529569819102523318 0.0077657524031856861650025080332693 1.0077960628828072517633290070165570 GT 1 -412316993626043882490413802966146692542069.4544377815049996896355388039267374 1.2898902497026532488072270319400041 0.0419265028116669736259851786153466 1.0428307845507890327619816036679510 GT 1 -10077.5902432171405376888702765892851212 0.6327721237894858698215975678548787 0.0800649166468490969579567120094271 1.0834521730012980019489899063107260 GT 1 -13135794275512515668345283.0514155973175238376572084533198677 0.1670007214192791611797986474879430 0.0424479969117377313927198235949042 1.0433752480828083399074678658072335 GT 1 -13907.4140383694831504438847858736683525 0.7765868996028145396903565978333207 0.0060785963016921738763798507714785 1.0060971461778661376849227311893495 GT 1 -1738399598427341901.8923883387526429617624238066634817 0.6772917733385667975127360816042934 0.0948163345453582045234256903006437 1.0996174106190653034782254092322496 GT 1 -110877681489.0816053972808805102180034239822767 0.5819837362567157433863305692477480 0.0832371965094487819755224805540499 1.0869065059536423099080762338576717 GT 1 -56159352514003532529006004147337.9027146050793289393089876650871707 0.7948689502979552170666449444971260 0.0678906815134954299119247134631284 1.0703051766615925206431977446588473 GT 1 -89428026248752060985306248307901406002.1577088365149921119530759849415849 0.4187091720986769482644290879281121 0.0626967924038388974238404538038421 1.0647484550695852716446335743667393 GT 1 -76803316543922909851744447406009820159.3566422737059729802161670879201606 0.4716848551507714555180745408651730 0.0570726218343003561445450129465449 1.0587660108034003798504568546664182 GT 1 -1557440280166.4405107907436751843929704166532149 5.6046555850263897381768780865629893 0.0364808431129204724678821936825112 1.0371629087233177656512462595092827 LT 1 -2039138792463042861732203446.9297245246983468351278671246973737 1.9530567070450594104131825156974923 0.0725295656189338873873805351531883 1.0752943616867147834206857549199700 GT 1 -877194301431614659.4492478877693740471530893800184475 1.4371910042972361875637730506192924 0.0511496795198868699447114557717589 1.0525042162258557984423511333468089 GT 1 -74495804828198234567438834145083465.6787303071717363914655199732212336 1.9518049687274408739856799462381359 0.0629350131709859591716984099843899 1.0650026428744554533901834669447382 GT 1 -17255048934.7840819661674083033684818656882519 0.1171131322854269118298611731776951 0.0931958439455539042173772340151542 1.0978287771496871518421473283325691 GT 1 -27.9707258860588591351377044148840280 1.1455788942015496711823946369403923 0.0477964715372198201038611230771112 1.0489764766386030585093508492410596 GT 1 -32508655981883263732793201911474279827.2702382123542551382110104982890544 0.1296608627039395521140236025467283 0.0390887850635408738440900246890270 1.0398732624833739671324743531255265 GT 1 -4139377028665386134833.3012949802086365867792570617917382 0.4182482236118334842678700773136978 0.0761040003394039963467177529870985 1.0791557681550581568284752237772947 GT 1 -684.3250253270206221624922440672585818 4.5646043664791985903365036082913834 0.0893122075886891186240510574725336 1.0935551491195850873389286111157356 LT 1 -5.5320863768381551628702508716581085 0.5184390501911878221700414030832016 0.0219500910284683119665214483433013 1.0221945785811581909133740161231426 GT 1 -2981474744498072443715622342472752618511055.3726245342018710554105597139512339 0.4339270037178775848434322749598176 0.0948694824004332025412412572055472 1.0996761273386135103837271208227171 GT 1 -6173329087904216010594090495071575807608.1118606903636214162568953785053745 0.9038139164254053479766881374703099 0.0593689386074095774636681180968835 1.0612042870602472713143461762927809 GT 1 -2260608550350732909568694266073627.6859188203648158314984866970420075 1.2695729166739628150717025822575355 0.0284180947186939702611305471140039 1.0288297056573212801746091274692865 GT 1 -156.8681211511348536871594128071927282 0.3207908842812830328021524516237860 0.0654180301825845869358990874894721 1.0676559407728461388663389194325175 GT 1 -179459649205.3684834987648524738494438787016858 0.2435041805817329882505878414443569 0.0428313968414003098725515986649191 1.0437757241977421790926690475608157 GT 1 -10314506656342674664107571.1534963715043119848930282614253970 0.7226547800007119339612925954966817 0.0544251799938148926498337986088607 1.0559622612739102146089037631682526 GT 1 -19530142261.5931250701008036949757250247903709 0.3929086987092143249188498142893226 0.0556596347097916490069400594747892 1.0572686213700018189481742182637282 GT 1 -92908171491196344099638131.8942276975350537468472431844606248 0.1203539483397402602224454702158818 0.0049726440440998761833601988353736 1.0049850487784663095975620797436614 GT 1 -50005026893.3857496575785660657717414716469589 2.5216505249518330128631485245898063 0.0542691129874356488235648890297466 1.0557972250175775631469884969753938 GT 1 -30323138830.1810620675451137620395647811381753 1.4546798663423190344527723725464562 0.0673665045354435365909466975153353 1.0697429790352641239515933291060001 GT 1 -2318465449918523.2642769537629617306262240281413864 0.6713763962948720425656236979920663 0.0592996830607455041237904041758326 1.0611306630857651524958128259152639 GT 1 -520948257924.3497866981961188858492704618279318 0.2197937234605272432013294986057861 0.0312693072153700884310901457139077 1.0317686285419550868832369603504457 GT 1 -19987983687318407809276120788387.8530171273864911508289273535918844 5.9210257555839511936962664712328599 0.0007427439209788061609348545852157 1.0007430198919038276426784307461082 GT 1 -38618999955954091602376477.3871920499390664995539230733274241 3.8945171331113494552128210648306748 0.0359909151224568154995098068229997 1.0366545602691694009173682628421726 LT 1 -9061667640814693498589793492.1695693743437825035056107734276318 1.4093832012283887831525785579418896 0.0060460699833271203117096668574286 1.0060644214714257489323788801794617 GT 1 -85449052093204.6317845382582314046009547846011368 0.7051235131475751315007053769471111 0.0524487541709855729977450573081434 1.0538742581804462153286780987986350 GT 1 -40081079875009046676.9764871365884682792062702239550500 0.5223626591082465979345282461746788 0.0559462683456970716232011509865804 1.0575721953311474127259686917474736 GT 1 -20.7402238225706670419048689772088851 0.1820192603764520064670983238533525 0.0956260214538404546624954567464144 1.1005123110553159591941433230507080 GT 1 -1333510247463127937510958134877891507300.7938583067122382726154562239255613 1.6173042033271448698101861341218906 0.0692613354447115187564733535986745 1.0717767451320647838775465557466084 GT 1 -40973107139221768110816919563631681.7984640373889057245345717016125896 0.3363963882793723239835783067141128 0.0339368778536015212289843508917828 1.0345261030675831377453140758779519 GT 1 -1356245141402009734967996937802242239453.7665996547978195844772440563570168 3.4853138276020671783016046219077792 0.0145581181542886071011220877641856 1.0146651273950087239946917797987310 GT 1 -3634652022649029883246774.6264271805251165234633538464350869 1.8809196512749715922468338326459822 0.0736472165179389159778594438851096 1.0765001412061950065774538095279454 GT 1 -162425431445303797851849133557984375.4068890423253619593753386003856425 0.6243493315436044864111750407180317 0.0197624473590126894601702260747161 1.0199603360377425081675351376488512 GT 1 -5927.6418962980336507474706677370741024 0.4755162582281002839596156244657738 0.0933140203999433575707126478390013 1.0979591075575932102558468468299358 GT 1 -6587579928315144482.7632494032057085753844479539265215 0.7910144327390641483828828258357111 0.0352238514768717726675073431990921 1.0358591749948098798063390800862813 GT 1 -312856263416660210341415364626305.8636728107995177138836856165056982 0.9436984532474364405575118901499646 0.0547123325385218867003461108008140 1.0562659877995752759871462659721971 GT 1 -403410115414869968571811167286481.2898444567392083027962314362951881 3.7305609905657911419636702846714857 0.0426099064701853752824800853129211 1.0435443493408770906839224560104692 LT 1 -49039687381121622584341.2874059660759129668086456356066844 0.1057840033377448149505343166079643 0.0596655192156452901650527844795199 1.0615196363891353026639627568299329 GT 1 -93865508630084.3829710956510886575765074262260751 0.0738693993384123034597497172921896 0.0142987037979800361498508083056612 1.0144019153049938323121737589183273 GT 1 -103458280210189992344696220330.5955081992548138874808593931850055 0.4841026698788682415493811626243016 0.0883980434429201481773835144391131 1.0925518353238810207343813339282096 GT 1 -198249047394522533.6704585620388910352202026199491707 0.6001251019440333412086116227713118 0.0718330208180296768567885821910997 1.0745436279188703197696135008515398 GT 1 -34577506513115244893263389909314071.8744198441685431351450676195298083 0.0510308452615025573442642362615604 0.0303338366413994382964454578255248 1.0308034282078433854955482454540532 GT 1 -26895298744803225284533618255.3864346353884197672029818559015288 0.2142342451851105953923732558367900 0.0331836243819986887520405696456367 1.0337466923380406834011650359258989 GT 1 -50081307303989.8604694211171511857987328999895065 1.2639355445839317610291414813324775 0.0073329438906808022245988284677678 1.0073599620867060104301376265124601 GT 1 -33461485364004.0750813357266109149633796145454650 0.1219175890029763565897582754569953 0.0042614243599319434673307284391160 1.0042705301068950942355546684907188 GT 1 -75797860631908944366.1134869407844642055322088292695361 0.4526187403113461049391805391807320 0.0743467524145082038819692627151594 1.0772555771152604301867480009820383 GT 1 -2.9035178929201477123862950555539673 0.1606404268018443113623538096887739 0.0456859189051873387300857911176080 1.0467624362504017769508929031041768 GT 1 -2135937518614000557965588797.2999580278953330663005226658169635 0.0795094755888777278246783994244128 0.0095949743369675434655779569070192 1.0096413026876278466110437727209465 GT 1 -210409274646490307130767469207281.3691563933421824481974631776419171 0.6408231798785394864640995123505976 0.0993524405715269902838677679316680 1.1046412639053123348330093349758786 GT 1 -2297025206869789109931368832.2425177816628789656481002160091286 2.1306771488248913098539199245617085 0.0992412474832691285525618750623648 1.1045178124799878501919529606396239 GT 1 -3.3083708698680267419161519847435009 0.1511033649621443867151314029933998 0.0172401289920240926439558020223086 1.0173904704589486286433895371995108 GT 1 -1166.9621516020160671179709439989178733 0.3492549921069802923374816665512281 0.0865858689670737311334797016354553 1.0905659075463050568283597003390735 GT 1 -1016499.0781238870826769505324554126548353 2.6058538701849931953286431809151303 0.0565564916490222587910454082796313 1.0582187905278470716415281415152036 GT 1 -2977383293153841464091706.0807590560570041641104118495901677 0.1055133374386650975659032646983440 0.0440033152590821546213414546440020 1.0450008337809769471638708119720870 GT 1 -1134505173485770951.9462431675859807728735471045449673 0.1161926010720627137625675222045504 0.0743351915673533581586049550327397 1.0772430878002911143690277871086604 GT 1 -395176636483309989891776299303146.9498560629153370973690731542468520 0.1346568316705988837139609862247691 0.0201664914682215459563823051678827 1.0203726110036206079155447665328716 GT 1 -805149365993865407794299090274131284.7253060885243703641920052543903805 0.6931900386174050228779620596058456 0.0472934643659074693070282438341472 1.0484483601752761168081114520391321 GT 1 -942.6224418853643910074221397009919642 3.0869018072693614969115990562268114 0.0354824265250078318673914460748464 1.0361272265068590793044028083338051 GT 1 -553284517136.1515860250493419889796782397689305 1.3582965332840382957619622316845157 0.0081743912325717665796085988854550 1.0082079847649555505658589240179797 GT 1 -9.3295293196861999703176206067890213 1.3914434807741028055480952668848290 0.0091594537885458598708000992692588 1.0092016595039465448680155729750208 GT 1 -48250471589740155653879049221028824508226.0987510909999862625919822083633357 1.9761353270805207455631872084785076 0.0567960180671177938918347526185244 1.0584727080409129959828819310269274 GT 1 -2353267712922.5414272634062933166602453549790156 0.7725797592558419998054910960273533 0.0564711348387496038783420638485432 1.0581283209358922104815509574503440 GT 1 -13637871928667.0327629874935226542945109399646106 0.0186742227762884320919618200110949 0.0392929444759595021652267474646591 1.0400857494443122237010469983277012 GT 1 -86914893699627417228586.8275300085917881044170054421711234 0.7088617267758812144427359278793833 0.0460911362208583418210531927981693 1.0471871427270223188171895031212933 GT 1 -270590161184406756843879382917.6196732177209194512613501226654253 0.7139403037773783244578914942514589 0.0941150445090755339216002907457299 1.0988429616962324948977779961202393 GT 1 -636514777854062173174.8979966604007751010740079499905231 0.7455435294570846919290671654674493 0.0764563064795092264845860305704881 1.0795371674999745755335454569844123 GT 1 -28945.4961663375347438731711872519492166 0.7317693489721374927580825874712220 0.0123234333168112230795711760448376 1.0123999964854847416471003448310911 GT 1 -1450669979128641483045346780836308222238.8857389475136445493836373065926006 0.0748326030869792694756896322475889 0.0710013921655233285295382217886595 1.0736480387329556432832236444763567 GT 1 -464237099503047249469150181757444.1082976827642508317897632235237268 1.4325334493113513287250628456767754 0.0910291510726031248755101830664130 1.0954422547056941150233809596028863 GT 1 -7027490490159968.7952563892466245053196889694412177 1.3459992516360827626727110133131385 0.0624723747988036217899893887355099 1.0645090546904350525059204840164977 GT 1 -23911945578117336658788565812865819498406423.2343103820080939553835157432716398 0.6769246737716719629288501240748375 0.0498930074097577176172949965120591 1.0511806769499298143721081380998131 GT 1 -2367984942631496.5276672353107028285360736762834496 2.0544899266494579129028841729947920 0.0346941250043936440937277619116465 1.0353102589598184533835633367366845 GT 1 -3862965531346527073.1983575057940291681598068594430686 3.1336703222528957986027050266888595 0.0294943806885223622060906069190306 1.0299380862698166117033783840047433 GT 1 -13570603651302148113715288.5387194997927885376709132290468477 2.1848458555435495411285913519651032 0.0813067767669123107606024986282870 1.0848030282061931101480175304436594 GT 1 -98859153248811762229134081395078433769.8857695093957154855399432878587206 0.8010489606118436166724871916715727 0.0199353153966454237246695261153399 1.0201367047984330455250069847011805 GT 1 -89887739374535256368881858538191369867191.3331360129741512659332011741856604 0.0121218592680054100141810706171064 0.0455148221581119486363404821832054 1.0465831646515339842787499271552671 GT 1 -1075287896.8277342839791110385048056016849520 2.7570830394543759181457442262723200 0.0651986556017155895781811712525878 1.0696940498286662478828795039673692 LT 2 -205689074454.0676950175275148197268952653919039 0.1313790959810584852264715460271714 0.0909024895362837111808512558229773 1.0953029183206015790900472577440914 GT 1 -1357279635646535242150953385.8552517934355890509549627545772845 0.9431007287571766170727733087936603 0.0157429208041579497476802823133442 1.0158681567067954153992494142716862 GT 1 -1578044188846136.6575239894609166337375484808935119 0.1053380667583475898433144912398212 0.0231279348740895902168288101697213 1.0233995821605849078592839151978796 GT 1 -2068613845495128325562588381890544257744641.3449968924407479040402229232030749 0.0666862685533908428604334217599327 0.0591481671304146817775531334196156 1.0609696088936996035062449510947150 GT 1 -939510721232.6373054974727362722400806235556663 0.2462505065511260460046221373043476 0.0812560166942996990072294155256673 1.0847477772594452295236073756697322 GT 1 -35695277.9905577988169867222263306394720683 2.2387292415313827825879467966093004 0.0934283792982868812273194180382004 1.0980852439636682391585710425910028 GT 1 -37349701188662323378246828.3818871509365622755558399714874329 0.2237658668549805767807447455637238 0.0931202364950127193125871506121549 1.0977454026986379873271493589528222 GT 1 -27905156359.5071900847154139354508963433231810 0.6030239126143051280713547841069787 0.0432751615867461290438622329783436 1.0442394540414829300784101200161146 GT 1 -237634482578136323187714774438.7101249884893851318915053035860765 3.5708097718582603590650333515526154 0.0011836895679909246989829066875008 1.0011843906818096279699781192177093 GT 1 -38327.3815583940498323205707392443069351 0.9236850712454513015372265253756280 0.0786000379288097196636962740515394 1.0818610676446470149220217187965148 GT 1 -36434721.6397661968968831552485103590062274 1.1793371339150195131323900983990597 0.0195245680495207901294943619214445 1.0197176903139385239305179979027101 GT 1 -43511397019112585.0899622296559375838817620037698861 1.7400305877501880107925034205277931 0.0376717183122971966638398638084487 1.0383996373730645693004383312015725 GT 1 -7632725823132296193136751897.3080949734609680646873359553480743 0.8054778502926924146804334619176622 0.0501165270186853274607802694226338 1.0514159619305747279841854304308745 GT 1 -4508746373731104416823736103440.6173951388786092188670171025519125 1.5501552200417603575089463505683429 0.0896643297319258531038900983913660 1.0939418790600189709112062968142259 GT 1 -7174243274138295575383.1413792602797524688061172489889409 0.0573370788591432538430209442219175 0.0143335689005212388459430218044924 1.0144372867905487498566631958125769 GT 1 -2085999224055338084446130020227601633.5544423472874324476694031339752153 0.8466244298167043856953690786546267 0.0516977704379147041853742224997280 1.0530820199805030638121722042128977 GT 1 -5687897502741175505379704550103286978537.3142206143816435325612578995194080 0.9363110005581044859183278653876756 0.0943833976364347593511710074959875 1.0991392387026294009866783975243496 GT 1 -1819638896928447842431668.8530346460041281790063915252904093 1.1886430932253182512927467466345141 0.0310843456811178594675797974709038 1.0315777149264849486696153213660137 GT 1 -3752767333899324927787294.4865366213283389532598406369348183 0.5206477205940541381611534584121347 0.0524326643198560460262430380211119 1.0538572778697818551253194145716445 GT 1 -647087531786483562924547645.7793110082792586125273688550771736 1.8425734267900120245915545736961123 0.0441853052243698262797558044822274 1.0451912186356621402966321451315883 GT 1 -7662168766178885637326165696646641403796206.2628603833641889463449213655002243 0.8524270027068298066318911116351649 0.0519023513819677021350801961913497 1.0532977771604106555206792014308837 GT 1 -88521241606211302314295277.6221085988705930768552838752693792 0.5967100107238829185544639455821999 0.0374320403490421856505921750783743 1.0381506078832184283101218441184665 GT 1 -1104449558447721207818322956757648981391.4149997873064959635265978941076336 0.3025790659686222129531367141099821 0.0050633106463649860338779059613165 1.0050761726382582032547570681498164 GT 1 -6003222778734971996.9751444255912649762070220185741667 0.4469914230781597611597549723001615 0.0185819377689065672148772772210261 1.0187567509398638844772463043844131 GT 1 -66432.8888066583154756161440890080148247 0.1903749037660065927928224241046434 0.0851929941519995748389585759327409 1.0890421585244008065106860209583916 GT 1 -721342049936133789.4116286220839028854523279739078128 0.0858981503227260238370836730460188 0.0496199829226095320505951539776598 1.0508933563972108720649044353445634 GT 1 -529385823440689898401260509381257487078.7960772527026118974968543682687980 1.3644029217424067429061796612375215 0.0459714690232473896294760625782410 1.0470617012968194354576614370692297 GT 1 -599339707013641124980715852941556.8462009464978647123699447885725914 0.0804383262275805802649277432095280 0.0911991551175539888804188091710657 1.0956293013474978587710872492457224 GT 1 -41495.1214521645538858639983888340153031 1.4213888705053281026319229343296560 0.0414666221380919852813930610911347 1.0423508940856266214370458058031902 GT 1 -464169332749090670271961207186395462278.2330619131133868130758205380413353 0.3854536954969110276173368735021178 0.0577464841930150986293448696975872 1.0594809155529334485732623955947450 GT 1 -1218653.0509594887506454832178567518157065 0.5692757722725210332204139331966970 0.0145272467893041429972447643538324 1.0146338004522402410001166018304464 GT 1 -5504541911586462429051968293145964004.0552411351257637145815808645782473 0.4746305221101475701443197071564411 0.0229313387465126869383126269433336 1.0231983517695232515367427241783920 GT 1 -114428866.4620685179954206600977060489702901 3.3283821983329655149239744848128103 0.0576975223074673962825868833389899 1.0594289543634250391330705495084347 LT 1 -29250177200708.7157233919705977537593072073643521 0.4583646211534712424761645173600270 0.0543186684401917715356406695080519 1.0558496254962049731439618904475555 GT 1 -43812403750084025471722312492719.8432949732877519259102574028549263 0.7727869205261979085958409120789758 0.0624805736706339657625017842660734 1.0645177999342663511983157114710519 GT 1 -1191846593043753.1580928828639245892386989881303427 0.0233786695170242602946185935017881 0.0535940847663304726349274841144634 1.0550837160905891843181323137463509 GT 1 -2741341669260966363898705841.7917182549074199471425047158705734 1.3187334769317030779994682630106382 0.0274960259819397237400144252493075 1.0278811171039926638774713405483512 GT 1 -2269768097961762780482036363859975911.3345405428247554559128937577660370 3.1322569596079435640127029036265075 0.0483579417299866270661727634277436 1.0495663041046089975772201627925615 LT 1 -1695.5351579770742798441716186532289494 0.0253917523316576651748377454330958 0.0259138014799616599779049592579142 1.0262554797482260875793878997199189 GT 1 -106520703507529318668505097822614492045.9788260703432474611508861962820357 1.6293869336799561298858237826112607 0.0012846239465610973203113531029531 1.0012854497832386164986216764980993 GT 1 -3547638069.8896850111067690757428147523518186 0.8151099168796009622231642998446953 0.0549550577150947516382072683327242 1.0565227946457941563429260249025387 GT 1 -32045213884979230782638318672171963910.8275865497336307721210562918160262 0.0503924801861061330742253441385579 0.0273629315948572057331923460828529 1.0277442690457928102477198808206587 GT 1 -5330440116253315628.4089696597654299091329368547628377 0.0098997207918847206216688814752514 0.0188684190083990254384561020425530 1.0190486989601512578491106265845997 GT 1 -5180.7547075289915131739432331858517749 2.1114108849257657383327447880102018 0.0754996640143050143097339708598205 1.0785018647307996637577135650313648 GT 1 -14622536823329234800121247347769443575642.1249012208372666766969793166893300 1.0853434306652541281154263720738826 0.0703490360410105972347565546646566 1.0729460708513273588835504795046006 GT 1 -29799212.3376376171937253871231366296486025 0.0842679626076912440347410493010744 0.0937981557756408883930571851236481 1.0984932116326983168817276558585202 GT 1 -12862466408.8482571928529574755767183388051686 0.8992251006918751251414989788504782 0.0386345593721648307931885929299563 1.0394006710917912616068333679310415 GT 1 -17925263578963.9209825950238228726084654915642350 0.4369561399251010831696983547863267 0.0312034257337296782225491264292318 1.0317006228082695128294463246987139 GT 1 -2.5737113777628506065007879803429925 0.0758317385323943547813131073858449 0.0719053875131752125334609642731638 1.0746215982819990848642270826874907 GT 1 -14498.5958275137550168153774379457062650 0.2420033396443134495169879316201616 0.0651903727305637397263774926672796 1.0674123776226735813993053618437069 GT 1 -24270856100547348027912568848709092695042.3635847576582881682124087859587816 3.2439293575682224984132968397926054 0.0545464770155404715516424394612184 1.0560905481103730702304109939437584 LT 1 -1301643366807957920676403368787.5678548023740835366445944756749229 0.4208474301807196111294907699807566 0.0117374648563055360575300477382454 1.0118068927029428599208691361921657 GT 1 -51155067162647815292778383729607.5808396271916073115776852307876965 0.4553838942699461098048942713028120 0.0955088919147452162346240050176871 1.1003828049466242700274920065503203 GT 1 -196913376554176605530.3846184876310426742183402697655374 0.1696567205591780016138294062746774 0.0552106541365375570483701351063543 1.0567932907677072526545363596309515 GT 1 -34653881403828660580759.6124572529162078803308788324734871 0.0213338704731046149461172874505289 0.0891800136190629071984201439205387 1.0934100012685603169031898662280806 GT 1 -2906273506297530884863.5323444048719598434699925284196015 1.8463520212227483767269212795600677 0.0822285712797816407292906528534351 1.0858069076865874277981162777429566 GT 1 -261890.9295058365294138730532705700004505 0.3125415016598780534820467377894051 0.0304688581798542315067821504972761 1.0309426832886053114679264794496489 GT 1 -9141821372044551011.9393459536140594288561380963665727 0.3642007556812106488214295813147749 0.0968260590014368102109839232716633 1.1018401184245517006125300875251876 GT 1 -5636.1520297858042843597567053509383845 2.2579128014516396746473231959387679 0.0672345256763974703345918320340408 1.0696014770173003529325679174519105 GT 1 -364267071009465331.6579059897886570791291088797362209 1.0087610661484887171023810263494116 0.0043208939806278056268203298407429 1.0043302560210127037841484738382748 GT 1 -10256197285114477774240915603472403343.2408854773616388112028096897197479 0.0883860309479165887159414298642655 0.0492921918784324449804469674144134 1.0505485106272463484204582791512221 GT 1 -6221266976739.8172721853934994262803471642096378 1.1590666870183309693740113518014072 0.0457985804593512276488935427645808 1.0468804982250173766789963663551175 GT 1 -247972084519207816935495431996452732916507.0977551569869253533648544485639288 0.0787990427821002321237612617636172 0.0483929256478258409491590454002306 1.0496030664151688926086406364823355 GT 1 -1985.4591957563284465783671388655755482 0.5083655127951236534682554928464762 0.0932989501880579203422784926310334 1.0979424864925460308091892164146038 GT 1 -8439112508946597192748054186930143570.4006074127061834345122262936211909 0.3374433487276259693266307018648520 0.0672694351171609194847394651776085 1.0696389034604917028333222596462404 GT 1 -28.0958278220688919451048127690804402 0.3037351332592373192079682842559584 0.0781184457025920121024860286115726 1.0813385297328856643802595008877600 GT 1 -743596383190454974907716392.5050966703473492336960352009317569 0.9924095022115077255525702140938307 0.0481081273142852228357917298828815 1.0493038297530116209303189095798175 GT 1 -64268.3710052101763068831520211704984517 1.8278319665140820953926175436053180 0.0895884002964129305461873500081384 1.0938584743648048786382365180752027 GT 1 -921284822332496480228484.5801745949339262416451401798189707 1.6806162728394266389890289402675221 0.0994545365426774678514103227751351 1.1047546287362467173780102413385058 GT 1 -18951575119354587695976393679436778.4395156740598020792473706843359930 0.1357245035216174271646683624231325 0.0668515565187056245224119624905424 1.0691909873806509193115648050936100 GT 1 -229663675.4022807096731674570831002443707439 1.1844755202458818362047590922000104 0.0225882149907125039069492754988169 1.0228472367097830972570571772294121 GT 1 -3173577754973901251.4879309460372656043916729004723402 0.1474109144738329994994393082123120 0.0532723936895999143990057167916118 1.0547438657037401758523521299220152 GT 1 -300783430444070080700107402464826069.8820123313611466666615038177625120 0.3478545383727153799376402466305865 0.0031957760331545780238031831565899 1.0032008934309950437579368696052889 GT 1 -1.7234788618311077730744840071553594 0.3979150714534119622105188276202671 0.0463414392253205944857212464362405 1.0474495743482346976932190144971502 GT 1 -1409.4117853400087795223037822825347462 0.1989241532616392960528782545159959 0.0595820611685714798002562761503490 1.0614308867522791770967020742562104 GT 1 -17147912924571381931650.8346979411736656603778596977941590 1.0030624607068551493036837769746735 0.0373407643389806787130069085735050 1.0380557868560148262970379358242715 GT 1 -1767197451689099284.2050953449477228892656838476247998 0.3831711306495150387532784275428347 0.0303309901109450158481467691600364 1.0308004926343605845553329701623354 GT 1 -2472484150248044.0589470756077770956073073528556114 0.9318717029706914100417297073647980 0.0347108323760403572360823381817208 1.0353275669620439853590712980406781 GT 1 -70118252231066147422428155455466316.3798109511262002932004430700770942 0.2200270872222594121811610915891039 0.0837408924900293509976912523987798 1.0874560858470802252001960367484522 GT 1 -820778624787692722709245046028015.3502900120693865300537482749144098 1.0979520230818737387992768339926461 0.0447930794603139458057460869118234 1.0458272912489333090101397030187823 GT 1 -5721.6738170892536846828460010737165340 0.0363923528135729139340170973157867 0.0929995951069326958934193442230582 1.0976123824579850906223558034159999 GT 1 -1572907052828.2592355413133149250883583317215353 0.0852017417312421249140501927104430 0.0112097706231544789641610749582526 1.0112730736211743142018652883222612 GT 1 -31.7338498517993299785361117678447348 0.0208962143985725532134543194918893 0.0859576634403579483460460291694165 1.0898783885135934294530989417502261 GT 1 -8587804256035856067.0352399894231463076293120193125663 1.5224668625609654631744982498877306 0.0065004246360221278201785850631458 1.0065216444045713768602070149622988 GT 1 -8847.7684455553344038097099175547275283 2.2602693347301567793995068753280839 0.0321726362239307148321443720943476 1.0327015508171407552391244055523948 GT 1 -1094307033.2014070609390527163654717372250275 0.3077986608645510284294422408388985 0.0675762588484887114821256605331910 1.0699679097342383881391861859907518 GT 1 -21029239741916409394.0829372361936743777765137125165446 1.4413000595539797040366184273716900 0.0119570487241903330524862611433414 1.0120291092279662363952609026384753 GT 1 -7.4453442345810954693391007202264313 0.9785079311336986457459381618724626 0.0458610775131643726840226169343359 1.0469459970801839443985655446921391 GT 1 -168633564433060295535658981711584.1722728405613517392748248754176844 1.3039946815653308741323938559211543 0.0052510616474140282308845803114559 1.0052648969261475885536276573057715 GT 1 -2477979021167835323871986568716922417660611.1917369877510891538924450299039158 0.3520294198137702651125411471999157 0.0061062843532746522276271437839334 1.0061250039512725417292911663321318 GT 1 -28485.6264646130459427455485473269271138 0.1193495201244203098923594819845246 0.0854055836724943421859256452586682 1.0892745728200001850827626116635966 GT 1 -2864567288325549.2507525913246258715526466058487603 0.0791778887423253297571666596601108 0.0531714853235075178599953337401084 1.0546372849004890667724925887244528 GT 1 -4717392927495142885929618786137995636462.3234365224518372903177573974592886 1.0781719328382508188394214385016956 0.0738546591493532775519181391829341 1.0767241010899397321494123493246047 GT 1 -13807371.8116496970441703531010388732602068 0.0501732474823528207026992447948088 0.0185788244223617507511002696505917 1.0187535786509827076950396953928191 GT 1 -1290321.5932302131329825434619741566305976 0.8523322490334624559108509618428603 0.0394535200188526843852946273797506 1.0402529065012020137115375888529308 GT 1 -22159638451995165.2126150126752261407445851716490498 0.6080306885284242374293373525048736 0.0062236844763073404267843439791792 1.0062431323340807065858660284051086 GT 1 -89532142754425518915238.3054681326915378100225587159741425 0.1048800319348070948256496926231123 0.0708388133453115736320939758468551 1.0734730496700033765816375443256162 GT 1 -56233341609650448689530254605358181353.9279776276855899717709297310290503 0.5574351603712094115934484032100609 0.0754689012678175344137857364058039 1.0784685902867716075463892639061310 GT 1 -105476269520628136742344529094632855745169.5269582400817227689386746600590078 1.9030426801343217063559875108918919 0.0828176283735469828193167981441254 1.0864489479536382227935387407763594 GT 1 -896592913638800770640457625132.1323416318298793675732832734848698 0.3290393784595886963498913849625278 0.0608592907852907220647201981996194 1.0627899609313612476644066391765516 GT 1 -3584437.4796967330036775452389588691360494 0.6968271865938373732116626567425114 0.0415196301423388328799747579884640 1.0424061967711951672953015100017869 GT 1 -7029947934794544.0964559542456736499640778873720952 0.1072565597266482420497848611309978 0.0834122371275593780964425718395608 1.0870974575608842471081483035814382 GT 1 -1750880864380840412068390809124.9964485722290122939699380419326569 0.1561984917694202236115171902150948 0.0649684658704834751303673842583845 1.0671750239204414255449311008877546 GT 1 -3070055627865.5194495974443587411335536665034824 0.0282545122284891262606914935706016 0.0574728438648667958779659776488306 1.0591905471995812513858765805104527 GT 1 -3119726147055.9930063677855459365154698895465696 0.8444008083373308373878551579439838 0.0071237545268659863611280308373741 1.0071492496188166516458489681588276 GT 1 -127200348246760009854668062530962.7393153991617464091654530204584005 0.6749391356692154884460962989013745 0.0671560906265675110980200816645191 1.0695173918378822051726211682545317 GT 1 -11.2761876627884400096000547255882836 2.0454331686996645116120032919591649 0.0937586326251438433049084878601234 1.0984495985139530002019784045128992 GT 1 -208946149827315096067393174249219504494967.1090732810649565160781914813475569 1.7768882462807291914973403503834325 0.0339252149318543794676971240916389 1.0345140305113709394138104513194357 GT 1 -272.1021837981687573240116732632293597 1.2519998719703453370495595281555981 0.0949608319301815003729909827257572 1.0997770565835887553481978830840459 GT 1 -16511187052820701322711147644382.5030693640690125510708723058930171 0.0565595989892930126427197991512571 0.0549567027901932376366433822103958 1.0565245353847333353953075986037326 GT 1 -633438396158420609560577722054446069.7897617223117758778201810308496496 0.1536911819901423292847050445110816 0.0938398815678357392009439842636261 1.0985392573929404511655963293075254 GT 1 -870538415201622506869365.2273884954099987176320251849115802 0.1119408962865845906062471114308931 0.0077325317708793696662692195242491 1.0077625828086460727758104336642283 GT 1 -3530560095160838834106287054535.2404292829149904038323383990400410 0.1233812893316308187634987602217246 0.0882343060439973823888051466865617 1.0923722364379220490264803151847994 GT 1 -1539646323778143699074.5468388162084338031869517939693458 3.3926249175767349478823515170163417 0.0591981461853898194639333741285177 1.0610227313735061432144752612830734 LT 1 -182641125196152350709877867.5987101767328479368546637625159103 0.0366979276339721348519043622091133 0.0184875586734693780195860857737525 1.0186605895165849011317373651814200 GT 1 -6.9848153859523495907684681485957336 0.8033389479753813695404749923023024 0.0130113023043595093789650360498865 1.0130966907837844507442457893540472 GT 1 -330111648090912430661452076258339.0339101464890414143700406381460012 0.1484569585370653087187403852560546 0.0193063199352313235196321804556581 1.0194951209150495629939183243749188 GT 1 -1705.0835696726391625036222603322168187 0.1958942276660635235860216796756281 0.0122694094973529406003167047982902 1.0123453000961604128292216351733967 GT 1 -1572734817985977204157689114791181792698518.2254246359756299314100445345263761 0.3452039566953955586106480647841397 0.0346312982989994266416215291719137 1.0352451763133955738153667723867521 GT 1 -201861075817908229628826782.0524874889120611237134494471830865 0.1232334898142726739963745768645640 0.0366826180070758711264771375834700 1.0373723451657159680924849641904494 GT 1 -16593171.0248180048692342673369460448578003 0.0563135727105210336379486878517207 0.0417577676734581598662856685047505 1.0426546808575968833165888952969047 GT 1 -33192345798921184971118754773248026916646.9631650007875865124381184297253231 1.3807378696809651101975074685483836 0.0327628251228142749808316744486606 1.0333115448565072455146224566109718 GT 1 -6763978552777129322208761731326.9029168933523513507840406990310352 0.9627961771012009835463038592236904 0.0531919616961239663109699526149373 1.0546589114080520086120133805031810 GT 1 -22355509328272454.3746078871074515411650158053046729 0.0593059861483299546414336525168594 0.0291376871241660716312957091024620 1.0295706200492654710994264902668845 GT 1 -1448083110935638667798347676779.1310788401526988626045532438743234 0.2542258008322904277027400905653294 0.0368697171014855156713067038691549 1.0375665877588657402535195135006085 GT 1 -2353791207577245755.5060989979279500134826180964076199 0.3819329514149003368514254200027166 0.0729986044789437325982396149188661 1.0758002080009573588256242411260765 GT 1 -14956603290.8900154035291115802654144938535967 0.1101359884644536279570007717551599 0.0686308213779010316418380652891091 1.0710995404328663872878693827149951 GT 1 -4519050.0032746606783877939848237107624349 0.8740529707041016263009460554636768 0.0420569050638862097847075836706736 1.0429669026334367314037089877775151 GT 1 -629568773708630104378.4389862681373228921380784209336279 0.2383526280512837406096794227085593 0.0419690758214812763339223863556401 1.0428752215964391219684175665246894 GT 1 -1437733900480132308.1963502423501405643585406994222697 1.0813008056943280530467119191153174 0.0041025651045731331199404525034446 1.0041110037126590370522435909406620 GT 1 -402922137833290287069149658324.8177253510542655519813561222651407 0.8238008920648650583828881480193756 0.0850955660419993550949254148360738 1.0889356629229931550554921059535248 GT 1 -8477189503690217746079200880973315311793972.4490537958451140733218924183066122 1.4828839117012460950153588438981910 0.0526123994809247110043384086959841 1.0540469764828456102514888285652703 GT 1 -25038184316.2727865535270837692385211855817426 2.3388443820202163222400476558806855 0.0413241673484245426504531868874015 1.0422022876746534007703823135522923 GT 1 -96564899677023933272090264441594106857.1948029095333940151786031337885587 0.4800461564082368992152133359093506 0.0082245111289871519345845511650520 1.0082585190144936468431605077901351 GT 1 -1920.5693993003511828407179176554206573 1.0693040625870069483737567779459933 0.0278634162389299254329212863702849 1.0282589661207598553235154782767490 GT 1 -849071153121.2121326713054336021275623210682655 0.2795607256030294296371641456155587 0.0940657310470648625803356018626647 1.0987885263956709995072678411954845 GT 1 -56570170615142293935992440.1774750696493481108844660530810297 1.6572868512860001259852416265771311 0.0702370859269297767368488205769071 1.0728256564395186503272536279269042 GT 1 -84969750195831417547164087142851291276.5161857346457742438110597141597417 0.5762479428585681888148659010663498 0.0905123552504065781779899226067031 1.0948738657785816480133652283182861 GT 1 -1663847299105002086980974502272.0154362522501696186961037319630806 0.3896543728119939142953374897831900 0.0474438226433973078045830835844149 1.0486061948683888182300170985772900 GT 1 -1928940685448159850.4213652892256412665365044811672764 0.0138006100396662939145873080357546 0.0532427160334335352396740921718805 1.0547125185762070183876225435075628 GT 1 -38.1257621730691963452037260818697851 0.3994893922210856455856992266698814 0.0545353096344521085382582206285047 1.0560787365142821865535742270578359 GT 1 -7744492189183706.6832222450863256080685185478428827 4.3290487137958168949637365329798413 0.0356794916447394124561258778504592 1.0363315620830524524976864865358978 LT 1 -5870.0814628279468119362046270917363572 2.0908229705449034920224192689632460 0.0020449767522864196048093962226063 1.0020470705722742352133694677048314 GT 1 -373212622621073.2611517834480991750824794717720746 2.1936444313960557005757306384205329 0.0233040536816135605037230338303836 1.0235798869229165718195176041036374 GT 1 -38259522670256070769.3674348298884727536844497866476855 0.6758782819103565335875135384162490 0.0096232569165167685916076590077589 1.0096698596745684574730931929187249 GT 1 -1526645325639864920526932474876446005011972.5573463540956294237732049948423450 2.0448836119911737004578147712302235 0.0293126200513228006498684609172982 1.0297508193285078240271812310219329 GT 1 -13403928537.5330633585521885850410585257612996 0.2328105146636567492512883949529410 0.0893595176490517549691780166476877 1.0936071002818536820226742835166039 GT 1 -180497947400486918939775981529865939741.8766673493904560051666262852203656 0.6816326819139264052377878913526503 0.0936082343944557157251938993189124 1.0982836540342932131525197456278219 GT 1 -20725634979669827559617141695435075757536.3989774597308188706268795465243175 1.6280792286016976145747171382111472 0.0077161707236819789756989774927486 1.0077460943991821027237439481172636 GT 1 -96825028915336895655155000076.8308989045689743650481769049861782 0.1330276098490928233366137417995019 0.0046269056106452760289465840117199 1.0046376428714068356552603068804389 GT 1 -191798994440533095566655572437546.3495373510565153060017325962316273 0.1538640430603075467032906470593653 0.0807954348641899018512365036509178 1.0842465860371538565617615954357987 GT 1 -9596659514040465256878094750755243470136.5566892356529431121429706783750139 2.4046960334763463861954967392967733 0.0042027850511282260483042248961594 1.0042116415756442221736437311250047 GT 1 -1692095897505.0948460193212496744909351856514469 2.8892937788014053481966438082080237 0.0413779676857249073163158776785765 1.0422584086752527975286433692746285 GT 1 -437301502286.9164544919875088797917677386109534 0.4117975588044146013707841888502533 0.0372972529191254959886764975530390 1.0380105886852265719280375668159697 GT 1 -1247402937284977903.6707573589830944024135968212246902 0.9794623492055050766224834538424819 0.0117895659325785597874937327132820 1.0118596139666248896957182255560593 GT 1 -854736492842473.3644979524736823276353715072263537 0.0246344618942514300148595158692212 0.0688721905860347094358637025055489 1.0713587292648863897075559276085826 GT 1 -1538139356132702818270669.7963783544318002409605088743996940 1.3216729128640257489367050019595040 0.0947982929244671407851370265938258 1.0995974793699893719515137250040937 GT 1 -147610536529290648455254323274866936225306.9074442339856743565255393287428601 1.8757121196480041627899850829330160 0.0196250207378790900189353984541345 1.0198201486023135726718418319118205 GT 1 -1121466354094008984396730260868.9446066567088610389741237878369320 5.2003327992220030251543023330982256 0.0414749324824750734704530095836671 1.0423595639771504507203593078272976 LT 1 -346913628.4225162666473790873078875290016671 0.4121054386161745166560459811905650 0.0290987803081778666874069699890868 1.0295305463581688380063768999059981 GT 1 -393074041614084641912120675871.5738426461166017790903406423623305 4.0767413257041998116375907441674592 0.0254659165961980900132460696490937 1.0257957853728718568290049170395183 LT 1 -4627420.8472923551931963599795200781856251 5.9221197190198198718907985922314160 0.0594837938128902730438527767176746 1.0613263989305966771547269771385500 LT 1 -3.0665535025772838150707590995111661 4.1735367454608455940842450561434735 0.0864250050078538781984448073837878 1.0903898102096060224503713329271283 LT 1 -142131748636877645787874859716746867357095.8803332080074617339788126810550799 0.0408400852061493949433853887880271 0.0333984660063986914510779103546451 1.0339689325730320171755659912352804 GT 1 -482554990362.6729656104138685213158721014744835 4.5216757989601629345357251447404292 0.0551989998253183177368124673165437 1.0567809554895938537536934043004613 LT 1 -6666767.3726665383015038432204370561914001 0.3508721539539130019745365652455993 0.0951499088326226162337761830314702 1.0999859941217988549270725301442236 GT 1 -13984983412522890151194321030.4141567810608219435019262262631547 0.3075835014324661383136791109290251 0.0642941449967353816156842216333807 1.0664541093689175459729722082633095 GT 1 -1249167247969250776765023393313553498272087.6587216032431892983668735724958643 0.0209409932413333256343800378178138 0.0816091249146770348397300220079114 1.0851321891311299215904217544146771 GT 1 -665562435876595970705339512546936384223.2412977873843309882949815099554498 0.4899821703450862784559323629662330 0.0703783068953318105340059357898638 1.0729775572008010922168635750802657 GT 1 -300747.5689002728653641283219283581174444 1.9299988038378081699282079412995773 0.0632511609452051792669807286495805 1.0653400806421268838223270441586504 GT 1 -160310607705252126172650077436895657.8309185374922321209292590477913456 0.2367740125821016337068902603880011 0.0066922976960758223101735528487958 1.0067147915334417843436866805225835 GT 1 -14173990824199492.9793863551568181871604285078300086 2.2879435550298950348904107233195203 0.0715148272934593890716584788775251 1.0742008673997694473051090524039282 GT 1 -293734462516008675865943840516786479.2159556288904181463570307105751128 0.5862641095344206293630876973165614 0.0507147534826512339390735213391173 1.0520459496484741604301559805913001 GT 1 -550318894168522594777897254589634256720948.8598653143475333928097688169746585 2.0703914709970518968996930687101291 0.0123657501222416658245011144795099 1.0124428422038214545497802150913049 GT 1 -107869859284322572496200866725.8795331740633382977655921959225027 0.0405549870691328144313213630476529 0.0794574271620487958253921865641812 1.0827920296903284396961989836035827 GT 1 -494504818.5743151115571141005328914403695158 2.0212294386277095801713621371546859 0.0561862214951604358394466450831749 1.0578264008296416298164299140202664 GT 1 -126685671459735318022570013317187319344.8647905134909176880838081130734588 0.3977687751005928913062446985820538 0.0381324100369110744011257113333206 1.0388784781607451436666011582677350 GT 1 -26507745458634346458420488480348.7755977201937841130521683265189286 0.0651494671214131721222826285396830 0.0313878401221052096391306780610550 1.0318909950159327044581207017471432 GT 1 -18940803194649233660736.1920886693749499583979904855926794 0.3965106423497257925457771006268274 0.0779774612733557165998721948050517 1.0811856102507451228617820533075946 GT 1 -115454.9333297494198058119393584543633880 0.9776399277325526117268817639956052 0.0290414318785139646478430498144727 1.0294714808890340620163114539025344 GT 1 -133.1770825452558314462453233809824030 2.4581666630514015073139715472779070 0.0132794504768339920055595239899402 1.0133684108200584429631040908240743 GT 1 -237710154378009038481092067733102.5984183206384067556945615593026511 0.9774642561360162371710200414891702 0.0965934168126188209596916408839542 1.1015825686646717359051519075066441 GT 1 -15824.8938521259366778351747740703112169 0.1758497232666667951526202233385188 0.0116900563940808846351653395381410 1.0117589223272106900909458964832665 GT 1 -26606897932774521676.1449194553573034034340146902315864 1.5158697386085018123435459347090600 0.0925806998454936192616327670162171 1.0971506422468131598555855679468022 GT 1 -2958423554218833763601575.8366154653654121087661197913491993 0.7484364263089666086611139345062310 0.0308837685965354778448450150515567 1.0313707244360021081372925105003202 GT 1 -5005016298106382067263901478921591863.2863597068885942583892592554760622 0.2318566608666150670961449201601713 0.0032814506588146010509797854891277 1.0032868464252220441049706135686553 GT 1 -915736365113694290936760440484895738892.6196122160008991361030126697387510 1.3511681316538181201607309440536673 0.0119716511416559381564952488468090 1.0120438884694489496500334762647873 GT 1 -177635890077630344518640237048.2799037793059184588590682504768038 0.9423489801417985560885608981990166 0.0409764349341796188226565078272395 1.0418396318606400586633303959895145 GT 1 -111153989550491759248827420209108061989.3597373242669401520455597061125155 0.5955466685670716004065857183125572 0.0925152598069991869876550177188578 1.0970785281988326815863707830795467 GT 1 -650343069606.0531430570837027954026227883392665 0.8884359148522652854762582484423594 0.0014275526092187669303776088069400 1.0014285725332238210910726119644872 GT 1 -144907857172.0018827481799858075032762920854615 1.7218636077433885089470107577269059 0.0956634656672342618494888412999219 1.1005537153741746542649081446850036 GT 1 -3388299971.7927780343729261699222145333229831 0.6004500558763919273518596336484820 0.0967798462378647507574599765344749 1.1017889526643046119936743009639590 GT 1 -133119088644171304327541736940111407559.2922598906297854576319453153293291 1.3259931443637494876874031334573465 0.0038990945947677060616287628121387 1.0039067158812923252675121850170887 GT 1 -18916544819110863833530003040369.8145199060939936730635042598204481 0.9670525786167273072496751386556930 0.0741187050031646827913160261900527 1.0770092437012711594571654112178342 GT 1 -126028765872606586687647.9136749867362051935343053089734908 0.1213957149792521455887144897158448 0.0259160553482817750123651008141339 1.0262577935793131882014678182237216 GT 1 -210120444875245.2970203817468254171272928382758059 0.5193260320802759813898391220078103 0.0358375705445350658501012929910008 1.0364955032795757289816279973020259 GT 1 -7935678.1488394745548888765565456501720671 0.7047013900267818895696112710588172 0.0742242173054905147360566346028304 1.0771232089745512264349654565159083 GT 1 -74747678551836.8137268287203789876948171175113598 1.9542263641718401466392504568512491 0.0328973000448849063679175184222182 1.0334505844576000255719062990845955 GT 1 -5908206521693926861277058803737766.3054473202521645296374446105357503 0.1300668257813346596206724461554155 0.0509491289153422721347784913631447 1.0522928768724875614847600496423215 GT 1 -7766580498558827949110484.6223254618146892597959983899174562 0.5221427367195229480556266792883198 0.0607355736881625190619587950612565 1.0626582352509239286916017383076735 GT 1 -128425583117454448373498343920017052642189.6971196203845563704280876129890543 0.2086038577468253137150766965308612 0.0559716695178631676416643484655910 1.0575991021830020255245723553791695 GT 1 -53092165836.3450421318003568883942037741617500 0.4212363115267884718840081402405354 0.0989438935183992822325244515915174 1.1041877519678499617573772372408726 GT 1 -54939237872.1571760334702058092313915880692809 1.0618641273683868870112495750757423 0.0049241078503351478345097942587297 1.0049362712149699888658560399964008 GT 1 -1627059726216421732089484037192414885125.8804828975886609903012723883901031 0.0473336177930843012524643443053519 0.0190315026760578137019836686306864 1.0192149327520323989546149017579083 GT 1 -27627814484682176908427980163.7857711583880161424311075117264869 1.2204331751347259557765039793346911 0.0983391927316685404771323945483844 1.1035168747992844461075532519468873 GT 1 -1132544796743144001309297651190118717110.6505938946749967132992840290761445 0.3601212999131224638690097484950343 0.0077942011238057723125120452549055 1.0078247346692616701036140335202786 GT 1 -5374467659133485346294702897904532835298862.6213204044370791459640220905110279 2.1274022910974331047454324084277525 0.0063237477162134864943251837867988 1.0063438273057358873261622711192546 GT 1 -22233682052.5107223615657233644332567271438675 0.9518122798631500212124533792923225 0.0128567743994766369134797972946760 1.0129401380191237505963436868956964 GT 1 -1191154650152512.2990910174509183681048960841057223 0.0093605706310343406592449943804087 0.0201514177981653535339910365422119 1.0203572272124151202681051901859490 GT 1 -6779663555996969.3182545536913538775281214751741900 0.0007871269104576759119216547666464 0.0506373561078805981504414272607278 1.0519644207086381221371774281428638 GT 1 -627740714652514322293742245729610380464974.7405012206576586266392333782373792 0.7340451672540813674541464846238996 0.0232144645263522369770653309457044 1.0234881643689439094176169783084834 GT 1 -2693868616010298178510228750589669298853840.4618478205755026744204404831715915 0.5390931403824219161983736181035773 0.0275782309732442732008978447245517 1.0279656498854085833557756687527314 GT 1 -20607281117.3694406589624490131323268227399027 0.6085870838181299967973782861454961 0.0148284600869135117876417276110576 1.0149395007767545795929819188726960 GT 1 -155004771279.6392371035958119637829713224190501 0.0785441081264168785431237906703607 0.0038850573967016190296239833829335 1.0038926238359144599433263163294913 GT 1 -25951530002721656104450.0093660512154244568453954327161285 0.3874876347576028429310539362761815 0.0750730980710323880304254955030257 1.0780405695340037079040696580214615 GT 1 -133211865902.3979848707801685050022105653385984 0.1633887008060264518186254612015656 0.0849808964337943963782728605641087 1.0888103357101302690073764568797858 GT 1 -2699301015273.7386530020624275472202776314513707 0.9225847674570431856524082940165454 0.0228567363706159631972041395221465 1.0231220014259570740018997336299136 GT 1 -275221085257.5676909365642271407967954495242887 0.1882555595545328839095841632572003 0.0258856497039712751318031524887322 1.0262265794627709250995600350972918 GT 1 -2577588.8266613715846412913419589299016976 0.0409367659448785168589538145096252 0.0459657730867575900300585534451305 1.0470557309098746000665433880049157 GT 1 -10094517534772255364673616791847984058528.5429562357112668828919512222827707 0.2380566457117854789563487235871020 0.0773656356270453259480063839701425 1.0805222612369338642808088021710502 GT 1 -364.4903751711636401556519283101208097 0.7703057981149809798038010360719643 0.0635953097833698549056778570392351 1.0657075346032240841671866952659002 GT 1 -154935519086216465669153034203267693.3170857345259488080522754184106028 0.7687007425561682259427188526598581 0.0781441368424283172169437219955795 1.0813663982781511077491006767711369 GT 1 -50416.9016480082198989025557365563277352 1.6369735247214336914371991587987395 0.0333416925026467831389493422894400 1.0339101991296016250793001110425878 GT 1 -223055785096430878476120546530736890752.3710618507444939158324533064822476 1.4979290794394651705684701330186590 0.0348573724434199779502406961051166 1.0354793879878133939160421187562725 GT 1 -19442381496999.5863296310164258691473115920594610 2.5360571383000063135071557829251501 0.0751096676840393017027059690038425 1.0811283598017799813411868290008564 GT 2 -14658416660035973562043859006899.2523051292492127066759190946302536 0.5630381538298749684215416306398019 0.0986479049988239319941625607043526 1.1038593152441460216600866789720135 GT 1 -16373153743508221039378982189475646989.3253098557779765876087666319122945 1.1500262376937180944703472295229081 0.0614451753153095708665926950429918 1.0634140073099727500539346152613433 GT 1 -17510064578291628886.8754619947040494630140732830857376 0.2251341879657032567858931185340812 0.0114618521251573177154658266819988 1.0115280454369522018174842499082377 GT 1 -12727110683785884.1626293913450537254578364961345660 0.7466256474728898130989841613518987 0.0199853609151830101536902855464524 1.0201877695874379042892378681996865 GT 1 -24512294850062920294.1211207609345783608445581219914093 0.0779515749878515666880782918361546 0.0460695860074497874515229010796261 1.0471645515017964276596013015699311 GT 1 -16139140826235865144620853571025935.0943236830321093447428781953799699 0.7985847878396216399775009451857201 0.0991655201988665543170882101463185 1.1044337454629845225453682630128235 GT 1 -5517042454330246857.4048562909641769088671178562202877 0.2438420132401244084486312499782405 0.0303195649027472733464146446857874 1.0307887101180869840083407863055802 GT 1 -17.8004500066370566043413419420792543 0.3146642116934696469013679388630967 0.0423656927390449688121834102701704 1.0432892990842188274345475428188496 GT 1 -31317607033458684192280171503740.0922622696372933689206379053662643 0.5713450566689730894678907441943374 0.0914871874232930794096362505495287 1.0959462882440290885741734335573068 GT 1 -357792.3702989959566090057769861208759389 0.3378205502888101819633174780238045 0.0696041628715373877854429823856666 1.0721451520692240266001956055270148 GT 1 -28628045258504258141621146435.8970494121462047865507612194441797 0.2872852635121096740691344606335949 0.0885974061341198977574902939332076 1.0927705541328365473970172323525379 GT 1 -7394993206.7549200840181135848244218775853216 0.4096914045009122315207601221029708 0.0393449967393497978096764578597504 1.0401399321145331131634830599217699 GT 1 -310495.2227384160548520405014709937265553 1.6793473663669411702211614372079047 0.0095121091868303489418113368037777 1.0095576382457023951165050444616449 GT 1 -5849812805248077191.1929581312830476357684861206374212 0.3929780307777681042467714610494805 0.0691842461368661827370717887678464 1.0716939226186569859398443020371439 GT 1 -170778894535218048585416932064.6234461913873089104877176619694487 1.2080185392397618311803233528770288 0.0366737431121305623917368063154387 1.0373631323618883468917652272110097 GT 1 -274052413448.1632279887516142498627189920322731 0.6147605525499916555452360945528360 0.0698010867895741690626843755223691 1.0723568305325070426891776919272119 GT 1 -1823.6739166021256549462317901920696277 0.7158448082974308271590221459159278 0.0360677510597453678521046947026039 1.0367342680237379267354972353775935 GT 1 -911389614155911486076240903686750573.7089251987060904176851664332559688 1.0819922056894991181563581067050189 0.0970337053849733638231883111310931 1.1020700522695068339527613969097583 GT 1 -93249388429436794029192556851724160618.4948984315086959239142970613444955 1.9948303663256248540612097236374163 0.0785605039740276498372603620376573 1.0818181621656977464128510144794189 GT 1 -550.7250309491591911507879998304635137 1.7113924829263727560229793544538613 0.0197274578166537422981568506849206 1.0199246417126227007330822154548060 GT 1 -225095869097847045.7642307954568236907170892797601013 0.1153145386852055819393747474867403 0.0565917665450195995712069533020344 1.0582561807426900118789890953893253 GT 1 -6181552060721859727477751645237146937395101.4975756179772447081566009188865085 1.1062388867148055590875188767400499 0.0359178057328950310527262049132854 1.0365787242437824119882128953853755 GT 1 -5677792312731246261184.8446375037059891082008891496696791 0.4983559374711197116568681771799112 0.0878397236568254921253053673676504 1.0919395627441943732147389115526744 GT 1 -6.3257255808273023756861309580313431 1.2999121041758363371328324924331581 0.0952729319536261213897578840032749 1.1001219630364888378782645444527110 GT 1 -18.9261764996839940340196975832848004 1.4397894204557489917619001828324431 0.0403306524430971844050007022461247 1.0411664834779893813590146010238306 GT 1 -38353742228295488.6134784753637829451751721284604033 2.6431722161638141691507532220882839 0.0895235350663173294577315033129413 1.0937872286563148729080024920920642 LT 1 -1243400854786720.7626351767153987667780453453836578 0.2572991265897563506430271020333167 0.0072121985849601399042718187366645 1.0072383322189586516867479053515567 GT 1 -3729395595600187412.0398921120711221119778589059103396 0.9459220724956279167787668368846394 0.0740548879151722743834226057446885 1.0769403202991924057476770210443940 GT 1 -417129445738494611.4290309840215624807684899268462705 0.2754169264418534474471998037083425 0.0330347782899953904517176272229805 1.0335927493152061320931831922634914 GT 1 -139557365710992474225611150645.0531045958650060759093158402042404 0.0736431460998325580590625212413793 0.0957300690461469730945601276371689 1.1006273669730394897992916743212951 GT 1 -3865947005160247135312079409532862.7445188317493281628885172690841900 1.3989493039920585886264878571970660 0.0221124577714487144448516290060849 1.0223606030552575431389294470083477 GT 1 -540086134374369691.5809009066011194599949098537973851 1.5117122861858331014990786102880249 0.0108541525090099561322956278963187 1.0109134885747864760219056245434668 GT 1 -12005548431302437761798827180330293041.9773607680088899451630031452382610 1.0080391755348755576594657979960098 0.0138715020990417413250873923352358 1.0139686104559648384982734400590279 GT 1 -15792.5612744573260159605897787929443783 0.2486045707240154493781544525053492 0.0571516287547441741994321583501643 1.0588498032909373774303226965333547 GT 1 -2266540836097831165607865943353900501916.8788115482514497743719981163303931 0.0700577482999386233119448186755102 0.0155666162972697569346644593522505 1.0156890482987626649630809872142295 GT 1 -2303547082580675473.1294377662197577379944279410602851 0.6728223947866107247142107721152051 0.0030241657225847352062552099356481 1.0030287477519528349845379846050613 GT 1 -138951640817704873.6888843864566667881938088349051748 2.6025113217040517671375337550470456 0.0072327673762321772057564731223227 1.0072590506487378899819628865442979 GT 1 -149083152907.5992016565173553247825425500526461 0.1800469036254617818989372900405862 0.0580032964539412320996817623530622 1.0597535038322167586879233901119150 GT 1 -992471341284626222271176323064708061.1787694960934936965677670175151595 1.0415802864429016709631029121792057 0.0632123602406986934434764577003768 1.0652986608940186506308458578964971 GT 1 -368.9179385038612953027141731423129688 0.0364085477687487250549177643893593 0.0814859286782969384001012056763289 1.0849980545513240578540685561791149 GT 1 -30060954507835514858.1901485346555879569940161097904059 2.1036236847027291165345345672027381 0.0391160280628678974754945635135629 1.0399016140991079703593315638820963 GT 1 -50185.0722472824719327588183373840782789 1.0461622608964854963742136827950770 0.0490479579142074232968255346925353 1.0502916466401970855401829917725131 GT 1 -63263278797435601535216176313818803563859.6988680909222085408879183562135449 2.8218053732476072895242414686580966 0.0520623823953541325210486623287129 1.0534665831068161361792344329839446 GT 1 -19566129.8893459470977810454430400623088566 0.0872241052513329950596852169201827 0.0763508638412695299724041127179665 1.0794230022253372404160340732283404 GT 1 -36.2543003081266099174492114288020186 1.1761028065490126544725624910496201 0.0364908608903791065637125020998487 1.0371733058487564898707467055534164 GT 1 -23113592321875627342783770623578.3008200850270752091579562887503941 0.1033107653930865495100887498277964 0.0893670810033131697647099635470084 1.0936154058489979249869134620235617 GT 1 -66670754574564538.0387885016470984153089939723390965 0.5941649943318755504525025626382712 0.0669441353336512672970598415370694 1.0692902035432301161763945524653142 GT 1 -4160582725.6222236426613358215174467374966530 0.4814472406755186349579748793131873 0.0993817023943731553454168959854732 1.1046737541928892288365461373120314 GT 1 -32860853215.9200731483673567441551145833219300 0.3532951520042103200571229527728431 0.0248840057433242224923440109708674 1.0251988465920914743706665134065281 GT 1 -434868975.4072048700387808647783938172163529 0.1476033805592371278446880534204829 0.0683587682693347536013332517858833 1.0708074829016918254466044227561135 GT 1 -28160841219944547840772766.6665345255178652452742441533994869 0.8776840011372306594606580834774474 0.0799565199807797260273466596030205 1.0833343491653549363136020128959774 GT 1 -117721428939912389467600235169192.8736977880753609980155782360006886 2.0152806648813019784667325520802760 0.0866539524607275712849816508937775 1.0906404477015854050198070815087011 GT 1 -1781115132507955976900379255389171809318754.2233176771585859172876560194241249 0.9553672988069887874188927877383525 0.0380832283490568720927640580422460 1.0388273480145122737122363566992499 GT 1 -3.6550731177243645405468898272413035 2.5524091001786766521726464766226850 0.0655551579774426255074004912820515 1.0678026778814155904476441219856985 GT 1 -544354228164121466365516762929.0419800736713059353754643377162097 1.2901224719245881653795474200811931 0.0569621295811983825751072202213657 1.0586488376441268246228748885111743 GT 1 -705363294552144318833585158773059074621.6807285432102982167824800445294256 0.0956145545747081117809823234593775 0.0650159421994889317730621035215702 1.0672258003195479775659925756271762 GT 1 -344826791300991469938139571.0414407065471730782246666931794357 0.0369509836959106085894664124066113 0.0538333356340254446077057684768514 1.0553365474710586897682705708612407 GT 1 -5704674884217262557855.8045861046654069429895257684477163 0.3689483334219325227896356888289854 0.0300632511113403665204678756125615 1.0305244169420777254962922423682185 GT 1 -1624863833123702882762225173457.8525078016387986336624608226450234 0.1765258356307436490349173956678343 0.0805963677198424631194100366792381 1.0840300449106592948342580565549760 GT 1 -89568520919386994781934.4185872387254160784739323402272702 0.4781383974502541038709544099038731 0.0093281521578169750238424971414826 1.0093719318375286615745644179209383 GT 1 -58.1447762298945189553415512658646446 2.3202561641873632418300526966611909 0.0430671428597816339354772568207615 1.0440220497185811177008394272248198 GT 1 -2.3886152408078703801707198744093481 2.6977713460088884314188432274110270 0.0703438637988889751484511671859741 1.0756006660254035359010287769187913 LT 2 -7176221610884729115795560083919681731703.4912110725522110964068092361538243 0.7921392876162519878636465001148553 0.0189981484936657701603179078027292 1.0191809320522612301357851521363623 GT 1 -21390985799064217478673931386.7816140030638561426084253213976422 1.7886959351606971825464077130820992 0.0080574040644539256566559277089027 1.0080900403720813101166710053865629 GT 1 -26903992941388498127494647869089528212.8903201838410778805225780798611853 1.7499896023389499743299296679480086 0.0346048223220396819713971121905697 1.0352177509226016251663290418531078 GT 1 -16859106.0531896942039874782200868832459160 0.5307508197219957909522607816620589 0.0146613693655106238737883444343927 1.0147699094452295729498950176317785 GT 1 -1057263550344743696037612725124239837918.5950397588600495628502227281751092 3.5526776607358149884609281742064258 0.0339278693199372524275535767254183 1.0345167781161842584251180932618911 LT 1 -7712822389949811690.2620469814182856338129972078188831 0.4932798323025718184685833532724638 0.0104139006476421305380054775652016 1.0104685047361875183784597435599189 GT 1 -5677565675241689934200.9419693451792406113158917057775716 0.4835856256376233914256229440020165 0.0897153782177704990389785548976325 1.0939979571846899150792822338982511 GT 1 -28740138484433398046305575112325089298727.4134236678399877231901663946068423 2.0575707928657408311894212830836901 0.0051579694893934521075951760308047 1.0051713177336950801922193743580955 GT 1 -8157913226135794364340547764024525253.7831025069184201005741602913423485 0.6170481538990221752554065557444380 0.0390693638115088105728667236848193 1.0398530514009466007479048798801443 GT 1 -2428804308169289839930759528841343.9320745359440014651723280413911941 0.4251783028292129480732935887316840 0.0954745847310303208180100405958843 1.1003448758472754183463566132882108 GT 1 -29325.8428333589734624998724317123064038 1.9567499213611094966880228681388277 0.0364392811160097000240296674779667 1.0371197740329089555778394798981993 GT 1 -37159.9592333351206408140105130344577857 0.4152044988774155548938595107023825 0.0960314398306413618228454622936592 1.1009606977684674932586208134917037 GT 1 -44743078266191566631.0820138073472135653943487882067846 5.9339239402738992828285477347322158 0.0506085726423329453102245056666373 1.0519341024425859925236270561139017 LT 1 -47940445553366203433224402718.6394267158820469424162939369695378 0.2277279160313514964433620318285761 0.0531045058106626398804505444582023 1.0545665464902886039270727531103134 GT 1 -149336831013634663892090235100775736.5683023125338670885110409891738468 0.9957161978665584525490343838984204 0.0847615179121834873005276675364581 1.0885706115047713661859157754977042 GT 1 -277038003712.3630740241174830124732646344506520 1.6562838280051519278858157354013130 0.0017718764808274725410235666722642 1.0017734481107228746306392815598845 GT 1 -1012181911340333035104510550293203659.0686337777382103131211381041602632 0.0204402199669976486352595495067658 0.0087363248004071884147525866382330 1.0087747102144031535934502792320624 GT 1 -2765837543664026018512037244535489.1348168026376413909023840088402163 0.1739587016143154175393819643369035 0.0216870004906378372130102675381700 1.0219256197512029291339050984794820 GT 1 -20197326773563167256597467132794933032785.6987219864529705278979732041483083 0.0375385215855202007157728899141994 0.0198137369912827845738154891178462 1.0200126610828397586368819628481934 GT 1 -252199054418284208.6556424407275490846529612637794691 0.1003058581040787204972298974593033 0.0351772442439737309622182801962639 1.0358108673047466782240852994054525 GT 1 -3.3229081551727367080079284626010407 1.2164121256705854141303736670676012 0.0942916132555262648742250805892389 1.0990378936855408323287751516802032 GT 1 -1811937037711320195042619005030324899185051.8072454770231246092636906322863385 0.3498722454773395980306182978821073 0.0676688543242144684498200039186264 1.0700672208838762934747878799925802 GT 1 -508544.8508732176990590524611037551523958 0.7026779057608092953319267703130933 0.0804260085573940603169074060400896 1.0838447689608727361110379725323264 GT 1 -133615.5732331161000613000327354377239954 0.2475020821066206173190583296826277 0.0764901661190452054746470804942856 1.0795738309090609464973660334002185 GT 1 -262.8478006086874224747700280011203356 0.0751641281867681537452833476040587 0.0607973962068527988385799017089604 1.0627240575599895772999368052719555 GT 1 -725858277218248178301992640830512965480534.2644739413488212410976874319415104 3.2376471683475209619657816820334701 0.0734225235664768740286123427990703 1.0762576140507761754121363201333724 LT 1 -1567076470627307795849088318937775872418.2462205219275572781351106247475787 1.6698277562702796368473678612964349 0.0641777401990666061179202989490739 1.0663297139116459247531418148419883 GT 1 -6130367701041957956.1342247016336022144858675901122842 0.1826131413802947136161197824668527 0.0988005655735313526757851624742678 1.1040286980025084267903275049778328 GT 1 -6426666137340383514335822622447433057694.8565026076125479738857534441134944 3.4394920173486853934953450397101908 0.0307825753538210980020124556226730 1.0312663118210836349323261858491186 GT 1 -10995657658335948007947508127339286357767101.8535589330527619300598335111298032 0.5935639834546630945472447909936791 0.0200613582276626752017808827534907 1.0202653197140251220164177821967164 GT 1 -280849.1802051530708840599705775300486441 0.8640933040828937067889011799207867 0.0422459842459810578686025982343852 1.0431643025059465508982965433787708 GT 1 -31515876498449688126798441.2445230703243367067502678767376739 3.2924525234922002273725184479021335 0.0414752894634017189252881898381810 1.0423599364045445977913580700831992 LT 1 -2390919767471581559814729075585.7149744034326913409580394687762808 1.2895093573712396571184563666425388 0.0412143782272323152363287883757496 1.0420877725994649228907040258953338 GT 1 -92143308206854177407222585520728530978260.8581847621910186702854158988949593 1.3066120697614448684005952139943476 0.0140724956122293365008268276224277 1.0141724520442871675593878102138260 GT 1 -41715814223115209264550201.2163356120426731826915550275708473 0.0441116475020231747273477621953108 0.0019992133683346919685659959465276 1.0020012144629022422048879864652555 GT 1 -654803855553797888.2102685857596715274856937823432103 1.1807211166325932434057858024159008 0.0809637585418329712165163574846694 1.0844297216497566441006069677740176 GT 1 -33379444320041146584024706238539343337.8898045106274029517270257493788501 0.1521895863708517968515811640630572 0.0063235827287949605737432184210070 1.0063436612683525346623594618738877 GT 1 -93878.2527995310217967026545872984298402 1.1583802988768093170938932974594143 0.0172271211303469395164624148960135 1.0173772344936072697862062841108701 GT 1 -1013.6687956393165304107926769343196430 0.0101278747241666134367026004866375 0.0501377026596649474516685042657676 1.0514382550619097820391438052216864 GT 1 -15043216944550305.6757321789431515651015310394649609 0.7057078648211508807321265538205314 0.0455563098705297263857395424173463 1.0466266316587341000318234500174054 GT 1 -2372334935068999216543707724750790.1143087390399953286449896709018831 0.8184725704909036662907180072632391 0.0638111968852729973259649512259640 1.0659381101164130665258703362409112 GT 1 -8338238767082591587449295763755150659.9048425309628205097053769796895716 0.3264110594373441702556162141562205 0.0449439892918481680482348658555354 1.0459852902650683103905476988599382 GT 1 -428066603268803214407123236437993070805350.1992896719345717313033527940045130 0.0788216579438697857245427664566479 0.0409828684729017443191143334549767 1.0418463403092497025974812862835410 GT 1 -3207660997609310505158015.9586626965471885244249538976549044 0.4806205138100467148220274940714192 0.0091012221140276104993346863197224 1.0091428912554418831383199048422821 GT 1 -9171152.1632855031625767515121453556254945 0.3428676630825494045920076794096735 0.0896791049389585339337592037887835 1.0939581096960591450327911966301288 GT 1 -12561320776409509961.3700940892723671726443430786452989 1.5849002398889020421953574840575733 0.0571133293388557985426169776845936 1.0588091831454317578378812587340258 GT 1 -697932166126913482659437881356144789.9949977766657269923550888092825990 0.3166076171580414091449544871075133 0.0280231355243425513931064603551240 1.0284232767847458792792427983464921 GT 1 -373526194405638609767148168864410403045174.5226349368168796152908329674518978 1.5099090036690468218643058308904393 0.0644015603784492624593685131909200 1.0665689120572247320286368620329113 GT 1 -46852.0069480335255331224544487909368061 0.9338965420509258867599314869851771 0.0522745211143457683698168070393427 1.0536903978978198263388502461509345 GT 1 -2898590157341974194723704.7459249114487935101338734143135667 2.2683149866703062162337566745286796 0.0290755366397981114344934119634226 1.0295066063427660829785720512668021 GT 1 -630996059282848245463536257591.1546859232860157577494519667070275 1.4852731837675573175588980592277288 0.0895954946169082431749275510943180 1.0938662668271798869114809286631149 GT 1 -8386835609584266292.2426712958152797726130856092138441 0.4013551274154689634074882075817056 0.0850750749519407865396229599651705 1.0889132662006336935086983635524371 GT 1 -22770349092032360866497.8632572438458738810325514729456218 1.2860522909309675327389996272627714 0.0533385881449355734544317474157719 1.0548137873677273947941840150314371 GT 1 -1558975983.8683355713738232381509681879384484 0.6382545001290881885338817199525519 0.0908858821113707667939851488060120 1.0952846504527093736050374665259532 GT 1 -4742183467082350986355742712394957345.8749193612334317345771758752935503 0.5119961364550032132523490504233010 0.0892371846102807399741428652896196 1.0934727719438005881898698190212082 GT 1 -24116402294616418132290703039489021800.6587114933899741539166483611305132 1.0580110016833349924581858232832470 0.0740409573662654929824272409521968 1.0769252757312847742557727161541178 GT 1 -147121691458989752.9490753671475810143533527098887677 1.0064828907591106945958156329547750 0.0245607744215394634794090007498723 1.0248674216506629613882657615722512 GT 1 -19637969043.8379525409735508510772972513851118 0.1863222699361698380467096829193620 0.0083843260837666893624367304202793 1.0084196722535761701644264977470372 GT 1 -18132450688082048236502.2269586054927329900764807902627482 0.0831951935545676543201980139566352 0.0637303172654477769345076727954785 1.0658517214242345729070176554216091 GT 1 -2913106433807740843970778779170984.1449185397845772749348165880253427 0.1479567757165030499093741284749534 0.0204353882972495928082898048284939 1.0206470798090555455529773005193094 GT 1 -4338027078158680.8272967177210352878168020152533108 1.0598822595044509843668043286680997 0.0658295329446219621794722982390585 1.0680963444994918062339437068601443 GT 1 -15125607.3046780079075744593791176664741351 1.7929043673861097893023991861705423 0.0166114921599974692671316695015438 1.0167510102226705799046539317627387 GT 1 -423429755394666888818631534416.8776702781733126145975166432216032 0.2854561125212574379411516942794897 0.0965839264737348728839963027882217 1.1015720636614842100974872884786834 GT 1 -209935358502532481491028843011843101677.6157405351291422297540746051927594 0.0348531476536787906039713974692222 0.0677083795697134759034764246765972 1.0701096157813573199188951555076197 GT 1 -185552947414974.0499781453031697373591033245627388 0.7980573036470664428794095789673061 0.0089754869618827131107798775272649 1.0090160092990217063075418920338051 GT 1 -6217538.0071335194735962183579629288056893 0.3337822049539319261859662264422133 0.0000638355552486446777577428884831 1.0000638375928244152775573010696867 GT 1 -8386517422048894709527061781128315769649.8411220094330153429663315605884101 0.7902028903517981180797177856977752 0.0633469266854012595184321377651290 1.0654423179032796449066941904142569 GT 1 -355220917562328370518379.9780905061271899320102640044951749 0.9154785831175135124407468994960716 0.0701368931287686236995562787489420 1.0727179005820186314614246188960729 GT 1 -6400251239211052845260226084.5326155818274393533386297380114595 0.6436737826591682951886363124939917 0.0538901510370535742470368787071229 1.0553965972604472945637851755526826 GT 1 -96.2694438044998715572384712285131846 2.7841964937368877092275036821207945 0.0174269333534784657621223847744532 1.0175805699158272893905534166333424 GT 1 -1439335342477077981367.3659924949109949008403857217376822 1.2965596814639731798752861075367647 0.0949339245225588388757999536900140 1.0997473263701433613928136177969453 GT 1 -18.3582242428841188225685471732212099 0.4433714004341543807824907704627584 0.0286879876469288612393422148270006 1.0291075313559055115188426701960225 GT 1 -103185960816979641533956.1038874343907897536188865576878899 0.1360839830717427439633975025615761 0.0244668810796118010799903124425881 1.0247711687824304580803502763035263 GT 1 -409377187149040577698631435023854807740131.7211734141454750387652186758858054 0.6399056453467404100280376209231534 0.0228277402440855695695950750400821 1.0230923274800813397287509479013550 GT 1 -25020897203881532138.7939648681819140145177799169723023 0.5159003094465185847985799826723525 0.0141113713242601574986960631185672 1.0142118834206553676559630278195254 GT 1 -14580262663443904111629.6713281699682976597240901031646082 2.6901022677579828694848178464722290 0.0530189703492634006734900220444682 1.0544762180444995787138210250720744 GT 1 -4720668269081912776387886412901702711880866.8465251274277460481018294156241944 0.0125535896927215550888207764701033 0.0749631547178946513856282768177544 1.0779217095256030894261034234892824 GT 1 -248897446544609649310.8862929844738277588498833107455678 0.1006948458026432806721242816547960 0.0096950670024791820831832283146132 1.0097423701509979269758668878126094 GT 1 -3839052391.8185117010129314201267236144901035 0.6107961043532619772805430953909237 0.0976969900104551468994071285473987 1.1028048840795160890471821339713328 GT 1 -37808146056351671306445668552509.6719783449272720416199644165584028 0.4156323766317892713474043310965887 0.0381286355200174269760974787428127 1.0388745540140879949546413843560028 GT 1 -46616592245172657347985558925675345077062.1051659701140674883288366165871983 0.3237573229420629874114928545141042 0.0301011042572806296124367845924234 1.0305634441102296549675597609331539 GT 1 -110087904590934622839769577992747873640.9480246130877031958094302933417097 2.0343375316610699292466632233361384 0.0301807148912547766801176517343308 1.0306455288530595661480963508531896 GT 1 -38950701744640999413063222000486505778004.3379464706540287180951995232998673 1.0061214069033573784151983488106326 0.0568670894967311541248094862737560 1.0585480619503148349780160493833707 GT 1 -95803125138943234103906035023253460.5412703145962455748111779539680646 0.0579056376830733746682841095175390 0.0026016206034603254922690252939965 1.0026050106994480751932001580101604 GT 1 -271104072340250049.5252686004385857535679639687013110 0.0243926458538003463380724370258899 0.0648949870645397647447234416719958 1.0670964427001590453534955856819904 GT 1 -1424524729.2808220892626052774684495168990527 0.7245467526287356942057223235646395 0.0955796507602976473245517643346360 1.1004610385664092430169971549224420 GT 1 -198219503970430600098.9777815282134726029589863623359190 1.0885141123557746595938672764950028 0.0615103999715915592915395372185085 1.0634835044997563216345191262040246 GT 1 -1710701029320867930940968832495827781319.2096338716661814266125848265444883 0.1765822647185541973309139998068079 0.0776792791296267689926384784906676 1.0808622624739412481632051779015494 GT 1 -1950828773616926.9271674607865359999719833007312666 0.9853744419905403099083420757477648 0.0164457690825125284364011010793150 1.0165825019335255992220793502001872 GT 1 -4181789.2017544738052725967426037818916403 4.1245842253442593377960225403602396 0.0997819698413214654081795336265869 1.1051182892651427792439375308365457 LT 1 -1583185939061590814.2917911407907044306193810056667083 1.7260932883894658709043862138194401 0.0671668293259290596302328654140201 1.0695289036900419515950557585591503 GT 1 -15096536782162629295843429235692215.5677317609135502935584708977139984 0.1289949399849816401165852202497112 0.0083901380600515524647642916726035 1.0084255333885603671504621903711708 GT 1 -736441609074154519.0336434454854926528835886622172562 0.4449107237480625970060749900968840 0.0152949722221834114428365172007117 1.0154131468433588587788950434444106 GT 1 -6629378550449545260744159346118026602845123.3329669646057737744413335070503529 2.5270273329731001994343368704152840 0.0243552231013166358167079699627256 1.0246567169134785711907552104105475 GT 1 -28641438851164150483.7154697412277988285120976760917906 0.0826286280897781229120111277835767 0.0305764137242266717375383925639528 1.0310536250686523145600735831526262 GT 1 -547588736497883.4888022422272189501301058299437598 2.3537449072228202152629000532860489 0.0898881670412433975209377474823205 1.0986234638980799832723474671527874 GT 2 -40816914.8914641278793541167629518751175967 0.1362041753433500635604912854990672 0.0307081908087097239588573105928093 1.0311895677500733248092492747858602 GT 1 -1216696735878627.2664565083534911800269939010024460 1.5189197152857686300254940005383609 0.0523937988592815510381755617359242 1.0538162626700391023739079919175526 GT 1 -133930114693974391.0914205049061683476897526757978786 0.1011210502982064037993891879403286 0.0503581552255134449173800807828264 1.0516703709725314320908244513196472 GT 1 -16585360507973.8430179803447727056036813752777864 0.0102074718510173860523984810435439 0.0777594702456766037884514555881315 1.0809492111898737740616027638401539 GT 1 -40462664094046444446074047483813105273402.2304179538833150000507322401743864 0.3235227745780992652950446850516545 0.0824778540251162839885597752354901 1.0860785620423861335402852233371056 GT 1 -11493804080905422262553138112574945171109734.2110854972551028984153254137088287 2.1778440055387507514650715276540712 0.0891673947342362980883683889672657 1.0933961469421265329659102690386099 GT 1 -86075661810018638086.6917556917687751181028830151252393 1.8476388071819213437257473285631396 0.0475609701189135852830747750947328 1.0487291846535797370458333858622066 GT 1 -494530698967.8513235771061297834761927145930463 1.0568444159700066247800297561395337 0.0943202028232208082837556137638520 1.0990694601580956298716210275805086 GT 1 -22092740196532841802354615357281449824.0686215921291630790364645108124043 1.0077013837205162331049194906553058 0.0135692229056073879271094409806716 1.0136621261848635587361075879678519 GT 1 -1981429025145803452874204793317530129026401.6997778653055963530470486040510211 1.7973710739096896346826754526991858 0.0220797836673778725381303210854580 1.0223271906670196327112931318129470 GT 1 -208440737884481244109311754503.7958356569099811414213187342857382 0.2661297800384110154578482345259368 0.0747580865787454350729477094887836 1.0777000476392259518399778390422195 GT 1 -4419.5772929618245436004335979341028163 0.2962074793484925434944467961752385 0.0724957895173203643770181208045079 1.0752579449068835563992594767221349 GT 1 -1332044238771205111493123370783817548.7932955370879900289345421097579193 0.1233848899215185547804221211012342 0.0950061285027854909482009788413689 1.0998271071314221601668541899754271 GT 1 -1521.0913413883253180941905741196201962 0.4056537090126088208727165644604566 0.0226764654702858721060426080850418 1.0229375307549678334260299277726715 GT 1 -4539359572484279661993815412283204012071.4397702227213202412688034459129237 1.3001879826683872771000683610747583 0.0915504536139909560829148462326470 1.0960159277612280722210071476587574 GT 1 -125.0514712046530484730564714129432064 0.1762282228899681858958641507955469 0.0336067836797622131721782238473273 1.0341844713624013969508121204964064 GT 1 -911240665287709.8656291305171382423061661518958529 1.3508031343965790881831242298568525 0.0160703875278367300220381748778990 1.0162009165289065305833314790269214 GT 1 -220355604.5071016106266072597941450241382103 0.1215161501332625583459398874128428 0.0265880736102033623151742234433245 1.0269479293568386239835438402606935 GT 1 -108627929973572092373991292.4663202134747435234904279919526561 0.5881125300656566266663371483629711 0.0026577406220204930025081143332017 1.0026612786848533877487704629624874 GT 1 -181532065364550020795173302925042529957.7631257944550905341177513974207844 1.9995128172721820520206232277966699 0.0924711913835191512663537670904594 1.0970299683150592506812234633097393 GT 1 -5048521331683950627.4703647713395077334409148115067449 0.1546371280029631288296270301780990 0.0970840624142018852794955803489088 1.1021258222730471019672804858729195 GT 1 -98402.5388765543111205440051161814030074 0.6198105588929563271623639977788584 0.0418702907633668576327033894045361 1.0427721143135952286189888392798791 GT 1 -341546.7078743742826902381523141688117236 0.7231749653542997621356461178686590 0.0621806789937080610215964558686128 1.0641979700582950326681552251064251 GT 1 -38598.5887011208411774387480516138140888 2.2466473449104948779623148226836961 0.0220947629363945038714951364460056 1.0223425082598967610846977432811933 GT 1 -1287057409688090879154070898928.5775337813138021875728354080649177 0.6013393279382201504689207748095707 0.0339836375447940740891035481250462 1.0345745065536450211238818479164739 GT 1 -242084716749228691.7107796911975205581020362951362319 0.8950280891687421458972544359473057 0.0148045798115679153883658875849103 1.0149152613575699062359672760975706 GT 1 -1420692946066997114765.3233925885405498832140162035115148 0.0078467301498261711535784014690619 0.0387503387233674065511312145314844 1.0395211105403609143682299958946772 GT 1 -692866064527431119736144219541.6798565809047767063569923824091997 0.0891057015309237074288737794416904 0.0004650243663777312864296321081310 1.0004651325237402328014042746317879 GT 1 -1876474225449208801199552658002177.4702695011302024623385421835552061 1.0499849800448709321590043682535760 0.0536356104302991767227950295272376 1.0551275942768328980203910216513318 GT 1 -346524571879234275277116177.2904601026779099831768871427967846 0.5244889779694032114957494511487593 0.0359495988044440653098972377271060 1.0366117023404410464133264079361200 GT 1 -12567813694854509204541093629065369624924837.0877222597482891859831991586928264 0.5989223620873209339311652093948672 0.0240418736422881078040205012765708 1.0243355968114349143815473117459753 GT 1 -6793782.5356043966724233889241682520766431 0.0757644938689513221919349452756430 0.0015013032461145996285432469160568 1.0015024313310394053781309770928890 GT 1 -6833166914401.5822822615159711249243092543414960 0.2790112852833528283376841142843365 0.0871215921313803669576108833819533 1.0911525859324466366264875585409740 GT 1 -67566550814387673386587776.0980140789957442622887087063276461 0.3401589653753488737777250029534729 0.0541056602517609743836898700382281 1.0556244077662858018367755388997022 GT 1 -2.8508677121106425778750863680719409 1.7476234927970823156767314047077559 0.0950734496206520552535879991923494 1.0999014983776713305848440588250566 GT 1 -1976785138037962968570971.3797756356300204015841626800468971 0.6624798796773164212330027597428638 0.0284117369829329587361265895454436 1.0288231619836227469606733041209773 GT 1 -200517047872674.9304088724825792078956075141461730 0.3245123139602173741008901357853140 0.0187469259620335931871851671599643 1.0189248771128806188490837631312497 GT 1 -2974140524617442.2839626780862111769412159197080502 2.9267103218930769168548308922383197 0.0785335727068246942233011641155155 1.0817889352074856110801180401865509 LT 1 -1308222492429181657684964.7260312563706200672350165936584966 1.3788189108314622043543422260035063 0.0801811639678160117340555714513888 1.0835785456861410483093855172861155 GT 1 -3724518811.6815443550759022080822404725726091 2.9690511532597108634000198362727354 0.0519663134644131696549815547569876 1.0547891676204683190823607824084608 LT 2 -23730956038201538680636975218806538036637795.3985723990615773733623359460216599 2.3133536655111985060356926823801767 0.0466042858934269188247372393742904 1.0477252315995597552454814831964467 GT 1 -4701866636026447282893902054833797196.1408941817745627932482186634189231 0.6009770697494395611173254008693322 0.0630291441448822347012599553206272 1.0651031009039460920929594145996985 GT 1 -327507504607333480874686483590772.8915812222808692621937865217594134 0.5913025146182043364862920579364570 0.0000076433616983294895398964511166 1.0000076433909089673603602897890374 GT 1 -699954297684.0985120112982222887390579096315474 2.2628611017176227501738801526854978 0.0663530605112890200297299635723717 1.0686569213294780198354045944384369 GT 1 -350600117019651.7588162832966432156332903492837224 0.2153507173249162100373903215129211 0.0882226921065312821737411947567017 1.0923594986659534382792503326746320 GT 1 -9046912258030377573952540757858276022126840.1360478371411416221779887029003938 0.0069040931567925651484261231750876 0.0311577163233016182181662568247572 1.0316534422820851184709418395883259 GT 1 -2104982077919142.6120258483266429063043289581250030 1.1367546222326141489559416719192908 0.0712464305302985073015302449420865 1.0739118396523568479334200730295501 GT 1 -16108113178.9220487647716076953038955079244553 3.3485137149402533513488985498611353 0.0495867786543799444739502945273321 1.0508584191220125312939626403745203 LT 1 -1468051974836342044754247622142857886.1577739228623160143094914292398883 0.6999895042529072486113854189563994 0.0622569212455894921988102624472514 1.0642792707411549089527914284401232 GT 1 -186078009.4778851917282475658219316583086701 2.1936199746344963928945775919623194 0.0522247766117715142510960977767219 1.0536379109717785966392482036793646 GT 1 -19918324727461.5604439992915455230957852248812687 0.3096488226684395923057987926433496 0.0536687681398673651728704110881372 1.0551626318277165753813700496768242 GT 1 -145629066273395601865863.4098255576099458262352744966720430 0.1843194560742813914014777496411847 0.0746783898638587056916958490346342 1.0776139152650367135504982408381378 GT 1 -6987249.3828470592463581981529007768632120 0.1359547358460249873155384409999694 0.0328057669742557856023047866488763 1.0333559422450867832054428397504567 GT 1 -1046282301719323918763205981.5456601889648161406888707364122531 1.9526069811998199868859785541712774 0.0640005879448663917837250078333480 1.0661404306509670664274814867476659 GT 1 -1234352735638.8049792688518248404017648739235098 0.9985117660549181107277095048950261 0.0518403447314977210498985863951025 1.0532323781764594863173379291352704 GT 1 -816207632201689502464462200.3702901998438651134053083972694377 4.1951064698045205104768001340377665 0.0596582003041450543320029711017346 1.0615118531128997944681746386717140 LT 1 -18205822.3443665345396772952673946465696434 0.3976983714262601150964723229487841 0.0464437461300434470057193229316120 1.0475568584402367234778507170248660 GT 1 -5410779112562506331886242.6160159461463426096847502943529301 0.0669543699200644776811240220829129 0.0676827634699290943216449051011382 1.0700821396705468715503448774031193 GT 1 -137798278841627856654873315153420036723.8206631354837699217857916986459313 0.0942312398870521239696490066775503 0.0480375172943406307340365790447239 1.0492296538899504448210554723745448 GT 1 -86224499642753113912574668845311442820319.0963804066886135955634646302919316 1.1173044333134131912887994160300274 0.0853587301217145517670799429362763 1.0892233453580133477694724703983590 GT 1 -174592054577825587048099415486.2146157694884709590877357723792823 2.2732185527609226846435790597643038 0.0457424244801355472020634614618864 1.0468216486721820989147250184404615 GT 1 -3094215623.4968512214114409063045643968871281 0.6692640566667902380870362250524409 0.0992621301557637357528621190139485 1.1045409961731864248000539898993731 GT 1 -1914498310005269.0185354915998487793090123627623219 0.5825053088493694209051980005475545 0.0273424905753386523273589297998715 1.0277232531855192366536481580170380 GT 1 -6942.2624426051191204015791725498996507 0.2910349156680333870400521208675201 0.0802887405732100457848067417625858 1.0836955066489241325076414826775729 GT 1 -3973552889241232547026967878004.4758148613191477671339026667700264 0.7248486329821399663301589730917483 0.0231893056148450582745226947430914 1.0234624078578245283760081260519390 GT 1 -17649734757113785003527902281531184733189.7912945794878994206063029587961700 0.3143403342910948662118289983696340 0.0173984125967865436646664775529967 1.0175515437357519964702339757700414 GT 1 -12836898520.9450467435581685479025529043758459 1.9584807376759053864667007523620547 0.0544966607195989192811010035104883 1.0560378591284642916501744527483704 GT 1 -1430995988395187105767013999762491.3025627963788382043004058717186987 0.5701066022441315113050699175089746 0.0692996347996110569624300002281628 1.0718178953973087329903736836700559 GT 1 -3.6573942216271097015462587344556948 1.7481910533627960665009576060950895 0.0848808229680435249652441620186374 1.0887009740658091600583362510625897 GT 1 -433577252080084587484709976761776985.7547244178877582133681472863220896 0.2983680656651521395139735759440351 0.0321953094452263296777772199264235 1.0327249780188611669937006041192392 GT 1 -12042451959606040.6401114549249952816220049108494758 0.3363029897729097039944622095410782 0.0469681139467689999255071765451299 1.0481069172798641908423676470187515 GT 1 -103989985283646090334284721643.5466096489615748265216761905319810 1.8342153728521474946537024834584212 0.0916565540639804761790290784376426 1.0961327274743032905687765020294145 GT 1 -20040056.8443006266628002030645153843129468 0.3732561501743556123504917303497798 0.0333359160489536060356222844464778 1.0339042234540301372744359278780768 GT 1 -4303152044796157312221888109346734063.4867242113026298223607655487561940 0.5891030501444632658942222919011948 0.0558802088332199890322352613648719 1.0575022234649967456042991263544811 GT 1 -70500766323978300839087651600109047257400.4395265699762828066612248876987700 1.0389156111306699126570488309987055 0.0871832503907679330892467105666443 1.0912201308992593737709183679499110 GT 1 -1735574165104534723278257935741837305618.4079501699456601015590772531215644 1.9287589924608550051364985539516770 0.0374291759227951043684110833599185 1.0381476320704912687242779057412354 GT 1 -214266394707567893037480447.4655730686243359852460297601983333 0.2564310094202157085876647617809010 0.0308781566411864396936728142878384 1.0313649336557856560060797985654381 GT 1 -6747327320876094728587638.7726769118689237985450631032400396 0.2527796457151319608018101466224235 0.0510560936787343459545894574249176 1.0524055903159370849431644536216462 GT 1 -36705364.9751480880101652108484454032040179 0.9387341851292578543805988718313754 0.0923181400959384974238231617395470 1.0968613363313478660079635246956810 GT 1 -11266588.6861287184611325040219828857842469 0.9024071087789414196440543477319517 0.0796602475223554850005049195955904 1.0830123809407458987092682493056098 GT 1 -1137661691832579727824277.5621360547093215339737561699762862 0.7879108656780635242812870353376321 0.0445314388000286035068938265575795 1.0455534188258858248678963579941906 GT 1 -145574302604762847.0653055813774574307553356715883260 4.5954788592081480230973819530959314 0.0197045296370751750108237568528156 1.0199012523892910048671919669476414 LT 1 -11231191291195986965413400591659806.2276392754765646142691200233930797 0.0104096438812531507017638350747521 0.0805337798898019335657380276591921 1.0839619728500038442521358119439015 GT 1 -5276270233550102730677197905354043171.1102294069544354584816989467080748 0.0094468604469507583317619078642159 0.0551441796764231674061718634839455 1.0567229342147085285708768489450381 GT 1 -72.4691142285926345222052051601587647 1.4985203361520342170572959558076221 0.0942353375655769477428598747750828 1.0989757611685895811264906021974568 GT 1 -33238979651533064314072.3619473084878835475096690633354326 1.7276007720908135967114427134192199 0.0761208102708960651053964284680650 1.0791739629350173840549780427132045 GT 1 -11356448167861873956307988774375466182.4667818345963724486784856871411485 0.8871256722298146328001991179363127 0.0906784550305851693795956353286954 1.0950565125142362081824948359081374 GT 1 -18709430299015129554850029634145800655456375.0904913006620188658302562013351199 0.7854621718551935361454286502944287 0.0781410820891488392704667836423870 1.0813630845841775631767109661905616 GT 1 -100.8045951275852049173569732527075869 0.0359817506547634149789532888925996 0.0826145272888816564373373934927016 1.0862275322277254929703184280212268 GT 1 -4555238806886771.2880886345678321525886036522032613 2.7272195665099698744504612906469932 0.0957202201204815334503641230511915 1.1006164754552597560425216395815951 LT 1 -18783659301547.3207755893048942949011640312932063 2.0547870474677199926750171789783705 0.0813740050008436025690715107427256 1.0848762089940433321570974797560849 GT 1 -251471267.1498854029368614031690000683376348 0.0613612288186023492573462347891138 0.0316136945540780864820022327028690 1.0321241954412708449707934265429536 GT 1 -6646.5497134676431403081442033239120847 0.4621707108209595462850280490904276 0.0197293599208360780166959525629617 1.0199265820975114857330202638895348 GT 1 -32226518299588305598760395.7810916881561148854572521675402762 3.0976928164470397516876017949920134 0.0177293152438909144570213924275356 1.0178883622200080122087970145817971 GT 1 -453974313536337463.4739607217558246362342087649176088 0.6928624867134629102025080367868849 0.0755188625086680360147036277343901 1.0785226312929736034488047902675757 GT 1 -27556172266096882813562347434900639.6727935912656950183196128055982070 0.3278447472008193417432210151406907 0.0339867849224642805094014285837406 1.0345777646587038768976575460218180 GT 1 -2443373254946330007017638.5825259735603415054424901517024571 0.8061884648275790428489047568551727 0.0792064079071534914565399043049144 1.0825193806637887908110984201552429 GT 1 -173835961549299780151016.5467159790697772657144553889273577 2.5508206701467105242115365557909111 0.0786561843008045227577723328173616 1.0852776129281292684897270273384130 LT 2 -935860499640030741088395.7792357040569813959955175770115744 1.4057305095184821435634838076482047 0.0234854231341877723723361479317100 1.0237656011108575817163969136991200 GT 1 -1476814638629153851223330133.3274545358404251434448183252757500 0.5937989087630984712758504290667431 0.0952434159540668023717176572808378 1.1000893393656114497547343423833150 GT 1 -910961500826986302954322563374393862937.2572247256829279704147513714307725 3.1628244295920464826883312903961995 0.0013146303175038581486841394141691 1.0013154952020250827941573849033021 GT 1 -58.9632447696985136354108852890553948 0.5571668609645462336890364276113034 0.0621951275157343723603386096797795 1.0642133766862077471813186765281968 GT 1 -33879366138155358262420724062762488759.1050646785642119439266019157740360 1.0862488809707657192258403284889275 0.0222605406405728383692030729087793 1.0225120459114738896667298857144810 GT 1 -3257079.7986663357825176580301719725907914 0.3847126085728295575047220939811446 0.0509311845532818569571143217840854 1.0522739693587113977798115552216402 GT 1 -76068354847744174999932773984596051.2356475655165882612818227214265959 0.0804428703153445766102843218256906 0.0554452232361432434081162890987879 1.0570415982073119789415111488302060 GT 1 -1779966195657012177.7012922058759899198463278216653399 0.3107939835443727337978798840118062 0.0908555472337407499507811134171699 1.0952512834958613104831675648012117 GT 1 -5734339162800382914590240658585323018702.6420127351190217382168992344296598 0.1565042434177462890824616590526397 0.0287900469950485523556164535714317 1.0292126105776941715214702689759862 GT 1 -16838688324553653583833028863971.8799611026578661799943224810693121 1.3804454556925893223319095394815664 0.0302341049285938144610197384031345 1.0307005819003792652517993869577200 GT 1 -2019938.6253768625892910950946247604062125 0.0284855456330297369627522638747988 0.0763164131491425926321008082023465 1.0793857044589935514987805038727522 GT 1 -9771036850346.3742726393061541665425812208975523 0.6621550782855582698278425171149667 0.0743130312765020934839096859987715 1.0772191482215187177255428569550181 GT 1 -60038976472677086147994689133281337026124.5020889507044643073463179909214934 1.5542643441663897488101353336591154 0.0818081617798080229679101170212892 1.0853489360976218089117458935065954 GT 1 -3476484900.0828240242665729582797900451462772 0.5465436310257935394379930512352180 0.0409062399656899330779397958573564 1.0417664403330911819577695523855392 GT 1 -221092011739565474025209174754547191755.5436167180928584837282962065663836 2.6049504271870754450560498755066085 0.0078202291391549876724240771323853 1.0078509674898865016810382924287327 GT 1 -764300.1974827542668922000055035334834351 5.0697871653113559228247376289820589 0.0035541505522907844952962528870265 1.0035604815506973380627855398716336 GT 1 -608518733051423.6516765434175564726072200556267684 0.3251568961205120679576007288133029 0.0756186772457765964896843585012479 1.0786306055088514868208266188083695 GT 1 -5920995345278050873435.9684959219244472680009432452603575 1.5661087233855179837116734556654044 0.0301140469290510861286511344886805 1.0305767885507520809939332814497649 GT 1 -2731048103489016803292883600591067364.2281079447198824747080889514500134 0.9671921504277145855375445513354964 0.0999955320629558278289354768137941 1.1053555512956552428667560724487389 GT 1 -1517412047543276.9497848473141829682740120039881937 0.7207212230462440608390528497706694 0.0627155021284568389420260080071518 1.0647684164985053388972575803608898 GT 1 -1728.4935718860078533314342391596838517 2.3093657586282821439027647760111141 0.0860863745916796906313826198415397 1.0900192137350018126073070079866482 GT 1 -460457339661672971314319013473599491.8396075048539904817451394615119229 1.2519824380472387053216140864518939 0.0061999447507082508764006726392801 1.0062192442199440046210216797737250 GT 1 -4957028767094020244173707.8404143066877336547220989026960829 0.1019222073301004515423445523983429 0.0792133191320272513058756006800215 1.0825268864184661915457856215608243 GT 1 -8291887028467579618728120438628.5370459045594938667041261541246951 1.5616015827008974569338875046653864 0.0031244343105690760187709576615627 1.0031293255463366427290884418185481 GT 1 -11333163492553799603892077062440559707955242.8625484973722675553315148398079171 1.1934269717422468780723897955011197 0.0632187728503900700355954108120240 1.0653055062358736115454268642851079 GT 1 -195460911205541272128130490.7469533739797929284908328363910534 1.5769580043276318818419375996265211 0.0661219983605830832546221643326676 1.0684094685144752837088047653971695 GT 1 -939111285577975327692306543625.9014864927767336056271895548550141 1.2767806589373865928613148939259973 0.0913481526282198084797522232303718 1.0957932643619241844591792093954503 GT 1 -8526464168520631129939653188157.5613281644005740938150084169402787 0.3405794579098871994842988839947169 0.0564368500662598558218166894368368 1.0580919848460574024222777437882434 GT 1 -1205783393075989967419072283746020472322270.3890450854969702225899677909223015 0.4328695492459285891197723014650506 0.0806902599963329575276849536176799 1.0841321731466175533409707481361217 GT 1 -9128297804337401820483660522547219935.7514669756390961204220856006189969 0.4279430913185103871717843260414561 0.0970680039919875569398400286843417 1.1021080373622403610952818250108836 GT 1 -237090492.4746907459704828652173478497572402 0.3569254989195633171603464655886651 0.0589574599362030000442844971897983 1.0607669331244243779038882334603247 GT 1 -41943106419156985.3597797985665670779712840027089561 3.0118145308487664809742653122893927 0.0262125571349889312940282274554963 1.0265622303002356924658701628885393 GT 1 -11193230332061672995333345299841946377.0964495636438693600778029649804877 0.1004061844053653328163357599504211 0.0662262385606116310161076300973805 1.0685210955342414847109870952955304 GT 1 -16302755556412046027418590047.8326418088400762975962116989893873 1.6769822328097482632267151998497863 0.0828229747758529964956779056971037 1.0864547771300964545003526938956427 GT 1 -723560698263547781415984121036360263.3207096079392524337609379789131428 0.9151947432878339968090464488183069 0.0367974077576609993451217222761696 1.0374915131497038200519350938795046 GT 1 -255329780815498601856695512640778.4824238600340542526321695349953318 1.2179939630746310662733553558804862 0.0789986407264091990016348635812429 1.0822937668608283086833686580613775 GT 1 -3803122802598987205659465153875119212177.8567269945613648337694621996407461 2.2259433521176476446330460667474527 0.0468947893103299653999224252318194 1.0480299819570057299782349237667631 GT 1 -3878793930607.5939034550439632320693013954403044 4.8137147933872059651620456158535605 0.0738295516912908544695947217295301 1.0766969918268098687994879457729611 LT 1 -4642860291.0828867487629591799932276517664496 0.3038512886648369409759460586293690 0.0728101407957336376735138271471148 1.0755969240264711069637363282628618 GT 1 -47543068750877700384707323718644070.8446529696410980417999611649093113 0.3063173785750156245003525754431851 0.0908981539787661537259329814620779 1.0952981492533349979084638953100688 GT 1 -1476288951318197194338505377.8644565910170001059525467227838985 0.2718152940328070687576916363889360 0.0454875905767330148117291993080463 1.0465546349335684491980665642073131 GT 1 -5099465786655060336965185584145914871416670.1234482312361615328714040297052067 4.4427816907392418263396920640057891 0.0878821402565329506352602041393012 1.0919860650827095871056304993121302 LT 1 -3671105993022147514.4525958600700836300579645208209694 0.0430163832178785093358215802623110 0.0294979174610043656740866125371206 1.0299417305340600101972945281380047 GT 1 -82724565384149037883035566447618440957242.8625694408425952557219455020757021 0.3188369397777748799278825944065750 0.0667158118244528036946492400369532 1.0690455283995017699101108422089958 GT 1 -36500565785807543531182523.0457490924043339401649549055695649 0.5660167229898412555824765453132640 0.0413095341231393276115789423748070 1.0421870237938845252163914629728040 GT 1 -461356079193016976348015636483715631126.9624339556126941511341191022177253 2.8317127945880701677870483771579770 0.0257916590318511067472677103135668 1.0261300957821008650677209058814806 GT 1 -106608.9522932402374430162912124165362939 1.7897293086381431976766320821510384 0.0614440785643519723307362632284885 1.0634128387577604040810626532698816 GT 1 -471387386810003594159.0460177981858228502197551940495413 0.4011241608140334755143939266198098 0.0942462540383796273587320195259700 1.0989878134588144179061050814267913 GT 1 -27230724.0533569545884912797046540233054296 0.0423151319752809253626150539798421 0.0742693982498161695956070530174024 1.0771720134990337856140269115573046 GT 1 -2.3087471672163254342495989124817906 0.6428260703022511568326082763551359 0.0096724291130680032941012217987340 1.0097195108983422558990118595260750 GT 1 -128062997298376176419771386439759.0499678003647896164376138370518915 0.1081395873649744823123416420734031 0.0861229726085055720260456572229897 1.0900592599150987634933092044186712 GT 1 -68.7778193875955303333502663638508283 0.2987195743922433814814777225574089 0.0346439318940715431319834747680584 1.0352582632072603685883826155519312 GT 1 -16167740846113044990082110332640414921746585.2843826828032843540943477961793591 1.5130079927973062683737614073554687 0.0541182955101213546020569458438396 1.0556377658573759728722772778176227 GT 1 -296042382592651741472131.1061401192235269541040904950874713 0.0743939198194648013499080734272821 0.0541043501232624144858636960903349 1.0556230226986982311639402984865694 GT 1 -2065388731972065965685239020084.1416982283376596325221838113554762 0.7319644964623954284884679113906228 0.0740646033590019215766558113472400 1.0769508128161598433215810718385902 GT 1 -1173070520.5529587746579402968003267307483469 2.0016010074140653505281004649700705 0.0156159139106472423897568485357539 1.0157391266977449678771669645204896 GT 1 -3751639635716454.3803585147044393484443728696564010 1.2502891913303847992422825929320569 0.0866091934069858740254547339633996 1.0905914433212890264467274528920129 GT 1 -232543354440074067.6907215945546127024769043939704444 0.7767395725395043947460324903595352 0.0567019348783104203135939835725284 1.0583729645086626405663672178448392 GT 1 -2923403506860853.4153537477561397333255082875002491 2.1238518958611253532926850274754876 0.0190736852993438823630260092898481 1.0192579346734749028700205790038543 GT 1 -11228565844993160.3698675662697223894739898635437918 2.0547095520810857825910337570285536 0.0467375687434914889443060556161858 1.0478650394100010835556807448691364 GT 1 -117451825066091183527564.9783417380164324040921720773271353 0.5305958805476553265153523304763028 0.0061332123797076824854374518799627 1.0061520977851528502560436224794433 GT 1 -293050004130737989392068991.1475166491721934755884220278419692 0.4687243998648862084546503905391182 0.0347481066119712524253786983048711 1.0353661822877558226694058113114974 GT 1 -13029884930372219933944993396941651195.0612853192673741838753656963556826 1.6826558392418316657086966507768501 0.0392431476971548614977592980355941 1.0400339173192195304157304266418778 GT 1 -4104265091383498688966389710012721.7615990162760376244741814749098699 1.3201959805215009430688145392500846 0.0924461827862230634495348374561612 1.0970024118865619739972613992366480 GT 1 -23503263861783519335420770656.7663312086493578519639116789122223 0.6805674096785482391875951855039440 0.0918833797426024487150432005082655 1.0963824722212674031788114871453069 GT 1 -112806155429295025092649565.8937277536740320218345367819096379 2.8695148859272902600509601226571526 0.0969215985127941412265353967634965 1.1019459059816932990135137973815909 LT 1 -2773154232968.7018042216817119867954411312928751 4.1851271422660419265090590923785274 0.0837976880128664320327646806247654 1.0875180740802304264629203281665342 LT 1 -4552882338652921.4567196272586350974104249190732706 0.0298579817555377870018261558292902 0.0402129175672412049145738277730446 1.0410438082516449469195144516206109 GT 1 -504743609403141296682512756823850543.2663312551796379878198167404408673 2.1552485177203419032762269065930731 0.0225520856748439424231339430375336 1.0228102731201352306545145057467484 GT 1 -29413860521032529636304235422704.7811059906234914695167325332606336 0.9291276447202141921574125558197030 0.0462703952197547079261201202882258 1.0473750808530125848787630653718291 GT 1 -102052905144624974436.3545493364942719216762611959423398 1.9399796236658687232969224429906000 0.0225264075558202369373444416245541 1.0227840028899124148126781643656168 GT 1 -746382414012977.4618954935407805594601847093130181 4.1129056652239516618208446003696292 0.0641397540261358089952650768519696 1.0662891235093540703550523564856642 LT 1 -597.5957102551468624922818677818445925 0.5597586426534279589977677162744068 0.0805907441421471331644160726764983 1.0840239283800088685740547471292562 GT 1 -4365254590130252309818927521484960962.9653355914405640862986460053368571 1.7919217088491230297320606067409569 0.0677795762132411222344129657157465 1.0701859860507616643749157566147770 GT 1 -26922212420052866840250890375.3288432845985142094319919139548486 0.1397169203259560344868597903261703 0.0309233026179034766880818548784743 1.0314115191585360025665912207286806 GT 1 -51019359605060602761403843401331864768444.3508045528568658089488285200533400 0.1347291878788124439157022232252977 0.0968765516794464244333939261369472 1.1018960258053864802379813301848574 GT 1 -1364590419824902088025740465945539.0731311359927690400544520019977789 1.6841740802112705486606248362772695 0.0607341940522063585895798284831103 1.0626567664047670039822432005696994 GT 1 -1122189296619159399043766288468719095870848.8636207909159265618013203063016679 0.2956239218133482925580785389471435 0.0358557177497782392867828523617061 1.0365143251870384241046589954913552 GT 1 -141506810157804568.7587847977825807768732130065544296 0.1980652443258152087253839382000684 0.0712472546230475962947915813805412 1.0739127269632020410278623851871993 GT 1 -7566383182.0344499543884341750627531896062637 1.7069266820847164008669071090840866 0.0591359134768905395868045462241062 1.0609565849793052669326945338871548 GT 1 -7567726695187061504058066780416949.9989898628732647942787747726221132 1.0432537394210229549098446379092041 0.0783701734312864248124549628453712 1.0816116256658661947559400792951869 GT 1 -108540757499048950023.4556091388189441731522943914120563 1.3122672307565216396166415478803880 0.0748571975344718484584761674285066 1.0778071723414246466300277209271584 GT 1 -2179947378.4895658913951388812540311971163518 0.3495853863152983477620832654175299 0.0410668837741431378273220729405838 1.0419339497781538750939370258470546 GT 1 -4293330033766165003932171.7023734725997057047074829684527110 0.4942599020868562568203935036849260 0.0482874742585832313889692100404608 1.0494922585515338814799343870383343 GT 1 -601563598638.0107269068357119437376905715904535 1.1517692401955817600146373202042633 0.0770299892292153329103059996010432 1.0801585360463666905629554765290224 GT 1 -531.6192537968344032738091483760090548 0.4199154238130599267063801599944232 0.0033900051817712321481936628369176 1.0033957642685770887810333361783272 GT 1 -310699109906260304227.5201703272396632726019688509177250 0.0353097675816508063416695128660365 0.0329870447489905969804650524749478 1.0335433862545644726964999200762366 GT 1 -1461204481903135744414670.7383835741279862842312855300542047 1.3027954324280650996181570279687520 0.0561954865164044631777833202146297 1.0578362174554747497948447167335179 GT 1 -562819290130083732572720907.7250743251198480841907494997707955 0.3805823856461158311797065134305685 0.0825561540436861699229342462376972 1.0861639042437802891852845165635079 GT 1 -12666815824094150.6280549361883893228408968305260325 0.0356150185608365480757065694376644 0.0737848164811317383990922617795237 1.0766486917219081946503443722997526 GT 1 -84771327990535753269299611275646071630.8445239822843904653427644988680231 0.3067336271112915138728269393755391 0.0065255779790898719462394148297643 1.0065469626453759296921900600953627 GT 1 -46055649753.0875700224742003565183563353285672 1.2229838534180018337701645947555566 0.0677419797053388286356208872299549 1.0701456568015534096233684399301231 GT 1 -55786061568042080048512523.7229657395472712284502390175484364 0.7740030848770640171451482125396021 0.0853715909576587263565376474513438 1.0892374065279901825847532943330091 GT 1 -1310834.4500066145312722974833737466236310 1.1599903829114912400088089174655915 0.0720058827092375612294112482342539 1.0747298853423624029440746951269716 GT 1 -1622557287371483759577.7164404084539513818244875245922776 0.4673253721399846757991915417958379 0.0696902330687268430224875544104179 1.0722376655727713398456585193526996 GT 1 -15830780092103435163911313041.8528290465681347365090880390320814 0.5542432151589158819608195575021350 0.0560923545481216408242299621896702 1.0577269508303727635534668370992407 GT 1 -61450996131424100434241266620167040379417.2581246074127456969516424285152040 0.8363095521069503560498039565700226 0.0034591634569929026935200112714439 1.0034651601960315030271068179442041 GT 1 -11214033833501687678.2609784099166263499468081270622839 1.0465280919397865260783410482315253 0.0046957682055220206199209942443463 1.0047068279613241690055521208555153 GT 1 -4793029960472983.3853829803381005046141235032266996 0.0356582277511596014886218601544839 0.0452326829680005742534881528992632 1.0462876152750920427983236875006173 GT 1 -770312464027021347915855983878145983047199.0420480762394973253824763766779291 0.7477613349057207494895161088306431 0.0491949265594771939703443953124169 1.0504462075400748551505187180963906 GT 1 -53.2816198839397222494184126493242997 1.6391423789578959794777654232754155 0.0976524097396504607735848902633128 1.1027554780938836556265076904658045 GT 1 -14397130251420216040861533443.7298275873275914433747767409923533 1.9485860148096452985985038077644661 0.0605173067423785932015186704994826 1.0624258815248770380546215959355734 GT 1 -40864083374724112985.8202675456964572312506067045017163 1.4336300973109255765720889937484337 0.0929313374623964870514599903218682 1.0975371288242686003644993419524417 GT 1 -1095208072249601307426986794.5127802047489335603087353710234260 0.0863449069638181794937269473605163 0.0194637376685060565264186165815465 1.0196556505196714961220508538205875 GT 1 -163019420052039589360230.9566720183422526517317489265278384 0.6987699366865678892428894041846650 0.0294541660766470837573414807680884 1.0298966503647415420001331014327410 GT 1 -1592504217600453383.9410623209689913831182541514801987 0.0693198527159301202906337739619262 0.0302311022638162077262344636515794 1.0306974856272020642376627474852821 GT 1 -16649723396230948250978564674432070075518.6860607358766972990797760400167416 3.8756532347996489826605429587569160 0.0471271451545433300881295820250539 1.0482737999206707035158028028701822 LT 1 -685941996561542417127234008571649663.9076540558828864187168900329505069 0.0183994877456476610751177954372987 0.0890364576969194771045161273528777 1.0932524019487945262279062660552148 GT 1 -378744.4950962009564942010847822294927494 1.0165431664632259176295104352267547 0.0985985484791197559398473323609947 1.1038045584308126308767288911687279 GT 1 -76259735482551041592557945305189309420.7812348297867578522542370047807419 3.2228072129535167011744137558659158 0.0492823400889875183644192279225955 1.0505381480970176894983562400834545 LT 1 -38985025144176262903729671943416305035337.2922996076195713002464079131637799 0.1030131806651234637954998231927025 0.0649406280854170256087266798193506 1.0671452523355644182582004780629547 GT 1 -13896421546480929137807327.4070974285584539173026923718232450 0.5651266278511097002867573240240157 0.0513183489388512347679746983480641 1.0526819939096453322576262632938822 GT 1 -23.0391227022442733732524569711278446 0.5722699546919979387054957728246713 0.0981288600072751877328110479437844 1.1032836294435075844110126720843816 GT 1 -1039309594024484167060841311993809963303172.9564227954448420229423475927634412 2.5840291414851218748529806926709934 0.0319336020281550705084616774767041 1.0324546011118277986213816430290642 GT 1 -1949920928856841.1599328540135491321337812289385096 1.5789510887552163709359209703227955 0.0908667674931430334996996328133549 1.0952636251304678426722754968469568 GT 1 -52024037835.6511727174499754104375013233260254 1.2180269960546295062369491247383522 0.0473687516345665288104002813588831 1.0485273879144313293923726925609563 GT 1 -1101409.8243793071727075108956824713435521 1.3885351654051734967706526950099128 0.0492934544396561690636543939464697 1.0505498386504847124696467986684745 GT 1 -915896085138258276684306715621771.7834158076205542165614014416273426 2.8904753297986619340727656966566659 0.0241687733315874929878780858449378 1.0244656310175150392332605840232254 GT 1 -138685207812961089569.9364762117624560230230406014188729 1.6526953615764120542722778990340722 0.0034869057830548148053305040687821 1.0034929992079473779456021304498589 GT 1 -82230734029160318626961243426218894923.0149052013258567897374268408813738 0.6418628343875841867374020600812517 0.0315321028598109583697378441402781 1.0320399436744559243226302106505123 GT 1 -861032.2202058131299981905207767793953632 1.2824008583638226809423841238574000 0.0726626574032479029826014892257676 1.0754378717433302377963876300236267 GT 1 -70750356916897320043580487247386532214698.8803001090587717479872946360773039 4.1027095104546731462276654920752407 0.0611619253250473770965468499387351 1.0631122590797455946907761726265252 LT 1 -33933386904031342038725165858213013.5305424279267746611209708157131506 1.9651169759397025546060845895382093 0.0117296166486007891117750340069240 1.0117989513146347271987201626854209 GT 1 -2122289171739388429327900680.5334041992040910877470098411079858 1.9112126347632164397908156707296822 0.0574915351082873757275197698264133 1.0592103783828360385113419888094036 GT 1 -68843797406287000.2456353030642848745334236157925507 0.4342677366539224308562610053804020 0.0256683915179620389335895120709990 1.0260035728292732473839120804088282 GT 1 -8001079071220186774768776.7865097147439626223839475635758317 2.1498787974457784261270598090233639 0.0842229933603532919780093107596722 1.0879823864780870624306702042185356 GT 1 -1242661250.8670568219214993674267779582591062 2.7140028166787598022509906981839243 0.0584927161907171262898096728702504 1.0602731945268759599873289771114744 GT 1 -9367532287680387968065396198174226712.1918959194322468542497480215276744 0.8061127933628537809469003798332123 0.0493651268661243747015439741583485 1.0506252300828676203453625331569295 GT 1 -4528777864537421780192745573771100.4000696682148522065012259748513243 0.0553336103838254280622426884397221 0.0990553411853209204444177094180108 1.1043114452194956238188279587791356 GT 1 -2344294011.5542392009052127036441804603230410 1.2333712317928946218952980060285973 0.0129407916268724554762580229001314 1.0130252531278894025267733341545849 GT 1 -1127318036524034306242125490100569081538154.3695819905777030066645683275632449 1.5625601290633229323561121515853967 0.0702314412268548953927650710332990 1.0728195853402580835200571558092794 GT 1 -12974898419914336198334030154071050122067561.0346434128389031875850216601818093 0.2000027762683590398394329911271621 0.0243400835602193293556218927344717 1.0246411995612687446615993256510348 GT 1 -60074717286323864615052728818282851697835.7566018612351779913264314298799425 0.0260683270603528926389740191728708 0.0332759116837211936227955822440472 1.0338421517333975341291565761690270 GT 1 -6706609871022877.4556741042859903240633507487969167 1.2198640430733019519791549311875187 0.0926336678353923375410667203466226 1.0972090160723168048428899634355644 GT 1 -5374986089273948855354619818483158.4468326873981752499106585883713314 1.0358719421402206398289263866324093 0.0542197669181803471176011498657307 1.0557450486716472952254981210104465 GT 1 -682664833281992211028671239.4986894598448357649183476484199625 2.1283937266232068384873703487413148 0.0921048651630750006706237734422706 1.0966263973180619848638205582608300 GT 1 -995823476477392500.5616717498146608548334699974084682 0.3253622566954688719964129219208612 0.0343327699549432407907370169298085 1.0349359864723090962506329329592088 GT 1 -1396646128535882861770455377096046783.6163423373665267374097759383966416 4.7821440456833930613193043782784394 0.0516899495857780566340822694659596 1.0530737727997595229350500935299942 LT 1 -62325637809451955700683986969985837733736.5921263664089640782593904784680426 1.9697213727345736620225328542287632 0.0786588605225318183253148451925870 1.0819249101385194780262815891713291 GT 1 -104857.2582747677131187757645454295004945 1.7861853849895873913537364680201139 0.0498394312573827131539838076085781 1.0511242889407048168745587343132335 GT 1 -584646.3678351355205818769533347669699198 2.2033125788677946272549036140781796 0.0490011513739497645871835569483762 1.0502424271356392262809739413176750 GT 1 -3945023151927067264242448530377.8975848749380822801605629486767287 0.8853923010501797912452878421125005 0.0784971836021983066662769628851410 1.0817494455580997768101397056396570 GT 1 -9858753815704186.2123258931685700467351738668110601 1.3299432749116988801485912983584127 0.0179274672030051866749769006938707 1.0180901110366259243208178977829374 GT 1 -6086330.0326904615404438933928437034250519 0.0452861192007050263375548220789577 0.0514786446997656429482603768813053 1.0528509750474132605309805348472855 GT 1 -101717584974433.6571376293011672716919172307486564 0.2617339644135309765171659885942319 0.0285858080979018267362945431471951 1.0290023394365321579882746385329472 GT 1 -215789852058562.9863226447165508420981656443860095 0.8361651291803028081997869217723827 0.0461590587805201935768233347359988 1.0472583497160232696852668501141317 GT 1 -20757.8426767088915366287417586105812377 3.5798838999537621299331396857472611 0.0109905502351562435591558616565499 1.0110513925366762883463441362626772 GT 1 -2664338996.4275410137805862034316932685881406 0.7204295307277385326577901094569845 0.0868029158525183401590169389761481 1.0908035573369800722573860447135647 GT 1 -357558915350675633546227143.9715642412114352151763165238554475 2.3617448949774084909115845981907014 0.0944675194786981117449456118554752 1.1043184967882059776733918074846292 LT 3 -7289652436512849989634079539955056277701.8601095500441659915393293528931614 0.0018367804731825606712421832286486 0.0155891029566761231504135602296867 1.0157118907953757776092178977970900 GT 1 -143.4893792251639716167016103702688875 0.2797303659647146848814966439207461 0.0497797208350748360308769545855936 1.0510614484607102179206593523211913 GT 1 -31579172700299254393970451.9490341884459207670128313645027574 1.3395435704553846683624627923341849 0.0983140940257038385043134719604181 1.1034890391027076162779701733415077 GT 1 -607964775683820503.2696723576153669914513356363240953 0.3415831056171341336588449420272095 0.0714961844338546762795477613594373 1.0741807888104799328541168330373600 GT 1 -14229305440128214.0222658235825391079374598539854253 1.0054969123868062474156579696561773 0.0108823000417188954857587626162491 1.0109419453825228684953746060104624 GT 1 -405747818906074242524478870.5573862446111246873227198950984970 0.1478606561906942225908707378100447 0.0539197263063032079623973375356930 1.0554278576173193813338115228366996 GT 1 -849388.0926562285064178768543777527613188 0.2940563101474677217523598454949148 0.0337831959447287016552264699766365 1.0343670351115246570648043785243819 GT 1 -2173945021.4885769461783864603553956053557719 0.7759266277283758360070242365055156 0.0213348713112455335766682021403492 1.0215657494203916371108973027156342 GT 1 -14876344453523200836804745925008816889.3486673959412532400605285469936267 1.2098117147224519807631148448751579 0.0230979795239746668166667340280599 1.0233689180727172036339227000334898 GT 1 -123947353565623894722.2469990089003425598727199080361168 1.4824260567814788065892475498477320 0.0443286565383419488013748884067579 1.0453412080275522973945194571641834 GT 1 -21500919708798592306532229451087507.3954783295265465652484158484177768 0.0859014461462907794371868458385469 0.0014285464087486443078944934622597 1.0014295677539782081834968400758657 GT 1 -5606474514738990418856.8804428255050167636549158857856793 0.1090798495253074616436355248899119 0.0554529667835000927360261545494852 1.0570497963333377787019060728388904 GT 1 -9356857631379790483853287019007457713250493.6091536464043614698738380420230283 0.2307236385393793573150351917782605 0.0338874098896993602983754638938508 1.0344748986521677377073994025699615 GT 1 -35356266.4260074635472621647226112280690063 1.4526012163327973526225585207729312 0.0203136774454365112859409987554511 1.0205228375796998861453427566694607 GT 1 -515364852714761174450997989.4092672273070101499629510187226857 0.5715098279305425020789925819533322 0.0647353802142422147227039425850003 1.0669257739212260241428519456635582 GT 1 -1840586446835.7971680156826881964283559025311406 0.4591291410565793970769466986368019 0.0905083271473485292145723197794780 1.0948694368078736519031973981494532 GT 1 -27915819875936511303167.7509188752237301316445174014558505 0.8853204736145194805559039845944901 0.0590478325686302329358797874662073 1.0608629723238299669396687006612924 GT 1 -107570074360814877001217495665571439263658.9348891742767286911290992660158966 0.9436829696425062815799518528005344 0.0773942822516901068467743815334261 1.0805533104482800111837708347481453 GT 1 -1581829.8837248296409263360540166500867671 0.5537163326734173332262989849410310 0.0614168603710997008087363767947549 1.0633838391020409783173357588878869 GT 1 -44643150547622361.7731145575973999795383451039195564 0.4051303546056984426891479842231185 0.0982515268083561392202852244367540 1.1034196523613927055257643532096030 GT 1 -29741648.8370090659937755361249155990796781 0.5959828210336640307194145364874244 0.0148589124218472735588134249766275 1.0149704119474097267468841894207271 GT 1 -272585958.9603724579454617736068266785537486 0.9290513002775238627764280952439589 0.0869860941886363530327657686064172 1.0910041676035259627656355445628395 GT 1 -1398743370337180007794312288262717.3125037102469811772160547063677832 0.4212505089283827867625596354544888 0.0323728855646642817985067408957671 1.0329084782790908404326565854553786 GT 1 -30.9345385294407802033437432034476235 0.4630364236415274497486918402710220 0.0000485552440574532467258657315881 1.0000485564229014755133619685466855 GT 1 -6662363503167113879670.9038402465076760391805930838829185 0.0096330625953265662638771656431572 0.0511325554156845251579028130334943 1.0524861691753216762782666489184945 GT 1 -88426623766271841589016088158434198995425.4760677343655442299142130174625556 1.2819675661777601703483033010218792 0.0681433894172279537436475329172693 1.0705763274389106681816791137779929 GT 1 -5033090366053565750479396100.8966890778355299316202656525604503 0.7882456787773176126736959701023940 0.0818224271281209141304901541202558 1.0853644725667298351101575560159359 GT 1 -16.7438318991804826422183561710372447 0.9189859938127880518931177680715589 0.0773438663627988038962976847740776 1.0804986668334824764919733097442427 GT 1 -529805308080241203233926606.6537508393124530107281968521580951 0.9066409629369115634016442169359672 0.0630604704979361864676461681916147 1.0651365351100870638719866030161349 GT 1 -5.3029182669693002731917647529033861 2.2339286529411685142623123746147414 0.0811267319486926380360142969082896 1.0846070681474417381110249890739913 GT 1 -1013919.9343573577097040387930833684706445 0.4099374322546088690806641277999775 0.0219046774613820188900847309177510 1.0221481468884976284791220566964270 GT 1 -4904088746601344333156120963805296151950110.1601116592638583036869085678398421 0.8703389376765748628259962386209367 0.0917480078492238993168675536194820 1.0962334144884873653764616828062325 GT 1 -4692357906519245464134640.5208075305828025497886847705554973 0.1360766654331457557378089422233216 0.0286477685743514177335557317340880 1.0290661252583649929683886427415889 GT 1 -993974462747834.8996379887596372784404535038990522 0.5931522303402496977812458808638402 0.0855444785836750186884083321872996 1.0894264493856219974462626636867674 GT 1 -957347370158504623540680142776394.3463610055681135657680661181185655 0.9352039315597394667358847080479780 0.0302338999321350086943936624362976 1.0307003705128287432535345832466309 GT 1 -1386140572785295.7430504956781685818948925764003924 0.4330965377883245367474322908064041 0.0268510669367599392399592282075204 1.0272181426685669664939273360549899 GT 1 -1244.8267528054615997470226478677474563 0.0789890206187601180063891524942294 0.0580651326959315809029394641935606 1.0598191497855723272005726145831815 GT 1 -1063892971757495747531866338991088024791023.8133645398672770996179730204802987 0.3103207759298827066354894606246231 0.0650677881173470713462552525791330 1.0672812529820142063667054824357009 GT 1 -342389975.7260176463923342169981430336204366 1.2897854435573676354759471720275681 0.0152191459477611090962389835655765 1.0153361457588024061354775916773764 GT 1 -1216787587040118.1022450051199110584246631683605034 1.0873808315725237907083201682932117 0.0656254089817476258621051521703241 1.0678778601093997925411754928657047 GT 1 -576654173970057499412376411338760655.1154217944363600923816076282992616 0.7304458240219723004446415200936518 0.0684042551903204721892628520553418 1.0708563085975828711094650277318757 GT 1 -992385998705087510563811922701564439457474.3003834071536506337484350349640310 0.7379733388729392717875291721261081 0.0940173758399075840529941822090305 1.0987351517543145961240726761211989 GT 1 -4452675361595.9250396471592085114306937663218205 5.2238232877888700841331708622309368 0.0091447396327363508005012759392503 1.0091868094389053490605259391537371 LT 1 -766402355548503.7935666856609644340412331204113188 0.1815536077583977651996825740108266 0.0439292931203053168141334427312017 1.0449234074944995882466896318279878 GT 1 -57859229284849548378293621877619631664.9285214879656408647904377730627808 0.7226530949383110852646102896922504 0.0655072836896333657997132611305302 1.0677514463273101292175243929095780 GT 1 -5108.0635479607329942839985961517290185 0.9509319714923154694760409478337007 0.0320175311242509778499501003516322 1.0325413025351086499239158389861165 GT 1 -11210664457404959826858191642472080796.5704418477199113545829587540656035 0.6908053420441264348672574078328759 0.0799146063491171072974361625326225 1.0832887940607428650263787338529137 GT 1 -21981821055684100144352554867549024276804.7771525060073447556014615238260941 0.5008091423636595206864442912209942 0.0972834686169894451877627679000613 1.1023466935821591884670153787346723 GT 1 -1263586966002860149278153925660759369204.0243636117871165897103971794319986 4.5663022488702652577149226724053832 0.0488955649793370072552644246353701 1.0501314064611795531241392877824227 LT 1 -3731368508645.4346259922140761920289588812775069 0.6874053214125032255970201827790340 0.0771620349463240053045854620489051 1.0803016123783182297623750451178352 GT 1 -72578043952016881030888392384.2319066674263148679375405707713422 0.6729139276598943164184291190809388 0.0326180689941857165106084430985625 1.0331618966612025321578386274991116 GT 1 -920653633033707320024024148.7529323227541521723699889479773659 1.0684653323571888390991942683658499 0.0665120298716991880009756553958318 1.0688272029304223206643343627377025 GT 1 -9239519819215.5947091413563526260533404010184600 0.7967800616442942100113612513034674 0.0128483046590757150424382085072947 1.0129315580037358418710445948166963 GT 1 -6.7361658386441037211804517477229909 1.3640933187552617489403057681899752 0.0623182842196333452445441396577849 1.0643447097544862567602108305324413 GT 1 -6793677158344068485563.4872662060329401531654219685643257 0.0991895390838824470085128426387874 0.0960141278162414674826976247515515 1.1009415468273921794889318866469410 GT 1 -11734539384324230879657607017557631779507690.4667042079239580524811367811904576 0.6730444576021135729822379456859813 0.0965919033185916168485615800891541 1.1015808933472813388172929977531984 GT 1 -226973905483374277577190307.5759227016343434421104089862005475 0.2596268478765295741834890438893815 0.0544331457483211162836068438681809 1.0559706855549830715377761807469203 GT 1 -30451255090796121465402272890264151238270.6599809785696055094032655715102874 1.6296799208752438592996181510983491 0.0933986592784186958099913244855448 1.0980524616307047941370259038859494 GT 1 -644.2071157047844896335546358661540412 1.1077415712221201140066351024935951 0.0448457289278625708275096015815966 1.0458824111579778737468659480906985 GT 1 -36315537186061280436.1563492265785829616198166146200785 1.3782328240357018191481289602955697 0.0358640129940040316839254279686093 1.0365229289614565933429126933572359 GT 1 -68106567079081441.4520934637539106996421280415515512 0.6123952708469319465007361705628878 0.0270499459094355642882658380614288 1.0274225299835810109946767756004700 GT 1 -42727904676968265227215298509.3048919381715384441274758507262551 0.4058257631537603577770856921756061 0.0524378978992833786224982326967305 1.0538628010591989054608509069927416 GT 1 -1044573338536903777301.5384537191838959536591359553212632 0.3609547618753938362870597455242479 0.0768858933295047133585899580650644 1.0800024262584736251890833809442624 GT 1 -95579020.0561204965794708501191725325360204 0.7357637194328794388761237352685787 0.0812160019580421316441297072153391 1.0847042244682278186477540836530489 GT 1 -1022214361237246026099948.0897923370699687077050787592307255 0.5980462961211215550983218917820974 0.0986153135803532597538429199429801 1.1038231575323712209367342077031333 GT 1 -69598604496478112803036666427.6872027749864161673130824727403375 1.7315826898998435028971935008267897 0.0939654336907857999782384134107187 1.0986778210077750908969364214677665 GT 1 -12246731653291565465.4811299448894099845200713966671369 0.5678719489594536121152517438230706 0.0719976872751891081198225853813342 1.0747210540386853397204253202347542 GT 1 -1257634695899268686639285.5368821254152832395978964082595808 1.9360007995151393711150377112313489 0.0821041211301884707877670859459589 1.0856713165048201576022050448364536 GT 1 -94011884161946.6011225363893640937441079378092013 0.0849647853633843305271540645675223 0.0085512354245867279062058881445449 1.0085880070166574238748610757138962 GT 1 -14483084918862571246713453078675924149897.7634054466325953857625666339142706 0.1406352515612294675838420579415050 0.0363743469480355894241225988163019 1.0370523864995138811865783766325544 GT 1 -2424902532025407514409848372103702.6613238110103000377814534758931742 0.5513747200154159902530138032226512 0.0558224829304580871061309856427967 1.0574410827722381453379785701281656 GT 1 -24963188655776661992886187800.2272393993792183331367346128727303 0.1077664286128812825681874389301020 0.0444083934415722056459620756749211 1.0454246469947291371629907216426481 GT 1 -1339590970209578880473408.9031537362597802297868734299578605 0.2064175685276593195550532697899112 0.0990378234646823457078825432706927 1.1042920016830203054018058725628280 GT 1 -150359496501524032.7284723610887219540982182040793950 0.1414746373913826644691870165228112 0.0944076045277102810690039026552699 1.0991659687943039531004454082179633 GT 1 -4753277188205443875837607468407354822.8367561507887733442612172345273513 0.4928895313558542600247221458046431 0.0437549259145485435020931507328584 1.0447410451378473828015840522725569 GT 1 -579431387323613728633964887020056826403947.4382072348834581891253602864625375 3.1463418192931068070914225894701264 0.0432447784744969066257856263895985 1.0451848573686129179620127560012261 LT 2 -9330520.6326712219739872195345407486878294 0.1187363335487781620416537664490314 0.0560062223463761753488425431587742 1.0576357043269790183255189194139564 GT 1 -2863980928049250967273204949352222827696.0865121728129198141207513267836103 1.3912892740746220453155450600322935 0.0987172620381233017587330966687963 1.1039362659809955804147833915321301 GT 1 -489367032047643933.7810373776953968966958831180262422 3.6596743646720652631355046637093677 0.0332114588107813742799165553461048 1.0337754825304348654656297092183661 LT 1 -80484428106990112647160464784785737265.1644838178367602568020609207855831 1.1782928594431728412589542908683988 0.0301972196322440683865365427398917 1.0306625473653599357475570587019127 GT 1 -19879010597.0289074557098598492793797640380222 2.4214197752493639478338792462893772 0.0252169800615822318194942757053914 1.0255403764037079410344774641555629 GT 1 -465398720116504988688053752361.7638524879665647432631273506362600 0.7408440713928807398792440297847669 0.0102932897874832518822451741556883 1.0103466320554751793114612515868859 GT 1 -4432983834990435582369776944.7262181628380688418327251166498769 1.3464362443033296012173934177287035 0.0955195593026623001166964182637871 1.1003945988169307284170079118635258 GT 1 -58145252.7890811576042820480537334306778356 0.7854447297285319209396882973216029 0.0045247843327601124351638165949144 1.0045350521542146974035201734820463 GT 1 -960892872296869167.3836423378499463364893736649582072 2.0349820966843184742754044738125601 0.0799787958532770922245827235695567 1.0833585612190834187246039100559710 GT 1 -68761.1416498787319004606436617255983908 1.9748171690658927102392575012327271 0.0354837708541357357967920286092742 1.0361286202917954320960659504067443 GT 1 -16553090889342594823025952901557343439414122.0354663271782685545107849904112751 0.5275547040136012112641039995401339 0.0280945515106715100218417864850359 1.0284967544699789524093775115611794 GT 1 -1460400333.2079159325499705334730957589846233 5.4028082056132718854126331212837167 0.0679251209031599124818278125445154 1.0703421251452381244115794893195523 LT 1 -500.8762260044182972114136291244128842 0.1488525905658388154247063688801673 0.0254882794562541151355335920002189 1.0258187328685250767666884202930871 GT 1 -1121009.7244232370162198164691285704820527 1.2005357766105282092616470316846676 0.0404247607177486677996689849582004 1.0412645515151454949259474957731262 GT 1 -6585999074187.6101868946074378257475440432280113 0.6706422350715430774495216457038853 0.0811117531186233216850562683777715 1.0845907669789300047409952594830798 GT 1 -157.3013976241713366408097014798350280 0.1460557257564649348434993989587514 0.0929325825454305480412328989259328 1.0975385014699568626883930778876559 GT 1 -14624191491544001447386463355495868.9683228821607604965095035098570161 3.4845109052069110749536713655695751 0.0235992738817535062899834717618329 1.0238821967947776666347736638412296 GT 1 -170715353591733160054833035271180460.1001792990510088650711533701868061 1.0935079075494086651148603681553157 0.0528161665225474167398961776131406 1.0542620826949967879871833568396218 GT 1 -261654482588664131731824929458.2450625569797886198806094744961208 0.1221254520601274687493915233939756 0.0682764044121628002428639244318676 1.0707190795401835795509215524022068 GT 1 -50.1054333789957367817735011459422612 0.6020509446950783040508054905554667 0.0219267157341227076992643054690423 1.0221706789674451808419077281729232 GT 1 -24177729330.0648773837220465174220194842940199 1.1193377454367021879401001144152915 0.0804009436324652149305642061816718 1.0838175122272442813212922442792943 GT 1 -1899432352284168700278332121662710537363.7429167745429097714784290201280285 1.1269866814094227521910753961122692 0.0333988800710682999528636130588687 1.0339693609447485243477639475689532 GT 1 -30630398354567336912823629970969.1041504900900263283135129072350794 0.7232505439824759201267529505058458 0.0282079482180667578512721511194209 1.0286134359057559455449346049392700 GT 1 -127630320004191.1925653388998765415325856291506209 0.6777695834146842916857085061618324 0.0974678317145520672440000602836647 1.1025509458807343762610158014469132 GT 1 -3968096560537514221887.2231993915965374074008131931039612 0.6021928700677239609060923638489858 0.0850460566468028240687548277284695 1.0888815501065889025468411024008975 GT 1 -5294288737020877657810682.0693434130893362010900875702172996 1.6511542339944743740614477036843315 0.0462097552585503827232089099653596 1.0473115009523997990159256697696045 GT 1 -13377893387970552796490.3760428234998788811922184477611666 0.0211244088471562832314543779929850 0.0796444766265824512761155107897907 1.0829952451377910855431389623589285 GT 1 -116082851233229615648924323110690464488.6493693140116466125492015725341336 0.5837233340992129040738050551712810 0.0446147820680437052570868456921301 1.0456406502707803810440647744715901 GT 1 -23.0049669152844535711877636687985569 0.5778495144523132914297178311298278 0.0721039066185144125672942963338060 1.0748355208037752820713398260266526 GT 1 -10113907014210649813449662899279283887705.4869990871327623115467950793143058 0.3258424043092171251116114412624059 0.0086228699347244817409293286435323 1.0086602619840376037817784678217321 GT 1 -278023.2164482440848917422267641110149273 0.4581662570381785841380745331261332 0.0716464380724403605774879894458974 1.0743426252990921395636684758625562 GT 1 -89390088322442585992710932020994.7105756977011868731576485232574790 0.5741661242647692819040076211281385 0.0909695806831809325962845125652509 1.0953767207696248143355278269614182 GT 1 -37389395477860565447797371724.1639921765837185821490554776360538 0.8281295726013879496584331463547943 0.0707296606916886618098324591035639 1.0733555821688083953166831686940483 GT 1 -77627392052748832.9307337478082422936884294236832637 3.3334970634028380437611260641546440 0.0507105447566376993244645190937468 1.0520415160846964082076397922889026 LT 1 -1408924514192821405.1950575140660962056158065859037502 0.2899312677881275379980936300462753 0.0664148340421594254990508228157798 1.0687230872128866803595621662326089 GT 1 -31199272795857584.1164151918428198629578264969494057 0.6891117883965509006504407723667160 0.0214620937332771873781025498580439 1.0216957537377145267648946889516607 GT 1 -298.6908166415370103016803122960721098 1.4072257083596043584201125128774842 0.0899448176947043807608408159146353 1.0942500414138362392208184695564785 GT 1 -378317366247718107476564004.2037749018441113840868783670881277 0.2628045244045025842262006218420285 0.0557762869676470455243977596520798 1.0573921567685013609954307763815952 GT 1 -1193660867152.9408265707457410779706387348831041 0.1098368361393306872722447752948634 0.0526578241536271770376368632186403 1.0540949249272916614451426150280304 GT 1 -29708594598291744476009416028699.8204337583737153878553123589228679 0.7043751553289428065327052293138306 0.0569445462303642333318347836350155 1.0586301923834611313813969102551441 GT 1 -149495034038169.6947407122594170992941449522434427 1.7044130205620790535142772905215834 0.0146999721608515638206187138772979 1.0148090873992191465419213596967751 GT 1 -6669742863190.5060944000517757504811893141962908 0.2835663038925574877101447222288181 0.0693841721966546934732197856251769 1.0719087315458572938248308363597963 GT 1 -12268471331276622590435422350057025504652817.6450677966161510694902788883598868 0.4040846817572023698580745538426119 0.0742845288174232900450982328663715 1.0771883580934874494980474304640433 GT 1 -10041688891120865368447.1909929709098920179185989192606342 1.4664059323968138318522888014037585 0.0162587209222372124129478181313528 1.0163923442679500750759010997029302 GT 1 -56322593257618031859047307449731.0047695601999400101336188930020818 0.7156872393915246605668354511204307 0.0234235375797939379989957407604264 1.0237022292012335750523419801669390 GT 1 -140741756597174959.5205346958601774416599174005306114 2.7461405204096771194253874322722371 0.0912718738933395526420479493541368 1.0957093207331418653823491505071947 LT 1 -338551572917757557438345374256313780.1974139151362806150259777738290939 0.3832503090168588087524625313071920 0.0148419411176221448922522584509785 1.0149531848128844584952522013318149 GT 1 -58789102861051619101222668.6778623931250403737387952878775483 0.7104842344487750515964206111307503 0.0169819493981431915342906408493999 1.0171277962346354828902129538532815 GT 1 -2209314769160468.5430824022404649943102874561791049 0.2118824714801945776976343779786122 0.0691829984143757677672640980964600 1.0716925821582608490170810550473715 GT 1 -43277771774456760501838936539802925.3068314977755478501332975665582350 2.8153405946970441259868318823317847 0.0954114417315046999140972685735926 1.1002750704060761620966744646616891 LT 1 -91864616959189.2159453806156665154726428447703550 0.1491179829757723703992888614773678 0.0200917568022979159437534900517488 1.0202963410911243266098275128358440 GT 1 -3293196644414669088257.1642863779664560425427184747926908 3.9071991897415113911743550466356833 0.0019798073850428103180770786203534 1.0019817697942396736573633647358003 GT 1 -3330922896087422645928787.5315697873746631308923664100152604 1.0940052920892173847775306128704333 0.0595628756506859632664180882361769 1.0614104859055985859593796648768242 GT 1 -326774.6282199750844364803023526927737042 0.2716134676956038459077389136304158 0.0853870953323159062714161140573860 1.0892543582276280019113766339755912 GT 1 -3233838898939.7255445047458317315460283824772064 1.0351570570482522300363678402355848 0.0181225551996581883833747772970967 1.0182887800450222948396288764702222 GT 1 -451584840784683556221042831553353.3339466843259282673681194433651656 2.2263256601664976778477106430297032 0.0325421804864853852491972709530206 1.0330834524306466144795809763468289 GT 1 -42576585299370745900820576769671125.2632946726869439495771009808097147 0.8986795225054543219302486468615838 0.0391458707742698929130665439902527 1.0399326721411859581844051311237808 GT 1 -50325339297423733077423246322779791774.9266279160263819253641584844090800 3.8998377508500898675218356975593595 0.0873888026290185234163093261925759 1.0914453408172508514494655509308346 LT 1 -5612912732509020158097239769140.3506638882548097874428055359048118 0.6782693287629752490770637350234326 0.0220602241477651697992105444126250 1.0223071897265724535783163931061721 GT 1 -54513456265696878584.5056539895202683176969143750140018 0.4797158819470631462356799461570765 0.0961736030775643608367100175303561 1.1011179758343879203845144263483994 GT 1 -25327127099649684.2005860292614598072849822512059490 2.3136227667177873972639773084360833 0.0370558375412083655275711193271390 1.0377598517739206076777068417544258 GT 1 -16.0171177956051738394369756676844357 1.6911491882044803627520996512517762 0.0685597846544476365538363073011554 1.0710232720570273260729701041184253 GT 1 -1053565020530447930946318545415832786103.0115579179882849970245962745415632 1.8609216866010432398257703087313051 0.0764187054670115452476970615919187 1.0794964544862412716543530250643178 GT 1 -8.0392374956531254102799579522141472 2.9443936206036171815693455690609149 0.0758635188147474788663827642705992 1.0788955113375980668118211273879784 LT 1 -1099747273705622.7779937861438288542325794936123452 1.3283632643269579320355876868468145 0.0049283082454604826683484549373298 1.0049404924045534275749308983251842 GT 1 -7.7196777388779746677281587575816533 0.1801206430952000849002522976771403 0.0783015451573046507623305072707246 1.0815371644049985044819398241203984 GT 1 -1093370.8290222343971931824904803057189028 0.7597350125959488752141061020079307 0.0009378170659187356465029695342709 1.0009382570914737940942288044268116 GT 1 -33307650153091192.8430743951503555204030235019356249 0.6672344721256986299376455067480347 0.0415829189078844231240843877317268 1.0424722292713033276258454701439978 GT 1 -430759351844324997969741845453459741714.7251520641839663058226501834968030 0.0171464026091601393145373097974841 0.0026208338272952193736674767036258 1.0026242742247250305203686231418093 GT 1 -284128433648767863927690964.3767585279295816821229550054576938 0.4913497131600500311638736802615301 0.0471085333623001128655944113469336 1.0482542678179505472857513270638258 GT 1 -14915860926444889655043414.4502169115296253517229085502151566 0.3637729776305917025580955523677221 0.0494485790053834683725129458782491 1.0507130196272909305020732721320696 GT 1 -23382518057736656630393534416.8605771556599141079414784319239690 0.4425030162007909984880724000828427 0.0179775030852783249071269025124794 1.0181410616082907857736363643031188 GT 1 -11545178065207360572.1590235528046470339087733894431908 1.8625589665635260749813915242717522 0.0779387966969449966315508582825311 1.0811436766058295949242999394447123 GT 1 -9054435349907685951682.9558885280256468639505295923566878 1.6547351639616751870100300252160658 0.0438153935058192988187207686201873 1.0448042815453398438303336799279053 GT 1 -5.8774604192566173268137805197455661 1.6192594437125738503005483923731588 0.0918887305499770930655171091944110 1.0963883644415168365281886584657475 GT 1 -626117793895702349709377373300641536618.0690892891986434429116088343317677 0.5769297264227982138676231384566956 0.0320312905486995417458056001859741 1.0325555171750260529770738491712782 GT 1 -1460488801508859081335098035084003676278.9882467861259141480447182998825850 0.1888096669176490973607429467638084 0.0186507187098935425863538182370545 1.0188268366188845440266966286357918 GT 1 -8943136262282684.6229739153936233249315000961003959 0.9816233366043389260471295529937058 0.0922505123451034289905598860996271 1.0967868330999728177075870958941760 GT 1 -18826943148639352.4065656983987738791385515485109207 0.7802078341974738321548352551027751 0.0854903718755447041218178119340102 1.0893672829130845804014920410271452 GT 1 -4102654142771.1023894747293633374052776964212312 2.2974656513662375334493686040762450 0.0348294760672119108015437817480772 1.0354504845156607172672441411311520 GT 1 -8035954.6717256284094020307530212813769892 0.7145554581955318238643946868131504 0.0169342901576053532088825587651672 1.0170793148408047293133619496332466 GT 1 -1628733922477346234849950965062772090579606.7965719477696683551063853968058860 2.3570591921713457217633693176326611 0.0972352529065702328107297724381324 1.1075252411086944686485895365254194 LT 2 -2701173058494915819161877246260916465.7839854152773258441410667992435795 0.0749052104165903217918321383089554 0.0482642356669296597913783599495751 1.0494678411909195652449391322742602 GT 1 -446233487647516976482046.4119514697228134017673186439044566 1.1443796285360879250777834482748972 0.0159858094440708237138667687302353 1.0161149607371935355482565787158057 GT 1 -123501914685346509261675469677.6541528285469268741820108999846753 0.3614713397582914492300787785203152 0.0897176542984606460616765676289819 1.0940004575933327171747146576554874 GT 1 -1225838572669037503576217950.2753016352210035582309719934334131 0.2573632928782747721025726600172204 0.0089213156016200947934324831615454 1.0089613488147985164216162918294585 GT 1 -16687658210404836717923.5858587972480199733598712765807094 1.4771672587088239650656862112371741 0.0918310235367194223041920745557487 1.0963248202683013524276067285359211 GT 1 -3022071232907714671786192114227.7610815020649115336760778771280490 1.2231340138334357866284351293402557 0.0293520857622549837800884323451790 1.0297914776434890691469353724837894 GT 1 -17131814060647964092911164440.5695871228111533559772680418209202 0.1913666924042860914739239110997405 0.0123378140801503173166637285844460 1.0124145567864158075601478632540525 GT 1 -7035496262103477587159.5022872223519839147272913920241729 0.0138962526254881175988656135238275 0.0448674153567633296785236689870999 1.0459051160505303268074023793738948 GT 1 -86754.0176667317794373072433774713184933 0.0160026948190067086569225741207872 0.0634348545824529215910240901438002 1.0655361968718236857793318672500380 GT 1 -6897664216744780.0861443522319512686841690239395087 0.0873506022287409800280496464087336 0.0219538148544867496357669958655456 1.0221983859871743284303192922240482 GT 1 -2166653287043951532752743858279408212.8608749822832328692389438799794303 0.3108860958236507366293490898624007 0.0057512555519589849772085343375898 1.0057678577082689024830773195654620 GT 1 -156617420512969540308262.3210275836827587488258520268563181 1.1630913483633921369104581728744232 0.0381361760140976414286164845776484 1.0388823934445100858085207133118268 GT 1 -3115906460406593981140491466689.6759265400981764172014869567853448 2.0042957161303893402376134472627726 0.0694988985051041526183386919120981 1.0720320191338521401046501968024154 GT 1 -906579401111.0058051210859666537991909519361186 3.3482732690506914413242105420435662 0.0245455817952922862901488663967082 1.0248518466076093351470107968740345 GT 1 -55.7406868346574255625014435572056042 0.6713339502200998437627781848213981 0.0622853336325629999445264882658416 1.0643095698903088510443264465566934 GT 1 -241191429.3960108296194556193499916584064005 0.0816618727938874175839072070485303 0.0827720831199367656535585531111122 1.0863992913921754581120931522872472 GT 1 -12242510257467397526132876406491.9442571199047552074218767252945707 0.8739657733072461510483627237046590 0.0388371216083239498843591844165128 1.0396113959325176543768141204526941 GT 1 -11.8560849197521599824205475303892708 0.5077189286352060777427089554098883 0.0865607575194767630408965430611750 1.0905384160705658137821908498502536 GT 1 -27839190548648258486878.5972194460639916786543963040249817 0.0240690091555568103484382647864551 0.0412703766132664694381897989368547 1.0421461798389290509822628693095956 GT 1 -38773606651479801015624266745681176777.6406088682794475271226558804858782 0.0492566548125208905981478654824813 0.0707088046374849148532463222800372 1.0733331389471925812951233225323717 GT 1 -1368622889717969.4686290085114295208046245249261395 0.2965604419488346130582328428543912 0.0153547804755586813005937581351592 1.0154738859155229761147088332995922 GT 1 -8658138699157816933746.6086970541694751105146125154837035 3.6528508059601727655002002062725218 0.0279213928623768514344976135715070 1.0283186062508601781005573058579971 LT 1 -298426357584134868511255122.7929919037014049336703378725905354 0.1549220288615841488567147305618884 0.0734953788227216594864326579147536 1.0763362454901239049067049768311570 GT 1 -376443291078048981361281.5379953350916525966412814189977676 0.1335757060685393050698901709435353 0.0242594020341791088058830351226427 1.0245585086677380849256445948086360 GT 1 -56135498357034085618061557086710.9733591268496567518084594067178343 2.1453992525553478728212800383882908 0.0823460291090813167682325721801559 1.0859348974479636239785671074491614 GT 1 -168897.7663486113306631518943481100937655 0.5336911536606058317727733727986115 0.0067542237153743373015781563218106 1.0067771367156742526244191016630738 GT 1 -77.0669138048178659041523076346175360 0.1314026094425075377499527912224397 0.0814046465862751656175937051009272 1.0849095654379588946307750247111503 GT 1 -1720780064527951364341603559235464807141703.3708296469331632847100776051145575 0.6282485404715575050530210675605948 0.0060440430413658813597143847230702 1.0060623822019653774298576671915228 GT 1 -221079456016482532431660066431574059299178.5399384604696180147611562562913822 0.3547993451602567749761518321805081 0.0485893283546394510221807549541897 1.0498094782659506455349219586390164 GT 1 -12139163456738137151.7156112911764765123284354587361582 2.4901470457473851188900500115690470 0.0005188141522810520632444865431176 1.0005189487829108868038050097141665 GT 1 -57.6070528472854015519290033116843500 0.1683602994740524113473211506128947 0.0979945785010472907197406743905029 1.1031347484065868638504017284398510 GT 1 -163384364921940467005589185.8075571309100351167050638472674201 0.7120371790592960882697859169947203 0.0092649545174109924921886186331973 1.0093081411636995538226949398131662 GT 1 -1.3684121937206016025410117982120601 0.5574422532934619540326315731687529 0.0352532712785350610536123222833928 1.0358896693745475073843748056040917 GT 1 -1238904.1895058457534587304167169493751615 1.7830065996548104932077864566445799 0.0087674640657724507769242983926600 1.0088061244135253946928799323946961 GT 1 -6354142721318243.5723133468097506092297597635131627 0.1618119676536195399985533332637872 0.0024658993096454841991261585763765 1.0024689446467079597751728683163507 GT 1 -10063372153074328931789344.8448217991162682753833339283344778 1.0587617965651126631437896930477739 0.0349494975426774232876555730644148 1.0355748448598692337972416841262576 GT 1 -11634829478594447837348795409.8465325790293939089054322640160080 0.3556017110033341426501053284468728 0.0439853357725182580075163697667880 1.0449820268982938217196457918029847 GT 1 -2406869827728965007219424.5906094386996783225710029697311958 0.9947009012893884524622315539231238 0.0984884496449836314063861173195536 1.1036824240470032856044200768914445 GT 1 -114141517425.2445850601501809302566817980882706 0.2420889103294770145899335943224506 0.0405734331337870093109119889258893 1.0414194991716400849846901864064999 GT 1 -10855622974471634753.0377935623146492772536109458528694 0.4405719389856556325607936402904242 0.0557946784256621208307926555679886 1.0574116348189640697753569565286910 GT 1 -2595977052264478646889575768901.7699228993698319640178547949195013 1.5658764067449995226602466491185076 0.0849996859413916290177420974509282 1.0888308704732228703290003562743020 GT 1 -2570730771873646587134105301088689.3229737343871556221156710026136500 2.1459558414862405285954418521616788 0.0505265113993277930726429015428384 1.0518476705512317588807933950129538 GT 1 -1668893266816694861867744552694.7192243301349836470738229541427728 0.1432533233589648184923898915017962 0.0386759819467024638324600712261724 1.0394437592507833596311655714972027 GT 1 -521276.8132132236386248010217646380278714 1.1168497107008110629052730418206990 0.0497124999254498640725169688497274 1.0509907085138525380212316475659530 GT 1 -426590739089058282.7106895238221034277433164633065221 2.6165705140159739370812057880063348 0.0318220802832057650314697688050222 1.0323394072346359432016678427749909 GT 1 -138785191747231564717.7715451559324442615406821819504026 0.0253722956006529743682769539193203 0.0454007193074960941839768106318680 1.0464636279278006407232202364135625 GT 1 -8618461774332558955119742917482154132292011.1334857947642703855473425483067409 0.6961420531051053112274772016365534 0.0579346506853734659469660658114344 1.0596806338665020805881555963102793 GT 1 -37668818092268965004121714652074906846340.9151387911856666474466045258570432 0.1409797891191659583104593545846766 0.0838690482439549758649454594102046 1.0875959640935120097414338636682789 GT 1 -571642514.4124060352550895133695880916609369 0.6227418961872008136145449879768903 0.0085890121148482730048707867128011 1.0086261102564041965637489818585219 GT 1 -132603.9459539634774773308552687597219089 1.1370563076541429623264714521078976 0.0636846545422602822752758993413670 1.0658029517048262894350062002389770 GT 1 -387689915927697104871.3975195689614764937794463697077930 2.1208325682040478001965873956102339 0.0887624879204407216328272828889734 1.0929516999182647749054936097355768 GT 1 -109343873162683888.6225236271913555580608962775952299 0.0418775844486228245188002402179006 0.0077133118339970000175905726969919 1.0077432132824267601909058385234628 GT 1 -34982653322.1664510094085896829575208851927692 2.2529015383876365867554922353579742 0.0890057202676602599041989525782773 1.0932186608501912724401674600102798 GT 1 -10258.1364569751496992542917224594657284 0.0494346523155403155443496252987400 0.0605244160730796321064620504795954 1.0624334488357507265908095633250220 GT 1 -5720643312143701853793001553073.6143252958651914191837911061295344 0.0241497483074977772183224567052598 0.0973111847511475907949879325167592 1.1023773970850728468927411548153535 GT 1 -45.8667573483116845356643591112159913 4.2094310189959956971222302355398927 0.0461417786423481154889824933417435 1.0472402335072294190160355074484441 LT 1 -1471270978886789787578132176681517695378.1979185865686719937927574336437888 0.0776196180212209207311701924202963 0.0656308179861403593666885520902961 1.0678836490297117219637238382599993 GT 1 -20560.2467149621816431512648068190844052 2.6677247449034453939693768904133890 0.0891120627816387592166024585282366 1.0933354000258743806480094740883190 LT 1 -662478160840611967838920851321640244668.6756876242027737569717862204340981 0.1892654516802639143677780266913584 0.0406898999002049937811075267876793 1.0415408985992594943533531249639350 GT 1 -1715620046664932007240.2533034379234853777415325970649947 0.1497786625919421687742171335423854 0.0416606642152360534611282695071936 1.0425533510108313391568050042744092 GT 1 -279061.9103809221851517009659263836522799 0.1826284068109014239245581618182714 0.0571785415066491503900849337683866 1.0588783477916578818377509127412147 GT 1 -25224125412773838955725834082424.3523737173011043445592886632537080 3.2769507051259735876146396265383741 0.0830076876738169914145800089012014 1.0866561902655217080756340240826058 LT 1 -61294872246589340757100415.6035539294378405352608672551885917 0.2590069743642827235943371765047290 0.0993769797415622438863518385763269 1.1046685104170951864659490362246464 GT 1 -958358353957645739548.7764131076932160205730208323405222 1.7357390586278938783821927473134672 0.0886768357384418490639824803119106 1.0928577088833721751423548479836244 GT 1 -987331.0026426066263912208026655713326058 0.1209761587609063683846727826998916 0.0463262129555855056312560620168195 1.0474336083109021661937939089584125 GT 1 -34298015963023240131309.4015962554560224919599993023485226 2.8288459057904980617301287941386855 0.0009270087080712511714563286687265 1.0009274386463685708447217813929197 GT 1 -6368172759655469961177364814.0859513627821007732717594378539071 0.1441176286617063185234206643702260 0.0815823787966712558335132770058282 1.0851030667505859389533465581143856 GT 1 -692590779818462059049228063577754426.3367694972021740260201380801477547 0.6424914664800028807828555700465569 0.0123331744785774697137646365998670 1.0124098592382646052326793369816340 GT 1 -2690117477305.5688376811691804629452245206841729 2.6497523569011007563279321570382463 0.0970976329447733849225403740833660 1.1021408520581997702060601494220077 LT 1 -128578007416337712349797.4874383379531659212771811802579947 0.1299835023819327498959825541705963 0.0594834080202114949826036717714286 1.0613259887381968912191865335839054 GT 1 -5110854587.4229590622027371575857701730748549 1.4202868391320098285723462082410449 0.0146580830064555649105489895354198 1.0147665741922795019063821853518871 GT 1 -476167932616670943110255028068262229355174.7058954426705432635308197763789823 0.0073472530398217836202744853171887 0.0495278248373811491293756560822287 1.0507963913773352454821765698780445 GT 1 -1557721998.4930070630292991467488691650812207 1.6736867905796372869614454836480610 0.0182056078775347613942041409771785 1.0183733692073909358402624231972863 GT 1 -3573802200846.7429863480813494044822302705930902 0.5151253297475565147311171387790330 0.0582338303078581775355473251061971 1.0599982627223540690483208658151517 GT 1 -18419666295569220114814834220825831159202881.2210310721595304900740193783874674 1.1432613092373670206311934233849535 0.0977375439024323107141855496589705 1.1028498299601129564133007920943229 GT 1 -12189624197.4116834712918124528115815862768386 2.0520004246104614762625349426047212 0.0454658114581712833966058939483302 1.0465318181845316355094402170529077 GT 1 -526848048867145512740138.2618223646357094647134448848437702 4.1344555638998056761637405840698355 0.0602406299382684265831042749289246 1.0621314257849703315223055113274923 LT 1 -63445991077326.8015625424804761705387258045082278 0.8711236975981004972651012716163898 0.0596614238740158187591568006188528 1.0615152812019171628928390391538070 GT 1 -2140755457898138089287442349358089221885897.2135623982225007206394297479117395 0.7467960773613257732298111251542676 0.0580535204663443300710408205037614 1.0598068218015335339469726890200280 GT 1 -829710938.6243097875750301878502295997865897 0.2265706010820441575427077567427365 0.0337556179535902373954339571311945 1.0343384932796486243971017259098068 GT 1 -5771858100666286166814.4676089179199719786247368308798071 2.1038899286739087467168376140281659 0.0367036567516101872096629712659296 1.0373941852930435331384357809505620 GT 1 -870144718317429.0868448574306730002105295138784935 0.6731121440186013761537593250436733 0.0316851439238506966988460944276894 1.0321979800511265779048088654266267 GT 1 -30173953845.6160428418037250862095475123731265 0.3164740174741612229143873967795188 0.0035348703260014174006946617539085 1.0035411327423542122163308110097240 GT 1 -37012687116134195121192.1949186927139501824071135581664801 0.0485737467062743793433428360066964 0.0386456422648621985300721371322499 1.0394121994410670391717435893160117 GT 1 -337328936266.0137527738427668860872810407625186 0.6889592717548208428069800411114912 0.0017606967689759494023983360777552 1.0017622486173558948655436645809526 GT 1 -4160562281132785655469924.0084902988647635087694946257579983 0.7863530487080725115901219805757964 0.0053443478883606508594874863016923 1.0053586800022117967827859093960840 GT 1 -7902725303809424969823755150.5047809092358408702800383856073312 0.5828905445701659457748313653309409 0.0526583903260828053931000393992853 1.0540955225705078595490551888884981 GT 1 -141941.6929890997404305843577154091187865 0.2609434200155522248851017313279233 0.0921218390972436779172571365210586 1.0966450934121272487753351409299351 GT 1 -137017595592.7226493712531443661464515130182387 0.4930880920207149808071392027462074 0.0682361951748064396724865215742452 1.0706759247140723982203057812687642 GT 1 -45212349018539513175.9845583616154506428646590477872910 0.5783046480172211682075311114097779 0.0474913892477292702729797463359986 1.0486561318622787381698694444977739 GT 1 -323394213869.9834759050450324984263098358888174 0.0695970942242790231305033324239759 0.0321331645029993274916419301029852 1.0326607678040473838813143864643067 GT 1 -1031700752474437558998015.1193770293378194284094616754991705 1.3036013917687069561582085441530049 0.0062393841864962280522435475354199 1.0062589304910273063514609027973673 GT 1 -867515476447907079565134821406748527.5226135011518746277318586452644605 0.3544459705127538090300265435949716 0.0783421881123769038836158238469662 1.0815812610951634828471228210683044 GT 1 -7184035268565557775489317435029490710187478.6206319516131538028389663495570782 0.4782586541033530954447580460223781 0.0347803201645022271480835433470155 1.0353995560529858116203927716380593 GT 1 -461542054.5373562879626345177903175234644475 1.9585108468767810148047794292533543 0.0656175810684416645913503744612205 1.0678694824409663590375932358898447 GT 1 -355373708406211261546890577297316484306117.9051451341112707146477333485660378 1.5151852430693442694450873775180904 0.0081522876595390919384567141495716 1.0081856992678443180465258554805199 GT 1 -197626849145820647995221796766698.2492067522162143591392561339121829 2.8483029028535583386453474559853782 0.0488234199569432287221699498358152 1.0500555553941110508775409976659231 GT 1 -765455246582553124200449968630077146361.5815372817742894831712782808684986 0.6555170469181494708380828259439254 0.0588540368323991093764292536354834 1.0606570364762083040515882853761875 GT 1 -2145279762771551846650708358.3606578383663710786053780205225297 1.2993767262696619874994260785532568 0.0820227672773817847840902092675426 1.0855826896249489545562213483840793 GT 1 -795935559832347123636480351.8599245276350008032927199601363357 0.1063206828013285047055258511620387 0.0148393478633347730132635653295544 1.0149505524932776146330657130233831 GT 1 -352643767.2083167614599746986160795594411137 0.6238485784750826192209057617621675 0.0357311791518059454847245294382043 1.0363851634447277826143554958276690 GT 1 -5787177985.4754028585891223987451799886887328 0.3131860630358437505049710037147045 0.0446806210297054545608369520440246 1.0457095661689203126230383300765776 GT 1 -1218060975739912335346836305598734797077.4961450731312290127089531336217689 2.8929716026259677135833710389900499 0.0924726444089150161293993782534667 1.0970315693954274711862207616892950 LT 1 -33.8871417990336691615180940833033443 0.8093862249602792803464079809929347 0.0496545596709437430484601760504495 1.0509297390827831538372106530512783 GT 1 -120448513.2217765700796536012730120872096172 1.1841293642268368253192078505114736 0.0041893613814353071814211813707957 1.0041981613419033507429709954966302 GT 1 -2237441770413013.9561760809752901184230838678727709 0.3266743741080811031300587076803370 0.0839205200144629576152365079977629 1.0876521495290163764505728418501652 GT 1 -7685992067127954024.7430305094567645840499476371936125 1.4006028126486658819945836947726545 0.0080409201861781434810801145028877 1.0080734227357562284885890299575711 GT 1 -1446325688098476706326.9896659130415949151665476133622542 0.6171259322769232493222928967233221 0.0982928139581598330109446490206220 1.1034654390704803632238163762878467 GT 1 -1412155296370759194701466090068612121404237.7060431450920368462116367559411847 1.0063892593475384602944094299689142 0.0747416321350770292043783607140051 1.0776822638606064717273170845510876 GT 1 -134262274.8402547881514198890699428341498558 0.7888556823562957488112497681143316 0.0924913664841941948277765859620176 1.0970521993723449593213859929106807 GT 1 -2896595514990874990345376141912.2678749791450425793418315521271542 0.0556680872443254129861450568832880 0.0549927182548106872880721835337844 1.0565626459676170184627890044191831 GT 1 -571852464740289045254963305.6334905515904590641195974751017319 0.4333058375049454991410893448688349 0.0840294541344294687797581253786659 1.0877710699935864240603518917106664 GT 1 -487581556894488263.2383959063912766916505537352347194 0.3465646251265265034137817294341405 0.0811974546342241545309235706958680 1.0846840378556460660101449502573836 GT 1 -56394061181792857146201187.2153317621784494581099571020776077 0.1387963588868703826462220008339320 0.0677757974780619597417830267346009 1.0701819325807622372965220031466076 GT 1 -702879.6616181677808412811094203267561903 0.4241052855494335505470409344707531 0.0114309405693156854139250845094196 1.0114967759582613842259853030926169 GT 1 -211838809575798181723744649165103143.6565558480304601735720965558703191 0.7306770557504859253559535759255104 0.0317132724080270751711948107915371 1.0322270293758979418576855617290231 GT 1 -35197809845857333227.6572853898934062937592337770903807 0.1218010345090265652947448269848086 0.0591052045058481082830128818843879 1.0609239463970313922281228344771866 GT 1 -102647005739309729619349.7968742413971342847751872490782573 1.3117633416428375533706165934137488 0.0626242739341700573860884765174608 1.0646710887873885068030716442333711 GT 1 -777.7868884998976026980047510921393027 0.3716868302231899571237585525612286 0.0037647650537285965794670056883699 1.0037718696186340987303164807846451 GT 1 -141369518.9863565085295031366450843531483623 0.3414141371235582351919797156466641 0.0203381420716908649735037906394339 1.0205478097888246531966608392948592 GT 1 -1495250876948926072694926554085604114721.9212729424598879318797952771962956 0.8285779272947022440105631657335754 0.0465567265083617306382437344388843 1.0476753486410253755588387598080556 GT 1 -301979216489631994714608196308263903270895.4302627282533324610252565984148902 3.3741951519167999470808954007512721 0.0125875313359484674015568100073900 1.0126674254631002232873640400400420 GT 1 -643285777159922.0605371381423858839743523506632689 0.0158373494010463609709111619968209 0.0875654564629614985770693000780050 1.0916389292085278622593455051378541 GT 1 -2843434686356781528801449847630182573336.0775258294583931611573243398817420 1.9290684953366427877033583675898663 0.0716427220679428186672638767742941 1.0743386225169488222623777380873198 GT 1 -12536.7059048009628286626054898271655667 2.0135700309593226996670771431724910 0.0905695551484956032772283261861475 1.0949367601974506416877264848835240 GT 1 -61100114242732818444455450169129051.0911094983980833824863216963981405 0.5408426270475162957809497061847292 0.0604781748527471904415417024407677 1.0623842297999836035110895393962247 GT 1 -17192277422273216532121402311084565.9638844390774460147432037454085954 0.0880722549181777516837311759887878 0.0442656109782980639997055062257388 1.0452752402855963944486492811248576 GT 1 -15.6335365022738657175410352808054175 0.3427659022658398977008960041096428 0.0063443213186813860750835013496167 1.0063645320527870187603329821568338 GT 1 -10142201222075652.7007021107596553321817324828757724 0.1397637351591740268512857905206196 0.0875957831826081327768474551306932 1.0916721669063544208259802791432865 GT 1 -9051959888803963.5580304402021641119538768196481624 0.2169053048687741771912695561175192 0.0589795255176774696041918947403849 1.0607903814163305890605288450785213 GT 1 -42518.0105694276184885756423282930858856 1.3939138730854240798987007019479647 0.0205493847817850767677401797483991 1.0207634612267164232869019845152879 GT 1 -8273748519689656736089108816225659035425868.7275290271727617019227112500767911 0.2936544506350327852299821593398321 0.0806048137135747980424487274445007 1.0840392313356744885136480940577384 GT 1 -67433427455664194978072772292.0062295655814010967829774917433281 1.3069741045221020410051464163285339 0.0007371625806373663038938921671611 1.0007374344185732249940111852682513 GT 1 -120159779364175113023901718529.3563446883174804357447074561758339 0.0039233107431509059863131528207770 0.0942284809486305494989601479506668 1.0989681912210318047193663911739284 GT 1 -4091908011420.1272588312705824102918817986358186 2.0283262082141988702394927225309232 0.0105517055786779505576928999259773 1.0106077695531023707263281393536215 GT 1 -83621625784582920680.7089871711971414676617912108737572 0.2541991892366527779070515108891028 0.0116605641947260581164449867635881 1.0117290817296174030447615803037994 GT 1 -39038601802459715598520808805197005.9143275885740164740294833651197846 0.0474282718810714951598481174108156 0.0003885123814248358376904149171930 1.0003885878719133888600928303703009 GT 1 -544030682668632058538618436470954048.2788427634088176368250506732556835 0.8455471925713175512182530048063868 0.0914979644701164445465284865165872 1.0959581506091987751834681649378941 GT 1 -164495834246168571295.5956709711538409059015544740075103 0.5093768978176735281649858624285656 0.0862195260814268700568568817877870 1.0901649180845773583056217782312529 GT 1 -47125839532.6342081631600686228910204812907109 0.3101033819350050665847718085348231 0.0895432461160597385501669663873550 1.0938088780496473508998127877881682 GT 1 -43550.1080505528776828320983117756772445 2.2414914056381465712960219560969674 0.0667955451120921775517263783510861 1.0691309650701016067806880624531085 GT 1 -27100367605032.9007309302204253183570711705604610 0.2488936538602066505838054814197435 0.0958985758925729104596461849256605 1.1008137300742266693697815641068997 GT 1 -47861532656641529353988194256822915.9145464713412621433671171635564150 0.1558738134474179567857313113086608 0.0253370275553386973250960889655499 1.0256635370292161759992864057424501 GT 1 -260672705460872412483037377857.5794990224295567255235935428244008 1.1508192136879191549778440816040162 0.0160997488850351944082428021767659 1.0162307578863774664844416812946361 GT 1 -126188685560834717402470548806328301416142.1257871683529319805157932542489913 0.7135191306689179329535616582563788 0.0688941987054714390482341055612370 1.0713823655254620767194839606573236 GT 1 -598369682.1775601027063813247127729270733342 0.5901498549438297189876483720468630 0.0733375133758536180170163104700084 1.0761658718129899555515495264179374 GT 1 -226633945881338460624289851892869784.6849880837816546336866846391665722 0.2196568220546301983418337222251117 0.0228638236864993088248563707068184 1.0231292545502938718453229476641679 GT 1 -4168071.6125952020922670340663976517452495 0.9924812027366057117525538981654997 0.0084177702177742938579016473257824 1.0084533997337720749590668291873036 GT 1 -81441.9616066633785934878427270000881945 1.2582134639251091643516929948457992 0.0378259798447588501376940762618752 1.0385599505435339526631018952711480 GT 1 -411140279168705350070664993917757491468.3932436167525744403789282528724097 4.1202934808479490727450643097275019 0.0833110123202707559118829688786027 1.0869870270900227115886698173378930 LT 1 -359545208284131756247442616219.3844138094037624395288529078377516 0.6796322887176346342894310514082343 0.0713764899438278707587585764296711 1.0740518859737803192039368188617294 GT 1 -152804244771641.7057424522035854429152785277984002 0.5561604176362847607547458296973744 0.0294583074740046845341878893442412 1.0299009174545055801377164560448590 GT 1 -27750523497068395580855473012.5451661395495507958660783235079503 2.1986577961801325106299788476727498 0.0836061221803117547867190713210295 1.0873090091107429368742047522935582 GT 1 -845409352021104013032406474351001198.9791997708910430384113096544209540 2.7184119994727663391966196709781327 0.0670086740544554828523285430392125 1.0717647365872050498215650504441360 LT 2 -79772369731212383978998987679.2817210275564732973347829961717417 0.5163681415018811943163511581249518 0.0432290027556282177357469805411086 1.0441912084897898416485308244435665 GT 1 -92568850228034162024849218.1890816105881950434171862416190160 3.1020767594172835149962011662846631 0.0845536615025916021896917563755470 1.0883435310066453977697388077280180 LT 1 -32470098513016235653.8661810959367284454771791640577324 1.0973598577961538777703592377501868 0.0135244407232019216506744486550574 1.0136167290146202656951172026142877 GT 1 -25725939850879453826484659.4119310876794322964275297920532555 3.4032260772284551777765582715397915 0.0159535670432757877712841523588152 1.0160821950790499633940998738110918 GT 1 -48967463462965547158251177738643953282.3684843255567638027041787674748204 1.7808361404481759435362179880784517 0.0852836414760324719243824864268960 1.0891412524478481202466732256585972 GT 1 -13589512018923924831261903432.6228507586518360303919828570134072 1.2963042321864048086144074069697401 0.0625821772416240345408967756711238 1.0646261807039576682439041992870470 GT 1 -2601289991922482103087295338213912829612509.8627830979198336076828295998252302 0.1740355016366364704222848511953169 0.0789585773373580110500629908854518 1.0822502679915833792574413555720041 GT 1 -4522616774037540444979024700592105257954301.7066779860407915856802839507639399 2.7120331791506637678429699117038416 0.0377699112651925381181833162727452 1.0385016794357939923253728185028362 GT 1 -115896.9715899311695647058770419083834364 0.6018360280519207950651839690151315 0.0099392125138444970494141037036498 1.0099889362373292786564425410441668 GT 1 -38130101998912639259.2013268436432970241945007019540462 0.8491956203602223261940171304740889 0.0487964855041727854101059482202551 1.0500272388102174713324021123712731 GT 1 -717417637.1603945425111979431502458289832926 1.1963906949671649347595317334975187 0.0194604369093278790190823160713903 1.0196522842457769412687246529660044 GT 1 -139308200449347015460.6523568340158766588724617771349217 0.5202953545957051568749233360784046 0.0058894564354790845738877417653425 1.0059068676795309708348751301719856 GT 1 -4606863.8630037675842285663413792861395925 0.2432800507963308838307991439191165 0.0099839728006963398128547828665635 1.0100341468943376303696337961643101 GT 1 -35218186216703497260636740051244545556.6578609024787072010081298156435589 1.4650100345817294490492367583742292 0.0280695656107129896039047865980297 1.0284710466412677188009444614523516 GT 1 -11069585859734498550969628965.2231935194079289798738259221717857 2.0217141319560183693648783775827308 0.0785361005944501585618716346627673 1.0817916785424764614128731856387766 GT 1 -2065319014992652367613.9893227856065850371704546531746952 0.3945216591503543527041830587194036 0.0900999450727752786040316633495811 1.0944205152532725028044487915326721 GT 1 -68695917235403215872480986493603150621920.9531672963260934703743516991432968 0.9047858083247051657471248185701777 0.0684467154935935573034260697862546 1.0709018876710894300217500882206926 GT 1 -20361.7308921437860011026160942781886211 1.2544269563510292221610054798489838 0.0901849480233577364632099221408994 1.0945139397133121971883795134809883 GT 1 -187300780405806.5508418599115816407533107759211116 0.8108337785696974894464355950585757 0.0975797387927656794321102319781893 1.1026749459114592372334136599340202 GT 1 -1488997507310428268092019834273727307787494.8564430719133757313909241558848124 0.8384442590881300196177735200520367 0.0075740822034031194686938482711685 1.0076029112251878543866745702614382 GT 1 -10183829148915728984540977.1808223113366432607395324081881023 2.4969429838590432989131410169098261 0.0874334284885772315879529394393035 1.0956798391833139722949979762872999 LT 2 -15.6995583405248843108034850209019422 0.3312408014687250731729415420262210 0.0183579057473394678269991738577800 1.0185285031994166391675369181612084 GT 1 -177699757550657852223454603877233207131.0559563138904513621888795250326402 1.4949279650153446950225855961873058 0.0710517277791160205016665136029320 1.0737022228586110627179328383285105 GT 1 -7632272436631.1568231921541199325025654513874919 0.3674486602528414078122708069409927 0.0123024227420820023864240534214626 1.0123787239839746283266697837282742 GT 1 -1143866311392901987817.0824275367734071460382373297376224 0.7207256596986146367177001977245243 0.0940141442941570557646006978664218 1.0987315848647285578377518858062814 GT 1 -10804139285.1041778829483017470007419942363316 1.4983635684576451212176390093069451 0.0327895620801378871070396445615870 1.0333391878458013885572563788508184 GT 1 -37944705592727140512743.4406393187432344570205451869910375 0.2343905031395365851446780595306289 0.0825073597942198422258179017816486 1.0861107206596662845845065818714375 GT 1 -544844876778328881.0368048202286202308017265329620032 1.5050476516239184773116526322514348 0.0971041595728004758735557517943001 1.1021480805824059366765519161654918 GT 1 -40671047892645022239398.1876454425101813770313493637122331 0.4515403658648447817278159590770518 0.0725473053152904553744937820943803 1.0753134888365994725478964447544803 GT 1 -2413.2282525767404074670261727138816718 1.2560550416691498834928536538372563 0.0839194693807613622899233781224504 1.0876510026491636187889177405221615 GT 1 -238187706633162288120710336.6094272860246576521811084939857263 0.1732058140962103507166245518683182 0.0697944544365681459750866962709179 1.0723497005205628417064267515762047 GT 1 -1037223694719231.3848087236715338548178221262401451 1.8429018033529143338700214049137750 0.0109914601372680724837070799790263 1.0110523125506666568631867516733742 GT 1 -204093758953004184768503160645956157.0555773612384270942434349236291210 2.3664086250529618272318228562072041 0.0793314502733891087589096938785707 1.0826551883609312978542133553208530 GT 1 -437684894787763839863753726931.2235053089961148485924517085967114 0.7864906441478058221469497950398538 0.0039582493283574741150018044598662 1.0039661039310654752473365270446220 GT 1 -2129842582.4189576605724104465200367873318509 0.0659364828399156402080801792696689 0.0518675739213729160482036187566466 1.0532610965264910096859171695211962 GT 1 -420296480543739138768.0376787044419669443956211144243636 2.1380055190327995080896932045213454 0.0031332080744069912594164696939616 1.0031381268478733842408460807856084 GT 1 -1349027120586888555196183.4011681380850737945714756740909482 0.5972076743484287533469661835304951 0.0719067860599807559709330621889060 1.0746231051842485580767540553270555 GT 1 -2518433.1889326712195936492163373535692533 0.2676109153721941390514624527625771 0.0762003406480843916584079185939177 1.0792600497322733019985172148890493 GT 1 -17363158500387056722652675.4600050060485492015011325499313225 1.6265014973177465811615416685571371 0.0892034762500435878983136657625616 1.0934357614994887160308364979315693 GT 1 -324532994160162568587056.3250343764084509522060173534640249 0.1413005221237296231316013170451053 0.0567140980591105440066045726117481 1.0583858589051089650357057094456014 GT 1 -24141389083689530664455501774601.6545631342566380503603382262675564 1.7643861972651837009888975468954141 0.0391706404461571673840692560731966 1.0399584512791483465716559476946992 GT 1 -1658119304198470757141334.1615791603303227568559101097458300 1.1680828702334735165641717012379918 0.0911337150804930417781714595626049 1.0955572969237876156273163113045090 GT 1 -118383579248156480968750516624.9967345736014477817929899331505036 0.2181981702476460343087077871200348 0.0283123704809258876175108400231018 1.0287208949792562267555743903410839 GT 1 -285853642079062005853166342761166458651.2733742332237402400300668881178136 1.7734610407305579629188668869106020 0.0870017196270294425274076531412914 1.0910212818796646363662411357287688 GT 1 -1572377283821935419744720598066.3671380566969659390535948063645613 1.5808788743167982763286799399701476 0.0196574031280898808067785465028896 1.0198531797645858911223975939833711 GT 1 -22599784245042509.7262715202725785344685400140411020 0.2901089359004043607372674904711596 0.0468362435579504206675494096864698 1.0479685575164809035517094755542494 GT 1 -152411953.0504967427718365701565673542635565 0.3288461931468795449556033011343149 0.0840588559069082075555325614904696 1.0878031695458109385755559868499410 GT 1 -84178588281156.9269248986185005830570044254555865 1.9489372315235473902143124391858846 0.0043106724248889634899001941819437 1.0043199901600434388717851041602695 GT 1 -1091408821861973371460196354.0356034842523615468971225414638760 3.1121873073946292352652360603459315 0.0022838642612508567986159652619326 1.0022864762569530162403519447519570 GT 1 -2055226805901.8460418420907850047301271218144523 1.1945293747591492373726033095915686 0.0734860791138012059069675671829303 1.0763262081281553886890996042110956 GT 1 -5.2215336290428640751037730281041284 0.9254026216648788203444324937698712 0.0698167471054864162593604743309517 1.0723736661227399945686561996039844 GT 1 -71851580708939563618755163598148244964.9456567747203419644091725168906866 0.0991596158515350351519460236618858 0.0549643808591571834770439501720725 1.0565326599861958106601160556820706 GT 1 -3448136821.6982271418007977054547412815100631 0.9110965887800398017168301246750448 0.0144963924680639362672372523008929 1.0146024917852696217381365786407283 GT 1 -196831067.4205768642047514971791198516170833 1.7821313132908537148420153858699517 0.0398591444862150920396311468547406 1.0406752807897149011046142727453054 GT 1 -4866514646813989054517377493935279.5045624113580531523779512792988513 1.7341937400674014067042631983211665 0.0692335405185874768752202519722969 1.0717468822799380770956514478605519 GT 1 -4179046273400741835.5823747058866977848707119333447870 1.5084991308559953536337344289789034 0.0001932338755787262985261049782515 1.0001932525476494850218610467055173 GT 1 -331838098425586481549130862836659743038078.9532686906332753311589908392120694 0.4521070605682361941000226661790922 0.0940224754813522522065352691789764 1.0987407806214267124875318044588790 GT 1 -1896362224353129162243.2516628137629924019182450335050941 0.7415559217023293066014392972199848 0.0058495381105460522887094277655027 1.0058667136707475200552491247002647 GT 1 -190674686690233069159049877292973941.3436227220141798448967259046392177 1.5360390807710109101806015110937673 0.0560356379099493723680251554514629 1.0576668655725133827655342003790434 GT 1 -5723376133308.0632422039383377179955265218331489 0.7788276967665304969145422801810545 0.0854947197335808305561393567641234 1.0893720372297565639778794463230311 GT 1 -885176882868305372468279514140509798.0869460865827119114294447840347441 2.0181796312948436170525706056407158 0.0369618053927299232386889978977536 1.0376622058653709571660916192219207 GT 1 -36163904361267922325135886439707817262.5292447519078936279610248913696102 0.0306676035083499883798262643886173 0.0697489188982113031621201274874813 1.0723007495934481841093032382859138 GT 1 -2838119.6522639472633510488815763710383396 1.8187201364675166275824071459336441 0.0958108757281728254098474128437066 1.1007167322056624049533147536875117 GT 1 -159082.9195242807553989938050206861000724 0.0505041190664389153789431793760791 0.0500759996107198016351013467839527 1.0513732971779197964465817584163957 GT 1 -169.1564383766859539293608856527126469 0.3833944600800257850769022526633791 0.0337963870338016078737993778359629 1.0343806875123758581216487831219854 GT 1 -5979791270690984807036867340435.9141407757714900838837216024766750 1.6200596823727750515048910593881985 0.0106504646270189306209636425114706 1.0107075867723614445411644819679169 GT 1 -692982787099361935563048709836468242.3419423799191913606064891504856071 0.5948681369700902911200983510768008 0.0144334629469695011421507452496372 1.0145386386329211879823204448980191 GT 1 -4285976569349061681117968074553.2741183123451632264143533350584313 0.2470716866338460902108250399765217 0.0586674306365146779852390707111856 1.0604587806201431099571003853177569 GT 1 -8936807530668888638848701188972.0000908504025248526719531598669048 0.8836726013289298971605342453826348 0.0861651341413851182603606020163375 1.0901053957782429830123161961924138 GT 1 -32175415703595372270427967253613316031.5539059160973193584965265507650201 1.1691789585907754714254769071225126 0.0045649326093446724659131003690700 1.0045753837321181852303349825787774 GT 1 -19115812884270288738776590676447610.0802428463919478453389360975413911 0.5899946869641780843449139326685293 0.0762103185639338244255780015938101 1.0792708507426810306672002400461249 GT 1 -2781656722350303590769.8346207191723389189963096181551948 0.5717988632730845957510804558436524 0.0545825999498106892559915063859995 1.0561287558313069123368161022889222 GT 1 -23391776160719407254010932276097770559584.2815917411585603710929536073711361 0.5541214604675935434174587083599157 0.0562065398931117020980287888481034 1.0578479290348068044306210484514799 GT 1 -114253849901575179375616489762449.5942806181393176948679629076258876 1.9721709080092829406144572737465520 0.0133177245286535002344406948309168 1.0134072007227985627023211414223226 GT 1 -138655277861991636943293735933224788.5999610804505461624691606267486511 0.4512745556653738448160956487974464 0.0583704043963202914885809994925904 1.0601432923451429357056534023902027 GT 1 -19120799120004037625850.1548661165070237676781407921549738 0.8925809579956110359971318894167761 0.0692146338252846729396719254070385 1.0717265694494889005101346646621598 GT 1 -9.5715102047275395315988966452494690 0.8324719961884044423009231342965490 0.0311701315667997760748662003689040 1.0316662568786976661645434125077827 GT 1 -5251708353928260210985380817684.9499664008132883332127387283968018 1.9050464677918071602169011609302983 0.0663287263130756621039345129505265 1.0686308580714397964203469715580229 GT 1 -3235275468946378046251039118366371710128.9931921671752892772182111288584563 0.7494481008503005370842613092488622 0.0851746903251922132545853469957716 1.0890221503220394025624454664841261 GT 1 -23697244577716365604116962089490.8918391502390928002249326024103352 0.1164352514723847263467301270226737 0.0310470023040186355977455563951841 1.0315391742575236966142051813964447 GT 1 -10109436608906428740442048945295.2383707370693994237081959150095542 1.2864353308823248829701275008909390 0.0226190131413894407392377543574005 1.0228787471093740022603566851744852 GT 1 -1519876915831271808356326628645114547.8425879424317326794966804720369963 0.1893855568587829779337547478428343 0.0508091757767249902391541971564803 1.0521454213201026332251965539319376 GT 1 -53.6937099789909329950043592658788326 2.4303573087960799601201568846506385 0.0243707874079888418190952448258609 1.0246726698824171860687359226317481 GT 1 -3.5137369116666578700430201218286785 0.3852376179572480311347347908190722 0.0638123501792868044174317264388574 1.0659393420204054491977085789196995 GT 1 -2998566312078783826968916999.2435743995968798873251680849621729 0.0328631158596441360316470466626692 0.0293427359605514081709222365800644 1.0297818451531333329504360489525603 GT 1 -7800768576270346383862082.1501310907648308911331626888311452 2.0547183937327853491298258139804193 0.0435747640251439439893885281802124 1.0445526573231886743383202188712764 GT 1 -3907891019213958971510009212.4065602202079214359141009839058989 0.1501789109126647474389863417984133 0.0393002376312694231772853157027438 1.0400933409186861457473151170506996 GT 1 -6155202890837167652280.9285113966131837767295566705821282 0.1213015806435296334584438427133836 0.0230901343341556657105145179864969 1.0233608874226073459077768788481408 GT 1 -13086.3824698241814129034820090266947794 0.7848401860999444496917037436177741 0.0762521395909669251005695509655760 1.0793161229237252954235332590690072 GT 1 -14807814446884654708627588863931307938.1490079651680691954355175682591169 0.6634111491448087012609152338980639 0.0907506035933525217194287930154069 1.0951358589517753592324637093201939 GT 1 -106921564918397486536177518121.6618554392902752154727566112773137 0.6741030158517591463235187278411986 0.0500120933384235874503635453155639 1.0513060242984950716774327786959112 GT 1 -150188.1624318052468593469117740071759166 0.7703430379219938528646896300445968 0.0633223853520942180642017268828996 1.0654161171545638510774207808325514 GT 1 -1340155787329785349.1806423907163258220025578775018994 0.7542273433168135176770752138437352 0.0919904884148123592420764597707980 1.0965004251216261728218342311231064 GT 1 -24764319039560580937072.0449358408465770134231268894676230 0.7378526648884613203705578517426336 0.0613195348855274443203159688174819 1.0632801504294288446140254543764833 GT 1 -5747612144559074748653.2596706561027262391344937256142410 1.3185163483716386143131884923668753 0.0109475688979680389350731542749151 1.0110079345057514592242652069884753 GT 1 -36845080885128931942770715652306.7373439978982735660505885922995501 3.1727289592683236124261544518945269 0.0948119055393897378830323573522588 1.0996125176947869411056771100213337 LT 1 -105097344869.4035999806540228586461743281444916 1.2092121225115032998780234789467249 0.0476227119360922289648912821358418 1.0487940117097306171603631158478843 GT 1 -3450749419313492755560181057199517803284.5691438605390988186201600834878235 0.9200125704194742657540839110453700 0.0322695803060756611390114242259456 1.0328017225434037791397343783075268 GT 1 -831.6178824726354615243206201905602708 0.3326591143750125857215556471253125 0.0894920796960501361603647768188444 1.0937526810011835884310722306687529 GT 1 -1082408906918060740911094335791742444.2215794515654320390031301451197913 1.8650282842983885072580893409557756 0.0987678629782719966075557387605339 1.1039924108049460039051726399800775 GT 1 -38042872687807559192278488008177.3939543386392987357478350037181164 0.0269513994923107312647307345971085 0.0018020020326682216229185093525249 1.0018036275914647962499576440361844 GT 1 -1657398.9082259009164708413410099860676833 0.5094652020748513521693906055573891 0.0584595565385220082734998724676934 1.0602379753959762814127753408988719 GT 1 -51621.9799554683379356533472080688957761 0.2975437409702286261934598479706468 0.0733842222763714364895841832924425 1.0762162785990903113551320269710380 GT 1 -592433.7663513112167488469274984503104834 1.1261393062260838993712675719534522 0.0557478582239539743482159096633900 1.0573620491622824792835783240566027 GT 1 -47629469567031574736285203940405780.1270191004753586791725716269691983 0.4215576445470227099039665948691162 0.0020150754029532121686878302137355 1.0020171083989455915161978049233282 GT 1 -148981337302189978082841975.3557179446791218286582200775601209 0.1602927460890247561582302117819353 0.0518751717097715529418965454069484 1.0532691099839279399681895836595611 GT 1 -87398897187670312392659366845874887.4462971974628429580322505272927475 1.0182208638270885480386946270577903 0.0075160568700132927841431055133444 1.0075444447582226806793127711534634 GT 1 -339924199177635835126617639431529140528.2101038823278495479031454575647603 0.2101951871697673938401402304488052 0.0024358115257328792328246343672744 1.0024387829408127738685447859900540 GT 1 -143819009761720668184687251767988470095.1409009600368443362349945256298821 0.2781499522910849985788498904470613 0.0117752713594503383750491218031685 1.0118451489607413824938962460461862 GT 1 -331.1585186010304249747081281598824067 1.8497816732258848658343479857225935 0.0943284284561043770048444889085177 1.0990785424742333705931210421044277 GT 1 -75231587875055163950250867314574435942.7192699618716717657164418804948822 0.2742019423431519213774168586672526 0.0429160903149908950746389533268615 1.0438642114512028378281588482443466 GT 1 -210.6608284203335159096596330772303721 0.4381255104027419679359896719769116 0.0544975624492769730049010912621285 1.0560388128322436263453913711848004 GT 1 -70180930389362854311172522.4808636076232040630750225655231419 0.2147668788489178463849735917716083 0.0818311607305291918907818992119645 1.0853739845001543782719962185743430 GT 1 -11832558307114305022525751970579157.7170263169234454025875691754885645 0.3084293172869871625940364303814423 0.0267472413734220169719101271587748 1.0271114580475252958739438897252781 GT 1 -1539549063876599970973794639460929553.6558287963944755184615560186818226 2.9116444100818550792592885718525436 0.0950502172243174697411615508391249 1.0998758254674174436339850654172118 LT 1 -15970835061493087564149808686.4538077056602101419688133597898695 1.5975613278562056359424922984530993 0.0291905314288575869589786426532476 1.0296250518077217658343308207898111 GT 1 -61562.3769666974815519959524619718913563 3.3096774786114463843465580303513140 0.0667025785641371266429226674053461 1.0690313492602155388654006078492306 LT 1 -3731934358584318700875833279787576.2833909665316855676015269892723294 1.1916941538964910414973068811554709 0.0551750474048524848358894749112644 1.0567556039956307166629342958122501 GT 1 -189328254407076112739814368200871814281746.9341857700509517062057102809798281 4.8400984132764045512671981368476176 0.0370398736948739990053804847080992 1.0377432737472472489110835918247144 LT 1 -146293428569437316787502055256.8000013425283402217278032174192370 1.5049385904528970706315994856148368 0.0811200801373517198435537805515578 1.0845998290781426689026909098454722 GT 1 -52086606816353436070924604085311382684.2467404739994920093244372418484286 1.2195041217935865131800498430117976 0.0001295266858308228143038860579186 1.0001295350751364277601768611737970 GT 1 -34925708.6295529670682415668393441052276975 0.8753733784608429529801020345790338 0.0560119079117803284684081537788376 1.0576417272295241023336150307525860 GT 1 -1534343351743998835223.2917750595057180316103086073851998 1.9736461040650314964547452200220335 0.0429030634845600026903253860012201 1.0438506005842286424869909107066238 GT 1 -2885900614298662206548578251993421624.7995040128158234951460024645612817 0.0772627698220066057778000940048652 0.0880114376561686131636848358746094 1.0921278302761068607169521048632230 GT 1 -110157889940058210911258039241021999660000.9710073601515644230697144996586469 1.1922498569052138510090751997378149 0.0331904469505667464752034228992927 1.0337537490996065441091799540660859 GT 1 -19689634095781282497565125044644221.1357568105294417534867062410562489 1.1810220893376268010911167127988279 0.0638771775608710785398356140006857 1.0660085905585839860373851632565126 GT 1 -95787722780902960717.3344904889788401372353291253843989 0.5647132023447587059353534212551278 0.0265683234546446436722317702239602 1.0269276399452704631729033797492563 GT 1 -944.7440288373849883278765171132988970 5.5548807067510305230619156439383101 0.0987158355405287523004147278734596 1.1039346832407459579750487222966022 LT 1 -446354.5570003376059272073328214251942643 0.8413336067031856576262347449728842 0.0920165015457066296148875783343767 1.0965290740544714419154291796280162 GT 1 -22240062124139761.9202847918807670219373354727725573 3.0022816822061182182865284033396114 0.0451273019566986569365430691627466 1.0461772478649236586336655760164228 GT 1 -2136517579533072998574358344741298177116624.8820675316070799376939181291818141 0.7128221502514840783294324398170872 0.0911016265672977959634169685176062 1.0955219914588572247423793544470249 GT 1 -1679545512309006016.9666082678669520836984046121718440 0.1326365589875500775818240433886507 0.0154017408680510976636615355848676 1.0155215797563408307579102090082187 GT 1 -14706170243838592818.0207381884050599481716621753960169 0.7167004349521979893728983324309518 0.0255324163667060426186181470651541 1.0258640252021736473084370575997271 GT 1 -5756663202791734974.7203563182940903648279296564975791 1.2100941624299817365534971838561466 0.0548228276141848939827363449328794 1.0563828850551706339629901333176341 GT 1 -9833735316085357.9227919829187111516755283928459309 0.3997257828824721447732880904983218 0.0712442724608563699704278708500977 1.0739095160360545086124742579257548 GT 1 -188456145796495101437130631.0369407723915882555045459518818962 1.0081630566987144098945846902352561 0.0588475570514150413390763827055096 1.0606501515094431633429405953920923 GT 1 -54374883152361956657968916388090867.7669139612487290866686982801095876 0.8186225207577548931560063374170773 0.0053283393186506548850883458713137 1.0053425855469581103304317759264139 GT 1 -13022395541301535625842974318965457901.6602174057669936314913335091211002 0.6726467729536477558583979262676129 0.0926678948167580322949291734400926 1.0972467380217772071882833056801736 GT 1 -35902709723446552066175752834.7810029592790207128966665868703801 1.7257067163229773160885366187109051 0.0053768379714351504385227695022242 1.0053913451900642409097354219671672 GT 1 -129526002.3677523771778408843297003932189212 1.4713486484649618396894200193060521 0.0362144838071006520506934988399843 1.0368865027027896408754997990853650 GT 1 -78809331144312849654.1940055323150463527073312246507548 0.0476022752294269852319599062334025 0.0150199498613516391549227577024337 1.0151338916815032821673085218148639 GT 1 -9.1489232913137594695824292639683886 0.3531695469859574193142447231058741 0.0048556582620205090730888394339567 1.0048674852714084361266421198720022 GT 1 -1063475249701916.2577029599285201152051858140248589 0.0356158913884085643997732932227069 0.0784708586421639886898522908080051 1.0817208785439193329707834760002829 GT 1 -43748354.5243507795825559949905416597613775 0.4483540553321462378471702484144731 0.0996078968822349628652209222846682 1.1049249404036520951295686983989829 GT 1 -57708765566151114.5860078858335148086986361545741266 0.4002783547367590388668580080101860 0.0130650045634962710163780850035160 1.0131511024708591404411147152933453 GT 1 -7408148393539452.2937342016547868485127199539370090 0.6252185935839821449344402452141953 0.0932770243244834131571604870036780 1.0979183047642051571642736535781824 GT 1 -2349926675013447803508711824137919.7250421750800945559273338182408468 1.8716456729022605985432841759242970 0.0508287268407060122386552600046713 1.0521660191438883798280206161670865 GT 1 -690671201087143093864802.0462511105289771179504523095934793 1.7550950773010254073406590391781927 0.0875274360870273692472060936517641 1.0915972609221976531302400252746154 GT 1 -13494017315466247621406201772856093.5715618600504994549538456479721785 0.2246549355757186473817435018374197 0.0209888557008119914420812388451964 1.0212122531668884026014504937289379 GT 1 -69.6365734363151303526283022223439962 0.0001611024173501721193968697761701 0.0221076852716742991610855556112888 1.0223557226493596619793613538684783 GT 1 -169954349904644933542147894770234929725405.3660452971916720727207094631684140 0.0877834355865499913154490801358809 0.0589265545038650432684870922863908 1.0607340919684299027790071680392530 GT 1 -1888561.6602030448385392438059142284626309 0.4177969414951137283840430515855548 0.0237154364759475085750696999572866 1.0240011740769308093352523805067632 GT 1 -36731.8517808175890872857360394977294285 0.0915050863831562257712330181942348 0.0805316343738549715007319817433909 1.0839596394163258823635347802809085 GT 1 -2797638503772584251424019675360923001312.8891927833865150239496915698146164 0.5270848561817367193062261585270163 0.0846481934957751313797294743856607 1.0884467996204198076096676113643347 GT 1 -19049909659.6760053257444635088677706937794762 1.4725949380801150749337784315903570 0.0509913294675083626689426160284743 1.0523373439202779477290056375044254 GT 1 -493752042444.6019033113949821081118946818818488 0.4517469085312251480936265613445210 0.0638001701277789300642005461769895 1.0659263318378015325677806931590268 GT 1 -2116638150791112448816033021545936847.8950258729838987377320421942595777 0.6898766455182575982524484500951895 0.0354439775856278283997279625096397 1.0360873639122260646446114799998780 GT 1 -305332734689.0715864475759360700679091312191503 2.6583745553148432739201603803762816 0.0154271071091269058536219608349699 1.0155473431249044560256320665871870 GT 1 -2338472578062700822136578902612650879428.2815929102561954322427329199653717 0.5935082719045263365087824917295402 0.0998681719870211803856863659281914 1.1052140508143487010489789537731839 GT 1 -558697899054400858694.5514406225850845101202148567406401 0.5830000340827674442495716646818925 0.0869495583516733457938960093515257 1.0909641516675939031958838859777852 GT 1 -2991046481871170243866042883292.2612314217341861893917915209954266 1.6738320260103782796383355116826393 0.0140756096204981448242426876085362 1.0141756105048967849388443517183533 GT 1 -185615312673028473680.2643957324420586615000683730205504 4.0319431190994038154339563691504968 0.0745733026863209844070259624177800 1.0775003534400952561958395846551442 LT 1 -1.7593111028607402278578870787916278 2.3338041664067347243000153675064486 0.0759506257719565510086317489448345 1.0789897734563329718869217280504534 GT 1 -608979613414462700106.6866307237803694200890651144395974 0.1761745821051349822100126411445155 0.0650740277429163095997792868203936 1.0672879268844761003636438065146060 GT 1 -3383479.8171577781742589765766260804863215 0.0058920582596798111027593151019677 0.0947424063426976920050079284188480 1.0995357419072752660554395842135461 GT 1 -4028621049230125686190841915.7477599494119969847234733675377296 0.3900246421403546640120567517454321 0.0345702758396529165217145645141161 1.0351819667535062704138156588154039 GT 1 -3171120408958100621864468079.0656239962428478773651121083317575 2.6694059017011870366609278900743021 0.0855751931846100966625340344323666 1.0894600378063227248302698074067204 LT 1 -35832938860625735829.6869517154536355756179784024425028 0.7269697082024321731694296848046335 0.0293828697906959708309209160088258 1.0298231930741373719706650253027735 GT 1 -281637620483056592756175610628157007421.7349591691311241135743755840486800 0.0534965127631154082018250052625837 0.0354493212989672011150141239669159 1.0360929040032291145645289901089575 GT 1 -31320581659412327.1470958643462655710114694699992463 0.9563092071869696171132948198598885 0.0808265462109636526926162293503886 1.0842804325545256384603501799162381 GT 1 -2730345208209398088992025927.6424123992055396036950132413430312 1.9696712974536691002539317535987832 0.0977144324228977081680819291731498 1.1028242152585559389350763816686214 GT 1 -144195441697611.8808114860499996184405492741903103 0.2557282341791236742725328850603708 0.0141073785383170618158490058775494 1.0142078334927611624908458404686971 GT 1 -100747604703561601949.7129075006436784907829232642763508 0.1330353863702406606286064115542001 0.0097602806461021494823562858843369 1.0098082244033311021516763719416916 GT 1 -102433814593754017616097649861612.5233086410612216212688719886191333 0.1131198186339819991433071188076878 0.0489455509129605294236394144270325 1.0501839635152223614830353495839346 GT 1 -10755366337887428351219946061.8382917437786383770597612138155029 0.2979348851648216033454853296441134 0.0642506817356529435428295060382181 1.0664076607425105727542539575551757 GT 1 -63498911999624287290519813.4852810309066783353874602176275604 0.6619755917115957430347657130110156 0.0243954429308646444346520748318328 1.0246979416087069545470282800727307 GT 1 -462985642848853.8185151191458262776023375348659331 0.4920988279597340470333871005916171 0.0197128120966393789582897066404089 1.0199097013669756052968324142230278 GT 1 -4551394533624045705303820847794328.3686881156619243373692893075194936 0.4001600735746166842894198295010943 0.0552487143597427604199581429319168 1.0568335759275771009012057025046587 GT 1 -94733340448885838044.2793500178627222127977068358579109 0.6548601826006273569176412125606066 0.0723098597125597728485504684760132 1.0750575025054651604314979386589684 GT 1 -135461456215533204668889181248.3640532394010779746391566644539635 1.0104513757904045378175219749675032 0.0648479815507782116318411404119318 1.0670461763325072696209322929045448 GT 1 -2279210504119465.3838966564271121386519309418124412 0.4784662885463214710257412108182478 0.0300698123111923916986759719883648 1.0305311815296154936375213323839668 GT 1 -57022388662630025708349746092751.3447685151217918819965883232099778 1.9490005856599122169424831035815980 0.0242790258093997040081851896246928 1.0245786205423465834474552537761911 GT 1 -3991723339948887.7559646067390271062557632343583943 1.3006671763088687470141510114852750 0.0671833864775604538709131214185436 1.0695466531645382699753246477580460 GT 1 -121974797565896399114227740169934.5764690522521752496201470832445752 0.5589574521817532833423082025930087 0.0828308810117797195114531287368954 1.0864633973525683334472759701619125 GT 1 -4.8950781535938661733637009553611752 1.4757046029651340515474638051541006 0.0498040068664102268178782695439775 1.0510870071045617982735402999081848 GT 1 -1117829205589.5094649205758950313805585570277443 0.1771670945165710122729210689941972 0.0247270986029337062753445854964985 1.0250379482798844335152437428674149 GT 1 -11744215125.5351445293096809621593773730921230 0.8394813019474982520737694043556402 0.0028596548359700191259286022894885 1.0028637514606795621230148324723081 GT 1 -280087383401562659371.0267398552364217834367392445006837 0.0266732004710504752750615699028443 0.0432938460241923435114725568645579 1.0442589838155078395675486265932785 GT 1 -265103690775799838526282206.0382199273562267686565472375540523 1.2051517954171962342288747016487454 0.0909417557884251179526956084578840 1.0953461118171395302907349267001792 GT 1 -14528127571059632784709483299259879511041935.8379465390602199941055122802905871 1.3814605498409836473734559785021872 0.0669813170001687109992090599909123 1.0693300536838034021767337848498100 GT 1 -143228127402484821298640714063469953937214.6514271095837248542086184074306400 0.2659969230829648997296697972655841 0.0540263872130502208284084379933289 1.0555406037791725158895534464497632 GT 1 -169747880500690546108240168.6797981606774586069485790260407760 0.0818640099067942747907240342344980 0.0919564209121412006505362332486339 1.0964629069423943872464263773414789 GT 1 -3651355329643955843791889084537099909549.7311647209260062865814859337768591 0.8462819992395199917392643830447661 0.0428858338179050829996081432543938 1.0438325987383182257276247260645308 GT 1 -159629910500.5955455774145558741291443098834445 0.0655614426432159802750425638151461 0.0815770041593976320087471831962578 1.0850972147052601025856396218797661 GT 1 -228034488739.0097961348421782394951410914172437 0.4222886902722955645272855426931878 0.0108932897559558035638348102658525 1.0109530560676204173078037102925019 GT 1 -46689364420440031782515093039.3038865583971746511692862781901504 0.2595136450752291812012450465558653 0.0024638641956349580821019791994354 1.0024669045039868669487966594182658 GT 1 -2906733381527136415831878487654004762.4179766671045236066979758273554046 1.2091552573095455771771699105167592 0.0369966394465381034264500433292079 1.0376983775188003882427182148200865 GT 1 -1049451427701022343.3065876455112630397536908417484742 1.0049586838722349104081601816898903 0.0549017177595684784989444872960887 1.0564663545254389090384100050428640 GT 1 -162967625038992976711803102737112601890947.0356446762344938699682210835429936 0.1664152290455854756311739264830027 0.0876260442026077833752839921231966 1.0917053336993998052029480971316949 GT 1 -521628156470589168536960947752295.6509773199813324652110161817897700 0.3350696086548304489438334782428733 0.0055016320181322571317628295731010 1.0055168217333302380695266563235234 GT 1 -8230144.3505589132108574199920787490924538 0.3127142411716721657778806043337526 0.0939506079643876898733779245556345 1.0986614578295347373343480031743689 GT 1 -3483140179.2648884145850287637852066437209962 0.7092128609754135172692189441728776 0.0884804798166359779434692126003460 1.0926422696419708943023003392831360 GT 1 -218475000355705816653016115234429922729225.5434749150378073017933757829142990 1.4312439950671025275926759451029214 0.0108503745349541976357000000055037 1.0109096691513409803770685948161194 GT 1 -1221219345805629213486786047423639506397.1921854522734096199731320823043102 0.9957023151890935966947181472840318 0.0610461337653000398182503989996217 1.0629889317212971320184373875431516 GT 1 -1920148271262070758765882750034980231.3356161685234363741132805332183956 0.2140288397751643747216435927246070 0.0034523569057393339831599382493765 1.0034583300414015049348644255878415 GT 1 -207621833746755091770300.1561574774895729219301832367996363 0.1842964397013691459090732362831621 0.0866750743628969223685033530598564 1.0906635738173232204982320280783754 GT 1 -361670879396565679190208319168941384462.5588182418727076884551158434343507 0.4649690754076228273200873091622223 0.0421272049753980346666550154857733 1.0430402916390418775494296188037810 GT 1 -78.2804044037368022093147967985569890 0.2348236908288948249590264899793942 0.0792346591363320436819720054229001 1.0825500625265032387207764436129533 GT 1 -67892695301704419298259243690.8860404727601444883448629262167033 0.2011766974745626355804271417015319 0.0197262992519149425185555698362411 1.0199234598330899154057385324615235 GT 1 -12852193749186433387662524750069194.1301094431195274294124074168862302 0.7591632411525905920360588669777398 0.0047386904369348133223059609337400 1.0047499536263953854390062575056550 GT 1 -209681050699395628366475837330520411.8855142668983111405478639764791108 0.6662511732749508019748833355320324 0.0132074527737576653210389967844881 1.0132954468217684329116479706122050 GT 1 -1267446365388834088656031673085.2254919230294236538340270599696625 0.4161650434364903895524477738235740 0.0443958818069484556914789920844190 1.0454115540032977591660281830807285 GT 1 -13488924311327216695931821045914024874.4665845326462866784182770942878334 0.5030431579608522106865565720366718 0.0677213787439204407328080852577455 1.0701235591275682072504397338998607 GT 1 -3434555938832848928985892470942255566.3991910845570400018337687784764140 0.0170496841885631324995130569761409 0.0423275843123608275429336384270566 1.0432495055344624703293790158800768 GT 1 -27150077197714601536721686085400594.8379077012333826351684740161565361 0.3588708513214213208488903207666163 0.0058704701465550738724907044312909 1.0058877690916105003913912057520815 GT 1 -42044445.2946949226103176557863701434921365 2.0410072653162087311086860988923852 0.0427679518972010441029758509183636 1.0437094424147928372365373890083605 GT 1 -2605677311283708813052895148436454471.9532505565110359840144947169350620 0.7806961676205985615485857913264765 0.0021299487093771995339020813046037 1.0021322202762499463675773100213680 GT 1 -1031467308924434008108124680305.3228967825573361328165747345645069 0.3874754384009628538888125437443448 0.0092247164359886581677651501906525 1.0092675276167116602785543385910159 GT 1 -311871096647738601275614238046.1497149404669585587681337304563963 1.2492618096764460992635764117255127 0.0022091096567406450542483118216855 1.0022115533390498358621390833772684 GT 1 -94684067696771.7286385398064152444266623488779591 2.7752074474000895020219020342908578 0.0815952312374263550256719463629353 1.0851170609623567868973372727976245 LT 1 -190365524114796606688934568053194.5497811435124620468050877008122177 0.3870468954475661194526594944109642 0.0516543500816172213779443598862578 1.0530362335625023096791267228187838 GT 1 -2088526595862465329409188115490060931995.6891443118043687894189749635212391 1.1103106435695431105628255282352298 0.0671256756842251263977131824129154 1.0694847878339164642740513550188899 GT 1 -5532019560738645036835196273.7792086333794994740187667802196800 0.1585790704204029932262596437640082 0.0370983459606302272794622799893757 1.0378039969687899038983932619674962 GT 1 -1810836511656392936266865597100268711.1939823125047250557417801409869856 0.7283404303115070267457319078273912 0.0344618063174318708211325418559366 1.0350696194469220075897274019400100 GT 1 -8794964867007287235.8337709132565647689637874676003979 1.3468695875567259107097780208764621 0.0186771199781448923376920356537292 1.0188537400098566705827201583829040 GT 1 -44046224166.3882936889948194314934529934060556 0.4569804919723774291050284879617978 0.0420164395734416639575207933128167 1.0429246614648227868200759083191940 GT 1 -42143836572642815069826.8328762465133648051439877419505913 1.4167832706402639552596780187667333 0.0347050101321789894479512381316435 1.0353215353743105091745568169201651 GT 1 -74789914082119738122899559992422953664406.3226104568623470050813054314059906 0.3130288904470984239540377170353454 0.0656580592908730165788823723553522 1.0679128042098819906326308672396077 GT 1 -17491259.9277421437526725413685793755581120 0.0070193606956606316741212319913082 0.0947145817755688189430366270652494 1.0995050057502787581963347164988181 GT 1 -680560772632260585962042464585998301326.4202975229385326414994193459016001 1.5530866769364209587273481586926200 0.0547630806370203772537752174777368 1.0563196745898602117031492270598195 GT 1 -823790934730906175396270757762711777636.9514324666196278174696354307153536 1.9562506627100936360005902538367245 0.0037483102570841772501872623198302 1.0037553527758474287672249268834201 GT 1 -10382399041597864551095026109672477052302135.5271950667967448078272174652437728 1.9389670599315938225975150271555260 0.0597695376957865662495190390976953 1.0616302611039367177299174209052380 GT 1 -14624.2147830379153118198584633265220831 2.6138587189422782589711143137333806 0.0934180478449140778977480807716988 1.0980738478486037695365400056850501 LT 1 -116408422865.5117191471788392129745421414328576 0.7675272780421375513593823542512486 0.0538961299517257101000331086613426 1.0554029167523863764156723525512508 GT 1 -1369787050266365608231771843424061660731.0829875996630472368391374320491854 0.0505869747718127580957643565351964 0.0436711066960604920825874968738875 1.0446533944430550396458549081353319 GT 1 -393337973975314.5813283902554755721281612092587895 1.1189408456669614699964253345211868 0.0896951530930513619510530697777478 1.0939757389690319599018452422148963 GT 1 -249549.0682148520981251402545181921218924 1.5848843275467935502300989671048395 0.0855515019821219158163757081542053 1.0894341298307107500419514062823170 GT 1 -1528078272.4982823574655525066908529823560974 1.1433242214453355469001656834439316 0.0040217792582647343894925485081552 1.0040298883617845343271105620964734 GT 1 -552764728211749181530818.9548748132014888047578492580098202 1.5455243763515657696835549699082896 0.0783981782464932484949481176851294 1.0816420123133984998596058563054659 GT 1 -350861.0945338912007600472646460091344900 1.1675909588173069667983948604960352 0.0684146709944115540947616520986762 1.0708674892651385604643303573189077 GT 1 -17130208311835038037490866579208.1173013401239831389051334042043584 0.1270433616610670474974915116891448 0.0894330303354651261558297257226853 1.0936878298949155457569864061917442 GT 1 -79511150524397831992149983490442.9589020257034262302107674887742866 1.0068612639972297451354701239314020 0.0337618529879215707018370501259695 1.0343449461548882185898429383977721 GT 1 -119269672650559442662663289351645234140.2804364424691149844352909587695182 0.4749243451833646091645670840008880 0.0752912428920094510715079531240352 1.0782764482281916063084206816804431 GT 1 -1176731905185725.8653405610214286835547681403756277 2.8376306047812589148881387469581056 0.0025798984553705995855606643061428 1.0025832321283167952915412645194758 GT 1 -15172714225696.1973218832531747418835498863404475 4.0779501779070126816734324597218234 0.0542959249178344956724016153112207 1.0558255759055942983508990356435621 LT 1 -131812271653130402692833007044362361825.7408158763369275510891628867810363 3.0617099578693273296478528523971730 0.0108562537111602045979279440441262 1.0109156128362261114418964536181777 GT 1 -101.5543715182620887743405925811502028 0.6167497434642400668842853974292634 0.0421236403763180709146696349992126 1.0430365702759695578882914395417041 GT 1 -1419828151426920803688216867746359224040.4322614517249852534077772382938171 1.7248271447322741624737014764983087 0.0739534532629945515997501642314417 1.0768307791446240529978590141379454 GT 1 -4544188544735221686535955992819520.1250824522229951691164965829969648 1.0171867575367953595676492858638598 0.0470367135511358308086306247588648 1.0481789002579809693551092022247908 GT 1 -2128980416582203288634.2520754019232569735991837725353057 0.3447556294701346692316788558165058 0.0143991231789671808198805689236520 1.0145037965715477158040593459986916 GT 1 -1066759533355576315900361567375824383.2024469663732275315561174542584013 0.2189051191622320827700751879977315 0.0531206420353128957404697663348523 1.0545835878240377480148645368767201 GT 1 -2172401.4264019591681060343263875470754420 0.0984058270316426656581991482133115 0.0130236669997655032797102143740383 1.0131092185593163169119559902895954 GT 1 -684229.7193047747745598213754993670430760 0.8643555876933121299930161933900762 0.0104292662390361075448667735167624 1.0104840321477975571984965987811940 GT 1 -42810.7871087315108835592536594370292505 3.1028654733178357932737761196718106 0.0972726404347453632504157530875448 1.1023346985461478233832811205520778 LT 1 -495115214400455708663287263617646.5618124668591154561970949823603034 0.7460356505516964639533481931353978 0.0021238825501943470396931680283908 1.0021261411873578958326006679259282 GT 1 -11990441524123440.7237179959235032055647378731390790 1.7399897567555119018574575656401209 0.0741291618880092901875510499318883 1.0770205377450664950027320050151345 GT 1 -432444431520.1216592796356832627196479248878260 1.4751171558813365779228860721226044 0.0225001321872507982383544923370184 1.0227571223525494496505851364547523 GT 1 -2199566896908109972737753005.2015642513193479682612643894270605 3.5005374888929068344788164660175568 0.0958565435926960740582505102716425 1.1007672404639561379910914574228117 LT 1 -38539638226025682722218978.4155847531474780588927641805716193 0.8690219395419595349214190617501603 0.0846091072031914452997845325088600 1.0884040996903809793501716013303585 GT 1 -476355276336.9765287253417164057463608187579244 0.1666285389139452425744220323444828 0.0940730301562668827546503322964125 1.0987965834245932665338827261013570 GT 1 -43090453493997706353528198789276.6549225533939130577061416528247178 0.3350252487203477072010877014776055 0.0176259032851382898150999123906407 1.0177830892873909492454699507802935 GT 1 -44.6739150471377155041064307220729236 0.1870834934800724269477616835299194 0.0470179641570987534889129214258967 1.0481592256179811845755367184585491 GT 1 -377969.2908353747835468959907340157162141 3.1456154996445904864911285697303507 0.0669267431721302589081328616528308 1.0692715637167345240943558731921870 LT 1 -101650664100.2699003923454935150290201220350098 0.2217469992253196075056685549076074 0.0808777348718079824710771659317903 1.0843361239869005238439775806904592 GT 1 -1449188379750.5292185063997171176055380396365563 1.4161305810992289410333592197575875 0.0054297528322272402992988269664635 1.0054445475187668575698379618012808 GT 1 -83344147760640399167039.9997185253356603961521093729390571 0.4531525672840292020690578565546242 0.0970980634441837377540924689294397 1.1021413288533978899311661563816774 GT 1 -275781722967655288508586107411996696.7202249137979761727725384771026886 3.2165797328977388567755737770101320 0.0440353852946043627875184953299356 1.0450343805222572261601285356681714 LT 1 -5049158467248463727.3969904875527342910943595303821889 0.5323771193505780302617993959568942 0.0835855982197700520972435799727414 1.0872866129214949913917191001743573 GT 1 -28377715784933633625343745473248667802238.7077052618174906660399108523757647 0.4793939757012173356329344648804019 0.0304085408574882641502744853965370 1.0308804723460321324540636185793863 GT 1 -11137484083577867435118760590897879.4423483933174345670655179388568312 1.4074238842729993526410403191259364 0.0163269302071500749443490481712258 1.0164616832813402604661663272973935 GT 1 -4539194156533175490270915455616826835455617.3072450335510937959712852565723568 0.9625929885156088768069036482606480 0.0749710888513238302891773474072991 1.0779302866622823114468102001535610 GT 1 -43.5062290183357444721829511613672227 0.5465876923232827242251058463165736 0.0765998374787252040755140269878375 1.0796925929061507256094899999438846 GT 1 -19.1899803168629143935404043307438435 0.7140036764811991512569158999952045 0.0871385040312639920673108213522793 1.0911711120103929675766028473618175 GT 1 -38116168031283908058405716230.3245697114853951967012479717944611 0.9743916855963930517279206131516395 0.0181221166780176847325256425131640 1.0182883334296683108404351912765470 GT 1 -6308143766235162.9088450783153990775351776856502813 4.1494332174307116379085665231420205 0.0134506271103627629219283077347452 1.0135419062268589917617103084134161 GT 1 -10460.8920947089948470805330839156917994 0.1079470455988052247152182831900579 0.0137879354841302475547164046217123 1.0138838719310327146644154119275776 GT 1 -7963276.7648515925801378119926035584975887 1.8364309498790534988455934638696470 0.0799947255603315317546972004726183 1.0833758758688889754061429659219135 GT 1 -37978962035.6996661833798740830872459406793355 0.2039613108431134828569761089961238 0.0461360953390509634951666284656434 1.0472342752985158368022749641317253 GT 1 -471868695556211979015219317351686335.5964634523263385373697354223560515 0.0053689692118746390944982198321420 0.0022891656111809282658753292821555 1.0022917897562786718651427845210122 GT 1 -7510.0866332003949802717381523880475887 3.5256040999235678439314404265173176 0.0455244281565469914387270845542131 1.0465932287646245308116667016565855 LT 1 -2275569030171187507.1723123137861632276615442964413624 0.6804521392613483462707196453093749 0.0531981830505740387208779335379659 1.0546654823016633143943698441775059 GT 1 -24741.2944308302278040210739804559823575 0.7013069143170420703762404663474133 0.0275883598387451167100806160926354 1.0279760660634247395069532526282828 GT 1 -9100198822632560.9082398024588409075533659685459616 1.3456242043414556302188191759789036 0.0282356989129561354616042284980848 1.0286419925203869536130023227324689 GT 1 -2537110037073368154699034599.7056027686897030894638509364153051 0.1056561146928828422376393581407243 0.0740119627898687115484612183077271 1.0768939631989616638675809009598776 GT 1 -1324588430444949.5464328231078973107992172271742265 0.3881566931863499897946344811002435 0.0109105902513447968874196374698061 1.0109705472508399034019666762698452 GT 1 -375857561.3368895712771956160120561208751522 2.0405384885814461864501695957987211 0.0170200686407757283873127861808540 1.0171665747511823715469523338936307 GT 1 -1190443570387532954947422234981336040074.0948144621806528850976903333310391 0.4113104331296643553805215197989850 0.0501775052844805061490976152828994 1.0514801595136249619698774911319006 GT 1 -14870041691036818452460808600270.1656070758271467208015912174773743 0.2459188532513637562499657611222926 0.0017159886815176564831493899325356 1.0017174626765757806164268007750344 GT 1 -101338997914220757760411208326469803132.6155529093998652139442769849488594 1.6799771777270801741250757334542024 0.0793927875792060741532524642562657 1.0827218131513082907999270225733860 GT 1 -566018.7974909394751616151936842303039073 1.0091259644241832001428308151212782 0.0524342083925445868467143815447511 1.0538589073834728021134302084498515 GT 1 -39450690498713448.5223714943106005276732423593442156 1.1866542399068061431089657210306829 0.0730902933385307697695930201861451 1.0758991219775270582292733024140399 GT 1 -201918.5197170954457109293638878274642192 0.9635612469593494268581692415870164 0.0887242110244891735275840258363402 1.0929096954007284505735136478961577 GT 1 -3249709602402874854786031627598626674.9628881354765089617804439401139743 0.7274458431954151863224758127491875 0.0044105927642671030634739572376187 1.0044203481237129453205551997234607 GT 1 -25020462081785245311283836290568371220197.7137460449437102200413494258443678 0.6519943114826328895202930590420358 0.0647620964613369823852960229219217 1.0669543397710588294277011608915412 GT 1 -64602618534251.5556839267274615201115659089488894 1.3861174766414238041706053196880789 0.0828883282769472035030481064016460 1.0865260347257308037693174720235286 GT 1 -14242519511922987849299919110639176530047604.0256926372232936699623517586302839 1.3259787412868282535925501388356785 0.0501636663118400564523685923484388 1.0514655895577636522078593888548075 GT 1 -1481.3857860951538729362648925842825019 0.0932579337710020414949874826925713 0.0929265255744659050777103687399986 1.0975318239610690185191309252446663 GT 1 -21563.9490141922242255839010388014341943 0.9894971696940069588556850484730855 0.0233794265388728781470167197655096 1.0236570611612271501594984100414640 GT 1 -2976498514697.5706374367786709748821511836707165 0.1889560252582964681278897236274823 0.0401087552396799418761943272088355 1.0409352876456788508592996274785025 GT 1 -28408410667897.7619075015159688405778796120049626 2.3063538245889224875195188962791722 0.0928573692193187224893870167393636 1.1022043812743426641675387326106810 GT 2 -295802994094260671822938386.3921388969084550210388242888567011 0.3268154841379925159166588609400931 0.0012829821007804674369462604694549 1.0012838058269419217661672545197999 GT 1 -19222103076713352175843886861.8199711829656782054062630267884193 0.0060480668379001314136179303354308 0.0663940633108528884434963835439026 1.0687008391084714990948396063861074 GT 1 -157636286742755550461.4063646501456319709518505168721263 1.3420900347299621910804210734952738 0.0671292371202094370534257026367873 1.0694886055430009011399677128851505 GT 1 -8395233803588232108907144678326422567387854.9057637714529800905885782371597067 0.2280670955400876851734106554428030 0.0239387649583434945210930841554816 1.0242299537157982076450366626742243 GT 1 -375094193202296.4197680264395133978588517443937054 0.2997259639186341396406340982757732 0.0690420660293635153972333440164261 1.0715411864308934770825711808709446 GT 1 -74169463107876838747236154.9438478040151534406563473055637833 0.1969921856716827355480108087890919 0.0206358650082400956061150030038653 1.0208517597516299573121784776800267 GT 1 -12746722348676421745.3363706788871516630692878175198145 0.7376015989088049612761818805112784 0.0475481494168009431254924809496597 1.0487157238278239741638406550966680 GT 1 -4734982094140114327.9181614822577166274658066382046222 0.4483107764404851221842787797421673 0.0082858057138380314921401412985634 1.0083203238077233515149367781147502 GT 1 -17065120305585580043933158745970400734.2978636779859650704214665767825532 2.4368719658572013661321690810457708 0.0547502154378213194212249504638805 1.0563060641273559848038916761297274 GT 1 -86235213248208379585836097112517.9945447187555023370937602449877285 2.3970013822069312609541427125986051 0.0135874075461999840271587037003191 1.0136805611411036738600677751427728 GT 1 -3325679416779547577089548181343696.0298503303519333585057519335350794 2.1353456418275444604385339133874297 0.0260309748122925302827298964933140 1.0263757775006164538015443546136486 GT 1 -24310923132614392.8048130604301926647463517722811229 0.1241833956889355507460827163349078 0.0373825012279028697157387918254118 1.0380991436246105037786247845954671 GT 1 -1148283938224554991.2220006475754527169415604820051137 0.7497640149014532409512699151147100 0.0287596108139747774406785142671852 1.0291812726532024334783530719558308 GT 1 -180011055925015125807793.4320915083731665321458452368947104 0.0166356165632623703267342800816675 0.0748712414892154827246053728203877 1.0778223527668714859493921954187301 GT 1 -48856854695362615679.5433287435889941950216103820627533 2.2931409345691029609493958682008175 0.0787790188344410786802103123578885 1.0820553353879408204595407370909858 GT 1 -6072680412197046327346267557568470.8101145701953858697916685417220987 0.1350775428708624352666002525022465 0.0621335212930172665457925233305235 1.0641476869024403161544895476457801 GT 1 -252003871502.0246853077331756080116503357614369 0.9607728423384705700669732652246718 0.0675974068403497650397277037635616 1.0699905906578963778691416835030668 GT 1 -13112287640798732923765589168142250.0541123500924516709370351228489405 0.3727947926922241239423843993089931 0.0330005413448035887854723058004670 1.0335573433478242323490598290725305 GT 1 -25.2677238626166623390726954205608638 0.3778253303312377379901801976396795 0.0414084180660429090009141086050711 1.0422901739204964812135957769780023 GT 1 -4.3113435522553244959824151357592329 1.1570198430603187412402353329498198 0.0836455464230865631689310767060403 1.0873520311035670655669115228589661 GT 1 -650905398972012.5742507236836172083992610276838146 0.7196736352041914821061579270086827 0.0695711155359412608769495658565918 1.0721096330488497498783062040129667 GT 1 -231490447723400537523638797846494939082117.2257208959074951008115358988357404 0.2526486254165439750357573115284862 0.0851670185107686491443298807460122 1.0890137642595044925946918052479484 GT 1 -5981622417157125.8316139733392530269341278489201022 1.6145085084809403672184640914314454 0.0272785668431068636594389492410247 1.0276575346451818281516309435049428 GT 1 -378863742925662885.4661026327957178940073120471462063 3.7452675856819111910416868329983056 0.0938075033132282241355071289335596 1.0985035267582495469861152819102581 LT 1 -71844681607257001067824.3265532035329153333430301691535655 0.2711249544032461815112815264202004 0.0678678210457056354927776150848599 1.0702806514401313282378146257942677 GT 1 -805378435248374077375749890067674204323.9107506086616470994271730450165221 2.4236263611471644244287540441292076 0.0528586769923781187575820068446521 1.0543069646094794276555333309478206 GT 1 -33306486543507082389747670468.2531221533702934506409200571759090 1.2952839157058238789201307072507767 0.0230268228373785961860933826061180 1.0232960816021856926833339850810084 GT 1 -554827078160557931.1440388534975257869552464264505059 7.2136005294303207754089213628246505 0.0199326752039848874247442972063710 1.0201340109057279854067333155662010 LT 1 -93551644522651202249224991.7489174508104701823814071000817643 0.1219893519980078579511410342570322 0.0052633363726949245482254775800142 1.0052772365231457639011836849893386 GT 1 -9508044768248990407917707603990515.7959657840274022124189909870189989 0.1271072320589881218130703235827540 0.0047476993154677956567820436017833 1.0047590054394416908535576647828089 GT 1 -2.6843687804280466597243595655412914 0.4646263788403363329369190457640740 0.0229364985127032043440443964215314 1.0232036326469264385601336863132465 GT 1 -31757323223705901776467.5819629307324483519993812890344129 0.2743040883266692735686309876126012 0.0685494368481786052116964144019549 1.0710121626496604761367367002322393 GT 1 -626684680770.6661310929006987843927214499069838 1.7628381879755980678906861918788241 0.0952578435252460193727103481457690 1.1001052858494154353478241755241070 GT 1 -952328009365954041464090806661493442096743.5519948039886673560613767627917358 0.2213520309115259105204869748378303 0.0231208665847815814636720916281023 1.0233923465521683218567198638945852 GT 1 -93.3603548740653344650850399678168411 2.0300204100923121871230882466129519 0.0919797597263045456706922408911726 1.0964886095789601382683418889838787 GT 1 -72854799241504614634425545280.4698017329995214270144929997209912 1.9461785046881398480129085842092652 0.0328110104846837192075464724355447 1.0333613636221612373815877465439800 GT 1 -618425523181714215393905.0252209903819878012756767200587580 0.0186924294564896622556681482105897 0.0630227056571360504836918159401514 1.0650962293288221706236025093732702 GT 1 -1014887763709013517034135018782509415.9728893335755031992260309036644363 0.0688905896366061822254422671886541 0.0015111813418088725433983258591935 1.0015123243279841710985965095706170 GT 1 -2394452906539972431643424310184388129.9125358246152541582503483329008215 0.1205501021212306513208837994064871 0.0242911385027259193290609294080218 1.0245910347148726493761756529795973 GT 1 -15056980692.5542463123088017108071932589182056 2.8720911359665695590690315218525816 0.0695350004752536888619842088568473 1.0720708183039544697791340714085631 LT 1 -475449001.2602722296273435894920766470796858 0.0196193072590866544425086656276554 0.0235149159134917187673117527976149 1.0237958036550728808333163195678637 GT 1 -1201693800625278829570571605584048.6731380468851351667251770255711901 0.3026779657227191356968388080378372 0.0361270450099037991532680246133844 1.0367957824859421391681858411943948 GT 1 -12944167527571.3099741873214842511110556192023380 1.3851922825735160258661849926754061 0.0665327788949871439879832096258514 1.0688494305911463077626852924131114 GT 1 -2644702108685620491915.0986912614912596924346781617408101 0.1131171581028226038689945037481488 0.0594877360345048942059522983430977 1.0613305904903494193423663333970282 GT 1 -289864875207107947184776334813.6423763686381480950364684829136389 0.1368301736689790909476350185939510 0.0206530569967871807979608115324186 1.0208693141410860328780196124416703 GT 1 -182999256544105516.1842488442304167786254598492734886 0.5479019583552876334826392564722150 0.0633660723627845926845354766278482 1.0654627586337969355343005051140522 GT 1 -47524947642523108415363306705401173742.5986249489402638975018476624663008 0.1193602848592448002214202231163000 0.0227133305333653388781814559911559 1.0229752518954882958507923908426602 GT 1 -877742008315278791278386462804.1082792893874767973005500954502411 0.2781161646972351367064820375941458 0.0933418868558200963352873995311885 1.0979898424368590207571610671284897 GT 1 -569725815809776828631148885538498.9875542464522915379352166678506060 0.0060909612630927983633171001830591 0.0459828100766557134106438029203833 1.0470735889086143009761883853930262 GT 1 -1757548726083912720806502285603747132.7229535990837849531859539442278604 4.1946291381859593204305367119911244 0.0849549495931589730895322948826917 1.0887819795013265157417910999083693 LT 1 -33974111662239.2806986585119079440663111796442885 0.5254429046547447489287324380561557 0.0915446965086119114288295703000242 1.0960095904944422497216132683262276 GT 1 -9134856238500097417461741.5160701813090458067570105300677083 0.0853549402400985554634753715642222 0.0812475790011111150392033327851354 1.0847385933577310527646295249588308 GT 1 -258063464878676168305314034386823.1951772936644701803809736168524978 0.1659964334687464972124073079588049 0.0187675007590922970762929531103004 1.0189458452130690771388053615195060 GT 1 -17680938011288493894999748.1052885290558353080576272861261313 0.5603590030747416483561585295531822 0.0901273834258067686995470056847361 1.0944506710562068673154016046366597 GT 1 -21044764910312982978311871619092.6824423711545684780948923620755582 0.6978293883095251813045468949660718 0.0416833318731679010680213906924558 1.0425770043506968583676015398530436 GT 1 -463829944596409170123123.0184493557697156159271736670013207 0.3135073402322289665466616981052144 0.0547319279140034412544794618050643 1.0562867175512269745904501718450682 GT 1 -1637537394791407480651045773528563707.8475690021501802877064019472670809 0.0403852017673496648895073425761168 0.0623250163447444198855872259345145 1.0643518893220993189079673040429135 GT 1 -5089.0656167629599280980724149684260904 0.7494507566982064500028048407929408 0.0362644363015339880418104523265927 1.0369383335179912407869959795583734 GT 1 -47883511717471953660672433106.9012427317133591832749059681584384 0.2293118200010221299267433891980929 0.0768482118772032403924560373299169 1.0799616071625752807664327145812361 GT 1 -13167461154515360688796509616522.4966753171167107518034422556714706 0.8004405406564340380190916602982544 0.0047624437572742369984114213220645 1.0047738203270990157520408612391464 GT 1 -4630986144677.1429457278051126086729828932312164 2.5150908001422991470914904009806012 0.0367216348671302456604523391954130 1.0374128485874824867236376832654785 GT 1 -135239885.6922611390732407153631277350447849 0.5768726768852785140521631131575093 0.0168322229127770087548150858865173 1.0169754947750816023461623418985740 GT 1 -2585575634948891227998606620775.8569311279720203306189619607226214 0.0287730628251789650523896003633969 0.0515293750624797641652391356366137 1.0529044601050779287265246469357068 GT 1 -12129266116947992280405565811430.4235471492272292329941876584313100 0.9770189516341889030259914648085067 0.0766024054386452600216779739747430 1.0796953738927641317090223460151985 GT 1 -6017680108447832859504397292745530925411758.0161650245264241074725295365562244 1.8636364350486425801367028903570680 0.0134874876907367891434009691699788 1.0135792700628895059962466157905400 GT 1 -270057074972670604023765482026138.2932921072404087728029445298930655 0.5536592075505555791137492428983620 0.0261806011423328155538160441553910 1.0265294146497928977255779003794478 GT 1 -4.5250407101626881981146806651826816 4.4369331236155878825148280558372469 0.0497980136021794212846221618409831 1.0510806997265332200822926244949555 LT 1 -3413205818675705343142505048232660820020.2658876611089130731673512913166284 1.4467670857518774122328235439366244 0.0066791097378698028214481466057547 1.0067015148110030130235923175916249 GT 1 -539.1278730759037982783973596556335932 1.3946279809359457643258904108787517 0.0390237698881659223639351663473248 1.0398056048527803933692759405188392 GT 1 -5158678493526415526028274585622314207064.2408820992525237911898119887805049 1.4002942558762664080559955045693023 0.0758767532609788871092239080043729 1.0789098323186070483255152294971504 GT 1 -9889148563642046062.2425470299459496472318715735453645 0.7204810535571615317173112103376972 0.0923461560381076776475300264516244 1.0968922021839962125121425909404000 GT 1 -1639710935816600934550457.9887797699642579959878560067896092 2.4848602538888391773589061822365249 0.0307458333034411486852969347295886 1.0312284035529940325889369243198468 GT 1 -107163563139820623573482.2605463047578635652868179978140549 0.2535721622445442078691899698647059 0.0066441077918627049971705273521595 1.0066662781320227539234407284856524 GT 1 -8536184334.2088795835198637896222282015693008 1.0577752810948936532427525753033282 0.0242815227288374678308354568119263 1.0245811795963166103630320730417655 GT 1 -23593242637.6478109526518147878750181200721970 5.3858332033651957865254713811862424 0.0364362742571560874064880901420291 1.0371166534675899916520856211741092 LT 1 -9005238910890047748531840064.0845226110327127772359128326232936 1.5206751917208371997456158296079939 0.0062172977472853489648549701225593 1.0062367056277893295048029225114225 GT 1 -247545231121.2506417324844335640267629692424230 0.1496587363139280812808900009430870 0.0015342081973835752689349544669801 1.0015353862999039131685267053338534 GT 1 -2855089976858314189150811715482.0125947781920624748953650292211282 1.5345910561388414461969040413781096 0.0880463718490208141415136113748747 1.0921661365262046180233551961590571 GT 1 -28754843319433.6958467309172141896985063682149208 1.6550157023037346607786168053723926 0.0440318451285153958848374333819237 1.0450306772894393123754620284238781 GT 1 -398319688090069465220698858950017060089303.0113954974560845908471449715821742 0.3926724859996933429930469721585188 0.0797750148345759381595822932251316 1.0831370897434540929060634088670177 GT 1 -5008406459.5016834336048062118643556321756364 0.0006273071151502198664491906325331 0.0755241246330472830445375602314792 1.0785283232850996146101820856081448 GT 1 -1689837397314.0519486066521396983412283935425422 0.7461680775143283837439450959321535 0.0101831774316340901966737469774484 1.0102353806819610249364421698858046 GT 1 -52467256132402375582372757062222.7820859368427183019041879313002834 0.2515785650065038288646972286285346 0.0405643270912239022485180043802166 1.0414100080863767226519941763829700 GT 1 -48017488780071762129.4620626344753712960875658401901413 0.2540570040541145476099927746820371 0.0895385007044391824631464190917135 1.0938036659412923702434308845215036 GT 1 -89177147525122.8550671263235335115661932612998948 0.1413503444758452757850757578366596 0.0755832672247846816530401854680007 1.0785922995176802613578811730748961 GT 1 -31928998917581593814037073111377635.2942748821765134281005007887997709 0.4868560286180151476511501302099750 0.0288628831263946482452310741312248 1.0292876086380406059642968407147651 GT 1 -711.9457356128154005097059228122609723 0.3778571551549106082594233168887182 0.0447435009521080199586041511922501 1.0457753891735428696800115968449279 GT 1 -917159761282860853637428974169261.4770588128404448353299895954550571 0.3509022415600725273113522947048389 0.0170756867473930318676404585674197 1.0172231574731380121017578956722419 GT 1 -305653843.4045236028543737792947668282789366 2.7665872246822338392492726943962290 0.0408538013765100503610858306795889 1.0417117666839929359912720228234763 GT 1 -13416914562203591437739330882665362859.9312572586768929009795639413968823 1.5649665696216976934531391074838835 0.0092422856440399766624206753154183 1.0092852605619315697211784886690729 GT 1 -14473554659343.5239551709777712423318801370751852 0.8808068340435711808631044851249752 0.0973808626181639909040307152264691 1.1024545893080943702162600440508219 GT 1 -2858973.5643492808484660032791446449955769 0.4176894585744230163403310659529954 0.0108076365421846408151081567649194 1.0108664632819660149299545204278448 GT 1 -45376871302667333.2301570382692151378911302110935629 0.0748984206810050207175938786355401 0.0916844249209483534577312853540491 1.0961634111156995619581437313072627 GT 1 -13146904.3706351700844707810579580352300728 0.9205647458525976895481188369702931 0.0842017788169317593442793853570625 1.0879592211250071344767934994525578 GT 1 -319776620.4315581963878773022418014743952223 1.0179583604640646134772546519222872 0.0596450984966268813089701880537696 1.0614979201831402743993150929276878 GT 1 -532598838758718925.0496179358052524677098239220552208 0.0897602027046580723452622523729688 0.0338501943293919410318186642540807 1.0344363784590580636871502127306901 GT 1 -33535406.1993861186824749819670389778059296 1.7533999783993979427338055422340469 0.0215470636463740349061375929222235 1.0217825910506949697636783744692135 GT 1 -6912299116748719943927500823758081601580.5669088214018963607592835102486453 7.3112131216103263695964722450046346 0.0308931504818574035859031045950962 1.0313804053498394751075605204137001 LT 1 -371419268322526560207483159931444.9862367525737082240356923678097849 1.7234984183020300873867632416343634 0.0845917815957416215466101607372139 1.0883851728651008700909489592720527 GT 1 -85076511437008552836703794441096148.1027738342877500762997580385442876 0.0763717148754533670331060674920121 0.0840657996539978246704594539243832 1.0878107505715731216375901768029554 GT 1 -525865832471499246.9904868259024494976648751833505569 1.1967984811972536312656299864971151 0.0408152571748070373347067916261244 1.0416715815408819228592833270364474 GT 1 -167062.9321497213838161772948179910257706 0.1553781478255311083476233984582314 0.0730631080577706780550174278850069 1.0758697934658988403597507522998050 GT 1 -247213128033846.7660506712415027749845480563935509 3.0571736518674013708043679813076566 0.0250171744885978114429842329951954 1.0253354229995336648990257440532449 GT 1 -768436494213241123.4572786239704869802408006581571318 0.1873987869430415928024752356655095 0.0811866493910722842488004925589202 1.0846722777885116189366415041575786 GT 1 -31705649762164070.4420132063721899291690929823975653 0.2110499675046307471677957119632240 0.0814173724536869000884291506184581 1.0849234191500584572011511589795666 GT 1 -9130361318586.5245178888323478434111753865154356 0.5598816754877087610705771537475604 0.0575912356399114025574880621419679 1.0593161660855210856580188635485128 GT 1 -4472588839772730080943724713242504521478693.6030417293428107273376979429372470 0.0679138509035656358921076907764872 0.0077385148556081086170720932951179 1.0077686125364750232148504422847948 GT 1 -3869809470667141838080624.3118494297639823214349263888988611 0.6415232715151495875985732560734237 0.0751769321228374664967004177835539 1.0781528377363110963274389841009003 GT 1 -1933196218578.5712149575025149728608956313829260 0.1556735391875542847367590250455434 0.0343638881830669097511157083846946 1.0349682115790045162075160099750649 GT 1 -912715282226370020189.7641043730383654806624363613717473 0.5309807516079837661853522382992467 0.0287118243448942711636561984900491 1.0291320723789258448389238560930393 GT 1 -29404264404086939260151963288132466827.0709169953133252353254344791078037 2.0603640970953121565370160886149330 0.0846097100068971628456274207500854 1.0884047582111385490345453813598441 GT 1 -2394916253335251104273359072828051.0281453086853984994481196336897352 0.1641854033753219615213368378427518 0.0815985477349063084607653633963304 1.0851206721189850582293983098466818 GT 1 -38285844385479918209.2708277086932702475127501694255394 1.8117417364639630758709593236352093 0.0784415527873015791122179340422569 1.0816890777168217901956485555884988 GT 1 -654.2260902261042934404865980973788896 0.7649237140345102234052219565805133 0.0791031275130765570743237679333635 1.0824072224089989249469688026451811 GT 1 -2332856182858.7016347837774607794154505321645168 0.0982903160033100909169811032425844 0.0977312195274212097733083692497290 1.1028428205220018738829868215994594 GT 1 -1029142605324137310833888016934.5379058507118963433996908861861941 0.3546341741221872868082536921300043 0.0188494037416952993670121301753688 1.0190293181932821720378518436467180 GT 1 -6261343757161528279533.5660471463705023661771157194277451 1.1668244098974824311512632889668749 0.0623922416578492080769952572193556 1.0644235855112958149476573370210441 GT 1 -1072.0790628917268936998808191590829141 1.5546674267743434124744645412002726 0.0768923898557150229249772547858319 1.0800094639031412923014627332533396 GT 1 -3719744668316050.8493496445392340991520863970218354 0.4620150047495612080259572814136817 0.0968188167813675681570203960846397 1.1018320998240315848830653399254855 GT 1 -99704504546997207119817555217920659268973.3386485817248744571920182350000726 0.3524590718737040421500563704440398 0.0640315191602391951590080722938874 1.0661734773880323960389276260046520 GT 1 -23093426234999757176464276392718179.2305667276967535600862347276689762 0.0389106747596994522580044559696730 0.0195610109105921626689825526979166 1.0197548595658799138804998443481482 GT 1 -2013820466724211215376.1109739941368853316694387833562455 1.1877408782520822030671633696587659 0.0322674296330200829439504880311849 1.0327995001572702045536812177881738 GT 1 -51719343486589729267863086271527242.7798471482212323517489722278263231 1.4188636864559530884144136047768769 0.0706640872293787033812890350739696 1.0732850201955407178695445482120920 GT 1 -6597830010408.5166212330609316440905351218564879 0.9921345249073328680900106284114169 0.0984444322686708405051832529542940 1.1036335990466691301693370359635967 GT 1 -10495499590685461308577469864875.5946470416632483969243837132482442 1.9396723299332353206012490463642199 0.0323765724302153363855046656618567 1.0329122884994949014718306959916340 GT 1 -87705013092078298.4979013368700317532186001800907683 0.1540081721489276613685331134889394 0.0602532200425300803540913750296360 1.0621448230321798854361827881276768 GT 1 -247607927968106655427201628240947890.0605284475158669315739694638246290 1.7406585661036169879583965451268416 0.0897991587764515822755740792084777 1.0940899991816657124244235795147195 GT 1 -6469042488603276696659134837519941820.1987265725196601690735158434053082 1.1263780642513339806444773939259474 0.0531834890122734074272076657966905 1.0546499627663016837963739431527887 GT 1 -166222343312097243331582518913.5967692440105637125886287870538750 0.0940290570383552749722438274406162 0.0451828036277652898401185054772812 1.0462353742353302487880168958388874 GT 1 -4149546228295398970148538715507546034.5067805027530363687885316178134628 0.9176555673321179615701032549818391 0.0930306613614409165924626956984684 1.0976466346880700036627615897533279 GT 1 -258413147974256830278191624594.4986578389186816778717704240329468 0.6060934620386601640445549549548441 0.0628862678165731533310565040623535 1.0649506250450677814737744388953065 GT 1 -337541167663500582426551400.7528482750720790633080281390289419 0.3950979729168684757106512168640283 0.0652865248493262737694719085119653 1.0675152403460310457037951145373780 GT 1 -8920626199114911382729.8851195262376229596037541028727009 0.6499967947831570421964013586118532 0.0463586046953238285710961655826210 1.0474675741074744376956322950767820 GT 1 -443056.5576986316180692573533965085667726 0.6062145338739302170479313402912572 0.0466571930481280099978421322462041 1.0477807265236202395639568933970997 GT 1 -490662984531322064693052557573.8188352846040546151053456747981190 0.2775393697406180793160310909370384 0.0771575927096887728015575922903018 1.0802967987207621281012555743063379 GT 1 -18221.3945707947791074600144168528201583 0.0306383355653266547415130008716576 0.0584959358528837098349611542592302 1.0602766142217918519478219733332497 GT 1 -18548742.2149074954144908282468434287624544 0.1991391223993422490683869152938152 0.0161714622877128088079326603659242 1.0163036474056207208586458070878071 GT 1 -130688924429217.2492252418569157983878814835232077 0.0245904676211682404746306836734940 0.0837918106924164965412021031202300 1.0875116592289230333462795021332624 GT 1 -15973824527962570785013067123381466683645.6000747796606070272373725793976023 0.0785189887972222422403467358816823 0.0705992946208115390024815606517768 1.0732153033696486208666978418555816 GT 1 -60961653790052356962415832550434910765348.3091874732696447783119874828859461 0.0466482853095448776868519384143598 0.0047578778983355261086694024961676 1.0047692326299842010798996664349640 GT 1 -63525382345961239110.0483776420441424754580554244111355 0.4710927461713860953799468602344049 0.0923340212316457958423115449609546 1.0968788328522562970999826708392737 GT 1 -1925998068297605857727307773035116591872.0686458011725479754804392526331573 1.2095266799064436312570109674597536 0.0587835791377331398701639650038685 1.0605821755511317687203923187361601 GT 1 -27452389990512637114228226068161445291384.6817206601750313420434567091077264 0.2666272158337429261254412347861364 0.0671882048653369987686770551014440 1.0695518185959330716160781743409286 GT 1 -5815044133231336745.1363251670071725773725267976848295 0.4562677070058728930168966278265049 0.0513824136007930005660043993816242 1.0527495263902379750946762925503366 GT 1 -22078797860957472787973488338573932741214.0313384882526243574365440404342096 0.6915865507695463166444376894875121 0.0207256188101966604732531268559755 1.0209434089265827378905655895088225 GT 1 -602067.4341830438052045936044333639651102 1.3352411851051815335972425343556158 0.0736179155141159080859692525022508 1.0764685112041563579420198038545562 GT 1 -20465116837376734161309336.3953815487905681581788886319445076 0.0796819834608266164100780230920913 0.0180265546281247868859303651075574 1.0181910123661315095259005616296952 GT 1 -86374.2352255536632235950530228545975197 0.6466699791897222204885115951126966 0.0875329000298976827870582769038070 1.0916032490027665238662694040337234 GT 1 -36818.7517414346903410176147543658665686 0.6811332481293490374484985199446395 0.0401547541395922644104968944289392 1.0409832097434728584004130344237903 GT 1 -8774703.8545870322223532631430551175660927 1.5971073249817463971189418464220494 0.0512977488515683704008865269815596 1.0526602797090982693737159188962127 GT 1 -14764033474846944770100.3632629995437778840890656750256542 1.0377355505804193874085111687044520 0.0154481342572180101954257643658902 1.0155686999718992538407253615510675 GT 1 -20030370126894.9078852015001857962977824819179400 0.0462405663208166267257484378778609 0.0935687498292482201806381569224666 1.0982400926222081717642065118289474 GT 1 -3615651530040.4148486353600055818633807210456337 0.9786337674774815649438663812107966 0.0818136214488229253671715355549155 1.0853548822245852591864158313597444 GT 1 -75162064382555158344415448354490877828217.5920642061743033938003877649483422 0.3831863213828477206673399149126828 0.0161984170524894036961356135380975 1.0163310456086622990289128530107947 GT 1 -563252740074941829141126345998958612373.4155931644531178123238944626882000 1.7179681704195384725338437748166780 0.0751732438465372833831421839902701 1.0781488496557000855656392103774278 GT 1 -28100.9859613612284262314928138351908554 3.8530462080178494102283893037241387 0.0016287236180797009686963831391380 1.0016300514303470689130468817584753 GT 1 -2494619586746.6202748139497258175329510416949837 1.9569511607311351337832397284395232 0.0997419492946694564815532189920508 1.1050738337490890530885970896792134 GT 1 -3559534063746381307328338666.0955299507893993191829198087445950 0.0861112759323042784146065223040776 0.0088430641326525846338111062882373 1.0088823960725431140910920189729770 GT 1 -5124552430122127372.3932499005166698099990057739306747 0.1721085970759455029078120483153342 0.0358987028691857015944805202087252 1.0365589098808909373653987678913931 GT 1 -32107817048218152189880.5051903252863115737406076193282637 0.3472906596566395767672568856227859 0.0805112487589653786678378933553001 1.0839374685731850085767441531666860 GT 1 -33.1502768717852788512319703411792947 1.3283719667854469124722834709921738 0.0937999797854184494756196525576806 1.0984952244421235889652349622835629 GT 1 -2952738636820309051756263976816.9669151677878130173124810294659128 0.0128855388183734959142653676622307 0.0406156002742938264936838799244579 1.0414634504948790801584012835175180 GT 1 -575645696143040659.3267987629696514503346069180667247 1.0307238556801287732134670538933129 0.0882566629410327455691864432988188 1.0923967571796965380491784970018794 GT 1 -6764456173055605.6446130251196212208086094727010289 0.8986867565579229163262888910267565 0.0547127971138047751384163085722318 1.0562664792641453123093337051057076 GT 1 -7240648019293123.5907282216614420286366962485035441 1.1321147067492205398282861679101595 0.0737817717901418829977401850989210 1.0766454044879697646810190980788684 GT 1 -6941127381071871277938027786887.6947546616951079900008494875519354 0.3307878099444669677063950291851136 0.0590509602697491512809420995427499 1.0608662963039698581119622304896704 GT 1 -2352124236989015304195819810.9434083454738903789908383306461706 0.0665355805956528273111128222482360 0.0259370439121860115706828267246257 1.0262793407879934793871502497251082 GT 1 -7382800958.6902734567030018169939563571651478 3.9894634313960314214073438912202768 0.0063852007363772746811588602183598 1.0064056733248537467139588897309464 GT 1 -8939275197129460928342556128.3703316835255623239934799538460657 0.1566674588061422286576807955907937 0.0546786370106494677580366420851771 1.0562303426425562684727041634571539 GT 1 -68960595264567475935426298984277.6696137629877331389268713291800394 0.9105990385151500678929263838639382 0.0223572146401341603853122887302881 1.0226109258106866056807564669069536 GT 1 -725673760607250052565088627.3583736929591242152100254604213438 0.9047971661511962890677259371984261 0.0539632117850092167880323255989249 1.0554738225098612822619052826642131 GT 1 -357178243099776112829053035146.4065837614216317416711634908171566 0.9754321526107348085953126899987121 0.0189063092928059861781549310766351 1.0190873186690686408621419051065856 GT 1 -4482086033429329395128061024432855302.5755460125882306577257166618017477 1.1260512089615157087029996447485451 0.0791231786446357597232860848937469 1.0824289961281339446037139093190910 GT 1 -4518675457763734.4948764333357612083063022923135837 0.7787421975814387217665488145098314 0.0418863647611566882915051723987601 1.0427888908861913437739109311656571 GT 1 -266053257814318299320608548120768191.4397066829668057227233987931417287 0.5032380675160222774582600237048876 0.0620787971424797673607685394364740 1.0640893389869583442881651893515005 GT 1 -5629816348826818037586.9574097724685338319691580010203426 0.4033837685018449982379819384173667 0.0045626768802482744853278783004984 1.0045731176611161953573900295513007 GT 1 -51458595303753776100.2845032614569635062694333556234166 0.1270529015692451253543558523463549 0.0695740337433495854315111887321477 1.0721127694647901943734248182056104 GT 1 -2451484335499188908626247917512306.5324259872115418387686065692681037 0.1012310187640183087715151530730278 0.0258683537033263852042095435630588 1.0262088240040910731881977656283617 GT 1 -2742873.9659127335196517713523779593371208 1.1655624944710906372070651629825232 0.0993284851617759285312875035260793 1.1046146662746152568576504701205918 GT 1 -3467743042802705109041.1341191540579804379104863118071381 1.7844543635498613866171625727224022 0.0059738030010196077959880427476163 1.0059917175430944007203381009280006 GT 1 -768099851574312057321439.2828892490386498268125308512354664 2.5046488981501523102902011312206772 0.0692219827254803824533555099519186 1.0717344648563937474812429314923960 GT 1 -72980399187599170709593036068348199416.9239420526816398850240733947021742 1.7951494980362947095026061732324855 0.0539688088851322923003865552064997 1.0554797388936109551949828172369214 GT 1 -1002890012283216247532039152718.7651104772141269215875465986844012 0.6202910328421399000771883397528692 0.0260457250256408115519415071184230 1.0263909220531225365393399866313981 GT 1 -112070636729020097245.1907614274256256697732359977132574 5.1260499752771418465803474881178193 0.0694568701047822016503579896803254 1.0719868526626633252450341336553212 LT 1 -22879351968984043.3575373563266818538271864268959410 0.7431843123883054371851673515668620 0.0733168826344734004513410335156306 1.0761436085704121458047373555464260 GT 1 -116733465478.4282845629630664765953342277057059 0.1753292335038515458806963829260354 0.0015527397376805993189101783003055 1.0015539464873676519943889614158190 GT 1 -49696797763363.5260962607335746109549252122861770 2.2847419557863005572929963189471756 0.0919991977288729594637308858665909 1.0965100168227241392587215519972036 GT 1 -4676831.8525032425989223663454682672453266 0.5465727152000652344169854131782722 0.0127231545287446019139976703237984 1.0128047870136373713346999281875635 GT 1 -1051891616642269215105807.9566864188894374648075030135955525 0.3165091224964707408616259354909530 0.0005496232811700755180732985568138 1.0005497743794129555079999475312285 GT 1 -9009537306645534881068677.1877647820160499771514147215748972 0.8447002149154290813788907462657380 0.0943735005750020467468908523779148 1.0991283102287839652491874547011680 GT 1 -3508114360984680104034302307747702013306.1032554656702776472073638666049365 1.0114292492199604476008087718134919 0.0806240999428983902552679482429661 1.0840602086389043874826528235558045 GT 1 -1390037714136293757813.5805406004869122791640634513293382 0.5876284533866214523486233168390458 0.0076139638490326711073765986801527 1.0076430980504995409103895649706693 GT 1 -10404517258602383551778365069173369.7992977828292544992597152220451748 3.5252508850480099512731417632220851 0.0692404382625662245544039610623811 1.0717542931287794625149216514377409 LT 1 -3126.2899591786162252412814343734219007 0.1450041665147368037470716755359019 0.0580862780414699927505490952979408 1.0598415988779885886186512543758789 GT 1 -27067133167741120692480828601206792.2971213710792942952927337656248157 2.7563215804286971810124073270172085 0.0270993354553443594018584114760571 1.0274732939455297901421635228673717 GT 1 -7361149670247556391407866.7571084685770528719720345840891225 1.8271262246808813332234679036386539 0.0865310302022840600283385403231424 1.0905058722164241157049334515080488 GT 1 -358092585293.3106438025710811358467652312056420 0.6039259139173858398349574420084167 0.0051935038644628480574810228354291 1.0052070369821927760652985458926561 GT 1 -3754189247582811.6333858312136624963527955882641027 1.3307461432522021590994057835938766 0.0987047217005161982341277507410728 1.1039223522002946317367285196597008 GT 1 -3027.7374783403402381768609372573366007 0.5104453710159779318955807738572612 0.0817130986020908045228661092754475 1.0852454084326928981915195918246454 GT 1 -4157045365652627574932152795938856469900.2654032209535381634550773232599484 4.5401025841092903738715585470160858 0.0928031022250288261421932564702683 1.0973957655747130971174803644158177 LT 1 -28807651748647436703768029541490373.1421687109686038610664476704137402 1.2304305228074458578698780329000652 0.0087056490883186066305602494425455 1.0087437646262417828670624044276532 GT 1 -1488786452826483985553610172.2111352549320109284586337788663773 0.1553421505870987826845921815561682 0.0895965304363591774563011375368425 1.0938674045852138879387775298049636 GT 1 -39744052848850971263179544512709716.5510844563031021432314074728544381 0.2666101898776575452073218220033577 0.0520587141475817963487913590649171 1.0534627133999844900887744562932180 GT 1 -68862308066975045.9445717422085670338621982037478909 0.2173895271361617519008121649676667 0.0794691199057413955287071977165124 1.0828047317839620579677391292838786 GT 1 -55593445246912992665295144911138683087647.8044372958966915675053456563116690 1.2884526289971423349901277474489644 0.0438212973999728057179173770222087 1.0448104559936002238509246068142027 GT 1 -5991843402197618154302139687087769098606.7194801013927082701715228829062908 0.1525712275974069957009771337227197 0.0720259875596407208647898882263898 1.0747515504238709509000590010132940 GT 1 -562460830658587.4377850383283416097171602099686173 0.3176172844903908122672799539218271 0.0351885410917262985884817994783331 1.0358225761018511719487513749317570 GT 1 -2141496763607693383956671244678433.1352666458355970752178033605995464 2.6945155085347013043317467337667856 0.0988353873402307723931179648662548 1.1040673381060547068304052086658205 LT 1 -158057478806656883.3850767038981293614442218205777478 3.3878806586409481878860734836493162 0.0433924686073914834689999038269783 1.0443620746824583827826162477220330 LT 1 -1662085627652085467723170169536792401.7520336192768899339427820716518417 0.6816196837851547414236254278128543 0.0984174068904651177880783031100132 1.1036036231093897111298482651449914 GT 1 -3860021.2061949028527256103132935390792086 0.7719764452153271712922336751116147 0.0296419854264561951433359726052091 1.0300901883914097122458452658340085 GT 1 -54815023575257889706449127802.6053348283606635370076852229984842 0.0042271457170223064051731857953339 0.0139228420029493665354361762917091 1.0140206738944462024821717902584657 GT 1 -170.0713914455661227319068657881716868 0.6154798897746776299369606915367097 0.0491464564110392656542409623721487 1.0503952308316221695652417828192119 GT 1 -6089225286157856788116966643897950.2033196596999875495718678641067624 0.0073010827941172339483763967388715 0.0229596365505529366877004324597023 1.0232273141290277624681765399502486 GT 1 -27499022475000.4526957262174060243308752087877971 0.7669490724174141613470918915368397 0.0118359990942783300146251781462814 1.0119066021899965854484496296443783 GT 1 -14227324445653657.0940376672253683107265743253413155 0.3956194230600229249866587398643810 0.0376258999337189181709164766903636 1.0383520265018760801841676782934233 GT 1 -443423236123.3176323011231184314230661823358944 3.8895909668701718815399287709819551 0.0990740873066301596075882335381326 1.1043322526199896850714382989460307 LT 1 -51374645511743644076908.3098449699036705079473135771549439 1.3059770418822966684845005875950097 0.0936726507158144788649423822843944 1.0983547255211625910540008331095971 GT 1 -37383630.6165929160798731725703852432641279 0.9126469162624543212635857751271681 0.0705067089291540524804548612155069 1.0731156896295312617752454989998176 GT 1 -415.5514716006452674007615955208797666 1.6073295584842946845038271606416079 0.0044515973041627148650656667104558 1.0044615351673187493747727475815236 GT 1 -49526514415592743259494745014202864.7464175679472185715036601185337536 0.0321582611333533108822537852752455 0.0381374441187205363876602874995803 1.0388837118280766538309162891930746 GT 1 -57469278404959963.6224018337567801998256102656799884 0.0190806683412921133848895272678556 0.0567909930066329076189662814576490 1.0584673804053269428621278553252771 GT 1 -39539219262900324107601320373127.4974964653835284957693571485578825 2.2764816745873975194383073560082306 0.0993003591845475632861725006890945 1.1100522868303503147838992514664514 GT 2 -489.7741253675915348300135448483485814 0.4867482549561772399201703667949789 0.0489184079814129669612022982475332 1.0501554240932642687116006150002838 GT 1 -24643774854015829.4122272962017581783758578381550696 0.1302111170602032375424055581639418 0.0522678990213729463713366850603618 1.0536834105686986722832124190489289 GT 1 -1096155606862023.7802919904196312655915703226902857 0.6393253772364912849604818058752685 0.0778865132888939781383784826475128 1.0810869754610322713011586339127518 GT 1 -145649602291816132437414539043668045.0768654249540255536426241384610126 2.6841491054347418353850595345638499 0.0176943678355452201115306863540938 1.0178527846676895968013378041984246 GT 1 -6868972134588128402393017751297711.5625368211499098906695625036172742 1.0300809058730411425013929519725817 0.0504476937802191580262396699447150 1.0517646620746024626157814632149563 GT 1 -84.1644078094684406601911590407427871 1.7898610197092273652942924834861728 0.0559014763985184653598422723446565 1.0575247500607119087787506117210606 GT 1 -73337756777091764817159040.3949326843022127102177187258340542 1.0459442222566976955123488348866715 0.0456503315109540702411165474171873 1.0467251458746138452872503233935404 GT 1 -308132821015949011626106844061085183548.5907549626169027110912998240794165 0.1676504264590624912831418387353000 0.0763086970761967859659639733492122 1.0793773509049980300714723455504795 GT 1 -3046180.0315317533520448986925697119931371 0.0946658358668014158522289466939710 0.0872036974689999100081011091027905 1.0912425311315636521045286147936219 GT 1 -13807174198755843332092022059690.5254690059441568046756311242054173 0.4153482855599771244638628625470590 0.0905528883067037953037810495026057 1.0949184336842312083457621921976887 GT 1 -1540523213201767167606708289130854322.1328236116174952805354066332869263 0.3492321472935767046686943314731393 0.0683968504733834494950729443747021 1.0708483602062870514891300959387190 GT 1 -299.2948261726035331335994610588486154 0.9043388075007505168476375570372656 0.0244738993335572930468876007478277 1.0247783630837361954523365040281726 GT 1 -665411.8562703410172889855325967812347497 1.9099559776182737193588381054904077 0.0531561449355683708643733604840662 1.0546210831665623249454091513396523 GT 1 -48488145692063579129.6367142141021753230304157930014083 1.4940930468170835308189680710004310 0.0284583818952575232832292764941643 1.0288711720654877791111828053693362 GT 1 -14.6184765463107717620718682705470382 1.6851107623393449515478585606459891 0.0360297704298316400443839950725704 1.0366948670370780758112960383796456 GT 1 -109973085069782239497.1349299801197769647358550403055692 0.5259822884691967456926983408279331 0.0234698392379503505438277309709741 1.0237496425453034915155074287289889 GT 1 -402724046.8477664358793675948888393809785410 0.0354566543676904069655651371207484 0.0882101561369826635909842217017285 1.0923457498226089623376395776765117 GT 1 -535384521675924532417311948087678726618.4897051940726567427405921668110329 0.5990185836586420012269325242142139 0.0933116461154910562163808531333818 1.0979564889207144800875273670852238 GT 1 -84227382159088997878047527514550.8064146072583536521108265108548046 0.7738294974426155805676060681953672 0.0625184605244950195292562978918680 1.0645582125575739308082738196857369 GT 1 -10.5489198217615221025820439496491621 2.4017665260046206278723293883410154 0.0213250648552998709751104513465403 1.0215557292341941107721486044217991 GT 1 -4785894687548631293074.2679682542530658654457001154086363 0.2158448647653095439487842814287964 0.0543402958713068630642585610234868 1.0558724954394969941859473431221513 GT 1 -259584046440069823816249506719133628995.0539979050119910301616977507764858 2.3765609410071071643112692220423716 0.0479550019588950886141361447176993 1.0491429784579139719420966862511428 GT 1 -12.7439054234750472862755596936207307 0.4183995270344687025698933855890740 0.0798556144916577366655560367068335 1.0832246804830280966101570245675768 GT 1 -62803.4791060129751260561203899851840043 1.4052925058775778632319314907744354 0.0715723115165806662731083143889458 1.0742627811538729141482520911188247 GT 1 -218843805383781771361009117278004.3467961747573200244389617641450494 0.0381883060267475212542281686381121 0.0071947386945520804000632423473083 1.0072207456442104628670167054819072 GT 1 -76768265.9640253551786068858465985847314082 0.8820514985566900206261592742161378 0.0937275646585153429300849422004394 1.0984153168808035226715523854217870 GT 1 -2879641668655104426288663618.6582436458225021094174874418119725 1.0443118207837701243743385207473952 0.0455622719092335238719439354455854 1.0466328782895063515998719803369007 GT 1 -9144863.0924654704667199122364170004734865 0.2537298404856002759919723220582267 0.0522594474986667757989205099252360 1.0536744929800532121093655642730744 GT 1 -2187346127634089432099508915988255884970.9667213513468771165421243912112818 0.1972081383950061402410212581518461 0.0542057824915228935159606498589988 1.0557302626539430020502714842495320 GT 1 -340162784897764056769818270990.4306018889269687487432588665977745 1.0417967942677315792521801845231069 0.0543346223699118347927977818263806 1.0558664959405745039434358149069008 GT 1 -7095663969195328740976829969311774069739.6030461018158686742064159187643252 0.6536624912430376454481980703233184 0.0271537471425819346969882523398105 1.0275292227888599476691800333081013 GT 1 -59922472673328496358868617858397.8512279972447245676987449774943048 0.3974790528198467477076230900527467 0.0491414095124435141336432085459510 1.0503899230897138873496355738795997 GT 1 -2882624444067935357481.0388166664660819511697081707228759 0.9497092145865034855427391965515923 0.0351724655192363342841559224194723 1.0358059143609292572512845271892042 GT 1 -2.5149585707157015888666468203234482 0.4335970530886450240804365430373606 0.0585072143900015776687719020342925 1.0602885935696271470673822213256258 GT 1 -4782986573.3125888070086568073887482488569404 0.5317988584978242780504848738072361 0.0556478284215642916487893877323743 1.0572561192946274063813621437621877 GT 1 -2.1847077639915976196008810650492528 1.6027617347217194585018982073185703 0.0660438181043815823834407192835752 1.0683257563124647245019411776209008 GT 1 -202151023829.8511955605381775509443790264465078 0.3539780433399594715151602959784334 0.0341956011691352135353076244365556 1.0347939509549471752927056924639179 GT 1 -321563746956591410359717.1842135254143731446166555968903243 0.6921292273096550425827640596910906 0.0002567892504117258937613677737225 1.0002568222264166659485114938429157 GT 1 -617268406215929695455567.2910464757992054264030685464873584 0.9121285697494846474027203502566098 0.0829795266853840297868171110516514 1.0866254805685603148195935927275690 GT 1 -424044574176818472208029606338337.7804728763048629649301751404711610 0.6562514769082703417815018490498333 0.0221976280698174556096102758091310 1.0224477030579788058750732492980284 GT 1 -25597240666160034485398537659.9329880433573534482208450365034952 3.0399987721895912240657801726959142 0.0035039827528988174102286301131428 1.0035101360787686818558831043795149 GT 1 -39187070566490.9251876493172614746443697062665110 2.9015094925057890403615973839932694 0.0906028376573181865954202808481277 1.0949733579582220887859762836671443 LT 1 -707952339371809364305890890199613.8875302536731896356376449360809670 1.0358767940916084244824799877274763 0.0107255109826295692133206952221378 1.0107834438879342207251438386386303 GT 1 -101879706560584221789205.3931690855949979199973083862334245 0.8965927884923483030168879307712311 0.0488526026090650018588882833996712 1.0500862364478855254616769763960644 GT 1 -8654174452367657803054948955227088782057.1102175001954755120512788955978555 0.0828146464524866607964085735906822 0.0497081290796558316713470662847222 1.0509861090260745010486266009010485 GT 1 -1.1957494800849476405363946438483711 0.6152876389138814652801407339589400 0.0332695185824844995991409146096591 1.0338355385950939043204341299046133 GT 1 -113232558847.4042184295192252343990514650871335 0.9536338505332879055277890791321334 0.0203303125082199005408926064841436 1.0205398177126604046237886381764634 GT 1 -11547983208033724955539699165195597613554.0152782181737625806434502330714166 1.8031439135963419809723500466964764 0.0882492759449994315548898201450774 1.0923886551560147699538766932734657 GT 1 -268252401205055381525855195.5320997467483332795804905630805480 1.2030782294403357195489405959803519 0.0281371439952650284662536474406698 1.0285405791218182276858443076631596 GT 1 -420740479486687896929647360276.7547511559247471739547793233252213 0.0601812258282050517868802933906659 0.0872057411991316289578035124839363 1.0912447701112943851449445185960699 GT 1 -10022364354451213089605679.6315204504537979421293873021680670 0.4820263458329568957844546962593069 0.0333895536949399374068618011462891 1.0339597123617467133034589557275673 GT 1 -7581998686738832514957.5430974304935119840765066297846059 1.0491693395486882183436011945979773 0.0767567645235086783329338383939105 1.0798625521363208545070846737132415 GT 1 -18661090056457355227526035374012846.2125508594201858717629175388592352 0.2196091830960531845391885356937796 0.0562617618669592943697913089656260 1.0579064414019525752888837643732701 GT 1 -516863632329034880820413.8334742544755657468068103336425180 0.3458930082382656014550117400403368 0.0922188472840492779160876936252739 1.0967519506690699783681565443463590 GT 1 -19419884370160584.8866612103044445419573456508536044 0.7545640701671815521434535707235074 0.0816074117577716076442974473967784 1.0851303237431409377337903557672142 GT 1 -1668071551522431008953018881160.4303236548088130546207854681107148 1.2874578402167644125440215673960896 0.0657414673279371465542679814913375 1.0680020774796983039164714736592174 GT 1 -2.9611020974572896649468372699753303 1.6790462975809303674451179362920366 0.0895349906726952826818150540718019 1.0937998107261287899147092194065530 GT 1 -950116997034072.9352228546396486412513354437055208 2.8452658567957251685050252456379157 0.0383339993485429347595810217133677 1.0390880812717628182250314903644139 GT 1 -638402143445955651473707582990972204662800.1716831598066986576539094038610148 1.1514490896358063454875488672374104 0.0591099779872475364227838104045760 1.0609290197522365453426506789461151 GT 1 -77641138910496039795.9544525679182294560272625357246638 0.1014387723756144679344839796080793 0.0539506447781779763460990290945428 1.0554605387522744333420129030790799 GT 1 -4717426420628488766.5091945082503980759950850160227490 0.7384359816077693429592241795945110 0.0336203957574284413544700225544738 1.0341985569057426878330651124844404 GT 1 -118496702.8909996601441160005768233793958645 0.8707040207947274255181893456805142 0.0251097495011689931268228693827668 1.0254303779109888901908117164440058 GT 1 -17116312417943244707751269721303858440.4850259286531040155123453341366300 0.6114992086385436258275768742379719 0.0103877009897899923628936879719110 1.0104420297169319005130392231261590 GT 1 -3008.3641258821595162369911645617754832 0.1834660822285014323566110579847665 0.0142298779802595051975310499102579 1.0143320935291239373043460887336354 GT 1 -245795062905433818554402225449369946101487.6827568355144387035977105816739085 1.9155802044839424605391555388124117 0.0599122124154861399609864248201938 1.0617820170314046681978827108287268 GT 1 -126.9758738552485139482501814098940462 0.3268288148375309337381310481490511 0.0293779966692321558137465607729943 1.0298181724443966778827668359905587 GT 1 -4729290193305572.2727477619908990529387469238931655 1.0144294552949366928396401116236558 0.0819092274402148272351119610760836 1.0854590124659493673425762951559730 GT 1 -34312425752249448653866472390305389.7205446376534053607351507549794778 0.9393514512697954506974729262395055 0.0889077008863381193315919285959345 1.0931110705934442265961506000237489 GT 1 -47030172436511265419379132861888959.6385079577059914046754305759036442 0.1516158434238790044856164368602133 0.0213813477329247850012531320844712 1.0216132401543773752694812221312704 GT 1 -6712254843.3252586753911012263517375923358601 0.0521872634421647892583121055343120 0.0718292185067390505243184183587774 1.0745395313461762981999865150606217 GT 1 -11877122245034688422179767492224300.4614695960292975959387249112086610 3.2142827303083427158931699524274089 0.0863548912072761726657203254777053 1.0903130665261637432041880757507431 LT 1 -1488476453494797424462.4026030246332117164121144483406474 0.2817968665766718189966180672110783 0.0623942422354886219513405456010758 1.0644257192178014807701570511081295 GT 1 -13334458806198603297793039554.2456919061959294747277957065781985 0.0992713351631192131127783525184137 0.0305421069375058332224489609002962 1.0310182368439567776682878142551399 GT 1 -110822249.4203574658172396344981798780657283 0.8578865663957430851364259431084045 0.0397047762196965287658497165858601 1.0405145170251559929236919163508265 GT 1 -1225461842428844680706.3537395947276066761063332415044645 1.0095978325914877279441348874550663 0.0435068749300672515297301128383713 1.0444816777179031504890847482659150 GT 1 -1034196958016415072476568372703597.3184255485323164390992787331713674 0.3465871689712985491596135974057376 0.0876508276608014807650828491144021 1.0917324977746647800419742122276415 GT 1 -1133138954088760834603939068.0148426468525038868770369079645580 1.4247038896653480415322599034266278 0.0094647353351316005269899186299205 1.0095098105849536773401549796764651 GT 1 -25056904259329773545219778671094803.9468958385264152005193682066893740 0.7472022175720145136315579649422396 0.0614632087791372286642208360206220 1.0634332215706677591691419862652532 GT 1 -30874143536518966150909805.8712967041237363114148673904298917 0.0517415474042050067155626691900174 0.0100174127314005375233055996072879 1.0100679246257592895938673307713149 GT 1 -8978272.2437419808332057138575977864768659 1.3751547083560697485958139690379573 0.0234684448549543776003306400759994 1.0237482146508497562813819568045589 GT 1 -10611202421216248137291436704269743026201.7236152499378472737512258402860749 0.8873994616004803044622626580294932 0.0299202802792144279451824261200833 1.0303770255825731911300263920319354 GT 1 -1913016105.7053288914960935195098555161312145 1.3971245925707716930799363100798517 0.0842783509870592172295245489635613 1.0880428371112905667735590624314652 GT 1 -668460452639511663391821.3177341842619669040635603100768208 2.7058048496138528400298290812046245 0.0577641812265707196001443828569870 1.0594996973345348620748089994594979 GT 1 -11891216794876885724478228665.9103854166395249519983423485545871 1.3565907185206207293864101597215906 0.0789772213072571717820479941045135 1.0822705104672648231353755819185807 GT 1 -1482721701864921760530871566404446.1510953714351196458110201622991227 1.9079681939910269393760987346697806 0.0083137538453870533428950619170445 1.0083485058439688014223853552241250 GT 1 -80282739123196091461420481894325298756.7935472616018355471330746553184038 0.3773698055233473188009534798751491 0.0550585296346826214334663059433092 1.0566322895278723349607473132451437 GT 1 -53372030026674905080.2672593151191468193308569774283101 0.1726566739939984890711145774711472 0.0658350853730493692048628672597335 1.0681022882165373226859659386010870 GT 1 -15578924583044567834.5019879005952486265545551193734359 0.2289630043137097275215790773557929 0.0196722275411956295254741710415854 1.0198683015447055056216176729666047 GT 1 -3655114555463568479.3935243195248353120505921282505266 2.8604503233120933428353978799659688 0.0187710459303734184377282121549259 1.0189494581974414782003111272718688 GT 1 -5973053.1797765519790988012965603173640082 3.6742269640534001582171307186126846 0.0280355284325704620035254034871756 1.0284360270750949742762630928870651 LT 1 -21103928301167370697395996866340682821124764.6122899427213784871028062640131278 1.5268706399915364471544244386777478 0.0755079090391029423167075934966435 1.0785107831283850972571024645347884 GT 1 -253136637196325732294.8736359845270485642275743782934338 0.9601997554006408571837481035746334 0.0449343195731669624263186521285517 1.0459751655502648859801249441475919 GT 1 -12924638.0298836077110114545377373027106221 0.5280898782076216806002708776016493 0.0889987448525691966026624317922843 1.0932110039542685745029968892582511 GT 1 -12426898460605292831376356879.8300827363756768649449004768253298 0.3299930660618404429860923145684858 0.0737521914125450896920700434379592 1.0766134682721237259634321869169579 GT 1 -632850950423633148298754152462.3125437796679147661267084903411780 2.0453530667577534024879455968453274 0.0265686903643199492477548788911983 1.0269280168692532086762623283423895 GT 1 -323160732249565413754592.8156156367818204260143713754391859 1.0379444701548376456658725312401249 0.0032541772275584966836107503224985 1.0032594835772681690785912266076050 GT 1 -21434056.7232853182698418499262546510509261 0.2984575298726152041650681458214321 0.0076355778398012441279948093452809 1.0076648781092257335143071209438844 GT 1 -435661239973781970060310046425471274660609.3039742418372281573433552109537181 1.5771701601524471694420460823042350 0.0588575660987668850157194132183906 1.0606607864503071463686011734665190 GT 1 -72231361943137813353.7336684558887239292158759947684086 1.2792891536792729575605237851313853 0.0532910189897927457919180945056674 1.0547635392437131080358568749514298 GT 1 -2813104129436.8943396714543594832908474585382421 1.2685052469009183671993112950264385 0.0704585316018037531311842867431099 1.0730638591544788807889417009721835 GT 1 -11924004706440987588109577997.9158019131144153909690004130826791 2.2004321836663028093159811667784559 0.0750834265829189554484796975068548 1.0780517364376086116673837719585548 GT 1 -51529356.6018063625503985330674144251608083 0.1865251197792745814798599644171298 0.0499604756105949050521373320147705 1.0512516906325723337582065126381013 GT 1 -13187639453802378248167555918.2905382527995530741733293737496411 3.1359903365683214885048354679878059 0.0022788034475922569174268317791315 1.0022814038714897254272116852130331 GT 1 -132122.7753037501821254944171817028570628 1.2029486286505621877942831750559501 0.0422771928025217359783583661461901 1.0431968881850521339617561027901143 GT 1 -2720782699443929925151941099971977149220.7554861546112997483268781114531042 1.4412488306451499374044845017491365 0.0317130690860177349898657741007742 1.0322268193947196405451282614334923 GT 1 -111157308690944358930248621.2032892689422747560293678007325749 1.1350377133502463658131539333398569 0.0663772909423093195852569040287139 1.0686828741221456691515476414621885 GT 1 -98459943649736082745311857107.8933279754371585830567564319524295 0.3306689639136630524531352810710417 0.0032767635012196220977358089146141 1.0032821438473707299380426533915575 GT 1 -564538.5638839377247700161354433500932335 2.2784499047791991101193478426270612 0.0099865326736200965352279279568628 1.0100367325860466029843524836518071 GT 1 -23564382.9689942361510752690934244841040365 4.5728673657563945763609638298009523 0.0863627413010761787876850729102712 1.0903216586233017793133626143542745 LT 1 -37958627.2710706852981131210079107332073291 1.1474975033382967653723547951925549 0.0060863773745072824207822784047100 1.0061049748685895708055110598942648 GT 1 -14299858648070956165824.4607326036554922763372434840099828 0.0687162863935914017726574710943323 0.0618504573741184222069584701942590 1.0638459155765794020821495843737522 GT 1 -46942385609581951173253713734.3819196045007314389029280897584932 0.3565101481147921585498597428291588 0.0550168196059862389739514143290902 1.0565881501716430840469297309477351 GT 1 -10114625085838.5940701867020757608227200420733977 2.1005399154166271643786116428202985 0.0046000858013007877930360933633832 1.0046106987554976767091023548010151 GT 1 -868337956333215688568873110784.8625938410641914413103425018587506 0.0841550283845796133577398053421715 0.0587535624382922391824226841763991 1.0605502846701944682175453445983192 GT 1 -59392857318118.6163294048113122362479921800628991 0.6713714850446682240282337930817092 0.0450333798103654334277095822875852 1.0460788917932769187365787719886598 GT 1 -39159201088221011691109926849329332367613.6283723529900422314384048098395283 0.2565200538588065468822579977683259 0.0714390505999170826563874701626695 1.0741192574788500864849708937356276 GT 1 -8028493312392124085276271090020509.1205696260531494182782657003950236 1.9840475736995509683214384828170402 0.0327616578263652384189832740890140 1.0333103380214361909166733102773278 GT 1 -1784307.1186064420170470414189253296391561 0.6814583766847475722079396512691280 0.0573659797316633008287701086410505 1.0590771731977658332880526047127335 GT 1 -55530342841271765966440240506.8140818920166529325813897586716355 1.0035821339673643026172583269536970 0.0688191803782333346336566023839887 1.0713017997023109968793660970032945 GT 1 -3974005041528.2921422910035165452445358451389318 1.5598813213293845019580071280388670 0.0996745403026205074700468914231765 1.1049989591412844253212048561909791 GT 1 -21369844990.6753050649447966779939049333715016 0.8043867847012580637784090859275480 0.0849443266787154441683127507941988 1.0887703703977335636243895979066903 GT 1 -2908554017507377103790444504326557894.8096880937013890387595809859732525 0.2268031229779720658800255904297468 0.0797271955827725064454410558274850 1.0830851263538919296847743899573096 GT 1 -196073549801100831766458902.3657305053972653258777288584883974 0.1219995050795245042186659583934178 0.0515479713926170737720539045852435 1.0529240669457713572932352329263273 GT 1 -5845754682598.6906111012274311166549306284910707 1.6750314501976864979394269196985916 0.0647147441407858599995763142255602 1.0669037097424239737350517886856553 GT 1 -13364646721879424.0615299442712455000316552785306907 0.8872046288350420243044327452801948 0.0013760878636940235869771782458027 1.0013770355420905899832550250067192 GT 1 -1623578347658991503294163568977586928.3525889448768215940223751063120011 1.6460748570699399364529513654534535 0.0696928412940518403046507567429923 1.0722404691862277806221237833726183 GT 1 -44058424019.3415027663532805091854881514570064 0.3891309764564311446903073766232488 0.0761388363763065727417558961126874 1.0791934744485028912993445115470444 GT 1 -5720287313211704316674944543813487754743820.8745243426212321365715094437822790 0.6459729601369553761448723870981331 0.0574990060018209544406900684882964 1.0592183050205495888123455349748065 GT 1 -16.0102218260689415801647635711994275 0.6180345931164860776883668697873569 0.0952297174773404805676633140007015 1.1000741989695447586713469380948584 GT 1 -13683069629295090586943926679307308606662680.7057451048069885618544107943084209 0.0999914381141948582487239862518949 0.0313568398346932731046524702768688 1.0318589906775330646092175145973022 GT 1 -9846721140410227169682631747455441.2923105202359014435434505621665287 3.9842274506520358487496453769562360 0.0325546872827626704425487602602637 1.0330963799990288520692138507063592 LT 1 -4670.8302068297906851408552363207320256 0.6805907716923034691645078859376064 0.0604574305170379573210172497346315 1.0623621503696358658179161383885289 GT 1 -1193741415549683770851883055078501963213411.7732088644401450877416298315717123 2.8918168185889027836164237211043015 0.0459091724884948354448256379951631 1.0469964050306319326830348477379129 GT 1 -2830252875.0630605385907360423458826700141035 0.2224725252607529785288622276639752 0.0642124268353822608254988283448898 1.0663667800091932595219880002439865 GT 1 -5853498027356377655490831770240399085451.1269383461569718613365935966172814 0.8645116384507475366372661350895677 0.0476150512198384515293336200062554 1.0487859679590664802016543231013060 GT 1 -2135995425719614793.5791295133024648782537582856729480 1.7835811193320618231512315017108756 0.0179266249608454387949167467155226 1.0180892534199321871341619362257664 GT 1 -99770438809752344897069224808284582010.9391530114411977483633177204584648 0.2857932311093973448638098206325566 0.0099638397669142613191195375988968 1.0100138110325754415548433905316056 GT 1 -2010437810808032410204191773371640.9750663860212310616016271200930764 1.0850209043761131575001815503779478 0.0882687461620473487522239792322727 1.0924100101431050784652167872497073 GT 1 -2.6863229209870132936552834128115460 1.2946645563415922040927201647167775 0.0889563388921120967015971525470346 1.0931644562977465721096225210329191 GT 1 -1772117900324364194834104685998.0279634563193875492800622400380673 1.4235108898080470521663073371654239 0.0078670709530287970838399918605321 1.0078981796191891930529894414007900 GT 1 -6154709053551539420398.6852377080632621389562309959809602 0.0170624977699143423988139171975448 0.0052799343471037828473595619098252 1.0052939224597283088839629543519220 GT 1 -85744258381754034.7784411076472237646008707231278220 0.8805472014978803952609505820594668 0.0420319757970842845942682545559615 1.0429408792270748175365257383395873 GT 1 -29087179957457370302532796804034774241.1962401867888460530013573972436522 0.1298802129484134947832621072786154 0.0177644611936003759357647438504463 1.0179241431702454476658802229422897 GT 1 -80958145171946061.0916908931762277876724184364373709 1.5762274802046516894058900023587245 0.0812238875866834373748135969850333 1.0847128071846205905735933241829364 GT 1 -111814.7759332425965191949380846071446039 0.6719476302824903809705487091176253 0.0623142335991290740963526833016534 1.0643403899392577595959978207636097 GT 1 -30694702390277166370970986949098345339.9645433170873998987519223433030284 0.3874943717734125963028070255276278 0.0041657639490813460134105076139521 1.0041744649162451556258947980700111 GT 1 -34780826790981.9599407113881673252348208939372209 0.4004010411929478551454299464190040 0.0403992753542036912371395094689150 1.0412379928628640097298231673892182 GT 1 -135176542192042605495930704.3788026939576634418546685943918438 0.3164703948666624091512162874071638 0.0731835804953588483353325886837141 1.0759997702400616821587720604039168 GT 1 -233815669550563804253875969.9739419979881128378985642291030678 1.4600942830467852147763330709615470 0.0864481181308763302694601189853431 1.0904151101746127107905566967917861 GT 1 -52.9649564535261123158294154345550455 2.6103120923106428233229717209786389 0.0006341189130860311160261528072861 1.0006343200515189489338327082208582 GT 1 -9911769468187984345.8151195998995605461215785758890289 2.3379988414187077363185889613685424 0.0980544644745929077603288372027120 1.1085263805649099610982199629182557 LT 2 -349105123122615195094322351521582959247253.1950083322336406481662047864795782 1.5956784890024218726355036146308116 0.0684199402128276219039433331970829 1.0708731454655465081994937589873864 GT 1 -110027308.5342706821181259719583844172520100 0.1986894916098589747752788630689746 0.0825722255199500454964894765976567 1.0861814220647387543835005163157226 GT 1 -280771766278667.5488372811204075723888153719338039 0.9927253404674312243972852762827654 0.0771314382658435974082545987266880 1.0802684579412079493981078534750868 GT 1 -1612525586021763300836782.1217551161299762294343999214387220 0.4487574254586670502952367632969844 0.0245620533088198022575855295866239 1.0248687327401549268002284136455214 GT 1 -89347503874309.7872603216392992607199120053885803 1.0862447153666853966131029070243553 0.0337897188225282788000719539734081 1.0343737860806550822865552058541795 GT 1 -225740569292110432082636166690984633.1852049517551865948716665738649301 0.3306873587488536074436195133119995 0.0989301288559981448285976201197069 1.1041724759410102168948182008729941 GT 1 -7019150042934692059857055950.9422141520629906955939310397338523 3.2006703370049380260689405851844448 0.0918650789119532426924055989661776 1.0963623199128087758318729475295701 LT 1 -25354680775234120453108165.8482745990318544485218052651200592 0.0266633135971257819064179627493085 0.0711732777693529216356092285285868 1.0738330783074930511632649891632225 GT 1 -1937599405103.2188805468278406297140340336925311 0.1709004602326815091614332857901373 0.0078962891978779319333305126244822 1.0079276299823812252143345558076632 GT 1 -1242339848807381937684604743068334316130.0440857438629972498189942048330103 1.9250316559883529203438356233474047 0.0379564206786038921306063601072701 1.0386955285925865415368002009010629 GT 1 -13186554270309758046.2826371738997303212490250815667105 0.0931629546176975879504446491333946 0.0368871291993527246526007928880857 1.0375846665749635366313302415159788 GT 1 -139229720597.7995267317518838884431850817800764 0.1802603713798546659177651391259029 0.0119569364477589945152014787159527 1.0120289955928000583611019928658463 GT 1 -26608488985303666.9542003821493437156800171083962165 1.9507600868177539408781583774902837 0.0347919433832594539505512440914251 1.0354115981704273363089062169495023 GT 1 -2242599433536761463199.8912032903046638523323037221970100 0.6487508687309034619384553149777084 0.0085660598794260334694960152555549 1.0086029594440546406213661115514878 GT 1 -2512557621383347512740993870531566150752.6228540359211229386002439436942200 0.0859809981287489617697721883684716 0.0238526489778064325031407248748529 1.0241417295565483492360577892078880 GT 1 -6990742043595.6006570628071033769035517754427054 1.1335276331936374768713591675992206 0.0958564250132917297979177497088258 1.1007671093128697390056430670411458 GT 1 -8284909454887317877298582892523306011338734.1448798740216014662652096281256245 0.8039471780792715783448016105765947 0.0574100059124535559728486858634059 1.0591238797753003879811782836237759 GT 1 -62887802627903677393644886065.3208066757661421577877881188963307 0.8857538885815630483324844864494323 0.0550812407109000533824115648599058 1.0566563241901845613132710903129355 GT 1 -61918207257256.1688433088231830304978590092645914 0.1903094870302279765877335718465855 0.0604216458101961683204701429502347 1.0623240637234862682858465583034726 GT 1 -9948828237083060.2335467094777267511171980208501607 2.4544044533632577622466568416654613 0.0413027750048522252123769308968101 1.0421799734531325655342201614662821 GT 1 -12917515978303857409847588859.6065773248835160461421876978823868 2.1400054669926084874952952762961171 0.0387411419180113374723153982410337 1.0395115430349235835310727820694887 GT 1 -945082956051214218108682745038466967104.8083349531464097090711456851325521 0.0742141049850528141893703432101377 0.0443309665960257931758036363657327 1.0453436252397995829515427265584279 GT 1 -138224125552169848.2050073992582389685463611735315236 0.3676141709453011315564451820025951 0.0705853591936424944242668327272537 1.0732003094895971112991369764956744 GT 1 -115501185676957086930699993854268177.8867871563993159149200838993773478 1.0605768077239513836301901180785618 0.0153988931971690292775899238328401 1.0155186875444791652628161294796872 GT 1 -3518148365102.1703356183429322064089342849914441 2.7632866525969600477468973633301711 0.0614027281041737232112519663006485 1.0653765834717975981867722789406608 GT 2 -3188914136467323.3468465222764706536027853523297295 1.8841807939643404177606474414297561 0.0942933744412032242368109931824186 1.0990398382268690180935517457223018 GT 1 -738489093165442.1895693744266802834156703057657680 0.1694762794474587922750661490451833 0.0898361191377634483668715188795091 1.0941306068256927792584712260856825 GT 1 -124270413780.2534814758168481216306099789096146 2.1759965593195226288732022654792278 0.0356234991116464492211382504062450 1.0362734995332166412954106858455187 GT 1 -1410165914370000.9596034959711676374415697971852754 0.0853278047487600345870992108542549 0.0871231082620624901736676651071945 1.0911542467581689558053677328812078 GT 1 -1556143978113.3562583229541428294863425117689890 0.7396667808834794667223466452402619 0.0528507472396860216008232353893977 1.0542985923430556992953606291582226 GT 1 -191038596228.6500320880700704384423867286626195 0.7691476135830647376256031583735994 0.0722522627181989736141301507563949 1.0749954179753651755450419451541011 GT 1 -21579545946335128834514729885118231338.5391594972994075533733230980867374 0.9242831306785248055778334432584363 0.0870945705600034460749212345159339 1.0911229859646665227982618909490729 GT 1 -1.8635555115159452515616985202200385 0.4065167788882331797130667879826545 0.0397928950442019311679324066727654 1.0406062834586028423103886051964523 GT 1 -2182785339718227888.2941154814013367796612881551880278 0.1457592601582924277471024240738988 0.0788065914340375045819954757678313 1.0820852663304607627248234367619216 GT 1 -20505925533224940451052761354434.2186292484532943513287807794209417 0.0272382316749373567086918289697061 0.0856682747127084319554489235024996 1.0895618354229488079816500127552175 GT 1 -299624499503563071431.0051833516315766306811957644443097 2.0348908623703839596683563120014541 0.0824052781488878202719489878481917 1.0859994653074165726879668102626537 GT 1 -6261739136807540123165318482397592564.0070696446099367137363260611390833 0.5297491909935224601921884751858913 0.0685482575427805058689929295984762 1.0710108965549280269775114967783053 GT 1 -110911781468615777245167397968713772.5101408358389198768310952340804253 1.4013964483795048072341406130044681 0.0502525041982602715336408710927171 1.0515591236099132099956850616073965 GT 1 -102940949.7501928329024867397399546091081410 2.1493332316119057487513242787604977 0.0170400148434674365940292974523563 1.0171868665236061629672950835934654 GT 1 -118127523107657889244905182885631374267.6193275862124832478222247321514136 0.3737576927341017614088539774053131 0.0266529544741677368042975194261841 1.0270145846181466562201763709633508 GT 1 -73379958603047953148469310699441.9828608442357745279163386438583574 1.2510517065306668901363316994652144 0.0485596919226030243862285281681146 1.0497783287620171941088049006921247 GT 1 -1222173431813211486265056383.0826573355233747874273028085403584 0.0526203786242555667983563808854449 0.0704484658067203021379701363975786 1.0730530304384657301018131239171658 GT 1 -555908279494228797826166.1995446338256888958423150637240843 2.7459380490076994418316299972089118 0.0614489230004066814222990921700292 1.0654289217405375953707502647641033 GT 2 -2881333801886695545195898317148553397580.6701704405157103553744142795922392 0.0442696723265529123291544780546236 0.0553773957573228610673315998216367 1.0569697918438318184415332935982608 GT 1 -645264.6389064279712467005790817384653376 1.1248994515483090293791232984313412 0.0935173302663556056464861202492156 1.0981833667486387146978876447223452 GT 1 -18067410.9503045250144119636664320631180595 0.4546907712763231191798649525166886 0.0980948951442178838113824418982864 1.1032459697136399580052477041561951 GT 1 -119470081727227511206865570711438172499.5497402657876990347407179695224171 0.1975900972341460165990382093213796 0.0439113845018972297657752657976199 1.0449046761908900741125944507737699 GT 1 -22628944078126717840429267.9198772773168203517312818952136956 1.2510782440587571174474931532006942 0.0095558208474603841076960448129383 1.0096017706632646858727788779397055 GT 1 -58.1849240289003082461707786553229650 0.3223962367478522644241672219672893 0.0422609608107810194607144189089154 1.0431799398007533551688298381087690 GT 1 -4341288791927458365396481547233.8353049047250995188430476571957628 0.9593035803047349934367064393358659 0.0741069787703209944870639258084877 1.0769965788395317004275801280667022 GT 1 -4620350873275752176315.0619052599454355187813178764379061 0.9180952980001450845764349555472505 0.0355766741872000491926068372632350 1.0362249461024174649167952430749918 GT 1 -61361731343576705728847678018174172160.9307694388386708178925612321548666 0.0993164824643487381668169490060625 0.0733971160240915947938224713486902 1.0762301935762992520883821736204737 GT 1 -313057127701966613485108942416996.6253613546608898413171070439608256 1.5322509888090464587446093454926701 0.0543009263020204604872445340160670 1.0558308644493816998891349418690507 GT 1 -54127434794206854367127563752153.1558211604182835995774035023963278 1.1379416095733124627788127433572919 0.0383523103593712311247596148235795 1.0391071223787036925332451893194544 GT 1 -3240967460072716950749548410103927993107.4542401850863388636343879704236380 0.1153795506004779068311520579628415 0.0863820963712711577735404863428470 1.0903428434808900839127793576400358 GT 1 -146192634866394581387181.7325852352650287671711289849215373 1.8895220549365168337965386353114454 0.0552869511761754798477153026605526 1.0568740496382902321331755501771701 GT 1 -1241960950381196014538637633118302537584.0229577840569885604422795682528979 0.4267996528155715940790170364572988 0.0998437929225230474056411266816988 1.1051869672987951488038055374874314 GT 1 -29407205279732339635645978702243.8620247399110318321271209942846375 0.5190316626085766826768483485872686 0.0588239256280105140316967387131278 1.0606250427962846257438110437161645 GT 1 -17796639219524715750.1007832491598129623407850905559099 1.9260406476972701554827028657857400 0.0875882190616862401777991493400938 1.0916638766229162672367643003814805 GT 1 -1304983122334677921429529888455149567400.2311144290759931312039307092780426 0.1536005075492213193166855065997490 0.0174852461527037483477800246193710 1.0176399187129998707215205688582080 GT 1 -794328374088641950274125118.3848262718826206842660499255576921 0.7969452381920318203650356638309528 0.0346818500317341198890253487580423 1.0352975428923698269635799586866160 GT 1 -547030580.0203781124463487213267769130680237 1.6870457356617988733236831899686354 0.0004548562302276518219750272554308 1.0004549597087024826075671202581699 GT 1 -611.9902994133026046298189141228600705 0.6192661784298322459966822466937325 0.0443684849175580502472868398218732 1.0453828847079839951350367651251757 GT 1 -454767037912378944.4350741061877117393612711634885215 0.3662219595509962549937745993323463 0.0961821959041395725191204999784442 1.1011274830444577292865650008038552 GT 1 -5363461455624809865756918339.6252000536030864350244533653599564 0.1475534773420849175456245239587908 0.0053122973508029287579242745169287 1.0053264577742250665673052537543083 GT 1 -502960110493210904752523488012681.1940876662044084709732735884943497 3.2444471161058950427655631487554492 0.0671025826692838292406687001063796 1.0694600334500580213701371539466955 LT 1 -60064676210.5447434121888710271919837720780553 0.0733306484101296171316928545977627 0.0514510576869479673908044805115149 1.0528218912408149204520901241668957 GT 1 -7742721719813564748419466064.6359123155183904584095035037867597 1.7034054039759151787653029906330736 0.0810591745019998663588097708747210 1.0845335487996901602317778004749108 GT 1 -2489.6182308717109823946336721643105817 3.5933582163013961625998180388527886 0.0062066422687139956591696966538417 1.0062259835439546699536472969426219 GT 1 -13888019683312176100750042043154024763632403.1306160469625830955299799235279431 0.7739859293546170266029086380045261 0.0685494741792656714048505650329720 1.0710122027281029518801400350340349 GT 1 -210965814444487507761038103.0754347173878995198230676633591356 0.8438191273524292015488064358144602 0.0633163287977304957516744795649411 1.0654096511787699776521165967833568 GT 1 -9248349016249059566650820301902067970008.1643718372715071974803789418774660 0.6717035697673499814656008892907503 0.0069068157639956697280530776844174 1.0069307782158958538271449337817959 GT 1 -131149223675.5742065052205801081836000494635989 1.0032368327219565505753255103893554 0.0205952138836655579451220445983667 1.0208102529417737164560763450503594 GT 1 -1113218076.0069076320084433424012540005770083 0.5990156993637785247202891219292926 0.0565815754920658916472614319922026 1.0582453784223912202045867386130244 GT 1 -45514889947639148839789.8792504781580350500905227478879662 0.5458408535832556096760467520592150 0.0798036417172983769725920071022082 1.0831681987966354840156560653636881 GT 1 -9847441149693643264833709386889697.3368315467574693050704549339115357 0.4087625587170551715243769735976951 0.0859987484289958631418682614950525 1.0899233381952220232446608579186872 GT 1 -1031.5069584463748920338059974776378452 5.8824359406387564568720574884825637 0.0994719109425926601423174686414545 1.1047739221181205141644724281842566 LT 1 -1630411148650582900371669439891546032945454.4978991935533760341403773375406158 0.9989634307930708629325466225986289 0.0617596442285072689545742744057283 1.0637491199737469394713103489916060 GT 1 -33390768736292.1218867661174902244374531075059474 0.2111011741553078604725260628390311 0.0562846377451756945024042307415879 1.0579306813389903062591934863543989 GT 1 -2717762480713096084195057799.0970840597571702254332995670403144 1.4855985150882552052827598680354832 0.0778975647608944152785950788597332 1.0810989604698037851867254468975967 GT 1 -11967988489615681393117871619002126687595862.5353601806524399146244069492802650 0.5427366404432104425640472977317381 0.0748528145585822529235079998002332 1.0778024347317329228266281753501761 GT 1 -118270744248393759916878.7275875895453548070523084547609334 2.6270501188114076073283918217366856 0.0044253311222074324395291325215994 1.0044351518841035664248032122452214 GT 1 -2307577905009167.2327095963480506720980493842948163 0.1509258223990871456804244617107419 0.0069930757577877418024966165427948 1.0070176419076887152368280008979491 GT 1 -244085681588449901873047930664520102328.2706637513358163390332811391157077 0.1320376112863927823500854733960627 0.0413540705256333945506463123130729 1.0422334803287002829339147229383032 GT 1 -9625665005710396878885953.1204739686927395062767387990799824 0.1939747203450050460344078562220334 0.0303979310956462901746684031088244 1.0308695298983716703472688076302782 GT 1 -14054024225611055492095674011.5378200866514093487869911972760663 0.5300935901053261080315586531677839 0.0260984958897788734542686223638816 1.0264451055966041518808462030746512 GT 1 -3586179568673324921.3396257946722083059653300476988288 0.0450665514916627953219007194644844 0.0277759875185053444183860241221351 1.0281690355588543543529058984825831 GT 1 -1660812910531250.5029722511173198956911495050675791 0.7227779166785464128738321994829453 0.0822383026686210123122989981743190 1.0858175110243331168471402979150731 GT 1 -1284.7971672322825495006328865159969026 1.6190006796842120336692960914698732 0.0762741538865056770974947901706990 1.0793399547059715836342089650405541 GT 1 -306829105344074114793210070519.4637038106647847702495110814627028 0.6473664215835390669650941486819414 0.0242417408875723653439480297752690 1.0245404085837506747521476046561564 GT 1 -153226251999782901703240620113791264.6889109294595747480313322751123116 0.0939238222682580366480052879766190 0.0405214079076648833137527867564369 1.0413652753076914269526306759540788 GT 1 -1405933072604158.8909731895522980106426968754682455 0.3808712520670561290124470390473306 0.0977536541860279622519037854719258 1.1028676855489347052794374476140734 GT 1 -2459218900538906357764935333304.3300940408838443057973239601203707 0.1260855122744418132886918715982728 0.0799656038288588149926088280805417 1.0833442224953880865058126374907605 GT 1 -166393661521587624910816.7876407469949639516329300925929777 1.0657151896648295340353268958451096 0.0438815862082036294208927493158847 1.0448735098022725424462474721034995 GT 1 -70408789487922072.5011163509505082308545960962115545 0.0858380387772802696365673862856146 0.0248308322944600547857996807482290 1.0251443176955850327440789041913241 GT 1 -513860193882516.2305486422260209235604218046665521 0.7454920849682961773355011328203096 0.0841420598192013751140171876671274 1.0878940134741267666545215047163805 GT 1 -4454.0670428602413660143028781167770444 2.2764767917371579471869793278693618 0.0540399876130616709577382289965001 1.0555549810277511327910021804426054 GT 1 -5131217074725771746937228.4939497036027908204959444835379033 1.5384845553919508084852965851455907 0.0937648045498292959692402636832431 1.0984564090016713700493235702815013 GT 1 -45521.8785098275161050005494199298838176 0.2614603337238079467561991171380482 0.0719896689226498140435490587654841 1.0747124136314487620088667878474447 GT 1 -15558801183678.8712522410756259752976127189983450 0.2096146917678556839001639130201248 0.0703015003883644363957791427411859 1.0728949393630430299074366025202493 GT 1 -5631128432758789941561431152828958.0428631435063668991641752056280663 1.5235006357880288618153796445783018 0.0151413935928154741256049372028491 1.0152571949086118982351665814832517 GT 1 -162749001497631592.8900916174537844670661630366516903 0.1766683256388834656977197196067500 0.0628803244651475119661615125454837 1.0649442828772233860264897746991965 GT 1 -109893.3262198287601263495967084152078547 1.0583996882991910735136497346745850 0.0456688648362678294758146010335717 1.0467445659109854304795602904462896 GT 1 -2484556434230150031681861237681.7492956575155293731589869330206528 0.5525718868247794945960790666558717 0.0057107293907994881170302902128690 1.0057270979532546731083486127586881 GT 1 -16376.4320491777437318917953312291435048 0.2350646421523279253091033994205734 0.0343811290467222904686376808289170 1.0349860661490220995593196636410019 GT 1 -155689709.1903782464567618881106812692815862 0.3432835370432544465092235715524081 0.0029195606812828585554892076318062 1.0029238309120592617336022625002154 GT 1 -71472700050265190567065266.6427809624658626222289515152128989 0.1895555287575999285396277568879817 0.0776836501321462382322923248022846 1.0808670016202902133150934402945023 GT 1 -84264.0014109247667191843550401660889917 1.4954735571162860911287590887361428 0.0312192204247487049483874139634923 1.0317169263545388386686759238736523 GT 1 -683854449298736697.1087240938505205252463036617892797 0.2987285608957876616213073867743680 0.0515909861299197742526149869430866 1.0529694205445293272555286243294995 GT 1 -122914885237248934882333454673553034313.1426458473335934423153224355574423 3.2583086714052330476688179375899192 0.0268694903871768437354849509784408 1.0272370746369302794212029473307867 GT 1 -1120947995816791.8322952188621496745126888015234595 6.0507211036529254774543511672424721 0.0674445490044160414450654030358089 1.0698266643575111477360892947577815 LT 1 -5457254285953811846892642.9732603604894595182943678862290551 1.2408934450661600706357462879146308 0.0953005405813510589720372117086636 1.1001524794761541271597522679518782 GT 1 -198606488729487776170669405781360.3241572411705161370819477167593420 0.1425626228072549297459201258922054 0.0702034583621694766196548887323701 1.0727894892014551488221131175391099 GT 1 -11733251.7932139558187427158801888995485992 0.8113608917652339406448338107277994 0.0766682634441657935323940637354711 1.0797666978322703193658163134980565 GT 1 -12367387752038900987539086215523187416018812.3406571940914434633826365489950078 2.1611703947566551220383698990391054 0.0305353524821455010971189113057464 1.0310112696183776292219302944724421 GT 1 -983343228190291648715583984465090040095.6938904772067470576554908321213890 0.1111848890614231188448333177587415 0.0659320731363120972136484363611188 1.0682061165629788430195724699164226 GT 1 -92401110656998841881910103821368104038307.1432237205863062235945188774917118 0.8432921210203418453618554911826114 0.0673165010046680601625286325723548 1.0696893650587271944204873194185159 GT 1 -1304884877567.6498353276664606926632353515597922 0.5590670304167245709101865625554546 0.0685820186653919035191472713576140 1.0710471429141703404483876706828122 GT 1 -1611200260679597641561061.5880969917209198512846393073982966 0.3452892729795713009695318404588094 0.0607602851373695958196908730342198 1.0626845449605134452137105388079937 GT 1 -2854268319.4685421433969837661233257812574035 0.9073042112444175311781482189117218 0.0641544168105610474874899770774598 1.0663047913394126998749437903403507 GT 1 -458402.0891014124098612642238415290663967 0.4210212219916751607946869141804674 0.0550881226486735192704986497742704 1.0566636073166616835257948829867861 GT 1 -10163606559356482823070597.8594080256589690894891146833949541 0.5038719426201999614960766784256233 0.0215637393876730495455314533557260 1.0217996341631259373311593640557581 GT 1 -168902.7808666449836434363373184093844567 0.6781695505018899933973856491610788 0.0694435660532040078324061636069815 1.0719725556827092212988113448698253 GT 1 -120736801721434693346703382538037.6317652525308542574062017768274907 0.0074738282385830364154702195081796 0.0146383870609816267405740965325323 1.0147465854469655195893998970321828 GT 1 -4656893424237335.5879411932723797815279555650667479 0.5267315415393280398783544957526691 0.0006596299906850945228216571673791 1.0006598476422656699593387586621922 GT 1 -31798319458697125965849709115295268486.7294126387757900422608124403701419 1.0594059367667029037622945081800002 0.0645910997880096796122344022393908 1.0667715188628459810844853032364431 GT 1 -340.1830285320487950208426622662090132 1.3338617857464474884982582448228670 0.0213903545234151208247262805403622 1.0216224437720654933559345607216578 GT 1 -230173699708420091.2489941610074589481759870638398648 2.0604343022587452725256861278280949 0.0271484726309983777498035821778242 1.0275238010716362624206023202317676 GT 1 -5.8149439639188981522019673389740488 2.5190797183483108311796005745884598 0.0182089009674746150397340702338996 1.0183767233673749961433794403446074 GT 1 -56948079119854649064016473283178326537.7802410145875538401211684484799955 1.5432071000097045855299885751829123 0.0724899549802483196450092529293495 1.0752516543492182907106630821138742 GT 1 -20867312181353880210918892.7938561111674711814548965433790805 0.5131471716156311619521424845023190 0.0882075602023552851583209448459333 1.0923429027510502618409761116500222 GT 1 -559859328099293947026419397620802.4235490565541128509751568167577103 2.4986608686913021050859635403613825 0.0738486754003397011371265062325378 1.0767176401929082703601016468996192 GT 1 -2429710544.8260823450431062003233226617974544 1.4588998694329492765439072152903140 0.0886127040452809265047989724072014 1.0927873392941399091956099460613021 GT 1 -76346483385294831123821270517073996.0429404669523892889565630428081531 0.5304526469878778163073746984595629 0.0491997587153712824369403237790026 1.0504512897260118431135378853111905 GT 1 -9312397356711471929894660782.8066035940759771702737836837150765 0.9535720492386940994690013847179037 0.0311658156143661801404315595703355 1.0316618020791906779415100701087630 GT 1 -1105438173.5144960053227395214920179217014657 1.7401891164120625962594072228438185 0.0388645387882121068211753741807660 1.0396399213485003490573960907886493 GT 1 -161771556859244573394658550268.3449347045036858350329580442277768 1.2297392876534487338242073767825832 0.0369923680472126272410917653015589 1.0376939420307973577211994438961273 GT 1 -294652713630140817124281303.7370800447668111246576870084652368 0.4428039761022777170317993060273484 0.0323110863601960943870440738729648 1.0328446135628453414614752433331798 GT 1 -9254619247472463260196.1705825628077929728570462964464160 7.2032512778855201506185896165785581 0.0527012962530564905807520417179712 1.0541408144675260868905344375063792 LT 1 -7701612891.5456947454885863578297238796120064 0.4468972332454896592621365342769336 0.0094521128356639779589473405420054 1.0094970675565188147504237658017801 GT 1 -3530609528.5609367132532627833522540756604252 1.0282696544961729164826573557102464 0.0899570300705998458101459728183028 1.0942634608834188593697182776976371 GT 1 -1714820558922932042138323187486.4395187030676709990454670018282267 1.2230681260068823138991655542022544 0.0044580513334798876007651664680797 1.0044680180768590214373027990747004 GT 1 -232225726496123935828332964464.2533795535002811370082477711430768 1.8190166727987527177474583617538901 0.0769615407607746123121496186345216 1.0800843776992257171841208841766327 GT 1 -11857398357850305012451279300053105077.1385215518822337689251310385327081 0.5769685386351202417294558239269800 0.0163709712015747623621598312168023 1.0165064562671095339791792768119517 GT 1 -144265192153067931994263797568021046588958.6639593493090706778062203690076043 0.5667061867508611246802494705065072 0.0208679155643466990103313393131524 1.0210887278446909937076360560171164 GT 1 -168343880975615.0223737826630540548198749501595559 4.2872833327896568783796205578959212 0.0644886281783558464103083247403148 1.0666619774662530462034668073258272 LT 1 -5170246314577914886700218025.5002144461226755211954443444279016 2.1723256253551976659978810708128234 0.0031462338707133815447614811016408 1.0031511936703565549957633571211654 GT 1 -2344906.9128582596456078843950488796140794 1.2085447645855694023305342610881659 0.0338985528373075299683281252512706 1.0344864325168362913662432359834125 GT 1 -39056877265067368599535665939599087607.0769959553531730423112050807332574 0.7789790298804154892545916859981190 0.0447031975875873653140004103821409 1.0457331989195511828481498586826955 GT 1 -911684809.8090492812434679079618785852243467 0.2499915269410675024707178703732060 0.0159340377205774346419580254794941 1.0160623493398063458061276199773136 GT 1 -2826900523723118512010742448746.9142524918329903949167683949475824 0.3126798850380690439225465813341618 0.0648361939569060161726525767388305 1.0670335714090841881834849577944494 GT 1 -205505712.3580601927553908784024691790746641 2.7735506259191571644954823833234666 0.0179032844216074596088907286952612 1.0180654871082969871377644170851354 GT 1 -56124678349330375078897.9808087504908074981308769626701466 0.5406616579501360825716886437123755 0.0863022918226854531904854424331202 1.0902554972686420889431141250191032 GT 1 -10780523103.0871917185267505950293370325996349 0.2015299050032261250984299211629039 0.0878642600935425668520984226027033 1.0919664623662951723981590330103155 GT 1 -1035771127275927379057445560393874540558.6771571515785366326577819540943249 0.3950652580926397891399722097208320 0.0806560364315924763444506256080336 1.0840949463815361841461318827564547 GT 1 -17945464971947638773081030.5474925132301825132194820552320990 0.0156217736580032783122913567500634 0.0414821801762501603692844311941873 1.0423671253038406148358842128247887 GT 1 -417550932574226668.9561238270227774695383819952038919 0.8104991041012689950917538720135960 0.0625642888759146510507340958116128 1.0646070982899059604891632065501532 GT 1 -914275668635.9686420771385547194488628567334386 2.5009584242082316407740644345853755 0.0144187249653970255307409031255629 1.0145236849277932693228096027052150 GT 1 -14839749620722.8304321097021238750098682348313318 0.2139661055441135359762661076649466 0.0003609783889445808186961397683864 1.0003610435573266135591626884130293 GT 1 -185995076596163602825958.2746437304292876621536645908633491 1.0064655567676765066179568191360637 0.0942130830150264840996518455642663 1.0989511915667030968720836035939544 GT 1 -2365664067091472923352902289.3101967621592682651850401466614870 0.0113691385597490510159381830067988 0.0723942362346409521941223143141709 1.0751484599877244976837482651711770 GT 1 -95797293350969581966393492476892407133817.5471621549361405869347332692247528 2.3093089040858595247442854723091948 0.0013844384154447888460386923726023 1.0013853976357310254221904867468793 GT 1 -69022568406146646458294760795036791881.0905137702405396800011214841595522 0.5041976667687470521830840206584727 0.0663345308243577411175004024410466 1.0686370749589982767204233105157955 GT 1 -39395007537403109070518098.3332544969596220802469054542416852 0.1445127575111921981422553042774126 0.0041284699268712529666223550666548 1.0041370155872842543888004221615105 GT 1 -61013006300466505.7555249793391538051367985333289339 0.5696843534458181955863995576965137 0.0637798589437233176976263097448905 1.0659046367219922976315772303894159 GT 1 -1106311452699088878328.1877624694960617961224198275919474 0.3473583994233372344620258925990499 0.0696403530565519869724697940577652 1.0721840504471451998429574467361179 GT 1 -359839966300416127214055321919.1057181435691685830752307949775478 0.6070769077779950453803197123514098 0.0832437438840157489179773525708288 1.0869136478205704887816292421503751 GT 1 -5151396560505.4579236020552844929198598557082074 0.2543838377655629473516118775962280 0.0903867546003585403436667926252219 1.0947357748668265283847824029817036 GT 1 -39056132.6923945145241218858323831094082383 2.3158839358036527811237574292880103 0.0510742581252161018470117967521582 1.0524247322485767433971199967160624 GT 1 -5329477833007445093.7249760379172663317207003235659356 0.7092901067556659049726577512588774 0.0166784095350323049619242464232611 1.0168190602877191425945230302295845 GT 1 -17107743765540.6387957884948429389526768503764119 0.8049710529421491910840725939557479 0.0210527287994696221409222961987735 1.0212774977585760018061899616352774 GT 1 -1181.8980625090488799081993853144279240 1.8114023159331949556053257223029866 0.0929457192213027903771583684118220 1.0975529841542059574129487468741959 GT 1 -6689699424552.0855377322687210707882068265575693 0.6842645359983306628656993207404645 0.0582802087502528257235366669340681 1.0600475101745419567516568048469710 GT 1 -1165456939.6385103428945758358150029280090639 0.9255862504811502283185754548838320 0.0527617131596135995229337290900499 1.0542045945962623010149919210071932 GT 1 -5317610821112029689514999115795860119927376.0282483480351184780451204876147449 0.5880527591869989789451311046427884 0.0095524192317950140489773379129153 1.0095983362346561186880561275037560 GT 1 -556760.8261108132060925001809891167024402 1.2110773495571880179083196750212389 0.0836254213488278879759331588277397 1.0873300692380587556612571456687546 GT 1 -316773003037932187510353194570017013.8471017016840675619266377911148928 4.5046026723125040237876094451516309 0.0558949053931431227615484356042080 1.0575177900005658487253394776250331 LT 1 -39234441434439119.0117210914273132157773374390580547 1.1198002480145132067321750363655395 0.0468470522589553368872849214912395 1.0479798973961360669921932932672755 GT 1 -7407517029677492993148943214344157.5788974791523402912614757817764244 0.8163425919992571581631922535994962 0.0319315530214353300254178183064136 1.0324524845167723610137801752685131 GT 1 -341077985478024738770409130756.5484632350833161925552346453413111 0.5432628136620248799075632309538188 0.0794684154993570226460256824054953 1.0828039665667052628147249234027144 GT 1 -861938610887413.7935437892564931027474325963128549 0.3430687164980532905218794628442087 0.0330389125875570467515258879512195 1.0335970248633923901380357433794653 GT 1 -63295840076840008340852341888.0134098941785689376999426148323604 0.7909810839691691452247137362060522 0.0384692282517019912878368786665831 1.0392287105670305952968602255580918 GT 1 -142155.0626285386895127092955362294259853 0.0060524207554112327665672091051288 0.0281888230589648250670478416474483 1.0285937557994256878843739260683562 GT 1 -9388892721.2166307870429317550240095363435555 0.7474335250324987194065957117486997 0.0971239299877846036371161063670949 1.1021699774951562372388939274463036 GT 1 -345531927264965692415558222705905886549.3869381122814912264105781911450877 0.1511424549508854177638025767556975 0.0953748252040334573863461854500472 1.1002345925710840291527059211378078 GT 1 -1253398015782578545025407156229853290.8111379449735818248676788890693952 1.6005931480262226972242078541721077 0.0527250029022178211592704159948133 1.0541658403075364257531517560562398 GT 1 -1294530483532775236.6439091515601429451874288995987487 1.2915241659290078853429488941288799 0.0461830868584647194810485352902052 1.0472835408978600618734790959833678 GT 1 -6202739019738655190026855.0162385578039361669430257887528267 1.1581539527750340332900276968960654 0.0368124955695097226325077163082928 1.0375071774867195582027863321748895 GT 1 -740016559201765.6306489455381738142301335392820421 1.0271029382325380700090607091554211 0.0765943924333846660545344793275383 1.0796866961893126634596515826926228 GT 1 -1694373915458450387185652663242103.9135648432636335011512645869272695 1.3958432760730175692413571591301060 0.0611249684361289926007148919728544 1.0630728953571402990245595819543820 GT 1 -353305224312.0828882645526665331973610181103434 0.6779738024769093031684341264837729 0.0571611651556632942940531746352910 1.0588599178007971301753359450434763 GT 1 -1477906503.4353815921157703407972885295954251 0.8941946887462251535866312999320874 0.0903643913231089572520970032732818 1.0947111896901470451167254510302016 GT 1 -72825310767934565922.8504924702009414358160850582733090 2.8315416359264611393259940492112330 0.0837680643494393652701642427274422 1.0874857415002561794334036766931997 LT 1 -8005213585121415790370621290.4577746181153358474453003809002187 0.0543036190135051063976697841737499 0.0100817564659904367850849246685825 1.0101329215524856326664324480070354 GT 1 -115724843.5746523070816036917464194606706239 1.8936564874477259196161701800269192 0.0645317256387135663589646592925237 1.0667080468721423806786014005772506 GT 1 -3673070639986454.8410593712576536842082622008987237 0.3997491061420404162345192545205308 0.0278368133583483714694203092368797 1.0282316011218145498478512873968627 GT 1 -788438396963736594204752670902763.3987618743087435123906502391630116 2.8381442902928508941172897728718435 0.0272123223124167870059794319485629 1.0275894347012171107893402383165792 GT 1 -2.4791721436516175183839480655009423 0.1266799454952083680033507740096280 0.0016338399968049653052511932151053 1.0016351761689652201344489897436520 GT 1 -32844922366699840089799078959425157214070.1377165770382404981521585621476781 0.0179924341152083114042884538003667 0.0167296218163542095234120507101070 1.0168711425520117935722402986166433 GT 1 -2596545391642924294547763733275477.2184726846177295292458160867780276 1.1109539330572632924745115101847573 0.0210613235872483391422493734969740 1.0212862774199135271078808993055687 GT 1 -1513700914294064952836828558.4093242602028123535276224435469227 1.9249546527607526785784662530324620 0.0466404940783076890123792404864566 1.0477632104491832382711216271806896 GT 1 -73019269228766455835.8397137033316389090464514309576245 0.1467650621430017917316295711337629 0.0622767416570806447203430000036898 1.0643004072564842820074146460641834 GT 1 -10799857256012178457175530175111728574.8128583077158322024899184679502525 0.3338011906314399068232363612028210 0.0101879590283458920380592602886235 1.0102402114831277250156037301659259 GT 1 -391345808908052.4379753688932771489000476709427802 0.1678129848262686029187097444117932 0.0780594836776485545189054825985201 1.0812745734261431845537380239796877 GT 1 -13733647632831514762786.2572346959615347926696723960573770 0.8158559608234037670826270425758398 0.0192569072638747726551777955691143 1.0194447367557922206095980000549102 GT 1 -140806162496393642.8064874851476966665966017520293904 0.3033759738695479828119362117814554 0.0742683407398374491587879734556577 1.0771708711479300224007617403631733 GT 1 -1808245934015.3650612768065921214372248189608874 1.1515933549842515137793024935559416 0.0853314605039856192150567354270130 1.0891935312526155531215216986190701 GT 1 -219.6258927751824125028263823884607325 0.6770509794364923334880818709382436 0.0773374967828197745780922932692021 1.0804917633319929857594244088096049 GT 1 -682.9566241125391972340617761609464181 1.5971844225511227599383091140731586 0.0094455874803233459678158602231982 1.0094904799559272689343451311443849 GT 1 -6628787956625417134914492854.7585898149374948830561250758636302 0.9053214175142400600452583241293475 0.0254549923332425148984290466237705 1.0257845757067215835732701651437688 GT 1 -112813579191644238410290.9303649235739003022911735197349940 2.5359333276111992283920261672202106 0.0006455867256961877476717460748324 1.0006457952065395242700008778920563 GT 1 -304717662706502189464186531696.8864736348019975651700676465384439 1.1481406937733006818675735604493931 0.0130458687436134694768341582138779 1.0131317135197527916121462269369030 GT 1 -125556789550581454095155292571332081858805.5788143753111351200393456264738128 0.5284642599296290009186128936273066 0.0461570348388444443069600646994824 1.0472562278323411978847798840095374 GT 1 -4158910447.3102470034165216594123527459046582 0.1411910785595069691510459963965669 0.0350911225452339050241181275567873 1.0357216096097233457330340105776886 GT 1 -18222883230982871963722790231376366937553929.8627870755961628306906529764653023 0.0476298223459646533686169825424704 0.0635475911707287056727732081090878 1.0656565765107184842765074031720215 GT 1 -299665411308770516.0339524462231487695355733718174131 2.4013666204536417467037228969452336 0.0003137888657368650312604395681173 1.0003138381077643312839836909238908 GT 1 -357.8892058681078748644695605234771617 0.2677121045908475268154496149021365 0.0712122696959007758817815979204758 1.0738750589526160212556904936783499 GT 1 -2246852157155688627416588029201212754488.8523948769400628464117783215879523 0.8799899254721579356654618181357501 0.0703753901579534814056501480361641 1.0729744196526734355513687498664616 GT 1 -2252374723837.2715315615824553696776656112000844 0.7567008690616210138062000233917381 0.0188059881847157268912961378737345 1.0189850695360299916532469118227562 GT 1 -811704482939386565.8746413977282940880690014085009206 1.7233112593238743980695619967732057 0.0399279037365327853865802084797857 1.0407468970656945433444231182811938 GT 1 -1194493018598099996693.1614052554692661605372569351155724 0.2560398222974823676854266372830219 0.0417985190151473763142082653101092 1.0426972089437726519220509887386727 GT 1 -133205904958.0529648852995169198338284977131343 0.8176981948302486936733929393472223 0.0084082323650775385085501326630310 1.0084437809583048181043631984228454 GT 1 -40250496071280151466001516061192524742.7053223015365476945448745979180243 4.7679972319007767646125007972401070 0.0980618889042726881146224385126877 1.1032093742494033737791215546425623 LT 1 -34317.0706881447940925995663009800558716 0.5031803292689946192597145559297370 0.0215772772410048052063333908674943 1.0218134704726883650848206043541513 GT 1 -339988910058638987204280931364008.9247508860674856631062703534875678 0.3222741106064155378386888787100142 0.0471133365606344010043773721277715 1.0482593084869124731717309718582205 GT 1 -3304571485474134267585840561820489.8105356436919199729790093662585025 0.8925674085062260441493409629503789 0.0360148139504226902776763649640357 1.0366793516581558490149487889216573 GT 1 -2103335208.2267012828578443717198434147880375 0.0094895193731968759912263871355042 0.0010790568248074623041613704080118 1.0010796394257671135213155029989783 GT 1 -25121365351649841.4589213848525839947908555485463878 0.5921477006548707405454540493950922 0.0693157544984262364204236819095665 1.0718352155134447564792807227219525 GT 1 -118580937592621982952200794245187939498.0380747423588126708310774330955191 1.5158993573143932133129432914046269 0.0483851058134058341707545993603343 1.0495948489454787391307013972019497 GT 1 -328976620211692794317872084910.2244171010389255622089524975304492 0.1836441590428941024125157696342755 0.0246115792425536820128826637809867 1.0249195070525908324324380439160717 GT 1 -174498.3520188803780154037289468093560061 2.7217682547893485217608725576709852 0.0097907658446773986921846517279333 1.0098390105526268356337269032201562 GT 1 -24450118920235956284594.5232132576649441336905776675278040 0.3243814277699526798016465899148918 0.0407729224303277551943633545816578 1.0416274463410920878943548201432036 GT 1 -2192249.8563075270194172013685256657796195 2.1011434791747200006031072050883979 0.0739336628569307620787258694167722 1.0768094085184200141770115984076017 GT 1 -1884988873914.1201718187379729117784734994808203 0.4782820737804365614824568327115977 0.0786015838150237730436238694702735 1.0818627454041157600694187142149615 GT 1 -27152822070.3721163989330700232174346771989399 1.1796257964876910307594556543501061 0.0726121511688473576961588641754098 1.0753834095139428794760835883757041 GT 1 -3185958102891023816983892584389571416.2055447553316284535581971535449098 0.0685094616464421824061597098453702 0.0338375111093333437186810322596831 1.0344232509536393196217644279128542 GT 1 -58882841885193436749466445693410584890.5641027083328638902288030176006903 2.5944676333952052479857720054905016 0.0745345868426319176911531689221856 1.0804584297031305399671324537187377 GT 2 -17791899555992061714.2918151198684320744536939194522154 2.3871966876901928380765901879989504 0.0102718842477278354402801343534682 1.0103250041246380852948364355905598 GT 1 -4255420793799248.5956969427962172279320128938319556 1.0297100447624195906780017280993592 0.0053165443861277142861218339168299 1.0053307275006731971310400109395446 GT 1 -508560733764720877708434002617697980660332.6179788406236021965664485425669800 0.6436508165248323589409460308046440 0.0809704166578042202759135748468071 1.0844369663478315907214997754668261 GT 1 -406614.5520193108975746405766821982234198 0.6669812035354015659301810094595625 0.0239971753741677209870809366848906 1.0242897984893878700343240276082796 GT 1 -47815836205665.0926807088668032839155592185839963 0.1380126678227065031923249786956816 0.0754608236978913234878125229266607 1.0784598533879794699579795999506498 GT 1 -8732.9408998801631170101934151059108732 2.2111762468106574507898323044468987 0.0234769645133720042477807159834117 1.0237569390955821743207698426886857 GT 1 -4115478502924624900782.0231949258340408127162784768096270 0.8848302827511172887254277202952486 0.0499828504445539116818756776117736 1.0512752423868614169315252120297534 GT 1 -22185687994447818389863286499.0026801720974511062762851387536785 2.5660971890960860931185796297281679 0.0545676811666782625202319980950235 1.0561129758536770186238282108788967 GT 1 -10500137257591.2485128023592247391988605643890800 0.7465560649741148882278582313493898 0.0500153740370174138587376718173851 1.0513094777153603121666843449229452 GT 1 -57359307774835370491496902525328780.6344503805724164573687867103385432 0.0743571345998630640303186590360888 0.0730620438926369300755763673068358 1.0758686454216984805853099080727178 GT 1 -1193231043508324.3064968379581348770027110936311272 0.4558113851032480173278401029735640 0.0608148227638647298149965833271757 1.0627426123623455443717923431942981 GT 1 -2665858252630385086910633549981659219324819.4791958946655186198423067396888146 4.1767691290475960238960600063049952 0.0473640110147983140736181468719061 1.0485224115838932400717636461046505 LT 1 -111787443091718273.1653228527128520636389173470596963 0.1921179095041000665700556889169827 0.0680073091696156185729521767186160 1.0704303067839672106433887436281945 GT 1 -181663883.4312975930886292267836014463997178 2.4100876793569700843005329038326409 0.0361036181798377362525004028008940 1.0367714778872332720514692353944064 GT 1 -7295559664193297961080059270797864435.7311517648849083834489336285196145 1.4669702025507277178712848488012966 0.0222766935976899393499571166019860 1.0225285667651564972241188170334149 GT 1 -565687.0994024189574484276725800377307219 0.1544701524258254629850809256108137 0.0063932398256141877842560869024120 1.0064137641078857408237039791724043 GT 1 -1130415733887.5463085786948732669668792763262523 0.0715566235550174404279188095026966 0.0667027557906693056511887571864932 1.0690315391531102747988299761451830 GT 1 -317643147631113649953375940254312828426222.2795592631579886241167092273077618 0.3033143169827455728461153268382861 0.0135713038699551257311605282814145 1.0136642357769312972982826736045552 GT 1 -2002918585684416338827275093681006377.6172835578142201379525645163943340 1.5891135427155131110426712335061937 0.0020004834842952179861779031159103 1.0020024871239920460704663936195189 GT 1 -5377621194060330080725.8825427098359694257443249756948756 0.3689220215394491986684818463921799 0.0615201434145078338314572723576271 1.0634938866004154761752135942279313 GT 1 -512572545899316281285892926.3126898845407943979841462728201112 0.2325045431020974237197751008876346 0.0731415782261727184781058108499817 1.0759544524008614160483840903885018 GT 1 -5071258140277591333257344542627062855094.1806984642383072092703208570183998 0.3051545504476035011489879597869145 0.0862297587055370175677508073718432 1.0901761162680532807590170122647575 GT 1 -328938870368578217613843262273574957813313.9454165421233590119985535295020787 0.1345812343561148407761677476570272 0.0011462040453884148903344667901373 1.0011468614396318860292461378167021 GT 1 -1905404789310915889449777513463732473588.0560819351459245908942376179724529 1.8862396025833975171596505543862071 0.0338217208213588716106410584948575 1.0344069077824598382829489928173032 GT 1 -122351898.4179799713558495794808237219493665 0.3995966508655114396584058165418319 0.0022794044733942736365200744478554 1.0022820062702210765830178856682854 GT 1 -1072682.1385021281513923660699427778350049 0.4998409006321475028654317959389634 0.0799503354999690445582374391173523 1.0833276272438814225001468724735780 GT 1 -2.6939532221693657689819888194158687 0.9263197991261163527318949811632951 0.0711069279647771052886557275970033 1.0737616468625476647122885511011169 GT 1 -2127.4022076548104574751749962366810179 0.0198111831443197239174625018989300 0.0177740506907902777770742366404520 1.0179339061482910764888396927664754 GT 1 -3161343180677734.8476252172985385104918347369944528 0.0901377253604042789194695481362549 0.0933791904707700417673551696239946 1.0980309873644140263905370678653674 GT 1 -1416831621318613597831816365244343.2874050140474824170488435088181522 0.0839665781426308009157146053579451 0.0324786815890831634007346915900129 1.0330178197877095659772473759127796 GT 1 -9536132520988893002.9102426743226908864583323995794137 0.2489389023422196473138566631546871 0.0921037892911160126117417703745358 1.0966252123008939855436420732295038 GT 1 -39928386494150255.7136190346568782165503410014221739 0.0559046327645135790543038347864525 0.0818364235453457952297290190226853 1.0853797163761170889236574192353213 GT 1 -1849970718.0140765814275181614464681534827685 0.9919242874125080435663181329208566 0.0042160839647368360734218963963895 1.0042249967068029875363123051719207 GT 1 -8296506094063743694907839234220406028099.9802642793209682218557174453710767 1.2353737132176444488538657214135362 0.0850153460412832015001534826024953 1.0888479854770787998053121956911969 GT 1 -196043287419006308251054055039.7477113501402897020713394246252728 0.6046297794256163585523906696061006 0.0664452026143600446701758713874592 1.0687556167209037614207744178817436 GT 1 -4349536395.2828702394558791403672757017481596 5.1602407574117130036891372903588706 0.0632785196539958098387701087345158 1.0653692870923270936928310198743234 LT 1 -376402640035831.1313694876572288826278354145836767 6.1410251664761529780951390255859005 0.0937807296122832406579060499275956 1.0984739819258518320807871875059950 LT 1 -12850161301212136027267629335796287.5119694259999049678807947939963426 1.4288752853422818655428889618574726 0.0646789124622539641345846250623431 1.0668653995135906756095835902585931 GT 1 -2043963886697718.8791808264575052783585701593230485 0.9845879548933877641376049453894846 0.0177874166874516482577912526822548 1.0179475141043962118854613657880281 GT 1 -265024644941746006751621037106.2262858450944426241396516857091421 2.1680925765108572661076182153159348 0.0463413747067282640729216391534157 1.0474495066944718084469109173603887 GT 1 -387302593221447875905258971464.5435042628581614921668131865955607 1.0756378345057970569797787619322826 0.0650436473496571209291555399015831 1.0672554324404598268529392002865961 GT 1 -3415675722537066.1652061716706693957622364551512294 0.8550755881444197733121334648204358 0.0090220425397545047270486145628860 1.0090629876237950833004530248018358 GT 1 -224040343312085817093660241111293.5495974043177053972922881966203896 1.4910789517827409036816353304340022 0.0687990024818662878023050079484158 1.0712801307876103325555290011935782 GT 1 -60429654.9012295027598187790010923534103062 1.0958793205745516850762177674159916 0.0273679049244134087755262005402301 1.0277493823017365943439281514120360 GT 1 -20186820.0418194955037430658760224237069213 3.0313998789903598425171640485270165 0.0893393324122635774871863247356089 1.0935849345496356098142866699045135 LT 1 -675494988837029547830063397357.1166371622691708210976638398251598 0.1278457670771704737586258230113935 0.0808299243997746367025019879358868 1.0842841078075531399321004786243451 GT 1 -17226280310513791316196414127998332141704018.7931990070502206407808223716524329 1.8187096421577020441472013851124111 0.0990148098026937364191933316535642 1.1042664585818013280465451345271930 GT 1 -318395920870852789.3761383015455227496761916426665677 0.3790747945238773524491400485484223 0.0100495413713262263579441442549178 1.0101003788948519585308764370151063 GT 1 -4866678407.1502485719287999084166102432969761 1.6754887399972865838770627149180979 0.0766137366691027266595022559025905 1.0797076452047632968384764054121794 GT 1 -507741459004975077533128795284228892.0118147329974484781129640172763777 1.0493826131198798384429373979443030 0.0556737141890409284835315484255212 1.0572835308080874984883246018036745 GT 1 -2260681169820285.4140648969294555616851804134244806 1.8458153922589248745085827452420396 0.0122025015059529153025343470223084 1.0122775632800672654363291310503046 GT 1 -6369.3288660014004790812576626522846116 3.3498795030885158809367094936762878 0.0935343995796100949290999003457042 1.0982021971957463350307832120546981 LT 1 -4269942228773.7349111366497945098394901071918305 0.2667985504909296385974380268331807 0.0050820033810516197261141607121002 1.0050949606782281140097792817784568 GT 1 -2486758074583600516353179198347877943704.2851857102984208162048406405007082 0.6991279198141107458548315301547083 0.0068998016938987185483918168130678 1.0069237153889237861719473753056761 GT 1 -136995575822604033648728963.9703370920856847516163227846935904 0.0744009363150523078490586402945666 0.0719677280860732358282416844818570 1.0746887710312818914209309346416421 GT 1 -1850113836797413151974438.3504032480915569812310614191275730 0.1066679920783682226171125560545900 0.0462618527300438541075447813875371 1.0473661239627042384182656005625430 GT 1 -41037824215986296241007926827.5063500930928478987727425929403840 2.8417644230718664786525460561717646 0.0601980988994227429666338497320765 1.0640135156553655909521473726348602 LT 2 -15575205243192450651.8047513432105364513914011992056641 0.4912004317145692886906375274231924 0.0940488836128842444577557226866255 1.0987699298174134385149151352903760 GT 1 -13870722271602716201525.5628706272388708398527971070851888 0.8104649175859728261243030988687922 0.0413915746449402218836937312846775 1.0422726030660847523004481191764943 GT 1 -10879020236240921181584581813444877140382641.5990548161239842546826891122811359 0.5678799156186551371934139309044064 0.0330311123867063712091944049485644 1.0335889581795398747072351156804227 GT 1 -976522904961326304747.6276666303588042508321638691944178 2.1540860920259503736304542134878677 0.0553891173360632050151785530905897 1.0569822006634104794029794485798548 GT 1 -261512759991372453917089.6978803358600555159207939622076002 0.4194610064043248493131850433772320 0.0876194460660382910789993285067906 1.0916981018920149395522070919551535 GT 1 -213328041011183925485202993217038431585543.4590487071349172896904358433873711 1.4819569615090655324614077977769190 0.0259282573053459150454134577644049 1.0262703202548181835522496446662887 GT 1 -427822548542267142252108253242241477.4394163950056434573171866760988201 2.7503681684515622372179921876749897 0.0456784708122554995978542467258484 1.0467546316250539618040635740071169 GT 1 -131356471575.1227843365978547845517590173333400 1.8718841341878273602262004875697483 0.0166068348124267316041801053486044 1.0167462742139568348192206833265474 GT 1 -573918262348135.6394210443414433978947900730710322 1.3687029657469298011369728752328248 0.0841000983255702403478273448687720 1.0878481979272464261786860233692906 GT 1 -1351.6008905044948715288421692825570889 2.8050778756049564012448051105180935 0.0415745214072657024911071894532804 1.0424634674660352361270161836093998 GT 1 -4007.9000663929430441603913015119872830 0.7122482923174665005120728453262349 0.0980690103360973368099441112483925 1.1032172699795555081840256831161333 GT 1 -95504497779584039106134382617653381267.8429344388322751240782736646346994 0.6046133750551081107265017059996754 0.0967482814252909426892582319395895 1.1017540062994479166780239615231198 GT 1 -1134971756129646958648.5584113669433174748016079090558049 0.4211037333905710898377146479366029 0.0704174486529444450721550628257819 1.0730196631262100138982186763460382 GT 1 -3616757360646748058690583.1445740278990596445447166123838052 0.4295271023912179916176784235171435 0.0250037440748806944397046858006075 1.0253216480684637014428131027748847 GT 1 -405307249381572.8130387296287050452539962598199636 0.9584843030837776580333273342514105 0.0949271686790798703447148375006146 1.0997398619225767941046537101732172 GT 1 -215699029867955157764977242.7274179045013146599998299738911030 0.3660073918889547440994140164906138 0.0400292414983340297810094875517740 1.0408524548782650719696222387242867 GT 1 -1379145908538985835043857315615.0371819799479226465193949878617250 0.1909243319360106979478167391062622 0.0197605384544279108138427165172351 1.0199583886498660210853606011309157 GT 1 -7320.7834569657611485321855108689782671 0.1272338008433468021156104166766133 0.0001820316968268171065670069564406 1.0001820482666069892378770405959963 GT 1 -38341757101141239251534103171471892403583.2948969745350925343038339323963461 0.4732746522140297900283316348265674 0.0677360158547237366496937204010666 1.0701392596117096740564698355511581 GT 1 -17663938870191564570848.3205276761720785931425329722004604 0.6365552897548585169049297295429331 0.0978758820124946406292026949714754 1.1030031652955895269278060958964735 GT 1 -15010642989511739638336525511.3181160148503425550072641892308479 0.4439766995972579381891625263187091 0.0541053365825259219723957889202040 1.0556240655830565825237485860030769 GT 1 -78165496765381132473874888978.3440795296827489075583850876622034 0.6011746083477375243652411410557904 0.0930340975101830491792511928276276 1.0976504233004352380546772676258175 GT 1 -6784991.8141324374612730312296536170335935 0.0332311876506190133646093373702256 0.0869906630940347269360971669808196 1.0910091718173733006455524158402806 GT 1 -5100622377.7483489502223269518080320500602797 0.5213281044615332871915576617942702 0.0505637080549034360859322953966155 1.0518868474051944677295115745036873 GT 1 -425196719.4845823011991303934835052282349346 0.6917941267897497367509279557247610 0.0916322122843877250027667480077751 1.0961059298422489323064658748786940 GT 1 -546645043606001306421663700830354.7120954309665698165991131165489771 0.1971922273449893687016622459143741 0.0701246596609841700903485219129213 1.0727047444655733525929237014125464 GT 1 -18401685475323881830461818950.5060785638207510833552834837334699 3.3863063540444189666367384492482529 0.0413703315006674272538959229629821 1.0422504429135802117763323336738589 LT 1 -25478031361205761627626700097634878.4072153461119106973562780254372311 1.4826322373649983816928792820954728 0.0153971699625524135100557447745767 1.0155169373604739664367610416238751 GT 1 -71610796468983913075616706564796241578737.4341538859086991940731586444486883 0.4510986800855003032259559589080707 0.0681961807071494543414759318761624 1.0706329807745606006188158316050110 GT 1 -2422526815.2417613169636103615776903734720466 0.1598441650863383774865562731441234 0.0808114392141709870443208965936110 1.0842639972749961065056591069913742 GT 1 -176.7670396501977563897540672359553653 0.1635666174177222275106947830998595 0.0286625774864854523548080504196251 1.0290813710410398465146971412624987 GT 1 -24357301235572817051670566783608451.4531069665183133829221583780996743 0.1386565527753047260699265976698649 0.0888564001043136685273833062299720 1.0930547652796636195151117921961974 GT 1 -3139184618.0411235350659288186293713550040166 0.4048615598987151449941648598874147 0.0304081450828252646143206190786431 1.0308800641590803058256402826105993 GT 1 -86189872601751268.7190086900056908872863459566222006 1.2885310748269797272928652116792771 0.0428642863175003469444821034760899 1.0438100860030350240455732639003770 GT 1 -904177148065683542947513185881625304.7060888949030720776287137437780303 0.3051577432211525515441202264811409 0.0203808936289277280914009934518482 1.0205914498363958145853433416074942 GT 1 -181665098448442666.1343652807999989380249283710701327 0.7479976268468758443943852272173808 0.0718291766842163843660641904039271 1.0745394862870960536882018039945421 GT 1 -1383609784516420421866926634915705924758.8490674889656463607973173503233325 0.6148668078627111311019213114989369 0.0645857590481209406720192028237276 1.0667658093547997732662993749617089 GT 1 -333680877601995199081943389.7198970201797054095394156529962888 0.2592170085544809268265945595329621 0.0278245694902753192366022675335309 1.0282190067434843468537654170969306 GT 1 -106410605291741895728053850984468097945.1653083920355106018450794241654479 2.1980511642228041194904450666238880 0.0228888355554820005881074843281116 1.0231548519948572153997660528399882 GT 1 -725643619035911458479771599188916.1648643502537480182087500152548147 1.2731989394888933563984672462800847 0.0324801250423788636841701689644993 1.0330193116973398594533779024100404 GT 1 -22296581116.5885038628400894756006892268643845 0.8846972688396643059929502061981836 0.0029488109266125166546902582657982 1.0029531672356151352716376566893929 GT 1 -11405148730002.6798713524038655984027709115854111 2.4394468026707818240609834542702356 0.0232626558320118333456810512306352 1.0235375022151207737738573535117340 GT 1 -844480967519203478835.5853882738807381130893560706284098 0.7045291214489195226181906446611736 0.0132445333255843626498060271383731 1.0133330243740447234773873158280079 GT 1 -80809294913634741800.5829393591453445321117560024294360 0.3925041368819300135578513033687317 0.0569182603303529288217028175392372 1.0586023196495959185629783986019872 GT 1 -62533545841375732307655.2412058539073188857646809805668172 0.0898347596929691481745915360188613 0.0469256642157204443906677710639201 1.0480623764976462393247829397503134 GT 1 -1203340.0153839624705852355749359497804312 1.1819727894424052843026331939402252 0.0579684400603346181031472899163272 1.0597165018463271185833996893635680 GT 1 -347613110603.9049341208975936599784533488021614 1.5120746563794092187357472986434198 0.0335344064014351278635299891933236 1.0341095799342334445335281823657677 GT 1 -1066302607794092877665715052949164439.2588233887095270181214004214868956 0.7509734929208211424889675710817019 0.0817050666171304773318051793762839 1.0852366617655874412484001282337753 GT 1 -379409533843695142640207360220429.6711571377774857637800755079068507 1.4225294125868263061414607629512087 0.0550619316135166795089944300226314 1.0566358897349377108185748035266634 GT 1 -938460366090209888891426042493616550.9530627801929203977948705783815457 3.0627886682572378194658761353867890 0.0094820730092152746452835528990479 1.0095273140766894312008364528830979 GT 1 -1955913616.3463514528788691793084655177822640 0.7036926051809939309639599139605678 0.0494530521883174383093737018003821 1.0507177255204812833046919910458048 GT 1 -6138252038103874.2022808912235320916012644579613985 0.0129534299557558241571073095720156 0.0084410442689168981240050818592843 1.0084768716391650826989183519128800 GT 1 -41393.5588669161163737927687839333645289 2.3668598095444915035958038827709486 0.0642528934669651229675273414539926 1.0664100243391307692454718497757133 GT 1 -1827105730727616246858528.6840272922095687665248622127452731 0.8106099690304103798286677062993332 0.0820121192604028485646483200759944 1.0855710902575089318511201141398662 GT 1 -121391498296587.3807987424844791862838259182501313 0.9773771111265873565186534925509966 0.0604787276906359047597813808353021 1.0623848182248999480368575604613837 GT 1 -91359110586151.3558080702467030783746447658867841 0.6797831412402067500025798272662812 0.0419994318445134252403636297378833 1.0429069079472701416623026363145062 GT 1 -19533015669427706025451972996.9608009166514562117356059669549432 0.7304226093960965350036906290682231 0.0433831067267095606247004715925565 1.0443522881874070953171683498509673 GT 1 -11209156555789622344615355007389621738772198.2371374207478519566834825775161262 0.5727323631000707139933619301725549 0.0202766495755932452498851184976234 1.0204850426556895552342957572693292 GT 1 -1.9607327261091056492006232665072954 1.3087944466804603057911340264756306 0.0313033106764491964135394078568142 1.0318037302044964710557788968670251 GT 1 -2809248390319463461293969.2948785981923373442867310827060747 0.3592250339765313188040379291342864 0.0588699430934363459590287242633500 1.0606739375692127067564635581275681 GT 1 -20.6258953902566573357559437146401044 0.0126324934078593057018265438303198 0.0322064163891892626092259256417752 1.0327364545159332083742412192373211 GT 1 -6570716817398.5689024123759837973214200450130871 0.2519086371516649040239283150897855 0.0742815939728061660607221632101943 1.0771851877457334703589995010586147 GT 1 -84950239311940782374604628205.2118452091444465702042430607697032 0.3314548345073364570856378295013024 0.0241392973016125559813356510202935 1.0244354253999852877874648041161301 GT 1 -31035152.1991500394766679362801738078082882 0.5645548041159816462122750085803054 0.0061358854222427558660311751429233 1.0061547873268127591692452171802178 GT 1 -30797401028393836.0028664066292067103155883975457966 1.0013532591321362036179851431740835 0.0472402095661611227055276891543288 1.0483924633073738560517132019052924 GT 1 -278364379922813981948780.8994305239258047868263272180635240 2.1563896869675334486977671437081319 0.0276441065558386325092569020243435 1.0280333960179262271944248310310574 GT 1 -4575009130350906982819593583652180173796591.8464277832760914115786133516508077 0.1031613863843167909791485134206721 0.0931028481047493741738220315653537 1.0977262290173365679300034573172358 GT 1 -130747057157577003054451430744231811747.7721708902672653141212759378346270 0.3571772061695183767260352078257718 0.0526144013285057005770619167153206 1.0540490895036354815555557877209420 GT 1 -25833595230246.0299183894418619981838378653346120 1.4257809980508694862049093197926930 0.0547875328663035628189027173291987 1.0563455438138227356132812053972818 GT 1 -3927718296.9413410160139475632915396760612314 0.0279909043496332664398955057821584 0.0313889786686732089921325119261926 1.0318921704577496754890848830608750 GT 1 -15.3456344502758164385236170837312324 0.7525280980340239218910293655659067 0.0821592830918320480707778082294459 1.0857314144097015520414650615051588 GT 1 -38.0844174865921512832153592455430048 0.3808333469669882157927279402690058 0.0977763482744341161243701759170680 1.1028928387389997045548194746626929 GT 1 -5161341089163249.7284311258348153568043970087009914 1.7572198327341734653431259120632591 0.0580620737312919192797792081412375 1.0598159022577667337389477012472057 GT 1 -3303203922.3546552272517131904508528677581643 0.2696071526368194853118868902120037 0.0303090807000214635983194831033819 1.0307778981581164084543859097307107 GT 1 -9714231768124815686064236667029320.2168413659806719787699560607104274 2.4869679504043224612631258490481718 0.0940118044018127011347056336913930 1.1036027100993706196563886255732549 LT 2 -174144023018465067374962958006659073099374.3028925556400667549492992230150328 0.8629845559983781955855121505111626 0.0090098576798064286057290761644674 1.0090506919062710934192880071890609 GT 1 -301066180590131525.5338476706063154453812790545631234 0.4743046648529285119965105244718916 0.0229182857015599008144653891875709 1.0231849924650231630282694016001435 GT 1 -4174564308130849562284.4950913838648341052695477034586098 1.2941551737712656838842090768887421 0.0739604563956604469287468305889187 1.0768383415713410940039325055471354 GT 1 -135428137998770146733817681339551931075.9320738056159529944508994188451137 1.4511727456564617932251457384600742 0.0619811507494016331542014270424172 1.0639852350279255484886877366666418 GT 1 -7.5112912046856491723647752576485225 1.0886197828027641330248966081378750 0.0470925682124922115803632306971191 1.0482375135320482235880889230064063 GT 1 -140266042124282544170745686474400.6995819664810391969049719665714360 1.3413270002540698916457101552262769 0.0113966599139775445041773272195684 1.0114620995128993556677897881509091 GT 1 -1406572.1998756165396861226606600673205613 1.0067857060296210905579789360410741 0.0686761421136382499889453058131193 1.0711482019512785817379208032704652 GT 1 -575145612946624037.9867234283871976483397794468961359 0.1788243743427086513034365487469508 0.0920513747336994355806921900288058 1.0965674820847513872179486889173472 GT 1 -757332492353823213808289.4182884566917552361830936094919435 1.7282288553158565409468077519701944 0.0678298645433238114507468474826645 1.0702399321832879863153621216760087 GT 1 -56171.2571978179455622268747452914857742 0.8876792892699825428179919514159687 0.0350611033654316652880667294998502 1.0356904991975885580366755459443944 GT 1 -265914988598581591415498302390948440836.8252673996758353221447896953525930 0.1000037533752328257866342543060564 0.0615672013065724565743020206266223 1.0635440305343296411147766102022354 GT 1 -2523125336466.8932825398744981140042590603975932 1.1230751319679511408704896382237570 0.0085449406394397155557894259373047 1.0085816579592083957774589272971188 GT 1 -216186704055066655221928766107384398603.4889843043002327263408669446916568 0.1363534283096326848099040592237310 0.0292017964257184218137754904966727 1.0296366555905277059636777164069598 GT 1 -39342763144.3608264966231956451635993966673214 0.1768812220792683448590338689717394 0.0915505520997824744361924488507153 1.0960160361720883655789985632495995 GT 1 -252775343972841302261301468766136.5410177374857757069959335230522180 0.7869784937413350652835595456791576 0.0233505910241790259974267793797422 1.0236275357858768659958588996698391 GT 1 -3854942638633773324145949841.3911104295361192786201315619877676 0.0722135855115816451969955216241943 0.0067150269379638582749234889497337 1.0067376741728181131395146121914190 GT 1 -77069000657803530713990383.0284895003566325607318326061147556 0.6481661253459166987653103308444206 0.0279195624510892571296791708537645 1.0283167232657282801372814777997657 GT 1 -88350047782104.8613274098609487786823010059049227 1.1298897718747166102208783094035154 0.0300834983822670526277649812725419 1.0305452919963346759952106796718750 GT 1 -129580969819424817.9669115288401727091173363614218443 1.2163561188224104171634169208128340 0.0565146635133463111395201530033385 1.0581744559088737756669013795322216 GT 1 -362696899484803839381796855827646219819.7475106503633495989942375501474682 0.2832900026017716964115227319522243 0.0379230437442341721069934081145101 1.0386608354080838814840679301186824 GT 1 -8690163218445464471721233521038115.4204161626564863152726177243470733 0.0655965100001728002125032806711849 0.0849012197053370416240325159103038 1.0887232629273217575819825532006078 GT 1 -80.5704204023727256777773625492800934 2.1118771219740044260417632912307975 0.0820021698469200968086965609234990 1.0855602520321090057999798068492561 GT 1 -8781585833845491424699946.4411364474786257881210583604187520 0.1132203841884410098158460023055116 0.0765798646089251957805004651664653 1.0796709634386563902443764671315878 GT 1 -191198918024451643411770883267.8188476008860780136522735102652624 0.9983949716872048057024872607373093 0.0183020594900826379184297491589552 1.0184716141671725176604126102036403 GT 1 -155939240729461252.1327285258218220531338060467027821 0.7520565835797417507657095752990103 0.0837382641363400530517870569099518 1.0874532172808657629331779829816979 GT 1 -2.0610806173912507498548095740281231 0.0226135756896361378425747851804281 0.0340952269653986691900823747006853 1.0346900282679415031350583020489742 GT 1 -5410771847.6652874398883404227452167001971816 1.0787448995243301714887493818205464 0.0701209212475341189631519629660715 1.0727007241353494486924147988252221 GT 1 -7415051551754342019510865912831010697325.4267041265489547132856696877351830 0.8979031250010473869904359643080849 0.0009945136628226983300489462679564 1.0009950085196572632281766347381931 GT 1 -1455626168723540162900877601752775910944.5718509341646304130464273369309794 0.2845213330960421749500555206282645 0.0096548914948493199263843963304099 1.0097018021487829653536622337204524 GT 1 -710836287047719639167268095451834874041338.5545104810703271011383518942552669 0.1229754962664080297503643543662748 0.0856847631480045909163240011699237 1.0895798689041378904392016514213899 GT 1 -746893569042922477524387017876969462480.9600881847891796879630063006894904 0.0522043151289020753872037269061833 0.0116939877754181083431015443953623 1.0117629002181364739727036982632823 GT 1 -227279208332105471.2648694636861245459879068862732222 2.1745145870381848272574378781957990 0.0918029256096287147166159304221056 1.0962938816509673150987165516523085 GT 1 -18067083384.0933830853283284568217640256484035 0.8245877397851745459221398826513471 0.0060689650404580533787989556157177 1.0060874560609873429418145404934354 GT 1 -6755898972437384559750603660446777224590.3198874949328601805751635481849936 1.0355383030848155683539015711014639 0.0200709974288538585405394834182665 1.0202751562978567715271287737123391 GT 1 -221719840557684122.7358277633892484018392505419241175 2.2664162682741739615258434215255681 0.0976136424494360151224334057421556 1.1079874468191049496800126024572438 GT 2 -127128905843727744656128.5194053556799112225676787509177291 0.7230795911818286078295051264372875 0.0238713347619780819285103022385293 1.0241608721204241423274526802692444 GT 1 -521497.4604063849789121054604406750828440 0.0762678092728738116640187572318669 0.0831758899851288208056118418406318 1.0868396353582085744284222645970305 GT 1 -1159757825170.3892690664550677392009506696451533 0.3490153263917846239670389968765276 0.0216987446394976110639184637866916 1.0219376243135030192939082434558622 GT 1 -65236122249317932578909088.1925469862832371976967006092424706 0.7393244394105034544744276711225802 0.0129438901162961842174900179226694 1.0130283922448346752991158782654878 GT 1 -7.3848953089418126432969619663942725 0.5756495008933155736017738065142379 0.0144144624216455428934298832325636 1.0145193600338023453385525815153793 GT 1 -108101.4997079431855320837289603383645735 1.0799969372141060924665805937024006 0.0545290361752243940290114652283291 1.0560721012179262946891291608831659 GT 1 -29191813025798180377727140311298052169790.9908137566782351501817066010164245 1.3781734700506091290439289469718643 0.0872566334158961403983630622561286 1.0913005259785742647739306895047129 GT 1 -649.3404282289627572431061240562472711 0.9494531830992012225822401099382410 0.0115683690322172310705101941313194 1.0116358031865171363711972633169384 GT 1 -73593618573171447597583769098048.3122933582160393146211294908019028 0.9213972870157029126705566965679395 0.0110750703551000952557034428436386 1.0111368555539281734246768949633007 GT 1 -7599041065596108076837524.9694848116247442616613870877616050 0.0064765514127249802062006987007516 0.0999391965887339740761605460294744 1.1052929585940049861796056277663292 GT 1 -1150.5432856706570819206749383007302114 0.1971152116968552999109395557289486 0.0870108182014054430480128978478793 1.0910312475279120293631183552791089 GT 1 -100.4065800415688008785805344948102014 0.5166075764262195745394276231176088 0.0842398903096908550682942158794459 1.0880008375912939852166984810893952 GT 1 -994854270592090278.6477445071317365283573400907473993 0.9854150914368221285502859186231910 0.0873018544139101976295574153646967 1.0913500712504680175062864344149923 GT 1 -13758291579166703618651053.7088987624803105183470501301681193 4.4125246620637476877226275629295753 0.0525190931896478207571932222620667 1.0539484933522311195802640696415961 LT 1 -26344036014742464597062.2952335303199859583979269965178131 0.7421732416881773806093051601808127 0.0097632595371352554228568869744060 1.0098112326602768916508174911924944 GT 1 -2514936547831743560328633307176188729457158.0033209468287596651235570289324520 3.6541868119672263051079126697787218 0.0960863427517565059971269648063212 1.1010214350450478738442095124808617 LT 1 -17714847393.8928272097669697333891538238614972 0.8272174889287779332688809849212408 0.0657139431954358143620265158511168 1.0679726169758833723825106519075680 GT 1 -44304757299026432.5777557415316053523771709120886989 2.4866810166580405648542624706095685 0.0258629567999569442987812951124043 1.0262032837997049432073258807989864 GT 1 -2508223743630574069767046161161056.7939584438977984064299096993151292 2.5232276642713184247554878550627233 0.0907205324148899519685607230578179 1.0996250570126333355211796254981686 LT 2 -895995286386276274.1347901908721600541244654370387131 0.3405399469116416471261371071572042 0.0042809257148315155689354297240141 1.0042901151127835474211359697245782 GT 1 -2976807165115881124470816856.1973856497834478983321417437043347 0.2154573168905532722105220882836709 0.0406584330717018989381421868313519 1.0415080976181885979892816588725305 GT 1 -3433661901364363670568964934964938436481003.9031428699398150213253134595798303 2.2571323116490428792867028188878180 0.0717977411214646356536855683061906 1.0745056185661553953634045377018137 GT 1 -8370643934189910.9683709273842528721792323695248771 1.0366347417325260611811411483389762 0.0112484798094010397164499844287984 1.0113122224141239160639072574953973 GT 1 -7902597863143.2845617394135974899385768246515173 1.3258105668009339411054824733207754 0.0152850895583150413126189498163993 1.0154031107269606590871011042406771 GT 1 -300634375534375128680334628471305.8990001768621372862099932249752399 2.6947385426705382382764499775919164 0.0169055694833401703172620325466037 1.0170500998509596185274742524494219 GT 1 -2151831190725879367103359.9363464694420920606199667456100232 2.5692594734616300446222812036863611 0.0001140976285504433109260282352983 1.0001141041381800239686167235047519 GT 1 -14489460778479.5544901800931596738883043387590575 1.8762445088407480980422337945479801 0.0167872517103444591994934130816719 1.0169297546938918022299326428241497 GT 1 -13567860277015010684297722881815692145870396.8887002315923773474354706528697123 1.0984222457150943087633777259737065 0.0143413142025516776750278447777080 1.0144451447556952302129751131906101 GT 1 -112713743410713.8787114374309728028116301869144735 1.5609363890189419037128446204581104 0.0675656630018144316365622888685346 1.0699565460312321979665741755521145 GT 1 -14911816355503304984630112947223015490604.3940847144257556648790490240372028 0.4936996254233795860326992506153494 0.0234635508677498922842637032422058 1.0237432030617051104884367890799725 GT 1 -57955452695003129342083614901917.9832893482874589447294058089639597 0.3905279979187570122091329903149176 0.0274635818725331816173134050126372 1.0278477562447112143476491938139399 GT 1 -3403177878.7263420510337008008832646980233735 1.7598807389756707613729104641534802 0.0012084339553430028236983873904995 1.0012091647004193135417945423163199 GT 1 -70657.3015663377455106002365082807327132 0.2469651478320097343945259412226103 0.0227169028922306631476220863662334 1.0229789072869984072493740367885753 GT 1 -4114847133115107516164986525091878683040.0148374837949784685417689540559413 0.7230131379924614261913252743378188 0.0497381879060825785986904225557161 1.0510177406781534680566935921513452 GT 1 -5766816270048319758829177.4000637718073410026437274538051275 1.2443101175035759342318737438114797 0.0576511975922327580664635544920564 1.0593797943774551123522154136549652 GT 1 -2264063633110030363364271778.0716097334532888958793255389329307 1.1148003029014645565884354886636004 0.0408656734832345587674756765695668 1.0417241445469478778436733431894297 GT 1 -109989506253426354.1199946512059237682806948486129281 0.5238638559499105650043551386571244 0.0086324301425353254419975256976210 1.0086699053917958394364815943238579 GT 1 -333589641292287425.1434578394209213223616404267748296 1.8939755935250456148109795593952414 0.0010016725730137202202670210525560 1.0010021745822460682114281689568084 GT 1 -34395272294162.4579476194637866771392501797138657 1.6573524796120779096852135297867694 0.0281322365929368696063287477105858 1.0285355296542848568937828720008165 GT 1 -101795535612709032901937787679212155074183.8081271276211730863330977622296311 2.0505319012927031564276521565588910 0.0813689453561589989182930832542157 1.0848707011695550825728047716380252 GT 1 -4224144697903438441826.7681152982134818001638050191903319 0.0414748549435498365641211768616480 0.0521881274507852202593029962791421 1.0535992430983061450640069439311785 GT 1 -23327995137063170.8359201585920691739808362087539290 1.9948747717191157216061143843112573 0.0481495409314541292173633685777042 1.0493473373396053142542134779728434 GT 1 -48159770640688433662.5028937634340232110407807787922783 0.1719169913173965270068700571677317 0.0958182256037098666116065884448199 1.1007248609314038940773623304546557 GT 1 -2864147495579806022851366.6137736879000197590666498686174480 3.8209329429080136618619412286303867 0.0087594933394126450736941231195812 1.0087980832183226433393221166023890 GT 1 -10901352714771396408659101074659.0977358213592192387330656549085604 0.7551730795515323320715628576628771 0.0280129016157145887471492502915276 1.0284127478769846457313354616286242 GT 1 -566875887426206588919876163251.5759244890852563166410725968331734 0.0147897867316730154248288388311220 0.0565513697462819485747296291693977 1.0582133615977714921219229832294188 GT 1 -36293265025662024.3358309124104749875094653476293839 0.8482475475788888967927738037212480 0.0727907765625935379748698924338896 1.0755760393816046757982107880844452 GT 1 -74687331955053.8621948429386528511606703851572598 0.9607749010169068508776233782420045 0.0243422802228279448550417126172270 1.0246434510272195932670667513214782 GT 1 -1168850751.6238088818082229969726805326129175 0.8467122321592297181725747810925135 0.0370433417748830067453613840053239 1.0377468752320433403475623652785620 GT 1 -176066420843118302128.3215412233902308355868270270895284 1.0433714525942606833347792749913438 0.0942874064644583035895563832142321 1.0990332489440767928121266002239865 GT 1 -4480964109489.8044733635264816123707380959779021 1.2147340684060187144649980076266002 0.0807228758222192308771055055077548 1.0841676523796362396636027207763502 GT 1 -2.4036560138553153918296943077665360 2.1303260288073663732389702631328829 0.0659799248464122643603075470172115 1.0682573472438235996282927858588715 GT 1 -45196443.8274560409062532892608838902029762 2.7575731434745823876464292556722123 0.0969570949006833211449287207383153 1.1019852127411720812114386159595854 LT 1 -24451.5657874231593107407657895114333792 1.8648976697531250328628714079499855 0.0179972867438109345010077021360244 1.0181612076414789820980951938834092 GT 1 -616131412680880354581296338.1276773959032366055684789576905932 0.6328137688677057953313438740740217 0.0010742937324724732407717808302710 1.0010748711996008792848293976388933 GT 1 -480644309727433318523262270.9508881283813672322071419794930669 0.3246686690179112023765940711755299 0.0706442997423536146080518515997936 1.0732637283503662538683797777969327 GT 1 -186.2993506175308733031825865939920641 1.5089919139776150327155694705862826 0.0954143600620381557457431676136232 1.1002782965526090404439879994247470 GT 1 -18423347576395909980405896517552.6953283949267853853113718037584894 0.1513553233017165162596845805585183 0.0076506550954822607914986934320408 1.0076800714896834154677818259514153 GT 1 -12613076805218874516027534091987809329276.7252416006789546072898423441707667 0.3766412438306926784331981929864445 0.0771241842489416810818216226622417 1.0802605976795266031328621808677072 GT 1 -368648162425944833731928107216557489144.1183299654030985068946502130185955 1.2013579315332453615605241699104784 0.0793599996793048401844089101912726 1.0826861982706145888386258374581063 GT 1 -382779703961717636.7863336212784003824388773790599192 1.6680061530811056304289313487270948 0.0641511380186184726834210090579179 1.0663012877847047850170533956668742 GT 1 -5.4833528657872244882956998209892658 0.7974959456621775437807611580295893 0.0674023791855735362299053689527527 1.0697814457430316749062364479035153 GT 1 -5571023124799285408451480993839594681.1623212609377764426239680685631915 1.6901729506293152749225928209016334 0.0695090876779254184643105630869985 1.0720429693934402715456033286435815 GT 1 -140361624482900.8679895637282279454447332824801466 0.4833091732483793064271167437928512 0.0957828017518058804353672229310439 1.1006856838997373526141616661220111 GT 1 -167197684692908411188190.0842420759023459644484908969264490 0.5921000914389670412025465322089417 0.0681452581924033518783505588705378 1.0705783328730386536098288654714032 GT 1 -23011785398424827.7009057728464301061192069367925202 1.4378648033725078503096064117592742 0.0986632607655264205559365895757630 1.1038763517580592738081022028391359 GT 1 -13147913960513.0413752438810071231526297574617989 0.0990053919955442629921671490368644 0.0440579514669923452338867988317721 1.0450579864574453044059702343933402 GT 1 -12076686411680012984703791574731166.9855543628355679315108620796414225 0.8463418120757647855268133289177092 0.0300193939360322945583534483021165 1.0304792014330731010113455133489448 GT 1 -190707764255.8599884238158094351952771595497273 0.4644236027000547182227723085173679 0.0336811634613176101137214753767676 1.0342614406982960977614695316003474 GT 1 -138859294344003753914698167465949441680.6515253199969402055190329415505227 1.3657284863362519392565653328050275 0.0080748700241889900246990536220645 1.0081076483602625705882119501541046 GT 1 -43943831655591987821626628.0282546197275957469581890246376749 0.5477111245353137416087808019114506 0.0823433991877008694686594875384609 1.0859320315336916776653972487987806 GT 1 -155214479258700782078290567.6462780149115332727826882938059027 0.7846479685438172995981177694821690 0.0001445782802553793245508455301858 1.0001445887327024168098747375414209 GT 1 -32207999545751781416157.0170428635043316291519772404211601 0.4144038229890030843537392816227556 0.0143674657331746274682360871745646 1.0144716771425473679487241168181365 GT 1 -17706110403559393746656.0420965982820953102511960678332906 1.8570525508027926752176820069441156 0.0395890227754627073060128638532728 1.0403939848539021046212374591491311 GT 1 -3775748684334417418957.4107675888453265031978305764534793 1.3989053970684755731213663017945709 0.0891043174120105916643511104752502 1.0933268969637719367522139873570311 GT 1 -151821328506161415191663015924114923658263.2913928982925811819133369723044396 0.3360980880967833103532108875904466 0.0370908439269690525414486974587021 1.0377962059296890538758730875158999 GT 1 -1797742000338813750811922560986258.7630217462460155530195833444626207 1.2026067259702150236532869976566499 0.0840264760236198675295796535204579 1.0877678186816510538855408768874131 GT 1 -194096383271892866.5905669554203100646064071852891282 0.0378362960665125529962019737530766 0.0390919271850191241350133514577290 1.0398765324281583484196593200154013 GT 1 -8405889064.2116129942822660990705656456740795 0.2585230109007211304855708780847561 0.0945916527877781649338963335424015 1.0993692246587148023547369587381692 GT 1 -60.0905113767730345983891030802269920 0.8614648600705881867102744614431225 0.0952766018055603508619707849826544 1.1001260193530365450163854986812045 GT 1 -59210309.1163175001945659274671224235821931 2.9199813972370166535973961766389774 0.0290054119793987620199854186425013 1.0294343843205556636620655573755403 GT 1 -157968824420824142471812221793669914271.6572986887091469717039330574243404 0.3920165146560578653489992370946811 0.0688984153614504375294477655619682 1.0713868941896816022896759405133461 GT 1 -80898786290602499786447788402.0419418459041489505191140815285476 0.2281293540064524321101530156400003 0.0544741721829317982655305787264368 1.0560140746865746948877355794680328 GT 1 -185080365830033161609556369599045.6764490422087850448992781151030976 0.3626051005528608654586258866129481 0.0441261261203686338941936269952342 1.0451293057226590306478204711034659 GT 1 -7437588141833.6360670228689482532728916402618734 0.2017472366719375645091521468783777 0.0665473270397160544683171555804936 1.0688650157748228561526317591512965 GT 1 -7503949299173743829516983977167814242702.1009155013757388512886086995149939 1.8799157593920388185780529302635161 0.0388603984948015013824538839390808 1.0396356136471823494802023706864386 GT 1 -53675337128205021089265.6718479613686832701269052589557825 1.0437384357139161684673195288802531 0.0535373467363116145840731362625068 1.0550237668358124601033530115101549 GT 1 -266486195474380533111529214.9921106384001259744495604468425510 0.3985740260935141426186584874809341 0.0036652455496345846973810037734361 1.0036719790203551408143590447344722 GT 1 -56.7329535494032325054246349679681398 0.2305847407201856347707347607817897 0.0617950250733362386242644295118351 1.0637868304726933688095332814144573 GT 1 -794578772837798468.1474551692527922093930288890747772 1.1754123268344700019101544578491872 0.0842620551578424668454043858143819 1.0880250416553909596054393605967019 GT 1 -1075984132608250.9693197365183425653908494443952979 0.4799465949941947956346890560985480 0.0671057274428432865197949516020327 1.0694634044304054032863357697770621 GT 1 -119439322240593901808417770794281285994668.3279031993877295340008858193340619 0.1478532265954381469804425039982067 0.0758930912352976155845151918514047 1.0789275119071263701776905883702715 GT 1 -2891.4487605151899940196738968251894243 2.7877953869834413476862893223590889 0.0868589116543517161565716374413307 1.0908648776364670861517129976629018 LT 1 -80826757595540622779.0661263302761697665097884267899685 0.4028842259474494254541069659420590 0.0986781620198976253342536302418957 1.1038928842890220357522410351359319 GT 1 -43097080266822943507043554.0939994848956658774539224231324979 1.4242368851959895177267535935323413 0.0109677394487304103605096361813740 1.0110283285271481991146942488827195 GT 1 -945037177242552798983210074452776176.3040377458260325346731472305536202 0.1119079700217146159330145677066859 0.0025444371444200139991879406984085 1.0025476797261424143993703128551749 GT 1 -11.0899966024693099498984190731713318 0.3529029032074776134438585871844283 0.0395487723358401788622342724015237 1.0403520761323644742328119125048410 GT 1 -5174574012656580347456285172572.3012809362328146262378114675539435 2.8809971080059549032542744526923451 0.0272863693037290308731727675624696 1.0276655559467067994896105746571349 GT 1 -7837730194636608947595539792816557.5368819824452948840570773207371346 0.4292491176810046883651910279690157 0.0010751472932048221215669334425942 1.0010757256786594002010429776885014 GT 1 -500824821281197065558.3563609085602827784059669482120636 0.5560594750895858826617910962491877 0.0092864302092528867343156032363425 1.0093298179224882470549988287992738 GT 1 -8952664.2914598325684003442705235242199642 0.1831917448124479154369000342162175 0.0112414644046463489779031841745369 1.0113051272241559116507674669474374 GT 1 -882510258269570595174698630790146269.2734719054561923225098456283231042 2.1361443557283948262178372047978040 0.0151097338968025404925220080648698 1.0152250489874160549447877019431594 GT 1 -129.5379895474146754223223496418218415 0.6544637945166247731349378076857544 0.0253560231608215594385870984803346 1.0256830266283174793963243593557160 GT 1 -159131000904079906217651999662984541201.5665360501885498753321164533287787 0.0476862435912200746335031203098247 0.0730717858847474767506967545334013 1.0758791553412030438654985349588601 GT 1 -5232991002164051170420367817179861352.8579937268133182217570648933479198 0.1856147630190700764459906231110807 0.0163601993220584394501381850884054 1.0164955051664210757119958398776012 GT 1 -52971282832371659050643608422.4879131794722921108714756685631857 1.6673590409527706424546910243605082 0.0767667535116328830304175249741839 1.0798733716492925796989806494552443 GT 1 -4746021600520.4542636117341017439895506779092869 2.5031718756418953664891683162512008 0.0753095533054705235098661418455723 1.0782962497003929817402223709020045 GT 1 -41769140393257416269412031232895276373.1342694701698310257100550255445757 0.2317322836115691937627063658267274 0.0743380782146687763434514157575772 1.0772462062636809673812965783692776 GT 1 -2659758915575674730.2052841988499152637172889123049770 2.0021029362738601118962281569852971 0.0471297387187842297459273187348574 1.0482765217610057981518235725008609 GT 1 -2600451.5044896163291871829552784847585345 0.6633214891408061491471787467629942 0.0087965236965112218912929573555729 1.0088354415067999976111354919918270 GT 1 -9415062154697662204859.1911158484953282809797990511415290 1.1405858107322642792016510532756958 0.0659267502346093707833362240293817 1.0682004179554331910209533999731096 GT 1 -1036677288437230490052041196428072767.0036529178109458155355985563142109 1.5257003099127932297646713489527757 0.0564946375958743443579092729718348 1.0581532306664976576025425963595232 GT 1 -1505140.5193238482676687181033129808023352 0.0081544512035908476850526089607037 0.0475819423421538414383270158218578 1.0487512043876356914253097516704690 GT 1 -2.0757217825935710291929316449108238 3.4880752790122520558700522196365429 0.0463685736170965407835087294476523 1.0474780276950885917768674382421261 LT 1 -2229116077954844253406.2434406657724233597704170922519261 0.2835969123542054871555600700730501 0.0443394683573753764513881583504558 1.0453525214150119745103899423957492 GT 1 -2060222329462493.4953872142161071168687822086122016 0.0315885460269017186031741185077381 0.0260231514753555969820232115340248 1.0263677451039851595013087535267258 GT 1 -778114693480.6150677240836467737966628673511291 0.5092941234584561401533272482447535 0.0809830232842235762744112642925455 1.0844506837657615870800958216483932 GT 1 -70.1437799640492343813006763548328073 0.8652640303847460056756293828482804 0.0480489663812248232572779364141834 1.0492416807880066478721243578592462 GT 1 -83874294768249616232.1687348266848655029789060582164008 0.6400813234749055529253078529163100 0.0419731990205560412707400330796203 1.0428795254324046395298298125004549 GT 1 -44855832.1724161346424985667945715229175842 3.0785346194153125840031602975101670 0.0589583615204755097410259571136563 1.0607678911945073085895447605897278 LT 1 -200.4938888301092216159738354177773907 0.5639125957249688187405301425465479 0.0091347784650478659275073067776321 1.0091767563887607522499111854857008 GT 1 -26125219119808646040985564096498.5423034868314923228176180479849682 0.5321481852775749770121518136515611 0.0821173892291390394759776725306304 1.0856857715156242081034842699655385 GT 1 -3978258603775352367462147774490755.8432902411950827642240219978173235 1.7584443839178756569060638988153737 0.0157567737885410860156214637717227 1.0158822313648945906920879232480286 GT 1 -191261.5820849876711618126699657228667961 0.3595854446109571907244190790059571 0.0923541836155748004000702638657226 1.0969010465391652578290297323887560 GT 1 -360834685758716309865348298.1022430584343489020564031657713892 3.6762090309915788740804266652535211 0.0643203699114307461199166074579391 1.0664821366405897896829261130258821 LT 1 -103591.1294209462144282552187040578810466 0.0050233919045183529110480378192030 0.0222774610449024026196594087370466 1.0225293516983872337046085107940650 GT 1 -371884264951730231193.1376617525510256862358637045938634 1.0738818863343087582656370848476217 0.0971448043599904562708671388804339 1.1021930976267105222230355997053025 GT 1 -603246401345619909190273417667321.8750661979869807039852479400095836 1.9112674300983279842083416815761725 0.0288975477536639237373978737577014 1.0293233041596684176011854615232526 GT 1 -61.2955079517676719120999991918316663 0.1254952493900296808669748985427893 0.0296093353658232366087153467439648 1.0300565415199875271843828382090269 GT 1 -57370416.3266058706804261907536893538472820 1.6401094805682654745693683661756651 0.0148548860012307731406756288540258 1.0149663248045232938312086603427744 GT 1 -21828924850321.7506255122326922899248332038550532 2.4414083398858413357387628377784703 0.0259720829758789719948719889335685 1.0263153135079321201617742435209752 GT 1 -188233567136.3046385796439692894798758001602062 2.0414797449386701615872497439152771 0.0820001247694836940875068707232199 1.0855580242761260795712053515092565 GT 1 -1228462417600634534147792389630717445659885.0680582159810684494635267537364904 0.8555161703402546496767231422641349 0.0706441111788808135604120239182124 1.0732635254533983660142745501424943 GT 1 -1694389.3910355857499075771781346533483915 0.3526298747468060468926969156331640 0.0568507368399829002329819866215695 1.0585307234449978859164201165887658 GT 1 -482636943086915530012537510.5732761645778890685730186219577335 0.1004641737072230378625355302682372 0.0297035420601591711381377029183251 1.0301536274369435596533435351750244 GT 1 -1056375211814361194746778577481509566793460.6351542739330966168396474214586285 0.9785312192649975887966677748480314 0.0933158868400364118174971344316752 1.0979611660894952271365068964910495 GT 1 -3396244940916963315250.0350199706132316406354749201321339 0.7019460208107741121679564213328101 0.0442827284887491447305671038459818 1.0452931507677759601064830208280787 GT 1 -1173172319119361995723010.7180740569528223140887308865150936 1.4536585452272226138054211258071113 0.0214881752984311895616217778954165 1.0217224077003020200128272494464636 GT 1 -172461687413214.0960567345453155950064833139699906 1.6890692973202731626611005838332204 0.0426600428786783999010228798981647 1.0435967185074731163428860451831684 GT 1 -7711.2614444272797195407325106114171388 0.6751419250212262296617117177055097 0.0845396047138773981704742596201776 1.0883281760041702775398968488886969 GT 1 -461556550.0542585333392753165777496306803951 2.8032438799131106647191223723760576 0.0702810724467709111456901829280006 1.0728729669524418294111803366824386 LT 1 -1830830057647885719628547583198345269002816.1676210215294126724723330897196222 2.0225617222187611046421725032621754 0.0933463416772836804964956905667265 1.0979947559013097471233095921442673 GT 1 -54875945818777159881464138701223702295.5483019997425923727064425930742103 0.8470228911548118558210896198421714 0.0565417424294594287199166674045041 1.0582031572608381478447266423525498 GT 1 -22259.5082357874005616397506254749423315 0.3502298740761372957803830063121320 0.0841267528436606781594107639497373 1.0878773003497918519521740772329802 GT 1 -177782654982299628588515178.9736207556179088847459149349576388 0.7411713900490522287288328739020909 0.0867707893028507503806119493518527 1.0907683776532867469360368191732536 GT 1 -1291059539563867773075199952.8237447704447861824104050259618382 1.9309450463598334446468626823018053 0.0237267317982349259616877031628652 1.0240127438467005064812644823126004 GT 1 -4129.9543331568596655093429755013675490 0.1399903800433158486723632833477111 0.0325705865725398141677479973066132 1.0331128144374580329031937708631668 GT 1 -4101397122915186786.2593564584773685031039521846896265 0.0003417427091457519840682804359429 0.0582377683398526286573111535394014 1.0600024442701254002679451521956098 GT 1 -597616974470978687649347544706920099299904.7387599872866216116520760144687287 2.6661188241937249679118567107026813 0.0873593097055710580245377355563245 1.0914130242656019115301759278492467 LT 1 -70012544203459265884801502291153209804.2729034391756217879029800355610894 5.5217926209329936978986532740629167 0.0310153395026001963612231417753340 1.0315064974567118749485147256439864 LT 1 -348407.0100969367190531491416139056453294 1.0120053200419028981403647066785684 0.0716964748808471132023648867811661 1.0743965251912886651672872304004314 GT 1 -1723176445641.3941203128013323159013610870024854 2.8690022987296381247357634294549534 0.0697566012420014779646306008939466 1.0723090079826811340832559055425617 LT 1 -101430.4073284388924027617600187260723530 0.0130455874701657807767919318436222 0.0044158173593798331932240077403661 1.0044255958782425406574578317795097 GT 1 -883519937656468.1420693574401655490237450432886593 1.6206689656257645586516208233888071 0.0739329015978246845959502569397605 1.0768085864835801178596775138026872 GT 1 -8616653602445513.7161638656821934926203490195419530 0.0651926525625799150380337453366781 0.0121277161670671654924161205381265 1.0122018569655905766400710791587410 GT 1 -25442060669895947120735201452020718671.0913605970981707597393043682662281 0.6388062473711555448034534747141879 0.0899082485585907918044316191033599 1.0942098587940262733773430201549003 GT 1 -25640076106840115319836113.0948954021562707976218138069567424 0.2143754860606222944235872112913796 0.0355553094195525159266401711322608 1.0362027934538517465231942921408091 GT 1 -19945450451287598408532888133038943131607.0829916863279648775867497073431646 1.6200438289446061966180769653922343 0.0282212933317217994997097527815476 1.0286271684787505018770167829478867 GT 1 -424131441615953405775256875066938.5063331750237108956302684083504708 0.3861426050289822182928509080356604 0.0661512758741931787902361785958143 1.0684408194752005453941467178975800 GT 1 -57785610490189042807824207002883.2365331879723690196945697101576216 2.4170612578022549052073923967461264 0.0499299611314757074772584448211019 1.0512195719803515632123835843884743 GT 1 -14849107134819.1880203308480082986284470161036153 1.2875613985676394100723601981047644 0.0178930298792253255413454638229555 1.0180550456836556551141647222257338 GT 1 -19925681572581100274360443417.7054893394636692643860477843858650 0.4135675673249534047874747191796422 0.0964466236519374567765943522241676 1.1014200933865343866210059372415625 GT 1 -32209257658.5520401033771691744476290356518611 0.7436723417232499820539947437412820 0.0691948048780658143227803901381313 1.0717052662181212069448972766687810 GT 1 -249662440849.2023509281908430534326403280226965 0.1295501983409474739312120844154834 0.0483308233553046100217471369817436 1.0495378081085928049516751579311481 GT 1 -2621489427.2373782054938871417311661138344935 4.1442670653114014159172941804916133 0.0911674521622643083618381341539070 1.0955944175745435664835278342007571 LT 1 -2411639876568110163.8965477846617269523725485508089986 0.8889682903706480834841744581638975 0.0240332404468659363172684189069325 1.0243267509839294167114208351155717 GT 1 -3416003602077.8125726190002177658660147804931169 0.3795063207632332250329448715210091 0.0341554482685393861641800825908929 1.0347523772512056940452213487857367 GT 1 -10.9602417291993284110947740137350205 0.8405528404159618719933535196469839 0.0663409217900213462950053539219385 1.0686439200097663158491371394641227 GT 1 -1197197076327574.1080203904334876573012854417352629 1.0331070741016070899796175193229935 0.0580956456422443349326858552058142 1.0598515442128297716702167856432310 GT 1 -1272880703138120133544003.3293782398406474831517371563778470 2.1674691487205674413826095113146460 0.0041528106013617826058592529425383 1.0041614574668064761956635363515141 GT 1 -188102431818336413999430696918220288237.2179173703706154170781901553890867 0.1183043750228733657001350063792042 0.0723658691052356122514433815790976 1.0751178794364015137379380570183587 GT 1 -27297040633146.5636731984851274225911786735301158 4.3086381785035424309262007697106567 0.0546444726908820531753539606851889 1.0561942028664301216671847823995426 LT 1 -234863296595283869781755748253365771.0163755257614072711516227159762015 0.5322924487211647004172829008694487 0.0911689420969297771234289385928798 1.0955960569699308794823916368817002 GT 1 -841214923375680305760527523187079.3617587154520920988258681405823242 1.5835856257104883829573712244903541 0.0761835062404168311534055273000992 1.0792418268913009753773634505339395 GT 1 -1022667386657319390470907.7218640239360940869316897962349401 0.8044878456321823591533597836420747 0.0640165323556063383915409540048909 1.0661574654336173131211292881548671 GT 1 -77915794180.8417482735231060328429299495873838 1.0121624738961638931979976162524366 0.0891638799715383901164168703608756 1.0933922881036350891943288903136890 GT 1 -165509363384164625032361276313596914982.5152384848021773431484524411672987 0.1437745767283524218000089549029215 0.0108492813575678819087842252816758 1.0109085639830690625639774983695868 GT 1 -162074380418819866895147021294061475157.3596653956417642483422208335691626 0.2026154935629627335069259993343945 0.0334803447874603736527101282497398 1.0340536440557552192763464996387800 GT 1 -45483815944859939585526032510248.2387807038312806587708872256216355 0.0886660484854366139276482740616699 0.0671385568958240937034324746682355 1.0694985960181450218586729040203140 GT 1 -1725745639772930160609686435596558.4737649731567752356360084768873650 0.2167463650601228469080461955654964 0.0464229286108598426140206987875330 1.0475350272248636682148855360562027 GT 1 -499135356.6915884684151837088967147973056040 0.9518249138498920426759574867473311 0.0408668461861246446069458618088361 1.0417253672157384511514896645959980 GT 1 -22401758250805984049.7406706923690893156060541753330222 0.4907526041990260670275861688437177 0.0773574556530664321367380624437061 1.0805133953871090571935670729824293 GT 1 -96743027953801430.0798388168427316068017536966485411 0.4586568204680124042591934110893037 0.0397440228642291061763139847806344 1.0405553872133804155653559850144166 GT 1 -216018863241757838637062056926426737439.6284385803750370771356396279553753 0.1635062997661667870484759163652201 0.0122864373878231633397950941451198 1.0123625396525850228347062932931762 GT 1 -18335002166373617213471325406108.9502595454250372361779104977789448 1.6532268921408278658351464258724937 0.0222342638340840225859655812733129 1.0224851712127509971427966493535090 GT 1 -8455.0537837682278716920084440582460726 1.2952371837580937892520537109223948 0.0885033498791139021385885143043492 1.0926673599981088841239101052568425 GT 1 -93844.6458332365832883409914775843819214 0.0008235423055643642657611405016068 0.0406132859215651603441517240792866 1.0414610381667884421314924901035321 GT 1 -420609397232139006014380313956132778131499.8819141243116341328082740429646230 0.8050574980087359207476149657662355 0.0096134415018404215076778449738645 1.0096599489349373366821159626683799 GT 1 -94801141948801539753317742657642994857572.2236597142773855715239329188410518 0.8514483889689372331250160564794188 0.0875741472433820367507540543733599 1.0916484540800613287111383012476168 GT 1 -54342781011544036875106.0064386937751404957431497275777996 3.7616672064953447004720385298140835 0.0232255292928248295818740154389496 1.0237756052328988662588266390308001 GT 2 -1534544075.4329018343017130808676109402954836 0.7389058398684387248762241467189234 0.0881764124935218498954295526627473 1.0923087423703888675729883175796465 GT 1 -77699755790018597514437417.6326461039868948600852934543748789 3.0346536872113179198197276868984159 0.0115514362572453808162148214739942 1.0116186723811020477593267211114525 GT 1 -376035406933633642835.2509059409805664048752305338978521 1.2612500543713292797105406994855357 0.0453374255068181987473657196150343 1.0463973260734696892738380143384403 GT 1 -47250899554893360363.6098827496070892751958517442224975 0.1241740600499886375862476949105700 0.0514388441157502228792130233750648 1.0528090152657099236450904820242008 GT 1 -71097752850004001093650161163377.7818625553243317450659305058040429 0.5399277648973483791567511293648260 0.0937682340922058223227217073538248 1.0984601933932764571964928043437238 GT 1 -1619190.2781658700828307715416767406650566 1.2406291885147537741374982893188165 0.0911370498752970785868505680743233 1.0955609661114089055966688107376447 GT 1 -12610998102555221580554380190816516137.2617113689125784055814813856857294 0.8849564909445168580465068562177844 0.0366416029719747908431930006954944 1.0373297692060720284161992192878930 GT 1 -123459287360208324609.3774056670177827053585448605333255 2.1833781021025506652483537423270971 0.0939779927846565884710699467663602 1.0986916827095061371950927257139980 GT 1 -853576986.7494397680191696716010200181510643 1.0093579124653603228432573024288397 0.0909449970437925059971931805998017 1.0953496773325137135392768978025895 GT 1 -27237635519.1386180387996415414681847365580691 0.3116351350635210948927852480588235 0.0082863162671456243137161313242732 1.0083208386268536571320926417323184 GT 1 -4485.4651141248415265332377179926313874 0.3520169609946589970284312354362492 0.0076780700732337705254784695697921 1.0077076982086276738242033897343864 GT 1 -572.0885914310417707302029777667535450 0.1941340535538094118798378181785237 0.0378114132990899642528650505181812 1.0385448114573583367326742464393527 GT 1 -215240497888906728146679.7815653393937487314335463763565951 1.3381429034398550177410583042779595 0.0028833729481244671886172195603510 1.0028875378758567517854396026456124 GT 1 -480303305092265705533320514901927.0381838867793717711176996076103996 1.6644822019842237019107072896001808 0.0444699284168877723412251092393722 1.0454890437058759346669947076680004 GT 1 -663961019506149302988.7749374417628786237300926818079949 3.1201750577987535788893622025135658 0.0875758436771101863993381317213152 1.0916503133383233333277932607016983 LT 1 -1411881222532.3277087584323216770324290285787632 3.5527999306534571679500660594031166 0.0905023027070115063190917155065476 1.0948628128655505996604154176750797 LT 1 -223694352166796396471.3932035650352082023880054403437184 0.5114578006663706810819043869039878 0.0690367068114123838445740788823070 1.0715354297770963419220274255489517 GT 1 -147367039463279321495360984379991.7812130398946454924285217116340561 0.5680700221559929032718911945562488 0.0847708477189731491767097199114826 1.0885808054099948908230342845691928 GT 1 -78248140472833502585568.4385443350382190807166006575085549 1.5050451119383619458994414549207916 0.0272035150023485883891982716050514 1.0275803810604266726085339963767607 GT 1 -115287589717521862081685842178974171602768.9465924782539402582347542819354306 0.2278780281216351536673667683539283 0.0827676685262046009140632648078244 1.0863944784301762709732320931985361 GT 1 -9959586047370897432922683533015814243552362.8283100374124652921258394564589867 1.2106557038176948041688845001649410 0.0709750701749762523175013887000953 1.0736197054099214322435480033410340 GT 1 -1775.4704632604874378960198773829955676 1.8111379260106183514572138480299376 0.0644820316183064613352066645284235 1.0666549262031780422452294042495173 GT 1 -16.1612340620489935632225675296109252 0.0866997676810579206869916290043700 0.0224647764959635470783677318573026 1.0227209534966060075679807485305378 GT 1 -6190914655622660394584399968376.6399347234024855776046621749445819 1.4455055443729774119075704787210221 0.0814461916351827780352652413072991 1.0849547931742570998005055240766997 GT 1 -11478131.1715185189340349456016224548734291 0.0543631177183749325297125862824749 0.0053319019810357200690017727397810 1.0053461673005218118580548947928088 GT 1 -5930024076841537346362144357.1372535255326521641051010003988239 0.2174262613671276023303477086280123 0.0827135384735766252017762436482294 1.0863354656221851801985974505146580 GT 1 -4020353151094669832776.6626030953607698137516130227589337 0.6967086300371553415368786695284075 0.0537122528335395174449628723962338 1.0552085837009268598641547271512504 GT 1 -7516.4650004525005667405535407112595362 0.7710441926168875466395832002636831 0.0360505924759145857552396307914270 1.0367164675702985767922581530454810 GT 1 -1204430685.4091641773231395576280836611306016 2.2200275865369259526197288611385468 0.0739809945845183877581501963909653 1.0768605203397927202226459342330706 GT 1 -23804147396906644151373726647321765505608.6847827023039771464633086556901625 0.9103540166241481925032177716520845 0.0773754140727174834757804377742356 1.0805328596905228936524779225254721 GT 1 -9259092379995044866725269032774178700.2884907957568298360452272816245436 2.7431137340059767409526132268935984 0.0195173777634202535508803041239228 1.0197103568719149008084931038592239 GT 1 -18010989.9125291203691876720228800679960917 0.1948037314269099407593170227428645 0.0101638181359998134723220370483084 1.0102158224102926576683327994038869 GT 1 -19969137959080066.4410654284157347792261946888249568 3.4955431491603904022998481177577544 0.0294826762998635440397564625524857 1.0299260262488868230394413803599544 GT 1 -1775062.7183171488113972651472527405835554 0.1451219175728823878096006564096864 0.0237702989297373916256767038250893 1.0240573708021472782965768640641257 GT 1 -98485346462025101165.8962096743326994262973437952354052 0.4255447027212563533209108764821494 0.0936517415528466779266680332307907 1.0983316555765133140195444658144393 GT 1 -114005524729876309908276391524053.9560834053905485194448135920756949 0.1581433345310639699019848082381481 0.0149827208598286924731010035133539 1.0150960956896264734185527857590333 GT 1 -17411204053822521218884991302.8905472970145238260350782600039572 0.2532437876465658362094703257695069 0.0120125774549859375581043110461826 1.0120853115328962476696925851630492 GT 1 -12492224925289283.3383598475865571188538894305464046 0.9092067732152961194605526086250913 0.0556378365121276221121917697808231 1.0572455386480454954523688337822144 GT 1 -606304408489893644340978360433498445464632.8087612695080431424647515806982293 2.4097306788386145199726793404324765 0.0580147289788843600390871869877711 1.0597656403867035868068456544005814 GT 1 -262307444857489.3960563000456159311729925568236970 0.4525088123088319158423959891838802 0.0566676756718191985959259172976205 1.0583366466303049436861610488396898 GT 1 -572456443524417515361129935307198408.8961593418423543167898880064641364 0.0556024024840257338766706043155340 0.0841876297834667878900820234301260 1.0879437712979186799396490677491401 GT 1 -882970290786067868818019.0294347845756123469238259370207850 2.8329536616043456901119721231006399 0.0690445044546027989666224236977810 1.0715438056990083418883300085825968 LT 1 -72492039773891382955776661576981111694.6289663020241946985526520255278451 1.1484122292904319726150979914169227 0.0566024680224884704744125340012536 1.0582675242287711376390371655038717 GT 1 -34850952859863.2370698088620153214433828404582569 0.0068209129895492274621830330502505 0.0026106806372024834162329695652393 1.0026140944066995838434136135475525 GT 1 -16384.6842422997312252383811666916445479 1.5453953774159385666921149801804053 0.0057088384387858459172999810961348 1.0057251961423114980208867108807523 GT 1 -8367257842261.1876785316885398561521718081906934 1.9991084304193644338732265954730954 0.0824904370652113083321038459378632 1.0860922762905205138163965117652702 GT 1 -2734379286212398.5687946174782296650909376565850173 1.5668015174262782242291470228121169 0.0895969065715972464929680484390311 1.0938678177375450734735309263118947 GT 1 -505051580695748490030.7170729697087023269566549599108342 2.8347616378803864396435292371947099 0.0374968084094383223855793151180962 1.0382178968874495753541445405960052 GT 1 -47905.3324397921874157980684885141904086 0.1584176972600262945796666170596417 0.0799800236735964209595312363149597 1.0833598957765187183084388315367997 GT 1 -1187.9504247492377303016286088944638749 0.1266691238106223098358002705954549 0.0261739830783748357090130139853932 1.0265226186859029744719502601864678 GT 1 -32017283432828633213606510613221184.8429346958729842732175700201233245 1.7631222715336836368493171174741035 0.0919233950696719804327576776253595 1.0964265372761536976249483943129795 GT 1 -221004293452209530416461908.6185784233202766939431038198461500 0.9689986440560404701953118623336371 0.0069292355565096769249820610617605 1.0069533541895760379600942025675320 GT 1 -21026785371.9001630609608449509995225108231921 0.2662532576569510517959538663799582 0.0050596759286962624930493288255305 1.0050725194298998921290028060199071 GT 1 -399785.9611086186237943233500986241800817 0.5965171932343016394153185912643516 0.0490160286899458624597143537069407 1.0502580711423468169214967586093143 GT 1 -4287760264745246504013981294183964985.4046963864787205705548365342739681 0.5215202612458974144825935485675604 0.0106949315019288812983901121395074 1.0107525333485152021350607041388214 GT 1 -29764807.4918773825911170171870063621415072 0.8180485900553530385554878728432839 0.0286704683356465366727168316414572 1.0290894947692415928636253375322934 GT 1 -360038200059990196883066822821001211.5694466426680401643914084324384783 1.8365214579287146458617442043942804 0.0151897660367217145344641755011273 1.0153063122454195082532645004641299 GT 1 -5141552821665997689348783679.8861505665838261847743256634493189 2.1474717111039772229032991130632548 0.0266093825825618654486759472967999 1.0269698206086526693381580150367288 GT 1 -2896124052075805221387995872810086127.4910792178870981674721692113588060 3.3906174890120015433373177405520650 0.0085484565668597920381540299776590 1.0085852041952390051932756468836737 GT 1 -3763519768706745487860629.4097223005304653938421473709090051 0.5749735396865101615624757438869511 0.0876106062475773157960108509235840 1.0916884131984102992638105049463566 GT 1 -308045630467.2580994603134816855483745224162032 0.9805871515902803329454801828702637 0.0852874520774319242180145334215546 1.0891454183396037714445330337267600 GT 1 -22684635412160370156193696246.6121186729441236559079001631422446 0.3356229250826678651481109015936596 0.0668657841351437388441107861809948 1.0692062343919941791499589579443209 GT 1 -385.2084230567192131359455984764760847 0.6001044821046818655688923793249839 0.0946955170418553421763356988206829 1.0994839466096067271284462169369480 GT 1 -173439654019028223970676.7518887860065393561133367087612888 0.8220767315517652804288867332409274 0.0027479544629143421581116633904186 1.0027517370209000324154309779511422 GT 1 -766454250345023471049284157329236.4270280056283742250170322453107323 2.2482468387546813596277031596735022 0.0400566852385562970759671112726805 1.0408810433871012958001936918600796 GT 1 -5321032331591257002212.1663084621364156978823208345839762 1.0765573994379742482353035521425203 0.0279834901688001480284804385979976 1.0283824892429035256202832729619674 GT 1 -572868769.5841656144488516763812645230462353 0.5769534802533517361245231469872676 0.0888271889843301822282084293172952 1.0930227059514250294890041967414243 GT 1 -33.2284105725998239701327589533132423 0.1436221757159956752052230482226580 0.0395918416000844373742227830106031 1.0403969198773714701529885471943584 GT 1 -1673610109548526.6706648711583069463263527208539072 0.4860371423443311065746293471849843 0.0475340046773569068153135114845660 1.0487008730672258759813330333900340 GT 1 -13731459363593087880362705505733100885208100.8304867430204587781491912432979023 0.0910478917605223085543677304392391 0.0890232896724959494985063003989360 1.0932379470023112434642056808445400 GT 1 -56449061557563439978042196132975605162091.0229255269536621250094623370077996 3.6739593303366432760595374789444827 0.0366024461893468984070436872257799 1.0372891239104223754472733125042520 LT 1 -32.3554175427900319988247014829585966 2.5248617352078497077173252332819986 0.0952905547016704763990655676341980 1.1051555959282672090338508789482752 LT 2 -10768557.4767650184473636578221641098121764 0.6687396744202431018249333418268634 0.0579777344059414972199745583425444 1.0597263681733725484725131901189904 GT 1 -86875801762.8213507323760314249076154022411405 0.1687954294364082985690700822802063 0.0591003581681867686836648084657771 1.0609187956350084828899698923932731 GT 1 -18017530.2273368912042652511363111980627030 1.0674193672849474347209968601169922 0.0415300877144508595911753095849477 1.0424171074058731189421879582474686 GT 1 -600925.2209268407202044042512616526612141 0.1158793003407072803335364477918550 0.0639651821971840596736638424788847 1.0661026046891103323624650218082389 GT 1 -110362885038424523172562262500.4911142224604719432733713034905105 0.4069651404924438845215924649125960 0.0009101769163374175103711245835582 1.0009105913788554962751988536890944 GT 1 -208305788847807398830132.4925671079359040004681898864885085 1.2370630759282257072488864086820419 0.0520695339517645065726711779007881 1.0534741274675995390464148922937612 GT 1 -34763967560398587185497539234944466555.9273753805011015928559457042399604 5.1315009145730789161666583545876552 0.0338521152829074810670103372686742 1.0344383667174150410155826543417201 LT 1 -160793884218428515327357365306490.8014466230654874624683105192661007 0.0306857102799675041122533303169006 0.0540882958047198830889910968035180 1.0556060502321219059426686193546880 GT 1 -3317282868874033692447120023227278910978.6258590039398381502072834712742957 0.8433283956217022804497279901078614 0.0658294286333868632650686156915106 1.0680962328376132157853530085516037 GT 1 -11989255448538675571413103176691204.0014119349578614273019366675788176 1.2773477563597127069982439531987271 0.0815966421569330078890822582748092 1.0851185972355104346574749463130506 GT 1 -28679805512779079347201811.1493441234522173973777029930344801 0.9399684294582477376944895320170521 0.0781551724340783607111566917703844 1.0813783694095887650925922172638243 GT 1 -358027112.7652000466266629244771274759913025 0.9993810866763819462376969041449431 0.0150941444402179962890191258470726 1.0152092204898234122565743298263168 GT 1 -316994628.2604607111618241362690377536786459 1.0342036174845359461402380805714869 0.0424910601344329868882532705737134 1.0434202212967010447189110091797401 GT 1 -40006119300895430655009499335621811375.1448993495699101859589426914238342 0.9246970670839957112396999183549127 0.0095224696761849223954105171136520 1.0095680982862908082794872235653079 GT 1 -6782696.9684827687860119928829134372203717 0.8567972787812774837633873496034137 0.0572978787003847086280116413245078 1.0590049303442961342656989194950443 GT 1 -212434203222343956410583121527234492651585.7058293810664318203526591390849855 0.1170840571122064792000869523117699 0.0418471397688773506488145487810486 1.0427479519120167772002210709131195 GT 1 -1.3523994603802845366987864667810082 2.3828278399176735115793207055183147 0.0935628529885902524841072552766074 1.1030585059016990572194858898028164 LT 2 -3572096353735796396895909253018187.7412878089167667816305292672231445 0.2953358774545809905626370708566080 0.0492045856493455800670959458306826 1.0504563664456183521219486455026004 GT 1 -27726973335597358193932.4216727357991050088160107565571302 1.5713581944542009216241147943389101 0.0107220112236547856864882755447293 1.0107799061915485380375967411747784 GT 1 -77563115448950156265297000194447.9312573557897751248076603504182404 0.6483751977971258671163213164691079 0.0986079453147606512999008115760518 1.1038149831806340961065603641465079 GT 1 -9.3441633584518467429432787386567970 3.9183355027743019483570869752010904 0.0931065230480970974719309942436642 1.0977302812417656511512948237348465 LT 1 -62976.0777506862205066847260054299705732 0.8015242643275305059991205365175218 0.0237387863739627861544456996870114 1.0240250914654905509437950529128672 GT 1 -105998496239980622301.0727917600879815040321515350974243 1.3266375993899144435742433683107934 0.0219468922846437837108246782447124 1.0221913080542000055329860718243670 GT 1 -117487022158805266671346925513.0159605494046615812804647438618072 3.5010552267233954855237843350359130 0.0132591810304439088635120969521984 1.0133478687950516122710012167230291 GT 1 -31352914695241596113800465175954827.2729392942738742859129769112131376 0.2528574503921406937465120087554848 0.0296367462680690744876405902848743 1.0300847892045479039942122989099465 GT 1 -211525221.5466969133699006949494300781422853 0.7634326066892749019551250199046718 0.0117868656132718219589249229805486 1.0118568814356534526865922964357165 GT 1 -1140749640614363.1856143959327489150161278030805526 0.7840154114475583616142416937110394 0.0755308699585935775769217648968091 1.0785356196898348486697513346851357 GT 1 -130784073.2622894030383767449678292502675754 0.6054122441903058557043229172127098 0.0053023233470330230283500247309975 1.0053164305528794588327459063570999 GT 1 -56185071098337286945.2704602306687844996136407750730304 0.6911930967673632409516979727596969 0.0450627008448627502101447765636017 1.0461095959917474673900821121172554 GT 1 -4605970812934339966938630492572963360682.1543075157411995873277065073337099 1.6129450017331464775614900662775983 0.0751481130351265223944857329940234 1.0781216764907767561819045508106850 GT 1 -967372573674585407190738289828390241249.5990880521602381629622065487024487 0.4374989405427027591778170023073612 0.0483257149923922791680521193268421 1.0495324403302435326444199551841639 GT 1 -504.5915425630270309658151445117642192 0.7321547729915472594252239226551968 0.0249293499257860524792335071967683 1.0252453489949274438518963172469581 GT 1 -65440539296536289646731919995797173913.3995342596397531843795043569209821 0.7648291267757125445156355360612994 0.0456898504159657787280672228784179 1.0467665559830503006727992017758430 GT 1 -16774685852681187549011376289265496678.5471270275362511317860889097154023 0.2547027442114864900158174218213922 0.0098950351434037123828111100801493 1.0099443163660928960051013842588622 GT 1 -4.6049094996001946658605099897222004 0.3720341560896768211791035376096907 0.0398467891266391919595989817894957 1.0406624125943771776157432076980275 GT 1 -17144919669142412510881953033.0209287106691487428051984025034737 3.1237655694959395680241633318812161 0.0421466748520995742632816697097120 1.0430606180066757403407909873986997 GT 1 -551740630018470228458976007157723.6519329816290638787961124694879018 1.8053570844303969837849334829362947 0.0921447105222068192638749646725551 1.0966702859038551039692667184183965 GT 1 -1427013502272.1592233230987768451207576843860980 1.2712617059385263446550093997754579 0.0841010534732977973841890687739957 1.0878492407794444118905656266827469 GT 1 -2443315760591596446514921712779132722791.3207748135929173117376760315060308 0.4018873767264705102514722661949360 0.0393003185839224837255832015121997 1.0400934251829481370866229021100315 GT 1 -1985745145311405.4574544826248634423816483140352678 0.9466383444794964615659451602947308 0.0182325610894334023261322291380110 1.0184008225948772404408533069065924 GT 1 -4106573960511094371858206612597.8237478611069645134130302924515547 1.1273360999887177274739389219255401 0.0603410846061893825337561761891865 1.0622383255302734585339375318204822 GT 1 -2612476710.0139365445351903855003095702191251 4.5733578805191321350927141116984200 0.0126407850540631914851450137548220 1.0127213595138764451752259122109731 LT 1 -9306667486100087076.5970211671505745417675359827218489 0.3590199001821155420095158545026544 0.0048787154677154524297114686820561 1.0048906552497185010248463967713907 GT 1 -13791070498026392698760486666268746935.3462041211329849347996603779742314 1.4200061453036401830554883430424977 0.0578043580278539039591069146866641 1.0595423381013933987904352169010557 GT 1 -71205.6969778561932680425766694349880768 0.0336147495532495486729640850219642 0.0507241092467858480381667686772058 1.0520558052848832570565946397351353 GT 1 -695883600518.1461363187352998255096826330126993 0.2683538372857028701728795011600891 0.0651530972701961058453926977579799 1.0673725034963038702088876152927005 GT 1 -3.8525731781688465267989925215176763 2.6708562359395462219207778123429600 0.0153290965350896587419654217527562 1.0154478017940651255667359706458535 GT 1 -98.5719545290260468953463795525428521 1.1798343574418599728676110389417384 0.0962456079310724327646531964165991 1.1011976456936657866753205041846651 GT 1 -2362374.7321730671518906219147342606951144 0.5546445929144749421945191084378956 0.0465133166176923725493110604007199 1.0476298200776710938091742301702608 GT 1 -48344188.0270708905103100242520553586233316 1.7255560450446577298403931043699863 0.0482428056488522074166505387365291 1.0494453246715065686288409328666749 GT 1 -13323409627816737588743426483237340524.5924669796371258566587867136108125 1.0666000554774261756398796498735525 0.0475003704664914916650902654551157 1.0486655609225550765215756620113959 GT 1 -12572634160311038092279944537196135208.9038315999315180812830586748652189 0.4969666538078343007345475737670500 0.0982169631839501565654959036510445 1.1033813235335142653443354562387163 GT 1 -21700015.5905428691071709322847488293575928 1.4882896465461075297721673801950112 0.0099458435350750262555419500113782 1.0099956338497591132509344712096695 GT 1 -1025.5734871006960192859409596568468943 2.0157673454556020088576172342743109 0.0260191189684571889323950836269022 1.0263636048633246678018319728468389 GT 1 -552.6051922257522635567155245408986164 3.3936207208138599780392819359291596 0.0284278371405680728183250888171293 1.0288397330885311028740352266879315 GT 1 -1.9766657718583045683069773830731084 0.5854813873280467957740692432709922 0.0960616578553580722142861810266851 1.1009941265082779860830395948847500 GT 1 -7301531596805160913098114046818910934779746.2045924478842920252614106600088017 1.6748601471268653183687179967590237 0.0781610927410913491768969400218679 1.0813847916683538469542405537440875 GT 1 -2609032830410541552242.7184666486178023037079589435869632 0.3999165647907695719205413147241348 0.0906441561786758945288507090495745 1.0950187940578186607644204177105221 GT 1 -30478321725415871466830829.6413094108705044000307721563035607 0.4222226688419417040188020644205937 0.0016017378136046028971750011662620 1.0016030219670509793020492909287782 GT 1 -2776516367892787.2846165920804758335677486856470348 1.8841436599711400472263248498029328 0.0792237011144284899482397214234816 1.0825381616042898531919338712519396 GT 1 -96428922075140085274873113441934393.7192886876720612417563667978992687 0.0278157825175478352045128223128678 0.0708231248070648461235809718772650 1.0734561651874980759697619594968060 GT 1 -21317677966210074731295371846845201368177.1512218393471331677139535780185192 0.1259313853923037733971930991872745 0.0264623601422529369427031447362535 1.0268187904512352002485338977937795 GT 1 -32834209110903465165000115749011.4734185369920003533055811144892680 1.6238738059698909481400596038987536 0.0801128060542953206717616212971526 1.0835042317333265631644966892092521 GT 1 -2024828694072398897321819142113617053226.2122147519545731959432214791544194 0.5511624185646345572783574802427255 0.0322725948774318351680268205652497 1.0328048376423922701845000419269448 GT 1 -34585834671560776382179419451185201.2120451547041371074215983162512701 0.2359238875493834968238950639820103 0.0275799541213836907493682844007620 1.0279674219042187628773777267941829 GT 1 -7350318765486979107125680275577098992392514.8359483745255945762502606167410299 0.4927666722259270305798331837372765 0.0301667384711092417517177562030332 1.0306311175914446910792622932522410 GT 1 -226700347943706869113852255567260534.1675425162851097466005227154455227 1.4793575667329546365373147596771475 0.0806455717339660536451655640121564 1.0840835636581129094689107829332970 GT 1 -6838082.6981357950133525342559523780182929 0.1500758272392453289881503525611527 0.0785155939973803708359860363115096 1.0817694244217173961531790911159843 GT 1 -176190680322623913.4539940353309616432373399130401546 3.9469592500175772466929320185972484 0.0430646859196582587909848419847014 1.0440194822061888617675630935773125 LT 1 -15526986019916215.7662391339347694931399215717976497 0.0114132440668190671155596451008301 0.0125798590497459554352372622312987 1.0126596554008020834955235860414251 GT 1 -5518303171749686736465629.9718334036719117652694373977087929 2.2610156691774254031758012373871740 0.0088600468782957508399172178890008 1.0088995304843841604673116546409449 GT 1 -2829760085782001343.7264247579787214449584730455377838 0.1090780584523151871573772491042055 0.0224291358970088719012394857873695 1.0226844945042428403889778077018189 GT 1 -89450908344084720669279496211790815021.4133419887693677959556093018364027 0.0159337697024016348150816174458417 0.0741875332467456158455725055051082 1.0770835845507511297366790179773784 GT 1 -21854301945571057057968654195834700463056.8158497699496975686696538801860437 0.3552071996260879795061590302425484 0.0446963617503864571323069305094784 1.0457260432243514384982265709842074 GT 1 -858953652684577022469899.5789663071169330225123958919876646 2.1566122279970274716218827696981216 0.0181744539487453324110409149867820 1.0183416380885665691259789721068018 GT 1 -534254010212074150449577644733390843183757.3988814821122449160564567474941182 0.3462947755815355901575006748120923 0.0288429876575942965759765332299282 1.0292671220716634752945328782618081 GT 1 -222263576183890107087214971510530436399.3647321412649707219287865165469200 0.1997418081221763323918925811761784 0.0411374454002559694413660109215916 1.0420075359554699347374181034543159 GT 1 -17277940880412610702236549264.0433121533472564968032617129627684 0.7570720577059164316827045758765677 0.0636614683499079136185333748273758 1.0657781887813229213212274300237590 GT 1 -317604873.1535545611647762053515764964729369 0.9396954872539328174693984031506036 0.0929426546001445401930369968832283 1.0975496055074743792027658227093491 GT 1 -2273.6578331983738356466871740386703472 3.8269317009306082933042355631563974 0.0171842258517172553429286817949220 1.0173335882519883705303990205645205 GT 1 -50960966226164350239535388017155357188.0069326819013835096606524449584272 0.3499647201789682397077117813116243 0.0438329597115101703192706087443128 1.0448226528587130080614856738736134 GT 1 -1421592524.7638874031159696215463716113562435 1.2683552043318958960866433490005797 0.0965041326697746217385656400974702 1.1014837430275807141926234863681380 GT 1 -51422.3241283014744065481022181104772331 0.9628264242352601805257159637578144 0.0260061155232621407733761743888551 1.0263502541306298853352024334114600 GT 1 -136058051168251799.6650056071352649304861027154623455 0.6242962807858371052122549834029284 0.0766424688093954960663523606237309 1.0797387617466250577011910973201370 GT 1 -21969288076758722.5454344694569068908966937666171222 0.3146107327267639770090946574364878 0.0936853627673525758407386094655166 1.0983687515137555716627308024557753 GT 1 -187072608084820.9227355631343562067930083888549997 0.2746676712617242939747529946131260 0.0966849028569479994745092096951979 1.1016838416447918817612907148002985 GT 1 -22815843185477252424498703.2428283916838462596456650917521068 1.9646384060383299013105618523523522 0.0325631986275599618848978651327490 1.0331051777906207711001360365569982 GT 1 -26018615456556.8932579168522072198592738920618472 1.6642945672709506011555243412027311 0.0140426065451560339288188761965153 1.0141421368193891094427345982233693 GT 1 -34358168008634.2554096598993717657357859998701991 1.3827703932213821724130816700620302 0.0682043170448469815681564138615429 1.0706417126267506922191606981393343 GT 1 -24022070739618754780538712863.3560717394620570499251854267012269 2.2117789635579918584919166691155515 0.0064016728212334412728278093930743 1.0064222514005894208407679804219024 GT 1 -23805681616670923626036087462144592616639085.4867103179800436904389136855180350 0.2017918789615803173058666808380076 0.0417569098199816423459241303174809 1.0426537856214409438638439934862608 GT 1 -1394878108340145348953677437011404.9515300878230532244776581084275715 1.3377488654045811399512136532049518 0.0969504416900696672933559563941386 1.1019778452217914564789306060644545 GT 1 -167036373342157998106.3458563010926834763829876726625359 3.2051821968170873945840029905744260 0.0738579057720829668871672627405304 1.0767276066179352345928709554621697 LT 1 -256009071830382478913140.2588187955387291326932039976396989 0.6871838547529900987651446336928692 0.0819814909455949998138407592675565 1.0855377261962715127381249492864370 GT 1 -11.9894148830240824097464069781018970 1.4531428448575866284430189667850585 0.0693186532910297294990611092566030 1.0718383302079632608612753639775859 GT 1 -1090892024952941457537624.6857701012999771190355653036758161 0.4728304243907093517043165362866277 0.0099238295127592704210522321370925 1.0099733989271209180397753085432445 GT 1 -450064678208935596.0217629541922162439274336204388443 0.2098193431069836849932362629081497 0.0397417091586190737146206732756728 1.0405529777487400194576719727563841 GT 1 -25317400642090587586629280898249489488482.7281695497184565935352078110616165 2.4945660704142875450046729324986242 0.0820664417798331661656892440799385 1.0892965390161356910359753626088687 GT 2 -15475990993469396541823776993121327785449851.9062665801459620309949628244801350 0.7161729848139043135733682516262317 0.0162980793529016948245594759551659 1.0164323539929324652871314762522303 GT 1 -3368051414.9270623957809304031652781206007927 1.7859482377915579046659491817375582 0.0821793568060370164838641325278321 1.0857532852347263286474839149934230 GT 1 -2883773286986104376.4362278937318203148824260749314252 0.1003729075066585975686422361905943 0.0737197830973131435320568587149236 1.0765784800670446932841868872498144 GT 1 -455784798578427531876418848932434752021451.0059120666023165920255503360003200 0.1828359752459223425439566917519716 0.0924203230425398861824374912995596 1.0969739183969448546534916365276201 GT 1 -4140828619322070842061770957.5315701183311674654363998953356076 0.9236587590207671996948313147955727 0.0960824844787793192666790457608112 1.1010171666453927423328057666559287 GT 1 -29167310077921286510.8788804766405876718384649212546154 0.1326324274946177969056262216029712 0.0204319427872974998383545040164866 1.0206435624260760621819065204806892 GT 1 -4484559.2750183954553624890038327669279361 0.2215963127023303407714636529151033 0.0025602710740456211322532790889604 1.0025635541729779665618603365877185 GT 1 -16644530756585861015958715462420927313130754.7651779814733469249641961326745183 1.8116754648288797714506463172974233 0.0167620993824442919219641681930863 1.0169041732454933728064969282027941 GT 1 -1085733.6114196809286666760675280562658945 0.7227598497135791234761855059135300 0.0068958879429957386270546553183726 1.0069197744540636966788852167107444 GT 1 -983095335896065741986578259087098906.2038644514765128907910172551963140 0.1549562118158579503663120608435143 0.0820190533437845947772605275261609 1.0855786438534941258614618589657490 GT 1 -380821248470846704910900641430264.7576777889599776495438248770297536 0.3682306072386620222646764000757123 0.0341181524901231861097272585579571 1.0347137633166076250432015397733103 GT 1 -25461312602158775657438168992.8985770818092863336119237897105938 0.1162046315949567698465003512768664 0.0241952430258343949808809184475538 1.0244927566643778536647062439349249 GT 1 -543807748301573.3787957775466814233279667159907218 0.5212614511676544541611576889291873 0.0638284645165587624162769151789991 1.0659565548900287935886503691172733 GT 1 -308799960064846855165981669765638340458332.0049013249908893993157087882736740 0.9063289248619738942484874451539341 0.0277105628783646983441067694622505 1.0281017440313221721676103794570296 GT 1 -7034725452881500498.2398206457939114929675185508333156 0.0205475579760959407843860616552202 0.0909068220438072060089163254931571 1.0953076840556271700256763886586839 GT 1 -161425777636848402691726404890793032.2252930596243257391110978697202689 1.2472870408081551958231677561012413 0.0197255319588665326970004877722587 1.0199226770999129144854853757681174 GT 1 -11986012117.6433459709280310913234554412756616 1.8087843252664801983301998459761979 0.0779457496032207934608112292576382 1.0811512172468039766686325133482255 GT 1 -904030051.4761599145548202797218133170454883 0.8599844914359031102827253072790830 0.0369546741678638797062438711725885 1.0376548009685527244459355819149200 GT 1 -453960.9758976778844347261939921552186052 0.1951795461827956312185054917114894 0.0626579192549657002606530482881165 1.0647069825316918056153238811107442 GT 1 -53665441833046189908.1856599676453650008036642401443513 0.1829200992093061784009296087790281 0.0494879216880614714966084724603244 1.0507544098098892189664445399556933 GT 1 -3647696677.3081918417208363163442580739408221 1.0217336874930807552699720262177759 0.0628157780686437498463420996794253 1.0648754078174035395673140625125855 GT 1 -587061036849197927072105439511.3069958424133429704095182974483713 0.7993683795014536195973273162875973 0.0419791912352273391243238074282438 1.0428857801983518357185921015179072 GT 1 -299904424233978046.2016432649706180870507044165559359 0.6602056654837035267437400265958786 0.0815686070845446947702846236998817 1.0850880718195698739290431590227420 GT 1 -52995854539383747356571378831401279.5544693134340979411254044812262246 0.1893335645235102833979694986290416 0.0415419956301655361341347757022928 1.0424295313636144266065843600102264 GT 1 -98219562.2014280063404618783665184329231360 0.0553124965554796187119672405766204 0.0233480988147960960150656641115300 1.0236249839938210608587357902123963 GT 1 -5192245688.9960552890845788594934199144643194 2.5469433648382091018052016771283626 0.0786725645548226262232541979581053 1.0852968483754474912590341444248219 LT 2 -12879126.2991438280576857422278543613546444 1.5568775160365176589795630600903250 0.0908346299413879977349229564893083 1.0952282760940521089693758573032473 GT 1 -201493476.6520270300832865372297970284911634 2.4497714609378013896625841827211956 0.0904242143286537393316889619513724 1.0992682936145440312386209514573811 LT 2 -27156672522840626860132612786671256409.7968333061460597517458539259378181 0.5784527650785285278493728108700479 0.0631980785260571136770551252952059 1.0652834155970364708290431186223856 GT 1 -34656470543903515478893758782443307.7418005750868309021570047226286096 0.2559855295771032578728893553310976 0.0752904422482210564836674051260849 1.0782755823951002374193162245423014 GT 1 -21840.3813764459316493057402731911322601 1.3482812595446394096409894949382487 0.0054382919985463030500058518358959 1.0054531333406344558237100519608082 GT 1 -25494220894726002.8445924406437396256293268697345978 0.7104815745208417782952517387448039 0.0401703585885258966194618652587531 1.0409994671306350689109295480396680 GT 1 -10969181237205790346077972012313500.7485738026243844637048369024980595 0.8498108091993088988714749447668529 0.0263769494095276762018426470481331 1.0267310619620570639186657902359785 GT 1 -760525939153179573040.7102938615136275633270792330760338 2.7864326933741419297447944782084879 0.0995871499131442623240887140001173 1.1049018985200158931952824288481534 LT 1 -180053027.4342098331399984686758817575251408 0.7544351719937776712744081203958213 0.0826525289026351207231330796180213 1.0862689569090527011993403548623192 GT 1 -382274542833.0110440241295824055938343083857771 0.2805907277897260690856809384994310 0.0113027840261718510153040319963458 1.0113671459282371506860055688359642 GT 1 -105130.3408254153026774340468433088729153 0.5501363516458836427381280041239928 0.0076365052095356685109189558268070 1.0076658126148841708296981538897163 GT 1 -4153529240160340.0918945391560703897772863353875870 2.1574329547262104628556883831343269 0.0095802834839355222271789540757978 1.0096264696206538050311182224246193 GT 1 -28041647590450803646388713593026012.4707454770937422837479425712565922 0.9839701865651390546946311019187997 0.0850284324077118418713056527981116 1.0888622878590426392630455992565445 GT 1 -8410023954365700870033170526970173.4483037480229347186341042884807396 0.7322328412936636445495096025052302 0.0332366642093130107607473305068087 1.0338015541335122378374324717604173 GT 1 -21294202740035824373306059439993723.3337740502246587053738324585928631 2.6506173261927788177656227438393143 0.0774110100953997840537860025526534 1.0838173203074633433985530195626440 LT 2 -40327988367801183844445696.0922897393181079243132220285519367 3.7167596355398688989886278905735864 0.0066883170507554335926766050819085 1.0067107840770060496611987483853200 GT 1 -14489066888.8572255766735937640834420969184531 2.3020923594815172355802751892913595 0.0903676040363802947090637437648100 1.0947147215647945912127244366852389 GT 1 -213256208888855034020.1673044802646453944824606638228696 0.0987504977615561215967985374643328 0.0047607000878548602282197122775920 1.0047720683153496849189334652105095 GT 1 -2307.1612257251925053037299480912909169 0.3788554304978494711401975409048800 0.0334130489896140076358256434610383 1.0339840195480773529309259644003909 GT 1 -18986140579057409357473727583825902517797.0652984875917242332667529576088413 0.3881095257360218333526224766325672 0.0810732126649163178750792729789041 1.0845488253765433587236616598454336 GT 1 -478214.1970292671817020218645522626056544 0.9735678383315781792316163063634584 0.0612495531274882306891184124139856 1.0632055998745990424304289256045266 GT 1 -7037952930582707624520531656295308.9352315788212431429019301625873914 0.3245214590282113499411942836196073 0.0875091524922992915704820422435814 1.0915772237043397277161133157708748 GT 1 -3905570320278545.5400335781986714637689909252734963 0.3439507084466209129201990775709514 0.0625204304630239960419076443520619 1.0645603138689232790408520877011363 GT 1 -27546391048692000571956638770.7769828826404068217755695561767761 0.4827922745637684930570200696559726 0.0007984663904576567824325695320351 1.0007987853345347209462302704429307 GT 1 -77022466540111865274651704.5580964160378475208132823013573208 0.2640950346857181588372646527933234 0.0626529046548516680451029021245238 1.0647016327380534782916067616614017 GT 1 -8276229492231157773538999.1168836697578145103517022247783343 0.4740923533505487577084667340524398 0.0179633590435029469076169136315885 1.0181266587407773841321636050031289 GT 1 -164053781642167157006979796633330944.5336468564258488986880430651252873 0.8060988019468403593385470778201873 0.0467615612812121811259122013193784 1.0478902085962310060725004803502975 GT 1 -83530298458078623276082123535708524237982.4159614081409681298489911741845377 0.0613100385623484593970917079663742 0.0996978365761203502448069689912158 1.1050248348672835191180545522889664 GT 1 -13891500222772319596220516271409452871306.8995709224142749217569301772790737 0.1982201620019279312584804957277701 0.0012850588108771429745727727058964 1.0012858852070051346600204865125857 GT 1 -1273572567832309198446.2141847151225508843782164054707571 0.6854541175357528655973455061392826 0.0593081249455710721021251418598255 1.0611396371687464142529432739340981 GT 1 -59006.9416751352445831722230182972571623 0.8779965590184673034899022584448399 0.0577133438875164633893465707118277 1.0594457448455154189933380815204471 GT 1 -5519519569.9744953845465214116280375370064766 0.5984466849436863218391797834646816 0.0507667829875414889327983692602503 1.0521007602872988628362111622881266 GT 1 -37159243737.1489366181837001321543544643339642 0.6122743157371162254507146851544638 0.0451528872537591652806364742056184 1.0462040426825900903369372627724345 GT 1 -488310740170525375370935628279467991291.1197237155351243356351617863366639 1.5387129418581709484310143454153906 0.0060590195224697137768660400667411 1.0060774498655067592797157013307716 GT 1 -6521147802129598989785787621217942775156.3187383196872261170198167254699230 2.1262853201271516980967229118471379 0.0696627762181063561657311902571965 1.0722081523434919310642074066881827 GT 1 -766707346168239367531626509.2214823567513141198049591551563105 0.8621604424979305766469808356098354 0.0538322321307087155289817370150979 1.0553353811832208410195935739367152 GT 1 -24414732698955614818060383.9206200866199535058775060423076541 0.4147202283254350177213762058379714 0.0200194363910867466147600142411920 1.0202225405663263605529192083620021 GT 1 -26514443456689115233807350558440.7758412674441007121380033098551858 1.1436468362452663260921322943527081 0.0241011451400052759144445754723224 1.0243963302548231785992832208117394 GT 1 -344870386945169912199815188166.4377608979359575961786298269674609 0.5328319464505196241488753005005982 0.0091942671094056805309793976973694 1.0092367952607468727712725170030409 GT 1 -806.9598941476659906076015247125725272 1.9853671743422239112371952998670438 0.0085470236876629684043913387075155 1.0085837589625688937695836030295538 GT 1 -16488492669825835642109669529258733315.4659123831583271261955419819778726 2.2463589382178757062344257776514778 0.0990022144271689420847874744587823 1.1096867688220232884228669009751812 GT 2 -120062524701184538955308764987167812053220.1557256844505472695164492810911359 2.0678682123013825714799154242969946 0.0410691573749371310540713477780207 1.0419363207500713582405124727992247 GT 1 -255010506511.5677343034198281008338600559428644 1.0897589481017196297535496437559630 0.0896410506510314654256636780676726 1.0939163074120942325640292779500284 GT 1 -6450.4499540256155087664911988530865250 1.2553843692367870644611297191583503 0.0080171262765698489965768691939004 1.0080494362379990615878449162379026 GT 1 -29927361115024703449886403863454542.0762002187187560715367413595983473 0.0527200926697963750786991437364930 0.0057546889247313622490665530755668 1.0057713109474303111170489274404246 GT 1 -889619896389344179296716315741.5543126631748031822160858419857344 0.0582607923401621684050596881335012 0.0605087994307218116346037602006906 1.0624168262509482312134395249770409 GT 1 -6141303772035775250036466725358959304266.1505624233318763917415566488188936 0.5806347794000901574965845681720582 0.0296430936329138537426900320124860 1.0300913304514265658204836834252920 GT 1 -97640851853687760444851162.9772213294046319848706786427945387 0.7906438312170764750881319935687527 0.0068263620618957969786587642289377 1.0068497682516295128057304726802208 GT 1 -66225061770463490629727783677.7510177107419814767707610005756793 1.1344056346028912745628217428111268 0.0465691831276779607494341479140582 1.0476884136036040319563194609912622 GT 1 -613677085406183291713950.5499670047111585634702000033095577 1.0389501230726142532948577161695330 0.0431690875679071313109046226771647 1.0441285881637568318038089289900746 GT 1 -266944548276.2243256689889984347338556300480631 1.8349206203114185976534072905361945 0.0821628247505006844076854074668186 1.0857352731026495592145936991848096 GT 1 -3648556273.4778083781436401081887258116215926 0.5127152945630751857970148084403803 0.0690079128186097948582667121723207 1.0715045010092983049559615732650239 GT 1 -9898871844087786959174081193378.6550750272157505718228957704614846 0.1060231823675790735230281153022478 0.0638825256321206538359995321594511 1.0660143035765750106423875959738700 GT 1 -50756230337.5335891070929652047478675450559570 0.4708281794781232680052699224221925 0.0749141079149902460442660763666057 1.0778686894724733247288216784185267 GT 1 -22251253439104046755776879786071112.2855575067871673541334672274843177 0.9585630905921973340928012670695648 0.0910897331265469000926763602190095 1.0955089059882665882200877474181616 GT 1 -4609630556819761272446287866404050994.0229580314590130349316395138744645 0.1738203213462260570147527265214419 0.0335377076775434706484643550660787 1.0341129957637968666254801282985337 GT 1 -531620282138227965263117772932330.2743101550950443759277808861523422 0.4920174362874050411521995146137875 0.0193515826136363853436833919763091 1.0195412757173881434940783971378602 GT 1 -119847519031704247344802232619.2557090221298676083000847823618780 0.8441919847298419649817335212715043 0.0356153778625798361654042060595408 1.0362650783254582427690348542239205 GT 1 -120808545353170937570665939873857664.1836023924280114490574641250832789 0.1819806098323077906565932137599841 0.0056257753241953217867785913298232 1.0056416596004541461435895108158988 GT 1 -1733825661548230995859417093269765672753.0141151011205179326716925506792892 0.0155858767130928562184194060844438 0.0342741562079904259193139360495697 1.0348752906483830403726061760656356 GT 1 -441236476.8375582304647867743666685064233898 2.0164796968179054332969670955649832 0.0384382180754663131619347337846213 1.0391964602458703985203948873143854 GT 1 -17366160905948182129707801620103247216.9400538201769069049996499000614937 0.4032454392224262256745342392342619 0.0955897425263370220678970423033171 1.1004721968982088316280371678385887 GT 1 -11361206885561875.2175945626807705676932525750007308 2.9276987665382401110147453587288560 0.0931658795383417108026273301762332 1.0977957337279608749116386878742556 LT 1 -143142555324787472041.4024885361438496293410481608371803 0.0911952714352391053971796278234533 0.0683356320648383306730469983074732 1.0707826493966545827241949820046423 GT 1 -6266663.9043981782356213684266839512015552 1.9127750598044855234000626661832874 0.0972720008403978099517790831840444 1.1023339900330910341495818888775734 GT 1 -2442298796.8910621882760818584499037438126008 2.2285190805855467365207519336028544 0.0032156804196386103196772946466935 1.0032208618307424436488560470303962 GT 1 -254864232850716457221151316808161205405.6089761595027960090428713191905322 1.2894874229469435990092062823886263 0.0846213613939501440076882465941323 1.0884174866192638210162163746796892 GT 1 -3.4331965574209843302003630146782852 0.1884281968001548567798867514175043 0.0048857949767130476703169661770637 1.0048977694922639457208911165390054 GT 1 -4811246653787187.7691834155462772238864182373799217 1.0629306403684821174959608523836605 0.0536112441639062984361679803734838 1.0551018473732249260999756871122280 GT 1 -1463161054.3069323847725960641104155073112920 1.7393931258589573611010389464743438 0.0948351802578772469776655110844079 1.0996382306022606106445844894292425 GT 1 -8599746525793107.3069469427679007075623163622955699 0.8880154036461657013010999910541258 0.0911610290382036284472448010581874 1.0955873501545017442343869705707521 GT 1 -384405572697627985.6502970523847305999098306409814878 0.1513159458692371047553340336715305 0.0167267491063667132387448811041749 1.0168682209692459474559153062935326 GT 1 -716188045993573850942134453558423592.9542578792261270774753031972197077 1.7571329985790281927994300684490993 0.0414145499202129731599490761593898 1.0422965706737098705434148867088495 GT 1 -3499288952282124841977784816433566437733.2558298032364381021351470017580433 2.1318133797471492479441847590508380 0.0738142112367745065880868796420646 1.0766804286472122470971881890215657 GT 1 -23859520113588512723541741323559.9270125616656488757547186496426235 0.2921133350002910140258758859912011 0.0199225934531130153135675332960032 1.0201237241644371482044127084957159 GT 1 -152125447240394426316.6287455134853274474974724191119130 2.4310118317817075294666942537999173 0.0547456579338436218692362055081393 1.0563012426578722502503351559384798 GT 1 -110816603319.0987649565351796466715395965780288 0.4696420799998165019395734899910540 0.0585542324789412001802461630895238 1.0603385347521168364568119030158898 GT 1 -28274006976884189.5605109622219357322200437753202305 0.0223132695484416338977789498737701 0.0171951564669503277146738912445874 1.0173447100474506901272617349994178 GT 1 -2296422959898233138460466854874028631856.9840227569331567184442430715363339 1.6829853489859437045395417147123996 0.0852251104425571914121615724577874 1.0890772663166691577759639728309165 GT 1 -1556970014608418182570346424756.2507439954867905345065809241078538 0.0571112947757210370996417884507178 0.0434635976882698359007826549913702 1.0444364329987962465059930704919335 GT 1 -196995899.0996670335332329386516041417486733 2.8261758886693687145150791591447131 0.0348359364504094481195315538521301 1.0354571780528738563994928983284524 GT 1 -38661804481679379657164185560356.2209710857416494991824851476564349 0.4030812352129757773970725152955229 0.0557975205593672040197339064888764 1.0574146449036539950775630164015173 GT 1 -107059616732875909922468272044784269.8708574031226839364833737680028951 1.1653977650725971689495470956671586 0.0440033345087466784766736564014067 1.0450008539166793244947000154131641 GT 1 -557290239132975343163.5663907583082885857023797262964299 0.9275843809902983170770657708360669 0.0735766533361915807849789373574175 1.0764239709872102699158112353149023 GT 1 -1506969923012278755567063211375645.8964692781774252690404688752982667 3.4174479249733299783305535097150041 0.0685001421971822007117484149162275 1.0709592415944853749661823884756306 LT 1 -39.2191345512850488960882516158271830 1.5762060968217106104968427215618460 0.0636095053271558165316380884471876 1.0657226943429551228944982029073402 GT 1 -288047363519856328030557.9478372087913777733935811948365100 1.1736766448840379414852342354066012 0.0762019126277956591050876671709575 1.0792617513794138173211401952766457 GT 1 -2368035964515996598726012151162511215.6222459777426051800059541438289746 4.0290137949471998393010429282020431 0.0277636503617268664769236922041433 1.0281563460157615920527049609544620 LT 1 -2497412285818.1743511609854572111187192303101418 0.2788793799410571423586311372783692 0.0992033050388342080846805512380507 1.1044756906074763509974470512961442 GT 1 -480303303045624528275569627500635337.1524004663714824171182527057519451 1.2282739306241417490657157704644015 0.0395644133384882211704396156389713 1.0403683613216132522945217259775582 GT 1 -4701588445643819884747601037164905578477.8887478261314420927319517807716290 1.0914836463654764644465393850636630 0.0173728438487011031450587899870231 1.0175255225937645889376760092771267 GT 1 -94286473368417726034216016552.0512627062300602288065877073600198 1.1109243413737092891274524370443773 0.0379469189302954010273333995335388 1.0386856520115351124748509293447353 GT 1 -614549129506906804891893625428769871801779.4607553416279963775561458070586562 0.8464430910945067194321188826721614 0.0351684381690160770217765317684146 1.0358017402037136529171701708601081 GT 1 -41.4913858388941193418450152777544386 0.4906152374854200752068930835842368 0.0964425681556257638173262977667702 1.1014156050106215046885274016387082 GT 1 -2745845012288989681355729855906795.8616959438864567616283877736793266 0.2416305748014257294650859032312002 0.0649442978266715704852972223833431 1.0671491769510123092232694904194458 GT 1 -380825402434296439616740608810.0513940980703299402391808964921222 0.9988815298384890761581530059298168 0.0713144143526092436849080289488460 1.0739850413205286467876724186734938 GT 1 -65220717238750412948.5478362286072195703140250870111347 0.7917126747178339742247050964620896 0.0665990100832479697494827378630494 1.0689203849176462627602790141973406 GT 1 -3076837009321554316224.5090976400648414560049492226182079 0.9596295010581012290768305161734833 0.0114231236957554773895492255295910 1.0114888687285329493064845001986075 GT 1 -271176810920.5171483104214722641291943372810234 1.5335370891834730319551484169887327 0.0322045803196451769813798383692309 1.0327345573471220979264907778456368 GT 1 -22000890269155680020031619901416347698.3053554203352840971999728332389925 1.4466203074627247924132251507795864 0.0808150544295462920843475525062962 1.0842679303336077650006045166945558 GT 1 -11826954569520416882309414825.6739153057333696693848737506559971 2.5473936149667999266873839972331569 0.0924040282065642296327844613995216 1.1016561939079668318001926601888577 LT 2 -15063965215082.3340865729888414939467628228229084 0.5245237543119025408224045326136384 0.0389680849412176364548575411537423 1.0397476603044143683388390821314981 GT 1 -33797840960612305840825535093.5945489634106723663238734670067608 0.5917326270835641378990729288729047 0.0423274149562124724600141724950807 1.0432493286930597043419469903028270 GT 1 -54407783039885342400053158560975.5268312936550591992530877022966386 0.3238080285475629421140378005097899 0.0930486977565363819165576753963350 1.0976665213299545014394012805581234 GT 1 -554926426791979569869493.0048319873121113102285807339758147 0.6997673803040780593354646426840576 0.0451245432077637543074631450937745 1.0461743587416348948080305637240493 GT 1 -29923516464.8229334101818178226161040255647984 0.8708628444295266138789749929739817 0.0286581291287526088109167783645926 1.0290767914300376611030838643950286 GT 1 -23825770907908014499362646915512073.8363899387539178243460882759554092 0.5979952712697556157114457996871661 0.0803333683882290989405466364546739 1.0837440315499194490176361058279872 GT 1 -1852024479460357207916329242.7344245142666359523653414657598939 0.5748731634804392897278351719797578 0.0933461527930756049924185430072477 1.0979945475701717581097650655069260 GT 1 -4329540163095426.5063232741965637565254217054062701 8.3811711623028944685608675203444248 0.0858284348457407889004651108348011 1.0897370170967026159374375213125938 LT 1 -6220831333210117990798769682.3687210037741789445610944575626537 0.0015111872095881321635366817450260 0.0404749184907689011086025771267962 1.0413168236892348285125411830549718 GT 1 -167081904925650251406509454918703626.1663866888132485255424165224302962 0.9955112950705679718951327601342004 0.0182695759794707561328555524178329 1.0184385256051433000259542039181565 GT 1 -182566839649439571899186242336706882.5670335508610248471787466298388055 2.2249353170051401190346083840009534 0.0607207752728895107724784371143219 1.0626424800511284594874964015586626 GT 1 -185576046636601025639530529493515.7776066054346490276485795960531551 1.1103225553408892627517071126649380 0.0061987743287437500154393513828631 1.0062180664968506094296811715300559 GT 1 -805724.0349400595578383728706370813311345 0.7650017588025677691893161376588396 0.0892181420209404552598276957508589 1.0934518637666700642253236873948999 GT 1 -38476980263.9599239820876320771723755121275097 0.1725388118475305006077795562418872 0.0961138828324936589783952290013429 1.1010519031102938537857346022778408 GT 1 -226181.0651008108147447161110025797129935 0.9682693309840135108104212922065585 0.0839824099495261848621718046853227 1.0877197113805131999088537839011989 GT 1 -262648.0059596944672791047523982582812146 0.0894706242317241215007318949395293 0.0464736141641867497484471775199211 1.0475881817122584885625234265106559 GT 1 -4883343950807.7588284232550934331218095382225633 0.4973126394845378147828535494046599 0.0543271255211403347754974419315556 1.0558585683805379215136065910091459 GT 1 -3406285420009227213781999556982693730216.3223108282196413406425290801668068 0.9857186196254976147045618323999588 0.0629394942560503113936883405063815 1.0650074249288932367801855321790533 GT 1 -10435.3674561741091037319665506210414083 2.8269519132233549641419123070117256 0.0673174451597374435844347147832452 1.0721187517069753842182795178956029 LT 2 -8868204464943.9849111408013513402094214150356253 0.1054558423366709496781763764454144 0.0472313849989374189578657711192047 1.0483832012389642772509944734505175 GT 1 -7734752439800008341765213.3583218166910957289452487724035018 1.4848449573555082019327916565596323 0.0723656096713969234107817941694170 1.0751175997638519921504066558784397 GT 1 -411912152010055103058530.6217115792718374913881258625681904 0.3457351553225310592479683357380088 0.0479111325933023827860355323319541 1.0490969004311570130281223631362461 GT 1 -2657974240720.1154048326347699122568144123144049 0.1770351872853820075629951769258141 0.0243531885558371321328988954710336 1.0246546315813922147082181300256503 GT 1 -1892596228228573954258589045520.6655715135946516220251353281117443 0.0897760740168798392657623730334921 0.0878225755679707313212442824743271 1.0919207634957350784165695155150011 GT 1 -948478727583358441422373.6372078596732651819822634258347802 0.1709585504741866592514872096208305 0.0146313383196342987884712675214274 1.0147394320161402694268614684412720 GT 1 -697512791542389703807021189805517.4820006492147771958121085139971522 3.6750904490285263736763319256289874 0.0104826773761114950706890521276053 1.0105380076512280810178446183525176 GT 1 -1884337995351807.9113153366959654792547610369580947 1.1445887087557574265831152325769479 0.0175910650574512450783460447284384 1.0177476266158090314347911895452370 GT 1 -618367076125796.2354674438652727952373280517497356 0.9514801055804493716488069396421321 0.0795332462383971493805062179493016 1.0828743965477862023029444245723846 GT 1 -123934378466456072029191739.7701505049670497673903175765702567 0.5015053083998811470529037829366747 0.0836374568364378005203888086602593 1.0873432031321309925892163794861788 GT 1 -3900019463.8959347710422786544325583058785493 0.3091459463568016814203945430095037 0.0495334268417217186318468252140711 1.0508022853119457467209047309376487 GT 1 -56008.3065118419989812497871374150928330 0.2940992261805423051548801639803565 0.0187197851387703328182127950481192 1.0188972181443234901300288651796190 GT 1 -74732829509321400439014300714.5623947338828503535458636508781832 2.0842460399754105125146039676701503 0.0101748142801633961184362696309309 1.0102269315265725964475343967075456 GT 1 -1925599284.7524645366689839746701696419248768 1.3378721427582668905220386184753787 0.0783781766762031792385392814354618 1.0816203094990446665397681294860159 GT 1 -243395.0664787319334865442130495274129839 0.6773546850462657202314611969205844 0.0650724335459112766493376862844904 1.0672862217273907682542043216843864 GT 1 -1160979634419686782685207.8421174163239611253587380938534683 0.4962814610886664650584996006597072 0.0019151928586716918659050711217287 1.0019170291855025821181586976661013 GT 1 -1169430059306689103743122087431.3200665316260020920742227253602472 0.8546271981092014749393261935453830 0.0018850824744896807951996104627371 1.0018868614785219391606672424110479 GT 1 -3008.2519302201709054153641461086191067 1.0815368571287467471318517739374720 0.0309732890754601378309356575897732 1.0314631020176894458177166148062994 GT 1 -1350295664218043.3759070050984497331720677895937016 0.3598894750406059648290869838910202 0.0964545907636614722947600138083970 1.1014289109584210177537923568494566 GT 1 -474195011972003058916.8580071908214185290883610758299396 0.0056413326399794181659329617740671 0.0476569333073566749370376137304676 1.0488299449334006105792675999257281 GT 1 -134276531.7369162825111165732765070996405738 0.2808590474556525715686308903394781 0.0020413923101538598285282628373695 1.0020434787914706942552180642332030 GT 1 -26387835256151857214007313.2164773529526524815904189734919346 0.2306697585827327368650585246355442 0.0453739101882169116248175539695321 1.0464355441617925832827423145705743 GT 1 -18904064059831024304.4523210618329465205993545432436236 0.5507964143158152611778527137601834 0.0144964519044016081545340049853885 1.0146025520958955899770158052489085 GT 1 -4297683653776757166005422885974891769858146.7029617154633969221209363054285503 1.1778458537927812905017027484708990 0.0716713755488197132184637858498983 1.0743694877062006927756696198369192 GT 1 -6974025641062002937832128861822734.0359426972737139997621812735050093 0.1639264020755283108206339321847356 0.0576031830217116835239703090184282 1.0593288436602468112641341001301548 GT 1 -219866681208668159798510186563888726089170.7197228962706507246671105113040193 0.2843814106343980673167661175178958 0.0483738304412120996403865888078441 1.0495830003442598502601983053087370 GT 1 -31930918.6369342248888479397889694817315690 1.0031505349291090174409894024525509 0.0386445509013851152278022673998454 1.0394110642063340550648591749660240 GT 1 -387449551727220650866714506.0509270374455133514668574185940000 0.2272823937163523396990124856257034 0.0533249878725517447211148339448240 1.0547994209062662506145376586903613 GT 1 -55333477867084.8463580084774485668859277513377169 0.5165355736263909644020072445975075 0.0286021335091625972527565541446768 1.0290191453969343791822039520966261 GT 1 -286307011078370179351332340812.1173209730000836083371764002374363 0.1917554645571763677044192033660986 0.0397624043407979542946155834435787 1.0405745296638731377062268192335542 GT 1 -62146791004229637864.9517526967329680075790378412211552 0.6226268473010825265198677476604770 0.0560256414626880178042036447873070 1.0576562757719523495542537060098638 GT 1 -18833166554834860315420334377.4187315247395750456708690629101179 0.5449533520579309256793304766125490 0.0829268083703329578555396447833959 1.0865679935207903833041446906268768 GT 1 -213385236800542877391233159954185461513030.4602702318581860176507799113104268 1.2748756597083156908835032826953288 0.0463106202957412740098415497478701 1.0474172583465991871087733667433349 GT 1 -431436728488712537866490658655.0295789636423027660186254229773222 1.0181362057784365859356441538658304 0.0082803555246740628071739242928633 1.0083148280971455934440431477445935 GT 1 -21051054930236554814635823256.1464417379967717601672655965232341 0.9341835698296751624518051263312038 0.0828805035540926230373736655533763 1.0865175028427376268079956835815878 GT 1 -3796972703329148766577219943935.8628822634693873157284143550558779 0.7630299231304786176846300150392528 0.0715804827772540751156797733371371 1.0742715823741869507370156206916372 GT 1 -51156737.5754036126239789070991049099374967 0.2862866611745862670978556405953747 0.0941025847330267766319784246832778 1.0988292075321010251889732704937426 GT 1 -84.7293049708270763693039779895961264 3.2743149115990243265842371055966309 0.0530792941105105166541722053312324 1.0545399212030484132198339651996111 LT 1 -1683851882372452458130.3542524839282195968903611450740945 0.3012184349707122728395437999496063 0.0425332558846600158454903825996830 1.0434642905249286744580930887161811 GT 1 -10657792899186121773040958386943229957845.6207675405829660095459024170240041 1.4024276968389099301353825620927137 0.0594567205876194009208079459478031 1.0612976138491253027422855292669328 GT 1 -602654.8297305227785112520197539763220127 0.3714296052224393924824479447662608 0.0421262108891353314745367962419578 1.0430392538334459438992350248302005 GT 1 -1282900893594079863182068939.6245526466776238880852044705058149 0.0361768934579386195658568776891363 0.0146248310823663047349182307778488 1.0147328281773592106461193714487705 GT 1 -5391763317727343948162533802.8223614265851929533671884924616258 1.3511585758346491124859406915360640 0.0975862950961680394109670757348125 1.1026822111818669256430758014721774 GT 1 -843261898657990447606.4537625983828499221013853561809559 0.3286870055374577551765566590498429 0.0214034008677185407220339871056025 1.0216357753709601416251016956458103 GT 1 -1146184967934235145694495676501669624160.3048565508714467051723504151873333 1.5585265566102370508786821807755992 0.0615579645358834997230581807379787 1.0635341878207709850327982258590005 GT 1 -5061839206467258228695787.4679511247148249171706053116405188 1.1655155377192367675372713945821229 0.0153029860472456290421403353088572 1.0154212851766117479137058200509182 GT 1 -3162.4393676886777716439137550291989114 0.5313187842084545505935594995613003 0.0540089183115649770657777167733111 1.0555221373653575540162448132755583 GT 1 -2027557668041708972609.3021281335008230344385574120110819 0.0261458637707640826355629819829592 0.0537411111158799559263138994441389 1.0552390804736805262151629094915352 GT 1 -318.1567560322106881684154485708971216 1.7488003394872932227466291686839520 0.0852770867004195347942631085250735 1.0891340865629631505351130189963320 GT 1 -1589790801081904091642197233203061.7813251067212147045495542641926636 0.4006676446724657288364780548663861 0.0321813445424663084662704782088158 1.0327105486591522820644246182971480 GT 1 -8205834195840756836087903402981.3094719987992947312996046390230467 1.0946475600915545572678818999292187 0.0907564706857627787800019471272131 1.0951423116493110965162415892913763 GT 1 -32860630399670396014866.5240232911334216334083697495033557 1.7431755964557985595085055883978404 0.0999187048322158889672311581065487 1.1052701917729466425235867280946862 GT 1 -449602435082556993.1194525197875442101938954377284447 1.3000124424214551656647719712036898 0.0272405898046360375180978741578574 1.0276184933576714235653663919313749 GT 1 -674219659931577.8304637508423083617174231554055256 0.4465975372233658937015733583125602 0.0393834999357675611404680623849134 1.0401800130675439558877459362533520 GT 1 -221491642748360596249686834.0932733435539302327120326496559718 0.1920456516625022736636024825188426 0.0620893130369083938766648035223941 1.0641005509665454301282807470754309 GT 1 -36711547.6790749950893933735082836360160179 0.3718560568031418725773675843783921 0.0702621299661155382082580329512143 1.0728525927435001551233037889110648 GT 1 -3.9495442108208684303933563402626771 0.5538515047404216758694563440620319 0.0322223393875297239302293508086005 1.0327529075381490971076496745369415 GT 1 -4664116128535869.9488713614317349690133318968183095 0.4456526952118635527873849846789433 0.0489906956421330681159888255345507 1.0502314327223919448920450434220238 GT 1 -556635718372.8116171604391982097655828069925990 3.0826104487817480908690542870548594 0.0993244687628852378482063098518477 1.1046102069463592741862271975876997 LT 1 -702486201650444501863483912016220005272.0357070825774584969653249290617015 0.0012527959591276326541485983452557 0.0649577410319933355875737069225774 1.0671635539575663318462773115706848 GT 1 -16060351779402199554921675654059914298.0911648349459731906327941638413851 0.0946411498258146307430442406679430 0.0420130682993007930495358678664230 1.0429211423353218608012951364602820 GT 1 -13207524199391556189284277.7171530421578328507814332804727477 1.6829219677456262779105545869861008 0.0838048452385956137927448949754528 1.0875258859505905379704270581884041 GT 1 -300115852615033.1513564304415420122771002274601887 2.5359211247479744606219326337653063 0.0949640387434501600397399973499984 1.1047586839324559892247053648436359 LT 2 -26652382236825019.6274807254981421043523045296890826 0.4192532200629272874207860095456748 0.0778193823566757543458147332888131 1.0810141769501121602841804999436050 GT 1 -7494555954678450434.0904334116083592517717086659931601 0.9715876890563628655301458997604069 0.0193699835718646017447611436594474 1.0195600399661674136633693174696136 GT 1 -1472658840913543.1188027334583074996877580623146068 0.1719042864827450254122878059974420 0.0038576445427163014847732262175757 1.0038651044447055700442123177533760 GT 1 -155.0471071313086977841041828887120353 0.4955869225615410203233736557551553 0.0000394679901931731497291697729039 1.0000394687690747920894071625406419 GT 1 -2240981988209.8208482388739989790148304041054544 2.7956111794254314235785641956640664 0.0576833925014907231917669572285911 1.0594139594967297296991053664977654 GT 1 -580357503741841819831885.8358817103117968267295748247194878 0.1611701379653296186263928108560885 0.0262961601597169342949350496083330 1.0266480874494016952768028114880480 GT 1 -5302488987595631282779204964352607558572488.4394452315953202940698602672985845 1.5768207580516894438999736314233583 0.0910397231212423482272972122454118 1.0954538855628693607545946949071908 GT 1 -48117.3130654567288337265859088830591950 1.4417915896734583331907257425308917 0.0744060888161536126786250125223325 1.0773196813612922497798202529549759 GT 1 -4359063368165989244736795937233.6680721537683422893996736503510342 0.4940212391080038311623575587355152 0.0894298392395589997778921506936233 1.0936843253857242088278608019079926 GT 1 -208519.7648096843447215852374913256814182 0.8094769666835347066961534514072939 0.0301185625490284928657188710719689 1.0305814443873224647305085445562251 GT 1 -68569782860.8197105314814246168160855922640581 0.8140321355182098389826634691484272 0.0362957876153279036764101287396530 1.0369708650805185965155111795546104 GT 1 -753927174673615120396215016034791019218.9004520859710339371807692093637147 2.2686231211027453504298142703953895 0.0157602348516726698495545829481466 1.0158857478424529734257295463563362 GT 1 -986594200359800086391627652679205319.1612531637566245234923971339449530 0.6370108068511002614205881645189833 0.0393949964266109378166406937364843 1.0401919809648652658528953505865344 GT 1 -203471083728305771199516167742474510509.8298780521262924834430373280313229 1.3121166603440483442547316395220269 0.0770134078320006956233311307445611 1.0801405709466577532274181832505770 GT 1 -1.2805666864255373138576789948444855 1.6248251139792634747033383676416659 0.0967636564943284276948546470581596 1.1017710283538534687122298580175173 GT 1 -153307592677.0917969495964151098242095366805966 0.9105756142626729192002627231371972 0.0151429026216577477489042456549830 1.0152587271387092404754706139083985 GT 1 -91819355836612.9338311023584657707481576445336473 0.7304801238383917734851734315269686 0.0722514295236280863754048218965577 1.0749945198926609378117092068269792 GT 1 -456.4751914011441290979447989057254538 0.2154843040249294248354128433093858 0.0824751481917938898803123305407627 1.0860756129807809921225122630036955 GT 1 -65453935062282843.6550936284519620161503418751409637 2.1847511785895569329300348085461610 0.0481842414524330132745391093210924 1.0493837938577297798729900727709459 GT 1 -14894901900598933697246395.2921571695318912860339719882452831 0.3533565055228428876968846142731458 0.0869909170933914598093683252280488 1.0910094500175863729166545877575108 GT 1 -37400877.9775890174263503793832372825630328 0.5131121950242643096914790433953299 0.0218842998584772912276576306037010 1.0221273131413515296475915489307776 GT 1 -58.2542796247325711834876370902322932 1.9373181135162239628523374020301713 0.0535538910264737066910483330142636 1.0550412471185313797491137482983207 GT 1 -187556590577100453185255635442245906.7353819300965643819528251291361432 0.2865770872434673108952347077143044 0.0358460969815233537048911064892284 1.0365043466802613461536597172213888 GT 1 -9312437155659947719200831893685.6149690910181678005456466939617955 0.3258891395227501205676559043675898 0.0910776407947981261806187510579674 1.0954956018682112261419382626262316 GT 1 -1.8433488187564769129413224209212997 0.5083711773210291111989466823084910 0.0611741266878465752864534522534786 1.0631252554019175680491646709409261 GT 1 -8158704545980959.6129603274592137600775873858948258 0.2129640104987121699215842371337853 0.0090920814643286539766712232601774 1.0091336666931114341347610068190818 GT 1 -383356524783418747382610110074624614.7622939534020641433851398734140583 0.3741433780704338063337515648277524 0.0849348913412125249819507334683589 1.0887600592340159489212907701028588 GT 1 -273072403490870.3490249825925155942825316606835573 2.9808016330672405711146344807947003 0.0463202847177928525268352679431863 1.0474273921189005882687355578859902 GT 1 -375244876349990246363787925803.7529732120625726832273630402316061 2.4376456739355957110751354432898658 0.0885387200936349033824728881044507 1.0970033818400624863196420169250036 LT 2 -755832281582024080515.8739293074620398834907429620549141 1.2878248235283377795736672259617760 0.0763089917692681630105446922305333 1.0793776699435311996096127847235222 GT 1 -259749538712824219354209.4271697994008339176599068759618589 0.6704374830244865431343790357542151 0.0767177175352259905307756416170190 1.0798202597467393205237617597924081 GT 1 -18608506049312802.7576395445159477948252863880588830 0.0325101366997051415750660759046780 0.0677214972282546284857560661109466 1.0701236862186963479669872206736949 GT 1 -30466278761798708066971588676.1389617023619653418579881165524029 1.0625118643058437293199677334453837 0.0743947946271130452067191948432943 1.0773074793361943607779107554696243 GT 1 -58173364871991883906478340624669.4503281790250762077384374388730588 0.7179360332585895802005470322152188 0.0869823839445713483079604800079947 1.0910001038795205668825070798873546 GT 1 -425340023381147507610785124845841.3984457736514078636937094527743048 0.5393987497374875492579089993855761 0.0373063366728328693519320334637201 1.0380200244083413934367878899674240 GT 1 -15.7316293480536460366980632962120199 0.1208298608147681546451593192976061 0.0790109487668081773694858038796150 1.0823071307093358318703842860932281 GT 1 -683169404964648378678846321817885040837333.9297402566050823519049526037204047 0.0173500231327839821280417292236184 0.0878562155097911576978526338019599 1.0919576429023436468351593507400647 GT 1 -161526780756487098151893.8396987391657480451039636984537627 1.3194907077827933102425397435249273 0.0489017737695660213491274821857871 1.0501379344619604505304332643415252 GT 1 -76478481.1163847913933654753590193278693987 0.4233759630161804005205645823997992 0.0608299060684259764844348076132680 1.0627586724813156837045602384328474 GT 1 -779808809607534854011904382121.4433073594522170606807528484831155 4.8058224368671876694116474486667212 0.0788511719379717445428635343319377 1.0821336617947307845804419307821414 LT 1 -13309645049177939916805145006.3037841081061898351694637133704278 2.0214766110711800221655160751780769 0.0945900706298189460072730815490511 1.0993674772078748369323658624753343 GT 1 -385.2769773121849681349640133169281759 0.3844955945637007011313703409585966 0.0291701618227875146797118455123764 1.0296040699435825067690074769548213 GT 1 -232.0605595856285833003839497883924287 2.3324262809693762934695383956816903 0.0235759312276306676352622960787442 1.0238582902423977252554596336855725 GT 1 -63471723530605191059122.1780205526936011621025113387932199 1.0673841921470165186927152844674320 0.0504417580969283340279222350941703 1.0517584110606246714186563795630124 GT 1 -114069193363040448071924389058921015205989.3842744430381181258715789646473969 4.3961141836562859234259434533622514 0.0182701077500386555924975431989097 1.0184390672718767632703085816197249 LT 1 -185988.7323820442519440046141030807660849 2.7460484424198078942597212130539548 0.0128684427212825489588552339981141 1.0129519583816257029024981895887596 GT 1 -7334.7448299578482305279197932227621056 1.2956614301807314009341515590767882 0.0938325418592576942972643982263548 1.0985311576336331802944894906460479 GT 1 -5488194781444759412453097609643178617.3205706692637084227440335369724149 0.1219781305802000613770071976438624 0.0888029183723211180939100096544491 1.0929960696333992805202779728550425 GT 1 -64327676109.0036216818922815437576590412333884 0.6950634176888566636345814849555059 0.0912762707342533188633796863590949 1.0957141592006927693475202840201937 GT 1 -90880192875381994819194795737171035606912.9877087230665204557866702901826213 1.2073036279873168685740728856157299 0.0689348739964942353587536211150250 1.0714260514088930720767038988044023 GT 1 -1029722063203910601754400.3169492831201453251415345415941522 0.0303448093684042355327572083595710 0.0498923601081570825463547882750725 1.0511799956567857977068295467513243 GT 1 -401924683269403179815693518336966354.9298325295409433062989003151854562 1.1633866779461123851013630523090551 0.0873838168808207022557102570652015 1.0914398776642748155000638999919812 GT 1 -8551584108795349851300451928872.9202692292129633394832867662314807 0.1075800891382012348042308897683473 0.0680011059280027272836325100906746 1.0704236509152785769901743436081758 GT 1 -14728958005998902921032.3169652548615945790136974783529210 0.3629655148603492522143943488280440 0.0912213419102988281001621293490029 1.0956537149070804364333988221268897 GT 1 -3652162404619303025749226184967.3673518111211087025222237784849120 0.0801541650013609014921018372218495 0.0156752991783726773175890407241130 1.0157994558516942683142402257437579 GT 1 -2.9805997580315028540938518214162615 0.4016112949256728709775947641011366 0.0720311842722956002696388100446038 1.0747571505022526998459205118433726 GT 1 -141900171967736.7178861030199204971582396673065042 0.0291823805190652557632043784160260 0.0788411837209656515180646921043868 1.0821228186361118956390013067500281 GT 1 -204974864953016179020203474873097.1006980111572272964406294533966944 0.2432141355475512369630224266267645 0.0220132657725186902729703423765430 1.0222591732238935386228239109803019 GT 1 -67927894998244714560864.6859310336465950987156685499703265 2.6139063134971216725331075240900701 0.0112541035374819828526927198199972 1.0113179101364274691755674272034931 GT 1 -656506302346470.4178995412964544547758910120954169 2.1478801501208675323455416430981397 0.0871751420011284981973753265385891 1.0912112481156881650096406653579489 GT 1 -14236240554497916689753778680912254063.0205032035681005465578209936113321 2.5220657631495757797099789735046078 0.0595195956054634274745680509645585 1.0613644657642911908633834273445821 GT 1 -273402050202600727046.1338710216007000761002267599858992 0.3706211774998730573574946957535119 0.0457140330646834077777113388324962 1.0467918967542167267057143606119800 GT 1 -142755077603.0218187992342795689296496862866352 3.6143111361183836884508067154462690 0.0743303242365986810870646638817668 1.0772378296140516872448068994097951 LT 1 -79703187836772.7042357269941266440843632943533091 0.6836384705132974919513197815466820 0.0474632196717840325395381700932842 1.0486265582089902841253948364641401 GT 1 -67287691.7521957514136323159177231105128437 0.3235869959989898349765623677194828 0.0542681449320616139366254430870138 1.0557962014125627795462852490560237 GT 1 -2098814933295912537861416644580139292.7515559356020846929926827419800004 0.0438237403702358311828522371101683 0.0308568142965901719334061541342514 1.0313429115439721273782641989293026 GT 1 -38996278069604400036630.7698127122865395915964994284996155 2.5456273299030899989512984604851075 0.0490167654583541247977860188755083 1.0502588458858923371507798512842643 GT 1 -350004097924342286157963595985343039461271.7295690469859956012185380230933594 1.9815847094228701525754674944956434 0.0697825901037735678200114379503661 1.0723369460737743611286184412250567 GT 1 -265128.4342037279424770052560861146068930 1.7326696280324249585951292943357341 0.0392487541310314065778579914910696 1.0400397527709481961818341957559663 GT 1 -276132157510035740449283661570393.7391052184251063663801025072295885 0.4229310580485081940257917804879401 0.0718158064648232241918535529702033 1.0745250814784554392195198353115919 GT 1 -1855826.8556355389684020556569068886811847 0.0569091170714467379721158592859975 0.0787653740318342244792407394017602 1.0820405238477829214819489885347696 GT 1 -7055786349689926456559885.0670728523601538642124033208830464 2.6879310143083143479493527698026763 0.0594935553754073696061322258412563 1.0613367779257809954977557511649001 GT 1 -7991736176654106668.9339593898215875589636714899933854 2.5921928061118290722910409017138566 0.0017789942207763425482072036694879 1.0017805785102351342011760926769155 GT 1 -168431394934461044173827567307271.8472059625712055548458150826694026 0.8254445299664407966868066867131981 0.0308758071685192475805079863986047 1.0313625093271675913426757723270500 GT 1 -715689294196573755197351023387506571995.7584704469458855979565396209658156 0.6978175391273725789633557464107463 0.0070467509874710975315862115623673 1.0070716965966188142042751649653571 GT 1 -5588248068030651833.2039205193426607650929664675766626 0.8890270691642398912204043815251779 0.0998235534420303738102387884395277 1.1051644831423781041297000999484810 GT 1 -8212926064309863102180966682350626456.0150110364824959916914391556680766 1.1088477673645283099839594591093406 0.0410071953078682096385376115317945 1.0418717070547585634153349103138528 GT 1 -287297289757655532517603636935.7256744137310809678407722758704439 0.0462973103789252604127375884076058 0.0782973025420092520812402603373268 1.0815325613751152790009693768911016 GT 1 -281653992506.8603876333287575813143086012242628 0.0916621992562836603924020199026259 0.0268213817671902798478754152175040 1.0271876388928256284287837252250880 GT 1 -5199994057244.6749946566150171250202574789543284 0.4689985152329652945927309980666807 0.0768630534819076183397928696490914 1.0799776843929956726085797038211914 GT 1 -344524138365642.8100479704110889458865961300627636 0.6716576331783841268903508806319562 0.0789995007211940518703843046919160 1.0822947006218675388923912332183709 GT 1 -272165455625634000011.0003605390288184224157901620462262 0.5176380758272747428546678375815542 0.0910476340903747959793388175249230 1.0954625889174159945759686975367603 GT 1 -202591.1522653351406951117639987858104992 4.0170452432468551673437250076170923 0.0788714489547278732187799240510330 1.0821556747847255626475192421508397 LT 1 -13904319653.7884859070988065637318366650402746 0.6505660608322668610400278681883983 0.0246700264852055459909367157405788 1.0249794308661366197057263354838258 GT 1 -2.1314073234035827846243307096744356 2.5109964452161250777801061034078276 0.0906878040258444536176691239590883 1.0995856415003109081102524913029780 LT 2 -50824008792033499997362451642.0654926966955147689354778214114592 0.2211400254558886705916481176143775 0.0211037802486738275102337137428640 1.0213296484534111193397276280900258 GT 1 -1077125034064057054804284685626977878158.2502762451460735575471491046966787 0.9067053943601392626961627676055889 0.0162071743676349288210099849802887 1.0163399471537240209728106219532498 GT 1 -153445815.4376462071589675562441576684403614 0.8011431284552449455753416672037271 0.0171080293167673923503547047480765 1.0172560624497032935100054338596298 GT 1 -3167229297143557594018018.1490684432083577623535881092192225 1.8489379757183943287427510060860273 0.0296943233553936310433097609404164 1.0301441265664649404009209927953480 GT 1 -107835757102574394514517453879708851.6581760041180542851888548156776523 1.4419512277500000251626316061663782 0.0713231681194414751724436249455284 1.0739944673396509106056713701892513 GT 1 -9.6661461179329358104430411372101061 1.8903838396837655707415330001918633 0.0970416264288515336398990371413709 1.1020788245555470665254745679296992 GT 1 -2378597065500011833050314509665.2497335002060149834791484960747867 1.1363935693759883880279053622236046 0.0473212144678797997443991125087314 1.0484774882489166838591218975349437 GT 1 -146986679800454727.0895586290272764519674317913889374 1.0914913848600807074084828210735158 0.0328495774713660045199259005501447 1.0334012397539789139527428125995620 GT 1 -18090381572506312915980847392821689329.2274897898919871021491372625680961 0.2797748140799571264473091903091649 0.0981888046986450344383188570830789 1.1033500986772733445091366728613779 GT 1 -32759979195326.9541146179717963816738223923355425 0.5025298820372425350376617241890046 0.0475106061613675224321757060603837 1.0486763071208276633330559160305787 GT 1 -2757429027694522371447138226111820091.0799556957724064650031041112246835 0.4093696299578464445092381348554352 0.0052242892249450885312288778886246 1.0052379835400960060562638996677109 GT 1 -339136055615.9990532185903992692556578823801302 0.1276718342929370584367716850867253 0.0906281687314247283179969135923209 1.0950012131440067150051766305082132 GT 1 -199922415322600079414.0952427437204927905558275515310326 0.8533987361985732483879676796178711 0.0412023205825489198339279434025291 1.0420751967236987224934513180990468 GT 1 -19742349941289667526791627357.7155297502033440231368199743165266 1.4510650498317995790416049902910942 0.0652112240641716838648046800461393 1.0674346833045494974992231567054115 GT 1 -562825594244.9686281088757708201301003882606264 0.3079011266670393790626281960514263 0.0143141004810114407941287833265821 1.0144175354561900427198801231187401 GT 1 -312886706667214491438261201958483.3464927404720970556993523532472085 0.8330973183904814420686599468516759 0.0584324581085633319682684607069568 1.0602091948585123416788761984808568 GT 1 -66483885470149299340217305.7144903155782328703317945091210751 0.6346851742507392285085917517891739 0.0862541141117680484896624332935517 1.0902027703761842106054023138048305 GT 1 -1031026975272689718946794035.0445415122058712602306282908897775 1.6612468416995236624727927076633475 0.0195096712000872924789301382136000 1.0197024969334808419770432928951791 GT 1 -1502902857968345072.4543099719490775166603822901861738 0.3625325836430300382813321429357777 0.0186242115934951034665693899760271 1.0187998260947828184336622247546526 GT 1 -1495524019.2039547348161847917110314707243879 0.8572582930475840248618143326153683 0.0232194837598536132927933685203423 1.0234933029036732411077962560054801 GT 1 -33135436182272243604173544.5488015090107020194396544277804762 1.1879552236273584037872769941038826 0.0957997705674477332832542008895931 1.1007044503807307513229087613582906 GT 1 -641406.3882798577339393951135545960903502 0.5032287472773384953944363706110994 0.0224517008861419655497891682031885 1.0227075774851256714337599900708216 GT 1 -19294516.5509993048739692350256983118352677 2.6008531225055597400810002601147289 0.0317749617755156895944005658394297 1.0322907412196351503192562358822892 GT 1 -21971093820.8704136701426738528341319923468460 0.1999287325230804952130199342627944 0.0007346886584095010762875353809714 1.0007349586743817806325511550239293 GT 1 -1437913.0331282818449615672401785414469448 2.9608017895649235847594548024309662 0.0041874781499084730648973291138334 1.0041962701894361425110527245373905 GT 1 -18242.1666729960837023671093014944074221 0.5219987047047242613056407039347389 0.0838436684264131684865098406484091 1.0875682612133203071319834767476124 GT 1 -5470716399336983349136067855362702575908.8813962056565487055169573906708106 0.5549840427135888036286723065057721 0.0665016712435565374314758607635579 1.0688161063003624807477287045255648 GT 1 -62468849420742284175105839993307995200.9480808022195598458145895986245051 0.3342979674635772509934654749218871 0.0257630400652269620186177090293495 1.0261007195747082935578066593515733 GT 1 -262043104561528768527.4814987088500830083552310099734220 3.7063996652165216688456064114954973 0.0138293829759405118438407416969253 1.0139258997709689335330047961699262 GT 1 -187424777.6365864185759396368505468463312739 0.7051313779055629016858795244787660 0.0835888697498740724575653825611832 1.0872901828522350981381269445684212 GT 1 -5.1855763891769119800870386394053118 0.9709907471745122227045171205057248 0.0433237198230713700019156159908786 1.0442902099816398416293273773459961 GT 1 -6.1204400778542731423761278703791917 1.1908579213278321936059393037290478 0.0462779189801831511956602067566780 1.0473829696613997042831654426452071 GT 1 -1051338660173069003781401.7427831682578981918107555249601953 0.0438798086958583936090553627387282 0.0888154561692031297663618573284746 1.0930098294263066033471605792709568 GT 1 -302411936208431087291474005653.5575326664064591338954962582871717 1.5060180244012659027141765829565062 0.0112150523084332570224697649068799 1.0112784151984150037495137002719150 GT 1 -137834760691794562057206386388908194469899.6811444357086757775102042365580170 0.5189695285255797452813446020549364 0.0609181994711636725625810795750574 1.0628526890539203902364186064870106 GT 1 -394836427717452629025.6288689078880097470826562150067848 3.2745792143145970846842703456309954 0.0493730645071205398283857121267640 1.0506335799492144802241312783572321 LT 1 -415.6847758629149359072730290275149408 1.8742412912315560652409359287136202 0.0447979158042398726701084985010510 1.0458323543991947965328782532042041 GT 1 -50407677385976789847397.2937228439268433300441577816128188 0.3003268492281301843869972044927482 0.0080351502993691020292547739571542 1.0080676060945804049309366447723355 GT 1 -1168441939036283724509801257246413.6208343524359752243635924042772859 1.0333800348307395803125768747378787 0.0844834303509394214178295707487307 1.0882668160154523525556458439377730 GT 1 -105745046004628996696547022917775413.5703419232815287931343453471162953 0.0203329190175102817729095856813053 0.0301411511402350233574846115730122 1.0306047347126994909960511478305247 GT 1 -1963177585052975060.5047978436125118511180389164250477 0.2375680886398967116662188722345723 0.0257172157865899304680271805051607 1.0260536846100556647175137154781776 GT 1 -5926.8927286184183610225398019561422984 1.4550285480400371533149592062113448 0.0786370852922245887500273491204562 1.0819012761423183125330293688643961 GT 1 -42850459882023908474392.9011663373293457341638052516742145 0.0222978569279106631720852615818912 0.0788706134660492798835509598911318 1.0821547677579064069679307003981918 GT 1 -2904168494019430299614.1238577179440086374968405612920225 0.7835939456988991256487469314539553 0.0350469950156614945495039676721963 1.0356758783271049965965063142899305 GT 1 -1783979947704837202013601124021014727.8301543427570681487020485840110701 0.8828074989628434161759453239534196 0.0464896488722912836430238603715276 1.0476049980722101516013614638392279 GT 1 -73450228984955473268542.8645929751302675451952723868442090 1.4518777379854912837435728983100670 0.0891321178758253439695721905313461 1.0933574173500124012048381337843752 GT 1 -132468840.1148796230244276686385263216816411 3.3044565645896773007379031281585377 0.0183320380911397276476618552359801 1.0185021521336539434706139235242006 GT 1 -14266331479972437095687969612950867236.6291554104567824782382224463298241 0.8008223777819981557496304023981630 0.0263309080284507680224963945098716 1.0266837743670638321871088589912556 GT 1 -132839386495177031200955192389099205.4945933450742071560005789403370786 0.3842820641476159792613260394910708 0.0229092488046099600042183112949964 1.0231757436427113395370977632235346 GT 1 -107.4047427506764271658478812967073106 1.5120380763016330920155926671580566 0.0306192915499598911696298973007534 1.0310978562743050478045878862046793 GT 1 -65882595520789798449065336840440.6633526730289097808718922118966606 0.8987068372098875057604172684949647 0.0400724354193728153355048327837622 1.0408974509288650097204094690903603 GT 1 -1205499549576641724107199125217437.1913482381916992511330009680334941 0.7055540935472054482420485779586501 0.0267506291588726805036627837175926 1.0271149389432298316646434239626114 GT 1 -48137481.4684844797216947302835840459345682 1.0107499720475128343596173425034256 0.0675973077333807637940245352092574 1.0699904843658670965479307965841473 GT 1 -189967522082143783586660293376065.8412010866747917712765808222314180 0.2307087349997974293413184367159884 0.0841152193537021981324072746335736 1.0878647075402792681017460317895058 GT 1 -28632660532154755876680954349213717660631.4489696992655466731878625139555001 1.5806332969911382867159016031495380 0.0833587221740249477599285804615705 1.0870390742903145823471703939380577 GT 1 -15941.3980049442004801440605618723895415 0.7894315532765759383774752813136110 0.0153798737333998123536255772054568 1.0154993708080450748869046704750070 GT 1 -2792510717273920735956.7685833815629728535770471000119200 1.3845221103853396469089429316350813 0.0441454815937788315972845716732600 1.0451495549102412851902250676865553 GT 1 -19239.4925111607813645585339789483155735 0.3087702607605279059018848449111810 0.0377094079535384182891621167870737 1.0384388031962417198876690747166265 GT 1 -333881490665361846612558848810.8950832614471744168841526118422910 1.0688964809537219349985420484135428 0.0980003772152502860549430146260745 1.1031411771183262123858223657568305 GT 1 -274385433782.5826975592256508787509719912423685 1.0944315119626365154526004308487996 0.0758278615012273251432336298106325 1.0788569276150045174045029601007515 GT 1 -1.6024952453393937967428760445913366 1.3774818648279781030147310973470364 0.0519863169287366761587342877925534 1.0533863432118028509353492278252282 GT 1 -241679397.7139094956174012373393977161494021 0.1697627797130111418740250313755288 0.0800894801859242295686295031694239 1.0834788747408725693239600656571637 GT 1 -1923731156571710737032821589873526995.0501592740270880683055457624493442 2.9441431693969743140986589787398999 0.0979314466712891133791340138489069 1.1030647603344070873721237094067905 LT 1 -47870.4246971578795855625976307591236821 0.4210565217113116395558569751837154 0.0753575777754814216002369466341710 1.0783481867754634791041401183347275 GT 1 -3440028453185351778503463127538538335797830.2514383780996528234680999418037383 2.6463183206405622706076743836376059 0.0626484728652644031567708389810669 1.0646969047358731484253502040050651 GT 1 -289374440633825645018647.5577369374595125028169680360802152 0.8520571819414629761006108731009884 0.0526327859290109018487552078714897 1.0540684953072655267559648768415579 GT 1 -2355882521475951027416829855984256288232902.3278048610314444749618457453585766 0.0391557692406570491166535467040816 0.0349438443412184147355207878479623 1.0355689869437429378857755304231814 GT 1 -8540252874471.0966000611286298768830367925390628 0.2328148296080275572432451188454225 0.0144350975998741554560190959828594 1.0145402972264293998794151860492396 GT 1 -316182550623091620497.7267681369368097507661056038248855 0.0971228691219616465968780893893959 0.0718888194119949486388626089342526 1.0746037467040732789068054900143273 GT 1 -916661274012450079.3425283918898017040539076618928815 0.4442539378695117313149123789145793 0.0254916770928301402051319346863771 1.0258222193761035341840693145177984 GT 1 -271672160380990371049542493.8100193403896410496172092660583579 1.0346302273113404988142749053576124 0.0299196623441134688158212634174413 1.0303763885886317792320369435393556 GT 1 -80687151766270099894.5386896700408510077447915493047910 0.5231609097183883964072227884408627 0.0092829447312526652868898792539528 1.0093262997796311178658122686317650 GT 1 -6516599151460845787742983042724376092.1890613247623061483232250435771302 0.0524007226771166591938990736840017 0.0982883340315720389997762544491309 1.1034604708107964750808232962859595 GT 1 -39415644799023498006633121260492352.4055327046400420538941417720817785 1.8330363856167469189971371055357298 0.0842457388666099113688587333329734 1.0880072241717240867498974045772227 GT 1 -196895959545273917475022338707301984410339.3100451783936609960683486256471345 0.2506984913345004326390747797423847 0.0231419167668893936296587892461922 1.0234138951841227652195063196135697 GT 1 -721084999365808466583492659439699.6194493852036315810444532147699944 0.1557478587922893038117089601425252 0.0981035954287994900213790121065064 1.1032556163233541693167440606960568 GT 1 -2176126406027061549450997755674258423.5384012003430212178022419684519597 0.4948784871512967398467102921341143 0.0189325738264093129580148938729796 1.0191140896955444357756949310149090 GT 1 -739116267438116865074108629394510162195663.2863592627092463114182111521758174 0.5051817022837798179437205501183722 0.0748302380375951011883240509030497 1.0777780318627866602061308083244421 GT 1 -265585761366241442943664605.5473295836326762419636452730991402 0.9770373726556243002812473319582885 0.0028620410065001651493829107592509 1.0028661444772662367543901057374355 GT 1 -6989954590.8843665061098789696157944885160646 0.4559209313489443702943249863747104 0.0161345022429270501033597766230290 1.0162660805439807817764419392397452 GT 1 -16655927204.9513239149779161343414777580591113 0.0558869601017030395357563337675227 0.0451494548197780030453380371715908 1.0462004479418551691392373318394331 GT 1 -67022155784.8405001897326217989077251482309684 0.9724873419141301862663234984370158 0.0143368778153145025417697145240965 1.0144406438292414983827775813542989 GT 1 -56839413.1512232488299639964902599555321881 2.2491688020219758538513459442578291 0.0580077410042053162251662030645150 1.0597582220660837934939509958077345 GT 1 -1286439256423610093619118.4968009044559220482272959076011663 0.1999357259153788570788842124055535 0.0499958798480222649495364816413498 1.0512889573948734733938533401803963 GT 1 -182324.6762984578371377865508513817041882 0.6720451832227824511116553802239429 0.0042479801902707011944884499550903 1.0042570284918815319850514019642983 GT 1 -62408168.8384456107247463780742689115323692 1.1080381409468988514923787462640560 0.0708914431891909237641939558957417 1.0735296935927476305985485845261955 GT 1 -227989844.7119155906088286439998490719015003 0.0948761316288271539847911175468478 0.0705259950690258066104149094808751 1.0731364389347115366529857368642241 GT 1 -1612762496054842234598813858.0508532042591552736194005623843506 1.9785846992860818947652004695214126 0.0617094957986989245267380574819260 1.0636956719533706481909814580322441 GT 1 -8740644072.4757506705461783856140862918375848 0.7260300980593582936801620097236415 0.0395375693687482561154648022131612 1.0403404119255494827668213095998574 GT 1 -34785734772121781476733.4314729112653567891233623664074390 1.6206761160056257105076144850675859 0.0258674265607659891543299119950411 1.0262078722414389604306203744529689 GT 1 -24359488497764425543.0789985698141641072190225003570604 0.0430765404431573235796797859461830 0.0416386639504926554262142508013084 1.0425303946201255227066717502752769 GT 1 -467636723.2767424691575536514445031542919000 2.8067614362421932541223955882564444 0.0903396725144917887771854651719100 1.0946840156519629868171105306549155 LT 1 -279882075362204237351621996371693233625.5218187898934063443692731036139941 0.8494413575771006609305040895844691 0.0355679762197580466242594790243463 1.0362159273157636117296046298364641 GT 1 -482238097.5192440895832458834770598285931521 0.7716374294704892126110613650551753 0.0989572062651832764533274936981848 1.1042025266805836942294053575504275 GT 1 -51864098569732399698919625137418907.3706998098022487981128373708372441 1.8088755255241108170113947469223649 0.0860621239354775982228231909804170 1.0899926791328374960443589860127891 GT 1 -18437933333761312947180140.8260443279292128458549079240190201 1.4194848711176592367107724521357882 0.0277894999083868442862650368671478 1.0281829340880095853774864667316297 GT 1 -2566922584719518689065738660440220.7740112482735552838470764432109342 1.3066567365171677888230446134849613 0.0239101480448230144260902700854867 1.0242006353769532836457545107217270 GT 1 -1883326233241306090417717002720777977575.0624488697153135415941178495586911 0.2159974358107580484731129273820582 0.0593945239232022555590810356390944 1.0612314875906267977177137933933734 GT 1 -12266211889649997.8671142868320629924284537350654177 0.5390690713555123900757282127947592 0.0998295756268598353165838637641088 1.1051711731696464264751323527031582 GT 1 -3125.5439192329496741725956338292258583 0.0569643693969156447751997682977170 0.0243676212290453829705629230631082 1.0246694246189861050153565041595034 GT 1 -42184829113063.0270363421756753043860840987035591 0.2123733096742785017571315741525905 0.0363574563283125110851581311391076 1.0370348584567098492732776213883831 GT 1 -26675862494872326213.0028320029296686516030785215554334 0.2595792067449085178137253808159844 0.0968957273555565382849952238153306 1.1019172586498260390059862056110618 GT 1 -1876378863827267566738880240712039.4256705205318886633843774684679929 0.5462100591602350788450389520639386 0.0227721039611732522701187345111514 1.0230353930976700549607848573967826 GT 1 -3568510287581.6899780681212731420526630233055853 0.5230294507214277243514414922538645 0.0738496896661018035999219237953567 1.0767187353339403506406707749655176 GT 1 -589449790943.2707474526748102974095143125374207 0.2716951220867990418435987229026756 0.0279096207171312480990001259386537 1.0283064960430253936341754210868030 GT 1 -178327991655267606809281269409861.5675870562281644554250419880577519 0.1410235082040476795073717613703709 0.0384040767227586449000943510162162 1.0391609547305203998410799035627870 GT 1 -183025114121320.7974313439645391593650020533412199 0.1943405395758221541583384782235496 0.0137826042823952072008624746028338 1.0138784662099739526572754072837855 GT 1 -261858399.3867407854525374099223729964084166 0.4633064118783374073057454274327323 0.0661161609455213177216920318332474 1.0684032178084863275680827442313949 GT 1 -73658717863.5424803374928347607735248533628178 0.8734078263902990323013788390561768 0.0645198291925082493162226583262820 1.0666953298502103261137626009981891 GT 1 -2773693042916189804871395897.5160486542873022928969415954239057 2.3264316170071317674520168203565994 0.0835315621788217725403028331408884 1.0872276500245804391582953841712021 GT 1 -907084051008246.9648511118870352957719234658889991 0.3212892820604743569168160600589661 0.0019789278670440366114596926035021 1.0019808885318987522226945396628457 GT 1 -213864076776183113741086223896648161058.6912923027157041961761045819175974 2.7935601740685761958088392396690610 0.0650061637499924695010741525542808 1.0694742930586381081003171903067525 LT 2 -3783370130995300.8499221329947748963897453064387646 0.2127577826146175435333304443277506 0.0094645356727449455134919409689657 1.0095096090147787885383807633823300 GT 1 -15598354974605.7374257778481329147006985055242065 0.1274948959699041491883290380158144 0.0903487934662873855460418227400513 1.0946940424688386245913544384648137 GT 1 -554217.3516166219581964707392648369814935 1.2158266719943914704766133674467936 0.0821581445024122743339673119368344 1.0857301739017434885694240336023726 GT 1 -30815.7908243855731551716484414037696974 0.3358839143060802993535049226960187 0.0606216850886634472329722316469672 1.0625369896333942882651477326899705 GT 1 -415524708552.3495099803011738257020691117670601 0.7707844953790320906076422229400488 0.0130585800425716208658505266498702 1.0131445929235799196426326896188868 GT 1 -573.7946025860300357793262116429423407 1.2231863235973194234287252074687141 0.0655503596278036213956391447609574 1.0677975429209518341714296707716581 GT 1 -245214774020466020904063527170.3709563670514937096066333441036240 3.3487083531914424466594874070929478 0.0856912422618667129040751622075157 1.0895869552312136776534658522439529 LT 1 -1382573446861922428146557.0589020946206223140836199017114369 2.5140559387076791687158169153343659 0.0494879457930553134272896341440232 1.0507544351698974688262008137411213 GT 1 -6032969091.4778009128936541153179038340097128 0.7296275145366058122877564878777497 0.0825412191252162959135318168537079 1.0861476255396661677397565358054301 GT 1 -39792760256197520337284625128.2881093187657795410202851902503551 0.3771108260220088674724258087720516 0.0947983936792690015248873058274448 1.0995975906764602728766586059539405 GT 1 -1001957207777.6884760179641264525823183252255225 0.9895471409792300521080649069419665 0.0796275798827062572005215423721870 1.0829768863749587833569463884841132 GT 1 -3335696115835703.3895997507288606090396035790030972 0.1176549806376237184549508051839155 0.0451370975319030517117241542852329 1.0461875064318183194171909689067711 GT 1 -203620338601201523587288843.5147140584285282751167453083095216 3.8034857294450110232145490911785502 0.0749821669910365987029230483974693 1.0779422627269389316806020573877516 LT 1 -1451248314528.7150478718422643595522743583064926 0.4821178546468641204398996042884328 0.0487948769206015861275843419631812 1.0500255477081698587476214444687118 GT 1 -7873905021.6481949804030795056583279076080925 2.3981492121177819810052172532806412 0.0887726130589685524449701203990386 1.0972838535466687472845855150372506 GT 2 -221327179896424935279798646128.9159909091053395096975251258341052 0.4080963738690273991352618531441182 0.0304127470719432132944035083745452 1.0308848104861207935270070940912342 GT 1 -1415668202499868979913.8473808175663393449342771652108081 0.6013197148417856400435123349163729 0.0756338022954210380444850441685665 1.0786469679915349258611566253789809 GT 1 -156267359006099492435891348177377543280.4808257970913191509648963271577782 0.1479742539889316860983797089168741 0.0057454126554485433071963050043979 1.0057619810306520827601557286541364 GT 1 -51445443716962931087644110580588794691330.1435873304310384677816733543202481 1.6108549596903885854604810555961301 0.0450694057159890694066473725326818 1.0461166172848425338848183624725330 GT 1 -2846191221909.7712860620347994588231360126008787 0.4785530701716076806348998992369462 0.0991106341496397173501035681594713 1.1043728193123135593934427737440906 GT 1 -7960728998.4691902680297727092945807821799594 0.6051595593490220290521910563549861 0.0153821610685657139303221834771132 1.0155016938743339909466267221697477 GT 1 -236568204238239233342740772233.4300588814799921493390977658550968 0.1329145556809876520449700212194402 0.0930547449495403192873932755069249 1.0976731889571459674506700005609412 GT 1 -65777299746925206681287118013.4976835879079521211457907770154641 0.6767240579917885232376346750439639 0.0219478838388231851345977464963298 1.0221923218587410889470003061085022 GT 1 -3674571110923757553544423436.9940071813969718350763558971183795 2.1384150370292881334743169597111299 0.0493510444887719689031710054641163 1.0506104165372617559870334650961377 GT 1 -46590900.9677703756426134650432926064448208 1.0909792937500425278110304748208080 0.0986750334557686802468732483968117 1.1038894132106931073451461876610014 GT 1 -1250375000748103291581154.5377581929284634499056716655414670 0.4137613030149517463173729163800012 0.0188025216931375191651434066581209 1.0189815366104178901005053924359825 GT 1 -11194743275978954796653.0239400301540332070663676144529399 1.4224418056943267283641113018377126 0.0366806206047531376566313897460752 1.0373702717055155149185262606305700 GT 1 -112336.1919986127357538262392248961323311 0.7478835780470969099935621684772455 0.0761456126892206554795503121187653 1.0792008092494798988608947898897184 GT 1 -481652384418774341966996230438514.0495329982140548989472251231162173 1.3462096430286469153191887508887004 0.0751462398001240416968460414122446 1.0781196510495879349717030874317359 GT 1 -1190661311618374811886549405.6846490292803068104877875572014046 1.6489429897925647897802854941124440 0.0185829412416946296923455140202909 1.0187577734126914103554217518922382 GT 1 -1851554399271663962714.4525790861487813976240688968062466 0.5905029088886685999147788307603103 0.0181161677305198133698429134505591 1.0182822747032447765005257603472629 GT 1 -2421921279958178358793770689.6038451125148519675634149041319911 0.1597791619558414103881756053958459 0.0651730948399264904903212764419767 1.0673938950028295101693882750294341 GT 1 -607783771879137732.9305467273491389511901229467888883 0.3048112735387556259300649037790153 0.0889877613036182241884070796430312 1.0931989474585420428560287653758150 GT 1 -219067202008754941313608027704140797.2161097662831926907599601807583511 0.0483396459916057283914194125666171 0.0140840912823071336111803027182643 1.0141842132926711543106937319334719 GT 1 -935541098100656813997427415740308835.1910475209030818139330691314587918 0.5683279591003898248051250647578868 0.0919171673953046327577846538376172 1.0964196792060540541981659068490009 GT 1 -21711094586011247221181141434678912739.7355642723863819495185088621934161 0.1187022666524276923688398589984536 0.0305065981698735428911011235147287 1.0309816100676888091041518604420444 GT 1 -2049605612724525957749.4692534684463620608704183074279815 0.5290375433797026593712026205715546 0.0482539462828286224094824965742717 1.0494570300720493286644549846300109 GT 1 -176116239955565247903131.8475530491783632425125991649860388 0.7580027561401406210350025487974913 0.0414146723838336532430229382630571 1.0422966984282345115453304056526751 GT 1 -8120885265475294216.9775632037554283581138908028597631 0.8129097528415261409883133057366120 0.0902289837212371199234100791529819 1.0945623415983960957753607764600014 GT 1 -1338232006305600302182.4483851631896173041750268315802703 0.3754429148137467526851878083951658 0.0760988076219934545531866149369705 1.0791501477142079068715970315778552 GT 1 -1997615105680580488233.9493523932714142357134121422115603 0.8503830449035976811592499656726541 0.0593234494609000487091811363043442 1.0611559279867710454327309681962328 GT 1 -33550525919565.0149008131233727642663502248431023 0.0188067473348475086583798483711062 0.0442254661022517018563552445909495 1.0452332369493096340889526425801512 GT 1 -5858315609490377220564.2999113522591031510417407363083924 0.2447354162795720706571476464545965 0.0068177554769064171109933705511951 1.0068411025487054529719943064258934 GT 1 -128449819692072943945143746427.4871983125212200023817662109156745 0.2440964007419874180054580492415290 0.0580274306091836128868199404680855 1.0597791243724138700619783338030219 GT 1 -73904169066117326.4765641886093149942228107775327999 1.2504094329613189193709081000154171 0.0983581675069917902386863678147173 1.1035379192705845727256007431723523 GT 1 -21833494846365714690726043192310039500331.2589818729933369751550192513460427 1.0987778339757550837787880611223701 0.0119282959558702394848814144032193 1.0120000089242518575818695959793365 GT 1 -1657641.6041230537093231177368574018916518 0.3830572256336090182024210343362256 0.0415055583372929770148911817654464 1.0423915155088629323136576790999752 GT 1 -103175423568869641.9525412946975446821980197918085145 0.2122421873714981603723237501284333 0.0142914589751795738216189336147568 1.0143945654149164994814792864744521 GT 1 -125258745095.4403676668085469118081290613344248 1.8496847717849540196540645747628212 0.0042731733772959963479060089944103 1.0042823294756924025420253504592438 GT 1 -27.5056090962802395338202655369280805 2.5851087696199889012212023472223986 0.0980676184934652427101291417342438 1.1032157267998952978007790575576797 LT 1 -608473175495476542439828354.5839150243991406898744753443666737 0.4721079133574269594227371204550515 0.0044659488498053523853623078141336 1.0044759509898429890951405784584342 GT 1 -4502407.2679349456387982088739064562669075 0.2735609286275653005639891797331382 0.0503061462228724448152041448855609 1.0516156055061700512206982494498371 GT 1 -22477768.8748073292206194724749263373175279 0.0094082988606164343273237153240684 0.0114480246755686355836129249566689 1.0115140577593783212946460497618442 GT 1 -132167557690354406685400574196476318102397.9286317517655588606246637599774288 1.1352188033731189504562002921432806 0.0931069723039557752273871498519944 1.0977307766207504727022091539186110 GT 1 -109192.6082789751398757008526407733908765 0.0198186082470403428064764002779139 0.0846968434837758180431789193875520 1.0884999499835356080244461702112642 GT 1 -1370625986471.4725447423864795990504417103837981 0.0781286305398399155016157911475129 0.0247963845582027205970966891040567 1.0251089934370037296236820312273471 GT 1 -6406789647867641393515753917243.5293751341396205799558267213387204 0.1240706331060639527296552001021210 0.0854297525413321842850621718999154 1.0893009989469834405501405781282034 GT 1 -3319763431951002817929445003.7329944318374565138768268712072784 0.8349813660932007781734739653734427 0.0973782914352398587751732199765723 1.1024517407320388183135173930862848 GT 1 -649.6358546493203311260129778828013403 0.8395444508221385177060804126449932 0.0344541025931089721718809853236644 1.0350616407945593408672645638229732 GT 1 -4228725658845936152364.2011260693728792722146665260823923 0.4180954266612660216140493006945823 0.0610762144349445597886830878912715 1.0630209686003965382029551856473846 GT 1 -2322930486785505741423218077031583542132.7639454864077258636500281452786125 5.2846111405168709175624716794684741 0.0883710598170200870646482775683258 1.0925222355338047577414987869343734 LT 1 -367642280192223.1703834237049877424374884078562813 1.0857387693978906835993792824614112 0.0453815995845723489320546132080264 1.0464435990718838139780958231296524 GT 1 -11959712067487207339008000655824693767958.6962877993937698548904356417561217 0.9696933591704628976404079440420644 0.0209475590313715139343663685664338 1.0211700720347154632935169378747836 GT 1 -278856782200428956546189655931259122556858.6213784744778701714882661296644045 0.9583680645157515255938855909971349 0.0931060006745678314461402918400524 1.0977297052387486514161895786599138 GT 1 -29797235386165269968966064400998.0699438760070718081575886577680252 0.8268027484304440540252711242008815 0.0441149015789089137155539641171744 1.0451175630902221174438717687296840 GT 1 -3320538408838804136423905703594967289731.4389932093587285011387735641448608 3.3221054213042821365205285488989941 0.0752969967392391300150450265981915 1.0782826705820805534158650038241698 LT 1 -841105639446460083698509655478979.2661236871430332956022383149527704 0.1982124458119455787910823820078223 0.0752273436818835817812840022320576 1.0782073486312046614790919892164229 GT 1 -25290831802052085447491076644994442600138871.4302469666313439375919782622996520 0.9724306197443092642198615618472799 0.0032248054706352805038460210080267 1.0032300163615524344721852995178403 GT 1 -40645239173054174310865.0848377962507809186407329069667480 0.2187438522282216128790624525664534 0.0446733029758173041057383090717365 1.0457019058764358688495753117241446 GT 1 -30265526036732326.7737353554290010392013840760045544 1.7389000431560777558951849639242611 0.0949936166819414775026639995540221 1.0998132819169660553754489196117646 GT 1 -27758542.2391315538556098997428690496954697 2.2584115944953616862844452703575438 0.0931035826194360347551295572797791 1.0977270389382659423658374045806576 GT 1 -16012871675571.6770746115858733878405863823856128 2.3431332029467282917404373318402840 0.0095670133122073718195581169789073 1.0096130711769362226203243993351206 GT 1 -2.1977376364349424742313844222721342 1.8928166511396285237177948360817818 0.0063287174117429196142759946069830 1.0063488286408745483711196713498909 GT 1 -47414335333579172169958583206642262325227.7460628909394045843460006678371468 1.3348836804858694587922524833394124 0.0396867029683138888551703333234271 1.0404956966865108926498378953430831 GT 1 -82009028437142167617.6118318164001514932140993298961413 0.3353195743872745604392363202399058 0.0472449502166947257210504910570244 1.0483974390235777482998996331154156 GT 1 -10483223209174325846080277.2797406594834997375402296499800069 0.5490098116579950221977553912114370 0.0240354244150753680013137849909899 1.0243289887349917799014723561005261 GT 1 -36227154203725691695111334353551.4591992856275321920532715143234396 0.3330754312114338903913555995978832 0.0061269309673773110157927051152772 1.0061457776298172628043707278820055 GT 1 -78.7231360816736892821065109260582962 0.2555947110892676404564387525704818 0.0241724693766587347192170672001035 1.0244694186110760929267927302451068 GT 1 -74886118.1843475485941959877333772170001505 0.0184517389166995581102171040233017 0.0693680578974507255783295882406084 1.0718914159584702526370733036043362 GT 1 -9563328137.4155276541839073220514277841393416 0.2010424501465415874184739720539500 0.0257932316895590400663184165479676 1.0261317100764064721975265041767921 GT 1 -31649.1291208620763147944661024744588206 2.0227130832295137144590264333591257 0.0016815141323389235017892485671821 1.0016829294640502581188875391363106 GT 1 -10979558.7477326401597178862074206940608458 0.1393516541097045126171378436576177 0.0307468264713919849133177004207838 1.0312294282258753031377792267729929 GT 1 -1831173354815811677510444747405.9803632038385164002810920930770808 0.3797550166423756280244517371540956 0.0027227622349563629375449502769805 1.0027264756941597091984587134793317 GT 1 -65942105193048.0840035699464719243359220659814820 0.8956081991871427911845061232659121 0.0254045696767566386031852558567984 1.0257328373552776812857539564277414 GT 1 -1107592637063.1164942074890693102565245647129458 0.2317822233011676532495000069040229 0.0134893108934032807785760527245421 1.0135811181938848068186663913100447 GT 1 -9123476711196429095432693172.9056327723522263513167605834248700 0.7621502374450871233538450368601714 0.0234670844896742826360451996328389 1.0237468215936306684758553808606623 GT 1 -24060831.7962967373875161406658635650502031 0.0423550790869666088451864781438716 0.0392600408164975599929252886458845 1.0400515006107890504233134476720597 GT 1 -1060422599.7145678491316549858607554867762698 0.6696013654436283178285927295448378 0.0048958742133126187830309757357704 1.0049078982670256124569617185725488 GT 1 -83564467418814702395902761140246501035650.7732502806147397225300269700416376 1.2405428795258432172376724863515270 0.0990629994345239602211768870478348 1.1043199454993705189507536131562019 GT 1 -32474917198125967099484596061098281.2579381246140035715670764487366579 0.3286217851588799377362973236028182 0.0902232995820473984257441526924987 1.0945560937389554439888468037294228 GT 1 -208526830960866899661432030655.0234220589726624691263662679938231 0.8503040124982691478501694499657170 0.0182370264029428870229214398299418 1.0184053708447857200806507267946374 GT 1 -11113104665859888816064509293953352.9725492211154998578021923200296227 3.6603011900444396991207376558308753 0.0983986130852163079879162476236699 1.1035827779760503645133845040449686 LT 1 -1030244950511511335712512436441.7802965983616491149839835659994854 0.2477583547607570024229903688959224 0.0100737907528138055355334492712809 1.0101248747454089612045983252070298 GT 1 -623049949313926885.2634951706680440350373316126007098 3.6855491513277602273185840675475796 0.0710075543278952100805133882608799 1.0736546718783201210212382262637452 LT 1 -200882796127920211.1240539697171613069123193126525212 0.1993791754856691835447707502970272 0.0759727579941038675081874594098708 1.0790137250846950862326068841148706 GT 1 -27611608196586548474211.2217967189846906752763795234118381 0.1387737943355585661236171603389537 0.0678571494532592816433952497814453 1.0702692029228497052438104311310900 GT 1 -2965.6196246906997187940726613542515135 0.0889230971624451424323321728994455 0.0275493731619389073186613573710514 1.0279359740965302578653590372856248 GT 1 -4301291281992.4334755878943406526813164302537274 0.8549042753251787116078638962108810 0.0501516961876770694387608925148524 1.0514529873353454142316865134597661 GT 1 -2009686.1333248845047194022668918382980412 0.5457233369945105516619679824240555 0.0856765119951012710908438266070332 1.0895708445377704751996381504798175 GT 1 -9379861229.1737893410803236969908329299801654 1.5149493396945429683082515020897426 0.0428620101615629238697815922292027 1.0438077079147467739398574839414992 GT 1 -426.7666959990441052985989669915166498 0.6803047077579824251549112540935647 0.0026008608285977290673413910831439 1.0026042489430737822260191423002145 GT 1 -2184675.6825796021293146863687675479657382 0.0263909916250330238393711302498913 0.0080277127840119962933878598512819 1.0080601083616948763480340922428127 GT 1 -6736518.1483484021426095435897219699259782 0.8149945034590976467577236536661130 0.0508073258125850358278514255436217 1.0521434723312481643882456143138521 GT 1 -2654371240860412381199266124520.0959004722816368219048484405253511 1.5534606698177647062858938887783951 0.0084453303698729081370935614131023 1.0084811942366211271085961410562538 GT 1 -70193.3244660376869179764738747168215438 5.2987737891091946777268432878359365 0.0818467454654755306635294484123875 1.0853909583578444839488230258020531 LT 1 -130752295603.2459301162434075145760708482295131 0.4660263173165655775421447466588194 0.0485358039505334917488081114989207 1.0497532219087631488502386559631947 GT 1 -342148445598.0939891330509468369096458402234290 2.4994471558395557242902298415957801 0.0840344152023419600573848945983708 1.0916288419598244780471933905673739 LT 2 -85594994609234015.3571715920395513816873941430549575 0.0728108528140469722844129342248991 0.0596926621975009848263466298429726 1.0615485020472200250880332123950658 GT 1 -107247174.0065178207024403034589559855114920 1.0273347239197328171249176541357550 0.0122609137419709298299624589925455 1.0123366988450432665850003360180949 GT 1 -731241241547736435895559967627.3038525590297155542760197318718852 0.9741899397304534373123552370304887 0.0945488876861846071378395413247351 1.0993219928303401132939472665261014 GT 1 -34970022149963417491793813052882277.3949504310767465846689896435555594 2.6825119123114491889360881077190139 0.0916427575589251166238775456137304 1.0961175389458418965711078007178088 LT 1 -6385227724.5982082054014569360297652358457635 0.4857289955368990761956385635258495 0.0820654696497464881107251315080334 1.0856292086061236604825221559440285 GT 1 -857314775673220121702047496.5227730154856348940293219568541793 2.7049908794057751496653190505331484 0.0713886393723843619569654055934989 1.0768077791661364909392804891652078 LT 2 -46241620302.1463431347538233428298290635829695 0.1201513106146097438379315569170115 0.0703244164069042876697033724916491 1.0729195885379971247420515584457477 GT 1 -3895000.8793272927260240453645114124805886 0.2279969005385158392022819520306293 0.0566765938014182819514934974639241 1.0583461005327364803579486728514543 GT 1 -31400.7065869059001521216276533721694666 1.8506452126995147248327857376225340 0.0531366864524118625350879440990787 1.0546005324885274996113227042330441 GT 1 -1860934611992224.5499087257592683199721303748050535 0.1027600806385772513593010446846573 0.0061555903400125149232542089109635 1.0061746140947016387400978084741497 GT 1 -6972725543489269189104467488.0573732505406109812318704076423670 1.1815785895033012887931563876636332 0.0935218470620034630959952846909124 1.0981883495321510585450285681779315 GT 1 -997832302256.5436002474254626311134953061063252 0.5096721804831146512015954725927836 0.0704965074843445973984405265387128 1.0731047144144048792845475395744439 GT 1 -301.6189997175311275577952797380967855 1.7963047431234871921337566748544894 0.0878152224691304299216665397544793 1.0919127024880772462764086758030287 GT 1 -1209104767382448663601048890414753.2038353326260478740612675634096283 1.7865847575956656704443938563344227 0.0930150352183198687693732937050794 1.0976294058713440574641881438031750 GT 1 -180115422019835990116109566.0449078109149823304099279422756417 3.0396603609103620552481520524239328 0.0483806670052778582930145162246015 1.0508197776530644782340381011126765 LT 2 -156750.2269486330222978452317282799063667 3.0599579509890228621674173296738764 0.0360779985945080716408114702411898 1.0367448990501871123851904985643305 GT 1 -12532.6976661214352898146570769713978362 0.0589483215774061635702610282385857 0.0146483405833648596167258108358056 1.0147566868884313496393485403060494 GT 1 -220497658538374532170199621911.9341517172792924396860707463044153 2.7151704926063376688215979969004028 0.0526287715203614340833462371573729 1.0540642578794925728046189767081489 GT 1 -84049159984374.1800421448052372057819401540404504 1.3204806104760470439263692667589866 0.0281067719992291829660684583461354 1.0285093282912348659920868471729283 GT 1 -60352.0424504612400001197427520811256169 1.4428069254323621766925981883114630 0.0192804782552823881559780830695453 1.0194687708528325956179860622313537 GT 1 -624383708186115642616912.8991535803208340172215270743078892 0.2729293893128973293570600662445656 0.0838440772996612225300297105425436 1.0875687075054270158446217241353886 GT 1 -44113890759107085.4234112079991394527206783522593293 0.7859614022526221315776752637767626 0.0317167284760552977210544330281687 1.0322305986432415483187253739530956 GT 1 -597969802818676586716416055811808345.5582779904394138773857114310084321 0.3821071453100552170027938032725871 0.0865345677115358294761185063779256 1.0905097448341248217399396927149456 GT 1 -52413599936084628124414833706475803405543.1366209019654717551069725395573773 1.7286472949260273811964711754620939 0.0161853570401111221236031810015604 1.0163177706496469041255325821716867 GT 1 -138784898.3628228384063653209246482405305290 0.9711818212720975129408180236105688 0.0082728987558648357982806814949030 1.0083073090963704480286442271186025 GT 1 -476629134554229988394787124437344744942064.0212654216196409125980555053049166 0.8542818467426794969528554842813819 0.0463073605984153031747206341135947 1.0474138403660443508903909364232873 GT 1 -1411455099345493002754566789159615510315765.6934734230889699091471457077741004 3.1898739139366751290110838535837043 0.0071643455501627907261689418827294 1.0071901327129896106718677444552093 GT 1 -28964952905505755419751100288087483824.8043775689742181145810673423736687 2.5559571880306156661188665826855955 0.0167350660120281436309665803665347 1.0168766793919965646224191617641782 GT 1 -721340211.7883082844098828898127155268255226 0.9872962765832382495472142173420800 0.0415803056428386025525396463532621 1.0424695026280342786150651733347922 GT 1 -506413188798278426533957.2669960958899717027544129439994147 3.1403423507967986730285725578400265 0.0155935795452380402126482169525392 1.0157164382854066083940894315968874 GT 1 -11.2408182967718684352150509397246398 2.1251481623216311067612798570568574 0.0386079601999782306433238359736977 1.0393730033568230657768657871519495 GT 1 -505450876.1307457956367177602958644894725425 2.5625978676542793826881502589226032 0.0658899776477422129743767587224244 1.0681610507397849918384561899042290 GT 1 -991941558665555393106413456566851546.6966319121419242364143465738441029 0.5759612009373501392151189346708314 0.0243066492950975410915054480886532 1.0246069317885512164763329059249123 GT 1 -4878303908648284351993405132968532230.6056265390983145150189706082639779 0.0460166532419590471892047888092282 0.0414377422332187883493131812898430 1.0423207652758388815198453074220626 GT 1 -31879681225666842848710883.0936470312513356813143308908956028 1.1929377360864454881561403388756849 0.0493050977820246240817414419188620 1.0505620857668232480729909629352646 GT 1 -299994799475067747595615608446604.2566223151077161908359629309706029 1.9945045332683675721352406690122930 0.0711116798435003330089297934088252 1.0737667625115074511397480070026609 GT 1 -86117039441491215.4590916182760459405457300667128856 0.0294398354271988759367897049261227 0.0833110869100143759980743065000297 1.0869871084586740832135837132007844 GT 1 -1420136105228689146663392461514818975094.4764397396521836682466346937441675 0.8980280736676882007949150384353174 0.0958307055075841885815416050129880 1.1007386634546962207487368906261750 GT 1 -2803892076164311408304454.7904469597167116305515563051324511 1.4743789699541533921039532226191597 0.0995786431659768543810303534972277 1.1048924509571755400995026249934505 GT 1 -2.9173496063145131398942608926478640 0.1237816794752494219140973339603180 0.0612556578442661509040464679431254 1.0632121029198416887869780745794215 GT 1 -16210405538586745531612882999157.1230496186880833431545244145981695 0.8629650290150664714371113989937745 0.0262476388571820704058247364907202 1.0265982570064675642071381503739725 GT 1 -3072921545470275291389633434283290893.3140653970009330055324489908590235 0.8024216965943199695745728935520335 0.0705720785367892074729284768803316 1.0731860203215706402453512370899288 GT 1 -4895.7558127497427935800665319540154802 0.2375163663203604273338596460855284 0.0391518779071604886432984545546106 1.0399389240284244661501700517468322 GT 1 -332603095288607.3394971977062649399759141769437280 0.8425622112110493787378613220008601 0.0188031679746382673128620900476599 1.0189821952767188933465218075513793 GT 1 -305532589138805707.4069578059735137310173670714365452 0.4794148308338971087185419654096187 0.0887184001642114262006342164107847 1.0929033188001193943604011100832989 GT 1 -93944239090403385129004137679158517788.7498134878368965726485427533970589 0.3209006244972919865215251548403601 0.0920479377982172103850557199526115 1.0965636967065025123516155610417985 GT 1 -222969920054991472264705835239279408653.3002961565459214024361976100538867 0.7229462701139260847948900235771862 0.0093959661834249918773808048292141 1.0094403867420296173799401395580524 GT 1 -3683624974481383082224109984273369867419148.7003262916891109703821770032231994 2.1548855700754796310361039139762804 0.0298856131377010615525295037480328 1.0303412898369594610776614834576643 GT 1 -12158773608910417581850.0633561201268617469041594149993391 0.8767877494501647481511825194695586 0.0669050931651888034482053571448961 1.0692483610843415945787219748619568 GT 1 -1169127.2596333712708675909433559726433676 2.7578416663434690198375103084363356 0.0192137014406872355914776194583762 1.0194006835558898827965924191134210 GT 1 -3749573613.9373961976031981517048965470472491 0.8942430924348101434960848102841511 0.0634492336902746352379341570404123 1.0655515500143942772268892476300535 GT 1 -567307680679433324384836739.0023679955826629888885154859752865 0.2733996213606258565365514948213122 0.0339502870546405860922120141928570 1.0345399834174216536068573432666882 GT 1 -19814423548532142025199511085.7900103968131235930247869673301323 2.1592036302501468143772331440196105 0.0552538456879844330761036975442178 1.0568390073487933316932943633792533 GT 1 -3415288998.4002577357381112827732916796521004 0.0793472057047365583160423564039852 0.0382485826449020575501773902175832 1.0389992636257361381824977409701080 GT 1 -7089319013682916077372942356000.5311479742901433228363127655711566 0.5002041477954810260288507978108389 0.0111481243456883707437571431769176 1.0112107304122294342659036051356992 GT 1 -1294466762919684324687479570.9373018606533758323999023033813262 0.5979531327258445614737379003067931 0.0522941983847903375524136535654585 1.0537111607401847327598531621434062 GT 1 -7466186504482307891.1898254011842268517263341418753007 0.4639969221723093356784439063586098 0.0285577490677126327776233623326960 1.0289734551303399720744374317440274 GT 1 -901011775877895201975.2517751552622916598195535360642675 0.3324669651646286929593397042011875 0.0273960400545068177431414879904371 1.0277783095160176045694993729610360 GT 1 -67691.9596345164825498062434189857924301 2.4849421005937774683583394169437486 0.0674123623524348475917902353502049 1.0697921504886499613046356075019850 GT 1 -401603659095332952547648334234.0025315688140956983020139704697418 0.3844549814562754970486795536252284 0.0742017522993712394084504906508885 1.0770989431274918101964352735028610 GT 1 -8518770926173196961110136653910829.9096449176521009360985039057612960 0.7860835174556414031625153250096155 0.0862028999991275662672163994439806 1.0901467234180012020296430161375619 GT 1 -17910167611811126098002650129073.1623416617516893100198268069030572 1.3893085508490811222916776424634246 0.0325449397702154076103811322551472 1.0330863045319054476937733547485905 GT 1 -1038226988403118324846.5246224176232440171064809478565259 2.1608599832472858734185820248843164 0.0139556020083221963600712751620163 1.0140538970041235558279407166479427 GT 1 -32945773638153.8165551329437014392998818954161996 0.6493888461499473774544974759437437 0.0104687958678037881419942172403137 1.0105239791843964079593186208537999 GT 1 -1682725501465940704524.7286822766183766346131710854968514 0.5641671688501593941533733094410847 0.0740669718560716155349592779303860 1.0769533707701030024570396225705425 GT 1 -280018582.9921408146301379430694249046349171 0.2522545997116911795381032707628866 0.0025760204637252448870309045315761 1.0025793441135269293105890299701283 GT 1 -182602245494125.2166473493197572324550928242913075 0.9944208785657186461367119603511021 0.0682767494373247932211570138963751 1.0707194498487466659961780906364423 GT 1 -286814056399911074575301102820951798411.2331145035705994828897657539632237 0.8235224947666814784342700738212331 0.0918429858436418596459834017791041 1.0963379922506265399483843529702949 GT 1 -28756981639567.2178656064274912302312678666242222 0.9455277277471152071789293547751431 0.0362357043312357932734402090029454 1.0369085208358676165370098677528364 GT 1 -13240859481211772168996665103409260257.5033254502421321054499461962788890 0.6910146146273580771163586613967727 0.0441249188919132114233957671281338 1.0451280427655617894078098577688577 GT 1 -77064134355.7232076290830049544659746896193379 1.4040286396440987039824751486889759 0.0214950292818285972334393450014360 1.0217294122220960863282879537986583 GT 1 -20771826413881388703772230.5565482093040244211778292301070470 1.2445321523789489825298743785915586 0.0572891133637133510866495519541114 1.0589956322895627400801277155616643 GT 1 -4682375140248181284010512.5012877160192613080219185910242147 0.2110186712082567346960717541997439 0.0367662576218766139453819264142453 1.0374591735024211214234639501607070 GT 1 -306131151424444187000492342621456136396741.8728976982921608390913595338110677 0.2638158136062639792881617358249538 0.0748688134033567429147542487788782 1.0778197281779696273764393970787014 GT 1 -2734883571424359680440982778085393188.9715992555909059832300172766800319 0.4907915775141415704511543453983017 0.0570101818304679621948408443770162 1.0586997936821221559198714441766687 GT 1 -3229106166753113514679769250290981939266.7111972484847871656813244717645570 0.7398619007716647776020517867050605 0.0442956984237174656363937866463913 1.0453067217509134681046074768828282 GT 1 -817001420649538165056008148379068833.9268946919719150941567429023447119 2.6485374466923067866794519757636967 0.0856464656799844660240057536898686 1.0895379832782339944654767777394379 LT 1 -437.8173603049190251681526125398468237 0.2451861624625734930812994247607243 0.0630594269442826742545610264751314 1.0651354213209475261752709356451675 GT 1 -2536417058312091762383339443086731469803050.2349824838503837782328551278854002 1.2362824415445487974428638925107495 0.0219379245005873293441709698406373 1.0221821390807842589936866630935134 GT 1 -10005147003.5933114785868499416745300492838851 1.6081336570348092990772285249678896 0.0942114578286883919212456426399416 1.0989493973424218190485768065258761 GT 1 -11214104.7075490211150963761182932820513898 0.3642454233368149634327859028950728 0.0163897338959947606298742186126033 1.0165255314192470351395170895375088 GT 1 -87150749.5766602238431181964690989209980470 0.8087097333342244931946676437901725 0.0449992952787149889929807775131893 1.0460432005736319414261713318734532 GT 1 -170966106383412820463785.4896014422409805816000793730833748 0.0637713251983015026083646608814207 0.0126762079737838171069115603985295 1.0127572365833598559360391854912118 GT 1 -27933.9748256240715235012836251823640399 0.1047161279925918581359215739060944 0.0048575726933777118323721243494960 1.0048694090457981159967703744248015 GT 1 -1717.4322224713283092512133185246259996 2.3503714776665544480290414118693213 0.0396798678893946679726812577302958 1.0404885791607867859744677351445585 GT 1 -1250226.9360117262063358882289652394219585 0.1257659052865590748365781941743196 0.0838534412038692292183021499813981 1.0875789284206990844196486448943409 GT 1 -12522139461988621370655438380628341361140769.8056713872077636655252836549404054 0.2951574765006088710202041292746961 0.0979494166825336255788854864058172 1.1030846814259581834796080065490923 GT 1 -55299966722386.8381927240856459988865935084794062 0.5447809630211176311622016000421135 0.0285337593086282297556791086331583 1.0289487604427733185578404777899843 GT 1 -33567050.5915550518591602387512549573836029 0.0301490143037027908175034626907762 0.0885025400659062718836642170407982 1.0926664715550764424173703105657253 GT 1 -15845.2978776124503351203399648033192441 1.1909322217840515860706170343298294 0.0271870314045243305222315950563197 1.0275634366548634589291536865015153 GT 1 -189442538661187835.3493256326471419521085904574221823 2.3707608572130214779862477964911813 0.0981588031908357383832125324926638 1.1086540149736149359119610011357542 LT 2 -125363498773115462105663692232545807207.8326877565132044517985790447284668 2.4534636784589039267389947780449415 0.0476515009486756766340215818525198 1.0488242407461414086755160661168063 GT 1 -2407.3558342857444276756762379520386442 1.3618093108263460253504531099955308 0.0951085929560159503428915841044408 1.0999403346984451020514469994837646 GT 1 -344.9818035148757841563089151762447026 0.4168072322200359198547717533542841 0.0016473156344648036931919395481108 1.0016486739507866796827449431637939 GT 1 -210279876378222233855341165166239645644375.9323149131618091773064688148039656 0.6670651278297290834306213635346789 0.0122176267339877360449493459140433 1.0122928754709346901847292403119684 GT 1 -4225582340773445441745085646.0973996162330484946126483864807886 1.0070048786910151479575558377721380 0.0450222394580473389528141983005954 1.0460672261631877811671043567847961 GT 1 -29127826893159037630279067773060251239403.5444516960279896095233841346880943 0.4868295535715520327634048029748575 0.0351713296401721989761989593430006 1.0358047370744662219626689904107683 GT 1 -941031570563475062745553826418394.2675306627115692185863071519256745 1.0839467183644139651192851377937824 0.0658510840629153273805895364088682 1.0681194145575241785134049786723927 GT 1 -31281606666242707852685338588587409607.5921799445081794195323135149503290 0.4596430793127321346264441443940073 0.0154291263819574546508011725977521 1.0155493940394845828620633307969882 GT 1 -33499113845262101496.4235539648799471623984395731258420 3.0966443559137565534365198825109884 0.0933871124140841294706226825449319 1.0980397252820103537877605813495337 LT 1 -34210329954819766.4684127310062943984097304944433387 0.5265193148296878538158116021732083 0.0519707840758555533784102626538699 1.0533699587166105742905089185521947 GT 1 -269940951987348965655371774785819645057.1651332635644805435879070239721763 0.3354603237883901753335496042800090 0.0937316017060099389900680635568596 1.0984197714535443811407780379738049 GT 1 -203470210542014191024016523.5418310536642244821857112330811227 0.7119999435326226058618806727910608 0.0848851656429276311371738097029370 1.0887057195517493087862323336126042 GT 1 -404849118681793420527754764965.7638666628093633646906440209089697 1.5260699491134755403422036124384061 0.0922804605919859644178559466249431 1.0968198253972126143294323783365668 GT 1 -176002966188503129251377367979929906692.4009416564826928512725355171053839 0.0512158279494343244883913195008889 0.0498928239329134412189746149605952 1.0511804838381771469960081712892135 GT 1 -933213302990718736061260858.8893353336239928981493484394627779 0.1264264768657378800169450115968010 0.0524934373069084513323392787350261 1.0539214157243799340757655439514679 GT 1 -1221437375127425581.6598291174192041704425261486218485 2.3825030332817651482548809155402310 0.0867521003126141430976634149307370 1.0948655050004470940441179581479216 GT 2 -6962511769974665832139.4556646180135499552171124330963027 1.5486528050292846001151343687078958 0.0517986968311770583411948343733579 1.0531884541543559325729215734771278 GT 1 -11088059330295865976111519203343365.8668064496189757163564419501451143 1.1664778365716993521564864702401551 0.0993434500586419480073401278441602 1.1046312816787262175383015355434551 GT 1 -206617759949765849826604952044231844878227.4820653902554929017615814303719853 1.8145223540362518997517803150279752 0.0568928032970581232511058059944513 1.0585753265601917268394987384468709 GT 1 -341405846.0704092210286324974932662511304097 1.4140738459122713165792478426489787 0.0720760780344685131060348247661382 1.0748055301971239342875291991967704 GT 1 -18.2748956482413579561327855603481022 0.1010616448789129226815862575318163 0.0599347716085515344444692288443712 1.0618060142197981531772511363631875 GT 1 -1212828477228706787.8821341744411744802460120927003265 1.2113895936074430988147842522953418 0.0946121422338700674782910510302064 1.0993918549757393754629443893592829 GT 1 -3551713439479855242834355655.6173305799629890925701236403173463 0.6018575346769952000674329991179857 0.0196921342764022130469671450254140 1.0198886079543408236966323229623573 GT 1 -144974946718419260919988375.5743200506593262645957788351817692 0.2739832991049984009838989355902746 0.0205919239661799306200174807710031 1.0208068938485706841522286932834582 GT 1 -361742804099172197135.6288475775787287080912464206934761 2.6872193047088421369802960859285752 0.0525281509722696897096759708132822 1.0539580532556049975665347673758427 GT 1 -139.1526528330151676101789442175265810 0.1860478858636809436211977552147084 0.0950035518877002427252395505126586 1.0998242600277030575805407682335788 GT 1 -75977717015391295400265601487623977.5822820972176484427769096705792814 0.3001119446493633343658150003299340 0.0805591311702041875616973026001308 1.0839895449666772030475123100446471 GT 1 -11217013421356945736367963214694.1036601472836816131094734919043607 2.2160751195305333569126674744544951 0.0671576632260240614396789946905863 1.0695190776513031896381365497317678 GT 1 -28623558144337844829718036014983566.4359943941743834308705585684049194 0.2150424783929863586476858423693878 0.0603698579037482958731629416094092 1.0622689470011392450493813798682806 GT 1 -2232096028113366354.4511522446124609830074861358002015 1.8854473927204180956325788577324032 0.0993873145289664726784187433882029 1.1046799856364365183414585800891184 GT 1 -7639699169389046076313522147969942272508005.6132163471343531540046091932995511 1.1574850154658616799812096481509938 0.0477499158886807857657123522332881 1.0489275852943971132754003143079833 GT 1 -1177071055364161031992.4731744886123668975084705535460591 1.9506643731454341430014742984756309 0.0275222944287071714612407466823932 1.0279081286147381954105302739989706 GT 1 -1296106124997393146366001852.6565646250650845958770474546663378 1.7897593494355687072988234442800461 0.0558311965460773749354992909837204 1.0574503116043910675753051235806341 GT 1 -10722520125959936366.2581733164690625694225968194705967 0.1957076206459930301396906363016404 0.0543026543761093405632896072914555 1.0558326917491177331529479498995640 GT 1 -27942908071891993254959957908386.5945485975269506646489679264141289 1.2517936451510641275344907074903654 0.0297971001142290890357471341010128 1.0302500542188078375127482607027894 GT 1 -607988769037699515922451.6407974460719316020033803241629091 0.5221489758558048138695378048379452 0.0000869443860473818947714071593627 1.0000869481659296090867249022285062 GT 1 -934056.4499722033288671517867876333857921 1.1869694998342083781109327750350526 0.0261041495572857523058502286400283 1.0264509107872659826920624897022956 GT 1 -15814361160480058.2562986210347138696266086008385031 0.2039619024737671686178280663691630 0.0182859522824378133987860977065366 1.0184552068031126424282995297339885 GT 1 -46279436059594022387816046964.4579589381608689575116285134437738 1.8777855608070604528871197523761433 0.0728490254095317170479391573820322 1.0756388630412359440285982535153651 GT 1 -269512314318121210500819527772975.6408633679647734291046565086991271 0.0898453247107268734766571925774643 0.0637803168064267106314033858552399 1.0659051257766443758366361157358484 GT 1 -23008755255391397080145767115.1248975932255169922565491836884059 0.6328669609571313287477986117093479 0.0280756200308753686137119639320453 1.0284772759338236002530466317608750 GT 1 -172576261290799740186545269.5405280809510834729812286264454574 0.5731830662644198886447096682327715 0.0379610454696693847682755765376165 1.0387003358614891321144855869568181 GT 1 -2429691695877088651257970426743269108945.8451330401344842774071719791776887 0.1900457707697398802875868395124694 0.0646832544467967834317545090227444 1.0668700417639140881482294868008717 GT 1 -77323270093557405505.4360685670140198993184014648302727 0.1636068980428840061841678756769949 0.0092867253588180489841486480061161 1.0093301158386752530615512236975926 GT 1 -16274736362354104694724646047223873021.8442658814852361827021042975959151 0.2794367834839641954523042170732268 0.0639735041732582904991346998485016 1.0661114953979922449667038306221702 GT 1 -681598981834170032633092465226167597669.0127350900148852270824628640442257 0.5562179305273085878379594161732891 0.0042806190896403936021677490688830 1.0042898071693567023636565534659457 GT 1 -1282391989167900487905830689657329278235125.3074536941192482166857218461795003 0.1516434634707197916611072535567351 0.0987806776299450473755093193019165 1.1040066299414520053906908365024707 GT 1 -245980662960782644122976607675604.8107522630791774209220709393107984 3.2876275203079415020264533662360468 0.0342306830905244095241681469812186 1.0348302756585887416406658647103631 GT 1 -3359749799169932.0709978738762188928537237192185928 0.8520665085418227912104874702321711 0.0794627095089302690298618825874989 1.0827977680040069524969992621066760 GT 1 -40651754594625116994454824740471.2416519558316958775389515848059257 0.9332535179989366819091153741230981 0.0804771294596398139006283009570270 1.0839003624462575134246804737241368 GT 1 -2508499174.0950173144956502674224938540573178 0.8717149269324268598775487394202525 0.0797161035104959280896071268720043 1.0830730734002706169142727262328555 GT 1 -37610923043.5546814331508901634752702050962618 1.9530577297556729868907600962449695 0.0686331840717117948716855207300885 1.0711020772323029975045455162333390 GT 1 -45161812075323.7983609259408149297829156863202937 0.0808542731006630180092603311135567 0.0703676622854658830575022639993625 1.0729661067914545504981652700798595 GT 1 -61843394.6511396108219372029086948039306110 2.4756367338690609059504953539032746 0.0837786294794628302185928967547602 1.0913251589907577312760031241684485 GT 2 -1154203790882168751239940844568972264876399.8567503553654882848964780859728759 0.7181564006764600305991403579678849 0.0077388151044412142263249512044832 1.0077689151269544754522960381590510 GT 1 -965154960676662615723460513514432.5567456570171240022737721025033363 3.8233988540315749725693042880798939 0.0066228470512753102970223104583334 1.0066448754170077352342105717687642 GT 1 -3360716866885738441967267307938578195.1737592099938517462010443899857087 2.2356013511544351849376271122067402 0.0585513742199536246188498418633334 1.0603354987252448602384566979080937 GT 1 -806819443562879874734802509029.1160290408894224467198390797582599 1.3898194668256670615956926948269904 0.0760970290029059791176335423171562 1.0791482225977667497588590658530359 GT 1 -2865.4275962818537429008540183033478206 0.7880630983518972369076233521399961 0.0847893699648979315430284748695595 1.0886010434381500455551739534210645 GT 1 -516872104530188.1738775804366180885007151454896719 0.5677043582393470657924136523110477 0.0052851021100982809638732568420396 1.0052991176664972770495158896033285 GT 1 -16027984899435931810830612455230642477846.4328570362234199584195379953042902 0.1312193494901195989579797380749527 0.0996018086145040359235606520608414 1.1049181786305022353265179130217896 GT 1 -6415578768550140936688179195986855288.0493200364700651783637399541042272 0.6754019710281511279401506469156877 0.0177270260535903617107205487731090 1.0178860317141010417561387682370138 GT 1 -10011553295.5985999759420469359456675970922041 1.8311707638718602819092178047930776 0.0966717735396451941975096530472467 1.1016693071574013662125512803081147 GT 1 -59.4556077786757251884513792859235725 0.1355622746582251568317594808065733 0.0544197408367621488103926025977927 1.0559565090676393807413949891784005 GT 1 -1925934073994634.3376389441681829739568505460022060 1.8472302350851828428323850200078952 0.0116963013036468489601805909574020 1.0117652411235928817150555094339203 GT 1 -116832690682195521307.7715023776737827793764248657608961 0.3748276004658818485545021939328531 0.0118980112689560100440033708759680 1.0119693591012860726619834197672467 GT 1 -2645629745867360832523546917408128654062.4629481841203694945423035543831468 0.8197092664098279129242462422755034 0.0972589988016696611330331437225140 1.1023195870843549484631844986539288 GT 1 -68152765243299428616.6299772195578561908419548998302871 0.0614926964025109405305592389298351 0.0509162720527404526871867261806869 1.0522582567115971180265763231424772 GT 1 -8280455138984448451726968489.0665863583728057169794801028564267 2.4067469545277882139376770160094460 0.0896371867905231841505182772113741 1.0983218008920696677508383030666290 GT 2 -256632628943347092638920205898233127243.4806975216776913770274745695899416 0.0826169782914852667646302736330747 0.0142423257467722519705151729558888 1.0143447210624881067432792911935012 GT 1 -299657723175498239164532966265521082473.7743530521018658577176489536316094 0.5093091694666890951446967115389843 0.0869961797632985530357859938268755 1.0910152141279035000351512704503038 GT 1 -481274314460090132638526583279052686810.6124162819339038104358022577473394 2.2129395592787506099120439534107354 0.0642241766599160203235094209709375 1.0663793361689855034077146903639926 GT 1 -110198934166870565208.4895819126514797856596168836130395 0.6180963458579230625745713616385049 0.0161859270300958404180520363509384 1.0163183500170652627913308489284598 GT 1 -28083804719617932762812.4543821126444275764074156765631894 0.5481067099635875607942523080176311 0.0777177804227887551825138311633879 1.0809040072769265834767600333627798 GT 1 -176014340004574756501576956780.0758051965941964320208014130044047 1.5417938232572059372257467219557691 0.0247591885552829630732077325898916 1.0250708523831889920812312321649774 GT 1 -13586080057.1064214886097772275136670543240680 1.3065218770548330428406139189387493 0.0977331315687477065503597798902036 1.1028449396725186940589291603549227 GT 1 -670434969.2718535008400742342734701344048751 1.7339916294914082598633542781441964 0.0696042531129574760241566529838551 1.0721452490617307247461857193365863 GT 1 -4315990097087626314265549323601.0187212898906256628992640821265409 0.6899353874454941807232296431542732 0.0772258996623255599636596432166859 1.0803708194638424601153503231152173 GT 1 -762054630017934.4237177285905956906688125911152819 0.5947320875016614472465721833218921 0.0277540674262506057494156128674250 1.0281464894739314069360775687177502 GT 1 -432999772588108927414.3901562681012685943485702753992952 0.9068903709415056539786906057630013 0.0321369597607586294725210871472849 1.0326646890719958504438970039003559 GT 1 -14105237371840161845792619.7653006176470452137979438148692735 0.8563818617659378280976960273604674 0.0160337398055446228456015978954156 1.0161636709380138743946736954596333 GT 1 -747624061623447492.3383057510229467588351954465508457 2.3374126311688936459728331463281309 0.0620927175697257256571657852753013 1.0641041808846642298270123802717761 GT 1 -401305.6409120787882182737443139372210157 0.9725596319943482072212524433046469 0.0618350414410578513595743089276045 1.0638294834346850841202933134869320 GT 1 -4327720492800037058567.1907915586102193889903095300594257 0.2700634786405961247640536932514208 0.0857181454629669703300790976658685 1.0896163802987182352846585976822056 GT 1 -1798837130.1300418068524820704504069617114287 3.2464977121514911302319071269441818 0.0036559143189563487698222105484952 1.0036626135064646146555360108997236 GT 1 -45372475618343848000726824902.7854142353001856171440740628309084 0.4914542286555085419674400588799380 0.0277779366192286754227612355376079 1.0281710403464877345453628672957338 GT 1 -56998129470.4862066336271544454767499675831452 0.1659452260728469981097891859672877 0.0928394190167303993152172063503100 1.0974357982497857942553889907602627 GT 1 -3301424690337824229363549762536201634.2982189990214383995648443513961498 0.4793100049654979105414005527773254 0.0151433768635352826312676231115524 1.0152592086725205711322383558030566 GT 1 -7006170810310890.4060274965214632473068096440610124 2.0194948098287077043619361206939015 0.0804661319260801068167629530104339 1.0838884024742469437442134371252313 GT 1 -138333.2681502079738468445060406828273093 0.2022084982375940809775810359583795 0.0893795539074884945924747434766413 1.0936291029044594081872524029983320 GT 1 -8469965633031900014045393431710.3886208849711454302703570253372930 2.1210696234912813954686711190182756 0.0027787236190885497474875986523394 1.0027825914382928499386046421430317 GT 1 -4236477211318385365066965228.1648134271211106288339681074385556 0.9768409945330931058618109976280611 0.0102708109846574670496065379786018 1.0103239197233046657843684137349291 GT 1 -3466815676212761551114121510364861980100821.5210694084996754350732790837544595 0.2067233687240678462282272440406081 0.0408340028388633487327136117971776 1.0416911250619556985958169522989463 GT 1 -4.2350404731613879910635073158082939 4.7924755059997770405901820504253577 0.0147811297292527135698530239735669 1.0148914591729939466211908085237585 LT 1 -3998359539325838154476838561667792734574497.1501962559273323679461616674066538 0.5980508983754880369754473732179719 0.0081353320574044924958966500997024 1.0081686044487530615219633715301134 GT 1 -1272991553354872142932553451515820476628.3662891216287288875596131663224495 2.0112121951652186522089875861838691 0.0318115126871377321784342596855278 1.0323284923622959006713980060795666 GT 1 -46046853505726033.5912202360095737493479913781316059 0.6185073542769472161755072148067906 0.0817798839077772378951403394233753 1.0853181392255293400773705649011847 GT 1 -3519978540329065272280495751.6711497087239040567997028605817192 1.1886319343370506970687783998626409 0.0538685350856926348144938625015068 1.0553737503315663390756262947135648 GT 1 -8074337177402513022554800177407.7545274529231481049732649060377120 0.0038114701040560446062781571685064 0.0232837363534407358480891381826395 1.0235590850378152988080812998026590 GT 1 -102481595990951335114913784207036967799.2969450591475588812289083727130251 0.1076683508853807503523909117095975 0.0813495963474392704864627180551070 1.0848496385189382468653401914709678 GT 1 -50377991375036675230154068815209058.5827679219698217008278819461001392 0.4729869650044206867138376619595426 0.0467272441677080194357516940914977 1.0478542086885399857086754840656969 GT 1 -48.4837124746029981158026006255040898 0.3051243661468018036382939693718553 0.0944997760431199468586451502170918 1.0992677543291799043127350081028906 GT 1 -11330683328168071794602.1023827030464539668681598342613584 0.8433899858023707532670015106300477 0.0098413175286886238329006909683313 1.0098900633732646440382266089550677 GT 1 -11988179266989986576014059363511888977637.3517281650893594381822824288142732 0.2884822014330954100820607052990273 0.0975855635554229253331446710803268 1.1026814005332202710370547582829182 GT 1 -4172.8211841831569329393819070933986223 0.8125197975442450517995549569529799 0.0354644115388588272141555349194643 1.0361085489644201272762870170108718 GT 1 -6.3836994725708060075607342040842978 1.2739436797778592121142912235813417 0.0297144414379596502317579435494763 1.0301648605388768044698319782346402 GT 1 -323120300060635.0782579738741680971810987740402341 2.5840542538504138189264736443020254 0.0951734414075918211453366327580293 1.1000120016132185569290336557074953 LT 1 -11063800924423469814003748913.9191013986429445777547491629198683 3.1628994945247529793404137187015709 0.0928380589096829656204281838927610 1.0974342989495997617465081103742039 LT 1 -108.4546863931284933479177430503544964 1.3049764704228285625679024647114518 0.0761827866794835587229508362198092 1.0792410479913160756409125539671325 GT 1 -180933043912.3364858970460514703231679015671942 0.0857512112057101771743664348104633 0.0444826562735250089374177500899925 1.0455023639998000526010643857343831 GT 1 -63942015532547639545459897.1054021729124101073899273306472289 1.7202786388161940030681546332471412 0.0644275498331320385068768232624150 1.0665966908718977051035618458335662 GT 1 -4.0800136489607544127282931487754071 1.0618554579770853152826737668831484 0.0892333961336962139518763838007201 1.0934686122782530739119746219427599 GT 1 -1204443614080175170424672858381.9805571759741138050348367038876828 0.4893728380118951815941308627832223 0.0724108211478386361013622810210892 1.0751663394167991865525489984624244 GT 1 -1101282051.0512961870460012766563096349409760 1.2116499256953243499591728816331279 0.0570714238651082458237793360280572 1.0587647403254623606940540382864459 GT 1 -59205.5397789703877528805888704024605015 1.3528033750511048852982682530403776 0.0417321644480817761195507810495831 1.0426279622654986438646589828611652 GT 1 -3566722976854156377.1035989310238925171105912651362822 1.3119312933899746302049798956727683 0.0440605134336867415573855005560100 1.0450606665049768736300973152392135 GT 1 -20994566.2822899498736033747639340652640262 0.4291107613989098735856891978057149 0.0160735725973885710961522814954106 1.0162041536250022861840179248013630 GT 1 -12294500167696098091302096483566758088413.5263240534936420568034230382456115 1.8162718907696696200048595493131694 0.0965725563580822022735489296335269 1.1015594780495650985087949486810842 GT 1 -1038055404984407759.1280267972528821597458202284674469 0.4186174792427096248131391523084229 0.0610688425107352914093323672909519 1.0630131171694470146389604119484405 GT 1 -5045002403886555930797599792497331834081.4934860174772902916320075393911154 1.4940698206063126010000724521273641 0.0846571414409149371860647540712378 1.0884565750846855185927674375035670 GT 1 -484980970579613518698819186.8931319952466718268206367417531258 0.8358292594149190167841376631044997 0.0248446167669215930812094372227694 1.0251584532633859240076365618242229 GT 1 -1372041348564248.4943397428576071418802822699265477 0.7825034019627808164229145493380934 0.0270414545435421081927274572119769 1.0274138025789172085401264665608516 GT 1 -213860478.4393081942262063847621231015160351 1.9216913899159925572449371110037735 0.0183025570750034913371856788997663 1.0184721210288317143081473059245215 GT 1 -38646781634934.7566441530593433104499241945628093 0.2409142806854293714196761558814055 0.0902174506355265883596122072518952 1.0945496647682895757572089446875185 GT 1 -3626658506565087.8190093471697763461838340964372635 1.2380531340147643518564908996760524 0.0432654965417479314218276077761273 1.0442293518722998350423249106132055 GT 1 -73981844876729106.7499938334121421836299454802679358 0.3964270264863752168437653230140706 0.0229107220370052023048122841086646 1.0231772514182215386286948907122838 GT 1 -167111910040402264566.5658506813776857451404341212071837 0.7845730662179615732711438144456010 0.0360898708703324582195254708549492 1.0367572157614157409516216514727654 GT 1 -158256428368307691495585661.5479078283097006251331087622462466 0.9437292121262172772270069150747097 0.0096581477866770762921107139080944 1.0097050901916613595380992347908289 GT 1 -12329553915.9666617343553343367603117494638538 1.4263814432128304833333391328760149 0.0845077981295390702861339835124129 1.0882934327952079897745689588272208 GT 1 -14814004636155076.0982375400100640126090245313264790 1.3358210781083644820807711951748045 0.0845693968092355633064100949990763 1.0883607198261515735275042915155428 GT 1 -70466913452640.6186560314006130471214119521795620 3.4571312245281833094763941715739013 0.0830867902324772469640564909007284 1.0867424570418156181466804477111800 LT 1 -66593329402826401087142804784447260.2393140334501416207460485682447894 0.1218513450447984650019452101095767 0.0125995188333504700069015886700047 1.0126795658507791449980632995569101 GT 1 -32253.9290539262785076751934736042886942 3.1669573393769048070543832016604218 0.0887892465465888525016667921088692 1.0929810654993417535590207009380763 LT 1 -1419565786737178731831534540.7128151756085553679894014630493074 3.4113012539380908955838933505973674 0.0257909692967741043828917886323645 1.0261293877868971364841268593723386 GT 1 -616446856402669869666784851062663703276.6712672881458063478185205218249035 0.9494557017879183463761962056579843 0.0810127733043473116454164193347019 1.0844830558572629186586742522001215 GT 1 -6777878169853627299886056819516558.7068744666528456328115002145881340 2.1508464661495591635916503497724940 0.0251595245671491514354248462708053 1.0254814363113402378716085151867697 GT 1 -215918529901.4514398255284618810487560955568413 0.1565630093694094246714396230330012 0.0652007786874213680993284110289150 1.0674235093167342167191782416395335 GT 1 -505222321661912841.5029510034947752874009242469347639 0.3441927605642874359795580273159696 0.0965031734185148194635185974390373 1.1014826813174110667285659627859325 GT 1 -2344944922361229536117657665.0291596722146329117650761503884957 1.6452859797469617649110723167275957 0.0974649989791821879773512959831360 1.1025478072325798366313521779026922 GT 1 -1200207241830407978851962405743723.1473668915136700059873997922846482 0.2467063931594169354256762517760283 0.0599260683903131432349296262044289 1.0617967561622845294324878945924356 GT 1 -17672712505.4773399260781792070906208122031566 4.0235559041110994812672692538594050 0.0356854964460119593454842551739657 1.0363377890790734589304245837369979 LT 1 -27496711932602302584625925763826116472.6075000082412669193270466272584428 0.0016722858792320349450765999142679 0.0330879311542634166683198380228741 1.0336477195706002952476278844500966 GT 1 -4931347561898267603467457242339273637.7784243326719670106697505026232732 1.0970262627114894961624687241114182 0.0562758742821274634638758181619402 1.0579213952526239487677079833674981 GT 1 -810369869727319.5262550553731181095226989875664538 2.8603707319986590488836198528109847 0.0152205925016134100875979543193260 1.0153376146692800803615541335776068 GT 1 -36107889416984386882469926.4223946989995125309918862779827682 1.1330545409911553042447812328286076 0.0293035029765488593467059048839731 1.0297414269822725933777550087501894 GT 1 -29.4853104257549325792418862573439185 1.6766538296655262517410594403512914 0.0998760217548601904964856606382912 1.1052227715392720949287088482916484 GT 1 -296.1751452272890521337265385215241216 0.3540066513545566221876891969542245 0.0433684890858772085560892982376239 1.0443370077452014269567434401914353 GT 1 -604082488269580462522604.8784414367253151875887764827777880 0.0197999631506630466185040964860946 0.0367980102042895386778287844888694 1.0374921386119085475665385479924410 GT 1 -42352146580043805809601824.5494297492770900868230805765528951 1.7855502011793581049311559943734086 0.0076383621128807158746036494251786 1.0076676838093528404188899181685078 GT 1 -2866.8345731969089169897007893369372954 0.5568643706395990697773461099657853 0.0976998790334340578711951241438097 1.1028080859170052912123425644368529 GT 1 -4.6670131288184571426541876453470461 0.4681137602495805885576601462094597 0.0870520092958748949719576536754612 1.0910763652845322977367187665224867 GT 1 -164264774938298.0571320681162676567038793375951141 0.3333661817182166262938548028673907 0.0925676662391572715783840606210617 1.0971362789720495328817194305675788 GT 1 -6147.5273681709778651341568541039626864 0.1108373425209987495766136947208998 0.0693539846030280591496541590982917 1.0718762937738806484382720962979591 GT 1 -318143.8742638971261160247694681243133894 0.1748109457285526821875338405617519 0.0780964020905898600904168326418530 1.0813146184740529111221235855531144 GT 1 -3957293232639040655755923317276.7116385873571360063846493708638188 1.0522892173183322979492432465086570 0.0437006813739295627293033369064697 1.0446843201375386364302848102183441 GT 1 -1066282063.2891170230408617451803142324510130 0.5842362290319702645214799266482351 0.0543762080853490903182667566997812 1.0559104719925855961186032020802530 GT 1 -49798167755354.0864945003657832078987268635930157 0.1607154240192719271974938061601829 0.0175165309098693446589842013063074 1.0176717607338251851030890440877034 GT 1 -4720028080.9146952450215181213600621341171089 0.1163949972160481215748452909287580 0.0487598404706653123561537626999967 1.0499887146383722443458473915633378 GT 1 -660752959553478740735445.8112608677735493083916371114791527 2.3985917365639419223051349341808110 0.0475897902652950072609210317665445 1.0487594444198480996953628451436135 GT 1 -6170090391594759674564342058202752.3940789818405932738192761656522340 1.1387589542727430726924410704918884 0.0657951613863910115052078054552143 1.0680595515081366554283325649191300 GT 1 -427292012156014071738797951701229853.9331261240814451466780623520178702 0.8557992976624640861964913040607110 0.0422921676864156756991149287657320 1.0432125242342886308169082819818615 GT 1 -114634627233477953682395558213998.1443047574231493491023041344057906 2.1509306686171595206559994119150858 0.0167823021522679670388734494315129 1.0169247206403495323652453024292937 GT 1 -3659597782636928789.3984663139267839431572947902203072 2.5515523603738751969748186695638039 0.0623301189440538295829250782060890 1.0643573310938026883320192717585925 GT 1 -50589018566278230907171833006040.3181638432630488497914903825698044 2.2013064902951466766005049889371287 0.0440625181847724663335342763465283 1.0450627636598868180610269316878839 GT 1 -791753043221208033617915917.8488599666635541783310774738648056 1.6485595549137313589851755697954085 0.0357228453973732727091608657630737 1.0363765209186601564242951632561293 GT 1 -59464866486846.6011506117677809914175843058909957 0.3918950646679028711559340260671706 0.0902116383344953575227460693686437 1.0945432761180907654001749094515771 GT 1 -15219531.9067658200243466898529071373567572 1.8138839386795989026802352420156546 0.0661272568337244877435978906308809 1.0684150993227145977154225733210151 GT 1 -7.1621197448021105418177044180839200 0.4505548991524801461310919066718270 0.0429933953010447742336910709632273 1.0439449860911845743527067858637973 GT 1 -38050025977426728838755608851.7286354788214811111609016387443732 0.6057970739749167423072647989384164 0.0932950863378332876316800895561994 1.0979382250637182175112326387136726 GT 1 -154323957331058489720119945457067.6550881812837721161352923954620972 1.2714176170029017451710620826302112 0.0315172024081098251084153141575583 1.0320245582010497587282491764423490 GT 1 -569918552.2556929134186753774477008691320446 1.7010012795499021644701529851640885 0.0315993157111013349754083099291092 1.0321093473004549213886861634245137 GT 1 -569526911064075822434085884379639.3664831824201626816236121542152712 0.3985544196375592635335390786437464 0.0826619872242745128151006736812476 1.0862792674736945590601689427396976 GT 1 -165914015086332.1068674342044734875581162109482863 0.7841413455074380689519879377942416 0.0039718222565948859278673397687850 1.0039797308906857340482722355449055 GT 1 -6956193381356587443189010.9912366986339229703287774809293775 2.3748139056512939715951924748149199 0.0982532642364146368974337325269934 1.1087695906070392762759464493945269 LT 2 -24742443386247994836668020858114405.3254424998358894859547926271851900 1.6076819017939969134089115494113353 0.0893449393296922433704485642524104 1.0935910915462965305475465441814662 GT 1 -441591495848703671550623917363304195213.3389059254007008837548144365826163 0.3289976704297446316833242202081145 0.0870195196693781533455706428570887 1.0910407783193082342771349381062652 GT 1 -20935949540115389428.3730154039915467940728965054853296 0.6684191427363815448640698678905860 0.0640063940168061543197338570128143 1.0661466337424143468991162305027050 GT 1 -16088546773376121817098998830755322424213089.6278411017902036564248454593795417 0.1272008246173631575573492628551197 0.0179634812789178393319159298442670 1.0181267832121233623955511570262048 GT 1 -49251039977361773616593.1319075395507217764763409125744246 3.1705232596560006869741399322116393 0.0956267532377440364964958770849479 1.1005131202163676999591019140226771 LT 1 -4727767092.3942682961677327813360730047244865 1.3609830317196124536508704205269414 0.0765774466975313698139596947374112 1.0796683450116418644120883683505560 GT 1 -3441111894474721309940465729.0773127141152585587397860096491078 0.4011050024753328866255677292512010 0.0555555424448220310889930787737283 1.0571583999579955647596677784207976 GT 1 -674.4487997675638542660035260248424427 0.1669609882850950759279425163828724 0.0102385215387075330141869360473019 1.0102912957291799963006625619409162 GT 1 -18795820056521295090057911322127871350403.4194490811249388123629186602388034 0.8964339636863655570141751175970063 0.0497912661972927885425062574125205 1.0510735987300855162709469914985517 GT 1 -9059043818849680991083027356523733508571.8476565754271528166411063307316221 0.0334160976558460147693820783162384 0.0233997118029271889105571414276253 1.0236778322521500873357896713709063 GT 1 -141763213142.4068827474201663389329904969479844 0.9006040331852236186177653573128629 0.0176078615589817607984175655207498 1.0177647240225220680621293412668762 GT 1 -5570388.6371089537442292582096274579857858 0.4800665051415762495101717635676548 0.0572619974554725568573612727994973 1.0589668689447717338637221921093510 GT 1 -11292.6692339432410607764474026247475370 2.0813042837270881190154655000763064 0.0129794632026662885342491020593982 1.0130644324729927489823295394170129 GT 1 -126.2186871063971557036587616622539237 0.2532834316627745456287086546559684 0.0184655896558598129551245676517981 1.0186382069457442864214895519107339 GT 1 -1927309382239725560485732.6717522308359506408600663541492896 3.0555506660324806457691569914164518 0.0423574277852345890966349073850483 1.0432806685265182683066739707873787 GT 1 -4353235700340999736468098652677835409213.1126119956328475166515148775349039 0.8673609763486719230464610072762991 0.0808513620387893303152825434894357 1.0843074309003960926551664422936283 GT 1 -35.2516371194806026268485556637137764 0.1210402119572213647695089091395401 0.0157560865798495486522999265497270 1.0158815331549061159914103031356740 GT 1 -1970.2033379177665124062711917028324236 1.6644852082348864478433711959316342 0.0703707960824219219015307641344402 1.0729694778039623345040138416255850 GT 1 -2.5745638817782157698049891060655110 0.7422875388209707776527778123609307 0.0308268855916116377852653636611683 1.0313120304076176672045810852645601 GT 1 -5031.7948705506456708221016299674268725 1.1978659626522979947619114868697875 0.0665111130738569838601033716216179 1.0688262208102222334927419530356864 GT 1 -40733048.9487174406709487708401751914684824 1.6479850825296904157394349786384397 0.0997860854037041637651036338140900 1.1051228610151549860348268579694311 GT 1 -8284341426574406139715.3787847704938745701809621173869826 0.5564832722913619800020851901107838 0.0936981797388575535780815920483285 1.0983828934702099588256720150476213 GT 1 -10797824101214884985.3935094134132219101808804664493983 1.0021186266649195777661106404555487 0.0862187362744928241875365881218792 1.0901640537559828408225965060311587 GT 1 -97907024550334173095047777772913722920000.7352452789629627444728659286661562 0.3652875845920654875173705436622208 0.0499538845364590938971961049199058 1.0512447529725031300389589112939333 GT 1 -550950699399683617439668.2642965803803570085310073685698853 0.4755356056392890009760167216480796 0.0102628833377324478833435925678380 1.0103159098401333048424406141608025 GT 1 -92376577002.7601192555187036793891060313377197 2.9689560414445191574378766158332339 0.0349749404426733483372872744799755 1.0356012095271373287750059968097406 GT 1 -24940367344.6318803616908952465288733024036504 0.0193933384990124201569748306969694 0.0753800520457017888204039382044413 1.0783724929751503310124432331942249 GT 1 -3708802270991463667917646374279183.8034339465868333769815862032169734 1.4871377017452165596370751446003234 0.0290032764154224195026605349407376 1.0294321849657350921948557014124228 GT 1 -16205463485658.0969928966086997536632620419845554 1.1790230204249223455051910488090230 0.0182840550781527180062308465076139 1.0184532742623118924104484863943690 GT 1 -32158758942697039072734.7990587162539675637158116049288386 0.9600283038450597121468560357706165 0.0140726045864860594626722672554905 1.0141725625739785093958810259888985 GT 1 -101525388883160297675045802135310710076337.3461265700913904703792138274260287 1.2187672195971698922130559715967529 0.0345825760115315716153335499367813 1.0351947074532458786706086385624989 GT 1 -545956075446870403662680965743659576811.2560424521106946746661465181101318 1.7710643636409696886664974807694716 0.0048796771523244415829186975646190 1.0048916216495821389186906352630218 GT 1 -620705147718390928636166070035271.0737961771566755999957495796926348 1.2969619114349301787963893361331313 0.0416949276694029114144547715582638 1.0425891045956125654470148312636162 GT 1 -6480243507178172461565305576812.3050990704873801925070159130800277 0.4895285346863861469895586948108633 0.0451348789025841711677404266125308 1.0461851829288990510467692106451946 GT 1 -25396267563.7473669830723060539648748358101664 1.3117610847326345256478208635287953 0.0281101315367866282268637804463237 1.0285127849912787752934865922394298 GT 1 -178178196731103911365332828.1312396394667676788171884571786293 0.8409320863753495860745040581561523 0.0956518003594495131414848348464420 1.1005408161578924621502742408598289 GT 1 -550907250284432308929793270825360778298120.4036801359082584277287204347470400 0.5994199946510761186569466456130127 0.0323001309776446799984404278793885 1.0328332924446806881668013860112878 GT 1 -10349694.8419839365245780769850578724539124 0.7281469349145038564063915041040779 0.0692974481975602903195179338681898 1.0718155459843677793517314643765608 GT 1 -273360202.5048586516635274058446503455102085 1.3709278745886076854126411022014337 0.0771740619049880944288786301411498 1.0803146450422217080290618362695350 GT 1 -4088641785976396831214330692347.8240298772982648210121550623702518 3.2698230821481231833384569688827540 0.0551279761586757674620247883515397 1.0567057851656559570583903659608318 LT 1 -7985982585024727310254664143204415035.9044437996138219335760800147854942 0.7114159073993915697467736327368194 0.0828893657349447088843082342673238 1.0865271659495678692619676712018011 GT 1 -23645810638322490585402006153292783140.5701190923619787827410485892126199 1.0171207119267657644663358810426888 0.0032010368773559499395979376617502 1.0032061711555045682071128629941330 GT 1 -31507996572628261803237008100.5827033676059975546133691048401164 2.0789599730490129168789514395646944 0.0114172413338820172496449835925629 1.0114829184129697189534018557179220 GT 1 -8652430744.1037776167060027937145482456557283 0.4017899096542528518172180733749119 0.0732112365687571156842150140269341 1.0760296105465680717135700468179720 GT 1 -222324169070163416583.6097897590267003940355305964948604 0.2926921953838505018446025050684145 0.0475896030007644636258454845983935 1.0487592477981506216060665858091087 GT 1 -4678378167293080962231658470887.2984742301091593983829231512063585 0.6750370420951297994806538413335526 0.0287128183083408027133647342859780 1.0291330957250140905225492465313308 GT 1 -301803567183991576670319389.7223034688876911772485338211212691 2.2026550193316600731369991267160562 0.0113911852652141621993978199859397 1.0114565617674934839801817680730617 GT 1 -1110036828.6350746041806470242645425355405341 0.4980721195637563210564027255445938 0.0325423586608902320392503708997335 1.0330836365982843760566655635693383 GT 1 -43857843134793793088381208.8730152845375696857936136146805640 1.7164546836386072028192797711311653 0.0363868251660778175401361255945633 1.0370653358214783941691628485385564 GT 1 -155936457883576.4931508353309212944733922034352544 0.1538780657116609411703243410089638 0.0766590538093185086573274259315332 1.0797567235309949423557908917999098 GT 1 -2316963177493515846757.5486274543479612124561102220385555 6.2044999588968569739068739921709297 0.0115970628793666562129838553267167 1.0116648332810072251490789660882497 LT 1 -32772553121522050.7135332010087335933319071297573169 0.2695521828358891289609229969477071 0.0826077330958082356612816313656135 1.0862201262156219492030816409015155 GT 1 -216624086272610097238.8269411182802907843488414786993774 0.0935562694091721512663105150447595 0.0640129330597266789596181107509890 1.0661536199715086240642054711930117 GT 1 -70639590060707.0227790441491002730807242528081139 1.0048704569745106906082909657087663 0.0871440130900744192163104455901299 1.0911771469625277935813800322860939 GT 1 -140667132561292921651.9523663804765894306764991327799111 0.4511440048418228856899191399646218 0.0258210537977399296373706166481503 1.0261602692143385002228165147212110 GT 1 -140787.4730656410061613673457280356462738 0.0883520325030604758001518498861817 0.0942329108900769590107938758493911 1.0989730820264791307606533140380499 GT 1 -3585503914692184175783071015.3451647144365053131676605260009540 0.4005427588582150972053428347177534 0.0049575060321887437733477184751130 1.0049698352301458778325067486834444 GT 1 -6905.0312424054501773759128055449052593 0.4511910304455549235281161995865781 0.0138500707083841999017895830482269 1.0139468778340764661728848819594450 GT 1 -133461.4867400171745397155779381879647768 2.1417298671256879973815357775153096 0.0410038591800745842601276440151508 1.0418682282778850730663270703013908 GT 1 -11062918959794279314777638701309308075811640.7402439503642332792554325786663489 1.0019738242272309564434791049422610 0.0485877463180035508620566966627347 1.0498078154347803427544438290380532 GT 1 -4666871318814150.1699560695885297413774265364035392 0.6682075222309434294569642652112869 0.0042246919489263610183742486950928 1.0042336411739978083327212113702669 GT 1 -351677549986255625145784153479447347543703.1890671042627098992811457783392509 1.4549155203080838733698893616054914 0.0923047719783830823705831577075771 1.0968466086831423555756978587942172 GT 1 -281429427024360787169049433612804009051.1176356114184056244176439870262116 0.1146354680413758808240925801586593 0.0189328324160327288121698058690274 1.0191143532754479128835217234382609 GT 1 -26626909425601904827521620.2112438111052136824572227609463520 0.7509783904945708884166135438888662 0.0987624007621823064740333488364615 1.1039863499918518079923608347851272 GT 1 -253972032148973243239.8586688271611059483334709203892776 0.6039252259435123168384876358718525 0.0343702893529411477097516253213837 1.0349748405679296083647425759518783 GT 1 -138734062072326014476832356323736032095285.1804142548951838266640703580819880 1.6966172111959477456192495370028415 0.0522199837273860648723185709462490 1.0536328540003064097902921453672868 GT 1 -34721386699392.9647572173633590768204889484882760 1.2425167506572618113246194778463784 0.0753311145357238673479428596562031 1.0783195672135224088526367183805507 GT 1 -3322277168709594747410613125989488374146.1316996295385698503290889843864387 1.4661744117360885176305859998638073 0.0936178575524534294608170164604435 1.0982942710869273602856687168511965 GT 1 -4537244534712708342598323993498.6355739706823556002715737638864119 2.4668171823109620383234267757849138 0.0848384656233257773818710239721097 1.0927006484535806473593268607854291 GT 3 -11877982907133762301703120242761968634703485.9721332713077782190789176611032579 0.8719807895270617425131130466663679 0.0756802181938003054187761412761715 1.0786971830079340915312488702935020 GT 1 -2857172.7034993590311249409622798998340755 0.0209924988849216664280313014270905 0.0698348391949273667288398034591471 1.0723931163389557215604987003414460 GT 1 -17358341559591600612103278.0328494395148461358630534503255287 0.3492061207666656306442339162204449 0.0510600583634695701528766068413772 1.0524097683216032337280435513564299 GT 1 -109443593549524972495134832711.1340179060812728875726357084983297 2.1281533469387007670456198698864883 0.0048056809572226142912872312429015 1.0048172653708526244448404519569020 GT 1 -12382508759031905639574403180117092247920.1801831641199738681269829112113228 0.0169175905416539388194323082084811 0.0257192862665425973912312021720648 1.0260558097447560214613595404630343 GT 1 -10923000200983257734163060802.6529118735791708328822353976968295 0.4096870600674195598114065608871893 0.0994782157173327689938670906849087 1.1047809233398339832131985388543032 GT 1 -531822812541560692477601.7088898000996197162480526169910930 1.6057617813519235254093928700603536 0.0311041642206401479183353301843458 1.0315981694852738169208323393090297 GT 1 -5809608288893036296421304386403446767826574.4079341760056212638655898176695124 0.8659879162842219824157276636785225 0.0794327822926727967221171620056609 1.0827652579361353646124588617694219 GT 1 -44203.9719743295840952071706976654931645 0.0266972846007634406626169498989301 0.0319912188518706721922875878365539 1.0325141203126873437906417429890647 GT 1 -24840556564670737732.5413369767164089859572585899000221 0.3092704806767910323403777650718273 0.0958822727603984021059396357266001 1.1007956978217059446153538844207849 GT 1 -31964908753740179115800348114588940.7622377298661271606766759154934194 0.0386052776733715073252670921443826 0.0653171269342524827854572316618792 1.0675479804174002230603373260128672 GT 1 -4921120577473141753824715845980365.9103986961527837291923721713200857 2.3699855342003795069956027754979245 0.0431766254093786681874980645302674 1.0441364661190622316348265670484020 GT 1 -1305192808283783085.8365745271545667472117750684633032 2.6598423119144024720627665185810796 0.0320566575923479045483464457804748 1.0325817239891480643823652699466729 GT 1 -942624385.0878634531255610272623689173183752 1.7610670417515426891750884374259476 0.0890235173522715882012139830664661 1.0932381969316469877101446787040182 GT 1 -11816705377549816651918480761505704779240172.4794653596065912057185798586270317 0.9437960130539464767972122925862589 0.0742262683406042357598850300192600 1.0771254244541782323242894530735159 GT 1 -28060331.8443256146270491339926997288551341 0.9021873889985513777988067033230581 0.0863820945684402869682701142459930 1.0903428415076024963272111461759473 GT 1 -659145864761.7212504342308922503442313535797025 0.2167406519678489297492508863247054 0.0790343864548357310219119886519482 1.0823325794225718211554220459128843 GT 1 -243848900091656680876473654009663.6755039957975026861705023303406606 1.3284842500559305063188836959068205 0.0230875171296378518654182494858760 1.0233582083617195674396237977749529 GT 1 -718824830796679.1643641147433636202163390651302627 0.8987239607905565428356171858254122 0.0277882495936140917345623838119269 1.0281816480352785672074336970036579 GT 1 -2556533174588286244893945974027981.4567063874700794203191153711780527 0.3933159046975975383716717829564488 0.0664420139565370774065100896380500 1.0687522011181064690826301617959793 GT 1 -586577872835089083406898841153800819.5548680231497193650097919612721507 0.3554527328774968508755528422090348 0.0125429263708649485796312622194944 1.0126222528943448115381558046790919 GT 1 -538300.6714792945700554285032815209381348 0.5939842372919914289222560146934798 0.0214341069668245948425897446622396 1.0216671535515981728420541825128774 GT 1 -99772719627827405739894394005232236400769.3070951190837860778711722142596508 0.5594582140011923768597380899890700 0.0713240281773899165535951460076042 1.0739953934512078820857263697325220 GT 1 -22331120726539047902571683672373617270133.3515831140655740007337742149361931 0.4606015361398656846018423458782609 0.0044629729906230836113705739523939 1.0044729617854746330460816500187287 GT 1 -173775823728379382212554495092051959732617.7173019007924817877993659182455635 0.5377202492456402478544988631017278 0.0965369779312934382369795752486414 1.1015200972155095381859588401700992 GT 1 -2938973303877817023933115641368875084210276.3514037582068825349189486574811980 0.0444067097252886552778350414240937 0.0640230731144472522235572558857522 1.0661644535716784101342081003908521 GT 1 -7117339624338233230144875.0290627514649227541061522727152112 1.2813130282449276853403129268248848 0.0904859349385665560100387932802087 1.0948448165350329711422232688989035 GT 1 -726325031488724173534971784.9013147010602981343843784705052134 0.0208861026477607350497559597239132 0.0141913735411994129185820600030230 1.0142930340301364367230650222999112 GT 1 -8119.7333165794495374562307964948801725 0.5038012310394537362719176887224154 0.0807338645165039224403296073461837 1.0841796060763763935056405771366043 GT 1 -522826660977.0052722971557620613058006663508289 4.3512429000671239073297512024572150 0.0534014566800582005198512461029022 1.0548802003660838972997224919652503 LT 1 -181053853291274873773475661227919215.5216297741144376110075127535011266 0.8103750216635041303159601393587977 0.0137182212441452398640373243226371 1.0138131855354813834245053980618668 GT 1 -2254492404067301.4438601702850515610853209224511331 0.1063423075907444240721106980173124 0.0790458687422378474528560402054686 1.0823450471616626941946731470817015 GT 1 -205507511015.2617655929088635106583609457167209 0.1108723826829974473218177759649677 0.0361118002784381957518613485795636 1.0367799664898280340543157305091234 GT 1 -220157.1051077483329493048708440665543250 0.6921513385017867804404208841279903 0.0881035710054238498731294869102005 1.0922288600556939984093985934172336 GT 1 -483329819548.3796542075819644906234304454893640 0.4818397020875295001594762765045630 0.0926994603509815977280966465813322 1.0972815280210827327725232054302146 GT 1 -2971216718094905987595298605207112007.2259598123244238542154573355779267 2.6693993798849524008556298570725030 0.0585136549744377692058256981818994 1.0602954344148934913287424056208512 GT 1 -51058555159749410210717115986369066.5793816061009353435420612691493822 2.3779397183067059434777185219885301 0.0473802360506450967476779820527260 1.0485394434556744268208651829956816 GT 1 -333175224660853567506.5548582595957787603835308262684979 1.1999591233425629320119172233441001 0.0916247851145363875789613459096930 1.0960977534850638542427951356549289 GT 1 -15805897511616167918000941753124.4682242511666863107035629799501318 0.1516982885152198186893910362759792 0.0714639582054151951845687860429004 1.0741460817164830202432795459661810 GT 1 -1591502365323937841670.8302722355002726251222580414974136 0.5219892315146888287455777327805259 0.0636077089338293660260672899665064 1.0657207759215128388812138746982762 GT 1 -1660099606908.7683190180259482185883160506511122 0.4613696680700759088272732155048794 0.0238538549544969564588760192945501 1.0241429650026459295266917503291457 GT 1 -665367737206096307373554.3254329633270591455947264089402793 0.5261631688385210646874354746940122 0.0580569039391523221239359271252093 1.0598104138091032217409886283600524 GT 1 -789011209074757147348.6262382768613230400505031014081204 0.0519550245280041045464776308280388 0.0985596871229383050467043447592022 1.1037614472083471944537257584368696 GT 1 -5277073000.1168528102112237464718127786580902 0.2319679684126007389456925796880572 0.0398294641111858700265875904234602 1.0406443687457990371820721652261669 GT 1 -308944271392086972899.7625728471433989959130630781733300 0.7976787293298692157623870465476158 0.0917032774744910088464530096370879 1.0961841668416937014200063142930266 GT 1 -561660423334597503488081167467400264235618.5391233243329718816940127105250993 0.8691591001294545034339181450136155 0.0084663590238238325963085426340373 1.0085024022220035666939584600400324 GT 1 -1432165634734067477841644.4525953048031309413413670551687546 1.1345279877551269765804511758630294 0.0653120199847157696979200969786941 1.0675425166010276625310867952291506 GT 1 -1178.2264657225977027084161233302128617 0.6509684929971661733681167176434488 0.0030637695013663596896880602748657 1.0030684724514382967429563995680309 GT 1 -13471822928481017500277974978.6005496594665013232843578035711903 0.0044068937225620887580661766688111 0.0518128439806415421252158497401755 1.0532033742509175858014383263443281 GT 1 -4305.2835347239066189288703716792853038 2.2088159874465047798299625889680283 0.0589261834900117048934866652523323 1.0607336977231327065038579563997515 GT 1 -43850.4723520497078503024214122150362046 0.0554748762661479143482437034584092 0.0683322277866117762483424713978181 1.0707789954284186386867678900731200 GT 1 -293846606796475859477331130243986.5509973713354169139837601652782005 0.3278863494263736523561463989986205 0.0776240768233316355292231379929884 1.0808024127349722390148281762667859 GT 1 -6397.8829597202689714842363900076288087 0.0838494355101523391037725251372766 0.0978015431371268778119715629711674 1.1029207644250955243745359670757192 GT 1 -10537.3391505154168491955806935347908270 1.1275888204520132675647556428765206 0.0522232185399253050406843427454295 1.0536362670476422770447540470271133 GT 1 -54956026920757073742598435177103221621.3815958461918415367826616279521097 0.2960715494281558588067553121965210 0.0864437503669545022755437450823971 1.0904103291068187151197185253707972 GT 1 -203412871480581856347476437408802310.0666741340916472508122895019648350 2.5664752565390061794074301538564154 0.0664154181301145683986498550356185 1.0687237128527952344150278932687384 GT 1 -347954296441040979229592525258700.2056940074688849286026220558134281 1.5677967649978910738753435801771021 0.0385841928499919666511300014609568 1.0393482818538136263546192152356754 GT 1 -60174815669754891644547712770201564763617.0187622175300216661123438831524690 0.8015554783245702714998887389670584 0.0505292031431759758552690465807796 1.0518505055410403578064673151694632 GT 1 -454970798508583605399.7573330608254635703366416453390302 0.6816977916181530790858462059793077 0.0722712365539293084320948031197774 1.0750158696876057272948104908244852 GT 1 -16815666244475702948755542522.3803684325643349942666242372896000 0.4754450697972112117260457421004120 0.0452610175655768338416134592676418 1.0463172926818502784981031369105545 GT 1 -181061.1080752038104653139253992822830317 1.3129522787579258698880159473392568 0.0145313856406581213676480222396950 1.0146380003248717513125218837507156 GT 1 -102564066628916182138317578010713605057.8692936040975503366120659548980235 0.7999355714045417661014327715341319 0.0792256374834471008248180304445362 1.0825402645809379539536772882452579 GT 1 -67.0632361842620653162300653243361271 0.5945292394400988270031747505914799 0.0171049634524814472957335555186855 1.0172529432264357977164309684294829 GT 1 -13622314047185068939310444214318335.9744223692002278389725248096681865 0.5834555518629894748654420630705025 0.0531057249615628425761332152448395 1.0545678340153560774871749639796919 GT 1 -1355128895842255932350097852.5199865319008682853862817113788574 1.3234296916386274612042598817812805 0.0776918410419617840622935972921072 1.0808758824627342001387316156254272 GT 1 -23.5855995213710135927461337173434686 0.9117456685225133748197912658376605 0.0554326388538116359601500990352241 1.0570282752123830053989265872113334 GT 1 -1228.4215138078026843762843083919891251 0.9882144129138392292439660061627988 0.0103853710334785559742305173099053 1.0104396753064512192833281531321096 GT 1 -4490143745396518768005198673480903526.5462859587291243855102937972395022 2.0413802316713709276236129474480673 0.0733070899213059670245542884865580 1.0761330411377675911324512858886188 GT 1 -58907600769484392611954977.2786046830278673495212751758715341 2.2579372057572554733859997298750512 0.0840747479150656288030698274355611 1.0878205201650383852241712093111670 GT 1 -1.2270855630336494497401463202581408 0.7585833316331643195894447030933688 0.0868620186136672287212612919613980 1.0908682801387100445947123749189752 GT 1 -85466464018312794379302546140849.8574748020965526387493374263626019 0.6661382282591833593701338375867922 0.0025886623804139423739155484774100 1.0025920187604816372882743173340894 GT 1 -215824598617930226809409.1495689323386694768475751258539978 2.0579269605768365191051338982578361 0.0156271208560943442127153525840513 1.0157505114909369453046029641730432 GT 1 -11854125332253272832.5588755775299513434927828105426565 2.0231782170808580153817825836032921 0.0905721130288769710116887974049681 1.0949395728193427560007857684099430 GT 1 -108615580131607727184758802.2556633417352083729871056032009198 2.5636859086259768698614278363366877 0.0088463615345141015230551805808398 1.0088857228992313384672896038504611 GT 1 -222611791211131438614186676955375.7356847628809403942015939381560772 0.0100167944468808809710622814702966 0.0544595531846572639578256722717096 1.0559986135697741563192662781452929 GT 1 -2562750631802406479810078972653777618286989.4042988855681066217241362040923380 1.0147642571884259852531955107149452 0.0394511965554951302581178867194201 1.0402504876067540380603324377600097 GT 1 -11139836033210.4276755656701190759017470307417335 1.7394448918254023933280215872362928 0.0936673138938686292340461544828077 1.0983488371341052619252360278751146 GT 1 -1277745.2157162677730732062761918316939394 0.3985736121807040889060649532060690 0.0444323463237385610833000347674066 1.0454497133329103604410741369216646 GT 1 -150188864558339845.5573911770433625814471554152627919 1.2250459813794639463903959514875751 0.0217576335577009975333960263033169 1.0219978212010806218456927883221900 GT 1 -1735339450797264179060.8346308584958349150184906857232804 0.1268685818246021285217752690088148 0.0453450443731523960129249377900505 1.0464053067956010769673763880410269 GT 1 -118.3212452232724990363255634691727019 1.5753485127802650310914526883791299 0.0510434014455395298588106512117931 1.0523922152911005365281075889752563 GT 1 -265699044698.8622199802986492287267317509898209 0.9095421454833190348890630021658722 0.0807050646171393923246157452762413 1.0841482773380241616135998844648602 GT 1 -240035726354559545599820417701614402.2338572707665545312711551477766509 0.0292732484613571034574002122393946 0.0138581159255246893978827746868624 1.0139550360762655907374767483225920 GT 1 -275178203093381497748809070056601.3715445564158806029412208125528980 1.2174355191207769132142715298196553 0.0814844424788229206632385802800636 1.0849964365050490457326257525182949 GT 1 -271800084249572.4690680700220892245888607915339628 0.1735648257234731301917847416028921 0.0109758309590569137368733969812007 1.0110365098006503070588637310662688 GT 1 -3214162.6650911970401743141110061896996493 1.7171613788958797271241127414116090 0.0131230605530775727770247677483087 1.0132099287334548953903255369268409 GT 1 -432192813369373871378226532179453.9449076171233337773126616293541416 0.6030830366179079422059651500337791 0.0633621640764034419835446785882689 1.0654585859489178048110962256825167 GT 1 -7085999367138424703725175260658.0687961136743162644865744795857361 1.8811282919140158879754561057458081 0.0960299955735574732651731892101172 1.1009591000846610064426755388751165 GT 1 -13361383634958195455023831491733327752097.4330326008530183914848329662305632 2.7952109506210726099533517420718658 0.0091260790781307168672791971872242 1.0091679768408063024539594635966668 GT 1 -5289343572835413739.5017714739480999428984737567922077 0.6497341355201702333233786398492478 0.0734194853572958387718701144773315 1.0762543350975561388092179694931511 GT 1 -1208142157210085539993881041817912467127100.9514880695906719476352235836052065 0.3817542678510719404300595575843341 0.0155978459373232925082632200608518 1.0157207722690558869230549972575192 GT 1 -501899991354641851285300.8308644990703602375132721730833935 0.8267497433817802393395265560117525 0.0364463243516909199546195662477258 1.0371270836515815519677361812160742 GT 1 -127198653978703662.2601201029486731463207686129467847 2.2186116385775690302362348611348747 0.0819541293530456751263710717858621 1.0855079215850020532240335324230109 GT 1 -22176296203840893817255448890966067.0901962390515015149384414960389764 1.8423621973112785310588984090076107 0.0270759506235557612821468951953862 1.0274492580376472138589171468303032 GT 1 -1940768232562687349.3527590269587264787021098286462928 0.3434130803995900549184946148303710 0.0452878098284524477578760185579605 1.0463453554710556257079013383005632 GT 1 -9553142773674143.4569707811933129245759960924234800 0.1179027465561680009689367472869934 0.0858797615800654678663728163921325 1.0897931642984105954553053678322605 GT 1 -819598233752.9923847810855884897357061167167158 0.0394022309142795686092373239564835 0.0611345921245633870492629221493154 1.0630831456433165421471972035891956 GT 1 -86983461236427001648726489478.4830847386709802003820825958018120 0.6390255134128526736195040145404515 0.0400249156538787795549210463977754 1.0408479486631847120201594204626504 GT 1 -796606033178159.5806383291303176085289064743236378 1.6738253570501183253238604707927655 0.0458075900318945915389413705461120 1.0468899402724649415336021343439038 GT 1 -260718381369102540.4401553797863652770671321539049421 1.9511235933369315012786211340673858 0.0173587550663142304432154223611563 1.0175111848245526727164997344034733 GT 1 -42786299512108231959119531.6108073102517969437762156862577882 1.3890914868759617105978056227640803 0.0622875014168587255149906196094659 1.0643118816668856648518629928759580 GT 1 -102463695004.9648749758885193911560740936395192 0.6620366677394834782466185323524234 0.0184650980588254847843786648659227 1.0186377061004289919895870266222973 GT 1 -460584664292755555258172985100723980.7696539535628683262511730561016565 1.9203878994007014097419539334751042 0.0286006227303719393180405179347098 1.0290175901355240490071071449120386 GT 1 -520.0171697987209978948628502479935042 2.5905756368488957616608556151148618 0.0610473732755348415352484446135403 1.0629902518192247436357031054886913 GT 1 -229416.8529149419257671605855486893726272 0.3475385710639777441225619736084275 0.0580545634406620296348355469411161 1.0598079290564761239618015305899832 GT 1 -359543938630207733367637071718528.5420243842611511527628562403306958 0.4886723280533992147304316274996815 0.0805269610062020567130526089057013 1.0839545567446962328032502776567461 GT 1 -169128.8909625336310170127003246860612428 1.3046900441219315864151793541412534 0.0556648237225846841746823039090095 1.0572741162394792319719769077845466 GT 1 -4281647144046925569810861.5912314667477779800616926088384076 0.2432420161780283635032940714623045 0.0040234595628907963519083802907356 1.0040315754529362108359989055610054 GT 1 -96039774220762268074412384593053.3915266448048724802306129400388584 0.2042156977277497261460297472961956 0.0130236872724292790985684166261007 1.0131092390994886657215056862976621 GT 1 -62469162260.6663227514042738699372701091880905 0.5179706778245963965157910062136587 0.0850278231315518191727090310620586 1.0888616219629877829233142644954263 GT 1 -810347838090400098965844.2624402381415606566199856653649836 0.3838351812356016221701944597665202 0.0619261157561610954773584525906459 1.0639265652273621027300148907641236 GT 1 -24093379626.1899171448769922397983395249810009 0.8707823678784602399931964498080885 0.0255569035286401301834081809523465 1.0258891542778007162866843502386055 GT 1 -23883123959040983.3002740639087549553091195310277865 0.0690407177483114934217168483418845 0.0596668845281983165458564624511339 1.0615210883337062034944544292050528 GT 1 -169.0483498687043416094506175029133056 1.5105109681016861876884502321647488 0.0015635868165641723445752715928258 1.0015648104941477388470290840042037 GT 1 -10087016237986992713246048791674925095223633.7526328300575590913771086453762042 0.0857622655288201371624541406242562 0.0499708659494915875701631624523563 1.0512626274361984903695306436406263 GT 1 -64405855872037323480974.9252649375655317011648603806549183 0.7006461399456657321423271985392093 0.0540746897502954817203676499158972 1.0555916662716424905239899389627689 GT 1 -13908324876024949514616911804875010157170.5635570784438233511235535475183006 1.1976629015486998243325838570441129 0.0642208392076021750675625461177452 1.0663757696669675081455279777733843 GT 1 -25306742872826410252471731.7352478524268410271542339763456914 0.1222472277351241682515933114067677 0.0366866898899886943344020649508116 1.0373765721127167809699469798385155 GT 1 -80570085395397717520092844744715859.9989597259712357075079827015923818 0.0540776387014328323609904422510499 0.0840765918666539927712480406275556 1.0878225333789336257495889023438404 GT 1 -52355750833730029745322.0045113757660303782444487629014217 0.3315047151647203212568563498229682 0.0645871070804613894699728260578122 1.0667672504631908617203219812489460 GT 1 -560107807727.3650994889578161870959739982074093 0.3538496015810591026567429082961081 0.0765641122580935904845429075684819 1.0796539048800739348439219563589921 GT 1 -23298347.8714182112442395909684038986835937 0.1678841479523762821129492326795941 0.0038765381957966695137217621821091 1.0038840714449092929875607776739772 GT 1 -38587870759.5571571512891774732731703890874608 1.8096371642310581360228091967621780 0.0445173039959452337872107687357217 1.0455386253516615701028178534560658 GT 1 -69007554554878555839951716.9893635928567935013311399768974670 0.0123567322642264713660313292686540 0.0749257863272683175384247106733704 1.0778813136904984384500072761203609 GT 1 -6891463282734294755546023740791888.5392669449731725810646644706910113 0.4324940922354047837482385113772295 0.0305757430872521224321329771926654 1.0310529332794777226643789439177829 GT 1 -62092988307937310538729.6715405741680003411704945038548770 0.4012204853765731643627554699159393 0.0362523427180101656851807568560042 1.0369257849433605061135188608898338 GT 1 -7390544541505054051272.4462920570468510527566611231851047 0.2637848639942528813846048036141675 0.0006071734330794204848994563869087 1.0006073578375157670309892459705563 GT 1 -5253691491189922723688748511736886354.7167517651006648567160887227330901 0.0871691350448194829268680921750897 0.0960712462670697425644657899994286 1.1010047339381422990488932028677493 GT 1 -9565332616984362993562705166156652476.1170948205150556703636393735255725 0.3259980115316045441771874756756199 0.0418140775088611197884608305694409 1.0427134462595532346184563030757297 GT 1 -3613.8773753837313364443821341757195397 2.5439298979072949768679157000429443 0.0290428928496778529184211744112841 1.0294729855590694218734327814343681 GT 1 -74097587.1707537744247493906499487260728980 0.8521717837023081982535455745870151 0.0398702663546390585935196031232974 1.0406868644368184699767521768400950 GT 1 -6331295114676855087039036047710729291.5266309208220959152693789992581823 0.7493163241645303509169617657805390 0.0947559345438754609308066832667363 1.0995506860539540879171326434907953 GT 1 -74227451431531914.2146018264458228492041687792979649 1.5419035090222126816739656821109838 0.0216023234973267342613931362882106 1.0218390694048466224803261617472617 GT 1 -5702803697534980007.5640324152848255277380446220084214 0.1602480075809655564593079792648561 0.0492088457089148175776712092258323 1.0504608469774431929987199640916276 GT 1 -79518620620973036128435611975293003700584.2402102964846555363005556164878159 0.6659981655128345626357051072426907 0.0117401391294281017024598594308920 1.0118095987417188030133564679326507 GT 1 -1838030651898766625343409201700.2101551136616783469434328900011503 0.7293326668692989418169979918305118 0.0658649529750156561414506726045494 1.0681342612429055539023784737765937 GT 1 -79326405861.9650468291724101550860021395942531 0.1855707152977115839859796839227368 0.0951546651100800937429497238328091 1.0999912505615168363667733200634380 GT 1 -864208587192882.8024636914494744274294951430858648 0.5224673137008855981011502428209001 0.0493190744084627293187030143269380 1.0505767873594636244913430029221039 GT 1 -54506538.2729394020973785435658497149655262 2.2371527101315022159541250792522270 0.0041299131862330046588343477040995 1.0041384648308503026475873169434994 GT 1 -177633741160377716675149059415524362219.9916423426672221108791922450451833 0.4589436414198181729227143546729372 0.0474025017612139747298113278712185 1.0485628168640638926006726718720363 GT 1 -244070457740406917792.5910004009389971129113609837782232 0.5108168714285971807458850827526806 0.0735739681359450795298473700490057 1.0764210725322385694142671895475654 GT 1 -2202004462992251500180589432349633087217.0095313885552224225048471463114409 1.0245655323423444657353254044895285 0.0230814700315499122565397308271378 1.0233520183708265753109823434592200 GT 1 -228801967898522764012179318201887.4427466026841290259006433333173408 1.0369213106485123725364914961584596 0.0065922862225225286701973341999631 1.0066141113123811989309788154770550 GT 1 -243216.2243168295821777760610182978386913 1.5563414821830179968429178428820558 0.0968219595304251314536858931576283 1.1018355794741657920007130169090549 GT 1 -23192954251681430295808610681052518013175975.0468264632103859710554400097262886 0.6046533675347974167567097000278673 0.0876302201345576357491595585333382 1.0917099107058782987596548741617261 GT 1 -4679780271761322902695299949069712182152.7302320955190598768287790028361127 1.6814956567578116812119557771118176 0.0764513482521610104751491455710552 1.0795317988162041843680004615509618 GT 1 -29710584756697490504.1948229771939382814470719065195325 1.4622202531886309765984444240483623 0.0300687666660007815205764138987188 1.0305301034678732698503015545228335 GT 1 -41287507690210671556.9918598111730593367253026724122293 1.5002805082684756610860070034410258 0.0045286399997736256822399987179869 1.0045389253540892098093369715673630 GT 1 -72259913969381663522610290976.4631498826940127172803760337335462 1.3267149195629566571234278791692892 0.0537264447416691656004485996593022 1.0552235812686270249066347937144097 GT 1 -5699.8987225810776239463602168817862540 0.7561791395563416726696091962360250 0.0680002388431561316040108549131723 1.0704227205660595328475965913713162 GT 1 -4398036157574.8784067851602568002184517659561975 0.2590183127166969479510998346627337 0.0003981255144723933560539356455459 1.0003982047874761321165624124722485 GT 1 -1286.9400286155568803501350157625103628 1.2863360373005776818918197555301198 0.0977887298407248008768581779017600 1.1029065622223359124158133201192313 GT 1 -52733277549216624076.2749141345997820315383437889566625 0.7048659566424069679108097379545318 0.0746665811929412367643168414994784 1.0776011536528151506533637567190375 GT 1 -29622959145150249188314474019248910747.0171857648798783626984992855080620 0.9491560972669603784772322519585280 0.0849533491599786530412307218140034 1.0887802304816689433230026026265124 GT 1 -182540.8541315788866322994424200017574308 1.7559649249493451399208715249457663 0.0244778001208725733167585076654249 1.0247823617416004776367173803990902 GT 1 -34891812075000888499586587235664.6733428542569811548132880510352647 2.9732092283073704665651257433774798 0.0136060810964776398910087911249512 1.0136994920906628030521497488086025 GT 1 -2532063703082.4835021194443463617999126538515579 0.5711825896314757830792161618623342 0.0757042307797463134699199672517704 1.0787231620017102993125178604397123 GT 1 -23343981496270676726024312329132.0676700115313784345739731042454145 0.2100038864859353131840916355432839 0.0775208726576634203366629062163214 1.0806905295105998536337968205954235 GT 1 -21117900408.0474584955801048521764893430068068 0.0612613614969936684305008928801737 0.0672348584603621446758017183038426 1.0696018337886787956873213537206449 GT 1 -129166630353158664768588495037108030655596.3846795597814165027041524975160647 0.4028238239824676699990291549407124 0.0323688828369375392686589788464972 1.0329043416448563049791238452582941 GT 1 -1507703720062061651501861.8274350770838098647692361723289147 6.1438169273420386095260861035679597 0.0687096455553862608526818619367795 1.0711841765954424917011170618098171 LT 1 -3252352918373227287468113725017.7771286918708382545366432835447085 1.2255886478507658783485901855524752 0.0439076666044732794359322912105347 1.0449007875448640731146016050125623 GT 1 -21.7928763762005758837955542095988490 1.9995963619154851234939841158277180 0.0617523618597411300060427564527119 1.0637413582733898862012317673753838 GT 1 -1373332857403067003151875171256357454611.3354684113475237568478492961959322 0.1051697327259702673368717587856492 0.0988230894573699252331471586275912 1.1040536915438435814485307015774686 GT 1 -1231143064604327557867092.1370541185379955230687000522132640 0.1329189157380468768251655893079984 0.0593042434523733234290470175015886 1.0611355109662216862922479417049580 GT 1 -16601649793762829143551117533.1252937183800809507043453487071038 0.7321586407326476794218639098091222 0.0883263302515298024393495556862984 1.0924731711982900518640240537184552 GT 1 -9.9381184445604765535737706677488080 0.0593007881572967965060786487968498 0.0061124420728900223748360863224567 1.0061311995218790792078499255744351 GT 1 -1362178658866058492228053875290.2187679395076021804874687287762701 1.4865265333036181987375284451933233 0.0014081269013364600176535341715787 1.0014091192436936347477303671576565 GT 1 -109222361252155416.4523291760405685745762951170082625 0.0589276565584341442217421370685095 0.0430889496386502546334062039847584 1.0440448381798386840201465033568695 GT 1 -336099236362269191359629470952.9923587454463676871662134849480630 0.1271162860655902272572676317489882 0.0861603114708306056919667533189879 1.0901001183938826812843452176981429 GT 1 -1.2615261053704195601916144502151441 0.4956389867002859048620187636668325 0.0709562435745312271889750835506542 1.0735994407118669585723125171657910 GT 1 -4662743795309544618300760319398.6605553916592164039411139034473647 1.1616212445331478199600280666645514 0.0740605551535784917856293440856758 1.0769464408085783971214262852762137 GT 1 -214390501969149993555880897619761.3956149219660769250518545996571018 1.0127659678724860506428153563723452 0.0490481076564086295545603982310466 1.0502918041057751260885218059562924 GT 1 -91.2736886330063969242180239097045723 0.1418265350499963560905196225130701 0.0154197248102670651903603645803163 1.0155398451821547094410526562768687 GT 1 -9577996847492047006231767889.6367170414557288776196015156224901 1.0613894537360705995693008236403638 0.0573902859004144677241798175042518 1.0591029589020855592995997789625870 GT 1 -2659297833374593445715782959801873313761337.8830145921678026989374367160675497 2.1507312271992949916968436511735959 0.0059142003257097202534150174685777 1.0059317584709420493826884231935685 GT 1 -3383983087.4082528677814392673564365055474468 0.2804011332162082455349565702812055 0.0671001817521104780672162749155438 1.0694574598400991579184332772275760 GT 1 -12946226560586.0858155450074713512742500114605959 0.0222728758311712053498594902464012 0.0787266899879349733573275940796325 1.0819985332075804901337655706998156 GT 1 -99758.2578335669959028865951965511696475 0.0709451339792681464200918508338994 0.0308191277702881589816722161724272 1.0313040258621352649261549426737982 GT 1 -2847161613934281256934547.9551287253591730166995066363862812 2.6014735192191974571820955065969923 0.0252813655069045055460072316243686 1.0256064296385942264276905497872270 GT 1 -14133692226327620245364411772672.0017333509053856863414432035482538 2.1912975832470233512955129554614114 0.0708266851711522350269555838277633 1.0734599969347182826480799777325314 GT 1 -21.6634818104351604225934241889528303 0.7831188003419929642949926495441882 0.0968648998431399233511738612471110 1.1018831241791863057117380248977328 GT 1 -434.5567427814079644650261639010365624 0.3392469268282241596600982100991952 0.0220080032672690605443669961129324 1.0222537922806692132718068848349603 GT 1 -7190538747321485930160700813952177828452152.4434661088462470986769793890828575 1.8239995281673027362556054316673008 0.0552766856585998873933978541455744 1.0568631834161979501304820897108982 GT 1 -38489543.5938515055311830232615210911965544 0.3028956910044729687107220906864486 0.0367814729497831164759386478358680 1.0374749697182405083618496151700054 GT 1 -279990.9655735585727558978950663365960838 0.3828878914979396701115898356595930 0.0286764047714705313259811610449773 1.0290956064478957311680226432620879 GT 1 -800838286833706126171.4440890147009159172383747935193765 1.5784018250362614182590914616524910 0.0896157292587494716176942435138469 1.0938884930646297157591076222022078 GT 1 -265627573004726087027339844226303627.8481374151326756554791540749232592 0.2097013227703626972176530721256212 0.0955746071753609272710151352694018 1.1004554619881312333694679751746397 GT 1 -1519238846979851510109.5942349832816267426041171586996041 0.2398172505573201589546123685485306 0.0046818053214868669687316720340596 1.0046927992998867288043370117534880 GT 1 -32416.1745132202676990179475238932286622 0.1749505826007546452226082229345523 0.0356340122481818995374349490464989 1.0362844010782362323239683777016863 GT 1 -9014318369633121270344934143495156.8670822715853682979959014297992296 2.8096782371615655557713322230684515 0.0165556791062827828001146425151413 1.0166942559800991853504709507914081 GT 1 -60404846496403965215454315549.4220366846956860002005112114346567 0.9959694614719437819162937861755480 0.0802914662276075983598372791280632 1.0836984702512596429000981715105678 GT 1 -86843.0629440010994212235269337106073268 0.2395694847726695660669401318183037 0.0242889708877638523541718344104378 1.0245888131376790390052342193097365 GT 1 -1329.9211715612836471768626237193722657 0.0834285016377822239614467771832842 0.0993477492146609904860011479840617 1.1046360550479756391199862905894766 GT 1 -71404168462785963495062.7973786885721543131226920404066743 1.8868343850950943419001441494505506 0.0546201697229006885452742454130410 1.0561684954421888686479025427357814 GT 1 -13603311795910.8777139715823960682881113246064016 0.9561169220255886844299034447601627 0.0776973000071590601479303135478956 1.0808818012885622089841068120257007 GT 1 -707864075685130366131080144.0218740375310895618750811783959140 0.7030212169597970624705880850934326 0.0571507255767197825691241602091410 1.0588488453663979197848401819615294 GT 1 -2573991281283214770848730507.0515049362473060750477086124796011 0.2376048996295127548860821903019820 0.0972264033745258919559002618608414 1.1022834805613873714915931776445096 GT 1 -38191533761919692243320010.2887863405687443459221214909487511 0.4596998944930165449368772819600618 0.0436979716161809351921700657788536 1.0446814865541022703375588173148290 GT 1 -17999912898940311.6107924977598813368894392630555701 0.3888846979225116224776597732464133 0.0771281095477217765476167262153601 1.0802648510222417628758099929570543 GT 1 -11622853.0840732814891150669847105395453582 0.5141274084280693865487118151226679 0.0803082742684303388369964610556806 1.0837167458176964346215018029411093 GT 1 -455511271086050062521618.8882089394099260352633624489690382 0.5358739328370083994972293017473275 0.0879155254836876360843498287786669 1.0920226676311565604957278737919836 GT 1 -1513235.8195361007963725822418626600161057 1.5158741211758510067441969808177207 0.0035202248486894215535537751161347 1.0035264354195363059949363204927939 GT 1 -150373999401795124934461.8579782682412387682808096990473733 0.1227694305086730978137213889741010 0.0088505767602624399820549825890939 1.0088899757562538350945670275507662 GT 1 -1803756231117858382573464451441520736.6132159749801132886245387665689757 1.8362210378407473017806598981240214 0.0583515951892088805887991150684697 1.0601233173790382004680454467556795 GT 1 -2.1637859150687936857113962641766679 1.0590453503553951018962222285567358 0.0953803089757221089752581126333602 1.1002406545163654736776152088662263 GT 1 -97324.7021150794627746265571912754550924 1.7289157633255277463739752541496610 0.0244892149253388806563886457869709 1.0247940630347661674517292571130959 GT 1 -6660911542.2296851421956210428274248291627865 1.6591408445208298522904558900080729 0.0471139391200496142474204529615050 1.0482599408387218196708064333747090 GT 1 -11955445.7382064808168771025997063099919881 0.0500801930745737955883325619664541 0.0526236395558449186056277376269059 1.0540588408365613368237445705671116 GT 1 -27217.8457897187892817575449920770681142 1.3971889127977785379466902385997320 0.0777166941697585448444423766467981 1.0809028294895124220662459381803801 GT 1 -2683674160699233410790678257298988832478558.7384144922695833056354406465320317 0.1520679315924799296310811763765435 0.0908244142394837455064462695438944 1.0952170398054213469471071952817791 GT 1 -462598936665141725.1290641599682273961287293117112178 3.4082158953116235146093710607110533 0.0872703587503283158179170186491361 1.0913155635434941881099782943930643 LT 1 -325527757534.0362183914334301715839562602209016 1.6412539000637195809445358245137257 0.0887493519113693333529313513774747 1.0929372844511482110429261194002445 GT 1 -9190.8879350956641580962218613524186984 0.1792755379428706185846676514507854 0.0715214741398086845666775016340556 1.0742080262326044177951075659778958 GT 1 -443956306913275439315647391454605216822.9880683554597499661001309228199710 0.5566925971085101026119437129193436 0.0498897225388985541349118599603986 1.0511772195864893926380999370258843 GT 1 -3065784.3130589995892102419675547130019800 0.0297771640928412122885010211546748 0.0729750418538267717366247763233738 1.0757747902121846987072217840441378 GT 1 -167254301.3666950331908945790727682598228245 2.2579322863545159718881381453857614 0.0053843489619209814267957058176914 1.0053988968127618572041417996968782 GT 1 -1832086188723217.2742455286107356166138523154461378 1.6130889146169930935041440516627350 0.0340797233563146631298216751564954 1.0346739775297166097647650691279150 GT 1 -4312403876195096326065318064.1639410001174196701123394467975543 0.0519637680946473910996641793841900 0.0200478128874748526852191604678072 1.0202514971684134920015481813856977 GT 1 -151437760725575.7782767560046326649534127514227003 0.4675809050218412157171527866649219 0.0946094423126982157923257078780993 1.0993888729199021596129797430277337 GT 1 -4208672419782317044763686741.6198937692426436252513167016076254 1.0962409838244949999278594160556011 0.0642677530837837882633869284831867 1.0664259044147421730076347013179950 GT 1 -70552313499441659887441.6526586763898888420253322285633468 1.6531986283848112662199181592104861 0.0563979064603776500576049908083261 1.0580507127783119650066492631911587 GT 1 -2247239.5853740591514052075903248644838466 1.0199336841220614845921699771088256 0.0621169035719943225089152269830676 1.0641299684167280825311941772655762 GT 1 -32281450326925.4720973945263333384387555636914259 2.3227484764393515827985788378869182 0.0091107134116603476348224150177744 1.0091524697747628453007831927801490 GT 1 -485033401348043798872974.4052445158852080689695912058765960 0.1139665435094958867267719842888771 0.0741899779896410721082739097752547 1.0770862252001386732150279527496408 GT 1 -1410345894973633396998189.3976111235751917515185308308994687 1.7812436006297565628983930410877188 0.0265423096287623362214269496316946 1.0269009164690155640436185674958223 GT 1 -525670744702932259.9164396920878063082543327632510954 1.8530277844019374033535717226687933 0.0210643370697299121389140680973187 1.0212893557405401578968384575614930 GT 1 -2838866381194967678436400599840.7984437717995998723385934202496322 1.4648630271264477849470551561484111 0.0622045745000744065912018226635427 1.0642234502443643195615291771028512 GT 1 -178194784865393436456.3418909091465781638098441096329743 1.2044167817235303983927102019481935 0.0363793890469681465959640785468975 1.0370576189381770032796684889842465 GT 1 -3.1578316537863782127298626707754198 0.3632298334570827456800560086059108 0.0109486960710266715997286498660478 1.0110090741558503607553952827113987 GT 1 -3126639212.7715553865653923289108998102498228 3.6572421209333643343609493625710686 0.0155122091898196535132162454796476 1.0156337823915559823974434943384853 GT 1 -138666709131271975901235760.4367890519442741963423352264014911 1.2739943328542589237898525984768522 0.0986735237846854731294633054867099 1.1038877382656123251985094041495711 GT 1 -6545807886308428841262575519226972602747765.6005065892823743706647873933350947 0.2177767108759529215410726064267302 0.0138628512846024961657098205813626 1.0139598379922207763478878901565350 GT 1 -223971464235882697615157428105156.9269141108788274698095221533090889 0.2739764328365303066500548007546783 0.0999206759847595936120269427223413 1.1052723817470219558810814979028777 GT 1 -18798677386757571887406862110660359650.3282648083605806824911295075295738 3.2579527549963532462688230858877167 0.0946105442821035206995473186261587 1.0993900900411395790316933443653341 LT 1 -697510424687857777161716094146264589.7833146966580726426718663082711811 0.6413188491561346629818767170875818 0.0582835008917207761470797930562904 1.0600510060628656631683224673485314 GT 1 -65848107590241116540247575841418063.2987471788709512469082754694358535 2.9412612528471356204606246845541210 0.0241812872096451835164212182378138 1.0244784549136501549180324002552354 GT 1 -158413687932660073196509111551759461.9140725953236845567425755724511134 1.8139123653836795477627152028529444 0.0598021093056861251530425660953035 1.0616649038595098059226245334757641 GT 1 -141434985555575263478386.3523544978716630707867838347552367 0.5879729144672935579823017299329746 0.0367557040311572977907826437257204 1.0374482171452664067585641229228004 GT 1 -65561379901964180089803424.0473091123233446116960960459199497 1.1586664231681282657844312025480690 0.0873870174343907906773494279938271 1.0914433846798652560790658060217081 GT 1 -15276588.8274349687925885941369901822190012 0.4033404385287042203246727807710661 0.0094380882861369403756527177599788 1.0094829092806522138754388771746986 GT 1 -12029170065236404576.7667536447744690060428498275648644 0.7370882689692296240460716420610655 0.0320894986842538003932453182627274 1.0326156532984453822302121983450376 GT 1 -232854012901694682296275282822947679580426.1536962881984754027503291804931333 0.8615804230405712530467154653348908 0.0436901938144587001281917052012461 1.0446733533808344920677166830529803 GT 1 -489955404862811721627798031129603035134239.9929968105012878089468784254163568 0.1398449120542220466664325864496065 0.0250328096493027305571012461839392 1.0253514594728566404822489910016836 GT 1 -21414339575410912954580291470098.1522976450212119479015896367333780 0.2842434613986449563249199381456878 0.0597082056000011141794898224873342 1.0615650323138082898079770796249255 GT 1 -2211291451648817376.8497004532857179363143266411023977 0.5191805484063054375796755487021567 0.0732474499605765340687994121663199 1.0760686853614220425018535269966941 GT 1 -7502838988183713665218.7459037477880753749185130733360807 0.1663261753525912735392582487895470 0.0793247530041069385027647571807272 1.0826479140330256448422522011898226 GT 1 -1209956090400558127469759937087002484410498.6880881658932801570353530260699526 0.2531770735631876567053087844209165 0.0628372042775512721750735896587628 1.0648982704023001993717182693388705 GT 1 -3309000294981404127965363254078208964455659.8612894504829424729261115770004399 0.1928715717680772644362844125561964 0.0206737127266452863590905038383529 1.0208904056938163008799856550398302 GT 1 -6716743721715524162319242.5590652583308731974533507850653517 2.8247326832181918908764544201353362 0.0654842145154743649360838331267926 1.0700202173569872246223495478799186 LT 2 -333.0233009915981912351063663551761833 0.1977162273019575841481780927552246 0.0691879444778874186177336695030987 1.0716978958521922778581812183384542 GT 1 -20881078040198925595490794085791032610940870.6091501029457252569366613241405543 1.8175556184886363230398004523392239 0.0338059004436890615795754787986673 1.0343905337358793127695830361516895 GT 1 -1549225765560575829478698909476360.9266170930218091996728736972299542 0.2541669104350265070124970261211153 0.0595582544704700765653571251442146 1.0614055720535798287163374859741734 GT 1 -871889073635369377600683557277234933.8923848275152501177329976429603902 1.6117612376594391019746587229796366 0.0780081972452993077972790829391137 1.0812189461866486869897880566608495 GT 1 -4406428087111558693713956761308782413699.5313278661328060747275068261953040 1.3724516348759386858987380733191707 0.0520582713724403773385026483724216 1.0534622463087789280544198209692451 GT 1 -2732007.8524717428726679155056042947248113 0.7866656975468491746752381876498329 0.0305485679203358246087858740406036 1.0310249013978337792034397363821702 GT 1 -2391988.7042886965569608127580327534988880 0.0006725235538696936146669832802632 0.0594224965955073379906664202066420 1.0612612270392740071107401918714120 GT 1 -19478995907276024226915217190416262.1045339082395323140973993454619204 2.1834057706159050259783081849514251 0.0435638461469054199605613511746932 1.0445412420912260232678940399716498 GT 1 -1.2056695303078687611953656905543197 0.4282328857690687608670202650275233 0.0597322628923407135203752927609507 1.0615906175632384152887549926981623 GT 1 -423253341138737512.3784044752654597739463038272826743 0.2756823204574326835050250865562407 0.0665132906106302279810076440389737 1.0688285534992809897933795798895204 GT 1 -576642512392.6794053950467531469583037362565110 1.7625325913984145484512185167888166 0.0643421401189049465691914874393994 1.0665054036435669335590997177346882 GT 1 -103129489638422918399554971049013793.2214262609862940690954059742632701 0.7305338546806223107349677781032728 0.0109602235930033801309560509810591 1.0110207293542296802031969190895615 GT 1 -728161495.5878433490106130483748088622445534 0.7082746648249158820422261243719003 0.0879463798981425548103097042138776 1.0920564966647685356799173572161811 GT 1 -13.1871137667072334611177054800740503 0.0106778746293645909239127077656694 0.0021001168688526258121478981401070 1.0021023252066707580266546101098153 GT 1 -1485065617746469436432932850141425923830.2178129023806622587959106952859595 0.1595427483427355735203896480806216 0.0910339838015968024538400006737893 1.0954475714238776747595514442523579 GT 1 -18620731628528322151724586412987.9036990058759543286731465549792259 0.2242370968998809097840269695943919 0.0575348032152544885872353306535271 1.0592562868301044532163379961551822 GT 1 -128082515577007141341082.0951042149389940148113656315703175 0.9855555435577139552358894983820948 0.0083682425785351022317834191349864 1.0084034528903461455459598407890580 GT 1 -1051602537018762142231123738434352240.5203059608886010302916547741645422 1.9037462883343967020690641066926765 0.0577401390031345911930117230387702 1.0594741815175494250255475416682886 GT 1 -9236751800212716368818197821205950834425.1398117243767865266472164180954276 0.6123453710654850649434422677818450 0.0900622826278635350943390676568109 1.0943791242617342470881556909001973 GT 1 -524091504956.6216028796940407598335804700995895 1.0535934760037760369284623164277085 0.0736426017994570091252357275358623 1.0764951596191906912272294323616733 GT 1 -9615231268834132730801284640813250453944049.0927569072410486177640043866765810 3.3293929482243148572465209150870108 0.0951990756514783441596223436072463 1.1000403325753971130645261599795487 LT 1 -137815176827434105076968729238982093224.1563617041777814136744095405335487 0.4405507150725298705828715834969441 0.0482127991944837507854712577346930 1.0494137977426392516510865798414042 GT 1 -159795.0811075042771832770539984051420786 0.2051143643333846759115190518114723 0.0708352152472843630833071860576751 1.0734691772621668870299031079198354 GT 1 -13153761180190619294761225174206747279.7005949773453462586762114997121332 1.4478993777179950472442452673441094 0.0744300831260204015261071482336841 1.0773456048473764679914503913464046 GT 1 -15046669513208284529278.6019985530974609935739834243627571 0.3449956929962330822373353112889791 0.0336718593760984026218077239911601 1.0342518123643797410721380119609753 GT 1 -4378071788935307064487921121600475301129360.5914082540812165192519484782788244 0.6110970345147140258005700341578637 0.0993845836195829442194438424363801 1.1046769533615339410411203684281128 GT 1 -3339116569345209743.8822078301246313470563143202687078 0.1036706224293383139061571694757250 0.0915047283077699033135191422822810 1.0959655956809406048852944373307158 GT 1 -23947422362867379636098018240203715742066.7527431557692873296479100986882026 0.9611864999368763419961995893866290 0.0265526055442741448100132485836465 1.0269114931690223028382855605069777 GT 1 -22780647039330398819185910659955424096982.2932275213434178718991184823668432 0.5512111383876094738028980664466121 0.0775909799072554115732346830719020 1.0807665311367398520264856086088286 GT 1 -84340470650486.1460909745357343246650739123117880 0.6509733680412122129343336285606334 0.0840049040232854027798909940033764 1.0877442680595492253979398719479470 GT 1 -1454712061653592813.4485155413969617323522343810328353 0.7372130749777159913303087113958263 0.0908133876483809324030041235092381 1.0952049117584190540956399682582133 GT 1 -45555815395808750493648975835.2488468601773160621039344569259269 2.3388433410411423787376960193568951 0.0820642810307336167303479055365591 1.0856279137226608317584589111450571 GT 1 -89879218178044501074229647022879804946027.5655671750441636694428249946617448 0.0899913632641413482439663774434685 0.0723855958729211530536022801682572 1.0751391453393939146757132583611123 GT 1 -1137677468476890957478464505082114280447381.2523963170263917391706672073644570 0.6214151943167307249426285985976282 0.0745942613879906381210654203874282 1.0775230013052004159032651800883458 GT 1 -880300370026021908876626175525.4196962181698023145684820074888028 0.8700656827331631242734576224328979 0.0387952523903669966016841742001960 1.0395678358793860217225071186278793 GT 1 -42648915868459501515183293187102925243959.3398157440427759270561455698405983 1.8021831039183692524578357458448822 0.0520980584449793295129061606659621 1.0535042192553573362049323329468410 GT 1 -172869.9290776179793173154792475315046140 3.9543313652578292044710439654010367 0.0548330846111396720313033893256134 1.0563937370445213699001625039330546 LT 1 -147544432396709906015528717611676212302890.8148831825216463001052128607680750 0.5518494298834348416847534413581023 0.0852776423738336319152909800872345 1.0891346940404569330661783898116267 GT 1 -329130367918609.9928782101936661247898768338910737 1.5271392718609928447087011450331650 0.0253956291824590654166849705433109 1.0257236638531129433348747235223742 GT 1 -90775922122420121956536147923349.1153629044364290655860673533511471 0.2647442654539022817981971741787536 0.0805548642238184942526670778690194 1.0839849041717883265547597576791714 GT 1 -1364562731397576548059061.0962720786701594198723569630042498 0.9337991500211857670038561059040714 0.0321735061168605607318624242988676 1.0327024496275622609954038159679181 GT 1 -3509465310254207732581702271552352708053955.1772251106899161034347195859334821 1.5824059050923605613326826986789529 0.0996561449882492256489837959125109 1.1049785275004254892383070859619798 GT 1 -51952046820.1944246188117320542775233888506029 0.2101365420200248492472016399206426 0.0829723378724766243744326223681536 1.0866176412836816666377872167357330 GT 1 -34439091974302265.2616842877083334142297327284240141 0.7268830767288688587977249503616158 0.0489494720256645931842970822456288 1.0501880864345684084843420791361711 GT 1 -4945186277417.7511710158163041802012653581765834 0.0538906312493967739821571951597842 0.0658527828122622572726258127577300 1.0681212330586887547238957719975217 GT 1 -35588173979315.7606333681654443184774182635135368 0.6958533454458739473379569243900224 0.0875710911550352140882653362505440 1.0916451046755924017206492219592469 GT 1 -5795071250996888706122763.1080505675679830901233092034545588 0.8269330686129025433423225328784933 0.0103084385832699725806811373101459 1.0103619385210856069274407850799144 GT 1 -35592622710472442488977126507011549.9380321664933853793339495944027696 0.0743752704838227810311197698003295 0.0846819327991587400644062095831516 1.0884836596833640283843333432364149 GT 1 -116175196593570361.5274856438139903739302903209632551 0.0559435459191502993178903585034380 0.0575731711426856076680046127572343 1.0592969978383897674203122608958294 GT 1 -4083298057.9509137302607118444383130901956549 0.0030049839037870146119562993890909 0.0484445625364635033034456283208200 1.0496573307129676855394482395016562 GT 1 -959186087008014877146696.1472218372880633493666396908213244 0.7141891945557591154578569048827817 0.0924326563968772429595617534542140 1.0969875077692632882243049863250780 GT 1 -17654859665.5545201008550772707153689544400461 1.4788306119759312928883423812083994 0.0722840996204374876051493442892315 1.0750297348992815782325428756759040 GT 1 -609164774219025192620473999859914.4553295658162866203383557358532276 0.0166473712819897797739995691291243 0.0189413279225133190117391372779578 1.0191230127674223003219265016974752 GT 1 -1.7554596243795664652349864327353082 1.5132685170969655628525353190227896 0.0294121030779053421139378939306160 1.0298533117754625796815835535218556 GT 1 -10659.7354699684959004569172406957808770 0.1710312865522994032786696675312087 0.0333187502219674278596738385525998 1.0338864658121984843310437481033011 GT 1 -14667259717391394488194363693061766451654.2861628847913792338741300318218546 1.3189116143229400035198029982821185 0.0248572657828846592784440768952264 1.0251714246300196372058499146763393 GT 1 -901688163904770030061495547324043155619743.5683028386087553208509171280064654 0.3969190495299443177939659924091173 0.0793478551072319613086131205370929 1.0826730069124646880259954254676978 GT 1 -2828869726081452430331310975075881457.4983584173249768523963703920477428 0.0750980574592286201834873700336364 0.0076463599098923726229894055261632 1.0076757431991307547576626750392522 GT 1 -45838448321015050097980758931.5810190914016808257405726406099186 0.5594489634076183704428723503972408 0.0190294426070715045808896687733186 1.0192128327184137632638778109554779 GT 1 -17614004382610435916.5331928163038242492455507276064831 0.3659959802033213660343509746484170 0.0878234271318796526108965222811258 1.0919216970469101042895607097083144 GT 1 -48220786385705062677.7715806878688348813530476690068631 3.2816359919722235553290224621690482 0.0508460695179019989293930034605831 1.0521842906994292347143293966697589 LT 1 -284017781.2675494007517438017175293166965938 1.0167436558017976740576028074420392 0.0567730465774499809017278693141818 1.0584483535954483702097734623020621 GT 1 -178563121.9055725396087391559545845926078949 0.7904654352178874111264433615110699 0.0661460512781863176143026780042430 1.0684352247988285198125553980099172 GT 1 -2131824798.6037266595071395999570055930263676 1.2128796015928846342979502223629999 0.0138322030471987310884938823550502 1.0139287593930685051850580001453852 GT 1 -1.2457122278305856991087086383679171 0.9791428003699665789767265836008794 0.0087720496531717730138155026623757 1.0088107505712027490861757434032923 GT 1 -130674545410814.2411953637897814367418954145771799 0.1178375239399644995568656254249399 0.0128789099543528573415934826305198 1.0129625621238413634302427023278657 GT 1 -6687.8717391733226828519889522534714288 0.8929915018328228173878870280478989 0.0152860679100569567871112044430336 1.0154041042655143627283655574394768 GT 1 -37590622515805393569271.8954336325022349733141515443373510 1.6534858063859523915951413939753559 0.0315535715837486480043848139402624 1.0320621116388881159600436812890519 GT 1 -71828940470.0151107625765987327651802855011058 0.6117000297910067784758007603846816 0.0712973218693410218339711645184109 1.0739666364629099848631049753205920 GT 1 -2286355619336282000.6403695364121239663106449266948881 2.1912274190550246208616538913029813 0.0059512118626823099379332308632616 1.0059689908969596510091793303828197 GT 1 -548517429475135946459737433.9647851988836570365231527024424420 1.7862067196968891694657613711154224 0.0419305744859717057188972885800156 1.0428350344157197717341426551113158 GT 1 -7571446.7156317107604775996973829691460864 0.3245605912508363148392266802578674 0.0487846163192335591345391791622756 1.0500147608171206234147960880764225 GT 1 -407637723.7275035768923684201342356217778746 0.2055109395024719184427990658320790 0.0307733712590732591143928457422593 1.0312568154471936323331244655628276 GT 1 -55709154381084992600765334863328228.7199660436318195115100931569044788 1.8963179838089638350805503120037397 0.0895235330339389067565867970480060 1.0937872264241007534789766350656151 GT 1 -3982733439750163450.1486774108164256230829957441964513 2.0108041087386579343646998136545819 0.0224532026347584503052871183700952 1.0227091137261189505091588734238374 GT 1 -138848004487233704826722616880740815335.1588834358053525369652737955829085 1.1173639222348784713531641563882561 0.0368664776463314940011898843942880 1.0375632242993591119592322530407342 GT 1 -7847435325999808253725451408342110133.3163211161805583717869918579127024 0.0804004013583921261092680433377131 0.0973807331730565020181112885014962 1.1024544458975540370453396229572650 GT 1 -63383080935008850835537998354.9952728018233871874529109068136470 3.7201184892695775542075118814010313 0.0089610182603411484206778505129138 1.0090014096642673778310797085166045 GT 1 -507.3469384057836640033102805116902960 0.1978378397490450650679003164231356 0.0670428318599603903363782507426356 1.0693959868627096419148555096281287 GT 1 -58059.1508205214952046113710390572546956 2.4694791831270293974444937582055978 0.0344809957425811596561685077413924 1.0350894939748960017057275911594666 GT 1 -257182145953536648809551547766164621.7684115377140549192534096601774291 0.0782927665987763583057833428033691 0.0921731372960473274151937072369875 1.0967015984040178365622894255721496 GT 1 -311259696.7483869330928618993579784806711032 0.6752609567798515578045202633117719 0.0756610654478728542187081068619545 1.0786764623137803696774844008509399 GT 1 -449588828881.5210263009878290899715238988398998 0.8337652205309262933684730289593878 0.0787105936263749333304868322886353 1.0819810614966668734930385110951605 GT 1 -23267178976867577082541511243698946246655.6692827509959642752114893304511845 2.1564653579549750438987193604467712 0.0314559356066270824100760638512347 1.0319612996033446335541269731613854 GT 1 -1012756959771123916457311519813.6447206612595533331748037572863085 0.3318360901370137357620933472258255 0.0846943167760744028351588163479148 1.0884971894727737617392141385140941 GT 1 -37432172.6598236797482554218949062252645244 0.6606361373940533344423499893040191 0.0291454383217824722908132312277204 1.0295786039090320727857996660075147 GT 1 -5163646199209593472065502802890.6683304631851528958721410402444801 0.7922286932658621283686390466254843 0.0378263607958357435875807190603228 1.0385603464710318147379521409344543 GT 1 -225260588859143677.5959424413209725416478732747148480 1.1307088050613865128242559003771530 0.0833722116669416218439995740812896 1.0870537906166476066584612345048404 GT 1 -152867.0178551866401478022795231248270621 0.7371543301523759446164652773380220 0.0405576436273723188260901401198247 1.0414030420742075038258486640980362 GT 1 -112467030531073.5789309424031282723483900418953345 1.3705521294771084088340082621895425 0.0420922865758854900287303285498553 1.0430038381942318703331496099627480 GT 1 -1389.9791104028378797938898730953380222 1.0031001437779889381757884541038041 0.0464245490405894143374011450968516 1.0475367265433089246493551233771706 GT 1 -1651372.7904684211422550443424105925006398 1.6502328314671999611353997348411822 0.0276780359114295669920653705607409 1.0280682905948999419160437802859825 GT 1 -165859432383732949408851430.0517378525626192596497813964357190 0.4536432978787124779617025158185904 0.0280089829729400253197826554012977 1.0284087163061109792333077421019402 GT 1 -1145489711991908876449218063274494133.7362026820660391436334870629620618 1.1146547860601313099794483313416298 0.0020311579732070443087117248736560 1.0020332235720754620497929619574151 GT 1 -22.8174241302914567405495763166288383 0.0956011076970147398563110119856174 0.0726401303113857100278997991721714 1.0754135798085453218960151368929036 GT 1 -2954609435567362866.5739798840200666957348901404633616 1.1128855697368665303735609142959232 0.0662746441847842138025708075155189 1.0685729355846449182809860447156307 GT 1 -17489518185381926605454832.0108854181267871936654967328168770 1.3675523492261663345329404374043118 0.0612776753981037953056645429397179 1.0632355574548579379868787583957825 GT 1 -2690340.1559858349398429247059045811653369 0.1399795088761415667861493669333989 0.0005508007926561687750981206034667 1.0005509525391367103173644798064409 GT 1 -215679368.2721983717279600968029475871829049 0.0047070300866090495236028943939396 0.0815879901447311063485336388384212 1.0851091765693355788435603449784642 GT 1 -1801071187276862570870.0108726380368689701062592578873964 1.9364915132825607546810209848563938 0.0556225576197777879381626834246436 1.0572293597186656087694603753504938 GT 1 -90452143694065108004283819280.6817796170229102933352238789604120 1.4008558070304927620416540020287769 0.0932506089454001446292819113883302 1.0978891723885817375659213916329360 GT 1 -40091853308500306848101088002833213472.2313886011346216904211179662155234 0.6879878485687622780835691745691734 0.0262613704511980150152137231111359 1.0266123588370606758222151805599600 GT 1 -3990356143.3810505438691029304889038443425822 0.8649790557094276223112040399409995 0.0267875825023105006561293498226319 1.0271529087031949601455750234760582 GT 1 -55904259129352520618.3047161759056506499412607613780959 0.1876645976016321726527643107479630 0.0155996970979184289374879664681648 1.0157226527630471336138473227269409 GT 1 -158603553971.3771678310311846524494455750810630 3.2603397408367778024828161658211612 0.0846063342365665883547696234659497 1.0884010704244721170092321833828840 LT 1 -107253537905324928698836109.1683780964346379928906889213529270 0.0483833020306771501751832874200032 0.0534831833363793866844107734165600 1.0549665412812753167915375739329175 GT 1 -2043188743015268575628667398196782911105.4476808001150106170361239908977781 3.2927092982624991640945062285353900 0.0335919061611193748658901963510674 1.0341690765894726603284507370163309 GT 1 -1317395387599722549.9502548948015659154263391052273007 3.8806600303001185482694995622104897 0.0146713332695621901787920214005007 1.0147800216585544446019239811157588 GT 1 -8.5159848961356464445156941425396350 0.0526748394787650005287089946446274 0.0795295633811563663153711829027346 1.0828703954800039528910046765363119 GT 1 -2738696249954783887971361.8773748217650485613635699266622406 1.4753011453793134755049915387831748 0.0501554739284939836942237311334922 1.0514569645476162530427087488110225 GT 1 -253056.2452796395873666120137092288962773 0.5213529147631463077650786253380958 0.0570583160137523630901043030793077 1.0587508392086853753795837029207179 GT 1 -16057219908077929973037735580391.1512529509735659760515718177403271 1.8034118869435238942403804055781472 0.0397089974441008367465247253093612 1.0405189127917676981183962557204042 GT 1 -443908442019614562137052306.2702794351465189985567718883827250 2.0960981554752445978336910734869084 0.0073987790957542578213492189663544 1.0074262858232607742660337789505538 GT 1 -9889629791838671637798368054.0897852153550567842790044031081461 0.6595015991797187333716131402225327 0.0981498669686175599681699764530009 1.1033069223565063892609258901502345 GT 1 -70985.8357781976444259973933652364694387 0.3155308689073210371029679836436553 0.0817295700693488444845936782947241 1.0852633457624756457710326932867385 GT 1 -49709247030564508529573.5438210523475590730031610691749635 0.1336983543094834143758622186836992 0.0062811603314955388132241732837323 1.0063009698136378957616554936377942 GT 1 -2918453057008304689025566562116173.9979042682408413723053214561321489 0.1996694604548487711868390896298573 0.0277255487237797792357959023677129 1.0281171570969507070507735444770700 GT 1 -5487771817345.0338706243375215176647202240864715 0.1792389689048277960426583285142946 0.0383234668227683936883317820368791 1.0390771289576644242640158340135815 GT 1 -36509584587417345443790.9245923004366549227674842401334751 0.0726473287552022937377902829159947 0.0886648665705741298490663593259387 1.0928445751348433869600887790489062 GT 1 -435339.6584939466251508323072108604078212 0.6180585650555920156931624853973597 0.0178365668873503565141864991154009 1.0179975556437939583515741829697038 GT 1 -929733669118629894184469155006193012.7114339968561985170226638481834682 0.8112504984245215713482189632932816 0.0849966318111229924668282125077629 1.0888275326326509994434461674873446 GT 1 -19953301611755071931458113897652649738.4821211818277547044076050880893406 0.2580830842812340422024279273271178 0.0043916869069742767631845070574281 1.0044013586912719791374437811324359 GT 1 -2528141703671291723724.9349744946341091050785504747961887 0.1001021594355733301245776842996403 0.0924134011191011894559415838314067 1.0969662916318039770820475467803413 GT 1 -6179.0795882732750575594919579219377213 1.4521943637785315045201803577284329 0.0762963941706997329795096638565353 1.0793640317111007829543310419770778 GT 1 -19050004344884430010897492277824721722647.8487289511796041423860442324439405 0.1448952063891146599062654724339467 0.0924675323744477924035622359272996 1.0970259364852590584133583101394125 GT 1 -7247386872966918422627314273893536210998.3176187417381084734540190679833393 0.0985120227605842502665710621944147 0.0353191290054334922747822305375655 1.0359579359702297714460808293246458 GT 1 -11731005217295064.7024020649653411603631776857717292 1.0635046461239446623128649625032214 0.0815440349121304514930059347724359 1.0850613176777781653293402657565151 GT 1 -427.5353755829430872101003935506265870 0.2449784724637818255933855653284425 0.0988396156821577935240038721665086 1.1040720302031338901726833919704120 GT 1 -1825985.5505949613418336896481865402500753 0.6975632689520859219226836017663517 0.0810075980843622177568627744601198 1.0844774244346894075796338290300933 GT 1 -139661186108242456191474554196233.3761284198793089946977176768738372 0.2286671603725473973535621629390483 0.0892672425093556278952248274768493 1.0935057754816901534828541303216766 GT 1 -1848363212318676772018.2108989267338875164075116285353664 0.1395050234831405602857544301326187 0.0522487259411478213164649260583388 1.0536631802881504191476524311707051 GT 1 -125030910.2127848127615112002660638577769447 1.6559998676362136555164453946276409 0.0369844089391706744517546386312041 1.0376856772207505249422637957619681 GT 1 -748976563475123328.3642169926608642004579614550097143 0.3088921945982989524443306361554270 0.0555057445495851539529142229542401 1.0571056741655645572388843416995059 GT 1 -1597142505789970.9347958783638380598028937851282286 1.1745484756039746168154698241794508 0.0238291228451094260510816668461949 1.0241176288414511880607113644692539 GT 1 -41368377014761904.9897957151815699683642919026775996 0.0064795863373356491009064279860372 0.0303152845104197962586907532584766 1.0307842958979735733561284894374482 GT 1 -30954192042268.6136747021344889569429099035040969 2.8073532180712170367247969992276062 0.0223933390003543390210326925638003 1.0226478769631766872624839870796615 GT 1 -2921033869259154553887636296264825569669.3158302757573954269644279684814224 0.9794123953501621198304586217070866 0.0981794073441591109131687723154007 1.1033396781972743175897566367802379 GT 1 -197358346834304508804428835.8972446294421539773573452268334373 0.6395523284322139923048760757806764 0.0066718122368502934972000246216560 1.0066941682684251000401690811291530 GT 1 -31823626436189522553310966461644.9083743973469074721051659686326253 0.8305232871115078147494756514893149 0.0660150194146282342269605431214898 1.0682949216263042892955979031180667 GT 1 -96659261132580511.2199404495232270488843453557838778 1.3205847928433429811911138757317726 0.0867044766200951470735464454679910 1.0906957668842699820205384167876494 GT 1 -9222728254242571455308963746.6070113651577422790439069352232321 0.3435213410841999512320758279233025 0.0209465733359047848217214952792752 1.0211690652500640073795155005571769 GT 1 -99024364246099866663843882708.8260989013605357343932270059242570 0.8576420571380221864263860504238099 0.0677757361434328124198855184831654 1.0701818667869038889797389083065875 GT 1 -165209705136225326630383950812944.6484164859253135457209616954566506 0.5033071664479712210104147021648890 0.0498011514097919349473237639522921 1.0510840019852512197304238767360668 GT 1 -64833893729139395540.2344823793646605474312046246784835 2.8402790518370414814080544996128275 0.0777800728264082743366320426726726 1.0809715511437124619515028921161717 LT 1 -7507.1696147196838293874575930314175651 0.5845345312513029536071553926933365 0.0265066584050320528378112424451735 1.0268642938491869962443211592900968 GT 1 -673179762486587045707949513656834114540.6239186455200209423850107334977822 1.1804600245530938927397722770214893 0.0903206217999075967731531311130997 1.0946630732028696667681012179394223 GT 1 -55812379020025003061.6332484039730983341781196877580069 0.2430379913032552467289679561609124 0.0749280958122066557944942764408584 1.0778838102337887706768986495885879 GT 1 -3042.7683757756698701613019604792232368 2.7993169843501105037625487430321713 0.0034631503543232669951071983535787 1.0034691609405664475435925950706278 GT 1 -1390342953171903160084455.7351013697742700455610716687264465 0.6587218348828801139665070212196537 0.0859102599091476772728528673068921 1.0898265284408707320181363291622932 GT 1 -4225637530676708174115724807743.2023939671837740454780336090784029 0.5754056825486428772610214284351651 0.0738316768803096596684865562829220 1.0766992864276157109490284535221531 GT 1 -85040.4134367880596209822788952375689718 1.0613438729184267291527478439585045 0.0228810838859516522138901147600382 1.0231469187738844081303100520310465 GT 1 -1093161209163344796690055195.8369588865522035332900243250165106 0.9462263660980968381067381245475785 0.0501966688044597989115240497136619 1.0515003356132742200329144796766077 GT 1 -91694661305918779291090.7382521946543998822495595729703001 1.1700962003794792420372327741946479 0.0491483561175619320579094170564526 1.0503972287296509307732267442288106 GT 1 -393918.5965413044270516784097742428927946 0.3787050341879469531323723099197109 0.0470573398118048086691278129593633 1.0482005448314775554071432380216104 GT 1 -4116244159784288.7829760326059339292519964562422046 2.3661272966769857661274578390493550 0.0277490081230697758229038067716713 1.0281412857596778905966266458739674 GT 1 -88998345.9973993091874711957056963749671941 0.5194700853025206238854453431966908 0.0848777073875657376325900955745971 1.0886975695090558965799328658658243 GT 1 -3630621.7355545442616572570137204642137098 2.3851654783583315688508480448296690 0.0305769757374299509145260052891252 1.0310542048083802790566636582733378 GT 1 -40444186787697909117495092.5263378200936023041121707126550319 0.6832533082563236277655716945587804 0.0121165109386788359187427269780732 1.0121905142393870891061135242746857 GT 1 -6409054738687172948806188449.7896017184304151460841108931312498 1.5900134250426415097926348000237899 0.0730418596017923407029236283460363 1.0758468704248327635707741539826338 GT 1 -9000193690119965858279304546557457848.8973656055600547338221724973206888 1.8551291771191038512060510794953256 0.0485690342416119081679502900123718 1.0497881479433117088028009982377243 GT 1 -618717021.3661559692131595627664856755891247 0.2104829488825669659522193758591674 0.0541149350342133174149385203347260 1.0556342131193087874961226285518248 GT 1 -3033772267419544837865.1501504385964296279768796338698774 0.3619704101739598508605627354691178 0.0038247193629243858085329516057995 1.0038320523056305398445717822491664 GT 1 -890.4143247138345715980477310807903022 0.5721879537793387460504753374737409 0.0242096855790665956576430937592740 1.0245075574326767201506479901591043 GT 1 -113114347251882785903634870226720.5572868785883581595877192155811593 0.0460242476935303315278929660344531 0.0711595109538951931695701933486144 1.0738182566910329977745603784854479 GT 1 -72483.9717569862974481337002164860557450 4.2685698372954398838542471551588100 0.0169163893070151696111587160217539 1.0170611057959435751893588268466395 LT 1 -2179851808456163350016397758905488276983.1659278888512730394116379405104875 1.4868393667187265512545577385307961 0.0249196951489095364085644067877135 1.0252354474261773829082230041065768 GT 1 -27671256125249.2791106793538176336853935458641501 2.6347199665764758074502770746365735 0.0767345267081667629112393663757652 1.0830255561101183539365853348673590 LT 2 -1289220414053117800.2760413730385172216211385791514232 0.1520250179901916774316267296054504 0.0042498340933204815065046085943342 1.0042588903056049389093129211491254 GT 1 -4494012476202854858245281928203605.5736435199316751384061360251275986 1.6851728816314315279654529573647576 0.0770578946606232998527880794095125 1.0801887708892571495898081566731192 GT 1 -379556405842030404708399303670705.6810613751672066615277091335739737 0.4533420139075753831833075555994328 0.0519803008908328876632305227409314 1.0533799972919890444228071463448919 GT 1 -5137098251598481554791225.0213533299582714540315005618704707 1.6034485454776905984514519164294279 0.0745486388380586209645593821768782 1.0774737024695995160478082374782431 GT 1 -799278499489313794132706938263063.4360688922334523547937968375637034 2.0045969619608370651866745029012191 0.0599711349121228136408344167857728 1.0618446966492594564726699833617137 GT 1 -812874527418018706.3965653958703682595361548156984475 2.1667765316914554623900907071101248 0.0030951914748252309863352711840761 1.0030999914871552633784379067369478 GT 1 -464197174722623.2931827355362797618305693229905414 1.9575478414251980096213296714200611 0.0245665680682447452801330522649326 1.0248733611943671546944832447818615 GT 1 -148747024367216825736.4721417567757689213434941946896408 0.0701253168377291663108369600520967 0.0727535838347038656560459299356093 1.0755359276344154820547523389845322 GT 1 -13356994736.7640626601420335310878274674376406 0.3403237751712954632603035372548370 0.0218671244217607658637280421246685 1.0221097535766518878025788667079507 GT 1 -1205145.8509090999023873071221093287465889 0.8503299373900764061354472905355568 0.0160723172562324637032181334168989 1.0162028777772149579002352970317697 GT 1 -1051287642758666785.2108376932189229763929653392522649 0.8566068091487143068503478876519898 0.0156012582986680145022837852410847 1.0157242387052527286735651160408456 GT 1 -2639739767.2785064458377264753013271329222502 0.1010478463763113981514854475812485 0.0705826022040190905171594133783030 1.0731973431219359654133463403543436 GT 1 -1354589850126347151282617701137657631075.5482298374647370235657645130978690 0.1046609761124308605492109919554851 0.0667748392859729390237672444719801 1.0691087774387577800655546268182507 GT 1 -31872111043270440347.6388274202081754052314425766832110 0.5176780251518491326918557943706436 0.0175630034237243258615949576201201 1.0177190629169676311659421408264586 GT 1 -10801.4344204377749393324555496393325588 0.0528057501156254505195536131166149 0.0513139569555255576759901600644367 1.0526773643554062365832531636239200 GT 1 -13594221726124739962904653959261030418619991.3273151666539649214555430866866637 0.1288057205662093071265407310032987 0.0781674657898906003146496822447813 1.0813917051006020554994495757550135 GT 1 -476087655127940325775585321.5924331831944666726846067716808743 0.6556289893335199719898928237484818 0.0671506001082549304158702802785086 1.0695115060706070263497758739333716 GT 1 -11387.9287013451525929627805442826013142 1.7942748581743926173981167596898620 0.0508787138715811285255470157074428 1.0522186843989272832824969245144783 GT 1 -117535650758158150890729786782934460223045.8409217554211455330882645158944677 0.3066580719806333186688849861699072 0.0555557553931746530671563161333022 1.0571586254327441597832796594251603 GT 1 -389364813576959952873944310.5865707645961951070057036091019953 0.2203487800950294426186087599200655 0.0447065600592924771021231240343494 1.0457367187446089869474677707520859 GT 1 -9426529943822562435329435782119838837655495.8064864696468120882435562015102205 1.3603465986999958500619191769499691 0.0732876896333288032001767623937358 1.0761121063872188573198358133855289 GT 1 -215278073382685938613166145817230501.0398835532153073666724424459951895 0.7566736894758086853033981524888002 0.0618128610501765905935674097710448 1.0638058413997900952445942347660675 GT 1 -134634473269907060999.0985842213760804940198392230248218 0.2061510430759494461460003036990634 0.0467818607081040670654652166425437 1.0479115040478314141723688674108234 GT 1 -8346724745253257292386430550834793508723.0090584841217718959304982010191544 3.4968397384221240823095843902844322 0.0241102663775367636632610725980948 1.0244056767973589621857714331676033 GT 1 -5636249.6733448099110210772963740344255862 1.3031584440541056716210367551086124 0.0699721905263088194721963963962181 1.0725407906220280624576548106979106 GT 1 -14832386117271967290652.2442302680304595100090493821908485 0.1360734863508483386663187877207072 0.0979128481185665431022717556860830 1.1030441428758700895603690021345283 GT 1 -4522252186239094270287355310000874419466835.6892960229365822325587702377236439 2.1944950087396592378926185735842585 0.0537872698202563589949764190425376 1.0552878618703689367426333120177987 GT 1 -45118652107796831621272059750.0631656031550601168845256692174811 2.5869314853104981335762638403087830 0.0282532112140319068667479477827780 1.0286600138233447768195762437323282 GT 1 -13654819291723.6619720412070860132057830501997186 0.6649653841121507521770058804573410 0.0517548538995004085646058726780811 1.0531422172234883589242126723972782 GT 1 -28121394711436215547360559919781111213.9926074813547622217274926535662732 0.7663941060838361033031080768640000 0.0009913367686297459867228689579859 1.0009918284679107417722284951163226 GT 1 -5.9496272675979436534544035663736811 0.8515020332302033992291167684032506 0.0822372113645269065111205554345364 1.0858163219319484068806681101187497 GT 1 -9214670163892940437884301868979765257569440.5380806862420252401675994754531567 0.1111001402911318041702257784741768 0.0846256145466884231556523298567312 1.0884221329617058574716918590328508 GT 1 -34.6822813355099745517538331145758745 0.9896587336917066502143141274896802 0.0144666084452947609811170560183376 1.0145722701072541975341850861388351 GT 1 -296574721054027362417171092110869644845.3357171113627223574416217080055221 0.5678083287266631972041281797769353 0.0819631406494602189088149079068443 1.0855177373697348342289776062056420 GT 1 -5600824458231.6672482610255221301578858997999213 0.9860793527801513440532921546964157 0.0987680780631768986186654698622633 1.1039926494614715895375630771035551 GT 1 -78425745898456671480185.1079513320478626316019006551736673 0.1652872002370369596094696437827936 0.0036389347071482776771629223536564 1.0036455717360851045913990437493657 GT 1 -1354911.1877111930944501937573964355278252 0.0543900159864243353147295160258288 0.0013651412421040142742620952085435 1.0013660738963092394172640148226301 GT 1 -398267159039.6600203418610387460045752556776333 1.5877719207633290956345194269292615 0.0174789254734721574574028854026563 1.0176334855689926763072678553256122 GT 1 -101594888486.6632669939100771866161532574922541 0.2398374714919903545971373954726487 0.0195660235459094562406321008542223 1.0197599722227479380976277690537134 GT 1 -7558797835874498729030877879447659.0790092201129666328506841604725933 1.1461543364987908889440991790370939 0.0622675323899004586819691549598845 1.0642905864251494550144057748603944 GT 1 -35107724063080555883613145995300963685011.0447377527073355065805631583485233 0.3294920020944076559373356286119297 0.0038765633445520173350141341661836 1.0038840966915344650639702562086288 GT 1 -5986597661425522364088236046839945837581955.5171879400910780525148533611210201 0.9982291764626834879909297980458083 0.0204593458831465179031256725877231 1.0206715374901369105521460612112695 GT 1 -1411112178.0628701703157909535887750915915753 1.0368756985291622545533714860433434 0.0248277632177617075152914297422994 1.0251411704756251961830018153823103 GT 1 -23029539954997478114307085.5726645055188666444950333964169662 0.8108316497975484384096388910769016 0.0269497736925600801814849531336205 1.0273195780796445178783552299892855 GT 1 -150649871670889363775892772587063113236030.0500865900403743102932448560541032 1.0287617596888052319721507891418911 0.0538387345975126462728729772668242 1.0553422536316054792575903161342511 GT 1 -70572367477010819710803080641893539142.4698519111403817777904032127242886 0.6228669999133303705776282930425334 0.0124513790429817690604484956526810 1.0125295470067621141235901259280040 GT 1 -26025131075568681.8167506477740480023396908151165753 1.0195794347114370352387887173270368 0.0999321758691429634113280437003351 1.1052851583518626985146124281642820 GT 1 -329415152830775468.6145858059205510761966413284991643 0.1378584021276687490942395040648808 0.0431656574270419608833508293606550 1.0441250032725579109689333226567579 GT 1 -411.6661549165962716744026995634410501 0.6698471671424686471762051325913887 0.0908416402352485604602535670698559 1.0952359868154661428237246696236886 GT 1 -30947078392012704465025126622767628273742.4699325513714687485112950332981165 0.7801294734813993121990374398217378 0.0965028104530680508279725181130746 1.1014822795834335007002947157351438 GT 1 -101720259940479115371244265.2966459701225382707469616039096916 0.2669946293371780563393629920952913 0.0141735037254084899734483071154945 1.0142749071307062436807285201445595 GT 1 -2911868096.5720519844186913522513966981896581 0.6617684590698561771856524739644414 0.0617809162695582334817913868322500 1.0637717925033034770315752899184751 GT 1 -8527713.5380468461299997420675076193246294 0.1830743868900237820950475662431038 0.0323524598924418806080813879431462 1.0328873694693668954700991316479785 GT 1 -1735735766756083629882972.8044530151682600007358747631010710 0.3518859956241313172350283875332711 0.0909789226423988659170198536014777 1.0953869976613796451014038975135006 GT 1 -2046425744477550.7980666746505649619349065488928434 3.0922624481346910661651001340161117 0.0209710405405291326418627332310311 1.0211940562359377521380868725276698 GT 1 -166474254059871717115.0595189675096850245314344268686833 0.8727301832664436880327761421625782 0.0576653319651776153483893122101214 1.0593947935782936521286915211555565 GT 1 -21841.3985798123168040612843058828421294 0.0736334701563658485865123525996507 0.0167722203551425250792591472479275 1.0169144668120680734029513265958571 GT 1 -1366049262851991361671957.3640328397154324489102094454024127 3.3527193759219195085866543085992142 0.0017604834442284695030771920029653 1.0017620349163685709117334258994391 GT 1 -17959335510505489518754307963138.7985587780631629468323362682962277 3.3761602347928326474188203607067894 0.0496764397692293449090055353235371 1.0509527626584611112069225538236953 LT 1 -132010657.1988506396633685767019726865552292 0.0297167302285365581449871419578075 0.0468213831689652729813673344285118 1.0479529670441777209688775104720211 GT 1 -1496529648611937123743257.8909137343647565143066482125076663 0.0768999118451659692242387443199129 0.0404275960700886402613561358753383 1.0412675063189095543387021818194548 GT 1 -7715410.8931149298616839401152662278864465 0.3346686741548496639063699702793335 0.0632224535615542471824105422250457 1.0653094353479100948692358510601125 GT 1 -265854267091075626506048890045.0278709064701849587811365695590212 0.2960266783497076547698480055988314 0.0785811840809935214701113245541172 1.0818406056784004822202780380813792 GT 1 -544592503279073260709009666481877256237.8772413742582988963545805560208498 1.4924891567624210620103202662093059 0.0856571540885182234955377832527635 1.0895496729262799167993381793941454 GT 1 -54850390908016341.0824577235850741316576700093248972 1.5066960776431821946215611914546608 0.0055589513383785354226823689464187 1.0055744598089624041881626623166812 GT 1 -645776474822950016467526460280654840842581.3207576951320215158242311094935642 1.8672907969472202041474387070066805 0.0880455701398836996539475654045114 1.0921652574148551251399648587803392 GT 1 -1131913458116327046.4836284229951259439081969876204097 2.3225301726270102470646054505680871 0.0122198231155172500373507639719460 1.0122950990214158911780489914052766 GT 1 -436.2382493466997774065619949147779101 0.1649449314374018838029304917731634 0.0891745250679627152364917186673891 1.0934039753417630655583021620187544 GT 1 -987814958565362734618040824987543.5749165680924484012977725563118639 0.1847540607971330091988524680169068 0.0817272362921979903212980241025854 1.0852608042734881399828806655946507 GT 1 -139818707160721767901545589.4520790273394655893126540845572385 0.1270154989389047204403655727581642 0.0549115807447712313388652822282080 1.0564767905159101550866209307161575 GT 1 -3981987085.2870396850682339998698754789817635 0.1536106160147184080329629319539575 0.0473061301748256553082445972929724 1.0484616548181050813174183146359570 GT 1 -76574157518841277.0221082914643522401548966875750592 1.1825669795373110703561306666061456 0.0602153267604015162262243655305308 1.0621045009805651150936116009263341 GT 1 -383143012832415633652373527226186092541870.7258428005194041410870316605608173 0.3148709864466716095722376956592575 0.0422688485202597957371104587278809 1.0431881755953036907763601788883248 GT 1 -15046915.8209913911998797746706333635423818 1.4744489479090078575419299255337012 0.0100266400645362173191259656937429 1.0100772453716564664546844038358765 GT 1 -22800467513797569684.4099670307448220839418712478420424 0.3746017657924940223372920156058738 0.0665558520618993153321403988384842 1.0688741486011128679631320926075198 GT 1 -2041552618269.0613017614759655684739851567981341 0.6957302831660439124364126316988004 0.0973265203974171787679495048058509 1.1023943860809255810516575730680736 GT 1 -4971758.5992481794477612611529106331978962 0.4610256861528300303994610910930824 0.0333218200763270972772909016267777 1.0338896414807394815317664958119779 GT 1 -31689.2992139370972729170997858294358646 0.2572623494403127323016953848304841 0.0030634188052199197204409347385978 1.0030681206775995811996705507549309 GT 1 -46275206073858282176855.6256727833202341207301232361000256 0.7462169758749671817862046114191197 0.0580494756454586818872662962582383 1.0598025277017209579451011346391643 GT 1 -1152355589607011702627116411.1884790739072585584735232764651247 1.0167557044223457575762156614914100 0.0373258899971227642220535233376888 1.0380403356699729812467479079029481 GT 1 -5755926361.5828477401281014816472485704746475 0.0043599125390763615250195181370445 0.0488931307411996545830550534086694 1.0501288470839622296643362889954365 GT 1 -1729629456787221495788.6296375550848709648290273210040318 0.5796448156529319231129545315843501 0.0550323248495319404610230220148501 1.0566045582634202455228501192619423 GT 1 -2.3120317145502626241637411732164441 1.1375297948549730423465025320867184 0.0453288064447309286560792081217794 1.0463882977283667392888296181843577 GT 1 -576205.8840121762101492720618638471760029 5.7291607665710670650311266377163847 0.0073138367240490108467501592040513 1.0073407139585182237797442093564190 LT 1 -440853045680279951.9537680087503198878451826946158658 1.3262718611808719420767946460175524 0.0973935206148750754063971525308680 1.1024686130363128536007950483300639 GT 1 -89992848475.5891083560515173487667507494550872 0.0844419008776449631664424469122237 0.0313343218261103499856847473583945 1.0318357439879621428255960220089201 GT 1 -326670631271763634095837843384.6580854844906954665055940559906010 0.1372537669757378535409363348707782 0.0302374011973790603178925484399935 1.0307039809417397404890287362885687 GT 1 -4109.4205314972583844358089267920528403 1.3741444771842535309732596763984394 0.0255750161252351496288356770386355 1.0259077420896471949840738435194579 GT 1 -109.3057446327509677630602770924840334 3.2296976859059604293857384583996012 0.0903870117450774306591607602759475 1.0947360575636282051618649731548833 LT 1 -14213.7492447903115914645658071714703186 0.1734739367824400248211543784537940 0.0146844046793528230677527988776722 1.0147932877868380137672432470870723 GT 1 -149.5744992040058090639144802830193552 1.6478682524447606654454961200653267 0.0038665362784011593985778797316717 1.0038740306542186501016837434536653 GT 1 -12754717762546472929774.1110417807494698540575788045893162 0.5453914202852711846364657244726152 0.0571855893382312375443040413186333 1.0588858230754042372078990387779539 GT 1 -2303367241.8056331901545972355983588911595746 1.0561465836291461883765312319583000 0.0105828669640778942796749779025638 1.0106392637466641435969433989634343 GT 1 -83960116430175058454.0056335201790791910292864272525459 0.9531573507311884095592796032985726 0.0837471022462967458198008790349757 1.0874628631628626940744872435957221 GT 1 -13460527494243850887177947530961686019638016.9881618253282064716594320756168647 0.1201053502684868171629400166399741 0.0808415104542909106346754535661910 1.0842967127952970012543668774902866 GT 1 -2036738044401244968.1197655181286950054987211938072328 0.4512549433048289270842563820007322 0.0558884409233093400900434276921124 1.0575109428309667489708834246550398 GT 1 -1072296681149181496279851823809833546025194.1992589885662821985498993849898380 2.1721382291798623819444367467616499 0.0524498890345167426406128800235762 1.0538754558615381537179602726617907 GT 1 -1801547480871555907.0435133976921669832249717055282921 0.3545515712634759441497274150245059 0.0572083888444087106150052690638668 1.0589100057582285207768093873872144 GT 1 -37729936084220218900655270120135578.4550179020616929408297042405443047 0.4750272719452304791311164551455498 0.0439962929369154967766137551929408 1.0449934882572032163972361601399028 GT 1 -3256326074291221794087831862741807711.9411085622365687067047443318697532 0.3426981919655870407342892478574163 0.0614250218253076203352400190579847 1.0633925346446599670990322883002702 GT 1 -962094656164301504929.9687198201445595883286702925426101 0.6481330397953856623941511459302773 0.0221885179594830223665540829847975 1.0224383861774341095116325973802325 GT 1 -973708920897901835020041162513596.5669796037763932732020160893408865 0.1667244454208623638481001506292187 0.0907348391667276485162808704475624 1.0951185212553983834964098212531580 GT 1 -18607316998512130936818214.2545527582738539423385621885480337 0.2123347297009033315415554793450974 0.0261782719865340642403931691887563 1.0265270228787765460732355356942861 GT 1 -592801076832986467594826.8386116415387653720414792729287636 0.2010140951080211845614055685247139 0.0233743161818884830957688187722538 1.0236518284805394368247774908075277 GT 1 -131100792624.3792719859502650343782215940404501 0.0443148102171285875065883663864892 0.0528614526883471891667518519361924 1.0543098952175828696894185457013942 GT 1 -151467755737877864460418715396.7008974320776973077547459820744974 1.0119755338834156803510007049886604 0.0095655767307307318175020956936434 1.0096116207199602341124901261976113 GT 1 -2859730930010708.9910867015378158790772047840664103 2.5665918114158297086498453147964624 0.0971348531326137333456077066947527 1.1021820757346239485694688397587109 LT 1 -42744066734724399337313437731.5051374568633418354609843732655731 0.0649587808735014654909472292086625 0.0883707858103735130484738193574545 1.0925219349656752069314021903057708 GT 1 -326935400705843702.5226425973165218017033176914435435 1.6697509642332875367046882598577348 0.0883444362833378431969962216094154 1.0924930316069055890858878456854332 GT 1 -35039013902638691940472.8990457205147681411608797732149737 0.6619860339140269803922307052692962 0.0746947018534770293878273011278568 1.0776315438746130038397034065780420 GT 1 -530581.5186341148121507236039825994261529 0.0938342122173431789740311305140754 0.0770285251526119854618545307692160 1.0801569497809137989590115036937059 GT 1 -87511404.3247693964814855739301940812941049 0.5429407650578386889977562351204605 0.0655834483673307318428243395521946 1.0678329534170827222903227521777735 GT 1 -1407266086886998204.2663404095490848824252532329470725 0.7452939121720187847863722372496371 0.0561248473638828765486580445570976 1.0577613751463452940846261813580724 GT 1 -2964728883725665784792740703178063.4358087739850099016942442539190287 5.2745812512323407143557596013290916 0.0663079789151091106868805255514474 1.0686086370092335368887019314394723 LT 1 -343932857474374808666.9525238416420544228658788489273752 0.0532665931273422475037283480085191 0.0947745850652356432539656211021053 1.0995712890208230078199086153498455 GT 1 -6313191556053814229645312759239.3752026741624328540942056274719000 0.7828034622916340755923143961060002 0.0840425269284489966790511518556120 1.0877853421635457378497634416320965 GT 1 -1370978312239869194048.3959404449912748236005875266514035 2.1786928645523572385339929715923899 0.0605808092544678628173552608960076 1.0624934768715570377725119347138382 GT 1 -4005816685199317332177740903951266187259710.0929072624838164310202954452106883 1.8051568837157062711553188021722534 0.0856550644490344503476103526269721 1.0895473875285155122922706967954043 GT 1 -10383.5895329972395587922006795938002388 0.9644421353421774458484465512693548 0.0509258920895930377754493536269775 1.0522683928938164651564266442347747 GT 1 -6215.3676333070507863047183431385508254 1.2376569152435666087954875987048679 0.0434193717250893835720480935998596 1.0443901985421673501230296677678285 GT 1 -2719406226883026390519244393459537895585321.9441019616487999898023875533112029 0.5048115574123797205799305302487532 0.0532922693960208190733193044563978 1.0547648600371976098809001569448839 GT 1 -1089107675866542056.7077148820036420794351578892255659 0.5084065175548388633218557259099828 0.0304725919252072856522308380812980 1.0309465343794898657901686010383578 GT 1 -6310100580214615.8554025560242011041441895327519627 0.0220340720430554188192622807012342 0.0951470050740756459793488487912183 1.0999827850223954370570786017892898 GT 1 -585093182430474392497283492029598088764.7852830082127753394392562524946602 0.1179477452700533199247751971914478 0.0739626435596650669643975678534535 1.0768407034214398326633898761505863 GT 1 -48567.6797675885760826512978723172229140 0.4282535744696287308938676430614190 0.0313718560974898708178740680533195 1.0318744931657652165090331734577414 GT 1 -4248739057975432707041351.4058936991166273929098873476754820 0.7925444947517767701431194955150686 0.0169219353880717106656592885943098 1.0170667473269796184746812201787132 GT 1 -68.7882387871672221584552203677012269 3.5471859983955191614414230705247955 0.0710467756181404156075207808630390 1.0736968919398463468586507957061106 LT 1 -16588846472846034154644327924246068116913.3941892013416453913485708625934360 0.5045708850869698323716044652301926 0.0893301402879510287691205955979971 1.0935748406933312798661572802040365 GT 1 -1008290311116419568771426579308815.2834938095543780614157697157268651 0.7029999182898499384887341139664354 0.0241226300539071648816366233880090 1.0244183460101435830492641616106967 GT 1 -1405599729746468787577460725461091.2922734838231683825435885997574943 2.1262097560923034538625285137454527 0.0868483260699690853529869697656856 1.0908532852076939917176493996647675 GT 1 -6539747045147521354717394242959.5388943654316796195339966624941346 0.2042989750314916518227536763729263 0.0320856633683876642860036873681712 1.0326116908367691410243859201319180 GT 1 -7880026715332946045.4544422828422446459937271360140704 5.7324381885167642308760260894487405 0.0417007297461455755818666997123345 1.0425951591334363273005368204637612 LT 1 -478694.0814373733163915423177018985617470 1.1012799204545711321316283303948498 0.0101410815532170183487820647539944 1.0101928526279456432365795023626006 GT 1 -273706432190842805140843.6988996407688803213093625436116219 3.0754493854071841933603958374842945 0.0854722112605334188166906146590127 1.0893474248010039424934731698424623 LT 1 -2291225173879215160277919701218460867091785.3811009836386797860395514759965006 2.4809124948725103309747137341347950 0.0951437430044130503718340014463330 1.1049770981578123412177429418482430 LT 2 -1836852099605038342380784487.5551398154308087818484320612521750 0.3069343619794433213238417599581793 0.0834700503931318253085416235282932 1.0871605339963995882331636629819039 GT 1 -108027075269415023144523087000039807.1964417966069854902591089713716291 1.0431435706354540735543369222630586 0.0112024214400123938010146676277208 1.0112656411490356573499691178225383 GT 1 -36850338846.9387640037057300284440196979748782 0.4907201288474448466953275566081943 0.0520120923665359180009231216984435 1.0534135324693722490932693437834099 GT 1 -314115351463534291641351.3762388320090358984663424345194489 0.4205675055756134394565977565048274 0.0163306552380464306745084599018920 1.0164654701471840522103720133495913 GT 1 -36130443816410629599609270826936.6884736029298364257363961915749637 1.2298588204615553889854173102644650 0.0109446100619677539571268767657685 1.0110049429236255350004872566396146 GT 1 -1418314610.8558550428340438436808490054103539 0.1624070579928410937542285714968745 0.0913350390502388843989721236251563 1.0957788325601369514703651379083580 GT 1 -543553283268737080104.7342348004121240257100895024038959 0.9185374464290436490994917108511898 0.0052361401149282805859488218512095 1.0052498967386652610579876559918540 GT 1 -110592187332035470172265798866448782596.0524917757329100491572433588957698 0.0734039212103561613436026393220806 0.0918486274619627672054133346867722 1.0963442044317321871119680650335661 GT 1 -5012177901841482.7828299511078086043639971350303936 0.2865115695775195928932549184924938 0.0537685364276181313857632307390211 1.0552680637778273574348669138384482 GT 1 -1297404352547598.1504105180742811348492409833162536 0.8070649688127555467091689934771668 0.0895583933286942166234144901163403 1.0938255151261178998916807138744894 GT 1 -2987027063606575791639577184997.2394579263451913970320142501765907 0.1927535120517537184323098384920894 0.0938324749990577718358580698811935 1.0985310838501433239554453781533409 GT 1 -4.0374338118474392610929299285523545 2.5853550706805863072861195208122372 0.0580922514164728827090307462501495 1.0598479406413630034767851081269223 GT 1 -18390355928.2637619506613401885035763396687272 0.3272169732760953381875258776200973 0.0717069203420307846509881647335922 1.0744077774591824067923566562149658 GT 1 -129510787805134354672224240684871878022207.5381232634254032517876248609836541 0.4621757248400102155158029315280932 0.0104649384016694813280070866159753 1.0105200809156005545731697760960631 GT 1 -9.6976232728240351944922444170746979 2.7496290138217020289337258514087237 0.0114469971994050606790067819634695 1.0115130183849647791296290017895624 GT 1 -74626140268417.1851804865720508210349565279753817 0.2005177040987824160620481680870866 0.0287858244577768580295371268393401 1.0292082628791564075770887986298654 GT 1 -8451207994389384.8820431700614481348896326348294894 0.6706501808831278264188208360913789 0.0004350838091635873766948355789267 1.0004351784855865339147470021707017 GT 1 -53414865149259601632754819133772668908.1723639353363370546179785630448034 1.4861162455509107460613732791922659 0.0159121420127917449313572817750276 1.0160400993433262670743816915090964 GT 1 -32792856893250531125411995628.7136274800543181211415077083269501 0.5051648590927821070616323229932546 0.0563444756313366961981150415917360 1.0579940900591365631214660571279965 GT 1 -13239337862043879022771904187.4253589394019461951549873023400302 1.8284259548956444282536949131691848 0.0259602187269278900058433835628023 1.0263031329774899807829789099384526 GT 1 -1046097733535918644410325432527803949639.3132588932500475521529297362629791 0.1096091538145096316449108052702521 0.0701873986117827795702402920638865 1.0727722170231080762888487937038477 GT 1 -76439181642171638894935020970318177798321.7389023782206703762549293632867753 0.0423230332221909199466598575264361 0.0280805758042627191844347211816534 1.0284823748758031390547586517809513 GT 1 -596.7934747261882653321259809223988220 1.8666636212963824634486652443097814 0.0369790369723755929012715427370467 1.0376800989602718312741729462342073 GT 1 -451242092300320939177072547492362713780930.4337347471280459340622112733754857 0.5272758186044997203542893039084636 0.0552461860298053374591576059490725 1.0568308997453980258401005196226666 GT 1 -216427254657421386917.1564002519748704796261924524639004 0.6334290093173504955230472973243668 0.0152286906613370051192419090381414 1.0153458380266726188010288992097708 GT 1 -4669054853798555523403772595.9736912362307292249241601685239698 0.3994933748747463682324203615602699 0.0033136620633911111269246705521076 1.0033191644001451434137882625213187 GT 1 -663491292225986674030471.7482542319110765773639694614090643 2.7600705754025749452510633750435322 0.0389236429964535312663025195838663 1.0397014173893632399013660590661013 GT 1 -736979252103096320947973628419.2688332992454354701567357090362118 0.2859832423680748517447047967104730 0.0724482351139675709918723478468606 1.0752066748600551761344109704214340 GT 1 -2116427222939317061398072533055848574749664.7269461278507999414372796592826278 0.0463439715488301439330222619280429 0.0824524119087846030242258196947041 1.0860508332690746832276311081052781 GT 1 -218806.2666335907620652960889031202633377 0.6444033497207996736640466712832874 0.0640555225005775758625969195432883 1.0661991231748546559541137270453784 GT 1 -10968.5648878609555346629493926828303332 2.3011310026591613088077750783730467 0.0325843390589423935314915761006535 1.0331270300318588398067263549024497 GT 1 -2437132479921597014855202112986883244888145.2231493700727998010153295395418564 3.1994995925859125489814731180454767 0.0123449945910178490250765170660824 1.0124218270222028336184693236148411 GT 1 -9530478619170.5331910990842573033975814344329041 0.5152540838501449059674663325735333 0.0695077822550983175437960169371882 1.0720415664545248025452732141001540 GT 1 -1.3530388636850069451841510343053028 0.6612285177370115024896772362552639 0.0825461374909781693985911951571463 1.0861529864115088895711432103468227 GT 1 -198434747941623604.3099526351522657743531304223179074 4.6248689065271156618588981861418134 0.0960766751161682296147872853392905 1.1010107397935579225796697077982547 LT 1 -14855521208052482673526733048089996.7554370008237149043975931207557979 0.7756470745066868312826123836271058 0.0862680044909338629249027602150377 1.0902179720695206697940732623522294 GT 1 -143116573916729571117914193883581517303757.5882500676503322321563768987673015 0.4462435476973088176280564741644527 0.0608726644796267859288539284857359 1.0628042013848191843794171505160166 GT 1 -143545334717.6923142153426040842898004219098195 0.4840953755870222375491798255779833 0.0754176561805218509415678124646160 1.0784131636308082095466445660884221 GT 1 -962285712.0473789701045715326433842322739549 0.9656706106879574505556088133416107 0.0480613063084099873104915475133924 1.0492546436471558166924523555681851 GT 1 -87069776941482.7813825413356676886117541404543021 0.9265802305337825032798253892313923 0.0054131738782847070531574388496535 1.0054278781926834222720836452596653 GT 1 -33684969613797850.7241566140401794970342831780030510 2.0758562012809254685620821114135856 0.0627675380908951492510589470384093 1.0648239358280906692251146904928496 GT 1 -1590858180401694021.9525797802974248526167017292180133 0.3334328744016114714084143035754776 0.0042342834089269962902473524758898 1.0042432733732666462786316786462444 GT 1 -44300125600.8941058148666730889250835078177170 1.7191407010690237019675144309916563 0.0311554538993428447896131854684536 1.0316511071018857108978207101456822 GT 1 -338355160225060746023933896309.7555339522054159592406455426570272 0.8936010675724631091400075874166186 0.0125721168025311621430329364640381 1.0126518145471058359093250739289647 GT 1 -9135016397072838409840266488000963311206817.0336134233327849958937883862476515 0.9363369747634351408419038067540095 0.0352966502779092030318483857760801 1.0359346345175860292390626182783335 GT 1 -532791025734294.8272495264277074842577826204627236 0.1208255566112747632613145758253653 0.0215959785085967516044354435574658 1.0218325843443149302177454139480854 GT 1 -1983749725982395773324537117851654.6195219204998141082117099917307276 0.7392019360298192101757056123152399 0.0466761538052931596249546163540895 1.0478006154298792163439309135126776 GT 1 -167507764258864642108162766.8377320361176379721863125090878918 0.2147104655276110577380301163562975 0.0667847559524576905064911550308031 1.0691194037265937547835861550699991 GT 1 -299655608106944035682743427809914434748017.2687075581916956474650711619435574 0.3415391420437446048142198688132097 0.0105249434534763126133889793756551 1.0105807223961822396967990069104125 GT 1 -83.2636493529207460112418881303017825 1.5440702767068865789829331389675300 0.0859682848358531717574227729008787 1.0898900088256757845937107884069315 GT 1 -955485968289805635567207670190639455932.7001571224000686515919260522951375 0.5367952256241815355279799322767309 0.0112375411377752987540830835838949 1.0113011593604699622647215275886968 GT 1 -3208790060555013444756119714820117375.4176228523754226681480135337696673 1.3969906569351974814276745186089426 0.0041288774431502146325531834076817 1.0041374247930402526051769719028288 GT 1 -383368871477951810349891.9788606324820773953226281759128233 1.7930342047305557785851526046962941 0.0965882773760249756677776573066941 1.1015768797289582455812544654023869 GT 1 -721645942301002907671596926651574920813.5018144099145271122374442451941899 0.0202056689538723251475708295082586 0.0143384237223522784240499925965618 1.0144422122233665068432772098561156 GT 1 -111.7484590741571478776302361479332645 0.2558552085812739117784755730718076 0.0037320395558306597764832597828498 1.0037390209908611663636467385083322 GT 1 -568036028659197037458900661693626871.2932520573880912070945026623092039 1.9201299070164496277331449587351829 0.0681537173789500021055130068780429 1.0705874107094897030958843667852586 GT 1 -3100553340329.0478962946431516017442206338289113 0.8284093167981557940971694919500819 0.0134291916469045857183290505817213 1.0135201787480538033651090307954909 GT 1 -14217634817681645253511206702341797459749.4421097847691381532182061997178809 0.9326686918497042586326281402838835 0.0963240944161222254054572211884130 1.1012844943928394713854172311178733 GT 1 -59181626277826098769601.2166060365881589679374231882173683 0.3052306298735554057873013886055467 0.0665742383451586856741231796697546 1.0688938460456594714451582838145338 GT 1 -166905382419653779891843246040442396.7171328762344301045712623443921393 0.8292545100744576855959001844218558 0.0278474712546049406303472792341180 1.0282425642551908125466990651961025 GT 1 -309672031900728378.7058406359434468929190594369506937 1.3275990901309599403865513368751560 0.0580772789241001722014999355299511 1.0598320448454151519552791383539351 GT 1 -94.4990453535914859149419288566778422 0.2911746150974251202508681628594548 0.0692882926014294795045140681170334 1.0718057087371396265188423347315878 GT 1 -1323515764.3128550097559948248813359751764744 0.4956579391383071276815869950546446 0.0362684440506869762886429485189947 1.0369424920835119085424436498187124 GT 1 -38721086188933340633558844759235145490350.5401947891707173186553070906564814 0.8234551202036990863725392193376923 0.0960586153118101534262131856487935 1.1009907606388534178924844163939515 GT 1 -1159685159789455033102997879084335989948757.8584802017306937065375272311208681 0.0474230034375265167439535129933918 0.0307485436750354269111813919426660 1.0312311999045362637341889023690699 GT 1 -37463579699308266312258650035.0906465422122408721529054094782238 0.0010577071079251842962351949249821 0.0867277107799512013963136630975970 1.0907212071221818016860498235452563 GT 1 -64405196962868908009987303794615965.9586578794311762297308550022750613 2.2679471869206594683257632034925975 0.0893980943716330980390271528560725 1.0936494633663521858596327724907811 GT 1 -7103833733212921278012072270459.7909375542106561557677241299679203 0.2271511295020547089958343314143677 0.0123663640959170990651416966241025 1.0124434638649944556389404111587703 GT 1 -48027388932249106.7659180685731253276394623842629719 0.6614974332006907299476957165848158 0.0226705214650002027316036422994286 1.0229314488516878563320143452825228 GT 1 -13525.4518243132689826725280633270724725 0.4681222957946263505144286223803022 0.0077343364976207863209658100666166 1.0077644016008975707721684044296410 GT 1 -70027065630271475447932450592131608344281.4979623570666959210339579305892134 0.6872305174595563935507610750727529 0.0916857159052664094901357157659600 1.0961648324116355908832340553903473 GT 1 -398837004515449712946994075610.8976266611119188004256942216881954 3.3824031309522671608279099703623616 0.0869638224265773120828045035160795 1.0909797742287080474262379562904042 LT 1 -7806564556.8483451006120701740130159690737868 0.7343142204788958867749674974308548 0.0569545494649678977252022054802093 1.0586407996999423733967264613959246 GT 1 -18370870999865145493034888472675691531650.0594619870259196550358053820690245 0.2243303848385467037820234958428567 0.0347411276473607611467169592290720 1.0353589521135093256790406351536700 GT 1 -67790025246504530845984.7512190245911981071015258504736984 1.2313834318587729151225555236060856 0.0022689072399980109888492417968355 1.0022714851100667328640510693315493 GT 1 -29833965574894192046613.8994199429389610394277319477656132 0.9699899657232388573129677084739853 0.0092465008526294768923732164182189 1.0092895151011547458138024232102981 GT 1 -36287910696432453765398432277872284657.5076852711653351770388060878563137 1.7263179052291297757065873947676606 0.0469266037940691951722830678211859 1.0480633623376553658400838706147867 GT 1 -199698575539.0217180604973514873428125933407675 0.8617457067957692603991753769610281 0.0344434031421666692386464543795682 1.0350505596106509887836324267968867 GT 1 -16230507499102440.5481200878493164754865438812185301 0.0624040796346182123935475458570121 0.0489470336490019621322461495295282 1.0501855225607624805185586820932355 GT 1 -46185622337953241153927.3934760405244096881137523877384623 1.3182925666024062219325490162348921 0.0509521775638897664741451532760749 1.0522960891907488865029437288370306 GT 1 -134610218371548137458716904606463487618.4008759728173115294867456418525864 1.3783834677204794504452103384060558 0.0738803607276871058527267795091045 1.0767518526034772516478021678349482 GT 1 -40598293490557366992554549558057716206494.8032483990878559443786077018378183 0.1116183253111520443521020501423371 0.0822109959935537202592171534931112 1.0857877579098597282884535176347133 GT 1 -440988253411140509720032503953410530.0746411682867775110644318185929705 1.3996088746610054406084298872972795 0.0020958475463928122260279805552863 1.0020980469084173233190823860063087 GT 1 -217621919247340174968750583514.6518118398515959677428953414281864 2.2790671708590866198144497422103403 0.0458944718337964282152136672680836 1.0469809971249885147384605369812492 GT 1 -47.1098656757760147394330612840018955 0.4402014308249416511021063942138590 0.0938490397345509614425939714504361 1.0985493640096498535683367319612932 GT 1 -138781964334370850502718130992025537.5849570059369040962813766060069594 0.0134168004726194325199991263717242 0.0798865741141470861264856753789535 1.0832583275321541264333423608719052 GT 1 -165874.7576807763977042873696926684995288 0.1258821026676643205811695215825140 0.0584569675892234032343813411410714 1.0602352257044923099389956425688272 GT 1 -770240350.9248851710472669402816559921484677 1.8666128908040693992645852310031341 0.0387142223097169542704016559655557 1.0394835388910454581046088702284591 GT 1 -2482170620757172873994183698145756256.7528458561990717655478843474112624 0.9272943200801152597335832209594715 0.0385656030151581219412460070391371 1.0393289461460247941655754612419502 GT 1 -25666587193.4798240475935206442798866890107735 1.9776874781750800492129462117856213 0.0594772897553190413697299908955067 1.0613194835419628307362069002217290 GT 1 -3619237024941685023084.4188159387700659299780263618969518 1.0161032438676303948902798098639013 0.0128422844507552152353062075383278 1.0129254594577963742600248455057336 GT 1 -263034627075623267970503134.5693655425515909693910337488258026 2.0642457325983915244048862439287900 0.0558965818595745197716200769453566 1.0575195657222831057311524764333125 GT 1 -214347923396.7134286770705889525802726624403233 0.3435897668644751255747589268982057 0.0477293724937702244034708955445652 1.0489060119979913102806351488514851 GT 1 -298580051601488241944170299.3464100493192681258887820341358530 0.3330684620304772360387132539059559 0.0067396818931074458981258770432517 1.0067624961139582982385841094617982 GT 1 -4758255053938225730728301675787265539903485.9473379858642249415210739828883774 0.5984780700987800014763610066168613 0.0426879223211392905164297231842481 1.0436258407103132481446181208853951 GT 1 -2680726513171235901929836831.3586661837709127570213440022562450 0.2729371484921816226551832117497471 0.0550443301488464820103382082657036 1.0566172627991321875594475029323674 GT 1 -114225410830482.7377626420954966017713933830363095 0.9255302885035824950315875737929673 0.0275040029697615251564381283620605 1.0278893196622863247007488705694467 GT 1 -93894.4430566503379894181498309397059075 0.0784211138203529140875683798245004 0.0393443118608494232894823317190768 1.0401392191861104065055381668743299 GT 1 -382213820276392346267092564412819.0071807518018031470285143068708978 0.6135439481585975278974123827115159 0.0407407643429025506033029574868046 1.0415939219034075379203735169962354 GT 1 -7085969527497070719889516761215461862.2642581141091285327212322508295613 0.4268327873706804462505256532215119 0.0043272896771192607368387477968105 1.0043366794931877258948441886740584 GT 1 -19728660925408.4173668915578917988446644807846464 1.4904139661293157701747090267147212 0.0505445383194130625781352390150480 1.0518666569594205865768092273471921 GT 1 -3007558099279321194167359390422398141061880.5311075557718559307602791808789870 3.0685813907881507480182475888540527 0.0527199955274667810377534977861313 1.0541605542379877439960028316175214 LT 1 -705452059402.4678561770028095749493562398418540 0.9356319534923431811152538525444552 0.0360141383753780316575117816070639 1.0366786508436436460176433974595562 GT 1 -190140245097174.8722126100048784559051707498488691 0.4587535979717243267414516065652332 0.0409885974165128324496294706633709 1.0418523140927562777512715710295414 GT 1 -381744023100588617063.7241709366695498294058208754407227 0.9167598060930864271104567851866889 0.0350203233487025817684136923189076 1.0356482383299026005801533934492679 GT 1 -141.0034458437147674782406528276031846 0.0181140852372933052139637048366696 0.0522981257394851292723100280799959 1.0537153048140373226063220969905332 GT 1 -1994405781047878519510976387079226110623.8628845572468062920476782124914014 0.0296260125193331827533525988627285 0.0887049473714860186430828129886756 1.0928885564111603759586640842414811 GT 1 -250210047299133232046.2080242965311753899780064411097977 0.7188734882441867741247309433858710 0.0297790288072333129774745197593531 1.0302314280750403378669058482778691 GT 1 -1301729895236.7480043939332421283311694205947839 0.3012934522053124008060191929807956 0.0902191239972704178354192271072464 1.0945515040685530356575171855424339 GT 1 -12897091691545431260896537.6273241040963006900161258115977851 0.4704135735744796513086545027504863 0.0981705754539606748118793032465459 1.1033298848447787950086260514648252 GT 1 -1277557790129247.6297606210220278298594434990743756 0.9816421413030303213835509951071841 0.0632704757323515602641550948664766 1.0653606998150249495234327411700763 GT 1 -267382356025856988498236.6068737633042170469902954363567867 0.9496861575558592963465608240718226 0.0948814543409813572821060167921288 1.0996893541821361126065518737252027 GT 1 -42909632191082983359.4735149866970647023330386224899530 0.2090095374318172936301402022034987 0.0235162294958804327250540619236900 1.0237971488709841601791378222946642 GT 1 -331291163436.3077721279636947520029779416580093 4.8092386075672538747846476918812493 0.0781384211815379383477713113538548 1.0813601981297332771644217294101909 LT 1 -1014670157060792974.4092591161521925414737663182228497 0.4153691254345160475181981713998743 0.0012166537055797637781307883214093 1.0012173944295634209444715010444300 GT 1 -100574677365434486.5198545585098270934087161519138073 1.5467124894758971800678720262049934 0.0662875154011146088485021765362220 1.0685867204786339409033066435984586 GT 1 -3971792695540769.6668666637338298246405088679986021 0.2152425682541999914163582861982527 0.0910314633996096345182777883687740 1.0954447986045995667814211172446163 GT 1 -52445214698207530719998510983149.8838556345551685848720670368253499 0.3170836180166777077205313731969247 0.0871110735818395803694892026087295 1.0911410635995147552037892956697305 GT 1 -212647205113144219100012039927147772.1635336534994479064138903463325911 1.3110947560306581575135437461366514 0.0754019265636013933858576185179440 1.0783961511026913704414671325503744 GT 1 -219300473941079426223519827733598604676887.7709503302770607342096452834445959 0.4895815346602281252229417095940194 0.0506958586017898332256358250694894 1.0520260455228298377182565529741087 GT 1 -322716006740.7236915030445139036006578126330201 0.1104107606348280958404036673026769 0.0358833063756901914440284263535742 1.0365429402202305181286331010678134 GT 1 -5797513698017711.8362842402676279200593924959485018 0.7665585899055856972348045483538402 0.0248047952685715226325822569712676 1.0251176180426811542733020727447834 GT 1 -201791461691042295242962198.5460137941310303370945815366870918 0.6323190249438263952830104072961160 0.0477096270272146649249681023952230 1.0488852770710960302141091657206358 GT 1 -21846351619718313368914295.2939661939727461338587074161585415 1.8117554128433580477522128780660463 0.0668824898513929534403696843325313 1.0692241373533329972595015541957678 GT 1 -106054991523291099329.4849923912868564156676662416242401 0.1062571078099163359617074787796627 0.0601941463254381061960940204064072 1.0620819636942136247301054858668854 GT 1 -1863573756130755013995534952.7559054923397614799449888454997089 0.2921821223300815419723099506242096 0.0103887508064854704029985792186086 1.0104430905538408296900518567575776 GT 1 -179138422.3400141018649351747897347621812587 0.2671835352181907886133445300850919 0.0484693388091575610322782874173033 1.0496833687074787864066367007993855 GT 1 -8298395571315861.4218745216631594321340730182457507 2.5632695447002208792104732879342003 0.0419938496431631330792530386016934 1.0429010810351864071796836482621591 GT 1 -3847870936583100713516128.9658758840809417112596687823374877 0.1067086624733132591313898634404461 0.0743412263990704141930875660067598 1.0772496072783290362777143510829327 GT 1 -1200130982568520322391320491.3829106173144146381091065769656355 0.2715516508398815585918535192489731 0.0719786549818546423121070107712235 1.0747005453633182623551245786327854 GT 1 -148.1624787374794793723641841578613793 0.8517113889476366625272013133947820 0.0028166199409823423086206013364168 1.0028205940791069758275836588936809 GT 1 -91.1862306201593872618689892065350847 1.9875282766251510536634918972974841 0.0296400214336705958154928937820610 1.0300881644056554270815371466318623 GT 1 -310489814450764.0861418056205873836607905792714112 1.1976940976640999086145418850293717 0.0422538320372929364790166102399803 1.0431724964924349208637808200537915 GT 1 -4698647122078836911281892257329163531.7150426794398664038479166360576429 0.4241201423640086625208930514184549 0.0994987495437780273571877217368181 1.1048037257427461981066403750717923 GT 1 -9230888210435549725271386.4170409401718537979364977129890536 1.3069293623411628004916872345917981 0.0659144028968849959257888980152396 1.0681871992318270567469687589365436 GT 1 -41015718220920505384434618105208176147.2513674494132618903886607625721985 3.5157723129529298076271170169803845 0.0824102292252096551313109373390363 1.0860048610333958855865893254240551 LT 1 -3122009430841465513489719931088417700775175.2991694954013626376056605361603592 0.5900290876642157837878807690504036 0.0155154522088877618765718610528939 1.0156370765150990434984811998003575 GT 1 -36937528034466.5233038350979704533710931852907802 0.0336915091856055328969845763225373 0.0355655977483186573873067326523105 1.0362134611300212599903484868135784 GT 1 -90458654255065.5763504048672737533181960870661215 0.0463326990928487915145833538408830 0.0795303407921730456971750892157194 1.0828712400604641664354358826132278 GT 1 -6177641165982523983063229363299061933071748.0198781845171556727536927309468977 0.1157129126932223105563574307566868 0.0876631920093250296470250194330622 1.0917460500775344528287830209368349 GT 1 -7393030517343391592359086757941171.7427478603633798881901388485719341 1.1028601657450329975383080338315435 0.0321812749334761401665580905254531 1.0327104767355669362868044485075927 GT 1 -125591275796610187962518286870817518191.7016332149906530267806640775427320 0.0475485955699523702785073442060643 0.0913150758578861626595770823274837 1.0957568629960840553283169205057433 GT 1 -14434421305026.7312535245370189903726186515578265 0.0886362011482065690513547176685811 0.0547828743853593601349373743018025 1.0563406153245924760100479738735849 GT 1 -26218241341595949138725586026959.1398839209998363742976651665104693 0.3119133286693042875379003746572047 0.0977776337960989450368666769538909 1.1028942635770409159146549873914519 GT 1 -1703785396232531.7117765234525606062011264886249153 0.1851194284529387421679454048611265 0.0373671582302159679415020258107172 1.0380832049205738036509039523875280 GT 1 -421422.7450844240988820475650633506853628 1.7144070495927817674630070761510302 0.0674682018409502149557000536733978 1.0698520281430886453964512373481144 GT 1 -23078665612476544038111205845641996.1941583690851788051777542504961272 2.2398320842751200282309795679872182 0.0513251573685188873358878092025524 1.0526891706628704799935842202470815 GT 1 -107595.8088954849566392325464452409412282 0.0118290119990207494366306995456194 0.0897144261720238016189810374635931 1.0939969113082397863250918853889699 GT 1 -70415463366040271242676864672520052999567.5184486843969518987065802342686920 2.4900991493473482503446623321673279 0.0509275188201800246244901245984797 1.0522701069137939916886659240951989 GT 1 -2131302926998987153571.1641798391345681284016465444269657 0.3695113471654723833248379099009424 0.0980493192731268270129459308327922 1.1031954381007859587093126818961966 GT 1 -33674999907611646978134029863608274.5923121475885934931033374559568053 3.3629800350561138341236319416492190 0.0856787522288325373020914843875931 1.0895732946951875380495279008671104 LT 1 -7048663129.8291168703816511078302326175780867 1.5730694472170002970968499950493066 0.0247181765956152305157973120259883 1.0250288001055675645921415697476297 GT 1 -3126266995392759992020492.8247763415203460344575808343379425 2.6637568393902219442227072756861443 0.0689758873829863851658141353768817 1.0740240901089819157378160464990597 GT 2 -243236603773971115770570396909.0143987892404141261411045103843350 1.6014232914093767791307778341650192 0.0537045517044562692590156484791537 1.0552004454810570477534882193056796 GT 1 -167976054832.0602660435855877022311789243118034 0.1370839310333469388026553182030057 0.0506619746546510512950837084917767 1.0519903527022068816898828157181111 GT 1 -56397435181701321816164.4807461474478789569791732520633015 0.0785109592051657262881808235539407 0.0551853449252572161630799497970499 1.0567665029208681391647118409989416 GT 1 -1683990705535.8139986190628728440164996192697303 0.9602105433460932338008876740845912 0.0835142283614976250535199768090210 1.0872087364944603671638945073993583 GT 1 -150005005357642246.5120790431115594086462279826632547 0.4451833246287928609341374193819736 0.0035246561079254937116607817659109 1.0035308823427948753670933378374993 GT 1 -14102004987353397048697331219945863251.4991248161570052709751190924826166 4.1914163726453734250395908855385544 0.0112214277719817850338269019124610 1.0112848629948921650485906894201583 GT 1 -4592189297395912808693186158564972.4135116408500044433241505647699963 0.1576823953846021940272091121833986 0.0444728106659198242317183453856004 1.0454920600979966718236596915761191 GT 1 -1162439283026594381089583.9562173488694410117373711817145550 1.1618389509154346619569996114625278 0.0710599434208346467498677426714753 1.0737110669226931983961932261740187 GT 1 -2343192266403714961127168.1473219817703641015652522665716987 0.1249062240130220976201948050614733 0.0144693540584912571252945531777913 1.0145750560270865999289289145046010 GT 1 -17960584239033911727813743042373539202115576.8341751478914244748333446915742155 2.3309099554197410895606331842691839 0.0972596826155788654777739401783551 1.1077336106990510268431562500772131 LT 3 -471038881036.9062332145226051942430494814733183 3.2252314959078903663229122336649138 0.0007238188693605035815398029653950 1.0007240809527132066562894431479162 GT 1 -3861418390310692019907407300.2018705500804050069607524870431983 0.2061286607650643947395245434473635 0.0167897900801756791111448718379760 1.0169323364068652233967508523226621 GT 1 -8815162932329256106885627038.2788751203940423207332376811345375 0.0387526464885903923585889307280516 0.0989037158581020198298130985056597 1.1041431634408053442760250987548766 GT 1 -31044303425514716759409476061746269808.2752170271787242521543507797660850 0.3786040724141673830673304046087675 0.0878655666276700809889089266413210 1.0919678947573375212486952210687719 GT 1 -1951046.1853732404997426454968851694575267 0.0364175590687447086128990616050411 0.0322981493896120182093080530705859 1.0328312447167980876465806586414159 GT 1 -42.2978296864236124776683982884835059 1.0682869680707806074169879184787923 0.0772532232814181132038470551000106 1.0804004302034815942879855692017193 GT 1 -114324213719002710292489790687837.4600445483354946773919959589281250 3.1753252826599614855400434735265295 0.0373966297342431698300473486095115 1.0381138209082071797203428726098968 GT 1 -75972257698495314849676926011242.7510060066500630361801158191124050 0.8883260912198197727218623480886975 0.0240764795122620490046962070604823 1.0243710557953681827909270836964977 GT 1 -8309116293130430559818055208582827992267543.1986123946428576758926377161675080 0.0289345299629136703743501465193843 0.0273121577422236087556262368508586 1.0276920681487942475711546400416986 GT 1 -2506465017798190538307530195587338292665.5270811055820229385207120430111871 2.3861160219794815170674504618999166 0.0747513779788105442553336443092822 1.0776927970212882424623803969571456 GT 1 -33.2540873822398079926269727054627570 2.9722681177403735780228282255545952 0.0279294367628788335231434779699892 1.0283268812336903047497333521538939 GT 1 -19794770.5277796508930088601623952619276404 1.8098263337838590649486721069241730 0.0039713360460872176197549248029583 1.0039792427414547572398450336186252 GT 1 -1525584783500762338750414494697749092017.4199391601129770759099609403064836 0.0172791340353367207547885201689604 0.0569624506402409625578335360422512 1.0586491780960930749232553904601860 GT 1 -2022257866913978713506341119275103.8319932052977054157306450517650107 0.0610993266803705204723707766333823 0.0223781014216710965625964900433355 1.0226322904696090606827676589254562 GT 1 -29537449705718743458397840532157945330780.0409484463228223424253612048458176 0.3113995183035487079338714178137691 0.0285413831753003222085915531168581 1.0289566082672968858758912110061260 GT 1 -5477794832138528956.1243779221616355314408660463045364 0.2097303110645840068148303887734953 0.0725775286286515546666739061789086 1.0753460768122399427779605011106831 GT 1 -16865322807947374120232145.7210990238937490457419800300103764 3.1990509998713765005999275377640246 0.0028219049779933135712327206803547 1.0028258940581499112816413893559573 GT 1 -985932266992555261.6208449116899594269687498182917779 0.2014618723040662479244949197961431 0.0363747649434351356859029595135947 1.0370528202732400995758061000712071 GT 1 -1432592135111990258501885868820.6362540827556488791856660913643131 0.6892078584637386734673509096533924 0.0375594617637796967901427296823687 1.0382829931844401756369884756723753 GT 1 -3837418713283568492229.2253005336979471009844834179204816 0.6583008411170196306372569221290069 0.0603968319157879816292180962042454 1.0622976544659286467549259253237969 GT 1 -1071281009.5463739982119603731995929484380766 0.1132777833460949386612251302871182 0.0052041578166841203915871521940660 1.0052177466119677153082298669002626 GT 1 -1271245371274473.1246789496112103479587810106916471 0.4690006587291968586306072062746324 0.0933622111723711948093778399934640 1.0980122594252058742239450144523488 GT 1 -2181248972322186523.4593505512051540778909788900584501 0.0960655915963506550964421213617302 0.0662600577806432662024423902894048 1.0685573139780141596801459125009791 GT 1 -1256616353877382959430201.1852660966862241514114745861076327 0.3904166099443029615768630217487505 0.0350236719418789326929153808697948 1.0356517084537481008423928193952053 GT 1 -25916456258638792528370308.1482919780040045417870483689271968 0.1657833078415558696027293137859279 0.0284676935634320731707019941616409 1.0288807565368318833439248887196351 GT 1 -176589106906804.4264080920081620096377286199999030 0.1454356425901002364293878443762814 0.0693551646491404639349797126850833 1.0718775617606780163221914100891216 GT 1 -19043937293380635071169229909061.4320273493025498879454011228603316 0.4272885669252189752876280065661246 0.0781129775257348387513435172671161 1.0813325982109733386706115076151700 GT 1 -656668849750177315554133852038650031310967.8059964431553204514854661151156411 0.7194230417284206077437440006404352 0.0750287122823224220033775397942487 1.0779925822566855308977351357261826 GT 1 -26520804352202133517117912754102.0895022055951580659840522020338795 0.4169888427881110468926390294187160 0.0503447843469642463216888454579973 1.0516562911544471459330172999986460 GT 1 -10538548394471394093084340783962791907.1425696379291837605027048300495967 0.7086968125396139037626180699102256 0.0310048942297285025796008419308201 1.0314957179087995545494980278615604 GT 1 -1778505784352793985290518092224.5120496806531906598388627499079027 0.8540106079179074763118509051205775 0.0755277939715193890838783559513988 1.0785322923943558805220394583832133 GT 1 -1519464987065559197393495.0308902949182595953670719646130784 0.2092374745138206301399562894327756 0.0687818824987934709314483947883018 1.0712617461147563693955968139617160 GT 1 -1040598704.4866633078022935407164025104801120 0.6968317967558382394975768933324948 0.0669900252810508095282369207593068 1.0693393871748472188540347604463302 GT 1 -13723573007443.8444705221607489240736578008944215 0.0084473716480986961498300090124203 0.0677527549788939549828316558380553 1.0701572151208091307254000259548435 GT 1 -22345433581093818948429589282744325.4560664621915659482020377966067755 2.3661390743238463383797752768009048 0.0133877063524026292741161524343231 1.0134781296402279707008333844160330 GT 1 -97533038005023448943913568361522439.4034299871858928610009108889370408 5.3630650440347097114517087895757346 0.0900720592248074347809501234432696 1.0943898685679419333958024703383054 LT 1 -263901.6875447359798964539228595967866493 0.6596682564635923542916957282005141 0.0265219502856272690376606215904650 1.0268800022264788133926241067977479 GT 1 -344433270217347074657657956.9571320120873006191895779913770129 1.4389544427654710783376744802787816 0.0512240643325537680919798033000718 1.0525826139740572890636189896218242 GT 1 -20763823186515677307649369251613026915827.8618934979120107544539519179310531 1.2796994212387500190808013369400578 0.0329383964780337061020763860864146 1.0334930797441494717038152883347391 GT 1 -26783.0815613824080117157154300508916878 1.4646792711269804357111098591458507 0.0785651508247381546064752258032276 1.0818232052124172526207901050204046 GT 1 -5029610984169109460108859.4885573661742178901420062972372038 0.0938994862078319436616191119578367 0.0578861488698504846900966335943136 1.0596291506365394051330959239201581 GT 1 -511890228647901178273327.6581835229855277560434696036165757 2.2588191048302818028366622487567206 0.0334562874087744295286998770135800 1.0340287536366537298568694322046612 GT 1 -22600702379697830224793064.0350087405625679596292353014888824 1.8690293261137215369628332242971122 0.0640585303492863041956308596159044 1.0662023368842297492806121104984804 GT 1 -3374.0335901284311789233826838472696845 0.5090159869479065909996375696999005 0.0591841280793869575748966035449291 1.0610078313161657035631793281418991 GT 1 -1749945405962056519880923048151131078678994.8270749491635972496188021793973681 1.2212799692436362698411829257524819 0.0932519161381769269944868633008371 1.0978906140148259018540997128823303 GT 1 -3243299993935453773480644445259847766.3042594330193568575234030252387071 3.9418309510966687687247464776128943 0.0933717253835423661009463859130193 1.0980227534297682134916710936263992 LT 1 -14375161661639.7300804911909494499756476951017570 0.6883152718300399405523012556458561 0.0279415259927929480018916082828909 1.0283393178875159232047823388702502 GT 1 -2969167493609.3224093020159431563092737576257172 4.6383713097092509513897467623227763 0.0356999861898919729668293566125875 1.0363528151444170817518755142049110 LT 1 -2019008943616.7466737293278080903114657708159348 0.7319240869017519969690743691742283 0.0861024001462973931110082753173511 1.0900367489753993167823434688766948 GT 1 -1285073130862502.2684953765115228719342070215144809 2.9255022529859991343405203135697478 0.0617476992517626882779097341183956 1.0637363888002960441435458322008608 LT 1 -5970292239473896595769264.8993244283527161485953805174877019 0.3754801924511189425949175132003907 0.0837898905049858131681530642762720 1.0875095634329664672812550580650618 GT 1 -14.7630646963085457965665464718046120 0.2655304013926586409654768095379381 0.0428167931555090736655928897631337 1.0437604671422571730064322002226232 GT 1 -100822846609527594120151419873099032893.2351389207928160168585420798433720 0.3886269905354793179596302199763758 0.0142372667931795030414328256489824 1.0143395890297953510134379431757475 GT 1 -5614306581156004134182939650.5001707059125801342139783569835211 0.8647401564740643920612281927365944 0.0079835869956298767167441832536644 1.0080156264668287469658447992836748 GT 1 -188330555174616089870968037.4879544696256332544994967304232612 0.8477339997167501098917617545666717 0.0124860117292350449348841807763743 1.0125646169697040648603679685020938 GT 1 -102305.2434558461172094292143101042893823 1.1723254553864059419145139673018069 0.0906120019622382576258718025142739 1.0949834353495707532395587264903209 GT 1 -706398501472689862958207906.9265224754519338014539047868833557 2.3858348292475694243205257166455175 0.0330738604968192197335348576415063 1.0336331675182272494610333405063494 GT 1 -772977076122834.6697673566123749860237070073881787 1.1123556858502084544546951915094176 0.0610817887835464189963659801298521 1.0630269055733808783425783629487633 GT 1 -24.4821485849319738785450531131281996 1.0781252029874938274867066020272123 0.0702531303227862805586874806659591 1.0728429130261707984290916895308452 GT 1 -174002459549739673.8912950196071589065062356547219716 0.4221979425977700140575102520170679 0.0978313815669771590534284818739179 1.1029538379945055713830282450969759 GT 1 -2946759855656241894.8435272220815144506998829202101405 1.0782380608508486945793157099522972 0.0753017425130572743563073729825195 1.0782878028093790641411550396077972 GT 1 -243704734495045749.3661778198283266821896967226228417 0.9784439093552183854118050068235749 0.0195021864468679579498539587759084 1.0196948632787353423843170897849893 GT 1 -102823114855033.0559175317734638537694250035912769 0.1470676975907064877733925088541372 0.0104466849943678873337130465424998 1.0105016346374879685122852933832559 GT 1 -1383973843088838548533715522512983646676803.0959670518389829093578981087279824 0.4748931125936733331990847637545387 0.0720993320853184303169702846113848 1.0748305908100481710620274095649080 GT 1 -603128899259708833043.2479509407207965304872327028625311 0.3256432272589289896857081609954647 0.0195423883451582837528305987026811 1.0197358656368503355993827626027765 GT 1 -4099.8319019898418305977193013121522466 0.0497296735064426723899481668985077 0.0682431251897613889579766413350224 1.0706833622649734560793600625349399 GT 1 -24148585918137594406368739575946476.4520475977822386754820264388330632 1.7781690403381301513639476297490742 0.0372902977569979936259704498863219 1.0380033640906936187691846426050332 GT 1 -4061.2357158601178348723641407222484095 0.2644385537117763563012796359993417 0.0726138328535728874056170591584944 1.0753852228720242884602426839956498 GT 1 -548176270519014389941.8117901441054339106188783160274230 0.4421386644862046393641628352048741 0.0061179726860210933080537696344944 1.0061367641639504231236397740076876 GT 1 -6689988042692533589442593243776.8050777409810494362554241067723687 1.1266426997111948177980050662831565 0.0376542918539110952462884724574733 1.0383815288949756826627699367887753 GT 1 -8533487336.0390598512933345317745243349193825 0.2094470545393405890044921814915555 0.0635276754227493436820133411842628 1.0656353095076992125218038273362868 GT 1 -7062968683097783934676840868200526671.9516498346535371856976702740401934 0.7411630395347806267094761812330772 0.0984283605369736369745541443945751 1.1036157725376646583594247515542956 GT 1 -62949570833.2470731157661116876370855929305854 0.9936647392681920087002902765904993 0.0813935289428082863883827968727412 1.0848974626375817867621602265495116 GT 1 -1080873960599817934860841252480413998334474.8302954570995557541613737412048699 0.2210428954119814415182016674627329 0.0776847186877131623740902254365357 1.0808681601774230980322074889661375 GT 1 -51317534971.6945941616140289693671502042049653 0.2378033887069713575510495783416648 0.0811493759219194189829915945277900 1.0846317116462011618022405808498554 GT 1 -206445.5372468682685534516279551592932107 0.5450626255573044547180505624611912 0.0001005636478733211707734991314612 1.0001005687047359851775779456625084 GT 1 -277135714124.6400630151423757848640676725709891 0.9706972957647215982015183432385911 0.0045708394036372776983547860304273 1.0045813176317880738002843123316443 GT 1 -892311270258263309494666123909142.1431886166719787812485023572445316 0.7914529869469128496410073485829385 0.0990632964127605666984826848598348 1.1043202751320588944396817817380884 GT 1 -170414362768341895667.4551786241086178383966371131708178 0.0709574681176300600952566815832672 0.0871328644091032990225156120206891 1.0911649340690897265550727845098083 GT 1 -3436039301463.3832125667595481663062010493272702 0.3650528801944998401550230379145778 0.0626311252828190541581799565007462 1.0646783978882080698741541140201144 GT 1 -55.2429959752445464346676263305603833 0.5948893693103072208634631613599901 0.0710534832381262093393732626168281 1.0737041125878041248463672969888701 GT 1 -103580220174420411919206023204160.9863896238380334911083499370231651 0.6546379245357730048983076160999191 0.0777752220878204274168556582234101 1.0809662913074327589699905022714247 GT 1 -60607072720035.5004894694999798296251115541353286 2.9436689957724768888570849858926353 0.0308571993863067015679095618480661 1.0313433088947441477038386807289248 GT 1 -4696663503675486022345514014750437196.9826362455099426374602543595668941 0.3771075799311556573077980399273968 0.0834901333279386951267945692587349 1.0871824461606955517863980706176368 GT 1 -3945.8548798418730771022209366838089416 1.5342616316105694768551788586758594 0.0452766769683026964482797599764497 1.0463336945795796929964684461129701 GT 1 -252794.8373577537785057694901562125840702 1.5201568749939418440779114194222980 0.0737991198836510119299185268127462 1.0766641346915523776300848450465155 GT 1 -29468.3024699399441747414369569134524325 0.1895622616537536261188098460986653 0.0323895239090296692476513634346743 1.0329256734229297656098977259989533 GT 1 -136133798386955805276560033612463.5425961875241193477590753742890072 3.3709908670578448737127300410660490 0.0731795317209839600734023202243393 1.0759954017745854305406028863246506 LT 1 -464981208258108053524057700.1204076580840260335385047868241473 0.7274942488971257513508258400220954 0.0953566824202190631509534935908617 1.1002145371908113322141788554132324 GT 1 -163795213849836187217315445.9299664484145549555579051410511889 0.0484028201559000249860767430652829 0.0702824866736877986891756123346128 1.0728744880874328365419879753354189 GT 1 -28118661.9634965963362928235420533041378859 2.1119132594215300561482239691898129 0.0553763945375158625943706603662601 1.0569687319292459320221817085569507 GT 1 -97064181229760056.4674656307309259356033899897919188 0.4350457765560642136414911862698931 0.0550693863553082411721797360397296 1.0566437788987325075991825743212993 GT 1 -1796892063889517762489552602139526500130229.1415715886640557224062079149744140 0.6361615816474307955838684014335584 0.0521787330598535099030452256736713 1.0535893314854142983939595588316491 GT 1 -3933617446881399961646869547366418409261648.8091805876033332137091083061352061 1.7274932181866435330796134400756039 0.0120001855192131269756465698633772 1.0120727690067697884520015860284028 GT 1 -58149654768343510133598.2254607173197477274750973098197182 1.3922391750707267070257389825721739 0.0943975145398632249414206284975186 1.0991548269917807855742905582600913 GT 1 -593593276977.2849953225820328407837562757111480 0.7783792174397405395237464212510407 0.0893386267509751059663886690167233 1.0935841596605466408393104123468576 GT 1 -62672448.8618494670680627119284040849400140 0.0410246264723380321583577433306464 0.0571529950334646178728777340984959 1.0588512523889599739066063204732788 GT 1 -2.0546838674074422555607814774107700 0.4737924490453500001559970933850903 0.0339104872850133588118273340279106 1.0344987857965625728156410073323019 GT 1 -13132892001536090.0779861948704671347860860781055235 0.5114243387149896991509474948405504 0.0523867942139729553270011954359282 1.0538088707603920961566515050857163 GT 1 -26898854094669428236916.2409230236571631435226434127386950 1.2073196157647233041099102709902375 0.0455544493132534463187868191543140 1.0466246822975700284008908079947404 GT 1 -13210146209062866776580.4336684098121274453881712320366038 1.0382795274533823574366552703427588 0.0942392641809277403737095237283451 1.0989800963165864951731530763101208 GT 1 -391754991.4760524300343847372898771129061829 0.6864357077691676079812048796469391 0.0985918539006266070118326086396830 1.1037971316027083022963791953107804 GT 1 -590776706285204.9205837968960670311974015977026348 0.1322486253732831972906086804786816 0.0545933466032606792400118038342031 1.0561401229951956039360587764089380 GT 1 -17145668074793080040442438943562866.0755062949528419528600977921833674 0.2678898500241585264152719622991632 0.0984785542425615994855397334534016 1.1036714476506273269941983703339222 GT 1 -6570706670.6648682079608148955853091737815396 1.6018563710875919517014150965733483 0.0195177290781596981774018553456050 1.0197107151799505727644948331064930 GT 1 -14966568040216656197728427097491080.4071064139636718211931814066535474 1.0644729054464052222304158140429664 0.0162913710900991935672908573366085 1.0164255346101615050009567716567827 GT 1 -258019.5270245289392437782701322027375192 2.3799919249652792475025728432572392 0.0594577633771353342926498930482718 1.0612987225595024166557672911762552 GT 1 -1201841172684989834436237539.7379289665380003561232574032861712 1.3264087803860937913166960620857619 0.0461237100603765737274688796106206 1.0472212910580939832357366474434582 GT 1 -283035114243910681177193145.1301205488878785806656903721390889 1.8673531761754006949106302324134350 0.0915217466683792372566622310491860 1.0959843283266015901883791176382358 GT 1 -1086722155100447619030373984415123870776.9520870586396421564504926642673143 0.8582362978337343472779038292326849 0.0941199281393954337065086098886082 1.0988483527157589625126674605497034 GT 1 -4542563268056227573198671869580603807878531.9710078413660334911817619940888402 0.8925199616423549909474842049030943 0.0218062394807451076120394382932523 1.0220475094299824239468727269571509 GT 1 -8923280149775405656.1080131252121307537361858177803748 0.7525661298598413055412498000148487 0.0113217648753772608678632497689468 1.0113863439507426377261191596266909 GT 1 -18563001985641362007360611968421.8612598914417904019202919199786772 0.0890031831983060670570986457552711 0.0596172115482764651055262004689396 1.0614682648532115954526628907888393 GT 1 -19931554765167125703.2130597221324162278763612975680721 0.6711698681462693946546641754352295 0.0206804510713104663815399156510834 1.0208972863095362645706753699351690 GT 1 -704995628024767124152372221075201353.4601944847590379252808872189036137 0.6353012800683917992671048585092531 0.0142245627991193165784392669614783 1.0143267016363367346999561515769101 GT 1 -3845.0428866263917196811234327715471179 0.0445705589572152540759897608918808 0.0198988241350444596540425038434601 1.0200994719679454648277703200465422 GT 1 -2983660588555727976660.4232219449042214713299064521131154 0.0980140212371476383245958563424450 0.0945918108221447354248961875265843 1.0993693992035827054700453350454315 GT 1 -9009545673545078431268899843134317684734.4129752863286379601116660490501733 0.1730900009146191506760191460214737 0.0796849839015867056989261850167573 1.0830392587449436365412974975422153 GT 1 -1225559987457497932545048952379137567221.3603762679369535446774267580850688 0.2789660970344915890668739120412206 0.0850276655739966854483904558589811 1.0888614497637170823347962258942679 GT 1 -10642044205177575810278330291658114586.0615507915737325188563468993944150 0.1993285818524312394962349305597109 0.0063013966050026900594845886388793 1.0063213342052039247058010301547781 GT 1 -2520774271790514522.1436647115655483674946916825906899 0.4360905909930132607921383724847654 0.0098814769545943811530361851181889 1.0099306227715139248602284778232268 GT 1 -18.8396577319537173832410001510820993 0.3774462224069740977098755877508657 0.0576204077876376044132821164274796 1.0593471214419957848495468558663879 GT 1 -7537642563117832458.6839445396244275811311257911826585 0.4329749414568648242715904706216565 0.0190710129753958061058869889880129 1.0192552103910614875057526773424053 GT 1 -277094739761486433438.8695362446476195574317806773579248 0.4121050056273597667665825047909225 0.0318851164789369272838041796189976 1.0324045174242188645512202733381200 GT 1 -1371366900.0247431687986621967362007015899268 0.1100141826968615634520067257594074 0.0438407546778078615296020565442610 1.0448308051979412952871492147278166 GT 1 -12832732929321763816615204812239050273617.2006852994204080308817442626595602 0.0375308446824463114441297646909303 0.0884030906611158577058651531561164 1.0925573719861619530964575003151156 GT 1 -19923714877502.9733528359953788676533309412084881 0.2777576005626495557977741779711224 0.0034423036007046295048009116381910 1.0034482419594164912753540848664431 GT 1 -25607401858550136783053723500276702514822975.0653457249529204150932111261776418 2.2176615276364273332850106868452368 0.0914762921387388422972693932640602 1.0959342958768622013037849508867151 GT 1 -4142.3984210189997934450109142875063509 0.0573357559059367696079513904683421 0.0055594377870334070927260184729979 1.0055749489769975571397582369545313 GT 1 -143179572864741020.5313645811620037500287475212269865 0.1094164441748471487611018186307488 0.0902612316553960123236833822879443 1.0945977884362584645080713030285438 GT 1 -1799454244602706707942296805690.8395180463224669756671831692341098 0.0138983552074974852017441152467453 0.0708952033893710223207932038979622 1.0735337407062539243886773612791100 GT 1 -205703837011767152253640981959990.1621599036329304633684129774528447 0.0420019098369005414275442394617956 0.0649548031587353718939514699947846 1.0671604119940727638301570369026629 GT 1 -50735850.9201486389439436956764286749628182 0.0457812044243190258685978850301187 0.0271328030002263092943763317308833 1.0275076942926078694899823571927580 GT 1 -3811.0156730144744562229986664056765879 0.7923618615055384814631361983070040 0.0419006488317395621505016166093882 1.0428037995322390057743966384549457 GT 1 -368023402311291.7139381742751729955688450609406019 2.5407463566998503816352550820930286 0.0957413288596541489699606927802636 1.1057040054503505006270781870006947 LT 2 -60640748711057357449650596330471296.9327642355186580970107689388326061 0.3105575915218867081274497291365045 0.0628211362052577940720316829269367 1.0648811251052170510717296274763264 GT 1 -5585197561639504470827554299598974769832.9666156453515721126461781748900490 0.8961547513098220481087038509543644 0.0942906444480548654411407606685169 1.0990368240179000910793469899981055 GT 1 -131688033.3336374258475626409364919942470130 1.5389704673396992118552509865397817 0.0920800560594361264397036502952695 1.0965990717341626366253310342565942 GT 1 -48918770667575273338369.9846097801403717501252721022263180 1.1371245399067130870889054375047855 0.0493200719623517333368068128826082 1.0505778366646358647297544832348406 GT 1 -22707359618255696.6384288516061399982094810724337609 1.3581598679340586878556908787306615 0.0923243257066612128550285115236603 1.0968681510888886984602409750357949 GT 1 -1071945673907513210088128445989373.8495199187564868614868388166675324 0.0955022171905925132232811279900091 0.0227963873315730135882957014501247 1.0230602426462910480603838078190891 GT 1 -29498445860753949186010533971896691155.4188825180896531411292028407395298 1.2105272038168275301725791213587906 0.0378722864618849258433089551853031 1.0386080787724122136575232917865330 GT 1 -107936443550677842845.4392181867576391534683285878047788 1.0025252146493097532012968179984835 0.0480076648668683076913107263717345 1.0491982955539278964803559651425019 GT 1 -27908909.7091565296037244462875665106574001 0.3293499501422879080699060952026127 0.0438931667090662043327960182952210 1.0448856218700118253268128757404094 GT 1 -100782844204.6971676565263898014126452353191207 1.0952352028387064681881876855211502 0.0916107372638435161550771859558468 1.0960822887939977432971711138085916 GT 1 -1623921703290196.6216695574272480930181239910745327 3.1141880376556921048229048378458670 0.0684923358515321260706753848939366 1.0709508612250470980013256717847165 LT 1 -39072034023765315329036206152307587513834.2299179388823142054059690839726897 0.3297909277962881224837896064285703 0.0986916830376913865042802304245916 1.1039078857220746706632621519881006 GT 1 -3157099920763293082416216832618295870364065.2406659705793513315922946465385184 0.7319308816655781517822605015369962 0.0732842409641380016900659206276737 1.0761083849919861659371487380016828 GT 1 -315255617422762193528747.3513756074839877930709795875646235 0.9211321951937389097134669232639782 0.0344109074059480870838820497075208 1.0350169052505484400426681756793358 GT 1 -771917676479273426078271186847380588263.5466770389920048657133860535596089 0.8607137605754437290058652147826669 0.0212127441011381747017395585698360 1.0214409676262316192987732367089719 GT 1 -43728465906029214147643488.2075631206168540955802829639257344 0.2998514177037117773524013667942683 0.0327985058759048278590425029268336 1.0333484348894313916055489173666484 GT 1 -36097.6569258287970862152435207699418774 0.1339119004801230180744998956654224 0.0156735341120016357731013856524282 1.0157976626783775429106658564480570 GT 1 -8509390344288815305.6367464812323550889265331773924071 0.7644946177587449970502234750831297 0.0971731741995831525774903981384316 1.1022245204788607579644488258734991 GT 1 -4762771070919829769196.6130234014228911274857476659761949 0.1271681700602111861302497215879139 0.0642677707297958285796504720732863 1.0664259232727138469070530454241800 GT 1 -20816990.7635225316925274471571587717244572 0.2591109623571589685725224487200537 0.0856882821231454133385472081729120 1.0895837176663271676524297441873166 GT 1 -12506319419430270310568.5208763951328349997418960893998429 1.5260908651761720820249233109553963 0.0596732950817628124927329232134850 1.0615279056788688084574822824180019 GT 1 -933275758987852801764869682.4460334602270028393285310832969107 3.4241092218869584793716976258448800 0.0053243723352078122666707852004001 1.0053385973208036455085211518913573 GT 1 -1433618810249.8586958828356934914189607726194641 1.2046995130081215607829683288648784 0.0952169928888291232694056718777404 1.1000601351797857492556657555720142 GT 1 -2535839286322093408.3523664884594012344996954141452866 0.0755546622605741024692639843536102 0.0222641053883350812013689113450239 1.0225156918257576034964689094652908 GT 1 -12064792599272601191730180757427006904.3808345595424156188454853298468277 0.8425766608954976466111097093049290 0.0585098581857251318672948626031208 1.0602914016627702669320515747181724 GT 1 -8182882161491364657244285741850353704988.8459768098753684430136191597270600 0.1204765505506224239656499403894668 0.0896447631511004502988076986127566 1.0939203854822242211687220416437117 GT 1 -11829177748206309742261.2952974593745860799646250474217275 1.2590213092659834950908295571929823 0.0965766554413805539170707194010755 1.1015640153177503048791897137611046 GT 1 -19.8293677103452188400966479614900991 0.4745642375891678008061747296613708 0.0946381801667377275373043635208622 1.0994206142605721355576894330412004 GT 1 -115456312826808.8712018849761221342314258322970250 0.4724483731434420007268051112700970 0.0478770495709164383430262877664121 1.0490611029194827908382253076144277 GT 1 -4089277644194044741064017142525753226.3543714501533373277022746115785584 2.2312465710594201999403171732256166 0.0174460000102318037492672774414941 1.0175999749274193109776776175845825 GT 1 -7461948372978004285204175294054865862587.7446180526178183788311031253637887 1.6210097556008949040289360146752919 0.0028641097722319031547276619152359 1.0028682191830370079725652956933224 GT 1 -3375603024326272203785169.9926082870227218006274834777314880 0.5586292240112707247207704005926317 0.0292231904466196166874763003612117 1.0296586933905173106292875381520316 GT 1 -67373273301891643.3271771394493152391261393667061426 1.1902780905104100875457873565408474 0.0998695430421132467526785584435349 1.1052155739869480635029334438086627 GT 1 -493479942.6505386196294045791844016173342459 0.2104533322955042881441856111720531 0.0681830633977119354243990745256337 1.0706189035440980808981388712381271 GT 1 -89318862720883329108159345144205.0642756696427674228251423530729704 0.4107171902782775674158510039003583 0.0938373186915675917563469997395523 1.0985364291150326568307725674688109 GT 1 -25195594581764136943334114935512555.6259445463945071049577119799889876 2.4085890463825410666897291406662230 0.0743674609211501821937974557367531 1.0772779491410081725272545613612791 GT 1 -170989348.8094407106529284946706875046626048 0.4423040061045641207204359794688604 0.0085109220762167208454133395470299 1.0085473467927093528334971507876434 GT 1 -13247921175058574414850.2946167274044650111340769871195327 0.8999865736307734120301201429274095 0.0810120324155169177269306168130731 1.0844822496561425774929286141804390 GT 1 -1664645807727476.8595908862819541238002706337241568 0.5491891261162494287479254787959978 0.0315731224487679102615043475437041 1.0320822997069044289380270065363920 GT 1 -5991855.7301248525850778509386906147407695 0.0187633983243682947880410153139910 0.0602804837140067420333654486672258 1.0621738351741193994336702507434361 GT 1 -70079279754271.4321143509404831485575020329272066 0.3927235212188562876894131309807396 0.0479722442749483318721778262033099 1.0491610894424019440087807466537615 GT 1 -1298893139147.2587713438618291600919736090842036 1.9396944498649908517638750847508677 0.0042918530652465481169953198293530 1.0043010895037115254665698269807300 GT 1 -457864906915.9138624916119299963082933679069692 0.5361749185619606457899536849482255 0.0635000014317243715236657743984521 1.0656057586267972358263350902152458 GT 1 -41887489796987521539212159982454149.0662442982383421371613568598504682 2.5133061883961815527227603059361193 0.0808422328233962751717255231800566 1.0879503701386878214568041179323178 GT 3 -65107381304327752177267.0176820406096738061301263723857620 0.2833026784989788892394022994212352 0.0055742963451317178216298840374708 1.0055898907137584284763480073430998 GT 1 -3056851056932674049941686158475.6203162224995678240415619334187041 0.0414119433265909688302288325887979 0.0044371878910122817269005648099770 1.0044470614271845528572071932846763 GT 1 -10964929285.3494329049843646207852404861409158 0.0316093776252917169790391547732410 0.0882004399502692876883018446294329 1.0923350937103365171226606973425908 GT 1 -353249866347790234489899.7874870331765053894080706844479335 3.3829430388909348816279196184350483 0.0093595828923130952439763964952791 1.0094036590266797891643231258243239 GT 1 -9186330825373151513349316089010.9843825272265377004441742017429428 0.1770839165346013664774107675302814 0.0975126423997157082252061796705885 1.1026005970723477832261198831966609 GT 1 -653682.4081110494765076597295913536582736 0.1542398732580552732914957076634447 0.0205458205468938268384749001354603 1.0207598222189392720802719128075056 GT 1 -2327048098525921235464953277994.0151827855387450152314439431656153 1.5769747331840731087424069960038078 0.0388234795400019406693639581380835 1.0395972027381937098810652810839887 GT 1 -37898198811428774493387170.8494624875768973783223548105044112 1.8087861258867401425357907670700785 0.0387668351326968703838044082101669 1.0395382721077939579832663670718532 GT 1 -2087351237007415832.7723342047452148300171677324547113 0.5057642654365000184768163895262573 0.0959284969108151444159381475844250 1.1008468253803170602798289188725886 GT 1 -164252775041928057961535.7956270978983955381062085322011563 0.6680506628122134987792264760111565 0.0706509536620940511225117430101664 1.0732708880886223189221872363824949 GT 1 -1284331295844745136355247267.7106068914244182348032119825069167 0.0489963137880951562255270261367843 0.0108708713093522945555542535389152 1.0109303909776819584349558116905471 GT 1 -97854339299712099389782997565394559.8544726973404242439476477154605487 0.7695258333613117289453188781121961 0.0555952292553770392847139308579554 1.0572004221691559244365590699550107 GT 1 -25366.3488756593378539188874013136341523 0.1111818919306622629235206954908985 0.0181120463642508304566147517312558 1.0182780773048519798955872482950460 GT 1 -29087259035190.8294529575480691075024669969283155 0.8764796147035995763088454095833609 0.0253127237382458735398399281508296 1.0256386017287382746825071120841626 GT 1 -41710751.5736034709890739433977855534327509 0.1158273551673918812386062548017265 0.0784201493731717619614135430352540 1.0816658527486727720834297644248193 GT 1 -24984.7767522903597263450883893885519022 3.1731879955361742995336157573759063 0.0552465954569742974909493616600291 1.0568313331146542514929370087788168 LT 1 -687941380778717.3477321370024345235839447647892450 0.2390392888094494033606282385328638 0.0221036122127385687323200513767005 1.0223515575174816657100476438072811 GT 1 -144.5982927721759822913632933346845909 0.2070123877643006922674089513865950 0.0038191086573154556927488167256053 1.0038264200741170653096221587194857 GT 1 -12918595011252610636970166139271738424291.9432049353554006895327613733309955 0.0997153334319872103079161458024315 0.0387290838761543239730295882711599 1.0394989991024249021092692265396044 GT 1 -39301.1477279300838265522565253009103775 4.2237597074191319151829126425956122 0.0269564351602706940204947835641833 1.0273264240679940445500976417864892 LT 1 -437175510089215.7217026609443669586030986892825409 3.8676474800015913894889214083003970 0.0446210964181304009585198973921944 1.0456472595115711449682164266503536 LT 1 -673727343895748949394836104.0173118330907986902262453692843395 0.2497118137856800333452651172003557 0.0924995917010119639559769169715600 1.0970612629269921595289749874498761 GT 1 -181474603903472043521.3745417567564717584477187889345919 1.9905224014971300396893837158503740 0.0188992947629141427268440845356321 1.0190801689902127926544305759218242 GT 1 -10282587034786890.8234335765615024098579552907649210 2.5877810223362139808500909314492686 0.0746115225131289100891706454261832 1.0805480080237831259668819176631601 GT 2 -179500.4575336197278827446971765622377914 0.9112308419358899515436307179220352 0.0938995452045341992520128876104392 1.0986051018278980083289657558164484 GT 1 -1052703776190115129632280435525176.0336684537794000695441281108757416 0.6651509791406332105986076871852602 0.0791280729910430078545685572567053 1.0824343110185733776472497712246160 GT 1 -7127980384986653703529935310436442366.3508274815474917025752384165392334 3.5836468396597799503728751500304512 0.0264860216901362295309834868691713 1.0268430954544140327703507842420397 GT 1 -10827567101.2771915711874198564131227221312813 0.1210528669823834765853061151429771 0.0984693936834256331738675877018486 1.1036612864807093449458139016982121 GT 1 -1931856894196722318769467279373.3842137035128203237398506857462042 2.4079492858101931168321019412711226 0.0988534804857838296545146157308441 1.1095045108883431642495420074324656 LT 2 -364256053741287597233.9037195715310023460356955112873896 0.0318859006746207123164563423986210 0.0875795647026739241396592982712417 1.0916543915218364171774909289124722 GT 1 -671374123738417543661965284377613327410161.1653409678097848287081100297575277 0.0566655240003240720386572717844803 0.0235147816079780120325197989046399 1.0237956661153329920221045861459686 GT 1 -491.3052299858638704254685050213855929 1.9482925342037477989149334509163716 0.0619158814015339212155531957439395 1.0639156553204014191060751146068434 GT 1 -19120799201480360625.4418559961492218477954460407162945 1.1838814952739264513177043954250880 0.0739687076142361350039282923488577 1.0768472518337515828826076463526020 GT 1 -32877380034129623787645783.1256631844648885074468859993372387 1.9420887064054065011987931412350828 0.0004304392508118106513080560534178 1.0004305319163783491050019289694646 GT 1 -78641062140000.3255390860080926358911901738837365 0.1646322484775909958348570162476797 0.0192596204975068857404766364900390 1.0194475032676395197700795089867184 GT 1 -1177632156148310375.0660687071145053149789728445268930 0.4411282103681819374174031943562320 0.0192084449844200625632778003069985 1.0193953241394817030847193006675494 GT 1 -3460361780380953704.5241291987477423256331418787496368 0.1690625603735003133508596971587388 0.0185305333925970959209139294491624 1.0187043746568970857855221702862884 GT 1 -288087874273198314821.0170751427163530058764878226356911 0.3383933445648830979112899789329021 0.0848529048732140938143990588211821 1.0886704669256664660993097245102065 GT 1 -18916.7405113203370058455434171065209822 1.3649335524476755243995429524571334 0.0625153161323010215238923789644252 1.0645548584788125606237016453807886 GT 1 -8199344431934873102310534.9786600137621142241891823109028608 0.0694154342454562736759202686446092 0.0289448259532000041499170364529379 1.0293719904237546709121907525366861 GT 1 -49317033369737985856002018.7696494600191922155175240516392199 0.7749599980671352432429595089835665 0.0156215810825330212134125734102514 1.0157448837881724644588407442873952 GT 1 -178704557574739996.0351333771381406523733115069310982 0.4021920988190817742342660006105894 0.0195741307992475260344477390096612 1.0197682413026172425919260196374612 GT 1 -2195088103850906532.1297258163389264915021579771450147 2.0526716013925280816699338518672706 0.0442314714667147521477302472048947 1.0452395202129002880566857955023573 GT 1 -3792631.7694232194693911137525683916975760 0.3155923704476428973621601578236984 0.0524201389736123946442339752676391 1.0538440595337437881699496989342594 GT 1 -2423033983507636018131322914825786323.3142589418274167859824226635035367 2.3175305928876150927785587368483839 0.0675583402950100438708124979715887 1.0699486927403781456202948233938648 GT 1 -37862877551647301018636961136172753873450.8282054534710931249810233121224893 0.9136757276593343363559471179093913 0.0872336794142079921742210180736314 1.0912753779315924448721207839987126 GT 1 -2045707573.9306140333463819425077501080162904 1.3695079354153079215058745672804883 0.0336080726828938072837921703405437 1.0341858051921194467325610056449874 GT 1 -232066092929451.6020208958142498885724202244994616 2.1076878572579965697186269545489766 0.0787208423612287067464781853904697 1.0819921858966529031656683611236505 GT 1 -119474633270457917582533759460388105.1787377624353345408329920553309053 0.8059893959082110792146104461773257 0.0114456639600117054035312326157285 1.0115116697081709968387717824017038 GT 1 -520806914766088517675.5148354554016908769005561181590420 0.0152856739611979459938962405013173 0.0319453632690814461097433536177402 1.0324667503945593153261256003118163 GT 1 -240.8336959682889209882961399782282441 0.3033244924810256073068131224953074 0.0776789826510119733827921939239590 1.0808619410254901448024170326163004 GT 1 -26509711314913520922771.7367005909790241136718487838928858 1.2118871757110011751411087381075243 0.0549878168646832890988941792139523 1.0565574593648137303382363279019346 GT 1 -10513438788.0636601099783271794440755412123447 0.0961629294473820570576850213781975 0.0790532525968776969018519349282104 1.0823530648076993878529026850711286 GT 1 -1506789988134432884099534685985753536619.1859729665753260005981958644433611 0.5407495247915783212309666081001558 0.0230566634138387320898039441826479 1.0233266259742225549947456920406324 GT 1 -2154851783130785131106339170084869052.7790132822489932494736844331687330 1.9367827439765910263084840058818191 0.0866314894779722217922294486349656 1.0906158538397175477961923955314696 GT 1 -1897795833160135152224257999710203388066325.1796625903472064158861339471760883 1.8088618463178194110995951621548798 0.0948186114135179937008284787025762 1.0996199259881669196621255949287387 GT 1 -689.9634279628102557454999579661928876 2.3816027598519459594375953332999757 0.0655396533576915892613019177468526 1.0677860856863214472794582102048279 GT 1 -24645876437941148988.2936900310285272949360769545608670 1.5063290916891671289344383719287873 0.0637548089646614866005517626562201 1.0658778805747526115038965937811777 GT 1 -1922124084668895.4519441459022130552855445403386747 0.1541918112961811092546513915858612 0.0303837560868909200084984198310915 1.0308549105967057037562765531574003 GT 1 -112513081223417700467689508599753015.0631851442401505698108623867098957 0.2560023791630775894227611934752723 0.0111487394762748844570306809004031 1.0112113524778724129074045056888722 GT 1 -107119505789824772.2355652201005619189955597612192392 0.2549454273954433191799566820933929 0.0704431264866815996985612954845683 1.0730472864807528996583017416300536 GT 1 -1013643008885996393002921712587553.6215951573246448756911847373645755 0.5108370849275789273604894256078953 0.0957394340083013528432721631641119 1.1006377234057015654974470179923223 GT 1 -497552346395439447478686142272546424.1125551155803631619727244561075243 0.2409210691720900290205595773769431 0.0874873610695555001528179286258801 1.0915533427387341689871733552070065 GT 1 -161476129605031271898808269.5835842524624250201408716938493885 0.3937088866324204974921882792584404 0.0678364113237960625666251984925281 1.0702469553684479533139318466123611 GT 1 -367721325728299596716202625.3928942980876745030597307339631354 0.3294147833435794991117423980478518 0.0133238998533649948788770420189869 1.0134134594184189980156081736268738 GT 1 -954707788131748771735403312546.7779621969136240419186622705098354 1.3540399511778852532619801053059232 0.0550431994321081014125440937075380 1.0566160662180671078398532797247568 GT 1 -62924662970.0214477297644956022987025500988832 0.9721900981019881721985005659091571 0.0072548476883064536581918013467444 1.0072812920734126641902700848493249 GT 1 -1904259436520.7830514488442958150367487573331159 0.3573381750757584908160843238969558 0.0346874496712598243087365207482337 1.0353033437319864959408888000222990 GT 1 -6417609273454412235656084.4351367213960862147631174832155438 0.3806553042790551054167007102986637 0.0655732127917184799156435978303891 1.0678219995020063496113407986861500 GT 1 -3221450225861925850351717514.7920626120231495013416366550183520 0.0482548609288333613369203516392658 0.0637773888613849632439564345945027 1.0659019983691396291725923687245769 GT 1 -57.0560597446953072056327887568320896 0.2285231558088697949972874627710489 0.0161847814804809648550250669792868 1.0163171856212923084728671146662910 GT 1 -52350406393656573404377887881383.7720064344945094351707039497372363 0.8336462443226754560951457645399073 0.0218321015249987648761919103993669 1.0220739483495311327008409203748946 GT 1 -51518519.1048063261743622622956110283203243 1.9139439117467030498519026513667442 0.0932608217742942627933859733815519 1.0979004355738779968700552561745208 GT 1 -67682925299277306293889945030421.6120254655268663387322055898717417 0.1097348082422658016067963090470864 0.0285656586323498767360685697518936 1.0289815972477226561432949455939664 GT 1 -1983282742749973354598883149937423094.9661439816600232670189697655883041 0.0002043054696605157215041803184242 0.0647560555994459571576522109117046 1.0669478806205488133229105562462066 GT 1 -37500.2207784306832336464208862499084971 3.1494374756915621649145403261263872 0.0419187135613273350077545861199737 1.0437395443338554125515136474857926 GT 2 -16059.5888192680615667271346420955919431 2.5716870861066156064427581954451240 0.0295053025700445524884847122027067 1.0299493401386883502672747427162226 GT 1 -25480779725073236894680706.9485730604668211093451816066052129 0.1971036247949667185288189951273420 0.0457113004587497260357521117424905 1.0467890332498627385096730557486772 GT 1 -113217829.9829666311629462327060586623848347 0.9925351171516232537706029496115177 0.0411806503709180983127198204731026 1.0420525955355537478752743112683451 GT 1 -404.1693313591053611975001332240780756 2.4236421537507705287316951610587270 0.0254199724346424317451068730578230 1.0257486417384323906400224881754839 GT 1 -894705749367365166.1780871947469190446223837845513200 1.1991007070188240530222375751811525 0.0242125051795749068122635102382292 1.0245104469925958393237928149776725 GT 1 -31425524179282721618799277253.7028346160991536823671242454564378 1.8673124352376747627064951349525707 0.0313082069388113918365981551949090 1.0318087847017299624181288210672045 GT 1 -7201601111601718125105360683862047503.9727427142167685548057140507860798 0.2848750442708252439882051758077341 0.0197330854799377171130195347391198 1.0199303826460833850974727465867344 GT 1 -22.4790103772320937924404173089518048 0.0844989963036695041635840266427686 0.0636493106263675029426306846003132 1.0657652045409010799019295371729278 GT 1 -4633669689864223166286661816995578278722779.1310784804507259019924979562979514 0.5966857954829082841474474490145414 0.0822971452270177573747991152220385 1.0858816283709192338936361572053938 GT 1 -329002124219650990860599953045128805211.0125751341588421212078817640297538 0.8764659191290248481468590896676858 0.0672226190224535380808449203465142 1.0695887122031227961577795675389205 GT 1 -4182441564084817460.8521592695767902807805468183954192 0.4976672634447459761691870252787266 0.0121305049962367064009518279628273 1.0122046800360944405661996623129004 GT 1 -512716438210584765177052.6526549981463753969197965263439420 1.3605754187605523415077516703074301 0.0813903673035701758988178330881242 1.0848940208658363137540591353817758 GT 1 -104893609854537921852.9332204110190118294005772171526093 3.3165512504992658784267972794447726 0.0574596288476764525757320920940678 1.0591765264634545453957236372239843 LT 1 -1068873081.8250837896143862436366241888375292 1.9172238474431797121792891940991773 0.0234624589475934025652273975146613 1.0237420849062619707276613010973141 GT 1 -11692878307280813004083212382416693486.3683634232904082683811288263615342 0.5420706779901867255300238006921017 0.0967219960563476020703378134203711 1.1017249058992523938502899598847632 GT 1 -1913762663.1191854731340655789342605628888334 0.5339680284495141727871932466548641 0.0993303518798600954688954521479635 1.1046167388615549811157289128719279 GT 1 -57184341.8710020760337884587587210083431479 0.9569522799678040139489682766263453 0.0778011603768291607845160828101140 1.0809944174805784963794432447143753 GT 1 -15764306401012021043586.0265852958139162649989840767748867 1.3927133045297743443707228705140984 0.0910488556945750291699414827268414 1.0954639328877569604327888728065918 GT 1 -415516206202948.2227716111945573556929896581032241 0.1971470706857298927053988375877460 0.0739076777384029331275149512154542 1.0767813492391594716067894776227803 GT 1 -18568887430365133.7895882684804814790902312101204301 0.5722598875456048106498580516918853 0.0622249654065579962944129932991476 1.0642451939291986157963338553811649 GT 1 -62.5375995436808154328582357132177929 1.8414750787716917795772793447772492 0.0787702365030596124647005567170736 1.0820458020732435621833906959596608 GT 1 -130146691835058588074960353816.6396213796000989950775323126395059 0.5682532765752798900724089272491139 0.0661274174041115759868174187500240 1.0684152712630587907549638140346847 GT 1 -387.4378425572924117807556460143576076 1.5799430825136262014063296830466483 0.0874956887108572707334456711081924 1.0915624688362214568626674333808312 GT 1 -2835.2300970118078166095570489533950515 0.4396845553637375461071463142793374 0.0497098346841711240362227441688087 1.0509879038494315296407834259768619 GT 1 -6190422522954392788620744247856593177924.0305550508059934310135971534900799 0.1282750231711778986664506627626226 0.0296933279791965779550803295346623 1.0301431007292360495184323116869647 GT 1 -982910783392571873747.3866074034024875292813550795038957 1.1367581109015231323743886456409786 0.0497832679008019254152578757526700 1.0510651813555192219651835259629115 GT 1 -6053089215002015862609293838.5694344174692474153342041955480024 0.4196868505428636905726842439821150 0.0505096494109818937212975094681882 1.0518299114049032666785624541375664 GT 1 -1236054364848147362222522477772704498.4269010959090619489086392260410254 0.1988997410442533169740319313693998 0.0511902613885733570273385379896734 1.0525469866562057960078824412778707 GT 1 -21537964940514937694055661115539038.0615765484590681670131412442413735 0.5024066733630527602627221847307555 0.0828025709380273471414766885785446 1.0864325310311292386163674535537168 GT 1 -16975120186997.7213503177093745836104946956232118 0.0362789486834783044529772776140052 0.0795526600023723856251854388123380 1.0828954879871333932807661984096076 GT 1 -17542817974606308597796.1430208766310339348999499395476028 1.7750142513015895742046289870908156 0.0425367111025961444275220929915270 1.0434678992394786220250968877751091 GT 1 -200.5314920565740571885186874689467332 0.2258941746630265429838816668195079 0.0910211853415212851436990991274650 1.0954334912825461072415686432067398 GT 1 -1332741768135242.7386236167107187778019220581084340 2.3967244674970684465389178163841273 0.0573274084296202520985936784526891 1.0590362553949997228300608348009721 GT 1 -322049834472623684887357.9747307461629819215671684768320076 0.6301907017327875227034791859105345 0.0384583606574753273512878321725027 1.0392174082425168603112664962614106 GT 1 -4400022.3649043972305908438828140652462826 1.9731011547098258024460537402401215 0.0311661881710557846442369382033179 1.0316621866204953104522876981938497 GT 1 -559489825.2160347655313923704426063086328804 2.5873218256433186592255761096008722 0.0591142297155475182652586489580121 1.0609335385990804604924278660803759 GT 1 -475732997951799926457508707.3748101498446761247126715854757959 0.8787850069468741097576032350715838 0.0556334319930373973706644731216900 1.0572408746441398135943915516121819 GT 1 -27341578651656145936251443.4865039589201449470651416296610453 0.8385234216376262919605255869304662 0.0662036227893700160009620726435440 1.0684968760730553378494585353634172 GT 1 -1091659887870084163.3873252025896213078673718122166486 0.0776765609893864691917222870171734 0.0285694847221007861351589955280158 1.0289855358538874928218239230409876 GT 1 -6704444585086.6546287616215218418595914312399539 2.8746456511946217581317768881753389 0.0023171421771036967703274082427021 1.0023198309052848032444755478591718 GT 1 -175282187539813.0649695704314834684741530372449698 0.9558539320344883260304402183225254 0.0607194039097318601264406039932633 1.0626410200357033939211100342414317 GT 1 -15404803345704102743.7224210690983003582250247904806122 0.1998825736375768099502113987526053 0.0282052692493441983524910752960924 1.0286106791791238881201290985668134 GT 1 -661250428977926200055.0667748046445166710974920474231658 0.1345196455649169025073841550509877 0.0099147132171418373326829037737069 1.0099641912985368676734422779640264 GT 1 -25027449782054959310.5695715465743317797712112077868589 3.7647951370760973946422713217187135 0.0882108054107399777608664455435175 1.0923464619099313360957339537120493 LT 1 -24.7249725636292757680065008902178329 0.9228993960820469811768188969822294 0.0907890746681314178731247405712097 1.0951781706528608752117820423909595 GT 1 -5880121362437898703699496120468828.7098560079469898012965662353960143 0.5209853308309758906767755507703781 0.0434842034531560390354774891047571 1.0444579752911595123663919179725744 GT 1 -70384551694155631036057760184901486.1309826056159883365786623223469836 1.8378207543623294034910802196463119 0.0939169201655701592831454091117944 1.0986242775468077830492585088345333 GT 1 -12921251180584161619751918939.3136269123518815658717550358418679 0.4699916143150852506520176771672214 0.0890847825803285623710625587663558 1.0933054514540511464809132369661276 GT 1 -45510900563428907591708543552890.0476961870828193602319145099858649 2.6215759671615402285337069168048450 0.0559745365403085222617490108673481 1.0576021391965178016093318781377278 GT 1 -4321383701349540918540655.2215652704326446561802450297594649 0.5833045637336973524210267738177773 0.0790368297782693539975470159596035 1.0823352324278944564992311831933709 GT 1 -20147874654127449517433558641.1213099200496810039377363591956914 0.2603753737584718875791189645354768 0.0452701648083895594207610252063765 1.0463268736110891942224798196964610 GT 1 -201004879325230459813986115917614535376927.4017451775712423472401003911018433 0.0774894473175598622560768190844060 0.0718611601592919761448322686336572 1.0745739454893655409345256730764337 GT 1 -139726076774.8116309754819168278356675461051042 1.5475428735419094228173300889642859 0.0935251287302303061601141121451715 1.0981919697784376722745577258603490 GT 1 -65272747847794.4955795368780546668503694593626889 0.0669125743320040225011832655176293 0.0486394687563729323702818378718983 1.0498621807681421423878852929165837 GT 1 -90767106168383695161759229692968090.7343954231737350448686823673475588 1.5140849262380098827951105923169505 0.0091289028394209776810687980174847 1.0091708266133698737431883429724411 GT 1 -76104313477156951595957078309859394.9106200379484567197777062538591390 1.5366645058864046699564752755637704 0.0969685508602459221058930243416127 1.1019978987743200145775826252076474 GT 1 -760952799006015516553129118242075803.9390692484957953459426758382626084 1.1409244303237827083761916890750723 0.0462235186521502733978414101349107 1.0473259312665921060164368652019707 GT 1 -89548920218612945620312135697.7606886519992678523299425444288545 2.6145771116707995881112526615757927 0.0514693642406742661190075772049119 1.0528411909622799190354207669258619 GT 1 -14399561918722064405898940181995861461791.9267651341081975461359102911105894 1.1981316900307710231026343135349346 0.0224360708960055921624800042329743 1.0226915886432462939005902234570809 GT 1 -32349709648197247946.0507364233494946549129938787408780 3.1852515105455061568974018113720126 0.0920190342246333045166227713457782 1.0965318634030259588312042457565966 LT 1 -1374736829399509323569041550722.5292597223278745453302773095498855 0.3774261347484220393835573849304062 0.0928503198450021529077323320545320 1.0974478147482925554615491524800708 GT 1 -283285743936929279936.0481903187111167004741132220505863 0.5353376314476886214622209664262501 0.0296449421423695192841351566117062 1.0300932354321653273815318099528804 GT 1 -138573114517861836369869910558848691715640.5018524002969894217735071083015094 0.0824309586839860898015220781019086 0.0820242320430945479690446259609497 1.0855842852711471103435006192930397 GT 1 -1127263035408079427182032797.9711940392765410202069439751344808 0.5492601740580863343513305821790682 0.0363584622153041830420680013678932 1.0370359022955516166307009065964477 GT 1 -4604815106399940816163441469426296943561.6374526163510856950127761795348525 0.5925188428337150373342910731616290 0.0335615769306243220158944706443815 1.0341376936211591119300809923311076 GT 1 -425413577120597526357523806.8347600149962224567539073804153202 1.7690099778873700144320237894885631 0.0810226845567621494443924216088029 1.0844938408884076434300756658892592 GT 1 -153062037165635721148813625525795530.9338142710045112170861425399748320 0.0363161111547981194109620882653186 0.0520227282110964231347991573242563 1.0534247519207377610478699922791520 GT 1 -558299018486735.3541571488875602073997225024360970 0.1607064099989089662644906424791625 0.0316331518002103461309192285222107 1.0321442880855980667992040389997441 GT 1 -4388585.5634916060977945125420651950724879 0.0056239816816541664355760816211154 0.0210148399312422020144350969201751 1.0212387948211027335700107385878895 GT 1 -9835.4244823884026001244840036572985268 0.4605974550775707824095095105530091 0.0326320942152320472135522599313646 1.0331763948880842481008751417931640 GT 1 -767822951004288458995488333515984605.7887315374922775936335029408291431 1.5634158792209529784358165972028682 0.0419318361937198096417931321022058 1.0428363513438517976370246748970427 GT 1 -738066824119918388169777618040014003689.9904913505350465396444583208110208 0.2111087638909247430083105277674962 0.0786213042250712349437287093301092 1.0818841483289949830946802518955300 GT 1 -2361302107026.5722491950976480610528888748217831 0.1732301720084604528662447001118433 0.0484060312785344774357699565578411 1.0496168386130736165875490742490006 GT 1 -11950382119149498334678479835950699.7570637566152585220730989641859055 1.0141520729974765946531315236157063 0.0537992607894266178745585312216095 1.0553005345440360529591364922235528 GT 1 -240440146108189915562315477.4263741823086234439542262481741620 0.7194374464924516492358985456554782 0.0992343192055047111888765544893437 1.1045101209076324120228896698656513 GT 1 -2695172967856734672637336618855.8017505770667188494202717393112752 0.1985399011686705533613933246145191 0.0725121223572791891162937724709668 1.0752755545129447361905935573105840 GT 1 -2596300876907227068336467705300018.0124489440132061784014980459209620 0.0353953452803233470743352670104512 0.0448493014561484548887613423153250 1.0458861514280841765939881003014871 GT 1 -14369286465.2976223484488796360124323002455215 0.8100614867110526305520706669940250 0.0711195332552407370043643012133140 1.0737752171822886845722853988233109 GT 1 -5662860435334227834383660038.6430642833677410594259165737543892 0.1566853857033078669793996426198661 0.0969032085743878936090671603458404 1.1019255425767710714541776314950487 GT 1 -306588159586.0211527445392912874226804101096575 1.0198052313598320714303071674030320 0.0394940342070153869500123168098563 1.0402950856600873745443332511210735 GT 1 -606867181.6406443246155946399152635162092681 0.2048895100899994493404820272822988 0.0598240075535726856876751815293082 1.0616881952358513815712894585630822 GT 1 -100264721399421725989261488.4130705575534588757307840378295570 0.0088084360754550326696800680986743 0.0072345234938756513818124863422005 1.0072608195620732378611144095272312 GT 1 -19015363524517508594648732407037.6080223093087659339331390931258129 4.9494363532324203023537594085854684 0.0925385695958899962092523221398501 1.0971042146784316021701424103308155 LT 1 -661699027224216840958109772.6570933446227119420457820889912806 0.2606289129671761543165966048636471 0.0669435378891306605836578522610869 1.0692895632339496576710878170927797 GT 1 -44580464257377863770273.3605581419531530352853220064831642 0.2548706008693216811407648822053397 0.0369294052077203767811238925353110 1.0376285627137577993010972889219605 GT 1 -27691587552118752.3127180702927759285216963223374911 3.6735994664950484408285699518929844 0.0347916030053779201607399110864244 1.0354112455233279013397716884508558 LT 1 -20917654847435839296418203223595296456105756.1132392285476722709138189351032150 0.2936330476370324678873101810904526 0.0211632728308722849283931634632211 1.0213904254682847294122363258013742 GT 1 -8234457591.4237105521799469150363081466051065 1.0639916263933465359517380598259765 0.0675930721558270255847605669215442 1.0699859417278325567556753724396342 GT 1 -22369215095383786815899710974705625.5003241472406338671157177165874637 0.1780434870450356505560596124452777 0.0634172811276309330695810804475992 1.0655174333186012967273881930881220 GT 1 -74783303165489296884262.5113870290445268690325279082703292 0.0776346425150907159978018609900058 0.0596394861133260996121800421930617 1.0614919518338037700368630475710006 GT 1 -21209.9585037705648144327899385501248294 3.1488334386907460736806623772104043 0.0392202783651187064310727876218512 1.0400101141479997709345496414173035 GT 1 -4973196984274993638854720006.3300065162706304475417779521907620 0.4280501773330063568751484889014080 0.0253715063843663864475267514708583 1.0256989127845935591855182331675703 GT 1 -3879729582476.1476171080377901634762226526646806 3.4562079794515527364639684940143778 0.0836266889727217589929505314499381 1.0873314525422229673790364032563509 LT 1 -67496955440498768452905.8613382425377100901462840047847647 0.4284355731914200562980610101989495 0.0104987372774261066191938914572914 1.0105542378184775235151556505814182 GT 1 -1665122210503188682348959226632748408440344.1559407671485149031557696600288686 0.0074818916735170398451889075493593 0.0412683121081582767765022318587270 1.0421440264655117622292836140636278 GT 1 -305846380921779464265208.6527143057206369027664147035023887 1.0817654174885595374914387439475488 0.0370545008234092506968233829089001 1.0377584636177601140777417923896222 GT 1 -8148895500039.6218396401392813697790507239052075 1.9843135167476197934048030580487492 0.0455900929046598947822102072511183 1.0466620278087403772082915966491685 GT 1 -24414.2179005022582479346012559072026965 0.0463251658095879243334777732813558 0.0400239286234761710252001890384834 1.0408469204803586368317410374043170 GT 1 -2181633892490417426744149923262209724.6573710964487216962455256179309434 0.3349641366768498678271063027236996 0.0939426238581977662186508259761444 1.0986526458695220217546227316351349 GT 1 -75391.4109146309882127808844441737517081 0.3315824568977108227268959521212399 0.0287333683121041220204946532675317 1.0291542534439123217825205102115261 GT 1 -17201.5305110609813036977621908791883057 0.1601098752955911685665230403134328 0.0298071290737119824694615170592865 1.0302603912434848039030210730211410 GT 1 -10806377226557364286770.4670831404339426353888319086350759 0.6795608446333137063215197046531408 0.0952187248372264475112051061738666 1.1000620493957263384015964391279765 GT 1 -6354444939932068026787.3412980264932618610576479057347306 0.4767846972436009200629297735564932 0.0131164928697037202166675530638886 1.0132032737380269891345863447356860 GT 1 -12904514862320974560.9776351659652051049293574783386423 0.8949510248934961547804701418472093 0.0127105248815163059931763817250729 1.0127919946884601687945854558580178 GT 1 -11910763531729658285873748176708553.4128139736716142031789770693704867 0.4016109855026517455028283344943577 0.0253651734337043553462920493442461 1.0256924149958171692266854744962314 GT 1 -2887967527371174447.0434415858431374316448064288193677 0.8962988358274882527631817953168250 0.0879959889496225737662709564146371 1.0921108908359229998702816436074038 GT 1 -432974202869233267095356720993.7950344174565285643747973762350654 0.0786221250632951939851140109371258 0.0608496430551203214565716096910913 1.0627796880505023598072456314710562 GT 1 -34343496805.9734662016578945630988191232657860 0.6952679896949026452665032028341843 0.0858768404766993852809904073983668 1.0897899687683522112182240733207507 GT 1 -281870893937347683108131738525980557472376.3522369599668035137327381017620225 1.8265279324098906474922847752839125 0.0361042221827150605001950045325825 1.0367721045137856259733392800812980 GT 1 -7769605089525332380544105147904668774.2393296474757014590354219131600801 2.2062927072057350266560266811619896 0.0770055780527264908655472857243763 1.0801320878916161451136744082048280 GT 1 -52149885815590114700027818.1406369313012498673865449136106749 0.2816522571638531883634379188739484 0.0049164820945500715127227529932662 1.0049286077526899472307688996467190 GT 1 -1356095178058658353017951940077159617.6086199801912359376083420380605716 1.3401253852053716863619236525352809 0.0977620124927818003759413626993071 1.1028769494772488007152003306907179 GT 1 -75701851968844726433632551458.1909199226937175297888502271143521 1.6121954776365214145135184732963858 0.0676273443892125178818866051213209 1.0700226991373338484711040016722382 GT 1 -2839588138693491661593806404674826.6281427279986784358301297604231874 2.8630747438417526123601548031791849 0.0637564596635211977914978610152662 1.0680497074074161032614119998046792 LT 2 -5826764793560.0624663571573531797667781512784019 0.0962373660366139762017818851738165 0.0818183210810621716004252121327501 1.0853600006236122287298164354124589 GT 1 -1882088430833875060546.8527633516063127133496743251335962 0.1075310287238651823376694791314758 0.0859673288417120754447463626579614 1.0898889629170652901915917556945991 GT 1 -4597297138498873272707782476537990.8807901962236729550328601505983374 2.5119924135631889871420578011649514 0.0347134664169427552972329196237806 1.0353302957241440707011129711966780 GT 1 -71810647393693534874555126833906395.8746202262814123095977182480240133 0.7674731540181874021485001054468889 0.0126728492032005849334447556629883 1.0127538346954510657157664168674108 GT 1 -168106951376794613312030.6213491667372433742797110850924028 4.0323377140918653151903748510183395 0.0860635264551976248713690506904162 1.0899942137237904537103147778295386 LT 1 -218354359866678676826259191761782617978286.2919589198009953057461926859643789 1.0235558482632811239761666022292682 0.0096337799436512249309909156800451 1.0096804850079210237855349883773137 GT 1 -3146801109087485659556552069974127069491363.2982682100487080206350515959239773 0.6352259202420865140286905040421212 0.0057147469680958099650818705711977 1.0057311386137866918734772972866491 GT 1 -2635970131151.5984302808014732725339532056697258 1.2103776101994831318842783972362317 0.0385097230906422985288623313731178 1.0392708264231982226436350240627166 GT 1 -402127.4800541791453102701802128197963613 1.9175885401508408005669175544150811 0.0127011466757531337239746718387179 1.0127824957912691386461361779221093 GT 1 -269667205144449394910644268811802186391.2861855350221619480693755677400365 0.1325610378201514376408648695904219 0.0783849898965857449408145677041432 1.0816277021685693185751403964467408 GT 1 -41863.3324961238258945064860333381345301 0.7958733439928802543111939608723465 0.0198055338891147489009205779206685 1.0200042921960758415847950818976012 GT 1 -1476498440.7012569413068760565758875080701403 1.6111507093238593777459646497056642 0.0164803361963945849993356917145281 1.0166176476532450060307099405685083 GT 1 -4956044386292487016144912271610473276613791.5234404312865650595194714837663999 2.1130122601657305116852661834205936 0.0974274150932533522029460667594645 1.1025061655196678009085947674039276 GT 1 -60482956056833560011887720332021378.1736309826474872595851857736691360 0.5716381454792195316528991556492156 0.0552280401684609745040931946917358 1.0568116929564814489129984513092863 GT 1 -33456000046198267967.2635735216410277418016899231315395 0.5922640673033114812251070316413789 0.0672012630242105747116798957830553 1.0695658174007736695987970352390142 GT 1 -10474377155521820782272773478890.6282974675502905936635508426048701 0.1055433036717979399329390208207422 0.0481543913321884488416435102995362 1.0493524331117892612679215879143890 GT 1 -5586436916319548.8295089094492554984561937603198207 0.4769057421214124359043067650241030 0.0724646876178270131022845286390303 1.0752244125760486500093851158000949 GT 1 -1779311770838273799153.7684070596539922458814705066440956 3.5012899599511405871245335762566239 0.0235463365333395395386130924098231 1.0238279814383135469069792966132681 GT 1 -575458876952962741968.0388831284042510668618709394660986 0.3269640832117073521973283331800003 0.0833856664493276993303579769690398 1.0870684692913580630557344506150989 GT 1 -179502.6679312216181042083970376605352879 1.3488331064696086552008011050143247 0.0491319826625397368065865172057572 1.0503800090990644785784893787896332 GT 1 -11791526092839192621400885087573812.9469128583466567824830883615633704 0.8834706048311946705934530606547409 0.0489167538100370332587980082601878 1.0501536848419200035002814935163800 GT 1 -2921596578880797514714.0983481952466109030520848787949175 1.6639811392825220306980004084863354 0.0637610667867227224400160359886275 1.0658845645535166720591882038190770 GT 1 -589944253768.2296508434881140886726980632385632 0.5121931226059626047864296966233766 0.0979723650346464878459279121829621 1.1031101219549569127837461669095470 GT 1 -276804568565.1921735269264969192506896146719224 0.3200320976135028174147605919997127 0.0287059689337097099706573539081886 1.0291260438966672109256952808888008 GT 1 -3605893563951.7820188252465314427583279939289258 0.0501385812393936854762410961232065 0.0461056734114707629628559032063971 1.0472023824442909547874799904485138 GT 1 -111956678703676057477930866889485933210380.8757577302244481082543679539437899 0.9321944191830662516313901481111465 0.0042682577229105506711396690041793 1.0042773927379041076282886146595378 GT 1 -9929756862727817397.7811826065249077412915576982830183 0.2461390860464518374903755027514381 0.0874338624298189976840380854132636 1.0914947166230391491442276726703685 GT 1 -491967848162759182368067433394820824954.9673443420002666328906267630623351 0.0459278747291382362401196950610427 0.0339976544196036524712824584044013 1.0345890166355107149577204301522226 GT 1 -10533200362035488154.9620507378249419079725333132664434 1.3174692251897158663981817772031942 0.0888370863699964715165331581081468 1.0930335682591025141157303423200064 GT 1 -11099100108816371.0979967975838871278109985902047647 0.6037221332971968883669829656747534 0.0738648587290810181139869273525838 1.0767351140869737032169091466069148 GT 1 -79105803737431.5649009433748799222452130839576164 0.3746536461982884151390407200779404 0.0737946271549204776759439325564613 1.0766592839967079172746107888621126 GT 1 -5764939211.1902705340295883074563732616406594 5.1030471970683947757732229546515217 0.0265780440426512421068154132666318 1.0269376258916656046272691705473422 LT 1 -186902528347954908487577241858659.6443804858699559111042113050206409 0.2019696814751287201886848502196802 0.0066592268926582076675227706725774 1.0066814984734666690098531633584409 GT 1 -248373020360044606286151.4623868704794401910306113004567790 2.4721477490160821564512093210666209 0.0853631160909697989192485044772697 1.0932089712012397822323459361747922 LT 2 -97.7677303106677254629398771722585493 2.2235496772726775875451208262153986 0.0307367920508346108961944716727763 1.0312190755451826445785015123049100 GT 1 -5300680750907365581230777993013069.6175812369603241936058191428774537 0.7742668597607897701996736445489080 0.0238399785002649846354867403966905 1.0241287495537885804792826490506456 GT 1 -147848620504517792.3835748854413885949954062025609904 0.0772117797504694912611179734558834 0.0687611417928881512510258173002434 1.0712394737012974876542403021428050 GT 1 -78713117.1156263931502095335388140458586716 1.4888898981836550612222846430626331 0.0737302722619927833544302914781998 1.0765898040960784004497867971691586 GT 1 -354877648.1930113013683917773652501340894234 0.1394298825603643042111864749687656 0.0895275606834628046740110891671372 1.0937916501061821214698791788091227 GT 1 -271897368002196666.1533776400215068635113713579264973 0.1457477402157947835283999832476209 0.0464679217808280882237695041066333 1.0475822119074874542277982488958836 GT 1 -42.2574841398776851414289093588459645 0.0228484114223009762510229920344171 0.0015046814330444679248788519925886 1.0015058146030011180652332622991674 GT 1 -2.7583495949997097504541459203297964 0.2095135198764834210651876106368667 0.0075237313739838242220040646960144 1.0075521774109228377251461956590824 GT 1 -3478060447286432587.3426857435955032788771581981375875 1.6141069529994897889460482264513321 0.0963461294487935204599452646111389 1.1013088784681348035495940462809605 GT 1 -952.2168297413170501640063889713283049 0.2615990653710239758786263367575448 0.0815512323369966380555413049400745 1.0850691541482688748048672775162065 GT 1 -32819210171301421994794987904921756769170.0920215347072241447812536947803675 0.3929790922902927882054865598670705 0.0253605061867687150337139591809365 1.0256876262937993429097916789438135 GT 1 -156931820040418590681210188407461098.9409954509534763023605268537636612 1.1375580053549611108955347293450030 0.0594600177431335836255460014621059 1.0613011194414415729233227753229079 GT 1 -2897442895711750090238509799923344.4567133587475240015446911197226136 1.8390161656356298789751176477534874 0.0493432251012349290643619176591172 1.0506021912556439513957965406798478 GT 1 -39513821802297563383239609997793407786.1276675826478044591282964100755607 0.4443040172384086183552680486213913 0.0491602047397367367716844424735929 1.0504096898702240823193921677594876 GT 1 -265364229998257397235145933709262540276.2338782612026489348105576758215026 0.9234304865245254902317840734696023 0.0026705595177285361632700108329889 1.0026741318232511679392803376431697 GT 1 -2674826191276512768572.9585840110777500702370393679085069 5.5962172754691041911819479620118032 0.0763459900193556598225821299325648 1.0794177255365338167686002349445480 LT 1 -4.6060225684103153997972682245554447 3.5705596473186081375542908420518180 0.0077006360894620292809633518899713 1.0077304390875039650456680911913801 GT 1 -1722865.6198602304086322166555204364816919 0.2927678690416039325312789650140863 0.0144649091459379414423058012170769 1.0145705458654310587347094613960698 GT 1 -210894.8196999081995433454507315191635503 0.2658815388049718989484353017466156 0.0720787780663978787694128001821916 1.0748084399570661833450313375780310 GT 1 -646690627691.2760779636671507510786406824182561 0.6426414844624449523992645632292695 0.0630419150617384770960906414487078 1.0651167310012015762747678224856218 GT 1 -62623447667640665931851.4444137631054331877710921548107229 2.7480030027024936453044701598925155 0.0502710820624588509673156076683835 1.0515786846469071884626475317227784 GT 1 -43.3831352204308596576238410362403410 4.9821255205134800122411049205190432 0.0762509812281393486995699570703784 1.0793148689429033195568464976068225 LT 1 -192456977068749784193371112389862396726.9077797246649208129682157961600360 0.1319675303051297783458077651771843 0.0538234389159709962782932011696291 1.0553260877215571847255100923807460 GT 1 -3526609365948884887599640.0903970382472092154636943646010215 0.3654476271539558313966229471836785 0.0734347507968958932035278172094451 1.0762708102609223702541929477384241 GT 1 -1956031043886603863685.1634385818766551530398404269921018 0.1559373286808232527244843676477287 0.0869088239839289710482163149252298 1.0909195391716548102367103898834720 GT 1 -18136833267682974903798115896695176108061464.5577023337058589519453112147774019 1.3999118999379235161856508224125364 0.0894643262691886512655847427361851 1.0937222002076929259773456597964060 GT 1 -181411544156767864161111239156865.9855826958039763591847199949457433 0.0373051195368251189102480769585983 0.0876074795231550953087630117137974 1.0916849862415801794512435869977317 GT 1 -803419759462971831351.0921070280549442922234629526889911 2.1035205048921262896052102233175478 0.0775248957384795333949453927860663 1.0806948906820015117519633887447890 GT 1 -2619530679589951492749284267.0298939474029116229419125159246206 1.0475274679349657023806211346761526 0.0945481330347489934527169391006027 1.0993211593771465974701310324650443 GT 1 -11922534569.5772745855743766960441029930874560 0.6540225677960292792244548352527382 0.0243134007529746465230819586400668 1.0246138514639094661016121060933617 GT 1 -145739474706430528122057123713.6898476164317484627868007635312411 2.9501419505036571735249589369865539 0.0969031317893569183083045074793242 1.1019254575526314221495136424693923 LT 1 -27510384298029.6581057716164947872000017218724817 0.6539523213568254616660983071050801 0.0929727350133806394759497846299437 1.0975827686940938255546502359711089 GT 1 -46436689914670316121992023841979.3058370495582129187400007961780274 0.0080839207999764791910475157079426 0.0449909757636540769930467521717684 1.0460344890839103629840835705459267 GT 1 -569438603721422899075490402777.5107979791381669817547706279313727 3.8730333565990972497609459958501907 0.0738304494080256599384813276432044 1.0766979611053822025083548175573906 LT 1 -211396291145105193673931268589639830053.3274221282384739892307101672222410 0.1863574310253746313642204955567684 0.0488338310843532939966356702465975 1.0500665009794067269771706106530749 GT 1 -35513851893734750527.2695314978977526359941905072252895 0.6367571114777728662374206379674817 0.0507510375083196711489706839403731 1.0520841728477198499438430824068483 GT 1 -2858874305033539687794715856.1203880497566059009336702937818636 0.6558234143951810304188115000889479 0.0540342575523114718075885315641012 1.0555489236433790726568923547259823 GT 1 -34964733331659695863020.1264605408361463791609985091024983 0.1126441260160978549459540283322517 0.0589274710948621427833390597677744 1.0607350659534550453298858190433121 GT 1 -6007443054475013832.6646360294506131807267931068125356 0.2472891330988754360945123290213317 0.0005864170503016143198581949264219 1.0005865890600296353215551046270472 GT 1 -17536282521649785009533018572864346980967.5137179480101498766340391562003878 0.8302807290551655498711853313133001 0.0260678637885443416508126777051956 1.0264136531146231976011242066307968 GT 1 -15296036471.4348466902058611351350674388617758 1.6166567513451343605441754648117492 0.0675546360220232579962126063609243 1.0699447200890166972736922619731219 GT 1 -159099460.0777037538417464605357922091128882 3.1889433862893978698846834718421591 0.0535169938829009274704333837289419 1.0550022629396909738185554052139151 LT 1 -19736915682919873847829919454637977096.0455162755990568512100331242116142 1.4449629847552248054983966837032643 0.0673130745837356500499370780021501 1.0696856913423568978555044660140718 GT 1 -11788844403562272400366719224610718151284786.4271145921486361329603816037545226 0.2650545902390560286778696604364368 0.0461420577981879682459217574167228 1.0472405261669501731800866709822453 GT 1 -64135309885188076909680.6622507910686028832537365759773994 0.2570193404014070565667586221218298 0.0745998402681768198664994983836382 1.0775290299008421207670178121348032 GT 1 -76526425225218928672163.6212935796922583867347514342294609 0.6683877245052699249621928825952969 0.0213184805429582106554381924456712 1.0215490014740805091364831426527122 GT 1 -124332.7342675705584119403306495737979562 0.7149429058982703407007165657652163 0.0325373126957251075695006437379903 1.0330784209156638169495087278603584 GT 1 -666364011.8104403581080550277826892805480930 0.7762511439241431124880956329581816 0.0470666052873740603244516866127988 1.0482102678935261069446496944848998 GT 1 -123808676725.7980933718173738339193857118053708 0.7772077666726707901450483898105341 0.0167913181147079747578272099251491 1.0169338905360883140701804948518584 GT 1 -15825610361.0290217505960300889737758507102753 1.8105299113851182402514998820743971 0.0749689788288688298262956665906388 1.0779280056308215029301823262477931 GT 1 -19525306110512245633268815.3391679637728667673434470294403239 4.0752175818538488297860729668060278 0.0910316127640544722560339034601791 1.0954449629276218667399234665476143 LT 1 -78830495771.8831070448728201773493186559816946 0.2909384787698653961700777003242892 0.0166495674468762014599318662359343 1.0167897294304937373822606722060406 GT 1 -258735656422505.2181588717744228265895772771608619 0.5869270282045600922581905146356945 0.0279958616680786158656444662978532 1.0283952169876322912429660221931032 GT 1 -76349728071745953959642036128101.8987449694875392098578568613579674 0.5467459536287359494264973325279338 0.0285600892652445487537858464176563 1.0289758641261896320026324174760190 GT 1 -159518.9741748111655947288159963995922238 0.1083873888651555811818717754352424 0.0391102498886327727276181427597393 1.0398956007228515992802639154998165 GT 1 -118.5543516473870141233282556370239030 0.8227685815592126009070322261949270 0.0538818069866795609684077189713928 1.0553877779741995833944073423681889 GT 1 -1009422443.9991201839911349930874817390803330 0.7133202041597164445238939529233071 0.0730931178462622646727672229533613 1.0759021692128884617653196998517342 GT 1 -67399764615404841865503106562398938.2183595466262487068744202038934533 0.3818823278568990266531681941801759 0.0226996306562475062987142164855029 1.0229612337148229876130308483478989 GT 1 -34268437284204203733.9662995211880330655420685175604572 1.1263470969097264590568069224209870 0.0486549316204489355676433883708039 1.0498784343221122426041692285277854 GT 1 -24590391.1238632594093917069904028246911636 0.4000096973047092041253255666030598 0.0771586772332569507769065784428767 1.0802979739205545048537788427784665 GT 1 -500956375490685240969304694432999958.2645987308940728781212391826820514 4.1082676440566791147001770244015631 0.0312658089232631420902780959567072 1.0317650173362645062646102944588617 LT 1 -4.0860179752998535711029743214922709 0.6570614646348252274475495335494683 0.0745273430085052751761674925444865 1.0774506914444624267966759686954367 GT 1 -5068674840813388735.4093439740102653071486547520846921 0.1228001823292899518284603102645084 0.0234527334025072806663879145554848 1.0237321257431492282733457023428953 GT 1 -21488390644152211742127356462481676082130783.6092866955290887569469433700590000 1.6541023026591269890339439930066149 0.0453267213419736311440775559878288 1.0463861136250918794014738539259050 GT 1 -150352597022321777605.0704518368719785136957988686674388 1.2897959158134745640339040596057684 0.0675265124350478794203704921520044 1.0699145594340860630277940809293628 GT 1 -56299686298045144.3127322279586889731328346008178032 0.6128278741358376160659776591361723 0.0119306089356063254858625340185312 1.0120023498297082668426264601296540 GT 1 -852109307.3918932469902062589499802068136283 1.3644610650427899588185845850540556 0.0614578469926622448126053134068276 1.0634275086660597933674231865526788 GT 1 -621.1529244688204451078030096715267125 0.2095947218590991496811422489736743 0.0052523386617075439089645836061855 1.0052661806823437180386708771092047 GT 1 -30734569455906757572695148257122965.6136970119694182603049469677937550 0.2975824659905417145793854273381397 0.0356157168580960255380276221382730 1.0362654298403704351996921121078168 GT 1 -1027237623928.0978988419677931198975366422504232 2.7836458620250188775612197712083885 0.0900951757055798645415838347020259 1.0944152736284698867075225986700045 LT 1 -1228312808706454719974624239243311745085119.1363989949412885269728758245621422 2.8279429640765618960309614230930771 0.0951809641718536039291640997427624 1.1000203156878473351607278714795537 LT 1 -2587128702225224145803407494243499526133.6672022819183640233941487567890886 0.8323896581790712063997211379954719 0.0542634000541624367205169235067196 1.0557911842758649829010474672218283 GT 1 -9327786000690044606586340393202577.4713081740678213929859083072599209 0.9298012076942598148871466980148177 0.0544190416245536317047176480580929 1.0559557696148608099636676556090130 GT 1 -223261634952915739644629205269966086.8131868033556550176424963372369058 0.9600207785329920755193680865207807 0.0960857093782143315228209848241249 1.1010207343439187417974281778609794 GT 1 -415245410997151889719779298.4465914317776021603412121690102935 0.0039275450709662201241651149799215 0.0483177600941758557453917844522918 1.0495240815197817548193954065583351 GT 1 -2231697227428317175021873540394858293.3402586343439576327387421003240543 0.2240867789705885671640694520663185 0.0946813160523456484539023665961352 1.0994682603091444910277513643752574 GT 1 -2.9817660515996499964751227240945483 0.1030973933263347952427239330907726 0.0959272196481340047326801386727768 1.1008454125918655666221936320546046 GT 1 -3427609613897448838524352536265669.3594977989718086872492246938420044 1.4983072873799956078963249228848724 0.0559731504303435647214949017860016 1.0576006709003743183820577395649621 GT 1 -38.0987080035916297422158879937443697 0.6244551832381747384379769695671467 0.0990410696448849954734674389441050 1.1042956047044736199659127270764924 GT 1 -424069272645.2768210997070724675901286876180645 1.5303246240443878664349333386214281 0.0871968369169939449020833115532061 1.0912350151872010260082044944242633 GT 1 -35941993179065.1506712148668098084935069637378805 0.5314521476781208664084399008623254 0.0335789566779128610335018751948542 1.0341556770778885909695178593930563 GT 1 -51646830595055815543704357522019343782.7823793674060730986012614523346716 1.7969288722987488032188697982028964 0.0768531423382021180864185686835257 1.0799669480764194700287130943608985 GT 1 -8987616353519124181295268754951342671888.3600670014624157766304634045319855 2.2779681256548647492952231257327916 0.0945151178900760337439448118925649 1.0992846974248520428391555625214749 GT 1 -8133771483159888584454.3470105489352772765138997717781372 0.2883387025478655048564942354185361 0.0022476498580006433997413176032041 1.0022501796143245508054477709043914 GT 1 -4895002122537979240807498320209.2858051697123188714958414776322809 0.3219994944082971826621425724944134 0.0193720968818135038963302354713973 1.0195621950217853834001001365361811 GT 1 -2375053.0751926939027721359329363096000667 3.0138045388681464849006364038989661 0.0826666630930117238510423046277034 1.0862843647013130421197703968580462 LT 1 -88570044.5716264548160403295708878818005960 0.0053468264078093042615366621954489 0.0376776218209276923272609924087170 1.0384057720018090114947037807671528 GT 1 -32536688909959277973164673886532786582.1111593543035436838173886519543337 1.9514369281055889149985142446196346 0.0717577461087457507345238952866020 1.0744625308116332840018433564994370 GT 1 -53498893984782036574827133.9707330910187564116190266878484266 1.0713736100716142669922590835310065 0.0687419297519560320843900456568563 1.0712188432877496532819955762733014 GT 1 -236659118818291.1085409138035193652966163011523824 0.5157544804732830448624897203743767 0.0713757169552265388889440190884884 1.0740510535715513831313439662072805 GT 1 -31375550351239473413729773577.5860743084131477638564169125697460 2.1604930825431002665957031138181428 0.0435124711634383452413737505014592 1.0444875285176586855150307808810013 GT 1 -39.4996585786008129779499055460367589 2.1957107045883737152396097704647805 0.0423285939106689637394713780694453 1.0432505597559517480403145040509951 GT 1 -1112299729063.3640052931355289287182448507020068 1.7573619709687546577264701099377258 0.0053461839203220183482872016475562 1.0053605259009929827313949868281781 GT 1 -855168614209136358298168740.9151219454089110074736222270576608 0.2096774031229067091844550155211574 0.0646025044181023815378917161731418 1.0667837110705682596659800080000329 GT 1 -28099548147438745392067723803829.7854504449643742125231604335988726 0.4218363159668020098254368719908172 0.0451860730215472681905004165474900 1.0462387983456120763936161891897522 GT 1 -19479082584095993929752365002432431187676471.8640667853550004280798968788293555 2.9796324205346350724025827295068049 0.0318647583785374513901241690718760 1.0323834890455648127809784504228117 GT 1 -130854528147468.7667524511270167359078398455299316 0.3604273352802633527096628160863498 0.0213140899957034625124473699201214 1.0215445152982213718746714619951788 GT 1 -6498449761743725502.6426840226169320699391286424540756 0.0203995689156085126180848839019560 0.0909383934155444444782737388919436 1.0953424130809102270856690296305533 GT 1 -2338645856317078945313.8345522555521056434442587545535647 2.5715657835824116540634138649782320 0.0556974065196344280679748852480018 1.0573086202588043937461254227657865 GT 1 -5.1782785993915555100865997595533960 1.5910607972552367979587890647028098 0.0256138461987745988942176393013973 1.0259475921015789758773568556607232 GT 1 -55964591996.1776088684872932596602354147909210 1.0398098252392752392559746714113514 0.0569960539041342565512983986810572 1.0586848117382773173984675955601895 GT 1 -162532825378494364692915269985745.3900657890985398665451521766395408 1.1363301280504581978371085797644012 0.0749194574775095619236032264019534 1.0778744722630582870586340084568758 GT 1 -1256516742897239480835693323.7689159694256753717031887026959618 0.4464546896217052229651115432651309 0.0759742342665688453744935868584991 1.0790153227363412195478638983658426 GT 1 -4416558287078488733685826010235392348306.0203686353540261413825044876273590 1.0403786944390214469070507395348668 0.0860374441945453863899536814321277 1.0899656757572669091320138112601267 GT 1 -2302486822614199113924213810.5966813045154329364480387522685082 1.3689286316815452118181608019828938 0.0552951462536467658035643835191782 1.0568827243496499472826451001818440 GT 1 -16815.1797224825377989069433695636958972 0.5405640096654122861251656128276160 0.0179678442600691742885701900066518 1.0181312260111029239820892666008224 GT 1 -33966482951752681667514007767998074.9648915543275104689081387352981312 0.4369127092355469186119299779128243 0.0596907381007749902087339852997416 1.0615464558069323444824951491612020 GT 1 -1027142.3637251785375876551277135949073047 0.8280334997527789863459038950337940 0.0987005514856755679705236017190219 1.1039177252979980641634440389435482 GT 1 -1105117581136.4732580077338043423308936150642393 1.9597969725025765504690546268098351 0.0656070380421430699836669086437911 1.0678581990878073628283216956228495 GT 1 -841562598697544794562988842151041828655.9924636101681438718454244407751777 0.1480039410599186117423827309176565 0.0850871284229534999160805450153545 1.0889264405607164492041950098959660 GT 1 -8931842292682094021.4028071564366605745709291543788952 0.9526070057971108078882045932126337 0.0102555412991196905972214898283878 1.0103084916972173304783829635927512 GT 1 -1.2523495033254185508195180745413438 2.6778556522868190597289630225290860 0.0153525452160662490086315686246832 1.0154716158014646700930948683240799 GT 1 -87280595483.3307858689444157749698137739987069 1.2576793914594944540344329050580249 0.0028645155159377996667637772656694 1.0028686260922581315491790355721373 GT 1 -262007654554053375653589.0054027303864379044273364940039002 0.4842051576287878152856211261707464 0.0340685522219747326239220171829071 1.0346624123208562878991221114557963 GT 1 -493605143639207219248998355925496806993.1653175093859097605727763632491098 0.4353848608068060383148928325746880 0.0039971916542156154247244438765251 1.0040052017772324408032355203913425 GT 1 -70143082175850766105901210311872945356304.7801982217431228735930057535280920 1.9405816652721017666703095925319129 0.0532155295213009000893006620096776 1.0546838035905768569865464307628363 GT 1 -291446.4476109294439638016514053961945285 0.2796467422397038400004306971317526 0.0976755445821556106681916478152265 1.1027811169267805470405037799407225 GT 1 -1209090.5747504911691472775826154239047642 0.3655493248899663293155863378191501 0.0421017235860792733061616876925929 1.0430136899331281010750174750209330 GT 1 -21138785528814949207867116995109340391.8788520020449583737773879091264945 1.1608144806951365993163800868083298 0.0468880696007863676364417249181401 1.0480229316484141420176125183820103 GT 1 -55301945.7107236012533847254760815728541881 0.6433858371383748985403508057693937 0.0077573315307050428394456619294699 1.0077875761401170048771216135440301 GT 1 -480485662148957054704100779117.8720259141836678807587440023222185 0.8344089249821315443224587730369816 0.0068694682356062125852938708888902 1.0068931716481230509059497514145948 GT 1 -440797737626244330887996859124698.4183182682339712897031907730924986 1.2424694246356426445020922175305948 0.0679061110346538013914072397312511 1.0703217301371975907283663416932639 GT 1 -204502404662037.8013869730739966007250043906759472 0.1785812669228071461964792901942746 0.0795867986586986746912488707235958 1.0829325778758713769865714684967299 GT 1 -23215899892101585689807389033587805.6406560611992478324572639575523656 1.5947371792195411790435127026292455 0.0087535700219124079630404788358384 1.0087921075749115469952725182954804 GT 1 -107091385144270174731735960208914157.4600765002788313253185039193667533 1.3477993270612980764408395299289033 0.0708687193111067186277287990293220 1.0735052361705927883324071515185192 GT 1 -23996668008867049917070242849431862319838114.9452935840806134230342327215449106 1.6364384689668454024689032146694571 0.0205056848861347585377605126542485 1.0207188454797590453843696295407122 GT 1 -135871505419354573702016870.7358984361273486723494314802073386 0.6278895983554281530454612694636652 0.0106186607712727058400246334131665 1.0106754410610298162156523542492612 GT 1 -776403.0746934636874351368650108811444492 0.6414110252998658700958072007200889 0.0866404335763527139582123325674484 1.0906256463189523536086831438757749 GT 1 -32729919663972059675058594301832490580.3381241238107467460351364291182855 2.7973508396619303306171168363536877 0.0460477937545838062399864325489244 1.0471417070640561112966854994821872 GT 1 -24.4565936634834044983229055136797931 1.1492037830500109576443571225406763 0.0996117568110415339235373400060200 1.1049292273549335142298903878952159 GT 1 -1353379086704492084324288578836281.4764468002297156038210678876540379 1.9469367525438634046661424556679501 0.0127346742711487535206195837701471 1.0128164552804106058855409049035839 GT 1 -82056964134491436925653.8522966117994241541316134324469885 1.6280446588993388776140225270249157 0.0975032770887006177323595647397440 1.1025902199049075915757257319142574 GT 1 -10247928249333117516368141.5221703081410176492801098924237329 0.2644040792134928491183239411462169 0.0145940253652511100033905729601858 1.0147015657338164683768108618178052 GT 1 -10.6259376569342070068443098859129614 1.1641794123673647514208775221711691 0.0631339565397011710013885218674572 1.0652149701866638531943368578604933 GT 1 -33069895661.2932700438498686688591556902889766 1.2874972044417105762203486180447287 0.0138010357120426741209757729354542 1.0138971553975326600193012498285810 GT 1 -841171922545343690486368378.1740858949027827057966022815803253 1.1820379931979304153548000392376248 0.0345946717804962198749452436854069 1.0352072365877311383882745416753118 GT 1 -959329938822879721881776021726010225.6439825178641068382147407830215550 2.1804452288275739684340334434321315 0.0878570699629370021333059043720327 1.0919585796554746544385639868898318 GT 1 -124665.0386867134686684273103987023763357 0.3107592023621416133904089636326079 0.0293333172438792183797970068085476 1.0297721417579964104170293455668712 GT 1 -2643453615486615943.7655681374096520078326338082961703 0.3842113452990821624053645387727081 0.0343612111449872630470734437735327 1.0349654392775794658426807621733266 GT 1 -123889685447017253631705588420481304.3465005533967333806787226900815831 2.2665086386423775908194569169748333 0.0777992497383373565809083730232735 1.0809923456535164179394805820919279 GT 1 -33023435673921691313193507368363893755154.8073475219506199239953774939831646 0.9925522589741348146522606483857912 0.0708584005822236313578622025013566 1.0734941304508745938710929488355853 GT 1 -20507932548.3149945700543726290865443769514045 0.4951818284010096650856654671200007 0.0822069823947015153807964691844485 1.0857833848022513991241299327419199 GT 1 -133821277200073337706.4605978774673284544240277390378446 0.9558512809975290679101360530003592 0.0543861082282482516953864736148390 1.0559209414782400427209043721556495 GT 1 -3490494900981263438.9221509070989545132218835264437443 2.1162236137899682251731678111618838 0.0317685288848610326813199093451385 1.0322840972380908662783927999257359 GT 1 -47324298771866248041574.3970139056404921392469174595481340 0.1317339662978030337860183417858437 0.0782078284418887915138616650233388 1.0814354912918787895363567026729003 GT 1 -486207278584569963842662165290196258515347.7571383603850326200899512899547929 0.1341007254381623621481558453702106 0.0202467741104226826749511837884310 1.0204545493438184054939687684072178 GT 1 -24076262742320406.2979189584477569042549202684816515 2.0967732010943952114524068588876410 0.0362503562075777192911069210920178 1.0369237237104536275507237157575121 GT 1 -952758275.7197764546285871736599656917665008 0.6928546711936492417288249235886323 0.0879214679139239772024551362128256 1.0920291828715323975946512612352313 GT 1 -3170209296574883153093011894962.0050409391325966096624917604129185 0.4096464807514336536980709188145490 0.0729187123364712741465396574673393 1.0757140283033133666529245429515430 GT 1 -17327265008118460.9090811048956090813027108388192458 0.8496044430001280016440400941873593 0.0982445586426783103564503314592046 1.1034119249973191917832467449261041 GT 1 -2537752793983474641046882389581916342.6842527136414965273181069964707225 0.3615544437188862588500934666552952 0.0857867980902147835815242992093257 1.0896914722460965134549489534768455 GT 1 -99730636367627.1700007454441700551121605087156371 1.1113188028159518500702053329273557 0.0276085022891127546085521404085290 1.0279967801912211358836617882293456 GT 1 -967794216780270165571196973.6897023936654339752891198410570985 1.0610991613104997885787843736080754 0.0847298804510818304301419427473581 1.0885360446515191949579949994415513 GT 1 -46882114227823.5470135577640243173097241662952563 1.4254501725205855379134895710413353 0.0333677161740920970063273824908567 1.0339371207642112193518890517716255 GT 1 -1238979916540149468146158332140.8377205283701062347041565075637897 2.3032637772452764947644317244288697 0.0289004396259968143649629761018643 1.0293262820912266195919109881659960 GT 1 -9252673696800168953760586371464930182191306.4194615001883853934755087177844494 0.5636686935501724315893596236029098 0.0464068910684976487437624784689378 1.0475182090693282502049617721054532 GT 1 -10060100291.8582753432975656640289660639714958 1.3916537912413157583891683426495192 0.0164660709161508925816130223008937 1.0166031434421797626302002579231393 GT 1 -51092286319482012025770845085628.4461252174413431467787649271611996 1.2050632312947790900520391968018091 0.0519734635379345751072258294322254 1.0533727850702931085471907335255012 GT 1 -42052143941043470.8214830662863860966506323540862815 1.7535474052301790923422225978958495 0.0529116872890511130094122231646932 1.0543629349054638673747703000531094 GT 1 -824875195509580890633071594786042822292459.4394187129061954092141820993924042 1.0661885185422530211785680274427357 0.0867100325229133509714546730163167 1.0907018502598864327254640761753586 GT 1 -1150100440931.9391216843852376782676786391200929 0.4209456202125778273673225787134275 0.0400911167956095860748083569428611 1.0409169123535701336618421025641305 GT 1 -114048976907970733903.1566339182603345564559667037799554 0.1442000470713709342388413139117562 0.0147374233876849757379979230339906 1.0148470980939855238962591863436495 GT 1 -488984717740710037.9995617369680417679660937205542724 1.6560050855536290996327111232298093 0.0998439314776818702434305314299626 1.1051871212222679826229183153506644 GT 1 -3899126180025386.3828551857332789184213047321811973 0.9661104619989400682535920539759117 0.0463433283402072812206725735713703 1.0474515552634547540142225855795989 GT 1 -68.5361386221090606695392702701136454 1.2825161475794412677665722563087943 0.0289842426207486171065466186317033 1.0294125828314944663965366827227140 GT 1 -2349103440188921.5655855074635581433149013831004276 0.6403250504725200321534580008780218 0.0328104425711186512663253870821571 1.0333607764428152245656816886919438 GT 1 -15642908745014.4599454898599102460604459275292144 0.1546647595904977112953204461872813 0.0119705630543270853347573898391036 1.0120427871986898962031081209242255 GT 1 -47678279.1612778007986174421284718496927206 0.6370500983006012275738434298914174 0.0651300033555011219229800843987786 1.0673478003824753685065703609565706 GT 1 -2808.0363197841168565320430288417558648 0.8335159790518787439218207169830241 0.0106377793580948743879405651229696 1.0106947650272177475380383090622269 GT 1 -371953681084.9770406536901795316087232247922654 0.2734387190114534352715667063306872 0.0229200668697683867186048753209696 1.0231868154137140557158457060542081 GT 1 -5733335530323222917039155400936206093388.0504409136881692431213234843454852 0.1296177964074777950812049672614179 0.0389238437780772005467038656339558 1.0397016263026750481921640929091381 GT 1 -4799205370834077217404894736137505.7312757983752367451916926881355541 0.3804745853295242076275584865520382 0.0044173161893067350936993208791171 1.0044271013572178647296908861608355 GT 1 -16981204355232871907643906.9001661633748747928816892804163926 0.1311748256428866695547007547646902 0.0504806994733131910976668153239940 1.0517994218940638281796281935241311 GT 1 -232474101152916.3128667807655365934064522118899965 0.0116689210811014805074891431431294 0.0419942298892765404703765168128000 1.0429014779493280630473179996575096 GT 1 -4896627275734352117797606894922.5587096887858778193979197810987946 0.9719230413703889262189584367062962 0.0118362420535162321412467993645512 1.0119068480593740850911332007131403 GT 1 -5679261508857118106560239609.8861337360531282112784703308890008 0.8492769740816027958799341778708894 0.0796176348427061935504747088997035 1.0829660809813455575745282934256146 GT 1 -108780932510375327014007164212030.4399059844172763165628966918488724 0.3548934372691348111545970951020032 0.0316340467046600565511012011281713 1.0321452122238674446200706151602084 GT 1 -45712794577645639337392700910733368.8227880904205960461954700473340728 2.0535655261219259969572645556412142 0.0529960147287385911970147831519153 1.0544519774931276567447088997634809 GT 1 -141082915.2298976923681819179660284056643883 0.6806366929828705341930480224953628 0.0043806218311837650849140328846487 1.0043902448685392170913824013021925 GT 1 -15.4286989825378489419621934481091970 0.4427602703908167806127072343865456 0.0422381956107176686450923611978537 1.0431561703514829563636480467268892 GT 1 -41713735525500337734145098554544157110860.6134292411615218034019489761392966 0.1502462883545910494701070927792576 0.0492148771812615835201273166630942 1.0504671906328825144343075043424636 GT 1 -23532048260153600543140.2936844658962761463048883695750759 2.8384227292869003142624497682036047 0.0101638946438351227089147074375449 1.0102158997037273368678136282579350 GT 1 -580046542752299760814315.8666913905248868991052192795959044 0.9056227163944218386009116878871316 0.0151355407312222450038705973194181 1.0152512520817290361168009194341739 GT 1 -2779535388746704.0372274663634185852077385027793756 5.0787088657938910163786150491632200 0.0320443667402934592655639736271986 1.0325690261653369087157574088378889 LT 1 -3661677935796920142257378570444639182481.4147618560920723938281871119790240 0.0712615769583055375902483265075477 0.0060850311510175156136017607908909 1.0061036204022180327550849426974378 GT 1 -4.6578614409112064127429280360212972 0.6524864048076710519165418912836339 0.0593546807400655410910394438494352 1.0611891294071868911231269369576482 GT 1 -2875011200777142414772278.0377695882834326298688663636762157 0.3586136331174727925936208509543935 0.0503056930291724877604722675288563 1.0516151283065019448328212201263829 GT 1 -1371463904544514248642982538556746796.8201394402058348280716029192638047 1.8360077464537233909793287643623354 0.0525389727893256190633377969282767 1.0539694751029872955478229327969312 GT 1 -26952214063040.1297142535452862964536406024960518 0.6966615879567589889220280201321484 0.0088059842310494261873792241845669 1.0088449860452450961038381471385490 GT 1 -44609240732676170583674902379047201087.3091389272517275705013679443171977 2.1516156575864584704721581850347465 0.0969046963946390089491893307849812 1.1019271900430125734834169767929745 GT 1 -29409794.5298514375290901541827388110171108 0.9849844422325487740356486003426372 0.0820888262792439723308100490684577 1.0856546536960317620302193544788427 GT 1 -55226991797956965189229436452640481.5248693523947876504157956474424692 0.1421511461169582374121892037068825 0.0071236381523986328655589246228787 1.0071491324093848981977252319032422 GT 1 -3373056809674993429396.6169671171331418003101831403571918 0.2306438005431046033620395205990617 0.0579214208268362126913981704742999 1.0596665905035323642155505827500779 GT 1 -2458001040.9079786754657881829206366109423806 1.9105716805513326512681626621423019 0.0051172955199551956867566747183688 1.0051304337171990867597673408598425 GT 1 -3999586388875960.4859939788219667863893735416995844 0.3349108701415792877365970964085952 0.0939692892333866317808886995991288 1.0986820764202589716109597691426633 GT 1 -11307527461950889.3143654449409748952489926315459476 0.5345676351526794591198941447746869 0.0140419929594546717542814588462538 1.0141415144948195989577760521078355 GT 1 -294962213151736825644547444273048641817.6711921210628415452636370242338538 0.3111428307898200864231428292569027 0.0404758923783803280949388271427432 1.0413178386581235292233916900349852 GT 1 -33551549002873416847067900122985984111265.9256288360949833917050049697539683 0.7661189104470723020243427480418001 0.0792531656365373312122953604280825 1.0825701617693481881158929456266019 GT 1 -1364084035587000881874.0011591485024534079311936887723547 2.3024577341203416983681557875876934 0.0770533472231116254998036387621218 1.0801838437911406582948896294078152 GT 1 -44966692305055316646190434731238905468628.9038748333960561416420414031066742 1.4382101580169744314433116073399758 0.0322763892281555577334516615080391 1.0328087585380311339531009569584145 GT 1 -1295498888580720152281877828259475657668.2837784135426640540973466237979745 0.3113824343381955901570798786505317 0.0834197225358818054817720387983857 1.0871056241971748238424307265300310 GT 1 -362363658761158950073475126028940302.1597294731588016989123246030943644 0.7698150661872290159497442519628106 0.0502098964028685063175601512303846 1.0515142623811463830666284781867654 GT 1 -9748866188998604526543980839309.8404520702196879573177572020249315 1.2796495926686543729300892407662704 0.0014742933743828767414155371921712 1.0014753812141878918314457377187877 GT 1 -7813957500037833581800838036652771845064043.4453874921104187900653815788627169 0.3923074108557764326589564460030327 0.0482572812175227533714313162797345 1.0494605340955479857754546177482463 GT 1 -709562212818703630176210408423486588352955.1746059673942272520584665042428075 1.3431453082610552331974375442285002 0.0479658342653229048905119976149434 1.0491543564579824698441882145403236 GT 1 -243768230601938564952089893421352388001196.6231648974521896791492512608835135 1.5597261988807359100189234953575810 0.0627227938481624232786049510068714 1.0647761961514129715029455610717025 GT 1 -1608355960002118118932691197.7459474705083888963187776515130921 0.1337680685191173623904321554702140 0.0568669067872653343669695795813309 1.0585478682242279948239743150014603 GT 1 -5933188505720686.4716137556281518334352245001191566 0.3087449715489659035191340750929158 0.0367017715995462470686651826276603 1.0373922283145575745000844594359434 GT 1 -3274687193200854436076953.2425611983855194378217950387478039 0.1350681381767983301273666639412908 0.0474680840609219679232905107306274 1.0486316649950578700564342854167615 GT 1 -563059755311886506881055932714.5809526363069915453365036892219428 0.3588477928152753771060477165655599 0.0566353325893957545097133117143829 1.0583023612282841296727013035810296 GT 1 -10783565440413795241735.3935795639203971318090528951025202 1.3046209847509566460886071471935779 0.0320136163204591572044286763663581 1.0325372582512487532910794375412301 GT 1 -516.7851922024500516795121905716412776 0.6691422006335626861375114407671106 0.0775181992626917735772393834921867 1.0806876314600981215741631614357173 GT 1 -5735260120267663436.5264415107749473171102860664280927 0.0662094729037166872482779265107281 0.0962398884586253027357529336114015 1.1011913171442287280738938907557878 GT 1 -6322.3639989417298104700127679003120682 1.2249938015514154471151223149559825 0.0911016580692884315664763115754445 1.0955220261183880395564957655856472 GT 1 -1271787420480448916.3316999328192597038030313455633503 1.9559744279992338199296480005553687 0.0953857630431600968216698575150717 1.1002466836620206078762118162404562 GT 1 -207632460602903904.7919667425781112629032353635001911 1.1512588894712720049311353580672274 0.0485996983281825308463840265336197 1.0498203779020034106418698670307877 GT 1 -90721321084305624623426781648203191450.0671709460904933521265877094833995 0.2278974709692299320643234777491020 0.0978886413711067324070594039408607 1.1030173090797880650778627789071379 GT 1 -1455346654393454298919424593.4482101760589337707428386666574671 1.5195445443399679355145908723696829 0.0533229850463689566727051819940568 1.0547973052656942472254118243775212 GT 1 -1815040.3801253752222540507787618064129966 0.3774682199016027514408760578807600 0.0328878635614731688679724294872351 1.0334408270271075506380495493293778 GT 1 -185938733686808437742673039716.2836429442133298913199540618486688 0.0015512527317962839065203682795246 0.0117628397820527781324607825472319 1.0118325693330057786234113858640702 GT 1 -4632385015183284236615004668.4226376259411018713813070351470061 0.2171662073516351948103742865643804 0.0598781271850644893771263179170207 1.0617457601913901954322620166827232 GT 1 -1514166277956.3807217546500848176594261631312181 0.5674551954209568157198600299281630 0.0552178857106711453969675113311782 1.0568009449626251192776728945053620 GT 1 -46244042040569596637412000851609.9057672727171726754394458988343884 0.0141258373571222352615455569381922 0.0720015967509044870065258173870659 1.0747252668341672996877211948337007 GT 1 -59445671.6285754960430297457612952915843941 0.5166633964413712888739017818361028 0.0964483483365048690746844467164931 1.1014220021683048746074973218146219 GT 1 -17029944180260632969439644125157.9071938351695451594021763687236125 1.3519026540192105127562466229229003 0.0298589109335075230887455211044255 1.0303137654160504650331069996506679 GT 1 -2848760236794784490475.0628180874856566506917398782263658 2.2480299961646199415684366614936435 0.0376382738019187705693219503648074 1.0383648842333436123114120154135517 GT 1 -42817793654.0871825168830364682540666006570483 6.2782100610430827720265532021771016 0.0417978802242326185557940367421626 1.0426965422878401497642038738486660 LT 1 -9037304597489749208069750086879586753037.9747869324751526404935583784008199 1.1925251327961307817927952541458190 0.0868877048883246651308032455865490 1.0908964102093686904040773948786017 GT 1 -44958982801019836244.6985438846060672178557595146834841 0.9127287395555100621660811383626751 0.0156714872577319853911791367575436 1.0157955832339935653160440904962201 GT 1 -495306198823437.1294347108380128872016927521319375 3.2602782367817575617631029038708594 0.0616632790044260934019722377567647 1.0636464167857362488334753699046998 LT 1 -3838458873390199566231.7231559808366518109273807548223418 0.1544527069673065075455937249888866 0.0698201700902312560392411068228695 1.0723773460331580016694728606079123 GT 1 -31670651865412754020237767012336903806.8099216536945845912585883738695892 0.0421321575255007879424636879660952 0.0583209195139977002392053794647199 1.0600907413396044012841384071429046 GT 1 -200062574595484897371.7249882629576499317627900782277547 3.1525474100304288121764778573505707 0.0965400910631284638269085121468339 1.1015235429981509662500154180218579 LT 1 -652941017038.2543250933610065793845598517389826 1.1047906962290582123405681887742192 0.0797209441447361781352855515364102 1.0830783333499334029935495967572572 GT 1 -1208005191045.3763029542490853154972287660205280 0.5729970261013353882860416371734308 0.0073745257711396855112398655832052 1.0074018520145927392119386279080136 GT 1 -21456995537619436714111468632523.2094890000979986068657044750365489 0.8842858715599347376089865642866094 0.0810634227740337495269735604371634 1.0845381718197322960770236505064249 GT 1 -874531005883031419964606504.0456871034343525640096411300235562 0.3394854086233179455610920795184318 0.0151924546525331912114448343543468 1.0153090423343126123869028737162665 GT 1 -360.4139106290176405342111401610936511 0.3518723286410125835405575290289971 0.0249592007379459189063951386566928 1.0252759634628055313219137831709087 GT 1 -406452705915.9889961845684110872691832115430791 3.9179155485637217530332155346482144 0.0005801359479716593883017051868877 1.0005803042919421317508487671801629 GT 1 -241990087720339.9264546163795471220536491245898243 0.3147410281876487386940072960992359 0.0245386324014701952308897225357514 1.0248447223699844299544106902764329 GT 1 -2619549508279541458696298190749.5211327919660487781397140866753162 0.1711797391560915341145192982063927 0.0985620768531632326679077615821946 1.1037640982251237898345738850961022 GT 1 -184405747655360412365747824.8922526861810241914790011081454953 3.3368223732967065296709463520927749 0.0420237170890568475057453155236649 1.0429322581956629713376806292644663 LT 1 -5117061185914564561357475.2255075543136541651064131221398118 0.3402118357226636735674920686149410 0.0550811870228984213699693927889872 1.0566562673726014844434320592640569 GT 1 -18255573049397120611063069013383568802335354.6780328644811819777164805093159404 0.3427009325174669911509336528863531 0.0038691020767738344372590873070798 1.0038766064151689269206155780702266 GT 1 -36280709128.5845039140518837958748850690687113 0.3403224531273214064377358338645723 0.0920166726883426364822786184286878 1.0965292625409939693103914683458461 GT 1 -411327939454727131041177898.6951596565460622309621909318379528 0.3218176962833576378974271099591724 0.0473616239476727229168967108797305 1.0485199058375614823496396713234085 GT 1 -3001990412352565752018.3112623666305549119957411238827289 0.4374636935007130082094218316879901 0.0985675333436570160053647475485112 1.1037701513396734116582322739160852 GT 1 -1507262343.5800144400588678847715952556136025 0.7891605611573867208583144939082253 0.0726679758152344495138277260716771 1.0754436069024716111865767976053547 GT 1 -85508491.6512643380418345730339853132995406 0.9614210664954545637823436390846117 0.0054697850218718500323037905574676 1.0054847990700704320342854239611470 GT 1 -7450198382657377.9403019457688895125981567147099388 7.0093543839133543274235586395124092 0.0816291783102238756988715628536014 1.0851540247297084921879826410409173 LT 1 -1380985729637184450411384984364511469041881.2187467364912311813656992896252042 0.0184684612130157699093743718774012 0.0462208314387070069154429665243343 1.0473231138248641058372215336949852 GT 1 -2780748011028552459351112447118199231451832.2807366780510931957481927397286291 0.4608886553297665498453435597884473 0.0564298388490164185024745885932091 1.0580845542981440284245993148491207 GT 1 -12767716200500281233.1912766524928986487754754018241840 0.4659874423456001627907320046759628 0.0219639877836273783997864995965539 1.0222087873181147566276037007993605 GT 1 -69914.1694448379586493949494583365195032 0.7380077877226508451056005027686499 0.0847152925149145259976782358202538 1.0885201063841128592882142976378838 GT 1 -1628416922.6892833114104445140157558763388420 2.5790789268951698504640009950434811 0.0690164955789157694708721546993200 1.0715137199919152025359829544429358 GT 1 -378.4256297769366088619609521050986992 0.4539057233684384248462103604025668 0.0725207239494132241844708785863420 1.0752848286309440448407529355135698 GT 1 -643655093693889102914505923452905699459640.3316655371683629730553376433198798 1.4974009647301182627624582246073007 0.0645799028771619315342893475162812 1.0667595488635955602058508214397879 GT 1 -14691193358720411583000182197910789725313834.3485704639266467666608694764739388 0.4480515946469731309112522409363211 0.0431636048179892051872835202013377 1.0441228580664759446318369341492342 GT 1 -2867979108859689259751753192163.0537606850650088024778887636574350 0.7063974404772221718738533872219789 0.0138573371015930666818623592618102 1.0139542463079405099398179955054920 GT 1 -89111139881.5643847092938477010352179173468519 0.0553387848743327748570858840182346 0.0001831527208567735419334410632518 1.0001831694953645812563536657585838 GT 1 -1043646291835219268766643274682112268118563.6067751907190822633391236446187123 1.8680545281235974846747440982760230 0.0553056838734694141370628685622711 1.0568938788160970417306632151341096 GT 1 -242667368117543933053798759.5606816195213945106124557794230754 2.7201805595088310337861388297809821 0.0208492374376841455822888815188502 1.0210696518192927697050381944017340 GT 1 -31110593301110659670236635461586.6525110780470753952424728523447416 0.1278348983990299624194676760810552 0.0467669077084795111062763393125303 1.0478958173107388075401136725261431 GT 1 -1516182649.2791597340223602219028340075693191 1.0079594372465180089608690164080539 0.0200296795407139737909302045215564 1.0202329930217532629852467630345191 GT 1 -434.9825510340422022162409954720297984 0.0228998944626384226380561412725690 0.0180046339134276889860593474905426 1.0181686894915826720557295716397246 GT 1 -81776402581109339315050441192394.3316368127918122139494731324159845 1.2030956973054556365730210090143865 0.0641471054567913420674835342992346 1.0662969788056560880820690281484894 GT 1 -26580877072545272988.9413998650794985507237906239970081 0.5355981485827058867487137860506025 0.0140038968247839814668565700443774 1.0141028765422647482281793626039242 GT 1 -302306361.6986305374962987653596545108823709 0.0926463301130458672616789382155208 0.0906654013668360240123005343005532 1.0950421572291040649364088685067291 GT 1 -510693817650496690619904828293973556470349.3934832447579655692283678598179923 0.4496379178897995847138780995644532 0.0853771580600104691861369402055299 1.0892434932832664415609546686003652 GT 1 -4058263190260660798053439986424317641853418.6085333701852451807252910173232955 1.0046961260525570909651180454978402 0.0233092199473880630501732886811224 1.0235851764702496925683139249444919 GT 1 -71660785762980229274193529466857220.0481192408666957794111389074793298 0.6997038987116838438575047206082915 0.0532712989946916898826340097259063 1.0547427094109818005066734701547522 GT 1 -78516520413382543446529594712470.2225320960478859776043496236759758 1.4275646983926406804190811905645094 0.0612870041392309809311855002048398 1.0632454952045376057525745062929501 GT 1 -43541189984417919258269.0896474155868326196260435388081026 0.1868748597147997347014241083404168 0.0852102150067625053611104408305296 1.0890609832784117938406846437454809 GT 1 -1050604406715.9198844053886015804543796719756049 0.1678797048297911695840993112066667 0.0159081394574573896695000477979734 1.0160360320772156796460777203098602 GT 1 -37677174.9823774721463315682960192805295507 0.6783184005194743022006108888356765 0.0841098880094571831682763639058134 1.0878588865802186620237603623324753 GT 1 -1288329554878409998492793596304451.3032893840971800472001877785842886 2.1236628881561905378006044094668926 0.0644591398597115538529140253157714 1.0666304568938788442931167952596576 GT 1 -64029613703900808583793558923256530831.0672727849124184285704585148998006 0.2874729582460847859104155940126799 0.0524215799251835229747624741669540 1.0538455801999440712685087348986347 GT 1 -18781669909796321889138866375879.6735266698806604395684174853965072 0.6917373784107899452080769429741403 0.0089072654238558804026059792260231 1.0089471722631340609244665663018875 GT 1 -99003030645283822360398781312.4678897049022154810142141937634724 1.2995144222913626175721834165197978 0.0669148428362578199905438510903793 1.0692588098842802405889701780872217 GT 1 -165343684780615887666225516989318.4471943367284954453085535059429328 0.2458695189357087534457843348254752 0.0925778515514937800471394797577983 1.0971475033566340380947214553984139 GT 1 -51.3249714924336160343880295654656766 0.0460800521380574337506023414053388 0.0737295692767389508688522909759991 1.0765890451540920454296826192015177 GT 1 -11157119134851868591.6305514574079250519780178583870659 4.5132029496382795479779504689470481 0.0818544377135808074530626584807992 1.0853993363495252048862011444212480 LT 1 -77.4403515996416616047206780241273118 2.3029010040604200908793126227552005 0.0612352553507035635588072540996343 1.0631903693434699126112149426257174 GT 1 -30034252652.6635309910763977762196480905341433 3.0984311175103229265554740920440964 0.0934380012283009501936370176243872 1.0980958575554199091595701978078706 LT 1 -15.7316134194375996288129554020805233 2.0883517588084647721341866912203495 0.0156323947069452724520180497420749 1.0157558690796009983238414598749682 GT 1 -7646959035354326.6579481390621302035994246114188920 0.3193233288342517688007425534097603 0.0254049278826505060273113095845901 1.0257332048985151626057776069472306 GT 1 -1625074135370554322023716107.0395701674824106250271518199056248 0.6138609459164715421100359663127361 0.0364244777336132632838005431668599 1.0371044109443212060874696031221658 GT 1 -7.4075155698321773424783242630492637 1.3817232009599932000712106502631418 0.0181066900852019450579828490427415 1.0182726222379885610594730914554691 GT 1 -3160130.8703898942521383154299890670312811 0.0590309001139070233386999957227020 0.0049659735020881627740278277024936 1.0049783449229264232941646005628790 GT 1 -11355699101192998567350633007543343123790.4547488608945587461824648414627958 2.0690881582162005199906394815471931 0.0948995929831313535901658696198485 1.0997093944564065710053988603026912 GT 1 -17045204.8668504897120729966238561709392793 0.2279378497159872292762607927965770 0.0621361687397968222550146700148085 1.0641505097461780214771144343390276 GT 1 -1837160652442601165.9713043923888827046436872289372943 1.2852282991060898409640897461880722 0.0711022931999185679060259276750056 1.0737566573180722069877318404852090 GT 1 -118744936625417867524134078791265062468313.8829504196122136990549504486158462 1.7188766343309657435007937482832405 0.0471980367471320132264463853324682 1.0483482004342820732402241248699547 GT 1 -32952033.8451784276796982201225065118125915 0.6622806281191805349239002479089539 0.0335838601010069855517058024142151 1.0341607508866260278861419312308602 GT 1 -7260693095104867279358740179175183555.9863189892921917134946910200935538 0.7567257654338933334505410135666024 0.0436129548903678448643786936676369 1.0445925889626983526263545605190758 GT 1 -11124364788472715385551921902458.7444570791411923492036904436282481 0.9987869511709062848198259067626239 0.0398988359008477955689445387488398 1.0407166208023101434787978160007173 GT 1 -6811022796620597284524587391881181.9780759017561891078042283154332971 0.3638413546185519536169857515231839 0.0135290748723317545514622024353337 1.0136214267083149228418991056881301 GT 1 -365240418.1916599298707434312388340556680848 1.1247078854452300002711182019037479 0.0286373674860902425273648846325380 1.0290554174715926381099024290639727 GT 1 -1278512624906787863540.9784831377297262203497027423555755 2.5435026799488423861325610016868693 0.0457297432535438689438906104582730 1.0468083596581289935971162485517722 GT 1 -579763812346042758875737569553155675900.7241689561052065061778280165921202 0.6211009392743671705828478270538241 0.0717844014049012894343209001685168 1.0744912471071545327031196485382605 GT 1 -243.9242732280033503610717057658429085 0.4451894681914333942791595647465974 0.0151185437039470821769801133352452 1.0152339939905800457193139907702621 GT 1 -294936064827983360344657197388676770543.1404305543291080699393128600871516 1.8765149591212140973180101118290923 0.0675344577800066300325623640255206 1.0699230801898125544157413211928807 GT 1 -274602071295621899959495493840208420.8900457248767624961990939199013857 1.4804823181099349669493362014543093 0.0202040653175412583157998069539730 1.0204109589162368699710603332130990 GT 1 -21892326595619165751226720217316883696546526.9178339965947687722673309289045957 1.4265241062430624478804476199543500 0.0693520719818174503432053862432984 1.0718742386216384398288877615164922 GT 1 -629865325905.8265792373350913908269369958679706 0.1021548493868196909813692529257627 0.0009875987775343093835875862221261 1.0009880867745302840907934759734969 GT 1 -1663775452820321840.5034724841186476817308201137974582 0.0692295999025352700714273930860710 0.0116389344285838282760111157141463 1.0117071970120003144824645492068531 GT 1 -171.8329604705261818464818598849251146 0.7426881120423413055030948992188567 0.0072471398755468163354373334802059 1.0072735279631376619134932673241015 GT 1 -3731142112890089105.1156460623285425437615046208669108 1.1515100074201247003306628383364636 0.0046078753425187021535923362174996 1.0046185243254878296058599817394456 GT 1 -9850530805.5752798108433483376140513687623375 0.6299268100058006108395179331574342 0.0002985336035437522019295885640081 1.0002985781735706291454734207648250 GT 1 -84111131917531076081658845.9211055780831481794626613859869184 0.1083699151122212063508027762964927 0.0400072784327567822057110910206644 1.0408295762497846830456992639426792 GT 1 -133012876311.0278658574316908181854216373241302 4.2703548356607263368033592714175526 0.0592377036958714643363054734108233 1.0610647788481936011447548667250994 LT 1 -86043312008.2911552545882955594696510820512021 0.2761772469355643214642550392918356 0.0806341555455233556820181536693471 1.0840711461211854967567377858854864 GT 1 -460533826408844.3002520451972777066462240637545169 0.1185546383676482191556462899773294 0.0869061449368632369285197088998640 1.0909166051348292506449838314077248 GT 1 -3907264840717832172833696506597547.5671806741597645238697717132669866 2.9675452161720966665121307016288442 0.0703421849598032282986661068196890 1.0729387013586591344182338343079454 LT 1 -917836237408.5576241858605128526175250908212350 0.7790992859481454241853053181419442 0.0742560779445343119510129745645951 1.0771576246374957851002170224643694 GT 1 -25523360783594327646043338886860601562270476.4430947809075212421153569579962463 0.0089759145351276282596363637089577 0.0411635559717811081380160264235616 1.0420347671023239856191190204000463 GT 1 -265844582213372.1043241241755563158943856842859536 0.0314292968083937905309150562824183 0.0980465300404644078310528420791605 1.1031923456608008740630288323471526 GT 1 -2164929231975365510459832247929521204.9141818138492755310709285207551118 0.1529569857704076990423070718073385 0.0645855078470053059783470543880610 1.0667655408095169372521425220002129 GT 1 -3872325458426979794480186945070.0281802116824722624377945894079496 0.5456180347411172345495900329396094 0.0908703975936241053812489925002107 1.0952676180630751353162610623476366 GT 1 -33014750130862261048.3315668438826226822606324100090450 0.6221300245129554038109718103370820 0.0467040031880801316511742652363100 1.0478298287865859584694427816777884 GT 1 -409750835382935137853429.6999546141577456038842022488107754 1.4663052653467035780895212438165663 0.0189123562438555785698219644310918 1.0190934821677661405925498150221402 GT 1 -675251703421010271.4626842802974656314548004855062529 0.3484454927299692637442977994837216 0.0758906585825828873781649751229286 1.0789248794741364644754103610976978 GT 1 -1626940736872678469.9210628708557074536191125457237941 1.6674462249024409214594998485571597 0.0619789972759423046319503234224343 1.0639829392627720920791210621809305 GT 1 -1553557161405712809520722438626481944138888.8313590298481361769414039558468562 0.3270360171891259840385034085381172 0.0711596722671017377964938715473231 1.0738184303626401841212289178216028 GT 1 -1213275702765617690501692690.4623522029901867431133165566452436 1.7326305324214881997008479091783033 0.0061437075826024405618921096876156 1.0061626578103397154241196552004194 GT 1 -552456932492980087.7709189029502746863146738113739865 2.2610129420237804532260037141857024 0.0467132906311791049780884392877348 1.0478395712887800031836210894529584 GT 1 -45443216330028630427589069578.3378697139489342153394571966537941 0.3845994145278872333867867268486194 0.0001733631360934473704737599313757 1.0001733781652189480976821295682337 GT 1 -1498381395985961639049606615355708476754080.6739931127356824317102429961671096 1.0567148702250407705043447629030191 0.0861619218235761612977435942176273 1.0901018805784153067468955383783571 GT 1 -10384405011464827826473245.5828802037371355539021492568195006 0.9048070467881580544611428511701624 0.0285177952306384279627762305900681 1.0289323276053221164418268547739677 GT 1 -23229054.5794390467339683674983833182320835 0.4903455174106984607746473278189207 0.0133506725909426416904924724583270 1.0134405940584590366430651598472670 GT 1 -9221621400796100463571.6605804938629362644295744016082156 2.0042808913355540674294547108434678 0.0981759112116326105621230923252239 1.1033358014552946219899921235594070 GT 1 -241186303451222481064083928922377497362.3610173290857187530379137800688773 0.9941054311408641498354391451216632 0.0578421021553458731948714855383024 1.0595823986597753323404112442292001 GT 1 -73460900590304836709037751625819972292.8727436974806340127753143249329298 0.2141062474719345535366625334167374 0.0928342376100022296131930842305693 1.0974300865907481480162917304233752 GT 1 -217156249161449491432754861.9010918705646417216586067071651559 0.0546649040682920965831323573738223 0.0586085252812017616578787066131976 1.0603962060165868570567716569377719 GT 1 -1407763520187331410738294138120172510957834.5487705984445098321109500644308020 0.0101960480034798807843312753657213 0.0905073243296261166859339632185067 1.0948683341950631272872825435555893 GT 1 -422171441195620.0543351923553638771825300213041568 0.3431707047982383632360331967692970 0.0700123356029858381319199371231071 1.0725839570120363241876863200076375 GT 1 -1196409.9182742537323858072235546792543889 2.2921553040795484809056865472430760 0.0413698414060469439624314313810696 1.0422499316687154754995210846205291 GT 1 -22081587.3479542430022567610250035207649058 2.3787683540228468819326613709322565 0.0605227783956479282206374507429074 1.0624317056547332116261303277962629 GT 1 -27075034.3923533536167771749906657278659442 1.9881227117297301639174144096155953 0.0363869274975016587670835817178336 1.0370654420170265117367653517424249 GT 1 -1982726011101824344592942426738495272721417.5876717052305072990567509846063180 0.9774694623168556200368341721759801 0.0597419467369691244461101726362444 1.0616009166452058980527632150384240 GT 1 -1285191380871831754262685.5410121481822900695360823625264257 0.3894237587001887670179951073556742 0.0133688660158637543638278509464366 1.0134590338345350467436117128808313 GT 1 -280386955.3604926355816676731578425848715897 3.3541286237776062653424517775669720 0.0490359468449627603401298712063295 1.0502790161469015316860873661571557 LT 1 -100733.5299160009970616711054197044063614 2.4437303157227374255823726469394944 0.0096936336184132923795184927560536 1.0097409227351760145201449336526440 GT 1 -53874207173830730273005918.4679804465527898792259553304031771 0.8058087929894373423441065926954086 0.0251573598745496492995376215330674 1.0254792157529507960518101893300813 GT 1 -22555903468351521938564420077057234397.7884450442604729153931255487507523 1.0495170789487966688143199711392204 0.0560186563660897789592449840360940 1.0576488761316003671581938470877013 GT 1 -9858791674652549938203157728470001048801306.6996392817652366651304576907564651 0.6766401626306307435238416242858579 0.0185995511855248306225751329878956 1.0187746980057995462850091438071773 GT 1 -837248625705703771103826724820753882643.2662156393519046180106067310170414 0.0385256502333562986949420327580762 0.0566388526605538347028882169735775 1.0583060926354982198761630250054598 GT 1 -882032280610473488406.8047224316250569437174485733544981 0.8020503215646437614831312622052714 0.0032372527875550034666279900944887 1.0032425040264814592485634814485415 GT 1 -11953788797274875841.0502244844795241136330276387193280 0.4374890547357548720531847232980100 0.0471681168942696250516237195693203 1.0483167989634045283186414295998042 GT 1 -6702850530599739348052747292591345.4638252574995534100025241772134515 0.2817812457791718868138525644923264 0.0451277873039809911225368204222483 1.0461777561498570074585042959549020 GT 1 -4785383248253315457361492420467.9031466176979411631268183669991573 2.2478565388171780764553001602056512 0.0335394126369687322455765474234422 1.0341147598894566958048093404836313 GT 1 -78363021445674884696.4841145970876395460091181072886580 1.2235455169471650915556915683398625 0.0312091154184270269426467428895603 1.0317064957660773099111149772240566 GT 1 -260487932137613191638525228.1811139130085495407229943121874580 1.7017509656741315217200889399987707 0.0998758038191492377572658579964414 1.1052225294218640078696877474867923 GT 1 -6723321076752489336314033642224604501267.4007162618829352181522883858996825 1.3338185911807282159894210844102662 0.0863593683156031870289673898052531 1.0903179668088374911087984684848416 GT 1 -1650675435179425.4940394946711763921043160896471194 1.3058087965446229096221869794317089 0.0037910465525571946302142389419856 1.0037982507830182415530120073249542 GT 1 -2520049898447642457135949042590351886798045.1166186610327006970230163943762852 2.3304635585096441939317414078375386 0.0086260315396533997557768743425315 1.0086634510932820991402565695370127 GT 1 -1786264875.2836519045227153496817456685550299 1.0507726460383806798709515290301459 0.0282178165201069367792971809573052 1.0286235907039223601485219334587136 GT 1 -959190789683762135398319766.0917955742071184580878954039939791 0.6234283377371204180644780543404681 0.0502008000205730172164754950284355 1.0515046851717165006123401046445980 GT 1 -156269992700604502632165869205462651048.1323615767527937228473051807750798 0.7357778367272885882319914566962405 0.0090238354170805105067518334420312 1.0090647968254371051854190516315270 GT 1 -556714455.2186758730030368926932943065859475 0.0526159603557719810038307724610254 0.0804979038157959653860293344238732 1.0839229552403010176523062882132389 GT 1 -50188096222538.4346766731272600110714515656070691 2.0040863326359615869981704778874738 0.0752090518175342506028490698901309 1.0781875689769062988097194778661536 GT 1 -4.4524428742548124674666842011959995 0.2972244107226909895397075383115266 0.0768402901711755145254202652616070 1.0799530260471605057794204069482934 GT 1 -3007337413674287299157.4278521535741750554696629665721881 0.4719937922349816864261022999241157 0.0657689738777460478104363181018370 1.0680315200309626925565441678285838 GT 1 -3059356797905909974551.4415074894702656622185741193290790 0.8580932235555894246035288256284120 0.0405395245575782415302724287330916 1.0413841572515951182409308798694981 GT 1 -61658382751439019846.0244294482054525079022084174983082 0.0635391441438312923579189559340835 0.0743178526311217583139300074480752 1.0772243566422250672014864066933023 GT 1 -20407308899329039025920043554210225991.3734749195461136068409671824830403 2.9818359951651470885660376189049394 0.0309430469011268814376144411665102 1.0314318936907249339201625705497996 GT 1 -354899300140959388662446054094105084.8431691474473960014885532079871854 0.4430305444307586817686240219598225 0.0124655498293752731998817231151336 1.0125438965666372404979898288249436 GT 1 -11.5388847676477543717455617350379842 0.6602327162036759912654526604004787 0.0317532003578984438225018298399390 1.0322682658939499222727814853330564 GT 1 -58.2928786959458468647589455966840926 2.2013358995740853716378382508109932 0.0251376648392801718628489237525922 1.0254590126601549164318309920218731 GT 1 -7147578304906712957682134.2153530781998487094028059966334780 2.2487345676116753110424329894066151 0.0451612712543525044223457251723464 1.0462128231850279606857191412920641 GT 1 -452289073128141857934864401707.5199534071164047530392531679644578 0.0058500660781777624195838820650609 0.0318712811018689500459156045426682 1.0323902264775105821649857519496724 GT 1 -841714138967375734338184027.6409145131006412398428942742882485 0.9994155706976540059471909553547125 0.0568764756597693132541663550006628 1.0585580141104398874973355838920186 GT 1 -9217617020203886346722975553437150844.5829647910672561942344753244236288 0.2916241354000031964736555133526313 0.0248455798332497346379235775498171 1.0251594408668184276988541112703865 GT 1 -1475.0035589861410920228455782378911135 0.4687798032614984897941813973242166 0.0700850029538218283518709447963467 1.0726620980377785849640504951410839 GT 1 -396.4817784354318925456453095652374815 0.5453108016461042532725450580163228 0.0520636969611971997399505875533949 1.0534679698718628553972645661716375 GT 1 -2166901354.3164584949206848633509095483604135 2.1111333904593428431502986924791192 0.0860661301350786552419496742029106 1.0899970625909329395461650300717952 GT 1 -688793317039635609260751223896232258.4720649987446393548274085231204723 1.0850784952234700538598802754895659 0.0183718502083910742697808682676306 1.0185427085398114651190943671557399 GT 1 -50564226416584505134466094846018867251550.1952844523349155728502132565633382 0.8976861780152852725215866045425595 0.0498618604825685895218218567326007 1.0511478949402136567843588610380945 GT 1 -362596771414086015211691494681992.1808737582553522394042081720795458 0.1398244118056344955282006985633669 0.0388014861209187283750851117822991 1.0395743212310046266605247259892623 GT 1 -87881293861063737.9083750113727912994445204386850215 1.2334810877228439051924754222648571 0.0853573640942551203343690188216636 1.0892218518474050573545150110041533 GT 1 -122885982077011265946428.7547008408098448487482617611541612 1.0956736578982676321353535423364029 0.0112939845734826420078303977482311 1.0113582459198326579433560928720438 GT 1 -904337585977585738350995054627498218886.9322958462908929198013271944436300 0.6431387683401576378898852664315010 0.0451435141088641128437216541269233 1.0461942263478438860707694255807488 GT 1 -78784670664716533826218563777243201091824.1653812816704031738667774764730125 0.0461359965018418483790553731646969 0.0926345066602602162199786886845554 1.0972099405338334761711726131580816 GT 1 -840155417470574.6967191173916183202370041156674815 0.3576002108284117509729704709045207 0.0389460858464677579655215876131778 1.0397247694486404048037525489223329 GT 1 -171181357155242756755.8027723622843876937649424590107781 0.6212609470532853135740474600557148 0.0290497251976216988950589272108805 1.0294800222983159701275223410569789 GT 1 -15377756777940861382921743727319976744.6017612650059820726419000813837535 0.1473305353617366914354078072270238 0.0401069429181914002062884845133679 1.0409333995986864848986672624355374 GT 1 -647710607828821.2703772284917408206987655406205464 0.1431812010310927884190102761476109 0.0729173912300981138775772920863306 1.0757126032875683166049863334621550 GT 1 -18988588007205155241154615395976847838.2004322302459533015068409989244307 0.0677411740249497282170282391593759 0.0323317923629243721962685449841976 1.0328660111669375585723023865479360 GT 1 -1810318114.0015496562429766355018801934931211 0.6135413649979592365527111841575059 0.0415467256311997821590699496011899 1.0424344663870416642598054769285251 GT 1 -41999237.5100517027934604247605498193914407 1.6765974414780421600221626970027958 0.0683445972288781864485206417857611 1.0707922721830177915980439934937644 GT 1 -161734706.1283844916621406177414322974493956 3.4220728248147767584023317698497251 0.0323712736053268752524170964451309 1.0334482415423929758706356847558076 GT 2 -103440372636923149030738904845.0394073612775388726888025314528042 1.8070340494521657778123986183417773 0.0251019162105346428675609636457404 1.0254223428945754273637959686876068 GT 1 -18540981191197303952681544171.8135421686037447414526217155525296 0.7069793739423908120681607094856529 0.0725890571743373380286883820786882 1.0753585076274254916316598022365058 GT 1 -118.0722781852851340982120576839656421 1.1795205900702059943264692518264236 0.0288595658506228838767077053367234 1.0292841927763168060771757867415119 GT 1 -2.8043026246253620170532981814197908 2.4396256877620311549284174046834033 0.0846063818644131624941687829734139 1.0923085016799767953402217944508908 GT 2 -10225553.8483452036844778874488713995995678 0.5437647259253252068060235877901815 0.0844483578658983249753257636249169 1.0882285077920670198109149650152863 GT 1 -75093424.3853696093338712146749623911995680 0.2926066481147082458351770169274334 0.0437982343444254798382251954242733 1.0447863362580860024654499403659201 GT 1 -19053.6559541188657025445334533384089860 3.4252136372645925820263948614420402 0.0319358683969399988406935282150300 1.0329836687939671629963351843816505 GT 2 -67394654114220073252371006155216094836277.3054032703705470565385869996967465 0.4868873563193197460504265983997597 0.0980694105848466164589653654941115 1.1032177137483611878290113198746126 GT 1 -3441423833922806606772036050.0817311584988900456155102135977371 3.3041929862459124708257299732113104 0.0464676044429311089862989441840403 1.0475818791050034869508661702354664 LT 1 -270117656891055685634039127106035330.4309347644000265020049902288002653 0.0475468469844701427279835989781831 0.0822013780795229562861085843045719 1.0857772785256069659631421821983874 GT 1 -559952729992.5699524314073769906148887749861658 0.2369059348747416957832803378627689 0.0876291213268892837210755661089199 1.0917087063619478772133285946607381 GT 1 -13195549837764481358642404938108417330341.9991685583422696426546896556535710 1.4161064550951430151717012027731919 0.0754674562616038980123994980804040 1.0784670273268166911348986165091403 GT 1 -254264781536784419878760883640.4444716429522039759661031757170620 0.9402974308912942004600752804383595 0.0668475707576645873420258212186631 1.0691867160853851923802480177471083 GT 1 -4629633600978264001052839449825803.9750677679082531308401502496895611 1.9468594852569593230077624913144846 0.0071394169256895257260864230834515 1.0071650245176841124651726362291310 GT 1 -456881073278597062493028020947147488.1101199884194859907076634884395301 0.9974886035028649668776504150649690 0.0176552384816471840807878545115983 1.0178129512662569271114847978578067 GT 1 -48.8985814014170051691631683559649380 2.7064980916422407586425377694651096 0.0848619847215089292612099181083545 1.0886803887113415944923570839340376 LT 1 -11190260641984103574837104490008767131.4435587575071163020390465064470521 0.4895104268574240418596638003596122 0.0523153546623677505775805084086564 1.0537334846656981317603868977838311 GT 1 -4749394864505562102763543810941.9311347744067025973762195254113858 0.0591214943409774681809686524119425 0.0344037648350436859928083576297202 1.0350095081656578645094300354269573 GT 1 -1893.0859635759591912360801871571263784 1.6038526038079924145987225432827290 0.0948589220301524569427619015513347 1.0996644601718671375393842007216007 GT 1 -1959473822478990704004629343672872346.8803102713014629626290482790619058 3.5863157189231965128353062621166093 0.0442454446201740833919091259151671 1.0452541401289004395728602413839820 LT 1 -3014615254932111829358704892976.0897206313844189608201812361862821 0.6807875376007783258906783423120569 0.0515268063130196841870880067534412 1.0529017518019275020754878269454009 GT 1 -2123438019326718283969248073822.0351871695014906495851454859974872 0.8428096222495570156320056320972923 0.0990856134234252512316570541785527 1.1043450463362806559198674755339693 GT 1 -1958620806740079515768250031325830009678455.8905697614648857986599574595580256 1.7570176051045992085064533619548194 0.0833222341257799964347168841242654 1.0869992688365119259173937463776262 GT 1 -264899274432177.0239249047669085400406334532796623 0.5200846989619461851243643208755266 0.0315444806786659011786772286411575 1.0320527245812795134298827454426335 GT 1 -137947036996.4124471356723061659997083964915867 0.7521816037407987793984109781171387 0.0472973436916046095935379856375320 1.0484524320835187665985193042551007 GT 1 -5376532757541233112609692896784975535109.0614298277226749150803867299825934 1.3677003009123880575170052297653020 0.0653652597332872523143337863213796 1.0675994781390309521298948861413286 GT 1 -1096266211641873265250796011748096876966800.1818583983851812673289737907366807 1.8369404761284814222930049905697427 0.0533423193123273488198333979696827 1.0548177287713782386875958359085634 GT 1 -10469863325245.6388260167270182734415437411455897 1.6789933330048044587784037161806632 0.0991083411799562202037217619941068 1.1043702740866150949174261279249419 GT 1 -15584673748327274467.3836140653371806363332168881712789 1.8767063736978100490814887739595177 0.0209982085905434771336364715738221 1.0212218066172880260611893144639041 GT 1 -1596098323.5572301563208612261574528153769333 0.2080367649072103521370758653689181 0.0171207665567971734169952561601163 1.0172690214756603550729109595232517 GT 1 -17331335.9906470353986649576993289555751248 1.3809100301567825970928702603737635 0.0858392469487716112885497617785789 1.0897488443809695817256887222261706 GT 1 -425.4444835457727471469759168100444836 0.8919827196458334686130841195808482 0.0235629031552643279114285132449398 1.0238449476939401997329195877500363 GT 1 -1114380655637528219118987257333.1603344116596641084171431804592221 0.0182859507339131150058300225974535 0.0333131975512831168047289306072816 1.0338807217732629789530380527706111 GT 1 -2.1592909404593669752946532019031787 1.0654256962207386255708806894209564 0.0385584391161571421852938728480498 1.0393214949123956074286036416152600 GT 1 -548358057.5533468706401186362172840507110072 0.5675665628818871651138016156185725 0.0606156649013818934686408603054571 1.0625305809608761897486691866113247 GT 1 -920488608691.7257038938707480833076911185203711 0.2905961662902957851770534909729356 0.0808342030476969101336550609994471 1.0842887627218004915398500639984533 GT 1 -48.2853585899320558347845982644689694 0.0310247378558104395246386474510481 0.0411974194037616685320830960705366 1.0420700849400914059345329124865121 GT 1 -47113605308428526069856236555969.8796796747045788801646267755056729 0.7400805444370251769290991068241445 0.0293169542439600420606932671662263 1.0297552844141811831445992403436270 GT 1 -2784012694580837.8371447902197084358638528704163140 2.4990878082450731544643320686810060 0.0151647244949243343852063842700229 1.0152808847848146925337606274618534 GT 1 -344064931221455709232694879752.4132481759723437986624796327967406 0.0288551319518355098188281744367872 0.0510605329143969161662379326882261 1.0524102684070408701945898726785420 GT 1 -13257288944616.2176702229356294097507309514399402 0.3838971106247657339895718205405727 0.0689180313510272853563220250874447 1.0714079619190608496331340023046126 GT 1 -4207201387580084560397303444085063343030.5692192643679479130663930235128247 0.9855868534683368671325938640449136 0.0145348199007528105612951798593035 1.0146414852314722148278859510378411 GT 1 -1.6817294621258172669600171866791246 0.9990517804545369127064273967566555 0.0467491318740767198243333181526971 1.0478771695436740227959998163615736 GT 1 -68590888057926443007493185468734599.2761416078499022080797006939901476 0.2379768252256771688452517915556877 0.0319974171295805044499564575709783 1.0325205234545542259830343017195001 GT 1 -17918990456168146236.1341502788906346926241269611450626 1.8158500656670400323327491605957161 0.0331616873381172667286367686344790 1.0337240026158112426915075356269175 GT 1 -4305286344655095034.0560587007276896787600035680025578 0.3120025716223307691564331604860067 0.0683373625051353543154223126604945 1.0707845067628516929106366787963671 GT 1 -9092188909317151401871631704566456.4964939479181993863006977897704171 1.3253337943398667217156878966257702 0.0114385385943393396454754882025454 1.0115044618696806036290420288741207 GT 1 -19848361077904824772125730142847544371597675.9272729162443961727573804775487750 0.2527662256385130125463143176318585 0.0588994425281672667666977302493357 1.0607052827556186544307940411184192 GT 1 -373598537188693527673877124449.5967872789170633054966886868407845 1.9978172726768817969416714069139251 0.0279876744871815558433351532454933 1.0283867940333524531056903047105721 GT 1 -81522214731488810012.4900934501753597758547321548910481 0.0173172779699242792730824843578144 0.0593652991210329992370796466033887 1.0612004178712686889108014907267755 GT 1 -15764273008944.6207822114526762384816012263398139 0.2802461774228971213365218025099489 0.0508485762041485980045249414846236 1.0521869316720640656264741930853562 GT 1 -162719964352722629189364126657535.8782388393006371065094448369897508 3.2258404646488754261318598995847380 0.0913090945613285463623378369938449 1.0957502806519587704651698350909426 LT 1 -46464600396966258529803771280586011.1739465752103106001776039759825819 3.2826357791269115633397249577722334 0.0324834201707371475161430190666445 1.0330227174506011332078371981399660 GT 1 -357908769.3019857457236394091575804561998916 0.6366782618246816197716202514170081 0.0531008462364184614607960345232865 1.0545626816845155611526046208767566 GT 1 -199.3308003752480391141642262714123771 0.4095234214544666716731874612673906 0.0562713693903008737860408867352293 1.0579166217378310662930896396013347 GT 1 -17759246489484962.7633502127827429268634079742656677 0.3672130736172228270155723378414911 0.0524693584133345213268992265164721 1.0538960031430112453629946960054304 GT 1 -23418220838990599688.4028885433096971484886161345444620 0.9762066717914394255233200736098839 0.0678003372425703800042364677625615 1.0702082568141802216700190709380628 GT 1 -585720982628066.4409165387984181460917970876268169 5.0074231845871345637630468113640979 0.0003860955234250646848984027803878 1.0003861700774922810839062636222319 GT 1 -6771797931864579341652417056.3097809190928239400764759732182426 1.8916603551918344597541120756889186 0.0614631158357262214508037734541439 1.0634331225405527178472454449106191 GT 1 -3.5609044802467182929618154503624479 0.0672537755063678538158638020631039 0.0017852879694159939665330862168128 1.0017868834952477013303435281468210 GT 1 -125522083675556496248674.4478493972121767894055612778976089 2.2270734572834576627401703326912047 0.0536870740283133713860139610169613 1.0551819760751503327802783728135729 GT 1 -186041.0261095203445532707282687357853088 0.0544195178447031717048624252285736 0.0755579622916054093247553558838035 1.0785649259469296589508035169302171 GT 1 -180616114343.7877821862768226716821318208261235 0.4258707000642670291689929251265211 0.0295150569753938768849848204472854 1.0299593911512245993467679099001577 GT 1 -316142231619572105742873492184.0611303195209894730738579566179617 0.2176192831561177096797908955977701 0.0867141960445332425494794780411713 1.0907064090870481807510324927514899 GT 1 -2372302992723743792991080757663827.1871273855555964282886085585917732 0.8517112972065908445139580246041496 0.0079696858793366618546853084792901 1.0080016135747900744393738081126361 GT 1 -6419297721097197286123762.8159289760905829434723218794775483 0.6356231379684916980669629943444019 0.0321555036967125357811205243974627 1.0326838489250257104382928380488756 GT 1 -6328191352844595796187439001145655650.6833988967671735647027062440292640 0.0694950063005898428977122912116095 0.0325232858974661046689379149441977 1.0330639224789178905968206206839079 GT 1 -567623982540765.1955506667623625708414939424381964 1.2006685881101499178762654086443349 0.0621951224195431711296581640128311 1.0642133712520376581691198013827298 GT 1 -293895629520.6317622667929687725189896851375694 0.8502328808472362717265221856093977 0.0913483475722631891655666155078416 1.0957934789040118458680551240279047 GT 1 -34746355922229277014409128535239332.0552796811071574326735534460728575 0.0728559260369881882957169138518060 0.0847888290932142712864135883746933 1.0886004524577723184610650613609933 GT 1 -853585192355773131008314712148510050419495.2170379769582420617342590372905804 2.0715832548151112047810306620218171 0.0698149121165469433640165061363309 1.0723716934070156384587046033004669 GT 1 -1.1232636579781712944138695875619788 0.6909620283065846672958290822965560 0.0637882051436668028976377073829724 1.0659135515453121344593305616943704 GT 1 -3456434870086378187.7412059966231592525632039550801492 1.3088775961075229174910737454302709 0.0458140809018608189474915621647519 1.0468967427705518155059267062972548 GT 1 -105175.9148445280893375507058678217714911 0.0172423082720697545898672440377428 0.0863746824255748601533613610666934 1.0903347285834201602651020602786765 GT 1 -93956269.1470861305866624873368356199241491 0.8691116465195615377134806812287930 0.0701568627119518396936379400000561 1.0727393766438931359581385457826786 GT 1 -233487290633461516640243153893.2718713500403580133105945129300397 0.8038426311565442051344198972803390 0.0543517080193133530138067213975484 1.0558845634347998263475121414250258 GT 1 -4133355205445359827009.3977958134449443676925541709380239 1.6976196791629926536789301746707805 0.0306447988828473666598359430580035 1.0311241696393828541536872037052005 GT 1 -100488177799550501726984630926805.6430506766367616559890136751704199 0.0628337300130390361512900260353838 0.0685280436305233876589551586320259 1.0709891952772314228589220629373900 GT 1 -180305279324158477423235056793686556838.0762615433690703465477784504802156 0.4136227930147937396482567748384756 0.0252882401825438096336168190866098 1.0256134826481906669600177327651108 GT 1 -613.2164061294300562629504810055707340 0.1982845999873596144418054013152377 0.0406637231018452041203305916768831 1.0415136118634907364521775597868195 GT 1 -2250152028694012888063008765889476854241.5755659955829514851583696207940845 1.7782860583273699430426605961539057 0.0195073513027091535929303373407952 1.0197001308778803993398019597605496 GT 1 -2.4882832505418704882541903770405623 1.2265605665096994627667517215093823 0.0877487917548566329935662322338191 1.0918398791993227228977884110103033 GT 1 -470089687276397425437449479641546714008935.8322909763285976235387965815394049 0.1515008934816389073868416258925666 0.0380749383367730708590783068079284 1.0388187298296487379412195079780428 GT 1 -1277434074597026.4104642338387873587950363188268263 0.6674397138604031206168842252472153 0.0721525632594080890249457014453603 1.0748879597751256232502824205608305 GT 1 -86304194600763598639859688575.9966111166100580059955984255225953 0.0095233043381129753088617782175088 0.0919577198220728364243726635847075 1.0964643373923095263065634619763339 GT 1 -15.7911889547364505577551813205017933 0.1836183426301258573309937592602302 0.0402640453816295094793312760364672 1.0410970796252242302446701107279557 GT 1 -20976250613.1861686763953780832260217745615074 0.1712444719806149780906140725726636 0.0915611820709062218654637677056820 1.0960277374652540371731498042074513 GT 1 -48255281286.0684791429866013725997501566694892 0.5202336693200018136790601169632175 0.0565274274863755375057317207649618 1.0581879845339358826145155842359456 GT 1 -18201579006080437117050.4424523732429435470951318469385193 1.1500268611655202632596085148871605 0.0837205356588231462977584723086095 1.0874338687636095307820969514360014 GT 1 -2185633349597357898001516440045441753357164.7940254400240003986112686387436651 0.0411198808675754263503624984902956 0.0281259132502594683239157169467836 1.0285290232937031639299164361459669 GT 1 -461.6013750340118549737485751317349727 1.4212112456728781299172865716084228 0.0546126090844916773122095631723629 1.0561604980130772272549965212330092 GT 1 -11287929503964941932076810672731281741.9238224495699220273444752487368974 0.4140343207698341413825127563668080 0.0111623950448602788750921531830652 1.0112251621006335796017380370040982 GT 1 -78309754617423042069461935.7656399244489037547378731093328443 0.0566851243510923094974141542055514 0.0586252228264187174120859400949725 1.0604139432637895947522567757903919 GT 1 -24557702.7718052101099936679608382218122099 0.7364736004526315089917948866789155 0.0125900594996682533986874070142982 1.0126699858591217137799050936605210 GT 1 -1641350396836556732710992187451647495629.2048059255987684389198882975796563 0.5821030838021527311114165518050704 0.0703955569296657720097411064433168 1.0729961133452085122368479764997566 GT 1 -476823333773862413154847212450467370.0101060066601762154755702718148719 0.0372409850455801269938785205191026 0.0500938246533679406140914242218601 1.0513920620579351982165019207557304 GT 1 -25974919061519.4990723179882990221496695102857438 0.5149997129451270378677243118896122 0.0658287586776954511627716429155197 1.0680955156715284425385055747292928 GT 1 -17208.7794146677169228577858980247368393 1.6617982154793216126595584563456246 0.0292186571712570036886826054486726 1.0296540236613546179732442033962484 GT 1 -894355616022409861154347729.7570076637091537971981792477449340 0.0155399201051115172385322029886663 0.0476382490874260038342584179605105 1.0488103259144759227615792962687945 GT 1 -14631136805070904426094510631400294428.4006098299949664801619728124760313 0.3005900672897020300742585084264661 0.0632323146930698305082876476944743 1.0653199620556175867832864387920184 GT 1 -11747054.8156570119308247169282571734789288 0.2246787080656429031815179023803847 0.0231049708759100527448921894732798 1.0233760747545607417766300934640221 GT 1 -305557964614171079740056690614960.2559765901365274349470476787116109 2.7617732281769503990604036799143767 0.0796607365432866993711002507765897 1.0830129122891526345217395937595296 LT 1 -52059.9757876079640258792185480648391307 0.4529928795438800821863959068182394 0.0769855569027245596562543166402108 1.0801103966089990022508428876837393 GT 1 -5170948176734239760442.9509475381515341600720583260526949 0.3090277132193896549399580102768127 0.0481325098438612477821188362656451 1.0493294448911990028664834504097907 GT 1 -514192589.9724465927104110395976608377893140 0.4420178404817374657564109002787492 0.0175715742860472706851169898530229 1.0177277870384527648083442710266095 GT 1 -279169575225070208758750483367281.0985744077266484599026578143256809 0.3023592779695967404553833432324172 0.0172971833164558495808317535093034 1.0174485273478482028587981371412672 GT 1 -370785109426864427645960632340.0463220994652972899106919815923543 1.7968387948596556327569113463645374 0.0840761664323305085321887668202066 1.0878220688922517677173811906947423 GT 1 -236691.4279038679118497076508785935927404 1.5214557902028361115410551756568640 0.0541239012844851985515635893279216 1.0556436923817485558068058905928635 GT 1 -6694391309888437203152724090612259.5504151094832889696823918084126494 3.5185708208648845855574328137369504 0.0925542977606735659170852737912480 1.0971215468763177333036592071714101 LT 1 -3093974650813959400138938913899313860.2691962528503357934001444716686639 0.4400235110293147086458206984309607 0.0157252233087556682643530452408033 1.0158501763064784663077227183241263 GT 1 -36349314555453872.1538605370881986895412618077197051 0.2235525119474772772779392902752895 0.0062477817779193180465979277573120 1.0062673808429237405612094275697481 GT 1 -3177226872027857594384533189.1315226536015791411763692937530612 0.3812834751740557254914333984350157 0.0872650077452394720974433234579965 1.0913097009209150955037407853077945 GT 1 -3420203824132.3526324278842660260747469642635369 1.3669902801463852888741073693108459 0.0585930023435913147931840993522456 1.0603797167981829182343782856022765 GT 1 -1117625106967801776270550829542019139.6613313232403459472929557478250126 0.4416603243186785722231137369768690 0.0577280565801982398212679653081109 1.0594613587857619327112322100508749 GT 1 -51918613731713931018911505993935.0116671386522004935006175004786582 0.5478371478879039711460573465575569 0.0611281725520979860756265696411290 1.0630763080812288727716054100521556 GT 1 -1532076663615478698663210996995644198530.5548425710039084116624356551822834 0.2847915839303958307599638987220940 0.0147142967761137226209789077708430 1.0148236258331848524458477469139306 GT 1 -5176329962427670.2558839859911034173633127605663118 0.3395572403428494931191976899208283 0.0983247495038482744470099748451978 1.1035008564562159006952825246911039 GT 1 -176761922138.4942748182183546780062396374797481 0.7451351412908635338834661444140241 0.0319792348154787298885356172431628 1.0325017402987409695909493024796759 GT 1 -203195.9206561790849921396796784479452612 1.7705250726755341790372239847286366 0.0339995429262979158224141379788713 1.0345909716085487142889546440809836 GT 1 -602775912141748313304938160186655761.8990310887364252555583670393526694 2.3064026571748789477575002049444616 0.0759496895493238479174526717592262 1.0789887602830280200735367357738994 GT 1 -10003.6797757391557533628521635244549829 1.3680724452435103412536905129394647 0.0916633245654375039536385254400356 1.0961401811821711910132150915241570 GT 1 -5105501549709616939247478142088952548676.9246131650557124542325002797539401 0.4290441338613724043516252290402783 0.0490366405021765617854578149834807 1.0502797455724402634128876783662294 GT 1 -680507828230113833812350486994.2292887598310137939274651979209006 0.1763224361293944618652961819586167 0.0370851859353547469871275926362179 1.0377903300119498875630925416318604 GT 1 -838673726218.2074958286466352514453042983306481 0.6424342498299708401733564629944774 0.0417766865020694550760068391531073 1.0426744243157071837497360667738631 GT 1 -4368244794221687583513029525770132898.0682336488553165816902701258340339 0.9091138076467504352559813013798869 0.0996294121682939225096964813365133 1.1049488361520126292588737241414750 GT 1 -73666566575628218087335007675382.5155293047845865994556016205391719 0.2767597135117629926902060786868573 0.0978698058013431366519600161550588 1.1029964298690917350717765377116243 GT 1 -263553225251930820591987978870536.8078184334554590260995933472053210 0.2543510790722643046240563028382853 0.0160908267550512958115602851164953 1.0162216898029812687916526506622092 GT 1 -3276.5131862584098211624509980540979438 2.2697894859234072963126912807383436 0.0894141541215753880916093293372018 1.0936670999333996185231702716803211 GT 1 -13915462199345381763083239662838873633548997.7125566243743390564215455723469806 1.9975057043267038424227059636017358 0.0035433653575552158335036306154054 1.0035496579456069988236928206866646 GT 1 -8960025306296003556351748438744763354363.8557644796550662407383806612553942 0.9796020057084669512681382590681983 0.0391614616480144782557153765225177 1.0399488983296998370865752615262609 GT 1 -1775354773988011133037890534870490155.0320809744449895957931252138936967 0.6092184130450594949731253180911797 0.0376033850834906347415220005790499 1.0383286316631516021507236058390599 GT 1 -9167531177904560014860101221070126259862.9333899198926072621892347383381370 0.2874188201226018294991048552502602 0.0721538152702401475145145339214942 1.0748893091474762881768919390982060 GT 1 -1647486400910553.9443332310685457292840302863632498 1.4060882165683380274703188292207142 0.0952525561462446875772308823497376 1.1000994417937210705606569854298668 GT 1 -4118796224357908311406766577742755439.4639868526615756807487167574587995 0.3696582358291451658540324588843615 0.0903277401930164801403362043232096 1.0946708984005502176300796689631130 GT 1 -1734.6566894973836528177983092743000506 1.6764710132083712172489260021563469 0.0646790677905873295536233537379099 1.0668655655831344212526060373412419 GT 1 -246502061297188248024882401.8689572613492750527014084738192452 0.1006055120620958752424679667804674 0.0359191035346346289308271410205947 1.0365800703972751697666326630829756 GT 1 -3635606875460285805903891662.4868796153745612018711990916434392 2.9987694875860841356860695520663299 0.0686260855944411959674472252568455 1.0710944556914679924620284968304111 LT 1 -5519046857219905303305233686508.8616486208566722778008595560211219 0.9775424664087094298692304414996296 0.0707749375189375861430253157769149 1.0734043063434437362379233058889307 GT 1 -717958770086373071178096943.0015330411022686984907478186856798 1.8912546452051960779984012994198751 0.0625991725835717746206673815511289 1.0646443108222457714712405582415330 GT 1 -216247640961496193.8016498739701455940300958312890119 0.3000016444427033669455280831596577 0.0215423536662000767737413825259559 1.0217777773609784994178201134953060 GT 1 -3407987019.9981761176675309701411204960221828 6.4225742021971338994998163360406849 0.0348053325827892284181858275308845 1.0354254700940039979111089720374339 LT 1 -641008875177024880999075974.1104771112241745900098517719626741 0.3289924413964332918131651315585497 0.0828609259685232376478489903138793 1.0864961562497487947608269938656638 GT 1 -38058601275361995928553835743079573.0006517662019950273869625547330155 0.0815323710159817433618630260254594 0.0546681519633179091646814650109873 1.0562192511877399978720801586655584 GT 1 -64540711918.0189518277730053832327972271400567 1.2578677317681420429544989866537558 0.0562287120612419969878895961528710 1.0578714219170025239195573446097153 GT 1 -20.6295667409856317401850685061090868 1.3822051452171699516687468983346602 0.0111179262788446712561927839446402 1.0111801923645253107451321840743687 GT 1 -27.7864499565707694581421509294884155 2.1739940923157635328596258073045286 0.0873574174088115289892965141724226 1.0914109508375618482986267561672903 GT 1 -241361020224309437728411930164447165001673.9616403727817102437601297379038217 0.0092693715113901236348124024762799 0.0870939248620872471037123505218439 1.0911222786650196753320150906097684 GT 1 -1435555531572824684274901661.9546514607902323059607698498033182 1.1808619931568966228063706532496630 0.0662719895431815904349956823515618 1.0685700925239821242513163700234206 GT 1 -9590958294.8621282041708836988918379227470094 0.9241087466682538690943830696783295 0.0365348431071396204904902787654677 1.0372189548404004291799146163272130 GT 1 -6673269060297.0004893191924641539867537693897218 1.2537161778181750745761697091097768 0.0871361373605397502691765616234929 1.0911685194290793714221969935317300 GT 1 -107380320655658942446738648592625367.5671693339074363751911127426720948 0.0741842039631284500154098700363898 0.0723986151206889722108629097395294 1.0751531806315094541651831531417669 GT 1 -107161.6727869723973019202212392855060048 3.2423196758904723064716651211293085 0.0621671309128900566221336714611631 1.0641835237970001117127719500840439 LT 1 -413903095.2018234416422433332556906804100612 0.0509157645915659845246962467785307 0.0348348194852726504786679721224141 1.0354560207734716690401694970729913 GT 1 -4.3451814326847548459484841951318230 3.5423232423029591891875997363453317 0.0745806137381821738939182102372633 1.0775082536668359951067241113846647 LT 1 -243006027461697941565529644911872.9958898346236087146221482051336941 0.2539002732954445014652684563335848 0.0446694601682483398104066011130347 1.0456978833783186314784798277849351 GT 1 -10129238237804194271149468957087906829636371.8215521692785183537343056239804647 0.1895304010785346255845522870724577 0.0146983281941610744309119385402946 1.0148074189071126128481962412659073 GT 1 -8046.7219391310110819994532223529255221 0.8254065445018505319004934656536749 0.0550528185659660399736244772557209 1.0566262457128452841650692736970729 GT 1 -2989576638622783878108775307183922457.6766506719887648661272254960244763 0.5686748761369819586824735272346148 0.0942969858641931326911122919093750 1.0990438256440835164227430634383469 GT 1 -194188582975450961863485207690979753.7338447535011310299868441363811533 0.3336860940734116730592956174518792 0.0375607311580872095438311837502258 1.0382843121180201790678482388001136 GT 1 -1736929241492664486371649524.6015159639106486022322392039268307 0.8934857740036824649256319060237079 0.0876924912185374477611976985338669 1.0917781650590085054647034807039672 GT 1 -368965.9718678888205795006828416228147671 1.4187176842430121322219844424223016 0.0532990192715977236478438088930050 1.0547719899035983864124387800880569 GT 1 -352745518905676750907681936098237.2341940972401513929181647865602540 0.5871226049392842441132379814308864 0.0886060580619293534929257667653873 1.0927800471592271255937325577183871 GT 1 -728175570441091.9577277076966282405484365677313430 0.8693336335695083440968935896064337 0.0587817518549240574020406869863977 1.0605802341474388090956909505695411 GT 1 -3943399467630186936541053791778325143083720.9674675374621910937269655242681177 0.0199595281714781977053366830915628 0.0458162265004198106704759775174200 1.0468989913899543506467557656544253 GT 1 -609393352733180248472920439083039.5904379799804765102549583478167639 0.1794235938744228177427576634654258 0.0203165588487581725981906063246464 1.0205257787328962218066399660299925 GT 1 -3508196026140017934236796593465642741166.7258034479256421416985820738820905 1.3313114066314309669772818636769332 0.0594330288089146327499533997473214 1.0612724247048968658772201347801953 GT 1 -115988037.2384445775439411118004746684094181 0.4051652400615219029850292284453003 0.0365784773042567643688818553541127 1.0372642446829083636332302808418380 GT 1 -3.2060141464903938511938590591201877 1.0496170216318081944724606949550044 0.0063888743385908806119741802212714 1.0064093705413277605604008060123143 GT 1 -46536350471390262644366418612944027262080.3474111711419976137290985713671255 1.0413447715989133274821805329585464 0.0653157401505702440674829787754484 1.0675464967241675552130350831778592 GT 1 -76426318832869447393198773565250922743567.1807702006722815055505036032021282 2.9032883540595049482217640773993652 0.0879873752311429287549458601193792 1.0921014460553101955383716721069226 LT 1 -53749154465817713326994961922009104609.5926186991135193121330813552222787 3.8124896763902972802560350218336761 0.0650826991329241807438944005363465 1.0672972018757361379296834455261351 LT 1 -7513482064444737859145182238802.1513945274845395659421329877239611 0.6766544675240263513543752831800325 0.0088211741314031024970817253479589 1.0088603110134195247982457901555431 GT 1 -568599603327395124768444986.6307747002628250543529394351633206 0.3630476003226583367414235723512901 0.0414682085896178006571870510067356 1.0423525491691900226209442544305054 GT 1 -65881934458600.0537535524735031283157302820360437 1.4174035699563066134293417749213630 0.0159595441814044256248379780533695 1.0160882691382419085428385571654902 GT 1 -6791638231768431953854894985.5920029576185772192864363057872371 0.8421584099328742577427055878904065 0.0662120176391894302476815313691932 1.0685058661352995913566301710127534 GT 1 -877196.6037048681948478435555121520035331 2.8449524184605048865084580665888127 0.0922378160060996617645491285248617 1.0967728465867465559999902214233403 LT 1 -51608.6465374842608109762661869440503003 1.1605859754404240673952582072271417 0.0846226209927649789713491232194499 1.0884188626615138170291621343778719 GT 1 -91890411326.6233678137879716266667828345411245 0.5301613097079789082979009760196894 0.0203134669132769611793017244698761 1.0205226226822045534338816604344664 GT 1 -680433538518323784854.3937738862024272371170578684797372 0.3899445594553839846307924362827926 0.0606631349512701462230196396477072 1.0625811153881181156036431492660320 GT 1 -12740675857405670171654681239850111668.7129409901913917736012034219920232 0.3901587163730961133792646076244732 0.0863102112464436327987640802641882 1.0902641647502479661829192851748506 GT 1 -9336.1933326660848261588195497043836412 1.1216707360398782647033905243746743 0.0865884919888081931158360437282842 1.0905687792179943552930434481033844 GT 1 -46540244.4025084732780778439700229853082009 1.1248176530950113641245142251915976 0.0465773309454378241673776311512187 1.0476969594282518574917760095186424 GT 1 -283951703.0677726626933402881772003923808394 0.8921963879373055389755594989337482 0.0399328162807459707876893012766371 1.0407520139280642776129552174366556 GT 1 -310448437492690248568163775650796487634693.0135393394225946408726058123939640 0.2583565223291745551042553438561832 0.0327119849426453440782057328776563 1.0332589839692723207878736048860660 GT 1 -12369.6981320247123343303078511824150202 1.0006430110333569751539188652554445 0.0584696658456954229847323609439655 1.0602487124402697641628290462850023 GT 1 -3265165431865265547531.1566318605472028506539820043686652 3.4815113512063444682141685439731527 0.0853277975471419895508687139411937 1.0891895265784073656844985458563488 LT 1 -1720098655657.2160426162392500293488422782824450 1.6549847515436190098384483949996874 0.0229519720555419276846015061508316 1.0232194695555224861671048775330873 GT 1 -62220988239368967181743397310054.9290507224625509541201672610680198 0.1111163769327710866534416065313848 0.0739035213481768324346912995783490 1.0767768611543334993129376956227737 GT 1 -1134666130895283065879962724410.1493748330745620293703145941247150 0.4681958295818517566252205302585642 0.0885754880724989750618249878314079 1.0927465057065734990112209681224997 GT 1 -142844301570228023963622.0121886188846565084893322420072452 1.3604654127505937032762749077151644 0.0133173621356672710615373746816565 1.0134068334384876071521349245464761 GT 1 -133023.7684030514385443029518961440782587 1.7041420903503119235087308695980939 0.0455382861422660355831523594858951 1.0466077478227655082396897715209115 GT 1 -124195398347383086390838.4415648904806562724648576787146706 1.2087233339077383055123104422753842 0.0341522885682311218109224718600007 1.0347491058188264049905941415972897 GT 1 -2303123456.4399045451858002805597191592611791 2.3093539648966416243671093452778053 0.0683469866862753835082830825206543 1.0707948369300844302588470155890896 GT 1 -155116691254174.3378898704407077588584114885522373 0.0322226202579764868217705382234411 0.0416513612118530921648704695633225 1.0425436436369588575834725580013382 GT 1 -91825812114755.7746718710060863329305260684685138 1.4469978821999535754980399306502848 0.0742384070015141582562760443546697 1.0771385364491247390399837125430444 GT 1 -2640681127646550137628452784981655919163.3738007382264573201000406898169104 0.5608248234987522004607989895168820 0.0144271329329822135769595203399188 1.0145322159375257446995420839728432 GT 1 -6214360280.0328036068242696959029083279041123 1.0470695409518176155935101908321035 0.0852494547524772569254257071510939 1.0891038790212081329375550803051108 GT 1 -1604056848.7940520815481462014696380664366807 0.3553220657652777906819726011699188 0.0590176220516016301326709906567844 1.0608308665132369620038117341666880 GT 1 -603.4141339247136128979743968951464541 0.2382412537717946514694752942022175 0.0292303536906021156400933622394438 1.0296660722960911649258681656253820 GT 1 -259680588398602006643899.0775574706613841339518630002410658 0.1919746018724143510464583550902973 0.0251018951448987598455019413354050 1.0254223212865365916061072181457641 GT 1 -4176432061665194079327426826579796.0458776115938935722472958681447844 0.3753140500091616221147908475065132 0.0385577592594921498552325332896182 1.0393207877904525986504595380365844 GT 1 -1167688242499877.0722424511858382260915593588472482 3.1570314321053902959214548882559111 0.0744919837186250056829705398708427 1.0774124854378896525796218500894366 LT 1 -44440736147948927988330067634391627.8800900617190415951556204098123973 3.9576264548160744460582546909198613 0.0464899626091951868447824359521990 1.0476053271058227884688800282508151 LT 1 -382013256188159134675565766390277.3739793869883951869210632345176240 0.9148791015037154804966067827613768 0.0458373299664055016236807282767966 1.0469211084076039128108489988751070 GT 1 -276407133494022.9519343446577529817107342470624335 3.8179756203069087062289512107641716 0.0905838950308601381780391024205150 1.0949525283031946320921359994685315 LT 1 -54621584342803345681023628589737.3607931376299522760334933048323847 1.9094875021881636045999502612122848 0.0890285224017554532411368069824685 1.0932436911055675226534102280143581 GT 1 -168057.8912995012483243125510245126421099 0.1444234870020508127118699221982064 0.0669330838453301754902953937965873 1.0692783592118337020580641689810492 GT 1 -7250639.4851159539804289017723499664168346 2.9015073494775851719136888781932658 0.0188351492260271697946871967455182 1.0190147899320997630409759605506591 GT 1 -33086019792230672509003013421324046.7812578478032325906768423958668056 0.2855653833792745553271825315687929 0.0861565791298941257033249724013008 1.0900960341618653356445069067705911 GT 1 -2.1395953612702927853125182099383703 0.1980858534304244321356978520887803 0.0231313223496653295153793149749002 1.0234030498423520691724155733568929 GT 1 -35570557779416972997658937380587511101171.4156078000494913803866680102952696 0.1413759492615526858437813648712434 0.0407639512223524877234487422901187 1.0416180938465331607191827593952283 GT 1 -587275203738575087329798294762692.1303618116190229889187904777545929 0.0608986738069177485882678313067032 0.0646283570677773415208926659557063 1.0668113495954341759978026400244171 GT 1 -1617292155385337776073739180707.2010714841417152696441633992103624 0.2400880398579070197455314429787141 0.0032663088734734810146887999766667 1.0032716549046688768885337469583946 GT 1 -27054556370502054809727433976760580023018.8500673314072949715660883859412761 1.5700286117837948784340032699365395 0.0258663407312083437821742955019748 1.0262067575790387029284547641515351 GT 1 -53.4780620546758094566651283148259916 0.1216130925967835549032300186788159 0.0875794755700840678878146913193550 1.0916542938337728288037232510549864 GT 1 -1374.2995230557244212725432986141156030 0.2581266270278398718803828839774858 0.0288766733983903143523254831917627 1.0293018088675126364110714881258824 GT 1 -15601554290861290832.8083796510033286046946035093187940 1.7780850587261991380499626872267389 0.0461692482622711008339056549454257 1.0472690323526515972408888067261538 GT 1 -334075602852554666407847153.3024561603191103301358542946967090 0.3960048690748709050942936800956740 0.0414993255249652902981026627267973 1.0423850128190279511860734998089023 GT 1 -8325638138392619982198.5424761271715820210048231006474016 0.2498292198860066119184816591015980 0.0518188637497596520110193461186760 1.0532097229851193431675001958942450 GT 1 -790216342.1515119002374591751739553052073357 0.1103153946153463023576756404342185 0.0119503948177325906893154094526591 1.0120223748202726070167542403480805 GT 1 -154609482984211960759936752248599423787.6407692529041833317712129372199305 1.9557140418486704054711634809172565 0.0681321508222598732024737033034806 1.0705642670778316909606507872814192 GT 1 -918464469404784604.4037287820998483486257183961395707 0.7871004354079195101202471623441303 0.0923731380892803251071275703241789 1.0969219298741406016943550932730754 GT 1 -270943884733227806642169.0558335763972277646324438356407927 0.0046891158946734734932028289596849 0.0402272948712346710384091865801387 1.0410587880444983895353484516059625 GT 1 -672456706.1312278729997180892054253535741451 2.3919243971396596590204069464784209 0.0283726733933089923368454500669866 1.0287829568825132073331985254909361 GT 1 -341.7492489681344843812453818997395789 0.3577147741845807174191946307453845 0.0706284019922508025750094650823480 1.0732466222906252301910833179681280 GT 1 -6017.7970035249598633495698150605815946 1.3237464829905522049515023290674570 0.0653905429424884742135951878938591 1.0676265299380831637423885353574237 GT 1 -296636147021211495338782813360347.5805251377703829076281227977233721 0.1809902436092640620974616282082678 0.0372811382409726163432200783011948 1.0379938498285738045719521631425618 GT 1 -3.3909425138702818808536798344561809 0.8752592629980324696115039591896516 0.0722882927621905768602509716983521 1.0750342547649296710438934885014140 GT 1 -181497105994561833607554392214.5441271364909380617524482701654509 2.0644041489493129688232096892760040 0.0804988593588523909632429466994571 1.0839239944370107256844357983639302 GT 1 -1321998094963045283.7040582522911619886807328391233145 0.2191170967690539748846170508310206 0.0529765953206457590774027526736302 1.0544314715509258188567123616732072 GT 1 -127.3443604057929182590775400777188231 0.7484353773158144560848657404715653 0.0530172543419923028504087377516543 1.0544744059641488670874525768683028 GT 1 -1877901524794554484507501891160945.2108970653050770106387902082886192 1.5918317293780726359193718390892132 0.0711946371079372779834761717069136 1.0738560746141959327516108326858151 GT 1 -1501125719570.8662004793182064030677840465884689 0.0441711013448733037801776104133816 0.0969777206529318026526096755837691 1.1020080532813995377634038358803970 GT 1 -328022167967144.0593096721996128052212094885689206 0.5175518003715613187519985649378236 0.0662838410395490084582395517385046 1.0685827852690308561346903256705596 GT 1 -2355074761780289931745947919476153253894442.8033153240105642711849497421165989 0.9249165624440470612374177477731801 0.0639727030557572173018425460061653 1.0661106395278199595381881787633679 GT 1 -1515293496338025.2512464555210528346719674363926112 0.1272968855979835065546909784368263 0.0529813892494731344768129097376243 1.0544365336654811790056203296091863 GT 1 -11748724177751517270732004265322811704.8434500705454045549072167814725450 2.5715395726868855640649560475283511 0.0298835394774715066948660379784616 1.0303391522972616971081696152033388 GT 1 -125335448711515732404650641749.9818040665521878430715140062654338 0.0542768989117541654522077739586192 0.0045644727698781174455295150636677 1.0045749217839957934591221509193468 GT 1 -5014522931372746.6189588524727907541294828084937355 1.0124212791362257058705537490317782 0.0261643259772541284204242164172734 1.0265127020754714123580744482238200 GT 1 -4432479686336478425757570662204494318375364.6728841063782662705650655461072617 0.8418936985001469799801095192666201 0.0236935242959832949278059639286011 1.0239787298686712075945286405317603 GT 1 -6781863222945317740.8096139201684307451333784575091050 0.8046228508164175273645960441445299 0.0074134004145203657567193587829896 1.0074410162367918883051272795870843 GT 1 -1544633603511170048.7992578299071404329818160434250955 1.7483117663802548246893570252551617 0.0071025956827183938564003557897726 1.0071279391898554994845213513366888 GT 1 -4443034209074553711468731221730517.9152989349942037383380651993375930 0.0102665882675692073605601361029665 0.0867596118699668584971900821173827 1.0907561382676531632170151793219180 GT 1 -1512286041372511130.4898924296952984854814046274217598 0.6326154071777905000386818059113701 0.0367663016323300506982943113438145 1.0374592191927375066463082211124447 GT 1 -1350140404500531656.5470167418998149400383761358251364 0.2595640177351434467300042018292675 0.0602310875228562832655329738046459 1.0621212717314230921385805280236180 GT 1 -27355679215114543452904010937000913005.5849698082699430815692210612529518 0.2092064184383766249714773503189731 0.0139957540198484615044113148178283 1.0140946181208714113486272694287123 GT 1 -16611.5008807129842006391548438316098598 0.4651198875333217023280034897825608 0.0609655617870243586364493667243751 1.0629031250332210697522686873179076 GT 1 -323.8399881007367399726447875865320176 0.7849339544034509730036391407442115 0.0090411083326315744697921195070999 1.0090822271801775684642178177540457 GT 1 -2519671331507561893343279540.7892129675980238196252615542119105 0.5428104927142939128745699444992263 0.0439575107678692809709300929663300 1.0449529221148927653364554487508975 GT 1 -21202972409455156398146414.5107471675769178049341301531138589 0.7341269282385010073046876908774928 0.0805045652320479193337281886263535 1.0839301998571532589706037232668798 GT 1 -29202656137207206523.8503109231992782238145262971044931 1.1069566042804241540166016014349985 0.0704587121894777416633576950199068 1.0730640534305791624250678345193025 GT 1 -194261407604324454577236.0707357483289946023704413556736507 1.0070973969675295528291504274606881 0.0826898744459518177847987327243823 1.0863096680950418662386577402010313 GT 1 -819408317945765942294.8921596277314099170632175031406534 1.5431557166956869743152101521420842 0.0387676493965813600533549209780207 1.0395391192115551823744895480219121 GT 1 -1053637379575263259727018.6082907484751073105936892032151119 0.4212556706907796687379772095097743 0.0519632529246698056567099532224513 1.0533620147406806720944196481319737 GT 1 -193003844863500596515425349949652922.3038015291149554993235253019970562 0.0831116914594015093842686374187558 0.0941503495814033137522957758987683 1.0988819354755234468361871916023158 GT 1 -533564222966058568395559.6749943692357307187601053928371770 0.2800806836778977257436264931025955 0.0021707942270594558093135531872807 1.0021731538162544246882708216182784 GT 1 -1760260371807100296979961757359039569141.6333484499546710308870886044107708 1.2698125035757464799013439741233743 0.0472518800427759910781592836651532 1.0484047125103830623383900583158257 GT 1 -215.5799033056740470434491043220985152 0.7774443533783437448632566409165760 0.0933649709149232646553799673755004 1.0980153033604866653092062884111000 GT 1 -1971856099218606421.6287054588842818879956376837727984 0.0634304877605142826161080434758096 0.0548574381145278952026143714388151 1.0564195037284240357015814364732596 GT 1 -3796925973334025.7482039433838358698751943989272310 0.1885999592610121706948992194088214 0.0501515733806593332036662639225900 1.0514528580441635440285227015374058 GT 1 -369530629485014181095485.0291446643756525032848287599961131 3.3152519482428923666215654485255418 0.0897657590982614294619754756871264 1.0940533050105613986046775979646592 LT 1 -1902668234639186657.6515250555584626726823434858010155 1.1906008860517156727664736816712894 0.0763340232586566275118679365181147 1.0794047697294346532434541422426246 GT 1 -610358235759572371946780627868182235831200.3124766546597263236269464206704511 0.2924223461209642515261066183183826 0.0750045389308445423993132411105106 1.0779664484340153582918231511928370 GT 1 -5.3672805863785611111758076191874942 1.1151773234947191423687761519102185 0.0388752111042039188118729257562477 1.0396510252726347885476245668494057 GT 1 -2359240859506469319300214266328.8303655513545065457428011248677563 1.0046409064271632574183315151334849 0.0864037489331392781560228126201904 1.0903665435620365559504031217395801 GT 1 -26535030493062.0773200072252002370653091970969442 1.9482651975996104928093665639718491 0.0191284303640197855978538657648839 1.0193137457895202493356182739829951 GT 1 -1223296758442280553349966881743529691991686.9182749799142947672745694230332604 1.0858924606951173415398332624945301 0.0799095588746561452850641779078391 1.0832833081997011255391700638385956 GT 1 -12525971.1396797223874037849068438535332035 2.3006948794514094852602069449605597 0.0279374612753489485693344955879453 1.0283351363397445798379176286523562 GT 1 -91515262692043.0094642719732964530019837831769635 1.3511990524395485925153765393714662 0.0466656723419407279932842018012759 1.0477896208389281205613801665312693 GT 1 -8550104872420195203497797463.9182779763964590690086600181914862 0.5017641203094900162815067686290297 0.0997313585553713056483143853987204 1.1050620697032190894905093841230521 GT 1 -1943239521667821138445429404259163.8764719635139830042878072689015142 0.3479137355919316786036947442691140 0.0501690802079430596214938129880418 1.0514712893939777044249439012092038 GT 1 -219821438909527219556637108.7970498061632818297869433667920895 3.0223875629204481968620030381939647 0.0738470050472197931716372587536253 1.0767158366522024839435977678388712 LT 1 -311584190149101371979407143192085673937.8344758586880911441931447950721457 1.3718298798093803928083853574989108 0.0943856203455145433500825355002245 1.0991416930655481587039217925647441 GT 1 -94682438982186011757678736377721.7808372458292781957958217382183514 1.2819926726720213610158051278040929 0.0743230872475179363287750627797761 1.0772300115327419276364496290676839 GT 1 -3760738497236550027470954287723929.3305614153623357798357001584956900 0.5004545410625324955556962289621202 0.0326626237738395107597715662391865 1.0332079547942817080194246600145343 GT 1 -6441.0992493575810233233457876174590588 0.8901824429417085958426087736493102 0.0543788387513788099695923416343532 1.0559132539336824607310920292741497 GT 1 -2928394397374362684871264982038901.6286539676058834966655391425334506 1.4639762178367960816275607636254907 0.0604194950326295211104893304893586 1.0623217746380732204511002983389153 GT 1 -1310860617.6572736142556245056765002803747695 0.1663979796945849737334933576440062 0.0434461555956894586893420551885134 1.0444181985296060960423257757170010 GT 1 -14953350217029621349504425297810876354.4424803433685969334143319857423633 1.8890970006516809362068727433669424 0.0967074933365359256327890823110766 1.1017088503733519802617693631861888 GT 1 -42874652530161091317222753153463064147.1267757507155710572043713041644548 0.3473578504040863763451963189596996 0.0266212583033364779470696767956467 1.0269820210480310289626839085790959 GT 1 -92604461908395952493877393914934.7437300638054561649282488322672308 0.0640653864209607546691745630329176 0.0330744712615680036160112300526879 1.0336337991744797057323312379749235 GT 1 -510575889115179408462880732419981299663.0616649808473616402556437523359088 0.8002157060930846605875947803339576 0.0708757496634884873723383356733480 1.0735128027859095987880579786974893 GT 1 -1036715503010292698.7414696159153557044839391923645590 0.6708612984693456716896479579220833 0.0184923997342212646084409307098622 1.0186655217746865245492952765068956 GT 1 -18620640494367070968644.4977735896009780009687575301998041 0.6058811879408878365263228733802140 0.0095738346614774508633893333445503 1.0096199584402362186090704736908058 GT 1 -7.0192911155200505171661729796082514 0.6182882717898908528193170774356201 0.0118264522955670394457858036622823 1.0118969410886143053384048555693817 GT 1 -258018846533097510977299136.2041887229559791680473803807470745 0.5403657186397938932111134260848582 0.0016666546808651704995438873917034 1.0016680450948859106384395160131673 GT 1 -1041177949475152687763046775.0863833772633443643930512013387744 0.0316459705445003264500529726392144 0.0120781962831443527422723989853828 1.0121517304020531869429144848701267 GT 1 -650760621664937249657214659601032.4396149197638818531764652735529257 1.0290756183429841889323249041866672 0.0047476940839576467567163860548827 1.0047590001829754344558412744792529 GT 1 -38082247426417205448155966124110502936607.1790524151823414099098921765453801 0.5927486631871062699789445848164684 0.0800198277294182225599767349191994 1.0834031610510985726146737173184548 GT 1 -153044534051271630578907874247122169679.7146400661811880933543485827556645 0.2904043922369887538579863626998811 0.0101095573964644991961588830586860 1.0101610060140505803346879338979380 GT 1 -7028730277008888581122227.7491662579210609225255427237544492 0.7059557129864653202775919223712136 0.0132308967431107561755201075819899 1.0133192048526852319496133012737757 GT 1 -239293436266677986143234277797244291.9212492272197315600301811007320658 1.1496289531261748231670773590739742 0.0676976836399589111100355951678581 1.0700981431174773827589669064754959 GT 1 -64514311093268321942426051701.3130945752351418446254312787698934 1.8201350260298805066952295826867059 0.0893552421007474202761600412878058 1.0936024051926827455804948868941106 GT 1 -59561.2375744668859409387125222026376167 2.7470637585916425171941317066258989 0.0203953315438670491859450413757084 1.0206061882395584199442422771202373 GT 1 -372714973201217057974682820.3353005047186788829549754829127142 0.1162603448624154738680075022523957 0.0498124170470968075582275228044321 1.0510958581394712400180074320402589 GT 1 -3811598477.4962543627483327991316269131153653 1.8576472166972533918947873870365656 0.0362747059521782929595454395248820 1.0369489896624240880916248156076533 GT 1 -1519329.4650792516212900086463709345085041 0.2624903083437596096244670651193199 0.0826108961685031374389333038478780 1.0862235741170944135983995951000686 GT 1 -1409392086230359810.0957179311679390727851361425548319 4.9119910364273083304113430155389119 0.0212288401571041747846709747609676 1.0214574126588160121571610981933413 LT 1 -2362984802.4171628950529338647974075751193527 0.1695468684867182520496137465800962 0.0382683722839777766452743091517961 1.0390198405048795523498111907927646 GT 1 -220.9434604663814933735147189804863739 0.1652450643441686532186084880227006 0.0255884617103650753457249930106144 1.0259215406663643495211220867221593 GT 1 -52910241055629939526530.2402464178319372763435852050065140 0.5895579089720437835649224934104113 0.0305500725178654195768277085165627 1.0310264534082258244351776846864952 GT 1 -3566.6559415550958145966718789609777479 0.7361573240040137715764363504328330 0.0921318828143567993203792036327710 1.0966561563202377340895620172180963 GT 1 -62161409075084.8088096932189313262077393468654350 1.3742294820586161968934449487729371 0.0126519349759888292170331197307406 1.0127326522477807086046428565109712 GT 1 -916229720939420106186306735.4776051658319821956746304364037599 0.4187397179546965131488480446070712 0.0106157043921805850995523431600910 1.0106724529566883264283066413634982 GT 1 -741987030263385790854599270241727964.7460123093754581138058117715974228 0.8203804413134559783193331709163191 0.0157736768345239696487052951887979 1.0158994051596212089182878528527623 GT 1 -266875515668143870083499790.4740451628214471951813296957539255 0.5273885419205240907118383445384456 0.0405906118997190520501058791522197 1.0414374045750572329329102325667940 GT 1 -1313427093036446085.7998811842686915342537286560250004 0.0762183007463023156070051238093097 0.0144216164060213855777088799663167 1.0145266186735319314231498314155503 GT 1 -96101082785454892234515382267573.8269263048595698718823740492910137 1.3836409065784539676959887648349182 0.0892143106287383881800857181742828 1.0934476570687546935555947201114118 GT 1 -24550037109548754077680078856687413347616.8902413980549624223752424805395280 1.3397381329835606829784644072574538 0.0962515669660317891538036829626076 1.1012042393596635576594424149341469 GT 1 -1812587869060106705108685688175274019488.7073796963871976488457728410008555 0.0603277560614452208466210968090133 0.0035751525130199249721518068888785 1.0035815586439199158205747994649852 GT 1 -3756967872768079006164389525716762873.8662696095065990778502167597455124 1.0204348136514417869143160017884485 0.0406407757440502854012630624211770 1.0414896921140753551235022803142410 GT 1 -37146.7892865569043950291513486765590822 1.0721857522036503812165382319387195 0.0046497886845820544919661484275812 1.0046606325795920071385583701124875 GT 1 -4883257617551750441344619294592312267048970.6971325587058094857094548204282909 2.9279701927849058293813130736344905 0.0139205232885483692823376740855086 1.0140183224438968995940029315011900 GT 1 -5376104102106683982882997249035.4169506462645422531832886995496896 1.0304154228693569318959978033790651 0.0211022899319994973638771972212263 1.0213281260085290188350995982242306 GT 1 -3401194.9873965646655531151534779879367483 3.4543180462904787364435681476297873 0.0644759636487925085457291194009825 1.0666484400104590922601208560387960 LT 1 -445869273674233.7840671076555300707798407459360420 0.0064591382165014662758204164225053 0.0161297853831504596534331317613217 1.0162612863434721078202009465015270 GT 1 -736482183409742812917762497545290.0954633354831750253904169356856220 3.4833342905559145513981834701522322 0.0416409729151586267199536570711368 1.0425328039070620861998732776913984 LT 1 -1443431491247718255917904207.9739364061804426996589903633273319 0.0076001569707050179959621226550689 0.0339099138139539256061761864259906 1.0344981921964026711211317566840365 GT 1 -734014253833653139979233739782903797882.0309697240624950352390063834151118 0.9372724757117182295406799044997736 0.0335114899530517384214440908399601 1.0340858686124371916775249655707097 GT 1 -29460016860402809893046492371036598757856.2963693664663136558551077294133947 0.7992865617791630008097156708859883 0.0025085944804184540378632572966132 1.0025117462757062760426076091335344 GT 1 -4238780659.7094554660965506153386372024479452 0.6705559890966567008837720894556214 0.0807454640626096374026754324596421 1.0841922244236010719775478050448536 GT 1 -360995317950943763094.7588540246896010928492317492683381 1.4257831915432483471400335058259078 0.0646175696146445137260584502683250 1.0667998168629528648774360772257162 GT 1 -18.4596215726447567710731154681933884 2.2018506737072565882588419847275647 0.0835256920896329486840192839610636 1.0872212449263279008717311347787178 GT 1 -270812789863511970330278866287505663156696.1723575505112486462070324886453291 0.7096004135886702190276540599323717 0.0689492209447826089814363412148168 1.0714414607056502522559727019007409 GT 1 -1097955565171855065.4241202456682267690795170972717251 0.0315474674562846925278561608898839 0.0322530057935206734318872784713407 1.0327845954899580955195010414675492 GT 1 -38504922546690978621457534905119108179075.1230835866255307338570805417659337 0.0851093926369477220049181420362826 0.0088477598043589318922447900434692 1.0088871336500744676913477214078696 GT 1 -4511723118729794377512881215085005566235248.6677518219938801917700939954654335 4.1397688013882099723404279184175895 0.0497099782816375633822751147867790 1.0509880549585164490480976872828221 LT 1 -210.3833364084220473289212812454028477 0.6500536762279511129053863609694067 0.0691769724831946435195492135026065 1.0716861083705393305520993977809908 GT 1 -62849078498824299.1408462376278230023919255402752033 1.7431006288354303340808914437395558 0.0297957664539958561084270958483676 1.0302486795998319997505267371409226 GT 1 -205294.0517291712662948788985491892458735 2.0110498700545120231281059937847054 0.0210932895306616665349045414887637 1.0213189316260427192230984987841401 GT 1 -4259626379514776481561464301485.6185400066250835283658547277579835 2.5309153899336201905544904887707863 0.0252918978103725734507368754775090 1.0256172351777509252502826574033032 GT 1 -57225838484365502291917323695498.5750346034935362099786919977183984 0.3923368012648943667377405436787177 0.0500545659088971370894812430855999 1.0513507338360031599219215936048867 GT 1 -90824896589824440307539149541302871679.5805356524061571703965743705027024 1.8638563050519330190161867838911297 0.0758032605197981839749189181592846 1.0788303084896516898060299313426357 GT 1 -141303368270.4664394748155462839562240490559179 0.8853085029353150791766757679564668 0.0679066885061058293169912601727979 1.0703223496795395676335055852513708 GT 1 -75623931374159830.3369433413067366170952077966098078 0.3999970745245171866424593288422353 0.0811956594976216662030215138650486 1.0846820840791160648077262230243470 GT 1 -3221848753367701993958.8079570020090009321340111090836434 0.6834903489968396884505661428264864 0.0283940578561661863874157476798610 1.0288049660393158872532836826923943 GT 1 -45774497604606900.8678942029999445900058985384559701 1.1588311023457150537318573069519601 0.0914587076514773958221989790958538 1.0959149410521751755191056310618801 GT 1 -4254.1478085163191514726704690198114554 0.2738004317077664889969187403302130 0.0758525937769416757379813374316739 1.0788836895196615921254187573352276 GT 1 -38808133370528137177989840752.3142706474741345762849691652739541 1.5033996666526284666241026914745274 0.0746295211044554593676142519638175 1.0775611039306129808908951001290324 GT 1 -30807150.0296531421630173013241199942674289 0.0960396173080746722439491477343710 0.0810232552845416025459685409313901 1.0844944619352464352995728228731060 GT 1 -260484329508789914295371431937562594.1985139950674746941520674092036609 0.5839246009935826467518775980937269 0.0096929494634460795007886944443204 1.0097402318835828980202384534292414 GT 1 -583353149107116256.1059574025050674218749455046568504 1.6387696263332432466306740199281498 0.0081349309444525943693178570465124 1.0081682000459310267907766668453988 GT 1 -1868876913696669705041604630142479.1406739333140192168808224410441989 0.0624723482066096659868658627997473 0.0657218180359019705347898567634842 1.0679810457366429083995871588588636 GT 1 -71778288.8407599714392092431418087710424690 0.2232689922361749339037089361169717 0.0788983380494713399187045253210488 1.0821848666789369268714658425348906 GT 1 -1011603142000360904009968185922.5242708220514517023896662307413275 0.6623381399727695766313615096210151 0.0080918312644709984239128503790338 1.0081247478214858894748783151212434 GT 1 -44707660686539330996346943667985901.5550729838295617649899645203451369 0.4853195064197098730788288941912487 0.0578922503330088242347195525335359 1.0596356270118827082560684078968100 GT 1 -20453211565356892013583951535062603514090.2194356599971687300001209055844117 1.2112053100515387478005103944587290 0.0605123014774021891484980098538751 1.0624205538571305828442175645185642 GT 1 -1348334262725668307361843601342908.1435810777313616772322080257865306 0.8660344642363980298287303068804233 0.0154416149452460535011097892498610 1.0155620783904318473916962000618865 GT 1 -3369203976319910222081672079708.4737817382913379547526086314997301 0.4849831259301073169447013266904020 0.0772157901701544183533015078626067 1.0803598639799484561454701209297002 GT 1 -1461861202859633.2116424715146127558198874717573551 1.0407144515518864192626232220176807 0.0349562417682448505317979124502190 1.0355818333533379899656652541273466 GT 1 -8.1212380519625106168703158455240270 1.2581017847088355452103065150786896 0.0200666758385123140990302730613388 1.0202707462020223808077758084517309 GT 1 -52428325502731142035514575503774.7707733714508064533069569725710854 0.0401714219192215271097362442374146 0.0179098084949956144720344229247043 1.0180721301353578551810128553501317 GT 1 -138950367834391354007736748893166.2679376931956239037497044919482962 0.2104430020508280784029584960025627 0.0933820488600562386189971404514636 1.0980341401640874067831264086212720 GT 1 -19783546769642275728096.1043222183955278838573615382179065 1.4456643182470515597979368696362492 0.0856298218360601394680560885944645 1.0895197805898659645193083137900088 GT 1 -605050227558164197552187155255735457357898.6087178146301985793650522587296333 2.5280606278656703944815844106528275 0.0138712508518774936465067948389635 1.0139683556746328154069587563817013 GT 1 -8.1783051423922171572438534228712787 4.6301573489848144691006426016263559 0.0516666675988130609038641906130241 1.0530492220727466197769771121598447 LT 1 -2570264790642712594325902.9334737290464266570927029383691149 2.6292664344824637089477559295092274 0.0827385742639570550523690908579607 1.0900920224098601111408182697239072 LT 2 -421668124305275781864525330021243245879.1137748884274651379082395673081887 0.2521059656866629023641154288039247 0.0054706315295484997723267389587419 1.0054856502337899040655741376612811 GT 1 -1972125291798.2374797924323217172877248980516520 0.4103892122379772058576182622694857 0.0323564182730900570397935609034247 1.0328914602034208292175157960922091 GT 1 -5736591164006477963004078823854531149341.9156714513777055344311115202417653 3.3796369765765538880358015770138361 0.0295176719503813139621265416782879 1.0299620856582638565374641942813199 GT 1 -79470568272312088998525977792414.8893264072506896882719072871237371 0.1396335387986264435549710432288031 0.0104210810295169836852718423607435 1.0104757607070726236129011119887281 GT 1 -7.0229615100511795289919934994062952 0.2737407803109097992369558492479053 0.0435989400213072863706261327466707 1.0445779350979827289012340667039087 GT 1 -638467572427.4675049679735823913499442802534987 0.4091368374088303329937109615119850 0.0099172190005996080605743741443834 1.0099667221781107196886289360291435 GT 1 -557606346800473754270329002357510267.0300736229318989826056948508044841 0.7128854443013718789564514850011643 0.0891351440159923638056948497370594 1.0933607396157912609295019453858971 GT 1 -447139773012.5836893981332379675028852391624210 0.6341193955133789822134219877070124 0.0997069667869339193694564078437811 1.1050349761925860638423376306800370 GT 1 -68944277.6608215807307133644154926573587767 1.7236809212462220069707809831702053 0.0545991089196656448882780110373732 1.0561462180802525837860933388556375 GT 1 -20548249637403380953626656240963766966.5249915213470051138687728400520310 1.1100847808868006151282705164973719 0.0515810833979757823488988230746593 1.0529589791842087660063176753478670 GT 1 -465207756445.7264830000726384759076352225732023 3.3616585789347852505071908182030954 0.0810659999904830137686638840544646 1.0845409763876721589247241241366187 LT 1 -11101515550089353061468188343588.5054263958409280964517548632463464 0.6355807308369279404430208847024248 0.0522427795966357719890970460979386 1.0536569061463784975197969307597822 GT 1 -1.3150917922792080119953878235248632 0.5917093012943305500760715565526784 0.0650081917468738358546391116460577 1.0672175109584328561056022745977223 GT 1 -18307286834728559877665.0308049027176929843873903139832473 1.3018278025177851167617811666898362 0.0059798214159440980395427231524990 1.0059977721452389242378185181278378 GT 1 -14712494116.2530275986724491836222975898745259 0.3305414787675130729020783056295692 0.0786188089533366165959331872628287 1.0818814401392275970260664291538531 GT 1 -107191045694226824562462.9582553511267060898930078958569603 0.2078707903751024418257930021226963 0.0149326858766071428231483335418242 1.0150453009334993553991108895612366 GT 1 -530078.5395993131002274430057746728289764 1.3881087525334746619499834293509558 0.0270780886794379422183094938117789 1.0274514555968840364286614880899611 GT 1 -235789606503.2658483053818651750800371135676581 0.5690653580776459420987471305123376 0.0062753123522780990595616242796458 1.0062950848874630589490910342066134 GT 1 -2131.5470496408660643777152173786819421 0.4262126571448520826074656882422689 0.0563394773010893497661110455119447 1.0579887932989515116599210195653832 GT 1 -887891159501624479627862330935382312.3537174363126263474407338037584273 1.2295511260217663111221406025573735 0.0428725201474134775588869500216372 1.0438186886131055608029401592735845 GT 1 -67779571463812234804968392074.0636147316327629198000480191918262 0.7959807467536882027182848332940920 0.0512336147755206580163088272662657 1.0525926800925958009772730836277181 GT 1 -204032204852442625709678.6448491253749038976946345917412939 0.6430481217848067486203652755318931 0.0181811390167577742750363024005534 1.0183484469262446327479315761359323 GT 1 -4659037883234925384514860635946192.1543801778455683317429859342803395 1.7567072604769182386704230541741343 0.0446624763455583031511883684038379 1.0456905730319287670656364543786586 GT 1 -43620722907199656707471525920761.7576548488362823107752901114777988 0.6950673463775518909776786289487413 0.0002969063209930327766393852723918 1.0002969504064011290755868302122583 GT 1 -4550950216603217447741249.5836241500124103376516489751838631 1.3399117121850171325079869265034417 0.0979682530555040364590236497718289 1.1031055633698197590366186631750189 GT 1 -2339615731957953000656506.9345328428831995408228667143693064 0.3456386481142116576056393591872984 0.0907168559203174194488732904418807 1.0950987436708687539453532693258744 GT 1 -95932506992.2118948387583914062930137909459575 0.1105247552739447931245157291965164 0.0407849118615902585221821916196400 1.0416399454734370384269706744132151 GT 1 -8644564226123119390892142800552.9536386980133630657826456368719256 0.1864195820237121761482764913413707 0.0780525942409337802091380072580522 1.0812671006978582360464116166127325 GT 1 -17137860384715508389161925441661484077.5649899682702001837354423822150264 0.0181464399138263018445578117679949 0.0302892229366253362598822318679278 1.0307574199215199804375944997009432 GT 1 -1173972502409748033065247528226879000.2679110870050664387570331709838796 0.3165647754723626025435660484806645 0.0909847327613918084438152366814215 1.0953933893036702207055795699047797 GT 1 -5259068947042873338385657.0072142305092003287805482636712736 1.8972160935104607099573927962542437 0.0339796945704078022348276555312495 1.0345704248770890641260046199025523 GT 1 -46786501045.8563929883690490955030540460179160 0.7560425041723754003995845142706625 0.0053607225612232710808794608237733 1.0053751427927409927236637404936574 GT 1 -5.0888043604448553203447974042886431 1.8878360558678217809025192986787899 0.0051960879174309054965779767673555 1.0052096345288857220156041423828108 GT 1 -3187514324595977825378.7846644427658509445762949192569275 3.3005048437503069104811328278404156 0.0574450804298716581566673833864232 1.0591610912566756799482343730957270 LT 1 -600725583540937443837827090682999128748.3672717054804394742647373512420772 0.0192736632637675421340555727562700 0.0798150842321654961370116636095321 1.0831806337361000467285944861783167 GT 1 -9374532464094.7778109914352594171285295119990928 0.7815233098609686875936291749735243 0.0510343460442361604456137666465967 1.0523826728545845398384596834139301 GT 1 -836249925351428501776099098038.2780720031815777160200684732377376 0.2399718808911684382626543552503037 0.0118107697455638023645432992634788 1.0118810709759219759264004914283626 GT 1 -800366581234411.2146404928767279677666676470194241 0.0601087149669333097256147555101595 0.0736148924491168509279776706917632 1.0764652479069519892136255076891944 GT 1 -306658722956991969593641156.4181932779486827739585697612877589 0.3185739026312596075644961712256417 0.0553357702379046418810393220768284 1.0569257270478720436916136081555130 GT 1 -11276509109716716322913586710822493.9969224083344044830389111891271534 1.2201042683161760333752563281349441 0.0931726058049285095444085977060171 1.0978031510619368926526098764912121 GT 1 -305652180764145510228388499.9155228743650074285169006872922649 0.5850394350722050697551357322910040 0.0371708966170805130852307893178434 1.0378793456707878140032372546190641 GT 1 -1767789088253.3801539895121040193163680329938437 0.1175858851626222583007614476362363 0.0389663332765864616816271914080197 1.0397458376146500044579103172804352 GT 1 -842553480027598692447192850428137159066.8565386853891766889018123512138047 1.4175102036764163385431317813861081 0.0864103712730969047327673627046222 1.0903737922388470433903610365636168 GT 1 -8096778778.0565939371795453948759188562006415 0.0538101413720590059891960187624294 0.0093683176085340090458238779491750 1.0094124763074795121768878448090497 GT 1 -7757337.4019224370258378199690505069980884 0.5028272989747151078131542157648586 0.0455956732604662846927485175065133 1.0466678747431434119975955193816559 GT 1 -5710622441137722785898887723094400239676334.2075251808264220099163121011122277 2.0750248280346089460981662483950829 0.0641983101294191357883918631125926 1.0663516947485089795087385929806037 GT 1 -23441401723751129371558366231500937307.1023341922507107795227664101257085 0.2149960901172753215039262649460005 0.0869205084119436912660126260544781 1.0909323358157167907419429875457741 GT 1 -1182360359.9838830713592531911879287973270490 1.5672049530243115772618368829271498 0.0711328502871893649627361632381131 1.0737895539326964170582680360869972 GT 1 -256635646402087756927817105575904963159420.7062891450431655917774357792075709 1.1931218434762166068110411547666260 0.0131908945251570171091108239266916 1.0132786670946351737908996088660233 GT 1 -14152086042760140945437302050142.9085733862437018058718469793598229 0.4381135217720382089188884399386867 0.0649724446407226437043048504658108 1.0671792791552214797180921756394583 GT 1 -1025436280819346849683740655284.1353090700758617422418586546908347 1.8532130509584225791423563851040458 0.0116248157223177387744558909005830 1.0116929121459566959760206262505423 GT 1 -1619702514594210219903247014326637003421.1212775495044836431962956313362459 1.2752086665697331989918272157463976 0.0582104260291596341361643892883243 1.0599734115558531687761692034093736 GT 1 -1867301327.9684547776455845343856198340810846 0.0654396597375547610707448548766225 0.0342928918550205123797426497487064 1.0348946914223129710763469885671331 GT 1 -64876413244629.3882937066082056273119992684905336 0.4886729869313689399443481805245054 0.0634361005127560426579342667315195 1.0655375271915969127006440360372778 GT 1 -3.3797335276644229219712286545591334 1.5385933789597880862057476935217898 0.0299930502855466751416350934773422 1.0304520428562989647012362775607214 GT 1 -107887593447.3498843171739331166683925403516182 0.0718496888602848816825509121427192 0.0031214426233404415048293806816103 1.0031263244869843129648413411312649 GT 1 -344706010694253123389550369877346831740550.9622493443143984492186546846896451 2.0154466813831383759743577796789941 0.0110394524976838107427305736718135 1.0111008394571099615299944890235563 GT 1 -441696.1288553319930171903671768848472097 0.0234213274284101590992537444754340 0.0482357728291650452748260539100863 1.0494379353985436502825206896689184 GT 1 -155270743425658933955553264169975498412656.1688681288794913031787736582564750 3.0405681165811827786909579072798648 0.0019833122936537347302249863410739 1.0019852816618263725832727413577025 GT 1 -54.8900942831061508870773562208258424 0.6707682240201710088193131614030439 0.0692778983217273411821551586703735 1.0717945407013474741434307382610264 GT 1 -271363778294.5481540564985125381122992837148583 2.5302357431082916187053270246604770 0.0682602127473875049402771895704211 1.0707017015064375962280066839710147 GT 1 -447582489900201076912702145902934132128486.4033994752042436687674219587255896 1.2207476339879066725665421043515374 0.0218571575056155796583929780357580 1.0220995638921885012997764835686523 GT 1 -76609157236011.4858421883683100985122125066211215 1.2083991944393569963970998055626981 0.0960366440596840321484103141601455 1.1009664548757969365157416438574437 GT 1 -4185423693448143.0668273691212531543732482773781558 0.0764186969885542109160099680093703 0.0614336836298568732918035721008726 1.0634017633634298183858347849105199 GT 1 -1.5937226510406825343120831912170663 0.6346209651175025814783199063000747 0.0879565441228809266345764467281101 1.0920676410549134757168226100468883 GT 1 -6127348946127134838653940.1601721701741006653651343008772964 0.7995191430630270694728146175239778 0.0168417016171192893290528797103061 1.0169851358050822728629565524509037 GT 1 -75258574067361795679297218052.7296588106763491833342093437331784 0.7455765114130358142159663225197382 0.0307050701221657251810271903441934 1.0311863482020581558077809938235065 GT 1 -4490250723075420622117382095594.2050662585447142172922280673609953 1.9758649917081483621472594227356626 0.0198211144511847166000681843311948 1.0200201877009367956149147219051765 GT 1 -400874842632457189455708086.0690578841628100344362643120805539 0.8644122822755907727352239888573850 0.0874595183319477392715956009726418 1.0915228310376821027845877904802637 GT 1 -13315093988666015609923196829.3049123365984798828810021839118786 0.6283756854883185721219912670430064 0.0618162376657201919495578258696247 1.0638094404915701843498218229097484 GT 1 -368716126647555612880024822078.7052703315231289049541715178731486 4.4708430041247873280600367540189052 0.0655787798010651775658021920668248 1.0678279571928668681381860508781475 LT 1 -208416571042361465.8540806039141577020558081393580094 1.2138194656677439934191580591712139 0.0061389247571230955930108159632843 1.0061578454305143240272337821323718 GT 1 -230910162326.9430332024447173811483684978096756 0.7158942197807978018527592322542401 0.0417074454981176735483223703909317 1.0426021671482732698009871905784627 GT 1 -15259462723432490823755639383762558421.2131203629312294727496644190010039 0.7794916062305720536505346950257658 0.0008381645128669029594280177993248 1.0008385159691413921447271702815331 GT 1 -868550591022918676473619560521304535190.4972372043255981481470451585462319 0.4389202914244532080342935281719892 0.0772617516975494028721347816611306 1.0804096726693003057485629725785860 GT 1 -4303326696.9347051356172188067527882986756982 0.0730195606737509300453616256867096 0.0563156427448681111840540518352075 1.0579635360643298393114680332937664 GT 1 -20398972708450.2184469935845386762448084100319877 0.4107393680995016487642753509586019 0.0458767103615017934356194669238533 1.0469623814619931500928817971229538 GT 1 -14162233427881051167219039703380969.5000188230584082982299257860411609 0.7277363001867766487916919646752343 0.0483378678014333936431701984572845 1.0495452103365665537848652078074280 GT 1 -7067816146806382598128952213597686936.4291157718492978582226032717589948 0.9266975171870365056202157566970660 0.0162589791344928754717878842327603 1.0163926067478266874404197295520190 GT 1 -81945697179638480732.6323389547234930350088760817527481 1.3202750918995468045921384801874011 0.0668420169973976387667882928935727 1.0691807644920912510037292490331333 GT 1 -88728663196908.2785416325882875874804248710756378 0.3987352792363160857056125149441907 0.0794759940228527993784481133938532 1.0828121993691638271014934151082145 GT 1 -6737773170627964032625223765977589.0639117009794842279750923697242871 0.5487410828010261646548085144911845 0.0338885619365266519585347281913214 1.0344760911089537974941342941700482 GT 1 -471992708.9548998369651008662923303278273537 0.3210081861526566849831169340187537 0.0997923582192855107799709042519214 1.1051298291783156129137826427229285 GT 1 -2168508761073808323.9960424044524228518069971082745089 1.2891383288327861448168110339038212 0.0052678472074726546860633689021432 1.0052817712358695907400476850338057 GT 1 -1593902607159191185221096.4961183430323541824397711571388147 0.0049797228236219401701842757156982 0.0005101000315374902337341428398294 1.0005102301768185340003522821039948 GT 1 -130837.4580215630453690201815841708664347 0.8595421951391670306326998819103722 0.0843781300233024368202033795763776 1.0881518052380317474703967286975613 GT 1 -159440650640479294052051221579648101265275.4115805625203950424481161123526439 0.1170165339448290425923236547541856 0.0210525068836902502916023740278858 1.0212772710704174589415054373769969 GT 1 -7755765864036638.3890109699412576002420137605772994 1.6103617562191750120543953522783529 0.0346248267875855106208018765892224 1.0352384726677199085504562569461242 GT 1 -64526595809005795355212121299390410898644.5101057271538074660648039896494476 1.4993203628381941340375793103955453 0.0872308360523373265927239360390600 1.0912722628326039477537349084605767 GT 1 -1196431652225568727700.5679560931853752461999693549165071 1.7070187025607793620642855105977161 0.0951363994712837109387927290524930 1.0999710642890842722862555095195574 GT 1 -34174083.3281901647735565603679964384362957 0.4072517436060027238056883141606411 0.0487638821045542396692129252510009 1.0499929634523384339348861211936842 GT 1 -20049189620384228152528534754581.1353673109863635402256593142334134 1.6488527279625726144077662321115655 0.0340007772227906350387752081323652 1.0345922493484009430765707464316515 GT 1 -126231993679332072779.3572681749741422456274614945546202 0.3215772052964129699356585670271236 0.0108757283083335359164507417753579 1.0109353013688182127329622739321398 GT 1 -1716278486033928410462600555718379.0089824121660745428351750568226615 0.7728697874082240803297814918266366 0.0076686662927711168355404630555097 1.0076982217115135076019429094487349 GT 1 -1011480792153.4365009645863784638902277433281587 0.4568643775047799338054812926671231 0.0963018264229075015167689127343161 1.1012598531262941549759870725310224 GT 1 -90743385641524434454.8564532475023807611483683201934924 0.7763209193247007704948640254862172 0.0726930466578181631842790398225360 1.0754706427222608310490292591909478 GT 1 -3261.4912321547918966011956210195266872 0.6207417362766897620389502600816024 0.0524837970233368951004223883910642 1.0539112414048453270665312033996941 GT 1 -2105419404855895757540019880319976.1839099781488338714716197191818439 0.6515992071653200274295273769996025 0.0208561523990966751200649963699483 1.0210767140471890941836109897685162 GT 1 -29518522274754148792185002094556925000256.0221427085881977906263749851262712 1.2974106897698533338654130234999566 0.0547753601921848702585692636496111 1.0563326656555659347374415469893824 GT 1 -115524110842627499.1523707816753088970387170592058912 0.3094245321854367058972630532647199 0.0594491799485714539519765958829827 1.0612895965584962621657805371238918 GT 1 -371579024091528072558206.9420436480587334823151708368409979 0.3979584316292048107037677312312822 0.0298734822019774568778940253882933 1.0303287852704444215328467540421858 GT 1 -650598909359553.3085590777403271649093140655001390 0.2252157225545600535674855612964467 0.0321823486367171710507369642138396 1.0327115861415009282808233506273936 GT 1 -1371812709.7841547556781544453421411453415911 0.0509279017873162444229944681010627 0.0014708936537156611858387010934298 1.0014719764797307944099554463228918 GT 1 -23670124624524619733626893409933018.9744821884993376714332452301290781 1.6557883523593637545918727712207168 0.0590560123248718515606984649927900 1.0608716654243705833673462967338029 GT 1 -216880143804205863798.8458482985500070638592861362360073 1.1621379877372459158116980918616760 0.0050423221411713167642611036897934 1.0050550775434227429484129925380655 GT 1 -15031234103546843592359274242550502.5425482896940003518862598494491579 1.9982160685248820650977787161205019 0.0404069586331241629003565075091202 1.0412459996405605375108953789251471 GT 1 -74.5833802392612525855403571141669705 0.5181088084650374610440301101600705 0.0985482681880710372699368291426343 1.1037487798554670720044165488594919 GT 1 -440232899950154472365163086.2062281641737550737337664117346511 0.9833381592822591186964473008121122 0.0545502649085258625194055488007826 1.0560945545480046287697305533694521 GT 1 -1076.6174956991833562704159680439023815 3.6395894802460902778621693902995205 0.0330736100134540320997336709592184 1.0336329084670727607279762662981520 LT 1 -542275951666856250233115315130612537.5443830816708486280842498119892650 0.4214619051658651299484292050190104 0.0506866355840122417416957529625420 1.0520163300137824175978305599217987 GT 1 -1489157844680373151121174976.6764877031129595635403499640119744 1.8217513961851229799912270115967026 0.0180543625432044255966962390304791 1.0182193311653372739718586771893958 GT 1 -14650849771801406415523462143277263186.7228844413552759538325976888652359 0.1760411858697592040116550312474837 0.0342462136255890386849202170495559 1.0348463567865219872201432241985328 GT 1 -4324266682864811443105.5028346618245175594343067840908944 1.7132821555139719921549017891807321 0.0040329189730069538787376349287908 1.0040410731214588529132231649232664 GT 1 -2547970134.0298799656880866343276696843768939 0.3801268981682428268544140989929448 0.0905239270492645256599010355991932 1.0948865892856483348999050129371151 GT 1 -6289136003628222241043701502727879480200.3262926319662089634205086390327509 1.3838846273602968135380186063628064 0.0024160881165137771137016567330601 1.0024190115672328296192625723851591 GT 1 -238395.6785112302241842704443263391900322 0.4560690084742642832119308933710632 0.0851547914964708388809047475496324 1.0890003990520435667472901571607562 GT 1 -955389552472259883633440183738097.0434212555542665076995178102834932 0.0612364749322442424300130267703227 0.0936890848368604025190770128270837 1.0983728583404555620370924994540089 GT 1 -1137321972200242365506983761659741209.0781263689803470516293064672432585 0.6390996665668431650666328439003933 0.0170017252744799944489069369978844 1.0171479139478840510133732984113702 GT 1 -3365978887035147782155236887.4822341746000953835853199033562897 0.6092579752427532880296861085086745 0.0593833531970816843174889646089662 1.0612196115596309440899991040479008 GT 1 -597883304.2675367650057345257067614234246305 1.2956953358190159620851247602295991 0.0531741355730143905388051198882075 1.0546400839851965191741881345292170 GT 1 -519477740321366560.9646008912347763429503857114015023 1.3961693838144936100957107775113142 0.0796423018698134596256188599740327 1.0829928821876654639195127934250607 GT 1 -537460296352354959097249043153358.3695591042249871778375644672607951 2.9924605025930154349605653461110741 0.0924636052555295896316947231207258 1.0970216092456709349391210572028320 LT 1 -652160965560997832416463.3851549596848609315793897792900434 0.1257339706912887196258189712724941 0.0591772019913925692671683138130350 1.0610004695542024674239064788730060 GT 1 -20679503686643679003835367823687006225.2759022530925826868889957175063321 1.1999557449514115962511374790666275 0.0333725467991421203205239709013052 1.0339421181527747059849125555639246 GT 1 -53712407552294565616036518843601658881.6664962310106715595063323247521527 1.2550218719553617535104725222574159 0.0024354140774879033900701336400162 1.0024383845221742616600148274726976 GT 1 -24557631765839336551824484904386475.0020653866470062227454818994248251 0.6575637418241266221107053115530538 0.0171132938828466451143919090793868 1.0172614186641555066755156401458425 GT 1 -226071813763068109925145395861.0617253431941878994956573056595667 0.7963844855726832245043163212319215 0.0290122607032643340007918959188985 1.0294414376533993885913784960373999 GT 1 -2501597.1291591940459780998924741403019493 0.5198517942310413096951578373411944 0.0911430455043909009319655928687029 1.0955675629793626583112041634435803 GT 1 -6039130903875.5226128610508073439976755971566154 2.9794569315270293420800490936058441 0.0400090023795132260101858696509097 1.0408313720428835678656234620297794 GT 1 -33483999032340957978095437851805784311022.0059070153034253903844255583470547 0.0153617726937502530558404497616565 0.0149200474997868777843684315040505 1.0150324710531807152936760109372691 GT 1 -97046847003986062991683356401469.8195725977983786246120492598770015 1.1308816878171237962989876106697880 0.0995641457386945319193446706062307 1.1048763503721948819991973172287964 GT 1 -7613834122439782583195035471467943.1200925235253159816713876584433532 0.6844254634245296165977993149684019 0.0651700553752462588171550074332971 1.0673906436418318124871509956075003 GT 1 -241946449321439955.8428206323296391623672374970793877 0.0070045392503030372089741857134205 0.0472392365346520961502440623421296 1.0483914420310543374127835589712686 GT 1 -32653342552448050392.8469047402400305900308558888732745 0.1571263014204253735102728052582567 0.0424444130634817014340000432669775 1.0433715053706237072216682636875976 GT 1 -79981177531064936081086265305895.6223393794495778771674255277548708 1.0946417117218549289842090580752527 0.0765959721062895513685661253808102 1.0796884068939511433845735756730923 GT 1 -6068390510.0561766959613183322399382459931752 0.7756073881884913124263249610480189 0.0277953632186718844728518417703055 1.0281889650123465430557722799259975 GT 1 -9198691783612087703152141128470778096963.5386050804946705399078781297152419 0.9687947491620702809847001162323280 0.0581601014376376294874659217908787 1.0599199779137618723070545671835689 GT 1 -138801808741054931544710282820.8116703586069185370675178392047990 0.0047331856326694886185312369646546 0.0330801617494424626566540762517409 1.0336396843274206935563741289686189 GT 1 -79448.2515254396831628048108726281284020 0.7988265618592471560788241103283902 0.0300970480679679922637788289542040 1.0305592620446052661346403953466924 GT 1 -70405689801359145348568455.0830838135166561671844990408280728 0.2312741048821783332769997586191725 0.0218642726376924212424057940129549 1.0221068380423903247340652588171307 GT 1 -10025075191982520227765.8053323817788669469958952958416493 1.9436220838749217119692032276421551 0.0517301761815589578609570299059636 1.0531161929438657222147693740695250 GT 1 -145049354804287864944943232597480810824.3161977924776388942925628770654624 1.2064455021117317603179035569617493 0.0838631980223629477171069006365176 1.0875895783220218693865365610705846 GT 1 -2426853342776633365660106484788115.6205404093312263994428918570734039 0.7552335814668645512328186081632961 0.0239433664912419783865333764579283 1.0242346681164731108991609486498550 GT 1 -62336784740992278441287980172222650.3235445891030581233236438658656903 0.8388719642401261917664761273564696 0.0480353072520479399501846885462923 1.0492273323281583923146530294552877 GT 1 -4684060103991435527022866310893.2809291563909090517372155676547515 0.7731258812693869293473031539430411 0.0921046867249166042159433360223727 1.0966262007775871938562590358093390 GT 1 -384491818145294272163.8726062969227418674423070017699221 0.9946924372490763123231676303113060 0.0188983279509353615660631764390900 1.0190791835546736528019006674211355 GT 1 -11516076948465.6232547830945822298962387653004345 0.4642014886279266273651057061038288 0.0732243751742193129644234891724825 1.0760437871303928958954585625079532 GT 1 -19082467396321313293.2285298969071524497367236049988043 1.8293291496231178078831816142068873 0.0941621033781870748720186856804932 1.0988949109985965365047582423869304 GT 1 -998230857864868.5288228847593523568046343569928846 0.0448796331106285416297015549976112 0.0163676176024407873006070767320184 1.0165030468583599977290204177160559 GT 1 -130956329631.6023722813331857992015153376023089 0.6712413691130442280062332077398366 0.0520501452502774759047951547463537 1.0534536739597752201783201961637637 GT 1 -556030523507897.5595317730394813474155191099814738 1.3104065486115026643615894147356330 0.0875488098440024278258848439020768 1.0916206851961470491543925908483784 GT 1 -146788697.0861757440878965281900505542064432 0.3315958728915686006268890947455324 0.0078971030405352126198925694058987 1.0079284503028600475686974387546962 GT 1 -1724854913.5152728443051813456932641476411792 0.2535036666421967228405399556803008 0.0377126567289215160194689367083611 1.0384421792875118973086504921304072 GT 1 -354.4355616267744241514158265463922241 0.0240210493477203469965272963534331 0.0998544682054083526311314562181735 1.1051988267361938136090564239562193 GT 1 -13364514996411.3272697784046853072204820858133918 0.8620740716144576062754755859901965 0.0835263825854887356265464679807386 1.0872219983529214737242814887991600 GT 1 -3569204374239007321027789329796059535863095.6208377869681312685478595379427449 0.0182488626045327185179512609526710 0.0243828548911491008691277943788605 1.0246850388824799274247172360487789 GT 1 -144832481845244691622398679430456.4632012182839405217486003842500491 3.0418196716503195879797880564866561 0.0988985765504358025200138484545503 1.1041374600624861035505751858360880 LT 1 -19226475446914819782238944881709424258.7443162357436885034762929336952019 0.6457277471670552188842514460240711 0.0316644573021493718617953533909147 1.0321766167511575103791331636666709 GT 1 -628448735119689548543.6176615929813274939565558725160389 0.2427466253665174717489468023023182 0.0205615464206990962696531169949523 1.0207758781002473387505170553524661 GT 1 -19305.5249927870702014371589598267678710 0.2803466693231899920432291338009774 0.0870444739194325854525332910130668 1.0910681114240483422111560293997113 GT 1 -116163236909749433110.7580488528298542942631551624474002 2.4359561778593023381813792972928093 0.0981117357635380265685414691230760 1.1085964353224869941385810917615810 LT 2 -64384303181996.8641340299192944021607221302072149 0.4465771265018367413807850152237370 0.0236421583182113377743375541209360 1.0239261186980501627902579014370649 GT 1 -10437335887121775609861664644361555431004565.3290902704616172966888490166051170 1.1498300782805199577811906996732779 0.0701692896340167186459106128108417 1.0727527412691802425282866866641753 GT 1 -2845299226162506031255926237520.6084080634832022800759804268721738 1.5985387695731513820114011212165697 0.0241193192352901146605493131360063 1.0244149533574366067482284731981542 GT 1 -14935613845535969220040397531644833517714.0166743554848436412946816567620980 0.7707497271826619556461663743786352 0.0841760753010367388724461646517952 1.0879311547293758128001906218235928 GT 1 -2148045006.2064475963764822791976303008038763 0.2213148539719260346663452985123280 0.0679019041007883534560756298355829 1.0703172167245237767380284535419061 GT 1 -3847416373406517823808058956572630.8657581211775188429052085525638140 1.4487229239005744249544363611395216 0.0078399153290234168103553075551771 1.0078708090405303543746483694317693 GT 1 -9132821902014102990473248866689875644798023.8436760402256722103132228571182927 0.0006146091688258206297071997810730 0.0425940822843530555801715051116522 1.0435278210154160539752383279603646 GT 1 -1035930454594202905.5210653501693457818707537769289090 0.5979717182686958288427655774739577 0.0531551032755489587693393892254605 1.0546199830279905261842014904512765 GT 1 -3991256574101343036660297857748908582130331.5571635204020632018828998784629346 0.0915190184454226073344696616646665 0.0565187396754522837428017305839465 1.0581787762419553122235488327509028 GT 1 -3868797531759382715013060580050122031.8619549585441502044355066838881158 0.5680695496778127551322131795518343 0.0488113805290349109519903634300251 1.0500428980684707857000194452050130 GT 1 -81541264340.0659307848194240715281124376085854 2.0911950100571177356608020686376835 0.0621477303658750406470169949605760 1.0641628374391299050920876062993333 GT 1 -135117808727670671.4788904953225495547617221990617136 0.7751486353494161947794330761214466 0.0709957970613834845410028225128648 1.0736420160250163233810065387816776 GT 1 -4704045139198867526344993.6781078343261570371991113178678652 0.3223302669437950787634188584660592 0.0139180823404046018736160404188845 1.0140158470398546790925517058862008 GT 1 -1121622864491789568385840672962455360485280.0345322260640405018122961410318341 1.8051335969443692413943044294520300 0.0629082866224008796878714370487294 1.0649741217282952152409135692615769 GT 1 -22.7055017265934556816577903676601297 2.2872615169482488977731969961767855 0.0492676815515258435303153275107950 1.0505227298239852196512827374398205 GT 1 -1.1983723295279149693267297217659043 0.0301428123735521146190734567706696 0.0752342530946188043376303467746540 1.0782148201308212279888135899284487 GT 1 -12173743515.2402216303736637843123162291577725 0.0904689336025427295844092682144895 0.0239773197684902557131590092355834 1.0242694548969207202247807796820436 GT 1 -7114431746189269903.1900882981372383852805202303374771 0.6710220323759715873535435893798410 0.0765616237517425717376897549234114 1.0796512100497873902194298103344950 GT 1 -253929696.5921380112157750065001566429509455 0.5627232817250191784167511789529242 0.0275996396993518609729040709028803 1.0279876660130385754156877821594734 GT 1 -30655917914.5905247982485849315232603618649320 1.2482097011080694170948281430086181 0.0462202735281547058764280811587770 1.0473225288777321942294806971132443 GT 1 -21959460340053147795297198471.7908700954144078582007558944625364 1.9296433310563156188929202754745285 0.0905550825120957891189643119952404 1.0949208463677295055280157433767787 GT 1 -391862179726937.6404669271072672138011953180905595 1.2583696418236532579540805983897650 0.0218192828118357842418280777105333 1.0220608436164988568740306885915745 GT 1 -2578352141185406546192956713730589095052.3493524301956404775654085654036161 0.1477343618252481140324651398392702 0.0057455707761133956828231334003446 1.0057621400650477378969372087553349 GT 1 -88571906322.3872555039362947374442291226747414 0.3786366962911789388421484545137777 0.0088557138221918253740358614316716 1.0088951587035688485761797168646086 GT 1 -1429604977485996232223.9278666533418751309890156541167691 0.0414939700328270914569253156832241 0.0431946147664205238415408340312835 1.0441552674220318193211595471893314 GT 1 -983110491641.5983409790068663054415299459227719 1.1896955393063485887793659215344714 0.0101628678180458233258873633838789 1.0102148623347617631203440057495878 GT 1 -36989108482420.6343845207807780280026938225412250 0.3482807608150918423598438571883726 0.0484855226586747455155053427807132 1.0497003770791562520782665423642940 GT 1 -12790969984728559105.0133793201555533023337118116105017 0.1512460345293694520699121895686480 0.0778607075725903765598954471578800 1.0810589904509542709617268087048716 GT 1 -7588946138454108585903535417819618199756.2373308261342710046180806525034775 0.0509455694072446390468146425262648 0.0298350844672285155558190664684132 1.0302892059226265129849819712092109 GT 1 -3206632858803872393477857520592.0205751490041837483569193338760711 0.9199995462231282957169834956904511 0.0444466185558900325277740058021014 1.0454646493122538538132641175417517 GT 1 -76208068.3106310581562576828381068260350125 1.4434770260159728757594753309632655 0.0529107914150508857400534727894518 1.0543619889814518302921628063869683 GT 1 -6453015900201006330676103577791166216224.3613156347862344286095145595861756 0.5625139107661913031682033422591058 0.0339433979592672324150850724490966 1.0345328522411298019223589646668541 GT 1 -1755255359956897738901712900327463.2229769687034158064249273366739941 0.2518104770934180503376477911959527 0.0042787832645629570131068818508311 1.0042879634537273159286723333600176 GT 1 -3699779402414105458026235546808219111844.8768239375538417044675557902059324 1.4024764090370357166904468392594080 0.0730425914891460336395152897316893 1.0758476599832936369955914198766947 GT 1 -811762875377803867624779990532.3526541230189135180668672604630193 1.5464359872778587243071870112041572 0.0190689928746426206607396767813511 1.0192531510180591225411915808725943 GT 1 -30554603.0184436757108240663141021609243148 0.1948388780817616208080463618376931 0.0508880367511354865513117533407535 1.0522285070901666147633095265027011 GT 1 -30926233344199037279020591531768091362.5477355696466367396846826059830624 1.8231615133486430352070587140262554 0.0926957336890403741400391792614073 1.0972774206122089231209080012262854 GT 1 -951233845256837573832055849874329.8581826426287337643758489766855902 0.2262114209137371272945619725245757 0.0756981285784589754733640667098408 1.0787165600228337693140603419065163 GT 1 -154346095163922888263537439.3545500711684893792751247140127917 0.7489155676829281058442817412585844 0.0962810814280789636711237624645889 1.1012368977222321262450177123452164 GT 1 -14520634.8403800107817973990493555784737062 0.1503336010415329865355015823186066 0.0448308061295174007992588590130175 1.0458667878369860836983960976491909 GT 1 -402789476018236488148830079612504524.1709340446333223107170901728326734 0.4759185426635969496288345790821127 0.0434147412719558141427076073344587 1.0443853579236250320314280498675480 GT 1 -679.3317994911675689317269519626366047 0.2161017171060705706952062481760737 0.0361623657559247496469856185070132 1.0368324277647740981819145336736995 GT 1 -27025107137326402143913505.5137508940068875529721203150612393 0.0037459966150270281897833444983144 0.0121685725723279469272885325223845 1.0122432158039971075264785935814534 GT 1 -20632522565638080.0734778986069688878032864818889669 1.7836015727264185224261111160760169 0.0435700755422981223054659603934872 1.0445477552449311957571049471898722 GT 1 -43.9201442149564620831965656106962057 0.1831744781572223140165230112714677 0.0077070659740822059517786916075985 1.0077369188915693993921273957073209 GT 1 -70264075841162290669753935851418.9593930402335346977103053684144159 3.0995637235562075805753174363329509 0.0745084764755454825075619736589524 1.0774303058171671572967981191427921 LT 1 -482473808341581558265630210805678894.8771981043824978290987834064694095 0.7735429931125688321606317073510346 0.0601246265974109700326755783317967 1.0620079939943970920165595701096329 GT 1 -44489211209428.3733002850003034086510300609466134 0.4787848198574501740278665896931002 0.0352479838997371374438028762214696 1.0358841888021323899428112100963808 GT 1 -14991446459353341555920636.2989470893255929680760187118437871 1.6271170684490988790800019046655221 0.0030206359126537816733921615102993 1.0030252072411792208031355245625423 GT 1 -27114.9462727361194423009347731114281384 3.0798279677049035325742829429491422 0.0102904639661857542411662759084139 1.0103437768487415190100334970656447 GT 1 -65007769726694730309746356226.2289290139450720805567304478699554 0.4199367774864125819090564829193417 0.0416784904701121752927402181427298 1.0425719523767644021465244382008791 GT 1 -984816753182667017048377912108176865031415.6496069181896348831079013518649562 2.6861215322006657424521932679607420 0.0092136678815561404680647783599911 1.0092563762557393929177715997582299 GT 1 -60433069778192573347.4753274995982654566041905559815805 0.3592045848347928441552323469014860 0.0796254287242266797392386093212031 1.0829745491080887172477329907351621 GT 1 -9323200.2057337537221583984857469978468827 0.3368468922362345902077845930662293 0.0672398836679669444016259443181609 1.0696072212339397030722965214639474 GT 1 -6839789691039358900343554260507210902.0859846911745886326687221589747247 2.1027830482756852755618098435983981 0.0791506210815205345985354450192953 1.0824587969062112998971929600965590 GT 1 -313222414303120.5675153551942921604762701527350744 0.2748788052660735222279476670930475 0.0758434659115918686755997543872369 1.0788738125019798107527697792120642 GT 1 -19109895800931618250898076120941511109943106.4399401926050078870815572990020962 0.4903458086752847758919745276096968 0.0758420994690788308431214353167479 1.0788723339196699566311109737166242 GT 1 -3853654475177228782351185915002172593.8724299558921113101221571994825294 1.2968603127748372111310254357184702 0.0976829669206751383217114595923517 1.1027893427584117931138251035222209 GT 1 -850983805325369358432551101756993823761.6521137632152733792591490709412361 0.8356701135401235442051018643782926 0.0336005750442382916079880485415757 1.0341780468392618178649688189492070 GT 1 -19131867373958265035214128567726320668374170.8776205877028588776906386451577703 0.1521525035285575243047030799045704 0.0335763572730232814624647140623656 1.0341529873585248539970489387894093 GT 1 -7309161561752295745291531.8039839428704595189488064691958553 0.5282687354178357090814010509471473 0.0769044895875412374714077167844308 1.0800225715961049343225747524359974 GT 1 -38287727754367736181665.2764885297252321345033317138537171 0.8350377965476854044606293511362954 0.0979653480415677792494832252284243 1.1031023428520627338073830092013786 GT 1 -7300464.1917263685619642989824409054440155 0.0042003334526461854051103894148953 0.0984524918088344421975112109801789 1.1036425386799838057428633014823605 GT 1 -2209911301.8010776712149947146534874864652996 0.2429779375711012419836247169471257 0.0871763440215733211549941875568609 1.0912125649304371381828592640576107 GT 1 -220034844457950.9617202820849946311675332823606259 1.3869570085554247756844872478622266 0.0460028049539173317479933738260362 1.0470945477414405751435290604279343 GT 1 -477774567.4298494976540796477810703425117553 0.1653081719584488495367118930787341 0.0592336613123162962971888240765596 1.0610604819339930985838443719495269 GT 1 -30630515.4439275501992228031946723857187290 1.7141065036625325455876991237365370 0.0364481400003639172860817546456708 1.0371289679787648968055206608527360 GT 1 -7625429270827459.0602131082973222023005208732931802 0.7248921904478527460403020984392252 0.0389468295154305503939786818708859 1.0397255432546044283795767408703294 GT 1 -146331053544131378437281531819109876336549.9268018931807747549074525825031271 0.0959635713172277273725663952596000 0.0498291248786933089775432419186448 1.0511134420132145793028439602761364 GT 1 -12306746796.8616500680268155291463452588799841 0.1001844255546405190088324641741386 0.0109093349784008655622631937677533 1.0109692781318552960163801978232916 GT 1 -12112769813603797144736551.1210393840179144993861697374346267 0.2635149764408112784081709621359209 0.0132604545307825858685711568556133 1.0133491594086919859821574418488862 GT 1 -16.6564778679338704986205500527571584 3.6138108398369151079890609711355985 0.0235196178674975842157836670582203 1.0238006188492861995484436595204599 GT 1 -461161380149228007.7149217129921740902812076704305819 0.6983919426032545306990434629959902 0.0885123255339834809617066346610289 1.0926772072082561082701476163437192 GT 1 -56470228889091295475870927020657153.3725183313265536781317512833966947 0.2878755734770299006869967010753777 0.0263949016744343426311731280828424 1.0267495007514892817448332905171781 GT 1 -242159732329380145620623.2117493967380054026122042645189889 0.2372162177646300266767140251539144 0.0118236648138552418956049277245506 1.0118941202503245562860869705026329 GT 1 -3997204731550271855301161095068169406.7116883427897521217625864009985989 0.7068400404614420815558473637209807 0.0959527182832891916979665830033830 1.1008736171737313367935494365953396 GT 1 -6835874033241.0089551186946855627981241849410311 0.2221472919850786276829738818151390 0.0281512497732446327943283677654134 1.0285550933922836909692602256686883 GT 1 -26.5377021294738758323739802520903193 1.4076351905070716596918332943134690 0.0450945062582450185988673377122675 1.0461429028309318229704672235580214 GT 1 -3041452419282752528287530537648924128.7495768302472360424307628969842217 0.5875113111146444614810363409230313 0.0357305551089094913888715023139064 1.0363845162780030768461256491733516 GT 1 -59519.9776535186312279994034304662925163 0.3897536849832544283689776046129136 0.0149757028275724013168681650158099 1.0150889709341485136494677059147873 GT 1 -16978231055961880659360711651097247540458772.5434084972585650891047332447779739 0.6511975936400579386580859678707302 0.0310713896768592422972182040548477 1.0315643433625309138284295442384383 GT 1 -14119205933113918962345382546099198284607386.7184379757072212923685055456818000 1.7726576259277240300230285693106536 0.0939690672149016425727839101963871 1.0986818313750798748951352472634437 GT 1 -253733899058564206925.8756766643180425792938394613408149 2.4399668425586474734881036463903880 0.0663929654272781264251963640051080 1.0686996631488014886714409816225261 GT 1 -4037188971787841640061401723.1243058529706913030161935331069297 0.1320617295361651644070999518185631 0.0439712612024536767448043694232216 1.0449673048788641704790782186096564 GT 1 -1546810481286.1834023900388961689936520447242691 1.9515899742789869147397074945039200 0.0350817746361005131688251291648688 1.0357119217893794282868974724587170 GT 1 -235702231092668861251477794548.7764262635610263241156681926697561 1.0297752454213450655710719015950973 0.0168394506835649824664762647802507 1.0169828463151992444390594820412797 GT 1 -53352131665697256660.7063300803173258386255438738400082 0.5690649488621038256621892587230157 0.0578477397724324605333457399747006 1.0595883824062009970284105461732580 GT 1 -1047189184025164697622.0762914220505809017358725393611979 0.3643439059889207229331442598933806 0.0637303376928887199041333256886373 1.0658517432421376221111681048052089 GT 1 -18204116407305.9861931718407729051356059263594267 0.0389725601437167014043166293987348 0.0644985169087237437865906108067069 1.0666725479231497196235827745045874 GT 1 -56265700178242977509.5683991405096552244452478421367607 1.2558441678057037778899439324488189 0.0795355547308152874530847531621126 1.0828769045094301297418370998218823 GT 1 -733679527161150157068814.8053214360093419313857175631894450 0.1243598725965313675331407501284156 0.0597431815210987286491423615793765 1.0616022298856892988488270932144885 GT 1 -3584946296234677525.1858583708518501471396935793515436 1.0064114924849820716332084866268027 0.0008723326835195986345593704895582 1.0008727133870911810742892421809723 GT 1 -8031397569119628.0161347415204295828250391537792581 0.0411497033741499585888916499905845 0.0706323681016127758408333332817974 1.0732508898170196449338472268219535 GT 1 -9924710775249865608941.1201235958572013484558294282805843 0.5587713307878328313872182503125854 0.0156594765265008950559120177990214 1.0157833813544391159493974400154975 GT 1 -872785694094903125290857409916108.3260105247200249826888197711913809 1.2312815676843416872533112725471349 0.0245053837743581973063244100704085 1.0248106379238043122255177050047636 GT 1 -12456661.4493390880063901254105620055098874 0.2244310846148134781107577703942827 0.0327253732396805486736490951688923 1.0332728251308310273869105310023076 GT 1 -229687114267238996633556441785582.0599102424787153380770331400688765 0.0090806860596351559025583138071292 0.0024966241068851318707347275349195 1.0024997458698455756390063756618478 GT 1 -90870011090618964547240117206468.8038641090257904217445532877746013 0.0177502716086616228482280631024092 0.0490056732053581918071026612693375 1.0502471819701642613970362139008463 GT 1 -1686501109676582109044677.5689880974275325008646809323672645 3.4597530138602315877162697888106270 0.0987176201924294706474221770922235 1.1039366633639279785355269813722393 LT 1 -30012483887872862822144161586580043691.1016389905974160826538071217290570 2.3880397928009324304397786452355872 0.0895066973484707378684283846174743 1.0981650234043798980197460977314038 GT 2 -257642311060599914491250524239.6704457726898190401629986233215738 1.1386193795055214676015425377214511 0.0576563600854194081484280464630963 1.0593852727176561285856137878923808 GT 1 -599311886317.8994461296490148595787834037739772 0.4149679068739162244932790307941298 0.0610338441920383863296715586576705 1.0629758432264543524538350353184636 GT 1 -39453.1693042663958708383158067665625611 1.0915925239391049952961464839527421 0.0645976233845924970927244573415292 1.0667784929458693707201457223822058 GT 1 -971510995254731971241034729073258.5427738462973905772328143764990699 5.5832302605547457047554176900191125 0.0609314165730179121309664755030843 1.0628667636476987856444380517075070 LT 1 -4488928326833044634362864776322421949276573.7013983681988314144184047775927227 0.0850374034305445834853498924929986 0.0750316319378574085429597168996674 1.0779957387440075546180032538479035 GT 1 -532054139826386.6673834396335041599295512292967201 0.9837249080107065555548929827420938 0.0461543796956489845042282786283984 1.0472534442090436735462102347105539 GT 1 -5559363479324.0150802918642087641675236124028092 0.1115590546944539446844229242757564 0.0483781376256097999744923166294496 1.0495875264851783649835983102916164 GT 1 -19291545143244450670961010724400928765155.2603339176897533213129620897686977 1.5262804522443370182753592594101333 0.0016712494473099662082690888281612 1.0016726475425953189299634038838278 GT 1 -7866883986835531397018954594829745487473.6164645136135473282649963937340012 3.8909957828480660876017965386693257 0.0248344838788708291242313035304598 1.0251480622676741820649226609328296 LT 1 -1858935847130136614642988743369.8364694859367885768748021806946814 3.5571657762014767270515530723974842 0.0469285773775250592553484761080201 1.0480654330968509634055276906221762 LT 1 -1960.4874043829816587178796608278987044 0.4026559033123146654604325444336839 0.0945835106573762530185161973325105 1.0993602319276260710342195475768302 GT 1 -2530909835.9918751675438118745074822794195910 0.6490113542238601984742264344324867 0.0496297622753611774087504794549270 1.0509036463895199881369636893765930 GT 1 -4942143030874162370922474906590.1684644486386325868281751936079629 1.1280867087555517355610252267322832 0.0426512744432605688248542406012350 1.0435875593835933762400311729707174 GT 1 -7378.3796242926784217652480026034335547 0.1417292848933723985964563345597028 0.0673326768933187663053615325040156 1.0697067085937442519051313169135213 GT 1 -6.6048948273427006427941447606671918 0.1601367049021248077187728264399004 0.0967369109674902111873437103303641 1.1017414180186843151287454223760819 GT 1 -4619756676420573428233091908722357401340.5877688668022649745372851968858375 0.5422758848762251592679170860909267 0.0810174109391161267812986777787908 1.0844881023327045363508344745445628 GT 1 -2597597264120066769284.1331217132363790813368855798628122 0.0495527235802574523699342509035982 0.0948493680297807760144113548376170 1.0996539049665161878463627490849411 GT 1 -18829179889605595154912441915402907016398.4684834686964510182377785982258866 0.6992289981443980207659244971244265 0.0778394098205322029184814754124595 1.0810358946927644298973168806618207 GT 1 -3095322852533804032.9832779958729917537704948875464691 0.4922028494696690907907126931158823 0.0792085611171167249185864621578551 1.0825217190950064833275784084781492 GT 1 -399325891714209691375249635892402759688.4255553599652993482055942384665559 1.3447480894509143709447135628041857 0.0818287685387836878061285844075425 1.0853713791093734064500339348671560 GT 1 -140083042162682301985934276.3580169164159967596454210076025467 0.5481914257433769765332096747212225 0.0660630256139750190784175283016618 1.0683463222742056513582912483100967 GT 1 -280482522672151521.0415838419860346620605786963353817 2.0968711083311763349976889998970211 0.0867148374916604048069714050683992 1.0907071114382176008023457533546898 GT 1 -61497695848963535273041967834191.2051057158663278233966677010322401 5.7070053612973806842020050613808035 0.0489846552572182812642919269366643 1.0502250811907042106792013900355915 LT 1 -37129760627183818679520.1280297607584646963656828825873050 0.4179262850887891068225554984696633 0.0765215885523403989854146132310571 1.0796078565000496259596529243217927 GT 1 -283374367242131083655065577977489.2692837796987053319573397701494594 0.5257152855546959147761665864831144 0.0526504088701382071701763935363036 1.0540870974973969911541383069778905 GT 1 -125878176.7370109014739967658783675965032867 0.7932540871472141178047807643162159 0.0815972127660568782121382767658813 1.0851192185412757705176701726966940 GT 1 -68703090522.6518926720134440743805656109780120 1.2827970075892543232021177959361388 0.0465626845648944809170778705083354 1.0476815976495551892279861001179881 GT 1 -47985609093709367419885774198.3272394282051134336722715437745779 0.9564658111899977787266737088694688 0.0527024052580347269495384366276171 1.0541419851707298469898368838851225 GT 1 -4266180388920700262750052831977072336360287.0834068048222977333166158575036090 0.0522857940016752438143778635887095 0.0899155636927036651569763906243833 1.0942178966248276536529673904279312 GT 1 -3796649712286.4644800196666025100574641851516011 0.0004919402250751770281049748611474 0.0216916145697150256609317426522358 1.0219303361251654260472178078379190 GT 1 -30607166664888192741488813712.2914071504006765273975690188718051 7.9891710287330972208804062420270069 0.0746662473787446950762139272455272 1.0776007929027011427850643656442031 LT 1 -81119995477143942072357312743.9148531145447790068566500698101687 0.0697279628573453613404129006016663 0.0842881623879631568417421365773024 1.0880535515609014169363298055843496 GT 1 -4100507176911773514.2901071854578467594580072955280090 0.9784943077850785462813776613002064 0.0968302404159556966327094617774493 1.1018447481243342450325963520778557 GT 1 -30677210263356546903218.9692499846203929330183176233700588 1.7980753519387833506584524206009448 0.0538383470705324548478953040512911 1.0553418440535398782472320639883532 GT 1 -30771765698369664641163926621847652.4638570126809395525358180859860372 0.3214414784724056526388489558884689 0.0257533427741383979102283071896530 1.0260907658948279615494959884225841 GT 1 -2282330757.9148167687364040171247907656157186 0.6079767585170199415515420517349321 0.0915602450174491402845023769837263 1.0960267059670889396718949819440351 GT 1 -33572815064817649353301143952945078.0239653719831472319190755103284276 0.0682701848812809036074445254830538 0.0161300155912734717031841192383423 1.0162615203257052563321285005271441 GT 1 -454.9702662308373767341354917354965561 1.0990603754590008323671090878807495 0.0632403715933737206406813623455160 1.0653285628379440211424995590961511 GT 1 -524243.6014371942152702175025876984910094 0.6109233583772692220210180223414606 0.0437006405416455803706231640088372 1.0446842774393140164545821764219441 GT 1 -2607403236237680046779457164278968.9345423186242373242730211986935335 0.6312682830099441812351527898665106 0.0038032779227700230422462582966256 1.0038105287747578114612738487938903 GT 1 -3294681041603553992654238545097.3689914219625822729578572673691991 0.4023974767184146533362461398805447 0.0286078401988921449303602242114178 1.0290250201334239997435618104421066 GT 1 -2001161.3905843495094781917234786126931960 2.9768054158865231254210066735703367 0.0786068753642763298947234752762398 1.0818684883751847663520449311764398 LT 1 -155944652500888361.1951623168669196510212852530357830 0.5131849972830121967749234423049292 0.0983899857867686332432976156978782 1.1035732091607219524496473228444010 GT 1 -1657646514458739.5169462791729630112599910917887905 0.8898460495069469033116357315068047 0.0622630780760100116820462963505860 1.0642858363461395683950219699329690 GT 1 -5737363248081355819275296292864.8831650485453128585245724162450203 2.0339599068832869032295319583490891 0.0853128937974117186353631490767617 1.0891732326227474962173952018812987 GT 1 -51673223345113510275267845795.0223987072776097663543191599388599 1.3029380035473933719895088894921674 0.0353803676993177785509309613494831 1.0360214187649527882124040542750802 GT 1 -2.2891919832578162416291030980980705 0.1728754509549979884089763536230445 0.0919637881382425515852486517052629 1.0964710202710466917504458498463804 GT 1 -195.7401409248581199310060767331484653 0.7256229853579086481047092209935177 0.0268937383579053610061350512505122 1.0272619924383899003885195990601539 GT 1 -827516699067635773376277601157005.4913538268514514641861495005195312 1.4637913866061794522906323256839665 0.0666141558025073043894077050300224 1.0689366114294074230226247943244377 GT 1 -39617838701352487.0831109678790126594771334854523173 2.1445885723343263680055375465434310 0.0143946059771970701013592390985874 1.0144992133862799610521014545669831 GT 1 -7742554153.2502153155869091767837939896294925 6.6268619892528465862523099421655729 0.0458710526386095953953991162397099 1.0469564517187626539365432215892196 LT 1 -21007870112772512965876095729520055093548283.1430713949158174919938624062834591 0.5631602970755554498372270596554160 0.0850876314436580473471280681705529 1.0889269903626248661796934641735683 GT 1 -15782236013041831741560722.1865296991429074386577749194075145 0.7386413924237610696355527216199072 0.0974780642190483038750330872682651 1.1025622834960150424773046540930030 GT 1 -49.8753819249947724928002821542413512 1.7602890324803226088707817100002211 0.0255986473280591710463054381675339 1.0259319938173481391444170994832318 GT 1 -2812700684242085396228662600981.4626833200964409751190358138378654 0.4551075319094438123956746434746248 0.0311954638919871830810411704233542 1.0316924045617997820419947844874000 GT 1 -6286186628983114109486142907.1371246269127143211521219968291042 1.2802269832519227035372323395440629 0.0741063408077279767521484267833485 1.0769958898156827197307385884653231 GT 1 -84036264.7980207392059687299483298122118206 2.1470688471792125834295612904796603 0.0291729655978948244804119129100692 1.0296069579668443997777141147542138 GT 1 -669161135170731947823320466882303912635.1584739926448960637671182959121300 2.5456060434679939172628804832909098 0.0042043286366139903743633217731861 1.0042131916770694414837718959649333 GT 1 -2949748383.5637020853899579479007681786858506 2.2392948774737423668490921408258161 0.0429414011334934135935866702399882 1.0438906575683450218806728532673245 GT 1 -22091377735310804526153787325841986510623789.4020969203465318415028990493360270 1.2570022653711406674415860075774586 0.0332595176115709508430412285281994 1.0338251934995627549734059868879969 GT 1 -23165658786630445404191420005268.8543779797964653064904868473998175 1.3738862061540185659274250084137176 0.0348586773388167345694301932440331 1.0354807400121066173118413158410472 GT 1 -5584187563.3969912110548895086881540525174129 0.5806875870349781334204191458147364 0.0826075508472792184232739728227637 1.0862199275563161218642587421032300 GT 1 -69467785322503295449529202497975486559.7723415103711692771750269292028075 0.1787647530592140529966786246491072 0.0065250074697860488029215698782460 1.0065463883888803741231998598204013 GT 1 -71882547704660773917741767.0670618816375636365601856943227818 0.2299713169972603017003482156038112 0.0758320901477895311968261286343944 1.0788615032303692183584141851975180 GT 1 -810046247125822130716.4364624935141528244039512924343118 0.1269061818173556900440453868693508 0.0082196530939030072018925615959112 1.0082536207051075123370042271746762 GT 1 -384108791296643886661.5814892492228219043550881135730728 1.7560475526739058435378006220802570 0.0614582187540174381442994483552590 1.0634279047712614941303761289766140 GT 1 -22882.1854088057119008236081258663121196 0.0491083410609359446663959119240355 0.0929988449879193392811665120744192 1.0976115554256054758243831859886079 GT 1 -143581760339896783954783837451377198936228.4024241124137780817882623619447933 0.7917457941147351780780738543887572 0.0117301212092321708660690435970209 1.0117994618639425717293487947111568 GT 1 -755693484899717666.5799409239135188294846094932159000 0.1494590247177711158001299945617177 0.0053874534607921608419507642365339 1.0054020181227000160890236923723708 GT 1 -24497421178904283049262885715.5189017472441165983847339071400633 2.7803956174890291363230221744860329 0.0304575753320386619069037210276453 1.0309310459293934776291343906286655 GT 1 -238191312264323.4436832019628499002224554949679620 1.7332446138831498310889884687847863 0.0945201718793720789316218057153543 1.0992902789685094174666350147261392 GT 1 -2538421646528499723842454284188136.4223296476253725104500348875534423 0.4730228574798978752523659283417992 0.0705334607022438692636598253393432 1.0731444710724162960729535864294273 GT 1 -1471.7143608485597398684229454774802516 2.0611116177056455768963619814130344 0.0073293916227378729669132558649974 1.0073563835841605991602910519552060 GT 1 -1115509123.4295411764861161643108910343368541 0.1486170862224950108732722733290556 0.0608045427761387298166874385180445 1.0627316667770498804194031540445822 GT 1 -2362328645743511672.5346080783768389373181766564853410 5.2000259300352733681210212359711731 0.0554959227469730862551802140066370 1.0570952752123816820322684252365538 LT 1 -83884534193898324.3752701920788039207607471408185606 0.5466311462132050667784415145154795 0.0955823949475693233605677277426726 1.1004640727655371046899581611237273 GT 1 -4135388174955.2341144694016108034331770054596500 2.3488896046118561882096994370553873 0.0918516022905409738922976460226002 1.1009888985980133229500112533633330 GT 2 -428257663179219857764500889.6099808951745554079268509573830702 0.0145184925011618220749049539136654 0.0566587088485175339457175173786236 1.0583271411989169582637996802043718 GT 1 -4540716031615566136.8598586401428877475358456344083526 1.8835061313041574688834221929301994 0.0253819975970151692529699071887502 1.0257096771621828611600357880470634 GT 1 -90017782997719420605317101547304337101981.5158995352969215503984320270495483 0.2385193564389297384057457361775276 0.0916435292205003696897360397676737 1.0961183884595210608585988996987920 GT 1 -67655907694532370166255623300648632.7009590273845189236292040101327655 1.9499388334684520371673657870191870 0.0095458581736616327716733513139451 1.0095917119200234757985328684622389 GT 1 -12223215.0973176373861608949966764868381561 1.2932990429728912453421778419845032 0.0410108066528285677188096147364892 1.0418754728304165770151469250302113 GT 1 -24825012453346241370096655735618565422.0671280533349211930552184542549652 0.4375227401111069325198456663310890 0.0986895417432675047307095867266976 1.1039055099624816612248391293396974 GT 1 -61426828870587888736006.9676571993400506799885420153326365 1.3256085666013923191031382738330333 0.0064777734620357581398267479218622 1.0064988452848378444445588344013926 GT 1 -95845205073618535166996883888677661910.0618101961506281532816749515618851 0.2692294373657271476840486649475642 0.0645541684099847459041212658704398 1.0667320381085127372533365075163948 GT 1 -153600768566875584002744232950291867.6534860900490942001431296594853066 0.2871511662701361370850146593148560 0.0447199203559785557480703539246871 1.0457507043845745197391843844143783 GT 1 -383910242854406964973761562194313736504.3960647469699705765520401883334060 1.9249868966799221808882519569236725 0.0798778437873083517494798436741924 1.0832488392612786724388246554869303 GT 1 -2862513109586438825533862392.7031199551789441672537944003950663 1.8530666019771165372145908339176916 0.0410446477019728067280393335369719 1.0419107617017497851512402909297286 GT 1 -38760964714250621893459.1939776475155027874558099108037562 2.3922702669157997823105522646186257 0.0889620195130500626607704413909266 1.0975110804938767566219935773662468 GT 2 -1636282370835334585095356655179336521.4003063234902055090924128455798331 2.4518623795982474114814684604754584 0.0610572040311689839570433295617583 1.0630007217905718518352696109734503 GT 1 -1521909117556993231.8381793595001105368042120181470196 2.2708213298957486037585350020889121 0.0688418167328513313843845982933530 1.0713261092985595824767212356257604 GT 1 -8588085.0587719292471741757050513362837670 4.4123234387872047705641666199253832 0.0779285338489564961178626297927559 1.0811325463350431178551512957852016 LT 1 -3931119568429372233766082170680990383.5448878549262038221230627158755674 0.1957539486675439371541299330279684 0.0356191454281574309524861541123305 1.0362689850374178819059207320845015 GT 1 -2104144445892035496242196416658075.6555205754552550352585873146291053 0.2643924950628618154556116272968165 0.0122177914933683201886543229597281 1.0122930422681956901850528826659033 GT 1 -34570888884926888412110281866165953023.7108375837411145508617778183074697 0.2539120406813422205127047993957557 0.0903205799423166487770920267717432 1.0946630271893060001850812972630676 GT 1 -1425.4517294855620424218680552205841660 0.5613858980040330647847162698694657 0.0367624425508183831725711532994071 1.0374552128194266976237066658490073 GT 1 -17401738455286.6406894661711093669594977980694974 1.1428299840064630196740319798927152 0.0828044332788157435614299272129726 1.0864345615020181682496169816330664 GT 1 -351684.2992150471936649433498252575484033 0.4174399767715756458328436774580210 0.0643862341985941979414883772822776 1.0665525310398168822282035253245779 GT 1 -2.1960176399492989797494769372744488 0.9951379586628491581246791744234486 0.0979625620939413285894416716162799 1.1030992543417508624727380021848822 GT 1 -11756429511764276978721844544629596382.2376610451658310785717252965003370 0.0304551927505375821837026391129733 0.0516080170761669863441587154095982 1.0529873780912371331739854541969655 GT 1 -367648502151304786551840802632.6474654686881588915735629042324782 0.1433054699921773957603727214139109 0.0617635947405687625101096688322308 1.0637533305370148043040612142389752 GT 1 -5.0554782313665060599633323501652683 0.4737483198856780364107313642541248 0.0852936082276934354461976094419500 1.0891521485096353129764664135267711 GT 1 -753571374945527120403.2821813272484002393742563241874923 0.6824261487174039085016614297690799 0.0614767248304799817279760250102230 1.0634476228693635204092861789932725 GT 1 -1.8207659329193739703807302940468301 0.0187263717777557193354428746854519 0.0417208098905953237412237006201914 1.0426161132919701522001741885633729 GT 1 -23069949947981562185989273234531550365079176.3189223354593868065767681080173584 0.5221581121085137209072074439391238 0.0034193106441310370163320903921880 1.0034251698468738382549696527883745 GT 1 -2666632348717059017371063776594226827049.1029708796785247771209332687427120 0.1753360933662227948309417246138594 0.0947324910667607547582701990219319 1.0995247889788426810956215245352489 GT 1 -880631468857633900270.9626591675357883433844989477274896 1.1137088507149560281234468221003168 0.0799006107555890481513802202184151 1.0832735829866611538016129110693067 GT 1 -679254423977931930539.8904664647069569102024306341935691 0.5910616958216568895294916498573768 0.0751123107671441524960948750157657 1.0780829658869192825413107015507400 GT 1 -223683921525812863.7799836738267869906745542450141902 0.5732145964968749101420834760081843 0.0712429252799170457083860670654656 1.0739080655147577660327068216869508 GT 1 -945709481638426572791175418637.1553556703823368842764460938072125 0.9841993866786799947092564294230586 0.0049711798941599115537256925950512 1.0049835773125272300270688721533265 GT 1 -14787970.7605535172834460217558163631996197 1.4041721501821041910415203395531526 0.0518830182219382794443231283416104 1.0532773858400187712387650430891294 GT 1 -51927656031393407548658571171971.6990929793320535389088313362148127 0.0788916625674403757395520802214671 0.0337760556065800303135531010309370 1.0343596451430048606379469951161469 GT 1 -190172235879448974944.6300292635670082771512081158808027 0.2973200480002959412964040234399914 0.0707266979239454892285284347620396 1.0733523939006642389316757959093881 GT 1 -212534153668320501885133.4448519174694342460389350961964215 2.1585259630730225102025541811766112 0.0662089540202647380727235599565202 1.0685025852900146481762581338727395 GT 1 -1552.6793363046655801987140446744939529 0.4077198779071514590279483137400827 0.0903470151209663039910497810126519 1.0946920874958006070392595887798989 GT 1 -235560971903969330153155912480154.0439516397980400001156049053507464 0.7664534549028768313428702142598468 0.0949589542382489020932964297026210 1.0997749818778179826116176401484795 GT 1 -34190171921607196.2906231459560460063013604623337224 4.9789166369806702995334343654314136 0.0422149716997488349758302523847726 1.0431319225381968004688417877727282 LT 1 -156597754678705231043953446111.0674475334899096549770887678925696 0.6950566959946816734419664279150883 0.0387532424691549044676333768234534 1.0395241313478475689491406411757316 GT 1 -118232487762223570339673512.2695302000048481877559315034964890 0.7721437736152787207287296730116640 0.0553538242546161204833677193776600 1.0569448388006675603460366175652168 GT 1 -2246725.4708690945982459306861695125389515 1.1201251052305220520790347326261151 0.0521831858222973131140679007016182 1.0535940293889731735424183196862871 GT 1 -78611420162.7146828032648708704691322621185854 0.2712031597867890403937392072414949 0.0344271624071408324232358839748031 1.0350337396764337472940194570259993 GT 1 -194748879167234327981325.9673787598505656400859068600783813 0.1838313479361158186777192452891184 0.0142675116846818287949617973170722 1.0143702712157570772464815103987158 GT 1 -800326871075772720515895723799.0475489855617800771431363866261388 0.9903081551451660463086597988649704 0.0021418376565790966817134099751868 1.0021441346713272089881481341642322 GT 1 -45212082376002849658250028.1903922389011468250859609891696331 1.6393567525844949305506313448838693 0.0587525981050913542010533651829535 1.0605492601428566646352568427840329 GT 1 -458938759153008479555341.9554264838617019191234091746001900 0.0212722253204311796831967367216201 0.0137714310322753491787980113416874 1.0138671368754116646233429484215637 GT 1 -196159482697414237139225907490473465529.9997410444024764365855222539763347 0.6603190847375799257168026570840661 0.0260784266894242452274731903458883 1.0264244987965431186470275472515660 GT 1 -5406053533262006981576928501886993118.1148391501811155606732091870006779 0.0639261250627494839635324018331249 0.0575563298860865743655285514857462 1.0592791279034433893908900348455730 GT 1 -882795632099979.6510406146241709304444680516682246 1.1453920564399071592172192579050621 0.0193888868814822528072987192304091 1.0195793168509251853809760851537307 GT 1 -370563141942970.6677831128171981379842883208588370 1.4662328578691910078278768873742281 0.0427570580027334436603103200929190 1.0436980618592629385452443539681137 GT 1 -1195.4414137988721021957808434227746089 2.8790917972269577225385200170314157 0.0817494065602658579960937788800634 1.0852849480100571964204851619355838 LT 1 -85780898367822582177563174023788070340.9266759632422248004951111617959186 0.8091416381661038523040941666688302 0.0236806757517989766672534903110785 1.0239655695957865431452397072376588 GT 1 -281602006550.3054558027405080350832938997735027 0.0299748306722519634123892069991279 0.0346110223197722699488927054466788 1.0352241731813667009543571664146530 GT 1 -122856508951018653208.0583953947988196205294110221566230 0.1160485645105810445551017118138974 0.0902445783946036448130112990452848 1.0945794830622871520019774760740233 GT 1 -4179300933299.1209231341627136984132958276977128 1.1125292353043576070875499695039411 0.0934055792155733413256408949429682 1.0980600944934122731532773247861225 GT 1 -13019847734759242395582754766395044550151.7827955008504624623126835093132741 1.0053188322394386125487513250945443 0.0800524008484214902105799570548925 1.0834385680051242661515811862414598 GT 1 -3318549.3597269432309039677800656693079580 1.8041359757785000607772130349425847 0.0030839112674709119305363681168551 1.0030886763210137567092580037665262 GT 1 -2884060135430120346017419195514018145320.4493431457248191231766782667833564 2.1208563909004421655360831865699758 0.0902656743934268092067921340501832 1.0946026719797915626972843041658158 GT 1 -8142952287577646034727822.7179162045318346630293438660164259 0.4394681466684705736804612726197002 0.0248107224447920351920387952527364 1.0251236959993859592329913382661141 GT 1 -1376758118611372678206413650525259601518.1331058163401874983860677408376381 0.7222645849806715352517043689112238 0.0793665810573891173415450096754974 1.0826933469949870271223423808700285 GT 1 -36580217118530975.1776239105437328600305424799156176 0.3237999457097386349521861021991042 0.0528589849421637563382660293243398 1.0543072897455792047121013131924755 GT 1 -3521487553672159.6456049579475441179770033558123327 0.2900256584145791861184881055050103 0.0273946031898824250007398416639792 1.0277768321792780882313227425974368 GT 1 -44629177384.6795453399871345417600629841271000 1.5579946023749957379490949881369855 0.0375636884800613942254320659334113 1.0382873848589332629884834391497881 GT 1 -5205480286930535208646729539254.7133748489263808104507566820736605 1.5685885978496677159138916485120468 0.0069262658236626283466189630620335 1.0069503637396373608300086817724600 GT 1 -248227652154109798103808336623062.7691504330624969503441889209012822 2.0922913699859061163257978572280013 0.0050255991075798545697478198452892 1.0050382699008198354563144297249088 GT 1 -890543990173209379641861649198407036934659.2622783755140444075672859824221318 1.9015766470659728192492141913516996 0.0010846461112494458690816018413351 1.0010852347655356543825247532309674 GT 1 -178150147958920445902896305.5490518287739644006404656094467040 1.1794973116910867372701832336949247 0.0887609090022103645341956212799308 1.0929499672011174695233017378901211 GT 1 -1.5212316159752064877264764990960112 1.3059015873616877971700399153312367 0.0322226541877862399242786733018528 1.0327532328197923168362906097455844 GT 1 -65113275673976182454.1187300994555973681048737968868431 0.7117576830321936546976439093209912 0.0183894382789075033408075386841328 1.0185606259437560397038096461404361 GT 1 -1732633.8370565760083291514393800284248602 2.8177613862680565765658383057228742 0.0733881152850668993733907829021065 1.0762204799271563364557599113525974 LT 1 -50800.4002064079660047663328849466033436 0.0931796706290041218969553628204309 0.0687895088344136176731602686362969 1.0712699357823599492487225414665444 GT 1 -8.6407402362280100608976151059654723 1.5474858339091044315743248584735500 0.0209892603239535497041433454029271 1.0212126664647630277714667372404981 GT 1 -116843.2985791439787550189180064749227824 0.4026437414434049195524912031547593 0.0734802016696794243969226510363850 1.0763198645370368349910907038786697 GT 1 -4575189381698194743742688557164.7962822612003879719752824170505471 0.2627753363639766784157457926878469 0.0146379629037196490061958691127304 1.0147461549885783478074894604734848 GT 1 -31028685477715354.5360712490163991637854019667076821 0.1590841483926020758983575336790839 0.0081134978295126460780094310677235 1.0081465913775355827075058464612859 GT 1 -98383562.7255811705196909237327253665339075 1.2521635516520307207107353374669096 0.0802440224696058687537005857966563 1.0836468859366716453822187974999923 GT 1 -712997458392966455091685415448113.4917939134697132879276222345460444 1.5912947644790670559552810205609880 0.0680628984908291088855765665673384 1.0704899542250440523382094860226650 GT 1 -12363600494721430296203008120665751499908252.4159804091069298968936774646534619 2.6536601821924723677282865396464136 0.0554921749993931378065836709609019 1.0570913072674730425276776430354405 GT 1 -598966418637.0281648938547786189827137305203538 1.3883867941441891859629253343361702 0.0641562926778233834216312758559498 1.0663067958037987987072251094288845 GT 1 -43102.1179725885840374308688905640758780 0.2137925282753821814712371609975718 0.0120812690394259292108414903253634 1.0121548407302680907792543584937485 GT 1 -61422616131368972758020928.1980134371252284140752877524420956 0.7288771390929351115122100097550730 0.0964642748458592765505247919779477 1.1014396288858163069082104964044771 GT 1 -2969040224806642928578702.0676284066907160710262337223209169 0.8941773291073026997364905820639714 0.0200781346664856771881265223671554 1.0202824397475811690262080041920886 GT 1 -13283786194587194937308443.1903815576759606288375999537641985 2.3890418689604730651357706102688677 0.0128710748825379717223568298773002 1.0129546248598122384937126365912088 GT 1 -37.7291284559824997021061594812476295 0.7990930503292448103401895562557183 0.0154722844058002626424850142110955 1.0155932293497998318268964962262222 GT 1 -154005597509522389185.7208414315713431517825431548236116 0.6745821534839091900249291032138896 0.0655080551248495805486334371990215 1.0677522718399344280847846024043210 GT 1 -1140574587.0807923361957170395343608522086146 1.7438246895781599554400588158989423 0.0308245639746961716423349238908113 1.0313096349489526631141296253355053 GT 1 -458802968714315436452342814004476.6962337387171780817830360523780732 0.3436931504118226133422012379987591 0.0972432640942063977256472919229411 1.1023021573117882999064240807980671 GT 1 -188176182887177452516582533.8190926693359472272921840030744667 0.2085099553322046114734234287177513 0.0506545921148242856038312596246589 1.0519825762190948530194391689232650 GT 1 -43949730137900475548020.2142913500297084790548368741266543 0.0394876792206138259067667705864832 0.0073305437103571750723425197558559 1.0073575441789018285717165811515833 GT 1 -39069936532336525681585756723378223388.3761764256143339081534892954721467 0.3719048088516946316611648098760262 0.0304921545928118956515909015161480 1.0309667121122774925135814186017789 GT 1 -12039964443689531355615921443.7953829090917553877852732839910668 2.2959789876593090608132004120077317 0.0862028057663246386112526291047502 1.0901466202957675367909168869720449 GT 1 -7735583193.9194746619967584291198974024929950 1.7917377636617859346140356401907875 0.0064921985408391126272675272217757 1.0065133645206826575238744950669885 GT 1 -14460086004380057901569.5556907232680058648357440607883387 0.9396649975473029718390377416661879 0.0331711183354132858796682390528890 1.0337337571354346455335775970285293 GT 1 -6459237880237283308977327283.0842922688210738241248135861221029 2.3799140381129959137881563425803924 0.0922192108106098733881700292058047 1.1014328598494551337948703370447128 GT 2 -6540671258346932496131924709702719452398246.2554959987009905297750010495288658 0.0277902875592929019514712686503032 0.0955197682577914767186270589843043 1.1003948298392324955505831486930102 GT 1 -41252213239299960629870482.9012886814723320544575847544458356 1.4296690928358182843584949844820636 0.0127562877698728294947524933341997 1.0128383478099553485979457270957932 GT 1 -149740964.3361111201891687861008213046287229 0.5116095849424723813842429176469573 0.0733339474801965729870162266498698 1.0761620237141971786236894658220022 GT 1 -3541024202926418778226813155461299913466.5906425322447390995542325989365278 0.6991710874708248835707715622103875 0.0606326891953446078480517587532297 1.0625487039458915884518484798383455 GT 1 -646279334242147642764860400765543.8762254514120487423175140662541845 0.5062551678770897711723486512281627 0.0706991714878056799736240115520372 1.0733227728748587095701750352253399 GT 1 -32404374878908928530087.4891136775923436127357766854995271 1.1747461584570690326211449284978599 0.0586985974515434215071693618394955 1.0604918904179015544816456278217860 GT 1 -92844325735.8648037928674917422302108259474550 0.9886163546924568570922773378947199 0.0904695476195186721080027904741990 1.0948267990331068804347128178632331 GT 1 -2067.0485921442065037935293494446008667 0.3844377467288579414980166551771336 0.0230104058763096975381963355726161 1.0232792778418372009760209966658557 GT 1 -6235975808631889572922069523908106488.0854184619740566527353546461521821 0.2367318917356208019757624417497964 0.0893875759253419331419758635755007 1.0936379123411710946993250639082691 GT 1 -71894.4131554729458428423013033980895643 0.6871830896439603443944025910776093 0.0475179222302713976335813250237108 1.0486839881480902230587577419943880 GT 1 -55001298746116370279161374806140940957.9707513898206352685391265002785314 2.3631620389397631883135597830966244 0.0436987528887791230727741042600074 1.0446823035270816622158150934227022 GT 1 -303252941574865218103012067.6945696114689151679889247484701891 0.4137608080134410530997200413019357 0.0663122344346526514457682833192247 1.0686131947532703638095991300808159 GT 1 -56265556932325585793629184670232462471075.4202170686667241535874104995609346 1.7753006223430462689023195413870803 0.0609218295623710553408835909662039 1.0628565546364729981731586158140597 GT 1 -825025995.4664759844491507131184370047021516 0.4730853295971213933291945213397720 0.0058729848952654655281415148588287 1.0058902986934536527711796369315052 GT 1 -562667.0339749134050208984322485249765612 0.3974230648468661873962936753681129 0.0741803649039573547320461687334591 1.0770758418217488213165428373095601 GT 1 -2827327572523094762.5352240064804337359339622416646179 1.2409521621228509117055099398492381 0.0621458647460806280010087909085258 1.0641608481941291400444912708749771 GT 1 -295110090.0971612973059738785509101282908369 0.7112368709020423567224806076480289 0.0998807996010077294957283046871756 1.1052280795401069029141524908749034 GT 1 -21420386800937768044012685193552799450780028.3265002644560933100373216575574920 0.5091720499307508177226326181469100 0.0408867849900730565236426295501404 1.0417461557904212284470911925346311 GT 1 -34833277368.1461189292103496421995083950201689 0.7547806754095792144549622357125577 0.0506891701894690381565513818248196 1.0520189999528514606892958825243444 GT 1 -3981352801929088709428201932191224094138.2017309531774089182897739156071939 0.1032277887830457647775007730042117 0.0935138532988882811584367880816661 1.0981795310870037106436023115989299 GT 1 -184043541704622022780545626545.6555013514375958133895821451890543 0.1911840592310316041194533742231483 0.0971224590004844018053271479376838 1.1021683482725521877421694633335084 GT 1 -4062407910750599325203168328833424072394.4236895517124520910273369900216747 0.7661600443781014722972336478986789 0.0974977450996712017350269473267996 1.1025840902737028800093392390085904 GT 1 -2928159943120203994720974533109896.5380607487978368369579241242601618 0.1569096415517749266645035322381561 0.0264715556254025723494730400644349 1.0268282359274048796241709035453803 GT 1 -35236491617065614.6152890729953811740897945474920219 0.6529049440548815525547839513125944 0.0822959352378053697052634997431426 1.0858803098739695827734761006444913 GT 1 -68793195129513036291732648421040120241347.2973731745391130852174957267170139 0.4267815919427882779440064814257600 0.0363373996751604663119903914660012 1.0370140452987984055010523325139681 GT 1 -703672333045047275815224968.3730458815605788597151112262786919 0.3988942333559040086890983685907274 0.0331792476428372807675997604734766 1.0337421653881822074994634100528862 GT 1 -58366175173959501082.0179425799426408125594011976544346 2.3696073099613177886419988574575433 0.0928305276264459461778862067924253 1.1021719093982266048174949196456183 GT 2 -1626921.2551538471596376876644664218460924 0.3475654853869061056275009039053951 0.0011896769236770998398694852171853 1.0011903851510320149140586365389777 GT 1 -54986935185358838138521.1261747913716543315602563396422034 0.3163261426853916875741010525188998 0.0442242183591753606699090972863355 1.0452319314716915994141016683723360 GT 1 -410311845966692472403514.6936835517573503036928648357143019 3.9020015405928705824174562306777485 0.0998957442131268786876791245409800 1.1052446826035412119594957291092721 LT 1 -10627017478831981541.0350896818464584225419419456950479 0.7447838695640747366033998831138050 0.0939631299407314410178988342479080 1.0986752783375380089892606466435300 GT 1 -2732013532850719015882.1793924104704199575818923362137860 3.7446774478788192102953917165177508 0.0156137450450852665796491785917278 1.0157369234285095868867493698322465 GT 1 -96904277721062824.9197279856298702784494209225637306 0.3784128407196213010244003328053268 0.0062643168136761290885537688702790 1.0062840199739045885148611496780433 GT 1 -1011868954114012263706734351.5513741299704389424361319927555361 1.5797575880672373967730234586972604 0.0128768023522134373037478987061675 1.0129604270262219262626181780230285 GT 1 -736896860325778707765606565564584201.4476653281575051658338320905206719 0.1358333924287438294333607407407326 0.0493488873732913240818959828385428 1.0506081474420076245901828198525156 GT 1 -555490450502232387520843327584.1800485411834838602338526773311319 1.4875031847288218198502636827588535 0.0354557443360141567042296776717639 1.0360995631229360392347224609279567 GT 1 -142639108627872670633328158474638.4545712430070539755885289755880065 3.0075137828266959274739079429944153 0.0703508850720950522121034923690430 1.0729480598052412021452796374886732 LT 1 -19034717517182652623436155.2468383840710552641722376846534686 1.9886290247720133401140239095943980 0.0332832542537089678157466972154025 1.0338497470731239442648263809371885 GT 1 -45881561776374775230545060458622.7731690444919211841241629036120077 0.0810003400681971768048156598122089 0.0994562795032117448956650225056049 1.1047565641879165243035974432349365 GT 1 -577617909768747555629088428767517649.6007361832902218988606724388927702 1.8193112879986624018368445195471568 0.0390080390256359699398510871730060 1.0397892353180469247392831812663405 GT 1 -34561004265115344786354339981117.4472603145994456222514033256374580 5.1229282719823997524826625171201029 0.0684824771943984335591981851020587 1.0709402777319168705708838895321115 LT 1 -224399144535.5627965214653329453395699069632764 5.1385501349719616149366751706539020 0.0214017578772024305624806431270967 1.0216340964471437913281088513689211 LT 1 -239545939457825173632243289120.4839710422263490569828242878168236 1.5948867821383107486885520029103752 0.0827359477231131944658455671591855 1.0863598958565876398387277750742418 GT 1 -334421364112376872933729933962927337.2976909569850390384246791979846988 2.1130992561261186530847951742273968 0.0728694863125939891788973069884693 1.0756609318621700355408315497944875 GT 1 -10.0005108861429348809910617369817624 1.3975037150660922876674287028264726 0.0099635751790713698198043105862421 1.0100135437819252495739242355851181 GT 1 -3136026.5799944119970244347496047761755370 0.4910622068240866181256693006878160 0.0988079093661315113765141559023970 1.1040368469451749803269390220690676 GT 1 -1189911614008300780297109.4272697981896962726668597960803551 2.7016804599054942212387595459313202 0.0108819919140074771215793073213090 1.0109416338648304465055253102891940 GT 1 -1296958896437417.5907390587622617694852288778005649 0.8342187378127121556097699234612664 0.0141484286409115577480155656029153 1.0142494718581737677374966441283020 GT 1 -997382319892497.6956386158511416357635054592862428 0.8089053385737881543304024946733194 0.0033892242635087941296493251340000 1.0033949806942997439524930283703425 GT 1 -400661572149975638139226663390.6270871672568549048772088767302570 0.1461253359142512060380672670990295 0.0332758611970248299160449502498924 1.0338420995088841951508052674975591 GT 1 -532751888180193819.9334106970538252758791928578233665 1.2326125625014617693679602688421277 0.0952518007935793347476177241013990 1.1000986069172534207805973629073656 GT 1 -155378402688151953860.5373771855798185568503332357105471 0.1723607328905018774917322413101790 0.0875946180599506295419344719614184 1.0916708899263798560773405926776610 GT 1 -1493160982108095541392642331684643099.8042209331924869815724902539917919 0.6577363619044252567593156962869881 0.0736621130013782390644807648251924 1.0765162221242640538945199999711529 GT 1 -6105972447948.4588472758006048986731852286821837 0.0039079168322206343634612977306538 0.0359155732448629963966177260442449 1.0365764085849511725262579303001903 GT 1 -70450705.4137041260426106201096422306576133 1.4329578379180962661753406019929614 0.0449928787055774948489820759061419 1.0460364816764105585077865128094427 GT 1 -522602832007162131233157742914931797626511.4552686057101378034074132994937629 0.4505883188608977902974452174423775 0.0549431593914330753909782498905338 1.0565102045051260503058437549710671 GT 1 -6269550238428.1444513803052791140282098324485422 0.8046316917949642246997593809021150 0.0054352034548140215428559767898105 1.0054500279134781393601089665077217 GT 1 -2491634172569397908878014.3291396982606711470101226580171822 0.2579197119999658977135217161032148 0.0155219087268267407047974517641852 1.0156436348091071718756924026425452 GT 1 -5881686141884652.6171917298189963138537926517297313 2.2447471130865202489847281001288173 0.0285608744991886175573094849033671 1.0289766724461410277205000675986498 GT 1 -782009983.4188028069875212742019458550223203 1.8438739145523095586092393607194812 0.0741519641831068462066890154351087 1.0770451659922802071140935050863339 GT 1 -841991513045724.0788542612231609879828341722009633 0.6838414231179623849113842751878676 0.0914661295661808524110817625706094 1.0959231101305441003129261396754741 GT 1 -9410988825513621436599156162770136.3652916680392224906068731664649710 1.2016430459347244076761207456928675 0.0561045723340558859791122604887302 1.0577398947503275470981609061441090 GT 1 -17.4558540058212272398096336884840301 1.3355574926245769504981131066824153 0.0166315144700323297805655911746705 1.0167713709587483448346948519340730 GT 1 -129622490529022626225413888.0933744861129170500272154564231714 0.4476641482994882359736709224759945 0.0601166190119248430473891530602861 1.0619994741931540105526071156189542 GT 1 -41604209012063973.3763268079721279502941726121600048 0.4335916578988368812255323171065926 0.0433875375000853382782563064319332 1.0443569199095395366093684547102505 GT 1 -556328512048513079738623610941.8426533506803222213600376669850268 0.0293912953321234380423103891367080 0.0825226588150234029402666108890230 1.0861273956145255676859210937735924 GT 1 -843602894349541896967890.9809513535253924791023360902476926 4.0011858089013086238174668935608471 0.0295859892211647835963666225224503 1.0300324833085092279524802535415603 LT 1 -25574846747544.2295507677355763809483815453564459 0.6630665267903996833142511659073803 0.0326887967830682899875321725669166 1.0332350119141209194727324917777239 GT 1 -774833329.6599338494177424916242464390957537 2.5435789978908664572804841848508253 0.0247185199580774046969576547488707 1.0250291521704931863576428029592986 GT 1 -652365482422047422619.1898690864599813576405532898780776 1.0699297534937252292848712612258298 0.0932861324687032176751541070523001 1.0979283499381013427160373470903018 GT 1 -1360796461.6326577875779065510521319727272446 0.5836998820487622582836771461796796 0.0862224531538771965394420345609694 1.0901681213453407065742660209956530 GT 1 -1278744678576387.8317928077179343671883144621572047 7.6325657014439680347574893615298282 0.0745794630676993823600900367861501 1.0775070102632672997730487704480021 LT 1 -98973660.1277317537705623881569947646696313 1.5824268835565805469775787557018720 0.0363131452655213987391730746173796 1.0369888766304215527447681000762462 GT 1 -47684462678810606448418.8854554844464544705780578564791025 0.0995046550500223278606124223427921 0.0584289230906677650557737390382280 1.0602054404690475637167570132614357 GT 1 -20258845049077914731576600364218556516151.9881655528701782744027341410611049 1.4021913570813235158025076609632906 0.0455337240354433204299154684550255 1.0466029680648625937954315674753017 GT 1 -16624391717073271783898847089334803102.9891531118166275484526485717414643 0.3777147726823031050622285287422691 0.0893130095544370985230829582575552 1.0935560297354314559228789811073729 GT 1 -15731088614970303684725959721122567172.5227953214497047120805268954955955 0.8029239865959481156399451230456217 0.0094511847436281575618294034130082 1.0094961306087820521515704418861394 GT 1 -34645489138.2884917737902214040267543241301704 0.6615401892987117412961559971022642 0.0444042349286312278474731928695408 1.0454202952362331210233285596074137 GT 1 -1282069928356748984.9341275084436471324439943279931907 0.7676725351340537225663734613751531 0.0757792714938438379939141001286481 1.0788043522039411612680871125970184 GT 1 -46240723364901288429.1128748764645080281762507664999389 0.7389963062288629328294976696536548 0.0757682612127828357041076134334862 1.0787924392321380458898038904877938 GT 1 -9534060722380475.4183794119347549706093095698247077 1.3351819290537358647144803177649157 0.0623396946258827822614953295735450 1.0643675433560467728938979903697383 GT 1 -171793218.2582247807782203636566506638292552 0.3901309440859841977177274401926190 0.0576302374934651560780032192416142 1.0593575522250630716393665962412162 GT 1 -2612849776044262458702521545.6245505366011319582955337476259785 0.5379845567716281952199124502214244 0.0355632818828236940847196604284090 1.0362110598648765762409568731719130 GT 1 -196030395996849382605.2715600955638153655311877678109517 1.4216416050543098862247031592163128 0.0277487692177990470591114426255137 1.0281410400358438472916615045863088 GT 1 -29438531171159.5284483396916905995654876477946737 1.5309739642767230123095166712099492 0.0079005827560355765823476335690362 1.0079319577229204505159895194733358 GT 1 -13929640967761023564748922471405.2247385211167723410623946272393504 1.5354536366051339934656545943232052 0.0551207564730925695799260054036994 1.0566981442811566043719492432049205 GT 1 -1436831602212530483.0641701496239999465747058451034619 1.4409487802246378899136784531009121 0.0568467694552005012950654755096372 1.0585265169247863660820342699033425 GT 1 -851249223506136589774764589012979500.8695667594996775804687002075981773 1.8362967275788914932424297649227968 0.0170765729759401377262250221675186 1.0172240590979474504906964584011920 GT 1 -157229977778317301965.2116248238266599566427180278487996 0.3910437289666796626840885405474864 0.0217655260586099644655436096819771 1.0220058892760469086216182262389844 GT 1 -1996312683259932.9215864749582230499909799796403254 2.8060428026892090206783490350718053 0.0415510714822916491173657478294264 1.0424390006309747458087501325688744 GT 1 -3553367047268633925016559286.0382290940592112139343143156153410 0.3356107789372413573502290605959072 0.0455003480563970991162815623943434 1.0465680004642766624792640739378403 GT 1 -11653356639237428996364.7617355152283604104398429517776496 0.7325082474717899792281147695287252 0.0744783876851684234276195548674280 1.0773977951992821400774137434777655 GT 1 -519975497158163444824748907441429.0585043449657751953993668909890041 0.0033978694560104716666036152527509 0.0703407132968979658600755888505914 1.0729371183442245520521295680277631 GT 1 -2293.6261805690996711913221984617342637 0.4251641946830882210688446718471774 0.0803702746051314213846707536606490 1.0837841623496860929136323285154718 GT 1 -403454362977605989601377391005189.9713681884255088270940541601040575 1.6602901381658144888983504987927088 0.0914539392053395286857466137119411 1.0959096926020886899544254349579167 GT 1 -904306955231580211997080389029306033.1842447392830265993376691476456218 0.4115516176836304648719540870439294 0.0602447884632887960170671077247469 1.0621358508903258213222110196950081 GT 1 -39145.3612690012476882608995429316106556 0.7988864120137798213153882612983024 0.0177257182666234300198807001619914 1.0178847003264613187762572270379211 GT 1 -420201432422546287332892659914541309.0701255403294394053203433350153236 1.4686069915139542524846278470468694 0.0299377211158463798551573595871287 1.0303950045105536817946935408787296 GT 1 -9189443767438815.3138056846092162496209877081546128 3.0618607385817913621238331642040644 0.0660367624285822715960553322220719 1.0683182017298357184779546913068200 LT 1 -674808345.3503037349420033914172469887970808 1.5453982477415727790236539612480557 0.0222624638428774966781370234333880 1.0225140129019412471258558532696837 GT 1 -2521470930442774053456781874.3322561210725868498356284415325411 0.8601817895615576131371269481761670 0.0797566285595545722423023488921438 1.0831171097476492370981669646946582 GT 1 -22226609.7185228790037627764411823542662789 0.3629822510535587537314355490213480 0.0476279545683826022674458712706052 1.0487995165099667358495855026075551 GT 1 -37407144483747729456.0094457379894243321390578529567203 0.0583541183973314866349655450476244 0.0545132660762629883544456216902452 1.0560554217343180171393247188471386 GT 1 -745991997164923042012470194261.8638587689724790504027209126062209 1.3473077787023535201956161672527505 0.0419524475451809805817519919760691 1.0428578650251885226206881777932751 GT 1 -431808550151566040057494573365399877.4192271975107798510459534766066976 0.6605173039302634285713893856021321 0.0733961637564746043478955876724381 1.0762291658791658445708493378902207 GT 1 -3336052305594604843.0317026426550057230988607499964627 0.1372693459639648552663151831592843 0.0992246745445945029465078058620119 1.1044994137842565453025310645205906 GT 1 -906966378768540194710121.6931503404503322222437683936555026 1.1764006341099668210510016812761751 0.0163463286434428043803098127801778 1.0164814038858413964685728909787453 GT 1 -41157894273928149769594463020768.1033439226671617737104055068557526 1.3429356934153003324798133709827483 0.0616113876396732378643496163242309 1.0635911168823952638863299218977607 GT 1 -79833286996343606.6334667801622344566396888404539309 1.1296751375276802036491031930623658 0.0697809396788395899734358228748518 1.0723351718396519936693870469591958 GT 1 -113725733324748.0761974410399809553586998653321274 4.4152930801738206956997577814101912 0.0166097756276863311046419422724582 1.0167492646960558927812854181214655 LT 1 -602133088772150721067736060024839518064728.8079625700813669748438990750150964 1.0330271274663075940629579533907540 0.0055759807049975324148047101170489 1.0055915845168108951512385058184716 GT 1 -4190605301383723265914748801578679990528.1518865408852921885004250079237282 0.9248564610874034718554576171284171 0.0401725641322842520544364179665075 1.0410017649824591899302087027504045 GT 1 -3050053271679001.4249898331033311706295328557253591 1.1827840885583425978477451487623628 0.0215943510169378737372568202290124 1.0218309209309708172704440950195036 GT 1 -61028.3146700877583255019854620137096628 0.9077718650610426313175251361008924 0.0867640713682620641993488914682985 1.0907610214388766707594869018920463 GT 1 -18749390627042273.2762313002865864011813993105666509 0.0213962587099333976402879398701148 0.0375591183143089139802174838757833 1.0382826363318390458005003025206271 GT 1 -516923874389854659004558193252725562.3513246606919075318120763470077217 0.2806126999190730620480816528306485 0.0105973641222889279311051135058023 1.0106539160747225517864610766171821 GT 1 -624245160821510747765624157676453991.7037336054844103006220096954189860 0.1375733620840069503167432464801881 0.0346037301028777212094459505441277 1.0352166195532211230752261016295652 GT 1 -1870609293801062596408118391481642161967.6674039835690695040705542563536684 2.1531221470694694285991481563456949 0.0944211126134433532438679561862640 1.0991808852032169751485238075567832 GT 1 -1284565151708.8657737815077390187973667770204869 4.5594865178935203942270731603451420 0.0598804857019711509298516039846509 1.0617482689298137062542872047818670 LT 1 -608085709.6309094452962033533229154094794952 0.3227400647731472729075010678777194 0.0591986025917585373990189661221108 1.0610232164984849838134144564220864 GT 1 -151644.0666561745871559315364897756356802 0.4496966490189939721192936103107709 0.0027973019457090666423591919081190 1.0028012217063393573700659623380399 GT 1 -269062077493845650336349121607842418151084.2979600854779450925887664598363528 0.2790615399938973453602864188509833 0.0606634315820775632921767206316573 1.0625814311756330001984247295588122 GT 1 -2942249226394581194950869.4583149333117512388306075759801127 4.8474182808865274120901412132651277 0.0308075007107243661128086615528500 1.0312920291439232097482388027925271 LT 1 -87695025466755909018990903419461946144772.9015817087118801920588447627069088 0.0577283825639191364381839903065423 0.0354726545984443648410368440313584 1.0361170951444756241143287471407920 GT 1 -13353174935745090164713519601022.9095929618412892522160874833975446 5.3275051181490622198665833014392546 0.0006242822792569836373192613208580 1.0006244772245772423048981664498476 GT 1 -76686483685500552583.8445086234690174623416950990281369 1.7975507223364566873580453103503802 0.0619025689607237427685641970854546 1.0639014643261311980233223884679461 GT 1 -37472467010092859607219734151883422.1740029916409169423631566948576806 3.0224839062745058685192712208273672 0.0885031942466659227283594957465395 1.0926671892542727195812854108324871 LT 1 -5671740615449204.3367426676832634068508825444135096 0.1090141785058470241894936315129311 0.0428376877284486191258369671287644 1.0437822966111087765112570714929178 GT 1 -13622018901166035585473.0467958471745261573136094645151519 0.3343763491479966460990813992802464 0.0535839302882647779275317388277746 1.0550729866314572047067079678929690 GT 1 -3063118235064992180965007655.8604037859229179682713146006632184 2.6574971570276924087879810084319840 0.0084109460061815826727903990163408 1.0084465176135552628991080353132760 GT 1 -4100964987066303277834402854823611734037.5111368901622315320611343860410174 2.9149647922097216204107179853776268 0.0315258814903760561546642214856710 1.0320335197656505423092095243494956 GT 1 -4729534786029661023076.7296321783424809847796085227135433 0.1747731890784361033242317499286270 0.0743081561340601506094573091941318 1.0772138817224005437342267853098746 GT 1 -2525631.1511711613419357132777029219907976 0.1374434780492730414900662256663572 0.0861611080974858093409499309785004 1.0901009901299348875123780003452284 GT 1 -15524857.4203895728479401374713799048416069 0.1001236516933963781235413790043634 0.0172726898445759456272355917763382 1.0174236030612539343857299705753377 GT 1 -4279993490337770152490177941255267.5716133189917549245897003755329059 0.0657622758220195567901497681891650 0.0730941253534484176273006138551384 1.0759032561696832699177488046209951 GT 1 -9.4273126122399596476006373768058454 2.5737623552572551891065609192785061 0.0268889857146206761829647550271845 1.0272571084582264529254169973154051 GT 1 -1932172727791862640558909107854.6795131399156866731253849351906336 0.8089509432262026654361685465552104 0.0149671584991524279098582611059392 1.0150802967406418409292427053193219 GT 1 -102153.2112431874120377192070324490881896 1.7254275718659026760811498138474530 0.0326888485674960570735299035142887 1.0332350654485253396776637678245708 GT 1 -8269048705864398330221562690100.3555213640562607112158463823552481 0.7638302582405708993505414834846313 0.0127747930670224690526056098725386 1.0128570923918229882447318413702668 GT 1 -180521.7153850952895903390168976277780739 2.3753484410109579940625755903137294 0.0625170079839710245781359050347001 1.0645566631517056077995434308124406 GT 1 -19608412308709358515181265816392631405014.8037099053048060230997991055394025 0.7749179898008322275723614776994357 0.0264606874627115286350609839644817 1.0268170723069786507466251803664725 GT 1 -704166340470.4438936879229712565904607844951816 1.3111364185028164558456975978859425 0.0848780613325664914049717395869478 1.0886979562825746485197363509773602 GT 1 -573.6785864416991089502203036709276079 0.4603484784102449596506384584002284 0.0362053642798797817175074887100850 1.0368770405518000825588541476147067 GT 1 -3194.5966333097376375740708480987635074 0.3724121396918802167289480910899113 0.0686447940643987397782506994809398 1.0711145428525628342125352410553618 GT 1 -31611872.7602363156372866111120676682614511 0.1856708366252893182234831831461783 0.0417412430710926025547010645646206 1.0426374363036325396464151745578530 GT 1 -2337545485255145893481244485549483.5823521079253755618517198744388521 0.0143786064527327073620339067392796 0.0108391394437835541873116443035941 1.0108983108825048685878200886651927 GT 1 -4104157663713485265254403053318215785494354.5448498245360737939365719560849458 0.4256076057450155388668683140783787 0.0014205826274357521623141549397886 1.0014215926115603586274517696463720 GT 1 -1401081637117075010213307194824640793125.0750037367638354317568356829707759 0.1519112393126212065972422546944781 0.0519936910746219854126500366934181 1.0533941217646835945032481982869061 GT 1 -9082168724219008104242067404375267692.8866140286036311452075901385805213 0.6367086680814154377851783207281878 0.0687967820818601497490480292352461 1.0712777463428289734560290921943173 GT 1 -16341917394028217695.6555646533007451908762971158683869 0.0641822228744755606728123112355636 0.0853665791885261795607667811488547 1.0892319269743792488783833364352655 GT 1 -771289123431049.3115998593416070778430330604978131 0.0268519835147420160230170643749635 0.0262581954775470531659997899993450 1.0266090982408611778863862977438830 GT 1 -899649525258795873709.2915319618819667008624238138236747 0.7971907798259506589679787513285135 0.0679719221798741113747537185081395 1.0703923383338931512417966876526909 GT 1 -132609999067975842361.0191851312607140465301532426524505 4.7778301287268796999210709277793195 0.0785039980886886393153429910426123 1.0817568405563197059545260014231642 LT 1 -69899943105078776765905103430.0932036157999068861158407340757127 1.5009123080530684026172290362934788 0.0242475464510492850042780173969479 1.0245463583983627805017367437125576 GT 1 -195684294356271676.3196912399510398546809324166024694 0.8870949451726582112181410346136463 0.0585985300748146429799398313541907 1.0603855885916430828351601356349460 GT 1 -724333840602.8002976772618630515013780461902800 0.1156840679403907988450828706963148 0.0612379140790500761855417327590829 1.0631932015036321265268369113116346 GT 1 -196863949413.7145544744440238391714649078362264 0.4716286027257873031119481872800890 0.0362126903672445426393357255089549 1.0368846418757100292624274386122616 GT 1 -2541945236876932850358.2621625609514449219530583355051192 1.3044955807038395626836146914840922 0.0472719778960478330386307838761315 1.0484258073462919991525042797534531 GT 1 -61.1662893652458637698042047516347920 0.4000286528375695604406532599088235 0.0634368303206503476453406977154362 1.0655383064317310374359075269681772 GT 1 -13692.5987104074978618467349541862296777 0.7010219550154008782719145010820863 0.0807200196274584272808676110788307 1.0841645453836623458124827674079918 GT 1 -4788268147921219142376659236660814761673219.8623746927885938957251795604902474 0.3240084818807371669271647404963518 0.0413183653329393388268714950922269 1.0421962355789079626819175623422765 GT 1 -23.6183568142960919068253217099529714 0.1842457095867757080250429053647714 0.0380259618834281017430805504800560 1.0387678160854080399571545637451638 GT 1 -14933544558968202571797779034929.2815308408435832659343193542432761 1.2004173579758387071276841483738655 0.0673360031415286861635598285161611 1.0697102749823791519223131249870390 GT 1 -2697887907862063670681084451.0791913157625453468864502476648643 0.5297248410503140188362314163044716 0.0339540613279741156778437126508943 1.0345438903392455031533948140096674 GT 1 -485786337695.7154596242508358851282145866472103 1.0708347020099330266140474490211624 0.0708435414392868117003820399926653 1.0734781382445938634808503724587223 GT 1 -8735001666197486323717564.9560650038031753638453711455415147 0.9456971219114677207260211465192767 0.0547778853798678312021633142112787 1.0563353371803545041694803675755536 GT 1 -723797051920507094760980123570341.5510840446457606393325794202390664 0.3678767125972359177673883509120601 0.0134338567358384787857706604411430 1.0135249073493098672975600336830883 GT 1 -410272657036296588.7511430917847790334516005727399505 0.4548126832166240436603787630193402 0.0030227137658644320808642218783438 1.0030272913920160167298006508570057 GT 1 -791587558135004327944054731600510217.4084846760686281028398945571447014 0.6860300233210021504395240090657842 0.0497571718994664509378243561792606 1.0510377185229668975909191280989873 GT 1 -2119500296250215303606892992971801736.1036795391670337335448730235889567 0.8884131301771714407462183533871242 0.0220419658834901288461452433210824 1.0222885197692950198728804911127822 GT 1 -44452762940254420833528450.4687289826101018693379203833844289 0.3114863560900846492874772682975871 0.0111899063399196581778516525970630 1.0112529843412484452305274856285931 GT 1 -4601596838629644462738401699053805424792.8538023654688265286337514941356190 0.2193351083243295823134786208467819 0.0740127653790148357467735938267599 1.0768948299374741394677347269470498 GT 1 -13383.1986343242062910285857564278351819 1.6526763206280230512062692380736659 0.0246725188073876933184242226182272 1.0249819862324579941831940595055070 GT 1 -8.7682001042042733747765699115298897 0.8803002271336731753674585602571547 0.0180168072973148213906059250866256 1.0181810861481885291804009140715299 GT 1 -18554538794655967766173433560.1218047345055665695990657001474836 1.0601708902154003662999178332080412 0.0497929045549608117165981363473999 1.0510753229397482742384434022414710 GT 1 -1028562939770773265957209.5863962272592418264097903476354553 1.1753133127308015923382423333221834 0.0112536751256240164123286783323372 1.0113174768483939245308454630116387 GT 1 -105172055207249633667303935.5032223772411504781451219946601872 1.1432973570330204253137886358139189 0.0019128338823035199069063947136376 1.0019146656853635417885239242622174 GT 1 -220628.1522606883372968398916770001552622 0.1362360543076522416558683663679565 0.0101705972737038839085639421094964 1.0102226711808697346223500965349918 GT 1 -443984.6377333656463341448549733274798612 0.9723377829191910792551939782248427 0.0466807149383434644374968996286740 1.0478053998942349639246817444527888 GT 1 -2126474560704227800944549869747569141057.6301398659009432025328241507241165 0.7977526349283666904036870702311291 0.0123514053075055084494394004580838 1.0124283178892142161688255959843844 GT 1 -1152779515765637018766.9076106798590068483964266082823778 2.3805249379999879658856694200072824 0.0559228777457604246134286085644607 1.0575474188704594009216868195667546 GT 1 -25600571538522461065.7769051281039230391480885625650379 0.6597821492603136408969600097603389 0.0577804738983176513859826766526677 1.0595169889851878177271547064845637 GT 1 -3427116461.0741658585318161738756829182648469 1.2518236247996282413732713164402372 0.0426165243234663715974076696372979 1.0435512617543211154939378404114280 GT 1 -184031228536677802356771392055415112008.2557063241583251862943791740273232 2.1481004435554379721056651389103869 0.0753613054699515849227243851238065 1.0783522182820163717909689860242835 GT 1 -6565336003981227978018119.3952281224648126912101632839977945 0.2096079595518966908924099998840600 0.0720131691377108403104872297753883 1.0747377371777819070972202792709824 GT 1 -138855685872574469956356.1730541232640113473372728482222935 2.5706094010167330581824968656107891 0.0489032788635545695048754646583773 1.0501395169432835472003304999334104 GT 1 -59567312957543000086719492459575153.1032614602104628887329602341296716 0.0448013043205898214361487455257890 0.0909706057211310291468556767591203 1.0953778483870358932141329260632985 GT 1 -22000551626308006856598082632586879.6904696923848955113848624312578939 0.5228178357063091447749165384867286 0.0037032346743167925753550007843825 1.0037101086236558856103737452392507 GT 1 -95310851037522643056219668130731.0497390981840276808760411403887338 2.4950107918351815902413545722040999 0.0250123140298621703153515993347208 1.0253304378382637559139759046478625 GT 1 -8209796161554860749937616489595292086735947.5057751065340927546147570888631544 0.1650416133694467270335998278406652 0.0592476544581841508746570837880888 1.0610753562437572271303893178248101 GT 1 -496758197181177432609552721.2215789089053847693472606036120152 0.5120431078927911721388285348591050 0.0440803311161079562711761905959818 1.0450813978254461974506792578872603 GT 1 -101696620031978795632.7534263199115028432227734719056867 1.3305491513731916504367524973252805 0.0370145466951571113442000172798567 1.0377169729005499328853947982733168 GT 1 -1309131985.0804077537444841343900632461988883 0.4372488130613452911178399684902549 0.0364015980512546127950734430182883 1.0370806666604532687416842322068917 GT 1 -21685092106414418351969828640917918263.5928708845522356451691161015932646 0.7451784274716008438526859077940914 0.0479778799454881155068475219941866 1.0491670091093303039748670958220912 GT 1 -28192.6657105987663930158333873478803366 3.3794783396473771040434354720188707 0.0789345764665695683964416611405960 1.0822242099256906627233821188328899 LT 1 -11345057392382645.7162468111966397318656356717465853 0.1153724490697388559840868705623139 0.0336082733713019079114424338612792 1.0341860128598609354607375001123373 GT 1 -462230.3337936120964653569886056007064390 0.5318330040030407125608364571868344 0.0644628165443994831108937578595825 1.0666343869113364464752155747211286 GT 1 -16331506698624005802.6197878503939751145915711860636373 6.3923506261789843377106372202923604 0.0807140554345822044426836886659040 1.0841580575087427178804327613360298 LT 1 -426927794501009774669187925219495282.5718447545120649263800946170199686 1.5810985597875206977703757345981026 0.0899470543733262079605507267805966 1.0942524991564148295038184271513916 GT 1 -20092673386164017306149387675727779469206144.1309975271555009738198053285496694 0.1657584215024737265898980452076941 0.0316405203791464758029554781942216 1.0321518973991394972305574999751141 GT 1 -1.8858879510469972513562430214810604 1.0888526572589175879574670836905963 0.0688039225124049362553629770096906 1.0712854143338580034658859507591535 GT 1 -495539257022742578849326227.1736997948618490735231811303505334 0.1916418112931026135930591296590704 0.0205534902304589281647875878809369 1.0207676528186295341592801309361762 GT 1 -16373049114874355769200688688700045.9515163664763691445738332657947288 2.7984430741755326591093529848560937 0.0368907134255300041189768854745190 1.0375883880835793111117817975794795 GT 1 -24653058401054269479378732281787824.9163185849952713130946171830460084 0.1941801336929155201518427009517824 0.0832837039647360949101949378010779 1.0869572373258290073597625294089368 GT 1 -15383722182162.5319766465588737222610310564924542 0.9103042576386504269170913885390051 0.0638443958102719297632927907804888 1.0659735725290684464194712399948890 GT 1 -427952929135661340555373682744809094013.9253441183642037587454981888302729 0.1375814800022913587594153783726658 0.0012815492207347194927697716612270 1.0012823711072043212399016750481928 GT 1 -10177.6060361165080242529835689909864776 0.3737304975855122326989935546885534 0.0640810179869291321167387862890537 1.0662263639292201189938182676679084 GT 1 -2645457241556317167.6148920677736086997303910408390626 3.2983797451014193457050610927019313 0.0378850122904392140554812814387682 1.0393671082396745538788437216909347 LT 2 -18248292327039060445988474746454331325027685.6918289473921742412785486901122063 0.2570660359330109391405280759282219 0.0117219140401723385226359351324745 1.0117911573156024912426325120986534 GT 1 -99482373729258396279557465473.7034110963589635109610365277944362 0.8061060439131308411483720878141562 0.0928215624206565026153151362243758 1.0974161143914861255295708946051225 GT 1 -651893758686912768269921239.4363878361937252121888554237220806 1.3131087915509575385919091441984027 0.0292086763601080755255228799495750 1.0296437424997773185288156363539363 GT 1 -910095400823134600800.0939527288772427023139622220712265 0.7476345253482084297578562264600652 0.0913196142823610738379017858970308 1.0957618575059388415911026320662056 GT 1 -15045413659225383549707558991905.0402826871297975925723293057329229 3.2199231572553452997471321638333295 0.0373158508671678943453969940628667 1.0380299073458859436397617144015707 GT 1 -348553963719037971806.9746775729270522825260505892672252 0.6270620061073695801949721783863185 0.0046096542949175019267127554694162 1.0046203115146210313479738151330287 GT 1 -721553570010046583624786410806993.8565776741181998872755922382631074 0.2471975958383351708474080815453538 0.0030627918727141005134592324213415 1.0030674918188331169592049669196671 GT 1 -139180409089754849962423628.8316861324404671759761840258607473 0.0456083802616535411638548098097395 0.0175145928587664510094356407834929 1.0176697881314839090540918225044817 GT 1 -465383106729187100218841721.5712679148513311598463193108738754 0.9090186299343682660228931465155596 0.0001483850642449746083931281263015 1.0001483960743977950590945598761910 GT 1 -90265.1624595876068313323189773507542377 0.1884141571406649996332398769355994 0.0816210126830438472793760433297419 1.0851451333421716147737425770623932 GT 1 -3296147533951475349683091780922760.5521210880283207615957786741574279 1.6386456125927248243960549895810527 0.0138833778203397614994883035368230 1.0139806533011236372833537693775904 GT 1 -5205586172533777.6060826907156261116528562679233572 3.1876138003943995477334929002521810 0.0291142938935487556469661777059869 1.0295465250272649247061163743173602 GT 1 -57.1673471991446537703788123775503373 0.4298946756726338591679365261924805 0.0096041876832494384867309392992047 1.0096506053354310029825835467066091 GT 1 -2571982286225532210665.8293418570938830753098237654445745 0.3288896700309786382139051607324957 0.0637816733733840342489946694876006 1.0659065747612838770679148351586818 GT 1 -1956552298713638483299.5787040157565317180449170538222047 1.1905193923576130348762615728783976 0.0011470494830784511011567753143489 1.0011477078478362228499005974332857 GT 1 -296816753.0174291443590822189673064725936293 0.2437074056724298719152035551659047 0.0818449666107222730868215202567230 1.0853890209328870772904271886040981 GT 1 -470466585759103843204769511707907392368286.2002901761550390652123800106285651 0.0075975433877347049081640928274839 0.0993274380692596547826724328178339 1.1046135037065864413790617824398056 GT 1 -10858057839597605818206823.8079913680578339762403866474735028 0.0056533656115866993009313512910690 0.0612585669842383432842895230746856 1.0632152018940237211151487499294776 GT 1 -29590045.4935891225736984056960682020269475 0.5127573791043746024501752721328545 0.0603190502977226311806037734360365 1.0622148765428103692967597799918071 GT 1 -19344806420956386016390082111.8156092103783896881410640267587906 0.9407849082434876646511647621740737 0.0115592096238245467104504927199616 1.0116265366215189530644981366062141 GT 1 -41201416577052373295655825441595575.2967617312336698874306267867820709 0.2592944324025824871443033663238300 0.0639561632791449106746336404124564 1.0660929694977497284102103908870839 GT 1 -3339923076860411.9426537943059671246544320465422298 0.2981239404240278633785824784162010 0.0281404461811756960582734429341797 1.0285439769176083894340723295370392 GT 1 -261811891611024.3523163375150013189746215784422224 0.2790788722113534670029361217211467 0.0889783184314675374738753951274090 1.0931885822594689121942011627147624 GT 1 -1910107900176237.7175145152286507001852909845040017 0.2561327935073761519803591609967139 0.0516331748137424829453571709538941 1.0530139051725607082622625446377683 GT 1 -33685323610377639304235162281006781.5726079351178054668934415113555832 0.3050073230624826746026715373740330 0.0900724498067218095342922098631577 1.0943902978129191451893998398056498 GT 1 -150047047517111554023812302519649172183789.5767921757434086924987111306915280 1.3982575432378968764341640317998901 0.0932465407031310982878307280200383 1.0978846857760922510302201103679258 GT 1 -22140665834996069362085270582611426424177979.3911878414241397691171144003424926 0.1446533599791093022190339603511515 0.0878679495822878801354735842107106 1.0919705072644892721770382616201025 GT 1 -241680195070088486.0615267919689252795839859743871666 0.4698238462114640355288612265107924 0.0680909436969115884541118321612462 1.0705200481316329040488489387786931 GT 1 -1800453277080960168891701167393503682425.6916368704068073001496829506096148 0.2161523483231409718299253777311081 0.0172854529242242122665411876747463 1.0174365905526940789692473580625852 GT 1 -108322187404382624600530846198.6400536844546062183634768009621593 3.0496518479262226457238476388495017 0.0293220963808142310325672781016211 1.0297605818699231005394409942792828 GT 1 -5.5303604840344921183054680114931516 0.9901950742911156544607292834066004 0.0046480851765565205179125490578685 1.0046589211150758783587104910437704 GT 1 -1622740314186269271.4910852488330133476623637216832950 0.6885507269883857796905469101894388 0.0962747311750643827638794673577356 1.1012298709459046614515169580019451 GT 1 -203845234.1597529261018886568495484072847035 0.6351109740447376103663511021986166 0.0887127130274268735591695197936160 1.0928970780079872184673224772730552 GT 1 -882596.8349119361087931396940278976429129 0.0303926638959423339762526593369220 0.0093381975028314946534770717886552 1.0093820718207797260194276791806299 GT 1 -395482407746222959011117093.0610790009104086176210937616354475 0.4873309745429483134413814699214369 0.0815751526653926503217375045982694 1.0850951987581996408037783610915515 GT 1 -16967122932012331.2888803911051670794027604719273216 0.3262510122020981375060674052433257 0.0074518145006323108625512463565813 1.0074797179777571477836556450809914 GT 1 -56773.4217204376299245229539774203539673 1.4257320091912041758566492687806328 0.0213349083020131931281640315678979 1.0215657872175576689546586218516591 GT 1 -659493546715.1282029604032383253177447779809756 0.0860970920855795559474145571323508 0.0041354901211615438931539775616187 1.0041440649092320455198286158548601 GT 1 -44814246688815687252021699457335426235.4708299989898366347503345006355449 0.1331784647944569975393905683333780 0.0905025269279741262163257243870311 1.0948630593983245980700619679341536 GT 1 -23361375073982990170.2021269563665610528397410133627317 1.1503254747002227570752907963285817 0.0951385341478082430187954517888093 1.0999734234060177653947884646925954 GT 1 -38.9074294737188685874763101451516651 0.9202484369820258575033497439601450 0.0912346596227882476598680150102906 1.0956683695316737241974957318270993 GT 1 -90374369649.3813207424207183673169026228896835 0.0351311475258468756793290510870570 0.0947845090013474117985130902146301 1.0995822520255577593380799609871369 GT 1 -897011827441326391762417454173891447.7415176275507071218110965272980054 0.1874133194739145117197123152735162 0.0273678648893510451238732029246643 1.0277493411401691914222333867567348 GT 1 -115679987512164373004613991064964034.0307024679621776655412109349946033 1.4238410347975357288558854567982727 0.0189389783737983880070175721251542 1.0191206178587707316399392290149109 GT 1 -161497.9446227691788786458274112688921728 0.3965310396873011312853122479813631 0.0010133680381582383775571585508659 1.0010138818426933433636813223623346 GT 1 -9458964851537065914442417670075191420615608.7345182430732934760252533696654852 0.2960197354091552309561750752341336 0.0543940570910238183468100971568967 1.0559293475478358127651905927522378 GT 1 -101026903527240.4180306388341085552038705114024242 0.7294196572624487094348218862668703 0.0472745666740404079480648766786185 1.0484285245766554061847801704485276 GT 1 -438257.7330730702073368630038413687097420 0.5992793345907252887577858649449990 0.0470706060909274571012569354766253 1.0482144663107230721007313143502891 GT 1 -501270157823979.1936308075472802106460178420807779 0.6397450733704260682487349714507022 0.0162163892435961007396291685254020 1.0163493138810244881398835606333585 GT 1 -29962847677825875380210293874410.2511065377123402409887717211050969 0.4482393469395275574956528327014725 0.0766444810352833709300257198770540 1.0797409409979036539272217055575363 GT 1 -9.1271069468972125380910527376542794 2.9635983876573625293231290783306754 0.0674482428550624892246737359182544 1.0698306253637528589696424407128160 LT 1 -1440648.9407734839257032923391917916842188 0.0524766336435624922159024186212961 0.0414218481626656349847670398816668 1.0423041842570737514324602084182955 GT 1 -1110013167.1623281097228999392439271335128496 1.0122672582690198376073736668216620 0.0262264787820621046781437234634049 1.0265765267944971348148276162646728 GT 1 -22411440729817.1458813664821063324340360912509023 1.3483752819934984456521754409105051 0.0272729489879316368548837093870584 1.0276517592620545363459654881574312 GT 1 -7052394432639785625.5166379439375012342455898187765000 3.7571610157526093569016927418701785 0.0161257131241059252584084827999734 1.0162571473314800011551390784359285 GT 1 -870766746309866860185192979151451565407815.1382935094801496721682580976778521 0.9460400479334124480455162335006289 0.0581697734912345995136505399637767 1.0599302472846759433773990704464411 GT 1 -27872340322.4429180927434049294528295579669283 0.8431766852848012065451545563550230 0.0335046732141107941891075420749987 1.0340788155385199864444292486337748 GT 1 -107659957598511.2017858598947041924798301203261615 0.1936034431466117733471140941050492 0.0894253010233301491029541021837117 1.0936793414700245920741415482440664 GT 1 -7283480135710097143425621211443431260314569.9628324298594394380857768085680614 0.0724744705462548585444351670439857 0.0553334435119770295156825667392345 1.0569232640319252898139815871298761 GT 1 -63060263463616629846.5738518862191805208580344488873525 0.5109478039394498978765740422874994 0.0960236459397126265795977483875034 1.1009520759450176295201110281659249 GT 1 -10883914095550538112370566319221705759911.6015921726523096485360487938838310 3.2438150556674725214586623776571562 0.0144581390007573465710391506261428 1.0145636763769777988382549304353077 GT 1 -37584478003477090183188287565180.1704770305377569076395685612978157 0.8924313140763101528452478086402036 0.0924384548020131429241495055687649 1.0969938967427094103096157308792261 GT 1 -1535527100993133.5981244959271335406685970874522325 0.5702512360253005567931793261094849 0.0016092294024865747624983088616699 1.0016105256028973383910574305586870 GT 1 -109998296111828049969765397220161512401.7436378897844297437479246906954502 0.5766349308904498915729303217803083 0.0632656693478218852671072935848572 1.0653555688011363562711142890467770 GT 1 -243.5941974273424520534771975768644327 0.1758239912622382235664605364058270 0.0766162917168727395780175904337034 1.0797104122497221029528356867477975 GT 1 -2181747200701346778.8062152394222623701686065917028906 0.2758270045349418396783266325226985 0.0635159473725728161408239810263128 1.0656227859376690503318775889319173 GT 1 -9700660737839599215720903553.9928016692019517342544049375756184 0.1025481538731857193955798849891598 0.0691876226126520518886046363048598 1.0716975500625370962255900130403085 GT 1 -8342379141611380654686348973857745712161.2625608268964966001920701488510642 0.5170239737561032988194236192879892 0.0106957923624099604154307836128757 1.0107534035157497968114609268278466 GT 1 -306958.2335369605240664767205201034973676 2.8128816791070042779221654127828411 0.0746367292973885687763812761505047 1.0775688934821189292195932462007745 LT 1 -13241865.6158322122631912403709417050699009 0.1363086765240837687989956282277778 0.0527200730969118755543998509077485 1.0541606361244921610869713828489803 GT 1 -134287209858739344342965226465934309.0060113048787759094813145323477055 0.1285062928576582880493909368971634 0.0799625698580328454124965237513117 1.0833409248297398368964095314644959 GT 1 -2360163057517712.7464543899038909741776200646839992 0.4548954634665278629812778753391754 0.0314358110078434911816927749501000 1.0319405216228170682829333865503141 GT 1 -40082233.0547039698418369149517408886095201 0.7562252415712691669594969014545685 0.0194701408890277189394702465440798 1.0196621808660495930183250621264349 GT 1 -270484426926416343653861117.5459978397032300552688092541016597 1.5813077132613451240241952294031210 0.0421099084194885212583011771940342 1.0430222345443659969902620160505492 GT 1 -1523414995323471.1838845625329580424030730847396211 1.0173366448412188513069590035332182 0.0176201855598208756428299616645438 1.0177772689907268556000927373306903 GT 1 -12791244298209300890210301.7090185817399928108242182769161412 0.3487432329158787853368903046435008 0.0115078199921053472007877845375271 1.0115745473709974336008199742429474 GT 1 -39739974543303383486104554445930.0718917489559974253529893358894774 0.7131416072675596524919629087740692 0.0782966578064875988974654658376853 1.0815318618704941754511045885605335 GT 1 -21584930738406619847031804767959086357885.7592982553391461082396224841936324 0.0645572104430759126945257076772334 0.0569894838669533906025581800847704 1.0586778446260812338290139207009926 GT 1 -15374548881615935590406933657740.2775241123243548685996081332334076 0.3438841194919920238097904851466350 0.0452873383510458491119369939597889 1.0463448616287280272846150891766155 GT 1 -12911683208754135412.0657939828520618471668488464984051 0.5530293435609790550996065249859877 0.0029495737419822262940413574547054 1.0029539323073284771237435387488127 GT 1 -5571156694470573447931.7842659015893095195867663684462642 1.2824162771635609896547451438878823 0.0684472772022669094037442978907660 1.0709024906519945958995946369426019 GT 1 -2065858848678748315070003863165.5047048002651100079137897647799719 2.3500898337714902171820848297975553 0.0909898012805486977117518369760681 1.0999494464304800490193071229166969 GT 2 -10114689900421892201000277.0478213644384040130299427689785057 0.1982333759394942937307587647695605 0.0614300438441248689177518661549072 1.0633978853437193889865583527612073 GT 1 -28455117578296104980538359297943305111.7896869395440343260940714612418322 0.8035006624880597869054763674139193 0.0694202290409227157584257294846270 1.0719474774404817047697400208878680 GT 1 -848.6473275603867696030139767009154373 0.6559068339783911561381795482914801 0.0936159106965858310645495303728573 1.0982921231476801483976479129132598 GT 1 -4125736243132513622911324029028776160632347.2327157830391442268135703263602287 0.9621281527341523202889985056413065 0.0816338359904394076962831211550378 1.0851590964196148927733453365319268 GT 1 -6629439330333.7647284726078637426182499887503420 0.5742301630906252157994929044929348 0.0709185246452172796113210528166050 1.0735588418020905810540084453818022 GT 1 -17463474862810866959335408.3654520177060956895899460233389942 0.3498949848988081452922473084534757 0.0672250658488084432331219920175879 1.0695913353687505450689698250923768 GT 1 -8267309711.7688899478258273777387562194163454 0.2282809667348206138969936642070570 0.0988322897109765863361509318539928 1.1040639007496751451729295669523024 GT 1 -36363663646751161501021317900094.8565015366380010236769294533841706 0.6035121575074539774179424927915770 0.0925251199945862460915036945651204 1.0970893936610472934764676157420581 GT 1 -607477380490925362562039582389049678088.2401116098146290336621587275202216 0.0132731122960027031000269563598572 0.0159786378004818447725993119618637 1.0161076726131767009287144651381956 GT 1 -15024864698838189416097410611911065726424055.8179764247349058225077243408290893 1.9888435606805461176135915851292254 0.0945757386659731421923604377235194 1.0993516480790460626435232483509105 GT 1 -1835075770366115578296584426.5225016056896040719765731023378109 4.3597887665609655400324811582221325 0.0829442186628082279191605638040817 1.0865869783280012201349538019828882 LT 1 -632839703857663566647960080221822173232.0794058804678731705717441928464843 1.1271232222275975481588250684538166 0.0376327276854065884493640590189727 1.0383591212230533499362234952950218 GT 1 -2003994976990985875.7855127990964709781379162027734162 0.5422636044142998941287559284042668 0.0810603406423149704309217858177827 1.0845348178052916814827896922824508 GT 1 -7246519695159345379.4471470008678569534723518046309774 0.7511616714266729990055199638720262 0.0669202539440476735017112474159573 1.0692646090585981509634936585262677 GT 1 -12310941761121118923247.4469746776424127030520517222094450 1.4800882100856669257433213377832053 0.0902635214824083086631656839659840 1.0946003054554003808437438385457865 GT 1 -6804228305945759112151345125164814855.5834296292199708534949833482554037 0.4227144497202667030354792298421305 0.0752096840246070915606942753006657 1.0781882525987455682895312503625528 GT 1 -26301718833388254455254551077737646763.2085668932475106551733331659725462 0.5554473540046175287386913240210967 0.0746299655191480710629758778296454 1.0775615841866936141898721946075165 GT 1 -34343812130263497977732293334844680.8157763694346246610269236704292536 0.4548085814391634205566592027765582 0.0201736828890739160194233526649598 1.0203799504619881271797816190900845 GT 1 -4736298802.8406558716316283102281392317450954 1.3225174063457525156253322027475248 0.0671077236516709391507104663064483 1.0694655442344776584064023911796059 GT 1 -1842018754844995099452820364079287626.2678326951426429231842850904512136 0.8453398096227653838433626721676858 0.0448045566914467374768150189405508 1.0458393067607962764235157590065463 GT 1 -5141.4287391832769733645972300599298240 0.2777048947006754891991097395746636 0.0699299901469734254240365651558341 1.0724954162563316291160545632364647 GT 1 -2795106534574.9463292106433099926674483997542815 4.3723459011681110801194600604009416 0.0744943967171245955847610691057282 1.0774150926564147753886996042154420 LT 1 -6305440637068479115558780716911171733.3579331557410315021054771429004221 1.9257323794485498315054081245722362 0.0169187336673514644257889946862082 1.0170634904996514782795568052456970 GT 1 -11346450760889.1759992796693457370862993201610661 0.0880137966272130811122944059182945 0.0760535528856092952871347336390572 1.0791011666884717824094352976484298 GT 1 -92898775978134466472564.4963816323005653183636454406115005 0.1985164770929331090814203670527065 0.0991014628777419885461484253544236 1.1043626391219785292821704872361678 GT 1 -30591948060899722800784303080002454.2530077500749862801206522218669781 0.0652173154868253907502415058724200 0.0219613439292533339489712073001230 1.0222060840937267416125603624332637 GT 1 -7591430198160465967136321025.5987692058723295195793990214741936 0.2573511969043726353919352554409994 0.0639179583055660323293363207340870 1.0660521549627607440838783388609813 GT 1 -243455.6567147536590466925107414623090136 1.0033113396892945876226502845359354 0.0881150825432651625065228495330038 1.0922414838692491315414333806740012 GT 1 -805400257.5630633004612666413788171849565354 1.5422923476537215957944316824397944 0.0572832045288905194515348859582252 1.0589893643909008868636333469424955 GT 1 -8063.1706382767848756565145318945017710 0.8655852620597603276985185571920790 0.0456668663562175066183191080380191 1.0467424717972295605823379399954836 GT 1 -710515468637.2040839171383481691471023168005834 4.4323117473924802726519613501101177 0.0228516994060005861734256197143326 1.0231168466530382339022721525368491 LT 1 -92121.2086178793884976624711025380264019 1.2253929043647546857637897386406647 0.0087121790613910606930808445425949 1.0087503519679068029133036054414056 GT 1 -563328872682036293370728.4792261529091855961065394626963715 0.6614839794136721516429266212272213 0.0459107188741649822777888863635694 1.0469980258269741096995581637937495 GT 1 -4709762435616686592102744.0136518360298838031958684707236627 1.1788084602803378476322358993969765 0.0949242157239371287817659069174751 1.0997365992566085964554200334871032 GT 1 -1660592581.8703164713785759475392707863673356 6.8357755704154460169819209855965579 0.0395385720597713748082498928321431 1.0403414558930327795257816627260243 LT 1 -16598923492411319158931.8864547456725935290228712456425012 0.2058905668939752339411141516316050 0.0494427794387384252859530703163988 1.0507069183803466057641335862889375 GT 1 -2.4948938250973117461999725836534903 1.2448961969794020106077856452903472 0.0067880589617255069401262903038717 1.0068112026271299876837022369210917 GT 1 -20048140415106625696597044554526542670.0510166263530026649737780813515450 0.5963576135255440363613273981508758 0.0719172424235571251193279820290499 1.0746343717492046135049232109108513 GT 1 -4339609433.1479764897062753004119044511351911 1.3310485479829279753118953199555054 0.0106792991897765354268673599008222 1.0107367321673164593271550845507378 GT 1 -13605519759982800159691015126901.7492980916238586358069029075534758 1.5903497824333863749543937312391590 0.0635976466615175416378169203303785 1.0657100301920309821756024352864163 GT 1 -364793241362657230314888356.9753655960577082657573388534432360 1.8249515781531265299240722081123590 0.0362287313840498069842964291409839 1.0369012857453040820741206837368274 GT 1 -28799830009.7382174284273869472348464707277699 1.2608503155152296067597267376821742 0.0957257041092494925244167618400387 1.1006225399560025831357717983049258 GT 1 -4042507312050928800.2228873268178472474930864146879030 0.0474827634637979750167141851040556 0.0916819660258456944286697929791674 1.0961607040259590588536987068960028 GT 1 -14777294383238.3099875611171484780904638500644776 0.7766050913240645975852818165751679 0.0335420283041582660224693273895834 1.0341174663327026118944222177707856 GT 1 -523316026683579609779.5883514224000097430031620485781051 0.2089786365662044058984938079574421 0.0756409112450131355254820191188556 1.0786546586415673561958750860954732 GT 1 -520876911845086558584954960121839537.3029627020773706386571295952175784 0.4360541454807848412216738882658623 0.0576944795075326258209806113792972 1.0594257252569607733337844856305262 GT 1 -6.8865493315979870438253517918616668 2.1607886640405888914951655068324902 0.0525427216659317891172413135032819 1.0539734318715669280452331141396590 GT 1 -4908201414784714558527651.0650341410409415052302607027529081 0.3367529365804833700952751260828846 0.0715296807167459020785369141587545 1.0742168650080599010596218197232070 GT 1 -156118724967907602474691054410931251993876.0625015203114338075835846472686866 1.4741732543029233792033254479463464 0.0865287968135841337216488684906925 1.0905034272664110242606753102566571 GT 1 -817002447918193.1615596138525015866760594417436349 0.4547018899753305689836179416734233 0.0668104454910405271580911603293347 1.0691469320940779442201376975613263 GT 1 -2586577196864385406211.0897411841565206474579878642109479 0.3379981914497623573672923613458780 0.0914520883874940156849505183552927 1.0959076554836197295415246003979003 GT 1 -58974901401.7032956605544102456657551125590750 2.9859062365729842697697813330939311 0.0193411493757415935601070248526874 1.0195306366522451557196090172527045 GT 1 -663481232310913703664751295554257482557589.1128666164886889453659267420740584 2.7166281238313902659392753662932346 0.0495722082950528300394695250923895 1.0508430886875076312369718552325336 GT 1 -1962079487802271.1289864489705532626821329884902757 0.6005342213689657082265799869118398 0.0663981123283717491670343158377080 1.0687051760842125398341367032427180 GT 1 -3.1207875167480156721878241845865703 0.5851709890716878124125177561499178 0.0994997185622556483994119258697500 1.1048048018312008282346717295501191 GT 1 -57481258506190276787547930.4210724340978821434492281778938470 0.1696106908654590931181369596303675 0.0082903523566758254842309905094107 1.0083249084484256423127880137232618 GT 1 -444862885052681781.5851683959437136202277195101715675 0.4323048310417247636895166716981853 0.0183291145407659466012390724761689 1.0184991739922315371438570159177770 GT 1 -67140991910.2595301037474396717781090287880531 0.7578956847762149137148339650913503 0.0993106588703055681781380583236330 1.1045948742474799011995222950536485 GT 1 -5905846009947671.3175753525443526141177957894626910 0.0483818192811398482514068299642454 0.0619861718705418055435421579743600 1.0639905879422971643874633492707063 GT 1 -35317344927510376418.7912246731179951922171323155085309 1.0235297497566976228544680288689930 0.0999864642559386829470240332859772 1.1053454760552980046868445378502797 GT 1 -932366748635.1734788397298041784599076150703573 0.0726674132541034902324920656889885 0.0033725586985064715379462948043930 1.0033782585936895354067270056455283 GT 1 -524166.2680634840386068352168343204709941 1.1874913631633330480707126818822385 0.0598629945048528316878995480271757 1.0617296638119112321993103535711709 GT 1 -11249768983.2337327521942762275557229817317228 1.7542622832215903398822719368364212 0.0198505063811659737478389337231544 1.0200501744422356583461337686492545 GT 1 -94420.6773567749995642038716571809901751 5.1192843905723748610057549411198542 0.0069788095957316639491702586758028 1.0070032753819068154668434284758992 LT 1 -33410960272433247231998906771958.8570521439233998399277501550299278 3.5980174513752093225107433541547456 0.0345772449065463455346422435557090 1.0351891853960160830207948405935878 LT 1 -175.3187916166912035580572536343464114 1.7120048835326132234641043878206284 0.0761821560788346511387791130975561 1.0792403653882809838226742071619826 GT 1 -36225502.7278734898203562362046867235711760 0.3305379452030411896434160154564839 0.0055385412935302933243358607240436 1.0055539358820495992997547727234132 GT 1 -727514296791209016050312.7013520633552221833384989964619565 0.2272080055140626073150399594139970 0.0992505149100108060749616808383633 1.1045281009999605048003425616115289 GT 1 -3.4174711342706256419099917648130287 0.4667709396343662775092720367535052 0.0791149012373831920105190310049262 1.0824200075534846292320855735619167 GT 1 -13178190664775042017814378246465.5311839428709125455165479448453390 0.6083214825506120700546835839630520 0.0563479032915296706254199614884883 1.0579977223871732844956049725991120 GT 1 -124.8975076377596450902789206234232195 1.1295358795878268480638941867913789 0.0897972056175356779556769792077970 1.0940878533290891712197354677205260 GT 1 -13908374815161827029978002800.7687468404324187594915067338461238 0.1224667565412319829121347044335065 0.0693156898031488861274268426000144 1.0718351459997773505979284709633214 GT 1 -1566269715112071561898.6737915804858692973290928668940100 1.1635552042784036079768351295159414 0.0214238913168786862040248987500943 1.0216567141967255648263401291983846 GT 1 -42648050494210863517106360898303.9686985776608743848683927429412309 0.9877911785202906458794359282757943 0.0232747676048184672520298069162688 1.0235499025272148994678484712282274 GT 1 -540622.7105460323013249949158368623239607 0.7327523783485939556523643104817472 0.0193085782112544192147432377885792 1.0194974236510303376169321669846318 GT 1 -54168666874653435861944429107114286.4485779873968079410453516511014558 0.5690887430531361842625010451403655 0.0968255982808420261352385347744442 1.1018396083118742190214365329240439 GT 1 -1498067271982527961111.7408225496789231493371507490782277 0.6555683829454691637757584106330550 0.0148438921684501860316556646917375 1.0149551652593137664895263220507869 GT 1 -59318189263.5247049171057446401589302750696561 1.0143683715601749217602994266594969 0.0680671456349777710076415605428095 1.0704945115646108865227154503815061 GT 1 -447410696310025346.6778680264903447876018491462107201 0.4740159443694601526956779316619085 0.0454739858412883621755938636107851 1.0465403819617300343068859527561604 GT 1 -383561458416021.7299504798624579843815122575461466 0.0641242212854589931138773098913746 0.0707769910110537598887520961943196 1.0734065162433572165165956862558011 GT 1 -430693561166998545677.6124672570021726799788133747365419 2.0496915813202018390373637669417833 0.0200449019745935737274353255674151 1.0202485267086337313093582753115610 GT 1 -6650948112015291695477.5626512801130722981626106976425443 2.1809971707870961231282262525315426 0.0289006980698982567331643184689978 1.0293265482265914974889392873404140 GT 1 -37983328179359114189.3084003440487709606577049566911984 1.2467659589519117598440129512651309 0.0089817051715083855795543603324558 1.0090222838452636070061431499101151 GT 1 -109867329047961838.0839689202240197716926228913943830 3.7752520673503892687504285015385336 0.0485124819210918988322412186124492 1.0497287104834131441260567084639127 LT 1 -70018382584.2473067264547040845361522712198851 0.9326190661307993184666273232265618 0.0271792677025710254860542716863282 1.0275554560139547583173500496819426 GT 1 -38523505426185894373218053137085512559234.2592325440788355922418638987547284 1.4768738472881100727119915173209805 0.0212145065330882006502713816846758 1.0214427682560683366603005333754729 GT 1 -16.1004051694227340441256724846149288 1.6055958449534161569102759559037216 0.0124237972989937073149859606004465 1.0125016178919441737092221838334452 GT 1 -12488989062502951820.9595166271583530848999455480085562 2.2638630901359858640200997655534188 0.0741072148648599695127641714295393 1.0769968338307279430389767225045038 GT 1 -12558858777.1651891045820520327207453497131354 0.7707529747219047039001020531546263 0.0506837359350287760698529351316728 1.0520132755486671882993601964726137 GT 1 -285361209384060027287826027.8326286435240976472080681812778689 0.8229615996598920923399059017079926 0.0661741696501028317940197711776140 1.0684653352837560958210254306480286 GT 1 -54048183280181955842.1074787902149618431730566859683109 0.5147437020338067925938879936398579 0.0558114393954151142338628058977180 1.0574293863801310588389585378713299 GT 1 -49593038.0381871654247801559104724600325926 1.8015864236386254499653768408090583 0.0789021403023504367132653545178013 1.0821889946279830762222004248688096 GT 1 -288483496893088309575544011471095962937.8339306834880704150301975765212077 0.0389550726337767507024058276429307 0.0658153965303890060452647953068834 1.0680812120287358554352386803059645 GT 1 -11509443983354947061.4550698542438956755636648376420639 0.1373256875853308453250845260570254 0.0712266622469805765117662930800174 1.0738905551334173795219078642596505 GT 1 -22837052877066704969670277593853.4302110554598766634107873899754908 0.3812535137683629326896192644318138 0.0305767935162567891963494430467585 1.0310540168397107971277560249240754 GT 1 -105388827927003659456795744358.4554583942945929459712491256142825 0.8763104752165635156407181494923126 0.0293830247484756047670372126338726 1.0298233527228672165878438557517572 GT 1 -3085554736865107522508789527171375544218.4262847725035193555411597758525186 0.9277599397402981464529295652606852 0.0842903131337492120102460623118213 1.0880559002782854924944348846673661 GT 1 -411811421415924260.5823417334250551653439415121626519 0.1335404586606561403398092677797926 0.0981774296799421782665657173914019 1.1033374852311072511323606536541446 GT 1 -437672.5937922467801620894571633431044092 0.2434332311946359828844685617196608 0.0027172728112431804550364091585373 1.0027209712983935748943997696139262 GT 1 -1130603814656222199212444238770106374.9306439965432894186566738404073748 0.6296872335912139656191373417320421 0.0784293577483335421858737268755032 1.0816758447435721965856069396551959 GT 1 -6128.7887487980248367235289470875763095 0.3178149639082877794854334766349739 0.0776603007505054708691629818924837 1.0808416859180451396505482254783815 GT 1 -22847063499019569872627851281774643456035.6670710958454411626111649067028935 1.0712755994034033979986999242613158 0.0563488687453306234866267812414915 1.0579987454912369541216500859519541 GT 1 -1.7884669445132807480988013649002674 0.5898972989714229812860108324963046 0.0855594043532245274260580140442646 1.0894427715478384150537101179637236 GT 1 -4.3050126044251486660359558891270688 3.3327623065238621383610567328148361 0.0074955637116984528434869147111898 1.0075237966188904255749623426502814 GT 1 -1795552777331538609.6132317198488376474184034063243127 1.8937571770065516489479734061279045 0.0745979422148643137124894793044627 1.0775269788407185239272226413267832 GT 1 -40458293108526661633499835.6184232883009653804049287646081014 0.4404150043085673318044731236555050 0.0628152874945082043255164134793014 1.0648748843621471783915964115898914 GT 1 -52472378.7002752100615889068116767753638817 0.4266296507569365721175291078188055 0.0117852030889981560949520564044601 1.0118551990831149772397328435382564 GT 1 -5681277013558241038365305858621304606046.2658746064822941529815810474761021 1.0684361289114608760191282810977648 0.0647050716522043687975026760640203 1.0668933680434545945187969409443150 GT 1 -5480587487742871855711583525155631441152.6964502116480292346286116361229134 0.0763978498745076557678533634921078 0.0273356932512184822468495011822311 1.0277162648054335514357486448581678 GT 1 -2578936791868923899412839650244009541401448.6189487706594861367286115333048918 2.5090124649430836573173472814456279 0.0479955570354614628753303542247613 1.0491855772221047667625574101067792 GT 1 -604674340236403201511987595899791906821.0433586263693725173596685459003651 0.2705064617458924122217726316866627 0.0077732547738872930436844394269816 1.0078036239996332069876073721113294 GT 1 -14494879509287868649610.3584565196621078844338411448646883 0.2686222273929753660015519055050599 0.0656643978409152407100087189008163 1.0679195882054048559345020647705957 GT 1 -4444755161642.2020896464890519179012341574778458 0.0804547350472666810179200351205854 0.0092283745884968996540719826455948 1.0092712198356459442563198247023102 GT 1 -1332946596097032125303845.4353094976704584719341201462047261 6.0346772762404815856786262250104265 0.0803066539864899492990692658460700 1.0837149840528922299782546680256913 LT 1 -2666885883079.7941575505027564115384578932826123 0.9775796822352341178311042883986415 0.0500108936819616164351657542322956 1.0513047614869412731094951183252910 GT 1 -205474870592579583225.8835827254554481964513447152337635 1.3200996360760603708409403222515231 0.0837714823029903994691889159454939 1.0874894719529868718601110361822266 GT 1 -143553.7650183868257844561814213179555110 0.8917803524935362561519183790865226 0.0669694574706676970512209387398079 1.0693173428406606543592976890628104 GT 1 -68289905641196412158274889906.6098727726462740366627846890356972 0.6446174578851966799811368573749701 0.0470080398327999947943141653297770 1.0481488117043395256485540996499340 GT 1 -136.0683805972100572331609083793554923 0.8563993546561420646655773723505383 0.0612142023191110582546667832856696 1.0631679432823666421647391835518197 GT 1 -47364.4129490354753916543227998540293167 0.1963573778974919248183653003077255 0.0000773387725023078599105951594534 1.0000773417632993779851109690078684 GT 1 -47.7195311962787741463753878534465739 0.4954215553546232728721797616864912 0.0044540094207855615738009878994741 1.0044639580726626595834651701327944 GT 1 -51664554144884938904792633421.2798475110556355920611130079349604 0.0550178801793868491980374976623886 0.0462567453394580882884343897022534 1.0473607688482788930328736628099524 GT 1 -14235800809023680267.6032864572056476619266750717344462 0.1565680157489793804000060947364154 0.0425852934238007212224753979115260 1.0435186411889185757153137561770245 GT 1 -41.8697658733899378838767681245208571 0.2021255186564519698339572534280616 0.0167011000460415966249018296222097 1.0168421359254650556686864480293648 GT 1 -22140895702359255269515393311725285594359476.2861091101945045968203200196992722 1.6182317044884071518038011405092966 0.0158760328923990344339420704286633 1.0160034070321264577424394407434698 GT 1 -8249818441.5727424358693111664150192273499785 4.4275064537106697989699171241276284 0.0110891190705422120220342065742531 1.0111510617032629590361309118682860 GT 1 -74695236771905031337801322538904.8767453384510006301574457545069047 0.6632132905516818504655443129586831 0.0299532497561203092526199524564863 1.0304110125183935713204948200441837 GT 1 -55368677522235001.0152179153502661977514361785205649 0.0479364273982791899922940049405276 0.0445738738822545742551236068379264 1.0455978326625190844146267433715004 GT 1 -7698801628594592646529.7594872723193768790736927123182086 0.1316798337140371626991829371782485 0.0874099035077351422082649597767632 1.0914684625176227555772650480462911 GT 1 -11693648001890977044825009257518490.8121779458338356394698465344992179 0.7497887164225799077725207921730565 0.0558419456210902422040175159464870 1.0574616963654226611339518032739826 GT 1 -66534105870529964.4511846026752769498321358163099478 1.5634371132609097734662971446636435 0.0364309891073996676622865079767825 1.0371111684798089628598965762121806 GT 1 -45964490575.6577154996520456313796596275959696 0.0320937891665186288641841322868092 0.0309095729435998846475999986515765 1.0313973514697637566762918200281092 GT 1 -1464228058661665016014317149197647967381.3391242989564429414095586163279157 0.0682711813535910327960177756256842 0.0353756636663816520909268810554082 1.0360165422091489458016549539825674 GT 1 -268371617599480219139886046021.2851622670341961196553358959217813 0.1593126386435657005076258769416954 0.0258262525674575032763860264293192 1.0261656057940394652162061819296694 GT 1 -502050745580534138090113807.3705835670433987402140425032154253 0.2890990742358320536870826131138396 0.0361061875433566394701345796621498 1.0367741434921590908740438454257482 GT 1 -4189583817256233397.4196906415501865443981030304759307 1.8908682212032008807192198273594553 0.0498538525615177624867714399214920 1.0511394668106902554047217020537391 GT 1 -114988656876274114350875.8376032715946737398875297339767790 0.4206826678143037816206548800794808 0.0484923386765154721800810382218905 1.0497075404407401987957943503159803 GT 1 -488596709007705380551484967.5863091725119412653173530882534041 2.6290404972582971967385586591711058 0.0909798364781529271830809276687977 1.0953880029584361841375327766544582 LT 1 -2459126866611718526876922.9636927816982971731162585072066954 0.2400325751731509261910943812061357 0.0686370873552808824742027502968702 1.0711062681608195929075051006874411 GT 1 -341604714497757145.7231115971120739316538588534569889 1.2900859589443469595947439461058318 0.0417928803633165905262740396869463 1.0426913243408450995064722849914678 GT 1 -863718653102117849561.5815226637314256643318993292533692 0.7216010195328870464035762293180271 0.0901199224079217276792156167668413 1.0944424710212141991180554137325534 GT 1 -4680408.2744874673193255616752809431941568 4.8452892113897187077908208219915389 0.0672244814070810052771324690762356 1.0695907088065189224429571488115876 LT 1 -2012916522010604131365.3853695439141620370039974292775324 0.1818625289366098783688388754839971 0.0884416624464045442247238472829469 1.0925996852070027850064882413185302 GT 1 -1307514370254481479754288291.3773859947373992165604994124019162 0.6566101809452076228605956072482672 0.0975716549136021911265966457756024 1.1026659879532844038247771405909582 GT 1 -506256484106793354.3773203820881073080182588396722788 0.3349893608238957737094635949685270 0.0853784883485815728902538730124386 1.0892449477511383714590989516047820 GT 1 -1635542868395998778.6935084727776532621592914634004949 3.0094914259816922978874979479739503 0.0279370285207092835828749696389947 1.0283346911476647540894481795949969 GT 1 -281013288551754058264233557464182.1800349008410940054032651931497074 0.7600724820601987687563475202213365 0.0630308404637841243273534281405715 1.0651049113342565157147959368201525 GT 1 -1354864334178968502738246192.1219502642690255974508577581681527 1.5988746868978459143327573184590203 0.0820926889820971423095444423517488 1.0856588618493816565986012421016979 GT 1 -398.3396122696256198005427031812076447 1.5769442633341370498182643111404293 0.0647330529973200914393367671599743 1.0669232856264937196344388115729429 GT 1 -3169.0266190387940456069390756924028165 1.2979433138030874336468233146613278 0.0949958926508089922808496836913218 1.0998157967851165454374505469042899 GT 1 -171200783330349643523367.3127624611456127304287522196172551 0.5225971375477253848642501607079203 0.0349365894605426011622216556105053 1.0355614693984023269978649009943139 GT 1 -889878536862711830841630.4254018234479778252124691598516763 0.5370217115749676836253455857541373 0.0347451547981125803538553827312014 1.0353631242162146371249914073795100 GT 1 -36382.6026910118718422689258162040568805 0.6478739267134249723117067914382412 0.0665742572461765073552196213428285 1.0688938662947449258001317560165477 GT 1 -874034.1958229038298377068079639433552371 0.1521272720697115824291000824654136 0.0709221584836956650837085279793580 1.0735627530258972770742675206554982 GT 1 -3914454540103359415505567808008797.5302477735112492521686199382215793 1.2266307899920195513296669580511626 0.0091078674662095305229174074032081 1.0091495976664431702309188907741305 GT 1 -111933534988487.3738171751805369916799525070596967 0.6663786573522785481223880332009712 0.0867103634544703933375772936678383 1.0907022126109784010908691286348301 GT 1 -255206896087618216791803940389960321.8545250282067183462217680556973322 1.4012042304809765704336912667767191 0.0633246392116501174016344522923330 1.0654185233850878937331424550123609 GT 1 -1479222346237049316804701.7072809874571245823496205849234201 0.6783689869146684191468956788489466 0.0563252302294480793948268164036879 1.0579736957466528953715496258747506 GT 1 -720128472012660240822071516471182.3081102910965724826881656253493772 0.5860376837550588126029155971976075 0.0863526102204795950255497237908274 1.0903105699507130574766084419169007 GT 1 -272.1853930552688350521871640432656280 0.1235088020499448740146060998881647 0.0666171681239371519336361006759226 1.0689398387402879399244453434988867 GT 1 -51012597003941132561932745537543361313140.5536584318555317271775699434335804 2.0972460140151374660694120829429022 0.0283426257164185001437710367530504 1.0287520322558960974969076779416999 GT 1 -149102068402476610378525584161283478903003.8212763590564795868310459693263703 2.3023921160677826496000661709425289 0.0666472044121945660472252688527176 1.0689720192888542232705816320964732 GT 1 -3918335.8292785539375003168576814373163507 1.3938254096567283417748873341650885 0.0240151584487834505116017035585277 1.0243082238871788898788714848473251 GT 1 -124530947487314426984.4918971022752172280645587790014731 0.9498949825963302549737104186924768 0.0090268172446750600879805149648361 1.0090678058101001657443169489300902 GT 1 -927241465798784655.9504226993848963847452554984151564 0.0394321657497875837462818360697783 0.0576355181149425991513669748927992 1.0593631557964877119542683026305963 GT 1 -7172.7459294472322976925821673084584987 0.1624113611148419260761784170499119 0.0561217107303029333817540978277645 1.0577580520073057175913225327854431 GT 1 -98056404128628.5506368076635500416317308629109061 1.3636153677578393402767087520343497 0.0893754910516676729058951412465117 1.0936246412796685383492246335205806 GT 1 -21195356588761968008552525913892190364699.6680211789257725768921328107013216 0.9308805111022410388192955092146939 0.0327380237987119206788314610664870 1.0332859037761378005150683467085930 GT 1 -40.9042795492810555622504903368460040 1.2948917464645328146258851948900019 0.0424741673020239693385893231483445 1.0434025789722362599038596208762700 GT 1 -485.3908456064705134166552394089014425 0.0650046831626449284582664006095904 0.0349894868902492217291792160205075 1.0356162832882453143472789415714029 GT 1 -22186837496155599098945.6946077077002923529525527478742272 1.3042526671472279841896846761414434 0.0112499143331088814363337084138367 1.0113136732586679536694958202759336 GT 1 -574791.4406860485414850848526269196933073 0.7608077209487351621944071907661071 0.0215995386056966698266326191413013 1.0218362230288447939905796240125328 GT 1 -794469.4940250435577369198576833865766822 0.2158219124174114580728794411974275 0.0354712030522155026726587313790388 1.0361155902155137384873699859653156 GT 1 -17049985330356047506320095588099691473738.5743462521497250922122366526589506 0.9923364055585998898237700957001059 0.0663734789198535805739554865994153 1.0686787910866363034196641814742073 GT 1 -545961891995540792389777221917549635532244.4234950838368682307560902421621235 0.9268104743594832890153392898549575 0.0030199249923709950436190596729153 1.0030244941672130729915227315307938 GT 1 -252788526798947.1336790810195551542760396805271261 3.6908899378281083691518268522227005 0.0755271703396989693970213275413986 1.0785316178131126502267503895963657 LT 1 -83.6622091925676546019312800514247208 0.1856806834425238354030744543934038 0.0215228164250012026572020954373406 1.0217578101746410435719609468749177 GT 1 -3598985864559946518496.0391108737717176427325610645447573 0.9025486100468582005553941221708426 0.0211008414417950652528444963681852 1.0213266462940319282485837340327584 GT 1 -1323120241579263199784048002029459778071117.9437309660468733217141650576413556 1.9405144410621279655556119969014254 0.0831083889707006112248284508575077 1.0867660132436310086866543403536908 GT 1 -5560289078495620345547045783681393.3482920809393916632240007840457144 0.4218687626266774284919503287164937 0.0569530668889092908688380411545686 1.0586392275860083347029486296097276 GT 1 -525.0913706394368428042477137461248486 1.2987455937721684889230862980792108 0.0235705629999131207320476213702469 1.0238527924129889217428743090905445 GT 1 -65030451487235501290737300726.5873299702651950392218294352827939 0.0753445807076719107209261543037774 0.0374982755255877832589907458573757 1.0382194211600758086250274051244649 GT 1 -25483529396635672286472119000226.5384581875702311871779233425633410 1.6307034128159817980900648561720496 0.0428014430193701339447634258365522 1.0437444304912303708823466803509914 GT 1 -53.8094377683883168246936355701143366 0.0834726734735005384924569519175161 0.0492733946472038829125421175888963 1.0505287389947398897893765292502807 GT 1 -178194258188900692346393554652737328857.5550372268707932020997052586926520 0.1085711443145696773672554321735726 0.0086498572295466808493548295573163 1.0086874843813825175255581697623614 GT 1 -229296895054.4667566863583621124424423251659511 3.3787382501853913373677841694543803 0.0873009180008561082270629508734699 1.0913490452676956778781045884239030 LT 1 -23101052474002768738790932559215469970.9841231924316275126222411498371521 0.3277186166656141845899523205267769 0.0649644833329835049186822032208566 1.0671707646747654163158145394520279 GT 1 -17527.2079913559125067760534597741182873 1.7246341819200624100859220855987139 0.0060868202269250348820576280070351 1.0061054204329790016255697908257229 GT 1 -1.6997547595961359704780548453992653 0.0667387940380967828865737688014612 0.0975641565510161623400740720445765 1.1026576788930972694914977665246988 GT 1 -5178552515816747365.8398557551592237079682941068811542 0.4364862174487102969511541349470781 0.0369318805014844639688100325237604 1.0376311329271549169165087180406756 GT 1 -64095496174.5806909737740681488863976185063021 1.1091293791358597760641432023556339 0.0953406476180560836342560987449570 1.1001968123486059774498589321552094 GT 1 -494247149456071984553621404963.5627352561799421568021052461406341 0.6885782852876858779134605235551418 0.0874442621086168988551082041878212 1.0915061127702639844141873937793724 GT 1 -3304620932867459.4449855907907013690137647483065175 0.2888775951159615980419919145999275 0.0951636273665555451987959415542199 1.1000011553491248074954464900029537 GT 1 -60929707556646131305.7153763314624791456027200009914001 0.2244087797034987825946664988107904 0.0411159216579259472260309971570214 1.0419850890462054834617996918455409 GT 1 -212020368498969528751765048797688.8298560628681628863347148551387473 0.2510539718937736180087290349252179 0.0861742455609388070346746910403539 1.0901153663597093388994937324842572 GT 1 -9651173070611940.7347378774042316560574264021624323 0.5684869599668577554921183100023295 0.0598886704595280972688250113332699 1.0617569750496859755689951547197725 GT 1 -9988641244554528447648450172536.2372338820982290934144114099714550 0.4327509852193697209557934048977447 0.0110808646409979564052831957163377 1.0111427147477851636571235901231919 GT 1 -708594190238896.4363423677657900473350731814643933 0.1900724748652805328486399617141643 0.0982180841277571540737847499011728 1.1033825665647733578840290947707994 GT 1 -145972024990159288364065126791126653.4190956817604189014573685693896423 0.5352876186510599675236601975603098 0.0656816962385382386721697263793456 1.0679381024926880010258747732430248 GT 1 -12462325223029392009819635430503811.4166252865603952025781180422396002 0.6685917546963007547846176543442501 0.0191402620678078807185821064274109 1.0193258083015906771247983563791580 GT 1 -4109918115637308016860060836318359900428675.4846861468001647663416383649740002 0.6583879675133371008960475448334852 0.0326408215550755259013011779504526 1.0331854166668298665352073921870294 GT 1 -43319747894541665080595.6157993922239124756780985813279584 0.4615941158229776303636333049334223 0.0510755885034008054338214281853850 1.0524261342330088024734553254866507 GT 1 -121211095798.2017333784572664557830117823657471 0.1299228472450409318775224860190749 0.0143662242201926277858174888479859 1.0144704175329495450375796864852521 GT 1 -367738961188124215815770.9085923273838287950970096982396842 1.4640601448082602513304092333778502 0.0046458626537141508093177062383178 1.0046566882160097924956296028969849 GT 1 -1.4115059881513445328954920618449954 0.1322184849875579113655928167642234 0.0913549556144983666094757726556133 1.0958007512907902890896171747353337 GT 1 -28857466177369894.7991046721242316413251093508413592 0.3264374264020402460080446964217989 0.0733658657795547646220599063200067 1.0761964685381816710587990801703366 GT 1 -30630054987197790965811287665761.8645452750267747003161131933221215 0.2426249974819210122544876216250740 0.0747021581421190731572740341599925 1.0776396021000432993632348377732286 GT 1 -1321335234558093788938398.6548289124092780445256506263055207 0.1038600251183770424528732830430894 0.0723057976386106171957591324250387 1.0750531238181433056565227375754379 GT 1 -65688249716338.2735790149747032264114973588538730 1.5337237357150815954138813962777452 0.0193905666049573544360079673676820 1.0195810297877777877717340411200083 GT 1 -10078018866638510747567354703668.6583926553502036834685776307699599 2.4907341114299301175573493490457246 0.0939890307877732795571328330379472 1.1035750922676491059636535053532709 LT 2 -835993875837.8632884232648792634468876918608670 0.0107963206807514378881119270976064 0.0201556911079739172376668414812609 1.0203615884159771592182509723351605 GT 1 -428234683291009634066045331161180652100.7767016076380430487245483863846995 0.1414598947702173501589664349606275 0.0994534291666551460685663116156357 1.1047533990644684419879574318487306 GT 1 -16452651625641719216607034438261177920963.8263617458327079250152865620143840 1.3235952775520130535189731236151279 0.0675349900270955497749245254680127 1.0699236509854256070396958048067841 GT 1 -338504.9894398125505977719525244741206134 1.8130073041984824581746010204175794 0.0577814412844920002819565890866036 1.0595180156956774253782832245640545 GT 1 -3367883253912060891941038026182126464490.8497164801350098858818894746545312 0.7824297362943769014345972348010960 0.0585106429195551266960351675545128 1.0602922351650260859688132257030381 GT 1 -986767533194149388278.6833983697548177988806707582967131 0.8325495095942755554675216236840763 0.0582953204844077761699463626276505 1.0600635572572785785158201565239832 GT 1 -518.2672290345083980967405108337175743 0.1662340396901144708812214701012005 0.0817336294197417347096635808887191 1.0852677664203048464251436441595496 GT 1 -617948835107831.3525092338752643988118004348959022 1.7776170230687509625005454192640407 0.0730937162850219377762416320788263 1.0759028148429559261850608296900809 GT 1 -2796457572359562604613091106151487891.3982965763386612216308922136828601 0.6571789018821792875586333116823081 0.0731339315873549448187078068116678 1.0759462023735695525961932955142486 GT 1 -27970953596768.1486188664435385435827142634608542 0.1247404268746290640307573922415653 0.0993230485002937118930895879311977 1.1046086300616516589128589466634629 GT 1 -1108394.3344383882374666381483816615564883 0.6446278402989292923036510553718784 0.0073749214598673764132812190930587 1.0074022506430954629689239690425278 GT 1 -176882432328402259551.1222758790518942826721466680965804 0.0562202668698016166553676878728122 0.0852547340582586310299807970249791 1.0891096503443771725479398439635087 GT 1 -164321790179255762.4288828784954143272550663745098868 2.3868779159743907362610069760261487 0.0416042481444825742834965014055895 1.0424944841688420005631529251913080 GT 1 -342543386034619856322500789978511764641214.7355973075071046388192768452752062 0.6588602256003548025785897930953078 0.0796383165442785125493937695185810 1.0829885520050479270000410156066947 GT 1 -4484481298530622.9515828497294816189578367753242035 3.0330100405541217846546842265086370 0.0810302072263006082904165102119054 1.0845020268362021900131130841503483 LT 1 -1737204763223706385227764050.7235523147300572974316852934414606 0.1965666519031662297753927682549848 0.0422161820065772359093573997611405 1.0431331861908509380102501770739688 GT 1 -2013450921042461928310125.5405924889042079389441456776059507 0.7095937401665909862174373326389205 0.0893105480834932832840716341581706 1.0935533268664510879159399766689443 GT 1 -13052304827268573730.7806679137037837138140870986894975 0.8861268015573436028003842372150711 0.0640796345914066233031987958068734 1.0662248858157010131988889125359452 GT 1 -25710225215036021591833740.7826498849574759008628326042728902 1.2573084696871799997651972801086791 0.0792012793000044117943920342764340 1.0825138109107946384840828198113006 GT 1 -2725918308491971951800476268943674771.0522310431497007184655430871591289 1.2713914307977497043996722813589385 0.0666710490294411829120302015833766 1.0689975668866618051318227683880576 GT 1 -91838.7173337233267629968617035795812019 1.7786314639570936901350941360241560 0.0001413778380061263449490913210468 1.0001413878327947048212266536864089 GT 1 -24915679212842365973905315021683223343.4400806839911250051701603909739571 0.1421659803307474206244373231694609 0.0022183945510343424144586445888598 1.0022208588334012984858932220227263 GT 1 -2299341280577044354251264624769.0115009328678425804878022616541491 0.1544246366120258456347304716422310 0.0146274928562206108625997486402609 1.0147355294606200158707636063912660 GT 1 -2772989111547619751653030441924980098211029.9241568774008668602520358459762781 2.5697633707353671060052725823008554 0.0660364147309550062450840432060420 1.0683178294479850444471299416084961 GT 1 -12928.2474718704665752585893955456205457 0.0242661533671270716054098245682395 0.0761132178714512118033971937487149 1.0791657450117949285540819403077896 GT 1 -416235422506468074.6849153422366817936428096905054942 0.0269696696608450542489291996682651 0.0470542878378627261560526958313186 1.0481973421528880203421322905441879 GT 1 -1895697153232182093788167147036175825.4228514194500549104473616052554485 1.1070525507601687793828378004150534 0.0051839565581340952966513929509813 1.0051974398790851143546345142002135 GT 1 -87811131147.7957438171079372986662171555392786 0.3397132512305808816564979928967458 0.0392372415165132199331083800131721 1.0400277699131680842754574433209671 GT 1 -2060317271502632.9122795824810826843102521680744554 1.1305575187060201972172703087437353 0.0781709758422779859734822176968909 1.0813955127977050935445912875806900 GT 1 -247988824105.6464353617472396854841278126118051 1.0332346872665914745069568150091285 0.0086232421974694104981147539172360 1.0086606374847461955896283392175878 GT 1 -10522844551349545237717500637974618.7913429784073574791122276708243897 0.3828694291894393507303973301198019 0.0412942724638463038556141370050510 1.0421711046433763770686261150815285 GT 1 -6655.6012576106490008983478513691204567 0.2640867439022916877839930808722987 0.0998802312527583997119739302044786 1.1052274481258790469949157181666504 GT 1 -23244516909.3904248249096803790876755104205136 1.4591005997212340593777303390359115 0.0622929194162798382645716108807109 1.0643176595733139796515608469340485 GT 1 -29960706614936613159786821475921637379974.9905554188169905198046711871201696 0.0973528315652804843050287224448620 0.0130246252026971878297218702460634 1.0131101894067062500252149981946493 GT 1 -1.5284459617806306143264387114333999 1.6600289695450715433211880729430065 0.0870000052623771660593253245261097 1.0910194041509990130215423337302472 GT 1 -798113657581249660449.4510955739552057438589417417023917 0.2904255961222175006532894972172579 0.0190396258674186478022911607114491 1.0192232135735025982419507396036976 GT 1 -39263658648012041831628258116810564797.5099954798433693853338582570073498 1.7055710668829844136707615413973634 0.0363962780820207734890476529771282 1.0370751457354107217039679167714488 GT 1 -87.8005970704356972559598018667851407 3.3827371965840076817461336884360983 0.0217154230489432269457706381576167 1.0219546727957833142096296801881817 GT 1 -708667.7585776685753206858264501924886884 0.0230865597535306931520534213302916 0.0387880278310028019453479333863855 1.0395603197573195630117005134166097 GT 1 -1.6512071929992625475132027190532546 1.3548794012976891615576390077471447 0.0058064442998182420782121281398350 1.0058233672373805235138150981841099 GT 1 -12829265504104293280.4739636669034590739563710497521007 0.2997845754290702475489434541887108 0.0557170749874399971894516832016712 1.0573294490405711579658067176681636 GT 1 -182248695978671460605014713691.3471202210624542595445404832850840 1.8658423513103502560307001759861913 0.0535490887900042760526330511474942 1.0550361731642504697923156639029391 GT 1 -10104040819464928694.4982885659623838511637725440551922 2.6382545302579968484056770522328795 0.0026661868364731672106349560326752 1.0026697474428326850962246141983340 GT 1 -194427714750184882545490764649958840460.6065225643287956546254531127533290 0.4277524307545774565064591276676442 0.0908509835092898499988958353367052 1.0952462637072209492951198925008992 GT 1 -1693819788428511413760843344.3026939208492994672495710889229988 2.7048532079899663805261291069909247 0.0481242368984995583645129353002638 1.0493207536505628666321287374468422 GT 1 -218142126749031696994211663267.4674543251734374395541340613691826 1.9117712930871723458999033476048305 0.0213959725606622926355744238313165 1.0216281846243034784913499311331365 GT 1 -1097951557762383804802779605524178776969.3037755768345434710306712479408474 0.3614933118974861472476870511559652 0.0118918978642244423046498967883188 1.0119631721024848412252684436678131 GT 1 -373382958913347.5174840380645611377696700355927773 1.0060143805484598488299425809150650 0.0128701132578620335952101182578673 1.0129536506970832572547312888265208 GT 1 -4290750523.5588747812501504442092972465051343 0.7078199092897201149451166403872027 0.0507563020837934635874880408561672 1.0520897189060045049402675579432816 GT 1 -17368706186938929169971945183404167428030.4344824814445672736466960305999580 1.3974466653227356823912251159507636 0.0116860479830686556821992241700928 1.0117548665116140954090780238416214 GT 1 -208713925535472429175038021523011.5961594783327481404527115889970951 0.8033828748273385633204122707314551 0.0454997510220565926248128864291730 1.0465673749699115571694915117844168 GT 1 -137967291595660756793680.8091747570579375487529142943320109 1.8959881894202969211216875499891454 0.0233175543133828470221418771029755 1.0235937097765170399276003733601844 GT 1 -2429311748158753702480196485822518227304.6707717590448802396384545933024393 0.5160433008507610695640969150164496 0.0664806177662960827597733033004458 1.0687935532446122151174532066367301 GT 1 -60288445972246.5134695267832815791126094050106866 0.6814209659540248077967232621915071 0.0662940360157382159681640506224962 1.0685937040388837402550501087767624 GT 1 -14355457247976472617116620.4321306539067650615422041629048025 0.6447877035226395821779865716855709 0.0784512353203825552692555270427171 1.0816995844665307495405928485586745 GT 1 -3.9567810662229107470782332754534027 0.1627884136006269103574462788581484 0.0116119584232810640539533351992079 1.0116799037098742219938027323101614 GT 1 -3771450421809650368050862189583981458.6935042436753771189360138202692308 1.1247170179493232911658543146811477 0.0524753297563871811659499444972812 1.0539023051680924155501580212374885 GT 1 -824032669879519.4236362999137606064919024249485276 0.6395440160017182808079661368550237 0.0764545450833347256061324663598009 1.0795352602870217066907118972678107 GT 1 -1588994599627241192298809482483115065.8358471876732043292647110685929651 0.9822200365787613845114911881254163 0.0530384387869600959663159440857049 1.0544967766800055282013791698721645 GT 1 -130451223339492803.6405427647260458755370043117388540 0.4927321479874193304535830680500695 0.0439293376691239488019051667922926 1.0449234540902370680333428477913201 GT 1 -1163923592338242530923467872614028143.8885868464795422400169345939700777 1.5941164149948903663345133554508619 0.0666120264158882661696202046293414 1.0689343300746993635139223302876425 GT 1 -2.0027676076117502007014853932027372 1.0652783787757246520477127670954113 0.0764081680984722330428509665076272 1.0794850453027829066685483365563408 GT 1 -1819434323028690079691383880439.6688291642243742949553603489963469 0.3335780850195683931809117422029363 0.0108757212057372304219411986745236 1.0109352941881266825914584599460605 GT 1 -4513416638346828623.2852267886934399413120239596244843 3.2159593057649564470627008654477536 0.0891310817638331061891255193623077 1.0933562798509049198737587543674512 LT 1 -957071610958839875341.9592317901446012866701666605408686 1.4549565046055475179949548552637583 0.0619391436208491680256271621153065 1.0639404532114244370903733584468531 GT 1 -24877807081181486.5443237155755686631256104695300634 0.5205945007842422655534308311993227 0.0597426669528625634201731801729242 1.0616016826223403390238932010484768 GT 1 -117726404444.3603398931085420403514666385130329 0.5413589646583386465825885734370925 0.0747630040655651537119714289271319 1.0777053624653446049986946371918985 GT 1 -26886495025559.8868110687745828418939446336706335 0.9285553182590505743101778676428827 0.0130864616989434168213933376281948 1.0131728438913189576725850642608766 GT 1 -397780773236054896785574679815261658189.1176764548422393781819755055917111 1.2175483312327884137678525059788154 0.0295031294295798127528071195464812 1.0299471009321914571049500894731831 GT 1 -522087785.7897706095411734600757212134338878 3.5375479846340306986636461948695864 0.0153501108222559885095187349554932 1.0154691434538349673923133899860436 GT 1 -50922096928979434801969262709607145.0190916833673031526638357814082514 0.0132218704907341683582507221182669 0.0245491725093273326987832059801436 1.0248555276823749838391445782487126 GT 1 -157746375.1955497099291439489342344955095671 0.5590105545858674076141240603725327 0.0903876321937807279547851375691748 1.0947367396657121830054451853935052 GT 1 -70362174857864357881030706667469.3915042128794324649317233517036379 0.0051401249995912976021298086544397 0.0116284277190794065331343000245223 1.0116965666320457082555781682458244 GT 1 -1664721853450398818795131682.9164437721251169150627092348052349 1.2272444457317508047765676980304945 0.0965011893306904784854690898995605 1.1014804853100899196638425017432568 GT 1 -482190.8831942069433142351191720262868089 0.7514065525604741814436072705440504 0.0591885150492958859850622332294256 1.0610124942691068542588949242550670 GT 1 -64433002405346559553.4803535323884127922271795655132839 0.1484528398692409980607390590651319 0.0030643749234957441025511007739397 1.0030690797343263034005036041468590 GT 1 -513771809236748318168562624162255315.9004072922688845817210288272186410 1.7901462659467291702719548180438701 0.0790670501111577906683792504500239 1.0823680468006065660289732221237243 GT 1 -1230.7651273327765260509005679501254288 0.3031388243740337947183407385113955 0.0916444400376471089681321203441051 1.0961193911689558273839773759669144 GT 1 -57.6040731487656054275287244323599802 0.5533349895767929584864948204447700 0.0961921662124111920245660468582198 1.1011385144306726259267506918288737 GT 1 -188130.1928025687072437088825753982576285 0.5224285244575086287312049493418422 0.0720613623014610916511695273142023 1.0747896715518475367053827193137795 GT 1 -760062985424342375.7612922130006370586760827602262855 2.0519428387868112489949487927180546 0.0325441618253092740577396228341248 1.0330855004174557589904997731164973 GT 1 -14664465818070158706500971.8824908892605318058058868733525482 0.1748728543899273285958362048281055 0.0404928734454205131091514904294801 1.0413355361991934304111764480026968 GT 1 -15435269242344550131925391745632.4109213334304409244039259394388717 0.0989362463539396761374073442985960 0.0871598555704746941991113017764606 1.0911945019649608102271728676733582 GT 1 -9546485192410861938849780322363515382.1101724672238742413869058339755679 0.2450506073630422735809732478604603 0.0570078712472209131886163752656002 1.0586973434113220342666980607845930 GT 1 -16571815646773284632568057659.5546199042078491409059604444452621 0.5581071715338774788832161364071252 0.0177862477279695012729098422563216 1.0179463239763054079500697612952107 GT 1 -818370796703563621352237644355945597716505.5596893957766125744937720377527446 0.4491888977018993506476911858624251 0.0164439888539594865379066181237439 1.0165806919398455552422334881807998 GT 1 -95670344825259810719.7706145097652014122808780193893248 0.7021812717812246528051421322272142 0.0162396068672714847755318067655762 1.0163729144954255574344807589333561 GT 1 -161202448852390120227962359200821.9241518862319783523253287049871516 0.7181341407061454782243090385847777 0.0363178438542491866961412145570268 1.0369937522808043005917082553571644 GT 1 -2169006584139089.1899022308447660568791665098936727 1.7178815544203529879192182896152804 0.0082349049607995781928270800124704 1.0082689990943032887674140364166190 GT 1 -201502916192027683489.8368460850681952323913886458365487 1.5051811213065732035567356053000602 0.0496285913714296035545859195232843 1.0509024143399841445721918579776628 GT 1 -104081409980068152987905.0233137797880292472545141752191886 0.3544787239809637210589134758622488 0.0914838019414068270777850174213438 1.0959425618512566665636074015135474 GT 1 -10463102058138385747.9234955578345799402127212708677370 0.1509934854869704719678855614516031 0.0081495874273260257213798589113152 1.0081829768453354132436818965222226 GT 1 -4171497530018888440661812259513041770.8058561450598240566091836133844924 3.8741362845498521797471808543060370 0.0660736644711430445116758874189055 1.0683577137471380312869274505650863 LT 1 -13732351509904628.3050274264162641219044378015349303 1.0640059679616349406990531177144079 0.0692015839198039208594429978035794 1.0717125492312152339124161648255409 GT 1 -158045012347.6686338070221500737198023589003366 0.3028989534649165359724840260116139 0.0659586676409241995930534646910316 1.0682345886713232593962712778899684 GT 1 -326569660078318173125983185.8638574924381788452608678281243158 0.5654576563487320067498827041795579 0.0158087550203638374234300020304859 1.0159350461602008126310813038010766 GT 1 -22546578768024097147.8930295896846055296978094906829959 1.4846611954939107172217862564249138 0.0981437496904108471051917676250035 1.1033001393476272995309781625951369 GT 1 -648823113639544623521376954.1232494281826367250311770333937422 0.0276664690781531620044146533292157 0.0047159381523252832807576985743333 1.0047270932737128481004380136651781 GT 1 -11613831919951787244.5512934540357749144617872446904503 0.2511426256270211005768218134060636 0.0196249140895753493093633585372893 1.0198200398191436674094383960383219 GT 1 -1520.0311777537461109710666451482212023 1.7250044745594739648460038383441197 0.0971058577975628342352916387392916 1.1021499614487067740140855202020571 GT 1 -4691038.0639786071307707778441927675896825 0.8027296087081586097326308657403926 0.0744378660877032785752511728218214 1.0773540137144582270297588196169442 GT 1 -35.5709192859970047455023350323052689 0.3980416888189015669783905093912853 0.0185747207917810716009619635414459 1.0187493973452359646802361099352462 GT 1 -693365876869129424962901498721247466782481.8232378888850252371016948492385385 0.8496227339433251032791908240862519 0.0812554065853321463306438587964761 1.0847471131911345120237510874899965 GT 1 -140522188413038822080936613362502198.6998261611386178585742527200251603 1.2835273633223020541770519209042763 0.0329864458462755408860457040227124 1.0335427669220867183482526932379636 GT 1 -5562065.8121356401453218781809071843321678 0.3131287869550442090822551703185815 0.0639388369310282350329869394924714 1.0660744594802890459237699669861665 GT 1 -21387548054636.0320784601549750237145398701691276 2.8997351955002863751094149266728765 0.0234207577927109106112534333609444 1.0236993827440090503704303876711195 GT 1 -936547024702976517232004314442093785751869.6817619612961415593091907845119089 0.5807631132077725085057551802334715 0.0566278327411437083158842849040657 1.0582944111547876321054249139266322 GT 1 -255648.1554413430935189563929041505594506 0.5043492121503061775986759347083030 0.0169510862025431818326665606345019 1.0170964003603734132915390313320614 GT 1 -552281099379786768313361961127778869.8344800370877002870640964972082066 0.1332006384501769404098386058807189 0.0549972675979214073172919464170133 1.0565674600618034785082283937162341 GT 1 -8862956514376028.4623838682904601786461580134454507 1.1500947774259309658446749009542900 0.0559368285538768415716296594033099 1.0575621961708149059044653427491447 GT 1 -1402337598089127693863754697185528434839757.1755282858436321972866928311092849 0.4409130898527453068700917790567862 0.0978178203133223070042157703250578 1.1029388062682256933538494781242863 GT 1 -125938965760930759200442177285402999703.5610111178077505914820860751281663 2.1823544501432728601254597429227029 0.0028973896217783879731280916258215 1.0029015951804811064829452686784167 GT 1 -907968431960625632690910573617140110.7782140115144401275121693153142977 1.7931370930196921774473914720887045 0.0411527305069566349588119821852874 1.0420234769560415098845030087696783 GT 1 -156688.2209210552180260531470215323491136 1.1456991499585551751023415273158893 0.0542489993005115939866177703407330 1.0557759573680637286719336216904253 GT 1 -5364745463570122741997672086613817462.2014562004620728593138876275084956 1.6177799982677688377594741958807200 0.0589799249103405804900914559934856 1.0607908058414719089143499546465813 GT 1 -54.8644267361707907323497855906259603 3.4935222077886760407306171406476741 0.0425798935642189458622497754143479 1.0435130011623793716888301239455625 LT 1 -6106137690394113421356095746721959134.2465821374926588895981702379770020 0.2564717548617980629910817514295740 0.0279102864386604453276013337269634 1.0283071808782746048814396249184021 GT 1 -278069213170525471332865859765696.1628063372115588642865893289154989 0.3467100691712757324254471383782899 0.0616559454570854774584106060355683 1.0636386013411105649488139193592326 GT 1 -10509282080168567009940324146129756389315.2624865661567731445769388924233292 1.3211847305601028765724144842133023 0.0152073346850787180458193632194329 1.0153241520326821162047030889514431 GT 1 -404189581849350613371722287945566.6909398797821560424547806430011369 1.6901145918759546023552610698110653 0.0105342479925712740085388718698551 1.0105901259509068794430557857559005 GT 1 -14822936876.5194196051392364154353738394708466 0.9389316324031500101355226139781558 0.0677268132646019664390220727448517 1.0701293884326679622851705430185283 GT 1 -7661879130807955576234.2302046346946348231197853640317407 0.6961129267040429449442421804468787 0.0048573181037725443525644896640182 1.0048691532135015366895106305258987 GT 1 -35919.1340864912644098576018425556465401 1.4486134343109906636931458921129345 0.0525283043194235275384203408133945 1.0539582151043885838175703468107884 GT 1 -22734312114136206804313456858472166069.5157133433003306548283129533057284 0.7800809149159944941456311362878050 0.0078552909933413012422059144102424 1.0078863063213585637185284257702175 GT 1 -2298449771486312531149994721180.0492040550471168769230279080240511 1.0274845965122853655370074816675913 0.0839622622572653385696000160986481 1.0876977167475389574720558343972859 GT 1 -73523241324250019858461421870040.6580953990772135336593300747912860 2.8088570384092679509848511809654653 0.0050905668374994934245726145882027 1.0051035679135287823970560638561969 GT 1 -25575528107.6401672475945082171871701806789841 0.2447342806338794045673514459074605 0.0178106131351406757502350428176445 1.0179711309079244742293210267228489 GT 1 -14238420738.5942530566579144041443802410512943 0.2529601696080196827385801005900724 0.0533257828686177675185149217374519 1.0548002606837924854897284899138786 GT 1 -13530604507356633166424300910185.6419104195902306434357672810124872 0.1598849961694860202123014716751626 0.0981832599632310812483274522118121 1.1033439502524177146336700519305000 GT 1 -338204.0256347371609380951895640020424713 3.5364800425543625918479174143246175 0.0726361409876411358165406670905334 1.0754092780101881353632688946247649 LT 1 -223916833.1297105886280677811430259655101432 0.1221198171508126729442977912206787 0.0320712733898967599923323544003907 1.0325968239513646266406247935869477 GT 1 -24396197404665507328585128295130.7625495271409420191892566527077510 0.9633467152782149920620707612073922 0.0180291246274416327638269856472009 1.0181936295475757097219469091163222 GT 1 -35704445401987637437588466055286965537.2323602782251286635834459978279960 0.2791526550909672412862996639420210 0.0029732929566657443312721931031705 1.0029777219735239543867360105168186 GT 1 -145031008694443656573.5396538404843419751646677339744427 0.2693389906379546422497835693183081 0.0142198285713554968880146580746652 1.0143218991060473459435021825780665 GT 1 -18057091462344671.3550719313571535211685072008036123 0.6356433659644244052915603849708102 0.0158722740674176599061985797090780 1.0159995875765205812656231970162764 GT 1 -1647992.0715949224180319089457788368463246 0.5837115496664877857635680457373988 0.0364218945844540572183376673050670 1.0371017301521704373489993293858515 GT 1 -31984365447655682700526341320227528.4513575149914164698312302790501902 0.4976838411863742584653511346802240 0.0253278082721745782872432156296559 1.0256540781292449117364299310301312 GT 1 -3901630653340716332436676153674429247575493.6963394770783010887078020045119850 1.1305878012517050726450257505143269 0.0142975626668261225706155761094688 1.0144007576211216734741298650958766 GT 1 -1521671825490469274639760390383276623094.1558509620723808692373578615392217 1.1785095541736702268230598192681471 0.0328955138057012290083470875556009 1.0334487374587919672879637941798410 GT 1 -2205039188467399861021564923861478613952.4180825240349670440822176613950956 0.6251701474577166805161795441974717 0.0571752961131421653091869936831641 1.0588749055832820625925703269253610 GT 1 -25.8642790872654425448101308520193727 1.9345628181558480464610996754646357 0.0657943779195289130697216205021374 1.0680587128627976570179987923916449 GT 1 -22032357736660293456.6044485026721150398797307722291877 0.3309536879094281095266566676320203 0.0750796661444657810366131551408729 1.0780476707403156281986870958189814 GT 1 -1718413713976088806619783310440191091747.3932997793066906310826925578297546 0.8898789064532587261543289500310886 0.0785638251865076410554853578584295 1.0818217665461044636373438890484250 GT 1 -1316770137090367504981.7330453721042228325977364566786143 0.0915059661522370059249903894230307 0.0027075471853308282915905287125393 1.0027112192208485083442286332847995 GT 1 -331167027.2185620039332908267575230787229852 2.2567888190577014227855398166256056 0.0489845468037681957577667555208152 1.0502249671510680459822714578991780 GT 1 -713951627460435811002031268620897782.6243905803665189366116072395015502 0.2803699760888044422073130371671171 0.0899331918976144018104614383626298 1.0942372666689000132223316939169438 GT 1 -759.2124313575405144750407108990858248 1.0082902977315280037493313247835469 0.0402278900967227779840688329399737 1.0410594082180764646362057716187019 GT 1 -3107547175664787894768206338755466977.6561532554392482667774228561055889 0.8460162692617821018663404364038418 0.0921238107909362360476631079024605 1.0966472651747254631010032899186113 GT 1 -2586687521179555025896686823253033901874.8701821352539136525770083951961066 1.5256613115957122984157026074942332 0.0123704418830484118852108564496357 1.0124475927194617101823193093620403 GT 1 -2568.3926338646561425586841657464201961 0.3907044155191698531257424780815929 0.0949537695382842992150905683313882 1.0997692532038112415431294576065191 GT 1 -3319774224592072216094063126.6404967880990929768502733487744259 0.4439028590668499757250041112322416 0.0081741409241087817048778167485600 1.0082077323935414764812424762496543 GT 1 -101415461729939607.7022918191526263081882509227083051 0.0487308809109003420251215885739281 0.0770764798112000997055538529098352 1.0802089079461700653568926045841913 GT 1 -16148290146539491897163864458929548843.5648415079519652778113777901854894 2.5466057774269679071525048959624226 0.0688602217971315925070754113074186 1.0713458752701298162681762086155150 GT 1 -22886166258598090773.9211807053859852414643944765279617 0.3797598920684739065635250574755506 0.0954596654628516690428676489240007 1.1003283819545790484771205707735729 GT 1 -169695811663237523200.5576790823320726277780929388717883 1.5020793447001280441629955817770597 0.0224116557038490787896853649520217 1.0226666134098693838069613956358576 GT 1 -2.0303114693101027331228763949614355 0.3105248927098353446566927535863310 0.0536573061497678013533703455324707 1.0551505198733603573777084909634151 GT 1 -26380937249103742325912895850928243895174.8733059753929400522055503996261038 1.1018607512818220288508447175722439 0.0514447578407918966207331466974982 1.0528152497013489723235243500379075 GT 1 -7328954744261833973850.7478272733034261332449621924160191 1.7582040509351960423053365466587514 0.0529378242224839059607632745901780 1.0543905324312077792428484888630918 GT 1 -2900352712433297392668165490708656155.5372700936734887617838425126750636 0.5363568036434408896557983377205256 0.0192225403999596437475985591157342 1.0194096957118656458059585645513983 GT 1 -1.2659264726651934684866481888179317 0.7429686817193416754572022355284188 0.0591032871655429839596097131914605 1.0609219086151659315298539677471787 GT 1 -25587207201.0822524808112475631745172633856807 0.3641810699889060892147698287914261 0.0375199452762614297887965825397576 1.0382419353998558738603984760641023 GT 1 -20704.9220910856899951678240581745859792 1.8654265389231586695861429585197580 0.0608839036393392617833484837859067 1.0628161691196951201810970910831714 GT 1 -508548699062.3579939942145484195830014300564597 1.9453687245603108600886059365593804 0.0471653337289971127257167234418029 1.0483138780271332540330980546040043 GT 1 -246301116059239875746319987832.3329407008901951730643270362926954 3.9720575378157921318267708688413285 0.0714041210472231823272865035638315 1.0740816413204678150444090323311024 LT 1 -3380583373861593087369.0010823903069842862725682095341517 1.8074892425862597750798332339801690 0.0875956708095704208837779017856945 1.0916720437448995298627929064143076 GT 1 -1050906090.5057135930992489983833175308108903 0.5222656990902292945191411299052726 0.0989959411620387490997099932167532 1.1042455165693384028235770118095612 GT 1 -6009144.9647568896784163452902725858337747 1.7782498413701490547811595025982953 0.0475085091401265219099980783816145 1.0486741055016325885680308830818070 GT 1 -1779358789.3335138367746722307105100843959991 1.6192418434932623925279495995658004 0.0488333622354054220650066936582700 1.0500660080594021667563302511801973 GT 1 -429945933953838511020151526205585560979.0864523925953064407879314563567017 0.7526218194936753601481458177385061 0.0623862019721365299811871092288779 1.0644171439410267632372540052282846 GT 1 -2682.6727901587415733314654126236166222 0.4162899784091553332822972612444092 0.0953355795528517802920831450755437 1.1001912101835535699679051530188235 GT 1 -34064944.4388277298893887811039472651206420 0.0043834659918907181279125593270882 0.0242267978196157067580136982287132 1.0245250943874352831046051229102376 GT 1 -49740957293787149845061916306336220797.0444104953302190440068787061974031 0.2542810991041000251086891705497033 0.0914352508621165876423502586016177 1.0958891233081067849993615565867266 GT 1 -84312429146271426906113090022145577127.5437088729745497662807454094631845 0.6692106102086512306811179395041603 0.0401360170897583809735990637204296 1.0409636890269459317344341761956533 GT 1 -5023999829645962297.2841745772720593761582723591648662 1.1313662606423664665236668440341989 0.0899489293199568492128837099149309 1.0942545594195798396916057754349906 GT 1 -131779885931578870577204.3212019513426294743212861523464244 0.7265165637499212918653963770398816 0.0846332350877484713531474759085513 1.0884304580502183110624386853282927 GT 1 -585045611842866422974543361166526152349.6499421035138282893313377279644071 0.0401047328839741470516785387395475 0.0009353259633860817501540770787563 1.0009357636536583073652340744566780 GT 1 -8673156426074397.6514618403715635811394664207852586 0.0038864753219279263608274112587495 0.0472444438330151997609611194866315 1.0483969075296275758889755476162258 GT 1 -1735006765280850546896549383.4673932706567633698040252274268092 3.8804150862713621697068239281466862 0.0255904374653842638599163934782787 1.0259235683076068971811297692902756 LT 1 -26355679937656487189176288.1394189865097643551779112666503116 1.6682626433177763900525272423993121 0.0229922416735891023279159598771534 1.0232606860021928509153300256957358 GT 1 -54395590976989788553521.0324877459532280019473980185115181 0.6306205878610737764532714806738828 0.0844866655966449365838612723574836 1.0882703498143251708770272002956541 GT 1 -2823.6090663075507612935557584883089999 1.7549004807875660652378391938102374 0.0274103741222107864027684814682469 1.0277930474503894798225294938664563 GT 1 -2.8817199133699917548440808177185274 0.0901882781231072755942652786094986 0.0260282948201353544455183326430770 1.0263730258849072101023822855807600 GT 1 -1635494534.0628041745931448546951073333507341 0.0521156821269819589991972439191720 0.0264683408086109344928112509301841 1.0268249337008472577712087593447562 GT 1 -944613128990236624097076877472719590225752.6325158248622641626413307731165554 1.8572450499032066906706495527852548 0.0340854694327803053020780847078551 1.0346799263576849338688105262897078 GT 1 -57673939820154077718067500.3136641352235940343074067296931841 1.2806415549962968773610875517175205 0.0993885281149516535792997021594021 1.1046813331488826787802643678420601 GT 1 -170499896181934418086639048299.2686118742602165904900300014091543 1.9650501116578108600025016033274265 0.0186243914425809814681147653164477 1.0188000093569994763365075490874905 GT 1 -8215011572194086006644.6483473436213000670135655762670326 0.7286363473380234527084245841413359 0.0037376240197764065159741992295691 1.0037446263900299265383603292331013 GT 1 -2619316.7362055362518949523553517363434187 0.9602157021789381837431162609616474 0.0977173334150392321101391229712180 1.1028274304233655683074681092985264 GT 1 -204128857814.1737090947296120545974065196006278 3.3582071475499416321238521150093558 0.0969841058667121385864556801400193 1.1020151242435465424472898881560764 LT 1 -544659555556081156803341951216316640.4166413327699515431675602145779299 1.7702470843057943210538872530761840 0.0499950319661254835025644751133976 1.0512880648918827734184126418814474 GT 1 -58703677652621.6476132055745921777629708465530946 1.5793293089483925042401391308790115 0.0956128044001834669420414355168165 1.1004976965734859149110283880707041 GT 1 -193395913067148530759410775991415386539040.7815720504036551848906845518252623 1.1034155529722748354451229987091961 0.0994937156237436074850235376633518 1.1047981356272835204741272456836173 GT 1 -4382661924157.6058605542865853625418052723677836 2.0153884625269829811766987574736293 0.0668261695431685290078704281437184 1.0691637820304355009684209280937330 GT 1 -2336461342004548222371502594143.5426333717847971712073600215203798 2.8850099264540846676664237058999415 0.0036046289610149186150336641733478 1.0036111412903855826730228364597167 GT 1 -44479067032078140466848680144285879788.4641599260426333478142748369081913 3.1239578722511656521249574129595809 0.0026070338300936540169248377493186 1.0026104380607060564472169699100803 GT 1 -18637582501384457.6153716254674348238014698000272017 0.2603314203199111903719783223290842 0.0351821555674818028266193545054869 1.0358159577070812918159327502825052 GT 1 -21088579589617248094706896.7745040367458781184454540395291560 2.5000742546926874076552636380075340 0.0838706093820396449228795113862469 1.0914343438832791919662054765124708 LT 2 -1636506684113759423354981914015153436061.1797945792653660071856201517006218 0.1845196898192029953829244953152245 0.0199527796356629240250667574735040 1.0201545244330913537646501668234540 GT 1 -301160.8385950059679399207777622491498226 4.6976616121761830563843182977100653 0.0526552802020005705039180823800105 1.0540922395742315265367335150360744 LT 1 -409794246008.3234729806357586002936939809887715 1.6258374234962470339690495299029933 0.0273629158799922442267132281207752 1.0277442528888259980304366321856815 GT 1 -11.1752749836002368363606066474588598 0.4531770572681984258232329852034081 0.0927896385995087049418185998899608 1.0973809247770340945428019718259590 GT 1 -411.4078250652517300512838541386951804 0.3968849614747666696141152416461663 0.0349522504292218405729986264046102 1.0355776974468207286086993979373816 GT 1 -26851665329689135526079.5766748127766734881245611500833798 0.6222750845945069715889781852378956 0.0158816309848282526186192945882669 1.0160090954499868934898519096010826 GT 1 -91303.8527417649576522481944470879172405 1.2581128248586027167081218683624309 0.0895832260884819208924945076538202 1.0938527910088049382194715398365543 GT 1 -1080898070894502.4144317527727623687813142613075642 0.4883675812559594323111281945807124 0.0982026432124382542232871201433839 1.1033654440400766687121856880646944 GT 1 -7022714870294738960727472697121933.0548781462961803689569866135341038 0.0174409721770265120523436410749852 0.0984419208660678012695068503009943 1.1036308134179236465236502790787556 GT 1 -124223479765198149.4398776542231017780517839478736692 1.0072804828440325853240950739909933 0.0479779496653750438084065262754815 1.0491670823428067249054470210683077 GT 1 -1561595745902373346709.1508575986331849821160155874366562 0.2247546200182699386819843031400011 0.0697735145054067342302375205163033 1.0723271896942464537987446490390113 GT 1 -5025204718801255607014955359582795173535.8411913034123901098878138552388180 0.9479675444062556891671626989658646 0.0821026774832231330327413631743318 1.0856697437274896307702996047177011 GT 1 -249822713493198064277194480091758.8166464446427413699111592131339791 0.8441661549213221016933795812013425 0.0131704092134101156609250363880351 1.0132579081666850465250033720050876 GT 1 -21821101840.6923368693318370231803552946110111 1.0403418618394207162177834780699763 0.0943353942332367713283013687914173 1.0990862337876623012132075349909114 GT 1 -65605733421021762913765.8373954282290266274766644140288212 0.6797184341493436224844795032979113 0.0781307666539583155846290624838975 1.0813518948269635192771370921327335 GT 1 -436709510384138112907012126118174008490028.3392278591366166653879107178858150 0.3400006600968658722042037031160931 0.0371038530308561514987468094634699 1.0378097162298909969147568264766077 GT 1 -157094045710426.0392282642916947709588252937839907 0.2392248347640475194516758755580184 0.0636464350340094691127233819886887 1.0657621334821886617809953708470581 GT 1 -19669109051715234.0779651444514543992262500747262731 1.0623986527249227230883359659354322 0.0068096914548817724791452911872184 1.0068329832037092356233072926307909 GT 1 -1663309248735468.1922743592754436310504576774071215 1.1569939131552773376851444653990850 0.0801239640734821415884739765585994 1.0835163615759125927661890070988415 GT 1 -67824917908881447.8809052617941215530406743006887042 3.7154134872699235554600058377995272 0.0257777925243360858754418469429753 1.0261158622673098657341783486661712 LT 1 -1412280791372146277618398.0708115649985157487289329759625311 0.3304741636619174726572779905045373 0.0139526748009888682302431720923264 1.0140509283720879279020056452364705 GT 1 -2430469745738431.7667449918463538301641752410671693 0.0213946087410611649217247149849019 0.0549478782982207158800056388976723 1.0565151977694105413004887748307142 GT 1 -1998820526982903179.4044496420115425041038667138899911 2.2464032670061380342328894065738744 0.0416680849840332549785290645813086 1.0425610944032301539359294290309369 GT 1 -564333881539310.1036815913907652401434559166621133 1.5728709764895657429479398756358518 0.0239753941464698547994728003199528 1.0242674819713321567419876964554870 GT 1 -1921845190836639250635629491521335997569.0970386780707009841765309615561720 0.2064943902151172185162478534296096 0.0760010588953817357964450901576645 1.0790443533317824147083784708052844 GT 1 -1.9843895334694123511055240844144102 0.2688849849966975683345106896056228 0.0976326498171783125442263627357534 1.1027335799846253751562108282454221 GT 1 -12607371617065834281528092440849372058585376.5486043757097550468007811182178128 0.7915462086836483448690385959073545 0.0887395721864125532720289152645017 1.0929265523079133255352440465525662 GT 1 -32602830042568618376022025156295.2537723493879560663377482774006661 0.0469681082233915743480806307121855 0.0268324954852576075742056707199203 1.0271990589767845492341552720644861 GT 1 -155477147558626320347143370659848082988210.0312894956170433556099338929323255 1.4234317463168614331715337796521903 0.0241483366797759681772095997770293 1.0244446884228782734753682123843852 GT 1 -5094499455964753527807698235.6526198893969962502913865121641408 1.7592699346858962399871070831739089 0.0780943932675120593826471561752682 1.0813124394817008345923101990406399 GT 1 -13408093690533388015513681378110.0272170562575162865593694026300486 1.1368486732694010950868849084098451 0.0798422852135169063324553998537724 1.0832101945156003269998329648228513 GT 1 -17760474058380722890639582372337902.5312351235869020333760707178741832 3.1714173660067683569111591780112486 0.0702489961168680754113903107677027 1.0728384664430614601293674784689501 LT 1 -32348408555979388207650919921449575548.0542124815233219814436519090947655 1.2842874967986788406704539100058987 0.0278603734201340884183764559913740 1.0282558360934729340590713726772833 GT 1 -1733212538727267930736825.9183544044603580444360697148160093 1.3718019232279343666091614962675200 0.0998495598472809615027531089874059 1.1051933739015445263492085479805274 GT 1 -453.2996603389884614213732188009253985 0.5310738779393650373319357796135298 0.0498077629223528382718306664030008 1.0510909600399493204767179032462366 GT 1 -1073043545201.3464433464914005555243685345780259 1.2773722278645244722675736844664304 0.0788253930387620159288039556281803 1.0821056765900470201351310999303107 GT 1 -5252134121560215.3835453370793827873225564944033199 0.4485389142974573389437190321815400 0.0417005198577160644915070889499810 1.0425949401116619807298366045399610 GT 1 -113051101111221484353902165851862512752540.5488123461003447644763629851676353 0.0852786226628542782363530597499582 0.0674636603641238838918687926837154 1.0698471581045798009553318062984204 GT 1 -6647.1444844640085544290776156047235815 0.5497719534775299275168996279035557 0.0180965297117728892744168157457326 1.0182622745548356270544541217285816 GT 1 -11141910570099297643355890749.2340798478528692081066753754343123 0.6891475957592212632654204409805170 0.0596976982453075670700764806418310 1.0615538578081399574882572972717621 GT 1 -41187362064.3823319732216437859067342929671942 0.0178474100502004250138649880823704 0.0370923972233226989535265862102022 1.0377978190596470406720323071559742 GT 1 -83124505874865184612887599.8297476024171685221277355614355039 1.3544174151581404939905188295413217 0.0992516279410188914111225300915454 1.1045293366728242482496953781327371 GT 1 -21869914940650995637719250647727802.8276346675968485756119077627525364 0.3138943763462668657494476437657856 0.0279824386587035433532194735972940 1.0283814074613522685629751858570950 GT 1 -13789960584140689612085766231505983308971.5761880192320068336530057078029043 0.2422653013230979224915962440412078 0.0054427841211431023866480614761955 1.0054576500364869530510441222585887 GT 1 -254791037027973674459996860604308.2764399265811680870764512789844940 0.1953431338703582504184491338709739 0.0781015821343799421762822529631368 1.0813202373460855662298248005709679 GT 1 -1136.0401269634264469946433028270154707 1.3645480745608189839290169185859399 0.0735343064278149568254151326783574 1.0763782619269649748670656465306825 GT 1 -171348183.4615032400594352045749435000756360 1.3415537224743600100675822938238387 0.0701847069113266094515318251821670 1.0727693221424019238699786207852364 GT 1 -618886389969718977546900663377.2781333790258698375051117197560419 0.2663432758211983350363137077314327 0.0810761939424786312123117968268060 1.0845520696854910328898563985041981 GT 1 -212409411904776.9940244362817197877413802707012190 0.6254761153982747089521933240228087 0.0724687044569131765819239761595046 1.0752287432443588971150839243775669 GT 1 -829.7689432963810741563800313194325619 1.8325622479241476019690410680526365 0.0327065909110547166185805963910144 1.0332534075365377598860375900209697 GT 1 -12518191935482127326017.7239074623289645798386898631071374 1.6417103747595520385754742404215406 0.0682278473513224752531238044297790 1.0706669655915499262571622475143111 GT 1 -58235271554612586148700370971287.3315709132518670071902250802121706 0.1788775924106352344633504953196860 0.0982600280523131873431825493985432 1.1034290799171721985450115977038952 GT 1 -251249851840883909878455141967832637.6330896591133128266139588929792784 0.7611680344786084588169051583770088 0.0254354062217186004237584909490427 1.0257644782103980798626737609097709 GT 1 -18521813495002285717.3223970610017278315223789156725020 1.1765272032311289534689519128376636 0.0328186881331945637071388093879047 1.0333693017594510821235677552111033 GT 1 -981924329360199765604423481518541080444600.4820724389145682296681710546584630 1.6251811477174726537987360020279870 0.0570280965704766362954079011675579 1.0587187916711099955066995354892310 GT 1 -34197.1025983962665305221575897980862561 0.8211775278564859861882543044211758 0.0026416104978069248547223096399358 1.0026451057074966347849130085549616 GT 1 -6185795726980710673317.8648032701456904001341168789807198 0.2374786555900907763197692931136429 0.0785875954753151031248720440829483 1.0818475638786420256386450175555371 GT 1 -48929.5217593457855828964668761489473219 0.1970832441771871932072359472859281 0.0530720216017396497205724996079282 1.0545322410659485078277887089276667 GT 1 -1484956782411956886761444188513.2916731883964906644381566907825859 2.2357214699510501370715763568561836 0.0769967477343116731019316097014988 1.0801225209040318840370526974230787 GT 1 -140943.7753932823594436564865716895164543 1.0363099789747383156732214420543480 0.0674034527743965916719645998790054 1.0697825969248672729679929418435179 GT 1 -67573050322.5606640253991323544461583580028818 0.0500487366091502714029093637397511 0.0354044056751742036417871761827717 1.0360463387174038324165815082698057 GT 1 -1036101958.8035620511812217702221462468436105 1.3829022405809941374119728218905903 0.0554442171072372016262921963789355 1.0570405330193578924858062288458644 GT 1 -79523494684710758078275581651424.1784973931617228448068859094589783 0.8243936776830161745285393574564738 0.0311256654505161214159222214107826 1.0316203612087362614791751508360524 GT 1 -1319116574642411660238245528150970.7920355197693369340807103016614666 0.3969658096919134524111288753955027 0.0757672158931810038530367633900827 1.0787913082181652211749063437855092 GT 1 -8083445.0192101044444281194339029055861230 0.7759437338683526016927355373640255 0.0171061931537695647617089456569825 1.0172541943285490792865001495785488 GT 1 -25200118026107730597921831285431875880377234.1643885183262711158255625726429555 1.9926695601658951390861043148551917 0.0978322447545987439948434601536007 1.1029547947868577925636537009727690 GT 1 -205795459502813616504252079161.0975713089447621222060259429378514 0.0671369115998933177756666019774855 0.0890383239406561047295436201483385 1.0932544505990001649505728830761567 GT 1 -830109269299704866596749581.1149980390254107713782240302113097 0.2787194112314979917086047551171907 0.0851831170316067184176635369539861 1.0890313616382721038484825393275577 GT 1 -612264901658976498321646.4450973006634701232460129125067215 2.5716945920068867072339285201500246 0.0239108924395867026254891454491232 1.0242013980065882971775879958519790 GT 1 -86066736094909743334100.1792294118728357485133658663986520 2.7584809347996593135059619213873787 0.0086810934055316271896736633976779 1.0087189935997238600749794073924012 GT 1 -8709475800493986433040363134.1530905797257849174136341807970701 0.7992512922598125996962427283298506 0.0814428591665965171006013493039026 1.0849511652294258755401016785070072 GT 1 -232885567306264479112.0738409208473187791971130902521201 0.5034645695338155999554952805648047 0.0899641299229376630627227282273632 1.0942712625809956830806048214764874 GT 1 -27563308895655.6549585307076892780700592775275219 5.5984254043370650741277903314598626 0.0059226277725107092869742619114551 1.0059402360918135578553979522360942 LT 1 -17.5328951375951111787581393395637102 1.2457463614236961347720397430714040 0.0284478017052770443581406822104786 1.0288602820200444885972217879336069 GT 1 -15613401948744139.2092483032376538885923521193814348 1.0009186705892541748851500791217239 0.0302401291612975526351330545922902 1.0307067939681018414648590421787723 GT 1 -33024650092238363793060396700953737808919.2010936017791791524730983593887620 0.8746211889095617751367409170571645 0.0502969686324758612687161781139247 1.0516059418171659955630929665426462 GT 1 -7025264202712194662.3103243438077909081255430965974442 0.5251762320564269141859368868428689 0.0163298651456302619535445446824804 1.0164646669381554580709073767290927 GT 1 -95699327356607.6871532591698217401196785733906085 0.3133088133006705680254124892443545 0.0536737746777302055732257054765702 1.0551679223126311624155242116510423 GT 1 -26046698512646373917617.2942603741807624140355236853554643 0.0073311584052144443106605460032683 0.0556677757252102981090272644711199 1.0572772422558702103277059505374253 GT 1 -3999743006811937852422.7215571699085133585393319463620376 0.3897336493601334892283682107446098 0.0024015934317538214153336914490017 1.0024044818827762646492700326223035 GT 1 -139387240238620225023305373.5179913138657636026937741211584995 0.2572804328831261960239479860143447 0.0748653745229346936294839246641309 1.0778160110034970589440179178302508 GT 1 -2.9563705484333664647844179833174596 0.8129524170291946157284313000912682 0.0345112719156768412038463850504286 1.0351208518742881977357273918246738 GT 1 -345159736662420179.0861704312384747851174198849808485 0.9048273182452465391409137456272701 0.0380309125844390027082226298143535 1.0387729624963857996086404843745516 GT 1 -9305446408194541722837.7736052480634037489491972492119831 0.1446711820669421145265478925454048 0.0616991157165678309692584107139677 1.0636846092551243550655455388703272 GT 1 -659634936166377500673225623836945613.0312577558599982510712928084378672 2.0041147169813618205914058786695426 0.0029066843023069071492928758679082 1.0029109169130220771365464474750226 GT 1 -220183266718559537977178729090298.1829367110151130188523225815645729 0.2559219249166536634147140325534693 0.0215052799861567424091176934848884 1.0217398881607247783466906829952584 GT 1 -335.5330303147315036305520262575557145 2.3142076282030113175363873768476001 0.0613824536534667951438051344135315 1.0633471816280758224876126160215116 GT 1 -571803064183750509124.5601956833225849456487694950212268 1.7391377031195546365248784248852401 0.0226000131654531880969328308349485 1.0228593076159549984735985579265337 GT 1 -26031500222144408362949989992803779840748.2566268092072347859783154470435166 0.7503596424235081966821351990007634 0.0499280117101547733630207626793652 1.0512175201112880173415272165277571 GT 1 -227257845847.5353103813478974845784854315527182 2.6769046891265979781790636024971518 0.0083132829709172089919833263993946 1.0083480310220582632092273478098258 GT 1 -8301706093011376121544299406472694876.2377944140760939820723002214341508 0.1396233856652681356050139486455237 0.0463565008657874371842580393498282 1.0474653680085926959896435965928184 GT 1 -275153717775016906.2896374068000366927820122655518797 0.1237739698933519851378553180490119 0.0744906167297882562331203201420242 1.0774110084243974176016208694504543 GT 1 -10694263169032873382096351382666567264.3645711410413489995448641081547108 1.0303364657918002920940763248615839 0.0696808831436146716874437755683235 1.0722276152879523527154918123384480 GT 1 -86558387099782089547749.3355335281951467889277852138633432 0.7530399718230761449237455811637014 0.0428286167686109038770676654203791 1.0437728197264265581544321956048803 GT 1 -254475581187232490258660.5416749387533099914332687860175884 0.9221783274475251006026623487644643 0.0154018286434249962929220767531640 1.0155216689047594848113829998446041 GT 1 -22285953948235421465.6014975838685170813630094903009881 0.1558930651894903733686666227513416 0.0098886761244876834672120636822318 1.0099378938162409075416364001351102 GT 1 -21443186868727970941877923218054215244347.8936915983810469040121522364962250 0.4538765696889491962431206014140367 0.0326123198054982753150481286331131 1.0331559536397138998599737478873653 GT 1 -119082321.6460987447942252278951111810338421 1.9969022046685370935091162625614751 0.0700305134414544898984292675703015 1.0726035035252018469505009466693203 GT 1 -327.0882747483246367670892359925550289 1.4657402346908770168168219366877069 0.0186574672288674178098836189056753 1.0188337134183143410617907101659301 GT 1 -9716962226.8574379401477635900931835078797991 0.4913608719205768850934452761197420 0.0119411032761270525758981615597991 1.0120129709423006798367015998592577 GT 1 -2379410874606984666258326477393158.3294692700868849282008273054991022 0.2831889828283793587240396050094078 0.0336196967788553397005482883950098 1.0341978336099309292726210275500301 GT 1 -269.3798076197126675102329157003236775 0.0015893752233255004123057204087265 0.0357007867225164479710487948132688 1.0363536453144319105426829336703467 GT 1 -31.4957799676486862172719260147066692 1.2044231617331384031705301501923358 0.0869100842751019987829952241255956 1.0909209194194065011170097942347563 GT 1 -1381936565436462488.0772265911102862151441369080408547 0.0079011714233026563268260930134049 0.0661297248997363933119645794067657 1.0684177421552539452626115243584820 GT 1 -3509772451907995180507779.9616452454601578650093549483259781 0.2958073250515443021064031403949373 0.0096026747972216746977191161124908 1.0096490777796261008995525033386817 GT 1 -625.4575590874609430727629991759411586 0.4340729642189975526654624729068978 0.0343004548439962161427558231119214 1.0349025230086470208745191005091300 GT 1 -43.5886718085187134295370070350899927 0.4451187581697499005691859598801630 0.0983056780068643622875712592193435 1.1034797054982807529446259885776404 GT 1 -24470208296760423112139437659504526.8594612427248199542546764836127305 0.5652863472802644323619487947893777 0.0133351601971852086643954334963314 1.0134248718850560348503711469336773 GT 1 -793162389969129482277164668940727663.8022759031949072456924134459788008 1.1269133084560520594264834347325454 0.0859182638794440175405791391306026 1.0898352846985856574806224717904874 GT 1 -15193787731330207583212095145.2822701312354315979737628758395559 1.4807307221687866973050701143554924 0.0032431476309836449949235486156794 1.0032484180324735712193459957655723 GT 1 -814218.8147860289771765601371642206515934 0.2341946680537377772765495689913129 0.0018804552279061345240217814266340 1.0018822255034689599221086353737348 GT 1 -161249310826948724906877506615260996.2182672591957304416131128746366783 0.5607018413084955213470193408610915 0.0419943636829840040017819274532583 1.0429016176078990033738416392229939 GT 1 -592.8553603574217571730141448926293849 0.3615005681851217141239928974711887 0.0281340580527306828183849845367613 1.0285374038408452856564960615162278 GT 1 -757742416672957853021308133642.5349768509237538714077335668920465 0.5732225756006232234875069751029764 0.0048814488589992590759771418299053 1.0048934020455918573394473648440334 GT 1 -465246.3289493023150895350818714904953691 1.4784166769392744941708682503963906 0.0223087992503887676872783366243564 1.0225614044602684921800399604886208 GT 1 -24.1717175831203485046720058718805486 0.3806513939272143887361990335923753 0.0552148421164142551660294530023055 1.0567977234903846598299616070840107 GT 1 -769484815033630660231093170354128922.9184185964336911404592002834490397 0.5804236096340355679306522192681787 0.0642320235568049762098171181294199 1.0663877216493465940982148443944747 GT 1 -34935234264.8647799666010871824706135234878583 0.3198373295771351675641768208515343 0.0577133046900889735882474271084251 1.0594457032473176516137031864608743 GT 1 -334196473195157052330279156143.2433091606144799182829046590616946 0.4871857521742290118866390182322757 0.0824893721332969330430959499111772 1.0860911156145566049152615105842766 GT 1 -3729125457003611554683928.4098041053565864117750798435817285 0.0806237152556378181689346250577844 0.0974788187639078836309381356767903 1.1025631195368303186646308671894594 GT 1 -8488525640706861628481253.2298756120692417077460815977027329 3.5441472215876226252194088197447496 0.0542727688884155369262281130154547 1.0558010907135132663287334108195334 LT 1 -16429579249.3361536221170639830844927860762575 0.3064986988446699185809107188144152 0.0686675752554778286052213465158677 1.0711390034123528904715114761010818 GT 1 -10402647585715269213398129142779908.3156242573333713257814885582014217 0.1065069251815553431955806855799646 0.0919588558749778568012707761176901 1.0964655884944228078766326431253998 GT 1 -29212350085.4228769845557828862878321035203119 0.8900933335380051174343426215257813 0.0855971414852935299624935888232789 1.0894840403967259331739084238835970 GT 1 -3185539875086.1341637543622069958635017822495647 0.6704819028466334138538777329203141 0.0030411561333196467270679765583732 1.0030457898455796302048632339292348 GT 1 -1698373460972818174755430251328618135.4323353392700614362537244324567398 0.0520180944031112589211519916069973 0.0862434237108361541235860345972682 1.0901910709107626657038856955909253 GT 1 -9071957674895912395119942520673184268920779.8288727358715333622188579932473369 3.8731169224581797553274022634055073 0.0962437514098538085368006185011876 1.1011955914637466223420022709729861 LT 1 -41894054927056837385268458728.2644046237062485639555651558779013 0.1128857677999434813981055786174671 0.0643141521330298260249538601356941 1.0664754914625375196604876142110403 GT 1 -68247.6584650392476482014350872601038364 0.5335468660172655425931238114307985 0.0518960616026624683580634102712419 1.0532911430774646993500663546726956 GT 1 -88077150199084.9963856288438781250043314341952512 0.2267980096302613285922183795171351 0.0145216730290113089938352164524567 1.0146281445429192089772001656835334 GT 1 -25255238.7752991647292558775284345411457926 0.8326236702110681665906285766052818 0.0617718793859680502206868116348054 1.0637621605951215358178486259180698 GT 1 -48524290546246319095461159921.1108169643954737208187912262789192 0.4481529052564928342470568840943535 0.0254502956791481321888678691289258 1.0257797563882292540357138114617258 GT 1 -2161868781226151268073976992105706957.3743175103262986768368357434468235 0.2306350418771965743960517143608583 0.0087250483978217146011178883402877 1.0087633344939675961825161972889064 GT 1 -5960529.7003915059641361054685208905048148 1.1925596292425503399363632172095791 0.0898194394583343367894821338549697 1.0941122809758698583491153894072745 GT 1 -19938270465890397273157048151076948502316143.7218104121949838417097451054611252 1.6148591703416420073382505346787705 0.0281575431029202068906724565666187 1.0285615690399097442901466733130925 GT 1 -15630445845646321867.3161719138145957905276948764941432 0.5827985902506488982921510130198861 0.0435927456490922273672301511964342 1.0445714583672317423284359772872810 GT 1 -2091144978063774934025721399742832740.8086025460721992195311424613318010 0.2210732096967055553096765904555498 0.0077088641508058614330798353262546 1.0077387310362408711640492189311052 GT 1 -1882986181.9707062502259256898381696978687666 0.2925718942286522702954717653408376 0.0220284805669815059863860490569919 1.0222747306054835073143366540242118 GT 1 -10902202905193014.0204397955970123951658688602922239 1.2794869309857944081014867430504688 0.0761395663265526498324172752099180 1.0791942645569771819117653289314419 GT 1 -520556693971.0652231122263323783012184391405107 0.4686017163481165006311468346583519 0.0692163910247330197979578832257854 1.0717284573187774460035249687006498 GT 1 -151866281491503110343.5422171924120705536197593418560920 0.1822427744060681047554707484931479 0.0643287977483321808471189946885548 1.0664911438633465746179414119255613 GT 1 -181099572379398271321749439398650.0380988181771174443832725715215750 1.6257775080884144286461984356719759 0.0284531402118845557177286402041848 1.0288657768573615238258553694139382 GT 1 -1413037074.2570626062765752813928364175170323 0.2152167176651109277219630603196837 0.0066613818455248906180657437370387 1.0066836678752092572810341820977580 GT 1 -223376944434600337139102406607455.7019165757904762717682120546295345 1.5265378459755910816276851929201172 0.0578139275382281262212776728278820 1.0595524947594643239554464881236510 GT 1 -457728523907809341.2137138853560498365405702916832203 0.8580121990069710797112975538348855 0.0341746178833148489935432454054549 1.0347722249637368961819517081242443 GT 1 -42107666642819663319.5848998431268997297208528996680510 1.5394904551413031888786343772760571 0.0632071239299848290624254729992222 1.0652930712642486588900789115925563 GT 1 -403211352618088796490274236025294357496726.7888951840840626176419791073221905 0.0463411201399864447594633710625780 0.0795388468381074513398171003644643 1.0828804810877502672678962506966131 GT 1 -99228066193692341.3188380437883364061327140429858670 0.5791420287658240695678000072229889 0.0281945248054757669515908392742859 1.0285996229507537992334822129623703 GT 1 -22584586624118.9361245282477920420170522453206923 0.4971584066572063687468529389219622 0.0435863507947543795940542239541948 1.0445647720597724471794718218576251 GT 1 -165280582366198533936263986.7589767414118118645794207351762849 3.1149844460806038744378891311142494 0.0883201336296346012468002038152474 1.0924663742477563500016628375902259 LT 1 -30275044.9251302542695077620375408253939740 0.0735421562423131132909696951667173 0.0114598737353380025644049704206958 1.0115260441102013154596326798780681 GT 1 -192747217190129370843739473377583308.7241602460350422017600180926931202 0.3909235208381658546419090496367283 0.0639693851446068161184493292019593 1.0661070948606069510451686482771169 GT 1 -103869176210193722697956811370535600120.4978344427565466668760548652759659 0.1426114672915996833218524301819956 0.0937595140295513742168892353989337 1.0984505711078643865917827750960013 GT 1 -1539652503585679527657356.1610710329730643135842703508318793 0.7998887035793893067130781894407265 0.0975777818085603454709331550580265 1.1026727773186566268429898448613107 GT 1 -57192306024076955804666678649280813434.1883666205663286600673245399875173 0.4495713526815455924621986123203987 0.0863534185451857675944714124786635 1.0903114546739364659130599273642788 GT 1 -2203.3818131646988272575042332253590509 0.3262249477457375693008170793258807 0.0151954456968207448824959943324030 1.0153120795255322301965751991948127 GT 1 -1972412333229566401457842615873481061806.7706915916766858278358220661941549 0.8214655848495658447111882621154382 0.0912652713754624022981847470720586 1.0957020550904246106204265780767656 GT 1 -67336372757353811.5765065602470088443505821922543213 1.6949646868216430360979769993614017 0.0489168467967626619483562206935873 1.0501537826112062850294041201755975 GT 1 -29880346687201560020213.2390298802152860809285359431716064 0.1979068099300956730306594187806223 0.0800611463471888227284385521283482 1.0834480745686995001860400374102459 GT 1 -5275113638018151305726578.9607825458166060139573495535210461 0.6783989224467884001067379467457256 0.0667873711312116098323996234293389 1.0691222060623195224967416193486156 GT 1 -500934.2959919494314785681074985223811084 0.1177583260201654894053103791424104 0.0623695346355810768472937585073876 1.0643993677644707116809989191532228 GT 1 -11311264371165937589.6216888041064195635901467118050421 6.0573340541703516101571752416134427 0.0883092718782068310269467902113172 1.0924544603214698246993848297081622 LT 1 -33287136366720102295275915.5086268787006235717875765759755689 8.2481505528302843408256461446390874 0.0820205954978063468712108260018034 1.0855803237961146507832180229745285 LT 1 -88603445686195072365808028840086.8877730227521447165502041613721674 1.1052599856161552961292205492282911 0.0721718077609343247503920404468270 1.0749087010094516969504066919708184 GT 1 -50074501324576530605550990380.1858964166840140490529737806916687 0.3428524410769572170795878059683060 0.0581351314052308888960172714924007 1.0598934662938482192082831613298290 GT 1 -222996.2678010589680965551389878926707703 2.8457436544162563102604146191581029 0.0228717975487192934665800882270512 1.0231374150246971036917002472163281 GT 1 -2683015522310488795476303490192.4482608046345143113717342060449515 1.6689301363575313934715010719104570 0.0354666082085709160624645177304610 1.0361108264047134258507434376722849 GT 1 -1.3072108832416008651282700877467186 0.1998541427364557411359710656008045 0.0384086790816869284727351656835120 1.0391657409092371970903210884859080 GT 1 -15051339631.2081794061889238982142817921867655 0.6545093444023139712422131155308556 0.0267376645382414526242821588139608 1.0271016180671318974901303446498921 GT 1 -972894657510923025758.9087313751932994127871213655454657 0.3212009050125939169555338889770573 0.0285148586172256778500618930817884 1.0289293047923874904065586780696198 GT 1 -29316888405442791694492050499001919149.8131712478441310617807597813572496 1.3452035140021926205706921418137851 0.0626610105333513618105595508889589 1.0647102804562665870681846326993694 GT 1 -5325684303786.0058009297038499220282934177359800 0.1790639171669468865962399785006855 0.0710265746395191491540244166790039 1.0736751462174036831534588422078624 GT 1 -821909726358880441988220779908205219.7315580725543400962089528503467103 0.7303453954141176231836572744060842 0.0275201093611929665045709383133943 1.0279058817096967038645713567060919 GT 1 -35246591959994350253678914.5209566349176460181583442092226301 1.0026423564573632603279048479676805 0.0877242557383104370464615800251136 1.0918129834425744178773901875165432 GT 1 -277341123305003925947.8099410485063689245780353960870090 0.3686069809698153152312079302679306 0.0826072043923958022639425065100395 1.0862195499046161144115733333404133 GT 1 -2993659384929649951.6711501677368716210843727158557926 0.5004839519349991474243961989039058 0.0743493129565517964800339720243520 1.0772583433191189094748769772244719 GT 1 -17251487220866227.4291779148211849452912898216567486 0.7693020620895259177640524734344195 0.0808993640769709380774868763446304 1.0843596567207725528807882502911807 GT 1 -31865601471471667.9221068549783062264698757061462458 0.2504785151056523864273790840692423 0.0832902010861398613339028728676896 1.0869643247360297156786979481662873 GT 1 -8733234364705539073340764554417684066193222.6598009319424934249063459349148140 2.4869988065363042209195764683034531 0.0033982402955984512721794300930204 1.0034040274285836263430130566756911 GT 1 -201152804544705.5482465335533312090294002611957981 0.3040483927599132116756485192368775 0.0868616799391855990381171737627509 1.0908679092479731267249619056416083 GT 1 -29060716658817.2384593357949525653422343866398162 2.1312304629958735968333199840697344 0.0704279265471140343196330962986843 1.0730309348020888587575504215945302 GT 1 -80923590351738.1690357672099794143463076920510283 0.1631954536114884308668471350814800 0.0373937941447830235613340813473126 1.0381108751619410909835074110751593 GT 1 -1703.0301534034242435581202223117258746 0.5128728624943701906666439547883881 0.0713727629908986010125708047974920 1.0740478725653214303039296674745981 GT 1 -683863778247.9311181945464840085011554792199245 2.5860775310110283816358704338744616 0.0985229625065140818429859121002086 1.1037207081068883787654505925616634 LT 1 -13062849.9831030090742616890123278701703122 1.0142392640982645416437422360898276 0.0543704862401512079874206608143585 1.0559044211424104958136206260020780 GT 1 -968567368545624672289019613907821.4396141750161155967740038099874574 0.6334373416455311111210654438150144 0.0934597053669861513289321896823624 1.0981197989940967981436184349085107 GT 1 -2154230160104961751724570458595654277.1706912303697609998093627994187765 1.5358753495654205083204669404978014 0.0859799215323236219560805638637303 1.0899027400803493609295898301619725 GT 1 -2721172577668607849018891686891610.4535217737794618252433861382394484 1.7957568141583104372644609548106857 0.0047804671032005858056383050754587 1.0047919300829186027843100090274767 GT 1 -283515.0377428123352721325621875747376472 0.4437890407589989873196118454797211 0.0917193797299419986645538186524994 1.0962018949670777067756137806343634 GT 1 -1438882287804420578151122285124.0316186241307976065746678892765548 0.5119544584032502671443585414023580 0.0586970953293403371315621069812958 1.0604902946261599499486731920301195 GT 1 -12076023176134664938691273628869711204.9654119667770006555572489724500626 1.1460176727828254291955996936897917 0.0035262589739852215321387402819214 1.0035324908796831060509041993440090 GT 1 -99499055044986.3460363641817127555813692856899154 0.1511718364287919395416889266639365 0.0695340981887605964301618972425673 1.0720698485887517776859472811385798 GT 1 -2683621218353387.2858045380587289632633009057540519 0.2734972451580316502001031835546882 0.0510701310150072308379444360787567 1.0524203830133817563251104453101249 GT 1 -1.1414081442105375001391583753604662 0.6278301159235951363488692680358620 0.0088783826120022758416723067016075 1.0089180302969011667331274134005991 GT 1 -5146986888275087480987315088805024475964748.5308649666980974126833491365926712 0.3202680727387096588597399857410345 0.0511982231508705143021523435529605 1.0525553780073673340949013889393735 GT 1 -3062697292155439.9360666925758485687874479096166088 0.1858643600473561145424254728569909 0.0517947531137118511509025217046149 1.0531842950066614698347012436859651 GT 1 -26688256059904792884723866705889090538842.4445614077762322692443352732231598 1.8089352205787966961981400018407783 0.0173353102330831546979459600884474 1.0174873261134805367600806715055534 GT 1 -1046240637980711899474882.1914127812584395406381348865935787 0.8163365471935134425146244310707371 0.0075407441576343370983352789517990 1.0075693193114442523360828137586580 GT 1 -1028014152550711193.5168576543954033593024656271489935 0.0318404674073361739987823262484184 0.0116952260845376040416925426573443 1.0117641531801542661041968221154998 GT 1 -359627975041583827960851706.2019898168279111312149702050657740 2.1141789613649697132449407360294098 0.0704763302440144668293167411164905 1.0730830071034624536059698383364803 GT 1 -4215.7460887622987299327107470191202266 0.4690565043960714212807956151454388 0.0917206969449814094185313567714396 1.0962033451972875640112353109451914 GT 1 -400028491571390806411003299080532661.1923023231869662697773752097483029 0.1760541103239673320174545382577914 0.0797403935112619117700457571187469 1.0830994677785921175120805460750101 GT 1 -1219118534633864791.4815479312764195549773208478865019 0.0995868265835060574195245886201637 0.0475178310636583219277923338540124 1.0486838924333142283441784875197085 GT 1 -24970871718.8341714287307252786415696881108156 1.3178332230751030711463371308496835 0.0244266372769036222510817847134648 1.0247299164949797115089152877481839 GT 1 -2016461.3378070308207983477338510111026209 2.5860215861999743542768744549616530 0.0280343504008915870716840640451130 1.0284348150647803564359525050515968 GT 1 -1653458436187698683431.2231351226890027752143152801991254 0.3224732468611562856960591816890575 0.0590240619901784186457629839812395 1.0608377103827554371602422398203024 GT 1 -35374742567017738582529616935510947.9574632803956059484900774435703945 0.3153752300052005897847373141298119 0.0783420998368199577415457213360186 1.0815811653160667507630659862688045 GT 1 -12578.4557429315489248135892024213449997 0.1322131764438452646651230626418440 0.0719488036091465119692381962120712 1.0746683791930369616729621209313203 GT 1 -22519511871140328.7378641905742837633517691966761796 0.3771071748088923964941694266544844 0.0233233704301216544294221972103942 1.0235996647663727180299812717964868 GT 1 -10445842400360289170.7947897886378376639464992794382535 0.3350673812405711561695362839012992 0.0045343738523804574741067755254063 1.0045446853079669483102355324902220 GT 1 -552097400.0670522583863651028245750234161844 0.2346655095628761011060379339261548 0.0344374555087076813366109247079137 1.0350443998317625132128825082469943 GT 1 -78818968308389956840985127216538944.8757132842159025800670161316741439 0.8784166303755111832319847832102179 0.0157294634845754927633443275907012 1.0158544842345626047491544461514157 GT 1 -302.8367835994705758009309910254785049 0.5542439777372239047395514235476636 0.0780056350438845750629388389414949 1.0812161672054832098292717585818035 GT 1 -1587000357820130.5617530121828151760311167946506074 0.9346779016620369087271792369550390 0.0230352384758499837555384749639550 1.0233046956306098459103729239509995 GT 1 -557647938134686315371571438741950834157.5171149125447594801534149406073180 0.5441261551154139822887175134315008 0.0525470879482095881059207903738223 1.0539780403034598586696131165552177 GT 1 -4313354486846917339925016559253417702173.9237495847057189632610410080325886 0.3271483030315883978997631843092551 0.0553841227299754115071138807681285 1.0569769132027480232638956079640256 GT 1 -8029651862145228324049174857354.4525134949544991510312199500422302 0.0696891827554217311888336169745725 0.0650909507508123280788521686723593 1.0673060279551072921826844785616939 GT 1 -2879050987240765845996126023245.5090605925339702113120930950870667 0.9840421341833398554977874907419340 0.0756789780276021620482964177165394 1.0786958413019676228986236600906068 GT 1 -5386648383227241124804707558054450849619256.0026335863692278917389206264263214 1.2943768420681023421900342525406371 0.0818241171040010041485033437266510 1.0853663131447239923682564442870254 GT 1 -99130716439824606449852437159.8265010809845374368982695330326203 0.4176048139986972997628343879296209 0.0018847839577018801266125859710688 1.0018865623979873044692406774692547 GT 1 -6269096093.2896779581114096504407431139866916 0.8968072454698737374555555479693072 0.0536550739199638653115311436508015 1.0551481610796741395557309735962762 GT 1 -8457507743010341320156597194677679778693070.2475343199976956673039266730899676 0.2108941503105382940010215951746329 0.0613070944750464931307699864326562 1.0632668974338599385500584799256042 GT 1 -28422428265280687381426300082031.9231978529400136895744486983418742 0.0597542733457609399997452680215025 0.0548397795517027451150812846794363 1.0564008204116657939569350233156387 GT 1 -12895724190868298240775700175291.3225534113280368483243646254278142 1.6677016741769067674349007085022996 0.0082391208618457442567554673470568 1.0082732500101985756042923566933227 GT 1 -3748590659946614993.9776773441420821908164466423276761 0.6851642079894934840457671159422545 0.0983738391954672036915454067053114 1.1035553007008922775903272115290771 GT 1 -4899.2690617648692918302138188106908671 1.4575113889752263992813082541564961 0.0231961657874698331256874438099878 1.0234694309143429781202812069076250 GT 1 -1718458619647617500718956406917092827993.7168325862479513401763342920841307 1.5925580240108785333111845038849237 0.0083215908142891898680590139206025 1.0083564085449482464487113869233003 GT 1 -102022191057012.8931693276295361258045177965720487 0.2801610465065104260883139361769749 0.0401008181468731992336269516395688 1.0409270189381191521957931852586932 GT 1 -35705536200049892023688127.3397436380240064755504520467554079 0.6938672041081449466578475708039546 0.0650602497922168698815710258129911 1.0672731900501310898539218481834488 GT 1 -1967946.9990469705788219170651556543851591 1.3704232994168400396003263179686785 0.0181572675340300286154380241177415 1.0183241336914097131094632889901769 GT 1 -61.6916426095398095995811330149686404 0.0285163083057373428953345120797652 0.0247888603368170544567466745037580 1.0251012779279141785879159610887495 GT 1 -1172557395.9950652473652914294497396351191225 3.8067041150945799535606381650928077 0.0557933106979326999024654332926153 1.0574101862709549026339173079165395 LT 1 -118.7882506998732908117017312851105636 0.5731269905703401297651296307441294 0.0076761532353211246645001021475234 1.0077057665410876436118022893252333 GT 1 -3560852485432.4921334408295370821150094625354945 1.1737555164491972460700632516123018 0.0734161302272653985205580094834810 1.0762507141235522570567421397223321 GT 1 -272249481694410984745041369726690675961523.6899301300499271677882724400359423 0.7585899897385552547984337520119892 0.0089596818124028575674083347601772 1.0090000611330170488411308129504903 GT 1 -467512942870403531945888291.4815501260267273910312546491487550 1.0134162281095811301356817566711519 0.0358447186176195142240812044405928 1.0365029170714465460669933615171542 GT 1 -1557264594539214861254680296338906909.2954928476819581585880649898068849 2.1568316221798851797129578018890793 0.0666482649827998570336494728958667 1.0689731555914537003992253128989548 GT 1 -4034803564399038001636029.6799711562287194534443684580363929 0.5358363731767964697267987217647810 0.0337104005691855951832500345647439 1.0342916973269292524917844007624286 GT 1 -1216642225161374065912901948298856947831161.1053971535511946307023867977247295 0.1343870389403616336120362995061302 0.0778502931303065144606139273265068 1.0810476967304061985554752288760344 GT 1 -33188.6762353569873824626753936187866836 0.2011218125695020893795535920774932 0.0859928922351961761016555452213048 1.0899169310102988264220043402198956 GT 1 -5354857.9159254298528936431765257234842969 0.6810018210216225606231827846616933 0.0470503431905300662163826153061605 1.0481932027364259361247297179928818 GT 1 -12059235491489380121111530342053246563965050.7086928945869918459442714791072394 3.9685208437191508255236161075183993 0.0475890739720291405313413663917450 1.0487586923353059676437009307828838 LT 1 -8308845689475708101.4127825903733723686871359888623341 0.3969852784024512130053778711386978 0.0229746118549131777390710562634441 1.0232426414580578263275016310946787 GT 1 -7357541078880638327831.9423129181930610336787744856187256 0.6586655209951311303394958493266359 0.0287193212986034287074309493243539 1.0291397909765882975441489934677949 GT 1 -9406070955303680589827204005179146.4630822265103383892790620740423391 1.0726166258695273986278481292311909 0.0162127492237686183746798809658388 1.0163456138670644815034068042288406 GT 1 -70467424600232541796407038771574351.0593454064343779483654867321395208 0.6179417991609990715030031503975097 0.0952273924901898144134283644111728 1.1000716292740006804483699524259928 GT 1 -11713206404305845283.7469907505773978730949115962267453 1.6772596296976642968969556540778992 0.0882682227563205161286353807414081 1.0924094360643133388082534890401825 GT 1 -281904846670186682464705249187197379742.1519010068573783752217896163981853 0.4962718443947322295858987365094504 0.0849699732622269205638439213585814 1.0887983981381965678083133768701756 GT 1 -11624379880119.9084286347964742992277116270767136 0.9180636279167878438999530893728540 0.0396502955909340818984115407897058 1.0404577854263295311329272085771915 GT 1 -1802597891355400006872873083976868420617410.5664250504574883757812332895492767 0.0396559795160008899325170675053672 0.0975092129715662887991338045269061 1.1025967971059497092125411196238747 GT 1 -481478373027.6643941767945498503305055605950904 0.7193912146784515613963132697900742 0.0382471576285193394774552888909786 1.0389977819379514478631732414771114 GT 1 -511222075220.9367386351109808233356236627462777 0.9877256116254723533209780763532134 0.0552045531999642542024132511230346 1.0567868333315583044390967447247805 GT 1 -3169520683341953415371583254024432709284.8858391529230658384785665695017375 0.1930039494335892368958712722671074 0.0141591459115402607886077686749774 1.0142603429965830720286635826559605 GT 1 -3164896926132830.8386567347278582584277659958687835 0.3813676462064231693553759156374822 0.0798426257330342879627009706300218 1.0832105645821388313138890140529194 GT 1 -5831288071984499171379561759690780818.9816262058809379207852759451258963 1.7079382782786470309436450107075240 0.0085510926145351163432530153150175 1.0085878629748809560665013066533992 GT 1 -25693999620517827374893960574118093303.7590244426057541333816904386305999 0.3137947892728275611031345910342619 0.0717303771666734168599884002286191 1.0744330465487880570316117104282788 GT 1 -12091126148758.9581443377734957232653621493079157 1.3763138365351637704348849820224939 0.0061063110857010789300456184020918 1.0061250308479380154758780476672164 GT 1 -110405925.5441344229886588205233401418548400 1.4794196244928456801231721658734342 0.0844061584564206690200602501293734 1.0881824170692257379590476331093551 GT 1 -17066461044467170.5077800552335190124344176761192660 1.9981746903532918615092168917467480 0.0165865135696013185351909467822261 1.0167256100141389024014993832895290 GT 1 -20411874119654587014196245394051930020.9792939735672027948832823755481181 0.4846335752567883240859714849982160 0.0949422694289353530908449864129752 1.0997565466304909563306256463910313 GT 1 -28419243878303703838671467643939617.8436375750085036251271670468077447 1.1956375913094353995612566834171974 0.0060078151298232402647291996965032 1.0060259346601161984420756659813566 GT 1 -896639087645286202122766426847598128222.9394352503056103293274157513875029 0.2561697161580822355455874132907549 0.0646651837079937673892864134116979 1.0668507215022767437921592539931977 GT 1 -455.3977237864290811372745751413056628 0.5888313776384189407883401347417042 0.0934916176460100087269143979695719 1.0981550018868069774191540856031222 GT 1 -66.1695323814383435172785919273398640 2.2440888845634462352434742979569776 0.0141132104357211729295307139621261 1.0142137488577066699095903731875920 GT 1 -5817541565632972961887928183087.7457817840169161999828668173890139 0.9050050066154597678486232072866493 0.0577189531817528085410776834780957 1.0594516977165400455804070738131602 GT 1 -19712.1258810792913310570557457620321481 0.0553843414731959129585631089740143 0.0482586568141108925688066202957237 1.0494619794416011772601010363226619 GT 1 -41995774394350228100235822662231768323871.2174515061890432113756040662634802 0.4537213710486301643462681401135485 0.0793999526531921412490087499044329 1.0827295961686172792994979190066801 GT 1 -2073197289291411054327787745.6815496846670883599207765761736759 1.1140859856588884389227520815686867 0.0106590018839551911017866368341137 1.0107162159711086177111076167205204 GT 1 -5880.7081360364230005008633501992318966 1.1622283766415836938159484570171080 0.0348386262212875540134312134038430 1.0354599649102877341900248857056589 GT 1 -223579020423110888518.4807852309155238122116560112597470 0.9896642779811477405139322752491422 0.0087690549389126047234564403308967 1.0088077293592461154345193406568508 GT 1 -4120165761562450.6973270190991326287236889874318487 0.3969513406006391833336957048604407 0.0842456989952866686687142917871997 1.0880071806323991095798634060940486 GT 1 -1125318890497.9413289410852967328787169216710724 0.0454263582556904945487144988904720 0.0005717538425889387079553995167429 1.0005719173561465034011499001819684 GT 1 -165866244005662778839246944.9878651866741488639202367550955371 0.2443975259436713049681488042458889 0.0267861097163991508638310875346588 1.0271513953801315980544448580402642 GT 1 -29237191.8424296903914694703360764492504679 0.2671300605479987581023279894861440 0.0365218033314408810365128286855358 1.0372054206846870937609740004378427 GT 1 -212494255634356829402438989057.4201322414048450847461589206244469 0.8301128909877080118963363867324748 0.0454048553271895430546184867451828 1.0464679606658795966527541567391484 GT 1 -4839081274.3859774277100408666087561758472329 1.0489508025275837570016284796878036 0.0074679481857542658990580327068828 1.0074959729228410239002795498489835 GT 1 -6639757.0908312765557266574695632467823774 0.6295335334085355527254550960120338 0.0011189761792920389803635220978596 1.0011196027005554713629814071104326 GT 1 -9860304704180.2474462984172581656575072254425737 0.1162584700101265034050568872821957 0.0920371637366201792218300360866831 1.0965518304438199780786106713317148 GT 1 -9.8590376636299811275166220740973207 0.0989774580014845153396876074711309 0.0414539561012184907905543800069462 1.0423376801971148497010908595792279 GT 1 -3546.6223063271908015213279604642224399 1.0288680325930359741809695664580395 0.0735233902663937058036431358442330 1.0763664794106913682464532507552094 GT 1 -30005145177993012651353190166925492989.9203694916421998485595055104304089 0.5147379255321316118496636616597070 0.0775582551851418751800856063645191 1.0807310543136390873792609182433705 GT 1 -276419336516786000210187826.0595402140228191330566935854137953 0.6378178743891280955802818916749672 0.0888450169812184684699556237181109 1.0930422721315021994767792122368613 GT 1 -2252151264789770643535639786901.8784812459673185065356667732906859 0.0890755818097583809990861670013306 0.0965609255276085872728642562068127 1.1015466040155872993449539861245548 GT 1 -4151698195699501284246799370.1386038167480110302767598617884462 0.0554716410785897359053037029444376 0.0280117656871697518297387586993714 1.0284115792113892227343192308762257 GT 1 -58854043441972231736.2265283915184479349193118702325464 0.0627517145753301057467699300247483 0.0947406702177722963981783640506888 1.0995338240849087145899446482560634 GT 1 -569794515856893088476026912033444644.4862723298943496582897630029309349 3.1376806501426187479422883110355624 0.0228433769948122490569161917075530 1.0231083296492811535795823295575576 GT 1 -171145555769940442729464897368807374.0409770813648558229502572167530065 0.0790528894762285430438364125553922 0.0869245447702274927051231029702166 1.0909367564244836881831085214947764 GT 1 -14.6982345697472391533559656526145799 0.6875348424694367570094075311855392 0.0373167904063072984800728163228710 1.0380308833041986737762085768697183 GT 1 -10.1100596789885471900256091729243959 5.9587750750743186592788239819063398 0.0592780931147329566775641715922581 1.0611077124203163225492647768270106 LT 1 -72132616875281037854480270512892.3029017677410669694869114734371374 0.3680646853011402810406671608357882 0.0269796326658768914617187267693961 1.0273502645032683198107316558652016 GT 1 -31131217451678.3444020843090940940312649423541453 0.2854686952114046372130107514123479 0.0311166957180152852730007492917704 1.0316111033610868420704432900289806 GT 1 -27056583947.5409139255666237670363363971009088 0.3772950589110332856641876583053307 0.0253969222335720159650076470339668 1.0257249905986206009158422777453756 GT 1 -8027305054128301195219586562495399.4776729891356908223172605699883954 0.5373926732690439174173843974802406 0.0896463773762429089415422378027731 1.0939221586653820453184513260152722 GT 1 -1113749829426957877.1346950384288925584790126329074139 1.0262461851552984742098006447065121 0.0380224879600974437732131478808259 1.0387642048475570876169790017318107 GT 1 -145818298691405786213985892740197441938.0055479162065349084469935426496659 1.0269198055913209417232995574497897 0.0178269636558203694466946246743694 1.0179877780606971897795422387681643 GT 1 -30331838027328424119429235538790269.6333490919114096672398004675177611 0.6574688353079122261611388050992352 0.0697072846539878947841945328421584 1.0722559946736125456983732149113700 GT 1 -36432989193555504822894437.8133993077089366169777311674054676 0.2744475135066002276592910343851090 0.0075992087331744832184237401293464 1.0076282298383020062166266853498830 GT 1 -19348536370875688349213220716.2269396336879079181317543864167656 0.7279137669863853043611434427839005 0.0766111881104398273122597611050596 1.0797048851949525766751429321189732 GT 1 -13990767.6216165970606710906547159043621267 0.0131029609009284937633966174034599 0.0994938551791875913777863745712027 1.1047982906017209218972229811160226 GT 1 -349973175335846518497169252479606917.1223831956497914913395464077945387 4.7066084546536148540644501629169992 0.0360540721482566860387958955090918 1.0367200773848753891025701146786721 LT 1 -13648356265.0776930390034978560738986244153173 0.2867325068327593051683080631540647 0.0876450641839400598927786734775221 1.0917261806114209631518606402144197 GT 1 -3282.8521986136665183756945176082053986 1.0026836875893313724741001021383032 0.0355286609594111983499325613990441 1.0361751629507776977879411500534450 GT 1 -95300861174605740446751.2644462154640405865200968745715884 1.2524824924966897594250671302203013 0.0601535837622078649716921343137317 1.0620388040482665271652326071592867 GT 1 -3816378.4744006540949946272318237847519532 0.2081554286036635847033273180014357 0.0897481100132576631282211349542138 1.0940339155906643014489796592447402 GT 1 -669118312443310057174787470041.4421095496234542069574129172755685 0.2588972011791022498371471021532406 0.0087288764458406769648621921215559 1.0087671962433281150826943703267923 GT 1 -1596864192262125275388561998.4588540444307771610918174641193149 2.1717551622758907019116280569439131 0.0402331121050946131991707275034002 1.0410648491165190990707572666071197 GT 1 -141787.4194070628072788272193726355784832 0.2089311761207327219208010131961924 0.0055838442472701137176952774926270 1.0055994921831696899734642801777142 GT 1 -12737983746823207963886354066.8994653595366373501196343197162066 0.2354043649633617552423961078318144 0.0367093357588241176469043935327869 1.0374000806999905019144538069890088 GT 1 -282.7524085491067020876638095571505113 0.9979873586141139754660473747688679 0.0672132477667813581470191939325939 1.0695786656381128544449415936058440 GT 1 -16730959465716.0138635723419093147330610714816713 1.0167104436254935980086033868920225 0.0636593343172666157204468084726626 1.0657759096588289690943103991759770 GT 1 -121920186942482019885216048210195.2709113976319000311287153374290593 1.3566639781298370895172284871032710 0.0408464864450187483585188184682710 1.0417041402099389619848344747603273 GT 1 -14350.7986310159313218996773176193487448 0.2256613499875357903779466056548006 0.0204769668597426238248299422639641 1.0206895266721233852055984510621740 GT 1 -14155425263568923207915043975335464985.6414477856350159147326785704262159 4.4285515523024867011108524327590660 0.0821770404411477188755956337744055 1.0857507614715232481466527488740522 LT 1 -189814.9738001256781833436193073668811394 0.0600537465282310604529633969380428 0.0479401269373221222444888705361370 1.0491273542958218429201561068790149 GT 1 -8035439.8209021294025749353043462439558254 1.4682093717995621400293835230012435 0.0148728492923036672394554881040041 1.0149845591281699985859928961943599 GT 1 -52974510897.1293436796758088049850966679242410 0.4794586523952983947633431466252656 0.0965872244237890707877847578370882 1.1015757142009980547979336724441860 GT 1 -4386.3579717256047042996439855116100372 1.2466606922150119433772419821912374 0.0555695516541010247488629368373883 1.0571732333482168907365790844011007 GT 1 -44927983687428881009784435090486132913818.4701379933209180409448640469216116 1.5615143365609312271403184708104161 0.0789098138991785109638533486650010 1.0821973255872959650622256209578364 GT 1 -89742338791887941749932.2293440205635746281482415277190288 0.5296771216535100287950553134630678 0.0800441801803442357766526482216013 1.0834296320272978804050454377228970 GT 1 -44469150427483204.7047947052039873517246056697506852 0.7674643035065768064423814312009584 0.0690362795101564802018610530230107 1.0715349707889053284923568051262948 GT 1 -818735782.0069600737932764827692717169173964 0.1113408057628312716338707399647816 0.0490702796620541189133570339766161 1.0503151199688642409019233797766490 GT 1 -290595292481311986654461514708164.3479564258053676520905574218142928 1.7721583207829645420517166596178961 0.0127312411627948850763715824740231 1.0128129778946508899184679810682327 GT 1 -56079617053700427385443.8210448774544882151326105052059182 0.7964814840165781041083700476661196 0.0811686221502695863815671160749303 1.0846526578472638929165073108495750 GT 1 -385687124000691668424736265586.1066663883310373882199390685052632 0.6175246610903649988879358050158706 0.0478452447153730660782964498836862 1.0490276993298163253166707832869754 GT 1 -29443194820543457943905806706.2342480563186818456589919411014133 0.2855833286852786022386035661318192 0.0994902353640925021735506537451849 1.1047942708536708494212080095718297 GT 1 -72454465470426379428602411277.2214817376458709668262019140449873 0.1205569343512560668916303539091573 0.0597217576619164043552685444656118 1.0615794450308576705546034218090874 GT 1 -1748486756917577114566.6247997900005511291746193090468076 0.7085404749572981216744599000677748 0.0050861787794649437520980672500591 1.0050991574132244050149320762318041 GT 1 -32538478940245988748729.5289667647375254723318012345862428 0.0297860785165086391716016236923412 0.0627967171833320980876323309088901 1.0648550695626253514580825775290732 GT 1 -3.1352506935108085397140814704876444 0.4717246089062333130574882120949883 0.0069231847914484355686990545617206 1.0069472612233501141805867052034602 GT 1 -513806098991228494654890090800032702.4877238288731392006813447393821198 0.0794093602247772847030799092275422 0.0947421118207453268307302955384742 1.0995354165613112907364604329239289 GT 1 -1112895380929.3998119583165746946443311181858988 0.0950084236244248337711102063160218 0.0205004176585891119939743053932539 1.0207134679974172153863630551580312 GT 1 -307341414770841257.6823055579560415653482152619629970 1.6819682802525657273157681677877130 0.0083626480165492005180191563106759 1.0083978111325439527675640688741491 GT 1 -20377076.0148995295377067288054098894249569 0.6700376130797069774366593192278211 0.0238066830560824190330130234900818 1.0240946415431839678617191166157257 GT 1 -34106634795826833390734875.4943056754686241466739193675053620 1.3046005700954861767536176652296058 0.0698969322563893230131741649553824 1.0724598734447667034572060770372924 GT 1 -16307317690081830075344666811470435.3208210596118560704029740292430616 0.5212957286751138875103169335676829 0.0517066317343459729953685175071360 1.0530913644042078141042091461813262 GT 1 -77207243646664583274543381904735.1320775981586930323109421518771169 1.0360663288070611699850808070940006 0.0132438084222459107849754846226832 1.0133322897411020491946514010969433 GT 1 -169700310083422914505441219352320934.0749205323245874985156291580177320 0.1645349242547024043846583739886009 0.0867562351211138255221743828816597 1.0907524407279318642143849808667344 GT 1 -795895558.8950295373988791878770710122087900 0.1952142341445912636029691723435797 0.0726057683472933612782474648306235 1.0753765269570957090318048760161229 GT 1 -69689831967277550843.4597746162798955258341200777222526 0.5516855720312673410272044626954732 0.0305156788566334746777569620769544 1.0309909765360627444277671535597924 GT 1 -11689438145267517.7169921997314783988131003668570013 0.7218404130197687400864178272358347 0.0969290528618657007286231618428691 1.1019541603921907203156417813444465 GT 1 -96236847327042708044068504.6651337200462777365073837576925037 0.3719837160667975702075196772515213 0.0188935802915370091774545111705321 1.0190743444558866233097205038192732 GT 1 -83499975210115705012945605.1869891404997261215015491639405764 0.6783075610102925763960728728367678 0.0571203547677366763175215400376859 1.0588166341522948026738049646762784 GT 1 -485862447379053.6414248613655284373036643994650771 0.7646395777562182361188414174075543 0.0394930720149264118428509237696572 1.0402940839051360240165697725445083 GT 1 -133661964359521393019.3564545795894089476739603502434201 2.3398330819459541002392199719717874 0.0882443465240329514509403926738156 1.0923832486260160467684350677395404 GT 1 -255352863536083809144900.9354790834783156332542198695196053 0.8400685642811178148049520604407698 0.0637713416390987888442632903011535 1.0658955392186296009205613402418063 GT 1 -805571775492937127894465587159946035.0096517374881146060974659325513716 0.5301105793665981957489976832337100 0.0750118210533759028236029408048037 1.0779743210685337218403053351917624 GT 1 -1435775103415927112701024384107739291.1760538871181618274755000999745465 1.4051680033615402342198508557227620 0.0005575434943482510550473185760943 1.0005576989795181453612395885077146 GT 1 -886151406649826730597462661931.4155364658744916607967011299040763 2.8534594037211461222880456516387320 0.0460629975315781511293760942534803 1.0471576448626716986397367509223779 GT 1 -355357618762896740918864299841171024.4493766165913860617196944101612308 0.1109940758813337791811271516053034 0.0462723510968920247678120459276127 1.0473771316220492599326910587395654 GT 1 -269303711513528060776538854.1841053484401782351871705666458743 1.3448793397879019798324555588329782 0.0504444393158152782395356050138159 1.0517612347133023500668233109838289 GT 1 -1181046876.7874692746182498737086767536967393 1.4076503906359383556760301176809053 0.0724773195477333873204853288249936 1.0752380314817166808802403355891851 GT 1 -1706138.9060464643139384846215548222079338 0.6738777105498552294406823481013803 0.0586820573185970054036169205940997 1.0604743190134763840864135708550694 GT 1 -9546427849058572569270563381053267.4724338056596485267001106754839853 0.5460321899573301261712011272400104 0.0982149512684354439699725570631808 1.1033790924943526885242734578154030 GT 1 -392694284754684649877532861626474.2945205969890326450911718858721018 3.5645579357387033878745331586562048 0.0376039268350291538519498791046948 1.0383291945825162419974219763173670 LT 1 -223.0774298972995680339858879937010833 0.1705973273083229555894447270068837 0.0836897917953988906578639136183234 1.0874003163935534108150017707879354 GT 1 -784763090803533312936880932231099214644368.4084015309928463485066277672033861 0.0235805297802935494449184439085260 0.0223054440582252988230698344108123 1.0225579727157628460756254668437628 GT 1 -1772096047063165246565.6895151052755378929862957491540657 0.0605055192104292228851293600633679 0.0228955316668832224842406714144020 1.0231617049861944411169348467610397 GT 1 -289672840621432245963410534281819935362353.7847258808294937620860367061937173 0.6341959368304539884935839284520200 0.0545636194203839350667452615836087 1.0561086796840957095036406970750474 GT 1 -497.9753877725518881862389726160579483 1.1502925590305636078638398056035546 0.0111977249772626008273327612668294 1.0112608914897541869946733397208708 GT 1 -290229689710496.3924849198600820485366353670990922 0.4939453376057169718385262626552877 0.0519211917812062599433637453949543 1.0533176491498251924861148285387497 GT 1 -1.8340734658484060211837699839554952 0.0978291607652081376793587666614000 0.0509298291364770964579225739778417 1.0522725412053311276654183317754906 GT 1 -58540488081246921193377954930937044903.6342037821759867740892905881974981 2.5767922804232573272689470076206197 0.0864760095607922360633685645582251 1.0945358484208933180159664310035906 LT 2 -1206015580962585.2258335982851035321038969598903607 0.2779206687993540667907573578675766 0.0221791239205480376686743388886378 1.0224287790149262362692901217158674 GT 1 -1440040243648661908268096.3303878746914822094246408659664979 0.2080085459470776414637929333362501 0.0198980390964123476418123097454088 1.0200986709911309840437113285337747 GT 1 -2.4672600557236004435827213358748925 0.0155376776502923883657997465095074 0.0224453506075820010372025861905214 1.0227010813785499654954889011794413 GT 1 -4444079390265340326150416636136665.2584275036421296639595214165797732 3.1045925800269369882447506370750281 0.0804903723273744475158505575329061 1.0839147644405101770398426543375065 LT 1 -479366456389494455668.3658423828906140934095014585000756 0.1378731898891743778685068599244532 0.0170080404062877525151246813378980 1.0171543383254801752799032231571457 GT 1 -29532692791254440125830272.2913556291976094677734504000962805 0.5656714475338494953353624226460621 0.0763472577337481241668391341812967 1.0794190980366786060523199583221845 GT 1 -11329668946439355190801163546739262.4416260221110421269293053128489762 0.2671207009110455560532798119229773 0.0469696629934469173435035962169642 1.0481085426692761178976191092894347 GT 1 -46624064962249209.7220721554114773060343021499881056 0.2485135658108445236148886063697003 0.0819276503094462701821707971669364 1.0854790791680945261075973385403579 GT 1 -1096162100298.5326149009803570001898680302659143 2.0445495929010381822307858322694186 0.0070115670102078535427048119134513 1.0070362635548676073398799091075610 GT 1 -94435967.2788848722303142353579646335626630 0.0074983299139590256276816878295705 0.0591780306919371665465764289883939 1.0610013503799130281966478059908877 GT 1 -3403118981636324.6357566643300643483450721372390395 0.8051386021568937485867520797907823 0.0307487554602562051102637859261331 1.0312314184084575466179738271681487 GT 1 -80060923395753184526546.9314746887681278961938799748744396 0.1903975529430009978446606531759669 0.0110301222866207269496001691250960 1.0110914051403673637437617752470194 GT 1 -161179546916199465943.2798333522213642140389833291223272 1.4886239244558235867193401213004112 0.0381693738139716580980503153518711 1.0389169080732489119844699687777939 GT 1 -1462643636029921665292595507739.9924286859852077236060796707024086 2.5076251596690726184862891020879866 0.0418567072263991152297422538708017 1.0427579372762381084877636723835867 GT 1 -21409.8418875789750529444791757320682957 0.9119531101103620639480950379077836 0.0394277860914776121422845294350361 1.0402261159364561070481814539476734 GT 1 -36.4444028117558688863842860699303070 1.7079606431235486441479498912860294 0.0184347674048704524436881965103032 1.0186068053293232836437833738798005 GT 1 -2969107435323661150322026977938865.1512319686604239642656901402527190 0.0944083165036929455449319518437629 0.0873923529792136429195515942080756 1.0914492311454775546888807022281546 GT 1 -74144055960064885339060341418431.7280110455386547639939662326084819 1.3767197659761674045380207382324878 0.0149000659259619942646451622302575 1.0150121870436222657000653175308118 GT 1 -191071224236890489759430072561.9233187739549821783623792817994157 1.5016735187670588659804916299135133 0.0044283194608000482446206829435453 1.0044381535103712619501072312462751 GT 1 -3656363549588004842519053226671.4545564407641224859199550397359013 0.4839688065653817121908026620588779 0.0779887052151526996319005148148485 1.0811978051916326348469607496641615 GT 1 -3004014.1364498842019110710714729232329899 0.7918878802248941491422653470552460 0.0784167860422840407538045342093912 1.0816622032279631293390376538254378 GT 1 -58146092746585230035867205549.6622107939319895374237853703771961 1.0446731805643329685901582875519818 0.0270551177431075900752710064929633 1.0274278456186396496261760423151541 GT 1 -8979303225561722108951919399361555066620265.3284802500762829131690058779406318 0.4211077371072787568715284883781863 0.0438214327476665395133202707017314 1.0448105975442360464604210852046079 GT 1 -315976784644003179.3652840958007150851642130033260908 2.7468688631378627995007617277824250 0.0419486715164298806455756411402073 1.0428539236536980747433061007127896 GT 1 -32740897040266194612025878437611455032.1833373731100362264759298806276897 1.1492128881776253434913212639797082 0.0862636395756059208832992272580073 1.0902131950616849080976551468642004 GT 1 -11850373803667157765545.3128592646316514968170025576774740 1.3758178911379457548012988027241139 0.0205414152219295063773218991042744 1.0207553244944415128700575050495713 GT 1 -17814413828.6459386770747193988372230759932524 0.9860284714722427127584720036505992 0.0740626868813498691398837486410037 1.0769487430436080334753011456445270 GT 1 -11.4103154620951465216150092631801859 2.7805671963452919540338745531999110 0.0922088728302519659766359128421953 1.0967409629998838854388671247277078 LT 1 -11009.3259601915189993053541587378902734 0.9232627330490388693538238423945858 0.0251066350564284718739501151578710 1.0254271832541912257591803648629625 GT 1 -2167804607172758231443399906589829392232.2493416710930269034526483923141808 0.0021555018388711112019985408037724 0.0799278533305235836363575290446240 1.0833031917208523347407512614886691 GT 1 -902276583984916617170.9927754138210992243924198353202539 1.4306483501782279931571784180894033 0.0864701016833992891851776823750104 1.0904391742890518412877673950494786 GT 1 -660079751586476142572976269844927072.7389972058174429511274022435186617 1.3908344790162471293407870758583142 0.0338345751378395997467168680917278 1.0344202121614417322045561231715939 GT 1 -430680557423308382319869791484.8023737813033937248900263722277554 1.5954632582052690675938169391151540 0.0848048983747821720950460398755754 1.0886180106160997426571803461276207 GT 1 -8965650765507711905931088453264959630990.2385708062800133747877388648417113 2.4853292058498752341406307843253752 0.0499907649047002583383746250779917 1.0512835732818535380339717682003700 GT 1 -26.6162852568935674665442158157221031 0.2401171686082408717767474594758807 0.0250041752181181037084713743300223 1.0253220902684517680177611265956242 GT 1 -297688667140909173101435635333719440709.4667960118980921509832894216580561 1.6239796264986707008493534488793319 0.0438710168645422544199971392587256 1.0448624554338069701946447411209260 GT 1 -2056909339.3971653697739646755074859761828948 2.5186439307742882410914739063340790 0.0892688848449516778801908552151614 1.0978794124417402557102744898695539 LT 2 -5214124612535.6838689070023114161711671087648798 4.2660135739580487009252325308677951 0.0586033712321017236586778098006864 1.0603907311051079644548348383412478 LT 1 -223174168173346865291103.0870361984560323663917220995685446 0.2705178437224103067253449935621083 0.0027203726020297339190551631023265 1.0027240795399378190558435851964811 GT 1 -1855545.6391619579154245185939857275037149 0.9299684720448282735315466922119589 0.0509702973230400775785959375532561 1.0523151819400292744386350173391255 GT 1 -688404720.1122985801949292697534727949234067 1.1184865613650726742884302699729018 0.0364792770797863092458639810697516 1.0371612833982266002599532252382916 GT 1 -48485434.8036036629163999493933762182043797 0.8234389863589850245029080862293572 0.0263727997294511976373864543159526 1.0267267998698327594457714982431329 GT 1 -53158886346379714042215108080.4557543331801402675675938123288725 0.4064199755605447630254650489332105 0.0800754416649596051286522612045306 1.0834636141111219726397078620392200 GT 1 -139525882378493134024475.2360532054733683343494559600243980 0.2695633597867897010187001147382242 0.0611745306305300032758613178570893 1.0631256856656989696515758899369556 GT 1 -225564140116588386407110273551983814023429.0710581437769051314933145420516185 1.7728855581376733753040754302466399 0.0370930339495417955258134612986710 1.0377984803135698255392294430222830 GT 1 -131641011956716545605.1801178200556285025497082904910401 0.0570194692472318322607869565931286 0.0129822712254403747278941906129739 1.0130672774257204252949720529341438 GT 1 -100249570053082641451970.3905688312698967374695442763677778 0.6511463307733715549620313530990680 0.0965072043128080848561441574414699 1.1014871427644980857312506116656190 GT 1 -338991299819863084200753912943254083822.6250509002456930277820957708387223 2.4762994043580482235493119302090826 0.0816038077393647810952401507293683 1.0887496514275789365810785942262059 GT 2 -11313071137850082245584825193.4426014823242646802627785870433114 1.9298528511705552492856195837035651 0.0203258092762863888961139748156540 1.0205352210392703093942730617030626 GT 1 -5.1920476554178738290413615939139905 0.2545439502026098211421107196695972 0.0384111316000731391661150838488117 1.0391682913914019301112945484460486 GT 1 -13181.6152556940519540731932674902576752 0.0119158113377075501791873115476768 0.0643768420741262955884035027045559 1.0665424926268838227010960428102159 GT 1 -29921862032281124458810435.8712196013622930937769171897723826 0.2221688861197094431862928749184222 0.0627677043780158699642181966065475 1.0648241132516672423425597994383590 GT 1 -407.8639412929551447637615628077134505 1.6330288794125207722165973974451788 0.0805134282284043511632557292014909 1.0839398388817059549962302964365570 GT 1 -7.5262078439127815510175790034387937 3.5497504943031986272918980502559505 0.0523166187114680223082305468671906 1.0537348184954161754685155710136942 LT 1 -1209530645383362117008460492766.1121365092159760295660492417072117 0.2168152257821645727211938934028316 0.0958868654504873049564217241573633 1.1008007775824665463783325463662130 GT 1 -1026412519679756236440922449461.5446572921529565869127741416434292 0.2715604150087449934262760205598050 0.0807785346604717272736458384440329 1.0842282005231995301338778315984444 GT 1 -9394522787758513563572618029179.1783781839167778326037977111631782 0.7827301344828727237497820758406481 0.0723118165180536878773452482074454 1.0750596118386063823342659085301058 GT 1 -97277982878826124562519442047030760664.5956419014554802515747276019090927 2.2147903410901829503512052208964415 0.0360672271987493710004090342903580 1.0367337245614207115568672370132066 GT 1 -11150141831466823772233458545871485.7947040868891116297454481770991274 0.1376445954094823246280327053767977 0.0570826853368366966759995614039467 1.0587766834771096239454900059991008 GT 1 -8603.3994651784512361799033034846100428 0.6109620458345989328297859193597538 0.0209961498019580182778781534650127 1.0212197036728003182786655353078677 GT 1 -48046.8199915333993369042475513724430909 0.3687872282322617730648638123511185 0.0920281437713312068928262054969593 1.0965418962040851028052505802022985 GT 1 -7701199512221710585925992940890980936338085.7771341489380928797710733646170071 0.6738329044385088369800004736419279 0.0113009213467676461551957184000521 1.0113652619564614710771860588831244 GT 1 -325938080.3391183360342006708057285375863159 0.1387387341040851526509474087380402 0.0269155254068632515954284470446992 1.0272843818666747623616905236126229 GT 1 -3124458261971796901153304217.1497919198325603675740026452720680 0.1706574701010852288918680794032720 0.0023253296158761001603114446699516 1.0023280373932517054698854005368855 GT 1 -181628942798.9938054676459572541562874755297847 0.8768293723707213887898993140043384 0.0250475012619425294684380308319087 1.0253665284141287219675052520266257 GT 1 -43234.4406762058333792797922373939376637 2.3491293313402199857167560240290296 0.0503023276710324887548956653700182 1.0516115846902535039437846472093041 GT 1 -95701784511.2641513290342908024997836810420991 1.4423387204727005578975566321435941 0.0756951110613597760176509451807522 1.0787132953835779719320180299188780 GT 1 -130312275585271122865537527632968808238605.6838581687017221234414738822341741 0.8336726617249253681608388600456127 0.0206085923369225685020150350799058 1.0208239128144033497010260523384926 GT 1 -834616477274083143382007717925018193.3885488870233781932531498707641944 0.7755898990679137011058367384891815 0.0952956505419080873204976765415930 1.1001470743372691601353849228389099 GT 1 -3355381762402251.6967941563428356072664228306977439 0.1734616709786499931697264740749673 0.0183997368218579679529497037087171 1.0185711174740796743744992733245112 GT 1 -51026697887581.2458594349342469852222070130227157 1.3371226735886964118036086147250172 0.0182473284821991475511698845731047 1.0184158643483969453737186714021598 GT 1 -2984360596.5804669761949499570685788896425366 0.5540973475819572655493738120412213 0.0201145800907940893897676823700387 1.0203196326130093631514260266433040 GT 1 -308256184245268979374826124437304321012039.3575547167280068932038539372926681 0.1841328886857095529091504785491769 0.0401740668174926460203931611491682 1.0410033305621962627212390729794355 GT 1 -37384851011056362432081717425542.3262474797171892935784758226947525 0.1837616554305516964448362720900437 0.0203189456456647348077245835251213 1.0205282150298813292377499051335777 GT 1 -447425934347782820267148438637.0268177752515654648426444064397053 0.7902495019598451516652054405719731 0.0450857671632573629951330259386700 1.0461337510823493816702103299146388 GT 1 -6007350876083710867017476.9114724414772969108653092087932390 0.3396768868264601431367364718037729 0.0013130862262002791242640837048995 1.0013139490793354183483410672566368 GT 1 -847247358005906729339641695982335.4413689669349946069443230808553803 0.3966457561300008079259554322712842 0.0341374291488374566066480347657788 1.0347337210900394389105563002795675 GT 1 -203088.9648628760316165574947396605035060 0.8543555085048395061956335743560583 0.0337763061581568379791046134343127 1.0343599044530858690672212910492690 GT 1 -9281071180585864547257964828.5234180880693828373687650831707120 0.3442475480648750107050240209420027 0.0900364340481610817331605426257732 1.0943507176883216714792631798791826 GT 1 -448195982297382.2091292669668947279697141890010481 0.0330912377408706707988058665907999 0.0775060895372254190621575819967584 1.0806745042136059154258552340989600 GT 1 -14175039262803566741804156253359689.9493119282985687000111806881272488 2.0349504603559142265104793449327969 0.0596418609697073069411716561823657 1.0614944773113679184270452034295351 GT 1 -2.0874194430418746852162323090016119 2.8397049740689794818895232843233653 0.0315079085176943902086903399955823 1.0320149619068820543998741331908410 GT 1 -460493823.5941317748307422432519900096532512 0.0319063741161523162249498654921112 0.0210235212804634920004478457563473 1.0212476625629924259770354125607902 GT 1 -392573749718875186910664954206847630809.6037801488179834442882425207564301 1.0526802101073467333258390041648786 0.0097524926998852542510155464454766 1.0098003597262838354253749320020173 GT 1 -9878026810.2805590280163877839208581223051746 1.2841121336721032426505460084340184 0.0330248446893566765965327798880130 1.0335824764021868542936126526800730 GT 1 -2625882574066886823375393774.3976260347507435650437323524638529 0.7526204467799477207232548082904616 0.0193905084147248757101498719256767 1.0195809704468936696870019756043969 GT 1 -545904502833823490084853243490.5988888021630206600583761402106285 0.5536641835982848266465327170031769 0.0224147599903105184619192746019436 1.0226697888685461584507921266247003 GT 1 -75798240400760225629306.3283697925429919695994088483533295 0.0559879202768438923705773812167595 0.0227956300440079468073440452420911 1.0230594676928813204582592282211000 GT 1 -10554.8430558223777233583767534734520257 0.7753202861118981912865704663792868 0.0698379247216042817213719394596597 1.0723964335259721453546881826438871 GT 1 -94467.9392908096875477533992413520503638 0.0429415752394740984979884358631735 0.0775293327007077549800345311845331 1.0806997005385258869876396015108153 GT 1 -1151.4452252115597797666385049267637550 0.5531464856226262640206452211418505 0.0832971856954413530082150436028277 1.0869719439803298457018508944617918 GT 1 -882776174687658592.4389556138686862830617774597151835 2.6214622486301866805322913586791439 0.0747190145157772564432639459323421 1.0806731879721244365717800440088803 LT 2 -4733517130787690271496459545808486468576163.9762683576887206728897470758278792 0.3004484392084229055063939936648465 0.0678414279837076788717942904143735 1.0702523371206122519904909174852718 GT 1 -120000519879.6139960883186646651488511086330280 0.0308556471312803498152179046594183 0.0206841699115198584376923903365474 1.0209010836883125660735037306351200 GT 1 -16495204465232670058104227131818.4146403226838928191896985377091673 0.5253698864911189013070461044473868 0.0370206708804200712060844531872038 1.0377233325030918561286139942767318 GT 1 -131278382558545856397057.0582676970397669911828765054449672 1.3788777789690400398800843395413782 0.0511717808885444245406135085832756 1.0525275092843980641851979401328036 GT 1 -671833125134569.7438137439468205206494397790074592 1.7608415559370050595642267976515421 0.0784145990687285528247709887018789 1.0816598301693749755091295147295245 GT 1 -17022011787550665072.9281513069079522951423970869126096 1.0154872150945883855970384800470457 0.0654438204045488995681597382183157 1.0676835366163893788610958622999771 GT 1 -49601077441237679510916142830.2354157209154280082032326119419557 0.8432063585200687400278760557984567 0.0305239426023830640401080504837145 1.0309995004294244619557896196987898 GT 1 -3337974752.5076359211263294676896359504474587 0.6440197267239063967138086200048928 0.0063922942600172272356394406268421 1.0064128124586166967390430653697112 GT 1 -2603169306208161051597152747193411993.4936045196799560918010463158323892 0.7045425748150308794179213701589892 0.0517020881447729315543276022582920 1.0530865730824078314077756277968680 GT 1 -5.8376537752892575646409778783908878 0.6926184920952817910689930596886976 0.0010868650988422779159707523805564 1.0010874561650254344165912815284364 GT 1 -29998145258.8169357165537456020717776716164865 0.4951879630323849973513262101457080 0.0708328530604574493954570681616197 1.0734666349963997978586185673781015 GT 1 -545382739810576373076040015356139535857824.7062421644103524836144513664296214 1.0183852750816686544716141722680220 0.0929504328637526260304184991934212 1.0975581808164094623835975527922452 GT 1 -5754846734465254829005943828174323.3284210041819064526074190382445647 0.3196070438455244224526217128748620 0.0737311793032983330348352576050077 1.0765907833375698297664828980703635 GT 1 -1935421278739268104305050.5871624101355124327186015387871789 2.6906464368330518963709163818085051 0.0101259207659398396968852107860827 1.0101775366360464981363563469741839 GT 1 -26935545779239788984459151355290268295.9450644840358268875004920372157774 0.9165762595071071411627937557399520 0.0496143052339712202924788336851762 1.0508873822904569973300778651177921 GT 1 -501.0509779250835219847001516757233718 1.3334385186387730566120878208415930 0.0674101853441156362696612895514753 1.0697898161173905149098160989494745 GT 1 -91681.3258398791303592619555969437706752 2.2298489116596389440793958904073720 0.0665536743068977404843818572384363 1.0688718155719048502219605998772858 GT 1 -201193495483328003.6726196358176265796572389601880124 0.2644384553239499571088042574698739 0.0025905653802544500521158763085585 1.0025939267011517878197000259562079 GT 1 -6487164663779275414372521437506640.2050231400474849677463944527165136 2.1711297276448306724822890292965441 0.0036104427001390886740453114432919 1.0036169760787177413209358349952562 GT 1 -470266.1918295394090217756654818762151545 0.7559339062757899664156255668436726 0.0966721141418593501864973890314112 1.1016696842100256411174472968193502 GT 1 -56.2188899114343583557941712133639811 2.8449229782069944081160130549507000 0.0464466659934307911371158867320724 1.0475599205226738397837397599660045 GT 1 -41779.0835168085750173291419376336858102 1.5737258413855961963251641951376944 0.0357883329144085163644478330042450 1.0364444368083702013808859738203562 GT 1 -94046681.0872269488076945187948063816215976 0.0376045178556615305741234444447921 0.0292606071591194851286587542059498 1.0296972371971137827511526920783622 GT 1 -35614157331171666408612076694.2544308295710181776108713026498932 0.0246750153119852864539731886637313 0.0317298477385711613457115468392059 1.0322441477272533078837242199037956 GT 1 -5380309996197811917.8713259930407012965291907195880405 0.0392565094301564168273510984889609 0.0853649992093485636202295159726774 1.0892301995306001313853043756954053 GT 1 -878768145932084225065116906850004294792.8151306211109929919310081425933392 0.1027413918052964483911135553711616 0.0710593724856257003477244294283206 1.0737104523135701965285947231948508 GT 1 -29764433203172824468762449514.5586663197364671922943952728204912 0.0902235197599952837374365030030145 0.0018577554977161190552816602387301 1.0018594832656392762894920214742359 GT 1 -63159769.9683542332164463758722600032063509 1.3295099266725909796995999263446263 0.0733305450993503574832852990261510 1.0761583520844975405947988807238654 GT 1 -3109827.3497550322244703086333395843822293 0.0452856114874841516700334405368527 0.0576917824276515736922629165409266 1.0594228630472394079133101370667191 GT 1 -17856330936.4832629448841786062136639596762394 0.0777584028963411438771508115208745 0.0664184300359424963322550139124733 1.0687269390314885148519913837471552 GT 1 -1460914038781.1137395201870071153997043597663807 0.4076240107639116448073639363637317 0.0485818947664482806963620359132778 1.0498016650687975091621983166022919 GT 1 -110.6160036321387050417097075662586241 3.0080282198972664859971556726032072 0.0764171723943985410237640905320902 1.0794947945659400591865222195731145 LT 1 -1592125395019379457636492771616233421.8452973790927421641989411425409457 6.5924104945697292047693222044776080 0.0925371650507475677961094616378105 1.0971026669057016417481676385575152 LT 1 -15647077397468058072874773108382679726835819.8996209069556231754971766816080420 0.3080820437481760596264596545579243 0.0159070996661893950025565543832169 1.0160349754779688367972333161891458 GT 1 -22309756776958506.9256139727549013303379004632429047 4.0047671960623054227317251211499871 0.0340545853376089576007633536111033 1.0346479529268466977687663329942628 LT 1 -60941133089554808035515822376625.7899467769494025401699050835169523 0.5561965100899987044124890026847887 0.0494572989281114588948202787032725 1.0507221932106783464242569240423737 GT 1 -145278582354928.9595956245151177993118122241979681 2.0651979802244806678291975002452217 0.0733389703583870595401445089355809 1.0761674441046278207861896311273275 GT 1 -901127117.7207596301527465036304434623927665 1.8105020039058990886874862864497781 0.0213228926136549247132423422141654 1.0215535096624484597083242783377960 GT 1 -47741498914791729453270700805634.4136228240204472508375212700908497 0.7467756367223738358400410773735180 0.0824505969938681581601885666898132 1.0860488552647236868511738015389995 GT 1 -95.2981750287546854253894592284926813 0.5339969340153823667887778616626808 0.0073224340005156832653439505824133 1.0073493746148402406622256841489475 GT 1 -4538883636262462704240146350357819252056547.3132190782353543917515620786460806 3.8465740588421314445702520944599414 0.0537085429439442873814066559342963 1.0552046632419183727007343663614882 LT 1 -18991731.9682312139498680398743148823862120 0.4341916315384117000353488981902947 0.0767402129205858228632497119898456 1.0798446246239137659369480603226537 GT 1 -1415685787462384536757.7046275344196049660841403123866904 0.4024537370064090830132563689804920 0.0214746528932972683903339961160482 1.0217085884378690618469159334342715 GT 1 -718866225115869.5247601489163955805764223158465164 2.1258396984723691892862082772628047 0.0630077709854846646586246724081274 1.0650802902524758859227606105169054 GT 1 -1020466729572739008325414667.3896923186875148058210258452804750 0.8428769410015302341801908962395893 0.0873625199102335511364106804107569 1.0914165417619644749622010826081626 GT 1 -721990488262634.7201216608439881434642981883855341 0.7623755231209412241923765676194497 0.0371119041861615416748046766602294 1.0378180776601349189720806740970408 GT 1 -25527179822143385260912510434.6035454690300284597209383233229869 1.4440467118913366132753807455971126 0.0753451998550635292422061906047881 1.0783348001545694967889792551464379 GT 1 -671862382902730864777076774993457797718.7587201410273002612039880389363114 0.9612449642173849594090700566279052 0.0612658415406827515541019118579587 1.0632229511893833793068217121136670 GT 1 -13667694485330.2791085959759830571504545622140635 0.7552798287439614090041260285259527 0.0765684386022824560708194148050938 1.0796585899420050322351743316211717 GT 1 -2273247249284589072208643251286707528332337.4347441252165774801935558627760921 1.3323767544869114622835438983269517 0.0892673759755699027600211479361187 1.0935059220298657370883306249655848 GT 1 -118722887056228556.4594748004587812518497474392142926 0.1534627558157734354044982916409541 0.0553481127100439076624297768329589 1.0569387925926245011454871807882614 GT 1 -286371700184953111268982171910872802382085.1104177048872019285233349986427004 2.1321568177372996646817346789216358 0.0860858138229548685429283080611123 1.0900186001446830005485223545361656 GT 1 -284408541711334244179776678116.1683377535888600917350581642221805 0.0526232151490887822309199652592683 0.0549564966303801660019592035888664 1.0565243172362197238141078554071937 GT 1 -2.2649732241959502303615543726146510 0.3580326202017922326858917021650956 0.0455735879419600617188507775868925 1.0466447345892698206331487005237988 GT 1 -70988022952009.8922756766643050215955523168558408 1.3883695224875642594817207494755079 0.0758315232810829997177250306918432 1.0788608898499146106356609127107155 GT 1 -17130410552724694066119236770400952525030751.8645014752161020692668710673994775 0.1780901242811149903185219125278199 0.0662499060781279869624650520516341 1.0685464419494422101657527221595325 GT 1 -22512633098736.3453654411156134082941689596979137 0.4429471304867682135077754583910092 0.0864841985957752482618361051693313 1.0904546056626386025146442930917777 GT 1 -150584104314940608932833602976025290230.3870072734654412319879763729190101 0.4458795318693729754204229998951764 0.0695044901038875753457903272276572 1.0720380283858295094717191493333252 GT 1 -2822214133142.2296496708159342187294520867824947 0.8660653224630478367708284872791841 0.0803431607463538779824785268431365 1.0837546793324111976532626456574365 GT 1 -298114902298761697143777108816690.5477790859133968107964412323946088 0.5686188331034205253886238392191310 0.0775799941486277592140454485418578 1.0807546213516342538539826054614564 GT 1 -24762794484005098780131039046.1869239060580728302651971271657655 0.4145105009328674838427329896093832 0.0720059250043625802775921509067727 1.0747299309192956989955342734803367 GT 1 -671256218820163250909722883156.2906218774696373235344590261528254 0.3387666711725047091572860523118959 0.0103460115312975803514655356885908 1.0103999035424375335871409675364496 GT 1 -47769981202623.3189794298198244156643656782423480 0.1006967368580690005250079359803220 0.0089896862435220448945874789730425 1.0090303372830183732010168994497096 GT 1 -316.2008344150537782148866357557678374 0.6447641843886854816787523014173935 0.0192516671074851337717307348332756 1.0194393937231169980528663498878123 GT 1 -171336996707962057420550.5280882829736593116891318776521414 1.0133397858992057202666560989667893 0.0433044627980555826006295894092681 1.0442700810920622604253662200108040 GT 1 -127056283287561437931202612269012736195.4225813688883046269881577221690136 0.7859512762745934159066994002520574 0.0852189593798110108888588749160313 1.0890705422120438277464283923058767 GT 1 -114.1260675100911618094486180319751376 0.5657070281279171476098296891307401 0.0421158273214696972807822384585595 1.0430284136669188141313158260347070 GT 1 -213076114654033498782332808282662.4405566847332609304220689179931839 0.5212605796682550346996505205703416 0.0773886040069684932085005056330311 1.0805471558936974142155681984613219 GT 1 -25864009377669803143888.2253291420428833982413990222796820 0.4039752480288868676628324288915072 0.0498582882623064415794180726703155 1.0511441352621222507029743893933482 GT 1 -126556048800163381477428430153659624907.4304284474485798625211515787700641 2.9710109449285609660192053117858822 0.0325624408502788632367049397988763 1.0331043945074303378082287985764606 GT 1 -24049650416245.4409479131687439958649889281132362 0.1743914722287789617327074115633590 0.0463878591139075322699923789986879 1.0474982511181926097967447386760029 GT 1 -18758280086.5380949002873267828687991172945659 0.1291992458371150367466802689310563 0.0196228164990460817977679457343600 1.0198179002418375572272299942795747 GT 1 -6626886550087123016434125795666.9457317892239452160586957406679481 0.8076177939773991429702283921193633 0.0166554841683494480126947733651482 1.0167957463488553000065038271120717 GT 1 -28987613901740940229890052557687955243.2742517092472824287692220400226269 0.7114900577463481324868533962559962 0.0986902997948477788259449343854662 1.1039063510177386056050610318168246 GT 1 -1028103437298826.5061381017098423982004177207188534 0.8069819881376745724746955396431620 0.0473155366667015446913701341721774 1.0484715284392251168537748451587160 GT 1 -1886987949179299735854371224601894805968186.1114442990072989165478422527251128 1.3108523622277147159433863919336216 0.0481948733834696709502482147181950 1.0493949640766737180963810497505579 GT 1 -22680091869687533719.4241696381920702602056701405617231 0.1379842214772214470076716911142501 0.0409187261375848982929950161280293 1.0417794591365627048056765322535314 GT 1 -2113848286619078989513972934904.0744308163490283148169415039968884 0.2185130977948647093511735264685322 0.0344284663693859827600292438510893 1.0350350901319093515461608292543162 GT 1 -46873818490.3973019660865953745143860870966538 0.4531741255529331089984434165333229 0.0215688048454135243266519946921295 1.0218048112718008842482324737384259 GT 1 -151971.7303640858449029929618432156086709 0.3172950773434200197153480321960766 0.0488554518553037928011543783927399 1.0500892320409073850021447246931146 GT 1 -4847132037.9947122597402258066964503402451098 0.3262474437725467021081769434477863 0.0488105646044161488712983907287542 1.0500420402740732158988809988059310 GT 1 -19880167890133242437.9156900159928885693264810411778507 2.4694325875845125789225497987699975 0.0338223683830012872482920610276689 1.0344075780126579067443306163121894 GT 1 -243049.8543277543196498537351454085996109 1.2377271951224127713872483915705707 0.0232321742031800443146033356725321 1.0235062951015662066805658465497931 GT 1 -58588.6850068091807955855394170639123111 0.8068118279569916514260222241365846 0.0551013577424429611967540801853094 1.0566776141111337530890534900252510 GT 1 -9886992226730.5010217076625860180312223746164255 0.4614807342580184631707312890935835 0.0871081818676195499465793617900248 1.0911378959527656438204966736542278 GT 1 -1112805704.2701585900211910034101776629899783 0.0177492646973320909717632518125367 0.0869311104523518364438821966539043 1.0909439471836842400835394546143893 GT 1 -53403591447447506746250176700882.9167740532573739455300911150904175 2.2951201564222138152510178553725503 0.0900020109723868980208527488675428 1.0943128893334488925676540461985633 GT 1 -3749014.1317807868238182848323013608263577 1.1020670116408171171056500908213188 0.0332697235311468448633047125981036 1.0338357505969786173175013369431671 GT 1 -1050015557770884786319475387246478.5768829794980729373783176844056053 0.3986756270718903206838605096331455 0.0549631132502241727048352699435967 1.0565313186525389691159533955586267 GT 1 -2372763722446406402777227746688456630045362.3563151159336074153986163894934603 0.0970878559593954847161323682412234 0.0802953953986441579601128115878237 1.0837027424519464765424643277061000 GT 1 -19.6499404976849829119189775860622758 0.4087142498894513841504410864410530 0.0555498432396143944144181103039703 1.0571523655237137781473250369463707 GT 1 -8807573282063171107468374.2730517641592993543375140959076910 1.7529809757357282732391137241472668 0.0221459531654745859988478372191749 1.0223948564496900795497917179602719 GT 1 -569693063373921508714821920524028873704918.3031146082103156527917927691560758 0.1563195405770780505283277114678731 0.0874022978617040676592110068883468 1.0914601284206746770388858975940925 GT 1 -26397527313208454590434809945965.9577470150131670866846414806062928 0.7095676739053618744583249975726728 0.0398854874042223092528374118772197 1.0407027176800851684891093134555419 GT 1 -16355937337979223644945149447289578451483552.7235380177869055623721559434356245 0.2274435663336903744575217857689163 0.0138050779409137177833511721141862 1.0139012542024407767234732449710765 GT 1 -764534581748958882256167.2173703174073819070630983639667291 0.1555149345173518634759615243313566 0.0634827451301635702409066241302340 1.0655873324200662365826253763299132 GT 1 -465587394009966569430942.4202031150865692189145338547951968 1.4832286944543396433764772786023424 0.0957565473120112232886569677660969 1.1006566487755471630052571635486969 GT 1 -605350359433859.4687224416446064853005571143333198 0.0550456527703896374969538481041468 0.0417175257024433783183846875583371 1.0426126861252758159043354658136320 GT 1 -1757394999884288621986037.3274641179994173283534653756615290 3.0592364807205651181382179008578550 0.0863862680673004651824152575502695 1.0903474096190283751506075367042611 LT 1 -2400625391380003025552.3359628894797147816512603474236130 0.2211182513077423828864816714458330 0.0645530675157931033696050755092085 1.0667308612434216079716480900663471 GT 1 -862453826046372616446.2809846469002848162282426700927976 0.4291938633200216228901675066060031 0.0043386243839062887896746234694641 1.0043480635265020613001770406469221 GT 1 -1804547936129.5744632905031316068137490415957975 0.3110328043743885059757810227638406 0.0031768321130659845718487776575030 1.0031818889568725764046229521919976 GT 1 -57015421191612.7351595905363506614123878548222479 0.3445798182548957962184947632282890 0.0743900234946538207730340068084405 1.0773023247409793472191454472997528 GT 1 -53825.3824369812434940958887124159762075 0.2387677345312590558643472975587550 0.0586516078563731917172667605544032 1.0604419718453529379096512836844975 GT 1 -41993078175814167261504064354961048342.3178260184958210024225916591889873 0.1300342005795913211900489221925743 0.0450966952979477067596812153108256 1.0461451952485858549775475031232909 GT 1 -178439432300647628913481693508967062.5322979757183903200168719983157425 0.6453622021912517072944253291722079 0.0994646041372997374789518406451249 1.1047658082394547803256089803515825 GT 1 -50951966476185191.0653324906336497975838572205470925 1.3164190941696692090316314675289404 0.0365884316778547216093568039972617 1.0372745770501948183208165189456507 GT 1 -815648900849727.2418184238440095940253764461130709 1.4556258145585347659182179603780934 0.0990167695867517825321818704324129 1.1042686337409613125029865787911453 GT 1 -495350.5812194513301335674725858841166641 0.0639059314521711629251714235154995 0.0663287370498996517309039160788036 1.0686308695710160969349436459784613 GT 1 -908135403542630379192496431613.6629522063648094851873972670620150 0.2272040420311648009984131133129054 0.0085374338246890417598517726297327 1.0085740864749933810586561054169787 GT 1 -11356720399266849953982986.3150309932344919406627260122610402 0.4972097798767520586180774118937911 0.0849671853905491191577010533796759 1.0887953513885278501640131625167155 GT 1 -80167084069659127566504773046996758.9051905333053570371285603115791466 1.4867822185037479433457224697240170 0.0019496719606771747147070653147396 1.0019515750450501036523767043239179 GT 1 -407243210467764974734.4663623805600570413838810828704857 0.6305816641600750583411028802431296 0.0226103893639551372553125346201898 1.0228699237953284440221582219755957 GT 1 -636215206521331.3962199940894527541449679431864722 2.2533896771517777583241893493152923 0.0324168470921371133094651011669382 1.0329539116133617951386274079465743 GT 1 -8302845205723982.8978606119048957438544322897863529 0.2395458674750088911154952847757172 0.0445612592739852674668515671923154 1.0455846296270890322520565363625888 GT 1 -3014699546161792796287034116.2757561102773700499720222095075534 0.7832470481728128248983996020145804 0.0207931488930186806616995305336031 1.0210123706115201911147008461463680 GT 1 -18563796356109314415371072825288366860.8328698442369480329094936007382470 1.9905115108005223732034022097783071 0.0457356466711585746597344844547956 1.0468145459935337171564379275828170 GT 1 -645553383871433602528099653146984.5842308572960570254531657696593990 0.4311106454066669698466307068909629 0.0719528401535912017794264854569999 1.0746727286871584684411888940621826 GT 1 -148009170643007357351.1667989933370457258694840034193399 0.0647115039717790102691788265251697 0.0406395773800406223433989093186391 1.0414884429852496672126215225479816 GT 1 -4453624.0900456921731017953306831320094656 2.2081768327939960805284620320540346 0.0355291381603345755035986758647515 1.0361756577306867685702054522294744 GT 1 -6733.2204105070856666629922393821879843 0.2582852498910363376029789021304923 0.0800799485323522104288583602181186 1.0834685132937688132856686087680299 GT 1 -6248992868067796779052.0195950797521383099516072455403524 1.6610661621986671377905416008688972 0.0215332118767453577377614997199281 1.0217684343436459758851108868611538 GT 1 -1155433369731813.8645865457319994342414406252963169 0.2252054821078402119329891675238598 0.0729969218431040479072688766160780 1.0757983928641941263617759396859929 GT 1 -51750157307206778373019269538505.4624342433071669779734292617212095 1.5288651226281021106771838018413651 0.0848735253991285407225359047094899 1.0886929996511085842192568013952956 GT 1 -302202418.2117657769036114479801853111572146 0.5375360856101084905422949176219193 0.0573239137364198607158479735318901 1.0590325481834462500054685846692968 GT 1 -1014254643384896792.7551359298827843866635930467771035 0.7552950116088252511133563341334049 0.0609769866539890082283516805057629 1.0629152917184897303841578564487598 GT 1 -62373899557546479460.2352605937564782610285802435448553 0.2118143891662418904825758771129890 0.0691411033021849014828034147153074 1.0716475742036146423097867636532288 GT 1 -949029955239264315431345427412918342676.8623568664397999255922305559482815 0.9190128641061105075200272831372738 0.0900538684583593775180302004369355 1.0943698773314873089167669973078683 GT 1 -142850315401484784681992805873693693546377.3851902815135666329248467175592642 1.7017258866184784348050818626006928 0.0838608427739547933162423727799130 1.0875870074773886414281666316598010 GT 1 -83901808745042.2149931238639519436631117395405769 0.4130364213937316119093652641788125 0.0988245665501267097922068248591784 1.1040553306159836191608390664525126 GT 1 -1176563001033297055473878169335916210696772.0958158803382167211933437413336673 0.7783927430819465515025615777143186 0.0581634498119033332425999837944428 1.0599235330617470036530973463990090 GT 1 -11689097.8892269075708459047797047460702081 0.3550513556270541875895864872634110 0.0552906535331176793889106362860125 1.0568779686740245731931120986680523 GT 1 -2.2360725446717913415186444686414230 1.7928668969768745414190776622186437 0.0248870548813888158016093094003625 1.0252019735460639372326140330489243 GT 1 -943541444567447842091609684647644.1809768002501614336596881912995288 0.0737204066515274978547674254545132 0.0037637657967277979661766754421428 1.0037708665859520546407749872411045 GT 1 -18.7025877815542986418482871991968135 2.6961100170305132214403652387047983 0.0801962849237666877853238125698333 1.0835949848800853776400439050986692 LT 1 -228483414.5673921242629714655737244959335679 0.5532022866377181749259638523324709 0.0517350901732770915503039993984952 1.0531213750179200158909321204529010 GT 1 -12834369.4044243944899452075237885768525033 0.1702035262742832058248979505211537 0.0748596663645011784053985805956029 1.0778098409384422185525035442764020 GT 1 -328385935465709358013242790173481891.9494697771965651287247988300241103 0.5059112129977799747485093063181472 0.0027426820665177008724184129502272 1.0027464501102510101664062716021240 GT 1 -23744493593486002.2025676365972139186459404485019005 0.8532731402385072056682556221842279 0.0577966137332769664723145655813583 1.0595341187227364072436457703188378 GT 1 -13793572354610685992060594038860.6580775589839126586512784384803986 0.2626734844512639885499713007629165 0.0493702898271652506512494108571533 1.0506306611639346322122588115861496 GT 1 -227781633414326979864079001867725.6228630100580390200877240370322718 0.5133736920523720239888090363718976 0.0345836358867810286065493656748283 1.0351958052952828145596926501808872 GT 1 -81931676.7153019864525481148265928493021581 0.0774171397542899174829103383517204 0.0490330872503544392283146889751343 1.0502760091033656869912087842009117 GT 1 -26.3424851323824233377990210526655225 0.0391560912265675466636405518475551 0.0871037628958622870971322976525238 1.0911330553342233135816546319165114 GT 1 -6761545303775.4124038787879808781627974830227898 1.6904236877229638966286715972631575 0.0704098741836438152311367100307097 1.0730115149112607405317942551806408 GT 1 -1325156191959628966298465887217921459835.5812320899857461178962072815173789 0.7020727411719646683959481358562001 0.0728218666882611772307627981120916 1.0756095708070184633297953563200189 GT 1 -12258381.2555064595655164447664559563191925 0.6500709890731702713300673332149263 0.0803491911399941370603759358392891 1.0837612365754547584264908909304518 GT 1 -1917137296077943580430018268874749612140.2236325853410567420445126396242599 0.4859886890697081397290897286281152 0.0886133515732790998492088353004851 1.0927880497804842738676369653624590 GT 1 -141130770828388558539729864.8644238503593737570409320748411927 1.2009806752106795868266607504015057 0.0236147424391143060447486307716366 1.0238980393474080167004054290482945 GT 1 -2231387123623.7468519604458629635548609381690196 0.3957304207018140132407296759111543 0.0970549789495012387610530663536222 1.1020936121911312456155831749585725 GT 1 -5696351511493034505276438880339373385.7545608997157236572814912499693146 0.2692046407308980632016122209610890 0.0860164166103762058756078706593531 1.0899426689697919046906447190083450 GT 1 -514835258245062760590180690.3527468227740341737570537445694583 0.8029252512600710328606639651355120 0.0009100805937503575329111477087852 1.0009104949685226200636710897996576 GT 1 -709.8823889701133076551353470515722027 3.1529444359606962425487792578435181 0.0262767453049862208234372720071533 1.0266281484696207966817180730476427 GT 1 -756447931534113533161345727041358512203.1096089526932452541599499290890777 1.0955155995766300879645799415683227 0.0685198855781887496272411512880570 1.0709804370783892754587963930481586 GT 1 -115130829116449776688516079188804990.3273586997151737750470964816882180 2.2173214552081338283433584970940046 0.0413526685148450838540766864496217 1.0422320178390364854392009499968662 GT 1 -3570657370399803876328677.4089219437301924085107483134359915 0.0813226210446645898242410013788804 0.0350466521834460547593061932049609 1.0356755230433214676828153302384862 GT 1 -11789999243807921.6064192440071334355319720428895637 1.1146965974222261435333757589112986 0.0969948792224852402049679269704485 1.1020270547312698666296221670369019 GT 1 -43916440352090254430296560602815273760.9525668837349404341904127502636773 2.0966224327890428257235291880778345 0.0800709962228465260678696894578882 1.0834587817242357204070869031209220 GT 1 -7982303165342851883274331401538716871.5260831841090735300581376363444319 0.7389414724310999331168883303249841 0.0446003016423100837635894047426561 1.0456254937499072555385632295886435 GT 1 -8972634207020459887210898976747180757.6615587209755513730787554370156551 0.6391337376112097226483417038309053 0.0964468818604538449797554525734495 1.1014203791566505096533446695343758 GT 1 -64373715685576.0235176227917133048350418789075974 0.4250557698009077212686781184915132 0.0903592981463749838301138739213185 1.0947055905662487060948587259729622 GT 1 -1316655405322181316406488826929516700440261.0576158173736246262752529557038996 0.6350359303999038418315528480008544 0.0564131232251387839249180319622336 1.0580668391599312131301701274706407 GT 1 -3278350202382232990357772.5654762376720803997487912495897315 0.0102715355142280136052865731751513 0.0751553384732322564152436443290372 1.0781294890566937579171888448804693 GT 1 -8495168075486095718756142536376.4718889929118401007756309877826283 1.7409345964752337435746302389787592 0.0097544221347110238469991824673811 1.0098023081651248718906717903329713 GT 1 -198042.8224450380781160730605032701561643 2.2234456040223671617045308235580393 0.0067062150731715528988083152518875 1.0067288027754401567183853218728687 GT 1 -684.3358658796436418089473520979269030 0.1452572951069514452876023480821460 0.0298520596454529479229542686299291 1.0303067032846352830504718462834239 GT 1 -396435385935788945028593410104.1843749505203471216566649629369982 2.4268142765889064866894978952547310 0.0943813650112308658459183009055153 1.1040510660531040611850423488156705 LT 2 -21745.9136976629372544822933186332974379 0.8277094075556096949864008314488721 0.0586660872272987190479166200694155 1.0604573534855670114306603756441386 GT 1 -334424636821393871962970.9460223892757425289928877465655994 1.6183526112032785784635003774941912 0.0779626707957737973537856148563688 1.0811695690388089484941374952616032 GT 1 -116.4576658244599730116567328147981356 0.0370118214661521376860158737209112 0.0270214434392561069140393364986419 1.0273932355171494230140884452161106 GT 1 -6224954.8570375875872155330515679021683318 0.4539625828300206635494669741295654 0.0834967754382765571563905010214716 1.0871896933651696020571671800564206 GT 1 -133223688.9018585841942877551350503456814115 0.3287097711195716515458229916828084 0.0996179485349342737984729886245787 1.1049361041053010050152289465421865 GT 1 -1470483405199706265516892427.6203419449077376894011858217677443 0.9681065870628996476414054892811278 0.0328513851469693318855251469986478 1.0334031088296165411370529886128412 GT 1 -10370628479480826064077873560020560349152.1789142527727631309655662955906675 0.7105381133389685536528358840142149 0.0463139699370888939574822807599825 1.0474207706508162497334203472796690 GT 1 -672877842650071.2194019637343652114564617546899170 0.4071236182774977725309310665824463 0.0154836036358363866152140684882605 1.0156047265325876677258698662757178 GT 1 -1012980103652218021118180522186549666881.0449215830900147744420941614654311 2.0985507800665767738816568106176045 0.0331346700112936411809371717171186 1.0336960590093252456258315998346596 GT 1 -682479409985052009095258893642.3681758121119490372970832700464147 1.7521989148890738066733914611848261 0.0818386396866813267073227651729400 1.0853821300462591859723152880651734 GT 1 -1092977695169369.8263196136692541697486887991135314 2.0975854356596996304635572740869726 0.0958400413505356436080076281091236 1.1007489888342534196578592278852285 GT 1 -1344632750578414.9990745367437788019311927201456703 0.8154621717948004092711069943207380 0.0053711497351306919361601350035433 1.0053856262200500636056188229796215 GT 1 -1070196148472823375158.3558901961896172638904582575451595 0.3901018070851083863479270969768616 0.0384910346530229276380199007812931 1.0392513896629444522605608884077422 GT 1 -52768661417581127606681445.9519707013790129511691152125012717 0.7421323942803948822251384832533187 0.0386617572232666401557627168914521 1.0394289623478369812346255113181864 GT 1 -242093.4862666996037313283541632592981983 1.6123322455554453347248326457165291 0.0717951343236782643378756264681593 1.0745028101328630504999225899451747 GT 1 -166028869976710645246015343000672643361.7467063086675063189237647402371280 1.1914034978937440419709668622024287 0.0458659186192845871792150289636305 1.0469510708889213873888098284486610 GT 1 -23707099598853042335059946009248.0967052818383877581431376913977920 0.5536667552219844836565849826020599 0.0724893977043005525314841005422712 1.0752510535193045389592490177792464 GT 1 -3067102720607342943920745183770885.1440388961173784357207365477567592 0.0313945391410396053923902408980583 0.0515416889107787204976020858756364 1.0529174430356087071401032081673127 GT 1 -23853173236270102.3193482531549257598473805845166577 0.1827320762697620253401354259078801 0.0957467553318306894222483135901956 1.1006458199139905514251949977735373 GT 1 -5198807508155239637233195902879791531.3240459088418112545258073670881056 0.6464080269320346635782177528591300 0.0621174090285418676876550836656171 1.0641305073502963214822948812522445 GT 1 -104403478996.6368323936843999558328223434551083 0.9950552086283807303316516160985477 0.0365629192350046223220407048979110 1.0372480960467556775531379890996128 GT 1 -90380608463254805071220320745041201846.0551143626753848889438679441450610 0.7057265338240307005386952986490665 0.0533625065578736729591587387772015 1.0548390537563282137194050333671319 GT 1 -235287249147189.9483465684613347422208158720092409 0.0779049524189726304112674663405769 0.0827588694346657541838380708925269 1.0863848853870268394409754849898547 GT 1 -122164704281575777270590784913.7305249427817072019522598759943722 1.0356175284061414750417148787668250 0.0049351511623760084227997714978547 1.0049473692361436024051940878958096 GT 1 -4.2711102479687131121426767468098057 0.6331618251875215457590204965932733 0.0196375757437534719886399985838317 1.0198329550146888603845438053720756 GT 1 -1613153502.7028160283412548422075061072018436 0.3601812048955905406154476202113017 0.0004946622981173030813981089906540 1.0004947846838733027830954048594814 GT 1 -69149712.4500460042748980394786493107347947 0.0611049519310016319480045440528914 0.0432244738525805107623844131804276 1.0441864749722167356883406547587491 GT 1 -1341121679622309457401486375303410029.6428284052544404296339344329965354 0.7334947688246599294796895949892888 0.0668008334950878454908545637644289 1.0691366319933062837945560495298153 GT 1 -17518402132438644650001399.5762488479583797525586982773562676 1.8130809625962434584439992365837635 0.0844740127087321615050046644987789 1.0882565293706426548124527729074672 GT 1 -933.4575293989904303032726804163500271 0.5822987068917940890390609018556728 0.0444585956052611701913717174345084 1.0454771835407599896915567252733751 GT 1 -21536071940453754548370248187363846182549.1153920347949339717149112179727837 1.0870533698341168155725811612292520 0.0344815934696748737126033029777742 1.0350901130484472181368969605166609 GT 1 -1973381109276878592013629.3827585183146494679960423205299603 1.7599220378709862210722874371061418 0.0754753894789102909682097215062110 1.0784756081511445564832841705392352 GT 1 -63855.8090991880313271312719916594963665 0.7679040212044709510643665517630968 0.0752502614955359036320729061077148 1.0782321310439158016880071799924585 GT 1 -4679947253320012883350.5739040250526867942474066347031813 1.6531283144636111382617413242163203 0.0917902435019064357856555023409346 1.0962799177002632960359931075367957 GT 1 -1002855630876711.4001994125914142938743746845846885 0.2060184756629328934553049479814051 0.0564048731537274296840526396790191 1.0580580958893875384650643829924825 GT 1 -599756685701783167796.9569022683012362863986688100864900 0.1426341573785820852335592553926906 0.0475978626323654645478105689078977 1.0487679201808150900146231665845901 GT 1 -37374458138860646225462249.2049978086829093408061979511331338 0.8585960131341314222494897504909918 0.0943118241594620459700439198014076 1.0990602089580262533897808970915395 GT 1 -13788.8845351266438022856971874577075702 1.2167823082226834037991925645969952 0.0193542343160548747280917294415136 1.0195439797507161166506132504347312 GT 1 -38128369386.0269153982517261782240721261937090 0.7480777848524739617572838318991550 0.0063849406235689361260687816721873 1.0064054115405340238180152974399322 GT 1 -818529793142411309046484765783520.3775650969068404310960596510620251 0.6973873840513406265383639625183480 0.0174906309128032915175993383094412 1.0176453993175753659582532724064060 GT 1 -33426830876314.1738404021990696445405301570986245 0.1267085176261446152392659044619507 0.0621339207580621345500126027530461 1.0641481128320784995616302659893236 GT 1 -1496505.7978371904645331243082368920302566 0.0786187174694934351133487055020160 0.0462046080209516865412126817442327 1.0473061043531597693486633176370957 GT 1 -2.9954978873552116660679990664782842 0.2772879736399773770573149231298499 0.0384386044764528318124917478272868 1.0391968620932310354991901912073928 GT 1 -4267879.3351520978342174234983139042203023 4.3639083754088060653562365639734115 0.0238737742008586966266072619740126 1.0241633712191758631963051366511016 LT 1 -638184389148.0559490398145927636425304281941491 1.6695180463242917709748847249728464 0.0950830752245910901355790729331451 1.0999121353239832789912419564040589 GT 1 -296573170870972649970532474.3120316269407672577909245712878092 1.8488197401570621705702406559166968 0.0730496166672078941573439006277602 1.0758552387615832603984473774835304 GT 1 -62642732240188366873562395.5941167574893469285966731662570748 0.2031151441262909966013455158936500 0.0256027636826752244599406943752013 1.0259362183222706252200117711818096 GT 1 -1277712991284424455487094557059333.8812114391501798495839064959056371 0.3509925244132704049443989273080178 0.0790442508543127799412101069448693 1.0823432904113001698915621253843902 GT 1 -2877958133572.0042779841102276610054916415280239 4.6274993815691919886262387405221059 0.0081323983198614152437929512826781 1.0081656466528972353436619953487676 GT 1 -4.1424939186569789996000892431721661 0.0492183792835241307745276616177229 0.0139494993564684750091977983213892 1.0140477079998743544552732621048951 GT 1 -1001380187497406.5441556850585770582553980203124235 0.4418853842489908766705326175696927 0.0284936126649642557370304648612986 1.0289074354718595834274796452755570 GT 1 -1781793364079156671.8344719854088323093374578269131262 0.2246667856244680902163302048067713 0.0445669758959834005310315619360265 1.0455906128878220292691702909785663 GT 1 -454.0704068673465761931655689337290650 1.5303568086143847145953856001725301 0.0932501799553162743562791157243811 1.0978886992810322611684941620390825 GT 1 -26855951571943454207.1520813286242815373338842899560853 0.3019646590245463484782769832555011 0.0836525509261427954815021502216478 1.0873596750123185491484229669732663 GT 1 -19867755707330050507741030849955823163327.4517230799629078439575014008460347 1.7289829202226663202410411002644700 0.0538759005438773455428932015393948 1.0553815351766194421205913900533696 GT 1 -2042.3916469091855370084016231965346701 0.0726477473811031871522727368617467 0.0919628044455474453344999154755982 1.0964699369528381994182692578442553 GT 1 -2010636440827462602334502841314.1814609884567068894347900189122714 0.7151677316192750075848965138116416 0.0651992047997683164742190712300738 1.0674218256543046585273337683870148 GT 1 -2968034502208318081.9035523783300119523637520998187514 1.5501550355852583180620436437829150 0.0943685996071916340146911543821455 1.0991228985557020505429332837871875 GT 1 -20.7642195321502799258962054926791393 1.0881253547997222977373218250158944 0.0168887303658259398886862562372400 1.0170329713099190241029885693515132 GT 1 -1747944445117952.8055979641277692755308901192451319 2.8161579450810388991280516877353319 0.0420631731845704146745160246214362 1.0429734459669860456924524286804499 GT 1 -687131199450716939.3596279695792751167724757051542689 3.2514206021473020561176481884842656 0.0568678649983940193768425666577607 1.0585488842119208731963982476727230 LT 1 -57934177830.0852146269964313442549423637328997 0.7737069017635620029449565476888722 0.0574666677940870267241236149657605 1.0591839945496074285041360576148481 GT 1 -3179146803541111409096.8824735538725510217834403082313950 0.7049252247531366653404419759321413 0.0548889728047154270548895124521929 1.0564528692941583062206557862647365 GT 1 -176919496089450409532819491.5017597684535933938337127790275812 0.3145953519969691816766340975509310 0.0969034731372835719168089095189991 1.1019258355275787170359949128755438 GT 1 -233005178579804327421986572066.0457474284668182603981978620537710 0.0401941763647906496675726622719798 0.0796468901986333210398491084890665 1.0829978675757015421369017001491115 GT 1 -3382406282563160283430834620305.6407698406002545650769442401997774 0.1438484371322825164022724599140139 0.0021737445322391184540592198142227 1.0021761105442437646776356697556880 GT 1 -18.8035342591990817550218987213875950 0.1850236255049978398299258958341319 0.0036581437246468113123952223869789 1.0036648510950815892572700548116954 GT 1 -1855694527509276056275571144536122369.9863224442967343437245107159475033 0.3188935795734126508953526773788896 0.0570911407883838441379781999079164 1.0587856508481900993326309314562939 GT 1 -3004039881376021310189072737772327874351.8908620014012763524443844247894877 1.1372781710586627509964839099970718 0.0479805930654655522314438963258358 1.0491698589631165593090206061215203 GT 1 -206559218087307792879414286.9238736034178172179858562881904288 1.6840099282825761766838983452363989 0.0253500623015930635570789571146972 1.0256769107120012593189739830542558 GT 1 -2029007821591441953515896580950669557475.5881662615922280029201739763745617 0.7709188248933115892670329402966032 0.0150423493487417258897944846741022 1.0151566329970099302546880887777319 GT 1 -2607641359167.5418806262186728644387515049093498 0.2837470133962579143647362661182189 0.0797957098919076914376746782151325 1.0831595791241770222563363405877550 GT 1 -60.3799617975130314747704129063834972 0.1261932540110323923295532054235143 0.0139147599942555957392550794334483 1.0140124778060287367872529759167670 GT 1 -1.8606249839757140924423029021921900 0.2976071125147687614619090448318908 0.0261440444126099537348022112835011 1.0264918758170056741692356579913809 GT 1 -28.1828274457562530349508847076746714 0.1381200640198575737194573069350258 0.0123992561712110432428338760818846 1.0124767683433231821280282863908183 GT 1 -36748013321538858854758856533557827729.7736674713180979252218966725219665 0.9197210107677684363622509390022964 0.0096996268850918436977750958271544 1.0097469746853779947524862021018769 GT 1 -68.5849633500866142305513814122290779 0.1533848980901319628969711893825880 0.0306421878225924866537537495467994 1.0311214760377646915267998643356328 GT 1 -74964012.1632412969841789768082529475094289 0.5306765637539247230911827951198926 0.0608129968273654709536639720539715 1.0627406681933269614009974515567790 GT 1 -98153356662904764487317.4184564545457903150007017457341711 2.4467986538894039074282119274737978 0.0774245146735797944704469351469417 1.0805860795029853322110300932126225 GT 1 -7.9969086779825039946410144675789099 0.2879192796014559749115075479955818 0.0765525196318668490010748964984514 1.0796413511623600147232525042291152 GT 1 -543849944.0418709366657991311305515153163606 0.4151425930175897330681210049287705 0.0303970839137099272349814950797561 1.0308686561568714987384987054786172 GT 1 -10111.7055226899198592784622217106409390 0.7167219749414322165471940627327765 0.0814967355424345699975453523771392 1.0850098202150739559559999273529785 GT 1 -65708984366931651847279.5627758205093117307133184181895730 4.5902766495989516383608746257675392 0.0982144312391357022962658717126046 1.1033785158279391885038001805704788 LT 1 -29198559734936336866560790917.6959443135692653364194027219262789 2.9066437912397473728113248963222026 0.0728108853579356039760532965010747 1.0755977270577958441942376323665776 LT 1 -266961014687617056969501205008.0541998061242782685954955812082148 0.7703260356135634119410679655789434 0.0621985952467413878230392989159749 1.0642170744036328848720515717440093 GT 1 -177950074350845018194973905.4362219355789463198858971344303218 0.1271258301534002084296636876825780 0.0739928743828905297625351715197691 1.0768733493146902627274617618860846 GT 1 -693345638031389852260244192846714674.3744223455306160667592008306259808 0.4864135572707004384460280378635037 0.0875182013671497436881096144262784 1.0915871404281543698909435024538183 GT 1 -7315164168017134367.8242240773550961936526217508063713 1.0027234568114296199162760767041149 0.0748384528068380951837423188283333 1.0777869111042526622381824745958581 GT 1 -122335791.4255347568967103157665769848373325 0.8707199627510058827990786244251355 0.0043928841093470101712468502801805 1.0044025611752978734198905351537980 GT 1 -1048231751578422449610.9495712072142485000507756627847662 0.8687431762306194417328139949695448 0.0622467110360165321879086061895752 1.0642683827333199676883570504681745 GT 1 -469.9130916203887405797598229308856404 0.5853056121235751693901060243535208 0.0660483547284574859735878598862023 1.0683306137513703611698142882448678 GT 1 -4151728336601.8810085923605515854579447073121095 0.2022978515687309390780891802233793 0.0615996534234875092037739642845971 1.0635786123158802000470343448074104 GT 1 -4271767130.5555292693841889514926866166040034 0.3490402289144517211856667166078800 0.0351652123882665036707366389003778 1.0357983968477490241585430058008237 GT 1 -133441766171235013.9825543272733666758742305899422073 0.1064614818014052056633762035110008 0.0989378756679800619107174559591000 1.1041810733267748689760176020644149 GT 1 -156276037670956576655510.6159608021656300532670811998583149 1.9808468537183984538441347121431516 0.0009112845036981286797669352565900 1.0009116999758495350625426630620793 GT 1 -1602056716916445307407229046547168.2589138478521751159525559977342569 0.0527508728867327873301714959079116 0.0114507939508583209665065134080139 1.0115168591084602769941567725522626 GT 1 -2313772320582699123975.0459080127574323649650316028217416 1.1190669695087399566637612410518038 0.0062184978822893014233982373771738 1.0062379132718003392074334778164818 GT 1 -32416396997625411743186563458893347299529.5913289164024424100269856006166591 2.5856257124102577316111307711975697 0.0489132701463373767804936640123399 1.0501500220107918346719535469610633 GT 1 -1164300631994.4225579619386377646159377543540211 0.2923804172851727937453750032513837 0.0798020421118732212932474459540229 1.0831664604676142509331626216121364 GT 1 -429929375596.6917581286001809269217580302880262 1.4625371348551527076939078611321089 0.0914780034611166081126978672827388 1.0959361795084886619874120783941805 GT 1 -1864051698.2857745371097327088961867679016501 0.1067037434817789848403570968279583 0.0565948927060178298399224120075051 1.0582594944366635685986192298073365 GT 1 -127.1084994999203754342556157606391249 0.5785498124587801248324453748354960 0.0857231982768789190758111709154663 1.0896219068525366354404527939070661 GT 1 -11.4304440480036249807732717969800653 0.2669380614385437963778526839150950 0.0264464765284528365836414196339448 1.0268024752276857352066049274377739 GT 1 -6.5475617936512321311763090953456729 1.4978356931453884754364820613815820 0.0891033748043696549761948553461060 1.0933258621502677744227812424575063 GT 1 -1103218606475608850182160.6552215831468828058265557643520790 0.1439044538281973133442575267358339 0.0075127249129717426778383682008323 1.0075410875739864818891001677493559 GT 1 -3884410.0147662454255929860568294552092324 0.2772712272332011726153578985170154 0.0314102565953102209725620268240228 1.0319141381618980549960889458416201 GT 1 -675593592.2589735780626567107530768657566246 0.6417077128672279764334242642596743 0.0008776300931372188891969003074355 1.0008780154359028439526439833924363 GT 1 -104553114362501479.1401469979428269948555660765939496 1.0157184537168838741999862321006202 0.0184334454950725192042190375212514 1.0186054585936567126617303108952228 GT 1 -371.0530019010769867134124853323707376 0.0368820000341234269445294576393317 0.0451294869362194368518815438194307 1.0461795361092363735685613189690777 GT 1 -921814124791874360151498621070392068425.4713893040063119545796670867452606 0.0699809638117539874194071112203517 0.0170344606051924446629203053935250 1.0171812160162948300141679907140965 GT 1 -122693794561094527310936883197.4264887946390237114822231284809466 0.0487176560146619266622667979134771 0.0737284376382101701468676434206759 1.0765878234397848881194812954865065 GT 1 -249862818414572300891122992853803277550.8511623135454266116572844056745252 0.3490212631241516047014769044025779 0.0299786394563472724422185838466604 1.0304371865481477187032461477038375 GT 1 -254591890320803291180910426252612157842267.7094393900527245534297200087201925 0.9742543944909586183996694696428420 0.0097774462345789091981544108912163 1.0098255593343824803545226371923787 GT 1 -150869824473405.5680996405580327078213411601814243 0.7964974890051373102832206284242326 0.0240256214528492167087588909416213 1.0243189444021959393967996034377449 GT 1 -45243386633445457847069.3119723236491842836556578617392194 2.2090221754571367202431614506088223 0.0432816402221380912490875417459819 1.0442462257453914773260199668760065 GT 1 -12229771377861561272976955102229443.4650610077068563201494145441493123 0.1783597335187248948400168144303362 0.0204447471558156090379133520257740 1.0206566339550120531668734733834720 GT 1 -13246166300017554.0902314607133473100877399477935000 0.5448362891116241746048830219457845 0.0675159529126861694290254989245671 1.0699032352916692849116701141677998 GT 1 -278859392131303705298848881247481816953.9874120787134834561399234726144887 0.5317650025951864375534329293985214 0.0717051108968959173395292448366603 1.0744058282435618021279778148311606 GT 1 -3914.9086784241922350531808111115366393 0.0846645481074765895074708902906290 0.0073831196326238828258020396556493 1.0074105097600456855210384673266156 GT 1 -428843459099272666.4681862049557630049156757078112804 0.4309540858179475568861109595937221 0.0225242140140060887832236273777747 1.0227817587992588650098087172642419 GT 1 -79188197367224357392855709080882253.4685902709643491709625489197623980 1.0235252534046285321954395181902001 0.0448962447609618242951488382609573 1.0459353001734043164828435715407252 GT 1 -22643338296134602163076114254447996.0085164266329078099528535706317723 0.3308866076968019791250163714157661 0.0703768541734208799645837281891632 1.0729759944997726833543497255707639 GT 1 -24822085966371853342430.3829662573201403342478121015158898 0.3859618216831641683804311750306754 0.0564119511404246785674844409446172 1.0580655970019328373591163259096650 GT 1 -4365411927196.3719982550620300167281472062977624 0.1213306974233739449326020004024662 0.0139011815408454858715671764861477 1.0139987078403381170533198653797562 GT 1 -2347397866.2175811167614697897788709967816794 0.4770411238043265893856517721706477 0.0522485989142302586283800007259828 1.0536630462583553380128268843133562 GT 1 -646237132120620421661763624367645163.6513351149659436786055345342977974 1.8404834183205308691697760193068241 0.0168392546224714655916206031756194 1.0169826468960157712821208031141057 GT 1 -495280125602738272956299792573433.6811702866235394359868678531164902 1.8755658700551697252443331269702013 0.0509642112612838155436185312383924 1.0523087690298490850387730828107370 GT 1 -1051984496269974304353541040131229952062.0320075959098581238525249865584816 1.7836112043696316803081933697687643 0.0205896733974619517915108792325568 1.0208045959645861853377804305322346 GT 1 -2554852100432172637898664342488256.4370614721991879106902628840171134 0.3140381051995373973283142743414855 0.0351557035303696589218699665414077 1.0357885414702664533019417803006313 GT 1 -148544160227800848973304708827759.6556633484458293937332353844176315 0.5910247070460887899215417472303556 0.0575186618367441683990506213393647 1.0592391602132891279804245778007583 GT 1 -23075613575813045969777527.5822363581661624913003194764552129 0.3531379934311609978108379121133679 0.0254741801833423229117242472880971 1.0258042649348705705368983905666069 GT 1 -10442.5712591719951734102783631032501490 0.8620864209678378400449516147004161 0.0746299378312271020355404138383186 1.0775615542657760103074175184038827 GT 1 -1613516614949345497341880.8710228122032024138839211391707880 0.1531640565853604341852062266435925 0.0640571416222116561760015844278102 1.0662008531097744004251953426991766 GT 1 -102902.8428173597390127593331493548542259 2.2653169008566783901134713237647533 0.0823169032164994759880907927290593 1.0859031584359889008483905985836051 GT 1 -253795606837698361061712886794193.6065891264384635617175129141928502 1.1638118906836244097543019238888644 0.0749246775451277805480558764865640 1.0778801151039854176441565810830465 GT 1 -33614349392610.3058003868314389568967283132040019 0.1909598033063106120162810095837335 0.0127517808424771150823660002272295 1.0128337826584608526713067067432916 GT 1 -21179859058561741832407625161627513895.5604046678573357107699796295536101 2.1032868384770129416748575772493575 0.0008952884025221177314418056778007 1.0008956894125482456965430352578588 GT 1 -2333378500807636668482942998922325567882.1787949123685823771910838595277458 1.6480976740312620355350193692508413 0.0942042787336092069257720230466151 1.0989414715779689976634535211690166 GT 1 -431928189468044303624487985475674217946.6523961668618427728269569769692372 2.8275248612385441177654711706831088 0.0407725982328851008750167564644431 1.0416271083633645513014410880622441 GT 1 -4161998890277673666616525705483622400148909.7683323073561456331575509566852220 0.7307293015167449120857185354207288 0.0330698522708049296780870450113097 1.0336290221988043339783226543648174 GT 1 -21527984167308475911345418.7207173459435392402000441933928072 0.6529899956767083146362966835921192 0.0530732883017812608217040103213725 1.0545335787610190274780786443652570 GT 1 -1501.9677545908881852815262809896259681 1.5957230957388827764038487120510779 0.0694012455266076318229190738502078 1.0719270779849148819407323157668746 GT 1 -6981270440194534.1482585406007862740134042704022524 0.2789613112641581554792233015451330 0.0562720686526366864676727667040356 1.0579173626951064884768961581087698 GT 1 -17148411411305669339856616676527543874.2185109891313090179527828840363831 1.4830063890722028117743732230233093 0.0242676867406086644769324276423511 1.0245669993891638862965625722295064 GT 1 -49608773504066904443790354893.6272672328121139108665439910683151 2.2177663121666639611910451462547969 0.0897400888453863852141601254256399 1.0940251035984912202213257035024550 GT 1 -28441525683626685946.1897135940738082169849379499890360 0.6180251205317726221415570824459503 0.0271934580589903504507539008777450 1.0275700429357228354013328095654281 GT 1 -10769.9761634400725775250825555769187827 0.2327858232836315021282908643152554 0.0056734392733244682012661223342170 1.0056895943621720851617813416946186 GT 1 -965154136208130043938841540078.8711820548526747353958928633214330 0.8695824027246304965201692578143377 0.0409974307452399154241613009856982 1.0418615250045190105953982572653424 GT 1 -53067055041.2768021384590251659906128203893673 0.0867245912746664460258755115302901 0.0530171267289446734971028566692116 1.0544742712066365300769207817599884 GT 1 -5882364439938536456.1460337712783140142714035064996752 1.2322350347525050828715323282357075 0.0229229826111799266959714397012579 1.0231897995562219209914723028139877 GT 1 -11440031523596610617.0213623239729199581207469983242403 1.0344970537839553973262628329223448 0.0137497029609103753937037084140721 1.0138451056417793975820294843554271 GT 1 -6845029700692737.1898373443172886197822742153510524 0.6742336848420100453618488829541122 0.0517181202346532404839149150674411 1.0531034793997181005679577589738816 GT 1 -4596459078091365.1001696129629996036806099812112265 0.1840146067162630822630931129803416 0.0728992832401418073671757262205058 1.0756930712491689220388932856554908 GT 1 -107066965154378300805334800800912635290.3376595726520425202488750919291071 0.5707830118969768107002057834072185 0.0358090609484451591960260326258737 1.0364659344292212353855331283656368 GT 1 -15231.3006045383143808766798709477613526 0.3690387048947971069288071611365625 0.0640777977454984919157692124368405 1.0662229232084392014424597102319090 GT 1 -154617267789115217902345645555042130.1104522269238798452255196498254218 1.0165495151350567432183274946368719 0.0978910422175500614756234132961095 1.1030199704470517990906742124074550 GT 1 -576531017049596381538211742383499082958.2013359511498676277331338749681983 0.3635302294528437613808854675962670 0.0963090655683417567179380756408427 1.1012678637371827748304312263154736 GT 1 -9498209.0253207204177030803008372780478720 2.2853809449687809646308911741842913 0.0061443331882075347997029588868443 1.0061632872834403721817926953428274 GT 1 -48.0555367200284031301137951729400633 0.5353959922601381124452292748050967 0.0711390700767546235770160904011510 1.0737962500575313287012671961571328 GT 1 -2945517261715474925707.0778599001231120371065094797170048 0.2349907145234033800022923751927304 0.0119079391445955478671181456434700 1.0119794065717171256410859214883920 GT 1 -124022292558487088551039.0072754849149237293783995447994096 0.9136035349088070757698003305932281 0.0635224200637816495298898624933161 1.0656296976555561909877356212036796 GT 1 -11234420.8859272988817370663076747250355634 0.3587921325274643291433601791977138 0.0783931349290579920628167388478783 1.0816365399895413919156598644192129 GT 1 -78503118159425437743481291677.7237648406345988637524535402188959 0.9347066389588029552413966614196484 0.0415608083644618634606181901961830 1.0424491596820616915258732248577902 GT 1 -10038045637395030161658.4235578659330184713779204245403253 2.2588741415613662443077215496949168 0.0235203678664474693313332995737149 1.0238013869130913020924760197961789 GT 1 -2429432609263096245161920236.7336637992310923656488915221640669 0.4076679142083692915424501086693802 0.0696959361840256651667230739603065 1.0722437959316933194349916843467681 GT 1 -3758549179651709619.2812254250112387755167503838466358 1.0020097390731335480299777637694704 0.0727791733830323444459381767033047 1.0755635253700235921852416968394768 GT 1 -1607963062793930128882736856057133.4202378004248485243866370343055886 1.4050802186992046711559400997087451 0.0640243922718073907504504699421787 1.0661658629635681579555509396084318 GT 1 -170154232013.3353022312845165081416419320073635 0.0833683106055186661708341445076637 0.0943630102618337527755610915609021 1.0991167268084465322044774523720981 GT 1 -7453911549239011.3692093924299056502837682423254271 0.1029720441542225443660275725591448 0.0422557511988907108700870224705620 1.0431745003255848850586227911753851 GT 1 -35353489234.8748940893163169848220015199331526 1.1983771162241175343785638400109452 0.0947468700364767990126134022993611 1.0995406727742631059806322614838339 GT 1 -24878600520958295817.4889558652606844093120254790898122 0.0697802230231605235155337753497021 0.0177584767649110233400994363101368 1.0179180505272668098017635342418734 GT 1 -722062467158047814065361837126514671440.1670632408235260405845592781844197 0.5538701813311167384793366154496008 0.0242820565137725150879754157459486 1.0245817266650597878612263238076727 GT 1 -5.4411860392395116424107427909092119 0.8862415152754467974300994773257090 0.0967862814667261176009372859130016 1.1017960774519429404474981709706152 GT 1 -69514862169841825283442818228.8551690645065939772704175870409564 0.0211757307707608862628684617355358 0.0074693018955042271069421126023084 1.0074973368190201414942268058806990 GT 1 -4752352871805134606525937497845776.9084984760757487355247309075252541 0.6017398163268922877647475962824458 0.0863419733568891912260171961998682 1.0902989278207276409846057220391596 GT 1 -391.4798259530031355351023476787956643 0.8721318693699295868262920069233698 0.0179714086956415082808385716344147 1.0181348556702951888005531482754478 GT 1 -10844.7221423079002395510902698369118931 3.1835654063357845583541047709890059 0.0416436508674001441947368016215399 1.0434402367790049594465881525455913 LT 2 -8774299059.5087908982735439654987351717153772 0.0491458972883003484204280702351175 0.0932353509436405926704172713389236 1.0978723453870560384037337176978676 GT 1 -328033770275814306043081087399441108565748.3082889236429824428410893914265135 0.1155341463894854132023257468240753 0.0170863002932169345883094728187702 1.0172339554592935734336493279586208 GT 1 -216877739171402380101462952595178496739467.3472925139023530726739711915761976 0.0055545399458793534230973683310739 0.0479459855311172880340042754382775 1.0491335079128229553821402662763207 GT 1 -5146488.1847092993119061503186830598935117 0.0361621060389512700569788269977702 0.0884727464728546041371009806072771 1.0926337856646062540597308865050349 GT 1 -40837081.3728833437730000233429811501205571 0.6145228165495492887792897193946597 0.0252907688070722255091477912528854 1.0256160768795445693398161483346698 GT 1 -132267880824.0199960010608856556127793444209646 0.9050738929852307573073661284099676 0.0083883169003324901156119539777759 1.0084236968214621345802177291905144 GT 1 -1586626709194665605341946.5524886417734129941515122068815718 0.0095522797081259079278560251637182 0.0853808202572998937384407748530097 1.0892474973431404440727956299543397 GT 1 -81.4285869666007691257746054765903984 0.3275012094579203930265801873985817 0.0924744246607274685210610291871642 1.0970335310482058730186551782204920 GT 1 -30048388873190.1904162468772199739895379771702754 0.4256332937469542124972223026879509 0.0134509558036916674386670396184858 1.0135422394016525633510291424580924 GT 1 -14528674568.2059409286751907535339165638895135 2.0244164464218913284803166754909883 0.0870735658356205231611078250917036 1.0910999775762135092708254419629105 GT 1 -16679233582974249027967430874.4601843194047881103313954143108865 0.3227585142307845240646329681861766 0.0640747226895291765352651001303489 1.0662196376245410594776663619943424 GT 1 -7692989438753565383996179070741193991184640.3907842564156907880027179629991015 0.7343720334065913211249694524682673 0.0729555095078242692904952061610310 1.0757537205095178759254359346262187 GT 1 -352696216722269188316330146059.6720007820435012036157445976708534 1.7072583416394205483688277858065809 0.0696831165721145071370177649727714 1.0722300160030836253509000864084946 GT 1 -39587946747193095597093983083012597164174.6120404161797352275911553242118924 1.9719295233736372511820059395057880 0.0539481204561302422574634413694989 1.0554578704785041367060925175357352 GT 1 -278018187325405091272943927564712.8147984799330704815081353875448639 0.2351705138321792391446377263141538 0.0238632549282033193425255163215181 1.0241525947276760666715783980643466 GT 1 -374546.0542824001052089006981582929134226 1.9275038676493687865679636395256310 0.0790861699512583511980689712393257 1.0823888083974011650345950225779448 GT 1 -23585150101452243347522137914.4993917887692434319012037151838066 0.2262454194590172195117938661749772 0.0446213249509840472166620767237167 1.0456474987181101660090710510203216 GT 1 -34084831656143290104161634805153433408.9842278021759439448093695921073253 0.3589369544851855033933292768548747 0.0359265946454775909853157185771583 1.0365878406372771543201960257609393 GT 1 -28495684005804932459302624511092330118902.6986619315929253333165902866058054 0.2685440498883297243387779635016991 0.0347724806834652070227679324226359 1.0353914341203678080953098781530061 GT 1 -2505248501818724282648189222261209153158.4479710622875785365990316403312224 1.0116206075086081835232914869730436 0.0274957122709363748052966596623626 1.0278807945233542997573452888921982 GT 1 -2446255982301811430269395798752751120546499.2018972586971019874173060220244915 0.8698799613140447677608241933064079 0.0821688391146096204675133191812241 1.0857418258812649175714915019172343 GT 1 -240730288644167526808910.2762027301871984830695541877559851 0.9965871700822535936378943615127301 0.0090775249720908173673205803874740 1.0091189767455908251975594418915406 GT 1 -3215077140914637116280639.2873251347581566008874286959473896 0.8740012935810616587522742049603798 0.0409276231330629467814042501102927 1.0417887357609610988848515764463386 GT 1 -59715871361691091607244964103236.6341305601022169156200481622014896 0.0921077160499822198119525726967321 0.0920489031011068633304954062688369 1.0965647598721067080088068526382429 GT 1 -22501870130494.3117101473233012432949423311997404 0.8354505484292517111947667368996334 0.0938313467865240579663393096876111 1.0985298388134362538877739962792463 GT 1 -3144042784990175629539745988817009370108720.9746394684759020533748475493335766 0.0932436748196402234230297060455217 0.0042851414346021584704311986160967 1.0042943489662909191256943049664730 GT 1 -619114334514221933148880233704.5391225127190704059800491286626513 3.9472868491882400968586070979196494 0.0490096406740904141507240137501097 1.0502513538951657402285045012847753 LT 1 -327438381116382752773755555.0370556404210900766802940284299225 0.8483859157558886321206177475970405 0.0752949279903961800768327184806844 1.0782804333810316195606574581669879 GT 1 -1946373891920764355505377921148558.7089923065939392369573505560239187 0.1829257270004413246935052712004642 0.0435230434961113922808112727154595 1.0444985818673200861786802980910435 GT 1 -27806192519819258379.1541975621453888980941488200732138 1.1494822694972898529347714587997417 0.0170796293589191832461861991863761 1.0172271685850620199087807620332319 GT 1 -843.6529871055979428559299458740105542 5.4235125796375112147183068771654045 0.0416900049070888312342194617830788 1.0425839676618612215852321685854874 LT 1 -13161712374927076985.4937315639052299266289800946730594 3.6192546873076479900758047058469454 0.0974957054662449869125311088877221 1.1025818303002674870259864581949695 LT 1 -237726103363000706059441777022966.5979178846595691733537710811354617 2.9233278645346977471513691468020519 0.0349478875499930842890497289617601 1.0355731765623684642093955713393403 GT 1 -1853415363963971100216026179480785588.0676232251599575548520063621408432 0.2722474788749898644987071885548711 0.0941744121983883076557073895626655 1.0989084994164315844460576540864208 GT 1 -22695844593856938198.8722948246272366146624022016830166 2.6227838427981358660123809424390938 0.0759552618720702852455736881919633 1.0821148790981500398367471980821617 LT 2 -69774907625006186344515144156.4035471498053946872871980282674521 0.1512739074041413179924546252850841 0.0636301312422122090425278312538795 1.0657447216300122269119156678827358 GT 1 -167806960812224944069850.6093160923685222052170455560402597 0.4710328459774034754725665725450125 0.0983238242398691215789401580463604 1.1034998302957397102317575581019497 GT 1 -4.4142017171279609482308235064082089 1.0540859517094622842385069711827669 0.0571102489373528547386368737262828 1.0588059161605787700762890328777195 GT 1 -7278989735896284401556205442276801014617555.7134930983241687429066861626089941 2.0126649519384467160476113083045046 0.0224465257532955757905614310513671 1.0227022835071681899937555265779428 GT 1 -9913999992229117421596024263584.2346794945111370776471779679247903 0.1161123619808749980103974980961666 0.0744625328285963238480778243421124 1.0773806646206331994402115268754352 GT 1 -7.3444025994487529613685357769531600 0.3333135235920589194606349524600704 0.0907322596406050439521706485042171 1.0951156843244625565594761619168934 GT 1 -156706055283829896636699901653.1028683862270659136211062042848494 1.2654378354793391034758052816485727 0.0387137955501565815282999990493798 1.0394830949445359519187609605467867 GT 1 -1024503665617306110634106.2296261352165380319397636895097120 2.6510238155154207714101195602928668 0.0012217152703969232356024493496772 1.0012224621728946497751091428115414 GT 1 -238730054.1569544799194187996034776603044312 2.2791271314763874470898037029481697 0.0395746235767887657693653666085830 1.0403789922194209146162981331649108 GT 1 -23388376868721685461436102100.5683784965261140551073713298857892 2.2542393881443696481245673890616100 0.0474899086639477929984146030870716 1.0486545774588706723860196751271284 GT 1 -493530812754176566871778589756409.3657004543319929291717100674222403 0.6526967791252517663452275367659848 0.0027450971135963820850744916382669 1.0027488718021849805056525790427944 GT 1 -3857.9045330823516662933234110307654866 0.9250036511610717363818298840969243 0.0403072399133957477962770927970997 1.0411420873209439111821269684784557 GT 1 -679558541138324551399.2236081204819574186105754841082818 1.5590462527671450298821184538057324 0.0878448495439956944388726817627191 1.0919451822627216153372722736946336 GT 1 -5884373968.4010969971876819210351561783620337 0.5107987429053563730065094653666305 0.0327990341568472694880240011642986 1.0333489810849138462614831192427303 GT 1 -22606027054769481406490.4175402440026292372106856590505950 3.6273771977626397154080547540989621 0.0830161322352008216103559750444067 1.0866653992852195221950665999811783 LT 1 -19562928506.6954927059698862560223088211307338 0.9123493309052669046050660978180341 0.0644888458000540928463370835761970 1.0666622100895327981286285532148205 GT 1 -91639260552645122.0245457871812872692090697019046231 3.4161697480194336429497038382332313 0.0346160889618339631264615358904693 1.0358499775550256645362344029643275 LT 2 -106465967194099.2506673675034030668527587703378815 0.4904609097619822344362640024888857 0.0412437077412622840852273379845287 1.0421183633404731261245309410932114 GT 1 -107070937470735968194753000962029386.6991336499957345960859324751107223 1.2133800332690067615783069769116709 0.0941839993129186174160394050027847 1.0989190833140317681711693991092207 GT 1 -30196819.4675024739212871269250887042405615 0.7874372106173378926215392320263288 0.0293062482308460869590070904932846 1.0297442551146369511141260295436338 GT 1 -187665725750869068.8135317268324636440563719150125396 0.4858025694555867831165628857397741 0.0693378552405730675190611582525195 1.0718589625626382928766787694332549 GT 1 -158033323122313626719947.1829849109698535759310411766107574 1.9721028181006881958726691974099480 0.0669947794036280561040612463009102 1.0693444826559442562291161167850280 GT 1 -2220909093750162791.2945775084878021051015103205281897 3.9987046013438157545215783507361625 0.0115323524325454302456860938073925 1.0115993657209701087577180182689716 GT 1 -9270356665041984916096618560.9561013488103144527864810277977750 0.7053491777924410235222917875463274 0.0161026574017038625973244204689609 1.0162337140000326131973965466350617 GT 1 -5152384426015860.3764330270132542919409143380176334 2.5553411759854008095716910598176239 0.0419147955217410135030374083181263 1.0428185650097709288824028374922806 GT 1 -8089700.0775485532871748683521848495831099 0.3995668634147139723761510375845769 0.0610773053598800963025074322723371 1.0630221304897703888715426181635781 GT 1 -10935895510038029916971995467404851515.0185527478568325828031098551667498 1.2078366525944732898691545763791544 0.0053212979162379458262807182511051 1.0053355064496361572298193325035788 GT 1 -109982847966045527866560.5578363585145572706066575758729869 0.2229922855902775323445545620220082 0.0749964102232410296601641802974307 1.0779576606375028701485578190684349 GT 1 -1429450237788359250104985245.6137350034085187797537660024308957 1.5631381410909546943449790156518548 0.0514843606788975594189614980297674 1.0528570012652974032936343569033057 GT 1 -5217501599363965036279949728755272259.5935042207377006764031932548254170 0.1647335423535841162108594557614908 0.0606863630613714204995079341673835 1.0626058438941152510345059973467950 GT 1 -14721564624534805608486133717418560406947.1651461915993225960010592598927962 0.1138499199958782780472688893367889 0.0334270999220524578950594493920244 1.0339985562998423839247209997156647 GT 1 -47620340403543368832250.6161625460456949459372944524882673 3.1413152881221532700599318495024563 0.0669498846349575282097459813101914 1.0692963653597269288494306866415513 LT 1 -49272133269131.8813051492035326403577038658994388 0.9032337446528279611947800800624092 0.0528758087318077673846753034359382 1.0543250526117167119635599275554483 GT 1 -3478574540.5049005517560511694193496502987946 0.4268570058038435219028555804379810 0.0789113244059317283759035521221815 1.0821989655005363417480047147635008 GT 1 -62024577.4842164900867127422464039068278802 0.0310216443009462927886149543333947 0.0515817563006744093226171713018441 1.0529596886839093308119403769982617 GT 1 -9005690203121420546.5700741459779660123267331858577737 0.5547157905358021960182605690938663 0.0178750446990184289205684888655170 1.0180367329987077842117606029863243 GT 1 -5813149692601327105047923504318674.3091195453123845051072341823196459 2.0907368700578488321677696837981536 0.0798092898589041595927462233786061 1.0831743367897812821038044306517498 GT 1 -165238955299028405382986537810818506057973.5385444509108378040294043813596283 0.6017055620826374048866800936614781 0.0963368061385431413463939452687754 1.1012985611746902339009996269586194 GT 1 -141591.5804981242007961821248561418429167 0.3678405347091544557446627464526132 0.0103844505702643635093634194931044 1.0104387451839983185602035675593673 GT 1 -3706227.1323536894989325123770806543056258 3.2027967821186639579583316150846525 0.0705443085026480203308495860892973 1.0731561421366755408754875125349118 LT 1 -228082210965405904847650741707.9905826725146729516935611248110498 1.6263566568962119937949065636517237 0.0748042911398435603257506782089777 1.0777499867028845927509057205482532 GT 1 -21699058979150765467828128.4965960576976786660091341204760756 0.8865761736237287006867810516993998 0.0924046257742483691947979743651743 1.0969566227997167238300095065743774 GT 1 -292076601610763934950948.2630141706731946301620262932861600 0.3906638344225058741000575308026870 0.0817567627840523314790048877968256 1.0852929591709592577570137148852434 GT 1 -9.0592077129276206123442522129162474 2.0247170235987448379090700013311270 0.0979306517699156355994647976663191 1.1030638791363869238054006798843294 GT 1 -796970801374175555512275005935.3090453873505561066266547101937942 1.2040272824643827596013420254871444 0.0246236014699629505438703803946458 1.0249318327079343728715047883313147 GT 1 -5427873278217444342487676.6886513737492490660810543393764866 0.0135912326445395826996936281802184 0.0900850170068258312920158680736579 1.0944041091178810277908011534741036 GT 1 -1395446056561399305882920386.8142002459928708815592467675181749 4.5040346731490354661807155287375911 0.0263811844827729035601943600313148 1.0267354117794258733047389548069706 LT 1 -1824448175890537365059.9278166482754827394127692620716015 0.6468612638766104846186711775385356 0.0709170130672354010813027329502376 1.0735572148438610409287193701733791 GT 1 -32640505465400154857042953529.3882233901766211511686160688974227 0.8971319808691357600119072490394409 0.0764586493513604225702860606814038 1.0795397043315715756926311223806793 GT 1 -147301156004283798.0447037464107715166748293389798601 0.8101792944165154578170653983119478 0.0633717809663249180704526993731341 1.0654688534599273713936369981609551 GT 1 -1663555700152.0192580836317246286935051455492753 1.8402588807201123442809553611571298 0.0653989739881524876835157528855542 1.0676355509078887967039383171862841 GT 1 -484474917718041.3791190979243218762967705625262600 0.0867568629201079218922937338005621 0.0950822749157305087718567230222304 1.0999112509240071336941054849251440 GT 1 -13371950585520555515097.5400626111375920828155897063312629 0.6346050930041173250168767158886659 0.0771139757110001415878594174391329 1.0802495360813071686771142123613354 GT 1 -28321614876230897.5490763321081161178355185091918172 3.1690855068786773705386170849409999 0.0256517432795070469905131716255416 1.0259864861453569369984684081360582 GT 1 -3675125264751855721215899.8777777784428093392889906023087235 1.1138154018772628212284749062900286 0.0014775129022764908984717074135655 1.0014786055008162624643448041155930 GT 1 -75323502566878655.8106157120372485895099909719777084 1.4070434540689394871588570655780710 0.0030768409482928987974874679532665 1.0030815841552978896444100097405931 GT 1 -72718327050662520696074945.7609564210697669735755601206734779 0.8946299876506408264829930451292638 0.0484812277639058957061866118683520 1.0496958633432351263596519448947296 GT 1 -659305049007938738169075651788424386165357.2183947199224792598107017649046443 3.0470421065178624327823513316245431 0.0537331653351820013881398091224824 1.0552306834615827450676565491626918 LT 1 -7021252272182824.0945482496051875199094607104604890 1.5901067687056828356553708455587191 0.0982204087368838805339486091302855 1.1033851443633319664908294595848272 GT 1 -981.7516846032013593788322702671981306 0.0194556527392004405541883409566348 0.0206848734151260264047305921086549 1.0209018020509053465595969690312322 GT 1 -1544715157396921082733180265937.5688710784385632394858718770959882 1.9202642954641201026437600336762580 0.0370618846525487776389556301662486 1.0377661316087891440875986509544584 GT 1 -247100601739744797656.4695966785176734979681113995882986 3.6791904078584438750907469520160574 0.0801625131867722858921802023025972 1.0835582693108064232882102360923693 LT 1 -518268905974532957919261.6496854036416529479705859118483225 3.1669725802369806242516095470803549 0.0505061352629978155421118271087032 1.0518262103230767609467062193618366 LT 1 -2457879.3394056515809844246909625291000597 2.4272384456652104792245018636437237 0.0098086078699731376873757813639003 1.0098570291545798032317859406675256 GT 1 -212728554779461426285616915199893963396590.6452107782750674615299631145284491 2.1912718173216664135017887205675957 0.0132819908809383011537369483963016 1.0133709854166610941339718613565201 GT 1 -105314044379262.5028954543537140304895495234443838 0.6919742399983754437668955651124576 0.0069719860971063200466437501009477 1.0069964039523263472983948470712152 GT 1 -562043318.0463746759540069501323623901857995 0.2444292321959716996698570968593036 0.0005421620034637256870049895978260 1.0005423090264253027664614127739827 GT 1 -23208100243423875414452743245.6817708152900360476616586528805832 0.2653173070316309293026583912448424 0.0897098585741867814437537373340684 1.0939918935572077804601910644711560 GT 1 -49178916.4473968811450611449580834232549630 0.5834688285575852788511999683636686 0.0888602820739809488556216853856690 1.0930590258352307160444285329260211 GT 1 -466143413270443794642499151165108554237286.0596200604101838277083217800041192 0.1689804823654497600791639444363010 0.0719621144109111134515794700002668 1.0746827220410112956037520893479009 GT 1 -1.2654303066173669283074141292163067 4.9968901245115363013698307485090760 0.0546653875406947890191477487478232 1.0562163269039692931104301768305988 LT 1 -1183.1622325535314066596981599951035707 0.1033665790670649041687080631389105 0.0716783495603884411827500392546655 1.0743770001727788920275867676415776 GT 1 -2624756041703536282489490709073702339844296.4392288855775721738271423300868778 0.2037641259170492778559640100288318 0.0820603585110681454493247011660468 1.0856236405353301861024480134613269 GT 1 -171021935408467893.7266938313592340484060552246649906 0.1468784212244904164785216101720294 0.0026211586918624245451139855839836 1.0026245999429986124293421092852046 GT 1 -375408950485808835610023997114992586286.9739290548225087341276026570495414 0.5275888081905641081879324929714112 0.0133987317698451643979751595885810 1.0134893047280701177425915150358535 GT 1 -2690342478887332011058025.8025630279738031006345989310531846 2.1104359869806363244429865195067369 0.0891845859086583352585318056311047 1.0934150212518064179026356964974719 GT 1 -53411740.1358512991744556544873709093317508 1.1331728170165441574064523081269465 0.0291149562613824674988066911737491 1.0295472072579904258776134425553665 GT 1 -782282581.0123531752731711443066241446435513 0.4473624618891677937185502481111768 0.0941055631522484862970767303793357 1.0988324953482132744355520519203224 GT 1 -12931389283719224382358234025270323.1830340739020116863413906180037195 0.5813672429958003681757841872334773 0.0641830516507719512208513145885150 1.0663353896334220345258511689492076 GT 1 -73930658382.3789673198372654953551711737041532 1.1553356236861420193145709866487807 0.0064975177497220463953277201589203 1.0065187185029207527787638973064316 GT 1 -3306038355192330863284749461515.4211968085574477748025798416077453 3.0998713839623320411576117497611426 0.0473444228509472415675447202420813 1.0496780644431223145668010749551484 LT 2 -5578752135894271238.9534943330230107924179489108054777 0.9428375703936499623993466710636673 0.0759123483673608300851238740588052 1.0789483507651952645140038977193351 GT 1 -3160687388972486062917488339691.2802570797134064319714497199863272 3.3272909270755685469097248384192438 0.0026450538662591977033580925909060 1.0026485582020388427657376338047236 GT 1 -263745026321366047009032005016031256.4548268593535670207212743464168582 0.0016041094007102882452084613659866 0.0937937997312972153081084288606897 1.0984884047192034036802476633240228 GT 1 -315581811945822035787273291393260955.5617469648204350189859319700079702 1.8312721176136890141507472746422488 0.0854398159917535733623806005720179 1.0893120024820494664261875523725737 GT 1 -160210962834090775396414.6883573968265905774764890937801812 2.2116484493463714969102848739878650 0.0494982295076743075748724658139703 1.0507652543596219005106807159210712 GT 1 -102247975172602690937671116681110084.2116976409942722538236835288399984 0.5968735478392521488730086488327403 0.0491608609673344787127604091160277 1.0504103800262603177019514018130528 GT 1 -7563055168.9222210472751102047378199031756936 1.4759563644172948994408152321902498 0.0130062338878474062665871987465053 1.0130915555643941656613837985370052 GT 1 -4343.3133131133787445925595745162306727 1.1126734516235735485151781811382434 0.0396384878725144033293478364387978 1.0404454902740774199271888594899957 GT 1 -633737423578006.9304161193022909556424034836404503 1.1370628889499166343086047453477012 0.0376004654272549164179287768942408 1.0383255979328145009517324738386872 GT 1 -870671718906869505.1755513483689294255809495564388722 0.5482850306477331166682845784332043 0.0601178933287513933076231863514884 1.0620008300184789421529889349930460 GT 1 -4451771824980705048.7759918327777258733951831328009414 0.8106419440867988920728856324875331 0.0370282828572878417420683705181590 1.0377312371451985003165037585417522 GT 1 -72662.2295778333380666874122412943999231 1.5643892500127965831257136470180002 0.0894027461992616071457842806195241 1.0936545718989412053279518953856174 GT 1 -196088366802185637599174664707421861915934.0105948565884545099888485865593242 1.2618252825716410663661950417118975 0.0025696911613861122097935159581199 1.0025729984848000210486358047450436 GT 1 -2782090540685105646269.7763012443809810486370469271271533 0.7356895998508002125140950072310003 0.0931440652850754184983075640594590 1.0977716786219574179510220091230634 GT 1 -178444513159754337451334222568770829502.3486658647739986765561699806856551 2.0471077952113458218471108469057313 0.0651715500109187597330162326176402 1.0673922424747274976274509093157490 GT 1 -487951828636314328762190711505838169.2181620591351876381930510053805378 3.6941362747546374476306475575693002 0.0693642744629576018252627173989375 1.0718873505201038010118342730271235 LT 1 -448919062414326632805291724.2018726042551797581726536405163422 0.3681749027442820493049575880640131 0.0645144074777848321081149693965336 1.0666895342179975981739843092048175 GT 1 -405354595626206.5804168867650043313790671874569535 0.3932504574899449407424508004325888 0.0629527747504331724837684736424006 1.0650215975339825322902493645752423 GT 1 -869732044979667152.8284260302447538214484106562266747 1.1307169796224232246388097461699888 0.0414302330480410234750916667469013 1.0423129315063530215792129672961432 GT 1 -151983781046220857482213650858346086549559.6950664940632489373712988113171138 0.4513551790817965523140958665616621 0.0276998140969748309157691269122518 1.0280906889672997096882300844265417 GT 1 -1542622739990272136.9017217935020307553765421338799170 0.3265806543375127182256619640308754 0.0501173587376244270893398226147081 1.0514168375319794101543794752856872 GT 1 -220371486499.9940008343997253360894597161154843 0.2995934393889465713647665755112052 0.0668038317062555154372139148136267 1.0691398448294206603524145960118099 GT 1 -601609368.7290960117939784146079676308658657 0.8955337176115924798024912669199119 0.0168220301585182894831019984961458 1.0169651275705604941563569958955100 GT 1 -4855250507131220429405244559811295565.4624163379644094694075299028088252 0.0118594543092698380147235597051879 0.0898292220501070814047438612797589 1.0941230290018865779268504780891219 GT 1 -7345251254995065614756403326641865878.1243067189886935547554109271245639 1.4931269815540446025169688189538568 0.0454084939582035769108444333568593 1.0464717723738785776066109314114119 GT 1 -32151254068088948086197976067.1443424996056412479308808924160116 0.2277108503378537748458627759423171 0.0461299818241064917280257480413624 1.0472278661081446745988811269283581 GT 1 -21689625347522880007228.7635133732241963679806337431386107 0.3662755540253525602740791785405678 0.0520565809913863807880175008244724 1.0534604630983812891482443629122426 GT 1 -934247328948.2025359139948948802108187508068335 1.0281565643848959260226876855328848 0.0004084975425827674079689798286435 1.0004085810004329071524895132901000 GT 1 -437751.2098382019029055322859126036776250 0.4287360320926782686567544095441066 0.0879709884589823519447575739414769 1.0920834785135229708794984123506555 GT 1 -12112630574.8305949923279531639931652329919135 0.4629402619164699658548567987829700 0.0636771938371387532833767868191108 1.0657949835822980669993726635310919 GT 1 -1076058010288037254154416.5568928432701223179111369411186639 1.5575279527398658574627677169948260 0.0942670147461476945565987666265297 1.0990107346399759780600375251220928 GT 1 -21269414370894587887261187946.9142406322538567753362772084211393 0.8664289652282167453912750327102568 0.0187780616628208060766836792628329 1.0189566081673842299730289981407600 GT 1 -1866212437293805265.3165378498294938542477172005701684 3.6346004894166027578103334371854610 0.0642255186601183739857683297141715 1.0663807702743889201476018681616126 LT 1 -32706882145481.0462771914935550002081902292541218 0.1251941348144475636648101441166458 0.0343645394733692964298568060390474 1.0349688860468646694786608100009757 GT 1 -63928542381107063236057598081315.5822588887325976508139879553142205 0.4286443908898555372657932149706215 0.0319743583371345174095744731043629 1.0324967027352538799026353516828378 GT 1 -2564823909.8219393829669396562042883877030053 1.0479722050803199236902061808697729 0.0266052211724327974452954852136388 1.0269655454480344512806294356857050 GT 1 -24.8465291230697120049977046603603658 0.4507620139018698299671290555756128 0.0647016449559054397241390804011876 1.0668897042900033692671624689817745 GT 1 -243833014122330.5970055061573304720372375705913672 1.4790846042136851012990087098324976 0.0498985145864536891271719168781649 1.0511864733420201942036224219407912 GT 1 -559731588825319296761902753895345.5219091597683499455416510807346594 0.1172709946734413865347589607080693 0.0051752552273109814445739128390514 1.0051886932441400420395068970583882 GT 1 -4081069507.9567523127812596998011768734303945 0.9136550429428483734141372211237544 0.0220899111745752928773069537046436 1.0223375468898174919261766706828581 GT 1 -783.5392607459912249567857950096864162 4.4115409452914426806800319981146476 0.0310521853459391187518644919168035 1.0315445233877655175789340567570779 LT 1 -250561526492397106452649670207034478684.1209870503521908152410936330816579 0.6459067860415023385271814566224558 0.0691736686228571731129355430560209 1.0716825589799715635048109315169167 GT 1 -1290994222551817949.8538830400394372987893336444079921 0.5279155790468562768813107167613949 0.0908239523545240747595082888796449 1.0952165317794145117448654851495068 GT 1 -290723631675227.8492159812532127833541408404824295 0.3411051633308514309914638370803240 0.0557365068019666678631324332800649 1.0573500276340756460960913691487018 GT 1 -894950600957406607220913243.2645611162691072355434339091918403 0.8011790479263950598125395175685948 0.0337191050379568672541004722832222 1.0343007055041694473507944854349470 GT 1 -16398.3682510846793711256784936755697706 0.2352495759308608215117220387691336 0.0990139119718692909919314170519185 1.1042654620833162582109788939290556 GT 1 -120231995055556582344876357523316.7039943319549406359341643569634741 3.1780958281826153218073743391904933 0.0823657787735649054950476505704195 1.0859564195877225749431200187679677 LT 1 -62556156563119042605854819926350788.3303673499538672677185103471739529 0.4465883936014529153178107717624881 0.0895652131599266025322663023935889 1.0938330058391138176770260522139581 GT 1 -1917849026012018960672692451.2785214378368243787567537898529981 0.4950719798940403936164682979167609 0.0193887747359614046834909969291692 1.0195792024880417393238705032927002 GT 1 -19521851757709171497205117992582.8870379967638740527509907801413497 2.1427156513277193112612719726654550 0.0021979990218519250836422107959291 1.0022004181672047630690238601589852 GT 1 -4456379930666996799260860495.7497981444199096339182235973917657 1.2481151313097732466260655399306119 0.0052431743492108916931354631765378 1.0052569680240595577308847288499067 GT 1 -2755595495580.3345910829507542612523872757696069 0.3367470935159018555804168038418778 0.0293759096008258870256350739369507 1.0298160222086146091962425947013525 GT 1 -53121878940950688962.1387075435828935466598673642147412 2.2703362565759547960047507773903516 0.0500015213627365369191609747947671 1.0512948958232923435057496497398600 GT 1 -215095235.0182090888262287490403759518376919 0.5019800945346839434220424075842003 0.0435284127442122887774242862753356 1.0445041954507261070934960147648539 GT 1 -222390592262900221396912856.7559645125153610476406238682939415 0.3725937936610217906710651269928593 0.0824525520570324829756836965754998 1.0860509860112979773689414103486702 GT 1 -55966303356825134711704376036529.0391139493557182424340188031001435 0.2724828543088830891363332634431429 0.0480342293497140225577421730924155 1.0492262000364548459474839876619572 GT 1 -2385.4634600567270997510182279526660889 0.3094867765817541800619891556259035 0.0786036366865722232429606812948192 1.0818649734021232319876723870468208 GT 1 -3384010450276923250540931624.3746162232205533314574380028615316 0.6402044067299558099193639019172917 0.0094428662570199563369972801552332 1.0094877327877443113441675136468422 GT 1 -22133114977165673704.3709913111063307227761024469968649 1.5722621296926443858886816516379152 0.0066164696676867960211270974422991 1.0066384555360002207880787307078163 GT 1 -19010828848175976064625972257651232427.0073719561753513141964008767018016 0.1986151445440297013707125730400311 0.0336837351250591504656020003473329 1.0342641020012390701103225371009723 GT 1 -212143285452875174710578685767108022019.2239665221811574411987827795591174 0.2054256617549668260441086801179634 0.0084033937213192937138016568374773 1.0084389012970261410143534571124556 GT 1 -69374110506.8217055545960838281874048310687041 2.0792303060552901881716520955960388 0.0531011986423599093616702008721405 1.0545630538529831581592851018141437 GT 1 -975960166800354386767603387025598550934.8627159057852075543036029520937195 0.0162641695036405327769732143336460 0.0586931466729496570766480447731664 1.0604860997510681672273367608104047 GT 1 -32455143824.1623724032519962992554586288425963 1.2983910066591227997258347478840553 0.0812344769864218449314789336722005 1.0847243328007311225875791301374937 GT 1 -6680122704757820570003464149104.3820408438805746612248141451437675 0.3821332435979395053487540742569546 0.0068043925024774677589132636925496 1.0068276479338993548933076987570705 GT 1 -395419980286054745.1559079227344942976277693690917014 0.1456223866321593554974125688405483 0.0305945324704387884340233444856539 1.0310723154696209636895518570326215 GT 1 -11293775292614753820439565288447022780313.8543124555416498295521328136941416 0.2483726660520724601116011804256096 0.0841117328683474843830630565622472 1.0878609008619803955709373218176426 GT 1 -109.8907904152839651665934123172089935 7.1836568199707272147598430440888922 0.0001895392753037924112254891233052 1.0001895572401422979274066772368079 GT 1 -54522816810056850839323102461.2491116844665452672266680465442510 0.5673965000867117387609206870001147 0.0157022056896468577947018425930005 1.0158267912208088552515956463479864 GT 1 -2629.1210951682137927005037293870527864 1.0725271623008084989287237561787475 0.0140143857294339423621702583767328 1.0141135144752204813169310480368938 GT 1 -105341869531186195401505471065483497358.8567037347284830467535732220322640 0.3196955857246112888711355755956817 0.0737996538576343577779262052231094 1.0766647112124224531993458050836055 GT 1 -73006948955054465280891098128675209.7451666704991947805237765800543370 0.8556156707939168912861206781290905 0.0313081231979074855009811042341610 1.0318086982543161548627405959052322 GT 1 -2939.6744831589122127906675306499721473 0.4933528657195704324451249832555440 0.0395575632074145367155306889708867 1.0403612290300360956365628094837313 GT 1 -64868984479029468709864583487504487150.2014090910066570076217554242102383 0.0099595015167015669896989881913542 0.0425348026313476273154672364953089 1.0434659059835819079951652775854479 GT 1 -835.1855666328947773443090413901380499 1.5191728437987747811383609731813686 0.0260904002315765308477393180577499 1.0264367930264722037975604305251276 GT 1 -70578.3678690421871278128261569848902555 1.1309323947071601111048979717051910 0.0240833774595285350332012965482665 1.0243781239431272639525843015368273 GT 1 -3536342164622429295880398943358226684511196.4974687562779105179417493368684190 0.9094749700195972816374399332399467 0.0630392090709532955009909789233473 1.0651138429457792933236516528083063 GT 1 -1037350301946531344593670.3379313970317792078281670535577138 0.4715408436193879119261298110506974 0.0470131084895312912250685060343499 1.0481541303958106790439130076822120 GT 1 -79964578458711284212595140156.9927877039232020296000609912816915 1.1726682435153242938329085296823247 0.0319355812629811309000214637260020 1.0324566456377544356320495641986361 GT 1 -31429176094588381177733495216075539.9533565301732270258933550852826415 2.5971068315335676348341491049997377 0.0383732301148799938188428767957169 1.0391288766898535907348673408032528 GT 1 -866960956552096856899369878387119515621.6704971869695279871874745724463309 0.2006816218506639643642558420476401 0.0592438153789236238209520029961057 1.0610712753913996776145862979394693 GT 1 -859958889895862553220486324955000862.6210647363107913832067720978978928 0.0878512686031487165097238048823068 0.0289263526320218087131444784746357 1.0293529666381282413021471047092959 GT 1 -1223120020.5384692282906560070332948011508422 1.3942487585808719301744465826599974 0.0394300170025951892149787553370454 1.0402284384205712038306499984367185 GT 1 -6009225967022839598178456486.2800389304331338932467764220505734 1.1955752318569400461808560208605350 0.0050030800304473953224746826325473 1.0050156373363227087625489786763344 GT 1 -186119359.2342635041547870852798924567067807 0.7602996637699310802654288528267659 0.0493925922166154590843034897378207 1.0506541220876043803483531563208167 GT 1 -817214043153.8926575466407722004560675659919272 0.3997956324924460230031209843833656 0.0564528328434598253485709782313089 1.0581089237362278460813446535537259 GT 1 -12500611550780456404846302082265717.3496660328613869942403924695430770 0.0175103458723407035005502778762940 0.0119886415308788383958687405902039 1.0120610848741166452488839023615351 GT 1 -27246047217988088442359765893829259143357.4954730070817574921940341328300489 1.7245639138770532314608822339074342 0.0031385570208746921885639052880821 1.0031434926207746938245728067424561 GT 1 -62056019955136.2955534952550331793003536635239157 1.2705607910387060774121386994573232 0.0411307323994880421108055860919274 1.0420005349757810721143733294633083 GT 1 -37967242941711212344522679991486809393.9302791896073921547535097189003698 0.9455575649159380915082725936602325 0.0253004649488379032378701964046173 1.0256260246564640700828187056734332 GT 1 -66486657694222655493965115.0134021841819141025535541889187195 0.9468516761475823457965876046789658 0.0814779267501826004554202439225407 1.0849893427705155697733540412487406 GT 1 -139685956942471277026963591395364521.4307113125680509509523508477207626 0.7925513177479323834494565803053415 0.0683377638781652684697502428307317 1.0707849375766465359951322969576051 GT 1 -253623893099217385970736357352534008.1864823208217303911013326495067366 0.3967194575085454877907809354850818 0.0798461776546263607283830587854384 1.0832144247136194369678942631886157 GT 1 -53823.7175775926821470473330176648227939 1.1552820816958854329341961897434646 0.0584197211271540054519908169812912 1.0601956675280828575068289500766285 GT 1 -178073670028.7635969394420672700968250797042687 0.8369513123199595659169095757548550 0.0873186543019160963878762973616477 1.0913684782590781057045247859926115 GT 1 -240621968308666080.6242389784042669114754900153049034 0.6273237823013128504246790237291057 0.0753679949915595185298175847340356 1.0783594530493326248936825203156755 GT 1 -339998185614.5989946705786585256858994187947307 0.2008860310080076536253558569790744 0.0661847839673545751052824640154480 1.0684767018333105903478454895218618 GT 1 -151424992684544444283420259.4719755582825919516750546468497213 0.1916239907438598425596944628182605 0.0139699519416346802010455853487845 1.0140684501396215379032570083232724 GT 1 -2650111343264399536460046157574425389.6758550529241127113144209871239624 2.5718138204648250433321007280947066 0.0091755498766720856003561193813644 1.0092179045182717213928399924228785 GT 1 -986292495515985671.6939852640171706432676199699575687 0.2436204850299392571243621975182557 0.0137243020696868436555052787923340 1.0138193509584041553802956786802653 GT 1 -75331781.4967743728984898501421064163268127 0.4674546999130291285545345515491615 0.0519825794349142067418016427990818 1.0533824007724459161098280962109669 GT 1 -376856007484160489146.1062799903289871379147894251399688 4.3808860628406016271819847361087631 0.0338558749233666203575317647431459 1.0344422580966062693436392797771868 LT 1 -52592285510221003670503969159.4579093937007925092400212289700378 0.2169206719083816260847030400927492 0.0286231980818806853470730129792192 1.0290408304364414718545349765821145 GT 1 -725.0958615889468252001560097793973633 0.5153063887626380688702195592669422 0.0162881182642652307931417254961445 1.0164222279191756534003732312813372 GT 1 -70966611589676804616398591604359445898.2062735310473825755710483648184374 0.7993745605707332985048119888317554 0.0402091684452738386974246248737777 1.0410399020575383653959236529660333 GT 1 -57420220.0735041720124557141528140725959459 0.2635476107551880873011246835287321 0.0354893328335088696023031594658249 1.0361343869085116446435782990893587 GT 1 -997904527930740977440981.4409193414430818520643490215437464 0.0506598837822159239758975336077838 0.0080122634231684966486256775928607 1.0080445340954208243794813225161652 GT 1 -31550527993613666943419302686232666367426.7583666355705748299252536548839756 5.6798376974177404251792795301194343 0.0321092880857141442466981700542961 1.0326360989943420317641485735829771 LT 1 -3063652668864127677618453.1943601722916839826082900470856065 1.4553436796805343129616097296739219 0.0070096082369681351239157722485937 1.0070342909525263282540725815649803 GT 1 -9311153045239075218965970.7157406202495456522438147107032627 0.6825523088330872408642001339203466 0.0110989785257831819076295001936480 1.0111610317668762573100133689541260 GT 1 -11307768965361145087493321289175323185008.1376789170834174399840610738206236 1.6903672800517514300777528874204529 0.0653817364431037742832079942423185 1.0676171073307810738435939829243643 GT 1 -42769651410014525636522.7190042033447872123233614623731310 0.3557365195117911008368081200054547 0.0604676454686562831131268678488492 1.0623730226892947371181765061702591 GT 1 -1.9636081084693293689771690590149908 0.1719635863499613354715915468560927 0.0249347711780359498232585160290645 1.0252509088662252119472982730320106 GT 1 -17741466060190671371118111599918306683456063.3746934804581464117766054069168019 0.4850550883911470697088950046729939 0.0348616519077761569829019530928649 1.0354838220203818883916675455034288 GT 1 -15046936.1269711021305385065441802241634556 3.1349785513933462890962945372615808 0.0409147943445530465542047007632259 1.0417753596039373140049376531039165 GT 1 -34283472754643608738915871453187055.8029921000320347177760232880511669 0.9817901822805515626698571364789774 0.0769318992806180829179137267972014 1.0800522652732130592637817192418485 GT 1 -1113075442974009.7468414619795429754265265040049876 0.6905479201468863399520899130927521 0.0344923129385833347455450383003188 1.0351012154037640567043282474771134 GT 1 -24117146033765056.4748390871004530747050148596929199 0.5637670007061874514453240416820249 0.0247704644671229793112479205668521 1.0250824146321179386421420845596814 GT 1 -5604.3772184699006214855787389843898093 2.9169229950003821360609392845511606 0.0993141693371705717683530040167695 1.1045987717885584926363446796417017 LT 1 -15106137237084091182483815168486911716.9039265679724142879850482308652836 0.5483543279095699682611016807210391 0.0946808048496244690066179227072483 1.0994676956432584176437733199547354 GT 1 -1527254.4620577900190746548435555993349371 1.2117670700772800369868746229549245 0.0958057203309344355276232968196717 1.1007110305417042321172158305078868 GT 1 -15523845549098323153048313061061.7146801798667592739453371985140473 0.1708253412094229180458253764329960 0.0596435344332972948321037087738437 1.0614962569153396193081372567598889 GT 1 -2163453.5015813544712968015955358341444348 1.5323470986935551030138123480957557 0.0404062173672007479939338241490490 1.0412452271613895205794274632358514 GT 1 -3533044082624430489533766096966654618119412.6332343559872414784907905311826536 1.9016714663031558553102986129917919 0.0485453342731415249347656303944986 1.0497632384394724157300978968504186 GT 1 -376934076744074415128801272077934828068.3590832815675596777085475122858299 0.4550539326439846740999383814098573 0.0333191251245509536396795370869394 1.0338868536366817978012099788652913 GT 1 -57385362165221860722282120861079.0121710804852970751850637995804310 0.1090126636730172046120978421592764 0.0116555844161724569643001393063379 1.0117240432116469019140477907544426 GT 1 -108032992397266097.5601074802022571704457334127840394 0.8681415691966775940234747102540729 0.0780297633380823119140188094751615 1.0812423372243414264505484472323061 GT 1 -572094.3090912540654770506914155098421052 1.5717528365914424924728952040648999 0.0930524802934541439789362179039579 1.0976706919450648868970491767292374 GT 1 -127.0893476470857896260852137926440779 0.6737071337330020086090004625851112 0.0293609380784112465944701333069897 1.0298005976924720770114281721846824 GT 1 -242596870034374411616991403644621020.5423497172048142626779563249635762 0.0802316172234308058414111427100808 0.0792926070476473054118208213385191 1.0826129990123607359542616217638048 GT 1 -1984457044276162847614166717.9583347104031083874039035095239186 1.4083452771477332902716751785998586 0.0194941195285984161006194750171063 1.0196866359426072479417266872248023 GT 1 -772135958295797456316933863.3519080525629036811834537141322053 1.0107026224930577513092173607956006 0.0627182084624781260786754216999681 1.0647713039226914872109344020712651 GT 1 -203097930116480575417.7835220467909361700367714293506208 3.3371437932142003772344132798543505 0.0269589084676117395089058291598539 1.0273289658971307662266319459645925 GT 1 -111.4075572680892956787397861279155991 0.2653438558803704995575011124735883 0.0281257349697379192269208293203914 1.0285288398537826764493987329305769 GT 1 -30399559585.2555440555512323917312506209895804 1.0538928063341109395345653710334424 0.0851462651121847368540945119358954 1.0889910790660240524070444470015575 GT 1 -12995922438820937574876032.8711625872708354303583876035881121 0.1693180583651144751880725334721168 0.0009188837514444114451231485445518 1.0009193061839161272084234821928335 GT 1 -246183991234016.9056663360139292544818085522896254 0.9266727767158701643588259650831353 0.0798536750716977128435060873923996 1.0832225727508648837934564114308201 GT 1 -53142379928.2580018132063801111458664104605608 0.4531420062808734205863560253423614 0.0227274008997050646321593760168407 1.0229896493778939177666319038397097 GT 1 -13033404295721481626853143718798.3101062073152775839757812232627901 0.5874870101473340172846374654453551 0.0944060277892310858145014612193047 1.0991642276830551834013225559496258 GT 1 -658815916423399761100141287312939637816334.3705729330383090718029573850947077 0.7059747461169966119937088424713070 0.0229129373572681330466888195225741 1.0231795186857315372592907012932413 GT 1 -8344.3172214284966813437314517829939153 0.5171607772267613564236813838589007 0.0895843616223211700349433845891591 1.0938540382777261034216879310622262 GT 1 -10540237419853.0674437073532276141417253600539071 0.8739953476441491643941985102219726 0.0373715223938386323950050333739219 1.0380877385011103788408603639391679 GT 1 -136283056260168170070295773567348531111.5584745394187239004507255652221583 0.2936855924449487392788100114551080 0.0599327063347712445660401378080870 1.0618038172748955337535496222684302 GT 1 -2611699190809.7181830686807929597829627685929672 0.9075148677508952982292606602219620 0.0177461971226493986839816274185798 1.0179055489528435355040904419817326 GT 1 -416683051020090279877912439439258.5952705595097624348688297297614330 0.0676304306282077395760989423588972 0.0252819875001348068765397565196618 1.0256070677647228808641572688945569 GT 1 -4225083572562072336880.1816353021050799016087222844023661 1.1539534969398040795367052095169373 0.0493558335389639363676175835543066 1.0506154542141319166258714727351946 GT 1 -957106859411231.6391061543159297407507376517086018 2.6202705621212450100404380065678330 0.0509498429578197656129699308246155 1.0522936292481165849541880818497452 GT 1 -4133972705858943747853186804418.8026739444198968857872279633994367 0.0070034095403449994915887464876726 0.0345606831239643579007947129430149 1.0351720305895461411359338327392976 GT 1 -459170393510737.2798752544370504367245048932647615 1.1169514896421032249547642143153733 0.0805192305557974831036270214756773 1.0839461493008886198684256616850865 GT 1 -646569822020476726.2139531817550817412564319469999521 0.4964300690832113032046104247066168 0.0042637366055722716821066913640444 1.0042728522508609705744257775547100 GT 1 -716867677739.0778761210208079142088570608218588 5.2297951140881416899828111381054811 0.0301433559809650477909062251819922 1.0306070080777760910714542895643765 LT 1 -2956377511268632.3463078324403405696427724211924113 0.2218244178225858354200014937124104 0.0943057742157775121927751684702811 1.0990535290392204511033901906614718 GT 1 -573045877208058749602617729335208957751422.4454105961189110426878879191972689 1.8114316134039981199641160015010986 0.0467437561149955308636822584851453 1.0478715301636293997107281193354993 GT 1 -54788501232751876714.1875993100381127372654868729628448 1.7951214305908792010202543985571607 0.0496064911627135630829808461828889 1.0508791603241782332725380156627390 GT 1 -1672727496741848576896732296402.6874648243423172654011692595743277 0.2781788146573897443792693567220163 0.0046280045058410220292265764806240 1.0046387468753311255426797597733368 GT 1 -225091582429529126721957129.3972370829278281382656154120107869 0.9096698928612119665329807794350063 0.0826927338674635058136438172835551 1.0863127852807010097458954602080386 GT 1 -80575293835562394301417516475597.6659086388659118095411915290171102 0.5981326845268846501198739506741947 0.0949772084995951724012351048226031 1.0997951516209741134600098638966496 GT 1 -4966269571.1557716842942892913663417551504315 0.9959675177383504721841379820087118 0.0637951021016581952354529499496643 1.0659209184503585499721755325058827 GT 1 -1933967844806315.1650082624115661636980679591732204 0.8626743582346413994624662865302236 0.0044962659896626675130602955233705 1.0045064045955812787924888852506051 GT 1 -9669804697122062.3113032307137315073688019062931985 0.1508198796758395333221061344254747 0.0314525313353143643537201887684477 1.0319577847758265479354475939144723 GT 1 -119302772332580.5847543628258701345852415201905246 3.8097399541506683678191644679506672 0.0616391209004200771161583776345574 1.0636206714509458960567178602220538 LT 1 -19340609589641.6796609243954218051694927050909720 2.1416791459707243123328405772429379 0.0302807068612760336350075291056103 1.0307486378824248869611845401214968 GT 1 -540858800417258672424667426953102425180834.0851475384407346712662330291237125 0.3133638306456400140352291417532446 0.0873884789690752240202239972548193 1.0914449861647034814676947625212022 GT 1 -463558627614552170546454033522832103.8856712823201107307681655939215712 0.0772149397818776603475888306037936 0.0367897209551197829751235056160377 1.0374835327186593359234032618610479 GT 1 -73086257799824098631715662465710745011732.3148383593215845867073232647348955 0.3229439036096894726945881229556611 0.0103534820354880677543744693114626 1.0104074521730433884304183405600215 GT 1 -62652222747251994095.1823620735621989293785895841450266 0.1095864523081441046587420639690544 0.0719003883564884285930813784585696 1.0746162118233819773456562325949503 GT 1 -635938161688125416484485255489588110.3564440364403915023819704937156898 0.6844452638048694949556051302441145 0.0561697183347297330943003411369122 1.0578089153716791408546875238115584 GT 1 -53460431260745624883014876195168.3553730065952031979201678565163256 0.0249581222436242335155238278693753 0.0854428241941846905937921870039175 1.0893152917214358617762501460980335 GT 1 -9085.2592847767773282620985708187870647 0.0707826429657448758510889181125571 0.0946354144446454765945518849983157 1.0994175594400492531774945237456293 GT 1 -119037312982.1805645578927866443865779223037928 1.4624852788492734323793733311503959 0.0199095350550634324097516129925789 1.0201104004096305379541426846260316 GT 1 -3.0392047750497850416001080983607711 0.9443774674256355856229308246952335 0.0235358603366439753698957758619231 1.0238172526747384757441931505639545 GT 1 -85662472068988.7731940379033541856752421462181611 0.0567172929415526712397975072932252 0.0718180157626701102863726607333824 1.0745274617177351034516660996577511 GT 1 -2410623787834529536569746897694.5578293707040318954879256920254318 1.0333016655827678861778948811419745 0.0596351026912974420111999085613273 1.0614872904175198485423957444363674 GT 1 -1349926662147863725426857221546.7003727262633799291044279003753233 0.3654733955775026516722594574209458 0.0070815660000179810552658968545088 1.0071067592976465431625992977313153 GT 1 -2759409464622463152815022273648.7439154440639513265621812629208600 0.7345206367512531274387612924703242 0.0507571857336119953022193125454893 1.0520906498052369844913094974266316 GT 1 -58688574378342926337166672.5031192694400906274527905272220439 1.5316420500084852424297332124759561 0.0437109042626729999044092353324736 1.0446950102459454022476322814396139 GT 1 -4677393254471001491506505593863481554.9459614276936527168076455650014639 0.9778305694860600503513827911939939 0.0340502214309289109472537342801092 1.0346434351800296412886770965155471 GT 1 -246265533959158937467.4590895915039189603089114296531508 1.8842826464366422606423216046859305 0.0292357587859396877058687207731785 1.0296716401570204228226705033069675 GT 1 -38020.9756223583023196047402572360121201 0.3071378988263910707426863218706071 0.0832082597534784907096682968428694 1.0868749423919565844570170463109723 GT 1 -97548853729940909287585806284401.7794869851255814902150914426276228 1.1699923547698445051219608077823720 0.0352074924828524464163518169048766 1.0358422188798061369818498671520456 GT 1 -1301111447290094498648829611374655.0838454772905628008254134889191500 2.6737572893391191846794332672756020 0.0375644156441383556103265963422054 1.0382881404043578903931558052731785 GT 1 -82602099114660720.4294069069107513722953654493350155 0.8666184653029414103941567129870110 0.0039366017206630120322334370738380 1.0039443705323975248532331415242712 GT 1 -265322593033.8359097032714231872052144804092597 0.9314004706334473030644685463695902 0.0062963710848841509936019086817220 1.0063162768292617549900865819281144 GT 1 -23642283378066165.0894388252251891919876877760446537 0.6305285960834194515624845659144732 0.0575301666575547258524059421238085 1.0592513672359267597574534557834591 GT 1 -2106078946590644987588530609814223957003858.4258408317968357677781061353531942 0.4988911326748033475521373339100311 0.0616776436379703342781035520848378 1.0636617255157211827840801863427414 GT 1 -4899497950963368254073822815134.6990161964250051746637055470473131 0.4732929344016497605395396983697235 0.0658005112825934721914156810440272 1.0680652782088557846167716883221301 GT 1 -19841456460504.7552504481786353318614413491212847 0.8112735010453543058700225275294146 0.0984098525025721491884042890398095 1.1035952441141632527610490961542769 GT 1 -34754419712973971676289938551485450166.7810187178486821553496402811736932 1.2900075616729619024432858169084732 0.0997945072746184299966405618787844 1.1051322164696452885147310239948212 GT 1 -15930584826792806686111277852378708.8984442071172167029416882037673948 1.2959886481958615545370835161450217 0.0173604403809232167361034609342950 1.0175128999123966922704982807163914 GT 1 -713422251460235653445049020116578.1807086765234274026338836562077991 1.2659782023279646909228060660324174 0.0776008682261736683200734171174769 1.0807772512963492363154487575154264 GT 1 -164863699639573.4621532328671159906727746078438896 0.5527538638140413539310269166721110 0.0427837833809652294151744473948830 1.0437259813665694698384187783452319 GT 1 -3865428036934374.1850774050930113983726833749555458 0.1321511776083046138517782536086709 0.0393379897011801937733064115343259 1.0401326381197158250738019407944212 GT 1 -84212914695163849826205523607.0562711959260209601805640476887383 0.5298676879884378493516950158757341 0.0872419308790168574377643604395468 1.0912844180351982332888037120543121 GT 1 -1612204129541927777468036729293608915002401.6952032683981770355073401905022526 0.2855645202505062408297784943903380 0.0091516572551570366264132322475143 1.0091937909293864183307635508684143 GT 1 -2300696097509371824272745692596766656233.3545582262483827970223011448039076 0.1857923975626764073346118569979893 0.0886135617552676433670613051173903 1.0927882803983160604120613917468768 GT 1 -538723489670575439572005633397903820166075.4005462733312894709723105166808261 0.8790692388215414252724371286146576 0.0566945579021757117164388128944704 1.0583651441308179937914054505578687 GT 1 -1703940390857549930883196862.5198815305735310031237788320752281 0.4087324902903023396032023956832681 0.0755268976903458862971683196671519 1.0785313228890173927648840490769103 GT 1 -12072408821674807.1314700589067507300112973872367149 0.1226245003342484453100798159414977 0.0045033871992739564869500545728238 1.0045135579942461511598582058010288 GT 1 -3083753412924615288183504375316879222.3923758053715440444462558176605637 0.0340353971685537298837908333740353 0.0991085336281997893915080755175235 1.1043704877063797363447167886624802 GT 1 -7090200.7922560026162168887405656192654003 2.1561679220747182542918055703731382 0.0562732239688043187164890511742326 1.0579185869005542970595809844125908 GT 1 -8184816606398685556341712375151190019979472.8215119085077281794721713470425476 0.7656187319608629443460867869813270 0.0713711317128255598714697656977407 1.0740461159114400515335663937361840 GT 1 -1264530261903924830022813582472.3488487075995623844709080454857872 0.5691762283314611284353276244764231 0.0382058484722428422778045236592223 1.0389548309142292671713322787658556 GT 1 -9511.3376719300771564955760971188216245 0.4808915493206897389779728931537880 0.0358811309884306679147426318052051 1.0365406838701230128826208815390346 GT 1 -63434268404387147401337087608862770312136.2289226547813263734671921066738875 1.9307314311120159149484779203625473 0.0316667273704555087894625693464697 1.0321789610531756685129925813767517 GT 1 -647546268583139505525669597.0339672416180953377636045499853419 5.2836613915702844502360016894070999 0.0518192953495393219355502762583630 1.0532101781722786301717275582714309 LT 1 -381783789055292748656728281.4129560032269603829320033066246227 1.3804092154768455696949883258051193 0.0629827268843203681025612629927564 1.0650535624251758431804289887276637 GT 1 -62104316460644992.8279995379745342385566032462239131 1.5043935858612980553031220755711301 0.0822700307816006046921974683957667 1.0858520828108042509653613907127292 GT 1 -35662947.4637489656256839797283203549003315 4.3008949906538908535317522522142290 0.0355624675877909510770147328833375 1.0362102155433428945399833126573578 LT 1 -2975427192574418412313263714531.6345982125617698835439448036286892 0.1363385963280242990765636778249511 0.0980536308938076226894306621978866 1.1032002184408626863572041812287839 GT 1 -129.2531486980585629718019354940733996 1.8866039395825438772517113709413181 0.0923361452259647838933260705949970 1.0968811729166123643504587000996119 GT 1 -56283615682060618997060064704066.1975278089559408777981137090261630 2.5898582290836792830838202609418795 0.0055004352957290872422438568640183 1.0055156183913020702854025466101425 GT 1 -574.6110721025772194512732743367312164 0.1297404739783242004826065236499195 0.0753374965911946816067107025760343 1.0783264692274169857441231670978983 GT 1 -45215368841688358.8338340300097120511318297578002551 1.5414732496734887266284009549301712 0.0684861159512095641941304317911305 1.0709441840072461513234498489071388 GT 1 -41.2961320093496359673866438894020770 0.2081691417709906200288799756864231 0.0308924043432295674057550098407521 1.0313796354261298528916738995567525 GT 1 -82427177864392270011404.1165470142276119945272561370029221 0.5414214045524727217409765792422974 0.0723083765652103895660092977810607 1.0750559037537921805937933975898872 GT 1 -34202591045452104.5463280749869581386495595333693271 0.2346396797424817546713428883599249 0.0644492827303676628362323140824464 1.0666199206598826151555568968965301 GT 1 -47074029914228063006566747102674845934.5836206440681273068434553498474111 0.3326431383838534041055364310947085 0.0600599003072711062558413141175348 1.0619391294796701604424665942454929 GT 1 -14625999.9915534172833258831843289595963071 1.1028724085711556507060238727991401 0.0392648580935044444299491717713541 1.0400565147553951000422702281070711 GT 1 -22124172743.8529155133510546982628252886640026 2.3356761357479808883574679160065736 0.0469552694965873657711667963135851 1.0480934399095735544980969541377727 GT 1 -22055759335.7992040500751963625498801345316712 0.0320073986205272282926328690808624 0.0831486946027401537792967829325486 1.0868099732029960624557373307291938 GT 1 -21.2136174535386894011412519849680835 0.5978844419424253734962667550180813 0.0656393507888011845174225252287976 1.0678927812247656112840252475867183 GT 1 -264815830410693872943353518413385932582.2510426044005786515595014815949918 0.0924272425895675709019495292519406 0.0860499604726908356608119490923869 1.0899793703706500685672955142447678 GT 1 -27365840306415821.1359777442671109859769879417489894 0.1168116700893807568180462484935389 0.0962646006153901967826804116188603 1.1012186612306920728355963653449509 GT 1 -4969617481402014001272703.1820727515263117074421821378736723 0.5002402721621044432103588014547750 0.0317030519511205778642802551571671 1.0322164742348677356077619023359017 GT 1 -87701990009464882321913230944141012.8634379518878633735907062616767130 1.3023470962545813445277134852732024 0.0367906438248869122938902959259796 1.0374844908378045698220052059142597 GT 1 -349362488793486176980633005.4923077764811620952894249366193951 1.4114453361063008576262147878660863 0.0936978176696098317512513788240159 1.0983824939684465243736670488607177 GT 1 -146231516645077.8033525124785209601793062432278679 0.5463204880152098280253307600363032 0.0876949751965537168168432929495660 1.0917808878047647128853938311023943 GT 1 -155183978220779612896593957071997075790445.5415105668995818971972658444163875 0.7138696284400999507209742873603899 0.0884391101764329238469340805098162 1.0925968853133553532056304388674789 GT 1 -14.1314013964749816856835756487345375 1.2987314506976581156504239410013480 0.0424375224536838397695293824181665 1.0433643093549569110707613641018646 GT 1 -312293463423293728228612074434801070725938.0046518065786624413056630992929874 0.4137591904353098620945980699426792 0.0802063515130189514977074343569662 1.0836059292198107463242924025475699 GT 1 -78864961647014129104.7062738061205458313454669463239853 2.1312949710004233869765793314334917 0.0951356950969564537872149242551561 1.0999702858578901208765340633162271 GT 1 -291387581.1526322423132899150703283464248715 0.3250606383531954575897143015090074 0.0481171975837454275083570910060578 1.0493133584746391291677408044962958 GT 1 -11130116946494436245541990391282401487.8110085332716823938737262754260338 1.0362478966496258404775839795527172 0.0278584347360023528233511013089054 1.0282538418509324323099758686742958 GT 1 -75594398848114339760053881166534860936477.2343193437876621995953485909732373 0.6896788058586316694938264976521949 0.0966147638107754345806804942178717 1.1016061983910504752351931147543730 GT 1 -52459821330.1382548555588057208705511819319778 2.0728082918408530826205425149248879 0.0776946839720044561701715187319914 1.0808789648754794457340884438141575 GT 1 -11.8120101898008389012089058907689974 0.5887684525005427797874008074770406 0.0876945428400566041965819906079307 1.0917804138882752631624245567809718 GT 1 -3009218400770150355.3497751136055811465415012303925207 0.9464377600807255809261761509801838 0.0954442176213509504313609251618473 1.1003113039880114898424037405670195 GT 1 -69459438061398750902218367164701199842.0040338658211274092906825155259759 2.6010471987533171164295169522013745 0.0381160139726204268407083412237778 1.0388614322339262373928408044490457 GT 1 -11.4318690607573156526927951407772242 1.2482984255820328059965324426915754 0.0449726878573803316801742851052098 1.0460153398081337835226991569229293 GT 1 -967445108354434695374046252031804705.6931894418810075711766675905114553 0.5429101848334335689082776972622100 0.0868895894017129875478449631887631 1.0908984740467992851162598875232341 GT 1 -39740006574966255968575449.4230923321995195313756729550036821 0.6554146940735558644532054601046393 0.0679702519157538295123969840553174 1.0703905462606032875447203749718941 GT 1 -9374228700372860791670311989829773.3942762633836692182227313668340809 0.1108807580121794105511502325224492 0.0860267668686903674942881360193373 1.0899539933711352267974667551697046 GT 1 -3558719040764096575479638673747476.4358033789386188292797182141528557 0.3631003149186758262577480449006890 0.0524307716657544342162738774933339 1.0538552804896061454570093204493312 GT 1 -19819400271219857584726089.3187045517745405652749509779524837 2.9395691435324011182905923553606710 0.0393964406697183648795754989589787 1.0401934844383926215075809795039257 GT 1 -34626607681429838537834391242485.6975761228049230784870971465377317 1.9386908361868808289335267297225247 0.0558972593505076806354954704189377 1.0575202833249982616568006764160489 GT 1 -581075.2805773013169746924824415471590181 0.0768277778522375202350359020783117 0.0963168061213250416050626195698685 1.1012764292609026132387768478796591 GT 1 -554817658285542889423562622781.7986330005267227624257465678621785 0.6254564673029746285276590741829316 0.0050489634151671862464260253983864 1.0050617524968491878468786914096685 GT 1 -3677914899065209811832580987.0107219652709266811701655739168379 0.0569140665381209622885689551106571 0.0008145310097332904552801834830040 1.0008148629203627716590210700143002 GT 1 -374562093732.6281750153703447812743599388468259 0.6954866960450277435772232655269986 0.0106411662054970694898178425075470 1.0106981882963992270597365556043945 GT 1 -99260903.4401455527380188860393695036099619 0.4860293060604234746345746826129840 0.0883892150311856105216351279188715 1.0925421508679384652557479234504374 GT 1 -10.0937616189601635349480992779042606 1.9621743304428336413610719566857547 0.0140982277648957186349438603254405 1.0141985518217607163499857869360140 GT 1 -2.9279682162759497227680028631180883 0.0152895888188435489744034670453764 0.0182963824884886694791137719715410 1.0184658313444271744986210661654451 GT 1 -5423013323277793528.7827378318158966802033260602084576 0.2793215608988788542852049255902368 0.0776930079949715958594329563577283 1.0808771477163663224717265139861768 GT 1 -184271661152.0901276435911864581945620311502010 0.6347380243516907673585072128300297 0.0290418263739354628798571771474400 1.0294718871839209820672811033715288 GT 1 -39510939555539.0094290639421764243200715609429215 1.7877623649883046468753635247756559 0.0339582155693923938168765006692131 1.0345481906009454361904119156243996 GT 1 -2735296365422448103.3332248211600106553788929594194960 0.5653957099001078805099204429290844 0.0261111585210062144850278945347788 1.0264581076440331208532502241780080 GT 1 -71245113297218146.1905178252612321436667443413853981 1.2516060481428201642788853302917281 0.0866537579578497320369121475483960 1.0906402347452172760251248767785901 GT 1 -1024249889672710917308405935400938067954656.7494265456592277393863671887817639 0.9559463502781283578259838288655680 0.0872698650484743355156298137977684 1.0913150226366383737205498027797435 GT 1 -453.8184122943385971058741859493615134 0.5515911840663071770512976770815733 0.0863431246956648521954450564229594 1.0903001879634369617391976068977770 GT 1 -235551285773457406748001756.0232733889741514955017109788038496 0.1664114313441876646830269164898623 0.0145199919467695657709807388462684 1.0146264386902769987872235406428354 GT 1 -65048426291535233145098067649712.3065476359223017737199302761595928 0.4644671603345416179083723123568338 0.0625673574021205803886733676227529 1.0646103716143501439740036764009569 GT 1 -1895060562.5906730040285761556499536862881683 1.1989586210125449127779380941232219 0.0668647266795242867437534183800064 1.0692051011627091482765714392614729 GT 1 -49969182795166559411169012246416872.1291226280394570413835419181857430 0.4338535791064510473888494135076522 0.0437842641017753153722257095132094 1.0447717262237822351808891390431852 GT 1 -137148.1837030489906321321875892105493623 0.1020244154291881349580279515547633 0.0559785800719449732666425094559853 1.0576064224923109673243843221460675 GT 1 -1476724521.1977464810422406537113939833533915 2.4022008862877585236288752759967181 0.0588140312726551404197511342444439 1.0606145300945525258469930083132363 GT 1 -12882784664291936414594784.0544792408771862946805402487785013 1.3293224097322318890248543418206080 0.0049637400697420419505507011776393 1.0049761003465801974691818147451864 GT 1 -523364735.1552817959694992929108602894313838 1.0746549811402152433710335159310694 0.0791422694236783903258945148174498 1.0824497274317013247856589073276624 GT 1 -11145811306550979090070198326977667.7173641223224103937893340053487164 0.6332242757328596735536722504427985 0.0836632611012397563856960947295789 1.0873713629781638056825833346041690 GT 1 -8044118911390314700750170122649858.2841827983932220150900707216873118 3.7967969527327664058508778069239562 0.0528866549774123618919095834281518 1.0543365044443373997857420448547345 LT 1 -3718615007887360742504567985368377797355592.6374610394980832407681295524576794 4.2370859837759658453794845064189307 0.0923519722889247955774416137402443 1.0968986102100197604555102614072478 LT 1 -5556099726794318922320565185362.2029470322833723240832505497160213 0.9753304752655113712086804856045264 0.0568700090030116413695588929071308 1.0585511574957747679692060167674072 GT 1 -171.3303045102303611980861731214884902 4.1889250987963104234196832637910616 0.0037466342900335086077843777143006 1.0037536705045316472349229492775314 GT 1 -1082519040367596468828993717852.3167873070657322015763506203644696 0.7144138402028695699061221539525425 0.0704527712809529062855002406320887 1.0730576622249189330579716567761412 GT 1 -7154238171663288004858.7556864295906762895027881713310736 0.9453529097277188340804007909757306 0.0674561861366596422622470126792006 1.0698391431917083528480266837394062 GT 1 -168946967607328909736611898549995428.6156774192325251691790969977118592 0.5547250602737151932491031562404230 0.0575665600391121025286383820917593 1.0592899828848858905752040426163313 GT 1 -142847285770516381313605502892984098631595.3049769374706814903583437618892774 1.6037684559760915958731727690440668 0.0698101843846432006607233545512195 1.0723666108487690598489441575185234 GT 1 -428280758856433596921.9121492626358103477363544379127015 2.3093348953030525017243580521645180 0.0776957989210291667056850359811028 1.0808801737481588617288046534490180 GT 1 -105872.5844534531107629658876163556303010 0.3649073379054246535858177209143041 0.0026788177871913214472514045510970 1.0026824122402513885354716812684918 GT 1 -20452716990194268007191149538.2741791440983345207029645263067489 1.5092436504749924244963575899065813 0.0383837395903305501131837924746603 1.0391398056003294030775388378681420 GT 1 -42559914375407032337074738319014.8478403093822248073015944722806763 0.1199558234721484288558847347753833 0.0054795575237875157222344251545927 1.0054946253677357227978521723915311 GT 1 -5.5310490121094641255499316369650129 1.0034149766358738708199830092977069 0.0404572013730529105935032390611679 1.0412983593942509151177343500649973 GT 1 -2402848036188241.4704023839285517011423225619668099 1.9359588350659387946737187941923555 0.0207468872689059714461225262270064 1.0209651277523599225347529762431078 GT 1 -3135238.5975324474462455491254185421715519 3.1045553532876978417968456968949518 0.0371610415879934299802033697478020 1.0378691102316872836504422784876948 GT 1 -98264861419147526856735613714025.2438226469131424672934987414888917 0.1744817893792750199848038094379120 0.0897796496368043167816811386446767 1.0940685655269289121911653209029482 GT 1 -101169774051338762089.7533468165765630893687140671779392 0.3920467664306410585835065985508292 0.0705892899360823217838568810335066 1.0732045387652931769911321732916509 GT 1 -950484127368141941250256892356165.6632619826449878791529325662400290 1.0117608018202647795355310982746252 0.0090232452178140381694096457894211 1.0090642012519896174237466424988526 GT 1 -140291925901700770833.4831491380506194695005512793567209 0.9293940078801395805216902871047302 0.0857566382307949451535899028653316 1.0896584828275654111297212513475737 GT 1 -10792269797565508772734667.9650448548653919310294732286602839 0.1078975519981041157977390092194341 0.0559785491387547608605524946267203 1.0576063897248450469404811736698019 GT 1 -849414666964435.0900479703732059434789868081775046 0.3393538405741522022439242186210547 0.0321921944391713229367919427296601 1.0327217593931690301210580008892376 GT 1 -16366.8040179212713981793416598265796823 0.1167562666460145294737233432738087 0.0080896311749083152313068808715690 1.0081225297863974691307073349954545 GT 1 -42968.5146830827946814839933669097808604 0.6897800913736288916370791010993000 0.0652233108605441731700873151511704 1.0674476133640723620668586859788798 GT 1 -659981.4575470022596232884696516061771456 0.2656525318387670929175904448395443 0.0308772327775621383231785862928439 1.0313639803564763140472541144115106 GT 1 -25570538027148778252600732633640173.4726104031497017030103229937486913 1.5868170755947613017363478428365864 0.0126055678618557742532692071751598 1.0126856920854221137649674508215317 GT 1 -1369765966183779261764616424073163709.3701566986020563699642858688419490 1.1771540608088772992290643502876736 0.0670989023265421570078983577929736 1.0694560883909189119442156637442400 GT 1 -3169825065666303421.6215373710453435145774653725079694 1.1061334719831506230445384383035731 0.0221022968409503754690429443149956 1.0223502124149534573147501979226995 GT 1 -136003161039685283431784259497128044.0994998930775370823396188040911235 0.7743729307072311587592210617196828 0.0053867491668580603709866985785078 1.0054013100141132173141081155108497 GT 1 -22459582.8083399974234324148685726620641104 1.0087900915872038891367908152112057 0.0058448097441612390309925919916738 1.0058619574941710259174377767012271 GT 1 -1033203317175.3418939494098836965942416958896708 0.2821732620394312943985498815098499 0.0214588744814100811465202759914304 1.0216924638839939313055993740206592 GT 1 -20132699097633987384757920027508075.8036691616563163304338574903219738 0.7760388620091677884466898185828189 0.0599044849594024273324810663468602 1.0617737971348946129641779731217875 GT 1 -510378680390578.2924447025065725504078815562434048 0.0653336424335912228652395871188248 0.0083822035922943623295046496994603 1.0084175318182677834437306343369122 GT 1 -94.0843129762226559926558362047065589 0.1630882377689250269981089417478560 0.0322922268560360465320629901746606 1.0328251245306594019274878918090850 GT 1 -730617384596109689043877801.2002977730919508111658819387626091 0.0510932310155967414360333667664135 0.0143637561752757884263363015074268 1.0144679135178807866962032222452134 GT 1 -125630.2485097377148070595094092762408282 0.4371691651483620057880157497033166 0.0813417686142428139330185480781653 1.0848411176498286966741093182026670 GT 1 -39832.8265577052266870860315697474237728 3.9057169148450183139636006957607325 0.0939554570331369170177839092569287 1.0986668097251021512770693424123124 LT 1 -336806804124482742441701343653117333136.8282092431755281910764086608189116 0.1244050734679720617701864083147394 0.0830749889285558155359256304695815 1.0867295864365599426143010407955420 GT 1 -11176722025.5975837404090283828994938573628269 1.2770016033398913347754881721885838 0.0124676147699294873836914086209206 1.0125459875749182802711666971969110 GT 1 -14428784.5972747919655843576744958219350063 1.6854896786161842332704104296979739 0.0358781686367069133008303914993787 1.0365376112747533777076788460720661 GT 1 -114902459953.7414428541665450509037455335731494 0.3258960348176838274389521543681584 0.0776727698677164326079180432449885 1.0808552050168185215218935433883197 GT 1 -37.2461586054416472598015420104710954 0.0749685871650915160033866269003667 0.0548397576154630159653067905893667 1.0564007972026489521499890219987743 GT 1 -4780379224094895877670.3206486067415804209180652227177444 1.3976877546346443481025346643772840 0.0523983957334326907395610222058373 1.0538211137202912522528278654606493 GT 1 -127241101429477.1337239289699175745392385947034140 0.9307252081789458581717396441232305 0.0310038200663981341013815825425246 1.0314946093761262732504987507941490 GT 1 -59962625846063032129423157366680.6250898898079589623229428189569505 0.3788862374274228745205108208364623 0.0594291968150563978508274137187401 1.0612683505813420281491829463398172 GT 1 -3111261932542.1805544604939715102408716271073670 1.0218965955402721814130806857317590 0.0983723396064519137247534114424095 1.1035536374974123659422471676048165 GT 1 -5160.3662951057995633093952553474276219 0.7940888798214186320947949148840929 0.0735707373299191252235597786413396 1.0764175851513993982650565643111056 GT 1 -1014.3852951683689971509019907228949366 3.0174640307721521189926822765424296 0.0396221650422161839698981597468103 1.0404284938707670152441255665464381 GT 1 -5561987521534083.9943298562041754598008457631818065 0.8011597298222894624917320490621643 0.0440557054533465418817518940957423 1.0450556369311212798168039582576264 GT 1 -3481043045007523423117518993861.4327998517044028974713360473789369 0.5251547821781879922398629016163651 0.0780959080040820293868181974862595 1.0813140825325764374181645187217838 GT 1 -13196044928332432223211638890827377.1975015192550953240370210296442591 2.8986699887839789542339836061955662 0.0527107648271099638026725965067371 1.0556169649631793465950636173395754 GT 2 -3786841627573.4864224180556599164772799030914880 0.0280535792142559309233213381504440 0.0439123894306758900426977496788342 1.0449057272747441256834547130692086 GT 1 -15835197172379599265334477279.4322077849093314443507009379920523 0.8998703637409288134209152858257301 0.0076346754592461974329869413975199 1.0076639687858717134441898769415694 GT 1 -46.2136655835488357135267877222337351 0.5361199601736755711474910485287211 0.0398720381272251593219458389047808 1.0406887097855862281089223319240960 GT 1 -27917454645396988.7641196834612981244329171447388244 0.3855130135133169357344392511863041 0.0668541113373151533230677210956565 1.0691937252324093774191756584765599 GT 1 -76502297238161180198329.8516106461651818149488785340341096 0.2010537914837294833589175746050951 0.0016088279600747005761675994651360 1.0016101235135121109298338462732751 GT 1 -25672725684871490535008245421110940.3232210685116741702214951594184054 0.7650634805201070470091674471607161 0.0032412136181325034488558604064248 1.0032464777288074770971553166630561 GT 1 -2895.9845175117756363281094533620561331 2.3455920894327969424227086314114155 0.0632320662500295736513816320869925 1.0653196968425757531623242411873884 GT 1 -1053.8139351124317132053451409148583193 1.0901691186253885842620121812139865 0.0541617308647317135981654719071164 1.0556836874051986728834564686433485 GT 1 -93945152874785499056133209726076036.5235795279690747839467013904642411 2.1769733961870917482102504245744719 0.0830572924194474199574856305372919 1.0867102867794156935476884021988321 GT 1 -1558334657.9304271639222628620344816802851569 2.5707588286373487129852863295882744 0.0150523019126270469327052524087270 1.0151667376082713581662608540488472 GT 1 -3680849.3616639067152293461076888957688832 3.1971778707191233643227854266675589 0.0541617286461761358484296226517538 1.0556836850596014946511469786121164 LT 1 -1160493113672320968069003416.8312732997825851128834097611805106 0.5854989182241386143257840501207713 0.0545003515549540742250056556466947 1.0560417627027887289414659524083437 GT 1 -17502738034472.8122698686247289712262187765417668 1.9247558214405801705043500583808234 0.0741645124738725141492150985410331 1.0770587193782748131528139555677508 GT 1 -69264782689256465580320.9814800264497252922723687305711119 1.9312400727065827926850515607692271 0.0174093709931617476822580261647431 1.0175626962289115063694939852175775 GT 1 -835268325628252954134.6029583257641175941632581979933045 1.2782995184445441184861812264640011 0.0809684392469072901228298248305363 1.0844348147209357355058001941630732 GT 1 -257341015045011283227779.3742546162264218288055235612632700 0.8874114010399514494247780589564579 0.0784507093042403494341036060622055 1.0816990136709177090638787887822070 GT 1 -3209820564967737230495427350086.6260729430100290971662428539600443 0.0897757338013385605645833372192346 0.0749739342581638135579808831212754 1.0779333626863740581059733674239851 GT 1 -24515643253825565967345000700232469904430.0227224289254629541414655904706647 2.2293999166537693522649427004222816 0.0633862565979233204150197383519452 1.0654843086247047694102325570509426 GT 1 -525989.7725208393308188546136814395990644 0.0045265747727506484364903391016240 0.0202519084069367250697919273690975 1.0204597897552110858970627418534035 GT 1 -209722305.2784964552816547325883446818229232 0.7749144048713968434205122631348230 0.0826779996826840841302546412113112 1.0862967229785790663442875487042848 GT 1 -36274.5581392500814124991276861955874829 0.0858329719957100858217919725125420 0.0784098554241501128469222621202900 1.0816546829172968829577930770882343 GT 1 -1552952054952414634.6358465117013275562755190077635448 6.9745154458759825983087632273850273 0.0978434071590367627296537342217266 1.1029671677334956847962905896431050 LT 1 -17155432906482018006279856067579153515923.4495476176308277238718639031108913 0.0054782968051452726655270621891255 0.0773778584997112772508817729319677 1.0805355091215799566191323392823613 GT 1 -5676449.7962075117754452972218247348229129 2.4214391842700923694247643501272494 0.0433929900189026679021605319549036 1.0443626197457535949000731789833648 GT 1 -3394020248.8262437722168487596235341929401783 2.2185862234022836162783675429479770 0.0632243018282106777220661264642949 1.0653114083547213484705737771290419 GT 1 -501148454786032.6490035223667131188187851898565257 0.1051685842051522118804565758476235 0.0001565871958349461588011267749996 1.0001565994568898620595669556214553 GT 1 -813536057450094518181390991515174.6703845425494546147447286738239745 0.0356999992476459786977504714966685 0.0671676055464810784410023693971427 1.0695297358011839780290218576107514 GT 1 -102573338785437484404954889757.2875866941346412746521550974747427 0.5357745514662532919581817387373842 0.0640020914739914542928924637305673 1.0661420369878015615510558111869314 GT 1 -345515203196211838491811425549186339278020.4158462764620228212507788276618908 3.4297004088612982929967466159510708 0.0461008084365743535222016357262992 1.0471972823379637956521215917732002 LT 1 -207310766344683.2697209146693459358605412821206920 0.2291928906073589952758447489286794 0.0803747757450333513819960721881575 1.0837890568749424157832862891110249 GT 1 -10633.6940169116043671388545902411456272 0.5346153060649743000310181505254400 0.0510855227570661187476478555945667 1.0524366032498725068226472571172885 GT 1 -176.2890512374621886624800063907960963 0.5787239692407152682428350025032947 0.0090659121205592746382519428426146 1.0091072575810972659047486976611505 GT 1 -224.0878982841714988439967417747875706 0.1383235197610834596890128350626911 0.0155245080666340906891790172471906 1.0156462751352474339938656876901906 GT 1 -1039.9266253938108970515368604160327400 1.0138931076206195075350131432395939 0.0576561101938691966324563100755935 1.0593850075367746606125802744908020 GT 1 -27377184164738.6297789821674671825247554575540672 0.4209873159270261395264699707434913 0.0129085535588292181624146787118290 1.0129925929375766875092977252637355 GT 1 -3444292367626901356087400278076864111.9648050949663177638165848322136512 1.1376267722460177196873886157277434 0.0196457848340006388263174984784277 1.0198413285757452236675238872986052 GT 1 -919497812549933159673453408197292203567.2091985418623017813939281867387978 0.0261228265634750321314036530309524 0.0988600493098376543937734843551271 1.1040947052559914325061200958517062 GT 1 -2538277434853199499512174771518.4740036872089012192463593362499323 0.0921507930346081111948181208422700 0.0741293418377693300299995377791291 1.0770207321023894819414535112014211 GT 1 -3587530863692.5971325683591310793731737262733566 0.0598301828488205773576197807429303 0.0526481440662465769385331891520813 1.0540847068264074890610535750701971 GT 1 -408320726405592166270846871.5690157227768716270840217009233786 1.0534229450657774177516479940087235 0.0376914388731588521947802652806284 1.0384201301334894469477573727663211 GT 1 -97359422865740415810648.4256412685580605249117348295901941 0.5765607535740702113169237028742630 0.0343320875007974919761926946755446 1.0349352797548360741352598517443177 GT 1 -22.7257952636470413707952283835812716 1.8758304905699519514867706991109154 0.0409306273623531287927539202868334 1.0417918681981659721928040239141644 GT 1 -614066967722171885997895843865224806047.1813806346160403611570751095261529 0.1184123315674556567756582343281041 0.0597478794405741517395502406532728 1.0616072263197693573369951754777946 GT 1 -34073.1738389864993318345507120428988387 0.1787519963437189063954945933389388 0.0605531096095246207222849809601480 1.0624639913800434530991563296626224 GT 1 -543806925117.0170358657466866870318657777317383 1.9003574294364744892775428056448730 0.0552223750949766329054215387751262 1.0568056967407376335562553138522214 GT 1 -7069414850644.0008008110996682097201882769425879 0.3426306257195059362370245301305494 0.0131241799958823067495812083064665 1.0132110630627667849334010062652341 GT 1 -2006570022373101232779353065107170282940.8439935036194823976344083197489654 0.6195765000980561898417396721702728 0.0959771018726724621796578714696444 1.1009005891238874441228799025314488 GT 1 -558.8313987469508585130694315200595672 1.3776431359140560716983359863884091 0.0870829273393533966042546952451322 1.0911102320188291683423521390018888 GT 1 -11690089521.6683465481129023694263886264303468 0.3152973651462346059914923855995743 0.0072519341469038843252152107307873 1.0072783572445490688380182143667661 GT 1 -567254197711533731381237409869357078.0064907191251365609822034553397288 0.3463083439744602398128331699961888 0.0428333936118317136446473600647365 1.0437778103218665713357314399525245 GT 1 -2745768201324738249990994.0300062491538840610914200960115744 1.2410824819428097456422174513824184 0.0687222147402363275278530530386242 1.0711976732129163119357034743287282 GT 1 -3243103148181525402279070.4688038440402539619556263624761236 0.2020846236596298392178716734323020 0.0133633390972572650526353951694997 1.0134534320417922420556396361490249 GT 1 -171564688717370060468928172.0524837518441456903963617218456201 0.3026912427815376399409812268560819 0.0386579976884774352590845821524145 1.0394250516249814113362649944484543 GT 1 -26505386378343342.6399248714992936844160425402489968 0.4215083900492145836241402656063166 0.0700543927300611753494267214939315 1.0726291813517727835211243717727826 GT 1 -96838551874.7254728404809185891891366589471932 0.1418492699547919250652493228174804 0.0296858654414285525992271757737397 1.0301354098524374894299061611234706 GT 1 -4.3857461140942010406457586889236794 0.3536401274215028214206269251288614 0.0104285829607089779019745629738444 1.0104833416685140419741667679826913 GT 1 -4115385070260600697589650082157772788.0412177596808668623895261657702111 5.8213473220466897100243510259936240 0.0351573239597546658431427538503506 1.0357902209440962420442089177833699 LT 1 -717124104583906694.2238345189935241265358433928746339 0.5001735189746838023161074953055916 0.0763837444491257372666662886083637 1.0794586014500152380610899323564529 GT 1 -67088332443581074916227768124660243.4914319947059216777050430168636019 1.7429624522178040873906945068360744 0.0399287560068580342655301305815848 1.0407477847810097291752566647213455 GT 1 -104283607627082472460824.6780534347901903809064569337297765 0.5283140519792390363223485393138884 0.0262800727578559711644163674304474 1.0266315657224583800612043610760836 GT 1 -3408414671909703215048939912.2159252069129511312165830448791159 0.2552719815754874104513971586101944 0.0412662615847553550052082699219656 1.0421418876802436786971702064336153 GT 1 -964317731082662302.8134488159419608556661733038689190 0.9068464989052276559098574981955974 0.0281043136346718236849065896964831 1.0285067988349351707092193722644477 GT 1 -595459133624045553923254.2208816021311068980353700196175873 2.6583717574049135159648359333601839 0.0538094752106523244627912555335113 1.0553113297970264051818247805918264 GT 1 -22267453441582188752232407364770885086132582.5458284373425575972346275858391595 0.3089691694391310854645716514767075 0.0808973766578446489082872006584931 1.0843574943710799683863840835791997 GT 1 -4873999617318004930047515167479728096922230.6607571782721120026506807080959439 1.4588056572938034448567397165574831 0.0431071105895128160596068605078910 1.0440638170840886895856475011226552 GT 1 -4363980363469798794108772121485.7892958036441354767466164962431613 0.8475497880541398923543496371099254 0.0285712975533929507022163814262993 1.0289874020017541285701913137360571 GT 1 -92409052454441236069999676.2755474970242148185148143328717877 0.3126524446296476336472021138072926 0.0585445104712244316715140906205595 1.0603282081269893058378276025437135 GT 1 -18033401324186.1619609351083252094331582440632771 1.2101029475269594155252220366520321 0.0647232400498964982015480967534882 1.0669127935461566404448546792643004 GT 1 -106650366245731343180.1990917116077301300839455019823200 3.6856531144185628831380064444850922 0.0091724217063562619862411598568554 1.0092147473844551197681700450551288 GT 1 -369029358137172558490492019203849008821459.3368160048280233151680310293763135 0.4341798146245584440111907695546108 0.0112646789592813200932170759340374 1.0113286059869931605799218890360788 GT 1 -19212329504.6451184379582693628397788607199969 1.9751440830631010383686338301551568 0.0066284607792818061037059250481659 1.0066505265877155722687183292673233 GT 1 -846516011447579391563635856296518.6162265946074058291671907387481499 0.2168221382558803977194566002324366 0.0951143662448150326553352759656155 1.0999467148089989993458568894141183 GT 1 -6202528601846454.4027481233085279762356594723428376 0.0192302946309936197289430424083509 0.0698444545262944073892414546068480 1.0724034536225592137206089463034403 GT 1 -434288946.6990265604589628907080395648598298 0.0920126362091431124705716930248630 0.0554173621566345772518443335252788 1.0570121021216431883173678143701464 GT 1 -3926508237219673231.3563550702487426979036102816472052 2.2242084591465650599800184032891615 0.0530211133627188168618282804082142 1.0544784810421871086658643391628022 GT 1 -13128378.6444690665402543620710562025272072 1.4922779739647737070088239938177391 0.0241515897449143976314806313219784 1.0244480219936276696087496927623949 GT 1 -36556.7515919484632924526112833899582145 0.4877046769294896387410266686061001 0.0180238335044923310679112711633712 1.0181882412933748411586701204828864 GT 1 -19518762899404811558015733838615619661.8967676950895991724551177107507471 0.0363154333477093276829951354739581 0.0057343802337768736494433558434997 1.0057508849184452951424274642191239 GT 1 -689180437854145612358428172675129427.3994515990727739707340308068988073 2.9704455675804199516201152435578821 0.0762014728827863867156777779160169 1.0792612753609952688319262773291863 LT 1 -74897297066080995287942.7973160114980885043922101536895703 0.3071206982266071504373755958881956 0.0717100965422584881697789040300111 1.0744111990140028396823746547334825 GT 1 -219349831603.4342673700622521913353817531139599 0.8405761883455569237282252557851126 0.0099117304101190088954545117299383 1.0099611786262251592316504443606085 GT 1 -10458588366449739.1784689701742897277160874988224729 0.4913145425558395086171534775204800 0.0698882636085802475375957985185177 1.0724505533944264213793817269596837 GT 1 -855474849507137.1391852889622955700543797252359875 0.5445720090860475122478301522383926 0.0147491719096357384169709245944918 1.0148590224198214849698257060718885 GT 1 -122630151134524401303269189345985270634.0159029737996064192057544665830043 1.0396927689196310988003965867396388 0.0725491803643366161115929130048794 1.0753155105579792483407691750522544 GT 1 -2679907245647539.0727142744451156063432971060780380 0.1269685071022849708774900037908747 0.0496265903623705432473124464930793 1.0509003088400350390372766780299193 GT 1 -27495421713078688755809636.5587016194992746903110249942469682 0.3131673492679597286677479995965618 0.0287764868100699907102587071737467 1.0291986485190550711834409351977019 GT 1 -407100507951547315613627855072105315984581.3974619957768340309821347763195621 0.6650963119884645165443574457921148 0.0335667430675044875391021767030600 1.0341430391771353605176551471681433 GT 1 -78234567.0490949036460834762269527313915548 0.0650983645323247666316563361241949 0.0291863403556673808144722430070799 1.0296207347256585081474220145326744 GT 1 -2131058776413163197698870524909160538.8195085259034783760479701777707139 0.7049773926669790200183539640832342 0.0998547599291474881353982356663944 1.1051991508213290534297425082252916 GT 1 -57067.1350677422950065241596597339292894 0.2151671006292154069958247748841125 0.0055967299601723687578610325033760 1.0056124503358660317309198629108696 GT 1 -189274677580396611623495064302187991181.8324754059507552836565250126645852 0.4644282748527474113941702824179260 0.0980472204198479768718226739322236 1.1031931110879218735520744191919969 GT 1 -8080.8706490869188646313733968812404147 0.3319476225944295148436370739191152 0.0842086464012169721694479048970240 1.0879667201677837488414911782964981 GT 1 -1933164488522314.0199918895205745875287576864209553 0.4184804402249411086997808302853064 0.0845493258716063822816459125589837 1.0883387949336108910203471312921345 GT 1 -4128280048746952529978338545514355800.0094424549589704957256509032141843 0.0842338876198951121879263084994463 0.0574007624791688178155049539143340 1.0591140734034732732492194636301476 GT 1 -1215337741260183249.0872821147091955364263487635742833 1.3523381778492646355249615701043567 0.0857992791064570165205444492372512 1.0897051245335646496348895131509481 GT 1 -1057947629318626765638218.8299880560495780608986030421537576 1.9008993094314579584586270350108250 0.0735172275602878940590730831607955 1.0763598276662817241579971227491247 GT 1 -13600451894.2620790513793201192184319949757769 0.3146130952296360873024944595307200 0.0728262767705822686698616924030171 1.0756143272746818610326132460031863 GT 1 -1621538549424946681633.5539200934305952208748167678724448 0.3078869112151035088385046739470334 0.0463251784961772649578959395839946 1.0474325236015799116269228246166124 GT 1 -816117135469201147211.7635628564989505217715070087946153 1.5052381108113589226288779594248942 0.0269308086614787386094216738212298 1.0273000879795920944330389298907737 GT 1 -10055829605637.9759457291321162773990532845819539 0.3926834814634866549439001651497033 0.0563587554395638968910549119424901 1.0580092226111152070755260324839079 GT 1 -8859836083237304288902.7979994379010032545047092810723332 0.0898086592472642846370221278917154 0.0929827012353395230984065431090633 1.0975937565409837328775615046755173 GT 1 -226429057632123626004427.0762870489865610939518603904052669 0.1058674817495983412362761057238732 0.0884927445414835450408958166799472 1.0926557249844942467382881422232450 GT 1 -197940432.8390392140209569384061985964782214 3.2783229564167599307763553953886245 0.0672142338610852628264651742939791 1.0695797227873731418126805028511258 LT 1 -693419402033928549532055.9713453725864476443568174430656053 0.1096188522354669423149057455416153 0.0550955586612655274460646118292414 1.0566714768778656008190209048660779 GT 1 -20354138760.9130043545103893785299022191088071 2.4610268215622599480929364015194091 0.0270621318218479697460377863655215 1.0274350547670211149520554453400394 GT 1 -8.2119287987196842691398492254044673 1.3941084633644562621069519405896273 0.0072630915845752215716979277769992 1.0072895962494431403645996120775693 GT 1 -39631.2551794394452300549351411229721497 0.1014072384817915184748552665816608 0.0932452161974277951383684888040661 1.0978832250651102709415753313279087 GT 1 -13795874062011631396327755108334295298.3423781870165664483355508193293796 0.0687130125217060289903799675057438 0.0021067899192141720968402431035421 1.0021090123230700154927241761643641 GT 1 -26684973425.8048925851049634383576226451789502 0.0531746163094301128381791805916914 0.0617631211421785099437010747276495 1.0637528257620262540451783629869654 GT 1 -1173140902629244171459011487.9210188428888310832081069453531956 0.5595667664528685981145379777362590 0.0976352638688746672562622757699786 1.1027364768707794808085778968311731 GT 1 -7230290962628260611239136416.6131107354550181022736378334498458 0.7981010707093759088438253353805067 0.0338807261346099672589680535326283 1.0344679804813063303777690694614828 GT 1 -5446422537944.8704516840717545546647014799214844 0.1096378149585174147721192095554962 0.0206288870793590294018252695058429 1.0208446348184481679654210189532287 GT 1 -184866561186.4515822974469795123574837948885615 0.9446865735745142182790503610527001 0.0780614075992555482894007694764895 1.0812766602458244670245779804193109 GT 1 -487053857047046.0596021147661018819134498508775575 0.4050074534422495430071474088910848 0.0407214051040783188057491408320510 1.0415737406606750883365239830714731 GT 1 -7145163830.8443502629029281523000710973561484 0.0346355430870817061446313620156042 0.0601131162808324773635326641723335 1.0619957474280719857480593811706154 GT 1 -3333333812694685842486729474065144.8004213898763893467321596210191983 0.5375872526579883345343786439544375 0.0291935941074882564850423272318918 1.0296282065806827338124883730098042 GT 1 -190653.7073043496732762066668317263254582 0.3585899721440164763841001551619588 0.0952302434278846038502653146553312 1.1000747802780903119434937784784380 GT 1 -49581715046472658780.7250481882421877441099328029026773 0.0084272149957233314228765691328550 0.0543923160470132786443787920929283 1.0559275063555074462874286653975298 GT 1 -1586454653773591016605615457698561086690517.1164875683376874865446183601603768 1.3469278100139941847050283523420694 0.0371485861496178652064418666475504 1.0378561741558205229405947907004998 GT 1 -1414895595406212381415659963634.5548640329254651230697998666084441 0.9308755236126479247071553370189649 0.0808341927156760380166842945569476 1.0842887514811507107214706113029397 GT 1 -5889532742534306489552498566699882972644.6465946319786003604145913483900819 0.0633963681751345997662163209603238 0.0267802567205731827312362367504209 1.0271453813083183488948400694475059 GT 1 -518445259130.0166357242019393059011177662852472 0.8383988336886267271207721472942497 0.0347884317890837928535013331150318 1.0354079600037505149653165562942635 GT 1 -11095152107526022710.0831958500127149648183241044112511 0.2474162172265652651803801519315399 0.0394636773727646636697766451033801 1.0402634811145380787860617837609839 GT 1 -16698177272250235.8045569274644410736093379698146288 0.3558095022953680152558178435053976 0.0440403098461787645106359127177712 1.0450395319307747042922529891200367 GT 1 -3832178440162774656324695610.8209233429317289224650318668054939 0.0685367480728711431107581326732035 0.0110125831673064575962110738166934 1.0110736705620090841223567431705689 GT 1 -11224132745900154.6976101265331929885693688637519108 0.6854836245938954381240295561589554 0.0974672655650168142506647182425091 1.1025503185907855220537777245900302 GT 1 -14241874304298145659318717314523792.0493975045963182793468887341122224 0.3486035467700988168883112580473008 0.0463457454440856339491555377152544 1.0474540898306772569491132859089296 GT 1 -2193885429631.5516485418542573597884727713824695 1.9438359637777872176246712901714060 0.0721475610075529082050624106138643 1.0748825685457349148576403036553786 GT 1 -8591192513786318559480.8641220296299430008476761931067542 0.2716442246816393200744296651856780 0.0378700280625193927356643615863487 1.0386057314783023024237626607585503 GT 1 -9713139576084.1923754155851071776548661926613712 1.7796924216695334522046468528751251 0.0810856822052123717907918639231873 1.0845623951462709371015741084024192 GT 1 -51870100863.0103389476979035137857510161253367 1.5742120692476890377010957100595243 0.0989117568357725198174909842831898 1.1041520870305362725091719605621641 GT 1 -3553453728.3202081601592551716817547512410899 0.1186583211712800776745528365715542 0.0620125139154302467583019081968815 1.0640186711261314025506877639079989 GT 1 -1288457317850729113.5236080119371149511640046484570414 0.2516239284287775327611562410423081 0.0808525797596847190206405940643715 1.0843087557369369273513343190115924 GT 1 -3644.4862484868435097543007796680586602 1.2940405131075242403944395687379181 0.0928220237897386358828286936677786 1.0974166229675063900666565800651674 GT 1 -1046583.7351097800365577972566206203855493 0.4521636120451705809246605112924397 0.0012930752316908126807979396572719 1.0012939119748605773605832597897705 GT 1 -63585092958804799728416115.3475581296400519565349852064009726 0.6930580458292024269774726365001995 0.0186838239705090540674326223906924 1.0188605716199212085168685273652684 GT 1 -10948.4037577910191156382718117652353883 0.0919374084339262338002880924998928 0.0167524949003836682805546524466501 1.0168944050753022522865896020341036 GT 1 -4205094174533858.4322814977129573187522266776481913 0.4778822931827295307465728758523710 0.0951086776210766505518089195582130 1.0999404282622296644187351338150087 GT 1 -1239385618931206165868693293791932896892.6721626905209017832364379557492066 1.1876089324061794062719896945377677 0.0583687122038058874710124624759181 1.0601414952574114159629218241661710 GT 1 -565085084276075127959854.2984952867852046940513784778201907 0.0278182215642601812240339136244912 0.0655714715354319188920500831029697 1.0678201360551445633978680796248526 GT 1 -3516578332430773372058917.8088065533314370942139558335749835 0.6860123241183447551525606461904765 0.0123217934365098266378239092190993 1.0123983361454550855838905588798992 GT 1 -245087742211529309.5749113399428648525703051242164949 1.2374115425479868289581972193394170 0.0693571525828047079315065713438012 1.0718796978449412381721697222479261 GT 1 -401438770686615984160380777.3075919479325046655125689410979889 1.0168876580085311277324444131684170 0.0824787586587425552813533696005475 1.0860795479957783249324899991250798 GT 1 -20334502186783487.2222049634870573621209408909793708 1.9218455278022687060876122590518629 0.0094639270078489053230745004881707 1.0095089945342973175907243813009439 GT 1 -13322087085342305334646419245411739087126.9362091063624502631120274719987940 0.2929684213318952065126797628928891 0.0665767764864275795671556946029049 1.0688965652171501064886939136893635 GT 1 -21.4147027397218123358087707683910074 1.5963436622901018524754661234972283 0.0655069201823334205886708975443970 1.0677510573384791832664713596549146 GT 1 -203347.0001298930318433462081345214402697 0.2883693234898959075924442734888583 0.0189379753597027868275193080317433 1.0191195954824243452208913175472651 GT 1 -765097.0269200492213845232649992932587763 1.1356901250268338629682199757498545 0.0349952046271263394147890272741866 1.0356222083571833733831546340072767 GT 1 -109018279965056793919938218340655787.1795970508867726431960318723238277 0.4890524978285852497502251544530121 0.0935743071915881040953313339933168 1.0982462236766870415813172408709304 GT 1 -2781627343555391894097478384333432565582.0015968447820913556514277506609693 0.5283787396622663366051266769062806 0.0047133899725681701675357781443143 1.0047245330232348139456153898258024 GT 1 -601009053743.6332246337815252005275189600653426 0.5457153878098359576788953249669091 0.0023086293334330498605042486092951 1.0023112983267347204917244023276019 GT 1 -350762180.0891696588455272904546331620424974 1.8073373070328844343857277583677542 0.0755473265593954498280714553063027 1.0785534209843745254392207221104326 GT 1 -71.5709677664622956364882985320032085 0.5564941662932991841995379159819657 0.0012671935241052327130209546915171 1.0012679970927420498187887509902562 GT 1 -63305691928758478361785007910304450238727.4371000135742169624739571069103292 2.0841549725116120424807821194005291 0.0290612220572604948010485611528968 1.0294918632009902788352518046565064 GT 1 -8645171139255132727156792528060.1226227158177601191741269219503882 1.1380364856030290639799479224336649 0.0880083130431272109846907043793568 1.0921244041282167142299272316421673 GT 1 -408039199276.6575663507830731518911686034007851 0.9444974026469057893075925678189168 0.0753464192779478060674186723879782 1.0783361189426060332532852176353165 GT 1 -2303140490311700980572389187.7262680100507145680633749024375814 0.1076268624282723440166780322105373 0.0232206563632348536784439464755590 1.0234945033822511684911006375425870 GT 1 -121647638.8071723176752747470695009992795419 4.2049186686072219412606470071745005 0.0679747929302440123500246581452023 1.0703954184501035339650298665714337 LT 1 -820391845521.8944923013402854582405912476245584 0.5024503618030061407017560065475094 0.0822593596718942642255257599818186 1.0858404551555849748173206735274425 GT 1 -79069.6101899745518857242880754030121084 1.1768734673037904196925004444373673 0.0684910242114351874299164820709336 1.0709494531430484496274234356986698 GT 1 -56962812365171561729156149309047746.1272063419040841474361207240993342 0.7759032176902623086236022007776363 0.0863918382581356449410476053842496 1.0903535065149275319810195653367138 GT 1 -2460859901657265545662983.2283047195111891752358300932362077 0.2295818865936347535472063907913638 0.0485623030078403667158063472722445 1.0497810731158122221031334718355996 GT 1 -93821401128808.7671183717603794884438748747597504 5.9837440181974938200825422324910571 0.0407035521557938947423749739080366 1.0415551300273798260403730959948602 LT 1 -54773017514181553509888.3634175212677584801134382705136782 3.0787789965952988187483390205202393 0.0687564966190616508569367623388494 1.0712344855479358103852387196227259 LT 1 -77976546663070852089625993220008.8275328545743750932579656445083625 1.3215921391378390539800238135096866 0.0153123222908108405154310721466488 1.0154307665578825677397009882355462 GT 1 -8.4019164369705707101654655358884805 0.4414181799031287402379293975480336 0.0835076373384465852562115623919323 1.0872015448941594884372332691865610 GT 1 -57087456457455286496.2120689334287536769044282324078523 1.4035653031418714409145366459110646 0.0786058333003943135873296918264430 1.0818673574102742569973332252353998 GT 1 -132217536.8121649622442628325611109773753540 0.2284765650745769200593641142315399 0.0548955798543423960434795562196896 1.0564598600841619434820636412919668 GT 1 -9997000.6816827489529534419516273451832542 0.1391681056967899175494529496481148 0.0025193842121331887958304510619599 1.0025225632010562051884748608176699 GT 1 -451891002995615129646806319481358.6744366165542249726977596351898030 0.7298947557811692654277041014924099 0.0400327479988778279518064006934480 1.0408561076009307207389086389549938 GT 1 -218815145782965486434735902625784211.5096681979955493298867077060358661 0.2393149375876397863632167815989165 0.0923638898166486498705428896265543 1.0969117404164433662030311416962917 GT 1 -47610796080.7836999348839943464373796520143351 0.3547860561486624342009743899606486 0.0073527799211551216690660271092797 1.0073799448478364698448619054198864 GT 1 -29416706646118761200465345068701005305.5717395403545999088882072757746146 1.1024608444560520898766239039228160 0.0811600766264110380526059109392702 1.0846433574638352337691625019308486 GT 1 -5016061950933200138326517943261174655550433.0438636265196991935849110358283405 0.8112105321309484725049677850032903 0.0909555260228770099987460324317210 1.0953612597340469689224134744404101 GT 1 -10.8386857651520906130049220327504523 0.5759999392591538347756127565984322 0.0874810411043013475962723569222538 1.0915464168693281754211491818861246 GT 1 -1357.3137564661446967981473964680186638 1.1126784821224880085404954145156139 0.0304185529899669336369225847788029 1.0308907985345292925414875767285730 GT 1 -184504555243315883826097512847.3303782856758539194654040181718367 0.2272907693102342757156082379104028 0.0725795643080924468457325092583228 1.0753482718007569121811105364621095 GT 1 -69346732618286.2484275644987105775781808630833663 2.0371264125714136037884638600170697 0.0830488475403396109177451540766255 1.0867010769998402457573804700088069 GT 1 -141342712428776871602.9878244645878125948374521144911340 2.2227268841730877699792918680174352 0.0001401305669644709145721266458624 1.0001401403861696943827857747252403 GT 1 -38001724192667849.9612902250943178046473033252042114 1.4730600616216900005178343905047127 0.0774193384650543007348664320544072 1.0805804689116710826169762256128678 GT 1 -262285038917076261967840308032651634971.4384576289573060375500983939874938 1.0346918027674117998985448209354479 0.0472280012262376226633093789933245 1.0483796497295654860196850546770849 GT 1 -131960444583719661449435408606400832637485.3539938395842286747176100577647337 0.0839927537818246886622694812300536 0.0918402896358375705020004951357592 1.0963350233765663147071982627578606 GT 1 -2959694637796613658792240.2145768845248984404583928597507482 2.3747104632543619409866141723038255 0.0486205913474125964727543773846985 1.0498423384254602675993953807238509 GT 1 -10503346817639949903181732661932.7841596830616444748120495421367277 0.8443065146145463041027062868824959 0.0986142415746348381651174937291798 1.1038219682453807590116234381002952 GT 1 -155426175.4241753468883463048657734503339517 0.6975443912440606494141465120548779 0.0378174071437172802345347441919133 1.0385510408632972830616802616713770 GT 1 -870112804295797578946112822531699.2940087752396845540760375987446697 0.4927686672770435908928699176020254 0.0059179205424778226243808626016751 1.0059355008277190145619154761598632 GT 1 -77004616884994160821478.5192144656649903447561401752467512 1.5530889752572283907351022296689820 0.0217891197395310883457538301152963 1.0220300082026211627551710598784158 GT 1 -747.1612747821633769134180048692141760 0.6014854454867233970244301400136573 0.0312035114265553521190152430515067 1.0317007112611312796919516574465438 GT 1 -29276274.2065946298046325846826273035984595 0.1356364349520901665788213366002472 0.0504830286756026595680130021693582 1.0518018749301895671052748884683890 GT 1 -7265.9183987540449807576089596005130335 3.3147003674911622586740175747835980 0.0154251748572911385751907849072875 1.0155453805988653252773173892474467 GT 1 -294419504358.4179081570096798904391943644471572 2.4252173418250604558347555462176496 0.0424997984306734998593530547767922 1.0434293474110902701594218200743223 GT 1 -1379448402.1759105938522089195088739715640240 0.0968516624003478598900664313253342 0.0700271712483590599135120960774660 1.0725999096577276546686812765448622 GT 1 -9781046149402637937556443201542586.5798858382194348087143380874468252 0.4306391133420993189198730666134684 0.0207894515459302170824260093923737 1.0210085947595600352510163931458871 GT 1 -6917064794131751678285037535836.2710246021296848974458172875610347 0.8616304651964607541696975301256327 0.0357319686481816723393092079380890 1.0363859821963889979723009777556801 GT 1 -163773106438490.1871642040419541816279939265619210 0.3790441291252854860822314357840479 0.0437643854099023071926651410551579 1.0447509375204579406309909670238858 GT 1 -31907501147322914508899783553389767.2817650681225419722080333527554895 1.5584655216286135665420069260693833 0.0944227763537562791344626490502564 1.0991827224168097643654993562679555 GT 1 -1932031362464435674871878596062567237982471.2632802921746881534743111678200095 2.5015536114068023531997711683016467 0.0953146054523443330410207497369075 1.1051848427754744791743337559122629 LT 2 -15128501458969650003494016394.7897735879683521409456344351410862 1.7776414341281256216137017736176886 0.0171379142062694289592181784023222 1.0172864679721091827468153340626206 GT 1 -144293371087185637559988744669675.1684856779740653642854136008511743 1.1364343258053623111514623846637655 0.0311716222877707265339800695667306 1.0316677955617692720418096398102868 GT 1 -16608186836075171512561263638121057213607410.3005227314183920469743346894712453 1.0958567563475908224370719718834022 0.0661321209891421232374803228458652 1.0684203079211247737322283959824923 GT 1 -163680828087932690940.9736351861255956800015622057829026 1.1672236699405845458745129679064544 0.0790104184082272606393079285155105 1.0823065548518622808809722059010013 GT 1 -1754740268148003165292114951986015105772063.5513605683908870260538042234418452 1.0568435617522819641037871506642925 0.0740162167435694451702307408628958 1.0768985571713469125990119117588654 GT 1 -8.0502447966276110511179505451907332 0.1719053941299125563397767336912574 0.0579398906266800290231530905156396 1.0596861960664950954244705213245243 GT 1 -17307669778184446.1832555231123324735082093398525904 3.3824828209569332226808327676723617 0.0243885645620507369975336378644926 1.0246908912679549827176165547287729 GT 1 -12963.1421562417777283689042938144895794 0.4003517809421518207497699642621867 0.0327430968757961236801763649113439 1.0332911485707360144736186615685093 GT 1 -1658830289319165347484922.0208716657658591866778766313087294 0.8400700919485341619728084215856620 0.0380226395312431905521386540714779 1.0387643624096162736980655638744871 GT 1 -27778498364040091.3316186151989360315900762755398769 0.6118768361023765876915016016429464 0.0480759231092540752751834050920592 1.0492699985362478538245298337278515 GT 1 -23622411518157.5089128431072793863567254678969919 0.2853607828381710058255286176829350 0.0053783350650454706987794043301945 1.0053928503779526576209493022151645 GT 1 -3473139381675772633009261466.3343910665558647048045937563074511 1.8514274062517168655555448626734894 0.0807346429032610713021176417822034 1.0841804528247299465942785764841233 GT 1 -1419922265896400.5107809349941754016317438941885022 0.9241527672286046962876191903796287 0.0330023355692762776396161163123787 1.0335591988050545166138917423998590 GT 1 -42860387819817569390954535455.8780890526353694497979824075333779 0.9816578281887860904517424776866658 0.0227946659172949387919564204700131 1.0230584810760926135966358904663396 GT 1 -22803802632803219520008138803098807083983093.0800693221812196150428240926233154 0.7656030439736516879824598239346507 0.0648975009303836823386432411081890 1.0670991310284090200912700139459624 GT 1 -567145792517658167293560790796498197.2382094362903277098199365997926853 1.5208645421867923253016480534790522 0.0829728788089161723048182143772453 1.0866182311640325350622081581402591 GT 1 -20485293363610032350285177902840048795.4808575519171751076958930672768446 0.1815824025713330052192026340502678 0.0023828842199871317252338529981750 1.0023857278067802856930106677378486 GT 1 -1912586099539.8127780304732374027729439492919760 0.2741426413504403190988829221981481 0.0602299325526156112815946572779712 1.0621200427382997694112885498609997 GT 1 -1611071197127010338833893603861508298229065.2592944260132575836926095908245067 2.4760672514616311976202943688608254 0.0438022410134338741831198626084021 1.0447905264588853359190830646503386 GT 1 -2124487475.7139774066581323277055884353187200 0.6817931177188333174634338704650443 0.0746464800624908203906399668120687 1.0775794307670797138138956782956384 GT 1 -445.9777036967298239514107425805709481 0.0040010182415832201838884933188640 0.0264410192153516866722406811653280 1.0267968696829735164165653274623822 GT 1 -10753866416297.0936147697854420738643074493861228 0.4919371009094469941793602813832182 0.0926594219016237067713542804541717 1.0972373997921202038738014428235366 GT 1 -433033895745563411389822.5986478989818998544704896374796128 0.7682206573485902648607390079641111 0.0684913088942572674803774571997238 1.0709497587577800099838635582361226 GT 1 -3207661.8207157044507500326821819344280220 0.9365964954276306453095725250273819 0.0764010266295548402103661674279055 1.0794773130545527332486758284551474 GT 1 -1358786961.1977541191664784179725538352698284 0.0030900770597913104897901910808547 0.0921012550278573785014358317123121 1.0966224209468914789526488399214761 GT 1 -139114386672539950244621742240.9408073852926727398421164717929070 0.6831499973588141453403297945032884 0.0358400032978170662482073267276270 1.0364980264606050023524460800531371 GT 1 -234660981848793640263560672399150386532.5883920985068020490364990279689058 0.0478878352779283484725926515117729 0.0377293554644551187668298319019811 1.0384595326077441995657805981441232 GT 1 -1890818585163603400495756452018667380022596.0960172712595861563221948778878925 0.6387982409249651821767995193269803 0.0868830533415486367932423858170234 1.0908913160550646778942129505547585 GT 1 -462510031957940340185611138747002.9597118678727311546864650736111624 1.2053751415704715221676362085501318 0.0411314763934326336581288641247229 1.0420013108836742187509230127122135 GT 1 -818086.6198222825571246003715515802931255 0.0615570642080517817038969600307429 0.0086811097594345227634619465707913 1.0087190100968398957726701974117913 GT 1 -2977719402989141710402219531950696778.2758949758345946067972974221050217 0.5867894638896180350049692776510543 0.0388995418474886335243226250426476 1.0396763404570268106724949143782410 GT 1 -4391491557304158951152149.1264305406446603106193560953852121 0.4136293989775003214083244120480007 0.0431505629559845772583797570077511 1.0441092279692204725972689501007468 GT 1 -14998929573370696969204503843187125065575.6292109078722342697084020187319835 0.0171780494792160018989565501169569 0.0655000641742629180002746711455823 1.0677437207588203522252318754921027 GT 1 -1437741302344958162337.6949040701653004600833857415797332 3.1382771149012108547586430329117368 0.0905231524510454685001809841106396 1.0948857375888173422490930500160557 LT 1 -1901217184315653750.2740681355118416034474059807282915 2.4732195874345216383333759753191193 0.0896510484306177201967445435930929 1.0983384575876985505085754088996527 LT 2 -25.5938511221950965707675318594417667 1.0075933922213266790476642302932099 0.0785555625872073637144555324884061 1.0818127994982712878312392490720027 GT 1 -33479654928474613643599844.3133077120620821092700344939587959 1.0635024572052644155990250145329831 0.0304159537877202795816844216750873 1.0308881177914408452368233556722213 GT 1 -32753181858686664463.9245330182898276298288846757642103 1.8741798131166751648973195344180322 0.0794000736884620013406773645090784 1.0827297276429509657187421710316808 GT 1 -3520046.0700177977744787603587333433389094 0.6722300958313824658624510577725177 0.0916481629516950330195843105929713 1.0961234896980354746796749928262917 GT 1 -18940024856653336283.8836392980361584992973949433494201 1.2387384706137078903573096559961963 0.0384800825050390835765530714527558 1.0392399991444954761822992600068739 GT 1 -202115.0373220929895529988011212793453017 0.0322963609420823286093162959356604 0.0725393068473088473464201828475312 1.0753048647487750994379512705243294 GT 1 -3692553200476027606681.8741383174627000165226333727570897 1.4995263619218453978654786914011286 0.0417836633079425428819901573394353 1.0426817053233532392628974235073296 GT 1 -24484410070710928044.4587992314532484271313997392603714 0.7799936291648780365926066586535379 0.0204617364350756419559647774962996 1.0206739779757217935064535480033527 GT 1 -6345614260001.5766839033625502262054034092004677 0.0119987213213567193574335847354463 0.0929007009373975561161489727383252 1.0975033540849387094242175504601337 GT 1 -1904844792062055.3657500802412809199318223296098436 0.1355780126076931397562455258981710 0.0600612811006910222948334254191057 1.0619405985035309116926874049066600 GT 1 -112542041927792066919147105758.8318507605935845361189578525832691 1.4517234529554782313848200826252506 0.0469228152000830285245245163484792 1.0480593872120551916387741154885556 GT 1 -91207802756227428726803663223831012.2978268984600997327031253739890324 0.3983376073254534832754838745808569 0.0829115364686433184422353764411739 1.0865513407883041057015505908785166 GT 1 -160066792992046065.5490430576755392259508670711309955 1.3795640289211380444523523867981770 0.0334613571718277772083487634852469 1.0340339989000426860685289855093363 GT 1 -1816046915754710719.6575803885346425616333067913153984 0.1069980709747740592818978599776617 0.0783038055479088375168253945493149 1.0815396168267900645560245395746275 GT 1 -130619696.4077340581439156768478396534030625 0.5918825915362113977716810235967602 0.0907350346532392184121941593247900 1.0951187362493748435197580296908957 GT 1 -76506.2494464332595755839681037706156699 2.6280080999120687919688305561481630 0.0952355449415088211334277389623918 1.1000806398120965302115631739617805 LT 1 -3.3139598656959515311466642429509922 0.5501490684576164280777579349748261 0.0833912083106445411066038567669386 1.0870745153216972592737003429565537 GT 1 -12391519542318265878914408679214642.8422345423515667078504035562507883 0.4579167569886914538670731569945522 0.0266751059593797772129089553988069 1.0270373429317204676455503393292522 GT 1 -7214727855215355933510560335.1442296600690434651565400473293011 0.7168285039110787070673416534192408 0.0202719358725980976100467396145887 1.0204802314080514147271149462042689 GT 1 -251331666871192615410771705483355135417.7356976831705730338058524096523645 1.5915557850402811654910689931705333 0.0299093533240953032705189066848440 1.0303657616695596820238064911581029 GT 1 -16703943715140464.2578818589679838065599526722883907 0.0262724480143317812858964945329210 0.0541869527370617149150599299758502 1.0557103539183270221027282372903261 GT 1 -377006631085457644359126798582695.0192320337996065725229215633800078 0.7599544233876927559100360074352683 0.0408417466901033788132780570846617 1.0416991986201543927809372120818114 GT 1 -561621648120658377991.1309120102929063712750994294571409 2.3222692363568059679559969733108004 0.0420926674184002842120468529405774 1.0430042357717700447070126292842437 GT 1 -11255851069106086505501116158309642923984.5452438142727765278276852556849689 0.2122534347576880950386216512714716 0.0688905270727151331337393521867082 1.0713784222297463383958588771178405 GT 1 -4975580053175364500687482742290596418748334.8773850113516101551664020921483509 4.7628763979393595594183757557317682 0.0101955840563412456411703078095282 1.0102479150238502272100436755206084 LT 1 -158065474274790582509834788700551.7753962912631627687675558169684788 0.2281863649505570726376560989517643 0.0659986895820106305614730754392977 1.0682774377371594194775133377658163 GT 1 -48674735551292090684.4927592718100133306826953988423347 1.3970853494655106101165682884761596 0.0358200619690024604866912265538915 1.0364773440814703547716874791558084 GT 1 -78890539953474107825210861616666.5789144708922514896612145898544536 0.4874705309008914304010036943912497 0.0476266256715467025195834900887043 1.0487981211562127760615049595155941 GT 1 -25485170735679735944416.2729595914141218282378896309417056 0.0687458232635141407244433743787395 0.0344538437692367579038874479013392 1.0350613727349691968184741058644294 GT 1 -4644508692299549224598757144929202.7303374438746167629477773470218321 0.5209120275023702649196742791945980 0.0213829798683754233969701637650030 1.0216149079509270248090489884329418 GT 1 -41762148921587218285364109.5694854654066860092027910864288495 0.1706868049846178860858794121945959 0.0795829765304795774562428065109902 1.0829284252623738497829975406691434 GT 1 -6557496262089322405.1103155741240781763774395042252764 2.8860555508663093810031494483477589 0.0390352328386310843024812138474284 1.0398175333672161238924197960168583 GT 1 -1875411194548999350693467450039.7965229095653015935182904201389367 0.1588797233681288693695502707086244 0.0306975241097055249735934201670866 1.0311785631793012019274727778856369 GT 1 -264018688719188001123724706185008485.1417247872344131142486958822593321 0.9934195069765932916768543445103152 0.0634494266822399984461574477818392 1.0655517560811577568689983853630226 GT 1 -1859.5561722184000108706895478821869483 2.3931360591019976186138393892221378 0.0958570205419997175226084066990809 1.1058448395109227397823021135721391 LT 2 -226115944947058992385450768441096941281.8307445196844840195839613233391657 0.1916691688484139449333729134601469 0.0092533331265010294898798351343437 1.0092964111630261912638454473729702 GT 1 -2162211202477598042.7004137657012437312200117604692871 0.4086735155233861378867158467174376 0.0713461473458487039255616567213715 1.0740192116962695144586585499011320 GT 1 -28663612029067105789.7910198215901844373377442838145376 2.9603889816571392435665517459543063 0.0942621060973814803956696701343720 1.0990053151228060283716963491130032 LT 1 -30779324144071215424184933014737.4625290616033366881550836515177187 4.6483088499185116755110351230938428 0.0523437897141762921568534683107099 1.0537634898774006162564598930317081 LT 1 -84826647508417555665078219743.8024705776601628219191816343824192 0.0204853368879992251006291296245874 0.0865052309161747559605106149243530 1.0904776294160204107196993144622596 GT 1 -456217241938365385.0746796224955040221333754713975233 1.9691932634964594229418284289812484 0.0976122105276711593697869119427390 1.1027109294997380651428657218988981 GT 1 -852740000.5722030259922657765039537046924570 1.0104949229941371341478055397510824 0.0445309545402538805992910474018985 1.0455529119963870120889509822325145 GT 1 -299107804186495570226723661.6124352460971588167216576070420796 1.8692803615540708306832035029239543 0.0352385957239715657772068032373163 1.0358744576692296554485494229348266 GT 1 -74513.1154090775678301772543494053931673 0.4909751545359302621423822161071375 0.0235074034734635444022619495760340 1.0237881103361959817956824012174455 GT 1 -12201334341480790700789286964080.8694721805223734226182236720117120 1.6734407464882148001245412547274837 0.0016955369792805413305941049611661 1.0016969760289759548933015732957463 GT 1 -2554337642848208505321806.7366497567793685587700117026864192 0.1492637822385296803790608673949499 0.0543514656326135457531616077765911 1.0558843071168105710181390588098055 GT 1 -913396290389803.9131877338918841484980916387295670 1.6356293369192088365804541210944057 0.0465687524071648905149995062856949 1.0476879618451668625099334423362498 GT 1 -1296479495151434.2103073103167630233035526928924666 2.2690419119437030739977021006581551 0.0252413335777732883140195938132033 1.0255653602410505380019292891195019 GT 1 -1047728628077.7753017782580758186649450012564335 0.6783761131413150537352211897236709 0.0029224753752732774118299657160648 1.0029267541448654102793071841135989 GT 1 -157458160727388854150457092214103682384.6357543156272077929461296192019089 2.1245473856615466091515395458480701 0.0802300002602799388034130505406674 1.0836316404772440914169465844598533 GT 1 -10619935746.0003967907078921526019494569685967 2.3406153463314057582734543931536575 0.0174737091727484099126325695308404 1.0176281764850329411435327828888517 GT 1 -2709857718588.4271217392715146222850954061134743 1.0826995093544784797356386952141276 0.0183803707353081323707735277130738 1.0185513885719582044038589473823799 GT 1 -304352714458268501365.4682526154517101004317714841385648 1.1080529819133899879957669313798737 0.0538862239904758492140547247908173 1.0553924465390146860849053580623246 GT 1 -288073130106261163818723861056574519.2235796873947166876610581975428360 0.2206867550858753967410006654830450 0.0000778101291226567650709757751512 1.0000778131564877946071642107227204 GT 1 -10996956722512960598935912761736707349.1673365300016251961065662638525931 1.1401172855355328979026047469476794 0.0810498809931251345670666554122354 1.0845234355675611291390360470558350 GT 1 -261335751.5435127284063666652489591965670465 0.7427315689073022234297260747410721 0.0002122136378521091958131907656082 1.0002122361583523156098776695056421 GT 1 -301015094580589303787662742.3826743867446521471933591336929001 1.5393013968992922221113111229605531 0.0389644733804438759381008243960693 1.0397439023085236402043960683479926 GT 1 -150067355084.5553715491882956792411260338323385 1.1110511315972818587512771827057991 0.0802229606995296119320196007029732 1.0836239868966604340134730886690613 GT 1 -50642075993498355723082967776006.7112192677909571798282910884772021 2.9634835069678684433540530367341809 0.0199354577710678051694900479840292 1.0201368500688779044414018782946839 GT 1 -3468001889387774312.9084890878229265923290061078259178 2.9760877157019128632269308096189188 0.0789223157905388500024531321576017 1.0822108986080418162362565045576486 LT 1 -147769728733794.8236970505389522390819082960963679 0.3723086034083048659465976344767741 0.0643983378356499543975218715034692 1.0665654676978574622153045203174684 GT 1 -1905909371121665191316696840.2856239352621111698857592021717729 1.1420697764420238688714552090369076 0.0709877506838704214032852966288128 1.0736333547696185587666851419407730 GT 1 -452838574029493790619696.9060945574943170531534613134416872 0.0796713487361726933588313217981418 0.0180694022966229368549537008538403 1.0182346475617063951060174840838407 GT 1 -27670106536674933070087712.8811787471732142463415177709405153 1.8703640004552218046934325594111675 0.0460486362413056644863012737944977 1.0471425902184619248839600077479793 GT 1 -4035380455403700276990328883414737868.1422196116423726415771067800778164 0.7383250319714843006219820125824149 0.0493375187592918466846612335434395 1.0505961887477277522675064306697841 GT 1 -2.0967118779442328452975724138759749 0.5986911991082125967891671753652325 0.0142016623178778031009441742742963 1.0143034709750910987688909456647619 GT 1 -22010984929382195296863217761886787159.5857920467909494748757724441900698 1.1101993073368617242396271888691945 0.0561776011886876943776700705958876 1.0578172673890174330807473891552963 GT 1 -73175098731376882054521451915143971.3173455636634040456924920021619120 1.0126406294849756532369330809120385 0.0930394113933207380453956060802375 1.0976562822844280148406622639439517 GT 1 -449471505356.7876586870737487879367476374701577 0.6784180517547247936119371080042180 0.0760626674083978306520719624271568 1.0791110315110203730397100373032404 GT 1 -5044979536422012734076853.6088519942426943737753641376655644 0.3788156148334168737504152307590889 0.0687666282690915910745748584344795 1.0712453653072127482256757058919346 GT 1 -1669919852979043043442434913556445.8322377804147140156275367639007641 0.2638810749576001818306352106880262 0.0231043861400351575621759127505626 1.0233754761890214963598413120744074 GT 1 -7139803536521675821364260541910660059172873.1514390426016260750959688294603155 0.6319200645480861550233174726438214 0.0498983725385685847559555758589838 1.0511863238339132535142744577756221 GT 1 -411458580066364315638834748608902782629754.7743195794375970784170495589691845 0.9613085417833766373088000341902909 0.0886070481180183190162621100982376 1.0927811334695273831730507868758500 GT 1 -18595536813500205186847829352207.2938858684018454921107691206760082 0.9369993463637241168569780955561251 0.0563335545161462583834891920196024 1.0579825169249654888239002978841651 GT 1 -29913586443100936894498781017405.9137889591802531524228787348392598 4.1574524209745141460121452857476454 0.0849909324435402102136505111298410 1.0888213038579481877518795002222605 LT 1 -2535928491.2647886259034081104410187828597064 0.0750119080313616787832639159470254 0.0652425525398943171030019681884775 1.0674681978283772732991812834155669 GT 1 -35358859934649432223308612276617210544.9532108916021227288567746642681544 2.3151129872454119778315384794702188 0.0388390854697235518005903607796967 1.0396134391485531980136616504094510 GT 1 -5482855862793026747433530945407944590470.8582105847174618352161417755416433 2.4463299812542702055731423945265179 0.0427456424826789215762067606584629 1.0436861365146228058837246204673433 GT 1 -2384413314039184790619131613550305486.1913319314970118305174133478845947 1.3399078661648448805057405254914158 0.0508001504254968189936272591070765 1.0521359128966228825556935481412819 GT 1 -960542497126890479471442598.4270942583219724894084863179870075 1.1504692515898131635131703143568618 0.0297844109816424372051550556008843 1.0302369754601180055813068119917211 GT 1 -13166233467751763096147267482263952467787122.5458234133920112288956337641174699 0.9340043255213023655654034407519769 0.0182369816256224197054683262859358 1.0184053252356920280131614046446313 GT 1 -52752882798577752196.7908023317414018810033209916832785 0.7316758181078196987887237335298534 0.0363145858815832649756680413537657 1.0369903715321435993207998398914089 GT 1 -1202404011324545.1458324304029274492387224477743106 0.6613475677926317297840795295412039 0.0040871362278428167630565587124670 1.0040955113972101752266556977927617 GT 1 -157443155628.4280626577458643531859334580236211 0.9065790558185091053013711812302962 0.0552825146145431075882904753183421 1.0568693534490924248740677790616958 GT 1 -16551406237.5532121424290692522587142656242957 2.1151374987347489716722934321772178 0.0457024116150903438646204786679553 1.0467797186658529110919762650195867 GT 1 -348644351616013856919.3391092633992350329062173812403360 0.3204946125551031166775891278303079 0.0572639961872256867413820088502913 1.0589689890819323539060688485155765 GT 1 -17086734469.7968896031052353657609082369242144 0.2575820804007341387813306554594912 0.0007705435745729427784779088279835 1.0007708405958614655886246393717479 GT 1 -968365975124629753516115860344010955.0182929758481824608731737166194710 0.4149699434421567502717765428668937 0.0727201029412820261722958603088172 1.0754998204158910148553834539271986 GT 1 -56184522884915036918088.7904882319316005925541477019253327 0.0186209263830875018789140259239562 0.0076102855155824191521315095950872 1.0076393915023425729263805059480239 GT 1 -8572758923069687.5549877077891289009967981842757070 0.0733474818436236999578694124520715 0.0762151823144477916507460848196992 1.0792761157542042908174538594739783 GT 1 -1160095869.5084209295240815924040473901940553 0.3767083485312690729502591331082604 0.0710878189603146892831249995268236 1.0737410752720308847378605996225035 GT 1 -59595338251940797211363266773488192895505.4198732236761339421299507458724027 1.2971159384224591206784436804867055 0.0689606497636953555690785533069626 1.0714537359642245925565631842258987 GT 1 -4557075427408557320498472626263033.2853481755635444755967367134867496 0.1554827845198915561953667233169703 0.0252476076626314216734960332864896 1.0255717968137798530108334523336302 GT 1 -8361308960123397212455651264246941413.8452974662461464467143219148569849 1.2841078111769169982625827676248104 0.0515557653134270447414031984568151 1.0529322844966842160737698448458807 GT 1 -436974631154778215171322281377718531.9087506374388282153212480827906255 0.8789987739730386650570961664020622 0.0560063374342055923710096835553548 1.0576358262428635897260847527672483 GT 1 -7545386519556656939668830324865377.0579602093441785497643070632043110 0.0056839071844201705936286521638949 0.0104870133705057126407560379935514 1.0105423895895682374386342610927850 GT 1 -58990264088239676.9875013864472817034591739299306913 0.3043708156485226357930985497756744 0.0073747934917534118897961234268815 1.0074021217242231894861216476060290 GT 1 -11871203655495750405257893527079615.4396307678631598500250989005744986 0.4897424563180929859780250664353022 0.0433891914936533018051281527163442 1.0443586489221362671724850283878505 GT 1 -582679030234831.1114880379263873450053519906038806 0.3299138460785927198550483935159924 0.0389523821567472073506334683813248 1.0397313209342665891309860574065464 GT 1 -26163.5094884207628956181011378498078138 0.7650026890742463202841843129819422 0.0569800397887961335759296231209763 1.0586678298587953501986915103141771 GT 1 -2198920629486674738950687895912.9122156437784731886169724427471643 1.5631158325527685341676769755876371 0.0627340599206785650903958846103270 1.0647882162241852929390200194776722 GT 1 -18599685171147095572779433487645144077.3966993232756465002820568089292151 1.1316098169673424245369145529853926 0.0691883182055651640771549599229410 1.0716982973594037019854043517048052 GT 1 -7159362034558707752577.0348742492278634563671366816293062 0.2809025059264774434494985669162068 0.0299278440938793272695295531877956 1.0303848227192406425973538976364261 GT 1 -58114887881378024508869022.4493186614533475107068171972260210 1.1965910450865306084921023044075241 0.0499566461425617304045643593073976 1.0512476597894159413567456771185366 GT 1 -1807785564878824262352850535628519.6360558044805812081110025035608604 1.3245668029007014561020495377203774 0.0781981818308365726245489921518069 1.0814250262859110341695000458075676 GT 1 -175311151694080322929860351269101695945913.3020291245091946791795926554468417 0.2214416210209781757145840736453346 0.0208201596951293571171090955662450 1.0210399553599570959999613952416611 GT 1 -139675990290383558068692.3837076350969886877108977918874209 2.0545691970555829780846677630659618 0.0845344790271485061487722297975056 1.0883225769936550094685541806736763 GT 1 -2163797362190366559517475091858127584613141.6132070892168476874321118878821586 0.8009375666170739848283110551447711 0.0856971075014511236690403420255271 1.0895933701959041538678711589568795 GT 1 -102180404567.9311279321758652047346878255876597 3.1159039278581401757869515405709683 0.0626722258954354971684521148600571 1.0647222456356810917125620069218684 LT 1 -165577421438705092330.1733990664264979689220834918681635 0.6676243046573091847219427846440876 0.0029153304558297249585259746519710 1.0029195883090427521319201857633796 GT 1 -18420494800040698867901532011803515021351532.0448856677010437422485138599307006 0.6619996864039013705009091379667121 0.0504014934781991739245094612105262 1.0517160084324386748693659438763646 GT 1 -814844237724771164725576990293610112206220.5335431834095536998215049696584295 0.5265166725186062758104874947044280 0.0300591804253256873091136687535099 1.0305202200936983612630078116031331 GT 1 -478907207156914540639430446483073734.6724356992107567673971751939317970 0.8046548625587527809914001584716538 0.0817815015196550994209010946860459 1.0853199009091108394180223271774351 GT 1 -1180684185852452146661120063489357.1842697001246765593911309263832431 2.9017917772965968074663738603797614 0.0704196243691724052809358953688312 1.0730220036593568294754241559698531 LT 1 -5093733235258743069028724952124.7656998851269280547262708457962771 4.2679602644026570931956979957666329 0.0911644398737339754218336565805549 1.0955911031206923517985414958164214 LT 1 -139585095662.0862449105157655445159526931609428 0.1710642443446962128125490517426046 0.0233346234528116137934533914977356 1.0236111865814515357657642435430090 GT 1 -1675111116842289382371363843495959793826.8615864509515954428631212098470086 0.5605045686775852393494037988377506 0.0649525115276971437081383848017276 1.0671579611732592006948992543453787 GT 1 -258065456137723175668.7286234911631073000001906784772610 5.2569889495138819022448093574205897 0.0605518616214159884100637451207854 1.0624626629523351206080574235377393 LT 1 -483400794851604551557174997195490.4859531591842252995801506926212160 0.3030756687468357814747701629245184 0.0000238570353853069718661128673674 1.0000238573199689018826885269451574 GT 1 -2546544081027426.7984235373743222340550414746566097 0.0355754815105083616219882687425429 0.0420458655101310142388781069317350 1.0429553784727607172147558902436070 GT 1 -1179587006611274431881259034221692439.6179586625207244629900945197742978 0.9788643512516248552642203416617927 0.0534712533926391194092398615760460 1.0549539373123356452780850245956613 GT 1 -34546941380.5064782111725973907146325792329222 1.6388033057074179969628014359730753 0.0378498143497921512839048999236441 1.0385847223620899051420899923944937 GT 1 -50826.5000421438566440032347762333310244 1.5152707096238940894710691164417297 0.0644730270309008492376748302023302 1.0666453010068968874014922628107530 GT 1 -725592463882887518456147.2680580704664684391242046320033975 0.5831791092583453473090302677278254 0.0152232384117363282836250690911404 1.0153403014777747543526666837057247 GT 1 -12046798211661751534803904740932553913968940.1059821781470693379608571087267174 0.9696319968402787772289815701272724 0.0150785037615514004271118270017856 1.0151933402365081698063087815234062 GT 1 -2969746014598801785718368947683.0706714849975352372828746036721729 0.2561070935296151883882647995430147 0.0805894339685478933622325817630606 1.0840225033642638306733569614773041 GT 1 -196676952110983.8492722655770079148397833376809898 0.3951812997230450958722437447484852 0.0996760067389067528768497450651637 1.1050005879272581042863689779807846 GT 1 -19.2050883211736856239455302000640475 0.3362537875318401103815679662605148 0.0856254771194803889350995918499910 1.0895150290063592264938453239245359 GT 1 -21485616453554399951105569892393932.2870690649294360718348952796213419 0.3121972804551664648311398072785048 0.0385675797158455824422709385550180 1.0393310021393673478220507368727554 GT 1 -228046020985012.1170466940259996173894648298911048 0.1367741908530604992812069889451963 0.0070028987691057802194617642031091 1.0070275341447558364677821746040080 GT 1 -101795886135909.8290173220412947836234325145042580 0.4037557211533580433463049187687656 0.0276111930153619405433247090682093 1.0279995473174026290797558064479775 GT 1 -2117609067376017.1363476689198422289887254155474783 1.5440449536487654968441149952398531 0.0144785990953004204096723545346703 1.0145844368415851553053994602747781 GT 1 -2348484996353.9069885973756947300228057985577312 0.0836737381093030668125152985615106 0.0418228184498735330220524466915535 1.0427225686862938045840479127670598 GT 1 -2109541081184692850890237.7176829241393521026379456436931108 1.6563395069874467386075042817832451 0.0469130001311300943061506104539648 1.0480490889711880478482366220789142 GT 1 -528376037135031210851326939389122047846.2173749260819880544889156996420432 0.5976652986804698000685847402041605 0.0072757817654664171907853685135431 1.0073023793563204635136836309572550 GT 1 -3.8927794377246052613743522187683483 1.2796401064194810548404805528519996 0.0318394530113745940674117642822425 1.0323573511307760162582368780785833 GT 1 -2412143450585441763887813079104.8793684102039862982056374465038041 1.2098360858281779677387971793304880 0.0920880407339109855377691230763155 1.0966078662425758989913454651052015 GT 1 -35250982622927893876294160817786214220430.6835073800215011308416448408724941 1.2939430486508882015273099701687909 0.0364190920925776804445380998270367 1.0370988217342796412396260545017392 GT 1 -16041592131.6417226888102761547250735712842205 0.1886012080839939235476262736670907 0.0354856274870010264138829528256968 1.0361305452305327383734607955334988 GT 1 -171631776047687034131685430123121037999.8283689182884997248703737556172804 0.3174926093576770592064421635907483 0.0140341338706829013061755191621674 1.0141335435088411406765379461627149 GT 1 -209843283069568791852.6087878224270918647540732203518468 0.3852564543932160376232240772270616 0.0970547589142102399418704094563430 1.1020933685049055515601446731346945 GT 1 -4455106298526369524984.0108648533541451268910875208453686 0.4326590858538812185805499036597362 0.0294164912974579646198326265904287 1.0298578329831621315146832417632319 GT 1 -1371044417703862156889078743962.1298003141981359790466177586608343 0.1882563167066871750727917941474598 0.0070888702385566488769670274968209 1.0071141156576000787136777507529849 GT 1 -1031476490476459.6475626630590417299929321689638359 3.8228296277334464937937596595656251 0.0016678076249150244269471196565961 1.0016691999643701463338558386451881 GT 1 -441332071564376017382908642087299692116.8803701619794753122434197735320270 2.0076429258234903189853327233536405 0.0203998567640634380165263925903051 1.0206108076853349834123334066281540 GT 1 -971447289848118582785806.6889457214263230000280322060590801 2.3707068280068839464604414102197582 0.0599878840618372903411530326644203 1.0618625145052359564166744894606442 GT 1 -39436574767261955030891440098302.9618115773558536316077621911748040 1.7978381012826070012159264495506245 0.0999244318263624979577543487136323 1.1052765545452841575548098341766321 GT 1 -1344098074715.9760838026512474642747928979107490 0.3698509524655749929584089328489433 0.0653148529110688438442670324978486 1.0675455474848164593758698787943275 GT 1 -151887515733267866061873686009354328543180.7829204731909221131561188745608341 2.3849875477410128104986236550787718 0.0464885007173037570720708964072523 1.0476037939381439586855474129767918 GT 1 -291528583.4966566316091161023021615176739936 0.5379528577563149243082183616192434 0.0972236170284547173031100927769993 1.1022803941377461951347617104466282 GT 1 -145418338198294852494200735337226396.3251440789524674026994019172397407 0.1404419751326848123597507810602191 0.0145994806365643043569153946713261 1.0147071018139235936088739448364515 GT 1 -2078512616799402.0742594716757301984442447582436419 4.0678249729075377488007126076607157 0.0328148156143271305669768310994078 1.0333652978451205344310401706585527 LT 1 -10922112854968.6433790711936304291900627448193888 1.5220688713265634837574586837296124 0.0530219792353601622178853766460777 1.0544793953952412477878650187232739 GT 1 -3155906978801397345946231502.8863253546034010069353281169771716 2.4376204255340797355789750967720211 0.0975689499230643391798948412675581 1.1079328353095963423577330082664655 LT 2 -43446.0760969497639013055859477219518579 0.7225021857435644523333435907381755 0.0548638956720732297990611810881250 1.0564263361152681357611915765897574 GT 1 -64025189.1947221841261767006963112936575208 0.0132481212121032311490417943224786 0.0538799794759583789796145231037560 1.0553858463878822706318420384356393 GT 1 -3199370946276759455976099.5267272886144398037477544891324597 0.8339720340891203531060316913732733 0.0308319044725535806267322163900677 1.0313172089395667662987582191648258 GT 1 -995222154499727307626281418798438845451.7754560878034088830554219228032883 0.1944805648619998951226301387011840 0.0803845944792059263392322422662058 1.0837997338184741224832517250152193 GT 1 -1054674865286441.6526251234246195332463731331432670 3.5898011799141390025292622375311577 0.0408457693622916564505012111272957 1.0417033925898250748648444863712137 LT 1 -45814591833132070638053188.5878081770350760238503987036386510 0.8471660716124178773928773686436003 0.0490478844279279621717950061151325 1.0502915693636643378320986837205046 GT 1 -4277078558033354670265745155.3548181309011419683013063950966720 1.4832876811563898438754942464464587 0.0440710649901675009796576501433944 1.0450717044575491200418197877806029 GT 1 -1070355007773.9637037964135374560611578589840354 0.1737967760647289880659562044352825 0.0160550907824485880022431849944519 1.0161853700647190522395922210758312 GT 1 -750107541002377222629076.4827674853057297302356338849030926 0.6912012670065490163171575377109650 0.0229620071739946970864739550712022 1.0232297404630937925123178856932122 GT 1 -29279889965174690.6335435052917880939609730096608625 0.6013851299129885265383287712433058 0.0533744011120568940462274997675636 1.0548516188923957411993162111157154 GT 1 -135145500096085756928483475589493034055276.0581282911007130321187322249953169 0.0245604196894376618341408640741397 0.0594054463369739152079102332245787 1.0612430997675342082376118813521219 GT 1 -19138533246961844073233388420995520986826603.9064434133838958219613285494615933 0.2060223245594340558521026064124203 0.0707401690483617522061630123174921 1.0733668904131848991326017443017128 GT 1 -1124956.0765707037369481042257451872158826 0.0740505038965115761371704683253170 0.0749967349718550127136851382332701 1.0779580117157847041948951584667775 GT 1 -3123714615943967959814205255763650642018.8344811076271864135936429552638502 1.1717582679679282873355350717522130 0.0385995503784386610801443670020230 1.0393642558486172759338958065491770 GT 1 -63788537122922561503675650235360314.2005567509209312436571248550570574 0.6723979144525014806428144388936681 0.0550839016925656485261630044071850 1.0566591402898611024707373464040548 GT 1 -112348091613736.9465903395378241721399706681798874 0.8510289207731277598281405917577668 0.0423697314772904993162415628517367 1.0432935165049309334566013074292837 GT 1 -4939908015431722018070795578884993452.5638135541236413071088536293242486 0.5297441930420560118433914962840359 0.0867477587571545352066602196968822 1.0907431591703145011712894080137060 GT 1 -5.9977668343193847856396119833479217 0.1632824543010319821900441646968476 0.0245076135595831655899344749082846 1.0248129237260386912481157861298534 GT 1 -12229892748384526323504.5541449676033200601634634385132029 1.1756544174123900778656533890224349 0.0636590431756508683443542343624124 1.0657755987233103542344741868229683 GT 1 -200.2255271932860166574905880519682710 1.0996659378505769474731904159021169 0.0644685884433934249011315592165239 1.0666405565397609163351696059519877 GT 1 -37785884945454801991.4606873814754847665126819261879318 0.3362929026347545405952893871936412 0.0141648212632554764240408154407965 1.0142660998771463551638756635811090 GT 1 -107099667948946213635418457989451.3430345262872456148400487321939956 0.2586329122104719008608900090100733 0.0023967375624373534719363443237570 1.0023996143354080859054821074683744 GT 1 -429123290554702609252.4024078253013352016853242516164454 1.7357782106216217352447828666023605 0.0371966384667048396941531864692885 1.0379060816654231973823123789029036 GT 1 -1054757070426464016787.5368953276027848630574440952229465 0.3682350549928770817645427155456336 0.0996428374423400648692961078981211 1.1049637470945951359106224449445972 GT 1 -8249148345102115091.3940333490537651717283394262694457 0.2369502007741200066636085025209821 0.0627965752144610906438863169123433 1.0648549180812308049623057661436618 GT 1 -252751288867778910598635749472664776580910.4091626041164931840664556889975423 0.2601083260908151820235672583050236 0.0145311049320581751623828247064596 1.0146377154770786543353886172715365 GT 1 -18898533.3491237271682240863518574451101107 0.6411394038857027589947576119241249 0.0519534054922493574856497904929519 1.0533516276103213969834366915702307 GT 1 -1038559493961170499075386.6295310751825049444098845540455533 0.3217650908882451800590295913161933 0.0445251660143538131635232454613822 1.0455468537065938391701715757481431 GT 1 -446.8452641415746214900239678234639722 2.1316241254777074586258656399881200 0.0829857711750047637259514832122331 1.0866322901339556403908726569263831 GT 1 -250862994466812983151969.4094131549736203103081917486080792 0.1463529936203475766449889847536411 0.0665187471057257319794811254888089 1.0688343988005456619959278855220117 GT 1 -435903373765283226536397102060.9737418321835432807116861132467530 0.2899151557108332672803003080406299 0.0441608115366342293992891586078992 1.0451655929845422455650348236945030 GT 1 -325796526241983267111485937233700.5659111893612352792070652794794769 0.2315863674999931378707110513696581 0.0383517021195608509085648037345053 1.0391064898813508912148563510015421 GT 1 -278934.6415880308269830745708553973641944 0.0268295836230877787859893814903864 0.0037473569697122040161688671676197 1.0037543959022725075984217837973375 GT 1 -291948164196504579529020227.7602792119335838562361344123844409 2.4042905109640157193661495612133945 0.0233177991885166727390844759284042 1.0235939604978908138604444713077563 GT 1 -367775418.4549569297276983497518570095747167 0.2774653644250242773203396905170015 0.0763036513926866573468328322096864 1.0793718883985165568424219940608600 GT 1 -15038631122526887997253713594529277127332267.5714424707416020241606550213958618 0.3267157063368643756241676128470919 0.0400672686926319275835272457012794 1.0408920685302061422498788868494978 GT 1 -1140008956816.1603010434856552069671766211721312 0.1954529077917596229054941328205913 0.0126529918917156719818777961158728 1.0127337227074594947250266480779574 GT 1 -9117188473700093651193044106.4300639515918625681475428718524048 0.0564604698992432360018439696458011 0.0584644309066278301724847858424891 1.0602431524234285291008732898610900 GT 1 -2218597424416981883115152622179403247880053.8417791456101950012062001908685303 0.6840672071208954683269857553693226 0.0307796583149196397025993339972959 1.0312633021408636902192709364213589 GT 1 -49554736033315936497112570305748338917111.8923407127474793063252518416834114 2.1314721553603991141988771459334543 0.0372211371934992186318762605944852 1.0379315271919616451670890720858357 GT 1 -6430626133937631553498886688063291383.4383626047637700049669936622097431 0.4773507177859944878181257537864402 0.0343499271935282494218396229559784 1.0349537538671956100977219012934899 GT 1 -34867695834754175311307836433047342.4471779760946490478424969077807715 2.2209807471569738241123029575828974 0.0171837784066681175076208199105975 1.0173331329836063873340066034262439 GT 1 -207140601206336.6929540431695242998306182751554668 0.1163778354941153736993133092570455 0.0714047588743090188007247984031805 1.0740823281933253694675796637077641 GT 1 -12.4638475619738121163639945776928315 1.3245880564477687025468923497993520 0.0309799253647485275390472687606243 1.0314699504481172992913263705529913 GT 1 -41884233811170.6980765824267788298560135096443301 1.2251343413822932417693838005763667 0.0826359492561149653052258363611100 1.0862508836083476748418430269567118 GT 1 -15596806.8100494788273570242400081693932459 0.0287696643634843533020305350113885 0.0246184762947319570535744605564641 1.0249265781602812919356374729931750 GT 1 -1.5728863125646990995355995385196774 4.1338024295325198790125880657298419 0.0598851671525785302287072427636704 1.0617532485756908239613529023619738 LT 1 -573633963585391042533138303232775730383.4022037873486348171688307403273615 1.0888543551260635966399593230208381 0.0290413557304814076045288175953849 1.0294714024634121342047331425150182 GT 1 -8844622494703894094610676229240571918.6929261398743979571498918970095587 1.8159645899996358450402741605735932 0.0239522302322204849585955810060671 1.0242437493325839808037325886807931 GT 1 -8572954770312607481117885838164466368584.3015058216123910883351144329500606 0.3051452889860757467057982926593842 0.0939851974409481060089098550009170 1.0986996347072279191349919099086751 GT 1 -7985578329817632141590192479100507877.2623265462765882440580603055490090 0.9732975077550759222047260342999594 0.0817926161007945292254745027660219 1.0853320054881697707663263311592117 GT 1 -3157367881369759033340990738.2435673340798493893181762690501804 0.2786262129750298433926322444720026 0.0088696835068308267428361130164328 1.0089092533044081162079721452829516 GT 1 -118744271423487190660582.3760588175411086943292746413148036 0.6721610248220052949527197420865765 0.0803666435258501784352538055003866 1.0837802139430475408643638076364207 GT 1 -10622195082163964304803593046365453112.2914073323266578825076609838916177 0.0568170626468413844345322684867557 0.0526055123066662974500622930484486 1.0540397068613927903760203013287414 GT 1 -4835680.6153473626497066168243969737305577 0.8035385712510015992200568763788985 0.0999007933548935096938443545146130 1.1052502921269889928262711779314047 GT 1 -162074701777950312777948740273579818.4622988087198194923420900426700821 1.4368705102487172592685085172437009 0.0647265513413219672959710130586527 1.0669163339926094895458873421028484 GT 1 -2107732022787162417432.7796536828115103809404797486901289 1.9958311841553354326652116514123079 0.0632616062598515352317159256314780 1.0653512313075422882866231725777527 GT 1 -255310263.6582514938003997619241326599399411 0.0444194532605838533310999453164585 0.0241229945394117240395352236863402 1.0244187195054042079579716605222974 GT 1 -19.3664530808216733463909324340417733 1.0103465740745617850657489540131980 0.0592432190139842173102983457238495 1.0610706414707727058982327996478051 GT 1 -8189420236.0778471174174491494887692642704689 0.3601918263907887034580065764822979 0.0112049497598540478679255590936527 1.0112681981163350242110486158021259 GT 1 -92117388737477919424808169.7988979473657645925983381320057586 2.5119386996449813830726122334450381 0.0003027110485558944435103084420922 1.0003027568747936590002496067638312 GT 1 -33411038227744541336206152099949437379345.4499534625973601393610396821518001 3.0719268225952904406880160537108256 0.0592140282349668437219879857903306 1.0610396129129819939393950497177904 LT 1 -44672996359528501389988.4082564789921521613667249392587280 0.3896263629567394708623514397970564 0.0322178544742906733823452942537795 1.0327482733096175521655732679316830 GT 1 -824694736611256350246823112702629204.5629487188840442640361784540042685 0.9582978348498196511085727118848613 0.0480981260800177657661513843885791 1.0492933231166857264622784615331427 GT 1 -2755402190288502674.1307674323453075332391945233112243 0.3657726997522518378182594203648268 0.0000040671766274430905145439106695 1.0000040671848984283763038477454185 GT 1 -1888988897176041.4869370828597443309956827952325051 0.4505362388651976709140026883783500 0.0510755241059462127457314111278965 1.0524260663693817028174956354674912 GT 1 -972859584.6191549990920970751747370499407250 2.2407320616017666296288564402174179 0.0102542776874590392983470000866458 1.0103072149930712108437368077353721 GT 1 -13889715082136689221166128103989463956224043.4920702800084971390258432690266771 0.4839771385456179965896847100396465 0.0179524517271573664989497557223362 1.0181155519700946342141068685884586 GT 1 -5662297.6436543961923582626027659021886800 0.2599605910533313688201742036071406 0.0265068098070376302627123035219747 1.0268644493736378391495012938877105 GT 1 -54237629702134641597745766056441257396.1102827039110131369966661014718004 1.4781657641214534635973636516080692 0.0999135978518387178348730425519535 1.1052645178789146594435119967314135 GT 1 -62622692163057629350.0295018320438554730228490798351119 0.2734874925857450001577311343853670 0.0300017239184737074006197202263203 1.0304609847218277354093075524310625 GT 1 -172501110772969192841124575183.1501703708024972011179841173116468 1.5584383653832210928619883875075091 0.0449158425136955602833675076111258 1.0459558193617039248644377295059598 GT 1 -23228154730273531107.9384191071684168596658415232914852 0.5327124682608474061568451777068628 0.0348074463791285498120170405316815 1.0354276601171416205551693706881521 GT 1 -1101.9044079314187097931756372807076735 0.7223965570107984987888148476334887 0.0515320090767601844462566575370223 1.0529072372263388892519967903928833 GT 1 -1618763306267.7583992224471764556810157966240652 0.2125758566962639999085325014783149 0.0732674294381391604500959030934366 1.0760902441830616990790364778420199 GT 1 -19187558895211317714.7642640887634471270097798389494865 0.6698420672399514620678530465347778 0.0180838152650934643200782228737303 1.0182493258641072487093089977895197 GT 1 -89018464283624938249169878649.6866690668864308446379439699276727 0.3221547763484957906655848733521285 0.0999932531071828820343909296455875 1.1053530191383506980489939259064862 GT 1 -995045488408774066187116.6752833737821517447653536685914773 2.3597627773632518003790652889554502 0.0916325125929362521386794743915510 1.1007244670930094221335569308908952 GT 2 -139484869.7744128093936682524349137112283535 0.4090638378979808023642117569421381 0.0266131732092826041393906197754500 1.0269737148665525858892120088665965 GT 1 -39398103411142814249406.8824483566691355813043096721128688 0.0733676117998818772214291631765588 0.0757783087438384717276520439536856 1.0788033105160908141107145236949532 GT 1 -3994649060809480090194491773922097.9824580792157920586351314429453670 0.1316563904325216918400319133825979 0.0026674901389910636289722102036413 1.0026710542303418063120732412104065 GT 1 -96753639098725885.4807395539055453218236411473485143 0.2253502540869494689319310272330773 0.0887342669646464617731669214144727 1.0929207304745920026886185401244282 GT 1 -163772542.8164172217800644761031669262217929 0.4907558347394937252443034469479606 0.0128948933191896352755512405353565 1.0129787541537755521217899270160079 GT 1 -7646368662414150731124.6276926628343933990418307459736922 0.3390205506142824443587341985471056 0.0256336885256161303149734410917748 1.0259679562342184805700700115137438 GT 1 -34340659236.3134708060210686535060549704729788 0.1189761479988272953291011260952217 0.0300497807716429610298582507517932 1.0305105291847815391106021002886446 GT 1 -4349.9835539868978937536325472820835745 0.6986938453252563847044517593908282 0.0346220651445639106309917837373251 1.0352356119777538408398336805588123 GT 1 -8208536705136536.9146886578451768736730158427039098 0.3424342557663522679274605229900327 0.0013695948767338787858670985162900 1.0013705336290351943266103064123517 GT 1 -8887736323913299959183846687402197679460.9427825158456771903836066743869476 3.1530368182527233688697791169627819 0.0350300864357312694446354110340301 1.0356583557827918032121224383534826 GT 1 -24117895346505592.0366302053951224517050505893224514 0.8294163833842849061453097057560689 0.0628754174246192030399087428736945 1.0649390465901097012617742851856628 GT 1 -1715491964914073.2577468736038471536479540273708696 0.6241235471516837413230411389008196 0.0379925829268791539758810954918327 1.0387331182909337105215380497833329 GT 1 -764710149090805053178962103476333683.3116015743976285635572112642184614 0.3973929339038769076342078272495491 0.0792635831177342435267046078448885 1.0825814759979082102788543717075059 GT 1 -2299199772292.3207231544819377287885158371456746 0.0530996912661601004679293445143834 0.0730577895431719030557302458419391 1.0758640557512960844012207137231648 GT 1 -73799664563.1327749324482555426407531102373830 0.1846536096861945304111772769259417 0.0414241740523251040920068251017553 1.0423066106554605492141801940796692 GT 1 -306465931927296929863214.4895540014994514383592671619082366 1.0097266767099159299702979631796205 0.0102474666107926472387527935410103 1.0103003333738055203504614133262699 GT 1 -29012508038.1417313747611406419034329000285566 0.8404334370790050466259049133399895 0.0531686312119497924866390031223073 1.0546342705138163071438053481583456 GT 1 -12511244189.0065548823111596002303712736658855 0.1322618894549075008120464662189478 0.0881451621373375107650480899838441 1.0922744705867754025526270469256549 GT 1 -12031664710254391799827036022726.5482689123604320960309078471389283 0.8686010873658464975012314132731149 0.0245682054927249522080418155197334 1.0248750398592569852952588673338259 GT 1 -20.7878435478926263966174040188214361 0.4361190614364852531627444241552772 0.0418227251571237433847449031010440 1.0427224713214775218649367323090626 GT 1 -38336405915984256658199871.5474743478366225717778874462731502 1.4741445403103870041460879221950602 0.0043124444200375994265181696719444 1.0043217698283358907880002146325590 GT 1 -12.0589203699298648346951357935543465 2.1253690713796866794089169100149238 0.0560254255514042426299009337686183 1.0576560470461854574400425422878028 GT 1 -2148929490574455142.2936817442914230059232352225255821 1.0414180936665777645333896262848144 0.0035663316646814130915180875013232 1.0035727061857363203805985901356337 GT 1 -5012.2729171280182439273624904747473379 0.2995052393913076280512942559320551 0.0934257373413266247705130351153291 1.0980823297392977633902576139942799 GT 1 -10828932044049099461290.9666498523590430338240890225590570 0.1065097160580276757200060302755944 0.0198167483059742912738228593847600 1.0200157332737394071490529759513774 GT 1 -30.7985668586723570567222201172693818 0.4177581217924884505525070727023448 0.0132103989351582105545165695754291 1.0132984324197108327147628585691082 GT 1 -11638653.3616312236521262622959728532100806 0.1097597991420246061618728734583975 0.0764049147914599335846153632425890 1.0794815228579429522633109135736280 GT 1 -144853293928664796209356518047773182.9521022073108365483382736500098598 0.7518692973537229561382844414463497 0.0720811448748013810343030384375276 1.0748109906169347368332468585426467 GT 1 -38079728219976874217162313293.7930067226266098183681550991422733 0.1875835401357889878450193218637943 0.0874165092261424076828990265158667 1.0914757009725876763021382073783712 GT 1 -870067287011406.1846214649793184530658300553433831 0.1297331012439193779145455469118888 0.0912237538721693639862894724896253 1.0956563689802695769462076496973061 GT 1 -14673106336353070.0237142789763033187148616627551301 2.8049371236158255620241271815830554 0.0967796784326253245774546034352634 1.1017887668787869402072268957986191 LT 1 -108295079361466173682277377861101166768.0043644346836460479008806235773700 0.2031698024327393094818203943568825 0.0060503950513180979847225848081554 1.0060687728576121615188568133202769 GT 1 -244613205639836499788779.5294570888407660021088910491804284 0.4574460514919801253173596733813143 0.0229670031322333255776395178577134 1.0232348538476790908260126944058969 GT 1 -7455522073898052301815237738.7200566710496056209039467970063198 0.8192741798322489952010578992695485 0.0108857509221276643314681175610009 1.0109454342356985071818750962257647 GT 1 -327269096680.6240690042485083148960739298142415 0.7477461978998208749916991886035261 0.0724496671668749041118533657769966 1.0752082187674326666878446919057250 GT 1 -926496120.4392463484321296184292949412815777 0.2783063243151120194078192270792535 0.0025677994465968318098665059711854 1.0025711018981627219065123424157375 GT 1 -4785998423521019226931829886.8819997037984474895454210236017578 0.8186533948747928976339512357931056 0.0635027630875399657031589125965429 1.0656087075428589163511744618285140 GT 1 -2.2902916444971985087535794625245576 0.3483817333919135481317362256313654 0.0573883389657813143762952140298015 1.0591008934315166020006616692179586 GT 1 -9722959209583468.9994446009471914673491579087589618 0.9051154899979701276045917422981323 0.0098043471360203081194313077607634 1.0098527262240353863078028516220726 GT 1 -1278636330076072351877734461741.4595401642513859284594286402719088 2.1264960952551749571835901672008676 0.0759193742441518043090059015258010 1.0789559538356266386812366507403870 GT 1 -8296060076490996886790154537242512560.9363504942249047833729239318765526 2.0438109877838145694389181615689882 0.0703468442062436062579937377366401 1.0729437131576679875840204889555709 GT 1 -236549.1961628789799681275693975880475388 0.7192954162738101694935763041194736 0.0857714117135319099347654007076480 1.0896746422034167458326742254626307 GT 1 -75662991374178495.9724427582837674758701624981210089 0.3014154162516433612979530288906882 0.0827881208334167805504569990463646 1.0864167765268906839345205285274921 GT 1 -79483625478035566344594053095955534136952.7172902049903735850601475338706414 0.1018012537699523235231623420258610 0.0376798084699498769598712244410723 1.0384080442668587407531785480080236 GT 1 -1978833116388942118815745311160751014144.0701844895736919166535136847266242 2.7445116630158062038029949739885629 0.0595267534639434159824168223697030 1.0613720766466502343647745012576919 GT 1 -140200070437524566535369.0714156626472143460311560837876016 0.3434481132105269971449072251573608 0.0929373846749818421947213935225561 1.0975437956103597395495377568620750 GT 1 -7380040426731643146901.6516901338197462179617950066546522 2.0264386511902693914385174897596420 0.0246233539873195294058170989938846 1.0249315789775668991633124264670066 GT 1 -69599309055355131.1763727963425589038772129716984476 1.1819878066655432130677404726247524 0.0669843558875413269900785728302908 1.0693333107378977085673871611421357 GT 1 -2400310950.7158753993837722161943929725251215 0.3367331720650541201072016599149357 0.0363763108544234467296937637089494 1.0370544245403058615810644650874870 GT 1 -13693158830174615121254223095276.4029866880721385812769144036789402 0.8119595931056195501466002134685582 0.0895879542155819177632573848198706 1.0938579843878297683043519549964181 GT 1 -4.9453692814812278321696618024136795 2.2439222400102634407676374505021503 0.0480942014266621408343369621054334 1.0492892001651792955921824120217011 GT 1 -11768649459964165631568457137.0745287316797083105130820840119620 3.5124329557868327019304837301822100 0.0774201584982066469170024136455697 1.0805813577591735049126668307490517 LT 1 -288716365914173333516846773007983523915706.8374478639551378469738631584678552 0.3288153174052757585892463884811264 0.0354691311913710090288187172657559 1.0361134421628834617224453371038780 GT 1 -59790393992229836869423191722705831686522.6279894205529187404526771268154422 0.2868375247464618375523114080027351 0.0188637036557977225589303686948690 1.0190438929368189959444770977826084 GT 1 -2235935499106395634704772453179860276619.8865610375170994395705959177390016 0.3983245465628033741705953452560695 0.0943978801672166663400053580322723 1.0991552307312063291305395486528914 GT 1 -1545464611094903828466085934223.9240779767816367354793705195658247 0.3694921794831089791016890179049701 0.0714282881529228806609930015944953 1.0741076670876853595212945709574278 GT 1 -1535914113446456961040883.2455895064026762623266804904919620 0.6021258394548527528618913040971957 0.0843036236523130654997209780510301 1.0880704361246293985563199153774557 GT 1 -5507982292672332238806.2616379132090699480301683108732162 0.6433529055760680701247656637543394 0.0687278133861243118671773012944952 1.0712036850203550881655941455294220 GT 1 -1150436484528686904.8460122587004221472537968844066258 2.9509330522667107721647933344605571 0.0076228192303244672016539779100374 1.0076520214134643120584377832967243 GT 1 -430829750257476730303273473.3041945481820135814812761328918487 0.9209556141587900778247729268472682 0.0552991609452663302297726649417869 1.0568869740368768536403236667832978 GT 1 -4570236483594141348932417216.9521535221637008046968918733868086 0.0623578446435558687936097535741309 0.0979959185793076346975180982101058 1.1031362340731071071360317589015115 GT 1 -2333326538490739530660280932229.0574391802662544047748626381591063 0.1332018199706420251226183165553806 0.0404061406829716466874754301485688 1.0412451472481726728531664877123271 GT 1 -4116478706286623968793927578956.3392747971427105025138456709263223 4.7970663345556892994122511922622486 0.0796515682029352543373182069832701 1.0830029504250350425325293233713387 LT 1 -6.3586631730044330200132051268564255 3.9278341832677748400784829740920953 0.0200628964085617668525317991701718 1.0204722627885705954124710037838856 LT 2 -919249461577558279.8883790442289053100477916194217777 4.1927878413762905309654315934301907 0.0583800119262993427889912150718694 1.0601534954855683000748948923275011 LT 1 -9535625625451108126647.2832035195328554554003220780430938 0.4049915745408671354012101553372154 0.0094417118147673981990678851806814 1.0094865673410068015689612456529371 GT 1 -1666257604395524958929398828435195.2521025805561148183394265318490002 0.0266610192526333705156776844272383 0.0698776380284697580561624196249229 1.0724391294772753963533978140343275 GT 1 -3668396382926233299.1122562690781547307550782869354635 1.6600877939893103293533693617219575 0.0601996949632987751958879049705771 1.0620878677372866581751156170885350 GT 1 -1059734380440579111722825123.7419081017242606182461428062430862 0.2405339551250569803469280058291546 0.0218499618453981901103668973961161 1.0220922074679142025663345495676111 GT 1 -790379398553003263.6059016658854814726843782975238526 0.1752534542090502127065213598206323 0.0998992694467850263482924235179698 1.1052485990838141825983318304426779 GT 1 -4084043284867069545255419887306.7974233114923730046376332197877834 1.9738716750768346043162404432647235 0.0800118854473375315883168521063221 1.0833945279869989159105440554597266 GT 1 -7675468678.1891287781834768917708891294970852 0.2830959078312899689984225262402124 0.0612690715176327899792572116653352 1.0632263919744850645957589094680765 GT 1 -60637309.4756294629795508673702119773843287 2.7760983364018917836404088535723915 0.0595522907729239964662639844647539 1.0632841634596243661145835918860797 GT 2 -9805808107228540077.0654818695176547155955077253371464 1.5543124480745452359612735406060974 0.0080877701588554651054578619459585 1.0081206535943890689136366140567496 GT 1 -1243172259445030862770690895542662862158748.7927951211080423730463193782935943 1.3394432287416611895723263496347380 0.0434797062963252420201458252498493 1.0444532736999519817430139559146843 GT 1 -100781738051061459788252912124.2278872544156899554538004496512520 1.7391377205840044732843031409239624 0.0307256681619084077317306383437610 1.0312075989668879100426059483850964 GT 1 -19078001385093458504613562838659.5557641509478751337401977844066330 0.0624261976314046210061038545700173 0.0744261375797118523287158833149117 1.0773413420274348863851791093870805 GT 1 -15503351184499988480875521774673.8217314396730656890716117068459266 0.8373383805905853323582025425446514 0.0844321443437900089605127247986606 1.0882107989291246446493958055503295 GT 1 -1607481.3693862129835215069870384530514034 0.2035880054326835033942487397114159 0.0983493639229925175553059795608005 1.1035281553702159057001953836970967 GT 1 -62421285884684934245895393.6292103901646071693498344393225124 0.9928368687475350811754895434565548 0.0048583014081330473008148360005446 1.0048701413178851543553863145385903 GT 1 -947639930749.3825085919168868520794338124311874 0.8017291035679686040792091154570757 0.0362189571359930904334826635088406 1.0368911441289146459320714874990629 GT 1 -332839746.6545440727821038989224199608945957 1.7527704998214731120801514002116039 0.0126244406921075130351786105529643 1.0127048060382713705348421562375181 GT 1 -4069766046653350445750574626143685141988548.4162101737788382382925880835010829 0.6543113922012919211627714109583118 0.0879560033679574825793535566853259 1.0920670481503104642500909234465374 GT 1 -45623902491922533417241763397273116665177.1279761897218468191985994194477336 0.4114316961334846500368490856748856 0.0041471024956034871816335295739166 1.0041557255739418363302133943580155 GT 1 -25187808986074802649533785.8752921960494024918481748922750197 0.3413455501442344055312275509152777 0.0155906652571041088264997230755926 1.0157134778376082404490539596446168 GT 1 -1438305720549218202001357268746297471938.5823687640180545758694454841960876 0.3399514479034006360837490567168073 0.0164506888702932393119446333377764 1.0165875039963815290491859490090647 GT 1 -604974477653789869618471270492766215.9715249693879335166564408234454123 0.2573854088512983323003371167898201 0.0556671474636252315381728972013100 1.0572765769588911108302448557027602 GT 1 -9457970565907284677941744066886.2536202206334962615808284747619617 0.0803446822718552193976970070272408 0.0727894811276077636196733068511816 1.0755746422491688864568208272536284 GT 1 -30292757418507014991634.5081100763767172881640016458056397 0.9093411547543964323806820724956821 0.0936383588474971230965900844922619 1.0983168901633021282810158471019248 GT 1 -55290693.7938915955469165550493693406363980 1.7191145157433921870693513448349196 0.0941242192344824101042917319820432 1.0988530896620541981779393977941302 GT 1 -320033126233012909423804388234152280674869.2455009875604046428583890741372516 2.5274873459215610868229117594916597 0.0729264439973396586873885087382624 1.0757223681255184438421293221520565 GT 1 -634228594512798521961874943093340127.0016893554213156483732658092455814 2.6555663026059796542017824837174047 0.0768346087855902716589804595812291 1.0831426229376616894047579382537474 LT 2 -35245618339937093196220076006.9525169486507091050088112863932435 0.7581996011498933249450299865072179 0.0850164730806672397500206920128359 1.0888492172355277337314572734872793 GT 1 -533.9350780777622652260581446516556877 0.8758959432682927456697404588676668 0.0848833440253740015441174843177360 1.0887037289646970664960262870162279 GT 1 -49821095330156273042569508071113289.5470123495270575775571560811259503 0.9024228178804681246427645779204144 0.0092154642419250456502380996646815 1.0092581893227338937817089947550073 GT 1 -14506676396441.4139678391375084129836859823298220 0.4228046906528488646582953912651060 0.0213983962169464143956795671076417 1.0216306612739160276658530140018896 GT 1 -17205660003321608156885175315876274531672.9500768177467117152713421466118730 1.0348075501458081856730270531259163 0.0180902877966752762457152782296258 1.0182559176211381816245807012371694 GT 1 -3282989869496555568.3563243916919729760814992189092191 0.4108888788427596032203609827069725 0.0271662525892044378163162106351255 1.0275420773657903282385728356694286 GT 1 -2069122337977776578.5280204473634514473687790258811173 0.2764431271881480686195880880108816 0.0103592761160190389278612313132135 1.0104133068872137041298761052863233 GT 1 -231160.4590385490631764945130514091610593 0.6278326401995668489084793097163716 0.0558857354674173195791152087945167 1.0575080772246836498613570523282643 GT 1 -57028.3077891758471776456807725101987953 1.2836354138103257037341673686911734 0.0556237818521966405251409762397868 1.0572306560575629856866573881637042 GT 1 -3970572839467.3206903127853593152410281498409198 1.8399722822349028002291394251693076 0.0500832883082030946676597384133733 1.0513809701343281732155282536819403 GT 1 -12269166338616469409324.3730196382373392874583982101938322 0.1131958246115923449650608447740061 0.0799989938263737741432087616315459 1.0833805152726640835905808140289963 GT 1 -17590388566512534162935213351548.6605707473060532439852902599098411 0.3721238572473608621933890133513501 0.0678520380495057017567206185344025 1.0702637194395655217840803591884910 GT 1 -1694395159010311840671508787.0488899862227909958654541278610120 0.8573819953565155597257048249412205 0.0076333108688902246847114486428598 1.0076625936981051303920490089755849 GT 1 -7875521253438.2556873192481113516460208997571684 0.6178241821506424349789200351786514 0.0410776688452095132542152792995654 1.0419451967895813724685304851954689 GT 1 -7737725.8163923853893240176532480009124046 2.2292025220175519347832070110595400 0.0467736209031369556471047599143240 1.0479028598886254314691731296580055 GT 1 -277174084826220078750952.6725957536182731824785972022978849 0.9653506335167686928209665831743109 0.0260495037810022373696951019238159 1.0263948018684167057256516156060933 GT 1 -503620183127224.0647521896854086916394226951202205 0.5112884771770409258822264124175552 0.0766347396600660809141799978891949 1.0797303910811793202062251165087659 GT 1 -76571013177478.7578206770508029396944880971400988 2.8983305247207275611667638233581663 0.0661902023747352146479257232654867 1.0684825042908071756081373607190933 LT 1 -87155667.9738901489641866809908065118197096 7.1698480075544148666500505489677180 0.0788577190082287014145213381688754 1.0821407693253754360736743895795574 LT 1 -588483.7092257837867491909997944000885726 0.9134919440967064788645986333935857 0.0908089450416889569529654429922759 1.0952000254173999669124047594469900 GT 1 -5067331.3947256671390717350974426194456769 0.1784687417579056736758441090715335 0.0585408170901940366345243655877865 1.0603242850803590340164164150436801 GT 1 -785253511981451589.3100495686395611796022420972019439 1.7431530283822368981392471012385079 0.0452588530226990052706904416435841 1.0463150255277233629652718070092517 GT 1 -940250687352640509963216445574466.8235049428124489244718081723371096 3.0698425565787809759237804464102928 0.0036737187149869850127269878359245 1.0036804833923486689735446048004983 GT 1 -209866617166474866473998.3914847882799766945097028933552140 1.2356819719571473406148962293356858 0.0565850432900605458677933891863607 1.0582490542085302377406451276030183 GT 1 -147537103897896066331.5293697111507217054468747305223709 2.2453708671521570951697440997594044 0.0443511341173852299805744312355615 1.0453647285019703740249974602968601 GT 1 -2.0045579014427812637433169849936157 0.2345473667524176520846344886081093 0.0049914964331728794905284390866199 1.0050039955617449673691440728503320 GT 1 -49753646103.1506046788535515971391943403869314 0.3990266050635306561112161127217581 0.0760024377456678630138035106525411 1.0790458455968203855607143908238031 GT 1 -20974929017493509915987089094315573767.4369233483825804676496104975899002 2.7083942776003564558588570027835213 0.0844755802049878710792444464784331 1.0882582414985552929880990020242526 LT 1 -734902839571818.7546256890172831011628840297100121 2.6273941262702922479641998937840099 0.0463419308808585190558988882437656 1.0474500898950822622228912323250429 GT 1 -611267675412.9563477243144731080671053253400945 1.1545532900916685903532969894838750 0.0418929514637355116115006216068426 1.0427957655667901075145537423083600 GT 1 -9.8710295723465387980447427849189982 2.1227241083363224015798867711244124 0.0400994215224743212108121533367390 1.0409255639692961143966109796064664 GT 1 -3610124764550714313969601540449.0185039068304451612427048491886314 0.2596418388204919145622568197660187 0.0192900453701239617011406698884812 1.0194785261001732573725724778432900 GT 1 -63548812613398795563551734951623.8449780342000553747782580313212317 6.5174731266600009124653494417664735 0.0374211372906357652088582325996794 1.0381392808942533276189291931655537 LT 1 -2753605701105370157705085905797178.3357724441055151904730254883447996 1.6985265579953928336363688877944050 0.0943718552141090106259924878661563 1.0991264934098200548383976953998437 GT 1 -39227929318679600527708643744939080675574.5483455967286344952586497690586676 2.4006000488718589642912431492977229 0.0533341346247720159548169855621836 1.0548090829299715719638384283757870 GT 1 -27329975800496478344.0983122980715733899989240053022407 0.0586742847111547152477871738294548 0.0577784247535285453677643054735358 1.0595148141814355106469186557418693 GT 1 -409423242803104395748612.0416037118839924852540855302745000 0.3544131824475612130792629822745590 0.0621989734645929624461334649144250 1.0642174777064280457494997959763839 GT 1 -4895291168244950241050293587104064247.3796271356234890820599851221571218 0.0154108722813230851669816772744116 0.0586977716326203968926007424095830 1.0604910131021358104957208051465275 GT 1 -12055.8481466139730953509972150224389005 0.2351754932544061219375525799206145 0.0484990516615853266685211421708012 1.0497145955691676786961930156000175 GT 1 -620805374073661599231529297.4405688546479563529838088902105536 0.6882230931413358435613798462677290 0.0018298546162159628931763252790974 1.0018315308453233705523035983092680 GT 1 -2069700109856907719444468968.9645763640080185864437469573318415 0.3705628908093027988407386580044821 0.0239182471610361732793456659225979 1.0242089329223056650870444112103825 GT 1 -2529569167583058716127820475883501867.7699812435633732086812530737319831 0.4567344156201406708339119232764235 0.0409322355024661500713469208820347 1.0417935449709909053265562778444131 GT 1 -197030696235278.2566920005984619914379137982025600 0.3351394957332782796660932943524180 0.0744081910200502645974111505809021 1.0773219525584754981637761775807887 GT 1 -5452120339706019084007881275058133626079079.4936066798501822923000512881568211 0.1045553332194266925224579564856922 0.0174197168940144144200695799390822 1.0175732254920804172936067154567033 GT 1 -102293463633136499175549653358750115.8344157117275140848662363501670872 1.6965078849836046301754800464769652 0.0644554904563003574477126610441150 1.0666265560527196646999901348675332 GT 1 -1648982662169277294952230252854.9628673611385407140610422682470324 0.1576859045062537294427555152260965 0.0733497935390954571775432443984155 1.0761791239352981205523958162228373 GT 1 -5116485426.0420325112277401364705627605997266 0.1362461243832431365233347379505092 0.0854153003677012786334130663753596 1.0892851969246843557319541236501405 GT 1 -86266199837076843996273328153388300943142.0955227443746900945420569829993338 0.9178102318451026816160058653779922 0.0610281001996304930284967384468338 1.0629697258868639893098109526774823 GT 1 -55661958931189.4615263320026919200119269562624817 0.6088379958794624105201905524491835 0.0718478915030384683291050203029747 1.0745596496094382956579908349464829 GT 1 -18257355885918445965299.1557932525548388964840955549537816 0.1984143332172902080787010843232680 0.0173720645262382882358900391522336 1.0175247294931985239676832368593145 GT 1 -3949780223349360.6621622348436150345907607505392805 1.3868067560700789540612080093418348 0.0896934785025885008101005846215636 1.0939738993776815782156698239196972 GT 1 -97900.2779776874850487343030061320703095 2.1347425925375850516461830025818958 0.0975452346441845710259254482116408 1.1026367115206260761879127342654851 GT 1 -59093700.6710523383645323565142332069940423 4.7531672926228189624164804038354481 0.0534510964209021954062724291858535 1.0549326418607352311045964256164175 LT 1 -345730396849.4660484814519459268331909901439626 2.2590377664161649036845443273392698 0.0137479859798595308226968428143430 1.0138433647251363919887856377310402 GT 1 -125270586778983509800237730032253982357.2024949110609395208705708158636861 0.2636198075362669988574365300705663 0.0958417795642863794635704890410850 1.1007509112987520243750277269813666 GT 1 -62302497596089840707041.8663769197207355130430470824159253 1.6649290191778894487517625992949490 0.0757718401032893402468745143497859 1.0787963115265914523437738462139199 GT 1 -157188.2084795493406039380241138504898258 0.3806420250004586866611168952251771 0.0191651902130581569379340782603736 1.0193512232116546338361529152699008 GT 1 -363299222819.6380428130457777923434602978415378 1.3924200877739487191344006845239097 0.0021005249246696925569253080386689 1.0021027341213398492616132489627249 GT 1 -535222545594.8247742008329587872571295225583522 0.3547010304058369784211637218900554 0.0934076815085445172883031114492183 1.0980624133863598539199542041120948 GT 1 -333.4845582654802298701512048949176353 0.7669803725786467221657378867911834 0.0902638352946377474663797159308051 1.0946006504039552356501047387507477 GT 1 -968196127227586888729064823775.2215012027746029074019388904337160 0.8572125493786867716220303053250732 0.0253948189913626937585555436611745 1.0257228325509108659319698215234704 GT 1 -461520600817388788019769792165389469519910.5097001313730063736754271040071089 0.9173741559511106534807658569974171 0.0762384450654566724379404029222293 1.0793012980731488703620056745568559 GT 1 -71659627168668118750209929205365796311.2698969090114504052334543269041955 0.0443398788638646272765981382088558 0.0330899598852791501407367925141465 1.0336498177274124797751141938692588 GT 1 -189318987.4064997325739452357427427538299664 0.0352083360972795954505467384687202 0.0571268712516375191159379324363330 1.0588235454335515849453430784624870 GT 1 -144607804702241738702969126432.6461961029706263752761967900692534 2.0126405452916177418310336960193153 0.0519302752746473437390202811914196 1.0533272301433848577272095154869126 GT 1 -21706.0750556075856061781224891460757137 0.7328943052921903447983281108960230 0.0516079204411216254271668152000531 1.0529872761976718377856237078489421 GT 1 -264359229651142582078428207.9205689793810986833059151308772595 0.3441600557377631355621922215088877 0.0048166314717304831134101706768363 1.0048282688246959427406844740925855 GT 1 -1173526153964261543189126043568.1590256969027180017105515104268972 1.6083786160637890616835269054776603 0.0550848900950696295506654575497065 1.0566601863118546921178612836334778 GT 1 -6054654247621056693373440606342.3879193268548325538359052162853199 0.1651246857850707988188319849645860 0.0633107410379674022841926824082489 1.0654036857250440930040584406231101 GT 1 -30082123321.5695379416710860038105995896858625 1.4217266716093074161604617998754939 0.0826059543056926423380907674162928 1.0862181872540073133434375107250257 GT 1 -13674.5554830317748116676612959775927134 2.8564372780676594014913839810581912 0.0373041562443902347017479681849083 1.0380177594864285912593622051738524 GT 1 -25504811156510209050422717.0207704922012086643491354903579835 1.1945358891958757763716113133874581 0.0543462883836460911876624018049212 1.0558788323187147493667262970555002 GT 1 -37547009.2671017775223369745631105909429037 0.1218755708668190176622824115334761 0.0016815973020274723410236095093687 1.0016830127738288414322068546474027 GT 1 -18888799990659027509636.8626034695867752290562105633643679 0.4187843128326152620009064013633675 0.0093440932449193892631359697938752 1.0093880231551471325156786963728852 GT 1 -602705466957464052.3576934545609467206309067691782740 0.2324791525213259673604096914774731 0.0995141170011443598869167224972592 1.1048207913364767030163994223744923 GT 1 -8.9694239965350736928803799226101389 0.1752020297678892654390052489527385 0.0327209392334723483136051272617191 1.0332682411213648681896885374013773 GT 1 -4526824307704786853400726556554601.9119720123704778841647480865758859 0.0691524391057490304682657267547780 0.0010603598078723779818888141860684 1.0010609223870595205907016771216597 GT 1 -10759614648173712.9624978411446202142445660069616283 0.1971592157985077391366285372264228 0.0853758035096871486271181711044507 1.0892420122910386414694077331552830 GT 1 -38987104681161197.5582537962813744526975455604078136 0.5919025686477885606510808073132477 0.0732346477068956326108239036981297 1.0760548713554553407336586012880580 GT 1 -53619088377463897939091884.4065916463841087278759871924574920 0.1543459543243262912027291104769202 0.0429809266043321864630071231323368 1.0439319573247939619705907887977477 GT 1 -1365998.8556573740950738109567576744392581 0.3426925731259190730511667605650262 0.0232038299307218411499874881892385 1.0234772770888262392129393783842952 GT 1 -461504079027398636678942598305700010.1067636921272793328804214838822273 0.0960129779250862303162342500526171 0.0700473400390436480679802157748149 1.0726215973982396029495271845828406 GT 1 -372708548089465124.7056902518248314088730630171273853 0.4343900610391716360251982775328325 0.0013600822615096011446686526572207 1.0013610080128825249440629482078690 GT 1 -143515266073624268537.7525068810590877973482388585905455 0.2961728748400906267755200274239932 0.0765179294613826806367166439320605 1.0796038942160772173683091309505841 GT 1 -644775168789204256635167026042415.2280706533731076783116065061175228 5.0393053664558086656333461688488298 0.0381790792963274206605817373393940 1.0389269987597576379973550245623043 LT 1 -1351.3373493762301779163503569378962707 0.4245039563472500207025798334941744 0.0751682848333315302791109364127813 1.0781434875704474219668001045008354 GT 1 -877690752.2375046240954885207660328734952558 0.3715754539971155887629521632820506 0.0756905211501991109031129285781036 1.0787083295981327732020108721101713 GT 1 -813932387231763534660.8510466724723187388922170045269130 0.4780386038825714427373925018434769 0.0475669780474603724372888595355592 1.0487354926137821284407143565624135 GT 1 -2023945440.6897696055728307817129171969055364 0.7904021080184537919175732005050351 0.0751837224011242862891618934636865 1.0781601800090665482243349889715399 GT 1 -44367100.3078881978137671814818128228598979 0.2673813333706581239300706116533164 0.0012680957992823867461123398301666 1.0012689005131352426094111454740040 GT 1 -107420813328852320142227730478333916004464.1498038961880135511648582810439218 1.3891331305938322194724972437944130 0.0976654018363272275096530897202480 1.1027698763040065546757241934293324 GT 1 -14502523490897009056359104262.8963713242929491555397531220867696 0.1975482162694503918801330087169788 0.0893198230785339074713506143375182 1.0935635115043124557619685160213155 GT 1 -4100270071844312711310935869275407604.4129305637786540239176761848180735 0.2763665358825128932029510828067788 0.0503374665073606487337381056247787 1.0516485853984124588377581243789129 GT 1 -164124576078835466.5844115214759066054022278387664589 0.8121215214092935018991459177224395 0.0362216925438197303835097834119614 1.0368939823375811520059351584953477 GT 1 -65796293096259002811335.9118879221902806074244991210945497 0.4703639999233658589884810141745264 0.0701733685219216743745427351762460 1.0727571279782939952679324372783157 GT 1 -1613608211477329264945472065.2075062697449214021798320579481421 0.5636338222214181654695831761191316 0.0604221422422218676444395383332821 1.0623245920798012388511762656020546 GT 1 -1026771999744556096694450080895392344369.7131982649477083934447016701698366 1.2406885535877407777175978110983522 0.0384174240269721255422840245354379 1.0391748351937419866531472277937422 GT 1 -693355239166999.9275881868492459470886024586174593 0.1918258761638544354993735161634484 0.0971434988952343785982588798304562 1.1021916516984835175347558858439092 GT 1 -815618438.7791476263766840794747907336041554 1.3098708428722769932437076713116071 0.0343885758388598004445338394948538 1.0349937781160064469026698034184122 GT 1 -3214157179.2104722905084125636493281690038217 0.6019843487628786405873269631553870 0.0578284363575551024263385575158252 1.0595678939799193740180832767733031 GT 1 -15713962675506.5164256777534930639455788901529291 0.9173887703392254369487387121075724 0.0279239235542710242479587707127021 1.0283212096361931906154024819793266 GT 1 -223195462179327474.7089797487083547171033071457123471 1.5681414236550566909723951948382165 0.0367961989689863068393265696174955 1.0374902581822380625397046505227115 GT 1 -1428771.5920955487953381055783969161553993 0.7254668096813240776659457080955889 0.0025297972760653926594574079875668 1.0025330026202495729701410259072556 GT 1 -11270143552.1221077503464064933964945504350560 0.5135288566452613533927459352541253 0.0315712715353099279831476377224703 1.0320803884508952211704486401765624 GT 1 -1231773273398348247944678194844272875573278.9051721800277708281981149171436089 0.2145898286185677671534212897224180 0.0823862388991012718605495365062313 1.0859787164388666561945464908838009 GT 1 -152700028012713627637.2372995348253372627014044483348853 0.2500509125221597123588355097426137 0.0086450185619188167780460870346520 1.0086826035066938971496909441370923 GT 1 -1497189420908723002639.3085874063761924617639178623030916 1.9447966667485095053032877284663989 0.0157089434098726310981778980173789 1.0158336364492807300316020660975835 GT 1 -5372035167034978.9921706825454190894050696447020747 0.4046671286976561646753303002852308 0.0551661041841375419337454416158624 1.0567461385614625016813808893395602 GT 1 -992794560599473926939324306499587.9826678199677212294777939820691722 4.2755297482257891076118876295545235 0.0228395448048436483940297442160745 1.0231044078803815700055314715956214 LT 1 -510090657177811.4456372945744023393176263807155093 0.3206244255555420840859022130512512 0.0372744154326771121761609689368843 1.0379868667049543636045286164498117 GT 1 -2159725066933736071213699986710331318366906.5133779561725677684125496362659693 0.1909462079856420434826285740098629 0.0821169680358356819148551780459432 1.0856853126408162777715781302225364 GT 1 -5731104293591967453598.8906541613527197048913141564963283 0.8731622114301354184862622588870102 0.0234759024580291239040197620389661 1.0237558515075512254572811780337667 GT 1 -2354497419455197377857103768497.7082780320001970162685429968195767 0.6629868561311273985933434922771950 0.0826122788502053179208705134586679 1.0862250813104307964495533213424812 GT 1 -175478221031.7245002062445104432182252712024520 0.3019020145175158057134631566277334 0.0642084083253137337051610197335121 1.0663624857638372226271828571429809 GT 1 -61570448924911910363118903325717687781289.5776232542565536639625887173332353 0.4946070316417099883703812134019458 0.0848244440693173842375093936207776 1.0886393677051191377875246598924634 GT 1 -55045.9554761687663158569858023060478926 1.4370606487111380808330596173827760 0.0744499005568237357853791086610829 1.0773670161341967775384738014093676 GT 1 -6273714467484767007725725739430960326415.2348909589625513609824357412602182 1.5497732056658520003254643390377205 0.0314809576514840155446541879622328 1.0319871346365670788296315668862662 GT 1 -307324010935238.8518912151403518439184334310578684 0.1398683914886742567405611530011588 0.0505613841633529211296500741971353 1.0518843997541764963822577020249339 GT 1 -64.4758880080000654332351717948118238 1.0136401241624762240934748522830327 0.0489423465521559131576910705130238 1.0501805942492360413825675115740137 GT 1 -852226510895691564305976.4069255223481266936049314282999982 0.1486855274743153017853806020668793 0.0048439919099768287323471113173565 1.0048557620638585584075547842240572 GT 1 -6751513819408999141155897413858194464203.0825999035983667270733945372162195 1.0481426482980643615676501534255805 0.0365999366106049991020501360312491 1.0372865189884321276575596314856699 GT 1 -18460549.3828572101356688374566358955987037 0.6734131050318503356566992285038963 0.0544526253787860659508744618086250 1.0559912867753305579032724786637556 GT 1 -32279787578595807085062.8737725295938523551201537335046676 0.0750071835439273201499491124891813 0.0685519342768886402349116723875432 1.0710148438784416093331471043728253 GT 1 -334112244117349331806207345456.8193961696026732172005720667878053 0.0590954995158474009105023401219306 0.0857302992940826590395154575923790 1.0896296736959768680841034970659075 GT 1 -44696032494.0556380129874494389880219631015422 0.1821158520136924834127495152695554 0.0815443515689205686493493134932230 1.0850616624486291814475984692008474 GT 1 -22007540220218453.7337797817833074577139439677640140 0.3324027486271732946266495927795148 0.0626406084142753232177474713103490 1.0646885146946026854912910118002235 GT 1 -70926937421937693541010.0298361286428477867776416172283908 0.5365253849271936150085259146023358 0.0750672644128713545509200135704522 1.0780342623979997179176426835311175 GT 1 -291552547330419471691728329605.6898445570240142473868677786709200 0.0011487990695356740705058055535581 0.0983522022385530833762759763564333 1.1035313032857326142681894007978710 GT 1 -185553051.4218477247784113300715765602828563 0.1964548701751026186411852746798378 0.0697837273454030130451555148637675 1.0723381686291818574122904938706883 GT 1 -5065286729138234576384694813386748559517.5170102163233051756257684717378016 1.2749349057226162483323427251683982 0.0636293967088858359458735970036308 1.0657439371824741550655014154908071 GT 1 -24158400692523628.0990063632135572443433009681172737 1.3190180416075338360600452072717411 0.0046156554364964623670741715722714 1.0046263404656704029590964698429875 GT 1 -11658372689990492986701848760.9406358064569419744952536003895317 0.6091780874140974082210881886963547 0.0622251249799032233613919395666909 1.0642453640908609732089454664372607 GT 1 -2014004971.8263136596692382855101664475692714 0.2780739240572387816208942070552924 0.0135175477745410496941994823500506 1.0136097415890179828091872103298592 GT 1 -1792142651062838254480407742555447978914018.9589494227304765258394470547199003 2.5074315501816855960399303511590353 0.0986071686501626347178094579577760 1.1092028074699595766987216268509180 LT 2 -292089373005946013458757328352711408647596.4775170121483525372675352103526479 1.5786308207457168630863059835542302 0.0579254535816766214086820036331363 1.0596708712117037331253717762107106 GT 1 -352094116622715973308911789834520251454.8087014363626381316436057555006974 0.9888450889196981430667441498932332 0.0247333146700093864810035910756391 1.0250443219696244419310504400015394 GT 1 -19181909467500.1706283611236614033106313711905614 0.3996231784811911787042176384548584 0.0015871944312065336520467798136319 1.0015884553586891015345428484705243 GT 1 -13485630791871673429507559382140026.3166553162488204495273352048955525 0.0749487217817360404972606053209178 0.0809275408588025401670359537482379 1.0843903140967394494784892011784166 GT 1 -67401977283400622696032944002116884381.8867876966537184169733044036641149 0.4280747674853469335652163580540601 0.0977519209609548607700113906804414 1.1028657645398706366081622926947382 GT 1 -244257943649970920291.8834035294414556743542963762777526 0.1117429172517161456281686929032155 0.0674756607238707256847637031633107 1.0698600267043875111069738937094829 GT 1 -350676361163.2377925898324689939811039647077763 0.9706578775948126364274226189755117 0.0205702160279756943081574569647569 1.0207847297494909775674068027307229 GT 1 -418896587900576100187901130938249.9903509125772295651853551047670374 3.3139281951583902457643088424778634 0.0831423855007784885886737373339438 1.0868030919560399793116587976637096 LT 1 -393380909.2970007853894045255266330892631617 0.5521321369200511680285005737049958 0.0536833472498060303217259650904212 1.0551780378734554584700395700554644 GT 1 -10228674679236072146202204641127.4076580145663276392535506248588807 0.5805413246406262471149099474404835 0.0116008361464749711169438689293647 1.0116686508276462741858803733713674 GT 1 -191803909783207819231.7745373892665992266554952167813848 0.2368159426278027709935683399515277 0.0261585562314488210775691392376797 1.0265067773297806407559946174312811 GT 1 -329253711139463667057563738.5835940621212638102658264889667567 1.2052642261622352084857055696908999 0.0938348900847974517846222517286938 1.0985337490184387600992192220242572 GT 1 -595863401196660691.3180803804409699656683802331947095 0.1417529147433062348815761818001431 0.0874870455320701696323173027633411 1.0915529969490789752073417260714249 GT 1 -64512717824807557807395.7617174283132404580423717987355643 2.2217371588796199885561128857001692 0.0455402688679141465295696245287714 1.0466098251483184434294299492072361 GT 1 -1772156839664305359486765930404527718530438.2283251422534980478505081494117124 5.5690789821570209285152368310629738 0.0291436683920384055808844322283079 1.0295767808469581182581296225893082 LT 1 -14.4996789465567411999818394811197423 0.0712463775721984967551414689748915 0.0291251979745815839194038018019399 1.0295577561559105819370366059128876 GT 1 -1917647.8668201207822266880730047248384339 5.4781619016033591766077165891891198 0.0364780121652384929190476942219015 1.0371599705943735699954496893852168 LT 1 -1645076814087350800524.4421087511514985264534186080638668 0.1293235605298385641222997917009189 0.0355709048493354157870416072009999 1.0362189639569697910940026621091608 GT 1 -107539015586246714023643776.5388432796989763730344732196659495 1.8739191706353502399333186651027760 0.0258821174284122410473582212287621 1.0262229533287819203348751391443781 GT 1 -44732905218889500735.8470546524895978691450264683827567 3.0804272029999135973363643227785869 0.0623541789899142467528503770742924 1.0643829908222795846740997090473225 LT 1 -72092767346838977.0953989438375375159993765721752232 0.6819998446256958720625439715099842 0.0749100960707480548797720307264185 1.0778643527556588036857418032868409 GT 1 -1582094627983842385084040908834039611554.1465728506115168305016059330414719 0.9650018731841719719639989547783904 0.0677744227701702076257622027874213 1.0701804579281256450754637355334588 GT 1 -3550457334889503424719882902.6063217303373554685410850820817702 0.7635913336676737735064071283068094 0.0075378251147932787852379289115663 1.0075663780939271534924221234187545 GT 1 -14165989377817395744076970960680505887.5625455619822183041203930968880071 1.0444013471453707571515440489015072 0.0737755735462921115096252677771273 1.0766387125195742082507068942257180 GT 1 -1721632855275226.2755099647006612815238100872234497 1.5310259885994006090825301018495935 0.0210123442632657591698921490996720 1.0212362455845083352957093478002307 GT 1 -36716978371101304496179.3763255441934668144414888842256647 0.4640979281975689950518732398791823 0.0427342750695905950391470332232858 1.0436742615667518733606811490566583 GT 1 -1465389024357856546216301058725.2345904746291803275729918476761741 0.6906716328535626756555361007986781 0.0053896826278010380984036877118139 1.0054042593668052592600775115690307 GT 1 -2826940171654027011171784.5272750316834666582704316765964186 2.1426753523348608171090940275862574 0.0795860013026646629038463923360013 1.0829317115739892719179779848325473 GT 1 -8940823679.5238647283757449952537374016611877 0.2014034740302880514969577425426949 0.0924866733969603034726422812811249 1.0970470279889269928342778762201739 GT 1 -10936.3433193831380142190132132567456424 0.9484323717593056041536064484194376 0.0375006976593703050351003422526689 1.0382219376613646734210250733544222 GT 1 -1999433407801644893119958.4341279597366180347866662662932663 1.2788457113525449796005695558854081 0.0280232998795861681276394404490461 1.0284234458785417497437153548688119 GT 1 -10170869638139179.5847440268951110221083930871039339 1.6716600742110700840978827546884823 0.0396646393398173839758163363424190 1.0404727215021541761114851490748938 GT 1 -4965307.2625903613134030312449873213008819 1.2749976875695673154769035784215214 0.0940846478297091079649411553068213 1.0988094075796549170989222938550866 GT 1 -69283463025262760078521206264583.1499224941775715122090734066299680 0.0201487944070197271203680877304710 0.0823532278184309398398370358264746 1.0859427421670123490253319347490286 GT 1 -9856.1456045307211473113040061774446417 0.6311494234851397565453355483038842 0.0110542835256188944032345194406867 1.0111158361515494067670246126562492 GT 1 -909528645100173460480858760934314.3055517802616420112821763092662266 0.3173507521492090537628641765076767 0.0854585629433179341738679578199734 1.0893325010167936459372776396094458 GT 1 -168857202916712057265828522855146460.4375847973599592743633748731240753 0.1204308709990557677654777174193124 0.0946385800487909787007411097231181 1.0994210559427071688138232253308083 GT 1 -1759563452671857991131196.5005447131060696403324264767294136 0.1617996493345804480764603081302766 0.0764854420533636403109818528456439 1.0795687155833484353564620153045735 GT 1 -57646304604002172558787913101.2088000733338612562040927006055503 1.9136788155806526436498026227020342 0.0485783212730249816031406563505369 1.0497979091105151302772819422825670 GT 1 -28246268.6093716988027582657952258292596544 2.4243057400599532908121814403283177 0.0345777541816038719709215947694399 1.0351897129112307024654133951241136 GT 1 -1028613034738216.2066045186097553557880257133802094 0.5332041961091168451881554996266891 0.0001326680106849010429587455246703 1.0001326768118638624637276030736933 GT 1 -164430180709146.8169859410108483846493406580779678 0.6225876009411890788952558185401953 0.0825315438483442444517191950920816 1.0861370798606039066812826994502485 GT 1 -483939848804.9725033528731361560612892743495769 2.0156499878018091889893044774732912 0.0772434245121779962818395568948398 1.0803898111284975320618421219155758 GT 1 -2354560968677273886709626025432.7293658945264193530070630296594231 0.2141503611828745777792577938517083 0.0842613501386660218585256655378776 1.0880242717638417212583420596989593 GT 1 -121594186596.2472341798644174965736154149759578 0.7319996658207453117042325783600987 0.0761483646967341692813684378073039 1.0792037880864591954154292615440563 GT 1 -560551121.9539640294644379664648349241770297 0.4130418355815132484170490472905472 0.0070769824677860420336400171338673 1.0071021430859863316280654533219421 GT 1 -8184048197986049754757124.1404683170035370476948200521151150 5.0957100523563615445883325912423119 0.0065613743288778542584753307755151 1.0065829947705194388274666500589371 LT 1 -5621072478855232489879932.9364803055496772695472543893933701 0.1851409877945011184546907591673063 0.0589418626329445959790911420953155 1.0607503587684977309735472400943900 GT 1 -11.5230228974240417414627419245030214 0.0572735876203049236426254079543687 0.0023009810164552624872651633489259 1.0023036323411536573810099162470207 GT 1 -1306419373992133509.4295917539847821130167811361821744 2.5135846934601994353814737387234488 0.0385072963738602937664688888570033 1.0392683025144516873234904811419219 GT 1 -4875835176779599399.6667734117417399168807892876149727 0.2129155510491734959400153913326879 0.0212538129076270973682180595188673 1.0214829273757745874999244993696464 GT 1 -122.8580062350734523306489089547762910 0.7567185144776664995479061038960896 0.0451313086010842287362053543229639 1.0461814438722026838934792778508879 GT 1 -412091409226902266358038957.2334775689958418090511436026293693 2.4752579847902700954020653754103473 0.0179662328738790556706482806971197 1.0181295851433791282618850691442419 GT 1 -10774663895477139849732147575.2714841246107753343942886478385461 0.5959918438989097601533494509829692 0.0723818052774365063234689638944261 1.0751350589563851184677231915339713 GT 1 -129391826.6082459884530099966564409783938493 0.5661696096069339222158496882728252 0.0637446638836259283566328025769388 1.0658670447102083282096989995164010 GT 1 -119.9999362285820210752695309171256791 0.1653215341599559923233638192502478 0.0193977642284649194269511843925121 1.0195883697639983616124558669238656 GT 1 -2857120031438355216.1653979587994004326165431231367332 0.8304903276541316228576479034772480 0.0337532383255248808395523964192279 1.0343360305226284023629273504465306 GT 1 -1105099730585533944081793466375495906.8002261561208331259153124068765419 0.3285610437722066693723468773067337 0.0492754096240140382174896694955990 1.0505308584041832478823967254868226 GT 1 -163.4032785698857644075940927595900485 0.4071957596276765746286310069792415 0.0692747550599054570181260348373271 1.0717911634778900420367316263950596 GT 1 -20274095077058527064848467962751172538.6339680466107290415972899347536397 0.1077976016738233962167868923599210 0.0627869202381644250237631924250739 1.0648446162339377109994444441699359 GT 1 -21335532121101.3326857909754089472445054265406450 0.3431702035091425370313174058526404 0.0191769517225520145766261263500670 1.0193632146090796709523942368479236 GT 1 -645327440489765485057888.8565933393770432790719880934491301 0.9522630683406371984089258797605048 0.0056363472910674733051843794783158 1.0056522914358432861387616564842113 GT 1 -823613580357.4192164514683293615022882329290200 0.0760467298525912339027230025262315 0.0005946458959175870514686275534242 1.0005948227679092978732448579821106 GT 1 -25706281551392281606827308940496475251.8760227859490508330687457750177033 3.9972242942150724761569690205552880 0.0432125950106587565416285938472844 1.0441740595541203471601886102202969 LT 1 -108748531612071824373719171792.4999492884602970596590093176541905 1.4707895794698834265125242057128389 0.0165354884767736517305648167786245 1.0166737256645328762114517148509557 GT 1 -3147946.1421456258577042169157242873438346 0.9491722250441663019417601519271174 0.0460088562701902268812535501701266 1.0471008908790268328922013095540489 GT 1 -71357890320409006237.6201265820610796122399835319835766 0.2158098015729284826080038959118024 0.0387216698893768080055309000734556 1.0394912864398836706117617346329976 GT 1 -14289673760.2665021231782024445453924270325944 0.2806998550612222451739486261924015 0.0668126409999016033210006516356181 1.0691492847901975605973078837755710 GT 1 -267520.0648894727187722374047761159337521 1.0134276458865093853425384277134658 0.0671892936821065925917404966728623 1.0695529858382543302887499570382933 GT 1 -6197440092425495819794028833320450154.7516449394681985667685059515084279 0.9703964660195871391841431227817620 0.0768215654523519174704122633652174 1.0799327429599250822410151793554703 GT 1 -53036579485246535026415348144641934.6228277813802238602329656306601687 0.2491433193076894599621659412208868 0.0645854942311223044096016239691003 1.0667655262535281037528255705060267 GT 1 -4933136298506859203940575326.0247577120289233343962697075906906 1.0205564300323441791657088650090387 0.0879078572404845521123831352942824 1.0920142602838300930936510057792213 GT 1 -763848227699961352178951734245388542.5965506549657905150019963201655632 0.0693396515088233142358556462258678 0.0195406864116468808864108080542928 1.0197341297820678162243560887192771 GT 1 -974261147576.8890758663240642754488139929285277 0.0945094355158819548007995763405841 0.0899746503632606353604460831717416 1.0942828231155635738994051079694635 GT 1 -1755194793364167439499957.3016939871982796046093825763834559 0.3088528491434596015094995510323166 0.0422230397422674656497517409431915 1.0431403462201939066290641773436608 GT 1 -9949326797719609232316051387391005953955.6298551393081456699433420122112352 0.0255264265211465659393556139142968 0.0365771069836654722523784435548662 1.0372628223360077853250176349457350 GT 1 -103812044975232592909635693.7520654666021215604780124218990017 0.4714491520873551151531818191833626 0.0224042467190139203378083744413563 1.0226590345994193856457464359478938 GT 1 -1256721311525851957095718011270757916007001.3590043825860154663865333471543073 0.3986382659405308317798456540953363 0.0250779888549485235880000062622604 1.0253977997527240516388331945250776 GT 1 -54039954426177703280518660720.8361758847636135251877166982294344 0.6606071916149561800336090463828961 0.0707105390114935730603320458328382 1.0733350052896649750757495069526738 GT 1 -102.4046320840609277381535275699216482 0.2301819336259133532255133148733752 0.0366425052293544763139175230175390 1.0373307057814991851842607348395952 GT 1 -34469811581664932993886.0973816901048736460893185809188309 0.2961461542778262114822447222426933 0.0873545367923530872129447613735903 1.0914077944957832733240518029282753 GT 1 -65310358632541003465109970622598.5177133412134339892115764542495675 0.4279616295759271611499569275688834 0.0576453303946410452507409677749204 1.0593735682546948409089777891811264 GT 1 -4329437421.4717072603354220461625124889930829 0.3439852012357058615460518495778058 0.0039274502891744773083972889261318 1.0039351829751950840801506744677202 GT 1 -27950.4618763291752956987907737379145901 1.6381092588391892345475518184614855 0.0110893928903565364892282606414272 1.0111513385935849424886278515117397 GT 1 -646074.0885158713458868437008201924054628 1.9911539077849809614355844786409722 0.0098847685157456869952395724493179 1.0099339471882841971929177208323508 GT 1 -948309968742491449082379067301170910127.6710751423506151933727130430174208 1.0219316425909134712653685235687181 0.0019770385990190446382874648691101 1.0019789955195270284945359038164960 GT 1 -2038545672578692079783822479.6073979031214233380959986312333981 0.6841620714168154017684161074359672 0.0328181769759387457796011846814095 1.0333687732575926688861650949485333 GT 1 -72.0564934916782401564840654452684423 0.4818253440987394887660468902572537 0.0932381998577780032985670610568450 1.0978754872371665476165703593611065 GT 1 -16464100545461580.4977670021027369799497462572978289 0.0746823135935045213968680031469242 0.0877750044376402091326918631849779 1.0918686136741606806884817919907191 GT 1 -9322.2552403476562048246904902669813575 0.1529983741426685635854588090359963 0.0858532444830904645909945567960358 1.0897641563941331541203406579100900 GT 1 -4197.8990917330425570190535305880058856 0.0993069538018885531594201332577732 0.0862080844027293766968933029701075 1.0901523969075632166678073608932039 GT 1 -691843362171559273755614082.1612498677407798182079416776103967 2.3875649025003775725972883700292242 0.0548462083997857139759379639356171 1.0564076222954184587095965561853712 GT 1 -19884543788986749257495246019302.3363467899002716725585508861974351 2.7027688607316080066683644361895191 0.0926915909350212554299154637593487 1.0972728546196140927760134108822019 LT 1 -314465106.9757720010144512482254511330467015 0.6481317325477674985537836787754202 0.0321790628607290230656580655556302 1.0327081911110363898786888522244139 GT 1 -353.6091381480206083745903963637141827 1.2782713436378610141042583676274856 0.0489343487086244472382984059153690 1.0501721848643012308045842160161887 GT 1 -7480138721287761260316520872941.8443917118981495500534339438644935 1.1649823936928195085946840793233480 0.0003826073649490917431668260056412 1.0003826805778220668655118394416500 GT 1 -2590959.9988141946625091663307799196665106 2.1299918630861762166644650420903333 0.0360917540241891551785617142527753 1.0367591694245626590562758980261473 GT 1 -10682863851353891197.4668224337145720896051344399862953 0.1774211758404928010937150840192150 0.0049305558070782292374285106742497 1.0049427511002581194044803992734323 GT 1 -1389209073474436907931087363.3512539262725734733828568230144656 0.3406711082783276041075460200719574 0.0998054258021615816979598665933317 1.1051443454711309912901930367912262 GT 1 -30.3357111610594764547138078794864722 0.0783499443159815738320725983298439 0.0392892366034507314352374706092405 1.0400818899271658090458441525194697 GT 1 -2463540807881288344421099044321264345186778.6282596090404335993790446214583074 1.1365439279596029977758412586834794 0.0812707310145175817968589427360392 1.0847637930792127823099467638085263 GT 1 -42018.6248284346649397158508585280323984 0.0636229932541593041800240487620022 0.0542921827029784418788196003346655 1.0558216188459277744357227364541403 GT 1 -1009813174141744142051774273189111155.1986479329723743247694177544184658 2.5374541947644595176220817053037682 0.0176885367706496555354435181827997 1.0178468485848679079585610906295519 GT 1 -471344263547169273140364091027641830940.5212845242657763817026742605356877 0.1998341776417561752816314315310090 0.0413085710207758359215520615916343 1.0421860191923848703344199359610429 GT 1 -51147804873418139732685.3157087348693202770061092388392047 0.3027136849371626763184804884679417 0.0846712526652412450182062110507131 1.0884719915299738556735861054845364 GT 1 -386163172119187736872456004170.1473973302609982969187703384617224 0.9281910454249840377669939239543363 0.0033900984924724295025476157247485 1.0033958578966824166082925309584622 GT 1 -11899628404815603169491085.2855101820415414328323774036906312 0.6378862054484503042943654559928093 0.0322824267402221811285440102477320 1.0328149974380984214895865390250195 GT 1 -13016165214164158192688.8380434128663744447505477384352885 0.5099770435332605549324604249607272 0.0120215569719746599691434927985295 1.0120944002698478651225553686457617 GT 1 -468268739392999582944137869.0939585476172239912649032602712268 0.1265474588326431512341243518761924 0.0526789108130913390496362726373995 1.0541171839322074106766724570433889 GT 1 -1635825078121620119663820622193107900761942.9767370408285790084971284412351623 4.2601892993139368951475521075091904 0.0934101705416297819545861069630113 1.0980651588723421426736206816264737 LT 1 -7851072718921899572893819523823957.3667864172643193756830465650532236 2.7008916986994270586911607086150232 0.0647133186761901544139917737850767 1.0691401368697079752580555453509051 GT 2 -1689217385154.5915751839287059382200250952640382 0.1008073143853246597065686409368826 0.0275246941830513770115899782096593 1.0279105962880754488436084454017105 GT 1 -16192212057386641617168881.5658795187094661548370054782654784 0.1135207108445904891317584430646080 0.0548552841539600060906160814862275 1.0564172247514735322203575705081836 GT 1 -7912334939069.6450286690994995629229791032698143 2.6473350664963409652659641909295374 0.0627604294544556474210621723499221 1.0648163511468402084833304073770702 GT 1 -90255960474869175142390787.2309330329192041391746040856724165 0.4835095476329074266433125202049912 0.0495941190335723643025890117067860 1.0508661425073504920701747176893552 GT 1 -16706559926509401829569.4665936847380834598691390263643571 1.6076499853142227188490438745256634 0.0172550144832718442671467561498177 1.0174056171946065154500251854824648 GT 1 -1679.4886800989471375432990472572762666 0.7610163613202314851185154765525169 0.0036157666369839482743315510397556 1.0036223193212571780833317104939509 GT 1 -13231801949593391222898526627.8114377665992942119315968542281090 1.9794920138949160539093170400306784 0.0384394167011005182916735296006106 1.0391977067870743078469050302890917 GT 1 -2496277326341516934418903485186868158.5090048892118985151119130840218916 0.5241644098087406486193443441390998 0.0052175874838655745488714752784956 1.0052312466260032897303365184078152 GT 1 -2540907054821.2684553638665401103633705559854353 0.2282475199423334659188528553813017 0.0750015441180409006375716043821471 1.0779632107879061429881916704970331 GT 1 -2319067783326552416167664122012233203.4070787556282830947964126822820437 5.1758328280340915441093402172664626 0.0269840876401093652109412717953465 1.0273548430142436465526569820771266 LT 1 -1285327567374158191.4801635068137642544941718121137104 0.0181914986419979048784379464287857 0.0584163188858965803723740561765570 1.0601920542035612344833206959195322 GT 1 -735396817487951839405108464180331678864.1312644277695098128080570872520969 1.4838502306673274911903518694980829 0.0187864974588290097915059510544623 1.0189652054397658171773245544086799 GT 1 -160.2385608478825585932295997825537510 1.5783672089755152524380552652741783 0.0297013424184723477796277450752719 1.0301513604605204706613744781969147 GT 1 -623451.9108426365547323963500484478855489 0.0122071052478074376337710419421049 0.0712556297566282289062080623954082 1.0739217446176686456029555158922588 GT 1 -76358780926358434296800012232973285477.8455321488429612384493864907066117 2.5813730253296962346896759958911553 0.0287630525111010203593662164205989 1.0291848162694508865146300687103455 GT 1 -106058.3198526605126298196316468101626695 0.0980755310778945309064834682263659 0.0516944632336012424961320545432386 1.0530785324862808217124375221342191 GT 1 -245783874124014176145148090625554202.1731709326447959571150209667025541 1.8033624767630291909963572770021305 0.0676774203420166993879433040110311 1.0700764086678448776673235137132484 GT 1 -324577419421519519515768420569972731.7468191231038390007207515685365064 0.6357991063205789471238205095234041 0.0638015470617479468379189871080022 1.0659278026081837295025216015998447 GT 1 -2208.8044241783936279816023343215179042 0.0885113237365315054577692436878704 0.0312160087352407221975490521443780 1.0317136111729703863288439729945048 GT 1 -583463413816.9441418988053999390070664723159990 1.2252082713742771905353027172166520 0.0220440113690403739481163544678489 1.0222906113597498728496906547717273 GT 1 -28558704367790.5297066047528044790343210141842214 0.1000615099836453346578941792782050 0.0783936803556336989755539242975031 1.0816371318110194822777203330847762 GT 1 -836183623830.0084890271300233017424661218826725 0.4610957225060961132364674312927078 0.0501765314736671704265961084001801 1.0514791342585698842910221053104948 GT 1 -1693776425483021436867187170038555368863953.0122170804899217299286289647175217 0.9937689483033374009751394077066934 0.0439097615797337272670551049724946 1.0449029787323493343131690180746715 GT 1 -5850319335260118707353176435.5514470311645071519463400423786984 0.0954852653925767444741044088531841 0.0554262653258711447735294296348037 1.0570215276719747038086373155224272 GT 1 -293698926651677993197042307466.2727073935675318432452755823924165 1.5159597095346103431284456947677129 0.0654231549030866807149829564897789 1.0676614242239699445308998833346293 GT 1 -15003251086871047706528865.9477259597747158837303540379220446 0.2034994863457998393718468934066467 0.0401511470691939620040313545600354 1.0409794517797425141347593405994897 GT 1 -482557916662176422192503675701321077061.0302030549248654164902630188626810 0.8278756872868204035811414282402718 0.0106865636014903104596960682104221 1.0107440750222457244276843847083551 GT 1 -160425748.2362040348701289556208030475870024 0.4825646117075499960633794573476984 0.0934648927316084096989170596034265 1.0981255211660669571781484758525102 GT 1 -3958030579.6868034477561088317344455892625116 3.2492438411823721345680116606515462 0.0292896943833889103195049256037981 1.0297272016348169194969054242326830 GT 1 -14183323018855449181.7584670505151541406978458899094851 1.0991677017126586360831334022111733 0.0101024202224892442070855880430424 1.0101537959755064515647216433031108 GT 1 -17962924684666.5874820405717553451929853154020634 2.2552280372532071976857881001334462 0.0769742728707464547882526323344960 1.0800981714882673545397518695611780 GT 1 -6633148050812906941166012.3436726184770174199888848850107023 0.5318136763396644920081761994248222 0.0324342299143439442730656042452330 1.0329718769719972521703819229499444 GT 1 -4851.8950979935404028708796832209359804 0.6154602686603926145865158481833174 0.0606410734637599010624383931356059 1.0625576294276873989679681804705538 GT 1 -32220481885.2162814685815835028407891326340334 0.3661508475615861137158386387618319 0.0971563471284845836442369479930220 1.1022058824479489026326352374663955 GT 1 -383845055111.6881288979568242024172490134940466 0.5530029942377345635037329242225539 0.0331497616079578755776530695020143 1.0337116679198716691415382994208409 GT 1 -10350421309065212592740670954.9183979749881609467491794202342528 0.0398194727283074200982310512823235 0.0373975587326550804283113069255221 1.0381147859981797379060121967058283 GT 1 -4033.4174331767768820683223182683122594 2.8228103703744427290171459359045122 0.0165616144140438800371835179688369 1.0167002912233209209938748893185323 GT 1 -159787238253.3189538787063935601287364072314324 0.9656300919268634239600563170132043 0.0190828634415872025946825469437036 1.0192672913244732247364109734404816 GT 1 -70593601906809378618472907845274733508809.2102015735773336605965756831861372 1.2214948692314904511804127727776562 0.0167912163579692402415562074936875 1.0169337870415450460374726632817619 GT 1 -455496237726741860593241823515566642.9137019875039584078725027686106700 0.1387573538493476690975833587978899 0.0956949470097171733327695933861479 1.1005885275146305043398539316245435 GT 1 -15556390506847459813068527673752851141.1824800560701746920019336125999211 0.2881208631240787315900489001819662 0.0469849015713328749146010461736499 1.0481245324013181588748757634731173 GT 1 -489161421769913.0558985336460841065962430268304275 0.4945358198184039693697185451060380 0.0927529707061245583348897542392459 1.0973405073017302451978984956715025 GT 1 -5038895327198728.5269582167702773887411323053764653 1.8813583965846171151039211404202244 0.0980005814833176830953750382893891 1.1031414035797186194230789882493912 GT 1 -15126252580491178001.5435832301164713080501768259071509 0.7684338132230387353520326742772139 0.0477168175673169495784085738559566 1.0488928278848536936814417139484507 GT 1 -8945204500170665708793500482.3039439024206326500395128962109474 0.2298906077138834923167618263821284 0.0138814660632543049043126069018675 1.0139787146305959080255262868445895 GT 1 -5729039283336794960189862667979536.8614990343607620619802392362027952 0.0619207134697361417410515821680494 0.0338808083565373309759995665721181 1.0344680655866686667641677953701530 GT 1 -30908006635601544.2808455154624947710198620552687548 1.6322593192509900864712992083526858 0.0878831027008750481298709280210107 1.0919871202586822868878011970933235 GT 1 -686006299977148053.2330583535620468158595770548395217 1.9222123572289372813891596180167766 0.0452405237354350751655279570309721 1.0462958275373782491651121653199737 GT 1 -2711592756818.6364427697699675040696221406877010 1.7891204600510586808179558690201813 0.0753206032689534148625459601893548 1.0783081996773241023121719180185194 GT 1 -510549.7159048208922817254182005935526598 0.1865216026940023074868673237674675 0.0967033056119343908452255536265454 1.1017042143170763147006785457557017 GT 1 -185551551489029683557.0512108234160663181477738524584320 0.7347265438749789597758187211364918 0.0152336596514055751482187374906251 1.0153508838708781048925598795466308 GT 1 -3482837635490194992808032987421992.3007773208145263392224791707379856 6.1527927506066415370609005538460736 0.0113123595500243750447564341860041 1.0113768309663535208866773275803935 LT 1 -1060.8645689499240198674665714741236650 0.7156725173944104910333826448813797 0.0283553959204720712178306909018561 1.0287651750450209370109368744234056 GT 1 -4521930195851.4862505532457738024511238344366878 1.2128152723041865977748630530014670 0.0454475567908048555058286738726913 1.0465126942044425381702334372969282 GT 1 -5709200529215956769.0361257485110199093857759764171941 0.2470662575166056876542878808780739 0.0501629646742241788554749725294510 1.0514648508648627333218680473330266 GT 1 -5932236297974035019254607261.0407946092770031473282108521959236 0.7453413791879071647983195239432165 0.0286798790152538861430413906327062 1.0290991832682404629725227069784218 GT 1 -77635.4150124370519543106211227680413583 0.4533081097844858537019339487743131 0.0896656115875701133459436794861676 1.0939432871741779849330372171033238 GT 1 -2505830327538722137730853505264006.4226802641506773554660594805731336 0.4129247799858601489650018975774348 0.0497795975956283303127818734679959 1.0510613187650583610547245180350464 GT 1 -31241664329361922586197910017116585335094.3816357171721059388638236043028148 3.0024238894977917278874918578341100 0.0283647410583132345570610097296495 1.0287747929472274740601905622573974 GT 1 -24845064.6503013474331220192446931578012136 1.1478431793096242203666311978185514 0.0891819240713782288821095938277834 1.0934120987788779265630844523605731 GT 1 -20370800200629505405022479365116478680934820.1321302477636709985228597907339237 0.9989883277850799519033082180388004 0.0767132914523703596603051414477267 1.0798154659016382905388149950224992 GT 1 -152930360091240425538603016356021237811936.6855474383510349294839962178846766 0.3253527477342242974235278904202963 0.0394912943072129065645632160301958 1.0402922331052962514544244334317186 GT 1 -133900862142619996007.7437860683092307015534283423113694 0.8268679158729034538973122667323691 0.0083353306701504172087144852438163 1.0083702637937050382203358141702514 GT 1 -30855332588670557727525466232068.5726069545487366293483918809524172 4.4595689394671456525404167098241250 0.0692982703922398315843349917919651 1.0718164293977001247824636182047136 LT 1 -63490648805858103878501950044.9792156449250924684206571083173037 0.3451039983426659377434579977649827 0.0353301443844314459406477640492775 1.0359693547121372393033235126668957 GT 1 -812510141743053.4605761829682303660532363880357600 2.1345529583003239215730608865690199 0.0156178936302914842543727095829235 1.0157411378249695468296822832874968 GT 1 -2783330575824267.3430364709859608126309680044384389 1.2996405945217116748918349945116621 0.0447762165653398244449950260694979 1.0458096377481395050406672900194909 GT 1 -2195611615247144062.7039313987507946616901629642414731 0.9388087289839480098147536130720064 0.0483087877680643729226858283865523 1.0495146537050757421039309403391181 GT 1 -187675923664554960497593.0528538539515419484426367714374373 0.5278101070779096735500523764474600 0.0756702935435516896102787678530273 1.0786864458180971600355020000246657 GT 1 -8321122388661198.5960067624943763743805477925944228 1.1546902958991800745273691339740649 0.0911465561720913971959180408079880 1.0955714257153669618937361243354334 GT 1 -154497042162497937.3733627376490005741371974098051323 3.3709526783027404073470201323236459 0.0273538511568479341968807856572780 1.0277349331938933811815772517918948 GT 1 -2650272237064515018939018278.9056796708643135909146569368958903 1.2339306451074824025755964391037177 0.0324467082325551585549015864120177 1.0329847736649784455854642757394120 GT 1 -3243520926321159657940335990.2647408044095132532672410077620653 1.9060259380760900509843808338398660 0.0085295694411538272106283500054243 1.0085661544031097538926941079435447 GT 1 -423621753673584.3446099726991833078600642784581740 0.2146834572206131114462506825647751 0.0842447626903695615575784622816460 1.0880061581917319766809075964235054 GT 1 -20.5600049726436570041062813015293099 0.3756529109284805785293569680360843 0.0900826010663693667473002188854948 1.0944014539937273318212497921719508 GT 1 -576.7104470019151573474041723941899289 0.2443354813386359605713626941265314 0.0632855885768788621250859587958754 1.0653768335719415207440324316934984 GT 1 -805202504803986842012461231364.8061056753822029095564615762891955 0.2063547880454495175615365166911132 0.0926615770522776496348963231490671 1.0972397750338601496253091743472185 GT 1 -461808011620128923672832653381.0741856052841331926701264956339977 2.3786622440805299005427960583095319 0.0151079977951762615866989712249688 1.0152232862528699971105832999758136 GT 1 -15.5969224698697054501869261910105112 0.3869415523656665204455547541757369 0.0269355790569475846591915834778407 1.0273049904132572352064090652966409 GT 1 -166297363626857814499444600689918287937486.1536066741933028886514638896236624 0.9878548686610861485380841850327771 0.0621843041285341557526338902117960 1.0642018355596249595967807094691783 GT 1 -3852473342554589224432543687417.1261664070118025539859770549727410 1.4595226058348600577417905333873893 0.0581319513342280389064319325517409 1.0598900899436515281647047341098414 GT 1 -6135.4712740059175900071389680691181075 2.0252376750831624152035773840094990 0.0110307275739802092323641015404933 1.0110920171787705063711457603992377 GT 1 -429438108572.6502641183586343328078672210170221 0.8499679935220315672002205161008067 0.0677902338577165092557853928313302 1.0701974186531010512092169797284269 GT 1 -10986955101521778649390711814475776340.4789139085490466062092951499906582 0.8195147325357660787051921501275869 0.0618182832638534033360175953253906 1.0638116208750360170407094898431798 GT 1 -1931411092591122.7368154436496726609616929904709293 0.1256193695283086443145125838819544 0.0421741157027891738492072298175382 1.0430892666974963969350843873058526 GT 1 -691285851684322929986613721629323101.0993285094443569813282198232021335 0.0160795819344811665360040047036295 0.0454449681273828478225261859030619 1.0465099822948661552732525768238198 GT 1 -354240395472789430356179734310.5569000455945482741410089855379615 0.1108791931868664799062498074692896 0.0532578162563882921329665234893197 1.0547284681164235126709518060472309 GT 1 -111458820609557045.8708752745764928137182575844341427 1.1247022892146333395862947702962303 0.0549302017989277481167938202716826 1.0564964936857137693667131745089222 GT 1 -1105910.2963170120286093406936753299722964 0.7823376028518560006750604176768924 0.0386784405772943422218242085821214 1.0394463168002565260302328879466525 GT 1 -669.4873074245914360723713313756296134 1.2038517164077059417966585775136172 0.0619900619136986604737502842477396 1.0639947350573038226940193381969798 GT 1 -101744336203552689625516569799890514195586.3774798841387584027300501952796412 0.3870966446882601794805047113985390 0.0964846482498052522566679768433178 1.1014621776717440856390728620469282 GT 1 -171344326022324025309576807416.8955080628055718294179177418530961 0.3336209630056320820887764345758393 0.0749800523710272839247418188799927 1.0779399766979383925360952268220703 GT 1 -534731448077312078.9768171166473010701235628854651742 1.2974507022396207751635516554493484 0.0301410967721718345128892871774138 1.0306046786549940538707076849918168 GT 1 -822044836.4883433427820565734611251502582620 4.5959586008351540981876880879964492 0.0204275958712507857852481261694607 1.0206391248514023761611055872097816 LT 1 -532525958871352242574804617227985725.3048254025459209645836920568201814 0.2056640409148134795504069241111546 0.0616399482216991036161910204957538 1.0636215531177567836556894924331199 GT 1 -55.9868082334583871648919010110861009 2.8079570550072112459028565218323795 0.0989013054794397405492139257462712 1.1041404885041965766303010314111355 LT 1 -9533218.7268918259428789109175116329568371 1.8181611491812979663124082905306069 0.0789076455403556975727389294811591 1.0821949714679021782870907747698400 GT 1 -3947.2568627733934887639509133634167464 0.4491582563393030650746770422062246 0.0703317389078833208953493051215078 1.0729274649735472268632174243275799 GT 1 -15959.0122082379811133693135338349187848 3.5181047827072192164453303339218456 0.0044772193126215419408163059044779 1.0044872720758472577618225893312815 GT 1 -7906328289327299.0192253707398803267494091413869347 0.1985031440905481695521627441566638 0.0108123430003698170536379684284400 1.0108712211729035678466865402879691 GT 1 -54247661049098975357432.6926123663164603276074427499801177 0.8171667645540951273981086004217736 0.0921640012771810363240562685531016 1.0966915348409407254378368383173218 GT 1 -3609518218207229040.0866979098396040873976206131245846 2.1958522576583356989248342780923807 0.0286970405955655944770929140038804 1.0291168517294930871040830938356840 GT 1 -717932719191444602833462819873748565590.9001310283129225862231923696520613 2.3332405998405747503025271904929393 0.0136756754695006740993548863580110 1.0137700489208472889784758239105036 GT 1 -4505593630290596365144494.4104766842927605077704432647935785 2.6383802104977514693822668156010225 0.0277180040624268159179712001841095 1.0281093973208189199324571216449737 GT 1 -2058119.7373740973689251523714350995692730 1.3005168353531681514808788122980745 0.0579920918970818673095283223497367 1.0597416094272984075704317585060277 GT 1 -84234704294185674252634873.3249321242863156889038659775754335 0.0337493211820921409871849049517929 0.0481514746811986770848465146264920 1.0493493689105211025571509567077381 GT 1 -24705235.6153683110913959883084178490922021 0.4672685676231128558570513848773034 0.0630371888656100501186626826945713 1.0651116868222948336019716732486039 GT 1 -13227894526901261343264726120847253839524937.1868839569865601094625675794404351 0.2416353871200468764877384857038931 0.0080422269253531393655685420301276 1.0080747400683582410542420721070825 GT 1 -1077340344183.7446102993110737612485256935479445 1.2189683619583675425466142420909000 0.0038032510474859000892380988106156 1.0038105017968696445593320186570740 GT 1 -1669343939351229173183.2350752194838520148736425907338123 0.1395006377919240246257390205528847 0.0070227475620587883911488068678935 1.0070475231168359652410277355471884 GT 1 -28772598661588853359.9339901549798531600260289243351998 0.1003116336125411509766886565742353 0.0629833116193949480126827726032592 1.0650541864641064002970677828668483 GT 1 -1139838716451553169.8198986799068206298617247361722024 0.2317052186466638661672997230871661 0.0766340819790505220965392621816449 1.0797296788161531320545088913874711 GT 1 -24659858999485436603706393487.8974633574235191114265839544346813 0.9875185304203432974197609557548087 0.0808838039181685000569262811557468 1.0843427270979643024545325817571232 GT 1 -2763564208311130692.6426106111010536525790172017350381 2.0455722697953514774772278487677618 0.0897701515668856346814176935057234 1.0940581306686449026078114539256869 GT 1 -2146341978.2752383295456620521594410949918205 1.5431154685919457782683424656531798 0.0147768720675528477824791478169959 1.0148871376434043876412470209344811 GT 1 -114652192340138538846182259986277.1207836753139898417203961522374031 1.3081778559970500989597832590155508 0.0508688731496327106567710465651216 1.0522083162077623752262872608606522 GT 1 -95026044052815591620.8955730661154908019283680352832761 0.5456358696976847027515145720515531 0.0567521517219721050485473011687377 1.0584262013191922606837744256911769 GT 1 -21184872.8802178777798735426303154706302651 0.0443506538947985127233632821267241 0.0740724188661110317612194866121638 1.0769592535131260382375741716958778 GT 1 -1228046244501752030562936785168064488364678.6194755052840492550563239891094473 1.1913366635190440293063406858682397 0.0892975052870563779964090851434518 1.0935390050765021816656655251819468 GT 1 -42018797146.9769394330896180381982560299337047 0.1598875540690761150174709245755774 0.0262501094936587683982235243126003 1.0266007942425345388817544142965881 GT 1 -119494154.1050622556597605358096916138291155 2.5112781696970917421055500007467193 0.0952449800983695067287727006068436 1.1051001791318839962987700083375459 LT 2 -677816527917132685846395829965034543539.5744224256510742774627697004374842 0.6991558594812599767026958990157822 0.0490484726751787692149694046695835 1.0502921879515228805187622938309006 GT 1 -346758919.5748425196522072289785580832686653 1.0601497277182316909783639052576258 0.0294961122602323044278933631819725 1.0299398704668580504759581597125079 GT 1 -3789.4995936219177283202333588455780251 0.9592175408684561703580146830319530 0.0487799220986307656324902111896164 1.0500098258580141534991536110765339 GT 1 -247191108210059929837.1473988200119632095200748523417107 0.7118985605915964451690064641860207 0.0297765108066343195972226234100163 1.0302288327927218800303648989765737 GT 1 -243733789.2854183453832474068729757751080026 2.7305697706504691536470628555806013 0.0406997058855403554139541786860826 1.0415511205654961183851225794546237 GT 1 -12058374661161084936860801020596136406294172.3732806537869987365564712828601337 1.4273898970932823382652537025810095 0.0898421351692733552817202143498096 1.0941372166808177463286657054293465 GT 1 -952149310073267275499687.0781743327505608084440101933785900 1.2246237505858983165234462008936161 0.0414400576663574677537490043497596 1.0423231808058854891299271189550664 GT 1 -16110257724321352256260131465502.7023156193386427142192294800273219 0.7258274658098222066685073466892867 0.0727093669802706579949852236643099 1.0754882425752671438630463393011735 GT 1 -1817072146627429068634419311188951073495307.1821406067172618116994283507218764 0.2155228969678144427220396448750499 0.0657785069771804936435730049210454 1.0680417243035752933906427164619145 GT 1 -19237061600653831836125.5952644287804062912741169578091156 1.4683379171749843793777415158766259 0.0845175697302082409694634611643977 1.0883041064555610458832468516481015 GT 1 -190069531187983757858346259425510659.5045651030985047667275686422505932 0.0252229065275267889894746579312334 0.0069834933649637281594182304312683 1.0070079920791165967771418935183121 GT 1 -18480174280288028.6063422569060267580218631348232604 1.2905818209071203370243037652555431 0.0426094335471562533116830158889264 1.0435438553699079810799597747245731 GT 1 -985.7811496314168793577897383733218195 0.2857631083379460015418174664858741 0.0889184098485598038396915454639062 1.0931228246442347653802016637723912 GT 1 -1412398762776937840219839585297879287.2021618916973286216095727341587394 0.6811716579906367616617699335013243 0.0139403058123233522005199647212688 1.0140383844395892495170121956659452 GT 1 -2458353225719413035596765.0954655260423162431204738636711837 2.7333182225094226672375324417974968 0.0377663675681590202020123153946093 1.0384979966466672909279385771857893 GT 1 -6321873117082698.9273656839159891677425597592694150 0.8340146167564511639105047892705944 0.0148959850243786693839696510935886 1.0150080444252042088626796209011288 GT 1 -3291803.1520754489041975508446039832790981 0.4459465792371172223270880769795961 0.0004494406182603317253171295928348 1.0004495416469670731407331841200019 GT 1 -4075.6920852217353595357224487490335312 0.1199432538003966582243781189607264 0.0341586962798280920145738810052659 1.0347557401285385091358753139586334 GT 1 -6.3986226080780062240884724398670177 0.3747453035652619202466491183950386 0.0780233634656851092633218710178991 1.0812353957310801428051693274770518 GT 1 -3064404057559602876598664659375235.3668356858706169780046279587957729 4.5038863427775225782179992406043122 0.0928078937863496457481327125476337 1.0974010473101185667529790001207680 LT 1 -11354681954.2869520165747293537758011768167967 1.0361482640340118578665870126782145 0.0707336456669447984456172237608323 1.0733598704621412916596145693623013 GT 1 -32310528717464907233.4752365476103766453686237718269559 1.0485403107455981378824812096905225 0.0633953831063109147622569575702426 1.0654940528260014357099892673268287 GT 1 -35447256476714623114877421.7173430102896993695807223895041640 0.5432029805979182496528280043041763 0.0249968896750208028815737714763589 1.0253146179124764192676063156738896 GT 1 -5574450.8076747285109873851286335219500602 0.0540125327296348817988973498325064 0.0069176388710487808288376317155015 1.0069416766554406116948470375997659 GT 1 -299791288853653520.5931633929472165580217098968053222 0.4881750659111971730169320855813501 0.0707429396677145258610468891837584 1.0733698719511690512956510995085407 GT 1 -479133395271054480176470737154474698.6097802722791452214890717824112347 0.5873613116197853179674580114998929 0.0113799713947357463414767210845778 1.0114452187502030898444075655455176 GT 1 -390114579.5049700366131756419293269471147933 0.6314860468837646146136476498855627 0.0833446870513611453333418934942597 1.0870237629405474980906460665866938 GT 1 -10280892564911855930735439904104861.4508123305745433755233440666381397 0.0823688766055063173410495097211319 0.0376493334085520241555613005425126 1.0383763764507521014512957487623391 GT 1 -117743577334985675.7838464673175675064682660629560239 1.2327899185972048447779968886389013 0.0968776653650451274328868914331328 1.1018972589549491946196815360767686 GT 1 -1604386392210901739002078578315161181.7118796701927253375220843012654296 0.1075702643169632276332303487268118 0.0918920888207310512174513680206339 1.0963920625312515770129032560861395 GT 1 -1200346890057142599335525.1724836208747629551266053303830912 1.1541870116675205331785163279546560 0.0369821761487828611048094285333391 1.0376833586832105972573114622823820 GT 1 -223443864744851.2258695367784466253239444775294906 1.1875234515703720933767367515387967 0.0195854462068694061878779109664023 1.0197797826881265529094913143807635 GT 1 -27172747273.7798231820282996068534373840202863 0.6409818147041958899086200431679898 0.0176908705669424008084207772189662 1.0178492244087816578032717995621345 GT 1 -258256692027241612292987823.8340424786940847864196305675120467 0.0497104200259010108549427256445034 0.0512162224795460444486888354352615 1.0525743487764424071869290518446381 GT 1 -557667542642658607177082.1041955943175456790652099055032221 1.4175929599411629551939552362780023 0.0590340233216702149954206028058407 1.0608482966090508858471275898284486 GT 1 -1940174961780956084914646728546940548.0714810083924578027664126398767218 2.0625424107921954296852507656577946 0.0824689031924430447553463099896683 1.0860688066495020139295753249643864 GT 1 -855273624856780038.2549724410279599284562723813419654 0.6991567054566648376103939826439257 0.0709721992449026078895558739188248 1.0736166151530881395188637462197586 GT 1 -35.6352224508297329935801486116235064 0.4679917568209605846047847799415637 0.0279775623735961315541926714292925 1.0283763908103471335150027394322621 GT 1 -238.4725674703530227477045830487920948 1.0492262342673889999442886076298926 0.0266157399584133427598233494584026 1.0269763517961311082447130582325555 GT 1 -3475200.3642842192777735176913281900748326 0.6175768875288416314201844686386118 0.0931818441797932587070453082011184 1.0978133386918900014512992053240493 GT 1 -42.5737100044595111039044113413129254 0.1266665508696388842567684121565197 0.0590498922383214110826945671965776 1.0608651612469407248404209367377475 GT 1 -7468043483083681073715.0089128716101038862961882558905557 2.7360242162519320329541126706013472 0.0640887342865206355426828840261823 1.0684281202739768647343991261142482 GT 2 -1078869589918270997282652300870.5704981325491140565938192355820658 0.1071821156881035034351951475039383 0.0375267588822043125007005008886961 1.0382490146427212779843116638391626 GT 1 -323699743097779916454919145651994844.8044936309336976858428919282395244 1.4228939442696357247985906860581800 0.0449138080252569380373839433468389 1.0459536891973034596975438398207027 GT 1 -494271127049908.5910996647763897622333684398218348 0.0881945763586114663421630023850298 0.0579205223019111268100864952055583 1.0596656367354322739299954482326737 GT 1 -193285.5861628256598852285018599105607045 0.0106250821357132461905172130870002 0.0495270296341114475800585507661720 1.0507955547374442185262003287738530 GT 1 -9071331952.9733993856539895301790082919351785 1.2534965862428953072038914859861250 0.0495499205571909514765740942656363 1.0508196387455611320757993176310194 GT 1 -3185283856878.7879984149704186153692087462158019 1.5410125867273759936650624863710364 0.0494637814049916225267586997643314 1.0507290129979192933732026510016059 GT 1 -352465426650999846695.8300788830851037002407824460303847 0.1380203772891821193177664295550554 0.0717537239238780361523665857195619 1.0744581977012447252783277337692716 GT 1 -10732602299835713185.7742372516315610989798221236809516 1.2722999494872410083925360976261253 0.0650632980362312534843553825998000 1.0672764504195644246310318755995753 GT 1 -3157669748964705.1044705993348259555055607290694709 0.9419515218805680397678185098223182 0.0892866853315782718600667702123216 1.0935271242578307895988628363028051 GT 1 -57570750259719.6317503372771167221148020575217961 2.9263313024996966765111992550961326 0.0546922375583775680920706486998061 1.0578264647919920205414348260372907 LT 2 -64744671967736724560105076995.8696766025408321325386979989598373 0.3300758678117528325190417148276132 0.0125802418516651859862034167085991 1.0126600430797419360727562280832735 GT 1 -3977165199069259799588764373448636395568147.3242260365988538176027247418903937 1.0283765559547326013569328099447243 0.0311095289680089267951828418807608 1.0316037064708020306430841554205526 GT 1 -213105131786712300981625319721648222.4165063927878139184309920234121088 0.1744436916891832975407983418220077 0.0655497829484540026242105006797439 1.0677969257885278275306594048380652 GT 1 -572.2696803187817772870960829294531287 0.3928644775790361857538040307521323 0.0575616406147733169987237486309298 1.0592847629815051902969209750158021 GT 1 -120881.6739375977584005087401933778090349 0.5464506452456072554180048453768933 0.0753144531152931288091415832873268 1.0783015485794090695330287848114121 GT 1 -749877121247616.9953630783296770506545641710985150 0.9587897455206052120694363184799867 0.0983069167047247211533362782446278 1.1034810792439958739382076751683997 GT 1 -8090537280293551607584579324056376911.3480246730973455102967246357957261 0.2589115700595967322329535906056442 0.0985419010765878526985937323443922 1.1037417167052477245074483936384346 GT 1 -51.7984427185661658905290268415029748 0.3214205423390917471573165007470076 0.0524219955108711180740471609896985 1.0538460187766042440324959855158142 GT 1 -102355705940643802274979585914.7773009983987163607568320383473510 0.1828599488566456892188787706216277 0.0592838941867363688823699640424139 1.0611138790566490393093175947399679 GT 1 -15474888438623737207216067188286.9482650880621538305981624507193830 0.8506109757213580980448696662193636 0.0249404242678992825652164549815780 1.0252567065360462891366032042891628 GT 1 -287038326240380843479089048557505171.4311418633165961100039096051576317 1.1981475567510317372232523412472267 0.0753783483249896319268730347402829 1.0783706503595478062839570697032009 GT 1 -264943459258346661701219496.7674579090477488507799853840123476 0.3523784520892678016704271301866927 0.0836560683560440079425367161535217 1.0873635135526622474993258804098004 GT 1 -81120341.2825652377190932561716200137648434 3.0685989154068787067015636036826579 0.0467537050685965745536073668951466 1.0490283084105660228855737726764415 LT 2 -11991.3313631371966165870382322159629737 0.8376621924897527522434024469635743 0.0014461221765481001552648676325162 1.0014471688203944650425739309908104 GT 1 -824505283818958038319700.0767421430804457093603339727070968 1.7554108245880766285253547580548127 0.0933958543151873993902884492966868 1.0980493677031247956496796021196153 GT 1 -17.6728834786324972800257025292677447 0.0664766847358627493701900919868365 0.0444221382871962785748379866382049 1.0454390306962820328854521803096425 GT 1 -226983324017855387550089972243027776266.5742981893306697189862386133913285 0.4329086978078161142384182133196145 0.0915584377741929123060423863097372 1.0960247165765447015841246339621011 GT 1 -555336719.4134290249786362722921540954163471 0.5302482743450706981584579030523086 0.0805679542486682517812846040004258 1.0839991411474618242781228726165004 GT 1 -53538270278980550723.0652147951479959985670907079931940 0.9022907016584482142316118144770265 0.0336618524558234337135313366278371 1.0342414568049783882162427171797735 GT 1 -12527392571165.9098122925051703200621586082326777 1.3493453093299373105084723463254398 0.0288709362151005656538755768785390 1.0292959011046305696959730476604935 GT 1 -37500173946628498290.3330839019902718147050797893907725 1.3020416030264881207530993001606275 0.0708221075271397986794402331710611 1.0734550703697132831229886930742425 GT 1 -32072694357543509955238060377193495.2899631649865045225794543715830809 0.5751302162653432998128715280406371 0.0411936674746193179678248640436013 1.0420661718073178961399044775858557 GT 1 -245733109276758699617248.3335633572664634745482505079398353 0.7768472370338390923931795644586092 0.0548714620359998336537852419340198 1.0564343417286170371349971975517311 GT 1 -133827074774651443555.2814468043341323980900546768451148 0.1670403567194477384386975028977870 0.0547121243688725038430254039819081 1.0562657675812929191403901395152366 GT 1 -1198056883946.1641058330815514095483165432524889 1.9411612139920833017528979072411333 0.0518664523764395502687254290358880 1.0532599136281540466970000608366643 GT 1 -20290.0541537391703751987159303961222881 2.7613075812567774293258731546700583 0.0927455113501554998303134707681446 1.0973322853676118832300086019318083 LT 1 -352176.8468592678038160730843510181766035 2.2573717468206592380051656075593947 0.0592331958399176246523870476800797 1.0610599871540840217279598578547796 GT 1 -433539127201765716090330327.1523088432242212655925494178357223 0.3659403900863927635993513111109522 0.0155766677385387408973628028035213 1.0156992587332626167587048711627107 GT 1 -4.6569942935859313694474268922109275 2.2394110338722524280667619151751720 0.0066085754256991464733660183492129 1.0066305087456823791265075695656108 GT 1 -3483980750303.2015018868268696236104761633803406 0.1255095672522735503038300484008706 0.0855593948434542808107156073378460 1.0894427611482889610615609703613945 GT 1 -379751.5660963634353890411873055708239202 0.2208132654544642586869863366584718 0.0663948141124050051582134728295597 1.0687016433041438991743287725760862 GT 1 -5683072637243794412399.1665262790046485489451094320781251 0.0043983272737222826566117233192635 0.0631917115472645378008442219073329 1.0652766191152935051461709290201972 GT 1 -209188053133.3199553624259163596769637058526346 1.0574850921866288016349253459083894 0.0984555433694460809564753304503837 1.1036459234886027531354321967185117 GT 1 -2.0905297230410092357051397553383752 2.8666319135691664458712841845352784 0.0866245887729071802817988164950472 1.0906082986427543446997832939712061 LT 1 -995544034.5662226452528514327855211271003158 0.3386591344084635618848231955911878 0.0983384479472936962680703593491460 1.1035160487857090089711540602107446 GT 1 -206679006105181.7233978609106999988542019158291444 0.1462164918852683385293916199663344 0.0688843318779888532273433205141204 1.0713717686897529818516585059206040 GT 1 -683693010287002414499548414.2655166757417139015210655735076819 0.4627494596838750153851978544912505 0.0173554419927337503468526037583176 1.0175078132298710998014987152456420 GT 1 -82243541.9141888339743816628957308956223481 1.0396291516550728638294346163912558 0.0529300482607211809097843587960817 1.0543823218511222568966216808236940 GT 1 -10481695792406867668819756187594139046144245.5481062180649187556436064355197518 0.7229925523915747226072695978893572 0.0376646462124323802209344455051591 1.0383922884527290926975112317689840 GT 1 -10929612639182333022208729144874917633047334.9332312944067211365274125683634983 0.4787394049485828156147734064486215 0.0258277099468616571271481522163416 1.0261671018110468289129388834762606 GT 1 -81280711460486091570193660.5576362967394959885580660579757214 1.0012748669008507220799480973327449 0.0075049986357757984072654645384811 1.0075333028423164376474187054143341 GT 1 -163.7103161157108780143406902785037855 0.2991925629583797897160269983837169 0.0051293913920382894481686148068824 1.0051425918797247422851505643021145 GT 1 -114144181555161405237036155486986.5929556036332051073445495867404761 0.2174177283649912008173413463090492 0.0221483096314490032660377920526720 1.0223972662866400784514574326228839 GT 1 -1774195044108041884177662859305688284.2195576241247967889428341465803839 0.1833633023546075417022478780736318 0.0716249268402577532238494017984118 1.0743194541885948230165566104703406 GT 1 -546705373.0066971085939241886060730877954091 0.3044625937442904538645640013025308 0.0083601676488837798503544729893363 1.0083953098506404308666817021864464 GT 1 -53335.6958751830185168497204375017685117 0.4932090281467252342309138403073038 0.0261450642520505317918810604010373 1.0264929230355072649819851878758872 GT 1 -4965643201195509266244320178286.3698105639055503464705318526448909 0.2769927195551739858536785950949535 0.0810519423661494181921815832211540 1.0845256787527935691940460193488206 GT 1 -13135243030.6292466187278191141920509320102807 0.8710924958130494102643186141671005 0.0036779390036497260268876756712060 1.0036847192513040083364478390164880 GT 1 -4929563275932082112947638624750536214827514.8426043545418506202773485780685213 1.1762725834184387811224276798143871 0.0625608533812341848152606792263236 1.0646034335176505940176765804086711 GT 1 -20346878558442754046176083827157173639653.4707866186858299873869774067302358 0.2853485165810071091051034969327859 0.0771917046920980637738260403785834 1.0803337634425972554631361521599057 GT 1 -602924486575220556680059537297492719.2673076734868423158434577002441202 0.0132670653257337632402083060397036 0.0689523622791511856993769413691662 1.0714448346780893872720725310490094 GT 1 -968058.7122657793428444984421589309936825 0.1279842859764888127238106955137502 0.0919468185778755074171139754151582 1.0964523322478356168693068097942581 GT 1 -9515832240047694043101583887687965.1022231108803005235123714126141166 0.2055826917760469429810479696072975 0.0836226656625299790810772886973025 1.0873270620811398278686140830328559 GT 1 -319469162832012540019.4984455202860913208550964197228901 0.0319840815991622714491951447655674 0.0885974634458376543252411894052928 1.0927706170158258479164944865138237 GT 1 -36132282826174706513868406020547.5470184655124976959651551134688328 1.6364285295142888359246086599443500 0.0873663683176663177524421489425050 1.0914207585683423899854524438911320 GT 1 -435298345155251200309679978035066.6374976620806383470848199464006576 0.6384784242563869415446388426183430 0.0476198526354086795713991487925281 1.0487910094369683551186951649483980 GT 1 -16347250915409017961411138332972.9993863149305089417062976568256975 1.5096322164264413440722035275564929 0.0554895074533336007104501860446389 1.0570884830004611668070880963684413 GT 1 -9090969804633.3151462326112928926364402297958441 2.9071123326232094225787033660600996 0.0253568670229903325907746364498297 1.0256838924445069198308424016511772 GT 1 -179495790182.1989909884713432446421039741252803 1.5560816626106887098643304719672153 0.0916076652236129315902545053958703 1.0960789069453101590620939000124192 GT 1 -36357174411721281101.1407262758962916761097651859051393 1.2350470728436585820927164895395028 0.0824494367281363160625912089075124 1.0860475907388088446883659991040874 GT 1 -20126504549262843357762546392552220.4728005546828031668103998375698021 1.0854290070548712153375622875463130 0.0628097797032389520607740420792141 1.0648690074256038222700020161771667 GT 1 -12244798518066243769173420277318797855248.9294176582098772026954874615940917 1.3997736571669469603981651497691667 0.0090603798333586192329349157719145 1.0091016746953884444027605938780558 GT 1 -40457.1434687144981386550684732099329245 1.8642973478488887021707063100955087 0.0356734678717634898362107857076857 1.0363253154522802070032581681351204 GT 1 -1522800197789850136783313486717.2117770345833442755857227898071670 0.2372565557596883429034992936323555 0.0142087765361372315449447133246729 1.0143106877086340824174502380191906 GT 1 -1422699370249.9363099644399587556988768805381834 4.4229793204478642761931498116132245 0.0137396519750497902633054952804987 1.0138349145831041772991190237191344 LT 1 -48146430589297367653787625184486.7264646965782984564519136564279075 2.5245543206158891345003409885702438 0.0960762050366540653645863180020665 1.1061117519971056634919139858411609 LT 2 -690134241065653911447376321.6528050576536231182647637705153502 1.4799129254290201845278405655692571 0.0113001559338364429797284657168227 1.0113644877950897731619665793732290 GT 1 -49898218355806782419221569195.9088684243151505614515813079949554 0.1863009050080813714029597156889266 0.0313140059751024878324145599641635 1.0318147711813208483625716907668035 GT 1 -786537636370483806259348054509981186.4996494968054060468372146381483347 1.1273042006198976733710413373091273 0.0158002525079518194567268712995122 1.0159264071119176315062885795503909 GT 1 -236467512101546843436012312917245.9796399723619487209472969503314331 1.2846425680379770470863699033738858 0.0780288008899341628618402356844733 1.0812412933211789095764071578619851 GT 1 -310878562028699430.7585310559108541973710735591849988 0.6756532997655372100707256840319053 0.0138535792746726365541060141447298 1.0139504356830664622378728626054520 GT 1 -4113212745550668693183174252738115540.9050636208073611123879718400461058 3.0145444264977371105043150925144684 0.0672436207057121246545605514948569 1.0696112276715712616116160808896411 LT 1 -5657338589.0901920446489077317766824964847318 0.7095022611046552461325141007713402 0.0990313464128900623430103274356661 1.1042848126703411991858950372228659 GT 1 -3320354995519242695.2686744892854695579026274758172469 0.2464803572675328042623875300448478 0.0300466850108214551126282779647717 1.0305073375200756368893022799035800 GT 1 -5941622.7125605997678073224284366205051799 0.0723531587969323871962236644956515 0.0394971929766934678737516217669541 1.0402983743172999627643827614782737 GT 1 -66983053.3630677728232032657215673757027643 2.0168036233998668347653799554205241 0.0432620010140778756786250984706973 1.0442256982763734816516390972488269 GT 1 -1266185343207433200607616932916145504990.5096540158338138287282539187231245 0.7851634434945976442402147701571621 0.0561355629616098030699446897836439 1.0577727279810113183800808653432116 GT 1 -7652.6613573073586332943458097628942186 0.2094296936431848473603840118101968 0.0934389402448670979904815900835699 1.0980968933555678713554072603581575 GT 1 -206.7316995246854538416032109094637584 1.9277418329763549539095206156340674 0.0823708815479024123564682623539448 1.0859619803966018214711202395238198 GT 1 -1619478819666035017154091.6353555031162483634480428995551145 0.0376399059906768937854634812787664 0.0169946822464811285435734541014854 1.0171407491308655682499521462828809 GT 1 -19147454634437892388075.3944497666359946380481133445004129 0.5590731092867844514236572337000985 0.0881908947568391339469897304612143 1.0923246252434862481819329529584435 GT 1 -245059704.9064049211380710190711889749144717 0.9247041233894678871263556283940160 0.0561725997303513848846710563286917 1.0578119682510748377389641773583998 GT 1 -119048522371185604072876053933.6298171535693317678898408769193406 0.7343657259301661727523053555808140 0.0595846701426594781310174713027960 1.0614336610269918089734853216033191 GT 1 -28019180146911263908.4309320587500910405146396492703282 1.6239715576328697182587221678946349 0.0639604035999152164776318471157438 1.0660974995530830465831979226763710 GT 1 -8014202317485478296244.4659894919262028256041933839427655 0.1909303865949186068527680178849043 0.0219352099765875123848008243251076 1.0221793636738843663575655093755006 GT 1 -485639370338.2795745025826423220788437983754873 0.1972952116825020060197351955915675 0.0649060271667354517066359728436825 1.0671082490397836787062361741830748 GT 1 -139646702497283300417.3455987689816220290450799685072338 2.9509463801485293847062408362095875 0.0303066406883964509529823569953410 1.0307753818835936916330565671039090 GT 1 -342252073396646457713.0578331427417985223202302375223890 0.1800892750822237638904487564949317 0.0960381150903837732584195203960191 1.1009680821894341418699956887496887 GT 1 -416199954987504.1778238555617379461070274872930904 0.1135562296772763946218533595527566 0.0269205887952826129710277853626663 1.0272895853220017498944939068534039 GT 1 -443992586280.1459439709200581932167479713605030 1.0249849886591887846945389437135350 0.0408117493282382294076409712217146 1.0416679244350107466081607973107276 GT 1 -5501156974617.0529726231760859684034416869596397 2.5868355537560748662519840902810257 0.0515513768834622172276132517108186 1.0529276575300669050573875718861897 GT 1 -615098413906642488201999483761887.6509637670088530994689218126478524 3.2556182880599357536782496817693621 0.0946827343803950646953077493030894 1.0994698269720065152915540121326657 LT 1 -460815658571004900.8220069240904418971652554014662687 0.0235738648859532213469482769136740 0.0981816295167064856823799040227120 1.1033421422963460168665407234155342 GT 1 -444979296784054923746203174830806513050991.4076658589478122592470508513022992 0.2590891035679515853202489809587177 0.0073177728464488825741221569585952 1.0073446790890389382437011041425030 GT 1 -15.8252564906948381350444929380339991 0.7944561389447675632662467176131439 0.0823891321549900562269493348496011 1.0859818694653062027826647929990151 GT 1 -143360275617241124795976796324987.6046337511205802603035524614703254 0.0731200976051930079196585154527931 0.0507685860374739117573773829137838 1.0521026597695467858683424095079918 GT 1 -42913013196558996688780963728208.4812235302515988927683135687493578 1.7038918018909846267581052044115273 0.0456455841147461299328793370528093 1.0467201714039802726016854315591042 GT 1 -1099778.8094300192335263607138361214939025 0.1623735877931174428504735297810488 0.0272809490595211788971063773184247 1.0276599836704116302421827875213316 GT 1 -22580207813771783.8967376209382863604211101317852274 0.7716179800016461679497024087356229 0.0731144495113717638888790683124299 1.0759251832944380718539318218708525 GT 1 -1221947960306901246.6806608761453631291543923394836966 0.1889741701208220727016116006935939 0.0386480563652320998810932897521555 1.0394147105894085020372771192835157 GT 1 -2843665590216410361018475564.1002836501152798745121481258502305 2.0162755818147713082094935563348360 0.0794577218039653613445332753285079 1.0827923497645677123136891573511963 GT 1 -4026543039.5687332662884914854648428690644876 0.0972788042393745859136809970759773 0.0827315691981394828885026618952113 1.0863551224061155372489284950639244 GT 1 -78130.1018127159530913412653751856876601 0.3951521113733500520593258271909815 0.0535130633893182796143316964012360 1.0549981102128103878116978443815456 GT 1 -21499576548.5724531731558112838360003802327146 1.7644057858917286531440987980016137 0.0531094912596834153714736849591179 1.0545718115508741976583728490555652 GT 1 -62281243919275646214864.6004813414733898208881422970144416 0.7111770552916708984499934372163826 0.0008220771478949267638618050976501 1.0008224152386172759984977481336363 GT 1 -705811026338.6181570077236049480727545700108457 0.1169957410883845300551638317749617 0.0152615982276047579941800563798450 1.0153792550401406570625624686605052 GT 1 -40371412606314865380508738086749637536.9664226886817002872669976552039785 0.3615229034616463776903349618181104 0.0207216011620744408320338553064080 1.0209393062563221300601818023618049 GT 1 -166787897241830866455840535665188940.6664882739928408477130159258064438 0.7331088309676116351301539848537047 0.0146068810541996821091497280769161 1.0147146119027442186124518588132369 GT 1 -18976902017.6330578498191991540094904969919416 0.0317399327583769349016905715884813 0.0059044178820982183673966204175679 1.0059219178762144569632623688313588 GT 1 -8173832.5583436323019451870389292549178768 0.7680426847749407288168439649486511 0.0145796720666333051565313388766690 1.0146869999665549341379903072292102 GT 1 -907855732481826937112528284449.6695532319651327095274629492426573 0.1220965657014604532755416632190810 0.0371033148289276136322676415479979 1.0378091572892619161079841988856825 GT 1 -6648544704173774209035527274428214694.9845294988568784780190388298765438 0.1684955868994320572074828686835121 0.0250837601619928230150183081705477 1.0254037195330354764818233886169082 GT 1 -304144229985195165848386455103058.5050898533183685011411431011932031 1.1265327997423259079545198668484042 0.0879285207318446877106923412794209 1.0920369155885533071940127958624655 GT 1 -8410946419599278549556.3272451147317983215739686097938081 0.0306370670922650950355636740217883 0.0099525403881465783616415321907261 1.0100023980006665260446537486992230 GT 1 -9249627527323837620978915973622341474131.2252351692392579437637530546366148 1.1724542347067992165428735896129809 0.0725967962348689794269039469111382 1.0753668524640722370137602708176901 GT 1 -10337493073185198377795748010555416.0634946060930840735917992650886392 1.2954873302926611001889781900572637 0.0177630689735098379637433448451683 1.0179227257718222906989809048635733 GT 1 -131273332669768708.7926388593343499457289576716755833 1.3352496943782300565180711200005964 0.0303064590908858007802525232369199 1.0307751946104811120791669216399969 GT 1 -118811984783945866.3035170169101659508703984815094871 1.7859239665111208452294997754937002 0.0199326615087052965303635184578093 1.0201339969319129742214799772370694 GT 1 -61231.7253664420415615944859780901523143 1.7727206927886424864012855968513863 0.0658690814139395979002660564989178 1.0681386807838059826162655889479739 GT 1 -20280074521984.5810329858754884822103700610798038 0.7069137237134630678457124586966442 0.0012112000596861388575653994372641 1.0012119341552960627790324792646811 GT 1 -6373126.6155000638467810684866353686452424 0.4097521850222610951678424477438757 0.0027616559628994017656436644081617 1.0027654763701161500675053200932876 GT 1 -214243475800785230623.4799608521572001878923202664068105 3.5106368975071153439091383374922049 0.0512758372940816808109709653493489 1.0526371836276611469491303411285448 LT 1 -16498.3934669105546770326241903672929846 0.2173441430250424444597008414120977 0.0116062806845115645210687505701944 1.0116741592833706584076124294563673 GT 1 -142691994710014536778285817865858.4305226312544315683598060682826857 1.2944516621824414640566516593702567 0.0686745866249495797581738861487894 1.0711465317617129237934816397399091 GT 1 -210352428488443261645.2980075857952688898662117596721249 4.6241813581781295275500119235530627 0.0894091654763345441782462604835279 1.0936616214476551656913191563976354 LT 1 -398135167256250082941098979318346571747987.1388516445546201376110770756076882 0.8501702495835692470628111560546644 0.0182803661356443528240625076734706 1.0184495166218288264681603363353264 GT 1 -26539046.9441757810940898159627969511253292 0.1888288869219523089868427704225978 0.0279843868586042923902212002530617 1.0283834117480345347807740201037178 GT 1 -19284629109984817.4779757033190398733709835691412455 2.2888090858967149355124676556956634 0.0763215850129211036860102384330830 1.0793913036472126218165045973360941 GT 1 -140.1369819214225756388825918013374911 0.0386946310100761380299091076068784 0.0463102217413832796355750923476773 1.0474168404387528834454425621742475 GT 1 -19979656754219879.8655306704121114349782251392980801 3.2676971848488758694431931580777924 0.0212155227804685424030340967065962 1.0214438065304550095267942598344532 GT 1 -1151612052838689935496874539528089.1017969950880021222343150824607743 0.4885558012780039254076855243687694 0.0954288805293689846994514170233983 1.1002943487462684637865543646038913 GT 1 -106380400331.7840365666434617457880778866908493 4.6351199636748958068241835566383439 0.0145878236758947109661208035059658 1.0146952722162198273834823619321298 LT 1 -191173340611692203012726904562622495869.4729459256658846187598519537542892 0.6775571103893145498200414530321213 0.0423168554450186129265102996104346 1.0432383025311506802306883696221596 GT 1 -214716964.0536203291200390073154225363125486 0.4942292957535531461612711912047350 0.0490508064834934401345431234524168 1.0502946421367378056215232040293841 GT 1 -6527198960389727616080489881846591975.7347858285723468778771832961377202 0.7243223491106793122555113678142743 0.0848562037307775557141802381375688 1.0886740716614808364055271449255987 GT 1 -8406403878710405935769051.3785522375098333571512167312171756 0.4207709610026168814331137398295276 0.0209549556209840965705411486424640 1.0211776269084313698456998599136353 GT 1 -59877493967870295786025325727684660.8061011506432403994743693146542017 0.4714727318490507034566453925541324 0.0370044889614083538875111695181338 1.0377065286293602873971567371006424 GT 1 -5690338498316705215307370275673.8482020678391954037848834091001503 2.0953504223522014655876735973877574 0.0767840487727283343009690645444969 1.0798921051851162071884814756171934 GT 1 -3788506063856197385431.4934520262706019256433415523088882 0.0830039515224167750966067456119629 0.0154933518926613781522151670200420 1.0156146281504000561769694440147796 GT 1 -98491821346872538884.0787525213518645791993035929061088 0.6610509824579732541486112656965960 0.0006239545013089101864140381588517 1.0006241492419291664932407686325649 GT 1 -365088.3992196767998022256781233667372941 2.4127087189315915635832195036454628 0.0870439669392929601395573220111355 1.0952142059943749125029957776254426 GT 2 -27240613681033104266758755.6776399351007945881005326014519467 0.4673339369705792701069954385031377 0.0593861928953973574098100927810197 1.0612226305393734598310347027475727 GT 1 -60738325419.6996864890054879160533906025575003 0.1614309832603809318972376006319375 0.0955486504295188161330895879487191 1.1004267626906771419325658726201317 GT 1 -114942457450176756138608760941.0139076590904925430795479066934013 0.4459711887863979165745976526522853 0.0567726877274550563791031392212726 1.0584479731462623494685849981904223 GT 1 -94211.9578943119520915209713547757779191 0.4750394196194900351594101628574975 0.0633386733545370065871567139742637 1.0654335064289596030714746781218212 GT 1 -727677901792353198307903815.0993155337128094495345444132441397 0.2824533608474755370517521479207501 0.0061169429330306354500345741352388 1.0061357280727155490115683783850336 GT 1 -710239183887306285872422406055307752431.9459491236264778168031277890712521 0.5966855922483061913898254759326579 0.0396702195809840972143676425353169 1.0404785322403691608118041557715062 GT 1 -654500204666616694457303486616284121302460.2797220475749772373393842011918859 0.0341194022111621590542995529632442 0.0600733619723468379763540277813588 1.0619534514151625518801554821275040 GT 1 -599890513002346503785032021270758.3212891549238980282450798250857102 1.3172292865204522131171327098676539 0.0425952579373291668191661997346310 1.0435290489728332614759401477109761 GT 1 -184204726720745933445492368982.3571831927288939725463201056668493 2.2626163694358549402402731777134248 0.0854595656182896779110116718204424 1.0893335973864940960682111504928378 GT 1 -2803892726830.3241916502390421334270593547892166 1.0757658760984519165182196586979014 0.0025847448193410700014621451654134 1.0025880910395589097459383477351219 GT 1 -2816233.2237639414105439004074440402159977 0.8375784526857711829916442674664249 0.0159775412030465605045987449480697 1.0161065582097029722331963944397635 GT 1 -46430571071.1949601498522748184682369969144478 1.0279010485535114101614947194736842 0.0517174568763671106202610150104264 1.0531027798629366192229238626028264 GT 1 -691762828053618684132317330490476365800.7770281986152115037114313923157362 0.9204426212319044726608066904099787 0.0806732076698404600449728627650901 1.0841136242641243490258198446060444 GT 1 -1114853246981700733516504508.0616815302537865717165603725514336 0.3371910300364827780369499361357533 0.0520633942874953477468585465594194 1.0534676505744031418684260575987982 GT 1 -18053190.4449047845358234326514225405230321 1.4870341185578881213288709958405773 0.0873762494674145027358206492767381 1.0914315856986359718166660395314986 GT 1 -3984297762580912574403613649515340.4392490066098729710825826910284787 1.0313972513975071531718347591306083 0.0822122451786051098696976841387459 1.0857891189916509223601719392310790 GT 1 -80902328138820168368571416608194129625333.3599396171714004026782417609650072 2.1315498763405549136326347938578065 0.0398188855670114598597012045917979 1.0406333514467822196408537634131399 GT 1 -143458030971675095549798630211931.3832121659240168647459540497691638 1.0421406867244449972006328380856341 0.0099489924343788952416646345451614 1.0099988143871983086411890017007983 GT 1 -976332.6991543320642853019170846746547372 0.5332924407577666330850705616406784 0.0511603333886257256062787034199638 1.0525154444757927613766537846292174 GT 1 -2470178.0547009012034374983792994487893745 0.8318137742125867563784450033327515 0.0961475922428967106742871241590750 1.1010891976746815488253343058395393 GT 1 -55281733.9334256222939267732404879995695573 0.1036166061292564669310785523845572 0.0001239970489186082933035171604866 1.0001240047371882336193390858178048 GT 1 -28972.6308485603085806166310117662791619 0.0886281100381249200913608275869027 0.0258575318701566997737113723181694 1.0261977148556507550954220073045363 GT 1 -55859660.1669917656982777317023075748395281 0.4763823910595744276627686943426809 0.0294095974365684859106971866977244 1.0298507302080326102972686148654081 GT 1 -2166358258798595982223766742531936443.3957788128534073924421534529352967 0.5273723412008449975653234085811904 0.0133080596871271532429427389636165 1.0133974054782381350621419225867967 GT 1 -2060717427414640244.9638556321121991202488707875729569 0.5164621591182080065237352794552468 0.0600959568531419774643368457325412 1.0619774906874464901309049858057719 GT 1 -8956520430234256681724135536540078689.9083718104379664274468127397169854 0.0969343996298790211028047624611962 0.0732006797535718416783431712618639 1.0760182198656737032509783088949223 GT 1 -79877800933905369170001416988044.6848470240931019235656475751345943 1.1360851053637276142783458197044960 0.0377642968089726020427592978155805 1.0384958446153014611967083973556878 GT 1 -21526978406170052810014658208417.6920485661523555506827640280157307 0.4101274601232423997287384422592686 0.0938777685014529178126844990505711 1.0985810686853410493181926913315620 GT 1 -44518.2348288529190871720346668402770454 1.5812231228447110668366672765998469 0.0850792366197420673824661944154156 1.0889178148550121537376465938855487 GT 1 -11452867513554919697075359067.0084159457173783891853753753439177 0.4348056006066289545898168209029725 0.0676009873312286665579234293970233 1.0699944307348972932740524660806998 GT 1 -125462.4172041949499717297456815620445520 0.2536258483301450329735590118990292 0.0036865895555916957860615011281403 1.0036934017745913905424681304437006 GT 1 -13039.4159162434584674063786800404504956 1.8101927688176507316986754525330221 0.0613991328894465151468361193472553 1.0633649517882879657544153197454108 GT 1 -55693672447768667288487205334060327753389.2050018316486999624389013492589193 0.8702329581419784732039348448875591 0.0370585690321491268892426942036624 1.0377626883816091289599840036912017 GT 1 -5.2106814018322845075432745887607905 0.6924776358464176550873549852439927 0.0019382652634379696623154736143088 1.0019401461303593457209062552691292 GT 1 -1433740.1628396455982669432635006246653689 1.0216486650199257838401407531770041 0.0343226725137160320912167398320739 1.0349255300872089592489957940386313 GT 1 -3398663547503329149895059521512391369.1762184703270120160724983142622471 1.6143909982743403946481305609738091 0.0834593143455892657058611609201894 1.0871488202660760951764759992017886 GT 1 -867964119669308129477881662432816102663.6771144367919095843962059301880614 0.3340076150384226791604322014747932 0.0170551490807782679159943802387943 1.0172022632376621093800555704971423 GT 1 -35588613538332357509281814959807639078621.7057653747381823403859311190962094 0.2059254884585649120405108165755025 0.0817336718651601228392844784023871 1.0852678126437327416386757934744562 GT 1 -34057792629729968.0959824954149310301774370639916614 0.3913922601185098939215362718626411 0.0207405387759942682575361832837927 1.0209586447784988918450746027095978 GT 1 -2.5786722244756254944580464791982063 0.0685868607178313907777607110861408 0.0543565223950835205110104803550904 1.0558896545326913301671371563499930 GT 1 -3494680012195296136057286034893823460283.0407118845842901921656781380273778 0.9415872072175914717666124236601889 0.0262274615876080979958641793475307 1.0265775360702892359276923442523713 GT 1 -27734786.4114549014081040222796011406875902 1.8870007420363221777373420816808000 0.0485009250839382620273053371617717 1.0497165644838603144543215657767819 GT 1 -4382341664958391.0989672369040497392214857616825364 0.5260876052239098906723693692503199 0.0071901676157725607651685173345171 1.0072161414499796124971847206583346 GT 1 -3080092.5244791658664215423577652082918164 0.1613988118941887995674249277508369 0.0931657675290293859708403063352663 1.0977956102110983308667267692988906 GT 1 -89413122491.3908535832714933904962991558558532 3.4480607589340976905014989215954736 0.0344342480385224502194130901771017 1.0350410779704536340773695070905390 LT 1 -4340002604591208820121825640726699.9447463468926319895623406349571485 0.5260102526405874052428743589290351 0.0084821883174854536701106573845548 1.0085183668039015651843003273613261 GT 1 -12788184.3568069013128164141545480079226886 1.1313391036272433189126292024732609 0.0658511407956435702073262348998160 1.0681194752895220406119709007715252 GT 1 -10249411586233460118191180.2751802885694668260847573219584707 0.0184469091205304063357115766829831 0.0000101390095384640650446094516210 1.0000101390609385687066383016693507 GT 1 -839201826.9885547428303129648281851479075097 1.3458708947371630876931840533383191 0.0461620269838987198745310404933308 1.0472614615639934697130534429345692 GT 1 -2337999.4790839212936914592779399766580597 0.1865748568225578609559347502495504 0.0030720564241596612363069359435389 1.0030767848760267930437389012754895 GT 1 -5184226333958213768558446.1244926962929942501403150831698642 1.3749427770531317599397759862016252 0.0889393814099643051448934012620262 1.0931458432223729799747941840474590 GT 1 -1270903120229116156.1310732968050020140324706434374497 0.9456724712480092690383126736400782 0.0223660380292848497434706049458666 1.0226199510181543416729300610229925 GT 1 -41789143801808281878783.4696376743473424696439979933860572 0.0715048154154164259240996167040877 0.0947386252757071301483046189972829 1.0995315651302775114154057169711277 GT 1 -2249385365583138562532640.5880275500054426770611700265227273 0.1346642815401691174621653431929268 0.0905124009825238601124149496024248 1.0948739160619677893485578574035885 GT 1 -48089304365633037544120.8860281120978687188941770510202215 0.2310797774797199730183773711092962 0.0899400354889120411649653342031017 1.0942447865750962668671850363716448 GT 1 -152945606923.7352899039298285009217108498284617 3.0680337368957463664067008500686885 0.0924842983405243565712887007889322 1.0970444108887054918672066894539966 LT 1 -327682874999767010163.6383786396074233396947450196025601 0.4888023063740757357421488472070461 0.0435785366150158229968790038277178 1.0445566018001539705606084137867543 GT 1 -144129367741644608187357563945332228662.3106461212428552010548269674762812 0.0458238062219240336232438213310918 0.0044403301096705824424301146789406 1.0044502176555800538444479837221135 GT 1 -156274821.2654270346838586379945481841787700 0.9402716303430837699652314139213922 0.0749842351527858250569063398140041 1.0779444985368740850802544749491047 GT 1 -35335774168984815653158382.2994003634948452615353157202888277 0.2709742045517516196338835715155600 0.0675568836791872225317982695160077 1.0699471305893631903871057968870073 GT 1 -3152990412431485486067725008797473.7148102560915242620583427526697059 0.0193388683375319551547711663169915 0.0214520872702724421494104013216390 1.0216855278570630962467276016952052 GT 1 -10700054.0613730604300196078390834890916208 0.4581932129093045467065207803913602 0.0112288528076538574929862727553041 1.0112923723238351396788376643290166 GT 1 -1213709769006478272491020.7434696000891897057611254534454722 0.7606494082109141818110489367185593 0.0679569723309820125806593610033616 1.0703762983353669186416045609418994 GT 1 -858812259752061262229308.1036681568942525285257744995213247 0.5050353525480109568655156615987851 0.0011864635435215507371707419702149 1.0011871679486140347737352164656125 GT 1 -675.3995855156556308621506640766234265 1.5843991987958690613554706571918240 0.0412303016342362749063271618227145 1.0421043806282785847687571127491287 GT 1 -109345107062634048350103851840.1775136392025146831592296234401338 0.7587678587503649298324691879847231 0.0798376534804249644218672903233336 1.0832051608986884246298958607916259 GT 1 -453384098010884020.7140467780627790519987619846183730 0.0895318350874558313546766729267074 0.0141942784516418484509312124987921 1.0142959807630463222894946955260519 GT 1 -34588924664672687.8551837578323741398356406467456435 0.5279668199286107807326158766754084 0.0717496253506462525057365254026050 1.0744537823167836882188488463271844 GT 1 -2906880313178133737045288.9744685470691694818610675371834681 0.5059809065616156290497317537438518 0.0195718744189766918814622635320844 1.0197659398765275491954921444031273 GT 1 -58575859258.1476113850031404536684259461025446 0.2639614189938635029067570762438604 0.0505033328242229145391161396073024 1.0518232588193932957638760210382972 GT 1 -774703311014682566929639724374191493135366.8460679973887353240231811543951603 1.8643694911483648164809521716675918 0.0738214321317989797869708074650737 1.0766882250561624183943285987002189 GT 1 -439273.5556620121662801791881985824501970 0.0813753649751991299494403360841181 0.0570347220046115333306645974313457 1.0587258178162013378100013657029980 GT 1 -4741333954955805273865.2143515136932325539231134935213087 1.3217959753506511708187852983351614 0.0953625695660531975593777885415336 1.1002210449103464217648110994047057 GT 1 -51.7600313545574505035801143288706020 1.4981268293437431670031315147755199 0.0881704673294474400703064721795727 1.0923022223101771385342886702371145 GT 1 -2047338.7053469540298286348033456089147028 0.4214274130512762100916362534280420 0.0968774020066260249671028162504531 1.1018969673461929898387526943559858 GT 1 -37467.1075414699076649720253115625213543 1.9641191257029641409732596718885812 0.0652502798392574805837338173997586 1.0674764644983286287867812980903136 GT 1 -489.1744680062512088108376599807378571 0.8314138748394533870918617253509056 0.0479284209444618285442603610751922 1.0491150589337055152311459529907030 GT 1 -48814961501113949234959504264593713508.4382591981082184317849961117856080 1.2149440177316095603295667711591953 0.0450402895805937922557760250003266 1.0460861274338538886079321432511592 GT 1 -18164896939978471459934472157041274000518155.3338990012045473475415674131706263 3.3091995196026633034650520761206714 0.0598068156438443154463687270647932 1.0616699095609520697908442808079312 LT 1 -1208.6378937746571463183055252593816619 0.3409253666153744672030861768215526 0.0334886266100997557465715933809768 1.0340622127983329526856414482053051 GT 1 -79205979027730574809136267331879473.6887762714924124092731842575335228 1.8282684750812743314581963355269677 0.0886946645549876444842653549579855 1.0928772727347541044628371061685869 GT 1 -1623371916930902778664.2839472986165766350429751850333493 0.0840228805808782562463042998885996 0.0533682448673911267865944712762338 1.0548451155560661973513807323754086 GT 1 -3365490754.6095602512463775913218639703909498 0.6447344509657826578709406775115971 0.0889565294124360726460703109280749 1.0931646654209225847364519358396361 GT 1 -16243987448268520552.3503089466105226069128869937918932 0.7627561068262517706417377988850562 0.0511142429750284896689120624298875 1.0524668701003512586361479413649160 GT 1 -6334365374709435273099.3552202996133218854726619519966190 0.5466296084843814616683719725323414 0.0333814838593725221729445583918980 1.0339513638052909346512701779026438 GT 1 -2879062233610360691614125680134412.6300383681683828720819778864679440 0.6415415706313309570551098132760296 0.0234200503790216333735920739694887 1.0236986583650723646316948728832037 GT 1 -168858500261701187829715031521139018.7755248736922600026649101960970299 0.5271694354863074985746581341383249 0.0633243765374683810638283526998638 1.0654182429526607141802548499061174 GT 1 -646167205119370740574025957264.9521694055082743979901529696673153 0.1470047332509007703192732508486862 0.0980570519949094789139284034513579 1.1032040114685938320997453085554913 GT 1 -8045526649997236.5842739686885954743530859097187340 0.1602452053323586392163857620887900 0.0878931691467679012250526936034254 1.0919981566745972919510349528187424 GT 1 -14924328404202218304.6951316106944642447249039908298893 2.1412424130048537485126495363974416 0.0663385852495764337948109389226682 1.0686414174501320996272742313196048 GT 1 -45781736832675338276097623901259383297.5800250787211796510070235376431142 0.6349343423480055122278392767958052 0.0902650152237650188628149582752126 1.0946019474062491249999102075713853 GT 1 -11.1191706695386861590107070899975019 1.2065400985170604053069702345738870 0.0661123014715449075726442445114697 1.0683990851039250297206696942417299 GT 1 -3697146204655827221.9884782202138390324451508142275430 0.0608504430409384878431085965328438 0.0046123579179844721780372482483812 1.0046230276618595058875405905457194 GT 1 -410034708479752902027054171923544709.4612055066368784338802310453733652 2.1987678156954037278276830277951345 0.0836022024697562522374790210683007 1.0873047317991333016534355825958939 GT 1 -11830051632.8684635500041061513216967274471412 0.7157441223006755328637878860081780 0.0590297863131057916962931074126007 1.0608437937905322535130965834110628 GT 1 -2246314652107943304271421.5881902401489608153861510605896104 2.0000931981978235205573719051102064 0.0188580685257197834313085549977192 1.0190381494800572916228642738994600 GT 1 -4113523864826758857021561.7792490341640400225111336825170049 1.3767378088485256280134242275872174 0.0713836415921579344975338828583193 1.0740595873466094666701194411490139 GT 1 -2107.4872486785576184718747191500509037 0.2207529464435257410974178823578458 0.0755107617659103601165678757653797 1.0785138688564693955333967915221913 GT 1 -499030664370372212.9471499375098541725789340443380431 0.3226688993228935220465139132475414 0.0667255459036257428695784176888295 1.0690559583736291076688693855311267 GT 1 -366269650157634706014556458129.1318340641515303187986539025495641 1.8034617515233831252657243912506046 0.0060913478232316860217512472830630 1.0061099757670978727069460151495076 GT 1 -13.2471215601853384323359978992408626 0.3814239169442786324980782138581061 0.0901682898785924328814727430927642 1.0944956305061487561671924727656379 GT 1 -55774431230295044001490998028.5486924636474243735760844766711740 4.3976911748555174270528850985712749 0.0134454251325235654771320550325722 1.0135366333390872930213146751954152 LT 1 -495131260.2878536006467091214514019722226547 0.0689248842091157322744749617813304 0.0722899291959170319591166672161306 1.0750360187128856797559806396820365 GT 1 -9678193940997136720980313844564035255.3024007132390497555331568135778068 0.0252286609903451949489612127783360 0.0038033521826256225754122145231769 1.0038106033181253227288640592935628 GT 1 -6360573858938129448957330718.0240888789185877568543600133560997 0.2022197167625505163583524408480324 0.0097972224479661614820382018136390 1.0098455310173085452615773610077549 GT 1 -7.0905669604037359874840413199703302 0.2431457864477573743278884561627845 0.0300840473625503483134501844416105 1.0305458580042722084009377995082633 GT 1 -109212805557229238343864583661837750997628.2246013541923324161950885667591361 0.2972208701984513186631081448743583 0.0695584512351424985568000486519917 1.0720960218907886448985115128723961 GT 1 -181896771913148437759806658436619161591186.3475675744535278725031228288763232 1.1866511410208149452492928558745607 0.0879362414483850231629734856203706 1.0920453806588839581769780637731369 GT 1 -6269984790968338486774166222.9435638746360400437438688489837855 2.4345272665452361329701521355446256 0.0667885797136379871941160503470538 1.0691235011403881153266838697915376 GT 1 -630905948.3088695282638205885275065769797576 0.8727689345198847114055820189651221 0.0268077527938054656842395291204073 1.0271736343948884247744588734159695 GT 1 -432731279677219387268037150705342.0330564442532050271120398741507893 1.8577589798819022173108037133017231 0.0404664006928599696723485733180267 1.0413079466309206305493295330487604 GT 1 -4655773.3363407279085027365109153745000652 0.0340067113392949305911313184387810 0.0014303034904477592568610771026180 1.0014313273508890491778569656682687 GT 1 -32699.2470609438531227659606199765636792 0.9580500117893316853482839673285683 0.0525842591679566314907705311327988 1.0540172738616225734376462702526111 GT 1 -349636103157536380161.2707551254515499246706475697982774 0.5893787401768258295568624972516797 0.0203762599955657260038381450487667 1.0205867198118655908837630496039014 GT 1 -28638.8240262637951378989520467029411067 0.0710719465719781030390753269786276 0.0301165185165106243484393972928830 1.0305793368819253755939954093477522 GT 1 -3901160954106624749148860237012454378196.7183729875223800998057565615472539 0.4034655400453440257532473470795641 0.0750136926304935888924848102126795 1.0779763444230518845144145302644043 GT 1 -20283649438423892467297398.5076012965213111575464924033862259 0.8314522520564696247433703789319773 0.0105950627431389163980986626619291 1.0106515900485022589036018666653472 GT 1 -347926171523760972980282651023905.4441041186898797338738739575732578 0.3183254128158621568112640300777404 0.0709205650777998608936066540831131 1.0735610379871155668068346031851068 GT 1 -234762826694266873522803906.0119191310193434417556430434805345 1.3447019023023211264194447029093008 0.0933916622493345907215812718012042 1.0980447437929199933235367585588003 GT 1 -69567306902.3795921305267625759403300091577911 0.7896545443272915113899317931984517 0.0635076607698359594344279832368758 1.0656139373448379444997081186274084 GT 1 -1250217357949.0818750451058390732452728712002268 0.6604055537230436842348817838058286 0.0528553722129787325090086119018941 1.0543034754008961055192072352925424 GT 1 -222172962288285474561353441872002714347526.4212598153881974889485217057026334 0.0062817088170473865497899834213701 0.0292434175251897962167873173801929 1.0296795295797417271522550719890923 GT 1 -2492493492805617287408631670408253355512.1812611217132334605189416742532912 0.6706756064091379472370883380488118 0.0349392172981140467308882209074200 1.0355641923709246641723629412397428 GT 1 -1034609097701416631313740763978471857590.8706821855525248565947860142192545 0.4052528555623059650026287588323710 0.0583353965387129482166176135321243 1.0601061150866681244628746532461919 GT 1 -16015.0877431962605915853914198078485438 0.0213446027334321383096340836567494 0.0272819419076551927657561421739990 1.0276610043645573356774791351683778 GT 1 -374662428786998993281430219488304532756.9674860734731313039303452250918689 1.5159062962344419572752480541919031 0.0950112692853201847391549676197656 1.0998327876087134062890015879009566 GT 1 -31171582566803216017576.6809354941031847777553159128995339 1.7214032961207572060943609806222353 0.0323684603183618917363488271734850 1.0329039049924213983668987534252404 GT 1 -61359542624401516213956631716018911109.4758143199782216493149504860725250 4.1368808084096315632207211788777442 0.0941843366926798736573832243884523 1.0989194557735862808900968455681736 LT 1 -105975576604047594329457701376155502.4423895743909553117045068478845116 0.6409135078225513986533096565099453 0.0632802498059809741777438367652363 1.0653711341232955176247022089821292 GT 1 -513562117463289.5665718748558494631974319327071410 0.2185674897346365562571892191455922 0.0095551470097649163378719768824847 1.0096010903246040806499001253437354 GT 1 -1.8519867221333355403198835143127110 0.4731578583606836471041076057477029 0.0107719455512766648380336281553727 1.0108303829922674136971896280530380 GT 1 -376712510176328800347614025107760369426.1056102151263849867674597567887742 0.0032336005397163177019495357648218 0.0984777414813174992629444895471603 1.1036705461070405878342349683254218 GT 1 -6504.4043605336672651570171471466175166 3.0640572519410852585981275043187206 0.0605740158047159435704064798628515 1.0624862453552590939076381069775805 LT 1 -1174261695432824495572883319037378195162552.6523435776366694304385026964304049 0.8480392723614046311707427406475702 0.0372849135924208262246611621967948 1.0379977713876091686259211103440230 GT 1 -808263049294443269083305713302698055.3434652990284032638550670073325582 1.1338294017033323857226865054406424 0.0125563830036752166946489666443917 1.0126358805495219582892614977577706 GT 1 -234220421766675.1601843938169975059217127144566295 2.0397099719166102665298377898127108 0.0757024432232055313213469747895990 1.0787212280376354062279931107605717 GT 1 -1794873377830077571567356486934375.9625676872686213801811599353218623 0.3015363521342122936960988197281800 0.0839899182581377833019391101473301 1.0877279081001667789835412044943248 GT 1 -300012309460183021374041069744374.6685031788555317459942814231097161 1.5324528863054165514069931668084958 0.0317314699593167952988244656012794 1.0322458231089644605619213457382155 GT 1 -97268913.0513474172863421838944641309893499 0.0552918413131531860144183994373373 0.0871262988784787444739653257965505 1.0911577418866150164039176152538795 GT 1 -2545184430286686911564507511326770.4407706068252131736390753336410952 0.2289467464558283155745858463046853 0.0740176183998767715952812061439115 1.0769000708667198896313642034366748 GT 1 -5618315887.9429443940950827948438441430462502 2.1547779049362582937774781122122199 0.0900180201279926627686758240915171 1.0943304820057636949794330010585430 GT 1 -5492760973827721748094991820738.4134910134969132273561334473505516 1.7193164402085292306958412318655403 0.0278680920651748708641888056685224 1.0282637759772842244855714791240574 GT 1 -9077842478522719477138033087090.4533712621531735749562402258355549 0.0197445893564057942024295643225446 0.0828087895309125611318165549772488 1.0864393110479165509519331201160407 GT 1 -4188605914760084612770109476961516.4269851647215931460631620833868230 0.2965183155057538791765149300130564 0.0203002274314858609417231788135299 1.0205091087755766571858639869503151 GT 1 -113462495.8221030708439335145915436254486951 1.3856670011572089953244553582932494 0.0612449959260630170591743664791210 1.0632007453465624657071020794967297 GT 1 -7257715440463404881226621635.4543770058581564931763688324003713 2.0641991171497701064696859690176458 0.0743740110704335464595546169528849 1.0772850255694856561657490206603485 GT 1 -685196793015206599.6021765637385824777515910646680706 0.5349781074339130037953545707767981 0.0453412784426525899456830236391522 1.0464013619953885054585327553196500 GT 1 -213788139720840092855475280625427517061.7352890436088447710039307505918468 0.1034420815578002480647145930091683 0.0314045869690674513717465077064346 1.0319082846932980603776577734706847 GT 1 -598653847853781500439700287209665094.4334929991750472222949580103399410 1.0353464406839252256924998409268610 0.0656693526726514775554574844742626 1.0679248912730207131768858144497833 GT 1 -2813.5668345164222693338959398114757061 0.0441544764813010425275331745657844 0.0174916478324336889597365981452300 1.0176464343409437538813881399851237 GT 1 -6475187861209017.2409466332888798014621212379187026 3.7799594471305280819952803824398913 0.0991269942452385175491739027134286 1.1043909794158400585352932964954923 LT 1 -3652518.0817172134782949853366860110824325 1.9631317668773663117423949068541025 0.0589021143859588652943449847877486 1.0607081218375458711996773371670935 GT 1 -27197696421335744.9805325952021670121296715723464891 0.1710077747912185616185868312973903 0.0789590704253197739377082740808124 1.0822508033508860336841469151976391 GT 1 -108530465645335.9733311519888252947484886183484687 0.1547361037946290366585776945013473 0.0660019264467632935845648990874641 1.0682809033322559070705021978217275 GT 1 -353987364971952614288952184262155061348.3283503406439536387494720082258272 0.0869909045818761484098231894488480 0.0967948542697782066741837241462453 1.1018055689416763015902056271953656 GT 1 -2920934285748184348142758007306.9869099936653552623870228176156748 0.6611282077237900558287077457887914 0.0490578151322145986128402398702041 1.0503020123249629020937567775177999 GT 1 -28232030293879050600272347.0141483524981404159625971789926731 1.0047926132594494165105665518717292 0.0114763730801016868795763455039993 1.0115427348666197576966058945688139 GT 1 -31488399125890.4863359193017023551425407231420085 1.8447705484847438096443057692879683 0.0460877534902339669398857283144950 1.0471835965553124710653312115344306 GT 1 -165702822667.4499799710290308428760362760201964 0.3329228619730197760076457576826860 0.0795848950547101312521238200534991 1.0829305096721371741367089433216886 GT 1 -269472357805079831267223357403514407.8434138876631909214307549918542151 0.2148646274829978015328670923547279 0.0865249565753959022776669543585962 1.0904992232695004849049803788507872 GT 1 -322460386298.2274032700463869777551980390574324 1.2701731271071747716954087922870146 0.0711462531487167501776911869477444 1.0738039832924053019875440219090883 GT 1 -376625016928328830790136245.1570139865184863687512622338673232 0.3812280683996703205690290521114909 0.0691003440805310079991190276690766 1.0716037884811286565996090870988187 GT 1 -44785359652522715752213228808901604026.8664792951195932994903689144060013 0.4619919466386986062309151882194460 0.0563895103254474291860925161069002 1.0580418148565781277632819495741866 GT 1 -45706606001933824046.3783497950928196718292362031362618 0.5574051031981174281503345953086431 0.0178179906603530874317672807156850 1.0179786422423154157587103741159622 GT 1 -425012588380513525.7421119355369631929766615003701316 1.6378578333012585646906077294717473 0.0743838192613074025533621504050168 1.0772956219042436370589163408305402 GT 1 -594361786394804513525362.3619390355057945061592210939017025 0.7652351017499072380242023882498250 0.0601305264694467699421759576501019 1.0620142713059646115060391925178045 GT 1 -126.0981027052108026633966606012220481 2.6690959679078787905345140992525687 0.0303620907113193734084282086589532 1.0308325665676503295145635697912571 GT 1 -183353642696519372480632714.0666310580214004568316885315589971 0.8824709100973736795767590434541602 0.0286457711958288242710908667515186 1.0290640689739355296732866135079360 GT 1 -156075210562863147517.0924567378975353682777289390926196 2.7045021336566845515749188051529394 0.0052864592633341310175155779034371 1.0053004820314671346189648046102836 GT 1 -22730413291921914932121330784693642187.8033834956494695190534821766371566 0.7370070408421541509951774861402118 0.0033463572662328214202600928895595 1.0033519688420985393064840760695024 GT 1 -172304649546625879.9605809029571852706379528474119015 0.9579072768193073607934815983819459 0.0632012137951358960663124777613674 1.0652867623817232353663722631599973 GT 1 -10998861500764845032692217319.1788597608078396324814845387818842 0.5227255995684076060775396521411623 0.0046069136209618078230588574536809 1.0046175581523903374090764893814509 GT 1 -14715534533876759334309445782005922041.4036120903867693293456392684844766 1.0918865149299196469164031641945065 0.0041612251003023531129955686375077 1.0041699070909856423824653890354934 GT 1 -10155206181853124106658803306705.0644192589517771182341347757951838 0.0099535229280727350284145101445392 0.0534041773080542799478984969159468 1.0548830744798515316767039015571264 GT 1 -3642884008724986751.2343697583053428887750245635066138 0.4651044915442844414922796580211659 0.0980253259500708897608352391055306 1.1031688368636629062671491408019535 GT 1 -18017996315578778431464636826420013240798.3211538559830204053081252173988322 1.9403481351580964650762101674034982 0.0722766086767200296398368110347866 1.0750216603222787124594694021205076 GT 1 -94468052691189868489521.4775481963878244217283053859474495 1.3391103139283543760798185720558071 0.0328001223172395192243924015786656 1.0333501061468635364981271354309804 GT 1 -116732449997684954882153333970411039.6142584736171315653721553494180871 1.1003308874380258039802213518097524 0.0784738909742252411514967753244551 1.0817241690931968156210462490198398 GT 1 -2103178090098.3572058240730605965804979207009346 0.1691568048202851082887285283430096 0.0381860641421944328968003937876755 1.0389342608925301002669419402249819 GT 1 -13071960.0243414987572457987275044408052527 0.5310770722173395775737803964571876 0.0867684289010035635288528300275306 1.0907657929803819535012966103566853 GT 1 -3857.4647480180789498021138508885907760 0.0025921240046049837722208624747827 0.0248683365275653297551971910214570 1.0251827776423894910789769775440305 GT 1 -156490377098283205510205765087589348.6758117746159653794758919332822965 1.1618219663188950150502465900940346 0.0943291676614976828632820235808814 1.0990793586704331851618650172813728 GT 1 -768138.3074177300562976730051115688620770 0.1464450148564827879831398301600491 0.0022467826948228293310754939317154 1.0022493104980545085489799759877436 GT 1 -11752795079914524133349521189.7935895759751635821975318529081633 1.6283064890000765489914797155587319 0.0555694209022665063164833635859152 1.0571730949030558982511280880895342 GT 1 -97951894376223379518816297636068.5408468450195068366147108647384267 0.1063100686162088210152464646043497 0.0882923124088919158311331880690678 1.0924358582768818090469045644545355 GT 1 -3381922819617097511989045392743462.4872641213985372664886162472565237 0.1216675293336957869734143959940806 0.0998906748074097714960233911100728 1.1052390505987939058976826464084200 GT 1 -426205996123350871828491349033604121.4575892431663932033543919144524538 0.4304090982270881871917903762117037 0.0956915901365788146104004468033773 1.1005848154189203839851472055126096 GT 1 -10429949784822934019738201.6630815479553704228366134073929307 0.1959668082060423847155825104029899 0.0794541617120009562315706986763231 1.0827884823864313433322432094832519 GT 1 -584173352432364775799315181179999.0546238414806173171776005147305419 0.2099137711496578457911036379267907 0.0373972960891752222625482046693917 1.0381145131509140675653741630510513 GT 1 -124524776273606122539955964.6335646119224808103946468379383666 0.6811098476651850733078592497765504 0.0539588911070824716148382687033004 1.0554692553850792033049132097866615 GT 1 -9364.9342572060039081385384214945910219 0.5914051942349081845719393168426501 0.0719224935569188222384152739990768 1.0746400298095170778751307672011997 GT 1 -579894947987646264464017866381.1474684226601819779229863756398906 0.4588436860682016767267935121301800 0.0363171234478013504835946519495550 1.0369930047250111690620564830490251 GT 1 -73819.6102534767831827894920259998078800 0.3182983032921061394009161521983163 0.0805782575056032895905238205030153 1.0840103473205692304592982766278202 GT 1 -201818775810552468598299558.3856837129488232675993426215312025 1.1831196347445052094945484674912714 0.0142128257189155400974818603415139 1.0143147952630513408147586071058257 GT 1 -586763388712198237692911695314476.2823647581557345985062749351292411 0.4159804077645318636746523108223495 0.0625789587267031065917099634327210 1.0646227473263136716999745123796288 GT 1 -616327402924160722747767448490825623198829.2548619590821851103290547210978683 0.6851094429347078507759563586695070 0.0017680996271619322992171045651306 1.0017696645602181348081685678165195 GT 1 -20.5797742314511031810075702219496906 1.3565657703373767578788872740189028 0.0620219283785499931943318765673880 1.0640287080514695603839732180425067 GT 1 -981480786301724099898666609782301.1440569430693701926587526643998713 2.0535762939293620052515310277057121 0.0388143982091093931234861726991694 1.0395877546422418589418380227035527 GT 1 -1195178663085716256859014043900495133.9223094422956104957196224623419031 2.6125415872664178190897507320128637 0.0542028213296709755609850051168182 1.0557271317855557782540779212317537 GT 1 -39474444364157190012004136154751.2093205724473331219728622561431583 2.9317888618624238829958365580863489 0.0874654295662723526782835767983435 1.0915293088362995641582845105932315 LT 1 -4808186050701649667859699143915630384.7101057091306273780231800383774192 3.5871998844789290521916705980233083 0.0234189793535845749761817107661896 1.0236975616552226773547083437982834 GT 1 -583277815372134912257734.7351061593460244443632386588930843 0.9574395265461623139519259957917947 0.0235515212104299166900565148039253 1.0238332911535094136713436110576098 GT 1 -11.0844326867341079876059674646963112 0.3960293757509838277879676716779112 0.0478487105470623734298064408592717 1.0490313393242372733528950666861609 GT 1 -9996419862579469140681719.0060110340036967139894144051101868 0.7689203220040265299702217038582776 0.0804094631985282156745959042495394 1.0838267767055718060918991026837114 GT 1 -58993750911606.9693524181511647209589904328211521 0.3753200254080927993753116212191306 0.0617069763969880528902547970917947 1.0636929868592370329787895797652129 GT 1 -4127925834601814826.3743899897234397672975862360076814 0.7352074047018196345104553715182581 0.0192544396161945806728642619428375 1.0194422206589733394395612482293785 GT 1 -333551629539673335592322838.3606193993681147763561341762066591 1.1240658212758598293585600571343471 0.0641761799212483178330306691510715 1.0663280466329493146060084919901665 GT 1 -47485695647909578.4518128086388628943419351794895238 0.6431059383568199310839242346936602 0.0102023838515043909592783104898082 1.0102547848846130853452647499469116 GT 1 -323.7294847372636028675992164306845813 1.0122560184706148888387620188085943 0.0971682215348881442777494995154504 1.1022190347633624672229333207418869 GT 1 -358352.3680107307935725774310097963929682 0.2867690504855131708232752639753025 0.0597630156015041639632737072993261 1.0616233244305113260243145610492681 GT 1 -1419056189999509366680482706.2998836338556033805210869590293724 0.1931608768699250675465130635036876 0.0398817558549297466871906574288628 1.0406988311207298321008289479193595 GT 1 -905881799907765175858420535025671815554575.0376117628917405356481859144826839 0.0953367070686859064059669650044341 0.0848997140781198706047930920190171 1.0887216176120716696791736922899635 GT 1 -12525260789047297878191577629498847881562.0072042750940369062598369693437527 1.2418943268302916859964539965253377 0.0016588722205021132094722990427534 1.0016602496725795202276402617392826 GT 1 -5400254239949259233709871942880930588.5848076544350424902484427297810329 0.0338789969589539047937068868607229 0.0134099049496776915655813761918253 1.0135006297115872469794266345654728 GT 1 -9554474300299.9259155362245480322715593619411461 0.1364076647570148497863846339627664 0.0017520408294926062539115213428924 1.0017535774481013659468319356711519 GT 1 -3343788840889310210931891137711253293.7293169243402215001839911789737823 0.6005915541020440611822801176120486 0.0654229181505386466677990038740155 1.0676611708980724665959088617121826 GT 1 -35756038657915543701.1773368958253113569799129443796333 0.2166155271355732067011311576603698 0.0907228720424571875483663765322095 1.0951053600280302909022654664300635 GT 1 -4120109887372722608708395056026857310892.3474462340801387765044883542203794 0.4819874153351361075999761827475704 0.0367370385214395023396057736123313 1.0374288395803532996409086759820135 GT 1 -1202862729354106173892058653553.8413352202589089943706744866636244 0.2547628431677633258473805463376041 0.0193645057659389305157580203413467 1.0195544539749837559637155196889624 GT 1 -95075.7076779807843377821693235488089304 1.4640845811818557100581834545491894 0.0451521197557418417640412479207054 1.0462032388913876829938393308649583 GT 1 -2517433795029270639667319473214390630280.5471475031494601058146533953355043 1.9001519227664141104735854665853548 0.0855990639930597987443242827776303 1.0894861428724229199609937063103874 GT 1 -2195.7726810700002183772892885433945051 3.0886075286139451509085450526182133 0.0091161282036755308571284265936340 1.0091579343679149801027359185354347 GT 1 -5650212185.2543603978770056176628064672463830 1.0671675710950283659333764347339601 0.0418557592560933417703743830898199 1.0427569478941237934640973409547211 GT 1 -11856225826887116567027.1187201835718237212277740206606152 1.3349229652851599261181058118870583 0.0857445937132675056681086133832036 1.0896453086130261041799177698867507 GT 1 -149.3569743138652189133858240974330474 1.8060887875796129733515795248033543 0.0638318095455976493073274892897481 1.0659601279905645042703025474273039 GT 1 -40917410427114993504110547.7897134314622285735779171967042437 0.0244849674766159496958461998470598 0.0638613593503282248831245377558870 1.0659916931210678245705387121555893 GT 1 -28110154413461612039589394055246112.1840244468458906488924271894053139 0.2308132848776059034693265421561100 0.0962115217870312422493644237607100 1.1011599302462419420694044558631451 GT 1 -1982460752683546627603473527.2792022143640247514126636177124266 1.2277077922911343924548946775671507 0.0839851809104425567387271490647577 1.0877227363935015615043584976727908 GT 1 -3103383934.6892250901363005975968131241557548 0.8053107889480669089807551306994657 0.0611866330277945576567111196152973 1.0631385767468062414399768827390452 GT 1 -19454919273461218.5678942341216043975144501862855274 3.4005492226734664502880233557159620 0.0677649931150078868199240967972389 1.0701703427717713174628587637366674 LT 1 -1680375836035133499210.6807066719203252998497275543542864 0.5651212530007389754389859927696252 0.0266496215104738848364916215750264 1.0270111603944817576640530207702671 GT 1 -60284783050903.1365647100040276786507828369396232 0.3319177993391813479636486513256738 0.0665820070512899445942196039979688 1.0689021688697974278117101450430395 GT 1 -728119670089134094466924680.4639903793199924020175844702804037 0.0753123963681784974741798005118185 0.0069826934523850495751077346717817 1.0070071865413927483047390227702235 GT 1 -28882026340279981341621909809.8620971693283969187260492054220537 0.3586846472876617404901938337514469 0.0333982004739901178524768607960029 1.0339686578658618301998838029586338 GT 1 -17417560071271277743531619698535302.0167026667263862685442173635217319 3.5479998088994676870080332108913125 0.0599171218053884407865949008650715 1.0617872393125429366508848003384110 LT 1 -254300204.4552500651321022195608614909544746 1.0256888652049108305250631076218799 0.0746853263194997650237889214415070 1.0776214115577461447992547715309076 GT 1 -2807.4221497294406826566130672809565736 0.0577996890666462290503333089301871 0.0541696896746997539187896282964465 1.0556921019975374184253501018247670 GT 1 -18350932453719882838746023068752.3515326475650261706686741383602368 0.3026464962882693888264527103606952 0.0305087598900720760954070409875917 1.0309838398122177510014064787284262 GT 1 -842611201194515196081199441.9678788688833532251655758073756742 1.1382867986235111451326796442440176 0.0736889965416793574467937323230280 1.0765452438568130364113741416242363 GT 1 -13794181476360066932542577.2272192785213558825979807922363833 0.9381884379154072883406349688931080 0.0843836061458404932610708224488466 1.0881577860245260368536639253642044 GT 1 -107315238764249187510986786022.9813975610273207978294072322285659 1.3549809171810655571155288897348798 0.0774068940042564037777058584180297 1.0805669802516683561677604511938488 GT 1 -278965600599097.1515699453655995223010480220510499 2.0157811926778571527744440048261101 0.0238433387513636365911899065487526 1.0241321918755474919326580334242309 GT 1 -1537149620600385.7844926034636657952893847648609481 0.3061858122611490152576331981084938 0.0301518256081288804226975319980177 1.0306157409809307320549214779117183 GT 1 -725882333874190469111015017579.5864205251786412836726284034888064 1.9065780297305606675333069630676504 0.0019396823830039118779426599280936 1.0019415660030212118400571842768595 GT 1 -4812714252028421291536845030579097476.7087299231196822525929751794087929 0.3641041946279691800428401345298105 0.0010886534781661228880620250392056 1.0010892464917938516699449699397427 GT 1 -128645602.9149828407948754810542198312182215 1.5539069018855209436794354679643152 0.0747081774417318769972388137547360 1.0776461073775000651488098437745726 GT 1 -950146206403703345.7488286485977214610261325508181094 1.4286030897090285515471149048797703 0.0951299089337582701411187392956442 1.0999638913690512166236694948148803 GT 1 -1388204640180541.4568908913685547631934420252653470 4.1233966630218953204170161071126461 0.0653506363724985640002267085035945 1.0675838321911961395517325415886520 LT 1 -2315752130923744235939452020014.5549781634949920861931706092297113 2.3981732924585143774659669815097093 0.0666568071974495850693528828699935 1.0689823078257288154439879657891357 GT 1 -7.9486138296637172437594516494288880 0.5856586349234289538996600360403281 0.0641200864403270000139409407612385 1.0662681082143524027676982558418534 GT 1 -4952664897554799669.9846472406622089565174790763161811 1.2339540531290045668881945410174231 0.0267693353849356079134619707390008 1.0271341595113556374502591892050189 GT 1 -3603241701893.3961625207209071764746857973661488 0.3842250926961146861985898461900766 0.0901005077932977467916706558128435 1.0944211336955875967454192367603622 GT 1 -42180.1876660472165643286679277667165732 1.9092494446288332340792020854554230 0.0878233486748546243297946988616254 1.0919216110361266794129732507067676 GT 1 -45311972451797732962733580680875480584.4684063320750925500356452983932355 3.7344842851202060314064020595016231 0.0671594385360209264580156697966658 1.0695209807721374345641405216374866 LT 1 -1952586.1396471574287701485087596815809345 0.1682713359626399644822128448686148 0.0018785013295689311600203250783166 1.0018802679259072497559047593615413 GT 1 -24727748486387761334835458.9944411523805954045563989193624204 0.1174390658594378340389781500119020 0.0161581862915609382237596210526970 1.0162901532792875306388721554421930 GT 1 -57.5958998514675180811419370612040631 0.9550963831886544495602282080745332 0.0080826243039248144939724858352648 1.0081154657950777781050532919047383 GT 1 -6990766273797.0738262325265355628506168285298433 2.8879179853741970034986661437211418 0.0901331810486060621405031912775447 1.0944570429825234924816714712703759 LT 1 -218149345.9781888268656896055114986939994005 0.3804585060026769737406400622401960 0.0738767800251081668130715444403548 1.0767479862610469735984655307041387 GT 1 -23123.8973678961220366837086353129157507 0.0296973023952704497529302574333090 0.0745712557575458709217864979666816 1.0774981415668941883315989928241853 GT 1 -321624089573294083101890662543406787330.7056811946139022533256761706962421 0.2574389523402086511898296899268673 0.0425517166932180358744958880588849 1.0434835715982862156252771921700783 GT 1 -3887616464.5022163934994179046712989547157164 2.5428253714709099633631636185789964 0.0798981539047640259773315812082034 1.0867379352469943597722999494127212 LT 2 -180491421807229916717158.2826266559405784866046453566108042 0.6533321509299867688421567877725369 0.0892579147024254634086763579785974 1.0934955334440719259314543242270388 GT 1 -138818250.7523477761368421434480569163054492 0.1022001347119051148161382131325118 0.0478548020971162687626568722706814 1.0490377370150321289680720175503718 GT 1 -31853.3783779755177719712138315644444034 0.8193544634052376256074988534995888 0.0077157312454973398666621363391786 1.0077456515036371474394234132282892 GT 1 -989541492634.4661128649559686779967135732054238 0.4451938761965164971559510537044720 0.0512609173657336502101802434609351 1.0526214574433622113581515832464450 GT 1 -2705985165702583148469480187.4975925794139960745102427494684020 0.9555074453908575147668309662460591 0.0029470453734849375362496651104023 1.0029513964623752745534546115337887 GT 1 -2542737797805166702650278917559410027.3149798755422358424895797993135982 0.7202148235804809992572950694156380 0.0561467936147774356325184745274000 1.0577846266388502066847284726372891 GT 1 -824358519566400797898986614839024931142.1260121255562928547682733513987295 0.5827853961275271459646650358370587 0.0362904406422877611782897835864449 1.0369653167409575249507356419866372 GT 1 -397490788768143196574350053594.6999302323873728189694259263410551 0.3065445904172760175343480677107031 0.0723962087803134580351815828636544 1.0751505864813782267198790506177857 GT 1 -252.9879283747506660623206314629760513 0.0906386378356172659676961684071858 0.0148708956063030945793899803338759 1.0149825759485754511144145719636930 GT 1 -6852583822.0667044543288586113289847177179988 2.7569382414330579326679223479858741 0.0204231939120203285749233546547640 1.0206346311056401759908169223392293 GT 1 -4.1983347661963080186620043526652723 2.0308540360679721508223168373008407 0.0705160010657132113193656124218698 1.0731256866710327322654874716513521 GT 1 -124158488063449640426.0056225420134359578722769127157214 0.4025646661382611384492790761439731 0.0616620687928868998647738920793877 1.0636451270453566116302246704857836 GT 1 -2660800733309570792175856998.6102918933194416239689119407079839 0.1482494457083980402600966929223017 0.0699093307463598280562148558557695 1.0724732037659306725894432003014247 GT 1 -48776796767954018155767914708497016640.0334364082828132293593539115631472 0.2851591579175490564513813940323140 0.0159645509273971418396055848628703 1.0160933570984982014064388760117726 GT 1 -4032449090011924328891771336.0588184581090514643789400794681024 1.2585672994956628612180971843687993 0.0606326609518934960160893025137760 1.0625486738794305115292197910771340 GT 1 -229954.7463443738053467734633700186486274 0.7980240785584074168965450624011221 0.0487084745248560391237812080067252 1.0499347171714952256134658636850673 GT 1 -18193549636177182.7903418145862183139501129878258181 1.0724997014368268419889431625647085 0.0179490517408551168740410193193598 1.0181120898358806359005082483764901 GT 1 -404.6753035548815709571033192079057739 0.4066568241085844541675113202848019 0.0188930824350084876205683383402708 1.0190738370120536164951626187707734 GT 1 -26960.9914621600732940278057061609113042 0.3722808676102439269549722779999764 0.0869511549689430329253909933350691 1.0909659003318437982384669897383841 GT 1 -2995176373942775122395712249298412007.4394355397795878238513332780338168 0.0652011810123208883456742257486711 0.0061869143171851626907665482919228 1.0062061325804051714855201813762556 GT 1 -238125461671930233847378139295828734536.3437597546838308675503718150866897 0.8983426344935187063183268952303795 0.0264569051539640161438221396599222 1.0268131872030578564778583709258111 GT 1 -179483544.9956094516373090386707931756119998 1.9553355708661788531868715458431022 0.0126431727138887703639815457865175 1.0127237777449279144674428192151848 GT 1 -70762527683212632087408463703066201.0392047219387258419777839152793336 2.2565336438459288592030538506074741 0.0337392242964125787444951037489985 1.0343215270561823554399507547322437 GT 1 -1517739857374894952.8198558781123653019910326842053539 1.1398701315614270219633308583522698 0.0082567937944707556472568778691834 1.0082910699206853411051694932612785 GT 1 -844442.0192535098219570488943415102608105 1.0222813221229456318491715593746307 0.0933352035345726790601403899601401 1.0979824710842863160985215388222725 GT 1 -20515600869438072648887708492557013241.1205745152954284504459138558205875 2.2551605082237065054774139332650760 0.0927487337897213856141744448819950 1.0973358372324183275430425665516269 GT 1 -93319203589482298622210837778458485.9256910375674756875714366836603020 2.5142237909422053437112255823119331 0.0135856254143240416326172650905312 1.0136787544627626764875392000033401 GT 1 -12.3132346627088444360947597168721277 0.2411219762926436326540723015405786 0.0308341951922813841405004063509685 1.0313195725361869445691154756292095 GT 1 -28636333442284099745395403545580385690.8549505845459871437384456476946711 0.2849953882962517182431887240115436 0.0385496628913973189988891354711151 1.0393123667603980388121864031756151 GT 1 -276528147449850.4828742936663862577732196716568273 0.2324887524521565516098780734475271 0.0807328564223911838180434676674589 1.0841785094477494115312494206908517 GT 1 -919625.9148313660992534824716963409181410 1.3274896429405608884185419356972346 0.0357116408325279800090997624192866 1.0363649013342950753802502006065433 GT 1 -881888489285519979502499154733569107.3004547357530624888385349967030795 1.6655787436797673419741328350218088 0.0142637845962818179628019625416086 1.0143664901885533642140558278151285 GT 1 -88569672788119515583738022.5400335095573577971574746464155091 3.2090395366855482168009767162422747 0.0722423674188484771056001064538429 1.0749847520947794231225936890222271 LT 1 -645293768.4637702475766404112750188076713448 1.8879205371291166511818383921406278 0.0242045448145814012175274739856288 1.0245022891379747729673855561356295 GT 1 -1442494530.3511093465841523586616996534512028 2.2647801452875393300192846304204897 0.0869338393697488301472359237278711 1.0909469359192618523610840916296566 GT 1 -698319174465005046040227958.0629823038564779452413075019377621 0.3698533018277772840786719042211740 0.0241368339996963218748488038007247 1.0244329011679914680703345055113595 GT 1 -1030982504383448038197948.7143192944323404861751217687870582 3.9463156844766377647951578342709445 0.0620781798207287594246584903735317 1.0640886808063500238970848513609791 LT 1 -19522729754568161471317543362058163.3891200802058852237704047327543100 0.8725471225681528978166697417906203 0.0500124787605164382560670072856765 1.0513064300112081845983893447966459 GT 1 -86726087972953407419853278490377285.9701408276492104085984244522496930 3.1991923379469744207949833301866944 0.0202727818551639255574188615552426 1.0204810948955455993102897013924606 GT 1 -167275637103172381224470749053877199895814.2968875553860044923280394880419288 0.8075922883457884869629346427566967 0.0971400684295291199743889055721059 1.1021878521365554241103279327161897 GT 1 -111656969095144024.4469256920837103110157408680309960 0.5638076620413195306100617080802435 0.0267048754486919338165941456922110 1.0270679287564116273332330347502302 GT 1 -3504905322.2028021295231348640399404876177394 1.6550084507325661706679992179202064 0.0889188214079614147282520357784122 1.0931232763705115509577983624681986 GT 1 -1312896948089137420831924815831750874807.1357336895294675639608265225408876 1.2113721869610764924455688117452597 0.0094866744190307929800158966877606 1.0095319595458707508876721002651520 GT 1 -53653486383617567774721399741272460295.0165623582873146587662105699764737 0.2452662589781186859455392658979422 0.0644124382382787526529795331282679 1.0665805387579605982526827934453587 GT 1 -112687099333091689297414422874.0578166753289685176953232777929494 0.9571589209272228768920687034677550 0.0020676795036873745310973953894239 1.0020698201041785225952227951470675 GT 1 -3862594436963457338232778.3520969165671079349201285197081679 0.2789461088414241430589143460945701 0.0546167854039656122989267228984735 1.0561649155975919938010917338236226 GT 1 -25551779514920641599313.8079187004495627992765934917241260 0.6561276328811319574469049620698352 0.0199926804032608535866928289281957 1.0201952383691476776254278526384647 GT 1 -9712792499523267755978287.2812862720764956090524681412689126 0.3663760510248978989784123355711378 0.0831110613500419798293088042854077 1.0867689278555695396263422705121588 GT 1 -74.6225092873819585848973353006656059 0.3794943687681859969185173022445796 0.0275282230500820286123533539616363 1.0279142250418466160614532761053824 GT 1 -27568451727714022.9005238792741343816200476932505946 0.5555736658465783173724158377679957 0.0203158224084546632451296072926441 1.0205250270206636986225799659925602 GT 1 -1724331837760180875572.6971631953182297260552491267997882 0.1901811778383114510143913954885501 0.0700110443176492668041933071281689 1.0725825685157266055889086762787414 GT 1 -849195100864518194198121302.3684499737667994772675444416110296 1.1962857487219449695055940625850332 0.0862440918238702873078672274415674 1.0901918020828228431152061055796498 GT 1 -8311540206524.8528560713482030819501587175815393 1.2598044096746421975167030019914683 0.0114418957117734709868191586252401 1.0115078578377266295742051101259768 GT 1 -7352899234647505695984170214296787.4267028916500696285065501089758307 0.4756501032929232457064446640445493 0.0506294256913560699022315860464258 1.0519560673323464393979719665812201 GT 1 -540978802730064.8161465237963936440954486197719792 0.3446020602168990725192775632597562 0.0241336541664744990050258372321412 1.0244296426906230155761973169201538 GT 1 -279860125355903986104.7814041864893990550156964172368812 0.2603080788547186757753801200119787 0.0446887003007932194221452416606665 1.0457180233461006132637307521308953 GT 1 -9127115907908217702147096358585833556801296.9109558434161559579982909176765998 0.2367331276451436781018074486734305 0.0461661270927670860037874186159818 1.0472657601113323470079599786475736 GT 1 -2032189869637330841658323363780.5220003816737830148813479182682140 6.0097162268798722019106439796113953 0.0923201475358767674470569618318988 1.0968635479456224141759868948017151 LT 1 -1064925720185811695052580589.4993895490245231835147234345458459 0.8295649653369917653862120974576251 0.0031652987095709001723819036168469 1.0031703188638555914452137254979057 GT 1 -1389319280174766331.1094554722732670954334242668893267 0.6140455618581253974638045138010937 0.0694896648867056525433559820072737 1.0720220959080009280431022923589468 GT 1 -2100290275643626232907745212129246987.7340247029878341664241719117991462 0.1798296076235408294291022589864552 0.0216482749521953256703150101913574 1.0218860365380325355334487355607029 GT 1 -1030487671268501700677991607986452207347.6602735000018898830232945784210642 1.1087470680280396065523191685837485 0.0013909525610794911354101266669756 1.0013919208335779720599369369541937 GT 1 -153360186840636578281446128748550.4073348810464037496529665837535092 1.0510224782247641302406164882244374 0.0816069807049844558479281546904354 1.0851298543875608602543801196201512 GT 1 -416278689420828042.0159339498306875663698070363854266 0.1877649739963780327986563740391361 0.0085863011740981000069197706375612 1.0086233758333678651244097900758224 GT 1 -9883034399783976498769277960817783848298150.1213115063560291350036452247317834 0.0895864316551660506086215830092091 0.0160178368502774332916304865238266 1.0161475089745407550337298946343052 GT 1 -1837781449778930935173122728.4909793382224785665148823485674085 0.0554393828878946665022077546520007 0.0740438361102123426546761966801398 1.0769283846683859021917726206209493 GT 1 -782406341918475483627831.7085467508571025803124705192489603 0.4332292506356202022630330663879888 0.0023974722256673552183885300966884 1.0024003507639345125020949061071774 GT 1 -16395313096696249070572076089765802008.2058790229595252921489920693747604 0.6640872442073840200265942288060847 0.0940216333092232478424553830760373 1.0987398510489872395808461412342297 GT 1 -38413575049.9681372665556244032838406233552163 0.8385832401860276291938088328540034 0.0448959236252202645908117961794520 1.0459349639421982195008297253206986 GT 1 -5830070237332683.5965275250640889729629449022867072 0.5294436331935160414403579586198113 0.0172681495582323236722300416620054 1.0174189829842412423538197050191988 GT 1 -131403870673.5407847740847753135540369491233485 1.4723726643195696799963787025835263 0.0991191872513383649147870228070402 1.1043823134218290829893101647195992 GT 1 -9883633165219853.4827689651778998301195322012220170 0.1621471482291052516639750249819332 0.0389620989022009269990058558171419 1.0397414315618719162215808871507473 GT 1 -2187319.0634148069652395598218310447445189 1.7884497527992974804299187907082028 0.0237389947805427860543275412929971 1.0240253049397117284413420189709046 GT 1 -8883343440751972816390903266199648.9777869592963749763447138580860118 0.1600607350177261224289774763834233 0.0906631174928556747898486562831617 1.0950396456441322497601756319723894 GT 1 -640097215107993159.2630761488427820782101150286483821 0.1290206966680304786285735686124964 0.0112438584067975862559354897114027 1.0113075484472991370796956932289099 GT 1 -2975210144.0597943799942157226912829004978211 0.6889165903619537092115840439983586 0.0789288905847130700631266619646157 1.0822180367873213639293711593219717 GT 1 -9.4342018924785893776345604874946054 0.4875399435741508495808646786225641 0.0454739629623547805156145288936885 1.0465403579928355588290645951478432 GT 1 -4.1159867743478570353358545945278958 0.4185898991151005037986058959610404 0.0637956301234024689979717658332061 1.0659214824528481352180259685938492 GT 1 -14432337646762094146452.2279954488741484041894260055179554 2.7496772260820734696193635849372484 0.0206016726486770879468840117688953 1.0208168475453529597991763088519229 GT 1 -81562988410828350964878678.3470588896923412907427652194605036 2.4131332172868781126339295220483298 0.0527082072753556075720625756370082 1.0541481099990005859606032138561088 GT 1 -1618567877074764816017933486254218.1180885765667890816728822793348438 0.7861915835139129829321274206327981 0.0107086794835442585856409569819878 1.0107664300499262928013611728268060 GT 1 -27387602007760314024689910543590.4413703445695775851050619024115834 1.3603976126749324937298326902825669 0.0602487883978159422962290698237207 1.0621401072572931362547100008176159 GT 1 -164857296114238619170494.9583083895803266411780275262568422 1.6962247863352942139175420875580912 0.0764654025859621229702995154947573 1.0795470166834094237070724510476851 GT 1 -158.8240352647470597467485818065881833 0.5486305638238886541727444555036443 0.0746566720588852903848732919007393 1.0775904449927820547317568583954420 GT 1 -4253816390537479035425813969.1848152305753631601430301528866834 0.4195034923637920796332724231798848 0.0510037703271787394421966487682930 1.0523504533276026697867090702636828 GT 1 -32.9226366144134619739672428000204234 0.7070127456135990274033706828669380 0.0312515485833330600434456647789970 1.0317502968534920902989112261627861 GT 1 -149677935384329974643786376923802547.3913428170958636796125694233933204 0.6758173377025053083413672451608779 0.0883292113832491183304626815357689 1.0924763314697418887391995448397614 GT 1 -919979395388438401144812565486516877347.5166768088587314717077664824353583 0.8392811424112049732748115376052077 0.0099823455444579681667115498189298 1.0100325032291278426185972850744194 GT 1 -5623.3705443883493724099640200019394592 0.6266930445247364940822502887469988 0.0710556937200499699433873699630532 1.0737064921484288364157527300078725 GT 1 -81540507449969.7934187142024076741911873811368738 2.9753717455921199219690402501530937 0.0299908874466420620386193039705081 1.0304498131439304127463911911522626 GT 1 -133633555552.4437597037847271168274410573589006 0.4183600156817068627777430108836340 0.0991966288215306585247062551840671 1.1044682791764611584481637643506955 GT 1 -51377256263137105162890070.2676326638691915286630498539123751 1.9295120409595825390446224667627400 0.0197677333938855105230383807699298 1.0199657286582469787948717468939781 GT 1 -25705768178605583466833598966017395433047.0687194556093832169723117871303319 0.3679318950502657957978207977088401 0.0622242036226601388431621662524369 1.0642443815983512953906117781681010 GT 1 -24325972.3086369350248487935943135739249502 1.2435834708514847414245779757108131 0.0484604153432713118929074260344832 1.0496739907395285384211843094237633 GT 1 -5183599933620403864791411215952.7249956095128526513294238979374507 0.1552092092414237106299848890671140 0.0684002549222459211914208149250361 1.0708520146111533539108771063557950 GT 1 -14693438226388905170647519855.0520903959151812235999688205937811 0.0409409889839249997462035121992454 0.0422952896521046137146212714338967 1.0432157840706104738241910667909730 GT 1 -14718940920602109.1423296173013238629272801697215335 0.2897628248730984725789640183006866 0.0256774881165182305204517580868098 1.0260129091178030469816150517605818 GT 1 -1523038496121360974017675.0992402655619513981116813137296856 0.0583151002608505056982334671917395 0.0684935414424071298227323972813106 1.0709521554620153640050376171344541 GT 1 -2797508064644377458534826091879374.5229345977584083330385221122550617 0.7965006789335097995896740377643475 0.0914815814261561715931060087042270 1.0959401177423439019455795653553402 GT 1 -419920444765668504356859065495239.0362283038687741068751815361128632 0.2945302653291676440226123254948787 0.0419591936536810042980315179137200 1.0428649065673690434703979003505666 GT 1 -33986854733612732374966.2581741685248579932719745677670829 1.0231298862136690513910729732276656 0.0415520118482361047291401311876467 1.0424399817645310452611786484575643 GT 1 -347025.3418971959573886786647189040831085 0.2228442069870677796309083155096183 0.0195917576153534040027132534353008 1.0197862201984373493878038485250504 GT 1 -20707211053349194344.2764012169622896516198084682941493 0.7566520330951198682136641158409796 0.0024422448704668736373324170117788 1.0024452320150206351826212652689104 GT 1 -327964.4896817513818923288427876495052266 0.0607332759993253016410918913763366 0.0652656558897850274793532112056339 1.0674929140105996946597530370285929 GT 1 -16249535135522756476805797823121677.4930360810304502052574697575463460 0.3087501423828766163424660178149787 0.0675914547927777221396872850694493 1.0699842071186203569432702379318217 GT 1 -714510537122.8359587478157245328608739234480481 1.3413520701038033936930394777909411 0.0331337618259549596786035456560948 1.0336951197007328493804658807712623 GT 1 -319045676217.8641021348269845806756930834892336 0.1531902907578335111784453830351237 0.0630184153836126998942817870761800 1.0650916504945995746687419572741641 GT 1 -67346100029016426681613548621864616.5514812763995528995130595538017081 0.7081252313327980523570041173937342 0.0219210002611885882611578732283450 1.0221648353805415734919003063202366 GT 1 -5039528905656111151.0273112324067265029022747313840709 0.2199820490172075898168219496850376 0.0673367211913817360685646854670163 1.0697110448739283902694104258847816 GT 1 -23873547425867354268665091914992.7358860522087614499918587861785886 0.3193281080633007143690272600371057 0.0244984272627293455428257550385492 1.0248035066831917110243013222426731 GT 1 -4.2555788158893985642345709759142838 0.6094580262814130437851346947054311 0.0391557859860196491359298754371588 1.0399429913588558122056223449864016 GT 1 -3086.1024159138910201020293079416228314 0.8122854559513067589245500890391859 0.0346424270303734615094469363914658 1.0352567043394240760937215559658233 GT 1 -10407651985011256314376434831.6017408534892481870009868514589390 0.6356240651963265534588768253894273 0.0550917374060299234826490153154444 1.0566674328207718400136124051869113 GT 1 -1534454438646330423541623094536862393431960.0825899446979611313902223831766458 0.0715784802398105334044632796665349 0.0116832026887256434546285477439873 1.0117519875780105569450799305130250 GT 1 -23542169305.0466642652146371572629358373238132 1.1497360004302660502696403832764245 0.0142150934917113376860023942671682 1.0143170957346576242871976965673205 GT 1 -4820764080846670345.1322798364165387556318232127312927 1.1850563409944803497225402314633412 0.0403221929664774519326895685316998 1.0411576685258849066057679042479768 GT 1 -76975255135.7609411412437817280145593526280160 1.1418345595460618401493030803283535 0.0934395918508630525099760643928369 1.0980976121226306293938412032399774 GT 1 -3598.2105465501465639974296345332405430 0.9944982045542353149702341083150142 0.0580856860915584957106712127672159 1.0598409704236920958569061631076048 GT 1 -15130761970356367420928087861943753745169.4393930892906078519391625566265458 1.5418484106944963283499350428420694 0.0624988185776277907004362101888148 1.0645372609545015127714581702559092 GT 1 -14756205367833501733730184097984205034924175.3629198816428781203191959903472918 0.3862933893710087864410030587271606 0.0666543586087714985815700896130054 1.0689796843690141933358922261451393 GT 1 -5610094132468470946.7599158473972136598250402488464169 0.4830729138998598348181821334977208 0.0456377877786785664053603748930197 1.0467120022122282829309610780220094 GT 1 -46633663.9254902258659483105277295417942430 0.9349452208477557201122485644198106 0.0026609263476911436365014229931798 1.0026644729050206900000692636087782 GT 1 -15144455446427083931312424768.9758159707022269824490063465696061 0.5937723472252080562949136173720342 0.0268946824495663396081133072936889 1.0272629626223833286611954158561779 GT 1 -7065618263096249645071833792648060298089.8949747413134746518198776877408297 3.2776647739262268545266276139782609 0.0585062117059134722563697739909411 1.0602875285762788125703158831477989 LT 1 -28215366593731826547184878393749675599233.4169175940971868858961874849714479 0.4017717743485759844318718321992138 0.0609007946078790522125200409413839 1.0628341553095898386978381616568151 GT 1 -473027536448366100231471746019388694579.4324506780215631904211991871453305 0.1952274627216656636324250811998588 0.0688746335974272972696375092077041 1.0713613529805275436591093128149397 GT 1 -74614229018284229391800328860029187.9037349448882949270443362066546118 0.6935599624271481289602226650588453 0.0235002824789039980669475086939396 1.0237808179423566845712080030683237 GT 1 -82673901957600969379728486.7346684184338655039819683916910714 0.3212498502966626900242024233283798 0.0018364838184685843493710531726325 1.0018381722223439312313556851000331 GT 1 -8432515433054084366152.7554709856557557722480449776951019 0.2449371744198544712275991801924623 0.0081790120798378348196309172057983 1.0082126437070007644264796692032785 GT 1 -15932771039695160322947246319819.5413866066978202585336825725594427 1.5770029243398975747066525846497955 0.0242202605842712498913037375570741 1.0245183948660386104412629854429028 GT 1 -88890323315.7314526672861128099206125794145481 0.4442430874414179389240351861417721 0.0822131243495963772201592030253478 1.0857900769161903800056544538029044 GT 1 -2928860679.6933933224917781361064608661935094 1.3375839757376712987499965174725538 0.0576697056249297681191918054177431 1.0593994348910355923083593646457535 GT 1 -8652763604747030277579203.2903685520386085701395849756984385 1.4632095303536334913150248563028296 0.0710557858188334918020751904082323 1.0737065912919269608354137520421614 GT 1 -7536871.8506657429285677226688292608957601 0.0172020315720762502833074917211530 0.0813684480906302943433063764274885 1.0848701598582292754469850457422019 GT 1 -31684297304.1271531493706597539298777874847248 0.3968008315238137589827669076741066 0.0742267601439038393206371933030002 1.0771259556892018850389963168477809 GT 1 -120448246960636499204.3296477996318213008210992518013185 0.4015082875011670806132676921987690 0.0757387541580950220961486512358174 1.0787605137069283950974737282059320 GT 1 -7.0633559605804976486110734039642627 0.4157942702153788305772389762843724 0.0023061550096978917603652674261516 1.0023088182805604334525554000017618 GT 1 -11166.7888716342034337663206230511042492 0.1524848746861065019909394366217410 0.0590472644008338628677013016874710 1.0608623685018244499411129991713269 GT 1 -60273.5801300192705058209143944351466385 0.2458772272141053324867984276336898 0.0035593850566180190458102430132345 1.0035657347393970224118870470731496 GT 1 -2477063323538800.3918814140779589299527628679516587 1.1733165195994626392538837111140806 0.0150884307277273536319722093048947 1.0152034192288348251250979453248097 GT 1 -1800616186166560170851101753925624880819.6707964333223534472511102919747033 0.4360111793765002591163746994595078 0.0249696140553054148240039652175543 1.0252866433984290002322107502710819 GT 1 -434762384194827229938459.6283698369324199129637328351949200 0.8226871798031272700976682924593416 0.0270369857798441219055265230943005 1.0274092096253361435438890933718311 GT 1 -1711062876484.2823254642895361967636451492890702 0.4873383084777133413223887070060608 0.0322457694392277156330423545053947 1.0327771179908995643589640030438364 GT 1 -109048465161354665.2536774794491767998749787923789008 0.6724518337782489332300813175594918 0.0743926745476890333792805022975212 1.0773051888596675324876093674092382 GT 1 -431874335305940409454158547917900375101.6644854642465648800121288356759320 0.9005426663800847422105506157014359 0.0763768575927112189538183639361316 1.0794511450733028719505459911871434 GT 1 -216773723959212295719819762566356736673426.6082003206505996624861902994663649 0.8091154551428928732094709163112736 0.0420284516694975106613082087526053 1.0429372004810044307693554559908967 GT 1 -17.4192132872489215008576808039795309 0.1831312411102967162294435148880479 0.0403965475662452402983159724586191 1.0412351502388315801580936231012797 GT 1 -7015768450332540058.2923411853531574350473297558236283 0.0012777435850103829143416952771341 0.0458067036267096482042642431554191 1.0468890113143596717729592982841551 GT 1 -33606909553498243822351799362364584054.0644910984832567358568810068341700 2.8048398147505839463593815301942094 0.0405579623264841389206370212195418 1.0414033742454553486125818186289492 GT 1 -832953671672399016052127570442260628049157.0243522063411956077504730556603304 0.2561705471457577099834083443959314 0.0981784382906996904352548809389842 1.1033386036454769166629735752804458 GT 1 -74272312682913259036553297766.4465026583829605810270561182065533 1.7582909816904686428768197406690538 0.0432298419755183777663267964783531 1.0441920856278517530199731622769139 GT 1 -10602754109.4526433150801251499550995543975259 0.2331758681081660819904198774377898 0.0403408631027129287293035996934787 1.0411771233030099997675492312410801 GT 1 -239323714.7423379733669303891576407433694760 0.2570304023647747547774951632506929 0.0265235058152523484072580955147752 1.0268816001370514603304781308549267 GT 1 -77550267177142600927055586576.3614190695546089095514020076861891 4.3183216140923073416821275368295701 0.0789738361907988053236468488018679 1.0822668350855957861884680033736534 LT 1 -85016002300617282748038102461697150204.2563025116988661172781159441646135 1.2342643903106431509036541636166205 0.0197897279925585094588442933310446 1.0199881670600268917662250152782934 GT 1 -3308.9817080869622932411025488267971967 3.3036483556897216484475996827210976 0.0511996370497363262689408196524199 1.0525568682026365718289213495349065 LT 1 -1105428995224660330875977.8347057689251195357979258840911305 0.8895438122298023164582902346773060 0.0954512185154739818859917294565596 1.1003190436115389620648742272372812 GT 1 -7893.3965092974227962856194262637599177 0.5256738209261003284913879377745494 0.0412124115587144388182824112501123 1.0420857213937978833788359021233259 GT 1 -368941150201399518951841181.5370978306207033403143930772755642 3.6488789377002803066501740230118755 0.0893984849038177725419574152329984 1.0936498922390198191537292872284177 LT 1 -454958187247119143755894481.6285797782839654207896476762399078 1.1512107686900483631570404926691234 0.0269512483238146602480171428483914 1.0273210935536992940959158798123610 GT 1 -7.2608622774650856623653039349893183 0.5085377790974604236387514273546267 0.0957772708576367555907175110162167 1.1006795671423207844529102430118537 GT 1 -121193870885422.8620441778133721458821413887506566 1.3270181259550252790788849569679832 0.0383587086994479620918283493813938 1.0391137759186970672983061962728448 GT 1 -969702435711.7269898766089852775696030723662987 1.3092645973366578535516378062134013 0.0797251883928747017233588364436191 1.0830829452748692189133495828133996 GT 1 -11551.5947461663158426187747579740887136 0.5216605269580202717415799495011232 0.0683230695367537192589202459873079 1.0707691655243273825668267832818565 GT 1 -5767398635669501.0492013588571167096957122455451797 0.8804091468986757567968895765676891 0.0981183923647386035817356074509469 1.1032720229275364048043615729555379 GT 1 -212262811101264818180.7155052497253918404128253451821278 0.5281234055720356532665249766645490 0.0798844896502418588338991871366508 1.0832560620923882544953811730348943 GT 1 -5580049446926504.3045229756142877164358068004413655 0.3398498156348426123290823026107431 0.0137362160604995944029957468973081 1.0138314308086909563222322270467591 GT 1 -1522123410197581646159144231.9440718878874379813032080009445295 0.3422417301494702745257650255918968 0.0335369722191801160381391113677300 1.0341122347842021502086088870296763 GT 1 -290622420312450778883.3122881939322074783944020685294708 0.7149931953908327804856922691058190 0.0913803524131325790929581602705164 1.0958287018681036043687402786515934 GT 1 -49177569081881712796897834645764721.2580272862441262476558187525429162 0.8955188466934557301940549034138025 0.0688301262437649884147836328767626 1.0713135545942018746368878896825572 GT 1 -2099363780097776947985214.5993383563691192938094594748123114 0.4247722741873862152038224605191003 0.0658947297306379737615097295782638 1.0681661380366447692326379467837251 GT 1 -92552.2370951040306203487746659272603298 0.7918774354929605717392869659757885 0.0342263609972270959815245045033972 1.0348258003832301571616109364248919 GT 1 -2.0085328297230618595773193179724310 1.6291353507560568612447580440498744 0.0213376092496280715636683974932018 1.0215685470496645595403197162623134 GT 1 -355965457253920813.4998348279682518905102119298255441 0.8072660053094415596504380382750910 0.0723230540222993585911505355269261 1.0750717253617802073343448682625367 GT 1 -640807476458731734373466303215.5678426735202690357281211708330701 1.2538690623237558979164119240367019 0.0603404680855872249317322121352966 1.0622376694194338712611731532529464 GT 1 -10907539.0010464097238479550103029581717324 0.7295849968924303219705891852829330 0.0980580342204415851661699830645717 1.1032051004798989331403379974280083 GT 1 -3091346417327884150683820591182009234676984.8877266495988371017674529799652393 2.9904853305450013269090995173068206 0.0896308973956889720812803804752792 1.0939051544501439773748499240983745 LT 1 -50032497997962123367308.4485759169735790322804185845861986 0.5779861383624461753632515923356017 0.0629676758964241380994443139280258 1.0650374998962877214360516920271646 GT 1 -10114327321.1658324690371074933698792969625037 0.2804263900952009364729803315534543 0.0776158730484655550997580334704195 1.0807935185973682027791278118119631 GT 1 -24686066960256797368611481977.3724968309164842036517083800808104 0.0983249305968969789016231236092403 0.0630014918523765286593464200266497 1.0650735889033351017508343801024188 GT 1 -1085670.5761737285295697068353698422893564 1.1200878194422889174491497666906995 0.0681882482041558979036868448276667 1.0706244677495390611151911157569477 GT 1 -4634946414552293148756213.3537065049358145857055390819419847 0.4568330986457028885867993737413293 0.0326960200630303973095159162418562 1.0332424793216188438447638689227129 GT 1 -33971607375486417297945.1191070181946579646383949371086441 0.6052028723067232865087750814843599 0.0273944666806906585196918268921435 1.0277766918251502637506417509027560 GT 1 -113.7555828550231792013662160127650199 0.7525138201430838029517611425326149 0.0146547948354807271077481395776502 1.0147632371115852920229943064906132 GT 1 -5249006.5899054333285888605629906461393171 0.0134331878311377638183649187945714 0.0548229145353263714019609104121805 1.0563829770179771993914513347519334 GT 1 -58139683765147648421496890178483905154.5045239203241861077272491571955257 1.7100811896147535149201690607384966 0.0032615590477399340489800170587492 1.0032668895250509508022683224827043 GT 1 -42279090371625565420788554377695447.7303466274051135136632704721554289 0.0208400149839735608009559830326461 0.0963823338842224053388807651036519 1.1013489437651299601784722323815292 GT 1 -34948217471737629482189027.9984052212837281906326007879560291 2.3106064983119876812216591054767780 0.0490258612451025805772735783253208 1.0502684105447813636337290166742569 GT 1 -129160.3086182365006288244745719342109685 0.6492854164043045985679766487597686 0.0573924886007930365385470154654279 1.0591052957154233294594765255052268 GT 1 -210465.4895959814469959233298145451092679 0.4745217784766369533594728838862893 0.0086383261405023339302188845197062 1.0086758527474276884112119216084107 GT 1 -493651467464695161425511.8305993068410860141136416336674940 1.7253298359324642123829015990901938 0.0474142729353287070563965088343754 1.0485751738635992073201587524646650 GT 1 -1460430788319692296241336099243877296776090.4371068299061826023154746444302921 0.5138604121761455815961940721898031 0.0455896745229551727592533597497964 1.0466615894419444027067155150769512 GT 1 -153380335584789371726517437643106356.7744689396375070030446361272901286 0.0879542983211058856067782634051706 0.0988003670107372190152900360211581 1.1040284776708430111402877455160894 GT 1 -73606218.3198414038744948667518471943600271 1.4509885853806625902026168134198590 0.0953463233270435343957407255645124 1.1002030862314513733078769989224895 GT 1 -1372463416.7678776956011031437040808723684793 0.1665747694003589984644648115503315 0.0506583463283401085394637355522632 1.0519865307554603660878234932395437 GT 1 -25636233622708387923427078697834191147.3565411501456572694321469400642027 0.6201472645717229715184215599128517 0.0844224445099601129406604542412895 1.0882002046488769444971516456459580 GT 1 -209293285952612294.8647470947917175332928873477407555 0.2998742495347903502934207843621952 0.0819710648542603116977553356721355 1.0855263690917830258377379807297861 GT 1 -258698973984.1321945551443996021398439720156970 0.6436978208276075192224347948901974 0.0364588465345922984047702499941095 1.0371400795692835508105940810041265 GT 1 -4002270915261773881013983849820784428770.2098685279508142549724959095645182 2.2292911641829218635318710861968264 0.0036392920012880012010549150735320 1.0036459303352076839084199471299635 GT 1 -807016425009424561444983.6402699025469472155324558746540331 1.5101497783506696617717823597855174 0.0398187277562560424846826956071219 1.0406331870915995601080429418258086 GT 1 -7705.7828919021745564591761007608032983 0.1338092454847802488035138094745400 0.0594406201271277745757584796577752 1.0612804957397945370683079958524814 GT 1 -68735745774262159551126421760206846112330.5409061324655291552474839464773105 1.0065743447031978938000460924593834 0.0466664168056058550873550639112389 1.0477904017443609856785683826026519 GT 1 -224395478694995.0891877443036357531791928086505517 0.0622888555766139901713596221429881 0.0178073203931103558821395591905551 1.0179677784623014727051246814366145 GT 1 -140789814394.0983610095733858628385505642524805 1.5465359791432634969085142581771754 0.0040921951011608516429504007048849 1.0041005910445876885774521936296569 GT 1 -474230116714370339427251985607378004267.1532460910865336674351502242343094 1.2494509090981884179609479599834668 0.0270380155583237703216736499298371 1.0274102680201667322533889062366460 GT 1 -231850711164351104393021215905333582.8137909454410870562112425924041642 0.4862874274744838422175835585401398 0.0709673787814503296964910497306201 1.0736114264483557404808260022390374 GT 1 -25991422741888916479386667998944775410.8051268231686148249376967674935932 0.3486972423866916561350745173653119 0.0596459445484488390090204550361090 1.0614988198989828868666438721922416 GT 1 -320304937986020430491764292076.5081010432784312155610773090804910 2.3134467320587520074473279021250256 0.0827069989288685193327465065489863 1.0863283364191809403941481310537841 GT 1 -78989075544932572544149866479772938343.1088355469080220271415172046111894 0.6808179431856759707730979351219474 0.0792433725286512733416376515136714 1.0825595257775196496334898338204387 GT 1 -41471445287318563365837274237602131132204.1445537127635443268355829597210586 1.7572793208819038377563110107088922 0.0488020675275482316223883521444603 1.0500331072071158840232713028848203 GT 1 -5642052717651773961677324.8767120961702008703727121348838753 0.1017971234908388231266101475824346 0.0119142761815969841350386786533025 1.0119858199997503772094580941618223 GT 1 -3911334.2964940002938317043644764906905847 1.9219499953005708761033390939687327 0.0969360255840114843689800941919242 1.1019618815453145616628280016328323 GT 1 -3507979830330641.0216608420231425850391608804984326 0.2825261595896543520256719784594495 0.0888356466077869866576247522669851 1.0930319881233765774572819610031995 GT 1 -28058830451056329123234758523218757308588.5256663637330571723598047456905837 0.2206793097590429253455066236117056 0.0720565283837232826597285117005051 1.0747844622578804704607993326043879 GT 1 -249641.9989331630660723737519915882675410 3.3983674291113075925490823298453471 0.0889803893520965947036089458781959 1.0931908554468416735815016076879853 LT 1 -1040574524068254763545361446686143.5612370589859583235576738694172045 0.0492412415115374637101074345071520 0.0331724538139840231692941505330269 1.0337351384341509040178599589489859 GT 1 -296408857499721754718585584199983423352306.7048567114387492456132634723473197 0.0743220029024565617171391993316494 0.0508397910447806938871878930298910 1.0521776759110853108274548125033096 GT 1 -191944846760363492834684891696014.6913842747236196082832222639774654 1.1507966288552042448586850827862642 0.0613989330083934609887998386050300 1.0633647388319198489069735388527357 GT 1 -32027260236553624884922606811584497026366.6482623251682892337371467843611139 0.8707647400175605278256459270922047 0.0862976006445640091735355046473678 1.0902503630037352228946772378529773 GT 1 -646.9646665299598711461708965843195254 0.0015275609583697045621184441353829 0.0241414742613361462496838775653085 1.0244376562123807105592382650175699 GT 1 -620.4036293810043747181067080281104469 0.0710002470660003347669999661070252 0.0917754660278633383716791811266205 1.0962636468402371974253117080363912 GT 1 -313423915380099527477608929002.7977803494997300924416688016270353 0.0848310552143960987499977153156122 0.0810590299637395282556127410400255 1.0845333915118159462243012592143246 GT 1 -4770060257566553315027.3469425880147703200107520395610013 2.9218688076936077984058479003898848 0.0305930797761820706511529704213237 1.0310708169293125830724069686941693 GT 1 -12816329230.1314465864973272509295932233299626 0.2607938701599063897512914282377183 0.0947237397995210047170143018946133 1.0995151219744995545362181070732316 GT 1 -69921112131992223595656429949075521.8485073651109974168408240303093230 0.2998285145079825292990323847023733 0.0950680559168309903652288954414509 1.0998955380179663220974126072836204 GT 1 -1034091548212408211639986701840.6735619057063927740212589047324470 0.9056117725486299144164982885270608 0.0017701684832105560019537289974314 1.0017717370828371046147125842216410 GT 1 -31833742416753291696.3619726257789471393396144223742513 0.5862382823277238772106443428867605 0.0887081788125510063583205790945342 1.0928921024051663850224196790677149 GT 1 -6076913611528102.9425812587311398282642051526978891 0.8542890245371453823899582839399263 0.0575060555689936334651545745886202 1.0592257846875014655907095785878405 GT 1 -6806472253.3617119919148421264218622882352250 0.4020986552143966455644615982608690 0.0726336318767757338228823932292335 1.0754065723758821925991980620651798 GT 1 -1158274420371.8057059675798103976783041543342860 0.3478325304344422457193546404310407 0.0379429808204247468172702625515490 1.0386815585764763291925395932667327 GT 1 -12358499347026423.8759192060048019960093693139020641 0.1364142340681465983940506825039282 0.0921916012661639391320013915265847 1.0967219372578718058082719981569867 GT 1 -58803982234430.3686173582077859495840707728264066 0.9679457552021516128039453976410012 0.0509555235814464115360021007130117 1.0522996148544467662772315384156727 GT 1 -50405575505300.6848252924106909971195763949813717 1.1740395815523696193390334690855295 0.0366672264450908506331730358064561 1.0373563676288071239312227603938375 GT 1 -1438537297705259542179430389655292728.4831878729838864847678058911823143 0.1501478147966148803755577570137522 0.0606802130313151068500263118697912 1.0625992965496700059842879174347091 GT 1 -1057469057.5309025603143038308019252470111769 3.4331001753222952550856112280151786 0.0228378247465665843622908603557459 1.0231026476200742228419837335369690 GT 1 -13.7437724064098041161987475501120551 1.2864034069627777824064912093265564 0.0555905335291357715681915784570678 1.0571954500272176045655273592684849 GT 1 -90777217175273545933332834835.7694613890910034831318749414993475 0.0894254193492408085031882777913337 0.0200942515202703880785599484990727 1.0202988869633173689902459879010215 GT 1 -224103.4099014097169983185262865717866959 0.1814111519140856790182344064381825 0.0031502764013449665039817395080987 1.0031552489681000947215449932712462 GT 1 -150867774936092663800326.3928615819338277704274699260020051 0.7258030113030080695760709908242323 0.0630208073474580359995608262459160 1.0650942033376199322257974945039843 GT 1 -50900.3634087194220053506416513022786377 0.8326824940846115968621027542241849 0.0325127416652511887873465605901487 1.0330530238447673655864294052626283 GT 1 -45742866952466570417937833079368698.0561184791409271815199379186849145 0.3886261423789224258925476291639938 0.0466806288107786859420264568038391 1.0478053095493083087055833609613201 GT 1 -429201479571768712702309749.5863759431534422659815653854633787 0.4832154777339965424355138672231108 0.0803629739980232183120997264013241 1.0837762237436054937713026575661538 GT 1 -5.2724578882608212814788485826177500 0.9462663335815243773916843990168491 0.0790150960128750362593011080767967 1.0823116337546206061054634061950516 GT 1 -1631111799559204882352037557889223.5211066504002424187834136228647378 0.2116995101816937687117532545319571 0.0397348932477805865254512199526893 1.0405458797765444647622572968745231 GT 1 -15171.5057174006477195495304212968242915 1.3837111897226459189810506247210863 0.0562347675375407763353018241154357 1.0578778381915840752869224067793030 GT 1 -1292524319367.4650090469768755386589734960941746 0.5142028496649256248439319643536021 0.0157403392812460512215315128683340 1.0158655338965753590483150800362826 GT 1 -148379405569787580420206495.7844246977116116998689174865908097 0.9642531582581930670978082508416790 0.0106796315104179365413115016415903 1.0107370680752752673569680161477501 GT 1 -5952168198.9839043463798223788734226106074969 2.0983598297408125120702570015887929 0.0630637055436940351174149215288227 1.0651399878957161757974190331949466 GT 1 -162065.4880491138661574204726200916597670 2.6766814641728967111701181732427757 0.0285299063520556513239983310412031 1.0289447943256088118195045302515356 GT 1 -9792501597637780461068334584818168862871.2671648910003847712577442252127229 0.4927622429325139451724501527266713 0.0668620401353601928914492123422933 1.0692022221157225388620492890906577 GT 1 -21.7367890299265232762781051821894497 0.5114662788457962519772585316505252 0.0692296079109881821394759467366671 1.0717426571606813909108240549564324 GT 1 -35163542128033450316605461496.5767447815624425994889531639282536 1.6650521066756824414970132704765117 0.0686116376499363677884611125573209 1.0710789433046375248392026726090426 GT 1 -1138396810401037115752.1151666421472929125546911844847532 0.2830615468831702728924196923429048 0.0845105322165540169516688721241722 1.0882964192664111291223994784504237 GT 1 -1218498820.4451322124520104954388213711820162 0.2808752866801243689530940702575753 0.0108228670884644830588490551535338 1.0108818603514296250532749240356642 GT 1 -2540875187263269298560.4797258852944134194773271183320396 0.3246381180187112172289646214061762 0.0226322734680897579828561473303457 1.0228923144048628638939922579040595 GT 1 -30287781192.2097344075736635092466960950145972 1.3252050398050763271846416935378685 0.0727251737786996014785939514681375 1.0755052889387163963738861877679806 GT 1 -16394518855387257558607502511868235839.1106268870540261958916316667384864 0.5380157969818577215421360828855523 0.0495533273962145557532773493325750 1.0508232232001296823791145816413465 GT 1 -21823997173736.9334194183631004270381736182028047 0.3090387415802952245288435268648702 0.0433545679404407258446315256367861 1.0443224555963472295637809363700729 GT 1 -17442678545538156570618741570.2938476033675871956708087918266628 0.5118837134065941692626091530172513 0.0757283030449188750055890346802026 1.0787492062393314746646876654479136 GT 1 -33064896198.3748710493853146219385036189540876 0.4360098772283061275939366166565047 0.0063354134834253995738907228662433 1.0063555673827113989817069402521307 GT 1 -10630066497173781935957642924479106.1309366357583035254742740145895005 1.1474078457032391469472044228047423 0.0659513241256136956329333954332353 1.0682267266140581642335600905791293 GT 1 -930512789.1994047256973285423266585414130620 0.3298106315704070353966516736889462 0.0825242564362973196808160982964539 1.0861291369356385660155561746804818 GT 1 -8567.4791942063598262095881337683328092 0.8468202674586179288402515906057442 0.0597239324833208683263952882981762 1.0615817579886840604816637152605006 GT 1 -9365606825732594934212661.3108449467665599643642533148447643 0.4532935344199412862627595269651822 0.0454330754317293701577004906005281 1.0464975234829882565416203344410533 GT 1 -21676788524.4475899078464992301038162464371214 1.6202638367923265578269100585283608 0.0474689197318226277052192904637941 1.0486325423108236201159793200107379 GT 1 -4336227753964898973191839305372225018.3381291614590923181949571605221147 1.2724668277480117308135628500345251 0.0982469389987799276648006339221009 1.1034145646922233253376008939255273 GT 1 -873325937770435266204163810406768858663726.3485429950688226791874330162081977 0.7993067996449651286734628584720914 0.0525536868819908428889156324042646 1.0539850052477625723267589385502217 GT 1 -1557066137980.9824767803930262565117887532012025 0.4926502530340430488258192909404530 0.0437693173273576429933182334401785 1.0447560951720854811008563403487872 GT 1 -3964792712763020782312437358719.9246926013321409671599329300299707 0.2161962139617148805744644314922370 0.0027175453845880494451109342593031 1.0027212446144499821737293562845838 GT 1 -1764893682719635299829662573.3716712614312904141166682655147787 0.3965400314969828384037305088093529 0.0609460785028050966509405110294506 1.0628823770379318943219690525850341 GT 1 -70.7382178470772885342662811964715305 0.1032951829851648912268850211579574 0.0448874931461581433357012272400260 1.0459261372163324782329965451610341 GT 1 -114206280813301974681674.5726748984280651025842913139569175 1.1961755322197076705825934158241097 0.0450061482552629970171260378033301 1.0460503764857567562622787718147501 GT 1 -45390075926661185.4174610430031926324701401718279052 0.5706379480855180623650194238104391 0.0321987023874310061630263888217831 1.0327284838379435851494061757783699 GT 1 -160046500135609427915822.5898201477084586317923628374908190 4.0045036805162440809256734848994441 0.0416938213699047961230535608015577 1.0425879501627586824418994784433510 LT 1 -1446906725739523841094715446.1450766905818622085246182737465230 0.5528442786503884967616273846139537 0.0340391266171433973828084844107197 1.0346319493343727256672107152017443 GT 1 -985815043245258127979283.3263989489671136083488536368538318 0.0560373599206561974459168348556830 0.0416104921163318415779620120635189 1.0425009992146120614089568831531692 GT 1 -223447.4039949884054424987912688417066323 0.5348465924550734665649382473892012 0.0823756587970897141426105827272774 1.0859671864886129059852901842767577 GT 1 -13353495.8805435182270672630649342728955601 0.2392625172158293782725118148318643 0.0147363863912542039449453278672874 1.0148460455868573080010544759931769 GT 1 -77318561194663451843814.2769621057178562926820859257530322 0.2618584771071504334334065607965172 0.0678561086943943981579181851914601 1.0702680864005449341434107721671455 GT 1 -185139732683760673407553920185.9610886213787653543082092729370941 0.8822184688597106942508731307131774 0.0423732521193769599310125811375062 1.0432971929223060552619979847926280 GT 1 -8226979718613727.4891650589978186163298634324294788 0.4795030414605883152566434959423121 0.0136006392626241480814299542252560 1.0136939752086765706446973923415157 GT 1 -66588860381515369.8080982469505845092909439636399630 1.6496206050218631117281948739969329 0.0674222235110406897157262168039658 1.0698027245198122313963871428792144 GT 1 -24216.5063258748670648431110700611893949 1.0989999646526654803516685077633339 0.0485617963855954672487276916704882 1.0497805406352182558994252806043656 GT 1 -162609410192057741393887936687398.8543451578535270156285563343665273 1.2996117990201458486728047530823763 0.0031936061461296346260630943905548 1.0031987165896344010938196562159293 GT 1 -87080814743805224042760343972518640.1908513750199726390100307163666596 0.1935656209753432872891846987676598 0.0463275539543326831884232229204328 1.0474350144517736169245374654582938 GT 1 -54013285881199164139348.7086328984197530411902564975542109 0.8427799479494183643144873121706815 0.0610659160330086891016491440386950 1.0630100003560974739257043943460127 GT 1 -18726115417856982006719678.2152744097353441345448422872666272 2.3138840846943305415434204748705284 0.0808698970234686836295136585547971 1.0843275964871128561436312859873772 GT 1 -1798676975075511213390852598829.8371462996619300349347581692488107 1.3347593695759143062885509116082515 0.0765141857437061227377443855374482 1.0795998403094474562000763066717327 GT 1 -177.8643123313180788432788742882652450 0.4104108035803648671326513014839030 0.0218638557358846253176742994432662 1.0221064118216652377619179987894574 GT 1 -2355209498184012768045097614574978644.0159713662852473882204173774788685 0.1631210343807343138251922774255229 0.0418426616318220177060913335676065 1.0427432782041185315778722051886723 GT 1 -17432411692566407815032576.2202238239592372753553856090307538 0.4746993260701508988696356153161967 0.0673037983823387102272387103976238 1.0696757457164288173125526049813078 GT 1 -14378716687653625011.2671084340614948343421980198703360 0.0363307004360475273535067788071658 0.0368007293093443259212097191026449 1.0374949616011897137820970234058303 GT 1 -1676098.0475413040401207665566786890760876 0.8263460396300232862564564357450678 0.0774767580145678988174844383161807 1.0806427088206784616629191888326429 GT 1 -1004647651268.8412753109900809018702868354687169 0.1420907605868747446014834233427440 0.0685901211897347849905835357018219 1.0710558420801172169674247613800375 GT 1 -192395018595.2044271417389674125694914591421101 3.0877029093017057101774421249556687 0.0818368647070888301274206721967881 1.0853801968589638641236826273982431 LT 1 -5700944925595501.5708676075335287978825462432083693 0.0708471412795338003797415317001204 0.0318701870893404376710836630819309 1.0323890964501815451692520990607140 GT 1 -68.1468517785720666458120089697827784 0.3034645731213008520671869436658859 0.0500972404968240781365141939769778 1.0513956580442404329032031791457009 GT 1 -25437865446.3149293820838095750225314862801820 0.1050606014613002656804593719037993 0.0043012701651262641378035744180781 1.0043105472393351587669445521800552 GT 1 -115888181575981786243587064344287661.4276654140316917485697459621390938 0.5605193843438331190626867411736883 0.0397548575706579634844683366476257 1.0405666704209959630289343603987059 GT 1 -690856282926294508704479.2665522849100779860817667677661131 0.1856665348195940658023284154523877 0.0705236085843339924451799505055907 1.0731338713732569592859033505367543 GT 1 -10483622115844456503778398872611583845722501.4791792796623763429139967244710469 2.8207548354706654236552925560269669 0.0034089962100096468846408211732096 1.0034148200770502434362508352856605 GT 1 -163482741849017623911915243888585705221.2438746293625227503221406066713792 2.0010330411952472442842523012005198 0.0296117310999078182282230646336920 1.0300590103576724252455882359418759 GT 1 -4601718187116.9750870494710179523461658120089763 0.0755349458140843744689533527404532 0.0399811183935290498878861021228120 1.0408023263736004876661170708088660 GT 1 -80990891488460817636.1928023975532175137865289592879464 0.2636337982624532923250346258249586 0.0809329763765248237582804073783745 1.0843962282482750272770217263995476 GT 1 -606193151315867876822084709580684086934898.8639411137089756595029248633933629 1.7529315511531937391227440344573102 0.0200753849789686248637057290072860 1.0202796337242067701326141863850918 GT 1 -227384866218947431599491.3259015288941534881720647188805228 0.6641275111978347602185250959541224 0.0198413055236535191674449431315647 1.0200407872881459102832250848439389 GT 1 -33403807899479631073902721811019.1522461115735526674448568811997904 0.5817147133215069856515272330512373 0.0174859433411741942783613664617080 1.0176406283091815840967011244268589 GT 1 -83474572.3561323522572402252205211211675271 1.0045434341231408066509042770493101 0.0372892328193783350726414359190891 1.0380022579036175278497352794062898 GT 1 -11084480593249.6423883645182206832358541471013477 0.5393754217851202144736787268022467 0.0849621103730826165848410514281242 1.0887898051356374371353298932550496 GT 1 -99935.7432857871178296876449090088859896 2.1042611154467774292702564742250195 0.0786333200338375128630078474731481 1.0818971895325433744239911883528175 GT 1 -1763023652.5332386629823645498065905472312579 1.7495021953121719617143247351104825 0.0801831599873122293837837883481509 1.0835807157022178290977739923325768 GT 1 -876352.5836047369445788973909235799623405 1.9194543070366761091892384138512636 0.0074853802360971959268178808643231 1.0075135362885723891339253841579223 GT 1 -119570902.7424569974456334356916438676524756 0.5696624160254649532219402746306917 0.0248777876876943151675692166048135 1.0251924698780993229125490710765787 GT 1 -1179236459826434607150561975852552761955799.9109256620161094555940376769679828 1.6722345644012906790470688108520121 0.0113856969153065288689006516827107 1.0114510101938160528898236805081476 GT 1 -75707804.1805907506542427309110151048974237 0.6720249532069173359529125549042278 0.0214945850181497120129545799082576 1.0217289581992844226945170760360687 GT 1 -276038440102811.6185195070199009955146494909286660 0.0621362540688792012604101339758896 0.0323003638661769520222449267106697 1.0328335331066542513271695664767768 GT 1 -2409671299712877.6219905669810156253644145389521360 1.8220130615024238430779093313186374 0.0687882771948351616912803034011424 1.0712686131611312964165637890542719 GT 1 -13.2869343650856673091862421231616689 0.0806398497349344670972193646333228 0.0512756286133030457575797679290631 1.0526369636683053219458318602339450 GT 1 -1677556026617.4687004608709237986080727277980882 1.5257336356563857514444729555163560 0.0308903075531911582804378974215520 1.0313774717987065710394790854285974 GT 1 -7572957777799565780129290523774.0449816520019058050073746265144889 2.1973003221222484551697556516264735 0.0624709338772223629466137549787670 1.0645075177538848923131743544936443 GT 1 -24942126431501221739.2943366611317429783744340432672444 0.1813483075357499592848319231293009 0.0382633341429470176364521599775502 1.0390146019043290732215755312072039 GT 1 -21695400719.4410109245764048961355460994283250 0.0634724797494531047197974642894323 0.0102582433857849356671449211959594 1.0103112217861104391672364957839262 GT 1 -2135263976770777282.5964737368486108064159517141583373 0.4226602772090263618196365672796902 0.0136832797391267547920359792791718 1.0137777586556175320768506364582597 GT 1 -297940348696411737045647390869.1365857045601783799219977207879642 1.3074548322135019233858214085123328 0.0953654616741716312564154860548294 1.1002242418958393420477857380930185 GT 1 -16846797467659.7295902988236176174062492128625741 0.2440545334658189095898174957495449 0.0705657740921821715296827463556139 1.0731792371993084795648794526926124 GT 1 -172572850339630.9328863112585357846111056204878389 2.1663519105684087557307008789229498 0.0184515287969527770351777802543255 1.0186238816627524705813142691082809 GT 1 -570200370271562443531101836745195748074.5424194696277788622299106376496805 0.7672728309944503861018061294701350 0.0280100628923380154228567369139125 1.0284098273451833459613226851591730 GT 1 -3871538847425230267660382237.5504821489870758611942695759022033 0.0845605233546839813123284158610856 0.0581916146624683545939951454992217 1.0599534376897752800610087745929596 GT 1 -127264099063948790947098008.4687913226994346916682806314387592 0.0365105274470839952602183736010524 0.0431786282379450938701949019142201 1.0441385593273970008946197605688956 GT 1 -1000620929996127.8007197418290543522145924068233507 0.0842650048298925383823112497184193 0.0984782866273947952909662688630365 1.1036711508023068094541900829490589 GT 1 -4274966577815.6693961598978559499025005012311149 0.0947791383459846654083065965366014 0.0275386942711821570493444443330029 1.0279249927347749585696679059461122 GT 1 -2517877440048029151609183724573408118530099.3726441527026775981317819060948563 0.6574012103404450905380133866867138 0.0174859322654796959507502213996734 1.0176406170363714285199626696502173 GT 1 -19994872448312790278664310750317636119216.3464852870330822536038355691469408 0.1316115750225215087079219988430263 0.0000079014242032438845164922582501 1.0000079014554196605405289634537848 GT 1 -10448485.7306169996590446235208630086958292 0.5046012497136910755716640209955101 0.0389381421553095942824479752353108 1.0397165038787159140594606968218493 GT 1 -12596116.3521085468494285026104757917576165 1.2348057232882122346247446633732545 0.0007079345982827213416709314890656 1.0007081853023087964782520049816975 GT 1 -2619913787238093724209879717784033167.1412826129624852120183142725960387 1.5318445340883269375295168527526444 0.0801449963470493972599036925423380 1.0835392260850345126487351607905344 GT 1 -84790420124932253075061892508576365412681.6378192069258742105388779703827602 0.2939340315208462766615112309588363 0.0805894067265680685954968566423794 1.0840224737344331242822886150390822 GT 1 -161095747937651990995597773933090481813.3547953141562780599220759499982639 0.4325102057268301403741803471793914 0.0755149284814557207449137286749660 1.0785183759126501005299505506331659 GT 1 -15197507481171927771306310449879665042928517.1671044035822208051571763230386935 1.8330026915883884634441198629929318 0.0127840225620860271094222557941346 1.0128664413611786553661249163965304 GT 1 -2958116589043270477091722481955998673971.3220771422299221395882982505566976 0.2320324882700773585673032557205352 0.0734046456369159544547788026624083 1.0762383196500981888168602837589364 GT 1 -374606078970263876186536126516304525545001.9157156093499350034760000731074987 2.7895496526521982477677056469224591 0.0087127575499505517215245366702264 1.0087509355408268640384807817496778 GT 1 -324.5120922751710910231318119993330706 0.3555983747266906769628365016149252 0.0756508518634375348842345421260141 1.0786654127651506529239366582553431 GT 1 -5787235838223139322906927156422649363506066.4741248486972620302792023127630373 0.6070623102546938250188382106786727 0.0890242038832023278478496600758536 1.0932389505528463368158144622058468 GT 1 -845439867504087549.1013542768284999454756794287780723 1.3658089786381695142567674638320958 0.0947806247184673792654510138181224 1.0995779610312200073866336767663939 GT 1 -143234784362309971858941.8882853114552686035230392954295450 1.2428419959176566886237010226470102 0.0097443030454526366775213726964836 1.0097920894499065282470460357835067 GT 1 -10404079284924.1834542036371887212449889852711266 9.1298560728344491803641092013064679 0.0026911737071100114968451831857840 1.0026948014250788089168225620707289 LT 1 -17025659137434348108.7928744394524729203129829010962124 2.3672270426589485553336261458348096 0.0736645073085125454472017925562713 1.0765188068293292372716697406656442 GT 1 -1040638980449145408341407231069680115513689.6127958448865139517524757148274282 0.5069171045184900322055670756914202 0.0567991490886341014611210680756954 1.0584760276056870000990308590759594 GT 1 -527934.7901019717702597628030223012001919 0.3150586330056877732545456672215885 0.0341974973648329588766582431148177 1.0347959142899262611457017787750735 GT 1 -3627368083536.5557722335450859168633704474265646 1.1945558950056429634115087333358677 0.0096668798703790853933505838517504 1.0097139074724610825506639537755547 GT 1 -253242578130682978673165421871.3941847698975187348660489221382295 4.9219105941158852489378698646997665 0.0318427053817431751824471813337985 1.0323607104660036306932850188496517 LT 1 -5320719499.3347568371602505378463986087247042 0.6321854996482621396256300631923075 0.0281871912879703413863957749468309 1.0285920766979055080097087029089150 GT 1 -709844933744833481297.4733344027453693045893293683817762 0.4597120042161459306727629258025180 0.0321876602201684684381746983164612 1.0327170743633983105249747336675451 GT 1 -2077600494415453155.5658795961672414377484819231694804 0.0725120506209290707084911440703427 0.0458466227671860604296559349211150 1.0469308476756815919258245447346181 GT 1 -3965555676467116937394329448.9097139110095866635714901839857093 0.2979208485261894925335344220233185 0.0053982838771121824254207378490110 1.0054129072627222021695429204285889 GT 1 -122310372453096041240705231162198540.7817221056957316117180729539181126 1.7985199581366613561410295725574535 0.0198383567277503791353086189793810 1.0200377788044339788830358519086985 GT 1 -492183733120492046473744544251049015212815.0924706192851039948089078305087105 0.5250940857223247172856525404327475 0.0817132534186787577564592710802027 1.0852455770255376486077138018617193 GT 1 -112188650946798235647105728605945908692.9770991045641800381219919179790710 0.0698586739599821444810954738156214 0.0278590023655707197002585693307209 1.0282544257470997884609741715243003 GT 1 -15894480551312841.3572081802999477319918877075629798 0.1087471113289370050757030191597700 0.0806056339042945951686450624876766 1.0840401234341952078999379819116207 GT 1 -1126851230831567798.8032480332718416903561669073206558 0.0987308691312424210132843803064136 0.0353800516488792356859647087160666 1.0360210911224539378740608298780397 GT 1 -190005901970992995744.5724019211836935509338697903922991 0.6596906106451028328707268314155675 0.0500386670646937761062389554045005 1.0513339973892683385357243198811210 GT 1 -5182654711825348147178076751452026300676.6983068622102792185133680195511136 0.4002224542216013836423743099431495 0.0080590974702434182589718501142968 1.0080917475346145969780124388636016 GT 1 -8855246095261389377222778173886607094.1314278104439789421906727826027282 1.0112440387966982443608909577811737 0.0247750055022759570664809344291820 1.0250870710187017517135613229939141 GT 1 -83992632167629939799063733189732112882171.0040805724388252618545832553720955 1.8191079155955336563814171432823457 0.0761995878560832477403021462537985 1.0792592348459645625827329951687655 GT 1 -59270687049116570688814466571027186995.5290420205504263326554194436970998 0.7411299222672968318763917362076276 0.0202008505477707390604529482282750 1.0204076778610877224546569151094049 GT 1 -1131806095370.3293293852597413518483371150968315 0.5907356035232673506979757884592438 0.0580524932741844498708641831514963 1.0598057313026335190653175479302209 GT 1 -22412904237520381613730.3551701006983298932726424895733964 0.9655314235944745864177688418711539 0.0533216253440304259541128765889203 1.0547958689771390264166846303146966 GT 1 -19588204916031710.0771134428767794033785081593582493 0.3524226685708257787107825294957057 0.0298077899804365376353912309453856 1.0302610724554061334865649274866159 GT 1 -3041110495287083012183834981278927363717.5575117644498295582610983428834243 0.1462736232868664224653378255480041 0.0206466557515546236488539364088104 1.0208627779239074855484165045454432 GT 1 -245885704701259795169843.3893645936220427833979341087390858 0.1843600632602375550017125397605298 0.0230816943624867613868114386366517 1.0233522480020145650258125581522346 GT 1 -376030084336758400733.9434386031231429935645521072798681 1.2180309264349291696173167404939827 0.0011295846238765148645039493282903 1.0011302230854306193709199807109937 GT 1 -405870819579414045475976976042030507438.0298315848294412140312210858369405 0.6765808337067749939530081319502754 0.0366696762691867007658657317600874 1.0373589107035141682071887099069868 GT 1 -1198525488614596652101382282886919555.2230468108590900419189419694007932 2.6190954236717576829075645914051183 0.0910085748079673705036188065347016 1.0954196180812387482815752407026341 LT 1 -68121491886715032125456516822029400.7596735943485061372736369877026581 0.0313235057686294864976140486974494 0.0134045285416585276020292642099719 1.0134951802413393065030313564341853 GT 1 -1.2756582479476301117845378254992276 1.4855237369896049466141581099115081 0.0575870352241771576549271120413180 1.0593117089894792467101022957169416 GT 1 -11629499480469.4087628601466301643524116124564513 0.9052117190413381063539009143549453 0.0520653061498849537306115206808814 1.0534696674437866782944544795503905 GT 1 -2173330459360575672.6785914635099653233009387312024725 0.8778751846657234304767378580946599 0.0848951326664292928628512217666352 1.0887166111660102123702309639860733 GT 1 -452327469424837635591444.3687855360854093029164464796573085 0.3395722939125618178492090226351610 0.0983358592947822538187851184691479 1.1035131778095765885870074526569121 GT 1 -601381.9233603465288417417494313158283552 3.3755040343957102582280220534371876 0.0849597190278604426847901869509175 1.0887871917552249572911065918951756 LT 1 -2190718637827277560215.0791631325817424715279897865480253 1.5829977023943795642586369383275498 0.0491478521294344458900560996706444 1.0503966986911352883345757909877059 GT 1 -300030.9826127500368063277385058694796483 0.1194905525745766478726841361680181 0.0043516023352718360248717769447103 1.0043610981146308072370310435624273 GT 1 -22546866240043886969046072.4244230582081597517777497921300675 0.5000693428922925078147993029213048 0.0012664450577818484373226610604091 1.0012672476770444027928966137950069 GT 1 -2518903700742447900188044473564.0015702981493996810938689702410833 1.4120345087146210336832816766102173 0.0689762865539272516491596978315120 1.0714705310884470135212638555391306 GT 1 -231.6881651772447178309629973520135583 0.1205168932519816294077573822360757 0.0797960785569140230832269655105859 1.0831599797581277053204387893081267 GT 1 -56215170.3108233131985651420057357535303021 1.5213273406979422321933439570870854 0.0160646441505056213186065879164494 1.0161950793628168030014969320923871 GT 1 -505595591264748616099329949.4661121416501503623116793097751074 0.8101725992611322466683793503008435 0.0813697138446093022243852574700581 1.0848715377282233981525654281843311 GT 1 -1424481245261002.2393414633626074978974141971545721 0.9093824368590110322014513636551089 0.0982733345544046388036575941588226 1.1034438364996515129933276221582307 GT 1 -2242028896450946717827750952398.5075774177246216553572814296671779 0.5368284952373083357524840363673359 0.0038830515993398695957999880024567 1.0038906102175492411063653923212704 GT 1 -79598226527303361785750119313702082254331.6704110359921773343797046170376155 0.2743768142512554332941272326102186 0.0226836603298866687077898589005835 1.0229448925812518433765016288786926 GT 1 -4095077075416.9554877084241888803317530462752328 1.6959449864323312064304112737569722 0.0958348195096473498860027647305007 1.1007432135001884492859998252176795 GT 1 -25029791583896266.2769055360511328247924699561130578 0.8160938063537325112322915937477969 0.0280974750271953176359548036042184 1.0284997625001586030442806230869035 GT 1 -12970914440309826081614269488338929487736.1551320527286153303315155608917572 1.1948734164557857765804833671347868 0.0284873464631718544881283002620929 1.0289009855074890734737655449786336 GT 1 -44418949078819406575820611266592928953364.8823456945181516841077228473130329 0.2010895926464404482032530807703341 0.0190176517698197111610739889543066 1.0192008132278152459210063299584089 GT 1 -19033877483800524724691529704431533.1240137260298972102071357842470110 0.2882336184162415534665338359872592 0.0387546102232267082055305845183312 1.0395255542447615765921972623996072 GT 1 -89607863171169465489.3831605140312782054230788900107927 1.4560836349287076144184406515845642 0.0803299586858665091565636241715556 1.0837403240151186887592479940529771 GT 1 -15980220917440737126936675.3754081340173913375310581737148879 1.2392302620276172770332433280025164 0.0634621834941416146519009919907534 1.0655653772342983352517914136608557 GT 1 -3510930306596288399057476555451993028412.9823377738048708234275303716498144 2.0598845524647052241664267678251792 0.0607955707832535760067980520713276 1.0627221139731448257536358446775679 GT 1 -13730.7336759058912083467524714733393753 0.4873044249472172092919480503266891 0.0667438471702127961296429239964251 1.0690755683028954470154693566359822 GT 1 -251372250909986833748471834924.5058117655876152581601928408198712 1.1110691638703375991720693416935463 0.0952434581562555497740339240004012 1.1000893860104112509751936110266098 GT 1 -18325331941502986698560558174534182663.1692186093275903557822591006134766 0.2745271008854328301713781426209809 0.0024952605982084702850125016021426 1.0024983789494143169007546906589067 GT 1 -562308183815974692982561490179399506195662.3930564500239118698501924272397659 0.6328410714153374720815655530255694 0.0057798359028706716487808057206259 1.0057966037960662370533091172374132 GT 1 -5498450577657283157854233196958.1836206292692992862566992350854429 0.5930055662379751265463454395374990 0.0540060087983578447445204224300262 1.0555190617457357879462324564502009 GT 1 -16266305279011739571492148112.7449668030023405909395786216900978 2.1652350788951789533236363225152388 0.0423601925920127834507970546091057 1.0432835556274571291865549308544191 GT 1 -57616028714998951.5419289748664037676084534428757219 1.9260559558741324951320159508589681 0.0683989789067242697927188648629320 1.0708506449084945536211795906521098 GT 1 -11867403480514053008589.1523414518987049549648965251723329 0.1933992504952757473314939272452098 0.0736946562217541228810505578648010 1.0765513537889457472521119853305338 GT 1 -9301478721957586148358.4097343381340609349707435741075722 0.0759472707523723545337915196345064 0.0711017535694244509969814455177597 1.0737560763818362565095667025062090 GT 1 -491752048360721027.2849175797141540389878713634570283 1.1938399418135877814441823161028138 0.0772590442862253687701504521126619 1.0804067385681539541247769265095569 GT 1 -86962608881549623219004153344199.0647531234232307330575205483369675 0.2020022408777628233794080933040419 0.0919004296230025192370182816860445 1.0964012473874491515486354687324442 GT 1 -757306063059530905328.8151523675830599872474064017440336 1.2405990840071986786036182692846874 0.0279456708737087782335624251541653 1.0283435819208674405048858402460562 GT 1 -18501880501.2233215175649291062710261020146687 1.2288158300207797847313642788668372 0.0092201483420294518761026599313377 1.0092629170016669240669292669305731 GT 1 -1136717199070335644.6236248291783236093893771855898795 0.4453986473855107706561422903885103 0.0343195403489520620088693729604998 1.0349222866024596986384954754271655 GT 1 -2.8178483283424119183875880506799365 1.2125410582517083279758953572675687 0.0666148584965670984439039100188267 1.0689373642738272008924024888140561 GT 1 -1016293662734721254671248949849534516.3866819234618052580957757859308653 2.2692414506950339197121697974426790 0.0069641424136666041808050878988294 1.0069885052300824597935895052797423 GT 1 -455478025897421286.0405103775435982455113188682337528 0.1463995191527846929383416695323412 0.0894993706225244913572981917652675 1.0937606885709181398254293303740576 GT 1 -10505352168404117883960.8693740866641580966910166258640722 0.1998257231379868097316031750923449 0.0974069170398638223653454053374556 1.1024834550795621757380949802956095 GT 1 -847016455543.7985356759132415173515134483040427 5.2915923553338389454338465748069179 0.0534585841090466755251880123946386 1.0549405524058027429995155749839713 LT 1 -1063128783360668918045726053376990.7974237477730606032001539050821700 0.5825514761089644428618574343895514 0.0016631063556903420144225503241788 1.0016644908523218763236138929013009 GT 1 -2318466191696282952323573436.9130482119707311873105967401751606 0.0229180307547778497550203638338378 0.0057780288108900359307243468497019 1.0057947862003227470553994775356415 GT 1 -906327853508506276042316404937165.9028426905196939533848322327513706 0.9165995736892546372772028752829828 0.0966680697535709399375822343444596 1.1016652070104417844130099978310351 GT 1 -3685777075428035027.2561350051920688110543205199626875 0.7304338927061142798852027356548220 0.0117200086747625892566597796744412 1.0117892293526130434413319747557535 GT 1 -1747105344654089543911684417.5962711439754728937539294966434132 0.1365536631452454749173018174637017 0.0498615389115689743879683465089176 1.0511475564936953840119561024310942 GT 1 -587254562013.7446478023645506225518306628186113 0.4427764629252929442959428998045693 0.0785243754175290739863276746666270 1.0817789541130867545447481471250314 GT 1 -1483709618224705736444043287571582021823.1429298046840848931877407465243364 0.1684331431007753600085933734347145 0.0405887802846937509696388660875109 1.0414354954700394514390027744316817 GT 1 -6.8059010998045256239078510805826614 0.0696925819454960677710433660793897 0.0998119394960678072333914531780196 1.1051515813706344687105232059412145 GT 1 -481790261794910619019836319789758.5287772139735705065671937430525987 0.7325173227754943959052541688567148 0.0369214381959701216175691641048827 1.0376202902373267641545571205346031 GT 1 -47572100779410393596073485383.9043896842125456272888640217911951 0.5656493736550937902948280695995876 0.0421499189177216744340282311646987 1.0430640048207426288196163544645547 GT 1 -58946955062670414523211260410159096978662.0540042130835528102545534250219101 1.4201715949660465196907089825940316 0.0894232988743880747038138450314277 1.0936771426973778338105649875679266 GT 1 -9337305320065072425828389626608516161826186.9072844654082936696955222451007684 2.7214818649152303900405311619756759 0.0677035599938369794658548809501029 1.0725617628815734162226036820070593 LT 2 -56209676458277564087.7561503245913035642503989355609991 0.9085651202720084989797104471913476 0.0802553405639533683130901003758475 1.0836591915527939722440647221892093 GT 1 -245095572815192828631327.9563817841861450585723163843812170 0.0048615390195928117714451412531146 0.0142594536090322692133114096697463 1.0143620965407726892769926528736273 GT 1 -294387.5513342996681019538952744176124322 5.5776651442673496182814224474324632 0.0491795702768483309756196540745488 1.0504300568494118944031234780070631 LT 1 -13299715174794826837230.0864114209695192741241630622733399 0.6289168489166723155046770288910150 0.0470697068188500953304472898105438 1.0482135226189251362262890419544432 GT 1 -1224267392.9410711061631119383257396515475613 0.9361381084086369844997400011936549 0.0488372068923088680284484992460389 1.0500700501110479621810014313547883 GT 1 -1228249046081897864178836355057651.8327150087063619990843641833724396 0.1973559767165573838771491298372688 0.0791785142841070578037807271329391 1.0824890880978941239088764924383653 GT 1 -15.7384036294384419581106381048488939 1.3152247654679443130018841538545294 0.0600884375288776263198812195415690 1.0619694906216507608670627206689199 GT 1 -5265886341837384776.4979738908718393199642877654300144 0.1326697773521340326970481109697681 0.0468625636641641000141738692181521 1.0479961713125746864403545460039919 GT 1 -66280891127506528935412619545570.1999994767285676153726799314863574 1.4603529646792790108756284423260694 0.0857750396105278063440240846164328 1.0896786104715726727710608693070789 GT 1 -3867681991204050442.7146185599932473414006190290473602 1.2738924322196016666761278492000922 0.0688553019884235356650643265944098 1.0713405916426594643497047340856439 GT 1 -133310057378576531291173223267561946992.0965716825607494676369828083918784 0.3092210066862399358236656132386095 0.0807898025433716656663962716663798 1.0842404586703236300723296437596320 GT 1 -17922183.0514800250307011693041536019514269 1.2898320535666241256366013596763684 0.0236529610051593450130965365917486 1.0239371830294348154656393317396189 GT 1 -42794356923740442526071365242996237676.4116857778268435245479729755565194 1.3476837339557850423597200269470113 0.0503542944301427726006898865924378 1.0516663054529422812366102600219848 GT 1 -1528913661592318307552109.8406169102673065868775768225982817 0.9030963052974103439718715891121906 0.0937475619139653929360670036131826 1.0984373825150400848307650389016211 GT 1 -1825115975332972562720.6290800559511217864325218792988576 1.1042293233242743504694359715627475 0.0903462563054944078067606830988461 1.0946912533148898474869775303053121 GT 1 -1183857364.4192149739751538828249314819945396 3.3114027801343402769082346979916215 0.0984759558005898532852045751967714 1.1036685653695243580540936701661661 LT 1 -8993517333612183637717143247.1978909708180320331989377621104472 0.8590321642453001519107066441181161 0.0781959865118667856001830722737715 1.0814226447367402826371536021673112 GT 1 -3872283203414335103950337931227020118.6003798394781124422922962886616012 5.0118046881446585201209918625976358 0.0496031623083663219828916725717864 1.0508756577239537283386424067621016 LT 1 -3752.2043100123403498221619840779082601 1.3257891970830701931524329508687104 0.0340448993378482256892569711361462 1.0346379254956368811429604456943357 GT 1 -4836286025023228473220130744336138.3228761983537946222385782992025891 0.2982402668275086525863885202479015 0.0172337774104696082965974420402629 1.0173840074752465083179865664682180 GT 1 -86850675617613964363544429.9457891671744525910794629197862501 0.3238828064562622881645235991463492 0.0378244654687190088914226236680306 1.0385583766340161589982383368627736 GT 1 -3562501007265.4472128651491491018912182439881696 0.0215732626540708470784874571078608 0.0841086112625132808839129562233404 1.0878574925854180866752052035397021 GT 1 -30592180152256256.6249959777288128929924226816285576 0.7064463649408215165586994808034293 0.0357010698854331884763895367466322 1.0363539389607964584995182029361921 GT 1 -3188880602598.1584579629833068436541986678905993 1.1366117540583631029786128468130893 0.0345459571227081157880479247595220 1.0351567775449570718847918363289742 GT 1 -2353723275267929029.0539771816396061506087852001693682 2.0470737482018471644789822197726611 0.0368496215273305460013487312343781 1.0375457231210601630909063207638847 GT 1 -657079006406678474522.9577742807612699755565598615509489 0.0004122228686790041943518081440240 0.0172576485374731444202376240491071 1.0174082975010646074071795940126218 GT 1 -99963.3819436878198901495098486694928050 0.0176056129319024287481996210857432 0.0994013188219318334740630139810715 1.1046955354971857273374397558438180 GT 1 -4498556145383352073287637368543.9562707825730860926249687234325309 1.0620753578742321703340567298348015 0.0620363478989400330021953635217691 1.0640440811520387086951177408591242 GT 1 -589752207452828043859867.0616923224205590639294857886038911 0.4411255060971562177644541786190159 0.0621752112016734460664074343210820 1.0641921397496495402020033656162378 GT 1 -92266721273179704750253586899256774922459.1965137443354535735386516538195086 0.1324163645159511901989589192043114 0.0428943728160783792374077476908591 1.0438415203869219502439926963669349 GT 1 -1020372581929220318501.0139754939517382206572729921960023 1.3764198464971042324607424117921062 0.0003156081041007549967710215809872 1.0003156579188200038102046656099638 GT 1 -345.1711299075560495577696966814572626 4.1463962218761020599213157030469063 0.0347110428429670849900935147775957 1.0353277849971745259897469843949982 LT 1 -3109222084679099.4842378955750923651712893804800737 3.1307887676333421682855787926237018 0.0889990173445690437394159353031249 1.0932113030669636014144405655474866 LT 1 -3036497803696013380399332352.7696647357609285112712283259238104 2.2183996977412177608843627933152655 0.0731819972482169700486219482788788 1.0759980619775015259989073054135766 GT 1 -28689648648426299267830685433764.8563380588300796143630990056265490 0.0492731576577811587944333664589582 0.0143515125411330096119393229770172 1.0144554915334270605437548200278261 GT 1 -170474968319585.0767628540685187870225035898540092 0.0658612830001448690651156761425837 0.0968442037953566399251060609502175 1.1018602086589609886182929938697718 GT 1 -4312172005961859026476189153565.0460169489490948054894796209811608 0.0048225552019315088049436350247262 0.0946796099579520706428751676471238 1.0994663757873553760104676671759271 GT 1 -9162368061544322496642959643.1014299252842095600378475047574421 1.8939786825899363771157870724414669 0.0744978580226614756830410204001741 1.0774188325711134008596163629049727 GT 1 -13423611645858441731557539.6165542693749968340478990613061711 0.4014107057838892237076113999489963 0.0773262628067643400089054157468003 1.0804795877990905648612676080495598 GT 1 -190064.9079878906679528575847945219188825 0.2861803690229273167068140495023994 0.0313751674079005841726990706780948 1.0318779117284938780782893229022025 GT 1 -16229407150786186703316438822493502059.8447702677124082614640760217786408 1.2852420820952246555118358298371544 0.0808502717905784482968721556655697 1.0843062447510408568701308985662699 GT 1 -2726666488997902147164145757762161153149195.9873777263384720288775016476662176 0.5790884948956905728490236225990112 0.0606111994739799680005409768590745 1.0625258274040818519903975614443274 GT 1 -3584673364334485249887144194882165624.9818473571499586658967667437647100 2.9218163921799187842853928181474607 0.0293112648604936326919551283485595 1.0297494232148762244946051197198012 GT 1 -264354988.0353834008361773434893932284590303 0.8115936660874868285852213361632819 0.0193897075849566944523142665383236 1.0195801537819031219755790798607700 GT 1 -45610.8343962524294466245559288896933562 0.1224573586660906650746812647280310 0.0433418806038240057457860080942564 1.0443091933655765262830324644844096 GT 1 -2008443.7053376337365572017203878026888525 3.0448232248405216451902947139661495 0.0014669188599111730213712368569456 1.0014679958387378403186994467189812 GT 1 -184168121286944758225284796.3363092457066303887340791474334305 2.6431337621903150026938835263601423 0.0556172231495205916680171765859535 1.0572237110712588106722380728491483 GT 1 -80358613970728621386.1029207204701904703826820288664508 0.0625166684329383455342634051868613 0.0730582716826912098079403587204745 1.0758645758912133928960008658471863 GT 1 -209754621833780295431575364588312179.1428324943672396417270995629277146 0.8207740452447856134623582236019690 0.0814955574768792856997084949530194 1.0850085376232254756542990928186929 GT 1 -34014305105223958335616663872602888979.2833561574934988014562673625107077 0.0218353581411498083248869367875656 0.0952595557584896229961817212591006 1.1001071783608360219456476188638166 GT 1 -4071105225011087309473425219821475.0513845993051726955255052406643592 1.1616377666409516673144543073161526 0.0140935093385087651620539084661681 1.0141937659341308196289410377376638 GT 1 -620736859326817687037268941870868918734.2562540726998028427251698285103047 3.2087283268136458009801462105119443 0.0375759071318010637658064691460145 1.0383000804826906830948547631913280 GT 1 -2185699016.0781128740836944382365120254876877 1.3153650730726580050417376108088580 0.0268965277118050851544657281206065 1.0272648588857733415083268062769087 GT 1 -11252810624438842318030731691962494224.0983279259447349326042747960809556 0.1446615935847961626979273215493976 0.0356716649094444504350726238914674 1.0363234457944687605416944849161457 GT 1 -212.5656112547024408228749318012934146 0.5986344914157749876467537594174994 0.0041167166891744461871037572827003 1.0041252136951859246067023944620861 GT 1 -30890.3264982263469779852154057395649935 0.3077216376239317181083170929983583 0.0221097826544380411780766567869609 1.0223578674509716477273069319309354 GT 1 -131254037558.1472095888028855892813549064524707 1.3275486435088394840489891340610459 0.0608866803921566974726716751752427 1.0628191258967467732530402005123064 GT 1 -132133793620541589.7816047351631787252336587947544332 0.3665306705311123357643209902201686 0.0035676374653945213753146084013237 1.0035740166608940894793411534525610 GT 1 -87165737980255421358.1953680360021470916856742098163937 1.2510346629576945950201316509492400 0.0342516527091232400834006518374146 1.0348519887591089337076478346150516 GT 1 -5150176669292028987955014374592839919150638.0250530669202326198914688657111356 0.6047391429416261789376392994103375 0.0809570286728369983529295560892066 1.0844223989305297563309068710574774 GT 1 -57171077856344432524.0825295576937122826489089983952366 0.0505720035587567401234555038450810 0.0754698062921080169308309569562939 1.0784695691881137997170323466058076 GT 1 -32994834965536053156648.0512795939832472289920592519633926 0.5188636926544265988322196010541112 0.0723844863114504913438567176781374 1.0751379491949591933404389536390554 GT 1 -2438.6435256508279941897635043448744895 0.4354593935232062546989560972557113 0.0523981149911151908605978768909247 1.0538208174541445418428326614440456 GT 1 -1034524150089496306842542917911277434447744.7494628607589246212935558646415205 0.5006756505833316458520067541954078 0.0004630660648400057761068194798353 1.0004631733130401549238277277131802 GT 1 -929.9770967571226996322053240362286427 2.6006555288259068199418049177775813 0.0833522932306886840939930862827087 1.0908193505251990273510072588569999 LT 2 -9897800764860521649432.0864057527358900400344506987174084 0.6922593055623423350755982588171343 0.0506671790760488764891478152635068 1.0519958348755999839230329202853309 GT 1 -2832106958221397649.2417828653422790956615914179874704 3.4551387516550590559844343724375210 0.0827015096337090548789489099340173 1.0863223522039645273794193787462495 LT 1 -114976067466944315762134017024708270073726.0880558456307894097033459513203678 3.4323224549047556789823217531619519 0.0898650307133972722575949659858053 1.0941623725718875769180817683555842 LT 1 -30067064672107374810.4039222595972522663960514872462466 0.2099683694268498390636896638110512 0.0230302363406214121099006403351050 1.0232995755662841359850475947578019 GT 1 -141338596055598656289824611869304.2672415080028057579836561753848811 1.1672189226612134752918371403811745 0.0157411927430795696230432078966390 1.0158664010073974344056405024686754 GT 1 -547192884510.4238941213149377834154480884226777 2.2533252955311267829566655683384422 0.0776915444331490205366898471077324 1.0808755608687396237377694577826005 GT 1 -59040318977434432452523085947769948.1049354442537970672840449978459190 0.0510749969784460521609188821043851 0.0274115672876914760221318766746479 1.0277942742434590609159647230431125 GT 1 -79809.6782259204544567173735315894525401 0.7758597224661750643421833227978833 0.0336387518821824199304298223198547 1.0342175518214160568701561940024973 GT 1 -5558064291.3062556896049257148997636036480682 0.0564835265646745539399279143375684 0.0271228938313940273844950249648325 1.0274975088136461869649639365846382 GT 1 -16774735943986546304.3973385142509873616694933447842321 1.1730025788078635494916022038658966 0.0829910671052599169398596175242814 1.0866380653393791117292960512694196 GT 1 -4875262882459538562529348100932974837653176.9128389267302627895855738190481547 3.5222959046701832173739323179923661 0.0571067139419703513899596389163696 1.0588021670597406323806755579210595 LT 1 -79614089014124366637200.9018920643754175508479072242962647 0.9576307079344057098257485625318921 0.0462303762797521581474556194360842 1.0473331212659149999515115943552591 GT 1 -387230268396.1891950087370444021331032079960707 1.1004183549637702521070278438653734 0.0545462419573814067045043637173375 1.0560902994909284011374317515409413 GT 1 -216721888.3188793617809684882495952930540297 0.3911602150756287093700586051975516 0.0657849667496473199231544532190909 1.0680486389323314939910470132498469 GT 1 -11476604441454303092224127107346924079667.2548959777660843669632342461137224 0.6064178538508844319757743824365419 0.0073479150474432082247058805493721 1.0073750439508285537175249040535154 GT 1 -4168509696795.8435347617812078371415187620713561 0.1589079863550499086127310427881448 0.0545425277835559915468897451134873 1.0560863710422884180989907969359281 GT 1 -1013940741225038491781671681019158765.8218986898372833831081370556081591 2.2871197442618669248254515941733015 0.0377119462520989304794098032419196 1.0384414409669205751430206410944879 GT 1 -518054447116848978262274.9557667866220623158236073863383496 0.2871091117521939715101343968257793 0.0887092154055947001755238301576909 1.0928932399042738663534990584846388 GT 1 -841.1091587921657299671031515943267892 1.4744949127364136720006783995381541 0.0136928715773324445094853205523872 1.0137874836097309750077602496245469 GT 1 -3903213376437315807930901292243.2669506879396375603486121772508973 0.6468226464079264765332161786536419 0.0396799494780156945350043199234074 1.0404886641206056675415530842518048 GT 1 -1306966471298015017873275972001660115.3716085305464242685509972114837060 0.2166650668170256467776947424362157 0.0856231239767488740407633463392615 1.0895124555097834461399059278850711 GT 1 -49369.0769990629535569173539029335441054 0.3597980673083831993201916078260947 0.0092434481707665412158755313077383 1.0092864339339798091522317635394984 GT 1 -9739432.0113092597216623994879352891825610 0.7113040902050947717061042700818101 0.0612911998451884157504288207871193 1.0632499648511203249663111299515679 GT 1 -116386357610651383451865388412203372043.6439175924286502364175299483393652 0.2563565084492110060777136473197399 0.0478209299796007256526375973537884 1.0490021631182019912403629003297643 GT 1 -1359872627.1613739478673314004142921332693385 1.4369077439560341182963473865746797 0.0023709223902826841359999698336563 1.0023737374772217374229147169182010 GT 1 -1273466831099371655684415824890794.6639015446576237035124091949399624 1.3685218086566143637945048094228051 0.0160996087857602478658490723492837 1.0162306154946412988278542620548926 GT 1 -5592788604.6567492553515099340024277001674501 0.7190102934894095424525885033239444 0.0268114583454546907655380412166082 1.0271774420276707011556421572419539 GT 1 -869283.8060441862808633501902800843061826 2.5841498863811495536993826361747262 0.0389014137917190409809665326612690 1.0396782881681505882252754184988704 GT 1 -1297849452859239221946.8803791312597256130801982970809643 0.4896624956081841009366815359832038 0.0884901015136040253799755135297838 1.0926528253651749198294775058819529 GT 1 -45048646.6985778642018834935766870248127862 1.0321376876244520846052008733260435 0.0955822629333379537934355094267364 1.1004639267995353403617351736855146 GT 1 -804566078870415615541222425393597535438666.3884907013103729876357675395891288 0.4921140382985050960339573559192163 0.0524031720989975154710297375643844 1.0538261542115493333770846015756971 GT 1 -10197864343569975484834840835048035501715784.9065473512321526491822562711121070 1.2938210437478405161118895337330501 0.0300811259626543788459552119893360 1.0305428459953570169469695808513111 GT 1 -11940012098278938465940669.8180254975141955971671585437117488 1.2242405833458634173154153349783049 0.0353829082723655263315987448849912 1.0360240525247357187799011935625084 GT 1 -6773.2054484421422449804181608827475527 0.4478912531537412549469928954974570 0.0869830532447859171412281442733677 1.0910008369436456387240407525384358 GT 1 -169730450.0410763733169674391702417545166178 0.3101050179549107661682740939320413 0.0051513102461716726575592104354768 1.0051646239866177260951038653393585 GT 1 -1204615592406870619500728475.5915567723497971107652341611161392 2.6965782216020545703790462143079936 0.0905274735281128789565413780599177 1.0948904887678541361271265009487696 LT 1 -288062396067640148098044.1824043539538133462811599990091255 0.2703813486458484215796238813352081 0.0903800939398406184357897054044042 1.0947284523743657825161304199496011 GT 1 -4497698013764.3540735071650044449423570479588515 3.6833158795099673600773413221089331 0.0060896026722204075807308098139680 1.0061082199221564391716313060145922 GT 1 -846172119666062897779152.6837254336178173636214498903772990 0.6694949850162905173131831935104854 0.0794303823036232363219595936841381 1.0827626508631537026963146963635583 GT 1 -41136743678418313367.6532727859479785502302714156164554 1.5008266366265633814324081438951044 0.0265457003153696199601314265566988 1.0269043996121926625303064400386933 GT 1 -32363406673318773723213581570200645396615.3654944922426382028137543010718469 3.7775921643036927001952383672118325 0.0218307226173920786260091646717626 1.0220725386665544934617319633106210 GT 1 -3006432254123935985164450029005.4024882828001409575914731614265141 0.2833488548628385832233804674117304 0.0587731774197889828599811870888089 1.0605711242559806427240457498732202 GT 1 -4404299888449865793016698291369096076944.9647416006900202366903403493933042 1.0076040768619781393169082044482954 0.0889762691218726508702065483477449 1.0931863327989660198590407386708177 GT 1 -455844500649966793594.1526437563012850451110619198854490 2.0863403581820064505978683587922697 0.0456457113321642583826524493733825 1.0467203047060580857135643063280515 GT 1 -76290937842690215705160.2581721877123830179521715166925692 5.9787516851364672522896915842463866 0.0182315270090442094756668978164657 1.0183997693109694441993261896658327 LT 1 -9571753065619227153809723823507542270.4252462294710772678443603450079470 3.7782441663027283299159229480045346 0.0976172929260306528247478796200269 1.1027165616821892220400219251978150 LT 1 -1429592471289085.0116915091517680370236261186408038 3.7621738706381857463367502267139788 0.0300991899324517374360526080081091 1.0305614703757011272696549508571051 LT 1 -35393331393.6082628814633447668408107274422781 2.3579927947482403229382572380249145 0.0790654324833319372706675303922839 1.0823662902922686238570626894305802 GT 1 -300495270547688782861550059277240202835.1858370455537354892516771810203422 0.5023225827558536054603477086250362 0.0956713848653333351663420766161838 1.1005624723274464699551718513611122 GT 1 -1.6230479922062478436241728057292600 0.4546637824225705113651972977688824 0.0346182656579130767661676318390325 1.0352316762350392460805294842677445 GT 1 -389485505614497978.0232740859009314637256365888745742 0.2275822628717101626430274077351598 0.0112186840809443201055475703445064 1.0112820881701660856161028309891232 GT 1 -114520707649457685.9857468900600297844872190621910911 0.0216222681793317155404240156187758 0.0766673549333548071870342811732670 1.0797657138843260933543488572146579 GT 1 -1.3344908610714552216725484346228607 0.1201420035396281193445789988325309 0.0071235358286277323974619711069844 1.0071490293514719900677423717983789 GT 1 -377762597005.4309271953598844737774111923334024 0.4640291810595072316160305241740839 0.0761753111986698606550044062009120 1.0792329560760968397518927204007642 GT 1 -113479274420604690231063121.3133746135674814558385876372487161 1.2278752718210632316557950787249247 0.0284880714814820217684266496448417 1.0289017317855514954983862460331630 GT 1 -783951392620317261781289936812807.2193013691741166782960055540866147 1.0642229098415101186769107406628527 0.0779650066099453061907354374109536 1.0811721023604611318664066562152470 GT 1 -1.1402368474894934975463825479585953 1.0127283688943840030924923709590689 0.0226637105702117704862736272657304 1.0229244799929703361884708905217521 GT 1 -387858143445716.1800601639386724536179591820026049 0.6875858703908659865881424360200016 0.0896916875098332256509380824771579 1.0939719319184234845770548298384536 GT 1 -63824355733065.1510272999051757892836222202153312 0.2365647520202755593605872504057610 0.0504984104375970074835666566827478 1.0518180746265079657564518983081268 GT 1 -12.2916770568962690843346447014197150 0.1178783003806032277876676438746313 0.0418179941003753577847917215904684 1.0427175337747492672913034285989029 GT 1 -400637094977648956222056524085204314309.7886148196948749697129233564843648 0.5158414996687707667905987347734303 0.0439340450803009847616183442214243 1.0449283778086937692778462959331311 GT 1 -9625263597278754324.0068143496555298930662960992229783 0.7017294949699148589854761773777254 0.0535504478292644716735534759037239 1.0550376090973980253720778882819416 GT 1 -5037301.8141817358809381408291444316266922 0.9547796658799056251206797899989866 0.0315063097163221196012148961434084 1.0320133110931411158209079691350375 GT 1 -2394919386.2338189086069033725216050509604097 1.1745489520866980267756280376816677 0.0674665933863396651088359430953258 1.0698503033190916782092917875215765 GT 1 -31942482744273606363.6359423975374301484518153837110085 0.2201000855460343125778904676256666 0.0780143199240790238399909972890457 1.0812255869171746800136724218184224 GT 1 -134759903893217513314458906222456221247526.3299181752404269159036640576582623 0.0781875348010507202185499628324007 0.0301097567511650425089133951878580 1.0305723651766595541330540121111445 GT 1 -56310780367619950901410.1359454793462105357270611580407728 0.0587898967652665301118302597386707 0.0864984454293453803769105852145414 1.0904702013914080414951926484775620 GT 1 -26293669774560916830604994.3735870571050722927305712297332133 0.6741366381352856805201156119113807 0.0567030656089253846839277066019916 1.0583741632085587566172228173992442 GT 1 -6389.3786561710940632470736245924788821 0.1512958823561229417033475021974471 0.0802159739845701935165315948971809 1.0836163908292167558548566118124983 GT 1 -109118832705355114.0302404670801571092794630025653058 0.6070361442053024429766707211093832 0.0842268271609761681235318902359222 1.0879865728778546876797207062136370 GT 1 -371914834.7841436366921730620434613099952663 1.4988903206590918267620389148971206 0.0146916779763067047857231577601446 1.0148006695067997976596729209144905 GT 1 -2249219742551302549839596693730.2713181655299361654688466719788167 0.1546576496419874419986717861142359 0.0769624052258237863223369256409684 1.0800853142424924961570132916878479 GT 1 -6501350640923103958552268297523154.0045406078487163360957264374117548 0.3092918382572734912092772871881219 0.0874509403702400983603038632021360 1.0915134309929022676779070922399631 GT 1 -38874389830853038253158769708429332.1738146879229822291688404250893298 0.0832926349970036290332883497676765 0.0351157737865993029320364090681368 1.0357471576763216577001439614765959 GT 1 -846278222331.6572704194811468588019221706863892 0.7749370504441280559217196828991233 0.0596143641667284899891307554890437 1.0614652369615145517077810205415643 GT 1 -40557778635616817051221284.0854657955315270264830131336578641 0.0853197460481849410728340658819765 0.0138275892230172213023367259827087 1.0139240808653343585125025566435767 GT 1 -886383285136222932130582040347.0805257030859509407910947049747459 0.0432177104030472657651884755056139 0.0366690699404321896455190489904900 1.0373582812947342715950690447845914 GT 1 -146887688407103580650.3231249838413501925249735874713984 0.6753535609330031912490952484600660 0.0101894612711455211665252329579147 1.0102417291893966206621902370154505 GT 1 -143228295610449.3393435323676669801343052937268525 0.3165029474024699546620040531545105 0.0057639142608552354046622018772042 1.0057805897228201322290974063477890 GT 1 -15408111895074222990015.1533384535947068125803025800613274 1.4597099668808193694700452983809870 0.0818606125137260864086697132848931 1.0854060616675604766831891562814877 GT 1 -6783113576624323935765714652744023724.0412816539257744284548710978177726 0.7254594765189830881098998925084135 0.0874090042672768445390543138884527 1.0914674771464043834623137794640125 GT 1 -3395893559401752765857487233719870852684377.2973859250564780135652019721457239 0.0584591007822135964808923504656001 0.0970635775773777791729095248389490 1.1021031351062790620468244923250042 GT 1 -963.9410104881140646429045327950126250 0.1775812407472811138395471348334181 0.0406433885298911348996857523384295 1.0414924155875488123462786670449158 GT 1 -1059884372609235912739624733287934133587.9763797856360614662612308987398835 0.7555912408148993290374336440452944 0.0698866074289638131993351215540557 1.0724487727716505549839566717755165 GT 1 -16974847489925198089.4496154209361099492968900275691483 0.2346442999520222082459140447514187 0.0468363099239290869219654498350457 1.0479686271435313743099655722363814 GT 1 -2992052752299452706726858659907751255.2289286926110387061089509259255182 0.6082714127899113425474775418893449 0.0549525055956839644176488168926748 1.0565200941224110151572582058450857 GT 1 -2152402137984245456691016295.2836291340289889099986903376461331 0.7515293384908323161634720675034750 0.0097333539471376196076454305608758 1.0097810326715230009151248569732141 GT 1 -352189974724498951947106136344.2436362011311089434913180797499220 0.3724010262711510484963852974935652 0.0948103041487153504973868676109888 1.0996107485715873995193295769324766 GT 1 -585369.0029657420136182459832817423302066 0.1823312120221007718839070744301350 0.0014544937835053520250541123664232 1.0014555525863944984725584661398852 GT 1 -40349714749590878682498700724475.9356836554428008471306698220204969 1.1796727847718025724002540000133142 0.0687825688761540189911652380487329 1.0712624831897773598513647017845125 GT 1 -5296593036233030546.9300270429241706490545522147378966 1.3557919276312092052271836620656117 0.0312088606761214947275125082183062 1.0317062328174099613671073208489269 GT 1 -3714953785256434466636114.3602277247062909085142630988331293 0.2013125634895310397503611754243321 0.0389881100634829170033424553002268 1.0397684976258260456211445223394629 GT 1 -648159683.3451641452473068801448682485780859 1.1726452961699087664869093768969155 0.0794260073555237489635494906274774 1.0827578984385466014029001298925933 GT 1 -83.0439066771429773109093548038519692 2.5521108140033793849744529527746352 0.0782903437448607854983339104596172 1.0848481752141079298879635415664983 LT 2 -3137508964290354391876989249006.1778810053018425267155440503598527 0.0044976963971792041038781698598347 0.0945420143174083364975579044182804 1.0993144017604361536159693224920158 GT 1 -91777564818945269148024907103182546512.8113476232157589198962875111843562 1.0670277134097045054501230683821896 0.0895169399754497872571751782271960 1.0937799851225875405471358511357750 GT 1 -26943559005.5292063109070560821251072756179200 2.0690171289962130798057959357135327 0.0160313906137640785088281312885266 1.0161612834689803631424327233864706 GT 1 -36815246862251221007290.3329648348528751057412368998621896 1.3323459517937126854342220003459186 0.0628903271515354219731208145450716 1.0649549567965029375369040415701302 GT 1 -1984711130.6677669713836376912281647646947928 1.0429552036755123041203038055557485 0.0775666012474533300007143262887077 1.0807401021479498398275067945518604 GT 1 -3436222.9177533860712997343783835683908320 0.7082141970825899895203858802996102 0.0251165455260656991912952567700589 1.0254373490019205206529507103531487 GT 1 -186345544698086008207370.7941058381615741770248228173042279 1.1868490621920751674958391518834739 0.0140249545747556759436114488175922 1.0141242335991237594897343564095618 GT 1 -88656111869.8772249207322052807850569963034722 0.4989089834105884095567951818500822 0.0934018193536569853352027183502688 1.0980559472650225317489568551801943 GT 1 -17429375.2712325318491783823228322807379289 2.0485121144410183077917145321527632 0.0403460812839708486303343190685542 1.0411825608539532097996143313090560 GT 1 -132503749346659149.7105972962876259719404617382745913 0.6756695171736052146923385774503826 0.0293565102507832857049041106891857 1.0297960359375393314762967583716236 GT 1 -2827777074581022142760818.3613158413399431522200192262225246 2.3828579464752390091272579628693880 0.0185703772689872964407802624398836 1.0187449716255462504766170326873169 GT 1 -176600866802220499960.4000767762132588643034738156215609 0.8352271805396914601250145635749996 0.0384351208457372927391552002119880 1.0391932392102603096042439422160237 GT 1 -1124395.4035720088251682643401377185726890 0.9950984393013861734140933874432183 0.0851914727148419330847783390305995 1.0890404954021436001652013496732986 GT 1 -386893481621039647033224.8369060796646778480045203081367811 0.5183274394022478243868089572272657 0.0213200917153962168459382238238058 1.0215506477438140100000968952955546 GT 1 -88730624350201715610290424406921.8744429238292169414514878542760906 3.3313000748081394113694050226843764 0.0280969747519944516205695401389424 1.0284992477622509875456696023117081 GT 1 -1033129226595744059300217708403570047.3899406150851060077755028982441491 1.9271797317417138949712159754670006 0.0956772918438644944677219816789742 1.1005690042426421890319139904827764 GT 1 -3213582495639.8810984769378045141037902680132168 3.9132765768517139103737762472044132 0.0478784176169108693937892447063786 1.0490625397580514288345560531675889 LT 1 -382.3060179020073427984288267341660499 2.0013109491238618473735901799067696 0.0618307214515903340214747269566459 1.0638248787226011806923814083963946 GT 1 -3602886.4498595250491738685398190335291185 0.4880055049343812742528692404194500 0.0666930849329853431392876586045676 1.0690211771728950391379517004864700 GT 1 -82.5681494668416621254152025756515625 0.9892523231021354001694543049264418 0.0740862017945500144141272877848204 1.0769741391600210809880058943881359 GT 1 -21559709858684208717509238599031719806576.2226803600725440272496535232082869 2.0418308591752367734737933447191830 0.0771278605356136060871388424424760 1.0802645811992282416511029164168201 GT 1 -1970624043238377100492648897603900962.6434843218988992976543859895839415 0.7319987239357579806913602015870249 0.0748107456337597206122054026661645 1.0777569630824428574059302128014392 GT 1 -206247657494242075118.9146058277870213731174966673407982 0.3440085033384212729727416251448325 0.0615342810319496316389228801287776 1.0635089510941612745882955096768865 GT 1 -20.8506555687375677599553673458864083 0.9206678478806566979550143272154798 0.0712102784394189225888202560724660 1.0738729150242647644236251764244361 GT 1 -1071407841667636768298220887032380812315324.2512614703640675374997359274836421 1.1353106104312185247514149373440803 0.0626523801273399517522106947435026 1.0647010731509298165436221988650888 GT 1 -108094833078.9912145805453975902032520673769845 1.3507533121045177751424055853939672 0.0734017258215043690177106117822088 1.0762351685326254985184528247017083 GT 1 -341292860524728141337668099852.8432281081563657554380497611364630 1.0804998120473838230362096050333693 0.0991838338963721862475900633428349 1.1044540753727235616978546083346987 GT 1 -423124916758700997769348297.4341213321297535860787623401120953 1.7140963835435743735748999369315743 0.0199539151868235425139967371131129 1.0201556831036073124690983782966669 GT 1 -47558058324035794233454.8025871040361404191966694207460979 0.7120607704722527960732877290736295 0.0466620438061721848016217648141409 1.0477858146937407398003986991664212 GT 1 -410075293303542.9555528911675425271835583470099148 0.1007297157109718812354845831162806 0.0808696747831499005414034499092816 1.0843273546929520565184060468258560 GT 1 -612713546750372471347.5027961824721187558477704203624770 3.3418520271654165112039068655401061 0.0735056555438000692359797183147781 1.0763473374780517037188774957420752 LT 1 -206652478798106657277369214.1504644044342536500573926111684590 0.6995949639391422205403355093172775 0.0539054943449880377662795066132129 1.0554128146503897224862533031684964 GT 1 -182040551751553535283.5450890032391141908825381041045573 0.7196233837460343611482976405467689 0.0482155040405692802185849438772329 1.0494166396067940171838397082443002 GT 1 -89127541.6836706117703363631462040142998564 1.5791727734098164325640165853031086 0.0483396077719688955495795133899813 1.0495470386872671546526611734071135 GT 1 -90344951410856965918997818470405.5269205232682389977768165957315442 0.7947920961275022178372727090140715 0.0893765800243841721872938564833521 1.0936258371330163500458721846397897 GT 1 -23.3177764966407435762088572396231544 0.6301311491441432595880467650543156 0.0236466181980326449075835670798209 1.0239306865827098906021758604028641 GT 1 -565364774593849384963630936337.8534033613142303323415404539500146 0.7369461471682247167693090670588957 0.0678233350844473453796832261547247 1.0702329276293335513151626271614038 GT 1 -22276651389871996558907812704073.2557477239386704686931232724026392 0.1630185528835852830611839061070951 0.0974962632631360937755898625735126 1.1025824483550145500900632495357863 GT 1 -37513145231257263856274868953431.0616200169793581095355361191239029 0.4012743888137752158758155170964763 0.0579407009602060649713444055990072 1.0596870562386502334003279896327614 GT 1 -2926366711991201464225.0745647242055827116795390332930333 2.4295562463241375816339832009957482 0.0028198286250657145998320309889782 1.0028238118315383898579662132338570 GT 1 -182187926441034471575629567344168888024277.1840350813528042206679923668871974 0.3482308154476412821876845912693146 0.0734255354201054066346081901902404 1.0762608645706735219736624467872500 GT 1 -223790418056021072634010871747.0372343376148247671357886859612138 1.9990064153225617681018638762516766 0.0344280598050359441165178267269280 1.0350346690711693815126024234900196 GT 1 -142990695187.3698017874058620565267656620882293 3.1814560333135050339399563639727245 0.0885736064199909772326102376487795 1.0927444411904879394890372203132746 LT 1 -2382181247034389143.1961290266666533138850659213228309 1.3509657801972095795409158431830141 0.0336306243286714076668144351839996 1.0342091413855166908354303647129358 GT 1 -1970215310768227800000.4247413101117251634793741639283857 1.1878789824313664113455548255354829 0.0414127035061832389052078511026054 1.0422946444894022386297782902876901 GT 1 -103227142983066782625589754009231.7816091049019383780233527991446966 0.6646711438769783560016684813758528 0.0402715492356220367372371154110761 1.0411048983208682051463106320724034 GT 1 -2828941150280119928780.0322199945266020740749552630072817 0.3515605181365875167305662646726129 0.0908728176181989664723294781955687 1.0952702799803522865166760473382904 GT 1 -13195841.2658682961072113271449471334945300 2.8411680669507707057097315149985668 0.0314789103813444724540239206831003 1.0319850208237391899858999314799368 GT 1 -16.9330794102921961264570717971177995 0.0741431801932720189249059775421979 0.0648039654084716774738582756930217 1.0669991090048587070595072229186680 GT 1 -5511221.3030473767422036162787632095748518 2.1246566974434692561712841486892153 0.0434765540029593657392349879814049 1.0444499781209743967433233301134450 GT 1 -3.3799803993235562015385178901249756 0.3160674845265492951317634698691818 0.0382063829620437199260128601704486 1.0389553866360004408299151555170053 GT 1 -7.5384526384452748513759813480525010 0.2899830395221719350348281906285997 0.0510687107997228360172985971920310 1.0524188863651382640645586077153114 GT 1 -13722311687699542633.5454495324364708618842538370582954 0.8880084881334747427392217950688047 0.0744846713682231610686924303158515 1.0774045845646543388011456000732463 GT 1 -2415077799.4164159354180220725581250285330437 0.0842910140893169527589668509065269 0.0713316728354768170755896480141899 1.0740036252670226586533309676246958 GT 1 -75156964005274313803919218101488.5740364575100872239470356680622337 1.1208930773955209749773339925237462 0.0683159750249681800424993095232037 1.0707615507766158691968946590797373 GT 1 -2831817678632738361763685351938061754286.0677286929188138962336430824461844 1.8186913296077515675062595125290925 0.0209243049053815248472919060250354 1.0211463206513786874431776487954824 GT 1 -44943798938690436364836889.3496772292464588662565763145008509 0.4398963366121221101888295902282380 0.0262792995076935305065890043186123 1.0266307716030881374296381629670221 GT 1 -2936381106654603261571653.6738949964365442502191388120525546 2.7540347137817344512888219389819768 0.0338242149940409918441982548217126 1.0344094892686671023646685588345831 GT 1 -28757074252388.1780875791883224118541798237133263 0.7666174393129014667081862486984418 0.0997312323299706818886236347913312 1.1050619294946347137555215573110772 GT 1 -654007917066661843212238529199198835827966.6702910032669572829520624037876751 1.0708038970478332138781390075017736 0.0925856523450610916425150259612689 1.0971561000468417878009028687044843 GT 1 -8577.5027466517421463345512826301369765 0.4603208370536008414452796988696546 0.0765192729339204092377932244908118 1.0796053490071964225530088517608999 GT 1 -94845.7498994313721805275786101739827614 0.1051493813601951618246977229158599 0.0949848248027325292969281999041443 1.0998035672490189742284936554900749 GT 1 -2253177525999731857100870143812331.8491998371223623319413523782808901 1.7847167223613537387427669882961147 0.0489089355422626577416541586814078 1.0501454644935211678729650977603112 GT 1 -478519826149415.9054021071410602957240186280034025 1.0222632640918864097520096995848675 0.0014377401148074248945711554734433 1.0014387746548449928044907780362014 GT 1 -1486180448016287180694.0674842747238229769868763754810044 0.2175776002098848089206512922955844 0.0774867897776754358042144675018897 1.0806535831457852983439168761189487 GT 1 -4539646304562566133103179832720.5469933104897528903525484121955868 0.7792881954366160666597358949851109 0.0458376739803908701124544642491065 1.0469214689478536920486361613113894 GT 1 -71707372531675368042550468028809070433.4467453328767881862724772878660254 1.6974956017886903175397033210229906 0.0821226096085074704864230087939416 1.0856914589468408591685429509691840 GT 1 -18.9564217101141483467596782944270342 1.3035881148376107845772896989420518 0.0569471635127481960275452441321392 1.0586329677091383308621631151714252 GT 1 -6048328.7474608837533491009224786635190963 2.2774851504041055576092740822508998 0.0233047334251451151317448384922522 1.0235805828854324959714473097478901 GT 1 -45880107943795.0290234052412306396636279222967180 0.7747244003880771995460508064083048 0.0029286075220027454725061170169309 1.0029329042840820909620679487622463 GT 1 -98802801465479384438888087102.7812582876006305900752856069425700 0.2901863121104543927144898985229962 0.0212239257012883727525468847687056 1.0214523916246053435537323103547778 GT 1 -5192735185552750542377834443.9701345129891784906282948903951745 0.5284022777877547510666125172308375 0.0091471502819863584180534522621178 1.0091892423393287167289636425756359 GT 1 -48.7638328731322936110386729408498887 0.9762653994567521883793020913992213 0.0182184277711217684338111984373473 1.0183864269080553704592894145723613 GT 1 -912281462497840450.6382296418258164948198876240770470 3.3026248618746235788679848516775036 0.0475210910290610187232054314392590 1.0486873150390992045436985959325258 LT 1 -25471135985521562289.4585604551123883968808093833174013 1.8352859694344273564718635799874893 0.0048888077805265444121392866225528 1.0049007970928740805863487596732724 GT 1 -3298661527748105641.1519186841798205211033761484023208 1.6796842996976827864056765306382900 0.0286006826049205145702561078522147 1.0290176517729430360375830716163554 GT 1 -777155604974.8269706698102874828585297822866799 1.9693856051645715609886574898783993 0.0623066824746626875058530412396502 1.0643323370346144821341412078716713 GT 1 -5479523442273352864750588042848453.7495151684927875236182673370431173 0.3846305610594266725387138752254173 0.0956859547380649370708478768810487 1.1005785837164465747840175410105979 GT 1 -31871230.8547677132259645534302901486179480 0.0867752625934814628777494370945140 0.0478874205017903038187468294573405 1.0490719954070043990436233511215683 GT 1 -1682.5464939139442560453216947423895788 0.1534037465624079154391498999770623 0.0179421035893588285545903175480639 1.0181050147172942365254038624121588 GT 1 -85611015373130897.8338113259752956562859985201260356 2.2415052559710219555019107831317359 0.0743858988661486829818421423770401 1.0772978686315812838431523494440719 GT 1 -325.0652417020851757095774818701190731 0.8423070045464130493206025204600040 0.0399150453485715130532542360343099 1.0407335040070847406592625414946354 GT 1 -10791904235282.8328316290356038877146221752465471 0.7741432060450537451289574135588403 0.0930095409811159090676498014618700 1.0976233481958850755442111406462683 GT 1 -1712276234304487917779598304163621.3816652001396546548983378062354835 0.0256125355139079100780176594069405 0.0807268321429621640902511567788161 1.0841719561191206359867480664680902 GT 1 -13814292597624381.4902421763528537890475697178560920 0.7991284467055139612250898212680778 0.0541821502712867308788699035183459 1.0557052763254597963256776401278088 GT 1 -14136064872082017316545.7701225329088426251249310951049784 0.9426742648799297735804698138628155 0.0664580766284271855959600527501789 1.0687694071302855783578892645492061 GT 1 -57982210638198040058333054468211.8878774597169709697335744815506389 0.0766961488735469231184477137265943 0.0462624479609367408353607635357291 1.0473667480659555693461032465388557 GT 1 -195302514024381865794841673228693265676923.2112485765762997894815774840093177 0.6039449477717698143503653461167479 0.0970635197176638783965715980138284 1.1021030710267817573249115395492761 GT 1 -1467723598004.6410370741519673469246078431087572 0.1740907045943107021018521204626434 0.0446078205141025580339790170688072 1.0456333636512604039042220577507457 GT 1 -12879878698949.2802528369103203682957345318519811 0.2733706922126633912686106825087658 0.0341557456007888952057875502482790 1.0347526850981513981251681760245104 GT 1 -4686687191737.5876146364949126361001863554550288 6.0324491672107539940806989750940283 0.0414149087373329301384027281803254 1.0422969449931689059710066997083899 LT 1 -431864695181052523190529.5576943188347785096400048781268162 0.4794423254542748773656354519391747 0.0398919726263207528870830218968676 1.0407094723368642431121591300698737 GT 1 -100323098456023696880.6744137093426898970707647881938092 0.7908042570432295652584354591644363 0.0349768352176858352470844522475854 1.0356031729754994916521463518818330 GT 1 -72950669408.8686674936861711519685925145405826 0.3560709168242864161572998759342888 0.0282030233027128569068238910045587 1.0286083680490416431065640636155007 GT 1 -207364076043.1241236273934944509268104016734016 0.3552169794543030051785988922833592 0.0811380343508560640803662853501045 1.0846193685070978025015343115409344 GT 1 -4944604248373795091180274869279329559.3946036099881227681608445952267653 0.9685946144292437051698746291066286 0.0258790628623227701912255706029121 1.0262198176083983903620149366745206 GT 1 -562738661328033807935.4998004099531831629990601809369486 1.0786390770068786024309179683668605 0.0283124796572498893905763515565744 1.0287210073366917013583224407788210 GT 1 -48044.0968024640934317783566549568187920 0.7370017197885353328004311811588699 0.0291150334716424095991326370442124 1.0295472867836392245061201284358637 GT 1 -7094096736718.8893161774157357892414326088373448 0.4269045144872173204997176974936804 0.0663810865802262380037186764106157 1.0686869396248328763671248881203755 GT 1 -543879265186810280629314.2452119488555989105235091980683576 0.2723012369748771771968769204428729 0.0088244591662996914868675870274718 1.0088636252895668886478890079418140 GT 1 -146108742520.5247454642795190395993101110042518 0.8456807962216672075467194179979625 0.0546027015116508432936044002687333 1.0561500181600337287501961592706425 GT 1 -7233803960564110001062129128390314682645355.2939282201035232815272511287514874 0.4831309839302859860052988365521378 0.0776774922007124240597107567851359 1.0808603250489838657992901883784662 GT 1 -288.5890653629171584354424373284446870 0.3034864437610943645135353215752856 0.0689504527480751778160657261216507 1.0714427837313488856772822647580800 GT 1 -132708798212666468249.0405402600016000256596599392435714 0.0742900091925311234707481769374857 0.0773976908264897508828723828391536 1.0805570049637491792913307118449399 GT 1 -547304713.0327129437098472676792223183864814 0.1660029307677009276132432307795845 0.0677882384909025288226305097555399 1.0701952781856323079510227499933276 GT 1 -111953351169.1928490456082545638313966664096826 0.0928392246610141509681971279763426 0.0076856840869341429593036523502002 1.0077153711650360536299599909592899 GT 1 -41494430575925770211414.9269895592032557428476145633774957 3.3529996956651558655392286461966828 0.0838220267748530348198699099305562 1.0875446392667088593409314823514544 LT 1 -633159862208251863287246.8321229698726596714396151523217075 0.2827418010482831273297758280572924 0.0605340191145362996913601248576523 1.0624436705921231341393072130145946 GT 1 -1174377791418775038923727.2172431806563232678200278222809550 2.7818358483448254795357333535091138 0.0378770201172896186062217469495382 1.0386129987710598816319384306846047 GT 1 -1220.0344626170538274292443012584114011 0.2204211076475982818474452853101267 0.0705262651490831593621386144919144 1.0731367295077616262073244201730001 GT 1 -29733624771629977067719049707266.5833046873395006586858707245627700 0.3243513573155979973463075128101585 0.0512977462586083571666888846327458 1.0526602769759330359700319273032356 GT 1 -1927007.8097451794919870122529610948052204 0.4007035893679685653132778261755562 0.0891297774108390966307247068225096 1.0933548478643325516123733767540615 GT 1 -3882493478214.9282951423742203381620582580838379 0.4910065480864411042627758639327162 0.0851913358103961789092110112340417 1.0890403457484932168037804325441415 GT 1 -2153946368406020.8485165568254493840599895086846442 0.3388162427885729737948819539109384 0.0391472711487722744871488520433887 1.0399341295689892633872815194056123 GT 1 -429551258.6087155871050113532249348196838533 1.5032148488893620049664939411572065 0.0053126407563697742132946588152753 1.0053268030138668249386726956433994 GT 1 -51298528821679711.4597339486150173599808201547680439 0.5798748163893356032284708162056441 0.0488200518380712444577861048902776 1.0500520143976447724416643594996026 GT 1 -1578247521399694452.2206670890542129401584483632437034 1.0127954504535446588777265654568607 0.0646513382521501125134314574910002 1.0668359189383941405559924169029947 GT 1 -16143478923619028355638538668972065987167.4501051035735792855245045026836796 0.3822521697066943202099338580140360 0.0975752080633901151372393534593657 1.1026699252817185492191356825405233 GT 1 -25003411465775572516.1485780900981853982322620466237314 0.1659569671000994803218894188080514 0.0553766664074471161567703739711071 1.0569690197369704103776672922322625 GT 1 -11156621717488361185981386206236198447154412.1497048852918142231217144234417148 2.4201430220798752661123244672906529 0.0954564969799139822380773114748720 1.1053574197781841359313103093560735 LT 2 -270424755.7092588626538781245374732955273532 0.8258837552107930559508604647138366 0.0417801547720527352138833004252598 1.0426780438021161516611494443273920 GT 1 -8271870762589555504059341493295052.7610348282690368929811863256952438 0.9186347650318050650214891153184921 0.0282662239648191155138686999030584 1.0286734050051481313782961450949774 GT 1 -899767622307279900747550505.7291301371099548573371228552985642 0.1540269564490214516466109036160529 0.0887003997204708529566209060176511 1.0928835661068072724159915934966846 GT 1 -16621640785.3864051333143646678477387130174659 1.0561781802124415358316137644614829 0.0075839206544986486674084223719474 1.0076128248113672840870750078860176 GT 1 -13394927304.9078209066136729493060556290187073 0.9502537466355873193073307857385453 0.0981528947428395587367137383841270 1.1033102796541256665936878152949582 GT 1 -66223.4595043790481256701444259201785985 0.3577055538225848554521539557108276 0.0969047921969389938352370126026912 1.1019272961251776383213560589107780 GT 1 -1442132422133574825029053.6775390088164455315973038842708802 0.0252867767446902283688745160597621 0.0211330417338491469131719062804795 1.0213595412264554360776976240984340 GT 1 -9241535467684816119557.0077968161042596410505209432734344 0.3952210293791487856216104791135891 0.0048401435476247717696159687623959 1.0048518949768090899543052720808836 GT 1 -28865475714.7268843032923375669380219441155504 5.1429840680905417510448946955261797 0.0218608224400185243694136404377889 1.0221033107286521387343848874990171 LT 1 -44058630771842429974799005271291.0264735878907322579130503754999678 0.0506620413607083748432445605774167 0.0664275854166617661993154481826364 1.0687367458077856101731010141858501 GT 1 -14050213077011074170849046.0808097707998337179009152671724588 0.7170335262317084834201698324393153 0.0914901701655874266317948459960217 1.0959495713536885168315000119268210 GT 1 -32134911555.7568571527452304968326085730063669 1.5886494809296837064963259122765245 0.0785666041179661252843907719028426 1.0818247824203721553279542175879762 GT 1 -47835132628.6813513887852150350845659592131649 0.5195042782365740019716723799941697 0.0677525469815586981030619928818012 1.0701569920069161541642500103014425 GT 1 -812483908183986929870978367562.3901042349420910528509709682880368 0.4915255892546674218783971877438615 0.0533639099742610497161214373579698 1.0548405362852132430122002617907488 GT 1 -2.3596798265658917713353679466070145 0.0449046115575793809186461439317379 0.0114843625045708774809773006997942 1.0115508170778464495605198333166009 GT 1 -14350648446877701805333176491503159224899.3755519964675216331073118046160714 0.0302079707896134122878464696193403 0.0261472346112209182285995264555114 1.0264951516647508836849186325121225 GT 1 -317955293759731933148281568369.1990230844955612064952114588791002 0.7305323647194988259464826377369747 0.0812532850871094970750263948530065 1.0847448040665002506117840077994132 GT 1 -4976882240506880199745976180914751953705676.5036857690134360819413173550627914 0.0958510823746373928262393693438507 0.0004484509207884260687756596746321 1.0004485515049751088825397033579688 GT 1 -65336638100022078.5681136349512545949420699520063812 0.8915779049955061264933752892478759 0.0306621168559992328824557706249324 1.0311420352554444359971306686665467 GT 1 -25887498.4422586742705002073934195424590301 0.3348596743903442006554695973554727 0.0914062594519805974579878398021547 1.0958572147978662047419414688350660 GT 1 -42.3144260375619680531700771721898193 0.5078899088703897662693902639748493 0.0572613209901324708061917863820069 1.0589661513911189054455002567252951 GT 1 -4165656810.4168387872023462869209062501692419 0.0965793364137476468764324735948647 0.0639201823450549745593223436819206 1.0660545308678971901207541025546545 GT 1 -1652163238872711467597113713075381448882631.4787335167370977174351718023416002 0.0429578078608400769945439255908763 0.0201335092372770708296105410128806 1.0203389505137910799346040762219394 GT 1 -2493431702532243115251117750950975821046.2865043513284110905292445048854960 0.4276048035563353550015462991947373 0.0824898590127971698217843577506719 1.0860916462674064262054744433154101 GT 1 -1280920350898.5861047667976676630934570423459221 0.3821866932205907394091361925457494 0.0245593776360367074207068479118042 1.0248659896962509769956697039180666 GT 1 -40566150.3458695037255508457143577456907197 0.4045818763287912606319512213441251 0.0550178283139722108451134633270135 1.0565892176070697301618128832782554 GT 1 -18327274.1619880563394457018263363736303865 0.0270520399259064924525385842943525 0.0941759029613260642277119272920292 1.0989101451683120185859460096451830 GT 1 -336080798736143371672518868091647.2268394455181537074842523630238700 3.4226545555100572379647277283733950 0.0529847864842997119528625696409747 1.0544401209665980397367638539734272 LT 1 -6574784717620268731279.0130149496138486668958824988364954 1.6189144192375315832021716593366796 0.0930303290086236408726755869183322 1.0976462682448593870860461018081017 GT 1 -4360998897.7309175403731610627473064521661268 0.1191864263514188492336089312864116 0.0219134492198898297452275508593541 1.0221571151328388236717129250840865 GT 1 -25926022.6172365669818838828955856369150688 0.7932454381509383914242550017870399 0.0125552581574797493954793547667059 1.0126347414003741768064097685200931 GT 1 -2784834210729.2815175942302637649063262322478231 1.6538944758360569054748785856135959 0.0955105127694710790171979934157420 1.1003845969555933659869896793127069 GT 1 -261296023224251715192637710522560489806.2539578015074850993344250589798215 3.2183014281543824463297022093868675 0.0024538168265259138685794745972391 1.0024568323691044558561205009392863 GT 1 -205.3426106496512744766367000412190587 0.4511169891009882304107904807250734 0.0582445461501326169661826673486084 1.0600096412402756245637074733103358 GT 1 -28701822843.1604826147903298039885363929504614 0.7822552009343014686172481148914608 0.0991142582151386096965530865672503 1.1043768420846157627645280666466725 GT 1 -211169353842674993760739.3592749805147070843382041737103175 2.2547074073496258263053655667936292 0.0499817603964306846678992847475370 1.0512740949891556198774356672519000 GT 1 -14265979999572048084824.3515013549213098984054481383407391 2.4668741673080410755758920529267573 0.0955368874591083600439884880912368 1.1054552184441163815215478442132449 LT 2 -11131642281980759.9010052871554757314839189679982346 0.2931212581837899397070953535118129 0.0428543235980495402009199663278915 1.0437996771681557828282043386346889 GT 1 -8300205037781.2775913683450401938328925255528392 1.0227108191376360501601146922459288 0.0701488144673446876386295529937796 1.0727307211949750631499977264918205 GT 1 -38881804.6156020642057052062065131150495222 0.2649007063273950971387399167304325 0.0420397406692653904914536614020157 1.0429489848250221762298428983477523 GT 1 -4064173129.5247690579014089029990665112120311 0.7625064884450908800297316871163889 0.0430139320566742725330126317252183 1.0439664456881034437229748254666923 GT 1 -2067427988727595466710986350.3397711703270067610898174059863164 0.1983387552950401334017731426001291 0.0595625626405780384116147719193831 1.0614101530709542165927976305010481 GT 1 -4102010064179515188795699997297098.0722805176113357601607277642363230 1.2742027607704353907524430703926389 0.0440939584200086686994815275469238 1.0450956536269309852046713969715693 GT 1 -56234373002754272518663617720765709550.4802678255596321682392723410007817 0.9198858559732761146944265408038954 0.0465986613664874109935965031408740 1.0477193321495564718391994981896437 GT 1 -2227741141.9678151032554167908919320421739329 0.4751164092236335710452190693004711 0.0093861885704493996096239259888121 1.0094305164362486223772806839965301 GT 1 -588415145950602.6247202688876930775398965835120893 1.0757958935078728332360306679948264 0.0308922545794553678882095799501271 1.0313794808883228037792778706911830 GT 1 -97692985.1404895841337950548954823429573427 0.1815159282657375671867550064259492 0.0991400321906584262663225702536813 1.1044054520881077422918338956040124 GT 1 -339281953147997493753118214662026855376046.0791414016561499007289629985761826 0.6768142008111122745983265322597914 0.0483867815943630266791249285240399 1.0495966099335033543171958073490037 GT 1 -828291279879402254284575249642328043628278.3558988408108136700532541159863994 1.8237640679727434737505383066292974 0.0350453450762916612422171035018912 1.0356741684635668495714348383213634 GT 1 -360234639650103786578077742.2159590977761253440504002312680042 0.0021298880469612808744212113046007 0.0518390028965501412939157607183362 1.0532309629780900527634347242863621 GT 1 -811419778749913184.7112156941604537504101812108070397 1.3782714054834654071699255088736740 0.0716944296215407596554350115291110 1.0743943219711155934634352645547149 GT 1 -44509383913398.7118939575715090691405260226711572 0.7868399471044330368606957552651118 0.0891363834529904518768502894632380 1.0933621003421747776250149734610050 GT 1 -441355443811369.5639759833850208679172825681321560 0.3103897889220058296552986583871121 0.0623453494005611527281335861583270 1.0643735741026798918840811068034772 GT 1 -222707220048930201000873902568561198.2236342292169040078015772206166282 0.0500474873319592519524724413588172 0.0027943719992239398788892544716274 1.0027982835452347812618914414590478 GT 1 -426276038708367749537290026382.5976497404167954627650389260029336 3.3612179444164384969900023007337364 0.0004362854783255719134875305341199 1.0004363806785255209310748978699651 GT 1 -1270.3177549898711345566135238565761736 0.0109777332018762324567958094851189 0.0541254267217480253399493982324641 1.0556453051072365498665738759504353 GT 1 -1665420914292253518452447.9845055844602929333803018930330068 1.1453007576278276905432255120425518 0.0340916821080240191826461333336399 1.0346863582882821834788007025277448 GT 1 -70233039042825871206672897853965408.4555882659621899903881599567456035 0.0680607168063109278953074471500611 0.0891251933848397452183098575437999 1.0933498152983852046991788064545726 GT 1 -59690565770495587262017759312795487.1649841172791587224769486483182348 0.5538583612813893046001039138786435 0.0111648482046467249080128604530153 1.0112276429557478281988099234649915 GT 1 -84972399678542671997643285486035528.7131179091666737097116864924320159 0.5296478990535795807119423569744460 0.0254479773228002104553011320381835 1.0257773774910010488253166225314327 GT 1 -718468152501601928035657268667143715573032.0179127503750457149511904828033495 1.4912877086315339280078110488862186 0.0421879898620420096065092180092724 1.0431037518559842114407270380791628 GT 1 -70.7634882221429489768553580198388827 0.1636983500574235993129985171709357 0.0953995415707641338054912362617135 1.1002619151628916121440538079867059 GT 1 -2365856084805091147922752294235.9618820972224858539131193044047743 0.4689730561498695116761593265496468 0.0009614116691407618054393814775981 1.0009618741217682028943517379851086 GT 1 -120315985414739284582.8886008413044890596265840861442563 4.6223766168870766211021668261952993 0.0360743160884267643874815251443372 1.0367410787213205130661142059473116 LT 1 -6798210364743712443361452409.4163248146074342371468759017670101 1.4570044007141970998975985479853554 0.0458130553320511942093815396519558 1.0468956679598278766620657873163841 GT 1 -28119124035393532582192.2374424524516299143625140225762762 1.0952217162001277241858679638460923 0.0124067753549419147176711301738614 1.0124843819588474514410780869985078 GT 1 -5935852960624.6200493167958277349183893745527988 2.2822677388182250201525429543561828 0.0843061923439536022425690458413357 1.0880732413069034706236834280912680 GT 1 -18292553200865.7145143023379994377602699792555063 1.1859027941674541896404694884780921 0.0891485776852767699361989267698677 1.0933754879818729376017492623405438 GT 1 -109883823.0098410940960646303719971964071721 2.9316462507471073482646958452451272 0.0232335051641324962725137745473390 1.0235076577200146208431022432466167 GT 1 -25188480760450.8487612175948105698023723719364402 0.6228890655132543496583236380660534 0.0702583667821424184467470149061694 1.0728485451764615896783192086267109 GT 1 -572862059107286304.8858584529152724075691977403729009 0.1553113914108414785716312117228862 0.0628320247098149670827660359020581 1.0648927435573948895772973195111622 GT 1 -29868944855748805.2218100562496909696983032104798846 1.0616725709106375015399527472189684 0.0676562096856845721675909276427906 1.0700536585859271594322211579635602 GT 1 -1277920.6583754123331982400391504284320689 0.1751993696587040412636404112692382 0.0912253637102801507546816177739756 1.0956581404169059432641764124517799 GT 1 -418808004295076551530063.7473618562913106299749193233651276 0.4723685479453642095652705116646033 0.0500686703740859820637026518355780 1.0513655816045094807100471543187471 GT 1 -2904016445668.8889556512684795099706518491402154 0.1018692939796333847609555065206472 0.0598455276758668847495723275099738 1.0617110849594380964942785092387793 GT 1 -1570056247934068898773790971302293.3616037461178068020880083638782329 0.7800603701982162231998886284104317 0.0170830909685475748785552007952553 1.0172306903512470337984977775262238 GT 1 -3799391078432460697712962474513386637253924.5391254758042984261655418938067828 0.9955200481045338251809084175472720 0.0526678822968006918467900663691391 1.0541055422066919808474407595294323 GT 1 -17.9784175847453520162930488038547373 1.5252522271841508009780345747096413 0.0208753950073477042432513657863862 1.0210963667237423658292893294716573 GT 1 -8284664321895385.1010932623002410142589663843282071 0.7693107860859725509116713209559158 0.0924907348919826108075409382648183 1.0970515034098290382062663932257870 GT 1 -2415477354763769257265025631012305890.7447650438248118419308925491065262 0.0062880380870811751482753767316279 0.0613377928686812550525315027642746 1.0632996013090410840384764111213722 GT 1 -8835942699017635459495396490495663238951.1800778095109872466775773222325088 3.5188583328685262232211373885089455 0.0915991178948042157176883659248161 1.0960694976974889349019018719714113 LT 1 -1.2585868740266051550018160352931111 0.0944528196272816969129446923895329 0.0617523823303369117822512475461001 1.0637413800912929354053822167589836 GT 1 -8582010911789870361.9837341075552826334585453444892699 0.0005197079109347442452266953812979 0.0437335046500991596018300717243525 1.0447186439510596823967385958185709 GT 1 -15968348122656627309612881204.9497483528925799247952188603944980 0.2059487636336164066792584471981884 0.0731060034422221789416618021434633 1.0759160710252223494548080231028125 GT 1 -33.1074754438651198973448048679947615 1.6222401217578447154720574882934132 0.0314584301381316366294201515643126 1.0319638751544307007226097413853883 GT 1 -2046558726367165581885911802965692.9515735595864843193942352834579542 0.5864830525451307886919180614095350 0.0107343363266976988473722186370859 1.0107923649543641198906380898166208 GT 1 -52112226.1466236423856401316893762157416345 1.5136957166994004664733828224480368 0.0045400559254766633711552603915083 1.0045503932793559413520211710933765 GT 1 -5842000144536695543433362.0788432917997337075008540151346061 2.7413448213150431887436902446378865 0.0495428601493887128016504108659079 1.0508122102843184044669727331607681 GT 1 -1939714952083.9489993203316016865290173708210351 0.7845177157040459478348741778397840 0.0094415490432223547970366533990146 1.0094864030179845107208892142280160 GT 1 -45575872538.5805656793387928685892879481169034 0.0466729988404606263857086299454679 0.0405834579068111241254105051133325 1.0414299479394183349789086458351238 GT 1 -3014946794973688175439250384954568578752.2625440169008644676787590718555110 0.1013532418573394116773873530610256 0.0067057018589648814807082049516076 1.0067282860964053375029954095927898 GT 1 -3043891022950116608991496684344430633.2394519988872804913345777885001872 0.1981333431357833564467312007969614 0.0441386318251904788326463698679236 1.0451423888154920989953930562231741 GT 1 -1598982720586222729052173.0611085993849217766152199335400674 0.1774168981948123953335178691606973 0.0968764729495380189863051426556676 1.1018959386302554168068868567719195 GT 1 -8.2109963227498131012990051501123545 1.8059807361534768375073945446784605 0.0517379283615220638335892515410895 1.0531243680554804746421983619988852 GT 1 -1534386374053068509544400108.8118516746979162951590366584799697 0.2296759460537704840000133969849720 0.0355617773293304966793593176234145 1.0362094998326926512654090110931320 GT 1 -478056497172571829522759675222112932411612.0797615684519738338332403068806320 0.6105119464954675088327632292424933 0.0022989718841561563136660980052729 1.0023016185772449841043368786822959 GT 1 -30347310181269754381.0864518271727130193538579503434886 0.2404008029457178771862764649433710 0.0201190388576058032401696173263879 1.0203241829174281265689567127565281 GT 1 -3873412034870350242.4088147233514663846971916659626393 1.0837911759571495607511409485277228 0.0768457183730997556897206351563989 1.0799589060891786859514400725211387 GT 1 -36.0388298032298300251928137751059463 0.0782122251736865597257733443294537 0.0479387902845754683253419937572263 1.0491259503381021962582525666443381 GT 1 -1592.9713827385682474091583718980025268 0.6968290622678452827019036198979320 0.0418890865013229735986034381234984 1.0427917316181588789154272127912388 GT 1 -11769327549309755264965512773640009946.1904954454523162704674245512944521 0.8047309836204884085851935180690390 0.0357144019941676756046144857514580 1.0363677647574263764945567685868323 GT 1 -2183682368736260200267032583689259.9285192209129772974809148071073009 0.9500268364367321098548442069089176 0.0261344963252144524535890618482792 1.0264820714506265157075838396242512 GT 1 -61512023.2428223492559005707224940762250882 0.6503153270041094419931655371840698 0.0422195394916889708769207799848163 1.0431366916697841372407633662877251 GT 1 -37332354665585145972902683218447528201358.0424507782905040487764860914598672 3.1288088308542477642319562430314886 0.0534930435516312028035461817797803 1.0549769587048618107261973329403097 LT 1 -121279453567899.1951233450970457247049450934515961 1.5156545312374401385497421954702511 0.0931790973142894348854891368307401 1.0978103095715245757088125284218449 GT 1 -1265683088990171069194128626329647.3656435561982800012823401263148641 1.0127126615435307260697996330239015 0.0826297055592616921490388540082459 1.0862440775038348506971946264392763 GT 1 -13702783252941228887166523815609.4580873406214501338903722240528238 1.6568477422473618344913981630886163 0.0354344583865582178080013962656117 1.0360774949653984601550976206562615 GT 1 -41347667.1752889630380610458877444785261119 0.3875387310468911027911608448138660 0.0072764626610882696068482489847417 1.0073030652425342317360954215002699 GT 1 -3655749571411455037955726712266201532369.5095537909450666421868854340335212 1.5751250317039853025803850395532211 0.0368679765508099042625936279506858 1.0375647805795736197959024859165709 GT 1 -8637475866.2967228741144169711481547960545923 1.1876683972803679684323676855697755 0.0369970981193893506159634950841359 1.0376988538130473939931660872132282 GT 1 -91721153263.2387597458697146830540663606462873 0.7279656905526715813920672627461146 0.0974129261815812994274941778949402 1.1024901127438345582887748950190877 GT 1 -838199436251496785759009809218.9119999940236376324530634385036711 0.0936125857466083175757573269686386 0.0851930374438264891503944726647170 1.0890422058478555482466656970914074 GT 1 -984395720538732.5018958452166799350693690868280613 0.6634621752704630343332730185798629 0.0787644168962496648925959250346745 1.0820394848778393674981080159059518 GT 1 -18010223903589507797297784797949098155490678.4858115262594766219989998593071057 1.4516746790313698696978957805893531 0.0694793128583935429360370078919497 1.0720109708615203235028807190437870 GT 1 -126227.1763854389468462889125709164254701 2.4841264326666293452785577367628058 0.0348213589496787399049040642379831 1.0354420745163917096168382303271443 GT 1 -269598430087029046766992130.0090842873467527642624590489787842 0.0232215767903602727226440810514680 0.0283720295178223884030475008613218 1.0287822942053162702888973654070293 GT 1 -23877733294247462.5585520484183473633986430884650937 0.3397607880050321650817966726156149 0.0222402848177342394768969015880460 1.0224913291317349560785024132815317 GT 1 -49510169999976418200403178774.7814806458607609489912535537029101 0.9964414686811997510363025647331724 0.0890212590878304832931855217418781 1.0932357179854995695898977346465597 GT 1 -9314862757719198565207895265375290.2529306278157191234682933461015187 1.7490901626887146176306164689307103 0.0393682661580908214361474313615860 1.0401641548588979166899193748559148 GT 1 -35844540.3969336537590346432140035363088522 1.7275004051321405165230888545784372 0.0317702558353681147425881928248389 1.0322858808529584979209594922652408 GT 1 -25721308497563745597.8695627121232611115490122709320336 0.4408797061285725447859252086333556 0.0823029948663929617507907667699694 1.0858880026106726594970464058298550 GT 1 -542174895069171881.8972098542551727461778439739300529 0.3566163628849601910113662176193530 0.0059800972779345723809808315547761 1.0059980496667970339765270143499945 GT 1 -1590260556.3844313952793245080753547446765861 0.1699811547516362695890598491081024 0.0219149613976182215996144966452213 1.0221586611912077313883872369150179 GT 1 -169248146.3545808741632928837179841346474745 0.8316476307536446511383414900316692 0.0963702826197172023767102929087931 1.1013356071686955873550463527161813 GT 1 -140149770256033209167575225250.4264131996799813657664118500431699 1.4531168034808927779250891503888285 0.0809780759370895405755525769038972 1.0844453004769400592022884577969477 GT 1 -91721390569322.2273023366472220243761757350589325 0.0486490452303650690440841062828120 0.0621060818152525016281946993242060 1.0641184299911501627024115175964835 GT 1 -55230374253192677.7092150715398543751257964572153457 1.5203825751523860648174769617879664 0.0497548060598416814081150634217616 1.0510352288049604348317817578720561 GT 1 -403785586752920982282514232382004558.8510573368913444296553313375599411 0.2854002243545196904983376502303390 0.0912984428725198757326565177608036 1.0957385587052376396324134638111386 GT 1 -10281261560155272010054889160408129094390.3139057431210557394102792275689537 0.2148527784659080502634483457864337 0.0811812531190067141153744067222528 1.0846664047173207569780690067087351 GT 1 -29385004790089177989257.2900865296300323955597118455613191 0.4509203551489096904798581504749667 0.0081497913816374479103330386359473 1.0081831824754685527223317515257918 GT 1 -144475.0629644076598905637361113111747762 1.4984549982828745490593070393503738 0.0318024567906082034681462812557362 1.0323191389623158850060372122387146 GT 1 -2704401420354087528659.9998085345650577617237167704082833 0.4416143124750361221282606424069219 0.0567639788802366148941184677403025 1.0584387401576700477240906408460968 GT 1 -3167636.3282053066550603568568936105017027 0.3394189730051354279893030515740765 0.0914948958246511230670946421604902 1.0959547729169506068972800265458864 GT 1 -255008023248594924993878192545666.9093397770789103756989397708183281 0.1832768978822151734646138897056069 0.0623066817922870793750390296596022 1.0643323363068972262584349596207057 GT 1 -80772988008005930461249331113878883.2609133840493737512728297342476703 0.2219566451450559003677016437601626 0.0681797418735824787141249453610361 1.0706153389832073075735916859085560 GT 1 -8933982155261094484541650295169836715617051.0355212572323786309286755461883731 0.1092684849354579840337236416431922 0.0686000188377323544890171932127848 1.0710664686590401013240830432346338 GT 1 -1296559008295653879932899.4382973142022099082264144845410420 0.0918078532284277833932368312560360 0.0059211422062411836747502076277253 1.0059387416757841797094542862388517 GT 1 -65806660000353370.6214588359931574695573759966974450 0.2172761825100712226653938850902727 0.0786138469718635293329935844358840 1.0818760547806373724716643773917297 GT 1 -4786225.7338054450296869562069871876811278 0.4749256760429041306174828044062253 0.0874680105674539607448884713142346 1.0915321372275904537381131769490366 GT 1 -43077100308976497882890694514983624344.3885182016946446444255303030734586 0.2888414476739217619853191297450110 0.0003214492798160162336451012716192 1.0003215009557101793579599010428987 GT 1 -1641296985902234162.2367521724432921138221317973842798 0.7039399698314242176910572073243930 0.0063687361086633936656604108239773 1.0063891030288853466644809026252472 GT 1 -1287.8911814744551068272591750009289593 1.0232288668859291001008142215970705 0.0268275632847133320210633847831781 1.0271939907968229654356090810160998 GT 1 -692083314820189491782434269886811348657151.6182508756817064376502149465595525 1.4978602536592971769887247812964037 0.0542212085440013391020669452834497 1.0557465729442735163491405617014704 GT 1 -14930160862.1429872239550034576020118957247780 0.7736483108191479609491276314239407 0.0554162569103570247146582613439473 1.0570109320327736131432475594001500 GT 1 -45106849805724201.2100082656534666873193601524127736 0.2729159626974092037957847257584845 0.0572386529800221769166814612028354 1.0589421068302083269282450427842662 GT 1 -7773124204899844675717301321298909531415.4246922408976995540780368978309838 0.3092672941999711268755195595353479 0.0682541881509647035672435365475155 1.0706952355628040884506311841248713 GT 1 -64664242530145084070980700.2760260272387520483671630905035420 0.2305164966514219622454489882543166 0.0591392069945156457780523395248980 1.0609600855097610630427550310396783 GT 1 -115201295402845900378537825136314.4397654557409306212547695846679753 2.1043985893202979240767249929247946 0.0078311935974335500932130291299930 1.0078620184296299563747996796891327 GT 1 -25631.7617107447403237793165118235885364 0.3038811165101933140487891046812592 0.0060712713208506147515454240771712 1.0060897764262714018746166556560066 GT 1 -38038560111573301030163656320716567594.9474824880087271447815501925294444 0.2818664817812912562299360681716465 0.0660142290477162362917255200130091 1.0682940753958037877466347710578331 GT 1 -1715249527955179619170811154.2167186578478429122693063945969294 0.7560790720668354440322918286449043 0.0262802514560337500898316649210469 1.0266317492436015515866466952151283 GT 1 -26354402380737990225961990.8932292138293908620397631205965222 2.0698940088344983290313407114766301 0.0318623093312492545941241845170671 1.0323809593946593473186117579516625 GT 1 -9777907213424256.6092944197885437689899395889201874 1.8628705403194845510847875978362806 0.0892971651593198600758145968114787 1.0935386315981434669906838053568729 GT 1 -5988999109810395637312102035807649456.7061106335229995799809255637304199 1.9052510814270685161677759662945191 0.0327649920281399006566279411730649 1.0333137851630309973466350605095564 GT 1 -8174023284491694170643075160094081236884865.8271462236459827834471524626030982 1.3312471131951645978427805224418271 0.0645322281901032509055277968581991 1.0667085840913495395931106909873193 GT 1 -1833800105176807222638570808905.4732008719569785552754148110744296 0.1171713136475790980431383300919799 0.0876882401275801332537832280272527 1.0917735053570856397123467434710619 GT 1 -152123360692841.6505915558783186970427555013442344 0.0557825773678530493931710675593352 0.0876967860234859708475395580349546 1.0917828726987203221727029331535070 GT 1 -7771389924223461798931007.7749597141520903808780975919846437 2.3214354510783960880413608628430259 0.0322013065935499710751710016456651 1.0327311746894945768075927908342029 GT 1 -14258955306887230875671615484702970277.6791818551840561804604011282880330 1.9423348772733594362401705971351671 0.0452748321719483733528084551980002 1.0463317622977054717852649423763523 GT 1 -6014287217980325319039176572.7330767935433108959748157956998916 0.2985652042145681293570399027394334 0.0248710716305781122196858089802777 1.0251855825014162544548738868989952 GT 1 -1423906920041610926725758395955.3315869803417091420159196788044016 0.1252146769363679944353540870500856 0.0630488268523265701744346709470288 1.0651241078691670873954420224139095 GT 1 -4197038.5842846496763830026658287622290659 1.1333861507885970429652424445903035 0.0549006000180374804601094232217829 1.0564651718538680879505410100427698 GT 1 -21747.7225679093091761300087695029104408 0.4674238518838289226904135640706622 0.0652321525058260598403350159564658 1.0674570719729567197278985130477098 GT 1 -61.5168706809175074926550334581476161 4.7868426269048286822310341768540197 0.0001365702506824736528312751441705 1.0001365795772483233452167941411235 GT 1 -1416088148615066966129332301861734.5135512622849453050755080877869991 0.2502599421158019145178168249687178 0.0376191438889686977270112021005715 1.0383450063409682562279086985528958 GT 1 -9047758219799486303474909499996172639825.0417607156903187866763736534231531 1.9036265742026612137207308124673350 0.0786179846059842796379121533827037 1.0818805454530851172762665622645715 GT 1 -110547377686106416324669308298320324.0291879211282792013270721257087219 0.1409805173199597108025920263583500 0.0211689592646824358622716578453777 1.0213962348644482611644264690008383 GT 1 -2514366031825442.9981661716194121523148629568226529 1.6612764283898714937187226981883442 0.0191569300475145088162603772855805 1.0193428016806489478759812220049676 GT 1 -85271527487034306828874796084026992.3044772862214321649254961525091643 0.0477956396263714644067660220974689 0.0687095971004339331758692257841075 1.0711841245655349168286447587822998 GT 1 -1402502.6482941169716253908733888178145547 0.4067736725498455492688542883122412 0.0115713519636972788943598283863772 1.0116388210340724050185404324628217 GT 1 -592954177469251268549718868750856.1636511077805872919483701116151255 0.8527824417611549444574138059152079 0.0517376728516049265155867992095198 1.0531240986047765440642325640257946 GT 1 -3903865511.8667710013099824289501365900899410 0.1184833642274056219316726755073738 0.0827514265167327031134786476498069 1.0863767709583476641200276379919721 GT 1 -3783874459227501094863008023.4235648138129633491908603442995433 1.5621332956514729669689564813525314 0.0399675497020684641880432882128605 1.0407881926978644817223423579602470 GT 1 -13211646756515448378072172.9993552876706816988193565736686440 0.3962316011028546643703756217031688 0.0918523074292709643950541213545580 1.0963482565918405025956807915327667 GT 1 -226457660765773.5931571519213927759508095680382738 0.5402986981223345330876024027303116 0.0809964336163492574208546422698897 1.0844652759118355427666258637949477 GT 1 -1605958.4263740407023771056958237591803628 0.5077849161691672871146371873924057 0.0540635042666464005594183248359408 1.0555798414294538727952768237141932 GT 1 -3674.3240378585546855954947882686455817 0.1947344855283064035538931255935414 0.0753727654644353759887410885170294 1.0783646123831608493841095634205356 GT 1 -13072581270802572356360061082.2057702359749856128636022357787044 4.9297110787412701580062829968511657 0.0186830755578670010559405967684171 1.0188598089581258141530558282351703 LT 1 -470478826325041.2925182950283246615999465824474757 1.6303475498897782781736126781977375 0.0452800678714981849992490556873151 1.0463372462988427067846698816062367 GT 1 -507312531640627357.3761250610551550365771927071506442 0.1996372736029508596156161886601980 0.0633395659239795017260765389431540 1.0654344593559593422363186598711691 GT 1 -526069630287699816416.5099738219764554632725512157184516 2.1589683915418653656795290550661320 0.0907080762748307782506319273691059 1.0950890881492000146300106412384097 GT 1 -1088730042812361861632.2896569867449369957843148948789766 2.3996303005555519079551212678772385 0.0008830993122053354531277682120825 1.0008834894741210025140834873739988 GT 1 -73628050742825996088.1992427402793920381131594417830571 1.0986785437609142562343116424129397 0.0115107486858692747276067480193388 1.0115775101643929904070003070842064 GT 1 -25.1423654373112682805540974631074120 0.7890664903331112838353198691078692 0.0291908399928560899885210777559032 1.0296253696497469311700355613484114 GT 1 -1605636664.2913713479035383944194257849538509 1.7597809581266384828108570363740834 0.0076409946737496855438489225273788 1.0076703366369716522586468884851603 GT 1 -85689197941548249212.2095556538136901168673103477318100 1.4094147589638766882211407057246242 0.0329432900910752788651377318802030 1.0334981400478626427251053662475291 GT 1 -2888879734820556424086786303720073037029.3226748356299469080932894477293441 0.9019966274687554404807526076300485 0.0236413308151531998291606984555621 1.0239252711576585769779046960420933 GT 1 -218476277370363675760757506760.1410001383986317877339438813809112 1.9975917315100529500320152672768302 0.0178106735949815075427092825001354 1.0179711924641207650676318986660750 GT 1 -41787960730104.9930874998267967093763957891886442 0.9612505113310777848789580124514452 0.0325317712152387455819196993793576 1.0330726930827574330753519100051722 GT 1 -1138144298813670599889435121981.9766049374557002680892939881150745 0.1144840085102150678490405639902236 0.0855098920598418317121794351367749 1.0893886281149596441403460264846763 GT 1 -23062063676406893049336.4463588895221107309419394744483090 0.2195770828028127244565283133761556 0.0389373040520136460053121750637994 1.0397156318194164325448724763688648 GT 1 -2804.2545764178534194156353656578287492 0.2423310454989617986665851073333226 0.0007566827122124386647421366626491 1.0007569691410755467140327017847249 GT 1 -6.7127285493690281047262593112865943 2.9975082594441110512793810208318516 0.0174284564884162188315270817436930 1.0175821200663148210240573162751567 GT 1 -2509123332575256628.1854715159007662859543699597767697 1.1258114793554306397553826122711622 0.0964100126231274462109741464789441 1.1013795752632355735976026779522054 GT 1 -927411555135718488757187249407476.4357053946012899192250854905614205 1.3321243232127998464483730156379192 0.0246141436500960759107046932202949 1.0249221361702416945642110902680497 GT 1 -1916277963125093632361173009039314445.6311642154443149412425827154087289 0.2871785245577221530197007739962125 0.0472400490456909983710101404844935 1.0483922948279121765860430487104373 GT 1 -2674554106861412136488687937923296084.7538426481574664600590457804750562 2.1965219493977816661389819238054232 0.0372423167279404745170866211422496 1.0379535257715110627750234445179256 GT 1 -1130031702100132266482812160898210.5042337860289375953717234556046997 1.7922992155922496288607397329036334 0.0261727068400981660665304141287162 1.0265213081464244505420720072784061 GT 1 -7100214.5229591630992074976684047466037584 0.3436394316114992355947193566446069 0.0081238784508078011707273656024000 1.0081570569656771573516160105323143 GT 1 -3409785254320934255140131445529299.1849947887291646573682844520468779 0.1475417043628424654736866379514939 0.0428697230726995191874129134931130 1.0438157662535601404139129719789046 GT 1 -275583560485524306022771312288151.7435332803438482181345119771902813 0.8802465081637308275081483981527376 0.0427012172859415003712396903284184 1.0436397286131528832760014278476750 GT 1 -5435830891685774524168347984.2518989823243567917643456371819200 0.7380738380757022081995673670858355 0.0669160824316281759550406447851362 1.0692601383763093286704073002930790 GT 1 -48231069736026165988648.6900706430822151413071179179845660 2.2045832607205867164621047825432084 0.0903616105302058698096042648971292 1.0947081326543119565780405697540672 GT 1 -472298876261714.2683639989552827246689594150819819 0.5635202545757653789126816496972546 0.0496606690870678123295222970173139 1.0509361677302017346350526504498477 GT 1 -18974435981627283326409822.4059481535779735849620640020222735 1.4575823566082830330869851241840150 0.0272300341907938830574150142703681 1.0276076422094210326752849621652926 GT 1 -19226242353840368226276000660966580957909365.1990052508076228994412107465693806 0.6321015434793982770865357864987655 0.0961188382108868026123151530927874 1.1010573854292304108381980836464845 GT 1 -1499717209557373725.7448427732140124311110862127464364 0.1475943122711876840400013341246340 0.0779206565789673497749335819453257 1.0811240033569435966739027956930173 GT 1 -693931138334515300068919140000347265.7006348830192598539209193243955354 0.9996904223514902568222478485703208 0.0079668123012522346539692953883949 1.0079987169154021122064599061910023 GT 1 -30941496383710866913.1665435049323656920701075800355685 1.0019399208159251585165758486677713 0.0750915471064206507485716568873239 1.0780605162123291896987381307149111 GT 1 -17112625291572823860298436341490815974277865.9198190134226910753096754959445405 0.3152649406202029468271104278120259 0.0464860488291212495968180205749636 1.0476012225113369114499239763603127 GT 1 -19617113.5542421649139065192616630502888639 1.3024010967925480655300520675942218 0.0105694851491475477667988007691532 1.0106257388904733792059831323459762 GT 1 -1224029644511752506855801829864429379.2165952992907100892696978968078870 0.3862436335372304438143190803147247 0.0008543096966396289822029253845004 1.0008546748271396780601144356349737 GT 1 -126349966898092496.8483322366010308239595941952389118 0.1050475824819418565091162842865197 0.0853781364607739163082494298891821 1.0892445630152279626952018940383088 GT 1 -24.4737975685555813834623978762434340 0.2566585287779068171716597692417956 0.0422731157857615846432199686604465 1.0431926312037506280304547183400418 GT 1 -2469398718586710025530682881635227.6147231512350870012644101419992485 0.6150100551461906308190192546138208 0.0879870410595780562538278353353606 1.0921010796442599810513061398770553 GT 1 -461895734121850309464834.9440100702547565352461746148485230 0.1949109899582230859809218020644095 0.0464594666527759653073034743104954 1.0475733447799319558563860842098066 GT 1 -163865589797280130129392593262360645689193.2192041560655511799400523610712923 1.5061241736313740467129007576332801 0.0086680032647438309516293814872232 1.0087057889142535107974469565220949 GT 1 -5612505881439681347.9867611072112342247813292080638098 0.1114797588399617901514997585330795 0.0916092548407499918598284737731989 1.0960806568703888503391721899807424 GT 1 -1268936.2684882965841034386507640479986115 0.8586670368329313598469657858582624 0.0664825694592570594908327293560206 1.0687956439296459796040746372027986 GT 1 -206543796271564585869414.5147302474342265967626287640655169 0.0366958603278982522839951298141186 0.0165967268494769147305765683623885 1.0167359956078409452744239409133783 GT 1 -66.5494537017192283642296661870322846 0.5223102125959703172695009424186869 0.0676952065085183460528181179527473 1.0700954861165172568838355055055878 GT 1 -15873024297.9394116851546968037164802731669559 0.0365503385634691319835879159210390 0.0160599255237541640617476868332323 1.0161902837068735960361727011367249 GT 1 -199721429.6777380950432047533423303178198387 0.2609282758275463218896864453191696 0.0210526372369370707315117851120590 1.0212774042269518141972608293851614 GT 1 -4074642053305448.6684596274098786552407571764396859 0.0240126528549539237848787893080154 0.0602391167646802814194459520983161 1.0621298156149437078836379731273968 GT 1 -29060899706890306.9330930594576733020755834741330901 0.0204053367391950691710477809263511 0.0575253215970263538963668981901475 1.0592462264368229217326488951414492 GT 1 -44280114766396.3425277107526740713023430549206214 0.2385992223847437704268145755035098 0.0848658106820153527061624646916134 1.0886845694670748899514560583076841 GT 1 -20639675260026616521563974.4902377705458518235197028789033447 0.5680699481957252807271583445956246 0.0690545947119017196910785643229413 1.0715546443610386384710306581961965 GT 1 -94840836965161746448173213454337866.4222497787735894645223849632045270 0.0743636451699897376201882510880736 0.0371784808710519226704747455176777 1.0378872227528324849183746318688482 GT 1 -964.9495141699362199906258559783766292 0.6093671154200019044097382705158933 0.0934790306387070046216713399081029 1.0981411168305156405683586151573203 GT 1 -64828813454365543050221820026.0632015480218914496243658389514426 0.0092036504796633919399353159172165 0.0725204623535617143990198766717079 1.0752845465806369672257429363019317 GT 1 -235618558471962588161127274329317010876.2695146226631411956882048894650041 0.1023068026875773635848052043329901 0.0059065568345590922714827311956296 1.0059240695352706876965234787060796 GT 1 -159962930280954656880396592397467045815.1596702517746516639965914931414323 3.7253006113096932101338455334043034 0.0821377492851254254608787461289292 1.0857079533083279530700275961724268 LT 1 -3840123255320365434648408373069908560725396.2754532544506594123565412056244018 0.2526917323553318809607726894208713 0.0888626501249689664454619822980955 1.0930616248373581767829567318774661 GT 1 -74.8841757635763569382676084996712186 0.9765347577436965480420443630006748 0.0859298414422532987892451457298029 1.0898479505638708539416288053131391 GT 1 -77718146.7661397358364894436705728873550376 0.8480983393891665290334548916489956 0.0101111409123020650589006844337578 1.0101626057033050477154210578158957 GT 1 -2658252370978811237586.6638752490853827365258274608879017 1.4277912923041815471903707890734702 0.0522802601792508389279191791912047 1.0536964535356704468620601860066247 GT 1 -128954587382034010348361540255307125300.2900524093919689238650801072253566 0.0906697057256793455546388237195285 0.0765185577714234355620180215898182 1.0796045745868982019047620445667208 GT 1 -10315299715077516588277213543105838413654.3719499778377122091741677935360249 0.5682644981752834679345777828676144 0.0900323306922321452860780326923363 1.0943462083356060914633453476607847 GT 1 -4421908569629356270728495.0005087562479220116132512222862861 0.0251382638627913616458132396046954 0.0008346329425503589305039807972733 1.0008349814425513014349846145186720 GT 1 -19713111585657631520453610478.6721324465554596257418542243139624 0.5587419267032569687289528893287740 0.0518647472232959641034542732841285 1.0532581151983710679325194071967664 GT 1 -33786221055675143109.7458363161722582974663703247333607 0.2433803440679467046701004054136085 0.0765500419073580459218423935041031 1.0796386680415139870966288374261725 GT 1 -56965448401712681131535989991.7356790424200185255159592076912691 6.3026211682476085209990153648708665 0.0859522361592672556767137886396706 1.0898724508619541366507149331216905 LT 1 -493825416648016.3313112593984912466913934975680379 5.7268726971127774956580591846191812 0.0966075723792757532142981960720737 1.1015982378858441458805984694571594 LT 1 -5240226715385444177284218125000452688.9754180254746001320929587111804140 0.2666032179268705747904604045602034 0.0983657246610397495272904459002488 1.1035463008534327914579098911984662 GT 1 -140708917.0118387925224121891871803526993441 0.1880596295976112304373795855891896 0.0006836721567455862980640366098299 1.0006839059671270463102859279018256 GT 1 -18496136351479435883868711103456376488651489.6131060523139358804423469296035510 0.0590581689913518089782659122575914 0.0903015766304993094919214795250485 1.0946421372879733186954595786998130 GT 1 -31768200938337097919498.0622607268717019978323592888530621 1.9568897203334578906007075856732276 0.0266388003755015148027346712060662 1.0270000430465457423970353936268696 GT 1 -66397887503.7768255410653156791679714424357973 0.0267518146152474735907413558182326 0.0166357175806634689440996103161727 1.0167756451648831499314185395528986 GT 1 -3312465584228866437025790267784618181958.4824677416974272813637100206290002 1.1353420300183222526874330829931744 0.0880536793817973995061236792185648 1.0921741496113319637325065436489965 GT 1 -16382242745750222013671427855151.7164074057728481480986499639355521 1.4966207322120790873015429017928176 0.0939587617065396471474224786900936 1.0986704570948204163367522401367201 GT 1 -236051539102644676045992.0383687341659400758683124929478413 0.9352712253309666226862261650742141 0.0481168492189252727902214257065981 1.0493129925002192487705143430771105 GT 1 -9052359206686814027341722701296.7914424785149868077654492317681328 1.2607218154508549427595552991045802 0.0054210810619608367374954362392262 1.0054358284438837653602854700832494 GT 1 -3927723158447.2420807838669071075376046160217225 0.4661289443876397493986160235368720 0.0649758201069577589497485686831374 1.0671828891796625024380557301550475 GT 1 -16356606190019512.7680300576823810975434304724188269 2.3849908199058873732879320555788418 0.0358865655420558336792160404512023 1.0365463206947062351786910718140428 GT 1 -28652624583104470635.6696023171646249687542024698428865 0.0862674113850666830130841577561511 0.0755206525730776630210256199307721 1.0785245675857437614951031449320626 GT 1 -607.3988662114638603533154115339652255 0.2149505092303707476291226125621077 0.0780631617852333075011098714797116 1.0812785629621887435086715657173990 GT 1 -4348040091860089157679111690.9818149180487008036155592181400786 3.3135136329151815541788652025438525 0.0073219337884489838173319161973766 1.0073488707131124253928433056241990 GT 1 -387880272749286401697005961801669315918381.1593807492007324506544325591086856 1.4878940508140785451439962076055435 0.0606815115751193143133267597829070 1.0626006789805735130806677618886338 GT 1 -611847231838026332911241.4001732085423556154040687869307882 0.8745398123318615380472171312108272 0.0839532914739247668680745036486276 1.0876879237673530133904261038115809 GT 1 -173715099350405743.1045680149934634282705785091561891 2.1371424582530080593252433224512755 0.0144314907595101965629537533032569 1.0145366375650968258759012555318127 GT 1 -91367989283671151473423141140286361.2311668140078612651969506168072310 1.2844453584574604261172372789716306 0.0109450012242645866961889117407672 1.0110053384144930462830428487157646 GT 1 -199708611008019598246674.4475278581408345142538505000902023 3.5470837339558676370204793492080770 0.0942027215064163865477498162584488 1.0989397523980063602662455989639336 LT 1 -97005788726683760102288770202054568.2808605493944060620921125393586306 0.0423476346442639238479641698053189 0.0068462964961048833485628985613290 1.0068698399022520974672800028210308 GT 1 -2576903433678281039581608.1461204548101645474943100429849393 0.1714007326176162906768007811613938 0.0971035101775065247085622193266215 1.1021473613465524303113885229201953 GT 1 -48485869.0196194939826921692777259026113042 0.1915083513114789693297507054505479 0.0782295004995684304747908511526243 1.0814590023533912181147100877727280 GT 1 -9287301235187385929191905811762540916686.8800826807870385484024630928977665 0.3755363538815505010786532383978706 0.0196026213538184640242144188525109 1.0197973010912588009432395498263661 GT 1 -7526829829192342143152569327823368.5559648734420613367521760568014720 0.8298144079186974476343898378834599 0.0838578976013925231996905008285244 1.0875837927170489804976852906375267 GT 1 -11015576780270291522.8402592197544021037124185160945204 2.6536467840182182880633006488096339 0.0910314160322305910543559608254085 1.0954447464934693109008342892528032 LT 1 -44.4130856970965410249550132370733609 0.4434321924772532412602664631173483 0.0342105646146526152307569434563189 1.0348094443213605887790234868943559 GT 1 -20376468280228524932310387966224617968.3355889206564446186991024395638240 0.4689332555882890155966705652337360 0.0129680947477603509136876250621669 1.0130529145875871718894763638372690 GT 1 -19715707876.2035631738215064525368160896838522 2.6411747351143938221848115287876479 0.0329818749192200348151612124573657 1.0335380400842540270365031499930181 GT 1 -1248619589998.2117286085525920038013950651331605 0.6109301425566228329781593300648051 0.0232503161885132957604348670347219 1.0235248687618938385414094107002438 GT 1 -1544274225987049621838845817517813.5758557495283784589069193306854840 5.9252013896862189324861989415411765 0.0586830904321592120285671512433818 1.0604754165322660446889421446675588 LT 1 -3925068.0082958382873374679245452534822719 2.0871142558716452915488080505459164 0.0884751533315788452094867394122831 1.0926364261362899588499771245166683 GT 1 -953363147057.8530835924546393256484307209121412 1.7504325265379515023369103745841696 0.0196766910317546882048888215497963 1.0198728546144498863116216706320110 GT 1 -179186539770194319.7143152745547755562291785819884753 0.3470277181745997728367597909706882 0.0031834606087101360793657014110754 1.0031885385993530879423220077741768 GT 1 -8435036.9933878889490497924483160164676926 0.9276092705766006427031194949693263 0.0154779365610067313255956372855346 1.0155989703475812687448151374797658 GT 1 -3987934875649757.9757988409212043201802490564103259 0.7884336397640952397344814257325742 0.0159121284045575092956059479161895 1.0160400855150547046348215180626708 GT 1 -2834047712581858432235088.8257067805753542789050081665267139 1.3315452718519913824537855779811086 0.0812157746002306268025740970205041 1.0847039770131308002565222794990589 GT 1 -1092745739.0690137915731406979777059457892683 0.5494458601214293367562088409195219 0.0783350133301937176419639281425766 1.0815734764768765095559654155755013 GT 1 -3227769.8754460693420022599013129592768559 0.6525239583860827684474386527631272 0.0532945938611328866706639252827883 1.0547673153545997775221383377581176 GT 1 -10627.1472718192186998165675060600441101 1.2425223898252786490919942807461565 0.0892439235342528897963586956595337 1.0934801711796825899967788674983041 GT 1 -247869667987942043419.9988289023816267037442999068039505 0.2883604791691232917131827613372582 0.0634214313968786158423770797742717 1.0655218646180045456520892044048653 GT 1 -7.5540826914991052539511685276758285 1.5836836358334681208754403657073810 0.0978489856170281721943356797713360 1.1029733512223521222222648559951077 GT 1 -9615221.7466469809750916598465733568615918 0.6826751611372948049414616028526971 0.0069788512733339633491373621408052 1.0070033173524141689380044431635772 GT 1 -201407770.0575433534259616620150529670868118 1.7530730855709002834890111337919284 0.0557137085080864384987884101003056 1.0573258839296669431591751331733840 GT 1 -742804797830119607365.0551237261964919325549941861912057 1.0702301869679668931836950958808593 0.0859605798505363876138662501170498 1.0898815791916555439552348683219644 GT 1 -65841861572781719012560214673492.9022866873421380276325709058360389 0.4906923366965301502260579880004740 0.0646817233757020514689952107833024 1.0668684048106050989144229221100580 GT 1 -2369465356265093372401780754371.7698955710417176214930834965688007 0.0126556419689097486661610732891748 0.0528449980879204612532701739904922 1.0542925224081427649690509595332710 GT 1 -187295403918351411995055.9715423252071510476629251467773695 0.3178162940731640790077976338304289 0.0311367870673736593284475567864123 1.0316318401800470165671825358221866 GT 1 -161063766261206968.2490130935788477825912630381224024 2.0681228098608745586646016188811876 0.0198951100802098570828976146290498 1.0200956825144798975360041251621501 GT 1 -6460054282047476221417026973135246.1876845359579450973855533711905667 0.3743346944783659548755667458115020 0.0974839615715312807398444636582848 1.1025688178211287075239349231643093 GT 1 -2072898437459934578784122589414122.1863996122541191933445202143402651 3.4684520090496190993882320389185486 0.0111475714603215879329940533550655 1.0112101712938965162894333337638246 GT 1 -814805581590494986050925817.6107676302277787348974241759283256 0.2574338882227508133260612917171296 0.0260883143631328154688112964828628 1.0264346512812727388870947056989825 GT 1 -10507.0760628214363203818605826023767417 0.1409608105143012136178443577632085 0.0006337950012668513316850901645905 1.0006339959342233546634552054738708 GT 1 -4558451941751990223212.7458352275648055365745198214041152 1.3714092495638453950238704871099248 0.0548205942817979823769865797180774 1.0563805221862677176419593370229339 GT 1 -23184502416957050.2268323292255104908450281114148150 0.4756188542049038887730567804504239 0.0420882383786983747988808904965329 1.0429996121204917802979476432045073 GT 1 -62368034034452881225200900112928117.9068133315478601189513969623978427 0.4775081374256416075981481244225798 0.0965559322880541086960067718937348 1.1015410771063612218129543963784364 GT 1 -3515326954163227444513369913239441.2495032593464685362584575676591524 0.5977869230942232755501138528200606 0.0309465673604664601990646023062755 1.0314355265687751089236263090235595 GT 1 -82164507191006434129452836346.4741699990466095555588373708573712 0.1628060316464365928863754743969043 0.0178519816644256189720688676458178 1.0180132504839011257357538165931361 GT 1 -29467778007.7280856018464333446142214349537217 0.2396491427999899887770149296610164 0.0011531802714509376447705939910669 1.0011538456954385704841501132365020 GT 1 -917473197068447039011435537425842706928222.3168548041391685406714047329980497 1.2338447921010228306669758382601297 0.0271791018825885291676701905556384 1.0275552855612054912661116850229990 GT 1 -1668858687342769869579796539094771624411728.1355830784024944771313509902561555 0.1303454670163632477800258572747867 0.0552372372324494021887076129067477 1.0568214276958101335795840670349251 GT 1 -18991842057570437883731932393.1176597858769547061534692506610590 2.5555515452314208920581388540509893 0.0677823573935365244856471515689401 1.0701889694486503210257688426060387 GT 1 -403231928723484.8918015329274201517797219459295602 0.0774465381607951862342979945495665 0.0987944592824944966422155170968630 1.1040219222877039427076228071900719 GT 1 -9.7900982167579607352111571296489238 0.4873340208614065346324465984908777 0.0164352652082615206550636587708376 1.0165718224835948010194780363874533 GT 1 -370.0069920008789878561304326966544624 0.3220607371322155391027187476737426 0.0724376171459459296611335049586823 1.0751952276205042383509569993369945 GT 1 -12974392581361377690711240.1721355590508508632147562051255973 0.3482347595810502860219378933258194 0.0269576971366010776882725440468947 1.0273277210059671600887042587699987 GT 1 -470957539973396358.4475090292831416688508899933340772 0.0217398455874365317301826238469288 0.0413068332351749390056682227285939 1.0421842065298603515780384043890116 GT 1 -39602492843703642570898156685364.3137792675071877199071140255492481 0.7962068895678900470870364155656459 0.0181252794478790710831461300367909 1.0182915545786614676703000872577685 GT 1 -1038650580091523.2078851007395890893137162070004807 1.4630257146016135782496514616461281 0.0686432763771502162227618929064665 1.0711129133067114972820149152992317 GT 1 -1018257749312.8795555068649743516837769067739195 1.4913650074626236237970456247253463 0.0899178382424655391840263177237003 1.0942203959012832192835427554891353 GT 1 -312390836499483927229327528155654705469710.1580871425922753497875678030845435 2.3446735881200522463278477083378305 0.0216824139533065219270258182422343 1.0219209315516366116761977092605408 GT 1 -3535743623274981503999560087733.8851137201417511921818843652075811 1.6546903480779822907435613177465944 0.0337578154211083209793509030481118 1.0343407675179859412411447046147661 GT 1 -77856594230193338066831177802485378.1575255904362832030356422385794485 0.9411056237646781341808036402039029 0.0989600809647686361496198867513283 1.1042057170997192768880836385598051 GT 1 -11614006821227878855.9291104525155374079478699850017099 1.3294718436158335129154761825505908 0.0343860628202012068382629937360464 1.0349911756039341633037048881056262 GT 1 -38494476866832153636346123126477217.4223911441954815662874369019763149 0.7952334995567223442595875669687873 0.0881005695933524694523896530368226 1.0922255686653161646384246676296205 GT 1 -13901751394454450887238558908966791660488.9393050623390534559963409900355812 0.4863023834065788926201246177031730 0.0834784120582365029326066613787706 1.0871696572151781696647997370051738 GT 1 -45604422436262613848499.2729856554547791671867942866064643 1.3406453303061565243409310806687727 0.0005836087563622901131950950402145 1.0005837791222404450307138680398486 GT 1 -3107350290345326596854.3444302442201804705321378967878728 0.4690898515306555289171107451887315 0.0021237537598879695464841366201273 1.0021260121229421690488900226676850 GT 1 -6094560552405.1052837609036677883365732903300994 0.7613722581624963204101988348616661 0.0661328547824776059500606555464264 1.0684210936785539207316024038310822 GT 1 -39626895.7993511315294246585866513171785152 2.9614718164754844303917059419883653 0.0643717592074587840974687952398650 1.0665370600413199533545003675242302 LT 1 -129269971066677196695828488735.5831828322621234864596112675210788 0.9442466511311692396916436601650159 0.0713406237085009739565141868730699 1.0740132637094015354017040335886775 GT 1 -37700686090370891415433760931815.6370468533605164473400027174871972 0.6532434525697552803168847258536639 0.0866882769656620313482860856759696 1.0906780294593634056369506011744005 GT 1 -7863168882705935834115247846537163360726.4096271531634893660220692238091138 0.9526326947876184025929239213044991 0.0110275482696757302911996597267228 1.0110888024184308530326896842753608 GT 1 -56381486265595325.0579326881665436182054513642493045 0.1789060440859505931272045807758809 0.0597287058220616574973532734129743 1.0615868345305867308019717786912815 GT 1 -10087693369391234855549754091199348090022.9831834573892523752932984891368819 0.4726763061723213569222009148405283 0.0379583481714506586541817243558667 1.0386975321346496082402558422572446 GT 1 -138.4216100335896822912709714497843775 0.2150732205964529345777973726541012 0.0993375476677944004608998037885011 1.1046247282688747488384452325189619 GT 1 -250.5909551812716749264339874369152946 0.1178332049657796903738680537382481 0.0533691282901700831239982146763649 1.0548460487839939357905760649253870 GT 1 -468778027.6136250317515834887056024700546488 0.6753834934985997809926011587280294 0.0717762545927564591230251409117913 1.0744824702923652935347761235470113 GT 1 -378371.4874391193028787536922075808730848 1.3472546113495680371219596000302178 0.0328260614876888059615298854038159 1.0333769253378944242683709902403759 GT 1 -18998.1978881822157355332860782159408468 5.0711713455745993039071567649365114 0.0759243772798147722762380630158329 1.0789613679186264993573789516040096 LT 1 -49730885.5543270818218060615911075640562619 0.4616514051179548532144120774441824 0.0060394375669263107721640131596465 1.0060577487333114843795172526338708 GT 1 -55517650351484647331596.2151563183763730148562560231810562 0.2448074008966121884710654738040089 0.0968839937070220480390698098805172 1.1019042661608461698682100733826189 GT 1 -60868669315480171302.5103693166744861132021569201608299 0.3771617666151192098878226793754729 0.0334331622704441591046512246744385 1.0340048283227832570740746999423573 GT 1 -154.5991231329842539819880200421830245 0.0420824381862179437791237754722059 0.0964055339228561633527247038770250 1.1013746187129922024524780771718726 GT 1 -10.2278408209138289332293436670106376 0.3920233679032612034729299778819506 0.0677435083906723763804596077211482 1.0701472965692503497106947926905174 GT 1 -7102447988735423078903780850290022663.2522224374755001629358450690925312 0.7638434204741133313566082958258349 0.0905534220211311428525090861705184 1.0949190205403299215806319645689541 GT 1 -6860117.1123443404634045944782185793337216 0.4789114577480753132708837661113723 0.0655290591236930490581892516831070 1.0677747484755107495050797441663688 GT 1 -364442533141492722476921042035131405647975.9571037715336816446672310538817018 1.3222391999747542342969301454702950 0.0975695250286783870946118034551006 1.1026636277853863552595016516861838 GT 1 -17958516815895116509717546580.2866794987098416364300631984024354 0.1141777315752172477097264247289279 0.0609060568120025717615905799882626 1.0628397587845333091855112724124263 GT 1 -239206710693749511217733196887365819245001.4397830210266190406220738579192483 0.3384637442666531292414808959253154 0.0234207616782614571061840599137594 1.0236993867227446063735460245991425 GT 1 -964494363554773791816594520.1689848781434247638426216635723128 0.3423044815995918016409164460862112 0.0299881629857693096864316281834226 1.0304470044517115360394515978332630 GT 1 -77416.8587535752136424547059203448662058 1.1582889568042237608549030916234108 0.0244548770062367777236502237698299 1.0247588637163215787742089626982356 GT 1 -1201569831587711775456783710.3884947926418169165503879642502774 0.2471735759914261732534411345510553 0.0167627340470877360767626214552203 1.0169048187300173915173549991177939 GT 1 -8298298765481945929077849848714978.2364797817577766271817237670011942 0.0563624765979918738382730861950147 0.0915871294412773441300675206808670 1.0960563004685385623982718186751102 GT 1 -20736435287616830690201308930.7016314758229601761484690587206759 0.4928472529453099387355871266636053 0.0782593860334248443643638550709794 1.0814914247604390688236502554502458 GT 1 -543014386018035967405931670.2109348915963968118557329813669125 0.0435326401071953338900643335992136 0.0626938362087275736058047435278278 1.0647453011377246426399467510773666 GT 1 -17935.3495816526081135611639323530899593 0.2759253872909727148108864354874826 0.0986170915789296274914052793210052 1.1038251300534898129408067983627002 GT 1 -1386224.3879493634664651740252030827881848 1.5820269102478655375138415921826184 0.0198875520535869429335040767153905 1.0200879710975089825643080666718713 GT 1 -315719790.9962061354671077475191379909593121 0.1113657462308127109689454057166729 0.0851268928424561824983042764712972 1.0889699040258113582280424964375581 GT 1 -74454878952642406833106.1545796291238773978234557520139664 0.3003582884553863926123533309064313 0.0330211099346073280425639277383981 1.0335786141028129030217803983550556 GT 1 -9714474485572313111951357707645.3742754520902484308452386446587987 0.4854095596611848677719053775681019 0.0291499519351835660009291426716553 1.0295832530337016580051449827148980 GT 1 -16431.1609721397998756463389167555676122 0.3846550844258193717545585116348479 0.0730069538042769124039465885680211 1.0758092148514045531138982614586121 GT 1 -71637424396869008327665253203057147894102.1083904061422416876134049558606924 0.1199882847206836638072311238642867 0.0210834809869871390272049932709265 1.0213089117799944087727320769763206 GT 1 -982257.3870099953530824153390533440578150 1.0814785006615878595946651180665941 0.0871449867659293230289105908019460 1.0911782135890144906652019875639169 GT 1 -7378416335.6393146023899064750919917287210621 1.9010124387481802397911344117992009 0.0652038717092812118273266272718728 1.0674268180774887862540272116411698 GT 1 -53793258262671.1344676407875092795837497884127685 2.6078989652224459514454493641404433 0.0583592200144740666901936804224058 1.0601314147284275375165045793049507 GT 1 -397701983620.4678859368315557691331520958964269 0.1257223936685486004399558906306442 0.0426247501113986818937843109704990 1.0435598537380760745789681102540227 GT 1 -18099150290893.8908520134189829727622561459619712 0.2712726478229422823526301787368916 0.0761935362590199406235129408922046 1.0792526841049575716962224676562752 GT 1 -2124.0139364071116938139426734763355572 0.0308604929021242118544285733416317 0.0983005134711378125045607303968643 1.1034739779243008948403066043660969 GT 1 -58831429136720917107403162172413730483109.0205282230542513126479883048688889 1.2270826376752013384190823351652723 0.0625491792072041477371236207233588 1.0645909803345485423305020068966042 GT 1 -779149630214779888737.6046627547429257137567601274181583 1.0768501929466683356113316599862469 0.0677603508275220451286611549903661 1.0701653630446714944531976935173931 GT 1 -85085235698013948553951756206.3931908745161785027567122440282373 0.6987603669080396967088210282887132 0.0348708202854804390668380213045008 1.0354933216131298102862994404669311 GT 1 -2153545263401784829207166871720562851593.2537572334782667758663117297458509 1.3548185595581961302728578829234465 0.0934364804687809235888098970219878 1.0980941800548776958556308479517845 GT 1 -722734006312875514764837631.8892326923663814115310156690807782 0.8741162707171085414807867211375709 0.0726631600859809663296377035522132 1.0754384138145336907403231360483387 GT 1 -13396216701799.2595398143559885041815679071376502 0.4434233092674172617589501735209901 0.0884587620105640876883405690840242 1.0926184439894515731843606486675346 GT 1 -6657255742771592458658863.3797122757737349064779203883871074 0.5763481971063614595288401888124931 0.0150035861142148125064414371898417 1.0151172785417668065636119976215010 GT 1 -593743535966297861134196801.1080811299277452378745610352644650 0.2164943453068754364832141232321072 0.0631604629482287010911681322403436 1.0652432632213913841545777832303403 GT 1 -18247789813508334552131645742499393036619.3511803228880947049450075552815918 0.2238466985325072957735000803153658 0.0651716694996042561258782896608543 1.0673923702935729063669450681779847 GT 1 -293631340375674390248112385.0539460157557141371028081775686625 1.3200845486997120490638675245897105 0.0300861766593071246182627176186452 1.0305480533481968612539134402996655 GT 1 -83462944353637481128908964617153.1142825794981038693301311371685143 0.6897869117178697096402818886291656 0.0241504753774709566839254030377965 1.0244468800469938930582555439320482 GT 1 -5321542214589536253.6664583513858051457152519220890678 2.6096058372553874354397662689576198 0.0690022817515610030340478797174990 1.0714984525690411263263862794616193 GT 1 -166156412716333507173455483.7687218486525644957067555562013344 2.9471298892708702989974624841702926 0.0124707279693461481002853130317335 1.0125491400835047525435343373296474 GT 1 -281079.2457898026195026655166253064217882 0.2882417120806576355529785455312455 0.0582186755767384461528811463078918 1.0599821710324259892396046730399074 GT 1 -4868548295863507194059438298738.1568055060393939196472469265778700 0.8821093492562031283645785612193679 0.0872420515474976330502563228317371 1.0912845502372491755837542123302785 GT 1 -185696784998597864819.6064128212312651491106324042191503 0.2061692081551633871349922109262687 0.0190205755390692184821164981026428 1.0192037936826744648321440433930133 GT 1 -26434063583122591349.1097574721002931405856367054960023 0.1889830466670273599090239152838035 0.0718610635317942212223027981309701 1.0745738413804881001238760739350264 GT 1 -631987.1913414267735757061228137220179584 0.0437531676849688325435023118348568 0.0311718560119184635698681054735989 1.0316680368059166423321909036440355 GT 1 -1986672541683686074045498706101656.8662961342431640059071415932496028 0.6598056813043104424401150538586950 0.0282217723720210262088778774060893 1.0286276614309154459666464623799694 GT 1 -17839609598732562769.8623283218722179341178936526599193 1.6286250099442670047371158906155878 0.0761240791476170453859901183901894 1.0791775011492561258742252723627392 GT 1 -718895300533442306634055010276904163206137.4144056239002886109021677352319346 0.1239752174158431086499293376603598 0.0594620331264403814176191141252367 1.0613032622376055811432906100433536 GT 1 -481913517892237293266450963868.2825802556184434756615844204604084 0.3517079997032449990056260960158160 0.0535868788157729850714487902458098 1.0550761021027552924718351219982486 GT 1 -1911645188290.3432516233152482263621127425230603 1.0398699561332814830343985364846578 0.0989088201887086373602438946141520 1.1041488280353147684753599046836730 GT 1 -486820070383935709440653972721043134.6418795178928417959770148945665870 2.9356125853295476638488819534443433 0.0253457801655044988033495728989081 1.0256725172097640392012241849141785 GT 1 -890473408841854207663486190280840282.7952765863414813578134105607952834 0.2207411604896073392974174304991468 0.0580573582784672628160940950671606 1.0598108961518545135760579911448438 GT 1 -2079731344626349859147558430.6840941116311493407105679408057718 0.0631331050294157784252096105731089 0.0585440430438522696940341627631361 1.0603277116327191853870729463846743 GT 1 -1619920.2681410054396960458534241641929535 0.2759755059735285837045007139874595 0.0777411646252764260507282250202776 1.0809293623129949272967451781715372 GT 1 -1640389773762564.8046639162435239674539416973598956 0.0693780873458372780701004903243331 0.0606436030959109571290752492732080 1.0625603223659090613094874876701301 GT 1 -6787.3565810670083618156339095228456731 2.5029988135817383904582964708539374 0.0210453444910485551940190049732191 1.0212699546755233054072304676197118 GT 1 -26936591802734082631814251178256604.2088330017246349663065060354799866 0.0011083812992300464060059198682805 0.0048133607260128944315857215933198 1.0048249822541540130567272320416926 GT 1 -25139033269.3786803616814366434254302129859988 1.9298175495742131008729503159423390 0.0904483190099656514187963164959547 1.0948034591199005969881349376328275 GT 1 -8094374672349469270892564250746735950206.8642035589584712597344552747062740 0.4461703809015530826598792167712099 0.0958969884292671607460331389717642 1.1008119742292852153359986397463112 GT 1 -125691245465094.4600375447022562033447938786009927 0.3787074869446125465276636282873777 0.0138339761685509564478700497425692 1.0139305573862211255652187352997294 GT 1 -192260611752852025892.7372051203469748023177350767718067 0.6405214248450951545641519008911764 0.0291647778428095640281180507086353 1.0295985242085451392063788630617229 GT 1 -339106050100562636121962573970.8362738354208067184546690469069499 0.5457656461449704935605232643697588 0.0182502945290547701979278568364824 1.0184188855281931966749908071690758 GT 1 -185.8774312303618323358146052893007642 1.1013733025279629808259168377062147 0.0271894054437960685035250757213517 1.0275658770439671902770932134159833 GT 1 -6451.8874140509548344623691531139290454 1.0470502533752765465550438836092236 0.0011089253614743263642893102355568 1.0011095406741355919071853239261186 GT 1 -267960592365459438518344389.5605553236914342598259837518551076 0.3415902810624358067745903541892999 0.0243270553637207470526820392240954 1.0246278464355579507532882830274123 GT 1 -1383777860004962034475758284052.4848591465196216120651499378823188 0.6091492732224576860677780438854227 0.0862737076237383198293533803760809 1.0902242136705928068654535160526064 GT 1 -21634982134161593509933822439544000.7946627226650517573861088800443166 0.3094359397728161119310075930656977 0.0930411580425515167345722909987160 1.0976582081133279633044732549251352 GT 1 -81978372180847630.9535627651207748151624157812613936 0.8155468692705972677590008810994306 0.0348674747519976884066017228806268 1.0354898552090933493677685356834507 GT 1 -8572198895967670.7123395808530695766505938313678660 1.3854015062172086715214176584349034 0.0815736598956938847186236279186530 1.0850935734009480854700757949426374 GT 1 -19270390354932818292608877499496755.7772980324737574835387634037440753 0.5797226635960767899250403651225594 0.0403657139195093262461452411123856 1.0412030191003907153048899146991703 GT 1 -294717945283119910521627658198.3713306119807286474336654559624997 0.3091430603573799180451141129859367 0.0980171063072038507998794914694254 1.1031597239632110613778264179044092 GT 1 -950180386303438445463032927069779201471382.4133785224002977185968612711245524 4.6564280406539997182392479804432245 0.0014549633604044067251979488077093 1.0014560228473956678585688045841037 GT 1 -30320239067630026148688.4188891092416569721817096341725311 0.7573790022200238544390855679139552 0.0412855527356485940907422450753441 1.0421620093722278119338765057978039 GT 1 -1513017842482406.1434734016901283575549303443405686 1.2408072990847844887826286652110945 0.0911242994645022137059296936968023 1.0955469372401072549858021087532193 GT 1 -60591976455141134425362770576650269523224.4933586507344012210562830442669245 0.0060080726222971678934973011562029 0.0171893546429007967771040817794767 1.0173388067320949247051982758661696 GT 1 -273954275307483355393717858914401813514.3403874609767161784231896574718384 3.6498514989288496965659231466056405 0.0020288176396632075513518342257427 1.0020308784780192852374650782619169 GT 1 -30620050298626034547370643907.3600160277962514403204516901912811 0.1152193338104100063758514191146647 0.0696898419232468477873260539832266 1.0722372451263655608109025169158677 GT 1 -12634396772102370.6916170322815201627649659034899803 0.0588201913365746473612082241769058 0.0071046460155069260057591889120584 1.0071300041916337175671603285959174 GT 1 -1036.6657490827566190542998640863415751 2.1611857201622951772623913416549393 0.0646735573079871864103700099975565 1.0668596740584418538365255823938439 GT 1 -5916610.8165984916264932978475227241378433 0.1978438911315151525040173530479425 0.0074754541721188254275647683586071 1.0075035354138788220150963103188272 GT 1 -51310549434509676393362.2097421775497075334576843758893856 1.1306445654728919167245356648513613 0.0611177838525571024100411675070049 1.0630652430542873268316363097423283 GT 1 -115315895.0534053978482554130815339433633443 0.9469605117599301175458241021313040 0.0285995343234084814839431961799520 1.0290164696835460342269675838219568 GT 1 -1.2960238714210678134801287339647751 0.8597591790920736644190769802700028 0.0008380103632855750422639707297686 1.0008383616902608725032808916975750 GT 1 -1449018829.4257674438586320785888501802021045 1.6603772240682448646323200006898943 0.0142834630317349887434825149963029 1.0143864535738590966712818423494048 GT 1 -225121897.5744367835711471383340689415284325 1.1381073118669863792049368271072416 0.0986386776428856562652266247686028 1.1038490780585240516963918169797114 GT 1 -11343346285131983542200307.3397886763330421308728693831485579 0.2796455043169592751228973728875135 0.0244490052254238327120152917212004 1.0247528447603516608268189564097060 GT 1 -4535923721276033163352717.1126563620380743904356060314498066 0.5398756024554605110888521629747642 0.0257364479362274747862767384158831 1.0260734246072834576504100113550395 GT 1 -36502000287249596075018278247.7786005477086653261199507886008219 0.1975703005493865575444149717177883 0.0915368514587821289673983044020362 1.0960009549392019417450001038786896 GT 1 -1042492494709056.3244527031194236922977137881878283 0.0088730338479903262952330429736535 0.0372162941132902640246316262094291 1.0379264968903887894044692549345650 GT 1 -646190166650057590.3429148829920152695116950118432636 0.3841211427630442544243316282245146 0.0676998232005144600894111900183892 1.0701004380415305244895436997054586 GT 1 -431304152396872762637.4428764657527444431213144639883836 0.0196164236516022592590296673385506 0.0926975783635192488976510995757540 1.0972794537519423184202628809802019 GT 1 -582300380703591582528237957451.1238228548138959888513346329341516 1.3508640037469278279323819896380234 0.0428629264698717651394495410285423 1.0438086652571124305289471270637828 GT 1 -731430708494915519832425863641056.2949618384167011320698211531497547 1.9208194933720588668621076356959109 0.0588154580254404063609367302965451 1.0606160460052376483016331527844297 GT 1 -1429347084037021318316258748369848456.9175658081401303034012649614783842 0.4518766010404870410869310966828447 0.0461217703862806976544415287711881 1.0472192575951132944289656941274888 GT 1 -1266755186242630218948880557819085.8055985194744127685099310852426076 0.7287447016675288574032334280056449 0.0720386254185931642643782759597034 1.0747651692804766421162475323662678 GT 1 -13118173815521851279485621247844274037317730.0073243804899082339264162319233885 1.5728600479036471456844652436723299 0.0699053406117616661854330389339546 1.0724689137260763305619917018535209 GT 1 -1460.5796338076262957991351157605861578 0.0771952879162897870748834786859149 0.0149052461180217665988524803719138 1.0150174456021712773974072718781027 GT 1 -14.2160826728252123625962757521242702 0.2199651731427731117263700477706247 0.0317948284817316130260623764764264 1.0323112601168478308413630044885222 GT 1 -31444.0885061545702202985575658362253677 0.0665541394229192106747989747601181 0.0348673625505593019899347316154957 1.0354897389541450088804496911600635 GT 1 -1036831092368399519068622014.6964746027922697258990887811107298 1.3886545243986606687418333120814123 0.0880080469069324558219147258607880 1.0921241123095962929657265851202685 GT 1 -164655365277193912770824772610866785003.5802926305023327656049737161900278 1.0850340265275142379278275928851746 0.0386654202358753113313238988239487 1.0394327726816241253715641025340966 GT 1 -177977773387382029583617164133595.3210992215827609768257758819970329 1.0653200536976184379831211916687172 0.0744599432150846743438977354475222 1.0773778666681129652825124040105493 GT 1 -840924483285431827096937.5798047906344738150389079907689388 1.0267418430316159614796338287092232 0.0884841890002329333090267503682690 1.0926463388813690723529826279058197 GT 1 -1733915263947054414089314114625.8110511803896943594640795279896762 0.3842617868567676325333860326638095 0.0591267622332104368043420600922343 1.0609468586019176809351112143813467 GT 1 -63917548699462644834118582802226241867542.1035553151434761583549280269492261 0.2253294315052272538555542321934433 0.0992165251994775424017068722655718 1.1044903667910461561222367648175929 GT 1 -52764040492.8912746655659837117483747493423956 1.9564431891171796369519626793374271 0.0533523849783485764066220922056728 1.0548283616746338663901095626004916 GT 1 -5882221731452084761.9351706563214205862460972218609998 0.2738417586547436001333722689465599 0.0273684437383719328112212621100195 1.0277499362769863283916111423022529 GT 1 -4850297052355373.0882904397161634452962885543433121 0.4051337666023694643141164581775567 0.0163442065537882031440554783015533 1.0164792465336885517124779988047545 GT 1 -315246437466622721321047037624197.0516336725234213635861365443992025 0.6982056336985650107220325406778250 0.0543321184966042656961665020305804 1.0558638482069765470066348074935461 GT 1 -1569661760795597.6406409125568615507775761658682021 4.9451418914251515202542599597623623 0.0914095627103486446857910352115822 1.0958608503769212475011605146987517 LT 1 -147396.8453085830285608189192190228140048 3.3470025263555754217710784412174700 0.0666175242253360955178749626745216 1.0689402202573404415401526502255845 LT 1 -4701394756985102661188213984958743.6281408594751240065560247764305561 0.5340601791031393016502726079581006 0.0904218845832722147116347605340087 1.0947743964034880441640685161663540 GT 1 -56756750732723852141294877865220939.3753812762518696532822401273589290 1.3020335997124628162059526501720069 0.0648467797719799963670787420785763 1.0670448912173577602515788477409623 GT 1 -5272353020823494099810195900149825581187012.2624932600337352119879574440573889 1.6254266323933246486750111272701726 0.0096265893321185305964564175715075 1.0096732244761265478259396347538244 GT 1 -8126989810.0616538674056181132906892345622681 0.3128044052382780132386841582960036 0.0167420333265664399707469826650301 1.0168837653146023803579628700197514 GT 1 -174742926469951470908163941843151459.2628164892163368333348301965740958 0.1801008255003688071360361024490174 0.0022617692880446157318226109201089 1.0022643309515242139193634421623973 GT 1 -65870387969309878955153616176776392476820.8914535554114414290689239997684102 0.0681182233065927065839294917460591 0.0902313532034442164171815965999811 1.0945649460837559730335141151555939 GT 1 -24782441.1440799185979438994293867742815072 2.0460989030566119650295315509362142 0.0208142727832496555934100422586308 1.0210339432935918061474737142347605 GT 1 -11.5004584421787507526008362174384249 0.5114387069171100464326530414840514 0.0806939980843836222643383649197038 1.0841362393448616386370851350047871 GT 1 -6717511139042954414112221.8702664444860765691170411474237179 2.1530261436187428014756331572274272 0.0091801973726048420781743897860944 1.0092225950634352277116922425308082 GT 1 -456090119128721418358834577237724164.6096400446225946663575143146538965 2.1861601947238714757841462769220924 0.0297095007905120533048216087256929 1.0301597685998849556031160224603348 GT 1 -528444970795007255497299965569.2918156088366936555969695259229268 2.6376978456359387928222063874230050 0.0280550236964973043255774345019636 1.0284560848652856111110580766425648 GT 1 -139368951986714409350475695087.4253917374788789161086059237517130 0.0617714864544371643215116900029848 0.0307662317687292755549024760180870 1.0312494493020248504911548510427680 GT 1 -3439404855514556254568293832677297413039177.7294660454600360806638654589410143 1.0888195178333517693958560115170675 0.0804307695768072685561597109187454 1.0838499463927949643882867319396111 GT 1 -43.8804361554411132582767028844039285 1.5517813970923423149079194192464677 0.0084213852101424762384518153921887 1.0084570454212896362589223683959193 GT 1 -4486791511465.4526541505095191356333736252043952 1.6118705028412530348686178763221581 0.0579145406919690201021692912311073 1.0596592873868963316387513872740100 GT 1 -4025135161948.8336625793699536354455799919870131 1.4218866269270132295364696199101482 0.0102693294189990780352117979341821 1.0103224227839742654035948755169474 GT 1 -2390624566542094266233498674.5483100162209488421527079742246883 0.0628658181320138995266991935864620 0.0742215041857308882050004227028412 1.0771202783342874005322909218031296 GT 1 -32277907.7516968078655503242929472601828186 0.5219811906450858237198441001232488 0.0237781299887652375570675306656644 1.0240653925724629949244758396204355 GT 1 -4036926.2900462939605990723510936433421738 0.1423893431849923206320545276460440 0.0206628864685645307963620316909004 1.0208793509530411197607810097339592 GT 1 -537599928657142196225.8651961938940311147874479157405547 4.4567914285782694429980228582458675 0.0768494678240034025505195349346367 1.0799629676621926555608976289719063 LT 1 -193305172148.6627418878692264599923142287840059 0.2017621495829289947383875928646195 0.0792390566613873067114991617137202 1.0825548384833744449604520253692459 GT 1 -1361437412.2395114081967135150286790808405068 2.1640412026615581849657921008643255 0.0780299630477451972117854909380544 1.0812425538361978331249807451251820 GT 1 -68273900532053905419918969597586699263.6926345927665833531099027377630919 1.9104533162369487378124218807569095 0.0644017105023827024381048852387589 1.0665690725148945256768768895345923 GT 1 -17731618240.8043679769730287302110733905943985 1.7206449517322436013090334805377944 0.0519288966591752336720600059513588 1.0533257760156621649751182506840240 GT 1 -38605259960756042662.4053738769013314254152737548613484 0.5991903960276803350174465344878870 0.0780784654433078817694014525812293 1.0812951625647405632746245641078250 GT 1 -100948112129954615215352930274246.6508720716007155530013629458469527 1.0611064730401540011599047267190156 0.0067177153482983945848144074570935 1.0067403807616074923996686576682343 GT 1 -2.7939373330545254702585171159357821 0.8766333100391060758282668276995943 0.0383582787647775990556390797757678 1.0391133288345523410460032726344108 GT 1 -6836420938923412786908553.8034987086016570820403111887001608 0.5253195930567354209219593722161658 0.0426305411389057975192779269223312 1.0435659026149635994456228987055451 GT 1 -102050824391264782825871590.9598823026782985052079539029349031 0.3049320808625587622664892104283896 0.0239711909934245441345050823971272 1.0242631755799052414281840496880144 GT 1 -22224984399794.7749090288131345643008044652537876 1.3596470718574863692442775034237960 0.0834069682829511260353486530432385 1.0870917092521262487571092640836465 GT 1 -349189975471783.9209372810698421673159402879924567 3.5071301176839959723239910469035042 0.0732904637640266524070499665999343 1.0761150999104720080364684499344652 LT 1 -100145396549984627541.0282802506550373558560031796679559 0.6007981114475580593741405690894508 0.0189298801415056687724126598290760 1.0191113440318583265547863924960549 GT 1 -11357283716039387716590695392612.3401722465767230723178340534388497 1.7953874732072016023962904791879096 0.0131111752444356815792136867819571 1.0131978854516657442945455010414426 GT 1 -13853858094605.0041847883395877492762775120285486 1.8458622765144040237391561166311998 0.0932205480139433002671903743136334 1.0978560205238347773350118037058573 GT 1 -199330764576791472789.4777045661811248853735944496488303 3.8192461246115080080474979686593004 0.0352688470174133066725620975699820 1.0359058144042742311449028449447965 LT 1 -378847495189647437698016.0852939517383886686277184851506299 2.4728493000825383325852209607392878 0.0433817804013780599030571851608462 1.0443509017134472796641447583474044 GT 1 -72548030985816138983184472222588.8813703665467509389074770808515878 2.1959378762777464738608617429496837 0.0420583234902696567785751695104873 1.0429683833345776218566291696197495 GT 1 -3758865257438.9986290338918864225669814696293185 0.1638065257169725948718722107163405 0.0607829171728757746462708015640453 1.0627086413736277720625757828533468 GT 1 -1283191984033440449948178.5230170348668359982779197022339057 0.9922176977125431361368326621499546 0.0026439405548363451449891882845249 1.0026474419386606000923842511988609 GT 1 -952.8744034879810432173557438420292979 0.2349686254375747229743903758924141 0.0183072054861999602150187976604634 1.0184768561152224272647548766283607 GT 1 -3183209257177.2457834321205070201137369926619659 3.5957102315536505086935345057515491 0.0090600356538947446446043912271830 1.0091013273690760244584907777232985 GT 1 -167763222591686131651342109447441391676909.5021039156714087585636403452281641 0.9923049804901186171295950167806504 0.0344453333791550276476511683536650 1.0350525587051877602676732987396456 GT 1 -3.4327634941021680437343953442171181 2.3250502720255482522889902988831587 0.0195434797486901996584171176309048 1.0197369787947537416954691879661627 GT 1 -405793675099523690739570.3409908627086169268583342217673305 1.3305576655381633495065821980230522 0.0647987098602668253124555231716458 1.0669934892917257008310948551327582 GT 1 -1091374700640055802104571.7798774891355810970798209381353142 0.8769181045272907877392668567189285 0.0411436451140059004109991701239915 1.0420140016723372884665050657785856 GT 1 -1778676959556030897816.3665638288137950482755505983422770 2.0000878315096328943992997561306552 0.0392101493915445906171322028330645 1.0399995717521161969090846196577433 GT 1 -467.5385118666600302014928684438024727 0.1878593469373660956054714345374372 0.0742125907375866979663897887180260 1.0771106503236183555712361114819642 GT 1 -371450672.3128909863629960037880487556024434 2.3919060763317606594950648715993739 0.0689117686488506844210300946736357 1.0714012356787025578545607365494567 GT 1 -130427994701490978953049813939296.5651853140267943656892558206748444 0.3100857147712163876452688929261524 0.0932724009265304533769378089324021 1.0979132057579048506249829936396959 GT 1 -107.7433885655832482726752482446439815 0.4374831133125745461476182708908123 0.0070221789279935418315042677642258 1.0070469504613183944636240443317359 GT 1 -1121907.3335218314295634066659793175060363 0.6157868232114681856376045334236478 0.0929384453873181836933057498607785 1.0975449650036724123486400239467212 GT 1 -4822220444698666681952465538033.9914658492992198607172393973334184 2.8525244155465167132993637542036024 0.0134826450959397305824362661911545 1.0135743612727312425634468745271742 GT 1 -384667.2753303403713762102828680647786158 0.3398974979908517485721803794117400 0.0949875217604335299991490449417533 1.0998065472672478469025518742765615 GT 1 -33063005917.6898163433988090722098896577378228 2.1353137317125729881240695807951376 0.0845027401092416213463225873620727 1.0882879078914299019177875362605498 GT 1 -1416632924513118061233418860555215317862.8543279385365100489552467661805229 0.3981127658095761973590902672131487 0.0851505751148911593725139358739823 1.0889957902156806616073795562188487 GT 1 -5849232983163896.7328233525930555146856020540111889 1.3298831788242896168148729159238095 0.0357610132377546858046137362290211 1.0364161035174963620627592288068026 GT 1 -4454887774643329282876560473.7845324488238270521300717326524064 1.0598479660314970471465194410596516 0.0236943362334587144053006704690054 1.0239795615110225039226259249760385 GT 1 -23255959937408258487687798237572567948517346.9332223937990354058464642633325795 0.5674088854509075772399423060116248 0.0441765162233961024188545580905259 1.0451820233799151117687507848829545 GT 1 -44044677.5765802642682731811997963359198149 1.5202658079195486904140736434980303 0.0182856363148530239044422600246559 1.0184548849501915432943100442068781 GT 1 -3383647489586552505115840963922304.9518579691313968325763648966023464 0.8963337927759499948985061514460631 0.0357619874337106861330952404003402 1.0364171138442530095219361726481606 GT 1 -136507434849273450.2142672415517686582625295040588442 1.1126852907042649853022215450972718 0.0264188995472849057051239359290230 1.0267741495219734142111580717537636 GT 1 -21920176435408717525493197382247377273.9863230567803188143771247722591971 0.3598244851493422703480008643512947 0.0779417088817903014125651103448781 1.0811468349530561352796122121883028 GT 1 -155371.9298389966992324408134461639197397 1.0944157753015395656484151680775300 0.0714807025968132636275613283780557 1.0741641149878078862175593798312374 GT 1 -115873457316.8611732700733986659462928379305576 2.1326009694586100217655251665796446 0.0831917902845549047200096045600695 1.0868569783110518369302936025612121 GT 1 -11425815648690059780.3771810938547459014027456131785856 0.7300896116581876051611149523267382 0.0877832138882037094876327927232883 1.0918776130849898084365791938357762 GT 1 -83417983230929188054714452730714440.1752782388784580599688151981424135 2.0059712472806212375811787879644572 0.0102306293149712423217251190750084 1.0102833218966532275915961956418817 GT 1 -163713802194335794882742350312453481348.4883273462374178811120245646402202 0.2823876280287615964096400816155532 0.0374174547778295911745656280136870 1.0381354552276977787467815614432471 GT 1 -70338.5951965927928515125394859481163687 0.0630290841195724965289717035224944 0.0610892332381415932583952760216524 1.0630348343620858306227719696640118 GT 1 -84904318351080678772.8722259936614274036466759500637342 0.8864830565644041342192737812319315 0.0030080558917019958697491746141133 1.0030125891850414557658676827063394 GT 1 -684653087340090604932341390787.5063816383379495157132736304185692 0.5613498037260928259185161350796825 0.0309911764938173336009424478195812 1.0314815613472940063798135991768477 GT 1 -39253692694154616665438.4171487996594744841126007561156433 0.5119283726304992118010929740102740 0.0831383793265786205422566853422574 1.0867987225039199035326044582588095 GT 1 -8192424521971884376045407.2183028063233300330107056939010367 0.4252260545148534103568591742083877 0.0247159059640557686239916287764459 1.0250264719283558530276367164694748 GT 1 -2842032256930463243861508917634.6953787417658569603206730172280220 0.2944035879662439921338104978772681 0.0420832833513161043668375854788160 1.0429944393950223730099510868542882 GT 1 -13267678641312693507723.6548734777290427916717402817821648 1.5158643103983513056541521056760823 0.0670588767704072559818194373209419 1.0694131849174176331102631266065915 GT 1 -5411274455031644335448852280045.0448418679043953831553704134441283 4.7533558574492385555818370342651707 0.0199662674052354774299260355055021 1.0201682868948431544048785487513712 LT 1 -41833020357244810227264026608.3421076660863489850822297634304847 0.6952047250923296905321952867294252 0.0548882206531808663812986287930884 1.0564520734604270048101689162945882 GT 1 -23528619615702382702636801666462308997549.7960547653161843881320222545232851 0.0342868207514588236572628758654921 0.0239868305991138699368854933990992 1.0242791994214646527006626098857519 GT 1 -174998132181377351479175125708174727.2676923943437343581188336385495863 1.1804586476098609219306771442610324 0.0346577489903603023066254600957902 1.0352725762629586037437741280081085 GT 1 -2869837574719280542118993699461566320499.9735698889681791740007387711931882 0.5121883776512162623255978344280777 0.0155113507210351568877974084109540 1.0156329103965772534363833840071161 GT 1 -8004880836626513197817679017787007.4702528688510001478983060270750211 0.3697349281461162319273221637279036 0.0437303183937349882709165773448518 1.0447153119812882710549436245000702 GT 1 -55594430550810268510532.5201879150155139751056019269415880 0.6783266341280794171309580248094511 0.0558353263436937454594115729087963 1.0574546856174204791561972296475861 GT 1 -6626136162293.6057869868676272568428070366674978 0.9192605155331254858735632561789769 0.0187138181802640962871870288696075 1.0188911373732307555744905533042205 GT 1 -68289327715839295166855293701885202713.0395974766983572416215604395683261 3.6100577050096403075937471100719775 0.0306556430844861286405431303619244 1.0311353567277524202399153022510257 LT 1 -19094211783171445006566441696671.3819581344471589362659891472830655 0.8559472651213985663975958084875403 0.0320854142261269173398183089095412 1.0326114334356549585167214076631921 GT 1 -138107979625.2019431394134470424556873044444796 0.7635761514747988254495780522792359 0.0538550671424390884835748647347658 1.0553595156845880941667963609241462 GT 1 -348778.7871410223515449641408438344427158 0.0011803899963197035370192096296238 0.0729597129441512644499301999547517 1.0757582547534509514007603783478501 GT 1 -1226819.5933093215936305268791927265512134 0.3435409352566237034705020865853609 0.0468716879782595152752974243132688 1.0480057442843424962321201668525705 GT 1 -117271383651.9854581259675558303237476685361276 0.5323130170990914381825338075621683 0.0951163013645097513582512508928877 1.0999488533353405449608924395630521 GT 1 -1397545672819254779769782006354013544.5196935384813450174000125899598819 0.4733633359502400586350789957986638 0.0691595303323714001233865434770351 1.0716673701282628577788655208871044 GT 1 -1126973988534617544272992.8765299757394262753216765476358974 1.1840332822867805366009226114877844 0.0868128749271577476123471372870599 1.0908144631196617541693271250194749 GT 1 -3313342685854055.6863460438427872199251877064032000 0.3853976839032767107932661367581637 0.0068886465817096026237048636110306 1.0069124828370039782823281724722302 GT 1 -451890679335870167706937889099.7540640456055478561430354137226805 1.2951885862282316856560198997104158 0.0102694742059450294002647157468112 1.0103225690732232959079429828829821 GT 1 -109086887767460330258969114014362348111.5635131258562579934686659393586926 0.4560804213001846346286340161258606 0.0679866518610825586619097187608794 1.0704081423616402014407204616353294 GT 1 -576351791919867845281830.5998225617443278462719121172262514 0.1653941755977277598960958374532756 0.0133988876999452680255082386481032 1.0134894627758219775681838364253283 GT 1 -48505841566.5064436958524128872811618006608166 0.8364171648178361770394465095749685 0.0161113704718741497062136512168698 1.0162425697092344920623265618649962 GT 1 -58627923869217999085990358333905153.1978768749456821375083300287050688 0.0327011197710687989722363686903431 0.0332117576214972620375165897976172 1.0337757916060489576168015550307873 GT 1 -2355630675314612463435659.6522899103106172232203638034306240 0.2186102513682493291977406297537319 0.0744100550167315074048804361161377 1.0773239664036068611793927947429664 GT 1 -4913.7156823966593718902301706712748667 0.4245869422232676697245246382355526 0.0578464353148676314297380519066916 1.0595869978564664657480097492099747 GT 1 -1503217366187582552155.6904744809570187226532638240988277 0.5311484425242822849612269983429924 0.0609406105147627310814472436498500 1.0628765541858064059610105443030828 GT 1 -177744063420985402868601818877668.7560392559825104850227420445008047 0.0744502545652248063517629161792627 0.0713707476420968528530225339228661 1.0740457023224785197617335025811350 GT 1 -1051419209476513995941012564332478031.6454229378170030151393872775241392 1.9284085416085771835086540060339573 0.0556834150906388035373281342433796 1.0572938036889463984927260333466058 GT 1 -235947735914.2724246010875551535810466705108311 1.8507506495151909364584001684025777 0.0678432642123373091810053295531558 1.0702543069897882915989940415161575 GT 1 -3863797092617398315333.1813821197713100500472528747559119 0.2582368605935694295106886064137255 0.0422486008551298566968465767459974 1.0431670345359668769695744438919446 GT 1 -962231.7224640195356619304146581003365808 0.6711731457465534247114042950657987 0.0928962183400149188061034551655196 1.0974984124139314470649653389798860 GT 1 -146395059214743636672566756.9277924751481807414543194537933956 0.3359995253231289332560930320937481 0.0593514123950901814476295438672075 1.0611856548358150956414727415982879 GT 1 -315.1612710079803334741373667715157710 2.3402722846759079157574556030216413 0.0808643733507217061448402032994576 1.0843215868306655061874115230114008 GT 1 -3108710410166998488062839532.6528484623590980339223365362131328 1.5675179437935543120169534404140572 0.0457798000535474580997462474514215 1.0468608166141902858332171383023099 GT 1 -3963784460643061058620939169443910081936.0150180701947376205981925864538403 2.0359692332488837036291020896409509 0.0903143004770035675211948480114568 1.0946561242699903287297859035341254 GT 1 -22962.6433899838300072422765957092330612 0.1360411209967119237800847574673511 0.0467937336394421277514962211655752 1.0479239597542344706327152038773154 GT 1 -2005.3541369938885180295546163861005092 0.1832799772827602818226006361879157 0.0508236749473708107276129980035359 1.0521606967326081992361936108097872 GT 1 -39071989696699493785057856030297469289610.6597935000539359868295955335360555 0.8425075300926021169197355185359040 0.0533096297301954630739213552243435 1.0547831977910668240412439023262327 GT 1 -8613863736876247689643.6526084075206340713441037501571592 0.6745973831123985357320154654143484 0.0367161047342578625777369104257986 1.0374071076540218114696774700116271 GT 1 -1354238424900862815810762.9865590845436752478829119649065520 0.6277989896977114059040455502156798 0.0094218049946831596146835167786218 1.0094664709768705464704623239524073 GT 1 -3449289811445824192855849359469.0261373364980018899551492538825996 0.2852793399218549624704309109516187 0.0035950781542916490995665035739006 1.0036015559779411356707973917295988 GT 1 -209322226368323.7450527311143436685235709141709289 0.5661465594060393255979072393557783 0.0970121893961500291055832915423431 1.1020462244338357330604625377038242 GT 1 -9101428535457340198491476.4704789425585609129237870049622131 0.1987971853521341227025423294452460 0.0965157064099626335883797857936758 1.1014965530632839017899064449506710 GT 1 -9968761917.4602302695638180500245164098869541 0.5882341411420898452372001871021546 0.0843878242849268057769691378831016 1.0881623929197617443504158467199464 GT 1 -40243889354217767290529102768819796768661.5130540474673744086716737250795059 3.0642317596630698872909368093821522 0.0821225572643014644971976615793877 1.0856914019193935536681916912817534 LT 1 -163.2408082854763321571127154468186545 0.1491356588599796627889340960990940 0.0911346066377570596517792939518195 1.0955582778796400885388825542700058 GT 1 -4182419316301368902612856495.9476387181811742785850432700158009 2.9058224565041203700032246003585954 0.0149087664961396275361701492905009 1.0150210192527204174139034255159059 GT 1 -46227.7174814929408985362245682062451156 0.8686776426022364719972770412712204 0.0078548310854474029018821277544461 1.0078858427722581871557290850512780 GT 1 -24134290568208113010200972944509121933176.9811355009713940218080384967180976 3.4590480881477944202853457422297120 0.0111025427190946186853392662137251 1.0111646359695791373648085997421826 GT 1 -402113192956063122790363880569924578.3859404640364630812373203391033058 2.5035636771808879530356263820326538 0.0615123566524365818128570593976535 1.0634855894273727096751458199812912 GT 1 -139290720808281300140664922.2850075974220534704281757918178758 1.7401964975173328919966961445760201 0.0451098135987201119923490480799182 1.0461589331745278193137140313130787 GT 1 -5518993534738502558415623221914.2483838850237710723215747552985469 1.9111348897333274197250964507518779 0.0765744610998217669012162843168714 1.0796651118299609122609894493825221 GT 1 -5957979403381.8790990432162488634124844110754756 0.4685870421909751426410278669414159 0.0138242103646047487603795094968920 1.0139206546362214976124519929052765 GT 1 -156828740266534811256449631785929699245.0241562703156246315572694405794502 0.5371865000224022937453881294859132 0.0571716122890898009307897142160657 1.0588709983703712851865454668233802 GT 1 -1471802714637637376513617737.2797638529224669412991105735662102 1.8001063918717023459459200017416973 0.0181946232207348621824555703361817 1.0183621809225133534043582021995828 GT 1 -5.7527619886709424286900099779432697 0.4378981760558793188122400729369064 0.0472829113202948409963841903906146 1.0484372833255109768461296037468136 GT 1 -16843721200211662927569118451.8582766217307742891933946917357354 1.9193065776997786085877064158527550 0.0719234685787675441116229874371378 1.0746410803924200397658137426049822 GT 1 -16535483034452.6959252578676060010032216701822030 0.3463160593171249793036850529284781 0.0927802439384310724844304166565481 1.0973705692819535154981055288818853 GT 1 -7424565236660089537845513801.8551685999005747260696834372251672 1.1829729998692055143433382601477055 0.0063159209138074545690366769279028 1.0063359507246423349408981873750369 GT 1 -999606043776169517559650744459300778852.0217071344281062477478719754999194 0.2528794111932032922040517720390210 0.0978283916283802549558486948912637 1.1029505238317412663366686603154879 GT 1 -122.2526383942693848912576175150059446 0.6466778584096674104994792593025299 0.0052552662127989919661742346197489 1.0052691236954445703350122410916061 GT 1 -7357.3178718860133084123308247687084985 0.1383719249219750641521618533066860 0.0623464623108627416889164015800740 1.0643747610119127734872324306597243 GT 1 -2419234204056823362865923151780633994175284.8022896017308056263417418245410496 0.4858472854369266391297626639584285 0.0091448162830722933308216109267328 1.0091868867966607884055601430277979 GT 1 -5772477446930406282740078644481928.2888626198639151683064923225707263 2.0775906166798522951288687812534537 0.0735432717782814111536430897680188 1.0763879389111290981575937543179251 GT 1 -12347195170275585244.2244187228213330929157996281678324 0.7008578990708435212586948505378035 0.0772108769740195771942553298648569 1.0803545396766033811234298529100442 GT 1 -189870407635171970347961927.4307848554077958090453984167238748 0.3235363582500598789044080722063548 0.0461949254422392725744222599964302 1.0472959527738512618932657399574275 GT 1 -289020840028.2444374295236522911055844033664534 0.6129696805990439490555965201458381 0.0093191237901905102248965101864729 1.0093628185004464446352762997207249 GT 1 -788023731921968326487038329886068356171.7502540769792948183206387354831865 0.1788352801569067244836203373873858 0.0758779102100819623440962064145442 1.0789110842618206567218147157394007 GT 1 -321802280102560959262476444563379791967.1561351613092154506485637909971607 0.1485760563430810532377820442931854 0.0106040581842122877468876497214771 1.0106606818587683317221511301457701 GT 1 -2944639.7965313304981448436144919642594133 0.4432247309737167055642169995954171 0.0253764025057029559079977171974753 1.0257039363742656285781485277571999 GT 1 -4893309894343520026300034471684.4353312683793100888191501779933048 1.9961518545242131468614611717079855 0.0511056433791846860799928593589265 1.0524578073055816981730545150358913 GT 1 -3492630736772877214452074892570257189.1915849811009734902355419241210284 0.3194772398704741892068786090518612 0.0189248556217373878987706635054756 1.0191062225764188422475261471257465 GT 1 -162189881039660825851745468497092345903.7300605967247373195589864227141565 2.9051240113117043487681097458151301 0.0644863834287901808322018990527545 1.0666595779797901798601441875855817 LT 1 -18820261660429700327552970634.4585855934655656130306502272858812 0.9927384395229673625463015438159056 0.0624400128347415097784034110180428 1.0644745368749987030505707976699602 GT 1 -35772597891406008740000142.2141113350264611852002789367899259 1.5708777053365239307150988492348339 0.0760009172832226382534196665676522 1.0790442000717060811746337251120427 GT 1 -3915.5082461340150816258963675356917097 0.0605794139861092007186567138598357 0.0949191539478675758871183358549370 1.0997310066178449019024947173070672 GT 1 -3523227993.6143919641681640463881464696718483 0.7496399063557329699294504355298679 0.0234520434327831907397888186986955 1.0237314192033800387724551059699152 GT 1 -23509336694332821205500562521341.8026212754172129671594182719896877 1.7677665382442970922728197026673217 0.0217815838493208366824125520017070 1.0220223044841948309830587356411813 GT 1 -669195.5247836593428185202403278362040051 0.2705856869744369120619709867964737 0.0561421922244462938340965264456928 1.0577797515384808881726322926841435 GT 1 -18285423217469568018828.9048324763637873195230853615751605 1.1106880319008673265262682177764204 0.0262360849480786899939013718501183 1.0265863917304288024692466246804202 GT 1 -315588422014313621348543523.4997139062374324956583263541147068 3.1775505261567671619995765670606225 0.0398577141541223992004588791876426 1.0406737910801383431887202833152886 GT 1 -1276089085688795764915744278725059.4540580606437254469139631688989699 0.3230512397714237897827897439683606 0.0212881173485916950637262448881904 1.0215179773638160681025793144612485 GT 1 -33661866767836244.2596530875150800389835618058856301 1.5791539533008637644459673494338264 0.0456135311130040520982251481238435 1.0466865859110505548744817089135146 GT 1 -1222075632.5169237202260852217864718964587968 0.1989198096044695531729934749176241 0.0197620900437494832194547160680419 1.0199599715187571668530121263658279 GT 1 -539654836307467783858658257319249724801.3405049429174880891688243616917189 1.1720413290869369432348621016100884 0.0292701501726111997486327335856323 1.0297070679101449879021549959223231 GT 1 -2577046.2032465409574612883267497103141869 0.4782605203684240174993737087929835 0.0608757013303439170823166897990164 1.0628074350843532123646717844462077 GT 1 -3995577515930025385563711374075903142170.8754049258817100673826804008134743 1.4005981834571082590487350341135121 0.0356161603411505265721567341180511 1.0362658897018221653980025695015811 GT 1 -68090765.4359475090604205710013394946263331 0.0105562674389208995725163955439681 0.0209104118096929696256541186421440 1.0211321307402334117595769882662445 GT 1 -1110558593677679772298646259568549382264689.3796683828362074662757426841221059 0.0665159159882368557601346807784402 0.0451969065965012009873505139375062 1.0462501446782415186551127315769305 GT 1 -218177047036132884757771020332642359062276.6247931188518149099320769605759853 1.1554345700573717254849765831421367 0.0695924216564198879613882354365255 1.0721325325576517338682622108822461 GT 1 -6457753667106.3457368516340753527984324808079161 0.6630737390393615229922190945173553 0.0525506966582100851361336403946993 1.0539818491649105291956416308735674 GT 1 -14425361898441333991105718406506.6378525047701677524467608227777621 0.5703658884042278389842917132834368 0.0227327599166378755511702130384420 1.0229951330388819308040343546648607 GT 1 -1533777595551010317620479468554.3540282215734448669640283036444179 0.1267349528951060581817561557679299 0.0009946928001162607972931240506770 1.0009951878352987421638729036936554 GT 1 -162546161480788681691738342932.6469162942578643177267247717680211 2.1319441176120856119289373172650707 0.0400462618943060005293051772623934 1.0408701851546405157461410371277767 GT 1 -2166160517.6841620731603007256198641636743678 1.6776097251472701403141322310973865 0.0328540331003308176775070292867111 1.0334058467304373024576092589195998 GT 1 -142026204017.5570399437510252616304025727140243 5.7013162664604466712284801129858481 0.0258438378147030908636245595679677 1.0261836574054829444397991747355485 LT 1 -5443259818263209044625785572490.3571472586670444050761621727919557 1.3170407550943691117976520120329596 0.0671098786583786584851305194528874 1.0694678542645330265294188397192197 GT 1 -9753112.7043574324418365633128439598811224 0.6689953991237022544957695933574672 0.0913677775324825769056741045680805 1.0958148624209059778062947661119514 GT 1 -417299178189769709561972212986619.1732938594293882447799528315951592 0.1769367034639445225369048555691957 0.0893678434342530479928525613007028 1.0936162431032231429416921064552179 GT 1 -2995.2219909186851803289416569641151745 0.8758097798336832672272580274984734 0.0204557565108551565052251273637057 1.0206678731545118933545490356772642 GT 1 -122.1949182172595969218415261840335527 1.8828375257288558455976739718715363 0.0841082449917645566314677887710837 1.0878570926791846716340494269077319 GT 1 -2229083676.7830096770916667599972936236068798 3.3195495269477479618344992173485310 0.0621212306924992067717987143431261 1.0641345821372476594957001018626140 LT 1 -24767668656911783246101727528099509563.1419024196478283451261248754876735 0.4476792091642099273971023823171035 0.0583702779763603535462891495954774 1.0601431580885817126697797418484162 GT 1 -1469862727377472999001655525.8510991768203100369005217647040760 0.6109474935737099061782786670008957 0.0620939019389671191908219664149065 1.0641054436640576505997809326019092 GT 1 -14011029590414009098821051538.3234012639132975383333627273697598 2.1610038387270140952559986109002471 0.0185129660733182844126199503428168 1.0186864758198372724247883758455705 GT 1 -142286.1338090181026871592087170293070802 0.1175604525758349330717471412641690 0.0601861787003782845484263306706843 1.0620734857822552081371742562011914 GT 1 -20.6307724287214312919075626734248623 0.7711383333688978215225903881637329 0.0178221404561203352245623869355443 1.0179828673294117150379383411015177 GT 1 -99.1939975024050115808229392423177577 0.2642170391279378314710804602623370 0.0848806582657595842436004867853813 1.0887007940867711800780694234472963 GT 1 -610163340449612.4854654950139645743161278093188330 0.8834744274043161266172434658194826 0.0175763575465797994346750482121979 1.0177326558635516431875304230662318 GT 1 -6206668100068.9609981243694641888017443175884301 1.3437549144666342186943838039185717 0.0246962665255901429266924335688858 1.0250063349848260082110763254006215 GT 1 -17321308357065215904838487770641548693.9276514123764102520972603421203090 1.5167236691317935910314993586766630 0.0686944564632250521026539727972928 1.0711678670006688676300255484057931 GT 1 -9871785113530342033623331985698460632451395.7986626381071271896987516277940975 0.5005784471742191375297636699608231 0.0493886198879112255521708241093592 1.0506499433694794280651606094922328 GT 1 -1047.6115346847472524710412724681237820 0.0201302615651046326479310825322173 0.0591471613091141233426664323134467 1.0609685398403930350347585569839283 GT 1 -434508687.2246997421748815336442440739575172 1.3704135608518119867883652079601794 0.0907212418726765908748382486397425 1.0951035672101212337644661727775436 GT 1 -89882187556079117.2031661855176192494677501006090508 2.4879005033926969780838442573001827 0.0379918923856059072822354111893262 1.0387324004783543563334786807556343 GT 1 -8239085548270.8267336165385948938908836009167667 1.8202223880468382120609764854800197 0.0200201908695506536155484290619936 1.0202233104578755989000165092597446 GT 1 -234625683314158860682232196969910876.1411990147947435713799162825014770 0.7841119010404690970797036807672670 0.0145490709716355626160303532378285 1.0146559465987693834333796230853861 GT 1 -3021128835926109633.4595120270752668250780461686355986 0.2384303851922242240116175573826072 0.0778636340977291708718450145754953 1.0810621640818869128393027050310498 GT 1 -6934546354305025535779556.0700814968638139073574846160973587 1.6462886564675062758033932686612783 0.0886840652311485416979441887174971 1.0928656418775788465843829470268464 GT 1 -237092014940765594314204802299945.5281153293597173097067663875577049 0.0584917193750725022015614416521269 0.0411632892070347983538533554907267 1.0420344888852090000774809634369304 GT 1 -18461633835283862875462.5255961463578336407708703175305343 0.8608289114664192020301636619532231 0.0493991464880431369174831316919068 1.0506610169360658931413740670263658 GT 1 -184469408551761842016946952195.5212194321076044146186404704071415 1.9008158107964174155106488265569347 0.0555907551306636847287892408129104 1.0571956846728472594364431573828113 GT 1 -356854493109961274413225936936.4998148333120782285986452000444995 1.7182080059162765859542568579009593 0.0265595090866739514437222293521084 1.0269185850436512591257030111953034 GT 1 -51822791318173164564.8485329254223775991583046894663488 0.6245156631638758272252663787166443 0.0884564783593190812796472988141800 1.0926159387288124892067424331330909 GT 1 -16920034953224640327350572433520599343.4167350488262683866750806383147970 0.6728342207072128405036118725694504 0.0443494505342514889186180752941825 1.0453629667862284847419361661426867 GT 1 -285458298358007632310935392781580.9248470404412044081736454943277650 0.5412991572986646438830548746145039 0.0672766187125947603961257011280801 1.0696466051734700631510770524601814 GT 1 -6755803912481470420702481.7624571270243590291269589200627462 0.3306377213961874476684262044324005 0.0560181752109285765745586897343840 1.0576483664233928661562511029316242 GT 1 -20023608093372996595.2130837257281376298934441184749853 0.5240772853343126384590531987742004 0.0423999694886709745099420041343614 1.0433250928760840406488371367718006 GT 1 -27823295.8364071383588392239487038097657229 0.8261961890058057476624420393087946 0.0348537012583460093972559533580447 1.0354755842203835995506403090567333 GT 1 -38439201459640.6102117366760725240767175803454799 0.9336910422812019827733854405639628 0.0057067088542295570552549510510172 1.0057230543327912729648676110345944 GT 1 -4.8038731250770716759256976454311938 0.2692570210284363473517653393596983 0.0160781862892461374953680226302896 1.0162088426978293295207954688694886 GT 1 -25863346215038800998427.1451396603775722343360524459865747 1.6589465903414411277502373950892734 0.0778460164312129176922185299150335 1.0810430589919298550474429535843066 GT 1 -11290563337.3346527440896107032593147459579865 0.0032126773749864576450137212214903 0.0309520737856428740232965567577482 1.0314412088569085684678724446471498 GT 1 -59212.1898722890119019860751950250843925 0.2347922490334481210443681149537144 0.0598748789811383499966661514487385 1.0617423051092262084874655133964881 GT 1 -14886235806955484126026746441871758349977890.7928195812306287939033992158489114 3.0215429649888109350734576555045131 0.0785388799229566751956759613074144 1.0817946947568933659550556847049843 LT 1 -53.7787942628280461321260619497393365 2.2241194176610208738223179171215111 0.0856694980456765237225583786694816 1.0895631733769458534017773818364505 GT 1 -10375973119296348682551.6690049930572872745801843909451916 0.6543259736410880716612811532126177 0.0840484150989172506785967693179341 1.0877917706163585545417264333867154 GT 1 -1635668098210724560670.2256275318033653074144892215840812 0.4094355967502246468717880539405016 0.0165554267138838105312494916429709 1.0166939993388626425873020065328529 GT 1 -36571304497962707784078787.0104332884369768044816507285191664 1.7688728133802126948888816558469939 0.0431754221812913245879970176146348 1.0441352085961350611861541931031070 GT 1 -1558967277834888780717282025719535073761169.5796919273988939163032421911445895 0.8954398236241569883510298551788750 0.0173725299552812267953230701874721 1.0175252031507614357735746536996585 GT 1 -5949238524.0767532522869292399946078404120255 2.8430880435422907192589105793507002 0.0734356052879874709762781924458896 1.0762717324749664697760569412773267 LT 1 -91863922035289776951913916324411674501.6435919938701680828025859459433581 0.4408449935923261867077449810058579 0.0432668206611176014313732469897876 1.0442307358720209430615019441674342 GT 1 -51080560912799529667527778911954793631412.0497546155192649996956411312944130 0.3088501515019347458134717771457783 0.0846674223532505220139736978005937 1.0884678069088880660514652331470088 GT 1 -2167310906110555218107510.9089172310011570306163372407300743 1.5691789351576075561619383072539451 0.0578223277762265130312212912547872 1.0595614104882052674942491882776358 GT 1 -6522879323190226433264856359341736318.9526794460303383939341361777855168 0.3539250056978437831879142082354802 0.0260217025162225690591966342968534 1.0263662574320169447613211916417717 GT 1 -11734171906326269324421346184423923.2800798737827439934569827278009425 0.8876560918349117357727631331746136 0.0534226169753285447531869708043106 1.0549025546491452524934106103761448 GT 1 -9538789579392126366282.3403939665971928053102646623521610 0.4110561900015922763120651200569365 0.0734568815970595479449278452189528 1.0762946953186465407527220722757393 GT 1 -12633505.3240433673553418271831201044256184 0.0429208247890062707621017173659899 0.0983463354380842208755924607386042 1.1035247965528413488784423221320316 GT 1 -56070880634437799.5532077052252286480225533089200285 0.3231815081044570457745234386340511 0.0886802244730778885096037391975018 1.0928614273677358065804956588513004 GT 1 -31834144043928787560586.3253048277266794513397029377464974 0.8250714219904311514755863345046864 0.0598633869387844616308781577783784 1.0617300812340648560445151869747420 GT 1 -2566746383273637.0393419154934839933141971613216039 0.9987020221037791461983350828545395 0.0099653656961910005896412673737184 1.0100153523201707635814969653464204 GT 1 -724486061346863145083089070372125965797.2683545971813767221730624911160264 0.9858043660750355668767782966237604 0.0271206637297805391576337820561328 1.0274952165415356097771970338207926 GT 1 -37752759303313592132385697175562218155.6018450417865273915398097279173804 0.3332055982531817969567641659180462 0.0837497305746333876370656984934524 1.0874657317290771684887457211999123 GT 1 -220381104592804498805203470601958.4530508436792066688035161185997948 1.4157631143553576057907997116347366 0.0910216257359625552743774437083796 1.0954339757762888132030684903788127 GT 1 -2153768643183.2463707196957033680674764700485961 1.3429730878861680300487267852109988 0.0791172896871671298883973062524171 1.0824226012026646941137698461696263 GT 1 -227459388406518.8404189119088540716341391251425649 0.4702634065827500994162036969415575 0.0621389928469420022837314030557799 1.0641535209630551953914179767453220 GT 1 -955294776865469981813144.8300795649185471617315723383214895 0.0742557311854677689872160466641952 0.0331636923182339111021217820931372 1.0337260763670986115777132047083627 GT 1 -455825520814.2055000078422984942924931481164301 0.0452528522520669896654871235079976 0.0650813692492493305984093926419829 1.0672957794154524704500861070316594 GT 1 -38.5747335671371336625284810161007248 0.1449796716264632421149559194250109 0.0808731955517285212416074593540874 1.0843311852436642589942883664471391 GT 1 -4632306477008.0960147946248492323037292800282444 1.9350204764966569966261911502291629 0.0964943630619341415151231965312360 1.1014729299675832556744998114628515 GT 1 -1133351679053180373058803800809148889716022.0484157106393497141048835357757448 0.4390678186962876244703926446989181 0.0961213590813908131079455951517692 1.1010601743733149471648223393299982 GT 1 -498774376218151239857723196878.9773036906724694833957546180220478 0.1868956995154238505062669701331106 0.0518076188957613174458651913925741 1.0531978636611037310919127305115221 GT 1 -450866975568263337199158724086261415793.9630342988031838626020227789524409 0.0144406637966510585532739028873291 0.0310717592608772538800553481620672 1.0315647247983607162151616902446864 GT 1 -2555398369183167861474366196552.5840298057270059125573175074680400 1.7449334430226667002915514486054889 0.0356240078347891155365507825365883 1.0362740270484312668136494522947624 GT 1 -8273585662373521699953843397.9883238279428293470097888535727188 1.1256864647276402403977241882133970 0.0119742889380483033462966871039919 1.0120465582308141555718011550863836 GT 1 -7063450228773357580.5840922323171181796725855984463277 1.2197970784915255571773605091653832 0.0290897258902809211067875051722009 1.0295212206147319350728960291205617 GT 1 -3090934006713599045458181038652207394299098.4844988815984696711455167014680456 0.2232852584119131170512212561691890 0.0495855516529068166152044958848630 1.0508571281039021663648202339458402 GT 1 -611263727797258529938190.4819010008336003628838712511266732 0.5498799415371001182800403252791218 0.0921964244087027133579897791499675 1.0967272502240859423319446416847961 GT 1 -418232830869284977027332.7954682084845265922238351884073520 0.5064210738518549158298081949611695 0.0599407268447114454118164791899040 1.0618123491578887228621118345478069 GT 1 -9796534729198896975320632.6044658820832853279205875727765164 1.5954504458306772964695702595303691 0.0955787764358214300042218381897707 1.1004600718432983161709520018077965 GT 1 -12066218026082911794377802152.7971531789254349100242822710303558 2.3589753017836462168497329416428848 0.0240165836847625307172196129623246 1.0243096841936908802679351355641986 GT 1 -1075300768379939330302589.3755626958605271361582827028164965 0.4318477755984816047179742287846145 0.0195391808076024327060617884370785 1.0197325941723106626759662354551245 GT 1 -1691851.3886331529883800386278107025761221 1.8282785724850006053585751549103580 0.0485466548708035626292091426766877 1.0497646264179290767155804613733112 GT 1 -11019.1284410912723600348486672544393700 0.1664727762905543418711966139087287 0.0688454418416606631488006503783627 1.0713300024242722504156777469221599 GT 1 -225376070180414761174472809576797744.0811341471736912678122918716037606 1.0251428162359724369771742035716663 0.0413130597013243376854704061124615 1.0421907012943845924209402059458077 GT 1 -9687756729478401506.2396735036909959176924780740049029 0.4491030680753384246755723276996243 0.0565773157214475750458802792079424 1.0582408631819732673743738038802841 GT 1 -20958.7016613188933071656765422441661704 4.8647818442484515433260402289782873 0.0976690488783661261267825615372178 1.1027739180967258182569377280415628 LT 1 -29432707037125056713821065835314077396.5799126841233328477587758112185962 0.1309535152696677161588496043326741 0.0966522616439739383197871395614420 1.1016477073840585049760847338524500 GT 1 -187531844329332350.4739860481805935467854673814121941 0.3652900174813056753812137253030360 0.0543460013815777483221338529744425 1.0558785288228142253415475508648418 GT 1 -802797904912712495375.4622414954943058048821683776427094 0.3922393034763008436878240405686712 0.0547535907031080667258950733322305 1.0563096348991964305237702494544117 GT 1 -277.1933277158553117762534016299043585 0.4344947519806189252730943671421932 0.0980469840691826917979215305620580 1.1031928490446756317191161316658977 GT 1 -525659333465405242757706.8816496477780476776734438273368496 2.7005240904960455997600712713354432 0.0386281735030823003513998184336577 1.0393940286147438350456693288312537 GT 1 -177685234603029758353871.2171293654818007126842590877331443 0.7694047031484840232439819439143366 0.0647740575298743234621799347996203 1.0669671291853669720232693687049168 GT 1 -269385956.4574562148886521571383746567673037 0.2351103250077585629982691738247405 0.0458085353115313371664679765341358 1.0468909309323099539150591131889435 GT 1 -783802986983151815.0492437708144985234101910794593334 1.5819292632393703639497712509403932 0.0402672187707083150653262564496326 1.0411003861537646985713538594592967 GT 1 -7153906206.4244465064981976438810400686618691 0.5651823193633947032559842780429822 0.0677434671981543518524528660997750 1.0701472523834307976730690709206734 GT 1 -304699099839192.5566469767671009390936145713622424 1.5046114519649436583947524112437950 0.0631044265810997107460081369504340 1.0651834507464769120433247521652277 GT 1 -5163782312159439099778.3665046402213844204023392529234509 0.7740143714929003937262180622238325 0.0661047299256291498139014014684081 1.0683909775817524048755903754494390 GT 1 -119303191284357036128157775121874267.6915652114069705624319812974054643 5.0110944043524777587606623361615003 0.0040311080619461706803768774310702 1.0040392548792207872885192754449852 GT 1 -3152562014182335793.1195152889850405875882488614544914 2.2083159064814769758342264521024636 0.0283684662807724653944173938609212 1.0287786269266618001675344375195719 GT 1 -191724315.6915915154124342176519972566315428 0.6313381440860895445750189253144215 0.0465279193595396625730436295212308 1.0476451352927906600814800316480699 GT 1 -176134972491615925347419024571445281735.4213681944099991125980008394532892 0.0569883230238941634852672604897094 0.0562954348345123485511804376849601 1.0579421224488142648026710182454570 GT 1 -28867552117779820379566543.1788633289266267756554240048353986 1.9387707630324296944818048307972266 0.0959308227432507185930025890283730 1.1008493980036321117178880541035101 GT 1 -7980425603339406921381529948819403487.2951111875045018821898550943056547 1.2343475444162013389243843809122863 0.0041346817291385392172923092881873 1.0041432531605585261704994100913378 GT 1 -8956099893153199914718738.3850923970120501950719404580519565 0.6755505287874054243042526406434458 0.0229774383741747442542740044259286 1.0232455344466990721689181175134974 GT 1 -2086386455185270533062364188.8862824035214073126921847900446538 0.1953212217032507567687773909852886 0.0213667060832242508962439704929328 1.0215982787185444925784074316855759 GT 1 -60.5745228339916365205749323871230484 0.6758549241133938592966122113520786 0.0554576014914469925772884545504283 1.0570547031502084621411628675365652 GT 1 -1217692456454448.9648618282415356153666490687392789 1.1681142016535374971173235077279755 0.0879101842053373625859735147936571 1.0920168115258724780063604577869684 GT 1 -23108840544947400712103619205305395.1833872593419697998490262102121961 0.3012811256793650644267392549926099 0.0068239962529061974182710076259507 1.0068473861846057097337091617526791 GT 1 -30352136074.8618651378869395196513201451969111 0.0614413774790903962238141974150057 0.0559240111964835594453265073707767 1.0575486194624203992555152579460804 GT 1 -24370392364783.8781341883198264186497475591103864 1.9355681222520992435776533272324764 0.0725786283897791306707202160879249 1.0753472626383478789819597593572708 GT 1 -14530241838202029995283747198446.7895547444439149948753820432710505 1.8589295222558625912007813288624251 0.0054004266370046797605047606820827 1.0054150616549436670656905483861265 GT 1 -753979793857517127393572309589995463780.7161518356225843265998511906710714 0.8912646594836847352397849504836846 0.0131848918557358641695220526349275 1.0132725842047113983488847617047919 GT 1 -441585777403.4044658591335631798327519338210093 0.1912255639210716764055799802402825 0.0433687454585623223293032084402037 1.0443372757404708093415754701502869 GT 1 -2.1211143808285285356710421153822537 2.0603031795814639304638158676950996 0.0322281326696962364079308501907620 1.0327588937266530794870860025524107 GT 1 -710678042613461470657464.1827963213082796043353845188135648 0.7758716286572562941647426819909808 0.0130837104292838444319029772895951 1.0131700561437424194747762952730872 GT 1 -3910356472616693378354621867641871633764.4566164306718820049246280378225518 0.2288360081780846358578690537697546 0.0024484637703266897235090476107132 1.0024514661595727859900675402722854 GT 1 -47165.6783466687545503380808926059644894 0.2500816479285828688691729450529451 0.0912873648294792803679768274093404 1.0957263677109253028183711903827486 GT 1 -799145929838436761.8380268853208085182133559645137168 0.8630347201374053952896708085985182 0.0832487775452078431324907738404096 1.0869191385657689000934332358198236 GT 1 -1745858356.3168954914631055788911451960887407 1.9223817267700043477674279520657541 0.0510704791581827970823524205194973 1.0524207498932227312861458517409048 GT 1 -6401169591040795350643306488.0275672983764396531567877221688193 1.1412007116007997016016236289967264 0.0474544807629359687616468851962021 1.0486173838978855941066443005467166 GT 1 -159642549544042167166913.4958195081191910125991496472048139 1.0232351466907703672635268643309102 0.0705544838984597078936695165389784 1.0731670898898645686665643426301026 GT 1 -309896152318497917867133556796617431873.6071838973855869246899574792786813 0.0742581575417462804400976467780606 0.0075384780450437708563856526681456 1.0075670359834485809473312905829026 GT 1 -5699197053689097379717635562055276.7137759579934066176306024678864932 0.1623171648479056257662011599924885 0.0971587238007729129520865935128408 1.1022085148809388083349154647389692 GT 1 -16592753419510626999772088118407761401493.2888437247795239041808300427834976 0.8028544967802731404357991501995532 0.0587943378787251939506331564104867 1.0605936062935666632141302349028121 GT 1 -538500.2978600017816935125065955726391123 0.0961864943899905096031930223418718 0.0659163090766314830808972785425443 1.0681892399245616016842647378575933 GT 1 -143.2720646024548969902934319705657613 2.0930370549480128202707927783353620 0.0213350792968799412803469757806019 1.0215659619401294016476393770414735 GT 1 -273333307479528618244664160285.3668851693585032116687761111056515 1.7682875624037946945775434872140122 0.0762704227311164931704417542654647 1.0793359154687137147685767252606718 GT 1 -17227715565222.1835185424009287428125067225519434 1.1497646097283488690584249597290099 0.0555121773762248508771874127271083 1.0571124850577528833808994702383028 GT 1 -1573030071594462220655500.4200742808512553149748061818368174 0.5465871874636557989414555367575714 0.0374335756434280963557289865564689 1.0381522028829219970825689679033213 GT 1 -482.7238822583477692807430376381027143 0.0039590639317240053979202661972786 0.0200639166095490753350340385454025 1.0202679304746554363706710428464732 GT 1 -10546454630825227748111185911.9814094663269381470040901870329022 0.5605350256919210813671808024884806 0.0890158052059958704142530306065389 1.0932297311657594464994018467454323 GT 1 -4.8919312888209604951662433412637257 0.1622433265836387360873094706720848 0.0110492332103219289009174721291753 1.0111107293976422031863694306831534 GT 1 -55347558631826882.5897340780577893200081180290494774 1.5521420260479181682733745305284025 0.0045252085119679272617607315887899 1.0045354782615567103883332707081418 GT 1 -383663019221988376126010761636108201.7116270550796874173573110712726886 0.6790893018527063080017886165193880 0.0464774174518112598079967587795297 1.0475921703750433125279564955211060 GT 1 -172.6018715627322566211426883793823755 0.0548914112135048262431698133595631 0.0487239783002637194102055655590972 1.0499510149112848535728946733912412 GT 1 -114892393714.9662143150111305279590133973806833 3.3180013730472011354594408904543642 0.0135220359053637300894968639518392 1.0136142912300402383493245993746944 GT 1 -86075537554043604246264475921655.6389717886762071374171429622472184 0.4691867367827921684249347134787118 0.0521748571627068262166609540892248 1.0535852422236968200365923355288251 GT 1 -10756579494854432537.8063713522811935865822142545427858 1.9113291707216665235370629797643832 0.0089536769512021096069893473145511 1.0089940020021235369488806775354986 GT 1 -965746819978603970809703008118612568.7498541591539930462234693759729600 0.6342474654973257412033788194905892 0.0110961774124722041319122533704162 1.0111581992191459897414219516861433 GT 1 -18227950746804090404349383379017.6408054674444439826662809521576380 0.7386984702607799267671566559500896 0.0262122974400817115908601013647242 1.0265619636148573852339978883863488 GT 1 -111106136506501085150189282868282584115729.2819740288462272374334766121938918 1.9589744125804331741221116728695370 0.0619686154572246887686668999282103 1.0639718715348257026778775021560491 GT 1 -7.7716875502264781503198967197920706 2.0321929811929956682400939350139868 0.0801149470723721432616677647737735 1.0835065592149813845012239784394925 GT 1 -16718975196204155121803892818505655744339.5125287534232230229402549637289954 0.7342028286417489114671818019354763 0.0529343922938046473307186772911169 1.0543869086749763487265028267380511 GT 1 -85305747318035255573.1617381588868454336362671438131517 0.3766862339553768197737327146959597 0.0865029500094276077120904823502047 1.0904751325173224132638429713102105 GT 1 -228.5634025845699311190049974501822301 2.8403464757880151174723652444831105 0.0498144476631667692264469866260963 1.0510979952103782678080102737685436 GT 1 -186616946091975514928900609920748.7042198416546417473665171943387879 3.2574699141896078608398395844648926 0.0784027126491880881188199718836424 1.0816469324575895983588535243300897 LT 1 -523651.1252948443154788244250282094537684 2.1013174137938396434839949865910418 0.0569673428867716811619702112789078 1.0586543658632439894550746575513897 GT 1 -29035101937429.0151070932479472605501415079147521 0.3734155503432249877096891573776908 0.0534385471975210536988567025351751 1.0549193840774908230432627231441770 GT 1 -48057768360309987208121316750676.2576406673050746934855280186362431 1.2383841669716348156576015493529266 0.0334775571259647833983064595433083 1.0340507598335250344722224841287047 GT 1 -5.8764173196013654735381440795840185 1.3869115348248814731064682311966626 0.0716794563028133149908845729175090 1.0743781923706384138972438017605858 GT 1 -1023418149355895.9051239946564320750252117432070383 4.2787136642683824949770283152173847 0.0534035087453228763651290549750959 1.0548823681990088740192709507465070 LT 1 -136454087730724357317713538820855418.4432906299680153528933974277870905 0.1045049882758590337431985468753460 0.0849648287775042470459692366767250 1.0887927759508248600196746630536494 GT 1 -10286769320813067953807634862124117631635773.0088113860702754538759028262450796 1.1883489418731012414007812489769701 0.0202278059989553628390979188069271 1.0204351894403689559260555431207378 GT 1 -969650415466345181410175672939516808.6224033177675634662055616563730521 0.3593993946587106021132696992412893 0.0506612338943512371581926078464012 1.0519895724111082075714970029741933 GT 1 -562200781501377277893772.3928109939724518772097057642137849 0.5927701907440127078220960591581425 0.0220768761969971009838845401341970 1.0223242175552973287339640769882060 GT 1 -608431065420791664500218541.5388660110071427157537237397257960 3.6120948714229379344291517933993526 0.0031281051999471122086623870036106 1.0031330079478953026207936583909653 GT 1 -2195268926381032421202057.6072929940316871288710408859041518 1.2419100567046350558296134746500753 0.0614137773157790201334069846130441 1.0633805543101808721130677226571320 GT 1 -39072437624932750120413537967214019.1504917616353860961289721826329814 0.5414438364154801535164055655010747 0.0458128349856225227109598714277723 1.0468954370340072489876180865270789 GT 1 -5233251774923455906932.0809301258713954195581667822581735 0.0758614661181422828719510310342829 0.0707616851054108677151843273839170 1.0733900446542565574487754285341255 GT 1 -1473981348703972666584534.3300353778101370856964328393751646 0.8271719099748891528596462456534446 0.0475585825749668705436956868833654 1.0487266778884438016621359853897153 GT 1 -273115275153956243152434573.3111191655315232630990170226644582 0.6229488761022630127048519233186408 0.0670359951932332831498572234546960 1.0693886589360788070340046514505592 GT 1 -1410744377255608495687463501.0920121123393334573734858049969669 2.2933792251154610072722863201722612 0.0601682551612309847745817462086796 1.0620544145919513193413151357641819 GT 1 -17909232316396749250028760.1084348063635406725296238679420965 1.6411559259479392732868328218026852 0.0893632113257939798325286648485503 1.0936111564206975504726925409844685 GT 1 -8398523324895890018909.1076103338810412782042285167948973 0.7171386270777300870035464784032427 0.0948308615377705404259385260082556 1.0996334594161629931317397506484254 GT 1 -7768902207893216868800104461323.6421703418473615040122416784378953 2.7791318755366825333536883555567343 0.0792101086626749029284036504127887 1.0825233997653442884195216684127661 LT 1 -6302800042172703129145640947965894583.5730345996569528082220868972881103 0.2490711365131735052207904763781052 0.0489313632748848389228233403436571 1.0501690458285786542244067266663765 GT 1 -23905286149858300544818375450248632.0816713849020930330753774474512087 0.8726625343923621819371527740239890 0.0785000523221983172989112930757457 1.0817525586516403085477882616732174 GT 1 -3630375412963742970973681333156.0924956111631016637968371543561915 0.6298661918546055475890533352619732 0.0582865506841916121740885690387837 1.0600542446143959608885224692184940 GT 1 -695127696992220311085.1724447703683375313336338955685900 2.4151131387632477383015063127432696 0.0522418993843945641475049293481929 1.0536559774150393757338224203031891 GT 1 -11397688160794175716025744127344983113335895.5883319265617744722822264349595175 1.1829184415218659845821958877444174 0.0750612832623817676971977811482484 1.0780277958400320373623254161136633 GT 1 -161002713390960405979587582.2032101618376016335062467027191916 0.6245283316879627133264348322540913 0.0518166326890517409957293665354056 1.0532073699979127989308426203209987 GT 1 -10659287760251281807863608275811478.0766797818173476648065462040185266 0.7054733928943398213081757972506658 0.0053055191745074271292313313665189 1.0053196434211542162225836668389406 GT 1 -982521355.7514470457968248733550554636055886 1.5853942714456132409505066468432476 0.0980970533132504935579100292667818 1.1032483626168435613064976573341838 GT 1 -11498417675469103.1286812017827708189560867310077122 0.5734273616347834489399666745380715 0.0733070360847890085692952320309964 1.0761329830424538047575811835861303 GT 1 -10432302359614201908127554692282813749.2932234173033617700992052524011358 2.7676447512798608405967098306460555 0.0598587833828905932478373361402747 1.0636301837621653986185939227373817 GT 2 -6530485910.0079251677777735647482389289088208 0.2332688510462391775741053218805038 0.0879211879297730110409643010650624 1.0920288758978474102833442709675650 GT 1 -66408179278607054048679872615090438.0750124126609970346188381305360832 1.0536592153753550422911024534473842 0.0914203206486409731105178935207527 1.0958726906974217187107758353364297 GT 1 -161285375083810654.4678775938538909674739940707017439 0.0112358600400349162655177557323080 0.0525834527617075939090340838043383 1.0540164226979031089983828214508743 GT 1 -1320838092751639632199831.0870744031830822064871486411853213 0.1140838254983912543604339543008838 0.0702590540569020922831647831979485 1.0728492843872155661776056293544952 GT 1 -6894304.6773162077580378496210514165898239 0.1289293157645796023566885815895662 0.0468093711404926910082796326967877 1.0479403650485256248937527487614174 GT 1 -5612164.6380193507440405015618934989346649 0.8461886517793928570930204804682140 0.0200214765026822583661778713763527 1.0202246223563075224534706762637890 GT 1 -1.5160734626825023159374018568326250 1.1959964923607304614613149466443418 0.0893921705310690793281858491922521 1.0936429579755123734180145573220900 GT 1 -38098989456460937093075671.1957044023738040427357780573578839 0.6139514247032473501445626624924831 0.0456777787496011660092980994526846 1.0467539064371773088134062264103499 GT 1 -16675773628642274677014076594428394157041409.3694372466665023021939895028121886 0.1669598516312567810843788424737986 0.0733670292892412607432072625627924 1.0761977241690439470772581914532749 GT 1 -58.8765605641560073558722301061319739 0.5820677054468386274940214664164665 0.0352283037043640710493211967237579 1.0358637897831959376453638472983771 GT 1 -479.8679521672533737225444085786237205 0.5763524145654800380648659803072177 0.0628545751617820813563620649185516 1.0649168061842391062334455655515646 GT 1 -6530.6240716724969339762838684453706318 1.1937628429403034110608983985754870 0.0206276860205518415639567514731067 1.0208434084620089391826854963434082 GT 1 -631748657037143.0460910547101681237066722579303853 0.0303521471084168385139849011089278 0.0679212554434502795803351354553200 1.0703379779980710761626139685153558 GT 1 -8304739619741945589.4733395238941239224985739233585814 2.4847678344369408237346362125587875 0.0066104328066854424437918390887188 1.0066323784847165179842236750964776 GT 1 -522.5259305809867606596770048909619765 0.5448568460742540576069854646867142 0.0171879448385341694926928828578025 1.0173373722712838488099663403034455 GT 1 -4966238107647649505401386921268589239388505.2324607383189001301847980301787783 4.3096828109804492837722035811880701 0.0094987506650162396251075567753375 1.0095441515268268814944984794255862 GT 1 -2.7099551352188976843994301692755183 1.0779889959179844826228544334571856 0.0990259272507578743653064306460786 1.1042787978708106698561031527042702 GT 1 -867910871587226415288847.6720911208273906032254652541024683 0.5645366498594491037561842646926584 0.0988712617693024106953396990110849 1.1041071478618401915130428250008151 GT 1 -86963574395863563558076185763166.4805726163865624827441707255530946 1.3679655138525187106406907065926615 0.0545444158372736084813695212603448 1.0560883680179941471781500806131747 GT 1 -178113281315515785492091863570552561.4628691934084414693942241818048710 0.6201230712772542790499041430246729 0.0672359315632433630597948696627794 1.0696029842427971014316503278973743 GT 1 -23094696131294052.4728639858576040045412314196366578 0.5881147376865633310828624661602388 0.0697528560371222644225452775004811 1.0723049819424587082037950210389598 GT 1 -128261872912.3496079025878700605777294421812755 0.4847297185629183679432037170169475 0.0483267225160225363981269487787512 1.0495334990161610309925465216518266 GT 1 -49008265723894973.3962560901175579690659147060772375 1.4549229510041683604170993804429486 0.0943814232037477948962861525099775 1.0991370584968674069838934273515470 GT 1 -960257301663253533.3437016396272282428583221244606443 1.3140776606728996599764552290928088 0.0423132146633135735282549038418299 1.0432345008825519161229277243506969 GT 1 -12431916065437447443198015441784963196.8221181953396624362797167470748852 0.4370816856489415336513277492489873 0.0214545229429737461055529778307964 1.0216880169285749780646530367167487 GT 1 -421592566588082.7994367404379542640413253869368098 0.1382074369992949771623860987741288 0.0356579822801245000622834145918372 1.0363092571288938044207153637625947 GT 1 -17172439905277171699495521707900.8050036932803328712580897230209808 1.1797365926419215249431641134348979 0.0710341752751665048508518705104008 1.0736833280087588623765688804145304 GT 1 -134720522726228823296.0630458093839364536824139565384059 1.0393273314372015178231929831801277 0.0568629069494127575410603942748330 1.0585436272221894624218534824257360 GT 1 -38202.0440441406564692488805000994577020 0.5828329702990235467072951877613101 0.0315090759176360061602469270111603 1.0320161672865185668783097234289641 GT 1 -379317712076890284747494674190052412.9769388603895065422487921454150106 2.4646528439230032651205549768413266 0.0603646711428304623002543484478400 1.0622634270136781703706431174849193 GT 1 -20990869799.1440816604813524571986139263947457 0.1232206484579869452148821128552805 0.0119857186957085462467261366424012 1.0120581265773096975038991267152639 GT 1 -87875332081531939856393810.0158259954789602243979947186267888 0.0499823858201626272682456840871376 0.0460824860565090824908271121710130 1.0471780746436261302348307903669434 GT 1 -170892210416748258378161923133485095.4123600588363073552773340393559972 2.2717878916459970573553755083507229 0.0156435290903859602434650972488177 1.0157671803482296451820707806784575 GT 1 -608580151206.6391362102482621318666585916577770 2.8840945440006251382160287297463260 0.0068970589893502369540294498444257 1.0069209536325916248793089631718575 GT 1 -1144366865.0126567082636004061668436369715168 2.9239079755465753874863366258727873 0.0287968743208729654843643905658599 1.0292196403139530176933233405153902 GT 1 -25403867654598680611708982.3091789684781378104099305807971054 2.2924502788403139987088817478477176 0.0983449596565052079402009858409989 1.1088818045007901284159388830841983 GT 2 -2148450104625070928957615.7916999008107922973373076048829218 0.3499268497165683498150730287906251 0.0260653748902345144646801630255810 1.0264110976027583713411532117670506 GT 1 -684937305098847759779461138378465199.1178999101755852319238007007548409 0.7151066664427113774923946594900709 0.0746853798817541056395041653937230 1.0776214694431957268380934928697160 GT 1 -11261932.8060629880890603844367497485680486 0.3676715753896766795384198944813773 0.0692826902953358783801803818318450 1.0717996893766997249454914120386326 GT 1 -26881.7199908514064665649024529744170434 0.2986964361526458231804630014949467 0.0697248785237245858515425788744143 1.0722749070393849912855075011092587 GT 1 -34313910016778667.1635358532784922628457739218658055 0.1780562482950074118002783919403373 0.0810923610027593594079033832977592 1.0845696633122892330783897152995810 GT 1 -58359160353347356.8194482770938179865347060747713034 2.3396226345077826905819047716387279 0.0828994014565984556112813179429137 1.0865381087695379341627441845554887 GT 1 -6839564569815645445503007268961491363062.1647722834516646258567530915682903 1.4766184157947139591198103270079808 0.0481518875373789496913843200874650 1.0493498026520869370775893601871858 GT 1 -697164225851455154063492202557958218256391.5523149859378366834161693306923145 2.3657596740786561790200780736809766 0.0226240929268456045043650816303140 1.0228839444671343913851628432217309 GT 1 -7161310.5865111612105916971505455858465075 0.7538688073769969960651167667540832 0.0727965688830161405668532049107447 1.0755822864490072796769590249707764 GT 1 -662760547773677800088255819628438287834.7530542648411671429003175036345178 0.1681299617904953313342514875240134 0.0092426988074409343827411978054558 1.0092856775796152266428779884446928 GT 1 -17767477239340029.8912280107184254310624955233666239 0.0612694861763300456030428421727439 0.0131360199141472265378388138301734 1.0132230605086961035790486592958681 GT 1 -4419448946699766943902.1137460903342947495267675082136232 0.6011475547602195216731395643273851 0.0148808224025889646549946538546510 1.0149926526443672344506497686170321 GT 1 -51324462357.6385915133161334034026170772110829 0.9689505410312845002944599890755938 0.0359294118391605033991568895478022 1.0365907628191187481683609401324262 GT 1 -104236740071681.2127479288979527644287681341740259 0.0342301156912606078944735633177914 0.0558085159555403316220076138533729 1.0574262901391142477672314302768149 GT 1 -8557.9894104556783054438244326922084461 0.3967361604024595173290254390722247 0.0714645721435881800351541581959299 1.0741467429060850555937586776702336 GT 1 -9720.0284303466993732420914809768061893 1.0146842264695481180201598623736661 0.0329256767321513339889287985734613 1.0334799268465621060571243336097059 GT 1 -55838328326934156486705912668.6735180450526186615741061630602869 0.5944150677537562138150773607780094 0.0889497848404289646196460264997419 1.0931572623196881130610018370735309 GT 1 -16360433273140102491.0302690627718718181242819063385478 0.1855189789516303625144348430474078 0.0319741405878374333961356526820035 1.0324964777936167766488507132854902 GT 1 -55519098701.7929481284163093070703447578119778 0.1070916416846235176762381185021441 0.0560054861683235598196210264699189 1.0576349244725107086650732370743102 GT 1 -111089.5447768416720614466583591687005038 5.3169983375814708284856680171530569 0.0642433487650955895593604815554007 1.0663998243041802653683769015108433 LT 1 -10245423168976098003427221205746718484.8555212626965096661487884558984808 2.4990877615201666047434654528173353 0.0205768299755800583193494348471543 1.0207914826275882287107674135249167 GT 1 -1529646906888439.6478468584703787874252135498395644 0.3240270309556054593499167375617136 0.0931806149559022571355155665435189 1.0978119831576519794895441395528053 GT 1 -6936678347497798359804781914637090.3901164460921811348584947546685497 0.1784899205532222826105280382241984 0.0956585186449115818011530316149016 1.1005482450557655359961803199781980 GT 1 -3520137.9996208601560405909586111732361674 0.8328561832752830641792165032621412 0.0685211049631457008455363059092706 1.0709817461624332724532116196574942 GT 1 -4638019810079522667304.9030605910483190034690313881556405 0.2085993392783412006581005038850435 0.0681421605250367061912554321734809 1.0705750086830345095125422593296015 GT 1 -30.7380834407891946115937566450794750 0.9219423893139347032234799854999493 0.0418989797744318087452326921034970 1.0428020574834087576426755212158086 GT 1 -534175294718663857966816126273629024.2874894227587968774043129779694807 0.2375298476446187785084253467622084 0.0383717134120394434317810602810087 1.0391272994649967565363067074336417 GT 1 -1908398800413332.6072880238701499372796891202407931 0.5236036908284954490527309640865089 0.0709689212902196629669430236089812 1.0736130867883854102096812650073445 GT 1 -6324968157203383.3322708279114371633638419610715847 1.0689429710701215304652861343286616 0.0613073416827356116677161508120422 1.0632671607869972798304573705832363 GT 1 -370411246309869543580780946274622977.7209879192819518407973773098518706 0.0243909107116618090784989366925841 0.0912552643240900706486857317016289 1.0956910430800344029776128269329100 GT 1 -27298183752898338236447568591250340128.2103140047330415455757232285371137 0.4778009468872831183616802443816668 0.0316861995565555584397354386785847 1.0321990702267793114262883567918168 GT 1 -3.0603637835290007745025164905252939 0.0675881969981869181738639125607428 0.0318005978278333618484732074055241 1.0323172189398956101275461630514237 GT 1 -623884255752500072873312573453698386225.7108342656033112871639547044720539 0.1878549679086388602058388616500827 0.0814009463757018026583925474334946 1.0849055373279677113385173331096909 GT 1 -74303278909441068389.8274625206432699158757301409647472 0.8200849250363773740252966573411923 0.0073923974947190057343507578056401 1.0074198566748910688646982761277000 GT 1 -62221394436489941284312116860733429.8991259048803207497088945359934555 0.6066546394713374630991453555168073 0.0361815117191546616080918806765433 1.0368522922655082471733674896141245 GT 1 -25444101855510315635285704259739052749324169.6704976756496631378291778537950937 0.4500056124473241553427919273052559 0.0970024683221048735286269104421301 1.1020354590374422412771311332956460 GT 1 -8067131.9934469017925887918772753805631850 0.8397485570793140351634852470414405 0.0292525831602768678437419758484285 1.0296889713682627662370234063342359 GT 1 -1861731008057606508167275537404.5023506712352485955823820547256196 0.8301107676011133400233619511491224 0.0941169618695304002046251076227818 1.0988450782591275425629699320028674 GT 1 -7.1461294384717795602455224149395963 0.4444645214640128485520413790612907 0.0666053462953720233189307282695443 1.0689271732473123705519015600556864 GT 1 -149654623244240.5810369062956245443581474030830682 2.0205089604732636065177477875335131 0.0750031051524472144934173598315679 1.0779648983969108884984129905151646 GT 1 -798355256235607.2987605038481461646880103495185049 1.6386644830964791877216315051389888 0.0807140779153401536604554494356421 1.0841580819633298428082790305162736 GT 1 -154805502999598.8923049391360841598260471739136564 0.4885511451474466392610918303438689 0.0939342254060333702530208455706458 1.0986433766847416759947636701736523 GT 1 -1428.4800635046178847778116222772877002 1.1260459782028358376588291739786608 0.0975800630275059198896807298430177 1.1026753052061386969085792829946156 GT 1 -4857607825.0521087308285590065841254689160231 2.0612185827349791757651468944009448 0.0523439096011649282454505022240516 1.0537636163863549376957538725998468 GT 1 -1464560488136007856352995316058995937541.5266186481119091642962140315065883 0.1762441108997468305813381310892490 0.0567470580365145267192216141796478 1.0584208011778470364345264610755578 GT 1 -435940060.9281113825005714913139364718300762 0.3389079464769429277123360070565202 0.0562690092377139845327036098595293 1.0579141208603975401654086131554935 GT 1 -8639516285277376.2075404793497428342889532634225578 0.7747100635231596089056807477665119 0.0296810776127447998992899804483547 1.0301304755567275137260115043748554 GT 1 -16923706230254845736805393935050529941772733.9321830474122500956883502466660795 1.0756974718769539304795570275227270 0.0939309972561214338523923665855400 1.0986398138703723362074961587862961 GT 1 -471.3204286539509952689175096502475748 2.6731699247031833753660907932351916 0.0608956898804662641712209794541688 1.0628287195542303775632385762922987 GT 1 -2818280239057893227.7036912146114499167982045312641389 0.5131928895113733270514744341471285 0.0545273255956500404194447342994113 1.0560702919841238995642091849520261 GT 1 -948495059984896.2968116059480030122448595348872031 2.6624984290227441293193340860043127 0.0540712678468844211455395241691991 1.0555880487585211101981447728733284 GT 1 -66973539778.0587290333811370565856001032864320 0.4281374275620628068737784372545340 0.0117624306900570792825646708890667 1.0118321553717346455760018452841213 GT 1 -10552697290430968348391731735379205022.8983454307467833252668039517405103 1.7508105002413505804150847404281189 0.0236729721308683410101031202880147 1.0239576791542610490068412890268488 GT 1 -2148721784509759908154493095004.6386048819195563703067773764856011 0.5744696645529532801029383683992149 0.0232399710484498921986329395435854 1.0235142774246755882761210471899655 GT 1 -89.1502396468373758483997416921222059 0.0993317305461896944060463817688491 0.0769166509687760521291615767334757 1.0800357462472745996566981523823741 GT 1 -10765094691.6233154639861035607193813317315384 1.2203279752699650642631292209270722 0.0875796164407433209276592345697816 1.0916544482260364352440463269565679 GT 1 -8.7818418809054079488830117440383564 1.9347348387976773146379819284531857 0.0354598482373777775652270594563366 1.0361038178889253633020147210723376 GT 1 -988576698345930773245201739959922683.6798118157093915328527187897151463 0.4346288951645211265056604039037395 0.0054599681898652343920443504088295 1.0054749282954986978153268359142249 GT 1 -600626310810459159.7900085778340159705790952031608836 0.4470501360395610952148882480335906 0.0640719913292745855009813447014871 1.0662167192758915698501138137088136 GT 1 -16402902159567986340457329517684579115.1555762700774656520121163236735645 2.9439067934067138254948936677760348 0.0601387444533156894538738417532449 1.0620230150943613741525410757955557 LT 1 -33218458831266187583.0184746947311642400906165075827864 0.2503528994162220265601846846019214 0.0770402303575025721046961324437794 1.0801696319487092503093740388153228 GT 1 -28192183783346403316898.6014539105754792939013430022868978 0.6688681785301768884776120551234087 0.0635169659712187082373018524676659 1.0656238736221811265072533657895797 GT 1 -2238856549912799297350191418058714218.3410734435069171949868849065707869 1.7375018185211860856336730607930051 0.0005959761188796300041436554830535 1.0005961537832394180591446967766238 GT 1 -1678013099997075.3398707319050319893962039227941437 0.3040885932675169083934149990311267 0.0575960817331970034489336384116369 1.0593213083400594597287167683673257 GT 1 -40249401166412738496780837.9304098834562764725598408538193775 0.6668597602144622793746645746562267 0.0417746107350502506403886911241881 1.0426722580515998140266050090116282 GT 1 -284.3574408032618033657763868067575879 0.4722360706053444695423699870997243 0.0302088355836931784399946456291816 1.0306745250800568561331212657568569 GT 1 -402940726993723866409026175185591041.2132445239886305557615617062338585 1.3363536451131228850395659990031150 0.0194564942692503057632380611352065 1.0196482633655396262542324108070613 GT 1 -2287397426290.2613354189528425789199656168040447 0.0803609652890155022487407295944931 0.0266064420733944508522696945346745 1.0269667997199433216018924209539427 GT 1 -33329492383633478185944728817156552.3365281330276318501080333703959329 3.5839762384624737098607950252541715 0.0338115305581288751060197659798518 1.0343963608578272698090940409238706 LT 1 -11070047192608805128603.2022612405037626901085833358424572 0.4281235477757777510812570814834119 0.0377644475186252435786740123319335 1.0384960012397791688451966945275646 GT 1 -42945455531611892648147333.0413056167777441648079326582443649 0.3933585392686475162168776276453214 0.0859886559306076981232290490503418 1.0899122961505311529161087975664149 GT 1 -75.7668531498588083685203024203125056 0.2937710226478013256230807283521369 0.0828651911578403601309149223139976 1.0865008067976925382308965467093629 GT 1 -26621694442758263231987543661418367915272480.3589080180196244655173458975803898 0.7976022556930251982209231668284001 0.0246554058810769737280142163955672 1.0249644405603506764416999787287980 GT 1 -544247209842483469453.5251208616125240371155222983340855 0.0465886545772502999763383865959754 0.0988942432605221379407798393047989 1.1041326511926055403285437145582597 GT 1 -171.7211154438302962751639084718831142 0.7487650740895295920219859109960340 0.0810070473086927756683878342101680 1.0844768251092725193815393734709490 GT 1 -94469321148365561061303469791246567220.2196165553353266802998342801483489 0.0773328554585927374750494083818880 0.0086090178624520382528131072580744 1.0086462895258490570436252513395162 GT 1 -592924772230066259976.5226777687282360057177384063920268 0.4134390550214188920076953903961443 0.0330441232278636678633851977539218 1.0336024135542236231592526624171727 GT 1 -10958091133624804821977581681737195005.8952875883850302997890184940561461 0.9852676156388212152816497993347072 0.0328110373123450342207571849171484 1.0333613913599270493424428303198452 GT 1 -42163100731289492641387520650440698341.7960320854387906587217165991565511 2.1302656675296765110307018768965612 0.0341493933092077663488571489785069 1.0347461081881962022742199657551768 GT 1 -71501007824227875.4257625193003552810221954629507209 3.3548385326540117360761471586668586 0.0497765674496051475994186504244651 1.0510581298825800136709147419229214 LT 1 -13441706304808302.8200187754082241024264421408860084 1.7895105535101631904310517683777270 0.0595642271495506009199134725081354 1.0614119230030937436519276321549102 GT 1 -25441127197354834351967465528234467734415632.4214296658343629253312724156453383 2.4869531151704751106544210791630526 0.0393128742799986691721977815582362 1.0401064945930531008507587965440969 GT 1 -4871535946098407143359242991436311875359.7514684498881206963457935939995423 0.8101629164061682060133089022504730 0.0411207026442943421611801432330910 1.0419900750485757344571303661409026 GT 1 -349085429157440023.4013818460584178118552143046243078 0.5864705114579333929288882703956620 0.0809863673501071916438379057682045 1.0844543225146122094800783537531738 GT 1 -177174070442647912194831129247.4423035767420685764050021740195698 0.4055281626098890433149863629899012 0.0802891585897039689317989853888240 1.0836959611574284425546271660527302 GT 1 -1163469.7399006921769773124534619473747471 0.0402285326511829812461047483972839 0.0454644107211346892217002647512541 1.0465303507294884851820165954920445 GT 1 -81705505953.6921199577786073964491066357673375 0.2350067037581985074344321429912925 0.0533575640705036577051805692361986 1.0548338326716979373215982186344542 GT 1 -384096362601255687511.6057389435747402984990255593863457 0.2824113890014176849204422784024597 0.0847155498270230223597794759849332 1.0885203875120969290688794667920417 GT 1 -12079490366327928138510585413498293941838.8992205887454689049719691852536580 1.9582881863232136227441801390444973 0.0326326758921256838739315251873825 1.0331769961867887421053984445725506 GT 1 -251761885679957600042583984952435999940842.6421809535453381760664693626587929 0.8546399306899310757216125576783707 0.0971847186053939747639343976844217 1.1022373075154113323852980117777196 GT 1 -481.7833452888902992280626031474698848 0.9018488982340790171202916315925653 0.0754176512907510233677437278653964 1.0784131583421815692801388558256610 GT 1 -26809177137359465864857801182701982219207300.5187193301524024827884836446480830 0.1666290744061778691396663248886832 0.0827585335848163602697731008931502 1.0863845192349031325028867506474763 GT 1 -1.4777604603524050207256327765282409 0.8005708417846486880267274989177635 0.0956797984715849406558469790976856 1.1005717760752765092908804236771917 GT 1 -11948618814116649572003118622.0513874305007594191781252547878159 0.0857451692917862417996933201374941 0.0792689322928178837356774334684986 1.0825872856851586455960510565910999 GT 1 -503219098.2130299601375280141570559255918384 0.6069565398580622373492769857967996 0.0566126496041127463391403002389597 1.0582783167485962564580414622791683 GT 1 -421266262769777.5864305925867788709992078377007973 0.5870370627456668718507647803242549 0.0584686332898179574642976418796083 1.0602476157625804546810116252405692 GT 1 -5743262483484869.5885211197674446106105761438084614 1.2622655114948124976307624768231814 0.0682346138142603112903990056463991 1.0706742275466185619858868902537957 GT 1 -8378364653853.3847036286929749652603598850037198 0.0666902737244254127307975166242053 0.0234924277435667230673316567788897 1.0237727742085944699934654132457080 GT 1 -2444404914653000197235501707131466842495846.4049445926458055312057522626456735 3.3210974713521834944132027944699982 0.0670620311976424650976220841275077 1.0694165660874502282408582375632994 LT 1 -3562852666242748177669863570.0534131925256536485124217604948513 0.1250370409002822381074957728499943 0.0773163352966098856764154528099772 1.0804688283547202257770503699115700 GT 1 -935932156359792563208065317.3277372888032306192756743186426583 0.1509437719822408969223872351086983 0.0120516987783124148474734639931928 1.0121249093020554717326557936166554 GT 1 -192193901673391735626.5415455966766351576617873577279225 1.3660290794244636028933353070265852 0.0760706180078777624733025083059131 1.0791196366765523166598986513462320 GT 1 -43094559910.3468542385928078332281274826121546 1.3918692244953701532438027678419567 0.0378090470367125151644862299419005 1.0385423522102829254116961634999816 GT 1 -880621409.8852668772305505985352721042437572 0.8569145833722121325460327696816964 0.0709212948680181782176340456632006 1.0735618234856181819627509654713360 GT 1 -40377145243284237067817187954.8459599764101487577579506214247032 0.3454812389027242510459348148406902 0.0697365940696430847852426827053624 1.0722875007543186818469849154017635 GT 1 -971803164782196533969521.5525406436203428321105703826444966 0.1960653541925671696911316369642898 0.0998377974755124956557020976215055 1.1051803068691971429070320992930530 GT 1 -185265480896565567731168705556572748.5190199682386588716023217633492106 0.6043357898563610754380944468030744 0.0780275019773851384490772976628643 1.0812398844793026153843891416470498 GT 1 -13120143.1100450356109635550714108825943753 0.0925149478143920142140523788665164 0.0513578898989171779240711580873878 1.0527236746821956599885933709844752 GT 1 -3165108744553510047630363.4075816867374139843991468358080183 0.8968108340835525179014248777413963 0.0104969308249206728664712058134106 1.0105524122009421621246638884934277 GT 1 -41032714929585354881.4368171343121029330982524051999918 0.4762033571614654849242764024371815 0.0932111709852145655725221728097849 1.0978456795525826296999823565406109 GT 1 -5545243027545928673056454833247038061032875.8800893084727198639525084772518088 0.8762564827127903024937024675873205 0.0880848115491429025504815691452512 1.0922082883517941353372061612589655 GT 1 -52216096856244558224803450875249639000.0173802445683166908291173145892273 0.0067417195656084275677829843985530 0.0993711633075472022669916459052128 1.1046620522041666427201364846313934 GT 1 -1292090692209533826292133191477226947347.8016451578769883565468794095295728 1.9511923587983980031883328126574190 0.0852507743375715081993072702745993 1.0891053215850337574374710307691509 GT 1 -301392267948986548023761058696727253.9329726104470205324841160181559682 0.9396192360599786193314638709440368 0.0646474279918017805932767158463135 1.0668317384094269505562202847014782 GT 1 -24194659165393803154404757796189.1840063691155236694312022273255929 0.5740638255799434689538340490082113 0.0692521358535182317700735417499994 1.0717668609980122233985168207793014 GT 1 -565.6336490536289115853891641914599766 0.5106382019045119893834008360465040 0.0603747759364078722330671047745418 1.0622741810238784082954210566400063 GT 1 -899424.3473087921541456559495210032315057 0.1448697086426118171022916818060629 0.0997588093479357084512781510248142 1.1050925619472237370986467886545926 GT 1 -3254558737871610070377758895.6970655076089115467740004483876744 1.5059776476049145913914892941077613 0.0848718472525059815206327960016630 1.0886911658662379064865023844875789 GT 1 -4988338592635193434412110909396.2336971183552121824456664597392969 0.4809352233397218305206109555143049 0.0535912783384705012362463775628052 1.0550807507417322282411555271337052 GT 1 -1563320728028577504721.5756267754177539054989943585034008 0.7907591356822096041163232496164115 0.0383755960785324526766583990336614 1.0391313370691162506679429062760920 GT 1 -109845163027.7248338186224074229158600007637894 1.5848010313860772344011073078181957 0.0947615969085383439912320605641216 1.0995569411431485654660705822328645 GT 1 -181140829383267693804997.0228859576667622558160376913196562 0.1106603907432556143730441289363178 0.0972289521539001117754425047011416 1.1022863038417554594930188304981825 GT 1 -26350980476293239071296370948142602011372.3481835921758698697671174740481893 0.4256963964275615322200281604983076 0.0443403050263573150942191717067244 1.0453533969030335918036801423270610 GT 1 -9445621933784375644467991095.7965828167704751810998909169587676 0.5438493993846114261740563950480995 0.0589762691861114115867537246219065 1.0607869209964776464890407907682805 GT 1 -478789882552896080717825337.6593398658619719358398569627167163 1.6314398491662863471037546178561250 0.0795449268983267248008898104441976 1.0828870865596696886353939647891106 GT 1 -3972033864327442210917883991875465468586823.6638349777231194783821053554239725 0.0824141823534288521279146252827499 0.0848438019773841299325334398127548 1.0886605200541680538464959002643197 GT 1 -171651110806.7732256401392168733514906724367369 0.0137930707344028498572707432719257 0.0048587108151251386093560895038491 1.0048705527236948866135943483674732 GT 1 -3650621027.1054588895295675504402071632987301 1.4700722354259127728128135538904896 0.0334506806422012250401544172815776 1.0340229528122955071833331781074258 GT 1 -499530669525168223980.3677768261348246672470724629376340 0.5564758648187451531065233495124464 0.0439782380326526217310045091765129 1.0449746026256508635603965431025135 GT 1 -51679369055790411908145539240656575836.4259047044816807237675785341771054 2.8838154259230777601412138022546595 0.0436010637018304317876671723410527 1.0445801555920514029834537526421870 GT 1 -573304572365462850.1449589016460080472895841250739879 1.3787472052213336799155747223919345 0.0759254839222784649930099215710976 1.0789625654863353789433774924623823 GT 1 -209676310085395978404208352343480391781.0426195100963484314324953841270973 0.1968520710676294864794744727785109 0.0644463344532714209804399916372997 1.0666167692834833930136917922769413 GT 1 -30468270481653571932539115438742664745094.5370574167742636010414189344948317 0.3541747569403432292779332088308347 0.0414120908606027683023533859565679 1.0422940053766297904005274654483159 GT 1 -148673262480520.2087227940085899968364185560175716 1.9817760124279620967852846227010796 0.0237127751237489500751912589645302 1.0239984480801563291184435950655095 GT 1 -139928943230922105237315699.8882672550222085772702543041554830 0.9315903168618031088491845659645191 0.0987254902269709027711306000473636 1.1039453954428842363314008092658720 GT 1 -822675915642128893595913007482908982.1828089476098505688923488672943458 1.6947829870289961485538116056645785 0.0028410416907198119647641739754932 1.0028450851098280820063141282472816 GT 1 -644422722434981.7549346903155354650060403005539890 3.6049969361352282727985409807115657 0.0779359259613002454095425101579888 1.0811405632212021778425054774831760 LT 1 -34304013369333508.6136810107705880471178301441955140 1.7656761823841165264173366306929875 0.0723894151230975378278246939670650 1.0751432626299640903380814713677774 GT 1 -835892417656709185275365129.3775635299606199376461199615669261 0.7847040822652150487676499432514706 0.0799332417106954728203544353400167 1.0833090482137044602542527552179934 GT 1 -5.5918804799923475350213660436665709 0.1663481492814883542758135462636951 0.0805908718313427044208648285369542 1.0840240672618002194438256619263765 GT 1 -7790846377.0904872054101298065099214953637431 0.5022572638935483140522038603102580 0.0552673457780755265039091715586624 1.0568532970989935977298527623158227 GT 1 -41396911467213501860027.1371855697417573490759368484245307 0.0149179448185938908980357073447166 0.0775239165303549037509167259681220 1.0806938291816960929184180938011354 GT 1 -168147491846034617457176562335407746.1652435579814877704407437571922716 0.7870186423549357546910786681226181 0.0770183679981091708573024907809575 1.0801459450002774656675834139110845 GT 1 -13490592392784032320289066610455096562537163.5047526115778261117616721036957599 0.8229225499677853509256680861535175 0.0672151440849027496895849173159765 1.0695806986001424110561937765991316 GT 1 -3705063126431571121978670158613.4061402771036234087756758542598702 0.0114154381689683828334137108718547 0.0429981165295361003639165932580538 1.0439499194324111340589864449208554 GT 1 -52582512.2471332508035256616552049348557649 1.6484145456211071149040837153093137 0.0935876358097678197475639429476994 1.0982609283748022420500945510178904 GT 1 -1413328822952865483710564965.4274478617786652685356189080575311 0.7870198671616095621012134306508861 0.0186220828153835639287650048090835 1.0187976569198063796555545845981706 GT 1 -111805513949602290235077.7948433233470813547520644615711319 2.0711470027933528766788331276363404 0.0392941884170395740399852468878431 1.0400870442634542907611518151269805 GT 1 -77766418788837213054082026604689887583484.9529960815149915387243210513784731 0.3176798971052268457798439024932595 0.0999762947484067041372632750909219 1.1053341768362591119725367144698730 GT 1 -80702822523746531807585344.8374429034301099798098889784277819 0.0305338949317346075465127125675473 0.0862041679593329425106270870295907 1.0901481109919878884995949821341059 GT 1 -68519070654967982498992533646606724309.0320304334931785616175576809073543 0.2328421228390098487682632838226888 0.0921655696589484850513574833864614 1.0966932624471652292416256966606454 GT 1 -821474.4269639960758017084747648795430108 2.3054994915891204795956394820446647 0.0277621504661507958003830529633434 1.0281548032896336654715545627648838 GT 1 -2957.3084759110956224770777769298343371 0.6867023340282107064783350552247261 0.0827675433202828821366181470594615 1.0863943419261424761309397764731349 GT 1 -9457584205272547475558155943967808177897.0140367289964147971467984688070317 0.1338918331875318801853171971797830 0.0347132345779853031625030193674311 1.0353300555478631995061111857341412 GT 1 -29190956019840401496480703076984405.3414232687695872516857289524988514 0.0908675882014667178048539262188182 0.0101547005121486881583973241249011 1.0102066112074430318880349423417125 GT 1 -200410131356952392002765169544544721.2659821495464245961564610680764836 0.2727089954626728940086602198460000 0.0800197789552408627162274065868720 1.0834031080345471978757970966401754 GT 1 -691132392465891694823422148237.6514979087875580062629428569817469 0.0542783476417399660715130277876463 0.0414260447537041892158252763232822 1.0423085621997764249139528523675387 GT 1 -17182267829024318329826944793993.4938379183565909865570959579792776 2.4011238025244067699086821154522556 0.0649432734458460007232659116272060 1.0671480814224121737713258607918024 GT 1 -16586084487891291246.3152766910987163410184969302083298 0.3413004773147805434668675355229206 0.0355521572938713435024897434020763 1.0361995251269472875926125670312007 GT 1 -481871884016807994.0562157408587979300306029927181069 0.2735138334419721889887299382493306 0.0090775393640787470425819144430018 1.0091189912694192748280870734265217 GT 1 -4956090063511734999106.3766152756785534924102028450060038 1.7275595082897991015275962673726665 0.0217328050324431716801328393833504 1.0219724407728436473339721557281584 GT 1 -221091533135799505792388592039.5817017239067804957179319888533011 0.5428253560182458764696036348407630 0.0675450895426133261076663627586362 1.0699344820301339983941171391722764 GT 1 -299306980167295334808751.1857149280115811249557251938628449 1.4919381567799740305521213440618232 0.0222775209451788642386269906467533 1.0225294129634966179411027350938023 GT 1 -1522685651254768714360359014084740.5562729544302408783815949151548219 1.6312012725973479763709083630890920 0.0463019136771658011663279605794256 1.0474081289811916767249036969684901 GT 1 -33886432682646392545849004601.0026975467714922336660388966801521 0.5459005291083868708432017900910862 0.0030888877016657031636022263302481 1.0030936681620240795835459431219408 GT 1 -4182833974.9249215602926044614779908197330868 0.7389787226364406081687268288888032 0.0904969265637191857024379736371501 1.0948569017704275548466031695276966 GT 1 -69554626880439228128536138802.2604422471036389479239032191775081 0.0272925310624042507692274805274429 0.0267379883319589123321956228339348 1.0271019507562327938165383664680905 GT 1 -14276881522901561218.7317244717586401291502333470079904 0.1841366863743874530956471238454576 0.0038715371931802557422437910217771 1.0038790509928724345509551791630324 GT 1 -43567224118.3664415258502582779177892681695589 0.8842736315321487683596491744595519 0.0785648044229078256006803978742116 1.0818228292750783009102152621593157 GT 1 -34151621612430004304845904091396.2629819636301457292279667035337993 0.3105229975998459035084480453567239 0.0905314195713687564962910082950291 1.0948948276034996813542273285898139 GT 1 -4877.9419269405860880391300124832422071 0.7184545553873593097933358673657155 0.0567715937692341703035338189464333 1.0584468133435591573360898339805361 GT 1 -1150889801334014854584380217971.9546729321962330962726300242497416 0.5252761918471323366373302298450941 0.0656839322110447579273364380519396 1.0679404956548181240233419481459383 GT 1 -41066032063091215433762277319463384424589.9033311789855363814466758078368297 0.6004501236032792600873052941521712 0.0587456359428434254235684284963836 1.0605418634302756918960004049362339 GT 1 -9992190303748813615283448275.5433481765478193709899977973102624 0.0327676536223075549509996292928986 0.0419517793075722629172742298946597 1.0428571675260153783779404970485645 GT 1 -153656921821930097487035190688305848150.6036793072175988754122584146639338 1.0604249629655341721153089459625970 0.0999729807266503151784635910083308 1.1053304946936269732954537726020601 GT 1 -586459610150732263649479372687.0341626337654262408573784075447976 1.2818381303434116233174630570003856 0.0970253609231311315729988186289396 1.1020608111457395875875532808674758 GT 1 -1807.6425160635665489457977021523940376 2.4030875692874568120002934251579219 0.0729572805614171710638772378753383 1.0757556309413286519164592451825958 GT 1 -4658763469873963056577.9718481350570912538645390186307236 2.3005952707425506162642133859108772 0.0531489149457700126652979247637230 1.0546134473117630928292565171215773 GT 1 -5410862090884835393237577.1353501035422526146539555801441213 1.5550909582023752046030464645548888 0.0574001417578004620604618756751217 1.0591134148827157035648456836006620 GT 1 -5879716626791448129064347867257054539614.6539953417234815520689067566967241 1.3603765792681915660738203058724936 0.0982167037017924024800079747120653 1.1033810357901105547264285124818146 GT 1 -1190712696330689981935554696724211496.7842635788977614726432884035579457 0.3546985362552774891102132041831038 0.0123766111089891465753401110629069 1.0124538392368508877630336768799579 GT 1 -928708655.3166388168059502722758615908408408 2.3636486711602624992322340068253221 0.0405224203258874333481653663801048 1.0413663304836641206611811618165543 GT 1 -262721628573489.2291384854473022976928910621158972 0.1373637201702090799349903498687772 0.0137656418239609710377289580779014 1.0138612668453748741616676110112256 GT 1 -80.6096729208139285821787490235154024 1.1342836314503607593258607059707165 0.0884482334513491516045536941713198 1.0926068937732104432023545609751558 GT 1 -2327.4223518831571063897800011014029866 0.4999854966865687550799184110368375 0.0991267428202177743468995698680013 1.1043907003254643319305345548863972 GT 1 -688769618972538731867903409314380164666317.7145010323468617280712501690149940 1.0833269229768887295030305420678420 0.0142624199379892861203193983576222 1.0143651057843622756057279838158333 GT 1 -16787441400379690684352641374102177674961423.3743985902476400029069820276157615 1.1724001440899508951472251064243691 0.0352227233517976038423010686358507 1.0358580056827198880153513379659310 GT 1 -243813348581127123117006854696.7022548537537930028278584399660634 0.0812734830263904954672458065894524 0.0867018202382680591130263876012761 1.0906928583208357371654719770208312 GT 1 -852089183754563480870584027041.6615507221942157465538429568170173 0.5914979952802186983401843530260816 0.0655499361221682308760212863489545 1.0677970897070801347527705198585607 GT 1 -112569074937974069068518.3865160247153844731847287199426995 3.6804752097496620845588057343652392 0.0110358906845679576023988573891548 1.0110972378910911754197557137882975 GT 1 -720727197.4099746685992765072717535100254084 0.9468360605491666553287174143138602 0.0118639247343056035104064479001121 1.0119348627161847248314349461409614 GT 1 -6356336923127292449766329541177869439.4046415079623427409571154566870625 2.1919162203740657743638533582541738 0.0712746449592555595907552356098224 1.0739422189245918299400070237958889 GT 1 -25224387.7879693287427122979668745583291704 1.2746697181902183372604242478530233 0.0585818174542970665516398337532502 1.0603678358339680895691228556778648 GT 1 -11597158419445074583670.8614664428237623109867670097819754 0.7584939548367019827542022790828248 0.0196997102674476283194008705768566 1.0198963361595146824862408720951945 GT 1 -29887336.5346743686816604446908604064533097 0.8871565560492294765199013273513781 0.0219440323179817627773603412846047 1.0221883839159727525538393608314723 GT 1 -284382754001640568104023457949220261550.8702799170934349009964440747259395 3.7442752272559176574976633943038295 0.0943138134505931368871059610830449 1.0990624054019777588388242766197689 LT 1 -6346473968957936317650095192969659.7121987749795974704403967676526186 1.9290400151215663012371308972648952 0.0563360264726805706253971876998878 1.0579851364520068733258763473207421 GT 1 -41154717921030176683457514926.4397134505347563569443614010226214 0.2171106663275520288398306771396983 0.0303928610399216928827644908423408 1.0308643009053326033770367717215171 GT 1 -889372193296074993665.0997434825022630892413202509835293 2.1529622314944024394068039726981768 0.0808219398290338179180692886110433 1.0842754211278263759413048038357562 GT 1 -3866777224636444779162344364700.2863094680622851166894335223278531 1.1338953303352686689978415040442393 0.0402416412094446012819772939575670 1.0410737357976031554957451275285783 GT 1 -850302548507526320574110501034.2522625745773832458601407811817971 0.5647601102221501623339932661326072 0.0361562809921773564141523869846826 1.0368261147258092830037996575118476 GT 1 -10646.5408179072180264650789403295982199 0.4320361735308100664089806432332355 0.0771329720035949930665388617271730 1.0802701198669571515411568261457375 GT 1 -919579.1798335676429052174615744137374335 0.7045325742102223021276592706690563 0.0042635851583281627726907212612453 1.0042727001551322528191122515776672 GT 1 -9081688289660479520043.6656223831074465605901778443365145 1.6610172503872955944822364881143371 0.0530164183157488201111049271451438 1.0544735231329903470075941421645636 GT 1 -101039429749385174867444757211249063208.6001983179667524545361295206856646 1.3740552202717281805012982545452675 0.0759190947011662490935151048883127 1.0789556513263698902279813745256189 GT 1 -16938126368914744552790401283395975.3223342943527303109770366742619504 2.3770858616230433713101623669797048 0.0602682460084969954718439845951278 1.0621608125374557602179104809520499 GT 1 -38636949652.2117183096545156631348569315194535 1.7678537242725047160642138282293016 0.0135797678060156713876836113432063 1.0136728161967891805391123642099039 GT 1 -2706379570.5986848650403225892200001982582454 0.4969584008775889327614948426218365 0.0365278640492775413520500782226837 1.0372117111611296723678356581630897 GT 1 -26637801919053326800281960012629297.8808486061520357296836438810152405 1.3368772392231419393148009307251896 0.0304105187569461224323771620820286 1.0308825122788890072787629696966757 GT 1 -27392992114825119239969401013514199249.1836826433234277809111414610692354 0.0000418517760880743190114449724905 0.0043409530527126541020496977226178 1.0043504023452878082288290040417336 GT 1 -392325020245413800488322176067787289.5754859089142184431615581745356319 3.1435651566999864283650391489771929 0.0035308581230336383901282789861895 1.0035371063145637342023055309037361 GT 1 -494527317701183134613.5857168444843714104503630377746016 0.7906268481086852249657932914055010 0.0838858085201710814947224828398967 1.0876142588902300660089971177721491 GT 1 -322911159.4065533275383468114939523858794593 2.0753357983786835695214718424294792 0.0566892410517621102986088422261453 1.0583595077428651420268956026058502 GT 1 -14678608859049.4071576502285049525063463287459591 3.9102078110807482228843839707462054 0.0286724744447646582692515463087729 1.0290915600942670953432500704754979 LT 1 -30.6616500550668992476348043361159849 0.7025425978975775693565989217328637 0.0464247162068765481725187888648353 1.0475369018480544675091590678946036 GT 1 -351642.1592679570814707015430806378088171 0.0524238687226228219918174421760758 0.0620085334729871266555572321819741 1.0640144275364710976378165284594394 GT 1 -142971599.9512387930196712994968065331671679 1.2274922116396898435247650614455268 0.0150917305778148390353486015374338 1.0152067696368494743629575451879045 GT 1 -3166400788225079.5994353072911311197705412360651255 0.0546470316733571436366449968830047 0.0538039942840117738730508807269174 1.0553055371890658081371168101568438 GT 1 -17871281964644392680919878239236170224.8785499419575951707058373839255794 0.2907163626121297823662011669044124 0.0172717974031180540705646968779454 1.0174226949344079169996433722077856 GT 1 -1484334.9860175787245755762549628863860261 0.2471011812681649432003651506329187 0.0005092753117866167604574740387459 1.0005094050365038146764964012624892 GT 1 -5202011510430455937291870627112488302873.3297535944866405215184483697842450 0.1679014314887906097369247424932710 0.0393546789542514366810511603977423 1.0401500109291559297941695269625445 GT 1 -68103866545397022385733983706005822.5049796538609636236007051511485066 1.4941176756006831331495015376422732 0.0669198708843624767815154170766491 1.0692641985260491521763810444449665 GT 1 -28625123677674358543842972244325386783106.4596967494384475116143870356713005 0.3538734347180607121782746867753738 0.0872380663575289146378027919592155 1.0912801841495304799930636363227314 GT 1 -15222953745381214871483967769222404.8499806459145504922938725333652634 2.5281643496300380034793997143288000 0.0794108169347742401924514121022154 1.0861644669765355578930223346383021 GT 2 -84966916360027350599026072.4420482977813945043233570384341431 0.5580956711886366771107624313067107 0.0337063338439018067734803182178250 1.0342874887369489813182219588978658 GT 1 -73274401149758755958310.4438823527956767831897292346918811 0.8982418368986811514341317140339478 0.0240732042880217122895255555005464 1.0243676997754796119263861238460249 GT 1 -609626975942539850.4998600419870307398281660563980797 0.0763346432608955810195793519698541 0.0806023134198038656857353486959807 1.0840365118409365781835570263770097 GT 1 -59200707312641151349559.5458784159822385080133268763713129 1.2247701670405993962224700696372069 0.0104078626638268434586794582389638 1.0104624032303166693890876770528236 GT 1 -430365052.0024251188266602118929376523032558 0.0316327044463586823332644050349720 0.0701019755038915328280143422318657 1.0726803499264077986990190987287200 GT 1 -389073725113983275193274691809636163225357.8861890834812960568473897560443102 0.1627083996364094721100448098543626 0.0402799732559221439980757825398693 1.0411136758633746819694997695584645 GT 1 -123719219296048340.5304983946632820376633818317955913 0.0365694186633781015255501775802598 0.0017285819377412024724922837273970 1.0017300776593990914268119523682864 GT 1 -730813.1153390870166476245900962991587585 1.4889977407771866604370612129890192 0.0009518065873691239536423707898849 1.0009522598428895541518405063033386 GT 1 -121335635.2711406412674843149032708824508373 0.7522019773552223808515780206761923 0.0892789150664407989650614657060013 1.0935185922292941395973670353032866 GT 1 -2827277849006695830859644161.3355885910338542343330573245085968 0.1297083735837603061845205559255596 0.0097934927584112829674329093234721 1.0098417644327105826307041492386990 GT 1 -57778227495664392153664407682626.6574105994528210177630689620722062 0.2811974225944359589457715237685129 0.0587067275836950807699734488374338 1.0605005275741198593970857251662688 GT 1 -494356536041509200045235903730835171.2808587862096310050260325408822176 0.8334082739670962445496731671860677 0.0582856723381603461361457825900954 1.0600533119043212739890020039558010 GT 1 -240511822118105825948701410671282214.3633650202673953416244939618552382 0.3686040533130231794446712052209531 0.0881809046992822712941745388791245 1.0923136689997146469828986659937814 GT 1 -13608.6284128463534941740795152748475807 0.1511269591828178797823780902895470 0.0121401214576771453558386174368185 1.0122144146298796764870921131558332 GT 1 -2204283665515825.7402496181266012534782588528914157 0.9035263952766117546467219456212207 0.0161759555767882285223098430380592 1.0163082145625631836844271999245638 GT 1 -104.3521087004155291142950984529086122 1.3554159009232802164898524421153543 0.0535419219446716850084524819656601 1.0550286008558370506282487398535772 GT 1 -1441313101188586713156878413974738.9434797055425743993001147006505049 0.5951592428682636700806455819473001 0.0657551806324384720095068091058482 1.0680167558633218628223583600040640 GT 1 -4850914420.3782602776475031647087138430690817 1.5337721560082126533203082253778251 0.0673444919990541696081890999059721 1.0697193767555643112382612997061604 GT 1 -66523158315341315540833013609452.7580354200076381268092599550705187 0.4953778920109395131445645527086844 0.0333933251091616788492286188020729 1.0339636140592646963946895680449134 GT 1 -55209034.5406893098220712859398004838246862 0.0401764800360895110334631604890554 0.0717093070609142326694883693375897 1.0744103485458402533236483461422243 GT 1 -110394214.9924831401306741278861464731127428 1.6603360876269611709576549137608389 0.0667828254937509267112908624548279 1.0691173351183895956390536671247630 GT 1 -18713813515217456493746905712270592043239.3659740953117107375466601637257656 0.4382517205376881514270067423535318 0.0130058153018330263675568388949462 1.0130911314625001210941181267748442 GT 1 -1228.5450798768999395810747694157890962 0.2784729641158980477147003691337980 0.0711639206213496118052242276728552 1.0738230041993230615954509370982314 GT 1 -15011104691.0657359542398677478551516976234825 0.1798838491023660828670914089295122 0.0541747227956050767529567826081168 1.0556974233900134213556036814908170 GT 1 -6671145494192287540131592.3332055846451335899546195961003344 0.1631439230340254180274556262726290 0.0047658642221727694186789278453798 1.0047772571656255296658542681145778 GT 1 -10158953230035044400725761271.1357612159736328711458329162945282 0.0189311282611721099743976208403909 0.0676719570487786511108294699848777 1.0700705488105913841126986804240068 GT 1 -546998320954215.9600937902453627275878943905114528 0.3096473639785366404665208625793043 0.0805818507526572806930676407259202 1.0840142554879633934948370748277683 GT 1 -16176805486165451173117.7210885639104474542486194047605780 0.0001197456733698003027494926087884 0.0777073218393607724052292917449586 1.0808926674463337232492216325735625 GT 1 -3621.5494635399497639010328673739582795 0.7098760226538789663972760040655777 0.0772726996394358640120857408899067 1.0804215373631652451723908851070837 GT 1 -81556935877795394454955729605775589870.8843889884118804215742349020699903 0.1835195991750986481600619867761298 0.0240666298777456577334569227196750 1.0243609632167945593110186592902716 GT 1 -848921988997234346927.9050567406212481577905330783015649 0.6704228955378951796695168802891388 0.0400121975730442874435985231305394 1.0408347004062290229614743928654777 GT 1 -140140940238301.0918427363778926286965575399492056 1.0468118832147529638114566097006824 0.0120347967815649947707415910986837 1.0121078012690268483225506984863264 GT 1 -27991221728.0936831378308112123507111947166725 0.0469697098713020365164403155058383 0.0694006144057933841138873569078702 1.0719263997972457014731194184159425 GT 1 -136235.6712282949521522977980069140476703 0.1793711991304767947953644891738947 0.0882485758240218197572796857420257 1.0923878872699135212819975595551704 GT 1 -3423698158220563114929628711328876237805.0246865036848053167420487137523658 0.0335011915305910653889919194924561 0.0352556025239310518042443578885020 1.0358920858100152217055059859861259 GT 1 -2855661178199073172763041290803956.5486306662230328749492737354300862 2.7633593348747112523594578126416546 0.0493540911517836750332886977153108 1.0506136213668427112520951088795596 GT 1 -1508624017889533385770.5092696397792196339371978138916561 1.2736626917886844418354747470296195 0.0845072415298446730349471025494700 1.0882928248167631054160858772828341 GT 1 -2915767395694454.1309296027585818538324299477072918 0.3997205460773468989795248883029516 0.0509582193433893499467612623555267 1.0523024553596481412968390706006629 GT 1 -806634199530609302948463729762681437.1296268123894734228229358900880236 1.1483692126928806074629636739024685 0.0224606165292446627943489478605972 1.0227166979385786568505934942574222 GT 1 -50781384206682719.4999576155995546762395405860074809 0.1737771831186751594296297751646049 0.0734853066221370377976716139507656 1.0763253743669730499561207315013050 GT 1 -30761220681908305613785057023277745.1925434265140320578673115408318727 0.5893638648830026886188058315942555 0.0917564832376907750401209362365897 1.0962427460705643379112922391822025 GT 1 -12785175757512831571268700928308895152597.7741639044979511166840139697975476 0.4016462695527025915078734688209429 0.0098710147531489584419160939591633 1.0099200562121301006222277219536425 GT 1 -85158585295656636149960437201078.1405503267406164533151175647823966 1.5764978540217955378299981155184876 0.0334911917675354744287690877573816 1.0340648668393617093296609558165164 GT 1 -624926621403794.8822007259423860435189217287455092 0.1748559324444453775412454424190740 0.0491856159905639315243124050479810 1.0504364152876061912390760834365229 GT 1 -207723555068801860122590777490.7933304645467959118023271661380409 2.0278656406831531214919404389117556 0.0361227020641276734816246034894664 1.0367912767718128931933811574992864 GT 1 -183484400201216217.3353166582462895813466792239575420 0.4204360912380968887718723230976292 0.0329118367675377829367723249596201 1.0334656157794099047910736198560647 GT 1 -743792025546.9028263354160037755557043057097523 0.8295297094400233921158308547645914 0.0473258726977337261926641087350917 1.0484823778731144459281254971043525 GT 1 -10214965555047046644180365860087.2575430358270870739412555722099795 1.1234280869704103821082842073412720 0.0236790161359635148745494612613776 1.0239638697273278543391160386295593 GT 1 -84359903042201552750323471727706876543.7677330764929354556186730552224881 2.1257015708711893101985902797274077 0.0058191035763504802696690960730551 1.0058361005296624551728409913216494 GT 1 -2101258172504892121905158299672779710.5211616080944629198211525206635910 0.5350050764149691118476752512504882 0.0690046492696821673753566680253662 1.0715009955625254835206174920917547 GT 1 -271858121000637132464.0170877243745169355392832764897088 0.2155127415911168592706713785956914 0.0220530060661079584333371642286030 1.0222998088477110116961675541687332 GT 1 -63.7687520068293477282950903225319604 0.2853344404927502237915219236072709 0.0960753217336581336852167963520396 1.1010092425631406110418643629977457 GT 1 -14291625804758751658958584232.2954436740028388662387699789069712 0.1811264390904550472669509240303135 0.0884325824509554445583031326018033 1.0925897242973685907940323328657426 GT 1 -29.9481489655785871081937656053006222 0.4830119526449636847285271017487495 0.0579564941556470081440549310550768 1.0597038209241019746484182697802022 GT 1 -3527763030.0872879056039647207653749239023879 0.2804358371059046531397227894825851 0.0826419280276742247157524850506070 1.0862574009675545604192682145841898 GT 1 -39340968531021802.7637989481873638820220901346643928 1.9814825901926790487208947511126942 0.0348812072305928297848697541971012 1.0355040839040484476511045151213989 GT 1 -35.7203946042630690554682949420248355 0.2864390731544288767264836101291269 0.0825895813534365787102619082952903 1.0862003401726700875975154686329400 GT 1 -42909844929290115.8813704269010324601212596154968938 0.4294236011726396631732371717525776 0.0896409589666689238583201313741276 1.0939162066997785132951912787341536 GT 1 -58.4813136541610301237563897869708976 0.3911991680827280906646597143251139 0.0566183185324166667409604471925283 1.0582843258871905427273459341304234 GT 1 -5057.5351132719326046508320263215478620 3.7242935589921775707452775185090489 0.0704095284145345774228214552732964 1.0730111429526573417875249432882159 LT 1 -9266465430532199098733684094317.9029101189199004849804256185830977 0.7573508986912060313108354503612602 0.0796744759847299977223832347745555 1.0830278410709026495585736568150235 GT 1 -860408228193798626989391800480.2157433015625706625875101832616014 0.4858654188873773139302188286165971 0.0104265070978731170173525317696695 1.0104812439314302797843886973080048 GT 1 -212399679168862173041139465272495125.1659589288107807206893480164097976 0.0429877853861284436073958992444554 0.0533857116830276578391202405966911 1.0548635672683488769796792491727213 GT 1 -66122115452449380200102393333661001662.1726006558042855275646326868378189 0.1312863963825007565269414946478014 0.0600477244610231367976586400938386 1.0619261757101793522404673529260680 GT 1 -4582594234512522906938439631.0917661308910141303378239443823511 1.1598444061617692840349164361857698 0.0252875594391349655555439983494806 1.0256127842435964160062206831713698 GT 1 -1163624888043814612685553477.2369362097995533666275659414439972 0.0666650698752644727974599930151766 0.0523154644216029892269734779251757 1.0537336004840161077897656119029467 GT 1 -414889810136.9143924084584937388724001199190193 0.2038879930276016892523287191259083 0.0305953177841649844054889640251112 1.0310731255682541889607289248941082 GT 1 -92999415830498052539537774593638010406.7030631541118386744023496170935113 4.5055508286166526342292276017410839 0.0298872508436695439719735040011446 1.0303429779959776298491065668848504 LT 1 -102722160190014699333.5920516096904403019659617177203879 0.4310034593623936673536644352921039 0.0617475536338650848223603509899572 1.0637362335990925008194019830840179 GT 1 -27046669099524005445894.9823855082343474962780596390215435 0.0236862646308374661150102775046443 0.0272952218954191872651082790221148 1.0276746569109519915536369165674051 GT 1 -5594505214653009387177516761116664.6181136957256908039786221765373168 1.0991046001045457102836223849027264 0.0514521735252524204175842664911638 1.0528230676049549175382597712942616 GT 1 -56190071027855148937502.4083711137078515106077099903859934 1.4427563625223581397754972718134492 0.0795485661647584589709771743551561 1.0828910403361575498120422970577827 GT 1 -2757494172.9011638174066073129665856892478901 1.8383997462028763633872082008404247 0.0110482817106222240651848319534641 1.0111097672676010278974574767630341 GT 1 -22079379891988367933067844836680123043980.4514688848955160537179290082724247 2.4924534422915724913399566405479079 0.0263454464475029293957611099289861 1.0266987060596829284261599282784324 GT 1 -1911680250365.7195311032668034313333499992242801 1.7181976550953677925567467335428873 0.0707705363303838225485130137634828 1.0733995699471619420547357678097123 GT 1 -10282.0198747913448548485973454345880658 0.6428407792295873374883893500476290 0.0525817271851746762678681136738846 1.0540146013501902041392031320156776 GT 1 -584399043153605050450.8728551806110871413454929072202205 0.8595896301067328184619114091790797 0.0280009151745593744921807143296081 1.0284004160597537482571231699795126 GT 1 -56682577125703597229830491534.1232266525060740695198114482015104 1.2922209969760585355423549485353203 0.0168233315629966210086147326294173 1.0169664512427536963716380701208009 GT 1 -78181192466396564376185570269630.8743061044167314847921464743562721 0.9975824450314839683848570549736196 0.0424990010955301775256973571654122 1.0434285146856140405794128938578206 GT 1 -776021129051164131029161841.1538072801735159741518521168987797 1.4312854348788883214214243000999399 0.0305820769255386312013552435233809 1.0310594669090344853359912251037389 GT 1 -796415846659230204.9524499296638227998149846962271335 2.2296072080873327049234372587226929 0.0151937626423023996237154174581943 1.0153103705030944251817845581162249 GT 1 -7006025950291961009785317097222491862320.7743706734389224700174237478818476 0.1971210719451055104893636308128876 0.0695342898811869759201667377759560 1.0720700546064529662623514257851761 GT 1 -213959028699686498282606522769399119.7638840886791081497955338837466000 2.3939494581782624927595247435656919 0.0131997607901576739603865758340708 1.0132876519173150978365362160748046 GT 1 -13025389937.4133160452098851005531821343340156 1.4109491291840949747260165796561847 0.0645578275951734716556534377407636 1.0667359498180120948708609181994532 GT 1 -133969196.7770329976691400082286653455923055 0.7619263397079813405656510882335527 0.0838501409689149730393994626993958 1.0875753261269630378784884624690781 GT 1 -12383.1311266118649915183729278157778720 1.2881585955122665922976308333160507 0.0349914948068757781605318041131214 1.0356183640103599832260711430206960 GT 1 -26.0897314583838901879817209152471682 0.4724544048469605889114103887649089 0.0173867308830603042032502778230394 1.0175396552506964111462570845157785 GT 1 -11886803240484363567738599470297170.6602495854169153510505568315400627 0.2319248868971356299128410852711539 0.0667419109362783538429862107405789 1.0690734935971246742788891137004158 GT 1 -520523475837293.9888097717909938427101024918987254 0.9388478672743115533406638091195671 0.0830449011244986639922126682938785 1.0866967731638747160487278001956055 GT 1 -4530363152411487832029122432096.5262441524201424907946499018905521 0.9126953044584636632114849917387438 0.0476700981000714910939578084742492 1.0488437686111994861694245773108560 GT 1 -3.1398183932337562017103424674459983 2.3125823697287398719741896753497098 0.0534948429384189365491908590560095 1.0549788597880877367707757249758376 GT 1 -3499022.2671439787349598515962689915546423 0.0050365316615611473441083925264880 0.0166015052818414641407252116644920 1.0167408546967868912044997192361757 GT 1 -830526685924563617.3594537432683804834589162813771339 0.1701192314804019950896459962698701 0.0171458713844961125760825532159391 1.0172945639303847454133395504347810 GT 1 -61435544717887.5918933358626918953361629161507176 4.2808685766894251137677134501582705 0.0643935278107577901124180601630038 1.0665603266076667266991136299100467 LT 1 -55904843.0884147479247727094265753680348984 0.2906412593115200116671176514898979 0.0634934824790811889023190604417457 1.0655987976764885092920269625899175 GT 1 -1273930273675078.2459879330628134385537887437656166 1.3511866020765186960010224347508212 0.0094051917950574561962553542843967 1.0094496999027652835101025881914680 GT 1 -132359538793131988189781784689685987508.5557892417683779047626600651329826 0.7767275932492083821440596852644863 0.0786622374240744976465624325798669 1.0819285753474052150293285576358008 GT 1 -10846418720523571505260558291.7497566462173172426904336225145037 0.4688784761507607101624351736412225 0.0838549449663619580143124460912625 1.0875805698215343870937306147547313 GT 1 -20281458926022984626007954420915.0662506512155947056241618063969001 1.0693603850218588755576747880797533 0.0490086999191831189718278718596425 1.0502503646585948800241515466573336 GT 1 -984343500558628853.2238326354154965764271842888960591 0.4072235529699067686208807257362255 0.0874825484763409740747900180627017 1.0915480687509356009482544004757040 GT 1 -308670742879963086098787944007460693.3879659404110216417235712714923459 0.4780855523221183906035335647547159 0.0442976880587580090276054816394619 1.0453088036052153977427375847030253 GT 1 -12113299378723537.0995791552613809384600224572020646 0.0286026558782662416143047882528687 0.0947674444877505262449457398921125 1.0995634008758323887008742702464589 GT 1 -160326922480100.4891888854616212582389756250845620 0.5005250259991530286943834764390142 0.0013824982442013657941598576348888 1.0013834547766035295617951427809973 GT 1 -2154410358400963933600206547454320570445410.4559297086425217190944101041906166 2.8341949966386296603530238268730654 0.0873641008082139862993621597710417 1.0914182739934190944526467713693842 LT 1 -548328538468626321934960.7661865214833614159921329589863358 3.6206746297981791159682293173951291 0.0157764417924464822134223793045161 1.0159022144340138957920506354993806 GT 1 -236680532270744.0110902317402295528335462153999045 0.8254270127215196281945695611423146 0.0786369289138611254018572396210124 1.0819011064172863013574972524564182 GT 1 -125929040051658176449756.5311845949550534537828326326663038 0.6789630929387226756442442143821003 0.0412607666755842337460407173793419 1.0421361562730717163722384561361137 GT 1 -12220975399842.8169937716307007377023433230694392 1.0383611312740745710729570678745635 0.0688815272993889132183349606042031 1.0713687566317754568166438107462534 GT 1 -74746758426.7016036046969336579412334033900468 1.7111866482719646395609482975552219 0.0831362127962505545555371595965113 1.0867963595216339405555304527967622 GT 1 -74488602262592.1660539751690074367742587368662301 0.3749579418530941725477342229197321 0.0519402754542513316112844145008618 1.0533377781358839192228237338328391 GT 1 -283742797807545495953616.3480763714248564928275315615772985 2.0323398943403515764158823773519487 0.0766934046619910566281095375396818 1.0797939270058367887355692308984165 GT 1 -857965582100038789.3591455585451768486050905660211978 1.3122758558364711779276745637949204 0.0896115989892937409500961607802821 1.0938839562330748313313115040954336 GT 1 -54107289204642379.7929218503576324364457231097180702 0.0258540628065044201456389335774675 0.0591333012642889612587250331422644 1.0609538085857615744301690625183799 GT 1 -158151927.9784821864142787797099462195145119 0.2231546943266081880186460646777493 0.0097714306811796600985830618688189 1.0098194844019298184371441168668728 GT 1 -121438382.8445776309426837934716994843457061 0.0694351728962567402479685536575386 0.0498568706745652220409333747828507 1.0511426432881712016365056468151132 GT 1 -208744480635365854381131152261766866.1210175592965881715531958393894037 0.6916689140265224002683588111860208 0.0774716151336282165971117178616066 1.0806371340379842009128555237883002 GT 1 -25.3999949015051439421543555668471254 0.1875321704404411254725047936488878 0.0998996549223412652944753875562407 1.1052490273421476066727653060966960 GT 1 -999756603386598763454665932087401373037.1061731342111478604286164342576023 0.3625212455169225321832857068257319 0.0090465344511248100463390904292781 1.0090877028193737139050507786421765 GT 1 -44.3289612776261260667536603891084975 0.3743499591553609182906474671537954 0.0598350174769727733650968226211499 1.0616999057963792585454923645897950 GT 1 -418587713125371443547504371426972702925686.3592461962338131041133879275329482 0.2042375797190486743550384353160076 0.0789164237013779717134999125057533 1.0822045016771246246600559695784802 GT 1 -1601961406225544026732723724607275794096.3175402861691546114283836167635912 2.9889387808494809900017083151544137 0.0863602891595332811954467130886255 1.0903189746935157905084373266611986 LT 1 -115097355597058884166365.3179118308334577402394351293101727 1.1375192307769969977320650455829930 0.0120032513433857921333742361453712 1.0120758720730704705098877498438930 GT 1 -689429163083887910195818235503572759409.9132100664545161572393962630630252 0.7064108194517231067159530765318304 0.0465829277342572614063243572351729 1.0477028296528944150961404585322901 GT 1 -3751031377410953445.2054046347349409581508241320082322 0.0194487465331680132748834263828255 0.0428341276928842029394247499036936 1.0437785772534844161572359998166985 GT 1 -1147229655239711688570255018768056.5948064711357061840803454207780656 0.0965842927545050930166264103372011 0.0458790430649032620982033975948894 1.0469648263307835666026456253287676 GT 1 -12189973872640127351346601.8320492348132102638955589406631478 0.0657391004601905701726970640682358 0.0656425247041009898416990605530427 1.0678961781151346663212039006115676 GT 1 -36.1275588097514343676484815337805107 4.4022787986148852852548060977945772 0.0722953318492047730622075624865262 1.0750418423739511292952407688541210 LT 1 -133054906752.2300103641372763285664896595500485 1.2479382649460604175142959734648807 0.0283153251193901233720001121024318 1.0287239357125810239631817985059455 GT 1 -699844382.4115782585956909001777728814643295 0.0736780816018940863903361936718305 0.0308477971676734172616827630858688 1.0313336073595117478790963438838233 GT 1 -1361337535547487044550722124330.5921455548781982415587471363613746 0.4043569079670931204987276162099086 0.0059794442863847120720626088842040 1.0059973927470174695822079586056909 GT 1 -192.2051630357477614795563451780451694 0.0232027202964200529074076046422385 0.0578676398920217081891328965340280 1.0596095046075661430093981489821710 GT 1 -55499145806365592377715816601772055522.4874845286436173568000985088458238 0.1837453562574754944779788879025757 0.0509161110465478366437664485357621 1.0522580870677878121536395793736669 GT 1 -12391547857210723722110431531458943.9794331526826827170275878707881492 2.5516652037717155153133975391054446 0.0740759844805441159136771136672069 1.0799247640949357626193985112950238 GT 2 -12607079592149195.5377755936997961342655906812380213 0.2841289712059796690546006504454086 0.0994625941168143088603099480440382 1.1047635762136494036391426642775070 GT 1 -396985023311038.4409925945907561824503584434233679 0.1079839426964919001703816626743752 0.0253307972395833029038093004240104 1.0256571447725914063594982240643472 GT 1 -387710831330199306822209559844084.7195279650664998568830833328315417 1.3889406270771062011492324003689382 0.0188505143560091704152191291360885 1.0190304501448364873325880791572382 GT 1 -705198812714540.6122246501284471713886559803208970 1.2475839504193792204837954812621265 0.0450797137134987792937570925261861 1.0461274118422759715852482391180205 GT 1 -1978572408999926342920641395913062539.9615973919988432914031233320212433 0.8079863044539341231255805566888244 0.0744124933934811283194169309103113 1.0773266008098843666144816573170644 GT 1 -1.9368577792110225763466182631087051 0.1359646186096869710563086934124876 0.0591865508453333650153576248211408 1.0610104064949421740113006058800405 GT 1 -398324.3392068973548616847485014115830546 0.0801510485559760584217527775063487 0.0670645364163361919902450316884263 1.0694192513914480720835623444688825 GT 1 -10619.2873504996644429053883747562788354 1.7140499261373131797004845201665485 0.0059763224560121835618847983271738 1.0059942521424772822096004357876582 GT 1 -12520247580283539820104906850900591236808.2146408537782723110463475386423614 0.9009845301674419857789222660751625 0.0343111398857712498884230369194841 1.0349135876311185922989576022926087 GT 1 -3115847161709967192338558533342.0987050865755338906589638215819526 1.0912400771875251419924653353216013 0.0100394202382105923129228882867273 1.0100901550687108102720375630041505 GT 1 -19689816862475922451430101718583.4715328032075701559449859968972773 0.9689644823890423165509003977784030 0.0949106536465941560721170711982787 1.0997216149028457876696472072461100 GT 1 -96851626462111024154792819.1731231664760658163876861605164437 0.9914636426148519926373228049825348 0.0964843905933556577770953975453772 1.1014618925007037073017639458431322 GT 1 -86.4997253624912382508594882815906523 0.5393822208564887436388295171926722 0.0933373165489329406382295607975684 1.0979848016223536704199691051262608 GT 1 -19475841.8936632558317534226095803070560765 0.1015640203959564069182861130052715 0.0926788518406674987402418835446092 1.0972588141844153496184905468840563 GT 1 -20758544100.6159036515374695827327770726148709 0.1474927609750162000023346883903030 0.0459373958615708401276068234746215 1.0470259869003180184299579513525175 GT 1 -493931572797.9561236038844329941011341012573478 0.5036355597107347784352475563824749 0.0977690927787589530285329700229297 1.1028847969785250745258349903448067 GT 1 -1.3915296762296152296873247754251745 0.1870524045386970484255925280600093 0.0969124415736861207369631794201007 1.1019357663385914686778934483640687 GT 1 -7108259012113087911595.9602727118367078259273333901605580 1.3818809809975920248600828925956552 0.0764241283499619698482795800772034 1.0795023260850956842964962932904726 GT 1 -959.7837981042314116011624891435575521 0.0785323322921468293704801683218882 0.0133287703082560264258298326766104 1.0134183956552561698442564569819750 GT 1 -2621079865817230348230131662134812611.1285409507165751105166163465266317 0.6799980006664814660107373650706251 0.0249747658809357633260222453277962 1.0252919271714428100068057075617359 GT 1 -9855188330376550187429.1465755196311784633054004273649413 0.2676086057791261170689787167438900 0.0073186627994516126025596192738567 1.0073455756029255720174265474099620 GT 1 -626932394935896819109521689.5085257939990664105554113565654032 1.0059760359011777269502717662241221 0.0863648467597262186470697167494876 1.0903239631058039874736561309062025 GT 1 -3977893767844568009409641303.3961077137545394120280260424821141 0.5572593051569048123539906180255230 0.0798537534106730225929622967870900 1.0832226578883876040486444572986953 GT 1 -153568311741849713433.6015394541034634913434889848636073 0.9324029616938882462484210624136215 0.0117714399235881717346089095958905 1.0118412718786124558216989265425450 GT 1 -564606911798549953186183.4976638648964122349127368867226841 1.3947439087733074264123522236602501 0.0134574834935565849546493845755300 1.0135488561142217625000962032867445 GT 1 -115973240850314807356453182222661815850001.8034960780949124299481363880681234 0.6472896640727566311974464811468746 0.0589180571708996204347067014067477 1.0607250626045227690588051342752032 GT 1 -473.6256699938318132084408531419939943 1.9182287610779133827885201882196727 0.0206564147386393604227060293003183 1.0208727426988941496294134632872400 GT 1 -42636152163836671892607.4551768506363133481042764927710450 0.0338871167146357034659064072363003 0.0930683757754365920306951665216593 1.0976882184512117139035824866697458 GT 1 -4929816366326.2983889439847856494979824574052451 2.3388121290143227776715568277214328 0.0076593121131875783785806635155085 1.0076887952879212662316032534472697 GT 1 -36719865560794378828246157480.5303606609782329309599409414661999 1.3238098114170788421989364628967743 0.0899586332769462688233199341237208 1.0942652225670003708576104638113234 GT 1 -575191437191450478829306392671752088.2115996348556676943846728126625667 3.1097360990086640143064618999723388 0.0218734997028260857397306949536934 1.0221162714046495065226829749021105 GT 1 -146500681745858121861114391416.9173113040743530399570013760401114 1.7148000883240127964931053099762026 0.0456796621875666692562893710297186 1.0467558800261623816919976596849749 GT 1 -16150373060.4944367511662236450460061952144401 0.6803487548147321232571111673259279 0.0588271983176169358515476117104795 1.0606285200365008868915705907500917 GT 1 -197.2175545308136791608095269789153016 0.6632506234092505887415025158226896 0.0395875778125381819226742518919440 1.0403924803294101935098092965000034 GT 1 -896048141006606003849233497342950.8710508168161004113932036488947269 1.2661267119875888921856287268017460 0.0294155722099417006551901567615941 1.0298568860403459167705023224058415 GT 1 -220578140734542526028760546339673871165.3946096057927377720440075290804672 0.8622617144875681406856221819949150 0.0939361522345224033252725373652258 1.0986455032748765748581230512540300 GT 1 -12115527813822419596155823.3857288083959910438298199533011425 0.6649849115561399757486855216041030 0.0769952757822142341777786701379437 1.0801209261632548228135823715257128 GT 1 -453919646661080634415292767.7526809228410489799392636657561211 0.9393717954833498436887933527793851 0.0625375612902992706809455904786072 1.0645785873165290222837539189474474 GT 1 -4933804180863791637.7978901763341840710009733974181971 0.3663019852348798272694901089890239 0.0241849526211855380225499938475664 1.0244822111630194434415755281778081 GT 1 -444668625156607313671.6242998497923567018957005011470233 0.1326571413263584058144215537994068 0.0331064485818964897828822492371047 1.0336668708518248400897496175776696 GT 1 -13477.5927483849805848593293490794235674 0.5477347640340090215520214789054466 0.0404894856051706984779139301878336 1.0413320053924123712633165168814355 GT 1 -256305789153650011480.9392547323660987616327800808623903 0.3704747950175112352986030835051271 0.0258673459731081254622758265365880 1.0262077895138341891821305644940948 GT 1 -176946205228247072299390362460.6343789598217061092539370869668494 0.3949471400758745621223369013677400 0.0248130531682673235086780047570568 1.0251260860238808712744338170903429 GT 1 -3185891259456747090518462991.1477369409759508805599351070111941 1.7827339430525465884452871360655031 0.0169923019936902827276601832205063 1.0171383277300185071697313292001384 GT 1 -84471344805075260201119938.6048625671418295573016307213373607 1.0409252264265353855142321690627592 0.0376850990185457487521002138025752 1.0384135419828844642048094978827559 GT 1 -7448533980534242347667.6165234809564854137667958695247238 0.5736545009037730305163311281312128 0.0283617950714672954415716072286188 1.0287717609634118003248588922805216 GT 1 -189322015932246362.0013947150362788391015620827758316 0.4208815894215590130288318611297714 0.0658768474379997537837384437490405 1.0681469944539648045532898419498374 GT 1 -25514934384790051711939.3260297380985179707232051175466937 1.5293869671364539312282582455662080 0.0870673275505254269626698979805337 1.0910931443161086924425754648753054 GT 1 -110427656771572716500.2146488304662688219425153958713362 1.1720711105573744279031303719994956 0.0661831591928329772294644428495680 1.0684749619033113724737655367108011 GT 1 -264626867486875059529904483751184.2313703784246236904661597009657698 1.3573621006438300329922361710085862 0.0966695765448192437950519444019256 1.1016668750490160282310186769743096 GT 1 -16437295736692131773810425.0544499411352740300647260898300850 2.0593628445985901497914080387527933 0.0518433277203032534846875351398019 1.0532355242642320803399377473295340 GT 1 -1444424720464582.4820626262670004114221553851845354 0.7009201163910986934564476889886229 0.0128431508669304162488346981218332 1.0129263371458717195215263176058921 GT 1 -739364118455974286183788619886.2345824663545663610730308766308270 0.0843342794133548531006257125657199 0.0519976590183640177997573741097552 1.0533983073402528122702244921534267 GT 1 -303459569817609619506.3522620995270513635746064968485136 0.8429582587380839207174670020386667 0.0314871554839624672164197805920506 1.0319935339452418628750319714494615 GT 1 -1168.5913673057713530959711224228283138 0.6472570324218377302794046339588314 0.0786074109029798511405329746146701 1.0818690696025076507633176704331594 GT 1 -26991456044849695714200765426601.7662936690716545607125200064595305 1.4841323913485528010451619198059760 0.0992901209149516931330101644854456 1.1045720720222715249941831555967884 GT 1 -22877541244114022240043536886381020787.3326061143971859193228208729287933 0.3320419997104465059035188686768818 0.0142176150491718515650607410754060 1.0143196536564403995538669273400677 GT 1 -2259839765265.1237345886723294026835963869990343 0.7153786483212624055142789015742665 0.0049161093577026278644147197682521 1.0049282331743043875517447059832154 GT 1 -320935348350910697607096.0947167734503899924471243843905620 0.7591681790010296297652958185341443 0.0232256755020924773234436872878794 1.0234996418526597415541315931992505 GT 1 -140357892459272878000164.7199240406676886436410412727325889 0.1994407716811404269126850341776207 0.0924393774012632213768254639863095 1.0969949133125761079592931707561844 GT 1 -187368576322272307015975323802064919.3692496176758482112428831160277844 0.2280093322677415896990160026900862 0.0856273652282787379894863783922585 1.0895170939269147544579394583413917 GT 1 -239455451941151080483326669220352159389241.9928401418333237453993695839428356 0.9198231365703828169120666398416918 0.0931020969706906943237154838434547 1.0977254007715470113645784085546440 GT 1 -76426324993499737.5061801517072818710705214138284210 1.4838123562223505985225659900799697 0.0273260876281625249179627679733936 1.0277063892753466778305419070335766 GT 1 -122352183892574712.3383757226823264467141642349325134 0.3717243011433588935730845621118327 0.0277404016982424596772917431546045 1.0281324337381246611329956199285670 GT 1 -273330227902815217477929893.2519994179398248217026814786642826 2.2688261930779708141754626407656359 0.0361653607807638786794604324115446 1.0368355351652180029902863570807142 GT 1 -61329419213015999386021161265.6279830838463909778720637962437818 2.7966107295639887670312322338815924 0.0120671196301798398492511451909874 1.0121405183903057248260348720853887 GT 1 -195980045929752402089590292013487619784362.7517221240296792575095913908503489 0.1309185967389479939446939025526526 0.0185953213741446808126726617093131 1.0187703880401070555572406705567483 GT 1 -1747415458985307960781970022255.4184697635080964434863179227896050 0.0789696770576320105927039907573893 0.0657741365636574381645777491763946 1.0680370461803111242704279774458136 GT 1 -104595402626.4092209770943361683802454674669723 0.7306851451176126286822943412648596 0.0866972261356237739219097314098216 1.0906878281004855563373464729151384 GT 1 -43600661723956970.4261473400108325238729606992416914 2.6204284274814985463593949669153523 0.0204411002519760033279079211812246 1.0206529109418994333539629443006416 GT 1 -395381943478881090345722594753333276707.8161687041629244835285179581470976 0.1839517199170033012062942632149237 0.0396034623461460184984816210838335 1.0404090197499775683647999242816335 GT 1 -64061777564651513430351045.3823713727413003224847447368731115 1.2498620648228001581428163491076829 0.0840859956132238071129032049290545 1.0878328003889920783574715402557509 GT 1 -12182257832113179087191373818.1792652820210456265152034470022209 0.3870611052964503685953245282646255 0.0913170792557471127563242436247561 1.0957590677207539541437672236146356 GT 1 -2571762293.2284961428230558877086986641965083 1.2867868299341623257076401681846789 0.0908216618209295199602922637065399 1.0952140124315773547419001923217895 GT 1 -45365768706104547457725257676872187877.9901616623969298619357633749751069 3.6227222804778739458912456586898637 0.0990611156679767192319446229281346 1.1043178546044725622753412254638892 LT 1 -6734169251100297160862304059083564602888.8070588068587596705332069170737329 0.0319108433476666785778305357803998 0.0305879625123773312447513269714532 1.0310655381859988786840499701445567 GT 1 -350674385922549269446663431628294485.0080297281471364539274168289813676 0.3776858406874044335793260483871851 0.0698981029645481748265740091596031 1.0724611321320415124603854653939786 GT 1 -87656995639911819.9775704087843501042165845241888687 1.3360378231939317072943814414064793 0.0906425007919478846441416176258199 1.0950169736645891779764759378856005 GT 1 -2.5287891254644604213036795099359381 0.1041466342983486037529424958721803 0.0763259317799742715975521514202719 1.0793960095894653203474102166046636 GT 1 -894797909190445399955041072833367.0135052949083112802761696305809163 1.1817282468061136967551176830995115 0.0370489030623083009748303104688110 1.0377526504696271773339144438246497 GT 1 -71.6341569896548199176972887537266764 0.0236842644447577939764560882480989 0.0066876914984334479099800073388730 1.0067101543128184855425065341095834 GT 1 -232385223374315468339824319894848727.6354315095935288983385927307875696 0.1427671495405770941595754756907726 0.0350708903079789262633052192046077 1.0357006418006217818978886359954852 GT 1 -2197152386319153384629283.9718359294667492522026646468738951 1.6715451275399245798753962702375761 0.0824537042612366219582593143040556 1.0860522417555433121906841546363915 GT 1 -27894794476103.1520847360806438492720526021257707 0.7919449805215577722327926854313290 0.0521790759985681262547374505657656 1.0535896933033947749895373686841055 GT 1 -69848355789183757175357986552257952800973.3726165031689765590444336344805884 1.3325557587043817550333813029276756 0.0730170383712974600030877949668512 1.0758200937052603599488050312039186 GT 1 -336349801389496311110.7785891146892755235875645978602512 0.3946247675471502965240978889848791 0.0122960592164461386917841005271358 1.0123722812171975784874509652397902 GT 1 -875485258.7457488530381266558630270734249940 0.7584855013468736289780839499326900 0.0666496037482757110381096341164555 1.0689745899557836368353297124214996 GT 1 -1685.6604882727299556088243323954369671 1.5060403476212398122660672335102965 0.0609907807212592876382917602633330 1.0629299816338499675998105252545318 GT 1 -14605398603661331911377761.5916699900966392840360051716080847 0.4763204024766720329207055901400932 0.0911263968019512641304317849039107 1.0955492448602446892861708511806268 GT 1 -371748631136060642845451308944137553.4892698748151353285638638647624951 0.5058961951182072500022719617920511 0.0914151941479524265514433156704197 1.0958670483896061041895613529921458 GT 1 -3097507494890.9999918667976835096323958827807921 1.1830088710101056750017477783823349 0.0777622719786377712837634363730662 1.0809522491578729722175974962089872 GT 1 -617601719073318534378939625384892.9998949172498662567814967429180635 1.0795034961604151097969978910408482 0.0779053308838138329859248458890272 1.0811073826963663613746747042104442 GT 1 -6792931963295.9057253421972164600176388012031897 1.2126699597869814284327642560779680 0.0154933598701330506022664679407787 1.0156146362534146169288938827535315 GT 1 -13792506.9878623084277833087557758863583205 1.6420634560372348366518221081152409 0.0140388178659902255944525610724158 1.0141382941869267811013818850572343 GT 1 -1295562.1885635562216099564601168327040534 1.1586802758062007241519990198195088 0.0580936089437432631228777728228656 1.0598493818952975771182221508091730 GT 1 -4075991363010.5541972097871495391201249670824493 3.6044395288470187268673729096537402 0.0857864744531504553689204271003510 1.0896911182400436940462890406790112 LT 1 -1097288088222.8927110849751347182258371285553893 1.7812778143858805148553586313628308 0.0488340347953787789273804769710457 1.0500667151491847916656850347996678 GT 1 -396506420277008001594445344.0692777022285508343298973645528764 0.6220719525498613760323128250482122 0.0261184422118767684633630147590069 1.0264655866475884973462462356210505 GT 1 -115772406002651896566805307178947211270.0316912291573545422460241608075738 0.7907483131276030073307022207175967 0.0788649956605335489283483510248502 1.0821486689530404181422886763826248 GT 1 -3312205257129962315.2114115240776846771937475986509670 3.3577795220569187596428444603621696 0.0186861932553236177648999311565051 1.0188629860177805705516629623241631 GT 1 -438807346.9340434049692449310691633619639450 0.6091657922534315679971301882811258 0.0373073973881243132861121877744180 1.0380211262291138883657976444731943 GT 1 -1438386025036117343201205619345429740687380.7487672120160025517777894498607396 0.2329447689606650599093901920248327 0.0950215171851390696345207312524955 1.0998441114600432990609796487345436 GT 1 -8779962211.2229788710848079193307515054597805 0.9645261676282683931300401918870544 0.0419004013630028586638136388551806 1.0428035412409621750066957682130728 GT 1 -8918807115640194902427934831022679812775.9610840135980535405551908203227835 0.2950248120735331651542816126886068 0.0366144897416033106418502168148543 1.0373016251125360530245849142785312 GT 1 -153613044327.4080046889111742647620872959725200 0.6740627054245513093920938875468580 0.0420781177176742842004684880563473 1.0429890468388386579729526936901355 GT 1 -19295986533634685475635991112724163860298.7273029005978411786647540554674964 2.7132891883531944936401234667558163 0.0429567552786999959739321126656102 1.0439067007535687838338856227774044 GT 1 -199706598500540.5858767313254414312886638187936649 3.1455309934944651240610122796360301 0.0103905504458845405923069013054025 1.0104449090871657988797622879199886 GT 1 -2524207691112594525105269957998709.6990739347150129908465306258854514 2.3933588395415207436574770442836139 0.0425561638911893200847610517144053 1.0434882164531333382396902243059497 GT 1 -16758617.0147650038298751078949414323247646 0.9065054031088955979027652930312549 0.0098999409070151348136923752369984 1.0099492711698148336129463110969801 GT 1 -5.2041604135643366228151761071487448 0.2663725461558530332516576010308568 0.0077834284111555573096446331371073 1.0078138773912843045287713234998534 GT 1 -410290864.5716621193594025833163612255033077 0.3863211259815856145360873116321382 0.0278532659303399350864193364773119 1.0282485249381431084679263783808736 GT 1 -216067929.5777895907533534180990416019642377 0.5328315646046264737902260853620140 0.0369500582147582535565304526177401 1.0376500079002312960649819657508111 GT 1 -253091397970711864045123021534.4111379069637069491993686853919544 0.7837311757827420620625382688018815 0.0627814449461262543928473995139719 1.0648387741515309823868071608895277 GT 1 -20465915121780830496.4432228559207365495793112362418651 0.0565082852151995120063305241579438 0.0631042260627202424957777477332298 1.0651832367222423021741237048200588 GT 1 -61068649218179951688061582279482.1130003728157247434520800547201025 0.1871942437871462215736703389341296 0.0562160508212387449779648891457496 1.0578580064261554567369630674372206 GT 1 -114003076358272142371100806.0463547200129678921938649879423034 0.1321021138370636137545681594193970 0.0356075142176450362190920446622066 1.0362569243040292715228096435897586 GT 1 -1051999018146254103604995283.9738704074446522625198390499873032 0.5840377006391317316434595098896414 0.0704772173048661797183052567593053 1.0730839614215759610791285243442211 GT 1 -1315675128519890693932629692.4520210771037783781171960876555636 0.1871633272501969713225106160023813 0.0893379107787398423217069345120756 1.0935833734495851978905997532919565 GT 1 -1392822048003681339.2438078749121742094213898866548945 0.5976705571987148288452211550711087 0.0958721994372077903738891218528744 1.1007845562781093089326566800252735 GT 1 -136670260819818713618466351158834954570.2427292028217792070107159875187305 2.2665240599682221004820876713711826 0.0207989818637417929789499253539293 1.0210183274612803828153157932451811 GT 1 -68276159999038744.3584079864302288004816075749119588 0.3801733441737253290206460722894920 0.0161957734128366980296566825404903 1.0163283584447599598088353331988548 GT 1 -9083327828628758046.1845125285664668769954642676064223 0.7917422547454541499903005489302679 0.0134095103743408243334647702990594 1.0135002297731934359222411141368616 GT 1 -1.3671677200408897613420677777176171 0.0443579908232363234728270470998339 0.0064437174433807925161424983780310 1.0064645678081277593277435695294131 GT 1 -91463612396489793393257374623960.6050949023028214170574220587209617 0.0704231391339270418807895336193067 0.0372115549960292953673768352437660 1.0379215745952062524843102548477879 GT 1 -706194808595345217784375366.5255367757253051593686297403988605 0.3721317380521456480842886347057054 0.0153740735190542683307408507654712 1.0154934800110697876410113114534464 GT 1 -4.5469893478036212704462604399133897 3.0703767127168449799000273505414401 0.0449926715002727574315676028163792 1.0470959335433318087875067410290061 GT 2 -23561117.1714955347641982058514992513739806 3.5856142519241662354361045414392365 0.0083798093657374132437379988707126 1.0084151173560876582265727183986459 GT 1 -220196791279171479305251855683.7177478883506661683444318761765653 1.2020617101502206926299832790626103 0.0684632279013300740135859225600157 1.0709196134999385603579934814546060 GT 1 -15673034499407168924313693611.8354984152477843802782785242915488 0.0957379138068033655354605857975720 0.0104181435857048663707674879274272 1.0104727923339635229752085272005781 GT 1 -17738444738130887517594853544950.8432539827154980113960577780764502 0.6728592565726819236445963502628057 0.0956663474087312797346160754130032 1.1005569019601181327029740596084232 GT 1 -97281402340639720906725461.1341867793558494443922296700436902 0.1339507676978778455212932875633897 0.0377522244437729182637407851563453 1.0384832985318113595748541455198040 GT 1 -1460122.8613961538318865987884603075097599 0.5636455811729185164975881099038898 0.0136497715001433741923139618717518 1.0137437861302425275295756771794147 GT 1 -61196936.3461153054728617821441064082938769 0.8970786643304760966835952610234756 0.0738449759099505461913892688177109 1.0767136457236437485148677884204047 GT 1 -39738833803397419676005381711606482116471.1369440382927749467442040407041271 0.2570219660878965963559602322143278 0.0104339410000664170950850613712522 1.0104887561881442549610087754131497 GT 1 -2334825988907839.8008007640473898196802293302482627 0.4596214209901746944073695802611990 0.0686970164935173835696577702852315 1.0711706158663109646549677407998189 GT 1 -9752757915013322273299584848574721958902.7958394453599788938095663220627947 1.1570209830456087075593373925172760 0.0558020465270485705670188120623627 1.0574194383442850080316376992140519 GT 1 -70089775.4471609644156001541152555856387858 0.1184033513591273722001502521126775 0.0960634563296636648008443978817609 1.1009961161086864042123604761554924 GT 1 -25545390969.0732543132873628342686424309452218 0.1909979655644910503823048316760741 0.0233578018821817596718885797676273 1.0236349190746562568847059745162790 GT 1 -2843993874477245181143.7431123643934094756547641687271782 1.3042165639374489327845954397782299 0.0802507837252875628667646566383026 1.0836542371044796998651847650349134 GT 1 -40308318688616278679909637.1670334656526039612911987877158907 0.5318307533823427650744151995893659 0.0208268839989488143390878244175047 1.0210468226652585548643860158965777 GT 1 -2.5104364229292251310875618599274340 0.1675155239312373923015271970720423 0.0783667413208635715765245785954205 1.0816079017151720965104312852415569 GT 1 -1394884006069863.0631477220356606591467577873526815 1.0548472446831842960621696771038894 0.0083270999122479635998866578544336 1.0083619638874970216141284655541598 GT 1 -1094398654714993.4901182574407271136372556200905387 0.3423498586841268861681259085036234 0.0143426918077358666560925799972197 1.0144465424059840619836096234306354 GT 1 -13392932903213105370.1683206150279281653601420074792670 0.2532838692900178815561009522209417 0.0161271457117643038918308740658959 1.0162586034003299158448698704998543 GT 1 -213245400177456044735228417846938.5563620101596638947849162147925473 1.5755643562353774681564110209498844 0.0846554196685370682557465684394399 1.0884546940728412325095406685842958 GT 1 -31844781296567542276813502.3286283162083561205526978522397265 1.4019887856486396152937503371467996 0.0575472426475561233753165751892754 1.0592694857412554793724286596378521 GT 1 -2405448172604570.2344850922160823848391260342279328 1.3230476862372219114946345140037993 0.0368036492416996067905278381863121 1.0374979930993127076993027222171898 GT 1 -56528502013072158094235304949660.5439405668208798786320613282458106 0.0297924958448222991768705707037358 0.0036348316976557787326460074274814 1.0036414537499580265540128428573503 GT 1 -13842161891969944470720170767.8306165201479360918203019630115031 0.4994080498030429918544058144358081 0.0897599752397139938238974670765940 1.0940469507778687966360786371883010 GT 1 -8435164258324013374.4837723705303706678218176310012210 0.3698288159190283132805398564689598 0.0486732637814046275377167129422853 1.0498977042360427021819490400066187 GT 1 -557118905540632355681.7387200828602501156463068332535786 0.0717878511726245864982443249918578 0.0050429477160212762747979307002614 1.0050557062888061339607469400615913 GT 1 -19273607161272477069.6681491760484327264925295523441118 0.3051436056598793893736535186098527 0.0365545735024656947611196062399911 1.0372394336270102865315500016847530 GT 1 -1355129492415641681531538373509.8323604467812119084856300107289065 0.3781795977150342005602184848753206 0.0316762216408964034280770069993164 1.0321887658561851883957744241887940 GT 1 -28079223354639541750014303692.4204568060956316572340182499849696 0.7297324758869293508027065215848554 0.0192680501866335252347350549148167 1.0194560985345731415936377457500626 GT 1 -21776570654501728745411000036.2140983026830434653878912346634989 3.9860989663362191728275228785616115 0.0869049596174761346479196317314483 1.0909153070003481369775617277284908 LT 1 -1109378127725068663.9374486802951559325001996481760179 0.4658700379199202507387619090514675 0.0261159359277976208542756286837900 1.0264630131510127078818765217035088 GT 1 -266018737.3623180234680177558723418161304532 0.8687265763252712185466602041995842 0.0507699539047449703855696807769645 1.0521041007967151933142504908309330 GT 1 -141458280087.4153041590504212860726589151272980 0.4251850844304046696399938181977047 0.0723357551420899090012242254477166 1.0750854167732073728919727054532881 GT 1 -501701893279468120783803611273603.4145289759251814183457088476064184 0.4309935175599840613389860128201061 0.0573156123495207349782444185729843 1.0590237420299132383791643145175452 GT 1 -923693524396278994063339990324075775.9386757059643730807379689797349588 0.2029204623768027071917317380568518 0.0839033548754609829932661728467786 1.0876334120956798891501214335212839 GT 1 -4760937656257906876443647313160.0497373366184601668972785521895580 0.3341933581835005760160448284758259 0.0161792745368333132266272960524842 1.0163115880983719663898273225059964 GT 1 -23645427400270699233472300.3049276805150787964856075968816615 3.1963540373431452889032195459197619 0.0162957422475783425502077510238238 1.0164299781690187124056106613602888 GT 1 -6147030310410589229773.9193215303225821041609517123639462 3.3524177398717704498176626078644321 0.0725950371223733430345731297095676 1.0753649556506688100158354348659817 LT 1 -264492124972844082.8915233114436157278102483795565890 0.9137586266170035067793195735737083 0.0989568893750302788528898448946196 1.1042021749879676752578858267433381 GT 1 -90717228550050504985282463901850141.2535960532762296616841659402791735 2.2922139991873276763462747344919905 0.0141991965068857845023222890104896 1.0143009696441252615078227382158145 GT 1 -57612348172444580531981085125926160.9033044544537269673346263976624026 0.8475402423027146952943876305675150 0.0584384408312117672555134939441327 1.0602155488813407150169629306186630 GT 1 -10653687579776453432937517765484939132189.8795273432233748922175124768260299 0.1624746646915805339057187666155675 0.0043520740444433243115491014393272 1.0043615718855767915118515702246696 GT 1 -8805956334567424678440770482206.4499912313524769896938406957720479 1.1021311064397516290008914103462507 0.0292675471065232255419676540586733 1.0297043863581165733455689420571202 GT 1 -322114137469650437780051813209105460.2051759795201380599410767129162134 0.4490247819608484303301908068724634 0.0170096673071633331539438593288396 1.0171559933768831956318224577846149 GT 1 -200221534269404703730141466081874044609.3449558589482940405642264738435041 0.3981981420933804208676241518891010 0.0128732208933675741284694111436731 1.0129567988546245737668116955860136 GT 1 -222369049727912984514979912.3881484036821533008618098941870303 0.3627902793571335170349836058472056 0.0461555122396280789977718796786042 1.0472546315549069317545421128085086 GT 1 -5715554937150285954957308649.0042298976223326177568391510678074 0.3764677519895851500100499050030524 0.0515080468675155470577253775799223 1.0528819734253598549847665987674595 GT 1 -622362.0425790032308631036618805254510190 0.3283412381089072282590051952357687 0.0424290089758186423704313274117243 1.0433554186139146085241130234100104 GT 1 -99301553237761292963387342.0052069840758932608006605416226833 1.2214448832474950793689309359970384 0.0555542775532449348806344569922935 1.0571570606619470299496902743301086 GT 1 -1097352247623569.9591844353613797298524203805587976 0.4862445987361504512834095523018237 0.0952280194262399683729217553601422 1.1000723221953625331034024980317401 GT 1 -1302426350062.7240174409828964860790360682864587 1.8241874358021677123438139228919809 0.0469713994237266453015124254232272 1.0481103646803855230421668308946228 GT 1 -27569251.5553867505487673138408236805702039 1.5546733022650540101241229465179899 0.0083562616099975170603085412986061 1.0083913708890679228855675431368852 GT 1 -84888922487580592293921693.1343708068527310335668769050986013 0.1223686305017941290338823776743542 0.0118534538023329990256766934353561 1.0119242661225002151316200863677681 GT 1 -214.0260368728440500829819168475144144 0.0630362824223957275279957679140544 0.0471917109811081926394528022501782 1.0483415613368944488767155887310958 GT 1 -333399740247362280073244597.2795369402619825896041618245684432 0.8244589064291754283259640559522786 0.0986802644920484638286314522114090 1.1038952169459204021104691301118429 GT 1 -1198137392396949889678865.5151969580722879466503846950995370 0.2728402662005719725622181423386439 0.0532325056923121704141433988541393 1.0547017340950757290246853170649157 GT 1 -41432050640252292628.3842269250078178220543349482153379 0.1417202046238172316125910436538751 0.0687062869270184345265167266709911 1.0711805701774274313007177596957483 GT 1 -575301391914489291500292655694390.2504882236671952653919914158522521 1.2095297666155751054248513779849499 0.0405868026656072948774705931284471 1.0414334341880702575160217885381155 GT 1 -21340799580118730796739963847412.7532832271720338717681941592977270 0.4084375235383385262961299752549817 0.0871766413448702169796220055872242 1.0912128906487107284430605415892433 GT 1 -290724335355957319760761776.9323569849606867792971520516248077 1.4781455050823034569226596660091045 0.0122538867015436681910256739169653 1.0123295846024978211297530897606405 GT 1 -86175194.3402509573621576341073053680269382 1.2954720618954583374253399076944756 0.0985606213302679460294616643304135 1.1037624835585085738371663724774932 GT 1 -1701839174292873789656332023714.6773583488759200059997199522208983 0.1511623171888217540300568900989721 0.0473761113627408891961878753707749 1.0485351136284645429831179510237017 GT 1 -516686.7464164052700836985133569234995628 0.0320954443607282612936765330623205 0.0557972533918292592195731082506311 1.0574143619479257864570228006659769 GT 1 -8592144074.4889736746516679525662699201584466 1.2855885370605767628667135652019017 0.0700686847669695292059019553242890 1.0726445501503590914321675019774012 GT 1 -154802548381372733001.9866639584191303700202592455009228 3.8361244389731249003173266406323978 0.0261131455016328451043114065996779 1.0264601479001372861485555428979912 LT 1 -63958063453568129.0355651453450338070376594150320761 1.3791953698070913289868145958031522 0.0288705388858803209542174799392869 1.0292954919631953270699347140001494 GT 1 -1547535958392878863366478.4604602177299088168742301740063189 0.5301344290373191565499259047128808 0.0804971477146431980675854912308612 1.0839221329465346016387549818833995 GT 1 -162983862480078872844516025328303.4021777452635584595208710963459341 1.8415443250624803011466222828312174 0.0986840780320276161751467621400608 1.1038994480172002166999298416112789 GT 1 -32524097404.4774401545121580216594596301548261 1.2380767366819572541062592400077773 0.0352348957492030881714427948934084 1.0358706225576080928763484889766198 GT 1 -765.8262065978146495506872866979202099 0.1642650556572185371698125012163730 0.0636403531033345526090052193533054 1.0657556381676510037504900177999253 GT 1 -3276365637.1422976180659348409162602823149953 2.1776228630906033508405277545731027 0.0287768679828001781482790988186685 1.0291990409856704379052807290983475 GT 1 -429139.6533853487517754530672873932478225 1.3601228232559585288834835028743392 0.0787581718505496341087494855094632 1.0820327059120165984720444592379284 GT 1 -1807286300464036992.9087707144822397151620438154869258 0.6061442761587871012476489295034940 0.0097190786879727882338385702128884 1.0097666172044064279421270487598049 GT 1 -29603293229992918.5797373238748361338883565779859927 0.5692208612933163567051541908589476 0.0589086305038358723543890045848901 1.0607150458148869824827286716630545 GT 1 -7428774663129564666983095624752233.2182957872793492529865532780373072 1.1995398146236214884824143592701256 0.0627213231448721293718007409172355 1.0647746270295706980563093664408433 GT 1 -12059063849904814912593842435908329.5873370421578173153025807978172018 1.1200185040110521384795763692422832 0.0811237515037736322004764720016591 1.0846038245662113562622577701785001 GT 1 -3766585179037028293837615416718904774234.8154971352788502848578651206352771 0.9514774597494773043025750893448920 0.0392953450951141398446797076858876 1.0400882482519770349312727011067107 GT 1 -148388853173717677378978816967473119189.1325894263066570517346166979751918 6.1786936358432248937315820747885706 0.0268355928005837680012991908938906 1.0272022416973755456564397128614605 LT 1 -46209102685807492490359090230334524599384.2567047310963533637312336980640546 1.0978307623487722676263572815932166 0.0345159976846465944960349479254808 1.0351257465772483835879648968557276 GT 1 -611664998160.6662967218067901680666120215626572 0.4540939167402648958763171217725907 0.0838530343798364181838521012874458 1.0875784843608065072832766783704498 GT 1 -19932351321699464389.6239055241276918508402075912020377 0.6890151069001260016472286291027721 0.0186625490496611118587613765137641 1.0188388918690407500374230012238231 GT 1 -3774215356080075470204531719703564368323.9445687806923425149356256036081366 0.3936833214673115555461536510161754 0.0039091704051865080499059242533754 1.0039168311831900993482027422270668 GT 1 -216972041384.7862181973473060893170780982659700 0.4248756944273045953282572961237675 0.0211852754400295794774724820908865 1.0214129040449882454388800411902286 GT 1 -47115.5904678227576944860605493997436283 1.1266469536869486111092774658367739 0.0886349532151828921702934811229687 1.0928117520126221478844507900118490 GT 1 -15705247.6061331721356459824345421638222173 0.7489096862137148309575928801154845 0.0517696461310450389798846855150197 1.0531578169309933265765857110768547 GT 1 -5056837941.9395867176923591900234062309018325 0.7242630112638340105012118540193831 0.0627835987598476858672534659141812 1.0648410722453796916109070165231495 GT 1 -99213334729015784573168639734824754.1959963026225320578533060837412329 0.5518419423000485067198123598463849 0.0891167053459428618245303007431604 1.0933404967847021518226027493554985 GT 1 -7338117384234923692.6166347969166043769361412871138741 0.2494600604152061813266759853104281 0.0544527732906292313275320167435693 1.0559914432052025075195019821103998 GT 1 -11862623205168614705839645733840502740144779.5461806686009168065712837928855805 0.5744622843208973953527167011683625 0.0938021585207555939565197883657484 1.0984976286993600318881480011618481 GT 1 -14694648352493493054989171.2321327923847515326015659906603757 0.3882217813816377053433768865708040 0.0279958945874212063915656956640287 1.0283952508551250824437975451623498 GT 1 -3286636800158291059539.9440619319406218128231639892935610 3.0486834289000999053280974135696278 0.0369003729608478445995920591092619 1.0375984176657805479376383811854060 GT 1 -190457618073824297485178.6180895790586600274586772772469139 0.1798708041246520898641894554594161 0.0785022916436319502665540543058597 1.0817549887376757435835668127816894 GT 1 -1440087272396748798832372288697593082016.4279036572422855675535884300907278 0.0700498176473961702615931712134907 0.0844531657903394723869160295543404 1.0882337592020848563858464187217927 GT 1 -181980124335128.4020980661918470850803378031556755 1.0128399756354477644602503321743695 0.0732084817470959891802875005917571 1.0760266381135007264726220352391058 GT 1 -44024265277780925.3615818924314857245374039162024984 0.1202944120325990078775140330439831 0.0041468308927392205972930544287387 1.0041554528400592422545171029743355 GT 1 -8290029888394646.5565387816622459581549229307622543 2.5938752444854076501030453495375988 0.0957249876309315212630134595293491 1.1006217476322161106593418566148366 LT 1 -11488.1737012744276625790798788967106557 0.2823677566030104461445778189503935 0.0732316904523350119685246175174970 1.0760516804184667065353054529913950 GT 1 -4968365327256472450404186576.5107878166836142841073631720922060 1.7737498737375901676976993052396568 0.0759212321182940008204301460541356 1.0789579643485170235981394602205705 GT 1 -967212.8312707416913546048357063630909887 1.8754223756926526030420746371935786 0.0433694081585674232158023751393767 1.0443379684841288233085053189954053 GT 1 -85321101035369.6664184114879673734288793370171056 1.3194656137479129457927003281056231 0.0015405390316647600677643185432019 1.0015417268820287786690258707195991 GT 1 -153851.6795717048486468588143452357593212 1.1270331288392123020473824172346722 0.0294968869272763050112901056155812 1.0299406686783469079139236277543753 GT 1 -1174.6104056234492532203305326483097140 1.8189937973684412718697811988723628 0.0732154187897551307143500712381697 1.0760341231503019488200871617540684 GT 1 -8320647157552939365671703405456859826056.3964137513543810528647934194828106 4.6632519439768328001602613934286056 0.0683407280092540252589413430018535 1.0707881191328898938629097233431883 LT 1 -11740450410767544861808937551.9694307811709239777402510108710211 0.2775634248671801495109829788198836 0.0648294822967028842036591512639462 1.0670263944459948118170147722026982 GT 1 -31261408535393454779.7128397958532164793912690402620423 1.0636552133800920092027749169971306 0.0172145636911824342379660432979543 1.0173644570155058012736051990002814 GT 1 -6458033.9904669429014719748223402029685632 0.1037330765290881856568130241963922 0.0075028507787768305068775046750493 1.0075311387461024196157348647601382 GT 1 -7591004224773797948910369837949732074671.7599656573825387717786589649926663 0.3796548531155613813139456196397672 0.0768644757473074765631091974179562 1.0799792250815152438665832506282711 GT 1 -5.0590316972108445833184378305027962 0.6912413028871376023505176233780166 0.0766023127396162968254644290275954 1.0796952735036956998739802084426586 GT 1 -19913337525205427906439937590514090561.8967694208161962335052551687008673 0.2784743936516614538195468211480387 0.0144749141997127479044037677745135 1.0145806978170491720208988474396764 GT 1 -19404944338227018599037614278332076.9045893970962136447881108261158728 1.6441463715261869716194229646152833 0.0539019058059129198012074051772192 1.0554090216548189666861217077197120 GT 1 -1489209375032.4057411382720757998801057803693271 1.4055317900191992485160865387331936 0.0744520223613113775564760957800524 1.0773693086161715712095125089743293 GT 1 -3923897.9287712432191911921649308923875816 2.3191172882081982421354066590827526 0.0403121623127157468255862365788478 1.0411472164749279817257810540611674 GT 1 -872068519023501467599598079038127945698851.1325566700037231199418196679506962 1.1094860281520592235338621115625707 0.0751848911815304627667196741187739 1.0781614438072641345114365431554864 GT 1 -75321575517504807443.7902743286878253430760859197997730 2.0089505260700669801465927972049547 0.0189644079476618986815282929339729 1.0191465386760104690014134859349778 GT 1 -458894998088325631827920055238661472.9893248222694820859887764621718274 5.6274178146353590266047784326906854 0.0634073430219274545383598120366263 1.0655068223466317770323085487845765 LT 1 -215684733.0781379802846448979836688176562985 0.9996161279306872598824781138285904 0.0193660531610204637435184651329541 1.0195560319275578672956531430250520 GT 1 -2930060661313596757790587600.6511861433652392550093231736439547 1.0881693760106442964717081256202514 0.0616428750652471932767179273081461 1.0636246722276412236827904308178428 GT 1 -1221043625307051995707195.7489713615769164039522178562014756 0.2977793488123220961592205400045922 0.0330200089015549152620035016777097 1.0335774754715181670049833244859456 GT 1 -5566530330595205824151197550706207352589082.4515513280180359335935053094505742 1.3349041360630423643561746003459583 0.0687449797289185633831561968716037 1.0712221184077775978115419846650006 GT 1 -1.6181148326793538296287738937581359 1.1148746679684046839681655188718039 0.0109351012180061013438080679594794 1.0109953289036734129768166167137871 GT 1 -48971379090466810679754019.7013699864695933299144216782762260 0.5027848635455033110019011604435406 0.0555793219642291598725557197703259 1.0571835785892914888293003923004231 GT 1 -28996557968772539279256168194228694002.9066653740012565924732338321778029 0.3313061249023466007391473418750615 0.0306260671657261258104372152096213 1.0311048459321214425275184706171595 GT 1 -295256383320.4152716357401101050506093474396669 0.0018614962965405859996972692800565 0.0421415414121206748997637992058430 1.0430552587036506255058217138763289 GT 1 -5428223174.5820973199986213867773723644952177 0.6592191456414542756241831975428012 0.0915018396963139319413101219469266 1.0959624161301452002510139066122722 GT 1 -2402095799772084298459.5650559480041054999616014561783179 2.2828861776858764490586337107093200 0.0398930999191461941972013421205471 1.0407106464687901268429231320895084 GT 1 -2332044997103388715.8141282846024496075913943944693168 0.1410600892436280384839782281446692 0.0482295964966355660917152478582040 1.0494314460681895045254379751763073 GT 1 -3008238867008985603601326601295591470.0803874291293379668006018998731906 0.2603151819102525780536661844403563 0.0946879350119014072676148431148912 1.0994755715287950782828547866713592 GT 1 -6202074322909644923059108323.7770209770435167537147917882957237 0.7214474486877904149634652997034534 0.0037998151254417695085784908693505 1.0038070527632099368663342673539309 GT 1 -20349572359708047613649.1139988613454165165509707730631309 1.4953578065831085612927392380781818 0.0468131169114832848825517812747882 1.0479442947748963174372247746200406 GT 1 -48574421081106609488775124318751314178330.5094936969507117657571253473853354 0.0740085647319857881592447109031724 0.0173278149365948818054151919075682 1.0174796986206223911656899096698731 GT 1 -23.0139654662243864624006396436001693 0.9180707275194282526359652885492253 0.0594716200875314232884731029846524 1.0613134553507910943143646547829024 GT 1 -7737938545570166978426955807390.6919533095020176404610383603610058 0.0644386199141055214902047563587106 0.0047690764046365660067554777025812 1.0047804847354325685414996184834708 GT 1 -18412874564709252973207195951285983401.0904168212071237788057832571361097 1.2723390020389640438799533714215757 0.0900003971576062500222921931369675 1.0943111159082665105812051204977073 GT 1 -55551665095177039053.6255719626587532308434305940690915 0.6814852279859751357515938254075891 0.0615992290373433697956104383980329 1.0635781600717503629297627788243176 GT 1 -2319328906134524253306959380609423383.4152403628509167014467689161431941 1.1174929676795867711097345035942730 0.0201240777530712663960235316392900 1.0203293252853495594429382505801239 GT 1 -9038493161310.2897939148912705161508579475920028 0.1808173418274105345952955142890779 0.0541216776212440594782267744572758 1.0556413414812126883271012190820784 GT 1 -213511063017534264940916217432047995324.7232875684074110289574045384068457 0.1151074265842563283413286245176245 0.0057226385839046213732404860347722 1.0057390756188892880033598234203043 GT 1 -331944661091197499111249687255.9190303761172235589125678572857475 0.0361179898644321256127194839722723 0.0286747988448632401013753013139948 1.0290939531108537695950240804957054 GT 1 -18612087820838613526264597022017104.2814490957713289611681389101938376 1.8610525893125195119499166001153347 0.0193542527775068251076958956467356 1.0195439985765274036444321686223523 GT 1 -537369162765777016554754518551242.7223432880957637495964008572532536 0.5193181251022214946975211079038974 0.0147587694290115432766251271600659 1.0148687636611867516703694633954882 GT 1 -16042693556440339159.2349386647532229785906560016707017 0.8676043150465341537515972221745895 0.0635675363920499289721942400756834 1.0656778754401033131471625508785296 GT 1 -30563699335445637375798551.5745037529260599513308457703054889 1.2522367653641825134482269641449734 0.0577862840684326272233151086470152 1.0595231554759770857415143595148151 GT 1 -135438030885109982863411964013498578.8168428511480491847327508247728540 0.4383284531943744051405064557727475 0.0746740832939805676924809224615029 1.0776092611428273977032739674708412 GT 1 -1802777127373521.5008570055179489266894853641654760 0.1476676966458150482378950264182763 0.0641446457432440362153500873316571 1.0662943504969451719445470728898498 GT 1 -2033754273396494586815582324219306264.5296494445472711028040921783625439 1.4308658506863074371512675612953233 0.0281778745893053031777089123121693 1.0285824898166434517334582776902560 GT 1 -68090533339177832657727828750592.3353600364753233501016182490890559 0.7373344711213965117617117636122006 0.0257497378516426758704917410036813 1.0260870656862621877703301204147567 GT 1 -988780300133493805586244011955992075415.2514816144136773264459657656517339 2.6765237885627687920367502159064678 0.0460542126664820099039338801477161 1.0471484358429738845203041750238054 GT 1 -45775926.7072552281496945469729516419058197 1.3273388250494554101521385207259181 0.0818398350432563115786552670163913 1.0853834319496116604172519655868271 GT 1 -2816363424631912348017858388342.9206917764731097898274861010649167 0.9063328434132042753071778851679578 0.0040209008470195450226850823041638 1.0040290064038867257014742789349634 GT 1 -10.9526473835587003330341003023479666 0.6569529865967801253551022117991125 0.0773942508413965219751728483874293 1.0805532764030834055893174626931416 GT 1 -13293230698677945177651325190481232754.2687400006292821603828288724466568 1.3033582544948038458561488574570949 0.0655930136001183997616605966636745 1.0678431900526912629191736388423031 GT 1 -82770531916.8245929213668226453825570495635814 0.0100300426185206736643313571233685 0.0519778276288142794169402906422185 1.0533773884234236275355772543168509 GT 1 -59583712.7520429523701227982160397556829796 0.0628476097668091279809303302576127 0.0807899388573592629123343782853497 1.0842406069650206229206049646708833 GT 1 -92362778337803010383620328029804260.7241478186810368028020067208799885 0.2553235392288170723689169237545910 0.0147266564227764551146099191001853 1.0148361701379931336248228988890354 GT 1 -1867.9090904678395683987944817107779986 0.1785695780575654742251528184585997 0.0697338916306818913351203607045045 1.0722845957329896194266636642806197 GT 1 -976.9769965421031865691908344853310769 0.3725180790917483915938181551917375 0.0214609307302927373441786171246688 1.0216945652275036482229164321984687 GT 1 -1100628873222791455119451.3237311946502340909671204098097573 0.8088370766356324227502531032201588 0.0620761400226167833690422695609201 1.0640865060025977168168488006182847 GT 1 -95888.2495914355777645050223231744768117 0.1821359556404780134366200611601390 0.0694436500643988960561715933959960 1.0719726459633151209275715122803198 GT 1 -2306942338734430120004643556768385.9244031334551003710650117965411061 0.0956337844763075313118812416402276 0.0026164607507841504244077290552745 1.0026198896666027139240266251203029 GT 1 -307166270261670963153.0913551934821628611173955444272852 0.8545832166403440102217260529431492 0.0742626376413058448008700054738140 1.0771647105279412139301613048013786 GT 1 -499203491789631683482.4295167475629375892450742283776054 0.0049950295724349209761347798076232 0.0806794903756073830787896143035094 1.0841204583162672137618355575378971 GT 1 -121.7799254361435282025623432517550191 0.0776927996293309831042180161370505 0.0217151179317169682747905835260103 1.0219543609057812985362289999404108 GT 1 -150953646163779565769315446694044859551502.8552495791889695522755854412285194 1.0838539566064040441441736790469144 0.0464995632506957255374690281797200 1.0476153958932057721222596858499939 GT 1 -110914797869679505212.0148217845237704048521325407077033 0.8789012411767585319286612705464817 0.0131246485225568023539303706483039 1.0132115378203565614826005856798411 GT 1 -74835430040697028066769212163.3029878998682051170503594020365870 0.8281681469234222651064507559281233 0.0619276540384901572308435442653453 1.0639282050593797741131986119306204 GT 1 -795393380904176571958717746972662.1351025364953351491765494574851195 1.0769487109838081347637524399667102 0.0747673631794262964456834721648501 1.0777100738248654428295419750477416 GT 1 -414315061743716346038976378510855.4906667812804617413904707589986447 2.2196916497199595733018755926093099 0.0569701942263032325016719089421370 1.0586573894529581806526147113492299 GT 1 -37960544962726557403482754.6259593184916841808576776376656378 0.0833173027520979575941376186809457 0.0330543041160616295494924604238595 1.0336129424129225413469741583737960 GT 1 -296858.3332244774194556010863922952050894 0.4960185613442613128730473048558161 0.0408587650751002807746582552975345 1.0417169418193802953227769210420556 GT 1 -54429544628079979682032834.3445476256114500212071131125106247 2.4809892869266239866931466228170882 0.0127781242194101232210107118617083 1.0128604666553490374546735830604215 GT 1 -2774929992733707861387787352.3765458876884780098570093116369718 0.2799717135282319965511489766206961 0.0543864332544919081111809094308029 1.0559212851981265033824200418682454 GT 1 -7256412593331621325863985169083907765.5671947690120758595968121550507848 0.0359796797335950679192863965737436 0.0120970342314113499294007173201598 1.0121707988422898926228324571559658 GT 1 -1211875328100547183162253158557012989141792.4112811909062045923650007920337141 0.9155154629035061132328698776771267 0.0295413768002999991269936774600479 1.0299865118005476861871447191113029 GT 1 -1017759.9866612503138039945695797427048817 0.8571818748533673922748211050896105 0.0125567083051535019628563934081389 1.0126362099876045681539056077160269 GT 1 -226411681720602397688320383.1505674031102276830425214347296436 0.0348996758857741070797377150912489 0.0061024141885591850206652532462384 1.0061211100166199118528305076557593 GT 1 -764285267069646.7757237990760301021645170774134118 1.5971280925442243996542532677441352 0.0724267578224738073733135219045167 1.0751835203109946584673533760279802 GT 1 -1147521780363438312662464577696357483045.9996469072217701684060547180775859 1.8786029783823980929885122005467084 0.0999405108793214591156726386760780 1.1052944188192943046709850713969838 GT 1 -19.5098837520974639308656739496997178 0.4700476853139234776010434477844655 0.0756147741426960020509245673312120 1.0786263831227600340396832174972272 GT 1 -15693.2524237967836540093391051685056393 0.1494253489314445379159441606392196 0.0233982460362192803636025821305509 1.0236763313662445133022847632044272 GT 1 -48336481442789064.8365576173755475190281744725155474 0.1741885407054684167394485447843545 0.0988746760526213201685011964316915 1.1041109367652923355435852564761525 GT 1 -1.6366621058861567722784618632697475 0.8477854447386502902208012051380496 0.0097955085149881998100447604005661 1.0098438001279053817560706417030406 GT 1 -4030340542211289817974.1023967197265696781961661571120618 2.7157841575070579884387756423722267 0.0641021145169313961691801036228934 1.0684433638797383569178698678901284 GT 2 -1099978588995.9700733724134169048060303298688752 0.3393908667869401504376298069445362 0.0202416615429984562892513866100852 1.0204493311378968264295896399470179 GT 1 -1634694093428.0165300090981213858240224444166133 4.4128079878416460099245850013014590 0.0300221436448982974264079547249244 1.0304820362451778673225369486635432 LT 1 -18807814841277678304585.2008648531560878161415895964729327 0.8367409109961004070850195156791555 0.0795710390686875458864086200839165 1.0829154557234842784614693403577684 GT 1 -407670018977246337053760019886.0961710303567486144419598063223418 0.2098298685642539387413589868189633 0.0957160576258878227404622699036901 1.1006118723610557749712129762713240 GT 1 -18660648.9454905773332451732379480621679112 0.4224442490899217162079518787088006 0.0629196848065224365343892364061384 1.0649862851625455787822034556747306 GT 1 -288077977668245469393716417400794.1815798853121231361391544608914751 1.6949931427037763023518806450124506 0.0634367424196303070061073957710996 1.0655382125768595654299926390340853 GT 1 -129332441115903631716.3635951285961369043082287357160928 2.3189614036573603985905114427590598 0.0933282835297707766782581065321053 1.1027743732524407170577295018436780 GT 2 -48920913142877.6599854497324750717120222159098599 0.4219997965251529154578813308750892 0.0766576257316720007251186232707870 1.0797551768904522062514327548852058 GT 1 -690807905791743910359216041133321394685.4786446407237390558576478864704491 0.6630806152888143629897844013957794 0.0653378920109329674643847227448981 1.0675701968374744050458279553178907 GT 1 -7063793317832960389362907542023900177.7001295920370536004671722514281633 0.6834547305537273990595049715754545 0.0746755025865379362547798064459839 1.0776107949739027216983544029961380 GT 1 -618036439876851193818821197.7680572524156783032420090214701030 0.4434908996553406409218802062660231 0.0952707213287238907059513940734754 1.1001195196231329513407738485049822 GT 1 -101191762.5219009176146681757243901030655947 0.6104478123995204375025543585970370 0.0794113762606335549756570064363983 1.0827420051168374757361013538250943 GT 1 -2322633392286725295500493.8090738725877390493599060106803824 0.7021241334862293703199551068102220 0.0919987850054909251894947272676039 1.0965095622820594149748454890692516 GT 1 -31367125179130755173783945.7062898065363887348967642622469447 0.4398881892450357102525836527166612 0.0694948861269797581417429465862123 1.0720277070814889969144096671643971 GT 1 -800240467041515928406921.8319205514166017679418067029255010 0.3096545513585639321159183348795145 0.0138058374107247000420905760862351 1.0139020243038542285170322447105761 GT 1 -9523051846127.2039842346804231710898911393716218 1.2479417740901181548844594947105762 0.0637143776700667699437108802979725 1.0658346969920714405508523131806206 GT 1 -523172597142354581131309260630.3486837252106162466873816933843100 2.2897529370050592808979189756750009 0.0243680254183518572763492931905479 1.0246698389035045300517770653218257 GT 1 -6.7590445647116413323856033477537191 0.4302035127992389942443356187435453 0.0252648419456001248210237115744799 1.0255894776478694974624404565417972 GT 1 -7992786125093445712202112044805687.7469101338731453510152647173321193 1.1451083769824100482430529389505739 0.0923021328546941216746681214099380 1.0968437011875746037423906854798928 GT 1 -1264324898369719708716217116185.1896539484944770921706504988348281 1.0008331050798412661765658075799018 0.0231307928485585925846345155268197 1.0234025078033090061708895992101040 GT 1 -3932958177949505469766465753746.8777664006873414911828996381241829 0.3545267182109187628185298600148496 0.0345698847929237171116350113894580 1.0351815617041896638518473368033785 GT 1 -34945575230403173703422972733.0935922522505549587150194936020009 0.7900894069554117912749409165119013 0.0127761664109389019876886943087988 1.0128584835079148677782643668702416 GT 1 -182784925600796069247077402880348.1174352130655352627990903093998569 0.4173009115969227072313450712489700 0.0982431569788584656553909040018284 1.1034103706260715037945660835959457 GT 1 -81079963363857240861.3492439680301152716914415362086975 0.2969070638670611459212816594692214 0.0795100800665440153472641206583134 1.0828492290115965981587576746681308 GT 1 -105892120039087823521452.0979743283655991914667509497999320 0.9447019677073410248360394638174335 0.0121707283705624807250488086358005 1.0122453981607505353949597368773707 GT 1 -23970599686705.1613076065543615152675426711207076 0.9556815525201762793150118801112623 0.0949010920234400015442397667440278 1.0997110506721572147277745795447566 GT 1 -741952905182233871206491451.5980629199969743065679621037735537 0.0972521304795168956213296895872451 0.0242582216979985718921733565046342 1.0245572989861187259734874000397961 GT 1 -181301040286210807778109.2707154567665637006503193805474907 0.4472741485939890596659792364643152 0.0165018142956754536680926741445629 1.0166394858885076857568778125443411 GT 1 -24.5321440673927540390128745626133586 0.2251530361063711279023986491543422 0.0346042243902196419150938569769528 1.0352171315579634990965329188930657 GT 1 -3065331783193421458572181585.5155574119158962704061710512238385 0.5295026285327166593645237349807953 0.0999446471744433599578492578073026 1.1052990144095594636117789001388022 GT 1 -3441570914069905334447265111742770834820.9182532317483539512100063456934421 0.7645798745156882981445405807072294 0.0224313853061140007620699879249705 1.0226867955258625501594507665317273 GT 1 -18035544184428402479839713026188704206677078.5434379119288619037135041096845858 0.3924802117018729877063354467520072 0.0921386906218675684053268816144214 1.0966636550228651234554471016979442 GT 1 -524271255636819102887349003503.7854593568573401771547803837604405 0.2258374262331963678325224772223744 0.0064949420423641463313584174839518 1.0065161259537675351787296780066709 GT 1 -4742685165636980497386129303533254194317528.0880412411814799829202627334883221 2.9043589678227387225248293628494461 0.0228116231799539128401216033948061 1.0230758340409172566984212387149514 GT 1 -26909912877834791444192486899745260296.3104790887102461700975463388421979 1.0569512835943324873887730819822053 0.0759188896471442604854667051480921 1.0789554294258868675815242140448537 GT 1 -3954191771164582973988971537104719971.9109732055344231658376854643153036 0.4808235763029042674093749747813390 0.0247210944315978328362908800999595 1.0250317918975576977071660599992090 GT 1 -114319138312689749591065048383358.9968586936155858036297234401816831 0.5892726469310478198382474186754403 0.0817554557421384893339380902694319 1.0852915357561921925006620144553643 GT 1 -6032661889884264539596082671523826722.0480840168541745081059374052892924 0.2556617888550090148699762082543738 0.0547377695719039008583374979738152 1.0562928974658178274920292938360376 GT 1 -165640882590790233156.7578591242594075746785675882981233 0.0103669292453156289912352238376020 0.0932276120807148408884764430702763 1.0978638108352183714818257299064880 GT 1 -2959712656598443505602152.3024315361298668459913071220556801 1.1254954100847255048279392155847170 0.0569206807404848455300528314043897 1.0586048861431840029083015184769631 GT 1 -197837478609909639.8522639051341054669922211846202882 1.0185082389894355422812067305243772 0.0443108565347268827143363829960665 1.0453225825471812980340450769092545 GT 1 -12043621853.4651349016008890674407780296225056 3.6211198665363725717090053190837604 0.0766233560889253396424713281980289 1.0797180628060536173139984373427646 LT 1 -2026399773104114395062303104408962.9028935554242444450725081039748357 1.0016697246324784304704385646877738 0.0024792650770204088407552213873805 1.0024823435439578347188919734078817 GT 1 -981163186777477630.5194156387959467871202871993739502 1.4301909906072147650968206273641202 0.0878259793550500840732232837936247 1.0919244949994303141527789848983285 GT 1 -10243598067699138759742151701083445450632.5051038374297000387893443736009509 0.9264920630687313295182274205363938 0.0531869670191425584102795304808653 1.0546536361425227432153037783557045 GT 1 -25668674.2762666164622980135690506167173811 0.0377707326130909738352077533683098 0.0363090142275944533734258058619385 1.0369845899380666533406636323049380 GT 1 -69615178052531610326764277647289528.0723118877748761505850253133910758 0.3202612986047082803613447407479410 0.0680982011489240836689610385724573 1.0705278358875550913328411463095398 GT 1 -9645407.0778065931291942868564432655404092 1.3534282888993752641756996706202417 0.0995313290013947446820928677548079 1.1048399056447336265336441504539801 GT 1 -4953092281.2195032705480913183890153149009521 0.3283181187493159155335926506973790 0.0292782303417913103421085537664280 1.0297153917530871037094196470859242 GT 1 -13296487597922078020045903207921.3534661647811849603071483098761451 0.2976075807258348784485847414952134 0.0993087033380832702309008256047869 1.1045927030992158717990363374737192 GT 1 -1990709949163183993.8483355706021690468271301918819184 1.1760920335324315060411383464466939 0.0006821106361779259412428251140037 1.0006823433794817264293561393682365 GT 1 -16274224954282506812436311217.3602615967237656904594440741375986 0.9298819134814315013568550869264344 0.0277540227522850543261528576536799 1.0281464435246884959433958641223697 GT 1 -2867553553094748.6466513354566378843396623684161584 2.2325517650167181055701806388231635 0.0376483911125534059478018903195121 1.0383753972904833956580556562564557 GT 1 -10993634.7954505536685938576982601840060979 0.5939440175489590080487355371614305 0.0980719321422296845302138446205528 1.1032205094855692036809800469214992 GT 1 -189.0631003178886980215991980633316889 1.2133626363679925799795599018074776 0.0415638692365673359484971936266462 1.0424523532878947974639519367477382 GT 1 -3200919464828892195098637.9507949317208822914614546583958233 0.5818648803559569384133166394849173 0.0727860648407429208679014696192210 1.0755709577778414949652047042379050 GT 1 -5340174347061.5498700482810496225534973461721556 0.3635811285622508452960172397133973 0.0549254006311889060340332961902664 1.0564914134730643811365026425956466 GT 1 -34134894646568250987267241496423812.2739053547197312450070401900069351 0.4908180919583871060471595338527856 0.0815625374354125303887598936847294 1.0850814631287925454133556940904690 GT 1 -44408996924616386289062445944.3520776635787069670235145846459001 0.4235165436018137181126285189460964 0.0612902363659572204196517826643018 1.0632489384638779926017380496779761 GT 1 -43227.6632291426439297857870350049435673 0.2068935609505678979228852704330718 0.0845945925384672856925832267640138 1.0883882435684056229829181559141003 GT 1 -4433457018563729.2539920279747773677178954342643582 0.7715878596132597548958844101592138 0.0839301751028631141290051445355984 1.0876626891595743392771847639762612 GT 1 -20955389269144993466556.7017416856403740739385505967879657 0.0764078468803259233895838116809389 0.0113136936886862728669885670670946 1.0113781803708645727188862720363331 GT 1 -250824275126377774718411144947283416853.0757566488358315055804998348496610 1.5990339484125633611270642040577030 0.0539595314610695116408930682022098 1.0554699322628572843250855040060607 GT 1 -13768857694537212471508369976859270.6037263191164252271878575591953026 2.3994384569412851770690758897729504 0.0482491342876644526566156509698094 1.0494519741193813073298319281717465 GT 1 -14928191655360.5924047236109406335461694006574310 0.4228049338441969435778395694846758 0.0228486870317543798725307512675063 1.0231137638358229986073341960249753 GT 1 -989.6780585945853453519432033579626902 0.7523601179173268279364502042239291 0.0001620092457061093919243358708125 1.0001620223706215474298667874293427 GT 1 -1126858947782627074124894379444024.4458093987453997096705700116637746 3.7870939888727658608615814045446829 0.0450737446913296024616664623498632 1.0461211610550643344364116929879502 LT 1 -304760094587.0608916756084353616075428113422888 2.0738804705692197954985940956747499 0.0248451630667179020457492306339520 1.0251590134817457112826301547093990 GT 1 -53972010549.6200698293729310510062792567280605 1.1255739882260151264921331967866433 0.0348001444371272533856614539627551 1.0354200948760366590636771508029712 GT 1 -230508851505006561200.5480909183057733560093643564255406 0.7553523092741314482222809177166219 0.0877282826860227314201585602833963 1.0918173976305274385871929525067522 GT 1 -313.2022223139557719866490943251925957 0.1023467374820165288955946623340793 0.0803768562874785344068501583413963 1.0837913192582957668837676237117238 GT 1 -2749386407733346153888666.1294071036533075519975496107347433 0.1499187737424926969785963835027156 0.0150249583608127220663408222989568 1.0151389765684451196652223606634359 GT 1 -24058839082462790614351811946396902564.7734752713953081554998283508469170 2.1250173742096269379325112499033106 0.0427005579934668174349261324860065 1.0436390399125511900129557498896307 GT 1 -36086567017.6149599615492009139324394225528381 0.9010770722367801281264931737544209 0.0133191923871243980807130019180466 1.0134086883947667683318783854291997 GT 1 -9194488960390.1421833786629215790465960345647053 0.1910198865254510206527190764974892 0.0857867516176486169405164862072530 1.0896914214126969427849123490637706 GT 1 -140.6053792304958708313966373686523062 1.7862469814912716857230389530670748 0.0436903865472188732261021738731076 1.0446735549188490015559167383269487 GT 1 -63545596439865.7115354247686536704311450870250601 5.4643686506482397585746930537391584 0.0735373077439348227657218575737673 1.0763815014651390603064295422139714 LT 1 -4201284978527597429582.3162261448607498351856736642477771 0.7528973496398811467884840114539070 0.0358778896424248371959407165958461 1.0365373218982112923557758613777324 GT 1 -20376012910401499733.8317862262720770718498705205308570 0.5051713905784764197920646794728937 0.0358118484662331410081714293475686 1.0364688254767352775101707232795721 GT 1 -9916.4460005707379034412448862435104109 2.2157436700176750105267220334820357 0.0018473692550500227693089061495046 1.0018490777460990794018328036189833 GT 1 -55512393109206032630754458.5250512947759972812336748766164105 2.5845830131131197612054550266123135 0.0112025408706326294662025033023583 1.0112657619327329862120576805610801 GT 1 -7699.9418145276377296870101819536270339 0.2121910262657256899395241885774309 0.0597229716537442781837689026245317 1.0615807361301907225654805651207812 GT 1 -2138336738485666423890174598802453039183.4697591788130679830663542537682662 0.1385911953117612542696330591572816 0.0961404959143028025909592724729316 1.1010813465026585571047971777029558 GT 1 -4110659664604192720810540419548228074.5156587441597470085787270517809620 0.8813825788734149833724450596119676 0.0060278516792150816569454008748153 1.0060460925161279895477497700339780 GT 1 -4902499899821464700608009439374632.4047178956368660913199842311328313 0.3790477483941629063478363341769959 0.0655726729870205890602615424962095 1.0678214218167886719292940957499766 GT 1 -4926003664340920002765303464915351.5329955980232386328151186595640278 1.0567388400555844721608889939470921 0.0393545580921922606509278633343627 1.0401498851157584925090328995236023 GT 1 -525499679383909099.8567101448003152563738139698401023 0.2397072645759041869647874816574620 0.0028500339432992941074836095713543 1.0028541030232212157676560618002627 GT 1 -9154348449548045314923941037.8419519099974858193230253488182263 1.5385801000802575297799584817820619 0.0576292861379919227608768392494000 1.0593565426903444599407149644066698 GT 1 -61667.2624996222072274158228095995062272 0.9192714796809099988987453788826212 0.0041498718492487391328384742538423 1.0041585064640741318203142110030604 GT 1 -2459367.0140924106985792633936998304760140 8.1433382950179670388184561537639309 0.0765454623803490374321117349761517 1.0796337089036488191462729860981327 LT 1 -263343756788231006164444526253474274206517.9595394199071343971670182883746565 2.2523977376126143993212729371925303 0.0688842550144794950144553812775699 1.0713716861398520219599804390881281 GT 1 -13728378468908541.2351343884688846966480025561275654 1.7146404123824374274263794484770760 0.0882433136640184179458326905073767 1.0923821158012010086314387833391948 GT 1 -253114622071169.8543357053955859277889789640461930 1.6087640794889163682580099252471653 0.0864160659073536873635098153399456 1.0903800255101384838823889497595221 GT 1 -3161919612415027285860445978959747056.1621963245478029913310199540405683 0.6356849902050434644450379190496593 0.0428874072089096930063759210369481 1.0438342426302941736005699865950130 GT 1 -2763564269030238039892687.5461874594043471575825146753820954 0.7595824788017119321257733701346599 0.0264244636805814707626774942745837 1.0267798646587954872946623046553513 GT 1 -13984649590143.2557113367266750633917587725372711 0.7429339131198087651523005868678212 0.0680515689699842207130451378568417 1.0704777973402491010034396484051248 GT 1 -29.6521214293562682884944070288258401 0.0986005602841619800735670447484442 0.0960886574041200426657470202993252 1.1010239957490582039483687875265486 GT 1 -63623964900662277272.8274957408816703054070990937457348 1.1876086414417289339792904806488806 0.0575925392769778908836207749387644 1.0593175493896853216702789688109809 GT 1 -953004646135430738856751338302.0539138955290687367688572230495633 0.5537147805455588986033105573202667 0.0640241237841322446454869904513818 1.0661655761103270895240601417059592 GT 1 -6752264.7223152642865362118955253147309060 1.6466680436014862583367210609858626 0.0697640048551023062629530142026533 1.0723169668056867854909090929785346 GT 1 -79.8190628108019335214120322116526006 0.2839694699319051157135487883997661 0.0394739642442989013138471588982707 1.0402741906799922631978574151774560 GT 1 -21806.2206264140345208538231340431306253 1.9334176367502399182536369894212719 0.0936689562983281953351711768569785 1.0983506492787767291419426921598604 GT 1 -832869235341275775223085160.6467377559745460824847433820537157 0.9873851251346196879886062375998547 0.0912221951812868314891701605555026 1.0956546538281048078754910992221317 GT 1 -82546190422773810224521885154225221829643.7350337677639468778138054710674246 2.2022994585658066908240760345315721 0.0384263249421232094594143477289260 1.0391840917636607087040884411846400 GT 1 -20304755756900158940.4668155148185428033314002282542871 0.1196956049246726047330596780596994 0.0789579393507748135425864619044221 1.0822495753122461208808497228078600 GT 1 -29154078246505380966260207647948485454366.7449620074792499227662564102914672 0.1697933615808322314441786059907378 0.0104427282771597078529461348591316 1.0104976361573275189423869018542492 GT 1 -1774592613703992931180142904276676159010.3641013824577280352372243520224405 0.5914934649612034437179755136301610 0.0975755257754514398971048927670052 1.1026702773466441709846369157521922 GT 1 -5217520642704504.3577709170142127813468995713333592 2.1166918533640840996332112367133057 0.0800420047161942980620387155199887 1.0834272672815885098839537540855697 GT 1 -62416145931063727572709.8696268298931815437155461751749745 0.8093885172263136660165078541118271 0.0294885120068162837955142977000575 1.0299320392528335973981475382563726 GT 1 -2058651857636.8825046053928617302489278486155094 0.5683925137655749383120996208791381 0.0659214105034401264939025028026086 1.0681947013631765697443153990572830 GT 1 -14516569499196773057.6355722323595895916873284264647112 0.3855928012230724556028931249743527 0.0088563283911206641802843909790516 1.0088957787637638618369432979132062 GT 1 -25478129700212896074130766835427074350.3299664831480064484054732122407427 0.9683149021166599829352993831355138 0.0637570461720252739695419909851455 1.0658802701304567964762803639574425 GT 1 -2244826622051415993571859503018284.4869987113947767886213216276732865 0.0480010334701976095428246528440180 0.0494218594907469304894383069871228 1.0506849105334350009970081845441405 GT 1 -15790841000.1423759040387798665798297648490987 2.8656864421775828380565299126322755 0.0770875757702328571828797548876494 1.0802209306387245613933674215783551 LT 1 -226856297.4922442656961003838801553456498479 1.2269856340125588837800952168106463 0.0638048836471633008379284300281520 1.0659313665869006835498152797237203 GT 1 -42981499246.0631055824449558448207558661205695 1.7249838524455273270931561107392278 0.0937402237152379050971353477901323 1.0984292852468734530849012789915175 GT 1 -5056475682699937.9562466669385399693633054803150090 1.3663213202437046747944436399551422 0.0667490947155355740599183773572480 1.0690811911536636550894761026224998 GT 1 -1807597122076172828212346254659.9949103793382719259020940327563579 0.9513325481138747821849308363392576 0.0987169511998629222759794455813678 1.1039359210967614933460011312455790 GT 1 -891768511036946235701269147902971524.0858138249828522892508596795713647 1.7489091764738520358435529529490181 0.0266579262073091187517012324352416 1.0270196925042411068945239824902353 GT 1 -625089.2717257645013598303240780242053327 1.0457214390803983044164395811161772 0.0324752485051342439924854061072963 1.0330142714650082980253383880199173 GT 1 -9524916691.8709718953234704806525136935218186 0.1909952577170415825440106989811532 0.0137966209785263701019124771132489 1.0138926788935056935426415148881803 GT 1 -7346952676186882724367583344197347966.8077952388081405861111301800272402 1.8883836915867045628098523636872478 0.0063101441750186143131746921480845 1.0063301372854224885584440852072166 GT 1 -12259235147339480700792396561027328306.3521619633920633561141992774824502 0.1464374272947491683089872699960666 0.0294974504138257327111457525204458 1.0299412492913355952527737517649123 GT 1 -777096437964072854346734200029.3327287357221519194214957682847548 0.1889232448018606100428933282506705 0.0889969619376753971979408634497936 1.0932090468623995327668810870639778 GT 1 -180359562772908691040325543.8878478500428233037257918268437813 1.8008024839501939316838783274798825 0.0458246769925238265029876016256323 1.0469078476813300548625595000087734 GT 1 -3562605847357159755372332411820928.2599953705424341009480022678296585 1.4709139596742452129824916538732760 0.0746634848049902113072771102699009 1.0775978074181418154508785875091983 GT 1 -94175488279920890025.5567125279371088732123128421885451 0.4886241985889631645435228589014149 0.0952737690995625470443017131052994 1.1001228883391058360327774992684126 GT 1 -1265734054050195251264277493611495916.5489801493656125573156950278904002 0.9716297458375224017167625969984227 0.0962917966240126576855778259326918 1.1012487545720090306867586197786050 GT 1 -2766209716247899219587591400978081.7697728137613333392652733164490140 0.9698162546302233824380075599518730 0.0086997545325677209726979635181220 1.0087378183215744863122645049154778 GT 1 -24910878347761410.8678144729152628775326393102643440 0.0847050770193168476496683861219438 0.0266623019909187873476026344633617 1.0270241881420682014950259100231443 GT 1 -1419.8093709217297252905355630618395111 0.0815610232507541568421718490873763 0.0771997401251134742490973195706500 1.0803424710669663518894424393609870 GT 1 -1873868187122.8151476584956580655512782774425981 0.3991583481388247551157718415088377 0.0782588308527474178153519951671063 1.0814908224429304153784141627357638 GT 1 -34057980942699492496392196822494.1587128818750786594642724144377587 2.2097171744067130148845520509426292 0.0465651799414049402439867533905290 1.0476842148953201389407504517668713 GT 1 -211461951006122333222600150217.7758207644342131268309802363628782 0.6270110288508431424372960878887076 0.0115880984631905390121698452446634 1.0116557637252745629558101764363393 GT 1 -2290172446961196426591866955926.2526038585313511874529732886122669 2.5732861363062291499390057541440821 0.0691415218830552230184872124338416 1.0716480238753811349992198782457801 GT 1 -7811030344669997887812915.2039439939326376113910207214579397 0.9518613358904001159267297972782957 0.0881249723706782436947573627402840 1.0922523294056255886575930266152696 GT 1 -2155809507310374079.7575352500237555240815241474738715 0.5491287473522136209687602501698332 0.0810056728643055722270887536783440 1.0844753295119935947249704934453078 GT 1 -1156172973.0894300348558810191195229661471968 0.1124855106736369680254665313611407 0.0562204113334079836560766562346081 1.0578626266808719935305962416727065 GT 1 -10264470153333268976247606502.8137712660085328022813895337839930 0.8726928909748977462643086961540897 0.0952136841272169309226265746977937 1.1000564782194580399710970264851542 GT 1 -11025505163554695068970957457913628894545527.9109122787584930864130798410981415 0.6494253317203408384516195414720434 0.0664703125398534684376403478537321 1.0687825141920131221832832072772315 GT 1 -47758278401906.2838097767732831885225192130460265 1.4862701039241116110924427181565733 0.0841317025858905623622938655228230 1.0878827047609595388063543264201111 GT 1 -6.3774270394390531693028808678936053 0.4729082404844241057281927080649410 0.0096164522779555005227864507709899 1.0096629889405448795324221755619553 GT 1 -3421327745554.6441415209329690909536279422740780 1.1832863925019323452208349905666704 0.0019955411306876659528635188689350 1.0019975348757315096314242367773869 GT 1 -542223580455288.8192704039632497085006286340660239 0.7668728628429175526586528971058594 0.0311429279173357805154817663346447 1.0316381784013162368433307770901197 GT 1 -10056928361014121.6516301166544359853726086694248801 0.2731013253656931885780143234831302 0.0876972820619892896741841321706660 1.0917834164199640631211703651615366 GT 1 -894145803870.1480131883983139831808381871129316 0.1521090697818760671928571495228095 0.0824170475576928222381072339135961 1.0860122917590130861251300272863708 GT 1 -33.5086198704760573412786985051398216 0.8914965953576694315549858423661290 0.0624437826895848929731574056494420 1.0644785578042983273516286686714299 GT 1 -2178640208538515193350433042751847.5743839593497901725281401813973540 0.1284876229895593607327831034742086 0.0563352069749838798479978136857695 1.0579842680312937319260214873097651 GT 1 -13163870608174928429.4301470613516223557131024140479042 0.3602443776686258612821564353736642 0.0725985956173082957456485426266954 1.0753687927034175702311950484103539 GT 1 -11208777831214800341216086.7349676643774256047904148022693149 2.9587937236251854709822363793698536 0.0136129587181125101656826478381392 1.0137064646048685887282028728947023 GT 1 -6059747598945965457080242386167755.6950980969778379880403186342072201 0.4646494271724664947699320173043815 0.0138055046414266148224610887091633 1.0139016868761401273325826998761071 GT 1 -18241515710703327453907718.5023740135095538612561521170353799 0.3689098772591049988683908330950596 0.0635877486509511625997142979289858 1.0656994599940608284517036898325809 GT 1 -47184594663112608549.2090170975923854813619596989963844 1.2603555080979350991007925621456030 0.0699564247650599629485622995930806 1.0725238388411675621229169460910327 GT 1 -11807000025.8207774173729231003224097609072448 0.9876606351262353606260425675025372 0.0305778238285778682483529506471193 1.0310550796499073154087419229992619 GT 1 -57.2239875975184956219107835325843982 0.3631619160958074785653615932945723 0.0389377522873686152610561534091556 1.0397160982150651104250697595636413 GT 1 -530568390874817160709.8854101901156564971185174722155091 0.3383434326210915316508988644852353 0.0446172253093792450518328224424631 1.0456432076103893491807209218760777 GT 1 -20989862511219.8371473904793033741435848436465132 1.4247022166429800195721404169909212 0.0748984827100902839303995235953419 1.0778517990701052613602414591974511 GT 1 -773.1586170476443244231212905919637806 0.4239952823094250430828827174744932 0.0147641055682082437699139285193481 1.0148741797496345746904389778043273 GT 1 -10861167.1715577653914017580010090956979845 0.3211427257079445189618660352681027 0.0967569015265771844711730664181247 1.1017635497547680849556250808569773 GT 1 -426502166229511590282904297090502838.9204236351557832095702432962734944 0.1008890065415131034306639941192664 0.0978252120798492339825988921547139 1.1029469995100948698786107738275839 GT 1 -5794408429719.3674639661251195165313644770534609 1.1748784680714945252705841426884574 0.0567762903354205323074419006726730 1.0584517926018682320190214538363337 GT 1 -471623331.7460655028072970331551387634662944 2.5772765647866087877845189537533993 0.0387135484865485715638219919029934 1.0394828379309898124352305258023700 GT 1 -1699394997486776475698477.2824749638788544325979381781883839 0.4137172108729769001006229014176944 0.0108335522313824006248664755195364 1.0108926624618642017628105289905285 GT 1 -10079120201354.8221402546821972894298445648402802 1.7093433990429487398827330204054205 0.0691671977766285375345072489828899 1.0716756072817665899731616698032839 GT 1 -3311402075791623123913202.1702836350817783456855051154634117 0.6248520006126920706039664878905764 0.0145064139854033491732999844394914 1.0146126607671152700838692622091375 GT 1 -3181307858568726284969840734.6943589562409713345289667883541131 1.5839042541380865872748437596209237 0.0412412882347329127537953175089915 1.0421158397549738782381822598157516 GT 1 -19.4816597823749188350548394467321454 1.7778243166218423483861664669404314 0.0567142811493737406676599126678268 1.0583860530035054201309695700695273 GT 1 -5849.5555654083239235293923516879571549 0.5255775958528333489587767616065128 0.0594573541625277972036028303640023 1.0612982874758851352608202361183772 GT 1 -2399659.3373318901942894345818729470538534 0.0449357903751432132427635535337025 0.0728703371560594826381893600833417 1.0756618495796255062622342974025688 GT 1 -9463039230201773019.6965574254213668816204445286838228 1.2108935738688864955981177481155122 0.0737000404468052746139583297313876 1.0765571663870652546610953585677337 GT 1 -43116049884240.1143792614376269733782121563850854 3.1560283508310601091480297031547385 0.0682239665249579956343776858470269 1.0706628006052153817703518082951788 LT 1 -6542139470.6868024797970982188786789766033336 2.2144917497976656113476633845477999 0.0103162691850217630582050317030857 1.0103698507161933901244362776543115 GT 1 -2734296800013199242735528061.2283252279608012320369313315457175 0.6581695203643073629504430694703674 0.0952347108914898170376960438397503 1.1000797179703620213364404589900216 GT 1 -626447405306939529751519.3881702301682416870236362013871073 0.0004650058500614874961916967151079 0.0810557816987670492441509007560221 1.0845298567262993158892751613682455 GT 1 -76912683814185788189317947.0244807346803663933435543153205865 0.3742887288833296818332650460206419 0.0945217545839556346809458061792630 1.0992920268881401190684951375150150 GT 1 -784.4559174207983394801227633954571833 0.0498565743168773512590403096917381 0.0566155594614112354188434539878050 1.0582814012311102230244738260534484 GT 1 -6178461824315279958213872565273844359610165.1338478680444523943338672952195915 0.8413779613954403017342013260779287 0.0328383851962647987531992072444608 1.0333896673965874291119297781240947 GT 1 -2772851347024829837035204116289092661476.8342850899022543264246770800875077 0.7119487541407427195114134384522480 0.0864991736658118774688910698039154 1.0904709985840927455660655385030519 GT 1 -167609897098631384094125308622462168.7622332092878524728095856653402678 0.4201630623252445687090484415883723 0.0211509288444939352937177461135169 1.0213778146740611853942196672634632 GT 1 -1655241379804.2307204822825536515511440543609459 0.2879933620390578949797367338831553 0.0281320336669959426330044890130677 1.0285353208543561195535088949999985 GT 1 -166647.1093064062562357349632908654401386 2.1741480715522707269474674342282827 0.0919256899798396475063734286572571 1.0964290645002392916996506479511648 GT 1 -71748162074.0748613938316489779508305527176265 0.0982653743513070855581185636366148 0.0878420311148940879495331640266075 1.0919420924103583032017388270184249 GT 1 -21951038948.5257518420083817756613986288477687 0.3119640361617260380241776918768279 0.0715763698197029311066724200400368 1.0742671523203540213749361487505809 GT 1 -1655743547094708570022784899741826788881739.0327507318079127842057008667496424 0.0646609168488354944029445145963760 0.0019241800134985225929224072595329 1.0019260336260318220853167966607576 GT 1 -266837917725859503195272655016221004708892.8051977805953533593299342979572570 0.0588970669556197655215989629533557 0.0824144258542679316744321963474608 1.0860094345789918412749441672604001 GT 1 -53889041659312198683972217351496661.9973848454433853683604681047854699 0.7744463229193368783604513641068011 0.0316042485368747775761672140154428 1.0321144410993512808168260619019708 GT 1 -297865906790397113.9703107951898798028673868600423218 2.2639757555125744815355357285127562 0.0826235329196182987045026072213964 1.0862373489026209161616786476582869 GT 1 -20237.3016842244742994458952815454486056 2.5633424651399065285314964185924551 0.0416491974445425465650415774327991 1.0425413858314168162915669942957564 GT 1 -218320053485665565970765044055005736264109.0501856826731229917740015595660948 1.8565896380501333993208708115409065 0.0239811605040930573061368412584131 1.0242733899931407461901134646051596 GT 1 -1125483014474156699530119.6589212211526617500635167690919538 5.6084047909525197294570315917062383 0.0609119775536205977743244492380393 1.0628460635427797188499788011561794 LT 1 -2651347645.7144486457146967149491529077621972 0.6013569208615864229330968883639125 0.0588010690906852884345527630201791 1.0606007580100308545977479916326362 GT 1 -554997.2488266633586260445953564993796698 0.8657762799345185629945487883322059 0.0894963380202748405024045304671326 1.0937573578788774379886654303091668 GT 1 -60890586244617120987981467753929300.5647881259734709950110503789587179 0.8269813307898736000031734669354919 0.0503577535251549932221723415021724 1.0516699479706642522668669421317493 GT 1 -116160732.5628030824053097776434450174024973 0.6764729642701458005459511373660117 0.0906784508832520030877932533233059 1.0950565079533268359389357977337778 GT 1 -1453777316683571802276643066512754.5856696075642560499739445405604418 0.2213368388737224493628373362963626 0.0421802673675258868429655082300590 1.0430956892473483823617392654702456 GT 1 -3610839626203894472943769389781779120654.1400527196420682969950199112849326 3.2644336331749496185708952650122467 0.0525834702913427456417430924953863 1.0540164412004671237424564077919553 LT 1 -2096850.5757657038170892276238703253017378 0.2190483231139808562023405250156712 0.0248710717725017423772168218329800 1.0251855826469597062373771577410601 GT 1 -7729.7539757916410787446281588842532331 1.3537967095247242086533122450653695 0.0285568702842364208943343801062686 1.0289725505134387745119774437784575 GT 1 -162411758.7680049650612533200954872550727620 2.0713150137838120452821550990826842 0.0098730095336386443577320974786369 1.0099220708814598756751337061834394 GT 1 -687468022.9477906217361211941646152633642140 1.5337970836185953450266667653726310 0.0675039156684673548025197094011049 1.0698903265812587090742151600770187 GT 1 -30835425909.8153618402799862585192565816901981 2.6786339097607242076162514403423372 0.0801175188256467581753468784224083 1.0869962611344548068389647993940654 LT 2 -918498066564393.5778054200840037870085387330891814 0.3006251360021944582051821998565115 0.0480639138188012504591519126972887 1.0492573828088053438794027524890783 GT 1 -1010881026.7805584116610773215936343042831964 1.2329872793234860793328001494258825 0.0771317648028453754100916016356381 1.0802688117695569544131459171871640 GT 1 -2179.7704587946576623362254144284030284 0.0361223835835570120587717347069729 0.0157552688367816718465775460896022 1.0158807023214947808416146395815291 GT 1 -482749856764826875852779914.3592926717597453240773485784176552 0.8966006463781558546526634937450299 0.0844784427816545586893792449113618 1.0882613682105031372771247611501738 GT 1 -91459.0772424008399247961032491140184239 0.9505616167899492999487680303881833 0.0513511673792678242619960490147736 1.0527165882417367836029444775635396 GT 1 -6594126213874301513064480727.7596424501413168235332170000828839 1.0250912669681867925825788353759559 0.0303131429820133848142065772927417 1.0307820874213342634754207690443296 GT 1 -466340286115.5625098868202117978777958908573375 0.9588690828988761586765337700293395 0.0986850241515450285823293879357033 1.1039004977268424496747325562065181 GT 1 -2518326773137902004330.4893964495430829390802677575561331 2.2117045483114863848999814458273722 0.0973645344774587320028469469920522 1.1024364997370394789118160464241723 GT 1 -22939422384879984.8634882854500915551750868010237944 0.5057953933413230692906792471478559 0.0550457976146995919603732317790598 1.0566188157471057051501635042887740 GT 1 -395590800386700419922598807380671268219.9458480653735717634446639984700969 3.0170177881141960368340907878890199 0.0980852196265357303056467887998631 1.1032352419045482906928361319610028 LT 1 -3335009885.3667976831714887564711622872952071 0.2760035880915177078877115801726183 0.0480521344910746015179914292800879 1.0492450088112028718955424824121342 GT 1 -489.7446088256969634554166944504334526 1.9544079999769220800381154117624056 0.0068737218092386431462611246669985 1.0068974546528293085007804947997663 GT 1 -210149862423977764378087117.5885837569876934147498431900385558 2.6702197636752811207889988039178608 0.0154234480695642817037762419581811 1.0155436267593718639555627380256644 GT 1 -87323254.0745681532928905510625273045138303 0.3254628294702212815023567387124251 0.0288821912401244848755318139478701 1.0293074908002384185791122302282149 GT 1 -1471379513842059051626740656978060728.0511127110722958238395181230984014 0.8193014082918158247611959387994563 0.0117320171891059720522672084233275 1.0118013803497056174065915509199129 GT 1 -33999876903136607702172595265298553000222.8677165153769113795646873498304835 0.7824542969559408880211915904219675 0.0012987502693107514429430771322328 1.0012995943763771101329610317250989 GT 1 -11881850058355.9569723093313742989733585350822001 1.0263178335336476601951156377315377 0.0033627493730114936358790642412898 1.0033684161221554948608602758594094 GT 1 -753746785.9179185775251831204605538430249085 3.1379848480507300833239471867178483 0.0966332773114994669890215627116732 1.1016266920737983607168569863766019 LT 1 -5993832593251370152143.2188938002663384992932000038514967 0.7001974543288128268116807348666171 0.0565481700154671665478911374452815 1.0582099700772517705066049892690624 GT 1 -4862424649976373740687627.3479368907404776349166456039234060 1.1378881641201515817571616461242574 0.0736038653436637405076672035505904 1.0764533446069810719517851849313333 GT 1 -10565908136488486346.4337339663590328415998182488073762 0.1429717032331081247460957484602881 0.0551416486825694548418643575906587 1.0567202555092284122948786315963132 GT 1 -739852639179098.6784568630738072385385316510716770 0.1701268485620103294364727835550376 0.0214442092383885370552017317995071 1.0216774771524735604187277377892289 GT 1 -28484794693019718480945747837808838431.7839375943573678491135665067326380 0.2045945413081608735742953023720393 0.0668189605786515920961148568457229 1.0691560568495137791475029122380027 GT 1 -2558904226275.0011925826869460370676851642196655 0.1735416963884022918815951648765515 0.0609263985387840424024860922826430 1.0628614200328497529208832122127906 GT 1 -437098774778792705273557.1957197041458705072536426504417679 3.2350182583523921861121355657074667 0.0808819061776135958080469091136074 1.0843406623551126131785411441008964 LT 1 -16672335693456830213148613990742049.9784224279115242815964595983788844 1.2135037314202689896504020848837346 0.0223287664219887487129717601637403 1.0225818274480994321025491047323776 GT 1 -70370444365484184099110464837651129501.5886153916212370268636700408990239 0.5143627557422749916035762512899907 0.0023883018449489212263921313018205 1.0023911583868961752340210202123036 GT 1 -95342342004219764816398227289647531.5791661374572176664490468735214400 1.0013698712817724640611868557425299 0.0538174605059017189910737518140523 1.0553197692484222805351963410734271 GT 1 -293139990539508405212.0535106862568871576990760168838378 0.8286319820629747202278293552016699 0.0068346526455114580009620089536080 1.0068581158536018800155194117526257 GT 1 -930022357681237401634833214496930098850.9561608932172216433357968062179279 0.8416261409107536819250537942301285 0.0832962903052086689257333142162635 1.0869709672299791040993595676617044 GT 1 -1730168421113896275767587606.6747411735535400494839012624732600 0.2141590066947916861898620826681711 0.0491779796875655247476286518785405 1.0504283839910017586453385389645042 GT 1 -164623716234033580368.7741095547182458803171043592556728 0.0622788922087405826861213423388809 0.0618754907863078291610873555241148 1.0638725997511714331456444223499085 GT 1 -413521314057179995584742893626043599146630.4683523660773793820632235112353839 1.7810188373148318876080989216111434 0.0938331614376543500097693402878385 1.0985318413688555207248253199846659 GT 1 -345619643254617422256098579067449079929126.0881431835255156480527962002435943 0.4566433382924009934630059625983701 0.0308960697655719161482326688115958 1.0313834176989038915603413334347447 GT 1 -2435118558557709462465209401216758333886.7144568391094353152685294527459602 0.9695843664698551199695376776269062 0.0508173447603981780066666701717973 1.0521540276178218254574826505083973 GT 1 -140660018088016312161892645407518.7565365835906935514268454027307544 1.6049642640754436205830090472641946 0.0961841166076098827040316426571761 1.1011296081469977021616215058295069 GT 1 -798.0687614973817899202938529462959417 0.1807662528633216187048154256107992 0.0051232831907385114610797654842173 1.0051364522043782594172380027442544 GT 1 -21984.0485192502758386506878032892651474 1.1175355192474047409242061848424189 0.0671752904088265590893494954478543 1.0695379740378126313279892244617185 GT 1 -3800125584992284654594214764516.4522320763973451212399834670573684 1.0120650407235724093806134812975071 0.0943480301670439054872225154777854 1.0991001859967654011884125441695110 GT 1 -5874422528132984078153074151388210803.6814468173170148107050924768496703 2.8945185832181491621984624646749055 0.0738989433602994915585294372702000 1.0767719178501878865141702908799659 LT 1 -281823924526920961444.0123718351435531555702154899973159 0.1353171949068968016415356532671589 0.0441430175902031818369218632190146 1.0451469771116826644361842790350916 GT 1 -2860629481291936958811128701442151622.1435028200879043071009182958742966 1.0814073339590762032424539857150304 0.0819240004779584839614507866240327 1.0854751036380243591698963491316242 GT 1 -2693661483605393925899263345992880.2215022215670080302797380817013589 0.3435490097740820549731409135697249 0.0812129050470163798479619222010531 1.0847008538111277363125917533034531 GT 1 -4563734788867734950250772948637256.2470194768741149096490540240408868 0.1897430759758946534213626009085255 0.0280822281107456011791003180043693 1.0284840749219656574385546992716029 GT 1 -3257963982402005638629050438841026911447202.1717305014748348068625232628085248 0.1739248891241587905084087054363213 0.0525548824390792215875408968421078 1.0539862671217348985357185458687603 GT 1 -11918495818365.3141763343315177742126266842161789 0.4561040878448089308750473343371256 0.0843236103340612804923695485693234 1.0880922631192423126481588644545698 GT 1 -3325509816283539534.4821717201973555920275841547141167 1.7592849840383251052644320450344925 0.0900362024127510984752048914575144 1.0943504631337557872521865039269347 GT 1 -15605672063060023941082090252832823.6356130517448203754489351475962183 3.4446560998983066368944211879308689 0.0599216145395715911974589582112479 1.0617920184070493568833951841327473 LT 1 -7261589.5743792954134107670209593988276205 4.6831404720126338165967263574447258 0.0343854573190626379322640993801237 1.0349905485407514449238947130144629 LT 1 -381916440188398185978342073.7016223656463781565457755730836561 0.8116161502137408872513743968542827 0.0370138061104771902342066512344430 1.0377162038501010335117682263061946 GT 1 -2602369185207605.0237972961994415175888615206484028 1.1874670272550728214019481678277761 0.0174097529238483230746227376902282 1.0175630849266555396451101589100341 GT 1 -29272352799432645189997455413.1570475834232519478433127780397877 1.8109072479674370100081535517111608 0.0627442802400545113260606286549334 1.0647991206800739742802250354435996 GT 1 -103527582.2644227242588693825659200034638435 0.0166023674091680813592805864450285 0.0116622325871738408765642145898661 1.0117307698074128741056365559902153 GT 1 -647690730998285436393664854.6936276811108176011115643964759282 0.3163998879836550116266078078025151 0.0742650564030958082277126319893652 1.0771673233261798744971310989555570 GT 1 -44323908631254579462233.1112582204569904863536052663143610 0.8969955672621141204068195877360191 0.0483006920892461973310600387913419 1.0495061471177700351175463619267594 GT 1 -7762265089008012913291536738440155509365316.2955069181926471272403067621474331 0.0045885629883593967050158939854252 0.0737631974875484056525680436666047 1.0766253507729957959771763336573402 GT 1 -5875.9955618910070033067497296943536651 0.6499242519546552219842153737167933 0.0431691621124658069425946548182051 1.0441286660715257080757123730903054 GT 1 -2028613.6002834938756118582180055008663928 0.7011074457917913620475953196598482 0.0534054680900582981831645133089530 1.0548844380849437305215940861079173 GT 1 -149553350138.5827609203621196579022373189663911 0.1152020942395273427991097936312903 0.0525018032403519477252292065981898 1.0539302451834109148209029276228274 GT 1 -477723438550876631057187476.3225414836040133929752066360336702 2.7596991377896099191160029290410445 0.0857862634118723708912682755639740 1.0896908873954457656008165006101557 LT 1 -103989969534428279.2756295751174373076460861085588031 1.5161657316943943922790827665032967 0.0282741045965459329866016605627523 1.0286815149050783183244742738777054 GT 1 -1149417114623407837431687.9926409336729306525934584220631488 0.2147345132953588858304762004399128 0.0409815831179773601133319763822589 1.0418450000265573922155803122169617 GT 1 -2247005693.5274976098799205279893673332761368 1.5413323429703083918260429129784540 0.0572677064856457172310237765060247 1.0589729247603261991486550406443881 GT 1 -33779278417236979375249332305058203950870.8305394619206710203188420816007084 0.2624032023486697462591668517106659 0.0488471427504626242893447576397724 1.0500804961778213504930847953122043 GT 1 -22672047063703861784600814008591973590449442.5193516390851082711318014285132409 0.1565524001390414445799495416172910 0.0269317198408275316754592100657782 1.0273010243773154185866179606005649 GT 1 -1015659217330497541385726176592434123.6286616294554677119496623853889499 0.7514961889044401865100063565546875 0.0618141722004115896426680499472441 1.0638072389366958530278945822045151 GT 1 -61695459953767.7536651804926538255553756897736066 0.7706374801452614447203490779201344 0.0520322265813725200556913457546194 1.0534347715890822479941842471231375 GT 1 -36008853285985842.1469112077141444074178743053575818 0.2778190837986664385031534184697080 0.0815113484975119655847093621445595 1.0850257298714537628962857084096733 GT 1 -75346049819123376931814001104819493788457.4522763653323547993652217989867985 0.2463104346895128984323822856296463 0.0972777424703473332490698598510559 1.1023403503633502254157477569693900 GT 1 -16614421318078179125289.1154484443961873957076418208705324 0.5217347777927074624848400487604072 0.0474674022315396399345919192998357 1.0486309491879264873227324478123564 GT 1 -685143515140166125864029.6211174689704371243822552777045712 0.0069683281202245700916599088161124 0.0941810564145273621251048182499558 1.0989158344272728084908797372302109 GT 1 -65428499845786016767979327794034182609.5203508611803965355323740258040859 2.2835321944400346614522478555648397 0.0025201881556043555979083491538513 1.0025233691754104143228052295208315 GT 1 -27365402123187438682717108583.6701341933575403882757116799595840 1.6802523568662863953315831583632368 0.0462342176057075021137888152686516 1.0473371487937323457456551429948690 GT 1 -717619273.5342280707169583078108022665140754 0.0811434078869466794688244957559904 0.0896977016398155602420663112840562 1.0939785386359132255071740833066381 GT 1 -343410376.2982103456807253829941812379831211 0.4843466708201655711485628827525954 0.0548930632054895149472334260802245 1.0564571972614636855705992874522826 GT 1 -133376402225754840184866339247271212255022.7971772408777885741540224369513130 0.4554356909459706312048762045268902 0.0014849273726729791779286010841990 1.0014860309699672214096183822262277 GT 1 -11469202157175483.5023510408566828416187831771728414 3.6875794055521329874613752053137866 0.0067392667378530620829320302027981 1.0067620781417912298744847709336596 GT 1 -849800021321793122.1039747808349962608242019535222442 1.1738521247676797524265328328294559 0.0105593678432635638059843397559055 1.0106155135598353825778751793563318 GT 1 -44241406044980306.2558719880497872140731601241702476 2.1860463441780991278961865626120644 0.0641524322788407608093411329615690 1.0663026707656217214482772154485715 GT 1 -77859776201789962116731639921852111.8108991805790713629243171838034122 0.1274082612723849273877836029862774 0.0695168908001855128533494222511547 1.0720513554559751572188761422048873 GT 1 -556067152476292380409194614918.3623302030226518936097727461936254 1.1781803282073782026776694104250076 0.0992858438747557725071146457885630 1.1045673235120792210767359040135131 GT 1 -4461431067900723212421665952607553952.5236538020682891764466065477781760 0.2159335480952296725062708605461362 0.0954467186630987991867022212278775 1.1003140689310411971905183782766007 GT 1 -486815177361662956902419489507.8184938209714197540917041994204480 1.1960694982823664809751075478546744 0.0821681927379967096243086937266160 1.0857411216380305909427245548142418 GT 1 -21320580818555691899.0895287044109088719606934498059930 0.0996618206945311080399731963034843 0.0153053557707067399110889841771036 1.0154236917303830780032233558740626 GT 1 -1274055.0931396536332818390257665814933949 0.1797845189809044938132176206895280 0.0705130035969296912341117274120120 1.0731224618022305391287241604670323 GT 1 -1030681269640560432071.0430745546204162546432400814181016 0.5184684673284748778657552210160866 0.0429592188887202789441282956108830 1.0439092749457014544156025828647835 GT 1 -11578729859521678144505416464954719049.9177340661696280769116494067770635 0.6968222831025625284881684125474567 0.0462780139212737222100659511931038 1.0473830692093678032183570632058447 GT 1 -18061305900683328409.7536039773074967748339312935409949 0.5830618662993658386570414254062323 0.0157800213293695809542483671295844 1.0159058513551203854257783329414967 GT 1 -14632.3352617580351323289289537129806072 0.3373244438770773533028900698177130 0.0003017979582146673454830839911459 1.0003018435083833210732576662113412 GT 1 -13272.0946811098082394038174592730431010 1.0305076362521446452048607309989981 0.0225182304444209816485170614699712 1.0227756373675498597280944110562240 GT 1 -17200.7067088200436207967215309322768230 0.6938150734042402584653704831919568 0.0348044522392579508302253158208319 1.0354245580053243560133032575438985 GT 1 -423917971.6413058952680115155341442158113683 0.0459959110534091713930683489158827 0.0157546357022455579807949057082511 1.0158800590522829379211454810535029 GT 1 -10.0412373971131712174155072951512807 3.0774970018295712706279307455779369 0.0067011599199008439203535564379581 1.0067237135052927833874075621410469 GT 1 -33069262190551941985867.0845861855785993247707478642352173 0.4652705209743075110660497863286008 0.0445246985181575926513033429373107 1.0455463644251756129904443647985550 GT 1 -7772422999362035.6268947841172906436331949232151615 0.7775534373252684247052592299701189 0.0373452567441211445908741078616794 1.0380604535287650041892216292624607 GT 1 -1157902132887565623466213342715867437844.9855707122512495765274147629120829 2.2415427457168465618230765444677040 0.0034981861693645029373822447703749 1.0035043191296040194458150242589112 GT 1 -22490435051301800760061165512017729920801.8837352198158916665958078029775359 0.5481829366321451296159061926716427 0.0674075465855988765997266402896690 1.0697869866260727666602994819381243 GT 1 -413286461.8800278058886493404069580732469044 1.2181172986244592198472077456702814 0.0061386586963208313482847099518897 1.0061575777263318391337880819389320 GT 1 -47137018373811505843524071.3046588909562281692859792383028347 2.3683500968100264787843455778469059 0.0772461945766744282176980983107205 1.0803928130780125127433344230904451 GT 1 -1361729252875767848742891235052616958088214.2254411701771500017711750314026832 0.2559265027420790571648531471067925 0.0075815712888285569879175209728208 1.0076104574949380740650344951575741 GT 1 -636295452122.5772557333210628956761730399715372 0.5100303871458051573082685485093940 0.0771349709955533949576488691732428 1.0802722859364587571584088782640218 GT 1 -106986423104093225134017.7210778567274107381780342915001924 0.1079594368236785013413565842472850 0.0092945886557901186511200288036425 1.0093380528759382285050079108514143 GT 1 -42906327877590990.0443118345081373965011410141895058 0.1263555466146882660560347610605962 0.0759640256813227144438552805578729 1.0790042748530102796179621524230366 GT 1 -15141193629.2069592837205521662221551716366729 0.6604586516814917841324493466603979 0.0636606237906949712787723683942049 1.0657772868011058237769441095297048 GT 1 -80800051106004544711331518353560803638.3697968796993186541914660740498229 2.2249632334792675871576611345934126 0.0373436421381701926042852819261410 1.0380587762871493348759803488061711 GT 1 -3078536.1289880239490484922342514313674143 0.3668920212833666226380536638196132 0.0705614753497637608870503001381185 1.0731746120925956851835413343547910 GT 1 -207779610620.3329008728611099535168991495434672 1.7918085648557885704386783420375208 0.0899179900709333170456027128455720 1.0942205627307045864502001350258009 GT 1 -53506241497456.6638613235952518065144722508809054 0.0356508412688445800450154305769280 0.0893406536383661517494472625270524 1.0935863853941796276806095439492165 GT 1 -49131784829983766270341.9363229058002553159571676109072020 2.5048196228265614769475788125091989 0.0867240695444360336976644415705964 1.0948320271216293168667258640105700 LT 2 -45522916470367875.7604993208783940279476091698613643 0.1047454607892885990815955976220594 0.0178109100819383818286321450922678 1.0179714332394773961417140300144239 GT 1 -2522802929908369460587566756103304.9677979910359477248076081165432833 0.0216203219983772259055882222001855 0.0756505311864724008305300303488866 1.0786650658433082348264883942611652 GT 1 -183376109816864247542022657706555444188.1950174573673588557613106712806376 0.8442803940145845068338329283970810 0.0636841236262702067824731426252276 1.0658023846780845732940854427926216 GT 1 -9459945.2526832496421170384732078883339308 3.1770871572370351434798971216275334 0.0158820175048217306196597137604273 1.0160094882076891698503184571045760 GT 1 -1677.9992858371104325701419620981015666 0.2503915747905062579422367185812582 0.0670832804780142291385126915506656 1.0694393430812918718407377473153979 GT 1 -37390565195023447470820375263.9336656617396568983331249260403242 0.1860172408511877480418318803434802 0.0913412250556534674891856221179790 1.0957856403790108556516049520023931 GT 1 -97482583490729717008817.5973545733395115721142886327539033 1.4577564694875001810266212390138866 0.0620073986345797775434317379598025 1.0640132176771479060711768488486885 GT 1 -167042690239136938292.8688976248956210101639094522193893 0.0194139639236258137202101912212298 0.0623267876124994070389687801040719 1.0643537783235751251606955144523075 GT 1 -1018085837301411032956667.0213181576702237103617253918436838 0.8674877465124181367218461033499339 0.0727783673850247910157236682424028 1.0755626561082101118119161078978795 GT 1 -29238932630441.6632020679506239721079658457384100 1.0759898569889961898307393053509255 0.0339771631761233622914329156295609 1.0345678044446265789865994135356628 GT 1 -181345911185698198935271206995362731.1590208394069723241149754347879598 0.0346174793915059862246014958229542 0.0453884789977523869300696110711353 1.0464508055514208197114900863986887 GT 1 -9003727989726453436361050539126437984.5847134340667791612119070953423241 1.5904843019577288235993662513066602 0.0022115594981159891791252517999036 1.0022140086073896896615964764089370 GT 1 -22471989828170653596633356059967488182513884.5544654896990641397901765684527345 0.2882975665638830700823085743091768 0.0414084258643531025761881736921810 1.0422901820556714319079297475946773 GT 1 -7477826456771878022841393563948729057.9285080673930412109687181570809048 0.7977441834828280234077249771615863 0.0184038552977678162842479933859303 1.0185753131581114122005171135156413 GT 1 -26.9647679179381973130585207955195470 0.4370612500690428782756069953614639 0.0911883714838775290468244274911924 1.0956174356348287295384454871885395 GT 1 -1095205649359389572609586917498.0256782275438488225978373615317582 0.3467630086562782413972975853387190 0.0128495515322014122145001226117800 1.0129328211063765470407989028308053 GT 1 -85841125749268428746.4710607888708213602326754529969795 1.5932757316447034710693826812728794 0.0725614647795460925129030925182097 1.0753287560005470169140354741734362 GT 1 -94971789002673297755794518151915002631.2939185688596776746183262990080499 0.5548174862105892842242279509182770 0.0344316885541333889318760902769551 1.0350384272126035583927386021562312 GT 1 -174.8213936516629150889823064202887663 0.4437427083653096253610728516933722 0.0160874183187138902228296871042470 1.0162182256311589212285273909864601 GT 1 -99037310621787612578.8125179611990011174428509011492449 0.3081309596420184878172640061551787 0.0631159137655395582922895194217141 1.0651957117232473787709678800408537 GT 1 -9965715609205498785451967415628.5082353994838060354200079611459586 1.0797610519095572842273654197702331 0.0086536985551206587617340472471533 1.0086913592312973293239447911785920 GT 1 -10477960476738790244926037289860452071.3400433959837360378894740929242332 1.1900386992906587726911791782331680 0.0833128185056075193238357690109325 1.0869889974279894995239023917322555 GT 1 -22938055949.1221275221163688961176016180420170 0.1097017458880304378737152316464783 0.0108732715202525424696294263413755 1.0109328175706745172857446970365124 GT 1 -146662212606842494742870.9550558799358573931296828911023847 0.1742254577881291347103702431304309 0.0047613003428183268820838461472603 1.0047726714417983033384838112643235 GT 1 -1270.7144435357563613584137764491426952 0.1384390507858270211734396678833372 0.0988449983763144434784199845437607 1.1040780032910835933195567484246518 GT 1 -1631193278.0720037268090373688280369770893994 0.1530254942990094136386061656236725 0.0988550698555938576386316013402538 1.1040891795432733591765562047200301 GT 1 -288886.7325582058760292477771924055526268 0.0179505407219105566370314746118715 0.0243222341183553122712088012860508 1.0246229049913168333318942911909613 GT 1 -293980292425897068922.7817298903437518986169723417013813 1.5149178504047717117771292918192358 0.0735427404583287600803589775797086 1.0763873654145111656306435394766599 GT 1 -665712091544932232813514222143664856427.0776933554463615509306055597731100 1.0943192778109754123084364419374714 0.0360759443289392178116719826371532 1.0367427678991428534255125031470291 GT 1 -2792752792837332.9837308605371944848420970852912341 2.3194769928134422835258094109669761 0.0991388918491333132668289632006496 1.1098543033058044896708351186264342 LT 2 -3475014.0033452520858930659585106885269621 0.1321839704148996940262730397074500 0.0109774985724772598887568673938124 1.0110381959220601235439720690703153 GT 1 -11484580485014463033892625.8653204214739706101716842846315629 1.8970609745038539136736750656957276 0.0882391426907438332059590869234094 1.0923775411555781821261555670098689 GT 1 -592224672378069008063671929.8081996609544164696426819677848042 1.5936426298759794899754661993290100 0.0889640114781365267440442495585280 1.0931728780876787899132518598602130 GT 1 -258498341038925373662736314022607182.8192106713418276873519987678840734 0.1872188972548268064871228570356708 0.0527242572557906310666902836467906 1.0541650531589934922246024081931031 GT 1 -12.3865365322170379141455858291811663 0.3679743066553436414767535484753931 0.0480719757474700201698081018487878 1.0492658518257111578862640194904907 GT 1 -37068890702168123632287152585423274402.4119945781307536597351744367940259 2.2902321941536160239685971960881680 0.0846720433806117904663840346427396 1.0884728553897776491243627749960256 GT 1 -93808930015130117672876661855.1150512127817812087287673772534747 0.1647085456541866336199333720769170 0.0256497948960420104426223544803933 1.0259844864686463462371740289876037 GT 1 -1390489754820253.6221038168673634568360114710518592 0.4061247939720683481505249149837413 0.0686991091461290403219499536278608 1.0711728628847355089305900791787626 GT 1 -3823261492.4104972783283380408780808036609572 3.4478671962956184618689735131908313 0.0668563012951537318663623266352829 1.0691960720898889484894770067751427 LT 1 -8982416615059101136514.1581944688837814825589261258051879 0.1184695513409421092954576505130730 0.0719787946740306291654584656857022 1.0747006958902293624851853327330500 GT 1 -238382426276740263584723211.7290201857140324002704381562386744 0.5704184826685119208739244635614374 0.0802094660831714469353751593054960 1.0836093153873830599355260463267551 GT 1 -63246254348595415539353221129745115.2048361426975133225583167047528305 0.2551007056423685310145972440426428 0.0861451711159753686389859659723773 1.0900835506855360894281363784877468 GT 1 -256513708799015644.9641065154263665584138317320295770 0.8625540361277528310583944168279513 0.0029242144120645803879290061284246 1.0029284982803663241595445713125209 GT 1 -6238822966885547091203704385870363608526.8410291788372101006716161863985019 0.3959701514090919529510100538298599 0.0586727391839267479427614922468457 1.0604644200323481047639209784656003 GT 1 -234229500.5158572874343181335945948007216195 0.7051667623586693976374584016676589 0.0904600999528252949319769408796091 1.0948164116759814634226817476170525 GT 1 -4023750747299.6584878541508428579024040542265972 0.4294716336058924530507384595544093 0.0845931029444317382668285582316751 1.0883866163190891610717619032653936 GT 1 -11560637691732515716644802881.8077968687940604145424215334875048 0.8834534582239987468054770869716494 0.0625141898366806323637215616818215 1.0645536570779116132588120099487654 GT 1 -249338111132264243259998788.0444001177202346846332933580211601 0.0333927685582240839002519541227218 0.0637468081096197005499213684461506 1.0658693349278086246565427420144264 GT 1 -11483171866.0175262637260515119976483880124674 0.4529037766832593113768911085149595 0.0209274963361589879655105535328499 1.0211495802930947633077713220012844 GT 1 -1063032267423201286192685670754862287.7952728713056777417258825774202780 0.1051182677243818800765274077331191 0.0693486089075809454848534608219978 1.0718705174853322559951774840201350 GT 1 -31580242352161471881570262226.4895318549665369867318438291673638 2.0795706476713751049507203453142553 0.0838245694341140668887637277411332 1.0875474145602256810265285792272483 GT 1 -50306149128.1958191239601733042476823598342891 1.5337420942447572736083059222258901 0.0470048964852571863793911710026212 1.0481455133109740019425841096165500 GT 1 -691997567433268298889374142515089769355.7691927986945852762084090831204792 0.1803601971835594825408347000497999 0.0200676206580666838143352202211896 1.0202717103696719099014295607746693 GT 1 -7558287972687559710941530836802.1792692589954240361740160147191763 1.0412381798701955025612177872172978 0.0164528272422179132685945530212471 1.0165896781367373176231933318256139 GT 1 -19356137162977958839939221637997248.7587870533773790750681708615770448 0.9288283408838776563709720279649982 0.0514174125975403634671350791944485 1.0527864218082699069848562115276715 GT 1 -13582958166787936760079288118013233904471.9372213710030763141647632920689814 0.1011594183088240799136687081897519 0.0140614442060999983236175404381850 1.0141612429603107075072863536050541 GT 1 -522512797294100039712458.6600732455023893272422435504538498 0.6214649234801248166140314928308745 0.0074078384815739666943812929462741 1.0074354127787503356432052128163973 GT 1 -5998429765.2455245875288159146115819555567282 0.1921291082248146440618105110576968 0.0312224428522994456799502267780719 1.0317202526312136291548143744843253 GT 1 -1210498609870.3897157402660114561758640958442462 0.1687089428941497762351337182532212 0.0289370424652991468109694883452345 1.0293639749608697631019405950563096 GT 1 -51076437813311989920086801637696285621.7828930415248620183070906012397101 0.8849871397139276380138270578792162 0.0136336511659513989343777302391499 1.0137274428456799570193755494854911 GT 1 -11928024007.0298345876067532953498901607796805 2.4491877531959981570031015837876416 0.0589493766706711662880208639120817 1.0607583434693646777070113566843585 GT 1 -722782989691.0297394604677828175105260563356711 0.8705870192691036934875037280375980 0.0763295634115590560767915569124500 1.0793999413212839782716195619678623 GT 1 -35960718045570397901054460515219029349635.7237844778142971860175198159626028 0.4926252179356014659721327487391763 0.0320925926213925561817483006755078 1.0326188498151475602600775985885915 GT 1 -1572591230847991350271219757102942640899.5762356304144466493203523712322568 0.9266216321927792413300625663561688 0.0055593610040749456932529319944157 1.0055748717647855710956323569022149 GT 1 -2510027511073173.2852614882657514975937586364901451 0.0191324537816290021792024870903117 0.0266209455225620339228393990184227 1.0269816997129629904787996082173478 GT 1 -13415315.3111290118734741717854056454517525 0.2490005174649693147838617926237085 0.0142845403294415599986787332787751 1.0143875464826770605596352193482130 GT 1 -174936365458743.3630550479626882472322722988889265 1.5570179661588344582096172873614181 0.0533624711141007220573372080907926 1.0548390163145698501414187898742879 GT 1 -986444963982473859943175584029548701376118.5354023681521998976773504666918578 0.0253160756731687431366314315353995 0.0763720403299961223903927182110301 1.0794459294719049999251238923611773 GT 1 -1677149692256065505236607780366.2494836290832337052342093527571738 1.6910413033983137219427528209474858 0.0742506722618740310194553301666851 1.0771517853694769587521378319037982 GT 1 -3927075924781239031460277033.2838506859303792414638033392377157 0.9951635437697099255584539488975168 0.0325952360242240207096968415853962 1.0331382940904158098058798444964241 GT 1 -1515175072.3523581836240730166719778546707745 0.3711066036017481312141814510625279 0.0085658550644045222762894786494945 1.0086027528594380897003164177953999 GT 1 -653906.9431251844798021049685320309513026 7.4942582100513017752378038455603829 0.0423749483374178505669507549520463 1.0432989641964970474164972737810743 LT 1 -905589599848.9938210831728916809078993991934691 1.3287660673097281443346721714613984 0.0222409408216892513324449603816454 1.0224920000574899147676616008243323 GT 1 -13102518042614944747.0671096854839344502868642718538033 0.8922204169844605964912728811166273 0.0158658727388554611331693605351593 1.0159930830267810895766150750220518 GT 1 -155472762533.1865387739531414378197262482293985 2.3097697169624388431841185947519800 0.0412780728272202377975120594854077 1.0421542073835640785843632084161059 GT 1 -131324106638399395242835289705103351870011.4207786580736272914086678464230839 0.1888967716279658625113821217632886 0.0591930533835913309197936750263970 1.0610173181316066215118036893500711 GT 1 -22034542429558053535638.1246113670859051094626951353165676 1.3458757615311163675718145299362620 0.0547336965087822080155137395762472 1.0562885885510898861473831423986271 GT 1 -8559999.7981472906691190616264449000204440 3.1736528546466489090684072816248520 0.0845362826980466531819534408605788 1.0883245472182387264532626982258199 LT 1 -532375181133.5673408288705115665878967029474079 0.0823976713376231575676202022529274 0.0821263297296220672010061151933811 1.0856955119158891358305572983585178 GT 1 -29586.5608612060299028463678906602586018 0.8172294092965372714978008979301769 0.0348797381081642619919453255947513 1.0355025616859324890475245989400413 GT 1 -184460846902397618467209453393334298.5454889375689153934075011311901365 1.5451042251622519324242718484320423 0.0179041935234918041774882321286371 1.0180664127832235911230691802647755 GT 1 -56325172395.7772165859379467350836078744997747 0.0678487407788213567129212995573747 0.0961612482586182061468296857707061 1.1011043064676299459320851522256855 GT 1 -13592044537175564.6887973415703322242475767016979745 0.4029480094555648292095249416452781 0.0712515415268849195681257794992267 1.0739173427382318987332914700500573 GT 1 -26955448.7228319327869469269328992352718298 0.6402061529457673004502790392229113 0.0041890818339342335355161621567636 1.0041978806183892661066717957265774 GT 1 -1363566401043945415692181468294.1570625970182946893260611108985668 1.1231189831274469657352533589431928 0.0950042797107397009491004337969320 1.0998250642555358233079586186266088 GT 1 -1394807245930298566897964606850369094569809.2361705481334300042172467269882445 0.0686024649520540054716082284444376 0.0977351812306141309870880443927270 1.1028472113553946040401504203900980 GT 1 -79363104105299208043684415950.9148513782062261298177587276070642 0.5192165854251443872874595881904497 0.0936235110724007902747924159051302 1.0983005085637204956450502747002035 GT 1 -5044125198668774597938.6114035524135232991772954673152034 0.4275936527522754913300346874458092 0.0788635910327056866709582618727963 1.0821471440660799877989831966079824 GT 1 -23799.4418704499734035048073462825549284 0.3146255962364702318363435950976565 0.0719359341973922662283815764829583 1.0746545121536169597481142656610832 GT 1 -370081317280196848.3490806919672971566312137242403180 1.0387250988586377307751086205955786 0.0393075160011385061395142192423176 1.0401009170602916691319944071860196 GT 1 -8185876073410290884.7050520039273324850711797930006417 1.7120894568236115534914390378487280 0.0691699326337405392916923502127886 1.0716785453616484824160128230035411 GT 1 -4104615889280111623044265084376.0659289842164524791583972676203031 0.2250317223376073086231113598752238 0.0522723039553599798249793654047298 1.0536880584477979379399361963806252 GT 1 -25949884138369068074.3477851232843922369232086474737321 1.2404780747880558991957535290826511 0.0661104500822886528781829370051211 1.0683971026520477563456582540181824 GT 1 -32443721635685725.3488202504220234850043215363684101 1.3277110648731121236454320109865134 0.0572986089759168815426739847724799 1.0590057050066189734868674872056983 GT 1 -34053843176877451382043675919099015483581.2763030030074241440842978346582348 0.0252219237080202033505805606899841 0.0780485479635165578252539984527971 1.0812627118699134469755044896517977 GT 1 -1031904856012.7117775492274060981320595975088040 0.1130386566058960863783678360797462 0.0530015933205194144330183369460587 1.0544578682901029379169820468663235 GT 1 -86645365244594615269711745374.6261697278902973792894115146663380 0.3420195460284192430369185947751181 0.0034974049007666510367283861571160 1.0035035351186963150941510082306131 GT 1 -306440259673921245596978850412725142316919.3925838786937420920608135425406094 1.0529957818165350087823003683393470 0.0705663494502599965755651578096063 1.0731798562406993303481201378467555 GT 1 -63249987057337847110125848966491127923507.3939549811081782073455495751221510 0.1016901635268494774303384525623959 0.0793623528594977347622026424891103 1.0826887543003324757487020174872148 GT 1 -411971.9745100451708430359147239512474261 0.7245437512139880099264054082394944 0.0755904179923394361063682266205949 1.0786000349847683419259434320158649 GT 1 -1274567426555854746679782507067221972.1917906168303690805752863477729287 1.9224012298221019827668312928228777 0.0708092277514279742279639453970623 1.0734412089912295242586282504713459 GT 1 -167958032143669065031665470514781313476475.2201371393154009241332435980124713 0.0248463335660056675357232603493018 0.0746327584553934415887832955006267 1.0775646023743981063176229051378127 GT 1 -198342762967201537860580106.1427107947900419667592526288701707 0.8801156152640988360670441367543771 0.0910130983707974403615663761388154 1.0954245945573202742006370282042100 GT 1 -88622277537652501751705769839648049552471.7312127346820707721909833027455916 0.2622180477259532056392579495928822 0.0608909482414089247997532432763984 1.0628236704590065974179184191970992 GT 1 -248877971176259256363672840.3337763458579491322347021718735796 0.0038024053384493601824751754567023 0.0004626540899276684272609610920683 1.0004627611473527756137998082094191 GT 1 -6.9882956420287447454639261892736909 0.0466026104621168904816650540937102 0.0361960288649668722800937566882108 1.0368673544948795362150140161587076 GT 1 -6510593990509129.8943918017967983150241104272892261 1.9280924840729014974688810154192953 0.0882186362254072923004165223554131 1.0923550503515810945251583991528157 GT 1 -5435517181242315561449115035247179198258819.3609783080351842189197392653138760 3.8991703013153309164751975205841332 0.0153523043311852221353251398839746 1.0154713711607555600400413688086448 GT 1 -364013386664793016.6180019173483034796624765761074247 0.7879958720521144719592023075460707 0.0307793321506129522885767201431337 1.0312629656185706896722505485172025 GT 1 -17800475155970162380117208379328.2029758055748583286904996383614256 1.4379767316225440679496634828112898 0.0532096847643688530753114751212001 1.0546776303388244993892518382471352 GT 1 -22733908542581305168387.5239076247458631018566481410285508 0.5765174510380305618824145827625853 0.0666697326055881459154050243185643 1.0689961564269055885832015103928558 GT 1 -79001838880186020724620459499.4944094749198286591801380414878910 0.1110694946938218792745913987578236 0.0374885795505221357067218658111746 1.0382093474885361652942928477075917 GT 1 -18685209624639229498544900051572565639.8930215954573179790185713729650253 1.1516816234552794528751604806916560 0.0846237239991101510973152929348339 1.0884200676366803610656873380083642 GT 1 -407249665444373351935788978896512068.3142252940245955957565753403918152 3.3312030627734239551889928554429381 0.0839663656510483606598740620592655 1.0877021962605596146136335153763459 LT 1 -178282498486921714.0524757494663208603549922288834503 0.3084036641137389148170840673742876 0.0473170628685532522882789458330346 1.0484731304419163937820786689454955 GT 1 -113453877766432360108550106567136625183837.8537107959118094496449972428300234 2.1742118049615633597103809295192528 0.0927807109632201421739222097143221 1.0973710840689234402832821784996074 GT 1 -93215251260048313350545059024165.0305001064115521484597455211709468 0.7688395226145728434232338647199064 0.0392378927522858622454727778996136 1.0400284477454295934404851590693593 GT 1 -568053103671226733967001.6255395327828777687945819060484688 0.5543844642761279146964688990532457 0.0704817123545659164626457270246414 1.0730887973015050925335492549843848 GT 1 -6086594309420408014181864825352269.7523711367640183655833706348150434 1.9789705703443641147580905674365116 0.0827088138411437938848956748953738 1.0863303149735453661054494129478352 GT 1 -182984821294179966.2381536456524194940563437075933204 0.7132012153713208334235557188752188 0.0760468461324045000508698098924715 1.0790939079031987506159549888249119 GT 1 -19249939965844202081485.0868147622858506127555923035727442 0.6293685994804646434401667350410130 0.0979980892980195560988803689047784 1.1031386406268784372255492947246560 GT 1 -940029626809092649354987076074483.3130449943981673967400099013782595 2.0963077767259573263636351724343997 0.0571475446983390465936382751799025 1.0588454716850456701128862587412370 GT 1 -2092555868417726547952616497296.0097176079558768942543120729605758 0.4628409907343975811986137182050948 0.0691649057053462203590496679046448 1.0716731448970559707329689967445871 GT 1 -231411848882610365803652539883206632.5758565261474491906221685761578810 1.0674929184620422988139650296680146 0.0804550838587706051623598678171686 1.0838763876901012504274042651445868 GT 1 -10443.4153935799982081424561109271517918 0.1015698062336703328149900497423886 0.0424226694208399383159123828012300 1.0433487981815363791417677592969780 GT 1 -413579382442477129341643608222025199020.4783804781537104059535902621332237 3.0790671164806787741041468298985213 0.0198078105467323566536981653258143 1.0200066148578947709817461112285574 GT 1 -672985527656801.4367567572598223379790293243501640 1.8607679859841267618303926435647830 0.0909044645104388392399582819699740 1.0953050907787566957907333946181178 GT 1 -140344.0201522991972038382813334821361656 0.8740456297738052412483072796649185 0.0675072780602185621636244815262083 1.0698939323849395724021918469449048 GT 1 -666311701857692971345.6141723137180843897522949414076911 2.2881649268968636049581783883077471 0.0980108331271878161580763447878944 1.1084730159980478068613145952055599 GT 2 -871533900889834716475626973522066158.1537315386419267417384295509342616 2.8125855867538300041987633419814713 0.0467439767546422479595728991446071 1.0478717616225615252286232746505375 GT 1 -151.2493042783393328276747463525514145 2.5583849106716381811386069860736102 0.0545443512160253408445524395959013 1.0560882996686743677040644194284988 GT 1 -15104778197391303027254356.7904917636149362812236094516465459 0.4490338925708084741992384070390767 0.0662382304543914468470953144031254 1.0685339380141633052583773407109942 GT 1 -15053671057807748194217613850338.8629466089688619424386369622535879 0.6383384452350575026308882290514242 0.0145650060801163907741374422592355 1.0146721171018874310409980990130968 GT 1 -16288.8878671594255117968778847610153129 0.2963941591067989162057890041712403 0.0756439526951511837108020084066136 1.0786579489809806345101064781513499 GT 1 -731382713861.6241628150656347319175500233270246 0.5815520870938377163098417113998663 0.0849785883084875814095052518050203 1.0888078132246578737170955143391531 GT 1 -295793698948973668.9312094893311179163242279531608391 1.0227418987822473930897424029192020 0.0663739257748191217130776404348000 1.0686792697095785498374048111778236 GT 1 -80869.2631304692734762611108956966900110 0.6389410959120718038989506762176743 0.0976803379901705312033645999871514 1.1027864292295981954260488151359764 GT 1 -32869679376817784777905838907.5278580154171486553573837129706175 0.0469347106299612040813241245597475 0.0663955999592195413457391887564599 1.0687024850380557840700710825429344 GT 1 -6452657041646.4298259499440271010266619083426471 2.8837483966137366956935437189109080 0.0313500987014799349278151221216701 1.0318520313451042665051328406709583 GT 1 -357361803729732789105034.9887022916340426917180852107117837 0.1354259081686498456171862665642254 0.0622898405732541318511312864100990 1.0643143762047280195507766230021736 GT 1 -9743192.7994011778322834024494830464186639 2.0946992146318312668748363598264988 0.0940791388117916399822085361817266 1.0988033264362525858230224914938266 GT 1 -7.1312287578668234032898039901088654 0.3972717850007644625924735033375519 0.0494591242969166251747682869858780 1.0507241135563459087365438348729994 GT 1 -5590817720565216457981687596585502615.4878903420222362128124478217081831 1.8864649430033593319749351795468231 0.0004670759253606745259643410064582 1.0004671850392983520214473127994955 GT 1 -16334270916859947246956867786.5113567243124722413172855195825352 0.0220288401363190784977714998974556 0.0692161523583162678416212167678843 1.0717282009043070451414041381265323 GT 1 -6182068364680256653570441523518740844338.0120853609247468007719976885587711 0.7568126448843190145446221799894106 0.0137505629975603608704097607589775 1.0138459776689185073750688086866424 GT 1 -60380070931611.1199216520156143494777393381224864 0.5852052063212858556520553429515545 0.0295399511411691446954768733924239 1.0299850427445265571417548004096486 GT 1 -6317917765366962968560.3037441743829517478993671829564156 2.7574068894309840626944882113295991 0.0832534180407765379542560091691515 1.0869242004704600680535502466295584 LT 1 -4704519530973722.9154663773947149583203782250398664 0.7845628499903548503137948865355750 0.0181313605912013722702776600554704 1.0182977479982765864672132031737518 GT 1 -3330657.8868076366810768123272062474793032 0.9426651365250795846310296149467642 0.0215522523717616702270007064947091 1.0217878940539900471212430603925551 GT 1 -16874465582737491023.7132903665386693934045897788842384 2.1415108692429876263023921315727868 0.0942363056994998836318888050966861 1.0989768300272903976393384145017289 GT 1 -544312273.5625699977381077876026069146071364 1.1102264208811868626221494416267604 0.0996482244399690726857857123772032 1.1049697302910073834110181953983184 GT 1 -116548087212944351971265206.7253937190733095907772888450619892 0.4600235530513507262756375070368607 0.0911652015642494545628183059676061 1.0955919412160179330212717168535698 GT 1 -110309069.9077778011033732256240957477179000 0.6845424179226855906657025394749008 0.0498081871544061892172414610951670 1.0510914065097598496565982116384879 GT 1 -581771263234.2455892151768240054127946852208542 0.0050433125070968598011727767446252 0.0319177868710239245536316247322616 1.0324382643936225718090980849327936 GT 1 -22.7114385366626008349103152139813093 1.0673650394584026653339727645052357 0.0097782049466713912914318763585020 1.0098263255382830693003209488055871 GT 1 -929206498196515071518761.8864242885314184196861151889318815 1.6606483096271250112104349920891332 0.0727048472790760415539896884273665 1.0754833684937020030125235850392772 GT 1 -1959857887206724.1441978183478080491935681399989324 1.5665514421768576337904393039310754 0.0152061306090855560769248045481184 1.0153229293638915398600766615855158 GT 1 -1984514431530856717656501593335.8435130035885575496217658366393026 1.8044756781673228145833095223208590 0.0431485762409783895652636307845851 1.0441071516624717211427224100243894 GT 1 -51112504230.5543855468795880803206372333535572 0.0949860157151338366849689498526694 0.0301134525844243767241011856126476 1.0305761757524712925484335161686579 GT 1 -29672976610576736005093369535046418124617.6371602933401566938055641771710662 0.1743519370349003389406128616740523 0.0208223020445752539975634989500988 1.0210421432642636823127604175455849 GT 1 -199422246575481.9105765839166671899109936443845755 1.7594993202490204777954700983040147 0.0109231338575184269197742633993105 1.0109832293052522883570203134882817 GT 1 -466966222697.1314710611947356392519181460389938 1.9385708501312195630964615746187331 0.0714942497251088393436265766020236 1.0741787051284338886705925263106522 GT 1 -571350950395113563664180871250776551476010.6107305563493305401171327304864553 0.7036824849320260966088751549736161 0.0911579987512216859058072577820617 1.0955840159203558478156374580227510 GT 1 -8418410197.7673745000564390975307871479249454 0.7868850784342877601545964322516152 0.0916890290186494133834062838271463 1.0961684799590576581892983783630763 GT 1 -18794258811825807455525618449196274624.7909125136532546050454709946661946 0.9727986998689582313286579355409680 0.0396728542543136331888462439448399 1.0404812757530638498326619979843608 GT 1 -2856277203401885762.5118450686530554864347693074323791 1.4997626444118261004782749770565457 0.0579656276657559770707669534072083 1.0597135163939281690443830192690503 GT 1 -205497742.4295375345789997947257218684602884 1.0218607176362116093086576356081667 0.0669052876179097153439395726045160 1.0692485694798003513298451414177082 GT 1 -3842412102201606432324784139083096668432.9031710491165975568357219600011170 0.8935782943305331040740949368887999 0.0334344197547457456478055491284110 1.0340061293038126933165654878129410 GT 1 -44.4738727734610036886149085750447408 0.0157849792090911391292489653020563 0.0107843760266944916022195010616857 1.0108429489051145306338535305699856 GT 1 -603491445492558946560.6695435957340359533701452145723595 0.0755752154931928839614964712043813 0.0031265915146329811122932374226833 1.0031314895139091389512604794530392 GT 1 -88418461317319896672409667.7545496524911291614714398132218217 0.6426458975863399145526473155340023 0.0035444810174599697045186493421419 1.0035507775733866023257455411989669 GT 1 -401360330213353799822064667.3778180398905531006106827807369400 0.2594562048043920324371336968086974 0.0029243012512879085345064315939589 1.0029285853742746959536891489034066 GT 1 -83712327284378824632838.3323322260898350223838382436606982 1.4453606063056787124153716475462034 0.0458431095093890536567306613522021 1.0469271656142721524777167635872549 GT 1 -14674198836837444125118895472642109426.8786509947982563333676724418426115 0.6760749960969890511738079141376571 0.0395902476155501319586296678047349 1.0403952601838363813653452196314389 GT 1 -916224111067673128781598755580.1019477304934272171358980561689321 0.9203081514268475537118992576950217 0.0524031436081139444601689151224671 1.0538261241450882564544559128144856 GT 1 -3628535192340457.0875923100721775296000056037969333 2.1062776370695782926495502827864004 0.0071292556656945417065545600001762 1.0071547902429312100380493036513964 GT 1 -6703761562392671032.8266396104018669400283431088228915 1.1170747020746042612172287575732914 0.0942616102300106839501814842713773 1.0990047676495928642107310759833114 GT 1 -718065970796576054962062998095185923164.1934820079600121876887930809200827 0.0696120068964387573590120573626965 0.0151322147299188380593256254323578 1.0152478749716546779974359703697848 GT 1 -2213833400.8293063612661381059873947035990873 0.2988141268531024028880570750847139 0.0702608782899753518656888416591341 1.0728512464766243142471195405338100 GT 1 -578584026772785282595004036.5485169239941254890562154396284632 1.5365965506415140512131195582980307 0.0074309618658702075016938404279693 1.0074587090070881992476761415996408 GT 1 -39226402307400.7030889065202620612758852716511047 0.4044533208600407802517821428825743 0.0702668332060112194501289983265765 1.0728576514293334280824714727184601 GT 1 -356993845278608923542529130.4424213288021200161356852061703388 2.6236954225463416901211734267845594 0.0764314095734227581601211349176254 1.0826711465818282777283332242679427 LT 2 -197449949641630229503108090552270.4570535962173675684230424899204436 0.0454987295454729204062477083690416 0.0473150171465517374681865653262670 1.0484709831170033850401006921724595 GT 1 -26990030172468815983285506767305040793254.1819843532882429959081201659630750 0.9851751063941971132935309645727840 0.0747575156710528660692487070656006 1.0776994306032830785847148972300878 GT 1 -33125041673005569453682562710253374735.2197852756767383856896118540235303 0.2749974574957884002725061593729110 0.0087655518652702256350062431452504 1.0088041953014467652696803387366090 GT 1 -4506770365467812913.7880593981053659469857121672967194 1.6816644076107299729239983761574551 0.0776505549806312237351634220903704 1.0808311196175878335903596383540425 GT 1 -5976583549461.9003909298888329589430666762675878 1.8520856829902252020627876609402954 0.0418052552665314458380839271741824 1.0427042390675995471916583499211038 GT 1 -19019750576336.9279175106600844163256096973271685 0.8702426071755103081954257534611555 0.0751949435441982598427390067205936 1.0781723134580785279983511354252138 GT 1 -101991287861484850.0849495882824838164933852273651494 1.8736851230381073230532905896858212 0.0158391996885666498164995481902113 1.0159659803300085699246072410680613 GT 1 -75986512501816214517983233664040115056259.5961718643800691971670340511594859 1.0633192242339006436267085541361953 0.0290842255276792063854677253986876 1.0295155554702090815387172478639928 GT 1 -8031775339227935177469017.5468072969188332064871960635351995 0.9507431964595192321638854563617904 0.0714279995919619965302094133192550 1.0741073563298705712023206315276121 GT 1 -169595581917161364.3767251193282929332920532295895899 0.7815182013566016124908731455895571 0.0950946694809097349069625634994870 1.0999249479151478370096253621440683 GT 1 -6551475964871462028306805.3450087621924117994833145032997956 1.7107813201359678846024506862454946 0.0703648988163608346225665096588410 1.0729631341485230009211858775373131 GT 1 -8699870334969687953.6929245210678719968383733584369500 0.0712099972363691280879693675729011 0.0323702257151985743780632022328933 1.0329057294456091333501239249392758 GT 1 -15944570123.6568550552901259016299703606742056 0.9681676149491871001348725390452178 0.0162157993505300675940224329078948 1.0163487142645206872663522455120075 GT 1 -1162.4987889333906412701925405978618412 4.0840330831510319374238261958999920 0.0649773914369550393198745303109095 1.0671845697044568344898249775320866 LT 1 -47557080528698008835482052766425564784982.8369241737149742331179323666081733 1.4479204372312768545732199279820810 0.0368012910166063497634609771384900 1.0374955447696397958365284422487153 GT 1 -126356696678166953157532994.2130725714030236934602078189467880 0.0480212323332320218651236099384027 0.0325711425948780527596712812997329 1.0331133891796462546246644654865292 GT 1 -248702992885.0973073278336540254103090296711291 0.4663245384243565195094591031285237 0.0470496177989136445634103259573124 1.0481924415300650838804305749583047 GT 1 -98049091.1567509138544606889676163050101400 2.7789355629964183495320524627878894 0.0322364686256096288982809060390948 1.0327675073184468773666151288962070 GT 1 -7547195376882022453484925875808058228.2391979515597141306190012625328733 0.0920457715423657605219314473941452 0.0488735327156471577735803742696630 1.0501082418036564971771795113082054 GT 1 -127919.8054102596523233524046456251783486 1.5184921210729018555637195512687525 0.0846235979652595445946169641352827 1.0884199299513970143983521218256863 GT 1 -30671444649931905707768756723167.8643638840385622384476730502070017 2.7570320796775357756508759610354881 0.0445884708488262530923010349085008 1.0456131107438691282389695757613529 GT 1 -6805595299137278971106.0196953410287277931887623722960027 0.0137412712644345416346028567396239 0.0978857036660149414191398129993425 1.1030140526078675901117033336579437 GT 1 -44617074112921203778883414862771443164459.3141719962025430890759402802090443 0.2549500110541353727290637362041407 0.0334650029357684336285396925577170 1.0340377708866503599164319643833721 GT 1 -50452772.4663110637926214660889260326366197 0.9693755970336755062249295597770390 0.0587950634636351365154257442818482 1.0605943772039200792228009614918040 GT 1 -5635874443124599590334923702550870853991318.7809050904430139833788919371089897 0.3888771697538037477536079774426563 0.0159799304859757156110372372273862 1.0161089862902904449250477320030190 GT 1 -163.0783820464022422410018183562983277 0.0483649760477450243991193963836110 0.0802663588703173959266334719706633 1.0836711713694199913958735728701903 GT 1 -3045866356066458696450338899740514139728.6275479764139299396474982984025503 1.0505000718516833651018775622133054 0.0725255804546515501976523655869080 1.0752900648858973275158184693117446 GT 1 -80972001855972181990798400.7793844162017044637640670276263237 0.5510564181798713934438766978308377 0.0503875677369427835492112982699393 1.0517013436672224953246785917297763 GT 1 -168101559.4476344284841627213554112300274213 0.4982766958883089285729169936264444 0.0177437119480038742563444227581674 1.0179030188822096401119902458677104 GT 1 -646059222846271242116.5578642875712474296384739753065359 0.2157302837164388362359995746094225 0.0746892829581753287742618334158256 1.0776256875594647048670641857719107 GT 1 -236656.7738276792468557677196956674719231 1.9845922299365155561836791906466688 0.0708547042804733051672514294077823 1.0734901522688618988323033404730423 GT 1 -3349419096713954166930.6306471172436609542805939171250363 0.0371692289690741916428279671372018 0.0521724896621840148283680587340793 1.0535827444026758147463911623192958 GT 1 -14633508971460624841965276191444.3326405517387313340221708596467761 0.2094658459068390648935884627174332 0.0666078877340388348821582284968066 1.0689298960421308690382969035404863 GT 1 -2587807.3481833169778348203649849243670242 0.9667706998343586583768756048476710 0.0103750818007295166365818043154660 1.0104292781488521142318484930881299 GT 1 -777926665249819484827083366.1565273578804869264711513132879113 0.0930011948058277788725412229009671 0.0341457578125405570106658507603683 1.0347423441590596343589280488184691 GT 1 -66391604445708082037446913825128296266652.3667320953114053114883215508554153 0.1561346782182920964296251081064598 0.0161762915405138001543707184780980 1.0163085560502355370641574364481464 GT 1 -694874330921102400522727.4540819945537025611280325182381417 0.7705505566472971169487344517435422 0.0491377590428105142325460187697963 1.0503860839671963818687195770748059 GT 1 -56495588576631444180139389078.5350796910599244770968029753836908 4.2665225800100824247588050854152233 0.0792357029167990920660291036343764 1.0825511961280978480936648170255090 LT 1 -4646470546887756626123791759126622549.2174622844554054945380918234207383 0.0735754848568478721605778570570135 0.0250822966077117516861795444462898 1.0254022183238826119777125128477352 GT 1 -284120911296428161126691754715597988714425.0489333515808035655518651905647309 0.6025414534990887854923175773996258 0.0167536293090480659131750139556302 1.0168955588125992389903071788877364 GT 1 -141367897955353173018341969.0613761639277409295950052383938387 1.4413949205395537142688265974123654 0.0993153385187787393196014090443000 1.1046000698908792163613572514430127 GT 1 -4295.6310156694185837929781453200455496 0.6104793195584323413234137738210904 0.0173607503685433089536290775861987 1.0175132153766642894314839993658366 GT 1 -451383618105571389986926.1556708676592315220858246764311636 0.9105283373648937672899062683908810 0.0685740406839743292799947630924551 1.0710385775359939629329756378387685 GT 1 -3642032393811892226.3984552610757123264532512692027136 0.4297310780936609160349693712804501 0.0272561820253189366286320669855255 1.0276345223423140233218473915498085 GT 1 -35101835212228793402337797967.0208702483577349446413690812242536 0.1643421588917140363924161901029671 0.0885723635641602968198141802848656 1.0927430775532353507017375038845608 GT 1 -113952283941637434460.7012354170401028939248490906446054 0.6213413817201478233338193920166111 0.0585914616376139008416813675233694 1.0603780802002815942295366905952848 GT 1 -261701.5591056167194590730179775246638145 0.7973585156677702489051109781323714 0.0752759925142177363271295946592217 1.0782599562766224340823433187519707 GT 1 -2965795399296970414860176793257445095.3712821153602342256822018410366304 3.6020003590637367596145864432255676 0.0439665764414037010883790037903258 1.0449624046605112146065273134688398 LT 1 -361675653986713489433495611365.9675676380258727420682549781270073 0.6109739663462211379638819791194146 0.0364377452646788768360347212101994 1.0371181801010718616062909868096845 GT 1 -4134146602170497100370306380622.0576098360735094561028937497535382 3.3604587930445853471813951710524288 0.0424995328122531430625477343239296 1.0434290700029152336488449601639037 LT 1 -3309217894885650393207.3545914906759950310903250013675566 0.3568967607817743971903151036010923 0.0704934996696166244168044859692827 1.0731014784826567440175074724552395 GT 1 -844222763643318582861.4855983533571834921331398478803099 0.1093017953019246266335418915282613 0.0432089426239408078479370670092425 1.0441702422173455191618741666773338 GT 1 -26155449090.7897498347485808274822603314771729 0.6979997818081052645432281921041662 0.0827496395497445717490744903120276 1.0863748227784331625349985311827378 GT 1 -265664651122995727.4043807720894309383680578253363867 0.3980927729773862997699368413333348 0.0746929166399393753155895908853486 1.0776296145526701761540926438749928 GT 1 -267346574375226453896198.9547479700948415508151606533345026 0.0485119757220775409756373535609289 0.0422522654270052699127626803178358 1.0431708607677943014803386381804713 GT 1 -9855132411787989005017.4028726161321788837201594096806839 0.3318470559068059260469378834770747 0.0119811425259712659440040067947043 1.0120534949042395609430494917594689 GT 1 -1770551713930770559108178602466779502684.4470986781951628937335315436126547 0.6084530095164920125029765014280941 0.0832277825804731588432252363089569 1.0868962373426058725086070868862523 GT 1 -397193930752.9314107308325608184605085644885470 1.0356959807658563667048060745394117 0.0173855242268580668268100750917773 1.0175384272442168822117492120852044 GT 1 -66848998414978648975736.9779634050402858189759199508916015 1.4319037389950021626018165953262996 0.0337762817953432241908390558337702 1.0343598792386210801003986059839828 GT 1 -30.4627980525649810872287503922955680 0.0381322323235305010721605546531211 0.0362534584634784711124457369604113 1.0369269426593930518571621806308486 GT 1 -255871336984945709.8089625694247685358675436004255183 0.6249246280757714355874652984561041 0.0794464531509387390070223911518325 1.0827801085190296241068637867154270 GT 1 -5.5141419904117894526604848137796388 0.1452713717172088644146740215956722 0.0639055667453369237008491461783522 1.0660389173642810104926990448349086 GT 1 -16623438491477048129782086859.9482681093573819438070872009232772 2.8600001438960043355921159371962523 0.0062496357349911897579374694998617 1.0062692464576788693556990458610077 GT 1 -3504349142342833.0976057681313883752191630988741763 0.1575306361177039400442731573690206 0.0798359191153589383891151128358709 1.0832032760536520221788163019489608 GT 1 -156925.6083876798376593367645962509246333 0.0489370695385191845981101548694746 0.0393093850534204491107201925031993 1.0401028625882636486895551069601624 GT 1 -7749032644481730459.8096625328506797558262467742729539 0.7076121589669359585731100832727145 0.0298769972428372734380611159569007 1.0303324085578851158697033896411856 GT 1 -458981513684543853.6460231400334387896892506872685722 2.2019570279270374091450977029942383 0.0459423394552572548856269316148190 1.0470311685377419537218007792503398 GT 1 -11231933591652588.4271283459333235116190551197740708 3.8770219468538640918999847393082849 0.0917169463430351320172762572471090 1.0961992158571276463521860243528795 LT 1 -79036690817171389144949364077245156511613.5992793502616518053214073923637270 0.5974384089539846175145233159093829 0.0093121901769250055495026516390751 1.0093558196886509321852736898580769 GT 1 -2084896051177896129653751030950941.2838219665789107166288217174138851 0.7389304407899282190248452110541498 0.0791971704963726793584464168905956 1.0825093487038299615160419669652896 GT 1 -545857580900526201651.5011917995091820459507453633468404 2.9770538508820900029717056374360744 0.0328349128273584564044589602984388 1.0333860771355391809288137246450031 GT 1 -9618568337512264.7396189900005873028855951419162608 0.1625386065327251435631483739095884 0.0086339310903593676556278602750499 1.0086714194104160872001741648685278 GT 1 -84976236218136677708173.2841397453928626973036563457140764 0.4542981255551336009336249745933851 0.0876882483167416197389549075151746 1.0917735143333609476010120787745110 GT 1 -190817599728727083.9754632185459596302641925357831102 0.1292902482200125789008306171971335 0.0943557454499001215920677434472496 1.0991087050702912024821779027343522 GT 1 -92598931763135126222770768399363880.0205281497144136326119337559427491 1.9177814558006741155257851707452422 0.0376104205103943722120612843367495 1.0383359420095414665635669792453363 GT 1 -87522065.9107556231971336439842276465336389 2.5446032700400388643146327507683614 0.0855200881408462194098244829421822 1.0933959377699604697764694294695990 LT 2 -70852883662724234472778364196457564984.4556709715257238229594624106031025 0.8644379564477242563349176135405880 0.0522079185403002778381975568046899 1.0536201241367466078363480197893567 GT 1 -216379.7833430604649652137791679431250147 0.5987873210597602749920686418512603 0.0939094022062767667294762319827771 1.0986159803737649922547098869130214 GT 1 -3511328113624636401036191734.7752724779877788291180651680047263 4.8349261337656273030881149735003965 0.0615352017917062536635517610585716 1.0635099322277175740407240255655763 LT 1 -49529001943377120176580.9202702716952763864017702387359645 0.7265153876669562279849370620913817 0.0459995489721378674094005176889833 1.0470911347584254574057851629303641 GT 1 -1903817931650813242698021215545785083782.8710827493977755113518525563758207 1.1716497864416714897469799076806135 0.0907262051239752328592461650906027 1.0951090256735463984368727772175248 GT 1 -1658317416735664837685109940.1670066925170472504157510567502108 1.5920334428741718720821430746549552 0.0683433786377049212203546382355117 1.0707909641990006411260762937025381 GT 1 -99409238065759025.7519947105884744432353222570933010 0.8671967583739334718891339582020189 0.0866664399996496216020606103122245 1.0906541200925955225145471008272398 GT 1 -749346.7049108733601271347340652421534745 1.3801752611783087436932894222566727 0.0613396932823450671648362109911702 1.0633016259091295541279667217322652 GT 1 -408112493443608704734797650288510853421445.8542264738941290213005406820407735 0.3769108873151218795452936054004855 0.0494757593216646691088758821582511 1.0507416142980144870733094248268593 GT 1 -29.0052750033351770835780331507593648 0.0545464160670131925310336158144741 0.0847952696762957665867900121848879 1.0886074897470323081972390201488126 GT 1 -7348.3510323462215915146193028887736218 0.4981420747624367401828351087717192 0.0102499695035390564502483457418068 1.0103028621836106438025472709074397 GT 1 -536869029085392002037388819931185638995944.2440285079432624761058675638518255 1.7337375173176022993644512681331382 0.0118276168723592441024456757458198 1.0118981196037457271798403579417854 GT 1 -1148011759197.4624015455554078269368246825243854 0.2016828595248920375301373839379315 0.0646604102720376945857097561262779 1.0668456180637085761899859880423002 GT 1 -2653304166635141951554302485.7961345697532308899512954499859016 1.4832330309968050215203950104329899 0.0016852117124658224888272825177052 1.0016866332790419898522031322290799 GT 1 -1739260621.7886669239635016649028461747220881 1.2528786777826431111877386464013208 0.0965131770385367285412091656690484 1.1014937534928837574228445041429546 GT 1 -956503527292223443435393.3161161618648448109445477980836296 0.6536777877736602901519681060510869 0.0814764804550509899727390231242879 1.0849877681823428173721094395944914 GT 1 -17841898161.3490513682041513530433216939665522 0.6248262887888691721589138730468936 0.0408349939694274107890280131287326 1.0416921583878649531578074568998989 GT 1 -248699292369601.3198908629872734464393957747758387 0.4482885640199706301143092982635283 0.0652825155328132215588043515499805 1.0675109510017335939041211801373885 GT 1 -865569139991728659335522.6414037119742414848995720859123012 2.1458909792833225104086939611960827 0.0518904786757661356992261013297585 1.0532852545770242810499168568398405 GT 1 -11.6097837942537985165770145438332130 1.8998023492543421528107821139228285 0.0451331557900944327775138233362578 1.0461833783693890869686919058931973 GT 1 -2753648.2473674443738029546668357279210795 0.4172699786205954034729653903340633 0.0743017937584484279196022951421816 1.0772070086427797708587906951453986 GT 1 -1700644055356.0666392503755440201673010961949291 0.7094743061060201115637904211001958 0.0311826533424332500078847957478202 1.0316791816005315751054873907572453 GT 1 -7053735655214997.8956308247940895505625687026200828 0.4364621178645194520351625556334097 0.0171970757878681924031910215760608 1.0173466629507199593769900954645520 GT 1 -4487460190929274442520875150.5641814256763790699888353593084422 1.2185130195065089455876006726436936 0.0307978093001271048645915649535608 1.0312820297246641771568980201505555 GT 1 -7120174112.3147588281743070630843577516941764 0.7754012175314821890164231279011029 0.0281519774321314122791742517920766 1.0285558421293263864711953212715404 GT 1 -9831456686216.4408239889350661364805601358591858 1.4035037149088059950562230701477268 0.0764787837976362557692791253717120 1.0795615059171139184909077449924027 GT 1 -53772408762577.5284415193277002993226020461830727 0.0311804900243878123198049970596659 0.0651259025099024171473071790235286 1.0673434138510654544550273071030592 GT 1 -332917288328006202376051773893.2284172981442941254012113865792475 0.1029479184036865739771201855748690 0.0629922610308448425173172200327610 1.0650637374724276939181291536929673 GT 1 -2.4441678677942882334858614467708596 0.3959927526944859781185583226812958 0.0769999689809304009572718570667932 1.0801260108724928276970137255323738 GT 1 -17753331557236507997868694011326468521926.2525015385535300742236694918815739 0.0271188246730853659719846065296321 0.0110104669575466180939549740615981 1.0110715307900972083158642827881917 GT 1 -370601353493012685145776367.7104657016439632627712050638672346 0.9272431903258219116277695915019291 0.0519496448080122917301856797895034 1.0533476608466623275247494445825481 GT 1 -93501248503856727582.4697868595749245422865116114283223 0.0572031719717466849592485915452609 0.0150742411242911999808138114405127 1.0151890123504254896853404410563097 GT 1 -2005935517378309591885.9189415213527407356852961486171732 1.1128476242568788342962391325059983 0.0971252549458915221020143005424200 1.1021714449823597471406260212915001 GT 1 -46644926907353.8746124063576360080443632722399831 0.6091347995379051885338887184247349 0.0249254240395934201644209384549040 1.0252413227448408075627838398609581 GT 1 -2416971759251320.9709163981947871165132958396776602 0.2219102058308168836304403136722806 0.0786236652686388582929110957635907 1.0818867108438475144736978408018419 GT 1 -7253990164000596244421.9422629939494587439767105305720832 1.9853365070976121300823549589514743 0.0720008399971462294715949974503951 1.0747244513656847531419238917451571 GT 1 -394964154786162163256779766965068165308.9038856982440472086665733242633171 0.9870758137054370125260237312205384 0.0654027883113907689012992959422525 1.0676396321478144013911158386333700 GT 1 -26486732545624.2928784980777446406811770955428013 0.3172838435008948238476039929401849 0.0071592596175673171136413632224528 1.0071850100932024984389358555312661 GT 1 -64425190248471654820285353493387196641.0263017413534243725776474672679372 0.0421837098290588840592615594269953 0.0425380364785162549813282557155601 1.0434692834981262497404911430542625 GT 1 -194894249377.6460122955355281623680838505678807 1.8797738813986986178611284045080709 0.0632616512109764211775475778404420 1.0653512792943935424552113047181959 GT 1 -2217125390185556714085766999492261255.0362444358217329694878455384572224 0.6609091258541110311337274969571992 0.0386231344793874113687512493541545 1.0393887871354846676944363008512920 GT 1 -419500272462752496180062590633201271281808.4564466245841486335050875888283094 0.7057360843876240358098008314938540 0.0581733077606586509576419203408554 1.0599339998463965824996432090844797 GT 1 -54.4545329530737358801075661455864093 0.2952686604809853599701938952147803 0.0647913226636332889402003856941597 1.0669855902783949036876627597384376 GT 1 -1233913167972242259212817874710647930340732.3725542674284374668668710569146469 0.2946079662789939735436142359511799 0.0971284467740075166210119082984990 1.1021749801723463337703220819077741 GT 1 -537674089672.7898403036840632568918972469530294 0.5463199533332624782209554948486038 0.0355688365877560346734786751113480 1.0362168194142843371895147296090644 GT 1 -196007021306064401141419649900742905921519.5031110911972485256284300064611666 2.3268337193029564024114259317503321 0.0335499545267968760401125396888623 1.0341256676775863309502473164566812 GT 1 -82011512830880366404971665.9771239314248862961200487947754530 0.3786793348019230554585571919779733 0.0414738985438584561239434369948311 1.0423584853010740359343371266386997 GT 1 -960107564.7240040973390244657496976374057085 0.2478795075824096462151576096134311 0.0253403170287849099219156736182806 1.0256669120204594947505798725006857 GT 1 -11175732.9810650772070716246672184385793036 0.1520416591152349352001049961232305 0.0368620475751006981929134708666837 1.0375586246660376323145542534118417 GT 1 -166.5918342631154173830710671511411082 4.2524838446849085267262601619022794 0.0341450572769879449713056232783019 1.0347416188577999164913668562982012 LT 1 -1336371023127378001.5182100247627569335116324989639327 0.4611727390944407654871222588941275 0.0291863070527554679658954726298069 1.0296207004215353524886503611591562 GT 1 -523071999293109167857111654731512740419.5213955648257290934221836734566327 0.1079443726340793457168167069904971 0.0948646184017920368448063632274948 1.0996707535439203297870195357245702 GT 1 -20062974889444245628548484.3033667347124119289868931114542010 0.7851036769589994881695894521123764 0.0982179024424053113715532252297491 1.1033823650910796161334076794152411 GT 1 -11998414239223146548954688660259.8872648522260105404191855959658869 0.9995115184265302278358908155614439 0.0611009993332290938812242094266214 1.0630473660841928749984286994870958 GT 1 -8656827985685470.4478897100032962905390233534738174 0.4103787147735225588233398900324150 0.0472902218036436158650348691562619 1.0484449566542289624826780133356556 GT 1 -18.3330047934086760148602853953267378 0.5644174285391018091176278204283092 0.0717066129354581286933521860307483 1.0744074463067387518144373512127380 GT 1 -850.3033124235141596381223781564589041 0.2990515868514766336086878979231342 0.0131191451195635855766978500674688 1.0132059612420785518350714059320388 GT 1 -573570663688229757793713017642.9601546916691744824886549736837966 0.1200185532205788413281148977202042 0.0051243254778905463062229630989315 1.0051374998595102002630796597260773 GT 1 -366596555381468326153457041398374770827596.0909979289095095094896060649988974 1.0729387232148367297105320843499371 0.0325893525782621201809628989443638 1.0331322124291604148430647510104427 GT 1 -78709236.4293552930794419976542171074182401 0.2286995202189295379781807921722251 0.0570755756883612092611082940732121 1.0587691434504694392735800473417703 GT 1 -22543.6028238894910008563603106847767802 1.2973530290083599017698784912635419 0.0121190884810570830207740481285197 1.0121931233990394156319701699055745 GT 1 -396069313229020788416948168769278764.1122297190141728780075510250146792 1.5235420764414375357963030763160247 0.0970944862484223901147454160642178 1.1021373669738954619289731734555354 GT 1 -116627786607241920955998607344032871453.6554492812296448571774906520656526 2.0823347868397143828735582855070025 0.0037035973594427326424190635227203 1.0037104726569485524211884707856360 GT 1 -269052652962800796391293436897240.5052853778822608322012259649328392 1.3224769744501354942614030130919844 0.0921504734722446557707598852585690 1.0966766337969565102146174352002572 GT 1 -14889969.2898319638431994216142252696482228 1.3125001737825115036430634008935235 0.0661093113101140628501293179535503 1.0683958832664358397027496876136457 GT 1 -1231386.0301022539029977633721159113745343 0.0256209298613023823890937341560621 0.0561440615894377789874207461571894 1.0577817320982932671174304702453343 GT 1 -4784074538967648181.4023273164832305920174370156734589 2.1382766542028161190785652937665800 0.0205184686311897935444210943475983 1.0207318969373134298128961248801870 GT 1 -8.7097761269710370243972389161308125 0.3222583585722647227711238857017273 0.0194219447045233412428221901813819 1.0196130288697111681861107320069343 GT 1 -11306899929555926.1906257335452589394940141050026998 0.4134852139382163048308175066254095 0.0966381704648608234444871801181221 1.1016321086631973007483947413113280 GT 1 -99585347883961136269993300863.5701319169259733907185987721880875 0.1660522167624148189337715576643202 0.0314743168045518786773535489260222 1.0319802779575812097847839955993985 GT 1 -535832304783.8674328625022014594491925990721648 1.5128299565144956053103053822056263 0.0857944475258899816346805915824166 1.0896998395149805172608629105252482 GT 1 -14275255238853.6687753075330338357112992587053281 1.0293939870442828361627328040684701 0.0454208540487633378589072631037173 1.0464847204993350742395192808655357 GT 1 -15381643314206663708837166312914239874770.0837030412835466576509298414713901 0.4921338390798755181143628142824337 0.0194138419180307441065833091511140 1.0196047656284819302563520610543612 GT 1 -34297029028280507.2486623810887123463160341823578869 0.8435692911103160880479515079287050 0.0210139961252850004490599500710480 1.0212379329024261559832533844187196 GT 1 -17634484808.2614463792745491193118063673387787 2.7274017978645634612105283695415543 0.0651975912070445142866075974115802 1.0696928344300880566072182986843921 GT 2 -117862728788996954477267.8169586169574241421950916117666173 0.6450742105256188164585121203442428 0.0310877882917303118516804871559543 1.0315812679877994336268062561125824 GT 1 -133662759086660758691120.7918334610201998079341738614327284 3.3052650673516525817040326179508955 0.0548529795720938489833429237143363 1.0564147864168800573188603561846640 LT 1 -26238576729035112459463032977066324595160395.6959200670695879565596615640856546 0.4813747856463193972908508874800780 0.0575517317548177487125999464717448 1.0592742489698819909526623364813410 GT 1 -2510624653467293084035396223565.0225053603594648434532400213222462 1.1571522457900432386232803763093615 0.0008958397325864513699482354580992 1.0008962412368065566971658555051772 GT 1 -37595674332175.6241741646917258726926501245787941 0.4613224737622608599463735672875892 0.0585897084370456799450246647619510 1.0603762178856070687754018779048913 GT 1 -3601.9743266965027652569466519612456465 0.5975465950648952486762378018936384 0.0281518681275826595051095806539109 1.0285557296585078348443030020728666 GT 1 -225589913728028587820906333665690510.7056421060826251083099876041519071 3.9305892081214722983274623918864307 0.0905326636097747529219736561598284 1.0948961954784143428040497977121166 LT 1 -3595532511911819.2269762247336236494819259471409005 0.4258977729402006032574364080099340 0.0143147712878680331740217951000990 1.0144182160047148598708155215767878 GT 1 -13837118949884639287.4179355679488830437681874990125101 0.1871361269275178645981440613270904 0.0974638191048191765195222833025233 1.1025464999441196006816428898342520 GT 1 -98277807753125474245227678317317767.5576621587443326466812762867510431 0.5277092819580802043098252672084709 0.0208565695879005087759274121876295 1.0210771401223707263364448729947656 GT 1 -951590010.0085636734829888177487466061899302 1.6555656249891085672481331366002248 0.0977441374237319959543770536037502 1.1028571377510414078897022349120974 GT 1 -24840279298937308355333648859.5290024469112147360706820385163520 0.4992635513729706672264374551890717 0.0201796244580580578566597899547000 1.0203860143805571592902591182825915 GT 1 -1983973640166086141697720565214463.8029615515737416216526844548413155 0.5307411779159906808837153194455259 0.0145286626418112811655945343220221 1.0146352371774258141195435024601067 GT 1 -48272811370094875838891755053919652.4660771173798849901216284902514685 0.3111852985355865603600677409564100 0.0230149704969105065827067190618384 1.0232839499809178456755726732899990 GT 1 -405.4121566658906882002184874833076160 0.5402273333761162066589717628873961 0.0160005675025674084590669144998383 1.0161299586603013688565117209221460 GT 1 -17406681485737792965289100656091.7631859778298529749046128878400024 0.9867708570611931863866082502608766 0.0965575805336347892924525796158777 1.1015429015104866353623735152125091 GT 1 -913474.4936307120509515237267701363765363 0.0901071651681949374932488322942369 0.0527813266338588829271142606308742 1.0542253007665875914590893946709280 GT 1 -21922482800701269277624541930531756792446.3623508596982899709174543413607029 1.0794438220333721206106210903420845 0.0196314298818361475014771331175832 1.0198266860650624426008765851430935 GT 1 -2728786858014460082958155180853875855.2840254470185505056607853430577315 1.5219158695896275495335419846078639 0.0286304539519957178304822072831988 1.0290483001404742833931708506719628 GT 1 -2573564389453648408424993.1436476030920239656384189053173285 0.4760172452333472582459308531463326 0.0486167413678925951900058200937131 1.0498382916995220289806411055326814 GT 1 -1101768959173052.4897579679604336544034844350314664 0.6766358946648618381356244560862652 0.0013424213132028771739417317155115 1.0013433231678969447961648828065926 GT 1 -286287990401721948408578457368385.6833761471193122353674802256980384 2.3745524642878409877328158766203416 0.0396622480621747162968346219037900 1.0404702314609004259185519172046277 GT 1 -2591645713.7972064984406717545678190194669545 0.8933408467541037902317087976863984 0.0107140681347430862980798037874402 1.0107718770459355256439098930087591 GT 1 -37686940000862.2993712341214278460286753788629621 0.6703976234942010931147502984854200 0.0882193852843890935225157269503037 1.0923558718854698647205939253537665 GT 1 -48452858592100553066.0259480197522710857242554712906573 0.4184475565380596144052628278926639 0.0412137432024134734196367661925717 1.0420871102776756450017476235765311 GT 1 -49194818063003.4507461751022347150315256179610102 0.0485550427340681780464285794133065 0.0417186558890034857714696361446784 1.0426138655136679499591956462181048 GT 1 -70039617717156208064705153.9384347271307734595330748228839698 0.6209291910905874733387071905881630 0.0430232230251186796823576314375977 1.0439761543075462387853085991967322 GT 1 -20541563567049185309633534559168.8559452863054060030830222207362000 0.1231314844760637184227711064367082 0.0888873241324717266086776740244049 1.0930887056519068977140961122856005 GT 1 -2299913482773854508472729.1285507209407765711068332389590102 2.1717209739694584404612156923866637 0.0102687415142238103670381623205779 1.0103218287793443861567449203829743 GT 1 -29556.1555902671058940156512121943642459 2.7818753309033041991267491930514286 0.0801651034032980837602469600215747 1.0835610852649395156999833273007827 LT 1 -7121962.2455286311225172725307748177031444 1.3225585386767117032286032324361127 0.0666240580691893518612100829295013 1.0689472204602497329273053352043818 GT 1 -31537916625388939305972952.0968623128103680926406004848103397 0.2394726339393136324164034860842084 0.0996424491628471558482815495361375 1.1049633158441699344418069082978055 GT 1 -3124623270.5008344172354375169645452765917284 1.3689615543015856157683026893112979 0.0966088274800304472210362016468897 1.1015996272063522537405896855584824 GT 1 -66130537827814238462880189880886.3900242090735294734975830505408585 0.1979477172338140592544191707474320 0.0482150074088479122690518314489850 1.0494161178168364085372872062995251 GT 1 -1255212990950.1188249692256562645362224348370554 0.7722065122479079919077864070928354 0.0846334522725951246847630348950173 1.0884306953156301040920335705185056 GT 1 -2.7938618399400246570488078390198047 0.0072997791026178245685519784213752 0.0900367269964554108217677286767525 1.0943510396224654607317975082486658 GT 1 -3121561171614570.0609748632616898620253743194876600 1.7662915275674931390850664353069971 0.0369070884436117607690380268336432 1.0376053904710732523627485767524306 GT 1 -326712055379470429941788194314756881.4556561577089001587803505944024849 0.4295879004424999366088432552740757 0.0487619332140430668434962046717813 1.0499909146565893343192859154526004 GT 1 -1685092782773886321364054028335345550.2742474735945354153026671979791643 0.8641457783239630196132330085683992 0.0819624669266892094219975099851929 1.0855170034966697890619018888269917 GT 1 -406303781465666959948666797928464.2280071381716648161625959356273222 0.1228875983489153313985742879175904 0.0803987735189906366892028788848167 1.0838151523825935201898126170178549 GT 1 -1011.0968639266656651037748147677946457 0.3406430853310778127040809173628435 0.0617053239965442433864357769581552 1.0636912257899897428578008565725811 GT 1 -3.2196814615977647530911299982980394 0.3687898083807313785399623311950624 0.0869625879632180546836964773793264 1.0909784221875129046862826622410258 GT 1 -13840454862537346704.1716284630522745474451092552223385 0.7805608373414514147538664699062050 0.0709294796272403365158160922180715 1.0735706330678733293677572151014149 GT 1 -45253477505609807141.1803265463798715776139985364609602 0.7616023651842422949844180969065915 0.0787624410561944186004344828540128 1.0820373401083877473980911220465460 GT 1 -488226003627517511019330003488982060.5905270659070407657025296898927058 1.0681002906736637871720752921395356 0.0888024811035244933842744247221988 1.0929955897496282257208017331062661 GT 1 -512280112933573374009741.6779739730665892070059163387102284 0.0166861179796105318469630084737201 0.0052210159418617866768170436102695 1.0052346930720412142837484959803666 GT 1 -3592200616489.8808110119956214282052103086842279 2.0166972140145850131072289311631371 0.0756837738203132992416066706353689 1.0787010297646754276582204912297249 GT 1 -10303413874261324.9297098827265631497683443781424984 0.8145924365688078629579686497216436 0.0190035939799452686634299728307512 1.0191864830116044641537206244550937 GT 1 -1198816703682943576719194825858361741551817.8012562290008835582118890755231422 1.1981431975776740660102313082608673 0.0349938258894804037804902506728792 1.0356207796216292900651281152741495 GT 1 -6713655791912.8967848571352050666562207037593271 1.3366839955632757787034566536705627 0.0634341689740695465478786197153879 1.0655354648265027794521311964527701 GT 1 -840508443656756827711844295580.4972641101407795470764287244770829 0.9219634595996485580343218301403235 0.0126334361268175261300266652781262 1.0127139165288052785647070670634971 GT 1 -3676513610922882845833.8581615532695123467270054859457667 1.7142596479899605793054283536285105 0.0849941826926193151830061111602216 1.0888248560138415538507806422823628 GT 1 -481652822374203344085401837029.1578740909872549270560599721844622 0.4216953661752379201650973749822430 0.0517568916363522829644541915353860 1.0531443661815397241793260543515924 GT 1 -1503803620891471.8281889998744590873123063483809072 0.2242516182702640409562699220924156 0.0652798196260387000834251864766944 1.0675080668116637929687864845865182 GT 1 -1385087492303348452527721040709983994759027.5688777746934586136615750766752202 0.0939716965211516089935765644023924 0.0780225410758612818650458036624666 1.0812345037459424943694034964653883 GT 1 -1954959685174.8182575827214733225490049033266471 1.2275232621311399916317277735560087 0.0028919905983151746719020294418761 1.0028961804831470582244119336916083 GT 1 -23802519570966093562453264854181451.6593881457136100447282125247591184 0.3520035559040695284974820464363330 0.0195317218263055330099176315337817 1.0197249865731303001339637642189181 GT 1 -620338733308445718188991092368992283596.5170693986936449933420991486303883 0.1378448007189923577781998265944507 0.0672632241735048602250943316449863 1.0696322445997113039329662224708839 GT 1 -211221322284346.8851805115402107747478140130690312 1.0045721496226882779354299518679192 0.0975650335974785741674475870000713 1.1026586507592913757111150411819635 GT 1 -562.4968099148461345566165184234029763 3.0625843646599311174018455291433781 0.0730231019758700032166323782759128 1.0758266349521390278486966276379820 LT 1 -155260355660417394165894826062770937072.4233048611272174593907698369457560 0.4133636712732985171617179547116286 0.0073381116000812470906156778060874 1.0073651679841113232464033007230500 GT 1 -50825407499880291576933.3941006798040510893657449801619522 1.0983539706527167373737745095905382 0.0374096853980083358339838251716632 1.0381273838695528201218978387276261 GT 1 -7909611542324203077.5746297323382512967159354057223275 3.5144878244638471001837947450203258 0.0967375623798026492180348981543340 1.1017421391956650191370674952075440 LT 1 -69392659943861504.2079024087062393966152274556672714 1.2739925064436231255220872901047333 0.0293743411250477147454666242559410 1.0298144062642686958410444346665694 GT 1 -294475.5525761078160824035853337164143161 5.9785815192468810894267351129474344 0.0853829930368924109579463532028878 1.0892498729571899683238042162077292 LT 1 -31695.9882494471760131871477620158253876 0.5796218125925558542980794500089635 0.0928378896827842525733504101250547 1.0974341124042044319947045012425394 GT 1 -62123782239626184855227988797106478164744.7382327656574650031120382823709694 0.7269576820466849813453579943451581 0.0279715519588843545158567953766308 1.0283702074179718537690166448765925 GT 1 -2309749466.2286641327649180400830326489823021 1.5351091309163876758930848761008034 0.0623297956024435807215075484235999 1.0643569862586309166234228522332860 GT 1 -3790137.0712466343234843143377726196440652 1.3513860108899367083236382069039788 0.0375825411963181189557019022721057 1.0383069735846307562769757880359443 GT 1 -149568006987233484487272570063114575270.6502473670238854836346535589004452 1.4440879902339812713144653390297403 0.0379878947910450389987992032915246 1.0387282450183085308493169164115698 GT 1 -28492258033460.6379141380526208835853887973528402 0.8840266842510301740288495829041193 0.0795527433688423244955035291125690 1.0828955785588261904009126955855140 GT 1 -240261040349942.8143406860362309568462377239970035 0.1771852919137390162902790595078173 0.0623688190246645336309563475816493 1.0643986045526619062032028804515060 GT 1 -19806548675.3847593712332770853962989020495537 1.4234213909170721804405888267585617 0.0758234482521654760798476054424896 1.0788521522724675325317308412655133 GT 1 -20907247.9961609507471423173380550428601384 0.0860236967205563880375912762668084 0.0780383992459584550721569450065552 1.0812517040650249827890060785107874 GT 1 -28966602076131786540028861124272116840440.9595301428010615568549050327829480 1.1554453358124581899622660710814617 0.0960076313371022965450045717051370 1.1009343603701744679886023461393270 GT 1 -29528235251268576950384361852310884056.3492743478867366049091405880258988 1.2967116338471734106922719439561697 0.0709368205178896584210586457665998 1.0735785344268013047434988005269677 GT 1 -3240209051.9871575555999571166010080576977494 0.3642557047166961633272646156865914 0.0511882679179931808092702290545362 1.0525448856359433634875511387840371 GT 1 -143798261293822032920170171057886662866562.0422147640854384573782767392568628 0.1857594561322681538731589396319063 0.0342848464143283934040370121657446 1.0348863603174566395642488395141184 GT 1 -1579456132723.0699832666261660499201770079162436 0.4934960325049326870943309975890462 0.0827183073661445246110960030706442 1.0863406645487631823934412214996435 GT 1 -22.6049465127077363785437986825787698 0.2007684475894322284281995425464645 0.0762841055630474565172811434283324 1.0793507281732192280061946405534074 GT 1 -95198273923638413055915772234.8038150971406694338540643139521995 2.0406739228033544040273168026944652 0.0831326580486522949529881525833725 1.0867924824564069332274892302577247 GT 1 -249401533635210562304693978359.4991225928968685994793288611580027 1.1416458950004758720074141046312532 0.0488646994325085286016076898844090 1.0500989546663255842289514745895682 GT 1 -37468288056827289027765959955416952155475.1073830570238180339604371725598017 0.0412181753666308646545278094938510 0.0410619467273798250937779402926540 1.0419288013126658468487683687892825 GT 1 -61006352290960822.9220364631621547039153700240880406 1.4224250218017653361746964460523595 0.0562621014660946614922689063727663 1.0579068012466454642988933627616381 GT 1 -41380532920.8613626066651710639157913915901461 0.8037308332948524709615652385480457 0.0774348565880116396260090105200314 1.0805972893959017595150533826302456 GT 1 -22054820.8600521870582283219601373757033049 0.6774423868021001463493347649248084 0.0216419138365903112604572152730261 1.0218795346892978994529554971189683 GT 1 -60137287800.8983825168371693742313041429566089 2.3310938772213878055990610226828154 0.0108893896474018842895722336670045 1.0109491130139292808546448044930194 GT 1 -11440901872.7460206794388116138476018626109918 0.0226298767268892529490341187535425 0.0722257718864865712490091241109380 1.0749668644662089976010197094397408 GT 1 -3035751874514399597718318387691828130.1760105916387316344055713511911145 0.1055957501949057834238361934594870 0.0907369789474181296572111176399978 1.0951208745658521847987621988761494 GT 1 -12246392851262810471677548426189691071025.9550091617949398157619278493786612 0.8653082142689829116570058274250177 0.0854807924985732179256013881556066 1.0893568080897411903197397437651789 GT 1 -1630687302947373351595764249306917209471411.0464844955587162215565848011084600 1.2128534520477770305027344883732718 0.0563198775517713940806826023219001 1.0579680235991423579759949922911287 GT 1 -330866841707369710345064.2474687204955189908681745166335023 0.5867599243268055242773696605976698 0.0776001163069452062458103562747060 1.0807764361189535872610377841922948 GT 1 -785144096385041560609030901169032357.2538989766675877584157292798817336 2.2689448603872515109949871826287846 0.0420895797129297140610402350255203 1.0430010123905627775585521941546499 GT 1 -9.0024717930424152253147867136234857 0.0473615964190466092142827816670391 0.0288537427593009479905739296330158 1.0292781966570541180323197614871903 GT 1 -78241499164.9114134184574001337981481547336162 0.4780832367399323657020446132882237 0.0962977357247222595768589844482341 1.1012553265165848979994778291033842 GT 1 -75803182532244585.2972968580390656749904973522770402 3.7733931548720016405979954199709999 0.0890192958311667949660337900493298 1.0932335628808192875297911807781066 LT 1 -5775708819028683278271847060048041757566565.5234702135942175290979765079954884 0.0336732491615602975064658645196730 0.0611554954164464372906687602878736 1.0631054103091685101447336105970229 GT 1 -62.7479902700225951297528322981953272 0.2328481100162861240104755318052670 0.0945109489839961982393054446015072 1.0992800933761646639910925372758006 GT 1 -43090033488213953112150031864171872943.1010292809228880248491864311207528 0.5754035052628393864887414932929778 0.0683885322350867306327139285397876 1.0708394312957690930470679919907474 GT 1 -5881528207774081.2298153154842147598682656143565022 1.5670943262570760065477645464984573 0.0646063381039174723961784775029769 1.0667878095353271635185798326158718 GT 1 -35630738125542642171417182011594246706.1699710858342573641277512920313975 0.7912855318670096920749499166587948 0.0426263196736517295403381353331627 1.0435614931825257150852581775336462 GT 1 -6313245801353150244566451293.2650356836501126447992521068656651 0.5859680422067206299395149482135243 0.0283962713828902320824046872361891 1.0288072442563887570636321923660176 GT 1 -635877485681800.3658976456832029215699843979935327 0.3109797763065691781923168464641426 0.0290871333953767691185784867515214 1.0295185504488967500803825928335783 GT 1 -17194756.3141435578563061569259288116945156 1.4911801439150135017636637246813166 0.0854648251635443505819498366283846 1.0893393484284173278229341815836064 GT 1 -4.4285240441916779229951108297899106 0.1615189605061317712598419496668265 0.0209987726888858527266573782347239 1.0212223828149107899021735651827874 GT 1 -10833801490231641075006564462973026679280670.9255308793986702885553052880588819 1.6128111696345496572284412548238964 0.0632937141926985918181717172024012 1.0653855082020785670326278805713123 GT 1 -520734662718716074326197495101895.0010222735208014541579936746007696 1.2562502949231051274461352116446060 0.0883279032868680004371200641675664 1.0924748966366212039763656949537398 GT 1 -1878.5421584202018569178381917740255294 1.5658379935619762323054384460310033 0.0645983204256382491034592404542421 1.0667792381239049280014582608624721 GT 1 -692474983330015605424865850864.1678392313864495836155870335841409 0.8195856521369970019631862530800330 0.0380066627108403726354035359719618 1.0387477542352591448534586763818325 GT 1 -177284333267.9359571947470695174595494545949579 0.0316203197580039987792966897533978 0.0162552805463388155701435875664370 1.0163888470375748974902459379480677 GT 1 -56167379782321646361.5360406323654363494152493309963951 0.0098965415220051925982898550809450 0.0388657533288212622380162823980020 1.0396411850011544744515640562524539 GT 1 -2079972926974628788934590.1449119520417422584383491932096789 1.2546816645167574649464580403545060 0.0876422878270617619223698770742372 1.0917231375494009131297200509016476 GT 1 -32528259442675196071.2536126794811625954159326051709608 0.5234703327091305976522477340851264 0.0412497452382390197007159503666038 1.0421246605778787943143275383039082 GT 1 -105904508265831534835032991049861278303982.4043645089130144502324248630260960 0.0419437659021328956329360391918822 0.0797046206785157082119129095708386 1.0830605959893475700530595733875466 GT 1 -267060021845769976867854058721134145.2026833918635043567147497072128805 1.8477636789525582302130164619470687 0.0425300045536095147369897823516475 1.0434608947667468680330119182248000 GT 1 -40496668215870182681335214067554131.3470005792748830441758054641758526 0.3646808918762287808643672165592047 0.0769155721174185695680984862710200 1.0800345775004564895779471847469618 GT 1 -53385583453781249545503869195217532924.3390024370664576461037358154017736 0.2352910262632188990880391755135567 0.0045344304763588794653739166175402 1.0045447421898707982320708888863889 GT 1 -11810254500198567779823549817681154.6359397111156621956715912478398693 0.1923859979177856043332364131002876 0.0336900596595351250360373359605135 1.0342706470169890684196276477838658 GT 1 -2945534239248.9124532782132860644535219064085588 0.4167290922137745428412517575005700 0.0684981927486398348672025820002713 1.0709571487906205862955400054002036 GT 1 -9508059.4285893350724942198878852335651959 3.6219423649815192360525829428406981 0.0711703945023711108835268261723715 1.0738299741090051220116863957939436 LT 1 -315264298221377018133766188502059610753.3374959755388113722905074945712119 3.0147382421286756958753871750160411 0.0540638355687205108889706520227318 1.0571247705194853168414250911004681 LT 2 -456458.4312925069772734348131684106936908 2.0687393123744922737120054332389781 0.0898354142881064764655296221233862 1.0941298324053945586102244188915033 GT 1 -555.6648925598146830184542165393813657 0.2487014994537811803768204756420981 0.0303461633587807605731992265971625 1.0308161406198037524566421660975105 GT 1 -2767480.5733133512024642664574737049359984 0.3208367156329167191870157408511285 0.0409803974642106677066539074730027 1.0418437637071990799722559843278017 GT 1 -64106936029688855977812646.3430099835079371166279292323346032 0.3719026949199011287217434354202141 0.0007571304117171988904762409818946 1.0007574171797036845985360957981375 GT 1 -4342993645.8673734286912923059743733713034511 0.8143751325096937747321570655404498 0.0713101995504736456882262606082170 1.0739805028710938642977539064613248 GT 1 -270789490780997145419335148685621194.6664465660700136996178200109984547 0.0619659854154193730429007974582045 0.0283051383701645751759024306906285 1.0287134521718888821307026591777625 GT 1 -312155308999556874033.7614564064592438559133207550684508 0.7213788515516817072794330417670573 0.0549458602120451520349453365384556 1.0565130623485438075886380710044651 GT 1 -24807670291.3239709712399850343162689934429379 1.0250262918320226235854820358059644 0.0214056598064715545263330539042285 1.0216380837188148409116070042022603 GT 1 -477051875746135514172475833513303.0544169431503278124272830209934455 0.3578857886466748763836597541963434 0.0644916040712109506159684445327126 1.0666651585046433403843289425866891 GT 1 -4966096.4103375570518595691056586437033689 0.4901803587615246481923550093903967 0.0697930424614917839691719386569298 1.0723481826044297174293280160881281 GT 1 -2013345709078074692498116518812.6166092197529543959376059063790400 0.0182396780582596391697069114987241 0.0737013202125000012797839667438557 1.0765585479768684106367640502536022 GT 1 -1418194405384981912.9631965501306593626632437054731699 0.4615442448742748302452064484427851 0.0574304096168957893422521177531222 1.0591455264354676325693045877269028 GT 1 -287.4901498669337605583933220769632869 2.7942831649546583679947291070933205 0.0869590883648527732747590657792389 1.0909745892759450716006980534313452 LT 1 -87212119.6994882465613799037505054281865309 0.1332541683574288400484377533623188 0.0741080414960860226032561042138527 1.0769977266248055405058037505688646 GT 1 -680042389054959028173468662650317771.0375088621039860949462064084265773 0.6556295065318708546456582339704739 0.0898906521507091791830963451894657 1.0941905242184246898003967486946433 GT 1 -3353952148341539621261726745264509795939.3173072499248015957623837865803820 3.0844184262743735723349201592101187 0.0482674390798479644680291434944428 1.0506949072243478614278275132087197 LT 2 -2809545361235711340478590.3443057346136569110546144409199633 0.5940770377573334016916301319614108 0.0641205022391943793826812989601528 1.0662685525010111096578779122127463 GT 1 -8600901265144664911226.0187054304384481431514264126172345 0.9994449588068627553225728010042369 0.0936212777264831255088565973739195 1.0982980445289695641058448279833173 GT 1 -580100739739538889.0384935867764456416357230856355059 1.1234659866259719034687217952139525 0.0220291578765254835095340002098027 1.0222754231714376886667840180274191 GT 1 -6522331.1669533656687032594618875394666222 0.5388098536003071265760626314624820 0.0592322693221083236963115829812273 1.0610590023007187011526834565597864 GT 1 -249461.9255260979075909722935837747063528 0.2866214207687026624359617158760452 0.0771754913031927444161188106217082 1.0803161939792992948583031986167905 GT 1 -1110127101663262808688.4425670672771076892383655519116293 2.5092636023299030909396219726944236 0.0309789516818765308345025595837406 1.0314689456367534279260830387401141 GT 1 -3298795460526.5511015772771436596839595244793129 0.3851239267667834887079255327398378 0.0326979895883346144082685882651680 1.0332445154212836265960912777914801 GT 1 -440435601855336.8540364265442272910295664010287225 0.6416208052836675892051526280231491 0.0073342326177297093810516752283566 1.0073612603345702056769191578916693 GT 1 -30559085559729353383801500039958172984818.9726830417556887928426441361677876 1.4856191569407478438782776008125971 0.0923400944462100738263736515739094 1.0968855238983287971069883492852002 GT 1 -866893698953118650552992142583341584529.5302680139253046518932443758754948 0.6075567325562909511315139330745685 0.0010394825495314812308720491306206 1.0010400231862042680730996092864929 GT 1 -523752945170281992553330719946999271.4006811394705566123556103616633996 1.3926582910283969606223355163201809 0.0152169897941875163151273325139073 1.0153339562856782067526409564357129 GT 1 -714180118336725.4413931421397410459015996993532155 0.4840035085476990909499000879747525 0.0383949010998664466445339631220574 1.0391514126984743898142030203652454 GT 1 -107064520853631676409776840356980865.0688299181224764263929047671400474 0.1317958298138425023073031772077244 0.0205929745057232429755113498068696 1.0208079664761428250008698079178424 GT 1 -4333955.9264465816095623432684564338180117 2.5606556949048580296915944919603844 0.0410522272347070825630705721238495 1.0419186656804599351273822349434755 GT 1 -82004055012354423.5732090070740887293378657307275175 2.4496372463705239079171315812393348 0.0441108259386822723750685325546507 1.0451132993648594412737915417587654 GT 1 -750089857463940673189668777.0772270139173812207563905772590634 3.0712753885889092123144176487823551 0.0099499694744592241522539055152952 1.0099998012460116052260380933581235 GT 1 -7.8785810540284126836551618673391428 1.0963932040365746932780341196019338 0.0868637242434521817682416447983965 1.0908701480178396797238272761552479 GT 1 -14986001229631839788589.4766072941826487408929285935595043 0.2448001745950113804926506430871324 0.0020822942136051523504955484497498 1.0020844652024830871810571342780907 GT 1 -75522947272962301875012712.5556549285093647132305763796681031 0.1972811051294712440732720501043506 0.0856818933120509881722509431931558 1.0895767301273418274816211718777846 GT 1 -3359920130420357477239707771.1701379013315077045680912256902278 1.0547054866732896478262608771906496 0.0979817502352882701289408253852307 1.1031205265690759946091282245275319 GT 1 -1679431165628019.5338249155459361261693689082090932 1.6046862033567467336733431092164975 0.0742372566544165025481605186255973 1.0771372938544960048846099924965150 GT 1 -37153191974373913887.5370527296931985507569256639791764 1.0822069372471054298574245226961901 0.0571575719320279661670952681814007 1.0588561067392927240890708936578826 GT 1 -720786124326657991388086639.3392297711421256513213371987340852 0.9571407533318963389347680076392220 0.0599976356645012897937362352846689 1.0618728884707201663366551987865938 GT 1 -165705316975583532339001006.5327660473604300274457008038111223 0.0159758814483848260891676585822017 0.0617932577629052770513730196837740 1.0637849467598442149705512051052603 GT 1 -3467607.6233403371485591183890447220720075 0.1103433504075526084182406691837743 0.0121958636309459211131250003502050 1.0122708434283624665203293142947370 GT 1 -4.2684971259428589629636345295543913 3.9236055019036694744554414585377685 0.0195202724819025217072348463033027 1.0199076164968352971158196969473181 GT 2 -24448940376625585822585455.2659132822819220649154728544686577 0.5917920437877950315026315372456237 0.0192985292342185281546129702128066 1.0194871768747988900234403080769287 GT 1 -114356203487930715318573021332716.2970778764278018311044207229035184 2.2069258427228005027477285190448095 0.0694957860736297600010764381529309 1.0720286742412302821447747387645963 GT 1 -1244186436545769040287828.8733367586444940233290137450209599 2.2657617265757837958934231445506617 0.0487531567573601456447768155922970 1.0499816883477374532968523964668648 GT 1 -877897499185434560412506245167286.1637595794688539670597457641891062 0.1186115040168814197360823374328317 0.0885290703405546919128484169119299 1.0926955782305423932307739162801692 GT 1 -783428380.1017373435624202627105176053652694 2.5108067794256820872590358056866078 0.0989080686464821075126500371050811 1.1095713963270540169027245763378787 LT 2 -323048218513380222566302583805.6826061714663799649399076301145682 7.0638438959862668297976811553895618 0.0940535304373286806691723801038662 1.0987750590526201961403039577561016 LT 1 -372653.3175075569201710789960518871401068 3.7856886962765475510875595638024846 0.0502519284308345689964839232094161 1.0515585173779897531008614420865067 LT 1 -1625651752884348662265865084981707492404.9869977970526279350237164428032026 3.3373270457428713173939708789422168 0.0714327689466885110708058487794826 1.0741124925680650248363257301578265 LT 1 -626783807275518267476901224089328905.8848656762121610623014204480759720 0.4736560692832310794547857085723118 0.0359717777217712111446610321095420 1.0366347085779026336670919486975651 GT 1 -2290324403877923998491441.8202794854486187103491693087412683 1.1692017608035167551241396216310966 0.0365769668865631428017763282847170 1.0372626769200194806997396824288846 GT 1 -20378210596783804369677399933309.6371838144742893909466983661859571 1.6868256738921453780024260056622774 0.0229162001033232299544468907925454 1.0231828579495775451378983845010018 GT 1 -236321771537884577371073245724043994.4839667152611318090885538879997544 1.4209276434786098324972987436090069 0.0702101360704425284409496540314102 1.0727966711299238537268123040754156 GT 1 -184495269.2672997659138199128027988210745638 0.7232671542467171715820539393617761 0.0884158002363214977337454457803008 1.0925713141832836663981282872905669 GT 1 -14893905251721138981956056023968086418019.5562659299319482835426996876204717 1.6090898415860094209793069475356005 0.0553605468117421121992838445944843 1.0569519553075874954334535639912101 GT 1 -3030813968501188331779073553761.2342908961787228517640358089190170 0.6388967620406856334065154226203629 0.0551720296049832594940494571900943 1.0567524099700691838319321862387880 GT 1 -12319672648354223927658505.7311150693754478209852356936811561 0.0335383801273683780997711209581965 0.0688721838998931066507430534232055 1.0713587220841948550108369546834648 GT 1 -4044951806.2234836045426140336594215564379615 0.1682773728838263226565330698465606 0.0767867414817914176458997046507018 1.0798950218515650188690925660414815 GT 1 -5742293.5565252442619516121799877619672615 0.2831721299753564280026571617377432 0.0841120657783577252619372872476610 1.0878612643452596246956802806480182 GT 1 -307456278030031743745924358.5313861842437160747202277641078953 1.9690721721783855830306287950860277 0.0280885736976838140197530291905708 1.0284906038772299769160838854409805 GT 1 -12522154168063667.6024599140444512040530341795520303 0.3471975282391879912285260892921594 0.0519278456298173356362073217206688 1.0533246674186681098649201217794846 GT 1 -5019609508.7558460643958595836974955436940441 0.1155509357587225643898336764615746 0.0177328052424808825808781138849669 1.0178919152170017233547890974912377 GT 1 -62357.4222301213234129738833936649715774 3.6731636167422951514069035201445850 0.0343374512897195752251902649524475 1.0349408342562845088088011484648774 LT 1 -337085605326984373132732619285020605.1505499715569365704685143658506703 1.1692071634446638357805708509529349 0.0435907359375625583570430096245590 1.0445693570558824062430981331093176 GT 1 -800806198.9057296129980920482723596850862024 1.2904103843953442691885875182888855 0.0280935023527362447905662282840113 1.0284956749849625642978132856450123 GT 1 -117001.8823057036579770242162872820118225 0.2429619753878139520945138752313587 0.0133556050837517575445649053289321 1.0134455933069270383927277652817563 GT 1 -341947736937116671066619837060.0618049018395981558405110961839187 0.2895509676289772390376446927172120 0.0048383259764760800043167581414857 1.0048500685672357003953134628844789 GT 1 -983565058328708664792.5853835972476635642866713326889140 0.1774783574001385685302321985334420 0.0017009652637909826234239484501329 1.0017024135477587808667767217820573 GT 1 -2777280796619863881841341977.8935825539475047055933682990010831 1.9793233748103112855260841244421405 0.0350983405105555454680867996141944 1.0357290901008736360670924742380212 GT 1 -2853004998546758968053076.6500386638853399186516319686383905 1.0814571354492302036092013064819160 0.0342020588437628497065837818368825 1.0348006372945668543104591678527789 GT 1 -2071716541966353182424374152409895241074.7274137866396938894361699545770720 0.3334633447415384047240880222040370 0.0430071392020040637320200840926188 1.0439593475382040564130776647429202 GT 1 -448182554115.0894726216427220677343450876446719 1.8733654490102831544963923407779645 0.0456641525697797772821686842783472 1.0467396281543929654962753938537318 GT 1 -758374824400261.8331872150008155825186997694325241 0.4304126839834245127236010691065499 0.0356933734915171626591645159950513 1.0363459576564912454551061101091921 GT 1 -101904.4287249592201149452471460268219893 0.7064480988326946797630967212166327 0.0720888470978792348088981186623441 1.0748192911865392613168475042271271 GT 1 -280881588967439043101826659025642.0575270076632768100780088624399436 2.3764555542696301597504625987648212 0.0269394917349099894016264664871345 1.0273090114068776211714253642978028 GT 1 -107970105169766153.4722149418966268133203627113120961 0.0395346174676963446870227842902249 0.0854116531597316007427944304153837 1.0892812091029998889608524193264647 GT 1 -1765111918629283505.3698646050315587570911258105747369 0.1531281119447803258516778380742170 0.0388447320983021332090975296991579 1.0396193139662654995831340337192274 GT 1 -19514521439552920702403.2422608376102770126829879278176062 0.2604461663347569160994933634036721 0.0026856195405036426691259126208383 1.0026892322864188548010333667077289 GT 1 -69847665990791703034.7792732870921018319556662483120439 1.3524127167643281965688621169612863 0.0463116207901508426412828252269851 1.0474183074250052793725165214529160 GT 1 -2673199517157487.2042406461890777128646896459711887 0.3900270491300433493866738771664767 0.0087275946762168829838757121872592 1.0087659031876094145696708012514469 GT 1 -281208269892404258262767198247123089.3687186520994149377496208514458529 0.0713881466146074492760885648348266 0.0514606962810653306542637898854857 1.0528320527018198121391013464054537 GT 1 -459130839050325486560919231162853447996626.2454170088948971280751686932699327 3.0903580823698208581330740338091496 0.0326687125231040735043895307828113 1.0332142491529786940598441007495481 GT 1 -153178289961519020340.3347715765335370147937852876346883 4.4265476975070465212377321125927162 0.0474683614422582558347367193781439 1.0486319561993440821009718928550418 LT 1 -5333419390058149.3032718487722180411906936397599541 0.2395097206900612507773568183736371 0.0079891682290500743910865800028217 1.0080212526329360016471688321501471 GT 1 -5330898916861913314545118.2140586906333960490217174949996333 0.3950998994556457119827766241275412 0.0047285910483201017871178739407036 1.0047398062035262612867891161670427 GT 1 -57593626522.8769048904000425557225280903598023 1.2630324822452509114167424159476231 0.0467638482369550885090058692149135 1.0478926077425446534906307176451686 GT 1 -1316206.2347469222072388890249537595619544 0.0704410801164889222006927254402160 0.0105876427419064450347333877091556 1.0106440906181576045515802160564567 GT 1 -608100389239956092.1591378057516735504802279884677031 1.1946802316944009519828700544548347 0.0485939343441127393071706226066044 1.0498143194988271546253259798667616 GT 1 -522.6812150130300920416242368278943609 0.1704141862313312656032513401023541 0.0022727336748570019584943967520659 1.0022753202538486857582627984125990 GT 1 -1478136109320784061402937653861.6760175998376649473738312960240679 0.5087458444794139250167326488439908 0.0913107984387615646692882280108060 1.0957521557439403059389323934553844 GT 1 -64.8599678081134203470640800040385189 1.6770681960826914019930208129075824 0.0725229921867180911650902715516280 1.0752872742274517354470836477265031 GT 1 -37583816348867520994414767981138.5990521538311160722885463146035703 0.5854830331108325321126087427310484 0.0096662244638051390018064496231592 1.0097132456685248622750026306627553 GT 1 -6516028353040697.0820462114794743132676966622276454 1.2886027173118573994129125077803251 0.0776012087244146615075096365995252 1.0807776204405646963534387051757066 GT 1 -6.0430405847840996658759514067346680 0.7788014854345802645724012818019634 0.0870043895926979454585231248438455 1.0910242062768184120784151744059472 GT 1 -914385.5212705853608629231875094331835256 0.6820933388304745797037657648856531 0.0482823811944541778043925015103964 1.0494869070925968077006723305297907 GT 1 -14321223551806151191645059622332124.6692931263719103237113554609612836 2.9386431560848353109502412226877038 0.0796277424339324405840336315338096 1.0829770629895954074433303003769252 LT 1 -602159445365707468093305539793112813853.6418395178907976747935032469518141 3.5241230329850052229138979187899608 0.0702608113143851987317543911594969 1.0728511744396559035925955258207538 LT 1 -34150831767055433695366.1307720713664324778920352234257727 0.0869550335291559464559063257712566 0.0650801454974577647028740416958178 1.0672944704769519343486044691424656 GT 1 -126434268746219314200033572545738.9227416186990715957795418669691481 0.6195802409757514439502287398208793 0.0196411854602287195781315518614869 1.0198366370439379220374824784789518 GT 1 -20822993604045779249803875835622669744.2121965707768341434673215858127957 0.7493990507323791085594559325542218 0.0466787079693643544633376840719434 1.0478032946532123780859837862299701 GT 1 -790739382202134106366909063.7612188309573685345533421973550114 0.2572446002773607832586830363613394 0.0592074950445503213635511579251966 1.0610326685410119917029175019745455 GT 1 -236537011012770729.4244445178579866525075785077201886 0.8666980651147133269212591219798277 0.0402244445066270210450405798384562 1.0410558182159547422229271517832531 GT 1 -369067904624196024449110337395419027875640.6776051069256396936844288634878491 2.5050938736785548044467598063201392 0.0245295721846506115027883082424535 1.0248354342781701010085676558662386 GT 1 -6.9159762168041449914828011359474819 0.1405325211961605388000210661373760 0.0395867605617699982145358053242178 1.0403916293924568709715939613827043 GT 1 -9357281017435902.4491182376340996228857197665964639 0.7895845318893433073668662244211515 0.0667083620187765739688553700844817 1.0690375460763923913513657475281823 GT 1 -23987823917799690494133290752.5017665856240406440205316426479363 2.2199099104857392450301640247367999 0.0186527354187287783068040330557519 1.0188288916577436877591771184937578 GT 1 -423723534200369751358908127584469734029192.7984243436266645762191179493272976 0.9310793397925978165673811868567494 0.0252882995041229441637142049211547 1.0256135435088300736441712525791404 GT 1 -13509131383358.7788087245426534149907948200042827 5.3083422363508932911689145166822261 0.0128097006875782507768644616230922 1.0128924523456412198874302309051935 LT 1 -25464670025909002.4572705698314104322847705479563942 2.0971063000504456070226397284454035 0.0791565714838641181676434807833059 1.0824652587898865615529079801723066 GT 1 -4134192323185601969617714122976931935234.9716309466531980189922621258143417 0.4288777187848572662479727548983183 0.0438027366691571435173268329542218 1.0447910448201208391550346467103761 GT 1 -3594762292117278670619788162584043865722.9463986434404085805458349586815093 1.9354925269846733299269803171154059 0.0042188897817758460091074086016949 1.0042278144074575225957953882006258 GT 1 -376079719364.3524970480136806534830202909381619 3.6324012256025384330928672091914696 0.0893461039402422435977658500741614 1.0935923704183360018736399171468843 LT 1 -1166003104126359890497649.3435988167292407254273285431037532 0.1120680613232146486492675312636034 0.0264311719832559481130882033615542 1.0267867550597306957578381280694007 GT 1 -63603254220592520005774952101177.6483134516751381538003689940551093 1.5253553037840624166209341240668746 0.0745141799453397574014959669859381 1.0774364684747643210905454060870854 GT 1 -4132194.0972353033348302147992570152892979 3.0835521716258576709777541001173225 0.0840210022389413562483684190855751 1.0877618427793134363268690038759003 LT 1 -1354583021973612196418892930422864556.6533005866320855599342636943554729 0.7776119555396713819331515675084903 0.0722391391412610968717598223551290 1.0749812724446451917104651643637859 GT 1 -2774062.2331581211349911753925383807370103 1.1773961893121318942885724005517536 0.0990687888619867573479752451583708 1.1043263715270069615899165234788849 GT 1 -7118.3127298517160228940837680462664494 0.1282947805131821729757348877553587 0.0306892205344340294976599980055419 1.0311699966689375636527228386706891 GT 1 -47332944045356441437574448156.5536566401661150812524102379491730 0.2691563934510773320994309455833850 0.0263489436114137504467680130608616 1.0267022978573884058105242747360587 GT 1 -1291473892610735435803963480701234498028.4020238061418066979052552667861627 3.2636893845194705041165790924523399 0.0271002752724508675761136996425997 1.0274742599409234489652620038936157 GT 1 -1782560276979628571.0270338664979313562240236698448151 0.6475570560678351582918558328606933 0.0949059769350449391522970992075280 1.0997164477892502959347117989645509 GT 1 -6565487387288046115.8803488316658781215871225407538087 0.3353476370294673896896803998178999 0.0845423534085975514046111924891546 1.0883311785358590653514022334318259 GT 1 -137.1448717622978672335265260687427211 0.6322655133156573417442652103640184 0.0568915094607895671130438072182799 1.0585739546743810981864803588031094 GT 1 -883228.9773915857912249674095118099392890 0.7589411866136461776995810974672735 0.0180858182263846556049458315756037 1.0182513657157414334154635060644363 GT 1 -429963440575080938447719118.1296136560631992850389313258637448 3.8574868240583991134284310981443184 0.0677666177309369744196373224406287 1.0701720854839980719535681250645139 LT 1 -7367015772102751049338787084374.8117172456146178416126226841539793 0.1972599937346454370986572959748175 0.0697925181529068345033285002119541 1.0723476189573478095596829735214196 GT 1 -50144085360957601114635717.7389094783320224775017808253940719 4.6874523022428369487573355685092625 0.0335099700376393890786972598675949 1.0340842959975520390090889992179848 LT 1 -834574789567175594359723491.6635672664177710369213260327661863 0.1297431794535659087323763070984990 0.0519243241419097783799684531034853 1.0533209530585834983596386425193325 GT 1 -514909887486634148171387310478929414960.5745362724094982443964209401833936 0.1446354837474786200477824316784115 0.0439614035995836830965386135409730 1.0449569939419127158978881402464165 GT 1 -9764310077576.8332151200605339191756689614068679 1.4682725763865687663728760845457065 0.0881983473337433688165527638899936 1.0923327986729003408832811187827169 GT 1 -203775769718094020917.8201452211147268931723637219288070 1.2104058379657456815454890531490365 0.0628836397200115236749669434426705 1.0649478205905110017238384459447674 GT 1 -6894798479792615186378669740814016.2335824540555149479002292265078834 0.2569289496850314182469491797472714 0.0725409923840686747577856627151660 1.0753066821177524513308254289908621 GT 1 -8103949851165848328299047735836144619407.7620678150695136547629767008860109 0.6135552028690920453139551518268939 0.0095713646917458400222696406538467 1.0096174645979507511011243016531457 GT 1 -239197375047460310462303345632111023958738.9875532087408702535395059230596620 1.0422498039842815924822674363840603 0.0430320980525655804063119145325262 1.0439854283764832381489023485571914 GT 1 -5092507865723647253723086476758001696422.8247499582188442348749496742587635 1.9474698848390935016850374166467225 0.0085646995195144916519858565389575 1.0086015873314778882881602539794425 GT 1 -96675095262188.3017323462317352616459001542510557 1.1775831081351130919620516865857651 0.0824332827702473340198668464707580 1.0860299853704097375595546712092271 GT 1 -14968837.3462604393279248443970164662359567 0.3561495961527791983506306533152693 0.0960220447330303703424467943622099 1.1009503046539247119478354302941571 GT 1 -2070028.2268761169432353329398851937291380 0.1602250126775917850697847341689553 0.0284235342867096288729136819420187 1.0288353043445892547385357221222543 GT 1 -2229841226898831.9883322822998706637939357166848869 2.0657021485927979865302456310934549 0.0953154860461633509882743656715815 1.1001689994244156067484210887062688 GT 1 -7562421705.5435850726255381224177902927998199 1.1116866164222892117860473453979220 0.0099976318213279069032156141658826 1.0100479437566937261277613675059248 GT 1 -108194637467732131095676503290796.3306980953456914160656045553185819 0.3662578590695748138641544627000345 0.0002076988767448175138248511891033 1.0002077204491436117482762837893709 GT 1 -69956361601409194948500877974624695505.7036755253283315900550826415119529 2.8754867301484901628497045041354501 0.0386090386376355090764270036932126 1.0393741251034337094061925164602449 GT 1 -663057142230320591890969.4152325382646447026446145332517097 1.6343950716491679503619826574183145 0.0721555385135774826656119802088223 1.0748911664002903274128095790477120 GT 1 -9218324611077885182615934611817.8859984998746353828966386335038472 0.8077858248163225816320060314910561 0.0661982512786673223523437454558406 1.0684911237534014208841852806939104 GT 1 -415165707891.2313378390466902581548873184910978 0.7122356527040739629819132276821128 0.0418044184392133253990269654126640 1.0427033657305693622456592701332273 GT 1 -61863730868631298611717125568852045.5822598980465073361480960557229263 0.0122228434473352677001900315690440 0.0051991407293661842612838934841276 1.0052127032910632522107312852739815 GT 1 -9275999555538923263370441280699430419725.5587011643960566428618805307004532 0.3778750867919128482502607848124432 0.0021783206488812797210774849478444 1.0021806966403805911417789862960826 GT 1 -54869164664535642325629.6487287189130975380867825807394657 1.8827819833090789145012320294235315 0.0254548702419576457362782352521678 1.0257844504264356441315809922305596 GT 1 -10878139750738062324309522227740.8154331725225594316164579489686964 1.9282600009614544640925400572984358 0.0003504403250566875514065438693489 1.0003505017436168463790098025880389 GT 1 -218512228689315837057157.2851570370479921148062106469538083 3.0734191592850119488909670531732612 0.0057401617348289944084146571385510 1.0057566997809392967387956965639011 GT 1 -507867913981782620557670777546.7096663251260364929606758872202938 1.3283423945352865816598339458571672 0.0803543726855522471428321190969229 1.0837668708445765981542202102105478 GT 1 -7599340795084459238041114.3088484660052115434794649017375885 0.6206614694610651976184739103459480 0.0937838125953119614672319534148445 1.0984773839593040786387783859108994 GT 1 -281941156797700774433994304421986.9303555458196393990877875730218524 0.6964006029416318206985014224496409 0.0496733897277500703976970033769334 1.0509495531867481026901873469016180 GT 1 -15131578221125930958343.8355585004861394844081282141277107 0.0902633144428246089857019560553352 0.0022100614947196757181270956353496 1.0022125072848537549661640702873849 GT 1 -80958653868755807518033454975078330525191.2095574269024871044014729542607588 2.8913422886900382352144167190115371 0.0260253821708309055957487722680697 1.0263700354028081430298872329077650 GT 1 -37916252810730279251095092.5266093324235446199536664025671429 0.1651955401500104485498398308933711 0.0037141169460127722836012430200662 1.0037210314044047164354612236412393 GT 1 -304667.2053073710671683143155758524945280 0.1984316572408136246107961931437050 0.0354963176822836235831300212465902 1.0361416287921986707790523783061764 GT 1 -75786016388853.5947372946864191191798258579541285 0.7722453168397401114560498090448815 0.0775362197515221046937881334627373 1.0807071664415269781744524294739106 GT 1 -10969777145750208642.0167601412770750489369834574664616 1.2622647282661293986667174197109070 0.0293535578206078843385868014659208 1.0297929942175707222550446087185639 GT 1 -497285797839822943988670421.2379821197237514915286384321799462 1.8322215734356335695124596209507002 0.0377506411633745149941092464198443 1.0384816531353385785166903358074280 GT 1 -445758449043892973888372780942373575860.0598308561747727165067941733165455 1.2790330412866111174556296787600401 0.0120613187873383411266506892222151 1.0121346467102286357309922378339765 GT 1 -3223683194115954702764691210003114.9109623204132535377886097016427103 0.6036706172980668399495257971500985 0.0593440716109111179872683626378781 1.0611778509060241525015603407929886 GT 1 -62804423206426529274522.6457367806058584748183072526254961 0.2907968675859875946318044740089638 0.0936413136817898837620573288425531 1.0983201502738089555091490766305624 GT 1 -63025948308734249002208464587388.2046444349730830838717697460510665 3.8239681868391690229252530864168587 0.0570177470410020233680821124194269 1.0587078162935382145580512546229579 LT 1 -2328305883102067083670268912211058838.1360631786899272531729844418174001 0.7172312892226856851361975334422784 0.0430048614665798588378141462996712 1.0439569674444678348530043533607489 GT 1 -45558.1224690464210214888792825391143049 2.1336361525697330384612029709320300 0.0306614082440440015017055906070091 1.0311413042289277316259842712353999 GT 1 -153388804182.8525916766710986971353856022000615 0.1881712560934159423274851346889447 0.0430775022169062162943748033162356 1.0440328753612798039118512064040501 GT 1 -226921427911546447003979069551597652281741.5417985808102169305890309435837150 0.3891767384044597409869649158790812 0.0265827638206195057349145633711260 1.0269424745489017400276974349428363 GT 1 -16612.2987563212971779190105292714663817 0.9806768172473396163578320464341247 0.0927609349948375797484717182589704 1.0973492858630409057562812707675308 GT 1 -10.7154920515726320424862733735653956 3.1114207128088731169882541873957725 0.0700475721907682028299658416301452 1.0726218470364884375568394288394710 LT 1 -108848420388632331299106569725.6103849744148598969876190114017389 1.3488798704671407832960042101231413 0.0081068682201676634485860499581875 1.0081399075612169266837847697830039 GT 1 -83117960716336514011254.2575666690434152803899026289407525 0.7741112707456728389106213487986856 0.0559073582098204237828366338001880 1.0575309801622077574827746148384352 GT 1 -39496161451315471791933631479.6716077139513926674665191672794514 2.1114529955052931072089830836998477 0.0550910456597158046921974288378270 1.0566667007432905680384830501865922 GT 1 -15096432.2743968479608586419907971007804641 0.0474536710954396406993281990426265 0.0810819935506031471733918014022973 1.0845583810100947801786202849268863 GT 1 -3421957843.2419572960106907876366194518261891 0.1871405770285634313407866769058443 0.0417514780729097669531202283986080 1.0426481171937394336647574572276602 GT 1 -468882116000019408427147.7355366435903925579500150278304442 2.1249075808354744913447703445033665 0.0531442839786473632471273751292849 1.0546085564098346334024622701359945 GT 1 -1137517364710471191932970349671463249.4789386181479630975316039935904911 1.2146327891554480705937472759663389 0.0959791969311750764231805993175735 1.1009029066104628284983301261167345 GT 1 -75651249418.2025193523232167982762560385929116 0.5256794085491595596224919258943588 0.0414617631912142663909491457221539 1.0423458249511816216408846170632467 GT 1 -452989192575690758.2434774092311851486276316780393376 0.0528611985757527316832536623417291 0.0712367902755720414467985902100450 1.0739014599294552494202042030773626 GT 1 -2216134945956214881189335919190484352.2240379477867998187765481077635238 2.3441724869732605467642073598172065 0.0041353162660796685612305496414828 1.0041438903322037699237688169359889 GT 1 -14276998935918230551455916088682991440.4934384939286510367676972220523887 0.0018622503424387243084929758063231 0.0850447913858247347736483214896541 1.0888801672390550370661413394614191 GT 1 -96.6813164117532856365533712517653714 0.3868249626666980527143780966204299 0.0871474361664608666902355343239650 1.0911808968232435770951092873716425 GT 1 -18.2655441038960063276745680842263863 0.3214013503642302636559283634093941 0.0531005122382098245813243588425965 1.0545623289561934330281151435763783 GT 1 -3651192669151736341.6250934334172668641421164245017599 0.8482391485128804244500433779609590 0.0465177168694696734266982944990557 1.0476344349946986689024956414630230 GT 1 -4.9856859670129549222272057045054293 1.6850609888831546306612866276130557 0.0440161300093603068210969222738925 1.0450142384678045736915449191784680 GT 1 -2369927896507756914827657040023468458811.7892305230424917419462100564171998 1.0159796005508282248155969300783162 0.0335710502002729991087075265328309 1.0341474959177695524574673810720464 GT 1 -161885459878909929044880384134163424.2230044067142561758181480152284458 0.2260741465936147987140152774778022 0.0100328209689574050433918687326008 1.0100834888969538818250672401578153 GT 1 -764459221291083913445625.2737996295083482728530374694546808 2.0604139789482210649448998410883847 0.0752849338759074589663713360859060 1.0782696255453400457187012774434883 GT 1 -5938242458536315911916922.4113551112862039973600297507971255 0.3388787300985902513633872922726878 0.0353011712259106720269830901458562 1.0359393208894082078568949609158922 GT 1 -1811877773503977361928477335696.5633750871341855097497782966583846 0.3737633634938726871997555552082624 0.0971257253997063700625690306525769 1.1021719660446000999114722749853096 GT 1 -48822754629.4481586335661222285341155850251501 0.8959436274914544565824137128869817 0.0598867545948197008525075164855385 1.0617549371391789793955690081529445 GT 1 -900736995799415188861366289787152559304.7292721493734864349151602140349318 1.4290257754187908075612333958282636 0.0980137308033462223810301692224658 1.1031559816554964153547978381485579 GT 1 -41755864613158087888638523769.4048379076890312374600567645231733 0.5916965974016908009486082134593009 0.0477079104401615063575053216046166 1.0488834744848736658688404962701629 GT 1 -525365403145550422843922745395093.5827254855112919320954464029695067 0.1066167385268692963068504424445304 0.0883141685086819406138962945879192 1.0924598312696146887946439425336772 GT 1 -5155574885384.5018082224649380589175714513910896 1.0569800630063637886931109878546590 0.0723020537400603604973653120898775 1.0750490881229906192256356864412300 GT 1 -976153150596397758.5679298239121339038204073729882536 3.4473706222860100688876195373716294 0.0270278848315078307467879966589866 1.0273998558208861290685168533297587 GT 1 -540690043960314.8035098263148160813226924084212198 3.0096746354051129109874204611570896 0.0315530063621823447084970163245305 1.0320615280016472977261232359201260 GT 1 -480871123292887655503.2510265095064315818285032489533323 0.8199388688611049381613612465859513 0.0965373053754284214686053416494030 1.1015204596478242240011996891061742 GT 1 -13653200209986626498700592774.2627666521078119959756585175729017 5.2806047562590154018571111145421483 0.0083402273692572621554873249392385 1.0083752016636805771909548735643871 LT 1 -1077651447816317.9644673488379220523718012090067068 0.1577131026656849206099934203051550 0.0836316582098170015137434137908412 1.0873368752782508363628077539426518 GT 1 -1.3905069941312482502786172702292877 0.1339215622977375911685682339750301 0.0002275417201165122778374512848142 1.0002275676116613879902991159571923 GT 1 -10951576267900720406914066935079346167.2794710593083105538470189734249438 0.2303498544034638822510383564247978 0.0936580743370705662631857232254267 1.0983386427431890392491309118819558 GT 1 -1162622203326038795460833619356.6245857218019911200397451613435939 0.6689126587613220031432350497878161 0.0224804005099801555816671187493194 1.0227369366944510826424899411570544 GT 1 -22755702.3050461467415318937878303582158792 2.7325372119600471026700341668861633 0.0805755069462689870521321461289890 1.0840073557062829117378956354619981 LT 1 -371084204193818749654567619340255162624885.7151973864462860166653286368420673 0.4217812896914098391482004375570095 0.0885986993095997330013137519563686 1.0927719730188546182049790026485445 GT 1 -10687497915335.4040938840896252012592811950186892 0.1915597286051622202590652953935575 0.0692021628617371055255746330410868 1.0717131712156355224353722225363413 GT 1 -624706851655488110184001152159098561974.2499054386985826018397515251497526 0.6831052525853551619883697187633294 0.0624648810215106714682232829676540 1.0645010615954666293082849631662115 GT 1 -156143778698.5176127189251409610997640004374076 0.5031305890905794781250446773703194 0.0323388819302044182803208419022534 1.0328733376381338634808801124674204 GT 1 -393770094708175105568693906440613.9173152683103134023401150173275862 0.2670559973091369235112616760979999 0.0590860341562005876660759820761832 1.0609035720103859035466244376200556 GT 1 -80.1051090747403796934931694586986260 0.1310658075328383076257373971469965 0.0124332059633560778015116816934296 1.0125111449635313772396565699901315 GT 1 -3559374028484274312752736580934070171.0947544699660565633813441118295691 1.8169822780047852646740133830451493 0.0887862572361181036990397337755211 1.0929777849129833543693467331978589 GT 1 -3536928944.2706086276147470800460822083655587 0.0690531873106967599101485254079773 0.0334636556211530414774787231171836 1.0340363769240101745102863374685219 GT 1 -14838437821802685018167003926391268763574.2596467865134051448446765337209939 1.5522469255457775776840013233805415 0.0519874250380185995989605558972211 1.0533875120872624904156372633787428 GT 1 -3276.7044285639612924935895516823920275 1.6968600059958558262772753544498286 0.0508098773819610439875606767646206 1.0521461604817943065115375577359131 GT 1 -15717468093998589717977231677832192.4270522010478727327319247627658243 2.1991900427287088566576256312772633 0.0076905664682665802571323645341367 1.0077202913735479320140267227397597 GT 1 -16058261472682536363208327813407657.8129205747276542352691932006993404 0.2698955770985601200600419602920295 0.0159812288518100252233814050383814 1.0161103057417234998955823624180427 GT 1 -3557378146696305142922.9426711162883550554606576800693570 0.8421489461571182840856631050774787 0.0273847122605793017794677691212055 1.0277666627117397570306539819041524 GT 1 -709636355719071832907334969.6994334838409181203884672642828890 3.0831800615876205264548787229173613 0.0391538555001449036554732016792217 1.0399409822049188178018651317241239 GT 1 -922593947287396.9425661131031936178044356611218370 0.2186038781713522810958079617052834 0.0531172259765193797691719152837005 1.0545799801282919963302947992651953 GT 1 -5614205885753200031748361598223069.3828746755664831513600435336809093 0.0139667745107980758819007980064472 0.0411244536337724890122067204922304 1.0419939869036185529675883655441029 GT 1 -40201857.4685271393993484246848283690422744 0.4329302133636346519150594795038807 0.0861852301753807947580011616303758 1.0901273869012723965150572174162677 GT 1 -5378908851118151802980085991410019546000.2208226174864469573405047481458933 0.5098198205275299839202730145602597 0.0905205723536306658479679202992455 1.0948829006900419416962901940700218 GT 1 -8153323934284782808286186546.4458978829942552016705395997122950 4.1113956468626761370948944001118659 0.0242925671071429845146728579194377 1.0245924988867371278546409897416339 LT 1 -12559649980258768775396485901633.0191857030507642509841489776682032 0.5933607128329290252176295249519301 0.0087107341218708107196398296921586 1.0087488943302392857823705712974964 GT 1 -1927653650351451734237950.7758840756225104006002360773618029 3.8792915400109583089236565208847570 0.0176113742174490049069781332484373 1.0177682996463587926273836004094088 GT 1 -4017463761730607904800.1164746589069242829893444070989652 0.5417889276516156245384046276872019 0.0090417967364572801099388363305732 1.0090829218649627861479265581040475 GT 1 -1814.9326458644415282667957769744352313 0.4970367192103069454447964300470202 0.0681357118064909054630130412716547 1.0705680884255024557940600817522515 GT 1 -2002602023645927859824092858.2851868857988080021178080698157099 0.2273550185364644522762198095963250 0.0221931064729251975393010737451378 1.0224430788245267221887547560125965 GT 1 -276059731127932917977563941941649247532435.6259870682425549878661043410109327 1.0339462451221067243070961737706247 0.0703234086708401942909827689227287 1.0729185045732940575422832431569527 GT 1 -300320886346905183686535729617913900113580.7629857667509078114412497364330807 0.9672893043832915135478158544672810 0.0875411968995488638281969559610541 1.0916123418318367652359617753273187 GT 1 -368550025842.6398910539862804452673497991288216 2.9508959877509661201778921583968557 0.0545996155382704162233739454892511 1.0577229829473851614756736580775233 LT 2 -23764429421753443177550.0926623749191330161128962346982177 0.3477550024286000032280328274328792 0.0976147101718199148977763742103494 1.1027136995367886243571262165524181 GT 1 -961179997907078742343449562491798003.8302273998771875251410626558184903 0.2870327343751751270359467094426528 0.0873969634376109789718614525688738 1.0914542831194100048363375919616012 GT 1 -34920437388124.4595219127722081884528872732158518 0.0886788378161731357288601186928252 0.0601570840170920018945127703570385 1.0620425283391098504095539955770091 GT 1 -212.8595280229762433153961875513363515 0.7237198317486675498803345096661034 0.0871429746424687808821307123787971 1.0911760093821976312421861279048741 GT 1 -1995824689631642631985442007.7680253947962557000447465598421774 0.9809883535369863776485853611022023 0.0473702087412979262700495305561891 1.0485289174756841907825208435147413 GT 1 -511521602660107591834004456174754940500449.4459045731912785386626990829055717 2.0718443027821339953245548579552846 0.0761125420226457182911664793325909 1.0791650134843270980610369844726789 GT 1 -100.4965117060363055467552367029641641 3.1875309137888897338658552797117364 0.0569994085520603285082200296915675 1.0586883691506369338214649160051299 LT 1 -2175994636183.6506162924497936820992176438447515 2.0813603531384972563604679090743834 0.0033455035024073914408422210623806 1.0033511122120485970514160099791352 GT 1 -269715546748615293593354940840154.8938203884425087677967673749553010 1.0430121353773954628597960085479187 0.0604935467859241284318326540389018 1.0624005913772459601348510247926774 GT 1 -99477880923144284859063785321.4706469075548606260133169069549474 0.1567249209212810639312481427365802 0.0035726953031025849450616093709030 1.0035790926206229557064462394744412 GT 1 -7512927757.6760661423168220767821453471333321 0.2610957318759279877585712244529324 0.0641477907554926867625801084690625 1.0662977110777431363103178126301950 GT 1 -14666721736499355936214553296.0330128304341919420741976627818739 0.0634318963297882288967341137287400 0.0104504520423504547513386891165045 1.0105054414613302943440023271768634 GT 1 -80481047033.5966401691960913399298915209983916 1.5946097168051131557423237051201372 0.0199660203894986579102582722714168 1.0201680348466763677540579626263806 GT 1 -165978374990860506530840055236018203915080.5979886630848077691796325755146534 0.8837156232420505141825549816622689 0.0752444623381766945861713472689988 1.0782258600076187344786780093352461 GT 1 -137654060660484570270332304.1770336035101820686531455512007596 0.8009821695016804722780934761219725 0.0989122707062108594245695677804890 1.1041526573082962614462111530513461 GT 1 -2210751923.6251782232574027915182705113764406 1.4386632855827397118475423152799936 0.0797871080361738432785023509865084 1.0831502314003916716607546989778194 GT 1 -293017165008381541639662.0607036445633305086500390942147921 0.4342357797955227661660807825219636 0.0509270021755993246777920226202021 1.0522695625460556758726067688004995 GT 1 -139046436343128850569787176900262954765009.7185894145855896470343472559377137 0.6748984665557353916260960570782146 0.0421084663350094531618023261996976 1.0430207290653906638075986437911465 GT 1 -79262.1907682622708341928363130396191139 0.3823465993385698942915547946586025 0.0418840103799290523966779891695048 1.0427864335802431483169521635686054 GT 1 -474107527313027732178166809.5315289030008922283827296123435698 0.4245526242523818474370066447146548 0.0826217836567211136403111365646043 1.0862354420941380279079958983867519 GT 1 -206482296163577109084360841364733709653.3570146812592288782860997548313633 0.4468035187906889780137550759730083 0.0567975732746587890610461899586226 1.0584743568982682906149168282581179 GT 1 -97449160604860265050418568888628589108.3814542110760642444547719301504840 1.1494729506419982765274472903438722 0.0118438598657938247533964623655811 1.0119145571476497518035112369945471 GT 1 -2818989597880648092265060373216335693395.9518131231279711087705918243523971 1.5815652722774041360310258709901021 0.0419227024454342372199665344761015 1.0428268178836110966888016808017297 GT 1 -119796894143404960.3979525811106364667819185914386054 2.0667104786488460558430519922235254 0.0168000527075333253057953848023739 1.0169427743384636731617406695008391 GT 1 -93.8149155793112760189526261699536231 0.1505263282433693485301097362288537 0.0122950920470575020041288479202720 1.0123713020078665527788098730336237 GT 1 -1988253151102623187426019736850629177386851.3568481091913768741004334776883837 0.3160235020015300826119770248934628 0.0678838433254252016712742709162485 1.0702978404373413548309232301798573 GT 1 -4831552188319.5084924510719243828583915078038209 0.4764737116357712736164854618798558 0.0089499807264167241386565345700906 1.0089902723904931971612895237942074 GT 1 -38947659959361613388032476.5560049431279839846961017705496862 0.1454815097334939813974577132204663 0.0276858510666682534968003231817431 1.0280763282479975017244260895545383 GT 1 -8884569311468530299055136588966297.0653307032986607893177357894450056 0.0068517514524477548479866603986917 0.0268510871773806101756593590977377 1.0272181634676658441101245716660584 GT 1 -3891144717158753094913859241175068448.6340160591849698346186024058071791 0.9372437069051647746837742947736941 0.0419199759819067976799735044520336 1.0428239721219434652714777583131835 GT 1 -106200821468250390229090496239665702.5812318545193444059864979586947511 3.1465644557656949730408493987752159 0.0876959647076823582797067937209421 1.0917819724328642682232897547237448 LT 1 -12807443194279278864150978473132709543.8053964760073950492300434491375774 0.1413195557970004957834296017251989 0.0422366754616831146553831237116402 1.0431545831637070326308783961592206 GT 1 -766590762702395434300742723818.0295632233875771092071987237122512 0.6372805962437360723782136392003510 0.0156090724167405558760624790145495 1.0157321766969991216330418538659040 GT 1 -31743069346.1181379910225165448943473467173947 0.2966095289315904450726022310573907 0.0978472819470171382544004784244095 1.1029714627708897574516210447509221 GT 1 -1179518.0862259298564913352910171694337608 0.5057789529639676590345186220271349 0.0113591362408786858389972551172582 1.0114241439856757671787590665695956 GT 1 -2.6047220483225794650023305022415578 0.0954287955379326533510874187007647 0.0699736291390917101065857327700991 1.0725423374724350028980443285762947 GT 1 -1703246781195336157493876970125390.5806295508582792037378377898969943 0.4265030004523224904250517922181314 0.0555254401972941544975188392540586 1.0571265274983995676246788060661521 GT 1 -2691271444267494336143730077654113196165.2935087925100405624317435737076563 3.1296996611161068616674782327020822 0.0212172098073672696467259794541286 1.0214455301257835704218680553311898 GT 1 -499781253194898256602390931911.9920228359403654478642663773771500 0.0073809132764776627706546028970825 0.0988738807440818878238814833034678 1.1041100541930603290863238315786201 GT 1 -3014961847319671119288489524794124.5471464903920143309567492811513080 0.2598861899601503210788691532951357 0.0246229112545630007875490759032295 1.0249311250681383125536858174653537 GT 1 -239829011250278711.0489287395325512732249469991452967 0.1327911191080781890927664466981771 0.0854384575549276711967379572521404 1.0893105171387765105743533835542481 GT 1 -4094633469276148.7226233526097842135936276703369539 0.0667531194867260764584735849187064 0.0722150445925387912183951600161242 1.0749553021360573457375134844058693 GT 1 -14452139264305317430506491721676732609.2991214744527227431087928864493515 0.4188567139167105688792069367176867 0.0678834231236817010072920627464029 1.0702973896333876013821522092164021 GT 1 -46557841556336191912768485.8494538487664306218119363374951911 2.4661986536436680797552992384182014 0.0072817433596764491417841679396588 1.0073083846617226516359959486412700 GT 1 -5992040662030597103360.3067312878611808363050901503597624 0.0288264417100846732096644922204021 0.0361472332931957650745838392896315 1.0368167276682006744000185097467113 GT 1 -20446.6169040333336609467695311822690537 0.5480168716763320945173980356360377 0.0532838014374188658559025811544611 1.0547559154385036057691448904815657 GT 1 -2162457817897698311097476154.5357646964355992156534485659518964 0.4505899014922039217490605517181257 0.0637785020556818718236102523115344 1.0659031873972035471070050689276184 GT 1 -18150650246693311348787357518557185989.2424600750254326574520056129990653 1.7056457954937128657276252771248734 0.0642961175746317496917371853239281 1.0664562174886488018138068991243753 GT 1 -5.7442620767800378563915221070683886 0.3329648833054031772463299005884522 0.0275636435683536164775649186659484 1.0279506488889862946818340465486806 GT 1 -26.6237945727950140024826210796291672 0.8400637601213000562221207431059905 0.0507905547828178411984700721880563 1.0521258037566124693061611706143710 GT 1 -26924934116814164895111113354.2242545639112569990496317510856888 0.1830148477268290706017856543825011 0.0416240318520435323015736535307898 1.0425151269061645490056887455285485 GT 1 -286456242052650248600700602692700722132639.1399660621858039525827526673679642 0.3204159910782531407105723735919563 0.0990012798174962522792825740355092 1.1042514418159802762530745533311921 GT 1 -1985273664938995828701059322561365024307801.5975901379524624261662963253922749 1.0631507155064152047594517534225093 0.0170177693716375873979610773899269 1.0171642356734700950524503044059778 GT 1 -3889961219761614149822095222807.7984624505856280504863608995782266 2.8286670436972162925572209602037955 0.0403025437480049937312071049640606 1.0411371939278748126300896427414989 GT 1 -13365456.6806454540718381092132963920864897 1.0120342979027955622387942547963762 0.0332904509396500488649545777758651 1.0338571915626919668366395699617505 GT 1 -534502194511864748488529664.9354083052539517987982074393666461 1.6096340218032077954889222185593261 0.0775746732343736823919458470620347 1.0807488529393342984826249539941004 GT 1 -5119538496167564.3961332743915278937298826374383570 0.2373655052721429802744951167344299 0.0021958463771452677041384054399835 1.0021982607828915355829434377605490 GT 1 -67031402394115076094913.0876287456890792457897464904116810 2.7365382599332474747097219132319086 0.0767179969116122331699888210927805 1.0798205623372187621323719848089079 LT 1 -4641079117825322417676479.6062864587317784065103995910136083 0.7692160085689044946780746064243499 0.0987532889007090297870489770194838 1.1039762396553333723195321228876202 GT 1 -2177492349.5926016264895314793384365050248936 0.5163811610407628066256116774803865 0.0975795768723639387080559931165830 1.1026747664824346744407503838090634 GT 1 -51423924623801839170550166033127781092027.0787177116279122825249074377877152 1.9048146327157965347289914258727609 0.0350275607285612480389266595149762 1.0356557383914833926064244979844575 GT 1 -1008170842167107688333554298584256095104314.0820438415031118681713848935795410 0.0938537921798739111154397355160137 0.0374952806730169586280761093479769 1.0382163096353528960310366739473623 GT 1 -82581964572298941719337553.9366128192665535566020096665584615 0.5034773246224587352690495575856854 0.0024824897699462021223616490265083 1.0024855762568480567641220777685927 GT 1 -11758457157816152085.0784830538179711346437354449230860 0.3617511531713594496648856202253226 0.0097781084702117123859706534362857 1.0098262281091460203620361814088593 GT 1 -65122903782082.6101207996280513943090727566030966 1.1684327302132782852744284377642350 0.0869615263616099142441568581210870 1.0909772594739406283147603858400977 GT 1 -328210.7123829906934445357896654739224502 0.0957704933612686612104925696516308 0.0597271304310407374258351047708331 1.0615851590676528728211792802176940 GT 1 -45.0511002911779580936193299342984331 1.7149275862622443005884955819538488 0.0136069145206766426600213380688342 1.0137003370112722264113430194528159 GT 1 -4093929339635281064581.4566351416027552970811460902972747 0.0214495010630484353755546728394699 0.0456350493822224439879573561142016 1.0467091328692342312071902994868909 GT 1 -41986591731277468367.1238228969830500182021012939211236 1.8518783797839777313090560951254347 0.0647341708942737251423577513537634 1.0669244808976676999065924316490205 GT 1 -165050661813380689320104710.5955651942824519700636214784145575 0.0969440320556364804275593965902129 0.0240518095201036448138692764105652 1.0243457775027210827619585804952979 GT 1 -43.3859361900422103427588039897660850 0.5424721163777878817079050087196299 0.0371360846255874424459801308371577 1.0378431903841894055535455005382736 GT 1 -40901028401366892355623662916686245.1489158762996222598992842071577164 1.9618614590737445742640193288426671 0.0884385500105701909708824317516212 1.0925962708007134968707796838472082 GT 1 -23701605050566316968604.2373039564628459991165989571914811 0.3856986705381252869396517336486578 0.0950338099073490879441686810807986 1.0998576949937216630304433129414678 GT 1 -42496922.5757550817064798600961014588541787 0.4578561308564086656676708234058607 0.0108416370486697788267668294025430 1.0109008358591178923745087390994429 GT 1 -16458957213544189780.5287404527712753163406879404823429 0.4719864262594585667581341576552640 0.0542167008196070936601511663107044 1.0557418068047779448243606203418113 GT 1 -16428234855151766859840085189625837687455805.8529052356170015690857476230592653 0.1117573463082305403486424123302700 0.0760711576210170889226285411951674 1.0791202207182631033357294833227886 GT 1 -1196.4154275071771080548098911170465557 3.9230547145535854285536066164973210 0.0862380916907089310120801603409466 1.0901852356536397701172811440395052 LT 1 -731987228352625965.4943517298431083153047484341172377 4.7440863932441351186772623136573219 0.0838007027128804961951901177644635 1.0875213645161248381626590443438723 LT 1 -844109608.7164639903076402440470513221264887 1.3510002949807345234541670486929870 0.0336936271210415112483632904303875 1.0342743388636137587138417493686575 GT 1 -34491638819.2243223128607564137051436338691307 1.8059002601349087685693360573448298 0.0918389295431536351464472855389327 1.0963335257416790225802421075122850 GT 1 -15319755568351684.6244391075543248147837797242786886 0.2259418869257644556901366424836375 0.0753850511819818891891866956754015 1.0783778996828528928859875554887791 GT 1 -10770145760133114.0953769418594946595456833598752980 0.0734240030713993225389945839074705 0.0808958524318230695977667612945453 1.0843558359874359729725611472290952 GT 1 -93000084688946125710850636966307513020.6356052611900865158649170483943331 0.9177801765418775204859585663500403 0.0391208181815875902517178713962492 1.0399065992282174985124021892876326 GT 1 -224371659247309324.0070800562600111873964332825452560 0.1348033125880723032888714631870484 0.0495492330698137376488464835982908 1.0508189154175890017938063365748400 GT 1 -14.2202086314927239843243259420417297 1.0928215338998763093607676288956980 0.0378477989046604967713417875637212 1.0385826276339998320988248147787870 GT 1 -1351322123895767362324278428260967112275352.2638031011046382999777564231944402 0.3656925006595526861434689423494995 0.0953535825337354638571565265153951 1.1002111105572284876881673752705065 GT 1 -155925272319234092901586706172109.1818958593976094378457527849068565 0.0940512347373065248712027522448827 0.0150757048561525093371703618820866 1.0151904984857364721872696040033701 GT 1 -1380615279186337497566464048231173156697.8305868093855467331941992932008368 1.2047466733022084396574440893422819 0.0475554908761788032266539924489386 1.0487234318160727685408852639054143 GT 1 -94919503783517042216814769772853056.9257417084640081774982218335735265 1.1198396318766067317844925653424739 0.0886349910970157040189822291388504 1.0928117935786595253216761531934989 GT 1 -12389735096643293111171444.1729589575674207834459981128434540 0.0517738300778612297162681530891679 0.0964811668823525795199994629228937 1.1014583245432511881409243129131567 GT 1 -4316386508.9403567697292445120244065386780737 1.7745218689528287569711300400292596 0.0574030821160595038998630327381779 1.0591165343005889786483496844715543 GT 1 -7421.1133319908750939591138352174028584 1.4612255362112900337489589952649219 0.0419025377249658441412478145754915 1.0428057710345534140432755915045454 GT 1 -150.7456940056098678857308634070712971 0.7429494366341960389790469929908573 0.0623606000368529648481872839440475 1.0643898388972997789923647070289104 GT 1 -12031634397390.1795155636072758227303234833734260 0.8384768313274137793497362352739890 0.0850173123477006744970916261914302 1.0888501344841924925678518422441916 GT 1 -10483498.2326752414029339936602080957248268 0.1270325430101845242235414014016454 0.0294684223129387204616636911184575 1.0299113393577787288660994567500072 GT 1 -41630500.7951812532033609761853824430474310 0.7148297132039523876567012112435213 0.0589767847821352627449529273826487 1.0607874689063211690343259823835261 GT 1 -1942358697717346873216370713.2437098593956049406000406149554121 0.9154885809744475671765913329519765 0.0128645643385973467036427355372179 1.0129480294472930354907161048791916 GT 1 -362581023628231158268252.9673493620274260168749053691438770 0.5600993268030761814736708296958751 0.0694859614690488760257595754306684 1.0720181159304044719596067454555083 GT 1 -4275313701369941.6345609789380216235227386300927944 0.3885183419675294852829559387845778 0.0020598967799291828253464356697001 1.0020620212853103912829475154567369 GT 1 -9994752801127600242232409479816.6993708201452864280093645494215130 2.2297016204357208632034500417307073 0.0450683464180066363764136023967535 1.0461155079922916006940830933575151 GT 1 -2777869445.7745620013679807144170227410589882 0.6158221562766179576338815474533198 0.0335019326268198083434329512039065 1.0340759799496356488973457243069662 GT 1 -16091.9108702014755288703056419171921678 1.9689018845322943092394632503262927 0.0149492159339228564133432943348462 1.0150620817115971684581967320594752 GT 1 -1.1754762000891748287949349714419859 1.0379822344058079434470309038094159 0.0876887178887226212764610754212521 1.0917740290391081670835933557530654 GT 1 -4704716204333175.6345194637515522174828411006998119 0.5494748230006024269222517913160450 0.0043614945041338526863999056480131 1.0043710335677756022609702978216909 GT 1 -4507621675936863087430220729259620.8542799897742146054381362342595124 4.5948345686398346571315108520331633 0.0573957487666168540780503490738567 1.0591087543887548263464444820358168 LT 1 -137812135672651402097350073744873204489.5918602392348687752337776770094483 1.8125798983037779513776559277049828 0.0622663901298955239683468865112169 1.0642893683172682721710091273843394 GT 1 -91204.3883994229368496867390272457308924 1.0389849386041965861645326494899069 0.0728765194301477317614400849131825 1.0756685177889908036979969484485180 GT 1 -576295.3052217601668189254949559273050443 0.2066416479862332621587116381490992 0.0132409725757002269411658733630725 1.0133294158371986176352963194890679 GT 1 -11872195077058106596040273853864594588.9404514430409261684832204134929094 0.0427398923810545601344282678393068 0.0113199790501014664914106631946816 1.0113845376768716194243363419526453 GT 1 -12.7740548666889657118605928016151140 1.3799713228388710753669581350210223 0.0394490480008147289528489656736632 1.0402482508101750847942757025478945 GT 1 -4791189148986434.7545280486744317378629220396417152 0.1537885166912482533929332494624215 0.0377454528040095873138014405635032 1.0384762612425513759123003986507027 GT 1 -6.9731276673739634590470773125173606 2.4365963016567016032283064676869708 0.0730101079403101900396827960488604 1.0758126174027098512115643271508019 GT 1 -3114309712.3124692598741194151998916628147325 0.3116608110977198878064463067937216 0.0250494838689290419669972509617002 1.0253685619583320948192008362662499 GT 1 -4919.0180597003445997787746108112573259 1.4866885774826611405481239474478718 0.0914454932771234666338847696886306 1.0959003965528032490023511266916764 GT 1 -2251140183922596465950792421767723943.5746169018507093746720957049151958 0.9479742617845408411212123661666771 0.0530019031534490328653141641447577 1.0544581954638110642230766685747590 GT 1 -526851891033447937039802052449806021982.8346074662887601164581248060314201 0.8028189367603402331716939745589142 0.0282581162606602474943587258890644 1.0286650614952943926405519527724938 GT 1 -17109264423303.6254031868735655058706834077605885 0.2035688784338655141972260770700379 0.0693694495659041217033333115183714 1.0718929113611434131877631779860268 GT 1 -5917989715577237927282.3824226047558828030633172256541209 0.7467616124037838609332009747419883 0.0129819286319750961748632032102400 1.0130669303261741518069655094028626 GT 1 -1149129775948804313637992419408306074828.4281208749639688467620277292703413 0.5590283932104688724309441197957594 0.0834443390143498382097624804913695 1.0871324814290398320329310647587236 GT 1 -8396559355509839765953495825094112752100.0187910297685327003696491349628751 2.0263564753120662868719683690553866 0.0940177515408476077977263400822078 1.0987355664433029987128339417692288 GT 1 -132.5985700296080345105253674663661754 0.6610639707588007441830386907701339 0.0740528646396321124867656880527858 1.0769381352092737520675371510538970 GT 1 -46862.2062928505270514967112398124186322 0.1527666045806848186663445540291886 0.0546647021024309148680710394542237 1.0562156018294757292911575218322045 GT 1 -1601.2603186224891789955296600803089253 0.6704142696772200127055508893969569 0.0718920615777706361359717949399591 1.0746072400047752128127207496430524 GT 1 -36.6959786546850741620600976356361649 0.0107115334343248626402411520969174 0.0370277370285113238083775051283380 1.0377306703283210067324750178152307 GT 1 -60704034988074273194.9883535590297077866757757281985149 0.8574520771276581452737362024637122 0.0263468118575727484161274371206743 1.0267001084164245811860466415755234 GT 1 -15.8694106535132878897586215602113633 0.2534610860133353435405209039878491 0.0215811858604303784668658142951029 1.0218174652973605491222093265578289 GT 1 -3863.6069973881382239063896651942715742 0.1591817918501165695404069689179458 0.0991297897385389364233691732931076 1.1043940825143011168699435153717902 GT 1 -22051383828641215470070841988.3693214603117827039215901376277547 0.1696479629857080911970123789806861 0.0318088840061164641377060465975995 1.0323257773150843098552025554871325 GT 1 -2006376475.8476767671623550362845108057168706 1.2069857185555744857914445276861433 0.0834798240724859421685217409874153 1.0871711978393769974797054915687152 GT 1 -62816191081838210623174421817556888841200.8808572912977958270034792219595951 1.0952102592365302646698095803933166 0.0556000834437617864180433731263321 1.0572055621271594113406524778289643 GT 1 -68587558099449057667022.2163703930031511299406743714113596 0.0864332060276732356865213411168452 0.0222616678091381874136537622849503 1.0225131987433497818066385175565193 GT 1 -583904520809343018472404365176430899880.6111117196850361349036882208132990 0.5399180244458596199134700731455678 0.0392607807614470302385702508147276 1.0400522707934251984090375021726500 GT 1 -6726.0317544770931536946320859814242915 0.9120907201435502655735076179055135 0.0278303139246460842190357845057291 1.0282249156063932843857922320553004 GT 1 -1096185331831343771615443769816442.9533256684087456968787804697590349 2.3196535473989807095230257753673620 0.0797032554050166842794822771052320 1.0830591124738187530411004511506034 GT 1 -11464967038851833348025.8716001509101117832153765777838612 0.0475631825476642679557123040909064 0.0753536788637735755345405627582098 1.0783439701146290371210627696093358 GT 1 -753371744296832344586722064962617356476955.5688238261444729870118644050231509 0.9536716559600853117831452271594252 0.0174189211129562363475997915733720 1.0175724156033114145793216643150507 GT 1 -17486092250980375650544.7868766785400729219481260504887523 1.4040717226445663840710199157541531 0.0283617470002040358724361892913794 1.0287717114889656262415880960040704 GT 1 -226278700615995221321214116382.6541377323416615082952391871886694 0.1295567657437974028080921931268564 0.0727585656033750526245095099317021 1.0755413002969214018921220177117750 GT 1 -325962335992028031406946.0426072108975628221509565213641833 2.1934038587766218978154425113275036 0.0782606127196993309831711992814550 1.0814927555980653594318777153622070 GT 1 -12822786985048209576570390.0897961323580421069152099186496621 0.1717024666648041120729130613494557 0.0887832225239466929579901944804153 1.0929744545120295621712095867358159 GT 1 -14694431151799.3929503525336844312822500816043571 1.1918072896643181986015805925941113 0.0161484635058055865881636505126143 1.0162802708595960380491934102140497 GT 1 -3047226038149040014024862826703301855251.8219808293707677710439445616880429 1.1291676521156881168473152024471258 0.0004171787448329714613432757625538 1.0004172657880947825968915057125902 GT 1 -4477408254510.6167320664060820257926455458733421 0.5034623546771014757587579920549912 0.0937534394661292901125335270199189 1.0984438680934248377434509718661598 GT 1 -252861488583768010303.6699669724945161159902848841846056 1.2296147739394265216591988060562134 0.0118951522019990809831219755273260 1.0119664656116937052538835338835026 GT 1 -380167844518762.4062140345680707907743517395272165 2.4037388736058708962976209747430780 0.0646326602111972988231236869201034 1.0668159500698560067631917924213658 GT 1 -55096280609713899584749831936966.9189018849585203947206066770864929 0.7090147935443864512735401252889824 0.0408679485074136163692528645732474 1.0417265165055091487094126839549260 GT 1 -15173871211607823846381908090322.0049801332787406394849728489787803 0.7102815201100562011724664097205580 0.0888474544370945706258006039691048 1.0930449472627167433756227090619889 GT 1 -39812916143297079867059462587021332.8548809317207811080520675821454767 0.2067541484449284076307599626819019 0.0724123336109038201181453883907276 1.0751679699492943112022332180318808 GT 1 -79409496908151072584494581240236.1729811636915380893187338590210809 2.5745247244763098453546408858423478 0.0460392717505829339631784452736112 1.0471327737381722597248585818361517 GT 1 -4930910282571656400635.6389880150965295688227486826196016 0.1717161198133261636913265954520518 0.0699525950458174755348857747591821 1.0725197210649047005688025500001333 GT 1 -169792537490293411.3009259224502553072165108203360813 1.1223167565242844259673191126490694 0.0279647298365004349629355410818079 1.0283631890035854694236575509969978 GT 1 -155463198721564064377462045.3621793258403595803163193851436302 0.1561739269801945819420465099639800 0.0290969429124273819908864773158344 1.0295286538958105485478786615713794 GT 1 -91949335351003218680079134932757036269.4359349966474933797197249350101188 0.6823576603828043735780087436319686 0.0343891434974151709839049333032762 1.0349943659909093560199736372370808 GT 1 -16928274794619.8411968508856879473719912402125529 2.3686780048615719406849390463475100 0.0140547095914442788919793492063723 1.0141544123199880379481457814714123 GT 1 -102215876088226875076.3875866052941025750374741226355694 0.1167133952537712109623065910709875 0.0919776761507366879854587472594870 1.0964863149459939061763918493567638 GT 1 -7811194896644235863624406965.4342661524651416826301040017113622 2.5750665961029740622474349055341253 0.0608139810141139466150688425039096 1.0627417161073854211838538037736870 GT 1 -94.7224798233209260598846195910586630 0.9295329293104457958121814430407607 0.0527271113586322637065469920681168 1.0541680661223921118234260483790483 GT 1 -516772152396127849325445594868950414713.2246167950616638270223977160840658 0.1562018472839096321327745533301220 0.0971683358535509680101830088149303 1.1022191613856998596127513571522444 GT 1 -1604305887617118680345896330.8627069344368311210205632867098030 0.6411705307713230835963052996897851 0.0729110856456821511620023343521424 1.0757058017761252303518256553221303 GT 1 -4494802610145410258861323492917048.4151605378209684096003889000340648 1.3215792260744204996121737660861664 0.0999941144014896553153203197187229 1.1053539761253087076299792351011017 GT 1 -377240272.1479782267021748845427704854902120 2.7292872487202455321607100207341753 0.0721835446374182335027327333839125 1.0777279553400451554672830245463523 LT 2 -18385391647251329884.7415191632722677919052026980914488 0.1634521277383235543618632895307886 0.0485490200712859807330974683888436 1.0497671123027434352541054655142844 GT 1 -7415879114752660185285283756580441645.8752311414905398438268460712579041 0.3126168252743007452347964239996288 0.0905691625883075302714277376297030 1.0949363285425554596297601377916657 GT 1 -124520764711651268038314.4009187915611916242756263551398838 0.9718120114969851731123355600150048 0.0197348986777891682167965730016508 1.0199322323458962929163099231252610 GT 1 -906227.3510142067951674044702756036845284 0.7182676263967612770036397025500904 0.0617021948143655015134769051545634 1.0636878908281265662688642480987426 GT 1 -25281069204413742874988219986511173966.7813519649446723964986516569761222 0.8977060208455351966445345403758071 0.0343510540283595380824406649096217 1.0349549207862695934838382461849556 GT 1 -4185775974065.9041283109495221855185096876950644 0.4412368910021513546395564045301630 0.0894894669416962410810264140355723 1.0937498114483253262976498592512363 GT 1 -28464117219285397879.7800878355787902796483542827337579 0.4684434223517292559513651600157827 0.0515290855489648609720826745164816 1.0529041548626559650904460148841156 GT 1 -3232261270354.1481362955561465520077617061642362 0.4226457116922463818543891502942386 0.0404953387115667995796198538816195 1.0413381055071694473891587201910995 GT 1 -7832.7349514743398938732505414205825258 0.7013627934424120578004532052860580 0.0331754262774632287948290372490957 1.0337382128894250497542259371191061 GT 1 -5754519909428842177821509893.0452803291357475667270440833389105 0.2481542807150187635967943012554229 0.0365783497977274134428699649697232 1.0372641123353139725925866156831657 GT 1 -210803.7080026680412564992502986618560147 0.0920978939531909137090216332637913 0.0320268455484322603638555430406533 1.0325509250947056986758561010346471 GT 1 -4303228198321805.7087679069036930088409459938326338 0.5950292417424078115171371988906419 0.0265837824609480020415977404471587 1.0269435210075256668014705489423002 GT 1 -84731149316364517526041740457.3442644771461214415926156105386972 0.0793452405924094535191520149834985 0.0109444519529510293640169407250661 1.0110047830650314708632265154301559 GT 1 -91969543065915752150922.7030663231138652967180951100958489 2.2135202158588732842499278804451896 0.0332623158459647384146332805603976 1.0338280880079592924510540335645928 GT 1 -322.2872474871312288543461270248881444 1.4483636056894537398170937745763835 0.0282381424861065774165672064029138 1.0286445070974505340363771964221464 GT 1 -897517054.2099666019175703372179567316010837 0.4520924510749544094332497523601096 0.0833517868684596224866904567483544 1.0870315083214923467591112900457575 GT 1 -49157914626259297853336.7185381497246866848827610350073315 0.5823058569211781586480933533431868 0.0241498961442488889327161318298172 1.0244462864789943752325356132429879 GT 1 -6226.7841945520819499909369644792786844 1.1261864121106601311526328657100476 0.0721127980787419186764977286561653 1.0748451032375110309809350579944529 GT 1 -2124393191560220458319751028193.0526590061483420225727085133424156 1.9816975962210161782158865410733722 0.0228959966922241817447995105736466 1.0231621809081318471102111227089609 GT 1 -69362876343308459901028453282147758469.0453881423904818272924761874192661 0.8286429735846611067405739698845270 0.0449631797810807927214413850160392 1.0460053840415827808310557938501968 GT 1 -146.5164304900475444542825126972743258 0.1771731036518165514089869013765486 0.0458725191038205583335149143829526 1.0469579886874731979980786710712780 GT 1 -421643726396251520472605375156.0872962604282186310341159763690999 0.3536944060609793742355021117827560 0.0186265437065604620777935966022167 1.0188022024687100097604573328524435 GT 1 -20109365875837089.1552406142420100603451471760673130 0.5073089725287588194018805889832077 0.0740423518863760064310218654731171 1.0769267817602735306996598518225752 GT 1 -2852.9997043509485333844374342901925734 2.4084818084048609738771045846901567 0.0419960772908404652592591567439550 1.0429034063336894244475709212271951 GT 1 -101768164699351831697732000406.1392372860250345072386372113020895 1.8131473782494813636153128641189483 0.0089020838269090736536382607849218 1.0089419441111953359645153652831057 GT 1 -110207174323000794482350974969507.4813750532420736631836567110688618 0.5153255094707058512786689571770002 0.0931980047448067485597701860407576 1.0978311600256509160924702601502441 GT 1 -2108212739420520814644711.9141654824060294707802660739845060 3.2795017120425803461344512145160246 0.0880308975091425099738174420651748 1.0921491683294507675542562254361235 LT 1 -829215668721994793607286480063754274169738.0961215823634892933007839353305176 3.1474083156843713204936730814947891 0.0405413804897302442111222501197725 1.0413860916032380664968301311103836 GT 1 -75896715242545422028158203.3919710930906186146018742018321176 1.9863977111412203587513771655838686 0.0648916011276136047198771520535013 1.0670928217904759191913579719921456 GT 1 -83237859610342198039.5732860411623179410773437602103870 1.6739341764049395072659124653369301 0.0339301291446197235797709071000394 1.0345191173072796089069542855511219 GT 1 -612038527001721480436583749676702864689.2531468776266887907471533131656855 2.0279106056081394152338001554729642 0.0647587633934543170665483972554339 1.0669507759057249341836911157724486 GT 1 -860850455578984939.0009182473037127436017133437229075 0.1004157540938627202194205340037532 0.0638220155321664199050602908915422 1.0659496662356150216995643256047978 GT 1 -223969908265.8267895081156026104144564435549959 1.7511063657564949354746432975550281 0.0087281344370604855364282967120465 1.0087664477008911897602584922866087 GT 1 -569136266160581242448312747932266.8614510026109734817932502245119914 0.7155673714573799681461032580836645 0.0739760718930107041234407989888029 1.0768552043814867941573508058750517 GT 1 -310337131234289736611433793132.5437157747327243679928224140840906 1.5997959883893834839247027278884071 0.0329044806939176919108731038026359 1.0334580093936394779429033680363402 GT 1 -71988946.7011778789957221143511007293664582 1.8681987943803801820578401617066936 0.0908262732029647520514937888315588 1.0952190844768914205562278574966210 GT 1 -40476660696.7968030776879450618932250389619766 1.2824818406995738028638033815471204 0.0991259078261425286886356510840906 1.1043897734540297267796041990516737 GT 1 -209922019896838126860280148090464783716594.4720363997494268788218441052902663 0.6535894143559540031686876073935686 0.0572348481983726567751269036845391 1.0589380710538329716364838905231984 GT 1 -226842765441607223040988473253234783182.9757927363359784388060415172700014 2.3921510596984668570583191209342653 0.0539353849511690636789886678327333 1.0554444088285499541947851548041799 GT 1 -297179480104979115925964.6291440195334268242331013325474062 0.1912948562872797917767783003851530 0.0439569032435124765809284435931885 1.0449522866576085765660940813181345 GT 1 -2095736764958314754351072736790402822696.3944032603690020401299495632264860 3.1369361808050767533681467682332278 0.0844312341583548387232729288282520 1.0882098048083971308413081630239112 LT 1 -25022532426626935781903614847823413.0613844575565958002127284099190111 1.6703816151850665805055230798784565 0.0221522946190451503220016693324665 1.0224013415423821556811617857186532 GT 1 -833956539495141402827336782004199.4856145276972017817014546721861816 0.3734235341102133877968305525431723 0.0117598036121290739690381761956014 1.0118294970287230515686910510202700 GT 1 -146290358862960127225853879387811.0637918381417929013488015702699024 2.0133905516403244143559658100940254 0.0374015087583345870340557643286409 1.0381188894926387441080398741033497 GT 1 -3172137545138144518932186971080596.2355857379537433249987297604875427 2.3245995623604867996083029089333643 0.0697164788585114587939686214741183 1.0722658778531816841061677402684019 GT 1 -578599493637336083701384353472005035.2591360431465431917892865055952113 1.8334142103548927453102505145475320 0.0660751714981141359925285631763198 1.0683593273949490696227615374924460 GT 1 -30601118768298494776672.4379690235486436361447426570428677 0.1173661554825948703898729359934717 0.0030842818207900952454755357721663 1.0030890480206906289244873555254686 GT 1 -12046268812449902113.5392307136966367904367225732297812 0.1586108921501526889938346013634775 0.0742922079604719829405940635204320 1.0771966534878484046656664227279814 GT 1 -21998789726222752621009421064.6806123298504686463691591750147084 0.1303835601539697258303734148744903 0.0348722817888593555032599091987692 1.0354948359228369661702137116347693 GT 1 -393211148535819191699297709149840655.8222749684949255064257794145319351 0.7045804550720229404948781351564571 0.0111393819403433965681456449961790 1.0112018894857825232093133901859910 GT 1 -6004089834247648299139494459468051.7814664918315520290969556411383938 0.3376235942681590171374056416182174 0.0515492237174296922579903808822352 1.0529253873347859028436085521495866 GT 1 -12176902389211818.2509564978440661104946336112942824 0.1763759733300742953942847697509582 0.0496739987531953424671929750085524 1.0509501940460419905303380576019250 GT 1 -34656559595283728688388228946.7793976964705416431829821846559882 0.2210036549672980107986880770308669 0.0069182900093271594712443608808068 1.0069423323296498542489369744988634 GT 1 -758673518831.0433881754854555649873789850103151 4.2609819096157475628979535498569457 0.0872933952626782606039014961628002 1.0913408030032691441054054260055914 LT 1 -24893126.2468021221739236235518973944128616 0.2336317777455531381865443180512539 0.0601735255132268359885121744796829 1.0620600223688776545235704868066637 GT 1 -3404253241.2904729000268741743338402531565897 0.8092661083161533393215681306350025 0.0715407965416353473121348488979085 1.0742288372716848191624512665867984 GT 1 -574.7003075979788866856769909270121960 0.0497574522459577691631645939196458 0.0728147398367814625047436859368977 1.0756018842322027314941301745310878 GT 1 -500079726193.4244320897438169038646005745792309 1.3299503097529935136767822169010531 0.0689655917381701328140647967752414 1.0714590439972197783371759348496408 GT 1 -6899968015030357756185469685420580613.5336846866826958850048969200673245 1.5428330389131281476071399130736677 0.0450063594431581518869695752658760 1.0460505976263621330906201521666267 GT 1 -5628477899.8296418437736981141242667585065013 0.3548061815848720758135884876141619 0.0166838636994673959215761232010613 1.0168246069772399170443363239361631 GT 1 -53399716.5219076121239619525646380774243355 0.3869642947666685940932679719631823 0.0426615020630801532767681554095679 1.0435982427157785879498104817119360 GT 1 -15819736928680935432.9347350292300263143595449094610376 0.0681905174560288198354526660048119 0.0025700967666325709469533203520023 1.0025734051350946173370070580005362 GT 1 -153407966217823175918919071560358428.7251615143947206647074736795783407 1.4691612350629753300566937522855827 0.0886129866027293473046648020051396 1.0927876493242374051971563657278445 GT 1 -10192126236760056593330336127096963971622110.5932849984092377738823131816279945 0.2249924790431098838695660711454980 0.0085963713262535636969180547291055 1.0086335332513164452179671593053831 GT 1 -90228210538879106.3689465217475323737221683364960416 0.3428122201141581221507574753157599 0.0505731821938938421786053775461151 1.0518968261539961399589517656152568 GT 1 -112644382138979577925401096831.7829691884440890341613728166079167 1.0469437143582112744713001792625723 0.0022174780297828647178290450904221 1.0022199402748454648761401610540727 GT 1 -138.1390464294442604280093097480871717 4.6952920917862364724555850590631862 0.0794743265685513867921742789871194 1.0828103879522096157604929990744343 LT 1 -701230003473.2125729604174646321484597630752249 0.2795077681084513831524190608997369 0.0141335653750046353642366958778018 1.0142343953960609356671391336922266 GT 1 -1812455236376840668890412051372643547.9832256295276160249553795645777605 0.0736397788927920696851783546630149 0.0638214717784407773840168181913704 1.0659490854127621543191636683054525 GT 1 -5849805152852628510750625632723332127801986.8711644429374511443852445836662563 1.5386535433319538931927278536998933 0.0832901705886554642831149981871452 1.0869642914676126813201366651234938 GT 1 -204693361904426638267596035253.0769357063700238423030300314133773 0.4159403927080996772612794705291552 0.0371201325125752486259538641229789 1.0378266231615354631473615728998040 GT 1 -32360821669206129.2290011820558023430097917496082788 2.5090089947030138354908153506806773 0.0186549732806998010939255764137342 1.0188311720579683616383656444325856 GT 1 -1837648266298057869796587159193095374.7923009332837510123411322505450068 0.7934982990581755404318479158982828 0.0479206407470697338376062691543453 1.0491068871052694255422449319820925 GT 1 -35672079630560122262910505797263737335908.3435455125013620450883508816390768 0.6334576671997268058482649940416470 0.0607984760020564981615810259854917 1.0627252072542302615206308469946681 GT 1 -3756956540316.9531593497817345915063567660893084 0.5313727575224095979305406454504437 0.0607046916199355136049442693543225 1.0626253567987145265871871704390278 GT 1 -131607512734427013967156507558614.6333577906002445431017375987503895 0.1661607593804615100974592251650726 0.0118764443120542964618211459286876 1.0119475326888469899946384017332640 GT 1 -2251319709721786262560152.7859272006515466832607153263881667 1.2115991290476735901337485255815754 0.0391405122794140364485753888286119 1.0399270953530437320536041465748625 GT 1 -11265790264.8885792989418753281772914109323103 1.7313246744625776697053164975771002 0.0224119235429321377895248185020519 1.0226668873893223027596969118241027 GT 1 -20168067405312632135990.7312708075967487489574716512371679 0.1798461387572798843932443221206800 0.0199787180885813640127200503350153 1.0201809913171720254909518755795774 GT 1 -7970513008067673421364515811320.1253726469332122121970570164099278 0.4194881685308176869558383037510195 0.0926021720999099290444783736081564 1.0971743055174373786581815888455710 GT 1 -1156652029374041528696694.3400366885264378541025883264739387 4.0044832560314722950713948079262691 0.0516069630524375306928425257193497 1.0529862667120155414471579167756403 LT 1 -6239.2833137831626709780813402314183178 0.6468343455765884441585283230204229 0.0751615738234311173610117934020630 1.0781362311307715684056292857085495 GT 1 -14722877534159475.1057173499589076333367259077285027 0.0416712161378246817726470279798150 0.0027884444701782093626879151700124 1.0027923394237192868779272419874775 GT 1 -2226780835648547.5428532149668131055420584023065122 0.3056967996108391607848222533618297 0.0232093208247972155991277595184007 1.0234828984350975989176770453921241 GT 1 -721118422294546832135251406393807027316.9575324734067752250589986774067694 1.5800369546411049344751780846668581 0.0164055813506345762425187361436698 1.0165416430671736414437193651557654 GT 1 -2.4089322212491479951046877226673150 3.8677719156387957627236941463686212 0.0674861434678997715917648311962783 1.0698712680227183815522906204313515 LT 1 -94736253942828591190897469.7116405249455697332876794129210015 0.3959944572070984400141337636768649 0.0791784477124912592654367401904919 1.0824890158019991814108948321629485 GT 1 -659947770048.0825772137683656246401465304242368 0.3904242955575474732593996343036451 0.0064361866044228335001949256492156 1.0064569881565774221930578809108289 GT 1 -132320572310357103444.3696423541760689222622483834851381 2.6156736307604506230180061728354314 0.0367350930491849784338245600775445 1.0374268199134837924417186821126238 GT 1 -122331863820618900631575625236557240.3084768096326494026387254340411101 0.0163636209829998938362170595574578 0.0524885625066429376813372154754483 1.0539162708653178620765409273764983 GT 1 -1191113120507171431534643765821616417268128.6039088227097685482786639468489687 0.4101731913593830282833232901114664 0.0150732393678875398823721225923018 1.0151879952627057344223679219733481 GT 1 -8296707481524450482073747166986.7992575083666873593877983669010252 0.6706285136119410214745169718507514 0.0948457392216550853710452142323971 1.0996498959091024547066428310710533 GT 1 -31675504504636876683.3424009650829357666506609167804756 1.0214059260452945353815188345123247 0.0748272634595516297189954014460271 1.0777748166979770308337390806945371 GT 1 -187608250790236608059722146839.8765128378820632224993037315290069 2.1543422869061520065598406748830876 0.0202123058733723066399606907856971 1.0204193694333589230875208993856742 GT 1 -31448701540230707667583206217646924924.4952609546256521310604478325765794 1.0817340534521972497240047009780839 0.0770191163162671893133532341118033 1.0801467557623072033713689377799984 GT 1 -29063428858666828204573610060.1558984284019162733298649034885205 0.4579542983175105909591210694403609 0.0962904193883443367539126954425129 1.1012472305904697070545025088529930 GT 1 -90659865533627338065598966285399183032586.8342261336295851409670681065549593 0.2372996616849303273402153555770273 0.0781849615912199020899094385575538 1.0814106846513466420061625087261869 GT 1 -823527106643873804320.8530753246243998664083656851377550 0.7173384430235481972113077448737222 0.0151760469426709761674491160432728 1.0152923816443552440357482418273732 GT 1 -254916653.4081362112496724902474093871262616 0.9827749111274348694494621419939085 0.0653540808110083582736779444045023 1.0675875174714634800744098616570727 GT 1 -18.6566749668486783682126676852369723 1.9885548205319200340838388337896660 0.0568030527559690976455874778004384 1.0584801663587525718838249756198382 GT 1 -317215742972.8193332234815161301553461106678550 2.5392603842918524358825341252908309 0.0073833309847642269862578999881636 1.0074107226842534291285262991178420 GT 1 -1464481580458.5654251690699298135997934145270746 1.6530695957018378946681958440396235 0.0512262779595162961076554333749961 1.0525849471166483534608336915194053 GT 1 -2246.1412821229392400689595195134518768 0.0763473065003090914357085855846591 0.0713954736253226190758236308883067 1.0740723290008324969981476305063840 GT 1 -1654970831492065183011634323341361629.8869327104896196504500863699554800 0.4826825689085948949134345822548642 0.0107683940701114938498450322587618 1.0108267928446022395014077373755243 GT 1 -338840846936460523143382008.8813573276745411233000895683059313 1.2969359562881541123107581370507456 0.0657491235802314292596277404053954 1.0680102725171512293386982840659745 GT 1 -10931035.6380124609269349463583288587593695 0.1120076970970075298649154922506199 0.0311184046663773508156779970793665 1.0316128671956597616111457486112304 GT 1 -5564109.7919494443026392988376738990470530 0.4835242253343564322010470406978986 0.0048211503683460189845242400574936 1.0048328096028259871555664853307417 GT 1 -11651432196831326337229012403.4092046692058665937453577448002136 0.3166693480367195208951737689126054 0.0442364987316882345062248643412905 1.0452447801456611487181863571434374 GT 1 -62029235923666.8125829517168147443526313330243927 0.4942959781936749187748687973357937 0.0131265722487473948215238987551995 1.0132134871324583223085625458802999 GT 1 -13439268745160788240448681540054439824722.0365702403947187114288232738882324 0.6464728169087334740780655927332182 0.0304141126115727483312949259506861 1.0308862188592063576131562956988466 GT 1 -696022050549097473.9686481749277201998312508303100115 0.5820086898284831373794731181968087 0.0197015692362893208193340202242684 1.0198982324872254569973306905156174 GT 1 -12342409249661982.2436141540597397440801572121174004 1.8532677292658337255399622883026591 0.0433939341629584489362906685864688 1.0443636067179499639538513804625882 GT 1 -7101768154718010.6855167673123559767090225112485833 0.2568726984406008119377887738785889 0.0434716982984958548661036348359791 1.0444449017246151630214680077279341 GT 1 -414.3440091605121397677889716049168913 2.1442113781150486661964589437287949 0.0105477983143602120267120233673070 1.0106038206286107853582453869434388 GT 1 -45682281198.3357519175869578003921403302413127 0.0579267700634463123705555838004118 0.0537458752495432432102101456980448 1.0552441151906192994020283880157415 GT 1 -308598569321760.0402566026855138644028988851322953 0.9368241301430108116756135555435894 0.0227823123007936016147661571355565 1.0230458393743076658297602380740326 GT 1 -92720804.5015457501768681803712136643092247 0.0832063943256945565418951089793443 0.0310268920416324868035139716231795 1.0315184198414206323053023538673420 GT 1 -200606889662150397552.5472603344270977843417025851922670 0.4481679420026790449359544517851857 0.0888548801323634951192412435398403 1.0930530970786440015336336392868952 GT 1 -66028651361853116408399788564801469.8130872255244440833414626373956978 2.2640028101796556577054991729462654 0.0474902914888032143649403760743316 1.0486549793705520649551531951011101 GT 1 -31450276829368.9894292722007276520654471372971956 0.2452350966333680729614562846912617 0.0749799512810298554569928509941535 1.0779398674138173702622235504226848 GT 1 -718338445542256.6287876241834132596078101759684845 0.9144586151143050339084025977137416 0.0462464048044988885145148509494090 1.0473499268540076244250794174330763 GT 1 -1407610231890151257125079176205.0968985123138255353287457322649008 0.6649088900538847549122674528846854 0.0939311127467840070090703566639469 1.0986399413338100918652657718021457 GT 1 -37116899560463228385896541131706936.1461331297168046181878315518574253 0.4430489355967605636697782239211045 0.0465356388453512900532383965041970 1.0476532315099927424442214697451551 GT 1 -105561.3385821804889435039799047627031790 0.0717914537802839242734851740065185 0.0977127960942486247539308228295374 1.1028224017227706912628145892880468 GT 1 -12464291.0862113443399980804776204159369655 1.4658746630916744360163807881139965 0.0540600831792455767027235712067293 1.0555762248217535748860001787989114 GT 1 -1962931214304304539229875989914178842537.7451593897723805841200094798817005 0.1196526561270488523359440096894669 0.0398851231384147323423142357927667 1.0407023382818637092782835949943565 GT 1 -213675232615786535297816876969975042.3702507807507451080901921191366483 2.8986562170425803704485554979295867 0.0924347679036934670755621078552261 1.0969898343285950895794470216604023 LT 1 -395844783038438050938567683942261523907.3864369653042718602073230278597136 0.1326061261182845050207422971843058 0.0976926900525120870720747016663953 1.1028001185543547145948248078578564 GT 1 -447473980.4741561758315916652249061268471830 2.8948225282626336899288918562026056 0.0438187404364677490762443322860900 1.0448077818490294858921056395585552 GT 1 -32366567278753235407.9184805286420762360469302467617511 2.0169757548149317877376450531927525 0.0350902079413129435793740567113255 1.0357206617445840867127869896505102 GT 1 -327301929675204532303480239119850289.9475152775680906024551927046287274 1.2324132551895763039732989880780900 0.0563649254002630496809194294491777 1.0580157610926682637765645292845072 GT 1 -1048268648971281286.3129981836064094945492885798848501 0.2763631989682020280301151385061583 0.0410752005621162949228554598818354 1.0419426227751525405749162218687187 GT 1 -8973226.0180151968348047533361271638399287 0.7193002414964877242641382191716884 0.0980924971740982764486376425077471 1.1032433109339979965031866735287133 GT 1 -17499339183860507554769483.0385752550920841390078269840669105 0.4265503500408846673951987507535125 0.0602675226995599096362315615807211 1.0621600428405122981239326095356938 GT 1 -576517653018319973686564.6127955425061309490798143511298401 0.8945800822764693267845756790713261 0.0884621476639975775920284879480810 1.0926221582039927420175691749636988 GT 1 -11955008588304585453353.9109675187527651727783621921849960 1.5533701245271265822645873425342100 0.0239131951452127784796431659742745 1.0242037571235217993965512689030938 GT 1 -97987572409399311.2889747368479695284091359287254966 0.2277398569113267083502575279801908 0.0529414867860312460494709103271760 1.0543943997281214672161799117667404 GT 1 -39259112.2309457035555539083489494176604756 1.5011490263897524231046078501317190 0.0436015386567437916771451048593369 1.0445806521997046186792133133183168 GT 1 -1654898272816426979306805233909007396.1524915389634061996272785854963098 0.3445639273486831460211177666903515 0.0057084312308286482469271234260265 1.0057247865964062793609127257143800 GT 1 -1857812269273106.8481589843311386683425906570687771 0.2448718693406174015451914089711556 0.0172127703258413297738811915440902 1.0173626322390707788565841658429112 GT 1 -68089752746153317183402232087259375435.3824050893539416711397887128847333 1.1174610400674121764961510012554023 0.0334041630136731855859203466075073 1.0339748264433217567503357242951925 GT 1 -1627519396614921323688375599359673952762.9863059330949576313704768741716323 0.4289096635191637767993818580177437 0.0111033959632827919949133551053545 1.0111654987936768140705900578619855 GT 1 -42057193.5573794571861326804918287349070335 1.0170420734628471158366712830349663 0.0450757155939772322445058172183432 1.0461232249889760686077217216727618 GT 1 -35569061863521319838430801055756268.7258053868021841031481207813078526 0.4789284151323789656080708139725771 0.0426655003185102223955655357281490 1.0436024191526271236646519665089799 GT 1 -39528004067353598882982672713550.3420737720816467400015433606088073 0.0148978103291799754206177736069634 0.0150698662591894586887460735164709 1.0151845705380897279652066491324544 GT 1 -6755587680807299666996284752836387876.8029066471836672206582827604403956 0.1080549438970598356314454568921019 0.0729322090509943081326434257784515 1.0757285866952775899419066951336338 GT 1 -2389641763201094394003939543799262147212715.2695304166820478267472258027155110 2.8615498140217231725799685573222429 0.0410403901467836652292395693199816 1.0419063219270223666070129265509359 GT 1 -308651116868277265.8665597330097975985028941950959210 0.0793853876326276869791243744725535 0.0836973904729365493997091608208023 1.0874086091190698760220345637024348 GT 1 -2.3921707477752552051780627153199640 0.1547917463054455695503834836829716 0.0584477182812789293857007393568906 1.0602254021890545649024886205333057 GT 1 -7948919943149985366456682553422739742424.5855834783092357306833542932212639 0.7479580728706457220133131584455435 0.0055376666165785781724845300221367 1.0055530563340697381624116724912249 GT 1 -302589611438213834056.0171000788292140319090049046474766 0.5519253591258740880630157524214570 0.0721513749347957342460750157924135 1.0748866790431816231419044691361069 GT 1 -1.5710575111398641566883176404025964 0.9480957709600710872465742973197109 0.0213636584564433251974277753224668 1.0215951645571374860398602449556755 GT 1 -82284058581030242110495094973871953175420.8777897726277198045707226526812488 0.4961049412613069363880907429912074 0.0558124337864532796875170271123365 1.0574304395506557689459110684730759 GT 1 -1995840128442792705793022994204864.2685724003517440816841646694037475 0.6000781813910622120771985925346873 0.0960054691474181917904220889856152 1.1009319685500958100865044585709977 GT 1 -159039581048322579.4086701736392481574254248031254570 2.5320210961446174370092008998254401 0.0451009617316602825658097167265211 1.0461496631808075184491735608801809 GT 1 -3027154822771994694540308.9389330031628489262301220430111076 0.8769824860951837110741164919251054 0.0953012521872401253629824081979317 1.1001532660425232353374278966906013 GT 1 -1660975618253133482475041.1848742066632671942286729636529515 0.0554617101883071210849860789077227 0.0046813841870907514785072942851955 1.0046923761846364772706529192335315 GT 1 -21296736701556780909216362501813.9641801308018823271987556113507946 0.8192529602022363391182279917509753 0.0042433636402196022330810580811043 1.0042523922579020254582503083036629 GT 1 -97705812700.3965985870041258437795739079767239 1.3141978231817550391433688650932749 0.0722383862725293754812234912933192 1.0749804609548981981309733922439064 GT 1 -18981202815622698893386.0108182508688036965026301895142051 1.4486044845610052722024369084299954 0.0417979305447907709504736421750372 1.0426965948034403923075617242042637 GT 1 -81546226673203249359176101794.8932046222871662076768183889052594 2.8286057069356714648372311392509472 0.0155810444442061522126641170753499 1.0157037047020377701332468908158590 GT 1 -2328907094160838965954748743076596885.4615930122586138473445236592061051 0.6485065774049614363364593930361587 0.0929018052505914227952370010003733 1.0975045714972630384815579054005819 GT 1 -226283077901063.6039633689232901912002184035976870 0.2014009105901341909681475091293737 0.0848095572368396295780606180526591 1.0886231011961381949371304937653024 GT 1 -6.4666158458514346386595624970497524 0.3514227020666151895625838594574484 0.0264065288411418421051721240692570 1.0267614432075796395844411643851237 GT 1 -264139879305209320750797335516.8212462812584134005073674240859630 0.4276605236719446335348304399305908 0.0851112313816494461365471190718360 1.0889527854476898442273355126596299 GT 1 -7.2443216725008451766665029822440487 0.1866033851566302743343616504138330 0.0181868518421569462131425411378986 1.0183542655576099738641436406076165 GT 1 -2511876148803257225531306402.0127773076957431725624784929192226 1.4119901287098514060845397176514882 0.0122849300684045523344941915311158 1.0123610135843750361111427551222185 GT 1 -10448767926228434.9244980071385453390467325332758460 1.0855149253097709914189198643478550 0.0717714198354407221735204560590155 1.0744772616939551418124511485604058 GT 1 -402699350225295881511926152886.0335270003043125609458525762594144 0.5344396453355194180525229921676056 0.0955026214057729086056846801885837 1.1003758723331571244435496264647461 GT 1 -10020128815397585474265609881899901.1511193524597337117340300728700358 1.5878559890927182725360743499919483 0.0951635192041038514356097515917927 1.1000010358109978042695996785588168 GT 1 -953345799314925294311800249125552973071.5478237013129927158325149541020122 2.6792155537721901444743350525301240 0.0803449515393395780146925257679361 1.0872642128223348023008689872386833 LT 2 -1828122405757766.6260674175319968746496589999640915 0.0710739925696293776043064015474594 0.0039543673521208085765115789537722 1.0039622065355303439442452046868710 GT 1 -109945.8931315599452454755456993586252697 0.3754055704123000952580081620884475 0.0833164392274260026015247150689446 1.0869929472257418198814856168696995 GT 1 -376103093192276497134760028596589049.0113092158906710630395523290944291 0.0165136117347294979506848833630638 0.0644212780358117944703814506398962 1.0665899871940616438226215865962974 GT 1 -2561219749.5927733822498618847496953460120859 1.4855045854540247253504018929079671 0.0187601574405828314860508326402044 1.0189383614709004988245779330195518 GT 1 -305849400666825.4213180793086704445814969377518031 0.0893986317758501371800975272420081 0.0748105447930558763370798334350094 1.0777567460017957388464897360573942 GT 1 -872227988695278177.7324799942899885594165588507402145 1.7032589423174853261872088021783962 0.0719178941879569891765899505669211 1.0746350740191513404008815227123195 GT 1 -220.9217057379472933152847084711916506 0.9618414890651415147268493211329983 0.0294482424311306114905319087957994 1.0298905469668058031357629312023274 GT 1 -6741106159535668545564170319788342235681310.8573809013438589502580573593167674 0.9213867157435908104355403350280119 0.0562632902673626847996939141971022 1.0579080609205640610212366449316506 GT 1 -516632224060902108980.2997616612133924315173414433269419 1.2385889215794836502379266478153753 0.0555130187756134703530510864379997 1.0571133759107032832045678187164981 GT 1 -8.0400926410327200946084893607826714 0.2903286891147702668354349970056979 0.0232232106047972869041969880956423 1.0234971183483831837863277547641634 GT 1 -316308523347270651044359252737565537751.9650141363941049765716150542138978 1.8994342886412770103741920179002299 0.0764511053609304379326625358619043 1.0795315358184745326110473882520234 GT 1 -423718090885545601.1122313932957612495056745531762023 0.1427000232442429244236933324590316 0.0680131626653569559778488761099745 1.0704365874277756960843417498809245 GT 1 -96813431119243985386641804447187.2273122799599685307378338857741183 1.3125037601185788281817063328510015 0.0972768599030326973062565297218966 1.1023393726906764395371903285995146 GT 1 -3635327347995237.5307701095232768574431131208278017 2.6267756680148946323524080087788400 0.0272127032018050714650440480440638 1.0275898262455094453823543544848727 GT 1 -172608324376714806807636619350251246.3715210031554032246055898767370572 1.0004376306901864674110648540270628 0.0541896025307576154171167573721357 1.0557131555263355096456966056431052 GT 1 -225969314021137387568882790976219644424699.7227409515993592075534970078580172 0.2663499400216014619927563568220448 0.0634520894087881332859082369327859 1.0655545992061413186362466999736428 GT 1 -879279631979518684103287553233.9363167547805493618899720958307719 0.1433073167010132697711748944105950 0.0653313153622412565216028590405471 1.0675631604705374474384796742624234 GT 1 -12423.2982135092997754749126700037817947 1.2769029838861639814812461097463245 0.0277388112541548901386900723832874 1.0281307979170029083640461139337855 GT 1 -105607126692222164804540160508189593591.8425356711797286970082925264238438 0.2347924763612960460177321579751297 0.0820362502116546133853462713058003 1.0855973773893177533509626851276980 GT 1 -303990105927634246615989380270241497212598.7425091522691205775307955584637456 0.6339729171153448904535836573859363 0.0744736325966970341908086088948091 1.0773926574734927483078653449553892 GT 1 -60037889898.0993029854608236933504152406753745 0.4886679208640474824719245663927669 0.0518392421852515553703607193569300 1.0532312153495041268480511720546876 GT 1 -74.6450737125200087348511282095342293 0.6009465198837096276242067971569697 0.0033813438661022143107118418077832 1.0033870735288920706969506534760252 GT 1 -132992331974569052.6269785041513263700343890534477820 0.6625443467165457208667061378155082 0.0773348854421449310447415664475098 1.0804889331129579573397206958724173 GT 1 -45382328.5258049579366500493626133601800187 0.6714725058291157038537355720631446 0.0219294877038746395733435747486944 1.0221735130839930599621317053989662 GT 1 -17898216659304596895875667713.3433950325791319851126284713585108 0.3424668771646690797355129129336136 0.0200144179108547015152515838521246 1.0202174195796776154619580954770934 GT 1 -750246009.8910963934368260662136768978662098 0.2308795914898317790486565756715399 0.0932001441262044880224291590553899 1.0978335192881278579466963802059880 GT 1 -316922381665927868224619143112650983.1216993742338738174008027429023126 1.9204512951491209460070697261938279 0.0966751248312116410139324604913850 1.1016730171021200602935870981953312 GT 1 -144640683465021410085058.4653053088747031945221987424847428 0.4776319524610142468159869874819567 0.0580781723483355677361930481262101 1.0598329933570489797694976706490653 GT 1 -700.9251508099492712512082962416814297 0.1858650619644924338762048679910612 0.0827178043033207770677211736713456 1.0863401161210666083084811625971125 GT 1 -2812205770384847419938626299835.8314176909179561571991260108555779 3.6146182646600131202287973722798650 0.0236691585112367937738577796178270 1.0239537730735375414705846531738489 GT 1 -63383479861025.7343559982176162645645581476561555 2.0192854727204509330070951927247928 0.0796283257723514868217783183510003 1.0829776967968392839146788941514988 GT 1 -10025716166.0273258804830725025075310431761100 1.1070519042862178263555653815997025 0.0438080842424195381813474477369508 1.0447966373776618284053645902512445 GT 1 -3327297233097631975544324723693532.6261830465713249303857927825516315 1.5406538440259729040650598698884227 0.0979891354944591880301366993006486 1.1031287140856881603358234676450788 GT 1 -22745783435756994.0917716870474305816697840787813245 0.3079283331948216832624303963221354 0.0653199562623188644203506965800453 1.0675510074679969278317484673295218 GT 1 -137484112393366318.1287111007907170669967638319445581 0.1172964759988049259951972833121689 0.0772229629644532903849189252316402 1.0803676370021779712420426802057318 GT 1 -3.6092010437224501701118843496214620 0.2846825624734892378462352233249931 0.0270797659474374956214424860374024 1.0274531795476202686263204651892377 GT 1 -19018979492.6439586781169078853501878747761915 0.4871257387249349469324145408117300 0.0854356953688358005944404823686762 1.0893074969134636509762153978040175 GT 1 -12.3282463006590589440128507247867762 0.1143395557468443582118516744799942 0.0811114139753833097563296840176730 1.0845903978990352759988626802289020 GT 1 -1112766391937134732460114976.4370511574570611732541454632936360 0.1077887718518540044916128948767795 0.0918807552557055748226974828229451 1.0963795821925575326421271060039030 GT 1 -8425142989962426.1859810512068152973734536230566063 1.3067238090135877672447135338371969 0.0184470962566162766823218938210506 1.0186193658080003146050585072106400 GT 1 -1003606815212184885730251919316638.1082545312098584705554369693063510 0.0723719204676270010667025081603812 0.0621747120407069337871275009960411 1.0641916074958217098257230761507235 GT 1 -442052491872488623940631369396810700020.3903177566786858724674549904477145 0.0194938193656016426734957825752645 0.0931368462249520849420197908446177 1.0977637181167510885964273638258498 GT 1 -732837502492327087637.7755582958280835278022067568970279 0.2623356307598047286177042340254869 0.0861232637126378207340524732191424 1.0900595784526808312040319328626219 GT 1 -5812657816757314511973708187907736965148704.3378082900591738730484496773923867 1.2092405298431482869581899560024702 0.0825446437329094015396545476462927 1.0861513582567713330961780126865214 GT 1 -113442715.7248073981534986165731519971225401 1.4002840476684937249413791383014479 0.0591959222630808158468652740301420 1.0610203675179594391742805711750469 GT 1 -4509363437679008224546838749219193196180819.1387111825053685504364999918179938 0.2984584960577031032478453866638980 0.0517719136946802486833020749774350 1.0531602082975397006765873712763087 GT 1 -5051524835884034046532329222.8054471634743734417915991463812313 4.6657852479228931728171313880246253 0.0129881532782630196022709778175756 1.0130732368631023940615525618448305 LT 1 -21.3945681185052671891119597634381622 0.9754516632841728683941323001887972 0.0289393629340154293793719484225453 1.0293663645808947036646625813135487 GT 1 -635923876065231908004004.6135640260318549111553626109564552 0.8532104353767792436302426679021456 0.0766036746232342860793720371364528 1.0796967483661965207255507046943594 GT 1 -5.5491526615612058915792169445564351 1.4331620918471622519095352634677105 0.0280965822461487528918549092660800 1.0284988439094423791125167669954071 GT 1 -1530321.4570922299142143976469217457438890 0.0036845080345572771053342460840355 0.0712411844790837642786783546105448 1.0739061911826538763770600434513976 GT 1 -962192623545008363526853.1017931842889828185774387312142942 0.5749225430264711377046191375305423 0.0156285054202080060892818545415247 1.0157519180362783735876872251586321 GT 1 -3469683869989112881564.3214150927946364922282974430305016 1.7552348483317730790593742371715231 0.0251754859209532036600679436390818 1.0254978097435865693493619625655597 GT 1 -1585367410180848382433142025545157016315649.8745602792110102618978195923778036 0.2386963020382893343503394241453924 0.0241788959339517240756059670445627 1.0244760043839235044582114772601579 GT 1 -577556551488903624191593827062718736768.2248642122334037500968466193976788 0.0357557531258350751039345682695813 0.0240234874382739102653086337139396 1.0243167578568427466339562833110859 GT 1 -1104469503362.4629999720203283647322457512876835 0.7998896802103720290319438487578462 0.0069185446985381112499718987920272 1.0069425887931825613608133279561486 GT 1 -453316204197554901983911545266440515.3500917634584158633322021451823791 0.9719408542946440912451835318645017 0.0378890030147560404976451335361968 1.0386254534908191503731208733377705 GT 1 -74662623758563201801787837.1813527255756711020984006284598477 0.8406723754406047398600155464957697 0.0591210208940987129436832681708094 1.0609407564817126272812912677296712 GT 1 -18519113341955152120479436044507712158746.9711866356946848304074473173256654 1.6708069220334953023385322987579446 0.0945731783980320917871168727621062 1.0993488203833120754387125698804557 GT 1 -27287545914035950147.0196148457485813697419319845061067 0.3390768746748144638748629097986981 0.0114302874494504616721837738260323 1.0114961152865124110440164095336061 GT 1 -68725387802028041297231.1173016248826794788163063851796294 1.2076249987344486433024003997349712 0.0809763063394532876838095188797781 1.0844433749560289457948805293019336 GT 1 -17217822490345747443533655747784032906.0284123365110302957033150016123522 1.1686450408379028358265370246840945 0.0122906837189876812129120446475458 1.0123668388142580956836303912726838 GT 1 -4169419462687256531855549266434435296564050.8352054632433234068197178892400820 1.1191990305853639395937830108710383 0.0952493276741563968383938433407621 1.1000958734317985829579069658922606 GT 1 -1105826749886788899663851976885926149988220.5483883394057375552744438592753016 0.4972095532356687393425304465786196 0.0786971230429157660125644459320330 1.0819664401573925576525196171585020 GT 1 -3238919694774630983657553.9498102903545147466043119811728456 3.2696909071110735513868788868152378 0.0964350517746714135557826757742903 1.1014072863919852796310504565756118 LT 1 -1791837.8199690485533585753024729413014344 1.2746519762435111574875282286200189 0.0463468455711348613805558202021608 1.0474552434224307888335174859611385 GT 1 -558581.0329451164735372822712352068726108 0.9578794824642755324216888274151335 0.0102800471932563465801174767440242 1.0103332518232346944140889963372231 GT 1 -18716223495173946395265602445.5216379149257042870634000940797802 1.6286838591820997621006310163673866 0.0416292316167134880064473442453872 1.0425205525209010879915968288530966 GT 1 -245444260.5782420856473915431093363237772562 4.6738865625317162874231014068678987 0.0818069185199092563616140583944405 1.0853475820678806262088295888359631 LT 1 -2606775719392573173343172610986772666560.1855238173603659396732440732855666 1.2243236292334346389186830242040786 0.0353746563012987090860316924405997 1.0360154979015164301175022184110261 GT 1 -784640892784308303947089924001917141882.8318591275646646401907341324091302 0.7242834621348206306278725787468552 0.0713001431287734893087156302895135 1.0739696743175260999213352270097706 GT 1 -3273517732130434985758887066050136387246670.5334785148032616529309686138757932 0.2099214734405411442599935777466079 0.0584417106736338729845506403095467 1.0602190216740306991661683439953213 GT 1 -2378738728170314688875144.9475837808876591733332064578064278 0.7291359504856114053176195320585026 0.0641710842193045736940510023776544 1.0663226014968446014353140323894420 GT 1 -29516714160913709196285433750772098.3326308507276689648928620397103971 0.3575098138581734721598212447348844 0.0137068937918131175672023022313047 1.0138017005952455623668479617596585 GT 1 -41164325218618257304640998005444426512352.6492245567771548707815109555434485 0.8988557970420902406061965668944831 0.0066728675857904942280998644551928 1.0066952307063120170455783297794395 GT 1 -47341862.8500629355379062694095454897033106 0.6843302259991895051300368508245453 0.0218190574791706718849369028876321 1.0220606132575935960994436958507995 GT 1 -950788657.0690097641955069225709349660395193 3.1786765774195735499598913621186813 0.0829958666498323893844284318990657 1.0866432992656371294425879800822480 LT 1 -14878082082159.4646381347514838859815750238559377 1.0025160064373079367555259985172581 0.0909601084974380160269614551191190 1.0953663007262561579477081332032679 GT 1 -876458.3827437476040195528262209470043891 0.7189836501341987853741829477545652 0.0278831707133560756345681239598812 1.0282792870051613015952517071275201 GT 1 -51913919964188861.0453788753421438534777579022935258 1.5156896043661527416165959244086469 0.0776492152127582143046757014426778 1.0808296670586827478346857745701758 GT 1 -12684500373019426568531054004908745259.7913992215492387389310599093936230 0.1026378877339089436786775348229683 0.0692061034441401083053431522359971 1.0717174047780559882973164366245871 GT 1 -7452307.3918209041577602478044043836486036 0.0343018375083855865156552837895397 0.0393901317790433395187031753921848 1.0401869168279599906109929065877863 GT 1 -241861369252698061317848223167855746.0832627024702041473464691134793276 1.1396447166458183556992073269173265 0.0240791953538539340010133211847552 1.0243738386418861298199844320645530 GT 1 -91628947090835209240395806096133731148756.2704679885791241861268108097909719 2.7239830380008973088467700477888215 0.0853588004475321541358219007497426 1.0892234222469780403061822768886225 LT 1 -27285958145860526542390428331586143.5607593160965157595854861198362390 0.2135188634454655100307705259619260 0.0566431835727105530271066043660533 1.0583106835836313255652832906086227 GT 1 -23742306171928559833630182898922972541682328.4473673040361875505926439706937652 1.7381054739511985219882647191475640 0.0921597933551642160923325312556210 1.0966868997391484698007408066596738 GT 1 -71251437801623036912952.4366645173836960172048340808877078 0.5129940389684621629621885527456440 0.0337832149161551177689388784154081 1.0343670547462759082737350235614951 GT 1 -1058401994346330580094343604907429621.0172601542227326292238241399150602 0.0830231432655493765435253454322012 0.0797059119001571749585930555726851 1.0830619990416461100039137447731929 GT 1 -295345352658596584.2193899264526102684529847987816625 1.7406188838527964826430629832987082 0.0988944654705564287710427752312902 1.1041328977897003064757689047357437 GT 1 -4650171526025.9600490891116599674572036276663826 2.2334002311144284832825787288571682 0.0522775639415383137021765510886691 1.0536936085660408390580211516874542 GT 1 -82675890283657874884604.5462610511300940933839137107481226 0.4671762505553403595611016760447481 0.0196300627760357282067529479314811 1.0198252915845691995814358790222400 GT 1 -684641650627.0388132179292088350580853253426651 0.7673455713559326017077610635688380 0.0018641987376351311554271063560491 1.0018659385186364272689143585237601 GT 1 -53800668923012879732238805145063142648.0948577685475376022422741188146854 0.2487635352122420213314376817835356 0.0633244076389354595189470826683802 1.0654182761567570050957183407053726 GT 1 -106319856047450337509370587038550.5906907460931986386013974522231255 0.9957961579315788604257270391571781 0.0223877013589014305076403605853366 1.0226421102009170168588481556362642 GT 1 -366964342219726084845213201773260955255497.7058442643865395807563560899231272 0.4478110504848284638715976012865544 0.0531200287864091686058242358828157 1.0545829401716203806493693548130403 GT 1 -5742024286490279638022485959487122038.5201662367255200839029765569197104 0.3222187972628315771239723825134893 0.0869305152764041776961723711065701 1.0909432953426671032684669367809294 GT 1 -164589.3844569674304017934519131477757989 0.7442372280096950114659082069427389 0.0811626047835692545498075063843126 1.0846461089340010165753909822435954 GT 1 -564693036067646567475815105632614.9023420083105667648373416942471149 6.0455930760599220209157513905482851 0.0367347957790161242582685645463945 1.0374265113066604364700358628262435 LT 1 -8281636656703984475.4924285716259627317103750816864823 2.5977653808223592841282172147697459 0.0268629447928628814587446234040780 1.0272303483322512077578106178197848 GT 1 -3259716678746016067568792422015210637156.8529853184493184138499137206039611 0.8091870653423487707290360040006788 0.0015972865710552564658059644330406 1.0015985635932784183222599647612412 GT 1 -105475784026.9432725403087821398341802072526664 0.3607245829329760645469453790895887 0.0537332968616966059272034416911897 1.0552308224567571790351919446394668 GT 1 -3.2493128590954940783368552444336537 0.5803050794229294129201330830155499 0.0303608095480940255741803938799467 1.0308312452884731357041538927948509 GT 1 -5003970894816.7495219334878975300854490805740548 0.0348952304679580282935655842862065 0.0715841664470502589056273938917027 1.0742755500601690705453891811678258 GT 1 -5089748041927414887659341932.4803753445743089676190660007648329 0.2392526866806760744932872754331762 0.0174835776898318764248983401086552 1.0176382205589022498047478899892722 GT 1 -1541486207253164475328743494203834655.4175943858531949596888148338228336 0.4271931802239367761603059029269648 0.0730203886948193553060521344789324 1.0758237079352030896833626542100453 GT 1 -371492077733859.7723586884588817482329741553192988 0.5199485349216050136646272679143742 0.0966605604784401039285437629844576 1.1016568941813832893022160499223560 GT 1 -51532674704719423728.1338141543340593868156334464635481 0.5883411010069984349278582199202475 0.0982077303511162345506549820382806 1.1033710851666427435555976947891373 GT 1 -29001617868463329247609905296761091791.2303589098792361136825302385811072 2.1521957614418070422045287495213655 0.0703020693537622814228086457876116 1.0728955513523838571746347469112230 GT 1 -15003275474839472806069360.7533044832548047703647882410134876 0.8682312912266154548030343326079826 0.0454714310745108868907676354843345 1.0465377054884640374599135924338846 GT 1 -1222523332563420861282383.8036841702709836690420902494102974 1.6233255708110441854382206789366255 0.0824039027830604757830706723147136 1.0859979664269589609983891156413912 GT 1 -9913627124254904.4557395263438424540814077617796622 0.1896817513234597623804527684588815 0.0483973508081713410285460514632272 1.0496077166229634050062773830432242 GT 1 -1937567912732318414656.2903461489704990399832540122459942 0.9721157213149135225889009965420794 0.0330710635153345383906171081603316 1.0336302748697352164711890246141872 GT 1 -1.9538510787844504473307825839098200 0.2540468482877103477441337260151331 0.0984374179851175187009417769698235 1.1036258188759084460239741879654985 GT 1 -5692680019359085635365664041539991121.3421350719250496282308805270563419 0.2461806024210112220508592794015093 0.0434365316825263070603314106841980 1.0444081375541507635022438032537264 GT 1 -413.6802853693253575322880034043730785 2.7821477623498288999905459646366696 0.0104595635173036153080530162025901 1.0105146492032974202160745735373387 GT 1 -375278615554634223801.1109751386930926874669972821876416 0.0966801468042820311997751979039645 0.0144090379276397440512650076709807 1.0145138562202100325893547243251886 GT 1 -952254832.2882739960364401786807860478223046 0.0327325177479194648976287199610594 0.0701847746445637854732927450772861 1.0727693949883102957028042563884258 GT 1 -362204357580399969499489026870356464408.3940744291710327456655030977210145 0.9088885791653219484839676079539598 0.0748035686194512827735492747267793 1.0777492057652913498385483964363835 GT 1 -1623668239029971374535158515871720.5793037171174390723934614483341384 0.4792232488545035383815403988266789 0.0541021961448611106621849797233232 1.0556207455173314644329415233875170 GT 1 -14197586421503903.0097151891333585206288358851428503 1.4477869288996101361466129179278760 0.0749779285005148415804858880235741 1.0779376806738584164303113306114343 GT 1 -3230305837945452950536058634526.8631495866423032109558741840643609 1.0096302056316447679422047766928093 0.0451469715517003239774880093783723 1.0461978472575270122329070392705936 GT 1 -1348313281666717954027756734830.7353220621906391572583752639957761 1.3785313600607454694577757402347171 0.0561531357652872527793999538701765 1.0577913460860850189379572670290721 GT 1 -6618293430210166362201972541825916508150.4061352045529640554203922553269941 0.1004184837304074040057608993439828 0.0356080675740372481729831778352457 1.0362574980917340954675259762777177 GT 1 -340175371910635522885540130972837114238622.9218053758972285988176403689014719 0.7530350553423451511241997534087260 0.0434216865951915627951734861267180 1.0443926184875798812309773525924859 GT 1 -133943754446173811220860842319975508777126.6444651947526381805671318571052776 2.7689743975849727614055661410173518 0.0475802750792493648097516455871257 1.0487494538313208958788931733287954 GT 1 -115756569711607499238297031038835.0323961179035406021153611500113907 0.9317785364477873345273644475173551 0.0987527918331151594877111617536927 1.1039756881221619620369063699875326 GT 1 -96870346825963868876275592.7371076839969627244774973095533146 0.0937141887529715485570206580083075 0.0666144302953714186658939182402944 1.0689369055124023415110204059132728 GT 1 -379635141890370408426675988037971987.0067978026784530871501055352752644 1.3242328021692791381641457592684471 0.0591781065001821626113554493569238 1.0610014309565263762082768136844034 GT 1 -764143754899406.8807651379346752339534193144008118 0.5968509748268594920890596359262521 0.0834843731989254453980124711036254 1.0871761613282872968958677285951268 GT 1 -5107613495.3320730106240729364816344196583235 0.5236313107595884445467378046096011 0.0987620618663013207090893544238929 1.1039859739580316986017978201277052 GT 1 -13060505763.4397141800646430818008720529892238 0.0066214174027994199783592807217229 0.0010310272604559157717485438471540 1.0010315591346777932333027140873913 GT 1 -34163975454605161077.3623593476216281785018732737518055 0.2714739188372340633585779435616934 0.0190497153364894737656314165659322 1.0192334989236796610623364304970718 GT 1 -55933262141325.4877930219858786460304265691352133 1.9901500799395431680991913518466345 0.0746881576097202860321756110530964 1.0776244713758087699545690613238279 GT 1 -3316612422005320131909062.1945224954479729589944952272054568 2.1373543659657960111653429895025589 0.0143515483613050451842891063833314 1.0144555278751585624152430069057660 GT 1 -39942976480786327680996961054955010.0655551509941573883457584624562100 0.2281454327304850377752125947216704 0.0224529604992004923317877175912475 1.0227088660289973165818154147127314 GT 1 -207076054879376598244465991302852.4710757531064724000348747935370086 0.5064602545627273569141712956785486 0.0838880063351108425022052616296477 1.0876166579553210263453926181840063 GT 1 -243041693389.5749950675495661378981100329935775 0.4180714379120363362192508649678730 0.0452155076084176406275455509129389 1.0462696263841924747466879452932016 GT 1 -55041.7771206202142523516168762111438981 0.5657131810095753873996743735590794 0.0226339381035484261551741719695975 1.0228940175886605993074332133921136 GT 1 -9680130857848052058070212.6056540068013511671792259830660310 1.1871871844918493236551130289382762 0.0890087765460385678497807997643202 1.0932220157378925916558008313679255 GT 1 -11089033621928322615733702522.5041096633942932825334491067145998 0.8034347547161708769843851995406815 0.0022869504729289097275467139447646 1.0022895695380384527665494735588970 GT 1 -562344126200684706040.1603715132598907855965982172507151 1.2860365965598448467384350479489617 0.0674905529436677416704132159782952 1.0698759966239744561135769941767053 GT 1 -2733.7665597130058118500303913185221675 0.0898425700462785554782210094383503 0.0856961551275982728272302338873600 1.0895923285571161220706844108160589 GT 1 -8827172834632658204766219.5092817725183171836711872184882587 0.8133110740218125926725162282972075 0.0896820786290321125535326423992552 1.0939613763407629077955708281223427 GT 1 -1680314326551907578400.3654385669353432418589008052053059 3.0354722152614623225354086200792225 0.0309826627751571985609525423625988 1.0314727753785256813709041613086999 GT 1 -17560479417788545516454108724437848761717207.8701576224078297126437463042646096 0.7962566146746091570503469722470970 0.0053229927592882187852722735569847 1.0053372103611511561109918011409960 GT 1 -2384599184083338782308580966772407000.0883168175431691918689248570322204 0.3296120100935318912460514304509462 0.0200729182496844338702223634699839 1.0202771164630402686289310559043229 GT 1 -83895097610548968530186869.2644102619613123752945330892526525 2.3670842223215220161288155252745150 0.0839546346637053848214961320154219 1.0876893900580485312369629228797709 GT 1 -174463758434463363075748.7531890832860476414947155125698297 1.0911377176648122499724494042196506 0.0954572014994699901182184979238351 1.1003256579632525214938086809994589 GT 1 -3001663598119058.6919815948369978990074088855933775 0.6759122469855396036359126708778855 0.0394636882787255641833817411809003 1.0402634924685709305549652932987163 GT 1 -863424442420732111774126559512873.3453687823521670023902219557574685 0.4326515139839174122974787108651014 0.0007427494644115423012694934326190 1.0007430254394569905473111528819231 GT 1 -47459843127222995894.1976903625586146337396601904200782 0.1650891616261559972448542348459339 0.0094673328366456196753991655807549 1.0095124329094810584281785016853908 GT 1 -2815679444096489.4526876134921930972348644404031007 0.1454985330651368930802443740109108 0.0761355266550531563027926294397594 1.0791898919672219042871166113259339 GT 1 -7613018159.7562568324750629701834871996725310 1.0493382531683594907396954807710115 0.0393703582465046231243819595220606 1.0401663326869023485916055350382802 GT 1 -1.6477367784820085744716302472090167 1.6172984594217774691302035811863768 0.0697030416137557930451931860021050 1.0722514337107178116292862654302510 GT 1 -7470218933987798674102181.0834190685424706578349147940070232 0.3196158717702543075029778153308625 0.0196667879067003663461443741781463 1.0198627527685140726357121109537188 GT 1 -20.3614605751201130291542809775507534 0.5763905159646116984937263942487957 0.0780907182364396345346611445258559 1.0813084531476112695150305230968182 GT 1 -642913938424.5382734872501866134439159077100990 0.0023931755123567486659033911021049 0.0368011604081888193064185440102978 1.0374954091710271137789057062910626 GT 1 -22.5008460197160745883047479050198465 1.4099769384933551090811403901500076 0.0116368415228492976643076803312104 1.0117050794624614669508682956734629 GT 1 -160280794122266319178548532048758113601.6053377234997662802017103499122936 1.9940767561604943370311928238611345 0.0799185174872485730202161454685062 1.0832930449123173977913238910283227 GT 1 -1577060893016001411051973841.2251099244495785474838861189434418 0.0296655016304329877572704694186496 0.0034936416351981090177951545112774 1.0034997586524019659540565724331482 GT 1 -17943.5081354399685465987994893440652310 0.3970707836140761469647741007427151 0.0758929446145560998092565440189364 1.0789273532450403132796756517346140 GT 1 -612991247970556825389969847433.6467321027341989186352525563713064 0.2394887429797004739646405533087232 0.0758241155538268795592789829750455 1.0788528743227089654559331749055187 GT 1 -2.8130067704337043159308118496026499 0.1374659749136416991751232153099530 0.0201832312119676258231837130483769 1.0203896954231624271504136856574234 GT 1 -11026102003432596717152073926682682.1148737179077925121926003397542806 1.6593278607410052014818817700284278 0.0217526767757979617621025033227406 1.0219927541854666614176030818883999 GT 1 -49595540988461198910386051527.2556345201249481914143500317855825 0.1379126721588951617732270063870025 0.0992939108831866279226747616876021 1.1045762797880533765384309654953344 GT 1 -42407288149429581118056635643634705908437.6051010609337401800132381614845785 0.0739465420025109873008048855505933 0.0742841632442636353881134350676079 1.0771879631847937407902897628171146 GT 1 -891199917562744037913688776978611.4779851908038469214834027245537934 0.5872721187498499882930463966274640 0.0762799472588590919615673216364179 1.0793462264699859188664848077861681 GT 1 -707660777398198950387349.3785082031731307864125633689711813 1.9259543480887299414798657964929469 0.0455603968375954340258727886224016 1.0466309137089569461842543546500582 GT 1 -247962.1194389910534237719826672601070594 0.6786154553494945279089738494226344 0.0948360416569064419845729317172750 1.0996391822515296524516378237624163 GT 1 -90832279261524603488547348797661489.9493797381479554170329893100342480 0.1647797573482751969899972219010386 0.0061527940789268020209272288151572 1.0061718005183261129846386861952120 GT 1 -859947720197087.6787402452979945389511735726531512 2.3260723695668177426753822645535508 0.0290157202562648525446158736501582 1.0294450005811517993291700642669750 GT 1 -1965971320511193122.1916042031898336365506921051716610 0.2650221626209439721346122928935884 0.0733625946820241401277740693401018 1.0761929384591178738602656092187589 GT 1 -34503934687169710865.0631160829230100144682045908924993 0.8009024532152942001041114958043644 0.0417208301008812660893102869344422 1.0426161343821559394549981777772892 GT 1 -2125119045550517050696169.4293139602775444430957797169168977 0.2072755951359055182834223005828335 0.0192987414118320963495133212692836 1.0194873932277287527071745365700081 GT 1 -398604405678577889739388080797237234.8896605244123920485795717014679150 0.2782332709037397997515107676927159 0.0304655843530866544440191995585959 1.0309393065830009309009022348709675 GT 1 -1353300527586175.1561578257719346432007183777277238 2.3083811182291436742224893367797826 0.0105420528670936331870158362439131 1.0105980139503540437427767540578632 GT 1 -4420525873.8498631009436444053447217522883864 0.1438641516392875913624000192645378 0.0836183177966958870664712943062577 1.0873223174684604080565982612913847 GT 1 -3064655818840347007997010281346810124575751.1005194385868782725090505580991667 0.2891976065738178530215843920198994 0.0222364988106340946868008606606406 1.0224874570149853792022048364379578 GT 1 -8301132801742418882.7377197571782477822836663770313175 0.2440107376554669883244063224868672 0.0196146966304865869367406298788248 1.0198096178837101317754559694146097 GT 1 -1989807559158102790.3353099632697829632853685740653200 1.0752903327732678830635517704507736 0.0002413040113284029547622858315164 1.0002413331298257122201165096470905 GT 1 -174899266546156329654346322823.2920147517615939139366725712270052 1.7199801320256279628727628834181617 0.0759964658857518050624715074433155 1.0790393825487975096449732040115361 GT 1 -247512.0113016424283565829652962805390156 1.7869797569637822948183324129132510 0.0910561162497560918654366002546819 1.0954719207584195111014973233125270 GT 1 -777001.7667544750448023237488037482637374 2.2284200177872093591458317834971466 0.0703967102160612850247261526824487 1.0729973539665496709538939089196334 GT 1 -6.2822414795960346893008573044895061 0.1633076169043644945691094563744821 0.0320033970302126376516281262277582 1.0325267010404498078492196068064052 GT 1 -1069487852161575815116905011747913.1560999398525877165360456845792785 1.7329600149719113568046442672156269 0.0134070611720001324587863068896303 1.0134977472849408232200085575962928 GT 1 -99042469353898.2640679588516056206576728477375938 0.3304695481144146816964116101388615 0.0948160210734042377190197124082844 1.0996170643115570581587189128093826 GT 1 -22356778521746120326735737751227255954.0618555542156943176842480284980083 0.9010138671713984768075435090125727 0.0423700788321359601393999990712101 1.0432938792283325167632284861307706 GT 1 -16449192512229.5723436020673245904917011679552618 0.9437110865042538351788093730518103 0.0638797217494731887245459089909857 1.0660113083558627417486611262439634 GT 1 -33076380760005080117581729627099368939.5553413600380854720107199219160110 3.3834279436208512650997075188671505 0.0291461105610640891238888223678518 1.0295792963294427993189336532092982 GT 1 -23396.0332672825742084736651668633278177 0.9619518214530768074748937855150767 0.0550059440625333505511256884807288 1.0565766415214393193549085825995703 GT 1 -2789632296.4211310077035651956436265901408422 0.4406082843231212584912082519685061 0.0361543511513423929091607072963175 1.0368241124936372914533037716123270 GT 1 -35.3497544426007348833553126946088266 1.9855716927739403414947330841617501 0.0039398077516510214949566438343004 1.0039475892393123533628256405763250 GT 1 -99409121998862850230305167531.6157934607110206377397720914214978 0.3897055810746965801503577488678014 0.0670188827999827538273941094704215 1.0693703171391532843170171590195721 GT 1 -667958030594098826988254503.5135361053267587832156170670710025 2.0789964280562285701265478730732915 0.0366147954943301788125289766465145 1.0373019424857704761071804163923728 GT 1 -83.1322072856071897897110218016784570 2.8355344064226954223729967485609093 0.0648170061226443681637688214732030 1.0692584281337971890030756607349185 LT 2 -654963328693413261866789760029509368.2703133754333139078687710575435852 0.4155620207671850408945103996789070 0.0001920285826205547088595569798753 1.0001920470224695161582568687806758 GT 1 -74210070188151394362433989964423528991133.3120156764148285433785713908908945 1.9386745140241197014291956909754878 0.0896048778340218380126559549828110 1.0938765735264692627565280424140481 GT 1 -37680.6900106977972289422706660956961981 1.9861262330940495154751658876823491 0.0489151967914716148234511484580190 1.0501520477430675533735413401054244 GT 1 -678043480983112.8806724985173467793180363644122128 0.0494197938300491401227305123313399 0.0407830579361992288336875483354955 1.0416380127227720749626579322318385 GT 1 -4267449279719089185747257408262250364289.7143579153777182288707770367010558 0.2657532004937507146408140868369272 0.0097650611150506269874977042105657 1.0098130520025418265740447021840771 GT 1 -50329453582666497387033904197.4645142829585626626056156535857792 0.3709556841528188488578496628575698 0.0416082546286449594065201307410315 1.0424986645844260831706797290382980 GT 1 -881437088027353185013681477358172362690.0552037862258446545309798880673881 0.3295719062220935051585724996188891 0.0655080913980603897203556406221137 1.0677523106559046588477900889471080 GT 1 -59802635244117785.1953194268461106394996712696437102 0.8538915562379587072940438310540639 0.0723543182507368089003072613054664 1.0751054275631905493509636628003888 GT 1 -886151245420788580.5577451698672686357696476686560588 0.0141799811702428700504305699016795 0.0360764896058658423535616825602828 1.0367433335838330983974437613400824 GT 1 -6448771437149905885939628104025674220889219.8369892752247327097179887234271020 1.0955786716028616781950306860807375 0.0603038478570668217580305630868719 1.0621986983733081284319671016889752 GT 1 -99694254714226430310.0292773119112848809354867962301605 0.1218626104731075829475829035858472 0.0976772132450259040038486993898279 1.1027829662221234803438103579529005 GT 1 -262258770.6623960937436453217165160852578715 0.5221596002357835064672219452350586 0.0648984867808914958516697847441571 1.0671001852989606131623913428781254 GT 1 -23235149821596.9811916251700155673795280869378547 0.3673637887629441459853646640674520 0.0824892550211855041756493511405697 1.0860909879734150227166296246452339 GT 1 -17130362435577.9217164164571061906438578535317397 0.6637874289769850323429810900776027 0.0251386239107141588830678619975331 1.0254599964625556906607951774632069 GT 1 -20625272.7294401621002651965447825310759343 0.0429304509968575113186829085188901 0.0008657301400206513259658477011859 1.0008661051007838306803443766017868 GT 1 -1250860796931.2511611730027435020895536448865551 0.7850072003385605951174682395108042 0.0656521576675450666062147392248493 1.0679064878877385005687476003195703 GT 1 -21681361252099711164749573813600982662.2931264242157446264962493401023109 0.0873336902261023232511580281429647 0.0923644818763921989548089876424194 1.0969123927262512391975926860557924 GT 1 -30608778.9934465163667724208312009555362570 0.0904965065707017778803124108532269 0.0363452790328285629684890985763199 1.0370222218015269323104162366204391 GT 1 -132.1115535536492218945789377979848530 4.7333017994072351310140007585721670 0.0965276625669416799189921437188871 1.1015097865374846093746061954505019 LT 1 -26114761075508789075369373268.7688175967372394035569515834613338 1.0844417824897848739063870177379116 0.0270402484609132633998882928660000 1.0274125629763802396318943836696600 GT 1 -789290675481308995930934786695423.5523666700103558356649182407362582 0.1141478731965335760584549991695445 0.0954865714013928465409320682094516 1.1003581278240401346015097382104048 GT 1 -121958.8198433864238776267961952115037915 0.1800838821299114771438728526460181 0.0334930196434908573105952513390157 1.0340667580561496670782972309380124 GT 1 -19874957850901677182927531938231077076.0365000476626181410726490224439388 0.1223220490810253974474618992900300 0.0921350175566725132884967196841652 1.0966596091870895391703493961986397 GT 1 -967380664690687530192335.5220738138116903890350722089270446 0.3954620085185579343772746279101415 0.0819473590291406568049246375787717 1.0855005469001883461721993487599277 GT 1 -4247.1167978486569554642576285597502289 0.6165324333781705784358330514943835 0.0070669005121398394345294666605248 1.0070919893235260201038278593770695 GT 1 -2529288552501981474606988791176688196537.9028986730656949621478902135878129 1.8919966228677098170830408445117382 0.0929704490720801265921489823427209 1.0975802484408355375461547266194895 GT 1 -1588652082966358460373874107092021.0318153519892110677897810450849170 0.5220182102060539928355699467354538 0.0732959090468348845891536266271306 1.0761209758603715521444181038589918 GT 1 -4494.1493384445297114331048053706731620 0.2466378817736356062849760685449561 0.0835743979578106271478525436090500 1.0872743911651646995745109977742773 GT 1 -143292115367868631378810964380078649911257.4177208606792146757239839347744871 0.4143866142098817353864997173774607 0.0028474966939956981962243614256513 1.0028515585252400162777759821101566 GT 1 -1215763148658973448304000388757870595.4749470134101171242717361864378706 0.3544717954859474036721985696085340 0.0906633489840511335981197295231454 1.0950399002156000715522690406453948 GT 1 -878110637783791661423349726393077041.1612269608117803227178501689771972 1.0332735462453817532154130748972099 0.0070950915815965090652901090633665 1.0071203814374309062277461138831157 GT 1 -20453747.6639880796464520931003787954568068 0.3727115353452062946851761027126918 0.0525640931134992141091366850609621 1.0539959887605092918225007661957338 GT 1 -39666060173621069.7134160570303496652311724579975695 0.3584789021828627973790741143002142 0.0392374925478103829450698164347848 1.0400280311965366802902999507181777 GT 1 -22301242278664279970782365010740225.3616972606599634875220423087155345 0.4544363082353786418713169706693027 0.0740502457248938307987052116758104 1.0769353068501432402828775927385790 GT 1 -2663535432.4566783559179859244472259033556802 0.5183120681527138738785169655227367 0.0975674382099620840849691221758949 1.1026613153454130168721162255220561 GT 1 -161579988217728439123152899633932830009.5802015145521688152175059932776178 1.0923376969764699023021831156957593 0.0405709290735293132778021546563528 1.0414168892199497348455486526062354 GT 1 -9.9861712175091551306210670604239113 0.1832016496641655528579667674062883 0.0585924251767934591138206637273035 1.0603791037088152322974921905557577 GT 1 -696501.8078340394372337873867886267591369 1.0471984739065473367364094758737979 0.0463428611945287544896406165497604 1.0474510654167646461222586001450727 GT 1 -4556634031395589813631926878.1702986958165406115187282753336807 0.4219431153927662618116360747090730 0.0973111176801538981508048349972386 1.1023773227837299390140221750353611 GT 1 -414210191819874320613813346472365795889.8440071317837919995172588768992390 0.4803690268820656605588124000522076 0.0946893401810045376601008357188010 1.0994771236678286589897500148125044 GT 1 -25563.7212855584857739336365295939791402 0.2228037602368445747268362361672274 0.0257818990937220198603943713138587 1.0261200775048701585769617791333239 GT 1 -713545091426385891194083403138877.6462393018610048747074757230446056 2.2699508179057082990817059923433012 0.0240252665917581674966200760015266 1.0243185808055336332479123758464326 GT 1 -1516875411136302895918873389059.1476648288661532200812602514109346 2.9247094891599355575698443588762200 0.0724108673098074613673482836770973 1.0751663891823322763480667602604414 LT 1 -16064295012981330104386717445090.2047888096824003196412867318190933 0.1892379186694839042774427668616481 0.0809620251250194491858875391425514 1.0844278355269895442917367615151783 GT 1 -6939663.2149620745212595685236149921367215 0.0286012328143070702331021713035340 0.0624663840758578676370687200356491 1.0645026647946659104390244855674334 GT 1 -30693203879705898579902.1421120272639003323012611089167025 0.0888359206215254715452868756594332 0.0251071223652089316248415214365030 1.0254276831128627233614886784599959 GT 1 -3.9055368057967570654017917060678932 0.3210446582076894724637573729187620 0.0559869389756638221534877248207378 1.0576152771014859935932465986391749 GT 1 -678627187340745190582141978030638.2507462867967806291460596526968726 0.1161095671046297387278761276582462 0.0683909009071981171724243206882449 1.0708419738526230918569792861353292 GT 1 -101.6776853473914811108051106162870418 0.1809977425017068090492463754383112 0.0765444702738829412785198237879235 1.0796326345617156225555213055620207 GT 1 -139502006690137400969569706240.1627820082249686386742554188606842 3.1417277737519267418462625211851851 0.0134061621244879128458271943682364 1.0134968360204595948778972631500560 GT 1 -586703526700.2036620274577057234443850217402443 1.5621439692896578899708233856264865 0.0225544133386459985753652010946538 1.0228126544916021495723784645450937 GT 1 -19805721212908.8255374587575863890414732487882682 1.0356336818539483875549243189153173 0.0301572005853598781852433045739283 1.0306212830773817595028167313628092 GT 1 -345739358.6277577991032890618758662967350068 1.3186728937603089048399915875518753 0.0660064798458791218897442416948282 1.0682857785138479187379533265766049 GT 1 -334103539899280418.3918209072233619798229083583995012 0.5036112590203938812920318711242563 0.0294512356526677694800759149386750 1.0298936310126894295387360122472076 GT 1 -42948337290844602526.8577572752017128795134589794731737 1.9292334842249751116894106352358828 0.0335679314313946357313880776113130 1.0341442688167532581125388486174314 GT 1 -4304531704191915287442432944849833122681.1345928195847165573451448365661910 2.4623819589307268564970823152066264 0.0058015240904252232202050407617921 1.0058184183044590355800965444465319 GT 1 -5091963950.5569278373269234664811404730132683 0.3535787278595554639689473625054970 0.0137075786672929665634042268247557 1.0138023949889438704119299485068125 GT 1 -41366684582625614492607528.4093294669225718563847209689137646 0.3822092780236648829451639007700042 0.0993274452942674529969554294577314 1.1046135117283783029020110604581078 GT 1 -2986030.5758788273139811546571603475357502 1.5465372022496151905923494628865089 0.0522454218692669632118682159217383 1.0536596940716588744057083965082005 GT 1 -8994712831637092394174.5706951584377795648166439450511595 0.1182465178237320028718771387011275 0.0783882515076968906508415910814707 1.0816312411917480337199296708238447 GT 1 -91544977752999.6583536120197661131977638622411993 1.3426486242009138191135296802869526 0.0385223310741217312082655234017966 1.0392839394691092787424516053452636 GT 1 -937025521612257346453757312171268.0836171739890935046136374282369202 0.9105059113704286843109688032348109 0.0227982695411699287803214952657645 1.0230621687662779122364417643218384 GT 1 -3856409687930567570367271283285162.6884096876425983323814331338843224 0.0151957107520222136424181774837171 0.0276547124670287856059055921514540 1.0280443035149689648484764772386954 GT 1 -274631247436375.8737404448150853044280525979525173 0.6149637691045835721848928287780213 0.0725541022862833503927824348602925 1.0753208175078495130167107077412088 GT 1 -321821600819495270.5226500339768941377148474964939590 0.3716708608537293797482226341250683 0.0653467499117796916024480362411188 1.0675796739979850867375069975703284 GT 1 -1045245634110470.7841373968297122529616510449495994 0.4191542079323053828187805670194425 0.0988469853039446950299147669007336 1.1040802081612969651751810640911219 GT 1 -38374232583954086252696.3102148244878803848555440094164604 0.5191325571349569958689119020289520 0.0014494521647635272604994788489112 1.0014505036367141794099725293872876 GT 1 -19343133171176.9363321765882875209621000194644300 2.5138841837776950206261313317049057 0.0813627074476591328936646778599074 1.0884648524273834442851392276575644 LT 2 -1510105.4986570557479518685817263535371930 0.0549687505558225208071892296565152 0.0692857280693446282259657040718610 1.0718029532882382664518274757753052 GT 1 -11415882574152886290939641594812028.3716765091194580340815074641959735 0.1048485424264666495605012854710192 0.0172142437862062457333209972741158 1.0173641315070964335702959381884829 GT 1 -167345917704013642513435.9686331689316546040463370069506971 1.5302076544990126525784899021730132 0.0509405619762577456103969059920543 1.0522838500640418407009999464667736 GT 1 -221948217092639.8831430699683058073814438483319363 0.0710387362298113149971346179960387 0.0953309349883844083815203816069487 1.1001860761775732357629259114150582 GT 1 -69992762483741980310756192592.8380292100435133231003100909808814 0.7552965330461209318374778909595615 0.0697896653985617795099190084490758 1.0723445521684578783381619394419335 GT 1 -3821686884016391189.2376772811789512015101754206218471 0.3470586850876291647918096828207274 0.0635003780945405632789555466503734 1.0656061608295655380340953637920753 GT 1 -1913292.8077805863536188670105687001267884 2.3561809999039451343269222407992557 0.0834928218936023381248043516304778 1.0871853796475076941905210776030473 GT 1 -18153354016472132913878156986499087558.9571519817178030939404338165378334 1.0060713830412652077539282310674762 0.0237846233406621973005042118475884 1.0240720441070084012719894211098914 GT 1 -260128.8325245329167995164696531581099978 0.8173082629047317563338671647801066 0.0158808774105523275572119066247468 1.0160083297148770407235426245139151 GT 1 -714446859.6392500549589695415430421856811528 2.0281333536928451699435453453733809 0.0607408600146133216956893355362506 1.0626638634224791426800428787600033 GT 1 -16879413448938.0839220417759805616969975550842577 0.1489637754473667298984632541475621 0.0462802506720114012373572960345303 1.0473854144980297429977601628105338 GT 1 -1777103477.9684563699471380577110395538815252 0.0494078528156917941172176895339643 0.0845057031535164783948905585598555 1.0882911444375122221100097947885009 GT 1 -132413937.3891903533173104734499873031362802 0.1014913245031694413124477493027928 0.0150867118085367452036717101278510 1.0152016739780485982997734920885778 GT 1 -7078109624634276860955097353436.0258782458019662963578491317296964 2.4596181039704910999658238418844462 0.0213534912177708168857257133374010 1.0215847754213302546585702867674339 GT 1 -3920452513587.6704436555501358121600823597705247 0.4961629458259591143036277219908604 0.0064632574157302114986783813516868 1.0064842347005206440291414253016864 GT 1 -28111918613821237267.5638522071172311602714675776174031 0.5288509803661163750369154349808923 0.0476630512832075813562505830012312 1.0488363690842305990183696229057840 GT 1 -426193439671524345989475855.3167475029709422027813555152560519 0.0568257381812100641186871271820206 0.0327757134726652729340577828271812 1.0333248698568841783643241258157021 GT 1 -45508519412323169234.6383034692415278819435807182131501 0.6031177729788116268722631492826136 0.0312232898459259672438953370115585 1.0317211269227272300984284519637590 GT 1 -1697514224768.2263146427169626310937446017634144 0.0099436593628053003732277517140159 0.0137490165039970626208501632435685 1.0138444096149427239133817745489181 GT 1 -22013472965.5314349434794705525718152016476962 0.4460915801528179629287655757427591 0.0136076958877857756553257489395266 1.0137011291573548723469106882197120 GT 1 -21425767399764.7286156764619834556803016750881936 1.0676691851104740031546191129920895 0.0767913936935157883747121377389707 1.0799000610160300933489930258978286 GT 1 -276438759617455073.3394539491657676883099872536365401 0.3446899753999873166990835760853569 0.0138049327298817863043760481925234 1.0139011069587083332583202458728436 GT 1 -89345833673313541326328673918294047.2530037276057602289247149013712513 0.8053568962884106353393793670231018 0.0539105214505675415784040517443487 1.0554181281987777025816603015768732 GT 1 -665201675301.1584867304486329592463507407757317 1.5440098696693140975533742339542290 0.0194912018335519417688486834849229 1.0196836602432631684168371235678670 GT 1 -38842203842672635001158897.7289850477564797159973459417760976 1.1515013610526926177325603322814049 0.0313373352223919446147937638108397 1.0318388548661904623311343941431991 GT 1 -756673913594250762714173276765262560631246.1289658311383125967961406865178015 3.1697591721748770301773258334434437 0.0629974199355868703585756343182164 1.0650692432102452971135700173421556 LT 1 -61539438.0193510512490339651193704213257009 0.9395183596502812963494758136096736 0.0372583576732724331485552813500776 1.0379701873668895408740375512152083 GT 1 -299609.5411123188307773052240073988441812 1.5605140967958168157720850738209196 0.0010904993047117768592064478347896 1.0010910943317022455109468345708388 GT 1 -6063352695218.5557270227537093295866101020065220 1.0460037304843072441103023578437467 0.0409442893307793491564469118124504 1.0418061133259163460282774183514900 GT 1 -3373879832426649677617.4401151193756149510697902749749337 0.5478643867877905603518812962240231 0.0737956408356451641957932176602707 1.0766603784421830951801619290426607 GT 1 -10498115241960866962.8187475627376239117025534024527227 2.1665604436783997144292357665517744 0.0591049787226684771504651415677032 1.0609237064306147192955322180596120 GT 1 -58734289.7308462165635964324354910186162963 4.4611171913903555031921175842853024 0.0695729582286014938019455913894272 1.0721116135274394721094707042847335 LT 1 -118939210559419854933046491801753.0686653608877392917497766236360854 2.2385206093657327067607352577818635 0.0583198604166960185128493363811895 1.0600896166499643199150963052779520 GT 1 -14141.2025799479787980196696323677641394 0.0543306489139685297536318782934919 0.0556244006427806580737868375383058 1.0572313112951418804852627774350043 GT 1 -2582367868892066535984606936276925177525182.7820876552728236728055269333149561 0.8408733211640414698990247352123755 0.0698840819128438748732946878175417 1.0724460574976728040458524717424909 GT 1 -267567471081727953282871870667542.4926579665353888809118799184440641 0.3332359864886708008511133371315791 0.0609659986853358692887948735899212 1.0629035902966825233148493356540878 GT 1 -4859470810240719241.1729198585196872692753938121619841 0.1799034538259477530573536022986302 0.0489313482159306712030959720383572 1.0501690299948591233672991277560163 GT 1 -18292663451429.1964264804508992699447506600717236 1.2951932136223093696051557679691235 0.0054757599391110713317959032150733 1.0054908068666132592818408203965358 GT 1 -5039630224650758254.1597978947628764252701256166176229 0.4670357467922856781189712105266822 0.0806886005400685788832794262904457 1.0841303680370941599280494680563518 GT 1 -40330791323785.3495554392614756899941273563969849 0.0038124761713747891268350109470446 0.0023937264908812225751712748459496 1.0023965960343205216884035503610998 GT 1 -286557855569419097.4291999225724294013256288897016748 0.7364781979574763705040865188698459 0.0218406109066826164777534141164915 1.0220826476931818387975503899546719 GT 1 -413629445637327236.0108991699594288459613625017509366 1.1404062196472033969469375994646132 0.0021513496999197207151916190837266 1.0021536671770845015307813954663855 GT 1 -61069482299440115694973687.7813949041036617335427327861353075 1.8150068433479883234998467097719401 0.0032435067117406256540185844890288 1.0032487782816364503085379857220038 GT 1 -294692302857854077663120273685860020260.1883759412119403292901623643229369 1.6070589466517435687064239767879453 0.0628615705750932493227771413711355 1.0649242708095094879152273222610499 GT 1 -37.3715353668669511197447200898967780 2.4528232301114830782714656970100107 0.0964077724354690299276461194431435 1.1065157538607544881382390309193407 LT 2 -519357701555614760444447247881521388354.7031894572716160677647387310568721 0.2804421212075612250655430329786976 0.0799558620468028798453125996533094 1.0833336340537804438076777393394867 GT 1 -19083511253059803310.7844270140546845332435176069182648 0.1637431207845784185049898922880954 0.0322553299992803712192987938520221 1.0327869971595727780789041013104351 GT 1 -3302415633580846157480462154929649011.6005282026599273836086701729695201 1.2005799127276872572510497630367203 0.0367608163893203074577011089575461 1.0374535245960877732619233663408469 GT 1 -7943.5818841955449408520805469240214855 1.7845312583643261692322517597395673 0.0447740631592777142380128913200387 1.0458073834034799651753923899952876 GT 1 -111548515544081747.0447994639876820790926847968175720 0.1321817828744035845429533495764581 0.0527451602158558367148907474266314 1.0541871197967757735943754762883031 GT 1 -35808186177859713.7945402603897299393451454680615692 0.9518666705364457143328516049339948 0.0088060489489862557788099202842065 1.0088450513381523501852287961478744 GT 1 -188103722077310541673031017210011450.9672631436540307998642012622873781 2.1121997248000632246622160998814582 0.0191098612152849832206545587215212 1.0192948146944176683610330294751006 GT 1 -500.2832752071068808079446474467243977 0.6635949056303559302769766838442480 0.0648866069470563245388590110890538 1.0670874810543355807644207128105480 GT 1 -8199402415898052365902900180821927.7547848559917824387710011866011321 0.9976437899470585690482992764363783 0.0317711955252544538226189334627042 1.0322868513771011390452074795879214 GT 1 -157417628490196907.2104433482694955846733306735622870 1.6008266718231741257834739530241809 0.0049236439768103389515402039813008 1.0049358050460874475722891850571838 GT 1 -23.7719372250330790741563747263593694 0.1505722076694856981753779492755587 0.0644374804875440056965160556773884 1.0666073054502931506764844710263244 GT 1 -3991.4354673084913510328286865485183997 0.1705450783854754731655503664672501 0.0501299295320181150877902337311964 1.0514300716695766362453078937116633 GT 1 -151034083850507340.3566945132736458545063705788280434 0.7208172250564651978353781826559935 0.0929652075621596192699327652198301 1.0975744696933068837729861436307786 GT 1 -7512543351515317842311997409062180847.8569569212880788481532819283386579 0.9042792825741455794472426067635021 0.0055305918899089457495549434933557 1.0055459422370677467672752765453545 GT 1 -4708455181148138.7363199926004997779154787327103703 0.1648026979394571168260358045979741 0.0422568163431245722737457907006431 1.0431756124646841165299458968068810 GT 1 -71962784977736531969834362700238897188244.2307082518433564957747181119113205 0.0172744955984317800263972742891260 0.0322970939229124319184030292262611 1.0328301540232923086590465119076583 GT 1 -210477333605552589465257844602473159062864.6358757314215596455100717290161562 0.5957229690895783100790474393685219 0.0311532646946423904038826707794867 1.0316488475007599146348294198179229 GT 1 -10026346483954527838316994.9597029499971529988523995115333175 0.2000329860759609980479339130070632 0.0745950088728634207649884098518493 1.0775238090429779984174995349239990 GT 1 -345333145.1483424207282557124514832726208255 1.7370105898136636561054937220596467 0.0105465896297192046314772456922736 1.0106025990598470767937372281111335 GT 1 -5553.6872264740935655658360376385537418 4.2626952103715580946842755553578757 0.0671313997420398498727316921310897 1.0694909237894539070390528689244530 LT 1 -1614086864167.7314084615110764876845412501053795 0.7476997595082095243111783929814471 0.0280961937172902258315077580757455 1.0284984441487524067434339433274248 GT 1 -14723173984430782.1512833611199513056008203032965543 0.0887794562632066129436275819761829 0.0634339930653309132158384564149390 1.0655352770033767523425369399049316 GT 1 -11889528.1218524912181718735272217939640487 0.3782892445375584602952066102255727 0.0947604854745089679774098350797037 1.0995557133634351966534714592428820 GT 1 -68493594760442987352896668088091341.6140674451995443909023186912856600 1.7390265430406735478031742139252029 0.0530327648262306159171143420684173 1.0544907849439483737119794860315735 GT 1 -696657535082111.3149797133795682554378342368952036 0.0370855032507446449587809394279968 0.0037593581746168661141714885066018 1.0037664423216968787606568336394975 GT 1 -533217177094851637902.6383461527171900300937149240290622 0.1825162301187869030294750501752286 0.0933217206327895945993448699855799 1.0979676003166273699867217815926637 GT 1 -334805555281694423518186617586935441088.8172096526647602507718304264289435 0.3445757966495925897391414752099269 0.0625859046792788664536529932066320 1.0646301569939054688524805449872333 GT 1 -36567741722874605541323503.0489626722588953297736115259372298 0.5127292104400722012214691495933774 0.0559900524525169034704287235777161 1.0576185752359249793821387311914802 GT 1 -94797726787.4831625713534962332861668149548483 1.6774700845213188729850513909294393 0.0985497813931820287312012171336251 1.1037504584881965339204533812490461 GT 1 -120.8210774342748656092930576953305359 0.4625531037969758797221441205969966 0.0002114231146868037462347215955145 1.0002114454677042009040123174956281 GT 1 -264694862148519023625684763352453.0121245616149647542317046648115031 0.4959290592938848224843899992221534 0.0643178688248498187478732678723082 1.0664794636282062942625844163849849 GT 1 -171610141830211580693783548891.3952453841712154441859062649632991 0.2002797430976311837888562470848765 0.0884951959422601120193035614606465 1.0926584143806107144978218369397110 GT 1 -3831976008294965889146641.7917158922190654453920863514567944 0.9080177226176240853192959456337393 0.0133077044558660198038375740774791 1.0133970454558414028088144684987613 GT 1 -382819950.2250852701180341628762717550874966 3.8185537357461822183590869872381709 0.0871777055604647718341037935395419 1.0912140564999182188074176200282150 LT 1 -717745658691124.7034708806392712289858170144077584 2.0314507092630511259419328370894453 0.0253975330082343731523836702712501 1.0257256172894937104280505385132415 GT 1 -91.1366845489020264970482496993528604 0.9648119769626453989816924879964663 0.0881725164903264849513097216110708 1.0923044696196885924485377622189059 GT 1 -13992712183.2850669544449955140274613981089051 2.0762277893898821433609210180686919 0.0405264078543598721550160447613044 1.0413704864294026077426082615699812 GT 1 -7190145978070223466010.7169558988370964246988331295469198 0.2898471208346870595740507491911888 0.0520517417673873364504104605072194 1.0534553581400578299098395367035678 GT 1 -4561449581850389291197841733.9829651010947058869894628950086083 1.0418853603821509055487560156401351 0.0085586135005682424844391166309412 1.0085954487561582724411634344653647 GT 1 -11213772855518434447403957.7295635855442843735222451618152462 0.0824947218566240379088581572665866 0.0085035983756353062994157068118876 1.0085399602529116770012912170609409 GT 1 -1182887748661480142879846056927682429594875.2040974440295152900360427254487579 0.2298994265085475944607427638714177 0.0632851245180046356840433647714286 1.0653763381607963335451894173066827 GT 1 -911982576939348452528549.5291578541021636992801276449094649 0.1946018213435457293667157763284759 0.0096484162008957004672588484051115 1.0096952637484526154736241625387003 GT 1 -125778051.1724427668844664248924121639053059 0.6961433522757668304887310759368977 0.0610003192652432452107184782555764 1.0629401397795158066058842486944172 GT 1 -220019338177950145331574763292935908948599.6577652878784286290788544759590499 1.2164547738958859710503099186531376 0.0543675263893376055971882799883173 1.0559012911151235624019360965651764 GT 1 -81.2865716584601843252375131398203342 3.5649668655224330444706619371562566 0.0992474032655488343884648767077548 1.1045246464999703371327995655309895 LT 1 -17261956067111.4713455071450957181796760366421680 0.4900678346743538402993258257749998 0.0658965098011719000746776793309730 1.0681680436807800432262945293187408 GT 1 -34364424.1307331883564201116248891062284635 0.1246933413255665236344239745973675 0.0927926612599351773643002243040008 1.0973842566012620449916633544243180 GT 1 -21767933559347018984880555508988031.5410944277661016052076181260073563 0.5060532042100107754368644202684458 0.0862430301554177457506936740130820 1.0901906402103509057171545581093421 GT 1 -3467068542.6557166400644071360171044129746306 0.6324561115397188107000889853511167 0.0728361111387093867682893947020427 1.0756249341545327446636228786584130 GT 1 -2105428620288769970264904510976799057867.7391313617389806165791391583942740 1.4946851192465597958885262380488018 0.0686094035469270466607840193367832 1.0710765446271146075269412499214945 GT 1 -143148129798484295154188751.4064051741750966569316728799776506 1.0540491168548918635995201826867658 0.0927090924679998878469136841938109 1.0972921443138392583820372441995723 GT 1 -18829599658161792527568.3988822484025928655802843945396793 0.4789395060265862708854704075103721 0.0843958254011230592432225428937682 1.0881711315007545720330073923741042 GT 1 -254222356512.0670084068943303311103527012891553 0.3851674348492208523335379380475265 0.0859476925406610872904461482902486 1.0898674799977465262847142936887747 GT 1 -120960018915299.9354359967690080326171315259440398 0.0535683432898414130351886102300877 0.0687867059432843849626415030557449 1.0712669258432134726922096464764241 GT 1 -27664889958823.1270871380670188703478221565749178 0.7218781915070783985545129048896711 0.0284777675024350895148674671443032 1.0288911257146405851929186581055054 GT 1 -20857078521841548776.0130964173196907552962110632868480 1.6394994695252684157510387843748714 0.0051869641795661724366570700556083 1.0052004631777124088199907647224816 GT 1 -160166524337016109976724542616925.4385701715701280440498346781194589 1.6515435117197579896634654561096478 0.0870046056834297110435970425963739 1.0910244429600563979779969762279005 GT 1 -206723331464775786311160969584.4503753156485317625461806323631043 3.3874726254241267088516102092678646 0.0739132636634341955819275641805633 1.0767873809724363904633769117072813 LT 1 -2298670722837809799992532190.7205683365689690715945294355312592 4.4682360236756894126320611810965659 0.0465200846157423237724145523214958 1.0476369182597308710614809227719559 LT 1 -113558764514134698219135507658.0963174987141726177842242635338297 1.1933286684491921487900075572742999 0.0834929343562873180808911758850454 1.0871855023554303013516122229631509 GT 1 -841292072537385303882033283794224591217409.3078852478468255482142603323218626 0.0961995575528794968610574396155708 0.0067577808369223226140549904813835 1.0067807180326075950085197755540752 GT 1 -9019086820760067239320164245.9609682889920414554879249508156952 3.1408870411563774886039045040345662 0.0741957403516684646705119083691418 1.0770924493496113692199377895968270 LT 1 -3325361307694735320801556511712.5763819533373852374929758386299745 0.8176573705444029515550349313916878 0.0862044391592747085349389065241183 1.0901484077759876625965054772754309 GT 1 -406152313462676805791544.7128339352358155372622553801744446 1.7902007767382010034531712353715904 0.0414558722926355903140156283707714 1.0423396792594912373163424115627818 GT 1 -35829813086559145013043600.2619323267113947569905168461857488 2.8640633306308457549800766334950777 0.0225892375266574184189526156139201 1.0228482828773201265394439614634642 GT 1 -928446454.1847322809007182522318679754830611 0.4159665853951524178853298025906386 0.0398852568692170715059976884444379 1.0407024775681250468108255321552613 GT 1 -70879074957.7050147195270676742774349242732859 1.8150992973386565625763413340871604 0.0558718182458944704346379204476328 1.0574933362982200275820459300236601 GT 1 -124213356.7339413700485691868098188080295931 0.7572771261386886180142826835222865 0.0611388348708020800497703676603117 1.0630876646678643081323175113215211 GT 1 -1473306411590800.5901270410048789030238367095677689 0.1344944633324679352406885543115247 0.0291141531039281859884827155495306 1.0295463800157466006699892322455764 GT 1 -2085715803.7616339640885487937328468529988438 0.1269387185467019343803239766705504 0.0854938949263593385199991893337382 1.0893711353138602463184151895848229 GT 1 -2400698758418754625040621993279995.0492916590628918121821644257625339 0.2645881116525474270470348354606144 0.0240175577500242534528105645270280 1.0243106822288331944888001989376657 GT 1 -6673160993437.9985964204976505841661935220998073 0.6727725673985675326951201558318077 0.0265148375294246003612640450925515 1.0268726957132810440899627815993526 GT 1 -281389056194537747176392195.9393979938398341514511542373683720 0.3804127932029128311906632022791614 0.0453173487919180586581923980595016 1.0463762961259980305071787904041102 GT 1 -3778244026492021.9378089523029260983500705122690529 4.8309811429474446807881131792832004 0.0284061833587529503165055565105992 1.0288174459735399449612888104108463 LT 1 -35088458178604666204942.8543416893004150828381315912759977 0.3721366267893879665962589376853832 0.0351496113191130391951150753419835 1.0357822272991143834381092096865933 GT 1 -4641210320.8451500921004736829823855661334700 0.4189586363356210440940945554662082 0.0179431820822389178993666516948134 1.0181061129147388376434528437143691 GT 1 -58080633157486703202951207020998.2803865599375201335095519683428883 0.6332732365436737419882556540678102 0.0920068522659257787852416583983641 1.0965184469576955060190960304861345 GT 1 -1665580446628291745263407858842277.9950060599401976672040499715308464 0.5166786309409730103000554659399205 0.0002826508827555028691157778989554 1.0002826908360449964873331735721641 GT 1 -11249224.9227818688130492050868869950524300 1.3084955509892543552966651135593805 0.0252535015634766397191382915899693 1.0255778433941325058949342736370883 GT 1 -582372410962947602179154681678259961525244.8012543812735493515617584545347589 0.3636906965690207566332992917766106 0.0700595876243022489059338909798676 1.0726347676018829669906156031970765 GT 1 -2111382.0642688873902280445271922596765551 0.2590650125881375336922920991014646 0.0980043119295970472375344084587627 1.1031455393406924138134910438004965 GT 1 -842749090615300036306380.2130914755005961809417382466432687 0.1800129186533652493209368575997655 0.0854343592618020268019849593811317 1.0893060359926174786987796616377561 GT 1 -5457250470.2988140192140080027991714627820207 0.4050000896912796891715576956498768 0.0861617297878126515287494863308122 1.0901016704364351043112522740429549 GT 1 -957.8539155938311101141377823536550539 0.6024753955066277003084451756742488 0.0263501209455933313272939882382040 1.0267035070533150879813656042987413 GT 1 -4225062921958695888254988710966978534020.6944254224534044430997837977413074 0.9466248260418722867425245457980876 0.0950393598831821089373467568855708 1.0998638278116239160970908724838591 GT 1 -211791780424074309.2870151417698550107796510980607850 0.1063288527755262975287840206549775 0.0001847072918122821417312442744350 1.0001847243523049370582703481336676 GT 1 -127104258009984872196824.7952405665848640784002567972303435 1.4449639178296732795676386226067295 0.0588398529623648483011399834500036 1.0606419657393524554480058738916321 GT 1 -13243410151461454435199.6423810927441966841701118012465347 0.8712501543640187476377980029545851 0.0025489925249433363456057575870691 1.0025522467375414246834459083600270 GT 1 -1631209673339466.6212017346818812674151849225221226 0.4962233568609539364256670058678797 0.0430657317621297299997585823846962 1.0440205751150068226191063646167618 GT 1 -12065616584254077311109.2012727020114128389376663122587977 0.1289813408962039003023352445329872 0.0666827552129896168843233605073994 1.0690101093637259565813531916598568 GT 1 -479885056549488391633599514691019561740152.7049276096278617127927725393353237 1.1295008739824741077030108704345195 0.0616127936850251491187417287448641 1.0635926152449998118889923253943019 GT 1 -1046298736190534789832258.4638086866724754025023229475801712 0.6968196013263486909686092382427678 0.0711080504420992947076333049899347 1.0737628552664363202330348865350648 GT 1 -9623596127431145224048125835679993076.2007102472651038362986798406973437 0.6289842735434989953457537821917114 0.0141202839945167618224749444609741 1.0142209237019649917239385466763949 GT 1 -31763389415325439878746461356868640.9092736371232024228393114961095711 0.9167099577003006680927606047369457 0.0162685139928528259385212844797068 1.0164022992424630480806393626875689 GT 1 -869211282421.5630728606847299980658285628670631 0.8318948275273809378364706273987123 0.0923538508827648403564527369223532 1.0969006799504111803593806557233880 GT 1 -1121748707117677677560576755917656.4477588007193758035565575700104954 0.0085030039760820244473473278720984 0.0580849454267396845756429805498849 1.0598401840840891538747594957281911 GT 1 -5001220355801005053056925709.5492760922254282020512930108562235 0.0307987140892838146827655649994424 0.0140917226199110423262453144372645 1.0141919536760762784249002106513402 GT 1 -3672595.5970461411890399940982117184412302 0.8631410890739180125095082813308008 0.0462143803739056665651334091508780 1.0473163501596493637511979094928711 GT 1 -29180579508435.5891627917131246421211293556284574 0.5409651807863395945267757157736710 0.0059692631170058189684819280862420 1.0059871503861519363761516551115644 GT 1 -961956016384301837678236232272038563.6152831542200113434834080242924148 0.2236766213909741699081232486160412 0.0989707186961767284144452613504141 1.1042175232294796816103119984223376 GT 1 -33.2535524408305031011167654792360029 0.6178312271433817215915229497479188 0.0588740358998445693104390208121377 1.0606782863999377010920818752510032 GT 1 -518164542590753669.3561482115385968942846683830077753 1.2855787300341075815850580114480900 0.0646189509597090734917701381177468 1.0668012936344205055769961450230953 GT 1 -107020320.3977500402487527409003314108366059 3.8670949875939082167597245670572701 0.0291094692324734789152783680211685 1.0295415556997145435413640278629791 LT 1 -32814.8687793629460996807360049628454476 0.2066360353663697569370595588508102 0.0604135389543293435947037895519936 1.0623154355757036490542409043029260 GT 1 -1.1934671807969187603568256227891617 0.8793221758187630306522670355514461 0.0019864543966890758239960013035711 1.0019884300139734577564473127001844 GT 1 -375610622229897120389836447902352143.0068636023920046239633553097619814 2.4048265938506006602675550383653449 0.0303381688932885998125858502879532 1.0308078959945215880742407144908013 GT 1 -3.4555511025282866487703978504416111 1.1308067121129099222960289971136231 0.0632002255797340867286711354057094 1.0652857074968374573700687428190876 GT 1 -42189410455987660992.4089639988021829636213968466478110 1.8552371585653005143272923674953679 0.0210951793743310793589950894373262 1.0213208621935558816553813306596712 GT 1 -27638616755056909981697358.2533992473407088881887586484197278 0.6859189855477625160728680224722109 0.0071558239658140967257825965680827 1.0071815496733495604226629601600638 GT 1 -29826958945145950.4760109186842148024156429126880265 0.0984522661636266734153773860737852 0.0002323661230110344770110410563501 1.0002323931242014516938679142349812 GT 1 -93564187580.5684044115164454956914373883071662 1.1147995671636590077668405280731868 0.0675806023279770774758873463825717 1.0699725680128870834935782632499054 GT 1 -5643670625781435619.7494602148593606221864950741429359 1.4608216235766230341565691536640147 0.0425884186612717598045463878267021 1.0435219054406063300732219904403537 GT 1 -12745001061358366993472.2203522165252697720357752374977034 0.3180457455634985542453116162376529 0.0954785658075038466458178706046174 1.1003492771445383580860075757621527 GT 1 -6647683483.7958064088092128498635126476047542 1.6819995345424528951282899277464209 0.0963854780496305083606410253671926 1.1013524233018810963455958525228798 GT 1 -31351940947513011.2577046392077739345740202038705907 3.6806251715988263815953910874188148 0.0292298353303538621601096121421323 1.0296655383279022848810975221768578 LT 1 -192056496159968421200020639665102092051.2816449057973090074565476655681103 0.1309154170396514822665134458448251 0.0093859556628299125084711962417205 1.0094302813218282298084708063764833 GT 1 -3.1058384188866763513315679845416892 0.7141787013166078206701344438059941 0.0047728598836840201275755461330598 1.0047842863518709510580785232652477 GT 1 -624.5237213310567859871725961603764473 0.2412469173771083008659737194429451 0.0950251161325773682733645785002977 1.0998480883000045411516403935999384 GT 1 -3028960730568.7608921949363191670684162511698443 1.6879018304944201100865949485406176 0.0593808946545476686515337349280918 1.0612169978069088735990345241208832 GT 1 -35908257771854934402051794039.0387674785018033887533870101120410 1.9201880857141769830046109279460223 0.0698161786852844802594823925747960 1.0723730550388202497180265763871693 GT 1 -5057167421633514204034809.8907780847558204564628568447258074 0.8717834359878108543898779451944946 0.0412582100753850341813049088753747 1.0421334896493417259617106323322406 GT 1 -437653126976651311965445301571194099873399.0199024746018319642266273918669989 0.2205667250617882375857551672693096 0.0815774742625362572061213886764059 1.0850977265644590420084936980979964 GT 1 -68835245561566262326548447.9140647360616535087586734976590563 0.2845255658960123458121259098643425 0.0518312086042607318061959329657881 1.0532227425806288896286920639316129 GT 1 -132900091090.0405533788499336635214922008386558 0.8617787961963476452566987379593629 0.0098992091263940987302519006913383 1.0099485320724439295825890001910942 GT 1 -112127508285814614556019.9625386499884451265192464580743109 0.4146577033844782204372382342415484 0.0684501378397354239363462259549826 1.0709055614839408478249998419091621 GT 1 -7238311202313294982312403417617815.4464709194263276001010898602560881 0.7640680178245539484753945857681484 0.0788837223298004629894025053905836 1.0821689991538663669334017753073478 GT 1 -182081750723138841.6924257503667338739895083066017447 1.6970226199499491829367616597641055 0.0404466469713159746515994465816447 1.0412873600477846769121253473465609 GT 1 -1755561463302096154747242013942035.6493298567216872670190227857141577 0.0915016542842505878660176540121884 0.0533179207208251393420127776019600 1.0547919556988220618027428186126163 GT 1 -18820359046217432667431972611713137.7301899095269406796158202431898177 1.1717941874829683124777309727685529 0.0888900405868696807199229836647045 1.0930916871255702821395668275740182 GT 1 -3777726272873467665806093995673539598110774.4781019023136126610130744624102412 0.1937690551491544564501904811295839 0.0030256593756071478164536831824056 1.0030302459368535549279330621987300 GT 1 -27.0851728935554329047219353480487511 0.8806444231853600113124949336110474 0.0215334117972959291332534726071268 1.0217686386638880341371807744893440 GT 1 -1148.1413547953490826391583416262969835 0.4820738070213512853645825828308510 0.0478591342526479992113029950984133 1.0490422869149809148332619991778883 GT 1 -52380226241134511301931.5698169554430798771533029073190510 1.2801332815331761114847815036054164 0.0702736989624833053353060065893165 1.0728650361092265842428231458639341 GT 1 -4674367.5384690440149689525036837147044979 1.3633949171373425983676704301688031 0.0627951908450722668029126781629354 1.0648534409543554990337807286624607 GT 1 -234563867197417381588409460813053.9410622630339863623231175579359871 1.6531482107502939778567315505260279 0.0937872832362589022840210041705336 1.0984812137822990252389544572812169 GT 1 -31421119877764134812701372.9548711060758617850099768519595867 0.3179023030225450043480776232156420 0.0450649019262884365058802368552615 1.0461119009430404238771050790326600 GT 1 -956391665593665873698097372160.9328241094081002997182856191525112 3.1905870955256384968289940958703105 0.0674703579608256888369515531895827 1.0698543402598146720555599541940355 LT 1 -7027578735022994758097004762.8685037716721949111225232221117835 0.7927611141403532849552783530856177 0.0178242217734593436345770044708007 1.0179849864156077948075929935728016 GT 1 -6061545465883.4842672520458936321113495010449164 1.1219174062695764452818575688167360 0.0912428837662833026095634761806143 1.0956774193714324541737193514776006 GT 1 -126882894.3466887721582678465824340971308049 0.3089562931941627508906206513027836 0.0291549992689585055969369812278155 1.0295884519281192763311994337406784 GT 1 -4412912828178623036814.2441921394770828699191481884113233 0.6126467746676348179326588945557002 0.0740006132158658367217979802638453 1.0768817065563344274824486975741735 GT 1 -3195347192298548984731263437667320529.5050511173898002946523377448894866 0.4786017726758191736371478810396211 0.0165209568503078369281237457672619 1.0166589498196119012009463239266506 GT 1 -6432745940429500541311101.4604477353029502814347415388200947 3.9080028567515723185746983029449920 0.0616249436726284293949281119176275 1.0636055630624674795391178242809742 LT 1 -14620283.6315075887250388443655105997201378 3.9179129851850921652740005919392649 0.0355063269770447875567908123090189 1.0361520065096522917642905049163524 LT 1 -118634615259883.9500619812676687486893846151421398 0.5166270810167294986753873855736328 0.0241535751052039624170968409571344 1.0244500564923144614948703806529352 GT 1 -18971277091454337883989696.1019558550426178847906540457737188 0.7785860037165802370912380653839782 0.0762911859814081472456673655485016 1.0793583933498603314570125587235349 GT 1 -739914635216759.5774343524137457821713260626256383 0.1339291406055660242232675066845533 0.0704407253414211524657554469410854 1.0730447033766657132199789338325072 GT 1 -3614064286497658291.0625388957743525270031508349698447 2.0464131498601956200555430439305303 0.0974336166708426552206298354436071 1.1025130365447782808958672734651475 GT 1 -795324979794.4521946634008185974671958853189057 1.9687931100216939158765347745547729 0.0121869924367791888817610541140416 1.0122618627468634847885182416174421 GT 1 -1238445029815738520.7192691686563400561955148377042559 0.7152465938319697631729895151046938 0.0377187750739589149811154867442990 1.0384485374346192784323561320383014 GT 1 -7723137950517305028.8618052341040876117476953455034219 0.1950281259638979647776601229271238 0.0589125210878200997693209199119602 1.0607191799427224142863851101141637 GT 1 -1337602499243325920.5376653954915309611322173004554271 2.5414899223088172452249394716595031 0.0566739050215842292970679491340463 1.0583432502101594706234455002698306 GT 1 -2163012768705.4668447022904962339035351429528655 0.8697136738768218787126302257089068 0.0871396206305704522376773971633013 1.0911723351970366106449546718118251 GT 1 -15.3819716023039286868492330612094434 0.0162707956854147199734588508268808 0.0047355559529337079010140877292890 1.0047468042232837470866967319009560 GT 1 -1237515.8976543701141881700995209456872887 0.1691739013005726999083931876680160 0.0709124547867463907164791931089797 1.0735523086413245545618851907218870 GT 1 -2.6977721738944084110701156643694750 0.1587669535950792747932930021326082 0.0058048171714263191336293163868706 1.0058217306073188110849690242788746 GT 1 -143492688135838196318264398.5626154774175231172284277602790880 2.4093118099607036660894233782421250 0.0516753653329949883719512736188023 1.0530583937150068562768627202401371 GT 1 -36664.4508522303024259127394993194242909 0.4017574989078605088270221058496741 0.0838331760306645498129320757103134 1.0875568086529823634340951111973606 GT 1 -75437564.2980113874411982847105035710474663 1.1013059232751327925763604616418404 0.0238638622119322287531367578561363 1.0241532168576398039402276206578528 GT 1 -8036829.8052904916447149496640739305972305 1.2453717659272817431631426207399177 0.0416131035327605092862820944747212 1.0425037240148785313497097580612626 GT 1 -436377151519729.9327296752584440416037361711056060 0.4492042035822509115356261363534357 0.0159146906792568476828840375583886 1.0160426892236350106570827677460530 GT 1 -773647573582.3535006008248731263605650484484331 0.1904705917611747392018375996005388 0.0969569421283701700784991852761834 1.1019850435661535236652313225542518 GT 1 -1763472557979537236888005.1214954841835423509067687996919337 0.3157288111250070315905344564276736 0.0209648620584670605842949395796728 1.0211877454291870503153776414735490 GT 1 -498008620180715413746318599035256014403.6659460912431029700843303764934711 0.3425042335213706129597029338456032 0.0065687313670461130955596560492979 1.0065904004272153135697258350456277 GT 1 -635967318802068967.5924245825298318563764424017969194 1.1504315019055105989073457175448940 0.0158889254626559726328771211295762 1.0160165076730401035787998727971891 GT 1 -15014549239855213886540716.1410968045966522065486565436793802 1.4748171315108315342913114516107019 0.0814853810417273051216295296961488 1.0849974583313820058536397946175272 GT 1 -56862667521762594346057964884746622997.4838344065775418021376946976866675 1.9175933262199506546919851077505563 0.0380026180343460623093810725079281 1.0387435497695578936127555661247935 GT 1 -35314369099497976551039334328802575169.8598394080869155717161216327848182 3.5571871880739059207780990507110398 0.0010698290551386299434774179357910 1.0010704017307219926855752588221866 GT 1 -12089986050998800021625253258729254.3779290724766346440537862822701756 0.4893106944932355626820930957285796 0.0953802994364233861704829254399286 1.1002406439712725830870133202186271 GT 1 -1581481655642359816054939204702845021.0856857619682029529494112616220813 0.5661650419823411003931217470043596 0.0166232348275826633923036387520490 1.0167629513198075533047364213314965 GT 1 -544808896158.4253732043586584806412934913276255 1.4639109590104811732503208329929330 0.0792370711324941821515937225677108 1.0825526820857050010179216010900174 GT 1 -47563646062240147587943654693112.4361687504914801214610495437916295 2.7240031070695006087321253430570345 0.0864312311776183923276054203948123 1.0903966254037772132869687017527959 LT 1 -52618978133637228232852667054625.7936184993128054666138846759549503 0.5256719749301407516639134131777935 0.0734461877495789066916469178603565 1.0762831537232730169886950786906800 GT 1 -725030564167421619230451863697.6787867672321706791140555501584086 1.3229326476831393817040236753861724 0.0154462915692666540826547421763208 1.0155668283729606036623827868272094 GT 1 -156140224948716927143215.1735558800149542428174764580425559 0.1884646806678661601986163298799086 0.0307399032443451907344066405507945 1.0312222854044637082666112207887324 GT 1 -4376693670639026350111065004.9988700890856659034596349485504025 0.4370753530906333823073142400241721 0.0645944056013706346358814324447125 1.0667750529528057090444934131971719 GT 1 -158366.3278071896128045780952611667987678 1.5682445407500075611793344836669447 0.0505459630662904318027280715772826 1.0518681575542392540084974878701825 GT 1 -505.9375279559196019997791625164976508 0.1499256943916246916675968419994133 0.0393234049033650353694221645144805 1.0401174562066740719133750140855594 GT 1 -1603411372258183.6378521768914241316688778780841030 0.0257689881986019722055256147505681 0.0708893176248265068750410358565662 1.0735274058493860357119311880587865 GT 1 -12967917540063578045877856451942.0417353405470295355444953848605898 0.6684855436076716835672352180460247 0.0853024802734281663544798176548509 1.0891618478938763047483984779033090 GT 1 -4240519090521169716815688924797078512.0652992408167180629402038869676425 1.0693837546464750119963423197931297 0.0748622141162853724929001219718381 1.0778125948506863494182701102541499 GT 1 -16246131.6830793940937102245122170475766083 2.3696772867589164110208883038125145 0.0437053327767812445592585859942980 1.0446891841106412450745255943181950 GT 1 -62507441573906774103693945344165.4157188257093557362461178054850769 0.3960689637060150759492324385213093 0.0929012858985061259449884084392198 1.0975039989551285401730833240070277 GT 1 -2287872746640.1793747642378535036081648472179062 0.9927802755515849013036965242278979 0.0600162298468607530223795652535948 1.0618926696616757339127951554405261 GT 1 -90685247694468955953936025896.0912860696241719789089874103622859 0.1772258274154564813396940057521916 0.0676603313094195280910208506504943 1.0700580793080771399711511725922172 GT 1 -4119277905.5965334297078718072169776834884412 2.9803215249208562860222211875816436 0.0006780296501967529408433450057530 1.0006782596162551054860686418078994 GT 1 -1330228969228168305716401938875532543511981.3374804055219153183537063796455317 1.6491172058429509067516217700188522 0.0981310564429712423799373188063417 1.1032860648672319750734827742168593 GT 1 -14797990500115644.3583727330743297613228831452272822 4.6704703940946893805111399744646099 0.0232301669052791395585302405920644 1.0235042400627070690217055686105450 LT 1 -30077364217936092620172.4820990141386786590411444007083379 0.8513158959245605024115089476683102 0.0222393645641336641693302625221780 1.0224903879463361086698859128348663 GT 1 -13778965052648161.0667872535366958862809305638689957 2.4803944911227404558647707161714155 0.0603541319456239102602821136118843 1.0622522108133309494330215397881576 GT 1 -179285.9254833504753581983413835584056414 0.0407081583837845916875373475878140 0.0429782618620379329290072307754125 1.0439291729094584079451160394106706 GT 1 -2524852717670045844806380597315858579097106.5759467005264611976850446702222522 0.0630256872322544226619576310470293 0.0644317304126648217627554830752035 1.0666011593541327979100318789182287 GT 1 -1698623083.2600565068032851400413727806300566 1.2639744467768363226369201956702095 0.0261915945725183492738476770030136 1.0265407036960485147905059613542707 GT 1 -310062658870223.3773817510918264040575017928041512 0.5575901895013928976615582601468196 0.0123301425213227110524320890138216 1.0124067894251225173032020808892077 GT 1 -908065019281483582918504214264489329422430.4963373810982604844957435280820461 1.1028785924920232187369618924921480 0.0704279388902118998279446724120149 1.0730309480803469948990767256725423 GT 1 -928056413119129903310491339144132706348916.3880021923298769291865901036348197 1.9406477213894603467956977416978260 0.0710648553823822669146217797756852 1.0737163546422821863787347123522086 GT 1 -107.4212131473080491730791477863004933 0.1047521303087572488693729148403977 0.0477759051981060741843528684007246 1.0489548781920532342853416386376853 GT 1 -7018280143930352155880391070.6085302406643196726062260579556312 0.4714971029820578359124711116470067 0.0074155288163398558087171821610797 1.0074431605374527540047945111642955 GT 1 -1182314409558.1647710252449814788127081407988883 0.7379703418415882096979947687437139 0.0690301060035039247819297448151517 1.0715283395034453673893863779607760 GT 1 -1618389095844973233597908.2886547870632596595671500509123251 0.2973243745924542032720626600268232 0.0956206123067361263195007825254617 1.1005063299777347844667302204560889 GT 1 -113639248532465982.5298536068059132751166711381343829 2.5491202392187020494082656668261777 0.0812949461784044189729555562747577 1.0883848354869357589602294565701838 LT 2 -760718434617180396384370739709154.2100136971569883949273261804694686 1.7557272615550539657086805955684904 0.0328078249713838478785775624709666 1.0333580700486316116890142283285983 GT 1 -2342419253241.4752117565881717964758431492585430 1.0803548623223143341380723987960949 0.0680304532861074220379414795860281 1.0704551400300779093751001149798691 GT 1 -579951739399764547182405022479343221292966.9399528898495390420193708751473326 2.7390549608246496735058677598438956 0.0077538712285124759121972642341718 1.0077840887914382100046750433683780 GT 1 -2741478912590608070340463153745672986456177.3923573064679278404894056397552216 0.5399903238391484073777877840084312 0.0459500972736946429881588370377691 1.0470392999644882863071228157325378 GT 1 -125.0916132137384310015726092198000791 1.1468775001961830959285561921837951 0.0564715084380426389116450090925460 1.0581287168955504624988107349915732 GT 1 -92546820529871401253389489134788862037170.4194245885057639468230457705289130 0.2920732803990784466609376056657357 0.0612651042566875314855230629637879 1.0632221657873618975364126739488991 GT 1 -10492810157719292943595821725.9177699743746732390654691102838133 0.9198789614591601961644394308692393 0.0669199428695239933392319172927185 1.0692642756739403644093080726601549 GT 1 -6297208369710852358850169814811.7598180091493130500446158362420747 0.3567161025658039222968595759361474 0.0073691651498608772308796279967827 1.0073964515821606083608740156489057 GT 1 -616003139247309437999329136237155113588270.5799728017880480400439532247368656 0.8745784143895094057769770484633140 0.0319152444213441012037633905972009 1.0324356381225200109947229810566526 GT 1 -99935471339133126645788426155948858287680.1052015910317794107066399324077570 1.3432280024493733102087644570605954 0.0439898173321231984360340775694622 1.0449867146612297747194130506176543 GT 1 -145270018290005684216448291.3802088690821737383395052782473162 4.2694886250824102241623375862644050 0.0883038140732536332949105191042509 1.0924484738740393165501110680490502 LT 1 -155198290563309231516094026113383.4647549972542957288307630697364030 0.1197808357951257932133640950093417 0.0072669038759847902897647975958438 1.0072934364398271373488698223551775 GT 1 -2391628175680129514130887193385.7929513122923808319373800136445361 0.0964659985154119115254630941388207 0.0087594835761535371052532644880514 1.0087980733687866384212826330636657 GT 1 -970238269719.3797751379272212665195627432334921 1.2685015267561526658492277613215710 0.0269066180050118201060599804611664 1.0272752281279027989476587917437533 GT 1 -14168820632.6775274490321355792873641054439616 2.1888372038429958808100901394550892 0.0156617123469442859796152412566951 1.0157856527462281223656121583665430 GT 1 -5926031291269205635.9269765562281483524660669112274237 0.0424631811796741268535986060403383 0.0177490922412030097022120486481785 1.0179084963813103021878673613777108 GT 1 -236470421985380295999921850821032577259.6888404325466323838682221685090363 1.0750487648362051721673068191567667 0.0225174470456386570100328124357193 1.0227748359219446336541160751393387 GT 1 -7178602106015.8388625332392923471608628053193204 0.0089286787120579465633132940458517 0.0431812117043962852781537462662593 1.0441412593819894119744187650190257 GT 1 -309113976078.4371493069865776687874277896324844 0.2083808360382109867373625079085649 0.0966623640291290128470061422607294 1.1016588907204586721442958389514848 GT 1 -95648177329.1471666369709769693724702371301288 0.1465111357668718195237117895131535 0.0317512669626932707478957537939415 1.0322662690959480197344844745790028 GT 1 -22311847307618937595017925.5369166827443959234714077565537574 0.6754328433842029774522432206332229 0.0829342246947387184760750203609643 1.0865760805027906563028642074517419 GT 1 -72429449649967393654.8126489964117896248040635707186030 3.2349851624981611923371272198437659 0.0722416297827190335894394488893685 1.0749839570209257553829821753435316 LT 1 -2964529734871223335055723182.6235838038696694233803787950231986 0.3202073792976759702693688921651802 0.0998996899778783411432474924799051 1.1052490662884028216568307345275876 GT 1 -1097420564.8484071735628072087269113911723951 0.9026981716955926303216092100766394 0.0731403694622090672446965504248999 1.0759531482500363819442691805206694 GT 1 -24311207598744373.6321654445362100117308862794770539 0.1062468287325723441973510516150342 0.0495949899923118686387522351936061 1.0508670589149149058594783455969291 GT 1 -18647743051238587.9604772160873628264121682730517556 0.1421144402138294413903454704322810 0.0890176067371521809112860574892746 1.0932317087334800844915392348261572 GT 1 -2886586166363013676255287772821920016367.5155278930384517678657729512985415 0.4138475429101329872956548024400381 0.0704499566029607222866567603023783 1.0730546342198388305098061535240832 GT 1 -56142854346256794.9650416595438085093544114422585847 0.1297095541306446308719294727627143 0.0165875187647699501678426587524038 1.0167266321637191469194991810727372 GT 1 -64081048534448.2452237094778754985987036894629971 2.0191268947600616956997623684108767 0.0752484060863308645848753505180602 1.0782301246553044306303434902010809 GT 1 -224411419707.0234534432578767592688803258558256 0.3648438683318139685142702012130408 0.0590701573266047812729534307103186 1.0608866983149980878037916542804477 GT 1 -32581480.3003289018250393359889271729917661 0.6017746702512554043130146779622746 0.0019479581494870362065485193813088 1.0019498578874373570536824105067321 GT 1 -20285414970961106846234725606.3111707116789488838267137133909368 0.2514597200316425307003106101073505 0.0657532051160095981879620641351312 1.0680146413058747683906633197885756 GT 1 -2006.2607154881567280307186306702997989 0.1581934376389781964642102640179081 0.0749805309229722329471542288463884 1.0779404940403697241840935951095765 GT 1 -765014104384554.2609346194136054386257692258995032 1.2721858194158327663144504162209543 0.0996335645134156630850396090903312 1.1049534479804672874986855384012843 GT 1 -5335077.5896560122136302787517801481400262 0.8867626547038879478389437579625135 0.0925844590324986665485581024784170 1.0971547849786142846066852154593450 GT 1 -1830648175811099.7132472752128482872518138310508078 0.0274276601372986021593556369247316 0.0782660382793560253585657584872977 1.0814986418341312622869716123719721 GT 1 -611914387128641805832735754796999320.5040190771937724716542438294237564 0.9369852876452599354127680398326065 0.0523976714395589905420785594443627 1.0538203493762951738684534965505926 GT 1 -17670.9394873055871788748859600979917610 2.4785773800359562491894286632280006 0.0139940260967911786119278310368033 1.0140928656724917213719974284246820 GT 1 -2126876936650221169015887533133.4296657009698346796597590962525320 2.2633871641910607347455355482032952 0.0606512399752155478269341172572151 1.0625684523050604679065066480976020 GT 1 -784582956069794427187847546132.4805434371836136559852189966235676 1.8288402395048116198804784267137776 0.0055483797065283667024529359353332 1.0055638291379208921186621602020034 GT 1 -358849018006335727213819007131631.1448237636775558343126100898057474 1.5145505360417763470563886736312601 0.0468226518634722888422775178344730 1.0479542980595078381179672433071754 GT 1 -97.6880482190385797709873237528789395 0.4378672122725994601866323563206517 0.0548529499776202077187178703625174 1.0564147551048486608336101280477656 GT 1 -2855.5847987192710328828344630997049535 0.0008512474526416835909999081195064 0.0872634258044148392727523231108757 1.0913079677349770539420598869362979 GT 1 -24014909760141537286527225.4235898415215408098428210202672503 0.0198838043954952815803699622488212 0.0633206269028941335109226704582054 1.0654142398303682083218727892790964 GT 1 -126430565495.7165243186077486061755469458840399 0.3831274711024552928103073061695090 0.0673326221067519871193670774849222 1.0697066498519358785154290674869270 GT 1 -8780091491163080395.8069714721223128866077468704472358 0.9437409140938255956754333340354730 0.0664422841062798273279367129447152 1.0687524904946485544345331464903130 GT 1 -3307773745509350892456329009.2511735351617158769410845481235160 0.1992632739375405435081516842666356 0.0554140847446466074504827275569588 1.0570086324344280403658280949910447 GT 1 -2021.8566395843461772308523144644490037 0.9920294312595590656727672796388490 0.0733866262936196881615067996408455 1.0762188730081480342021725035450722 GT 1 -8591801025440178350674019740424449130.7314368972830969376376710362023993 0.2967108268798352804329026803494222 0.0111278518524248316056762120377681 1.0111902295809503782170443918117242 GT 1 -15171611.5052034486820977036059469017381933 1.5308045577194404890554077392168205 0.0766503994854747296861165875740109 1.0797473507382882454654595180886760 GT 1 -4872971607811018221794623541500667.8525821003203987589544650088099349 0.9210070187797296061263596369158938 0.0598417824077105314035189772259283 1.0617071012941930092303446088069605 GT 1 -2224439994351472591.1318737037767811881548375084685063 0.1028451464789204665944497316977793 0.0566439375620927767383230407782011 1.0583114828460847384599912923822265 GT 1 -182221404112590104327547338531280377650.0375312815779475390056668476253604 3.0977116474145490903717037440045210 0.0982707586512740911092110144462739 1.1034409798696437096252261612974684 LT 1 -3637960744571454177795744722742906219632.1922582459784656674103001283535190 0.3846804157595055840172890172580808 0.0144659902465675037109797633296621 1.0145716428342072717815334241246327 GT 1 -85.9407898000167609427973951044902216 1.3235844971893379687655274933153424 0.0208012309538819557681983164220192 1.0210206243264607039681906303051554 GT 1 -198810665987744.5887784556230979832218736824448320 0.9424579464511902050521714865225385 0.0739598994641178931050615774802222 1.0768377401592535351225053578442479 GT 1 -1592861903789617764479.4598850903072236768917279526348373 2.2928502284304736691321532300787434 0.0618125303678644853530687612945856 1.0638054889303944928899421911093320 GT 1 -3471383342075463524913.6309373704230657599578162683755830 0.1379268401155870239736685316908991 0.0465011552981898106050069351304372 1.0476170655818203100184205028953041 GT 1 -300570885148813730061076905105877838400050.2011148856330263972807660715664125 1.6269476818860245226698618673134625 0.0754357789373637262018571023785364 1.0784327648427257849952772712896250 GT 1 -18026135952379469871350616418324602.1147645600724811497189613536255348 0.0992862735040370782474591708239375 0.0397248817246521438712790577733053 1.0405354540400792057396417181646989 GT 1 -53309201205356.8425786131475935990196475256711021 2.3267456779061289567426646948122864 0.0732720478542709722654651754417948 1.0760952277433536384565503379846882 GT 1 -71888261685781710183639.6806585232111466040347344599873297 1.0283691619955710928270851479240645 0.0179090082028185392307212277844984 1.0180713152490491188020387415892068 GT 1 -19.5007884150650080414082930912467725 2.4059019408088076726460462672252868 0.0246959949433138694891861449089030 1.0250060565256864192805670377178255 GT 1 -68994956649.9256281261331752446237749593617349 0.0819903624752871804239390502265439 0.0869271895468918656739227881427298 1.0909396529873905185489201522746284 GT 1 -561729625125903180885070308163047.3136390628220368229810491183876695 1.2402822350973847726784632336910752 0.0283948422656885030437372055877561 1.0288057733726234891783672270829809 GT 1 -2349962412576106527658450286499318563.5251074889761391723656240433910135 0.9118664608753559047981527030770312 0.0889099264249955101911934237625429 1.0931135133112432229058637319235632 GT 1 -66026549291145077877297647905538296.6816167803138360793185764370287946 2.0242980066388707407806379536194246 0.0755022318342103724725448393600024 1.0785046422565305927250960950961719 GT 1 -362710679367284413003120.5131390453480707406623570423905711 0.8231323872088562266471480335840422 0.0422582717269648563557371213152153 1.0431771320630179066067456663187624 GT 1 -471.6288399263256478982443482809925725 0.2831458193383058697670836267607683 0.0140686026500526960637935128068316 1.0141685035242655627804558682487099 GT 1 -4235636408321813725.5581458855225608124032407476033972 0.2303822840174496298043122370029380 0.0191663825481259441100251142357188 1.0193524388452971303033737465121342 GT 1 -25693058301396909.0614800316311176438318339384308151 1.5015170531874139674623610660259763 0.0179295277912009194108821766345030 1.0180922092425004272453001539227032 GT 1 -5683329042413493795986.0734972780710459798913155286966061 0.5322776998476400111170535028273524 0.0523339674927311158094139553169858 1.0537531251792785813484297891810297 GT 1 -18151164316753146701715910529.3189930807666674172227595677503836 0.1671134994115473937700721271277495 0.0647972749039921498656349680779590 1.0669919549106369232066895966048171 GT 1 -3155215133337541518939442164596226276.2309891080382753489908492443684604 0.5245232978144652381817037203179206 0.0680761735666533099464395803585198 1.0705041989314225262403759730503203 GT 1 -186110548608676664769206345973.2366915518747660702465861226928863 0.5983903463233727553724845829679217 0.0158898091005140482608023989805288 1.0160174055780405147712703382011179 GT 1 -10556832334744770041028528061561297048.4115591123009286808649119302604466 0.0152304986041264096657566006258122 0.0979873511509888903289394010766206 1.1031267359036333374185038881556072 GT 1 -3583774811622465714202128938961957.3966886889077310171289539682656692 0.0391059307622207026262743713543789 0.0215476237093390081610813810729451 1.0217831634472860102160294731019848 GT 1 -5177735993931473099067507.6018728442365238390965645280854889 2.6344676810343054249494354957430223 0.0899560593787649173074152134488706 1.0942623942400302368681200135364925 LT 1 -684.4320547077199781048302301516909575 1.4252109389209604423324596175766339 0.0875588034034552765478418260710435 1.0916316376879493000243715797159936 GT 1 -7095207.4165790348815546598696416523764196 0.0633366831697464638801170608827247 0.0660118293475426648175247903689800 1.0682915060878277768422727107881484 GT 1 -138966245655.8109773214407276945788118887415231 0.1285209417423342579482315622915368 0.0806496855241899095501069537739171 1.0840880383191373090227835198100215 GT 1 -43720749557971947289625532322817712.3317354737378982637399062555458067 2.0508577579266491057949921752490325 0.0523918352747642683373620751206764 1.0538141905197297243529090438143344 GT 1 -768666155293968656027450988079254081944.9241352517625117855008276600876120 0.2039516113960833468754262552056920 0.0758991150283161346601456671786092 1.0789340304306808700151419427342687 GT 1 -46826449786038371584.3998550690067111822282092975451275 1.4465354145658789021814877069292433 0.0226895862833254196283737878677169 1.0229509560953508918610182116667740 GT 1 -9229328247848441975090635290360293.7721105567693894305122066877811014 0.1792104401760105858570008496487349 0.0695404876138216391580453252435734 1.0720767155217436337563901993889169 GT 1 -3214249607050843615382957239905983928241.8570197237350424337714969297053702 1.3175933954310121916619310974772445 0.0905717463571079658575607840361186 1.0949391696299306660738616010197873 GT 1 -1023796546456018836367653957.4144619285822393343653644613238951 0.1162684802333486420619202047586832 0.0689174752868405149964764822103457 1.0714073646955730723485246142089411 GT 1 -1744766629334336144275912070697748003.4253611054052963038863089843774128 0.3800687944837986090034102484329206 0.0969366711567176652384012433682681 1.1019625964148644720375517861851557 GT 1 -30190299659107413867163301190841582431.1119282593698376551878917724449854 1.2507184021687994629377375470387912 0.0123901243969968533666594538880140 1.0124675219630896839203189389840182 GT 1 -10106035314944914820041284788183301290482128.7779842453580895037902309174995613 1.2820508137966218442622375830081272 0.0618861591384945273956445815413353 1.0638839718161187098400183051709405 GT 1 -2796009808131606350665737612932372637.5450951565028569216969128740496459 0.2675596364523044736272355529424921 0.0049468488422918192126071542572213 1.0049591250012951893393304526477823 GT 1 -20210615580015933899480340832.7542686495574574123912481573954324 1.4680662065410644223250635021200275 0.0788867969091442724528775532883700 1.0821723370435005531791418048555498 GT 1 -23458932696373.2384990129999113508068070894633500 0.6393156481481473659916330269257211 0.0849107449010520823723412848238294 1.0887336719077444475450446433490018 GT 1 -1158892597409845681685292892922571166985495.4587332054152179291772586850413048 0.1342752708033545658480872638373827 0.0975391227079710512439571720345262 1.1026299389756171838932119465562550 GT 1 -1587714983012208095402744920754496575.2433103404926006330903617363945743 0.9086605278884756657700550831385114 0.0626685874562552301055295559862806 1.0647183639283220311328472212441755 GT 1 -84595412089009875708.8563940845037706417869097763512529 3.4486611665328647815768676477660267 0.0427629646844817743347183590732904 1.0437042323931085211898679659667212 LT 1 -12615720516885052221270949.1964792041273646640595492548601741 0.7271636759880228915503324952785723 0.0317590724455891065716333341495034 1.0322743305723965880541343408170160 GT 1 -843509332281710336040029987045.0709314534379244768347145980828672 0.2603749204711407296283322688965991 0.0233838622832665929114560538401351 1.0236616031037048209816470118535756 GT 1 -189739855819878718.4516236359352968379885961545335256 1.0111902594889634722788995705213431 0.0548285789008886142739295369031364 1.0563889699505423763041473529631205 GT 1 -1463356165.1720288790025014494535816134200970 1.2225932326072948124829866949899403 0.0900472851121043569319616386490914 1.0943626424829483748059389380521804 GT 1 -222711.0959192410486986332147683293795612 0.3332168080376339859202758684653258 0.0683316637333587449682044198667775 1.0707783900054351368966256795236456 GT 1 -6590507343242020725383520.1285738116252256431652666281121937 0.0224327852522992307074595359038427 0.0818554331881551912632721405950784 1.0854004205731548039294271052724036 GT 1 -836397725958720434862866506249500786083.2202600281704097816071828825253336 0.2116674171332913139731600414614923 0.0391258888172753920191465823391125 1.0399118763214908966753666260977737 GT 1 -328239058479203849941.9579481531313907624047428286549051 0.1942799763177216282122753358923351 0.0526607118120141823043225258065068 1.0540979731002345251929266416803704 GT 1 -38.9321305417494587431165812885913675 0.0320442939508862750970972791938550 0.0282266917701409027056650731238436 1.0286327237079162106471249636755658 GT 1 -17546054096123065530295.2493011727178791293145922570014374 0.3329430406534438376549931574174798 0.0962310640312562894576747544388387 1.1011815530661562466548666821947750 GT 1 -6538888225.9608965480361934745956837030837528 0.7003633386909259117472385115510912 0.0964953868089017882104268791353244 1.1014740630513248378021941652629936 GT 1 -1609437549140245749411876999015504350.0522797321195144017041403547028991 1.7752928035697359586452852232563455 0.0829226291098356892523085290293863 1.0865634363589273635132605753537928 GT 1 -670.1456802378971282346945237005064843 0.5763210368304199011082623669684515 0.0438937951034088084374637801781088 1.0448862791130386794325353725975672 GT 1 -304353076497750.6441719689683589351420567383966166 0.8876348173556370093253312759117637 0.0093539604530108220677882986373978 1.0093979834826074983404507797419002 GT 1 -2105663878610172992.3963800126146835730966053361949993 1.6583730484939468607072938414079610 0.0784222723009489283843562336031690 1.0816681563257538978271547598025886 GT 1 -574.0341608085171459130920087407469348 0.5398014406627008006044885958550960 0.0116388980297909620789638944390743 1.0117071601845761434216857620211533 GT 1 -188475841918031220.3062014720685605021924096129443216 0.7169601528196782388265338984106219 0.0856291326882371414204089837403908 1.0895190269043458598233003142072060 GT 1 -1340863231093.8132759552137587870927005137734604 1.2157517361636694237203826626975253 0.0494714010845231788826542502894911 1.0507370292206818348543281647734350 GT 1 -11756294349395.7968336129546457662175941770005788 1.3567907787353011985423076015852020 0.0238587898331209889924270994505997 1.0241480204865232055713954623832923 GT 1 -162878312183885243053.5599230521073659930279299857936377 0.2011847431061538598033131456648521 0.0573100597499516726616785708172588 1.0590178518472721482056935707421673 GT 1 -393.4882233135287854137417431730857661 0.5538112438157899890306049383968297 0.0697892085494377920992197243162530 1.0723440610440370791620275185099512 GT 1 -152619966255417681939369527.9928682091120146902499217704373764 1.8307508624027343795232557146382057 0.0634594951516051180428657435931870 1.0655625067269566510471338326330641 GT 1 -20.2417535381915470489471725315739215 0.1230717261555600129053515241207472 0.0952648531638142651898982417605174 1.1001130335437970723061893571364797 GT 1 -723902495178927578030061218671859.4311601494523981434993061377135552 0.6217251692104068916159247798819709 0.0169164109787679246182621672610388 1.0170611278406127754049877077927539 GT 1 -915891438043356155504420837884927123947702.3864444565560644082188108242733095 1.8326106113232699883879323593284568 0.0565189611198661315728605567544448 1.0581790109519057348320432707836394 GT 1 -162133.7518663284715951439131519755639440 0.2892174723375648927299926368207469 0.0976942990258359635144275117087057 1.1028019017325919757058311578743717 GT 1 -62503696694054235217752038344541300386722.0229336015874496164118365331316759 0.3647739406468139019365888876759493 0.0510075626057152973006693678681566 1.0523544494300055602923187577616114 GT 1 -15149902199813381841343490347077009.6774567361176816512425238445622058 0.6044767688248159828125232964200317 0.0540191461362991382410183042228399 1.0555329491797846808245065249677220 GT 1 -684402623131444.2945885481028887994054990446503630 1.4060285331775914015513792557277236 0.0353123750371299355594953261924676 1.0359509347485163084709749305733172 GT 1 -35963785757425265495782320341859697.1678381367785528180875526218652393 0.6679315386766685829773153621779198 0.0117817970785475482765920172692542 1.0118517524593732162758257486745953 GT 1 -59768228563685249.6000200264337028329532046009400039 1.7615538723134319094245682811665116 0.0761794661184792598822060261771498 1.0792374536059888318194180165553890 GT 1 -112265822027731747864341449780.7404980161257464073792178445420439 0.2870053639171180020417432657151901 0.0273215740309864321113042046019959 1.0277017488849277880005603770318855 GT 1 -2766411647014.8626209258929726564284054836965592 0.4419733898351738509026947367021215 0.0680839210461777340324140749818663 1.0705125123917171316941284212510678 GT 1 -6838977213.3226288701176443585704294304191551 0.0202540915082667849501975939460967 0.0914550066188132591665593491447257 1.0959108674617318295608956852285170 GT 1 -1426029536311890282514864516000996.4574043149087487264042031572869754 0.0436066092811311626221991078243270 0.0005666923785626837076070444426321 1.0005668530093770164209914419436026 GT 1 -140067010658742759486374834414392403330.6435381297605615107133566108731358 0.6150595423253999323381867657617743 0.0645779213199691311668570626784274 1.0667574305051167636431933708537003 GT 1 -16309315746888970967797724427536.5136346535331392832349598900538412 0.0400142020006882501236497217861403 0.0649071759058508467089724306181500 1.0671094775150539377466128612209717 GT 1 -49.2008689532229307530975918530563460 1.6453582537017164234897288370821831 0.0819142588221465629538780927006645 1.0854644927472775569246525013046823 GT 1 -3956022034330378981643740.0085020700131676266844934220014573 0.4932851804758883855399317139171132 0.0637142744251294111993949185154116 1.0658345867213066184105763191304729 GT 1 -7359965406015802263606308008732582886940607.4935628639716871822002051648722659 2.8860724545060426025889350010272681 0.0014630228782664081899924036321613 1.0014640941412198667175004155246318 GT 1 -25292282872032579824935196928139411398210.4967162492544299384484632447936485 0.7749069615235180981525650505611346 0.0607521791830315398390414938593029 1.0626759146617394118556744004201656 GT 1 -558.4758379628630975736506327185655323 0.5939268117185070716257370642290994 0.0626079572560257755995403358135592 1.0646536821747763725458309630956934 GT 1 -5793289307422693014.9800735645394310258586655527664786 0.6881283948258337268304558503300504 0.0613464658926991075673840658506425 1.0633088411229172431034843478695577 GT 1 -22105400.2763682957746914132019619267156101 0.3686345664504030655060982200015808 0.0060356937233301206957522282218681 1.0060539821487135217486440408648150 GT 1 -18599255778.4838264043835757269501516450296824 0.2829235381958573258408427241856875 0.0261504175065330588793951198657573 1.0264984200238157113002391477841411 GT 1 -275524678291281.6687783294409045629417720982355831 0.9742089463361761179555884183054163 0.0217227068792972483019651269012059 1.0219621183363158892013752969851212 GT 1 -4972069898417548365830819473272529489056.9257617070564833742484708744774055 1.0634916927348584611599988880519075 0.0966479252661041980981991944217800 1.1016429070538228669639178317176453 GT 1 -539946351882483629682.6648223149695556994371388276510774 0.8034360501938530477982567344655823 0.0131509703945725966423720413508822 1.0132382101078042277496939297957371 GT 1 -24814808179745718192033499219366115607027695.3941986485370364084032578689414824 0.7913824908146538352235819500115431 0.0806180247504077641898814715225447 1.0840536007080046926378407149149843 GT 1 -40237707812803475253.3613217864873486212578312132630012 0.3267341341537000286285353309071411 0.0782630526549789934640819811344778 1.0814954027004271695839989509711857 GT 1 -4638491870752710457844538.1284491666410116312374426127117161 0.1608174072415165505631407039210160 0.0618904451135744252627339681268531 1.0638885405418787857358373109454370 GT 1 -2664135476144316886672286650613503.1832084039778495645268964781897732 0.3227159392212861543438163512653743 0.0755366404663917524130645318241267 1.0785418616784750287652656661098218 GT 1 -1871161210.2687426270145429618328841037733020 0.2645732177724964084480125314526295 0.0363973720450903836870356554855583 1.0370762810192060272446583838013991 GT 1 -1859322246715204748239733490226.9474713958752616236232679842657739 0.3019744373296104744263885513062996 0.0715864560147103543276902401464538 1.0742780161646887352029105873076977 GT 1 -53285218948941810.5313122970625099658687655346314783 0.1790105593715715055067514042088492 0.0157741189518178622262201432875850 1.0158998543625969745386622587973497 GT 1 -1108575348933407599459049141315137289461501.0605825690094671815746822815789972 0.0092910412339203517025575373007778 0.0191584586543159855531641903427244 1.0193443601440152537078712592272910 GT 1 -29301.7167263755753103030016235093541609 0.0255546175152720414418209164047492 0.0918250717523144074983719448089678 1.0963182666807460450396477287507990 GT 1 -1325920314579.0654686291850926216420085643020519 1.6839760178520147628601585440230857 0.0383878733834505184173432066552201 1.0391441044065948061422828072247891 GT 1 -52072275553933528448818764315468027393520.9912769235782959242322113041991073 1.0416594759868397472999048218367510 0.0039009922909746638746368610183419 1.0039086210075745484806964267546587 GT 1 -145738166953067939432.1122994448876089522145771346912757 1.4984569669749972517411920062195281 0.0141308960002403291002811517768269 1.0142316877563070062646602399125531 GT 1 -83013186563288535957974.4910061517536107931718674869776354 0.0560142201909733844231347192029385 0.0717207699505279508835957234958231 1.0744226970057306428332698575918294 GT 1 -49840145243635991908877118445075351.5471834303381672495328954885537505 0.9593841364189324368634056211015987 0.0285231730886125392635369141621276 1.0289378633452800227486975553472395 GT 1 -6339135460128126790939976346217.9093697580592348110674842917639369 0.5701337367720313902363307277955189 0.0524674948426302524221727415110607 1.0538940363793100237312966302159474 GT 1 -2033911762035960516776.1511162953059861497117810292373234 0.7573677459769751813319522338649762 0.0259408145979956697130166284577375 1.0262832118859388877123047187555098 GT 1 -905554663902281287432491379244.8520350101401804483713484013041439 0.0278147322731820351818569699113836 0.0166706092173376058512910905143984 1.0168111276979824608520760595095060 GT 1 -322066933551165624841007339599835.5930124182908183279033558558107978 2.8273244430069673596482316303601404 0.0005126765930212151263295187793954 1.0005128080565998509465581255165492 GT 1 -10898929086515098908176.8591082672706795069804022558222864 1.2828807179763936059264559159993233 0.0621686631576792496288622954071533 1.0641851576126738869537437127368140 GT 1 -230710291077416781520895.6138540769552843820615287822769702 0.7800089605278902418366823232032380 0.0901209234600643138341944756408560 1.0944435712241067777640821383767752 GT 1 -358616558690692798510978042207741713441.9744539341623359791412388209961398 1.4393841058611471151049008588608596 0.0827932881034535949509138596655390 1.0864224102138386922377559167644567 GT 1 -25.2120293251725748999890538488105497 1.1334913002020052056272652456550592 0.0799645638372724055462923282428080 1.0833430921126513721338735910805442 GT 1 -1762982183498905002128781266608999613088.0005476544318034809882963661674456 3.0913211182837801027627035552667456 0.0618777076314828653760346221047674 1.0638749628146801014253138004511234 LT 1 -952144153483770.2913578875106100131653912562990953 0.5218522253637622604404000131065742 0.0890708787413869918564452565320089 1.0932901879777522575896934087504239 GT 1 -40413006011453494425420811361119528.1477112359908520867858538980197018 1.7034942003002623497645202571077916 0.0481139120697499191116431304656191 1.0493099068855180214447440729319264 GT 1 -48.9522523155913417807333087413532674 0.1515761670607020902572198260578671 0.0280922059941019565462470515231084 1.0284943411552445145160644004964314 GT 1 -459424.6049748249535008661798626915746429 0.0814108725691360437030406861744372 0.0516340610369929634939089397691222 1.0530148396460587480432187808072798 GT 1 -630.6786488479159062836761596096937365 1.6738132986617652675838205460823910 0.0200819450542089240282360402070283 1.0202863282159033252624779412739493 GT 1 -205148257984046105544591831.7893506049255108897969413493692510 0.8966765731177666936407435826499329 0.0743484930387029888819040509868795 1.0772574575449309212872021103704857 GT 1 -86067087530663311503.8477799100004673292553253360325690 0.6251064408072182051912496019365401 0.0505734587015462925730839494835444 1.0518971173904427297986584810940242 GT 1 -543327553569446996278.2107605090337090748391695333666406 0.1073714330463554177126309490967808 0.0772242208938269631317366791563238 1.0803690002028002137922629019863279 GT 1 -19390627667617056209795456388392285.6679565958469457282811121268093788 1.0608296200539629950704591493461040 0.0043688257888565878714772009348580 1.0043783969950375962438259814973812 GT 1 -2470990565912981957080.6070971964755428527546769068289730 2.8734528506483934148554311961594486 0.0838827975668990835573794820475259 1.0876109722384654431696849269195245 LT 1 -330412654208994984442000549.9763133375560960925306125059563827 0.4913059562792558380405526509382537 0.0708017187374812818411963975625018 1.0734331277835485531236797793186043 GT 1 -1680971195804873473069774382489336146.1191212080552079918889321851857596 0.1305300076059886000964180715350990 0.0097262627020062428537911156324066 1.0097738717520173764442492340319776 GT 1 -4051.7795880001587320563411460257840364 0.8938617478780009780517853976118005 0.0766978141598647625304277236978729 1.0797987027850041562871421158940802 GT 1 -6223855223288275603.4014836718919636031381306574653415 0.3123870850647279365463321286740134 0.0609855761869755784935655160523870 1.0629244390686081857515656095212463 GT 1 -636268082356713728134406610361945.0157328276426108436778121411618151 0.0881089959131287132275685175353126 0.0091870744604151747598499940779898 1.0092295358933000247373488069331864 GT 1 -325459918158851182816.4518029078199207257901931838650014 1.0598420899846914693835338024406912 0.0455361159913445229189007083209507 1.0466054741344416268041109800624427 GT 1 -225952605455028018958591528113.1875026463902299280933905354476204 2.5834306891099676512657091230488275 0.0109226333641632428566592120206000 1.0109827232846934352379715056370593 GT 1 -33144089949988516832442073.0941999849691531752510512682848298 0.4676882115643332468040904509771359 0.0371178881232846366641851552198060 1.0378242922511585181791727280286721 GT 1 -3839732.3351062567097817002342099884722928 2.6278822903229763108670956624544203 0.0658718616321371686108945791052566 1.0681416570500654442250663904502341 GT 1 -19428987222161013989928334669.5682552253065855636201419865335890 2.0599006620694873186838601047303594 0.0526814645834136110019037717465282 1.0541198797169773591515391769220072 GT 1 -28145576522785695051.8241185211030366562046279984529233 5.4565407377321459772463923816286608 0.0868388468584707378531516687968291 1.0908429044981485933380292120618178 LT 1 -387374561649690616592688257744.9485548265017131720140800234149138 0.3523898847670064290375655671442560 0.0500127207995716801034773065806968 1.0513066847925402168001343463520494 GT 1 -167470769867386271336550324160405581823.0875511907901368017387992383476921 0.2095732728017501837857253349514970 0.0259393186638263939328798998164941 1.0262816761137363478532049678878937 GT 1 -6064564389266.5193455387713097664377927417956621 1.1837158125992589546256203855530998 0.0310227460225615418912550046492710 1.0315141410743764549650196280741567 GT 1 -14836480776009494485251946593228251397199.9411372111670686523928513756960114 1.1968574520179189269090299070716429 0.0243106442497064242970465762320997 1.0246110262745745612890069876533693 GT 1 -246947974074567.2518875334331695403044273009779528 0.5078538287700813430172907204515334 0.0652637423045646547968249646777796 1.0674908668158285919829797641844540 GT 1 -34119706592.7706981999156854151633681610044369 2.3130436406230088305608894876988391 0.0385602492765950163999975066248912 1.0393233776707613452699707202328999 GT 1 -670053690987597457500952209304873141769718.8453751658164747882396504598223543 1.3253277838258164047491426679165646 0.0159149210176382304238263063708384 1.0160429232870908492875551646140428 GT 1 -5919481459284899816227105018219.9385208329382009571871124134221398 0.5315397880560930545923194853259974 0.0415998925984004651113861526678703 1.0424899395575198488908484419078346 GT 1 -181862447939698778744541604856177.7757653143467027002166294464258339 1.5400479273885786608469267210068860 0.0824973470129647910694245781724348 1.0860998075185892535822246795546523 GT 1 -55935404002995132450909009750157914.0228299550395614731869360079260536 0.9678147839415151120839099809894346 0.0791762794499858202425571619160660 1.0824866611004315996529873264441283 GT 1 -56498087003.2219729457381679262070678622475171 1.5035559534664575888320715645149953 0.0345882017880760241306689899134453 1.0352005347697995998159986489786305 GT 1 -21.1775899465772753202781408970349345 0.8621086227091084945882342271752000 0.0499028240896676664618562720764675 1.0511910091869312544705333747219315 GT 1 -1183084687284386810779282.9993535163064150331358725826084594 0.5929569135072317539031834775603582 0.0047281406208470995753519696301062 1.0047393536361491352173166355609355 GT 1 -85672481968318121131953433995318668137859.1867313482552297452011857379731292 0.3653145984307450124802266967253287 0.0784119890031504981726709702395167 1.0816569980261146991585242787643649 GT 1 -5099887536434.4525476599676265703414958012523516 1.1248212880463476225517500423112480 0.0004644758704659407628395385587867 1.0004645837727963761225644604586504 GT 1 -26295389272142698786614.3148863725612914638812681315505688 1.0549281632661560824402106525117146 0.0477846874062904098582845362755552 1.0489641010721829916763136019825295 GT 1 -13198162275080919634429.6440261527064365175123566962659506 2.9600439251698207968765590013604984 0.0686844679514500973397511901169744 1.0711571417791989971228452267583077 LT 1 -15990143873726.2662924080321505198908199235451778 0.1592995039252474825197845742063059 0.0132668939674392568012684327393496 1.0133556854040249271181444167814901 GT 1 -73523833104707863052514.0861766994666836641876829399784529 0.9828399384546147665844245635522942 0.0086092819633150527928974323452347 1.0086465559201404622288960371372563 GT 1 -83335507834235041929783124.4621660358535291775205717864813875 0.3961019997242358565459086997033900 0.0050812828919479419935298047597396 1.0050942365091556394398978863627789 GT 1 -631121296680870777.5069665542372946418356501614533460 0.1971452487692629309711156478686462 0.0237487480431296693963650020813118 1.0240352954148558582704775279841450 GT 1 -1826082699797022917610483.9673765726735944389848684309020440 0.1494803681899313771125981705592422 0.0129002723290318063889353941525758 1.0129842034463196569468926143460254 GT 1 -851773081821.9774403329908162218554336457644407 0.6463200601077505126088577642949303 0.0831874506799480096641686533237867 1.0868522449390221857894168096778186 GT 1 -898.6169307320755572140225696953631958 1.2272815944476899849987118202837890 0.0358603760767758521638267361717197 1.0365191567649847090853581216008021 GT 1 -1741586615778264240124400317866431854215646.5606050229605936686198224166517995 0.2639552749839595493879514691123476 0.0376528411007033299531499556555531 1.0383800213783920184514405608217457 GT 1 -187779122800298728196.3435101509458069844765112831749428 0.1410694845211271755320303646791326 0.0675723319968162944607386833453840 1.0699636982977098308322763314471470 GT 1 -15506303927585712.0473672470324995109461240501742136 1.7841142002928306586929703819551102 0.0882199309413006505973321336868290 1.0923564703376260361500485439418033 GT 1 -194510757369877199945632617905009187076979.2847357679759626948177579834827847 1.3005687229003121436738511264818030 0.0273922309731022561489156218024157 1.0277743931491277352492883880634387 GT 1 -45673.0520731376571325378822683255043270 1.0890097712464268744416629022371468 0.0255203967357369860483621321289349 1.0258516907160982780944992023573306 GT 1 -19481068215625.2911274733056732738085734734995823 0.1979594508937608322628199433166058 0.0331393626897112455808329703915520 1.0337009125185576507612052321699251 GT 1 -559.5690543517902108409490742703750793 1.9827303330632380375329009100350025 0.0359900688514989273575481825468640 1.0366536824033902215229792529204236 GT 1 -47.9467226327742289395616562751790142 0.4821030760143699037792750236612508 0.0229989814314459674873551712154827 1.0232675843927595522167163369656772 GT 1 -133608042940558496.4532790158529853540816476535794903 3.3796175157796227641959211672760630 0.0606844998519616623882265092305380 1.0626038603100507047529162269149076 LT 1 -10245958167137131241985270256564361975.5546428839162353973733367294721033 0.4041286853302700443019797202118878 0.0811035116282053051382409109446459 1.0845817980390318980629560853319931 GT 1 -9.1824917788668589966109707562109907 0.8929575343183865755019065185597973 0.0665641767449766481617646338454570 1.0688830668853152183647565114312887 GT 1 -3315199848790231851768534.3303328543417593471201717086845442 0.4677014811790578239777819253790216 0.0288595487300934862149733663980585 1.0292841751470135202489824612089743 GT 1 -15822913505099553061205284552022043.2190938141263073395128913900269481 0.8398017408811962277491421265783876 0.0242179196851169389837647463926821 1.0245159958652684117688259130307377 GT 1 -30623770836039452037.4771573818559693835267536808001528 3.6570379589404405618364546168017055 0.0379210356409392423141135860172191 1.0386587481517722527761484790309413 LT 1 -2589089778900507567326820289258605.7664796056045993515041021669363963 0.5379463541382654467223472371217573 0.0673156152113705123522218348105514 1.0696884153336834126915759319507499 GT 1 -27400.6962583124718894577527546077659189 0.7315999197328878978820064553256554 0.0292085837548352467686801177148978 1.0296436471082486173216524554413096 GT 1 -3668210832070910333370850014814024.7695212218052289814985958529532328 0.1535839217283287930211055327502857 0.0262259741572121590114735195634401 1.0265760085788050894349995169654182 GT 1 -1.7488662100462142079459572677220909 0.0030361846930170459825286172461510 0.0627936700524595078643175316946157 1.0648518182659484215134239380255495 GT 1 -323626677244.0706976758841446422598797236444054 0.2269219179441185634055431931056384 0.0082448843339747338323931973478496 1.0082790613796496949420507113568753 GT 1 -253866551815010828866391891353481523.9189218363031828318762455275714134 0.3640829879942394335048883247678989 0.0270802050474563235509585679392028 1.0274536308694270796883865653586964 GT 1 -95119975143.8619461182906536334469472847168023 0.3052306998602259821340785566614753 0.0055886902813187347015528126377530 1.0056043654405364187866976673719913 GT 1 -1318465551221971988894651551582759583390.2926529554236879666266949682300656 2.0256748647541993772510449887824965 0.0918150105545819519087298581160791 1.0963071882621633041548686913581766 GT 1 -19854663192322317808694752368.7968517948079507897556736409069357 0.4944673026575436051428732268535435 0.0740663312301979479840303462494108 1.0769526788997057052587496106965316 GT 1 -62355384873.8607858736862366826613198310517929 0.1132958139618358715761133094450485 0.0272305751735480489105541182002855 1.0276081983356621869230186493615089 GT 1 -2832199194678994047124447811608317213732117.4905823063983174951926641905433895 1.1064860145916646373048428308904068 0.0867738953657755503982527878171597 1.0907717788456386545205572886475376 GT 1 -1610340295177897.2373246846414013227251609685317674 0.4996276347258243655784863971200839 0.0366657769460418879887159164081127 1.0373548629587717580004812209432859 GT 1 -2585512115416945985236532085348.7922538087478361097847114714074440 0.6545328046792417678114557867775292 0.0346657291231548901258883357830101 1.0352808429329099592313741426828551 GT 1 -39702.9562455435851326959739537909913940 0.0662882296096298511031375006902336 0.0248212877660111913538627274418678 1.0251345301817295706538676865883681 GT 1 -71269050557163190806105510341133.1963638402731544352974078370623383 0.1042131663843070859801714984248546 0.0460226051587871355929041992694591 1.0471153029495816691393369880451307 GT 1 -423528544923922662553952483903.2870060667586690109532017928168824 1.2653480528263399932903358058129125 0.0647942143275304739173075002073131 1.0669886822817496420968671146393637 GT 1 -202795708755122636775394875641505.8457360261955820966970713938038516 0.2313803738566182608072857525188852 0.0224603005139809829842866819693388 1.0227163746623834025026898785533548 GT 1 -410817799344568604896269714117.6528079882656080000329668830385350 0.2297089220571381038021320654986281 0.0002467580701545652044166037514620 1.0002467885199364143618627903414987 GT 1 -587588877428468909187522943778111.9636649088576815518228968563267663 0.1471219906409434737663231098434816 0.0492139138706683864874078468250192 1.0504661774595775504736820882284738 GT 1 -386559.8619006671359465167157598625491447 0.7451911970695431178110766929691786 0.0383148357792326234915027400975387 1.0390681540014224396646253371049219 GT 1 -35984784186825.8207224321259114217820654739393488 2.7920411087085715614103895129298344 0.0688694364360947272910158401280146 1.0739015944610903910032824604419754 LT 2 -469514399038915238.0464780557412179800663402598261112 1.7865607228227668346060586973902155 0.0345658567393645623014162172497166 1.0351773894237805197914140797356275 GT 1 -968412637360180600141248.7982486576172353762456078951173768 0.9469166584161282804152718419937028 0.0626312421550974668954582482802938 1.0646785225694182646208134708443064 GT 1 -567820548311873330.2624659050805114410961630371643086 0.8203922281316469693091962922237226 0.0304800789734883383893832699433599 1.0309542567781840327735965726211484 GT 1 -752002533129160688.2168023967559983398031214179380129 0.6753629509397201613601973775355361 0.0130719486083925462698200342365881 1.0131581384654864906992661350051945 GT 1 -474464950.6807436377752656053496458949837149 0.5968128378198393152400146031549840 0.0872299097524109221583777787217308 1.0912712480092587079358179902007051 GT 1 -786697137027574244770218172430286.9336986401490968366429708649228981 0.7720235025756078775285888058566429 0.0997190398465692406191948487383115 1.1050483864269668564063548817928218 GT 1 -176991395346217172789585.9561476628355608700879221322482401 0.7389461243764872716435446283737261 0.0872278710659062648956073846570268 1.0912690144958584295555296457467754 GT 1 -2615570901321052623131502888.3468034846399702425270251812519610 0.1352798637864899138242560848611564 0.0103805581389655586672843116521192 1.0104348119155224299163408762379543 GT 1 -957179071484839110507961021462071270460.2194562157721244392866973989967929 0.6573511916115802245572064548663580 0.0957544381514303661498256775041872 1.1006543162641922089510009619431842 GT 1 -2875086026461937453962745043997739.8721218733650063687017930221540423 0.2208087358897804847688002940360359 0.0658780099110682514946835573692982 1.0681482389084980553437077166182364 GT 1 -1551159221874447511987661498164576628764230.2449552089807292058006959732306975 0.1309465190810999058708967470778923 0.0773745599172662102017441182238320 1.0805319339022131974589783607881004 GT 1 -35580976585214577829169156433124358830.4460976979387798124733890469491224 0.2293749993958186371903969140069713 0.0658168405154351359762878444424444 1.0680827577469555351162902918134446 GT 1 -104822729740372296684488725769.4186778133693610145252915256257522 2.2755278405347355664961088299502889 0.0238836651706359260913463557774758 1.0241735041503769223459864929037776 GT 1 -31.5547907405842883264969112002415814 2.1423027248935016008998142445141106 0.0028363764118956122720151905142058 1.0028404065499335541221782075007072 GT 1 -900479294779172747445199601445098328299.5986850119196522790433344437627076 1.8930794402153593400715377445169545 0.0829730713518318655536631147085587 1.0866184411283088988097487257150323 GT 1 -3303092604111615638083733509709274871.3202556846871849284973331892002482 0.1548844344938417296788766544149971 0.0175407902535673112778216381878977 1.0176964528980908247360839172092445 GT 1 -566167637999134913707316707432512842.1463715110714646668824173891286108 1.4031628192715813855815527154459901 0.0702824501641428770175215632774462 1.0728744488179303462713671090986282 GT 1 -70182363522069169995971588915901564477469.7277511726473205050229848165563797 1.6049445748018060214126708532245234 0.0385731043351015675340790754662654 1.0393367483936150472113059803485730 GT 1 -10124473356567.7117769083381139823238365048284742 0.1132602079391165194534690432510514 0.0004762216930184215796183351666270 1.0004763351225820476253617958735167 GT 1 -52485553299628.7308156431901876525799411553344792 0.2624489698827906362619763729432022 0.0362125828892099176809649562347930 1.0368845303593748814859096932677090 GT 1 -10937791823358692143876.8984138744370618942801772523883531 0.2750166286470621893315556910473208 0.0774759537877796163351003461576645 1.0806418370524658776397172981450703 GT 1 -3899421960167595268308709422178408344816466.7150880722615780858776354000874697 2.1772893180129651330207476531165124 0.0989207135036611330145494584079407 1.1041620269143054289835218839632917 GT 1 -17954515320898781517500.1860496820468056330163637271953045 0.7183857627465863736619295514582365 0.0312003079893314631244514531301382 1.0316974046513681182099129599134711 GT 1 -168.5774432795318009527296335898736635 0.3727042837106955143430238444165274 0.0531482142121619863089430706733046 1.0546127072446503310527267802247252 GT 1 -98570199354290.1230597198539210928241594892631188 0.7466954178314602111227853267519409 0.0574671001312978749519679437340508 1.0591844532467115322951799244346572 GT 1 -32821731184.6280456246222322319979405276551886 0.8813366195337258104927229674362518 0.0597985834444973724215235894686934 1.0616611537398674905654376328278548 GT 1 -31813549687824.6393968858475719244254181081611401 1.7488816484542910234848431873718345 0.0991521692097782681570489093904792 1.1044189248822305843832538107470558 GT 1 -479364311885699648463011303918381270374.6477841736044969159608505259482054 2.0579901987843832427590875573020215 0.0767665755978455123011560084733472 1.0798731789420098807647910692522754 GT 1 -347632592631121305537031920.1270271639843225089433507190442377 0.6849670242948198232225668481640651 0.0682992479879078990382032985179307 1.0707435973863474610064662688602822 GT 1 -2695206766072.3018170034972627318237557304746401 1.1411132528772240582460994890019551 0.0478772078587231226800901883345608 1.0490612691667303448012493918641157 GT 1 -1363260810424616947519801835.1612835956345435165544531162189194 0.7493121952877956142471488906692676 0.0228847069454113936156541074117982 1.0231506266809947711826798662106361 GT 1 -46241935565916155258388350.4082434183012436558708108844055535 0.1370538010721093380790245732831051 0.0341010376245001387249205063479350 1.0346960440541158201840140803808961 GT 1 -48078396425575769363217504992815.4242763683330630414179644701567999 0.3202771490494376271410255596448356 0.0382992109163461849694900172272349 1.0390519067548831391555599016915768 GT 1 -5638775642041627542858580458511894600931.2185342849011219931641983578933861 0.2524965864796695646152390103731516 0.0257812334907666293299308681503603 1.0261193942875008696863008170819913 GT 1 -546063568508379565704032767322608171820744.1132882254877684999896822146457258 0.0601958617918336447770267947501475 0.0005460643908731660951935064547556 1.0005462135383312046349050689651803 GT 1 -659308249652603559581212168003168629.0115374517733370245009450746431243 0.6531356020325359661822739946477873 0.0332575854261314873859134596651005 1.0338231948416563418736850334307917 GT 1 -426190579829.7264011881539261254951993758254094 1.5019422855538310880830127398873928 0.0609017076056397291527123980572481 1.0628351275159331577690276068407364 GT 1 -36828584403818.4428997468839989978918769425879525 0.0253059326728915157322365050668747 0.0365683571440676792993500230441235 1.0372537403431173441845539059025866 GT 1 -11127176361627139994646.5333671896839098583709228079144458 0.8220567690533604688686603572469638 0.0474226835455713103635692058935157 1.0485840031449263554508136512941134 GT 1 -8495374471876326113025517690.8895850830020788159876662968789508 0.3084659515746042645880526327803393 0.0569976160415908767759069165619882 1.0586864682941771861196559091663473 GT 1 -5071099161415481883427231220386302597733955.9549369929683462803252775227435782 1.6925525115699618762843212770683084 0.0688535056742610161697125587903728 1.0713386624984204632049562443057877 GT 1 -185682278115005111016782636873527041.4794465842544947617145019288648717 0.4929344638407061839242187992577494 0.0335951808568701638219639310743070 1.0341724651179006288438675176587855 GT 1 -911762631.0165202226889870758088006086827763 1.8928051448873566029848476258673865 0.0784526468371907704139217848924839 1.0817011161466146594092427996966897 GT 1 -2212509208506580562514.1572006354649948644670517094205182 0.8024276191682828621985911419221372 0.0806105836578195853136298050830067 1.0840455071596470820148248404111840 GT 1 -81559556496350.3148619665872476770892230736586930 0.6886319337695460328390692866909721 0.0178882567535144588606765665216523 1.0180501856080659123544947322115332 GT 1 -16720200818834686190414799733.3803273607059041402180711531461112 1.4360366648486597341077346584766573 0.0088699349061560861956493423569079 1.0089095069535528952424045053658486 GT 1 -18185971011111324007611422.8514232192556984968376268182109800 0.3122671562216228733956609315829946 0.0822051235906173151401571344603945 1.0857813595066060509541024819205484 GT 1 -21748158805464254769905868.6673874461195399408205143406660240 1.1807808277717480091317950950169661 0.0900405427724217031029018757516062 1.0943552329609000142518856464898459 GT 1 -495630500790984083400976575846954150510.1933682834996688911724568671178992 0.0022612204869761646773403024520459 0.0806960190256563711328782138073970 1.0841384376808780385163417771953732 GT 1 -55365093625456310.5117077873427853671811188086545744 0.1594726484107449542779640601280351 0.0992216759807834662967479219570505 1.1044960849199599823056422110370823 GT 1 -8830226761489217179212117012639.0351213233122434960533495000586779 0.1087710650594408922882912876547693 0.0784713761363022745232860030329131 1.0817214401043305701570958264232483 GT 1 -742904987729748918890977368703612.0137916733971978777117190389018308 1.0552984854734847713934471716558046 0.0211314360482437395284973478462802 1.0213579008765846949339783998884980 GT 1 -141282375089655772743059280159.7897553737938071609868373367944905 1.8016860319824614329195150768082738 0.0376874592359052913109006640520956 1.0384159946314421540327019031839868 GT 1 -2459.7841888979257023266324984183179315 0.7265853551921778035727527694010690 0.0044996659074015333568026538002927 1.0045098198751312685127867498962396 GT 1 -4778217226426390787997238167377784904.0870511184457414294662933440563158 0.0467395608440852948533349390236880 0.0281732830545047861946038025625367 1.0285777651619625584169285387917971 GT 1 -4772112552865721387494130131088585.9597768102334577852420625589009538 0.0732878565419230643828697879519805 0.0707962191534253148456617756509806 1.0734272091675847486143359638820110 GT 1 -1917617661153367283914090705237585461597.2957890261521845267641360180609190 2.5559855093389812100090897729949669 0.0177810674195973040113004810127029 1.0179410498751237750342469616404074 GT 1 -6033028410506926757649640202730970968782.4621265666043198540327882572959200 0.4060692363852005851566990667608904 0.0495918454626370095350967025809632 1.0508637502997037789967023285592809 GT 1 -23125110120135797523476350974816634192.4025319774769245829563667949001492 0.1294534901548363095624515902522509 0.0937421565114017296823076196536911 1.0984314179667353068937562515904048 GT 1 -27077911261297.3357179179698006754682312034874001 0.2532443541867978109302128090700835 0.0819463858376235009224789221287969 1.0854994868400589988599141749984758 GT 1 -117687750901699666873619519835249688411305.0620668939053825746921867584779969 0.7206981191490017454174898194137120 0.0017025079157180846227343952755756 1.0017039588293481052003185207633426 GT 1 -267258284391872424689724421490.9458185064558255051297929161337228 1.4214330234209828752408612171454171 0.0901419777380906810359991239478009 1.0944667111359557687764678324743112 GT 1 -1654714373260623705824935139030007.0512442031315892496548760694214540 1.0182002715679381673908090233979274 0.0400324662167868716071427452479891 1.0408558140679492437325974265313672 GT 1 -560393871322760578267115928746085413.8947710792448496247854305564461354 0.3806344997774363606995639260792228 0.0892206998134647082706388170063044 1.0934546721187397037862102625123713 GT 1 -92660379654031870660423927.1454906657574089624289774466650697 0.8353398441053698490839507369325994 0.0414594405706480894195495846430832 1.0423434018681338765401021302005456 GT 1 -6.4584621917860872942097013350311614 1.9965998843185049279443800287276313 0.0755037712992401681748558246474788 1.0785063074485565321888967258042506 GT 1 -814.2132994628660372322848444977806368 0.7273622483251431320006777952802370 0.0108504581410309336253179368025869 1.0109097536745295020414289724581325 GT 1 -554575617425340993.3431478399325119070855908111304819 1.8018640764348373362084410304161204 0.0657550490993927655183606396274032 1.0680166150725636799573574498238294 GT 1 -3177653045206788528411702594941825620.2022575488934916423421365121201575 1.0541402588445392567100639578737497 0.0480943776760800616221402903041815 1.0492893853194608448884308930575368 GT 1 -1157.6190614439656921599763564371744824 0.0248849326413184881461302706974723 0.0122291079304779184411530974471619 1.0123044987429484282220984571444859 GT 1 -9957155903103619400154954936986436932710088.6143780139741203236021995784693441 1.3832381746801092866210503578097195 0.0632503400746841016492869253881601 1.0653392043451653174979756471746413 GT 1 -1012204367611528623.9950092614187957921417015456819467 0.1753499249974682416201284570085814 0.0243225549757009445739668850753154 1.0246232338472256284745000528825606 GT 1 -22740484.8329483733016953598560491774942264 0.5948224115712220390407392543357771 0.0421201831408781613984717410308234 1.0430329610114061931336840889924395 GT 1 -126418346889880.2755752846444805333475656801573128 0.5425762065678818611688937522039702 0.0996847220295016395381657851628946 1.1050102681455385749552392119275322 GT 1 -10697.9244520627442859979229430031442186 0.3875452485740115289552765444813699 0.0604547034465289224251575389273563 1.0623592478225455171050616571354373 GT 1 -268554908.8499003377895851810573995423067858 1.1594114374207232414291352259184071 0.0828257460248395098976940213496698 1.0864577986331399993090409032246115 GT 1 -16448950823345983158933179.9664389055466778096972678596309877 0.9974651552105269999347998303937363 0.0959447574056599549580019060468473 1.1008648113925079279612268688481675 GT 1 -2272285063993639913017096123.7530228951345292508164726992181903 1.0277265535417187528815093443048809 0.0040316031024674937791916131512582 1.0040397519235043575725861221574700 GT 1 -35.4095583428640166494353589381465041 0.3647473424340940226714555088480360 0.0561681063285103970109790644601228 1.0578072074323662721286186304645530 GT 1 -2394263377964343456477206938356093.3260190273320470005619077089068240 0.0991483293729492553921998588069492 0.0671237530825361786668759378165373 1.0694827268920964892762627515706981 GT 1 -511183.6115382972344070575431040611932296 1.0868899322291850136164433546808819 0.0553329175776284450035145045353131 1.0569227072913499324202050727687591 GT 1 -1636257410598574322451833049134674.8733335404193698273685313755900449 0.1764631953154468280248504254749285 0.0218118329656963046280138546856929 1.0220532276232170209046669190544095 GT 1 -15919941.4395193342343897596979022168068080 1.9377223470197744367991569095247825 0.0809536548908656269010947610974941 1.0844187279642266428818651658042038 GT 1 -319504704664116240.2855910172708607715210594214412496 0.9892255645238792418162154755332840 0.0574512788224111049283221593867393 1.0591676674389136077762359112766592 GT 1 -580434598860901041966711926519843525.5718049087024706052139127302895673 2.6788287001948180671305900288990521 0.0434825093391267180439974602723306 1.0444562041625119871784464296229879 GT 1 -3471126168114.9472003100016298538671797527007772 0.1172065488475257489993961693865108 0.0522596393320211938820425417279238 1.0536746953913284565870660922743041 GT 1 -2541124201879678794680542016.0649133164627631744365038015149655 1.5537002926151449846001959016336554 0.0956799937581186040836324018210004 1.1005719920237363792382234178877686 GT 1 -224084222707025276936892765575.4490248394684557383831477386786447 0.1101398978050322323042942314861122 0.0654234379232900415119719671617749 1.0676617270564739804179510211927322 GT 1 -2682129514422130535722641.0272594208684244240378101394803977 2.7624802067018924085049787240659992 0.0025256955551235463360337431980952 1.0025288905049229434680774083810205 GT 1 -51645878142820925312900.2327367107312708823433655758025019 1.2166419914852061679430148667860461 0.0472337428979823124434028445804289 1.0483856760286723158640736136161189 GT 1 -141707391085933140088226800.5105810674307500065074761317165141 0.7841842269225256702572679630176666 0.0465303312612216660881022213483277 1.0476476648946338101836608833579744 GT 1 -2357156619773900878957981207299434719.0469762956991440809331051231121434 0.7199903770093179979520211006734036 0.0872639315705891605989298179267297 1.0913085218557702245881956188717848 GT 1 -31323151.8348048763592720319416404479897538 0.0254177939973730419848869617627009 0.0558946412457817875229867987963728 1.0575175102146332318928031719680236 GT 1 -2283256084686361.0217831260556925046291300034986385 2.2701881007825928842873492391411052 0.0952565037689283063342077814600328 1.1001038050348914739443799368396538 GT 1 -615135923388905281603314863605020052297.8728415738620685878370913630186353 0.1946134484878278501418066950257065 0.0608500645903795170873177543565865 1.0627801368980704632354651736911805 GT 1 -767559772613465349372420.1535600556656798455971157437505356 1.4681660027461249105743849304174546 0.0895904569604268917206786701038230 1.0938607334159172394927636211564715 GT 1 -1266870976.5128154858088633282982113720281839 0.3125438208784743518803648662660769 0.0971492311357948407694875892071613 1.1021980007237721845394445089966739 GT 1 -107304.5623823286272866242100670658535667 0.2138410463951506440052673382083203 0.0191540410455037746055372271083174 1.0193398562576301465729416221135651 GT 1 -697.6846941575416168931113939135262180 1.0460899630590810631100679635358270 0.0691223977251805383961928961148489 1.0716274794404563598556339271747722 GT 1 -49080031.5792824693010390979077429688701251 1.1632149745864432439575925953273824 0.0481113696799397659366610878864895 1.0493072359919655623556637526378236 GT 1 -97638494212.4861628764098984214126672270682913 0.9043111633492375213235619000963841 0.0363366976436015699898241513889875 1.0370133167955827119766979099559644 GT 1 -933019835046455372.9273406033820338117288187265602394 1.7415261068574666018691148075315605 0.0995538904575162086318813843929655 1.1048649611957973649426847642437943 GT 1 -12589141467887584871589343357084768663294064.4816857857898543310201241434095544 0.1758955071560313760513989987929308 0.0116251142833604232431455578045873 1.0116932142185830906001711429187951 GT 1 -8382084592896816395316525692944787.2187184275553271153158151459009409 1.6700645262169172414570540074001232 0.0711894300926248946355185190934269 1.0738504684873098977211278314640868 GT 1 -4798751824217278724884747725811126003961891.0825322494514826267891540765719998 0.1733825841673644571929768998706542 0.0390229857134680132846459894747116 1.0398047888342844235622548740212411 GT 1 -57420305.4867511639995938256761941864318750 0.0227260291340527289276608474698984 0.0020801465158502814863245128705049 1.0020823130255738033897161041364050 GT 1 -1947661039208016799640529.4352023618293948095529259836492003 0.3941203975041977610916933070802162 0.0987213448453306375368755239771991 1.1039407959872665832275850825601726 GT 1 -1174244474989374497744713.2561471050017284856207277841857800 2.2098085815322605825022706821545904 0.0270386005199020938126890697640498 1.0274108692376485270289370482955829 GT 1 -149291946776757890322054058951614732.8084449176042659319247760574078819 0.9881311443714810874006780004306173 0.0045717318193028824716835354094182 1.0045822141456747090924148085787828 GT 1 -1453341147726579.8009811340621897201310989056885670 1.0022667882941012643459388660674204 0.0032964079923919863750054136223214 1.0033018531147409490793535975414953 GT 1 -4728578124057544.9343416934149464144901731857122615 0.5537521989434156154379739359590002 0.0167820030974186548133568514761322 1.0169244164810524746497873585156952 GT 1 -12.2961944477644486413472331136624220 0.0989447451604501439696192341566586 0.0293598710255421299507572304683462 1.0297994983628402333549019202677219 GT 1 -28360773174242102216.6070492977010161996935417379344321 0.0519287037379583973727399114472316 0.0578520761363892043653910538866567 1.0595929850316142540674706067949240 GT 1 -21871971258792.0056125312233159356357750295807872 0.5433001577580054203715751887154704 0.0636502152124362620693331202747903 1.0657661706175174318803829670009035 GT 1 -571379418305295163619495535987947035114737.6553603116226590975799739124325626 0.9895845353856834441403523291715831 0.0127197524060235347819452378120849 1.0128013410532921182481861303922912 GT 1 -70418846427851975245035699437112.8149382142193369415777719435626950 0.6551340106987220196323440125573303 0.0970411661834401972478809322298625 1.1020783148473395655235318237736221 GT 1 -4831027.6779732998715182322464749438285382 0.9044759110479335123660952568724525 0.0704250897835961632941396220026858 1.0730278831192011782229498904995670 GT 1 -118809424624717893426523351119.0142766293055714038561356744910852 0.2092165955111801113519590074007851 0.0105150575020862086145029716724559 1.0105707313388642951456251496305150 GT 1 -788383678673094605673792008507.8374498470302289720287994748464509 0.3557533776821411760704670506930863 0.0004700227813726701391600418166278 1.0004701332767050802631271163305267 GT 1 -320219909194362247709329313631569419035.7186660404027354156377191096156886 0.3239458121937464799444128757329421 0.0164318506311246300218055842753633 1.0165683508552524675720200612596220 GT 1 -10639703403960691301573971.0392087250003101259610922917487540 2.3028910998581754805768844828659147 0.0393097922352952590993299336446159 1.0401032864312311614133631331599627 GT 1 -19462184856598855915850813615021049.9845720375857502979600553972970882 0.2596658768314858496225074973627503 0.0881936637965031394391333000893276 1.0923276621114585998154801585091676 GT 1 -151064.1600772742883845916481731390442659 0.0806521211563263132544017389623175 0.0695723930306683630691567456713864 1.0721110060668476271434220661901963 GT 1 -46.3849795435524992161350929183249505 2.2957819018597978903804473186782949 0.0430525963372592345176924443487057 1.0440068486395788434373506700861676 GT 1 -109501439974008918.3160970416381863440779090841588745 0.5452767198025678668037642746999586 0.0135698303399960901638244518969611 1.0136627419752361154655590963636556 GT 1 -1966773109100800311687911184632915965542.1093888563640256204608393699321293 0.3804704091107206540360992077903678 0.0380975136877375332597078625613361 1.0388421990340368915909612001308087 GT 1 -43152.1497156085230238130311136084911201 2.3343170853687967858880788469616698 0.0935626096427608476991378562716177 1.1030582110654873327193323644203381 GT 2 -21108853302839810573864036695329895388126601.2529115304824616337389763566978218 4.5319501354905783225040546378158927 0.0346013120926018892860722698264017 1.0352141148747558523012411813820992 LT 1 -2442659263977541366673580600217662.6032380964229243714873673334951539 0.5652180659851028167870716220089374 0.0862340931759577937323914459377374 1.0901808597807058176068640356758118 GT 1 -1384834723381276574323280.6703179834086987926580622103119039 5.6732270271650608747109479440487933 0.0867085605661823025698187548147471 1.0907002385532025920327886688341644 LT 1 -224794869209.8360046684471784469967485171790613 0.0004079714544172226283306499572180 0.0591882673743776577010310304811476 1.0610122310124506706584842053937680 GT 1 -652812131807349838061158080676671.1224873049173171010127078026828746 1.5892290433154649482474145619930997 0.0324496512853642797330273052104716 1.0329878154171074326018855334329588 GT 1 -9391971403139095759947535872513.5051091837270870161725087011310650 0.6170216211175965600453527580525399 0.0118286110295373716931243520934529 1.0118991256606799135524900701913112 GT 1 -47655040725872679185113084.2501864357548632074815658732591066 0.1087447636150269170782092880837813 0.0623984544803809029683577354823541 1.0644302117823141200049724986433281 GT 1 -5515119625348536750.9393111917230787196374112666698523 3.2333024030121972731562508705820482 0.0175586853276494989499914566714190 1.0177146676360485906053132428256024 GT 1 -2822133.5299594381645357067557789253689842 1.1461890504873189563553652373586804 0.0829915572925865627144376279829430 1.0866385998897417928304595661674854 GT 1 -3386743695.5212117649705042857072280705505280 0.7311211641251610475388895753660315 0.0349240667243320616750963605890361 1.0355484934065384829289441879275047 GT 1 -9869513861518619049.2230136666803729888167096534041180 0.2261539306315814817296454667758415 0.0010571754647944460912512708866557 1.0010577346689287954385445958893714 GT 1 -722939737450290670539047544312014000165940.8967741847963224621204903034406193 0.0554720817792712383691918094903979 0.0424599346182420869900676599173128 1.0433877150620215610549829749284441 GT 1 -8252669638153078839284.1734040589214415177966782255274470 0.2853572058657277798600537900211519 0.0693262776845861297248575508520243 1.0718465225122509528798181827913659 GT 1 -525615481740014.1421083371098441035587798177150308 0.4364699335927616518178788141559833 0.0252483938238712287337828665597359 1.0255726033381474937576153758340835 GT 1 -510875733.1687590900703654750906509778031867 3.6337775185401308407764284789857431 0.0973843698769522847117558756162889 1.1024584749620286181143516764941276 LT 1 -275265870565397147166458624692.5749303404870146807253657967443522 0.1842657063859134095790412091850077 0.0242269744324437533890797116206599 1.0245252753852774407464453762167803 GT 1 -70660.9217765338325641138109486500737722 0.3067827311873347983551651716109119 0.0662453620514391772386397786877479 1.0685415755342612777564547000695523 GT 1 -873877973.9069347207688769008724848668951586 0.5205295533458996851128138616719579 0.0528938601477937814960434219641890 1.0543441119791969945901658761725308 GT 1 -951330465045854425178666965316858532832822.7695076589897641803465047228578940 0.9503506830630406220357313768053078 0.0304194138905707075794195590399604 1.0308916864444502485518203407313932 GT 1 -87442.7112590094121752175021140544181234 0.0119445381078787558545321926421547 0.0228655988222065647206929408894521 1.0231310712237143304736094361234272 GT 1 -68664056958197261469905699359859.8559398839098561748757394658621648 1.3177361622981091955890033942580765 0.0711946447095006938458553876702696 1.0738560827984331805852700083075808 GT 1 -107043.6857396566308452381490511205503392 2.3782559146357513210278832347280248 0.0326852403338117486716346797506092 1.0332313352868815690368235857758276 GT 1 -13.5888281847748281392776228806326754 0.2810394340604484380121777526390385 0.0879774723616231253364624582097334 1.0920905878550097993531083373338247 GT 1 -11142106333680743340893197476183.9012024032103363854297896792343332 1.1184173211486048227388019492509871 0.0909818446580057565590670925108008 1.0953902121306323842460180610954913 GT 1 -21745688793914267511.0410750212703659142688680536343326 0.1224586528310336071337742006523033 0.0970677491011730858217413288731206 1.1021077550699086892018309129576423 GT 1 -121083096621383.4259933056941668245062626667317209 0.4668636903571340382443309111961229 0.0696873517886033206772248200525490 1.0722345684584937998580511509496413 GT 1 -304981765.2123985373838058932608089382655204 0.1908226986268876404968198384777022 0.0543407840608203121039323784414211 1.0558730116819014550170173369166764 GT 1 -14998479219095376037621393798424264491914.6025334310244753643881781048480539 4.6504279356447974795005889555248908 0.0367106540108396621209468346966550 1.0374014491892393725839393151949300 LT 1 -54.5265047159001188745681395596517256 0.6996677190884312724246921429443508 0.0093302084538623935153140207470325 1.0093740074977828457535444996090233 GT 1 -128076111649522409943611715756990427927.0007181863578512347909251615505726 0.2867097876254346110196379859195074 0.0716031548623505495577349672161392 1.0742960027590534221615620444889721 GT 1 -378.7308304308238026996000262691416147 1.6873392910986223939813877719142793 0.0127021581097097978438794670390585 1.0127835202373842521098798368940229 GT 1 -68534093357110931941110.2355739331170879915944603829359457 0.0520786911358989161918203064306119 0.0867720921299853660377882304914812 1.0907698042700097696283211138847146 GT 1 -715879177831562076736.8570053357014447988650061388946545 0.2567686385157484367996343715639208 0.0128892864743778033608382791660513 1.0129730740809542729231478627184297 GT 1 -69349.0423220146488368795619113704789894 0.1399579808986730077922525208615119 0.0908073659642360423792953715416066 1.0951982886250359873256404563488448 GT 1 -12610318068213085273343617240212.5578282165948782203439234760808874 0.4750079457308715109805726941419862 0.0430199680182065046380780958554901 1.0439727529696508946023353886771782 GT 1 -124726660856353231586180790.2329289576057157109403694262022038 3.0693455318046456741780156986305205 0.0104823018912814439143044361677566 1.0105376281886858646982756308306785 GT 1 -2309162236198816347505102262820264188700.5995551946555644166069448898397338 0.4161453394523406503476322890912236 0.0532279300601473847479935966049122 1.0546969012072383810382668593362435 GT 1 -96586899166022.7201417025595921698057450975829001 0.6224670688112454348725428235749023 0.0105788749462990979767641909348918 1.0106352290381552676612960363377450 GT 1 -119142278.6956184067594900975131355167341386 0.9818354030454726655897361892787911 0.0294304030246711526996815783665767 1.0298721664503912073357581240248864 GT 1 -330460422.4968954667543383949712976514397171 0.6030441376754986796389652662375202 0.0568866051678038529827093403693805 1.0585687545512950917892008892036816 GT 1 -48047049979535.7094556288323267456088684620868459 0.3826828620240843910010359534267289 0.0483243402319687003445129394398263 1.0495309957609699184692858375406764 GT 1 -578.3642929679201520814422689431993969 0.0137061518814442077049824186766226 0.0214010313846319729084795285676987 1.0216333540665942260776286265219650 GT 1 -27449670661516605.9540517147305937138480853576530901 1.0002557473516537579707604620477065 0.0758048819491604138857417501622537 1.0788320629113189612946077718920366 GT 1 -5953628475590657091470690904954711460608.2792874923403007694306582727208624 1.2635306127598079313180565796188156 0.0441922578303647335203273786366682 1.0451984926724808836699665456597709 GT 1 -3866844951147731260013502166959261095195.5242557873974963350488781917645170 1.0396230129042312392596452407772714 0.0626220585501758154682536634493436 1.0646687254006325510896064044888214 GT 1 -925481973428277247709893069003138.3399440373268139291277422668987896 2.9175631325089404610417773369083063 0.0565830910759225229669447071845631 1.0599433405300173803614415635366053 LT 2 -69161665884864062805132087.1114901820460255404906126476513395 0.4792072489922581498047831444737369 0.0401531568203769778295831599161318 1.0409815456024114804669751493661660 GT 1 -96787458717671724658579.3011747277828117911323260087081934 1.3916821577258235531961564520780875 0.0635484007092676735150468162307626 1.0656574409848564626524662640922574 GT 1 -19045.1640836038658663354334888202422121 0.6813795866510704871217645446267134 0.0067038341984953588716886602875995 1.0067264058291802380276688832366840 GT 1 -26626763955495894057401076082.5280635003642425054042214297605020 2.9196141173654513003087847297436529 0.0825406573829895279083238854959118 1.0861470132592384186866912139741727 LT 1 -856.6585398410676889761820887466980673 0.3117102424225624489502313572134963 0.0346452987348974454932427362658555 1.0352596791011866741492027486926000 GT 1 -89.0761288349128901115105477574666340 0.9053417422977162974309779725708113 0.0484365297114128010278572123961299 1.0496488889650369290930923939939142 GT 1 -900049851466485404667608162821445971189.6875224171385531948535472619108261 1.4671144724900706630296134893427006 0.0377277329742157212395143025811223 1.0384578465032363176088788869014752 GT 1 -1039206021995151734.7112015297601554808210550067438654 2.3142258839963439329345713980979366 0.0897304973178119192078321409589020 1.0940145665233946521102950762087071 GT 1 -1188707102.7802544324445082590355114935735517 0.3441468976172297577801131347620321 0.0628590279696910425705232864898205 1.0649215576543627854556249224122546 GT 1 -17251035477888834651465274808496526994407654.1300816332702834542102980133346733 0.3095801794139509520259276719610119 0.0532327310468922314994212025332463 1.0547019721203651860932566181401710 GT 1 -166244756163464590902041943572.9398842394628725681977788407553829 1.4342075251559733189444131594846680 0.0068839088294892530545656881113366 1.0069077122330801770099268349377498 GT 1 -209739966849277541137904760.2812585212785599136385231731938695 0.8480046175630634405814924224394256 0.0614070818522122579118889321123428 1.0633734207730334019661074787063361 GT 1 -164890514785352646960.0520160156659457217378134785834900 0.2613309192647016932167459844482988 0.0226369304476727476716194658668526 1.0228970792344673572290023378476984 GT 1 -19209203521924554738670311320523715686480.7029476834108720671565204332774227 0.8001521452157840152116543335098362 0.0607545785122140446609569813417381 1.0626784691869604473596713955112264 GT 1 -3176790831311773028796524742129219722.2602966295449324945995438563457408 2.4239206195259965101321847586679654 0.0168818176914104749751938429688540 1.0170259399083614254019703488341901 GT 1 -178853235961585476288155118062160178901.5385090232610778055724887304235277 1.8481479239646404651199996790952776 0.0055814009489955093862887040813975 1.0055970351683083958039044747952730 GT 1 -16270312097.1629522067850150493499882934770798 0.5248493163556815680633215481073383 0.0884452171483457022988777678568127 1.0926035848025916450369933623349676 GT 1 -15529015427416033970633.9440432672589312909225408825074890 0.0529874869370353581057076333109359 0.0299364585488552584242928615105159 1.0303937029795108101437385657616554 GT 1 -31660548793213599736883417322513287856887.6108653624153452707728651308190118 0.0241893516921840990261910088351981 0.0103898552164287742916213685965909 1.0104442065582925446955614894951981 GT 1 -1448213597444.6113357407162216840266841144147021 0.3855398134344784316886233207343570 0.0142442305383206028315893493851362 1.0143466533765227118232721148893241 GT 1 -6413727084015418174309.0720433129230483432909762897079744 0.6229564730181180238173877443997591 0.0584265342827767240635691818004926 1.0602029034275863592216399669014886 GT 1 -2828157205428118860768708569649422227660612.4918581805210769146758321137606944 0.0109747221575629744214471410865546 0.0850692307301004700098313014785654 1.0889068785692390608132377540077450 GT 1 -4646.5205780248425360410029476288300057 0.2470726075710188018384502550816183 0.0359958359624800323761890591312611 1.0366596648399248110580187994078203 GT 1 -19609.9902866507839764288384074521868178 2.1093277489087037985400883706053961 0.0009712380206229378375252485429832 1.0009717099778825921639419539331871 GT 1 -1400161362507364135878006650595011.1972704270467898883599869148041643 0.2078522797242756814403482090784651 0.0641743093614023694208532230631588 1.0663260477973390810390454775284862 GT 1 -316036308710471975.9969523181731189700613262427964350 0.4145575184274858416280935093839429 0.0494277210656721619861085271839183 1.0506910768786808081184342488542500 GT 1 -4726222850620322353.8306493543605860924109818683315141 3.2157632866230129934538910661668737 0.0440694085727890226201985568202304 1.0450699716760810529956694879354550 LT 1 -1396836608159744668667490327.0895891575262930924090557430457987 1.4477085476503804347235264779843473 0.0955394584749464468603959257213383 1.1004165997251753988394754654435261 GT 1 -421196140832546386.0616774576757997956353507947226401 4.0584911189498622992984324303071257 0.0486191118104515946022681680169709 1.0498407832774329962275822065440464 LT 1 -4946696604645538.7383203353105552237635453845983076 0.5164685551120636405555457090502760 0.0648202108127919526051970836378874 1.0670164802776415886522467280269745 GT 1 -1901895696.6228740358627322558082339646500287 0.6216015444251164485066809195672994 0.0438056886986973249984737716967001 1.0447941320848623727061974785950316 GT 1 -16607208922140088465244453326037686585772.2695275472861579641536181927558784 0.3511126749189048395978154585770321 0.0049320312020057170562675867721375 1.0049442338068469782749480065796012 GT 1 -936755164667551794804153005116881124.7077902631135728139007684497013214 0.5500349148359415820806646013404741 0.0170808127830517829188694040170838 1.0172283725735847549684713301348852 GT 1 -1.6098040926008924638390005964394319 1.2778022654642383901390984448263213 0.0674313848397107344909795500719225 1.0698125482298557283915327467212505 GT 1 -7536179028622083059136846405984420.0644809698309441707350987889851755 0.9404066125898615966913464268101231 0.0464462324725660537802618829940528 1.0475594658855279881879765848353091 GT 1 -2122164.4600010600259942649115809473330782 0.1092581606491613990647549321126513 0.0261114417589817951392452399022321 1.0264583984760097331406162351710677 GT 1 -1848921.5384682057408231895984214326143580 1.8077238164455389070417545903871052 0.0856963923782468741452312182762294 1.0895925880449009691880614035098100 GT 1 -1190851576653.5263359667364460360855314315978089 1.4108523067621738631976281371915221 0.0968600874379022161222631452936545 1.1018777956381791701744154280219238 GT 1 -1.6007474864873476617385053540338674 0.4481973668596375812085701618024990 0.0505074264343169614185861565650022 1.0518275701761995669471996223845550 GT 1 -6587870504543709782575477823590274844.7039471291671842434002581518239853 3.3428338437573101021740257409093711 0.0775706168183002023931566920022402 1.0807444553940407698082314088043849 LT 1 -8413874944628875.9567134344114009115881495187113901 2.8121049513348229389707698886597915 0.0281566256998411234996452959672281 1.0285606250570248987770776473143989 GT 1 -53258495588868762069411.1831125620652281881814924797330189 0.3987696346695266911891968615899908 0.0442269538630419357538291428148908 1.0452347935527714293594187370993228 GT 1 -57245120930485479987191980171080773.2099576557565650586160112661309708 0.9791048961770525380778829739533589 0.0983898693187640883230421158847944 1.1035730799829231410497671439268236 GT 1 -3.2493557132896892615621222106948190 0.2421714085155942963057922520248750 0.0095016579007276149905369472350556 1.0095470866467773834485669975516338 GT 1 -158604740976.2870524218645152778981750992004774 2.4719336318014363468008589540763245 0.0232272137396794019691655429206647 1.0235012166675986328196142025785785 GT 1 -3037620706948782686918517778.0953011746654285055001643881170718 0.5601503001312865524012512545678264 0.0076161215457364749254027624035793 1.0076452723042384019533260576091168 GT 1 -3.5488422834089292383586758696026612 0.5644185096083336813540633439547141 0.0080106700998255959560951329916585 1.0080429279041297825568153218986440 GT 1 -14882695865498983762985301813.1931652128421985943489398471090956 0.3349201575708964558714453106863603 0.0025164659038788172145948805317228 1.0025196375261717283224975422751187 GT 1 -466759159686030425146857292356505869889.0513913956622800461556912228078947 1.3575403408494796277336671579292752 0.0426387738672300657515339433107114 1.0435745019740158573332511471172081 GT 1 -503927831071273571612295261691944.3720264226606369985955738492313853 1.7125997843729992937097086427857551 0.0086766800586871571983025363136996 1.0087145416146048014477951113474493 GT 1 -7152343189921408927911376033.3639546345024431107751215596953172 0.4790128772554769809933799873961690 0.0012429602166021241808586051014372 1.0012437333323533006573792592942132 GT 1 -17058823619105879248418071287720421275357.3288348592721453666149387235771718 0.3542928325165415516251514606136807 0.0015071253981364019559051544527597 1.0015082622540190814408606066346036 GT 1 -18190384.5797358554450548881562388336834702 0.0525993342957441123751409546599384 0.0520727431993689859613467241300199 1.0534775130039357362410698238621601 GT 1 -2230937996604895610089450108.1341562863369742097986732954478330 1.8435093034351325689509118461601288 0.0618048900022318419556026774273611 1.0637973452120338240294981681998840 GT 1 -63126405079688701485198311580128237.8055226145469723526138099526576795 0.7917203079229185928591140202789378 0.0860990453116287872145997957188588 1.0900330780734169589236399797043954 GT 1 -1862218468331262376022450.6602337656852934642267207562056122 0.9361947552696390322002331825333889 0.0865930712451960169704292612312458 1.0905737925858208154552475037700317 GT 1 -14313310255.9226227782306431331862411994150774 3.5135107582607277232636828943043134 0.0591007916429531500964476830630144 1.0609192563375605520617510787176578 LT 1 -21008308537259.6151887206818282863313027361267858 2.6789730650117423548366030648967253 0.0442285990164629914248435556202857 1.0452365148346631837437319386865965 GT 1 -156272065226070019787939054368.9411291394952402281779386575639190 0.4202606332015837736369358626467079 0.0949724684298377689895744899711592 1.0997899141204505112223227907227879 GT 1 -12074837705759.1924326529291909165210879247012612 0.5969595460866292715301652758033496 0.0305635758919444911886422280810194 1.0310403824083121008242973283043840 GT 1 -118386231.6657331384193179365092809969070206 2.4533564522516310590775427274825619 0.0317486122162910985591653848090403 1.0322635272976143864557371982678760 GT 1 -33119534373956601066285190313167.6488374252956191424782426327714650 1.1875626141953126649750316011903256 0.0519705743670996849571389050460880 1.0533697375116844479454495340380618 GT 1 -8395311802898284888938998940378472.0451746777008667407654519536573762 0.4131485017394282451845918331072203 0.0659117347221182953434608194652254 1.0681843427795230920669699948364103 GT 1 -183972173227099622275319155.5554152927136082133161824087556989 0.0404115345444169528253385694759248 0.0802045669661695245976247834318813 1.0836039890616880941149721499192019 GT 1 -37037529570639512598703720652707561.6417989946908341193347664790524838 0.2241232936989542728021226296514889 0.0216577136492043051990592805807303 1.0218956841343905436745393037919678 GT 1 -1792381192807971562954.2242437952067849399798533885427632 1.2312975411637303355950045104481097 0.0154320143801278613920897719889499 1.0155523272995305772915180121792431 GT 1 -2292162006965410097735026790299.1862124358742802427051029814312274 1.0198807809542095972801347761042424 0.0850263201839857226544021026973691 1.0888599793487425506290202871372720 GT 1 -77926373364340135675473078661.9157689961912520773049111491210646 2.5925778062928715459530448884397339 0.0859699161498091362940133043602512 1.0939320608485918758816876690942750 LT 2 -6547848724804010996751332125532076964.0231919832650434221561592278898780 0.1048408683399856977762225051487023 0.0193631841722520714830523659725965 1.0195531062848337659472373530534686 GT 1 -1541120829647697868507947431153142975583.5978412461410929761628282795312312 0.5606886843586142385966624404645055 0.0855319230520046348651580465197826 1.0894127194171511329690869855155896 GT 1 -32827718.9927096044969029125478132060119227 2.6537424350910676942770333730777397 0.0001062478714655414718114224628100 1.0001062535161704657466749269136558 GT 1 -1087063645649991362.3225209439049079367924189425653078 0.3411466554519825045284859754815608 0.0637727015352765770821619427128018 1.0658969917453743088810660959851859 GT 1 -745388.9443654743960557499188131733851115 0.9562131025285567568263752895745227 0.0255591918232607987338122229483963 1.0258915025907148021452083009984785 GT 1 -12905152211366.2397321391769622187787680773585166 0.2702311475099635069644008335560201 0.0853169201014973142930423376103069 1.0891776344700238895863709873578849 GT 1 -11818388083.7184601824341563772538082859880605 1.0173039313560684494620554296987349 0.0372280445839743232050896456941314 1.0379387016486519239573031678503296 GT 1 -370980317471917477817947609128711.4765439763295191916838413476294610 0.7177141005498305905738262875539386 0.0954873850453529630673797017099894 1.1003590273621789205279762445517655 GT 1 -26533321357737683789224707722428660786.1004469920385481988785311783970595 1.6854070279060952595840578524578213 0.0942940830012193656893093382350679 1.0990406205555760293142237740925643 GT 1 -4260473268651075840862505070951933727.4949491200925545286005741975845539 0.7358241694778840253692819006746648 0.0429437887194804371245136285967586 1.0438931522838912031204487563167332 GT 1 -5806830110767173653.3850264215761325085009261605801130 0.3196356398032938196779171398414161 0.0959846234675629439600195703926518 1.1009089092960828480938622971312732 GT 1 -3941045069707440538738862956.9988724865715132142318420049852082 0.6587570328631724119602447596765882 0.0632793179414560299832330612802243 1.0653701393070111014415965785703606 GT 1 -2467083.4221433499183739505616720617281835 0.2811114050495069654625414029119824 0.0265815233834108518920425707958468 1.0269412002377716318347327822737008 GT 1 -80967998284332934388632772695.8646755473226141892721734730951454 0.1564424633132438085889830673160103 0.0901815353364142837458219406858444 1.0945101887525695550049623077398946 GT 1 -58255253873091787082460568136103893336.0060920266940882572705552079249920 1.3244418272751637914859775609385736 0.0893012375703649877979037913871800 1.0935431033313968447405126973217979 GT 1 -37851503910996292473609190115196.3252315962569999875772581132795958 1.0316754555424499608132299055977028 0.0138390878641537993718029529177138 1.0139357408023268812999406630583306 GT 1 -7343772049018239167.0478137990931201523577084786281725 0.0905208755731841982134418808167447 0.0330475628321627771762170709791836 1.0336059707076567198860327611371884 GT 1 -104223507376183568335121613897240.5174064712089035505092753002026938 0.1234632208503062650459698582778538 0.0527675899890862978152738891339025 1.0542107987877364523035550392552133 GT 1 -70556951636099513662448798.7409761747146122159919900500115970 1.8461726272813300176053703308389823 0.0587843925971080586097660577324703 1.0605830398154055427603197986927159 GT 1 -1239487928661999240991247973576710966072778.2552911612145568790939795157923980 0.1187470647159528286957839226029518 0.0638472656013246735705777252599251 1.0659766380402276924304420504956370 GT 1 -3372813673111840144154525933.5811217054201646726732400109988574 1.3902775602835391261545052455876426 0.0021103978995278288839134310159818 1.0021126279272245752113772442182864 GT 1 -6478825076008099077248871066181992925013.3622800589152990809378773145213490 1.7738025282187043173618334433010114 0.0810593683238386566218623786889757 1.0845337597184499460505535776599591 GT 1 -1831014295732159958765339.9268676088493452739816482820978368 0.2686340518187065474544897174653207 0.0376894360141394453785817099653798 1.0384180488292009527180914521926145 GT 1 -6625386441743089707.0044046772937731983245477147749316 0.3482379874423733595849111886894502 0.0656974944343951506463085557495139 1.0679550114297804630073178987643864 GT 1 -11920241115.8953719710170810391900534330503238 0.4923374903757105390678879722818133 0.0725964560190922961273125945946231 1.0753664856163916398478939724273974 GT 1 -938637302272.3034923350549444908042798842653353 0.0547434218711291885032730244257230 0.0012921893906417236033013743343719 1.0012930249872626595526963854380203 GT 1 -49408253161177370096211.1666246278560545176273972330840659 0.5721523747097683244297654005854056 0.0628289470611373257554888106606108 1.0648894595744747324040904803331046 GT 1 -903052785088812353787248851506282713805.2785443380154462000647559396706729 0.5119987665399340282814583225399945 0.0643954123079205137608052881404351 1.0665623408082057549436952167560464 GT 1 -227772651890491.1293575369734758128880198570542113 1.7701944238140953698941941919521925 0.0782200602390161616604324749957768 1.0814487609622675411364211572898883 GT 1 -92923273291515286470.0555323163234971079523542107365691 1.9584084498521029727975691266110958 0.0218237884657055510039785097609863 1.0220654497840172933110258318995561 GT 1 -585983515.5276305903746177445108905428418020 0.2592297187497927331103133192639763 0.0826661750312173766871235629998771 1.0862838326573494403740023360310838 GT 1 -14528485352208701072626733737217315.3020265833096584946383214747404239 0.9348701047146325628536797538869872 0.0972555059774452225654429311254490 1.1023157179596971337972184530063335 GT 1 -123234960919.1229695290608362535654869131500242 1.1016984507598063671298346435094895 0.0162606179034417812550222202905497 1.0163942726032491241527782864707301 GT 1 -1170570345163383463787908340518.8853580192508478076336648790754802 1.2959376877584293073607796465339994 0.0205237855037185852849963944847170 1.0207373252039925120839433569553393 GT 1 -2731121164193679962696.2014955369146824840576629115987934 1.4534726316400766713758134102369127 0.0052003153691397840142266501794718 1.0052138840705691689987541732438023 GT 1 -6561248580103986191660224613.3812598325933879049874188722607710 4.0151026926616036606222029975302365 0.0722167505856269829812304104407323 1.0749571409184677783926277056483710 LT 1 -1066415774684039534516394091239668.4406286966341381810621314254699482 0.9011735719253230468365070557609421 0.0040536719941063835737714340222473 1.0040619103938082133169377113903071 GT 1 -1188519060886189655307363796924264.8117476129774509524560983072550562 0.8210851623946828342883544018765738 0.0286171880460416208279059064982044 1.0290346433242571649120807847014236 GT 1 -9599259410.7776023248091603284844589471596629 0.5023101754607025599039189303193734 0.0875646244621956959270909290661347 1.0916380173618728146399807034859218 GT 1 -1347869748978.9770249973144625707606363356236839 2.0205564428847795573703539492845678 0.0361117615543026438906096338399362 1.0367799263149044431462657073420203 GT 1 -120471863240876768.6330610820781724215879649960056905 0.1438240394947783958148007581706515 0.0560815802488038437071308214699569 1.0577155363261273683587469064505797 GT 1 -1286149429737.4849418918846466146806421844995991 2.2617859601712598962969558543534963 0.0534445081460287511100205831759536 1.0549256815738230412973776016733882 GT 1 -66910211392079754808832.4094598471401167989752275631095241 1.4071687602321518855391299344260071 0.0277866675614206243658402481450678 1.0281800207859621235171380801111050 GT 1 -274.0766003130966591194534410397102913 0.4685805920482174974968866359356978 0.0446171884564953387293775767483903 1.0456431690364437309170169839310477 GT 1 -6979408674779884323008215576600575271303.5165622482593080930982023602447031 0.2989770859804719760602024078938923 0.0649108507996799440154362720798344 1.0671134075003511742807829564793915 GT 1 -599426561014740210774.7525351068821434982745357370297438 0.0142908697944754281576149183788301 0.0885397700880168318245497764477619 1.0927073172887137158367072623741998 GT 1 -7703007956501007899278868743042027863585384.2643570517986439852434112753779783 0.9650405262715182981012876409873400 0.0919119528155586934495193015624741 1.0964139368171588428983123494183464 GT 1 -1942227117722.4900653277955777236765516227774403 2.2957936738100841406124413191057392 0.0665861547698836631810221844836657 1.0689066124608150008642927189495968 GT 1 -363159.7641949710680186011948585926469265 1.1130597129801276106826354926313619 0.0431829464793884404008546582391896 1.0441430724489839234671915308735594 GT 1 -74201.3675136085995202354992898980359739 0.2628296322227158899243792043978718 0.0395131646310880682674536672594680 1.0403150028862859764887956502994943 GT 1 -7.2571189625516288020206434386646678 0.6832112831055567596605213259630841 0.0826585139157614252315574210042705 1.0862754811900245774827864460151184 GT 1 -10709331.0462698612898816478318315745204217 2.9981233195084703303435436049303186 0.0311634505740552426110961699974015 1.0316593609623696724970036591871755 GT 1 -478463179372434174188574.0927428743063014476595678963552169 3.2656174250709340639460874155649358 0.0065022198897107579412395948496110 1.0065234514061596624257339782349061 GT 1 -872227595030223585399778742309046.1197866443751575728563414845246160 0.4348971271425695169625945323939176 0.0804628281445375531398351851812477 1.0838848095934165391815576608140995 GT 1 -395011344945922529718.4250713062264746618801238516993139 0.8937621746064525091437561799342300 0.0299371944569567644392408858763417 1.0303944615982498898772873059233973 GT 1 -2759034724255469374614901440438239.6408859756688645286066309767368059 0.4708989640253719859475092319953018 0.0658049057477040260135017651877065 1.0680699822099812612100377803296624 GT 1 -290872545493614751964783858923348311111.0378677577253842216498760672858849 0.1035394456531236503624726679794312 0.0364189950171190404175419584225524 1.0370987209898035381019987353266594 GT 1 -285.6101484833569713640042241018929833 0.2734561211224754818180650858883695 0.0613342079262509627615126938261808 1.0632957821123617454787380248752574 GT 1 -2484560620249028805053.6313717680009386977569794314370513 0.1406839991637259972167587772453138 0.0262954895377509422685214345541224 1.0266473987166396242185880254895166 GT 1 -69128711531069808085.0666459900699496832072950274309106 0.3914452812445992832213381020026299 0.0163968663681640202957445728192559 1.0165327827649020095032510977516252 GT 1 -785748330.7693227752733794937909077711514507 4.0381281013174515831593906255186323 0.0174234190344657708606118006430255 1.0177314686194492100061013266708567 GT 2 -41042326758628624.7754648421756442189580422144400823 0.3873495136577978745065314588981669 0.0829659062192004743597914655683994 1.0866106277212915702482341265520636 GT 1 -21382771497118622635024996430601052.5310854969988131644883559280621687 0.6353412366499742206503545122253857 0.0830336933790015829419670468821607 1.0866845504530610143075249120226863 GT 1 -5015306254.4547204795335636472519211927302369 0.3165271902296724278822955932874544 0.0039257885104089422638433462740547 1.0039335146455339359379329271504760 GT 1 -8743811.3854339948856167633952339576041998 0.2273886759817767601070535232390827 0.0411380421854715369424472633973223 1.0420081583443602099231451835289007 GT 1 -521864155260490.3559630207529762247130932947632121 0.1002499139538895685477148722053296 0.0352447653598805874389176702937079 1.0358808526759215990938484348860230 GT 1 -753773646166.9315601802051092697036143216613294 0.1000140446534481634140318473140940 0.0251709269798483512356277400758670 1.0254931330757569332382304617669029 GT 1 -39669532973794916424374093112.6540679193786420158716894223819171 0.2251092572316603503904837540020804 0.0831269120586994847146389102999023 1.0867862154953265523699729146906376 GT 1 -997516589692273033889082819441679229.4517082957937358654261781959141062 2.2697118236005790224656526893056443 0.0945590767980300824206075816493928 1.0993332459714945838348969531491791 GT 1 -967905179840148936110766156207208919.8382865269957058743413391361447016 0.1084211547519061979216206219957783 0.0277480489936820730704063552831527 1.0281402992562722637959576828395027 GT 1 -2049842888604774.4699569692752052126755819936665261 0.6604223434150002668786154803290609 0.0238890852738769952120993107786976 1.0241790568884019828804212770020060 GT 1 -2970492220.5153392741790676851778364648829104 1.5050100610023995038341461030935115 0.0402324635466327435511567462226467 1.0410641733709282484418218191650348 GT 1 -29575269777277561238.8405910426428823341183850913271600 0.1945754103757622073869529050114459 0.0339956904309228008416399791468716 1.0345869835279376974535346584387932 GT 1 -8761964917041223295111703213.1986295050165096691997506856222331 1.3280426536680817442611172233007339 0.0446242879733468912674833598041005 1.0456506001343705585440202358728147 GT 1 -665039665743378855106292124393373576906.8167690403313560514482897895155090 0.2133692371796358854192883112206371 0.0645442421414210669076737456142048 1.0667214268945186354270563742086820 GT 1 -618046635309648046224324505004.0238989307023294463539166675910928 0.8182212949621397593519716749068914 0.0732930578337635874109869603965838 1.0761178991407229152574773725406533 GT 1 -1456125189258570.8794357894453909414904567279361913 0.1843427694093507658977699573613018 0.0902533123854101547312194230303284 1.0945890834807338458951107913394654 GT 1 -703340438137863.4828883619405718802111559664843359 2.6701621225269605186931346735531371 0.0439287268180140041613347558106370 1.0449228151720703778363508166771785 GT 1 -221343242856820643039264474633596159.1134393370373176770949976223382804 1.5974112462282497264341346816360201 0.0155540884950180030163635155692897 1.0156763224782591776394008206046555 GT 1 -3833440.3286245418549750599963159565554026 0.1754872841909141816272257394448016 0.0407629593673870966875197085651411 1.0416170598419689413471909996296829 GT 1 -147417159717247385163.0760746947942008403649889177842550 0.8422549008197311092061854818368045 0.0856932295629881882717032297785064 1.0895891287893956530238399397735245 GT 1 -86098586561970073737553952725084057886747.7115484406713695320278923268873563 1.6140296361667338278311684115697995 0.0819560316350682310986741316170573 1.0855099936862491037376062159275487 GT 1 -3863932181236.8256198197939527200098679021538975 1.3993208478758169217882387278888803 0.0001855813080937151828375127651461 1.0001855985304354681664390795528345 GT 1 -687396566396.8094628590629261920272651921235206 0.7682906527575040208618638923137560 0.0990843198718142756082950350539186 1.1043436105165162077323505795094933 GT 1 -41882310253925512006664.4872030649167083638585155233801511 0.2530256108376487688367690973538885 0.0985899422069365453164071205099975 1.1037950108190530952392003917804492 GT 1 -2930793396738184.2088001858901198980526477112886324 0.2145921108409509417168939918209342 0.0596847831969409911972896315891023 1.0615401229064501301207813023590812 GT 1 -7313131713883205153021.9499419588709977575104844354408071 0.2291877731257473969676460179938777 0.0180056935649521675815409003259298 1.0181697685721290765413328811514661 GT 1 -5491845159744832470424263081954034.4628350627344697401545088788806025 0.1610320683218933933242996372585247 0.0430429841122383737592442555347533 1.0439968040156961115149117995766925 GT 1 -190789211405217852.9772230272399910294581230190688946 1.5101701208002385079979664804236581 0.0185319215716542932569233234496992 1.0187057890463265490506934363669865 GT 1 -8388850526807075496493581.4625020509686978245010915792623543 1.9836367051790907597318416808129612 0.0224981558420394433990083855231252 1.0227551005177865907599479254773235 GT 1 -7638.6027442003546821129149534719192544 0.6599160539295458297853727924154049 0.0873279184079887086600682950160530 1.0913786287383597484166142010980166 GT 1 -100718828465.9425011417407218277714988910827075 0.4157992961680045430075364356123155 0.0218607122226219509281742700561154 1.0221031980479693766978409754179452 GT 1 -29527595481766537810489182.4193778648127312394886641392124537 0.8410746116182623208527215364328028 0.0714060207402613543768025862429070 1.0740836870919647594704580690389254 GT 1 -7324132726.2150010814864181475620148141766582 0.6959182938627550377161659321400418 0.0819248569099130610055975948133784 1.0854760364936425069623504031144590 GT 1 -1027954740673155636029506202880111242.6022026991113021806667387300035642 0.7280345022863087081288343832902372 0.0098428438546057747830255060628697 1.0098916048707241779929368296319601 GT 1 -6081050062015194104365221589970.8565012072484238327442755828125778 2.5523929286212422739202033787395547 0.0466320518133054162803364989337978 1.0477543552087720955856806384767959 GT 1 -309265821825063.7868677622697652983472433109851295 0.5801112347193599389726532542508639 0.0890968299576861116379659968293392 1.0933186771163242211731759380862082 GT 1 -25089114838.7118680065969873526736043126565638 0.0724624289519372430048452751905541 0.0162618895828250462834643724301801 1.0163955653035601609552419388419329 GT 1 -35764208601493135413.5854872518139480887658967607606265 0.2391242227132774055517881683713435 0.0345238992892944127414156790869576 1.0351339306972987974047474804541522 GT 1 -4132910710.8195977071409112920810853988857904 0.6497441223038465035097610027396154 0.0644249303561933943178072114529985 1.0665938910104106632451135752604379 GT 1 -546160244740292461855370.1184988670892859594909874134540291 0.5820798059846869193269620391781024 0.0556293824009437745561001149297276 1.0572365864963503902916341635015066 GT 1 -8673559270757237163786292743682672911541.6244036867011122191362561630369145 0.7061957941852086343610783488117751 0.0187154320530747962130641237674538 1.0188927820250843431919313820448734 GT 1 -1679062871734.5158411692813184165235040300370554 0.1089529336231719720438183710623951 0.0255196302738918904218901592917935 1.0258509041818895537856128935778125 GT 1 -1186161673737119324066219106.8524184815462569008219461660328871 1.6087468816429077906601146198393725 0.0193181290643991667671234619373654 1.0195071625958607292981118512008081 GT 1 -87537947.9987172826993585266415356443997127 2.5786291620973596606759721134518051 0.0596785077105758155027843648315705 1.0615334491173712949271266112849590 GT 1 -191894591776773848902012670935272296.8482351569381215993218855347573057 0.0063359750452621751704660976967241 0.0819193091676614459159395911422783 1.0854699937143215592460220981409591 GT 1 -5498352295519327425414651230204041210.2168550527209166888333471017476579 0.9657209496553299098452998965324668 0.0776072180112694103749725509464409 1.0807841353086309428056208140518107 GT 1 -34685581939086289843290770092.0092916536148657863271136838337241 0.3671963896939530415937690450925962 0.0017227439629427805573084106603366 1.0017242295928088068866067573675713 GT 1 -6027247296.9288021017803981981423626135072792 0.6815669482348765631612208453731870 0.0741180771866536913179113849842703 1.0770085656269850377928361468716850 GT 1 -637716928914761014000904.8746812010841456566935418881179128 0.1253250450508361390293391777751400 0.0015059729140404107512684772455982 1.0015071080310294190946309543095730 GT 1 -139057946721847424484358406236322.0685319829919617021024245281665233 1.5876442653506979355220372457741048 0.0505876147802741860967837056495292 1.0519120276374683826643509093615397 GT 1 -456693382294869.5378398846684773299566109003277647 0.6775020929959801128761863587723405 0.0347169421419601050723416781313578 1.0353338964490625223930961764403550 GT 1 -2501859834287015919962.4281198963186821946276396497486240 1.3625133677386673589280140938296821 0.0764357160905550342466795110382343 1.0795148727676615306133803612153735 GT 1 -14277.0983680779011744155708225092596308 2.7479535458925596861437293658856732 0.0353021271325903204240262132170941 1.0359403117760193803602606892015234 GT 1 -15057371843.0807320892220016469835844975300030 0.5340873289017286951715665736020887 0.0072920303154678358530109731267760 1.0073187471276305595229749305671018 GT 1 -89695911111611661303227461.6446068415635967185824473677159306 0.7636798909475249415676012659316632 0.0729735525578892935988518782462624 1.0757731836807444273305280301234858 GT 1 -110069.0826714203657565174511481513163082 2.7388170867171640561994282025073328 0.0464711047604675308545854002197364 1.0475855500069858387359494474890478 GT 1 -186401845483362826215874181.1849910504252270290705976308579046 0.4859924605436783097132176268743512 0.0572365486493796789602299118696652 1.0589398747400822067986809344666524 GT 1 -233564519916941393231291198.5924451577464948131916645727768274 0.8069147211544211620372428817861234 0.0128551552180646040239633657199095 1.0129384977504757010895743585078126 GT 1 -9272843869134270073904835341.4363578839416250627093372075257609 0.0610007795482378162691894419590772 0.0741017944908611113022318433901310 1.0769909796344106925448393018826029 GT 1 -164045300338490582870827973377289838242.2404690885446688155272895280971355 0.8876469285340324460395684361656944 0.0852430767522068503752106827297435 1.0890969066525457868967648032236400 GT 1 -88499.8798997740574151516904792329098319 4.3125192097432333022926906441831978 0.0856124520146580220763424186258735 1.0895007842830788271739025280135591 LT 1 -29881608721.2779493528007563034566443402815591 0.3408232286675784529431408028938561 0.0983010353033466315023648980500559 1.1034745566452246756017030418768412 GT 1 -3673911522032588979.9869557566253309510577464771070151 2.6387212206375721633788797710739484 0.0246252968516300417688497495145177 1.0249335708914121450610646433627246 GT 1 -941571145202420171149861394059.2781545646833736954419783463859229 3.1378836955945515934397365131641805 0.0189994997258659647523245097372280 1.0191823094534646166618765080524507 GT 1 -19955047886333903363.1142281344689186935258009270604721 1.1680213476438202266765035205224532 0.0143287764671070093795205964911589 1.0144324246773506608842766722939545 GT 1 -30436632159617.3179012709319251883768235034423334 0.2982222344320587647772482112931392 0.0442426091099888543511070105517523 1.0452511733567693373923996424724563 GT 1 -190223634293176936885276456234833.4349295313883680751797399035700311 0.9380484983542605161472552364058878 0.0269259891238024802424670831573309 1.0272951350679350451817870537962945 GT 1 -3875532002750408397.3086637753389798122737536237477858 0.7220104731009662651318806208716095 0.0414461871167852059092767160351570 1.0423295752625640034403821555784902 GT 1 -6640779961582467488.9459810055493613255523075688249578 0.3125651689589799340875852222763880 0.0335716495063717052469706076852442 1.0341481160422853304189994960796951 GT 1 -30756894460007545191.7707288239473800323802863618231336 2.0000651398779052987686123922582768 0.0749872864531261280214465394191235 1.0779477971891661345560618986261314 GT 1 -237887685257720734.3144788460673193871181837040416477 0.4375660077939520886840423967441365 0.0173188700266233334492001929008234 1.0174705960232388334780978447002478 GT 1 -2534438795405275011670314.5856936078769884553996913428945932 2.0954683797882931315383014448875024 0.0658161739355702534075606525527011 1.0680820442041986374595429954385398 GT 1 -20277452599112764604366931.6265002434961670391039401646380014 0.7027451578619976410085934277879922 0.0698280789816868775438393197864851 1.0723858486095677839680030119298379 GT 1 -1460178818648807350553277638.5798014369010037306171178620000414 0.0577290493455270884986906517144998 0.0647389495046856617588444670954075 1.0669295902713570704956227073119130 GT 1 -3294.8532632734978440484822059824459894 1.6555057180929195020949125867101221 0.0865967886702294827073913992948909 1.0905778624395531784311119838014622 GT 1 -722869199210564321685370656382.3469695171789492047708589366129006 0.8342832243491677367920805421160185 0.0904273315618984630864748956007353 1.0947803848885268954892487053705286 GT 1 -28782871.2108632172528388036937201877221504 0.4332003275558342682082954214800023 0.0588493331981747202403443539497492 1.0606520387153352206982032910980268 GT 1 -135576904909088821966887.2959222729163891346266107123782625 0.1312330921251195393455259874283876 0.0547856325793167422492739553965059 1.0563435333821550438517333447188300 GT 1 -705.2975136770466194509339957237187431 0.8982267428610574705537819702514389 0.0801710663818092166967432972931534 1.0835675679477136367510349472314449 GT 1 -12080564211303837152609.8513294450244598890566982101241470 0.4689098136474080110673751629814027 0.0177105664092138281201043363889367 1.0178692751638242269079016110313761 GT 1 -592208744031166.5072190917014115139353234248303243 0.4639909185562935249512932891436420 0.0533440109989108905881212036190783 1.0548195157828075918719741281736009 GT 1 -11406337074785.5871186013550245864761753341650534 0.5102978718053236904298982093596372 0.0147507031789218809187644946535281 1.0148605766133653312335935646820590 GT 1 -57085955833334257777337492834274.3414563934283063975521687693148227 0.7498395246360868284531737776338341 0.0908449782188730235991310261870694 1.0952396583317826856076103502047348 GT 1 -5587166587260844953.2670750521735491198684217653997505 2.4971530565816339967691369058047436 0.0567923460786295438827766412152745 1.0584688149473607058390945277710150 GT 1 -1110656028306373763552568272107447.3275354487400037841314871312568020 0.5553837213514673842688139892049120 0.0146706251909242651089895889562736 1.0147793030370351353091832031166449 GT 1 -64603822956268084.4755377333791177795524425245408671 2.3005256646483080568388268978850543 0.0702502807102893693556398863425589 1.0728398480971853716953743862357929 GT 1 -11343128394.8745883747648875654663903753161711 0.2460757501895642613656842261350760 0.0609418438010323681656262363776361 1.0628778675075124634707080997685713 GT 1 -252470650250827672168835323342077.8884681779047263929512369266595439 2.5904675081097128095692114694937151 0.0810550262942932334762527480496063 1.0881016135443944341197208070329048 LT 2 -351582969036331750223818679044.3046938241735054547576727110197869 5.3354121680900442999844507454582105 0.0291964404280862998637234782482350 1.0296311384986772570729535551387570 LT 1 -735031334575581786056909577373.7685263080477887974277360112674796 1.7608750822749109094170007414509501 0.0742099986574455848903949173055647 1.0771078504621313137127878409088359 GT 1 -49723260291918726468088748501142.7556078295176234561332415873507238 1.1894891274183812773554179360263709 0.0345579599124455916561815515560252 1.0351692098967998499397394304333316 GT 1 -939251017447513531860693495709570247748564.9297490025859042785272842877763880 0.4879371796758347986888674075831128 0.0407846268717937630486117629316130 1.0416396483661899951171249533847090 GT 1 -164270.2913777976079768483947104114845946 1.4076145434991805038210751468934940 0.0764160968434103898341511513275074 1.0794936300246236318278844727533680 GT 1 -22477009507493535601255749886.1316872186050303834966151361997090 0.7301444216056791784434980224579932 0.0717221329681946398865278060070565 1.0744241653340345038557131042050821 GT 1 -118351575175793092321.5910010494032610250485161089899739 0.1458619903834201568765103552712270 0.0296002159458332197809038547754691 1.0300471438851256623420711175932403 GT 1 -3515936711576588284978000471437385.6083035350116744655896573316412936 2.9106647519857740285141921403653667 0.0617246956968082293267105495658555 1.0637118716496890529157786797906999 LT 1 -14786454.1430357324281289925062610054303831 1.0897956691606005609756227134609939 0.0652840243046660449529608780878887 1.0675125651504957462146134016312762 GT 1 -1946108.3679699284496090996332240207285999 0.3477094539632465361785782745778748 0.0273265869635087854883697865711507 1.0277069026390424443649943205149828 GT 1 -169971198281878700804949337529.3226730256006533654322923925819266 0.6053659306294227158634444749057304 0.0246589692955010123081064227753640 1.0249680940597958934100683620123564 GT 1 -5857874132814285326597752.1586040157871428742143353773211183 0.2291569087864456442833922208810159 0.0003281624215956179707432121800723 1.0003282162786659917497461579022961 GT 1 -96904539268033440.9376605745409682753169735908789406 1.1579185057960192856451779884793183 0.0673079980446250285853550494548898 1.0696802484384662798193550157649246 GT 1 -94056236970905.4702134985941955231641354991859148 0.5444192685580566114042342722002062 0.0347003043038797053412377465245249 1.0353166603704223483424488087633526 GT 1 -219045710650599324628793586077332848929669.4564485342318303093742830507350518 0.1299145384986794486815519868361222 0.0211553406732925430100002781257531 1.0213823218436249643781075891760156 GT 1 -537390.0416740181124146420687397361020802 2.2751075945912892744561647904849673 0.0183153076681848093432052493624849 1.0184851094256929595290938503420815 GT 1 -4461368164092715338603669319776.0557896096248514192664532165350014 0.4921944644892830830858218558141715 0.0632026829574793389383783456420560 1.0652883306624651698395377288602362 GT 1 -83394575555.4407241642014918881039688566790293 1.0660407605960581593983106541093563 0.0077890739178480009720975446178443 1.0078195672002585146581187085345770 GT 1 -1960228569234256698978718549726827.9432006978202287463180768688292132 0.2306698494551802098146701408629486 0.0191903966149228592770478818910953 1.0193769224685605583659320762765000 GT 1 -172738862864328179036008778017513365.8104876137479654935737956243868744 0.1545789957757611817754684532896219 0.0606095345240139211108130855982148 1.0625240550298640011662103218003360 GT 1 -54.0723617047866188654754382727210111 1.1462698522543212188388483982026518 0.0394234631142969891745821774125416 1.0402216155278554267576587893986476 GT 1 -885715430.1406731075701495858221047282940229 0.4105523063955628121403690397804672 0.0279849371372111006450165195378521 1.0283839778693551502842656206197607 GT 1 -173271348.3149957940646153058826588574447007 0.7651601834059311707119122311866661 0.0335170867689732952445067574245879 1.0340916595060367269065021581852466 GT 1 -232964547186789862676.1181711149854706782437483968819824 0.9587528636611035726857574660299849 0.0995789787695947308028004308194161 1.1048928236756565846618877170147640 GT 1 -14411826388641.5145646800986208564423451141208696 1.3918097662772921306108067585702498 0.0034602141121456045593585633106827 1.0034662144987434731341947284270144 GT 1 -233.9448930163383741853598472834300529 1.2593455825003963123890973052534126 0.0268813264053801581662428872045303 1.0272492375380691299349948494214126 GT 1 -1138077537640997851999.6644311034242377329805681418601729 0.5436744374143711515268299484976855 0.0185530778450829961757571804680682 1.0187273450214179164577188685739113 GT 1 -262658743589243587052239440923831929259.2995485903979357038394411239154534 1.6050486249413483915347326706157110 0.0909578992434679541832282183009232 1.0953638704134545688636410445729223 GT 1 -799298520875482624.8429135619949430772562771525578360 1.3745144577980771190616333042110753 0.0130951791807465208671958866720720 1.0131816770058382145790674881153216 GT 1 -438966511826424783760450690508102188.0511673395985833496813770227133881 1.5747648919765325648971935171377734 0.0490332026346917656284492927292336 1.0502761304370764391145211103485081 GT 1 -135081018558889.0256553906965778952262624521847018 1.5926946358168668806879729523738627 0.0363093058622604162069097877960873 1.0369848925607064788180631772806429 GT 1 -363490.9347728718397901221941338304206388 0.3857021525603578567185665145348603 0.0218473393402113895057745236326873 1.0220895263846765302628577341471670 GT 1 -195747007692924507.7076911712430351145191899364678737 0.8116262698576002080051703563933772 0.0764890791672103672460897130101460 1.0795726539305867584123939829453879 GT 1 -138440661329663721261.6102823248936830599912851798227015 0.0932931902291306716901546193145894 0.0773844254723854454389300231754871 1.0805426268740702234164112489214774 GT 1 -25035333073261242410086891655180965418264250.2845339309207292375840217354255592 0.2788114934719270679231865799406059 0.0928611391441811103771135832583940 1.0974597415162068342265526982797212 GT 1 -31220695766794316953007.1230157238379536185843689463987902 0.3847197161870196880334923828342132 0.0952522534638365763279221780599867 1.1000991072447156697464452328272347 GT 1 -328141150083084437268836002735945170538.7625202282718650128214113672646177 1.8596902770406464261575349005813035 0.0823676619630369738517193137804693 1.0859584718121937981901817801499429 GT 1 -759696778848741213510481523182609792325.8252822633226052631804059543791017 0.6613085929360396202527560883853640 0.0744584112173318087926707301554366 1.0773762114221041960087646935359244 GT 1 -22848895389761160875086264017939401417.7557580109100511396039248093822465 0.1293443520517480358482833090005507 0.0859771242901743246578966263860021 1.0898996797122733185866719888787156 GT 1 -2282949169839713586876683252015525827.7130962549928792417640450543946882 0.0547489594284396362359464730563759 0.0029789091516405651534060728442291 1.0029833549327546946670247266653816 GT 1 -16494271731135982485533403.6776591989839639877273123977070806 1.1945815166917777098770759309158799 0.0288688008106212814398252399475584 1.0292937022186007283346320063046990 GT 1 -185401837.3225388436814881699239454582194997 0.7126085025541493637874190576860712 0.0396879036098388143021504021672174 1.0404969469475238291728161356428107 GT 1 -8624517429156244316.3927172852091171041299729091566703 0.7003302685879373005708344000096277 0.0204694468424544397685230581192992 1.0206818494780529236268887792656048 GT 1 -5535.0503008801468318051493770522398580 1.0311724246736391008591739945532656 0.0531462115167678989635229962267454 1.0546105921371898072861877646814642 GT 1 -40405131852636351444845838764301.0305770782816834019370627547248654 2.7069075167431739015247497473546908 0.0240661009628802353172732122514552 1.0243604212589741894648476339452144 GT 1 -47796643590960237.5756757343611399198971685149661035 0.2187969291100647305124735770302100 0.0558477282559512627723008676531083 1.0574678210312480198676284475602235 GT 1 -2367842986021755465154792620772988998385.2692555294632240707178488832240664 0.2248528693514932528916890469064679 0.0127983081322135441546512448730428 1.0128809120279983965180039906956671 GT 1 -100027635651292.3060105119859025208833492431679614 1.0325983831751965166035897870481488 0.0652869401600214927819202132167253 1.0675156846648501546836247266236298 GT 1 -7888624492781233602087648942774.1196747902606989411396323166831213 2.8535012347212502248289317214606587 0.0356882034230343219832640641460262 1.0363405962346350942888754602400269 GT 1 -20253799991968292204591397139772763054813.9060918086571318895944599772708607 2.0852403773067039734142374824064614 0.0299047270743008786593836933311096 1.0303609927968988770953425582054667 GT 1 -2398964753207952789388913404776095.8941924244580682729323142151356212 0.3249041952381468894047362920734834 0.0490038595321728710605392068942752 1.0502452748384340674886969672298226 GT 1 -1938251979188168719.2405196615613967480908521926963638 0.9583911536847451851437956375701425 0.0617535087218591839052822801330412 1.0637425806189331781488724390573352 GT 1 -31.5064907951814790064431603403595405 0.3431123871635378343484537505806994 0.0143062904311682876613689429108376 1.0144096120204324741492900189097910 GT 1 -20424340676454902802845098932739840.8176054708135139198068973908798478 0.2053704930164665895530794795115816 0.0331272966483307753792370359409159 1.0336884329888035675687307029778219 GT 1 -3300050186997800825258767097966608892896669.5849333382714244293844400882645824 0.8405188329484268392237631054318369 0.0681864957705212832056109678872838 1.0706225870778439878835365173643329 GT 1 -218144964998466.3204248918900209887418953293922895 1.6206050032844844496558506165039460 0.0955343148562931885195034811721574 1.1004109127949098738963153428438445 GT 1 -89185426903964987294934770.0154574797167662026962962405316634 0.0375112776692658590122676714027079 0.0488991694153585074822499384142907 1.0501351962057320239809120243509446 GT 1 -30046027359595090952885275498144690.9346170988034340452948266705536005 0.7472454948116454333851770357594228 0.0047875819175947086044540186999156 1.0047990790983779385594128822048108 GT 1 -472366556075824611127547229377235885794.1665617013606692992570608357719992 0.0744286326815382775945532385572484 0.0118342007088271297459357493700566 1.0119047822655578388399941763454975 GT 1 -56889.9409012439817909629070679798152337 0.6826637110429073311680466559001217 0.0302917198921253894027849276301436 1.0307599948735302968374272399172110 GT 1 -96668565561637579707.3229787287457588536729905946643529 0.6497588536707866174880187501379423 0.0768872825793012816548590098445390 1.0800039312195958886112112501602258 GT 1 -38117.4664376017266866271803720389789749 0.5587279318026181450618072771146442 0.0389410825145828913557749435284661 1.0397195633735312639282195488088705 GT 1 -40769538592155755920080235995982.6315999830369117005877654928125814 1.3685806413727782271480277389258512 0.0086672936300953932726760648083264 1.0087050730749617472317659049178438 GT 1 -13411672.1659992048634425793245966115311285 0.3141155767988077898008122534207819 0.0082299089323763925494897321480152 1.0082639615951369622614635665991525 GT 1 -659516694115965865521727304622019545.8025712101932562869865816375662163 1.1404290108751841944897763284361062 0.0855351916715729817133383739501850 1.0894162937632571753606011270387431 GT 1 -14221.2880616140903482580689319360058467 2.2214815443569528471480775452299762 0.0841795454116637150389667034488037 1.0879349437952733431414429509023937 GT 1 -254967985499184340095323237635813.6045474163054461740770744072766916 0.1137258378814497155835244221725221 0.0678037841414387789302580304515271 1.0702119544182223005574683331490923 GT 1 -288582860016309522714508486173546383.9354351840617308369804842344453883 0.4580265882405887170608264652443874 0.0085712237029258388251629826090433 1.0086081678969213587820484514521822 GT 1 -434879998064387311830658571987965599743053.8596369289537362561752764735491617 1.5342531680202178847148664821088789 0.0939446260646852143882871502307685 1.0986548556729543565005473640431081 GT 1 -8331182620540130559372451.1569215601614559636565759004468566 1.1402821456133808404940437789361200 0.0206929278915902480010884262653604 1.0209100266860285884304825939982882 GT 1 -13671771.2677659054973109287176048804025779 0.8673021611837777679992017146343259 0.0808925685082039550779049897457700 1.0843522630324437110366021338017706 GT 1 -3810101366060291286881637451.7639537122735074072940669715073761 1.5918566705099582528377713909800805 0.0687482298794853212139205607354679 1.0712256084896216245692674934539503 GT 1 -2172.8334008635823338291879942836805499 0.1464824546408695509972580125050550 0.0985800926622265234504086941358752 1.1037840840595687030965795910215595 GT 1 -36602687592805.6053727151384513028683786320291704 0.0848070249807111361488842230113406 0.0755685126190522989514745325769769 1.0785763386555912688063366613631109 GT 1 -107556099.9208363999156451724429590003671081 0.7530279106365490164244225259240530 0.0917503658388494575187335935059388 1.0962360106762269238504317890378404 GT 1 -4699567.8492218839147350883644993310243919 1.3401487908174287992739687398044072 0.0942100552719008751650738835228124 1.0989478489062953583412340025825845 GT 1 -1013590636160936156473294290532464578.0329888519754055038675505742096370 0.3616054085289984945458811554539233 0.0813109035409226283839484697077904 1.0848075202206923200479890026510854 GT 1 -1666114268.2355328622837453482057208010576115 0.6205725420719441469312354595753740 0.0668119104871134347976709890763092 1.0691485019757978634848896723210742 GT 1 -11917128644045080280.0855113419023037646317450237213935 0.5106292020135882342138661109440115 0.0173714272349817700470124637677167 1.0175240809353600468543285799872453 GT 1 -2288850669066671501603725.9223855349853980092709826780619170 1.0390855728070100280503551378810477 0.0483577668226061756098980549857604 1.0495661203092808509413577018120675 GT 1 -600783788.4889553405578198443787729734976796 0.8845895905262364189567697858098276 0.0817171954813730932201684887243895 1.0852498698797799293414446645417678 GT 1 -24707108.7898334567793055780210250827905786 0.1033972899646051691005712671078905 0.0768599825539025746328555191920911 1.0799743577761716692708690826838619 GT 1 -271538949431627081871476285205.9668599934133535392256818525240870 0.4216459401460797070506094850585541 0.0702529742963119180882661482258752 1.0728427452101056313960299923434174 GT 1 -437389009152948879.9561676216806829881138098138735299 0.4885702154383297573838364675527038 0.0921697859965792163505097828343470 1.0966979068484800559067020775902056 GT 1 -19.0528531062057079015277329510705163 0.2799819467297358833982808668338426 0.0827337376641499920326565414152570 1.0863574864562680053950021908159014 GT 1 -417834.7713969135476764729381627575715854 1.3036672838819719704691122143622602 0.0858014048487005220730132657817687 1.0897074497830053515425909453547395 GT 1 -27980508013308735216660657949.5671804988920216336859154262082393 0.8824050156397718318496131676945317 0.0080198326612128113906826426947271 1.0080521644991480344736335078070541 GT 1 -1248919821713683.2524792662150485139858040021042091 0.5706083480894727629982788225434597 0.0940262454874539026420627463052200 1.0987449418879522358514943582717080 GT 1 -23072967578971051933541703634271786053565657.3610732376777343031976602939252645 1.0614281870650604758752781035569195 0.0309127037550311491504415085309923 1.0314005821450456233983750730063216 GT 1 -305120923863263779.6396949264726043158886151197107952 2.0565531010630998669440770294865767 0.0378626039492887513007841598412137 1.0385980151771747308115218084099360 GT 1 -2458065820783172584559518.4763422880613895190068552278038396 0.6722830920492366235126452955974145 0.0786631334815064031663823596838477 1.0819295479091562236239638201784158 GT 1 -156954.4962424988465770557344237801330813 0.8045956679904249347930041589606434 0.0269396247509485803121096591950953 1.0273091481055171740459764747484366 GT 1 -15012998071721948656990992172715922718.7074131278274089115139134098707933 0.2737736228859746429987382988916431 0.0873650386916788111932225469257761 1.0914193016583921363222509228965859 GT 1 -101048681363384378024845130123578.7419557109505557035207079125466623 0.0916462288315699899858554920054882 0.0483181849914703501301778426562705 1.0495245279895922961465161387880224 GT 1 -1209957770457303923024739723624108168.2907071967287967864064092414117488 0.6627221964851089003305332460907348 0.0485811174526486945405255405503977 1.0498008480636577334151527205352137 GT 1 -313618131795153928754257158472.7525873482030743459149734000917435 0.4985806045899508376179721624028605 0.0658112730208740518559425128499733 1.0680767980184866612662981882389486 GT 1 -28172720966078390.2551934758391859729426214593506694 0.7026572067086107853639260597063937 0.0612789181104105295533705507246004 1.0632368812894965082920090944683830 GT 1 -11233102728738.3445842224385960243682229743313269 1.7883516358701530159325125781362745 0.0963889444995362749552923165145457 1.1013562595135295175874847371366317 GT 1 -75532072012120.6614298097364807005361954888692608 0.1289450052018144747263273372741157 0.0711316939479627512678704809583827 1.0737883090415327957362898190956086 GT 1 -44603128262681.1818693125519678797297919352195629 0.6639270989107917442798636720142674 0.0265745474347256745791906989423432 1.0269340338197751582061049091669846 GT 1 -757978610.8511195076451156917501595343747908 0.2907388385926250972828064173580827 0.0968261962388740388572675100803385 1.1018402703747369589933150777617681 GT 1 -81954166234355696431.4743582461846248742431294092464716 0.6087562547483656729322574721999543 0.0786234887558626899312316815538314 1.0818865192687520762988461669697770 GT 1 -6699357780333209066455875320547813905.4620029211197567531044044981993368 2.2203672318093042465041464970603923 0.0685113137121148118997770527185219 1.0709712347062714678245342759553812 GT 1 -10976696894117191837666264138361372359594.4273501457015427632679140677553354 0.9240553197539681450777137401312100 0.0332602718095671504631533498906114 1.0338259736451179803460986347492088 GT 1 -17599880984736.1287697337846519345820090819980584 1.3908283096017503329836269440556281 0.0007138121413404508320448602410181 1.0007140670265276586779267082986721 GT 1 -9714770866118276447336306162685387298.4893253084647570978070689880008199 2.1959585069729954082024145998697922 0.0060990504317539696943251726326391 1.0061177256124709511230326347833926 GT 1 -150162944789013762505957105.9046693104133209088952575587627256 0.5123654148987772719597044417244435 0.0484128245951274542118437365637317 1.0496239775200704323036104011017251 GT 1 -51758075827214128027.6870242593166258540973757651927288 1.7870368216851503900702151468321525 0.0631561594262124990084687106308221 1.0652386695722534350041830579121233 GT 1 -45055856.1257802734014045689232445259086830 0.1669572122749146283152670509258709 0.0720744496580456981176923904456596 1.0748037753388263044146314401618159 GT 1 -111469151.5923461348795840048959325927113304 0.0987615881085038605023930085422478 0.0860907739813334962818258571313955 1.0900240275381013630141196436808515 GT 1 -9956280360497501327072946697613756.8817782691800020443105174829079294 1.5980965565984189325486704075665745 0.0471649592958034739303330504513161 1.0483134850595667672629799142181128 GT 1 -391.4344005457706917754030799637411206 1.4641351170635181048578150518849545 0.0847036084528032808486156268062929 1.0885073409708595699656365554733126 GT 1 -18531164534543566315191970705208715.0569084169938723420506089199993461 1.2947400865856337014856665574193121 0.0356905162746189463238120075214148 1.0363429946853918575528483454057015 GT 1 -2395580291400.1419696414095796587005241053905456 0.3643810550374205847110216918960974 0.0338606227295933883627407943455311 1.0344471722887742515854940530439300 GT 1 -343648794417916433383980468002591.1088447861832668368084043333198555 2.1243758001737200871391262419969731 0.0677307801617646633777981214303893 1.0701336435219045677126384528875262 GT 1 -19381835259796967249538.7849606263961722860575263683054601 1.1803839533281041410912258671511814 0.0941518494379664468428001351771647 1.0988835912224833665263143081557763 GT 1 -481914656188923316122094145089.4180187107004729121583591573975467 1.2716275824328904359610433405115364 0.0468328166816090668490885887926052 1.0479649622578929186670942534965266 GT 1 -10557697291.4742913585964584412872489015932767 1.2149107641389369383696563797809979 0.0733606751925790054248903124075400 1.0761908670043653982142846490008909 GT 1 -26381765630668540206671214674160447.8726028572576838035505687301244043 0.2462794993945416519432270921164211 0.0739003028348990612477370667381557 1.0767733858061821568898722589260750 GT 1 -1833516293.8050507288279474185764060482137248 1.9376913246874105381538558115977629 0.0910722941608061158551917031900384 1.0954897194974977810081449920680399 GT 1 -3731524.2436606247728467520980246585790927 1.2543634094536321071278317137199368 0.0278961592706247699335303780542411 1.0282926482017262784603180804494075 GT 1 -619799584.5806657090085493651969144169601238 0.1407188733947207810158742739350257 0.0147817584229556837785601516918220 1.0148920972991226010576575276310885 GT 1 -1195257611124017937118535192553464.0484710270442487941436658284063036 0.2830286954854639699872167458088095 0.0866942572442255574313819756440845 1.0906845773859824699644221882921820 GT 1 -2312272157.4978614202699335942542359839600340 0.2881742478091892528870995296633332 0.0843302489810926159713626237440601 1.0880995131381042651834860666131905 GT 1 -18.0095270821787651631220425946573980 0.1991066231138588094417542993962974 0.0935653823513122396865886047627620 1.0982363775344062983095985723991117 GT 1 -5467278850468636160880411937913923577803092.6307923876714313438668459322394726 0.7538855625095296078482808905317837 0.0791487050774750992411357564442254 1.0824567162162570088135698666877531 GT 1 -135637435706602843018121932105616909667367.1832021411864426553322303124707531 0.1436170038861494593261671188356565 0.0912792914411202351800633801741730 1.0957174833263761214127474025687134 GT 1 -10.7875325496285271927571842807454504 1.5078266064121284375090201887670623 0.0827369973406414198742372130120741 1.0863610401488186006951516258545385 GT 1 -185975574860306288458282535858.9904974719917879337751303189911202 1.5237665313399374541875733706722955 0.0516382385959434630100032000750515 1.0530192446631307271265782644436789 GT 1 -104595284.4090408953223017623898883159572415 2.4121172182787934632315157918909215 0.0456108937517100914219452595785062 1.0466838225046780949484759999386220 GT 1 -408619874094368528531.4578164365451661429216955602856763 0.2112333109418660978106814832441473 0.0545331236072004611416900135445665 1.0560764243975561477472250863744789 GT 1 -25433018112953879589277.3435294434563955023592642121647501 0.4048707014785327781717570664031508 0.0685714036217759086324511861899475 1.0710357463303151710885888787631264 GT 1 -2534398357608603936964116258183579954357.1810733023019844136307264278966450 0.2405805969209046165020433332245095 0.0003664953332533404964682430583058 1.0003665625090815751465678981370580 GT 1 -8515.3504506089449153388163844391752301 0.7760973486904254047349235454466257 0.0452077886921269768741473416882200 1.0462615419576535964635497233006846 GT 1 -18478188811104046561.6212371131141691726207498169203161 0.4187529006238471028755201231230907 0.0353438778157122331351910730236912 1.0359835912190200008471976010781838 GT 1 -16088949248528020262135487249272816909243.6163273369913215302788842792024373 0.6081115058065625875361049459968280 0.0975709115386678434670074403825274 1.1026651642040834639125729139217517 GT 1 -357240922129492591552859516946695686762.3943441847855554833531765767623877 0.0205796124286818746747763163296430 0.0535435654384675563678914098941782 1.0550303373249537670756980289832593 GT 1 -1586805777090.4793531160415519134150134719667878 0.5877176343911488092992941488670710 0.0278461782004647013214961341551626 1.0282412341621837336000552220120183 GT 1 -1747055040281.7522506794174664916895314138497741 0.2214120090932033752800529882001655 0.0377649115058100590900821874340614 1.0384964834369869997873324685922142 GT 1 -857311096548410.1273890925391997046819851505066119 1.2438115681031926545195376311588577 0.0793083683821779771597051727905545 1.0826301178815691474463549353071449 GT 1 -14619214621300126422132499496952684527907.4685522589626639514407426556604246 0.0973609653198721305163894479187871 0.0657099898541642363875715753352312 1.0679683855813562703592540787647971 GT 1 -4471609631966130354840258957512915.6634756765989865137352128355348309 1.0673818817848783443400133527983656 0.0899610308834622732009144280318926 1.0942678571831420806287307073491016 GT 1 -319143571017344743.6961376435371932508042744956730983 0.5857341428915382619088434507620269 0.0329716130491931089260524888208772 1.0335274282711841926624336244337241 GT 1 -4979492916228129408346047051404.1412893871092331053801147002678463 1.6685950792968633357082933622696149 0.0107882985955804675625874961620732 1.0108469142454994570258670712181472 GT 1 -741707639413144136484941800023316.0551296565559104329932979832159840 0.8993784634557481380378205436259815 0.0969641360221806349164611692132524 1.1019930098778395448260065454015119 GT 1 -742806085125100566961.0938585555601281352055776688549562 1.5614684103916933488946352496843313 0.0830722010962737474831554077396589 1.0867265460264824206932490704365794 GT 1 -1666266821791395632101982713707257191.0246548165760779426153017261325070 0.3144410253688510254024631084601447 0.0227377118746910509546977486002620 1.0230002002000393521250576498187926 GT 1 -7086096313526486771770244259966957174793.9092749194962635467445459946914598 1.3220351553731156663204414786626011 0.0119610641374967993644836860712525 1.0120331732430585328065858030387311 GT 1 -426866642726975882941924980278567120.0309298384449956674165564441757235 1.6049517221220511524494402119598543 0.0721561746390006968049411712565350 1.0748918519954171844781895630081996 GT 1 -496549982952387027551961607546683013.7123698258224264427221564673068979 0.4735496698612073265615813025491194 0.0398263756331145420412735458255050 1.0406411521577152434853359895412280 GT 1 -24147653558606263447432616071567.8179464984348527012764691719957054 0.1175746312073297403131460496781007 0.0739995470115928580227779143034814 1.0768805551477326753724036661122973 GT 1 -3918101963121620516745595727232597635959.3469462778430614718714940057353829 3.9979503939038602068379638213069373 0.0636233550881271331905350431672703 1.0657374850349518228220866631725254 LT 1 -1929075392684546724019439870118562444584547.7202413895174521503266640127838083 0.4351020364134439153243232447631658 0.0943187336840578941314779589004218 1.0990678380197019938333486361088058 GT 1 -748039294414164306181788399820941004.7877678351734835658731131625374168 4.1512097667363023507295305198730844 0.0693440685055097329647497144196995 1.0718656387616350740402215904570192 LT 1 -126422109079877472911239623004.5887150099208844312219885743072022 0.8806448449813696458362149805444798 0.0758233880898397292171441787075073 1.0788520871741660501482444627985359 GT 1 -654677094048388110651682757.8376960680039375746794571974807679 1.2418566732796877994422813172898605 0.0221236088487292040101632299411874 1.0223720063510135292368188210832643 GT 1 -2709.1267512720911458884209915927600186 0.0228139208827817777143834445356882 0.0703605276060617471216615421585513 1.0729584320885247462655593127908181 GT 1 -6287027737146308466879969948807159070571937.2152065934533603010017536058094246 1.0181216594968204140299512414332082 0.0496016534033882169143507319052668 1.0508740700673870684263837296683922 GT 1 -34801586098271735240776.5824358387959807025497724063756072 1.0574965607646055329989099208168500 0.0817521454694188233643192109563579 1.0852879307614512903509869484776115 GT 1 -9644041281828536348049926906417.4558510119490356535798466317038692 2.5255990867130660811079187433236319 0.0857784865398287171097945266458021 1.0937038455218481629159080585530528 LT 2 -4301018981885194014273578905429888599.7781095786678453498927815244145358 0.4698777464642865159146762787314560 0.0262692197967420359403487693374538 1.0266204199090392726631445542309835 GT 1 -811665766109.1179022612372552634618654040111641 4.2913972291787494333831587538197466 0.0913204308073367824161259525687856 1.0957627560895942175935743526347272 LT 1 -717632533273064519555325320881189490330930.5781301980669175181829949796496939 0.3918959292215359520372428335568149 0.0825181026450441582051510888317069 1.0861224296513765667095325107165644 GT 1 -1906145407219453109751050.2068780640962425143207973486930396 0.9963059876584364969464358398868498 0.0685622954778451284960389894778533 1.0710259676962538318757638710330556 GT 1 -3339262649538188453192330613649265008154252.7571665728990920209847993124321542 0.2617187422435356340405767772375418 0.0030605486548023311652610300332132 1.0030652417118356622832945066714084 GT 1 -249322361434396818263608519827461257551.3264447002866513415763609551312064 0.1228281420286640249090184896312194 0.0044725638621577694436199507935956 1.0044825956991045312893178421354725 GT 1 -3449114806138351914149607124629202523.0164156442173735997418670036151559 0.5401979499644469353665298790635360 0.0008779320138935345079547791110427 1.0008783176219123133233311893521066 GT 1 -140299345662342944767279.0151525272077236509295596365190793 1.6696940386754559185950495980939590 0.0756105570748651761491804987996303 1.0786218211089007566610941581218076 GT 1 -129953205.6819278400758518095517226136769890 0.3047116491888097096387354399616015 0.0536862179772595051180069471597185 1.0551810714582491230705779610105671 GT 1 -815670002644995012524722883478218378.5903005411171955865600774897407678 1.0330989666141575411574812758026251 0.0589026465529715622817425143619225 1.0607086873123719179091974263151846 GT 1 -1834306436608028.7071293763027934477815687116506397 0.2413260574683977903251655479044614 0.0296103307181572404308705207972117 1.0300575672438333531899676743939094 GT 1 -24273634314.0611819586527924046149839944215099 1.6488706136099654797856781961286556 0.0925500091943000049320218780791368 1.0971168209117457709077899247350080 GT 1 -255782886095825.2759472164264275108569966918363447 0.3405012729639495747727605542530961 0.0699089447173596097856358866859584 1.0724727887215346047717169649695728 GT 1 -362.3163340600658485436766589463024656 0.5590035965827231179944249145070855 0.0767602765584298066752527011988640 1.0798663561626771989368047647312952 GT 1 -13286116352789809531.7835524850583247075407947101409560 0.2456946134447528416915384573669943 0.0342890641456094356980997922102986 1.0348907277962891034632541197800583 GT 1 -8317315963641513137754886269.2028246054796531443534424946760609 1.6788841081877267414978583095080835 0.0359289122115191304488947561853390 1.0365902445712663158829334149146076 GT 1 -388530797224184107665386443881966212355.7401106617808797301910171066961001 1.4064742155852868377133005653693351 0.0690565050235116910579856041984967 1.0715566963756456330875801909396197 GT 1 -33640380822.3511182549138421613019073533279807 0.6705022940622789552910137880857137 0.0113774616387892038543357926858671 1.0114426801077638929656787452276641 GT 1 -2179935749147178361502740466132796232039.4155470183466431726225423784609285 1.9705893951518307163745219590127695 0.0001922071040806386354284064076255 1.0001922255782333483505592784477573 GT 1 -239889987151530920325769642.9450023470475557159710741013305562 1.7618631147083252448183620397045231 0.0694803253770758228598055562132910 1.0720120589826627580625764143870031 GT 1 -2757195467331117946792.5136040325458661572965424959837407 0.7242781446913285745822669487440240 0.0644372299733349394088699477016548 1.0666070376817899223399409785893463 GT 1 -3142290.1555798338073630443888549541590204 0.6333981606572073543321278825812865 0.0421665922555403802697311731376530 1.0430814120155285884277307547266459 GT 1 -4066030.0542835383714277595238906331804840 0.0698554709119247704094189043734691 0.0953932618760051736724939253646563 1.1002549732329999458198739220710262 GT 1 -5505011.4293579613441623598472971837550348 1.2000527401231992735365400124612756 0.0037792264781932783437525155355063 1.0037863857980663909721522882139292 GT 1 -185509277184429352296232.7951092870972662928891637896194615 0.8150957466451083265452748383732616 0.0091663533760398310678525211882931 1.0092086228963335921305708326311195 GT 1 -697197979088330169146279753054261626877282.8246014274259966273751730824707089 0.1129698087124159002047814285185687 0.0222262331048276218781727261485277 1.0224769578995002292456454258836983 GT 1 -97005045972940584877758415035180745459.5220958093093954542444598494731600 0.7136598724023431715165894815170292 0.0806382365108612319620486698936177 1.0840755850226521985323253132931716 GT 1 -6456.6729140246619109211599506106764827 0.2228449380364685112763164021753797 0.0977530358727502818644227073373411 1.1028670002448947578526842172564335 GT 1 -32724507372571908.4476993744547826723883140180934767 0.7841736884868856945880571967718079 0.0381445307117619247063671844177445 1.0388910794286799656451590359712193 GT 1 -4283830.8221563011221497278635750811048464 0.5903904398186431668882750707889116 0.0227088177549684391001979176810542 1.0229706342452954873537869879569210 GT 1 -1110873655464101467382.4478801917821880490373724803989704 2.7265856443740685339006324769082844 0.0721141506010929176722393668690452 1.0776475647125994701593816008639998 LT 2 -620823155402855499789941301457.6963044137601213818712140282894108 0.4568828898429499605458467002947108 0.0510431089282795234743226435949869 1.0523919070396848579326301632101338 GT 1 -81315648081245270779855791014047226622308.6890212236267571701100112252622058 1.8165861965027419438157421094151853 0.0308138165129551624345834547917482 1.0312985457263505119425314775703590 GT 1 -134056819.2149124488390777655160449976779704 1.4680305336974440125115893979855665 0.0165921644340355768939339151284287 1.0167313562040658431636063047250134 GT 1 -3494869274299065471607619.5396724531587388597186120338829047 0.3293742795947003734472903776944225 0.0459756101923405060325632342297377 1.0470660420245298811885957392913487 GT 1 -4420446570666308600.9924519105890179299802018945253405 0.6264542248511076183644026177530729 0.0107611597142262305805126302140172 1.0108194797650471386480702664169118 GT 1 -4632432155752491216387606543279422819825222.6749828117851985755976057124516654 1.3445613860577151763784706767583018 0.0255922576056446324950502095256607 1.0259254362510572818269626746888046 GT 1 -1198301605090704397382510613.4556481531021337071425920182256528 0.9807035973048997496867289566420020 0.0665729240642600099692073034281501 1.0688924380279815786615942638094613 GT 1 -63095387704571838726303007954647246520522.4111400292091588372357149565031354 2.3550523562661123216134107016340521 0.0590144454474934958280387950284409 1.0608274906808932982054273265591141 GT 1 -800122479237447.4638040367329833466551878406186167 0.8021023709828397624653196171097301 0.0368982091051824255798928484229991 1.0375961709062825294318534764501051 GT 1 -683876608851595609078915616554644830380.6166452675706621904169039065724628 0.8885860038566977654663608406199711 0.0768523624567363533751205214522561 1.0799661032691931145832337745995449 GT 1 -1441387327963602949588052783717119980382454.1004859376373429794350125854220982 0.5010887527827035658120354548092728 0.0695412328301715768149877237983315 1.0720775164342373468028705509832743 GT 1 -616301.8033010244277782814681459920130095 1.2999974669518611704940597452077003 0.0199068552436205948658800748395804 1.0201076661642980330556657657665251 GT 1 -626150622890952253.4636507053113850849732776125483859 0.2020310979607737514999376507251437 0.0642813366810488276943542454102081 1.0664404210629652044657696412326788 GT 1 -183439581.6259654538926808185551556711052468 0.6737949136519053979456668764314620 0.0645120576968676623771318697272226 1.0666870223910011887193101598288746 GT 1 -17240596870752204850771111250134461103861533.2577587230915949894673191943073548 1.8075497756791649544714021522252533 0.0576596532340376434997369301733938 1.0593887673604095154396579110182542 GT 1 -10356968519053596332641373.8698016220298035836179076173733335 0.1618035984761004307463742301052870 0.0848538301657426021765004814955572 1.0886714780123007472293620246430172 GT 1 -487037264314874933273836068561012567416828.1665830789783908415233493314741457 0.5517058558354580424310554097891023 0.0149095635132639988640153723532795 1.0150218283325494619866969617267842 GT 1 -7828525750680.4755492359775996144369730122688525 3.9722259191349462537876763083626732 0.0934130232761115422712094739172956 1.0980683055422885438262335831889970 LT 1 -7138.3376813798030729956687732268080512 2.9563835887320373885641765017470386 0.0809653669187524421305256158089831 1.0844314717203787841233784226250467 LT 1 -153826664260628645745725519289142108743723.1606618931450507531173668104084801 1.0005387896327079218716910759909580 0.0566337398405019890034565857753136 1.0583006728594017504916046272714454 GT 1 -906780239069286728899721738680517137856.4208817701153773517888679401583141 0.2953306459902359345018663762623298 0.0276715669001105322860904938520635 1.0280616374593765477401335837776588 GT 1 -4235906731061.7661030318498216828837074927360767 0.0773998634977243424562626627888939 0.0094597774951309249051736829647124 1.0095048053844625350386186318092233 GT 1 -2958427293593794483601619120953.4271597889069820147461079819283305 1.0128524397104630660374601274636750 0.0044937323664668199129059680764318 1.0045038595323281991087770840552404 GT 1 -4908677124267996851339556257568378980.9618323349957734726562688385722447 0.9560480342941071333150118323863137 0.0804006594067782203746022098785761 1.0838172031516301830965001865481553 GT 1 -2668146857.4486662402318440853629474416022509 0.1885283679485226895644286016471198 0.0885043503512072855636559731676385 1.0926684576133796781119460031907932 GT 1 -123918853437745022169950993715847606135.2864316264784485590837505312260017 0.0834596682136336499747352101547994 0.0950968251842946823951065240394608 1.0999273301598754909169897936696749 GT 1 -39514569824760245194505.1066579003935884399926520383151641 0.9250030518889059021931242653571255 0.0487905736990634956541470108044971 1.0500210237504031359458210319136010 GT 1 -98965370497794358.1215719376408390849571952417554417 0.1283771426563173523405528059958546 0.0098213829304607591161541216871627 1.0098699308451007196827219852185090 GT 1 -7121389516648513475861334654042357473719.5086096131849998561753206130042143 0.6884265738733013164873307983383811 0.0950840975996645346151348651924296 1.0999132651245461740859274956085796 GT 1 -54481228027204402822641740072.1584026641659268165496093237403595 0.0484963776356731322591935453464817 0.0916263710291092018082517616591761 1.0960994993670862126687488308987421 GT 1 -2065840818437325528679.4387422038333029539535607598559291 0.0788354556054136430036583099277413 0.0378666650250064995699692264365668 1.0386022360756712636779825455850703 GT 1 -395750126585613130909426733860291180979.5890869070388230312055622105905552 0.4462228254535773172000274268297680 0.0058168788764774377539615277733645 1.0058338628107604728147686843365411 GT 1 -100893795547573596959048.8971970174252332390690637968854497 4.4397049013834668890272031524539370 0.0176589527468920395559438199016366 1.0178167322934606431807205864007530 LT 1 -441853.8244649613155738121343337030796560 0.9217128212987957667560370423763807 0.0157149819064175849487484350600321 1.0158397713369517010325150552661655 GT 1 -32234318967.2405160491773062822391813983667632 0.4221358420449328615241375232188731 0.0858681442923432529247018528043770 1.0897804556705800173546379725135166 GT 1 -62.1240954059529854176722895526848596 0.2012697735283908680302203896464665 0.0613289915257261999050251898816421 1.0632902248777480591806521008055668 GT 1 -531772281458810.2304679838259130268221501062854837 3.6129945101828825988687041425141241 0.0966598049422124578831057792165921 1.1016560578004188002633176662992431 LT 1 -422425.1336074831989642280292105591637108 0.0550384861303397365228060880135089 0.0396376206666173388538946293894737 1.0404445872750561447213321133046923 GT 1 -136317472657.3928575430991553049596615476334359 0.9003397188663969622998368947567295 0.0209520300168581679927618239001822 1.0211746386907068060710199842262944 GT 1 -9073023845.0079262534726820156200564388934381 0.4772338264269962137934425979482998 0.0219568581440767639896285240682666 1.0222014975931199341796649722028826 GT 1 -13997.3547065980818152949730935086605336 0.2448600862787082789868358688168938 0.0676960256708277650621914013667114 1.0700963647590760135877368163582649 GT 1 -203509901612064667195762601493482778.8316474823446824927034017094113668 0.7535937217673343750879612978390176 0.0285353185368678603150891320579285 1.0289503654697167385284550467725887 GT 1 -11083369975724.2541914992020988048836111305734031 1.3834317527651616435852998140764392 0.0914577114799925379454005673853657 1.0959138446012520079383363237018847 GT 1 -503117968103817139945.1654881068882005970345194685511798 0.1656584370124220965478951839043438 0.0461858958935048409365113403861911 1.0472864859485692664561572053889088 GT 1 -85392892620266569.2876110684890520889295410374718746 0.3487997567705321675927252319612974 0.0826785147847577638108217903329490 1.0862972845068299135881903672493272 GT 1 -1209686176192177715395330.0013345525309283492544010841720885 1.7807757827471964424769544129135284 0.0772329928305578637338376230650187 1.0803785062806827740822159939083156 GT 1 -13.3895785175017602107159140634549178 0.5778036285913896267593972513813719 0.0708695062162658578417386833108264 1.0735060830966501922563882714641030 GT 1 -180153540559094164165108752.6566109395136274852136271172284198 0.8837039886177998320983170293226753 0.0875996957276879594960577411767576 1.0916764550863042340711471991318848 GT 1 -14530140.0697603083212567676375374618988269 1.5970810691562844359972906664737846 0.0277123795931256410425581412683147 1.0281036125247859922219074721020491 GT 1 -7849295408121679148099526437099685876451.0583363687811288536011838676473084 1.5545413014530907530150221202112224 0.0756126355974838221845550389780069 1.0786240696470806047201884805959644 GT 1 -1478657080148347497666167386228.6847599869959507656526676261041412 2.0285040575827446123100262479325101 0.0654246131439487990773855770227483 1.0676629845472407730714542870975402 GT 1 -107259368509586856542381363950950620054.3212862414226955299316569380466403 1.3241981285390146030440149137412472 0.0950506233796320420511646351409581 1.0998762742828251571197950757594131 GT 1 -700961836060658177087472912627672984.1695958188783490520967165310215298 0.7441327708324130148932140682763475 0.0105699054566188577285486611631554 1.0106261636879243109642162621966927 GT 1 -576497852976129358711117404410.5932945966225724260786500685666462 0.3968317963361141378997526168284459 0.0766355499519989622217942415480432 1.0797312686237112060931980528684620 GT 1 -1.6300728207616757857341453152467213 0.7521018758764719445199471626430935 0.0956264665505429736042738920987221 1.1005128032154428614496274785572612 GT 1 -3188619559204410.2426601926229690566720746791774450 0.0856600311678597505678754046796110 0.0063903706639192118649571001350368 1.0064108764890938238489329928790400 GT 1 -1772214944521873200835.2086087603054839178810597340063951 0.4800069744696831675108085395750566 0.0605989885010589422695825697724780 1.0625128286398315427197114013023613 GT 1 -1394829002551626995833881007095.6694295210410432050586047782329460 0.7912375539007442770363782808520055 0.0371886080764761098702884596569397 1.0378977410664385246627346630153082 GT 1 -424.7760126342919566347003098725865780 1.7747399545502721007672855168634279 0.0937730934585991451818598853791916 1.0984655555750102541808392343417775 GT 1 -6845115115685798572.6029889831137205371602935446783256 0.0032847490495269181456310574957082 0.0839567015215114880489352765084518 1.0876916463438352687453965024901397 GT 1 -1495684406940854609072054583614.4851891619949448615780025164157212 0.3036744888984202023792884087053742 0.0460318648185300036819715656903151 1.0471250093689707286414342247079266 GT 1 -6863676653697709496625152297481666389222411.4919443072574684894057702097478639 1.7982363044824854302986296864492824 0.0313453736507832820445680187943575 1.0318471533812847121474320914805773 GT 1 -49418924424257260802904549601.6027346885919186031747071197520023 0.6905951535193151786142414900749015 0.0032860198416287941474074448883479 1.0032914306614543565912786182016194 GT 1 -128439459149757054.3902230930627478878443245154150496 1.8883971912764184384712938671891040 0.0004007270513280337063888424451867 1.0004008073638691885777230215098629 GT 1 -677715891456588097919925442276662.8205887195756473642983131374665118 1.2384629499979340908614613228034889 0.0109670954764619076902224299011890 1.0110276774138483212121380852595842 GT 1 -197586328.0563618505535352006764642703627112 1.9090186009166148560876617569732053 0.0225851921456744321828373163894018 1.0228441440108714807673156821180075 GT 1 -144943680602992979271281061710774930.3200604933820629025230619399494688 0.9333774230602039663706625299316429 0.0217092508307720964579092700647054 1.0219483635900106032521271701122879 GT 1 -1288215650084873361495732287623534317488.1819082707577776669824963100661119 0.9043298794982280873519702519168645 0.0104756033565602195633428517704198 1.0105308587169914399165017469565947 GT 1 -14007979239923031539039555231750.3168743252569783018890032503052105 0.7126725704338317803685110238485652 0.0195600469542042019063762180814560 1.0197538763778133306503380622342792 GT 1 -182580639550039627604662449.5941769402162221146876252779007640 0.8796799128191240367990758886650634 0.0600890642328578895084983711334960 1.0619701573909663218281934685637095 GT 1 -20.1260221881104022416934784125413445 0.0714454360671968945070205588000524 0.0116148681210736907909279694191016 1.0116828475962357940955940392230293 GT 1 -8086866295656183542709.6917300245962438883149377865458843 0.3444497564831343352199393614311936 0.0730200325324454678714222728451899 1.0758233237171457324591404639308576 GT 1 -267904290853.1334860349866744866519267838749141 0.0994137291733237371442806649748002 0.0306502712617520689511342774540239 1.0311298150357713855284112830824373 GT 1 -306329745527.4639272576078598534842140245498995 0.0251337135001734578191005624898007 0.0444459288762404482899164050764354 1.0454639275530993305276885375045941 GT 1 -405988.7042499976853171505810882578093334 3.3809636880156870744889488169405047 0.0420128198219812552868533991350983 1.0429208829609200907080624125274677 LT 1 -1043682.8221363977028397527411049398409975 1.1954006075790909332710443933784321 0.0201818214074582344334658192411709 1.0203882565791458146629153027216097 GT 1 -42933253.5617867937997170667851662730910636 1.0276472315041600652834092887920047 0.0801247748886990777745118298236553 1.0835172430159573506113529494629058 GT 1 -71026401634767196725019930.9004760385109862130199212725753471 2.0203012445120851942661737503859886 0.0072030346173952166049122787594923 1.0072291017215069936227117856976435 GT 1 -55.1040627209032112048625437190072233 0.8887937634492934111270454593880238 0.0969510813074650772030922327693946 1.1019785535080821038115817240545211 GT 1 -503633663541710037612.6347582173276331642076016539790945 0.5577319025498740638000035694005562 0.0848934665772629185578945862288392 1.0887147905138541977388288385987910 GT 1 -26661744953522.5842490378073693884331640342869491 0.4089773657903292816245111441238647 0.0638297251249456380709820226239037 1.0659579014479915562507017949348118 GT 1 -1510931.1646478615056691112935139290505785 0.6625686894536958490170585665097930 0.0828216599803392898526386480284243 1.0864533436068668570377190233037183 GT 1 -1252526850992918336523396.1052610528960895509154137158453817 0.5782409966489696300946068928330940 0.0814470973605869102410160664787217 1.0849557792088719722008248248289698 GT 1 -251513108500208980195603684906.3215413324953065637206616869095746 0.8237356960844766319394536169876877 0.0486651576629438290161308505025575 1.0498891834159954491300433717434087 GT 1 -10714376812386928700298162053081430.7954574481907523265097245567421578 1.1156059025373746904938228862755079 0.0543363353322454769005166089006699 1.0558683073253683010475458513878863 GT 1 -5504643907600.1770329212633357445168057218880500 0.1244211320795719724460736634966991 0.0243986859576394907934695189381359 1.0247012657343903217963059284180453 GT 1 -1336715995562799603.5692035232935440026636986428496497 0.6278648957605927083692905219231103 0.0342446039747109903047774099258100 1.0348446900578388246287145124306374 GT 1 -822016197432067137928129127456403460088.5123934704154368597846490349072641 0.0855672208530076245889742835057267 0.0569847502788453274749428364305615 1.0586728249829843335338998371208220 GT 1 -599637853412708469786487785694722655.6912588654290960516586055472425647 1.2149874704673810227479083001732829 0.0298469606414814683137373973595366 1.0303014473949307430928554555294179 GT 1 -6472747327188246626.8734901391697129295188233321271158 1.2886771077417827818791215343380794 0.0513344345585607247329109935463059 1.0526989498147848525252234595082839 GT 1 -3935594405762052.1827712024506360580278670691505607 0.5256249465648606564925140779485348 0.0058957642698018441307913181755655 1.0059132129037878977484750184621639 GT 1 -39570378357408598865391294284244263075692.0821618007867650122176484667523291 5.1825687191435003303005210227647810 0.0091040322437760271743810828075331 1.0091457271997338919879886107716306 LT 1 -11404054855049925178.5147572471013483063933360230636464 2.7597483132402795472232364099726026 0.0402198629149241632320965519163624 1.0410510446199391848138144949715119 GT 1 -15883513799625912628147709406067014374.0668197369030755784181370304654831 1.3531214872498538699144098429009882 0.0395219694207976604047345294849706 1.0403241699354764447290924764087862 GT 1 -384225958.6257179859218073476317518092125400 0.0111702067869175028865986853633464 0.0257939840705850145893205844987794 1.0261324823778736565145119350241769 GT 1 -5878797727726671676310851857.9457499206354467357026809339752015 0.2956837945587394606089145536550822 0.0664403096051281340993718182036023 1.0687503754684107359705895035862196 GT 1 -28386306.7405653600418818181552798570831814 0.1383463172515404277847276118657219 0.0442455527018178575700085494357697 1.0452542532140531882721751758288385 GT 1 -836033343182177277931543541179819963060.8679268335587657800554320423526235 0.3641711799980415648530095204280591 0.0211638366121381587969985184846913 1.0213910014391413452785522509171019 GT 1 -831289800751713469784.0477477699090982832486003330801625 0.1080035319939852363048394841711242 0.0254932342687383287936410049957133 1.0258238172866761780851132326156182 GT 1 -61167870307443047667083932588.2463444158045946648987690888242010 2.0287151725018280211552535838570614 0.0582925447057925989787510654659502 1.0600606096511079731439405403673761 GT 1 -330367839182737833.5072230667275691328740962875992883 0.5015815060509844905592909500513594 0.0962313801119417853303877949871672 1.1011819028023865913113538865836617 GT 1 -805109275484223492745635905978713505.1234240013408883020784080769375941 0.2816400180043762198631280079505265 0.0715085752258082331556599778339077 1.0741941338010157942889545408004614 GT 1 -8662935311805518435362553131083211.2569303390857358502371262201321594 0.4149154756992498227205571780000247 0.0230664088299008632631427751226786 1.0233366014398455644856579162314523 GT 1 -3036154614387990942742.4482049989388358015846885913723019 1.3282515230651419717466075672142548 0.0309808096360673739697049818556070 1.0314708629903292310648485243341201 GT 1 -11771223398880427967597862876320316.8363487988953174263595890856269772 0.3181111995251745915463640655633423 0.0250242265341454916773321322132216 1.0253426560203284753540292865243451 GT 1 -12063891969652372.0553331204732332201149059900425379 1.1245092017537772668672958339528075 0.0867885879545449872581347732716285 1.0907878676399560903203987445514696 GT 1 -3.0667366286234438216691237288054340 0.0944011426962799185083631843973503 0.0774068984213328275053435413029558 1.0805669850393438824596080268900820 GT 1 -9924.2648011453159244952344061201950162 0.4743665858314694292923971510355720 0.0481213137049695477596695721816420 1.0493176826730731598874101556788581 GT 1 -471519983.6939953993449635385876246141279940 0.9126456120060154499640415373752400 0.0685471503966047833196563560349101 1.0710097079313340531905283355080228 GT 1 -64.8001574877002518113368931611435521 0.6358093943952907414123422802757774 0.0774528546674367492695042165071026 1.0806167983217654821014290247538144 GT 1 -191452102793819.4444627740283106017137070208336746 1.1654834688008402651106443408256662 0.0272964483970575894338215567865711 1.0276759178304408956913613142756686 GT 1 -9388487960002.0634911357698924953766553595408916 0.4438530318737092560443938015736220 0.0762168262841155339248926026456088 1.0792778953581759916985459128043321 GT 1 -1202352253364387.6171275404791257097099157928637689 0.1699567817815799380853404320334150 0.0796224755774643633074089774731555 1.0829713404774760234099876650688333 GT 1 -18798309413354197750032052020931.5888028865957570184056352271420776 0.7895688964730719449523026477043497 0.0951348136987488953707860196274923 1.0999693117916422730230600396730004 GT 1 -4375526942678660267888210229122713.7658685073513369307967027087109859 1.9560602282259404582597947310768787 0.0484454760399120400187288241183893 1.0496582907241778138682634462172247 GT 1 -1997038490188623.1529338323563392185037071224562870 0.1090113289352429809345053543496365 0.0305960213176184011799227156699908 1.0310738513061442712862302478186477 GT 1 -17977832471095175621136398.0905318696195566700562493386448823 1.0111539952674379237425269185122431 0.0138400114143682587184417133561022 1.0139366773134332855144740684884177 GT 1 -7907376959.3841509351036020653991703377787608 0.4665321905254517658291898575949713 0.0819866010536930340249062731776107 1.0855432926660869658848913111973220 GT 1 -2405742437732518517831553893627305954609.5792162875245181817699058568815905 1.1978188902642289425011906108907116 0.0140437057928039309210348163130505 1.0141432517238139581865310154070473 GT 1 -11217843744725773488262.8290111754135830457894256368078953 2.5885285915407500935141338824425420 0.0531127134342696604289703339202319 1.0545752144575871549113836725128591 GT 1 -12240148018182113395508082474566706575.5418183353917737612642971935966952 5.1910923050754796898199406142047208 0.0806411665328859574619898626164305 1.0840787720452260232074707228647090 LT 1 -17544721267772532975188548249.4033893731172481206419434597576371 1.3697970273431325495323533887033511 0.0358102713659309869663255732673132 1.0364671898011569856341548060049324 GT 1 -505899729902873926796332617538046.4443655828599526109917717724642150 1.7583778416126645756729366676481465 0.0143553280589232432000932491214327 1.0144593626144705313038925563374702 GT 1 -10647681561184511759887163037497522317048.5023082760541710967955256560587669 1.0527700247777739792943591359134227 0.0295300109581348474241670876065013 1.0299748000435118050105061144701477 GT 1 -1813670915595395660774.4132918681588668968128113273639957 2.0094336745587334606410436115857087 0.0937814873218696864485517976009150 1.0984748180478898135707087732416190 GT 1 -45786430953603280904.8156020637326386402800265007252349 0.5885593218324090990650459643218565 0.0143398245897906071594208735262063 1.0144436334702402143345614812592377 GT 1 -3390107619243394403287240.0793548590265655982328271244288840 0.8917792178397820175077587287830593 0.0067367795142203320006182395788683 1.0067595740454997768593483049122096 GT 1 -13867210542385732080616519983354239092.6245221344691091221971161529635157 1.3276842743377000674760630723186941 0.0654875132581943278267990078117809 1.0677302902262918020932957352534953 GT 1 -106947032735063054559633940315987521.3616106019664457808435687184784041 1.1343093718787610703966653875877849 0.0143389561560296515284900887971783 1.0144427524025050592833792412997529 GT 1 -1181600911430.8881889531062985467619468622985962 0.6690273306478780473988430012707517 0.0785192467824254735910576372907556 1.0817733884522112261345621345919720 GT 1 -255432.0308218059452660400841477258357494 2.1595916244390373723737772235893077 0.0457245864488206460131986757752318 1.0468029557479124450120749816060411 GT 1 -16306767388112528959046750020575556439649.0498730430507027350510993769539624 0.8304064847041694388254780088697781 0.0890627545445037568821104273592246 1.0932812694346233874918517682017302 GT 1 -17680153845610641548184029393758816323.9858253612124377898421203259647408 0.2730361680957748577433297527292922 0.0070469071182479697617572851610370 1.0070718538354307143699709184443782 GT 1 -2.9166516810209699072185251890081824 0.9552179046504625379726924902058048 0.0771786803740598150650936638376884 1.0803196497570201720308772659509400 GT 1 -365894447453478436286575265.8225623737647839698493710984974277 3.8790526121316915809799205127858702 0.0132798224588698774593000403966441 1.0133687878083619516488265203965791 GT 1 -866832704362645673743.7055830461206487215462417497130583 0.4402464789022429612501708207531479 0.0459571329569080776603366550736667 1.0470466745359189163348127306346842 GT 1 -2518959205329840903405.5275712189829574719726881984428609 3.9656122818656687334210049910512594 0.0318291216135021047884415583923800 1.0323466800258843670123807039274866 LT 1 -21423.0288979890263689173405347050676596 0.8303362711967619824420246155047792 0.0078647446578783262784753654669716 1.0078958348805406841268353701035529 GT 1 -63112709.0370509272353183781215728499969348 0.4547170845441630626260322849277018 0.0780961032856404616190259549992527 1.0813142943567572935062683932435549 GT 1 -1819970801207794990918715464273446.9475548430752724471985167502477915 0.6804953618743815698734813461300219 0.0980752745485117951771081625867707 1.1032242153381692738451862769978328 GT 1 -1722393600595227831777554230.9677549586915612627138719737593717 0.0240253707393671856726998551921565 0.0276475512465113715977176003987269 1.0280369386475308803642975101348098 GT 1 -28227663320982840491493029232305259159369.1687378973127145104790602099011295 0.4276230052551314009036313804398560 0.0324918358601732512357806534634996 1.0330314157263853432459772953078905 GT 1 -59095832124750649573365413766.5788641460279821193086354659516827 2.6651961387261676384280609345614416 0.0011551156057087975779251051951849 1.0011557832659394304434542742562015 GT 1 -33667956507065222868518451705.2937424983695958838443436706966237 1.1967295942003028537828299858625473 0.0410381272262973559981403723457253 1.0419039621635942925572680361725103 GT 1 -2034962881592156059130668460006.5657364230434838097888531585667037 0.2618341920726303645699641876337492 0.0342396989060686355458203122669541 1.0348396110738578183961087871722913 GT 1 -1736634977505027915025789897648358009911546.8606221737346722542593590071860657 0.0023180992695192072607400304338821 0.0694280199346407249254295076936815 1.0719558495613619783105993458760421 GT 1 -1120.5522151799199584530566222797453442 0.0476860801745068257328805401488112 0.0794135295272342828941502291660706 1.0827443441302289753825944255162602 GT 1 -2741209944554499882867.2939876439020974826767518687329395 1.7041831449760581919635254657649697 0.0589069143931123949447157322371331 1.0607132222840222735547089659626533 GT 1 -10528031967774098039052481122954944.1401142147246172313176598191238170 1.6438765817344717996200971605472401 0.0351634210845472930355816390897830 1.0357965402583314852079933980213092 GT 1 -151759237821115889276740287248459.5594971784085067444311780948105212 0.4144290212610274486032415639243079 0.0141517242893869462671075622798955 1.0142528148096684280542134225799556 GT 1 -40584277135079317422949248376972960199188.0568349287716829167102696231516205 0.7146074747287934440547367675067824 0.0264375648017207051690221146829630 1.0267933214567533848869737696503402 GT 1 -1418261711760238359980.0503311497367025508972545854240325 3.3843367425424908588264898182332414 0.0803055877697314025983267161388858 1.0837138247358816994430248392251675 LT 1 -126.7661029073432972526442006799964300 0.7473853962516149019436116634581987 0.0494529276002503950888291434210917 1.0507175944506175956954591852220245 GT 1 -671932726388187972873236542164119111633.6109240061376576337278405504397207 0.7465952053280452903968955804530757 0.0022637383623323643655775095711697 1.0022663044914469725765728244105372 GT 1 -63795021.6304587172866700716566357044088186 0.5202754981028212507400152800963224 0.0759561409394567916444498868589224 1.0789957419512129007005860906149748 GT 1 -83013212.5740165745642644969381595606307903 2.4572501489534865304923107729947963 0.0252386760387333308573232020926372 1.0255626338888683925561555339944262 GT 1 -21474584499088682106295289244048.6136887953217625733397173175275357 1.1406557688306976456033576165322385 0.0478915372782273280536451589453856 1.0490763192500307645343277326203086 GT 1 -9328190783265595.9111906211705463718576694380265991 1.4470656678917830131748530773876242 0.0833455367315522481460327163844161 1.0870246898763028466846742146649556 GT 1 -359.6084705049077705547091898342960406 0.4207948906777445246206813569916652 0.0391555221441318756823722254240912 1.0399427167650687022540844254706918 GT 1 -28883693578167422798738738799145773761.1603188546155350777001088742751106 0.9700762133768633188296879711802895 0.0827748369586941267843563247614977 1.0864022937461604193827362639071831 GT 1 -54.1030007633107763580050857364384759 2.9287038020845957605351321700156676 0.0376665706792153995918780845980268 1.0383942882428227544093296677596573 GT 1 -307958538295505224413.0486962728113510653998555209389563 1.6147463859788048800822602933315130 0.0026087413157287819026119068024574 1.0026121500109148597307731347154355 GT 1 -218233.3723679048466895722295295834658044 0.7988426614127027566923856792473173 0.0495985156897346924240205635446462 1.0508707686007070863179171536779387 GT 1 -1325010125.1848719942997279962184523118889565 1.1353894514839773971347144151443332 0.0834333066577615436353103794923776 1.0871204447457683842093760707553117 GT 1 -8190007876.8930241987532279708528651843350475 0.4149858704698789186147325638051878 0.0812310993188531632631654429538939 1.0847206564967390656590862976976503 GT 1 -42760819715051564138.8761093706002866614190430789164140 0.5632266095234368702943338826384613 0.0243541546321036541631438241185101 1.0246556217724464878733759763852902 GT 1 -118059932885865039.1965294319102268169482658753738869 0.9387962422775049514831231624168494 0.0911129666951393363580192938057131 1.0955344683197668301215081081271253 GT 1 -234435850395424739.4837628230892114872863595423363028 0.2047114874245861707319739257060650 0.0001176060332224185383357757345674 1.0001176129493542015588195888813848 GT 1 -2076782370382386760186.6905707044085295880268142204396530 0.8332164627499112205601417057437602 0.0477930692428270835098611639435304 1.0489729035702277316964879908902341 GT 1 -5136298933242552.2150891838650259673106488525510941 0.2675714049958800083132877618575545 0.0247417450732821848253018407431225 1.0250529662100531147527910205967300 GT 1 -294141464755329024987532820447712684.1692763590765578562613946413056587 0.2501728936476362633168848940945310 0.0224139722865208206872303458858505 1.0226689831040561604853158772937766 GT 1 -1761882507277.4563793500290817766586301861872967 0.6265470759427809317324219184535182 0.0262163981617748058732986696848154 1.0265661747281386702911624110834136 GT 1 -16972.5359076468496615620715468948217626 0.0008741703725222075971658898931844 0.0323433666739639271508671545635412 1.0328779722711353768648669056803096 GT 1 -413911654237243.8529690655959415222568647717463960 0.3686141998412373451992078616694804 0.0350489192856988785452815241561238 1.0356778724884227991166266575724684 GT 1 -80325087713905.1367047335727027925479662653956315 0.3468912421863869790225616956691570 0.0277307637161493266476823414137312 1.0281225208153417332363682674536585 GT 1 -54366720784928038767518614280.8319399826265955749664934517292330 0.2723618273144746633881038574632789 0.0088044476024628356083285911619482 1.0088434357661160426608224444770299 GT 1 -380593208806441882.3124549804919830270428949854554725 1.4663014006918057055779113885704761 0.0079842848943241017628114914769269 1.0080163299823457964612347564201890 GT 1 -31345546874768397447036010777157.6368567700288239413459772336819355 4.3719810654339402503562025136229924 0.0784121502187720884932385871960692 1.0816571729585506331507263089585004 LT 1 -2975284945224645.5885593389447228202947204949579887 0.1380203892749784194247192698513885 0.0820792146564660138284011020506832 1.0856441825603370274233862584201285 GT 1 -1296646613660520.7434904439092515143315454500117191 0.7698460245863033460031163147481305 0.0714419494923583228445329975586053 1.0741223794031224530711107725150593 GT 1 -28085571777852119020253001493680518.9304912237426690685618943089989345 0.0380071318600319553357609667446066 0.0133020804069501468832283040661280 1.0133913455705650413051643273018383 GT 1 -62749670796708392215944847147.8073791712862776127267815051187708 0.1230344509519034148296695187226401 0.0066473361633503224535919847857265 1.0066695281019066582436799294844819 GT 1 -1208209482232493654319857.3962731986026908779865428380266780 1.3892334435162035387392804962466996 0.0540839927565037204938233146905077 1.0556015011411130873294004705360227 GT 1 -69686430775157225047250398.4953766881327874343100878697673252 0.0710729606714560932878737375627473 0.0544700790826958020363653262431443 1.0560097457816878431788140252284050 GT 1 -2570954940767273396888117042149930.4807059812832000410452281331291649 0.4800197474169143695856821862154065 0.0002575684356477946376698855567038 1.0002576016120942415647252554091953 GT 1 -13.5756777307568984181881648020874954 2.8299816158425018114883788796649266 0.0989426985120800923853276754092602 1.1041864257401953587528946562645156 LT 1 -29941545483141030392811.8777147286715684932556922699293195 2.1589660845130599919108587411866409 0.0148629527521611797658141390655026 1.0149745132265565601953330603906338 GT 1 -1348501565873801455769754753259472374.9591519852781346958832240356257935 1.0924133095171578013337054521119880 0.0330518140859188454437811282953573 1.0336103672663064608412624125135776 GT 1 -27303.5465130343203760628715345437274956 0.8221720067461344591646526411489195 0.0890415183233989439323154798725248 1.0932579572101206127931835548233810 GT 1 -7.9785922153180123177894944822623466 0.1535811384479471912568862418638189 0.0528089171165465203999438727987779 1.0542544290822527406413003291709069 GT 1 -100.7391040773304963604613585092777813 0.9629695908928278611126040217008904 0.0489209532762016553595887341993147 1.0501581003076037397887355416789169 GT 1 -5492866927096797041276.8322905596956991364182900004276114 1.1229882942269380045622154746389613 0.0306254528004862176583516849565068 1.0311042121570379438513389848830731 GT 1 -371.2594999150463282095041280482224708 1.8595927064176657102166652662981463 0.0898805720100547482230917280289019 1.0941794485330071944665421267324339 GT 1 -15819936864368773189054341815.2735256786854556315141650193946961 1.8680447048924883857725639571134245 0.0094487113918945209323968753849128 1.0094936336610217514827686818102816 GT 1 -422182723909743442958600038639176385091.5353826349909255097627599122880891 0.8326577427583165307152392507716135 0.0944093322690693826967741041012644 1.0991678766537514089581111150586707 GT 1 -280573181210859851645986710459233700130643.0010206061326985120944285655519311 1.9766044646583166812294872137661109 0.0094925158187731022441372137260747 1.0095378569092033727210517110062887 GT 1 -1969054234314166581978502746087981411900290.3883732046763278395152902638213984 0.8082132523939677773001452547644365 0.0965841827869371410229408945686004 1.1015723473770900523889028605056764 GT 1 -3715083223029926207365832.5205953137090994054172847166777348 1.0803987440277959284192304035465382 0.0910805631837466344551003038444263 1.0954988170973416232519086301745467 GT 1 -676647197.5821646831601081138549536832167988 0.2494619258035956666634074975244654 0.0876315205111692643176039744029867 1.0917113359805498442093294577011671 GT 1 -6011.0282289627859269781102838443894029 0.0279594384761550750376837140319892 0.0532355458266768189134488974891955 1.0547049451677667284066272449652199 GT 1 -219642960234686145338.9500254635344508809532430974939487 2.8076224322129219382534393542597749 0.0347184382248660806798330801960269 1.0353354463406235312935727483978855 GT 1 -3098396796953409404416456765461347.8177180707304912102074305001766815 4.2915305349295700269214907311132814 0.0686865463226937589204534523486566 1.0711593734326947710153298404278038 LT 1 -5622783356807544427.7480204535337135327240348413968441 4.3707630038319595491748642832116341 0.0715201309498585527281116267085380 1.0742065795766601450838811800281011 LT 1 -8848219448293174.4504523433834124399980663475334859 0.2041850112881430992263888667615979 0.0265262789748174880138378398060847 1.0268844488586504791997745824583235 GT 1 -1852710.4131519667308289023375830209964979 0.4846185552827479459536262967052361 0.0216816006439417811264532404558046 1.0219201002172741564781236992211499 GT 1 -35302075913262894745615620016284289.4113579510636421736754312882426727 1.0087739770456907532302721734241823 0.0065658585829557563989451733029072 1.0065875086519840094957617799620089 GT 1 -14399224954183018724.3906472622927763100434809941684212 3.9594045261350665719863234514301539 0.0491767668288142540725942443579376 1.0504271084021409561313933448385536 LT 1 -481956459469042558053813691.7065902754523837663571543362303986 0.7035189430779445870682700016758465 0.0891578104010250014047965019941038 1.0933856243908584327062679090359970 GT 1 -5545620.5616646412415156722375613503096729 2.4319553915642799177147596871788317 0.0641166200476566409013363260532731 1.0662644043350399080418198133921723 GT 1 -120575.0020546261885818559013462467723195 0.0428243199147038018256479184901646 0.0159622751154180319467584928856481 1.0160910443674379685644772260415920 GT 1 -2081.0396444711907677281245497367744086 0.0248133505134935841325817444807195 0.0080359410694094385469761796377796 1.0080684032703631623263624841989910 GT 1 -155932.8992385893160689606102346804226993 0.0389529854921441061475338530461982 0.0716441125422651395702134387472754 1.0743401202973795752822674820530373 GT 1 -319802121632121160235670411880.5156563139250565668889199435574160 0.2172378453560400381431039549209341 0.0297966997273788052039418792957426 1.0302496415352674003047243145593350 GT 1 -94799029.7788739463266929394580650628307549 0.1199275445314752025045904258420372 0.0346912311817435583872604835092898 1.0353072611345824744140697314131851 GT 1 -908265722.9738756885510371918265295372475158 0.5055116900546746238473727306810544 0.0452950475762707988136676876456350 1.0463529365780405019252904770553093 GT 1 -30389286837323305318292289.2347451999343777047885039146135898 0.6789143557811609896319627984516711 0.0438628298364235241621403399910767 1.0448538927887958078620560641137055 GT 1 -35623039902207523333.0303787554884065195841503291833289 0.3458131225653074060388578497158206 0.0824350615830570792908837839379907 1.0860319239918751484203862070216244 GT 1 -330822235327645114705694496785947.0188532667774253512456902241957016 0.2210449258689599468640320283801515 0.0915621147448752647647668312781269 1.0960287641435832913235900619213268 GT 1 -93126240888776922495156658289191488.0296945265381651476910749885470464 1.1807698442650023173189711367659781 0.0505375580574637276840197948891410 1.0518593051282160378820954395609976 GT 1 -8360144997021712702.6790264851434052249095017840237122 0.3564339412996366675983707948428140 0.0143157716955015461722988803644143 1.0144192309414431858233070264756730 GT 1 -5456672225687314726.0802137775456132158334459669291953 0.7636559083285542717395972824610164 0.0375257511638800844688293785488228 1.0382479676340839127652642566338492 GT 1 -62900791023174621185704112566067359.6019625090330201600239029743941935 0.4350994880932485471568570905849274 0.0853858921538053485198978637822791 1.0892530427227701281855986384074623 GT 1 -7292436656400602.8491102697765794283776900751643519 0.5635526979251253716541932902253155 0.0230074273640065077930372664486445 1.0232762291832016604469211048073584 GT 1 -2067139945868268.6264228173602216718959716323664146 1.6750148844901788970799735964620951 0.0211423217349117610340339551291643 1.0213690216210824621109086865510178 GT 1 -257121092823025172690614038486242159.3870918247327762528984349545528323 0.5873054084803991364191629173569004 0.0969170102031576381386219130851441 1.1019408252511908592436283981810299 GT 1 -1776077892388360811077379415.2139938881637665844986569195372975 0.5386959615505600528538247636535953 0.0077867332373095409481640264023695 1.0078172081476457710663037575237953 GT 1 -18354991.8584831390246483747553191124699793 0.0218791938709143225733171620428626 0.0196452881356519790808892335840792 1.0198408219239502404662508904194811 GT 1 -5222503767811980967628452270.9418217954980282313571046974652238 0.0481895045485464652200740670271640 0.0016241698959334828439024060943600 1.0016254902897485081132970277317033 GT 1 -185036684477532284747950568975381.1514884814346663801560785725929166 1.2978288772553331210799585220212931 0.0247190986326219827558499331709145 1.0250297455117265592455045140045623 GT 1 -8292030555842.9181536890295971577347997171595195 1.3558501424068332877475814104127279 0.0023004380784439827167937104942042 1.0023030881511191696242180868551939 GT 1 -235603798703263373.2652193555961213549487109740650598 0.3096357746824878190707968050321739 0.0688847378041801110200679918040805 1.0713722046466309921624858217870253 GT 1 -126101234022949421028.7625813857228767972244654231688586 1.6366929176031609833374633553693119 0.0844583831020971391894515214054190 1.0882394577927286072611700274566558 GT 1 -8259590367246172909643094.7088318003255763780864328146765303 3.3621945431305016892864255684873595 0.0052580374880207527425403372011236 1.0052719096152769750073636489268911 GT 1 -445559644.9411740155906995554009781403635779 0.9132558968320610646091317994172292 0.0779698618975506849041032033545328 1.0811773682130847431373714284111565 GT 1 -203461719063578220619571435372311660912881.0701164559130660745633700751264010 1.2662527080807814181209199942679547 0.0112154664564009329035698787555356 1.0112788340438427934374680347101995 GT 1 -284217259471026519225687374294179820582.6099754416383382488511926222627817 2.3934979224327979258425845500467433 0.0857714678275027018492189085930833 1.0936954798131608470816801924929887 GT 2 -80331864725702607978582293507003951714819.2202687081499034998362799317808134 0.6712185167514832458823986991722499 0.0748238373685588266309704969866187 1.0777711135142214263356382022927705 GT 1 -608479518.0540112218076327349662409985673733 1.5895281105844797396810383276169610 0.0161382071894103921023042063697365 1.0162698462553180246018652080783346 GT 1 -5550407.2678272811418715877011929739234498 0.3295858380342316304461735178140123 0.0221843180712696177230302565172361 1.0224340909944965941842291893084274 GT 1 -4409655.3877259841694020320616845126457799 0.1485192112222292697601775238474041 0.0906460966812964963969855581601750 1.0950209279910904806352086693194811 GT 1 -1047911638464665119690032651118.5145867808809915167944714721600834 1.6905074000183688933730200138109220 0.0438977409096269845877484101735144 1.0448904060754410471377262730368779 GT 1 -908920503928103589043087764013545362243.1253338523584360229895523669197146 0.3786646950230064760689631946496010 0.0289753790008690459831432119323797 1.0294034546794968917064992323643512 GT 1 -1184615076838398823177.5415740964807640989159157364405319 0.2839869959057677236504651167694419 0.0535230911437563304054568799800820 1.0550087049787507495612073396952796 GT 1 -15628248.7351110999770615377238399718833386 0.9834279660591343451251626100539769 0.0671206882301030882993335021935524 1.0694794415180625516475007842968117 GT 1 -870800731508694739912877182683642136335017.2428746367965112778521330274304365 0.2897110788952853824415234294411168 0.0388686565551672591639912886945805 1.0396442056309372964179922166915973 GT 1 -128398569125464424158206484913944148508935.4908092107396004298161153855675698 0.0021635949577677758280061348140860 0.0543892204091408793280486297215991 1.0559242326587536600086064931421465 GT 1 -86213.4731619935222542131283230500862937 0.1863472549885489008041975089840444 0.0318887008128280284206599173965596 1.0324082198159364393624160516517929 GT 1 -24037047640393649815.1717484337548858197881385405035608 4.5350128862348262712310948637104906 0.0752559604988274945236458153057240 1.0782382938148960364322785237789706 LT 1 -10393.2127587210944309233156740441732068 0.3664784254387803528474374086330699 0.0608805107883149134553123601403998 1.0628125563130265486972637042133606 GT 1 -4161275820.9581098328857086319858650539954252 0.6478486985067239216119665890991529 0.0962898653043754749360934670387340 1.1012466174689416311752068819285511 GT 1 -110953.3002935132332692046327741542652972 3.2686900720614932447327661967948526 0.0452738546934791148845494153025660 1.0463307384659245462835135807725445 LT 1 -6191279044637359085931419758090.4824715237531735287458079172828336 0.4605620569087239495052704243216332 0.0998806696842167792601580930873902 1.1052279352072435254671659682115586 GT 1 -2179677.6906707773190966075810617776724061 0.3411461730928292070785555136725214 0.0450243295038155896053335816146101 1.0460694147461493201426642104158768 GT 1 -2821217509616050422125059943120.8874940535719416912455272151413536 0.6193267166154119960847371658116237 0.0895252842892551864968363197637351 1.0937891498752431459153090279750795 GT 1 -17621610280.2757253347988079181905474030414833 2.9252196964857583601792260198918994 0.0302435061686206236473277602218165 1.0307102762870805203222322827556267 GT 1 -9332.1220883594773770692034757983407320 3.5959906821036519560312855237932871 0.0568947939645230244654420953521830 1.0585774373166070826985100967794525 LT 1 -2215756777.3302791739962432605643977208232123 1.2408916112325847903926490956319463 0.0781289415807327267054985350944420 1.0813499150760910772161596877868041 GT 1 -2370601.4795807954232854852193925001918890 1.3407610084994630976978941603655710 0.0921690612973908646685968024243224 1.0966971085726704185839175457924922 GT 1 -5765870627110409696155753895894681.4611964731950771545036183484336661 2.8217645222714450905774720893792647 0.0140936253265181822102015871361353 1.0141938835801929344981947984381619 GT 1 -91084222072903.0813234226600455871386548509503883 0.1239496511778949288892403790064811 0.0440567460695296499827153697410480 1.0450567255057960163994565167258717 GT 1 -581024.0536953192864683415572897131578754 0.4125791611114627854644014990866577 0.0826949824504729706642715457503950 1.0863152365703053212078826931287995 GT 1 -763444854998877416866756668172125.8640144730843386358341139737261148 2.4490142864767174318005955725417972 0.0813183993204345700813142085631226 1.0884125292081030276243808341032533 GT 2 -644205652344762.7188435719562790179263896099278859 0.8427480371341043933732200436051717 0.0235166062418341149085375206094085 1.0237975346900194991581364156740019 GT 1 -279148856363493708986835680078.0278687290990390700629914347791479 0.1829719536098606084131102826481281 0.0678874350332452030220169050620094 1.0703016937282796507870221007545282 GT 1 -2.0446510618825536856748974476893898 2.4647481365574964521042679253513001 0.0712846764828133667620743177306706 1.0739530203716299048457695436010823 GT 1 -382459273109.4342246402259501755541718836223417 0.2545474352744886721325710171401091 0.0197686599053540609572936682970495 1.0199666738545417569649628863497946 GT 1 -1.9914099504599276956039638256611569 0.5328057175589609083808662914896414 0.0864801144595946944406024714653567 1.0904501348838686589832910345745637 GT 1 -4467987142467152672012.2460427764374654063153686887018594 1.9173949828815747112670597875567477 0.0029325887208630986647768589509390 1.0029368971845289982188591413240415 GT 1 -123132373810464903679660703172047.6134420546925024366431423663507488 0.6340095404944356532383511149081101 0.0979142486180152332038803263844801 1.1030456953872132730612459326802530 GT 1 -6803458390011207.2178563875933753056442386711717294 0.4522589661768703183211433380928252 0.0279688470906113383088988730797933 1.0283674247169973615592726733099610 GT 1 -27656029478147434051200528593.1429683275567796803663095141860040 0.6986628734384650983223489231226227 0.0695012911718517700615093139445729 1.0720345905115968841273282164950858 GT 1 -13472614505816.8734630488242627297748203235436650 1.0578277189717219767670213934257028 0.0110840997859821224849061181675852 1.0111459861480040718797715833117928 GT 1 -6.6221582833973363512731343530939493 0.3561099696988286650038117628107931 0.0751854026233492306982748531655539 1.0781619968280304586351247482728641 GT 1 -3967705.2663403296418000218530957383051693 3.2592706381441623610358613487009032 0.0300589923812994667419183471358181 1.0305200262220680541424122765823629 GT 1 -5463560703467181981126199035179112647309365.7274452265976489083433021924158263 0.1485917769256000749281026371845117 0.0496245482775998969982229481352611 1.0508981601240082559133637850797724 GT 1 -368547117455394992375050761997715863001.2187935379252794137457129497340646 1.9064974118713006399978174054314542 0.0961576513881219627119619935316422 1.1011003269266638482329095238078007 GT 1 -2618.5641080958390576699624274148221330 0.4480914310166008739465973817842268 0.0497205418518293278354726453536177 1.0509991711742652308870683616895464 GT 1 -15149.5357883133255672708610941323838116 0.3326680298049604030219650745521110 0.0145458525971441427016530620918990 1.0146526807139432604150955598033429 GT 1 -780174240520608798542.7230636612901833438984371716528754 1.2616657718443645161267074836074246 0.0545279511753732361417762955907071 1.0560709536425166710941773431821195 GT 1 -279181091669.5445139931552970495238829947169117 0.8546012676616060853689120543256357 0.0423976743710749167193560882812966 1.0433226961396883270533546055891358 GT 1 -1523854911958481310.8339756934523184113322703894213895 0.0832549841061030685266865490586592 0.0963413978639950202953813061364269 1.1013036424230457373578003172839017 GT 1 -10654.6735163599537853129689262208397487 0.3418701140770365608440730494749285 0.0047433066864758239759530943565430 1.0047545918658228588649497236505454 GT 1 -621879.6797963781279124895178776304213401 0.9681045197059780227181674470091148 0.0094112369695876601546854588870544 1.0094558024917610657513862964707868 GT 1 -905163608.6561737564981960232799884138782509 0.4207292277768717416536115656634352 0.0016836835652924499766755011257464 1.0016851025534414935137599676906426 GT 1 -14187374608.7410312194626900374637659822344448 0.9123853271053120044255318380666723 0.0449671013408884513986744451744125 1.0460094902370466487152185667189262 GT 1 -1733747112161756461959709195277776140281646.7970250680902097350389506106500397 2.2849812002577243098555053206058706 0.0016663846942066147162328284613276 1.0016677746575381906331041396246110 GT 1 -27741023280992863871443185.7801415588451356657241249481189598 0.1172954988493222686529732083496343 0.0221196995017341109408283162304614 1.0223680085664099638210777816834541 GT 1 -11256271258154755772582445131651353113.2770564217733081799766487677947573 1.1083757025237660983868276918839241 0.0023284797106154796647142318311193 1.0023311948350571486041798855544423 GT 1 -16620137322961680.6158650260383044840003956670633038 0.1680163009839459043435538202928069 0.0371378478959322323738488650316486 1.0378450216626610100045246752936047 GT 1 -21744953829418435755.5968298359607100723755622974849665 1.3595725680951278839191210514443509 0.0543585473986340129232413813434997 1.0558917959377415700787902868120457 GT 1 -1346453.9510668355422941832933514996043740 2.3825336621383823958302829539342732 0.0171160895728753111965640557356014 1.0172642630347093637109046464572779 GT 1 -14368542245961968695793430.4031729128070537554647077829128658 0.3676568506542382504655944348794678 0.0451257011287163710545840706797822 1.0461755713831856351385400756890219 GT 1 -196225966260471.5959630605601692370111890117190171 0.8788725187625902585251621866876768 0.0074760646686336262524550165504693 1.0075041505086944854799601487073575 GT 1 -382302105705096345903386379.6942147458177083742505143093771158 0.8686225498235254039849794017389355 0.0701078427039530987988489207419846 1.0726866594554278213847983181228205 GT 1 -78122.0902356892372002938093809652964057 0.4576724249222495844285553243975179 0.0206925835394534011739818169416025 1.0209096750577333250493012792721730 GT 1 -6200826965068761602.2343332005749772268700711034263843 1.2924840569118672012084385118724170 0.0533254027720164257198568385208119 1.0547998591765810735097457803849635 GT 1 -1622471324.3994058796915031785967446455758279 1.3487591745548629728892601249575741 0.0019871685232345580559276086319786 1.0019891455621783135815079269261871 GT 1 -9015837587076.2506738236262075248731327262829031 0.6882486907884784135818138266316116 0.0820085391161484763978473656725141 1.0855671902743520287964809153991197 GT 1 -107994362320.2679900847351713640002933000579594 0.2000863439870099995763819616367962 0.0318717819394414334746224484354853 1.0323907438030399823215875994351389 GT 1 -613195957152933014885807045148.0620222872594684241392331105215752 0.1818389095369271510152126655325347 0.0493562768073763214967204471596825 1.0506159204963975296291649110064702 GT 1 -698365016088929104047.4123970244880986776267818447837776 2.4812696510241233180418004506546781 0.0497598740162755448313664521245110 1.0510405621336431088081923542815340 GT 1 -3899619087572185644840194534.6692658998394187832027806450498940 1.1573943587841715820711091674943420 0.0873020373239187751610151876101029 1.0913502716562952783823890071554926 GT 1 -3442284381037864596858833546885327050955.5239768243414610561641621818865758 0.5143092901636329247576868449722662 0.0962288467432708200838311369773512 1.1011790996898812888040276048051426 GT 1 -291877804687890052250591877640.6648203669125884479768061666637570 0.3616041067508086348394533612690657 0.0913295205714475871384336009447602 1.0957727594063661039222455055249131 GT 1 -734914544.2006666090147476861802475575854995 0.1611406902920351037322503578680309 0.0418650295461005694476213920917187 1.0427666231960872327340637789620050 GT 1 -2761075059759.6227182804242842981328055158370754 0.1011535098343623192749282509164779 0.0491376232632802415261371166054529 1.0503859411709902336229813473899958 GT 1 -327681931728752160012376908790074657904.3738816783239014789677235505295326 1.0725160041533013363646329051534970 0.0624733376105071001384373870352171 1.0645100816598511920005066476583491 GT 1 -1359910340583570.6564016352389883047920945781569484 0.0276396551744469086325889025256729 0.0749517665775543803716248158553548 1.0779093985886937566498231043342531 GT 1 -1628668422768760.9309545744030510599784796642089233 2.1214640698818071631277178178227131 0.0768194492440580546330789913956128 1.0799304506556541272580791685511376 GT 1 -9637.1541799368732142653891770135365478 0.3174480152489080768778813556285702 0.0435469149582702543055824641165493 1.0445235398758636849596463989060778 GT 1 -19102088376710625622863468421689.4040420893955203171990817003655000 0.4479913613370822399220006069467845 0.0712540950389263569237523234739535 1.0739200921538874250930776377718556 GT 1 -653536672304472509883412.8643483888771728609566268981875415 1.2709080712742355850447668049491983 0.0525797598838185360897039430777686 1.0540125248657376079229336832599734 GT 1 -720429278787.0049426472988315808313459358443649 0.6632928049255419098148837482575105 0.0043054803711591435091674425943978 1.0043147756417705084495024384947640 GT 1 -106467756140772124.0779823775057363094078012750309226 1.1010183224607557242362735818786697 0.0394992315780523186909399263868793 1.0403004967509954638997137029106405 GT 1 -8204634013861919512924.8071794791350391834914320500967072 1.0853392606521794033884520441568828 0.0606814660137526565890839695404292 1.0626006304758691830779239147860334 GT 1 -35558964002809265763345014.4275478624521402473648531945983156 1.3066570602914754565743883759880448 0.0513756150636168316184736650260131 1.0527423596320922946880964608356819 GT 1 -288358041812296735876849783536.9516870463855228666322531943580597 0.4440858738270741892704441505242193 0.0956841655017938225660860923361976 1.1005766051620821490727162591165467 GT 1 -13757857952392395498946761839.3537367755711609570923186009779538 0.0693360875064193487352213880047635 0.0511813677975216684934270023862345 1.0525376132813252980611581961170952 GT 1 -3624823505399536185123.9926694642260179228487714982943765 0.6984236388099561663549767152140701 0.0679417786652835200509403700828872 1.0703599970044097625191436622352167 GT 1 -513836873.4786169985452820427788588401818449 0.1203593818107553458358591890614755 0.0299796389640363065671302244738003 1.0304382169462859818292938669865804 GT 1 -14778731898558900422168.9356403972943935775778839084067529 0.0538815338514361185682654461155257 0.0685588240106442383551308904074311 1.0710222407044056651701680229002790 GT 1 -3979131763670160978939175601908280712.0138605373672979592284126114275462 0.1379915502668382531297221016968517 0.0014174274217727125307721982040611 1.0014184329222823546951752625478768 GT 1 -189139431204772259077338056.7086396862345447293888960053108125 0.1355123313191290897966001546661813 0.0101947817360708095223780746008829 1.0102471044395243357863861133107209 GT 1 -202817863740247085420157387.7445020482247323878487511325075963 0.8274871368675644322131552780748698 0.0232543524972190066562200659241465 1.0235290011584662952587991862850216 GT 1 -21857273852055249942856186859969600748245.5698276586253293727692896785152387 1.6821004501889721847125547937327034 0.0071736007931638945236824377682791 1.0071994547856798017690663586768690 GT 1 -5034696455565355349511059.3045169930004106486954716720334476 0.8271726727996537017505972299752616 0.0292152283458977430550637681300803 1.0296504916411636109843116290210693 GT 1 -2313066335.1420398124740860879788457706303968 0.2723560749135796478312495896740867 0.0604131679797099158259051984744348 1.0623150407482326577963190331326007 GT 1 -53936129828834765.9989547961684552718935084091836450 1.6154437272735066976104734185270833 0.0842500802747865989149408380542349 1.0880119649833717679892295444357871 GT 1 -55093320707627.1459691545896881322792936079137523 0.3829388138564673275318081582446497 0.0030972352818112972507885348240930 1.0031020416418577478131647600221392 GT 1 -4682143367641657559952269706115168.9950387911372503059289841985268306 1.2186912405633450005417761814654101 0.0676310316649393202572394937524790 1.0700266538683051074245066958763136 GT 1 -8991608967559873778740.4696020888180938754487533831439663 4.6432079753725504365316302463868138 0.0051966813775664873875437201004711 1.0052102310889770035700606572475294 GT 1 -29378752343431999288180935572830407588.2312978332160453379046693923731404 0.2694249399797807835035840593753381 0.0891495510650694302989394426348210 1.0933765566307095254840848460062640 GT 1 -1278345494.0656802554224494574447626533522073 0.0922988244030492625175192847172052 0.0385528453237478491356683741955256 1.0393156767988833239256866563495792 GT 1 -49017700054724778112123934514.9064665021795782620727461603039749 2.4966674102165763912691330130839282 0.0104204481447079410616091761533651 1.0104751211576698124441152097247617 GT 1 -2599490880716068520.6442601291580950746305142808524077 1.3623451593277360193028730533441848 0.0301032351793449458156630786732792 1.0305656411685153696362661795450019 GT 1 -545003113273.4213432750914246307080355698018554 0.0594053216527146730716816131541909 0.0515352219852623922205362653833742 1.0529106247038023205315316730597553 GT 1 -45246450.2495818108042132249548728941564073 0.1646299719561468486177234571983735 0.0553313426601229875489608046838297 1.0569210401260364175180766544340279 GT 1 -3286471084795155358676325061537403165909629.8347585948294804644739337445625218 0.8027461360646008496920373069715215 0.0766797477393827862503147288085900 1.0797791357959870251210654795085099 GT 1 -64656568365318118962254037530.5162798301184491559642633864783762 1.0649802426221293654907182652218586 0.0526648801302273568098979480678198 1.0541023731366687051398036894588958 GT 1 -253208076243965324048042917.3853750704054269632557646135249840 0.4626787732101446520790875753569552 0.0971039440327155641681798841212295 1.1021478418615595954538232629610401 GT 1 -76084837863938329639.6697952649260048282279567730689215 0.1682946501413721769639398955238829 0.0269620934790024180397274986164820 1.0273322391572541910843240937750630 GT 1 -21660946865017289948194201393800.5594247190336863588723184230822544 2.6715698997770418141728894014963478 0.0363922354865406746190262053734324 1.0370709504558489644671008870253853 GT 1 -30880693111266081.7199428047423708178707060783899733 1.1399852288833740049348364186622041 0.0236652873664429436732390286425141 1.0239498080885602803075360822095093 GT 1 -9585.2454318651944824586686990733762265 1.1321518293648700266706803417779536 0.0613502598646665520223739773549332 1.0633128830611799675776314712019299 GT 1 -5923628942606706902885404911371407.4702734321093521212478059866396298 2.0862928967144180417704458964503762 0.0799682847438018605607343249463154 1.0833471364286716769299801601595074 GT 1 -800665984257878043903401182798490668.2122270146655724667583943344372259 0.7070096326197762903410151490728142 0.0856535929955027757862873013011900 1.0895457782317496418639642670787240 GT 1 -42602181177602078075056.5433901695287019874456897608638456 1.6183849423431456220583406983969931 0.0428651855491420212019545868148785 1.0438110255062331965440584124451607 GT 1 -10499637067437840132674892356.1593668396595366926989145278404132 0.8477369015468731640976218503880108 0.0047192014919977174495932029539223 1.0047303720813894329208530934633345 GT 1 -2775004020170735066358656603104814906775723.1957163361056658494949786654074898 0.0969760680720070321272971926765274 0.0012192791849549871602786623104337 1.0012200231105839241225227340434744 GT 1 -11669871848331676112067806036548631501939.8677118114212849701169205976561931 0.2617348530849116903247386000437626 0.0048617883699161290136124076304514 1.0048736453092234344304193661061782 GT 1 -7497793280103326127126914.2932699688943043378356582414556751 0.2454856118713003118923689210364202 0.0204668020214132737007011029595842 1.0206791493913001226046802429375517 GT 1 -35.1861353537234492896838970715583305 5.2536563235880952202306645052467693 0.0329965341911684027917154083145429 1.0335531994516754690434531671485966 LT 1 -6359.9720843525916784435944012007089067 1.7264905063577506489016505678861141 0.0682154716266740635915695714623748 1.0706536837581883495626522386320217 GT 1 -170588678566422934474426293249815.2254503305055766851587043633625280 1.2621498840100141120759823991406795 0.0888810217317508822632748425784660 1.0930817884186269627434438322292035 GT 1 -33831326953931.7410342117680859654964766058340997 0.0521550696312728172157994244545284 0.0493360264382584665196374090503674 1.0505946189793909039532785127522551 GT 1 -118003389316061.4857578507883089502793653415041862 0.5448834485606735361056677965868972 0.0329120491127914024172051321766473 1.0334658353511976746229975991889195 GT 1 -1879945099866379679607957305238480249418.3197087315092541793949512112145129 0.1102672431440668314473775266226829 0.0313706244891775293455075138117917 1.0318732216690230439855377790613916 GT 1 -3321600959958140149284342514.3847231536971593949156944035337904 2.5787005952188194308501149604059088 0.0628122757867733601359238667543407 1.0648716707983155216635507691820594 GT 1 -22523402204798165621105748.6063593194677466818414933725263067 0.6392000846012867158493505465053699 0.0517938629309627210024759552445190 1.0531833561990201936376138711078137 GT 1 -306178810159517415871809850876638891697045.5956888492961352764290336450738972 0.1125483641631582424768226169109552 0.0394430397590536724494201241236579 1.0402419958343636842694820325667620 GT 1 -509088636042037709548.4380120959435448055298113283757432 2.3699619195373309263874463378382615 0.0041596569501994899954604675545045 1.0041683323894298235859118894780638 GT 1 -121672924848492033161104424531605807601.2900465281914081490174300122371505 1.8613563040968608639937570066297468 0.0814982834019928190028883716366053 1.0850115054141607433490926935840320 GT 1 -26211541631949478714507268.7509532039551294079259139173450881 0.3217472827683571420913409454956979 0.0799929308561962660288681968413373 1.0833739251166111172460349838847018 GT 1 -11915803684495.0518493532251101272769671009001310 0.1207577299379170362960973600588409 0.0643268644181940540181799758174014 1.0664890776159980339358707893312868 GT 1 -9760504.1020846699230302109325375844353977 0.5023569006157743416917515558962580 0.0028195175503521416308780276435548 1.0028234998772156083449932092922754 GT 1 -6153183614294644322251.0102255670663284612972838377638193 1.8988079749397265738812852833647285 0.0374570930098878091020794140514854 1.0381766351227724281770568238861985 GT 1 -4534960432555228907369571709238651.1881363754621668228360987937302415 0.8595689415352449706796908767968077 0.0376060509231280513959170341351930 1.0383314016680417835698149924520927 GT 1 -834297184685165642.2304757304471989377969063723204783 0.3886142873785955188818642859000559 0.0930981308095729267006772974618226 1.0977210274540744657169830188607346 GT 1 -16476129120997479.1685145113394996546545994406158894 2.6406890920436822642703330930488589 0.0690423911069858522088472646997871 1.0741006312763375558642221820323693 GT 2 -372121211582559140687904399700479.4995672098825651567835570032806572 3.3759405659154347728048298824029691 0.0543541983352253765293708054864641 1.0558871968865939097113657943888488 LT 1 -8688179435255119770460973786830909267417.1724817033891320347788746310382089 0.3745479900034940750966142116303006 0.0155441609041867737504955933704820 1.0156662380839228080667717837389131 GT 1 -679304362582666156763.4979840380423072428543330773537331 0.6636230887969301455671628766434234 0.0872958475272426381052604787779886 1.0913434898117638272069482940117862 GT 1 -8305178552241515259750554.4961712661822864510754148815866499 0.1638989512154632202139009439033822 0.0464009087346528371969755846904910 1.0475119356231132188048838357424447 GT 1 -342874702003297244036715378436585601600.8079742550627042716097239651192378 3.4343900934290805759262092767232524 0.0516470815374659118430504561058834 1.0530285691457388702672852205336988 LT 1 -381633305288849.5387732247366630456063046852966241 0.0799659436741517341850173023970884 0.0304322726379683354651095169944135 1.0309049487073813357013581325762615 GT 1 -386703473475777423950177061671055.3817829957858232062151058174133716 0.0014636685222884922070888251752530 0.0179582131030425083028147419882395 1.0181214186847923750316548131594831 GT 1 -143.9132321480846391041612644828127133 0.2511483210261372130939562245408405 0.0747709179926724205371798597541433 1.0777139159073143357624305009673861 GT 1 -447724469789304585466.4197010389881905629941832609492664 7.6552981479488575391936935410642033 0.0260590182992457925078072124483254 1.0264045709118685430141987787458913 LT 1 -1164743126430867819885.7679681992678732781137919394123227 0.3274764145775300876669816494929305 0.0822974315828839301756758255002198 1.0858819404064646831286794725390758 GT 1 -203939148708307440162.7580430283292659444437483093622834 0.8414374317623972833345459591863770 0.0250626619453520001068000592487777 1.0253820787115083045318568760636739 GT 1 -2.4094419596317497669641008789827555 1.3674122723298800266063541678427383 0.0616515567136596705994947398504810 1.0636339242366505734901726060343810 GT 1 -2778500464352207115.2761193666876093282252804003981928 1.8988364999087723872385655301223031 0.0775559169230565131231128226109793 1.0807285194553296869529838881486279 GT 1 -12047230649755279745435069.1104461213785493360814555905842866 0.0935106239363606691425802030584585 0.0144100522989426690243170046020797 1.0145148854218402793657263211560533 GT 1 -411241780822221003100.4571776465463056873180728546227860 2.6364541992725572179132652708259055 0.0805938763250128945299224504177862 1.0875576316435911102780614105092218 LT 2 -6691234369359271033.6418670125905831935475080121693507 0.7855914762369653661357175753133680 0.0548257507580770005663951467314125 1.0563859777540822383054912045916028 GT 1 -5237055001232059654370550499952904698044811.7552973937502730582434451296260902 1.9645440095817004999964256228882125 0.0013435990534300214327474727403231 1.0013445024919683264872975847119101 GT 1 -44002324750725515266641.5001901057112062746115594756220561 0.4060495234317367706774479792031963 0.0519235971238905117505470227456903 1.0533201862234467808500211948579018 GT 1 -6690.0414487012954195735734713909854886 0.4741308008683827686113236279188185 0.0324984804337448613407543870658475 1.0330382834683171665683420463670788 GT 1 -100524994295681.4319932344032890887378927015265843 0.0887740039799209241762349214730537 0.0921784652972707843267986727067501 1.0967074673830900867512727590475462 GT 1 -1257655.7705407048961919277408218490017663 0.4881600254161734236100755411803373 0.0312650989508685590185496624792560 1.0317642844498432791847995304871274 GT 1 -28304.9098307359231048963686154018498867 1.5960199307065013633026160162898093 0.0926474336610964927911563712153290 1.0972241873759448996751363615784169 GT 1 -727329978648182099506573.6680268349626699005058889259987773 0.8165340710994986552811797830543282 0.0191459856198809957989005114343028 1.0193316435587135727114029079305780 GT 1 -2094169926988383451774179.6776418379476456109562271819999308 0.6353016918079550756580271382282439 0.0457786807528458451777818905415332 1.0468596436144516446409304068974254 GT 1 -2150004921818451880269880866730941282181136.0524111071129910535688294483528518 1.3297260455313560091204932796134493 0.0811453101695721893174292128626338 1.0846272868319325573464809784103155 GT 1 -239837.0663558661186183070209932055476953 1.2027812098405768115606597889995007 0.0739143468167896711796123003741266 1.0767885505756132918929914074304795 GT 1 -2114224216396307995371.8775743313566120626652326625739168 1.4670161131122002597530988650445919 0.0452134284662609323831864186541679 1.0462674487829541786724296868765559 GT 1 -80506581379183446892897391843479272.9697483868921321182502617966408177 0.9627286616818496749054006015069514 0.0724486070977878660308487665094544 1.0752070758984758519349046534243083 GT 1 -15056847.9915203410014401974622280863666921 0.0398934113649203724624116639403920 0.0601825509791335192502972403390374 1.0620696257472557358686763311869565 GT 1 -12133618.7423589718033657387637520428106785 0.3499730294888384356347559562447863 0.0349583531109464598418277032454910 1.0355840211764218891967295395482566 GT 1 -553849647883054359801948668960.1128341034208453135550868551286481 0.1398072311053451690080379061126471 0.0249068376815269290579336677788834 1.0252222614531352466371753086223138 GT 1 -969206428367728.9020032475273099307517279267044354 0.3272084593424110489574023724385480 0.0518968778248707251614320557119446 1.0532920039773371114224907069880521 GT 1 -1010252704923207671.0763462735301002387894023855121239 0.3134148316265008149733579717441594 0.0224680574340950373588086888570370 1.0227243098397418689031276759837044 GT 1 -1266235729.4645618030138594225810110416388778 0.7110020139655510858375371815071091 0.0812464856715668248742292902361958 1.0847374033430233228165720832675912 GT 1 -8495198132479.1516991223514970042112123592391397 1.2444495404251034661718263739053954 0.0336375769995766466819888083632127 1.0342163360422301025468118799994810 GT 1 -14477318921838756898085188560459.7758815189320230361386814352881820 0.5195082254866519751802496905224349 0.0465417023723389175620144151461982 1.0476595909991515947369166089063513 GT 1 -40823739.4474569635252314317083717616309528 0.4788828948332519679310616300079128 0.0695900083670226646900994161042190 1.0721299387629282080936443495543947 GT 1 -2833547917773.8839332559821992019509106768697495 2.8346222588564733545361980603547138 0.0805481557188916013562698756698911 1.0839776079447569311832932053628095 LT 1 -48738098.1918039564847750388781414368249232 1.8579707277747229826756895082500818 0.0242408496623468674877445466802573 1.0245394952173403294229310308277289 GT 1 -1480476236792365982652068984209584459344961.4697161125567122742141584902696668 1.5102892502511987242790074706056942 0.0030964957486245664855881304633780 1.0031012998113216115179272472580358 GT 1 -13166933359427473389922532880356067712701.0060123849793082078024899702314319 0.6819656815612529949413952645504516 0.0001834377110087259807666597433860 1.0001834545377634417462389640615262 GT 1 -1264.1126975323856736955301446163653353 0.7917745469984543230025511860336672 0.0487048988601424911356961463621704 1.0499309584309852979646796570111207 GT 1 -606371.8257182056203650729862310920377677 0.3611199773876020525578060083138924 0.0502848259420257240037992585513639 1.0515931561226668923112332798917278 GT 1 -1232599473494153077132808.9717991295725016493677715091527469 0.0960465367323620424530587641705282 0.0180988285862667396806350042824085 1.0182646158004412582772134742836325 GT 1 -4105359964102728181434.5472463085063366074025348779094336 0.1891660641140961257511481824157630 0.0102340087839659926313664895934596 1.0102867363029424975064441173570498 GT 1 -9031378190603603271686213829051497435771558.6704677996163402647614172956800243 0.5232148677703976912252108208486691 0.0401168764051153389020831691064316 1.0409437481872605195411153890927374 GT 1 -837928201454138.9040521105241120931414804788040921 3.8339803737743977714582371987343195 0.0353774852015283150428462775470465 1.0360184305472282274745342845470983 LT 1 -8437026540222336707.8615843453573455550849969073493013 0.1771461846977813283318653740904237 0.0777749435089175435534547302640394 1.0809659892348063446065742968673386 GT 1 -11711338271391624921.0178772270097184241260221172380338 1.9392632182586002538445092947773586 0.0173146011916095593218462225400947 1.0174662519632874035748295228774167 GT 1 -1827.5764012622396435333200145276933884 0.2463072967318289330545142878879116 0.0789789144047986350612240832768782 1.0822723487487241175213508209196827 GT 1 -4458229915.8213945111640613877795387716834003 0.1607270403470771333986039163312474 0.0044186021642174288852729165066978 1.0044283930387247253889861658204685 GT 1 -10669794279530243318143522.2783470140746428383769632657190912 0.2756381246513784176765358295113849 0.0031703454174845687690319629354571 1.0031753816096470911663774635847833 GT 1 -65854713029814624988347220540465574.9498747975093066930302712385864195 0.4334474926647091982325434601357135 0.0086039013769064571255869199073503 1.0086411286232032422592363899921087 GT 1 -314324647616751785479681424574276876531.4756434151667977781294530726216571 0.2289796972701220344753960598583214 0.0792014783538544776508359196968120 1.0825140270860206746269547753811870 GT 1 -141316028930547120.3768994917871336270733452731525800 2.3759906453774568221885537310159308 0.0401613713131965484452094678017285 1.0409901037677359637113597370007586 GT 1 -221126875.2433521462918924361455210965501316 0.8538592538985832567526275021596123 0.0562890467062494256390170725974364 1.0579353532682067405490935700961441 GT 1 -125521437.7788022471396435781587175597353750 0.3194767488378364355250658411183038 0.0942244801893142071630777711051266 1.0989637742677531728107105265502552 GT 1 -928737125.5272073413980228307567727182898856 0.2516989931766341202429551639720901 0.0655082640151948608666787678154533 1.0677524953735558497597186514973900 GT 1 -1511779283223158284665592093.3110494179867843011161649294850814 1.4126319850446895609784615951475926 0.0098736570048804531064921512922460 1.0099227248091476801367288102012835 GT 1 -527409846870204.9486518210151897264578823509351640 2.2569112285897903834302154243967667 0.0953778016495275885894636724762121 1.1002378828292746021643419405545169 GT 1 -3456190.4259907598547248320924198880721605 0.4222441200841354728307766270386130 0.0586857815842101426725413709502760 1.0604782754588087230764076786357444 GT 1 -195822.3206498007640101714765951884864578 0.5369437108229718740270917208368072 0.0072370871359656048380303721519345 1.0072634018893808500267350223532084 GT 1 -3232.2011885659648098250286117817447722 0.5139453819096704889077796822191908 0.0631814419548392506509532448046768 1.0652656568551779592159629881920648 GT 1 -4770700071078637072215850906401549138931299.8916675362189733104254109369774691 0.9252009015349593026005890038052356 0.0631339851471412864385897040981816 1.0652150007219156662964545731477456 GT 1 -184154626.5949862493862006919756964611419003 4.2001864616064477722330798785476803 0.0556521614398364098369288627103871 1.0572607076551387274124915826550795 LT 1 -1013475046511162326754230.0147812331284754324054567607346646 0.4775080117119201709732436333194912 0.0933911936334279230256964568159807 1.0980442269040209576248750414776054 GT 1 -9037748827981701.8618913496455969882454301506533598 2.1523420955402878180486531119164125 0.0680367297234453699669778786314434 1.0704618746476357522000684761120210 GT 1 -956192231555265354337218912805239.9226444858822256474992373382245276 0.5237586738635195853923550578464102 0.0947227990389212210082018300658506 1.0995140827777898586513290207599762 GT 1 -2654472436108529523276255690076.9410265154350176403880999169774858 2.6241549171418033599910711719207307 0.0181248525359919812681243576159169 1.0182911197861310716194989381278665 GT 1 -36155772777692196771402266539.2805093173568427746494856112480776 0.3944279167992100939149761735073743 0.0268824158877266392352612249854617 1.0272503571167864279464945735403869 GT 1 -50979674.8001401657164430212894551145563752 0.0236562119485240420571522664096698 0.0833848217718844762107878071798151 1.0870675477728708294671671734492390 GT 1 -12385003860900097057577140.6777488773531520565594272393642995 0.1134317145876603026801135691402157 0.0987408198041594679829478756626841 1.1039624043645751252642544142398352 GT 1 -1279413748118589.0452872069048342293919121818099687 4.4763990125764114526047063505798291 0.0806130077070405082927067272637662 1.0840481437490763793715132954130507 LT 1 -10036735.6360505579195878043410024886927599 1.0206731311987827802815290328992421 0.0039948121629643088014891010195565 1.0040028127393813202769695678296387 GT 1 -2894503790619913893222054658235955415.9002156702746762021898184940107297 0.4555541176228501345190235837533183 0.0533532733455003079604037810700040 1.0548293001099655276459748089366276 GT 1 -1404748600436086104391.9417542515894829178465075425872019 0.1982365316876696098590319340084563 0.0527845733951041431539978757542444 1.0542287284511349853682231966266724 GT 1 -570215374142792286951796051550.7512959716577706851279479544628373 0.7495034735443102237246243454956269 0.0565769338936155926529138378873784 1.0582404584559039482462013435115936 GT 1 -84.3007977989110229930561253710675334 0.5062108308149482623628074012908584 0.0790038451047105069190253347358701 1.0822994176592265573487427164623122 GT 1 -2624555447651980809309604746017460984977.9110724602562277010120944124158119 0.5182532465328219481623092950316245 0.0310227490316960104085090961344231 1.0315141441798512850890651101529954 GT 1 -1705774156.5668611516372886988681205571619613 1.6240413813377382434291911070215723 0.0029475795261287434263990110268892 1.0029519321939875310149393470741634 GT 1 -22271.5941553976406932455270067473302590 0.7185918207564053150671602044269206 0.0376050759908463289953339177470185 1.0383303886402802926493635888956806 GT 1 -1809591877217468823.3175388887612314267665205802926815 0.7548698815950207739235070838858683 0.0864541605901472227073010081420172 1.0904217244451036013586170494271038 GT 1 -39553577.8806581058685550053804783474534705 0.6303663420556874551125965002501317 0.0779012472581416770604643788520504 1.0811029540658075902633194684057037 GT 1 -1987009082155888895777491503671114489032.6470284829519614190254064251846117 0.2425889370315252377934960712107910 0.0591097851058110335637420424938097 1.0609288147533395222805795361533322 GT 1 -1151767456085818461715626905029763.3400225519439662166388690236840865 1.5865264423386579828762858520719725 0.0509116625388993620414904726094098 1.0522533999191860380054343000490262 GT 1 -53712692316530740034.3736749394089469685561242361924399 0.9257135433053521816312680727435539 0.0694886392698881179546813963705416 1.0720209936996603961635786720475853 GT 1 -5903459356308345777757784064597.7858064475992604314039977496317334 0.2212094793547344367212298987647962 0.0074155799951024243503264303396203 1.0074432120985695896609676817064130 GT 1 -56890044977233484761544.0892177872916808038957221627180532 0.6551350277288927881490826598560631 0.0813176001062573716314693949620340 1.0848148095090567750011774948839327 GT 1 -87.9294347823783381443940135007365793 2.2534458437107496623421558853794585 0.0866776555020325180737953923822762 1.0906663999120792229114561974893212 GT 1 -40026436736661660634259206165561.3608786292638466674802533063134377 0.2318644870065038634921352463127477 0.0900414432759358580667947983420727 1.0943562225697804711766000916031493 GT 1 -2.4740589132175924953219075328721621 0.0295295053934427940455360359385326 0.0214049325102413184802513979433957 1.0216373405140668681790525712267235 GT 1 -6102.8744960468552467462303150520173957 0.4970798423332146018900355825386964 0.0632376318896243595141194603518469 1.0653256381818637014396274510191761 GT 1 -26.3303018002808652278732653861615532 0.0514666732827421821006545535206559 0.0050500075027007782804229564922460 1.0050628018832441219998476470139767 GT 1 -780226466071551784232553372603496158965272.5362546330998378949249070099865401 0.5911379918658638939104024787795052 0.0111906004316576720701353660471861 1.0112536862879478892479050947257649 GT 1 -641812928528289892685382356827898245.9892756509883426350297056690218380 0.3418004174740373346630661094538393 0.0391352232359176883760374497438628 1.0399215908760549068717978333772445 GT 1 -379322300858114402479010184.1571950583849007847250377890037427 0.1710269802352279262632700878819656 0.0540260449891377763617285530568281 1.0555402420102543182124402058462437 GT 1 -9559612631741637474186104323.1228145135784506566684436860819149 0.1799350696044057721891270594592476 0.0321862161274318882169980279907740 1.0327155822439038127128128262066042 GT 1 -631262605115908453424888563025144040484824.7673958625926894585984164378821391 5.6289484371543928698320814186554504 0.0249383983552400093309246011379753 1.0252546288060233794313324280764895 LT 1 -108231686529321.5153482514507222924710805181767515 0.0754610505490370310017290797481900 0.0043368373460099351197226285486551 1.0043462687031450342264252685507882 GT 1 -8478267085015328.3320847787655139097539322095633695 0.9325120477267391196652183013421248 0.0068507526877979746286639141371103 1.0068743268227304342434348763690052 GT 1 -6568.2482524055098594390325080835573194 0.2574779245883283679863419655934605 0.0456997801180453597182118115131673 1.0467769611471828300538858704777544 GT 1 -102687176644137864.3926890420740858211536230423555934 1.2203555875574576718020190428120391 0.0960676139651869097504185914999929 1.1010007155964644594058261585765506 GT 1 -9113469742924828055009593426.4475944520684162486332324314876533 1.0252637984602510787067726596763317 0.0218955232539391702520420084559115 1.0221387877141982927291295814272977 GT 1 -3485783940723227209904755488686.0014961062070041594520688691243919 0.1496680615398161280354414289555854 0.0042086503163926686956952135979867 1.0042175316127418613238137305481573 GT 1 -30082802992281111676302661775.4067466510437226313439831039551449 0.0820204163497809499628497359463942 0.0894434901290897926802320001831836 1.0936993170826239264738220748401312 GT 1 -352523134636812.8114605582265531308454672811924179 0.8818848138261768368176633654139344 0.0346868967390484160838019388593954 1.0353027709309254718625767849851021 GT 1 -46096409650444101574697484075105720690.6707907703392326142475497287872586 0.0585583445451423389387322468372270 0.0306250723532640050923141234032205 1.0311038196904225832031194029011454 GT 1 -352192881279913708766108773819828955669.7848567172586203391402423937185642 0.8835070570852121565059403213750395 0.0452347514911441823533679617880581 1.0462897817981259382912921789064949 GT 1 -684820059229199362.4145582375518062169354666150182452 0.6052266305475947760595893724146483 0.0289212880270754728430827338726153 1.0293477511822738240960383826847537 GT 1 -1249502463092246.4756102806644505393770611268147164 1.0132273001177999170599842536515183 0.0375676162654706841968731150129465 1.0382914659533154189299677957141680 GT 1 -2155336290924.9066422918221023375698492360391605 0.4406581592613357190957673840591232 0.0542113941258507972069083262429215 1.0557361959223767734444395753017728 GT 1 -1270.6263473207852520192318881547349508 0.2905205001739981474062740597941674 0.0146921201177343858274121259969874 1.0148011182409848240637481943736780 GT 1 -193864224044489052100114163256992.9518724995562410722165089213840445 0.3992618970810952102602862163761408 0.0373032068523824655937366147549865 1.0380167733062702458188688918640046 GT 1 -214411749334889137547888133161.9933754279134359177249945556733399 0.8319660958703115674590404652927481 0.0463774860381656518333738193800670 1.0474873735099071103772190844689475 GT 1 -13061983328533256030859248313577557163622889.9720877982852200149128466671330336 0.5833065305277319900868696590281652 0.0756766031591771197014089703029026 1.0786932719939915998470211759834862 GT 1 -436415958997318012385804954.7812878810354925502535093094359946 0.3798557959655152895532713738562058 0.0367690635282389034752765673952443 1.0374620865133816614979451593409480 GT 1 -164453329821498881587852318329249819176.9320061249149526439818446982405699 0.4139290878393379749736337403952818 0.0230499884254661552857262324017658 1.0233197934739953688005609652851210 GT 1 -492829588787819141279575968425849.7187308596712772627465251547895039 2.6861140353951121833087371967690510 0.0397326656075382442454950103963738 1.0405435599612738457931345278974808 GT 1 -66127086409875844869075082.9426328106159797217695151081661191 0.1093028415567118083963978075652767 0.0515290035561036967182864553742696 1.0529040684152421636086780016408612 GT 1 -32091897824524943301339.8379948314315534450540953119404558 0.6659634061030542792104519254852194 0.0598999299103041568567831306548117 1.0617689518420598638257336840423646 GT 1 -22603377705193586032035134993269238175537.9781358082152193960956440426345948 0.5673494616113614269500187073282868 0.0113737386525851300107546768588064 1.0114389142830435776713263665671764 GT 1 -25228171099109621194501995584430.6154297491535388092111922084115326 0.8018490472720840439001500899067449 0.0798143103210321810673336849801969 1.0831797926977450277661488925845112 GT 1 -1099942384881909.5475555650431445336756017866276492 0.2002859319280626823493179172798430 0.0885338777537877974959471321840695 1.0927008525906505397691937257411793 GT 1 -3638469800126777120033413098005247816195.0278094860383501190665585742740904 1.0603491489688376472865981551533148 0.0767476537120152034560201521806761 1.0798526839172105301877579102954624 GT 1 -171431763792033993026170736515.3372575619359756505925387673712136 1.2335807917587843394787946840542207 0.0765377970748639788484856882729310 1.0796254082528216015073173916119206 GT 1 -70112047364036589977545458812992.6617193898637320743370477997429147 0.9608244528628895460113064681453333 0.0070830036790142329924421301096111 1.0071082072313215101948062251379252 GT 1 -9476544313591163858899201407.5917002018370702842205946175954185 1.8175161657801431134990884109193889 0.0430759936463103918618562900429688 1.0440312988810421631540135540061621 GT 1 -66545825877.2098222597234729231798408810616142 0.1359051759546943532454070118723395 0.0453188588473137929905238267875056 1.0463778778627019276627328331055543 GT 1 -908164.0405401358375458572816067128938235 0.1185224197772950294763856677353679 0.0530822378545777514882206420233504 1.0545430299624457146149715967432495 GT 1 -133185.1370976650257590013212335731872865 1.6701161791500750126561439157121851 0.0335049715122002153491411275402621 1.0340791241775037323585215997980781 GT 1 -809801484832263876932761431221844588.6918391850551006971358926706827165 1.6504446837874046894396322863749351 0.0373586833110293774973051493497411 1.0380744010635756609703435434244818 GT 1 -31069243285679408618513166373146.8855349950069760803798153088974542 2.4877363945738318360489893699999461 0.0196818889623137454595061525163688 1.0198781568900276956462396844669511 GT 1 -156839348480771804144816815019126377322651.6318961545839165155859981862198108 0.0577954739256812704079254971231913 0.0399997350152408413029299396671315 1.0408217184945024343567096811625570 GT 1 -3465109261543292073.3502920809030179011348901087591015 0.6421723053054186648731355046006298 0.0527365223762710250299618291565673 1.0541780010255234691612935359223022 GT 1 -4209870604096812286123295632.5945160975093359664415781428769313 1.5424787879903827236284046512106162 0.0115873466211178185032642308351134 1.0116550030689271385279499557498552 GT 1 -456965704270406.7292912861330845973392146585331499 1.8039994071378971175799040278563683 0.0939873296752719920690703003398371 1.0987019881310648035351087682113212 GT 1 -56029136704817330103.3346541572430816565666954562582634 0.0972124991124662207592309668685832 0.0851000652135172183540036780499133 1.0889405805760436387239775429016465 GT 1 -1183652108961998756.3533942992782414919520946273259474 2.2475740335353216688296686831391757 0.0462148917940021617507042432022190 1.0473168863600523510777539861304084 GT 1 -299607776127786206803204743588681674251.5502565958562139986823574513472299 1.7750329949321804855299447779061472 0.0064872750248956621427811972707383 1.0065084088436999985921745723187247 GT 1 -1428439.4217085314452825276764430264262854 2.8432962991428317670890645230603660 0.0701858996949277039233837188223340 1.0727706049610165703672084166788315 LT 1 -80385526589230220168703749115549288120.4510567986598967198285700741079500 0.4580349910374510327359693863789232 0.0720166634512257270706287319453915 1.0747415026623529928375449046283393 GT 1 -16739200459313287702214301890308807223438.9723809978066701499371791916964395 4.1692462566799696774061391099243147 0.0386868499267375599668773805556512 1.0394550645352284759951116179900166 LT 1 -8675633531692045979837705217056601760250170.6783205627323537840202646931958692 0.3548793913593854410617061630446758 0.0605068402775336617401853637056360 1.0624147409188618625836620207547078 GT 1 -16684182.6547096898405827679424044430210900 0.5924227293851998230542841770553990 0.0869443696190501519750266317118524 1.0909584688294470021695533511889864 GT 1 -169123776772366242234707853173398121.8102178181464873908108190615354941 1.6024795919569166616000769974044757 0.0322310636467999925340536267863843 1.0327619223139070195333656487663180 GT 1 -46528131288.2958275185041615190212632277275080 0.7459238992393802907300097336035014 0.0266746296355711801682358473660278 1.0270368535538211020066955923394848 GT 1 -950421800767493115060587.8873690534578290975230428996908311 0.7913500337360749916854254728332587 0.0080275577861793064779922691303087 1.0080599521095267684567173915161564 GT 1 -1232506429.6513082844428401416044892994554530 0.4432112372609490863764105847048780 0.0115120068407445562829205438748048 1.0115787829710262471938857748152943 GT 1 -27263896605440277582705.2998746424349161708227802997926122 1.5387877086600374140160216881170739 0.0749416782821757784173478073920754 1.0778984929515555356308156127484847 GT 1 -23206880440981356486838672346825113312223138.5507748453738036170805645691822305 0.0944404173283431951030844748062503 0.0302704170800726518699711876146894 1.0307380268461346298966273154931310 GT 1 -6015846593827599.8471049109481084897962707378495852 1.3610091368523212273584325455200155 0.0033640894032322706419861117706065 1.0033697606746702686068960609873403 GT 1 -19319039722326317395852312240093036007804058.1862190340134430443103103925549819 1.0491495801421892985760161502445335 0.0554122148658625699176818700196917 1.0570066528612594612874342350806161 GT 1 -17948938906545361969837730515334235.8507928286380177852256872416935532 0.2806395703733500236520168247156145 0.0165257712488634248054732063460257 1.0166638451047458941831969123259641 GT 1 -5.8568446802918880056013262933571929 0.2819737411368045678600673712998270 0.0705528865241869201124845093347920 1.0731653712599153484569599719153563 GT 1 -70222312818.5461107555784596627046863724017823 0.1358645866098281093670329338190694 0.0157298892891485575653118985593871 1.0158549168439411967311155790161132 GT 1 -677780836984262669961718218471009301.5734409280814737950070724374346301 0.7078150176457225438697351813777636 0.0345770554429030265018158308956879 1.0351889891466282077254802836636625 GT 1 -1180154527150785915363550618815987460414.4621371397188340629476602329037988 0.5447688182334262015016823012736299 0.0919364950607388281537785718978812 1.0964409634660670029134608938939758 GT 1 -10879285527004981950908708253169.2104061391560986010088428020320995 0.0545054662375393461661436092492367 0.0399772185002030277641666994185232 1.0407982640728692439600926303509790 GT 1 -222580300950.4436723958044514597415762787531965 0.0040263999541633029789338409902491 0.0207850456860680450499178440584871 1.0210040953697635356588772602474696 GT 1 -8174266273660675781130162512.4521938354429160345085542084381233 0.6232960620875857156905443627032809 0.0038159853106177169079180537754220 1.0038232847582035144075077137150153 GT 1 -1.2418380485648330929742720168619955 0.1410861856130778501190950159061299 0.0796798885183932458148149288054346 1.0830337221960457872769858118349641 GT 1 -130004531626.9663809350552170775392676284806694 0.7654418102677613347830538219768381 0.0958279587685470704814573523359562 1.1007356256000801056905066389369965 GT 1 -1.9583502913175035698192305620282546 0.6347793841617128247361105040740392 0.0493814682315750929369925828296248 1.0506424201801045116817793001167822 GT 1 -672.7166325520683706501645746828747658 0.5641528136657640446908808713709004 0.0389458613347101251596296406303263 1.0397245358387168590858066973012953 GT 1 -4158.1941273922407806499916652962243802 0.8089210024801479522303863008123011 0.0608793471390185330924702891336335 1.0628113172283426313287064886094544 GT 1 -30430.2023010480902662011502873912531072 0.1561414205824830123800044572877710 0.0931222337274948657673938262949641 1.0977476050133899401727115321120723 GT 1 -5761041073697612020779727323606.9931661907788065278541316372176096 0.8340741644186563242744144713286933 0.0062851865972920554330280203242672 1.0063050215371158596938710400599988 GT 1 -1393232302385581306696943.2928070596931892875982375719514917 0.6484682084458148067040273657420266 0.0586201226599659736768295193062520 1.0604085254931411150429165452358248 GT 1 -2851348048322075225928498935314494957090264.7468788326581990803820772115581080 0.5458802514238599274510545019870177 0.0344913734696584804553761231309248 1.0351002423732223240774443822458935 GT 1 -34581819279022991987746672.3629559970155434897259100194127918 1.8263824132050413703869423563473153 0.0632869995675392410864305356313145 1.0653783398920171746793058971273677 GT 1 -11192240.0939854164203616227664929393079186 1.2382375149567021256642219304098113 0.0420624059606903791752938993824953 1.0429726450544923204987316532486567 GT 1 -147335393.4391769554283746674933490259733731 3.3824056888996141116184747529319334 0.0276309562798688203406660625408653 1.0280198719706754239817661853037325 GT 1 -94726107450569964353.6492172181859400016694386785350831 0.6264861068350975652533180639188834 0.0621365706003878548590280381017300 1.0641509382312775995998364475149192 GT 1 -1243185.9558817881818867147081904083262015 0.4031834341781519028693902710184352 0.0876471285731398905401578314609441 1.0917284433180215895388974126210176 GT 1 -309806710435877817770.9487236478656130377833411477504464 0.1597842381346507814050883260938150 0.0535191964802259483369482782781620 1.0550045900811965944509509477549350 GT 1 -9347.4890787680930274317157732914846899 0.9481366535388091485706540172988181 0.0565485391439475834896589168211203 1.0582103613304571772401317160783543 GT 1 -19417900505901517871120279.5330029358970787618590136877026365 2.8950324596116302565839345878329520 0.0928740035553253207128838378982296 1.0974739229198675624954578977064226 LT 1 -48544391656905955.4008974143774429114340185054460658 3.1553443024819129693167066590240201 0.0889243989685119092721639367509145 1.0931293983031716641405505913240265 LT 1 -250.7257306564654531633638599470403998 1.5965233974163285946986427069364662 0.0611390097981110457124583416096809 1.0630878509864934716885921590938761 GT 1 -22631704312018049074546387620094856507715.0609872068028985614306224314197756 0.1895168637724768605832850883509187 0.0892611857499376532106522741821547 1.0934991250793320109314885611624837 GT 1 -361672157493333551344333.2852574735085774843470532777474127 0.1691213480183331319096066525295380 0.0604306407805442381411377636933964 1.0623336371809467457484977264801315 GT 1 -1665.9630316761639848913281908105108909 0.5641274160609085608650440560797201 0.0481578435689280782863861197105045 1.0493560600056559179243424759149092 GT 1 -11119851.7997711252696520593007705359207753 0.1357586232306645667111030589892772 0.0055540533545111795511779193171838 1.0055695344573673433937137030342331 GT 1 -252369589568197328334597241470879283069.7046685855694155245916115092772524 1.3175223695940042631965732356308712 0.0574981469056416335462444302477675 1.0592173935140437540445529038495307 GT 1 -132314574.5178335815899186029488759675458499 1.2794087058362593542384272355666994 0.0911478995888897920880144748042434 1.0955729038610464454838345875078838 GT 1 -8094983709353213.9285121449054311633172064138448079 1.4043301102153003289837012122067628 0.0068882471814325512488523449239945 1.0069120806663960569065471128952468 GT 1 -207118294745206705760.9255284748836183726320908430903815 0.3302906067857115080663992098729471 0.0300437784640862782507433563104000 1.0305043409404099835560504258744856 GT 1 -4567352007.0085026311412136469168809574479516 0.0448981657135856174869301032786310 0.0012906164961868285698138666949372 1.0012914500589406935406770867672748 GT 1 -8804423.1029256940503044215513150203312453 0.1108480082962975446484653772991700 0.0027355309389762163996084818153019 1.0027392793412093834347000078366034 GT 1 -591355344661428.7186978794299957800667011133153757 0.0435999886792492806036665835537416 0.0378496516252081765894429182190435 1.0385845532361336447352079039942509 GT 1 -3665660466151745793399677.9019915737066448328827069428598554 0.2305536669849311419470167313108506 0.0673001544040752184782785993605061 1.0696718387946049616923949223196107 GT 1 -586484140095298696348516687534880665.7364634092209060675064023733999791 0.3051456626447901094975101906157348 0.0206398518981820970179085477128945 1.0208558306563268757447854914431936 GT 1 -15939791983740132740860611382921163.1129527952154272439954979495533955 0.0274164722189518544003062246339301 0.0613443953550807573488074782016519 1.0633066352660600956759365622271973 GT 1 -9840145118.8821574494440339869095925617244695 0.2462243140947503137377656355173760 0.0664321779610542187391363784430336 1.0687416651430367960830087566700843 GT 1 -607032793074424563195.9464343833769709874463336218262573 0.0398059421741813792733884491409714 0.0302369837236570553275937934381988 1.0307035504511921969855694036081015 GT 1 -1307872724325988401978829677575570595955348.1676114391136170974491730482973144 2.8682453247955730565365784450515071 0.0102717149378111725857008200086966 1.0103248330575546242079855616447926 GT 1 -704630641387783187523513970289.0506233994409465850485759267315260 3.1212847369977837308166062653127841 0.0552977190983706450969071252002725 1.0568854477909630449311130146281854 LT 1 -942188405229805918165685747402606.6265762102641666738268605293336245 1.3813357146852511627445575709495802 0.0609154050721094257988443766173945 1.0628497133867366854698880449112035 GT 1 -10114123292182907981885868.5669998155619948072111216600160916 0.8014420052239744554610189114531520 0.0399508363153814418610002912653565 1.0407707836600759491178207477157617 GT 1 -18079481259.1081263744687405180632814210282392 2.3576786985178795230483950949717295 0.0324015410040068337257457015256953 1.0329380928519220970467648333839925 GT 1 -880403567406182234893267014841.2167225828054934119023254246235580 0.1118815612250926813036255562952741 0.0181532467015243353281734448544151 1.0183200385098294811058217491731645 GT 1 -9147744856843613012900634329798.7805302150954536402642864440242034 0.1008983465292885942154144901487913 0.0937119615010091802732129571270493 1.0983981001779880983544790768131269 GT 1 -147.3970651911895046040874039397754648 1.9597757479030709084130060393985555 0.0392190433883180122356305740247245 1.0400088287586652834179659634529128 GT 1 -1295833117319942.0270431044530505503315262490010686 3.9996355707277601774283192062557551 0.0526383965696063402765000620722875 1.0540744176751987423305661095623775 LT 1 -31.6313835924336865273937236932388442 2.5552151207604227635170426700351126 0.0125568037605605988809987140967928 1.0126363066568639712740745949838661 GT 1 -93518972581876132078184994614718.3569309744378023096587510791089091 0.6803056206801474388235428293764049 0.0420453469893762515760338394465290 1.0429548371935952939577254843069887 GT 1 -4505429700358276159900984260586.6413943328676549344546096220095184 0.6024253599130335644918649603496501 0.0965642670752096628496148388090416 1.1015503027196562247548507751536935 GT 1 -2.0823381329964996346387376880492484 0.4122113674369460062069166956300982 0.0172134854310088433104606836925502 1.0173633598690257556122987514298075 GT 1 -5732999224809300228678183148605.1853752840176020589830449484678013 0.5670154207663636523548890919286928 0.0717004978840668428783332314782619 1.0744008589160114209632254683767795 GT 1 -2247213.1533086238187450793277603452743230 2.5064352914724588016136815845725006 0.0583064162832962237538141416125277 1.0600753400003183148902402421464581 GT 1 -4840163813215538769306503569737146476882.5999637406883018486802242138583633 1.0635430088080957353867909144508061 0.0622052116994017086295664155354202 1.0642241297097641852396922980325216 GT 1 -625011.6595821945506695999846231351723162 1.9272779023874655634334673057363226 0.0728088096223804092476644396485220 1.0755954883200896932850222175682969 GT 1 -263614542705869564685895453.1314240164799303284189173874843074 1.3573475249071970396403240697512033 0.0514992330963271478181137601836115 1.0528726810637230695076114917044713 GT 1 -2.2259374096023122944485258498492564 0.1698622053991711190525696131979473 0.0770068548338708373876601963715360 1.0801334711957803689786940896298602 GT 1 -11111927623603.1903424828288077060243464977272801 0.9288553242190646878237822281636733 0.0613621696260941445536727410370286 1.0633255713265420203728013374764411 GT 1 -2366192366914901357.1689610474565571126811157394592433 0.0747085771641117613457170332547704 0.0924812741827237853037057799021238 1.0970410785466244898786704395683522 GT 1 -3125627300077248683.5067878489673831574867635408495634 2.3392456364842628507314957987029937 0.0725613926598588593303366095767401 1.0753286782383216076086858307120652 GT 1 -67842276519063501.7845243076624900219577944743855248 0.4882198238295362805717473292832848 0.0292998899805518880019957546619400 1.0297377049236433895624594773589160 GT 1 -165.0418140523627927714141256502556315 1.8747688496914047475079157567950867 0.0884509703069510621536574165806586 1.0926098961915161722105763125135019 GT 1 -64870419815519901990838733806.1638364033916953836247687422882952 1.8325024438315427245364795177721240 0.0430004736990882899490878741848434 1.0439523825126786374533364701087486 GT 1 -2438159395331420214002433815829694.6766313944799549348610576557431805 0.2170029559126109435893030189420129 0.0352543556475405214210430818965511 1.0358907933686307106728797672585658 GT 1 -131565352952307186772663553813.6439201307404402684784240391947763 0.1711985500438070975383792516926425 0.0451535761452119697573368135169817 1.0462047641506577161311265130441802 GT 1 -5257479.8090686928837374595022140405524953 0.4081981375002289841608557943312740 0.0859058193487258022084201627787537 1.0898216705484327751064457196571432 GT 1 -1107007251606145580264030034.9251032958971839199503597157496024 0.2506247651036725736105863514156814 0.0714011428727939269236891450029790 1.0740784341452896815470378985164484 GT 1 -1.2896740250779725274391963906547906 0.4100880089163136742501390414367562 0.0737398165101620396809234141278663 1.0766001081112648703985761839257953 GT 1 -5061702065641935841983.6027817542287204203936816371096488 0.4257795894126335670017057936265416 0.0270825721718703820708716845696490 1.0274560638832335243809685375415319 GT 1 -1569331239.7127479819934713587522157380555375 1.6245747835220291114982233277692611 0.0248916543728112208756356890013420 1.0252066904378794856856016096946468 GT 1 -68909788774324376776868242749775633.1837457888577060346217974700427920 0.5930946250206283133685214493475628 0.0781147260672109130135495363996837 1.0813344949109937068652527105620955 GT 1 -4069.3800344091279269684348915507095591 0.8153527783931475251721270884529315 0.0496589351747377724745886957549676 1.0509343432126932379878690509361203 GT 1 -281602356962877721925261664097215152137984.1575102350049145404900065952988844 0.0495133537640979262581656419535671 0.0620316552387861749938552462104772 1.0640390781346993628703961443586896 GT 1 -21738671676500718.5238666907960794991337342655937280 1.7599151413627145429623574503811686 0.0907657451604248689888097451433019 1.0951525119110277787361059227529917 GT 1 -394015627267659179391166601953156.8601587290465821604570414517869543 0.9888847708757322767270336805512345 0.0502983336771938689984448371756156 1.0516073791566857596813222704997713 GT 1 -16118.2847193041071782858012595698617142 0.4089219503373060910588621364656576 0.0003741342933057396453445248987099 1.0003742042990020189804065967002850 GT 1 -8.8753741215975015875633100904672363 0.8467728171554322746387073247795528 0.0871133262026473650152934814003233 1.0911435311763708813249803548697270 GT 1 -20119744710913405.2684749541963826685755313100036463 0.4792304025918052405555127825896304 0.0081209513535457089861539280574570 1.0081541058986240535899158366536876 GT 1 -4181892415028744890598333413013135.8031134753945005850850053095035469 2.8578632825128182850361040432486909 0.0021898888241098035520025375105247 1.0021922901370201675891652166440345 GT 1 -32.9750983432240081919128114066207891 0.4510015797147841828441221827411336 0.0532552655715074809874197834107795 1.0547257739495334926263085398675970 GT 1 -317817.3215415909851764320804870844696018 4.4737306306866322473256729285369206 0.0623926560251256757380255184952188 1.0644240274523573557527679271981409 LT 1 -559395263945723914814583029965580278123900.0129317649112060146471170113552826 0.3124557588783602514523742005083685 0.0150302107939890024167215496110695 1.0151443091372501447867070709846663 GT 1 -6726179256735636807869880.5475449232792554403594976482023668 1.0682202770133727993397267253128965 0.0875101994074887580443736927034135 1.0915783710208228437620883355844322 GT 1 -11927647823712736.1785300220306162804024577670473421 1.4175831779966350850630332417793768 0.0974673349598216982333121531737899 1.1025503954797502145904875310802937 GT 1 -2225778184037973777739869521879138261434.5408539609028488573320851031073408 0.8905509481967509099419893044532521 0.0572396126275448733074760029360377 1.0589431247421264896732917699958087 GT 1 -692.0978626345165265373174927386952250 0.2145286391012211482020391433659378 0.0648314252663947776477042933395643 1.0670284721116969841528079680905511 GT 1 -319736411277441204987406801277.9875847663822443066099851855382883 0.2202373847685495760993069239146268 0.0442410414098197071478555795061470 1.0452495330881212833304151551455341 GT 1 -60.8822212690315051357614262968910576 1.0743188959779707100100851505705086 0.0805033585155861060509034975406909 1.0839288874899305870904201058993586 GT 1 -93774979556358400348484323856443362983423.1621435834267328137879586586810215 0.1073796117883070515629277195307068 0.0763869399762159409160259168362286 1.0794620612555339835601553714205110 GT 1 -22771950786527092647299397.9468839985563417328339130545029010 1.3280096909098379660589067105478469 0.0953080102281344345407890969909436 1.1001607360054825483514203567492205 GT 1 -8298294220170259737307194222359.6528043288160455259859674055278128 1.3347114546320555143474293556850861 0.0469578887300655378389854384609467 1.0480961881930418322457856393261030 GT 1 -42411141132118336070282009.2010998934726910998212603301033219 1.7548141948799113840363501882434353 0.0270909413716200838209007118999178 1.0274646660888340805491846224696729 GT 1 -15395360467439146795723808928539856447505926.8376843222626276287283980046169800 1.4191241071139309162556166305204583 0.0799909111220493955322534450159368 1.0833717297726864826139199788494534 GT 1 -15592049393069153722596.2878352821626071190039472959237266 2.0600656882774590749062456946581896 0.0087392922305860837959726284198463 1.0087777038019770462347756550448576 GT 1 -333625877014896489420556503438.1821013035467946526716320240116155 0.1781928407236013560635417311505364 0.0230994545416937702179624550978510 1.0233704279670584451304014157877513 GT 1 -232193059853708027157704.5716122809955685570381284447263287 1.6879615588188321631804175333278028 0.0904005999581204900162563277056311 1.0947509961305934771184255685665236 GT 1 -10179099151219810132717200297602098325.4367703403076020086376420769885493 2.3907908585580180416440218064561414 0.0055076420491487944596352125262577 1.0055228650305042229006818252773536 GT 1 -74154850609545872201.9799300517499301246715883550393355 0.8672417764415112338666070567724733 0.0466225835717796829771947050546147 1.0477444238968082421163643922591790 GT 1 -413.0880491454214395777222496439801260 1.4952981748310018135515545368351410 0.0523490771064893563145393835264307 1.0537690693343873141269864411739113 GT 1 -460318308454285478.0885434370236755371360363404013411 0.5275892507356151264115224522894615 0.0347137884785479873326129731628933 1.0353306293677283890987562026251515 GT 1 -197614148053.9033994918390771972817094176132706 1.2549798595017605913882631538921349 0.0045744263844299886483819562697898 1.0045849210898717543407363502292598 GT 1 -238183711083848489184171387967003753.1106711744096327257209781407398528 0.0731889211734116844404042721593402 0.0890754126839745192606298577217137 1.0932951652627737689815376648170048 GT 1 -74.6687247451268998215982317885276318 1.1374684803592647287446817742894894 0.0452547986277576472357448122169966 1.0463107789459712928052589344053544 GT 1 -9674218556691570353560.5422387269714506240889783302897006 0.5374094806458446418247088550799358 0.0023740743738366750097165169741999 1.0023768969566355282883307884198590 GT 1 -275527060157707927.9110963204397117211051486530014466 0.0544262701193590511392463401487879 0.0481900386913918277902926554834068 1.0493898845917415796682565541695300 GT 1 -1952.4564371104224810188393238335715713 0.0990977916491799690338746525708454 0.0119454146618122926370966066344967 1.0120173344423975953246165080955720 GT 1 -500214418399075479795.3027684856861778718493561908380752 1.7214292160835062017796727987063873 0.0122195478350656261358032444961914 1.0122948203355101527544663251396455 GT 1 -15289530236206805212380316461928134005297.5291804701181366679837739763964640 0.3352055377473367586722535530320146 0.0206803177382902732103009366075323 1.0208971501609101471045884467310258 GT 1 -124426860907188803796340386984178283.0132069306218104939838194015835731 0.2540413008211677312756294958661719 0.0537360749989379656669149131272547 1.0552337583534872552619626577370836 GT 1 -12900966089.6747213819911131807661073352647880 1.6948766446326252746860116598300580 0.0818343192040161992072313455938637 1.0853774244763161266771126427134911 GT 1 -1519657469029885653290410.9215351631521281232531374051492759 0.0114657949557167009782526964307396 0.0593458269215718132902734980178759 1.0611797169574096487908001954478788 GT 1 -6556002797206313386.0905385658770402358379400102792917 3.0621902013034231501430445575359902 0.0834325041103260180666063420561997 1.0871195691443637081128022378192169 LT 1 -167565545353668359494243419893.4722996655308379860452884364894297 2.0291654505122861365607884358189513 0.0041535251748938167652849458213354 1.0041621750204592992994677863066918 GT 1 -509926439286366491470024583473625.0302784242969469272670710585063545 2.2513682648412590275243554377973763 0.0218847574708600696946454752230937 1.0221277809924347496473023882210750 GT 1 -50723014082740554.2786109237287249721118181793847458 0.1842259042007645526439934409991412 0.0530352973488693148457584719278773 1.0544934592983833160068298342509011 GT 1 -181538662426334612530.2011386597185168465327698530955433 0.0178739020293764371232909520878593 0.0514161390494083161797039997800648 1.0527850792290427094363507405162329 GT 1 -117537990829311176.7290160950888884092971894426636810 0.0587644433884352727202775336325632 0.0327736654037155764907536755168201 1.0333227523885680239880828210840436 GT 1 -888689197791789602.2435194522516363632770077416761771 0.4063762033888460116929837039891199 0.0251286651818831406683344576413763 1.0254497809814536989507267080122857 GT 1 -8376038.7068360295963220345678528557685470 0.5457454443264573185416939400097487 0.0652270568539721554507812023070319 1.0674516207392854051123967222940910 GT 1 -1267892.8122862444188756341985798460744689 1.1728585974020274168570296959827716 0.0889349590277117481285668064225164 1.0931409891309667616357872564252159 GT 1 -124038287345516250536.7334052603688795238840739259644890 0.0830380019737426404079944527982283 0.0052199252149284133186921281000862 1.0052335966211180558134095064984481 GT 1 -424832619977723560385696720092.8100353455988990283942243504289446 1.5143727777031315431983271499549071 0.0460116565301711448436687610772149 1.0471038261935831019889589392834061 GT 1 -22671.4938107488911392857060322204186694 0.0769012579520829131204018739143937 0.0275364292632566831786853833684534 1.0279226635878213847037754677379527 GT 1 -1935330840438358.9277181043843252700457695365545206 0.5765500297501626209217889357076460 0.0310137179629873212864488170661092 1.0315048240161279259870964913144498 GT 1 -8393887384650614197558.0531600473439776150576781443655333 1.3237344505244253997917949380088776 0.0236564926941942765160407848018970 1.0239408002836296760952672761041346 GT 1 -259569305876457483994068798929999124726.7164196375010757794040838668966452 0.4832625366972589695075947270283234 0.0917377963433993734842429640757853 1.0962221715201161826321321824261744 GT 1 -695254906398958282920674742972855747349.8037227897065304052661800351162561 0.8138589972671632094094511226938141 0.0477688059695829010655666879465300 1.0489474228019846558939615912817021 GT 1 -2165473734577363259.5593419398730938687379545164592163 2.6982912000190389318897439566841392 0.0483743717778735276811226530578095 1.0495835691987456930937536854990390 GT 1 -2198104947348103.9487301895665168039008587804755289 0.8794721791987210868330191867687708 0.0214523416667431641368751392211489 1.0216857878305406140718002476763957 GT 1 -136.6191926448092179670574877539703796 0.5783477876878689882723021680630849 0.0159854892190490412924201230763157 1.0161146353100068640371123726650978 GT 1 -66999362.2256243945544953667755928356450986 0.7543302417664055319064939582477684 0.0548978915170611288703796578472819 1.0564623060208188347927261001941207 GT 1 -10177076862487286203373773223049.3448000728825668154903501630922683 0.0459303006537697403821344422748451 0.0804714415596251180030752613616843 1.0838941767573473708065707298984798 GT 1 -300129441.8322240578629293037234543328522655 0.3189649192802753775125426649868347 0.0858724664031794969587790884554016 1.0897851837861434181714185870120720 GT 1 -460717090130997.0002989239179449957174944131456449 0.0715977545666736791620470172684295 0.0708524200912005954753879414424708 1.0734876938950472346480661540983684 GT 1 -122747947144561900181233.2851355294684526606605730125555368 0.9640304040996597029254917171015315 0.0126277934630974655005929592610010 1.0127082016830701090462093758460393 GT 1 -4130622804956722104876051010049265363.7760740515389143127082028645022551 1.8702805311130594113403376761384742 0.0268244375650203679626202415683667 1.0271907789151920018385554262663034 GT 1 -3779200337960480243801407962041557588.2590683733029173148887893042684508 0.3671268827783948057350278969678665 0.0378248721287161675463165902163089 1.0385587992804756675196106644481316 GT 1 -2736728892784694.0459772724361302496269832555861142 0.2345911201907192329219910242212500 0.0950847670789041688112489853809494 1.0999140049496343476576365315825466 GT 1 -171538.6754332914784588579815993324425143 0.0640052615016961344267853274828892 0.0610293529007416443716149581038384 1.0629710600076689305093259556727573 GT 1 -10160.7079384800569049187744942701332074 1.8428220072135778235114526496904165 0.0657841870370680122498178743205797 1.0680478043147903760544450362897064 GT 1 -609424261.0417232716507010160045903681579126 0.0108016888951334206165233674303472 0.0142601309741616179099819865455919 1.0143627837047171563756001438124958 GT 1 -18922808083586930731.1879185384337181288533761125055772 0.1537001594822532449233753629915816 0.0230163525547785704258876749594846 1.0232853645971134569154122649738528 GT 1 -793739552064467722603987636739.2167973860953951303750132119111296 0.1721302192517218755004895295539640 0.0416030207264645831927565303692341 1.0424932034690583903971845056445073 GT 1 -3175240972049148995.6672393911257835991757499836042434 0.9860504153377910368575209602354972 0.0307076714971341391483209652765650 1.0311890319863006958670131166338765 GT 1 -272792027344004204099404489313062508904001.5886294700540565672119008090134658 0.2750848426931601351667087984005823 0.0489616087011850309562075028746371 1.0502008478521841951283571337738850 GT 1 -214870299.4855481206170992250022817718852359 2.8577119520993902494060456595796526 0.0476746060064517984027546014560431 1.0488485021778349135634207996756359 GT 1 -5271327243799378219929693084523840.1016427676981172475767652807978214 0.4098749759734039230353239401948611 0.0715007990323905076801419759705048 1.0741857587523645232385322185753597 GT 1 -6.4853858733511617606134212260698210 1.7983219474544132934073225142530287 0.0463528789581394613527036959552025 1.0474615700476425752095617286871719 GT 1 -22889182307418514127273482593811103352506.0003577782118723516728187564360267 1.1450210871750772890970463758782912 0.0890434622752348231911025477537626 1.0932600911755527861646600667979553 GT 1 -139688556001.2294260712320514488935476353314388 0.1682776142823413255615463614544494 0.0151352435172646944882986828114645 1.0152509503001895496128721033890894 GT 1 -384983687892.1336624133081329059607336208591093 0.1633822622309541979487189250861019 0.0504331733088128604385264741747272 1.0517493702783639364128328320989739 GT 1 -2133611060.0013466178323140986111152634110103 0.4537912152315765091428553699282654 0.0133775512587870711784464979458719 1.0134678368013705381273256581113715 GT 1 -5258783768096566.0667538887023394689438290178130300 1.0940422450580496811527884901879682 0.0238610512036191177007032955129868 1.0241503371319982388261345332005218 GT 1 -1253487584455319331.6945373472041561547492170031535831 1.0225113321399075832269137349225159 0.0387410141999145597659063273311689 1.0395114101694761348771340377048130 GT 1 -1289413050279080281880956098147.6987080373031076615977154264263844 0.1010192491722495405218743242352734 0.0502055472155543559931679183791103 1.0515096832879972552683102805252987 GT 1 -18.8948662667216503248766160729239063 0.6087654731777492852051696816371993 0.0120667497473666881217861452859258 1.0121401439896239992798982162434755 GT 1 -128210694.3022816534266878264211781585806947 0.0854135873886985117434331983560603 0.0311753968089032224613279309114393 1.0316716915340302504085944114606002 GT 1 -1463590551292.7133899939510647655930715244849594 1.2637970511915190804132273602891628 0.0980463411432787424487827876966891 1.1031921362296359899380750835419585 GT 1 -6898250324863538120.8081892254599542381389210274119893 1.0805653637549190760031287394221098 0.0121348734089075504565485587426625 1.0122091021002958816452838053371032 GT 1 -29332280894480.1149605527967749689322573586162919 1.1705262423558129754658787853654680 0.0036944825406921214572902733172014 1.0037013239969390127903906443784114 GT 1 -756745051438537007367364109341504275949.0284561019323050356726773427096933 0.2531200560213373908184507237888162 0.0610721363840148008345520344414200 1.0630166252850643138876502686337125 GT 1 -223154507597.8241400642672757569640792854209827 2.4669856085420540310820161406844646 0.0082117144874790855182629694952580 1.0082456163373289350810353045274279 GT 1 -600797966315152661381.7740073478973040207918301655256567 0.2489059541315251124823285639077082 0.0071008778888312553091168854046269 1.0071262091093922926021010939830693 GT 1 -3586734913347542.0124831645126682324255969870538890 0.4939948647495296691195277391010259 0.0714504808737990124378020218464970 1.0741315672192514150588155142762146 GT 1 -375279182031329426814999351.0384705797532765810480657573033183 0.7861156510739389089679410113041235 0.0183731493869782055012121665466442 1.0185440320343008347198929565391199 GT 1 -12109611707012.0542140728897470923862199122051690 0.0476470594020816341206360467464763 0.0134440951309844062558096593032804 1.0135352852123069446205165900743677 GT 1 -84800367336957394548192127794737897.0174931001834456355426516194391264 1.9305265032579245390037514503685018 0.0158521506319202154892944494659932 1.0159791397939532731955945534720296 GT 1 -2.1779778929775676330394276395316985 0.7263064018154334848834470633958468 0.0526247535706461878257092407139127 1.0540600167319106038040454030871546 GT 1 -99689119676801411688383521105.4877958593737771686753792343532428 0.3354686040474954856528839116432187 0.0575616986580013542103308576456558 1.0592848245698618680408312728775923 GT 1 -180655324276515.2740940507844280449184671573681389 0.4407292265013213580164645992841559 0.0765546275206352794757918885794083 1.0796436337947987958842264633569562 GT 1 -17910494423111299215553570007617401446384024.7117462587139674242092314248921602 1.0282455363295934512714044804038077 0.0381446642340959760765563242538892 1.0388912182461505548509715227686474 GT 1 -717173523706.2689891336468010092512298747584596 2.5858222980649846735171714423317326 0.0665418566108586205500824031083694 1.0688591553675558968214416790219747 GT 1 -12533856502041890514755454991143994605225812.4658114724723784078768260039478024 1.1658906599381604044410936470839861 0.0145697363070444854379098153694659 1.0146769172544192516227330461027854 GT 1 -2046589926728521502677.3091377297781123133528069401507852 1.8636759160034210546132375871833457 0.0286026300210664918079263002393618 1.0290196565284160445084911443077370 GT 1 -52.3777586673768762428907337047534500 3.1562980990890832146176630223337834 0.0515070965419784556897967360404312 1.0528809714927046839897610591864192 LT 1 -49587506418176222005444460454573318306.3096577844142076636495515459846525 1.7890245800429470549336818896111900 0.0834442429257704203031858802879923 1.0871323765924450989048539458540429 GT 1 -559829182351677133887034411485550391.7092736981920863233555144242613949 0.0035232008926604687302687177983761 0.0022458630048827202775389726559264 1.0022483887375426996620349482262741 GT 1 -46511539668313.3581036699518874515607365081119878 2.5564058312817270286475303978289511 0.0747562744766723621184046147110095 1.0807165856508497050576860811343105 GT 2 -7097490522.1020950746664941313629230311069030 0.1176390657082457676324483302302390 0.0086577912065439856875302963782614 1.0086954876169738476878346628558211 GT 1 -11626754818.2010634381409652409851968355614663 0.1298691672736576134201858428519484 0.0377594326497360304179054120861117 1.0384907895680545404995144978277358 GT 1 -8322834715749657215228067553609044522449973.9239844265927145857042197574463213 0.5717738012473073392198002172194961 0.0917898408340018283842128417857177 1.0962794743359276212746391288982548 GT 1 -5172647370395238122446197260.7446532231899389295315363309585290 0.0074518477134054303998316721193440 0.0824667078192725955528181005688962 1.0860664139561626149643567527500779 GT 1 -12508697761466209736574035.9595144066457566954956466611741625 3.0497533916336115847133012616789107 0.0510280673582837725830121854760255 1.0537476821783784504034038740913208 LT 2 -9915030.4266816133516123425884695483380333 0.6479645754266270855029465627909566 0.0384049180754651884332843908250333 1.0391618296854305132173024370496479 GT 1 -67.1482293658958628690143403306933604 0.0713026206618793550480123335750958 0.0838208508172214229121812113474258 1.0875433557203769448207550143694579 GT 1 -71857123296985646.4080491268826095269289634486995042 4.8778820581562875707355326964519152 0.0414092031623763371020564587315252 1.0422909929310842284149989044683741 LT 1 -4177275322445987210173205084995039.4206444182879661377508747218298213 0.5779024556466264878052279083939030 0.0918821796756475019740740482045005 1.0963811507322259746642693695916308 GT 1 -2187117277139261062999625714.7166917456893002058990925080287688 1.1538404282883897120631465982960462 0.0313085347268135800421333811706430 1.0318091230839274735265731516745126 GT 1 -705.0273181130175655005264697055449823 2.7795230358452672798351306763980266 0.0362727497570816123793818086206147 1.0369469598380297333259670108149735 GT 1 -9769842.3225611315592169758939925874244633 0.7014296225099349331392757239040688 0.0040912153562182940157465307887097 1.0040996072743472944212646956983295 GT 1 -3440571244124947759.4942301705533382736150354149174312 0.1133176894918489548520048639433959 0.0913784779322005082201702840209329 1.0958266388717733729245093626124532 GT 1 -978665115276339918759207325589020976158.4552056676944586214881560651736984 2.4344204193008096446591093906833345 0.0886435107314238056149714219717905 1.0971290240213846172294541734671871 LT 2 -31904677741676583692070338298.8613281501150766652171464628628034 0.3753770831989058358889570675233625 0.0236708701268321472008131700199206 1.0239555261853137408430128442259476 GT 1 -3150185329942589807.7705968921417089492952687434456128 0.4792233227262544059010663023432598 0.0649322652397537346928698667932130 1.0671363087235142018656091054129628 GT 1 -2634768030221639396.0634159078772834439917572810471272 0.2521994608023305720719403067878006 0.0219838778143998432316066799032192 1.0222291242308415039359467461231604 GT 1 -30325.3647388123370339614742815986041913 0.7731665617803946589773509251004333 0.0052968476879665866183187332330280 1.0053109257204829638667594645366215 GT 1 -10178384595788468946093153794706317.3584992493191751401566435583008144 0.6981073541448665426355778173291235 0.0998075990674231232207073044190282 1.1051467596912865055264544571114150 GT 1 -439837517273522561510924392.8697477535374670586289691105609938 0.3261701894770193239139278325513438 0.0715980606060489313083707455672820 1.0742905156202809610220818793836081 GT 1 -76691575139190419906744613289593951388.2852211961206917273235875479792778 0.2820223698511239584507989635793846 0.0736328201397242502392065540747675 1.0764846004029437864782524940409907 GT 1 -7243723441759.0919861575940966491671412001835860 0.1100692018555180306014594930953310 0.0346256499156449035486318307969108 1.0352393253190342929044023698838690 GT 1 -40027610466145786053544921893742310066977.8584231442506046838822644155491303 2.2640900553802846847985592954038577 0.0165075568704993939651656753932618 1.0166453248332792337815914593396543 GT 1 -436833785443054676985.2667628941133333952378875731632584 1.5642524860749967587459959010895248 0.0891226895382323398200829211446852 1.0933470664649034854694057221010339 GT 1 -1.2648998069772800917476040365236564 1.1235098421827337510852212545922111 0.0271523637625028878719599399754773 1.0275278007973670406635525690145382 GT 1 -14826616961400032.6280998411996969257896260392059005 0.4857453106739366361295546595716745 0.0396675746647462697899186677514575 1.0404757780691985041762001561501157 GT 1 -386402265862107940079588293090588203149472.3536155534842292157527616583903316 1.7001810875785689109078576868842449 0.0099729066291538257670453850911723 1.0100229691867133208747157307937314 GT 1 -1.7765309117995130695610571724815111 1.0570770942049578500243012398720332 0.0468765369980778137151963118776161 1.0480108317758080438058011412947351 GT 1 -35141029399324425406204433199251536571200.1061062070494964604527079965635061 0.1577950923393557066672420222516219 0.0713433176199727830267870649966888 1.0740161645742912061676170569805284 GT 1 -22.2664304068417773403966803898817275 0.4033841823426662757611931062089624 0.0043625074283049662524819764969559 1.0043720509296803273199452583172236 GT 1 -397783254259036742306.1006441179121404230837247982388056 3.2730789086328352934497241568973838 0.0123203173212770317369440025136210 1.0123968416160426342098152565709187 GT 1 -3547610371418818038896.1009744070131360723590807017820335 0.1167410343356973171532067821923022 0.0757347348281719586345441171316380 1.0787561650217468495075485759652029 GT 1 -37.1243642743414575952194423980348543 0.2920612020685749237116114371522702 0.0367602509351936092932854996431295 1.0374529375622852152653306852902346 GT 1 -26530737116.2093299687777497717621396553168854 0.8697715526032407607688984313164392 0.0600822426001440420407434605669001 1.0619628996735597587619915785178137 GT 1 -4932415126126761554111099686544703.7828871451635018443021655582505692 1.2885080727043755150115299098546059 0.0708448019639208946559205262066663 1.0734794948788587441122933888855114 GT 1 -32287632681428389808557715096690.8637855539058685881288744386964620 0.6477790108629327360204755652430419 0.0976407457593558143065149289632126 1.1027425519166151984924299442021030 GT 1 -95.7602587240270352867481254755973794 0.1216387610860108771876732302595922 0.0523628348555804842426798356389621 1.0537835871791183619347975035404734 GT 1 -3912977600723187.4839598334372141150998568264548917 0.9818625001855351128233167586898367 0.0896313759944717447722107215862041 1.0939056801697748479220029639254408 GT 1 -3658.6157089072474787359725286100008650 0.7856117580788871240381410009342508 0.0984745015529667531044099159996350 1.1036669522717267612003439824040149 GT 1 -99044149895825921200421608975402622827349.8084088718899953797201439842350846 0.0784649620794512911937439093920957 0.0839925484974010889329383469973216 1.0877307795129295698992481543711469 GT 1 -401195.4907972137884757733075533763423133 1.7508509532165379358810324054748473 0.0116676426590171562289825276512068 1.0117362437322479577307387390579004 GT 1 -1759025365899595906.9280567587903391948701099479961753 0.2450865509437489237906001984860792 0.0237143579115055621997473609025861 1.0240000693131288766665272534443357 GT 1 -906050.3033141832384743032030835691353581 3.5443974681715561156975597714978671 0.0284480549423963417201732498753602 1.0292770081338432420434349972882986 GT 2 -13523836861.4102999920544401150974951467390686 1.7390197105175761285870765188545605 0.0633937429804816088792059583173791 1.0654923016875128148126989698607416 GT 1 -158185460681720565072294687112154.4517921989837365551555035714051186 0.8201261552994439042962829204728742 0.0155749130194349481311985976500493 1.0156974762505822398018558732753918 GT 1 -108034.4455760117537630760237262944371273 0.1181324952484014374664531756306883 0.0059596037705914463994923276664998 1.0059774330815207620438424619269167 GT 1 -55324372289049787904.4480037811898695642210869186064816 0.5897878477056525531059756027092612 0.0935963472932393955928838650826219 1.0982705393705022407707201344837264 GT 1 -7453.5815623079394202375789636081381354 1.3312671458325063643029923329337164 0.0970803022261477241057952013311997 1.1021216577876636714551281812203151 GT 1 -271.2886615610915711702277861361747077 0.1552529646659843108779425354239042 0.0934585731417611265720072699345665 1.0981185500429749549944605858215981 GT 1 -713952620641391787.8876077408524561821525582181976614 0.2014934505882304065142063494964992 0.0029709230330701807540746220898223 1.0029753449852625743387460785610821 GT 1 -41226942965173239339657455.1901534149505702169215896222578429 0.4721776663859871798591252997898886 0.0791194957550210073992304962111001 1.0824249968068731408762942590626691 GT 1 -329.3846744881635212671857998123541472 0.5217530810849528137690110709947292 0.0950599158315758169950608779751746 1.0998865428126389135111496977665367 GT 1 -8001919.4477689846828011963669567802764217 2.1789769929288022019679114467399065 0.0395210957248241319071234542761063 1.0403232602888751326699642118240979 GT 1 -2716058446545508.1286644813483235893236503899741361 1.8528099688942775295708831929891980 0.0538875684826387988611306696862948 1.0553938676081845366672262969486639 GT 1 -129978325079563289311659163102106409.4729018377554489144782526172206680 0.5057733812527517201354448937081557 0.0160500733253204992822999199211589 1.0161802707504299076070883926918164 GT 1 -24432836.6351473751266145377322527415171152 0.3573717008518617578600423301225450 0.0708484668527365028262437474744804 1.0734834392102805855152682069995654 GT 1 -9018688947348677233255040.6170350571411677799559285630541151 1.4191796969066650937949566649595834 0.0980994193554772964727773317984394 1.1032509860092374156770147570597701 GT 1 -1528185953340890418669545180284.0240688241147338609509124459685147 0.5341890304367360802117176396012764 0.0483422199073225403239205512845912 1.0495497835098529249000989829953473 GT 1 -334244019626838045440235681800011.0640953654456800598166341726123580 2.3864481293105987190551342579991414 0.0788233265074729289652276316559243 1.0821034332271107413920184308766961 GT 1 -37801715304188113921559679988522867.6855472378193875651671836045329127 0.1493376417678881401904443468391539 0.0508651196610386828793565103333521 1.0522043615580137972809990916208726 GT 1 -15281343422256846274498860818313467192.1745393072463563973865486706945751 2.4581925844085223763518780595200531 0.0361356894998845517291577932541670 1.0368047510213702409625933572255431 GT 1 -1193046430478.2660324662824946130681759965837037 3.3314527056054349116336679775862925 0.0181415823779846453524488806050483 1.0183081585965792048604987470211302 GT 1 -2350357750344.7338095378714434087208492011587804 0.1987789027601814358453365125652764 0.0387904698672410265035063438385353 1.0395628603408859681624233841783850 GT 1 -3130486383452731210.2127410814267340802355365720287865 0.6203432937740473080251842852031048 0.0431673019621027635017707461931062 1.0441267219989882706376652294116835 GT 1 -9862.1196765426359632926196047563260005 0.0584680957291070351280130095502550 0.0495279743190525040953626193505861 1.0507965486483075219246363784178732 GT 1 -10069746321770260866966689882735729717197.7168351834313933790283197263720431 0.4782337835634955840426153718706263 0.0164611976865054807709966409827663 1.0165981886384578280591654370443803 GT 1 -45209089638290753464668654606267.1809493098549437784778060399707684 1.5012559254061782139487073706784528 0.0826088285145132047606947956267640 1.0862213202733859877077828296423933 GT 1 -1757242707651052450183648230273984394.5095874020008639744816682225040487 0.6206450938077558010589332603430220 0.0668366639043888395125650010860268 1.0691750279739964992476349090709355 GT 1 -86599247408686443738688.6910349938301202773006916717805835 0.0814340882633266405039116462678496 0.0433920265342435223933397959478141 1.0443616125566321614337310371800504 GT 1 -157726704725363317035794024944982845776.4999015953094143026628797854693368 0.7335432029024715011436669225419900 0.0619268791173400675934448221891695 1.0639273789814835935337016279509394 GT 1 -13615695223031035018661856188457334446659.3431542621502296761335426563150399 0.5281210216746206821936857479825000 0.0907341854104531302570440113407417 1.0951178022615694592624469170120287 GT 1 -15.9001229242189760387028393891702153 0.2881345050718339697296913751193659 0.0636162876239256380152646708194525 1.0657299373909897693636186607793951 GT 1 -140452789092455205353.1698061905453454727573451520315747 0.1884960359627435347578584185139815 0.0708015595715169937204863447490813 1.0734329564896989349517302618916045 GT 1 -4139763278160589461453899584.1001336580484073191026130264991361 0.3146838791346549408136765676989384 0.0717094445266760861125680657459723 1.0744104966306730296886518622523596 GT 1 -16616810.7417875970216684922463859888154107 0.9259037081443597789076975037612668 0.0487977554928135213756700693448776 1.0500285739498265962671107529765153 GT 1 -154888743760118446924678656835557.3400513777535170263351047010849391 0.6008901833252037436256714872125842 0.0733330773539449123392072948614967 1.0761610847288520515912589726457860 GT 1 -604199070796469190.8583192433031492519333468341741324 0.9361817096519725029485943871692560 0.0937003410267387671902501838787260 1.0983852782060782397110391014871659 GT 1 -696127831657226569180420885807026386629570.3667382501716252098543447797656879 0.6627864897306333372501525174911100 0.0598716872222939454989681388646041 1.0617389100787616579380905911560726 GT 1 -3837192188424842813244633608456172435.3627081792791005024151230406739206 0.9757829696485785311880676378602196 0.0248211485620253578350948152119723 1.0251343874345857377683152976648026 GT 1 -413369977150835841496610627251004976719964.4440851332301475366511328981577905 1.4733814813634062017288157077533844 0.0286556007723994013443681176580576 1.0290741884813350069725586067592529 GT 1 -123956633.7421734782989265773684491533784520 1.1214289459811705918697543477725065 0.0140359118917348469338955570323619 1.0141353468396827106097700204223469 GT 1 -1162487.3565813751757875320935709234832208 1.0054635329219892277576170877135845 0.0821775039727532652262135176675817 1.0857512665054383059545123980135509 GT 1 -28005753.2820948148005592020280407372079927 1.2511624680991616588220092065642278 0.0445098023382143550401257945743707 1.0455307742117989561774498333599694 GT 1 -107425821775921530.9320331458537156351814480017131714 0.0418554652323304573772573473027378 0.0015113952200264370348901236921350 1.0015125385299226149108844631149165 GT 1 -559681.4675138584485273158553229777318978 1.0415460328914733010571191603760756 0.0218009492979217990215566258671858 1.0220421013311660937650137004042038 GT 1 -7118138.8070761425931017078701877723649550 0.0771357600718664494814290553264700 0.0469005486667343768399894562239470 1.0480360247041662756049132730249041 GT 1 -1424089.2032915634174078985034581542747485 0.4282998472716195645647973447256393 0.0843264134067375346126176229005364 1.0880953243284187061117878585058829 GT 1 -69726301124499372488548215.3201500493744999240506710207503374 1.6686617577829294034396601104416318 0.0647122778862578502159293554266712 1.0669010728450058534692006950350551 GT 1 -77153191239982428445601839584616500834.2933234926278181173716375938482026 1.3452865223857862927705178847749470 0.0054219082915256199857827561560260 1.0054366601827162011475102905677069 GT 1 -73115622858.6814940184431937727307318036512010 2.0946536727182076386579780340688899 0.0664608136169539676113861940012058 1.0687723389670574084629994978764272 GT 1 -18048273.4163588729458666625741362235774012 0.0610728425941009320126175822329725 0.0013292812046506057655025222293186 1.0013301654826340608292528805286436 GT 1 -689776734035996932103179.3695956932878406288992085008879735 0.0782572608104368349251993779758182 0.0262676402693772826313016632198074 1.0266187977706456214408216329624858 GT 1 -27482235412.1409859857503529531016074944916251 0.4089100278708980362421435161413002 0.0474434017002506668562337220380458 1.0486057529594876552200756164406803 GT 1 -45787466030266868208616807279.8266661128415759951335820445735745 0.0784417135964319851723903580921713 0.0366002173589750933378929163219439 1.0372868104025825622589892556437842 GT 1 -5986880524170486863890.8019031492941490528066072486901451 0.1145709518734001858718916615623401 0.0155753561656311091762887335487371 1.0156979264080414153462250649928184 GT 1 -2046911899686790606725216238920387025943653.6086293558086455744048471970948404 5.6439930358151757510303587357857457 0.0007654357488982869549461880681976 1.0007657288444145340372993434531779 GT 1 -48.3803690577882851686296565577274642 1.0167600172570853247361657876273519 0.0590733338795849816140661657028458 1.0608900742928852003478692267707276 GT 1 -3244386842367.3094771771600935792578798625428179 1.3340200161079313149154968007421540 0.0612712546783490544951156094636966 1.0632287176283957470926111521169345 GT 1 -298071285765996.5405867059187164546094382122941789 0.0041742305348794667655578060337564 0.0697373135364728664442738834060414 1.0722882741558127248336582969046934 GT 1 -4469609185805577928971346320812784796147232.6712399327809420547898480244591440 0.6462864508440697781877681438777703 0.0465011118406355600638861920160974 1.0476170200048869957461002887857852 GT 1 -726538490663209072142074087315988.4383801493571170412336995643534286 2.2022333682242922990801906592990322 0.0343076861272468161098127390397626 1.0349100111661815257234225082600968 GT 1 -245601.5739829493188480799945052203058830 0.5520242069265794539806391125780070 0.0853667077530420160231333029328361 1.0892320675383712776950957090936265 GT 1 -425940884.4072495691223267677984075032514167 5.0940246464851792423699680466299697 0.0583494075379517033365627726976549 1.0601209941672058295890100182595149 LT 1 -4705098223182004435.9240292877302774290376266458793042 1.0620685980455439431449811562049815 0.0804479023091514617322661035240907 1.0838685778251891043006348546272925 GT 1 -17893072814193869471478.6557028218748745756253913879199968 0.5117124459126372982597594828754745 0.0838577625423979881859214148926124 1.0875836452956126922708093828599469 GT 1 -19146113.7910630263059097591891209984150808 0.1902558268135064541894493500398059 0.0936751170923024762260194442627038 1.0983574468114842502815574154937852 GT 1 -140.4656068768053768888757889693493270 0.1168962966184973027218961736634300 0.0497347241419825948578828995069715 1.0510140956218720338022521360112722 GT 1 -1308100226057520349212230638277705388129663.5341165967330043136796666903526317 0.1317177584706602035281184099548220 0.0991308501159314922494104030434853 1.1043952595739979981102705146283525 GT 1 -21319521593464922.7854388048205835777930015738770032 1.1416966991977851683943676372038906 0.0368796113444631175573867434382759 1.0375768608174284728724034298854507 GT 1 -16517648159486234889900199543962900118.1129672345351944747516277981720313 0.6609433309809610570326506398751849 0.0152175562203529950444571716050463 1.0153345314644967959688618874227059 GT 1 -4098705190982936.5257258837943896200993671361195021 0.9893788219339521113667520026560971 0.0239556506525502537396245294249487 1.0242472536962318629135448161631208 GT 1 -1017863.9859426620034652206814039790991814 1.2681947523687373530213486922449034 0.0327073362945964180775605390049672 1.0332541781236438945345326668853446 GT 1 -14757417266958830605.8537819786219359145462773197574050 0.2841941124644112074862811614938857 0.0655715068541814838467671717239277 1.0678201738523105922048192928015186 GT 1 -3791869503628748012888501740105929665616950.6857712506235579375126374114871750 2.0969385438311195298216440172585834 0.0938351163273830482964890641050864 1.0985339986888480089434218458336824 GT 1 -88613610729957319924075321633570919.5406094133508036497861776533135833 0.0636247866960953975944443193526805 0.0159130613615789069510752007252762 1.0160410335578977962695510238317601 GT 1 -436174929004.5017674049812755057059034833641936 0.2736896979447649845007355419554580 0.0762029625805628877330979592983455 1.0792628879409398141460010978040521 GT 1 -3432377083556020016331488470918189423039.6138102986956337263742785323571781 0.4337135530742452235292120503710949 0.0469877942835147188373038191826813 1.0481275677326332509390736164517169 GT 1 -128673024.0188582957486209542339193732607528 0.0860311681978153093249731266287080 0.0282370694049950064624813199189479 1.0286434028345997214159304158449648 GT 1 -543305150131487457272219810904.2786350148636041922171889013086637 0.2259272476678921488526532168576436 0.0722356956625219274616178370087227 1.0749775608498861853304165728183800 GT 1 -45643738240491.3549234363704530783591171468579847 0.8542556507586232855387415058196044 0.0738091416806827434061006416929470 1.0766749550777848195906206577596257 GT 1 -1632849119432172185809142036315502499107110.3154116574439955079323315084355867 1.0160665101574808111890888752521049 0.0460339251298202800858214178095327 1.0471271690988811446090582447504315 GT 1 -1518706275767.3436761687658364768779401579000810 0.0572076414412468055351790527261441 0.0890912932749727813699137052720013 1.0933125989006928995540795567993116 GT 1 -2612429144034.0387310787835089444954047761622142 0.3819093000794855081622922714223500 0.0749988172838620678901816922697718 1.0779602628584882744769970403719629 GT 1 -166514027936.9614014707731018051361668639066134 0.5909069672581501214066572599603833 0.0883530145894336174439461063991182 1.0925024412422948927119352229630580 GT 1 -3938490.4379407037789799837971987410566170 3.7038929242373820612100511221530879 0.0923020393829672337766061919642284 1.0968435982108843872493577211970818 LT 1 -72103265595437161001454477.7716000363191155460010255784424917 0.4140828654711767236376898006832927 0.0639052005254228635757002830017976 1.0660385261432359815543414260661038 GT 1 -2119690327355066331921083558731626.7573273824910769764236826317260087 0.2470305952714158630581865060643145 0.0082838194118839037425407513819100 1.0083183209121548551238577011061998 GT 1 -8904.1760540793487176128992922500697342 0.4892298181130915980255191824196307 0.0965369895332291931425008656423913 1.1015201100571373037959248019251216 GT 1 -14641527090646768276.4071851254307874848783459831541752 2.0963891634120375357488514496963368 0.0995531053747831698745817432060590 1.1048640893142017099689588167140028 GT 1 -7747505666376733047.0153427143870267664508411934055321 1.7884975612714822764555487245802486 0.0987932759422653674011170505383731 1.1040206092249244048941424734495081 GT 1 -235980423529309952073725954447.9088602693768259950246619042384832 0.2734095379281095443664279145499303 0.0159477053206334735979985717126488 1.0160762383426728487176291954732155 GT 1 -141934653675686487339894016.7216143931934089481352943739860111 0.6186333701257173217478315502123389 0.0586179616073785974504029023489091 1.0604062298735310952318026117953836 GT 1 -131621913082399.6627550764427287036316096417021918 1.0798133909294698782835247820499820 0.0242311960690160498486938449757568 1.0245296018480859656534995865069199 GT 1 -11575221822801539759621.3048937416574245193558724782065946 0.1273859061964107386677109367446993 0.0134446002521570090257469780990583 1.0135357972170493236786335132972271 GT 1 -138960745082287353645092.5541694529114197944762518700157565 0.4815119151474531327291186770630738 0.0218549127709606872927838090659161 1.0220972690002957616588496460540485 GT 1 -5835177264452122218082906253.8681425409603739050494872084523465 0.0632014971370977093214014247668071 0.0148866254592048927776766800008895 1.0149985433770217600325846996389004 GT 1 -121560767035301053113.9206048377730696120910657149236501 0.4061344316691895981436772260963632 0.0905590993173233104385815722156310 1.0949252631433043108958093350772588 GT 1 -624570388966613919714325994841475635485.0609459259463099743083336714063721 0.2186621845570664875343050673537010 0.0799787745752158354430232638702072 1.0833585380912892822202532813782742 GT 1 -12.9795793280062589562284790893502938 0.4217097147244751091136616377309965 0.0994468891078524429908598759934465 1.1047461367692505934076606185825895 GT 1 -6559294082187399934423580.8717081126712855207564830215298948 0.8794787821792895275780844182589164 0.0110999755598423941361945612257904 1.0111620399917037968925153512913702 GT 1 -565154887378643935097135298726056037995.4335446336926282137854521504009147 0.0140860832872771375468846476604314 0.0035851718767686938145381560061948 1.0035916140075013191419501470424844 GT 1 -17521256848111906800191.8097513863557443194404423777520727 0.3495916698188604334976688148248423 0.0082916325585217467539139814698008 1.0083261993531529211073558335129282 GT 1 -4120378108430465929.2331710990860354574227696131404162 0.4288115109977988995646672265154350 0.0442629008431721054075277838764573 1.0452724046323912891639871168796389 GT 1 -219193423437287303774257.9679103611831916844647669033736872 2.2244249979584564590338972528571814 0.0881948819806893610034371924741600 1.0923289981243284475924488480042351 GT 1 -12.0107453576152242645837807718957510 0.8574159552228501188940916960160879 0.0169260946779412154084475164302819 1.0170709782205556125968998706736741 GT 1 -675503783.4660512675202017459996247683165461 0.3244401090049222319577766217365032 0.0656906492989717901986855693719589 1.0679476849907445176730486451292353 GT 1 -678761082969327766503827215767599366.3689184555631204951367886466839247 0.1676543737203464367215465672530904 0.0768532205592501696326867998867634 1.0799670328094721975475099059462712 GT 1 -5745.0998484125205793449913629552944425 1.6540688263698921275041795709574258 0.0088997738080474502034604950709095 1.0089396133463618382236146323150002 GT 1 -1726609360575715485472096204957748047301.2130072050172624661112535257866347 0.0365198256183486383839616749473167 0.0056137555598277512511240658690863 1.0056295719060793079419583778847766 GT 1 -862534934971582818.9037986912439158518173024493479155 0.6598430781028179660770728984212093 0.0493592613223778780533940056290114 1.0506190599687504706672825307605540 GT 1 -20681781139852934220709064.7736781563383776730945087130034932 2.2482981633819259092990414768964701 0.0694105193348741964406288088751170 1.0719370434554584362495068385565859 GT 1 -161270473.4244217200463029058844953120379147 1.1624619842252483444765280367581041 0.0332220227285452706758161528024558 1.0337864094033023285587745668194747 GT 1 -68701657.9833250506708208202824043144187707 2.1778489216344042473684104418134163 0.0580147260232781865413219457601689 1.0597656372490683606667704285251018 GT 1 -4480423232485733999862067092087027915903.6885638704414340365204445608145468 1.2643527883826848478758190982194371 0.0553361111630613869352475770964411 1.0569260879435294881583657402756174 GT 1 -22354206969585815.8817013737750411912232053852309522 2.0748933858484191500124677295379194 0.0604725779420196194921790245828232 1.0623782726269761243766787306540768 GT 1 -526531681993850.1992928299220029793878800150557640 1.8449929610041536796926879189394566 0.0194428751176851119835845161038816 1.0196343740715862045936737638302347 GT 1 -63558963803381884605833782.3264029252730113155523383196209282 1.0114635290647195752489301866418027 0.0005365962407896913792191133554873 1.0005367402600749486925447612898931 GT 1 -34751647931806804488929689.4600948962616387142689441750035249 1.9491945727013060640752897423283162 0.0155359841512555794591579597271393 1.0156579322578520241486446417915178 GT 1 -53715126060084.6028284984085358955305762637610869 1.7401238031473813483450330777380519 0.0049762535882654972399528073390240 1.0049886763678898481305327404038589 GT 1 -322531579947531798266928206972225704540.5503455556231953553053027717183183 0.2826533086023660665414767401755521 0.0937104701064427574239453866596145 1.0983964545716511008130434622996348 GT 1 -1314299.3634900877736888595485212546403683 0.5855219286786596614644457976461649 0.0280121174011856187544790728383353 1.0284119410615300831986863606878872 GT 1 -532158882678079684962472.5785439339491131641923986248211909 0.7258779069258012118288450748026049 0.0777973501783922948434796741967670 1.0809902858438836915537894611772042 GT 1 -38475199604487283079.7413428284664704172750894182785291 0.9076014283464126796867997253344385 0.0919104450348188574235058970682956 1.0964122764280668821037520935636664 GT 1 -7981264857435460739557024202186005.5448875791285645751471154517006043 0.7702077225950719338183543283476976 0.0649341006349883474471920391123828 1.0671382715728006079004792205586021 GT 1 -7638286739749682782597196666268572538266831.5519868175956104178604071090530165 0.7950299350953650541274268458309964 0.0341824804187562506713950259783431 1.0347803657390681273026803584770350 GT 1 -214706.4975869446228530039574496715871169 0.4232268756544822483036115161780608 0.0866859288178028251398059992909537 1.0906754584370263268432375511655521 GT 1 -98342299571972462692661391938933967220778.9049632984047054639955878506086340 0.2972463215766697800501496604737938 0.0987669244817692701703996471111632 1.1039913694572448695993722216046688 GT 1 -2355668745091022410804281169870378929.7514792036328374159773942951004335 2.0845869761013157053904607009690088 0.0620889457270806550706429943779011 1.0641001593410304206007723178615595 GT 1 -25186363017.8656148364737301516265950312204194 0.2955792203884448207998860820854374 0.0961261513458070891568527034285962 1.1010654762765831537054586507603589 GT 1 -49175317244729.4696231822799979360215027433973673 0.1554421939364817018858185614875847 0.0341087123280170948257556590077961 1.0347039897444067902694543405402808 GT 1 -435604169981083078.7675703459883477679714997375704977 0.5560619514290978769426145710076740 0.0031385292571378365977617652832259 1.0031434647696258059783772439404138 GT 1 -85379902578592253754309203571160.6763887854228018670599779221745333 1.4870018180999149122429795952540687 0.0258708148716123538252862244188242 1.0262113505326197709615022432999146 GT 1 -162576956220615802469047520184205624219432.7396127122673123675603615641978692 0.8732529890495061743288190455484377 0.0744335003463630206044770163670814 1.0773492968717049969737671896918253 GT 1 -11846605708891658881527194275097429056749077.9458761501130699656625370787565302 3.0375775666161252093474383006109617 0.0454796202145650007234383062603003 1.0465462847761346796806710654041627 GT 1 -3186661227011365864724848017057197375358.9231018610690729921077720462664951 2.9457911545773176981416734431353994 0.0119749617051108559288282485933478 1.0120472391516485739983132029693313 GT 1 -114.0153433990126034012569018266788897 0.1048372670830192457615503172647015 0.0223710364029033038122335640816488 1.0226250637562450651190331464490074 GT 1 -79872338013706477744597831982244748571530.8604367407784160842943373967953744 0.9098380828281723091807714353959243 0.0475634501279803796063615900693179 1.0487317885077034978874080123470127 GT 1 -17825105949903101.1501629644321848424549344853400759 1.2517551436195557998884171617011381 0.0770673072517116076702473328748004 1.0801989694044523739779119685176479 GT 1 -56722441358.0484812343337077097161852292100673 1.1359297753801580138530651555577386 0.0120209736711041917039140016559225 1.0120938098716439421216494539945911 GT 1 -397312978708351890474446391807672380.0635304082218165119006317839346541 0.0575285923478809292243810187879258 0.0786764910607679170531482916840747 1.0819440460548152464116453856707366 GT 1 -257061865.8063037659510317680479825788644884 0.1572355303864077811549188385480897 0.0802093226612149278034781009076843 1.0836091594584622364411951012840748 GT 1 -4223537627889882033593186406704033.2334075153682490827335613464472165 1.6889183891505308907940012552321055 0.0002853587077390940220005889195731 1.0002853994302823410807743806479400 GT 1 -1120271331528402783012868089667105663067036.5904727952990204780803832563963289 0.0324618398096805011820785099635486 0.0334145495160603084288121543717440 1.0339855719460374533340384142664609 GT 1 -110.1564062728510692870013737221862495 1.2524197489992766265298569787788156 0.0114233351630542817389859563777362 1.0114890826393844882251614907015576 GT 1 -2150894130260709976669573511962566.0143979508186923101787135437861536 0.0721983954056690409462941057273357 0.0974116859195621607997212697989397 1.1024887386258098466484519298611848 GT 1 -6945760740780146727649487220020.7535243611362122633636920555003788 0.7003919471597490249144793244308877 0.0468269648508084928108056534794302 1.0479588229226956615571968127925987 GT 1 -35451022613849161.1806098011393166218842669037988034 0.5601412541214962752981329360533857 0.0497483741488221597782123315900863 1.0510284601422059742651196008474645 GT 1 -84615405546033709333879734169020.7595456700152030055020532788756042 0.0824439517406356521765333354662301 0.0084321639545551464363901650081528 1.0084679157676609154183993657745227 GT 1 -809.3852126874177939116419542500919223 0.4462194535678373273001228010195128 0.0614060495727697314966447573479080 1.0633723209577088784914552556238594 GT 1 -4954017913471552593033043804964919964260.2711767135995090270259499588188071 0.4024663120917309189008299993949214 0.0029668118057445415968593039117399 1.0029712215159030930677789514971146 GT 1 -3653693220279021178533.4403602566164938616159044240009065 0.9853589730203464935678726361356271 0.0369657242796631377488064560470738 1.0376662751690898908071121239255786 GT 1 -74422336659477155779629056721489641082.2858678208004708045919620903594333 1.1115763468682307464047475625272196 0.0611661217267027887652918824551833 1.0631167288718717747974463850052847 GT 1 -492394351481646280855672.1942472008355234452745275642743041 0.7756414041336026455317609190916211 0.0401220034327302975547239404398685 1.0409490895055746833189263673987485 GT 1 -106301178589217858351534683.9814876231268109482710865270620520 1.0665741818621354212721343659956382 0.0991040389433320241640619851942413 1.1043654985663742592093108884916389 GT 1 -3024.0854519430736009259375152074920763 0.0162791809416613471962120329140252 0.0602760077109943223521045670339625 1.0621690720588759709512010545796018 GT 1 -17410278293.3904845012294125129865525515358481 0.6079646949277329043200229676068987 0.0261924978133143246220286121525165 1.0265416312308796323740447731964214 GT 1 -266.1584168134411913530816719841579934 1.0403492996691804067867067752876801 0.0554231967219846198139721470637499 1.0570182790119818860293957673278551 GT 1 -1759110555811634700760128996110707407437.9584422260405838885862674912266304 0.3550876003335836818841365854663372 0.0269877760748918729440689585537018 1.0273586337454399112022138243776927 GT 1 -988314889798215717666738.8134286359275714397558564267931893 2.0733330295601216282476088329571121 0.0243394146209282325056482679048770 1.0246405139339815067642401276907011 GT 1 -2190180042238269609476266336128.9456368630968625879504390038057615 1.0827146638484432440970454540852900 0.0378861330543837925219731260519008 1.0386224705126589084679507611925871 GT 1 -9877134769.1703269210880239665895914640569619 0.0386893370527045512101942087481227 0.0082714515396405257878107244554397 1.0083058498086626277091287371945808 GT 1 -2684055465123887993914225552.0548693681373299121488684438494314 0.2297718194290177161845317295242157 0.0949541719016077087072256823635377 1.0997696977815568945136571390925675 GT 1 -4132382087418977130708.2076038377061020699234668926409555 0.7542290801448460246613128435710577 0.0070435796407995426904365801059055 1.0070685027487611109509454342744470 GT 1 -24449118843598302415693809.6410596274965767594778409102173900 1.5858799245525472427707424482164349 0.0201320989333853924502662429521574 1.0203375112331441120995958807599310 GT 1 -102583.9779250070108646033135015033289927 0.3684598962632323506535940247278522 0.0443368443844681486055612385985046 1.0453497757022635560029157750343685 GT 1 -31657.4393720730965560006171664000622144 0.6319160080793021539181584879244377 0.0649433042815198719171950651574838 1.0671481143997423227857412379066199 GT 1 -987252689884769710726510821484605573693832.3080389045362759241071340629510560 0.9613297635855520504156050234216267 0.0714026378787572630749664011956098 1.0740800441054520401134719365656842 GT 1 -2000272313406.1770171252475120850014357313531598 0.2119306744467762053647844573225197 0.0665626344406875568306054528671785 1.0688814145992378001012600585592068 GT 1 -1907763290073869940224291326322713.1875275831322832671476674624708884 0.4065441186291363939389219719119661 0.0401996445341696207509667542680572 1.0410299792039967439811170270897082 GT 1 -48554127575154162282151907726.9134899052044127711482300937936141 0.2495651432080360606809995444957300 0.0854248428890388257870011795184611 1.0892956306998434320633963488551784 GT 1 -13258924.9478575028434138760025179000924132 1.1634775891240504964369202924459062 0.0120539378561235664685402198141636 1.0121271756963047460025865023281081 GT 1 -26059272980252674247769378230809.6117401758902754863608900183829617 1.9710387137600759916920176046982120 0.0363665122155323120899891787394623 1.0370442560594113423940404458824006 GT 1 -20791375424070893203145312838450.8345035705394844437257695671423026 0.7935306528276563455965046379385818 0.0296535041344644708424508506452177 1.0301020590372977922215469207952587 GT 1 -9755544025.1955979576719876762860196689496137 0.9283616564986593753240330263344942 0.0319511037395170860910465778978806 1.0324726803154936440969466606874615 GT 1 -10916181620246315.2269326796711834606642513246488909 0.7204065796504197781261261793955405 0.0279988159957446139808846631130845 1.0283982564110660193712338868200216 GT 1 -5363086452830161557649.8515815622190755383174631315492618 0.0465645473466267601868298616487252 0.0805054611783038816991306488146585 1.0839311742466483942578736085534414 GT 1 -17265121578586385094093394988306125.7535862081790175591717707318623692 2.1022315402845299040866691603636035 0.0232120175945110481560731612680810 1.0234856592860086671649115654940276 GT 1 -18926374111878996043329885286373261.0018813162167498823968148578234935 1.0045999965209578997289894623040478 0.0441262483459531264531608042428259 1.0451294335905667608211206826456642 GT 1 -4475.6649027379318545662339265576565321 2.8210182829549976596012503063779241 0.0271503381501742497329625304602720 1.0275257186519782074604159195102113 GT 1 -57.3583675947505972556505449492552655 0.0384396440822551816520783441884036 0.0976506023718109681823841858104964 1.1027534751339944082003055563153183 GT 1 -704656027597676355638426628.9699195707953981467911702536345304 0.2865632146464599457253279343242618 0.0596476390384949746205846249230075 1.0615006218708710541394899263965319 GT 1 -50910381575604554365242509505229349.6735233827612502373431143536339664 0.9138811409040067321327460626925760 0.0762083347804643542125471308744078 1.0792687033043849449010779945121521 GT 1 -2552029504.1293847408922091795617281784046620 0.0977397466562749994531654487894461 0.0912436953926454845466679773983435 1.0956783124887573390743422411852963 GT 1 -2507706654454960673653015031272.6898741887926851172711187735264613 6.7135104446940079793363064657628215 0.0222802836821870421288361579194811 1.0225322386537826488756064119377585 LT 1 -906681700560491389890222.9635072027114932181298732105821770 0.3690478158679101491295506260028672 0.0193379295059919123644833974549793 1.0195273532836592047292551111989064 GT 1 -215763464.7605062494601177450704216950576533 1.2659593133298317552635878811321655 0.0306947585218628812346798450727949 1.0311757100101758878387615568688173 GT 1 -9154420907583465.6116276317267038089077451404717701 3.4888366751289518555542732073431738 0.0280101193603967745299403783781554 1.0284098854404971384098129993803795 GT 1 -21861239918673379.6328378382441238540192618082858935 0.0401219942730531071608985484191125 0.0824505217844259944378257040196556 1.0860487732969965705312300895870910 GT 1 -23913065705346112.7798914537571877992019665666167748 0.4454488013678452214887536164654847 0.0420675007514241420496234802256667 1.0429779635682596412796080764390237 GT 1 -1287786137769.2270938416620381117518980130055312 2.4743639015439983715966274032548566 0.0103366843180915116791185074296123 1.0103904788653667287908910914365583 GT 1 -5720561738983934491.7952046486203872215523186854587333 3.0269085044815088338797692719493629 0.0906448865519613251908528153695922 1.0950195972346868831823361582092516 LT 1 -22597194091671772408445648775768847800.1567734840267403613100371880976696 0.2767452565298185817258293185800872 0.0389519829214288916499872392878243 1.0397309055175609245928983315888328 GT 1 -12950947711677890.1701637994096277434915339874062709 2.5947346797242830865273405097391265 0.0641628241499618512651016200434408 1.0663137750620657576588671819951894 GT 1 -414449018152376294771600905700059.3400431956310933506261156164923719 1.8034328757815788085814774687573063 0.0727114557612494714325911924758682 1.0754904951412448359541511858303671 GT 1 -875394.8441660166405000263115912672899274 1.0470354929447748771218264163605286 0.0513128814618845332847552127986219 1.0526762306894908533991659383742362 GT 1 -766041578198112268866486.6402964326342337613626849924544289 0.1618763199575071591040696759845836 0.0293347725323093030856223652398284 1.0297736410260220590571209059937250 GT 1 -6496.8832070928462505252688528710416803 0.5614718698366449093592316451691179 0.0518802469272073677506935740283074 1.0532744628982995437197247724261898 GT 1 -16895094988.3144727657723116715917884656736923 0.9574237999252485284676735886128649 0.0626067622264162208248408359348390 1.0646524073305347695462289618601839 GT 1 -2259520662091895534.1146707048478118423056619033132213 0.7363936337097362747634137350017716 0.0949050807921105555958254779700288 1.0997154576794187128880987954472837 GT 1 -53594883810480817271175597435339734590.6585145848415530425079602735205400 0.3612897120685474820093209311994719 0.0024236689324394630658415978170351 1.0024266107723117255667264837289645 GT 1 -157550754104623874438018385950466261137.5380682768652049000883037685628870 0.7051112836065221876686952929274255 0.0223086334540009295926684123660889 1.0225612348807799449342515387601437 GT 1 -9379522940723951985.8846522177181316881918169889693363 0.5300761248727390206502573641237099 0.0823948221877014125790213129220140 1.0859880704057620569806286285293368 GT 1 -125302178513560172491254536478.0137519560583439783766104212581445 1.3431855758996418914600014158766101 0.0540234502447460405308544153585964 1.0555374990797334606160762946765205 GT 1 -1125443079043638923791612058150848.1221095289062574344461387652916073 2.4961819399399430977976389397515147 0.0961305288663264204398602402082464 1.1061779240812762064716838923631695 LT 2 -169884693018187105446278303250.1754877102854569440310258112369665 2.0568272869110937097402341627980720 0.0237960370986251059016954348509846 1.0240837360194288208300457878315351 GT 1 -5180910451812268180453.4073850309040798550016606023109930 0.0216250863577735401317876270815615 0.0670528782210912432617616628303763 1.0694067552190344847084381716388498 GT 1 -1387291231976039277.6075083163342106904221178000188984 0.0085021628545239703401762248880069 0.0159012420435574568193641992591985 1.0160290231891180203769875132240513 GT 1 -3209.4931756123974970440034615197265933 2.0748644502097033463376502573936734 0.0982351901342678622237356786900099 1.1034015358615119512915264688597855 GT 1 -120912117.7836508010912328454047291101877082 0.3616051464990534499635548519740902 0.0380042703850303526789627855035039 1.0387452673959613824645590983867381 GT 1 -1.4047315177788040727156246128829771 0.9952322929030800198448704828853725 0.0780476117787982298884923807448918 1.0812616964322340100851649561457435 GT 1 -2593490014327209456957138824022679877.6413401912299696226919630915921600 1.5543073446338186868162622720688051 0.0729161378506726436161510451399861 1.0757112513275958670203859882145084 GT 1 -704798971.4229313843305941602288713553932099 0.9902951585410453588651571032456506 0.0684128153548485462822503546407763 1.0708654973512933176033882463825486 GT 1 -1266235343503118636.2165541025377073332006241907297443 1.9380147391840192413837698205877526 0.0377474294940600064733536293394549 1.0384783154724705463192388437810996 GT 1 -9564070079737024361006.1585834973901293095560797267902541 0.2633385797480705499617303627764925 0.0553747075219413604626835958123259 1.0569669460178434253602509431100224 GT 1 -2206064950635.1112536674106994685539139803340973 1.1276820721210851611930342634071857 0.0212927820628517964131461532408848 1.0215227435523739580243552025415112 GT 1 -744098695608085607691642850.7589207069099468414100394473888626 0.2571979503982268803410958705589777 0.0242777346206022343332235764652290 1.0245772972255610494979492551940811 GT 1 -46074282176410292131612.3835904532390110652387443926828773 0.5780490122594632491003898790302363 0.0897876530556311415590407718518466 1.0940773584022037998231837108141235 GT 1 -235607653829312456.1476712827763289057069639893241755 3.3519624335441958742541522965246518 0.0127983347163956291177095937593246 1.0128809389568242503373675595407581 GT 1 -197418367208871688474654.8822525327919803285233853057264693 1.8643111323789618761607870257633176 0.0856055002639598676211349562334912 1.0894931816814381891861588015185480 GT 1 -548661303757154309.1978545186531148024559914616984891 1.5894293258838361778236207524865482 0.0517668784462071127672502750260864 1.0531548981457134664174728204683363 GT 1 -2770981329185434332368017880801481036789.1684892036653775698676014414393477 0.0729111973714825809175887783517389 0.0527616454748939430435155550185704 1.0542045231414676853432405658249608 GT 1 -161259460629822825175.9138871322520242046528807441722559 0.2733641783963329549256770545229430 0.0297372656805521451113334486774372 1.0301883840375470241426207265631417 GT 1 -4023954152203774897907241826256.3999136022470246437585032176257871 0.9544607774667890249638934820817242 0.0571590576475118874273568854272781 1.0588576825239734685455107700891383 GT 1 -758519356262353944263.4556945681385198410012528712567113 0.2645171466532493309450659645721406 0.0349196271568581970268183352851401 1.0355438931910431900806328930116346 GT 1 -407.8006548378226869809131123557076428 0.9537958910432817861272974028428078 0.0749903758182480408259315621334985 1.0779511370030255808799438750397414 GT 1 -6797633901855645636060182.9952493831293453017214309421423138 1.0905359850791849597863778095239843 0.0386900353409715863451559348375576 1.0394583781479793274121463797688602 GT 1 -8521108149989090701159722302637209225485.5914062027329247468852428838680450 0.7496794512091067750345455219693278 0.0882489254718184994609850744753365 1.0923882707602535983360326539085208 GT 1 -2.8771993509300816707787813611726375 0.2529781176839529542456944690675563 0.0736062513807482185348170906300340 1.0764559202223878886369859573175925 GT 1 -5536402726760391236298581718710699.3996405046616164503024592407806406 0.4736034114303039581967862647582831 0.0248409924111148004152296212567305 1.0251547365746060505773915835380834 GT 1 -3414253345742782047552348820883.5517343687142851906245824362698155 0.8758303759661597266941839734569711 0.0007404302060081847066079062339173 1.0007407044598387392871022130346676 GT 1 -32218893712695839539878338280721753.4179120962390754704529175544308035 0.7214906794945062249061155643675518 0.0796765461139685079041384396530610 1.0830300904180224587959696001793134 GT 1 -13904131531611.3471511812931524914782842319958660 1.0562343945346717372780331973907068 0.0731801367450179999900259218209306 1.0759960545700859894269106137683856 GT 1 -28292133636474875875304379829409.9125501567060018240286683589885533 0.1946492844470885158317955277042001 0.0211747414109242791742423426938696 1.0214021420773168894342506162603777 GT 1 -1036788621660446196997759358875791255208.8328080858607595649751309526321771 3.1765250347155956519464686457910619 0.0539616106532846995870701477915089 1.0554721300488602548694981708688742 LT 1 -4624171.4652305765091052182415177873544414 0.2458000922886680628449114760218120 0.0966817169118905144506233492858251 1.1016803147033633107028324697242003 GT 1 -36598874400555462810236732610944.7699121474270381487636050810395715 1.8440659448050709242112636075401706 0.0995429259021355742366007070527383 1.1048527844663869519893326887067427 GT 1 -1071612104369829424786543538816616.8015720587197125992398638281785080 0.0821718316562946848723898120833029 0.0856139481577407838726460978885527 1.0895024205086705605320028444534072 GT 1 -14.3743165222043866036637561643814990 0.3666036978959584160215025767123690 0.0281452359062063841454570597990763 1.0285489053425179116678279807359158 GT 1 -3679112070049573767885231.6491531352256843238578518162605338 2.5315931867164413794949457535431843 0.0781822096567125900559960496256966 1.0847213060659941927431910304945199 GT 2 -126238171253696653044475164328.3673713572822674968978756865838339 0.6072957350517623872152175777022704 0.0920542753425137832946208903350697 1.0965706767737094446287996783356725 GT 1 -3044932042231671077988671765.0205658485045969264711076503349810 1.7095959839980644625397138724764737 0.0202407717347258395267851841660926 1.0204484229467300534531648254984917 GT 1 -53179249349845881.2756813672748673071205011173119945 0.0623765291860393996467637877100209 0.0142075024262367444191717884643082 1.0143093952350891935896549112511434 GT 1 -128.7203027656861846807921790024750972 1.0998439245280607442539452241642895 0.0876366154150972728093696236941888 1.0917169202573724643877333253362443 GT 1 -14372824072422658723058548699880.6453592736885321646525894925722033 0.6340421391755761436106708729008204 0.0466880447820723392972696378045066 1.0478130886843628715507358386286936 GT 1 -8286763288010730766782004970156286220.7623955139645797157000988880256037 0.2159640237496028226195292665887006 0.0318123737600530361122920374350786 1.0323293817276513988012443261779077 GT 1 -2442803447255444478168503534819619.7229923115509198164215380390305107 0.7139840197111937788862808668361623 0.0888314916811981876116107627589616 1.0930274281149652654594302211323555 GT 1 -1078871561096220046.8833929843217636183777206476003683 0.7282305407097995099597278987154527 0.0986848688145696402080117672499063 1.1039003253820283003405213527226538 GT 1 -250474103230996758.9837189536251655077573835213571198 0.1374242504775497418836667654809193 0.0777904707300523322691784307469341 1.0809828260706096039014339200823621 GT 1 -62021776910599888256657.8373798559052175509236874499070244 3.6162871495367194503845166049515298 0.0835093239752649600878849338046112 1.0872033852132271259991149357327257 LT 1 -9871641189053764907.6103207339265767783925985972430403 1.5503778791325198547907559402943436 0.0939203115437355305708559583228651 1.0986280204535981859145573285168377 GT 1 -296664781661167648.4824552716449030135135467989004371 2.0693194589871131648784306594931493 0.0850841170082637683967391190885194 1.0889231490891159344251065591440571 GT 1 -504505644323958263180391565693884942553901.2894029150633399543472952047453851 0.0786820689515080658228341470186032 0.0791770370393391305101735933605678 1.0824874838308283619036181274220854 GT 1 -1.6465677159215649016882122936857087 1.1196305744555626019014179068002079 0.0063740981153915808635762493135263 1.0063944994182611590892689234668002 GT 1 -4086127587240305796202202893339283796204.8848004513013721227327290262346738 1.2467315169521485675006911246413227 0.0591811120522799317720541061576656 1.0610046255642617161692920066261251 GT 1 -6033441662296.3316609533850080072861305170221989 2.3514324890128260548378145522460234 0.0142130268799226373469907098688015 1.0143149993243668763338011670497321 GT 1 -414216602968356105850952224942741111.4684360649745468713287869905628608 1.6842052910076509086433687586756780 0.0274938631745066702516623073849631 1.0278788931490414822950007790099764 GT 1 -4863363598089295.3299561278785873849864474704383846 0.1145254061627013495380606739771866 0.0279940605592738332412318577429168 1.0283933640046407146119806668151091 GT 1 -244992679358902068267538635038536439.6581186732030072301714804613496701 1.2706547590786534223927733193488019 0.0636764381546845302828886913008790 1.0657941765079169847705063408654301 GT 1 -717634083219116006592890893815886.2599864537703343118535597536068244 0.8771035779549879038469701264362777 0.0064187064296369699201278086170551 1.0064393949020888217616961605606665 GT 1 -175784241888609.1711944238245916675962893090408303 0.3252979791853819113779241679720647 0.0789532723155850140892354320519792 1.0822445082001510179568223743745317 GT 1 -6310367815384616123833286469821.4280734084923649352281618492699513 0.7804187058796218248779206565032978 0.0995135543053221613959504857094528 1.1048201664564458069262898993046873 GT 1 -675745510839175377003942158648103.4378648889801437617100677368244575 0.7524572272910155066172441476756036 0.0663453011040169531924190435322099 1.0686486105058675143998288137092052 GT 1 -553618510782850120790074045422838.8127552417222227959189992307772783 0.3791225705159914408680328096248957 0.0733616897230375731245203473716948 1.0761919618543105567089865996265056 GT 1 -367.1051451064111459843575519836588295 0.5808948233964313162406707614527344 0.0811162467354299886242289217736133 1.0845956572665242428008860435476082 GT 1 -2860.0013582954647134541267640071221198 0.2033298720551223644369803770246917 0.0693993774937489257697498707010139 1.0719250706418200888118334163652219 GT 1 -1785158580131736232051698097.3097247767758978083226910316422615 0.6068380124813965487298429864400640 0.0056269124058355600126707038083941 1.0056428031159055289312985341754276 GT 1 -14213160545313040004855555129583265.1009322404987017945513320018947928 1.6004294818441304273599152313849853 0.0839010301640127288674040315397206 1.0876308744720448653777508799556412 GT 1 -53184956.5387800714086354189064900026979833 0.0458954006161671954948198968165862 0.0932252557257238769843312941659512 1.0978612122206589416201911848419163 GT 1 -71688587256253005812880464600.8187704834624739157890136287621985 0.0831051845661730990512574434444511 0.0395424575179854871085146345863145 1.0403455013090799369179559705418147 GT 1 -186658549467256.9373893926106537356247646675646622 1.0444089247330377575056322832357722 0.0555074847503686332467039418494577 1.0571075166356236089271964926329521 GT 1 -169325.0890900300535758983376035376435233 0.7852346107325276930628279943865476 0.0023351269005815055736403787923534 1.0023378575611900200302858157332472 GT 1 -213562827766072943416.0803450924331461051173009612178255 0.7972739628225857855740490975891244 0.0467696594458770867358657577417665 1.0478987040562700031910296629093616 GT 1 -2626108290585361461430657375.6942311104121369434971841165037935 0.8641133058771107083410913753657181 0.0324034019897509214054061837812802 1.0329400161575210346637838494920330 GT 1 -29501.4479870436789659237921138987756077 0.8256010181234985628678963852097195 0.0605613457018799170022487983411529 1.0624727583774570332581233665823663 GT 1 -386455121492660549347567634812602442715.2346451714765769786160353626510390 0.2228452184853455519624719258749976 0.0587955540268463689880027868521880 1.0605948984117038807393403800683194 GT 1 -32023088970707.8276567364699720461789018113684512 0.0853738696971311092862113984276446 0.0163361373907769823003186063132718 1.0164710433289003220952289574157071 GT 1 -2351783431656779799673756553.6774833740117987000924976771672037 1.6326064487537119110541297164091553 0.0567249290919899656157573351924407 1.0583973412086606860751864782762939 GT 1 -22786169.1953936353081930466235004685921829 1.0358724516463663819605750487447638 0.0505594309858596665083238909350632 1.0518823425643259385233467277796863 GT 1 -53987644540638473060122414431.5311830464157400158385835557250155 1.8148395533856119584585134715950037 0.0530735000790801072463285965635098 1.0545338024080235018826761145443910 GT 1 -516210930662263236638252342477143.9798839055771819208731462064558008 1.6675263566352219706890852610812271 0.0921530514270972612243134236537567 1.0966794734288971563183447065767040 GT 1 -26601883194718.8537867162706643886972298975693133 3.8405507406679750425465592723590033 0.0581832216618398879276089179183346 1.0599445261496340938245429863713189 LT 1 -314883096315521195809.8374561004784141477234307863586176 2.0391770355138964683663431919285414 0.0340902429961093831346895962694973 1.0346848683840998614570277074537775 GT 1 -139476682081406578.4962664943676763103850317921362798 2.2476459633297928052817818073393761 0.0762118123263088510976342547997273 1.0792724677379914873319005099752085 GT 1 -12424880620693480839630534331015.4770192453888511163383007991833399 0.2803000753005226942011643987728333 0.0990126642486910795345999728020077 1.1042640772424948051447109195254886 GT 1 -240785198404084994465595584371504223022653.8891888421115902935195253552755621 1.6980437651309289239892656249197332 0.0486981171063917015441200015954528 1.0499238294869075657092071354377356 GT 1 -16769796.8284037159330941977518197332120992 0.0018753801538444701504936908426697 0.0850920743065214744497748818987182 1.0889318464273186478097877555850281 GT 1 -35864863335988390365553664822794188.2289640751974631935234751690349871 1.2314469403843890539042717458916269 0.0901632654571062798850568881672793 1.0944901081578320630259923450313150 GT 1 -24.9872816397357837487258071607604710 1.3065347224308918480318301183104321 0.0533520199118314626430516686845251 1.0548279760333023630624035600224239 GT 1 -469374149862223776508691.5337868895944898075151846015846427 0.2608253221040924417236458698923724 0.0253984285209515588422143457473941 1.0257265361391364479824114044109447 GT 1 -1087344373840414171661.7534588424765700816866769332347551 0.0194626723140241459418736981769115 0.0556770017273217313599159722605677 1.0572870121725827613480828446889717 GT 1 -3.4065896953170786939913461023623146 2.9195577460136180705825374868770216 0.0023649177998341728500290699812736 1.0023677186346348976384727691253678 GT 1 -1246540098191578562385545302158781517462792.5356984434224556310517387460756754 0.0267560197982061799751714635533825 0.0690395901665347224251695743787084 1.0715385269556946496472134338704201 GT 1 -81547743400768966033.3758738002423679529576601148007694 1.4603887627457191028653269378688492 0.0307314212420871403656149260529147 1.0312135344353754048497701526671454 GT 1 -1062702379368567253946552384797375194670.2764980205038544404233066272167488 0.6633122398370309622192664572728850 0.0979596678286170828177103189409167 1.1030960457602004961424189411172339 GT 1 -974564225747269752.0466064326370641329122103973014840 0.3424533623095779214378818128197843 0.0799704304579132624403586150101010 1.0833494686489396970511287604873005 GT 1 -235190857335856896541428260.8721338808254887394891321134445567 0.1212779647027728951426665426430608 0.0304786902096633175603612935994449 1.0309528243549813182751317003596409 GT 1 -32.2326377466049836428214255815505012 0.2748053101665083537093521136988731 0.0405088502226096825147868875167882 1.0413521873628620888701127228945992 GT 1 -708.9300786832669576051990470261944813 1.3595601666777474421826319751959642 0.0986597728208529587972467247567631 1.1038724820190672620697135419453580 GT 1 -90872520049017783.8178262252669914890147922048410962 1.0929309757794131573512181347866391 0.0250509475038235870122301381766629 1.0253700631996453340816707141165510 GT 1 -2.6813636894033002373595371381470184 0.7732582256265399048007646417801936 0.0849265012577047101744490546417465 1.0887508904383040349964738462139162 GT 1 -1563562219402426493.1068894926406975231395774519850777 2.8923069884338514844416665953581196 0.0144806327939802721109252011535609 1.0145865004200892181741243073570497 GT 1 -1474732695018190932199138419282077.2455000364874380797711483574609043 0.2953379970635884554230624891660943 0.0836251594468497336324836217799615 1.0873297834357822305392684576605824 GT 1 -311257163523751456161846201.2321841964383650295468102359019915 0.9833937950481432319702869150222142 0.0113825359565975273128593021091879 1.0114478128360135374048926043136528 GT 1 -15500608250605498260232223677341249917667253.7112460516520268486323542565825923 0.3007995704237184227627396248380388 0.0861468658761401955548852878786276 1.0900854052051848831131296030068398 GT 1 -187335115426518865.0145441232820061003075609073975248 0.0635584524202661427384419829681170 0.0479201085604657615847954734050109 1.0491063281324799608666829844319623 GT 1 -121892108895225.1156062392238843885510866154925514 2.0417569926944310690113008683786396 0.0993672041267007007354363719886323 1.1046576561955303310997508085827767 GT 1 -4976367934889914998532111164526788898527075.0697584223943379011698705434984587 0.4594450743780514892869253003306643 0.0889006324606806098711159963812928 1.0931033124351923800552980547280728 GT 1 -21047780831342229835701007927718437425.5446485885948866959313528845988033 0.0277747653550681214110727501774472 0.0420723252696899114682173521257839 1.0429829999673991045606554366619066 GT 1 -15.8903989188586532058246940595813286 0.1095817664748250012982944446207216 0.0919967601865879430450981885201997 1.0965073323107643311765427570984321 GT 1 -27601507087215385362053056097338087914796.5061651685169078017552367055982685 2.5470512318663301404979352092426588 0.0563702444140135789012474096874324 1.0580213978360287807700393469203478 GT 1 -22616786035628222548910690120472857.9018940384996913331028865219460284 2.6283974350127006850874680545476832 0.0631373351579610771240821809208809 1.0652185764912958304969716792949073 GT 1 -17536865020806475790551328906174129354057.1613693124615288338998146421280589 1.0387193434504832127169185020393830 0.0737264882398865002812471611153504 1.0765857188774172549435441685908447 GT 1 -6303060453310781549682515.1767125789468063664085779105017954 0.0965447390773613710805032745020818 0.0036376339471856235887743034427339 1.0036442662263066845293536966026660 GT 1 -186.3593448234060058075061908369704442 0.3206153843836435806429393153783096 0.0738323388645935508424178173771517 1.0767000011837825382259877573948218 GT 1 -2822498956827752.8216127308621872645316996667017325 0.0396639243069207623871514190210499 0.0018020371145593325674614714958200 1.0018036627366882878453899203809641 GT 1 -118778964063464.0199213960978435116740340188510690 0.0057049766068812966987008961574841 0.0358500119727646319672046712012654 1.0365084072344711502487842718183430 GT 1 -42233187.6742919315709453687662483000876920 0.0173968594685463758741465284518632 0.0637791170018575410163432112829122 1.0659038442357604266971969672584274 GT 1 -294913383331218977020827096669501356188.7861422289266272078300652485505663 0.5282749353068623240756584304354168 0.0059181397148959313274571366814350 1.0059357213049278880680787183823895 GT 1 -36498252280992281038400726496.2138535368875941257558570267295301 0.9537687896317153351608100921054816 0.0220553368481686035060608513394625 1.0223021921924655151627896184718080 GT 1 -231637727102536623999760899326301959727.1575396645202189448946680898134276 2.8495325028052228130175384181704085 0.0571017618001423253972071503623257 1.0605254536101766171473379843083937 GT 2 -246599508198282583456703.7288182466709269294366837960299471 1.0618112119666863395681666061003733 0.0091570440026274429969031511310483 1.0091992274446235176914536514634219 GT 1 -548428891834180790180.4931675828597310046242720155680827 0.9341637954178784365802844990067440 0.0542260795695664920730056424553923 1.0557517232375056895078044772593430 GT 1 -1764919217284.6549148665075836099219491838779801 0.2227992822623799800326618406759851 0.0575660266444625542367009100956870 1.0592894169091087298910258189017122 GT 1 -86305922574213500312298.5829879929426883980424145182821988 1.5454530956522614312186601025890033 0.0782808373819933271918416682841182 1.0815146976832789633092880707138813 GT 1 -9969.3300976947748393234625548871328951 0.7296457859403635734669352567679802 0.0789321774279791221231824129905817 1.0822216052947873124250547675797197 GT 1 -4639714030957.5994394746090085729341300784527776 2.6196181903047843916176343735080961 0.0228286503820838632485019392581332 1.0230932588802649393280712338699509 GT 1 -2074820811172497356230681.8699074597384312876407429651260331 0.4925481200498868891226289275832691 0.0862490026499022794760165436809257 1.0901971764275294530467576660055692 GT 1 -2580.3491360520971502982427717398837313 1.2808159126649109961881771908849116 0.0122986745169522250637155647854269 1.0123749290794370374944980869370165 GT 1 -10940087478376.8434650913083054040733757044016284 0.2033468645649584238164135041219495 0.0887350351719451040034179385765989 1.0929215734862345970893919213448864 GT 1 -309574181918528207.9264606610383972202053961506472065 0.5152012399811639458667037919076496 0.0512050377366523371595624006505999 1.0525625603403060378096120216768996 GT 1 -8950755848353536124.4462875329278123831048987408744897 0.6152629386461629070462620747576618 0.0390425062687202938347089956296328 1.0398251022790678093674346963032517 GT 1 -6558989923075.6017546843262149591308112791753509 0.3198595183438955865745652978329065 0.0580412202127797257074523698688494 1.0597937635508556699931017223171804 GT 1 -3221481298699364420916679150.2284597531366037438707164277211317 1.1623484599380230322391659258017073 0.0026009034157693018730365463873678 1.0026042916412984040997280923212139 GT 1 -21730496058938883555113528.5671283295823742486610091572839387 0.0004311125786469712379806529902900 0.0583861853013717408138151857331384 1.0601600516285849900311947631075354 GT 1 -2476590675573874585150609577869696.6430181075487047354034577271318325 0.4692659350846669622403179948730965 0.0399694891429986957418804118103817 1.0407902128825870343875870071982043 GT 1 -6260717536402783402684724313936739.7102354590078808214517724398549434 2.9821662207745197365638006705803862 0.0786929735308281730731857152524713 1.0819619362066866767063911282076480 LT 1 -297416077679.0206520525684905713181770714152143 0.6986473339748691685122452859673262 0.0301144397494221215421067089601945 1.0305771935679083158343527073400211 GT 1 -486686101815738001956749454279.4890487719100021769692001193276941 0.6217795871028637788158640699732670 0.0521195924617037921171643602750029 1.0535269370707602358835492509493556 GT 1 -25481617853732927.7841153795337767694733378114145993 0.9774820150383845974296329037478816 0.0409535581087776451093556072000167 1.0418157778560207467329736421080191 GT 1 -189888497781626815844.7399526352323352914043322807257780 0.2556406465708673812123247699867384 0.0415633426578681245273859455077973 1.0424518038735544417334481959505988 GT 1 -171449805459206469346347271.7530500378051650283194282696438091 0.5197353348424910657776184481391510 0.0820235345213221370502155893894415 1.0855835254237396364651066486389325 GT 1 -7769950865442019.9234226793445367946963404401919785 5.4886113740430710472638844773509562 0.0116933435250275719572901701210257 1.0117622483449589532888418604706173 LT 1 -33458686078410586689693084106.0414905551430137389437706376792767 3.5281068614924478842131058051177893 0.0615797930202625416570376177390610 1.0635574484350946056782973219746286 LT 1 -9583983.5432108581061352597388231504246237 1.7492327035295970747633554612589622 0.0585299625217006983598134494237362 1.0603127556310563977818182430031648 GT 1 -1685222902447894889761756.4298724195647254486438559897386742 1.4759286582974331465345847650603957 0.0911031039091203598283275234085080 1.0955236168804295356664201366769132 GT 1 -383452311273.0691949666847792540089542895861725 0.0464063561439395373586692405234858 0.0275509389715299736283800251829085 1.0279375842665568511359255158921305 GT 1 -9390614321.8527401925764095609725486837293737 0.1461784602896803954809996459922950 0.0523045106569275170506423454009831 1.0537220421004396553918766574721239 GT 1 -97159787892925513060031338282064166.3088992537668381748240063282872371 1.3258602674662018864569767990808195 0.0588879743166410975844933364176297 1.0606930968722291313423952050295973 GT 1 -9171474260795461847998309868705917663.8131297815116579674539930610038907 0.7974762555649441172081851720609151 0.0065698801764020379045804654847542 1.0065915568333567780867891874112634 GT 1 -631727162246759002869035564757517.0039640777090712192960716749608552 0.3565183773622911940662792264111222 0.0021089844928062014087701415073635 1.0021112115323471442878610791634935 GT 1 -1970034770680562826.6678075056768121295495008247968748 0.0614734707413775765916034431948677 0.0463680583156909522625015601512299 1.0474774873382462006486627100378599 GT 1 -76263791954105169232554531505866.3670094775189246833072139646220931 1.7119295914641019851986308642397202 0.0821860467443076805716842394536014 1.0857605741998434961668765455829354 GT 1 -416968036367090.7954082372903281313014549382708293 1.3418975767544964807963823795963650 0.0411008048235296300470216359859026 1.0419693241424174808614238311357051 GT 1 -3600383805308260725434.2100201414120811979115998472025408 0.7277588931597129939978992251219617 0.0014442097417493052060151358817166 1.0014452536178100896958844066012013 GT 1 -3445680049331845163574287133972091484.5635049724172708521623171495891730 1.1832344768508412828355425038861981 0.0651888912036633642689493534903865 1.0674107927804948480460856251447063 GT 1 -36107829529157143569285891418667858920.7926110692732540506333910922728021 1.3325686449565856184317094540782965 0.0506939720746479099530852692868784 1.0520240582511166602562284290138409 GT 1 -156327698445713.6690273581419975340700209738898272 1.3024214180308837562853902085602944 0.0417729012100841805953042716458565 1.0426704740001018239997183981865696 GT 1 -134457413243273375790625753526819622901536.1271358436335790103838514524173366 0.3162747781863989782609809794413132 0.0288906197994151498036159724641611 1.0293161700725075181193812422446842 GT 1 -256378116519.8946400440912341916536136717775380 3.6877961375143758162155366612170670 0.0660884543463730202774273770148480 1.0683735501057206313381940307010007 LT 1 -1096342.6303234832540069117986010517825936 0.8332073897623158981634225917045452 0.0338460591561150772650476630720039 1.0344320984142831889890768395213308 GT 1 -1489773961.7309100607433123585332991828291405 0.0925259943121254297203943335579235 0.0870308216909027934475108853377756 1.0910531576545996618876867592072150 GT 1 -37727876335112376930465263896848155.5335183187363543268543129597874627 1.6270683370235649560949180851379929 0.0973208598419224585073637768073477 1.1023881152223323282359502514966183 GT 1 -9832453016240355033827867976916838.8322023300970139913369124541866196 0.3247959299384920361450734247240223 0.0282730956466629885170326098430771 1.0286804765985312585523811215001611 GT 1 -767584296305728218137100637683.8612954174711451926132269563203274 0.0668199840767998552712309758571763 0.0356906487961490307108795543801415 1.0363431321117486723767259160260188 GT 1 -22597025527987315992156389461845.5445912919778809666472054683611685 0.9844465326261162399231550375528154 0.0643824716554382469680212210328682 1.0665485095774057661573184117160931 GT 1 -70182200849.1817224680514696382683107927749421 1.6383052319753085618063752193892751 0.0563919349159730386213974411905256 1.0580443843422579895029871304419362 GT 1 -1559487766466979.6836893573979567197818968771296940 0.0026010672976391232235325330238908 0.0514312072842557688829201558979548 1.0528009643343542398424222925150688 GT 1 -2815005312079588837824940523477311213632.2354504194702719558628308272205155 0.0717729050338651726396484378068374 0.0620374599473693689262603541933982 1.0640452667513805029980688854212743 GT 1 -7556905.3426168709572145768757868355942760 0.0793139232995136616880179787140831 0.0767573736777987777179221839315402 1.0798632119348091094020086773214654 GT 1 -6421638644149052631290470054492.5067279777671711208076549275975430 0.3149757061592870471786544970392201 0.0118081386569975658212661659352072 1.0118784084443106139879174143744108 GT 1 -7653941295802067503866046990593109559495.7973745395206188574840621921442473 0.7816444579419522732799891953918250 0.0031207214078450335500431784868913 1.0031256010134687267247311935389020 GT 1 -11654773851647.2667791900123562931850888125242886 0.1296355370728657490580194539396156 0.0344969434985736175022101152367064 1.0351060113998564947420852847155859 GT 1 -43761422320654210603073714.8813701746080747885526420928333639 0.0046032993223963337904223705188544 0.0162401174147494726120786260080395 1.0163734334709952516692347443208582 GT 1 -2933888.7834026041143739496180458309598036 2.4218552229208259478851253817594513 0.0514555154635746352180453886172634 1.0528265908265744674738701309640564 GT 1 -47878909416698596.8467366059328765376272629601174414 1.0191567105622074503824296473889484 0.0477984825908390368390177932564007 1.0489785886405887460782241707867640 GT 1 -28359508.9421579079825594907496440067673749 0.9400144659047807417850438134212728 0.0918596924643801385057984058888335 1.0963563886007606544582563352206602 GT 1 -31517608230286247558879635.9001252627646580339848930015423804 0.9589623717487898282246500144026257 0.0071235695674390361270371273675197 1.0071490633323478537375030045895238 GT 1 -4216625813891.5176719559298336671160553521741303 4.2242370454728372684462908308227859 0.0282282231221040378205319817768506 1.0286342995416592704637506808680662 LT 1 -18464591934769404.2844126064518602482697640344102428 2.2986102910478088360210624906404062 0.0721197150335442221774859903506891 1.0748525577864792703988443764198158 GT 1 -391412013359914544174665262945.9984213130835934679823283922976359 0.1081091433537365253028197832783293 0.0102270817178857480730314032250167 1.0102797376366904368389447783364667 GT 1 -129712912092.6063604061597310094944681204880614 0.4943888445226961599037818412165637 0.0083553536938307116716286098506232 1.0083904553226038511065447501192906 GT 1 -1337797273623285722916988047240552282216395.6340807625780329137839726457632729 4.2192065418018340682284067153089251 0.0121265978308590035709283524849392 1.0122007249006531858395956278669636 GT 1 -871176939012153037718585537801771.6764763790456345366399187619103600 0.4544795456826990676087430636934073 0.0642123771170485113654528932331422 1.0663667268792588016853468988860523 GT 1 -101942906689139509006.9458190611505872489579672135650672 0.3521646234291879328707042216059815 0.0341958596715930422535711608672973 1.0347942186100673387523453399773951 GT 1 -1575244671.1703734362177543581785204088842390 0.1102290029786692743692660021360721 0.0655775976264221279852157239517948 1.0678266920526178167557152093596168 GT 1 -6917075312097684219.0613916142796663885947666217631057 2.4521461338297704596255197328083324 0.0767484432083509071509863496112813 1.0798535390427636221755505811825416 GT 1 -23797373617381017.9486162058408647867024558906374448 0.5743917538890711293598273241882160 0.0223319559154184628662662046103993 1.0225850897908203635756576614906695 GT 1 -1029600634646655.4419246079298814689552400902928733 2.5288135542314506901017467261038374 0.0507998716658442091131318424332791 1.0521356192180979628773093827536673 GT 1 -18630724710.1295615988269839111062158118522987 0.1781719443043248233714470545055154 0.0609921731622488253313339323621495 1.0629314645181426499743302995245348 GT 1 -27224312047249.8867659295005759831040327623085102 1.1353742675635893612522341178821861 0.0950828470102055936087834211687887 1.0999118831302730375211079934776445 GT 1 -8911715508859188442538.5109640187139007404755317150191874 0.3627723951034080547942616161929885 0.0280200155939475561919379769733927 1.0284200669085628840997365690606302 GT 1 -9470845735.8878708572172521051188144237272697 0.7038055368124259075707124261033059 0.0459052191047218599732381218126068 1.0469922614255700729424347274981088 GT 1 -510.6239855276394279187605132196986484 3.1011978253725164045126450295491469 0.0221775556604089881681303241476328 1.0224271751844908235379213573070643 GT 1 -14258810022589195683030618039297.9642840708130308893764749321310112 0.0019642778068905828798129028407358 0.0646084236543521011952221815895296 1.0667900391343126566701412860195477 GT 1 -110937632251438676673894904.6943308688987179554509901948483438 0.2125659423296746801008585232852819 0.0014397111871216214117892805057119 1.0014407485670773514086723883520218 GT 1 -12778348297849027682735310874.4539057308659248644949720363075989 0.3927124921296026884117316735692924 0.0157259524707876287906425914929390 1.0158509171182104275985956481114196 GT 1 -265823120482737271885.2124477260916739437436085514404089 0.0428920412512084701868300159299264 0.0130046338516215533817245585062608 1.0130899344448046966558494618987953 GT 1 -173931519878354936112508250485673352.2921179254485652518657870192469804 0.4926254832350776832731368307799531 0.0547531162105571650324475134037516 1.0563091329216939057006308773886608 GT 1 -5253822274535.1479888770956010981143505426223628 1.6190233560299999875435885203180139 0.0816074221401726775805925050900497 1.0851303350481114498480271768688302 GT 1 -3546.1016841362650809783625344708597636 1.4954311993694840202583723506721942 0.0234268010850111708242289387957824 1.0237055709883806028881719561259195 GT 1 -891975076311597888118203234528825551.4687317851535000180666859484122683 2.2964959854052111522973133735995162 0.0881124282734918654211953302285717 1.0922385731226630947647673484794144 GT 1 -238345799947231.1862351688606915758922625908402360 0.8702102494893657453824079694629420 0.0156046209428629681431087568807036 1.0157276546481992277896613307345484 GT 1 -341258968695391681.0314688110813181583825351479377698 0.0401193019688026342883748909665566 0.0522279532046541149190286188025650 1.0536412626084616491323833519129016 GT 1 -58313056.9762194987479322101199168057346223 0.0420552648764654172550310310982996 0.0514581838480108658155284148252866 1.0528294039663196272529840698590430 GT 1 -4101899487239245672804.5260553119246229714012237822319709 0.8160758248081080416991180350335893 0.0153367537019910888319324455504029 1.0154555781959544550082044567202499 GT 1 -6041911047623697056772583893430637971790.3489178984151493089332738320267300 0.2083908591209044475024206323112119 0.0219323464319049590892992810113526 1.0221764359123292256410782370977639 GT 1 -212151425288091000269287085576733291631.5556990096144579949620769190035976 1.0996853325105013057769575074803173 0.0479577525142061555759793041381613 1.0491458675643008042763351777414768 GT 1 -463337388527554521564822915761271684886.9872022166125859511706087119716352 1.6690933165000899534284359406469855 0.0651591869141610016535275174945856 1.0673790175723320809005444121619929 GT 1 -1257088466993652295.6944317053700052413804892881952791 0.6814981682277583591841501423250220 0.0589568699798504210926027752836542 1.0607663062067851264906318590080212 GT 1 -54945655261228971085645249.5343356603065011626913887366866828 0.8727126966490900800544395482370919 0.0404221433009736546801318211030238 1.0412618238361703306885770405519139 GT 1 -81082912156602.5728149305478104549245373709549880 0.9196824029282663952328408424852324 0.0560970619915337269277848709762113 1.0577319380292510187512332100090448 GT 1 -330788486798244833134212541828882569399.8839975181978208564721614621998568 0.3888044369802338507186023713069439 0.0466210902884560553835217400054011 1.0477428575893538952287671380230286 GT 1 -12083605647483340308288696651716.9052280489618134576590528430529997 0.2000130194704307950780396941922655 0.0247959331024405224947013587754866 1.0251085305022375410228749878765133 GT 1 -17600083019245300707875496499.6687114032136510378539169973427645 0.6552297215670375359853988376697511 0.0969274386970539461834053197142030 1.1019523729762913622476318309594706 GT 1 -475277665103586056907637.2494038540448913594639373922407346 0.5002000018619033858734529200063598 0.0289597266088306060953221337109667 1.0293873353499276367309198492544488 GT 1 -111703974540153798371807021841296882249.1615061941526775670661857438190278 0.3416693554789899042012026064270631 0.0711365587482720054595033303400187 1.0737935463965129492282837273867644 GT 1 -3379327137187325548338839468403244080.3202032628996720932564427833230820 0.0431598449751523569330365711812834 0.0933203849603851579456966595301833 1.0979661271684876048772618512426907 GT 1 -319985644611062.4637279931875990660497837560628049 1.2741817254450983841686468869003944 0.0151498022605545521484044692095448 1.0152657328891716918253462308748816 GT 1 -18411304507460158593020600199949530381647215.4584931055043780726377967648561526 0.6734123696627729909444497644823677 0.0563890357997262968325014869466826 1.0580413119736544962290932086594053 GT 1 -189928947.2274867116276274844797003886639984 0.8944289471987357216110876803327322 0.0846010554520198651196157402506032 1.0883953037586935830279137820203070 GT 1 -73.1447181904266568531493579649778561 0.5238895327893656191064747219585825 0.0726449357361610860694741806148384 1.0754187616558334615238893457544061 GT 1 -94574440.1396431149942511162694836977722095 3.2637984706456339137392198797637497 0.0693528761717759201231655902215455 1.0718751027403687529758816527529062 LT 1 -5238727059783834644576402050963825196914.2225241838327719975946255520641648 0.4323022775394152570836967288047126 0.0330074265756837718842400032534549 1.0335644635745532007065650847422631 GT 1 -24937880500868281678606941.9893676620876082386372076076062247 0.2951825003044874699380187791030760 0.0075844909571171536193501702268266 1.0076133994723328202452160186060457 GT 1 -38797823961264427467616463002046110636232.9115376998213271464272242959457702 0.5876380576058923718080908385291685 0.0661417549311490856464512909462560 1.0684306241467028625063039726897754 GT 1 -22637720472226327950625788538.4995402588905016889496517068845406 0.2781686694303399624994052957048549 0.0896410603247929042969831481031475 1.0939163180384098163099861153993593 GT 1 -4916642616500092250920.1794271835775288306530487681059495 1.0401694616403018067582919549783770 0.0383937356547873328397683784379974 1.0391502007203201558426817524889821 GT 1 -4271461354131149671.0312577509390371926385204449657932 0.1716059372280188746503391587763979 0.0258641868880361985814624740804964 1.0262045465469379801113051131699145 GT 1 -7070357.1781409376783441961119429375156856 1.0254204454915838512354419026851115 0.0265318060773745781251875164445191 1.0268901265858745634636515739481953 GT 1 -2523425561117451.7177332868573488156580791083159901 0.1026431693169304084872580405648072 0.0270102774144617009885509395528745 1.0273817594567077521651081724210183 GT 1 -1079762188091183682.5813767515548723522282079771407853 0.3566055935596338603084948940126821 0.0535311945210133602211800302839322 1.0550172666371181423954927586453276 GT 1 -9450001284929.5192086563105562557695037587769928 0.5552161635082368331801417566106356 0.0363278189534404416924319654715997 1.0370041033605189682857792488470204 GT 1 -29993098303639659486750507110793052404334.5231290097180692237662700718196103 1.3205858841601304490052207953418943 0.0661620050868104020086868758891425 1.0684523087817399867367246105676332 GT 1 -7502846927309777764497336100729087629157021.9056284941412246077125509781947212 0.1510823542640052960522988830238127 0.0914704135129410058869014151422534 1.0959278253723193334300908367036481 GT 1 -1131094944851447641148.2952484290999739274775136772514601 0.2370795712836305205834722620606270 0.0061490916834461664350561377582139 1.0061680752086786166339590310252787 GT 1 -317078553588782069367680587772.8756116035760637769398802395592006 0.2317281777119045956530309472959289 0.0719250428981105536571837546981903 1.0746427767187735127322810570144586 GT 1 -5072665093.4200117721215595716539024888823013 0.6243673669360424706529275367461780 0.0451025979372189358241202362187250 1.0461513766676735532115855981335900 GT 1 -83065450195514890.9084680690685317801754806200814749 1.1607737666543966460152833480248130 0.0886640722298664707050035944258009 1.0928437035121742516825800532440395 GT 1 -9172732796.3029514321384108849323308699454747 1.8279292771753289883599239708435538 0.0148409543418648509406417192980286 1.0149521831713161849916329915161864 GT 1 -138036.5659137290797213424198888070812836 0.3706104003937061711873425030995417 0.0896827876460950387703726020015480 1.0939621552085874297368526166486626 GT 1 -18651170948385324912013620766.6243806067845573834730748829687235 2.1295040018977556423812345973057796 0.0286400936827789495098101417330151 1.0290582240449804663383402221987421 GT 1 -1832976793897372524990739946411523816024533.5272808630588645472081267354512321 0.3556223718241993933404582032975651 0.0794347049562432339624739776763583 1.0827673465023380927678189159886959 GT 1 -125779929902826852272503267391.5599236136818645972143077860892328 0.3428116017784075423802900367406984 0.0413857231916301417749799803484350 1.0422664989725921232083003848981663 GT 1 -14211695755702355444361839449322.3900645951089828803516332885816248 0.4933747531813133252339882087659103 0.0524787752709707262030862297719538 1.0539059415070250919802524233926269 GT 1 -99156623320700311321852.5636121022472328673807135629279036 1.2061061247218920998118652881661199 0.0364989592925577668288682477686931 1.0371817109960292217125870364989347 GT 1 -74685791776.3174551168541075678184722856722181 4.8475902731535928540271453477655213 0.0105317784336349935391161325741005 1.0105876301031734435175621882543058 LT 1 -4472522438887267512434730469790155.3078974896438294057824068346779594 0.9158300505328009048983622294863413 0.0993213576360730431371774513032897 1.1046067527374560040100705312725721 GT 1 -2543371812679828941626301015506765838821119.5704129592631097137246691717188794 0.3062399866392799856450356843238152 0.0823773147328381963383585112292874 1.0859689910802832357112961732318062 GT 1 -62712967658906740.0572563092286389890006423361490644 0.1550637208342547096104754764887672 0.0902468594645528012236654498516055 1.0945819904095968823684475360773384 GT 1 -94567846559475153414966.2620871435036042801672155219813460 0.4404938685988219348543208583513149 0.0846924794122508319719596570020587 1.0884951820975185786679057072345184 GT 1 -18796908644576.3671732371210187048037409915976669 0.1667927521797454994892304502589754 0.0578538871669373888732170782201387 1.0595949072693467047363505683691886 GT 1 -366610317959601984594001318477390860827537.9553865677534060212480420063104775 0.7072521463143060211711517362567493 0.0458155140277974411240446531809850 1.0468982447074219480329842541548293 GT 1 -185775339470018612169874669506173902457.8039668407729720803006555855030057 0.4472343289164736727202531778242600 0.0861408428152814355600426829315731 1.0900788143857354286304561645299898 GT 1 -485056520483.4583513647916467898837205711887725 1.7547681944747876841308572481702171 0.0596543393427074825186364010425387 1.0615077472085228362226386194058325 GT 1 -26.8235679609392565739296585056139163 1.8349327209746169653325818230135175 0.0203343684735781080092526296173940 1.0205439578568397538273277768568120 GT 1 -123149305184731861233828073650606.0642118182192278976468230925538267 1.0323685310256401578152915734180572 0.0757666051736969313336856140734307 1.0787906474330331664135780225265232 GT 1 -245994294468264052247015109.0274181438171441156568228376472664 1.0208391898207780741676522111673177 0.0230611655009450669208749239615410 1.0233312343248927924637707456544594 GT 1 -152.8940174067189382313423819652648912 0.3675792305445204787639049709752454 0.0490618442106380749952683549314484 1.0503062492670431701533564945669746 GT 1 -343.7588320602456178055104730338209786 0.0694965700541507645603733658172041 0.0214628727398096881944833461622092 1.0216965498303723509084088866060926 GT 1 -76896366114000179.9101892683773215705900059702755013 1.1977848613110473691997507503403087 0.0736692345826693105404230033281113 1.0765239100411312386783140452572323 GT 1 -64612846037604555570230701489029048748.5844645011113766171918307490059792 2.3452659235378169373932178247670956 0.0607426649152195824006346824544087 1.0626657850458774084237406489255211 GT 1 -44461140017.9422323881842810575703546378936486 0.2090959684474246197026132658692104 0.0437095073074047174973356040146368 1.0446935494384822948471003901968535 GT 1 -22072910173649.7616291119814779594225367076682322 2.6816784169675313082205185030211520 0.0826755139876521681275521022468919 1.0862940132521544510744254329840732 LT 1 -702675544307.4572405965089801972158003044437102 0.3990437059674448813204918058451764 0.0670909076282589461281990567273646 1.0694475187107596818814618144507615 GT 1 -19062138584097010460667946423761.6643562697558559316223553421960244 0.0917944979899004986374339147898311 0.0623523671016740948430664039804698 1.0643810584439242118565282454330895 GT 1 -12989870683205310033869.7201637093312504448180357584277694 0.4263944354878505872341837617383543 0.0606220310041379049125916159330139 1.0625373578721886658865691591760920 GT 1 -81220501681003016397.4710287434288494372330241143902584 0.4590398476165702870859638163695057 0.0426263047465732550278282729455617 1.0435614775908307845802117033836071 GT 1 -84225066443172870918775129343974390319057.7788445298757212408153431383884433 1.8049966894558584964715584491585543 0.0869488804618049380551855658084014 1.0909634092227235671710149152530600 GT 1 -1321811.6581484085011512434760447325033559 0.8322237923048951618508716807162038 0.0637464830002396150515138040184653 1.0658689876827188826835773448646060 GT 1 -996886216.5407012443835302658473459868398705 1.1707135656636370961808095318548574 0.0420373376117735097650125651814581 1.0429464763133648012352456120143282 GT 1 -680432031465770156728620358521113068.5846864447616350691784718377801175 1.9386326345749703024486621071863561 0.0263099693366610955939786316600204 1.0266622696620023968712500556423185 GT 1 -284809076417247190047173478801606726812747.3753958580839905003133183689989887 0.0975958089953578317188838187082751 0.0355107172510080780084467766041037 1.0361565584150490308629773822110085 GT 1 -905835.7137269363246775926516681951489686 1.4335168070179366036098356376840899 0.0834884084266568408570954184952400 1.0871805641300470880415978760071163 GT 1 -5328330527621.9773863359858315033307692543437549 0.9249424196556923853851338246132567 0.0172731598028164996494213774963169 1.0174240812797262093247501077119643 GT 1 -82964869469983116581923923370292487495.6049958453748227070104568980733035 0.9183195654603974791163080268104131 0.0919614856576397272266058444225039 1.0964684846037973179986267750240687 GT 1 -6006754177191792721572477604538510579387.4004423918485580140742916124041731 0.6388391856936413507239902963598651 0.0010616599258517068966837595286741 1.0010622238859420057156584895650897 GT 1 -149171316146714436047292876443.4601231812318722515854013663570715 0.8367648569742547763697213020548395 0.0185123409831090678492926588087481 1.0186858389392789405877533020732865 GT 1 -1556145590555912465653723588.9442202233203696667084135064329695 1.8856904573274886888454181160065919 0.0290654852306731512068721509462645 1.0294962539853207118530901984420542 GT 1 -666678858287805277685121841390.6257385457525782973555061597358016 1.5417601193577752342470189673841404 0.0639019734720877208151131737178588 1.0660350787917769586411078710327592 GT 1 -328715510111.0508192818938159150112758717119687 0.3152626866111971015973044960413980 0.0915901971725705360269216178852199 1.0960596774973902303990919248971265 GT 1 -51128188830310924946771964411.4294692200964705910198220567558465 0.8752324593927754354551060219290107 0.0179760203023656066579214337539769 1.0181395516817891725556087524270881 GT 1 -12102851226.0428994844234026128249332378741250 0.3027081302959704390715107573784715 0.0086268093645051153188588338902227 1.0086642356863636197323639868116473 GT 1 -1638288802398121945067323062723996.0667026087167074056135046458046968 2.4940217201471213295584067201576750 0.0872977033874034532111073382658440 1.0955175254806187024336057449169270 LT 2 -14.0537999922687402026614825577289182 1.9317443783644913579904340276694786 0.0995698199549126837788212079649807 1.1048826520249664676132395758124289 GT 1 -734016962036524176784608114099343.3978234307821836095840997094992168 0.8105253016301342837950783569052758 0.0203800545999815534899843722254212 1.0205905933518893260107848625837913 GT 1 -1543705.8603516477815413435560400414152070 0.2009413944761531838081601320175355 0.0348789623837153786372213926962576 1.0355017579268904655732159869917701 GT 1 -484246983574157845732330989225992728926448.6848486514772655847088851741250947 0.4995091143452271038685582782786135 0.0190013964357432595155342564649844 1.0191842428996864673171567083223828 GT 1 -5385.2167430126445961660883495332455726 0.2289346662912541196847525044442901 0.0886060746304483422702284679607630 1.0927800653385438589776304943348512 GT 1 -3.1671319281560307616978842426580337 2.1221016505671447788457823336141277 0.0602580797143283041678188048854517 1.0621499943022147688255264241385289 GT 1 -10398234.6448223682757427422958942448839174 0.2025938468624571651488981402297580 0.0641418862828029028291575804609049 1.0662914019041307788535035629199164 GT 1 -558163111222656006372871.1911288164088453981876937232579068 0.1925860501665548837648436224117369 0.0045353174831266676865610565413082 1.0045456332374269636800232959882143 GT 1 -7970509742230363977132716152.9017299332075913968818030576584318 0.9941597775135087674532630902215877 0.0849938760006970763331837671806383 1.0888245208336000305463699655502264 GT 1 -3070661.4003342936691845757891220554592350 0.4830764526770727337812401869190692 0.0802723204639642913925930755193409 1.0836776532601560888336403046314769 GT 1 -12.0753882572069269885047637552383281 0.0921790348975203237904483785448405 0.0520657018997156153008302254218166 1.0534700849302610516563773171162179 GT 1 -128578101785494606806253487352956881.9378149144836284817589346970934735 0.6381139649017349384569188626443417 0.0192724442347636532749651807096092 1.0194605789208545185406653696595891 GT 1 -472991165212377916106690564509.5687216854645883350582675578150714 0.0527477486033606420570373441917559 0.0224795251455938596703892009451348 1.0227360411993686204567177116621267 GT 1 -679364104388129.7889778631179318407511679506069814 0.2448190798031357617691478395570799 0.0366373862288803340618689608430432 1.0373253920875677624167807834672305 GT 1 -71441549448315.5811439588990706758007496611381157 0.4445062531828866919067175222564020 0.0506064014439154296170524910542591 1.0519318155081643648889314924553438 GT 1 -3872715786568.8369041665452373358456748914299527 0.3041617133148799214127178484785774 0.0180985551186989570646938474590088 1.0182643372922393509497082398802329 GT 1 -397746766768840002404483796195036806727.4205644501475901270976285352166239 0.6358216333772215797968699679996700 0.0296112574843225753032566073949062 1.0300585222896641408333134563274876 GT 1 -513908338465027360885580315843574.9296981189952451957375957696636669 1.2883151939087959858203029025564277 0.0189183369581129155084314581537455 1.0190995781904045897647523245615624 GT 1 -77276.7252064541898980905171694535988604 0.8134498765007085957988689257418972 0.0658921758659949845728863981798938 1.0681634040180784274928798833241692 GT 1 -52.7097297685269529229129936019108207 0.3344355619555027107840482681130787 0.0623392453703189746111816389024968 1.0643670642321533882070183784247223 GT 1 -47259947451392840437518042.9188003832754111280437920073549803 0.6935875592961769128911637827769604 0.0216726816459451187056669757262792 1.0219109835970132722450924551611484 GT 1 -2544577283976213631913534654544776702.6269621351827861220991465102472302 0.9859029704984205368859573354341788 0.0733853927915304141431685866652321 1.0762175418151140662177396501118531 GT 1 -1957601667001736193754272905742615882.5175473276868472866611106092173525 1.6647950707479299677139421898341744 0.0090833798595392013490136062884662 1.0091248852852524707405752362675371 GT 1 -90740803894483999866316.4136777946938567273392517650839726 1.6398148589273796748527616282089566 0.0445434046801437340823633320217383 1.0455659424771386862867977571190098 GT 1 -53972387151305133433108621101809.8587345985083898229120806000863186 3.1518677620098724640039857415432592 0.0721536468971018841736805709543382 1.0748891276808433943555626592656225 LT 1 -24063899111586576118399814498383039.6340426867332129770086400984450511 0.3591605955165247869841078668941896 0.0021087508587741000559829048861979 1.0021109774045705428546264645610519 GT 1 -24151842520712570282473022948865.6809525557204888059585426193526394 1.3396079166442858914959017386746969 0.0590198985203299622609103543015308 1.0608332857630925968103616430247131 GT 1 -223094129.6569890719557731493746095963214653 0.1911390741986290203293069526730086 0.0166174553613765810199664833059711 1.0167570741733999898103005389957328 GT 1 -3713302756814689.9349928654291349530851173932523071 0.6310616553148898701518934728450647 0.0674303228215753008049473058194221 1.0698114094208571719074936118476654 GT 1 -64226269515530686505825.6060621664805682663145074507056988 1.5915644673289367180001821841946597 0.0972234740838792412865298184606977 1.1022802357989074135233022116168697 GT 1 -462622803750927.0798741392430544843303082519378132 0.2169150283758755735788884951076159 0.0571255577138575701518619457434153 1.0588221523120117506599086043156930 GT 1 -30757755800749143361637234645.8488445333056836010711526380869874 0.2703146006376597825200534419462076 0.0167210251293019642575062472183851 1.0168623996368757476943782523099995 GT 1 -88288570547649209858013358682376.6974199395913716779987134756807728 0.1326906313743563679286153390716082 0.0686511945674808696972124200683055 1.0711214151232436216151888626548327 GT 1 -33055819106810289875639031174829218001809.5273663993348820953475620500583837 0.1371657407579217381725369304553733 0.0468913251244163492048957850309709 1.0480263473324341092902510875133524 GT 1 -5078990387885023952522250226210.1347943375601366767444707629656914 1.2411746406389680335390341517757760 0.0802048190754737391362164782244572 1.0836042631545240779446115110309479 GT 1 -3922173072647620128311944.1161508610867603123708425471057089 0.1998500704255648380591565452619737 0.0325247745363629892119790869705725 1.0330654611619894904004666360676940 GT 1 -1795074006275080068814112774.6722672059442013473518332356460235 0.7206616809708738604044559281504660 0.0619976466270373436063774322371275 1.0640028210526603079735749612085187 GT 1 -361658318788840284405140885759609474.4722323142473335748227039032849116 1.3245676532105326618358019362558367 0.0852256749207890315387006958178894 1.0890778833847724088263960226835353 GT 1 -105.7804702258361772047499625739452338 0.9488187068837474785091393023372271 0.0281942301180794444606685285061154 1.0285993197137797706100398408217649 GT 1 -679718336383.2604547441299005490481963126870910 0.3684710946722115571841525172273550 0.0038113450229853784680239412730308 1.0038186267063209579173536441809404 GT 1 -311121949807732417240959.6148707257674080580466958063311215 0.3458913145604853961074824074893319 0.0377288635865621234478323666461156 1.0384590214441021685915647217299610 GT 1 -834478686465369246838.7941535652193874892932851148416329 0.1599317223700763728894732344765717 0.0540023759030832408667181224972173 1.0555152214588706317635690213965801 GT 1 -49653402527567104049993795468.4857518836782861435845065700475008 0.3088419906993194468639688456134182 0.0612065095859911489448815339071325 1.0631597489726309847654590452334641 GT 1 -21170915233840669160348305307854295035402.6062054870647947553477404844612661 0.0060332356872884142186839462672736 0.0881023581562077637727368865666768 1.0922275300270076689794727543954057 GT 1 -707049928436695240.9916662378530348700444311468860827 2.6419851352524554139945134460841109 0.0165856742016649507994692083216691 1.0167247564895637982421033274213178 GT 1 -3673520919525621244711.2345595836042375067956580085654102 0.7348492031163145940989008468024650 0.0724525079977645165694071212622235 1.0752112814963643517877052462148154 GT 1 -23181266913126022073297188.7876534358085839334116261547368615 0.7980626142990129338272790740448014 0.0779792098034770433502345820311855 1.0811875066596785814177965026516723 GT 1 -24278742455340824282.5459184248210541070075396413832488 0.5451632298224344879967363990606705 0.0719933279450866496300116329210097 1.0747163565074360673659482617846957 GT 1 -944343673.8575727546544112030935645342979145 0.2612368149073247714126728969764977 0.0133864773286007483026325642974781 1.0134768839401243973109838644125880 GT 1 -490.7073098663417625930917990998733275 0.1302943702443174610285318887235424 0.0535265294653837657822385015270061 1.0550123377434178779086278690016924 GT 1 -339395672293770310537012134208585.8526908204403161464788490612739377 0.4088785964502304469417009664082625 0.0283984532090615733942955703290696 1.0288094898515391552357707184460812 GT 1 -670882452564164507810212134984996780.6407119594222540002378795409249087 1.9020197677195836476413582776798814 0.0044285125867670869653361713769744 1.0044383474953846422988344025787834 GT 1 -83104939833967212350683309306288923.8108242460470560723339936471934603 2.1290179775094125946010904055883136 0.0548374311970064448828529835490708 1.0563983358045821206289602427534038 GT 1 -31900583393483178.7595871850081626319172178197364301 1.4753470252210117683496274883709574 0.0560436166162934060144876995824285 1.0576753179467597168842266714173983 GT 1 -4649082204484512.8679116322173673585330134521424412 0.2403263009765859521093527312380753 0.0709957331888216224590842994777461 1.0736419472712265511705296433144993 GT 1 -2146350954875.1590254325860391054591667157559221 1.8603120474784635529846689529099187 0.0383556640633577770084871775172945 1.0391106098407655629114309752763639 GT 1 -147289606731781620792413778653807182563.7797990763999106839085839861083898 0.4159621012231920721184926207773416 0.0918411954082216755596790523241924 1.0963360207483121256058851880019773 GT 1 -70205933861056804087780743.6374354164688115345398385667355046 0.0084624090931825249360459848326142 0.0705465007888947393888671139840192 1.0731585008169786755997005492223960 GT 1 -2743704415596252.9202525172454492981548475346046735 0.2209747364837383556288798061529584 0.0209367516043609603402457170746915 1.0211590334356486511246330599248013 GT 1 -1.6879743204996919381760293506027228 0.2574289714715249693957420366604770 0.0868497977272707667006315885938525 1.0908548968331551028132485866919224 GT 1 -65706655383505408612294359.5367137166268996102928101765052112 4.3123395628130575906264369383446170 0.0904517534237336855905327390689652 1.0948072350683419044581873505109236 LT 1 -117926743363387991558.8498840228237112650679901366699624 0.3144670340291684314834950875793255 0.0723390612364763905488356277403922 1.0750889806707016459311518586128678 GT 1 -19172073806248402809055831000758304.3604166649940418253486486543461356 0.7894462650185877398286508522791049 0.0975750619199564617818171697354392 1.1026697633364538295825927789841162 GT 1 -28191933959.4402877647889355841472610437444269 0.1707916348604804878090639516125444 0.0766048442672942156809072931359519 1.0796980150431028134565102630288607 GT 1 -391.8236446520956865268455287511184175 0.4039771149530751549804341442934196 0.0370938160390784615804104072843087 1.0377992925310340810680476753118461 GT 1 -1305.1496842323393966989535212190503393 0.1081313823963352340887183059505867 0.0993695842141335206441885599336316 1.1046602988825262299012465947375377 GT 1 -759325.9647554190089974389360024965996734 1.0151723291624506394187948799879578 0.0905897454460546166865778198238660 1.0949589614793621830438870793261016 GT 1 -8940765273.4501629238850464496097901453876992 1.3065432778007872764164116525745436 0.0261426060444814150037619839521739 1.0264903988356738200232138913522447 GT 1 -3453465556.2814999451688808426129177291886830 0.4043317209507040611846676256256772 0.0583943374423246588563308704351288 1.0601687092928152325561042828666492 GT 1 -97203783320690.5575774860832531547836077808749943 0.9071059497735108414469844268481514 0.0594821609540429015050789436766747 1.0613246628016291978533307062103962 GT 1 -1996512397399.0774710577971652949045799462039130 0.2702622413580156357145611718709256 0.0562200249192715348145645498672001 1.0578622172483498412659311544095146 GT 1 -590958657415829047467347595686648067169031.1589199404888349666182347129005961 0.0176814237465797876304414041506975 0.0745416398841073589644866949707963 1.0774661397517955775503484163036412 GT 1 -37416110710685678918123510220059294697.8048689478243525966251604969317181 0.6730911735213697533663772802399804 0.0128970715913546300787433217225499 1.0129809608838934315020280794262706 GT 1 -153862075579276775680425159469155861.3921669741281393708842516602812538 0.1299931338364876431103173258634095 0.0605422918100069970024012274444380 1.0624524763733465551188702045992026 GT 1 -3532962820.8994331028508205839358963886331379 0.6833897325508377048696051304068481 0.0611770228550961949554377403795500 1.0631283402889015394992286928351445 GT 1 -914.3551253343684607582560778880522667 1.0426190618793828678463706124649648 0.0596211236286254273017706057979388 1.0614724249553894924093588540277131 GT 1 -37770865820821255460171679348922333.4343223211388446018735243595040908 0.9859185832418771868099421623484889 0.0193719707142725736626186933414617 1.0195620663618396356871352487433250 GT 1 -224372.3478626800350927637904821678130616 4.6245092119383172371305466686800701 0.0502164016592681620972219660558846 1.0515211115561934421282016387426163 LT 1 -40285756906557627240176.8393788935945947960923600517230142 1.2200974811864896095038679470973903 0.0938509403644040184108500201066798 1.0985514614878070975803026338907344 GT 1 -78538924.5486815055752497691447249566572895 0.3031847364143201858727459926004105 0.0527547399290206396229286888445208 1.0541972329798425014741718127835702 GT 1 -341127107367.2649084737686314713813687798706353 0.0643111767669618361642891323862941 0.0147489515128760482846074678021077 1.0148587987237547012786626070502279 GT 1 -356804790.0658809373500336366292983925879939 1.0007276474590135453282157859519317 0.0493060763766316235608587989722750 1.0505631151139969557422961484862711 GT 1 -703301984282702787.0279690160966269352435912988372122 0.4847537748347015034525545117247935 0.0476980740230202806579022801783840 1.0488731453364451061822035851686897 GT 1 -1497389942636561971074604896122826684107704.7564953782462407017764082068312634 0.1888071830312224963899085798287973 0.0188998937579773317187076511391113 1.0190807795241190929861656940140718 GT 1 -5953053206.9531812493168455714452496210433046 0.6588842210073266766310163998903752 0.0477195288591687658580190338556726 1.0488956750376350994807005526141078 GT 1 -4355902103158178437416451000629605224807.8156260114694710528712535650675001 0.3279123351303780750558232129432953 0.0566210451266022642212126242367110 1.0582872161257646176000616962355075 GT 1 -2318457537229880591802688507546008112580977.9271958309309294821166441633959719 2.2691333761137521617309086667347612 0.0591437515169537684350622948726406 1.0609649156965935493470383932971426 GT 1 -3284391696319794881197485719.8263659045305460179050729576792400 1.4810146216432391950800412327983528 0.0619036761906643984247251722562483 1.0639026446199444509364723615588852 GT 1 -280058218512710.9830848154941140360458863042828103 1.3721785960263937676072998392019348 0.0612229619517966856833718972157713 1.0631772741367263466766230678393883 GT 1 -1902352926843821347657.1887020464799865722067579865852303 0.3032584265420244023121633307690415 0.0547714640014023026806642012832263 1.0563285436907032915865093912912670 GT 1 -47116916633.5316704818885712131473068870274195 1.4145473282459984248594101601358013 0.0736075892904791775025598884689189 1.0764573644362538254359146814398220 GT 1 -25988270345893128831023007813916.3175384888977208415015758957602335 0.8028783907786853842236141836868265 0.0534491074553001110750024334195455 1.0549305405815462971089085371538129 GT 1 -1639836520800169851644608446562057.8600635364553658129983903476265471 3.3076817637003721397223652674802395 0.0560385602951550239912459150311677 1.0576699614412205910432796055689788 LT 1 -90868510469695770589.4236124966275342573236854820669584 0.2998650252489396190602601352129076 0.0404465271154409636606013894425665 1.0412872351398083281171774530004953 GT 1 -61787004794985098009217225656984192998.1003132498481422738545674696294611 1.6642958199580099377549826713932099 0.0052493740183810321273553225849580 1.0052632003899298877158506407475829 GT 1 -235924802024529959.5879089946597233401594467256201282 0.5418046938643068518588305069801348 0.0462526246725381620031780630301896 1.0473564483374935177881235128306422 GT 1 -482797161760056393057051020085274642324485.5229980891774745085383407930032143 1.5742835609099110755982979405895558 0.0442113646140366754587813798359780 1.0452184830678351691755312897595877 GT 1 -9877748302229621855178251935694486253.1636103419408613193151556231867162 0.1151975942295059414999363751921981 0.0326739712481951618707920204172322 1.0332196854905119501772163456448883 GT 1 -13209101333206319393692.7880300073009880964938144497889865 0.3013436736150790353533948831751735 0.0243753081182625680770671123406056 1.0246773035287749147703689279906700 GT 1 -940784878317109176219314228564427463133967.0523485782516969360156355988212918 0.8362133791850869668963576241237574 0.0007623587939022885711640692701565 1.0007626495371441115433646273122686 GT 1 -270147963955162.0377388406883077426063644212383588 2.2678431959494653727649761312303365 0.0044688264343331419439114502844410 1.0044788414873435942929089331461995 GT 1 -2905299808341423901947039303298.9053184188247666060297634665370492 2.0159916772149334432424248114509522 0.0483492078745897006405521788743525 1.0495571264781652548775321280764654 GT 1 -1021937816323026601543.8074261812021564375060933264042629 0.8613287605147130216759260368746186 0.0537965920586677634422331846264339 1.0552977140780559158112306274394604 GT 1 -1359564432928445703521073291905357.4158513994478652120012109468568866 0.4971822166352942662994755222790974 0.0479347583877635495832391507034734 1.0491217154336302653009390652215081 GT 1 -309330.9165609318409763648462122788726457 1.6361659077621827111049010767918915 0.0519221809617003773180706494210704 1.0533186925029742921726525664187340 GT 1 -3345189446764.2579328631545301123823950052996553 0.5789094577867579801180990089593872 0.0887587958305393639803861534975487 1.0929476481947868056588603778844941 GT 1 -229046495114595536815438699.1916951329626112518752462686430081 1.3659329342234775310484347024553692 0.0776332523972767747725510572356554 1.0808123605440521236266200535647544 GT 1 -1637635789991101962777450.7735853492048086924357031573850031 1.0170276016677064582094405297567329 0.0926214468092359641099321395025041 1.0971955474836956940605449644579304 GT 1 -10.8299768055403320435314760945219341 0.3275307157642218790393759505035030 0.0859771283259197744549396727565191 1.0898996841276392420845378621703692 GT 1 -222513356125435175907932799535.2326459436218597272909216627889497 1.4906125014418587407087769280162536 0.0744825640235604686349423764109759 1.0774023076253121663485877378157970 GT 1 -289433975127119924358638712046.5157081781492959431363880636997924 0.8552161135014859549156112938547496 0.0026837706933642133001266265226825 1.0026873784623269376781722294194349 GT 1 -12741453751316.2964844164295164010962133402026504 1.8116715214624767113394249653355107 0.0081010774602298160725780607736994 1.0081340694897060999829261188978366 GT 1 -41811296943905751567.4552443553733177818281005021435154 1.1842831360174317327182993085019275 0.0938706822846621016384509491322570 1.0985732483396567803384000320850787 GT 1 -13213093690384404509328.3397552874178880578723983837866379 1.5640093491258008001394183755942119 0.0637758364260267022364441246340498 1.0659003401801013857174080141809871 GT 1 -143748215670724.0773524830727385659854193514491481 1.0830860780926276611595908554611374 0.0781464671873796623770941151076597 1.0813689261656332021091709625793136 GT 1 -104154912087920795972.6022432397364045893152542502532610 0.3798481940618920123496156011564580 0.0976229913345539259638458704752292 1.1027228765488981760580118479410495 GT 1 -6095541353371958376540927188792.6278227183754017771193996917143159 1.0777420577159393481547518950119065 0.0755793940237531720775928233798726 1.0785881096401282092644236985150945 GT 1 -104519492908210858295233737.3889967646249397314841390868441135 1.0442963504858299281897886292238842 0.0394912374186808555144788980871076 1.0402921738777952103938366366770440 GT 1 -1880731382830990397105457177662.0730829172842194989952116190789825 0.1663994619805211829711484101123553 0.0804179523898760800258138331153373 1.0838360082387295717905001158512340 GT 1 -381261913734820.5293675949223527662915668482380945 0.1776421842100362259978311164027495 0.0755956978598752933024815732568624 1.0786057466116455982226311604748293 GT 1 -38053178136054171808797668187414183530454.9969766823703239599567805922979292 1.0216141715377924042454444881396051 0.0052208824990383590144478656920809 1.0052345589288630652352089982401579 GT 1 -71603328338298877670679277076.8403279598653665697421534699342052 1.6948125771331909685661709955665852 0.0117886566209078731149701409036954 1.0118586938070910663595622333439385 GT 1 -2055454712473616.6595364788550621139614659951408014 0.0075864387182479842925592368555656 0.0102452956506053919854933326759269 1.0102981399388477010111208208976614 GT 1 -32471864752843794081.0744771986713471424036982674554165 2.2884316167770324705167434968411494 0.0302195536162144329116367606216565 1.0306855770386044884884560787085061 GT 1 -657081462424763773737834.9139044218092081995776662718429132 0.4682135555305803456753626026398322 0.0816697503389975515040943383964714 1.0851982039697744182976032809838632 GT 1 -763.8261728343042684757430560623359766 0.5390632320895127798539493952762781 0.0068862903011106825837710883995308 1.0069101102150461995391955346383451 GT 1 -12520263544535074207452083295.3692631084113110521955635209823979 0.8864491294920050947630748444897480 0.0463743679256825759057951480027613 1.0474841037597284992695333351417412 GT 1 -34917611359041332211001873744.5480473131513837406385206490689229 0.1984411039249265247101850081748987 0.0220808276129333153735826453942752 1.0223282581836689689447211269858401 GT 1 -192323189810170425704220831874.2303321372013705137176493310990572 2.5782061225540284336158293156980770 0.0858024848178496282376894633126050 1.0937324503605662255080699248665209 LT 2 -485705468599376731649917954025342397.0544956138735812650257341071121173 0.2336194775819412377544033581231840 0.0183429249338785615414620818350545 1.0185132423428999066558568127775450 GT 1 -191.6873514700658017369338701773345234 2.2953119060357485580186780787294093 0.0457647577643207224392585814357424 1.0468450527782687641073601202075321 GT 1 -3272990836178164744.0569376905844218245293499475290819 0.7609625655394196956583456127698211 0.0666795333422494278680830282058774 1.0690066573058140883843865858945749 GT 1 -1065217416911916952777483911696707946.1439523170939034799546012370684450 1.4218707004764148330777548999002999 0.0429097798973263627723525929325458 1.0438576180931939140476804238184700 GT 1 -228642516490555376360279995795183276075906.0286205431865474213534799494825273 0.5598130450923788233306001305212444 0.0047032118358743302130340029162003 1.0047143067381134013198924391446009 GT 1 -115839406480037.7486506156306881424060796105237350 1.2112331380411081196691578788572163 0.0496053447470985810243563986969135 1.0508779540712809979518423765347906 GT 1 -5514233751828165919242860309210.2558346488297418346004337840114407 0.9544653274125656586657810886751309 0.0724158962871476398712320123729042 1.0751718107540124946300906726979153 GT 1 -51.5447298559774669274870146337164399 3.1438258529259173541999454990175521 0.0461339983620163539732905623990985 1.0483475114422364071138375968857012 LT 2 -220796220222727710961618138535047.8446469164412660564893670214102792 1.0762128599868354777740938945488004 0.0690968413299519812449080336537088 1.0716000257297227799684876056595671 GT 1 -2846338784413334063966360906778355291.8637644925465441279660815489621394 0.9796038475589823252373894058929277 0.0918090589880121347523322075491288 1.0963006350300156619958746612568765 GT 1 -1619064104281.7293211366772954411248057624428305 1.7694609741623969234138480270624967 0.0583687134069571001503280449078515 1.0601414965351421254679528954197809 GT 1 -940767075414895253870177888599661320181755.1741471672184860327132734673988635 0.1081771760802805392662552357948323 0.0348463952022178237484834120691627 1.0354680143540485041516306229975008 GT 1 -2409647412.6698220592808933199306322551040425 0.2161735489007201834649161000258499 0.0634824614160700278313006191381125 1.0655870294741791297450501816295915 GT 1 -10043959588517.7444127815964515851141316983005342 2.7751636544607149231633833725080600 0.0887772539930922777062795486881023 1.0929679044665794615124766232712400 LT 1 -1706336328906587.8949496478768735440798230924065878 1.5241344308616358298450942570377282 0.0008792604056428356182381369445267 1.0008796471818078995511446318168762 GT 1 -1990.0247239645181776543645399263245325 1.9089924248175262392641576113260420 0.0332763261133804017832039289826017 1.0338425804283613287351503941460346 GT 1 -155380575443313425738484479792676.9251093298214742531639826085310072 0.0200771479751511893823386887292154 0.0196131444428529465177469213727855 1.0198080346425093892874429536938359 GT 1 -1798802565811679630028204647705.5548157891342885210977096945369995 0.3546177613322685297435772413694147 0.0197520953523444403256952201019342 1.0199497753813195197500576543085312 GT 1 -6120000473546934098269160152207.8426320946981574746445624179074888 0.4473537722803988438323016986257179 0.0191845058056932413933780975347953 1.0193709164185391707292765657020439 GT 1 -842363200212446574065.3756788282411923390475101666134585 0.2981011406645018125378480017530141 0.0498838954377608212090829018153148 1.0511710865265625574402518884793258 GT 1 -858228.7805280637835032882620589412672405 0.0489060566846021727025215415956820 0.0520310217945533567772606516202732 1.0534335006745138886743221480137653 GT 1 -14.4634033199177571640969722333236781 0.1228271778568122571770491712494455 0.0893393371251543179924252476021608 1.0935849397248791669830278994876198 GT 1 -2274361831794209383242935749.8224157964513827666813884631005780 0.6993602905771254185575668699539626 0.0010144117231654748266845977676210 1.0010149265869562159137489234397502 GT 1 -306195634048046005449678727977737365914437.1742002924449238386161153374262160 1.4284425394460805374217340935230833 0.0050184878133520099565551152893134 1.0050311227131046347250739706797585 GT 1 -897.8286571965351177403581423349292931 0.1830639429836621353274137503417798 0.0916044568608756752974370351032747 1.0960753750385022594654066539917666 GT 1 -24382030019952.9404769748461900165074213417272338 0.0149875877988704682168859179852632 0.0395286212018099956592732750336046 1.0403310954494747730661516800458461 GT 1 -245938200524049149768842919679.0220411676187307466923154662857030 0.4071206780572843426039873269432616 0.0875777916568774847025071132932299 1.0916524482903993187129145141644707 GT 1 -2360452.6925551477662412014484855550705348 1.6652943696378405339378087041160642 0.0913636565342534982699266025148881 1.0958103270447856415716324160194160 GT 1 -391186133950.0453271589871936520482449129585698 0.2731381115413068992427536475812845 0.0086429961984918400785903347185136 1.0086805635095162606610331650201108 GT 1 -2347591.3746325906704003406208866993938385 0.7538935974617511470283801064195288 0.0834751769551209500663742966718158 1.0871661274593616599000621276969310 GT 1 -18750621.8235824678541365981786992708796691 1.9908034228215894206596377092900526 0.0214538852605781682237629456351320 1.0216873652652616708272528977658409 GT 1 -87363108515.4199218993724522580334035428127489 2.5274074929218714852327363277960199 0.0134690417844681184164151133286170 1.0135605721410801078000721454790909 GT 1 -48.0398548691732542874844824312969917 0.3336341434339331732144166493240787 0.0819073472595500937938265075853476 1.0854569645434609844956159263859968 GT 1 -1062035730847.8720713308624641968684233531098989 0.1327035726494316334156825902629468 0.0319649623220730867912863517956903 1.0324869964123459598596656510602211 GT 1 -20897110384585.2892520691515216303606880135842668 0.1706117484351091194179075259174126 0.0256215680724250133895226991238554 1.0259555169927710713834099861683984 GT 1 -3945533.0794308627752426164990181735905798 0.3100897865315781303811089825772987 0.0389910409442561389719975176244306 1.0397715474166488256519115788533515 GT 1 -24653693286160389043810727126984.2321830421655417710357233859264023 0.7756650160836643898844921873619968 0.0520615538971098039498381325125856 1.0534657091063894327270066852699229 GT 1 -243254818010599415560145722657976424643686.3362162063616870920651861042214257 0.6481325120866616380905787488755615 0.0223851035540636088386326450975295 1.0226394529088699843819001070228673 GT 1 -125962299236234476516660039462461.1548116766366559152718239759220199 0.3721797966299000844169526021111990 0.0482700338199332241439105402505197 1.0494739333972678447247359024891228 GT 1 -12858104857010543747184722132676893889.7603031648010907293284664666193370 0.1952820687201065507504330466157130 0.0762743781790899562724805357066420 1.0793401975189365487737672060558887 GT 1 -43798152419655136135452581683.2322851533516928647486215544658851 0.9599152798942870874169645072398829 0.0868120476461000465558042191746889 1.0908135571928694693066669577598079 GT 1 -17135741820431838759959.2756837750451020362614118732703114 0.3488568434530451458357138291005977 0.0985035991912054738095511673567246 1.1036992287939955771781373829573594 GT 1 -23587301094001437192.7110044173194058775031766467830266 1.7747686220203945679019584886512071 0.0078357300486130424223686402083118 1.0078665906974952238157941919873805 GT 1 -6463908847370640989706.7649306612993790312977400933180264 0.3289306396082179080341590869979085 0.0534384323172587850533699718730307 1.0549192627116196931247812889560935 GT 1 -18404544454001.6474764810347813214506128136481312 0.5286064120141624822012156171075415 0.0630536633082021162207432284542072 1.0651292697906170722493790445541689 GT 1 -9363677042155775843819.0627477129056734479452421630599041 0.1989130002986922796078094631523645 0.0681414107218158393384713369637219 1.0705742040507317631959735984915049 GT 1 -219118385969361389283263667451409136.3568518560379585723815917069534927 0.6244009577610731723143024235640111 0.0488734931199108649555306125525969 1.0501082001732983580759957201268634 GT 1 -15210287768060102737.8402721814302779341952469864712623 0.1922750200041494209735370390530944 0.0945657648043202485959696670807869 1.0993406324622299412701069401552781 GT 1 -10840193029273567.9485666472190505928570783267899965 0.6748923408818570473360953387279008 0.0461474800690102786360310686318268 1.0472462107516185016700766677945410 GT 1 -3741587.2378479343562784008953158398853077 1.3060477346420848183031927459154751 0.0454985272813242616182673086485354 1.0465660928959161041129846968625448 GT 1 -141509275.0036643096579770003549538188281038 0.3496674930688670714216056962929680 0.0394967073926783534976113988578964 1.0402978687655318473432280331327716 GT 1 -229126980911642444503445086044625594.8604335242712072914306344048671828 1.5988896378899626577453759895162160 0.0274626342428020415616034266479933 1.0278467818552160790603793085273783 GT 1 -140009055419541689691699474550301105120.4984937746342685469212378867761539 0.9664126506488362213752594802147346 0.0495194296774428018087846172122476 1.0507875587959274849007365475696530 GT 1 -17639851337373045079940379265179303733.1178273173384259659858555749998237 0.2481350872794768864195345414301458 0.0621442644339415861447747909257109 1.0641591418405358280270969351051870 GT 1 -30972606049514.2165771732402434030722679819998405 0.4471497003408516896265000584917160 0.0610857657175183522571075365655318 1.0630311412377304551180076445004819 GT 1 -4355.2366638609404836538521811357149833 0.0180905076732382103592763834943981 0.0099386162463994688848354994250028 1.0099883339841413808015446644106590 GT 1 -620122398861176721522271464216760177.5602866056899144926392881043327845 0.6983818298698942917834066053271768 0.0760575179592118058583203166862621 1.0791054581516002826876110322326495 GT 1 -1152740.6321120579951662655611592768712566 0.0544713872079266773295300976716400 0.0362610999324331707436621315367688 1.0369348716105433965216858968682785 GT 1 -9459.8671016181473982124400413999414308 0.6453636366582702136822149594055534 0.0573772130946031596428213676752074 1.0590890902616875725831654146328409 GT 1 -71919896656451841994483678234.2712876030453847117807020837917031 0.4323107230921728879926622192394771 0.0987914601757246581640761755099758 1.1040185944100511674298978475198899 GT 1 -221385462667948411932715662846750008.5705960021427409863650605450177376 0.9786623906083325039563312107563898 0.0162685500613462275622521205612039 1.0164023359074418313123031992901258 GT 1 -74334942370310340218403418979.6174890588200120578061681744838620 0.6821627127526782448842084165069052 0.0712135070072158638883287938513066 1.0738763911322937648120468170874593 GT 1 -941666197638040650098790.2504130678706807203654384137544460 1.9532022176868152172873856998085774 0.0095840189262028853429849210497932 1.0096302412027914982898703908535884 GT 1 -4191531044278817095699.3170857383898684120128413498288372 1.6851568416711996932980396520184877 0.0897908378034869782511883575146472 1.0940808573147796492821601185115088 GT 1 -3005565.3044944226977202265501154192224600 2.0571023417623342434722295330384523 0.0428417762126610486812595913287506 1.0437865680840783482042967675187664 GT 1 -45435045305349737673.6946941439172077604203089244103318 0.3374749270085732153582305861985735 0.0560417064115320396330486474198706 1.0576732943333150345139002546198316 GT 1 -233787673155601619935379373624153854249343.4580203474484969475433414371025076 1.1939237627458563053427621925643223 0.0521512235129547929446787268248514 1.0535603079251211648899899467597474 GT 1 -1036596881098862697847125313912571738.5062625803786145929315760518688371 0.2077155701391209352762653618996854 0.0536652173800471546463871858294033 1.0551588797026263067906862533617752 GT 1 -7054678399707989839892216582557939993546.9449985821778650866070227653832685 0.4376820917284598586621423071557844 0.0407590498660292555032985675944822 1.0416129842139172643603150500886930 GT 1 -859247177879866299323397207.0361763484538441817149587893910630 1.0098344660608484340151094094342955 0.0914924058090468919527657162145342 1.0959520321374211391328657520885730 GT 1 -18406281591134390209382057621.8088349083153858292562122756480147 1.3462357074843371400145660370321584 0.0898507110118919584055971376728959 1.0941466390935140599743408283810195 GT 1 -50013881956392234.7028076116710438113205311502713564 2.9622173148928276456959500389050177 0.0526584308528324286268128073449799 1.0555587304452208208365026095734498 LT 2 -718941562243081646903277547007.4992848926315802299493074072110862 1.3681031943671214655361302773913318 0.0642942052286659823912603351686937 1.0664541737395017603335119146418854 GT 1 -588049213254888384477360.4360821285196380026487872511909993 0.3171111166349612948844171503244789 0.0086504936995710465921723133362150 1.0086881264050240348097855769959826 GT 1 -3371830783215055128848924.6974692675864646007515237175237446 0.0728752641337275388249938959019357 0.0174336866647905139727874215794405 1.0175874430276084370243485088789465 GT 1 -1088477495211171996540.7642341063223203774494548175813480 2.1910255798903599456687293611259658 0.0730709670534536804711345809716463 1.0758782719600310640826950653337586 GT 1 -11472985231042357205036.4819403093962120678292232288148776 0.1803616061823693115212604830686009 0.0804864035528322774074475405155912 1.0839104482638680078431225811732464 GT 1 -3111783291938322928086207796258.3851935621453391861148170578602050 3.1429926573922481838968702752164698 0.0677958843624369517783379784968072 1.0702034800805294563416918240069958 LT 1 -430565780845764092512265482589904825.5331012098889300302190318749863177 0.1865174896073876556535171896564340 0.0143602409270531145319266914015869 1.0144643470480231813764260415325280 GT 1 -14691090077605769.2430167927751521270841506075830372 0.7974585021073827810097308698750181 0.0233319769532471545341667099295384 1.0236084768550269417535728695383103 GT 1 -1334.0668311239414782995457214263762484 1.1265958309073024733930663605198517 0.0534682809605742804062897773483790 1.0549507969667219874713275678704700 GT 1 -3167695662578775598340249537099640.1189712327702215479307107010342881 0.0871188442034098338638952618750604 0.0235937639080106822323996215872308 1.0238765536627636324842445495309290 GT 1 -366024778004725.7207003175881062176310769638925453 0.9241583289706483304596780332648232 0.0836768766188141935994262506620931 1.0873862217283933754456307024511823 GT 1 -36436786237767738266521057498.5054280187196151274736060551927137 0.6769860425725444710322981167591286 0.0412781005671425908572264579247242 1.0421542363178378947476539908064134 GT 1 -1203477987123718212915024.8861410297730421829412781428612169 0.8406041211843505171254213851895800 0.0774428356658235370422434154267820 1.0806059382294001671914715796434881 GT 1 -91.1198057861307048350736572782958792 0.3159166191546991888528006574863021 0.0990424263830015743814845927907038 1.1042971105879189276641066978622438 GT 1 -1514878325929359435856448.7085425743377999304204399355459548 0.5709923594801540378959470649363122 0.0392701678349224844253115246130549 1.0400620415190777106077160172143297 GT 1 -4813301000651185792050562973867.8071200858010766785905529748803493 2.1472411818007450143733126553771641 0.0780101368117878632255431878836780 1.0812210498588536536848281900272105 GT 1 -9930207412928834053061123084201261572070702.3249216153371930746811877710525456 1.3710457791843158422188991718989314 0.0041440061248627118044459350364841 1.0041526163135934194420125752681696 GT 1 -12976180871615743534973.4927043694357697331809072772526924 1.5262337733616430131685687581414211 0.0837023398234327540132953695185547 1.0874140105703061754242422837747150 GT 1 -98550871065683854767715.0200348819562897060736682065262563 0.7252210361395066297627453630012720 0.0675950527540737161234345723936960 1.0699880659080494975019061997329338 GT 1 -9038267745734262293893101995180747330.4380029589959135828755895426608281 0.5923651161141055708114703120002856 0.0690183764711668926893548793947308 1.0715157403221812100205409804823170 GT 1 -23678299639432071480316817904.3198688808398103103110858748211953 0.9443685370307807969361024745939600 0.0244432554374553693551113756053549 1.0247469508900619212520492233497939 GT 1 -32711852782855430933800903198079866095081.9234947292563381899374410599897554 0.0592482347706042776372997535119630 0.0691795535435225978218876226426282 1.0716888812541381941205679408697066 GT 1 -5786176488930360852510088286.8948180761231766747328728256284707 1.8131890339922723353821662083470794 0.0435274686244353952564686300404869 1.0445032083651466610155735445246937 GT 1 -409885411.7633560023651758801698391976412169 2.2354792917730194514104880677260016 0.0589680503064884014080283973485404 1.0607781870576168720581228082527782 GT 1 -20420954045973487760589357178.0374489522774481820722773511869769 0.3928751186249034371258233429579326 0.0340928244285921446938027884952609 1.0346875409276926146242601656499160 GT 1 -42492208796060119604948.3618608071037709205341285324927946 0.3629319568168716560941376911355055 0.0901981261842096555902627633806977 1.0945284242574658085479793370893979 GT 1 -1782522998222614572203495772361638757.0580998749136827688630250243163913 1.0584746733600395901645909235788884 0.0650314849205280928690159395183185 1.0672424239722169659651218804276512 GT 1 -15618842.1272915248272820508900891513782582 4.4251346832786785496150011349516180 0.0817473828406402060403062758411089 1.0852827441264876244312651639198759 LT 1 -348192096.9677181379298517287877342741202227 0.1263412150673747823977428364908171 0.0593599421296017231027929976875304 1.0611947228058282193469276094291369 GT 1 -46810089475237543951390526996.8352833847186903051407225453354563 0.5698959279485323421306541118481583 0.0157718478729823821148218868664348 1.0158975468880029980944169991307250 GT 1 -980878124330693730133.4047020165931133237287851119013605 0.2774052423979300018229215826997713 0.0099749932584893723806430081903636 1.0100250768376538481280866600271538 GT 1 -100284374349904768861852418674676.8155662135871388220709697168898226 0.6961772687010405064737716205272072 0.0733823988209984376142056606911412 1.0762143107353622371273662224447279 GT 1 -2078038195544.9022175350811732248533151771939489 1.1204239979742237539863006378083385 0.0321781243495977512235227666485197 1.0327072213958336977855020619544307 GT 1 -1995909095.6596680123012578712332191032357777 2.8359822104150302198372029019303686 0.0757722585429477091598679562561364 1.0787967642716724277301843944384124 LT 1 -172812670273248374337966826607286178577803.8517088990748805717803286943313682 2.2364239796331929397029262854085140 0.0749111056578132461404325690118235 1.0778654440956591696881080971447042 GT 1 -1030242934784067962092618055266734964.7052247456430846133202840242543688 0.5200059817415919220598219177369823 0.0202571275949587102406085327712997 1.0204651168407837066461627362679222 GT 1 -12371290544426.4683884929635974829884356923310809 0.2551926803505184995815286099774773 0.0971121869502211664020064928019505 1.1021569713234482392232002568573461 GT 1 -127906382058670298787245170274965211354.0040397628592087290848200024862660 5.8081532987946940371632712044589210 0.0967558245790340520312778568274974 1.1017623574435254921354439898957503 LT 1 -173434870.2921489352379364708656507354351858 0.2375881673861765382061483464147225 0.0838259911095780710841168489844993 1.0875489663116911944148088819692126 GT 1 -53288955412171038865282.5731587730895890107519838699431169 0.9110560585550282669738846385810889 0.0709128131111151182629290443971606 1.0735526943148164356847603013404418 GT 1 -17.2158479575174667633388540938233128 1.1977183369279276973268045116887893 0.0304418081007567234013355110737879 1.0309147835125311708428102361498232 GT 1 -7472218.7781115131766982411333032769327062 0.3414596895864174329535777543081376 0.0647829193972913764280516833961128 1.0669766048735411679567979102223581 GT 1 -107280738899575268190250523756119504134.0019730730636608199749698033284577 0.4426020231536226695731220812322251 0.0358452878056942478514617016215368 1.0365035074205881567445235413664391 GT 1 -1835374965685605026087161579.3319637340823230757914134082037306 2.9425986229186261887532279297468128 0.0403112765145958233988776939633511 1.0411462934688458585906321723528892 GT 1 -1055608406061757.3982473863716959879898880810796200 0.2946442349750664556591321073259315 0.0475786016368452556055834286545483 1.0487476967898714497899149741912004 GT 1 -2261598551786853553569181380770138728815252.7648328704092686320313831246800211 0.2788174373043042362241405727602566 0.0414216401355340071568533428917066 1.0423039672407473763161175239177888 GT 1 -1217225418993767525.6244506999218119559793728111026662 0.2825477566463364402374400010696159 0.0804234211874059298270135266625714 1.0838419553032745187186289544313365 GT 1 -787126213041766629264012452242.2687618491602153703020610504435151 2.1805174828908535305231449657844695 0.0889170616776246097293490295955015 1.0931213448975772848512762677029960 GT 1 -44361416480418039707631.5312456222122125428226417358543320 1.8363710420626293079405461954014192 0.0110250782464832722745154762142475 1.0110863048563363583282754149126794 GT 1 -107968425076628.5657477871064299031211446390412704 0.2324760071220543448098634105489985 0.0258110117900066397564092270509950 1.0261499610917749782742855886713977 GT 1 -3467296339656436234755579541.0208123661502604183151422970436630 1.9188814365580129582765498918333800 0.0959561957949981408176693733398650 1.1008774637849292241748278926488565 GT 1 -186696.3774704833753563660603490845601375 0.1182876376780269125168981012661801 0.0114341449735575191139583067808965 1.0115000174206607434091366224584291 GT 1 -47362363138170009.4489368040138166384427485968884718 3.2928218858845007529450117449925636 0.0730883404088866004088941850828741 1.0758970150543037944436338863299805 LT 1 -5902160774613180.5958110668303646408567519171720992 2.2048558924228421281657677334078463 0.0903264327426986618380309207911940 1.0946694611253512212494290049243981 GT 1 -196046576389785829417088444320.4936037971864881708801537134366390 3.4603694798324926900422725943238725 0.0234553625639955796069712861797801 1.0237348180501347529406155556161724 GT 1 -362226262855.4807636613626275138150560324434197 2.5782976601979307836479729422107080 0.0046848910218307286284368660218861 1.0046958995196391019527999681947439 GT 1 -4705433049537017981712699327522164906.4248374574611345457243930014084254 0.7283918070905612571002939259446943 0.0163442061242942184438825421415092 1.0164792460970581902913479743598418 GT 1 -3330891227293837805132185.8664516872760911646356314589018514 0.9952636701266472492724637617559426 0.0572536405866531252984756247851063 1.0589580045182210850272046990570460 GT 1 -27088351473.1492071876859838756764860334890627 0.5193924790799277493951780127037148 0.0244648841132502266671372857229001 1.0247691217332028102228903802608113 GT 1 -113498681713219192045891404725818956.0269894097942393548946785414073566 1.3171865328128389519837672639418647 0.0597791236053474773002599730560384 1.0616404564324344249122410137879143 GT 1 -37330137.5253994511947810337068055049638699 0.9032127183689313799318388410205083 0.0538717060011726103019831328901772 1.0553771017905455225125576865928831 GT 1 -351.5734775442734005322486549480656010 0.9500867501920718086325925648689865 0.0337259232963152095547438726919476 1.0343077617157218605031047924912076 GT 1 -262706.6086488314453890403485885465351027 0.2618232316145553532552609370815418 0.0144036855190312519657405381639712 1.0145084255757733821435884703408812 GT 1 -1791864799961189859.0543091786459993823717929098644550 0.8134072146341159706847992705073445 0.0328777435187862518833297758183589 1.0334303628944005181134529413538704 GT 1 -24.6898622420922718280689864557620673 1.7091861379366713966009335994323926 0.0062102986093177061618169486845997 1.0062296627266554219379602361854239 GT 1 -3.7099291546566731217144401730288428 0.4548169037785673524246684385447104 0.0436267749051528482049625764471696 1.0446070392992099599335506906315824 GT 1 -141065532238784275705813334333.5470599592298256284304620308272514 2.9891239052265901677987635255297264 0.0666403355609068809488636724989331 1.0689646599858712484613827535384669 LT 1 -971965758139831463062.2188531338609293544754191008421058 0.3169930835411477416049120294052730 0.0364853224666709570793092591656391 1.0371675576855419706335018905319204 GT 1 -608660969101965112089379613674038.6710614789877259867275462109937457 0.7932094991556483207686883082250245 0.0642471855271126237299006186044857 1.0664039244833002128158468681909741 GT 1 -84157848442821826820620761.4701659324260692143606913879794301 0.0700632061805018613666172890963365 0.0842651443979295959579952115843328 1.0880284151590393705892905870563654 GT 1 -478796383634919119494433385526374.4806939031782660342698379846461023 0.0584373167500395310668550533869848 0.0077648257486575826461442119543406 1.0077951289762245636981829490987807 GT 1 -1.7939774772623003718866904862076793 0.8882143355744043065757449521709636 0.0310572350133080781923565033480342 1.0315497348970447535402861439347252 GT 1 -4986070571.5685517369278715292931654699102616 0.3324698285122977849827436585445099 0.0189933839597479520248845038148028 1.0191760752598501501146431290429113 GT 1 -138756556165986025742.3386773919814688471122742365250706 0.7479863907327832522794135347840677 0.0874929674351825989201656940377438 1.0915594866348408044142500460040119 GT 1 -618887120885006652801706045565.4242927439081504713643486405139225 2.9073409579683848398163722068504483 0.0279190945341210580641294974300290 1.0283162419096207942422366445844544 GT 1 -77850984084992488943999618860078143.9105470951246472159944809448294338 0.6799850531586031645279909735779563 0.0085328913298378413842361368441681 1.0085695048754451647945121358063316 GT 1 -193.1634162250872155309677593434685018 3.7170387278734074304153307563542617 0.0571082930978872338865576348482037 1.0588038418592779900761000242246557 LT 1 -2801450069801298095518944889520.1846957748391552621524880203679499 0.1453674652844506856933027511846446 0.0847027263528539777798730640680596 1.0885063772398404205139734633514407 GT 1 -12165641130834022766349025418074688725670146.6772484251419134444946247524893097 4.6641040999238462864262862538762217 0.0341350814071511848878788672338072 1.0347312903727678753109586131228732 LT 1 -996495275128947.1714185685956748947287842148575875 0.6499507513500719680239107169545445 0.0444097852957026096242806488566317 1.0454261035323697941058307521513326 GT 1 -15810322507255157834796368698.0428862392163923856393377540107681 1.5204666016868786332828184009993532 0.0463241348586435986572170103305364 1.0474314292694877864510351055221293 GT 1 -116208469528033900536867.1556361875017133225155609377711268 3.4811538992575923792422796102041401 0.0386851661749001837226203647439007 1.0394533130244302583774598300380679 LT 1 -4360924063.0878617639872535443083929079089076 1.0492551985463767193706158660588881 0.0969984970779761799316781677167683 1.1020310612010618029641108345030827 GT 1 -18496839119751676.0657487401714860144179615292746928 0.0499323958299484769633663504638512 0.0227315887188373304939527356280923 1.0229939345979123557070667185508933 GT 1 -987821572093564414972649803.0028712436036373057957252747250188 0.8342623544967921673795187957222314 0.0506568889539577992576796789204750 1.0519849956144939547925428784201499 GT 1 -88.2090140440341453864064516127039370 0.9801965504971064076384147711979902 0.0616736828692674111204630271233414 1.0636575044073604395079678562852090 GT 1 -21619123716339595038610599436666.4504363656549159406311289263849530 1.6084514194723025692158441294740307 0.0284015715317382391460919108351261 1.0288126993232521758997463492055945 GT 1 -5852901002922722453775.7685233516294881178549556541780940 1.5784396880987574786567374995270369 0.0489406469691542290458578160031722 1.0501788072056462982557796874310532 GT 1 -1536204052933655434.2092983526006846523007761968763480 0.0106212891346730623845748765216267 0.0688135998119674032750000556199439 1.0712958067206835410482055095431704 GT 1 -157888688445285034402908197863299989322162.6719617693190826001604760704258103 2.3377298804941136189142931317079008 0.0138070029727320336061620235957340 1.0139032061833870077707557157851407 GT 1 -4056814708263640699811829014559269044757.3191780768113253493109010979096652 0.3423170848030320107794496642312927 0.0138831363207087206930036408443693 1.0139804084014879984236527302591537 GT 1 -15423513401646540222495093403303455326.0980651930431800606283837122171601 0.0850549615635073335784947705965566 0.0468215254607365761315116895530223 1.0479531163255185015363167251965988 GT 1 -736468209222421396344802737336949863.6957113751395508521925041300181398 0.5136061994896264708003526420778586 0.0695784224358983257405608041185899 1.0721174863397038022245855561712164 GT 1 -91169586337250916668772820096223314039614.0507257522598773222609694701554223 0.0140406261527502224830706478609494 0.0212525033579010426518992728478959 1.0214815893896171491005774924511315 GT 1 -169460992105945660760980875179775539599.4940111229043270746405986809008473 0.4756903215392841209676240933730300 0.0210938319630742401832484163542381 1.0213194857468359050532847605164219 GT 1 -5555920266939.0187174729823535749989714225462604 2.6013135806729836041766150195338933 0.0175644207305703970313037997274296 1.0177205055620159609684534639296663 GT 1 -1033462513488754220905645925179764683.5275489859729013355188504106861377 2.3325977022194827259684259714896818 0.0784957492458796895995010402367455 1.0817478890189587371300118272014596 GT 1 -261612323799945.2433234503174287842526114381639502 0.5292323382556991250533807267699977 0.0702671153462725430810250542638697 1.0728579548930735743124811108686315 GT 1 -32789055.2735010534364106531887797450533381 0.1940699771446754927579181667618562 0.0018122907684406334613338127652209 1.0018139349541506761763854224063078 GT 1 -47385042990691460458617.1454295443161916013974574507697689 3.4711196540644799978060522360273618 0.0052866721881059205888541379865372 1.0053006960878621253201450659552987 GT 1 -978718704476119903204244457138286.3419497224656331410821394304032345 0.5637524991269209871989996014008134 0.0362801057887837695997081914057161 1.0369545927650579618589364358774029 GT 1 -2104995000071.8366367024598157017871878421645631 0.8011779157802775039603889759008165 0.0840514369445984196001193135573067 1.0877950697543432777620396163105405 GT 1 -1042178933279400723881.3129964974777410801932896987222870 0.3932709840630510339288872816794729 0.0643219488954693082282454442374935 1.0664838241683718177433116365674101 GT 1 -1703425453200602402560.2227207750849875101048973656666931 0.3216845348232082495454750855525038 0.0547094494828689827348483134623730 1.0562629378801109665548421415402062 GT 1 -3836734732743685357823389479072.4082125229327029999153945023621556 3.2563607112080694260463639190490779 0.0823309297352199049398769005944749 1.0859184432614001027642718496568678 LT 1 -901404469316310316769809083722902681763.2197248884893475125130812980762744 0.3344344218215743832136057402974108 0.0068383148996467775137107069836840 1.0068618033170210306806569600049689 GT 1 -2339189.9167856392027436477069419314144378 2.1518031730667092129261727126392140 0.0591749201664775185960020244053350 1.0609980442067802190253088150246508 GT 1 -1854601158545976948.9621247611032610545193443220699160 0.9401070061592819615843865292889221 0.0304741044179873047894068586668892 1.0309480944116737846920962511984209 GT 1 -62936014373035316419598944969782385828.8454168463874547667409000033659484 0.3908942681520578399686255519614190 0.0202537708767421674588870601636261 1.0204616907250539197334463353311998 GT 1 -567572011691610784983620392534134.4139817747748132162575419111275293 1.1433333671249254122977783530233467 0.0624155809706654132354573185974524 1.0644484782269321672392580537251504 GT 1 -174660050546969413.3100042689693754176563239123303974 0.6373461621754581728503940043580447 0.0085767395113785047170861083128482 1.0086137314068054563633483968214858 GT 1 -169392918177012574745439612896317969239722.8060664546659728815048156806016124 0.2683679510159457315977175042548624 0.0261201243630001138610425043088277 1.0264673139136637761512224996002817 GT 1 -36758937096072217442160914742659035.3824223681771870898676230172021076 0.3709915082063220775997867238525408 0.0469893684068442865329966881031315 1.0481292194686972216468654582398725 GT 1 -221615377035406658024981.3251388989816077408544190496823760 0.1828333275556639663288242203969078 0.0761568429602248084973194321617504 1.0792129652119518180668389497749065 GT 1 -921774505902454.4369221878474721981073884376934599 1.7789762242018804459038473458468051 0.0395710536412455847940271188023415 1.0403752751904918131504304545553199 GT 1 -3338281542.1477280773145608651238981374942537 1.1637631905432698253349154186822110 0.0899762619135518816569322730846611 1.0942845940021864865880490477212930 GT 1 -2041392828952.7512062184797717998428691488371634 1.3777293123376652460115039340798316 0.0535456382281266488875179933834129 1.0550325273802517857357881714306184 GT 1 -33784955975590540732047366464669686047.5599607887549318361145594241336444 0.2482271481869100780031797508963049 0.0175658573884129157850588588810216 1.0177219679061363066806639660290384 GT 1 -21099612527600613978.8253887356183674412643238612668989 0.4734087158490412822450489546258984 0.0077031152821787275805631658832051 1.0077329375228591795555323034845280 GT 1 -8058804711716405067480779.6568316357028147800882017308706965 3.0897483858661018425579255432397448 0.0428729203392803774071546996478362 1.0438191067308160930967831924812239 GT 1 -2060221282748469116625588206.6132474801210644908615136032269042 2.6946975017511428122254169878949152 0.0482486353492396227602456103289563 1.0494514498873453566973615524806883 GT 1 -478406221749722364856042392876452536.9511158951957670428051311011145295 0.0216866368703774169724052392194282 0.0652540087774284018400667728203440 1.0674804537432872781030880862251772 GT 1 -216065047382373072.8085817425075592334609829622654462 1.2813583007318406179532637267699796 0.0039539543028793610432240327106535 1.0039617918465419428738889920185205 GT 1 -3691996015643702.1726627653696856652866563230037166 1.7367283962681929012250420038543724 0.0190576831039073759928763842085968 1.0192416214553734062456390341117832 GT 1 -252.8845181740683818482011054570072581 0.0415873931765147824192898109123792 0.0537966666015435149687326085671759 1.0552977928590855149253941204295166 GT 1 -3.8048608857366960727760191494679785 1.6076694222360770696813140239891102 0.0120098666711890526326103372038476 1.0120825677934354137109765233063979 GT 1 -42574097543856606.4543897179615441164306053998679151 1.1663042943567676468305252130005996 0.0699969173924767572936557676509309 1.0725673782085833881115507691469979 GT 1 -161080813055357914599156621543011285.7530570304299839429233686540436683 1.3508508167487547802362448763401495 0.0255316550679140584568614158560211 1.0258632439565915571924362471642521 GT 1 -306013972974665187435182378159380508587418.4383734990106240029544544064457977 1.5506098002511717525557464653768080 0.0050464829979619974290558748515425 1.0050592594956640615900108277721479 GT 1 -90640981099113793332748564723225304.1914576104002941014194835923708817 0.5878473935971918593987109323290958 0.0036387485184910616994863630889036 1.0036453848674424957570273643626036 GT 1 -87420.6002848883782261868747974009563273 0.0526519343752084560988230815833663 0.0997557926586999761354235992201175 1.1050892109739372031117403083472008 GT 1 -290839831957566055441.2390976660413954582891748299088665 0.0417183938291139250968176391118616 0.0721157948151319132423913908388507 1.0748483328770868128445292121542483 GT 1 -4635916093667618738471768.3096150561089743551566727810162709 1.8406180006736170180234128868068167 0.0871221313587204555171824394658145 1.0911531766217374540819696969981975 GT 1 -57079619.2047056761394578040490873382780403 0.9148033098323370761829028873211842 0.0590402807990493889366536176417362 1.0608549466881617652591781450191784 GT 1 -27165974394158592058560182903107829207.6214961492752387922267090723765721 0.0597907254142904739133282166620602 0.0210466575320288577504446837957585 1.0212712959448594126187256533776944 GT 1 -3671888755318334993432336073409936.1851843564361574073164642517406258 0.5513026158855845615683097645909150 0.0954398336172975747360266815858699 1.1003064574174460311989283802339866 GT 1 -75.9670137913501603052012508189360315 0.2490206000381223495172150359953688 0.0715464593159961908786327155975626 1.0742349363997981075691295760831361 GT 1 -183.9220695471316292814133382282536223 0.5379226157886459161504701493407012 0.0422622775533158289451177475762929 1.0431813146464953469793398991925094 GT 1 -35540446761168281201326611767.9401489845997499063497713271171184 0.3898530256151199347430680648733064 0.0417846076457384905057116047778897 1.0426826908401150783444024927284680 GT 1 -11132390319312693204271780733.6063946420926426355934775944437249 1.0116764988845012824676835667282051 0.0442333613758385764695794693352509 1.0452414975860151497957037541016957 GT 1 -16948920532400752046709774664.0830408271980808336393238120912342 1.8062211004178972189241173440244459 0.0455108528300113752111743314696324 1.0465790060538529448017533607731590 GT 1 -63515689558822537237705812353538130.1947550223424673785760790777131081 0.0397865285103865122601561174566145 0.0230525659923348894072579797465312 1.0233224318590084241651452528685241 GT 1 -200057385306604.4901480605632550459249981251393348 0.8263596507749971327872825921928789 0.0140203483819606719569454246378372 1.0141195618966734762113127042303312 GT 1 -5306245137.8849000406286250760271186245679347 0.0601417952924694184992183534874246 0.0649069434995140943220750331618848 1.0671092289768319739562289914573223 GT 1 -101461959695262841249257444027.4262230880972941049263621604068104 0.3984272761630880639031763305375304 0.0576847273763412612532391337370450 1.0594153760862129254877030636863486 GT 1 -10361009166124103286.4727595639505608719713660266100415 0.7843719194049387292370591915812064 0.0271766863280735305298381341923280 1.0275528025229394370817947293172218 GT 1 -4926376529063757533356876145711002932.9329471820835901292992694682631607 0.5198403271854319063485489990744324 0.0015670301929009280138274743114585 1.0015682592688809186823824538166447 GT 1 -24168434257557.2438568374115789056320922203012193 1.3086453055468828074838897633076549 0.0003780360273842001578963506352243 1.0003781075010168400493217066666383 GT 1 -7234110518520731818911378275.8094278982360294958886255255886064 0.2247801294576216557903375065789297 0.0394577414617879355663656392600163 1.0402573013454906867774162504901564 GT 1 -896141.9923358743126018431768920050291157 3.0514721341531249657118914282840270 0.0775633419800187587056044271167315 1.0807365688178677455383740408825842 LT 1 -254981523.3871129322511140023995110921138550 0.1210696709435313824142236191115658 0.0470801986202694046620801901580442 1.0482245327203484936530121619590307 GT 1 -85875432519993723351610490586218.4946163977587163807371975849148132 0.6407551533219744694313852204421831 0.0336817832670144390739607174602634 1.0342620821076034270837046414658628 GT 1 -320884720012629198913.5355497040549513391345591706416077 1.6693506814783987458076981184202964 0.0543498727901984245051562899587266 1.0558826227266637569505883373063212 GT 1 -79098640284247670.8458366186840120906119873970714188 0.2002812427125264261204781106938533 0.0152474959933220066838914627880694 1.0153649343502185942979254380322579 GT 1 -3218065373629052389181258.7156261359874265411068425866509133 1.4832116461399136083781868101377069 0.0651839558524030858391293785604074 1.0674055132773035099868532703036410 GT 1 -1175832409128024.9187973101077587693656353140215813 0.1738740180998612893797686377904045 0.0743857303889588611057879476472864 1.0772976866149349485397386704462800 GT 1 -193.4742039626934267737413156322147392 0.1758708739375054165020766120724828 0.0050476237678350611228439839372378 1.0050604060522695196706296436193809 GT 1 -8013409912015475586133355232600.8620910532567648902321112006615676 0.2870759389369707445615408439671504 0.0896836337636651502891683096368989 1.0939630846845457571107905319144146 GT 1 -6973324217181491153795.7219570854763908086975064082360450 0.2395328631530278949535111454340732 0.0248281148692639581344192185309702 1.0251415310801957431583676177370029 GT 1 -63691716198297638.6887645601167795828941694194742846 0.6482543313228930963012518563927147 0.0621805329271961274087730962840569 1.0641978143070780478619269768243737 GT 1 -173307261733193999619628370.2061507278846902769839907122654657 1.0491524636845181927135057166383446 0.0245174117911477170727463223004438 1.0248229681722176027033125956348534 GT 1 -2539239415486404555271594464915322570823220.1212102961500872881296500993084500 0.1829312947444971669400436537515018 0.0711559808437928704080914296546349 1.0738144561424611166309685315444021 GT 1 -103914985715708973840766369464.3683422882032721589240893817800287 1.9648103081361328702331038743337372 0.0718340893362316558256451090231437 1.0745447791328662834792986789945937 GT 1 -213566523854620.4985598728411363498071209455679675 1.7395753998390054700969565166222793 0.0177176144435626993479575650152270 1.0178764502991694553240664321636679 GT 1 -2317656466.2469538866222872902216324866725534 0.9782657658899419963684803037596043 0.0438376118787578831728685007111579 1.0448275183041520720957758991148710 GT 1 -753159758758643561737517.9119738824472615312532937233555242 0.3601430978271471379695224549308385 0.0718608310819776626495692043332134 1.0745735909332993043382622087882627 GT 1 -1523690207951645233002477295204743.3297709608303383823548059368666133 4.9737939128433017930015779053173320 0.0743108163292668714031725323129059 1.0772167554638585753172264924971712 LT 1 -3386401212671510078404776087078161057.4542897409799377100520679494693836 0.1691160589748543533492763856113351 0.0178085907878297730088519184671731 1.0179690718903297775305350058962189 GT 1 -7097701663517858006377952637143640913223499.0632178298259721328419168202683711 0.5001950322262670962738320746232502 0.0473049740353633170984285707509648 1.0484604412711332342758594338219539 GT 1 -62269692913862248468417297665126844.4213064648307543996595945240305153 0.5183910939786396116325541174926969 0.0646138139016807774629544894441114 1.0667958017079725545873896757338059 GT 1 -25044755246.4070656768290967405743683308857109 2.2916260022985292274704497937741300 0.0657929132295971418317783944720070 1.0680571450186860930763936690143956 GT 1 -11.3068564805602341358320226048916601 2.3578580293437040934869141100490121 0.0692378435362369262774803975811904 1.0717515053812029182434926705312336 GT 1 -30732.7779512768464265944059775466544060 1.0091661818788959792238888274185362 0.0318284284798606569845420497979827 1.0323459641053699133281548094808626 GT 1 -2445258693085370570219983540003.7489304429235736098515640897493202 0.2068056779403681137654654458310171 0.0023671962571957193517909261294526 1.0023700024957420699074818527862151 GT 1 -115522202.5933920087679688322026294932898199 0.5176993273540994541683154798278028 0.0461119546891468550614513458467668 1.0472089673438776525870690064518165 GT 1 -3963190663985.1494231468068759852271494230396832 2.1107675259742531567246219357332648 0.0659745221530213414642253505899143 1.0682515629165814080972321628419877 GT 1 -341535805270.1482652547207743732118235399032765 0.5295970837006166041334032215698171 0.0348605243735047858967801417220108 1.0354826537592564520574223371148148 GT 1 -7062264082809708231621287796959170788550425.8186063942321902452298230376023376 0.4056261324568302115704532087647734 0.0553417083451441795097610322038839 1.0569320130124675471942414327114912 GT 1 -109840674419208411501720474555.2039292269893014478513939844117392 0.7605662593866151812832868160864435 0.0429984877559553455918745553384303 1.0439503073381171285372672006471414 GT 1 -104759.7421072832079541009106783605012748 1.2719032985411729409153927297215273 0.0025195047725407541255516805833869 1.0025226840659762275855196356028633 GT 1 -48081786625770454162159269527974.8100932738942017588441815731994994 1.9860631304264745302315505453319868 0.0695556061148875617117225804001373 1.0720929640781739851239345425840515 GT 1 -17389331909355010786947735450071353626.3687613927413815004869195052324400 0.0663859468418682721874531734007836 0.0252093628354421261294683761466765 1.0255325621555902643890618181838969 GT 1 -171273400815429763.4991191135963956152362460970298323 1.0415715253601208529185304208441524 0.0032269614251355626992040728209440 1.0032321792934188241985962333734816 GT 1 -3320770655819260696075.8893718737777850575749113803425331 0.1587103201639327982762323328167947 0.0481584526571079149535613423297011 1.0493566999104663958404984008423771 GT 1 -135812131131187958428558432364638317.2316543407833618082121951596279060 3.0634969270582361860592079125293361 0.0940566794677978504135694138780753 1.0987785350151057599302728573738547 LT 1 -60334130932317.9102923617212554564656504308767232 0.7609127880456135866064942107109685 0.0321123309272702981694773953107891 1.0326392427855797507673843186698173 GT 1 -66973.3462592563569967539751995299834537 1.8462784563003580926598171619766725 0.0325976279540536787996413681996798 1.0331407666157493451211438076763713 GT 1 -174613587.6921657674101334032734256415807044 0.1959920152307870040208765004651144 0.0758625494868350156186865351639104 1.0788944624368958071625604575203083 GT 1 -490640765.1205329213282544713053530101037834 0.2436778137238309981657472317081803 0.0922334423019708839896461687766754 1.0967680284816641651930761931171382 GT 1 -6349752513045197143451667.4149611401028442919272495167160091 3.3312853283109775025804620914469131 0.0178831390590622369400887423431946 1.0180449747131208704287551543207095 GT 1 -9.0376068253154300733938300928373279 4.9120953571195386233084029061248750 0.0442318629591975284294959813045099 1.0452399298231262668622131556887422 LT 1 -4429185738512713.8567741583529239790400127352713119 0.0006921137376763995963185787422052 0.0613874394208459393730494461716088 1.0633524934621027346936686246907246 GT 1 -322546586124843403216269891399.3780998358713502847086781108200904 0.1631017192414357359700391435589944 0.0281682694874457149626237452577767 1.0285726062647647105316820499286446 GT 1 -11746694223971968815064557.0371841387008244106049556019643556 0.1416078899799289689456917944094653 0.0144835200201327336338940410832123 1.0145894300737092533208248422971432 GT 1 -1470361964043.9763832547677572722821307942071958 2.1235395184571998558244953291826262 0.0551829634590506178429069559502008 1.0567639823596210282470536929985886 GT 1 -40928070643985129440196278787.7123812344245506756985515662593999 0.3697097519623963446372792362337795 0.0019450651911315995866041558481900 1.0019469592869221880671795111208559 GT 1 -224488797540984081.1327952311596640847050059698349137 0.3176317962622056156570253541247721 0.0549892495248117302575685053745267 1.0565589753888819723323622245650903 GT 1 -302464640771833383240796528439585.6104970039342651492643706557130886 1.6225614154645724721422212140429124 0.0632838822200084858981384659319863 1.0653750119331417062462259886554539 GT 1 -497024874476823403550816257351141502.0822468137005004722291997490704108 0.5229046094404309157270526350431094 0.0195400745351424963767243256318820 1.0197335057109768722021178686615285 GT 1 -104244.4209180979148623012009879137535090 0.1276730621508180642524392789091920 0.0744207991462202469783318759611639 1.0773355743428521990367681300081260 GT 1 -217436968712789457.0539962148708809030445037587805184 0.8194988185535558839191741969849863 0.0446164284391502140817827678361561 1.0456423735259597230139461875229523 GT 1 -13928632.1653554759552210020920214208045945 1.6695202730564719211122810406488808 0.0445700450460046510776806561351065 1.0455938252060833482137337582545575 GT 1 -7869939239774042.5154397018846327064933365976446376 0.1333074459303437887188006565383801 0.0065999251640786604154912744874154 1.0066218009757698256032803260935864 GT 1 -8489786671934240463.1997277773284782994779308239220241 0.1959747093270299103334276378984180 0.0101360950316778164116050519382373 1.0101878150322981772715014965049549 GT 1 -6784636865114242110845.5984280772467058139584547454530271 0.2640654981082747250149386186998187 0.0569654379219330696286835836981290 1.0586523458240648673146625374399846 GT 1 -8090195773909169368619.7347549286819393307497549550808255 0.3761527926613460126243879798759988 0.0326105722338098624041520839787524 1.0331541471559786696301342843512421 GT 1 -1415991617499383521167468755984452874.9824944959007981020223811287503715 1.7189870720877497458204174501257522 0.0405506388857608693342392546605235 1.0413957412541063523420337536481097 GT 1 -14909237886226031077087465.4127697830541214924898049323401511 0.1011631522400679126206345894968504 0.0758347222733792122797634951035355 1.0788643513376340462289082334734501 GT 1 -73970624709.4034481882749342611872655874820659 0.6520542570141752862773341630715446 0.0670871234002242597219303236307091 1.0694434623451496472359145956235874 GT 1 -6093084489364017281319237.8056004158753642581602382069463675 2.3503522665516624414981076245299339 0.0732886637604336882924478656814508 1.0761131575522956263405318721575711 GT 1 -3.1538509602300349671866706069955854 3.0303013483491901017242394213995432 0.0814304834633565408861081870156505 1.0849376923388219365048957107548101 LT 1 -1248345.5086161512972154705566115836952131 0.4959276618635217462761812540143967 0.0952949055554640060402240373590308 1.1001462508791551420090478736099871 GT 1 -1697146943769093745328243955.8704114153622727165584109297078832 0.1543930080032630828485261433842467 0.0172631622877066942311793605324311 1.0174139080923788600380435675717355 GT 1 -74132444479.1754457149999526433054196868344315 0.9754180585084416163869366206239881 0.0301333791552985039241970538792003 1.0305967212231021768449894137329547 GT 1 -450948789688075163903267630451849164969348.9598708225490455088117748753253247 2.4470821595416431899227911177531219 0.0987190318476483322781222636936715 1.1093398074294897655066378835834176 LT 2 -2014.8702426811514647391466358123805454 3.2539591778090697333839901786317809 0.0945829580015189762561445186233757 1.0993596215392632407058483360828013 LT 1 -577221018308671027046110745125257.4421984700392776712415290714081278 0.7846685878751056629479054035415040 0.0424698478906113996167621690235458 1.0433980679694803675889290149996826 GT 1 -191688495866551223804486842075472932487827.6348214690900184756991454934304827 0.2115442032476776170438474051484822 0.0366729837712870643310378279219266 1.0373623441133185668407683525297638 GT 1 -2575879312828965303507111729103199828650753.3956389378068505961349685440328562 0.1418506059167713282460245801619300 0.0893615741381489372014434561057264 1.0936093585730883849118451826315482 GT 1 -7185105562803751861.3474096772130521071142669171974673 0.3386767058631124047028259852378663 0.0417955672981344872341732604967506 1.0426941284721545978962326282173900 GT 1 -115848288495618286.8733309613729081231474199240502803 1.7394695380577706295801267515470338 0.0300628228798732324680858195723196 1.0305239754376465430755015706766754 GT 1 -7168586012857328556167879464472419230167569.8909072499265279317727431355398072 0.8082439514756723397094062858297891 0.0396337220027371470386430206394533 1.0404405277074901404926118763585003 GT 1 -2870275724679379617.3104613871257222014935661549103919 1.1439261635136779131824270012611581 0.0867242240030880345769032730021153 1.0907173892353935261320307689183667 GT 1 -15352772312985693073620428671141065181153.5198686875973756400966044015416189 1.1202182507413931679493793026999835 0.0148337747528696643337935447025942 1.0149448954517693309612416883836430 GT 1 -3121187349859247320753.5462335273786240200013701416306796 0.2234974566100554854632689699084065 0.0705381689889003064061987780362153 1.0731495366647561073607493746049784 GT 1 -5697.8760756642576408235443320733925304 0.1789673472218093291123455068191202 0.0175335561345919545544306475966053 1.0176890896485326626085081918856254 GT 1 -2855002072944065499922219943.9913276329884286309324173448467922 3.3808307094368506735983753230389742 0.0308058504507061972615714443603205 1.0312903264289162135510969797898728 GT 1 -13223665357574181409849284318997771105661.3487389363531991818446978634210018 0.7111525275599884046251094412233998 0.0376488410695629215202896367336675 1.0383758648504797120927599538626233 GT 1 -13354622569261647140929257081496.0714671823259039694549429411023479 0.7176395973887883997799034723859271 0.0672474384225306256919922349322566 1.0696153206209373711494216577208455 GT 1 -2972441555561998674387431911.1513698014866594126352957926072451 0.0828441977913723123806323120891949 0.0453960838086129252241547970672547 1.0464587719764899118227893660881677 GT 1 -40.4307892479056877825761873427133186 0.5080001517678663185268857529010021 0.0084953082697032858317362224323045 1.0085315990815942731217795381857531 GT 1 -10246756124850.0166954751097591841368618168649808 0.4476456482841251436725390154975471 0.0608606608809299761302694502312231 1.0627914198145991010604167954726220 GT 1 -3424690563365959110.1460131034207644050420914743964434 0.7768851091550669181816047432318764 0.0160834067052381467668385556703744 1.0162141484342896372452340404264484 GT 1 -483741964863317032.5467827674276157445712712305492655 0.0084798747032779393418818489611856 0.0684014856734435021766496409318694 1.0708533357278851553369566738300199 GT 1 -2076329671998961225521680357217.6940708683673721501108345326695880 0.7120482730858334604309134522805696 0.0556189249599462083594732410114025 1.0572255131074677456826627669718487 GT 1 -3311898696004115696038437788180889879.2518393017040032761566350732489044 1.8404690358465024872131944523168780 0.0095379550929768020634131599164800 1.0095837327023889273638332558602641 GT 1 -22463949007569827426308.7237092742720828189305217867048856 0.3422667010344197704892231498608091 0.0971679755648408807936169416840739 1.1022187623205667835450663094508945 GT 1 -2056277151630415703234326730154.2752527157644735437942508719045607 0.1432902749998727922836513735978323 0.0715404643778475679618450250032255 1.0742284795136625765412935126673018 GT 1 -412826127664097946091428061514928546529.6934257125653593395771513508415958 0.7450760767140205908391940335808865 0.0070518240227477162552698272650140 1.0070768056470608882490792611068379 GT 1 -7434048995771010050879804892009290271771755.5763373993801158334879532737136797 0.7258910507049095097496858556198616 0.0098600661912146494774366191172678 1.0099089985604858565216667061722425 GT 1 -321826869662782694005598884585153.1538958136084385756403240974396743 0.4463420873644082022166392979020987 0.0313080385799222043734094270524821 1.0318086109014812527435434257316653 GT 1 -155641902092075097873535899590103202.9625505215842268879917266645735979 0.2814471184383581925488122176566116 0.0429606163828514151224489749293723 1.0439107351709907486125011788205664 GT 1 -196341742522557840272252182996606130.1439213287780340016443589443447038 1.1971883417330667567880490351769531 0.0343735379066123409356517564205786 1.0349782047551534986083562965814362 GT 1 -2822928860693076967237.5033549385603364946380894158834403 0.1949831275515501549379875693148394 0.0553510111283891752200506844699007 1.0569418608369489927073824067194222 GT 1 -710.9338751932986722532326851953444175 1.7118500654568678955590021795802866 0.0129777621208683842787575966370672 1.0130627090232076413881640677420206 GT 1 -38401903463695976857816.1390335732508996718952457479922444 0.2573937463215496103553801691748961 0.0805976686644933777001410673470875 1.0840314598991645058312692446840503 GT 1 -2631.5143507017062327788137216992033314 2.4108268075489466597229087063521561 0.0877691814898421659700212832141105 1.0960815651505034063419397477599611 GT 2 -4509805066144376865677.3807926057807797034867429713635913 0.4441528998881157774907207718378850 0.0398526059645376433224524364972730 1.0406684708520099666657332942231938 GT 1 -926.5872780262710115867553271526701504 0.4765349215872574329724697807779413 0.0718794470913666556285785652265249 1.0745936484814653529682364916208771 GT 1 -14038234224369340081854135418.2881744379601980115103059691780369 0.0223484714955576352332881797077111 0.0972038841172918938381740387475712 1.1022585363489549603918282481947728 GT 1 -1263277982953.2369472027752631356917626812713677 1.6604642044713758522103062091430518 0.0426340224216231361988139141800706 1.0435695389217358980805481928201964 GT 1 -24115311255928002800421502585.0967427987855017244887069845919697 2.9887352274750156725665135186038373 0.0621830414711447284528087900474858 1.0642004891793660477700724042497047 LT 1 -89.4825705155271579436491487196707987 0.0455969951158063261186317079391864 0.0895507332583436003302479630654543 1.0938171015847437219537700382622431 GT 1 -378634241664295635157668663086.7620864803979822201262687250236544 1.2395583005151641046112478209750594 0.0291922265975442154789110086392410 1.0296267979486706439565017377585490 GT 1 -275484884142212187362975.6235525520850588689281795429421011 0.9295707507151749751157208648550868 0.0425437508819629935559784609887961 1.0434752517984004205218967118935513 GT 1 -4893948796780206364724855.8993852427902131455061425338030897 3.7350140036016314873723233206565780 0.0580259415688898642594628245719676 1.0597775436054518352078118760315825 LT 1 -14950584259973074.2628728508059286910261324777036800 3.2757881738208705822587830977463716 0.0348506910898806702936168813521677 1.0354724653525237659492207073510495 GT 1 -30728018227167231316779966.1838762085207568558991971430375865 0.7703223533532284258955687683408925 0.0039750312184816871014131558359496 1.0039829526540130849137496408129507 GT 1 -299649987372.0310392664055294380545087078728989 1.3047334813712030486842316953883721 0.0386877584469391771993857656122885 1.0394560096181401801778685946442553 GT 1 -63044641389431606424041628035590927.1228632364550614394783872394295990 0.3875035018304270939966338337160880 0.0415915056628121637390277657211242 1.0424811886205919293427966937454527 GT 1 -924465.5173358104790412672839094964124261 0.6120457724189031482228651871190172 0.0393353951587135406666272661667700 1.0401299373374061338238158404184537 GT 1 -4018398284916574465470245584190801.6324451766108145025046593404811564 0.2030704549461624634576581267510242 0.0613695491754069070119573723397858 1.0633334333347448001753266840260356 GT 1 -830430968722244166409401787775508236.8268227344264587415442104270394844 0.2522453091278439043129144843857389 0.0264898109553107172868409651938612 1.0268469878202490609648117273282686 GT 1 -8225546539990079915390616488551805.3649491453961891756563347073789795 0.1118221630772794129325775128142455 0.0116185215249959098891415189701380 1.0116865439394490873773834860840910 GT 1 -4699923657541603878.4045916102660846005012987385082840 0.0503472840938108718152639541564440 0.0891051312582027768712051296450401 1.0933277904212460587988898952662550 GT 1 -88424901410.3861417814906273835412044144666833 0.3099885700687624467672522315696055 0.0618049354932498154060455688558024 1.0637973936998361921727444349068551 GT 1 -553102857555843038973909854817073405889.6420683304325588071827716204685258 2.8465335043009089783241509867640031 0.0417894834443691709608344134088156 1.0426877792691621104243019440601502 GT 1 -318546952566925930224258055437303570169950.5443722014791572159023034984490655 0.2189135265310464075272126281840557 0.0575381159795204507326622133794238 1.0592598018353263532286392244878524 GT 1 -3005588803548635790.0004877361014015496891840528134682 0.1017189913388129114191534845890205 0.0199954518156089338856070246081428 1.0201980663238081966736961766712802 GT 1 -919431950679762203.6559604211395132847797095748569167 1.2488093558865474483091149961824458 0.0643249423585618404812711461389256 1.0664870234182392473977216641600950 GT 1 -88140766272723027410638213693330478.1254933869829506056931745135630673 0.9604273090507429668257358861268646 0.0437528019882205421063761877523211 1.0447388240294444994997013272506600 GT 1 -101405.6053715231211976050720963457754075 0.7074756069256482270584638416164845 0.0922156516220167197539155060614371 1.0967484303752214380893496057509277 GT 1 -947911055295.9875548809809076120169989878113145 0.9015258226179332558894698155208239 0.0050920614659545931360093930671756 1.0051050701905481308124958881997869 GT 1 -32380481268661845625494196310302277.3195643341800568629565058016880235 1.6539024214445158366954818431483260 0.0495052284019873795544777459113713 1.0507726177547235113839496061273963 GT 1 -110072137641759179.5375804130803675451995399929160248 1.9784774008502601772547197355484926 0.0543123508548547463352908037372434 1.0558429450595461314651367405676382 GT 1 -1553273365322.8170067714328423400775735248309296 0.2977842296266045419634928550433326 0.0702781781701781190422361587813874 1.0728698538910616754687008886893654 GT 1 -2531741978481787981026580541236988.4989258453644617782871984581050769 1.1307365964823417644899622200433755 0.0760527290968353697850181455551465 1.0791002750909021891450439681985113 GT 1 -5609078600.8051688085999686369935337302798094 1.4707681002666088693976861083231656 0.0067407942147225738781406899393711 1.0067636159837624960190777428157037 GT 1 -152777651688167509728.8126784911617627167552898604755052 0.3601684544055267590937039137506079 0.0388866518107337063275183019404774 1.0396629287993718780786140628852941 GT 1 -189280471291178273.7945399411257174194235022594755995 2.7938798618494338113200250127975637 0.0745638236043510049629232995612274 1.0774901105613766775237286257924502 LT 1 -182701506372665305787.4879418295146828262073228466060593 1.0998102053694574417645722034226379 0.0984342415457469065892006774891949 1.1036222956221285304404351440926525 GT 1 -13119919810066881679085822010469554842.1490149765004306489359095275405523 1.6169292355995832887472785268392180 0.0537523299029716817944919017491787 1.0552509364823570795361926641568675 GT 1 -3445578265018417126.8707885358790673222745760668942501 0.1101920534585742565589543476643082 0.0780488896086884100186188135122735 1.0812630824374030895586995211232656 GT 1 -8314596999604207476074346797388509.6370460512982120165541527858920534 2.5566705445132265662110561831706497 0.0327056300080659937662807489597785 1.0332524141435275141008966195829530 GT 1 -543481.5391597158216630170503960837931941 0.8079356407363497760153089741714705 0.0193144356644091382347284765178225 1.0195033964478931280883686638766650 GT 1 -2775.5596674728495434556885074440036830 1.7461099975899562602057539746203351 0.0845998275508709492436843918830610 1.0883939623759744018290844334607467 GT 1 -50333015976909038934272230960749614.1681955210050681931834861992022242 2.3268179039356614558483398985955009 0.0384017130065980987945528087110456 1.0391584966156322371321993031568841 GT 1 -9.4415081201331865532100180439391578 0.6264837272667286967150285231103034 0.0845615859999731077590128002522262 1.0883521874743676239449722050352535 GT 1 -9481215167816538087581303878438.9582865395653935221622370307234333 0.4373778746668313327192510568573178 0.0856784401772767872359098628486973 1.0895729534021209487756766699874783 GT 1 -139766.9695685542677922976766765635101502 0.9716983034107872401082265476629804 0.0941488457518250344919543292513503 1.0988802753453580178850845813099965 GT 1 -3086344282256010413334512667539.5208240377141673878716127905534721 0.8886539931003888098160415817228318 0.0103387450828942115292481665841866 1.0103925611562990107397209058235911 GT 1 -8027273.3653230827849320838585951700370141 2.5592294306667675620112072995113809 0.0969260710330361767354456558819256 1.1019508585210407636916446068276444 LT 1 -19713908393.7326847782716553981219742626392297 0.0058801022486470416026939196190839 0.0459800230633000212120086150084109 1.0470706675678730400278739880334417 GT 1 -347476490567460858586137317195.9977528486564531617282144654915120 0.4938518058821713390926065368484915 0.0367951393580064530291290589922832 1.0374891580927285669914424065581444 GT 1 -117607998061510325831079918033.2809961743415011356759215763101866 1.7591543523032872575211328274505430 0.0313390322505978511313744833306568 1.0318406067967171068417095797786620 GT 1 -122.6265676235325996204085378922412217 0.0206369142225890416370091965886180 0.0444119983922194209817202474782971 1.0454284194822879371327922589206477 GT 1 -913317563378978600805189352000923.5817227345557021435563272453746180 1.0804664042217324022757270158168919 0.0208117781881884073597688418032907 1.0210313956748773241561553533086502 GT 1 -51232337127724018685400583383.8438845877180469221964787870422208 1.2937812747631498754853261006384013 0.0909356410328307804835951393360115 1.0953393853669170098816494323064714 GT 1 -13154745.1604866553276347619852990016885502 1.1453119176285521502339594294576922 0.0365681354894259733337543895655454 1.0372535102752989869749734548459413 GT 1 -71537275856675788101357472.6492927611113452692988725575260207 0.9931501826574676644866170994509674 0.0555589875123165443188482203970838 1.0571620476831214707538347981541555 GT 1 -2136891643004276847388080303209600.6397686783500365525489658842576903 3.6932489841952048495717379516388155 0.0507389208122726436454358162026764 1.0520714084211103665612898698117571 LT 1 -3106667442966650546257188298372450897.6463062748610474824574948475773296 0.1163738347805185422308728004272809 0.0585454361288494771459123630940107 1.0603291913472162881208292344135824 GT 1 -101284880133636.8944397373854651644725878402088001 0.4357021826720678152930148510380209 0.0589996703978746492740510270478643 1.0608117891288853383776379584553228 GT 1 -3199454874480236357964263971272543489605.4774180742073808364901473232091916 1.3066870352460115136205553972384100 0.0199800801272893981318838408847850 1.0201823811233728283531195926432116 GT 1 -9519804059580940114588031602909369.5034428464217505749003132959645204 0.1747460847400164043454163133249375 0.0391624876691921453932202138739745 1.0399499661695964759378496481392837 GT 1 -597891049281469713526559151463835.3050364611807146127129106978042808 2.7504824826359476318379864450638777 0.0011031443788677581636054555006039 1.0011037532904808783998410579381632 GT 1 -724091567542395736.5249864303423968168327720380326123 1.0756452114493303298796161902794783 0.0816207958527620142403997480445090 1.0851448972411074238569334347712638 GT 1 -182196091987880523178038320160114656.7120546257318318867643402924073652 1.7730861335992624795843183318559122 0.0514255321470430528987550500054636 1.0527949815102516133568688802220809 GT 1 -72722873375449472505064415638.5761389970225173276312392438661135 1.2071278913411718755467342753102210 0.0855525696894881040025561074360959 1.0894352974284396860908285825009396 GT 1 -302686976556635878984277608660.6610202530742942227363961585303868 0.3102722753513148808400681174004672 0.0050365695871298075164198071297039 1.0050492958528646468803138780536590 GT 1 -6590909184578079931482059409211530240.6004037232576314058366686619037381 0.0310464512650899195321938876298837 0.0377388175434922378584871477598647 1.0384693657306933628339114557751622 GT 1 -2871991120832376162362558895967048343035.8460019702276673421810691989049894 0.4369299037361452986789450849927032 0.0887171230172078060437893172384448 1.0929019173166384371114834920418027 GT 1 -4167592990498162750885.5969459358368133559147436048010684 0.9558714386546706813310435595851993 0.0359353988992737922817493012550500 1.0365969730269368016727562288128910 GT 1 -81914.3588210551452294972454515517415381 0.0174028414867160094158957479211431 0.0962878277496299209729832985036928 1.1012443628162932441062884955807426 GT 1 -4004631332851387250.4832065431173412131637833354522708 1.4701376625434671738986896477407961 0.0401857053258194121022978085702663 1.0410154562805032845373124830989371 GT 1 -9209238.1909145951580132922997122376504921 0.2829083336720035727937170398441470 0.0748859055396668556118873481545934 1.0778382037136032972951448350893178 GT 1 -1559109348015426789.1279325303986724878263300650681930 0.1412520296282951605778639917997514 0.0686292889807273336710296641923881 1.0710978951176162872378200979669149 GT 1 -28.8828145440453070173228690397680410 0.5360016737323650940710501239319717 0.0623958331288821504153127094641642 1.0644274159807853242681847078405955 GT 1 -387154610099721101351402314723181.7285993837761372804263700567978735 0.1488951884814937694306506390572499 0.0787882938592576131745836242625945 1.0820654036253103747780764193623920 GT 1 -71.8455509306307316769505216288414880 0.1705860037546668390121388387367908 0.0885818470535688102373801224636106 1.0927534827004659485914276517844326 GT 1 -355210.5008223306975170517635815377680890 0.6619357847456504000012759783105311 0.0668073514914494552076343125339954 1.0691436165892621862256492492826901 GT 1 -6046270158632631996.1156015304996165093777960721648100 2.9080611075161300990110786033106595 0.0090604965577206236945279098261794 1.0091017924869940110545176254206189 GT 1 -19065685722234137374584901001675164801155.7087581279125040356559743986162814 0.9835747939712283119200636171085243 0.0069064432584078081388158034078180 1.0069304031196572410900408198513274 GT 1 -15664667733541031449290197428.5746501696565607051116842839374941 0.0136608380643406503327524385302926 0.0264615560656875021192471089462939 1.0268179645188824501938694429406506 GT 1 -3051184711228.6723392660261459706466437303471912 0.1958170566845735812577175456892491 0.0627079909963865642221257277542527 1.0647604028143022484930764167819333 GT 1 -3006993950.9268185601998200510915250499266808 3.8454687618744976618686611336663487 0.0939808174437959144566157664517809 1.0986948003639560168818194722470461 LT 1 -4045152587462567941789767795096986.7500928771482942922050967408144783 1.2479734890930946714588321187007047 0.0678119278857477368833349773856301 1.0702206905402348547627454842549274 GT 1 -2112367081255303767573164348331.0360469451589305633323921419816277 0.2327883996676956141273292357165217 0.0404942127461648469617828216530307 1.0413369320217381324523662295394166 GT 1 -1091872379191696401346781656454311722149051.5948332219389940354085036053232432 0.6890482403146817028981564581997118 0.0264475050734446819655029921475603 1.0268035317135495010313050627975515 GT 1 -1037241766779902560822248.4743623141499993640140315859322525 0.2287159920940559095253355741522354 0.0955221745606460994268566511874418 1.1003974902689147329099356814663738 GT 1 -7035939509.0099362647441523281041561539790922 0.6110296903279222969562414929519551 0.0191717520823975627644905320306632 1.0193579133201456493369401168263097 GT 1 -1712426216893681807382516633.0527505356836009214703581027773745 1.1337871371184969846198029758196993 0.0079384274314915542631369060706864 1.0079701045019921867092659472840203 GT 1 -22314980335063172324818820.0953573722603768781992176584571029 0.7133892776604386604713777986074454 0.0029258828447020231093507715619965 1.0029301716075672010316349590650790 GT 1 -998675785692.8588871329407556293797298597568408 0.1589062889395995672801620672842715 0.0627271458080878241779469273157873 1.0647808393562197939655862433868204 GT 1 -11409873844.8356547840901351083724698904697228 2.7391069698918764305535920245136704 0.0646287878596439566443484758380159 1.0690942553365137689082705878321019 LT 4 -14281751584213609013.9930501710697560878033825422033907 1.9999136158620573699019409589744547 0.0413628318963255052354147513871159 1.0422426196891872545735423060329746 GT 1 -7474946124779253784.9580259883532028639399111757044735 1.7704672094991931563186341425469415 0.0010760728447875872880346927777508 1.0010766522268467251306014735333675 GT 1 -4502088031005626683667062.2575010965264003385492023133543505 1.7081221971848613759897585769294801 0.0138929048905024421008398647244892 1.0139903145480493661390917083352930 GT 1 -37900444145680790924244.2328860020331542398446417507994006 0.6773755399452705441741298738556443 0.0296310792078328757080852998928107 1.0300789490785268011076456466979975 GT 1 -22915786881786152289753080979657.0755721090971740696423060279234865 0.6807039428568658046257691737576631 0.0537874257179242699947625395871183 1.0552880266300215829382151559689145 GT 1 -6418510319856079.2345862923010647939406966103464061 1.5033065259707041036136067336472950 0.0550044297352947060781318614081230 1.0565750390499573062471157322867499 GT 1 -23416654391603202482592807068217320495653.0498203329922783796561396533803781 1.5462945864205165280097266350074221 0.0715446723683509666725517039369158 1.0742330117521476866358806368843576 GT 1 -309257979536534417468535727358902345191926.6220188765272934848204590518724379 1.6198172029352469152234591572892165 0.0866187686899832127591921123240266 1.0906019266030546242885085228203993 GT 1 -370381041886821373821.1569199306008490536745290972894062 0.4950481961796530189853374602308745 0.0229385783314800414419306250863923 1.0232057612915716120907960157407265 GT 1 -1250656914199208181.1998140673162228076161842723838781 0.2814024527419612252205026087201976 0.0450238443205034652491546501645305 1.0460689066879821192924938160805532 GT 1 -3481860211494440280573.2336407979723063795367743666778013 0.2776782124171921939648792303357424 0.0360867337590305795391481393739750 1.0367539611984620858334517777692496 GT 1 -4149904170657502532362089235040571018832.0231894951913919562750015183078454 0.9834392152073811774908217444829989 0.0224523447640521474940269372852684 1.0227082361514266777165865111455773 GT 1 -526.5957179112267572064468165091868541 0.7935614750569736640241762351371605 0.0840777412905546732441932127792461 1.0878237883142390236875108734163002 GT 1 -18373932374278615065850666500454477072549660.4255680741728801258284260248895088 2.6462435550503169942842122250968805 0.0179350636459286392233220920028810 1.0180978461804667204918944010399302 GT 1 -665648846376.0954052364386222912961299264126980 1.2841966849722431045510259707992368 0.0400533045058255686094764357787195 1.0408775215887558980416873564078827 GT 1 -56436956580006526736.4281141809820494732693357586017161 0.6597183944887314445273537726950440 0.0943947530329171098580002175959123 1.0991517776375883578542232083130385 GT 1 -35925059617074427939673770707745152900373.9461830939243367569343704485845175 0.8297684063596319784564877174247553 0.0143181827088389177671996419969916 1.0144216769745812317771475512148011 GT 1 -30155412291923411.9993969350731302709041652186689822 0.0758696996843643226915602148415180 0.0800794982689812620450567892667249 1.0834680238346467544914589129765308 GT 1 -1616610966002.4752708154696561178019102403915708 0.3620891441919744911050219576173674 0.0875655374653464394481522118801303 1.0916390179846369104820264876103010 GT 1 -11805572937023928261493068675211113688403714.1222853284896104724326828222009897 1.1972545919675408560265288858785346 0.0022828276467717711010365694657616 1.0022854372701075205158803437082632 GT 1 -2671372002687579230531776086122139458.6912885283389568922682214533589205 0.0750977144262654752309120690002760 0.0046984655897924281238489601156149 1.0047095380753168075602826255642026 GT 1 -23417857148586129.6775450338365095981878822317239136 1.0799651634715000070086837260179595 0.0538939600288473263413408589973082 1.0554006232194470394351315350919886 GT 1 -3636443570954662903911599755234279.0369688431205721357760874439243968 0.0260318236035680943554330700641439 0.0532910099711696111089333051129060 1.0547635297174243829595879881576440 GT 1 -2222749022070669853061068321037715.8261066613067330183107691493113722 1.1936063350261530205004984393733682 0.0224373308451985121562225543485166 1.0226928775103652234456314037829666 GT 1 -126722641249555262247382885687500777183704.1114868722294630922317416883163809 0.2480339259359417022591887635151365 0.0975340502030404369920983445764408 1.1026243182436800242977070007539677 GT 1 -265837514902291760998.1737744226598623333313292550774469 2.6882445032222072269947598194355717 0.0993353222983754616407205443443820 1.1046222574579022874861524709968963 LT 1 -342616421717276735568338746489.0647903170187592388788699314811283 0.2112761258695239378630809991614014 0.0530117343037484577357411305789403 1.0544685769010737002575424686725204 GT 1 -603385731567257522139644345638748606281.6654838709774011551096040304498279 0.8209152728545640572129863126277176 0.0391464858471416778725417888616862 1.0399333122727625840752293816544042 GT 1 -69.8542009486624502646052329576440678 3.5572758705678596381363062431785916 0.0640675005982554954560526816691044 1.0662119211288077116123060801643417 LT 1 -14744368677214197486748787801128866224.8471120488995352655213528848338140 0.8080915217736008463849982700470084 0.0039042733008471169456702353580589 1.0039119148721910822934916455932087 GT 1 -27579282435428014834122.8454575659197690536439755659854026 0.4822678596857269154535462498902567 0.0410632669327434388749536163663415 1.0419301780504727330894916925353795 GT 1 -217531563592519609836.4691287669287873947565199551840112 0.8616120597537979587018245137391789 0.0772761220649069212600708605412715 1.0804252464024628568368581818201415 GT 1 -43498883027161946154638872476307434725.2759934297775503027720037201139293 0.1450157009576494912489213735121008 0.0112918701170582350274907712278698 1.0113561073122684070257251700839423 GT 1 -7881926900187.7657901094886840725831624055068898 0.8555730352055009373459036806202245 0.0235782422090928490152769438305814 1.0238606570257154328788375329492445 GT 1 -2600686514662306119359777938118567641952.8236363217572001021824393424301749 0.4679722158242819374262377681033474 0.0086440264447754259736329487666339 1.0086816027383863510435469421503277 GT 1 -31488614847243901.1264769168227802488099376943803735 0.5147912663426145031901106801387362 0.0828458174003117760202856626059383 1.0864796828007436433524434291969903 GT 1 -152277016410684820770469836897312377343.3620608697248023839852313106903715 0.2212609942118502159211609166491307 0.0496592951791156833282513789341235 1.0509347220287408900686816860290460 GT 1 -1724904074943213537339489.3239039060030210819993826647298477 1.6640998744928286160050257911371843 0.0199936342020822846575301924937176 1.0201962116264555612637901494321993 GT 1 -455434540038796008590698336196741474740.6582691234894955760764891704534788 0.0662370045042370844213152320373204 0.0328397689219485627705310200042739 1.0333910981054290939419042964025924 GT 1 -410574564994130288053169567387.4834427207400248426894594458079404 1.6756628874042240192090468820182012 0.0931001261691711212439524033266503 1.0977232276499954065257646633480621 GT 1 -116151521.5468684846282539749062417544844986 1.4418991715760095624022366102236557 0.0908245509333020611973078523983593 1.0952171901546286205363056764588506 GT 1 -11069725546565514769.9589308280497758285441571305301716 1.0873625579707918774218174672362310 0.0767227161142268476054541353234795 1.0798256736841957203069704719358889 GT 1 -20548576506132.1577000649722065645832471568942748 2.3776306146543566005565365671257124 0.0386236074435417380178962943021307 1.0393892791010058179912818745513305 GT 1 -7.5968886801111277865946345861644150 0.1776111508966501664582491715903252 0.0302526337376298598561195439297162 1.0307196885591539178928361155860492 GT 1 -1480456964764414685139080009438.9736810278637425710508134300614280 0.1687831171143010335826067581003997 0.0355091187553595692004094337232447 1.0361549010671111446021243923541929 GT 1 -40144740471833118301659374282.7333343794559529556135738245842718 0.5475548053507370498299562098799730 0.0174596069144937806202958603773412 1.0176138235285960719696507383508667 GT 1 -3049153583848384994429608.6770681719113787222235232245555360 0.6239262476016973169400808808410969 0.0770405462084856894438962006990206 1.0801699741640988595648105235898710 GT 1 -12735335707901928555611718922225677235190817.1328874646363188733096644109629059 0.5159081274782523900805260515573717 0.0869317078576958333947546736196438 1.0909446014667797128109096342754143 GT 1 -7614738416706875050140927464059379925759.3988275362094928800881627765543134 0.4171704215736513261173856901921469 0.0938012593939808732234675114680869 1.0984966365028577781582023055008378 GT 1 -2085785815498850892162.9925279595867254929423466853825220 0.9247160936180195938348459665382622 0.0268046274354100890322059560438890 1.0271704229498878165249150311923678 GT 1 -223640040039133262843328919353288418.4179605973996875309690023478572381 0.2837077059317210627759410589834391 0.0208065111019737638960428552921036 1.0210260166558782679937105919067935 GT 1 -49451858923254779.6294039536352957701729153316868323 0.3447911020170847900923027463229156 0.0100151244620466542957839171483348 1.0100656132045901349416755422171543 GT 1 -3928017.7432201677256807319191026287727610 1.1153964431831029418510351525645423 0.0632566972763538627557569105100574 1.0653459908149269086545540384111174 GT 1 -57558806618.2398167826232200237847930103631274 1.8325095650310922925785349719478601 0.0557238115601019205327586006889635 1.0573365831277320695948513607841679 GT 1 -43572464550394592003.3033389752964035136213983860634956 4.4397706284970174839243334980678734 0.0165801750208578633295813260092987 1.0167191645785173808225550012077602 LT 1 -528733456458477704533.0277373695691232682053984521176977 0.1853760602442427258601329242015890 0.0847559147923388736146096746603758 1.0885644894908885355533277501652728 GT 1 -2848853640300164627147265124956513923208100.8419240683703887406141932047737114 0.1894845790382748604221301780540857 0.0300477345390020169510448704677627 1.0305084195605534197164478006520952 GT 1 -8450.8796103431941530785370725461992094 8.4600190591155537397149365012137829 0.0319685114621856314923825770465841 1.0324906627534189454748101020581609 LT 1 -27254584021945244225000280446288134099.8413085864137154256432600553192536 0.1622751483195181951615601606128768 0.0640668570503096484954339749823317 1.0662112335282328770189483528618426 GT 1 -2423652334078761.2590048467546151829063960035959479 0.7676359013584291931001340186209525 0.0335742080190687627816219327103576 1.0341507634357340502097474852915215 GT 1 -7974873049.8839386388400784731567590577080592 0.1093182731540941071506868491252935 0.0786536771578495541227615508560786 1.0819192842634991390572045218264226 GT 1 -64583935088671052763243646864797821127786.8511271442518811498161819467379591 0.3941233541578135315280928960795514 0.0879007797596844721297282416116229 1.0920065007023040883020742243472293 GT 1 -1555.1265591649850708884034186396815466 0.2937739515241975480536557612542356 0.0042380469698058163008484024432333 1.0042470529450358300979867554615864 GT 1 -86982930509187655.4343900850658703241364539936434358 0.2866386964135131941083788392462532 0.0042355207412891592979746481006117 1.0042445159678953811932079251826135 GT 1 -3148652899253964704346427607292.9750453406451880388826565539177133 0.8888912719581632068789540933316193 0.0885219187525478745851902839446244 1.0926877320560591078436348971286272 GT 1 -2917177228142.4772838017246451096386186942792585 0.9777537029693520397428695079937404 0.0390979546248136574733146320707242 1.0398828050975937964366047435287637 GT 1 -88428578412662870652525455.0550285118547234960711782383987323 2.2177115642823239587194368732557232 0.0324426257353886711090601366576640 1.0329805542709787580514625115836074 GT 1 -92713383484.4401568951311995261839574003610306 0.2501621767671165453054149357832515 0.0384683654168817094517252225527870 1.0392278132120436316600943712380894 GT 1 -4961724091502.7431077331888711024028694801059239 1.2621211973793413466702084051488600 0.0521031849164457387414324708549749 1.0535096274997171029852441005450582 GT 1 -28614116562769468762291004126463668.9584999344209543749620071684112166 0.0613290965643374727673289754577524 0.0851114410691520302090112614755548 1.0889530146422474846682761267451677 GT 1 -3059775680840645120841018.2256784266230247470182988938719295 0.4413164802833155942273332412658818 0.0158377758655286227763772797116904 1.0159645335928416070948360122758938 GT 1 -2974070254198.9691471075553603738624601547363494 2.0489687875493539769152761418738355 0.0837936324825424678960014323481525 1.0875136476328234351259242609521265 GT 1 -415775519747062232993356318945894856019.8101758677182809770217322389568921 2.3327237522321459088928641400680162 0.0684330379303857385077186416715366 1.0708872052444095625592194548262077 GT 1 -1132116840733969765178785960458622362503396.7153980674968350395781717267141272 1.6707299095229438336122679301457125 0.0954362311402675878292651736622630 1.1003024748522277904574420066202770 GT 1 -64820707788058081141485588.4338907488789837397543839676533623 1.1591423435787093573993117499443230 0.0915773288066156178655594766948648 1.0960455117819055720943607356606435 GT 1 -325445366055243247166904522659702394702.6321143905910109020588548869785214 0.1950117352165030802528795524392990 0.0316503555778145533039284559478107 1.0321620540081481131090031423551827 GT 1 -12122971961076.0437974195889012904986573049515172 0.2310968406147581080691009850718888 0.0525696310991350687534676544311662 1.0540018340127116608121036549044164 GT 1 -29984902399779437332719776625568777.4145377575106896286681503147415039 1.2893283621434486717170206462812315 0.0185146784896000517070544039666562 1.0186882205375120014066653745560694 GT 1 -70451888114094972681345622265022.3232003928443709329577840467708624 0.0550602833462676023736287546068138 0.0996944446903160767023069498396141 1.1050210673772644679969926074270340 GT 1 -1020312.5346658658727565585582215433263417 2.5696954645016951026656388779030396 0.0142566127422273037535664998919273 1.0143592145829170047338737083898472 GT 1 -147070241505400662437.9969657944854750464874163440286291 0.8292371141640562898173712393372983 0.0609706320690781316039854011246576 1.0629085245111697937161486197635353 GT 1 -60152655570304.6011673741691132822991705636152957 0.3041251477350554626745943896772759 0.0433363581046610832490725130990330 1.0443034206834540900858818926893880 GT 1 -562514619358008918.4139569792983514891670108037758206 1.2979809164047213353687455686798033 0.0286678965893003416301386814074518 1.0290868471168663533766601265955421 GT 1 -40556697586500841.8106932276559555858568770403741867 2.2537797615747732159648267687010150 0.0013461700421497670516213208772734 1.0013470769430275220796494519530923 GT 1 -3591121578056693929131573616854.2611725604678346476297231553782965 0.8803214786644900718907946077376744 0.0953852301453285105938000728365492 1.1002460945737077630650757630053058 GT 1 -6140210.8437038394140390764183762641192976 0.2708190073833149671659516021027746 0.0660802555328830825253878875295689 1.0683647711399399901906604451599058 GT 1 -2773835534469856909.8584645078087889672161264837054515 0.1354793177429836914236158993168023 0.0870877037695575013854056993672635 1.0911154640851826815678403370302835 GT 1 -1014479879688155614492936.2466545397487849318820615505136419 0.4489620184250697392758653085994280 0.0100291794929646616452692405143592 1.0100798105231930902598533953153067 GT 1 -4064319802845535976851179951.1240335885812339325369989208101464 1.2295970214396964225679237214110465 0.0510006551853382051901468620256199 1.0523471707679566830114668910593770 GT 1 -8995808467210813.5036150106813141108066382026752589 3.0493738116305639334338708686372625 0.0630410574866814329688808319884262 1.0651158157258244050239414651927980 LT 1 -707396917045780853621426492725.4843078550593573386959743045556249 0.0556769717514393792779171867254391 0.0814073831067707713868516887272147 1.0849125444695439431439480781720029 GT 1 -264429370064015012299008612194861737.3084440543703738809379472580236865 1.1683299874606435154617497034357659 0.0042447978589474597942573834523279 1.0042538325895135487500010374974078 GT 1 -58803453267612751630479198938690556828764.7041107624071526849200352595745741 1.1417407466663423810578678278289305 0.0919466207225211835375974116173338 1.0964521143582485128370838644852081 GT 1 -1164957780238483621847543722.3826620096807406436563606700010175 0.0524129798263327076916271944136089 0.0444042275412022804516123868876157 1.0454202875055281630653858232732412 GT 1 -3341615815288078510767237952.9806274272371952506364270951034151 0.0026323353669696647406318960988598 0.0159285230231940146185914278692873 1.0160567453639117370493155269803027 GT 1 -227788589.2535738708493894250640316894411802 0.2280110358208647121203238371100261 0.0691437229129580060229286496940360 1.0716503883943243636192634481986698 GT 1 -2013191991233361511020332926640156464755.9633517323334410058255189445157360 0.5612775929775371615251752810855667 0.0407241957032153609948572164269292 1.0415766497250604593134889812422552 GT 1 -1897921109476799665415384544.4244682350014952261528040947114881 1.7904822620225600606691500773974306 0.0567395790163077739497913203543767 1.0584128722435986111141588418027315 GT 1 -23155942349786250.6315689666620521731574925844016835 1.3290528122293190594009441801357758 0.0568552289137111818860623479852045 1.0585354863013148068499125148651111 GT 1 -56.7413593913218183150648051648472104 0.2985079572728859338202017005511053 0.0418829601310871341493829542001727 1.0427853374204068903748096098114577 GT 1 -40190277683409840009817121241481475.4712385628170752141879930579186801 0.7076216375332424585397412048988712 0.0839603594800123705505845198109503 1.0876956395675294831752492454311031 GT 1 -680347522019980156557684042627.4540007289058364295709729606695959 0.3133575934648474229664986742120738 0.0764079889057779258853440702447708 1.0794848512856091568758798485715826 GT 1 -157201957675781393330.2599956581040452964079539235598843 0.2809260090200064813883482015753540 0.0125852457653689495614687310762048 1.0126651107587524028598341786057729 GT 1 -36407444020963478568432.6752919601339127919231633618666873 1.1095315310294263590145997930289888 0.0606970189886542702999634221477477 1.0626171883346798110130297009090524 GT 1 -378574635532840079108017596053534.8345573480084136987537476356355150 1.3125017593526131250801846370494885 0.0167730067842849058464833619021891 1.0169152666566953025381027296157974 GT 1 -5.3866239315745427034733677699572696 0.8962679715618501696965643947153331 0.0719140362509132778341849426724364 1.0746309171358313627396157341506571 GT 1 -84534480421.8808704811708183637230807166776236 1.1012328286847461244098332737832489 0.0541828143224290980078586433282356 1.0557059784177026845335332551686481 GT 1 -260334219640103829979718770045347756.9031691954931998114428542965422575 0.3960509409720900284592489139105764 0.0960716010869999998124420008124230 1.1010051264690784274346914247680870 GT 1 -2614562132818.3140202679678828668097961110500893 0.9636126020480857882231428073729179 0.0308946017391177885191055683569133 1.0313819028713436841367521949796210 GT 1 -276730858801101945818937706128.8870559418543994133127649459503518 0.5862363781758760505622205371586801 0.0136167478368081136007764301534719 1.0137103060239209722652930487662784 GT 1 -25029943688984257741145093968252906.1742395034995660753917524173235208 0.5838721269186211524958699178421569 0.0980403058470531124589586304110410 1.1031854448924766045869234991680560 GT 1 -21381690917350343669404188260.8252861543166244561237711857640346 1.0754001709764832358203756025655048 0.0379548091361345956149538688745649 1.0386938534698019085548202967915678 GT 1 -1026716454128492.5375286053404694842867959750757615 1.5159896182292495692350494812300138 0.0446188158642830052465440135242889 1.0456448724470076173419363709816164 GT 1 -6166197246422772733635607979188985.8555434893053058481375176670957380 0.4853095261878464696848979152222768 0.0692347947071972983854025357834176 1.0717482297602238597392881275730065 GT 1 -4454950051193143121452001933141150153708156.8390293775755985486622536727669103 0.5302379468840156919406036325114800 0.0510095460649300146787280411604950 1.0523565395007051216328973611627792 GT 1 -8156322720120.6918304265282756981025196922501231 3.1705580666093751809007546607187902 0.0196555618809171717182027330454576 1.0198513015992899002829485556212189 GT 1 -2948093820454596157069769064599212474400417.0698666128704379751648713366474514 1.8171886848610645141540762733315066 0.0491821287288767452604992946172251 1.0504327476366421243973516650632040 GT 1 -4569640112622750004619548.0851650613519675394828950552389928 0.2997489845079371764293578927561149 0.0058011371647703141203436746178771 1.0058180291210223353927973499158347 GT 1 -37340723461288053631145143689974819767.8508005438476891450313896726337130 0.3720434460441063868642718025081949 0.0358729951616955765421735753435160 1.0365322452919878542978891580285413 GT 1 -1774516859647841385679773582684802108.4421069254245936483976691090519802 0.3591041288586585188149230181327943 0.0983149847515898346473614709547293 1.1034900269481647142476286356292745 GT 1 -11394885152405487449363131844335128678439.5643056241555868278805929402417151 0.4603690943248299857719037511829303 0.0460327808077179213158791930693906 1.0471259695578846956583521281841241 GT 1 -39502574017012.0376250368129993169829077995755845 0.8981498858262034544477938600183377 0.0565501871676196954943078976187685 1.0582121081348025799421515128919554 GT 1 -22733140580672869978116719400553.1845620571255209462862954724096129 0.9783148148155990994641769533624203 0.0542166609565320248895648573055093 1.0557417646565667602571221737919017 GT 1 -1.6664070720693864863041347040546457 0.0901458428090811576591150774677590 0.0676671815715023679380545647493450 1.0700654267239157833888597228429120 GT 1 -15204126213157191070479532287006368566945.0132658375595858499132982027648832 2.1321424330770534251735069546971451 0.0688744408047275974229521528026699 1.0713611459271202398561150097563366 GT 1 -9800532099578011596044583596958.6914800658136266913014371762602736 0.0037701630477244309431212922349583 0.0227009230485078570236223806798875 1.0229625561261874239619177959590553 GT 1 -15831953307679622659128728379868468.1520693916083745683995895432829567 1.1356254332399647856576505630011907 0.0084306499997765021753813128770557 1.0084663889395732798399099415153173 GT 1 -324773466489833673581636666.3893868822761082861977750861546106 0.8031008088097823646986702407059898 0.0604286458447038980138720544045671 1.0623315139383112773612449522389135 GT 1 -9576620223549191634862143519.3151852356898729133525693949892874 3.6594299438667466667914770927229880 0.0799329636201719320781832415069013 1.0833087459633742436444551245655860 LT 1 -390891369963797790889183726.4614059687846175467229237941006168 2.2702282077747162111679961282141389 0.0798595107756262964809699437059788 1.0832289149187092913879814994643659 GT 1 -163228665383363345764398243809855.8472451755655578901315445661048121 0.0385005109089155336137340194679956 0.0428166559161217114173077929769666 1.0437603237638772115570606752508355 GT 1 -46795527049517213417936.2840943810320091613277174017854193 0.6885544669902280592213144925726643 0.0349199118443467116918186507904724 1.0355441881794591970592172376933463 GT 1 -17823950370329967239652172984770730583818566.6412866892115741106799586014466508 1.3922358358601141089103675581567911 0.0353347982764796744960393717061320 1.0359741790603296742271178250899801 GT 1 -26297483713171074952072667.2696496722223426633438071430315874 0.4394051701568548223003713881559230 0.0637441448884461179299571299313016 1.0658664903795509289330510389423621 GT 1 -65359779667296524528418534622411318.0539952153243128022522016929163658 0.5802105048231953486736926244155618 0.0173451613865390282071514400143648 1.0174973511026120235472091088966332 GT 1 -29999516240654499934088521255920578814644.8082727734770854778046030147009150 1.0764468782402958175727254050284516 0.0453309454763298320832417541702553 1.0463905383259774129067093995232260 GT 1 -499112263.8033867800723608567058258161433788 0.4502410281577030794354653958446518 0.0510961357248057094526251857578726 1.0524477876372372233739806840293417 GT 1 -54151471792237517929346485580358141.4750118199125343973974438800129498 0.1976744895766960458340253074329703 0.0690831296944430206986151866073885 1.0715852964483789190967067464955431 GT 1 -9446.8673417108773222220844890467435535 1.3188066504856258918635635239177162 0.0869079099543370999040617826814285 1.0909185381444207338055137953140261 GT 1 -11141239899.0701949832249503459684078005527951 0.8965443420435479346564374233593248 0.0478378971890939189115428627198241 1.0490199826242187791888993324120125 GT 1 -40089442680414733199703080293078085232.7328053815057932293444956971212466 0.8574883269895225970636554956766058 0.0227030348547596592492905329534002 1.0229647169882850855048291925756693 GT 1 -44168.9306233235544762784244360755753403 0.4323511284869566824440002486930915 0.0710787107389954442194395856700126 1.0737312700645513964131683702028304 GT 1 -7394507106344942572835432230893151442.5274155201936839233674317640242080 2.0623582109329927542216343929305073 0.0256757341939753973796294641713810 1.0260111089736590033645935143408791 GT 1 -16095678595339.9717109581338802345000081612284967 0.4920656206285421375663332461940034 0.0848843388797202497862201811581870 1.0887048160991957376310389362209896 GT 1 -468539896794327875452488.1087505004820379922493887929671361 0.4559285892122379517355333876746577 0.0004720480280266891605005343580102 1.0004721594777715393198178316950472 GT 1 -369498483533.3097348385953472731840624159142702 0.6634180217584877711351961418939991 0.0955026602451149306894317395605767 1.1003759152734063447713133850214672 GT 1 -2.9371363750507450660776549711748457 0.0182873338701769229046368719022816 0.0766970400458392906214188280487962 1.0797978643664313119250968808884687 GT 1 -21577417236329574070172463.0213205282842373736278713163249809 0.1512953223299248985794949235711279 0.0811916139078959243332769391833410 1.0846776809862693518761288981720738 GT 1 -4308688862765057533323460267.4738904206748886545964373876705119 0.0525969490910475567155446315108463 0.0790130919176845077942619346042017 1.0823094577221999170276225487974277 GT 1 -117046678639797553138285960387.1830840805933681765650004549469634 1.2042841225775084615400387412670269 0.0893204659506070187761468484968091 1.0935642174297474360431960733106770 GT 1 -588955475746285893.5225582528221042375040097458587606 0.2025655335190384935416372188355985 0.0880667253458289383554073988580336 1.0921884553407952215191061302160679 GT 1 -1408688377668738428807777449523027390445.2723874492481627216401789450281314 0.2165378075427680392223457570408385 0.0723629210661681221729827133106177 1.0751147014222633383049058192784498 GT 1 -156070234637227131509022866952201037002358.3520561674258554739306171890184735 0.0500766500921720737172100587450550 0.0465125182291590058824535149884420 1.0476289827422231826990406369368729 GT 1 -2113244176383174.1946405018809653177834196132522729 0.1567443384418336878242538098443528 0.0722546602642939586012396567185729 1.0749980022438000005378717673630386 GT 1 -1597640543409666.9921396717250356777878772277292762 0.1332861812462909982557751166845648 0.0106986040341998697417324322039166 1.0107562455897687833827010189708971 GT 1 -5861820698430722790867385535312044528.2310792495934126931175263330180054 0.2945404542657751425127251080243445 0.0616520998760909545843723288126747 1.0636345030862158654322454757070738 GT 1 -11666310893954595356.5126497314856296971177053360475519 0.2709569754007065001104135156716000 0.0276011366695135627650555023091751 1.0279892054728897646760865223116237 GT 1 -6576768976322480862450.7942660032186019303072876609255361 1.0435346537672597936906022243999014 0.0741797923675165445864399443687406 1.0770752234115941051707415001223572 GT 1 -96400824799586080.5951321329611416524987539221480697 5.4736443259566734640197791754311883 0.0640664303744690346028617732584084 1.0662107776455167119341838502741782 LT 1 -37655.0413205876216495780516607206008492 0.3752999763930459927423890154550405 0.0765018657248964122548955606848125 1.0795864996208944351653399915206302 GT 1 -2671063199.3410101212472277010719479667751215 0.3146340691007277991681066666753115 0.0372787825079141693783660299544913 1.0379914028731127295260960666304407 GT 1 -1666181518026719324057999732337.4490125197017572115236434614413870 0.3565686541808732605672867619179168 0.0353621288585337019068283506449118 1.0360025111377935535569315030121800 GT 1 -2103164612528038140112117848360925780410666.1242889394905427805334789165350684 1.3727792036508164937351360925237755 0.0437300943037275683988309796988468 1.0447150776436474633876713127093490 GT 1 -19906868.2102118700875140449574674598582331 0.6240218333259141254555376430010827 0.0590099711759914254977413557739752 1.0608227358142078852941959459354556 GT 1 -3675517142520398.2963375619302206018198720422467094 0.9919577742929871680048173476148947 0.0930788939344534059284503286103724 1.0976998160399699252762349389312568 GT 1 -19243287569090949952507004303471.7893800745552472850383323421890049 0.4319732797980856102362518682512815 0.0534410400255186884582166990527939 1.0549220176426679895048808567876547 GT 1 -1076893558661409119.7930152080261089808805746122137410 0.3401921351748963390228572124431773 0.0626814943586379702157196512596507 1.0647321338618522761084213297000582 GT 1 -131679.4453518163781330494917674486020795 0.3636793227745821064223038845490120 0.0940977991897160662305180499406706 1.0988239248912744609896656897771977 GT 1 -47128.7705445446514014915260054439345931 1.3438545092175869376232840908300394 0.0754082506323431609028838251222673 1.0784029909291535370412538911543506 GT 1 -1979368357318327838718464728554439.2071071285032873435351328668500771 0.7206738045820588717149603599942424 0.0820838566185098940675196960946052 1.0856492396130319135013174774526560 GT 1 -378772396041673957957.8221999867767010150604740280520231 1.0029869473005301418043855613594250 0.0713608990227954083414438991665090 1.0740350968337414165862789980217371 GT 1 -14371.8949698191563648985271917405966228 0.6966286748587852797055589756271856 0.0463294156110895580068921825293843 1.0474369665461029219591540990739359 GT 1 -3055425.8043710642980986467524455888644036 1.5996805340632981503041827721264488 0.0559181224653231779915457955238197 1.0575423819213065083057954840160991 GT 1 -84540918395.8672332502931864598650295898807475 0.4157879749506506366444573184532209 0.0350852292154281690778728963834989 1.0357155019741255220589006638162503 GT 1 -89944389444.6447646028604052403244881445755343 0.0258164689315172022383773335860442 0.0053519217346213639170672324431877 1.0053662945722194790566406017359716 GT 1 -5822460527112638898311095.4508163142365204292418795040436289 0.0242342150181252153355061664497519 0.0429911249312620533523633213355078 1.0439426137281533228978166346532344 GT 1 -1483955999948.8645513655984886933556016139059340 0.0231045545960599215696442296488127 0.0389482220966112517158978812778668 1.0397269922714043377741256279272396 GT 1 -6336300420800320091080254318139231194982.0429604511420935818654476611250315 1.9650885993582775137159107070906550 0.0457728438864700886015585520952917 1.0468535267436520055291549269450491 GT 1 -6010186700981855608366.6994988643628143154234534028509574 2.8242665917936714433087403393265356 0.0069988176906375113207043802164959 1.0070234242938037000142996264505906 GT 1 -74159588453726465365218897797.6950016429092196083850374505995660 0.7688275008215182399683697945763029 0.0505797142758265606289677033638593 1.0519037062044442249742148119850166 GT 1 -1857991269.2883795514532905268549257840846734 0.1519764377944092270041546055685645 0.0679384801894774498342439010425246 1.0703564580946141426193592923752035 GT 1 -60929333678.0970664951049028419140893089297898 0.0060824804579081551617655610322867 0.0556872599320887344225630374767067 1.0572978752570398172107010792797640 GT 1 -77192422295711.8598704193608294160449332955906542 0.4873251945471674073666448596631958 0.0663644847768883067120248469170793 1.0686691575774763895615914322517288 GT 1 -210190.9656205091223329704955186428326749 2.7111460899679056107453363143470553 0.0745752564386663076796373754131288 1.0805057806452466169966730047549460 LT 2 -1080646156.2114017961042059890900089826976520 1.3065478724302582811915468631335925 0.0791333137084955318014350870297180 1.0824400020731179164496490135131035 GT 1 -4577516540742194986007147703092.9554448049474557258732545288665011 0.4967964642754863843825305085660863 0.0656556579956499607243739025380612 1.0679102341741887117053221348815215 GT 1 -508095363415544327847529812449206522.3371730542911062421915913638284948 0.6478972359492664465749752420858327 0.0214051222320440664446649803567052 1.0216375343856971692260278943287758 GT 1 -13011543002647279281844591116153262306079.0530768093031517481035784470923228 1.6418279788175698222893064088293766 0.0949339720817530745860590881909899 1.0997473789179039878049607881117480 GT 1 -2051706937460835969545155162607791849795.6718237601411822661655026000456730 0.1552979317240265910962688418577972 0.0790458200800816326017541060559979 1.0823449943228151581438992231640510 GT 1 -62398608001683125751648092.5881779909948198718438550347446389 0.0737962990037649870628556640452911 0.0543148787934980493337152417865198 1.0558456181853126978360024940507543 GT 1 -5913548789718953619082663534531107463067167.6717515218846993684971947943827379 0.1788285755923956311769310742617542 0.0477046938851203388717256125522149 1.0488800967926254915090321459594373 GT 1 -33.4843311124047657474081256071850912 2.0360921386653522504815488575097529 0.0644561392452255566098392506006517 1.0666272495409968599604025408469388 GT 1 -8836578669397927895885244656727872508.9410938004230480418332036837879679 0.8792776938420808969288921738113484 0.0505339918017905867640462184643362 1.0518555490565505880466550083990538 GT 1 -8232941733445.0994226191603394604440273377766694 0.1959916983250540974444388018377769 0.0289092545660886404862491832648447 1.0293353594098246236119118341112839 GT 1 -25868156381108549951406337.7794525228171244458249686722718097 1.7041593304657480741101604220874528 0.0416546307785701472201365403959132 1.0425470553100828880210162762048113 GT 1 -661.1681815862523567265280697967213601 0.9428936856708216433511123537346904 0.0510246559059726612663932676323594 1.0523724616433050107333234985345207 GT 1 -250687.1522214058536802276962549956072731 1.1691104572412073067255124394291874 0.0802713342805910869034366762291940 1.0836765810048935507789808924016722 GT 1 -367878461601.9790238325024016904399315860760166 2.1776395183938869185155037993615852 0.0161442720924048515382103760156811 1.0162760106594366249697022749242018 GT 1 -3814088524.7363536120784787035586812623183662 0.2045094154944301590274666837424060 0.0351776757412574485270503980231029 1.0358113145344348592957015998453104 GT 1 -62234.4508010802251481642171291630799237 1.0472712880890394362923586364413515 0.0973346380211881258344790780183370 1.1024033789897181389130372571526057 GT 1 -7936756150362715616904.2317768371449210509573182743227006 1.0072621598793131456760443692498048 0.0676342539606946151722155455320233 1.0700301099049525285877788326102596 GT 1 -4171636751351.6448909191996623957312496442878284 1.4179100431137073711410347812257931 0.0973842455710264679094043137431115 1.1024583372445848815046069284335266 GT 1 -40712232620521728377.3939067374491377275406221311002792 0.9143065186772492522039978335399010 0.0626767317348434846406820260732015 1.0647270527590402213973138042574818 GT 1 -231056465103092573232518.5959792539705573013616357862131931 2.9402683129105145780004116490125515 0.0660725503959014918842810452614660 1.0683565208537216191894928523981637 LT 1 -10868917.2631143705225589349406787090566609 0.3205316132730562439497324042637072 0.0911363805332181566543053058564898 1.0955602296507221122133235381610309 GT 1 -648202777646956.0381646972163912499641836872530207 0.4851549076356637446525376395514531 0.0570922834657203491372025292818160 1.0587868627129612562800079305716203 GT 1 -11.9386202816991416062252069204232218 0.8264515326762585525352632799555746 0.0978680548969371867340664314191072 1.1029944890154122047819191448727778 GT 1 -38197223136.9151687109112066371384824901665580 3.3566803165825407553112666513763520 0.0359518253043325219089193500675633 1.0372843048021369152315026962582171 LT 2 -65953229484151398150138237498126933152.8055593756784817539401647443921482 0.5326224446598777117686433921908456 0.0307822761843235671111531133220187 1.0312660031499395233703051504817641 GT 1 -2870753488845151.4321957873873440071589254945622008 0.3205839509688872642505973822215037 0.0514308686163899530909645080484456 1.0528006073040492591705909987652557 GT 1 -5639788830058611554223542699004.6613146696724905265742232400816467 1.0974163090793461274767724493494146 0.0251614708723076653103044042249396 1.0254834328504156055296377744191036 GT 1 -400.7595762158104519669812956687942033 1.8106601850687758956723133978412426 0.0966807180667441093076398832229186 1.1016792089529175720940828130922927 GT 1 -388683.2752861048401173286561621462594560 2.2876994009991338154770288803487359 0.0097548049594331727213110318033577 1.0098026947609397942528028965619551 GT 1 -11320399366853863570612.0252178542191401795237828195256597 0.2074855868248037716197193170108886 0.0253077931517512505690055304740446 1.0256335431072257846449685979919722 GT 1 -2910414845787362981421159996717262236.6473444472694747507786566404356852 1.1707737963848612297979545324710479 0.0778504399773423988844203215035539 1.0810478559746660868779840965548233 GT 1 -1956.3372615370675266670947379249184612 0.5172780142739663850399588458329206 0.0607590412981706523169077833338849 1.0626832206570841387290911762093523 GT 1 -345008934441104348751557232807953.9899951789042696214889148717011167 0.6553699493207197398451281801192136 0.0496115693321722286999878663337122 1.0508845035667176692757313646715939 GT 1 -1935003111.7345086861003698941281122299155059 0.8539524335321576917697489860592273 0.0464155458792493256209425084499645 1.0475272851101955568671719706345670 GT 1 -410914094527956730.1065817418002750160417193850865607 0.0655328863907642266689192136747749 0.0430308377322312396808484373343734 1.0439841113840304505820619007717723 GT 1 -4900402673235029148085117677357761644134.7702099231469354071607169848185820 1.9769344574989609549226683495734169 0.0353147628233677205926791272526005 1.0359534099426943155259644573465493 GT 1 -122461692774678047973898892602204487187.7670681590276667635168699108671108 0.8869172362949362595308764627841579 0.0615995707528024118835559008296392 1.0635785242184261044871141936621204 GT 1 -69797.5853318595630660153698575725608573 0.8477494105114837534296221778865569 0.0319333212976913243280730144018442 1.0324543111209515222706762550072658 GT 1 -1321697685488687420362218935234839505.9922778904355989313238448502438585 2.0773520311046581132364610264522999 0.0648546492622931776738414927796560 1.0670533064409326404309118288893210 GT 1 -529129564547280731221.2984800721013942583068774485988824 1.1205348643773168962487554360878257 0.0198616851230516190085800295404830 1.0200615796469584734024430321479264 GT 1 -9853584472090720976748616132230784.5366241534667341341970294128818502 1.6523578251492634946967820219095237 0.0977024174865378621791865299505397 1.1028108992344542836059389881737505 GT 1 -26883361044255537515243117300.3768504189235762654632252570117393 0.6124024929221713132276278830252247 0.0434970924256995082029794343803446 1.0444714503005944938064794739902838 GT 1 -15809317903734291139144539663346473.6552636321685658042914234194140524 0.1317651668331046756382336603128779 0.0306593706231394449868957450456479 1.0311392021577007375752902230911119 GT 1 -41359770699258823640500.8759225195004669941914301071446782 0.0371095670464034976857355720829514 0.0116880792604583401796947272037709 1.0117569218093997633929908943635506 GT 1 -13919707963989323562276092015360401120417863.4558319396357127990592606826995977 0.2737950595954520385611091127989460 0.0867470191982984369549600419663878 1.0907423493627681855387390937550672 GT 1 -12698550965261777442294450521243689233.1603701608718781733450571396018743 0.9935127551534353042296703526660040 0.0099776218624683487745227382802120 1.0100277319296471526368234364717041 GT 1 -19591550.9074216342663905645666430729964707 1.3179759295568347237125889348182048 0.0143985708519607550620276301781688 1.0145032361754841019882034801903225 GT 1 -403330772800815139.2299999251026280510858908277896882 2.2867992338975414806174307389376923 0.0579144584284276735571194851490321 1.0596592000662218194619637489783662 GT 1 -4461592.8687858399530953594063561816552669 0.1695748236647048523739836041647662 0.0362675667248230782967484848457812 1.0369415817413537123291580331048277 GT 1 -84470584968.6090945810001560865100523679504320 1.6835436715660210399438982579326381 0.0178370408327695008946143109029003 1.0179980381964094575594850326775344 GT 1 -3449598593367414767111115575.5498420525096120553528534533238490 0.3188291882013593448039315664236615 0.0538759101077373188673556409160496 1.0553815452850819864741137840528509 GT 1 -32301818.7329988951447081487227944479822467 0.8870826759394385850427628429287276 0.0022321941640456258235628547711261 1.0022346892231009631032485646839343 GT 1 -424228168814180721030394.5020211634781930804684563198577891 3.3285057397442386157605025862269520 0.0651768121873484393404904830341532 1.0673978715195434405317723105766222 LT 1 -574463219693406623786635.8233651126109460936216442825616549 1.1072850964970200995974639623934145 0.0539741173530656369372666915446856 1.0554853502126424728119833569250777 GT 1 -50454202637246865582312184758304990.5595857363553730047967379145564077 0.2082227743395198271434805332921237 0.0838872828480528480437932797619924 1.0876158682191563263797130793667524 GT 1 -974806547615373258240189503442746727772.8804187929770330603753823847632956 0.2650838448833838825320143088572791 0.0859651031518488474068395846001419 1.0898865278978108801182724640071880 GT 1 -2467259196902110923.0961396046986139987985329069753788 0.2028398388962450629902659706943071 0.0179537241894634847077183976357355 1.0181168476946578049484509482774094 GT 1 -950.0626534558019505255484014663525533 0.3270245075387387882397242819155183 0.0968736597574146609095938147384820 1.1018928236768103805814345699539254 GT 1 -634078505773008899846443296961.7415517612865566935133944503452071 0.7604898220554502228981798533944677 0.0794261651033853288623109558939342 1.0827580697967169994596687110754390 GT 1 -8743683408130685646380.8902702118577543837852467253970289 1.9461153441537009149125911585470754 0.0610825273349402091058349094729233 1.0630276921719103764626635235654094 GT 1 -2535940385054654569837107703199803540155729.0149986911522544543210754263150241 0.1303388659225265463414356703998965 0.0274321651137579349829275696969320 1.0278154528257769314560916503340685 GT 1 -3686961644404967324194051275.7838849222019528517014598253999603 0.5330629276942983253171459044653580 0.0788805076870565337134145982990953 1.0821655092175658010686098552385399 GT 1 -17904087184121620974367423957462.4834222212032985136006445737138085 3.7552696362656887788395445209586472 0.0175517056536482108972918178941625 1.0177075632430391500681054801068711 GT 1 -3736.8110932493447946266880968844460121 0.9093328759750671090726011844335901 0.0880924005343630664971047329057940 1.0922166104160544215911613946837108 GT 1 -6594156377452197655817388.9753551377857303489687107697737236 1.9244358636097466325039156125656392 0.0299365302959100968192592355284094 1.0303937769407045112445055869337093 GT 1 -4891125337173.8742908545946730761267270717800507 0.4772299861596897113992246716746831 0.0300496855955698978771875558043776 1.0305104310600876044997549277830409 GT 1 -2.2884080039930275182177338092204164 1.6247013195676247744764098987720058 0.0428890040646444545711985115133099 1.0438359110411780080653199443054312 GT 1 -4498406741883636395030316690.7605382496730645277558287691756554 1.1262468791577221219143458700757585 0.0188134728889621464199703881607332 1.0189926977244450183649849198282740 GT 1 -4916021440440758598160157862660663.3836476157526639069294468992168194 0.4426444947797274933306027470938680 0.0944899190489972862639988238843843 1.0992568686991025433702600758775329 GT 1 -1179536458518549570940886179773.9959159286893308424342139134429966 0.1155465223995085746062078874989354 0.0753323866788811071960220783981664 1.0783209429968458608748844086789368 GT 1 -2597183691570774443050.6053730488704855021820314086000940 0.3598139111065740070358618050042669 0.0987128548158782064739079765593636 1.1039313760488089711421363056391160 GT 1 -5002531388604659769.9120977437420288334315595174950432 0.2970020630061284248016092077281650 0.0326792129700751601474625965316499 1.0332251042799646318426108495655764 GT 1 -134552906805527917839.4106668437501401787861272967183076 1.3058430462746355870020772681926775 0.0631833493026302046215852160557432 1.0652676928414596588695259163811772 GT 1 -238531954290084368256939.5811403695421627851002449271803327 0.7773414616167062438981765462688715 0.0987934292641034587945092984420900 1.1040207793544263723643445526276809 GT 1 -14924313493713389891028678947336.0021914241005264335087261694270508 0.1044847508083130764818918601608360 0.0294875429467946440169422071118176 1.0299310407489005439609833423975057 GT 1 -6883202728.4001857153260901106252576214748693 2.1290492021687940698752042761298533 0.0402467927172511314560210576619590 1.0410791033170259020331628966319198 GT 1 -129025907.6045177425550813715558617692033158 0.2104381132058543787017217248560497 0.0926140857113416497934245247985115 1.0971874350283040820306844812492645 GT 1 -74398201836.5281640713158395953989746171791184 0.0818744717147232432194156099220890 0.0954176901084106472130937235501517 1.1002819778541408401476002123619396 GT 1 -144125435753356258.1613501683787586785118697067903256 0.2811821218801229224470025745969748 0.0247147988184147768712584521100901 1.0250253367257832436791113042006153 GT 1 -68339650.0858562144978233852757756502414894 0.6967068636559380841851529843577685 0.0136467756177833459641270082212857 1.0137407487934794640110202927775216 GT 1 -50103518850902461145269326053504449958224.4733784715763715836134318874909336 1.2194519715504790321970865250785973 0.0415511776983419362694647378000630 1.0424391114517529972838701019467947 GT 1 -6198704181743929415437496456932233.4944015688721150478153641969878719 0.2162308474620179188923255042377802 0.0074306341534656997172371198810532 1.0074583788412883228784904125326623 GT 1 -598.1743219083065114791674218851186994 0.0492388918741389033569780822945643 0.0100828330082345244396973747798360 1.0101340090592938898929712168399022 GT 1 -9661989009432293706120632060757176850.6062812533631753206461428467070146 0.5287441380896859800751404999817285 0.0086509187179028270652422731110127 1.0086885551321482102477586089728364 GT 1 -1635.4664330800162328813374053364067229 2.6142911770218981105046502878650444 0.0663154419442507543461778609750187 1.0686166300720415944384087680867072 GT 1 -4252.4987021194914184142853032680496689 0.9338956554254121640039811879261962 0.0904533364436483814109929448347054 1.0948089755161941617247017467718338 GT 1 -3252120371250134588669915373.9285993891354282117043678766985985 0.1222153376606020662928974897478916 0.0074382505310275724816781441071398 1.0074660522664874434189511992226451 GT 1 -2090956360759654412902083289917595616.3358778000314399321060066938083876 0.2878330446833995138202342218998831 0.0760610983893841259152623934206472 1.0791093333247623712909581444344585 GT 1 -19226402574097626892901227513.2671986503098082987572442490614309 0.8494371316660862649457447643224413 0.0848816497932884791217107716111161 1.0887018775826834989511082883726145 GT 1 -3993891252.7817928455571145922761713763056768 1.4152797006361737780463506491175085 0.0674676476111415134039964274311118 1.0698514338152114635317548907740116 GT 1 -781734740790622.6735127244384115878678595050385143 3.9750554056549648464640489942783762 0.0029984195158407579105444660437124 1.0030029237816763344965189895295041 GT 1 -1358069603162733.0998295768410744885916847967065560 2.1328486633667604111767746000750083 0.0693559899238925195213539681626826 1.0718784485384117176468064796397557 GT 1 -715826.5990049530188443389478800883447092 1.2215948846079355959654558100158043 0.0249982001434721554726112392000361 1.0253159619792985185099338150651824 GT 1 -1509636587536607869242296730508736.4297794014045700059150060069558459 2.0680316278479161329406553037666737 0.0683297253997024259741419653831252 1.0707763095100866099188815917587902 GT 1 -15492790806787302588809846.6291828627266564231875526487804058 0.7758277036202710981291224355420841 0.0639557557191441264954910197541604 1.0660925340908851474342270503484351 GT 1 -444395746232622238002871782663552770683356.5957954757829922940366202387447763 1.5037790857375047665863096100100843 0.0008571140459610602025469281449784 1.0008574815782313400418385033464137 GT 1 -500739802222449108.9093063286091327227288019689616242 1.0299389383307090165969057173949917 0.0067383246499890035919857997110826 1.0067611296623177798554353466790165 GT 1 -58340944993391573782990.7473912463024376816196810833164770 0.3785943940435731487547136950809543 0.0189685482194475716683353489553423 1.0191507589923331886642409278231345 GT 1 -5912188994850091769618532.8383056843389818938855098118196792 0.4631538993079067744018803524981126 0.0282501376633469262129205329162685 1.0286568509152088581470847208956602 GT 1 -61831826228630976525.4775010361043186680652252654883666 0.3337446899119585860960456910387484 0.0868686151099037775725655953998561 1.0908755041510692149180330634365238 GT 1 -2100640489497715857920.8597766521536436494732561456006169 0.4816503242774412133047641062717386 0.0802677089091012352032016350163792 1.0836726392289331162388277929574022 GT 1 -150077271784.8418724276732731663415592994027365 1.4089094262817698180434448710554294 0.0548615449316352462999574675770254 1.0564238489205626899224663931546872 GT 1 -66390174294192990227090028388206276723.8333093812359066055399590121772900 0.3307268274504338979815564169668266 0.0402303672041024369008969690936293 1.0410619891542703054567015742269273 GT 1 -29761860131233474304861.2165744688113617352646348910430317 1.7261908617711450476065210825703306 0.0497417825407597755290065195596885 1.0510215234687805643386561052353408 GT 1 -337565250855.4195669828163201890665161095034721 0.3975548983711584625014019493879089 0.0548894882713844375017801092173404 1.0564534146976027129688242522965709 GT 1 -6298576299200429426185820099844694.7515485572958069388471834140115410 2.4656841608425211327386756281367129 0.0921635355358178143059963881025911 1.1013655986674400696154593263883488 LT 2 -45299279408268528079627888255706290911393.1532627892033013811365394397318661 4.9858198861031370828162231276288522 0.0632497669300396538043338012643285 1.0653385925013679511237110915038094 LT 1 -2.0623464662774912603442595583929583 4.3148834210326385747022776290120288 0.0606354863656000123547051728646432 1.0625516816675855739593022016799728 LT 1 -117.1481361355071914885402339415215271 0.0034506987473261822608464803547677 0.0776188003209533965189528541338373 1.0807966921961404547142941762602183 GT 1 -44298349.3105991832616872257268071897492242 0.3708639599657299059248557150305703 0.0992975967935689795664983362943108 1.1045803720418626201429398259534962 GT 1 -6876179021282727856225.0000216897050880395363526608279414 0.0658993666418267918932182026892938 0.0123909229404665421789425493679514 1.0124683305250656739166275019482521 GT 1 -35511389391795165798247249236151350611.8124032940479788621597467830736958 1.2368682676348682857196231696758263 0.0283216281362003841996260680078420 1.0287304224231530315615854259226702 GT 1 -1222528908.3223599221330063395862251718543573 0.8235686866497952498540857623205575 0.0561318281636994965090187782310188 1.0577687710668882553578381548739317 GT 1 -7741061108971095143.8121227305525272002319135390336920 1.5175111744316627551225368023867708 0.0665581139318896163158309107602828 1.0688765717484813747278730074699131 GT 1 -37129676505170619865121965428929697077386.7703352777751872366791453211396625 1.4752313111407266390839088381980961 0.0378340407568903976062461240911791 1.0385683283896712187811666370889190 GT 1 -1844187980074.4524912864778463549094835977179423 2.1824315712983832513300501658072207 0.0307330512491611019591832176261023 1.0312152161245173693824262025368577 GT 1 -815607623184453107814798838.1268898812383974738205549513558044 0.4068948731725079289775711317915881 0.0252301065441943754489683289690251 1.0255538425502507280517652251430676 GT 1 -21609283139130129718675090238634403286.0944717396403430453136454523577790 1.7236127368339100176506039660898330 0.0833554876567661682853604926865395 1.0870355456345249312521207352853600 GT 1 -3947465748329769473296801748.9781029626719150184911696634621310 0.8691336694470998531497053600641621 0.0171833919688237929358695788875223 1.0173327397892737525892201374371968 GT 1 -119089323.4104749404339128257493230765960736 1.3168369606687721802233675110662634 0.0966000692640815893822135661471450 1.1015899324320829495724025001175487 GT 1 -151241195034231941978725990.6996202665118729909697371998174159 0.4509159117179510986764607381470037 0.0706952390004247854976660794549367 1.0733185412214050757034608165202083 GT 1 -95523992849.5734209440397795200506439659519749 1.2860188872962235596939638499900588 0.0131213543725764581767585402433110 1.0132081998664016317937627638881007 GT 1 -2240080065224263671649.8916926464775929623404044534958631 1.7422644974610643532888898100283970 0.0729085839358749391609468172237586 1.0757031033225107979899929480127912 GT 1 -363495381.3160629268494425072411435113928917 0.6744079063960655835133421930515242 0.0254511690924212313264042728040985 1.0257806526110289872812428190044139 GT 1 -4912398813008456360795802435.4372169567037057610448967886404435 0.0450088240245682229642574900758925 0.0818628905784810490340574740400410 1.0854085428459220142324619573653953 GT 1 -2686451207082620792424112660605877829395855.8355285104301463858859240256028158 1.0830134344604596108890429799484847 0.0075686618584056279556032723595746 1.0075974495276463423359258396619520 GT 1 -71404020655906185829134.7699983220267540660631734147618887 1.4595089801353347910761810648561438 0.0898780486747852592130078898185009 1.0941766760048159718325577056526682 GT 1 -31937491110513493478.4840409561549625343554097052938581 0.1797604547203567923726964337669973 0.0717329438056019125866394753560125 1.0744358115239781421748954561783472 GT 1 -43151961419.5780917080437184347910084892653698 0.0625753266110271995183780995753347 0.0732527209971258875126399291726277 1.0760743730194048233207198978473414 GT 1 -2403769136860.2682808640279860265148940805861580 0.2476751513371602193405684978355257 0.0069320915658384114746601620247558 1.0069562301310878142137607647001496 GT 1 -17285038211256732421517336964941.2515911800656936732549422070470033 0.0837315241126141941847166311006896 0.0997845886297229440181995343478917 1.1051211983295281380736621051698919 GT 1 -420530896825768760243468539060484522.6856669674167038211830367839933656 0.9704812910727696646550535106241904 0.0638186099631892346499584223878759 1.0659460285055685769611552191912665 GT 1 -104872345541233918.5786877629288054292579572462960201 0.5806218025387455647565313701000102 0.0366445353371426432347194673368828 1.0373328131091924234854307494500033 GT 1 -219175900652662.2450443540123475724823158661668356 0.3795852433557803086855443165147917 0.0615110711723537256575926849826901 1.0634842196925535194430387723996830 GT 1 -220929412880739.1195069301051596334761127568576193 0.5428274706465388376802035258583947 0.0548624912084497771059624584216645 1.0564248501255006171890061083221978 GT 1 -12282817.4190872970395038961881027035513326 0.9374031608058713429120923261353642 0.0701037909160263367828192210321010 1.0726823021984409363481182171862731 GT 1 -60839.8398144423095362126511094858983625 0.7855070972578574985141123952814489 0.0223114863615567487925106820430644 1.0225641528892802186734218105596570 GT 1 -6137171902700454729118046022502716.3600806369843347911049928049162857 1.3325396169490647947418265890719271 0.0644880643550072699360034146761992 1.0666613747764347778170085883693298 GT 1 -888445819935114832929946079283594762.9252450723882031002352619710476493 2.8879215880010006187660351606514060 0.0347069734432868378852506052759939 1.0353235692739215563656476887216881 GT 1 -1581540795076529211565575639189271177911268.2143767106201086909697500793445767 0.6328090838690829910764520739725704 0.0824404595584827475647253168185041 1.0860378069447624006841925609480758 GT 1 -83963349.7425589796748698883574653334776318 0.4752986789727721117464781770606297 0.0875442224664607206899917507691027 1.0916156576768017482292628179700473 GT 1 -113011.1373843166485610882543354978904920 0.7704413864246443648429170007907311 0.0682115753469764541422330020287368 1.0706495022425773961381970602920506 GT 1 -2677379802097976665333773940742927580519.6124828860444178809958315535050292 0.0090900342537765318247097187836851 0.0219825154290152740076141010608921 1.0222277312226847284537959049811494 GT 1 -1672518126034636.6617919235162833323144040135608962 4.7850716665252951738733580692781535 0.0148736784435208840152006997368396 1.0149854007977611339650172019989519 LT 1 -5642079552686838318337391396673709.9691999788054285163593598595437956 0.2716360263598304496202934491668301 0.0217713284606189799501071554065513 1.0220118207979592282576460075928565 GT 1 -2.2605775979080362623992938873795678 0.0575306122858178885657059388693246 0.0136561452718247478666694536027908 1.0137502481273008510253844362193042 GT 1 -8.6109417367258809764749636319784604 1.5295424768339505967469736887684765 0.0849441558166682580095519470440288 1.0887701836746343951844832920143969 GT 1 -1018741879.7250308410380785406224219221896849 1.7448247838768381032194881402709382 0.0442856334836398016541356257662668 1.0452961903689135208492333702969081 GT 1 -5540805535362779340636170948868829610.4578640967345559297325874536418013 0.8119603219471254937069245101695058 0.0616157946767235188305185415323391 1.0635958132814572754814690739769151 GT 1 -8432241051662015295896504539923.5552249906356974892804961775364672 1.9080700194392689348019958847126943 0.0347514567117141730796057340049618 1.0353696529937751300616583206256946 GT 1 -1230439540211157615576222430385745816961914.5957604865942190548722249038933955 0.5890357547042077804391238364191202 0.0780959896833107292430379923062577 1.0813141711309816590999832282710376 GT 1 -814861539119652.1544249586642347821270168207864064 0.9748877282984190986003875974015333 0.0956511028801770122915631206643831 1.1005400449073898211427909199067446 GT 1 -73437219124700.9449440294356550394465663997472087 3.5860941194472564987259861974491012 0.0505345576623962351665664980043424 1.0518561450344680518422630690377563 LT 1 -6072.1662693618610023834493074498502697 3.0972881976568561995068408080344948 0.0976894596488805971589765278328590 1.1027965384017689925443705126220923 LT 1 -597115502920430588555378592816222.8616622190793329091782307091407056 0.1092210086423024719441349367568182 0.0764164259483892313627357217690706 1.0794939863593717283455584143739846 GT 1 -3.4622661248855555795737386935333567 0.4189340730607673667506462359598485 0.0007316237949446352367458013851882 1.0007318915622445510636979410096620 GT 1 -300.2480393348851463263248647620404608 0.6184475984712273918187805995867463 0.0814432556957384298528080381063851 1.0849515969164814475404775574767885 GT 1 -58189384328798554053943513663471429084.6310573805678428746049144633517489 1.3207174196757870941078373539864323 0.0529774718791409092832246747073781 1.0544323971446297205762318581730386 GT 1 -6104445195313075092084708366.5008565520008801444993097538250943 1.0037701969968340631632650299447281 0.0413733219241846857446935896236519 1.0422535623957742363765543387070075 GT 1 -8338355840.8821150667085628596217247537691155 2.1225391523530650899048932930655110 0.0010803940932387133836223322060816 1.0010809781396418176660016025363756 GT 1 -30051929475212801807525.2434482997790384892912388599599601 1.2706907778002056428524286013591349 0.0210746617759399263199384212531360 1.0212999026651727263706934094549257 GT 1 -31376623894090395.5883086476293721745209166379663139 1.3864174519537508501516379700728708 0.0276208273545128795490303705857979 1.0280094552748062162909137341408957 GT 1 -4.4509101261863501854468047889340710 1.4622806171797967558222908244933311 0.0300133301312288543028819300230230 1.0304729499824649514299005112114471 GT 1 -2730980106081155915726873008904042972817766.3635935564368460311191300895171942 1.0613516421006682447351076038288210 0.0984415751271871302745836893754124 1.1036304299275835573223747608879694 GT 1 -6077296759226.3000336983974710015167321730477830 0.5873832612705541761344110499619601 0.0085663459432146357282217294092873 1.0086032479794963839629882613558422 GT 1 -805466756610688621641.0927912251051098141334320377683579 1.4311347970405419100282250109777504 0.0931571201662875333351646155461572 1.0977860744864831266206885982179234 GT 1 -2220439951548495910611948479540.8897831618923610604868287725985420 1.3830326896993335466246621578668198 0.0656099807116669441013633152761097 1.0678613483775359264340945319361310 GT 1 -22608625091752.9893344541681573188215993387131744 0.4871157991688012788705339475018893 0.0841391064849469200485834039857849 1.0878907888151888021482704221706127 GT 1 -1265929265421938717653515128918386.5148398789449658105757222501647764 1.1309561302149199971899190198317589 0.0447735795785800185037715786803824 1.0458068771561549716737005214393070 GT 1 -117755344.9245314561872318418040162622310275 0.6460336215487631953479072921625607 0.0304416412846416630235492368788057 1.0309146114588039129263651505126528 GT 1 -12957045768210806463943620261577912219.9068293953920566031028985814443610 1.4929024937148918964647196165250230 0.0755722044175743142684689921775365 1.0785803322515950738829306828712180 GT 1 -17857.2153181298628345973932673241048463 0.3939663670437290007584331556988577 0.0762948783595838187838673567596684 1.0793623906978335233043831498409965 GT 1 -45766259378857550.0909005999647963126985275147362663 0.9310224565762578060880231071457708 0.0405600798022134111366933451246045 1.0414055812344997628730877225609316 GT 1 -23592999564390266278416960540114487541251.0686808666402411273959526618709802 1.4571707275654081507893328099191007 0.0434769157455300935586375543559083 1.0444503563057859081130764053207126 GT 1 -40.2966605885470366532531732411584719 0.7702933802957653360547234353573740 0.0337746918797149045530621902278736 1.0343582337456671535094870483127096 GT 1 -70433158037081159.8434348449889473993843396619594847 1.2180343171421510194089771097493481 0.0689751967962339402297822648307921 1.0714693605951074820524736377989393 GT 1 -348313097213011301810296315812581204864206.0960466752012219848594002438249140 0.1389577291688357057725220749851011 0.0083914921314650261388384127333403 1.0084268989178778518863802224419209 GT 1 -6705529893825464617060.9011742612076646923771638790543913 1.3862811050185030388250054395136840 0.0450311350541663048063410627112274 1.0460765411838279608955008540807224 GT 1 -895220449933323989986004966257842301.3799011826547855024696943114193830 0.9486360120489936220308811333498990 0.0156701131655808460863934947572602 1.0157941872659054145291611440767943 GT 1 -1289828598189947523499751522510.0338738905598663851192483568565024 2.7154661246377799964531542886446726 0.0571314754816486927406091528103016 1.0588284286369354702829839090731024 GT 1 -912947683940902275167421790838690.9484976436199425516321988657501789 3.2209827661783620815772447535907851 0.0743140975991960703016463449430213 1.0772203001479735213752627557041797 LT 1 -97016927.9325348185837194751821333792540369 0.9184377816863004155618298172806617 0.0546933411289451456228287992465443 1.0562458973874621492932806628669839 GT 1 -190742904834351594420728905.0300730582358402647861522704134743 1.2081203571999376822569780304406354 0.0264064430700319367559084156388253 1.0267613551101255500981412251585517 GT 1 -4315854587081635686216053.0105601490697436871461649241562659 0.9807067963981239582372517280492353 0.0820466435977272165261076888848320 1.0856086996718300391265233449422632 GT 1 -71752671312767561078.6965427071390632204578367879881968 2.8819651577350344408735136377968743 0.0829442517232596790183025466124974 1.0865870143786458154046253412173393 LT 1 -8504873508576219051822560.1974045378349723907208981009461240 0.8397676263356122173253663428716377 0.0310195989548191355788881309217684 1.0315108932554839700856285968914870 GT 1 -64266025230699618.4276124354965379457416588226580764 0.5435052510116410354337792239436487 0.0586222508058591066071210108188004 1.0604107861621333861068064662599242 GT 1 -4678901172811741952723649266141028677.4448078530690642620083239124190698 0.2213199173332565816496448122716162 0.0327022246534102594219235703605609 1.0332488936550731975689702515061352 GT 1 -4886767702487036378008215332.7792799218007389053842977921228226 5.1919424236724948925081563103757562 0.0777972857293568824336916241711124 1.0809902159579067071729363546888654 LT 1 -1392338.0902166810700039211863763880128666 1.2528024447546613896615402905582836 0.0122711753806435081055651845810920 1.0123470879165297408575470251456828 GT 1 -2433.4336709297033512968348879367704681 0.7760222208670029319980702516565207 0.0988908558669734929999886953535739 1.1041288920476256503114673331954003 GT 1 -748988664630234416209830197599010.9085449172190404058344336809471397 1.8420485888347833441234497370069295 0.0380195827068876812358452436407121 1.0387611847677877010590150285391578 GT 1 -57969710331760798917808949840814039248861.0436598163310095767740462063810370 0.3702124104717120295985089911772476 0.0922913593577348351179942147397677 1.0968318322238871895663900645424474 GT 1 -90374331616309492331921668.9697304923670019419833051386743184 0.5757932262868767260000825052078494 0.0504765827431063252387490216086427 1.0517950863094365618222660128446314 GT 1 -208409717684632308389.7245052956666447929834459431103631 0.6256923786676034718171831553480885 0.0211456928873460704277091499760571 1.0213724655928816767528665267047157 GT 1 -66784.2298626618745845814876435579021638 0.6894871846333404550970429853719365 0.0815722374731890450102725919738718 1.0850920246415743251816967055185749 GT 1 -196192275767256604175911.2569607245068076359296153255943689 1.0460030248708044266262911969977582 0.0519594032707817212830605211611036 1.0533579540899897406874079813322761 GT 1 -322309154275375428885522507317001436017053.9167367568113512487926701988795882 1.2607915769222627745846360763440440 0.0575427650123034031286599247739781 1.0592647347077621828290500689375876 GT 1 -2096254556357391611630598142.8464748648145293754439530808771421 0.0371855666785897978331993971135041 0.0005451244953356177290239083292827 1.0005452731297119392808166600109414 GT 1 -12447649517450926440057.9972893657093817629180876996538564 2.1655860631830657540147984806524971 0.0322707511230380077470282006547248 1.0328029324027269767799942698369957 GT 1 -17312703183469853620122542369758321.1278104809448267684298464461511038 3.5312671894100995258264408255175550 0.0436254675566433415266920067761768 1.0446056723144579406701443673637088 LT 1 -3366455254040168794169206878.2446127987158790006458799599509919 0.3831571950745044106207077986713305 0.0803253307756455446700024978622061 1.0837352918858017002303733422390419 GT 1 -955979840123.4719717747791773061843251913254023 0.9671204677718359728252157994691909 0.0860862101806003302163315340344571 1.0900190338371865257823951291730865 GT 1 -329966588580186172992.9790391734347538834645320913773559 0.8773017322666752402388817343137406 0.0141948640880384242855577264723519 1.0142965748319969571266828667409991 GT 1 -29825217.5896749546232897660365786337643898 0.9564608861954249019618668027149265 0.0087532306578016457079907335662960 1.0087917652139784768469024448007903 GT 1 -43670562457248156261565990229463408359068.5795595627157180886338694312761359 0.2241555250871041692021269605491165 0.0808776812371248764498007437297279 1.0843360656326602056256498328256099 GT 1 -182325626505931754112837596838633510747.2382378360154336448441001029156675 0.0969027556267982773910227150531670 0.0719985460032902933151455081432460 1.0747219793903646653823645396491363 GT 1 -3457923067910827.0774824025249078159853994881002694 1.2525754145679663919606004967130165 0.0395881459563931533039738435273802 1.0403930718919617520284121196032061 GT 1 -6780475239190873988613211204033.2166541568500682703694371148888211 1.4847363142946102079706924499193220 0.0284855267029547889283051300433110 1.0288991123887951195119509861595624 GT 1 -290160944578065362062890040327504609909160.9633386815137637996888106558653385 4.2368913262903725116115231312810169 0.0552531230266507098690651510400528 1.0568382424226234461789069111009369 LT 1 -923178904003465374.9601188610824539265188883048880559 2.2117181379606514664875435165088933 0.0590292591339064404375990100482185 1.0608432335400120914797439884447586 GT 1 -112141987455211007926764.2242557957478214127637684796670344 0.2113802150152518247181474539929452 0.0891005127373409499199162575388628 1.0933227201224534265218419040336384 GT 1 -326917648698588042571812444.7761744460271987905926261345440873 0.0057949155668949977050478145067678 0.0500527760374651043643555295090351 1.0513488496543632699034504907696488 GT 1 -8224456372544.7225828480907507626427098456250977 1.8617073017326918500985560603674420 0.0846613102952048904953761941544492 1.0884611295133833049799675611836739 GT 1 -828666.0306190370327107331140236745540538 0.7622590062555831656722294131751480 0.0001150581118716482661090387521362 1.0001150647315639730693654114528880 GT 1 -376988721963244581132847106374.4665721474824152543203254725501100 2.7473551732506188962778793748423980 0.0169850007650960176994291249645807 1.0171309003197403410912674903803415 GT 1 -1273689796275716736945.3425110946140870432449042102518148 0.3774517043223594766837781293482993 0.0798892452593004602729691701593959 1.0832612305970975145386312855748464 GT 1 -1460929929.7492186167529390345066386742215936 1.5605301208559080641944284056407446 0.0399302382359141034151039519903824 1.0407493286562268358599010662464314 GT 1 -2180590677943048423626964207.1992929582296286888349840201253528 0.0690292296152534757763485432442240 0.0251217594707166124574552520222960 1.0254426972910619965705886448644436 GT 1 -262559597153306388136.1510873932597855869918488845184655 0.2796314546745947296588596050317786 0.0880644961840800358944915764835767 1.0921860109086351694672824324145258 GT 1 -6368173385767.2110176792729645801815907063972513 0.7344291445069884899467501750216512 0.0522547887286416540602437653756545 1.0536695773324507120424780825856821 GT 1 -72739694187112534610795516363714617856.8801046449197484355913049731561995 0.2916873425145652925210640834524366 0.0583027773919813450922393625873344 1.0600714758088794874090553609152378 GT 1 -41111285213606106342838343737050221092.7360570881911773077236430023486176 0.5071821633794794310262869310271487 0.0172436754056484283031859552448681 1.0173940790922758678709878576599121 GT 1 -1048.7932825138759109130099966089683257 0.2251873270934050199444474118181967 0.0966381916939572821996085022438563 1.1016321321633010400467270723936043 GT 1 -192559856886008709020691588360.3378640693467213606551541154352434 0.6154175524710274193934630505799222 0.0193011167304075590586340072101072 1.0194898152919723231831937037008189 GT 1 -23638423405606529232.7900904153009947089465355727903268 0.0638104110278129721962228045521973 0.0663693129358457836973169306996378 1.0686743289439923941892019685466064 GT 1 -28348542058770427442744444089403079567.4604710248050925701010548138310329 2.4815205728606504346067109832218932 0.0134608908927189722505718524838701 1.0135523099998777406872418490194987 GT 1 -87760261802010076592880227414778028361576.8800013805070801454011141781312421 0.5526033484138347974281028961494566 0.0871220498442350119752956580279661 1.0911530873277753543196138472384652 GT 1 -6938495911618246464388019517735698.1725704768078190649294044479248232 0.4195305986617252821646384809964403 0.0075435233993643557662574612281883 1.0075721196738824096875942718779937 GT 1 -188465677760385.7830392659164098328608288591068271 0.2220303847762030532782579109575546 0.0870200217759599830163051745613384 1.0910413282836620375633432899873310 GT 1 -9592284232372556788705091592303581715.7887163616332951694570484446981811 0.6503810569135422563382970506785446 0.0944196004456219037438756790572894 1.0991792153690589824330496137100492 GT 1 -87320189077948866.7950641036441541072780216650958826 0.1587291571931360850795744634158554 0.0321504227320744296376636564769372 1.0326785991650481497206528864882510 GT 1 -65.2371419793261370385541110137644952 0.7952934927666724911003972549068637 0.0252736877112227795322094207947166 1.0255985527342533881270356573793539 GT 1 -71575847992480145993.8729825052168702075727655465502706 1.2318873351671787542310987906707947 0.0019808487041070991860875713872840 1.0019828131795491522778740003910313 GT 1 -3093638147253232806784609386302656288044067.6092972785546358178088544968333197 0.8046863951315271386778765403292306 0.0196001006639583963769096643695051 1.0197947300046009665591882837365435 GT 1 -363038751358842794305712.6885099029739845181535481222709916 0.1324271188958430644726344777042847 0.0285704587364947422017949980073780 1.0289865385142599439870165585478654 GT 1 -138844613534710989638409.9766207330117364914274229525160733 0.7150201525051937997115213380909732 0.0895958283609004046766736603424717 1.0938666334159339643811300053284829 GT 1 -2697806712405.6187612596110523680655559858460121 0.3521167424296560247409063317609501 0.0911318263029248402852457884399891 1.0955552187571343414641054046875640 GT 1 -11471891987388766188125464514243928073669278.2290727551436335800319661141651460 1.1983947570951606382107199938361220 0.0611984700699155061467109812997275 1.0631511853409760407873266863316352 GT 1 -157860734327668433397926.7746233400807913169147703831424683 0.8028321060095658528944522554033858 0.0438121431109361641369230735949731 1.0448008822128924528808573650754909 GT 1 -4030513843009.2807366715351443311938631733511366 1.8017803483837014845982924892513668 0.0113831263334873505567693113996440 1.0114484100104390099581515225058361 GT 1 -1536.6888243055027804398479404383403805 0.8448264990794063622696229049898607 0.0027604768791181325146460687665271 1.0027642940217926266626662943493649 GT 1 -253820493234226068664936.4676955523485491019091237887965835 3.8947403972351615771339885606717020 0.0810430257784640789227836102669191 1.0845159757621266272497901264081982 LT 1 -827296.5732613805361790562030423418910468 0.4454222771980195756621607583676681 0.0706726255924969877553101972435541 1.0732942078339658654636274408874901 GT 1 -31892409415852690106372515.9846634303708323400419843766818101 3.5373982712911591422813184548665894 0.0163721693354833356099709881656654 1.0165076743428303633218876639223914 GT 1 -4483619948351462330432790294.1691594249652690416770186588660729 0.7460912923155532154567970613254383 0.0311012577239830372004608145886711 1.0315951696867502503657705225214419 GT 1 -6158784117059797222053.6451302626365091476692218527199886 0.4552809721125091176349023327831011 0.0190934875986477372477652065332853 1.0192781222236381643083290369639089 GT 1 -472731191989537986169274172019316731675793.1179505148517250859524709911097830 0.0195780828112400537733724209426181 0.0159678814069906322653497615129586 1.0160967416160302330867608057263582 GT 1 -5321860830959572062007098021.6648480157735631547670163753226705 0.2172095463886331766277671033161422 0.0284737656791724471944143062026356 1.0288870065963262585434349746800219 GT 1 -16899782631699612100101402946539220047816.1791702451587981178385355739649146 1.1876033091225784773769856726720385 0.0897917908291153601011528999268677 1.0940819043555774044436170575947452 GT 1 -7876138794045.3858108689060303675114832355663049 1.7131930392740459874974640680469657 0.0232815702758155511856752239674733 1.0235568673259741643793011283405254 GT 1 -35950.2672773440278954828184607461835317 0.0053521577285936169793787602907593 0.0424986643332561828718446928855686 1.0434281629760960779692564184112558 GT 1 -691189974732318118727090701269155.1591858125586282666554505023195315 0.4543572717552211882285214662321288 0.0803829318830221550089815239389490 1.0837979258945628146585319283781766 GT 1 -29051048460427.7596850246845583422790341489103405 1.4745025084604413252876854343592799 0.0970327210368688152149906773711280 1.1020689621429164097178475343870949 GT 1 -37799.5315714637338274894994689745322697 0.0724573770078862375256763901276622 0.0516598906854190573695752101235849 1.0530420759681563621672811392548346 GT 1 -794694391677490019703846241778.8859019636206491942044218935572171 1.1891948390839632466787039810307750 0.0766914588160017110767350514697177 1.0797918195326000956150858394865845 GT 1 -1021911114.3251167458047028082036214466865628 0.0483608491418786302746283964640839 0.0512392054527906875848274868059910 1.0525985726851548371206319573527382 GT 1 -413342268774596728868270648338994.0099243431319221652342607155948636 1.4224101429236732440385237263429189 0.0050722046861725752491377826870491 1.0050851119804859578016186827181363 GT 1 -1763474.8215677031265099365678860848370156 0.6383060767561884041074196571581220 0.0430456848914314562414557053041703 1.0439996262772600036339033909829623 GT 1 -2707197549451427976248983434640183421118943.6949757655465178770173018432340595 0.4925582189987769601123826466043334 0.0598516239608328456967973183490181 1.0617175693244129076395120108681181 GT 1 -33879817182537874630313704.9151632797784047152092482888476855 0.8874260239920379825223071461350565 0.0129132293953537581277081903924219 1.0129973299329342248691100264522915 GT 1 -242657622524623365598630444937937910.8327507035690247435726661701937015 0.0092262954521259645667773989410496 0.0708788942656007616087451553706679 1.0735161872712812465995905884528697 GT 1 -2686910798584.8606084672280735226777171832098409 0.5563138545485551053892722556203057 0.0650803763338941150889115208876165 1.0672947173820355476994731456435549 GT 1 -4819433943965442897905532476.2332734712466831807056774212452005 0.7643550810867942744872146967657474 0.0991366381453835161163900103038442 1.1044016845337679234331933108236698 GT 1 -2337554175068383433765690005981781667973.3600498252775379496914159412962716 0.1656970556790529201323178638918079 0.0163947525641284264646405784372597 1.0165306337256279419823524491175024 GT 1 -28855478001371375705899634.7385852144264097065005216669909690 1.4936482706658239896513228767960081 0.0328015844060974323893648372689086 1.0333516178198866105847253748834567 GT 1 -367320109970044947699087440941821.4777039723777347644287245970423378 1.3446696774751321723229261405062439 0.0358095764352377217613351767651291 1.0364664690608066217892920159028703 GT 1 -131051195944160117158.5398597246587282110162515882510715 0.5076868563093363607322502425872238 0.0639055527108294758064672209317344 1.0660389023716618429035430225300405 GT 1 -223759966070648341.2386349008282047835047475745415701 0.3420279036851664146938082919445151 0.0060914166241509851970158472999295 1.0061100449896783681904689868154512 GT 1 -1399210150817099525658474409.0627035975409662330853133628816095 0.1764693337280941289118507138547482 0.0854986767268148835136543459601080 1.0893763641613558281012327890985704 GT 1 -287310822749239654144150.3383550859352781961087650452064193 0.1462034687151228700054691257827754 0.0026284635777966833166914743418409 1.0026319240533392787565910178729742 GT 1 -3890082013424888895166175400102685759586295.7304619311832035390493052733423106 1.0777232337374900595203232615429832 0.0587166758938250601001647779616560 1.0605110963978781580832056514075971 GT 1 -17386642.1793854099162590495582828158274656 4.4755409334447811365428141090971681 0.0887467579097539127514996833417534 1.0929344378162198567833421480218729 LT 1 -909620.7001076615471537279033395423735491 0.7000283583815326450635965330251473 0.0486516845985610151582814150974631 1.0498750212426159854072977949900360 GT 1 -742104334692517023114.3678988637351103836184017254451560 0.2789390349394556443326721717202529 0.0441340154284228813435068277236554 1.0451375592598957169604479823390603 GT 1 -28815090975.3183198161319967158193319778568400 1.4450075039830420889096148159672705 0.0065878034209464176339206638809143 1.0066095987729680880436352874796893 GT 1 -40986684184817550725446614100973262830612.6215357164766189208148617962496251 0.1449996372042768765279645616829779 0.0203750630949280634659940842168505 1.0205854980163357343445865651684405 GT 1 -1259516323967085141.0640542855690059699796342686518672 1.7888062994716532162040418908199016 0.0562632799338581911681863468879609 1.0579080499710011898414839458389848 GT 1 -1857013.2903918287790033395887228585917140 4.5269662900969553772431081346463191 0.0724847785083083310422793480026385 1.0752460733234140040645797687088030 LT 1 -3222444145880893360236133836.8198069274357055224624916529180824 1.1663499482472196643637548822754585 0.0405778547152263296372294236314629 1.0414241077490764704283835656234826 GT 1 -51788295.5181909674251491310095167314475983 3.6302278997785700592646979535054205 0.0040120558192457567673203712445046 1.0040201257069861952155545333851418 GT 1 -5166745586476958836335.9962374679586159804668142581173354 0.3330989720313080617608689288084214 0.0189093031638257080431705020300307 1.0190903702385732504462183793593300 GT 1 -11773417094.3095378487847343530587397426018723 0.8091940504280560473441424643523265 0.0618353706737980349082082710715782 1.0638298343674234572736970641651328 GT 1 -71624017793489361.0931737160626135809729865829357167 0.7180042007447887045742540462398923 0.0068908251616225019402239547725328 1.0069146765308883249099112515241609 GT 1 -568325.8201999974891303316258930300805518 0.1084821501238747155870953972632006 0.0432938718179334437470998669269284 1.0442590107764940742188914094382155 GT 1 -266430702871549906131393259368879807136959.2757063793869352134486397307079459 0.5847968140760007236055154841178445 0.0344262028849174776548042565389674 1.0350327459432742765100658922238901 GT 1 -11795904661049385.0787752314607682468998238909449891 1.1017046283438090226603566212374717 0.0348867400771326906748278872953605 1.0355098167344945682267605015552163 GT 1 -619586047133633096153203489369691627754143.6041499338960526202325015970333073 2.2872254585205097365840840592378525 0.0770638458982295471492003102907557 1.0801952190258835267772674223073780 GT 1 -9064090950984398.3319583505098790094995866691442423 0.4363537126564037752956468359685471 0.0667449680826499490497818219283971 1.0690767693805491069465631304246704 GT 1 -22647482408735130491267680831026.1898583250401651753890709681397046 2.4717580780357370089646560718662923 0.0074371937796469407793542109448211 1.0074649875963864130581363054646274 GT 1 -185097515848923232301.0366784330576430301349184916713084 3.1695134348383815774547225453389300 0.0348327798191185217743897170620018 1.0354539074937552901871257400298308 GT 1 -2991850836301.1793385534966844860525034352262901 0.5245634541605356603237213697698180 0.0519776956898307145753664251079135 1.0533772492505453670271795859168828 GT 1 -1.9149032316928362617619692708389793 0.2894672600785480352087181729053701 0.0624787876823324383666013357208787 1.0645158949213671996948580530655405 GT 1 -40113518664037812503447686772553549562.7127249150949556910793110461562614 2.9774987573055121952668116692798205 0.0569538537438529566465949165014782 1.0603593903949506085302419077721603 LT 2 -13795634241303982615536274554279468918605326.8053050399284604759505882182553746 2.5637243873953531223223867933900035 0.0853082606199324699639607556110321 1.0931436483532316492787376191464230 LT 2 -9566717841175423668.9003510547802194929943927179746831 1.1557789182882138507225563506684237 0.0570538601666001295570447995730425 1.0587461137450645148111321312134078 GT 1 -32577420418927582344212574995.3126790745049797380596608729717636 1.2827286752275864131659020316774851 0.0342267070726802354059557979544732 1.0348261587234262129864019856313661 GT 1 -849893524847451686591768014350398.6802891352231938539912560149308445 1.7335134297601421972953952044932624 0.0495767924636664206622007158486879 1.0508479119678335792126271131218421 GT 1 -1305985808708005466236633996199497879.1055352044554573655809712940634510 0.8142127734156775710231451150340183 0.0542810837788284400352242921680699 1.0558098828120085705776192878810627 GT 1 -564012119.1960225661606653331047401517448287 1.5342814922866675967730184404612039 0.0826008969951702485558689532507055 1.0862126745775227818769590108297586 GT 1 -24900843291180446.9523451112158442971342458807658724 0.4004774074601504608603360979623224 0.0892879623430911305204310735862691 1.0935285264690289905762462787578311 GT 1 -88036624769703347429138439017.5482682033802545812491877067766103 1.2933007975583161993955136003931111 0.0399925005976924208955212280730459 1.0408141826733639566993937909957640 GT 1 -628700857055311203580206706.4012411351789776075483422225597144 1.4194988547041251221989489015897393 0.0042132088869775881201587333110101 1.0042221094603206703187129153237768 GT 1 -195.1832309656939248795376174418050448 1.6654130392871471399114060369438424 0.0325541388085839588040503150707880 1.0330958130687682693138004173814651 GT 1 -15048770.9253547831006287210950741238683816 0.2181020181627725772997847023174699 0.0531635433965053886037677097491090 1.0546288970102100301121043047443286 GT 1 -708895251394198356677060591406.7287828097837080042923046298820093 0.3870417598880223657676350916147251 0.0602575530865077945625988380075617 1.0621494339061511458992402404520828 GT 1 -95625386067173753727252380138609.4798012611934061289450674537036776 2.1645375499050416686739257270750980 0.0688799048375745556420623457482758 1.0713670141463148320797421392654087 GT 1 -1146333458695694337244843.5182868484541937583689990529867237 0.2710663442845117245938411026981754 0.0279791230604312128816233524899683 1.0283779964194643666892506037018441 GT 1 -983987689263606713353438877309165.8040093986686357659669600250828935 2.0067417861528116458821143516271157 0.0918434713729363171510704724621246 1.0963385268822119142049028166700925 GT 1 -247427119551862357721221781815.8064768494993417513682229764806680 1.2074385439779091659376545590885859 0.0360583352997924180511340516128488 1.0367244999990902519244729681322500 GT 1 -19161988247671924033.8925939679559312216561591752871791 0.1630431983949817361873795248334862 0.0521685927678913714339495384280491 1.0535786330150664399812300033092667 GT 1 -4549161309891874453175147102478911054412034.0337521928992485608813116724679619 0.9451731285083450096555664924806450 0.0097896786870669747321829050119474 1.0098379126462691426358996225411142 GT 1 -628325879233329153339480827298300614812906.1889465444498287079064080104695882 2.9893080724644279687697928080816520 0.0539541738263050036868331450583736 1.0570024116306118303324347672726593 LT 2 -15583419008948076831817.7840797059868379605417219708515823 0.5714763908959093947512786400213712 0.0238841685462727567497980954156290 1.0241740198427679447317821934924533 GT 1 -1807014631678034899934969620.9069088667563020001030744864204561 0.0111409552363569070924718377346324 0.0520127666191139483461980663524538 1.0534142437155942535097919312947375 GT 1 -20058544779591337633.7155854439174863503314347704305448 0.3458246756623173236968749340704204 0.0420360356973051407020575246993655 1.0429451172691819685602942537191789 GT 1 -8769560726.3105767065922438049872123749484638 0.6250282623812798566336764873505792 0.0087690664500372381431783980669403 1.0088077409722054944916653368179054 GT 1 -299885798359903058.9002053149900261278339901063512465 0.0901458742206740547556214971396425 0.0522821260797579105386656490345824 1.0536984223691404016120742112190934 GT 1 -1787666978258947063496.7430984696180232776146231455236459 0.6104371166166062760239929376418540 0.0600414800685006043684335304972484 1.0619195324241919523537612690987111 GT 1 -1314981398188132828709022287312963.4140015081837198408455169167605926 0.2326613687667855946278124319623781 0.0078156904829210853712499314189048 1.0078463930710298110031829778651265 GT 1 -120236689725508743776234594782070000847609.9413101680341700569340793136032188 0.1696814469105631731550418388404925 0.0939238677565672697783054055291350 1.0986319452958122187806744545577664 GT 1 -22.4736678244439003274900544294465795 0.2732859739008824009786040811836455 0.0925749374104923936018497477234442 1.0971442919116334176979371893373763 GT 1 -26525.2807426746619806151015885400398183 0.5943334532407802641834933110103814 0.0547512089436862151682698018506478 1.0563071151790496585795828303846790 GT 1 -118506688704113169608328764711.5988718284069679483937235174382543 0.2840000772723786194219980139023053 0.0897478429567485350822068163987651 1.0940336222032262853356020355412554 GT 1 -9302.5708025330796449786223018523686391 3.1209901627234611147691865933950960 0.0718102418608079665433837730917236 1.0745190863458365449674479157893145 LT 1 -4.9443856762671875941947025529375547 0.4300759868866440095652007525062955 0.0290547574898374386852096013557152 1.0294852051644082874169699756097307 GT 1 -23934823556228212.7554566296102746029040049187097516 1.5881905642899060909559557051812475 0.0018939011269077808670249651589318 1.0018956968252553056265426789240254 GT 1 -25208701130314131393568097591495594861962.3737729150700109726213519183790923 0.1171729877666186265156272038016660 0.0356696438408879082884156464364965 1.0363213499663518288287413566448939 GT 1 -9.3837938371037911882631669518766495 0.0691078252894221578289885463586530 0.0553693178425468280934705418165942 1.0569612404073100652057751731647847 GT 1 -4376290387303769.7718875050212575049448389867236670 0.6462805436592856363276850953171694 0.0792463529971131284644093879010610 1.0825627627602323403572724346713795 GT 1 -366872598756496753.1421092498732518404256810442240443 0.6306091088675864489092863896116336 0.0755028864787867051153805031536013 1.0785053503651173892224040924881738 GT 1 -16.2652313299884641530024435648961020 1.9921029684292134266686915225265499 0.0659695322306739529816616148885519 1.0682462205473026827890584388855223 GT 1 -108727.7696618996496669411762934316620893 1.7374017954322349168322787651671374 0.0876816835490264057766997340808003 1.0917663186087810550151117208729078 GT 1 -534048171761122905.9721367854537995648893802525779082 0.0438261594335675797534035201899584 0.0302559543162472136801600719717754 1.0307231127337565010887736250178883 GT 1 -74087.8181810956953837193045228142128128 0.8834620004809604025626774066033798 0.0168868522768399248251325188423628 1.0170310609593309260832696778000730 GT 1 -67384301299956816808065290620.9790372268949558255691199677216407 0.5114113128887110420096721421701184 0.0802557782453846602378901078548107 1.0836596674256690598403450514165269 GT 1 -58688739589812767617.8726326006420308744609009011012192 0.1037729806183833007241228362586547 0.0042497450659377055707682567786779 1.0042588008982597590860026966690973 GT 1 -86615.9538428993512970464404415676703885 0.6446008355247591804780092974254701 0.0825224371823856657812119811331365 1.0861271540471309099617439682965088 GT 1 -19321736077046344675483203580156797531.5426792309491927475799971267588062 0.4699326847995842383424875761033838 0.0136046842109262587092405703814593 1.0136980759378099626110618641462140 GT 1 -13423257163716994520873827.9119014929013761601361553392106697 2.4366971009231598318735186716026588 0.0720006908679528422527410003143763 1.0747242906659903652152429514018729 GT 1 -1455963895636386750067745132787551525863909.5845771004849075480174660408939337 0.1805239819804508066718201053469606 0.0343432633336118992368969018623237 1.0349468529854882696710925112721746 GT 1 -1328066136083577.0532718426610820833465145130186722 0.3942329991440972546938804410754930 0.0473261373932544648889171121024830 1.0484826557179198468966424874190428 GT 1 -403001571377383072686489699.0307474189324746896608501870414293 0.4142128430903621350860794013622081 0.0201621151178507880912113680862951 1.0203681445911542391169603749931179 GT 1 -2328461502074.4143072366601579854387310555640726 1.2544982520279490801215804092115726 0.0523463406479253074252405199322875 1.0537661817155953956338104019008675 GT 1 -721666340112057471024993221.0900256547593265850694143622950592 1.2806336647709947389639035937747872 0.0284008131815114277847792754408080 1.0288119188053873477330719989398031 GT 1 -21106598780471011984137319872794848196691280.3599276734972782504759415135994351 0.0000019034793095695992062634271542 0.0284071359622056020228240227535385 1.0288184264284412917509564949723792 GT 1 -50.5136493274206935759157105893773153 0.1111033176467893084180323091766496 0.0809343455635430854500981930674531 1.0843977180069138944794813446720910 GT 1 -2311788217238517954686459919520354705772928.5546538723943983813944334964074411 0.4686110215485947898083884275654274 0.0680802178360073582846474666163292 1.0705085386403287882361166376624720 GT 1 -28229326678420206820528835.6563307764419737449373224663045795 0.6352278264108889341172681399178163 0.0758750319070322622479440208660921 1.0789079696316228957829178667273057 GT 1 -372911139199660069193.0439529712464354164755196833889872 0.9792050993445959118060724192614725 0.0919187640349541254995807419310704 1.0964214374609134299073561134843598 GT 1 -7134740919871077329580557458054636.4912890259018654290332031030413595 0.6295154884342221616134652579905662 0.0140620956193429970450702583387369 1.0141619036642200600028294081842314 GT 1 -820136581788584438681812804266917764953812.6661307878112013673018296151302537 1.7232586687857504931132881788734858 0.0802461836509715412819374680931829 1.0836492356728599107491377261116940 GT 1 -3481868273795712795581.2398804129911636031090496608628022 1.0953278192428496633587811088326935 0.0292077821189791818524535827066937 1.0296428213535997059550906973488097 GT 1 -22919228050688857759897312851135326261.4522837428754183142705914896324767 1.1480387460970431686008589494123154 0.0952628240971497585716725489322550 1.1001107908273553684306684113695350 GT 1 -28.5372885326837702539332065966604630 1.7101600920473690324226471184057598 0.0330071148454890298492964865255747 1.0335641412037790469960906259685082 GT 1 -37832575894809009.8931903808849901046258640696079898 0.8842375062701597456806413037264523 0.0523562794078200686335975824752014 1.0537766695261100122184622496379981 GT 1 -29049788596648121073601044656909874.0231058576366985655582514570556889 0.4727084197294999306783492845439898 0.0088034786009376673697461757216542 1.0088424581577630062989830202694108 GT 1 -21593409830859891231126.3406688002074304970713267963282431 0.4669700156747200808633383871522082 0.0325722294464803241277989941197354 1.0331145126237160285783254518132308 GT 1 -1076200525610707.7469591670193253641089239047781544 1.3599462159765870192308261529318382 0.0416535543008453596559187718244101 1.0425459320437169466818377747200207 GT 1 -10273148229015287328676.8935971539585720374712231067474750 0.5196498975518930202479864645981538 0.0439423521394493335289444922567180 1.0449370666394119534686926670277194 GT 1 -26289598071023704207318.3155311499435340034040134258138167 0.6601175476928302761003748425311461 0.0765973485904608296753492108529269 1.0796898975580111172980825627946662 GT 1 -105557952741879780614178502164613.8501715707420144440290744117453845 0.4661992431734695777585380779980546 0.0908991184162838778466309195452328 1.0952992101224043063990506899616539 GT 1 -44764180425292079175813382751755452286.1524214454504584173552392396541989 1.8721179971536654145929095286716696 0.0996534758500401993758066779393029 1.1049755629283481165444628121989803 GT 1 -2009.8527570329387735258416388514510566 0.1321014433997238781625689230859204 0.0222200069410016851046683409372797 1.0224705902261041230456708991820184 GT 1 -3517567521447076640466252914491271520993471.7555379250803625993142092126018709 0.4077033371617252020263987044211601 0.0752059826570868169248373272115579 1.0781842502210722680191125945446908 GT 1 -685593978828.9039250761739871610634969506602032 0.2065895109250809728913636369411175 0.0496812406286430864505335073216038 1.0509578144868501126086862786744360 GT 1 -11453237256045818.4347845994395554063903732710283907 1.3567186138610402853510707005348869 0.0254450268118491115051124177661256 1.0257743499394532270424372406888912 GT 1 -1047918213341464534829611592131129188755.4537789663058086585297469900873008 0.9568737859152443606915113375920179 0.0668487197679033693655184959239156 1.0691879474072037679220731770576370 GT 1 -3240500885667192561419402345348236436692007.2663799833728658613651796744592440 0.1220744511530673925302400075974651 0.0297556121916634807155077758678122 1.0302072930236596493112388740439476 GT 1 -3713053308407.4160423814348901139081222761036104 1.0316625255138156746638864149491676 0.0963662606434554453638380771096439 1.1013311562667014467957231686466580 GT 1 -1451156164543831513485487058966.1506314891260660354916442444099735 0.0486417036648707802054887642191391 0.0045270262203431088363531205532150 1.0045373042344997400446001084393133 GT 1 -118969553291798783.4982768186774589372111556886184179 0.6020485757598104560036391625641687 0.0686193500375917730461569663544804 1.0710872238671812135407516066079840 GT 1 -47.2534130859823423605480509718911486 1.0590385897183970084874134521517268 0.0117968075198671075342623372390925 1.0118669419744784177319240325353605 GT 1 -435686681772995470398183241498696809319859.4973556141970049375866572761408191 0.8722243066143087708499255029513392 0.0652381251777731603738714341138876 1.0674634614642558690584032772142716 GT 1 -257856528897410137337.3150958059472755340540822950789883 0.0700798197199822264826550425613872 0.0507218093460030210242883412906151 1.0520533824929224155208186945565640 GT 1 -172975083400710712462656216084.5999000400835087322032522911141135 0.3512290396227071172938895755446575 0.0997067650018055537831254272985200 1.1050347520598889217668546131728226 GT 1 -51553797821707.0631548280307866004363955106709222 2.7394541152255358758241208567445313 0.0339000468450687886752603599482804 1.0344879789475148049137093561782824 GT 1 -93062216118476402536801757745216753.7943991407561596040044644413088039 0.4271244404887352184735202814189593 0.0816719532481407843282339333719426 1.0852006027928407843555578685541173 GT 1 -802057197080411.1013549635580785258638316172163933 1.0100671007540300499195607861906848 0.0649201418165296857854915103717434 1.0671233435187678365921109819166380 GT 1 -31352487608656233.8273400353754390663656772050430422 1.0444714224521099654624717186355744 0.0285954327806558689067890673346168 1.0290122473939357330521921423884296 GT 1 -11031963510998674043424267208421042279914085.3839252563587878068727957863799412 0.7950452519358740986014834515049383 0.0611944121064844753871933303558218 1.0631468628569030779570083248882366 GT 1 -24138649164575164158957571791696731.5689303675149416132849196083354234 0.7893596733377886947379730833416187 0.0694311878434903389168352978624652 1.0719592538270283442976164013073956 GT 1 -186694145943746166505353732367228877601869.9262808627866414480108712903810887 0.1607714193498546277856224917058660 0.0500611988885537110573722369841789 1.0513577163452884098905427369701721 GT 1 -545069798.0293608467419788576220435150705145 0.2443688745522452272181773106416907 0.0808953703403189248328766888844668 1.0843553114643131187750842298539072 GT 1 -170949287479111867945158925.1488982532194963458059639490681293 0.0295892023486282568781758618736468 0.0499264611723176589565356354074902 1.0512158880911979909980209685784465 GT 1 -32712185452434383746937829709.1981088532206561918857844911625002 2.6291843976392509234427046387315926 0.0414603695543406095750401752147116 1.0423443710333231332248247332240384 GT 1 -1134067699231531174.4676949497161982209309890975169145 1.1695641697812383657625223990654478 0.0068132625774353216102774497382547 1.0068365788177048789040647459637780 GT 1 -4462842877783218.3119307462505679728611297955676225 0.8998067441507493580822307477705159 0.0666405175695868472465065919891058 1.0689648549896887981204555591739873 GT 1 -1074216943291243.5912098679885626897933032524485992 0.1477923832990946299038827225344502 0.0726170891355517861310184690434119 1.0753887341252767895545269188815296 GT 1 -34528274615.8902654774933637445583931568364475 0.1547236495941813313899570900219120 0.0321681154850847123910691496670592 1.0326968798102473652252904233804375 GT 1 -8.7255641407874280037661687111030581 0.7121192250061490020255078176775365 0.0448766488771457691694698675757910 1.0459147833628622823495886474033636 GT 1 -37409352521842737937.5980991559700405608932703649947468 0.1452928638599372191926747780061149 0.0572008316891602034368377263763040 1.0589019900685774649918909043036824 GT 1 -581173722003096662454459.6259802904109449413762237503804987 0.3020990472492358380331883505699082 0.0545156582678447078823463166702536 1.0560579518540142066339400140068927 GT 1 -481135800593960987296377775018287184671223.4350533095883108802274828705260425 0.9452245737781707246414365056496032 0.0917174413854436941316665479893392 1.0961997608882624624536132118175703 GT 1 -316948600.9502330975506960226234584421576761 0.3645130001719524398828993021266244 0.0519560981437444113100735518674741 1.0533544678244358805852781059085269 GT 1 -953287213187.7354454847932186804157139119184586 0.0191772158344053642905287822911009 0.0980627226819547496445868847212163 1.1032102986787596551649946724871564 GT 1 -256218399993682660289852.1205742675456135296482439150126107 0.7125533516021519144602901240359972 0.0843160935797822272480299476506060 1.0880840541891970783064639823984897 GT 1 -7302895450505776068730669661969401022024.7692325831372959831932191720877221 1.5700014193545510873461804504371475 0.0312488123243399319606055988097091 1.0317474723275536888084842458521442 GT 1 -66353033.6088415913131099627645254021206405 3.8802528347367552029447626439650056 0.0410014153225671702244742749716660 1.0418656799314533260888721432462380 LT 1 -29867806098551124824466351547.7577472683040423439067242013403942 1.8201486954307935645848623834660589 0.0305706860182530309190632442158962 1.0310477167235964346413418474002597 GT 1 -2561805269273721345003397366924013.4361471186703435326584584340796463 0.3649582010271890756414766749444673 0.0528132747118056466837205065993127 1.0542590296378972767092848542070232 GT 1 -1747562956.6624185095393305520319135604101104 0.6051768397712949247900152855781264 0.0063021565981101815759495034874795 1.0063220990179907407880694785705551 GT 1 -874767055436965181003023590696536230950047.3981111922230582949482526011984947 0.6097886737477107514300549239853040 0.0462062853431714113803103286748728 1.0473078629312664385652695978345074 GT 1 -8739209211542682888468314490396916273.1354902123768103098929665268393246 0.4891213860088743104793838600835059 0.0755018317531642145448198116572587 1.0785042095016085519974417973487685 GT 1 -29853524504998948.1953881668559040716340516328746987 1.9317759912201617666396668230382415 0.0197967704463941482524698589960810 1.0199953517216608391850385112856530 GT 1 -398641728167206719222.0015781576871058897576204083094392 0.2717198560705480802790988912803341 0.0887480468791161574854343851254317 1.0929358523190323940358475769041489 GT 1 -6868148560952176839552.7052112311800562101949704961090587 0.1761112328046022523614330534290275 0.0296504973959363629595495219236852 1.0300989604185234129751007912915887 GT 1 -993318473020739813106089678137878043.3977403902867080550646430945139012 0.1193818032560173963967909160748197 0.0732326978841733585049143826854626 1.0760527674564842199903299303998235 GT 1 -8607217509941497573445912176851826937114022.4876633961309342590196610802856251 3.8158789159472865361274212424620693 0.0009625126396656979265022790910172 1.0009629761524049046268010845465382 GT 1 -636.6376211638551563294795630169135627 1.5649777191785682742971917382239217 0.0622442962870240577997403276380934 1.0642658077000869581331693614501750 GT 1 -11206997389721.3986033829775955527881025391956211 1.1882253581319786889750433490059965 0.0588478088186730206048026921946810 1.0606504190190198962777477137790174 GT 1 -2017.3276553868140666707637101956089752 0.7760764206747192941237394219746342 0.0036966474863261703004952695248288 1.0037034969729471734387263836413259 GT 1 -3771072225772720797634085539876.8665085777881054800786517594917472 0.9397703393132910103850260033226066 0.0311615330500268115326108288688639 1.0316573817615106779917308659251726 GT 1 -63739117.8421580616542629218572264826295603 0.4569666845765734458629606989865149 0.0030906912643447964027036971230339 1.0030954773146037872471299189251469 GT 1 -252810832030382410610648659092.1678172331732502868153464993198751 1.6033757887770581206653678160155163 0.0021369240850926002982485035003149 1.0021392105653024673767194510125512 GT 1 -57766576895133075622187537170192311.0916589464190263264710501581964225 0.2566817689335312226482401576495280 0.0746101191216452022348701846681431 1.0775401374314025286504307525157979 GT 1 -3148935754692.2313452566297260632956983418095142 0.6415963895309943013725241168651570 0.0911794855914914208378396185078593 1.0956076581972754066752966019103470 GT 1 -193.9634568224848183794183865329023228 1.8528966912988317980600884483540616 0.0634667390504248614913714951576988 1.0655702414984878656818993752009903 GT 1 -6065267644.3552700489582755697692217914851196 0.0052153402729025053439277997612369 0.0315055496229533809373963066892611 1.0320125262732934533277524381759652 GT 1 -944628.9687002364417197387328919724017561 0.2991501722835017418148462682090764 0.0200074166771390492553877048120553 1.0202102753840541807370618000771206 GT 1 -198412061189008.1622460933391729782724872047903899 0.7877325971142147539462705543788961 0.0194726542532165364917749703490402 1.0196647441407797671786483252022765 GT 1 -28704187495971744806611148009025693840332.2980747707424073085507460100136771 0.1737602406221947076666202019731936 0.0156780289905360580197829312926504 1.0158022291397631155086696852368993 GT 1 -51001766206833.9152962796470767710655165989837116 1.1190254154387257996477498773752685 0.0609136741058033154722225972890593 1.0628478701398980503984433811281111 GT 1 -1406286987687226513490361698000373902.4718221118296250983916098476158501 0.8630455913254138077657014983668315 0.0320620646722296707938198906800649 1.0325873101580355546965015525692351 GT 1 -981691498767954767549249004611650500090750.5143600017534344572746596578286432 0.4825102242456747319757986069193933 0.0371119814921361179041107780431688 1.0378181579456613634187031401064266 GT 1 -7996756439759244873149015818661982756.0927225951971370441453943338018299 0.5317313934026798871984523567431599 0.0962677462870525248461350954385693 1.1012221419808531507701724168215013 GT 1 -28623895765622315903611.6017719236226766302975657908042307 0.6161967801098459448765558524490578 0.0377516393085862147144366702099995 1.0384826904399833921186065832957626 GT 1 -26957938214900290076586385329087620355.9099997694320968206248159226513335 2.8235383866535722746273125528094873 0.0362339801081076781420404958789361 1.0369067317868298958822443002678644 GT 1 -211331938669619.0220313491726238173748955574253801 0.1935764575567459087631109517194725 0.0085596048692893090785796450939884 1.0085964486833654826106468134808680 GT 1 -30310732993594527304.7532477039328942903391473283254192 0.4017395121521652376366624013637190 0.0699457814315116647182197960787610 1.0725123949981783701757554226069975 GT 1 -3528891619191447506033077406564843506596.8603920156310586586361604917792517 0.2606822887414766165615459894373778 0.0852374814926180894621578782136953 1.0890907900085123018332778607931373 GT 1 -16633933.7618250157927928821452833515312444 0.4419174102635057997951672646531763 0.0989328833967163663566365567808362 1.1041755329125245376959244422307185 GT 1 -4173958165473116759747.9427975227922397944356345813026070 0.4891378865226774656871923697873584 0.0831144173806838003832814550915113 1.0867725880990759237966793903572043 GT 1 -3227054273742.7137601992380823089344910863263034 0.2000994974728223325260133413510844 0.0509244938847201772963509345238393 1.0522669196644540068916117650830701 GT 1 -283741251270042944.9746648606347757068551852494988940 0.9099314970984844159230553691991875 0.0744032713184916984265360240821412 1.0773166373769491554816135620724159 GT 1 -4821955341238983796593022555118.6575839628622347951262646939622339 0.5446704581797516836639543286934863 0.0004615133983498694663384094599993 1.0004616199284362667066510682225540 GT 1 -69010921096763.8083522113644952607654041475983079 1.2250332073870177379522833091044853 0.0146716023522317201858889722378300 1.0147802947478447061841928216527800 GT 1 -4809035352015.7069019560526996231959726061303529 1.3705278834486685833261193242253583 0.0742571959427346951129874998310323 1.0771588323136671725980166858099158 GT 1 -69972959039615071668016883579594960.7479949785862183414503666403356521 0.4093804464736308312132757760477291 0.0083237044533931038916924642545879 1.0083585399227586518646526549640778 GT 1 -30782968074942107605056132.4494477510877931351962763480650680 0.8331151216477680429617306849132058 0.0426231005560094963914734017589238 1.0435581307418232583789241308463032 GT 1 -1023472202125751085817520262039728889.9948891054253533836445766942696589 0.8476382335049003983190062320531108 0.0130358991775191495587675524649464 1.0131216122238304118262958015254219 GT 1 -14.3951631025337965275874369286047896 0.7137616349741138421406940546772974 0.0611135897549087154479974649938565 1.0630607759462640647684642481953011 GT 1 -60887040815342491165475744284273214.7814005563530640320730559234088838 0.2849434146747442231458382084268078 0.0270676235453577602793332322372753 1.0274406992579885396157301558682458 GT 1 -133.4927620307018699226734712765101291 0.5625023523571561550905644776821679 0.0678331941139043565463134986995948 1.0702435040382533774343927606103524 GT 1 -55372798089955457774.6941624076725662529625750926664053 0.6593946682313276882328620822921505 0.0233644312817821549809680945347606 1.0236417070489146842633130208940079 GT 1 -744261427283.0776244715917634952134914254229399 1.0448709686436426578031954897191200 0.0684762196687741210515431516862879 1.0709335601936488781656446666860068 GT 1 -23907456950.8292527653498700776944038108407958 2.4252798472725471300970446979985932 0.0545597580613683239999357712257238 1.0561045954842387416589714941879827 GT 1 -430075050.1438538896006972102127169981763013 0.0137823608463807028392377942186201 0.0856068603901147555643000540562014 1.0894946691435421813692543466836681 GT 1 -25846964230.5125968596204508117246573575991551 2.3016700767667598026694678972177736 0.0701344553994184223761974973089023 1.0727152789852085016938921861990744 GT 1 -158.8543396240615592951013139977754546 4.2538359072480274360803740436514633 0.0672361063206190175154850722486074 1.0696031715971323923617555579191720 LT 1 -33876537377970280332568409.5054266226953146233752572693123380 0.3833460385811535104831787194998244 0.0683967052394590852200042721565885 1.0708482043095265936427278350990898 GT 1 -10177514.0632239051416487066350478954751062 1.2970376193418201388013097981190800 0.0614417711639827470332024943368882 1.0634103803027230345942300942560401 GT 1 -33925147038650369.7332828701442999221436094548921044 0.4640112168715605678500294101383604 0.0344367005737623604109585174979644 1.0350436179718462381716995064027726 GT 1 -658427054749325802207088485.5138549936511140029602297441798882 1.0025627796000399434501559265706670 0.0824676448738177849615651320699283 1.0860674352324821457505268195215376 GT 1 -106634593087050886025302656915.0187977322246803803664234012387804 1.1759792282520372391743736698645726 0.0363604327458829942810503501160490 1.0370379471768859067230933736124058 GT 1 -567150347367251640.7492156485939970843149401532998388 2.4031643031271929649058070582399491 0.0555945017231165324564204855497346 1.0571996518088159377627323186937914 GT 1 -1446748322607032446832653831275.8957449735910355189147586870569880 1.7695801421472607345365538056468784 0.0080107064072871607567147864898727 1.0080429645047878086797358894405472 GT 1 -4908483689215255693874314136774657.2081980560745403243450817831564306 0.1411101904070608163248919393984289 0.0379766524718402894984307380357701 1.0387165588311451038684659665195229 GT 1 -118205669393987.6474261956962402520072186190363676 0.6195376311025751183164894965142831 0.0902938437740320337656010350005093 1.0946336368625549748178407594400407 GT 1 -422447336353467290197515.6015870048181788073998356264543306 1.0884429145765623536006421629846253 0.0833057398841183773392474519078635 1.0869812754980860747935836585942236 GT 1 -9276075332857034508166.8721865684791913088909599221095036 0.0493605004567261886031254547077152 0.0122962208636902441295397381766990 1.0123724448768233614581296995963225 GT 1 -5.0299361998210334205492988116978601 0.6439469275775177231772038969077166 0.0107412133155025971260199114061241 1.0107993165882483332767339765102410 GT 1 -1905762958887921347123052790141245.9635509045449254252967486573201693 1.0292150659424407180052823858420512 0.0382636773411165950788139862852503 1.0390149587569302030580637043589521 GT 1 -3917410082265459129770927805255325033530.2633806196579733482476192387753652 0.3553766070344271169164352874952708 0.0600747800970160029123541299355461 1.0619549601773165295804861855515026 GT 1 -89128902245942358520515148035797043.7106986327907172293697254084117962 0.3904778894123554586830608027113667 0.0852819483550271173181882745258234 1.0891394014703045211436656136226145 GT 1 -202476.9632286947631593078517551042647331 0.2484436733435611330459218315940774 0.0943076644688487913273801977226447 1.0990556161178282411232069449885840 GT 1 -28606612833074698215.0732759023360679828400342530912005 0.3836323272615416142358507711986823 0.0768728367464127412098247790278062 1.0799882822965712604981644250104049 GT 1 -356623848476297209018287572746.7278622145970547114672909548163133 2.6999673468675037332897018607503084 0.0939066014316284826676501615266014 1.0986128893248936759167407416223703 LT 1 -4006442621093816.7527248802595072456084938963469918 0.3949915937643396223879164582400086 0.0530314175567953292836971969039511 1.0544893622247381926097851377308909 GT 1 -2.5409436877534164741580091135971752 3.6093947559763321705954514333102432 0.0669062196335758972484338325221682 1.0692495683238826115449612958845136 LT 1 -823726793954264039117354968189604.2815699851713202019854679214380245 0.4966357298382508734727041473767680 0.0898802806456849572325434105871536 1.0941791283944471419642328892289743 GT 1 -7492746500034991.5540149531555908503232218509471316 0.7715098536689333799977500385091035 0.0393893684114881017072464877623854 1.0401861221585763216813928391103112 GT 1 -8490531485433.9232076107632878159799250133741743 0.5731516527625198496217412545037755 0.0759201623719260787955052314289934 1.0789568067137071831570915131187233 GT 1 -14225835879036660.8640646251443471642109625138174967 0.1686821874101745915624058989234138 0.0866127949040638131653744664232096 1.0905953863259178308372449351537764 GT 1 -948990039845108820340471795824667962.7752295993289624901277054085090389 1.3715812380823365527328129442229096 0.0871954723355974887490681937579452 1.0912335202533186016370036465686136 GT 1 -2799159783908627.4823795702414902025479377605937196 0.6573339181514120645200920475709395 0.0649880353725826839767912014686244 1.0671959533823634947965600154532117 GT 1 -23404383624834500072513978023563374470.4836058096794263304034714430826787 2.6136312535911962914702262627398805 0.0148630242919659352436572685594322 1.0149745858456987931639206882687446 GT 1 -11737900303093421797658.2415646592213902083344409144114329 1.9833947294075287047698406731365188 0.0391042992361856178216229531032068 1.0398894078854102876133638829520929 GT 1 -462008016939974329608334031422258212.7430333348180907236709135177126633 0.2421198879602446559026058548350081 0.0633701232725458165744060729776368 1.0654670836090105617843427929836966 GT 1 -136583633.9366006602871105459508652894513187 0.2058965021802927297052560894774151 0.0912582810591321644777802753768420 1.0956943627581914901915262356615967 GT 1 -1587978388024547471479258923620005270650099.9568256913572137060320025236555954 0.2164512063217934495410867008359942 0.0535205017552943177626028405947959 1.0550059691646006710712241853697000 GT 1 -2698199139118856.1886000377825312187323254112563665 2.0764824662100702526846592441928618 0.0060186299006914168098464346635095 1.0060368148560234817603896204088434 GT 1 -74717.1455251758888646033565770728796733 0.9082820498338193406922751444008290 0.0691910896585652555203607981578078 1.0717012748221711435021600041466359 GT 1 -921941.7864062917416205595878592877912556 0.1558845288647562805803954624578178 0.0274861809431518160552863533042494 1.0278709937634010823575869812110762 GT 1 -15064670213604083945382118245730250610.6960849656133534579785212183767385 4.6053019851673522460109639977026120 0.0319071614319736459420070038895459 1.0324272886928035034266539424231857 LT 1 -4236503207466009136716127773186756006.9506408114758512909473861269048200 1.7062183410205263752919504349423343 0.0954988015579607658758217658357881 1.1003716491702860882792737123039576 GT 1 -391484782221308487.9754642326208116186858841551713016 0.0233118980802251176102935627310137 0.0611854662195386106679184094309004 1.0631373338932509875883859409675910 GT 1 -194457018867.8873848772439815332013922728350720 0.6768545078304582526583595931342453 0.0992310443657401303094724500830168 1.1045064852964169914685015159614785 GT 1 -1519448496694093776013.0273577097538816430443439828168029 0.0748838362897984703895470554688917 0.0413524911566956017446308508989738 1.0422318328302983909622658457624544 GT 1 -197057608173367148737913.2002480504865650109486458451840122 1.0434177149598156579869568002038864 0.0655534263294369835557246073762540 1.0678008247528805650709656017249984 GT 1 -13228919701521683.7688148207197035406643099411876644 0.5089869954547293888348867204970516 0.0259164430787428269910107933206545 1.0262581916256420987548198640712581 GT 1 -3371400097493462394111.7783461729713401592006568570518764 0.4725000773962980382435084583161051 0.0771722627432452084204180659523691 1.0803126954221310984810513367657914 GT 1 -16174271301260756391890260802231027.0536182288695577782743416896220088 0.4189745871137918600166456152511271 0.0766621004210331466970590063622899 1.0797600230887080985426476843259669 GT 1 -71147050300203255208345078815370362.0735736025224710513086352343741471 0.5119219467026088015828363476459098 0.0782029090772100916247897958432723 1.0814301545666343697236536586630180 GT 1 -1032.6069431094850184119026791241537434 0.4078898442522072451299995097848845 0.0133545554622727657499797497426950 1.0134445294779263454869785474746795 GT 1 -532468455173924346566338.5561594817737182561461836897045219 0.1769888311902179743132722962670770 0.0366102199504495019288241711025130 1.0372971930532551461345276989954634 GT 1 -44022372170185230925267321521.9247944337292801758937778867875994 0.1150557662170058360804353520813553 0.0524118059895687770431162295907147 1.0538352656075043450811887752913476 GT 1 -1.7275779010484583776412045075157008 0.4325219598788438310565015841776557 0.0432201865620235436126574352904264 1.0441819940037615425008696296028861 GT 1 -4940968364.3562070173818073323002452400477373 3.0709098801664560073884045870097881 0.0687254020716166965893900482056915 1.0712010957543805325448853666605712 LT 1 -12757732272154991736621.7219858775836887799471301731658183 0.2337260573837457553467944202094734 0.0514734730307178768233468765440336 1.0528455227137150811721705815194036 GT 1 -84668108320345901730011.4998609320496141543134505399040909 0.0196364230879924277407942947083488 0.0352791078355060805497692142194108 1.0359164503961027696273059567509597 GT 1 -12461.0998370083929224062819732706691181 4.4359886211614401674932532999671012 0.0717940465741893089900224371194805 1.0745016382484097142810963964342828 LT 1 -23771.7224030187201706832811111187813487 0.8087968971803129117213189040218911 0.0617992389178523906397379256545373 1.0637913218728583694898417145382648 GT 1 -51.1858741452494761155254055789594840 0.8323664815527779424099095004687630 0.0467255047645451142312508171825182 1.0478523840254880403157987196692635 GT 1 -5.4495472694305166332963609068282609 2.5260369203039813399012606221336649 0.0643279444531978348613629832724045 1.0664902319033084681952929772688461 GT 1 -8052652679135317829077724554739655603.1337491008564668886067304319884302 1.3214187464412267889732001479394976 0.0492729685159166212736598513828108 1.0505282907784079149249761230783786 GT 1 -4096376.0673674980350298282026242675562328 0.4012094536545680706838165195284986 0.0682879970626136647727889900893307 1.0707315217737227357638625791467362 GT 1 -4703219.7165691820611336552424836456544803 0.3859667534321120585885038845543078 0.0492192375632417131910189069783602 1.0504717767290193321676217662497012 GT 1 -2.8231230675452982011954904893886568 0.9686386968682464320204340944255567 0.0318182964432972098013985538193515 1.0323354990350813962973397246158377 GT 1 -3400251097609858403.4633386450831414205992810638785175 0.1951173332889816915922948400347151 0.0602830994289566877930186037306719 1.0621766186840338467480956312814828 GT 1 -4917688348670601210615550808208536454144623.8099354538498066157128126500835406 0.3122480956990627606156295589645972 0.0901871706776393031424013487971891 1.0945163826900377253415502909431633 GT 1 -9002981092522750048285294753013402724562330.2185024579955878785888690033270590 4.5557923664900520426075471480444075 0.0621765624047232609347460149431213 1.0641935805347933655167109579350118 LT 1 -424323932641731309273200861178.2177292881107762165186433964678733 0.5179337304961184830283463293568830 0.0383929317432916972935690842636703 1.0391493647116652574505246474330129 GT 1 -12.7800159343744863302127058107553605 0.8117887093759532093032169422091300 0.0192180353906572396053025940682412 1.0194051024181353497372883850795674 GT 1 -14130483195358.4139555762934289565606945990622898 1.6518298319769647549953031259120802 0.0412927384744331954572849661641895 1.0421695045818123220779618185557862 GT 1 -48214771742.6017938034223060467158021881068340 0.2092967296959793726280982014326847 0.0086852093841387433281798409085438 1.0087231456310475619276796160955742 GT 1 -2467441800691516911.5840617312935811903739135936654387 2.3748340809555055709239260182132086 0.0889627132658828720739413914302446 1.0975119129408583223570806903596992 GT 2 -5930654119505085079.5033496035786191171780945869860553 0.2296262578301184573504398129180445 0.0066664719675927102414338840070419 1.0066887921450366673881308413729355 GT 1 -2508.9546670362806705930934676543758475 0.7514857420368842187993890222358658 0.0551554125747250448646257146346082 1.0567348227640848725220020622396343 GT 1 -493592597758968340274245218309154.5902901173125688613862312140533457 0.7157451532620019964725234767746698 0.0263651243107104550848358699385258 1.0267189165768384161353027329982356 GT 1 -12453256754679.8079332524781752715775382581081291 1.5074091544757366473785174388739974 0.0661005699020542004235501984682949 1.0683865231054927040863528946937542 GT 1 -9165871545.0826689146835995343208729193688721 1.4110543227811548566737917530943415 0.0306944308558782550659172216749003 1.0311753719681276017291298206256015 GT 1 -67025628943639184505091789382297748251526.9037812886157375269699933255200151 0.7497655945461215425782228224755801 0.0434772533859222871010766383983368 1.0444507092930345620074033162647336 GT 1 -75320542409291.5946879594629436889481317911584560 0.0081064615039749157676365529011222 0.0531628538215579903029684770329129 1.0546281687168585409237812631500050 GT 1 -1323087.0760101927823330538703974307172071 0.7412781857754168032639874618303836 0.0371902652829352337509324461305074 1.0378994622840095173830894366028897 GT 1 -108772660764121816525642310345.4660615632353241583048075550460353 0.6283793095082778861115189921048305 0.0473837042681956030674285386693628 1.0485430841778126489536563504019865 GT 1 -7673772075517952.3904316564697472100641723074178105 0.1132851260044932146991242128440489 0.0997596575296176109911479361525095 1.1050935041192663813368575007926612 GT 1 -1116689757307028031615249.1817004372708178715634484184989569 0.3852454033194307947619797652331352 0.0528190720971629491250327730885343 1.0542651502928266986078666475653950 GT 1 -118596085933134309522413341541198852479379.3306102949693426219508425283222080 0.6426713644244344784730283768720887 0.0881047128386291867409879389915034 1.0922301122087718111417294606231641 GT 1 -22139089970819464.8992153763318733301982086370593401 1.2506696221645098533699249035146624 0.0208180060493273383605809791620224 1.0210377559239138192301561666393761 GT 1 -684430961719412379063620162423962929.8375472379601727590619626492195957 1.1993699670045879179299168374780748 0.0122437322709873332389100616813237 1.0123193042498604904556514085068590 GT 1 -3029259.7696415316128646319916372342292016 2.2918849980880275784174184935314529 0.0937013549821574408775348991380913 1.1032263385493657365036208596848033 GT 2 -1772701766683547388.8385246379068819051759305948412346 2.1683043317965857131606349799873638 0.0525456878104786030430177615083782 1.0539765625131880463820998349853073 GT 1 -15300588457919873294558694113737994125754958.9766067666656617120033681036741891 1.7203511627837923666517844709279012 0.0503254733839754124354447077960915 1.0516359566516383506681825965432062 GT 1 -20967899203566.7563965178832329655572825348003660 0.0174942035280671567867231404404097 0.0825454274414101927757346771425195 1.0861522124769033183729213147245701 GT 1 -83975518658514967.0697240598499071910066278775882086 0.2181885377468192013864146320644527 0.0883136153880690713431997419310041 1.0924592245689005017939515084054646 GT 1 -1689373916316796022587629927266.3366367949312074217839480228998020 0.3857032149525006472290604353250536 0.0066167144566211435410024647452268 1.0066387019553911543208214360433893 GT 1 -7656716134372797685535933.6139629844593766847080814833909666 0.4788780686747517905121953034469573 0.0164263811814190073546352920380306 1.0165627900463732210440198405037699 GT 1 -410983405820729001726044882440316661.9878397771929457225746141761253951 0.2526792976842902376522044462160710 0.0113698960026961024059927728036345 1.0114350274326013361996344063671847 GT 1 -1949373062055001825800324486293508090281.4692471825556371485973993390780566 0.2118358131122470582554962809010044 0.0193917527182628418864911443221599 1.0195822393560140666629368611685525 GT 1 -12034015454504776193390542286.3478580249558199211763834444552617 0.4412971286056887745901764517268361 0.0163640854947917904944459559913072 1.0164994559829775585471019609094996 GT 1 -1.7363432776914142187493020968118063 0.0966009096612889477604871820254028 0.0889802216303489667910918877563529 1.0931906713435246554475148127090143 GT 1 -10769111486.1262508711971859946894196000175597 2.3365920854616088549825266538908547 0.0794111693314435391580556367202466 1.0827417803376457466457861891937742 GT 1 -13036692078302086889133933699989743989.7636911001331549168452789674374295 0.0401689399313647853204383327428418 0.0657000355036027947950651717245494 1.0679577311834448808863857643326040 GT 1 -19.1125809634305001281258360341627580 0.1264034457482839455635802259789647 0.0728401265638646082698485014317368 1.0756292650327071718108722205246934 GT 1 -1382074.9827099623001457166550993269643670 0.4347685304043077281976320819579329 0.0865162746233907725991576595364746 1.0904897190024601380371260246268603 GT 1 -16.4219475912032827017035249129919661 0.7041534082694650390545514438630831 0.0377095758073005719517253448272203 1.0384389776277265338315927584255161 GT 1 -7937224863330.3225507277588934326494194147230047 0.1688847591053471457097523066429963 0.0391289968604100182274543039609852 1.0399151109264460131508099931208414 GT 1 -1713335335051629209599576822.3807676593759042041618948383305879 1.7839406422843456428801239828922007 0.0284203621043801124760649176434211 1.0288320393651842262840606038518056 GT 1 -2626495851408859088091009021382206757908.3062444974267445955312669446848108 1.0894538552493336366622240936649614 0.0879487808890998134718649861534003 1.0920591291789811466847929571279224 GT 1 -290277387902897155610623637372295373.2864983575823259154743480590836618 1.1367584410063372837298303279156758 0.0507223161691656341755234254355380 1.0520539163967905339016309100053960 GT 1 -901.9701084031277461233180960533339707 0.3084861532560929352489972680316310 0.0721521241227950350677290419099746 1.0748874864898723081647524942063482 GT 1 -20913721561803249883742140382554.0955743430663452446874746776444567 0.9347112711256571513018854403327350 0.0628697907335703825863319575223337 1.0649330423999928302601629292330764 GT 1 -7.1555020591965822874490682876347268 0.1626527765491596854730356420937999 0.0593111285762894008564111653786802 1.0611428301755037694223719578163109 GT 1 -18649010957721069344491851801242.1792547170860226719746573454639960 0.1925531839961657908407209420180991 0.0658984926737364180016944689772853 1.0681701664377228257218011204757246 GT 1 -1536353630756897562.8576385364356899134751778074674679 1.2105762225892829283908176567852627 0.0643611555915586602541290714840169 1.0665257269547882694393610211745770 GT 1 -10686527246.8806088634051256166216336881864642 0.0404064897889648167396279975297474 0.0457218105657422789779564354519739 1.0468000468612309005759722563584520 GT 1 -169.7019785833989642737446736932453009 2.6657045644831935044152765541740901 0.0803685068268986718281651340003974 1.0872919719561873228852651939236829 LT 2 -1149729030498369443835319228537018713030428.3336689655211223325237099113355220 0.1993477682582367158896938980847130 0.0876284455643778209582001882778758 1.0917079656957593768153892535935867 GT 1 -9795238971.8736038842682055285621439610798291 0.7759518696450693380763410240778873 0.0348704292200182887722943322922593 1.0354929164182697428313975297347639 GT 1 -179734162441089344540784.6395820911691212568440254481158878 1.3221763838327045884465961805608229 0.0560142262792475610180091696511043 1.0576441831612604670472758268120024 GT 1 -95271264596324868990693660639806843311.3053284532063242057063770164152108 0.2374922528111733448318990967980290 0.0862590539527621646601918106891750 1.0902081765338733431441026607716122 GT 1 -2967461451616634556026607536537253.9726656691603972184971621681507554 0.1649469336795818765114040332304911 0.0310875273586365096362921548822488 1.0315809986826389517945336230221978 GT 1 -44902794439555723348350.7218137032152885340333145972760465 0.6809906563755996476688404988702489 0.0680074894196310371168207001464821 1.0704305001868067633636346163667701 GT 1 -8036598188351042524172375870418.9776480806646106371224932776673389 2.4233135143329616978876958840824795 0.0499282036777552243781103039292365 1.0512177221671555844430223510077289 GT 1 -34550730702214103898528513090318699453534.0652910701948218859240799867274024 0.2356983235236361599510097683374140 0.0762867301560592700166465951737880 1.0793535695195209541465133255064538 GT 1 -1101759729337310928.7436726194161288539477270560093740 0.0671753873063488370047671598062775 0.0419878776940208476201434465795912 1.0428948473272646083033358165807000 GT 1 -2532275607102611023609799193363349.0024402681287972521641203058088035 1.6661369104381123120028043050954814 0.0448835389734975166024098080800821 1.0459219972176965868855808892414683 GT 1 -58136.4136458983445085643949569947392353 0.7196629143346806569578679955830326 0.0232229258788411074024462160881184 1.0234968268530100621031633937230354 GT 1 -1915375731500912724.6602902540669391780338536130584172 1.1737039025969305189757758467723816 0.0922218363303739166609425758255824 1.0967552433693388872920902255906333 GT 1 -572387211806.2926123082906406938944907470315884 0.1548783932895104092531660762856146 0.0823688124926024168830260371445256 1.0859597256153119110742849971766269 GT 1 -869348304297107.3771732124395794930210787363162978 1.1385074245880885485368183624615709 0.0245997422783762831545148200750193 1.0249073714847478072167302032375264 GT 1 -63046544347.1243595306995031434969579309495119 0.0453874951112750463096485172280168 0.0551716590968880413943736279183138 1.0567520178267010984702680420627594 GT 1 -175376440803743.8811893548073557612291219620322970 0.8320335404867735521616533844588677 0.0765107400747635178213477998887732 1.0795961091611598856928318069722274 GT 1 -74451154688173392671341768013411.0076845650168786249661735258951167 0.2491089665481181980721196551016880 0.0595425887152902597481764124827015 1.0613889143235538204858644295658999 GT 1 -13060640041598466556472326808031089235.1082956727715623048458790650493382 0.9430327310573624413649096292387522 0.0321347904312546010771955405351271 1.0326624477145075310079014424325990 GT 1 -471392036991030655.0490144069320676515778339114044332 0.7939201827821165795363426840174600 0.0231129234157314621361705817999067 1.0233842154165088867627841571777991 GT 1 -6008633.7276808264991885014041014173317508 0.5338912083060741328185189551123433 0.0603576866801192581701555927655851 1.0622559938781430238622142856729614 GT 1 -93169637600763569855806785309658.0952235036972349491193075011086933 0.5897215797724080404647852073246699 0.0925618296785946820168356735990163 1.0971298470414523014925898900856957 GT 1 -122788414618141803184531661380779519084.3031137484857856333563125301025608 1.4323820273316932111614882372636777 0.0798400925300177251983066163640359 1.0832078115753158193064122407616379 GT 1 -22103483879949014081791131693407647619123703.0372802259172159084233151377156266 0.9037778863490379008520486008838924 0.0850510291963580680892796585857378 1.0888869848753045395205555224397800 GT 1 -382585502014373135.4668403977424448629531629255605682 1.4151386996594078973931235886246510 0.0223969483412675784923064331775627 1.0226515689875052040975603615876463 GT 1 -94552139841695820.9625487393605219006081077245668403 0.3351102821493987955201714474483014 0.0102210413295192255199391079202007 1.0102736348530888874549719584538384 GT 1 -143650961258833516884147.4300076584075011208709621348730931 3.2878543257754919049781494478451020 0.0192375207329948337481950216339878 1.0194249697654178091565696013739062 GT 1 -1086629238893425.2848264186284238490890468140349802 0.8329380664558895554323311082463146 0.0954474753012005458626186713713685 1.1003149054084868196149240860211749 GT 1 -322389652646202036.7531641432680225406212792696452470 1.2478213160840507035448622423107105 0.0071300065956004144870942397053170 1.0071555465651354147522339707057150 GT 1 -7216.4810769075218240633428283636656800 0.8698383984008244847062364020350708 0.0203907423097276800065372098749988 1.0206015034687142230811863375828286 GT 1 -66597964780685743823260843.8542428143013481648517123356595197 1.4972412061441333494802690749205934 0.0950647857474156211929661309061010 1.0998919243058766681970106992396509 GT 1 -1855122.2154343153574293358336920000833540 2.6567272543233931466386402815249484 0.0371167750602771902187693610853497 1.0378231362816474181200495060673081 GT 1 -8898456836339902672836602721465793758073863.5738160029953911787584550640322665 0.2027614145001415850930504172482449 0.0759164569575667597299668779799377 1.0789527968795138666342390822551893 GT 1 -8580489660508532069734147723724780839634.6033791083168947755633086391906092 0.1885665722906156117373028625251409 0.0557563701320462953579500767195760 1.0573710636469534920706675446831315 GT 1 -662880306391626669799537380504326828011.9702884500087819540632266536097782 0.3037936684323143934750418073194260 0.0498407186785344635603977959738396 1.0511256438927690256326805047974999 GT 1 -169874492346912891405520257720049772.5504668464036187157094642279279102 0.4290458843291162137257729780907386 0.0485851218998219830189703077832854 1.0498050569937872174402873329264329 GT 1 -3732490359592093430657601527101608621247.4852548887320401503089234065468399 0.1908463963013421753684541125020807 0.0511017272892534567169732721166410 1.0524536803110189526726945065560935 GT 1 -2296696.1535575252155238324613923707961368 0.0052823254583433288950054760945766 0.0781673820592667753747882734150428 1.0813916142699827022413645853418746 GT 1 -1015308.9221553572084965665791230787888927 0.5838959911957786603121187498372933 0.0378578291883996231290999051573780 1.0385930525293647521479696645579909 GT 1 -21862853665741554625661.4615436254158522387287552863578621 3.0017991338528048275508274855650320 0.0058738517686529017459776628333663 1.0058911706884323824914422737527142 GT 1 -237075989058226514607143451746643021917753.5788539473645219860801998351413840 1.3438315251696498383752896363861945 0.0304155995091631578442502664690271 1.0308877523991947780432301895400136 GT 1 -332895647980940653232696545994459646282.6080619710244472462606776382443378 0.5345236085594976668695207994698629 0.0204539222287100081322909151544547 1.0206660005689294493834223552213619 GT 1 -9975079638598493731097688100.3213558440222741788627859702204996 0.1594968897945958654209956059602208 0.0826340453555704452825956136203434 1.0862488082070200361719660676481028 GT 1 -5896601060618211413486878484343393915020879.8710161307084710539550913880032508 0.4903536974014414093585651676161415 0.0046296234985742487162911127091252 1.0046403733969303057652438635165266 GT 1 -1272457557621661.9762508761736917741393079058451805 0.5589124008855577736283329305353624 0.0763837178296821619343689178873950 1.0794585726291244928483232068083642 GT 1 -78043444240609823527.3044068720196269194895498428151519 0.7159581266394438235101887066536872 0.0650838850189813539190997011121351 1.0672984703160657653212181390113012 GT 1 -3436722461552282.6095873107952083381115607020582600 0.0098732290016848605492478520373343 0.0843078003665301236840482517479974 1.0880749973786110422640336184614225 GT 1 -19254884325869.6723253426350580165252939524059324 1.1679878265608271403094101883504518 0.0879190785050028438573816110175146 1.0920265631346267844621629831601024 GT 1 -67302.6383725405072088993140006912725981 0.5422462553463225770468048213450365 0.0181559259240773578353935231508924 1.0183227672719295785951038461666003 GT 1 -9368537569897045631187413232924.6539900942357201299561910768086529 0.5696695001520646238049963003416050 0.0234173068313086158710696842323726 1.0236958490263589221675938741556111 GT 1 -734289390849146432614437568408803558.8132208619274717273987788078286293 0.1922878406213121983697907422085024 0.0807303208831805910991250790823391 1.0841757512335224281181410382636690 GT 1 -2033148426.2813991809095897174534233359990351 0.8833990838891357730956585544654151 0.0690065488422506491917854969156085 1.0715030359320127288768771855320337 GT 1 -63282613019765705023006782730324.8305162400217896354640194338404023 0.3722755756738915585107011143482926 0.0070692659996120075996315348592290 1.0070943716494763489456866039482540 GT 1 -7768147248854221928523404929201421741874165.2229507807234711759110270297704309 0.1920976471782328743513674101543483 0.0930861263929419551646297522199293 1.0977077908100781663442793582823729 GT 1 -210968605938234583.7046574629626900848786669405651937 0.7417701717303487084941341638902520 0.0024476380366286622585284839524977 1.0024506383994759054467558302260112 GT 1 -63466662138460091216081101088100475.1268075242066608143244989266089747 0.8353759768536465737008456132215364 0.0641401168694711266104685676109146 1.0662895112204543310955551661615894 GT 1 -219319117456537151032551918.0364117676268403731488686291483887 1.2611093242863049746953902089200381 0.0241410694414375016868861450941601 1.0244372413778488592247838344868340 GT 1 -3837712626529973768944797395366708535793.4421687004001027590286254630957220 3.1101055269754178994179306746088772 0.0626175150916838193175575711552156 1.0646638784255970997097398098732859 LT 1 -132462120533773921085793329438037186853.7923581713323451387840491923907491 2.4053678774342159510284529612446185 0.0143202580279703993701218098998684 1.0144237824423699595168936231220574 GT 1 -224169801.9525885691250577532914230205586725 0.8239432522091136532823884927446472 0.0215462589593528540077945158469647 1.0217817686435454858364131172565142 GT 1 -3559.1456092269521014020030594487795058 2.2334629772816036220202346683422785 0.0108932133848358654885934391160400 1.0109529788554084297452727772605060 GT 1 -818493775508977336709302010.8012098483344462805045295637058275 0.1553458534046317205536066655592634 0.0394135844556977134823281914659558 1.0402113314875694451638530658806525 GT 1 -21670317517398.3224157827163805332618257566459869 2.3878045335217925905090431856354536 0.0804884731349110619816773720870964 1.0839126990021015975360736526333652 GT 1 -21707949948564313569475486333639338189498082.1374162675697574028544158788302207 0.4813389128518745129499223971755183 0.0431847514614030451932217698674401 1.0441449588949983046362373868570156 GT 1 -130268821907998456121085111022312.0991178518563825130794643727225943 0.1433562601044850516767452131618789 0.0375595194980629959054774703562774 1.0382830531718188625156920525559386 GT 1 -9437856627449327.2427745496077077083953182227158693 0.8055510291178154173193915466300390 0.0390806605615138152136756829503188 1.0398648075215058544294112672956184 GT 1 -87821593772496940429.4068167967585804808288229923543911 3.8025263053474111681243917825039062 0.0306794656552752295908329075701617 1.0311599329924773815777461945736425 LT 1 -2116839825224114587157695748.1805840820055687338534202256358037 0.8008134189379511863297449331915940 0.0357106727462158399289603925833979 1.0363638973961919268572669176834915 GT 1 -25578741.7904389020225613958556523488860232 0.1846061875269516248630040198180971 0.0587366578917357202161222973679964 1.0605323250858783251968022991045085 GT 1 -8398056457370425993553495139954053065063382.6010420172021374420854161150390585 0.8682967041711904032007221939599137 0.0899378414922331632754889862869885 1.0942423757515024741727352159769885 GT 1 -514296983652692340467944234097765.8242411975725635827508473473746865 0.1094465556810704864586095377804025 0.0715456754322072726587652776001962 1.0742340921104248036633251236090680 GT 1 -1421545287408165718.6259142663458234753346576826664090 0.3947628342915731274327031079223380 0.0353111164696052476069458097008347 1.0359496301119986066959744733774044 GT 1 -1821.6563792480013007627274002005378909 0.6031051329184101721444858318700349 0.0778038805308876865237651749443714 1.0809973671243574692217101360909169 GT 1 -1422252558570419502401671141094.4872341579479581631711298943372010 0.2837142562863635998461634491425518 0.0953711883629775994004875605574562 1.1002305723051809172842565061437653 GT 1 -5384293441545458.2786415943424901682397988279533655 0.7079223427482516487501104500883044 0.0573400930432001394128784599147562 1.0590497114974007453786452655448415 GT 1 -245161457272623292970564847735435847843.5108315974877232252620877503380082 0.4011160371712865234413861013300122 0.0445375775190416092433640554988044 1.0455598436722726913875355211847250 GT 1 -61555527797557084232712042074.2710977777565883984639692702374149 0.4767090104934707949030491309775811 0.0564219893254304242909811076224410 1.0580762353715189440162384596249832 GT 1 -5919021.8089886317255006366110246696098061 0.1882030331820090148970002395008987 0.0932492024669858836829204687980812 1.0978876212683523466678400130204760 GT 1 -19445263.2490788454825747308292410673690506 0.1984321091386193731361643143423945 0.0651039944342276461496966263734879 1.0673199798731234946665031579748815 GT 1 -14786557482.9215177674933747650581077213010723 1.7692410847478512158477697987285889 0.0402269831717626274381447685590185 1.0410584632807082091991419598471691 GT 1 -2321425875775946129.5431904519513534915248293445775657 0.1892492717830178889871036091814407 0.0772798256532343031561928041881883 1.0804292601663293988185898790536590 GT 1 -1806478158066722874245478258463676368763056.2417007756470620851034912944119298 3.4326456790402515846751241744561140 0.0165938039044747015495949175840119 1.0167330233372189863441858269379755 GT 1 -3417053685.9336704744438340742808773389770259 0.4294661250157722910456188379842164 0.0691256719425190950455352442750620 1.0716309967912754623947254932135463 GT 1 -93234438320.5043768192213673427690900684194873 0.9185741537999135907905323123932808 0.0876853828949308867937119904809483 1.0917703735020546039025084389650854 GT 1 -184868330222090795081980068424205.3093130666914686255137113168042700 0.7481874049023676293395525893153656 0.0837762656265489142893787092387025 1.0874946926331471555215266166324018 GT 1 -11508076360061666012982208573145445307626.3371018237576965015707425536980628 0.0923202075218374724411082047680802 0.0891213991688057282367289583737200 1.0933456498432599240328793407093994 GT 1 -3384289374584029396926418227193364749097282.9962934756553876157237749981943490 1.3423637816671668261599503174081127 0.0035471269850722293099872130515664 1.0035534329564668141955014917768457 GT 1 -1367022488102303612076978609022852851.6174264334057822486679907137422611 1.2290817916317782716732676177900301 0.0765470494400022030394157301353439 1.0796354275166961139381010479295574 GT 1 -24330232759665723846802928475368.1142259396878615476918002219289891 0.4792170043978638264571393354262222 0.0825465702394363844716783415995850 1.0861534580957842077178462038043602 GT 1 -1.3476037557504402180401556496146159 0.7504093008150214310470376870638211 0.0034007910851703820481662409515038 1.0034065869191840139205173738963384 GT 1 -112523452680894772.2508608623335859681581183865445538 0.5143194821488997672258378545781963 0.0538401534211963307335858201902476 1.0553437531907180436099288420826705 GT 1 -124323994627655.8587786115716848138905362846713268 1.7277339558298878558174528085091278 0.0618974163018108898669418296239200 1.0638959716719659790107692470902552 GT 1 -129266559677381908577879826808063874988.4007564875283424854800124640179407 1.3898564680943978880532300477880970 0.0962653892673113462637974480890930 1.1012195338890672990452144018869525 GT 1 -22522.4199027184291807040099935765543075 1.8474962943075344396771155304820644 0.0724539532754283761931001503649830 1.0752128396686437419073483179155729 GT 1 -11113.2040034514720192335034389648507237 0.3288651203120802293405958488651170 0.0706447824310287482948169087411553 1.0732642477304059408395249974669374 GT 1 -15328190435227371181371.2329498942258682885714342567656385 0.7104371377474109295399008367395135 0.0860206730228520092535109906293384 1.0899473259707098905400057250138887 GT 1 -82992354.0277152173031613683220808533073333 0.6567406958148452702737016269903055 0.0627033139153017745086687355885835 1.0647554128331964688259210591927793 GT 1 -1773406566499848819564150419712659795038.6970439492838709011839911533174667 2.3815326296512402690511204909462234 0.0264856709824773216138389168162258 1.0268427352052511540607600575305281 GT 1 -727649084672673806652.9656769792069620388604469403597872 0.7408290316555627280538899260871697 0.0398053370075129100245934221743843 1.0406192411256064981760980048453735 GT 1 -342699220213662164294.4676276144484719899020573425858168 0.5538067678123230309202071062217076 0.0445873497949856705686305816913792 1.0456119373718208842527011419518889 GT 1 -10113645233036883765221607204.2609279919644588610801610598181745 0.0945330912730687657112333031120568 0.0361871684423725977257285283839181 1.0368581613579635683128748799317399 GT 1 -1095996455.4795735815950782156473011453455027 0.4160369203970762806812645846460577 0.0963042967968713398518645030811302 1.1012625867572924415443706344288334 GT 1 -1683531911253683.0945102482827682790059879800873446 2.6664859541034999104575258802131310 0.0478412797497162724323805105709250 1.0490235351355198105167654441559368 GT 1 -58183139986352605.7845092715664828841301910408755374 0.1964666793684210091924843716381465 0.0840903842336634000846395368051847 1.0878375919206562836107970753600431 GT 1 -9.3242669377534620178891167750559830 0.1900912947692806431392006061602252 0.0125516958628193186610933156531741 1.0126311338180114899987438758320691 GT 1 -76723910.0818413662915321597589002902632820 1.6689068176576812031369643790302642 0.0676510786022445768783950879464260 1.0700481551768048090513134754622823 GT 1 -2092252662306.2890691865817008405815189530688432 1.9900282941236236748307475594610299 0.0825815859830850881779710456994828 1.0861916250596206214180871460205715 GT 1 -25793633017851425499934823298507802079833.3513196275981014114916165145093699 1.3783254077711883884678885150053232 0.0527384283763338123846033615119570 1.0541800131393918449434030663807126 GT 1 -298246284729.6294889985925096005343014964006031 0.9860138733530733839709228783840040 0.0068009585944755846861413231826220 1.0068241905061381768097587551123278 GT 1 -48021767967541796817374227497201733743330.8852544729442052576427534053378496 0.2361180617329681649676430007412667 0.0250777367259239479561680912224978 1.0253975411381999243269061447617930 GT 1 -147516187344846.7847642224006793660113669026185949 0.0287161565957643175331360097071216 0.0575102861615864116694293943159122 1.0592302734188220006049126600370810 GT 1 -360939430380605379264821234017656.7723435116460068517749378668241399 3.5707566167266476286303114958094026 0.0523773007915842052928941193529569 1.0537988525643840828212473271392913 LT 1 -3769152495256.7987855313354779682700172643785376 0.3653414488690831541636699766398270 0.0301366339627306795391009918293527 1.0306000771617680636646057426597726 GT 1 -496247303428286730.2698797943431719359624809167082040 0.3962037673322665584355817084418065 0.0242258598984318407933107318849752 1.0245241331797171353893036877834319 GT 1 -7307406264889558799499661662414129.4395655652037412785994513251537898 0.1030419363703878928841322142165092 0.0064824206922057548384518457720520 1.0065035228259281973243301721711568 GT 1 -1410600198791637036137491.0314235228874659398158200854696636 4.7222207690424087692829643939836613 0.0984087579862528040902741826364952 1.1035940301305610351879298730172842 LT 1 -12277.1069520061637929796213451285160973 0.8291859711994096844911002446152084 0.0075286742810511077583350724778534 1.0075571578014191670937955099670660 GT 1 -437102067876010363437752648778577601255141.7759713799068389645038896394838329 1.4583918351023363546266786338544398 0.0737866361930405661453241219696352 1.0766506563989387395250895340267744 GT 1 -16971682767567.5999773614940302385920689639460670 0.9665859498220370098532536688371378 0.0293518470620049617209767948497010 1.0297912317250492617360912255521803 GT 1 -42917530140728611.6378516133403863434952161130642785 2.6398985935142958908869896990136320 0.0705488404033665819424535913101863 1.0758372852922339890053103025101416 GT 2 -28.6787624290484002389959090917251777 1.1861152078114929430561185218543698 0.0126509363134526692092593594884899 1.0127316407888368125333684301361451 GT 1 -2371479774874508838419420867571855092.5049557266898247987535957899452975 2.0654938895567377717499564270391757 0.0040701237444662012669467155562200 1.0040784292420428524567792172453064 GT 1 -1827717628147181.6983442313329446229233351918824670 0.2088445068253910310311755009028288 0.0869127425761643982653164570795715 1.0909238307481663693181697574724746 GT 1 -58355922485656737694095166449528755478.3603989514767390613090839833430392 1.2345753287423655310667443935758031 0.0698726234962168174760028932132574 1.0724337382309827746902198120829899 GT 1 -185951098290557919.7846081056705403518726893484984795 0.8666060171361464894438008770754875 0.0269296669199130650493306384234651 1.0272989146397042312787497100811557 GT 1 -7609575412954457244782513.3578525521418102736138649789858799 2.8588005714457293410295030592117107 0.0148121882208129544278931352492314 1.0149229841285736760133769500849408 GT 1 -61797526711687194064.0442914133878963285286332189966218 0.3099281591110630583973430657832960 0.0087847048503891392765774742976905 1.0088235178443605428965572163522973 GT 1 -238899218050697383840651879030151.1604339184843537942048098205439081 2.1251066150380890732609015503579124 0.0786321943410904126149594832552111 1.0818959677691739017536040238765616 GT 1 -39482779911347253580849747177.2002227776396959216611567013456710 0.1412464331789421016491156909901240 0.0282129334937282307534969797855130 1.0286185659008403489884392075338842 GT 1 -118.4506255394084558261975098949649671 0.8575684641158460024699911437195837 0.0577731744964820731265069127915606 1.0595092419863630467020862412452336 GT 1 -600635591552.8729179705122423786339196432864880 0.0289120018463528887089762051481237 0.0551943862497683786141809380180506 1.0567760723826911260960407454861790 GT 1 -139432487792426743486.0981183084475195149605201891555509 1.7501741468884929860048375293765121 0.0391542250469061575534762318191351 1.0399413668105442180502213997276207 GT 1 -121079390169069850297326998.5369145494656124752936488017216842 0.4769488528730387431663388201873789 0.0165145026851332122015696718988623 1.0166523872557813162924230484316691 GT 1 -2250.0211979941528280445626705400292600 0.0218014491306710351557289092208822 0.0635249109020810199090714439389125 1.0656323574540023058568892298475390 GT 1 -3729509743.0428576871393386135083285017061846 0.6969112529139862651251062373917104 0.0218001688206234131287199260188605 1.0220413034598264461418102969296339 GT 1 -400368701481788789354904967306534982244885.6873579565530063656014497923339237 0.1068408419041625719418712219044035 0.0535802788887447617403832541119970 1.0550691285054245887279208859367201 GT 1 -1540922192878318327797595846978077.6382212906639368816713312902677010 0.2996881047533140667266583912316420 0.0580568455757286951648278383575927 1.0598103518484369533503370519311186 GT 1 -1446455325469368.5044977248561769006792482295885718 0.3941469833311411339929020289725541 0.0452371635907759655712992268351598 1.0462923081811111751716630678579061 GT 1 -307416232686315855645065381928508832.6791798175064528912886984309506129 1.2879199733337313454476892765297500 0.0375122489529212078107661147194720 1.0382339390860295435145732043740408 GT 1 -110308661220973448879094288877626580.2974957921361008111558113377598373 0.8231897924623836803949021998797958 0.0198293780123305962292723932365967 1.0200286184028235353487701203613555 GT 1 -282875007828140891064728.9654584618181635800749501772321160 3.6742556034129624697678114143049236 0.0942357634085754468835712876797772 1.0989762313162076822191857265138955 LT 1 -96.3247626127579849420779729163792111 0.8629289173424851562317298753328925 0.0039264547235496537281610592582221 1.0039341834846182345725947934072898 GT 1 -978664965409845511.7917500632867295560135468269459326 0.5553704929461007074017028362322768 0.0482427472314286304168595204023749 1.0494452632930141012945822278872829 GT 1 -12549055486092.9118493532506211617850549955368984 0.5571109947759306302093615071969333 0.0556998651748295772990703118266789 1.0573112239352243219732175644086817 GT 1 -67521058308017770042060430.5113352101649180666576256643990786 1.1790836324624848775210542998754207 0.0199571716144192201298029648537940 1.0201590058381769053364411104648707 GT 1 -7736497054121848620286500363584448374654.6267889862457028415942939657415306 0.5606873289848871412352790620438061 0.0477556619926779298173449420725504 1.0489336195509750551260201471030633 GT 1 -32606965664353923759.5275030472176745250737225214421913 0.0196365644566764707037056963816097 0.0284732467258654495111828729301912 1.0288864724335316143927853255875472 GT 1 -94660287846294836981982369692667565185.0139440214516554041385533457301944 0.0192184852612680486422881486156856 0.0088415872265557569289842612830498 1.0088809059906569594548365390570987 GT 1 -3681552959183277372126.7169808032127422540737427486688236 1.7218728705983739656014733369627030 0.0349385171355269358792458855960719 1.0355634668598007298215299439183588 GT 1 -14794633105873214270937304830887.3714021117413582026327678970799859 1.9061116273244687615277824022478982 0.0614606650211711253199488416199922 1.0634305112299089589740976791362949 GT 1 -93.9840406377346488298821556703629581 0.3006505908153550974914611687763445 0.0139387644323648156108566950515290 1.0140368212697701166222497434678384 GT 1 -4210074229317902045789388492.8684298821026779926475527654346689 4.3313317707537768009070568395967253 0.0111849940774263444009644220821436 1.0112480165012929748700274854321432 GT 1 -254.4876205091335191293761499825962711 1.6931203604627307908600263447425248 0.0018330888344765336782900658277018 1.0018347709978316488884762135446209 GT 1 -13276537645970771457967259154.2745336207388422556832666356211551 0.1480846416824952768594949504553532 0.0742595614169604704887952713897716 1.0771613875344450861825508211114552 GT 1 -2180074956309682956.7743478253143683497445372802124329 0.4754870366761856372910246957778084 0.0703851378040943806326831086576581 1.0729849052800362237726997336635160 GT 1 -290413800839569633963972.4474796028872925501408201125739355 1.7406488729300836613893661285876959 0.0143819674873503777844910559179755 1.0144863903955659368943284773872087 GT 1 -30917338885366779.6016147997532585967985470815377404 0.2954526283193316755644034997878282 0.0056498664424503497910635302597003 1.0056658873101983032619382008593096 GT 1 -19683675878.3710859570418227802326708776284289 1.2058721656412160734990770267193142 0.0673330601907644063135963500138368 1.0697071195629236212238042733178120 GT 1 -6539105298584015164829770523477836.2732119683299092610232722901794109 0.6821433546853491242888988247147402 0.0969409937922043433344158120330071 1.1019673830623720054662819976343176 GT 1 -4919.3056999793783416532256949983401504 0.5636641591796013516324051152592049 0.0446391631930368178900384727335892 1.0456661702763655996901439918700153 GT 1 -1044.2475459748395858475392260015247374 0.3278454543572844778833362026606391 0.0438755996758490319024697739101405 1.0448672485342887642235270414880862 GT 1 -45695769286303572036436721959375012.5684648027897997677759047745693350 0.0995915755304969275692011766765829 0.0110237128954450932070761607017223 1.0110849242853373724221548840196627 GT 1 -3882239023451800702198945420672338866453849.5813940590164568366749626818873255 0.1785209029788994287367595111682381 0.0957847883965909131166495031442895 1.1006878809901834329307967689369103 GT 1 -421.4932084312279926893973295023943552 0.1943469757010338323713937989855848 0.0104970828446264129924978342510157 1.0105525658333281075628206544693257 GT 1 -7590264074702.9863185552099905106866470741974246 0.4235778443713110946623210933115886 0.0503053727141611696443182832339630 1.0516147910243313045413052640120557 GT 1 -14261106574452651935483.1659936633996498982879595101067155 0.0620927043502769823935416299424142 0.0175272595377237184200181472692980 1.0176826807001860886099350556051434 GT 1 -94064.1673209561687222568516438473053866 0.7244597681930004301173507760953215 0.0101044881995799090498918413636775 1.0101558850595622175941110879925549 GT 1 -101274241.9049999528887190078112670332302216 0.8498783459777010445544214176586541 0.0044555752877710159819817547977056 1.0044655309464743448545613085377198 GT 1 -2567121208287742806617124023.1441678448879582166592200569452980 0.2094285847175453775570340443507745 0.0065179755828480209015765282282807 1.0065393103425229742017223706597833 GT 1 -15032182.1135941240279590752363363695550952 1.7451183340373110647293167123132080 0.0395008759370258811102172958204945 1.0403022087333646411824263433072840 GT 1 -48920596341302710.4051932096071160025403806442296505 0.7434083645891831023458935512572568 0.0958184365081673406452178942438001 1.1007250941859197927872038481480251 GT 1 -634392867137710661919143441128530590424.4295039105537052164067520366663196 0.8105026435082688453857746251492735 0.0016292687142894640157442828539049 1.0016305974159653108817219112826398 GT 1 -45.6294082075268085847352865051642560 0.0000434252832457518749884096536094 0.0587940555907418297887394048409652 1.0605933063719316872716253615608793 GT 1 -63.7966892687886647386013874636066135 1.7145864503841294684113355376417319 0.0156480259850321134281451589562365 1.0157717487185820497753046048504141 GT 1 -3119942.7635962536024719768217253375733770 1.0623598946620034900706562731317199 0.0013061299503066353457966070825689 1.0013069836815004038070421718713633 GT 1 -519171399805044.2946425641272276942329340839109557 2.1773360813115188551024640751670550 0.0705091800486414756459416105940031 1.0731183481993089946467943009887475 GT 1 -2015470180664729287516605157599.7418073776347702251489263073190138 2.5886597713343070277744987466261118 0.0792612444429830351470472380692836 1.0859885763316739298009900985656670 LT 2 -15155107810725032654.0933417506839297619767523740113242 1.7584852716243778722806056039314699 0.0984822102462570994663883911167592 1.1036755030295935739205816953477700 GT 1 -215270194132485806265967403292041.3636718283305247562326916881920445 0.1678549434617201504066932564190561 0.0707599140812796174360223351076189 1.0733881387680967013239183569949425 GT 1 -5538382349693679506613485577792.1900889825316864116328810964601962 1.3641048276303605209686160665959420 0.0567947242656820841402738875142649 1.0584713363328062303124470958186666 GT 1 -409333670008783640667436034702767.7644579888118512556440023515733887 0.6511767329626375027191311742132128 0.0895832047968188886743739776614050 1.0938527676220842698716632655964968 GT 1 -144949366216140536204502460.7012708004702634462481621520908509 0.1773168851781492879056621198434366 0.0550608041577738341577602970261116 1.0566346965825947668776825597973802 GT 1 -527680867173174378587081287396930912625835.4803039693291397781068720446483899 2.0084324224522041471197491513665450 0.0231158841631032565026934062658227 1.0233872462190750025994527157786801 GT 1 -1521136165625938348100017288232986948839.6585602509243227906564846575788682 0.3592230348352225992539448970081887 0.0803127961790035921211851462992003 1.0837216625974861893741069790806877 GT 1 -172707262735667421613552308.8362295853776404652088153601068074 1.5696001473924252993701678856969284 0.0874212447092458197594662744925050 1.0914808900817900316348459141292872 GT 1 -5392744398560777415821431.8958670419713084389599429082940124 0.7588963749864971805816590425126974 0.0357166835448081216537409942295348 1.0363701308130268160949879957621028 GT 1 -54225279.5175412624975604229116293221703719 0.2365547641952234258001291742290692 0.0571070599773538481993664630421181 1.0588025340529646904394754450314941 GT 1 -4759829790429386056.1314495956537855138868538702636103 2.4442876782338779844766370487446078 0.0274280919114162613600420404375452 1.0278112647438086404073401143151623 GT 1 -39812625.2646920556764943001032011474039266 0.1796130374557913312331767198072805 0.0776158091393254095130007874538927 1.0807934493104669387988236737377697 GT 1 -21923371880959057870686552855835521.2048752082981699267700621634897948 0.1818601287145748499035045042931051 0.0237665686143917277970397287632094 1.0240535496643407208360090565163325 GT 1 -1546479148269448489376051233609253010735.7484618234896866137764807573007331 0.5022141789465675578403413913269639 0.0745153558886073712235115385536993 1.0774377390982457646981605396748919 GT 1 -14352666833040655813886070817600.7398484101364729463794811983989828 1.7902834893210068484831437617317910 0.0450967302787464248383882458385615 1.0461452318814042634508523376447196 GT 1 -1232.0796384615251160978080899358904728 1.9942104293145672317539264271499274 0.0569838465595421239980797331548895 1.0586718666539748710047856644290583 GT 1 -3663901350086764337120.4328993824644016425748890832624380 0.7263175419733326369414130065186339 0.0369974055255028465836991915470325 1.0376991730292843961457890112281819 GT 1 -21619902.9353815696503359959701840008507983 0.0841441105404062507127442332005872 0.0750225654234984228879000399881006 1.0779859368197067168845985675115442 GT 1 -510.3253681464434384057253596387498275 0.0436286652837583098338171677127772 0.0698694574065171924416834260604922 1.0724303343054656458492557748531647 GT 1 -19458341092572.7563304195881930769428820850947419 1.2938135241208448912265206297705721 0.0876603577764873498377149616008358 1.0917429435181909052147425622165944 GT 1 -57305937331918034811051174110174618036457.3674937068064715674419451954546508 2.7454854936491303152470825450040522 0.0035488964874425256953430785774165 1.0035552087594067833367326016328504 GT 1 -3803018073858726594699393313524819094.2777469726962795309932474270720848 2.0092734787236331276587087202446772 0.0984422648257831872617165917630967 1.1036311949349761359921171619680175 GT 1 -11448615651.0994571460757942487275651153479942 0.1879735014304578808083085445168273 0.0097807847625090358232426836555264 1.0098289308325829153288011732897102 GT 1 -594432428524722.9163583783969516319212388182959348 0.0297676747421224140696745436422764 0.0679791204284173987461047417459207 1.0704000615736876632723156000848199 GT 1 -277995523480402341368926111204670.5152185156668575106897764064991955 1.0899561687743340597899000769122568 0.0685704703169284833704181397433280 1.0710347443164372826437475427054825 GT 1 -16303631248674459469800.5779027353146654041663688788915722 0.2555027489432110408229747717073780 0.0208533653835800777633822892152965 1.0210738676711872626570543460744283 GT 1 -4112287182019647871252136422.4482545261267704888904513723489101 1.4819919102742668286072434805448960 0.0411181461201115111696043032648639 1.0419874088936364862997117807817883 GT 1 -24770103799795901.2461022969336302395436112646552992 0.5262468390595003227606054684850357 0.0127167236154378441073949265868953 1.0127982732455980002546613527434789 GT 1 -110372472194243735429994313896766679.7284066603138653982349383997819187 0.5356761648451658368103975585353395 0.0681463774216380646007690226363918 1.0705795339506923256881630630975273 GT 1 -2073256007223815322.9701479362126051598242159933860343 0.0073633701989800066373687838157971 0.0111888869274557438614297651366340 1.0112519533930967527696357910180776 GT 1 -3230162387709951705349103731260953489388.7102143320276015232261358942289944 1.6722155555796430006918021192784187 0.0750480742678632622266498665796404 1.0780135150017862750351324410498252 GT 1 -64255.9460816183359953552649356430842213 0.7139333148237943649564270408896287 0.0750909280420695133321128452799115 1.0780598468875522097275452403129016 GT 1 -1615450456593602422652083.1561511410423915618824099116932797 0.1929831709223136375189307782778596 0.0423359814723832697164696403884324 1.0432582738739275277309557639718408 GT 1 -14078.5533801290683619160428462620926501 1.6534327579883696027904021766924064 0.0231910119419348975345994313163277 1.0234641546943302967259566070685914 GT 1 -432591051.2658302929345833702021909563037175 0.6741930456059307303128754465842210 0.0989995788480778193674603656835951 1.1042495539466917550541650969675738 GT 1 -125123674304250192948291.4247929379114472057389437086733129 0.0545199023237076501760579425814295 0.0839642295819150078496376090004005 1.0876998643956992597214498847323748 GT 1 -112805030493533163167731094612.9091440217164856455500642245409816 4.4964359039466086572379734142462915 0.0777161829493666220071019224439583 1.0809022751910154127320075094842642 LT 1 -30601415148921847445595863414980707919.5503945752835751977556587910539259 3.5152805343225172562122122634902192 0.0107766694109909640478193551620330 1.0108351583026440374772482216242635 GT 1 -56703383930272103545537660.0180141156063279674132087443852744 0.1360925404022933269205751294273609 0.0513691385981369886817096085963389 1.0527355324373936711413836472668942 GT 1 -113070624159500619516595442133.4608600276656945555802324351524191 0.4447996739757734947780934707301027 0.0912318688498256013047040717379991 1.0956652985863443891743260461808844 GT 1 -2419499565217172175780837194326709985250.8092932528284381154760798621024272 0.3889453585791341319545177647914398 0.0644988578708151443537322712683464 1.0666729123930727486147300509857251 GT 1 -15032402498387353681125427992.1177797632852043772726999203853782 0.5163988628675675598620906654238325 0.0447368516525639550319158967913608 1.0457684284500002911203717948227552 GT 1 -1875469964679229185444526933864094610.2121987164344642922624174536579132 0.3332570969080394672449927723129280 0.0340603973348255359783839495620054 1.0346539698452082634298195938596528 GT 1 -280703590530.4872866254423770852308873446692918 0.6767530681666499106560725613897064 0.0206564821037160701307911336607279 1.0208728114848442905246291489168286 GT 1 -47582766907636162941682522340025741911713.4037966808017726570878669980645095 0.0058515093179034645262841889171208 0.0912298785367331524556991632793549 1.0956631084667256270711381114899869 GT 1 -438.2521701574927303581162299027070754 0.6238408427136064945441328300696929 0.0305756847141977587139847742421991 1.0310528730653328938846272533497820 GT 1 -375495.3796203504380964527075991031107672 0.0989471704731510663789943242594726 0.0698789466630309321096412269295076 1.0724405364270868082624429914243420 GT 1 -199565489354856157843472.1363155841244369518702535000399500 0.1054100095218942053779812969307094 0.0693228237409656188691640973173855 1.0718428112898015371465108698131036 GT 1 -3156610544995495131.3707903642631523024528691057161567 0.0259489358294960217043844013982844 0.0526135972310360839515126692815957 1.0540482407498339630861804688688474 GT 1 -2048574975568079155050572956228533544.1523807932563649353621969508579744 2.9625188767004435756501924969885588 0.0769348134661613042478799757403920 1.0800554223427089022613033445692650 LT 1 -279052736557884181867274.7918956206325221662440810101731588 0.3285174965311675724782602290784878 0.0922744198346138831201455453305519 1.0968131705473281704850318278452332 GT 1 -693884140290548928616476437472740457154740.6642334781837118225163785719331177 1.6738198218446199223724924487978968 0.0654805611160009060957193376197959 1.0677228509288692864024809323702330 GT 1 -60700731110413652361545022918896.8346100491922527978160298541940257 1.5987916441574328019763533331632973 0.0367787524813949707768253514418829 1.0374721453700059455595253316199924 GT 1 -8.3454698956273807886627748695635583 3.5615409756572615481431558232814777 0.0683178526007084815878032469509365 1.0707635660281194528982187796574734 LT 1 -285681358363014141559674951571425892523217.4534932119842694083523719623278660 0.3929584198045002854810265884886886 0.0175698842492366723241701894966693 1.0177260667753651850487943891712261 GT 1 -4972659647958736454592933912.6391084233622840964366419808840805 2.4135518206277099179059282742235237 0.0808007229426018114203674860003170 1.0842523389389815806570479334735652 GT 1 -12964619419260945057498174171.0227062088008408459761152928571596 3.5469672915617080470228897138242105 0.0550361571349661947645715750907501 1.0566086137388676136875003445598155 LT 1 -10001576075591717874472738068072249795421.4559291271105416336177943543868397 1.0772966610896904532136048660042308 0.0619144823797189884167166840955729 1.0639141639607845428175481395999193 GT 1 -8251.1196782650501227156791155459529897 0.3312463340934926172707576909121004 0.0028393761317803964892716327386989 1.0028434148068793466581294327108689 GT 1 -908947.2403401748339518920639473703310354 1.2607329652605582764105988211993865 0.0315858061366722476403045466405097 1.0320953970003186534087111496290284 GT 1 -5440426627181425532.7595105260812568382825781134477284 0.5952426117827768754579551364881965 0.0190770935288198893297477825250604 1.0192614091805259336509062404041634 GT 1 -395029108929778920042279366.2213298539369749498786353317755977 0.2068118916266897561209922184817513 0.0716809403959390441256164158132787 1.0743797910579906502918505505861286 GT 1 -15631763593208635.1947323127518596774442843922102899 0.4008372228092873197945315843498401 0.0091274082821273624953196287802035 1.0091693182878462422799371341965604 GT 1 -48478865233247404197316654799579222179331.2991121575251328637979806386282723 0.0681807302853288520230210832916956 0.0518981919302795408484749115843073 1.0532933900146665747648145919247793 GT 1 -1649254244797988240278.9306795446714012948445159309958178 2.8855585822201941092150027149718898 0.0033295701187905258746337800697546 1.0033351254720983266357186783796686 GT 1 -277249915740195024835063881988534978.5997037711830690989647571407438756 0.6928371604743721501572447789587249 0.0843318661430480318394823459830933 1.0881012792370516758747632783436587 GT 1 -14321043501128575810814838198087160295802740.1323517427889758315454426751307222 0.1645664793264169398063514909353094 0.0814354212288381156922494013926047 1.0849430678478761728437138617546847 GT 1 -2488.2736612041921399469431270643226302 0.4931332500998002118956842523677809 0.0222701702752760120244518988700592 1.0225218948359821968863689163373161 GT 1 -12696314957487018017.3885993452271186537559697708029184 0.7255073089099626953340475666040139 0.0021139164559005903981273490175394 1.0021161539310716746700599627321427 GT 1 -1738936.4345117428202139670297324324645375 0.0215122729366295219932122590599161 0.0752165488475353642257461219689511 1.0781956757392012899839234403669918 GT 1 -97152526248345678357470.8238492134657849833629980373795008 1.0824175652321340683064185901693207 0.0271291129435468056736733930080619 1.0275039013291974854113996578657427 GT 1 -15.8755681774066275774227113852170292 0.4008876929057014326604963969045420 0.0895589452226249931823862905672414 1.0938261213089790596471791283902884 GT 1 -4600643206812833898956069335180935907303970.9525447516071330712052609412973601 0.0990302939776433887989241718601132 0.0407518301998758624125380280568525 1.0416054578056844408287439898734670 GT 1 -760.9195553052946828555239496449439857 1.9604747942510922781343189512135699 0.0489872567008252035019849256417392 1.0502278166325447167433039015501813 GT 1 -589210661348411246.8864016975863652537987744333287434 0.3616642941364912607250440937839312 0.0832527110737024493315382778373944 1.0869234293011801323486622983156418 GT 1 -7767347541967823576163942597973529298.9616419755337841368314740427245330 0.9325584224399778733766463003737673 0.0586029214800547022699139052029843 1.0603902533554264348057340456087389 GT 1 -554860079766368136374481155559323.7038055231173674643640560017736957 0.1203052482303204090745082120490420 0.0021320715107594214306534456341005 1.0021343476110040375328558823387092 GT 1 -47.9160001048115846480788809730447753 1.2384318423747122867773981800641989 0.0942276340750075352398780273783913 1.0989672562465826205956509608442992 GT 1 -8905674791954206077587484.5911773399535051183521800109924526 0.4525701302962354924281621822259373 0.0408104692355722475270462687184473 1.0416665898775754288034652400737452 GT 1 -318418871772119.0318135905963867096864831125623055 1.0995546427820742658254979484180232 0.0606185564402970836439508476896729 1.0625336590868970473213174213452215 GT 1 -318008864576175389681822093312034311352728.0047009628863559809791688328823247 0.7828651524972651006575862285980966 0.0310478452039148411533561810233920 1.0315400441658317700759831293808657 GT 1 -3.0450781331542352247845826372913120 0.5079249713854492417390229173992044 0.0595251743125596628538430701834265 1.0613703975451300241220082185046610 GT 1 -10599791973962393626503245568022700.8643411749616119585936352904020426 0.1424794945298299399136937923483779 0.0277000119710315643685399473460044 1.0280908924786018128356185630833166 GT 1 -44.3744086037866178796510405312670112 1.5988273656406008003907762910084057 0.0740993595185521800916080087789716 1.0769883497890425472060690536454285 GT 1 -220201349.9521378603625598862858368632566022 0.1657573063294938861550418886410356 0.0203700470857433782034613437780814 1.0205803776930835016862339082909591 GT 1 -226787186644005891484647487.5145539544586771850631177303524787 0.5028714580924184861508145689272249 0.0097607144141278524787572426780824 1.0098086624468797801090262739924972 GT 1 -44671.3040582007847803090328128966042683 0.3265317591796194611517819305348906 0.0355872077217341142073397548010921 1.0362358682688320948734474737815989 GT 1 -749732288047159960413984.0202569793078195583776341157627666 0.3848912544831730837549064237999816 0.0980691685801362363668471319380759 1.1032174454298444937159025805975543 GT 1 -110398636481.6094955154608011629626618504711983 0.3869024384697866492571826877797072 0.0965627160243649454662138950270383 1.1015485858852907655899523429798426 GT 1 -37859.0022552062015573142967541455656445 2.1360720042215906562883280733773181 0.0131868963513240284092565797128616 1.0132746154845402815684106457758773 GT 1 -316033254.7813653685604272105938273516779175 0.1523261604883125659326889753538790 0.0778314069082546481966179056187442 1.0810272162937560592729281294538947 GT 1 -6541998157518446.4571907030949375539517133986304857 1.2633935047304380582612326767739440 0.0195672632977655355626023781993185 1.0197612367165024206861270992042923 GT 1 -1709569559542906446426116642242699069441.4581202593114526907367306954762264 2.2283420450115911726548894633797554 0.0852109772783509449709436440162937 1.0890618165539014588291577572084731 GT 1 -45831359250775.1901556502538696647998686000887309 0.5810762133348616751551281319875432 0.0957248759224282057873287341134017 1.1006216240984516169021727814812782 GT 1 -3.6541337004040169009319630875524826 1.1037827476270631727032221155993432 0.0614130334384547639584040137021675 1.0633797617596282455883492434451693 GT 1 -40168505233515606875933180961275773785591.4791824692508000783391383039876770 0.6020707232100633989538383961856934 0.0390840338565677217306308403274427 1.0398683180148807157791999339713276 GT 1 -160132.0910832940313989131138156728705507 0.1076925854952252920477290113626758 0.0046761835386571899226917488828578 1.0046871510891102739073840979409013 GT 1 -2725.6185219706298996796018753183392409 0.4149684996471031880831124186067719 0.0111035437795276812233058770943031 1.0111656482696233724095537550476290 GT 1 -2732824871066994211766080241610991474.4852737390547845896017131805257169 0.8916835590195052234010233225677383 0.0399996670554774864071184757905224 1.0408216477031043189703263581503159 GT 1 -668681180747914472438777597.1069909315436743608878653656657390 0.3652719900321247786256246448265448 0.0569085166690704472248472091076096 1.0585919879778663541031697245460888 GT 1 -32.7454475300599776150815487708880558 0.7940697549164489371975625020925602 0.0605467491019604973125856700960877 1.0624572209217052193405478102596996 GT 1 -34546430213642660560.3421645100412665713726696092024080 0.2141093225055841270112501068491130 0.0835723850191840900484598277877581 1.0872721946568924142406485544902020 GT 1 -1.2006516362039446439260329876466209 0.1116701173515664191946759748184403 0.0233545719964563830840820993090467 1.0236316119470400408261823037365619 GT 1 -339.7986526542769510237192788099678038 0.6919626163842234900489784042728262 0.0643273278548894331228233906688113 1.0664895729137601744786705945507555 GT 1 -33.2344836309349395028374427493422537 0.3883357895733005757045932562836325 0.0432648782102917792573001672967788 1.0442287055788358642635955366861494 GT 1 -6815544387484030604110013541.3222558768549361472182208137008925 0.1340669213336568984118764079118353 0.0876475081108331598636589932106563 1.0917288593169010794278588575631446 GT 1 -7821280085061131219124052007061151.8984448168148860031333641853411913 0.2919628911949817676756983853903023 0.0080801102513714103284120174687033 1.0081129312600156575205468585549332 GT 1 -111206818.2163372801534145001786180902059144 0.4330516260271422336761340590299657 0.0695218732240893176413227844036830 1.0720567101337701563671885853093602 GT 1 -16937134218800180205330196221753.7642537456591527660060947925466708 0.9591029366035246658343870907747236 0.0206522521446788532222411954980444 1.0208684923161103651911977564753077 GT 1 -1177511.4748402629122886077766466910763968 1.6689128584498450222645708466640612 0.0057728909289656427286303714455835 1.0057896184723930658400667189062972 GT 1 -234839219523396470527531198560725057592.4620977131812391768341001103435312 0.2465644599918241304302802290351811 0.0994148442706625632193243431438811 1.1047105538961451660121468018146868 GT 1 -223242715486518016466848256.2286468696799450481435250629802300 1.2766492696094391166334601875825498 0.0986168024577065670509676965643482 1.1038248093005955755133153694504939 GT 1 -2509545.5162868718474310789954111851591072 0.5960286140131783520892344916720121 0.0647641359086103030397013774178619 1.0669565204456115717572155814278205 GT 1 -5899815034457782118860277549105959.5797869537013729056513716926331259 0.1364409618301043052821979042280383 0.0904858700817973492966444424093715 1.0948447452257818163634055024368129 GT 1 -2908322062992974014113.0238617977238130079065517581122489 0.5785892217426477229720648109554454 0.0988576477481662334831875683616345 1.1040920402332394451080394168634959 GT 1 -2270913679641391628901950356159.3113559857770994950383949056361289 0.7022854659867202773807049660897240 0.0091222558809744141652792387122998 1.0091641184389452109930777914385817 GT 1 -39.5744556510431906493868629780403984 1.0257991019258612918263468251783848 0.0347224072848298993453436976591867 1.0353395581648632522958134020560324 GT 1 -943287138541143543809198810751.6722693377612603486822227613902752 0.5728070498995753774371302176643385 0.0215608535817937743764386662700370 1.0217966847613715800250041272363325 GT 1 -32639284503590868111390635628218.0223961361894791741637424574009543 0.2812168831851056336132696624017661 0.0954008099082012852868744626943844 1.1002633172607067300236727697620772 GT 1 -13952368206233440594323304777224443.3505200550997706263398699262339185 0.0735232447238662927646992794204994 0.0437659148878368979306422528561088 1.0447525369998482067125028159375223 GT 1 -352.4580418555089729065228192262792579 0.4103626744488626170578512295092706 0.0239209550448132248035291959068807 1.0242117071648579313158989743544400 GT 1 -8116891645724684043690099030.0902913009604620673039292786172229 5.2867571089232588418494219590996338 0.0456889426943495419992966457548496 1.0467656048025719950452348939687100 LT 1 -76540362610170665688177316736909.0868247002444495472264952766762255 0.0779190766299114666791476820364403 0.0138776518686226795701477168200159 1.0139748467515084098853716746133223 GT 1 -33868781444965613117284409695064572734.3015001581000023021868726830546625 0.2254498428482747132521158245832134 0.0473834551960847351406950423448941 1.0485428227167402081770909343254290 GT 1 -256465486091655955.3762989813331360315582418611516551 0.2925699781297636256558793233117870 0.0171267399120885461908210228351154 1.0172750988992536591523426645594904 GT 1 -230151120873547327930794184982815940926.5106088236843528533982674384986551 0.3540481068115680493977356753654237 0.0558234549538352789156702942325320 1.0574421122649553139002173443993140 GT 1 -7727357202362514378294645381202.1534095259605189650063872878215935 0.2829526993910410994422743597591780 0.0858311508683276598992453923003584 1.0897399881217542431578136720748738 GT 1 -37057300.3432379030383470924128508009008219 0.7454328783272748440511962595340211 0.0908117290846277409880746158105098 1.0952030875319974792343235461847694 GT 1 -484616412228837679646205299756053478.8540338643054712993137731658515836 0.5669834616127477052190393100844526 0.0485386707808922318756841534864960 1.0497562349855448454732065649100767 GT 1 -152176255009744099.2181847103068760697275314451712039 1.8159566364035992087147465229376707 0.0782752037702807113534306526184582 1.0815085856323152282845292744982253 GT 1 -12279533895479821227255.5447676763894483958927596669600883 1.4934560909540153343253840140874359 0.0514994278300458274784536029721609 1.0528728863706089094052250612272698 GT 1 -5137416359599664.9481959754880904465994752573587491 0.1792067593965078376162663397176012 0.0891056484966646520006562736524435 1.0933283582569277361181122736027437 GT 1 -125183777004670852417952958831.8370525212797662996015380654721953 1.8965719953238851027854168294272504 0.0846163273778854895799404773235949 1.0884119872531977913391928630654854 GT 1 -1501.0007908490488521269556756725118345 1.6418433156411327114312889073793761 0.0136294198129310429310830437189965 1.0137231530156898405856261737167802 GT 1 -12228.8379650700270119059905231235885400 0.5916220841145242173185207781554496 0.0672986074328832936753942854523670 1.0696701802010967376480597573309543 GT 1 -326.8506883100547972735020320544005456 0.4932211513479454421094795480655317 0.0066883970077641772936101851681947 1.0067108645723967052766753337669437 GT 1 -6389.0664891893574725675214244086378991 0.2944841245121694516941710765759346 0.0219840457695634975839810591647441 1.0222292959613214683449757581982780 GT 1 -1165414812249178696027.3969051470897461646149654934391118 0.3051525155219389743611288816681007 0.0420317660590136566469570136807409 1.0429406602865231823420411069736727 GT 1 -143813792320248632628879283946640492.0304046596514186659861025477088269 0.0804924743088031058886309827076994 0.0957488183834824436162382630453894 1.1006481014142421082685523220427820 GT 1 -558274779688475571904796364.2152986633434944489641697737380513 0.3969628142581581217457300254509773 0.0660698540792281362428666284488214 1.0683536337849431239575405765341745 GT 1 -418173116033796896017608942408113764.3077751774877565559366509168749708 0.7792497195613222330809487063332261 0.0263721695823525947165900397663856 1.0267261526540457443909760227462888 GT 1 -546728601636840520534979.6775639409449780791196183064554673 0.4907939543044268352695756844578860 0.0514710980715847676755068182299315 1.0528430188763501493716563902025579 GT 1 -1944814517902116442705041432.2587102645240546704373496993859376 1.4708830731646210984517994471472607 0.0978901445218297923231655902177007 1.1030189753396804854161822522302746 GT 1 -3863906668010374981925009218387828714986.9840765074230986842384151247263969 0.1113876338044420443849950112073438 0.0819932841116280521726607360185829 1.0855505726058665465971540372344484 GT 1 -277311743801196970715683804679392.9474019779443622805248037881042102 0.3205814622136490686453150845311227 0.0746366235296907163707722239063550 1.0775687791835562387528258804207182 GT 1 -180888040974608097093479480137729711.3510893639056044757920452044612452 0.3909470100737536849490680502568768 0.0571068374662091443777005945741697 1.0588022980652835826204307834200194 GT 1 -68222200991956371922608712279725.3342081589035943165661225103662043 0.0205564614804091962891121310628180 0.0073770378709511989413063312663528 1.0074043827807835172397911231715529 GT 1 -1843648446296436983863748700589988738.5154594789579816702928084499994525 0.0379469468578668323674483451047642 0.0386465502643336509231431169087087 1.0394131439418049301508672706832728 GT 1 -4771190415096266883382.7548194428428254848720558747819732 0.0245099258699223189502639022096461 0.0208538962931391051759114084971556 1.0210744098879341643466830169818462 GT 1 -102811050850338227.3678152236392070637815906039737735 1.4764697618962977774336684325919972 0.0347247995600320935494251530667922 1.0353420364966764794172579427860262 GT 1 -188048713.3049727088321929253174133867756046 0.2024783211691398002631375327164836 0.0721952946899914137621981068409795 1.0749340152071999313561131456863275 GT 1 -976098857220249266200162054832812520077.6542724876006359201861158091878937 0.1841510429491786433132025306885651 0.0760022786339478142354893880157016 1.0790456733975496849721963522226446 GT 1 -11324924.5737170245672165046536779943279053 1.5863041686133308508392122575806750 0.0301879706867088434594876416954769 1.0306530104763971050942522970469903 GT 1 -76889344666478151742033.0625124950588933865541949329494750 1.2033004215496148846624905103260340 0.0310008636668196000561103093756133 1.0314915583887954768700555718283822 GT 1 -11728219588104118464888628729484380126961.3358822590186204873498301737853880 2.6953358595751636682019011341308954 0.0398077927968363057474973407179660 1.0406217987241419920825915858935038 GT 1 -440136166393233496.1050247984423638234740273514981780 0.6024207456092101796496257703239452 0.0569311278541097992657688893925972 1.0586159638662098657125434156591070 GT 1 -99171703.3598537496947399713946394420401631 0.6620941030601054700901144546007165 0.0006202236699275748141856925364949 1.0006204160881936329777668447092332 GT 1 -1353118300006151237.2118339461552264502403298400186307 0.9137083584093318504984499677233715 0.0270070279773791480088130552587159 1.0273784198205521384557086808493194 GT 1 -2540657258866264480831241624377682.7962122511703862168488856634718667 0.1693437544216570818162795395403142 0.0197499433056497228484863162049213 1.0199475799730741113067437974361547 GT 1 -30883707419390171615545960281.2362073436244208645817857809720920 0.0374792698350829919079369684012457 0.0206642592774614419869819130255050 1.0208807527276089653906546396627905 GT 1 -8686222711940243308631381148.0340641729103024115996702868705597 2.2583892171880327480899417328378422 0.0653905866273306383826189628985257 1.0676265766793640862011147042847440 GT 1 -32393.6562365829655657797643994559035440 0.0747028320285539979821443699301279 0.0030206049854117982550520161220884 1.0030251762202347381321259457226102 GT 1 -1251376411555053703767192309589136926422430.1922542945640812831931762042700662 1.7199014907035599759720825112239748 0.0726598984917168402061571760826512 1.0754348966583203523071105756535152 GT 1 -931136715763617804749018680.9282934264401761410199149449196782 0.0713046916951205924234327445264953 0.0139061527318167030727443149922901 1.0140037491236342339381019135016156 GT 1 -136059.3221797118744614936351800975883940 1.2119292497142249139125604666868014 0.0231804259558408054689189807420794 1.0234533174386722360130139906673449 GT 1 -1521688413.6882150035500401529785967943381440 0.4187368735904004100502800836982217 0.0761410118661138731861784571182319 1.0791958292312931662126069660675963 GT 1 -1398865.0740295360403235678672197784571164 0.8272868023222349251595857012456111 0.0521361557242482945774023745459000 1.0535444112237522066574346081377298 GT 1 -1167795.4172323345240614021802078593949033 2.0831007346174792065153598155143684 0.0350466017581924826126141998693224 1.0356754707866477448356747016078133 GT 1 -1839224683147.3599160733996977600289967649394131 0.1443043141645480220817605650389829 0.0785870692391624561129815428991626 1.0818469927597816855808946722982988 GT 1 -108748144921248775592720229404181296249.4858228815269300079828214010939570 0.3931365838199264301822713323107956 0.0626126104649166010714845915113946 1.0646586461815397477961489150842623 GT 1 -22.7019061937024919222396380761232924 1.0586803309109084222497030461165638 0.0244015815074468987117035877533847 1.0247042337030294403264426497814492 GT 1 -69258628012369961523650685499.8577146275548798534752889075222480 2.1644703186890843499113462289868897 0.0050169054037132794295973638189272 1.0050295323233727398907262490133926 GT 1 -1086887.2054604924056566267777341526523936 1.4695086923767907823261320495762040 0.0136958435355136641019156747685447 1.0137904968320561143028011115354168 GT 1 -9424074379.2199604349939668893527905088210402 0.0199891085167770005497464738560487 0.0982606069615075615297359484347731 1.1034297219086533471445002147751063 GT 1 -7255585214377573613836715499954775789309387.8175337023910335252580533860815922 0.1008189398255396049197291330562891 0.0337123732800834215600863972970774 1.0342937388607641060344500490205089 GT 1 -74757128725894363.2352264385605080776933097998826558 0.2680218127842633059228555524947395 0.0885434438718730239830919867843006 1.0927113479541662816973058249705714 GT 1 -835750644184682.4311524272578652236606101460021100 1.1273025485205572561265379010223543 0.0298962155618386253229950168402479 1.0303522189420410435998321980852220 GT 1 -78812269071131137217729251032250.4964355409031484025505285826540858 0.1498296896507926351627910315120607 0.0795390201830883422541475682316311 1.0828806694118274083521486418109795 GT 1 -7077581074201609.3149774566504929275068019713665527 1.1449639081328420789696917123425676 0.0862182221257819848530132766549637 1.0901634910955447206721153572777764 GT 1 -232850841977471784254.7628426124432406638326322928780199 0.1117317230234178419173918716356021 0.0475536451687617264817013016218694 1.0487214939544849974245492963031876 GT 1 -148363278382611.7156992147075296550053827179160268 0.5737274202600288097823401988292569 0.0443903029054854057137756600699666 1.0454057159317869309467644792158817 GT 1 -6785409735442775749540383650511005.9879347596360787672632241733277780 0.7995310423491328459363872390455407 0.0057884933375828810949515617453764 1.0058053115981391714085155747092837 GT 1 -1149000503773051691664228770563.9938465794162325342978144307832167 2.6404641965922615216627425619961102 0.0511296858425781443229552526431586 1.0524831449712732880083039798744716 GT 1 -258523012693060792491188015038725843681102.4203192011073857017124998507205966 2.4845984546466817536421658362257464 0.0026946770204822774958182744957228 1.0026983141980866084801610956229436 GT 1 -1279716379938083286.5367918334076390099326679556250279 0.0155849251488001993230702362837616 0.0985801987687027037917236087479170 1.1037842017699515796297917797217498 GT 1 -1.3926772547257022210990220361635303 0.3871250678000406660364633715083299 0.0257738091546529330236240948988595 1.0261117735065435134987096837673110 GT 1 -94775203812048764755.8803030510384235687800770902586209 0.3093979097050829009150798304019250 0.0525842940123549362769252477983677 1.0540173106399844306566442696567457 GT 1 -318762.3733712599781793294637168312073018 0.6119899272459216609117335186166617 0.0427605756413649455081937481774814 1.0437017366265977784197293172668582 GT 1 -79691589649.2087720240787107785991345235511892 0.0501709408489484749787197371683998 0.0859055241841153746449843842954124 1.0898213476445471356997642301950912 GT 1 -3268759970290446685933434408277874524.9951511615171007080775950331944692 0.0585341332261201144045551610053531 0.0526881170032230232706943496850635 1.0541269021100992964632038017702659 GT 1 -10474572160300710001161745377972.1764829177545299147351993368774000 0.6636839888881053268110927142981383 0.0931913579817388795477267589911136 1.0978238301578928714212202985490732 GT 1 -117611303793067965048514553956690247802408.0679766239164220213492113911510194 1.7922329041000506471299548366954338 0.0603818933519609826120681000461665 1.0622817557912721009368023752376908 GT 1 -132353391899.6733782011864616377576067742694012 0.1519832526130453916136319703559388 0.0111304603941518376698802799925146 1.0111928674802707598371229201483290 GT 1 -1582772781511442307778182.8724123215473553844988946926898562 0.7808759421326094286212536146541644 0.0548555527956735677541581452309864 1.0564175089849324260514480098224622 GT 1 -6748050128991.7672429542952015360194013792424686 3.4720283766336553733198811547495357 0.0048089331377447585453177837923909 1.0048205332611267166398744671927195 GT 1 -222644733618.6759464437080848147565499992360475 1.2290795816128566899102162538380010 0.0474933050777980046335670939451343 1.0486581432162694681338631948272957 GT 1 -16131684435704950105667478212781379.3367269278470125585625618309728601 0.2829228873616294286267442757683459 0.0770291007789334412798683536457997 1.0801575734475347532816685954283110 GT 1 -4400463503364.8367308453470655387229586117974006 0.0602660029579750713241910413897947 0.0055679368210350162871820232016980 1.0055834955615230353261533040193577 GT 1 -2288564.8213113793972002266208706138537800 1.2355047861023537988483520223768301 0.0381469513283023421431591705150762 1.0388935960433519074653009729621133 GT 1 -87152844829.1726661223003236082310321892277521 0.5906307068428257449998524362111352 0.0523679217935534683158002815546588 1.0537889552163941660855103518498183 GT 1 -28615508.2940357502280619918567952581007187 1.5953045559901897975258771885448097 0.0665631633927348802996581586586677 1.0688819812705718510132158463217402 GT 1 -17.2946913118929594478676661196137066 2.5906481720958803015773673940695768 0.0380333384653238750885482172802888 1.0387754842863012864502832271111161 GT 1 -637417402112191138081116.6302669724362222317376609108141593 0.7296293559622704204519691604958047 0.0111708861114854825579982843543189 1.0112337490546884272269101361869335 GT 1 -302028503092059812678.7778935071293068959947435735683217 1.0508771965610286621262766017260894 0.0030668049125715936748847006253180 1.0030715171956590414144940295185180 GT 1 -420701392218964532403240101957833.1392381138765462929876067604366157 1.0102173107204373316163851739446148 0.0898068611995402341161338428003694 1.0940984615509914956516335400354651 GT 1 -320509585451404025768145986612082.1819247145990950965162773470696817 1.5312747977712469084691336819483858 0.0038982173480695910500132997123184 1.0039058352011252177956791817209515 GT 1 -624006139082637016022417749.9889786689432506146828581570186665 0.4937489668601986309771232642492547 0.0426329187859417663419357117091035 1.0435683861389223334480658255768386 GT 1 -3271886391910670038302013840111110027157.8424550894478234218924404463724863 1.9091839718637308085952190873477463 0.0735750012971800656698399575749623 1.0764221877446522410672262453799769 GT 1 -1012007105398007948967400997476989.7975694295353805030762039749798435 0.7413903843666477430611638400625524 0.0171249407908858765743514113993960 1.0172732684297220219532853226130105 GT 1 -614819530156194.7018209117369479729130274498777638 0.0789682416164156482364921025599039 0.0409566185310860461395181955594956 1.0418189689707132196194294871653111 GT 1 -137787036633510628707197086212452759549254.7202158914571144608768365666705542 1.2163802116569402159579125681493758 0.0948950797439098395734489028742717 1.0997044080174059494785078436843399 GT 1 -109385146296166.1336501144455311031220237604489477 0.1165161748137792675611541848923496 0.0703115136888314846757854221858639 1.0729057099025197010643401284710467 GT 1 -1.7270446812939559860350465969108061 0.2690455027281527295179289465417474 0.0824850990084347531126113503608709 1.0860864583225516851327929033010134 GT 1 -1326879629.4941449975144038086264541907954163 2.3014078047499496170604839971020083 0.0056448084861375647306749974849151 1.0056608006276727115521411618784000 GT 1 -55192504527238138994294857667.5132059894248848098064419360414085 0.9914099038543756809474031042927143 0.0423876137271339779530105745461265 1.0433121901176966296577367727886437 GT 1 -17092519269110148007.0133219621199418919899080586209748 0.8783522295596502214842390371051888 0.0921114862642342724864652459301064 1.0966336901485316343989946629767876 GT 1 -13909483048386402909765252310963.0924510278008106233384672745878723 1.1632298856666098079376346019871614 0.0312034365924757537161583584643172 1.0317006340167589158526566693537404 GT 1 -24514951775970340343929013419216605652132834.4387041056989176032865161544001906 0.6947439635156572688818421263286836 0.0643152353149114386160799306031837 1.0664766490973473722487759851503233 GT 1 -112862787742568588866098497186157791008.6797907125577011138419004153337685 0.1108937622578148485468961939849782 0.0070090464854121030816896888490579 1.0070337252356756963765418974533629 GT 1 -192609096183167797444751920636352404.2802990852428425328531399687126043 0.2099134698730960014674569009972779 0.0298425168293741222350602438684849 1.0302968668785074631174332336503533 GT 1 -33763292644680060539456373026683178935749.3837125060306641591441741433273989 1.4243340944925217458668282850322869 0.0261586522623253485549712107098048 1.0265068759401672460745374432243242 GT 1 -59234481675529993596136624237364227130.2661085602003984729059731854374704 0.3178281222110819470051990861542047 0.0831755767380208689113071296714677 1.0868392936928323945078297551502547 GT 1 -63005325145.4632205636183289579876262588861345 0.4066704277858025569076226913198430 0.0388858030916003436881882477195687 1.0396620457414472039504670906596813 GT 1 -3684163245123015030337471515849482471987380.4391532373866441103544541181358568 1.2869595204617737609064452535339599 0.0912375879155240588343548492586137 1.0956715918128541326762682163011479 GT 1 -187619761293.3378502364465997162961095565308021 0.3144462263779535452047258190013080 0.0540751747567820948216127161124911 1.0555921790041021224210030044772349 GT 1 -1546129431251233106448950446.7775479986075929865821279027703693 0.4239941845345504874908521174827503 0.0973831682181718944113025324425849 1.1024571436556115791793947662186897 GT 1 -241874795231525557.3330507410510217518477203968807783 1.0205822653287874771857910123242862 0.0784342388510499139370633056532772 1.0816811412617326294742302167013341 GT 1 -127495.3313083862082643943800943831247226 0.1695090707283747571097501302991003 0.0298152185503704770160837023720016 1.0302687292870080697597770702389524 GT 1 -9681.3529576304611828889024353798468233 1.7178048828224330478631109465044576 0.0637792333982629063706892129300950 1.0659039685615629319204105067239257 GT 1 -670534006.2657400745119299041902611164252969 0.2118877343430254975350982165084326 0.0903634822243184930900374832048014 1.0947101902807928910421320982410223 GT 1 -1298459306793484537496121860998775796991.9867149825472384416212559328638001 0.1086051794173127828453155498725171 0.0425567257258044835001305529609387 1.0434888032601697604088550035908423 GT 1 -1815182188873998406557.4762318534816303911430943991603474 1.1451968521371253514494819897724488 0.0068520761737994768501272676357281 1.0068756594390385407393262772027069 GT 1 -6336953820678816624734423669656113540854.2342811631888513699609390099632475 0.4654030363236511594312653033912006 0.0821296617675024384172216604804063 1.0856991420929344552255061532797877 GT 1 -11073165170391424749723168999177.4056855485103075709386394099558949 0.8590488834124691553191788228236324 0.0358102817830554799107024979787872 1.0364672006051764019945941282961743 GT 1 -1065928547751626457469345632114.0183096169090577383740683433562502 2.5855689188994274267070018108055605 0.0319564688858951696324883654734316 1.0324782225574881263641552909399763 GT 1 -686524753745.0141446504371551833769456586819500 0.0187681636417896745701402965479152 0.0569075015138154371652520931245886 1.0585909115661644243941020845869912 GT 1 -14407.2239061055687994578411589482000692 0.4033067721494781729175010947433935 0.0640492841462882641230389047620981 1.0661924578932603803223949209112286 GT 1 -7491020.8353129032842713570414036599933759 0.4383139931734046277236583154590277 0.0840354272018019952828965085956048 1.0877775910404419529654558567039606 GT 1 -1767013332480413709150.3985174890716217395653101333279792 1.3015949602963947340268859839424927 0.0337732445757191691749114719785328 1.0343567358518533416863136713422092 GT 1 -258997834234271905359092.9471127244104587025731015937023865 0.3463237831900398266605741571092498 0.0860845101049390251438991630235846 1.0900171736244410869472645362712941 GT 1 -2784410395.7768120825926169542690384424375704 0.3621876237508453186397244064173441 0.0309241849499167175162157804814494 1.0314124296462376475255700023252713 GT 1 -5.2196617621079032417433138384110800 0.6869647481081196851723868060574001 0.0424493634355394203041381943201804 1.0433766751852240484914983436029288 GT 1 -729843.2244485572412995361236862539531347 1.5308091538192649774950779847817187 0.0927378454166599856246021675436938 1.0973238358077534513758742236132904 GT 1 -1691485792511607575659165.4663752351780950166837124663712748 0.0831043463502423368992861616085083 0.0218317431613973142731435511514713 1.0220735819875432123162904871907591 GT 1 -10768481039499975593725295356535250144.1039978647950136797406970777294764 0.0530713827986304814339842859258451 0.0751988878024716406580064115435216 1.0781765784290115115838124779343835 GT 1 -1476133417541704254676178531119129077116001.8995613215416838849927964945489260 0.4950755623906968021277692736153561 0.0284155389606150979533946363928355 1.0288270751485566466977112708995567 GT 1 -19576492830989190265263770504.0078872198884628190340024157611155 1.6156980242055030088953567292856620 0.0151987872209842614263877388211022 1.0153154726148695648819308060929089 GT 1 -17568150148986202596413480589292174333519.8538373303405244007260740845912890 1.4949477099345451155853912875410764 0.0911089320354561229375428411165532 1.0955300292084359118626487759183240 GT 1 -11879299034832051277072043899559075453928626.4937103308512736372189683116264162 0.4949586973260546936417579969514023 0.0801456947311256715593467166639929 1.0835399853181077894547065161984590 GT 1 -1933126466102914391446.2902959512905532411454310860152756 1.0324954646024663012306424541267934 0.0199107820919777998169576287206465 1.0201116727796334272462779159934888 GT 1 -34821864227219.6739793315108961608938161188321476 3.8423610178533783047840654745654728 0.0724276965045973981523935473153668 1.0751845322877916060783026696900917 LT 1 -21366657520134215180689582328943339180706136.5778011295891012306124337201515558 1.3077624079242301418125561431700609 0.0261552899163867691157474434737879 1.0265034232831796574770218690448968 GT 1 -5357769179392.4491380442409890529200333610090693 0.5097526318351851691243371215364061 0.0237720331195016034350554517580514 1.0240591472194214437510280626764732 GT 1 -71680185.3082025927111351289090428590559583 0.7822178632450826307526835653360568 0.0007905337517212383788688476670837 1.0007908463883049169239549571102735 GT 1 -1404.2654205957779066233705685553645967 1.5412951299889030957258296201510287 0.0178843158131442093989711406352000 1.0180461728951639197558853567910342 GT 1 -9968995227876931635.4561945799160168959095480721337707 1.8271034253755091907654296443828307 0.0857240967090174502008263887031350 1.0896228895227501519468891789368548 GT 1 -63629309417070963166095159.6800839820214692117889305643643643 2.6705695768953094278819839254730472 0.0796643487817872091348823614023287 1.0864627348246750583936725831836503 LT 2 -24873252452642382756334022268042581863344550.0651999580545230689744660502134646 1.6733025040807232998534331211030015 0.0286907053280197674262318233271220 1.0291103293084257274556811573047545 GT 1 -21919914378497242977608944506609056755562217.7394129517543021624437262593288543 1.4647196042633013219756298502524472 0.0268728375500214302838231804281644 1.0272405142255239544340842341520360 GT 1 -36998280974401856963292253055328156630122.5078841198848833024052263633779340 2.0517891148876503824603294616387925 0.0016272384812117535900855912580030 1.0016285638717619344238143262162769 GT 1 -401.0479347845484249598556096517908906 0.1400800888111235830984678455663939 0.0161722956922145146853924821844129 1.0163044945093819452498689880378660 GT 1 -65968167423766146594.8095807461944202586812890980476489 3.5443565230287597802697819767738017 0.0392363563424316541581554150449742 1.0400268485892866330136298075552116 LT 1 -771690923.4381011362404921189195340601590452 1.1025425454837406932693628373855105 0.0940999967392967324456304307864599 1.0988263507074874334205119563141579 GT 1 -25325986792076448611031044030697369242.3249787611920442478469252021535051 0.2771231505634484627854501670467909 0.0964036295172429171150131447274621 1.1013725111263724383814706289178218 GT 1 -1142731267184776791997414.9842928342931743848000314188752639 0.8165103563623984862110876918684362 0.0843152410366678696825657342006914 1.0880831231444211439361086661137158 GT 1 -16368398096272907528775513164657285652.2946943453830859046924067446073243 0.1471766293499634773770666588145900 0.0343548829759319344124828630338746 1.0349588859489506842245591960318472 GT 1 -76.5127545445905026040882824216937745 1.2439193769730075014641206130661609 0.0954635899745344462552670245588096 1.1003327206446811449585282335319113 GT 1 -529342945705219291997030559.1874131006969920227008034747773352 0.5601332905463046692995698086307662 0.0222844810551537840316407430065216 1.0225365316857287409661490177442052 GT 1 -13425535257593112.6576760548000064709560985541549055 0.7027210325921795165020114756361812 0.0565061012635642526246334370602555 1.0581653808224898971495466025321008 GT 1 -1665163070.7751751027521969825854245828398439 0.2487828411164070565639159862817431 0.0277683770176490380550383827221706 1.0281612076601689418087923519876845 GT 1 -3551543265566607583189.2040756952472927446118894165260337 0.1544882162620934587215381810080312 0.0881967443887374251587093672230957 1.0923310406769674848703081338722827 GT 1 -872854777.5613287127638892878960380472497796 0.0549323249576205470185461160813353 0.0876716084093939919931129361742086 1.0917552752220387195911903731860513 GT 1 -2210223175838050255834511448680.1005834390566229105957462522272344 0.1536456935631922966530887924769781 0.0987957272325680812364871106489673 1.1040233292375153546166679845800864 GT 1 -532593.9559183938572107317353838318184678 1.1267186246911972147401967822928921 0.0259832379463802064578503034378945 1.0263267659870473707043076602694952 GT 1 -26807275161015492808406967477805516331.4575772302807822611107146786563389 0.0912044419432968032759140485387018 0.0017891428169986070060829743774371 1.0017907452446082209897242276745466 GT 1 -1.3825617068713634720533916406212844 0.0851468565013434190189369588243264 0.0021322676963601941250799844958703 1.0021345442157995791959391986872162 GT 1 -32179382333.9510904666443436960086188676441162 0.5805917878532001527003976493226433 0.0540852678022528116642382473054857 1.0556028490901896182997666006119541 GT 1 -147192546626324693666.1903398897653519458272481131298156 0.1220338580876347211763166478038916 0.0225303277977533462008664551951995 1.0227880134839833619695958455612445 GT 1 -1039736923109190009058588857873734134920.1952238175292683153319082612191119 0.9904911101747137190469710044877559 0.0460898820731436512620686341397112 1.0471858279820420909095272876820530 GT 1 -21078702324898694489527164980779475036.8943048996050174559034619383473932 3.1670989648740977115691866429518525 0.0501990024824929146889439337190544 1.0515027926281355179984869175082475 LT 1 -71787507992795780658846665181104105397498.5192381592355729918787931913077489 0.6754176583405521856599777117823885 0.0956639404073935585207420494267921 1.1005542403339278911411858282206172 GT 1 -174456693872150927089854110515.7264258821495813045112654395690006 2.2540208928770282759508257113301126 0.0836762221454979511733290001904626 1.0873855074900795997083462658657990 GT 1 -52908116164778060500971446222842.0434498974889715949355493771543160 0.7349578383770691157428368775894884 0.0800840656864537910086355031515570 1.0834729888602143074033502906563489 GT 1 -7492468652911911332314507961.4739747616346697166050312824341167 1.7586882605478823476954923630268504 0.0106375573534748794359258754226732 1.0106945406355940781743128049316903 GT 1 -197590181528335584968933416104660.4327843093443023220268736958264437 1.0392901560777340548242213603436019 0.0923544533865961815054253441435295 1.0969013437597953781630197221781988 GT 1 -202430282984364526874.0603153790549106564702445213951262 0.6390038112933894601485876514544831 0.0089937095971523424528689602179742 1.0090343971416712825131487310597109 GT 1 -261816230077254715778465137923.3956317298410486922703036284553592 1.0090838448855390708001880009462645 0.0845271396072672983352750203338062 1.0883145598807298075801518852912642 GT 1 -3687942578277124339479968289270342656306.1207188473221053941635197713091806 1.3263257559398009960009146898752279 0.0618083161734026943314257402511653 1.0638009970935991095308329918250990 GT 1 -569376702388800209134596157279.5795862024341998267660153642416892 0.4829116944492509676567865994283422 0.0868762628928179090254672851122530 1.0908838795229677612550108234675245 GT 1 -42106589.6633633158743523550465189791666353 1.1296895396831425215847686671430345 0.0102611997291650945790659771883242 1.0103142087751666118338812469382607 GT 1 -8464374516437700042984674.1812766918852979135228340107439271 0.3092696190116542746256811483254676 0.0597739099828830953574998121399855 1.0616349113438916261435839112627678 GT 1 -7267239766075439792674104840.8235734575241084153235729093896988 1.1753677202708343375698410326974955 0.0552465537730371993797740126433252 1.0568312889931554793401303507648188 GT 1 -7652.7307141790144982859867115388487585 0.7745408820891000265934203827035545 0.0380139152206858885992743805331579 1.0387552933074159074541334254288879 GT 1 -360790810048785963147418137312497.8484569108597526994171374455997756 0.6460801624486191935310690113767142 0.0084977751658090427221088125786746 1.0085340871174000503419501856530462 GT 1 -4227958863001972758096106702892071302.6118577288466069407025828830543439 0.3500948925660094299146498762278597 0.0467302020929402772564095621768546 1.0478573116092972053552230061813658 GT 1 -4.3534698752545399991535955144247787 0.5009164262702561452296764563616422 0.0805386912018384570316093658275257 1.0839673143460218527916696989292594 GT 1 -1850304981008576439136955757.2179427566136201237296056852651567 1.9121633037188787890757282267697494 0.0066056679563979167075479753754418 1.0066275819386106582036479274286299 GT 1 -285410172741470257.3110338280896917229149443544161791 2.2216741630047759703637081070707035 0.0845703122765385720029494733006319 1.0883617198667418379450561445967906 GT 1 -49389180707492308064.9597028317480375121556229514134074 0.3607416989179417308748366012012776 0.0874329179159769786447530884244344 1.0914936816149292227089159221268931 GT 1 -27074.6404988439963735120857504760150342 0.3139193842978461753575948320948190 0.0396768683005289680487119583350248 1.0404854556355364467439817711430537 GT 1 -14305474916673315478948845170658447.2096764998612584529018215782101458 0.0821081308996173478572920050171545 0.0803140157885212535812032309970787 1.0837229887117577214280655032148259 GT 1 -1222.1292245879270034145968455980780186 0.6516324134832961852322089299169753 0.0346874485162556247294046440829625 1.0353033425354784856648328894891387 GT 1 -1962935144896.4853335980845598687035827650121887 1.5271203152685029657655809597035807 0.0177243018125205245120698636254505 1.0178832583126491145007549340235766 GT 1 -54882868649888774398825688352.9012574663437760979734982115947580 0.5351721040109760358795819514648494 0.0652155227574601866351920972954236 1.0674392818869064095399181987651317 GT 1 -44021480.3834294575919199777709342023816163 0.5920301873716825308392189672835734 0.0964289917400347190624887540872573 1.1014005796086744064469253510156582 GT 1 -402.2300662674932044869056299400618116 1.3274805828565139058054949894997613 0.0951124547565417274566881184212285 1.0999446024025433311878327574233473 GT 1 -1.5727565727028031563798812919781726 0.2237393994796852208906914234391124 0.0412108920613347509095271084911206 1.0420841365837795338944054853835303 GT 1 -279495184530946261276463172522.4967489601147978947855891264644273 0.3432527240336728092357816878161483 0.0072660134431216465650768077676171 1.0072925394893101421540143546428058 GT 1 -15515034053695801334985573557885004370789.3312829737317473066891334566950763 0.1434905957755244296256824333030334 0.0075217053105631071947109376823586 1.0075501359904710429857641804057850 GT 1 -603435039240.0690856706754589433943221780264595 1.4884193801510130087894018191642467 0.0299658647468656713173542487984239 1.0304240171212839380452902419392476 GT 1 -125344409.6240437704410480428366027471159234 2.0165613418389533673765770177962730 0.0424379812138407698830163398965416 1.0433647884466899118888516560876756 GT 1 -2229331902459642212.4644805488856369901795563138076878 0.9683780825941436221622215957882736 0.0933355426237084678589896656412784 1.0979828450804980580186972782597601 GT 1 -6936881723481797193366260.0646560512741690303047156623658441 0.9293446532703199383350116209851315 0.0052241336122958697202041154166959 1.0052378271102240640320596611194642 GT 1 -22446191260068031354060901228549135.7868386505995124066738558265508535 1.4070218601317252863051153407706526 0.0652895046896903309671057103990570 1.0675184283230883045974161575566263 GT 1 -4545636290878621325131946.9556755526072827400017319475154037 0.3706006409720830609161386972900524 0.0981522994427705214650452622364185 1.1033096195645505142073774819213225 GT 1 -268482576000610108.7114974762504273813618256419072448 3.8920220475184967391436456115431198 0.0094920755096874746565544606001018 1.0095374123805200518131654530579593 GT 1 -65034.9774799425318133902953268319087079 0.4831970525617845119075782590384872 0.0976127948878208509263714116613590 1.1027115770709327515002463789982821 GT 1 -15410243732664464.2468946665000439402642064518055152 2.4403537823441832203848868941409949 0.0487798005759541102758236706944128 1.0500096981034895003499976682952724 GT 1 -106514633046133171297066450998430925676815.7856001628495156194604750635874989 1.7971652257338496276056239557762558 0.0122710093196552884592279868607228 1.0123469197924757281392468946143292 GT 1 -4345562817519832981.2292938686235210410724706893984371 2.0803931112364905661179330935479360 0.0841339995455710214846452795531988 1.0878852127226034662452470016696088 GT 1 -918287871592375196720901349196534182374713.2644477912611626289886765686983953 0.1046597446555714396256411983706159 0.0854128625172568311534044724273830 1.0892825314009812422119748862579664 GT 1 -3144926927461709586115.0065005394949358168945947007382958 0.0642982713299285104376519678363139 0.0558105823339424714648208784768267 1.0574284786577550250788328559082034 GT 1 -77752990936285082048237950.2273501683194889240700138909700593 0.3872134670676730522170032766150404 0.0823982904243039196861824739970567 1.0859918500740123734262885029763004 GT 1 -1335585729.6264516623234448310652148354139120 1.5676909835632090608212706450695732 0.0927523891562037335772421421183482 1.0973398662968929086120546200884896 GT 1 -405275215997595010609958293628655232.4588657345234319671701340646436897 0.1183226190109872628347572522440128 0.0287803441765702071685843187454977 1.0292026201837727378844998147238365 GT 1 -1714.9301314929870445611591163284727418 0.3551713112199187109625601964410425 0.0300057750941474726672254777202660 1.0304651612077385925579550899080691 GT 1 -431020121016952809389643108253629176807705.1174834317238570246480381116798895 1.3409593048666046012443749189701800 0.0568849360568821238714191344278298 1.0585669847646990256230044762699613 GT 1 -1022892355674113595597.0931648922266289788725852256427390 1.3685706800533308019544089628317165 0.0182009230191970665021797047357792 1.0183685974881818235207803358500953 GT 1 -258.3520583517962791571410115390722469 0.2953850345042706755342628410907414 0.0825709446856339575280904475641250 1.0861800259511071184092031335012833 GT 1 -5537437528664.3895887204801145881893714654743533 3.7981862745855164237248548943098032 0.0062220736701040476388930769310327 1.0062415114412573832773924379005350 GT 1 -9911083301802545471610926651793558.9184149409205048587168205444328025 4.0527774459832572408573347210309026 0.0734199047569124986222237111063502 1.0762547877292540310978640370379889 LT 1 -210597399760822549115664.1068790133059510669448871631410673 1.6671734376998525589787528420801912 0.0277046742264559081454375909934642 1.0280956875692731320150858076353227 GT 1 -429374707599001623488054193885916.8140227704124454539009363140141033 0.0897859703996190648053932935025490 0.0500994921339140469159151278567679 1.0513980284339840906989049069734574 GT 1 -2940834995446352.9495678513520390745635158770006979 2.0976567350322953353206311980674619 0.0842210915539949903957614186124190 1.0879803097668683243133526417783936 GT 1 -554178406553297939535.9141277139930145843936986846507801 1.1285965086335048352145100894660040 0.0480754091766801578425045490417443 1.0492694586481962110230545558870620 GT 1 -38949386635861108946746367345176524031.4342197324814196117509700769073632 0.2669761885446327989840956713055194 0.0636597931326343287998309762460438 1.0657763996679644693706044941326846 GT 1 -475502704611627653.6663155421661580794018734655599428 0.2276713462207006551575716974645442 0.0147685648746126977253557179808951 1.0148787058905530985242693006652837 GT 1 -6561937637336657406407100977924766067011.7929672151961849019729663521853219 0.5517516937319131309122362239667476 0.0620185751380563097152445066706595 1.0640251330910293452145173089480424 GT 1 -356032.8427155698493609329130984777540619 2.0575814404503394112622553491129493 0.0706739573525543731653166341047525 1.0732956408715027891817553522326162 GT 1 -194663944090222373245798257508.0010599880186198675529663125062688 0.3000350407824570828555612915521084 0.0745711990610508964534529852508380 1.0774980803017848101687249804431659 GT 1 -78549987020085256575247756.3502360783766911751224673697191321 0.0844538746224651576234927241986844 0.0935945352756876226301930507631180 1.0982685402438050611234090949068906 GT 1 -69207362840052.1115959072932481763076959200571354 0.4350738662439516176893101447378206 0.0041314749568594409576694646829311 1.0041400330794318578071786216235717 GT 1 -2644932466106170.3794539817046310927029556320560104 0.0782127502125299741054207543832141 0.0282873765709091201773966675197757 1.0286951731445695950562885759845604 GT 1 -2785013509367637526127840366888.7850260178128826297522850500754456 2.0896445855001561864997055026638801 0.0362295268015153114587270063225158 1.0369021110633226229091220995063378 GT 1 -1184604158973328616387004409902284792013914.0172513013347770426613642027985330 0.3625031090943419491143296937240362 0.0297309880420632596056709412311371 1.0301819140186968300134323716268730 GT 1 -4275345256835.9511072672369560470629914024622594 1.0285571870721732545237572887041701 0.0547980328704810426846610824476881 1.0563566524934723175265679371950663 GT 1 -97336556108975676822227542932234110006.6435382275979665092350706458047554 2.5689338655933677262053805935594746 0.0830300801717433611691886261149387 1.0904373741491132593799659489266946 LT 2 -883238835740745460037656334998051091964.3114294312148649816938905847483594 0.3538505103996883907309936130447548 0.0562259891103709871765489253098834 1.0578685367402889352650587552455187 GT 1 -345702826562073360500905162536666617.4056640931281694053426025749701748 0.1376926019915434094731119753966239 0.0992602999056917601203490049705979 1.1045389642299610215558943849224631 GT 1 -10224981928315561926138224931069.0428792059244873546559968701284498 0.5739717023222798048138062880855460 0.0071834482399456071108581870598010 1.0072093734337197207244940750016949 GT 1 -2091495086902186394161542330591830705970.3896987661965991413336589120832040 0.8182474972742659027853506093659818 0.0172677330341602868012686297935996 1.0174185591412737235563914669006805 GT 1 -1272573331147149009409674256960999739167.1339848321673517112774397855599587 0.0503559341876042557805542322395652 0.0415012876210224317171376616794322 1.0423870598682556111907738196890532 GT 1 -30029655594836548690486704271.1516048940639390361641686335581102 3.2600093287912158787029521979381895 0.0145546362249996936951374691340353 1.0146615940327662579840101300076857 GT 1 -529650389108464975413.9995203596989174190096240862667918 2.4389894372560144296682589585073400 0.0733855135684593671584101778754788 1.0762176721572605040248864196033857 GT 1 -263612869550001.5630944411201034127739485850106257 0.1952488107822831952842706274522900 0.0867382282228326525136619258461715 1.0907327234066093970241265960248502 GT 1 -678540981658.4065894250056643232145315200407629 0.3959498111163505492079030525095429 0.0534909038871631864584018987187216 1.0549746981170922328176623607179420 GT 1 -37635226681883512843712424.1648624129661594957961399939353355 0.7848549741433028074475965313534986 0.0172207928462103438385422050397327 1.0173707953010957953609522921053425 GT 1 -104560998390707916.2085368195964153246243049853194381 0.7910710921042214086805065877009859 0.0197990355040995917968493248290924 1.0199976625284957967648076845936309 GT 1 -3482790366338283704596768434065147.0851375043431245170083338591118473 0.3220924673955920259647613065816584 0.0652854935414983357307150321744764 1.0675141370055032652121740116925484 GT 1 -1988644552113447.4006512728479623280305775443961841 0.0626942241087639312097263877305466 0.0288023846675071720268485729908151 1.0292253140624415520277049069959570 GT 1 -1381318.8849523619034855842726096606286528 1.4402235894018047696015862836423943 0.0309817379140484447429642448158958 1.0314718209470290847263607827025864 GT 1 -217000263.1939069918720374313840693477052928 1.1086692279053216362990944589104359 0.0649716153426512570080047137397927 1.0671783922319443296477839412061183 GT 1 -206611626600299776183352418751356379498.2430930995498823270031541719261552 1.9783446043066807349377338356712755 0.0986495188143607412448003881291410 1.1038611056842975227704073745528143 GT 1 -748.5417171484030499208409100545155920 0.1792549701949585770245349880954528 0.0083373197236409504593718560771732 1.0083722695679822182791971006341643 GT 1 -101118989971.5663748610775467748266604653104917 0.6046590490400571197473279243799431 0.0178637117748038181044118191872123 1.0180251938775729680815801673505993 GT 1 -3.0693189175943022182044073464253283 0.1946550345838868043541920170146928 0.0127213785479892351399931405238785 1.0128029881472240265938740911637144 GT 1 -18507070113054858161755400695529.8798259340504949724203938918838114 1.1344424180253877052696527834973709 0.0872660374471171344445886078589574 1.0913108290714376782994135508541257 GT 1 -25149519077799387602184967291749694799157164.0823995613977170185060229918310693 0.0892067131997601268191764682378421 0.0552633289495137989707737476625737 1.0568490452929356671881532432050103 GT 1 -126503560385695.4350456569206384440521090493423795 0.0985943929747021601152062879311701 0.0556882354091591359619283230931712 1.0572989082597018025597563579935356 GT 1 -12419491246511918495557727595938.9508889259595900309117034117288722 3.3771461481330147367426297402778686 0.0630839503161122317978632838542516 1.0651615955453074498111416927862076 LT 1 -63311871450019940104582714382425568402710.3684220224379677353284266347255032 2.4002890853478181630866323098803416 0.0541003786822728963873950918069728 1.0556188241037974030252751341856794 GT 1 -7587.1249636978078030422796721786825668 0.5471031031366269111683497200653107 0.0866328048836922934600196302616778 1.0906172940105271638912369487666250 GT 1 -1.3715397980939743525440636449425615 0.0821184332869753551444401813664845 0.0057268541496000930964566306604276 1.0057433154565801826101761680744772 GT 1 -8029728415532162006573270051928641.4127688045922818389658258396564265 2.0175797687065311226286937682159268 0.0075721117315601252122791614501126 1.0076009257168980510637529589235018 GT 1 -31956981521.5424149478672164231049866224060843 0.6704128240384607111388434631236015 0.0602820452436739084266058176162215 1.0621754968731024475284306858922131 GT 1 -14457297235174031.5853381896412855924923029203726086 0.3616393610916240201902216031744887 0.0407916416644780227126444921822329 1.0416469614457450929336523183839625 GT 1 -292256716731784968339262880338473.3752311298037571968513975538332449 1.3569667108991206814117693583054740 0.0160871477444315976765364398751294 1.0162179506329018337246487669850426 GT 1 -205037679.5698613133283738770037205202136092 7.0945081868064896278253174697311158 0.0364631968952455284002590365440620 1.0371445945507749900182100059306600 LT 1 -253858016527026976907546377953.3735470466179171968633498127768291 0.9519310378078266811418308259334629 0.0763416054024911935300254513882842 1.0794129785139364388394558594159987 GT 1 -2104.9662011883078419492539690269719879 1.0947422437501394221946592371739552 0.0688738215249099009151859054248904 1.0713604808400053568419257197227876 GT 1 -32621316594515976767531071.0780389366989188916142894558039267 0.6253977313354058661780137463420852 0.0007596603256432409253350933139081 1.0007599490137609512827333301975921 GT 1 -18145.2074957671264922403904910064686596 0.4710861628098841834757158454381128 0.0877818525732155225587217605194300 1.0918761207708895222240574330560129 GT 1 -191957416526747651494119225421195575117635.9411711283450824377882520446945662 0.1837822378641745038205761289044093 0.0244546786451164803552411265015694 1.0247586603827233112781130748427308 GT 1 -115467871845899623895637.3354414343649801737022074854772382 2.0035297408284892655362915669308288 0.0802118596078675015130370536454060 1.0836119176405288299118939518333344 GT 1 -3751608921702513544144619.3489529015228816940820021421792081 0.5484657357994356322083333130880202 0.0463305230375030048386760787990548 1.0474381277720802784159937113388559 GT 1 -54981315739718975.6493594186005902472107883758368859 0.6287023046405341473700959047349845 0.0877965470337073684645843524621409 1.0918922293945640037068095992345985 GT 1 -966161838845142763101599370.0929039156492241581786238602119078 0.0291391698582109313568153020835695 0.0890939128880874806602478282209103 1.0933154747288216018204119561303514 GT 1 -8282092823046857957378.0715528558185478380277603462218197 0.0848067723340191828661671273812824 0.0261608380733474894876678814730035 1.0265091204674511572985369147706119 GT 1 -52840299505471780943859219.9509403767753108346035705968894145 0.6682336679017201287971539601882866 0.0988638840238744160755278269673856 1.1040989606684753375146242912014748 GT 1 -2343616562229989918497524571.0244959676261470567796388059616459 0.0713241567578967330772442394523044 0.0163067737801639312775270643796157 1.0164411925094614288554285082726168 GT 1 -841409708841005267742317376.2893212391468775482640546594615782 0.6343993261654588828414361837857443 0.0096840337841328789534957830687053 1.0097312289797108834583160149639211 GT 1 -5991181291.2061551316338009706721438339877856 0.1109193767685130383561915433180640 0.0070170340652561042531740205727211 1.0070417692283644412793370798586598 GT 1 -9169.7614968860033716570687657463248426 0.2318893120533492981013815770629032 0.0750973007452206624391483600535501 1.0780667369974005176625246280021801 GT 1 -421420565.1457817766433649794560492055995653 0.2052758202935832619871116474142675 0.0170131574937380821265296955975728 1.0171595439639589577711163047850544 GT 1 -1310189.0326289741732334284355133513158080 0.3244482409677297019332464920299510 0.0981329852716666476182295923626728 1.1032882035712773715238614449638580 GT 1 -9216902500915792.3266208081569600652071732599953089 0.7217140162289956119395963459243457 0.0096394914387447256711776092939692 1.0096862520781695307639789352865598 GT 1 -35258836780974094014530672.1046313263819226129049948081286409 0.5805817849858025756258295489822268 0.0624410328924218151339198579303522 1.0644756248674996385768304846886638 GT 1 -11621478194063394404.6330620754808664594502173312965793 0.2554884749367087179487519313200202 0.0177707562220698853780575163380516 1.0179305520695297093410776244208860 GT 1 -2457212760933222529773750745437944251174.0165244043643397422758577706819762 0.2794672300777954023183538081411582 0.0004866143628420761496992326009161 1.0004867327980342070635257975416810 GT 1 -14599972817968321323980956593684167600.4730688477446110890778628919415550 0.5545617794062180784189232215458706 0.0935783862490163437676898585130267 1.0982507238432631093725383568221991 GT 1 -159679318598040384391977388682549122590312.5437917104116052783505613023050765 1.0339194164695258489704050016501044 0.0650390125297165446173810734478824 1.0672504751946595533327966116209130 GT 1 -6877509153341644534954471794140755.3163098813905962026404803287361371 0.8772587373897511417846198588037760 0.0462889691642124290216700089751530 1.0473945561059892621493255544139480 GT 1 -111717659873.5759830120722250023329429449161528 0.1567429842369369590199760281743636 0.0853070015652046366392303621698022 1.0891667908426142523182009129622949 GT 1 -3.7766063714789891354268050401584931 0.8516483473510519373348942094648013 0.0451637477985347226066985492961761 1.0462154168663684276570533696151327 GT 1 -3975255986060364666.9731682580323094726766548380326436 0.6285002680353171950371083667732096 0.0597558259487177919477000113344388 1.0616156778207549868342882333824779 GT 1 -75156549905926367517261619721004236.6866417549955973671150604159342224 0.0964685933015666717354908408159302 0.0515462139560141037166497455396040 1.0529222139949401706046594094262562 GT 1 -9551842292031059695476.7279600496427636392181757071821668 1.0562141216094237878011841799211220 0.0212031436764213900720953934807705 1.0214311591846357562644479274955631 GT 1 -701886313067971474548533289440.2399136611476786629178674923189381 0.1447896185135145085098201551616998 0.0223922925741623834738251776256947 1.0226468065678186597692485175530085 GT 1 -3129415.0124161133293147887813999305600343 5.1843595720439960711733293530980414 0.0950795903296630156021590777866774 1.0999082842652591024641689428558372 LT 1 -218790889538203153902521954846940767.8205636163062109428613844982098880 1.1007612275149047079142307412758576 0.0958700915991086784785032759330445 1.1007822249311020055801479166685878 GT 1 -171342735995230671465.8199797125632646180371362947708571 0.0338637863131054202134229414456948 0.0707922789010168933878199589867717 1.0734229687155596698415399543089310 GT 1 -12457.5700563862544272222779749574895753 0.0547587024464010834196372181450331 0.0540921625774534029887946153316013 1.0556101381196275171150165996075690 GT 1 -5518605605941525845638072412.3520249366079621568890776079443798 1.8371677751981459499457231328183607 0.0337359739211302721942164841531793 1.0343181631922057465565126838273028 GT 1 -27225029303752900877437120885190759.9961036400935594171598543704281794 0.1155618259555675428658918539110895 0.0592794143347440797013482038573982 1.0611091168958890328980836081864087 GT 1 -720950.1982687524632701399027413104692993 4.5329561672231408586818296097985598 0.0193293341955361105749185985556769 1.0195185885184597227416431895900988 LT 1 -2305537856004057012160.2346135292323946892548687342007144 1.3074792118144196999282678841746922 0.0118450156959393204569891562958655 1.0119157268320493418332655225804385 GT 1 -1320288061189898048691493227630276502210.9017582650566588917938723829955628 0.1239226977860391293526870097122667 0.0624891999721287751803829724342560 1.0645270011741968980732399221929253 GT 1 -991459244.9627301594117995444774369428578715 1.9665866733977727711185581429895249 0.0579437800197404192160304004092282 1.0596903246789377572078135596658706 GT 1 -1291291095929.9736639290127804655043942621860703 0.8151693236722588227984912265128596 0.0661797345741706997618798654443340 1.0684712945755945991394571918995350 GT 1 -2124799890228850436476785.3613061102825744147240396986707708 2.5603498260453743971294339560148216 0.0212315346061005574691161609865285 1.0214601655522559683981643444391988 GT 1 -58476523761081450041288960278541926.7732768178790351787705509084063646 0.3524703399460496138356419333426800 0.0177819306447067686407122240880560 1.0179419287275467482214200772942006 GT 1 -4476395.0884478687876220917817489042879649 0.7634040344462058630548980341676136 0.0709675217059082719822920668073704 1.0736115802906059175863051028128463 GT 1 -6767724093604831.6853761446406630236904550868877656 3.4289662638280884585985806261019007 0.0249394229902189594092341368117669 1.0252556796478528458341820954084020 GT 1 -105663917567692701149134605.4018749480036942057338301103883245 1.2179318324423688144509049577132136 0.0719888966847469285677527437702861 1.0747115814881463456324911569179206 GT 1 -4496949851399.9510371768145574248810073978939153 0.4369417237282677913144221002689658 0.0928698087540748671454869607172925 1.0974692986542551070875905082992215 GT 1 -1028129990363803284999118.4132614319875639153466567187031396 0.1145811817419440444439527766765993 0.0335324912409017541543749536281905 1.0341075983234564979847470472354046 GT 1 -6.7671265717815371691892328410459503 0.5224284385221252677371726318990071 0.0049883745900255331708312109057225 1.0050008580626796146757971910501763 GT 1 -372617658427824749.4001597213264305512321979812050377 0.0049760144222373137131686357236758 0.0321622646618965918454261869244677 1.0326908345397857844573392515742816 GT 1 -106202857992741339495.7752467353685371249496844110256503 0.7853758170500122262367929961682926 0.0167873270539720058666438816563072 1.0169298313239299750704252275894884 GT 1 -61932893937051793543.3183312717032363401859598901064254 0.2945016043219691344201416507079925 0.0158199602483763216290214535179441 1.0159464314390854668398331686597875 GT 1 -6742466338968441441872608085886.8378201473703693444931633138697230 1.6082243801358217320908760356386963 0.0992739445257673035803302495184612 1.1045541125834988307191332749856835 GT 1 -17560545740173203020079365994912009198634.1836964565125693597930102631040152 6.1821010127804814248511759206397935 0.0259879271643982344113843894120969 1.0263315803079999696139850572916250 LT 1 -1148503.4611156896850618756664679817511520 0.8778487082091872310729737341228626 0.0618641232649807522939859827125907 1.0638604825403489405234058375767896 GT 1 -1796316758444.6898589298232078240822561449327542 0.5217441914115824139755340412937177 0.0281678635403795127687696951646279 1.0285721885515241649006100390847898 GT 1 -71827277522888511152281079805.6807684641220160865360716134480571 0.0825793983453846934970672732559420 0.0923780728731467466587552940164773 1.0969273669072307601867453260537660 GT 1 -3112655840492721115.0269369069992594859910803847947570 1.9359198245855658946831338305075563 0.0237120714738988744901331337791767 1.0239977273398059774208212288008832 GT 1 -36248003850753.9604711670610250152066146541422796 0.1942053439967767070571058419578838 0.0489269632555611125502534136124896 1.0501644194441351564116577489936631 GT 1 -17288452318322.5161841732830305456093601570696712 0.6069736930632474357539199138271994 0.0808820747509890068048657223151810 1.0843408457628727289375099511945171 GT 1 -497158997751373782527.3170980486370563642885399487235670 0.3128666452262144688156399218595305 0.0695082874007097932414507261778644 1.0720421093346681923730294933401274 GT 1 -215258409521620303272.5444311790694617388916335784373306 0.7341223188060515887343756160441873 0.0613677843882348386405167796185513 1.0633315531640008530655706440373847 GT 1 -39.4345487567086824747874387569182721 0.9501098934720194556530157238256568 0.0312028755064651418513103035889732 1.0317000548592047645596998895200064 GT 1 -170530964976477.0844793324455917555110540668421583 0.5224849618151409007632806179680788 0.0038602292300768420659664719205719 1.0038676991448502093627022863388156 GT 1 -1611740053208586195956936.1669091298162472823994093339860676 0.2483457955385863575246864032382726 0.0881552794319090524307874247210301 1.0922855659391045451114420577216186 GT 1 -25999327331779522524209361842517.3623248970754290573172100888653591 1.4715374388887045532123805492226644 0.0431015442367596115191223559644434 1.0440579999893805776706837296295058 GT 1 -18968589253378046453427920803530143802131.0074178830650642268749121375959626 0.5523910033592874352696685291095721 0.0391650068432333693512535716495163 1.0399525880253331132543588787237712 GT 1 -1.3940783014515638426793520773808155 0.1412215927916526261068916826012454 0.0971920633148724537116602061097794 1.1022454428887328279945160473506586 GT 1 -263944947127.2575072097825935858741419737431003 0.9295183346904987370441159489274809 0.0904325440163665767065758171288457 1.0947861155679816019384742074170646 GT 1 -33478944427285.1646727509591503009781506841735640 0.2003554746150359808888919237833718 0.0889771975394593535833773454854462 1.0931873518921337465763707891770729 GT 1 -12447232319119098058934762827.7692020688377654312050968440840521 0.2929883950683984105993274665805654 0.0457723191729094406147072416136492 1.0468529768605209075455419477031510 GT 1 -6679739894.2655112398615965422763914934026377 0.6759487804484738287327086155641163 0.0973505538134529366076350240405241 1.1024210111413996480787088830504920 GT 1 -159510046928580798215062893605299484268942.6827521144163999840330312866654102 0.8543057085981945197343833143938061 0.0879658706261334814210018792472638 1.0920778670489479923695642839423575 GT 1 -44351711178864466831906225470035.6763759977951845487477606736837979 0.0209768639404885143100523837097993 0.0399036113559489490012880987612343 1.0407215947229302807558985205886630 GT 1 -3196.9406877695572139367520165006828911 0.4379224277732855698319577200120390 0.0220469777608358082071950043642979 1.0222936446212962439428129721647771 GT 1 -6239442365085809787886.5729802210140519980204919503401938 0.7122529425254839934054050244464985 0.0718390413684332219688380408338720 1.0745501144348365207467966391932883 GT 1 -457455122669232100.6921928257582849379571626457926778 2.4746677504159110353521262730272037 0.0891619317987012732379324905169292 1.0977510092077289208334050630509848 LT 2 -3952178412384334.9747727671823995465754759262706505 0.5889103686841667731969291035701558 0.0371026400949295513246688708368644 1.0378084565559724062660337562253132 GT 1 -12582.7136354260446492748454083032834179 0.0564637651376706218663353766788445 0.0853794937148560940554814438670678 1.0892460469673871380914809347608057 GT 1 -53954437589252156056241.6314614568076026220474844760962974 2.2488310957008391220940795276341529 0.0052018229611091883872668772905664 1.0052153995446239505307325084957560 GT 1 -7691741982229801747332321555912.0374511068597455565068895103381985 1.3395402291894153832750968083645908 0.0148229805422625347946075978918796 1.0149339387713673288625459995024016 GT 1 -1831354966.9328929024142571757990347625137264 2.0028100595094021338270974693773388 0.0301813069198592737279018257826051 1.0306461393057431642140462022656286 GT 1 -44284496584652404954975418054.6324856193545859431740262951336260 1.0520362785914273996618843683310046 0.0068091422637471574372201892823343 1.0068324302472636777187926744521438 GT 1 -8187567300049614146874030570535246287255.2849601577457937561480067037293523 1.1164407098227263817428814530305244 0.0128385376361584434580770890739697 1.0129216639067642085602614254278062 GT 1 -18883511360135213141594334.0300635561989364979594236320607417 3.3408141189505557501144291331301044 0.0438265625197967416509341230008491 1.0448159624269747051269026106738696 LT 1 -20098269539776303404520785015111478138497.6248880118143482690285601408002129 0.0025993355455033841500720288088727 0.0387197784716580713389641236831019 1.0394893188350821160802131518316123 GT 1 -70.5540576126175049548355898770676179 2.9884721087879013186383161935992345 0.0530246401040317989549203777318698 1.0559663605963577921299614826569392 LT 2 -34976034546705314559621924426862875692792.4323730896553229783929374993688981 0.8230875615011286966719034451510003 0.0986674312108815622194051841352505 1.1038809787246765969717248996362628 GT 1 -9340464860133829.5978510635319765575588755581205609 1.2645042146820624856273643170975276 0.0032187942668786596680659870655903 1.0032239857283023818773110809872818 GT 1 -8129864.1916092050447568294991312687197039 0.8060656375451268437790582790977628 0.0421268915067514846045516902516623 1.0430399643841110702352204721310496 GT 1 -614932819271824739574726730124.6139734708752406296295975438932113 0.5203200243446458753305698109402180 0.0337366698148941760131988621018292 1.0343188833825426628456708628454385 GT 1 -4282527786423662070327029006.2344436505316598833351045618677827 0.8767047109429719488201614910923758 0.0693248082061867698106355094203879 1.0718449435730330325710459239264372 GT 1 -178607011.5642539588017102360225339238436775 1.0003019699438145291241878912522908 0.0709202442771104275569668308434638 1.0735606926984115112961419562909249 GT 1 -2301748996823905993387694375370121395902847.0010553217204508600146991675496241 0.3015929948374195192639270742742085 0.0120194297222835446948718716153430 1.0120922471384551676112069202820380 GT 1 -2647.5807547761688633500910039149278829 3.9073902670443612179155330911057050 0.0502912398451507100013384374566653 1.0515999096472587243958058258913094 LT 1 -14584811021567030987880096095969346377318134.3028615200352195833148281202918516 4.1116169057543770114934509439809637 0.0355208834003977186626261507684181 1.0361670989188677226054695651456478 LT 1 -22122015552830371825049724.5868167162687191289166212260000677 1.7477745532432091176445025966366174 0.0808417827993549610872998651910108 1.0842970090936040894595311895473773 GT 1 -3102713453541480841310309420861077995928.0782567232804755554961428866565501 0.1237221930783270121856514081014583 0.0062320158848316974191731525316417 1.0062515159545372867149422397324389 GT 1 -33183574899219.7630487529716923425378666009789193 0.4169934710791238170789395624660293 0.0794994883890688881808456212171489 1.0828377225123842597404074345446834 GT 1 -17905638532.8154068749385312417647525219011527 2.4006866400070042055491266358234080 0.0059008984783749458137346235993770 1.0059183775753050573671253973653566 GT 1 -54610418798820878392395.3877622752508497473168231148728712 0.3160119280692512855009414796717460 0.0273777207683246138348302545066013 1.0277594743946175410425207106121047 GT 1 -2087686144776715117440.5288669784105464526838364915499270 0.9665721618474125380637370981537717 0.0801424506166091787145712745707402 1.0835364585543830327898701202081180 GT 1 -8571887.9882523280374665785760247804230339 1.5669335577606506151122750487670624 0.0757543381889035936372115165973396 1.0787773749160960983120650956369035 GT 1 -647885940241097618003.5617237475214046267642504195335007 0.7092684320369462556154963085487962 0.0519681461588309482248295657416085 1.0533671761933399146952474318274742 GT 1 -8934674682729992519024004474256484477.4215610605856871400258341789754916 0.1846118154063669171744056756008215 0.0888205968665151760017983228258844 1.0930154712162691663287001943279553 GT 1 -326731397555900064657.9258710350042150831194287173499366 1.1464540802230684887371367174565532 0.0673521688728519368295943970054725 1.0697276079892052685286123903926386 GT 1 -435770434439962224270132770860576184024805.6601199893883200071781531463244777 0.2223644451709035689124050471387292 0.0335612940929839128473399248150689 1.0341374009614383577660298287973063 GT 1 -9759033692398096326808386880527968123535046.3628314435144639561877458805338666 1.1317613506842365391144612147158133 0.0721159127864989709094735123426684 1.0748484600172772567740221158518912 GT 1 -41122961611737614.0209198726442840300812409873197828 0.6516000969044760021609325103889333 0.0196549081540526856254874149378742 1.0198506347656535746210492737673781 GT 1 -122302.1758122017632945582745494819779642 1.6613166722053121678408435671819652 0.0397933581150364603349716037879341 1.0406067657201314227692423834233581 GT 1 -11298847530458054918.8713860210627462099367506957179740 0.9284580215801194468154079881227788 0.0154611085632431855369977722851343 1.0155818779384079657821660483773989 GT 1 -539214238435619505688167569300302348823816.4136689504296574767827049583750884 5.4499588916133921330597731603714240 0.0723686266858452894854357839155258 1.0751208521436538431997365133167511 LT 1 -50315057729368.8945273471520966585851082543612112 2.4817688141994484005255206599274347 0.0502576445679105205618925488243906 1.0515645359785520027824763727318554 GT 1 -2316978465912597065790248993498296143275.9417293488345107272851339964311577 0.5717881123447794357285898615622407 0.0870806119958081880503352456631042 1.0911076958184683028207058215725620 GT 1 -28706829486842386616313.9716706915691685815590235870423767 1.3106221441114281732585272292447841 0.0201191558481183489535906213158261 1.0203243023100116840859204652773180 GT 1 -45602459181394950008867075.8046513256691002162231703957676346 0.3671126591151731113606443160408527 0.0716430036854119035171369388910299 1.0743389258673059461308250147450159 GT 1 -108011124304474995.1100160270185172987053047242433855 0.0332705092869624848944266273331551 0.0736116014340497688376194549262177 1.0764616953787490324679830870619484 GT 1 -4423543965.8257705351204197885853292510782738 0.2377078197087667809738938047829018 0.0150087339796742947035894309693350 1.0151225048338010179253291499777722 GT 1 -623584689048774299201774.6299608304283797332931715426014886 2.9567019236682249104832845782398665 0.0029040079289444737643349165526389 1.0029082327412114986083954058793819 GT 1 -38294243293782.9974839377013274094634213158488258 3.6696699433197580427568573655002187 0.0951751591417128612060608825609107 1.1000139000275999808657854245561486 LT 1 -10802994865143441.4332222383984638203252706995719013 2.9856324150701641818419416934216989 0.0343267783776983813172571320624112 1.0349297818932669019379357369868795 GT 1 -45.7250957132152376428674378816719095 1.2797944750033814904402927066368920 0.0051698157953698166178403583091149 1.0051832255302546254953184165569381 GT 1 -11751366206384111987062792237886758283216091.3603263158043828873063300597791347 1.9870194739167563967809750470540434 0.0316741366791846422786803941718139 1.0321866126926321221996871856626602 GT 1 -7583277323415765642996121580671030164826970.0041834299722603117426947806834546 1.8180110254074059047161880343452291 0.0944653055387690737727535901573292 1.0992296871400777253751135882130366 GT 1 -16631631398415225444998255136193911563139877.6603311963167124230152641559382156 2.4517725339956315789703623002934347 0.0765621555657857853120160941796299 1.0796517859563232565690277312879664 GT 1 -98861924.3956797534067436922632243949532674 1.5852130469936749584658875620286390 0.0421333929142368570465617641846239 1.0430467517440353096518352211406728 GT 1 -615105733673253702524237560371043.3587259815815902380292391773596609 0.3393533485242670620875785331390567 0.0370697187620334382065406898291614 1.0377742672731975675563040758863991 GT 1 -97033634009671567281.1116571112790041205322970418252741 0.2664825829906114670448269682160022 0.0272499462621154519292145400283254 1.0276281118742121455398022711741134 GT 1 -23572801734334647162205270887080502140737.9275197152067894351715877633291137 0.4744703112795162094440738080694189 0.0684480841021721769586736365787443 1.0709033568404936300176640637645656 GT 1 -20687439837532095785471145389284219855119990.3879846372783299014690636489939673 0.5736949538137921573474050791839922 0.0642109996217256242398692950113133 1.0663652548633062973352248749069833 GT 1 -29879893638678252408781650276425685977743.8630059186395611706704715828191592 0.1944877583689033682050771712912795 0.0902539149887801181055112704138685 1.0945897458668438975952660454953962 GT 1 -14044075508.8359807685839916495365476858428945 1.1885191718293843717473931424703909 0.0607003243447516004517287335100074 1.0626207072864768861964673521698996 GT 1 -17966372.0816747942930154518240467661006493 0.7108877117201156812090065348278057 0.0797899652248607685517352045136367 1.0831533363265968566880395405980639 GT 1 -2971513208255777023925024610644596822577.6421844689658214254514484687622140 1.1351986288458824031693998610832545 0.0339891814893838754794748601766214 1.0345802455459784987346833815841599 GT 1 -1350059099049295438333975345428392289422.6205530046521053839037216652577200 0.5994241959401182451078805608612165 0.0684938323009775014021472121211215 1.0709524677074250540178335849441239 GT 1 -2.4409518162459503280935445697749159 0.2757617264649603959136467496632222 0.0598550679092880220203574080561479 1.0617212325278506792618216598280143 GT 1 -31030161827655217472164466972602.0329471368998141501869935995674310 2.7308471147297676283742948887064909 0.0505215904842324693826124136170810 1.0518424877816205689032328726629454 GT 1 -5820702335481550703425024.0424844705463216313010648424273560 0.1040295549773233419219677150739068 0.0414465028700359379065535377337394 1.0423299046684862309546419985572210 GT 1 -12606432939048807739938233.0167277359916672654868539873067096 2.2205104294599303764505372352789491 0.0428918274140154926525406980547220 1.0438388609117231045877743136102566 GT 1 -1121877847389418.8808723680017459550935032747241195 0.4103322112609827398531000904202713 0.0106206311633423090725738321191423 1.0106774326025654578010178157607203 GT 1 -28777137448215687852533.9584832125977174725899837354451092 2.9430646464186999371221286781851004 0.0858020055660993692928421483461943 1.0897081068804887629762404892479093 LT 1 -639946764829599.2179422977842030119766907909597406 2.1627935692845061742222229834269710 0.0609437827126460342665608023428255 1.0628799322503641648939399612622340 GT 1 -41848898556765481.5531332136675768236081699588320566 0.0974619663958409265630012223848487 0.0493837516383327012540354559643464 1.0506448222051268533965271177247721 GT 1 -10.7234975150936232182038923329136297 0.4769868387854594312339750192550042 0.0412521010076750757229937620183934 1.0421271177061231632304240329777668 GT 1 -883898467941141240728151773.6645418951674370327692984396368573 2.5925271419844753462632180017257627 0.0713249605855449932740783358724113 1.0767341308898423286002996526400256 GT 2 -16118595535390475203296632669688.7241137236587745099472330053626047 0.8047410812032432273796131399099849 0.0830820574082128708023145078490052 1.0867372953623902275711843384125238 GT 1 -21395092460.4581656239389078838712914816908584 1.9696847882209754784790619151218750 0.0311330031349525556503884351082540 1.0316279346493369353289597693376004 GT 1 -116596460753709539279.2889325833242982275407528641216153 0.2993212188713215796576267170857099 0.0170959131353272961720713257079463 1.0172437354523082910123795080691615 GT 1 -5737064650049432339.4030719979423990285024273701586948 0.9302420641016419329304779307013266 0.0364706789940803298949408188413617 1.0371523598253976156654433080704796 GT 1 -831843418810535020213995257886.3871429418897703992200315175160624 0.2523471234406312385139401910428368 0.0311121102959455962871327780886601 1.0316063706846140690101036373560656 GT 1 -6895326037140420145261560781543.5642542032672390618850171000809989 0.0855165095433855921688098216191433 0.0792996438860343750669223330041777 1.0826206419023080297269592163494199 GT 1 -51214192985212366051.8780283543898723514867253558452921 1.1925433374821864992372534726387180 0.0442877529027314244335074007840340 1.0452984079995319590858484869979509 GT 1 -1275254833549849308208.3880816861950589338231098144103583 0.1181081700800031652512528717973096 0.0786797986081827469643168270419193 1.0819476360569369688249240055061854 GT 1 -2164.4576184688715078505604861990423955 1.5997060403706769905856007330680985 0.0488280990246576253714110491735997 1.0500604746481395254112331555922718 GT 1 -64945356097519575857811169965.5426925752830990673585636852568104 0.6286692995601493639029925399030881 0.0747597805331647471320742054571640 1.0777018784641652542680001506725214 GT 1 -307492810194099475892946887968.9468065934771387232283735369435180 1.6575462286675772027515489807444349 0.0626675706331476828129326935565735 1.0647172791225186492540890246996320 GT 1 -15.2450016509785659670479863085728574 0.2000116586310361953658283946161606 0.0008675468386325181038352499538284 1.0008679233751822758084230587226945 GT 1 -514802468.4639204569596626652643606247261764 0.7160972650397400640019799429389508 0.0504086903856796662229494508021309 1.0517235873562717530915352782846241 GT 1 -341350210849.3178500253484107174181386263903761 0.5624914024029083657631426486717401 0.0010511772169932776537074876086993 1.0010517300912438764779827400285176 GT 1 -31861321371746463778.7473249672235379662020794451411796 2.0223603626283205257970115563089601 0.0665721261983215711589443376293092 1.0688915832578361519027665626062041 GT 1 -3473200922653.9342216103766648144549498099877629 0.7086869636261704027404355338718572 0.0876248274278534359475332633435703 1.0917040000642875256006984295457824 GT 1 -11119019.6651410384404021651387793075007189 1.4751158734863374277439191791234662 0.0088947165777662005449419635703969 1.0089345107167336469837935170510307 GT 1 -14287265558967146575791643.0649367796064024966371061254616292 0.0258630391995009461701929409248913 0.0653233295976952341292487056283074 1.0675546165548564417510126972807216 GT 1 -22965421074847603658.6401479904861235825321345008982198 0.4282079075385722618961928460773935 0.0631855599054364022039922975478161 1.0652700525405669834025528025973466 GT 1 -3393710568465720292660219669575457924575201.1869889698910169259753235212262312 0.3618722648019649678196696747650225 0.0050770242325752421108391498865185 1.0050899561089730979944544904899181 GT 1 -150848449724506757.5253046822308803491555318451348206 0.1161836485330539754343519343426315 0.0140100877252301178447137229274461 1.0141091553904894847716668541531946 GT 1 -2.0079613908415154001946665781814140 0.5456776508715684525596683340679339 0.0653901986168816776256308935177288 1.0676261615215849474328644121106733 GT 1 -22.5710353010845975922294412172813662 0.1856034723463539548939949770611004 0.0204469371897280295411649257986390 1.0206588697006264449025674629451329 GT 1 -1243830485177592408.8157668273501497236172376102677703 0.2134428340699074544607251293845653 0.0427450452270435025581752430570400 1.0436855125890753197176098831703775 GT 1 -1384.9785468087102860962841067651478186 0.4973466674599945130525829622383120 0.0991329787780887212105952117549821 1.1043976224750612800792299951261039 GT 1 -4604676820635961582245.7448287713455111263779814918521445 0.1900345749402310589123943711637505 0.0874901668688513345893017779915502 1.0915564175494159981733649388171025 GT 1 -582659783658317.0217383017317697605396412893033854 1.6315899462020103999163601109595181 0.0287482570065793153760008652675505 1.0291695827140696015058649166982755 GT 1 -2004589849370441129.6628549014872981508031014644011782 0.2325388161333156590742381557894090 0.0990683759717542288324100850221311 1.1043259132343728383880234671041424 GT 1 -128148921331859818.4971342516512807785105490220617883 0.4640823838627058161433201669897717 0.0998180945378290502001404766978536 1.1051584189005617845854267391126391 GT 1 -53717186854583670.8184524591777722468253738459261298 0.2260442861386861164909655425134370 0.0397628178536735418108653737211376 1.0405749602999641360289995287154453 GT 1 -627126867837670608646279102650470619933489.5329309620377571339694610930384904 2.2187855805224029086922424917160793 0.0364083054792477111725733678494096 1.0370876274973789182518480910712833 GT 1 -113.0522725550980217415774482720565232 0.9691207194403265009673334958803327 0.0749204104090086846752185076631833 1.0778755023701096526932953979742068 GT 1 -101759269625432924.6994342468924509866895878411730649 0.7807493840756493537215850904077589 0.0017924789423052674430974966682005 1.0017940873550025396757614344811408 GT 1 -3198174264758900.6794827818755769042755730031248311 1.7996059943907582890209435684830802 0.0533168743699115478860382616767873 1.0547908504171670715207226123441854 GT 1 -9632670621279261634428.7503793594673279790380945683745888 0.1747837027047961109175709990707843 0.0178557564373420334511003611097971 1.0180170938762410938216020979694417 GT 1 -26995830242844243775347.5188929441576426199677797321877179 2.7759802207984580934238950139733920 0.0629129273217174546351863847982815 1.0670902140039810980697569827729884 LT 2 -225186789.5604565148442934578907685400996074 1.1130350552302452526366068669557412 0.0790766196354248314628045739254276 1.0823784379740221496965999257351054 GT 1 -61077573828.3433658606134214487177988922725178 6.2993893067345940916383750575390116 0.0604797028068742067827489249104695 1.0623858561117185566215464674805421 LT 1 -69044886898870449731807280889017646034.0663261921784401535055897082385166 0.2336768605667007846698294789058408 0.0280328577921234966613227247901164 1.0284332794059608936009970229449175 GT 1 -2871310180303195.6911290052396295253197619613298868 0.0250859310010804235385915537330982 0.0161870718624391905666180928381116 1.0163195136851209521236580170615860 GT 1 -222082946798964.8146323305652221800441586551369996 0.1721271300546409306620256027313101 0.0044005946473147803092457791636597 1.0044103057642046977158683439536461 GT 1 -6930430206849959541911018265072346451904184.5450278084440122977364036472921594 1.3466783062733450937628600890131259 0.0765108776656525625253429953202481 1.0795962581514137687688846919313931 GT 1 -2101524468.8249826473077704797750253659490909 0.3567525451681765255899302173460552 0.0574643103261265633658657857647740 1.0591814933489266027954187456882361 GT 1 -4237284528504532432971324.5210476956564211597385794765316401 2.9609457439101437183427570546671159 0.0786550769945621668586341054689773 1.0819208036029063972905466457759433 LT 1 -300698274169164114.1496461171909260791686180275291804 1.8867982220254530364194114370923955 0.0613917649731242741284334579932686 1.0633571019261560491868379470654885 GT 1 -5934271.4301370352904614212157493144705943 1.1550351139134776357226584172841216 0.0338172759016014898708846006621423 1.0344023072758776297223907323798674 GT 1 -7.0530338159192172863016085157820400 0.6804873674569685696932090928998853 0.0450707333311900797620065175038845 1.0461180075598340698896650001028490 GT 1 -163831154113335279463128460002.3828263780598644409132187167576180 0.9455452773874209839046924965671901 0.0649207336759662506437372078240419 1.0671239764696529338598364714408616 GT 1 -2783647584.2915352447925687412761023408768443 0.0633876339778205017047062054783294 0.0855540222565350939137108165932125 1.0894368858939463071813888804847823 GT 1 -1127349977394318.2039437474564538283889725475871116 0.0101327257613200411423571229191776 0.0074046376733056216618974195726933 1.0074321880876519872681648103114245 GT 1 -3348030025276645911689901876804831.8102100661694186434613618499783513 0.5333617984994045669367803913771115 0.0990117042071049645123539988492900 1.1042630116991330534600410298573251 GT 1 -2379610926.6556083568357069295517159803483786 1.5165117897483957483239602490461430 0.0123794525384160681982171326936156 1.0124567162783895348336286135055565 GT 1 -18903465259058678192957514.7294958109094228552954049945457130 1.0852647622793705622557712879215309 0.0166442053533208731080571112570861 1.0167842765636840601800032643524257 GT 1 -419185539039826433382347445449122909459832.4250029739554737455146820545135566 1.3353309375985009248420447988126686 0.0718436145726655436513626059726021 1.0745550416141757294915509629351958 GT 1 -1966232375122402.1706107810016634705217859519808155 0.0608231546073001191092697843122736 0.0311742666290379138719280954448581 1.0316705249872658698164597689737140 GT 1 -4449945715072838842091278277607.5374369614025123663688986046253687 0.0424981105978248982870884783877896 0.0795591248692203012470584971996282 1.0829025116258256440814321507148353 GT 1 -877.5544244372140749648543044933134782 1.9212979335957437986406090799700004 0.0955131983594331229306889537995518 1.1003875661376424262845788320113107 GT 1 -3573675821765.9087172767318014226390218554815037 0.4640903855154065433875014279090624 0.0995595790688167672491482672859281 1.1048712787635111745691895705395187 GT 1 -33204579384804180323294031.9533041264745604713562665392011459 0.9634010180946053101482587244364812 0.0622056231767178994555069779212354 1.0642245684810301342567989781310876 GT 1 -449747529510230684264.1144225454276012906939114072976795 0.1582063172396198116692878968759338 0.0875396420457051839885590793889225 1.0916106378069387181803410445428749 GT 1 -1594494002461381998239190688483.6432102661493414548248562533173397 1.5328896151097062667124510895462286 0.0654479847137716582150947256812067 1.0676879925480836156962266872324649 GT 1 -122152939.7342056184071425141128882279979460 0.0485496159049936322328491542763799 0.0617978794021725966687513827257312 1.0637898728069961629559676224762638 GT 1 -1182.0908171002179196367798967764754741 1.5927172615858344100463756141834669 0.0507777361337964684017015926338296 1.0521122992950506080158675410816328 GT 1 -271415401765695689470987725637425.6254519629938942930349170774384812 0.0776440461880151052693227194346977 0.0680126951001038361495403147914916 1.0704360857413600687525887075805855 GT 1 -1315270625485349357763596772147853.8341062709621403982132584212534835 0.5594095749850013324815022484500586 0.0119023440179368262464795386772168 1.0119737440317179897746995407238133 GT 1 -893219273811889726301626436641059708808384.3135810964339014765271283805328033 0.1773934227877953495867657434113934 0.0238857914707961836573087090662517 1.0241756824793324773327611055307479 GT 1 -35597686117775.5949575881690305877427321915776509 1.6969496194612235482505344669190641 0.0822691367923484344932307350957983 1.0858511086802356475215491509885282 GT 1 -2065259789304658957630.7869611588701556656035380335246405 0.6632251809696938144422834150756661 0.0913327904250134413319671107688361 1.0957763579159723737502195864628984 GT 1 -3917408596602183801846757906528140580.9786813229878699592140705807656171 0.6067892506760233491557619373449479 0.0969061412701275633380295964618994 1.1019287899590332040228689561108826 GT 1 -747851070973880313791423657.6528502735045261956172547291358526 0.0468326673206777355273076510738520 0.0075607546859209806532243789714641 1.0075894820837730771182682932202622 GT 1 -13444680535249640570332623.5867791242179041811398617343709145 1.5954030691045978208759106487501595 0.0245325039798128504789465148077855 1.0248384398019506601408348894834233 GT 1 -539056631677461056733674356123080408303.3970129086082908991356161801962210 1.1478227900878442997514518782891475 0.0616710825284258547763489985260219 1.0636547331568999263790145064590533 GT 1 -72661169384807363086701076770810988670190.2781597150372323732604354387398418 0.2154906200512426433872920951858944 0.0595556056481739910601482357922963 1.0614027554851125270849013556821415 GT 1 -9970644410174160973963.2017487204760798081191641354380901 4.3612509523616145215057680808839854 0.0771365499826426388095317805783433 1.0802739969000237567795480929694161 LT 1 -13118906384150300355372454625.1122062076651784109565865754155684 0.9070471504201682670385291025491828 0.0858881917561519068248458080776342 1.0898023865151438404136688751696774 GT 1 -5891271071020059666.0509008218497822908500669717183294 0.8517641053898240433872387367396362 0.0369141012346466534778226533154665 1.0376126720287327432843741207323875 GT 1 -44940661608505098867608688074773375249.9658443846236899114032858248988183 0.2857419409891987091196127786145787 0.0087229382278187560984436546558752 1.0087612057528412862295364377806062 GT 1 -27880880597646749060581522897578811879.3367157883977326519937489133066981 0.0694899164994924004493312099724791 0.0486246253406661530489435708869939 1.0498465785863984428071848486128010 GT 1 -92736504634143220769481257631136.7008584463940810923592874492880717 0.2121335026597908241122830393356696 0.0325538155728955409005135348901506 1.0330954789563932147366681594269508 GT 1 -113470026939821027.1371823672657896558450479148558982 0.9247135753271229484659261052363785 0.0419183874730508264098674289235338 1.0428223141106090605043961005302226 GT 1 -739628432104641443184664634.2357584488006554796921015664569465 0.8664502157313700592213251332846693 0.0376636879465411323091909672763770 1.0383912926819612726640310275030942 GT 1 -11511057059407.3820067226355736366045713195228166 0.1549168389372083988847249228768156 0.0262745282414483306828696375171871 1.0266258715793409395893460515514381 GT 1 -3727165358157419.9197582440337101224309235207438516 0.1738835834022153836593541419535335 0.0996977205391273325581439006882388 1.1050247059805716416512819746491086 GT 1 -19518272909946018.8305037172020550802857519096812185 0.0552033540665093593423215536274496 0.0814556151082099174317667726570643 1.0849650522590047878292249365794616 GT 1 -52720.1368665843139721595033718776714938 2.7238179360091307747755412090852624 0.0077120434837652792078540975774654 1.0077419350737837952238007096467539 GT 1 -3466159254372.4232301690334361380830215266440468 0.1129370936250099020634426463464392 0.0352980713184266099401520476674140 1.0359361075523427112507580679486517 GT 1 -2149894618554829401876805055.1251109466086089236622144421982081 0.9219331078642781866737051835579463 0.0247463645722826595936304632852011 1.0250577029143237500660018330808357 GT 1 -1.1886240510504658169601360274843102 0.3609661917187911540309199124139121 0.0423629555480993123019976897009477 1.0432864408041707178410535202186157 GT 1 -83627524117568530461012174.1511235883100754866607255255267638 0.6436340588864509591591398205868578 0.0795129885240796165373798997568946 1.0828523887008745914621988109088696 GT 1 -784413403155146337075043726972283111.6337818791135333617487819116145301 0.9819190173419818150941981162298625 0.0538861946107050812488644025635877 1.0553924154859098092958723516503509 GT 1 -1073401655853097758856763.2831227883536868554346856121952559 0.7414253503415513170157132931519934 0.0412254114374010181839494572726000 1.0420992801496418167657967997505177 GT 1 -554732.1760626103989637632198826884621142 0.4167610929644471918387964654310452 0.0012285002919259297112795338337622 1.0012292555170024088673711636516237 GT 1 -27774369651404.4303523495044482816219031003904587 1.7396033040562048317637616930697053 0.0135060560256715578913668960136045 1.0135980924391429448907919054043076 GT 1 -9541590497643.5070004048633195521955884758098167 0.7186619374486456238900824862173832 0.0423706054943119035581945291553188 1.0432944291926863079021964141744005 GT 1 -7536573856752398031939654917441.4088491486414737728785213268386141 0.9200236957392455027399040861223005 0.0942970441356956516670782090906868 1.0990438899825073529881136617764358 GT 1 -179521237229.2943123097646118322570506823161654 5.0204519260303798060274562490215368 0.0431715027665166935368209461447404 1.0441311123314298928937909055545121 LT 1 -753772889880321176303841963.0605713779105684618591058193398725 0.2336821750067865694668587123191450 0.0833436116359013949446938671397135 1.0870225897462030988661005414565767 GT 1 -42233532784080071587.3937263915440580264368283767770154 0.3871670944602581651528418612386681 0.0624630385503297314710042836191750 1.0644990963684226429514554022739812 GT 1 -31780237690791054.0628348474778833076399195540894405 0.0888853078408729518856215817441439 0.0694173977963450938690796750828982 1.0719444349927958396727816229838427 GT 1 -2199943.2323946702676660551491561341113060 0.3467382040356212019678777317401317 0.0842991585223935267282377315594914 1.0880655599242332335217762086062008 GT 1 -4934201860.9468011730122547267927072291784580 1.5788320131773793439279414062775865 0.0769713244295902202684719651047471 1.0800949771716189120701230063848681 GT 1 -602166435845456114.5623019573059840271880532335977425 0.2297287783369428827641429994960705 0.0329740267425332123405607928370874 1.0335299242644610773336203868180248 GT 1 -2179062581569816094859780.6681795488028796234054102497291635 0.5882049972856114057914382520016014 0.0445554107421393858843232801089064 1.0455785083409234878632758188747127 GT 1 -86463478272538.4627082597123625367994261936332862 0.0271548482630049190592255580045292 0.0766164528887460598831476781426322 1.0797105867945900060681440630550598 GT 1 -13448772788435.5328192002503287255482256143761762 1.7289905244612267324879846736860220 0.0473769798706031740033176570393277 1.0485360253295761297095491639554922 GT 1 -8255052112383614.0065079499239340924480211112992529 0.5022532233326790384302634193931850 0.0254350373873089477583975768016668 1.0257640997497581051580665193381031 GT 1 -562009447477284144981758400894204594830.7705451492325811805346024779004890 0.3012670181334688689162931959642837 0.0497672830623392650431443014191182 1.0510483591890878671201649110842930 GT 1 -232643006036239610123377257321678350239.3344530761739961838253355931336153 0.0936849221813184363998666241778274 0.0309949364537111948059406250782357 1.0314854415670581531184659326372506 GT 1 -32785408386413618734.8901710264651124317317247487764132 0.1481263599037902597657479149848524 0.0660930321249665606253031377675779 1.0683784518438289031414573437744664 GT 1 -136093713366601906176725594278249034453562.7064294123223993425668204202616593 0.3415283960691977166607519540645773 0.0331685681377028870050855904786911 1.0337311194459784773599607675336816 GT 1 -2119820857519632365955869787083179706367.6325869646080855263567810700735014 1.9367894127112718704531734535335883 0.0244066465533747186383246736274179 1.0247094254489159017509472359225990 GT 1 -24908614623812840362088293343059756109.7891878175640918873799735267116639 4.3335611546748297077452337716769518 0.0094245273487622928335819513494956 1.0094692192281784373125515832221736 GT 1 -13025269118006444295912918600363637372868.1333314087173067975622568532070547 0.6979707153922581742849399908992198 0.0261978347734465060251095803202294 1.0265471117542324283818023160241697 GT 1 -534999221933809781090992343.7972751538827554870528346976607836 1.1240289244146259118702258636895387 0.0608679639472622662450066967381798 1.0627991961843280587803363854252492 GT 1 -16948161.3313878040616820594890146131911767 0.6817207335711072692315017710920419 0.0192952190361710429703426327870184 1.0194838015434063553837645648326775 GT 1 -152993713206967912012.4460938602421721943153546977618850 0.2038770985246380451276013457283476 0.0174886728674500574425168106455676 1.0176434064170863262677169497786437 GT 1 -25875240293264817.7631578274434488402839871750163895 0.0291386057974401961022895450428084 0.0716515401560261584509702233473661 1.0743481211552133524538754830341368 GT 1 -393376984712033.7546910255208994811542592817217115 0.4562552265907022086788200217371641 0.0285968678876705066096035514462532 1.0290137247475771991026259293102222 GT 1 -32860192061788802725766689948608.7568184518245570214826430322618092 0.1442363176831911432949392137293149 0.0690800383665492401424535715317784 1.0715819757192572764260508040351200 GT 1 -6558.6203729476033792407803606912061414 0.0081076060793277293479280940962725 0.0836728765297720830609739288130133 1.0873818563683919357306463746946009 GT 1 -202633491626960619574176185965279235059883.0908321895651760011804262756262827 0.4246353937644686156910955445643361 0.0298402877686698433507702120920428 1.0302945692534494961464426164614903 GT 1 -335657685381801930617340316488395293439.1911334943926885851360415411434169 1.6279045485361896409385760504094696 0.0181582284546747829232797858019699 1.0183251123828876887968345668887375 GT 1 -333465060194040660203811578104033884117612.3118197072718535007918411269385889 2.0816996678773693959039026028685645 0.0037953104264350694620543665876057 1.0038025308921138771558412820441659 GT 1 -604749416.7800353086401234079347963055065558 1.2869576630031823372885926644181483 0.0868843223220955678073657273433339 1.0908927057800427784905954009385840 GT 1 -1084830601090298792789559585167.6269960419324056562610956909483443 3.7628938855931318135270484728036435 0.0648682349874457099564235075041895 1.0670678344753488893058789625447884 LT 1 -36224302810568451146530469940.7850463232130803878088718285210060 2.9706552250687580578426485944901770 0.0074431967211036725250687085739259 1.0074710355356924625290029349047092 GT 1 -449342.5641522450718657259572658235197938 0.1698560812159608224148376423580379 0.0448376201650387746871081570521089 1.0458739217142827727705487240453612 GT 1 -68413191555684000596221221832727842913250.1318275519483388273203218744366084 1.6868791171650996182505130768367479 0.0964656192435790275165333576341471 1.1014411168167110231235546442582021 GT 1 -6740808561426349258215178726032.2357618839813031387029397763473424 0.1148557538544586067833136146956877 0.0580643483527370561658247881939700 1.0598183170922564814893530083258849 GT 1 -12529917385739160463272.5015435824646817595589155539118994 0.6478436268264988513348856353389132 0.0476383796898028075085979409953075 1.0488104630497458279468301132862640 GT 1 -7916130587192644094490.5757874213389958212740093708451419 0.4042159741104947810413330667492065 0.0623362767950677206328872676155235 1.0643638982997653204185958984735115 GT 1 -38968249838631655699163697.7404370870063610910134115792216251 1.3264532141647411020375139444657584 0.0991108126241768361187957366651738 1.1043730174216059573974216972146035 GT 1 -24603861131030166.2228438491817118167549388398158746 0.5530026865409499650140658929513452 0.0315551836055817920372618522229795 1.0320637761844194805562525887104607 GT 1 -29438819852584132595539587117168859384338.7657026379838479957453421250273172 1.7990638359560785712646049075776248 0.0342069156497372066001061226263330 1.0348056661085447962320165327867594 GT 1 -361701460689.0085531173455141919189045627503876 0.8263128138521825711098770339306871 0.0306960446211139367122869987769832 1.0311770368369062476855143777716273 GT 1 -412221765739637426852201.8984013336441675700637868732092053 1.1839937836612388774208098609674765 0.0595688068230799646565560013349538 1.0614167927505156420126990380894487 GT 1 -5066479142938514780953148887249667384717.0817190360083541067212414320114260 0.1500590386586913596313652262970685 0.0406276300279475281512556440207434 1.0414759896075418635668083672294000 GT 1 -31416121124248.1918418013227412485316552157060872 1.1305206891517743187376726773251250 0.0602663685645081230619642028333590 1.0621588146884893143701113603036959 GT 1 -597253041423673718828130014263333234137.6734898469123946422433214302163508 0.7367294220005638274754418301666373 0.0897719451580253869605842433639480 1.0940601011521551514359776170401911 GT 1 -18080267.6447140280880648692575870806284637 0.0212617524063437078761303611229864 0.0207585401540404560955997863824248 1.0209770275914483596276333770351031 GT 1 -4258333439166468667779836479166770936432802.2063485551357863188547596965162494 1.0756035509062695119511286324444901 0.0823116967657724095236664857953065 1.0858974849785872761526357857058862 GT 1 -3345622346636782107399609474377928426040842.6177513974208999593005622233341891 0.0743592622326377919547449319646509 0.0746918392156555409127211222780597 1.0776284501568972096883884857753881 GT 1 -498354881226063716903060607190919.2118545334103036621632285856037630 0.2118760296401497262087370797406116 0.0857957987950765072103397556433096 1.0897013175963392574078635814541602 GT 1 -2.8845480852519715227919451234346885 0.4290955664341791982955099667659574 0.0813803151138066000537331165593692 1.0848830780949285399189876151144610 GT 1 -362639230973352843.8154163578609724967769366811630586 1.7748807907135187290276503211479598 0.0129483345455883681988192995918483 1.0130328949668721590635890307646174 GT 1 -1174980335361307391066391990230814626664.0620551444264264416717286715986806 1.7248668090859469143242417386106124 0.0122652202819662784720173872036895 1.0123410588520972982959003135935052 GT 1 -14127556475981189360084353379797261811627.2009742693031872632213952033047075 0.2483055565463196150006297439883662 0.0971259636710407465344042950283895 1.1021722299477508705267151409707143 GT 1 -15614816666212026115591602335262241.4348195355811550022749065572772446 0.7189126310170480253808146040887474 0.0379893843260524700020103099736794 1.0387297933732123105485451953905656 GT 1 -15057285450067420836227.7043936242027741532199457657531629 0.0485292835824680475920735373039124 0.0923572751951243065764706799355777 1.0969044526968965060990196266450303 GT 1 -1076542338962810209587248232.3173739441978434392744870494491161 0.2098232096917591705601178829662116 0.0878290324068349239393217653528291 1.0919278420108832205911562431203778 GT 1 -8986714533237.6290985624791169639926487225057826 3.0100361719478018218394965529935938 0.0706540529706649601595039634017387 1.0732742230183251177159547368158463 LT 1 -7812901568426489376670728895.4593522314945373065177863931607773 0.2515406183387908661872175359086416 0.0429352587530570707808186712350954 1.0438842396115627804191259093990602 GT 1 -1139507340996.3260602861472136554719945989641256 1.0687182471279277050096696701066518 0.0839238482801106668119825340819454 1.0876557826981534489454229100893370 GT 1 -1275.4574286744472457194121228318348990 1.5797939086974477180329898007580743 0.0455310607201860645173163431709769 1.0466001776975038809972224398993182 GT 1 -5530936444954040435642756450908025.8670631160356368354239937962259085 0.8726974756926203188125914503429202 0.0811435146340731261945952912574890 1.0846253327321552930047472372088158 GT 1 -37540.5156032619224996148431467299340816 0.3226140685792497415392262956457718 0.0811616280995668382133790094644840 1.0846450459782610616959523431231388 GT 1 -7876369025240536944345273966356554472341183.0827874034748869850818942677107406 1.0576810554475481731166204743557355 0.0616997855834669175431045241397818 1.0636853231701908555162745376498115 GT 1 -1244610748393562995132363132097853623.8239876576451286802167450061751585 0.0482986466591966889079788186417096 0.0107672400526951865823985408006577 1.0108256262656774826325090398278305 GT 1 -2023158697773732214173245449183839441656.4919423345476753197684700143062136 0.7122662967927223000665658265117159 0.0243496406249021315456312714244024 1.0246509950969160804220002451097290 GT 1 -119118.1166803703839661660802848014969878 0.2661062537727610002270742769925492 0.0629937760906334754712595161199689 1.0650653543865154695747148986577550 GT 1 -21439.7026014240653249526277075072772967 0.9028579219119660680210593064962562 0.0998480346443815903066939314312026 1.1051916795163182388786594893197806 GT 1 -643589732163.9106050225148518562085876478004188 0.4353825381004612915211186617483289 0.0523613024990131310262564011866821 1.0537819701516475274749281255709027 GT 1 -1.7203536235442476878320765779585285 0.3217013308948736458138508405060197 0.0224449836458877343048810848895812 1.0227007059912244400829479276867659 GT 1 -30446095543497969.0336798253434254146422630772261217 0.0913661850011582110638060874089550 0.0552784726548487737270975592988819 1.0568650749731351632460320187900763 GT 1 -877418638443407543919.3428185727981683372396325772710404 0.6238780178751375655113213500895519 0.0113303712379831289345026800299713 1.0113950489062672624126998832344873 GT 1 -1952.5613549804263020287182566111930346 0.1841639205747340803145419260993021 0.0861411864277766762911070544386604 1.0900791903873951359313692234720529 GT 1 -18523254832121789.9746295855195351432084680443753418 1.3184174593359052769777983304804386 0.0698239185140941522619289664651192 1.0723813758253498507614315862331765 GT 1 -9330666455333858788973858106347032340.9506670554278565530550193836829586 0.4369886990248312274319294288039091 0.0002173124711991877777997857829420 1.0002173360869756542542689282236731 GT 1 -2417756981029796824033997815161.7080822379611232884226141127019005 0.0217916220762298751501119260691525 0.0756593980349573729867597708169120 1.0786746584176669058847751282689340 GT 1 -310204143195461665513101647780538250310.6321612705089813759980213268260992 0.2403405883935083087252321465044509 0.0090970775566361814560008721823614 1.0091387086398040558601262460499710 GT 1 -5813252519239139869.4508518471657570868481760052109202 1.1167695702028012249393672920462914 0.0414890280992813638809777898449754 1.0423742696128471296217348829450572 GT 1 -409399202610320223685354.6625332849129556915610416185641104 0.3553952086329703905727466872048243 0.0801591962047726310346079128483599 1.0835546632651009413873117887080083 GT 1 -33461142155881845757878.7818361162858506290693939109317620 1.3569896506165132213207556685966052 0.0992125113319301684502295684584345 1.1044859108271915293446964080071821 GT 1 -42075015810969856313703443.8448751516009176513348297717030084 1.8299060698651245725819130045975817 0.0990710237636910615993854418992426 1.1043288521875154354522740334380712 GT 1 -1422836618013590679721709925310442413865.1331241938307987634834282072797723 1.9134908132989668339407213683531457 0.0321566063873071984164520648421563 1.0326849882518773245356270521284641 GT 1 -1471262044352805237.1262559142375854342406982484899223 0.3478166973142284114276847971791478 0.0984855113269492650043815808287317 1.1036791647285344819895717355321826 GT 1 -42842381489766394624076416949635392406159.6971165412569146929618009392172595 0.3018858809339328608730895502650031 0.0509623493655564306264474496337836 1.0523068071503045291580501287576665 GT 1 -17644.9052709456229670927996970465401609 2.0778026010642645106889639909210156 0.0687932936868069069058332311164365 1.0712740002340826010075572543929950 GT 1 -1.9276552254960794930288033745014594 1.7978105040636670906607439420587350 0.0450195071725814409982560445200849 1.0460643650687517328673309699524176 GT 1 -19936378163465.1824649293573128421749029133809449 0.8390319121756500897240793464637716 0.0745057248817575975175270751432282 1.0774273327054448472458488523993331 GT 1 -1408323805731225573241255736540116.4713219525466245456282303327784451 0.3256870802442912991318721916669771 0.0886255825091568204839784007815281 1.0928014700099445155401717059576345 GT 1 -22098444365435931339127000286520061.2411869601407693984194373719176867 1.8034191972069523439143972742158089 0.0237209272103439562413373890125448 1.0240067982054297178038598798688138 GT 1 -439739416786164098265796.3154452320840077754166396774160475 0.1115134918425092070953837225623997 0.0539445087752222181309011908472907 1.0554540528506423929955311084712063 GT 1 -93287849879703702489480.6098161876555563965164915055536808 1.1829590476078976547684397371494336 0.0589850863033670902323030834165139 1.0607962907480302627720446865629320 GT 1 -21108758410840.6057166492085841366319650078423557 0.1961462635176098855968637653373486 0.0957444027302712229614780337492388 1.1006432182108582107836710675947306 GT 1 -88428824270511467338989.1038508562985725362084831262480513 0.2664705629614073442221996377698404 0.0434866794276845100643162796341607 1.0444605638294167878169136009155878 GT 1 -93559926231900674868230549838585.7623537985592624901553284923683203 0.6159561900788789814386126296717229 0.0231943104435036608133507289886024 1.0234675315133177482435049084894916 GT 1 -757735927753010365722082.9408370737323931139472093828903343 3.8077824802423972816686949917652748 0.0304371048385633104731678516648297 1.0309099325909205442918072186061109 LT 1 -528815501423547296399783064418276.6131301595014398674130578942597456 2.9024499435893207962068253123983511 0.0713937398538749039084435401559908 1.0740704619306428351945747739976804 LT 1 -13404762.9610476807439878976218373522142276 0.3763597969194951910791517802088018 0.0623394138867991656907537154311980 1.0643672439522648484910679843150910 GT 1 -980864214751121328.5534334573811798046742857643995475 0.6250903028223682080405941293524761 0.0265565619244945845548070361928056 1.0269155574752015058514271085507223 GT 1 -38489443584611905091255.0400668088451055415391618903829865 1.8761415406340171187687686724701310 0.0357544254111495908026176438719303 1.0364092713895787756257460984965117 GT 1 -371880997195639677930.4572157765230064930045449059352152 0.7318098010987720254438719974250506 0.0295877729723718469101230143479292 1.0300343214444250735927623276599564 GT 1 -14165495377065096.1117311204357400879857510744079535 0.1714275095540303387470269443845875 0.0633695358701744983082137464324287 1.0654664564646051563227978810095195 GT 1 -64727139264054867906899146297558628074.3418252779460956604848139186233925 1.0557509085524718698398482036275451 0.0179522486451235329017344760207111 1.0181153451756138652913803170515752 GT 1 -25463929077411782634868641109523.9599568939231285009226315152150159 0.5784338911276028404109103602071656 0.0353924417875361427029332787659873 1.0360339357855275503430506677212720 GT 1 -54774499442968008525.2598724625205638124210602145144946 0.6981612858102062136308135841160691 0.0670848930040317326938402389827266 1.0694410715607770924131664426298290 GT 1 -76223044806452251502649064992693.6671197499855475384164214325652866 2.5982060184205814484410234518565371 0.0848207024684900643774613663101268 1.0925633856864337680360326313480965 LT 2 -32794853838177353060261067759041433785783.2247918420561454333918183200371137 0.7689879797626012433244580130611348 0.0658328884859844352842702951537749 1.0680999365070614940279596462001687 GT 1 -14383651699306543734.0135183584730023235327596051510873 1.1438676236761144449532368666814757 0.0825653833975711552456198324884273 1.0861739641513691469244678583304425 GT 1 -387131785062649869.2834384564541609010607825431253978 0.8611828399117824722213835924767730 0.0995154279075145461245053112440895 1.1048222471142397202147438846730061 GT 1 -3.0644706541406985617507425215448061 0.0987139030069886549897784330881587 0.0283263547976830352687012505519656 1.0287352868650463703116950246298440 GT 1 -142.0007689718866772079131002392254321 1.9604661764604169255099496221218230 0.0138800501420426949393391491836651 1.0139772787786710577483594351047546 GT 1 -240580875.7620161514511874893758808256997133 2.4627944804177691726015429630205130 0.0278004086952975135275076283288787 1.0281941547527850390995395465625717 GT 1 -29292527794826849490224636464199.2736221521701337716767731214178877 0.7482481305503259689401897371605942 0.0645696065792994326620046106435207 1.0667485417864243518950586585497432 GT 1 -1150198693958617694378715176.7707511197305713631439442661968423 0.0614235623053221211280331269069074 0.0150871108902578736019853868542209 1.0152020791729086596810551909020270 GT 1 -3486.7585468455208156190352645525375352 2.5651565586885403697084969361220675 0.0601497945905694183910390247754399 1.0620347723640098079375414665465376 GT 1 -29.7408076161286968756544838877573126 1.4376297756972688151321798612076250 0.0925120468418118641928773595382072 1.0970749876880590526005190564851527 GT 1 -3086784617694748004689917856498568318275969.7053795631803702523551528675342940 0.9592545175887510700037796682139980 0.0045031290569331720132559409212369 1.0045132986841651366569636979491887 GT 1 -63187133254993631007325942678.6579091344215515233233619608913353 7.4352604102901406871206016826263206 0.0799913105402615484301295025394384 1.0833721639187223037971294046926856 LT 1 -3362167342726306.9220278240037875617319327921675708 1.3325153023644985325214633345026939 0.0447160644952804155272873307825049 1.0457466680260253451701697249476150 GT 1 -896533362665.6247204966781005135417022162949708 0.0004757864553239471339116892592626 0.0018814382609146198657085661547055 1.0018832103889946685417882523220516 GT 1 -5866837751530937241.2246588174854867688351737116946729 0.0281868739644224996055518857295283 0.0013534184802850342994298276421605 1.0013543351782871211218744162445588 GT 1 -706185987029.1434078918199551387832167586743285 0.4208078904973222635845582035154534 0.0567509655654310704113199690298318 1.0584249437962650780878616279084459 GT 1 -25303943549273940574800879785166.6213089265985866038344738370344236 1.2204846222915879300646807981094842 0.0600256888682262453162909491275114 1.0619027326747394157024037673675813 GT 1 -7750637626944669131337108768080159718389375.7608652415270639381393153678017503 1.6596842034133593198921811797006437 0.0737142814885128497712048683282667 1.0765725406198216394370969400803835 GT 1 -326657.1672727005425640468404785986707665 2.2388196165629660878116605149465562 0.0943176317840590121387780437812118 1.0990666213672553227413644851346821 GT 1 -217525168674061338134327785920639110575846.1367505235224936826743158311787380 0.8921496872965190361078023779812187 0.0935469416898008899321813404639562 1.0982160335696295153379725624747066 GT 1 -91629027.3975207709219864118681260451454859 0.1052694234559725409109063312012006 0.0271457661490139868896897670701489 1.0275210190662186543650157007943326 GT 1 -9275689108199.1856564016340162083771361396196236 0.2440440792680402187894031286818313 0.0324110492902504803269750233073830 1.0329479195862177370842211824218535 GT 1 -61860185815592272420778.5902624148416696299771951084406950 0.9474635119377480447712293569304216 0.0738608007979162762590257415783579 1.0767307325209431419980759413728295 GT 1 -922305206.4652297752491970785030974135993191 0.7363766340736525127187711147785547 0.0370668875205294566079995438717876 1.0377713270423242670606426502175783 GT 1 -127682887109784103797521.1009654913864641205019304443882778 1.1322312085572198859329937383472248 0.0267294213615526353570787705593665 1.0270931484680522672428256764021431 GT 1 -51639554500.7301062475545838493876211310060039 0.8875727903221935785901883622104918 0.0582081311057616299560398839516544 1.0599709747900773130183298139423117 GT 1 -303799.0585128367198679358694121761676855 1.8291291767702871393690451665569238 0.0296106231400998890997370236843166 1.0300578685887424813095765719534402 GT 1 -1851718.4236970561948457201735183803240715 1.5078872292007851054364807990571155 0.0778345577834663201310845761871913 1.0810306331099632690840439691999870 GT 1 -7575526989017798696254434800817784951388.5163014044461067787583839736023909 0.5188905756150318861105293544713046 0.0945990179629714382467870386741559 1.0993773593364794320306582779380656 GT 1 -247110838112835063.2769156755857793514223338082894162 0.0096807404333445016352158580933117 0.0042358721845364741074077883626322 1.0042448689060817235233616278145886 GT 1 -5885307635089801470874255761613147514666040.0813392263368497178617584255314897 0.0617048137394623967326127210106081 0.0075683659081176080466039691867792 1.0075971513203724297275567971201444 GT 1 -54.7991851580068160524209093142535908 0.5854620599242038952455190813637863 0.0062930223042687950224469696439847 1.0063129068355581691442796512993113 GT 1 -27614843766991.8084991326667404185941323086510404 0.2587075292979059883824011704133727 0.0704890947727292896860372846774118 1.0730967395309135551187386395436730 GT 1 -106100.6936774391690783687985089787377826 0.8637760578358552806211042263324242 0.0935729951129759642597301864477606 1.0982447761474820399542105941125923 GT 1 -6.1892090065382611828657625435844395 0.5515299925774617530473029041106876 0.0878771468472486387686246643623862 1.0919805905757006993873253388355444 GT 1 -108.1682824465332690407680322016083660 0.9157276861812910751007289374461244 0.0168505959171529050066722517021906 1.0169941825072057736622948402665665 GT 1 -74199924.3551859679199903318727102446283462 0.1169987358509965914487232321712856 0.0630660640239429204388717215649388 1.0651425051247223086163633735133053 GT 1 -20981345348569729927800347144715197807001.9523534041910490518390942221690762 3.4702369707257099515491451789129689 0.0426507910888994462984190327317672 1.0435870544952217732514849006326426 LT 1 -6603087621300421789.5967712012773445455619056061246403 0.1060846196568721343035879213928325 0.0364700734597484833691875200083291 1.0371517313711011350509386406396413 GT 1 -465007678819495692223777599758205859.4851365145919547604504463738828529 0.0753323765650997716775792907788509 0.0663655865745500180432579851412854 1.0686703376935858037866387085820390 GT 1 -568283.5258027911697831585922604273906863 0.8284312391646341881662968807937769 0.0592656205972521485121390235194970 1.0610944540548981195051584148239463 GT 1 -802352395345219006483264950.3484715008838889660080708340454999 0.9843766579924925480120190064127303 0.0831426433885176825071333097778884 1.0868033732295674978380171317005734 GT 1 -15840918346194.6071661367662329658829809036765672 4.0788274760706960613843421383629366 0.0824518973474633228794321248424507 1.0860502724685410918594345378112013 LT 1 -10826412041323626946136091357.2318136817955941053387301045180297 1.8710118536252981461514100383173776 0.0928419103438066469318268012793568 1.0974385445447080320401166653273390 GT 1 -110385870837626358743597781454.4133274275091664829038979274057450 0.5792027711763573508086404595049451 0.0397807560360950990775102754035055 1.0405936414657309757944558813232206 GT 1 -301170759778108887857246172382874658.1474345311556398527901868898579571 0.5663862804093622391738825451801672 0.0133571450292891609556937205600013 1.0134471540989886015943661425910285 GT 1 -4843747443041.9487995526759210440421186491192814 0.2417575744060156098629361550361746 0.0803134628866410233091242823247506 1.0837223875264362923004460453589402 GT 1 -966473887.9858800141570762495016941622175635 1.5029284625102424952836663770953190 0.0218005487913353188545423814643038 1.0220416918986439475739688250597298 GT 1 -409814212510838054400.8301160540286539034541012930183162 0.7125068522433686699207606654240445 0.0251246733242353066961226139540677 1.0254456862365038283682151926401859 GT 1 -4.8327834871803986070933114135159502 0.4472260219132051941970004195551866 0.0317778952524320597684721000933056 1.0322937709712367046255620488327159 GT 1 -9235.5075660365008351998333527249239057 0.1738942392865842257980448776346881 0.0406226939474259616032383479741037 1.0414708445064551972891428378128271 GT 1 -1757.2303689682152164621477825602511101 1.9506584663304613489766195174909416 0.0572008519239827956313948571311901 1.0589020115310728611143168078408961 GT 1 -19.5402640684500442785545910061892857 1.7756549096611512485458641642053508 0.0226267991525686075262965312673393 1.0228867133398373272289668532606546 GT 1 -1257228511985269846353399251.9380012694713077032964946868388557 0.1632394010338667384092410673430940 0.0902764975931924851448195205390790 1.0946145691500355371608694592426032 GT 1 -15389075765553.7413493445777414123131202032474456 1.7514664797018184349493433905289871 0.0876366959834575342134854035642597 1.0917170085646907764309252812826504 GT 1 -1238212660922005176265.2599632466157621875752839370182353 2.2958001826787442586192445084656946 0.0593130969777134217192993439861426 1.0611449226882816606016280111263260 GT 1 -107318604995571376250082862109309921.7265758945052544097860523098549468 1.3744567713175046011197979741734037 0.0266440979579092725616386075860445 1.0270054856271890578153384524358870 GT 1 -22800799239976576276306896006883459416660862.7330164291050723565011645883816035 0.0512539504085764498630240986945027 0.0749735736098619547426857002292854 1.0779329728073804699685041883148927 GT 1 -55481250641663205758545795559726.5511199169812424938514179231833552 0.3950524405294078436327268323013429 0.0781018860518323382845792490712017 1.0813205670109343195139220771933415 GT 1 -73836571207449103028406384204233810994.0765700425908150077874708571570961 0.0771699532128745551606627493406248 0.0915875424102033053356272862428638 1.0960567550735240422724860976840365 GT 1 -801702112910705997064.3084387146980940020566634694721847 0.7700131599770070624905512306622685 0.0661204498130338161391469885091866 1.0684078103254370402536204108535797 GT 1 -2366016374459240492664208676797238361338039.4122315024500707334788642070612521 0.1962885329853740638951581656456093 0.0539733028118899883215244317465958 1.0554844891993869958626551596862203 GT 1 -16964015889677784133.4530344400889550603987666246042744 0.0399255283604641792074812201898057 0.0328294194629527023921728176641043 1.0333803972894840512232450389302600 GT 1 -5865424474184782526762.1927046947720021661457769342884815 0.1725564777414123893964781740602566 0.0627637061001502258611900634789387 1.0648198472128677657353391904766954 GT 1 -14096392816790564091635622966909.9525336037878798877564177378092848 2.2282557599580295875464244551074458 0.0080257188420628737044996483199735 1.0080580982854348513338562542278624 GT 1 -224.8310440848862945572486682735116620 0.6037876588280573058843410675394814 0.0747164618347645801266367346971341 1.0776550606935428331585323761415434 GT 1 -426432396647350518881050381.7587811611065495381792638540138383 0.1701147312888652134670438700842094 0.0604416198331959493805971276937830 1.0623453224457871466741432105585443 GT 1 -1090418449093123719750430305862.3671755626435924605451874137634013 1.6709050126452658289699069936611282 0.0428606762554263598047276060109056 1.0438063142753538820411279305887019 GT 1 -45812240670168024278532291280081.7718553144236319611743683110071919 0.5988095458669578965512347516096027 0.0502195607588088426390898607950772 1.0515244376873247777950267125518655 GT 1 -13136148672256651027276903633983189089287505.6984677438134146929044887683870156 3.8056376834219325374404303531069683 0.0057206320646501988491923425258274 1.0057370575529977731877816035088209 GT 1 -843386.3415970186676842234848040974483438 1.1755470865175315639203983275694915 0.0835343593162859747481046567177302 1.0872307021119380881348063018737961 GT 1 -114.8313772311719705572074012422920324 0.8378952499868535789413801120713289 0.0033515940546323306208215687359405 1.0033572232273062316540339143346595 GT 1 -2293123657360863101148591679207.7100497240273218583589669066261415 0.8281113258987388969729191474728373 0.0504796506774516253678995800969798 1.0517983173401261059205546593441017 GT 1 -8.0717931393297066199758756095944091 0.9213562804459644227387133298831778 0.0980089173711581090578034915521540 1.1031506451891785273855524397010362 GT 1 -3036237831868306756.4322229649269382021156037390626992 0.4506898578927990780994441651021714 0.0505393598685033296407281457302966 1.0518612028470405776646898562804544 GT 1 -61274242490802.0097680526527511074469594918419912 1.2473274445468217176156993924676570 0.0491335311755633457809455471230282 1.0503816376261116317738160669357960 GT 1 -7528335996644360797093027112928769516796.2740267610334984571262565138965768 0.9488790232768401044770490581144593 0.0400850529062130485510398723156846 1.0409105952224866884932774266726777 GT 1 -168.2521020284190777547526064572989974 0.7970011003661608066317346266069016 0.0625408573646646026270571139600390 1.0645821032762343565145307807278286 GT 1 -528082823663892411463579008872462779.2827979247394972447556654050688667 0.0643279454900714848813896725020512 0.0517699760283746696861516064022107 1.0531581648394795627612989284779486 GT 1 -370671182506729621993896006396742015206517.9961664923969684149444763418660442 0.2577775544655463930552883783540649 0.0265103786751921477965534073863703 1.0268681154236239090523987793640846 GT 1 -4057404969638220546228442999.8222738373367724141508713378061791 0.7272973219781831594807884939619075 0.0070771558093206207811751769026577 1.0071023176630146095017328317103325 GT 1 -25689009049023451727696604.4990158529985146427878654849273094 0.1240990553488395796943205915318919 0.0124872658317871477319075382376829 1.0125658869297890142562352818386268 GT 1 -1358235358911769175803281602184240655502698.3735693241289090885559780596728633 0.7586229432923334261473687653172593 0.0671798717921276166450070239405993 1.0695428853512719192732264174153428 GT 1 -24.5451861329317861564731455418030223 0.4818761302085757719004784560228893 0.0424809599129472407170176817271244 1.0434096729166339401991627131095045 GT 1 -32336509771.1229329081289356563899874499186111 0.4808008813379080068085079819442022 0.0871795887075658905948110479089499 1.0912161194962484502516485360673552 GT 1 -36066460490.4579705385142292315128191088120816 0.7943115185128540667131770782704176 0.0042091466539260237616525456265107 1.0042180300481392052306129669479133 GT 1 -145863061791477810507814935180911310176701.1689240945052466154856627019400299 1.0557155710095764060427111368396564 0.0306742631242324498589406269127146 1.0311545658132038600391410198343934 GT 1 -9999343311549554836577687400454988037259.5457560792987840819432260107173535 0.0417268594915636343442532313360458 0.0090190601527400916637592831876703 1.0090599780891185903699010462161410 GT 1 -5481.1824349639976947362136884706162964 1.7874449642492698207662096367515843 0.0514253418625749538197484051335839 1.0527947809098185823012670899189121 GT 1 -53543249212781253376918547002533921606926.6434368099581411101409327534287127 1.0867361030405854405636272288655728 0.0753650318631211311466258263364954 1.0783562483974555083167235732928825 GT 1 -705993118799962232146.8293853333726491769324170317652314 0.3443389493300644900103574072944929 0.0685300839801341705513497053873494 1.0709913857369994099609225919923798 GT 1 -29334457261805466576636.2036846223843111712941563668443875 0.5887147595208297290494251223673244 0.0899820214521518361679507989212765 1.0942909230204142935162051115136470 GT 1 -36760935823394861782713339887.2939027220125850683574515929983014 2.1272161213692789170829358134648441 0.0267514845010645415244403385371057 1.0271158177956528048518165396164046 GT 1 -868750739045972052.1692108051032606281722894036283854 1.8093590005143254622359107116347033 0.0885680222449240410883693390391144 1.0927383143567692412111537827564307 GT 1 -55595314769.0434507717261458908436500263394541 0.0535952297460320382978232564466149 0.0145816126084746356406639677817754 1.0146889692213967857845011338919901 GT 1 -4593613904.8752144418067127488298302522623182 0.3210211493243814480047870302205156 0.0734165516967333434143827603255158 1.0762511689874642566271736404561831 GT 1 -14816033401136626407.7602343097560798367967312686300395 0.4882500977004953337981826022546777 0.0058867994195363928498888169674729 1.0059041949260740042211809731340900 GT 1 -10742657264807011.5537492179274610597535248159223630 0.1044552423002005929430566008689267 0.0862067694059808103701810261020748 1.0901509578536824089547079148717870 GT 1 -1913787152888262.3038276629168241162288812644611009 0.0344014994773629054281991831131854 0.0025805119310380267859307706814705 1.0025838471909720798224322051327594 GT 1 -222004807374.0629387243794409886140396115360463 0.4231262246231978411200728843407993 0.0414919706530219420586553574132250 1.0423773395393722869833311429000229 GT 1 -314487.3501284086321902023041402269802929 1.0301564746143335263017593098367419 0.0520403653064233229632367545958681 1.0534433570708006189716361634490533 GT 1 -15366996835633405028.5611111728776406713618855553462898 0.1492898916490105601308681613099254 0.0917058352512218464436704136391343 1.0961869828601475615693580454198501 GT 1 -2001337002212080524051433791423741727.0777453037489734537659427254196544 0.5781662819393339158376331562025376 0.0692482797058927704026832675549411 1.0717627179429638112136213116234237 GT 1 -2504395148108692.8146843306849786858031176275768745 0.1168460132171245189344718101209414 0.0595339469979183363262615814964936 1.0613797255207810707789957939914183 GT 1 -420835021748232169.2440336681841797812186088922655499 0.3236032041188774512866672112069963 0.0887329488376390632567563273082722 1.0929192839963515808127352747726983 GT 1 -219462602.3505881876530367683689471873967391 0.3725515154364388327494352535278527 0.0777736572896269148842127623985976 1.0809645945444488911774819978640869 GT 1 -2087441279.1867324954910112108917508200767289 2.3381119698317095611682445147628468 0.0820906658854311119669812523434159 1.0856566578202686237164476553658482 GT 1 -7244635297603536035472592459549419132655271.4948311745375448026148128875526091 1.3215218571734163916016563430072786 0.0343400066506767657556156518982453 1.0349434804853855961186623351840308 GT 1 -13613039535186751206.7195449166340011066703657147835408 2.7468658925067498882670093303906369 0.0214386104699668542973262573891226 1.0216717557082206785175746868117078 GT 1 -43239823054279234163.3775607442572956566512587414267278 0.1378913928428446864495003492942642 0.0525056681618788365960049934247947 1.0539343242723451114552701766013497 GT 1 -42599513682063801418185117220201867.1100949715821193394834531323390282 0.3653855412574184440070452222431171 0.0348821694382792284549933715033596 1.0355050808882262094520371507224885 GT 1 -217757031982053064733868559091661769609.1702119719551345970749708654106983 0.6508283610325051278960174881652923 0.0072239242823965361683686760832891 1.0072501431685549604959929489508094 GT 1 -4705023761004490532465644688485623928540.5489969949024302075746319586177738 0.4934283818227061110531709447520251 0.0445014749577711413031301507060554 1.0455220589532060291050879220274591 GT 1 -489059211483976527543370.7960933278786211203278482740185509 1.6918741744308741079923676594895514 0.0981331786868259726013133541937477 1.1032884180321423397773824107945807 GT 1 -73760583181259.4431060107454202730329915920629635 1.4038666271759606614339154631281044 0.0169792664314085402376416459243851 1.0171250669225219530292767755727141 GT 1 -2138094977201222682900503040080464218163.3137577107030457176204697771732767 2.2806193355876675707946499219168639 0.0981884307273951839157342900084358 1.1086902625785241223698731800031232 GT 2 -1100083901182754008768599.7672379417226587527980398418151525 2.3635765190310304155990594004696279 0.0826677018403539363370362104900597 1.0862854970573373319300372308949150 GT 1 -1854.0423922347936329335932269856530593 0.4467368362785869403036793596475212 0.0945346829760748021182209286704235 1.0993063049610602580495945891079530 GT 1 -503.8089813111528181988819860801734987 0.1576975176846830379228460286859021 0.0843722830975235280121785605477026 1.0881454195156039346229256906985475 GT 1 -27829109334824812681307.6711970165084905753655149420031893 0.1947992524994469286749369999848282 0.0362138344348947848672061242695569 1.0368858289304863717585123511886505 GT 1 -149.8973233350333037074574770483623738 1.1671548407758441773340328056005259 0.0184897805456030849836560484983665 1.0186628532419897051803475632792672 GT 1 -32052207.5150258757736665334900616973436442 0.5710744640290849602229755616252740 0.0905786525854235866018612994069291 1.0949467636919263788517407583717748 GT 1 -4207077799104210849343498.5940918550475946173214497205684715 0.5238166103293910478334978162817159 0.0059288732562946990282975168884799 1.0059465188053907802106795503610085 GT 1 -11249900618.6401877081766771493072398601507765 1.6659041959492281648306670143075157 0.0322854192032682607927967340113544 1.0328180897325400634637974356100755 GT 1 -1533.3598872726906632764321679058823225 0.9137334171763200975726978134649919 0.0685881367090301509869409415779142 1.0710537114621844497775740085697512 GT 1 -22027.0106813021963165008509823036223498 0.3495891230561353518113131635660459 0.0299633909401177278947624120781206 1.0304214668980457429413946394601856 GT 1 -4900227183052870373507809025231434906796735.5942456739182665506029542347439678 0.0430065052265863291322682379114335 0.0138153421663959703702788634973102 1.0139116621640593042090124392250160 GT 1 -9297846388257208183902571869044.9902517371056089017789905440495415 0.0225930411841543338262517715535774 0.0194448358017923022961839281856968 1.0196363736349137183308238742177524 GT 1 -647857174681397462797491.3406113507757538644396446399190785 2.2213462138801502039440286266506404 0.0910127476370468765317110967107343 1.0954242087061245422424187969875903 GT 1 -206545616263209216.0545691209240232201418558399287272 0.7214321063206653788166817084225265 0.0495431565102230869215312376950092 1.0508125220930977300218285705661663 GT 1 -434965487067286.3584305200255117071970808674407100 0.4516479462617614904565256838016487 0.0803132810601595719830845353675567 1.0837221898216138991800987800083657 GT 1 -58120.3859869177029541820929512793988242 0.1479826984895482700598167998092447 0.0811903599454338348785605475768985 1.0846763162168295144767316992098918 GT 1 -16346618762875555870575790275.3711937985723789072425746423146249 0.3885451310879809371907038577123901 0.0993863916661342725083441800671516 1.1046789609313948760710673815142031 GT 1 -877996931631990011555048767481.5233720260148021841305066955196166 0.0538014547030358165651201617218898 0.0293581593992265903781825712675260 1.0297977349648976721985193801710258 GT 1 -13052240745786557552199128471839.9703676516810518560705840438045592 1.9217203758626202384459239812517315 0.0744721075525860674512073948684683 1.0773910097161643487872396698920515 GT 1 -873176229630686153705199.5470893637490441607723771844701701 0.1639760425014889886592473751236356 0.0770449651541218469209444140385843 1.0801747619759540315480477494504240 GT 1 -13323341589606974.8859988814773570207795969991680695 0.1194794446168039058294944228964189 0.0446254558333273363603315082583652 1.0456518225442346000083789117170224 GT 1 -3956158485107.1522230007560621307648153233606457 0.6263397440114810488345287296633154 0.0229492200496412033132983002621096 1.0232166529058325035275542222767596 GT 1 -1397326620455.4318208570770212049671060654325227 1.3886530971210101835549388128755355 0.0513944919966285766503758036519627 1.0527622591003461056973093142383345 GT 1 -289374645427675542560022365749532.3947763863568150418702968630799197 0.1723698443719549411581643919889254 0.0716631889625571043351036058848948 1.0743606691155098961285501983752117 GT 1 -9741901859651221775792625478365430.1112992688939710778985304469137468 0.3593325102517836325020456059924728 0.0190006864549712765736728166522647 1.0191835191672443564460129168211367 GT 1 -3146233746246953167194911109841543.4577771681063331328668406241331166 1.3972158078342499034705185848838224 0.0014359413455173458017769165408931 1.0014369732972910100772256519957381 GT 1 -2446.2654248109080908009971234480071430 0.7659940272003799345719428490024921 0.0690383132652729195450447573815610 1.0715371553609709427800622316669423 GT 1 -151217205.1560378250786878997265228940191226 1.5651437657213463255378318300879478 0.0076870731607249435468716566888367 1.0077167709984766894694345174645198 GT 1 -1539283271803317108667859.0144547311878466810112266732193331 1.4248551252977339314556195654216025 0.0182081074455642009914124808165967 1.0183759151286462905440566330643494 GT 1 -5915344942229936354345383438420325860977.6694438990636363396748262991973212 0.8881373964835915810451033156121368 0.0593383251170643922648877224627954 1.0611717418962144859368885986564790 GT 1 -834283478331888688424511092240947203562053.1046499501183421164425127495444799 0.7596268746114483550916319114179565 0.0011723439035211950907659484251300 1.0011730316361939388712173121358544 GT 1 -1898728417.1369198505978319512849279190407938 0.2216322041716804050114123969244731 0.0912552247733164109524288493054522 1.0956909995576113876670764088453651 GT 1 -306.3879026024475152392551518651438936 1.0822612628569389488292226992771043 0.0875736921336429393318646778341659 1.0916479552892563332410195719811543 GT 1 -60301212.0512476252629000220360524593035153 0.0754202451772183087397285656054171 0.0068241458484337185356366751376314 1.0068475368079979614701378757305588 GT 1 -265099758.3859984865233232888991191157713164 0.7875387212066732758878772356203230 0.0971382006617664680411690205189321 1.1021857834149681697207905402538629 GT 1 -26892.0452620318161637474305961581031385 0.5340504508652639949173686633079498 0.0849710253701227453675974572394476 1.0887995479458202986850506277602352 GT 1 -379467671840164957273879269041847830489.8528576491990601980497022380406255 0.1448719157788336484073708002865874 0.0703664788316975319173531782979477 1.0729648337580551609206620065424109 GT 1 -20631295.2220961839720805632898941443444410 0.7151138908120465781896100655877937 0.0509616344732090960022906350142708 1.0523060538692544050511929396199302 GT 1 -176774622628425073521.1112160930684462738520815694993927 4.5026602538882533714384401632313182 0.0786164359904226724795444904692559 1.0818788647015246190289683535282229 LT 1 -13754392754951017216185886929812.5695758456419181868019901733543179 0.1154816386670932397532521663552442 0.0329730510750690160977619505127062 1.0335289153288182042563783591537776 GT 1 -1262122640576113191113.2580285883681498413575423830030103 0.8786092039328401270605564865822822 0.0550007113241669751795698308753971 1.0565711042126638121252406929259946 GT 1 -208358900710419024812.6747599711608521946604795606900574 4.2826877479595939318021166894214983 0.0960903845403620644431095675773777 1.1010259064872143541026520746803748 LT 1 -156199407625313.3105195440616568723458956901245791 0.1131826650766429988880510914099072 0.0154170924699477026140103608995961 1.0155371716197577846858669843081989 GT 1 -646551950738814804133908397087247.5424051679245683311817305779625592 2.0847688621498277345575409401552336 0.0825772257143246940748013905056731 1.0861868723117662569853575655811434 GT 1 -142660101816565043706034325.7519098842304439278126545085566730 0.1093456575607421306743421103484806 0.0513103583716112566299738474792213 1.0526735711330693267348330306532621 GT 1 -1654010225741.8412645598684247307411652155495606 0.2195933368324739668740918111427963 0.0169209676607129865374546201083736 1.0170657629424050340788938454097609 GT 1 -46398036776771265207258014664160408905.5532475227513992389484220084693239 0.3966659257070659394059374558190370 0.0515524680294590377591081368374707 1.0529288079841852229489569699003549 GT 1 -109978175.1706388835227435400806977117171598 0.0774206635124073205569344572600118 0.0329547124757705464790906485537829 1.0335099516117931486067730250929645 GT 1 -39202.0536917984243835140123611407683835 0.5269232578273459904558826874133540 0.0784437524996997035895399963203525 1.0816914646680022407977843424962992 GT 1 -6705195950669632918391809581.1260749633979789386062454937643260 0.3402565093823577005118673554693913 0.0597231727891825702663284171848641 1.0615809500410422493369171317862955 GT 1 -697306671848008617.5353579808194720246114688962813641 0.5358716048904999945694531095640105 0.0633775492807316034831729725954533 1.0654750120744682266307405380556102 GT 1 -1297750144099581573567904679289.5636202551938082955923229510878836 0.3926928124773741718087708827813308 0.0723469650051681030429019142940062 1.0750975008120939402466764836302030 GT 1 -14695129992370491215638.8513605014721870999652222704144728 1.7295970077617212136617468773092732 0.0216559853397577678040752013847130 1.0218939175666523785829124297793050 GT 1 -1137590886.9689341886472597183541694088285916 0.3906552260832451419363494179174500 0.0088309168921660323906992775276183 1.0088701405299427257468123953850617 GT 1 -306095909090643347850949253595922806.7906712397906400647438426282383154 0.1352084648140232941879647490432129 0.0227151320545065019251790905220348 1.0229770952878703918151706433458944 GT 1 -833535271451452344207401871853114974.4858629836382640950201380944140441 1.8327972192625212507497334479520391 0.0676264674418176669036879270033177 1.0700217585831711265894965313144360 GT 1 -406.0236601283657246009629371691269896 1.2894804407850252472061806214032590 0.0960768548204907272361725704718795 1.1010109385984071986641857714792461 GT 1 -6116655444127570085800734994281478.6159193496412197493086067772987675 0.0934974699428493782874568241026133 0.0082786721202647790533993155728783 1.0083131306386048581998328739845336 GT 1 -5442383326931175549639254148127.6926673800732102679261716303636739 4.1577811024215468498031274638445203 0.0281722908020172621508723688202755 1.0285767441445695716214565414201339 LT 1 -787971700934012.6805475353166770859301145578084315 0.0393253878978629766190996662695677 0.0940336064122711054169778246637197 1.0987530667974035340254654539987796 GT 1 -176.7948218639880125664414549948474952 1.6941340865325778778374185264952485 0.0608800639169196606778212178662480 1.0628120804723118510433929068639660 GT 1 -8849283963139531217.2958066574473442914169310310970492 2.5830858401693105534313758516867129 0.0286408961490524965996423369016152 1.0290590501719389683516432588583857 GT 1 -107077720625742376858633495853338612.1940192239504789858113290058195914 0.7948288819108277911717032793701144 0.0632694624252111873329878553332836 1.0653596180656340641876735501869730 GT 1 -134748148218913859.8769115211828084010583197558680187 2.6772237063286615045887573721142169 0.0345818457514767187591710947849938 1.0351939510345605344972964354680011 GT 1 -3841032236670284891975107681780357049.3541815206041540388797874749739357 0.3532269044419417065933181984211112 0.0139871849247583493759163049209936 1.0140859274302487044491165317935364 GT 1 -7.1104237896313710388687522096829149 1.7243359220850973537094587026454599 0.0044780994627723038632254279829646 1.0044881561847364873467120952886307 GT 1 -244638630652329163214554885574.2211272137075299599748069882105411 0.3633623215177063382758993149264979 0.0757568000058871533108973815750497 1.0787800385155739517539023861636697 GT 1 -80128073593674787538555926547.0666270565805804840263209784759027 0.4981296856308602818764781137804961 0.0809060702122961796619039944018020 1.0843669531576681525882861835712228 GT 1 -1255836168215722589.6599931904407560853889913998934154 1.1752311784499358040914455725418889 0.0997790334677597579040040825059373 1.1051150274233729587086770026854228 GT 1 -109175778932535890.8097647909852266638770860085584340 0.2994069444888250185361235866640712 0.0608965093210736071643982130943555 1.0628295921313829106175016640325686 GT 1 -610090247719978608779566314812679353.1767424158802266924248534995525004 0.3693584995112190315934055786335784 0.0731810172980337818631773208383090 1.0759970046505374242375465470825376 GT 1 -250417740558187479276932287617491793598417.7153258314296455330040891394615112 0.5396916213573183328550598838707522 0.0359786417968500478710704949532063 1.0366418288046316080982174162860155 GT 1 -92933.3591846512768272493960580425699737 0.9951707767990337023430991742493619 0.0025825619550738870928176512304240 1.0025859025209181267403179734299354 GT 1 -7539490887813146327626146655.1490163541172677162166160253657812 0.8525592044959888081683024285574878 0.0042523838946688776265411806231239 1.0042614509927133337260630429435740 GT 1 -337909.0243615230438570123963136087006314 0.6699232446294295296149868795372946 0.0902662967785755353923392215150171 1.0946033561194838958640113677869364 GT 1 -95310240043273933741706254923880.6707665188938859703692803654171079 2.7835512237346795553549924649700701 0.0418086200817825364148105418266827 1.0427077506931616510799242872115631 GT 1 -10635699858342585833679037946919642303279207.3747128577906665216747543942035005 0.1703231742086163617883366608200117 0.0539869992966819750994316649591766 1.0554989672093436473931277336561819 GT 1 -56561066340958846571.7766303685380224647651048318255504 0.1474671173890197644272418602530077 0.0865252326147323093753802178695767 1.0904995254555099459244397934222203 GT 1 -432708116592396683.2872011450239108308983706957334665 2.2354357072739579390948758188206928 0.0280586638524960419110632812587500 1.0284598301007712728645102893914975 GT 1 -131904688321941494771430935520911.8429248707779070494144939955020364 0.7840172024791393051173333885108322 0.0774422688472114677350202620015280 1.0806053238301413939543853053028722 GT 1 -39628460276064825025135316808667204.0367678878852987346681333458418842 2.9277341521741116319891768838536876 0.0965814171798058636720438623539139 1.1015692861035929033349356503733891 LT 1 -683326.5030621095303934734674841607321707 0.9018242637499278437519465018255016 0.0739331936040745910733275160190921 1.0768089018023042662749700675694265 GT 1 -1004277438441034963099381467467537.6243841294285942701157019772630213 0.3837748160203795895324239502536727 0.0378786959319226644999677889311718 1.0386147405609636100674423261988171 GT 1 -14524345103906590196991747233977040083621.1565785643988160707046349468758766 0.2241885116354400182689969467516245 0.0191159135750131766669215233125938 1.0193009849862386506535955167133870 GT 1 -7365679928336299218768053492326723.4892845321617826372960353598100716 1.6597429640002197537250516430208606 0.0827543684223714689114657543281222 1.0863799782790692585103323605267680 GT 1 -53843401474570972951799.0083680408581930309321804735727840 2.4521022480892332214586299704459272 0.0195156267698271336929169489543794 1.0197085710248331618841409783307057 GT 1 -106144816631086.1924652243505975391806649453651474 0.8750425356936989768867686914660659 0.0210102365624588973710336508308428 1.0212340926477214018902399050804577 GT 1 -27410931595094538.8518479925363572130679985309689752 1.9406336611056191562125950375919570 0.0049929236368548108857026561415772 1.0050054299260749007684383664135178 GT 1 -505581747117825000969059600691281.5083867092423217366283966089871241 1.1790212616759094179334943807651247 0.0023209166951173695384641403513414 1.0023236141968630157787037749792146 GT 1 -251797276675453190281.2377624527694434675268679629396283 0.2064627498590847583587579412301499 0.0976563002783100419967964290706451 1.1027597896774560747844996174152178 GT 1 -338.4313532032012575283859975975139220 0.1538289284962093398328682562814302 0.0519994602051734235376683281645342 1.0534002073234518553506340858585378 GT 1 -353586637722954637.4070873107574192811011010722441687 2.1589682745276273476826787244357652 0.0727710940732788701944244009036561 1.0755548119391748160999952559257849 GT 1 -12296172167790558658300000306758202.8828321915517971873235422399706381 0.8196906984846187844768392095352544 0.0706540820703739535748808464612246 1.0732742543303564899067241172778729 GT 1 -2951472919575207540657226.8292547300286854518834810141194271 0.9253666963930888943485209268172356 0.0117805799755058980910778642639722 1.0118505208464677341321839417205777 GT 1 -119129126517090014.8459274292184894308656370608071437 0.3893220193887084376802259616979499 0.0228721581390866722990789767837819 1.0231377840555295049264065618718254 GT 1 -379272.8595730566622906699200337419614846 1.8660031729196211822232827466305344 0.0365837771179770197021294675200171 1.0372697457311750712571952503172825 GT 1 -2269030009239183848.4031990713697710224126246016688795 0.5467750524298880207497660121011264 0.0434560782277412526524775024019895 1.0444285718960145612672766689539335 GT 1 -2560260261979.1961251594790181040698393463136425 0.0784467839108216811569214729327911 0.0170254932636533064341225994908763 1.0171720933153692879749663601406761 GT 1 -575864298708.0404355078878364925919588525539438 0.4626389746562327782626258383611435 0.0018828912986639907949654654461379 1.0018846661667576724540885010483700 GT 1 -2004448999788666010.8099394986425534970037751286657905 3.2462187192241531241868448434134063 0.0971346914242353693140250433812724 1.1021818966288466975050822729519608 LT 1 -538809116218975937428700.9994971524638658726964080242823590 0.1460383438682401576673975757893553 0.0688559617463120793400486511596418 1.0713413001878766435258134976380712 GT 1 -565786490983277622269037.8073864168547080790882357252024172 0.5812055859619365270344064336393342 0.0008545098348394909894875582265559 1.0008548751364858015648964201823540 GT 1 -239416753006543.5398794661264749797838130725291268 2.2061828255561562304558206932332567 0.0650537248255479881225934769747034 1.0672662110507906627457374211795045 GT 1 -7007217.7849415587099851230464846757680577 1.6605545277855563828834128272298614 0.0679201045280299058568462095837834 1.0703367432153700113413985693608844 GT 1 -555240418518808022075449779065826237844.2212124550307612252352022267908078 0.2525406258986961538347968890678600 0.0309247503974439538247922151421297 1.0314130131379350170137972828114912 GT 1 -143624672978557640.7323025412068767352441181702889532 1.4735104548555429802675202860518415 0.0506468389092249100491163560132049 1.0519744093560381222368682084527986 GT 1 -76821569927572840128641841231124404590.1327407883987189430898420163553331 0.6559054399256690571713033639199596 0.0354563685257388417556690733876236 1.0361002102575003550605427757043510 GT 1 -27235901304528045951276949708902.9002263967523641546611337961423094 0.4390408393503793880177873679463475 0.0773441758124851327564713493686568 1.0804990022235882162796557912774951 GT 1 -116978067981668600460826762669391910.8431059989734242611102733926419734 0.3062800541061665575621678706771700 0.0436114316954001970646572304106516 1.0445909963085919681598371386841710 GT 1 -84710134140988887813360805849631.1660074510815799426087843387600458 0.4038512082668299831562973434659267 0.0546437014469435195912684476931818 1.0561933870425398977451820857897411 GT 1 -345179537376674377495.9475562374649163198398239356082758 0.3649758535414372203716691964840276 0.0842185148326341128395716655529863 1.0879774960771097291257745156369166 GT 1 -6411150200188847488467484337926516996555.2249797465089365859185927070785278 1.6241898336333749837649813821593495 0.0389677576778992088808018816008089 1.0397473197712254309567238432994726 GT 1 -23150711150939848802451048339.5929840209839316623777285030884851 2.7677684761358361105902986284379474 0.0627199722873178671787501000655371 1.0668709685733986723291414487574244 GT 2 -54408963683609387695410073311192.5508215084303897516962153481491711 3.9121043338911810039547433778494803 0.0669723880176164153844928846981087 1.0693204837362877657953799687906460 LT 1 -18277395576185475567757326.1953897768112817782192188813009377 0.1652769723278028359276325129382541 0.0005414673719967805095414384966185 1.0005416140183927974591561791581861 GT 1 -3629245637333.7686297597851905560885104502658798 0.6364007116970910138217146355143322 0.0121749515538724693329628537286168 1.0122496733856895151164467442280867 GT 1 -29786087184107041.9648521121308656263420869796327395 0.3589695142572674641747323649252664 0.0838231417110347640652910843031396 1.0875458562102424522187828107658618 GT 1 -1560684716.3882752541881957894153346841449700 2.1929543083612416357538064651334803 0.0668139399858652228129287461635920 1.0691506767795501584178852992263327 GT 1 -99753.4711636034260390258665052735810520 1.6900210763387040879346495224678721 0.0971676310165964016979567579741722 1.1022183806901312109788349458819779 GT 1 -86045958388073595081410954.6708493389681187127365386904428373 0.7220068276951306045364268328908564 0.0652043460356278927408930350282554 1.0674273254891614122366058826898235 GT 1 -327172952844680274106115895306.3328812200922650162340104658959586 0.8362013541057658660542547863684142 0.0049004492084336079867524721313489 1.0049124957815160519743657094054481 GT 1 -5526.2449073670920782398685973439249717 0.7427798700877375576965135888640984 0.0226611188892198279262900985915662 1.0229218282163160828422665598961950 GT 1 -7815067266955311307613414293337043801.9945605443020168607222868465606033 0.0814182427140379206596166804246178 0.0379137207499210082801027430189578 1.0386511449679578015847714572489526 GT 1 -3804125856674469.5948378127095252768510517875858455 0.5568659608820280679602005699811493 0.0569297195069508319084826465210762 1.0586144705011450483377599688224791 GT 1 -9216551932988906062.8042474017563008799355248164184135 2.0951267879444659274682162138945937 0.0337821684455309577973871568859612 1.0343659716869939538586362890404486 GT 1 -629175.0601722146367988733244794229964503 1.5202023408879037784243533535765504 0.0274648544686996440022383604294295 1.0278490647787417759336002331767850 GT 1 -135879128765780443440.4442838487754312271866602505791196 0.1866502153746800472272363048261043 0.0877740085205019485670151605756989 1.0918675219296903340969646876877892 GT 1 -77023.8083595946184121696202941072234956 0.0249121916625102277018376371027164 0.0585017511585014845791135599189563 1.0602827908532040178163922807285977 GT 1 -5903575585198310577575239679295903335771433.3121835718187457351432189244775757 2.1274203015527088648706498253775194 0.0810803271625935672092150037035741 1.0845565675876926156041229732259664 GT 1 -76699510933195.8809691166365852946260903316797939 1.5938057874093713265605029472085986 0.0244904200363534623665350504238960 1.0247952983996410576238183753919808 GT 1 -1245005251960980.3941172639060709920946964391711794 7.3789729658244818940994781779005399 0.0856977822837127526733234256047683 1.0895941082254085663948742563899510 LT 1 -2372254941178793345942008934807243665879321.4613832913516995156005541325720717 0.6572532734834274323017450324629626 0.0430177463889034074187078176671609 1.0439704314721795794654105260827414 GT 1 -1756923858424268331058921838.1253398838659517368165779400137770 2.3211633637330761893559825124900897 0.0620698401445808025915061747305113 1.0640797891920470045817966736980173 GT 1 -693.0335138968973093111434853226690865 0.2283732427429283987924205483237417 0.0305688996522880363259708791119410 1.0310458740267712349783613708636579 GT 1 -359388927313058047475.7941945120246388492390350267521837 0.3388758808688235763111601852896262 0.0852648465698405158621308700997182 1.0891207054083996228800797151565607 GT 1 -749346324198711671.5757834722141183356232953398705913 1.0492733556733586105802866654103155 0.0827592778870610565652399590391972 1.0863853306924897482872094147268687 GT 1 -10316070705684905064377.5077769591021114591377201972931073 2.7550722624258849138475274564059745 0.0332074967042244436431013698451167 1.0337713843246024934564875301648878 GT 1 -89345429076483091.3720392104935747053784304601665514 0.2186112658484584908599457628391877 0.0424023710790094310430298261156189 1.0433276008055675902925607039808112 GT 1 -7867576943365825018172331501641345573305460.3623423954980478305331837120690307 1.3606085833828891927453209993259477 0.0879180850018651446278093160006075 1.0920254738643951758725934964000965 GT 1 -3026716018130793618887471614165340904.5089867018102790526493502002441626 2.4094813733870952256604998005146120 0.0064074057356233927220791194852851 1.0064280212683239251644619263933370 GT 1 -21786325081.6461344958329419547536095734727438 0.8013348148333321865886581407494047 0.0673743857048788971255737822181119 1.0697514295174455757873129613194342 GT 1 -4323869405295.7315257605125153724163728376268778 0.0501601350441371001808264982935932 0.0896523829715690435019718996535251 1.0939287556788792224841989959290420 GT 1 -70423153187.4296634965807194584792618409126450 0.9878181304154388158727586689375538 0.0060955963866159848106163746556966 1.0061142503777026576336179867235602 GT 1 -62918929806128396.2808931815148121735242516273462818 3.3731260231828973168714951824792504 0.0938101947802112447149830430573436 1.0985064968457197139947538034578923 LT 1 -4481850811671511173.1036750136803986590499185013190937 2.7248282746189299439821166683061325 0.0807672482047132093037263246572421 1.0842159223215957399463315528791935 LT 1 -209877433902935.1650067623528718756856574081678363 0.5235034666585226842543131436817422 0.0437255203368737941148745618492590 1.0447102945213431687550493452663861 GT 1 -676936366897719129782501.2724036321303456895316186045801289 0.3086687024607331668587561093172175 0.0256069258165794709853277415859407 1.0259404898274005777450306812075042 GT 1 -2170119961583410881416943928205174770.4393530382797968026499667909754229 1.8299308067014924208830619277440104 0.0026492197319150353339614971325904 1.0026527351245800522250848778485659 GT 1 -2564253052721.5563866712298274448016794350307312 1.7294695314824713438879891821046989 0.0026414034427720799405351017249101 1.0026448981040759069614924155974641 GT 1 -805287041989887045139157952129028159233166.3790251752202867701505839170606425 1.4275099541632396128782937944522668 0.0372718026264697430079649603054082 1.0379841527408676878193841718734473 GT 1 -1186523514692959363000990696436450490.2651086606294306398499457802386899 1.9989345665800938785884654654077271 0.0872906606590445849509884960004110 1.0913378068602338552300937023807686 GT 1 -1811042288571234524.8688872388814004763311961406566981 0.0561503700873206456347865605828383 0.0197610807212484285339045357874392 1.0199589418483361717499110791714865 GT 1 -25928736040644.6098515214302266545148137203371145 0.4789792310269406525735940376765755 0.0986252192459446200936525093738939 1.1038341469802391494929532569793583 GT 1 -206218464919833211244537764201509221.6205736338423810988903137948507290 1.5138842209587682614682789835088060 0.0617261984960137752054019812970833 1.0637134733122311048452699092133870 GT 1 -1240301745087999.2279301176469642288470738282341287 0.8474832742451131750878931598102224 0.0791252855357038070242546105497224 1.0824312840491993781784340025471290 GT 1 -5341462330937893.0175508453028441286275318202845309 0.3702162946598827352820567180608628 0.0135884099841530496872374048692616 1.0136815773877230871127594593357552 GT 1 -45710191762128.3515297702979710278157994272034603 1.9777065361853932002447268753948737 0.0564965824851481434707123429578128 1.0581552920127876131894820102527817 GT 1 -3027419786453944054521655931718.5349842932732964771958042907245306 1.7306372618139324895871654869717340 0.0034626760484132101632591797433071 1.0034686849864686622367421581025400 GT 1 -11402541976492266373527.1757164842870804726774189737278040 1.8800492649441102722446498859911286 0.0739806713363835325648308163178857 1.0768601712669588515570459143393035 GT 1 -50.5797252714936344114292069772451706 2.2377986640251937023515804293610099 0.0875634480844309606642543849227048 1.0916367280902839014689786067556104 GT 1 -45029185075863460256687722414577.6082213591315615976833438257373653 0.3223908658210318773838126947473553 0.0552654406791710364447715224902735 1.0568512805528573791057212616011550 GT 1 -125511640.3874544451916699752270131451921521 5.0960967408767894173963001924446104 0.0335979609583713610751830461955458 1.0341753418683523632390255947221773 LT 1 -25891477572277346582795513695338707.4369624402402386501981582427153302 0.4424136389052209816323336648388270 0.0237744872692449626641472131517030 1.0240616611330885178154146922774414 GT 1 -96.9232066004459451146979776824398885 1.4631750521659983412000584178699840 0.0267404230939254083676100863451081 1.0271044524104459185114024355603728 GT 1 -1990880089743599562.2952250856835141635360432040671204 0.0582662412074035989434100627875769 0.0559799024751839184081654107655746 1.0576078233123953999934530603427006 GT 1 -127235877407940378185783153157783288011.4871328402598308056952222198546937 0.7569708821195229722540875792106155 0.0309090375181678052579401691820670 1.0313967989668504901658986941167349 GT 1 -55075777316766958671985.1468985632406389702298186420576684 0.4841489124336208904885266765587896 0.0436377844851236915937739325996418 1.0446185511682716378473818017382405 GT 1 -15248117841163.1238701314794798579693134178743389 1.0748890186791874703335389810002926 0.0593944958558213878814186594211529 1.0612314577509318748433736421540355 GT 1 -293451510239.6530970907601011959591235454943848 1.3266653956472762615043103772089668 0.0663944123099658800119151971158521 1.0687012129269794023269126490629661 GT 1 -19281962305451883283820813937.1155614523573559243664707833663322 0.3331619836646591082097520868596766 0.0913842720071006787360293539707154 1.0958330156669881932435009060692625 GT 1 -183777601525.1224244169139113972199665259702886 1.5084845110595882824822466078704339 0.0675005820558859309940631674090263 1.0698867516529788716999283590230415 GT 1 -138540872315402867374241797967355.9258131751750146064847866743406763 0.6409451679195473943700892354543682 0.0343234916045359055969364692810178 1.0349263782909970544571473494816713 GT 1 -42478414442980955228868041005000562094.4385769627500106337336174756800972 1.0715054471934638939569254348864448 0.0201872455536933259230409459221468 1.0203937924646471666786690622182285 GT 1 -63602.8197371186433222401626353242074790 0.3756635856165916826115379464345900 0.0840734728226724921417717754775455 1.0878191280301423508051410528151352 GT 1 -606204478120725821591504531.1732989750118870302862786889080773 1.3062414504803297947814016645415444 0.0900398236144911653181515584155673 1.0943544426425614950089526004668965 GT 1 -159075431582434590738536575704571365017381.9511326147737072309412153742959653 0.5062259193746046027396733130385261 0.0597791995020014105220568413807422 1.0616405371545912095223227625267001 GT 1 -1106777591619623050719675.9791471063828703895222790030869168 0.1224698534442146764526638854158578 0.0724144832050362478634548183368421 1.0751702873546469902750880689779988 GT 1 -21110901795131797495212598036593102.2783568489098726675430412563875409 0.0444522235599349623247810595947736 0.0774919986555753244132158777307405 1.0806592295609779770121133215938451 GT 1 -16367355773376455919081558124641836040106629.6340361076240552973695651220723645 2.0677889221734572148806336990939143 0.0809519261521791291574654927200732 1.0844168469523823446513979730474967 GT 1 -20979292096952544.3470741198648630936653007887942850 1.6903402503816381047393053868651306 0.0890604138273002386059637896856064 1.0932786998677208568912724862071207 GT 1 -1017611711634957735065038796097215044.5521859050342118490525395043569514 0.1304435541513715881763606136011053 0.0530797424582867470463064346519686 1.0545403946829074802640024733606081 GT 1 -917502639505420458972356179483249749.6107161530904477493435383148976645 0.3373077158717579295202263801724025 0.0380992731283993834515532879649681 1.0388440281615170758418896785801404 GT 1 -910157355980855170411461597221556510167053.0058890899415054720778047613529084 3.4282133582613598208605481919763595 0.0952252651495233471466866252405477 1.1000692780333156001170931103885512 LT 1 -521192527706051518152337597681300.2563565322124643338971806194393821 1.2153262014633909904874143468714072 0.0707059614416550046568562553401789 1.0733300794202168779256762101797351 GT 1 -20197726375746331298062052071.7445687469822692320265407602157744 1.1358658190384614892167071264983781 0.0858566311055634546463010198173656 1.0897678610823856100245207212499043 GT 1 -5956501643617279756371.3117256307913112587642129613556479 0.5500408041551268468859538936793241 0.0476930730513886420456438561216388 1.0488678938942668675176221757468244 GT 1 -1213422209345652949474448991426.4786135609690473744341866872781264 0.2844531908664161899428734490049046 0.0677286331780090681357158576319090 1.0701313405591576511885764965933755 GT 1 -220702567120.7183839812716901987482159944984974 0.3166051054099196294287252569887730 0.0222205910363144485261787687660687 1.0224711875951353672968340879165497 GT 1 -46044999026634122164.5482439244857907583492006685055924 0.3139817634890792388530819919378632 0.0583033627319122611023215418332252 1.0600720973888297953428606081809715 GT 1 -35945867872424979644.5561935833638010233176683721787508 0.3575874545733801362861628211635604 0.0390417940692442004568900704458192 1.0398243611440885606427659048726236 GT 1 -2457268364767.6478310256163165569212255725615408 1.0290165857738806891498534357637883 0.0971552541417374622405019288348198 1.1022046718440065054780321530464855 GT 1 -3366339806745851225303626191965.9881894834858186912872484931162821 0.1721359031657529950960981491215217 0.0731514327548405097562760480489923 1.0759650846407205313182893610730028 GT 1 -447736606077400.8681298879214039729326655890065986 1.0542649528080156963515318413331361 0.0292941961634217558888514993754559 1.0297318392599102042016540665196279 GT 1 -160.7868194658948947137792820881865953 1.4402509406672448842829290498906625 0.0222391930157325602536467135635255 1.0224902124960471140275786974753684 GT 1 -11920012594492926968712137626386729355282632.8753833441361809213562048124236475 0.0504111170133892211135047417819682 0.0605471345649830084437947027685583 1.0624576312274881005210931583314348 GT 1 -5374797262840756242260.8991620147616054952260039834985410 0.6965260741559331549465526535877075 0.0984810540241335526091013124111625 1.1036742205020658370619786530570227 GT 1 -1187965633609143.7385807168838113351806970953588887 0.3133035314782057798937324752261920 0.0108364491662499042313660209868225 1.0108955911288404415983219052188982 GT 1 -105237609.8304104026191807942564936399590316 0.9589125352331804198975999109466091 0.0011581420305106343397536112121871 1.0011588131952448209704545728752779 GT 1 -39.1210842186895409441436926332437476 1.8427703948183997104085777945126968 0.0671939181898940507771155305990479 1.0695579434563642187501146719459918 GT 1 -1123429080015215.4550075850251224172629363056956522 0.5128055106669224682315826380213312 0.0931046612372377679367871085185368 1.0977282282895771720285268141019058 GT 1 -76.4414155846098229530441238300759158 0.3674118282067984130241308436869978 0.0104635137013702778709208364822111 1.0105186411492609114752507684075769 GT 1 -102.5360099824760287915263409767107389 0.0244665922648679923606535963232212 0.0761687185421562094219339328922300 1.0792258198379445018491771690600425 GT 1 -31.8288623103670555998672020774729398 1.3654114599507505721976317724167054 0.0003985795340559658292296644434038 1.0003986589879916264668094588521498 GT 1 -6511292523211162932427916510334701453.9510419520155535159591814307766842 0.7782638546594997828384310055187311 0.0105699821088917906865490759967105 1.0106262411590628227781795758926518 GT 1 -46289899135397711.3835338257192441364543018752652717 0.1266914884844215320081146336152217 0.0506470102789891707148591081326461 1.0519745898681876061342027025125430 GT 1 -28046415460951571355132696196664826802657.6503993552280723347627067504977042 1.0456666835357215623018190365787878 0.0117769215294802429234254604884227 1.0118468187948993782461805458522792 GT 1 -118493951478663781598026379895539063122249.2666385074953707366981110409825648 1.1567345935689929986542744446420876 0.0225300179868711020514417928290695 1.0227876965321208570411678866132271 GT 1 -28.8304444089710343707553816070427642 3.4145290593672819598905134407976385 0.0762269692358164962568176444356305 1.0792888752154344274409174353683612 LT 1 -10855790923653024514493548294975.8714690008631723514341156047167155 0.0087128917176400766050484640281558 0.0552710531010542625395885554333702 1.0568572213099715202530113880646830 GT 1 -6103825344854479088745504.9578559447851732767999522839445183 2.1542110097255477748735152213628991 0.0225422103163667831839325633107463 1.0228001699643083357520249786930771 GT 1 -95897018639245985826299760282247260.7009728432400231906934632926942854 0.1433142716427821719392090520380657 0.0289884819164578136430737751481807 1.0294169486771885677087863458886579 GT 1 -39977965991.1132334878120486330399266905301546 0.6750906588648269632575591728758765 0.0412513048045079871415365573044665 1.0421262872450214308746100718282014 GT 1 -3249.9942311685595456668726777410343081 0.6850845212103227270424582218714042 0.0392632356282281353167247066566272 1.0400548259820427463456429532711382 GT 1 -10009627535840849536571133.4432476680965275830811596601070122 0.1047450261185232916014183579091981 0.0674025493410497791752521928945506 1.0697816281963083807412104692242969 GT 1 -36.4211287516208610513719034533234288 0.1005628902373489852996436620332282 0.0993350102892609809876300976473465 1.1046219110370109590688814938943745 GT 1 -10.9534924300015807024510020085008802 0.3016199296208040704587209671192781 0.0676781211500572420611054469366978 1.0700771603479170169825941937914756 GT 1 -53316.4962593567886274445361165847967746 0.6769129090264689480077600339913403 0.0310555597910984601465783292079136 1.0315480059809291745835375301347404 GT 1 -628583770092488026370566328674673687892171.8850803299328945772627896294445442 1.0637719580940014216708317015198944 0.0289920202811455468406137367950087 1.0294205926825054465064852682969945 GT 1 -173129096466139138833427725266198811714970.7969502221500827581257747100564044 0.1858976068181421231828867683060331 0.0162475996074726221716668934280254 1.0163810392102711066866233788132719 GT 1 -227537838975549521.4271848814808910278609330719687187 0.0518114938205751198605086404526775 0.0992763723217609948033957073682473 1.1045568079637988168257098201753891 GT 1 -1625633062946118.2757748142443059770823290158524182 1.1300605627279771030899264534195686 0.0442635988942008394842080076616746 1.0452731350124134429620226386989877 GT 1 -277682331860470381364138249.9897599226685875269901922286358813 0.5551374008287331917575416800784045 0.0313958164866373824473401278429183 1.0318992298881599897159647290381931 GT 1 -178265168842385443312069410.4719639923310256853095403160332599 1.3367199667135746774750691394874357 0.0202468133608454609437942041823984 1.0204545894053589315251149466508200 GT 1 -4127176352118315285615432745341819698.4495188527016951667038683468437203 0.1743414935540169619300460582846977 0.0249804352810148667777475191730605 1.0252977418071706636285056143033575 GT 1 -2627227898266335147530070876503004193.9402647997688354564631931936354509 1.9362610349350221273921440566252683 0.0246248137819711307953976361763578 1.0249330756258103944606743700211790 GT 1 -140811264366869077564213291936118069887531.9146608656392960824592600214272269 0.8464315639891428188771314101038293 0.0008463980730501630637155938944261 1.0008467564701445383973752906940879 GT 1 -5115515706940498318723652114734962716575937.3171035478705244577483408751602382 0.6522163325060938667310869630054694 0.0154850319200552613620402302147782 1.0156061772806505643539258400363954 GT 1 -558005515859933.2227085243856579232422191389012793 0.0529948799032887930275445209855009 0.0734439408016620012437500342345671 1.0762807286669376903759645922826084 GT 1 -46.6072666650929692248925949640271002 2.2290342720506682839244755868063830 0.0446048034047999222163490388071751 1.0456302056763434602692712754930167 GT 1 -273960804603117272079175923.2719409590812232016874360404423720 0.1890209169660525315683089967288403 0.0596657722393034690682994232880898 1.0615199054675296304479468523984439 GT 1 -101078333994228251763058336995872481.7106155087808392046409038491588899 0.4703771603727093673463714537119311 0.0133778169295380297538136976540749 1.0134681060743706269803786533644742 GT 1 -30741242847.1062027167516753389735710737307156 0.8994725445892737451006118198128033 0.0882828561055093368625256693401601 1.0924254862525248089173229585521871 GT 1 -14.4128780234962097261939746931777891 0.0467736013043767426127225795777902 0.0935346521987617639800921347211105 1.0982024758816520688991507193812908 GT 1 -2963264111280303365.4290492452405839579921485849105566 0.1069432601535265337916133540642416 0.0746671661943417135215788699837076 1.0776017858590810301858854175966662 GT 1 -19742174691999787776984809834089398967.8028316098851553464463538641291891 0.5929987259291590439965504787307642 0.0362764133312105677169771172425317 1.0369507613089246587456249593258072 GT 1 -1484737202246080195045073994563257829180879.1812213018341978650632295291742928 0.4693677128320732747227191787689257 0.0447556783393996313319098631045037 1.0457881370218136287647342295579357 GT 1 -4847888129.1196825632605393673246197375434653 0.2641866022983167816871964527653488 0.0340546905257292590020095219930306 1.0346480618233996830921241435880571 GT 1 -479322045271202678985830969.6366553923435251397815475343215277 1.1456141925317167959852037669853575 0.0363923808159236377691924311143302 1.0370711012738469863830288185659335 GT 1 -35613113496319210435033852717039.4422213622959962311987068971213373 1.5590809837004629352199292410800083 0.0319150281152306220113326644033189 1.0324354146853797530733973156786346 GT 1 -9955379027269291957124128913786932613064.2391170230693284634330361118418403 0.5651040470934705282516037572185559 0.0297699468854557527928513514538469 1.0302220674453064660710200288319368 GT 1 -201.0526223930771434547690761839950597 0.8614692206720368337767526664611526 0.0468372824265052300807182373718170 1.0479696474332070991561111094383609 GT 1 -10981808870782.5493985038520076941824208072878403 0.4581787933539765352625464872841417 0.0012302343997968417709167868625332 1.0012309917593529716461331785043521 GT 1 -11061770272257.0626854583971543327162594742736662 1.0638958920212491034113150610876811 0.0881365180748846259699040478963183 1.0922649909841863849486503428456520 GT 1 -7606952058294609385945482366.9029236288630978795090533710472731 1.0957211310060545580136757508757088 0.0038811089038460928258867906372640 1.0038886599509640680788010668784532 GT 1 -97175009.9961232815947693820441299908002876 0.0422276316524738921926002703742892 0.0383507873090031472468685197811745 1.0391055385874895146367679863521902 GT 1 -119386562321224643024716511303535.3234324716403058353265885278050659 1.5793003066689192464372519441763793 0.0648105374334121730043266779878828 1.0670061364598411245157688085890963 GT 1 -26632.3526389537499451006421009791161268 1.1093593393686170046062917927876102 0.0270114189511234733168640395338090 1.0273829326832125291848228055916226 GT 1 -133845091439892315533218729037166737402.8605967340101073239347674930058691 0.9146589835139608351912330111070145 0.0506371461346957184684306416126268 1.0519641995358723614400467278317821 GT 1 -9941440033043529864389754936718549780563011.8758846015267628650277677874475336 0.1219769015472207231273171889713663 0.0161899000530455142302297764080566 1.0163223884132227866098721478590038 GT 1 -28434545877313621860320172300.7818423507682396141632124900155393 0.0123741836543745954959379367180917 0.0746561642757213747471706419250571 1.0775898962418382053602413616870120 GT 1 -59609535992761571.1194224518385928707966332061697093 0.4221318812719495268679352425171997 0.0451365758816915808232324314357191 1.0461869601229527938107327101884703 GT 1 -30499505568847071262693516698734277122138.7953557207253257745477470214903117 0.0480627690404658664438560179105559 0.0641459426003862193007423596913489 1.0662957362431877317218644161424472 GT 1 -190436.5920986751790187987807088889849357 0.2081589037109240915435826893344681 0.0782639904397808775983687540122757 1.0814964201113941940599066959413284 GT 1 -409332132075.7421855418926301707951009060109754 0.1287050903899830954022816348640269 0.0170299505060324337834659742638247 1.0171766277691665829703727146227825 GT 1 -68581152447674285.9248546925048743594362167818389464 0.7968143290599513265228058433740740 0.0888143891766798364390934034477196 1.0930086584320159336092313792893658 GT 1 -761648.3329926467446610422281911226973227 1.8298187772372856173723454838217282 0.0989740464343542166142839020164147 1.1042212164993785180080099123060093 GT 1 -85597070277951842733080095734579604.9424411870314019596228952440134621 1.0639407992951786787409960083855063 0.0173978628884480111219241568085300 1.0175509842941717925783728957345114 GT 1 -22137845464704.4998123902796549615281006530848754 1.8732845736795542740304350369280305 0.0750307743712027488126643672725231 1.0779948116136464176236152524508194 GT 1 -115200371977533584603873730889.1871021841516121217301729274272031 1.3379891060217642023920226779243653 0.0785793924467568538696357475375957 1.0818386612504553795532659247189354 GT 1 -14244716888352986206117597546988021.1422467512576043820164003718015673 5.8838755276269266928577979219150585 0.0062454922372604838561234935889945 1.0062650769104349579397472538963940 LT 1 -744041517491040048018992099.5251524913148522727657671863051279 0.7491058086833966681992195960204372 0.0556299307753738702092140493154647 1.0572371671736597967791012320807101 GT 1 -61173249592671357265329499946335175.9034552919333718890045581508785226 2.5707322715521006789808818518172895 0.0789187352902049519282146619375815 1.0855860076761321984766159893055330 LT 2 -120643784495660.6483270991308525885218484279378893 0.0813304752615000476366930335274754 0.0060437333896517906626898494670514 1.0060620706673710231894093241783751 GT 1 -359848212892296116698084324450610160.1245809372037763289935736018200678 0.3124850467676156081380529824843299 0.0312035443782648725907808718043005 1.0317007452741675257120965572172143 GT 1 -166403653884026.1133962617669003564677646924173761 0.3317016070436792522662496853622961 0.0239806541160815838756650037071672 1.0242728711631145037378627500597224 GT 1 -335699754909652469388044.9452459324805904764342126423610789 0.2503582543252471463567826220992251 0.0108028927681988603429466316517796 1.0108616676903435665917786115125159 GT 1 -4647911230.3754392548829776332973617730684836 1.7678894048014363152235538296883155 0.0756907556004782080768051306508107 1.0787085832472775628652786030508247 GT 1 -124655704412142917898802.3404968537959625901821584490886729 0.1729492468954051340890989853249341 0.0494710294332064218821680427332310 1.0507366382264029417433984477703500 GT 1 -100791935682622168015695524175730624940448.0026290315988829461036644609823505 0.2034213787650031224003535378154466 0.0130295610492591703989377125041357 1.0131151904016956929041825424697509 GT 1 -4547382239110631773231703435350540565105.8229462889209150276132494938335398 1.1539748200204588398955271437113168 0.0819629794459995202702329155425021 1.0855175617739023756569266961666434 GT 1 -36695198707955590605543.7194085540708347391055573586925872 0.1459346036663213050604106539988465 0.0343840697142548601878631274428779 1.0349891115244789682394612707006727 GT 1 -60757520241640899313336176807190199072.7034478117031950704581011864896066 0.5416703835622744492621735629618706 0.0045627634167033102044868717429884 1.0045732045942226675468536960819944 GT 1 -490522260702712505.5562678379791443880861270158315255 1.8966486439368624732928171990986733 0.0474262686823097910496761571127999 1.0485877667695929427769547577857546 GT 1 -49.2257944598438537695440979323128659 1.4071383253126571480862374887321367 0.0141384355955385631105527038424086 1.0142393354491882787065982093515668 GT 1 -19762655268589146.2814900890953160245040082772379961 0.8896739873873469004067007032500329 0.0638679652979511756077976910443915 1.0659987497370902243856200415756345 GT 1 -83699404189115022774475587620810360150.9560437657923554915368312756632883 0.8156262010593976023639006651334531 0.0866166439471327180451690185958349 1.0905996003669701346616431968032816 GT 1 -146654266999197058456774600846841.4637807489967573211865711427333925 1.7591770249767983131327620493086017 0.0502556458509278439786190352954160 1.0515624314974070749091346184753612 GT 1 -29762729664051664078719047057367.9562953904946419065134261422548313 1.4882987607436428811976496818419110 0.0836752332244365114570851348980768 1.0873844282639897555874801093494285 GT 1 -5966631039149.4496503058910204794517305592098393 0.5931683594300957391245006444578970 0.0359038081278589622863481864438739 1.0365642052499621962241482535207417 GT 1 -26975277502005599626312221892.4354029404173797220377909722773804 0.3111026317033533513971342232910842 0.0512735085787153591294852166284884 1.0526347290548781788222353532057522 GT 1 -225253461005.9452868278672892378298882929943701 0.6188695974123424414117037321416213 0.0595479641507092721340881693538894 1.0613946301068704684369603857541573 GT 1 -1110063.1850439022949189417790001197376190 0.5302392300552663036781670004906684 0.0284737612793739804709442394020830 1.0288870020675772640950450445461494 GT 1 -668681622875018059859860740452564377.9109524793759131808227881696031449 2.2151318294639665790407646388616974 0.0758530302206526221674725408707278 1.0788841617861107174021348341610248 GT 1 -3293516265935516768803246258257481918.4075995608912984210048090008367956 1.6684303732589882104698886947534182 0.0450265626154122939333003269653266 1.0460717531452066470112155145357318 GT 1 -12726924038947117414737025379126580381568.2245748642019964530842979045786929 1.3384785688471779181056612664209171 0.0714851183826265259693772363460351 1.0741688707277540401919114451008751 GT 1 -225944335513353511096431435.0762184783432634763202027125346550 0.7945901814664581265530975535798915 0.0203550027537715977555959270562299 1.0205650206530000322068653099878574 GT 1 -1363429660903611974453144034652137162.5902724981609332956813052983019373 2.6831424059350060622274751032564280 0.0472322646870962916466034267383055 1.0483841245361333160983903206803615 GT 1 -4580164654560229502230144327903421477820011.7036462954517359930898640550016900 0.5738184452736339797407463408553898 0.0317144370073642439773827562845138 1.0322282321188503543179444844956304 GT 1 -20542.6978172186748643371386056164039500 0.3662800634999682126009495494930509 0.0374928513958716321043193783208726 1.0382137857266063607108921310265676 GT 1 -1001314474967770378913179078211096823347.5690611675848547356706026493402628 1.3254300313871355425335267945898621 0.0111236770829083660856902598903764 1.0111860078413535078955179786856491 GT 1 -130299999005337440947977808.1064503702069499858448821671657451 1.2385305269053419468321665230732771 0.0766440604668351970075760028907215 1.0797404855196574572843675895775026 GT 1 -641052356416316749841549797804435213.2976810753338609724230703716710604 0.0578325119125361646492892276341599 0.0852482412436317652212999496508184 1.0891025524212439392863312207616102 GT 1 -2395099117844135477013840.9163024529106920378183950190452671 1.3469560497083828167592544511093013 0.0146339225911732599288904372862883 1.0147420546639149333934656931544941 GT 1 -28608549660.8944100584028841715072604124205656 0.4671290236389696554614284138296429 0.0791164891690284708325814392261343 1.0824217319086908237980347253501060 GT 1 -197563691105119350858933541131590.2736727967156706609050459972492393 1.3401735068895402013071428044958752 0.0094409612552758542554957626305040 1.0094858096276888255096517683808666 GT 1 -3585626690013353990.8344918659029508095572967158212778 3.2263044992673295011321322176911142 0.0311976819264750595842021452507166 1.0316946940195224265971025349378189 GT 1 -17413679037400319111283137846267.3970657621682299691296437749348027 0.3178248026672275409622938921803775 0.0252012142228853518100467226684996 1.0255242028441773756261892409508992 GT 1 -30866941770415353569018462704628.6663999611955318016118697701364219 0.4682096004411791625277145359186703 0.0338246517221734920368207010185207 1.0344099412860307975808920111332383 GT 1 -19160414.1732004126780849916135438815027926 4.7978693833838922132600463910472631 0.0278570232705743107066636685636658 1.0282523899385219214218937281770989 LT 1 -878753204801201.8360534153021799388438771336572146 0.4028936360981512428206065400757624 0.0316410461132797417251862957098599 1.0321524403114432891479637349304464 GT 1 -152780070572607986798595603.1891513791287233354098024179245704 0.2758031266535412090511988930726148 0.0690350349168385476660252320247055 1.0715336339027747517995078548226839 GT 1 -27962407548330668791808027607004931765692.4368838796064001017724470801812371 1.9863956108964534490151071655254455 0.0061638696616091595171754858231201 1.0061829447307672302766942985519249 GT 1 -5942800248913014.4159252750576861780942032151492849 0.3240082706949816276069343148002846 0.0557928663993989353296900763898494 1.0574097157188668209520713731550342 GT 1 -220543595705805137815.5332875407780388129142674968240522 0.4302530100364133404074422175050117 0.0037418212376110434648897873080690 1.0037488393632157267121639535723562 GT 1 -8324487837551.2920200839467849550306591157477962 0.4010171588726742913851364911803186 0.0001356866344045284896219472709781 1.0001356958406686939208252268267222 GT 1 -16704286970461949.5643238797532542325116140199358846 2.1735585784767628334445073073799578 0.0262135431039244119658344808483419 1.0265632428101441500675073349138198 GT 1 -107079146177923714777263.5194612685146378767454499726211955 0.6426582736425928617939486426354088 0.0543142015898252041211949373695841 1.0558449020870943933164334790060656 GT 1 -412.7333690434843111486440066551056432 0.9704204507747140682585461250275516 0.0548731889907841251871611060562644 1.0564361689471303772434552567805127 GT 1 -135674177457697.3099545479151658312007697003245616 1.0412059591117565989418847982438283 0.0240452404905176745680540510854367 1.0243390466049722671334583166881672 GT 1 -19252172461.0267789220331161011955762330271226 0.0931457536380594649287479653923141 0.0135459734335099175201763938454920 1.0136385571735807864549570535295237 GT 1 -99724839467829465257932224218.3533925177864094904295162417269811 0.3746797112133732876521049036616312 0.0639609297573823742958504543492601 1.0660980616635077131043542484271090 GT 1 -137310805943418782827564.3489527044462358896965196942213508 0.5434322437349784634687015107711445 0.0833393944385189211291343971275633 1.0870179891262378072077778003394862 GT 1 -9.3890306347488733756851922911852864 0.5150729001758557187548932430571515 0.0603011168150547783763789275640239 1.0621957920742483686538552031516572 GT 1 -1464288449258783630323589.4505014008777890577495158577026390 0.1894606946910314947240947538352338 0.0503381890426784667518546619194957 1.0516493462324637143616957769276285 GT 1 -2273752504624.7482055789326273894683475573914202 1.6598833564042359533408093797510714 0.0970775676509187835185617314866120 1.1021186292004097496297091707625616 GT 1 -4143705961171071.1548756660764713966367136797615121 0.1717317562175286971566106881795370 0.0808001840554121322345139302201540 1.0842517526819585756754867056790093 GT 1 -2937442353502633294426987151217137.1187382353560825113530506509645864 1.8342365829741598851231625420425948 0.0976270503916287761891356133177879 1.1027273747421866684109051762656656 GT 1 -1577676817571730147682.0022533375684892952687383604425620 0.2738997308336025326116149463414569 0.0593762555407067179090586303157639 1.0612120658398941507096730485201785 GT 1 -234833643698016572770967788866395193628354.1110405857432684050084469224050713 0.2222465570863115872559222104824051 0.0035403907052275040444558119141381 1.0035466727199741972593444761953025 GT 1 -14642161025296608.7703395981737740913437586382897489 1.0511559100192577193876232149107594 0.0601227368271648449491604029126251 1.0620059833359632583539635957467435 GT 1 -2890025612248013605288534568.7931972398305709445461109679974578 1.5149039653534111098291940555470545 0.0957428407363783347330276507300374 1.1006414908313998731754111706107164 GT 1 -1074073634062972.8723754132601001002069951511614284 0.4906410532334869523599652846906458 0.0318233394407577623517157809673543 1.0323407077790350149862185002413029 GT 1 -421843455767.0090723961015970085032417822660385 0.1362277071876420293187753165935894 0.0623575913269212817805970836093405 1.0643866300889832586137571084393885 GT 1 -360806732435507.0540846599358836487700461880367877 1.0853296850427554864381903886925638 0.0265741386490455895433649934904686 1.0269336138743205022564373591747576 GT 1 -14845703115327978.7997561959334066530093453751145954 1.8249122410360882365963514410551730 0.0899797918945679935818263865583517 1.0942884730085407037064893736839319 GT 1 -265.5585615666436313952830298745080600 0.6781980340141098250375125995584672 0.0096958573626549719120985071250692 1.0097431682491037195369285109309759 GT 1 -111622799877347251244186445827470167505322.6954790860268030834879949593441427 0.9048205772310526261014919258751618 0.0793633852975330098592371829716067 1.0826898757389542721743852604719049 GT 1 -383931475092545382372442750329880589.3483700520231499565885737756163818 1.1735693806161117378344035224256985 0.0725741209058757874662779795195482 1.0753424024172146935502168163790821 GT 1 -92341795175124.0613449260973289220524249403142253 1.0315030546090372420309321325473269 0.0529624624862138951365221261930326 1.0544165482355062402591452222100777 GT 1 -452295447.2636350855235072588046638304463941 0.1479444190141678072522429264980564 0.0712277984446041887734921901904049 1.0738917784656044713359528535923640 GT 1 -1216874086056241883472.6420372115518869820123024911245790 0.4073757890415402560436216363560845 0.0830675247140576310339143491193642 1.0867214459844760110746086759235221 GT 1 -800052131024095860259.9900300835340825998418105294011436 3.0162722047021068663376436700061730 0.0423669904569223591816446360274328 1.0432906542139868809543922219824629 GT 1 -25154083679696293803730173700306419505028.0867051400263543567564366808422525 0.0618124862182411779179222200734665 0.0791213529444308887815132429517416 1.0824270135628735881309379884158887 GT 1 -152.9231738509659686689691405608348961 0.1440989604362156678245890520383192 0.0497519875250918896005117224631777 1.0510322626962258390103094030492397 GT 1 -6665890369983164422468021.7345524506070428300430345700916503 0.5119299398695152952839013056748929 0.0525260929333570857812983053963958 1.0539558811206971925941253398200229 GT 1 -491195951666369650337.0855585902978425203536248498933122 4.3471854704739942324845035719776583 0.0969032045868850972951517024325201 1.1019255381614051601035521820408309 LT 1 -3145542346748045153.1180560544646293314731726652662139 2.4991681875055173920692299665005563 0.0687585110143571518410252895432531 1.0712366486744079782627753991843530 GT 1 -34584.1628600790149599738968575253067390 0.3676251117955652841439455110854481 0.0845087925338063908570660202872463 1.0882945189921251764033631311424649 GT 1 -1458959387908524515332.3117304267051934987850810151226790 1.1450347988643326503464925685375793 0.0388489448841513084715544744553734 1.0396236970198909685694094792518849 GT 1 -3922345245307618485085007109329.3188601995456092808539775551391108 1.6217975265713231950309006307481148 0.0190294260271131137141967697362877 1.0192128158168277515322513694300596 GT 1 -277189996.9493813032666204571752253045224406 0.0857101794487049217849220035822355 0.0563498781682181854661217615879087 1.0579998151910380974607282033494107 GT 1 -12530795211416520419322285235133965593498.8236315543714012005333405420771363 0.6867466192622895247643613083809435 0.0823879429751955018576931823478218 1.0859805735139768688896018579101139 GT 1 -12707657413019.8351560896329115442345864390261457 1.9316799067107122646152023107230271 0.0910968223483851452320493993517415 1.0955167057125558243454060797329234 GT 1 -334067978.3096996769032869488124493137051608 1.5905152964091116776768212579185444 0.0592179142845631386993732488504752 1.0610437435630329988986445156041994 GT 1 -191679853625039410298596156919890610877275.8375429627737509238834836867263813 1.0520623629692000296565961516827289 0.0926340638040830073996546284738958 1.0972094524658251735380371977875395 GT 1 -93826448532519820728322696149161702.9648672360391334813306095013446248 3.0398881931704094478533255436758483 0.0178605958323611572236215047272007 1.0180220212654445069023878026750293 GT 1 -163331.1407522695692024887908098990118948 1.5495772233428529083553563453732355 0.0131598400662106569287395284662133 1.0132471980190570534647896042406764 GT 1 -32523068524008667162108989070455446513064.0413950307679747320259773105529023 0.9026704676083189127625365807708307 0.0815068481081037424745364480150509 1.0850208301066331029730714544751679 GT 1 -134620961362596231.4381985385561109845348748755591800 0.1605743929802548452933980910730269 0.0746495974153425161489076526372470 1.0775827995964356816036638097387235 GT 1 -1446479757369188474965930341077177901023478.2276454365349344880246026311464138 0.2894631687019408446078306273810183 0.0873865976259383508867380544742077 1.0914429246728700649878217599078019 GT 1 -42454626094440895164197299552104914756.6192027774743620072612193297913334 1.0093722092541057541398586604844008 0.0134656102564397907323688552355682 1.0135570937686765980402151159116955 GT 1 -343818056476035941.3076666674303710902721337790128074 0.2257559277037509516777580986006826 0.0271918690645878730886788326232010 1.0275684095245190346758916454390067 GT 1 -87348208838560128567430707509154247.5513139467683771670030631378570407 0.0476356490848708732084540652425108 0.0255662544472298876913061751731955 1.0258987504907457244228943387290228 GT 1 -58046919011.0647665816447912510487335775574601 0.3731789880236946006733186526633766 0.0481169708262969524408044982825453 1.0493131202547438958460500739396540 GT 1 -21008030917.6609582445075493529298880918653998 0.4969344155618393636381360266687831 0.0230479836448769456662375749684351 1.0233177413950676094832428985826466 GT 1 -220.2980220069332376577712041731323942 0.5661138952543887707113252025965010 0.0206329634613942332321734986795354 1.0208487970716174699381171487013070 GT 1 -214784591766747006.5747940276009165251054537193648927 0.8407351455436561313405336284535159 0.0405556901051233536498876806222377 1.0414010059745427271481414671479870 GT 1 -8674788346030879128412.8175974303803661329062969717506453 1.2964833636854633014289115613653000 0.0614501143756561335160448935722397 1.0634192697338742498406782556537973 GT 1 -125851785.4233590540210214263025887482198882 0.4917435437950394572752451534240321 0.0683284638738405375837122249201039 1.0707749554634435017981889782048363 GT 1 -243206500521791107.5521584355489469321540518510612050 0.4557350485901520603586173324961766 0.0800272642446154915672802276081403 1.0834112444266728832938289817417995 GT 1 -18411381713015264950452880191.8598797227166297637667852371793646 0.5660805294579391048679368955582793 0.0162088491187418915364092059154473 1.0163416494964214143759707425513247 GT 1 -2787984209440.0013482120672137677130262661060715 0.3694807366301999152392866763234636 0.0622114245026799712797337399548035 1.0642307546387310373488785961576573 GT 1 -181161050041706353966361632592949723.3454313127816634923317334606916049 2.0286906371137392125067611538374675 0.0995620508767350061325103528123455 1.1048740238771838605288743456493181 GT 1 -88053098662774842.6670291319586723538940631420882249 0.2564751105645948377713648360844205 0.0821851210548280184968237054784318 1.0857595656196082943922196995212282 GT 1 -44887292550711.4352348015144777042167455945488837 0.2349791700338388394817967365146174 0.0264422275994307377069743678931330 1.0267981108864884822636243432505186 GT 1 -1770.5750221338746676720002468525283088 6.7869946527300208864490551747444419 0.0383707764891883865010713844090446 1.0391263251567243204780119828675297 LT 1 -1643700.8999537042659633594865769327559521 1.3493374881755062660121749347911229 0.0400754756142393901089142482620010 1.0409006180425026171866344246614121 GT 1 -18433796907102538375737000242712975.6503071344746968479410533120781372 1.2831935525318920921055049078286288 0.0523905710806289452551211539830028 1.0538128564310851670221833607782645 GT 1 -88156520324.6066290913295782488506795256046086 0.4158720221701447947244704935470662 0.0031500410119775311002211890405700 1.0031550128348755260095667429396296 GT 1 -16376758922974099048.9640309528636570956351675773322208 7.0692637740399449156876625099601109 0.0776577115661920396724522272308423 1.0808388787303231143496878170974295 LT 1 -60912113829489110771183305511742.1391425106620874488531055541000591 0.2771075260583509067864624199210667 0.0374948088657551177432169572722997 1.0382158194485135692138803060674617 GT 1 -314922768950747261.2600324199457650185574053035877319 1.4655229925127371038931969521632218 0.0415068998985980849301093511077370 1.0423929151645997385754598267226531 GT 1 -1384586159329128916630946014547969914521.8864974861761616702892899088980179 1.7162866901073770846340181775526714 0.0616837764997124802240400450520707 1.0636682615230355136304114894378525 GT 1 -2590488483725955147925899023746061138602.9917039428145083864848442999501286 2.5741033126146824619177349196742987 0.0953327121058338859903506884057012 1.1001880405635168709990443195392323 LT 1 -19549793296751.1659184228883100704168663501615549 1.0147215772347548742347440320827515 0.0606164533186520608570169312555684 1.0625314202527097508793542585880436 GT 1 -2378252237289344462487.0916758336504270112670843939956935 0.1328180179020118078457742293833432 0.0547891060462148611542632680013799 1.0563472081816502615213874160580617 GT 1 -23941838125543806.6016555591219411005098332817372748 0.2733552595926874121587718946369823 0.0057962412419553318078180260745411 1.0058131046426879936445958070740133 GT 1 -5374007.1571513034886348039810577712219840 2.8424470122044820484534237618430571 0.0976534080799427235212478939451477 1.1027565844755655167254562712272164 LT 1 -696500794656470604829074262616746124.1762757578828923192104455389093594 0.3524691417261588524621615147932290 0.0127872809068322860382858750250948 1.0128697419055355992721456027359138 GT 1 -8673925234075390122716137649379262492.9065883028750769558767347983959892 0.5740401359267079757643988363569441 0.0774319309847427531536327775064758 1.0805941182392078313449442561721197 GT 1 -5401119352.0213068795185186457270823683082950 0.4206231498350018523376171463534750 0.0789585460099421907634549247115798 1.0822502339785471393109166677200516 GT 1 -795687869332148384288123216947816801.1017278493639230275106333362681600 1.5057076440461137641093081771564752 0.0638978588068696720069043751537590 1.0660306832519313832002112215101833 GT 1 -61014118642215104934261504356.2149091758808291283062456014055982 0.2161331321172934474895880124573903 0.0145655303263692661311906172992098 1.0146726490967887265370106369568915 GT 1 -2415331355360031348850.3122308349956219800765901169894150 1.0626905897431565358779218168522128 0.0146397838367464778768720178159855 1.0147480029740301968474059651509246 GT 1 -193100818611487691245060404798376168330.0535402776114175607759019286067386 0.9975181086000622290594495404094200 0.0406655878709452977124526702528088 1.0415155556771016481203872698217986 GT 1 -13518739652702.4718606189406168430546937927407450 0.8474549576429788145073892076545852 0.0137054848624370883624441341929682 1.0138002720864576300602998745890459 GT 1 -170445101216084451776965726718753127011888.5547627733302764784023481751382749 0.1152493501190075638440838738171836 0.0641153834535190852357102110678864 1.0662630830237023182153803925991251 GT 1 -157181101695145204862250163821.6926604299029803865311735599391980 2.9685674049014671623108188673536332 0.0375112225084832682713125526798620 1.0382328726372466911924741577755647 GT 1 -5813318616611327966909600.4520910949390828405629490801950111 0.2729755618934644306218516403279456 0.0685759996302170318753049862231436 1.0710406807072477913588767889637297 GT 1 -334.4443257485627666755818555309908844 0.5010581204237876969831261350680603 0.0398255178364181342144477573405398 1.0406402587814638328148756661898896 GT 1 -867991239249748234494203.1671469404374808690368157567379436 1.1122388226267708463548495283646717 0.0712809614035657821780870892996977 1.0739490201449480187017813721705018 GT 1 -148667410915538345056.3876337793860035573973562325138082 1.6326500893813079925854413090741641 0.0584077799396680314867559298709700 1.0601829855379912448445691117156406 GT 1 -37165452262767631112.4409426480841473334314763820584530 1.0895191997830195322624571650904580 0.0773410860562628935868970139617011 1.0804956534656138763039988591132309 GT 1 -1661870124916113731638808017518.7103024902262131998578507743549619 0.5596203146596475986242158917214718 0.0376210958722779937151096445013749 1.0383470346287053757186979984483229 GT 1 -600414493628321882253134598987273541.2908122892678670292861251017648695 1.5889932020757065787855484885360072 0.0778140272962092408205001994697207 1.0810083700129288959356845393737456 GT 1 -515212155864879186434619655647877.9389757658356252308998004687317231 4.8905453721135669565407625403683287 0.0407950300822987097666988566572018 1.0416504939668872138972430273256695 LT 1 -114014349736405955606931361.1938238372457895967747134732000452 0.6432355401040673787041587878628766 0.0447272575351985895471792064213892 1.0457583850716878666133140398515311 GT 1 -439230.6672084399108288359524519327347763 0.1935479965523532135850772511865180 0.0857358621134317009773311859369416 1.0896357581547182398937003743884043 GT 1 -1709344215568482212973869966927936070782.4276430150856464925399749899996351 1.1098291905668905088811945411413386 0.0032431590612089824204665965556818 1.0032484294998894969755836681048825 GT 1 -10916873901449801976010463963692370.5301831902011793962922902824578566 0.4205454731440727580207170444555266 0.0037180952984230748613209332128014 1.0037250245959385302940690638465233 GT 1 -6619639947972348699339112315226037362531429.6689784308471141082361764929593001 1.0377437620366658271359710068841420 0.0444152459135238673305290257164920 1.0454318179414746052400085248832367 GT 1 -148686.5320050797268478827927981240099050 2.1475041548827367629010104826875646 0.0067760850694173410495965099006588 1.0067991469725038071574452658067117 GT 1 -255592716448.9259114390864523480773473772155804 0.5417180810650097639393679121271458 0.0845208293748097688324746440816199 1.0883076670377162783887289298464445 GT 1 -1845187577856096465024052354810198532797.5669520672720685205360151269300877 0.5257419656331476660331604816258945 0.0604228630469763747741461441184233 1.0623253592381852316473491510693842 GT 1 -1185892999182831408273635690.6285224452426822808523521140392932 0.2975333909657812873536607057408503 0.0018583548886080456244930659649019 1.0018600837723057330150849592671314 GT 1 -1177.3101923330220057997393157038127073 0.3804239939990751316906926449708098 0.0577237213676645912008307556412746 1.0594567579880928388065280436854631 GT 1 -4175432219197033550788502764415556.1639355562332534679787597363832988 0.4123720614345068314318925243402206 0.0711935538529071148165622339504139 1.0738549083263580840029338357612896 GT 1 -6424482364848899.1219484414257676875694388671695770 0.0770385605537326175193778205288750 0.0876268135217038150072172546351630 1.0917061769056481758568409078335395 GT 1 -5352648663725383.2453066389802729137387483331964092 2.5710460092899753898217845599308828 0.0089091468630228783494780084057233 1.0089490706131947323076902250289256 GT 1 -372809.0425775633941464106488508941967947 1.0117874368705796997701600900112272 0.0638462029838730209890565913380404 1.0659755029510381570692508010283552 GT 1 -21029937714261132.3329598329755556198288226235288615 0.0838665087130448321696048930290947 0.0188189137828517173180887810557551 1.0189982429585312628425250812767675 GT 1 -3334315583881404240107567658005.5281120464821256797720056328265017 2.1641628684812700790823940322306149 0.0597891535539241406697090999763945 1.0616511241407643040273238926637349 GT 1 -2096937806942247079702367669547.6759412511514717316616544655309899 0.4768269491257183135956992497057329 0.0269602168506117125897912200875448 1.0273303105308682384424403653231333 GT 1 -1454037671585601199564372438870804804839329.4030760159798862218143120316286048 0.6302518567689567162175706816751594 0.0069541605443387723170527579777848 1.0069784534086062510541997701853534 GT 1 -1062722862.4106613078716370509457320225896693 0.6123337323729421803734374748989673 0.0971247908299158818688722112862710 1.1021709309400090279434127764829370 GT 1 -494.9532336254299483667705760749527550 0.2135164335332040266152135255176405 0.0985970837141442811047612655698898 1.1038029334458706904842484512618292 GT 1 -1299710674.7346082923004971758521068374445844 2.4211027079848940344931069608764275 0.0344216080765014547502836146353148 1.0350279873246194525335770943160053 GT 1 -145448130653.1417210845226610121189707131536578 0.0632501495219075267844656147745848 0.0050058769516683808969216861064177 1.0050184483250764528968273802043600 GT 1 -26007784434635432083357.4682528095872584212081410878230127 0.9991704906308786554975930787846604 0.0541502469112993424602604983626552 1.0556715459174928818742338876131789 GT 1 -3111089.1040164911971222030630100988583799 0.0353815234614676588833415023451101 0.0993498320186382031541302935619674 1.1046383676013320484578957735958232 GT 1 -2057824569303487595615181.7977546969010293463281641381211230 0.4691735514952104303571306049375210 0.0182024520674706219423817176035423 1.0183701548836816484781515304573606 GT 1 -44407483914496661009393336.1057187677684001309360451224582975 2.0096711062278002331097576415494748 0.0471459378782527586205994964271683 1.0482935222885952166941259851332243 GT 1 -40290350.1143023280974679237320526976928863 0.0902528478315325861526690574414282 0.0425358062199756231071719649436180 1.0434669541565669117687196992021524 GT 1 -27595330837.0773063348237544396189911862689261 0.1980713962626396037375309736060704 0.0099566291988182538183352288370701 1.0100065279230002690545767544159484 GT 1 -24052500254643603.2670531242598432934106995913863536 2.2851275440098440848546392913741351 0.0044941421643816027767824677012148 1.0045042711801625248862235042358867 GT 1 -13554227444145613800899776.3079813516951340109475622766092656 0.0859217568057242928657883039648381 0.0086086288869194213131567657917177 1.0086458971726167627907145672607689 GT 1 -5996332682470998424391865.0890228362316669088424217455494036 0.1788075195813850123307523934068590 0.0313501190518097427586402739654515 1.0318520523540673545309816691644249 GT 1 -1572398282313017023663886249166232035170422.1108249238370593088108325760518473 0.4553113500364178339558818872044044 0.0556958262840287721437270038172081 1.0573069468182204630055678241924038 GT 1 -124756064459051111.3873477952398701832857304261327258 2.2409292313024629804932464082978387 0.0776701669495913239875080411775573 1.0808523829007980842222153287834738 GT 1 -8430181953000816345945203049730768739.0018927591480705946059241526122061 0.0904343986399180334432250929971002 0.0792787745235099068251694233467591 1.0825979753247746691602892893676109 GT 1 -45803454696464036118409.3628626404261487008962874869038153 0.2521857164481570132114760268605276 0.0168914949897273754031186782243384 1.0170357834308600183677695063926864 GT 1 -3079674848759578445683904002574.8882321178611474980182372143117718 0.6744297515301385429414336501371035 0.0504720431956959646156904236921783 1.0517903054515067826346996462247585 GT 1 -1126662283177213244652672658772270231275.4551760504897182488867588676544443 0.1846011876062232331949560393356917 0.0946644283635373112873539017364211 1.0994496066222169678214137214932942 GT 1 -300729025040916173568915591645063999.0899121568989695410282955488305322 1.2472934277622880858685211450589943 0.0807048248966903743761041880863414 1.0841480165725086171384322443549351 GT 1 -1068738892912548133962948504120.4183322114361767634214439807167461 1.4036444504769828581945780383920146 0.0376631546648837178018975080163713 1.0383907385290076999282453398522483 GT 1 -17331245163489131451612143.3893780039586221543694409525008267 0.9082076754493103780952213347964609 0.0113876130306995900961824299820028 1.0114529483786511053663352978349912 GT 1 -17678993492630188912588113.8239003087682835070573914307106922 0.7253913281305124917244617021004548 0.0197048448626339962638080187192264 1.0199015739511252004361749107906220 GT 1 -214309719132964353305278988129856883790.0525381923049163808928218181929271 0.0175440250084839823510030561852160 0.0861842561408230637705332325655923 1.0901263210025029917486627819017180 GT 1 -286010.2256887236093813447537158496165232 0.0326909566209427839292894920371275 0.0801821305809982751000323426431708 1.0835795965601308955442143986178741 GT 1 -1851583913455573448107402643.8053180518206868203081941949073437 0.1295078626462610813244200293917362 0.0405928073690637041848018275075199 1.0414396929327530127447098204429498 GT 1 -146941594133743870864120048.4214592534777006766137185410328051 1.2515289601051179898030790072721441 0.0839512219419265714902914224196506 1.0876856645706972159374462596850420 GT 1 -956745142065476.5873251225345725504419388368204690 1.6259905726829993333276647589642861 0.0518521442744318263387955534236788 1.0532448229332996594506911426716607 GT 1 -17144622270306331988.2902742804030743427644064536951917 0.6192802083850237730429458639276586 0.0020369772940948488839682041369523 1.0020390547539816644517619200101522 GT 1 -2079654491609543579296934.6602431310785675787835072159992008 0.9306284441247009777856809921023235 0.0466052616548011134782064948776972 1.0477262550590310779532511423956750 GT 1 -12513714566237278214138287445683829276.0653435432021420472094019935497064 0.8014504092914826286653132148571202 0.0337128285785922581385072221175220 1.0342942100440883162801151198302365 GT 1 -503181005273536416028658.9567823978554752163764989495770885 1.7031555965262264244217281428159213 0.0558049954130174450075882984622751 1.0574225615141276941803991173691706 GT 1 -801624920561738418589.4764682358072431153253158316391035 1.7159907018097018762380649772702491 0.0253290471383322470636683654299995 1.0256553491893567319492256188596452 GT 1 -52731365747767652035012669033667.4166198805842540103749269732695834 0.5589464574894675578004210219658316 0.0723033692564855250233571912640220 1.0750505061679083632073671516440522 GT 1 -80200614327.2863433797308551941899182196534557 0.9248467271649234348313217461364648 0.0844506948265855463980563760446144 1.0882310603118400656396937929268998 GT 1 -3782171829978225362673757.4165598138712818559710406900511963 0.7379790854113419020964067760533379 0.0995926316975238891773576965360681 1.1049079866173436172668530904500936 GT 1 -9893368427670321722968044884325.1488584633213826217645110547199465 1.0074565109632797238917589229546579 0.0477345336652442434960604263984259 1.0489114318705689130507008707069608 GT 1 -38348292745866072500180402.5223633490496762190270221850517836 0.2271582141647357870051186142307709 0.0498660658720794233774799050063831 1.0511523210322129707451495347312444 GT 1 -21363020.2510790596508130376030005527014366 2.6055553321752163148898341024102285 0.0352581566879332167246261225477732 1.0358947333168470124467780320401713 GT 1 -191994974937349488259851486705879723.2166655260287081264098306828095871 0.2990823287111964960789872722323682 0.0958178215189608672229477114509070 1.1007244140249630125867823154955686 GT 1 -55817541426545117.9567294016677225389855009703384484 1.7267829424113935112403079093296532 0.0597031462638169595286534944630554 1.0615596517259916175386845993259700 GT 1 -43505889627551105812537645174023117476218.6908576990562205883634818653688207 1.0431582414995944057819119121687162 0.0910363272390464252095432894913791 1.0954501495625855205124048272679140 GT 1 -2183405545708082388718884334759914.2902026652813192719014984759715549 0.0552400674332559689175971346317254 0.0442676630785210899813238719668073 1.0452773874328055766497649849747006 GT 1 -23773229955491865130068.2002753956531916066134035967005781 0.4852752955997736775724017629338997 0.0383628572975502215153532085291021 1.0391180900086685658116935772933616 GT 1 -63178552962289456955815.6993866040563557715780686930978685 0.1806005782524771086338772742909508 0.0093094242040671837434023092571527 1.0093530277203142437059083711006614 GT 1 -1141513882738821.2914059315437105376825454739496583 2.5960555917673515993783397366028052 0.0485838494729230660166371277491765 1.0498037195898036013550039391729725 GT 1 -108747685146310.2357846695001327526677044237825981 0.7291611823709203387634555723311214 0.0894500526163570409103895518874502 1.0937065242255574264189641583604410 GT 1 -1688817728313326029604177365536243914145067.1080158893065367749483064972337411 1.6040467204222847471102427742670534 0.0001706320937397638810823510733561 1.0001706466530516850252922305483640 GT 1 -97239789569465386461219439471499.3171953376356851779849543489761066 0.7762003036676170011344615699568464 0.0534570210540110166800328853733457 1.0549389010742087346600139078847285 GT 1 -114726119859236704455.8655376486875013188106415143830878 1.1636906642786612128910665391448467 0.0298374411701716054228951423090225 1.0302916351032408473833313653873704 GT 1 -278872747501140419.0272776753018310942782845963257540 2.4787136813126743598849597162692745 0.0551818686963874917792872071580553 1.0567628236569447069314869032816834 GT 1 -508972.9603986251613163154505025224423414 0.2866569875184904929955995931334943 0.0865660837565707585765594454723352 1.0905442470578662467638631168301619 GT 1 -19216679362726450706782921803.5263275081760332323602956626846817 2.4563505752302221276252071389359362 0.0493510405986036595151973922531152 1.0506104124451431259965836653665369 GT 1 -174473355945.2261422604016574905886089467553544 1.3170427758728745711920021019102517 0.0820363759182115596670781400323938 1.0855975143299818944303344965012170 GT 1 -1245636984.4089114198533880884648069438215569 2.5053332332322856248982025805413260 0.0072015787748085424799311059199947 1.0072276353174284048256509097872346 GT 1 -5146747216640216733668679583.2271613414985401594986150845651352 1.2873237208310495250490727573595200 0.0726374998268412679676260431087821 1.0754107432820794876954727118391416 GT 1 -4624777830364150477982433.6328975972196436868804567250720580 0.7524042870833202956284514455655776 0.0538604439620981453094865708902285 1.0553651985717973105533127364741896 GT 1 -6.1683435891666465671849810018622485 0.0151635196682640744742311761645595 0.0555683329566978398663292768621056 1.0571719429444407168062390812998854 GT 1 -4894168012062744.4481599554595219627396956727184998 1.3755586888827926731441980953118018 0.0937764361570200849610635911988982 1.0984692441706166595316944770463068 GT 1 -5280038211737746135738177730126.7883561317938407315934491736264921 1.4656020700747673463206283346365888 0.0634179607648788469125038781317019 1.0655181589752686798239143552922119 GT 1 -28389.7003174277648421185632534287890539 0.1991783852912120680695015479649896 0.0217754150864249550718394736203886 1.0220159983838969471127916016847671 GT 1 -139858722.3187960333569750248224642124895138 2.4589347774642362014570492213619132 0.0070661131605393175095406236761227 1.0070911963685034099531484637606812 GT 1 -13990226651353948280689479876490077128496970.8093187338867529267881280671820251 0.8044400810917488652126286094965976 0.0112921819872978789737021828490752 1.0113564227443756233547316747335415 GT 1 -238204171850095044459425236033917295677586.9795117090215036240997004872263633 2.4448667178546956106823581534839241 0.0919109624430402545525331600975866 1.1010605646615382699022706967527763 LT 2 -202334268993191.9315306837680502010248796894207717 0.2654002632090832420310471505424821 0.0423038117532949822784903534131292 1.0432246825745181181975714637762047 GT 1 -9043562300959281736807072990.4050478403228848394649791790004290 3.2146777006150536048673955985579777 0.0323826037299191256169628588820389 1.0329185216252428810709250204673976 GT 1 -259394124993700313080660677.5536399365630083839634498775967945 2.7602613459474124556015365053013375 0.0269868003945731818205236202876849 1.0273576310038447668816662400690832 GT 1 -93719111.7098251727728103966237426664176972 1.4508557115049406314204307089837891 0.0152668363067010920317234164807850 1.0153845743137856236615546719797608 GT 1 -501.1519526185122040328460678334350323 2.4619601560072931772125789409868151 0.0547849494901542486688978198832329 1.0563428107006774762900916631118845 GT 1 -10202923698198383624519489317.3030684797437274618919247085921970 0.0518216955347482890814937193375786 0.0753266828525956693508295692990342 1.0783147745006086517742682838189816 GT 1 -14153529530956575206907.7844392246139433152556812843652050 0.6273225565979790482969682019135475 0.0697131072955867808035520073798726 1.0722622536281595174103330516173204 GT 1 -353113.9087147039950938069223330057388773 0.3936032922636316358231977828165028 0.0139899699713074055673556522531462 1.0140887519883474837347126201446654 GT 1 -8167580260064655424466487117052911.9584873576598580948228660362344029 2.0791505703351456203662227466199372 0.0751913803387039656472875867516375 1.0781684605394498348362339672551225 GT 1 -87966715400006964354847691.9101348291431728932373562631122274 0.1053086696736638883537493364178683 0.0071049259325475991236368606871320 1.0071302861116558094427053329397715 GT 1 -5.5613665631150823979184901038486320 0.0227604414150982186589324093493932 0.0993382432504591855979488024365744 1.1046255005703419453026710872037825 GT 1 -46547048175726027527759376.4530107738204823693176030732342567 0.6920060281370026602240448197048079 0.0164167312795773015599180270115156 1.0165529790324140287659066096966145 GT 1 -1211968219.4692436624798940041654643419145671 0.6736657718909830963549319480387917 0.0847035666775271772356928155584426 1.0885072953296055061765983372015374 GT 1 -172747806086531.2799569439699965135351902341088085 1.3067579636479636737251044128005852 0.0507104830976674123240761614169710 1.0520414511319383806434667906233491 GT 1 -239498099515.5952824411170387695037491044729600 0.7021065315613345087543581462992225 0.0760084457922451311764131197221503 1.0790523478500249840094978039544505 GT 1 -2746436059675625360770232.7170394018947174426403300805550034 0.0318751093581157315978828223187145 0.0511810138485132192094799997183261 1.0525372402395969660649772424524468 GT 1 -2010335178541.5279507316939839120344818675890138 0.0814643470809879415018371145435420 0.0713086474694455185040779830125374 1.0739788316136617133315554764782749 GT 1 -83737.3509896018846501807279069914093542 0.7301825689576746389932834667354582 0.0658772837285655928209904539919903 1.0681474615130099948660955811520411 GT 1 -1262970315444264679694447551.2567739168804959672344740832826329 2.2323668162673155681280458784861981 0.0143390092097181932962280780011377 1.0144428062279963891269372709494476 GT 1 -9038679293726344328693592.9419025442308465271499323313306940 0.4286294469069937818190872893202757 0.0975651048525977181891644502658474 1.1026587297180248135133812309326487 GT 1 -2574432986388412760844216092901487941.3455389475046690884716444666901696 0.7476475627004038372537070409025056 0.0253780071709064222295935421718141 1.0257055828217029681298649771606713 GT 1 -9653299673326197773844844689932180122.8054592689397340549791650309521790 0.6597430364272246718190013715317223 0.0341982848054469802844496105615730 1.0347967296128653528721857050621931 GT 1 -100570389.5552076213823187053903599024610348 1.8922603452748850308404500271611844 0.0765585069109462543206721320660389 1.0796478347996175578455393337700525 GT 1 -172.9929061407408550594903121177145516 0.3094779621082842631872537990738835 0.0969998565557710325669134212753794 1.1020325667121975078683231028842546 GT 1 -181030019262519330712716703054877.5713206648763569458913203240655736 2.4164042144133979835282489587671341 0.0208343258425899064445861889271323 1.0210544228248208599766421865233826 GT 1 -311123639550.2423730821283206326170835376320365 0.8665498644309585749143761024057389 0.0315419173251398184663429014081896 1.0320500777378442229739787315585796 GT 1 -13056378335994313475046994179260376732946.3816769480437964523298208511847147 0.2805475553913510622708292999336695 0.0838050361105549429695629090820613 1.0875260942817285269839715848257454 GT 1 -3803900971742329537398911506497220656.6216507507043584741458575536415176 0.6779652312832056886096323246560785 0.0659700174074069061159826060414718 1.0682467399916631253505418746365012 GT 1 -2319647186308825244135012669754958352.5590984831897595421464744455575958 1.0117728741414374904640381853206455 0.0219692208351053440578199294569047 1.0222141379037911106014158143774377 GT 1 -7974544688.7967756435527033836344326221176047 0.7225707373061476888893134480725340 0.0877944149096326249322324390537533 1.0918898920633731698600175615672373 GT 1 -10414214.5897650948215201122155035031707980 0.1289744213536154472553392687724319 0.0681616131005196054569452096722931 1.0705958839471556886419729252718100 GT 1 -83927784865454694.5331074688912203309048891383512687 1.9029559018951609715241987342003343 0.0265747254643999423598158160415364 1.0269342167096822163517786370546020 GT 1 -11407326960527910274437031.8074659444094014755728501603893183 0.5185172339638637169414279307536160 0.0256303599043809450965480110293892 1.0259645400492473902123429899377968 GT 1 -370594342968.3841004778383997531312514578201584 2.5364970794657320458203565753325673 0.0168653687049707098933253864210439 1.0170092086047097833893451966530436 GT 1 -67480862976254022646822171584269.6132024381203570354890817792959830 0.1852578816674227268578804943724655 0.0384807291217475954455889187267691 1.0392406716390680479414960604874142 GT 1 -63828.4273957394835665855806656120528602 0.3774931880218943354100350971267568 0.0988900744182038709321485067525123 1.1041280248403224385318244806821872 GT 1 -1538174465554641354662355716604.3616985416076752722824363612991567 2.8342849325453985273435983159631573 0.0047628706682042192119803494999916 1.0047742492809893376462771658394763 GT 1 -151026487767646.1503822345580777552125706325635603 2.8309133819494225360895746800186080 0.0725905627924945841955799027721133 1.0753601310926121525351491057230632 LT 1 -5805523431037937440698.6479860729740435441799707253316161 0.5419013422565942916144029635566007 0.0431312786440240093577615352357957 1.0440890742053273152780572782269249 GT 1 -732541669659626540872518492162296788864924.4836200479329637425991814134880671 1.9630655817243311337874493676503416 0.0815473428155050965706944972322869 1.0850649192759573459372037318087354 GT 1 -133421.4516670531566744897798657229076119 0.1860214850040683592015835627758714 0.0575611476858995550577079320262238 1.0592842399459772499405065098579042 GT 1 -12665356653281864428864809726979950920328.8401806566140219031243988103700111 0.9980569506007857647038898794008913 0.0650352622288922638492161935347451 1.0672464640184147838618153172602308 GT 1 -9609378075368709026519284786.1291156359146773781711356491748561 0.5850359484998205853816208801208590 0.0003829761902233819829625560755414 1.0003830495443337039688515150054759 GT 1 -34356282297818.0499484106466754784241481314651633 1.7848017786468728590383178630387912 0.0925704065917985515106749724513846 1.0971392988741150928988211308370387 GT 1 -5594050111543854172422.5763207634942257500250167551703586 0.3174480751301897824852941362508279 0.0060954908064231124577744251768246 1.0061141441499941569564286900503264 GT 1 -236365510277848582598249862.2641780337912323351591079400532082 2.8691579822244224856209592124999625 0.0893463594203415234608882387936768 1.0935926509641462402298111552579107 LT 1 -692133932946546917022195218741.2156023159822697231712961724833290 0.7864962388635803202362909176965852 0.0273157340878334844978821566355771 1.0276957449215770588999971347637367 GT 1 -775839710162136863697.2017464189219036996758183826266818 0.2337966710333309527718234327981079 0.0767362383377429324181029990829717 1.0798403196879213654113670160164714 GT 1 -1832575847330987240103331607689317976.9020679837016327467334054856288035 0.1375373689745123229997918435439713 0.0857785350086992685363005657725162 1.0896824338246914151324479071199226 GT 1 -39.1569784564646798564715733427836801 0.8536181127359219240619510779821782 0.0950118048325291368763251828108298 1.0998333793811291691436357919678394 GT 1 -332027.1536003408114066768253800415567858 0.8753736167939287660543242323390545 0.0410668164481905439562183194745243 1.0419338795689295911320476338779451 GT 1 -425667261319066.0528753467580808809854088035501444 1.2669714141233601729618563050696109 0.0145535895368041143116307346437183 1.0146605318859662551724427938992854 GT 1 -255199902441439897351448381995776346.7335500883134868605505296347427324 0.2606598606758700138705306936484524 0.0489121705494278434380225292829571 1.0501488658635768959247276282390704 GT 1 -40130549171611296414528307.9180783824545472178673645491828692 0.4214028463711259214207297182800215 0.0016975467134625232153931951300620 1.0016989891785504335649602067062677 GT 1 -420306339277686505268110732982368152.7831646112166165341341970354018593 1.6421937711832310295533039712597848 0.0869863862725060837497885727631627 1.0910044875153198490724158207069896 GT 1 -43923604280843784572398.4791843711549437263521131286964314 0.6660458355701099791526150278738293 0.0151814759435542251161378053902070 1.0152978943208397785390368476819992 GT 1 -3404992292768550870988548762359403978756.3302948528778036314798694918696928 0.2721445563095586058851710893089417 0.0120041192149516865805944180411013 1.0120767504888630837943358940324530 GT 1 -131465481440550361592423074131678075255206.0590059326192926058717427396027633 1.7995461555750887042545539460036755 0.0709054933991605041952388248318555 1.0735448159550410734854524885932016 GT 1 -460791853463959584301296688860558636.6271620111940894893127041889112376 0.3252481444988526596033862157430929 0.0048597788738903750132774399720274 1.0048716259977615985338145538393284 GT 1 -141724775875587189582924461564179.8160221663886286923735906059041724 0.4152202838557675160259389019172152 0.0284641966880659787343809399867183 1.0288771572030272121074968115717869 GT 1 -89958285431368.1217004790521977693391698148414135 0.0888123779395964416597942188543724 0.0187261531124110479459097942627448 1.0189037076202210998168552743517310 GT 1 -20939813.5617549557582522965937964991625595 0.2518640740128956724384969003795047 0.0836034707337031460015609007573665 1.0873061157666940379510637200283534 GT 1 -16040437016147408212103946066.8377332877761732934641051223983616 2.3886929695385114232336005932136100 0.0979313890564997409607847577848901 1.1083758622934619847716945691778785 LT 2 -2495547390046318229721310653132741933096798.4712274646838845605617928640535902 0.0486322382701815529897527529080157 0.0883297142584310857079984433349251 1.0924768830672340303176826661459514 GT 1 -5362234129168025222785530821289350.9968103066499762286226388114800311 3.3395138759168855943640713930244791 0.0859862553976901881716757195510775 1.0899096697829474830107072172436842 LT 1 -2524942188299467865494994.1206286687980974048012241589464585 1.2497199767816360123656176345563765 0.0511003582267653997355786103478970 1.0524522375204271741244900185701798 GT 1 -4.4218721070156199165102200679923193 0.7543799645629302090876463006949827 0.0846718525560570648981095492241662 1.0884726469130961992178846596385425 GT 1 -1363389188145700901914499851774761.3204260617376931217275291386696678 3.1297136073915622212279393709412131 0.0894167071519721553244023989320111 1.0936699036602391302501595925424587 LT 1 -10042137106931489115980534504552896252.0851606423673438126278981528013823 1.8571805034883756127252479503217121 0.0686829270116894393644855508400543 1.0711554871965867402817059722911101 GT 1 -113667240086333.1616281162359151640232699525030047 1.0915614002912528449967527580409202 0.0949756966752691129710295322983666 1.0997934811403215580241843706006817 GT 1 -2534038009646845282680.1887693619916079540101672624273852 0.2344269167334443450082757484080306 0.0295133737818848871745177712972751 1.0299576567687785475090311009955009 GT 1 -678959992294999158865479877266.4186240064088421985086480991471773 2.7548585521744442191921336541884744 0.0447691031609377577737148729744945 1.0458021909298762418015613436844542 GT 1 -4572055203.2440018507588091306393515247649408 2.3215669213699926422689736432294583 0.0195897653367509303742241878342203 1.0197841881096685065083813965435113 GT 1 -837580077476424488.3211487067017102024773001435721246 2.3220658491113337119136369155296417 0.0179203948630424835883955574413107 1.0180829096189494169528812310922245 GT 1 -2553337107523556823720577802912395855207.6601673755264660329883939677131810 0.1854743583486059876560974947732375 0.0466365442798720832726466259295998 1.0477590674262952038813952260652990 GT 1 -164628887334231126872984832290580479289.7512902414519760153194141001147841 0.4914206610587574303578614450435494 0.0828420769811300227346694119523338 1.0864756045207494139699980130273192 GT 1 -58990741083191301863663041133489321.1193204658093433089295433750060491 0.6747350735782564440463884904383343 0.0514235675225431625888458543368856 1.0527929103787464190710635697288299 GT 1 -20295235387302534163396160978010469565025.9509763636575772331114756157454785 0.1715169977651062276418082100576901 0.0716617202313589520701188548147504 1.0743590870064963961790144532691882 GT 1 -4565.2316795929741518375859787496419930 0.4986697437416695219579697516972392 0.0417929500561376343392248466147916 1.0426913970733704064623940756711564 GT 1 -1949454704813431720.3983044539429846642821169007168615 1.5824596703431695206750088750384196 0.0406509538717677506066794911911958 1.0415003014681649403147382590000841 GT 1 -10793228004.6103205917049126839899041121002233 1.5017630050082676292272983541005476 0.0448541934526751821562630014220036 1.0458912731424501927447059912341563 GT 1 -34450112491899501171197658313126.3643656250342518330254137014573669 0.1632221570391808250196871482042092 0.0298467913850310575413011748303856 1.0303012729312855452801424518613232 GT 1 -534701459316050065890292116135.2974809837279114916153845454989794 1.1527536626193950068674229860781882 0.0886746980514473029186851445627951 1.0928553631902402547738009379338687 GT 1 -53989637725748.2595481776488524687346459296672652 0.1944980008026061426898256547793642 0.0012113899811774626430034844346005 1.0012121243071173408051536007358307 GT 1 -18572174821526905131794585896123874123512019.3417590517909278116893944815239924 0.9371924883445116590207670475109546 0.0722772689966665834971398497264239 1.0750223720863537866365274926752745 GT 1 -290727360082672817091437634331672.9423152632753199669143239304555734 0.1058689262927293127667473078653794 0.0767038589893661159824059788433107 1.0798052497740417604028760737972159 GT 1 -19166.2976500958351385871537827190660008 0.0805569360958437108719341125594474 0.0951482463547140841144851642809942 1.0999841568269833604075016087938837 GT 1 -444141891395043099085569910164469627.6408265146853580309963417647650239 1.5843492641032081905355769603113786 0.0049523956782690097896536894200994 1.0049646994285817803052139890692646 GT 1 -4301014564784696471757254156424404861.3719376598975955121867781390846978 0.5113098169920827320023621035640131 0.0714610603276829716451891799048166 1.0741429608110148556131939405528704 GT 1 -22121858625.8540749488155947123097670090823360 0.9167976055189978694749008000609505 0.0423758429950748343115573476322119 1.0432998984432289452964053962661481 GT 1 -6.1335769174624909148008293954197950 0.1271337338309227754069492579999266 0.0646462235349271775789306414434454 1.0668304507066556565288760128276245 GT 1 -39655374565535125.3480807667540151567477341174446985 0.1840797707153188948743018469746041 0.0883904399721799104860931716967527 1.0925434945793528992691104531579082 GT 1 -14707355058209404196238857.6406254261243350022961299434032815 0.4302206114398196194443589299827212 0.0989522208486782240601771061543470 1.1041969937550137205551938092905824 GT 1 -741465292727120965050377136237408.2704195488585734716515849198141158 1.0388518602188033066435074590395291 0.0953283848739188336503235718084060 1.1001832573447314490545352398935260 GT 1 -5034823398191.7744827471698696090413652857162441 1.6863636017398170495626851824520327 0.0618080671097766478640070888439855 1.0638007316216307683608939963329801 GT 1 -36286800357768179725281802230622900039399.5868562042168888552421070525132166 0.1495208700951355349323264832450013 0.0078125503809411188325261638111142 1.0078432282386686246605242432646531 GT 1 -2454817247693371922382178111136890909.6116795489348638022050194295465330 0.3568554958905501180971227006117867 0.0548987801308640386214008976800943 1.0564632462517342935350185565834598 GT 1 -8017158241701714134412.5401261301044390474839969758740570 0.6420041468962739388908699486617523 0.0933477812918908922134120203063890 1.0979963437355802335764305421611697 GT 1 -397807746962952730442321977448940295410898.2633615945353078752251192073874431 1.7061753866382296157183757375727826 0.0950103421282550199686035398418473 1.0998317631135359926491226179645933 GT 1 -122653604052486116866597417018967089299.1024355291725326800643994539656740 2.2498944753820633365385760347131439 0.0234817141100682573032672273996806 1.0237618028909809473137180359872666 GT 1 -3588196184831340448066.1700561113944623799666650972276623 0.3658418963785055605939074833339115 0.0005899840727423121505031518716371 1.0005901581818297839264714340903369 GT 1 -2256307634094307293613216517459836445856.9792572473055621575205615068045539 0.1542311019072671858644057727752139 0.0880325760578591666802530921521404 1.0921510089074449369595955375446489 GT 1 -201837624990779037016297558.4413725343431779833596427996803291 1.1951371598663478586829908102793623 0.0658651787374730435275410127016574 1.0681345029236832825770796560958961 GT 1 -898072880.0367493046641530750004587830417712 1.9577199619388765075481107247980514 0.0555045862622629255924614762911473 1.0571044478091253223825286071709674 GT 1 -5457950749536625884.3374059709279912375691625941609174 0.1162407219573391848113405878738481 0.0130924845201635707109531382972776 1.0131789465936978139012029353417732 GT 1 -705370863259035520570.9584142183301921068526699814706281 0.8918068633653643754673212102091648 0.0962508530670538115861834058563420 1.1012034494288930935878838704729424 GT 1 -2263680.4956727791888247673858357027065037 0.3940327851235218788794943134949205 0.0799709354291851267559317385618303 1.0833500175132666295204087378753853 GT 1 -178923.1603727261019014578196208403297229 0.2171446610804018196991431491417203 0.0798840857663978629268199414324698 1.0832556231434184667901717961756994 GT 1 -2805254998939799725234.2749162170561087800062276390122886 1.7769876606605121800723396864930654 0.0108390158260708863395965582638466 1.0108981859102077702761541901568709 GT 1 -557061637166270128616428672591130277.6662778883381794210743510774897062 4.3554602563003572036376925698060294 0.0110525145713284146120113806322443 1.0111140474257589765828650127739711 GT 1 -5298503.3121454956760023444767044532013491 1.3410698947707717196738688716481300 0.0035610892677123033999876549623720 1.0035674450395655255436708620577512 GT 1 -1160997601079403288551506432991773.8464444180900041012230810828346002 0.1590682310371018740951938635036619 0.0064623267805450151959113390129057 1.0064832980117104064409230085398487 GT 1 -388305.4217450302084765491258487704536048 3.1950861981689387551013411521227503 0.0099313073189943576353436651484048 1.0099809517141661630190558563164299 GT 1 -40872408091122123323304043437727.0058740001349620059469472410381166 0.2382706556580784060931657179235937 0.0631288701030739529761315745093614 1.0652095409976617296840336301749120 GT 1 -286377015221452941.0672779659431255812789644518784165 0.6713620573497428036585324300668153 0.0338967948231531130651210602408466 1.0344846128191636988060763202064052 GT 1 -431712.6746935342886027064526116992158931 2.0755991087521209849625577328917102 0.0247478858562131117706481024149772 1.0250592628009642141486161064394749 GT 1 -89785.1753696632248348274967622326404044 3.9478089163146886469744274200832308 0.0999252104131303228775005155465795 1.1052774195694355774128530942620765 LT 1 -2096383270861963032.8150520868723672393989370403824543 1.8884032021423668361227343068386015 0.0115752341961664468453335407550879 1.0116427487228347513492959248170232 GT 1 -3.6688820559885947304530360387687890 0.4116766705592797941718628617707864 0.0292617350338422228525763425736041 1.0296983990695857140755840276299520 GT 1 -85377170061019312549300113947826.7464631272383799670093131590599013 0.3173839922494223102987850382298282 0.0708523208789333672081319975666217 1.0734875871173252917295899317700864 GT 1 -18789939906764.6232626409634401228766057918077638 1.0253644855695780334946216134404580 0.0677084787705824912761678065747425 1.0701097221867696600433896754313222 GT 1 -3320999848323027556783257292.5111756810666028117340719755164984 1.3381182363412063959029569607765441 0.0008475912327407028656506415968342 1.0008479506412916545905229588745122 GT 1 -442382108946043630769003515.4936330263338288740897775057133470 2.7318146431447994121241902349998818 0.0627140721765370046686299816436902 1.0668642659432098479179190653116867 GT 2 -2267568238793496899551530776345222044015.7537844323649545299294607365800385 0.9849120622031290352940500619862827 0.0329998537105878816860375721699526 1.0335566322471456706046101945251909 GT 1 -52246681946360396748678.5641861575556937334694252721175976 4.5719190403711659909879052194166373 0.0815056127734929213710226007799100 1.0850194851496483493970873853920101 LT 1 -687357372854692927833423.4257436592076862500447030771343633 0.1328595653144451804837218757125693 0.0420944839537036745415200989821477 1.0430061321316412000500816617045127 GT 1 -97313535001.1324343292742731025699639787797611 4.3974293962366780687232292524528198 0.0111995944560157170345970293034551 1.0112627821412702751783132641948646 GT 1 -1450526.0554339527719946664197422890262439 0.3666562955152022659020521000111688 0.0103029454065781250696099741061880 1.0103563881439161815579234491091221 GT 1 -326.2960316476480461440780499065719666 1.2121767380211660262547644613577816 0.0214733009402518844959186571159452 1.0217072068159055250392680277485569 GT 1 -42919.0729823124545340822778527946259673 2.6177394075900518987424859590398999 0.0521205162039232100896569768065347 1.0535279116057988138428920891999053 GT 1 -81782.1182904266889592511079210984334648 0.6091227868909120587117758773454588 0.0595965955073307748094103713012484 1.0614463420626000360062312218663397 GT 1 -715902790914628035345079835626949.4454551913845351995067573895973973 0.5457409963242278259000022195370298 0.0583192647601111483215862859884518 1.0600889841035492032365216261987950 GT 1 -29602806692969.3941112895059614949740037759212797 3.5193684803237431701636514792201229 0.0731869255851751491902228039799313 1.0760033794724646812654507267501302 LT 1 -212.0213532726488977488354216306913210 0.9928500227162423788024393964351931 0.0384088977937196262930756774598709 1.0391659683572733979203618167105130 GT 1 -79.2333596413113742051902200056389774 0.1963694607418796192071962105446572 0.0364091571493546006938825182288244 1.0370885113473416220669001633849898 GT 1 -2485098065958146560354777387852.8497646000638922414070496959814278 0.0392158825606525215764678888759874 0.0299775425367860865898757884644356 1.0304360557287806459469871828080675 GT 1 -1171783.0496768271657578052070149799459637 0.0506798069876816877830663743201443 0.0314170662378214744456498970378165 1.0319211686580345591332982213473487 GT 1 -35209081.0004102588864334842712019400687683 0.3363864920917415100321952427904773 0.0211463002151228748289677424717099 1.0213730860406447391113843973963402 GT 1 -112645843550923095029929524452.1232991430417285370832856752920267 2.9946970762863007517367092062920519 0.0985249123378166199315376295848359 1.1037228710387547703898678426419041 LT 1 -1067252.3962908678112302323316220566400135 0.8857755805446385965881568975402359 0.0578202594002283072538897046853293 1.0595592151764410228045437151203105 GT 1 -178690477.1427695227146741032035812694415011 0.9118638169393681954216880651811544 0.0925211801213980404191001568413741 1.0970850520922365148456827965080368 GT 1 -4682292154193027076539885167272499411299952.7136202013455079205342301139204538 0.5481977612835680082768010252957521 0.0245095842010365193781269724363476 1.0248149438786008691550014332866825 GT 1 -11381221118096885286405479.6053299333291363917970940392140385 1.4792920686593977362600360295913713 0.0279223836732810026361576988901640 1.0283196255217317192115092054500095 GT 1 -22525699648688.5466300639121958281278482758212540 1.1616394229729611414543586490169341 0.0614198393862513172373597407809378 1.0633870130562209197759479406948359 GT 1 -362157940006826156353902088858323034127020.5520672798046967699132031507843391 2.1213107789464047103080384473668375 0.0113373530085908784499536904698192 1.0114021107144351569615391749583963 GT 1 -935016101747076862137536712084889332396658.8545616800600829411425915801331577 0.4485743331980848335114355015793670 0.0755354207264388525349121245509739 1.0785405422761042830812966645373247 GT 1 -2086394020451069320783219442771257.5612699745681300084067644958689986 1.2394769069450442494615205224535631 0.0887889951694605921425374220460080 1.0929807896278239583969325578436283 GT 1 -7980491741600801955781879149158447751914558.3570989166621501192393043317144447 3.1394542045871436551473068253487225 0.0042574942526293823334102230815421 1.0042665831878514765258168150546309 GT 1 -4676608664424273712844435540.9575431287089664296748208361624898 0.4962692376984097429868698939507213 0.0129368086114978645531315567810644 1.0130212179015274735330460512619307 GT 1 -33193161902702261.1159117032849257818995243883953655 0.4906987419848764155261506060813061 0.0957178982654297652380284886707190 1.1006139078294844109378606133357151 GT 1 -470889792868997912.4083877522714347236048699288098993 2.0240746936459866372318439662910437 0.0804000746685424826324517595702431 1.0838165672898760258842284325077615 GT 1 -1418929838429603837018.4654329052778525875274727218159209 0.3250831455983871368307674617624944 0.0175947287684427935872606169461522 1.0177513559363524600653505367040009 GT 1 -21391506540033092269843825753836968.3558597615374738799381730614272381 1.2039834892554008158041553985899751 0.0323635848771778948984581006385446 1.0328988664744508987545900168555631 GT 1 -169802572217739543355.3429278865030359874037946515919655 0.7297601593778918638032381376773663 0.0717114800692648933466332834742795 1.0744126894191362574579451486178240 GT 1 -111442.2884761596565547811957995618790015 1.1868881848346923345902290699515094 0.0648830483231482150664954454726012 1.0670836755082239568457094853721530 GT 1 -9650858969936603124125303997176413871583.6406536427895624121256645293900977 0.3388146918105992161908645613255261 0.0531336121715310363440581093481640 1.0545972856884391923935050987416237 GT 1 -9533754001836837783589758.4497052639664677447957358490285516 0.2075616580469829384533524846738647 0.0996709935261816281094052577308301 1.1049950197109211690133612467779412 GT 1 -705738396274523226.9144845559030961638587514174077003 2.0023369691144086338161949858948596 0.0527821944874845207645919636965376 1.0542262169795462350688938050158335 GT 1 -185321637228688473.4845110912248275326619487456758300 0.4604523891141970196942989248059525 0.0260972430690121360133762319302410 1.0264438192037239269328414747387408 GT 1 -4982918567786051600443715860.8539143167838598410842932313800454 0.4973748922907933837749513161050222 0.0388869127108293243194032396378826 1.0396632002555237679636969684442423 GT 1 -345439357.7292533115636667904011618720309533 0.2583002400149993095266398543764409 0.0246256787853215878812666035294384 1.0249339624678648574492478675715053 GT 1 -1372430547666631259032579583.1969276091519968115116537764025334 0.0113365080756514202680812581253085 0.0918356745395762270301558194555843 1.0963299415781973819155535971048057 GT 1 -1602701.2792595588596227383051341894738808 3.5173810191857858780230661482758078 0.0124037735728672528589115306264165 1.0124813424710929631672568473515767 GT 1 -325892167102.4191600043129815337510397505862618 0.2118579806895668997232031337908026 0.0882041305419691408862076499266810 1.0923391413095354846572952333423036 GT 1 -1240166199871.2458292751875330537403341578634600 1.5550399201339888978801588136388682 0.0003334201779305391459367895935786 1.0003334757747964861502005887257352 GT 1 -16745963384210676.1460239843752140451033375220041934 2.7040824997844033588935732547521495 0.0316327104793402262898226535807726 1.0321438323484253443865124893760676 GT 1 -9002854057392.1798833011256721546843698744319696 0.5220275209376222585263631348363118 0.0300618512088233036874353253812169 1.0305229736505348147525689840596231 GT 1 -127475.8748860365969095543090033513668881 1.3145461423307804796454463546859037 0.0469290493234888120286340493667649 1.0480659282812300147769428032432721 GT 1 -626177729071920800750583613635.7967210263168513929856996746532730 0.1931920998708687187042093450859784 0.0902870166147327278118537304770158 1.0946261320945213739495578756852215 GT 1 -20570279173048029425056954592503347585477985.3897107764911500173212411135312764 0.9729645778798136228201904448043971 0.0954922741800922672343391578966392 1.1003644326466073120035559068725680 GT 1 -8525643749299255861411584597.7948537802023831105461770369693618 0.5315331583361210883938507312469563 0.0116781935330160379085316059981860 1.0117469192203451329400259897243303 GT 1 -37909955832546373240091195901264.6350212155132259916340268477217268 0.7660576717328796254881927185723238 0.0570112107848421797248290584934162 1.0587008848444186832341350412739031 GT 1 -31274167357693.2923746202237285760239234553940836 0.1553519827828100793171958317429306 0.0086357807719692509540344419610430 1.0086732852028750516459563739610574 GT 1 -6301739272689993572875359982759167.0288556642499091582300040884314927 0.4450997704590883486967046854252420 0.0681516432893112156114949840713828 1.0705851849267943887471589705842192 GT 1 -96199344572163021762637819164610785531291.1498776321492999945595073039039725 1.1556315809434031683177815965902915 0.0833364039725868627506637678645202 1.0870147267835168969923399852967071 GT 1 -641715114026844731721145.7309259586403783968874708262725323 2.1577497798374201896088383431917831 0.0123741341525427190710765532851590 1.0124513312430465749369466286915756 GT 1 -308080.3090751840801329292121675838682653 1.0272710423636214808674562065806074 0.0430820720864751721586291695843862 1.0440376509627433388489416065578028 GT 1 -24482815857556631367.9047370815823060046552956786358859 1.1857873950200983284082897781240392 0.0090238999279435406267060818439205 1.0090648619237385936425256420172223 GT 1 -432435147244191756708050976918253.1218581865840226443797909464725895 0.5490998933784568008583929508995145 0.0367498475864472761682334439512431 1.0374421372474344071925262837746632 GT 1 -22062270.6705736642820993003593266883147073 0.7502334313018269969062707955196022 0.0008026592482654627762888738029981 1.0008029815516779599372066185528427 GT 1 -508638481551858629341026472966351048052.8911110703264999852417835467997917 0.4230683809864348257474184505724588 0.0975639864540061960680616171951049 1.1026574904065747420965354778068689 GT 1 -279998800.5131867356577934508646280473362141 0.0292777535250457427191330660444325 0.0346730964996929512043236499444734 1.0352884749054547778403487819724454 GT 1 -45616786043820674519592153164884.1311717508749569013496704224352244 1.7462162962927950404822420539172496 0.0878480149039295639153450425595377 1.0919486524677898148284868603610208 GT 1 -550740609540353979661331599458380425558.9031005230785101223818733804774461 0.0792087248954754220333992675525636 0.0310905182825991828154199118643701 1.0315840855750708886253349644209918 GT 1 -568344907398566037201512968.5306149499645954306137866907280752 0.1565184772692987145413151484922151 0.0149076302140535118734425814791520 1.0150198657743499564800232823059158 GT 1 -47079527785664254743789.5144896980855195135477694722202926 2.3407619743164061705903039642861616 0.0131270284202348844551548112152967 1.0132139493716676191631869722035398 GT 1 -1509756.5729202655036790222719834879990300 0.7618903045383788091705637194901662 0.0112771832942297105454139020728465 1.0113412528640216746259690888895690 GT 1 -15909170480964108174969609741095101335414426.9904937196751628648157880104324122 1.2021494944845283627292864240782281 0.0622975260669782266852027887778710 1.0643225722609851104873364352627441 GT 1 -1748.9313749174097784068821343334853352 0.7716589123731535252703477604934208 0.0948340923670606363665659084150503 1.0996370287325688906584845559588708 GT 1 -5426.3090480538529678351336113854735111 0.1517654042876449189824686958767541 0.0067259612793371459195082006850024 1.0067486824955596417721308409469904 GT 1 -132316038959.9658655187796502756433771679855761 0.3743964552415125488944608195645551 0.0018140802545628124484658563718955 1.0018157276908370412976335569918556 GT 1 -4265554746883670210868578159839846917179.5880220953969799859056573867998700 2.2358362729035492700087076470878638 0.0826699961516465034580543022467192 1.0862879981293766464580781106595786 GT 1 -503219660536551801830.3200841630687698687586243368085178 1.3963960239530055431674727527414970 0.0832498195477501657711841049197778 1.0869202751916156768031132021030760 GT 1 -656171848979608623937066.5043487478895374795758466970182528 0.3654786246470342985551375325197626 0.0130844065437925472674661158442304 1.0131707614870036047732311930316249 GT 1 -1093232523240149707958629870321596543811.0645554735911131820068976165163299 1.0505209323786782032378277406474574 0.0789464027262955881600457239408056 1.0822370497689283711053552729394020 GT 1 -180538316716206370163.7965533217974764428265084694569819 0.0792496751908576745713894396318982 0.0040298018859323499727033356952679 1.0040379434174192251561951328858535 GT 1 -1898409581825447516.9973276839235794055587380884951516 0.9368525930607797033184276987380942 0.0507261688511158328631650496802650 1.0520579749455523726160181450977746 GT 1 -880960.6061246465452464932027361173899871 1.6566810287954294657592889892237992 0.0465655526675663892705382641502084 1.0476846058252782886085823765264181 GT 1 -2313629291041885147001188662494783.6686486753917835362935646095888957 2.8398017481072836058176397186754726 0.0786449424489786540541087730393969 1.0819098039331928777247619933328899 LT 1 -601911749531464559390826199395459305823.3767826143282390343120234304358430 0.3435058820958210642371140415558840 0.0402254597996870362826447169768930 1.0410568760607719137448234131577314 GT 1 -83.7796139701153557976199180992082706 3.2924595994503703437359396708576172 0.0223705766305790801291364840874299 1.0226245934630835183174549632092217 GT 1 -8.5819215091517753642965805103658760 0.2453574797259124585984055582680569 0.0532901388474658978023394824703276 1.0547626095578905641786471548845617 GT 1 -5345226266012875776993735502450685.5939090123291286460242486127216016 1.1397409170877421307106418831476482 0.0647980688267124207631689029934684 1.0669928038421423168058888837298483 GT 1 -2675258428274259972549859390138306741.4941849985466684345683884418419117 0.4860190357334723494258011643529383 0.0331504848043403636289102240540053 1.0337124159122951529818897782958160 GT 1 -1183.3633774828522829692147080729795952 0.6145685443650572058120146430307682 0.0625949414243826672586978406891832 1.0646397971184850478422759164873274 GT 1 -233.3546514303671999618984690870166227 0.9484777793986693811120363246243355 0.0188394008552253549815243887007755 1.0190191231880317674733746422041715 GT 1 -895299584678921.5294497848774055511809088843165685 1.6613060628183036695924865423986203 0.0562432910984563915058548558567701 1.0578868696743222453383858168901472 GT 1 -6.2052987027734099204578015089132414 0.1844496421610611059763536791367003 0.0608164959472497316339302516711412 1.0627443938905425053310263433900598 GT 1 -25194172247085039.3507060616169031383547254426796850 0.6559700545320607637324695621119144 0.0317782593841235452179707737707940 1.0322941470541191050818300565765108 GT 1 -179591867800360.5467467405978139212308154681021522 0.9323007976108486529939941460792049 0.0726406367258719505655196831554534 1.0754141258906446934541848580893308 GT 1 -7135812363190630968539369.8351274186550702660678606060327782 0.5740711025714574840962371965219779 0.0890810615793345664527607660030554 1.0933013665586372884084664700311485 GT 1 -12.1299028054674977398863446320451308 1.1352107041925352085376783276824692 0.0233059310901994144600596498646942 1.0235818091284886477300385635967738 GT 1 -1259375847930385356804376153434565326290869.6801007613170941122856014075511800 0.0385037846685684215564859493757650 0.0704854298192759294619752704982856 1.0730927966549262740561380132812938 GT 1 -1748092056.8131541484184358952672745325595401 0.7713999751023803419294002068475865 0.0509580869557287314469362627633400 1.0523023158635225933546455405573599 GT 1 -71024478568491116407838215613370.2353437930462033550207016558958748 0.0875442084921586454197850439878826 0.0508851330817001127995913982646408 1.0522254477408947257874842632358217 GT 1 -1261626285163695022662727689210.4138386992380026921921830246959226 0.5553208580223085451587314720009832 0.0517422974475301973907647594748070 1.0531289755328899892689633667228868 GT 1 -295629038317860237824.6425507693331895810720269926215396 2.4380591882573366731182123265487747 0.0020860290932792118159942499235817 1.0020882078825073386552762591529606 GT 1 -627271185848961841678507592022084481.9371246725089588321353186181006429 0.7182117428333467047753498935748598 0.0936015980120375379719630304145561 1.0982763323017101009547431188871721 GT 1 -3389750.4133759214708901479015748277788194 0.7739908387491315158141807385419100 0.0143584003164186683101948848945283 1.0144624796224258452334578974619255 GT 1 -15572300883171072684148494624.3108057870679844137027339429620904 0.1619297110763844773253245478718972 0.0981551109276231075718206823246708 1.1033127370412965552060015316937417 GT 1 -18923633104341364217.5519784619541673043656048296562094 2.2215896617094069104802215081376988 0.0977384604872165964336805142382365 1.1028508458344227638352006679233668 GT 1 -11164875682383285808652238485302775906.2511405144443230764168963971731277 0.0638888718253063667024959286001874 0.0219400173595602464070888073380919 1.0221842788848565141137532844960572 GT 1 -154301.5226243176910103884129904861941057 0.2651189049299329103035203653360864 0.0637391844200202761179575775155959 1.0658611921960917435152626129183048 GT 1 -19940356.8947664821878623267920230676487423 0.9398556241504027927700333232138646 0.0983389321036037417166887517023436 1.1035165857459896481894461288958885 GT 1 -3.0137994918186592334617250610108369 0.2361470534886924966933208105953274 0.0193752485837450801187529477448528 1.0195654089900870116068662715110027 GT 1 -25013681392732682983156089606717519.2500392637893107524626869068735937 0.1704367660528903775640019352548666 0.0186169223114124523332364690783664 1.0187923985068008197407159010929446 GT 1 -8157604367504858998007981.8822948867692965817005479375058627 0.0809911661148777545634899217833366 0.0781962181348109009886982666331872 1.0814228960081275041257023111988095 GT 1 -14386600556529192712586175.0951495335119493539536619668275961 1.5481801387994637909859333495821458 0.0992244298634864779704077402409944 1.1044991421504008228029656741197314 GT 1 -7391309390.3499174413471865412627256079073337 0.2710133969044744875476232992686574 0.0788380866716241266141306836083386 1.0821194565186567142192226978685841 GT 1 -12128632307650033869725946295408812620.2386648579167544398030422369175916 0.1432778514607290617331854363799556 0.0607753598538933845313454636396325 1.0627005950031814544298464195998564 GT 1 -653849291457521526080853806816541343442328.4096820511024790080436102708533354 0.9857273140922391190786476046777739 0.0064788319578844806925948795981236 1.0064999106826561405507128207782925 GT 1 -3019761527.0640868333560398989683432741804686 1.0453104026708545235501799393739726 0.0343851139707356875611965947078250 1.0349901929658810063715769753601708 GT 1 -3521318097269050.1763412753734823563591250818103760 0.4998302280921176335956021684310785 0.0573694545258570178727602210691770 1.0590808594646769736771342424319164 GT 1 -1039091733683311428952603379.0263624320187046048709548463392147 0.5351593998062770865992875803748860 0.0958415443907867193323361811151781 1.1007506511966329923324685428788688 GT 1 -72573.1438747539608206695871080504296206 0.8528356976988202070308158455918786 0.0833741938385448134399087837561889 1.0870559530797232499561490342216044 GT 1 -6303344649091229764451955079945532.6740375363043724943996291285168580 0.0600810400542086374168163377710379 0.0247703913444117383025878184116139 1.0250823396521200659534218496150962 GT 1 -746059494285902914389921967162052153087261.3321426681933002590177966819499504 0.2509668199500572937949796007980742 0.0212821708672785157515652509190811 1.0215119015581026894165609571646352 GT 1 -73575136393786681299317625276359575632.6709927044880479377492227749304852 0.8382604284015828027972883991363056 0.0766053819853914551145462773413395 1.0796985973704525565374709529411254 GT 1 -1679232977384.9814137142563098202819068390904474 0.9517231100217925857493788885992121 0.0193385031894031608629206411248623 1.0195279382798534195499413647044561 GT 1 -27322337993893658529769.6506677224087599224245444574407215 0.2646277525448199866593768505042194 0.0948910299606042749296463346809576 1.0996999336474684717105022842478991 GT 1 -298270805846582162501.1572599366095641396079227043821670 0.9836741545607456871507904805826933 0.0281539085046604091601150477415733 1.0285578291421130442370062235068834 GT 1 -14418381221744861111397522.3227843414962731238686476888256945 0.5515133040638589966164390555811916 0.0614754118728717190994115402343075 1.0634462239091836165225020192559449 GT 1 -439647767388333.8612067898202486662091816308451280 3.4550345981264900245510199272619881 0.0002359813017593818145000105428038 1.0002360091497279245844219453651544 GT 1 -8291383423729094076732537905322037329.0299440381180662045585525004359359 0.2744315391013723528748953862858189 0.0406698898978291463184730249568602 1.0415200400742789649393198506185531 GT 1 -153982.2971788565349029303397713891760115 0.0326655843309799391679926553742646 0.0451526250279301201975905557463735 1.0462037680566426086638504471349555 GT 1 -368993711020775532101248.8654320714999404721325424654493018 0.3692990178509321766473318622308438 0.0335767429700064641753327549206824 1.0341533864558183139335233064499642 GT 1 -2903849027360230461242031086.6206994066803007131933028445649269 0.3446785027886718690302217016972390 0.0992878462626461410687270126341725 1.1045695466259300697593559485399855 GT 1 -4866.5550863794807781612204827125210294 1.8290467100676616263974666367663819 0.0443699890861117682829084234574151 1.0453844587139829221854076476550114 GT 1 -284910267478119791.0094534495770262222864159251332031 2.2360368111994234855058595705632685 0.0620939174418761429368462488669555 1.0641054601933340716846660955601838 GT 1 -2439286142833977268306868974942045302744624.6427444202632552527864982252986956 0.3852157135693483765411021834058735 0.0968275954310380494923317462403932 1.1018418195707410898132545095088202 GT 1 -761849874693875821567267055533988908155.5739290404684305600908585335038055 0.1271600816795241765691721548506042 0.0644656615615737404035734273117714 1.0666374279679085432638592683667609 GT 1 -354969169827955286370349344562.2028574736098013728408320744026373 0.0289639762581946487980963866532761 0.0774349926235501537565453219405042 1.0805974368494984133898579746108767 GT 1 -6461466322675863593411793.7788940734105534708294981027660006 1.5596437642317747043008568563396558 0.0411652052038727821242581399254726 1.0420364871386454204408106826116331 GT 1 -5399109675635164776057174406514595525248.3850244068301923359946770046774791 0.2433021599757781591307751654640495 0.0482667076726794203295992491171483 1.0494704385599086876911925618005808 GT 1 -5635006.0332688255517364238730275476592192 1.3609954023076710239767323842759171 0.0858824634790559104378526932560778 1.0897961200397561454478987426868245 GT 1 -2230076443348238229641263053589079.4850281767881122765329283222488396 1.0830490195067272218399810210297197 0.0803414388171509059347261909708192 1.0837528069735949077304245027234077 GT 1 -67271626450315323058363438002650495448.7973104537332866808173781275086267 2.2894470909539244919500237819169272 0.0639294508675249057772938656747415 1.0660644323401661207157301975329334 GT 1 -1216604.3218278753833556807970493841904877 0.0246249136003251957194158800500365 0.0231465107916235250373787838404902 1.0234185980530609871270547171689159 GT 1 -34469219470017.1268675755702578560558909368708492 0.2689643978499026996851127077003235 0.0324224067421981907018318095171664 1.0329596575443622131677070016977749 GT 1 -1009924750941624527.5063757652836867354138414110463760 0.5155276769449295955298781921096822 0.0844835003737589624907534349551711 1.0882668924999470523559644161455340 GT 1 -88917239455661889957775153462940945114.7149613337797960554646607122241271 4.1715667633539453748512832912022279 0.0659801410336764239680787582310094 1.0682575787027557251461879411739096 LT 1 -3034778457049919270753654962090969.9767163152551220778325689058408333 0.0255558156217453458164184124585010 0.0018321559772112222649912042690612 1.0018338364278524537051393850482955 GT 1 -5370498426054927068421211264865368424191864.3984113828561343873844612360806041 3.3243721832065635129485881655851375 0.0787799984532829629409706111263957 1.0820563987803111337232992946969961 LT 1 -41205628154731837180176179845079.6822398104262015362136383731053856 0.4206688932168855570206167803598607 0.0341963426871190908307790250063364 1.0347947187276653712349214050961481 GT 1 -2363372093765809776425811269818185173465757.1882846689696853168332881936661514 0.0872764598596217525627251221507984 0.0507912400213283759582358046924262 1.0521265256613104534846703393716705 GT 1 -27436.3113710365005219880597765138825628 0.8896563166806250334282353797254419 0.0176471089102895871710314762526190 1.0178046756200302910665104015138417 GT 1 -2817787349091317242471956133938402.4294771180415102807859501508431923 0.2267526796939525668744372010174251 0.0693322470461274269952897883937675 1.0718529365546183848181573879345045 GT 1 -105484061617094929674740083534.6863822025146837838579481033078326 1.0384282027942044807753856494606773 0.0446989250196459787571230856839569 1.0457287264264201592802051865888818 GT 1 -4175786282.6987081858039859519463965158733555 1.4576561503846572219759389607864284 0.0840266529677714979953334878101170 1.0877680118577244768519790597789869 GT 1 -127707777545520698.1304972234917522895413376520572005 2.0628592461816906273148328866043238 0.0651831780112974187696157860804170 1.0674046811983218492008158554550911 GT 1 -88122986705894918260571622.9788672123563001012155486902145994 0.5228720971153804297425400666572262 0.0417540831535632411576610801401642 1.0426508357830562312101789441406405 GT 1 -117093176.9173625565957112771074466649190570 0.9625859664213223660988331511217041 0.0276138185459536699746327227968644 1.0280022474041554301019643427760306 GT 1 -333116244024934447.5670450412481028547251141546656514 0.5711491002109987244554144022643609 0.0350141390117731239187384934333834 1.0356418295761618028346996866501724 GT 1 -14920009816564651079470383330278641485944.8512472335143215646553107412778545 0.2124923670359146905347321372121918 0.0967806312989504396451035976399752 1.1017898218448954113588853649412605 GT 1 -591064917.3509618196380028721610999786485978 0.3406943660951009460438791917421801 0.0123581249440516594525135133355850 1.0124351215838091004172060784708957 GT 1 -1520401254182895303450.6532179124924058568209212983194987 0.9174251458733826606193908333158114 0.0722093720754804707041043299541449 1.0749491881118060109799460528886889 GT 1 -3.2997825361153382823829118417121827 2.9130738453926175156606396226455423 0.0642502510119373001226690263573236 1.0664072004444284841716235816758577 LT 1 -10121834890679934419600.3136809270242135026829969137719291 0.7758908422210519572161972854244887 0.0961349771631330432038720565500817 1.1010752407591256400081175174413101 GT 1 -8837135717.1256506317365516887761847898229010 1.1313662049745414198319559541437501 0.0025847973764450214126337022442741 1.0025881437328629905977976316064286 GT 1 -1708587972599831143.2678585180214637469360020900923982 3.7723096280565800563183837308873223 0.0326476387076719295474682145330396 1.0331924638699466243717843154929436 LT 1 -1086507733563124.5826789865630889931820723954171982 1.5235936274705581009843709693875136 0.0369347652861613469461299508983095 1.0376341283424729438424939814958149 GT 1 -12.9867865797659282423337219175011436 1.2162129797681163285273640375112546 0.0069498696042778059190293355649660 1.0069741324290301290011252228222460 GT 1 -747845988778751435.1721859185978725019250991916574587 1.1787419639516852937176335883504460 0.0804724526325788099996925477450646 1.0838952763137453502905248835811600 GT 1 -7096.7701973715498561547108818899810472 0.6254743539744186731204465880409240 0.0949121727235675858821580846796878 1.0997232932766487055949859702358676 GT 1 -18883443271603658.3875342080286571085324742122585630 1.0984236993099195003751575862087011 0.0349651218573384304461602133370993 1.0355910351432819722490536520957105 GT 1 -165793833546529.7685579124601033416459440012153385 0.7084931030720408134289851215673588 0.0656671222264246320799252262686747 1.0679225040629137185840519581421864 GT 1 -4743582132243421761809190871929459646.9545490919055191697807449252045164 0.8738608880954768530845937310249810 0.0280830868569401136594916094511521 1.0284849584808414455413598060637436 GT 1 -4107757972726690317986340981560529097.5429162180158973010147389279775849 0.3996035834935953032679130262739474 0.0758213992306432725432474899878183 1.0788499351428002021961536472122805 GT 1 -2229279004809671866947864780425802518134749.4663661318104469596459245699077782 0.6575660320753895336435841656295753 0.0005843441087147771449880525668697 1.0005845149042722981832396805604313 GT 1 -36.6381371278840998112301620462413760 0.6107386048611935654802367597387265 0.0545234468394715600183093501354324 1.0560661895406294427453038293675231 GT 1 -726339236302262834695086.7526311216056119904660110553633296 2.1062567867324703207133446666048215 0.0825092314452003968504057374792863 1.0861127606246835372043750410292140 GT 1 -682379846705886824933367148.2114182694347520638936319892603730 0.8304755796073064138623908059813588 0.0077160142967902463369980238276574 1.0077459367559002234873024371728555 GT 1 -41.0365829293699382099397039779490577 1.4585767071966215409810606776210489 0.0541263538941627072828863868643763 1.0556462853353717547551934468275306 GT 1 -867328223897878438863737.2424998016122591384408598004236795 0.3723486765159641998626026641998577 0.0918845433245031317647157264756298 1.0963837535353851982699620981008543 GT 1 -3183804748882191942209573726420673644.3417482371661872927542548667087190 1.8105035363966884659370319463006561 0.0316956688602922995815065073038988 1.0322088494430144456218860240527114 GT 1 -29026183896343284837376.1754652555420565983585547393269539 0.7876981927039100891330475005252243 0.0912937022739668668865896021906952 1.0957333418261090945436815652438702 GT 1 -47779692549.3040921489715943482441888633247944 0.4766939518210952191801869910875851 0.0448363534628728403267919353308976 1.0458725955509489253564043591499784 GT 1 -397479340435673060531.4204993956593217924267976153777099 0.1369309964019114693268519022372671 0.0509161694990631008476990230388765 1.0522581486561444838239296653167391 GT 1 -18518928663975779191796643050904329051361268.1694070936670622245163708406007010 1.9482908431623654204217542023288005 0.0753178199014691527831805579579530 1.0783051895926341891572062819831290 GT 1 -12.3797878880511554570100893772643807 0.3189018887088916896289901078351965 0.0393774500964208185381701921695748 1.0401737152158040966991469357151905 GT 1 -855932958603158841464278183902844.6716315218982789260570062439915355 1.6040283767232338865314566953675000 0.0916587083500321367767684840526051 1.0961350991417776639431295130294989 GT 1 -3857067032414744231629531338000.1610014872992767082813336483725680 0.1792869259819992416402013081296100 0.0816914780609798273682358461099946 1.0852218642804672617954671966052173 GT 1 -14100364.7347164158713478521333807544030690 0.4952566331219294324335009737498149 0.0139351830467307339041711983829937 1.0140331892649806583874258419651860 GT 1 -6696862.0404941516623866979049440081539189 2.7938696604553997380132951532366977 0.0996312395274928559747104343176885 1.1049508657174804521810738833717942 LT 1 -334.6032332463214165526072470799357528 0.3034809580190606458721725387332372 0.0673936938493193913891756254406039 1.0697721327278394544849570581934466 GT 1 -841664859841249.3109509574299226185247256255079393 1.5304146248626837262328216386232572 0.0857622694548843524419350376754561 1.0896646422832065931930550963354132 GT 1 -6088724160.4988797235524306588110537712297563 1.5547999914385854857370011544212784 0.0351767684756591842824264537540603 1.0358103741901363478237457223699063 GT 1 -304.6713181483005014660613429028225511 0.1479601449789036826060223601135849 0.0412854540412354966929671998217952 1.0421619064276979793096328614741979 GT 1 -43938096451807577.1299721351553531240188187562903566 3.1899503064403767559078858355236045 0.0543588279730374989996895228709072 1.0558920926405186510203458331516390 LT 1 -381229755479066812533896696823.2538147777430275133790010619994812 4.7897837237826438253205567620331519 0.0441951731485613873654239218749628 1.0452015427865509632817698876544303 LT 1 -2207119457367395.7602521840255120214031656270023155 0.3354876009442714297107015773376328 0.0874419598280197383951688362097021 1.0915035898803216328292364884685448 GT 1 -1948365619486173458.2976636232064070058339959578089293 3.1696065861794099514168337855525438 0.0642076889264902516271777970856027 1.0663617170044752450394234626161424 LT 1 -87729310895545171216300675913002083703.3546761148073714535849066057873423 3.8683225412624272842927193946320404 0.0971322450053060826321980867584108 1.1021791870158051653329846379114040 LT 1 -2706384711643040876494158761141241687369295.5508835409154571049142017264492779 0.6261640864645010094526708860621372 0.0999216299046174189122578123449663 1.1052734415651267210621661826601624 GT 1 -946462283.7812758726581273046474057133437033 1.0789074677283571252429335044198572 0.0692091887534489992683002777363873 1.0717207194908337226785199967338476 GT 1 -4408277343257496376666280926415648511640549.1754512511735471966972703037485390 0.1889321409199135409586784979203779 0.0496170111845227972641053199560978 1.0508902295075591647932951317831414 GT 1 -63266183956772769787767362.4389295907249746866267048263194683 2.2379653891377647920618677553085044 0.0533985289630318109067675579641464 1.0548771074894684421218783000932167 GT 1 -122985569635799631049321463863.1694666067013112596999409636678261 1.9634392084885701722504778770323274 0.0946739316181256959700873159801180 1.0994601036188710480418005901478106 GT 1 -21374224669139461695377154608755.6892222637409436464816613378968259 0.1520367527260323867040565599869358 0.0782600420950469108167085551185825 1.0814921365245141308534679221675768 GT 1 -1671137854931751469659183819064087357.2863953973222438642066687480840312 0.5194205932398756250466668642154271 0.0058229098676001669791306644271421 1.0058399291070870708223576259686839 GT 1 -71626751719559759.1883241101650117633045972491404780 1.0535118857342972914641470936581842 0.0165855224017164030446452607596998 1.0167246021294605847809998893570182 GT 1 -292738096265620658718513341174.0933231756997757230588821699628386 0.5686971006667531078914269372733017 0.0874194516814942826462769051712818 1.0914789252913764036623362717226107 GT 1 -103880016228389243308863657175160382746.6244521944170205997090151716058119 0.0983300631075366447781308873901103 0.0697920091897756666216811356337456 1.0723470718073819571269944097099344 GT 1 -426985206712032741904348137266.5438758904008947010142103579807658 1.9453379366447806209427134589747432 0.0503822415703903744437892732059329 1.0516957349036523663496391349552502 GT 1 -9261135812763158667726363995541462225416.8618948409668691645106873328932338 1.6974746842913264020392682831311470 0.0975977101475268658962680907307670 1.1026948607277399053552283530002346 GT 1 -848263700175622.6397881996303553152429013695785771 0.4326591499771149470197620950653457 0.0589348276863860633921072521087749 1.0607428832258248559071818923327260 GT 1 -89646511992184238052872798513505596763.9054948361547015640475516658360579 1.0757708625075973353154979321825011 0.0660504065064376377226715434944641 1.0683328106319522371504180100960868 GT 1 -7435382.0886340245055690111685121878962470 0.2309127443200036421681007986280366 0.0941899137212628071971808080516930 1.0989256127059264460330185037641521 GT 1 -267179091738384842501011678819300.7784007414236781337453083693341250 0.8003620903384557916406224520593379 0.0256537045966976428949413644352609 1.0259884991003256456804284556063709 GT 1 -4579910280301347722.8433290796759306899118822426675365 1.2567878034748624155092925556285168 0.0701670598841646224753990074321787 1.0727503432550538497958741438214903 GT 1 -93604064158971477340763.7616318948310224693102098773782679 0.2748399151634615006910229689402812 0.0170869510752702368573795101819669 1.0172346175543167033479374046742680 GT 1 -248.3915854225397109745595382535554673 0.7381630306642465349647262379254899 0.0332100245328112375030330155584372 1.0337739989827456645848812670222179 GT 1 -6785390531521003687.1418907650039465416529049066708671 0.4383272206050186009228433847898114 0.0415865040275877587583098677689031 1.0424759699458796171357386447185710 GT 1 -31678618761403753449153466477210.6544339961422543017805962065290934 0.1684091846032501642606658705318991 0.0136191618520303741272408345177579 1.0137127533669500933720933289620676 GT 1 -4821117583885.0904063205022644196212336963210170 0.9106434620607065489950356874098766 0.0331989233213052737876498469042636 1.0337625165014901109309180133496144 GT 1 -106920753037883883162.3093960244103051777282694034518366 0.4669851154661798543176015971728628 0.0426957171461616464440284473232586 1.0436339831509432135736512844599510 GT 1 -2153746296938634588883102819070599241869.7940284545329378099540093063981128 1.3691033603325555726550681614529266 0.0454863850984473828292999769443417 1.0465533720086315736059846350757561 GT 1 -1106.1831614615323463248509955491120405 0.1067867207053214267126148172773402 0.0656648893872159346256530193645149 1.0679201142973453292756368070022414 GT 1 -2885486597240336889209317066242358.4359959282377312171202877184281461 3.5733644858289032751524649082446783 0.0987996896256604358273728166829421 1.1040277260229312617674265973157851 LT 1 -9.3810918658150555414946386593033691 0.3364278174628443192650413931792397 0.0509483156227205852652377565595536 1.0522920199191903367307125440925778 GT 1 -1.3694059838533688286486979408244742 1.0458480210631350336233104438411695 0.0036383754480460591447559741100984 1.0036450104346003886197089680310046 GT 1 -2731769168.9882456026929120972875087724197464 0.6331753297539035283270285647173424 0.0905550964564039899693427770908802 1.0949208617004979224104652077206110 GT 1 -20866938058339945.3679380575725284906443354468997002 0.9598299005157101608533902003301084 0.0537774142618364781339523248763624 1.0552774461289831450493958585465190 GT 1 -9669759849989542906224178254060.5056273223528908804928207199209803 0.7198120013369370899112203421084562 0.0117932734953513283793858614243062 1.0118633657684678769262263721464913 GT 1 -48.3409569075763638588914402469462225 0.0499734538089578876161446948865786 0.0499423447613090676223221607333977 1.0512326065041595581141145301620438 GT 1 -715510839121022.9868249872217984701390344192152361 1.4591172300095668891871348961542829 0.0725919385424491545012790289457418 1.0753616145269182885389937029957105 GT 1 -265568467585408392447119915276.0453922350665708083603904627707692 1.1177029450671394108956010464815924 0.0874358199960268176708810593363258 1.0914968617478984223259691123761605 GT 1 -138677.1654682473725433188048602540291069 0.6639205970076326405818731285209085 0.0886252492793754671206326275865177 1.0928011043756738601417578389025416 GT 1 -12882811648007351344.2485298927745685773778053986388882 0.1680619833147950344531840224947188 0.0336664222947287905093263288408485 1.0342461858428648150882287974919631 GT 1 -832174541234302948389449548282603664643827.9675693321938948920502715213244189 0.4646963360659504806218334576874062 0.0327565502895392659715272598412528 1.0333050574994406751958675297450132 GT 1 -29064902428599070206924417961453271696.5529099584317690445791799718410683 0.7966651647743829139618642130253246 0.0211042768724074582852062746087800 1.0213301557838610552037614562963068 GT 1 -528927.2672589402954048064288083885799494 1.1878803525067741410802614639158574 0.0424830839077589581181718789373810 1.0434118911463281292044278578182825 GT 1 -182645433336920.3436031358198737164057088646025219 2.2251376786701644561706288895431202 0.0461535513559954878079645799371773 1.0472525757883305199991149508621411 GT 1 -1778.2345549314947235670373380391578608 0.2393954968458166299806460635186463 0.0898009965625689066808073918108123 1.0940920182832633257641363750617353 GT 1 -9.9959244598738707440228178947514388 1.8767656839595842787723327547419545 0.0358073951117119799174209543005954 1.0364642067265156042698571578195698 GT 1 -12328440088734396709287272672581888077769685.5232498824341712117461647681596758 1.1177860403855905101262940927281627 0.0981765673766120225478473259227909 1.1033365290530892270241578130245341 GT 1 -39879694518925168540838692.2535633243002072585086228336815715 1.8870986329121891325387012616119387 0.0740534601677378258254171663182373 1.0769387783651025027798115110241915 GT 1 -8688719190589925741.2009486264698384081879332695249889 1.1943214849135009369500743498120603 0.0875426651532209757954895749532317 1.0916139509508988212706463559582418 GT 1 -32495789121928.5447504140851446311550032555820657 0.9146183197546521179949820040597397 0.0747451129270323504571086638004784 1.0776860258352327406808252054658213 GT 1 -31140589996.4529338689795117740206928196359601 0.1873179444836309880111396747949278 0.0284185112933672613557184869697913 1.0288301344166058364445613734459864 GT 1 -942389123907067598440219112808.3858964241433797458099042692888256 1.1155713591637744083186811055010477 0.0357399553399695237882475920620655 1.0363942648777637108578708642639801 GT 1 -199080578507259900552702.4445821802952387477109907138318400 0.0002133008225975899461112509571040 0.0119993159186274349592065363354077 1.0120718888444557355566535559789100 GT 1 -92445307282003525569721590569540.9660744137887219700535790757461713 2.7310399772589926646070480864994089 0.0821207801757545285817502547536291 1.0856894658364875999579247175809467 LT 1 -10424604561766729851.5225424061961080952723954897667472 2.6795150522030281613238373090263260 0.0571473148009288016108300902344083 1.0588452278532765273117545920346531 GT 1 -301477066659985540496197336291804933403177.5481177031827044790507327534983775 1.9780621095624984714500588538704317 0.0466182383729650802306324200127578 1.0477398662170921890066660454549635 GT 1 -15925545886016410589276860457041643302.9102705018181965003361213589023483 0.0831895394167802203532319846473458 0.0307789715782388716655161704283627 1.0312625935956465292640228086250854 GT 1 -480039269853.3827175706191055221718118685918526 1.2260233504284354992423265951011172 0.0158299629899513556395961237557092 1.0159565950189214039685360851232168 GT 1 -481381740832033219475440597413.5484086517741718800353016385309298 0.2412798746534666311659386798349995 0.0924305996949440172580572897744452 1.0969852416017801725578779740745374 GT 1 -8754782787895507569385.2110830011947369017509170706861866 1.7242288857488799224125615992658830 0.0987956206557873512066257582727964 1.1040232109771190730430926682269953 GT 1 -13873494392155227290950844053615750378282281.5764753309681492900453525487227404 0.6565704913755023032597666694080284 0.0351148322397910990771694903472541 1.0357461818635523763093902638911542 GT 1 -158384.8152807944938797945058379027757158 0.9989688997663634231643896252921014 0.0715017606363653432448348568441863 1.0741867944069690488359165400803766 GT 1 -15699490551228790870537734732.7431844813128106913740881568227015 0.2092267486496613555010145587279456 0.0473033370117088558741119959309502 1.0484587229644313075736711366692604 GT 1 -5150.1931522956322210689266307505268446 0.2869388524304378100247457391601172 0.0255189642080911464614085978570242 1.0258502206734333491827049660049142 GT 1 -52.0666938180163443049616190970594170 1.2500157081930977194470385880088533 0.0657749435576446733371044131786293 1.0680379099910525780665379585211864 GT 1 -25408904757.7692466949750249087221270014990120 0.0677953367412316794065712976367467 0.0078846923644724562606568128076317 1.0079159409165091130472963434805743 GT 1 -5094804.1559280061552088500155867961289754 1.5578397460619368252913213888081260 0.0573033898088332326558829304389762 1.0590107764375988300815321132969113 GT 1 -116136245539681078182398521.8211272453224842067191168269591663 1.3345370894866087816583244617630058 0.0929073567850560352087950580496955 1.0975106916190809382422113965583489 GT 1 -1228844792632546138809.5685751626369761498291936417176821 1.2252275946597188639923470502391878 0.0030511323968231824007151973254517 1.0030557965910736477570212073587097 GT 1 -1775273052350.2127174490609224440243671327076324 1.4687251354511295793836405067493169 0.0780858975962681451908236413794884 1.0813032241867325924872080190659801 GT 1 -20717466000.4924526508303456858373883337102137 0.0162822914763731917745650102417908 0.0129502758728100619665123591197657 1.0130348617627337493800258867165106 GT 1 -6888954426819457854655075557704966170148684.6181085771775281730304286034905280 0.6075470233203327928679087749889335 0.0762702759310650506232644491469114 1.0793357565477011260271041430626537 GT 1 -106674777200.2716835290213864284779529666207089 0.2891044017130585662816635024411425 0.0345034336530108630292336886839637 1.0351127334668734694484740138581272 GT 1 -10381042624062999835875296586747.7021907040962627536208804592323176 2.2197870183966322048247340595552540 0.0973868229556377781158241481148607 1.1024611927102450827599226463952055 GT 1 -3907.8848627436988860901774416146673623 1.2136105995718629712735991351658502 0.0268109617678741049426553414335398 1.0271769317694497708188554377581042 GT 1 -1749876.3962711309571913470357478597756827 2.1707834622148928182231132099363926 0.0209607386834292201154325507512903 1.0211835337658923268129388255706347 GT 1 -5461573497814.6412286079522522634397851642391940 0.2147843261808558250079604194913974 0.0951622798172216162531253025247004 1.0999996660761786140374926309772086 GT 1 -1512104514161198036798126667.6184743377270562987187256192299217 0.7460545754346910225798202719840284 0.0897377585107874848954618593827993 1.0940225435257170247546057764237082 GT 1 -98960555508984217178214686102075304.1134150260261410630408581019300661 1.7422604293508677142692573042745694 0.0972773473013703107580829728243885 1.1023399126108884540602145025620733 GT 1 -27307807849599885100402022810160043593144.0588235166309252765300307478513076 0.6596871433265947544255305408825174 0.0912056476869258893516929119838131 1.0956364454788005227215947987679262 GT 1 -14718025787316718437005409840212.9956175785592992438902845538436286 0.4109225078916534881019161846836367 0.0716814718975627604690291075853183 1.0743803636001251364530847081422469 GT 1 -1546066501967125768.5636665737877480181572123833437450 2.1473040235420249580118775430197940 0.0352629963085203131749094879572007 1.0358997498223087048226775255010161 GT 1 -3456948137390.7885767011131879878773980238974519 0.2229094921461940194110406697379057 0.0099469524588785895576233014964265 1.0099967539141690804517247956364037 GT 1 -105754898588581250059506740836611287089192.0091940986319536408511205973828932 0.4199497757378492615124778018171883 0.0875387419000105587615324801464219 1.0916096513035330853060518695896923 GT 1 -36724975090172243789770491711337075550.1603076538120419742445073337717905 1.9826177376417357509032166878789264 0.0031644624282785941736271663827007 1.0031694799274296925066835172456498 GT 1 -99942764766.6907404410088309873024823877396051 2.4943342630774481950916134396955595 0.0711424059001804915733021285499931 1.0737998413695441384147459952866787 GT 1 -21025300582676421461972836105837733804879.8752336887410678190268124983174548 0.6508833049849207995227422762488082 0.0718006649701682850105355370943570 1.0745087685836012391393644699409326 GT 1 -371058186453057857975635110654729.6885643158345666831949307819926621 0.0137274952797296222892049100795869 0.0394409453742562865846214493988750 1.0402398154508978455049741537146125 GT 1 -97187585796522928022535986430010940.9796519603368753592172092454127844 1.5007114248840044815176583235666179 0.0284932118815824938630508214815186 1.0289070229338625949651488640148085 GT 1 -36683309146509411640.1401794238999842922405284092138072 0.7582765373219689574626387172019883 0.0436768198898952785773687004237376 1.0446593685498089204543016902808211 GT 1 -17085886.1069037772400930559559869233884464 1.1438523123937792659507623695834749 0.0687687317750675501725617313988341 1.0712476241484608804496905803346515 GT 1 -1631353648731380610570448202289027.1303584626344586591466827617720935 3.9051153352810083448941307197474060 0.0107726547356958301311033149536361 1.0108310998994256626926046812113857 GT 1 -7665623183706293374035464678449032002476.1424889159852370266588871790056998 0.2325636726411872457971379470591337 0.0428420515508436857681364021899557 1.0437868557462593717404689743926543 GT 1 -39551398547638500047878278749.8495943871835012561432398819331613 0.2493677531798745778530882921577447 0.0316342635275161040529974587113793 1.0321454361297984447945055189829851 GT 1 -909225.3932692619450294921624592016510341 0.8977663431998406214505310773236293 0.0853301707404509127662582984621849 1.0891921211651689272196417191910119 GT 1 -68957704944346335036124.1206101161639900965682231393048951 0.8104192251993969596306480434209004 0.0669777784351045592206337213035881 1.0693262610927026391129934236835281 GT 1 -217773346366994166340236537547089179.0025984022808433370981723408907134 1.6401881977271199114592567158852686 0.0557170888394773056200717144435840 1.0573294637099430624156477260045686 GT 1 -1.5250928763048574210467284673137646 1.2338987075195221670264128670485804 0.0991610980494733037384869515515047 1.1044288365272828027748500919683543 GT 1 -1447611208548195594.4641124890499996979072911913934841 0.6075901836245067713378548228913576 0.0342563805921947478930360518055594 1.0348568843353298363285251766172129 GT 1 -3361060565.2651397912712336236834079278653254 3.4317408147477188124468093090800671 0.0214457899111093631382583231285583 1.0216790924655833391364865498570718 GT 1 -411192047043764317888124710.3085678076848472222816908781291738 0.8869233643013295982686367520499970 0.0680226743866419950981136567596018 1.0704467933335266716524363394516870 GT 1 -7744305799.7200152431115617900770112595697738 0.4010926022226925374854119231171717 0.0867479705810784116527000553464455 1.0907433911149393004336903225755425 GT 1 -38115536998252970271590763143229430.4210627170542589937226592860223589 0.1181926591715710858528214900304113 0.0265685832275874401742460055223544 1.0269279068083526060560682450527168 GT 1 -6399342099919824812366.5364624552125450058726305972457260 0.5076040490675119129429974753783491 0.0909925624818164285248255497103140 1.0954020027499205698394155313658701 GT 1 -422978942470479496816.6653202654294277626885377568588932 1.4881224695978944705471295185787042 0.0022970100115141669323280658403419 1.0022996521858533762750571494000687 GT 1 -962024832502564910.1305304215600188952140391125280998 2.4188363709317752289819002027995860 0.0320029040880616040908613485501987 1.0325261918010330491003861010950869 GT 1 -104685175125368247092495.2718888421118089611594865445145195 0.1660059568817490489017732510049513 0.0563723588739069138781568718999262 1.0580236386113432870024016131011270 GT 1 -54154740232713987.7437250510286574340744991012936031 0.6143003755176135757876768647124627 0.0926651797647263316449029337229533 1.0972437456797736447384148401008217 GT 1 -40.0076189969148607945006929976799909 0.4340944925171282276332342612951308 0.0524591961586731311033246918173362 1.0538852782126282723472007041233569 GT 1 -661326980807954752717167.2684212020904928376938491512058465 0.9802979845439597277685792234663226 0.0638423618828272368055658742030273 1.0659713998932095153251632540351054 GT 1 -61555613834638284941330200460145238680.3815881609537906890310694927741558 4.7081732898297054841769786121516667 0.0635873325852730111105814155280969 1.0656990156752417194718740777463290 LT 1 -53357351734.8572157586117940588361638892860705 0.2904077775604260071673677357820205 0.0802476378635759254096068784955460 1.0836508167630692208898596216890324 GT 1 -6282188425359453754.4972977953826539614473427693026242 0.2311992593821325438418433592162717 0.0473186661703888250313486333411890 1.0484748133766286778773562581908948 GT 1 -284679562072369160625429393418645940107307.4574201134452524433443061381763035 0.3139945997470293320880369545400455 0.0673894871974331589465276289661282 1.0697676220973931771112485785588746 GT 1 -4987842.4740388993598861106401949205415353 1.2064182630374890357700107643024389 0.0413001556104784995868118111048215 1.0421772412132480351269108799894281 GT 1 -12357311808105099776.5711349374915243140700872894115395 1.0485157937629442402557391822388329 0.0766489994251158395711285115857607 1.0797458344552935202168376712129031 GT 1 -120331159289609494509921260.9331165530629928691650388835017544 0.2035972890739304370521733516200493 0.0663908581253350167193489581578801 1.0686974059897540343943675650410499 GT 1 -52573.2545677331147537484448532673415417 1.5218042564287222905424781912312195 0.0990957213651363853662904825299782 1.1043562660465727057915459815107901 GT 1 -4900202706912210123.0428748321329193653046134808931371 0.4144896280585790638160857056945003 0.0072787003106023521162220773070366 1.0073053192961068634811486209013049 GT 1 -4127266.1534654652309049524969749701535032 0.0304668038651422841201615034965690 0.0998514099225861373894384353443225 1.1051954291993301837042860476447002 GT 1 -30231805932000.2809406930335199590860114123564884 0.1046389710921246577444081842052712 0.0908688669542183599683786074025108 1.0952659344328059427723452732981691 GT 1 -98763250253678498352775960.1900893849402291588461941131774478 0.6954042519287414850611644706233432 0.0662436096332276373297331302940650 1.0685396987922394421309197918843570 GT 1 -1030244101856743462200638591.7314497182567693725646450244882414 1.1732513615076626967125459604934850 0.0894123682934438770843181805756004 1.0936651387494119407229844578377290 GT 1 -31.0944803625262925110873324942223409 0.6656294987867477102849117188416788 0.0590945796585470076338671320206607 1.0609126541809801833751908634238329 GT 1 -50248926533153829572691965157.1052724901333617734296271166536734 0.1094454498519513314481586023719355 0.0758351254385129414330768728019969 1.0788647875855989783256027267801551 GT 1 -237860950043069896437700910470089158508.5610070053450584011514413544016836 0.1767998001468328625669126664845516 0.0656199262286782607724399228228676 1.0678719922946751687594587499642633 GT 1 -37.6724752974816299535209279735817956 0.9556391280867235037470583946106915 0.0385157158037960941975528735953503 1.0392770591766365933751274342151827 GT 1 -3258454208414585180.4904593451133381267796242138640084 1.9489733169877126565854509071671529 0.0268614045849062406823577341871049 1.0272287656089035168094724693862965 GT 1 -5838807740171422745538.6144786630390801585756975658702168 0.9365852727108153875330851645422827 0.0404419857397516932924760424605794 1.0412825023499525023271743792415153 GT 1 -2496.6538545919867821214722610954587704 0.6844889046861914276741734133514173 0.0158919156174075283072090875151551 1.0160195461098300379142836316920632 GT 1 -11044778281808174776179509021750.0298696210017151440622971431408365 0.8405095835366435828699159810184903 0.0951641884484991363884035946814114 1.1000017754414802015881892850513973 GT 1 -552944510341034271204181721921774160187996.3805638146456287659175142587414081 0.3885993807491372728679649712350223 0.0831209789782007129363960550610727 1.0867797445219929240223089263066580 GT 1 -5651667976104773774477538188106619658791.7002546850824978861327533294442146 1.0175148777165455495262327518528271 0.0768383050533298404700283346157384 1.0799508756979953600687518968981505 GT 1 -130274001484093.0050293259875475431687333135873307 0.8049163838225397155885088118473344 0.0888872401820808578308287486810356 1.0930886135113964814502917902532364 GT 1 -140725348767080165974906.4199877045721994178416654441400279 0.2626206989256642597819709987472032 0.0897594373348350648021547308996774 1.0940463598296514473371388531687169 GT 1 -291634906.5015030208285750731726074260036275 0.3443741989346801994211071593098282 0.0340849775198386738671969733668234 1.0346794170861077851775674887004665 GT 1 -11086335148.7631957392516801422657042648722306 0.7143920306168221180763061030523176 0.0205627001013549435691327711158034 1.0207770560010445680747451014177257 GT 1 -328.3233510756804776676904973152805309 3.5795230075111574408793341218232601 0.0648620585248427983111521304381054 1.0670612295856032993628751794954223 LT 1 -11308739249757285218158626503.6510027295014081115117578683623140 1.6370158328162667162347008040770338 0.0134338894621468069112524084306790 1.0135249405212457728258291515434590 GT 1 -132568730392312.8769461625437151035194073635299253 0.3826435094462287542800659352948804 0.0047449599547332635882328934457832 1.0047562530147924761064611304918704 GT 1 -127154286063060684530136526050589.4155817613792434590565134409527703 1.0329118322106569237626864294385500 0.0622360751618099835115874100762905 1.0642570409294395320224908620523046 GT 1 -1060324300.7619371788793113882804120000371261 0.7161320770969052598006293239681643 0.0428348317410227982662492697435242 1.0437793128087501210503925393004357 GT 1 -4893375234364867838262788921875623.3354166096542002941085116138615716 0.0093322517410111115007557517209128 0.0085892920630532562932538695835730 1.0086263926299585843886306374086872 GT 1 -132217.2170102674393265345376173437433641 0.1598506371222037004520063858998004 0.0744850272967915840397732031669242 1.0774049691381193612543327600362560 GT 1 -622428980280812.2082560375661791410895548725258004 1.2817618388101180282493517551632025 0.0129221621883720765253679548685827 1.0130063796271494863603747924842536 GT 1 -2580173563317138.8576754775338820723224655799331777 0.9581554266661840647146704276932099 0.0388972390706007148633948560984912 1.0396739444805087611159887990806187 GT 1 -8308539380084604962840993639208090906326.0740441114200536236245194963508010 0.7297002113988133579652413486351724 0.0559816439095975386189767439314062 1.0576096680146685832580314921400318 GT 1 -4211309450292235374836230.5137098225293400389467004821871216 1.3649424203710991615493327961488633 0.0947161715785117376267228110907983 1.0995067618863070975742635467873827 GT 1 -7636891.2477869115491205382884846622992727 2.0068164729490569088694466699208832 0.0961664442406743076320146608213192 1.1011100552773390461105419024525691 GT 1 -68762633.4671140833965643532441328437671682 0.6182162654092514817224132649731420 0.0026583605987117379589411662606702 1.0026619003138660091447552347648663 GT 1 -158723513563198661435.2880307195515707451376681555074271 1.4585524030416637369431324131801244 0.0140007989362416535827263735859491 1.0140997346599938612201736129001982 GT 1 -11828424117540642542895856909.0084246909006009588828150609044335 0.8777491605954261447520652114385574 0.0976008696563669136333703175690301 1.1026983619537525795458259903632366 GT 1 -1720277.4714415040391949330014798855616162 0.1749536710230144008299634883436857 0.0944813302118610928090614255736260 1.0992473836623434610485653443269348 GT 1 -6.4692539420505859116309831338487834 0.1104010951589637607614213798915539 0.0249392286384904443708685647053766 1.0252554803251505151731810584807662 GT 1 -5324880968324.5347979088444279871159028635139868 1.3509059394550583134527329092097702 0.0307962401909450253985156159186414 1.0312804107560661207593891149199476 GT 1 -174814214679759898676242880860445.4438191541530691586092400325603017 0.0796215502400820038512804581311358 0.0058618026530236066643422044905850 1.0058790504533577673253611590094435 GT 1 -187527.1456613260881850026226809133992202 1.3880790921195040814940123676485488 0.0056408766499792636693519531073480 1.0056568464788752506183212331645073 GT 1 -8955129095160688870258.8980458038108417118096763548844970 0.0808620309377657748104919126536893 0.0626850141991306825658099988641689 1.0647358890924173808967708200126637 GT 1 -7.6014815855214164152561436745941878 0.2533302609852251417091554741064446 0.0077748642697701473747138641865825 1.0078052461058664697859258144815836 GT 1 -840695685421241023.5069397965042792560591540368721591 0.4229770978634728405369155559616699 0.0879011790919430058921837753734172 1.0920069385190866152479456948355203 GT 1 -5967394787348594661951297810229349251813.1083818216053529244860954411417658 0.3021566401019540681766808623733846 0.0033751535095481504830284213214624 1.0033808621888867644048439865679738 GT 1 -13422145829683454380722804.2649868615485785254038886239508407 0.0510971910212872710729596607318496 0.0323370309311031361901884598070144 1.0328714247811466709217152370480818 GT 1 -5476931165.0415565346047703564514746184477081 0.7860596427105265234542760100653607 0.0591142133114885850069704801205034 1.0609335211643829569909741819479426 GT 1 -14571656413228762032788784926494332.8438495399164918105827805009185436 1.9962759998915878594889972635466189 0.0606477212631550621328372067679928 1.0625647064061783240885470389348317 GT 1 -3168618255593309002662250978989410646246.4788717241480332265086377702350886 0.3831986164153046470774041031512130 0.0747992437332910405285484623408295 1.0777445312162927652427288017813160 GT 1 -48916.1748964989648433859360979155016051 1.0441388281814814595653349054330135 0.0547642101452425516833744607805693 1.0563208695377869045415069854925622 GT 1 -4832832920620002538028.1735768402857230582465126241850817 0.5703093266780479928838588512014350 0.0795377699500944132793603280481328 1.0828793111444241529867095844467584 GT 1 -150512775976017084269910804732876.0181341724624227458630533395141103 0.5287637157025281802998737440556955 0.0972162259690723049886884908893400 1.1022722071389870688005009107789308 GT 1 -21274.1591765461419762510056705834688949 0.0817958889415384933682564805513532 0.0433033182197845251131372104626656 1.0442688847056029630325116382032978 GT 1 -379960444.4657456771083036423756725457356576 0.2063246262802093864601275924744241 0.0317945353088285593269426065813913 1.0323109573165041727494809746709064 GT 1 -89566496504.8752186388719378516839501229583930 1.9173360986252341223221959320140068 0.0924530267233709291992104167594828 1.0970099529963270676266021519913302 GT 1 -113094210387488592147146163952.9361552054032447622296842569849955 1.1243704755915342701799847680814329 0.0038405784837794717345581609467580 1.0038479724427824757115010239537682 GT 1 -5893912584751579244839.0246457580423315311908414977236647 3.5649986489583941715853216372374850 0.0867281735202497906768205364435210 1.0907217138061371596456818225055085 LT 1 -237396905.3799064361093241079317151123831578 0.5388190554681305166349694055663867 0.0084315530678073851981161564229248 1.0084672996862014566423463686742687 GT 1 -1137607956174572.9725976154032349408609039337708889 0.9933425955460859346831103933586332 0.0137051292635021319271549719291055 1.0137999115462078417120823942746866 GT 1 -657006946174545330.3351073290785597937124457068264698 0.3147456280602660036482078399539380 0.0727426652080150198164265782025197 1.0755241523800561032862138649359086 GT 1 -18620421069001363.8750008584893017362477899675736359 0.0747478058359325755444216574488669 0.0702537653466592472005838680389105 1.0728435960336758951309616944559335 GT 1 -161527937543069548546638.9069195169322221556359413687630929 0.6460904021897808457881053282753226 0.0113134573005287928631033052517201 1.0113779412777086226285557045085838 GT 1 -1285566347530988969462056795328592813377.9133190403020581416852593472028195 1.6094439540136176374870218953464926 0.0551434334429599228769029809271783 1.0567221444294815010977710455291037 GT 1 -290663573252366819909681226473.3370684002054098459492195699045244 1.1017562543765459030828891332112287 0.0365475531856524997845241191717334 1.0372321469753299255229179650047035 GT 1 -1489944230201162975739760429470256833.3253766239219197392566455482687845 0.8529303107102223644102890612745687 0.0716967235266585997408444782525194 1.0743967930410145988064260954765771 GT 1 -1114585839459986.5223255534825113591660348880263828 0.1889526614947799962036493038209502 0.0985289233209005710603323437309127 1.1037273204040916696007023098954568 GT 1 -43.9836364102969611521285498688279883 0.7432662630311047318490771307101427 0.0549061735657553330731243853335286 1.0564710691850403471728020425402142 GT 1 -1567.3737553423864896050358524399418242 0.1849789566316222460749002825210174 0.0763104307689966758438860774596126 1.0793792278247237043851099504963038 GT 1 -173728072196.8631808517597596901221265269370520 3.5362020463656330469845297567835228 0.0380950134488177202191819497689958 1.0388395997729828807881147198608493 LT 1 -7845618966058472.6245350278401255814377550024208386 1.3036552266023793997512210116976461 0.0704738528439108547557879720246010 1.0730803418708462254301365068722821 GT 1 -2679476940836602072.0609363439314219646532025794690221 0.0879292988562923605394693362803975 0.0181914837784180447001203682928535 1.0183589833057843106311846393817658 GT 1 -34401691.3400768890350314907336776312120770 0.5418115730664998707805663127050858 0.0014444222130939706438152988584574 1.0014454663964743796228626513257635 GT 1 -89116318829068.3388611342831098521646765805358313 0.7509699342664260096566915341977090 0.0276165171992741271202347057656524 1.0280050226976722517875614396518245 GT 1 -26466.9251315646628117652684201867226334 3.6160573301327466679570005533006346 0.0211175080379455753863315170093991 1.0213436722950126645643563713334098 GT 1 -361449064295.6189976812164386715530424930535085 0.5419531427762733101730877162033920 0.0800615684838567463632655711603131 1.0834485334435074305179461771532481 GT 1 -3661731691011744497537845989947749471.2866682493679085485031349196155687 1.3389808861880070927776691831827825 0.0594106065676317940973974360409043 1.0612485859196628816579281526441595 GT 1 -989758075066835242035838.3702572776016486158382265824155078 2.6371269665093730820334652207830261 0.0723264007327650539607044535357229 1.0778934858052255197837333168001874 LT 2 -23259276854450734538299148203231262.6285022460098682757328667071473852 1.2439309481219006792482155455111786 0.0884183499473803621929834048917850 1.0925741111982224039023685094284993 GT 1 -1362214332658656656211617972346958.1337945307483880786805968361873090 0.9533685714919790519583801304524895 0.0192819855096862082233860293054576 1.0194703077403204465241665629116803 GT 1 -24610.1486873610245772902630482756055198 0.8319974598745601168793669457138782 0.0949225714218099809498684812073390 1.0997347825019654294877280664293173 GT 1 -4814892816653491993297.9445818329934988683161410449372793 0.4379785266845685378426964597687138 0.0556228183143997262324781494389839 1.0572296357678872669141320628804426 GT 1 -1081803824821711062801247987162262872.6897651540540549534298332369499830 2.6496160065208536067861621638611130 0.0013086996951935109574113589618431 1.0013095567905081381000373842271600 GT 1 -2387337689813577046273445061604636964.7476878430129064672520558281526032 3.9367363466662476911638242294897936 0.0008961551728933967827230858317202 1.0008965569600006798177896394207251 GT 1 -814407422179411085120881616112532.0138648448835375000913923063295720 3.1224692451897973326575993689983552 0.0588241605050834136109692690507367 1.0606252923533107793430087630084991 LT 1 -10206805277400234292631693.3419535216941238442241004351389203 1.2074952505472817031047886148875588 0.0726026118608097497998812890976064 1.0753731233548258554773962765921966 GT 1 -2661732023287.1582843293655981140350552680843263 0.4456994412370208858301873078961056 0.0451505009321332211087050004401432 1.0462015435195176078041263783908852 GT 1 -1538864599421094942191.2018813396011407281743111267020165 3.3357706207514170204207544289545400 0.0508858090722610298596798778525921 1.0522261599737605361440313803166294 LT 1 -7693138811.6081711934039289051105339247282715 0.2258306233510742853420443153055091 0.0140987681736025018484620242573196 1.0141990999583703777595089862763382 GT 1 -798646486178594382032862.7444560517586153705775601498607696 3.7255205484953570593415360446826398 0.0399840550646796251788209946285380 1.0408053853505627617007202078337300 LT 1 -5439320270727929774759870548256.8488767898776280100664697842606705 1.9287474390325102693650954362296646 0.0698576309170723722311804318479204 1.0724176195157476985662024084631164 GT 1 -4587381616089119590727.1297562320332818489614520767791332 1.0769458781993542888058098127426777 0.0294648855430106594352007209308917 1.0299076952069184013227073694589646 GT 1 -1770.8354044936465798049174309966866620 0.2330970790889019222339500487811166 0.0171745650573025046366532673477797 1.0173237585899217147625190385335781 GT 1 -716941743862.0029677254572630029914930891976150 1.8919196081487823545560485337967640 0.0954789158131109493072302087590462 1.1003496640957609487139137576343175 GT 1 -70625537620138898076753387668.2131541658853165101729123355647815 0.5805470323662133357693541109428551 0.0898022127903572466187337745383754 1.0940933545059973900243768693579189 GT 1 -27210480212358969197304879.0750752432074929646610807709108496 0.0533190325665502648173308527120271 0.0922374494774489941955005223561754 1.0967724428151606346485721229900531 GT 1 -946826046011679145362344.5226519005218235929291923731686534 0.4736634231661015699379742626566383 0.0813276071303661714395570296738723 1.0848257023688879981477976646330887 GT 1 -321189505.9118143192004661858572592495383888 2.7184576224087147816661563789009839 0.0410707464235902834340367276542421 1.0419379778559846623701649736518730 GT 1 -195258845523828827437129804843319836135763.0386042799737729456633535805806018 1.4085266230959518443704769998435432 0.0247536090686306468228335130968761 1.0250651312621833945770639368714323 GT 1 -183092946761293915716171605124833.5010143423964788895160101529113387 0.6207768530343585324479694367695100 0.0376621987476115229955304608037790 1.0383897452003182097334425854952058 GT 1 -195107904788207912829.4085834332277828248394720401894045 0.5574362097968042540339079513354759 0.0064080650829732269602181873386262 1.0064286848678439011704115026181536 GT 1 -2793044948342.8520586256016278233824090618002338 0.3685106268462862948163461904013353 0.0089178919462745938796898454854597 1.0089578943469687204756221918706882 GT 1 -42922152422445846261174061609256410278030.2647575064084999898017929021191121 0.3967610317456656293783103592389160 0.0998037727659910927643395396429053 1.1051425091629592601953051615793408 GT 1 -2237666317630712288111545673894565458.0553866759653004354156464570056176 0.5665089504382114685699222810814785 0.0183726005728260208784622470056875 1.0185434729481282990938069521467709 GT 1 -3881452301906889494.3426425252435499859344094309305722 0.4537886405842673427908659293211903 0.0092850537091480207820730091194651 1.0093284285207574308556021340994242 GT 1 -1393154.7407500680133842931461106664192539 1.1409274233742873304627793526788279 0.0414807732057172209274723428153121 1.0423656574443274960665502046562947 GT 1 -348.4067924284943957545448945437716925 0.5978566267621306229061173141272038 0.0800843650224747209508506668602949 1.0834733142552405980825152827072106 GT 1 -1.1150857091214982666134035634233597 0.0619332706126400608361628779223800 0.0248490889922069795822925904570837 1.0251630394407454500803563023299871 GT 1 -2038717293344391590730996755981906221201529.9267716717044617474230855211200966 1.4397307998970330360142772442737310 0.0700300960268183712329162129346614 1.0726030546776337556695218282866319 GT 1 -355972169334503914868901018616963.1090602140728109068502580365303842 0.6941473463447026630338668263465601 0.0146545106718362556685945324878029 1.0147629487216870035006855334876827 GT 1 -2161963615420964042320759891765222197325975.4686141832325099974047074402826352 3.1897737150685144034081493657284128 0.0506213779443239851713561154634462 1.0519475904391922065402343745254934 LT 1 -7083231520558712429139.0510353744913213397535752506709655 2.8822470185246816350757672539834672 0.0906180310885986862975059051229750 1.0949900652439169460342144493974468 LT 1 -20135351006025126648036147.7610360545255334090881514462802245 0.9122010734545881721294359466731991 0.0722706981426166181598519802163521 1.0750152893335435596521775885388731 GT 1 -870237364481739465798853119229.2739614503750778423000315765574969 1.3895082677379625855854680741861324 0.0383744230198008306857427046989242 1.0391301171978116663541487925434749 GT 1 -1071454021805543263091398984640560117.9721591835115183963483727495360323 0.2398338589753116864579589474663340 0.0964529766132085171532048111639402 1.1014271244970050817570176160747558 GT 1 -10681774798310056917873663838908563697270.0691141182955488355324233884764942 0.4687708647037251881183205875024341 0.0732062925320945867797457295528723 1.0760242759723150660272974871953712 GT 1 -7041221425130831.4412960476881136296015419836955226 0.3321108853099665312256337794609515 0.0032036509814330614363737650761809 1.0032087936577357811504163433551300 GT 1 -238056686182387495283761434950892.7560447070018304277325278854942934 1.0482179418239710787541699165012549 0.0140579355500887153345004826670808 1.0141576842702203785424478559471447 GT 1 -23442932135006963826143639.2083187354982703893584214564477219 0.2125894031543031754228806670116528 0.0089104433692909289291304070271210 1.0089503787749156956548747209262296 GT 1 -40781828477211007321.8112218946908785914262450065372241 0.2098742912673268860234390003465425 0.0956210431445885199521542222981345 1.1005068063684629236026854169706919 GT 1 -1311409574850219643788596915.6703902339427022775678742553371607 0.5604862756703934266058136921206733 0.0903199653041384195856360788767787 1.0946623515249378366378805867039964 GT 1 -151406484663783689667038.8329030072151368126128047019095851 3.1990456347956417673963708409637520 0.0856230338839553376936081991633860 1.0895123569806195309399079449344008 LT 1 -3398840625432510581510583937786407178937079.8812757182270877150534413549907211 0.3169703896631743894394598374038658 0.0430944077443613917841693874787509 1.0440505420760109823588914954816615 GT 1 -26154140271002914411672229687329693314936173.2354455046839646993790903980522657 0.4657432490494143532401213624320797 0.0624698645266636230868733518065237 1.0645063771493025626371888572417279 GT 1 -64439891808391001388.9726694314419606898765252342981715 1.9959992321655614575947302488244696 0.0007511990644111259443040373569290 1.0007514813558085211459955526279876 GT 1 -10203293677639085238466727480027510275849708.8867774159958276433446065148354343 1.6192099341825095786144807892454784 0.0716900538525095495546700838674713 1.0743896082659975774002784366676397 GT 1 -867844677599915261442427973158.1046016655798634297479270552998606 1.6862835360206149994157531342499681 0.0170618011043702938793915174034125 1.0172090307039085657442820289072915 GT 1 -51945163794220890367195212094151.9026040465743878693815027233491156 1.7232187172899721655788653823571807 0.0170914539663802966398900531236925 1.0172391987341364957559680825607599 GT 1 -303022079846.9669958381807305660130022851583086 0.7435789825296229283276498904755288 0.0428450725859545351167978463572453 1.0437900120068152535596889788299376 GT 1 -287042328689846708453010392503283.4736470796542257697048670639459049 0.4161516574477993182544097960825282 0.0400023992323075383291323275041732 1.0408244937236984883047281381199408 GT 1 -25825068655812670718938633544117074057.9876525573946898131411171349184260 2.6470424449958397853252237833605107 0.0943488161555116027959418121697313 1.0991010538674651254006638526901513 LT 1 -748358300159486521241730234.6728303522618933581056610481942873 2.1412382484049158663727082795986620 0.0902475891561855371752136561441062 1.0945827924864382339694349020830868 GT 1 -2831668945874215914384262151977434731555.2439807148888359654029894306700972 0.4214799925798897441796397801817847 0.0397223014751960258432362189133945 1.0405327670538807021708567891540289 GT 1 -57802633836134074.9978481074251694597196033313935253 1.5806665903090945905713804252655613 0.0985270289895223741150916625797246 1.1037252190284215536305454019616473 GT 1 -1579978.9070317369780048735281384568482617 3.4496211771140645169584339606199866 0.0306104229125188748171104703751750 1.0310887075499747495466417377571216 GT 1 -714629800596284225346750133.8299597466340178155178222518753546 0.0003043145127447313151757899191056 0.0642983961048280449393859102558408 1.0664586525891259050424811396135181 GT 1 -5450332386169917035446.9922925493007134511107385456830959 0.8206556280484109689373276793440158 0.0659578840392984952963107406081325 1.0682337497348973634945511755970715 GT 1 -23492277968703758504.4824578812647203133249421816124987 2.2118824815399134573212851773704257 0.0175568422519609547981478091112320 1.0177127916217440199659149007694496 GT 1 -225706227946721997278069.4491359120226257404328906349800318 0.0912917222871423952582044669382580 0.0493053544397208613684806810385928 1.0505623557353802301906316281956406 GT 1 -233628343733175886537.4583009489018600103736253944854588 0.4634540775638706804970936348059052 0.0426392390652281000160662424112324 1.0435749878910327154718550185068790 GT 1 -7359930301334484745312.4454415050932231321834161932564664 0.4287806740917812503827486583339479 0.0666338618365147852066920434191660 1.0689577240723234782794148261365138 GT 1 -133948.1818861608215920288058258234190102 0.2010935658359220642773026627483760 0.0322925306461771200573357704474812 1.0328254384582697698872253174799955 GT 1 -197258133447551.9282757818172622627121106620637558 0.1597178475130627413846847324813543 0.0267298736533739841773730213156031 1.0270936131815002732497017136543968 GT 1 -31575436.6072165264080706336248644676598151 0.2934274923226950068763748868487406 0.0563619691666925115420761833151310 1.0580126282831538058954910151682557 GT 1 -279292187130937.1503722369940871432489947308606145 0.5592044459780787381413305505758143 0.0205588279026343083959675637126042 1.0207731025156436134999134167925424 GT 1 -338990115402574728913017811.9100083563035128302993584321400999 0.6132119103565954039494653003431295 0.0697564707540483142802358049746330 1.0723088677097760149051702864870485 GT 1 -131.6506331121275054343839291038665241 0.3476982581025051129045626803224697 0.0039632266016073508338714794209694 1.0039711009963816736873616427037465 GT 1 -252970576373255090352.2513583590782564750857017306757448 0.0934573493215043268327178512658627 0.0728191686381097173679853963260917 1.0756066608524704380191737884573719 GT 1 -63812739982808636016855.4915056380148506825846238899374432 0.6461983163201316362952933983975305 0.0111786111982239315693885870425710 1.0112415614429015917924967864757683 GT 1 -959491475295207117016948536385526.9137941516625205261583631669914090 3.1069405669736460713301769629828339 0.0785288456809363992984186262555552 1.0817838053257842785871374944341556 LT 1 -15027.3090246923615353197848172997646470 1.3754253188869488466652774721913218 0.0651779040021212716011417276351584 1.0673990394574215894322216573219013 GT 1 -81563765323898830715608680923197155.0243802991217896918917391709932941 0.6994764977619292038456137669950103 0.0856685702943419948125840929736874 1.0895621586991440501823132046218490 GT 1 -37036727.3552909095725656774629045653924066 1.7349218362767132434528997774896438 0.0551390786524619404157425885176739 1.0567175354966374504251126966282990 GT 1 -327812092500550571382595617060810307890.5073195074657300701696530072965644 1.2720947354192113085878605249218395 0.0113619098425948842982250635986294 1.0114269494590367276270785911707430 GT 1 -150816502068669912681507769.3096614973253324166656872817491366 0.8191033844360162991286874352759744 0.0221617643224454608963384211515357 1.0224110258206208785453127113545145 GT 1 -243611455447526227610250876.6001870115662846165926083823381083 1.3395497337980536360570307022861853 0.0817232632769942940898058161088134 1.0852564776651361511460827606250103 GT 1 -157228469728415793577263102514604432.3638661924523575495644230603983537 1.0211341012406891748812870556554312 0.0413925403618114546576144130598784 1.0422736104819723337414585865829642 GT 1 -15739928707846857331926059276141628421.6669523345761491710128715112696247 3.5104167979879695927659783461872781 0.0216532121196913002887215047174626 1.0218910829644118317918029052251816 GT 1 -394930668347245620318101692.2138131988771583397563603211476675 1.8003471364314418831085349300577411 0.0727799745660780434949653414037211 1.0755643894396916142665305949895179 GT 1 -549838792081827175.3550570716555233717207557833567055 0.0085657714732579563129038634844759 0.0940237974303937846899494619488804 1.0987422397635910734325187586424384 GT 1 -2550395786566449010.1327516823590460454540811871588233 0.3129375996972082324202617035282292 0.0906479165937680982538722124560670 1.0950229293178413533274147625325353 GT 1 -69193670362.6253244760687693002471859289935748 0.0182075435984525772301856526237561 0.0990734961991792604489584641330440 1.1043315965091500977986739203784949 GT 1 -214497969469469868680.9972790039922001596876794398408274 0.2974718293118263885599279360546226 0.0800886302244874146315604142060472 1.0834779507803070119703355505011745 GT 1 -12417522463966305887051939182789.0354672673517095439585982633950362 0.2832084031561474375050114125052980 0.0551883401740174895178906243989941 1.0567696731230786574108261816842283 GT 1 -36668892653075700598563652030374.2730350207592061519908552420664316 0.6544330482650978094810417951546127 0.0099072931572092755813688202698355 1.0099566969622130803716170140958696 GT 1 -7034933661678912484892136456062086341949.6701558879769915960649509583409209 0.2785625549748855487745670385936363 0.0653857719841252940043016875395102 1.0676214251896239088400150901124291 GT 1 -2038689401220246266535750820299119.4749556281543371947606527836578589 2.0970566412826404574239350540474442 0.0546201417114559377271633361741062 1.0561684658123581501095937724601236 GT 1 -11142310599539626941874242566401992272.4201239944825664499093576128552895 1.0224768733264185202128882435863755 0.0529464015768390717980223575310548 1.0543995892739541991540681727593641 GT 1 -23029642023021307147891226.2119471934112914403703287749782993 0.0612605632682263405959697068184246 0.0838368083739377188751031097099130 1.0875607733790330836432557187212626 GT 1 -354384354094578900763350661291374.9409082301181675125410015651805589 0.1629926919962356266444693117849557 0.0332644372115131248289444124465319 1.0338302823652401515112455686239508 GT 1 -2579292879.8094123657570109988201437360614511 0.1975308013151272063896375339677481 0.0453446445202053839046580775878863 1.0464048879501732948714473185011398 GT 1 -57381.3868674192996173603076755141467492 0.3414215979589060449688050735753854 0.0252460519071828351138554036677758 1.0255702007631117196712134769389621 GT 1 -31764216042907997536975089837035548.9718915530708365005633124395090743 0.0731558994184363888879786633176803 0.0554160790832349146415959300432430 1.0570107437730172155020929605293218 GT 1 -163981200336171487579697311577.9967245386273504458181086515239610 0.0827290391038782662840776378999407 0.0425842432161586997775781848008245 1.0435175442692046719550554222909882 GT 1 -102746.5206692502698186447501886393449537 1.1477726096994543598434326394232526 0.0681933581112323302534846921678282 1.0706299516051328473689028901041261 GT 1 -72019826845148110831410400286376753962449.2388166989065627779043664794913912 1.0951736857732695524111382728927587 0.0042732414345449518149399883453168 1.0042823978250121774608958527048812 GT 1 -324342021226.5351145884863447950374569962589579 0.0252956043106364408398337723994468 0.0990313107410628971404568295065946 1.1042847730775914214814783093427404 GT 1 -933493390710.6173139579777960878194492944793722 0.4294142370769880205466035826291883 0.0602193818275164756400948484624213 1.0621088158794765747853006028369842 GT 1 -35452831004122.9115940612147244583746576753358857 0.4572290855884723206421665718991797 0.0222401150880346132512141186699439 1.0224911555413504689608090346658266 GT 1 -1506183355196.5361797953186948242620870317367878 0.4079319397512081798300554014355836 0.0216064656591253411916973982064130 1.0218433030315878500062288038351997 GT 1 -429065469501622781667447714365034356206314.0841534883663801370518626800952106 1.4676507044871956785795769321010848 0.0697352052219984649605531239494397 1.0722860077937238450613522790102022 GT 1 -16786023373309910000002063110216882291.6701705940950949574338690557470852 2.3182665716243756124907209650800817 0.0073742137570603231594971946669984 1.0074015376825123876262402858326775 GT 1 -427597542941773987404999410265190787477424.2189859431049053190121260611183283 0.1724340682464343471750488064056509 0.0934202538616865094088203006688978 1.0980762811856575016629178395112205 GT 1 -700995.3305753311480442889953355702914620 2.0043162985145964568913177468523186 0.0254425221675644442426628469557197 1.0257717799037599481151285083308050 GT 1 -1251505447439161990892841.4616515576076265873792967062845608 0.0896717658851395170704587005407240 0.0921544298287773172466000131824028 1.0966809917495002611845942525098472 GT 1 -2.5471543967595741124435986039438978 0.1425843588289711084173545373568708 0.0709892766614944863624480993209098 1.0736349973517034132658100112584403 GT 1 -9247609504369.1971324051130064605088032473073065 2.6424528609139333263155399904421311 0.0718484785566044459610215185718278 1.0773398999407132463406721548965375 LT 2 -8721503026207.8746475759461052754386240872547502 0.3044474644634638310434766414983194 0.0988766948473019335922895751237714 1.1041131770718161055964584961308910 GT 1 -1977846922188.4099664065043966493504133354213658 1.1689712244634885924941940067272252 0.0216555502158290349915098415891469 1.0218934728112029142555730051668584 GT 1 -330604809833536182561147655586334886.6132520025167532625605971568250309 4.3300029757324512495700975024266630 0.0228267115097593492090928877775451 1.0230912747140265919900885919885218 LT 1 -2810641126331804304003041312080852184908.5665098456047923645605560932785670 0.1250734470948514941121131915576172 0.0719462392931572368116635450005315 1.0746656160777514053119629536405575 GT 1 -5397184659767443394.6899250379406079552707243338359388 0.8493031031334707544026768320876209 0.0886001079901739755132968675114767 1.0927735186405931645005232900345633 GT 1 -737181.3025045539040146609210269256948124 0.3845215263948205401432779472621747 0.0564893982222917474301836307584659 1.0581476775883233751061053238565615 GT 1 -22306273.8072763903931713770664097089063191 1.9999128196595629286407299932611295 0.0794928881159148931006472303230103 1.0828305522290353040959980873115220 GT 1 -42205120456269895.8435765942365223911739985421432605 0.2879148084479170129878465704803538 0.0835384552884068963318433154009789 1.0872351714352735320619874877265149 GT 1 -840958390946021949368.7502728572199970471300204719911072 1.7934347347625397810984306119686622 0.0124536681339540044620564713265430 1.0125318649621282240496940051815741 GT 1 -169792652039425915079284547642967557470.0621982224553258009794147647065788 1.2509618686315928900225618263643754 0.0736436098334282354999441481934724 1.0764962477893954532943513923035699 GT 1 -8634867157314566.3755990165341312952580261254153414 0.8276143924896259520934637155963750 0.0255136623458269508739608343688805 1.0258447799848549312314252758176125 GT 1 -1606297534596502342.3155924833758970777646232057014343 1.6224172324330292120386501604687184 0.0617256751188205685034630656570719 1.0637129155037892665769745522372121 GT 1 -661850126650749675435816848100072216839.8534855890053793014515043540169085 3.3483544347994229157682982105938841 0.0448360766131076889413771288083912 1.0458723057056161038250123479296039 LT 1 -1462560230272460.1490901293470119186717195894971325 1.7894561648489553152307355563620631 0.0890404535550594736888601321762930 1.0932567883668213693289252630665074 GT 1 -299660551945.8651282962954098047060972577237308 0.0233830346495360689595321031976327 0.0032908536339254760098760199597426 1.0032962804018154199292008389404588 GT 1 -3501041184762971835639479030079235.7706181540705941130134924322438833 1.3540028177180518056624453231878084 0.0905070480375440927376361575367698 1.0948680304080756693289961960872113 GT 1 -12593105101197149880522744742127301197.0967097743204222432263119851928863 0.2904857150653538317795276162921031 0.0898566624580938265740985048888593 1.0941531780929201439205733447940325 GT 1 -285185969946668748117079020.5698540868245837580261512322850193 0.7284909344267200634486294782149222 0.0182513180144180899540956101893273 1.0184199280402419543512477101590807 GT 1 -19273.1243372461018095249948982550372315 1.6656511531689260992678133096325449 0.0928967054630898937963805663414080 1.0974989494232743894962028245888387 GT 1 -2134737162620.2815239121767298234098870284091450 0.4457913705305471342948283455670457 0.0093354467436113915200822841332254 1.0093792951361491329887057720870841 GT 1 -11530531249.7096729288208591681621835816877133 1.1710298121443659775355898274962930 0.0820443234537591719179268461647521 1.0856061721566575475604347615386660 GT 1 -12.6771707096105143349374697603939078 0.2520855376182365940567523514050344 0.0712367260439225359701886648389562 1.0739013907711955209150573448399895 GT 1 -5440473073904770496001.7705977438644757478939546574365084 0.1532786122312079846559663547192843 0.0538956999553640632079859829898441 1.0554024622607839796392225542219793 GT 1 -377708931967924.5198720775281314085240984143767227 4.1446424725990450180386442260290810 0.0986632271490770565497016233652665 1.1038763144618443589758091242289979 LT 1 -299237068742811.0663156149514164973285132031521115 1.1037125855021111946037338057356645 0.0019655389799330360069006811987573 1.0019674731865951554230654323334897 GT 1 -6415763932662552796099044841382840087.5768219870265723207858007978836592 2.7745034475247273173041377907029454 0.0545937187141142153106774164174378 1.0561405165939982253436162647617697 GT 1 -5542881688626282114841780091910628505672059.7351837174590165189635713909032018 2.8761671884954211604044028411563955 0.0487706081580951928658029809275885 1.0500000343332627454634172246676319 GT 1 -2687.8129951354411928733702457981876131 1.1778720508972723539261351372260843 0.0947900669034906261459812832123991 1.0995883919107684518564415889375553 GT 1 -269532.7057011671402144136880609863789907 0.5110580807227438529293041833510024 0.0914968258571885224161143165994034 1.0959568973239337016917993913610596 GT 1 -284821859003448.2933292757453531409609934928773808 0.9590680719132158760472811943691603 0.0556408585824928333604169754658903 1.0572487387711736297281782745085708 GT 1 -11553274879727319676021207817.9747290106001943865169490326546900 5.7004901289549846125842759428421015 0.0411812432835211268506275275999889 1.0420532139135480801522863284963430 LT 1 -566208745240140975842203552924706007053488.5690657867039860359956216261775573 0.0889830244610072685922902039003867 0.0006288617032243119502467222058238 1.0006290595196823470886140155062697 GT 1 -600651514650268508555123365613169973.1663220237978275256236960477721855 1.7676974926581006907120919329761186 0.0958740162748507340166882009779582 1.1007865657721955161879860638142077 GT 1 -327688092533377651.7623971994503151649096894588820891 0.7016326147968459633836390032665973 0.0341555211566626928127906482480199 1.0347524527168962404784473429771202 GT 1 -189531992898863.8003514178954173419342767808222425 0.1798747681349901517289668377253254 0.0423530702100925021828928992051808 1.0432761182220995018523331787147956 GT 1 -14243329472042364756.1124298481781110288846839037980178 0.0903915642278316248529762213641319 0.0443388318474954789089993411042381 1.0453518553734136754985856546706431 GT 1 -36568257315877384856143768818464.1480689032776367540391990039716085 0.2314727695349537044260003273747825 0.0884823428353248690887037446484840 1.0926443135045010067331193806078447 GT 1 -553380982781684777384877017345.6641054524573281407555411396223325 1.9320068008400461207121757232985058 0.0734724491969669750036645855041248 1.0763114972681528311851767468302670 GT 1 -31963459910494089015031266900434.3149168504583963009708250262793608 0.3000031699399751464033224933681515 0.0966260850045887753881058101291638 1.1016187304364047948974052823833560 GT 1 -1952.2870051141452004783167088773426879 0.5315739712083450145362545682453742 0.0741822430001590528268407429774896 1.0770778704005728565195791027265529 GT 1 -134484.8098077999175897494882446549353338 2.3422260439723693089136612746186572 0.0918503251283326512511352336349991 1.1009873567666455585652447685107074 GT 2 -2059542269.7832251517512505117853210640990962 1.4346238909761114236033472191140083 0.0318770030338858548286756393495667 1.0323961367958540496692856991661273 GT 1 -39904050004717799229.7204123744750895928056728064640201 2.1638080394390483077148421711337929 0.0704254293376004153769093848576860 1.0730282483980641683923987878708379 GT 1 -1096511385178235278559693402340734571523851.4503634950551134672676371329724535 0.7733779320369075638522508118078335 0.0261472357451240793338602214577262 1.0264951528290985161658054350047957 GT 1 -2041420337886771815742822142953672814.8105311307830314022149534631089824 0.7148700779106258329086173942435965 0.0062338651622433095580239405432790 1.0062533768306792136882004409667869 GT 1 -1028808735334.7377310613875344949854904885200587 1.0752020152794282000224181721489747 0.0483384354782217882681290199618129 1.0495458068475955214975409348905814 GT 1 -2678228853.4983139147922005693180790743424253 2.0970929920678381510436532363208986 0.0493488157701069916506202025276756 1.0506080721218605329762702024625559 GT 1 -4241476194432489643396191440840211.9339348327953637607136749001852341 1.6195712311796712810333071694440175 0.0249980495793692154918864960727609 1.0253158075548745464216820549605496 GT 1 -463945803750829853121788563730.9541985660039198939066713534059236 1.2180071191548569769443882137152479 0.0400793437939595560264557890064856 1.0409046477213113831808286696070215 GT 1 -20944431284989305940046.5443441300159162232835250701464924 3.0557755071354951217498226638818660 0.0517723432457060586924720453516301 1.0545736892565560917609410128520967 LT 2 -321399.5810013204314700777395915335305903 0.3200952089777453370795066403009016 0.0783366073468331475908363004112376 1.0815752059751659199372079604186176 GT 1 -7782321240378229909035557627396032110305368.6893079846101165053131160791443441 0.9250029489180116323194267177501066 0.0052631849646993643166759219122254 1.0052770843140339721585359962107180 GT 1 -464533374596799264669909943509878.9920015830991081314136844813320119 1.9110160363568068803527496087558139 0.0840987544159577889714687433822242 1.0878467306177467428178162024472872 GT 1 -27676887.5921859481354439801418941843104531 1.5558657484688151578540659108727049 0.0991124479908946332805128094829516 1.1043748327039126386069631635373930 GT 1 -938917428006.8802963259172431751826445338705437 0.4618748746444684216204684954314714 0.0802738123136322755961915747746523 1.0836792753173270438637981711388838 GT 1 -17035076764226878000822502700287727101396.1426878633365627792600035706179394 0.2198944373346059296587301995658085 0.0746261262492881363048649614557157 1.0775574352930051202563865760236692 GT 1 -7097169462874263220.6558077989103314930157741677774285 1.0647517328762932806130723859959154 0.0134785609069818746193100889193433 1.0135702212740953436240059537092109 GT 1 -4762798982009819975634760102273.1174453948193338144475399312483965 0.1093559091221176973915216226507754 0.0743443647066867641250994349116274 1.0772529976345011436330061783067698 GT 1 -1395196654738.5964297841975207978527162913038994 0.1481958540771739890978634867165155 0.0458688581368205898432936064781188 1.0469541517159471066435931586537657 GT 1 -5066418629135967938075947748.0075536290850013379262784188844848 0.6735950090092820335523036645848795 0.0266456206106122817343252541169456 1.0270070499613558140805573892485900 GT 1 -3514.4081404095106558105860253487890529 4.6571209091224498603438294151368763 0.0263384552012194694417694604268222 1.0266915256678714405754686108832257 LT 1 -284906681669866.4015890570737866201567220087639627 1.0310514430642879794443270828651470 0.0375090159868266908336136671490259 1.0382305801231115257998865540888339 GT 1 -750432210.9268573136118939474804830217804049 0.8761161462336597157399716082394889 0.0380674508972826081238930191826516 1.0388109460524621096971530433345781 GT 1 -245566938633842989382792264201049.0976313520824336321318346560782034 1.5561787507443463509399353767604153 0.0629304316273278225343683838646903 1.0649977536378257464925543689370744 GT 1 -23498.8725399678512014532130029520731911 3.5795591487771428668770579484817307 0.0989296917685985360962010987882418 1.1041719908650936916560648464952257 LT 1 -347567.3041395843601917233086967510042805 1.0027189283556061742116439334679385 0.0068376879156380503111713448074579 1.0068611720161762381199189792405373 GT 1 -16009558301026358096329539810.4886829254040154710386352992564830 0.4079278677224718593250052895844766 0.0240543082993819670165151785071274 1.0243483378665821878673052611768924 GT 1 -217392913972275967475.2933018545710882106824421036551730 0.3608350605393824609104326275794706 0.0965109038334688207597785220683555 1.1014912374603856531008167101139100 GT 1 -24.1552271964852376373794150515229240 3.7270370448833488762457641382854604 0.0148129265357475839524842899448352 1.0149237335442713272148829829743087 GT 1 -1553110262538518940238499552619.8853583315398136751379775663978755 0.4873292057282493718988894447462877 0.0696601836626290285585731291292716 1.0722053656637818798145376922341693 GT 1 -366493022433531439.5480140198623207463869374174282856 0.5916638546338488907002662200426134 0.0868548157533668324632159832131790 1.0908603921392628863686116185357304 GT 1 -286586731146854797981932993108601.1510593516156654429053831636318023 3.2511793213652195064264980973370098 0.0867627782634018812317492403526786 1.0907596054806295731666072811580956 LT 1 -539.5783689313036721096735048671552137 0.1308224082114291664703240280746724 0.0983174160509792991802552934051964 1.1034927233472688658685381826727934 GT 1 -51292.9870716372980562979921521806544126 0.5384519639960477399238793987000008 0.0234483668495256764525892521751269 1.0237276543331431349205025660619461 GT 1 -51.0204265634009921279264542054401106 1.6389152910167428862739546864939205 0.0163948139068017881791740140786813 1.0165306960907641939989649419508617 GT 1 -2925467067677153543654592770277962.9696917813436682354129591921194401 1.7786284123727725859870496257956921 0.0626110183926135261109126733803616 1.0646569477685155798518680608561709 GT 1 -31297952882524108152173600.1042437516331031534589195542860911 1.3653295655643085427821328975009630 0.0537444892958350920005023266772682 1.0552426505178037039120948107278179 GT 1 -366675085916379125.9623715993734056108515337828543866 0.1615406455722219807185072569567203 0.0423975957861950097698395677390694 1.0433226140754800652006631456783301 GT 1 -2895952668674544.6863007447685512986235004283909900 0.5134193277059817049017432160559779 0.0654809555274019333707228984001806 1.0677232729762530502288234438665738 GT 1 -1900111463295845.7812968423309724110984805044707945 0.0312579116221792739236671062005612 0.0064625358704955788159283107746364 1.0064835084616794424145642823817407 GT 1 -5925728547874.8305913846670715180034961978159887 1.6535004960815160744433326583785959 0.0219529683620500929352596149344998 1.0221975204942321784664072175312809 GT 1 -28824317498397917.9270694646148696660104715545063507 0.3771399620807192532485117351962987 0.0408378729729249363276049482731284 1.0416951599650703371189382675889067 GT 1 -394064695780252292494774101451.3932510865395234148931170307690180 0.9285118808259361957603601094130036 0.0356785624700688982748273118323535 1.0363305985297371295868856673372190 GT 1 -259107625720516513967053069440110579.3527933827706592574678842570928525 0.3657956358873041138303831523881158 0.0885458405191804226483979436810480 1.0927139774272248120948539469657304 GT 1 -70131.6288140104494864828269193895427836 0.3890118535213903553891749912491337 0.0418411437997237399745187927996833 1.0427416940896570662475991405780731 GT 1 -1759342533691549221097.7945803588387445517008370633193257 0.3193619216232375774692818071521982 0.0911475330754524443537125291199786 1.0955725005904116745487958951534322 GT 1 -149843037735.5970350937598857985877756835158492 0.5106636342358989095835684133814845 0.0453056763593603804914590161880774 1.0463640696953752894222673810687339 GT 1 -139055785342052753000598307239041635391.2080820782670977293377091736575017 0.7385565522053431081334798012197140 0.0215076858847681919154112331034497 1.0217423469390094504513696334492296 GT 1 -1701.6856084923695496566455569830070450 1.0492342447417369048346548444962160 0.0750891414688904362060729617224706 1.0780579152690745070225704045024290 GT 1 -10055052883791028351615438439124812.1104084090683919598375123353228357 1.1706931299031078389288837003037029 0.0777732717949442106869759847394807 1.0809641765401214480550236572548202 GT 1 -17807424245625000776116.9678270718306139279661441038056795 0.9228479535933644202072472094597148 0.0291435684953171273272851367095927 1.0295766779514905949204516071082289 GT 1 -421.0712353720649981142770857863471231 0.3808861791858747895415005279079361 0.0908665876500206410351489836003550 1.0952634273122623543069233269792917 GT 1 -293467015598636678533761845911534177996.9652114012311317052986647993586224 3.9909949532199768868600169077396191 0.0629538140428467666727809733078095 1.0650227066488296146456415130921954 LT 1 -322368575949402615569493538082041899912774.2117932985560763058594149451563636 0.5661903656489938541494643571420050 0.0201258752035221428127344779776951 1.0203311596523940594897562806528951 GT 1 -6842749070566712.8432140718329415922525945523261481 1.1895103095189048361578836347854359 0.0201418133179527528705683826166666 1.0203474252559539017027212898497436 GT 1 -310611342986652215287282616935798669424475.1616510068928341903454586727173027 2.0878227744855816427962564935117645 0.0526357821449111236253846482997528 1.0540716579886352853065476502376344 GT 1 -7737910743697.9591051028054681012287774105758135 0.0779019856889996005525978029932973 0.0108582238058283552884713680584136 1.0109176045554655856417443999715477 GT 1 -253082878217854986923622163191631064760053.4056884905247468049912445976142445 0.1048591925914567250218820344697901 0.0286195999612602390283511926202310 1.0290371262982024513588191004887907 GT 1 -12540.8738984850321258337723675518723358 0.0294211205797646946581654116267829 0.0958426556527842986528871217840590 1.1007518802540770585028583132850254 GT 1 -319529231460.2179608153502939219621208410049704 2.6498835096956178302851243402523380 0.0974212638648727350028856760431725 1.1024993503254966100719973985782600 LT 1 -6.7168080261095255540528055248860717 0.0688952729762370872498399422558284 0.0143928894650212804442808945788289 1.0144974718062404460630592578945278 GT 1 -22.2671437284932784413557692139438917 1.2120337889349506628423597506261036 0.0054047701986019983224477200739066 1.0054194288105288473269125994579302 GT 1 -447227714013939.8151074582139036310143905995357566 0.2540158447176388782356434881591019 0.0126746179259299648787849589745259 1.0127556261222463499900358473224993 GT 1 -17850513078844102.9972442364664558892037745053812359 0.3424906630283641367640132406490088 0.0721669533350900489268980163296526 1.0749034689921604869378639108662324 GT 1 -577020219875767.7834375644261708183370475099016292 0.2218637656051052816557667242110731 0.0554928415834124688316275376409823 1.0570920130152041962680429274016089 GT 1 -31123430488937.4680277272857848684680769764370560 0.7487126921552514015719041848182690 0.0144624538922930750560959971220489 1.0145680545786069950527749020688347 GT 1 -818930141929197036600642904763047631267.6270672158103252654870743233914367 0.8436651934015315155197011514978959 0.0413149603896953207361016732874230 1.0421926838918053327625054468082150 GT 1 -145767939990302707470288567319659817632.9618150960899501459537711631908484 0.3710182565668377911655188638923481 0.0704615851720091319057581416639182 1.0730671441883635812716506500445416 GT 1 -9.7654749848041437678306538273903425 0.0537821994513396143762102782047607 0.0603735131532267674411544841387874 1.0622728371025997699460271459688553 GT 1 -10666351946137188106556829569447419049840.4380047993277344061972154405229127 2.7794727496984170614096737271124354 0.0050933564326718611994159590612737 1.0051063717859117557761814999283161 GT 1 -2437002496412199485784.2309202328000190028056173885002369 1.7186846467332918495815940747386897 0.0482238446784752163881118807124398 1.0494254028031758891382241228747270 GT 1 -170012616265015192867335204818.8196873835592755512645262905741903 0.6146892385628150826011589691624282 0.0658345756042250092738316017498156 1.0681017425220059941519302951289690 GT 1 -610497472550355229430.8357280404484541483659244674832674 0.3731082262881686888011815744797551 0.0928125953944767480952257961820435 1.0974062299172843521989689891111590 GT 1 -12555.2758052947875237412867573552674137 0.9091802630487567240596229083967585 0.0240407245965466756910292871434061 1.0243344194606511204657834529272063 GT 1 -9803544197730705451606783966.7924737382024269643503444084068536 0.3569339261536714649515493107507670 0.0662573952296109156192098532103722 1.0685544624910895356856165731828360 GT 1 -13482051841130738067086402.6804973169944366337544642494867306 0.0713805695904553951596722604955228 0.0443412853771477293067897295596513 1.0453544227402624826861688234354444 GT 1 -1036285092954890926160825199260992593184800.1722908556891463306325178568776084 0.7009420397725278638078282261316745 0.0803077787042863075610415770313444 1.0837162069806093412031488469133383 GT 1 -18596876539464044294668468277988952199319768.3681065892958521634037156128164993 0.3719207227314179219376197400031562 0.0273932919936164299284114102403365 1.0277754840524977246464741276795945 GT 1 -7643570381653543291200916303450769530.2725550264091934087754048302802687 0.8621982031647397301026234807007996 0.0811119871299786540630031674453066 1.0845910216468789356241151446026748 GT 1 -28493035229557756088393058760242408153.7111750451398346674067568542239860 0.3327570377627423842858879654076146 0.0555946200992448556933474124082356 1.0571997771534226327947597076879748 GT 1 -3890465966039968608922218007584043.0954061028456396462712518364414719 3.8400938796625114574785075926962766 0.0530202444715477326229576530834154 1.0544775635024354584117036525591960 LT 1 -932838405138.8029345204656440680416580970700760 4.7395309500543143112799587489875836 0.0489446445964796491600832248330250 1.0501830105560622323757818359566636 LT 1 -29215962498304033145070386859.3963576885675990246369138032926000 0.0810070443498015508962940114215649 0.0579954399089271196474058577303456 1.0597451635564793734021415358676544 GT 1 -145885914276313.7815686221322148903390662797082660 3.1936833352877614880018868565942837 0.0095213893044774926861931598784035 1.0095670075284642630727794898928196 GT 1 -130163067516703904054309398024951913.0105857535765517303700477075060482 0.3357712377842138994637780670574642 0.0671161322664698664431751962543872 1.0694745577646652491222564021958596 GT 1 -5620474758771770255.5285128793721936894894938364405595 0.2268405470816164327871384795209651 0.0750970834969697337825761426349532 1.0780665021097462928076487647211223 GT 1 -149559676570752462.5471449691056317941591343385123560 0.2261593420847530055911850113746514 0.0795043100342436147639896431040701 1.0828429605950816691081075910868048 GT 1 -92030412787694449688300153962405.8856524476618840597705325428847871 0.8834839101829028203130429657481080 0.0015519943595910627980899430545282 1.0015531999503786931914941926149706 GT 1 -2000421850231669273822192960775608250.8986269905334853256491797772640912 1.2680030797204567312501402861700794 0.0242520554069594517506772241474640 1.0245509794129569540030553801988551 GT 1 -608630231532517415123297.4267448832612177218414045879500050 1.2315977548101539239839764822066984 0.0693365167037591534414531699596871 1.0718575243007955087768642115812137 GT 1 -7689764465685309994682.9664496206771754835175078078888995 0.2100464736252515870591169440874882 0.0875511572789554457952713104274291 1.0916232578685244159526375668405444 GT 1 -7131911961323198414195.9034486533888070587100689231275515 0.7009880895497137465627690114730727 0.0432004164910308321536498552648483 1.0441613310816743195881794008194776 GT 1 -12028027.5330713448754336482282864794759808 1.1003083683158632738142098630495463 0.0494906904749934043447836301715712 1.0507573227565290095242077449736780 GT 1 -183810678304405965342352637882379705077.7823498558749533112944783597093180 1.0918267175262636873033648347500606 0.0672300542382403819424226061342427 1.0695966832855824181926260571990921 GT 1 -31914295606.4923870553004002572844326467862506 3.3178496163333582742851815968570546 0.0204266003205938848411442628034993 1.0206381085404622042812655809764661 GT 1 -6.1430983917823621761698341930108734 0.1316774066740058663854872307798595 0.0870400344840273503919610039571386 1.0910632487286764309247058927160345 GT 1 -3298962288452316.7375454233503008207741399308951332 0.1087120146368746166963116107955776 0.0288933616509314294975122619036040 1.0293189934984190487928798480623452 GT 1 -23356806618303844753590635391783083390034316.0325600984610148293110861429258517 0.8608110207081305347434781169206761 0.0323587821223568735563654968980069 1.0328939030989236520680912009152165 GT 1 -22262859429509332157.1215089221538074515422116544198482 1.9559606433544792723230700847281249 0.0711161577335550051697365216562289 1.0737715832211135641696695947398917 GT 1 -1939953471304143054613888106369685.8943257734689676353262433772484299 2.3192068221892743630253336710843322 0.0884936816337582660866402300853957 1.0926567530539372570498026803580775 GT 1 -6779741399335072700.4325636479217403844900624602065755 0.5233103375351568945901870706921955 0.0741455399531885587952349653577970 1.0770382272643445225203270611271079 GT 1 -723418887662496313490.6873262583567779371719438710300142 0.7960281296909546853009942116679988 0.0401103704711699529837956377983609 1.0409369703705269245449256238415037 GT 1 -50640490390935382848055546647.0666784376920201743783722703168944 0.8599141441800330899911789754268123 0.0581077313951405100779945581555808 1.0598643754842621770471562625662324 GT 1 -3001350179742281854195782162.3266508533498462302160758195929353 0.1238992009135194797963229190423648 0.0448474970343489645491635309976887 1.0458842622810649337428071488468230 GT 1 -13231369168410830.5397131334947152216735811264150098 2.1078327745261533373565241417852954 0.0688197876908367039223515702061542 1.0713024518987358110706440083580123 GT 1 -239654633238697748312557961844196453633887.3520870318637963795553918699881313 0.6831675395812156799598153180241113 0.0846986562651921299078459225504531 1.0885019305111876091740752397319679 GT 1 -704.2242217337817210364415771462630041 1.3675872008297088569539990504272915 0.0965598029764797304928045081493284 1.1015453614852793086326780583215637 GT 1 -15146343914611220635.1068756430405339680164812791919641 0.4597398575095416086034383215485636 0.0134233522571132120266844777612729 1.0135142598900654152061596733750508 GT 1 -930300937.2510886406688562565250679164458076 0.1724659706007623293613474134372790 0.0735491386028327380389512663965839 1.0763942714714620753732545829185176 GT 1 -2419405456017.5591849570735326924280218354159710 0.9519513567936606651918119291766368 0.0273048737442968260822557504445372 1.0276845796511105420179194856015113 GT 1 -25.5151703203883888748742085373740263 0.9037434701286588183373405049532580 0.0571829597406702560095537846762022 1.0588830339857762521355816182117342 GT 1 -1275805165971536911769743.2027732466495327462357392676177249 5.2797233810991336418402396987357275 0.0719938887308079838406525248044202 1.0747169607982323083967525659632662 LT 1 -3339384864305643.9935680180788301270648284834361235 0.0368990448534460787459376361579699 0.0050665619041717786096800183462415 1.0050794404473096038128411875635816 GT 1 -5155918467789160614087840313.3295382653478585673502934272875638 0.7128677862715978321873908350066406 0.0181231949416304366883746405080094 1.0182894315949525311265049585789112 GT 1 -8404315207107964922745334.3870904352246650340402208833230442 0.0184937633986655982858920957418104 0.0096460076997148033906559574044790 1.0096928317856107262377847240876011 GT 1 -188767.1669235653084349916395670600061380 2.0497664391756863892627727106400924 0.0237802826023931174188846560534709 1.0240675976203801902841523222507397 GT 1 -6385411017003488160856764166048083240231035.1952758178115452611596717851844945 0.8236826378605099143393860451186795 0.0104641519677667501426053698794423 1.0105192861649941924882147598168564 GT 1 -16261159006688594.0832301044229994801198234415455861 0.1635610179822419964239288808293067 0.0421138348478829759649949208714990 1.0430263335912987079728749240346479 GT 1 -992.4702474908367126693535783053865189 0.4113143524354784272685139833352495 0.0780043430172975438721277534230166 1.0812147658675457377677685769353208 GT 1 -9295976206164458.5085573898935049645046072760981266 0.8494634117270084605038049328051981 0.0320229786887995849034572745628950 1.0325469303021938954704465928308156 GT 1 -7927721.1602161894284553265370694710331679 0.1257278229637874221235656633996923 0.0944736620589806316060261605652285 1.0992389154543775839255248505407838 GT 1 -148231670078479329782.3950686979871121934273232113363673 0.8578926504595855911355875259100082 0.0676848094704764742516142347161557 1.0700843342055315571513986853856703 GT 1 -3048501029366460655310625.3066307488370322129396992950128028 1.1072296256488190032067116259763531 0.0524808491049422509701166140740278 1.0539081302033697201271969696220802 GT 1 -2490302492314740303929409.7595286697283138778669995941655194 1.9632888254155885687062802553601849 0.0353065665632938660860957988309441 1.0359449136737153511555134419786342 GT 1 -4635.9136058450107972052606965702456646 0.5231882586608669760381101071935705 0.0793086699510060700640003614918268 1.0826304454275868643991908355827240 GT 1 -1333.9401178422550141098137148244753368 0.1560584433031324891013589678021483 0.0429469448741816514900383585715611 1.0438964500629225358276163430226524 GT 1 -106153852221008109908409239606491484529.3409611534431908862704423680439859 1.0393598120351849324360500626559626 0.0531557701148774924568496624901218 1.0546206873033852184608971217573203 GT 1 -943460046.8555652750021716871463187426932583 0.1800987623561717591331272741896448 0.0722042933002240880947595817126499 1.0749437140735878715883703427755799 GT 1 -113971896011268458303603485559466656513962.2109998176187958750899703199367158 2.4872360520264774385464973143980381 0.0708035967290712453216559961857976 1.0734351488736922064263535854868740 GT 1 -149378833518991847525592.9174515588508579421916459756475094 0.0306502117196651356287721762626914 0.0121939355662117255884712616712439 1.0122688915607993079419759533025710 GT 1 -5073499321432325104405213310925848580048.0529638955530934142683606445450494 2.4898639894745755529669999933751339 0.0120261242299935603278627958616435 1.0120990231121861729085338927744032 GT 1 -2446435921721206452313099482.9560638597655816577670483098097013 0.3131192917880949770521137660786861 0.0734452552084587222993904175714548 1.0762821472618688636925400328132031 GT 1 -93973411653350.6127108412514954273425116616563962 0.6586554040908938388221909907716798 0.0431857894503459564376395931427413 1.0441460437329620825310253271982001 GT 1 -15133590632041.5723024202469843640856789610702762 0.6195948589372216359384353165090292 0.0989450315860714950528600453847407 1.1041890150061699265208438589708023 GT 1 -2699997585163490264.2137259684498995389868422952268381 0.9777495220720330470552911959291164 0.0723878056748125125747358774322684 1.0751415275841215442885968422118471 GT 1 -6861787801483367257325704085476366098707.6065379151550929901737195397788579 0.2837041882819446500504840386694340 0.0531180883768724743066152427288718 1.0545808909070805448542801225459157 GT 1 -10013856404133971359588476125.1684260990144379633124715445873814 1.0019048989667142885711224020856253 0.0163961331055010188052065679844441 1.0165320372788776050182950729477536 GT 1 -783143124430622762492036300.5914014116619043905706395895804154 1.2464419903352809999914363007637696 0.0312108192212128462345670740567872 1.0317082544575670500782453142636872 GT 1 -8101656633780642209092284626272.0925905863056365938600402550205344 0.0460514151002479537727779290801271 0.0817711860096565042646000966908702 1.0853086667071507237846055096248383 GT 1 -6409209594248430702799.8672155239972065617171804389409938 1.3279607324438120488610499773794998 0.0862893976559466635101255717982820 1.0902413852974260612529658047118653 GT 1 -1030838745645490375982473923.7022802122974035058836980649132223 0.1008334527123077291711424480129687 0.0985986339404058349040364849193408 1.1038046532401675371011194125505307 GT 1 -1.5140330499268314746589293032334378 1.8845464986332975250581100746692569 0.0521975598729965861498024691380450 1.0536091949351838980022901929590556 GT 1 -6149340932440061642449.9490280060247274625870538985868115 0.3163695984546951366413661759888003 0.0156509445612226545890247030717286 1.0157747136951294060951097950178392 GT 1 -14989040736798425.1356170769286781218177873975719904 0.0522814614792080250893793982093065 0.0385283750877416208566946002621521 1.0392902256604709302197477555043974 GT 1 -25230447.3325398149638738063893623070292019 0.8937383159779712265638190608292317 0.0596357099255749565176553866887177 1.0614879361609704082071417787918048 GT 1 -14523186639513774314730730311450691708123808.1761397300697645639386757868596741 0.8054104085911661035154747557157811 0.0008701389935563177249986202286884 1.0008705177842400081454951164197254 GT 1 -7465949500900466538103771027333076919461.3837898045524847791835620596556371 0.0969165501606086610250913003300755 0.0055363851434430843532869755123707 1.0055517677258773336280053993191421 GT 1 -2644690810366831155096082019.5578775383937752381455391889553210 2.0392591841332260484451714034705706 0.0757585874119585597542167261923106 1.0787819724305865416254817189190015 GT 1 -1042139352776366266689753044.3360156933095604838201672532493548 0.3877731139930560368237237546555794 0.0744152459082530628737411068949376 1.0773295746171635425987276404335661 GT 1 -2150123531582951302515589817763196957642.9213479540836009257346847088450618 3.4016037252973601289561411312618534 0.0364303665610633841654547791337930 1.0371105223962092024908187951675226 LT 1 -5960515.2579287363376478761514552429632905 0.7689951026243587159339647706298813 0.0045657371261793689506430038311206 1.0045761919386865084792735228795098 GT 1 -361402232826562104785515241.6122328084694609086543844022833569 0.1076370994610995630447592351701293 0.0678682488832700529284669738827138 1.0702811104283223416674852462169245 GT 1 -5959884207720367793.7815587230240577604545044366564159 0.2736688728108522865552846062260501 0.0884170179910558440776991753741294 1.0925726500506100654294038119029285 GT 1 -8968385186909625945.3712038150048554946282421102795227 1.1212824114941070382539351073491339 0.0373481748237188659425685308705372 1.0380634848170237876967757351914220 GT 1 -1140604784542351737106499792264967997.5543180414237725771497442967141199 1.0611860188342429127952587873856423 0.0216382908215745554507150696489780 1.0218758315377026788236439386764067 GT 1 -2415781071018404116286765139937180740543.2513347326999633720857246258572284 0.4402399148001579636923434141380885 0.0294275652233818826778925451154501 1.0298692426032508609584280606754805 GT 1 -573349894.6794201269253116755436861311421064 1.2291827891450087183763786972348131 0.0694506576228608036961576774523976 1.0719801764958269340239008445094799 GT 1 -14563652405508992.8529035399024143300079358652655920 0.4171902261408967499670176598613830 0.0857997657225616373792379347676753 1.0897056568195528456590984868195136 GT 1 -112444018801485351661366218435101.2669980583649135396145606944206073 0.6864386521623070716348233932528889 0.0444873561689613175109289938655499 1.0455072827038150795790519325768054 GT 1 -5377021300515995741939504949656498793778.3440693102549497861984346909829617 1.9105954045003927549518526106928439 0.0397833890703963361315528920591470 1.0405963835873118965069990192776823 GT 1 -74054589603900473352917892.2348024206564076316948094439344957 0.0180660934980027356393240200115831 0.0976750338439560431943508946804614 1.1027805509019410831433801393022948 GT 1 -17768313352500759898891023429078.4242099173429002143258055307405693 0.3482908356464886450486564432318729 0.0508247000904977513796303985171162 1.0521617767676380227562220239724448 GT 1 -492059323812126839516.4671291273314417440115187324378557 0.3624294932443387008683302798576814 0.0481657468618078495649176017546469 1.0493643631950426109347232682688658 GT 1 -2423528383460833.9079977212990594338022046667345731 0.1008376452298455469029810150692976 0.0278045581085818462965664628173417 1.0281984228291928649562867949880160 GT 1 -48742749033031615069374591.4419678006910263195881092406692585 0.1934376493943324783545434383463804 0.0563033808185147937646454366881089 1.0579505424753230872095231027349067 GT 1 -26724.9612258343974801996621246858899051 0.3863665415326448193309868201539534 0.0742971885892216199127798456775213 1.0772020338488989107394299416676275 GT 1 -404493648789388356196421217.3460143865907977551485148464478230 1.2523722344931323729764550556918236 0.0287732116358601950326027028210670 1.0291952763100392951223970888749700 GT 1 -2991051913545484281627995200411081322.8141313235391836651332825425927406 0.4215085589853736038531222507975911 0.0395847540359066387763467375406508 1.0403895401628576546781062988308748 GT 1 -12569.6992732314553651649590664135448681 0.2804209034306354351971024367660611 0.0726843164814350075059152582511980 1.0754612282179733201230197812527941 GT 1 -1601731294223132240070531.0659077982596756459370775216468775 2.5129229165735563844615826988658736 0.0877165704834120473757549310757447 1.0960185977564868406367232665441340 LT 2 -4326465470550812602441665480508229.1357436644475315544887116575312837 1.7672895682612112050154857921850606 0.0444189647578052317815979321516751 1.0454357096439131210018610119620383 GT 1 -431748443537420632804633040418301042284007.5584700565667360197599181913712364 1.8168331272038081389655548838988101 0.0357078604814673297889479455685527 1.0363609809886696470201134728215640 GT 1 -23754600.6275633075262088345573024590749695 1.2322360690377778896453869703443250 0.0984447512203000952897654738081746 1.1036339528259558319714296827518652 GT 1 -14187545398.5877450786158546526865830250503812 0.7553367922903373831338211836810541 0.0236403417362151522279315846016400 1.0239242581298970769470229746076043 GT 1 -473875381760176951602444145363.9842563336609603270789284453364218 0.0750062969961012031233263341156642 0.0106151468724508087100996471014047 1.0106718894551498748963800285778930 GT 1 -100318.6652752774697132783105321639860145 0.1701965775998359685687555114579326 0.0417380570737419440953641217984747 1.0426341115314546005663559088852275 GT 1 -6077329074924207322728351282280396924.4747346369313092420804833798737353 0.4428022202678982313226699671558631 0.0901087989753916062184376074778459 1.0944302459326429413493739274879151 GT 1 -3057272770504693.7177521173192911788006597520817077 1.1397673094345886813619569456344508 0.0734643850241988760702785109397964 1.0763027936546796655203450986383369 GT 1 -221.7328071730496714203504613052207820 0.4063713418726344829597883380991198 0.0831349559715440058999751479432420 1.0867949887358501948666808714834177 GT 1 -4771519.1272972382539611399397553569647811 5.9399186652679914953415531115469633 0.0795328004118745100039628171190839 1.0828739121995869329398973184455817 LT 1 -416.3157515256304855917188905410514754 0.2088511966330083049072691708012625 0.0274222907214428381680029300751842 1.0278052999687377205692832133195083 GT 1 -213678337110773692601.9822432481326925801609802639371214 0.8078738692048372110796635642945595 0.0811970407313111877521258451386195 1.0846835873749395999951697909372632 GT 1 -198347797446983619814609818178031611.4860384403583250348951890599731775 0.6071641097528151957937422074168181 0.0190821685915082929731351852802705 1.0192665829569598963956453304861190 GT 1 -45979124561348875234914309649546205.4149148831625964457496348339695119 1.1901209996018939381770819031356967 0.0835405581993932210850051593726484 1.0872374660360793499170471478008350 GT 1 -15403316369366298.2193207945760058379083639944810189 0.2556569057821609401254688640657499 0.0633469805552590165607455640673754 1.0654423754164196120043107855110499 GT 1 -3904054695818077502954825882971.7944554716637670730765655300810364 0.0637072867047336894453699030730178 0.0321696198228436214601645041147511 1.0326984341493346632715615528326729 GT 1 -536325370927.2767635027635234653358172086297286 0.0146742793154618521996462894902447 0.0292510323052687864005351486566098 1.0296873737809374067329652439203920 GT 1 -3018050877413289838999312.6578607698407268536937124748888835 0.1387963163869461728646977093345964 0.0197301570806234696336808584532601 1.0199273953016195411282428138298600 GT 1 -742102440969261436476785610889581944.6710594623614449176976843690667047 1.7655661853380097884291096043196205 0.0431148076586925820569083907159875 1.0440718609312339781507242537468486 GT 1 -38271894752865900587021082.2099463426682574896342681808890449 3.3554808979433149448548005634622633 0.0075198967941509051218390835521610 1.0075483137694974243947547599588398 GT 1 -724986173721512969400850842814549560.4580136247149358742874446669381975 0.6907911640697532051290798591342805 0.0929194078880414268286302622056847 1.0975239771231892571411047215980047 GT 1 -306914268639647186861.1064572817746090681583188962574550 0.3506016109247679537755341860086365 0.0777403221897414606703084343034442 1.0809284488653619070330342912975318 GT 1 -31125359133853458.0068052447304945228722795201014343 0.2423037958207763146256899277502862 0.0012259419715205672265334885154108 1.0012266940531144335144980033444280 GT 1 -5445052537356994469369972011973188431163178.6473820670036035431355029497556922 0.0309721392632193671283174799648401 0.0718675018710928169575957765996991 1.0745807782316173305175816305516252 GT 1 -437910.1363222999770161502744317646024949 3.2017061199046759914261527623669165 0.0731477850450632311681028791318591 1.0759611490435493913782985415833588 LT 1 -2805117075128186793929154415520371.9498154891433387069198922284333074 0.2097141853186865328916330499096169 0.0034857471230816259591262297366585 1.0034918364943751046108899600082898 GT 1 -1950008729015105695644604.3421681874739357485689652573613985 0.0234379081542802622973398571893383 0.0198547163415941983609422687017613 1.0200544696742354890337230174823042 GT 1 -20849306300764162970969321215104.8435154167838424512657039027691233 0.0096164181129042673954785926813875 0.0070757169976808253492462977654146 1.0071008685971523953758334747499341 GT 1 -593264102730448249186540755.9929799353699799499321281835432264 0.4282538359484341613459020024571849 0.0166850389799539014603426461047351 1.0168258021993515849931142092103551 GT 1 -2781187791112167784116877051763.0994419573334490999556358463232176 1.1595436868442382451996768554994115 0.0708533912777540026541255197460616 1.0734887391402612044703363069658376 GT 1 -97512714280763484657025025604807826412257.0229471849345973916788806468794272 0.0807617740869604489478641032783330 0.0048433590473013766357781555944509 1.0048551261208817034847129224428933 GT 1 -289.8896072505376218336756432010311689 0.2405078789757788541430795321083389 0.0436776917234847871645823528694430 1.0446602802018581918205470624513670 GT 1 -272979481623997286.0939226872280240524784911513121171 0.0456871950538144847997201747466900 0.0388236325709215577903854484293615 1.0395973619502931961139241930474187 GT 1 -4387038257908377601.1512283045309470791389481070317099 0.7266398406916210198107064970428140 0.0902590812649699123401484181465353 1.0945954246940948435656410936001721 GT 1 -473631523109377.6494804013377917363584376816347844 0.3834710002012196977919713885263916 0.0476399857162614593922932900188673 1.0488121494131802356735692581725547 GT 1 -20274359222578438864718344093552.7484679238475354652143320469534343 0.9420332044426630540303554835322524 0.0687508258052454376927259492897174 1.0712283960594943180053533537623928 GT 1 -79959275666463914236449.8142429251529895869543417522537822 0.6355648304419549073734409735232506 0.0382503561502701408582414722295010 1.0390011076646128029408475048412940 GT 1 -896886183719198941650008685747.8367783413494814107585618368234344 0.8433532251845279701552983871238789 0.0910786881581748492656258078709526 1.0954967541822340485213113914248306 GT 1 -6856938949447668926.6258798876164163597055221169355029 0.0865137227390983304892413327646309 0.0304546806638493498528147623172368 1.0309280603314510793444245556514418 GT 1 -25938972801772725609131716748896852661.5227861083960044524364377827382603 0.0616284284194014765292014070602511 0.0631389593228124937700027332865285 1.0652203101138642304429724961519576 GT 1 -236381086853129929480140337607634939.4217956998119248696698717274914388 0.2792918477908790808658065408778111 0.0661664228325539780248474325916047 1.0684570395339874632772010448628325 GT 1 -132739531887.3689794119039223819795215897338182 1.2678099046467548108590279026845319 0.0624551701778247501181095819791838 1.0644907038038511630969840232772786 GT 1 -34808984624507111197703046633.2913441735275515392537213591057490 0.3826760450310497869703321253054565 0.0753348274268337415430038615532049 1.0783235825952688731909716573943346 GT 1 -6769036536.4234744861429844425689442600444632 2.5915526707282007355318406227109741 0.0991139198159493483026346926740648 1.1043764664552656582575967101091889 LT 1 -2018337477910875.1752729817922635776927863440886990 1.5102982773405231653029843162993049 0.0920150907005702966515745738582960 1.0965275202332372075560733413005022 GT 1 -17437806356454485137.2931415434021540596346771564168130 1.9565483728076075502734481870742450 0.0790781998731529529122068057713276 1.0823801539029665142976894128973618 GT 1 -17914397642400098512974945174.4339417982555720164944261709181456 0.1844622650054316012228801435225783 0.0483835940356643806125965827068291 1.0495932603022682854256586143761961 GT 1 -1313700097227803972381.6979601963375083572620634151077318 0.2998083504404849463743770789534431 0.0349916447177962589494714137620032 1.0356185193571069995903890046951167 GT 1 -760421248932031207747.9159115014172475659444457740991917 0.3427892127469709645939248365413362 0.0403848923228851742885142406310279 1.0412230044169825709536005414186241 GT 1 -1213.8203703674182053368033954877545596 3.4830290576986875410028887417429609 0.0133775072650054550536515087755579 1.0134677922110810191661946027135763 GT 1 -29524217285406892020944916284483912.9628421845787895351025661305534200 0.8630100720120421439433456612793989 0.0203682824999065129830597837846479 1.0205785764167522064203047823784294 GT 1 -190086595072371.7740113729203403619565858524350446 0.3231737251077399238222132555214834 0.0234817967113143353580915371047893 1.0237618874784902291236317886492924 GT 1 -422517950648.5268161570903944465666372678111527 0.9003192296016334576693301236584788 0.0504405579079732469117420583130140 1.0517571471168836363858616604963599 GT 1 -508870397396.1255539450469825334267916896569098 1.3181628208678674877081393000135445 0.0360472368604234444906078102365404 1.0367129864647298336287171318851086 GT 1 -1125089934.1877195003928635938671907758848075 0.6816223508937574467153239477185741 0.0922244415528398249732607692711782 1.0967581132623463744243251913722422 GT 1 -15601648322576488064.8387292584384002018420683726185714 1.9853243694673275886851251420156093 0.0626934291904514567671159974826620 1.0647448668952076637767491534378012 GT 1 -15321795156164382925732558948760424163.9190534616550401602191425861808810 1.4001827807929851230968639113986010 0.0978799937852416210576818889313552 1.1030077231851698025943964594205231 GT 1 -13330680528553333073546.4798453047521440575105949145388629 1.4323967055263816463851014900175900 0.0843474418119563307677424709773313 1.0881182895498563452631720114134506 GT 1 -395283117.1883241314680362335808388999621376 0.6573934733812308434310866490375440 0.0718600920319717046314903930502775 1.0745727946629376323962149964951248 GT 1 -2141054364186047470434310104846885476604.3236016224145659479467579103879531 2.1604282945790920016593627815718422 0.0026607296364706294182847170853863 1.0026642756689890216711731274366484 GT 1 -43891730906272310255619711449117456077.2711305823486677159190183507848591 0.2501168614735660963839436876420199 0.0045024014029142035873675372630746 1.0045125677388711132939318254823378 GT 1 -190648403369654800448960184644996158141.6830370729848204538849817278004244 0.5581364233842213696974448797393653 0.0531527306889987714321589278641659 1.0546174772494983906669084076295474 GT 1 -210486845995056164107502372909751785170157.0941907102020382453052073845684447 1.2933278922702483834456186164255826 0.0661588853151557811563420820262681 1.0684489679812367405464383165032610 GT 1 -113046971.8432048211562543313721075765988100 0.0036628737933377730022706869880272 0.0334179116232838668660343217660460 1.0339890502862805792251061238746512 GT 1 -735191712863728769450212.9540518661567936205880606047488263 0.2936126764143446117264470634464312 0.0452521310134202866237310746767657 1.0463079848909639488266114533009906 GT 1 -2240193728855654375139621.5219300320749836488140725253644347 0.0856701803985656066201439830964390 0.0529003911056577517070236628135064 1.0543510077009192180782064119304694 GT 1 -79082543660925064496648120043593.0306553020029334163655859410358508 2.1095099278821228614830124829005248 0.0235093803049334168440900032902038 1.0237901347585806223075003329457864 GT 1 -8381669838.9385720967835970245263655981876444 4.6730322594538307124730520223042542 0.0720816294884147112388747729079467 1.0748115128756831181010096585257703 LT 1 -130310383747476348592024355817004843602.0544740580580901612702471563922094 1.8349956981469616265515167021693696 0.0699970686489299120505138832903624 1.0725675408494049979758712367513194 GT 1 -19032415379677454924267664741172806995.8752642250301905498188824546135385 0.3794946077085395010362536777760908 0.0099777294161437987676329287933525 1.0100278405672736015615084425640993 GT 1 -109471164159203446.8017196773158227025521794992628906 0.3297984753329739626498086554771907 0.0917402851576781350261307012537650 1.0962249117174718189720525258403564 GT 1 -770795686383645244.0134244217266694928074561020294433 0.6700896120929239650913318529512854 0.0567074711959576822143802988224259 1.0583788336332783395010437162029418 GT 1 -1559662012319608160856878733859.2621279988534338452973207009939193 0.5104063062172053619445866051806308 0.0407031541755671560984111093432889 1.0415547151606875969107495574236372 GT 1 -27355526758.3558686538891106219531844338282197 0.3559611091181324742315755401926991 0.0164286180913389271235835990157208 1.0165650643168709156832319272492163 GT 1 -116060983225.8596097104999750124342359469671166 0.6860082272155512685091766734011477 0.0963527564492836517687894844267922 1.1013162120557018693436918932884347 GT 1 -303741497987707053501154730537.3473983416864713067698810416515176 0.6965753165362831337702260889792046 0.0742040377478609006583703499669866 1.0771014117553125039216092902720298 GT 1 -19957411645.0427282401819966933978444389904766 0.1101903647665817252749871970680425 0.0006342598242873280265445356270976 1.0006344610521413415441830006048811 GT 1 -518051637055635899692.0676875142908759126642148430328893 1.3586801823993092507564078870546994 0.0278628334234084912841611019243668 1.0282583666007371908723015932362182 GT 1 -4.3496701239356139566938858760795536 0.6730429551970812096956400424634644 0.0488472394044584426714115275699429 1.0500805977955581764729721633771096 GT 1 -468948639647090190788227.6373817685349758891856106435171241 1.7250729460630670539445640688843623 0.0945362092885874816998273894191837 1.0993079906289377694749359580276114 GT 1 -9685552432633490100.9204025950143455380579540691045214 1.8621343770572784530826663877115947 0.0843456432484425875987490984363911 1.0881163253094561466255063443345466 GT 1 -186862460670003397157241054993238097187135.7508064515374436215720468067092244 6.4899724338318275433002921241570792 0.0470895720190332268267944366136460 1.0482343692720197744789843633122432 LT 1 -133137191143339780944127162874104793712.4171933159219851873117548686405181 0.2870238196387920852953576021235357 0.0682964954734370819392995011318934 1.0707406431004364349125258143450853 GT 1 -110877997729747957551831442153602.8639769478445888734207767914809311 0.3541504043268707865654063840758455 0.0845303780155599945149862738476618 1.0883180973029305257861142267714232 GT 1 -13271766826800839450114420526893432.6384819790084191855596685167394263 0.0619153153656816670622450264776127 0.0575813838077441496302473162339689 1.0593057122558823676664438671351553 GT 1 -1240219503588410139234787713222941852.4370855251955634278374335076356130 0.0255417944976773295979612938735327 0.0791884998111444277462700498397782 1.0824999323074775683070596502022150 GT 1 -615474089063233330476943677904148573.4002972659844492512972779011258444 0.3466213281723135236525143486962271 0.0143432037383347550622291404405954 1.0144470617860237337707043133038453 GT 1 -1101933178490247174669806343656295907474.8171247768305024868532403686014900 3.0673563406451234228638423017111275 0.0059100990646736811896172320645986 1.0059276328184307674592926490686754 GT 1 -960614658.8139062650778945759260774731568246 0.1440006450016328890458912676438834 0.0393734198371099458405338525516885 1.0401695197585385007741772092084981 GT 1 -4477396366659486492443708.0195811388396147092735815379928773 0.4271684270223026431279214771557016 0.0058345358654758420551282289858283 1.0058516232669800515579972780161858 GT 1 -115484755751809684846421663081064613292912.0293038087582354265516050377774580 0.8158676343958092694137664481288193 0.0958785241797564500665216062662616 1.1007915517102450115929785220285952 GT 1 -50609456191213472115584677148975518.3910914180114110990387764433779245 1.0306308294081103387806336149606232 0.0845253627772314192382210365105674 1.0883126189948898873478849605744948 GT 1 -1049655202115.9589339214855358758587883099112234 2.7145928914455979006198708265896152 0.0592931012002776090088334826014275 1.0611236663437383746825312284552811 GT 1 -40363284106955405221658991560706080.4740657732202849313370127811712296 1.7956416866596268635753659079111644 0.0760684790380564636455823886464311 1.0791173215998948904015769815480244 GT 1 -6682221435493891513538.6957795150599317907645897615736708 0.9584541934081441570753150089653278 0.0570613655037087409783623864655540 1.0587540732314666665041533508193721 GT 1 -6707024595262.5207446260684518246385688933680239 5.2063096936331473187413298090410138 0.0530402531584808422702340757416800 1.0544986926746279347533788473295467 LT 1 -549092080589755.4550178383254825900248905798204270 1.2925967579217926313189491368245850 0.0452483871838624823694706626714034 1.0463040636230154761904086239462234 GT 1 -163854715970926385745580.8141679525191733379238659990834118 0.2682022791358703614835175156188917 0.0434730044650430319520022801160755 1.0444462672539326523126011987377226 GT 1 -3772730.8944377699358453700376078395758978 0.3198166043284997064470744454941098 0.0404273164987914699075981592939759 1.0412672149690798814012309856610327 GT 1 -6168.8609150298354495627424197675176189 1.3819367729769634168939773239137246 0.0453223984932538957315740417325299 1.0463815855430461427404343216819883 GT 1 -13897320666749026194598173.6671715934623118325561808156074428 0.6211028581353324272450064468938115 0.0495508749958583535507798211473812 1.0508206429425908002949998222789960 GT 1 -154585443451678534684323152.3559822032521252645316058529228780 0.1449513919551776506558091445042444 0.0144455732142967717675911375130067 1.0145509263286533041932957606550558 GT 1 -476818598585285822823.9998774104368530585678304351617970 1.8001441763276934836507206316236908 0.0126679879505112711355475557779952 1.0127489110582170667370482354054084 GT 1 -425.5785336409835902593676747046979292 1.6942137014213260957113360078428561 0.0213684608612732900108976704003373 1.0216000718106385248266268521795451 GT 1 -1013474989020697326098.6754728103759654010024190064177011 1.3714339083713477782338677488758230 0.0064964863975555057780479562829985 1.0065176804062379110083476027096829 GT 1 -3107722762464994776025.3736147830787446839605981921921699 0.7616109874174080808415601236183658 0.0516083508641295748555886645793878 1.0529877300427796779153424186476977 GT 1 -295866517851849.3184573127082757444368539465778749 1.5026674695551397691973131721659666 0.0431152015275548593440614953148268 1.0440722725469079284106091453565271 GT 1 -207534031.0206897635851940352392808347273840 2.2118359909158218473089929954862435 0.0145608215477763711557067932525411 1.0146678707299995804010671371696746 GT 1 -5738103669605034522341.9946613653015314856023580071088694 0.5541223092515016751736916175199272 0.0836364558391989089371429014393737 1.0873421107733264610725170837745021 GT 1 -123167470172472430787288.0712554061138325479712533264925490 0.1177858907260227271286292339070097 0.0368026740263337580439849647696274 1.0374969806215646461136952939885502 GT 1 -123708687.7335400988348750702225596958148255 0.2133486515674601276423073261155191 0.0386217047936808263300108602495858 1.0393873000135298944365331381315464 GT 1 -6382839442102826882011378580833220274647.1687412923528815400387802691651323 1.0509763013588663763183616159040346 0.0707997602343138521403154984596598 1.0734310200513853281597387423444117 GT 1 -1422386326482500058692710269925031951073348.7318153866740080316079108742017250 1.3169073924749861069714871993937150 0.0618648485774807918994985519670129 1.0638612556829164638138619973547947 GT 1 -241.3067228242969586890707929242106746 6.0909121359546906268218349930055871 0.0642263597736912278618358949100946 1.0663816691169708036990503866176231 LT 1 -2195953154.7956581135942264303156786617804766 0.2090032907737814798304226398325795 0.0888512897595576988278996215857619 1.0930491565804142643512711872587993 GT 1 -1843709419.7735023440027218423604823340400735 1.8329686598461619597233233158091835 0.0548869186862318986954395184388197 1.0564506958815197917432152874553067 GT 1 -375120429134518234901376923.6252727273484010084628423949521376 0.0121837563609513361629171215489869 0.0305425750028531202701555291887685 1.0310187196554988056828462035659721 GT 1 -14078023509780142777334384877.2792340733719021224466437762255915 12.0907062299137547537567623087782182 0.0169116430757322195766666469892130 1.0170562779056459517571991138591627 LT 1 -254473424.8388769490114885228463917397882912 0.3898559082419926523752859141934246 0.0998770024214840768445360483630683 1.1052238610193679442960309875276421 GT 1 -5484442764427112621814711465224135950472251.8888353071002292602317302388356902 0.7201077916615919469509387848239733 0.0640745957793514004279873586902417 1.0662195020259283834936638379554076 GT 1 -1369921621436374866.1647256629998240962921663501090055 0.2602718155931696727570074032265995 0.0528950903073577981832340141913090 1.0543454108413953884277750757776021 GT 1 -9345069007333.6349360093180435127174121715891890 0.3707768164615766000238348549637705 0.0019681642980085072970303726025837 1.0019701036784578596861743475706992 GT 1 -26178762019119975.3970675400826543985900055431471467 3.0396078505534971579675068182178221 0.0258501351362396537783055321514851 1.0261901218124592169423061696844392 GT 1 -16077322844813500899526804332350068445914552.7671542671546226616991383467243711 0.5966393666327174478274989628061202 0.0515931538343495753625028398742863 1.0529717061690598615164037967752423 GT 1 -1794823346554294371480625082071.8452292859300363286604480241132205 0.3375740105300737375012949629518316 0.0702334564315018569015976188545628 1.0728217527687131039449356518203414 GT 1 -52613107360120514161684589479493273548387.5602246369531717295456725866207944 0.5015249059118254104419404965531284 0.0202169245464475691316681847849152 1.0204240833974034679573252668757511 GT 1 -2270378.4551414349458074379115967153604459 0.1027722054820822610321957641225206 0.0591081321187112758623405692701539 1.0609270579217543048221135656542892 GT 1 -31675292300148033633070925085.6229039416174587884097180034306373 0.1499961660537527025834804257961269 0.0005692652219274659032164732261037 1.0005694273148927583328337221181205 GT 1 -86574005918952694873725604756.0372708101843683961351746884574115 0.0909857421868332344137430792695354 0.0434998951698883912463787860961265 1.0444743805042279552512138782987909 GT 1 -386826064307446062988948013691232.5476082904454773827920463912291492 1.2139362453508115067603744603857461 0.0426809431496285303387908782132316 1.0436185503540823001696703622000539 GT 1 -42.9477805768619540722973723962939106 0.5760973488736924487691696095252180 0.0745167401291794091622724337678885 1.0774392347920058348874771676594302 GT 1 -6366263875457012956603059499742875.1866274189844326672794748811598285 0.5536728219187393602016495179523754 0.0639981753804588670264900136101591 1.0661378531265934055998102951408566 GT 1 -66987706608987855726223269976342796186330.7086671330508923877766734106664018 1.6941968766858448083766037081325846 0.0497547945792166321083844478640695 1.0510352167232103211135517881646401 GT 1 -115111549722082876865.3190619626632405850994008842782015 0.0792803706471168914014623273895439 0.0047002240175016647494107500940516 1.0047113048055003521297966587717712 GT 1 -9567386417086293951285912303801404857815.5496740575952778785742050421424760 0.1367275947855589669791920208962677 0.0028575093917447764518515521673355 1.0028615998659440915353070976176000 GT 1 -3.7110926811387477213281567331303522 1.1062594037350757881842726854585368 0.0191908022668642971117221896626554 1.0193773360575220901377649674315489 GT 1 -207751111420282748855296024091.1594852143908811440198083734935797 1.2823383117326948133667499367152001 0.0432231412871036227787481129588984 1.0441850822060845605582509383770592 GT 1 -53017578349147424619369675195034486807.7324800785396445527483324134935253 0.2498304261657864475303952538191735 0.0064868612908313571586437962811215 1.0065079924081901579109184737894414 GT 1 -14541320100064991565672197943.7470134499430424574559723598089008 3.3266384313883582895844079695826619 0.0172454692235171586600213649287777 1.0173959043865639448644938640639268 GT 1 -116605197743822197783531254458.5707577936632020148014942314081558 0.0416300322435133788217502841802815 0.0907761367941070046430928845832934 1.0951639409712619709884215333835313 GT 1 -607548452489808388633.9564545099548710586117767161150148 0.0831393739161831222615853026023037 0.0033944413715653318927042405902689 1.0034002155581392598376489108898038 GT 1 -2839932152683210847812675007.6193734102733651232877492246660977 0.9822288999199165759658436028083292 0.0049842476873714193922190196115717 1.0049967104788822072833092252705864 GT 1 -65278369415922227798142832.9612149089445129220195075686201507 2.4209865838294924665442453772240599 0.0164616380951182969513242051642191 1.0165986364181594354288156068526518 GT 1 -854301460227.6849652008308380832998043397438691 1.1313291985944075200026537678090326 0.0269029309621152002794491859727864 1.0272714391432279769458119412634790 GT 1 -1478465221334000903070526588645553562.6109230394586545417840413025105046 0.7346803096374377914626997790775650 0.0382113662259174836257508815087198 1.0389605678689543955326071729697610 GT 1 -922.3190477514062106033073849947118057 0.7022726217067345211127034163141063 0.0693733610074422287056894023109657 1.0718971143714101648242942155785705 GT 1 -157021316570207875424264359573524589095441.4839877537385715438333048318440654 0.4235014523911678623183469100440950 0.0711605745994896638538765383704567 1.0738194018243643097516953820338009 GT 1 -709059054.5916904237637446120524754078302778 0.0964218213897795921539773613846771 0.0680927336896111193724943300013609 1.0705219689139308308190759800135905 GT 1 -269604147967832332897533100.6332924170125020009689249257588179 0.0426180206248764752702302365834775 0.0430486175746229139607592553593505 1.0440026908829981429338248326346798 GT 1 -4677737607.1443732130182364171504841110821406 1.2937097154029131823372352274632642 0.0446394648225641388191005037714040 1.0456664859995597226209671441631033 GT 1 -22620767061729808916587.4933974047398095042009889928402738 2.0093687289248079473168363403645770 0.0441137162432124758655583694366963 1.0451163230510547901513197673529386 GT 1 -5323612635519.1803318390669363427738565489927599 0.4246595024743970991339662691716188 0.0562578704295299533923394070239271 1.0579023179816554082392986883357876 GT 1 -45806480263274937544.3275428522832811532784080260336203 0.7825234983893480963434050479590138 0.0506647052592928783307433696010345 1.0519932290312867100781137734531147 GT 1 -180396368.3754621003194504479709656902921323 1.5809660898329851870112021386108085 0.0472097650650319668180199079485698 1.0483605098023737929464668310872443 GT 1 -4220.0228292721670965226386654947994474 0.4728515174708937115557173738105379 0.0663259707407229047883376086306764 1.0686279067454601699256194699951125 GT 1 -115891704496.6615950929585799711394174260927331 0.9836559963530932166348126942785419 0.0367197828566918137009924548819831 1.0374109259774404454080164431240703 GT 1 -537673921202078007218744750.2980040612613161832317907253386598 0.8234098498577016566129316554180911 0.0815583304332982432909669255812307 1.0850768825311465662089583114909547 GT 1 -18.7028330039039155226681727983533704 1.8255828451061074420265652926452608 0.0138898452171028757889675284855068 1.0139872117728355952382373511023301 GT 1 -55732360240491052428105643852713772034437.0457072895537048938214425238580932 4.2026852814491725700921967980121880 0.0091853859767406047237220164195795 1.0092278317550188793999130656722931 GT 1 -5430278033016939958849330113.6883706930713570746434893494143101 0.5228504759970241984411527767676512 0.0119356058977849056720509418457951 1.0120074071413296756535850068464653 GT 1 -8522298110124302936908266070441939452435029.5214718547030607150615739570022189 0.7930407030593767920872059241534316 0.0707040051869165843645188928943715 1.0733279743247377286854309930021865 GT 1 -991695847897787677426481898364107.6387662192329065598200972385504113 3.9153530981595816636619878501672267 0.0971696837736785102062007350895091 1.1022206543784550863407935254217287 LT 1 -47295367803067763537.8588831633482619661667512417023686 0.3441252558970778805509725738641968 0.0871591308283615501023028092570627 1.0911937080232943910996588365281308 GT 1 -22734662594335.8471682703764112000050216604679381 0.0984619838538769283981149798110587 0.0371744540615183830160747954445203 1.0378830404604419481107869406792310 GT 1 -223248067906.6125694442229077415138585061058180 0.9892669537139301709961937989927162 0.0975882076492473457074404743860046 1.1026843305591498998673066777495143 GT 1 -36935785191164631044349.0406417575781484724434825951261169 3.5194069897053803517395058584349996 0.0598067142338057545018021313104444 1.0616698017001051936204564167074257 LT 1 -356911621575068170692295549592460005.1136967039314436390264906184255531 1.9698922809368166550801140795519719 0.0839316485888391126750591036113306 1.0876642976474002606744299966402442 GT 1 -3596272293747575007784315997945650573107704.6490708338533173182192598119139200 0.2600495320441864208743579858787888 0.0696209227283186266138236761489588 1.0721631659156618639224368110747920 GT 1 -146578745608105471219.1442273503085940056744223558467047 2.2193008029037553183497898087479756 0.0604913519093204345408638215190716 1.0623982551782423749001564696587844 GT 1 -13519748746.9606613337641477752570605649018231 1.1660112060119576877832590650082906 0.0860865933975665572463436973175729 1.0900194531514050440578132252390144 GT 1 -32790824644416999235976162022289.4891926837757475937112309364543708 0.6959888780297671915188868969006376 0.0592652742284493125970177498241322 1.0610940858651660815384036767739412 GT 1 -4104840998662332769.6768146139482815726975459562735652 1.5875199046283202988768946561917785 0.0548262335607431312245834838343860 1.0563864885623166222716027470780968 GT 1 -2624908771670373388.9691391940833873700971140538938081 1.9190707103825702934193769927430955 0.0609479839622639401542851936635396 1.0628844061667693710070897171672354 GT 1 -82573905.1204383966931397317619840209365255 0.2823406169527222892907580015356850 0.0156718939352676583901681417466673 1.0157959963863247417403671691250743 GT 1 -6.2941537340324824065382593191757095 1.1052181214587838732865149041268204 0.0472489149067822333493187567269595 1.0484016003222636433854110830500137 GT 1 -2670294585.6445292867009544920894423054852449 0.0989800986284093347259886586172961 0.0703364290753163199430216266132656 1.0729325099766523709444675697744606 GT 1 -16460783118153517342111751625271573258582360.9763754206587748939639210463281039 0.5725748964286233390910578108026380 0.0409412114340936857839420904566491 1.0418029040319071579787842724338877 GT 1 -1069029917370081.1548146684417080593841616371735778 1.0335161030111255231897932068021795 0.0176798585593438698345853752336640 1.0178380141435556398525072315773677 GT 1 -256556107657559402770281.7204572002965739427530269711697541 0.0172868275829225417014565232612055 0.0527659916750567393672057521543570 1.0542091114376582568576520005555963 GT 1 -288498143110738918309118987346526.3955728561933835399930063898744846 1.3374927167282887897451838277997606 0.0136732098267653699603332793013735 1.0137675490943783031234868013996039 GT 1 -54272696542274686322.3445884954761136176651867634775834 0.0726188768029076116523644814198149 0.0864655285774862334710911154038750 1.0904341683286830577233304259923867 GT 1 -2256068766473818104503246720.4518474290065754878668456514405237 0.2231973048585524320942667703324074 0.0274350978434286269165943481114351 1.0278184682803161962537785811901055 GT 1 -2779.1689716876108594792189152667348234 0.3819004181828623342782881833529296 0.0239829952689406456676528647771128 1.0242752698406374149765039608285526 GT 1 -2669678695779274499.9054297089321224458842470892267555 1.6956956031122044409028072989696070 0.0018642028542256562476674841925870 1.0018659426429154365729383192735275 GT 1 -7315779613245067691735022250472162802497.1615038177685782953472935516585148 1.1829440663855274534626896940369945 0.0014183053508893421735430115959717 1.0014193120979526149365429766000850 GT 1 -1245895878856746573236956016324068.1399093363862745548452267146443160 0.1237140689358452154973891755314208 0.0852660200672065449018282945484182 1.0891219882913350371148881509685658 GT 1 -25237794448694766871514200868254419056.2516734316859225598638684660826486 2.0110978505232449614120549143237582 0.0172038478137653329064173303936684 1.0173535534971986196226691897206664 GT 1 -110793026839008915182.2882369559683999828891205490422998 0.8832247765416092302369356003741186 0.0020869628110135945161547835298482 1.0020891435525134016187313561829081 GT 1 -38396360835171430.3187842271684647519837527420760438 0.9056243578127086405657703491281553 0.0714314795141673072160531572325430 1.0741111039431137950568716542669820 GT 1 -6616700332268105925592486985834197.4764756170504947715263040626226395 0.0106692871837561771761043871046876 0.0930414078797918001286918031219890 1.0976584835803757900246510114119525 GT 1 -1908337267694989001271007678889665840983806.7902978686487897523522489268665658 0.2706439447659210546239879073513960 0.0801240628312721491402205816966926 1.0835164689358083306674378889579473 GT 1 -227641757.8833949465454869097309865802076369 0.5963217467744027890053355177861240 0.0342295900263878527352659054656087 1.0348291438525778750916227940825489 GT 1 -3938816651765820938752814239323448986762.9272235795730478657869448581229205 0.1903868998699322510695061198936868 0.0628785452855977586920545858062030 1.0649423843172984769023235694555296 GT 1 -20732296484033074482962348686504017525050305.2180361660543922212491384596043573 0.0378517748341044996823401635121329 0.0392491113817236859415171016697332 1.0400401246161685239755794508061724 GT 1 -152288832708536981942244872814.6219547460204021313218248900492933 0.2685677279592695148583335502160892 0.0207492158109859063963532647355973 1.0209675056307839561571969514008695 GT 1 -194012128955.0288094190868563925891139246916271 0.0180231898316288236313147502071979 0.0448325015637450151383357435841916 1.0458685628478880284671397928459800 GT 1 -63701892743264719494760353.6610162394113667315463072903371608 0.4067857542547047520163258389930163 0.0930238191985641573405046630084591 1.0976390907317565813847319408885779 GT 1 -27.0320495634204153742967022983047930 2.0775018545222988530282753262088017 0.0803585852320759329626751222246097 1.0837714514743829430065462770131133 GT 1 -377764958888615.0061094323641537345334089602501149 0.7136448493009055734038954143111422 0.0633524808414007435249084736194616 1.0654482477108308905797507701102473 GT 1 -62094072607393953335338551.5745358468944055483351708422995963 1.4643871303733966467072465903559955 0.0763992838300197984871296763907991 1.0794754260906853066135753171031237 GT 1 -390616780300.9637071669948762497780091676560171 1.1620604721784826269521122053978738 0.0756632948503669593642786643326530 1.0786788742052406432464530638606541 GT 1 -158132394775286917581142.1114291523920995987239086751619068 1.5313396650108435359298501462602301 0.0605413842675366779305634270697904 1.0624515103457925185006026155324715 GT 1 -28650984291.9685669379461069713536530831318966 0.3800824450924359692279978651311211 0.0303771639373798163861672066489393 1.0308481118996505562093952392495202 GT 1 -4271935622.1540066333048240375530470507437582 1.3886607634961735685472792868759385 0.0285668486526659236955972564445522 1.0289828222621104198306611808692027 GT 1 -1344.4000938171168465973032390136715144 0.5511450018025005532125050167686499 0.0620882138228209203861591139519002 1.0640993789856109726711876532805136 GT 1 -23551274997333325434639181983721442470164874.8271635420102217556567933512287719 0.7872335113519632026925752253570295 0.0202755157612838902244029960493664 1.0204838853762873709117824619732270 GT 1 -5359977105009.7886713035957565263351863976323642 0.4607129618707278671553957058422287 0.0505736690728315519162979147021980 1.0518973389676784771585602037688905 GT 1 -6376487643751320890638.7812065955095616578286644730980138 1.8190006090976633110741130253214634 0.0595257098993922779846564772887409 1.0613709670308520137402433704993391 GT 1 -374893715348367191154397.4349230756646107312931183731623680 0.8692006512911037578051205192701181 0.0736289458684576101324653582148714 1.0764804181917759428260197516531053 GT 1 -853386803035723084553067298.4213572953631424730575692623162034 1.7005855057440133853624099188578610 0.0609177325691296492927782769162628 1.0628521918640933795578863862800570 GT 1 -266230317080409863891.3228457747758708878579086459080633 2.5588218200070237721432521732437127 0.0561202993885061749721782004804684 1.0577565567501760179335662471238943 GT 1 -20922503417417157980.2189117944794895112709832900528837 0.0246371178673222108235867017909602 0.0681075461058987812545557176919486 1.0705378637722972099816038967344960 GT 1 -22589566.7167902772283410754398507917245204 0.2759948140226049208036130581386075 0.0066316793047735152530416234319439 1.0066537665946803976835838839258517 GT 1 -41125361861497927.8707387854699829302730189404144407 0.5089353438242364306355017056049918 0.0802838701116186657554462605255451 1.0836902110209263296581939276484278 GT 1 -3359989322269069421379457484225506439518.7023966474499944543413207073743153 1.8011526670074288389396671747240544 0.0437896886258636221550113984294301 1.0447773991480723620331964973951712 GT 1 -20249925840787.3631766018365881977757283838154216 0.2444166207233193379874890268622627 0.0925381942505974484588190257346027 1.0971038010573097047503808349727153 GT 1 -1080453876770485320012560224.4659993853228233694293524862784824 0.1150690832061896891903417465569474 0.0625190892319052369750675314155335 1.0645588831922419859324264655444077 GT 1 -3.8947665965859889548386841866812623 0.9696622340693785953016557929507200 0.0164789212387684974350087947222205 1.0166162089869322352681243603526825 GT 1 -1297510138757299125086980317493054918449.9217228807808297259074325796991937 2.0951244826231158089337453672262407 0.0445647031246373335123578787635364 1.0455882341039768889356769469717741 GT 1 -39129406333150142107.6741398405180804245154948024077049 0.5712621495983276507912026990755502 0.0704065198526669263224543194001889 1.0730079065199580925458267416024836 GT 1 -1056868241032727927798397662364.3276798454864160904540914925994248 1.8688273358128377164379992300178662 0.0929890418486319150090215468122345 1.0976007471854439213932761948200417 GT 1 -2356905209973537146939807281392.0069789431691485822118790992115984 0.4100893450596439313786048169802629 0.0289759182439034386976039065497500 1.0294040100137000223409480313911918 GT 1 -9920375916.9814550121172925391813247230112567 0.2810778704264904120460521673891846 0.0713107204653608972417839157509093 1.0739810637850105387637149574350564 GT 1 -1419086597761952710965764.8857245253149426203764715045129168 1.4774320331431695892071094458289199 0.0426759517524078188702313095005731 1.0436133364348851060911897212353285 GT 1 -102816536985.6035570594530896517477943811047517 0.1106322145010554764512755363695916 0.0517507495796145918944894412191964 1.0531378889007753021980637776884742 GT 1 -200698801683493696191.3246137285536493116568208094963035 0.1149651152267014203174522476130253 0.0219895524102296250937696046661593 1.0222349263972511856312320756362621 GT 1 -592292135513714442317191589277040819835.5285218975095568053313065655453093 0.1223929392959286027643563901694979 0.0395235771888655286087857974220067 1.0403258438617530735086366819038390 GT 1 -1.5093855425599630149257256656760717 1.5413451895335233918837559014548380 0.0708583267372180324840203521785261 1.0734940509742881288236327394724866 GT 1 -2261457.5189093335742736412355411709390319 0.5171013348485468158201415279081049 0.0105127751839886568648430622260070 1.0105684247696914193388090468942029 GT 1 -3181763345631833060567847161101.5815942816040881542629851002370835 1.7037855363760121086845955093180437 0.0080000183192788767536465481251339 1.0080321901642794262814396352410736 GT 1 -1766181692198424840.0969534140686545492266392254120463 5.0876402499412504265293665795649485 0.0842513150286061355494708148962709 1.0880133133369182795487464849567850 LT 1 -21628447180.1150175912988328429896625339057920 1.1881646201013598888758539204578356 0.0478922006332833294950337923604939 1.0490770159724243375411833243528089 GT 1 -386420259773730.5964059786212946110764697564014071 0.6428666013762322000378363746207515 0.0275728500549674680607127425064844 1.0279601163776647904043106132871908 GT 1 -573417418499041052395268114.4118144578929102518583789649690981 1.4681987887538073589632240750577686 0.0623474296347367621081308298851681 1.0643757926556213561759016893181541 GT 1 -459132272249579653343604902293090704.7561069201210835492459669000589749 0.4284783415524413785946420008748216 0.0148504221938874317284467554528917 1.0149617936982254232382887007811099 GT 1 -367404135261.4550878110999990869926610301127275 0.0912882978187315748070544093355853 0.0506238021550999813850223766186964 1.0519501439134486926611090478035358 GT 1 -66900970625768609.0483347881041014625817365052762065 0.6889067350225602634694895510572176 0.0644610887729898419237195894140655 1.0666325400902322147321353427395670 GT 1 -16848.9131912891569568632325238390751368 0.7064179420756757213716484768459523 0.0747193496278660793662256071170318 1.0776581816802336909439729303565857 GT 1 -15622006400702393877063770150246641969035841.6642293414443619466870498921542436 0.7016634574118299072925095789888274 0.0024722758642508975608534705862866 1.0024753369845554256071261047555442 GT 1 -3445340136229551297627116562.9848931611706995959950309974784703 0.1363085422911251458475675946302460 0.0543141101710750408651105735074380 1.0558448054178350068987200745147008 GT 1 -24304542387524226041515851750992730021173.6221232767256383630881906419974966 0.1765417356905303427701361111365957 0.0194115631239643270327929391978356 1.0196024417210926782599693863883591 GT 1 -559803010745318663288981242417135481778647.8629792029689034751686208519367001 4.8253576992264929960299235447174701 0.0981731863432870085142696586922485 1.1033327799522510893285443380678741 LT 1 -436184.9394191703057607055883800029743092 0.9120999504376718711912912485274126 0.0965817153261890110925370786665447 1.1015696161238493097007574728421488 GT 1 -8254578592910219142210370827462280221576458.8716924887528409602149438261560342 0.2940139502290628522673943842871077 0.0679078407047618769298175555126758 1.0703235858211940351151070044611839 GT 1 -958900198235494732454.7491582691257857724205656646349194 1.0205523572001157748973787715836893 0.0493591857686939936488737330983487 1.0506189804921639873989616856413014 GT 1 -2280628208278405006627.9185978332029092138773315618966008 2.3820067921523712229278117333202960 0.0970450347058262823146533230079166 1.1072930276523218438105488375548025 LT 2 -3834401135157526741.3744739050887443618893283230708427 2.2052414575245119688073298686869408 0.0872179758789997341877832051788141 1.0912581737471574744367367278268683 GT 1 -34762867.1566639848263290759212108409978346 0.0010287778304533343016447173221706 0.0100831582283026457052379186513948 1.0101343375919553976017811168881666 GT 1 -2047671064193079396454195821.0460330938183789198529925235095985 0.3416061930465440134045739911272995 0.0242682850935436266804062050769099 1.0245676126240750361631923619555260 GT 1 -432132014148147224946737173136160.7261519555064740457065857520258994 0.2525068511935885486461028829477058 0.0674978666209414101711384224573163 1.0698838396608225153606407874527677 GT 1 -12540254071968477903465531.7648630097918740329864821755478197 1.3260868530537068704074867153650350 0.0459950730379671776902374306945685 1.0470864430167539392924719493095947 GT 1 -1259253412.5660448086404899651619431218548120 0.6635111993270586709818886202933481 0.0284182512758187755910815495402782 1.0288298667936460386328504101355604 GT 1 -4027462.5309725251034839166086160649917117 0.9383872396975720278766628806112348 0.0926749952090491416749286173837391 1.0972545636239277386394125671489309 GT 1 -207395352711111.9652976185257284880651436845760163 1.3861369171187816762273751789090228 0.0709287123074019741437583992392745 1.0735698071676809631818820802074911 GT 1 -2141385.3251857197803318682013711238341293 0.5967523974562021707537231840488376 0.0827389454739938440463381774271467 1.0863631640057882540075865915045032 GT 1 -205874481670769834111153850035078404.0570957974602067613656830563298189 0.3237231728647732714475174323442845 0.0028863243880405945384252184036718 1.0028904978548643789957708891328037 GT 1 -1894481533635734824663271.4401918406877503852176371423943088 4.5661687632719232265229894124307599 0.0471512017359942411046300100601047 1.0482990466101995095681347481690716 LT 1 -820.0538634718375827854591444527411347 6.6810617284162815783576372016880348 0.0787995268248917767188364382204500 1.0820775973849483227909717924242462 LT 1 -148.2599754711079135011742788460942519 0.9915304977242316312040324291967405 0.0351515665168139373593358670070935 1.0357842537269469984410947787975867 GT 1 -360080.2960345005437585602707901155835125 1.2583225725907108661042148672687620 0.0850005115644377184372375429137153 1.0888317727935892050193366949698844 GT 1 -176172364819688704795583075067302210491.0032975905503983856706521512737604 1.8869558396103440624597335008593767 0.0382833219053637525977860160808471 1.0390353851091625110216961881626261 GT 1 -1845688602871161392551578722245.8453932586824918971991533703183860 0.2186738361958284683402521212037722 0.0962816843945137342177104757421787 1.1012375649281780577377088025629957 GT 1 -127755783318597368508174889067225971178148.1570758477421068760405007253356342 3.1335030947455784968952796195689626 0.0064384913736029791485467758967683 1.0064593078584649724892641725151716 GT 1 -2847695450839052733243972859736.7758118296375759632500611423378851 0.6733328083825845002394585677171790 0.0966288577950093990229772998513883 1.1016217998129165229241575670105491 GT 1 -1486370198.5716464273714888226036133654108204 1.6165505796713711630551308369671532 0.0039137362754701881857617830136470 1.0039214149827920519317857753947977 GT 1 -7820973383545850654950939.7773235732439198695455760153676403 0.8713737703639511426600659989041500 0.0127815919726798552571425791373740 1.0128639792997153159677028400827711 GT 1 -3102.1161029507775301876691069433105222 0.2082547173258809951827807583490284 0.0917799506822395943023740451562838 1.0962685846780523677111919772681167 GT 1 -21497070.0678855671617713485995670095587282 1.1955259834391410058548199748107488 0.0740955029824697949373228343405883 1.0769841846250041761783963415031031 GT 1 -8948879.8233894536278153711814738703770518 1.2529807873074596329350454588838310 0.0449232437918220650798844811099703 1.0459635687382862640642252166544450 GT 1 -5463428502603124397830501613412.1683472856016446688506891971032083 0.0869774817351785591172582265579390 0.0731291340783448348807718225194798 1.0759410263327611047744996642027927 GT 1 -1511.6275140478390536890796112662046616 1.2248285107867516407705172144041703 0.0807085638029658124158147541698782 1.0841520837252361123585414169964397 GT 1 -3587324364880515037253607318385969661748.8820029595942771434185370622557088 0.8572294986198267740918339736475694 0.0655032707858583726100145778770429 1.0677471521310163955356646667323812 GT 1 -53729.5441026447414190537331339787226474 0.5534999787443686841094948980359969 0.0698363143819442890984809630324353 1.0723947022811613257306468115334277 GT 1 -288905912645099332560352.4178566604978396861282605481514389 0.5607826631132549327682729275103121 0.0365224010571757111268687222555210 1.0372060410681294035659637610078520 GT 1 -1382249796872963502712576998266077454712064.4220933081076343628226440862125444 2.7042837749559817798224085604801391 0.0187809006398132587995039800875739 1.0189595014792727602114312402435546 GT 1 -193157237925904923483.5848317270001696643960240673331598 0.6125367559664839271819311852399745 0.0095598078309283370557579377499903 1.0096057961213133031038216260953682 GT 1 -89558587691972.9014613852979249254978760688926648 0.5246118546286526157902770274650549 0.0366300244170222321927725725157606 1.0373177503298076929616998237402118 GT 1 -34903396186866976807968.7424598160778329718388620007521588 2.0310865954798305586980064760350842 0.0296704074897338517254358030880539 1.0301194791058718891611761789341416 GT 1 -41.5213190921406097084248710420466040 0.3410246309255106281321575470046125 0.0959040632154516274256164444340859 1.1008197994591261439931461988104890 GT 1 -1989.2482029188834362604222059010246453 0.6047936094005407740895946598033419 0.0256473386372863747363813562010035 1.0259819655519915761641711232221467 GT 1 -181827925240941288388081154873.6537186171052750529699931193027012 1.1869566356407616411613817143308499 0.0120022858051060601632634506493346 1.0120748948048666530732407080816484 GT 1 -28037336037803494313978879829737170.1394475771638560446694821145045142 0.4440486961292032040881427125596375 0.0004977737014135385700234909909963 1.0004978976318703692623958448563214 GT 1 -192848.8532856746665560245020532495128921 0.1827877676783585891248891215878008 0.0167989474046522954228767207427351 1.0169416501497746996937364902836964 GT 1 -162736.1389712508016642154735294560172763 0.2109898099011739809089802043655398 0.0110625742439510752473047786839543 1.0111242195774002182350066594005906 GT 1 -2553040.8356344831210145541103818057145252 2.2007722540442214786296006875990861 0.0290576803642507282151240395799169 1.0294882155080247445626336810449176 GT 1 -1389443.9267819226601913208092430460938279 0.5100936190321051400558090514204457 0.0707838932170318845324581437196401 1.0734139442036488180035237123220886 GT 1 -28.8195357707205430318754094578791906 0.1726315837162675654734177349758150 0.0182769014389017163789327021479782 1.0184459874160257521118869142735740 GT 1 -267784640231.6568997076214338124055627625114215 0.2903676561841716988310660370583063 0.0883800954560790305013907775477179 1.0925321471145362083955164282372618 GT 1 -104142640247148225307295740.3403992735978465538358721251023701 0.1775687625699481987797812220133409 0.0588460164578161967022345289097599 1.0606485145882945519043031387417656 GT 1 -34883547.8945796641321038268542880431965330 3.2691889721023620181451376564377500 0.0707473749384646366773406019715799 1.0733746448837881023457755122315726 LT 1 -1749534948.7291617486633656290142713997151975 0.8756867875851801753911425719621749 0.0120592413805108359321961601762321 1.0121325439434447651181661024588895 GT 1 -268251622.4869919618651881210734472949166584 1.3440139344216291639077667080563911 0.0217678895800216294927238680789770 1.0220083053882673355089535449776837 GT 1 -518.3115796509969513850548913031532062 0.2945852980603093690786543997054018 0.0277277719974000666534520192994352 1.0281194437724458028420114625732672 GT 1 -1.9841649037075875349283138643727018 0.5087364607703551192565751737249381 0.0632994109659511809613512503887932 1.0653915899276546932913003424633962 GT 1 -106.8653054060044984446076591318395799 2.3390132040828666054100731080409004 0.0846491198395336834775640672445270 1.0884478116293771330157860130669334 GT 1 -180621521423716720626.3225372298341527779713992095020307 0.2161669427394627442138314390022383 0.0969492421556082748475892655353035 1.1019765169074662070855961806192261 GT 1 -1582912047.8605436487640256542367992466975564 0.6035262123579659090822504985054057 0.0639487715768727177517908001970266 1.0660850727809538184333827924376224 GT 1 -305688436948197393514468721441963912425311.1437060902445817468474181325128834 0.4659703827767215618189484786423359 0.0139152392615427026362101064227345 1.0140129638364286780236213279860926 GT 1 -7.0463808771895514172849704943679704 2.0340868233766867479575930731393328 0.0271387898693861811592413589691830 1.0275138481516335701567872175129491 GT 1 -42554719087694539554557061845098183674.8125831548269306153183599415509249 0.0631301263674159981027486748728674 0.0470090878393325260077358166885906 1.0481499114062809720990620539714740 GT 1 -424827078595336.1914805017496155167505096261164732 0.4963551321537027259078016032694520 0.0362800119253751489772856813383543 1.0369544953680812952710359354602007 GT 1 -75123105.3267428350456085760154100055532737 3.5653128065713494560063687648856345 0.0207791727536232504574706901116518 1.0209980977950663115681278908163450 GT 1 -49557316856430212344375160271528395794121.9680309060897396134348978587171405 1.1729671273044370623150699777707494 0.0602219184623935203622016908172225 1.0621115150608082751700799822347248 GT 1 -29739885236743237542389411919716395743.7032440559802804407662849986851015 1.3091738035560329060255808522331084 0.0263147778150984327578411200068537 1.0266672080819913682135231963235857 GT 1 -10.0363267803098734385288114061103587 0.2297977370766011037946916596167046 0.0903743644022709127312986323945529 1.0947221535681425134035366336386005 GT 1 -92685338972774043968866686892564337478963.3945899139213732649956388585827012 0.3759995865759714287788951573813275 0.0210369971322458202726528843509841 1.0212614279034529148402611628831083 GT 1 -93245704.6266972784694246469535757601527960 0.1062335670848368713494486698139770 0.0035765927227451130759710530183875 1.0035830040221334805451751671408495 GT 1 -113227928075049944364538480079200131105449.6541364242990645739526609895543702 1.6433843920857062451073444034481977 0.0934731089637645350388129126028628 1.0981345845430103429921156213059484 GT 1 -89706132531570057517.5919049192758173447454186785502646 0.9289352848440963914606935410354550 0.0053124679114338689542275034360446 1.0053266292457785090025094646349819 GT 1 -564551182782775647112.9685471204113599534128232939779655 3.8536980715759735412325374567066100 0.0925365777708068474799045892314160 1.0971020197389769359799377919031979 LT 1 -160927087326078604988669135106635021630.1486093276770888872821228916974321 0.3842446291710179124510443467137943 0.0867767420272860324046555682903786 1.0907748959991374202326259006140578 GT 1 -310969807985790270008.0314098623273768429659072550541722 0.7251783912719774356200871793128283 0.0718308068419476350000484498261755 1.0745412426008282196069929072062996 GT 1 -1043919753082813460669864439369.2646668869857712114395171310978096 1.2102071816659970713237723390460429 0.0937810047196806237991747536715186 1.0984742855029750857030421540106929 GT 1 -306040316850933111804010637.8843560919931955390400915488360923 0.0965720932516335621437539903683103 0.0346923596946694057959281438196604 1.0353084302046478840738569845293682 GT 1 -1625973247638802940366.1066204230385172093213134073872092 1.1440062226593351967379529588039912 0.0807794356772104411794455117244481 1.0842291807191743572273282944350526 GT 1 -9608005091437499666945713.6789957325713167571908957443518221 0.9956268000684897229175662105887710 0.0082922664674844784388216286294341 1.0083268385624065118325443003518406 GT 1 -15530383410.9928709949419736736089339704863103 0.9067080239368605976380571047000327 0.0258863492188064178434563958753778 1.0262272975664371858894360517684792 GT 1 -171481939178108885097.4524157162679638290681625792197523 1.5056600987945731580028684794089490 0.0364306165026143928154544385685140 1.0371107817875129040754480399023765 GT 1 -148127515729025064413.7855718701984224846520796693415145 0.1186980324411699014295519314975558 0.0474799940147205437086044070051964 1.0486441685427687380132958010597087 GT 1 -8897.1030776502497421749908961275525429 0.3789185837271601958657741287590003 0.0313176087170543784855804481681116 1.0318184903934017478236591737228809 GT 1 -70730676.1526413394026995402015678745869547 0.2799707432999302532544730219145360 0.0584107358098825876597991020050900 1.0601861247683195794570053947906854 GT 1 -1535528850609580801162825067495919.9767550747389916446023908968935516 0.5001838225525339478284790553927265 0.0660522025934409229129292015855813 1.0683347337429454167351782324788947 GT 1 -45896625.8604802535728994572326159543770300 0.0390736665717022716495577298681240 0.0712069897732225400393525740338054 1.0738693742224042500936275439020661 GT 1 -291684254311819059584218175413838948015.3827855678989250512396794246904142 0.6137790674051989181866959923469669 0.0341322880577129043146203079102683 1.0347283983064496615983678044364066 GT 1 -31476951010215336580124332.6996766246600357299974474759660497 0.7491991563524094980699312600543973 0.0457020151531570275959971924395056 1.0467793032169868687587194311613861 GT 1 -338912229775011864753592024.5575374239245159445591672123230517 0.1318495670734866776684172507620121 0.0426107989267593795825251972780442 1.0435452815178402736663752548287113 GT 1 -275868459786308829984066491.4501495150645309149180072596123131 0.2313327972279715997108630992742401 0.0602182940711323622064183507609186 1.0621076584223705608851149286583300 GT 1 -1441.4237719504460185697636214014208924 1.8380780026875623465563023477392148 0.0541456339211362366525241210346698 1.0556666688438359879238099200333807 GT 1 -7567913096252367779317.2578087587913407833527602670315065 0.9410366447663390757625498365855601 0.0142548798395403609835871889067515 1.0143574566191445325896900434386181 GT 1 -320785848443297.5782205328868519638697409673591045 0.6097161521122026914272465094006638 0.0073976181774564402062093314685870 1.0074251162522442567052086031865607 GT 1 -5475284625983052743003392781104817631437.2096300758513626450110891948592419 0.2789019641446137438286659986119718 0.0221368321826064352870074522352021 1.0223855289428297994403942285931451 GT 1 -28431404735429429427531410298.2581802366790789932223611689492448 0.5353655779042309103969451112642654 0.0455377951530414192975653177925008 1.0466072334081051801748746123890509 GT 1 -3610583605459136.9058761283213592163263023978880471 1.0442803548438545469093840261785692 0.0555794013613475587862434465871403 1.0571836626589477160627291717158044 GT 1 -70847536176878.6829834274430486207044534660242731 0.1692338250865222839449178511559266 0.0603955953456478243000868542433886 1.0622963384110573315470635305904595 GT 1 -2394334525650259218337920417941628789.2547782186035038436107951033143682 2.7844365918496642050234931335157737 0.0699533773265689643791050725346034 1.0751501781542590768944381020940835 LT 2 -736884163481314358791.7836022435897847896463732277775304 0.8594699131394178435182527723992434 0.0110531224358083542620359833051720 1.0111146620839442801450038796972682 GT 1 -417.1224057849814042985251641515436680 1.4678584589248194565830283437585945 0.0161511660846272597195797767099957 1.0162830178010128476647027021084368 GT 1 -13573519779572877989255936.3469601268350775554114738433803439 0.3775506088685062217295171613943783 0.0321181844159636360798730068646575 1.0326452904981196492267725165473845 GT 1 -58815792420.9211820596123755477335244629980533 2.0795607716977892792173796982378872 0.0550683530512400670495340112809977 1.0566426853755803496752166880356674 GT 1 -363384.2483309461251601592744887394596568 0.3907787224510998568958717040333762 0.0133253591014621258650950412910223 1.0134149383730384473392234166284958 GT 1 -1728000484405153534306173376270906.9627285419361488198230215115750229 0.2134757404947630690219027321030226 0.0849953311864572063119696176193434 1.0888261111911715217726626785215540 GT 1 -121159852121682898859924932027119172130913.3948358770763038263394156103829016 0.2732415631120760551024255743701490 0.0368367535811049253165899837802595 1.0375323629432993517401729492958108 GT 1 -2676169878468724152.8024646794242548165468248302386307 0.0179971946644609904375824143561376 0.0401766264483861448288571487674824 1.0410059973314697140247004855034505 GT 1 -137839694248240311344.6860722062817712928242573252387496 0.2743647248045505858056785192121754 0.0731913964983102169372344937757939 1.0760082034483475073216431248499172 GT 1 -18800835884688538.7434333751562434802325835235448022 0.3767458259691685609531762475777157 0.0326203620636754431679861317261835 1.0331642670509461960271605672455861 GT 1 -106435435884864030777426247854149.3908818889115975189653197712433668 0.5691451666224744714702639291582056 0.0460427785160855267507452391954212 1.0471364497510774130883448725918653 GT 1 -1074678634885135884369940398570219180398890.4691482978082678796666561304313990 1.5928138986532974575121135619138997 0.0214020023151519563565473071402108 1.0216343462309360898651647903050524 GT 1 -379774378508926.3847787373382558253724816301231857 1.6567752270482051087070814184550108 0.0553938756935093893715250405056669 1.0569872380491937304031907026160640 GT 1 -7494890642607847908206851602920896401845.7173998896899483404272498713495617 0.4425502874053385939077789152953186 0.0070201596297136802339186328186943 1.0070449168849546407799492460922657 GT 1 -19.3645536306143160608919401654164337 0.0503489205384750885299151958833369 0.0297354380300544496949752420786172 1.0301865003737601856638244910151892 GT 1 -17560868628807174023.9288429667167559498002332768931033 0.0285490423762531040187749022739483 0.0846639378073002522273086961559142 1.0884640000528853548325538264145167 GT 1 -3009094.2738434140632435437873697614914913 1.7806430758214955959336727745932922 0.0871231693573009376671376048684832 1.0911543136842145648814887340921318 GT 1 -2030389656344265915680843599829.8367722831589080524533389648026130 2.5763265333323957579013795178723969 0.0183405292741552897739195501945801 1.0185108019216357884023178599445129 GT 1 -11053078058.6992715208598164523675742702975835 0.9557647651817137596393695877175471 0.0204109918816371186656453762696988 1.0206221747527425416260687566267086 GT 1 -5.3927168825926599951175452247713622 0.0966436277339424439688805958337141 0.0377462356712984974165115737674142 1.0384770748189690219542642271581715 GT 1 -58609219.3880501012124332655150914974831268 0.8581501793865557218853138639201819 0.0513948668081948682822167791839510 1.0527626542189040065938579390115075 GT 1 -4589634.2749947859692163037509517836165869 0.2109305085209958524448752221137953 0.0211672955217184080635770538806306 1.0213945351415330302144262831535217 GT 1 -4088960532183057.4017954806261310102212016504998228 0.3358559134935348247027210219794341 0.0574475274155954992904820095832383 1.0591636873800944585373854155714890 GT 1 -2320283400.6487746311092345947944198195924503 0.7926546029487302367025104245541550 0.0015613160184078554790263346522626 1.0015625361424273516218639433244054 GT 1 -2883905695129837947.6027350661824108801056460940205393 0.3115691676356031612264837323849085 0.0427324028339207692061507335719250 1.0436723057526135472032166300347129 GT 1 -1455.7233956868941306831431834856096693 0.1365298139339570544581584684994428 0.0475398715312244193320834429647643 1.0487070327327312806015588950977075 GT 1 -10904761238373.8999553652895457088209033474887889 0.6544329209666611242601367361853899 0.0782024713876503556063750035262345 1.0814296797447238497313562870048727 GT 1 -106.7776142782486543894646175940973238 0.1636073107893885689382015418233795 0.0042684720250125121118639511571433 1.0042776079586467270143430460480273 GT 1 -2745083426015428274283.8554723478742712156536477915489581 0.1278990257550765678867169299886329 0.0455365351218029668846262344560288 1.0466059132611152410501826298448307 GT 1 -1242.4189618605066068027070519449278076 0.7922046255994367294113425970836921 0.0008337159584977668697947768394048 1.0008340636929354277698290688941621 GT 1 -40911.5357339741722553006291554427264976 2.7716231250532192684206746968904877 0.0666783183242209091755034356359944 1.0713862250263991530017162743248415 LT 2 -210504704763792291870823983.7967895402708905210135676373324360 0.8706918252600685081417629657254066 0.0566205936803069908113437378914246 1.0582867375840450643376760153336230 GT 1 -327687724335197819320344237148596351282650.7460158260932200461449565492370652 0.8439352559250126716377952757005213 0.0857334767528818827457584506220089 1.0896331491084489903919879975184523 GT 1 -7172229546238245560256188826243831992386893.0747806430326501930006951989134917 1.4571468207404290350686961514625506 0.0228325391785572092211018001543383 1.0230972385346141019041507072113366 GT 1 -114811.4759155370566316550186581842007756 0.5836325909562047466361219074796832 0.0524675909603539627793209628069381 1.0538941378193430170967015134389417 GT 1 -15218843068543250320467.4804424587670919234082102759737133 0.0435633703562557050274026727157423 0.0059935336555242003745642354069129 1.0060115669699866707464194500056719 GT 1 -19116041499050167332659794.5398313024352547705978407545627085 0.0861273956215681732401150992731840 0.0324008107055174421725728065645951 1.0329373380985354993289975673486958 GT 1 -40124652349.6369068944664729228974873435117399 0.7356982212944537941738584862742559 0.0928328726821852109566424764580548 1.0974285819850335498231288308912337 GT 1 -101204459727332732814907218216264.5317701427549280646267765700850711 0.6477787347758962688528976424897810 0.0761606240315807876002958459786643 1.0792170579836140889165418298454819 GT 1 -7203143175.3849134304968550958106491873149800 0.2707385113702918869681589226150665 0.0960594235290283573558209668888522 1.1009916547428221148067520475898452 GT 1 -89982.3999819529924609650751146202681482 0.9321963750209233948684407088238244 0.0621131625587899974903143178662707 1.0641259796405601936888572633316253 GT 1 -3522272591025.6012699707806437483794361874504989 0.1716445856096149234505827976678822 0.0715894429042042256371235298782989 1.0742812333671067077512087424826654 GT 1 -4338158931714692425862834766409812522.3234459848788766082739981260013964 1.0220740625663890736591573953235402 0.0188475268594348943195521332050376 1.0190274052550722954337623373037246 GT 1 -4159871529994330229618864968637080826.5653960774479657230774133759473481 0.6111794146914037754344633062099020 0.0405392603195104017839495935704890 1.0413838818488680471110913394636550 GT 1 -686812.4779345524443785644147122906780590 0.6250271476129357311928150009903471 0.0725691555760545212740100453594751 1.0753370485483596798746868418396143 GT 1 -104728096580910425.4459760694889650853790105305505811 0.4788833398839780143384058161858704 0.0822109990363354311703997214603757 1.0857877612251987688221505925959500 GT 1 -1735890694814411015008719223957891.2310983022975484771705886610326831 0.8326336312564792157972357028571468 0.0913426574494574906669245192414548 1.0957872167627673569503150683601019 GT 1 -2517554645154975858711687489899842738.6152051426130814262440196791653983 0.4132504515304369211126183159899085 0.0775567030431143157821529522476118 1.0807293716700136947017494468446651 GT 1 -78962047173524921.9155245098550807852381652987187971 0.4101965048490172478590192850282875 0.0471927191505924495061753820950612 1.0483426194406381400948290718304989 GT 1 -2591206680099686.3873076368634978895171486997641157 0.3751048159266303005919585752949737 0.0062917322893860151739477205897065 1.0063116086520147332838489684502750 GT 1 -190707653617674584085864745416516313664405.6414264946023083023238528473206359 1.0549546185522344327522594516897268 0.0262698345762432016209180183795337 1.0266210512742048192958156980967098 GT 1 -30.7514253795742545925695542257220499 0.9617235672570340508200552269823734 0.0705769412771335796046875753097106 1.0731912523067014724627249101540277 GT 1 -834342574131.5285282490990504280334760980037355 1.4327475941872084503121631509443876 0.0194785181322612033587805093389784 1.0196707244906436890671652855052890 GT 1 -204135181708002032347.8504812791685883350154658100230057 2.5129489594101909041997206080315242 0.0752076883559443976093404621816521 1.0781860946322585416450642727391742 GT 1 -31658303.3925247552563165584813109361159237 0.1651543372034039077070499337283146 0.0824152900652196327467876723247625 1.0860103764108852605143422850343763 GT 1 -25796095452558786584711770593568386478988.4388313042183544895724522748901565 1.7865243927584437444454989950191348 0.0675982922303178899577122385918430 1.0699915402373966865578790584132550 GT 1 -4729184246781979214046013.2861721065746343568720860519721614 0.9076783928095015382810690084454419 0.0057353704066563303411319434181125 1.0057518808025961906816468842662710 GT 1 -6975986500688358384392880826036188.5776664443179629825382988499895704 0.3124417607249769557600690742338567 0.0193908271831450104257588036389093 1.0195812955186726820428014238900007 GT 1 -222593.3286170734770419502787626867005991 2.0252289902307877833036279645386622 0.0827468206427044483811192521517421 1.0863717495687293302876338804695866 GT 1 -1.8393502321153817376510366401635532 1.2518118412062742621168290305541299 0.0364408513593651918203954635137500 1.0371214036599829674428541186999072 GT 1 -587447.0060093831294423574928229916643779 0.3224983965226632249609526814858167 0.0698853222575250641681693269364167 1.0724473910363039502625948152069420 GT 1 -95065953464062813134978627895487976039252.3668039149765945134362940363046973 0.1897247985690081488790001353474513 0.0912065684234097671761727554850782 1.0956374586199451088870511068414289 GT 1 -1759509386845636443373299735494386917383577.6101769553611027363371882391683520 0.2379240856639555419900078345367003 0.0222081427407136004677297144486848 1.0224584564860052366698381050848557 GT 1 -2134781984014148848584129654505170721648155.9923094831488821595766811576209912 0.6441669420343569545607431340133369 0.0299714445984497396049865319769075 1.0304297693597151618552085478070227 GT 1 -647246787.2715393002841545432321371178391832 2.2147606796952389364392414167154063 0.0065557226723757206538089869957284 1.0065773058026455707084000999141928 GT 1 -20695829931.6125892185352933277712579494918783 0.6663298715140522999481088620846310 0.0395602206204668288016390076481951 1.0403639958972910691364396059774384 GT 1 -100835604246565681394150786319790910684482.5537314348881591842725507312773119 0.5722051353790655163546961925421015 0.0628267035440432501366820900961938 1.0648870656524669635885075253013025 GT 1 -7933264069260314018386323470.0525644114511175718759686908464736 1.4927245415910063355538807990800161 0.0747338969660966297326809618826958 1.0776739038857970735686461572700216 GT 1 -92487476727914785866677758664055190.3883115730489849304972680188173741 0.2677025471029089916937776424947571 0.0382930557747740235933862000326535 1.0390455065086268827511814440762998 GT 1 -638465260489251054062417.6330556612357586362182868619021745 0.0514520572074852693921525101692117 0.0596886612644532217358849434002731 1.0615442471356872583486679992866969 GT 1 -2850558992819234677006469200423.7309168419860957650846041775137243 0.9573241470461447799086771908530390 0.0105448807865856326903716058700333 1.0106008720036360129536277159533388 GT 1 -598864035939911645382287132694937332.9410705388387275231925593700852253 2.6480311215507711064111279393393719 0.0081045851600814129307943141822083 1.0081376058440403236487241409458222 GT 1 -3094387425512438218914653.7278588978348913063917278019956036 1.0531867873432513596180968449781037 0.0305799934650176525272767806577815 1.0310573177242169599589690937088333 GT 1 -221504138819889935.6112334700745684957099408817963381 0.0634279185810380799892441109449642 0.0650259951285463134652893281522011 1.0672365523564606279052023033181747 GT 1 -66617943806.6317606715880611562894766954309249 0.5128534653532389156358250879723054 0.0661775889728322632071414988747752 1.0684689969183762361524368309140311 GT 1 -41482879344404011.7408211668666804308648645223614501 0.5546043053895392968191015412844069 0.0911445922922395687536522772920428 1.0955692648854296811828039417186656 GT 1 -1159364363.1869620629460439774813197900323142 1.8003156611528419314229172789326485 0.0868911841443256127728200768816443 1.0909002205431558284673957741757940 GT 1 -1358.8777230848389815899974083817102551 0.6039960951355571843886027841445999 0.0184974230237675488033755213044250 1.0186706397201811859961188055158629 GT 1 -2.5086908642580392713748755527013022 2.3777918264702544767811471993414003 0.0039732547728544961928885667862339 1.0039811691203681509817530562142160 GT 1 -280741306765022790222.9878554637444761799788148835210148 0.0377029008261268407338493985889805 0.0564190790387452550557825149690942 1.0580731510667088039906683687738962 GT 1 -27.1350140034022406064618687753184066 0.2383801404496674456499815533435517 0.0062833262134040142990594555455369 1.0063031493881637741070642780896501 GT 1 -442545303407139.3054264969345241947401529553666432 1.0466496761156982582923571366175536 0.0541829148552517269279513231181195 1.0557060847097319415602632944126958 GT 1 -17969267237101208210429510863316522148.8396782586148832573137859768021963 0.5659714322924603792417179649429526 0.0456241975786476888211866774642530 1.0466977622275610823954395932085851 GT 1 -56120579516124248.4923895691373334711607583594408147 0.1496402801008941672164749723611967 0.0878889383602558427587201011619614 1.0919935182084036682728155816011772 GT 1 -74841733387111710361070942.6980544717460056339764516827949983 0.8753012687970021206073142519176239 0.0820046615083824938574588184122899 1.0855629662703806415114938484702749 GT 1 -5834221562785128249991332115.3371046123721135285102042169396089 0.2304171320862573144884946996129710 0.0244803808941617116705510981728402 1.0247850072751446868660414269077651 GT 1 -10577005924267369947724.9312796714941289385857235135692633 0.9582787536619511533724056178103037 0.0854003171153801164868622074607592 1.0892688144840023719752773984803631 GT 1 -18.3940419872939765724465956748917455 2.5877108281795709347583267269075927 0.0727404335757372969102726644734399 1.0783735127160745837696160139022726 GT 2 -8514112925720353832429307949843677933590.0233891663197720703949091657527010 1.1893925679804963699779745984269445 0.0873427037266383553699782386824434 1.0913948289034688650264196017076414 GT 1 -8211489683648858091697.3145053111366003452033399165531178 2.3149281656441264160527547821026656 0.0669074134378011838822738876927830 1.0692508477290336110826031829692545 GT 1 -1.1174703418791606396364301730218006 1.2492668359689994821350008589099263 0.0915722374847369468060375724838258 1.0960399072238371440602951354579370 GT 1 -51041769665555604527821408024931755.6334428056473326729462870418775566 0.9580119364374415066235990499311972 0.0732065785767184651477762627122449 1.0760245846112988180150100502783924 GT 1 -52962974278400268215549436256822854922.7167140139538359488850950689553360 2.4605532304223137977383712257806252 0.0515861951477764132638134687888132 1.0529643689581649262058260242390800 GT 1 -1015481742377566960655.0594452384621219841563699168824763 0.6860319965212232165804882227541250 0.0791637853395750811286250962580096 1.0824730927861385451737277982265098 GT 1 -2397.1344671174727361329118736479712837 1.8812184007961379036330838239905731 0.0527389246853306321434810204262360 1.0541805370803408980844871123063589 GT 1 -315803750962653738005248400698999498236305.7285899637007779871969267140861652 1.2112673138288354567249740880242232 0.0341634049200950339119973802710824 1.0347606153101305086560860188760749 GT 1 -146892145703932351161266.8895763994233764549290142908033226 0.9805008041222497396646511618110495 0.0092801291802413051632952363210337 1.0093234578511555845954805003104589 GT 1 -45057863746425557072584.4254287828125664899460985778764630 0.4461982631895942876074934669486927 0.0780306544934002663597953911417374 1.0812433038019089045509004354642456 GT 1 -1731245962634200297810859.3627794215217608035586996590930005 2.6046385209679800523571830528569741 0.0653989767845645172215336095833781 1.0676355538999805619510799543416219 GT 1 -5224909872204079.0956420394748682313890749987796620 0.1114254839860629861444260957252972 0.0316027089416220610901493578159220 1.0321128512596328229093475804617748 GT 1 -8849188290138353726487937155967530563317.7955167987843265537868204904422774 0.6043830019146062120548551718569716 0.0459103316490741611277285128116742 1.0469976199687175480329084328103088 GT 1 -1502452939679049494515.5763864504626410374427396919187167 1.0391540281450536748753307040610623 0.0726856471288782348694972315242833 1.0754626631644770636891372641435985 GT 1 -8362380829535811813858666634.5459280270130729194891430184505164 1.5076062661962167332540389377319056 0.0779880825428011610982635654460970 1.0811971298505117587335559007484252 GT 1 -116461339525679974439856.8811654928234455698770553506768621 2.0104912227480220463534535394566114 0.0810153737007998594637078475919681 1.0844858854941241278011244579316136 GT 1 -8162.2053095089843279998832897189010079 1.1904179130410435529287499013729931 0.0507130136327402134294575932327770 1.0520441168502472764901856694156276 GT 1 -35662.8650377971566749706799209408831598 1.0991380397568282141340200650687067 0.0472874409056477424801614582997040 1.0484420377234056475042517459257133 GT 1 -76082606504298.8575172750757084788190342512268482 0.4498203685593607073944913351776146 0.0950924131820283719226816613379692 1.0999224545094927552172900622261927 GT 1 -868706920419937247898314769265.1027467368383707166816203742755117 2.1007056099413122221245904672154083 0.0969320373095622218386142276500976 1.1019574651742097368841852203774188 GT 1 -9949851102703500557156029573748574375.9595435443890041754504531750726084 0.1013666134139630515707451044115346 0.0055549982384877784121482924559744 1.0055704846190414721189071116399567 GT 1 -46764747670.5371916184830556758017650974489057 0.7210265953554830577099760049199639 0.0929219076948767274358478876192595 1.0975267330087209634451990752024051 GT 1 -3367.6460678665089077505812197135529097 0.6146603758282273469965152807467778 0.0928184224339187076842094530261473 1.0974126531305328561318525352016973 GT 1 -417321061037140357839537711463955387865.4611533616547176278626154900674533 0.8687498979468225876595846223985099 0.0155427624165156662758624495626973 1.0156648175157040562750584496223069 GT 1 -36947738781143036514132178808426141642421.6091653117062798483442800618694438 0.2756712743064839453213459217226743 0.0128424881267310307891404679592882 1.0129256657834864024480472115775378 GT 1 -29519451578055956666540425103955.9856867287766223497746371563097010 0.2867242384779616981964194055470525 0.0279758049981395641947007994185999 1.0283745828542754296742531989985784 GT 1 -313761360989384808599295577282305087635.8200891881764320503923991042140221 2.3767996687264701239519756294589625 0.0622503549501772322884423013621056 1.0642722685327976643321418477941862 GT 1 -5973964339606364788194727001180453681045090.4126072447978649604540935462480186 2.2439945503525125453878318381927844 0.0448031828693002561896541173343691 1.0458378684989534801764607773170692 GT 1 -250.1774640961292297029972523223006064 0.8465244917647339781170838369916283 0.0904216981792474603536317896848537 1.0947741914689117888395760132919812 GT 1 -8975808052299441.9106687841684243995326905958578151 0.7125806095916482032045392007636084 0.0046059024581958208475278095072536 1.0046165423102409062639406686132146 GT 1 -8181132218655855.1703923259268359224377778984030734 0.0155184511506031678788751352302110 0.0502790735799693786013543117021741 1.0515870992070855622829922687824277 GT 1 -404783211274897399290269873065483122.0798456221125483967949125158749431 1.7505096950620731351730666493541191 0.0005186346708627581517977897817770 1.0005187692083428807696668857578419 GT 1 -366490595402388681868571224.1840234277352010750478239987157388 1.6843421371262480548780565486509252 0.0600970156405620578384864799096322 1.0619786171726703325446530262116199 GT 1 -417983381303534387186993189255434393620210.6411901389962441010244289361690455 0.6642788959559681949519280597322692 0.0025700025402174519150881383310161 1.0025733106658889490178720813101014 GT 1 -227706796125896910617.8425250602557976617371676691979587 0.1393030622880555149351537302291407 0.0172627492740847715812581058461605 1.0174134878236769196913902618955326 GT 1 -3977995556401213460211.2618136971659484793513202515881552 0.5447191718512867254921313177623708 0.0697281146321970413812458396373823 1.0722783857028754106839912842795018 GT 1 -83588955787818547998170903224038504.0452518156037462306093253211425062 0.6788516182647592918596464854921326 0.0677507865815317353483028325288597 1.0701551036688368724913706797369116 GT 1 -25844131184532371516271182999109485090644.4495220544856986146989132555762291 0.4671837869233139977312062088824780 0.0000401519892713457919049930086396 1.0000401527953840451062108053684386 GT 1 -101156587.6423087869462542070294604453002971 0.5776479768359815647393005070196501 0.0303874386445287894140485073721265 1.0308587085576558184627382091443288 GT 1 -1352533731479.8433619471846660179135928844241809 1.0802741067044856833883009421935608 0.0958163489301095408215964222731831 1.1007227853845327823673113585884690 GT 1 -8200844924211635614174452692194765242121159.8200589336133729976211999073061027 1.2492266065053262510399139761844971 0.0243617782884081303557609282285576 1.0246634357616376417857642946726724 GT 1 -9.3698598279601774375240237428741237 1.5066133470343223611111271711928382 0.0884977103003234871321547483282044 1.0926611728537642054599070172543825 GT 1 -2439781.0685639017793494263628143783158338 0.6008593922783155962583329840993052 0.0893595855466489505428445330005287 1.0936071748421231217448509088589570 GT 1 -684312142657201773802609793885.7036163867935528597497088594076823 1.6330089660603216540914614607601190 0.0544934960429818940373361302252754 1.0560345120526906296214589784453469 GT 1 -258624.3120523889174229455535933968580733 0.0051982810886636578624375352581413 0.0070331537312778553339147603919055 1.0070580029377190798770387775503501 GT 1 -88170990.0240941238832944108438337677843384 0.7132792851715645851121436461269625 0.0747671897735527346470594097742898 1.0777098864062094084563389527824056 GT 1 -1089286325684.8697460714146009657171949272073989 2.7312371141436338211100425983805523 0.0138776664145135502196561229016355 1.0139748615021030044537575257921000 GT 1 -144321946897686.5366802445687133714982831416500062 0.9334453611714625659998858494924615 0.0155228817167097836398856444778304 1.0156446231402569314426162003396744 GT 1 -428.9477112366097156468381221734407062 1.8694283106626881557153819652281269 0.0989443086081731921719143882990332 1.1041882126382416652812297393622060 GT 1 -125799094151.6502135541778439387648131168196508 0.4911877105901509165499317354713707 0.0861113495433128505095350324652343 1.0900465415832756580699914970578204 GT 1 -1490139994521119980870013474115402.8392020572784744906794510916242388 0.2416014310586964639675431405559889 0.0983571412334876536753770392412186 1.1035367810437598112243342678295910 GT 1 -95600146056.9497058385411077572797864219902447 0.4304483071029700291586355775920272 0.0271010587276556662221589323528581 1.0274750652197207762230425999371000 GT 1 -810282889033185960708.3445075313853206761522735036907177 0.2149422041964654556585507249604719 0.0945325026628710043982858343728014 1.0993038970161751596517623490264157 GT 1 -70460952970967.1333460818204592651541617358698554 0.2688165843699040917305044544309973 0.0551772272564996224431125025642840 1.0567579111469774026365735878761809 GT 1 -24102328911198552997000.4926925569136168445229430354576409 3.4946301070076353623834726550946956 0.0918048666504900878078439461195695 1.0962960188995781633559614543850683 LT 1 -2445214695810.1195194953310408893459742558992803 1.8613504408143060681658673527527287 0.0370015669276480638262702073802410 1.0377034943168493608472918859758561 GT 1 -1051880287989442661945066325.3549056473245157077527456003438147 0.8052678567589294619317005021555164 0.0008884290801326918652960316004723 1.0008888239671513025181594111125122 GT 1 -4565423128807828909.5740715061907282621176473087229497 0.1014734643559437549850769278005574 0.0334848559423067699932410408560202 1.0340583114883830308394055493684219 GT 1 -42325540551613.5078882374076028913584969443655354 0.3883846943671060182448912416326324 0.0908410340069102792685351001216727 1.0952353200139901919201843898509760 GT 1 -653752680.1531606207435487402018760398853016 0.0572015642581015882311424423841606 0.0093217156814229252815332114966999 1.0093654347764695411570833843176804 GT 1 -2936149.8288484590885411058351685731301681 1.0369666767481692287449251436130901 0.0757426536437342824963940604526591 1.0787647327455204052552700988404788 GT 1 -1329525141756913.4061953703642284795346476509207410 1.0199568679186158343388320728855866 0.0980277138287530740403542697975561 1.1031714842571116503523779776886518 GT 1 -4671838160281575837557591150576.8714631897426509239650891339901354 0.1000717265295605329862682209405206 0.0759537434541003797708913975687476 1.0789931473966117291078524491582347 GT 1 -1054.4324027010273556881083130315680774 1.2353131570158641674082946208386895 0.0025223087392125695346223122205583 1.0025254951190507314857501489059817 GT 1 -71626797079064.3766598863678368238069598394744616 0.0458415248288610093733110738942409 0.0177301163973120124938949985439427 1.0178891778340340105370975885124056 GT 1 -9021.8725831210317199224408289309595498 2.3032306762621069998577917294792521 0.0733259968770378499196698360452154 1.0761534439577357941498227544069653 GT 1 -28187689219.0256828889148686455901827007708547 2.8972093221242242279061533889644373 0.0111013393177997073764851461935627 1.0111634190582059359477718561853777 GT 1 -3415298777251.3839779285270435402790958752726189 1.7006167024689887033984656275348878 0.0767435471596289883613090640848818 1.0798482360073081670228167872187128 GT 1 -19143466398794063410566957788223.1418649146474666783250621016274958 0.0124897791411824640946514887753264 0.0365932015193135122858241004947508 1.0372795280528850355768383996570157 GT 1 -2474273822.6476923325932558069307424659914692 0.0060008336778970328977473337082744 0.0825760591094940503516265221917300 1.0861856007016410135113381143425747 GT 1 -430118417416761184.8531001650064508093935565344821608 0.5069974323909085428708822900780005 0.0528891976184879560972450423107843 1.0543391890696802666712044727582889 GT 1 -163381194294796039767.5585400622284895269646254386819120 0.8384776819919957933723972028436710 0.0931890681179274464498991005958350 1.0978213049714156326696648962933864 GT 1 -856576316879469280944593553962419577.1675607291289688475569766356433279 0.1020905210219272448038580506117994 0.0981745653478186692634494397503093 1.1033343090768735923343725705361054 GT 1 -2140405031177606745053249874736047.0272472617632475407207020562120141 1.8948459855803592984757003210675730 0.0275323137636630780585934967625618 1.0279184315620581541166997585469595 GT 1 -15630619.4250981899107967493672585632139369 1.1433360018531320187684155933176810 0.0329011789438690305562435799663116 1.0334545953105974954618513079645070 GT 1 -11585204811627529908497629332047016216616986.7656038552536017456285318517598544 0.6418430454270987505503381047560003 0.0422584609847004478016030164934223 1.0431773296713591784888260313853114 GT 1 -1444700817335359138518071737459556.1212225432610646015558765506251133 0.3045011586311155192953310710496303 0.0888483701056787359564337257211405 1.0930459522196240452656985700014182 GT 1 -2744121061.3589505185426887328281053097835096 0.2199961638490475982587752636444487 0.0879156287303088625616586508809495 1.0920227808296923922928072889164948 GT 1 -108817866700903320832328545.0538557107373821649776840411995201 1.1224835208571781589365401677274669 0.0179911816130402416266463807695892 1.0181549906405374399579251159614947 GT 1 -195137860701678136342007289079.1196568984886921080685135628909795 1.5096898422198698405868847295933320 0.0390382762403790080767484492688133 1.0398207003996310503505302266236142 GT 1 -56317491948479810276742550.9899055721054737132669297023418005 1.7272942265929963837980079128280091 0.0342080377464233756454464765118295 1.0348068279488563497612787602978621 GT 1 -1702818660.4915386253402330814079790355823751 0.3127481130518301200559227369882894 0.0481528591439026545436981395296064 1.0493508234105534102504643477526420 GT 1 -123319123594629124830566066851712.5795280511540213283983447232349004 0.2632851051464283176735895632588691 0.0887434924278323518919909465075321 1.0929308543161346921095408221095132 GT 1 -605556369146340170049672708.2660160415460238311173531368825901 0.3697087550834988617362107459760386 0.0705506071250367290685910073636413 1.0731629188381238126773561041359990 GT 1 -587805901.3596558683530117333837624794401768 0.2389344372177754642657382554988047 0.0266727801589994916069847921557875 1.0270349533929182323854237257111807 GT 1 -12131.5866834471032025835618852627692967 0.0686824471865281034304872470765876 0.0795946373113748561804692501104958 1.0829410943617754179168268480261718 GT 1 -6306778884026463489486929135156476.5219682607764496484851032668960653 0.0139855471542629891978721266152094 0.0119191201308856291673249837308632 1.0119907223690947593556799075273564 GT 1 -249454019375846038963060.2461240443052977837456019534027889 0.0767155277303589628495141506423746 0.0601313889432196637898886291084790 1.0620151889590993387843441478823475 GT 1 -460166625.1329248695216416098132530698421667 1.5958692654914871496197846183100773 0.0499464082298168220809190112866018 1.0512368835890030453602153742565524 GT 1 -760488843813601337.2843545853179000121153444366075042 0.0253259443594330338881126750967241 0.0924068744334793851493580763175772 1.0969591004038126890021275871346876 GT 1 -858.3147574806179631131906281169974305 3.0033699241583528642209288208832135 0.0031017089076348935036907847723695 1.0031065291766702771065270898772579 GT 1 -3.1222730046478581542750592921624014 1.6682153782416486939576063038593977 0.0986311336377504159744187140883851 1.1038407085252655628135233187018084 GT 1 -498488372885020908361824.2805985720779372727325838898395090 0.4619610347161021136024799796930556 0.0987986287562909833925028768209004 1.1040265488498512852820946935421322 GT 1 -37.4205247834625757732336556649698857 1.1341289956836400245717816555595543 0.0009012244861134777199756267661425 1.0009016308330588852311948776667789 GT 1 -1.2205603955021765671311614985637782 1.3290017947050957677260336563888248 0.0689015295499762896328463274066311 1.0713902388233769405533341768262404 GT 1 -41877083804510536473510608979071.4919430689595551834574744872544812 0.8343314663596455705794628016915984 0.0206796660090659676894775845097984 1.0208964846693252743908180283743333 GT 1 -2228318069795918314495196899.3313944582646299425364147840192502 0.4380858930180991272260591235426349 0.0574770033412135040435802637222439 1.0591949603196677912211605028856037 GT 1 -72454.1913465873892601660436218863908649 4.6905824510893875761645589367663319 0.0459706939279568906365508453308338 1.0470608888525890258805546672577931 LT 1 -899083781202631051458356565.9343536119790239910415228629919228 2.0011681165278380705930147968111090 0.0169725008235037895345573409119260 1.0171181844790578565723322260147107 GT 1 -12127135185322201743271950816572977.5097385278894167309340357786728686 0.4129208481004621331406271544609094 0.0398792291342372899388619639513639 1.0406961994476175722166645007756744 GT 1 -723913390310264494.8742603756667413841858863827038064 0.9817882417321165291703283535432652 0.0094669644798833598765588415672399 1.0095120610321003528392641385946976 GT 1 -10026080662581.3540784968065073159428956180684392 1.2154005914597782482264220386283342 0.0043079932011346503957318833785394 1.0043172993406528303231852825738017 GT 1 -6238021653511844136.9790572911224574027936744780718587 0.9728130304067292689756221077293117 0.0213804442081492304039956024052086 1.0216123168893687172540645889012725 GT 1 -140395591460388832432107425413848721584893.1214983367376212694740537976206069 2.6455181333519653739212145921638761 0.0345278629500496224516887446496668 1.0351380361007246416756253651535058 GT 1 -2780205606199065725567783590451031247178.8738691740261188522167192939997477 0.0107896673672230935269774247987170 0.0493046762471426889690679381789542 1.0505616423703271712219870285813648 GT 1 -3038695880931356839081956000906004650404.4557047072532536242333543247229294 0.1552644397250422175006383227972838 0.0756878390422301819894074138714718 1.0787054278599823856674580117472130 GT 1 -153853546098588566973960904527813774.7300132013359997071387693981808420 1.5297224216835907704264725299792239 0.0352335889280670427334650564300970 1.0358692680100138525601371050999841 GT 1 -11915242423107909782.2206055623766891848530492486081560 0.0232432295187805578380953755171622 0.0392386147979119952711298531288395 1.0400291992799582840100626742648806 GT 1 -17188903165100647194.5309118975378054399319424333439267 1.7307780056546864152311741607707922 0.0721271382720685048563351017222650 1.0748605580299788383507893383172967 GT 1 -1840293134082229487854253658.8404253494469734454621596683015068 0.2691986617371006622903750423373286 0.0249045171494747175097980730526791 1.0252198816504859377525388568023493 GT 1 -1717642598372204633806736669977962544492219.0023463918640671578081872297958679 0.8263715051240953910053667691609510 0.0683062205400600766659269597798669 1.0707510810963556706359549071978261 GT 1 -305977006492025717.2977503908062899609293444591482840 0.6590624725400878182504810306225873 0.0417873391437356830004015156609214 1.0426855414537789916439122069942215 GT 1 -115839231129.0787089695802098454821783961021912 0.1583231622699465789947079170599130 0.0408685041971131833237688681971027 1.0417270958729275104120210566710581 GT 1 -126.2383717713744840162046344925641201 0.3697403641847596545418908738226216 0.0585001872186355543027571376212226 1.0602811297363948132933662004603880 GT 1 -14702509038130455980134.0390827389660486767323436680703528 0.5081164273674240923863943196808619 0.0514539893869390773795537459322020 1.0528249819664389493562634078142119 GT 1 -18591666023609285517540203864145132853467327.8932033539605225650439451780740910 1.1849118878343627661158436751069248 0.0367353290762966656527949031513444 1.0374270649417609576661466831898039 GT 1 -2776065410606355304758591210879873351.8178589968937805373258657460946414 0.0606224724858680241609726834923202 0.0221781422004455141396950270287354 1.0224277750277607723861209980315709 GT 1 -1015918561576823548062408144851863521336.2809211477000468183874600701056719 0.7884461592787840399006480810045975 0.0641167150898060698997768505290296 1.0662645058884559541368881177012316 GT 1 -233942268889760432.1468988998894866676111173889485543 1.0110059653745819532133364596554292 0.0410906221161697934309009933224512 1.0419587050352730347664910638903565 GT 1 -145619505646644.4398445346742367278881783854842170 0.2359925376100392556872429164263299 0.0278897467707237584302096773642156 1.0282860517060821406870048539854872 GT 1 -472404630300978693330807253237.6713958727621219200657296457863049 0.8182657635497417299080432305837881 0.0652886820524970980729614410721508 1.0675175482250950118476215025271461 GT 1 -77.0398697139827999205138053284709583 0.8574249997838299018283481650823920 0.0301589126064609028755842763511336 1.0306230483352288433678636380000929 GT 1 -15629412311381235082104714166224765071503.7322561880221696731449598803233609 0.6946750273219491482085268790700621 0.0807989721220215795302202886730615 1.0842504342171693266449766048334656 GT 1 -312764228239968854334906166659598149996029.8038907715561258798078065619133369 0.1569576904634513575553847574251249 0.0890090907617925727057974716962308 1.0932223606542870686669926235323996 GT 1 -3098683501093909.8897186078499276518502548802945380 0.2767873708336004303217815222052592 0.0316048017155944046525008427462473 1.0321150123315946978987206759201458 GT 1 -845260476235116813327099998601541933163.7776662593863137525075510996445603 1.7872351911196255472580449205764709 0.0167479017360870595882852159550174 1.0168897336639388725731744915390028 GT 1 -180401.9546126524905034647755093128010393 0.3475251841487093389624657975779523 0.0970166018231720371013521699527417 1.1020511109203982689893909113977534 GT 1 -444179111353662236761.6864196096429531424918057206822800 0.7862378609234266425945344128472542 0.0866614205395769303626134488415992 1.0906486243498573805748641504978780 GT 1 -44153499469620283014152458746854266.0845695060351752644244019912706184 2.3191523005263501254988988869819895 0.0680195228762772118394385047723451 1.0704434118080863869983954111362854 GT 1 -63284212352.7370704182866126245097323372260473 2.0671534117149854494150242815917589 0.0550343097239352609619974354562882 1.0566066587336692304874768106718495 GT 1 -343219516399562138.1834686169129219829805396255959307 2.9945744732493223699927236990825601 0.0534100884867295325520509707443860 1.0563957378489420118654578946886033 LT 2 -784191791356681562471858656294.4298398695448230322111102406316099 2.5834792926474158173757862817919442 0.0334989428313370707634351333674029 1.0340728865230067583110373451884421 GT 1 -10833807636919549925026.6018357543092771666115154659676660 0.2355423818037336332353361925228454 0.0560327918521566910260463382462823 1.0576638505715064078435637088105996 GT 1 -1411220081341480844184780873498860277199.4262048090685569354120286728362991 3.4300097425535874500626205015420695 0.0156147573801937437163892819241803 1.0157379518211998755216294517323369 GT 1 -1211460923140766224742228.0903448114119224850202041969244427 0.7977015425273693835024386672314956 0.0674845677419578628012335281050740 1.0698695782627222462101196637008103 GT 1 -18453796304870.9182169652080689202052086294375156 1.1913302239746594431565311357660273 0.0622071636400149823698938594623795 1.0642262111274357564935024873671649 GT 1 -2381533877727005650474.0912731574725845702539526985815771 0.0847514979210228973698020285895073 0.0848937152254726254596118948424540 1.0887150622289326133937491778013819 GT 1 -1665939863700678122651084539413541.7526580782354714491383534947533580 0.4023302354051390103213631112044672 0.0231180874372899387015224811477873 1.0233895016316010233392464584179414 GT 1 -1455872491754256588726942338484.0480384730790195637906405864344208 0.1686753377893642848702163760617525 0.0360437088947219268119280335805698 1.0367093265766311146873449817238851 GT 1 -4.8354804403693168563128527791891520 3.2051014712021040073354460154484994 0.0451887571586592329265570327087477 1.0462416095120696485871619166206503 LT 1 -7524286120923381087368196235668003723.2725761377013327677157657284170501 0.2407088497471392254115931446461809 0.0240256838507481076489978174399920 1.0243190083361497984098294972901261 GT 1 -5473652420268662705470604011097296477041.1680354356155106252387098508683412 0.3134377673379478964387225765654413 0.0734218017499551194465917609631875 1.0762568350374082047251613667243466 GT 1 -1069231597551827.6314830148036909408691706413008433 0.2991006000085494545705556863320332 0.0995816790167169041297039571780290 1.1048958225518571190881238560699997 GT 1 -1517719166013449720.1765060287684465733670559891646408 0.2493737841808316902086216478596127 0.0705308504890834486888046650348701 1.0731416627846674121024052273929301 GT 1 -3854349424185957981167849166867689804009581.9756389745930130468721955908400316 0.7931637730719647127437621399174211 0.0068203100918247092333693014912610 1.0068436747032297743041846270494920 GT 1 -129495946941838451097504011593.1183733749842097108901014755657557 0.0250836527080574627943479587492528 0.0732176296277940135403153803098160 1.0760365086460478633763296044850657 GT 1 -761848606068311830975207.4609240107730234057360346834402201 0.7008767565236148754786276851922388 0.0909869904813185838420691848119059 1.0953958730053327751752645577805484 GT 1 -466096216481634135.9192131349858986147065049315216786 0.9273164288677608037297919121553420 0.0710009218324671778183063809309778 1.0736475324534702659127424559611711 GT 1 -962400264141056482.3765758184958218208252653330923904 0.8486505542956523627593004336158897 0.0479141727225866345644426185447169 1.0491000935512974512953155276981137 GT 1 -8955433.0694610600548926162449911123096219 1.8061447667980349872954667935520162 0.0764389356205478528872461968944826 1.0795183587573869213070358583560045 GT 1 -71793486976.3291871775494015398432389653539618 0.6313329086946017381279663730864494 0.0050637879234168666207298203718701 1.0050766523443253973492573429326113 GT 1 -272702934358552329473302101.3802168917011852658655325609908436 1.1377502610160461574995665888834314 0.0168146349908398822960735866551818 1.0169576059009408724460173527371956 GT 1 -152.9607284878716297413987507107588114 1.3712651824327455020688520188276073 0.0709421810740874138351964810799282 1.0735843042945358204552306438459984 GT 1 -72126548788421820518.9787652322504663223813865475866144 1.1203116543538975716974618112837374 0.0765536077936526724815371307797839 1.0796425295319479832637796827797746 GT 1 -445748535231314913983.6526274884658196839658002800149756 0.6556304859145027175453703629321145 0.0264803512663497847235186781738617 1.0268372707745444086063273353380648 GT 1 -665.9045509790643269406311023492848112 0.0594048757892114684257092511752702 0.0156042800076345456964551960861671 1.0157273083085305986013655143524764 GT 1 -135128892728512951903669718367100820769.6983886245636711519806967190273565 1.0515562727236204068003952182715314 0.0881862204276779478301700031725432 1.0923194988226674292628234947248627 GT 1 -1463.0855427295414819024520073021279933 0.0390898041239445972453127032965326 0.0944113226349305856670937217431415 1.0991700745209770848051191545606518 GT 1 -47982527260736333106.1274757744619432332616895394822170 1.2430649490537179986740536534690461 0.0813369297160495173994605564749050 1.0848358503096101837093225176269032 GT 1 -2316.9572694286022291666484173689387950 0.1240755687525290408046408937882565 0.0269465970294080787288639563629562 1.0273163134403887113858826001235703 GT 1 -5229253380376.7386953513939306682509624007601346 1.1424984223026179640490158895957444 0.0771511196026185611081652373488197 1.0802897844306547636887558120342670 GT 1 -166769748915192155585873.1965658952805667115656913162220864 1.9920494574608418738135470795970448 0.0646269389606151408403545536244873 1.0668098335070452148550597987925948 GT 1 -5273215410871036173865754638031143180095.5323868547985462197275128235373107 0.5444135847605368831183584021721028 0.0763951200546289925201210184534863 1.0794709179023173530049240754586810 GT 1 -24743382708908603972923237417.5027664204591817354023356197713095 1.1142269670697294862208043945579441 0.0253807916955650069669076050877608 1.0257084398561807611975475663445771 GT 1 -1105726704082829047714600354670.3437036307804899958525206301845136 2.4066524271394446487862974681802915 0.0981548102373195986349096311549193 1.1086491299958119721348079108732452 LT 2 -19009046887421797581083.3120828017477891453458336911636791 2.1025870037091513320295932684108338 0.0932947507091423854154286032657321 1.0979378549006985555171884176872713 GT 1 -3559758991791.7243863880188713997049529959525843 0.2676331618528512751688694217489083 0.0267031960387755120566390639948344 1.0270662032690181750447560825504958 GT 1 -18542125.3778592258742387207852971558022841 0.0783931746616381028456055895635071 0.0319535794758974824223762297333864 1.0324752377684856892577470768528859 GT 1 -2582620667936925184427401163041157526412.8163011525074199889107954130605937 2.4849342365032337887858689230396049 0.0746227994947850435383479594317857 1.0775538402611833137145407391626918 GT 1 -1.3590028508376131901813135168224302 0.2791892263960572264223713579777124 0.0899325214333004644228294301217400 1.0942365299492866879955287757779693 GT 1 -674306802607301192276775173022529591818.5135831240900304249639573230745219 1.2929451734369514307739944092774436 0.0511729614317487858321421823534951 1.0525287534969067206971749019595994 GT 1 -2.3427053561584212622699805956000619 2.5183113922103098837231197039616935 0.0373267401247090801179084801719909 1.0380412187600580392436842000877659 GT 1 -3662704474006035318599226833928428.0841527752575350778414577566250625 1.4297278126997617110137491451062910 0.0535309597614447556771123473813791 1.0550170185998472561380457519358985 GT 1 -19662340098573982.3899208232238653386179379863846537 2.3275818488961126352058474348861571 0.0525680223224285758172481457619846 1.0540001359719970956618045030809045 GT 1 -620333639617.1280226979069628269775519305222322 0.9304153748603220612783404463947736 0.0999938579347173791727821408012533 1.1053536911641325214814612760235499 GT 1 -6520302913.0875818885393383393808384298848916 1.4903242966469605729865465187424932 0.0996339931774505408614554657591824 1.1049539240801085291432544051504755 GT 1 -85894198836366941507370001.9640472957478327970431180390060475 1.8781835713383826469104602814778870 0.0713000599908822517045780092188771 1.0739695847967978461106908397281647 GT 1 -243.3192267676094346533254374069146142 1.4575443259986344777539800757998126 0.0198190673916898487368577247158610 1.0200180992481171566309393602842751 GT 1 -36530922352655.7053466042778107362745359779586757 0.5066952202517163746158665874357063 0.0222969082966996033122178268293859 1.0225492422546865227835953045678324 GT 1 -77146381873251086045454926617405.9550239755485026561206912730274367 0.6419538268405227879888410541723629 0.0093857949492084467212053734383867 1.0094301190854765974964910432578695 GT 1 -4.8855960478964022247700541309916814 0.3097807548149726110226054263366497 0.0949964352769398146038994701286227 1.0998163963694599654790026480257948 GT 1 -356.2678544477208366170158650940550169 0.2793955192035162080569625389739526 0.0247370849518568783454027822567219 1.0250481878754243494488267348093592 GT 1 -355835166302898508092828240719756537483823.6628318049104520597819554634071355 0.7627808476378548412570980348872541 0.0128884512627529483225766030016067 1.0129722279638368438431138404800945 GT 1 -319099551765124998768943925.7144973404488363050230536763081353 0.0108389153990473723013764349618525 0.0743634134711749844601037525616459 1.0772735765190925171074367357152840 GT 1 -4.9108533407152811078533532910416242 0.0962942716755751416327202889820913 0.0575534621649701930935538263426378 1.0592760850512875558520212503339170 GT 1 -12312766114900886.0926773123952168541782924351026820 0.1780300328194700423586816940145296 0.0348932506818057312133013499158720 1.0355165627060852628206323722251006 GT 1 -2171658.4096736833897292781784311620612742 0.5492424734767525613297687114424647 0.0220220847683108522394894560949244 1.0222681907649770752842030908025016 GT 1 -2643728802520862544162040528216780401720.3131536690019903914498776000563140 2.9918374462854609337558224641528763 0.0380255150119986417526993603232022 1.0387673515496638726383812232535390 GT 1 -67512010219344.4655756000567740401058535635396428 0.2211212459077648585684212512867648 0.0569035455944791958345946461273496 1.0585867169499991856634637227670729 GT 1 -1325698.0808404297463928293891667238814253 0.0872715732221565367982996158041240 0.0506820810729648933609578512571604 1.0520115323354893076867522767408034 GT 1 -64511467630122383597329483277842473831164.2617887668874368136944919866973750 1.9569278148563191271763456549098512 0.0818956677721888063293063453458012 1.0854442431552253460875779419513980 GT 1 -8228267891637135706208067162941.5990720031939575678731564949048376 3.7144812580760415857174794453738245 0.0169193256511513268540023935770325 1.0170640926716166799422896271181141 GT 1 -33324863503864757125211247232877556.0809461962024600523844038040423042 0.9481233802692898509421760093297934 0.0265932961203824660197531364761225 1.0269532945306641831782218014547260 GT 1 -4952584316026104317732989768234914333775.3232624791588206431040147810358031 1.4248229973986319252901670093330140 0.0318362811466786960560311610594985 1.0323540749597835284191883597925836 GT 1 -585778.9551933656891222344239192505625339 0.7401615544104784946887656735765601 0.0709319502988627160889019405562766 1.0735732923653683302622526891787464 GT 1 -612.1549539799782018459464890789107193 1.5079280382131805135991183311033247 0.0812649217650843903476696028593797 1.0847574699639458127207190255251161 GT 1 -12963273699683876699416543240.7214260139843541269717525555382957 0.5656223494490467746890675071781469 0.0299739885759530532978343672766112 1.0304323919431690671946644504799117 GT 1 -2490178287006643767.9432003100334004273864904033401355 0.2315141415807652792567285786463943 0.0318049600281778809407421474370614 1.0323217244272587081276825211433765 GT 1 -654598864124.9218627237135203121920252915850279 0.5316242813527575066378566218325733 0.0276220775390087307735587312713026 1.0280107409721295449375206865101738 GT 1 -584844127398537674167283855863116253575530.2234203436927995200973441999591289 1.8425415891887885140720952966406046 0.0120124607105170554782625702412647 1.0120851933689810797423589041955862 GT 1 -1766499403951617748284334692.4670919615414669428796151043961630 0.0270362353613909464189078496090467 0.0300525625694028661037072439298536 1.0305133971688222003212272826058572 GT 1 -138620066838.0839212232236477662638906066635467 1.0516922672242420635320050377392081 0.0820557211512565894685320708314594 1.0856185886257184793980889159714187 GT 1 -3871.0752031899659764441407430771750757 2.1373680241972851293429283104674741 0.0017320625257249616816324760125480 1.0017335642803606175171093239656973 GT 1 -45924451471710581379486997921263998259.8022928580934792939931977714292763 1.6234162023597769500237879251089910 0.0355558968108549671757964761790386 1.0362034025001631239034366401376897 GT 1 -4927504094944871135883335265920.2702749363883955434316197355005064 0.8628030667919303165743626402761726 0.0220977501459417084156234013486255 1.0223455629670365876984191255313403 GT 1 -4814271954802941128542.0727535227579152990689339152289517 3.7902077928979261221567491192875722 0.0172356407378477633095938030532362 1.0173859034797099953952805232453061 GT 1 -98264828889297026740845688917398209084.0865166426485265691396502620801612 1.3560243972205386032053085410648198 0.0045959518149630118192537844292179 1.0046065456732094216772671918356250 GT 1 -5.0892130643437059295570860641203521 1.6840461157047515397680059636527768 0.0690970165515991515982614648151774 1.0716002139573187755199922488150363 GT 1 -1537567118313947694.0219984125081017489272710624625125 0.2779088305311763308017096329753713 0.0848392488081188905887372631933907 1.0886555447745945321298698113771861 GT 1 -431375209563236144.3059229714031341392239185099215969 0.4271377882749110826685052955095406 0.0054658114930889829038220316228645 1.0054808036953848156252426204703379 GT 1 -26714558362007573248192907.3180158922747985572367101731484282 0.1894546904872335225813029345074404 0.0872877493639012854011871733291311 1.0913346171366551627991929854193054 GT 1 -1077430002344187852958431852.2591363579480449254322438915803485 1.3253118028114956111888415275963920 0.0785935601864757381212245992267373 1.0818540373431162809643116608534547 GT 1 -92310074374390583892747901.4042174959505155914909105895235404 0.7022310093709027506726551501016287 0.0661426457508453056409594187643825 1.0684315780603464015375522720898855 GT 1 -1562785.3710893843875342560065099332120151 1.2320839562895844219299194278213683 0.0120267333653460726091090773594959 1.0120996396624363693824809693803776 GT 1 -83885552811208383646150084311.6636912871672739601427518339218444 0.5320993671852043712511656461278855 0.0396615815978880557504141032246489 1.0404695374716720984626207409025404 GT 1 -479330109039365601712202837.4603993211881047524836399484848837 0.2191888228754986310425122284453067 0.0928167579614747567214216609932331 1.0974108183590183663854533768057826 GT 1 -2965834617342900686666917145949606.1074596331687406801739028325431180 1.2712098327437806882790900208254921 0.0742236005951358231753711709158411 1.0771225428195698503990169000298654 GT 1 -5116653351621727005.1538942067236264276280321638292643 3.0193507308822550009616031466501674 0.0521773263384802416853874215428172 1.0550236760137684206880001008698009 LT 2 -1267594528164018886912577408246868807.2535118990396807161639601909062673 0.5931415601751066604321540076225786 0.0392703704708457982266093835665601 1.0400622524378374903528715824806600 GT 1 -145540290.8234947123689596978541343703228841 0.1581483772388232302296470127859264 0.0080202641110622589716472431222167 1.0080525994372218792701278218196620 GT 1 -4737281704487452153.1880910786182677029355578611447291 0.6959490851160811293946212846199843 0.0010948253053144592083658848675908 1.0010954250643332335923352242998699 GT 1 -733195.6239262525022987560018139974586059 0.9200882452216396031481136422814575 0.0927804940824477842959870888096720 1.0973708450079278740617409309310633 GT 1 -243283596912507831992747913664939889292.1068190160543619243278073462274232 0.0832642621047623818425992806151051 0.0623235379651769615284027511985919 1.0643503126794163100602803897977158 GT 1 -139991.0321596053557770434391572432016424 0.2868334878751220492169754751307102 0.0101822377140482963957293173448647 1.0102344312970664757983686416805285 GT 1 -789704579844028.4681769557001069064770754751764278 0.8235531445487813455769221101909818 0.0325232769937377856106205509291937 1.0330639132758764651015880193708929 GT 1 -163701705498200527115965483529392.3600239142388267273104957297605411 0.6284494821585722670527292368118525 0.0675776888921934849236509195231005 1.0699694434197702755358138804707785 GT 1 -54600017509171.4505663015675999087545725615444810 0.4466873922064943981414449283573504 0.0787334175186383741313469885741985 1.0820058356608199981307158863310203 GT 1 -232849708459885.6547733058207712413107989117084861 0.1326191034576053774725378586448200 0.0414064277646345052154434021489271 1.0422880976459081075542183449421321 GT 1 -181969763872507709699.8456341125352052061339333529444554 0.3574052900743966126360806851756955 0.0706353877019417655567896559829537 1.0732541389136428089501682696646435 GT 1 -156825550549788634607.9388080419052626086102124231099272 1.5221240700635433306465095337258749 0.0516124151678647642568127849200286 1.0529920155217246294783742431650881 GT 1 -767752361031792046034763730709843533205.2135414479617817391502191986456294 0.9307471994304099765306816544200562 0.0068571702819713673169517523634894 1.0068807887064056791966943136682785 GT 1 -86693672808464209657734233291.3809351760820119130787186547742201 0.4086089493185219754517215330428438 0.0126139620413551655736004194315348 1.0126941934653238812322265326712585 GT 1 -19316484584828.4976934266674702219280137143253227 0.1898734641463643301450639018801404 0.0260119029803437841626567560162938 1.0263561961333143399714938873319571 GT 1 -889.3872466853806881160404022835638402 2.1913513186816707944238701408717520 0.0128584301877119023110464623419772 1.0129418153741224954153241831332432 GT 1 -4776160098185407.9950067786841815986443914804069134 1.1350896659650607449235725275129424 0.0971390783559754548566200470349710 1.1021867555400888077838654604734883 GT 1 -100009269350342820.4736133854510382896687824261645660 1.2731813870315223404249029918413308 0.0311275269782924276787829263876727 1.0316222825410476175842461673987224 GT 1 -4847518963332442652467716028079115004098.6497727718061988128526634849731825 0.1390629288366655704622000683999759 0.0421288817063995951939435134786279 1.0430420421141339860141114602624408 GT 1 -67049316.1340733761696086003438166062752210 0.0317310016960324928660727915542752 0.0029783053058836487874503277742185 1.0029827492830050559106508246154278 GT 1 -133827787533425564026143675900430532574.7948471352061418900495847654428923 0.3207533560769304297532923899099230 0.0458874280961591688136910556238445 1.0469736145960867787781595601417747 GT 1 -2205863904161.1959126940642608780011654230284322 0.4443266500144305329859295572817773 0.0719463159039000839653005251785090 1.0746656986276523409091601727981616 GT 1 -268787565513890210199048313611.1741066248231308940227906041458292 0.1309805968919449761944248913550196 0.0177399766039725967982855753372337 1.0178992160692632526337731159816514 GT 1 -5826096111603255815712715410927825812894142.6106553126871852652946756414487247 0.1812494142383951954029260475945981 0.0219064644798194129773412485653936 1.0221499739293071420467178430020155 GT 1 -73944819910024.4808123458118351064168483546904285 2.3961018897206821251588067134096164 0.0744698754869529108294153911906807 1.0773885980514702049720786967293391 GT 1 -166916921240167517413566417728164769.2535186038192366684790268264885928 0.1036645559031602522840018432315783 0.0829767096565451770638751414823472 1.0866224086365871799300195894305919 GT 1 -4887766337221576024758525421691305.3102072232110952836391374911824921 2.8458947144667729379741589158683451 0.0534655257961556148236057981613675 1.0549478861710736353344756949146385 GT 1 -937430692968209227990602381843356656362.9746948445269592543215262991795490 2.1075002897246601316627844003286993 0.0823831586371140767389870867912945 1.0859753596269400647535307488233114 GT 1 -15491330130841343402697318659.7253547702136557189336573296439700 0.0653549276216020774060289389953055 0.0899766428371247593095555570766890 1.0942850125886877611350013193736911 GT 1 -2990420880134625884285204.9253297795803511526388572241236594 0.7872907765795636171986162692633101 0.0693451432910247029706660119977630 1.0718667936311192911351760140879663 GT 1 -53587505117994433078692068450389911209741.2074370110723064637400370617556757 0.5447773948705029492455114423884584 0.0836080973247081321855847894440270 1.0873111644574478253599926428410503 GT 1 -977293750675671017.4218140074852395177423854846702319 3.6918849471941218516416908035681902 0.0763993712318763388818571194661905 1.0794755207223363498553822940494259 LT 1 -68237750922115711425708181691905671410.5123237883786360407514543607756078 0.5271324184833536832041356404371688 0.0904741193633398067595076853127998 1.0948318255336480279927500127251866 GT 1 -55215182492916215.6514530383792457530403533791286654 1.1902370710664524473820104787953961 0.0028939004054452514205701450205164 1.0028980958312748864924085186580419 GT 1 -752045710636302003136346369009054491797.8556544164584100219014597806845540 0.0557476414682428594680714011434833 0.0141114903401135951579004242639238 1.0142120041400319378909032685177340 GT 1 -11749.2303087723529206404709901021795952 1.0578585304273087781420730326230013 0.0163686693637585625915951800965987 1.0165041161215307735733482987498818 GT 1 -9694702638866826388636997496553944295456319.8589555814636287562294023304056978 1.1024730555946509345684746515959839 0.0517011959427676151304522015085156 1.0530856322371581998875414038362180 GT 1 -28324756237186574791902.6429073962005879341586766240941587 0.0338830842202700736978599195837404 0.0031563581830706945566449426483549 1.0031613499882782695868100372866233 GT 1 -21029643871996253464969808418.5495698525364731374953037931562954 5.5751560954902043848079175437472317 0.0856171909292914422296816580544443 1.0895059669071465744793900973995794 LT 1 -1578240181544380111107167046018572081611155.9775414496751007288379238397426687 1.2020743288776965966170043577109665 0.0308922273853098473698550519910568 1.0313794528273097043846269252719829 GT 1 -95488079290961576111683406559468781322568.8993635518208765715127842599472215 0.7212802286955488507115439278850587 0.0756167488993161717590741241110955 1.0786285194168874845201737582945837 GT 1 -11326096916016549328871461072.2170157285848804562431431623957469 0.1463016512709757200464477501274350 0.0376826811466677234592313737380450 1.0384110294281707806535684644996936 GT 1 -191996174.8954198275336174102725052098017206 1.7550046755890177929034888923512228 0.0938371126740494495094779614493623 1.0985362017634776076070997991218211 GT 1 -25982190739930369.2465958196759006066168234792108726 1.8086152853418653950329426901009037 0.0306596578846424463310402493509165 1.0311394985050701350670201639907294 GT 1 -2.5903941649410406585775264767828556 1.5588998899855624959533552599317126 0.0637362056488384834184052306266947 1.0658580106398483735002447626952857 GT 1 -430762940815304.5539426514959384520198537722882230 1.1855456442631287047422066201585528 0.0142417138801996353391980244737925 1.0143441003557985186149239868582339 GT 1 -126211307716692645529580408903.3966218204529885076675733149170416 0.2751720271315528000266318393138114 0.0604898151767123495313955398700772 1.0623966195026640708769001285467088 GT 1 -689726666090699330649748687113087179748.5788285302855593263748763986734253 0.9812047702316701939119171085293688 0.0975389413531685428461877990198938 1.1026297380197764936822653984879821 GT 1 -258.5822325307534683183376543990467123 0.2586109010423867264875019126109439 0.0767018962461004948886345090766093 1.0798031239759448730055611570487780 GT 1 -966868395296291019067382900667675736.2101500606989449121976335205594757 0.6354701581708576771052391141877680 0.0890621178404962301316523456340143 1.0932805704800157132768309551989346 GT 1 -1367079120587410214080781254043819635434262.1059901648662042741588353749871007 0.1847815243644888346744430861728027 0.0783661027901898765440806931342508 1.0816072088902913893881464875947068 GT 1 -1656393700069015640653415605195809915302.9790954943639469209759813584360679 0.2880384981605458086904417732377868 0.0163739433783493148419181593285992 1.0165094779156965244967505450642675 GT 1 -17803.6423864385273575973182443831010920 0.0924265800491984498260707599995829 0.0471620852286468391423166606572825 1.0483104687317667856966531463909683 GT 1 -57973989043.1844827882259095544754649658273475 0.1280408794376750690991084997892860 0.0461276077867693260720756114021046 1.0472253772633989286083835936725343 GT 1 -37012537016348549416017617114409895711.3181829616054734814360926957235748 1.2398780276573313045225418516563909 0.0152442851078153107004759225744986 1.0153616737540191085093369790536168 GT 1 -725531944249930681580630238152342955.4696329785846140091696973803962884 1.3608589967652267821641551884690554 0.0052704892268027706219089368654346 1.0052844272501859281368126657005477 GT 1 -2789181667138753.1542447660142781933978792658298418 3.9158136422461378909728381116668891 0.0372594853650543473305111805307556 1.0379713587013294234635389217234558 LT 1 -85268172632566466301.3610325019167434818864146231552630 3.7602633800590655498085704395345816 0.0454986388025229164172936494713929 1.0465662097330382638775570485916276 LT 1 -14620482406878812933801.8467635701126410355270839453902558 1.5628564537111225593081842715355178 0.0946033390778720072133578717262942 1.0993821319458511956469868290177627 GT 1 -60129679422401928295859656424289544769.2784786066155702198677848137727057 0.4453516777143698438288713762883875 0.0527248283069335234553397608751252 1.0541656559943552032831335801135886 GT 1 -9517721796.9311016676906058215153474930888257 2.0690484737005066706582929710908166 0.0826832390392122070117716273196224 1.0863024345732959326985657452853262 GT 1 -2126.8129966371401062101721064795454775 0.3962248667954917768185637530538026 0.0912987491413738063228444944656822 1.0957388957453837038663491428400164 GT 1 -56711599774023995883.1566958956952563543613391915236846 1.2931087229946421995362612209084179 0.0841436942142732238064660526132491 1.0878957980265758706560662501079671 GT 1 -5622726803835597505750142744.5602825197526615814695231520173042 3.1572212846082690676059432289989825 0.0951250171374380370056459553356767 1.0999584853078432417649573196444318 LT 1 -63685606193937861272951356.6772284589186892569585599287512742 0.3091056850630271384365170590929120 0.0193638380621102328122501392512414 1.0195537730863097198875877387855403 GT 1 -2999328959080559838689050639.1416541754123103514456390661267354 2.4679458491686253546640949155483820 0.0733404571038348263836554743794904 1.0761690485172370558316220087011851 GT 1 -1137286739158422806157095942.8699483437696266878444265536767317 0.7307742192026254349490984259717983 0.0401487395535372203251061880557189 1.0409769435591720548524090197876313 GT 1 -2380839481176.3785897191202609173197148694485698 0.1435444954258272376761986032694805 0.0261493268107629653076842769048693 1.0264973000406284509204492489762539 GT 1 -33093791222798344517918977.6287386556103255313800728671471766 1.1638572913263540478394492619389759 0.0816220293538967121350196848485761 1.0851462403703480507402828811104749 GT 1 -21243595372595990919876329844521915.8588605310551048058194547607100511 1.7382964380027349081541129931651747 0.0738125373010290970444789537972671 1.0766786213054747342552410519153467 GT 1 -337659308305.3555857007741172823401266391739650 0.7945726898323343457670657671080737 0.0404046368556635666623818139022219 1.0412435800996179809184782926268384 GT 1 -281437.8305281614123482625391494575141335 0.2159941354991510415038901318671030 0.0802012445864460238980942896568328 1.0836003769827368028013258589752285 GT 1 -20559502762953720534390708668066.4562587056200581425201954314715810 2.8267641227002324808179494288901600 0.0994878917003671937704960781949968 1.1047916682603758665932679335385940 LT 1 -70061.0660191254674766923564654440197423 1.1040411795361156888549669015771998 0.0686940838470209975115524816974367 1.0711674668998296763357503422924364 GT 1 -5447645062774195947.1894218026903793929694786070676703 0.2574707822903404934586228695074517 0.0091792393795324188729689453285720 1.0092216281947808506015488715537772 GT 1 -210267724104756416915538835.7009642216006463776973121309216622 0.7048200488106152351470883207727542 0.0267725919437838355086803931888672 1.0271375056495478271199966104559608 GT 1 -8583830260072.6412631626549965024322749108596072 2.5430599979787447874328631383069573 0.0137737788566416699218304322681362 1.0138695174870009316494709151723025 GT 1 -3823581713869968.2050317733234782956668998147951823 1.9776966105837481512859313931623237 0.0601155334318685950892593855663716 1.0619983191781263204174786794304294 GT 1 -18080593915465227888458459399978.1905208109170662184502684079391722 2.2370676369380910657120805631612411 0.0695150712172374069339765556856716 1.0720493999329237467736585887045076 GT 1 -9630721740747310745886935406035889454.5048323895410687866087350154696001 0.8419252115530839268111668465840478 0.0727823786367153276007169369211911 1.0755669822156109745268154544635560 GT 1 -25770492945482400331262354785.6740800011734282976482555230449277 0.2029213593378928165406069612702799 0.0057094738539814739032651184943511 1.0057258352060216346859643274080806 GT 1 -5809572664570121369840204673490.7058193685854953896127755958802929 0.6692852873045425353494448512188912 0.0980522852703297818198877373553677 1.1031987265312324050283140785689590 GT 1 -55280901181.9252719005346464224864745469907933 0.6570578995172755878634720091353686 0.0816646979523755325632628393214254 1.0851927022750131358060465882217490 GT 1 -197043810075851877540890608589020929.7916377741011160740876805457078615 0.0688669063586945075214022700192996 0.0651393821288917612303242249457177 1.0673578326013607053506036120340129 GT 1 -30617359995773372205336522264644511.1472287599914439230923289977095143 0.2812436256908046881710245261807595 0.0668771749919271394848473333342167 1.0692184415601752718199214246471635 GT 1 -4642158844985946632009000196294482431.5601231692228338317760722542142853 0.1870189248426087716045979464358127 0.0962385623618553172049055558594088 1.1011898498347290568602644936712203 GT 1 -129463778.0611989957067502833895891381217051 0.8113361035127903043421902074681761 0.0507403136405213876305908556480654 1.0520728756984496721269905826932735 GT 1 -297937412118082526396798782.0399661152400970385608299775666340 1.2694443922591070992533343979361846 0.0775376242553058292279074367023724 1.0807086889997921557032247281006426 GT 1 -37035270456882997352.5191104497860533681474701060815215 0.5576441467324863658917326931355331 0.0252983033437405702492753741005323 1.0256238069446229417276587461300176 GT 1 -567295693618649625298210641461861050.0249767486791936079528797235974439 0.7242306560883760931520495779530028 0.0426324219972650603904758001298885 1.0435678672276733887300298443515927 GT 1 -1916502234691518312321575849740247.7762345886023788641583564167204290 0.7669959989018605148022269740028924 0.0013672036001948128429721465222530 1.0013681390757912918225911615259091 GT 1 -6247.9471325279286533643898578923870578 1.8055529577048541267142993551441693 0.0824201129846518536919754980742630 1.0860156325273559545202472133102558 GT 1 -4367397780163856688066306772022.6618104726899970691675161760594287 0.2047824545953389348294742638942817 0.0981866236166644289134430686595049 1.1033476801229745756358834803763954 GT 1 -11.8044742499077009697241853409976277 0.0119765841021235660162262573234354 0.0661868340865123794483367041604531 1.0684788972584579302825558671962778 GT 1 -58927585043987704744185.0193200634200831114813214658626088 3.1449186507487378205477282054468762 0.0904901735226231515066603929161768 1.0948494768191296440245930895000685 LT 1 -22014761507027419844475902331989020837704416.6397898510342317543782149764691772 0.2492161135343877618727835814451067 0.0424687805363643150240211703648963 1.0433969532749197353284044026171207 GT 1 -826423391930106103.4215030863225318855686162559021958 1.2789255277186419479315830146444243 0.0614475998335822219502885519506439 1.0634165905596034095324314356164674 GT 1 -26660049.6683802964869809809243586430051430 0.4382645133864141264974152454102269 0.0758322633540809259742888001109316 1.0788616906490252648788576313002899 GT 1 -308104814115047117472199070802604511848701.5533657278896254414896942972074441 0.0786966736361299607645959474048187 0.0515594301994029818810797987673608 1.0529361486069003686204604130315231 GT 1 -101030915101435011905717847645038.8742706355287232965400691197564268 0.3572626854079619865746751883385266 0.0781716315346826285761730310774160 1.0813962240929894193949199277719802 GT 1 -15835886.1163103743035676285716551872273926 0.8993930190774371866540538667005937 0.0345300338175208048819013200710606 1.0351402846067441119395505795871754 GT 1 -2554098830766.9451151201750317142005113632120366 0.0781622273997770136996845922819917 0.0391854864553933263495780748951643 1.0399739026428940303100486723766515 GT 1 -1407247992988.4412743326914648650356929615016177 0.1843920522857945993580683768012112 0.0611945765167154164832646118753609 1.0631470379839447760550893607263227 GT 1 -76447801256.1401749094506716366875965427708281 0.9769532227772490409268349356335000 0.0155053149555993894982334290216922 1.0156267795519626031393545657256082 GT 1 -356243716899538473831509182657478354.6955938640187411905347219708047023 0.2608034999267434928883452658409518 0.0295281609585248577003873731151225 1.0299728937528819440020173848110264 GT 1 -36665754182689582391941195.3589198393848251691016842181643194 1.2616418481101935435531875324153139 0.0286056543499973514591337086283844 1.0290227699130434676639058181879913 GT 1 -13824943.0036308712074606038090986198218545 2.7701167978788825151675089756941197 0.0222898180701751288682568664773631 1.0225419903590181130113971091072255 GT 1 -348667619976.2118873243112498542364687109989588 0.0955051082442820546241698223613794 0.0953541092313612872512331462524931 1.1002116927711951598186040083405524 GT 1 -2577121754556838140651181848332.9487640295503074826125950366580519 0.3405883706445776512798767190093539 0.0545935653348358902413527793099948 1.0561403543576465960684466076025148 GT 1 -8719153162390711396312120944915012002326979.2065275186420454560792506181788906 1.2027600100096766253125107822042426 0.0388950133111357552056209271339889 1.0396716286439736951131715610722405 GT 1 -1533.2985628575197568957041212621760804 1.2782423164580217656095305822565802 0.0244837798044705617462596818462680 1.0247884914861882631904380361063351 GT 1 -31664066882516993362662104032430901.8869103261820425826413582943985091 0.1263331537488571827631270224137610 0.0465917924009650985317592674242866 1.0477121274808616734542837606999503 GT 1 -2531075946885.5826891927137608361960576851305006 1.4877066616666063456364595446749775 0.0602573898957960194447618018364607 1.0621492602514459214120692815115573 GT 1 -11219.0157944857490595392994817413761718 0.7065647878780622063854231008032799 0.0574778035852063215451003073568817 1.0591958093645562193291625753405460 GT 1 -15929500836687245.0785755814731898371813139007243039 0.0515941053842292802869252143024552 0.0548469542409815684635599476962939 1.0564084114172489616028534797564425 GT 1 -18949738646706149.1506353790656714409801246067326108 0.0042675483660516531376221020774400 0.0674495377888104889937033106325224 1.0698320139565437109539274085631734 GT 1 -267.9992150182155211839568081566701711 2.0910258086667267445748563385186857 0.0615927654254009037483042644260127 1.0635712721941161865710496719989240 GT 1 -114117.2815872628723942491443280780303094 0.0238543152214531558768162425853674 0.0304830039233957184973963874563347 1.0309572736881578275435566357352705 GT 1 -63450881379100706881983891868682237.7944592965062235976560123411431613 1.0099594195066636174661929506162835 0.0150795362724637721342904759131540 1.0151943885550366162519361561040987 GT 1 -532667259466.4725447794905972682975020638976417 0.2857800478150140071169591359304981 0.0309515621748673042998548901654145 1.0314406809050635906389339716310703 GT 1 -2593681198765872484645200321.5616787950376651116145176971945716 1.3599816760719116620402204997393862 0.0378487674132633336422237868702479 1.0385836342409474523615336612951238 GT 1 -56597113028731579843900855828860.0598502164726504120893128264226981 0.2003151643287062354453283617467130 0.0348582891872662153824221969692159 1.0354803378414986928992501503047048 GT 1 -2.5594407199722902409858888145090833 5.4302174199444370838063708911076527 0.0010406418729281178979611926726486 1.0010411837166247401859812377997566 GT 1 -2908542311.6252526830255063763738010538943353 1.8411519196585046941944514377570182 0.0418876303392015523242378661635753 1.0427902117930589347903389057574839 GT 1 -1098086970.5313064885091266444713001699089725 0.1718902041895598281063660023635032 0.0658435223652120754638934942246719 1.0681113198448189536303629374320731 GT 1 -9875617861818764959102969.5507351144671468824816458138316939 0.9041322318205915995079644796688821 0.0301322957747301989603669291241607 1.0305956041829443542049148874817248 GT 1 -24016071490.0684315782741344081670925077948210 0.0010082636921793265944574427928329 0.0945506615804114162894164223198166 1.0993239519598174860587290724280015 GT 1 -5697004351880393.3453947707083646537072093037774639 0.1216489965940061718391784348074583 0.0403085186133615748393862710687296 1.0411434197273878087867718294094387 GT 1 -19149309426829795006602985927.4687758747734768840780572961735949 0.2588105887380768110630851879412229 0.0153992985859708200669915959942784 1.0155190992735361864732250779315845 GT 1 -4946811.9009735806991700405904896347090496 2.9005822270548421285725886720928875 0.0112038926528709804700675509128744 1.0112671290308680794627981666305315 GT 1 -83663763634959969.6592163623718675380217439841671008 2.3566588242125465514122833157287350 0.0887604010444743710412722619518878 1.0972692061528148135164886583740125 GT 2 -296288975580940213322.9719958180701303312172388486608396 2.4289508477602241386679148614951812 0.0509761113914762127499697095985867 1.0523213082880553232664935433240429 GT 1 -311666921.1602016150377225974261023782137141 0.6731541359907704714755311473713203 0.0580241219258316170646161555264289 1.0597756118735910372578321357040193 GT 1 -358878112220534.1898311267592148710573903125663893 0.5006395900110414248266954074974409 0.0266767795932204729681716810587609 1.0270390624349303955133642291370290 GT 1 -11725238884278161058971312996.0844936299198215977590742840333023 0.2238038185806910549451398412415364 0.0059860497567865554118749936016589 1.0060040379741320648344651425496940 GT 1 -291.7426087168950009119805984742219616 0.9531294412271346551704560351142462 0.0284355903914705314331696632280903 1.0288477132284886895111807289409763 GT 1 -9.6341207506382759545217818915451476 0.9761854200022496056285241832037553 0.0338754549381067884653474253548632 1.0344625244447010553138875396106192 GT 1 -12168864550643967.7974694214115850921708070111606434 0.2345358978292745170351792941704792 0.0416327731935277703684039741419401 1.0425242479417913445893454390427678 GT 1 -387349242418907963500765335829988.3563609197071038903011610634757756 0.0040858147158489806819811904708655 0.0036730833038934538011962203679268 1.0036798456385296150534520086282286 GT 1 -256242720412562973613124477847.6252776389428292095449026438767775 1.2121003573696146896569988873908967 0.0313579483072056454681390143645262 1.0318601350340847871295997933772912 GT 1 -1419892362956724069322846669678575318869.7910940852138684000217859600558941 3.4132519161282980892227993844845532 0.0550223460519280621818455652135810 1.0565939983837768161940243010963966 LT 1 -161934701196476008393325887.8746940404353353936042759286699741 1.5227300574110383195885247362672064 0.0979847634307125099180088278084148 1.1031238670784923311607877649890563 GT 1 -6393279552291189.6976588424303890559183261908689573 1.1631992104436405192855756433202694 0.0006579357035577342499596877075545 1.0006581522382352150764503819230326 GT 1 -38172059759344.4223222969850293363688167172433853 0.2561151784097687404969977401880160 0.0064211787496599456332822739575297 1.0064418831968211262701092946512818 GT 1 -102096363357660864623118.5738798180633805661977408623043503 2.5126538815216136090156364934762205 0.0743861576597871718718739252639643 1.0772981482229081122753288017822592 GT 1 -1028961946659243468922763706061.6256281672582227423612892572262749 1.2807906936986662887036476601849806 0.0244571109616949951957158559195984 1.0247611536749953464144051655932594 GT 1 -3358343.7230843417931489270236181826879607 1.2876709679594117217168797926884065 0.0084424417630824885728664342059118 1.0084782810310548153362106613336648 GT 1 -24070027953698756518179175889138662.6168471201809770831208181431282924 0.3063696012976807994491739600670109 0.0682417950095603764734856257495560 1.0706819346616066456679118740101525 GT 1 -18750673987488.8750933584134289845532617540923468 1.0012809940341369328026410298051260 0.0090508332243982562808111456378540 1.0090920408460793055458752502914850 GT 1 -528541130713102465876.6890242220789667676188627991541221 2.6070643893807998047274444166109351 0.0748004961827152084586696535611849 1.0807680962340002274192417073132503 LT 2 -4347304729976002498717.4987689988993648967799336104376320 0.8522956819853067517880836560320026 0.0059271229967651397739361122767841 1.0059447581084530723852043143472831 GT 1 -77899791851505684348604545718690.4319363654637495996578980426953635 0.4914555523409975369173555479634095 0.0536292083379787995972651765096019 1.0551208293660478242245054342360948 GT 1 -27053144597098277502534009389.2635373429993962922046124943816739 2.5630722374579449684943425192745434 0.0391491383988912259408080807247416 1.0399360728969075013109854701937931 GT 1 -663236416683824554.8898803608865656048763239996246024 1.0380644593929951747579562905046081 0.0025179251797808525086831199320600 1.0025211004846262635151053947222760 GT 1 -2493143823.2793445104618384513197783123663835 0.2935972965613183581079937373651766 0.0570518720466620713817130750510370 1.0587440053342463493316706867494942 GT 1 -406347291629352620357328625007187422.5650482123758055509998100251520168 0.2384345512415176841053381878429877 0.0572463751922649105871799854928170 1.0589502979210860528848545825879746 GT 1 -583331745803605252302353.2382341788373422126495119945351554 0.2884029056649061563590557470244836 0.0576941273630646609433396017389991 1.0594253515518359410522354997958864 GT 1 -14598.5095459067081499811257547096527721 0.5496022406428372967652998069358646 0.0711131333852536547872266817851575 1.0737683273313668963335232328589571 GT 1 -30556227574646766075857400276.3989278948967773502420274096402363 1.8432831399495088068479635276972652 0.0321241993083028728842665425019276 1.0326515050079205492048894097585662 GT 1 -422580919715840677106879248.1717176965605122378267957223772730 0.6879699790773105653805314628697508 0.0231086974303584506415564022573038 1.0233798894546514849408183993322644 GT 1 -900155113.5144515247199168247360099182911500 0.7197230483302163204677637678239498 0.0534641245359663444283641833961548 1.0549464057610196545201822666752519 GT 1 -112541451946798471349820854577212115906.0690271001677456890036220897949092 0.2076876765257564782566752239685927 0.0944378254989277967690638882252517 1.0991993408451728802357015907240795 GT 1 -25991095160138384204961041.2954401246677563140168854013321720 0.6669088120550703014870469350145284 0.0026588315454453907404390553325154 1.0026623725159943856639558339182470 GT 1 -51948909870238059.7403923092225128146257504125067008 1.2678277050506306078893557581991903 0.0409687263561542120001639550579370 1.0418315939486159852323510769147519 GT 1 -60.6071899695152257888790006912833500 0.1051959648624728210976555296478440 0.0844967206197045445822507898996226 1.0882813328092188449067143725725986 GT 1 -36303178856618287614689457660854986074.3439066638334480607529737410119895 0.3942928951114987754734733327828500 0.0030847194158215066601800148834558 1.0030894869696604090376714674862661 GT 1 -23961734548140.2095915975153864863715062386034756 0.9261929732914895773012519169797117 0.0770035571493496359719625807433989 1.0801298983863315922301495125975491 GT 1 -60109816588038961731.6017260795394938942215883706698507 0.5532136435628959121253166744636324 0.0568151792880929465087077250380345 1.0584930232812801428327676918498334 GT 1 -886712.8162742703144923878044398986389052 0.3258053673179844369975499013794191 0.0982907465168447799587077039355780 1.1034631462652582942662222309169860 GT 1 -254321394451933767203300828043734390.9599769599493100854838164728973023 1.3133365872345285839852630149107283 0.0123186250238851236279635544030161 1.0123951282103992956395682740786002 GT 1 -65834122340090051811690304589283693.2547569592890949037084486983659466 0.7957150832162131660785258822805104 0.0037677488166355191041453987744295 1.0037748646616425251399276213047241 GT 1 -78.4769511059609212504070373765686770 0.7620302896978235196139279107546130 0.0786535142256589604707700483325520 1.0819191074220963487752916485743011 GT 1 -129423894546503828408511402011161161966.7335534459301992812401057903443643 0.3578249981395777734833777887725332 0.0754283568675518467299249208031526 1.0784247372337700200236993518582943 GT 1 -20525441077709661191.0553636145350422046112629116413137 2.1870444988213765586500652775097455 0.0066894943179705508691584387963346 1.0067119692718778823550622447483970 GT 1 -24296560315177299645773134964139494.0107452146232323378110548993831634 0.3406804538989409387681093637563339 0.0307077249394358601024515252362512 1.0311890871216831008635309017402324 GT 1 -72730451073986762114003290165983321.9265669012211573897204750497610495 1.2649409487242144398425657555079637 0.0599326151552835451699023481587742 1.0618037202823888356075595084588588 GT 1 -17323450924.1696821440490390088925403407357933 0.4273810451760349612935399672762656 0.0298506824091339442570589814618414 1.0303052836708999502931836158177338 GT 1 -4043500571069321344793021454.8769146811016154172061210376663909 3.0629295574817545261113281698424151 0.0369023884754132245422064050424592 1.0376005104053245870915627600985767 GT 1 -3029720.5888524483124356275134009026344115 2.3217149618678678824263701840324983 0.0271334928554711130172289459927515 1.0275084033878384597800744603168041 GT 1 -396937379.6822680677736602342199410004027829 1.1296979881147533496856294076312541 0.0024603336765339574936165844709684 1.0024633652709439531619949527512799 GT 1 -944318575317523776233278582880891634399195.8812560543404410938179016291536222 1.6335636514136316175866953585638763 0.0083955409597291528597028807632606 1.0084309820177079656165766336124789 GT 1 -313568381678945555783.6957359991253263302594171566579806 0.7134878989132589332788342350901780 0.0883266267281423804839960181705763 1.0924734963987105784373100401253664 GT 1 -6627079422805892763713653018022236472617834.3066072007817259998217709608248045 1.0961719377929550998331770997650022 0.0551709389550615644863370239352785 1.0567512556336964463595645813774201 GT 1 -363204508775199872760949944196619368829.8949610833184251303929290363817369 1.1862506636154275641605041531460056 0.0233763696850449636406045525454297 1.0236539311339402319318644104013573 GT 1 -6075939016668514780388323.5619885919311051969669694316107052 1.1228335013136988056287309378506550 0.0462370658873572553780402915123289 1.0473401351515523959221009700196992 GT 1 -5536860795126835284549393230608596.3629184937375146754578388592609777 0.6992829674850046934809260913846682 0.0729250730017221480641118839977380 1.0757208892842820700242532949316917 GT 1 -3.7355587457010575012615950882220333 0.8255760878049474766890793265540498 0.0896044761847354285577640496194797 1.0938761323452853677695332323658399 GT 1 -60676877508640.9093327183813084078607841862256163 0.0457929509918094064053422317980395 0.0607650183218265020017256605564822 1.0626895843517446737418995361862143 GT 1 -9238726688587732642905907697230184974876409.8890105919873961210952357836628944 1.6437126711241278474854073038148895 0.0811415963714223490747550854462985 1.0846232450713736715604365518385722 GT 1 -60.1770089137713307482765535007053421 0.3531243434183042708278478209203884 0.0876886982495651778314346051424526 1.0917740075122920275180696599723134 GT 1 -539643665246142065098805820.0827201378072242106853073528394262 1.4703502133625966735928930560056050 0.0922293152901739129262573887269807 1.0967634821559809699259015677693729 GT 1 -520409246890298319540429421292742.5848194040416680089323383134040773 0.3857763478839873200316059695952716 0.0550303875943761035329896389036568 1.0566025081899404606966996899421204 GT 1 -2839038479771955554543651382218.4081962204580152788404371359432347 0.4702475057087017051529083519039497 0.0240116780646996718879496097870841 1.0243046578708535774716208493815920 GT 1 -2706611280460493454382390265736246.7190697449800769965138451748436547 0.1501336898877441038876314272196693 0.0266697806038516825095466293212315 1.0270318716435694749281945058550060 GT 1 -154146698270609124068940361273488224.4836220118749481496351146500568021 0.2972118703789691192085974712107865 0.0315059065731795622565644368463787 1.0320128948353351062357293024679857 GT 1 -67393486109.7128210145480262818269585288583122 2.1099909401293382876794133664122709 0.0013927274590199430161733355845241 1.0013936982053355493363892375639798 GT 1 -509120458437557629147210943391072773203123.8475105229594791733266330788807395 0.1416680404837720151574527207257630 0.0044604081423448077857277160209904 1.0044703854423505430235165201151898 GT 1 -4888682717536986842300971329.9904585164790119044461271502738158 0.0530308826140193590472938889297081 0.0979834143201519186490213888980699 1.1031223714168926266193998212075691 GT 1 -7339603635635179793.4398045643735961307099756954672828 1.0127653195556249852771172324521842 0.0037282166387391781893025641263762 1.0037351837604085530353364248963759 GT 1 -199354.7601066541168922776190881374985448 0.4138198321121993518041502920661154 0.0664908459837825515345615486223596 1.0688045099250142354370095312741254 GT 1 -102749892596044970985442476.6511181973678538447878963686409479 1.7680877095497474065049376851294942 0.0057201628531274506317507853869307 1.0057365856419563025111951255090893 GT 1 -1.8470484912708331776013945413805175 4.4497715597906641899012319270614526 0.0884020622265983140114167322239868 1.0925562438187374205885275782105909 LT 1 -33559256326100130357664746659297.7206798147081254190995272051218978 0.5863631425161159010142658182356668 0.0296015961899767860744336187801966 1.0300485662320262285030433396519074 GT 1 -108582225.0989171985648844000189336267960349 0.2479305745552039258350211430879297 0.0463534869031146166125634822782131 1.0474622075425351010822093117462797 GT 1 -547541.9298762256257233706168226400477650 4.0156394723468757854308731649260656 0.0042915114001719216243259011153265 1.0043007463659988742126748201059131 GT 1 -2752294913533468406.8047992104190028637829666955458307 1.4080940993799443946252567899754043 0.0454099936028572519297770272141619 1.0464733433556253676882912806641408 GT 1 -3667824851237223860389.3956991042677378519876675613429166 0.2567278930813295554130217794774933 0.0534529405739904100565496478580232 1.0549345901540328279346304369427424 GT 1 -1276857348883444256731889266040229.2900300266488211103031417040221140 0.5801046874179365149335395436371205 0.0228755432935390293992511113037723 1.0231412484541180004642001471507302 GT 1 -843662226668.1901224178323251014511018068588047 1.0276238292758989812876300612041788 0.0512967523758135633964524490638342 1.0526592293529614797521821167704575 GT 1 -1431272989143533111.8799294054992590690863155003752216 2.1752335817410016746449179067280131 0.0463606764552180666608656865645635 1.0474697465825314798140947408341301 GT 1 -2188273224519904062838.8311334831977796888012678667947817 2.1662809326271998428653239512125625 0.0757168818839461341488238851988861 1.0787368493853396208381351735754268 GT 1 -729632.5698109404278755752092585936274761 3.7137830273989708448703230116905958 0.0999671432941095100095969900172177 1.1053240088732176382515673506333541 LT 1 -5905531357612312183764524466706077927568.8501923890608820632902327175837687 0.5714837741275629126157656549430371 0.0453091250930049719348040508062632 1.0463676820975738803169499574934781 GT 1 -91433704209338072316542971518651340383.5144190995665127632185451659931270 0.8477761561808987429834651032078188 0.0954646859889403902110007330855536 1.1003339323317484753650429597240447 GT 1 -761027831.9758440881267864818988666174277069 0.1584788125966765776611485739665553 0.0855596739106592751894084584732433 1.0894430663263901994754024459256012 GT 1 -5495734593114.0238963962483991379606646074569791 0.5013919838510492910721910085409964 0.0591011207396975467760930319168272 1.0609196061059512866606478149844675 GT 1 -54.1532075462581621234907824161283275 0.2415314737531940777064609551875859 0.0401960540561057061938857307785095 1.0410262383517166340039817915106599 GT 1 -9819533935676.8816600128511010986424447900836485 2.4945842591333065514752213481005704 0.0872461642526809306046531327093768 1.0954559019249141699085601588272857 LT 2 -1729745447778146946806210380251376.8213691161062433719732789468946644 0.2444168596635009571183827607722079 0.0182671467174574588320536560662486 1.0184360511386825518834810313552489 GT 1 -3637170680545712392367555216616.8095169997317031996232426760070160 2.4228240814184816561621419037905187 0.0400546786076366557350405571466922 1.0408789530253148308946085467747819 GT 1 -566898985.9196620090006969081384446474158759 2.3725151751310826869972792198666869 0.0305309570751044700779836653450044 1.0310067357789145221885162373584415 GT 1 -2160206453102941703633.5480605331676763427665525828829187 3.3219541209617767965973050517862886 0.0641186554683263886111075238528693 1.0662665792031129342706728087035333 LT 1 -261.7071307726954026527385352911661566 0.7770121122313991433559546534215915 0.0407121895950134455646617242627874 1.0415641339991183321056497479329949 GT 1 -259327919888379251239.3741024881670022843345798095243663 0.0233954201950379552842715662293893 0.0295748906567131103616661277781837 1.0300210464363473602923861101002448 GT 1 -84896429920100063794801232240.7635178497400571795468452166930166 3.1780631009738235469321221992949134 0.0960537981712007414663773987767866 1.1009854316121535843161752125964724 LT 1 -45136375132352248508272767586661.0648630824298085038825144607001925 0.2846137558907243933540603085021326 0.0619003829896404010443235378728639 1.0638991341113111554301515314821645 GT 1 -592337697214845416.5031786627005870774312534569504456 0.7750853809664807153881176906251956 0.0425777386905458003913692411292405 1.0435107504563061780119087962820847 GT 1 -445715862912233607483530230305.5937686388098782633812958516402436 0.4191204288357228419621847123334932 0.0745131493288156039632817639782601 1.0774353548802305353524683205226327 GT 1 -10729278427989293335600.5366039563657510674141196060672460 0.5023584169036528357418891308354660 0.0902140000926288370543865064927307 1.0945458720638057174484636790041459 GT 1 -517249343236551062558539068671185475596218.8540131332592927888468820285480736 0.2229561329055881758065166976074661 0.0998910090425736897967684402634694 1.1052394219261611700045126103339047 GT 1 -4877305349296820603.1702102460906679527237363994488394 1.7539346020375140021031668450805130 0.0266891218677026462614925821383630 1.0270517430660686267729087891581881 GT 1 -1611875667145491613578222337429000752564.8358148193819577333230796253522193 0.6683201477690719220443389259931465 0.0258201404440814860461641811508187 1.0261593316522675466251607874781055 GT 1 -5280636713729236112.8716761136977893284851317467521098 2.1944708894173414952863096456210087 0.0641555266202228629794612088946045 1.0663059772298414281110025361802203 GT 1 -102406292000342937371376.9468151095344682195852071927692134 0.3729278908451830472023417507359228 0.0000315642922018923645394963017699 1.0000315647903646462651540352682061 GT 1 -1059247908620925529.5641763850603656790411047895754369 2.7154595713866875543890570545840058 0.0021086097839524266915268939340707 1.0021108360316385498228023650531987 GT 1 -1266019987745821919948428010112894.4953226589586764567248457152729967 0.1155025696111910682606222566582705 0.0765595902866478135096397912303292 1.0796490079939619449228444350627338 GT 1 -42111596290501165.8693479801904335064544881033353726 0.0245135192719755857424403839299796 0.0731002342222029612864895237045456 1.0759098467945269481473028136164586 GT 1 -670703670638908484003932996264427.2148258152378623380401617927407450 0.7640640299525747108077440657707915 0.0497282158630896916689148818357142 1.0510072467379118904529259409769869 GT 1 -226897915473116335782165892362444521578366.4804480579651424566964410963161044 0.4919670433937047878224428867653176 0.0395723071013439061838201559128476 1.0403765802958002511049199382772736 GT 1 -130585159156.1862649067800103588949350274233879 0.1456410069702731523729121566423796 0.0441119504732505135301826560109466 1.0451144757933202121711600407232593 GT 1 -1411500746598607164633556405676232.1160929104468513722795379623020882 4.0243309168138013718557710114366263 0.0530382699771482629842899346645789 1.0544965984153285857423622724024450 LT 1 -28925826771113738670152.2973628079097938484373709400083604 1.0935482886586806786986305034274242 0.0950226558450774718457929764564627 1.0998453696785273475901891628903172 GT 1 -23819068731660831630989.7803854483823170544589896541145965 0.7683084479396536316086409685507676 0.0627016653617294296933690440565978 1.0647536539961632738394773453517249 GT 1 -431836387616095543.5424994722208173587807189087990514 0.0578097253337624430273656564515261 0.0795643195005845448067289616353835 1.0829081552756927358452563442311393 GT 1 -19725446257258818989296603665964653062.5408274303460110482487734089908068 0.3988491108466922531984132166372613 0.0835418939603119074099154348681146 1.0872389235603638006526712840415638 GT 1 -17359.8253966209635575783300708220577000 1.0426286329328186504663657067696928 0.0473739035445621755373732080448733 1.0485327960132476535006115071951855 GT 1 -1380724468716635027.6675881774370793319022556822507477 0.2296242355594978643849750844621550 0.0138039967695225780913903992138868 1.0139001578970610700356375263312229 GT 1 -490838316222749.1245675646578342062450398139589274 1.1432651630672888975724330008965410 0.0980526106190050189574479541414567 1.1031990872491860108069635139284345 GT 1 -39643746621622.8266162112147431093970532998703054 0.6652516958859553265524948015572294 0.0609154191514470409739336997723464 1.0628497283793558773535249148909434 GT 1 -751392259282574516613493723950544281.4806817306906364850258806474398718 0.2286312497516792636711794106694682 0.0401036653388689746049935683801712 1.0409299850790141440332952838781504 GT 1 -1101359619932964757510958316140347661289219.6753943524165095526381360193513675 2.2012403087885467914351921161785953 0.0264099963237857305346452613939608 1.0267650047442182820139180283563059 GT 1 -480865510459.6699540949749687762152711130596513 0.0177472407241694029255168053978140 0.0542632040680956746185228627688085 1.0557909770447538404099504674025963 GT 1 -18222283.3791247325835356515491367298550254 2.8739588500380813925882265800202755 0.0659444921649298187181412087973983 1.0682194122889327407807909742854709 LT 1 -3891063461024.3439852702968796091731476664323826 1.4267311139348963036592919815959904 0.0946793377739223262700941231830889 1.0994660751380031441922565455830286 GT 1 -16000858594090620819451053.0052495975317844580179986560593570 0.6116344588866163018296480600339854 0.0955231894030061004028402664380247 1.1003986122897103729073532793316313 GT 1 -3368852130273100764775.1934856416302131012899717930419182 0.1377588721989974136550507571109573 0.0789261697414045375574516363211060 1.0822150827924972474740574584096225 GT 1 -278192473707.0344292928747492338968274586245638 0.2898946972144656108003733185295374 0.0134034345805515788831965943547187 1.0134940714175791216390255376826441 GT 1 -60002974284.6551088605550578480455901443461787 0.3100609220231784475701711181611841 0.0089500736289162563296255242200792 1.0089903661319815982166803548860805 GT 1 -386791257148152598827959428883400345847117.8943126059889080420969352638731463 1.0641877254905468327360162163727553 0.0708520030155935760689219662593233 1.0734872450153187291301966561628852 GT 1 -10785.6320447303190997438866906422324632 1.6539343009010689293402381683390977 0.0869168233163386360942894768989893 1.0909282999259583523524173546050515 GT 1 -3236652397946467911537212150204442272337.9637564318936956625686205211394195 0.4326685866218315801467778165809501 0.0123228655302006077098123398566860 1.0123994216146549920424976352693059 GT 1 -355807974430440463004932.6726142586651826691607916833166845 0.7643147261284107270070910935225327 0.0938405055670389306327196395847171 1.0985399460123194634205274823012738 GT 1 -257517865980962274787707384748494457.5471113855008996652784827021960885 0.6785565867223658232772613811144760 0.0397334530855362155722516821148435 1.0405443800228261423776599772008710 GT 1 -65223722720.9988105101822763732417678034235452 1.4549416144867800657777695580127459 0.0417657114921249526313349790945443 1.0426629708821085111359674404150680 GT 1 -163564749535811736644046968985959.4494471679240772534742115982174565 0.0992304950272440325802201384950365 0.0643129992450060873691392198038556 1.0664742593317789829403608340103783 GT 1 -68653618179073799614136808327436907.4147394913641359707921719986849729 0.6816970425410517882401599416595748 0.0792589948288697149018509402443548 1.0825764927287031805399672651676854 GT 1 -10699022910508828137654538028823432910418425.7760734773333107278929566712919385 0.1573721887016965466860092356759550 0.0037319704786292549777617614052900 1.0037389516548975976519921305306506 GT 1 -504465337395703647766549750997509335639710.0301330988716818656558744830089535 2.6043456719876464664852651246296159 0.0291345331963448486060189126816308 1.0295673714704953343282994670366083 GT 1 -181.5793452144899546634159256387912150 0.3345200568562294678845236969699496 0.0201281195481208274097163003561093 1.0203334500967604978376481368353582 GT 1 -1810.0746200206924143018925789100818694 0.0756625761142662792193780198839723 0.0087878900178750398883116014821452 1.0088267312457468011666525373192299 GT 1 -2146.3946613419701758016676921109658739 1.1174562487010768292986397906878330 0.0949716599728818641468395558796143 1.0997890208254217876335972042544632 GT 1 -221015448856.9704439103372472066300256011793577 0.8009980175642706448815932716112682 0.0498909392364198342755500489732460 1.0511785001728899257799240878117481 GT 1 -1275494544886195327.6110062245448132360533510058218330 1.6207256756811798482079182154683953 0.0782073798564733987821039670026852 1.0814350046471446694484263711135459 GT 1 -20175331339.5142212157895974091311619879566316 0.6465624440446153894128343345992841 0.0349821088958131891356312115165793 1.0356086378106762176957298845193629 GT 1 -14815900677720259193503595673586.4117044092491211572357056650074211 0.1009067019027172478331234308055416 0.0269662314883849289286414020144410 1.0273364918365728475050937677350597 GT 1 -2610377756665.7596489689373916058668685690768627 0.9065171878839382581077736009362323 0.0528308251762358406074332155691167 1.0542775588534788459467157927407821 GT 1 -1403849826450294729067578858917.5547580825107742049251713037085955 0.5703085001543229592204488511332868 0.0729586416285568798675969833869451 1.0757570991240890763404497507505785 GT 1 -2037892890255115216243032448097705.9282569165290486108762922226868869 1.5828106367903972232539106026085257 0.0877801780925398039744342871704947 1.0918742851582747177986683934043496 GT 1 -77553780680272321505584408.9525449252860147916999570253262784 0.1097242410202321768398603778242613 0.0100628625250094351948781356654220 1.0101138353695625686893920403667603 GT 1 -1352227023133649738630.8581834601782685634791216193198184 0.6257695112155307117990287942045919 0.0361471283019482979397066951612614 1.0368166187394873112814915911124298 GT 1 -5105.0927487062796802308013336986949870 0.9813567487489642422221457530760745 0.0443249738816922536253020939340711 1.0453373545589101809711785255850374 GT 1 -755650044761974454024105.0792294490872982275254453590068706 0.4796126304524752622933248242260603 0.0534289451740988421787642181340619 1.0549092400190230692097765008350011 GT 1 -51960.6045336365441504568783101534086013 1.3974530588584188226359151004577999 0.0553838031191042075166951802791993 1.0569765748527109081714810211533584 GT 1 -1717125412671552492451294633.4877063062182663969782608974301529 2.5087003928572781123127225504610077 0.0707329329829229541843859767891282 1.0733591035305234286172493737419735 GT 1 -77331702432.2102969769093861141299437969414851 0.3125395488008771274175274783562586 0.0858191857700097413239477596579235 1.0897268997081341810430471163267892 GT 1 -9430628012423410138132792.4518179435581251078086253331378096 0.7731966080194367364557461405988333 0.0733991489150635502082239432673409 1.0762323874969497406170133663568421 GT 1 -26472283032342172759237063390995.3399100196451036284101368173898656 0.3945281096005297289974885173683626 0.0738188171613264819533455346325807 1.0766854016624112837368597366791989 GT 1 -59720340328169600890142.1607007326275049242728312570437534 0.0174454929812692319834497172913627 0.0118439040717808685157291637381093 1.0119146018834827210287405102547277 GT 1 -66298427422598573639031813983556753872.2113706740147370832352365021702436 0.7040599939734009747869462327482470 0.0101946993878409669766967715580687 1.0102470212431288253215971708664470 GT 1 -30569519437027535217721.0904281231391600050353832810264239 0.5682382090516595836304404699743908 0.0874475464297896987537804429945633 1.0915097118129817460119887173243727 GT 1 -9050185618359829473143791.1423511903917165276845334128334287 0.0546342346286951174584675494341376 0.0144516505761581429248835296421929 1.0145570927872821913756761996854611 GT 1 -37005306926865749786093684413586739748635.9305699958256881609460115038122680 2.7218045343754410888620250191393116 0.0234577449200161380853421178911445 1.0237372576302985322206837795185841 GT 1 -8686211673384189672066291786526249503.8865004507890031917957919255237452 0.0049493590229565271637606856866706 0.0584019018887304323390971005994496 1.0601767428859545401692059004460913 GT 1 -9929064315343442920317449677052.8833370853907948723409639689829023 1.8822814364580730810295839381793865 0.0628499435102406253281089288197628 1.0649118638988976468017707388251342 GT 1 -1918433536916197793507221427.9712482455377743248918560296340826 1.7035322988708093239950439738554978 0.0356148448184295010995579744218216 1.0362645255957788343575936146281085 GT 1 -1643858949884982157839965205953070772340.6925340032948967328555628921920721 0.3838534493395174456573574003403884 0.0269556071298984105472261247342267 1.0273255730988803381430929867099851 GT 1 -218068026304577080312583611018856748.6119793217223583913042104917301538 0.3087432637575687374968429430719467 0.0598898847831625821763551954152158 1.0617582667311928225626449575622901 GT 1 -6276159510357923831632818452804.9588231239078907004032003790709286 0.6334732946446089094679607903769697 0.0656266517559808031083180674279358 1.0678791901702464876190300160905839 GT 1 -200728884728893700922905279541384020.9394190055051637893074377457440039 0.7199622395367593121860100326929542 0.0667873815153173591630193003072611 1.0691222171895862202173565913644744 GT 1 -9370246647995980735807509517086272576153989.7892206861212057742286371668059513 5.9951514413947552274330671906425424 0.0326401919449187492693146585114408 1.0331847658124565235129189800856138 LT 1 -310097766939050634381731.8233233477874206299809317282527897 1.7280637394668364875305477385171311 0.0793822315082391067564978005065020 1.0827103467948591715680779094952725 GT 1 -8354528035786322916.1800280741548924389156020528473055 1.4179682051685064463153344404832007 0.0572701886501648988486538777881368 1.0589755577111691563906101352042472 GT 1 -2893242367311254775396771027298454453649.6448036075889669658238122144688169 1.4760856442343016052314712223274074 0.0923876610761977303468849228422251 1.0969379310566966399732630049533876 GT 1 -797922549823.4608857619913495186159574125631356 1.9014803156066102790708185930083558 0.0748807843939380846729010767563795 1.0778326680379661526522325625157381 GT 1 -1481426.0128373569073264653355316424336087 0.1832792192779803463139510411937508 0.0739099088230628502706529498146205 1.0767837583805525985015382639936318 GT 1 -434080840862638865.9324126742552597811686999943406484 2.1175436819223600692557313175717898 0.0394131966599046840634207445936639 1.0402109277803043036972540312032113 GT 1 -4.2383432677834941780164828426108494 1.1439896158604136128128994761573289 0.0208773159614864590421824303954564 1.0210983286354473025419914975245739 GT 1 -10340633047761.5678117286281243122458030259551925 0.0358265254430098358810538306168371 0.0672814192253516755974257217159162 1.0696517519567574073756840397379950 GT 1 -1536523453856.2721131553835493388295758410318514 0.7067298656046400706644013635668250 0.0023863868418712882482415379646024 1.0023892388011062644338688381843645 GT 1 -85583424617206481.8723219971622585605347098037103291 0.3842453473768673846110291983664928 0.0756758065423109491352021931574439 1.0786924101565377214892389825347659 GT 1 -398447637630080576930126911118594496114.5673195039151797701287552849088694 0.5497526566230094607454737041161388 0.0904228373745705775688793108166583 1.0947754439130765476522549056130671 GT 1 -294697624615.4845751372023527700811950631723986 0.0932729396063588435950478405444854 0.0646090296289940846213402240924941 1.0667906869644338505764987410064206 GT 1 -2822004643497962907.6154703669820185092152269962509475 0.1925550403678683165939919385939686 0.0157597772389191016441665922955291 1.0158852829022388194441851835009269 GT 1 -23997605149147866.6450659546813204230238786074422312 1.0210379514501481244080758245430102 0.0537346306286641846992428894290554 1.0552322319620299856598184168618294 GT 1 -489933623486456092841903778690349791290237.4857092346776461458221220465472314 2.1255474078151723564941889321708712 0.0780298775898555527925192394487694 1.0812424611456739996735728716024812 GT 1 -170225227859288646.8511589639081656683510389272394516 0.2771852621732635019355868707830887 0.0018861575507334935002847882952468 1.0018879385857807549218985507239413 GT 1 -22155383239858862817194920386844364104.1087069102582817905649037752254785 0.6086768787364576120414422962457633 0.0340289913437074077037439308766299 1.0346214569629487550598604650464079 GT 1 -1902945.0124170212658341481500267981400387 0.0559452282388612743234883988381914 0.0239125191090979793491414820445863 1.0242030645254072402489347968593994 GT 1 -321648454216593592928.9307857526188019757318825108466265 3.4290097024557142727018875323100907 0.0482567816680719791011716327983984 1.0494600092170174602753925187705183 LT 1 -7017551977191421664709201653.3421899608494514136057226229644418 1.8123994478817594089048542105210724 0.0829813367720354356318927243391842 1.0866274544486322730423309319301700 GT 1 -7160011902295254851568324386474996.9214532644349537232769603976998690 0.0716034789229080974245720640752991 0.0391489722418314698605451712439217 1.0399358999699195266259005475855153 GT 1 -128394170144314115785991211345218.7270603216849682478732373210870830 0.4903297073124879735049726412231312 0.0201082184806535654719842750444304 1.0203131404361068978560847339187021 GT 1 -3006152780.6298187244522512377134604641519350 0.0480160533700920873883032746060438 0.0627263094554461794471490782532811 1.0647799470309329205310078180110645 GT 1 -247004279887229510192723366505197339230414.5613383594461970060495197423631475 0.5197339448009515760593333769796016 0.0436296619407222600548019139848570 1.0446100580369278935433858003270870 GT 1 -19993111874346875409699870030646725692414.5710113774868052613886196032213916 0.1327905255267341815943702932609655 0.0784460314407919371234031118204339 1.0816939375978057627758193280400310 GT 1 -143620186170973516585633761115.9131554054248116228333826129125681 0.6677967558140349482864634903864652 0.0003482741224354422890231769866919 1.0003483347839525879939563916631840 GT 1 -2597026862659297876893817595761110147144.9233759482614524123963748004443835 0.1673706305249044957679372901290134 0.0295052756983042524110294043911537 1.0299493124499848475929852877828841 GT 1 -373738274919.1975287766511903239274922542919306 0.3801175804073047908102719153952583 0.0742389790677189043034208934059698 1.0771391543904887190062960232042065 GT 1 -1607017771915462452622069649.4077826484563961815255709313504558 1.3124875966125836799318694982426597 0.0932307811555188782331347212575932 1.0978673057368982901793274985947221 GT 1 -71997144803034193951006.4287435662887342827187521576944676 0.2132067029789936612618036345714401 0.0899796064302566493292180960691455 1.0942882692061517091413347771804631 GT 1 -12879545410477872498213730356.0545720589696991112409631597818389 1.2914107743116703421283350779986986 0.0549096718415228546462046771492719 1.0564747707034971869944973481266259 GT 1 -74600084737683104324417130747153683353616.2184876151366564530371370036287528 0.3705931578005428856386999860480708 0.0135222549805770489730345931418499 1.0136145133082270996838844566160887 GT 1 -1019230471.9248644626605140092053927092417434 0.0675746088346696121404033577914818 0.0746954554677726185858994231121011 1.0776323583242913848711677078127722 GT 1 -39945688622364214297128009020.6708146697958250953554594593941827 0.6879136641234178181072556696259471 0.0496440439843010127241245860760512 1.0509186740236812240284522327822459 GT 1 -433039944581033.5741726049859070465553632520845677 0.7275116088297566911626375305907639 0.0957793514622116832821547601032080 1.1006818681317801255386444116793519 GT 1 -47987067209643.5665166242797961384931049561023477 0.6975485449434627662200010278523823 0.0349971204166906842425342943126774 1.0356241936234485854644454384629689 GT 1 -1992686657023238.3738901226816076476713132047027077 0.8389934397478200615755960359444239 0.0901791498912661068525959240684576 1.0945075668646725277460435452774841 GT 1 -2017206119005012415252.8365277324614842613227983733513099 5.8425705311830881522786873099510946 0.0719709813831725493336085413462475 1.0746922766235981737492086045350531 LT 1 -365700818.9484351115647757703223541416901277 0.9995358447411945896273883081710230 0.0534477073193608858585489170323470 1.0549290613849022337675866925747544 GT 1 -1263980157252540889960692112373959908671.7644513132134044610150492545350396 0.3077168569522455750402589963707481 0.0931362232222293032110877943581711 1.0977630311305104510754922517695334 GT 1 -766558528369641386793047756400.8368170901291541586146973727344920 0.2875412779159037558109822812772888 0.0988849752716762698310583644139525 1.1041223661166134617290084683844116 GT 1 -43997921977799246564951.2305917273146804886893343369715769 0.3167746892722375865494502870177520 0.0952119424673122180071661532331778 1.1000545532807207215464617575209638 GT 1 -43718.0857646647026455539979902813810713 0.9560199645241906487178991407629204 0.0797829613200254773137240455508683 1.0831457251531509278425025607569780 GT 1 -332.3728292435127657612813673987884148 0.5970325908005528842585579249391702 0.0545851577929072330311033016360522 1.0561314613522297962976033018437243 GT 1 -17439602773448493650737768.2070996771084471651269248584888539 0.1790049667884317920940436532759634 0.0056081043182339324902735132159422 1.0056238887768455086650389868407262 GT 1 -68041095412548256198342925248607.3125114285315063135398493902811870 0.2498712068533089503589741965477529 0.0355024345357308864580608954383447 1.0361479707823392336118545576603753 GT 1 -3462108959198.5191682972938645977190953147027105 0.0471152509023208380788553356897970 0.0091570462462669592668677689690948 1.0091992297089980133972435635506787 GT 1 -87186890967410403287801.3341917595916752217893923858814725 0.7116770963409142717412603501178617 0.0613856570273204757128518398498682 1.0633505944977078692748324566768629 GT 1 -13460493638825662400709.1541007576655366752953065555968214 0.2279693316254544627669914860512142 0.0468966879812743905039598765421494 1.0480319740485547993800393076263152 GT 1 -145054.0686458396875566964120177130230826 0.5457205372207720027344101726891582 0.0133738505816399742930743573923010 1.0134640859540109577840021913344197 GT 1 -17436687.0348917895768769482086823884904982 2.6087775945445877231326395514367456 0.0593252104997182015922038846040294 1.0611578000866608156593518894053368 GT 1 -105624613148721926427890.4839443740729730352729813479393446 1.8766448360716466986199469685565311 0.0487093882514963334523849722495014 1.0499356776836564800641796288045997 GT 1 -929592540372827740849240878.2502321123698033847204373692290915 0.2301241510625345270890304279991546 0.0957090276871704315918757795167979 1.1006040983521824478609956755070944 GT 1 -79151507153237730255278728287202224844.0226906731433009980909165078062494 2.4842341729571912639381028873781206 0.0326200514922153459366351323514621 1.0331639460069650489610423847305319 GT 1 -268819569485103586669606880802187572498910.5961427903456111878507461768661599 1.8354244521707404874149483625411467 0.0591274579642831447427523197338559 1.0609475980546962395655981241132982 GT 1 -551375452358702590654.6210856180514995224298486533047064 0.5567970420933645685085088262623223 0.0151194099857355468512206237784578 1.0152348735707202838926236725530978 GT 1 -14845.5940963813372756605508564379053340 0.1830963289584768179383036577033469 0.0171253052668540277764057735423328 1.0172736392561381720854571519719673 GT 1 -6973249145651371036868.8032598081335242078938127583866093 0.9118845819384305472123753266620830 0.0301377841137316429482109121384462 1.0306012630521967736798038527434884 GT 1 -110860857381667768151827218938588688.4977723234451884355245565129073889 0.3492620656517930009290543140653559 0.0706339634000054014602032230219898 1.0732526063602981823128784815555208 GT 1 -761575639356102784108543421.4732285777237143401217128607698422 1.0103900931109403314529017686399647 0.0880546741231700154366740260029415 1.0921752404013188882527884383416513 GT 1 -434699299.8606840556161471613854864991556791 0.9358087082155157278731229379278053 0.0058925372343582459845552397603722 1.0059099667349357152984639165697670 GT 1 -104154217052568346588075246402773.7746031383820728265945642375540076 0.8683703432844213526917612484578179 0.0664123432197559572679057659546353 1.0687204191980429155670994262516249 GT 1 -2588203874197155.6424815778412851931662347905798167 2.2270345332476559478969968356304528 0.0214051275184230911594833420954302 1.0216375397877068865166778733524736 GT 1 -121101979839969707.1039544872941996600730042495331262 0.4382874871971983198122620982463678 0.0033905323270163730355483387665155 1.0033962932070658611619584414162907 GT 1 -16474638750208481738765767.6472169495669577803351405838234216 0.3969336804807244622885331348542281 0.0921290627572606631748027233180877 1.0966530500841414617620769963037548 GT 1 -175867593175964325.4706191219115862767501948818614368 1.6302420713520615783561242740595846 0.0389265461097535088569165139241976 1.0397044380834668174581324355862189 GT 1 -484999074452630.2355535195296281234550565414307158 0.9643062460354330417305483854313695 0.0819900737881766214396516851067363 1.0855470755531952137732217841589328 GT 1 -18594031432558993213174533187424030506405220.2174397670522761902070830283616193 2.7867088703804045925478008092378962 0.0772766609739818126918726662132974 1.0804258304441736556599294376341340 LT 1 -1207640473444793994660838897658.5766424132431626942206490898437497 0.4522751074277572749594774225757769 0.0610555786869695372490563240491733 1.0629989907556252486945000446641070 GT 1 -6551589322020047381430.1581189484140534114921388209591951 4.6806657723758077420792464325388328 0.0371139458881476670999689375451230 1.0378201980562220769315051879843449 LT 1 -54368986788409196238.3038466237192782419429894551020442 1.7295038856688233073672020685432212 0.0732106304106435768714083481430406 1.0760289565054971932646407799985501 GT 1 -1117.6068560628830411857221991765074306 0.0618825680956742817139387963680565 0.0746959582308740554521352479854680 1.0776329016732255230256534374162223 GT 1 -12591912790893989252.7644581278849184941476947133639725 2.9405876885614498403852336079360213 0.0469355387616163073601731084658356 1.0480727372813534647096053048758661 GT 1 -1415950127492340184984026378492707.3257510172654956091349746482194661 1.5753640463614397765215113919296475 0.0505081886909774180588451064236980 1.0518283729807581804975134485599870 GT 1 -550176340.4238668189892035037171002562560899 0.0753214179037973732463571605192220 0.0608173329407348520334038223345357 1.0627452850836421180062668623949117 GT 1 -2245069385857559427976530476.4681571008814237241722390926990035 0.8211290240229776090712210379010011 0.0494328414856817729745928443781988 1.0506964635640640696852936364686640 GT 1 -7244843845.5446936421227066255829262046294761 1.8616959888548932476793586807413514 0.0407384693445008121429274858548659 1.0415915294368342930034434823038004 GT 1 -286478039094169039499519.2582821967406515375853434637967082 3.2823603424297534270533440911105179 0.0726041037474952653298764196821724 1.0753747320372575531277609387375661 LT 1 -2479734.9031376538979346625479537228771430 0.1497749275484864938837328777923476 0.0683843776232621053892497752658812 1.0708349717085866028266679215703664 GT 1 -34799.7682400040432441397986564811681357 0.2926822062791894791967076339721398 0.0125321917372285698496542072762653 1.0126113819657997206934505649931905 GT 1 -5808068881846915090943837396693044.4532914489062183636602347716614671 0.4979220654059090628188341037541208 0.0555946734064633130535362107178519 1.0571998335986961311650978840071457 GT 1 -36152361.9001190099162833484494866147497348 0.0749461703272890534048709936160152 0.0552150721796235340637606601046373 1.0567979669989065394917782598221315 GT 1 -14633054389055644418012624548.3177929681679342957651424005918180 0.1740368007238474547509676774908234 0.0336159403145447930012543264988347 1.0341939464684017857543275786455881 GT 1 -29039380518631941938.0806429036591363867465060572308924 0.4990457397004457072954231614225582 0.0440591179323036515480385804197309 1.0450592066841575539487293178097793 GT 1 -230114507942.9249839330854468369458777628773246 0.6608495546964191768888423592216110 0.0024422218633198860588270162600762 1.0024452089515472633790391705502647 GT 1 -16052632011724.8242870317964625045971713294326071 0.9794642942287445274825529809954763 0.0740075709719096290607679586255767 1.0768892203649640553880138612011084 GT 1 -21343952704716955941307008357368.6624988431660133331989605409838637 0.8469905782619718748848378013475477 0.0551611834914402428128177493224523 1.0567409305773865105897572580868297 GT 1 -11.3652215198365767510937511528914881 1.1960013061607932886057819855985065 0.0712607836776679490050853201356136 1.0739272939760339191237853268263531 GT 1 -7042467616551259360076583283840919873.7002095108003776085070024531141333 2.5930492546354904558410958388327188 0.0324039895158382111133275302936679 1.0329406233591863477863748420242095 GT 1 -2209460.7606318615402032772876000677331090 1.8927661374250319355269127745069262 0.0662698284623803866424813575748686 1.0685677780616589072126577393088316 GT 1 -389076649.5888063979761959868297887899433593 0.7047911863339160441680744691401718 0.0404152258470687427007506324054709 1.0412546150110361406492530753329275 GT 1 -1330441878.2650899240950136911394272894311803 4.0477365816505850535702247407749558 0.0449766393901514439599238584506709 1.0460194774290121066953957909333400 LT 1 -46103654358415312176198867917938933424059.4859834138753426718897375014370254 0.9642200992032568715043568324440072 0.0579659389068581284201164705059526 1.0597138467864942024986673918172613 GT 1 -906069569292431499319693089649325457704118.1349800392478557230062890689332716 0.0944063197170047811762353369123275 0.0134386754124489966131437395683717 1.0135297916527206082680787089898899 GT 1 -64134427223914180.0161706771032887627210340489344317 0.4602114141174443523556220811203026 0.0076209563593173315947010335254608 1.0076501442348121180485829566259752 GT 1 -5366674957719111930729627388559174787.9790675978987980607125550014350227 0.0146661545630118493197694414361863 0.0945309272405587110518628510227966 1.0993021571183363195728515042558421 GT 1 -62702640717101533817559576.9079769291266827606074352608604306 0.4236468645794045106239222383621398 0.0601786483026313254711774837655065 1.0620654731659186107547523590747288 GT 1 -42448522711238595615587489482656614105515.6292478254883810399754594868811962 4.1232857403658008279659359315702305 0.0857754869082514123686231177930163 1.0896790997360889674593915594546274 LT 1 -113227634377.6574746047702801123402653992864801 0.9225444937824724260943649248931471 0.0369226662359903733026707468078107 1.0376215653573968244153930762157949 GT 1 -337167918.7671278647142011010905682500132543 0.8526829239108818159364529923721786 0.0941993220734756813275218164259007 1.0989359994318157527020910737182643 GT 1 -267145742594493271677533787370463729599092.7363654367753085269685201296335904 0.0249638709340368746039340929394818 0.0001268662418441440829679853648567 1.0001268742900465079000018810727572 GT 1 -1101746224754985229885.8068858125339168815198064499054141 0.8117014699903770211682868096946353 0.0743748859980436084535479390289610 1.0772859707979408090941991621972932 GT 1 -657453640770883308764156212.7098187083640494420954436621319004 0.0628080196857177420063299780352070 0.0912422918715302038551491060776232 1.0956767680482683567510812770939903 GT 1 -458399226856739512976949713186172815025.6497796376656583274475811219545730 0.3637550287427814127597777613176344 0.0391117558533843936739665639015824 1.0398971679847893682390963793462420 GT 1 -449637772173252785494360686058092076531.4332123899745200394277057795854544 0.5815554802550833961752215563325098 0.0960033794722642418745649260692315 1.1009296569512228228198301851749262 GT 1 -25171022537134207788454310223972578273.8735199378524859074573156641307337 1.1398016032580912829494748530972664 0.0959126922945461062932862554343930 1.1008293439332504777850803199981599 GT 1 -36348685.1421590834740801217521295221361489 0.8543698511241159731709975132081421 0.0134777822774890093105098562946746 1.0135694320067213798378154414179978 GT 1 -37850517875761411747621507196.5647940349190608998819022412083271 0.5246895058764452022406292813963220 0.0348626729048747089677750603382260 1.0354848798973594377087329149183941 GT 1 -42305794930338099.9638579482014022247677308105166646 0.7816610225068598813982573472617070 0.0607129712898906364867458023986071 1.0626341716052755222266396427385859 GT 1 -496631698981518011382.2576724718217199046312717630492821 1.5012020815218221068830092472107271 0.0428438230877644646157901020859746 1.0437887065782595220977834215459311 GT 1 -20104220326489977517488248273763700.3222428984659630810358123811017327 0.1088443398569393883598200959140332 0.0333004722909128803630446152348609 1.0338675580716561908722875638356181 GT 1 -2136581091785619466203673302.1991007897154425581537160879503083 0.2714344053591526481890812634255799 0.0321098621718870443978242079359283 1.0326366921257111912055485857864837 GT 1 -27664542194198972172154819829829.0989549683209458091534604806554326 0.1569287187508896279547718990757245 0.0067588521103476541045094174391850 1.0067817965953009449176381118191722 GT 1 -12567884155787155.7511691686895293253441923016538675 4.8607560308486332267988102474730618 0.0342176474306409306834609367327964 1.0348167780544711215396751345406898 LT 1 -35284280087640325914987299598882123034.4480624845910501244095723125912118 0.3145888409423282533085538538516739 0.0716014167038275064772310619813833 1.0742941305457805688371766426002134 GT 1 -11284484770692436762055089.3410552508022157379057317284023380 2.3436474167154878499756740426591675 0.0650874557008189958915235137351157 1.0673022895770658837657755890132620 GT 1 -130.2959453581132297756883737596029250 2.6831859401338285966625293533576485 0.0936011936990355020061633470157749 1.0982758862363695462903934090212695 LT 1 -1162041332.2900962475143274434700274303325265 0.8814799878086144016821945078727555 0.0372544059701637465028143234616976 1.0379660827402432799862921793655008 GT 1 -734903185510660426.6154512036682525736240043765147870 0.4737047273855188288668196499276078 0.0459952110712806401201407299546490 1.0470865877050249819684234416567615 GT 1 -94562.3368808676669531434510245622882815 2.5999298203417397291479177537755952 0.0985072823582292238247195480993950 1.1037033144171267032735308219807400 LT 1 -246827.8822805483531050024104741043733290 0.2223832628467349036163580754852109 0.0693296681102286145989413016467825 1.0718501654987636600895638914271712 GT 1 -1924576642055.5691063667256432563149398989768610 1.0909134712434437921077479199860301 0.0412905532432555095869074718194009 1.0421672252325521975818956144299768 GT 1 -275273750662.9781496930414917032626959438383024 0.1704021479291838096069860149166618 0.0688362216939838517949670779943197 1.0713201006287560323869057903005461 GT 1 -34475041008232140276442021807348.2445483741138580484989281765539990 2.0366096296133756289101699007755115 0.0845545628904356514056267866671340 1.0883445156501465140089838280593310 GT 1 -1648173447702.2896391478745658823117988194326029 0.0168932468222284030618994333579115 0.0434025000817976840481344759596009 1.0443725612474026737310263441647588 GT 1 -20464097650853472819383893165128.2898713948039076731545628233648788 0.9545264506830952372847702393042103 0.0331340533579455315585207911027815 1.0336954212233458161881774750914221 GT 1 -1636427553451016562370055632272.4497877030610792215784796237615728 0.3261772696424570420378989391156664 0.0352859647658767156722461849731854 1.0359235581044512537350209003902866 GT 1 -37044.8759199995710999963551373384397993 2.1619084971005815396500296550981186 0.0556442045802562217683536179110122 1.0572522819186313344377258208996087 GT 1 -3435411548946641024474633189919932403479.9234447143298583146045428131102981 1.0790407408495584953222546015954086 0.0975973059676911256821271330985044 1.1026944128346552239982440203903854 GT 1 -173118550481928100857929.9313242454131274900730073063389447 0.4592975251264718992778251325841919 0.0709135233583995429306234139352117 1.0735534587721955971668991509301533 GT 1 -32143864399659489212796.5912638798359416170292157671280148 0.6356564635063586250524975829570719 0.0901320799429740407036001313349997 1.0944558327999530134812359300162901 GT 1 -698302771549912208425254.7836774759013130253116788420344889 1.8279436675840557856962702615074761 0.0673897847360757188196577868729191 1.0697679411359263466493890177319172 GT 1 -425316221757368330083988.2336167854814076295552883938772481 0.1041666097273934423090289408984847 0.0302868470520344940679193889060715 1.0307549698284236974725238130694964 GT 1 -16654.4658757972192344532448258440449105 0.4180036611189947102046830462328150 0.0534685554765379234596160022710543 1.0549510869897586476908222758514734 GT 1 -2379738657120392757.0109069784654810018259872072815683 0.7849377598459417820205174188490554 0.0724017174673424711350586657967609 1.0751565251196613193886673768970834 GT 1 -10218563754880409619568499631378582.2161443370739311154913312215016580 1.1997613160916714452990735580424841 0.0631363183280664151617557635619612 1.0652174911354790071361290835851554 GT 1 -128.7777993618492451837203020809683688 2.3466496819152313354384680285038026 0.0915948289574274166649665218215487 1.1006789969160177548415398107290877 GT 2 -32570119173779548858947306605987.1612106507585573753842410284120335 0.4593006753116143363709420420489186 0.0518768424487148454761234459931627 1.0532708721363001694147101605431344 GT 1 -58086020273.0623538073326054266972478408402232 0.3594998539079473865349298493174424 0.0441632982509896751154095470427990 1.0451681945911934346001907939956946 GT 1 -145061940549168759508856739376.4717402883484599975203908145257991 1.7420009037691246058045078306169096 0.0905615798736491187796679627131484 1.0949279907088964102562759453749702 GT 1 -195646385424068265541341827.5856355091353876121640675674235931 0.0009731829889803034473073418935089 0.0620682196025247238372324928811399 1.0640780614081186620899051185940647 GT 1 -1101601229295499088780744216545789214.2876136828355927348834960626583940 0.0275959379913976777826579748378050 0.0440883887484687288721841578763971 1.0450898270549964635736245794458787 GT 1 -7940355726541322705263075.1372185682768681748298651244331624 0.5664309464324516954302681053528881 0.0082790746503663588957824088341375 1.0083135365290218082904870838662178 GT 1 -8687367535108687241062363685274576085067.7642334250223511233186219056573724 0.8482031312824736397237976437430928 0.0731099538364053288211463256957991 1.0759203330040635920876085761315162 GT 1 -44430491387901538377183088.3816654014176596239872768286064972 0.3919085110288159028207178823592367 0.0072365431912443522284063907434999 1.0072628539795373335550700426566808 GT 1 -796.7350362626255651528530448286815755 0.9327816108166983829489072476114200 0.0294032575704488130630683765576031 1.0298441982606765316462180034594107 GT 1 -2148677536145080422.1034846660234283634740643581627615 0.2927751580970081694808316550255609 0.0785966630197989197634365328725753 1.0818574048456792238888628802816852 GT 1 -7393.6908245133462988387172285572870147 1.1293799540240073457806148469859631 0.0583006710347850325950485418213392 1.0600692390444609119381677337436097 GT 1 -370.1755700073745329829523560495261524 0.2974958389772862963415099858206695 0.0823614219610153938962295511520513 1.0859516717240248580405049143087981 GT 1 -1625214147450010273856103694.3677219973258433329129673859535932 1.9021947976206469577317218793647856 0.0781386969968740171158963126209217 1.0813604973236509729367395068262863 GT 1 -126251356548923287907354.6948123384566767111640699898274533 0.6760913688431358673085308424704249 0.0233936653101649230518709868159990 1.0236716409023037016571925148779087 GT 1 -53226.8815817084247370835099523909807435 0.0302258974114649563892658097126542 0.0054646703022188211195753657376610 1.0054796562333582576663971741826321 GT 1 -66248312.4667650063720960010738422256035425 0.0854219712021843238481002212609276 0.0856081622454609196644893038080125 1.0894960928815565219121614849194461 GT 1 -344585806060898.3785370475565614423923150470433464 0.4030632494372898679079232676102075 0.0678418583511498561747670937072074 1.0702527988098081088814359976229827 GT 1 -13.3610797107707324543866361503977454 0.1423047035494015447613974818591575 0.0616868003168566138846347641576076 1.0636714841274631973957394117178001 GT 1 -1962921048769180925741457105933198141.7073949588432888988212024388182202 2.9664181709390893258418928061258825 0.0069403097298629687991251437524118 1.0069645056960917601401903182017418 GT 1 -14327691009697870245281274796462717235.6937036675646567312029809005642642 0.3137792303192558951838831912623912 0.0941476884116739202951007609269978 1.0988789977188888539743723238828294 GT 1 -157113652022278.1510314670484952357181159407909265 0.3522227950214905474671712172875069 0.0190411918457220276885947294465767 1.0192248099474180159785564706823416 GT 1 -3772374181323861607480626012285346707.9495073582550653186936824061556309 0.3015631206100916657295123958981754 0.0852676226610648477980003593226753 1.0891237402709239848384087535278374 GT 1 -99482339948542509539234728090666128656863.4640312596712298703969045873180498 2.6394222529836293536193071965255775 0.0979391007740677834796307334060063 1.1030732454270570386617739119976023 LT 1 -67.6023741634776558489545562925005225 1.0159214860918954107918766674475609 0.0865355932441610293914113008002858 1.0905108675183169377282444750753227 GT 1 -6565663080962254488689577609022333260482.7994763066368128480938465340288152 0.7582337122471136060063458827764355 0.0610554740555865354902498946276901 1.0629988793205128001469574600400041 GT 1 -14355260373181892599783592969.7684262647843090099405635677777278 0.0448163062568287816699467576156804 0.0889029722470111390581013756153370 1.0931058805297584491922076836625577 GT 1 -1663.5626352319648001418447011988780744 0.5885839281595235182627708209302059 0.0620120140154434630712971931670271 1.0640181381767466940938703342320062 GT 1 -46336486008031376960977.1915894634130931211362336133828782 0.7740232179229779881376661945051186 0.0256423502225070735061874198923040 1.0259768458430735345046208696721300 GT 1 -8565447309614366849922408.4336483333371525306172237974332216 0.3492281874717837968118472484456363 0.0517716802783854245917406467761071 1.0531599621370752868400618876656605 GT 1 -17654968926721796908428896.5440797055574139769644052482265222 0.6870659821526313889721385825954429 0.0399426887611913618048168019271074 1.0407622970950895424381211039835433 GT 1 -1416572938144539389414.4043314890811875829135219590165234 2.4296210890654374999700326974411433 0.0854097160722111145868358253773504 1.0932644691721543607349219718704605 GT 2 -715.2185693924447931833402429358267565 0.9403918733404126295822200696134713 0.0132834572445908213103134995773304 1.0133724715198116927671117043443755 GT 1 -142344618976765036494841452.0473182939913566713020304886893293 4.3364587576467971206786350508919094 0.0352046317200059643226207938419146 1.0358392537255549450107520861833505 LT 1 -4.0279445862729450534108778365558198 0.4604978235467388454712338739187198 0.0132975982654140645132394934101528 1.0133868030137531779658082691825826 GT 1 -3762563203769520571624557254257320335.3610817309342047709859444651351236 0.9523877846251725534346971314991290 0.0073646536974127613332314422904009 1.0073919066475911753283938826408155 GT 1 -896029902651526482327007358335646303.8122827783291098595583329410902497 0.1015711054195539305812016857768621 0.0812859472978163985565034997288068 1.0847803555310931359892998484715202 GT 1 -2931621295802291825888429773.0310355877077352863556760014700185 2.9978661862578908261397356774441449 0.0781120332951436344114016169063796 1.0813315739747224447269497594037315 LT 1 -3637088402384731070266554904228090653144461.8143481259507684713465234193022935 0.3468955769234526266844305968063099 0.0758105800307038144962020866690088 1.0788382283833040516473939992310386 GT 1 -198934996909743709017422501272331.2713629617834004904193640177971389 4.5919961651819394237747536508383650 0.0161047553472723019316868736747854 1.0162358462832641207691720245858312 LT 1 -291531.6830008862572311358943468489145215 0.7527926155275027812523140198668739 0.0604281789425488044595458990929625 1.0623310170074107985261703775943206 GT 1 -9089469570990.9152747139860850599476231753868645 1.0256566663644040687671061645271685 0.0955420554191222431021710811230140 1.1004194709923947288622488266002063 GT 1 -103756970262193659.7024104034395908473173762030137099 0.5125844664441400073022341614713782 0.0633848073104236400741625376013518 1.0654827612564448017246490195601448 GT 1 -2311739143004340623359814.7182508872892830954849538935516390 0.4636670742870096683910452866880107 0.0453418002896239410651448187737764 1.0464019086275013184987868756812856 GT 1 -520954522521819905936.8198667802938937584505165079731630 1.7065098807551292173805000388907044 0.0948746757079040715398948325651411 1.0996818649888955350463997909932548 GT 1 -79750732793470991234312708625485.4116425164269968855794626180916336 0.3519007725912630386718119445886793 0.0982827783133510090366851583055671 1.1034543095274111663248548285541734 GT 1 -1709996568033.6889778794713768762580549976800601 0.1319779915481568550455855860920745 0.0943571102689208613406954376385223 1.0991102120859237587924693560535718 GT 1 -171472.1501382952764610120172112688438899 3.1148596091971119557728695895543322 0.0918292975005698376258313465493552 1.0963229197029285022171840514625504 LT 1 -207547315.5898864679912848696375028500507360 2.2490831050066833481120401905714468 0.0251541404655652840616317629863365 1.0254759132674666484290106114858144 GT 1 -17661063118985146138602375352468834.5315212956009052099877117725649862 0.3675528205328246384087662979684217 0.0968090264882316555701082008766370 1.1018212600941348074258458476968277 GT 1 -64435828280.8435956992909292966608455236507856 0.7762887382477387196209110328297843 0.0232583883313576928058482957056820 1.0235331330862480036494595115063226 GT 1 -6419140822751754487596758252085557.4400314366973563067425750948543595 0.2448866699355436200427412774497885 0.0385459569550797892515351010191337 1.0393085122407913608584827259460147 GT 1 -392498996.7594575919230566835587449443308918 0.9073452883950006953178345213532926 0.0502608234833076191470824114534590 1.0515678831186464264751502750345712 GT 1 -136670313816272531285253007926675305.7229690265164256207451751372934893 2.9476026643077485895724548644095398 0.0921230054864611500249193962669445 1.0966463781549671553507068836889381 LT 1 -3947182737835014858061912408354.6014101536778039001019700188252736 0.1946872822806567847316380772205043 0.0347873390752501640339554010227462 1.0354068279066527509248871559010374 GT 1 -746081726.1769187124597361274161502163938625 0.8462482379116798041000996437685039 0.0903644117436451138063564940369476 1.0947112121392862289583152483807416 GT 1 -5687064683391688890871399.9578972208356081997727122439772392 0.4124410280577833609549195550888030 0.0899588821090130486841469277632459 1.0942654959964398422546413689156421 GT 1 -232821135469539623877144459761437421931.3109225189950187087909388404342220 2.2847654448751226327451731867666656 0.0482587803893364910153022501578527 1.0494621092827964828717290354915127 GT 1 -5604992211327845465414362185186831262245331.6034345893264111529724282281445284 1.4983045848044166289162829043220503 0.0158055299200588440323975815121146 1.0159317692614910506954659015079576 GT 1 -1963149647354706664658871065728421297712.3704733349165995686050007473537059 0.6431809560314571107565916730388879 0.0490581084143574036645416018360441 1.0503023207371804878859403792415117 GT 1 -3158367763719986284557547.5932124494480169664593885816955393 0.1059162715255215024571588256123450 0.0716813337222499709060320863648437 1.0743802147554147021227249880657871 GT 1 -297337186710555.7462980168722428182586476375800004 0.5580948069567461167876469748228245 0.0019537025241149918456762021709746 1.0019556134902699409330975277911071 GT 1 -412329307473832342874951747.1921023556579907393230331815767643 0.0598126551459614128514050392502405 0.0193658382380850409907049087208624 1.0195558127602400689424496562591869 GT 1 -215.4625300161339223720771477560040617 0.6038674358674477884861649488152398 0.0526342297589912496947539057694866 1.0540700193531256059785592038481441 GT 1 -766.3140501651958326110988329617704715 0.7565152307139447979883292556714722 0.0089947293976828220832144789178821 1.0090354261977580820622322159875491 GT 1 -856323333486034760140181.4187879805461142259735820892969677 2.3814142985554428650577766244357648 0.0299071997123436859987951380094274 1.0303635416611836816860925644666229 GT 1 -1760606065105115543.0488448410404664319202470870172617 0.6650452340540859981668838780174397 0.0851369252675750227597331734338297 1.0889808700057359374283387465094297 GT 1 -58096613062773869007601313182971353.7799908286208043075122233332421691 0.5999495661954512294425168870179625 0.0335970332322149461486191818773866 1.0341743818893026127053794960470959 GT 1 -260348.7235433406694821606632466817099354 0.3652795578007691886195073448220271 0.0076550047188592241927350571718201 1.0076844546566919569229863813059711 GT 1 -27026641375235220.3361028207221944631800262588748136 3.4966701622598858143170807639874659 0.0368662337688397010586421786109598 1.0375629710868446928275248644230704 LT 1 -4849463049153384008012895527969177636405892.1280645079235561069504730746888559 0.1870335047818376212466135851643284 0.0927698786583515341068525993576956 1.0973591440227510010822714809470732 GT 1 -73.7513345998163122539095750458168809 2.6010565482938331412565847643457831 0.0389968692458656057034750282126930 1.0397776122084785806046491269356838 GT 1 -3803115403804537862761775733.3065313046261264157834227086926535 3.2753114709633868846484305023397315 0.0931766448702480111969994602825485 1.0978076051337266371471773944767021 LT 1 -880031.5421366855350670970601728244634176 0.4297673832960142443646095739693499 0.0362342748987006665084069499551444 1.0369070376604880123766229160425497 GT 1 -407443140468686.5293579317669011435520186708529904 3.0173800476203710666252944108008133 0.0076783729719368273533864124216124 1.0077080034510496647915729754202084 GT 1 -2146798846857116863255.8382588277577729418692082996367420 0.6075782472900757210585890089921532 0.0740194786746050914373527073735817 1.0769020798429530331997782961008876 GT 1 -6798621636511769225.6749514552984219710448546650448652 0.0817189299779856164043847074586348 0.0843207237851014070264897767977029 1.0880891107561992906398894421842188 GT 1 -22540422789121365714069158206435253033.6850535699632021495195086009737637 0.0162395734895102267091389006639597 0.0341573497916238972179831490671351 1.0347543460203548628367960983236414 GT 1 -14252361458406806.1813502047862587295245023394617453 1.9381798801280747979751659444652848 0.0048079767608057173876132686783525 1.0048195722632727884446549428263888 GT 1 -1119866523905380984571683328586497858.1537539231923424612679143962182334 0.3390767775004949435649459624578425 0.0719046528666852204406602903419172 1.0746208067180902460586724972888543 GT 1 -34619633805000855480311465742106075285.7137557648719253606120880271708886 0.0792325078201934670957615178305620 0.0954667838147452107846336583285379 1.1003362515648452932777728572515453 GT 1 -339841.2008814643703766654964924253419268 0.3512224086312628569787360771983585 0.0279052832117376836650439228906620 1.0283020340137645614278574769201389 GT 1 -2400986982879274305690837019969034842280.0909722550407208945600053805359914 0.7474534621121047876267448046363270 0.0913797838704409430267095957814550 1.0958280761469723571579196028137322 GT 1 -8659411555428.0703633351372706258570339421242875 1.4136111731273764574052214563795037 0.0301281927201028640122174691117544 1.0305913736616779628766779393913434 GT 1 -21711757635540619001381596919155977252892430.5478838146399473986235655560863366 0.6627794844578360513898856577360857 0.0543092792596008691590307396038041 1.0558396970629498018240228007056216 GT 1 -2433959919.0854658663179094514892561225958129 1.6797105652835946213986816454494789 0.0162574010298081646936826136041135 1.0163910025619836125168961014187529 GT 1 -4365620857728307599935271.0459789620529220520406482641250883 0.2437311228334964923929157534447034 0.0360110297207322899473088265305919 1.0366754260560641581834754589144040 GT 1 -803753657430196681023.3978924850954550502161959913165670 4.0427142913762276141134459139546129 0.0441804268999002126665446019900691 1.0451861148095259357439450133750996 LT 1 -19392749959929686.0424498881998734073539643066158428 0.0299901214777032460622599805617098 0.0631987014745196940913323821600392 1.0652840805707682950399487756511517 GT 1 -40154164420785127511274699768.7677544740728733166401166640398334 1.1455741515523911680931844517781054 0.0528889086114269637193518745361785 1.0543388839237393999789118933158513 GT 1 -5748795146615124196.9969344161756902487917747319586240 2.4395762640011222967243860995192605 0.0230428427486681443394160461760269 1.0233124792300926385031467977931943 GT 1 -1049406345873162473346078411910601261535197.9081779969170552846345863378790075 3.0401449662537641520707306009955672 0.0740639905413305030590390969258548 1.0769501509800632331035102168478678 LT 1 -1441744084664278368480839595411119.3295939520496777978410115729812021 0.0567405915955813402409726356785120 0.0402537802123318752762182560848823 1.0410863838558812213668352268393454 GT 1 -364995626267664832439.5733401926956371763175240255787318 1.2756273846480985918992219510470375 0.0936208712379602154129299115501002 1.0982975960537110756188474120052084 GT 1 -9.4737860809373963996979663922403539 0.2177892129708980395508179834719441 0.0716363069287413617069504376818564 1.0743317123357189351022488464689640 GT 1 -25368120330209565104421912013.5579835067064859412965213067464798 0.5875619239673038235172917665085500 0.0607122434765465404760453109860288 1.0626333967483469431940729170588531 GT 1 -23463.3443099017365279891736916699326549 0.2726901697379364976498633251317015 0.0405791942854088887455217384121952 1.0414255039760911530587241576052690 GT 1 -680891762961734344290.6296246230108121196376754608487859 1.2311233344263564265929304826958074 0.0186497623501678421045548938956325 1.0188258620838459691041638963446012 GT 1 -2786496429941787396531135740.4436936229049450575043571588907730 1.5743992902494572633942252489452793 0.0742548228264018218198863580465167 1.0771562688443312312950043111307647 GT 1 -4993.7228405774733203695454747952102723 0.4256902499819752262488092616216524 0.0692179224559395434488936790023153 1.0717301026340275217590934057738582 GT 1 -23761234170060483528030428.2683087903952831618327851574259328 0.4071068938896916092366653063111232 0.0440318003676919368711761843336369 1.0450306304669356724669000630199543 GT 1 -294493808746554718290.8676787100850081905252368530019159 2.0953757393873673076595471224971662 0.0906599028823909857020435570021751 1.0950361105353683441385940963204112 GT 1 -28276925682652169261092736.5102371395689946243756982211464102 1.1961694574390063622989475677913451 0.0231300082180765418467217998400840 1.0234017045942804120314249625896054 GT 1 -10417293904938.9673989942419967393290849320229514 1.9647162940482779917574248584943315 0.0762783904412092543444222732550211 1.0793445410931952927852893447944857 GT 1 -641759520598141500016305902815927825772743.0061440949282837088595666441498679 0.5168356929322541906588396305040385 0.0766227523421733592060524410466347 1.0797174089595884908237077523298573 GT 1 -1345024950499603076811417676391818.8895223388030816072001886999603423 0.0651172989217890432914789437630426 0.0956736307108748751731924986766641 1.1005649557701825168758800413493920 GT 1 -102190869.7064114652547439013451946421646306 0.5326639918369892760065520122616839 0.0622960851194617658555222383044315 1.0643210355833614699908075274648155 GT 1 -62459147.6377879112395404850619651801366565 2.5075985880666336768474100037367501 0.0928601960810610296138205436408544 1.1022078012045082168454321283558665 LT 2 -6377106612334959.5008570761464867253085305755816319 1.0700363294550557159832840905535255 0.0436759874500627978735018734085644 1.0446584980914874115840595550499097 GT 1 -2311396305000895652.4837793643912817405928968184047539 0.0534548255392052408112916422016394 0.0906919379719813182417265715058772 1.0950713400979778545004659881758299 GT 1 -1217810648041825.6297271828815645953742272738965192 0.3584209676669936571587616035334218 0.0629915492744522061266778539681320 1.0650629778670448264654165197178991 GT 1 -293717418668661378368061.6354930022830344265587652226540572 0.1605571673058199913130980215499335 0.0841564794239342421330430955312212 1.0879097579663839346628342075394570 GT 1 -193163721682588756721707839252670.0875187186413921339873657487660333 2.8502366643359847411224157206119433 0.0513976606789048258429865923034191 1.0527655994642189631351746302235631 GT 1 -8342940182329628.5715174802439759502272601727725093 0.5494803404389274796843133870014873 0.0334604736641264579280543182887699 1.0340330848059150787899859515112253 GT 1 -258653706372840068622505558.2938539528843758500731733688804632 1.1108789937197205425560970689781397 0.0132241784956489992875405276371989 1.0133123965481186707263233107094166 GT 1 -14097955733062513352981631.6986211526786847996780091751793928 1.0349404785490459596333775450589104 0.0143253796537873691267776982685275 1.0144289784902392613414996018752061 GT 1 -737105265112682590362029014218422435673586.0465368061883210926835373507412900 0.3592210992376920496992240536137689 0.0530425353586026736692300702461806 1.0545011027061836916873033557173914 GT 1 -225791944321557739518830822.0940191236346551745510090908907333 0.4657134679543566978771645659266625 0.0936886221203318583718417072255226 1.0983723477911477220616790263673115 GT 1 -131.3177845978356633626978439742847421 0.2051875033659020150036090168154945 0.0684973780730106294674239927006294 1.0709562742080200878605395981553581 GT 1 -9459231551779170.2834112541612431414529901457401125 2.0442362784324207604987185143061676 0.0547370520652600537596916339437396 1.0562921384104483893741606351887420 GT 1 -20083484772519573816.3406928616303275522805538642282036 1.5441388956086722648999772498245492 0.0424067671020183639313225681126653 1.0433321914947741641382233240216134 GT 1 -6185498397175062719076250796708448837.2627600078344174704159367057239185 0.3700517724884996621769530699969256 0.0677195575494260736203115830022917 1.0701216056421251156866477602696719 GT 1 -140646618762987027740974.1724736645843109506995535462557051 0.9957610468485071218051670407618522 0.0343269310933372613101963846315612 1.0349299400374998951490353824978156 GT 1 -108853.8843904922990500875417222174425643 0.0344674654003119113979375070177671 0.0974942774735825824234219671430384 1.1025802480457105504779979720436759 GT 1 -20521630951672407109445617185.8430512754359320148953265494693092 0.5327305086237265564871700446840415 0.0908385718285676389363585916867068 1.0952326118242228179988109909467350 GT 1 -29677028594760550447.5421905306036954242545130007632850 0.0879882359759936335414895838392783 0.0770261835921087697482553249754188 1.0801544128037733500542326734147330 GT 1 -3167782866500072772275.9482976816628316607953794325147975 1.4214432533037016934864444432117664 0.0496411736908519860324045414394759 1.0509156537983683887247950947068871 GT 1 -1.3038097634078355381535815225308179 0.8218022848185229230693536175191560 0.0049441852671030037342124987991236 1.0049564481878799750855707628598115 GT 1 -3694.8436948989673380315858789954846291 0.3040514120219684998826598619243499 0.0598411100894468742356920439668577 1.0617063861826185045771799114130339 GT 1 -360598.1174899719148737144266193624455944 0.4813578197653935480587447178550433 0.0004579274232898683812519494358819 1.0004580323040721152202006288219293 GT 1 -337861827532237730609908082529065.1835702985917636068929492422672341 0.0392594912610983038280255296558760 0.0970310905548782852377550722119661 1.1020671564512192213221535947765012 GT 1 -7906391509887272536341913568806837946230829.5852250329737437037457815183164140 0.2605208620739487599929779644541341 0.0932938522666054615177913477382096 1.0979368640140873890874429013203580 GT 1 -428351525317632330502984383126371.8176105067370801813297916887547946 0.1425731706929454911988583151619794 0.0164225613996944694714893900359713 1.0165589064791096529396912180822843 GT 1 -245486666794249386069648795916956552.3661157826692789830299658018555451 0.1428611749351501438602699355262626 0.0182877040266287542540957282316126 1.0184569911778579138153617902836641 GT 1 -868909436321744227222762628350.8961841666794694957454394891471293 1.3539184151094468455016765360217686 0.0273818852937387757239095234880604 1.0277637561537534775563248616419097 GT 1 -304.4301495038113876294940331657155312 0.3642781659168040395979529270117554 0.0807343458603990696655112865342999 1.0841801296940781531393085495001977 GT 1 -62.3581693612432670390690777016008294 0.3186930913085023324225115314056296 0.0263365523154453772671363155296573 1.0266895713091676413534671181600063 GT 1 -31681125727412011318235054445.4836117724266505606292580384957746 0.7189230486540490629142142445778158 0.0354555168247880885851317351968697 1.0360993272486379962925816442399828 GT 1 -21794958493947.2513360279558571963152610602712672 0.1513112723415489959120061468039613 0.0939678459749714292929738117552936 1.0986804834750656835794358056236287 GT 1 -120127072989258664022890187.9655032098063505470145755786502366 2.0141087589334040058713989566468506 0.0968994632622775824391118403462763 1.1019213953974436332628025788129292 GT 1 -9982746808629527588015.0087963205925435716488714055727114 2.0901885081462535649948818025202649 0.0982334391805439678302511010510413 1.1033995941667320820281983470903187 GT 1 -24231121633430391137.1234069631965479544135473406546574 1.8392514773207817054273526917772275 0.0846012853028837593486126728203305 1.0883955548523769658283597942911764 GT 1 -98308038126.1789669941392405181915247443736241 0.0370916520057578950086361217012939 0.0360960583373501970230794800745871 1.0367636349147059926892245058741900 GT 1 -412397091203749186731208304.4722023938003841189928370192187520 0.2275478827255440096882413999879505 0.0057963779844723063667754556563817 1.0058132421824278847334151199654276 GT 1 -13144397191640576433951850006045884848.2124210944319744711456281173643047 0.4237268623632452134472758324972936 0.0728470307346590481678473508820837 1.0756367116411062307139467858960499 GT 1 -471508689261375821565809379281.3042906866333092444993998789067814 0.4351963587830113938508056020466188 0.0048600721070083291927565458480778 1.0048719206629303173194005103878655 GT 1 -697742559357541853992725093113637.8095430840995981614912943873200791 1.1619126436131797587531036864265646 0.0354886327892802107580725744943212 1.0361336611063008006541185481651270 GT 1 -19908108364116355365926821.7536708538927852468261164984552894 0.3848536090328720338770080532848390 0.0802671622412744588096617507097851 1.0836720448519936433084264532969266 GT 1 -123646664850929496226683647604898089.7447326247702564034569839269341420 1.8533483368913672115668471958018328 0.0067149552888897672972567134437990 1.0067376020393685493602175846210682 GT 1 -34451.7859727826348925786907266516906389 0.1640966880292314199964202705659487 0.0187652254464454540358646279561299 1.0189435263844422489256565923151490 GT 1 -7358996972535290745301420333343.7262658275452822849011574046743767 0.9420729125483952316329783645556586 0.0237800687262038483224831288275472 1.0240673785342850941967341021646832 GT 1 -239102955854077881632282.5588838746470704943204050705136654 2.2319074825897722866095862867005112 0.0237477627044802027826455232348232 1.0240342861069033854360639038746773 GT 1 -2897773713179459379208503.8064853857451715544238597854079139 0.6720876682113322843489277646730612 0.0705946083795379432440180267181985 1.0732102611640294657794699040826522 GT 1 -117418273268445275631850234392.6873272705280669904622571977519659 3.8297465893195509598467508681930767 0.0403314111047021107200503876193844 1.0411672740230940425029957607312178 LT 1 -8034640267010069008887078290159151705.1697963892224201532598818784248282 1.2016058160739272646246604805026141 0.0980563423231035815048635563496578 1.1032032246432982042258524580918434 GT 1 -683437326280698483075528002496009584957.3871766226357718968762667402305285 0.7344501083094589606099656849928180 0.0437606256628509568889296664339379 1.0447470057074165956250468847776733 GT 1 -1559152068108732064348.4760217072617287453967353934775697 0.8039970573606759250112718506990699 0.0780339426930678677577122982769090 1.0812468703039269119603275718922899 GT 1 -7538759608324431598.1982703533209258971376894918158506 0.3174957588923957378688408789550747 0.0455092547756733779784408565790667 1.0465773318043290346620335055534892 GT 1 -1821.2138492164080922151921041593134404 0.6438948864770524621841352293192377 0.0248795968102923918502596916581303 1.0251943251576257745628984995619962 GT 1 -1223.1179308770596856779924611386215932 3.1567095711756172565487697441688532 0.0052871952090852267815475942850491 1.0053012218887156829490328426653787 GT 1 -36443782051380093832.0965706589298328709431637399285525 0.0806316515118306756030535970169461 0.0939435770647920021363216563958057 1.0986536979078594832494777797034128 GT 1 -240636473651354099174798382919.4335312643301908420743048840331512 0.5931827549847329762808472865745929 0.0431396201634936130258698860829716 1.0440977917604551112961630507481406 GT 1 -13026009940232443511903783786547057463652977.9558613166148700358730001203839217 0.7511623357947601641945950799022107 0.0138606087146689437295007939262691 1.0139575638994269203967785001717176 GT 1 -2192379566326043334367112389399100118.3880987847820834994207280304220727 0.1414654002856742086466003777997285 0.0023066282687736204410952395552022 1.0023092926336802316902117484408214 GT 1 -54501846222892099109322369402055542.8994626100908627770787131639301964 2.4298809309796199012104631740740055 0.0488217441448652877430132591677595 1.0500537935649860967175758585882489 GT 1 -17283162783039637.7949593669769261159081234775434907 0.9341080592618961233990118018081392 0.0761082246594495041409689251276344 1.0791603404550838051014489500753886 GT 1 -87877989579437584651569344.5764532495467167401351096925061412 0.7967127024015827265437068646059159 0.0583237739036413685206152932320128 1.0600937725144801077675482443109292 GT 1 -760023.9527665592870711520763853984748747 1.0073276592869919278234358394488808 0.0711014502289451346129550895940643 1.0737557498224623394231351198813920 GT 1 -514631642051478665138062508535629871766.6594084236888982951850329099763116 0.6390809978993520116066755403402591 0.0383157949054373255707087194108713 1.0390691513410078606209027304711156 GT 1 -1676273475.4860014619686601859990933857629553 0.6907945213265126119087710285480024 0.0690989407926804399199353553034953 1.0716022810288657297577572914566096 GT 1 -10506062265310748.6928130514865826207186216851892640 0.5029830146098591857909680622036169 0.0031440405947105699962646079331745 1.0031489934744356324078423483899917 GT 1 -332625768121190.4033396786055951399612953217389011 2.0139127458565440174406609812132069 0.0107525515323500054982371552077568 1.0108107779793181072678985058673257 GT 1 -53979188.0495915885594576071504489147552810 1.8581826287619450785181685098169538 0.0215589332566683363438644987487298 1.0217947221219493783261653930543734 GT 1 -385471060836233024615743020171298620.1598003874148427864348805823504924 0.9844698275773287479182552194161489 0.0930789011804187992606661981070699 1.0976998240296014090040151089090719 GT 1 -10392509.3827970116055383722980402926474890 0.8935555767585338518466069680612498 0.0220501193150446086158500081376760 1.0222968570038783306249550793591784 GT 1 -1152.8614168860303549896916828091791668 2.7094168689049614042747478225448240 0.0289938933836931479624568784395220 1.0294225217133613827743299131533498 GT 1 -479358743832455114056197633499206.8659272120438777202417267360832186 3.3174378513823960933197744806160245 0.0201048738041910297920747311253334 1.0203097271298444957213550807371560 GT 1 -1.3492947281364558009886134133898901 1.5857680692761361007184600286926953 0.0418025702966903920099188541213788 1.0427014369586399396004116350830789 GT 1 -31450784009957493091442718841.0557080038179393093693473261827085 2.5874013418712517154666973427863836 0.0112084752372100750376123151462232 1.0112717635504865234146659559808814 GT 1 -8249339852102412399025317164552.5783489105828343633904240681052551 2.2682032003680459800552005047816090 0.0213531284206879870742364062288495 1.0215844047082971754769225142506960 GT 1 -89629414396695577.1653262901216052637934417884688701 3.0269008585507456064163377160287035 0.0618460767930385167270636731923156 1.0638412462028243746550712193017910 LT 1 -115818127608044592565448245595130428193330.4735856883006159883550622551814672 3.0005448753456871482282033338313093 0.0763107825594791149749329058361560 1.0793796086783796814209683773781383 LT 1 -61199029314636563.8700664452957842191454216218046696 0.6346936673458372592555397743622279 0.0155552566240471363698452777539255 1.0156775090642447809191866006956446 GT 1 -114089184706261925.8859834927466621355506807165534861 1.2293294684710664687828784193503073 0.0926609872408875619717992394034952 1.0972391249884267495604617473797822 GT 1 -114196229823014534242254727791465656.4606901580850384887531366522006262 0.0218096250039613305437808972911222 0.0938409136132882718303736459691797 1.0985403963153221028946403686982011 GT 1 -1088.9540542155185363818462250732264990 0.0017419446175703477927211877683206 0.0992627048378217878948307105646168 1.1045416341859319961387562283270484 GT 1 -53684824141708970918711869764747100494.2057758070745776095339353758175274 0.1686400530494677762840646263837530 0.0620887217979696577478980570965533 1.0640999205880236772883937089417489 GT 1 -92.5288728153295247438343724974811663 0.7054052179892097388752263238363997 0.0295686094089303586386076463358732 1.0300145737808130782922615115298963 GT 1 -1554493399642.7470438868081668041135048621175530 0.3485480341585093389956522700127518 0.0341613391386815702695075416104901 1.0347584764605416756072546070838061 GT 1 -1786131.7583310188896265343372246306311548 0.6488968571783635003645047516010336 0.0575694064726915752785542423955110 1.0592930031914214311814565533308577 GT 1 -993271293741100001.7331884122362347000527072021666619 0.3520310016788934586456709014536544 0.0822233034095321363770791679234110 1.0858011678531536112138440151446503 GT 1 -64934467384032287.7715401539804810923584780144661239 0.2306700418211545983445386087086273 0.0041547872184402506002184949773940 1.0041634423286017061693984773824602 GT 1 -18498873593535389.4908545955494799270989813445451759 3.2658968918630560157042316052000783 0.0929366917629041658800788152395672 1.0975430317029940195494833064375720 LT 1 -97002006451921585941.1631639384028148862453675072245320 0.0520830387875691430885077382014897 0.0044258558681561372647788262247340 1.0044356789626878252074942688206742 GT 1 -143050766798374980759.5593843572511879644622538245363112 1.9784838084869920391104974017154009 0.0357113747034640274577981046342745 1.0363646253493941910467773649137227 GT 1 -19119913102970098645990617824945314802623.8994128542969630329907598316474390 1.2655322038184826402120766223195628 0.0504099327420755665468781609042007 1.0517248956635361667028179920443136 GT 1 -4930412369025450735158807040698094907398461.8500477349287148814889480131149042 0.9343128441124719892449874204227955 0.0994881831497174761847741950852743 1.1047919919088807115879128278098049 GT 1 -76884471668466459526902671646251.4928880870790879997110063063499887 0.5313706116145686791393336649500566 0.0933625117007088940523463977436187 1.0980125909008968409301410287727832 GT 1 -4985473356.4321015419817234975939092937815584 4.9136215158363676908914486802342652 0.0165003251484698889286999593293883 1.0166379717565043655242561321777728 LT 1 -9033737049747131479151564062.9678709254177018197094321676927840 0.9246436791472661360450086727620356 0.0036602866891370137209833570236118 1.0036670019299394117492544300679957 GT 1 -166687059.6580094704344951685664738575271850 3.4597962236155473743591364878437084 0.0301699228795164333528882825534833 1.0306344010565117906391740532242952 GT 1 -3784312678187817811558815344119199209834306.0409892119158964275853599879692643 0.9471032124272738084694347199093923 0.0653651726633513977081960025890768 1.0675993849797163582045171384177152 GT 1 -56714558.6628452845885489842819506938194369 1.6998903668445988778372546410129017 0.0727403115597600930747912019503168 1.0755216140930245549339944315254028 GT 1 -795080.3859806928897553052100845542681435 1.5859543454714862280527928488644285 0.0631281433737032805116462190775446 1.0652087652996328116779961755645588 GT 1 -18708280337453934920207329306056186.8615368577860134123120693708544389 1.3766356930211974268875691994220983 0.0595336179156841549875274982620881 1.0613793756068468509926846213295950 GT 1 -1236448246838.0481915977484248120331414014993417 0.4607721246569738261406639382575497 0.0275344245667558222060632912193375 1.0279206021281483581663119970024754 GT 1 -90256089611789298620699.1314044539662360706704198831288678 0.7781816593669558071449618665808962 0.0301831481458268144382018088530603 1.0306480378335076712485624517939366 GT 1 -11212267174058357685267603605.1527834928413250467957412184987836 1.2919635222318466586048392331552378 0.0913794734263199604394928289571194 1.0958277344815961772373270933669565 GT 1 -470433592925.2903677199423747795458592813238593 1.5908884498060264686906218425994199 0.0471671603708430385937877480261390 1.0483157950896221414596165746764445 GT 1 -50411187447679952.6926159853589550917569813158185529 1.1580775660078863144468057845231455 0.0325798414288235871357579491701486 1.0331223809240911860787775589971061 GT 1 -61836892726621901290.2769697216015586975342942918544780 1.0376633676087911360707794915574856 0.0558439521123666559265398428772024 1.0574638215322834138938273720554803 GT 1 -2567.0916943794591273202114946799487344 2.3173998313114375128312675167182265 0.0797045033448983935856645592232285 1.0830604684937494487473612761686458 GT 1 -161983683471702645998983659809452275191498.3119245245919421858792307912615539 2.0722965430224825965939857711251805 0.0349416663034061879318792658224335 1.0355667300436219972312991236479121 GT 1 -3807686959928701041.7460453034019188680683802089258338 0.8496099925810582252682411132050703 0.0804924340778242056714707353594236 1.0839170066712592314653386885325246 GT 1 -5.2823416759949591609083132479836323 2.3072125045658772110357754071383061 0.0037384757077076507391121844686940 1.0037454812735584280437247197277760 GT 1 -507.2696156772787454586361807448125191 0.1023551049661114669430371961789105 0.0126490308543449589686312123241165 1.0127297109168805357736480033694899 GT 1 -48691180614192930079508199854167875.7794599398387059168745091662999461 2.0889549465753393819115796377206516 0.0289795078206525837437495387687211 1.0294077067123209762964872889970370 GT 1 -1071587064.7886370915161660797924322445431026 0.4057757874228404009601652924042276 0.0632339627524645635957443669671116 1.0653217213614415422437000268339855 GT 1 -2324923857472466012768046898285372681753946.8934476080267192501144882004547472 0.6276338984778401337255822985770630 0.0884844879908680326461564437256418 1.0926466668961775133380671308700038 GT 1 -7624841.8969422584743257528226390806904308 1.5337036456231765130518039861996362 0.0552646272961932721584405067372859 1.0568504195886642175165789051235422 GT 1 -1026441237233130517115704830721208751.1900842485824578162979452175705805 1.8646175217090723661225636770885481 0.0817635829870439276716389752290801 1.0853003866455581976466764055421684 GT 1 -155789371267633032.0845966635476516551971381849138206 0.3328845380163271619304461068669967 0.0990950277662785938002894123536583 1.1043554961550234674444486806130475 GT 1 -553759246299823.7593553512507681379976351531447751 0.6485424429629676385377885927775605 0.0169012469553495073964178464572035 1.0170457030012229709704279534295438 GT 1 -471139084982129644.3959069813845037535516513643577020 0.2625739003819934193301764727296663 0.0328194218547835202028102939595135 1.0333700603781901557834962834541273 GT 1 -85569057535628104014245533267014904.5371180112389309994101759757576133 0.1681632888624937973761574533315276 0.0109239471371165061372804339023296 1.0109840515668583205017822998589160 GT 1 -6868460450946969796247634161372.2191409060949627127205249936008592 0.4132900787429445475522432193458406 0.0250773780846320684726449929390711 1.0253971732717151555730866325989689 GT 1 -275.4601077876338188541645494187013964 4.3425697153176372379754597855474066 0.0814330097323596687357785213573090 1.0849404425634174118957430755293058 LT 1 -1045528280028673009278713894.1446118718375047036608100332450485 0.3555316058481338642008389948252151 0.0930185461946591785929784469967664 1.0976332769202271443555365601536141 GT 1 -908.2922930880549698959589954081581986 6.2606358538770750242189179988999328 0.0582313591644256981368504635263063 1.0599956387799467731957193669243570 LT 1 -5647444990.0598922367263886203909517464083418 1.3820143564006116574599398308741248 0.0827616164146914318463858571473130 1.0863878802201710531633274531580163 GT 1 -48177709722530562665597044793152594693.0664753033229948737213897903484114 0.2012477416208987743056548104438672 0.0547737088698654139528137572022098 1.0563309186413563276993903692121011 GT 1 -70101858086625434868826346.8654488767023773130140773797452100 2.1205000469570935938976611720578412 0.0888374857641726359985052697777343 1.0930340065937380926012766800955828 GT 1 -84387616258081465027912.3204149253771805316514731602164114 2.0631644416401500802839443829812091 0.0913946339553491329106327107996065 1.0958444198360049021836503290340045 GT 1 -8257305440518.8311430336167804336993993294319314 1.4530339126454804608276566588593646 0.0201765404262372540266568845627544 1.0203828668373500292217659559115249 GT 1 -10015.4293869037194831578956828934239890 1.0566871962809956888396560264695237 0.0032888435448015019973057187766202 1.0032942636779753648945742209346814 GT 1 -3839973696898551598521597724816053455831.2979421078382474274195954607108196 0.8107333934363704314410813413541899 0.0595825885855496866254900487880800 1.0614314475849731584073081764282102 GT 1 -176476.7178659508131313635984828343340267 1.6275379074706889352716698591965464 0.0294438471181604532329985374075434 1.0298860183025862593447103155901511 GT 1 -49860742480325217688727.5735082865928346904349921517433213 1.8566837956074771836434512149739516 0.0750909383635248294441333039155258 1.0780598580469793216850505918815552 GT 1 -632624608971708518313514.8454071254599312636001151171821414 0.9245095943745806619269205037509301 0.0345040045234109849085300095834701 1.0351133247383381122548298714397642 GT 1 -109593011679700343952510527530798273423.0300753330391420817640554034125244 1.1994097226549625860214840512004580 0.0661561304647798856798763128094054 1.0684460179651481892046705703970118 GT 1 -3432.9638417393347829781367958380689540 1.2686481069528780146074788761725242 0.0754571434022880011403859628617987 1.0784558727148261479411873366741687 GT 1 -3245579506271441013760048828652001.6234297482215516128789780209846633 0.6327709087194254570112629440596880 0.0973314503821005939416472489704097 1.1023998476329236322094727149474180 GT 1 -130621419974515989083580232482093591.4338823440061255264252100347421744 2.2569230078049741819768890071522927 0.0651402527518401187575233732502118 1.0673587638881612339993998411603900 GT 1 -9791371947952258609770850033.9483812471589174488420340643253702 0.1605812967466383208777866148848985 0.0943156461783553430224983950983785 1.0990644289832620512667411615394126 GT 1 -247.8433072862017722807178886890274740 1.7720816255229116708265235269491900 0.0535121289874958147135594256976426 1.0549971229816874990617024211773974 GT 1 -7299479373887503084.6143004001692826849038179554938500 1.5448963855761091489261963074401779 0.0633546559152141478747689590915128 1.0654505699038590959444531967525985 GT 1 -587262401080023885.5245993300223345407662767761999907 0.5098032726962195038718504014903581 0.0322939034301142915504123403170410 1.0328268570532009432038007580105902 GT 1 -397728103423014632267990919.5033120313228815621308402284643742 1.3382713806193532626536929744127473 0.0252843107596393733115128905137648 1.0256094512871812169452618180395427 GT 1 -42424982881686873793390853843114690552.5905546648505184194931403745383084 0.7850508182827868371924303281784444 0.0957792336332239219688324496235949 1.1006817378217940898211475979031781 GT 1 -181460820448673988863109162028412388495865.9121782158236440097473012632363840 1.1299365144954881951790358804983136 0.0791393195374917486808111467310784 1.0824465240253945156240810758431204 GT 1 -3110886270693.4360215332637114437266897042901044 0.1189933934498431220512425786062240 0.0338771436446889544158922541249205 1.0344642723643317690629880862369309 GT 1 -91468930310030838502540441044.5444498532225141079406989334360423 2.1270542340340834911225284547194669 0.0272821109037149550662935911490160 1.0276611781004852715408656786667889 GT 1 -66856061468097592495027071118.2729539054635432142565185428110185 1.2048858725567390091784535977645698 0.0292760342733794582343859241408994 1.0297131294509564518379134732056750 GT 1 -26187030573741571.0529664868396116719840371103150373 0.0764928174980175679425493239293375 0.0578581829399735474457893298181429 1.0595994668411276583498823897544788 GT 1 -4141865617537.3547130120323829600120521977425214 0.3792752816811626702601693554258405 0.0206601315320760433870928519539010 1.0208765378945186501002119136813454 GT 1 -3195356817826101744015.4338401768538909947531297716650448 0.9442133992169240064859528869305978 0.0307135678598863351714654743868001 1.0311951151673113642451991346214813 GT 1 -257635199.2370387673512390732923982942387031 1.1064990937614276287427610706619652 0.0007394630668712843296812052010704 1.0007397366045405663912681042897631 GT 1 -155549985439201105997386789461174084948519.4586759835830668290419098749615819 0.3640236637717785285371095385014759 0.0392651652423341213440509328480155 1.0400568344573247759393989113688231 GT 1 -493561198930433.2717857781939761255096717141085277 0.4139943879312495081723964814143416 0.0202865104596264835023100603063357 1.0204951076742011993678315827416010 GT 1 -18926228203489691166984905455386.9020121506914425398084229769338581 0.8500130205406662694214074983985665 0.0352915180721481830637306210423832 1.0359293145483841784859130628298814 GT 1 -13245457442114.3145252146277098058317707344932461 2.5713318444676740943172991746584851 0.0813921887431623748190488659450535 1.0884996694112913922844027036056431 LT 2 -4362875683992839523.1970140323182075942313096666881479 0.0804410629241816929041409266847086 0.0591023409197097541811190668017843 1.0609209029305413494695910108819120 GT 1 -5472263076457803614363554147911305339.2937937410120655466837893727251867 0.1915103440555616875204994335843884 0.0922482996060135772823185777800120 1.0967843954930966351235174013339297 GT 1 -174.1298876893225066898351270933053436 0.1219910799863004580851500623476541 0.0083924944930735237262199664717554 1.0084279097624875539220421395299233 GT 1 -9902465130497063352620065.6532323272093948990091645883351453 0.2000725784625664496319429927605689 0.0665301606173331712931238116401549 1.0688466256999591453339485333021468 GT 1 -570797225677757655375.3555405964386343702105794701136240 0.1450211907657620824883208200606491 0.0696702525461648381254995005904538 1.0722161885242530233352998509778959 GT 1 -4544368000525530559671618639692813501079799.6249876272440347719612595495388364 0.7355174872554223744760506534763322 0.0171394118143138505977544342636319 1.0172879916947219866828542232633078 GT 1 -3127738763550839317819174949605133334093.7256529574344574829888632518057847 0.4810911494894849228984638123621474 0.0529161971285102339307134606706815 1.0543676967108162207042797407602825 GT 1 -3916543284535485003378.8142918103592974425234698628957749 2.3911721300559184635953891332441509 0.0170954474322073564401002909979871 1.0172432616492019274239848203867527 GT 1 -28846854.2544283949039696008349912246598833 1.5600087648627128635779862282166127 0.0869878439601375276873244332843070 1.0910060840838410369885207693483021 GT 1 -557217543654635969798701624077603152906.6262676863409044452900444103536101 0.8036790796605118720964776312897418 0.0307133898342425887181716593488133 1.0311949315006247227163928938842178 GT 1 -6137908089072236535040925238849378805.8607978441298443969431011169876194 0.5053888488475090710844280824886634 0.0455807342855867532880131325510399 1.0466522221967908900735879210282750 GT 1 -396432935140021571947804902358802679765168.5678213401780584765316491544459905 1.9706571331354898695938270396640979 0.0213371743004499040249719221536984 1.0215681026174623765731559413744837 GT 1 -37758850765941934627241568167998416063500.3305454350778787154008515457596750 0.0068423481140393156058356025515354 0.0392676278356047539224683535243895 1.0400593976998945814149833842822545 GT 1 -102859175412180462212467.4148299821179005153876932018960044 0.1777555944889237866171330621631470 0.0727814356498907045161359224642807 1.0755659652091139184928180961010440 GT 1 -2.2314836965408826739440879804650714 0.7814150659917932484432230264241976 0.0259317821191103647009772320441704 1.0262739389001268216006226111672742 GT 1 -46055541587682374589465.5418228398768249787651522962450068 1.3354701697150445248538860708232912 0.0997634182800376419199485642182627 1.1050976816239813918525976162860453 GT 1 -135675585695583077802814960.5563595313547012769886537665731277 1.0131691077625119945337358284076865 0.0242378740805386210698464647878760 1.0245364457176044559939806219573292 GT 1 -27898981530.0319886730394750980295097296801923 0.1961409412795045113984864398197260 0.0633549559077804238830770125282527 1.0654508901879625850452151753013281 GT 1 -6731.0059361825228436722956748251349682 0.4024572555938446519666196943824608 0.0688578489116388162178006300263546 1.0713433269067961499465651845957586 GT 1 -31463541543.7938163341873407062271925731443783 0.0645135681024668894436545796789158 0.0993494433506189552275836139720569 1.1046379360598199252032130595087478 GT 1 -1087451742940539836207671.1297574870170067437031129064975099 1.0818772585815552220645919640010029 0.0218159759654644750202232841122192 1.0220574630133816225696760737646788 GT 1 -7759180378096.4902808488338313582441027061885012 0.5528287763422112897990067621963192 0.0683495709372990406789514528780368 1.0707976107681667158985507682880805 GT 1 -2678.0146571607129788032860053060942038 0.3992849159289722373942306442025113 0.0710306308805390535102987226098865 1.0736795125962092762355357479808213 GT 1 -7186484290122.7610202449619245130191113839012327 0.0330053730846812165481364909100934 0.0976801262357615116476737035812503 1.1027861945518081749072043328185988 GT 1 -16420267176154898902922.8431899247352957569675413879247899 1.4672064081726024530747730059733213 0.0382619225875715158497328564211554 1.0390131341903594031979346879214159 GT 1 -2390273872669.5660450811857237786160230082238019 0.8679686379393264869203182457291554 0.0937013542198693540302774614183440 1.0983863961516571690621629965874263 GT 1 -100776007.4565221263002625885792487299068307 1.1478472419265967739281515139233008 0.0798646754952792011960543838023882 1.0832345279030395615341471881304413 GT 1 -53196087345927352376.5157525253975769207346060218439782 1.2405536425978251167195453978676187 0.0671762399574992557536733412868816 1.0695389919666327194908122605565826 GT 1 -16161723335766489609926895132187.0307146412928767126516995835268378 0.0224965147159315744452947804565607 0.0698075415547946274806188790006132 1.0723637696801711602494877454886700 GT 1 -102295313602.7803087419635444261254546345290476 2.0492015154416935807202034847063797 0.0063153623215135041164354478104566 1.0063353885820572792365348562362157 GT 1 -114573324427593260102096336072101.0875520391799165544326064940987819 0.5738542774137466963700776149234153 0.0149296761263613227643529315038973 1.0150422455629630285000214751410981 GT 1 -541667514206413705639217743.7534473008009212872564292493304599 0.2075393319872857508866559669116615 0.0590037452898043387356796973784472 1.0608161195213670917803815410748049 GT 1 -539754284474658644248394274271000287943391.0562537854138928331022893133349033 0.5692326972520512899812470417265382 0.0417913351764868697471736492046595 1.0426897117609005481187772525978841 GT 1 -18847.0537990082795456031938456234326258 0.5561062941286465463494868920344212 0.0152481382934892068781523742369830 1.0153655865957057147389588722701434 GT 1 -7978725353.7659306228290432264586077641712602 0.6505445781324590595173215312095898 0.0496343603537184489607506066323188 1.0509084845981443663322973892459493 GT 1 -38748510.5094988784982721559862183262647214 0.4342328540392989504343709018743605 0.0861352347787231830978527674133256 1.0900726777515430089082129716223980 GT 1 -24506004596477127637619604990.6977833295085786751106507019671020 0.3958666086304333708263328861818948 0.0400269379661114218288068003503047 1.0408500552953210600935518710251440 GT 1 -38020848601392.9001771947974620050615723315694374 0.3468761685873644604066325305532879 0.0120001899618418285361904572687354 1.0120727735033583975131971432233907 GT 1 -2886077089045445685907.8424366582595676905488895095438958 0.0144233069672655253356095657696116 0.0872405605630838527094144679822136 1.0912829167448226756293378874834074 GT 1 -121.5973022419600599685064767540009068 0.6612549451781605018948140535516555 0.0162104699600226257405966706128218 1.0163432970438856186709953545290591 GT 1 -136184551766557.8153151474907098864563271849553714 1.8169352190010679770463908868201663 0.0269301973837260901836157559106318 1.0272994597842221365515615901442192 GT 1 -7912.6581732784933791453478086417881212 2.1290243627699726407326156593084121 0.0997303395811655890389035074872661 1.1050609378481459015076602608152753 GT 1 -93662636961298.7199280726999016069479247072851150 2.2418056814184991026470221068253278 0.0330571694565303646427890373252729 1.0336159057072692227566479966393394 GT 1 -112108401973421477379444443953195700334.1012944336138905440398190210259900 0.4808326393805545416663419784042451 0.0323217166154151832473861263819583 1.0328555988221134944944967449209068 GT 1 -777697578091229.8485489010164273162882480783544513 0.5110217251834773933069155379452659 0.0363586770605560343513805522999575 1.0370361252469992008075208127276673 GT 1 -488409751079922277715833048247613.1004944721632046471485602068204863 2.1389166758916592503230081861928327 0.0506678077930767994968700995091653 1.0519964971483269525254236937616070 GT 1 -218.0897881045645183090488690553802170 1.0506402973382035027886690832723500 0.0562376937176892376896460659373649 1.0578809387345837389059913308232528 GT 1 -68480103502630295564850561626472545830899.2102282106946170106458837924418456 0.7947057855707776915227413892391629 0.0508490518278340290213213343637167 1.0521874327763058919018343639361534 GT 1 -958448.4554069083998179244363297459359487 1.4544887662040760112525847105265826 0.0145339392223147812184847929742849 1.0146405915641338884451786621649369 GT 1 -84.3353427038455381694459230184478872 2.8810571531932297192580334477148006 0.0118178476458193502945013579065230 1.0118882334964055867072676764087875 GT 1 -1738030827304.3129073122900119345051332018278310 1.0296795112062610644731429084472182 0.0145843135143916075574085777375501 1.0146917100974073778239924145926880 GT 1 -8403207847611316621694109649123.9960101795035993733214062488341918 0.3950031092153978258218446655266122 0.0102325959337501256513082392694649 1.0102853088451191191382335109384941 GT 1 -925938282430363940337710377496023810987.0505718826816452800406143119528216 1.7896177708043505267277480440312075 0.0780288838873260884989655648879222 1.0812413833428582652144692558726831 GT 1 -4219897551845369791374889136671201.4753026571966885313748834944923749 2.0263484457050082547881159324568141 0.0926223177995194594849420021973758 1.0971965073815227514388361143312801 GT 1 -2115085679779470652790708.4546674298116760795183186786615314 1.5581164982699689256857251663062000 0.0798395645534248793483183987308344 1.0832072377876110014353161199923968 GT 1 -68355457976618716716570069910.6390713703358015842406775046086612 0.7097975541121664244962659826118280 0.0121434776787893607862639473888702 1.0122178121024225492831192204066985 GT 1 -3757.9822592690295969442108651028629247 4.6592152815582233265960622270958312 0.0652587150831022048422298770654774 1.0674854886057695000356467296320895 LT 1 -1137.6832035152803397557199332485281811 0.1375415403371545529108812859041000 0.0070574811918135270266801901192708 1.0070825030090362282771020565728613 GT 1 -202671044189963520481335241502828220.2426388583472577010955397346063548 1.4676657584301154247264122079068669 0.0739869091243781848679360156017765 1.0768669074211739357305029922874261 GT 1 -4753383227383625186126372834366093105494.8070648500113890863297510986831199 0.1595751025988693730133377819641765 0.0541221424404058838047946518624703 1.0556418328967204092891028174543443 GT 1 -3832225312310838776569.7217848151826997434432946597271200 1.6626178831214774350648388520631637 0.0380955241663024654693551078814184 1.0388401307169196177905746181135486 GT 1 -46983785973067708262910857030491168449.9808852125656566772324291654006279 0.2442840428000385219841040639967197 0.0280399858033949371342660847826553 1.0284406130256883493375044018303147 GT 1 -19174.7879629583020655092366693145371774 1.8180285274484950685693705805468796 0.0309329011791073006227306267831289 1.0314214240595270507194086594291331 GT 1 -38346757378700.0867105522762971157917835040466157 0.0028181772260037136830093360199286 0.0335088309042597877003636733448203 1.0340831173690375386251041751049647 GT 1 -723383312500094109172251045389.7334126615835710737147995907665069 0.3199273747005247153957897591546121 0.0462603898863865749294407169599834 1.0473645901637892922183542730777334 GT 1 -60955546369755365427260.3916975822171565061900325188546604 0.3039490264026457633395512874424457 0.0500354901403778632988231051495916 1.0513306531278825969924275740540882 GT 1 -3654312455652786857815331462783245.5311057037820627666848460664633473 1.4164298401362930306799027028344284 0.0945619247159598315113509474421028 1.0993363913146479722695333665342837 GT 1 -12857347416017566423800405368344.0540900799815108248835336857457709 0.0437353506891880407466386836206618 0.0750556515147058165792546708567750 1.0780217070793078130053867223417317 GT 1 -11199914033753539.9823147278749803902549437785578966 0.3883250543539101966041850077168233 0.0013794877618065514007883755180217 1.0013804401310042337242357293359509 GT 1 -4059204376319534135370970741.1964169875259186076091799496595745 1.1992845541381967159123146882371280 0.0924266550370339417277331248476024 1.0969808952131334776928360472663599 GT 1 -3724990052995006985785521298123.5968316190484198502782225725096966 0.1962904319762751966372158477221084 0.0624407645265295458310137498686186 1.0644753386285927793650027258698097 GT 1 -120.6543067450946025084013256052059587 4.6388902448686291665800051672050623 0.0771746173361070880263100006293579 1.0803152469231000152372184343358992 LT 1 -688781959263998936.7393906175027408393653241666906812 0.2772940964056491214846044256011381 0.0739814644274704936628101882368064 1.0768610277193049684100554972412373 GT 1 -11689137.5039067125707573654023903302437694 1.1927164975957294818739593947437423 0.0022417713959954490672772546866928 1.0022442879271866099851003686808056 GT 1 -11021030030877414947158978853955349228829068.7251355734324950594285346750030105 0.3235075020273558350059640015219817 0.0484917009471334469614331574162961 1.0497068702105421303344127268210941 GT 1 -245960792995392556451487361390.1788807961371972466526272807834119 0.7925356772482000268287109979999910 0.0714803303898275079195996118477493 1.0741637141270910491051683935889921 GT 1 -45023396386703676955042186.7159288018363159050240360327971801 0.0545081518400402869212061408358403 0.0931301020189478411654078307005297 1.0977562812935672744658389069732039 GT 1 -93078.5723530198479239265504854357758691 3.1964792559790971760244815223318234 0.0249973355810382447944555669132053 1.0253150752506271234350742683977160 GT 1 -1651210954752625.8509806299419481090517879224063964 0.7257736364211515327517129338215814 0.0212043875318362159703982744433932 1.0214324299858210446337859697627165 GT 1 -6739127599170970525074533499823767.4636163771622310638769421924379654 0.1973279373129326354928084361682350 0.0706861927470717929742874208361628 1.0733088068374840441185997466409557 GT 1 -31275.7811671461631981422412900469649384 0.8651362608500723594398293782185946 0.0876957657933312454176271206587347 1.0917817543977337275926140683694247 GT 1 -11874710060786.4841410748781299004321917591684166 0.4667679785780715337007109491721937 0.0367086472406353428411722886546975 1.0373993659438236746374945031163401 GT 1 -207212832895832775132863032340856000.0741787134029218898145259462376762 0.2830279394669954222885491329381577 0.0869109994244009134530172343465027 1.0909219216753089716930516192965674 GT 1 -153980436477444862717553371.4506962570526003128109102092503124 0.2801438564085201311536836218833495 0.0775921854036390052621425297741358 1.0807678380376320449520608189529597 GT 1 -10882.9603257953450301134304215766702976 0.5359692139590799068881695804306121 0.0258573466351745903378006792962798 1.0261975247038294782081046755681464 GT 1 -466237106960722.0243617502790033586318960416709735 0.1130403446113586857093738277178787 0.0610136627494865331810252605714450 1.0629543501986730563406756031505937 GT 1 -1596437717670499424161555.4326051653956313461596941556984954 0.3278251447694641018793667095172029 0.0875206783965334244421795467056996 1.0915898550387356205436796703168526 GT 1 -1773870340651630774.1166552428315907005201011051714081 0.7367266717751078348291405112069695 0.0759859564434251941238354166031972 1.0790280088016495307091770156543917 GT 1 -2877512323453409964044527180480378.8421678528815237336510099955873247 0.0236961136276216437108646569358455 0.0361692173903328291560696038079461 1.0368395364919267599512029030042758 GT 1 -3906634106283095.4965957778423034402894739418917454 0.3131015427033898029793787835042533 0.0563637403441612998390723379547284 1.0580145052519417712748336132004528 GT 1 -15928439142680766954.6504695995051094844848432146913159 0.3694555026517416573146675822013755 0.0710781689913744930109442369357360 1.0737306868639409244163274194820223 GT 1 -192623576730.7451072651411713045969141802020629 1.8770847918700746924132831703800614 0.0492182859437085657791053817647164 1.0504707758473287105557385484816793 GT 1 -5569593142530989980134638528.6067764989358635465718400850180374 0.0867479227945587068550482907419149 0.0552568995314999188167182460863496 1.0568422398027570279686870340963216 GT 1 -29077066910255858656947559.8784829777917075429589022284092333 2.4342790399421441925569046507594986 0.0509309898105072609299907698964772 1.0522737641652086227591018306223426 GT 1 -8546220552093532168390551739379.7652419760540584240801571054989763 0.1650445724851255658883327269939713 0.0860560348928510477106926131653166 1.0899860167299519025620173363543224 GT 1 -523731907635510242.0703979596071606307827448012636491 0.1658491530920850134069664081085596 0.0715662993265573685134951941000443 1.0742563055062468426065050077182667 GT 1 -371557649571009.0560017652059899828259494726408580 0.4324468211288013857874898288222527 0.0087536518810824880554421929701299 1.0087921901569728634244489514529307 GT 1 -111655112.7204096183793045800932187572245212 1.7838899989796141226670021918919166 0.0214668226324268426926975506478984 1.0217005863666253611287161368741260 GT 1 -91023618432710701026468.3924839853388093042723410377162400 1.2629587409365055041427712970688973 0.0386792113818335731665189943028342 1.0394471186181713518613828203087583 GT 1 -14241487953069104652683810618733229.2380914607327758301002300640604270 3.9558519480806167872809929763721765 0.0060263401142827266724595198012499 1.0060445717856069508588525179886285 GT 1 -2439164027813977206097313798.0102642056100210425065550214957636 1.0077926447088026739240953596768349 0.0793576414013453675206203434337395 1.0826836367102454795308434581620694 GT 1 -568334385217405098198854759862.6752604289012903657333383989376234 0.4999105423840151282620532424709191 0.0564208380222742708614960674006310 1.0580750152260293815552141130915579 GT 1 -158181129943859947678928923928549805.6208941684807508262436372477245910 1.6111115542031978942317293713237970 0.0426926228076791963285715233896177 1.0436307508103625882487826705851016 GT 1 -65595386558602338862158303184682735.1326080099088184128986280505847381 4.8673935528032241190852366022164750 0.0763464070188899773955429515109778 1.0794181770038840826499797119154305 LT 1 -3041679232334567994.3042991849656580554400674824087589 0.6412113775033444049611518200382287 0.0938920062322206045415945887772659 1.0985967816235422508572951008510086 GT 1 -293.1396969825346834276735956349838423 0.2354391038927473716313631578149096 0.0815839256057541675668888448618241 1.0851047509630289264800350066946768 GT 1 -118949645973.0036565899473453297259411576807114 2.6925362276393838705137841644454691 0.0561752642178848005503910579861819 1.0578147913215786971098776015735208 GT 1 -2399103404254091.6061075678816650814501483371689909 1.5682932423574942491778629501914485 0.0507829794833876515916033550321122 1.0521178231478641586367670656727213 GT 1 -114626529910730.4569369631607696207803408886686021 0.8525023508942438092196376734689888 0.0852195908543904565650447640740165 1.0890712325136235058010605793234298 GT 1 -10446272130007607575025129667226178.4613329725737380660563527156235654 0.2544863895871834573914315099030668 0.0171455924219629406529422754884518 1.0172942801013958230609696036874921 GT 1 -13388590813067281.9192819355287128157454277043650102 0.3245985548302400662255927113498876 0.0955175120973645596271052042900080 1.1003923354147731996549531515715776 GT 1 -112491015972533353446567080827187889761917.8195218460409965917839396327125664 0.5989633207081497157977630193601254 0.0807273769460691495051987377352285 1.0841725487647971034627816836686447 GT 1 -1318022652370833.4621518476182967928639224330578986 0.0583556645023788564252391878882304 0.0568660297251898120883568220064549 1.0585469382794789191233069493722315 GT 1 -329278754.6870575148220084454580492823543118 0.7344535552244562889903311407507509 0.0211074768678016360129779988209668 1.0213334247741620174565213195352655 GT 1 -5727735702234568.4522078969674331092819834003037277 0.3502574124119141306040007409885252 0.0456683318851856099704606323419110 1.0467440074560490173436732101834449 GT 1 -409153912983371107.1236639507375671335838269258756559 0.2731006562824062725474082368919941 0.0653984996245372011976824509593813 1.0676350433506727219756664812549244 GT 1 -14673634041670504507928477.3395497819874720600042341725891497 1.7076835095162677680096862146451741 0.0823334700767872439814517063222676 1.0859212115197688506460835623276858 GT 1 -24868402327220278263998766412.7783096505668842493293227783616272 2.0239213385022347096361591170965585 0.0411974787809710961568301184977992 1.0420701468685973026036355927936767 GT 1 -50468865619423661104850325667796.4666989633567984030205360095264551 1.2257346335649634898139985304628818 0.0621401649014262912031105662663625 1.0641547706740547086531724536359949 GT 1 -4093.7275476156031031654690944082195063 0.4085780666898198390836651432838749 0.0660439086911283948611908200079714 1.0683258533049713983534504437556005 GT 1 -30476471903249.4724370066192533761275406676104626 0.7914191222506927071347689476803481 0.0221453271785733531960483463229391 1.0223942162859530758637983593891613 GT 1 -33137169347274627758458723568.6846720346729133755038445095767228 0.9458109197576622238234414590388441 0.0893748117373910408487559521397883 1.0936238952926930320368508979876169 GT 1 -860808951346976364722298944591235986231.1255256419280124714987280901096909 0.4797298827976819456765962831559503 0.0043624723403419151572158668707640 1.0043720156879756962653854459322647 GT 1 -1022468508674120561196946292956089600790.8472626827048708945551489878259230 1.3151102104233942433840426490349530 0.0697277252029439047398524807189845 1.0722779670842137583418699045866166 GT 1 -112057834109244270.3621447377408404851587837915592482 0.1676811558159487426957537907022409 0.0297981968142183787562421346519970 1.0302511846015445458110670951942877 GT 1 -57383153.6081716665242780819494301508414054 0.1139710064983869522811543725019002 0.0828149345194491326605593182811393 1.0864460108604001302170919052268644 GT 1 -69071246.9485847503702603739093263343123353 0.4628817193858926260554754386679667 0.0616812380590228721072882524177102 1.0636655562119768340056556708467305 GT 1 -4890961408328862256874458842071107289792.1870902796214632529730329448463256 2.2261067555564491222848549752695612 0.0554430650538555109913161340171272 1.0570393133426590783515113326759159 GT 1 -4210872864159118460964020534481.4390633074689897382833304810093968 0.9257827196946935903731094435091695 0.0976018992570822642316156767177846 1.1026995029137425623035360334615391 GT 1 -123755921.4671688869578915717776623612605858 1.5752107811082043298559698150418304 0.0059682979516845742359337874113012 1.0059861794253789300347610108947724 GT 1 -1660753558149278430458191797889.0698434148793927663621502201482053 2.1762794382217396591805607701550836 0.0795599070343288302493830034043616 1.0829033613984313523596213190956150 GT 1 -13088484225174.2711027543323524759198015768504821 0.0338652964423625707443431478998000 0.0337549651586194109058299182044403 1.0343378176796012225138594433504278 GT 1 -6535679288.2983273320853429911484868236381186 0.6740027675076488233658412931644285 0.0297777590356297760593929725811147 1.0302301193311455597976830041139079 GT 1 -23161507119571733.8181941206534202163831154905666767 0.2370631846370736829269455457233714 0.0944981098667171495789955618260449 1.0992659142690387985943109871190866 GT 1 -92234503.3315620877678013084747452998344999 0.2783237056992138210075238961650262 0.0031122953434337288430436285704922 1.0031171486070620110148569820108613 GT 1 -28176.5586356067157286235444809081138528 2.3823007966904484633579439715839088 0.0273845040034754461965132195521631 1.0277664485910240077023253985188042 GT 1 -63559930297749471503.0640694605140643280579640239157881 3.2704983954745061948996405858118781 0.0634567432441315037396649980110846 1.0655595683559878489656559258299591 LT 1 -22782.4603776314390318339008383028244682 0.1402404622270106518759701168189686 0.0275924135763827782889904024995527 1.0279802348186306265504176299336810 GT 1 -59265412746335830127842765325814261629.6237035253888549230585708319979841 0.1686714639011018216645681699439499 0.0804455932787890762125488755741510 1.0838660667902307184592455934207253 GT 1 -550379021406047666.6685191401637358210721782980136437 0.1213585820988707060146866471620856 0.0513286476026044574762488782444884 1.0526928497321881602681705761578249 GT 1 -65577712540026991959524390300962820532.3405437733512464050658225524890161 1.4092217928964782249485320012222904 0.0212239753448257428362932443935028 1.0214524423446218341628145400475570 GT 1 -14204336130423019852820750513.5607599674069279976665057486480530 0.1817826328215096052015287215418672 0.0504182720730913601972764921086584 1.0517336777347916379743970596642471 GT 1 -5449519775150059166955497607731161777965990.0054384169844804382505518831901513 0.1634961601945914798374591938962915 0.0261028069144488251908228269954676 1.0264495321573942020211259032938419 GT 1 -10182663.9689644837611649004868369271730080 0.2919760917045295597326383913171149 0.0434908692533767045532286033887869 1.0444649441498770233995050548552682 GT 1 -2454461455051153875789087.8526897476480419208869185831868161 1.2638911018287828311942108645282009 0.0123399775438270092501794780783306 1.0124167472783441815677478182276064 GT 1 -582861400360.5120600595519203621057954604902797 1.0828181529505134126792204402395110 0.0317758838280436445273604892255884 1.0322916935323006924116776023854545 GT 1 -60712899112372858.3415864096564889045915519072153524 1.5239497288865564876576155039283521 0.0005037369764414698719391813302921 1.0005038638945362016129107767120459 GT 1 -2048096281576601876424249586199888303678.2840146407379439577991893221282489 0.8189653165907538691850016770754946 0.0915792751785002234823891029094474 1.0960476543682053881255376132548449 GT 1 -1580984.5062115118472721412352653421993865 2.6025273650344104116229752853455628 0.0262962859406275202350288995173338 1.0266482166272004914926324606088305 GT 1 -111213031892564.8671048746053498509411811009235931 0.1834081395822560660502245751686197 0.0438420113650619501648506363216194 1.0448321195062911587368712997627853 GT 1 -1740594271513320992105612.4513534371215584127378784257626762 1.2626664883200800078723509655781476 0.0369319273859585870272734187264495 1.0376311816095630613128744142290332 GT 1 -74152396473819684946816094127701.2304278452503887822141644272929666 1.1686800687693181871796421647811966 0.0165612849280060807578214898385202 1.0166999561886228312511068476723069 GT 1 -134506.3426431969754623742387777728088290 0.3317838171207974313853467197938537 0.0135562955099296428315901777016065 1.0136490210473613008017414927597858 GT 1 -21935615570252441938888491270.4410596125517265631097579374472802 1.5526054977752358197647446560075355 0.0598475349348284152026312316702724 1.0617132199927367750347547115032834 GT 1 -1336636494381712443045673643270100.9120069027605937998206416069402396 2.5572306803502462105283101791003107 0.0404087412264714285439448134619416 1.0412478572978445573359638293197197 GT 1 -77564145700683385818.5930264577606549989335776921025102 0.7644477527894413878522121525078747 0.0449357399326829577830218844948671 1.0459766527365404209019865348670297 GT 1 -220261496025604868526.0179242297144263748602143793372230 0.4289701798151899880660245150702200 0.0202842237586350966104824677027364 1.0204927736261890343331877239137074 GT 1 -1577.0125314527208590976228147340470057 2.7382511017944289739689622792529558 0.0804117291579244939109237458253810 1.0838292408046434810742023416441360 LT 1 -133011844780704014645328124412.5392103942906771255785691775259922 0.0711790947201625757555140625985178 0.0623171476327159279375730581369273 1.0643434976307885801166166096921901 GT 1 -49928870100900860068767061545000.5217344283003448718732915922196983 0.7023660445522197304545350924362327 0.0364483332110026386573681227277637 1.0371291684979752407793877142728910 GT 1 -494707418441762766208368929089127185207582.3702951225480194388422485062643414 0.0126132556816330535954156465325337 0.0273538572604655297755354294280672 1.0277349394691638091672468558679822 GT 1 -220949184212294259288.6562622881729670965790224353858146 0.0016385209525221725815226429916288 0.0351724430171424717425696052232129 1.0358058910385293505674346809488388 GT 1 -87450903940361726999271.3369977436555695537729168994504781 0.2365318778197570416089979195237225 0.0579502114316105460178535173387294 1.0596971516959325238455630407178756 GT 1 -1191300761766599101399603026355138.0072614640192152424783891333131083 0.4968873277150505944811841100125787 0.0828318975896637104614127115433566 1.0864645057396981720742022942653359 GT 1 -26745469041865738028543516.9750627770336343776175775606872832 0.5213005136865768471609985057888471 0.0992274601339213936918261905177327 1.1045025062242416420960553379070705 GT 1 -14107662665982175635315.3582305397441117931086731625797674 0.7239115750722563634137592757666806 0.0385273483894328962708014633801843 1.0392891578205743095893340046475284 GT 1 -74918323623.5239862564637791567445255284152122 0.1176556316121725409124446472148648 0.0939971385245336581295514459607877 1.0987128145827034569980423801994027 GT 1 -7559656495387958393527.9853004230746647917037594673583132 0.1554564878106610473489581172823162 0.0915136766846101907803365872052252 1.0959754453974869326814082501635677 GT 1 -67509956653935584851.2615507018014401026834994254799133 0.0172236744455984096949855531445854 0.0514836272332516578680815216147412 1.0528562280093468151262743522017997 GT 1 -149787020489345921868496138157680456.3546015429331143316984125926171127 0.6500100158009042487658052562353624 0.0805849013437289971349971259747467 1.0840175734517594006721590699798555 GT 1 -5.9723547416771857128339336461978011 2.0222913848119312241655578430086599 0.0332209778703581112443173134922044 1.0337853286405552430894196934871335 GT 1 -80415291386343783589025637698.7837031985016590934140641138139178 0.0323383488205693073037966591917733 0.0346081781651827579597836936456294 1.0352212270627910154971602143940540 GT 1 -183525488846324787397682405488539612541.6264735285233718828489936966245442 0.1423585348904644488752274655037718 0.0843574740772737616098940469188052 1.0881292460203941369522161074122940 GT 1 -478596582975725048094434934222039400.8352039574291884065783878956539314 0.1168585567816198962629397328889878 0.0017264360297836832029993318397445 1.0017279280379512084246724289776668 GT 1 -52236889798948935296953491464914644873455.9866942674316918985774118801477925 0.0739495388411195698397612724767698 0.0544349541446941345541720926840311 1.0559725980565625927943558745637189 GT 1 -484287311042515976.3898165489569526892457793084937515 0.1781883442285803291300392293261248 0.0186497072116813448124222572228856 1.0188258058974990025772833655877909 GT 1 -422094210102394838580374183783536601600.6443750399517570956455899211634908 0.5207400135805643355293080563304456 0.0813256882569994281414682782534835 1.0848236136249814434515753374906216 GT 1 -40834.4113187885141292411186063359687736 0.7026725476242112687107360112329740 0.0442582168626046509230001971334564 1.0452675037353833745550551684929474 GT 1 -755497494349123258089025019074184506845664.2664470239181376690141533262653235 0.4633832268395452058538515661552564 0.0617811219266692535845725366186144 1.0637720117027816440695175668467505 GT 1 -59052515739782681382630035633790480424.2888564069780717676040143215959765 2.5072057000371366552705331723231406 0.0634118881205533629562846490931793 1.0655116751603072980135248289906456 GT 1 -32286917706700827043913592411741.2488732508192907406882620472211231 0.0929716123366769636253981316046145 0.0669481516933885999683276780036290 1.0692945080747525118183439386515582 GT 1 -420619153675710809836513673085293249.3810013275226455513889705922343428 0.2932134131764991963594654474632564 0.0609285563882929394916448771509470 1.0628637178846738800137825788422451 GT 1 -121538.2004573853613869536260391184584525 0.0852440794220942852804588283119066 0.0763670452452137689260707899397646 1.0794405213730886818905052896456661 GT 1 -1337869557461277507.4092076010221629103139407967557597 0.4479514662553053559390433009143492 0.0084054256186801628029031184885186 1.0084409504160225189533192066187972 GT 1 -301.2716601179640173073031977369648424 2.2402083896930620866828144351815371 0.0580144587976121957028970305150572 1.0597653535656229083177643883760317 GT 1 -5300517425555156.2846948357193003214997851169302819 1.0014150472625881674808228538579178 0.0531423741546084045505260868693253 1.0546065393949076785988417428952860 GT 1 -71562156.4596680504735794582641143923154978 0.3130060550069831202039782633299819 0.0338236676303854887436407676039059 1.0344089227428765062720261478734736 GT 1 -17220289260696868077.3724738475662476752537051558765936 0.8404679080242706935093926125081911 0.0686916625944944289416812469086449 1.0711648670566018644765109905729352 GT 1 -79257.6132761517174565575313828998037436 0.8122382952071521139073379028259529 0.0230446850757565944099093660277701 1.0233143650127105254604448335253770 GT 1 -289520105373903536120992192059944647569.2253854016202120220186748362911943 1.6985495079074607173516502188391640 0.0870683480261287273606339779859961 1.0910942621161441609007657712554239 GT 1 -2944841583326.1644219700577290607137175423528401 0.3069594742009979959168508248855536 0.0205475827376417081315174960637569 1.0207616213764395188676992385358051 GT 1 -94803765473462.0557781944817876943578911381193683 1.0062511726901987336846180775797993 0.0835557701647973959926591071387444 1.0872540647975308428567698410980766 GT 1 -20330140882.4799167897652784599481661438012221 1.2481338434807069701344968037596502 0.0898008441693049309502669686316476 1.0940918508547662139024491794360525 GT 1 -2378072992.7823577745342502243711814481473544 1.4319852456189223982230127778290253 0.0267498314113562674435467024003581 1.0271141192692455811410621583428893 GT 1 -4618988766022768258547400942057.1103277052476390572577433710528332 1.8653499424201210394072335249211468 0.0742373786081528281373796947172375 1.0771374255877562110000714662464405 GT 1 -2159775291935946601481795891.4986838675330128618356839000805477 0.2052408888081013448172549024975802 0.0477147083553856006463767783944453 1.0488906129874004827748903769216670 GT 1 -12242468851113303.9971385316889252756457825801272805 3.3692674493340650721688636137736296 0.0229341799603786400341514752989936 1.0232012596695609961064411317752189 GT 1 -4734075543520799274.2711072205622671717616051416655302 1.4732904907466287165472933391408842 0.0285611837187200463118648436483087 1.0289769907569569353093140466020089 GT 1 -982957804337449263490196964.7277097818407656422828706469098989 0.1275387660681297670899525998578222 0.0350313351942136097585112081121446 1.0356596498742166143965210069017962 GT 1 -318097797726788378814337131575823682.1843202168403694792520916418670962 0.2329622735905311957697604632888272 0.0889184201190095396690899199423219 1.0931228359170449118465098006709560 GT 1 -5896.4808614764327242636856662775330811 0.0044558112903363962751016034693323 0.0507022144716195886052941647212843 1.0520327408387248003301945159915470 GT 1 -2607992136314106838705676282972.9614595130427571539933840691988814 3.1152074292946105817636847970559976 0.0838464505052055143240898061563500 1.0875712979035887957829471378628358 LT 1 -50156815898921.6334501268234992172359588538932616 1.3267180365867600644359991355436057 0.0917149779083342811996524264919794 1.0961970486554387799755960658636911 GT 1 -53879527405917901550901.7499803869651396082518091263190491 0.5142618291213007959104229065036034 0.0004909107770672424528836534514032 1.0004910313132127056142600671018986 GT 1 -1024594906057.3954753802006677820288853049673509 1.2436423519254606863950443596388197 0.0616265908723769727901698610509688 1.0636073184386181609516904506032143 GT 1 -115517209445687.6984563496148441003110385550006846 0.5036803718104840313297081103125597 0.0275236180495037766379776659432748 1.0279094896965293773350082717579005 GT 1 -237779571991367848456260708115624.9516669794415932091128856964675190 3.2452153383878499308227484651457881 0.0915229166205964251523967052973684 1.0959856161427559551662474463543083 LT 1 -7068367146307847699377.7668584896784789560187528938950016 2.6231788715548225855404009260647837 0.0186739493202407147092484715255024 1.0188505090113275073164107258832798 GT 1 -579105341709353704564097925428564332.9023142686750012503819843617547331 1.4751042716182096218995859641046086 0.0856818204084247914521749198307411 1.0895766503918288184434628931148893 GT 1 -263214341218043082916469423796157321673.1136183361211747399786905811177822 3.1741268143001625222251060269178409 0.0177582486217360541498391117715962 1.0179178182593947261423768639960610 GT 1 -311296658.1897929284451398789265128899220271 1.1239402519362632109518595935868755 0.0691900943027434047560563857237430 1.0717002054777776775392872802704373 GT 1 -594858017316.5674214386943468550908018835981748 0.5515908203089834523216252073833333 0.0051560444532400423871275233559563 1.0051693827186556217813192465793019 GT 1 -25332233287295483565978876195284005541424352.0314994227069123618650951771750540 0.9719840823128495231904717449702286 0.0640195103410387194073990204670416 1.0661606471032437662339116190575409 GT 1 -935237698436654.7186281779833069080974543257030109 1.0055665241733449182786874206712220 0.0178223176247921107473352184615170 1.0179830477129196847177862970399546 GT 1 -13100701837667466982846282.6515451492358495842726839485365181 0.2669755037019379273943130644481821 0.0746000968470247977437656842966146 1.0775293071634736963846610833250799 GT 1 -5876347259709244280217957306040489057.1402370409180211130134256428728778 1.0658651056331467626425803255132320 0.0555938767116335787091138813738565 1.0571989900048797296343114194184279 GT 1 -37225387450276381.9638862676937522014044323110207300 0.8237685165758970234676857401744903 0.0548955934129280862891929691347819 1.0564598744302865604981087879850370 GT 1 -5574841174654535804953606.0137350799331605417342831342479250 0.2282562590736616878958958904379324 0.0962013614879041427526805301729251 1.1011486884100580079371724380165551 GT 1 -3703590341660034076780512270772250879480075.8232947666089009124754410799748691 0.8860396311014771525421033589968051 0.0060247319135036029932057740411054 1.0060429538358130751597271444086288 GT 1 -2911995371817992533372223571598690969883.0939770101338951985948547836875581 0.7773478446709362980032582858267778 0.0175118290975285243884540388680292 1.0176669751051218141518817285329960 GT 1 -1408548217025662729167870559531208.9812648754455401759272545171715708 1.4314780205133786707714837130457447 0.0767089022773744309822256160779680 1.0798107120537570552891570400900900 GT 1 -34160108058499908450648088633739.5677261388359872182033497626178943 1.2859425916028301708103136141825380 0.0564029032754775729818677710123675 1.0580560082607662948159228056627261 GT 1 -489560541495124677472065.4789588835871471959153055501515669 1.1908661416016128100808266250757540 0.0759291515629408607344175909264964 1.0789665344822085617574703845577961 GT 1 -727098546947675011680576378167142786636.7986903317613678471319422743409315 1.4228159023029260144525579268262085 0.0782708195308010061181730690899371 1.0815038290834291374263564360133262 GT 1 -182.3000571578663987409087519758826508 0.5924782108744394623323175562206790 0.0639926467771257430616486709838039 1.0661319465280589774392188690868588 GT 1 -42501.8799027401699272655739144679788269 1.2229365620542569007966036023703810 0.0988561184885524798859464046796381 1.1040903432113290454720732668937974 GT 1 -55565551107514044097749145334264036453804.6746232345634048408927272530593935 1.4022669654814676049459881060747397 0.0520843136544267391542479372157072 1.0534897191364107136844421321529959 GT 1 -11575249487024877459686398286645703.1059562397805069587986386649863272 1.3245140118522515108078613103410597 0.0252285595106299254726178664597511 1.0255522554758578813431398433363358 GT 1 -102973796981456810906733598551915608813.4940018573251461784657114816551039 0.2692490930263280538521532103957103 0.0937497865501658877994212824866168 1.0984398372824288231371592443870823 GT 1 -17650762181871226017122230333486.8426103373657382438212616962514181 0.0268402345340673892486048762880657 0.0087804498427365116586952719088934 1.0088192251356617352030003662298265 GT 1 -5888786611509975769829174138650402899.6758205503012083674698008198435620 0.6422115229061323387583029951343294 0.0946059304510523367981750694354934 1.0993849940912517933298825376631596 GT 1 -89432719354682106.0077082379009573481894116859251318 0.0906416266250093132532444698245035 0.0939251486407984013190685493509441 1.0986333589575244292069495783468579 GT 1 -9646611.6273867133891244632107162556533305 1.1849011364834944734918102005602917 0.0012648801834269954379238081535996 1.0012656808195766206866358039348258 GT 1 -3002436643380245558068523922724783354414.9497480058908981902515735187304077 0.2318892216572082928527633085127173 0.0997883338431152689558490021682363 1.1051253586906325425793348662962545 GT 1 -1121759178470061465014028879739649353.9588865913007142267596249928933638 0.6271022716854433736596954150359887 0.0718840025784412304951790554722866 1.0745985567859309381013153146984062 GT 1 -4281.2868168458440394909268019080493359 0.3382073486812628200789867012862164 0.0315665955548552875254104628838063 1.0320755600427445340513736360643642 GT 1 -72572874068983926172016693879235100102808.0704387398752071838212723967026775 0.3983315931480837015692191856360265 0.0398167409254709938764134185430257 1.0406311178690611856702272028782360 GT 1 -1839424236108455.1063210455438426144347398421662172 0.1662991137302641541883886436593516 0.0768531585673461786481802885615580 1.0799669656566604344231003672134736 GT 1 -1592879.5996500147266444977579474762090677 0.2772175403566239181430203994921772 0.0561700891989919057959109051361402 1.0578093083070852619768769799943986 GT 1 -2715939808.2128213353673491452690758892436693 1.1898814502255647336129603602339505 0.0505001809033020351176373672821478 1.0518199392546193037949675168267011 GT 1 -141973.6290145675897051182033209704717654 0.1198336775623007157946490465213650 0.0951812501075455013556437548804924 1.1000206317021283738037979892942074 GT 1 -1651543.5863701797052215393420420362257875 0.5099789139580124817202696089702627 0.0852437657327463421429858839923718 1.0890976598371147654708742444024790 GT 1 -1627264023811845.7126809378431144581620521905258122 0.2855843972994615436185773692170288 0.0096401939866897023174468788369928 1.0096869614644870306926977920134537 GT 1 -2632304752936308717540.3998928347739377722124990278567875 1.7046819862316285732826472082526704 0.0555878340010896858966659625573375 1.0571925916016260280054795360293913 GT 1 -1835839.4619385766585451050072849042549869 0.6949077867521552371863198642325202 0.0424300873552513708027863802156500 1.0433565447758911635040652021725235 GT 1 -12696613157261254667502772790625494.8926782104386943833507312786791658 0.3692075200979883725704340123649365 0.0324088177584839670778980093726353 1.0329456133081317678792217273290301 GT 1 -178948619862804.1544393704200670066220602020360273 0.4764694359990386760091150699703621 0.0119180849941159003675209741447700 1.0119896747461231970642098850758603 GT 1 -185280411506558382508053261601623021.4299658403740236865220417848636331 0.9945595659993335296706985710040185 0.0160006944069336679611762091224983 1.0161300876282359546626897771605304 GT 1 -259361750443697599.6523806055273533338050556521371822 0.3490963066469573394461178183663477 0.0401069310415909657776438694235362 1.0409333872258494554681903272065557 GT 1 -257609689.5335207108427957172721439740435173 1.2490964640689520289300112776576392 0.0553950337345378125444813455487843 1.0569884640011629968176360505369717 GT 1 -11800232483128081917916134606985311.6313440538573400398371349836961552 0.9367676136996986385770773004685895 0.0431870950017333324107033533583756 1.0441474082113150163654159844762522 GT 1 -5565091103492260264685.1185240660808132527675871918184494 2.8650312924206106529391110548156728 0.0475923297043413301925582176721547 1.0487621107524911804672639153446389 GT 1 -240370107057361.0019356503355230402409515204828172 2.1178856197210108630709841841117924 0.0210485024521618312915147222036363 1.0212731805309692862631576726173579 GT 1 -309854106401494945.9711744741890297823602680368304211 1.4062269041539524352658095203294013 0.0624749742534218131548017822193217 1.0645118273641697117383576461415334 GT 1 -64298812733961146796422445.2878335134739554362281066276487959 1.5941415356126891608080143687165887 0.0539382691284150323329589170075883 1.0554474574381231884741295237795096 GT 1 -36.8582421352925367733123956612872166 0.8491310567290564925056712643579435 0.0117906012842527664796249685474475 1.0118606616708191436241381438296076 GT 1 -585995350.2481953248650982521336415111134108 0.0094610311762216289203599704746401 0.0343491680359347147082391464510996 1.0349529677052964885828172949185514 GT 1 -31.8583628796882931859761228110183175 0.3584068686058862356315731150899708 0.0575443692286514007136537640154826 1.0592664368727557375441074927750335 GT 1 -566468131.5310995567535794816457272798298910 0.9910835756737864471573209332082380 0.0588021155602640674381738283072169 1.0606018698580431825040645555800022 GT 1 -64.7978838673182976742501646568997626 1.0497807681868461947082909150831329 0.0945742046589603307287260807742240 1.0993499538393632603603886260851773 GT 1 -14143659251.0161893167507086992044653032436123 0.8034635679835878431335972454189360 0.0517398846511745056117755500343258 1.0531264310839711142496994456721022 GT 1 -39261657172126822861284522147.0619567312115803691292553015705069 0.5547977741274404389631982471625055 0.0370671170032321614861375860821989 1.0377715653587006337678407048956814 GT 1 -367224074144200096619694.9572391240098033434288625288597357 0.8104584003780506913441332393604348 0.0962822648949756861225233951558128 1.1012382072750668715661623893180287 GT 1 -28191439.4949838014281273919590937221161067 1.8988401873490004196199209839080671 0.0898858749448440814284044321581687 1.0941852751861643971057034692224202 GT 1 -2345.5723097711811604350079612274595751 0.8117223077214160726962411202041612 0.0694403336809725560222505629281926 1.0719690820979812256835614671612272 GT 1 -30740740984687026378751105864233026723.2271832996438154669645665353704192 0.5740958810036156437687382079288793 0.0836932009568071046022624021696290 1.0874040369324273108468253180839956 GT 1 -117488439568065019777634054797873.8682569460083970725154448050935280 1.0981144010991062120843811341295127 0.0338783960354446575746946243437347 1.0344655686710687499641553552535003 GT 1 -7885095.5317526816626281766192460598695537 0.5569157087216522814058860082458177 0.0614731733732114743021417871242963 1.0634438387857473047602412789295271 GT 1 -1752593224868040059818407379.1810958945777151690677343336974882 0.2804777480580209273886786473842612 0.0312564041666780193171977359156279 1.0317553090891313139962582231334013 GT 1 -3650932274920006767306081993232051189.8025319088109796325179228925077448 0.4081669503234698809671240841607979 0.0968794117937541371904029542055506 1.1018991927244183235983272801119586 GT 1 -158032805881172144.2169265213507987897353466992715084 0.5226229651638228350590989141122109 0.0199441563165354608132928921092657 1.0201457255905348701665551293630017 GT 1 -2.1834533990464433054932968976065052 1.4447403878218550633502674897491044 0.0160910872709569249049942993748555 1.0162219545793927531387252476593624 GT 1 -9386550130242080550427553030273246151039135.1709697861535836202339088940389881 0.8253173924612488344942067181066517 0.0624204238798449497375847714269608 1.0644536435449438979294875234658141 GT 1 -781076090999207891612936438330366769.7410597604011853936792013451057852 0.3956642976910895079021821605517127 0.0335455115919798522320591179827281 1.0341210705185035589394158747771231 GT 1 -9476247065595200617681.7214966646526386752553806182143286 1.7873456428378876027070551812099633 0.0929818277450953291879873205806198 1.0975927935055214736536759766015598 GT 1 -19803418458194664821978304.0116098971374346635229801224527130 2.8805424555220369605605587897800551 0.0932945310480259333584642230423697 1.0979376126377470440069549996745810 LT 1 -612002201206554179608279800799674.3909517977713415406841552293523731 0.0504126381320934757628274218850898 0.0038308474915153146957341999700208 1.0038382039815044478305745236517491 GT 1 -31847050037828550034072586337797973058613.9464985246280435582888235194692097 0.8889658082320137529449263592790626 0.0443126420152590624058483141730120 1.0453244508138789640400536320324005 GT 1 -199865049.3060105809469691929523408245607406 0.8585494497107112408449005415309274 0.0732916249547562323615533545013726 1.0761163529368105496846795779489390 GT 1 -41089099052057068252019277177524669858192.4967457675555031196535537858167348 0.7492031185111859720556217266028547 0.0411683577798930165650948372033802 1.0420397750681407527851539447178676 GT 1 -8784494953491874400317808438093955882797.3070919783585083826785060648268712 1.5022646339477686266342121276356885 0.0020426078985639395915524985329171 1.0020446968671915232183251880987227 GT 1 -820107867176.2221893604085201893188893410270424 0.3554943580653185328846361626891313 0.0553511293671699988653249876780425 1.0569419860038518490513070989529767 GT 1 -691596562968824672758777149.4894389901099334631812854942021165 1.6244600573919609052363154356322688 0.0700079233564260167523171901207693 1.0725792126092210965644614553924106 GT 1 -16155437659553.7856373215419313040361655274069270 1.7450210797242524630975158354276736 0.0836116448490677196002832714205526 1.0873150356518743731442746479116312 GT 1 -650732779169.5092382093393050517505511201372306 1.0358226796111288209749691465013603 0.0523115004447473500302772556865058 1.0537294176906744630811399980655196 GT 1 -3.9113283924102719023682197528139160 0.5132342222073459262928538680373186 0.0932891752522438045720277809049383 1.0979317057802860718556655042207867 GT 1 -275854488634.6651502436271200581661940458711011 0.2636998674193249954998154399861441 0.0458225153165408013840950762816305 1.0469055821925018736380326833292358 GT 1 -4.9272742978478542955219178878959078 2.8155150429405903654292319339085008 0.0307124990329318526558088534640245 1.0311940124732781586211697550633215 GT 1 -186106473395639635885406238331499470378.8840558195058022929910890839082086 1.7778579939654107773850288839827907 0.0904011348502614919353447937934172 1.0947515841832002067029714633896672 GT 1 -148197183216899302050.7269668258164994281816652561499014 0.7506947693907136143097085790562013 0.0510393961257211114412381497131637 1.0523879945381474584809602286015458 GT 1 -217904044744993.6819838379473389134088620207349833 0.4320769017241674151565425862299882 0.0185575378756208757145285347943991 1.0187318893738135302129454943763060 GT 1 -14449728752352530956.1297141175555189952991454598529789 1.5573243978425703837822152558794330 0.0789720232284573607612308549444922 1.0822648666718542947730986473570066 GT 1 -12151301490618166671696822.6411458769148285493017502630852699 1.3953108348553301149382658694138343 0.0560184954618607864705007232609881 1.0576487056788511001069554824287577 GT 1 -17.5589560783564828723038989714993444 1.8466569126489897402379912599841278 0.0527131781718303811876561783427345 1.0541533574946036737485290480246689 GT 1 -40603733217899000819965.2517846465052061769926214926807955 0.1754414489241495092112233285907655 0.0105765987281125318640416504858908 1.0106329284853262955887171570135570 GT 1 -28478170601451840.2522229008492431612961416697561148 1.3095667074167941731029707742756713 0.0298141156402392996658917290886305 1.0302675924834574786564752548699429 GT 1 -9318423629.4213984943924758725544271686812414 0.2265833947899256214866317554699181 0.0127928131758625186479324650021675 1.0128753458492698241601683757737197 GT 1 -8691095639.8450336771413929758855884542840225 3.2197843285915962555814792756515041 0.0515323991438784848071842990458420 1.0529076484866051742829167123187397 LT 1 -1148742474497846004869514868674848107.9378375413215026246958686011613725 1.5422243827860796715563723710627630 0.0040050528124662054693337789172172 1.0040130945152928069241879057502168 GT 1 -744170059912144193013237383134.9427247558423894104848083304867853 2.2289334482890847186217554089497103 0.0925004633074008002491415626064730 1.0970622233748326583893505364884342 GT 1 -35759312333120291340.0529131747865552272688475753801238 0.3980825738506414847192547361423342 0.0539244702762588453652396081706388 1.0554328719717896413624198961541091 GT 1 -606734871098469478816681605312370050.6104179496698114395723122148597875 0.4726990497296890620371067624409689 0.0838180741138266645926396703014366 1.0875403249821315845744246718495511 GT 1 -1790185837783905317470567557230424099740.9622734667602458914715912132044885 0.2070071778800230685158799178384247 0.0647717200327357272291142211670928 1.0669646297955283354421699468014939 GT 1 -307110078542.5607359501020307459382978408059852 0.2525555520949815434758837340142276 0.0007607404122268973896074117060009 1.0007610299220514891039933692393779 GT 1 -2.0468845595246086908314878018064065 1.9284029833454394099450799347815155 0.0771319141523362952025549701713828 1.0802689736014385909519243400639164 GT 1 -7.4556115480083191016287239175860483 2.9699191283155527871756387945970951 0.0510250881129802439828756058710756 1.0537443783116169325832111699665180 GT 2 -170486318.7530123681852078290464452288710291 0.0410118098507753362780167041273251 0.0404923600435169548060529089234823 1.0413350011309776795494774300611917 GT 1 -18954855.3083229061879113526915996406640696 0.1421839211271580945034054128070013 0.0901474077336622216765429211488648 1.0944726791129826703449381754264189 GT 1 -4680333.7717735405014188937367066411735314 3.8193619030665388176821200490581286 0.0810426255835619479129777618068545 1.0845155402740393531184518370678177 LT 1 -216169147480294200860051986.2329324606466078331375128749621462 0.4125157426147072857634292200649590 0.0222859750438981199211436658128506 1.0225380597272263198304959263182898 GT 1 -5225062307656185284137389685419829635022038.8871454087866283053268958883236001 0.3639232358958465673342074821924852 0.0824748392906351334687670334776548 1.0860752763129445306825582863793972 GT 1 -4331099078423420669204018667045653.9029674875190939736504191390658124 0.1563024499567821694303134678785810 0.0972245741275562348533147325412728 1.1022814543112586133975709410502989 GT 1 -1360767747.5673805416866296318875534158419022 0.1747405819522274446619282818899729 0.0640885744854271527476888460049895 1.0662344378428264723342832852158775 GT 1 -65204236401362378103078420010806900641296.0076426988076904972448663603822019 0.2282780115656514811306944606448920 0.0397583170069964927260713032520918 1.0405702730870416123640762452285483 GT 1 -10483465783034780.9444862279129572511703026697511885 0.6738591027553420011060145387246942 0.0873170558621188450567430029105523 1.0913667268938233429061863748420867 GT 1 -15.9703875042080734354865090652772035 0.5817669957631371656616040121389814 0.0785660821768765238124673205477968 1.0818242159758042584642869673473163 GT 1 -14586250585702791172992.2601540904934173041908458771891639 3.8926052908995652522694922619800552 0.0576038791936009374885417284885754 1.0593295823853081140189147616111407 LT 1 -27958257255836541502565.7028844097665821287722768876673802 0.4346118406984922933557655320247371 0.0350941798424444401441424667381268 1.0357247780975727960897973615238116 GT 1 -2518356417221558650559832911063292555.1910031753200861694730375584208292 3.2792515835658772953958510998076016 0.0235686322326869201335965901542339 1.0238508150398740660774765624099240 GT 1 -14551756.0141332882822837371341467103300427 0.7082469788119007043069617098624138 0.0444655625739191219724004559640092 1.0454844746890289612797893721280920 GT 1 -972160708270027010377739512975473.3431909875018915024755646729940908 1.0986708784060181666981631775019407 0.0864075383046384030988362955841464 1.0903706913235377769773104101150875 GT 1 -10183979186787175539334746051.1673937180836980126735233818612125 0.1240631647646596167726606078252917 0.0220767018992822238562425003638941 1.0223240393227807822909769233151274 GT 1 -68698926290706803804769965923744412369.6581561257346325519285342685090651 1.5620006153929686206819003182582289 0.0779211848810448673310459602274830 1.0811245763035480634242877636942022 GT 1 -12756319273180512184939603589427774593051.3716334680882081919883196987375958 0.7251871251435648008104360549170017 0.0085287613608431149943046306346991 1.0085653393712575672496217763202344 GT 1 -10951828957.2190694733934240927361105254127288 0.3413567642990398532531456187958331 0.0498445078750541013873291387430259 1.0511296318599969715175764335974715 GT 1 -45069282273404572265620127251291.1437587785564595529818698697914269 0.5648360847871287303991297394018847 0.0363276341665844357828308982905423 1.0370039116077197035700653020917625 GT 1 -411977751724428201636703337584814.3482074682572722298853625522238625 0.9072984119415923351086112251241815 0.0748329809757693125033209464920436 1.0777809966616301990955040434467511 GT 1 -18977029984813.0048159839816708601925839449753514 1.9293219009588806450146661818848156 0.0525027940984541155840936290647037 1.0539312909464779665509490073711718 GT 1 -751961240559291.6677730775594452391560612003810393 1.6561482402247618571057634213453456 0.0968018445500207302499354092540245 1.1018133083874999351245734171049984 GT 1 -120079647700093236.5128169723780967426216507942959660 1.6163161352696352511770324396653555 0.0644383229843991403619661953050362 1.0666082059750757364693552950184473 GT 1 -82922066309275794671.4699754537404186066588008511272666 1.0040936951732785731020386913241638 0.0497160187476137925585546200596295 1.0509944114234231643721022931669114 GT 1 -360354164299617600386907584989037730242512.0571103297313830315481813066200017 0.2555897488667925126566364206273522 0.0821510022019154113481668111278935 1.0857223923077086583205773733053944 GT 1 -1849416117923089041.4371385746537644632156561279946789 2.9587791783597893861018876436544667 0.0364934586898504778784259666681725 1.0371760020379964310820046597145372 GT 1 -73914480418.5464083127621837626208409779825183 0.5776843660603632607541848818355759 0.0584514281388012507417622473414264 1.0602293423471350770860384781973092 GT 1 -16328354075146871951467264929977.1650926446315348184101388334413149 0.4073265669574031165239533387605099 0.0676625457789177258536429804217772 1.0700604544854963179850802641974890 GT 1 -16941.7697324640597470972248327929001297 0.2713979788162100529961889799003272 0.0041643023802154656566501567148696 1.0041729972344358641566255893145499 GT 1 -1951285576024311546115.2055519893014350742345676361635088 0.4942882631423028160393303979765802 0.0459338824132573737402213085824163 1.0470223042888951435733859829586637 GT 1 -74.4775720228758799251999974097759398 1.1226158509080321002529511831033324 0.0904651833126584980844960789017723 1.0948220006270965025006878625938364 GT 1 -1319988763612598264.6714623212980427695060781314617091 0.2476527729985225045929010072884404 0.0587447715124616802221720256128241 1.0605409450494236965947487774832894 GT 1 -40362447340753866470691.9449424768077458075337307215178534 0.0464691111140566289641017264341578 0.0932151988648899607549188478092098 1.0978501214783014866651210529815569 GT 1 -426949300296517637996713760374899208328.2508305570219395942547779141376156 0.2682947072191323778366749307909998 0.0576984477916156621417471456052812 1.0594299365157855162470724910883739 GT 1 -3378562272108458006472997.0794007797683945321377594764106374 1.0518016447154266513669527464566646 0.0879755599879890877338964111999007 1.0920884910080886899785817833713237 GT 1 -10115543138768485913910271178507974688750.6807829411974996828366737350064353 2.5407366622505791247724828924212120 0.0816765359436218095477281490402395 1.0888355896098155270338722584972784 LT 2 -23710202801396843345.8764038597937407776121463719324356 3.0996966394357645906266728089800591 0.0644982793773163208295344040829528 1.0666722940150784224113382456764452 LT 1 -260996053820313030128610944739399.6480884768785244010854992102975155 0.2608420505916000752651547319007140 0.0684337882367899115439214411089502 1.0708880106687503567835538515085518 GT 1 -2793622789982217683.4527096988361944869655457780756514 0.1656703601839992098890571080474453 0.0617495550868859564556617732915234 1.0637383667724866627248340307266523 GT 1 -26919675331711206419717.4068255462733488621375783303447678 1.7895948927100509750206723652806147 0.0177693726531283112275546252711078 1.0179291434696780033538803091288359 GT 1 -74332281600407373703.5875913651364770839631058922422782 0.0933232707558089971890562072797364 0.0697643825642913064894866016758471 1.0723173728416471797720413088038863 GT 1 -16823196797082345096267962853.7031931529354915639378413982175517 0.6138159401532937395705375273895432 0.0501642672494061722206820085591002 1.0514662222328202922143509239333488 GT 1 -47580105997434534.3043862523566829354654497224095735 0.4108901151115926497559030022816633 0.0635675137344475629353473715677651 1.0656778512444426836210526557483388 GT 1 -118647860988356321672188341631544.9146172002875036092834372150471885 1.7640491872102440107078382215488351 0.0630450025430170249025440951064061 1.0651200262247715021191136905217571 GT 1 -413044.7449051975031423366366281559151679 0.1725500621354996473528781587038201 0.0676012440406921649166028084320261 1.0699947060564016591012966338473752 GT 1 -22119059598138.7602745345559239020988987277589593 0.3277787227157986308267879396648258 0.0841215071263137286022635049725870 1.0878715728079723716430238010619238 GT 1 -217651710398935237099350176141907135511.3578876010360131394579988046001050 0.4152812097557708425379792042940283 0.0578997835390739652887032988734723 1.0596436231632636644384242058208440 GT 1 -360115961610054481937459054233507533139506.6542451196588312884496690267727519 2.3398824808796357346850445765744684 0.0573580858856806866271222474662270 1.0590687989902148890638605875808162 GT 1 -731273.1597851621915044578695504644662367 0.4022752237964231081123282001653933 0.0640271439495894775289243988341107 1.0661688028711941770910367155526356 GT 1 -354278248748.8545150738143305741458589121602881 1.8758977720072368050179362541018674 0.0425910332655230782760820986685359 1.0435246363536978477625547837397890 GT 1 -8002516757383.7649255768107378052851042792236338 0.5623597198084690172627442750254115 0.0883208020525622142667834879949332 1.0924671074252644927937205670835260 GT 1 -76195436164199886176618250788236910932.1447915987149952752660057706413639 0.0033371198528380764030784549197069 0.0245047119503977084493456738002557 1.0248099492232026159256619210873604 GT 1 -2011407452697644939575090357814694.3747990009624865559281467432450130 0.3187341340183294291225934632035862 0.0794480938862496524912515266872489 1.0827818908561665583916398316387578 GT 1 -43786205651042164102736.4065283960976285484757898749294488 0.3470356979682720362491282379608532 0.0977318780590300981354159020243422 1.1028435503841709518468666284566510 GT 1 -27052387825280443519.0335274569845957081474643560135053 0.5433617444845703574729112023496573 0.0430312758084797190036686097525933 1.0439845691588115222442800898592294 GT 1 -5648110911684.7604178484927459209066574701893347 0.2195573374078167595653154811920330 0.0462464812076196417962763674857784 1.0473500069618302301835991866818332 GT 1 -6558275684132138.3392422394295262907602959446816549 3.4629977609233180579402919968310622 0.0288250696162085452027614142971192 1.0292486720415814796867960312444540 GT 1 -3500475304931538776939296679475.2387616143934802325495783049615855 2.7988183560830531707160904941995612 0.0146221377134084596710451681229771 1.0147300948374478154955019273976535 GT 1 -208310590180712434578126.2169862336236862557192987370922576 0.9126959568186826856260074963390870 0.0552417497500093507129470544841721 1.0568262040571513082611700353988484 GT 1 -70783255491.6609278151043243901980310162612833 3.1248724898324437036256481717572020 0.0999853647247985768080015855566783 1.1053442543731512373190527460131914 LT 1 -10632546360519580471733849397101845360.4683783363144614844642257537687955 2.4892155838992678573799158432556290 0.0739678051340735998977246840606606 1.0768462772665526210544754881428473 GT 1 -20117078029498512268882500221305.3333334017342619592252561235924977 0.6593573799114154612724798616887363 0.0611418072370674810313612914705914 1.0630908306002523516262591435978602 GT 1 -1786797729968173.7553455240499764996792774162596189 2.2208151987015324437527639510984196 0.0510933594755067062861435694410665 1.0524448618980319825664373580175790 GT 1 -215708635067862917098554221170.4935972769999360287632548506608521 0.3876205545142466727452804195602111 0.0277714663540783096630231679580790 1.0281643852376767588575046712420396 GT 1 -159639962933538316665548491317.5496784410013093878567221092533517 0.2340809681901666511788878737270893 0.0987660661967041499629520456685390 1.1039904171124189375645413232235806 GT 1 -1674109891368426952169823.1455520475113131095439400464155393 1.3218269429554351778121313054343894 0.0404219298115188949242252759047495 1.0412616013535134826912461609467351 GT 1 -36842398041059388600095742210760988.0930067376596391684101192979883496 0.8667928253867985137391212214071595 0.0580929017234515545857360284212788 1.0598486310563257646291817758241302 GT 1 -17945259519.9526628187772331820013527322440284 0.1677280843506370767302753065538624 0.0904569509396648001619321324350360 1.0948129494774467095187449113241097 GT 1 -26975032132376368636064097008034289474206.9446387886390786669432545922024426 0.4646685764671069376133593019355490 0.0338698262115317928176186039939193 1.0344566983737176598047392804888925 GT 1 -42167687467187915708316.4731190021033086524925522914797067 5.2839817177585821991364577512441258 0.0451142714160630920646749066792848 1.0461636015937994307431773986934828 LT 1 -11928528354347178734866676607456847211188.8286327929735720010543278809251045 2.4779468573828196059684971863615086 0.0392031753079525635368587316714480 1.0399923130802262421397485795951622 GT 1 -25121099649229.5018693173771586782867730531495264 0.7786757625088811077185170339061104 0.0165273414632338481817993137126940 1.0166654417054274598944709690077637 GT 1 -37834803501262297045718.5625464855193903490129318154820821 1.9180948016052583043438955618574806 0.0067486702974109711469934493615077 1.0067715455492470347192139683399573 GT 1 -35943198464161149812241735100507798028.2948718282337817908799391281284774 0.4320444172608925341966140521705078 0.0998162460104060666944852409760480 1.1051563653983598518333339064770540 GT 1 -64623951535274396826535513018532358598.9205517718844306011284217291196022 0.0035953367032490973439666967799194 0.0855055466697161689742782080230694 1.0893838764180698108698781321021128 GT 1 -3158.2948226696327965627783241446659029 0.6206749344772322802791690355185790 0.0187607571549598858732373073500946 1.0189389726513013649134744565203924 GT 1 -23.5896066837604537554633252674135065 0.2512544073066416971463956343257629 0.0544649857359558701905898320239618 1.0560043590319838138743759976955810 GT 1 -6468115149792435858978090711756.3671141339403634098259324053454362 0.5341168211080954921860591999075225 0.0610163893512917099389528366373543 1.0629572539744317991983753148960506 GT 1 -485711794650519953076546072957963.0870063976752263719685024418176027 0.9488216426333456589694723911085245 0.0195820707279357298152668322579022 1.0197763397841938282524826347202006 GT 1 -5086989915643988843563898948261.2814444062831836617974049126090447 1.5492021735489607163517907666438081 0.0930959935050568825069619923181188 1.0977186707470589064310977697999029 GT 1 -303775847102527745710268287039496590965123.0113223843729939387551092442040182 0.2079776746720820972249924593705295 0.0975788483180048054460936532999125 1.1026739591491270846629072632559127 GT 1 -1001677385311318681305.0086943896641297307284542713073376 2.7980389467335696416527142198066785 0.0377270782248093424407985710210352 1.0384571660833530237858603444428118 GT 1 -64957321333.0179741671429743492882146191025314 0.6183864174830356365934614937439899 0.0378600463637565330420439143056156 1.0385953569475462047179249650289446 GT 1 -8835835905909780317612374359464.1232508115602831634756956676658963 0.9474102398966329193300064734455812 0.0361981430915325505881367804340809 1.0368695481244431333258790910483820 GT 1 -768071252459191321773669.0382314394825474497393174790899867 0.1607865893410354752363480268577120 0.0770241287883079209101465135236364 1.0801521865201269095836087188097298 GT 1 -4004946197462322089411063505554.3885101685774588891798638511470438 2.5992524325735572239300307754176724 0.0781428962393854007861108396876605 1.0846751883973850722277984827692712 LT 2 -7451925.0097266330688095441952168969854138 0.1277203333851755716225299993851297 0.0503493984879420807438190862966656 1.0516611499201457953188668988000317 GT 1 -14814373871807.6941646190337710269106093771363801 0.6308299444520575700892389496791781 0.0275418691905993696680680635846445 1.0279282575686365261312094354964190 GT 1 -16.1893329544031539795355116653739737 0.0698057194989425872376499736643458 0.0600250421307057713037038236449585 1.0619020446375342227247261215795285 GT 1 -13461449163473.8434824638314214662059489107450508 2.5164104434410823042185988090223051 0.0045347167212456399513703852743597 1.0045450297386687462625038799790195 GT 1 -39648633780328423545930559211492.1142001236277814104590561165561199 0.0269482986452512899300134299274284 0.0657058914467669814391069427848842 1.0679639989365632975044273919065027 GT 1 -84057.5755793205793505500251397019633729 0.1117558249074844988381664921876419 0.0974196155453148963932978088360878 1.1024975240936270333882223854879329 GT 1 -15388315637307931692661463646638334.4550150791849383736876999899190990 0.5115528163367821104175840844904781 0.0827499725248545643119947080450974 1.0863751857929216676274928873245084 GT 1 -15422868619629998892388851048.0037038879865092306016882070668344 1.4964404418112522994493013413286501 0.0823646272757935114840537018481524 1.0859551647336398944550338441721114 GT 1 -90768107552992576162.6298596585885557264800364454683730 0.2938571030975513713210741820619116 0.0584346730239011884308383871182854 1.0602115472313846706222505230517665 GT 1 -18839070060999.8656074974551280798324656404552600 0.0311526912482188048222821352541419 0.0076913162028356674592524461075363 1.0077210469189725563818889829037912 GT 1 -254817237346187820586.2745540536702698875199634126045686 0.0248145154749632339743213043541562 0.0130188248574887356771019848987411 1.0131043125344836616411992427003347 GT 1 -3.8023676495855358299515628511967647 0.3547036228321821453175295924611616 0.0286269273405151575447911703635133 1.0290446695911193612042402933461134 GT 1 -18.8395228112480992690323335337489028 0.8467863651592291065221351710524831 0.0934482064479680531234407885571661 1.0981071146753099205195849915621765 GT 1 -10906842968673705008473655146945.1314270241172848754335796103421733 2.2690502648463633237456903439569345 0.0249745818179855491027930270391721 1.0252917383938333699364065592816992 GT 1 -743405569346351736142.9501315360369234744053045030901761 1.0842665509072451609790643361723694 0.0743934551897241654957080887258477 1.0773060322436197296823644510342758 GT 1 -12.2503958883457190715204264719408536 0.5073037461539331379481462240270998 0.0674210716779703066338796844050929 1.0698014894138638548468950344065363 GT 1 -4435868803123515986318452985.6560274366520757427903300941602039 0.2031779957839278977790556870024814 0.0182652523511243323384678657862446 1.0184341215256527993751929852525570 GT 1 -105118830566165.9417391197072817360707559948892150 0.9702657749185555585659298932895830 0.0733654119005809269583206873078081 1.0761959787236519470356244146950155 GT 1 -42633842407169101415.7899866532788622775611880192203690 0.4753803797944689518168762411157696 0.0660323516674362285404920988862685 1.0683134791127631744109515918721417 GT 1 -2719883093726607315766488690435386.9594733705142244521492932918163928 0.0752857926971741791940570118188989 0.0865575751941037908609038610564426 1.0905349321827695097075395724982236 GT 1 -3394223.8815472139011665075463475210705511 0.3725131564107511375924141277869505 0.0338821023374280579484160338797953 1.0344694049470379389436228797856624 GT 1 -4925789108382821.9265008866080201402912932065258397 1.0668551765146103220584512694077285 0.0471953678430905423595844774281783 1.0483453993272247178927745268398574 GT 1 -1349190740407374561.1298406102541880618332930176088651 1.3381056797846597897394497607911623 0.0519523360133641834633795944051488 1.0533504995241195819253425659423096 GT 1 -36623.1395998980279152730036546702053856 0.0177718555693223344206154829461959 0.0908242242128629372740819308877184 1.0952168307956283809763209896424091 GT 1 -13085987045831861846954264155798179606028.3599154460548095526051044262726638 0.3217380131093906930129732688737025 0.0887027805233917495213624592137343 1.0928861786461194132867441659259382 GT 1 -1048451509685935042987130985.1231099955802960411442703913604327 0.7607680811218707646394773155738816 0.0660863352397477605144635815933093 1.0683712810426268838101327054165837 GT 1 -6656144080337169839616084719062941.3758448632170319767545423014377366 0.2441734486506393489460636716780778 0.0906929170705932315036062651207789 1.0950724168498289849138653748241481 GT 1 -1983.9800249576447008846433944203695816 1.4499839975610031436211458498124730 0.0900677583237888985337509072139816 1.0943851419399734585673247318944760 GT 1 -2028340629292267476926866847451344308839.7199659475736470836663205902209434 0.4748739471792411512936241533429484 0.0948717887645557333527692561225062 1.0996786754430206813036017707924205 GT 1 -131153586354962378801.2632245239297766967173096296664965 0.1528323879098167177749182859613509 0.0458238535823917030258702842294615 1.0469069847269473681228321993463146 GT 1 -2750148103208.4235329361232450615102217217312891 0.7109137367758618774430833820165528 0.0693672231962042642693101571163641 1.0718905190401136291637667320137337 GT 1 -31591416119897532962950474.5057917695236644133216929945045514 1.4489529700270007583350601342829581 0.0468218201729876870648846805922714 1.0479534255145156767852530516886746 GT 1 -5589220353910733509828558392327800.9022818394906136572309184270809405 4.4684255632808061292659297509305980 0.0578188273598190213642600592101565 1.0595576952548599452939480839650942 LT 1 -3071159.7422008380456746207928448587595128 0.8658645197966280894066972200404949 0.0578771969961143658823372212965244 1.0596196487794170042351296996458734 GT 1 -547216028218328550966276593372352.8729886363910167525717707697098199 0.2331000756670355648636079016268291 0.0726939135605799506675383648626088 1.0754715775833269320749802088409223 GT 1 -140569823257179459834564.9910886044628616416275531750851006 2.1558097689971808156417940831382507 0.0787958731693853234910107009124909 1.0820736312034630543886774168861053 GT 1 -166802479930270073676562.4778071250655820917944631824159589 2.3608103911051508098894734059076480 0.0690420921230459709767455182409481 1.0715412144597461986820530182496575 GT 1 -3624575710734312418952194013082.3523108728221033859183660465383986 0.3418955867120588955550813619749149 0.0232836919798623750424076144030650 1.0235590396064254423918845684539229 GT 1 -1344.7503562329061977532356604143108086 1.6718284411845276925947429622116004 0.0051619585521829958699658671614557 1.0051753274866656898940713796027823 GT 1 -26560965.5693593854358630628054166737616671 2.3277331485771056172071846189430728 0.0487779202106224082535494963224544 1.0500077213125484578882332169016295 GT 1 -12.2456464930356497803648047626431822 1.4496488217888375381224741718327040 0.0821550252195079786745639805193306 1.0857267754103964365934184476805785 GT 1 -371725650651780283367353633.3428282171012891140523141796774540 0.7366438684265985826626942615917516 0.0522832284638510768311220460687831 1.0536995855684053395808618230293839 GT 1 -7134670911506853427414864036417233272426066.0789779525867683733777410747784428 1.5121249476459031160779686758712197 0.0683619053428085839756613834215714 1.0708108501622301740927147293427409 GT 1 -3146812781201.1021185179463144032209620270305213 0.7100922776588204980218136579419830 0.0410483371828008617118627986819060 1.0419146091049856900721834232339033 GT 1 -18621511366229364016175626.7264435813557425847608271728777319 0.0241726164908390504340922330008813 0.0457767786354861372739273951434209 1.0468576502451718657340949517842633 GT 1 -34533291997794737787801928884304.4100114358886795191935973625190064 0.2635231845701345842871225453141551 0.0721190106909234132888337811392448 1.0748517986989494544858066097320330 GT 1 -93197602892506063257093.0843503914702524509829787917241359 0.4114502157319139140379407198447090 0.0373245861174909599129030367605346 1.0380389812357618118810605808685312 GT 1 -23221473642869370933811470807912973492.0001970441024609732902216202119432 3.1830848573692541686652234480142890 0.0681111338464502621886996500293354 1.0705417137309945035445081119523009 LT 1 -1236.6478281676840549960266417280398600 0.7065991937308158597967224225995390 0.0009965007009753795337811523619042 1.0009969975378918825787122240289130 GT 1 -9912303978387746585092590.0883120496561217189049378308172507 0.1194903020892521506624431873858714 0.0920429097031873480805248512964469 1.0965581588798739535822728040809373 GT 1 -345557793486952011650845464659746748.5176526641171981910816742427592710 1.3131194892496698003587212223952849 0.0522520468475847553838518123271503 1.0536666842794887045371031681671712 GT 1 -989253335143172820976.3468106014744493086037149869382958 0.6449802101255669746095010346343602 0.0212447644623811180823365524439253 1.0214736824831360046516826571598160 GT 1 -79178015859.2502318345692701037954048437297225 0.5688165240001174866740025852817932 0.0749930865798446694466424151191276 1.0779540675299063236848539290728654 GT 1 -60708317323800645186.4426009859249451463795193721211538 0.0334882700124168649479701994096274 0.0027006112200644525528582299429039 1.0027042644493290794468928915734562 GT 1 -154677184.1938601623690069616513371426238935 0.4879469558591717787529652657379938 0.0142473747583222270597375909600909 1.0143498430357806425902144038510952 GT 1 -41.5765179160975172618942294578022897 1.2082051648751172634141583970763159 0.0559055058441922202742815821524490 1.0575290181049593629139489640247357 GT 1 -239651342517062.2651384446204560156730129305337640 1.4120792101129535769777830057143046 0.0147476658790853109411102807131778 1.0148574938452124112988414489314298 GT 1 -613286764142438996745376202604.8194629494080291926969923577790642 0.4307012513875682737749070659521407 0.0830032296764052605037580900634048 1.0866513287344974353436909018103201 GT 1 -11176328725406082172425856598.4746915688513064993019520236587392 0.5295065690507037353561939724268649 0.0559649177959709519095738763806980 1.0575919501754509245023278450464977 GT 1 -71868512503839282310.0991969757395334216927079442123623 0.9367383725412045142870627635602851 0.0445398603996015651777623270046612 1.0455622329690503384428414338799112 GT 1 -2099731296049939841.3408019935915399811734346823777180 0.8589711041156016993974599060647195 0.0656633690198574528632713549164474 1.0679184870801892694541305100688936 GT 1 -157521751.3335574182991094297929926001221123 0.8260252775129358181108863171816675 0.0987642003208389130886954180255120 1.1039883467576933327354887374986936 GT 1 -31694482519521561173651237473481965.2059325353586190827881468582787859 0.3714540920742599351981195868741848 0.0546013944571137417229961599789948 1.0561486356157471507032922579744989 GT 1 -48215815344680996.6339692121904721972828968892302970 1.1558763723967685394283485399048108 0.0727168005290333131051459621206405 1.0754962590247958333188401786761583 GT 1 -167537138627214.9242962299304174401040125738085949 3.6072928327711344111878123878741557 0.0046388496957478499626984913404573 1.0046496425495502691747186579984836 GT 1 -131883373805.9925173238088835649770302994033465 0.6799261289930916262019171754401930 0.0844482443057037037342306153811331 1.0882283837573513877846069076403282 GT 1 -23673500854066091647263268460.5652824437230395382956361047240676 1.2773246433099771852657606677422501 0.0901083786974039988166393883235888 1.0944297840335828436806761948742163 GT 1 -19506969348033881919993505502342190793233.6638975699729950193925144074153620 2.0487075857817748068190391578342178 0.0232696324195901559702061269767246 1.0235446449874700623952698366128268 GT 1 -353324030133558820075848.5951307540264057525091040509366545 0.6302709754195706168194057993571397 0.0531787549708816742151795078595715 1.0546449628222768024477691445281415 GT 1 -33648156773948584994687598980.3608326161556833031389022045231779 0.1331748922618173893537500342384958 0.0319456043689396587692420607874981 1.0324669994506343428034247612001871 GT 1 -136897721786297188162057518606423.1419883090889598928519448226629395 0.1667288273747744025151695125323499 0.0212960068317428450857899381906109 1.0215260384848569803036945288935167 GT 1 -6847054221989475166.5749084831700768836503647837010228 0.2246761559495002523276327960981199 0.0098867194391406826659253256349320 1.0099359175905717407184885113076874 GT 1 -15687556649041428246067800780259.0631663522641711263108963620989314 0.4057190674558969027598822795529300 0.0863975408839592674380473492464902 1.0903597484070865908382669964773745 GT 1 -266649272.5774608629410176428819798692016317 0.4453507072147860520491510161508067 0.0122562381068230986585346387301785 1.0123319651819267118791170014505716 GT 1 -80234497624783655339857.1326927511444679357622602746662263 0.8282348551141926538581694243874762 0.0108468791850997668552251220218204 1.0109061354658512269325910833817392 GT 1 -487564733620037351972714494315060860972.0850825140637835154946774896837543 2.3675281062681064312721942387017015 0.0065578118922448350221653033253917 1.0065794088114540355996671481308829 GT 1 -178270609083862191353224572.3686278246188738779373693297842140 0.5951225731803813068871025194491041 0.0072043501034250671552107099398238 1.0072304267526535924247586680595581 GT 1 -752217577821499240221.4709256967220995002627975840900723 1.7414604101915414181311041027158559 0.0411317251463943581754878501743007 1.0420015703071382981307213654875544 GT 1 -10352665196102266540920565.5174038103764775080410624755945934 0.1941349417322747502582337887550725 0.0730509150519123186627218288839825 1.0758566394682846099697516350005087 GT 1 -20815119361739439768938201663799024062731958.0407169114365088879990103240079715 1.2821121213600183789564439943451554 0.0544038437978382017515882015586900 1.0559396972685970899461159900241880 GT 1 -1647890205348178.0019728689522781618235628030599338 1.6811051029086295908876775928172902 0.0124555667668636431576261243050392 1.0125337875400098981989815081402516 GT 1 -83869449078557.0751717233901623288846458715106961 0.0509787101485440662936317714253036 0.0866953034698787539354907384685312 1.0906857229237837382362271546107298 GT 1 -4204052653977303.5312900488941353018470394527275873 1.1618361296171955664604908412557433 0.0099858583599318676833683606449016 1.0100360514706064189335563771452294 GT 1 -11056224.5150606658925373656920670223101753 3.5336913284804710374579456293581057 0.0276202456837011670055467338010777 1.0280088570815765584840561253590657 GT 1 -37960274.6861582754161508629753509482777201 0.0935980830517906048513472003934261 0.0533003687782439149845400527649273 1.0547734153881341726398660161034857 GT 1 -15512776388805444279091024.5618644279209820127192335092352296 0.4533311723964637859811555435370462 0.0749809450980723702971356546526125 1.0779409417879109446481443389992839 GT 1 -690514220395199443842358768730904.0448571523085986832663804512893153 0.0819452730357108088033468615767955 0.0226729308052111719921312146481746 1.0229339140829467890368453846544924 GT 1 -384504601457338848107.8297091987201152686745956940359561 0.8690357989454914730297923170263947 0.0121400556634426802196434192638584 1.0122143480270813411791214967711287 GT 1 -14998384289691911845601141056766475874.4678408934959015214052517789387292 4.0798832971247795938003937993858510 0.0028584499190398049461486756690211 1.0028625430889512851566401315686871 GT 1 -766876571277911313425484968653716916.1778604244899426302270579220192165 0.1283104797204991322198151565700946 0.0685768736053900214622264709772990 1.0710416190291964181059392499699545 GT 1 -7492002652649819246835927086608225117.7897034578128533503528997796462245 0.2899347612609526200056384686232837 0.0207612015616914386623472559754958 1.0209797454208875143917491897785538 GT 1 -30784350926318523153887.5941006943916801111985595492383781 1.3274606062417070194644692446367237 0.0062387361870030837584367977204998 1.0062582784232440162473023739318736 GT 1 -967216223680019252496942861870.2200338608745823976747444217782189 1.4216780088294759297487960685545051 0.0814843953865015890380896245429433 1.0849963852350191166782692296196663 GT 1 -98480888581311540834105805839003932851.3532633591233883939739498482472697 0.5955218783414719270412572126471509 0.0303377275467584796036020379532131 1.0308074408395226788651824601541026 GT 1 -88586089222090414321772481845425.8667535981395399350565359857182198 0.8544928867300299631196875067793128 0.0347075558868060741078009071028368 1.0353241726592967028326430478886641 GT 1 -1226129609347562432926667895.5478936083103435925252563985884448 4.5640090613610773103206577641214390 0.0589500163859838891594026173762716 1.0607590232580118551134511869322355 LT 1 -22506484463047310220760079529451262392.2221225408331578903711061695613694 0.7445802311652752898129312331385196 0.0663973400273772324442663710436818 1.0687043488572271609302850801713755 GT 1 -2157533564341.8075841458182624550969061758224385 0.3343735065015980844044502412606039 0.0354776089086727107055276155833145 1.0361222316737569934605808112925721 GT 1 -35373226584488727421694585500778257306669.4148914564915569896356515480672115 0.0814619697955578319403020405093613 0.0729540578747675336763629857338051 1.0757521546386938874221585988756220 GT 1 -40144466263742907359319.1226703543912846437337220387718270 0.1012004288496074879269810107197693 0.0396671356386452085227508709153155 1.0404753209087516356600247942275592 GT 1 -3605987405671.2373046137625060539711424281594619 0.7324678382864577137569599111784485 0.0840658696793028608084850078829867 1.0878108270239074557899800648076652 GT 1 -868360280302714.3047156416177023724730904233628806 0.1288957848557670422485315427473785 0.0547017310438533609376448904085880 1.0562547727635756693095508550119547 GT 1 -22122231028552939249551163822543107.2469560899818358188114818675745570 2.2291184576724873746169217719214646 0.0972273093820307776942071582100601 1.1022844841440828547856114908837394 GT 1 -291268850.1900212400387100447393216022177653 1.1396792519321402657554224794489058 0.0243774127878924325864605532599533 1.0246794607844466231041463900838405 GT 1 -930230286471508043622868.3602495686959742405010641916750169 0.1972335235038759402020266610362506 0.0436597082168996989229233415532000 1.0446414755192287958629383674307908 GT 1 -355062742719709.4252763109179427596646051894203430 0.4853579178837343008500755565845428 0.0271216826567957512909616881854502 1.0274962638734202563564200907507229 GT 1 -70912499722727911893358617224000970.1611683420766001701717411678381560 0.6520263270069404347868069459697079 0.0954280512807722975863531130036845 1.1002934320154567686370750869717004 GT 1 -261116628037403758978.2460171190531551491799761926300949 2.0250294736193749932302464133138828 0.0892284288000063783695384367300708 1.0934631582792561359503793077182411 GT 1 -6362858821853.6906792856094755660387536671646608 0.2599430997104482845457026817073103 0.0120925035395045785220411269408820 1.0121662126818323071519395553303181 GT 1 -1601648505.1951140930386817772401831026760038 1.8206008958485539309314471341657350 0.0648872069034708030528516183793940 1.0670881226413467366275180955992566 GT 1 -1273972525714515275039173213304244509393.9221898636164050057548672310269701 1.9912663756094701613596244760221699 0.0647860208353407815602100700832389 1.0669799211551364850399380236757687 GT 1 -3113409977164674242773193049581835606153.6301254390870341729398947868616469 1.7107516104772373139570168782730434 0.0467824282499580159785513871037560 1.0479120994435750647643436327625483 GT 1 -492620.1310795609030166691248646817242306 0.2881570418661152170962288803258702 0.0312532505720261745629091220170710 1.0317520537493980754949558365802393 GT 1 -58020980.2705641212250511526599477836560374 0.2614107173500418952370267715412197 0.0814317709856910495014745764697109 1.0849390940000067081474351778820636 GT 1 -77.7865790692064283740449383126565052 0.2425498731917461974507761449549698 0.0408142718725472900868473647480473 1.0416705543125392575948597297509532 GT 1 -85798.5632403584532846006141111134016727 2.3199417978016452177433792300977054 0.0383967386298727062853500891952223 1.0391533235990759262791962051225351 GT 1 -68156317766207659636732776717815648201408.7643478799229337055496286278205706 0.9627062303121834301083362112207828 0.0229006021456655560118348981074795 1.0231668942900025818131923008714192 GT 1 -9746503089379615822866128.8781311135774275929084285920329040 0.7008463988361949458550374083304368 0.0638985295865408026713808244150129 1.0660313998189404117520288392434770 GT 1 -1732131511777897355138013140805031025768.9661554440605813278191115315758106 0.1631604130154603192838990102648233 0.0267283750750803635291881959419129 1.0270920734474641119156929526201563 GT 1 -9808035220520561668194245905637014882144761.0418139987220623100946512900923394 0.7551013012163362980847679760943430 0.0745668637339590809133368551812586 1.0774933956443236812193829917886170 GT 1 -3639419549036189161402361502586265432.6659454439751035208383102559955170 1.7730311529935478102155362172782212 0.0840957004483555044092878846686977 1.0878433962380573733588926773417083 GT 1 -111653825603849769313353233.7660522347696142930879900418004644 0.8422486602658823734743290228113732 0.0090642870414268797339209426317122 1.0091056176356965053501802838962810 GT 1 -636723718664.6437404230989989220164164456507522 3.4575377232881073668637369794357453 0.0227830220419215399223171498245996 1.0230465656622111805269156422857036 GT 1 -439871602098659.4772867325584382388611688524886694 1.1455024252667766434700833162379894 0.0564984472873289477973622166582809 1.0581572684804813682174506000030896 GT 1 -2966153156329585911786551005760.2798573514823055185959116694694733 0.1078792337152364125902185632099028 0.0811963236930841272073885778899551 1.0846828069704578367053992855949727 GT 1 -7625311413740625099532234.1871955429731483887246288061993268 1.3629858683837382467888974868165907 0.0430895903704807635227729608994444 1.0440455077635421836875566154838039 GT 1 -5011600712827895721128139118505300.7896272287853215024217590747662473 2.5385401018774365682074208015240742 0.0991628805665333490332145657948816 1.1044308152593510428797732229481626 LT 1 -225477779690288202629.4773319205331340145903443998904950 1.0129876943348544619987725387985220 0.0181427638721781110908099164212250 1.0183093619217054365980111769934331 GT 1 -17142272661780179073990.5640088837970606368161413958143038 2.0286206820603214994693925243221183 0.0796189425008695881327441394361191 1.0829675017594284985182224787091061 GT 1 -68475318108840039118209025256224190661029.5711914622960578512638103473133679 0.2871241785842666341996722224060686 0.0150754786067923395931988846267037 1.0151902687733257832434642285899058 GT 1 -67.8250514791322062726588324918041190 0.1055269029173122043670555902096414 0.0306578827984750716136584570538319 1.0311376672756608581234672538340788 GT 1 -4872384928573711.1635611678641352641849106962603582 2.3624059235029155235296947599937421 0.0974782465346028115919169005755976 1.1078220172190784124250660485472761 LT 2 -7582712416964080811036363382099.4277207092750520584600827063302811 0.1129017624476987924756393531802417 0.0923872991730699678242495059493892 1.0969375323148108270448929712205008 GT 1 -373287166500.1664091619843146600143787887679133 0.3570675456640396780746192036204257 0.0267573883389524912849193928250542 1.0271218839295340127526829511958852 GT 1 -2.3785051413249724870487183416151084 0.5389330418006170017473521871705789 0.0444869700511608888368215073177085 1.0455068786089818950883188201750550 GT 1 -11111760527534862620.8548658387344070817722436031545710 1.3989517621522019373000007477424041 0.0826229240898267364872856750966402 1.0862366852387801913982135937610538 GT 1 -14807288371629547698539874407512285.5269745249830737622108800566877616 0.0869616452285293037613496132824726 0.0555906896795089915212674338131025 1.0571956153690440821856031342627322 GT 1 -161379201291394765505386376122459232931432.0294971418889021283779711361684484 0.5702199847989315601019553166586894 0.0089281042267447571396542115193998 1.0089681985720193841316075887332486 GT 1 -861758119862755976165949357582561553738.6205374565772017138573972370617694 0.2888138196886602813107147474890306 0.0476233400357554620241749939584803 1.0487946712171319624166603658532603 GT 1 -68.1108989518530940779690346095758993 0.5558450495984407993687019878343271 0.0573656319008974317047345058061293 1.0590768041990937977012749742602875 GT 1 -8224016177309549.4290291651938009702063672350247896 0.1520773865424918297764400356958423 0.0890001379892464856483950206864962 1.0932125331922741606065896024061371 GT 1 -650086508184499435098227.2554514677698072340241102836723864 0.9547960357651696804994611655796004 0.0479155967970640664741294122788372 1.0491015892941198489920584202813326 GT 1 -3972268941.6952291202390380233787270991347695 0.5582525459779758352053986803886725 0.0947199901629028228868344025192954 1.0995109800025760756032342396895774 GT 1 -160480.6276060448056801855473605642527022 0.5455757599132985377059061113754996 0.0976930506281079098540734784044178 1.1028005181695012321445942547244147 GT 1 -8567713589512790526096604.7337454756613803511613315701837425 0.2736038282949801527608778093228201 0.0854565073877147129964042309047797 1.0893302533840349045892326859843195 GT 1 -67689224532356343930655175186371285.9890501618031447470913770695601758 1.5765124852845643448624354968229476 0.0986129028817830193560431005904189 1.1038204830967135794129086987633560 GT 1 -524505196158886801.2702016452498839618749459439826092 0.3571568216805896059575780900035153 0.0262391421272609204197190083820610 1.0265895312840044336259090872768768 GT 1 -4759128908662070463999699320264263910.8256632581684782546278108929554826 0.6495522854276177528811305986682677 0.0811569229368464117057696466378933 1.0846399252183784493956090260445909 GT 1 -14984802795353333706736590807062814522066385.4987710672085157341730010377722975 0.4200089968867040107466668933204849 0.0185067003750256387532791033915078 1.0186800919573139731755513865090674 GT 1 -516682394290843948225198997494.4104056185889845128838310542238565 1.3814216642773419074238447476153201 0.0060657369591880306761934422704192 1.0060842082742552411720103027801310 GT 1 -14901659404849430378045.4448233404617730353863238044425727 2.3832283207905303727048062225516285 0.0760936533832793253036263776110134 1.0791445689527780810079874117274126 GT 1 -49041251427280655093825229.8721248398132835281824326702556677 1.4352724750501432997655598690932586 0.0176778842417207316283543315242775 1.0178360042940617643314027721452526 GT 1 -575714182917353087846929561153393799904951.3032139531918860076791642503962980 0.0816902615580179969534070592703947 0.0644669407100090218279556198449220 1.0666387952606493975836686541208040 GT 1 -20937491085701846.7532036552877637680932524318495037 0.4567669786732513548275599770634083 0.0730119023823548206844421750527828 1.0758145531776269455709473906905675 GT 1 -34645352.7474906868641700332672130664930726 1.4617292731673758441366185054589630 0.0507602365489809671377244259110240 1.0520938637566366781698690056400548 GT 1 -12940172233879555.9254940767649252980186680692635918 0.7571046690123780931726126996379621 0.0002726596894466712345204955729052 1.0002726968678579854434912608012288 GT 1 -5029192304377578916267383333974866815129.1543542327779422676747799008809505 1.4340004724655648725819134488545563 0.0266640852751834261267442700631006 1.0270260202768985851496281890288254 GT 1 -3442981568.1154902607596595019742194813605534 0.2847490262981821775111638323462087 0.0587244319903281539794648362880353 1.0605193363488678671242835841602919 GT 1 -101493253792416342979531472817536547.8150075559257276270619867978920935 0.1715116266097292657003257489001935 0.0864766192609429317796301336845041 1.0904463088128431113011319566510366 GT 1 -14935984114742806853971176033318950.2303983722148912322804827066647366 1.4534963187830179692539627037305024 0.0936860982029424317701001057523010 1.0983695629713421874470534665351677 GT 1 -1305931775584011964400354842483738326.5153361910796391601536201922922980 0.9825467950163906881462839413540704 0.0342820357703167161827865844789136 1.0348834498941178720005180332067126 GT 1 -170604764522226.0090775760010043644945917030302169 3.6491765286880543985244964852778983 0.0944438635615744680234508191082639 1.0992060086179077949926634756096031 LT 1 -16724.3513874257295038245021420404521092 0.1044478910839267749521549981323776 0.0467606893907488716729100158384677 1.0478892939351880258204765263849385 GT 1 -246856731284258509994955062458043569.3771915546164814825073480260895703 0.2423616969246068788926063357743283 0.0166814163752226622706914427727268 1.0168221181324941801642691085584163 GT 1 -91124625380187395617499.8637971428858445902730038195105790 1.2901731307403676368883853920490330 0.0054843590605533985815539604242198 1.0054994533714164270501687865891434 GT 1 -12285530967811485626939192824733684716135895.5708452389571835978924098311289803 0.1828930667667293723771578743480017 0.0074215744784687461218308103725956 1.0074492513848476384162305262222139 GT 1 -40.1863513334385732404603529721878635 0.5129764124414368528639583161450946 0.0379371804991831816259994897309971 1.0386755295120438760020575108567986 GT 1 -2949813206.9740303350692166837709026802827801 1.6483367534592547738316023047102254 0.0904135880155245711797172964251233 1.0947652751089347106633339651710561 GT 1 -1225937647917714.1738319543362256843793764827248774 0.3443907284426765017936185943869811 0.0509257312842091236128491103785169 1.0522682234598713696931414933483625 GT 1 -318451202681912255626053921731306515299.9558119540520222533960799396427751 0.5600902175562300051825435392541930 0.0367371815866533005193848881297338 1.0374289881018164343902321105777025 GT 1 -17135909627238738633287844697695680749.2407314143120955202107921772556249 2.2159521924039314429094906590535011 0.0976312712392871895980736995979699 1.1027320522511166283114568761981479 GT 1 -45.5985097688311873171976053344326747 0.6038813499790006159917358860983564 0.0722606004147319494640191287614314 1.0750044050455176638050719436480995 GT 1 -1607845762554358645077974.6091096355384046736988013835723372 0.5941508507533125119552425222837116 0.0158605407048876480233437936636650 1.0159876650462683751631424039102148 GT 1 -527244535810142832.5705487428103653254197004679871794 0.0980918033090228716222067094322666 0.0531330723932478826823969347216563 1.0545967156205434077924972872161218 GT 1 -21570516985.4980827490456985740963718916238778 0.2788144127390906802788515153971965 0.0914008013920115706680090806145381 1.0958512076647198717061338926509506 GT 1 -398062378556328654666496527360.9753338646746096098891825681556378 0.0637266458373319266445440086014892 0.0428677906052180933898442382664105 1.0438137472331852080823147013961846 GT 1 -3733812686293910536131132499666.6758923280965134898981410865633803 3.1133506633759932102438638049140233 0.0813913929806846572797531670711669 1.0848951374203014383551470547113356 LT 1 -20810597661843409735873754229917439913710344.0551008463387220051564251544441857 0.0040280583484257016815399822966084 0.0646972079975796191202039338905635 1.0668849604050412174780933193287049 GT 1 -158679897515453933826495336781868746.1441531224018057142953200601608554 0.1188507090440669436247747388430268 0.0108077303586828331635002162068301 1.0108665581234812822470585670736604 GT 1 -11158204484393729102282386473.2435309564197417613956469550796147 0.6960659594516594398879596875174734 0.0168008595956905702097184770023552 1.0169435950143501637818786280910530 GT 1 -588832267937104739.7525764877853645195982073598824231 1.8346968483834517519395977436408636 0.0872695334484672336115169239546169 1.0913146593310629711366691168725611 GT 1 -10.9059580074774377704869568992944874 1.3026681239667613927111977339916272 0.0477400614239757904993599939689558 1.0489172367379834503545010837725525 GT 1 -463316542622862936426826255.2591164218519234057146241345896102 0.8078773156688856965569019228186572 0.0866827282723741167320004124377520 1.0906719541224407540199909525257511 GT 1 -34053550663808475357201211004008.7875998526702243427956093215896861 1.6167735392267538036254019052607020 0.0620665772589920855260186631257945 1.0640763103830131364376197256450682 GT 1 -52407262428.4042714327248483931780511180821235 0.2882515631323735575450146237620665 0.0783705101127600383383763498772281 1.0816119909768895627205580847069450 GT 1 -510100847627920805881485088598217046476.5790542921873844200757386550557037 0.9726195591518182812427494345923780 0.0113755345984164268501018627905626 1.0114407308921432746356544270267435 GT 1 -65.8960502625035503456697135089980528 0.8479699220354478945990046513773474 0.0973705553902326539850286976921580 1.1024431701295565561219378660604542 GT 1 -10608295352288237285279846889086216728409992.8674837599947408747936055666151629 0.2775181800310826367121176254754743 0.0799072505463368965516469396089638 1.0832807993969568469795662358210416 GT 1 -2925748916112612011237164249291499662132173.7262521891756011130483408632610936 3.6615252333813952133611999137516880 0.0799562677146516370740455849289834 1.0833340749760378190984553276627701 LT 1 -8419144229398311122156596.5444233673008066012369106586317766 0.3042239102317592560690613255048354 0.0102092405895942800688982239450416 1.0102617123228366813524911653477768 GT 1 -45958464056379764705707143038193259.8654328547382780183770601706035368 0.9517225493979905133880269773661736 0.0362467243326929371675410510234154 1.0369199552337907704896372413260995 GT 1 -17824730169363309619285810457245404.3957047457562520902092970337181690 0.5386881437872255611293569753597961 0.0630745096136522108673306315290112 1.0651515192370837064622304678978186 GT 1 -32891.6828183931672994338360638986551439 0.1025337485778253135585488677325676 0.0359079835019728823995197690035658 1.0365685361281366415922582311431759 GT 1 -430700887768307726060634847385780331977.7690552892725324632637433858656847 1.8596061236327514150665490677525627 0.0695136787429872132544173113804045 1.0720479034302237032587999159924001 GT 1 -628534611718969368314517012546.1347513740816482752376698012436490 0.3789844459640103289904766849640183 0.0025382366367615758400746818052809 1.0025414634207577590705664297768960 GT 1 -11381357355082711635004327862511866939923.7176334809007899691091561501351248 0.2062490092687234928073478211368933 0.0823979666716041578012035901284446 1.0859914972492091179899119134731787 GT 1 -185280313.6565089868876264256356970565927340 0.5162112264824702654375879688844654 0.0176903762146079581266471608443082 1.0178487211535484143646710383646968 GT 1 -2940193569614252479.9496126194301111865668245120172032 0.5497366289440139732671451177421783 0.0646775627165549512931600196374486 1.0668639564319119874227523486698316 GT 1 -5490209904941640615.2437444643353645345437923955472835 2.3303379856145069042636449287647729 0.0927449452615476718644067717530420 1.1020683875663100789100818475065923 GT 2 -9771025054.2824283216474189087048877246503360 0.0077829057970549490083161080612506 0.0862991365417600915248565315670188 1.0902520439651599254780068275530061 GT 1 -178029637686608770094192818701891078.6882943991291075453109263271944656 1.3119531698884315762354955099214869 0.0220460774126396932715110794961655 1.0222927239760697453437461677261784 GT 1 -158537390941524.7154823709162503836316958281478241 0.9689998006317069477583526512539229 0.0164469291225268692021794896418368 1.0165836813709800607843657952033404 GT 1 -166661972.4557647917130859432036647164955245 0.6798528937352682952443247369883991 0.0570547278733444715478957335023058 1.0587470339536606610994992290851706 GT 1 -13546934362382143685444319222.9340321397436962214702829409951069 1.3451375021050885880080404845644521 0.0914330928278578978135662515583747 1.0958867480985272291902633569409678 GT 1 -40258074177542908246865563621199391205.7513574739495881269927044995557638 1.0731609484399576696055489057252489 0.0142961245459120122426853106944959 1.0143992986414026958030427025564217 GT 1 -12061959318.2932803598201721123518472416243915 0.0303417679195198773917248623729556 0.0913473155682130772389620498454813 1.0957923431514257980742554185531957 GT 1 -828094974321871678046877957037309120.1897098785886201563249997753403163 0.4496821175344700857785558665422847 0.0161694603697881261016368920659329 1.0163016125836866415387292575539319 GT 1 -16781883743729159587105421159581640547544.6919017466143957283257217761864907 0.0832315966417236627384555215234129 0.0727897841569241820995501996115109 1.0755749690674693353867100554408060 GT 1 -991044649431025998020097256401.7106405585732939975545742183039788 0.7522217130304730842678434425699536 0.0433155879731517068203763597378396 1.0442817099116291569070533158513279 GT 1 -15126.9509179829763412256421817712980898 1.7801987122034258447146257211917059 0.0779910912322642727124851039727216 1.0812003930343330322169452923966964 GT 1 -29973592453.7858744431693729656215709906360246 0.8846776497450367351729981694047521 0.0996506109492584235510299161580612 1.1049723809354743881451250434904074 GT 1 -458.7540286827772394523604127205630994 0.4105338228639428424613242648402113 0.0408931352716040055374552531223642 1.0417527768049732588858293280972052 GT 1 -104516314993450662626858.9089500990779870951870189129001943 1.5018531747415762690132294626695709 0.0486980244524598983678734368159276 1.0499237320899308991213066350205334 GT 1 -598.4808578667680642108607575010771139 0.5488485721075163937288170786665273 0.0218916957308539435269888218401791 1.0221348745171040121601124006488722 GT 1 -70115806330.1037691532694732993877635056534259 0.0763719821306762088017720454188017 0.0861764685686860579070594104843708 1.0901177990012061929453344260999491 GT 1 -436249706365544644.2754069137917718067986922312757767 0.2034966842289980090746951047231689 0.0249165737256224811871607482861392 1.0252322462351827616842745088464444 GT 1 -29864203042948226140650175399422159078.1861677864077205290476956142875156 0.6413492644914771367162782185379761 0.0339408806102816368588971310655276 1.0345302464458788495112458705146004 GT 1 -111804279445934018411168.6684059274959459686216366811173081 0.0496259066322088251308723655946734 0.0691774643192250207058651001501548 1.0716866367590146667653577892826240 GT 1 -135.7948126547929064753621678905403634 0.1780532761049193537701751973332648 0.0490684483484260273092434048059300 1.0503131941568662117822684857600691 GT 1 -3128891651945022646619.2143519239115365005035627401416847 0.2531681099582821692091938993981774 0.0328140453323563681149336705363977 1.0333645014292154258905402173201448 GT 1 -116.2344446186275380331175142135906411 0.0505900106023283378351896668474334 0.0159499042946472517453438470005596 1.0160784729560999979148459144201263 GT 1 -1057046282868113435040947170.4387500259480714924462124991082606 1.5251487103850282289064496579532597 0.0299319657248514490555727088713317 1.0303890715163048824741354707085791 GT 1 -897937346122144781615188134586124053762.2569574861146900937744602482256740 0.1481550278649071775762293918663504 0.0583768311745822991347920574927815 1.0601501175343935999452491083731328 GT 1 -431760.9799189133633413560787727960261493 0.5018667070441053070766697776465808 0.0759847961032798111859347195292420 1.0790267530421457435100414722095049 GT 1 -22264798025373714420524282606880007390976.8766482869888733558189462682289116 1.0002004105117847183103563508721973 0.0876186719154858093119744738541667 1.0916972533971399529262894186654196 GT 1 -978998.7897397755389061194855226468218792 1.1031892611180279746122495966259321 0.0582052795644477893345293284755938 1.0599679470117633280767315766998197 GT 1 -160295479641807093915543.3392525120208940894325488766348818 0.7236848881241966128017620125358191 0.0668823325044347417574390699425553 1.0692239687283278569008978122807708 GT 1 -7717311093440900.2702650949462579566716615067211423 0.6564488620857638039225863162360125 0.0027892378751766949996667267552474 1.0027931350475863710459397806666699 GT 1 -11895172947540800.3820757977938312136065814181531272 1.5743159898967589787945480586886668 0.0871117333388782243358570389906704 1.0911417863131527005606000853171631 GT 1 -7485284944393346.0031847818348436685307164230258402 1.6821803228060623643252233862709521 0.0013571598347800299340406419993181 1.0013580816102807815735440105565958 GT 1 -2185146780554659389600249318.7872846769251943444176785077594388 0.4474752790150601611159189557545788 0.0510119226711491974870933345392242 1.0523590438559230928258459959294745 GT 1 -17113022874398725592285.3655223867711239179517436182653845 0.9693907511039823520109079984909100 0.0751139968181543659339434754062031 1.0780847888677705378400055842484968 GT 1 -156434268272214428036185433661923573759680.3425635877785609398096238862008978 0.4673474781971265786744440752350384 0.0580857167883213985720703452764743 1.0598410030134541896999470386606773 GT 1 -391234146549.5751557843729230509570235099069514 0.2775036476535047965183069043631826 0.0001514090248068729094737887403528 1.0001514204883104025881632711998065 GT 1 -1057082065765791652498398463197431.4198932415458559553457177151802185 1.1531085321251043225624639172527509 0.0560200750967817177323371310993683 1.0576503790551142995516557125960379 GT 1 -68365864909314400.1544040974471915735183573798172240 1.0852621489551389078610427302156214 0.0567932533223906370388774492972968 1.0584697768184753508029538891084531 GT 1 -1977903940680108452708682.3843033828113899991032955047214964 0.8923584603399947935105373084990285 0.0842289057721498455325515523123487 1.0879888426686657032307287035864555 GT 1 -101079361930094090117360.8047055870426054735514125727751894 0.2817913561003271267960777708582461 0.0855972065575889745787644740862618 1.0894841115604336513542734493004175 GT 1 -6.0251619724755260118850479362659919 0.5903138575658259789861672900014353 0.0532865859780388435849197621382119 1.0547588567050830154177762626436753 GT 1 -156927778.3430947139918856494293903939049785 1.3703784800884405050016806041525006 0.0010280992012907289891229281263949 1.0010286280577836072381025762869194 GT 1 -155878.5406704270602087411942639188891694 2.4525502927479923116134051339099789 0.0128590698312194790700402291356537 1.0129424633497871562882354387589759 GT 1 -16042074932870484288642554.8788357259343779249162972273227898 0.3373127289548836241341479179474320 0.0773263963817644880282895127814767 1.0804797325685843006925740491984584 GT 1 -7267883.2759299860664736871954894483097715 0.2626431161212185732203278599658474 0.0241637628586504203284564741355027 1.0244604964615212605093868372948927 GT 1 -11611383415446778062073.3437387465715474451119884686123589 0.4770255933886726544153162330325492 0.0082332275584993373920060239942140 1.0082673077654895282079650429109020 GT 1 -800045088657541765598676211429953806331923.2822399495792818404036657311326625 1.7373889708086772690657334437273347 0.0314298143170571225828311831335644 1.0319343303220329979645220708185610 GT 1 -15.0494068598037722641575200411414482 3.4010791461608748604918471276887685 0.0073499689189113281976931230320101 1.0073771130278234687808121072606257 GT 1 -3216855920362794439921099744.7900708675346382983935202510551224 0.6830217027684009700695541496520918 0.0709116648675985376753218959610191 1.0735514584320884878993761038555535 GT 1 -46485660144098349095385535.5773775480253041060673799757748473 0.0997550683576064705272386634623648 0.0722246315226079190776095513133317 1.0749656353275422139807941425569807 GT 1 -1354037430082225874768292.6544933598229029344964057750683941 0.2272979597833382363484837906240642 0.0550354113822936739226606712036168 1.0566078245527163309094243572328983 GT 1 -1.6640263477760464959503097182643366 0.7042229125127958927056152951635936 0.0442087037151251575063870643287431 1.0452156990891299796079966707767822 GT 1 -71041915712179906432609121318643783859.5963768543618616190299285998738468 1.3939065888983191856808019833351754 0.0706309941946952759137621667189173 1.0732494114936362983611652192140024 GT 1 -2.8172038440595829740647153019822109 0.6421951552323480609261484045738425 0.0484738773739067491917893766932737 1.0496881384703022517423774153626046 GT 1 -1016407340.2243705001057673507744083716128812 2.0748303055214572830387301533283968 0.0189267904941407383288514466039828 1.0191081947742901407441826642232606 GT 1 -8850522502889279980.8271145748728197837046747236006119 0.1361117919857724094347319854262526 0.0366159972961853506195260318127857 1.0373031899645558699399090362565966 GT 1 -27754901172831303477001184640.1355375362416888536922129800460035 1.8605208322919089815104675458118400 0.0116546483980234075731102655217218 1.0117230961554476055905074436970769 GT 1 -67029420376327.9245400962124800846468556061560017 2.3409689482467760262592966093300065 0.0210492103014309473091037502063234 1.0212739036000148938121233259892535 GT 1 -2.0271911745333880104194864394597257 0.1854739361097058757351018474444027 0.0644965678612751660589271387733900 1.0666704645000301829890352656653685 GT 1 -3180159621799172305886496475344.4583553805956379930142021700401532 0.3467484196731894250132616307054028 0.0696051449030994780637562667702827 1.0721462075684440016689217411141072 GT 1 -1952588483553600769126978.3526926705243679644280173574302373 1.9022272272707142760228281921042206 0.0581329867268232836186224862776808 1.0598911892411229879524416660675968 GT 1 -103065688705234.4907322536065544868054376136216490 0.4356897776006012783109206588638136 0.0109816350723381115450918414882478 1.0110423783430921821610715632796373 GT 1 -3337611442228157732054040545351283048274.9527541672863430891405003086251078 1.8549864513298341755024409090686069 0.0720267971829923938818159197491223 1.0747524228876404130037980319113451 GT 1 -469569956493520517155.2511359391034065701722485180136291 0.1018363978539832674722162116641275 0.0095639548578912935985183165260102 1.0096099831844774225646199483417430 GT 1 -7.0124980521607010692331996257787144 0.3405996615530976972759185494598360 0.0778336790563567162015405722951438 1.0810296802151238955671286716536903 GT 1 -219376936.2914617284128756597796128544067811 0.3677094981524346429621324063296040 0.0329389499584383707215484991192089 1.0334936520764197596026382768458952 GT 1 -1881892437029069296229.2112428060581711764015419266154567 0.9546651930117577577186570020074148 0.0938640133106882382474650853891793 1.0985658885188207418422858624023510 GT 1 -68008491724709776880827.8667862918054291024487104146556048 2.2729737466330923431774456086594938 0.0570897515291086632570530373797991 1.0587841774732841801748824635844473 GT 1 -1038624394421256324324145422614558073.3190064378872165939431405073945743 2.8606938345434567904570899593171478 0.0128046532220525400217024313135391 1.0128873393976862784396502876983830 GT 1 -9464968425222.9504040943557540665090640742060536 1.0273255841460820947808518541396856 0.0177572204283394057316399632529197 1.0179167714775235028243775704751853 GT 1 -4067166841128985334928576909307.5685845023488916005870627381724695 0.5695464673235661178830870969215973 0.0968960848169040349994975720076865 1.1019176544639408301303123944321491 GT 1 -3.9647319648724809029286901367979977 0.0321049697756442556631221566696893 0.0790259019038828471755253360154206 1.0823233667964480447164252176127914 GT 1 -11132944847734828.5676852878138137407921868786994329 0.3638338606812014175180144391511081 0.0391898589724314512106323923468327 1.0399784534973262200256132278582892 GT 1 -433954466.4842181676261371160143025676937010 0.9590771633863360990447245366758565 0.0390061282925331761549900316689114 1.0397872470275295817629220554522593 GT 1 -14.1553129143551993081390024277629546 0.2867328971890208461859567719931528 0.0139489646548508394778906358592542 1.0140471657340651374054587504362326 GT 1 -40053699240644418592774274.1029383014414751326518861418178095 0.4438443215071508973407355040215821 0.0349282304990623472171737648504341 1.0355528078688195842363132713526011 GT 1 -234700922980794547981182921.2767504808417262007701548428694478 0.5570503774973231560956119720733061 0.0849855181131287672461966234748902 1.0888153866330981515508503890440600 GT 1 -1248846114111020367020488518791772961832428.9540837846426833314874701713928322 0.0305399535208506158872889747044364 0.0855409217549611485355418778358144 1.0894225598341748897372204490765293 GT 1 -4916523952438898430343247332548.7497210611105757925396597915976696 0.6398961504770706103980624785934715 0.0657008639437542612566575856030442 1.0679586178799558890556458850815064 GT 1 -34315335191663.4021001014093502147049904012392801 2.7319307822940944114710072777252135 0.0968832943153843043144903835089609 1.1019034917405479370727228423510039 LT 1 -272169228109.7012593386153483311090386231268206 1.0437751730328471032034806580082083 0.0281438403867340818672458446896444 1.0285474694093703621616859682756312 GT 1 -7379724629527269097393422418889698861.2646130953016994654693788355874485 0.2664148890886584205641871597367319 0.0507320170400273527591011283868967 1.0520641356620223266193663286184665 GT 1 -421346319138857.0375729617358982831346878638957852 0.1189674241522116170608222639940485 0.0164689998884008817685607690707430 1.0166061214549606517026605214488965 GT 1 -161464160091830603146034239155664444.0572294867975834066736062159133440 0.8088262169252793933953669605708506 0.0896299424051765801606698216887082 1.0939041054360586346278247735510497 GT 1 -86083.7213243219596811786686938993293686 1.8167302280574887419499048299820115 0.0053508476240390533299457435603422 1.0053652146827331156703432508036161 GT 1 -2509797637133178225.4697788306259441432481128087379306 2.4458385603807785309878958522373174 0.0131230232836636724724991934454611 1.0132098909684492428601383788109825 GT 1 -204101124951920816200.4315909987805390479176900508763630 0.9505699731614220602939817941226698 0.0023897162438365695347207276981020 1.0023925761728873797802695749543676 GT 1 -5564928529688663608229709496298051525916008.1221324520527135674801409546105343 0.8235106538667170602059357050050872 0.0008023877191102031647759846222845 1.0008027098044391595593941170899770 GT 1 -15985915719762.8934066558840160227600780892388840 1.6505041275013582793881346058988657 0.0166554599779456412011450805662540 1.0167957217487247050752936513336091 GT 1 -605449144817436247354853946583881836558437.7322981052707647897280780175951165 0.3464473228277701092834594905895494 0.0298518771156192204783899732423192 1.0303065151382619685070817280922505 GT 1 -15364099199.1389718717165691477796815543425368 1.8014352418020321274456552752259239 0.0241937450582092291343482007512400 1.0244912215555718262382149490747361 GT 1 -23175219983090681589749713722.3620355978041577954544450300769565 0.1167660798334853922275983099899374 0.0624484232632056956260513368116976 1.0644835074649370855859014739669286 GT 1 -372373363406015609805916263515158022012237.8899125009442768921677683200444579 0.2256673035651372834608571726963738 0.0257760280523664102988870413794544 1.0261140511092821923102557901134696 GT 1 -5032338630177019651158514314148.8632595551216682562346248729712502 1.6590860321171396058271102387935620 0.0037897814702237031382258276641650 1.0037969808872540523026980690084339 GT 1 -49219125120195821.1235442955760882132896266851862771 0.1556179948385561865840413009099387 0.0771082267066921091220513925359345 1.0802433067244305377082940378905557 GT 1 -7005940.4445970455725908959517438066491407 0.3660879077769293977468363517933248 0.0226774354512831311220650940575768 1.0229385232425569846473619531990937 GT 1 -22922973747465741127846141773583940.5987923665670562622179563833073801 1.1841726406544037826000136597241729 0.0246292667284775632399697376692600 1.0249376410040710398803867689565158 GT 1 -66935839581793990476692865608262796.6243025512464970945232104580078062 0.2997295526874231751239406325256979 0.0610858079637375540929694799828754 1.0630311862324899440394541394855873 GT 1 -3506923038508343363345975591952.5501299848598997941974290709123705 0.5722700621565305338602261395534326 0.0885848716608999487693036041401313 1.0927568012785961528411722621827024 GT 1 -834511147324777.7013580159427473250381852468680520 0.4930264865151604384472997601106866 0.0058430793546692448038862145709128 1.0058602169329356870715639527403417 GT 1 -3514377252502394500297122323323251435.4949946192153795940980938739816039 0.3826334074954133991199081110158267 0.0422572705428921459021506529630403 1.0431760867044208476130908208529205 GT 1 -55689102691408699.3821370308669796772321765111092424 1.2206137512007574523175210293444067 0.0780301800548930184377828551220325 1.0812427892095447560188432153279100 GT 1 -18207304676432022042811452408132326623.1732057814869378190864928614152312 1.2286203711605927193684770171822522 0.0980101531794785559230458650868870 1.1031520152794053949938648808039023 GT 1 -355789598425036981822149774630774.4365915299104209227903103615235720 0.1045025228587897888452031446737456 0.0153130216744171194219608745918757 1.0154314768174607905106798938522655 GT 1 -5618572881681.9555025840701351253070891586504043 0.6518448573973942324507033361359430 0.0710777158547585610672317414106399 1.0737301990548591657738900735112768 GT 1 -30280360963313410.7060610071483094977730877879640774 0.2296976423436215480470314311627419 0.0380143795076102359060077134666831 1.0387557759412541028542093298978092 GT 1 -681657841088921963058348811868.0087066300490815170009933828959796 1.3263519179324071842540199891365542 0.0983404491453448197003204699000124 1.1035182682440715799740240115744520 GT 1 -1943481028197670912790654416780378085.5522066965621659116754976209752681 1.2778397022321415015111943554842573 0.0955394758970646779909076473614052 1.1004166189876170411808041961573419 GT 1 -23098.2919251992989463274162690422082989 1.3213425073333851318882349764643785 0.0537135732692115706325767942145223 1.0552099790868412035210245902024164 GT 1 -5617997.9106389129679845582934947247839376 0.0715691720132929463704724969365760 0.0776035598204184329805000442591881 1.0807801693370098787393578194773499 GT 1 -54930498981502271959813621020598145.0565793610219468127668549617121947 0.3435337178773370093387761966668886 0.0463599058868070127808181572069882 1.0474689385536669937348538443143471 GT 1 -319954704.8743706312729745571042140938963521 0.5015679507737378742244221858225341 0.0719268141188296766034636042860307 1.0746446852094571032273861118221061 GT 1 -3741810379710657896127705212762460960219.0511749537813803860272978751710830 0.5672516299935790599913931205419219 0.0741684668474130811672061359783087 1.0770629905279971034856780018689825 GT 1 -632956836045061048885684.5528252009502730643798415391140404 0.0702047711817812673301119430241881 0.0670432786661298460928223192031858 1.0693964657767388222657037406094645 GT 1 -149.9330863938019595999898707507721781 0.0319380027890972982073209733908637 0.0606323232450062350735130773654826 1.0625483143748868475180227870528584 GT 1 -2058776382.4847096367754286959606268645519705 0.7720801223058625040769634256855830 0.0943902266721520033864194464028188 1.0991467794891472314767041363105687 GT 1 -23988857259202172493791448210.4505108962887779557049215248068538 0.0914458696447692051518779162611335 0.0893869206116867057782846983107952 1.0936371927008476077450108602179059 GT 1 -11216437870073542281484120144808.5008567397482618362894797320497854 3.7785458895855668321023220536352946 0.0778001396993593968470374836902260 1.0809933106944266668385842773453327 LT 1 -1753236133582.8385939231638186090941949765980054 3.9779238274476289473457269138215477 0.0637037684515443041485407385270464 1.0658233658788273320740407544576199 LT 1 -9592413593964127166124.3228159004176421475593265228018855 3.9779899723509269141964286750939485 0.0744421183996483023358397354541232 1.0773586080269926886127620009425884 LT 1 -3769023665696948356778.5590371381062597366231033200543168 0.5322406247452610736137077142509615 0.0956351882777381903763293804246936 1.1005224472053749224552043241838004 GT 1 -1965658216.5862635525899075983293017124221922 0.0621542696376463977037448483113083 0.0992664062597971931301366987068068 1.1045457435190310901629942270712573 GT 1 -1529057333.4944567196293724941898060867839528 0.7709734218033310659162801046566814 0.0200172065696608387667694622460417 1.0202202651958018042072090650016516 GT 1 -155896837881111179.5818245609954782833273000748344422 0.6901783823075602290643157139749319 0.0574307414625301053001017633469410 1.0591458785003932543348058209385717 GT 1 -1459172511813411722514204362011476890611251.5488616846112305732542634457167864 1.0951023091826906653675422139529444 0.0119997430008294511126639952518946 1.0120723211136851040582071474591946 GT 1 -11867517073329864743877603488677.9337036798363994954394451351014997 1.4633314598205920486354309389893019 0.0065831224608299782689038312095653 1.0066048867822111322778041844333803 GT 1 -5176931837575391447622500539140076651973.2297427647203621405228150562842644 0.4343237207325002453173133236937913 0.0142442431019223421323628728598412 1.0143466661216693379741105406041673 GT 1 -5885957738062843103618290.4511719342126126035396338892628231 1.1185888908891196509952422085304343 0.0292570577623213931980639030653249 1.0296935808189598684493566225223260 GT 1 -79556057216859769122122207084244417.9830749210121072090484754500892808 2.5963479007561328494473600035312448 0.0385043676724404692870870944794994 1.0392652565246606215709262588360684 GT 1 -47.7566804759631498959896141221870329 0.0269251989532780094491298231208316 0.0353689810489911454411934543959414 1.0360096145441592094117854778769440 GT 1 -683861758767121307.5567560901765702583235906202843695 0.0045583756005481935045379966827666 0.0992671685898423648135462780520889 1.1045465898629146383680005682988379 GT 1 -22343017272.5343118566750471561775587340353928 1.7296962964864617923250763025888592 0.0247516015221206079479503374366638 1.0250630727624417494179527833320877 GT 1 -180842062656004547043070785360970461.1145454186731059354667793200965611 0.0471528419322772659464805809564537 0.0506952669667943488508955002370003 1.0520254222928392357062991678063393 GT 1 -607402357840328.7248873410345507479997886407308018 0.4112210212898298477368901448111911 0.0912618060671974984901424820989843 1.0956982417645456951627261377867997 GT 1 -206575261038347307918121745393082.1815008895303910191783923180840221 2.8009537193394391039313322579616113 0.0096695563024215347164440693440186 1.0097166100334525912067190480529421 GT 1 -8914635163754032545.7031782216292700066355581697569852 0.2879458381550391936467319567505795 0.0685425069124040032104522139873755 1.0710047227379037755207397059402302 GT 1 -1359563539788260641816.5836265129332478714142336479581716 2.4123777145075904302340677219041704 0.0333803821111721203445298872740463 1.0339502240096485783008267253782965 GT 1 -256950781800840070215744571806554258929.2721307489937900314771611567295139 1.7920674412438605986569312866598247 0.0377379222422427506402585125456262 1.0384684353171535570273752755386105 GT 1 -3307257239402616919.8750251373339663102588702738833615 0.2170187005360288659596587738813527 0.0552808744153767685564893921506974 1.0568676172710626180652452435348614 GT 1 -10775969739282536646089.2255347867874232488006394383421878 0.1411047655134736656819048976080912 0.0141510449361061772989280728302307 1.0142521257045967511652068282174858 GT 1 -1449601580978404716948.8937427087943695730001871571769968 0.2899762951385815599619886933864036 0.0973913392149080244476236105061869 1.1024661962606959082072310616652193 GT 1 -1324862785328398885331232269554794192.7330356243951143472643343752838207 1.3013040458078768134700487409907740 0.0604285028031547603694512128959907 1.0623313616970391093418332083994853 GT 1 -918833930546771837127.1676735343749307116759618873171746 0.1810569631724028592424461466402766 0.0372546177040788817698317700542961 1.0379663026674387211208013403008956 GT 1 -14193.6407507376698611713337072496351363 0.2860400851036561942461877281639277 0.0043043321162167930112360797173037 1.0043136224223265732854597289284166 GT 1 -152627815383038472230.2839778953874097971209437461385714 1.1955705560812097883339024516871395 0.0540980399186048990632523124589309 1.0556163515784638859308718067618860 GT 1 -65835.7880537021416058365924993755780740 0.8061475082309010062918611852964026 0.0201204121751371066670988916132188 1.0203255844330694403553726971229987 GT 1 -44461027612470625463568007089598722050162.7269284765037345586141573979877886 1.9806536223339726533142725393594739 0.0560053373539185821376712901433946 1.0576347668292288172813913022924661 GT 1 -1145184614054179196346.2606865987581240175178232377717103 1.0160182760087289375911858327034770 0.0119756650893885834929349522240324 1.0120479510612670938842543524474452 GT 1 -46330509289322815444228621612.8842038085041397389205493856543744 0.0900502552476097362789587877019495 0.0323924041461701165569069513179623 1.0329286500767572641692123933068047 GT 1 -507478389297.2235165789216100244817323934547516 0.2275162140325411895350649771243546 0.0202410190459857719877445282923403 1.0204486753672064428979671140280617 GT 1 -4.8921274679936062137578198794357842 1.4447387473537842237203921357280615 0.0474976097158365543421793928212674 1.0486626624997437416679603004471102 GT 1 -384611.3275930506274945140748995561498262 0.9334883657128711912391396081912992 0.0758156858349208423824090211965205 1.0788437530281556319551986239102208 GT 1 -1477884101580586351586643.3835953166999155179610260111194105 1.1768835475373699826433430245918266 0.0055973040586576122481121561672857 1.0056130276656760419063940166937018 GT 1 -665978820086315655991936825145.5051421228882907940633380115443643 0.5716436579752760251042252855807080 0.0485313281128775595580410482751550 1.0497485177620942295848996109916744 GT 1 -4299335308785.7276797074180931247628738040021974 1.3909795630428961294918946614189850 0.0815465453159842921458480006815961 1.0850640509686272633406325048025414 GT 1 -11066021.9103556198204907764481865030531802 0.4459418878682314724550075710805158 0.0435889805089991111247774666857035 1.0445675216209714101377107306246935 GT 1 -21753506978754176.8022013795319603713907831841296861 1.7502956023452883241383208528230501 0.0007686498697213108673352921023355 1.0007689454324983209012127807295591 GT 1 -15055429498575035554182982244803903.1373547575971759062443244368058093 0.0800565025430052126699950601087636 0.0770624310452732804821291502295818 1.0801936860359085417556577157127015 GT 1 -465083295245190.0514909548149807259133700067299918 0.4089206178321215149861401259429106 0.0059757088181383876326248794937180 1.0059936348154475031117233728218774 GT 1 -5382486516827071742117857964878142392626.1822910192718530817017949954604203 0.4001646067734203755144113321712796 0.0399433181678249708423420989937522 1.0407629526880760842448308271825116 GT 1 -7040020321.7628972001696676144585252242269750 3.5138144922027851663174636655306885 0.0807345662152353860223219623695395 1.0841803694015682942284415203554117 LT 1 -77421567858485102650935604441589.6924491263147008094823283914280578 0.3686849969497848039080703781631506 0.0092185445558031926774574999004804 1.0092612982919954025496881132216849 GT 1 -39284795802740394606450429.5312187384815634805152266675001368 0.9244078021012272217620138474144410 0.0219879062278801250223837656044105 1.0222332432036123696924968408285021 GT 1 -6894365439.1276735317317612611389687022469744 0.0256001768094708949578951727275810 0.0562949017425870432415664934465652 1.0579415575561620373704044363030615 GT 1 -219909503.3981389375142133057112478022722903 0.3496824903347216144555833524143310 0.0084009181862652053625995452367811 1.0084364047858961972114665625424720 GT 1 -3289.4416171638369645022162489482111538 1.7619272226249023026905505286132024 0.0998703576790450209575175861371424 1.1052164790083192538017846660567351 GT 1 -508828320551453672396702.9266419831375113853390852459939010 2.6514289970796420545750431844517981 0.0604096843158405280597270977868277 1.0623113331000488265874068645153717 GT 1 -1794.7913518806293683654735515488832510 4.7875339507112961422855146433565754 0.0093990393510298823859905383335700 1.0094434890637110968866730045237425 LT 1 -13477938178043112982539.3369517191230172257386676835431457 0.0621856964214527450839568300922106 0.0744399047042521335212912363520030 1.0773562162881367117187786383385550 GT 1 -10337072.4398069934182677261685065540268273 0.1601611616612862497529959386804169 0.0916842592987679179031586955309691 1.0961632287758059392209341906661358 GT 1 -21438193684.5399792067879389895349604202983004 0.5179279808875179249179881175054993 0.0965365152223299763618920598547243 1.1015195850652237255661992818613287 GT 1 -13583084663184505762555446193525864544.5057808283774799830168869867193266 2.2271280994535236823266276805542853 0.0917157345244866034077140931907542 1.0961978816720019252678519576017586 GT 1 -1669788086259881450289220141641276585827.6917239942299230085469812803024899 3.9882701960445145511816163638511016 0.0723389633085824733273347836052460 1.0750888751063896690746089152946574 LT 1 -18842851382964467110165463393943.3747784473459428588611092694514482 0.8232279043049259164286827794991430 0.0783408936063029018876619243985259 1.0815798565552700290552061974653679 GT 1 -113965711719933.2317933530429702441407604536011964 0.9574118815519402670577251711891638 0.0973789246042062449554869518635442 1.1024524422099475094489503928809414 GT 1 -45729656874096200470117763869.5004168714996667724820381529415530 0.2838981163088926465340826990488535 0.0800844632038321843283033726187953 1.0834734209839002377880460881116839 GT 1 -7284455531.2083217452653451171166885828949896 0.0380833810509106116428367247171854 0.0705126065587535453534061530363765 1.0731220346439239858712190593059952 GT 1 -104252127.6564782660776857308914310090539258 2.0500138897489653838099169814347982 0.0942082745280959103096776854297738 1.0989458829515341039614577696019527 GT 1 -3041013900536299865696467066022823478612543.7890059190949817068016879873571000 2.0626169568838989429312773157490141 0.0896401998564895411518130759495409 1.0939153728421150290294646580654658 GT 1 -2609274514877351863.1461331715566692787465649732917424 0.7795697455997086585225247770186216 0.0128610284492356984863066178148469 1.0129444474838651197574287606812000 GT 1 -23255.9880184344341561827047998366415011 0.0164640605053131824963991013386868 0.0703449169814440258642350485829757 1.0729416401019375271464530196781940 GT 1 -297646.3611080738998985897808708346990191 0.3791819936731293347928568341870013 0.0952141213634448298555212417204465 1.1000569614676304263699753342815401 GT 1 -5449845828476082345745379809.4644225455432205847875073967039439 1.4865775115665561211177088467620156 0.0413508480143058434167384037180486 1.0422301188103208583564063539833123 GT 1 -574665.1061403726318380688411029020541424 0.0499890302549894106627582405368317 0.0089552460153305009983386856180559 1.0089955852433242794368936932562723 GT 1 -1068294235589734303172905.4934199689148148952158634995615279 1.7714181466586767675497655610666785 0.0922717893575357446453474092528658 1.0968102726745302406717795939338483 GT 1 -520923990403034299267833930537.7796877538420485762366644417463050 4.0462798916173389795216270744152777 0.0826171854253913793268762945084636 1.0862304297451157211128844207364820 LT 1 -32646373093866833812987673.1548626112842153469585653850797674 0.5687339358140052095617995074263946 0.0029079537476455211680039332852989 1.0029121900598045536078268241413246 GT 1 -7.0361366271988864536671869879211248 1.2501015848091989354969904276118487 0.0979365453483067837709988533503414 1.1030704125560794821409815801066052 GT 1 -7261958831590508055895874286517898737379.7018784409158111891775225538385127 0.8101277409047206485845449515667595 0.0939757304339343005446261259570482 1.0986891856974250687887123257197301 GT 1 -40113872472187777965210023.3538898948119384996023665301955831 1.0051528997898769677277889376579237 0.0978350941381407447572566572395548 1.1029579531662447228613755055942825 GT 1 -1798241189138129653.4321532905826363027561191580462886 0.6211805482720399889797396112398131 0.0395212501823801724986079571592190 1.0403234211019526219152702686031907 GT 1 -191050455296784811906272.0801096763457387150228550970926480 0.4911399957348170126085096762190787 0.0284528096819278463261896837742259 1.0288654366474198678039157803065296 GT 1 -353278.1545619602228084844309285011723030 0.6417852598318041552321222317553778 0.0808763146271146789661406029866919 1.0843345787696319459903436799120711 GT 1 -3904949006367766081118.3635949789050912121610913025000149 2.8691667171234751514760851570609668 0.0935385245576640728643312189347278 1.0982067478234123949925400776893340 LT 1 -476332845328955142854825628498.9838183840073230371567770029328631 0.7280212841987818116956796892030143 0.0953232577889095307598736697125100 1.1001775900170567914515164423717526 GT 1 -1019283285179546581916520048637736499235629.8408778239543080541388444775335353 2.0211510609319806215197617439956201 0.0974414733497912218167644679491664 1.1025217414038217539760800371953287 GT 1 -15410509964.7053435270167806758913486984344686 0.3847340098229944011570700079351230 0.0741326874971846077953897017333383 1.0770243456367753214482335701596334 GT 1 -29742560334491.1045454174388579042158732179051467 0.8177111285657507229064336164677761 0.0306361158238598367023222082970757 1.0311152121178383912766110266851281 GT 1 -3233563066176729.9766426003659671608462103090375026 1.0500684041474643088125027917744671 0.0432149871501981344227657006915401 1.0441765597359970073545729202930956 GT 1 -1677964672304814638185431154782996598.1129772029202802402984369549396327 3.2072726251043532569738597225303901 0.0329892447303346217556891215677190 1.0335456612849398070802075750318536 GT 1 -14254.4517651389755499675959725132841332 1.0875583045364749203288187361504855 0.0909814553633221382299495252979967 1.0953897838722989601715845854414732 GT 1 -88831955690.7729022300289978364000394313266833 1.1155318428065057359568173862679080 0.0685884655154376688587178261447509 1.0710540644815934936143104513916952 GT 1 -20965290681839377999968.6356211484163741172749480005705763 0.3671916535857849365917232225492361 0.0711063778956076497021890183229564 1.0737610546856619212685035365891674 GT 1 -1074598085982394078.4653974518583722585434934290267651 2.6133112896552293694946518133281859 0.0344599923132894720138418582449747 1.0350677406994522126570753861689570 GT 1 -91807585720323775504.1305412406596600987779404311429690 1.7687190524618358916619323775167684 0.0587661365386290588716876656163791 1.0605636437479284269722109773295660 GT 1 -588943488020848929419.6976885507455256018601954072510315 0.8252431925417026916463763506192464 0.0408918235191339594345090676846338 1.0417514091246643615418858646188530 GT 1 -18722348612470995616754591426.0547995690400209633017192611037145 0.8370419993714205335134110819511109 0.0561620324115936442729082824535153 1.0578007720730469049607871105043426 GT 1 -1926250830917836.4505676478489222910284985082479794 1.9396492269893869217061742943538790 0.0452886972246353512281642450112426 1.0463462849622724054592320527234807 GT 1 -926151196121753958309.9241501989568143233985672934291589 0.7461642610642385367263916164927106 0.0263031452534238908030528426696998 1.0266552612105350899128595551233454 GT 1 -94.4023714175952871686628533991997032 0.4262234251215570868370169139299797 0.0474427334107019966431313869985443 1.0486050513850978124782746567684086 GT 1 -119821447649076311119240275847.4619634084123497594390652796750691 1.4798605192216193587747160822894522 0.0247160187465008431671031410182446 1.0250265875689699934057228397873204 GT 1 -89812850023121887607799187936477.5902607907680071830134024891992136 0.2441926485066216999720122545347623 0.0508039931966413062929676244799700 1.0521399613369221829901786011528971 GT 1 -59318884758681927810711659.4842793899455775014452233168134836 1.2352088872549139305662400507477627 0.0926884043766857394984992881374311 1.0972693425252612405610180232282659 GT 1 -283817577.5126873115289291846573118287824158 0.6694728399372284681379906833347911 0.0347865794496919793970022528672424 1.0354060409036532843628916086767605 GT 1 -942598756.2417360632073724955362907398137691 1.5039284726012875900776948922760609 0.0587457322154015946157098338621123 1.0605419657114090060140153813336946 GT 1 -1315190783107864249076287377837487645775.3156980896428294801132010873798474 1.3732263227620574467473494401609310 0.0939747222364430651566348045513548 1.0986880729270897087535700840400120 GT 1 -38357041555209.0027704719756425901966403715339907 1.7092767729767571322341440691826266 0.0983723687568270797832532382963518 1.1035536698282479400890708214329642 GT 1 -2305628258449047106010878660316443.4186741169704319600832244470998360 0.3532098047079609621206260055411613 0.0020419089189400230915367636188310 1.0020439964571493084021958719800857 GT 1 -13779241377013968962.0396939163662419751524563099558570 4.4616276915666031835039258721349751 0.0690510637988393451410031472689870 1.0715508515431716970645209118331693 LT 1 -2144707.2079836934591144611825083450351576 0.6515531820660563128375654507331621 0.0513904396615043513969086352733897 1.0527579872229065351942581720112654 GT 1 -466790723955819253227149597468049.2723235982589615927740105180894429 1.7447923677996697634587529029291413 0.0932823429437659815415214737682140 1.0979241705413214134756031212596893 GT 1 -25.7146715509090029794151846694107109 0.0123837577424875820291610855791788 0.0611170793732691047532375910569963 1.0630644927162666647589753408361211 GT 1 -12459404565434608275676964.1235009948560340323950742235145104 1.3805079293253666203315877879058822 0.0742799854418992452113910117350703 1.0771834501444294931522123055580286 GT 1 -251602.5120847001339916046743671295021936 1.8029839641637348944640415447218240 0.0586229336183538981593431797500848 1.0604115114955534817695367668206792 GT 1 -4866449134082857448700.3196770584070997641364672524629537 0.7235845443325174858793171681917648 0.0420947425580386534317776716665063 1.0430064021001981760941021150461708 GT 1 -1843333073338197599456848205245341580411670.5193401764857718862515264353813981 0.6825341318898542840404825908409001 0.0828016465378231952103029790939631 1.0864315231786113048646572795804111 GT 1 -123968157027.9335919171753185148185648157260115 0.9852087643794785277099335657859241 0.0930677418420101756302916610367712 1.0976875194644436618933925656264630 GT 1 -748578601740.9369708277075885749240140493300252 0.3452933635871994655172452319112151 0.0574388654564317053421290228778567 1.0591544975263571533737742462652710 GT 1 -73441700020894470197755940998753949862.8080126035700806330456995477621663 0.3617865081359926537078886863251461 0.0778889238056909356498085773791656 1.0810895895860639445861049162443489 GT 1 -885154787745.0754979584279293592922483953048535 0.9015048810001963611870885278159256 0.0546942581586854060143347262984204 1.0562468674749744441804491555415467 GT 1 -12334426536815603.5500139235729176064660493058015140 0.3158529016975665305386281067998720 0.0528178211268620158059732826601741 1.0542638295636629402059211578154792 GT 1 -3265.6410873496912494907927146450348816 2.0956972243421686576086875373133767 0.0723736124285737237092920511498812 1.0751262268606700559252697761472499 GT 1 -5.7014167292522987277094734123704064 1.2439369030947459198275109207434431 0.0031930367059567003384421241161682 1.0031981453252306062167559341572671 GT 1 -60263142.4901056611170038646630700859231751 1.1977268685524405263747254857190185 0.0894559281008023177300876220281108 1.0937129769230931758499824621690593 GT 1 -519031102907072713434471283303452145.7132588528515668320993773312188306 0.1433719697153924576069425127486820 0.0526956120752005219806577733422025 1.0541348140784409301671259157618279 GT 1 -11.9679068163090880172006251753081596 1.3099806928448462269701088275341116 0.0169952014171136674072903323333219 1.0171412772773163162583898368616289 GT 1 -57717619585531144.3206545380827874158246352113294128 0.7303117438755595426810443880517936 0.0762665646153442868040578382313103 1.0793317388050990310790669148604723 GT 1 -2494233164114953073992.1185858055945192978756512936816679 0.8416920429446644080412394013963583 0.0559566801274716610439187292397283 1.0575832241940612924457421959806310 GT 1 -79073090489971651073954935191847706.8690412101738612126317665277830455 1.7562528411603655753212404859147721 0.0459396881739868022157717931964185 1.0470283895887368665036940130492168 GT 1 -50103099332799141541804168150716746076630.0676678469890699341220456650510689 0.4803123577902385864512102667787113 0.0852562595328498051041480234745440 1.0891113179953833611945740215450382 GT 1 -7742954824169069.0531017332753549198967292266091416 0.4944598027427486290255877252580052 0.0833549282808639077478979471035384 1.0870349353917055496694426886740371 GT 1 -4887287684928220470695806.9073353760408407976895799074844275 0.3161174965663432594579311336466620 0.0759934510611818132071770648832569 1.0790361197694462046034941989708957 GT 1 -178742593313799173055.2553308010081306945587451749568791 0.5838589912841577610558182824098751 0.0476490014994467585769106207309166 1.0488216162384622371842980046597914 GT 1 -68620609441133737665841874.6861191139747639887367995625091417 1.4870446094199431237606033836164465 0.0948498575292020360497658984802464 1.0996544457599889312852671838560431 GT 1 -52087729902648035034336961779057927166.7754564099109380644472718152003795 1.6226624135761688924557966875085707 0.0368380275113945125660998238616129 1.0375336855966883884411210216672883 GT 1 -886218439520045037771399.5954757358019617167667112609635218 0.3132456384821820861287067354881479 0.0321240521296437239618560577675971 1.0326513529443522137999601507610489 GT 1 -2726078895446888466223039267089667365345272.1955575732971271154820500819512670 1.9252692683822484551617111072566392 0.0679008234272763000623228147472309 1.0703160573262905409002032521022147 GT 1 -359142607238270878.0737541766572480118859846523176512 0.1351297424830953300736740825714098 0.0856798587392546488187230638053623 1.0895745048946599424677397510045178 GT 1 -105180376913930311692554550078153.3733885769809979664503692215273635 1.3035662707487301858858868865198374 0.0088993566220616617304164297418783 1.0089391924142633884811629765907290 GT 1 -14559838907282548156.0882652228241312266895730247987600 1.5864188591071992446175431429570273 0.0615139594547821114886751938568923 1.0634872972854628730986193406891289 GT 1 -6107757372341494711.3924291070204677649555245754090075 0.2400631716449294296868039857108886 0.0420137416222105653443401663102681 1.0429218451874424009008867435487278 GT 1 -8402368570423637476635057456004193906284240.7678391649395014667224005584373325 0.2136634700322040931241595658911704 0.0652105732898180891679929031818460 1.0674339871321693599008317522194017 GT 1 -333428728155759244056026516520634.3950684610584764083022520949560786 0.7141338864498820707022254441327811 0.0111046259282601217535480289655391 1.0111667425695551106798420482235481 GT 1 -37689950940682919828431608003.7211626615014090281012694595789058 1.9483614090186316445980495840761243 0.0055831259391238132067461703114963 1.0055987698418413504474452988942200 GT 1 -5.4302661726327612828920975136592281 2.4726746554087363020331203469312840 0.0631243237372368590609618872788612 1.0652046882973692918005818306484976 GT 1 -496058.4655321706388478584056972597180087 0.1220392134592434954550692328701677 0.0304133596275351222389901958435225 1.0308854422557563328960694722394630 GT 1 -9968694610480.8359469830875932673395893117169846 0.5347143385498550820268349648005837 0.0294687287322200531483621247879609 1.0299116550809728517969226090430952 GT 1 -901810940117474927188708970.6273113625365364784895231974288294 0.1021718835096443049274582783846070 0.0592111404975014040995586303917386 1.0610365434230871949621187082483785 GT 1 -226287.1374385286277230120001303364031612 1.9030953463922195300112778233534155 0.0580145243390687381962443961178562 1.0597654231436110576422144323782011 GT 1 -4.2780880832775799309322292551648843 1.6507994175540447928310423842558106 0.0230535743114723567314583774829597 1.0233234639715077430333035380529948 GT 1 -1829806625505411828657.1843879706790225373930702123909390 2.8056934955177422366464501705452318 0.0390856167139759782112032693436737 1.0398699652543560698337709536660977 GT 1 -5556866350955777554401.0033671756869685823695071193286860 2.5759315829745552788252449443097063 0.0611772889405091590079261107113744 1.0631286237134204842992579350967257 GT 1 -549072532072770539655910616605106177182470.3017114189977663955584568681127139 0.0259926042300519413678970894688012 0.0523823920348532342545668249531370 1.0538042252268900148058574297039700 GT 1 -91981899841767427118446317.9976168881785382090989718853140402 2.3649265720221719357707436056916391 0.0860533501357647444002327619324784 1.0899830791831815261834742734359520 GT 1 -5280085774651525112047182483286054087.5684980854073814107025254939318281 2.4324049203052596575779798483199405 0.0963342295116725996888848448001277 1.1064261202840441041269104606804086 LT 2 -102139679841631497135492024571.0147972769306444571171916636446872 0.2469743934166370826617509261125254 0.0070346948568804676416764992068715 1.0070595549802715074591609928342006 GT 1 -66946632137.0803343221498048218723321801439167 0.8479130352147031236638879397788345 0.0303440419254129058593322005483190 1.0308139527967198532255778806766006 GT 1 -987037561591390056774.4724777582305450271369611189878311 1.9646221968059833787447146613224129 0.0362200214649984836745159477276960 1.0368922484560862141428564841572187 GT 1 -3467805262553409108667421183632574350770571.3202652787064573647909106210817727 0.0735253049922290791483987814341515 0.0684431489628913051147439321195184 1.0708980590936648151314359800634979 GT 1 -597336224473506832829949.1065542187337363120824604376702017 0.6497149447790644238693071389310535 0.0429788787380525709954323003869211 1.0439298174885613351289752712734348 GT 1 -173941.2767679966527496744372558763539963 0.3792820477171434492158043618894122 0.0329410556265345010894547435988599 1.0334958294677938331200045185427068 GT 1 -914049.8454843169062974150499227233368983 1.2808690883816261816790989326153559 0.0356153813878764994054066721451384 1.0362650819809465083015445235492496 GT 1 -340863039674471990119413.2936332337684260676432489361865965 0.2565358363391454172739546599952230 0.0266657345588371780258031556474568 1.0270277147433475566651018786132270 GT 1 -1234843.5253909693109210289049219435375198 1.8851304550501931300060324305965029 0.0777122206828362567388451577770042 1.0808979790535944814069891037209020 GT 1 -739018579968594695498878657284784.2153281217304483958896142638002119 1.1058254943667554686679544570456465 0.0944535818775458836592103598135774 1.0992167405512784761643141674936014 GT 1 -81467479062899471175984774456216106.2371428282849136115499540102347014 0.7147206146623035428911376254768325 0.0814055169779158785375586958050323 1.0849105129629489104313488155180824 GT 1 -5495259763440506.4295190386046036232445754721830170 0.8130050120980078588738521637293785 0.0824115608754934799463347899819091 1.0860063122824098961893034337512606 GT 1 -42204952189948889365450952555787724657.8382559382205963356425452517636375 0.8551639858789462229339020691340762 0.0963081905312804007665725710698038 1.1012668954452542288407282483443703 GT 1 -484519.6077436239888375736876950253601345 1.6997365509730682359977816837588690 0.0691384308845472313146163177292468 1.0716447032918029653687379483429347 GT 1 -716037611034333748055700317737651840504101.9051089449251711064840454111721523 0.7206352864392102085454871818805729 0.0512064893287985807392797400193538 1.0525640902738685019937418750352641 GT 1 -62379778.7789606964884429794549988752053574 0.4659119673782337989650439866547530 0.0190235395984565407923975110793005 1.0192068152178783843991912548031102 GT 1 -306004707522903.6133642775512568866626571389966665 1.3671775465878405587176878092359796 0.0541358044000961888383376447709131 1.0556562766837766043897788987712373 GT 1 -1597007448412399856984914326402.0646345026618493303095443307325498 0.0472178150097315567058636760763355 0.0081069586350577791129188189528648 1.0081399987150835476363999331036443 GT 1 -14225627916955412341120890607272766720533.9886851763830435489871097462225515 0.4571924160383973262354446284711973 0.0384569794652853071044292880624436 1.0392159718084182089777067730720340 GT 1 -8747403100082882877308746752877031001440687.2929226222861682279828940873375913 0.2478684657477888100323222398235737 0.0625894972281259815444666626313609 1.0646339894045222001106474430678220 GT 1 -236472158963107403.2437282877971532470848385209569071 1.9905967968043188239227716880800969 0.0110844422064056045337709853203752 1.0111463324064500033574972919530947 GT 1 -798827874370095892.2849751345604274600902657234715564 0.1589644195390580574573157883933518 0.0162801304198255266384194505303757 1.0164141078464621725839547043368716 GT 1 -13546182194561098041363263.8367605920732880529523907331620392 2.2938636567726776811767968734703470 0.0342148625674515880355068442122810 1.0348138945277978269633286830785289 GT 1 -14771732540704927582363571544867276454532774.8626927694915921425540652152145161 0.7217823656132223459315826932045204 0.0824675381021023682068778510231567 1.0860673188641507100182030704810597 GT 1 -49740712333278113755268892584.9186033686215738897379309144213549 0.9405736873600949402527816075704280 0.0981343314310506898338306299536207 1.1032896962086249208756982197120845 GT 1 -1461933.6116013028500003970363986368183765 0.0011184487078934790487124548685759 0.0500424384176422917301567850440802 1.0513379674039457050850108495865020 GT 1 -873895918115016655644279429156.7389486597155942866238261905176897 0.3263592453824127511250836759413312 0.0824052669586979150887496664912703 1.0859994531122833940928329956317369 GT 1 -6884321922.8537390210086514436503040798742483 0.1701717868271530340818079188711360 0.0384462879328468135854808908664193 1.0392048527292191730722708936719204 GT 1 -31136418953964908778.0928173789719902683879167029252731 0.8155077124851638293207546777750484 0.0685599005920577234429009241757042 1.0710233965283733043363576561415012 GT 1 -316293671657470133464454929.0931241225109218403255926833169677 0.2864642740733953093353093294852733 0.0264040044968508665623819715135921 1.0267588503994998954553669849518806 GT 1 -11067401396941.8929981201754630454431131688050844 0.9982848038065823789547163029870782 0.0521310469691026558609049192072403 1.0535390214819564121058549434495680 GT 1 -272.4222268132588431308338149771197333 2.1689200802043057508949521099712366 0.0590008165606637465492233145557817 1.0608130071555438523601605048045178 GT 1 -99435903317892136451228216.1649269271430431075659926092600658 1.7285553653525800291796293610988438 0.0302227014474734049524947950823768 1.0306888229654320789376338472288191 GT 1 -348277690284215228233187106401737971140216.7104680501061496920536145370818967 0.7760990525433113912376395851627934 0.0932845699679885033200637906006770 1.0979266266829219825252952982827858 GT 1 -2247.5342306877839259775022121225322007 0.0719290093127035281159320784993770 0.0139510703666487148139873235489922 1.0140493012361545551622340851861365 GT 1 -1643355021984574004456203439752132520364.1837154747743624637298906863822903 0.1658097602966022887026116286178771 0.0764639753435260864933833607743036 1.0795454712715350938947999684627824 GT 1 -78835651146496299653907347101412111086.6013142603246883299465946694469897 4.1423723015556959315895462659834315 0.0961968411604449317513366821590242 1.1011436869462778288787158672154127 LT 1 -628260349847816366989160350170979.8998410192454430845225473470928308 0.3559084011591668557792969191218020 0.0923802952339398615010961433175721 1.0969298154636698260978081435441140 GT 1 -3849.3314890472061943137812749308311690 0.0035810153019942536856407816173078 0.0831435876568440016745511678626054 1.0868044031267546226949258687419166 GT 1 -911381266347194584.6222096244416931892161540087164785 0.6127725150403328963994972239776449 0.0989565556088258303878768733736143 1.1042018045660214935676243839920120 GT 1 -1486589423460172601899361706096.3461253933340982918549120588169178 1.2291317048309469835772886151491667 0.0994191925507603555624262456282667 1.1047153821909127700334573252472302 GT 1 -14612746894245436.4860749650309668305126658740432273 0.6989576091355477656993851914002334 0.0979028885341281930974914400735172 1.1030331023356760706378961267203036 GT 1 -1528674939621343323627595952874348282565.6165128786747189968414626382560865 0.4884479723710733667136894081780082 0.0923906606934650190862045892163552 1.0969412360164194830826687169095529 GT 1 -228.0452172506145745388692184379501444 1.6185587131609590090980223321941119 0.0499559277882905800080267649620630 1.0512469036618175007484400157081686 GT 1 -9116414574985068209582.0377795217042403291612540201153435 0.5976826038494689408664357096184086 0.0181494949541837194232450977100331 1.0183162174041833044772331556252175 GT 1 -3007244066111.9174629010364242323765151018461950 1.1569287252330262997403503834120210 0.0956816617679670778014582931439965 1.1005738365161453460195300448839838 GT 1 -5269056874498255617996488922770.1198468196210043079696679262029970 0.9447716169749480377919616191126650 0.0202162804795508899502420095678100 1.0204234260409935398642686072170155 GT 1 -70521909836457650821979519188011653.0301992383001279390002273962924150 0.0966596049573071986873476416300122 0.0964935749171559891300946204491387 1.1014720576493572544636943692849422 GT 1 -7369546175.3507275083567932447628572308755037 0.1680737868082881739180951544596074 0.0870929492561914270475698716713169 1.0911212099840227096545103989035612 GT 1 -242328541466047837565.9806678255782546994222373890720243 0.0102115362279475220763884799572056 0.0292559314675236509536598518251147 1.0296924205796263118589213279081681 GT 1 -422174953.9286151009113433066249996924545743 0.0874926526117948293083168782367467 0.0438747902955613338448816431825587 1.0448664020127013591095573677437229 GT 1 -46510838007.1263360249776317452579610346971184 1.0332998191788710080715174794904517 0.0191385092271345650359508573291774 1.0193240212580009279243903203174795 GT 1 -7408444569310229556185596946076306186.4562163889501890576317063616731748 0.4380709350221996608418377868873411 0.0948236218823139041788139169832593 1.0996254613236548271589848493007901 GT 1 -1013061420268018044279425.7947143357098800659644174325847966 0.9775377180264255066432580024831528 0.0286251320829328801081822586863184 1.0290428214279636765130311978674036 GT 1 -26636853868256771124077220593634638161489607.6573929353011479863567597640918330 2.5469377181926836507483086320479304 0.0748691156779678100699026913077734 1.0808480353885378783389969948248882 GT 2 -175708314258067860532460134317822257188.3632955795809894688490055206585504 1.5049866628265581475071422246712987 0.0832820896663773904004447301161442 1.0869554763699647638948170153836520 GT 1 -3111317.4010976453048172362746982644192342 0.6313622436989288284590188568338267 0.0753024463238784154861755157876826 1.0782885639345172232300992338406426 GT 1 -2420.0284041688478073328277701756951317 0.1346265841934358293168278797540470 0.0125371424078775262805225350194532 1.0126163954791696432669932623596591 GT 1 -9696773570.9590793470383237548422496057899771 0.3727706988611842049707789218929284 0.0336899882833265119769838404734936 1.0342705731522765189252285864894271 GT 1 -103504157016096.4461798793689863012529600777757599 0.9396849219031317722904765277327075 0.0146312742371856625132679563624647 1.0147393669821595426337133060552688 GT 1 -232844282377639852437.8468509925929591262202668216091463 1.1586097304390526477622589230567287 0.0980156696860387697585245048812723 1.1031581312278819898295742591864906 GT 1 -14209057273905842047044143503426163626.0561185257318788301856485912396729 0.1622040308010368173124390509987401 0.0944598404737010088786290632563373 1.0992236519780787071815454461625159 GT 1 -131627528785556367324078.6238690973218955979625342209597325 0.6284595573411664618193465258231838 0.0599216930243459831766637799076437 1.0617921018945317648395704563424331 GT 1 -34.5331483952983365647570494915165856 0.4592228264863114732760278747751244 0.0000672366702335329994336592812086 1.0000672389307197706587677773143770 GT 1 -56.7854554606905640874042275589283645 1.2328916842362068761678173613428516 0.0417368766171196854916328371270171 1.0426328796596225956896867742469262 GT 1 -353798188.3053768593977617958325282914055671 0.1569791475295431711299551623643815 0.0279449381712071409002010310580385 1.0283428281541246365799026799428037 GT 1 -1958514190602683923.0775327015906483040973063889576554 2.9825758686732763082102760030970691 0.0227003187395082635188561803268673 1.0229619377803534725168849927309035 GT 1 -5.7546938977498430305349332602905037 0.0475020426734367297253506943131236 0.0550805790176070407920990503384135 1.0566556239256858119452905218534788 GT 1 -137364824761861873911957153173221876481.2569334959776976272605207332266350 0.6667578686119687054425720847272353 0.0399610015463463664313242234473868 1.0407813719561401248494018452281756 GT 1 -29038913816497582511315748167245748001855.9636168451246552098763253317567820 1.5407957149868256167074727413545017 0.0779687504708752645651593756101646 1.0811761628012878528637667301325464 GT 1 -485067784.5651776561771349795330078202170199 0.3470149985567945184171202667594208 0.0511968516343701041294843340470102 1.0525539324836103221430129093604828 GT 1 -18719917256730574158705802427041080752.3393128734241019687952409053441986 0.4755399496450192589178138829253164 0.0321623859751292694306207754359620 1.0326909598843924794893666405684651 GT 1 -285591210344303310633394.1011475810544567524384442744189301 1.1807922918601612722515635838649382 0.0613986434862623669893262172597902 1.0633644303706399477546040963677793 GT 1 -286285400837344359683978294671308890868316.7134191629323690280611563209421796 0.1218830638046480503769229827858970 0.0270405599427972396611898997203488 1.0274128831149402799869631973356836 GT 1 -68.5144090633875878750459642209637025 0.5374488558976996486718751944015261 0.0672943720974333338874364679396421 1.0696656392774232535979148990881690 GT 1 -6064273979770625514312833858956.9960427936480291667314206062690944 0.3476498441819957979667832501809840 0.0528310801463551792723701763843185 1.0542778280452562325339835213140762 GT 1 -16115946473919630159.9420295429396182841165053024786560 1.7224674001178416539413238695053849 0.0154809978032895875830675163015227 1.0156020797213127611387551723508690 GT 1 -2007212934421781440511651834720.0034054778390669580069023521184969 0.1446593448684022580817697467532395 0.0913900492918822432301802524991005 1.0958393740239598090713389865344265 GT 1 -5636831351549.3051595630579085316844259807088598 1.0187608908183244280842368684794470 0.0347757807116954136507078369527615 1.0353948530385041348935309972812892 GT 1 -73124588912.3041712267214605399673437163435689 0.1546413109185574433127969237352326 0.0666327033384643808130064233452068 1.0689564828688085124323558103483773 GT 1 -813555429005891.8858461595747931537535488235883061 0.8482854731000478042786717945573268 0.0869243226356006359750146562993111 1.0909365131427279868640612539534009 GT 1 -51967762502713875505944343254110.3266534757440129415510758013574630 2.8680455568837448627958235275119008 0.0555407655397593241739816834085996 1.0587754011100973771584693886751655 GT 2 -133641666672195098665796.9431779826846061009898063601456355 0.1502275970565230738260486280505008 0.0802717977333380912300308065672065 1.0836770849066213599747430590077027 GT 1 -4304827151077.9367171050883069890845996178560360 0.0956151955825499049852971593264994 0.0088406842115727127904578794734153 1.0088799949207814967370093032344920 GT 1 -2879593099836562437842784853211450184.0355075291967804234712964829781711 3.0838800985836760331032121249330635 0.0275805312396511769941866375026689 1.0279680153909955814741224967627935 GT 1 -507177716.9576798085497102254482213923819823 0.1036068562665409695036917724273672 0.0042059442924131706052549991080110 1.0042148141556123055576669877600875 GT 1 -62.4449107199077405423907257311841153 1.5714382628196594256215119438738965 0.0185699595827668282793456338264839 1.0187445460360572920682889087078658 GT 1 -21316139004373913.8550924236964061759445234765099337 0.4402405930690441323080535306986628 0.0905680694671763341455278847792582 1.0949351265594806929876169951539470 GT 1 -7370170363354675090847277522597779684974459.1228370145324300094578378718426022 0.0956139848472361791483640488491698 0.0912409491525392078114054082803119 1.0956752905169230580861650053302867 GT 1 -2288878914386149730589736928.0265590032498959244422856041084889 0.8066774912995853775462516999392339 0.0435664453260626184060110481260939 1.0445439596617386552989825250308167 GT 1 -150609173345201796558336167145295322258.4585065461627687879457072642892284 1.2641939935196092949023272299898623 0.0744102513187024015577178523838320 1.0773241784867142612581947386645340 GT 1 -23202531999305983348972962091314.7931922353401485868799733162018130 0.9198967487946954389762480826910680 0.0131997449416664399924352371639266 1.0132876358568294220415703975206477 GT 1 -3605692746.0173738840045506982519877311772643 1.3268241726534189762604028860914444 0.0035497871278768773072505884903572 1.0035561025722885645387532673071784 GT 1 -411679250.9228358858721361031664356204757592 0.1957844515923496084284011905766197 0.0982956404054326380398034320759281 1.1034685736265162789366504120211849 GT 1 -17483824311632814291600233453540906.4174413074093082737677104005241195 2.7517683541873810029415562078727017 0.0828416682986328442310163304002431 1.0864751589241996076323777535248933 LT 1 -40069103.3473839924617713570594819613543406 3.0201643550383448864242203515681792 0.0917830615800046302308361463270545 1.0962720099526818095768174373555009 LT 1 -647908265641367509594.1136202736779660779351100145095062 0.0392554986714810246322185297572889 0.0378550147510850221734582566661722 1.0385901273554313930526631130311663 GT 1 -22784.4665789101927386068363198133346683 0.1390527010515072225213484765779535 0.0503432869100791170242971967314952 1.0516547143340602801763670532366656 GT 1 -4311607335395940.0560442276882004978621998190516158 0.0664652481656464061198571749259669 0.0177149326900806671441118666708546 1.0178737201781159673216387389523263 GT 1 -64929320189739493727816382233.7746934805622662114069501699355137 1.1064785602151995527252263021206755 0.0231788681177622548036131026152116 1.0234517226335744252728256606077227 GT 1 -18899787666161839708.9057523046480575389332608659903636 0.2527152997034637915844315293501849 0.0274682089899045603081393623273067 1.0278525140391676247684435716745260 GT 1 -749457566146752871994651197753153285788365.1016117661040978559969155217996784 1.1713167712217161368822527961795596 0.0371800435093657673575800379983310 1.0378888457323264660037379641898892 GT 1 -501312223743427.6417743741399246325272123865689148 0.3709783455107117278077491469033615 0.0106228139903736949108790725662310 1.0106796388638925934097416767465447 GT 1 -12015262504502581174426.8810000559736005047769774700037276 0.4591249437950557684783009505493001 0.0008562480178342007311800333076157 1.0008566148075584860771136744513746 GT 1 -97326745815957897433214.7337361667570672992679950791461206 0.9541274238782266199336506627541553 0.0722941362200621135331557437271006 1.0750405535711529523037276986498505 GT 1 -8.8074250165444016182951523792347683 0.7647919838893536488302054889180545 0.0664593642856527843043701494446839 1.0687707864557142614038438388430102 GT 1 -11996669816456963031159700863577088.4808860348500125370989800949456182 0.8771177970637679220478910293512767 0.0278552857554330851303971530067894 1.0282506026360056403780280465530598 GT 1 -1125316868772269301922853.7693259937830247558358013700586505 0.6877073075345078756388902620095043 0.0847927501079605175126171432655159 1.0886047367402092718952813991826593 GT 1 -27853907504.2465784440552941493064352269068253 0.1845767693652998362025286962106701 0.0866188211472170336628878229780304 1.0906019840349719103780105929528965 GT 1 -7994018821406845046973.0297995997171239000273337311597463 0.3727375281717535496637762278403017 0.0633795589658332660624924979790005 1.0654771577493409412945663769266106 GT 1 -8977407650873763.3853705714178546585506496233526413 1.2725883197765880190104089265079302 0.0685327259798868620320177192210344 1.0709942221179217711212910044885642 GT 1 -3452257586453909283619174674708749368745916.7094118220040037545770463728677875 3.3113490489640148446392247199852751 0.0375659182722330935459264730693870 1.0390227523095647053589557867372964 LT 2 -110739510.0065584982542294017501508305078114 0.5363678766297585293589151233074460 0.0766274839642198023255221828702567 1.0797225332294159199108675738510284 GT 1 -15107.2281805654659468216926488319627448 1.6537233720440442845542378464485118 0.0931219424478094611843311923321161 1.0977472838238653322136597608768764 GT 1 -110197762554718178070844.4079830353811888527495155820142228 0.4279213816078518243578804411962804 0.0547139767675186682843041245283138 1.0562677271964629777969181285013709 GT 1 -18.4721667195086236727722048485104693 2.4252462911666462807411991303486398 0.0956620534823777242926862174865120 1.1056075216227792289136141686947012 LT 2 -3526009313222345227037008617.0470603784155542314721670283004240 0.4586035204098358138609216151466863 0.0936356529147730485536528613643576 1.0983139046787428130940704928043559 GT 1 -1561279958618592965493947940351004105341207.1508895511961988268658549474723559 0.1507681182872315430571454896887875 0.0055464719441949069182381563911518 1.0055619107333805411151794057746585 GT 1 -4061449333648769.7291164339410475225969946668902735 2.4955810314472783129863724583977742 0.0723737494505978856029611119328226 1.0751263745731932416435320136902416 GT 1 -2351.2363949599617234301544133995225817 1.2595052411887967463386765188598214 0.0327931003285947077271003843962555 1.0333428460516994295516870711508013 GT 1 -28532626933.5372967454034699368470250903054826 0.4122037777388962670327152736899061 0.0858701405824513843079572036268661 1.0897826394827679736769871950878395 GT 1 -8079019776946499230224625962441107035160.4996278599613139728832050664119047 0.2310322671796950243660012031602031 0.0704172914961847099475938353967995 1.0730194940645745273025354397829234 GT 1 -2780766683000.8185843322743079870595254279782362 1.9486786947713375399333435776493991 0.0717809153294810518838833409973868 1.0744874914399590573832098159026654 GT 1 -1085934888363463733351033843359030814604019.7226060432099543705985894020206394 0.8398986879725939188166513549138077 0.0039783785802061709060142037838492 1.0039863133803544790451503831900082 GT 1 -285332781920431562590.3927235361205450829534447234674605 1.0594931911733624549614469748392898 0.0866059749242644077746336681476229 1.0905879196630391059795567508992284 GT 1 -2883563688210018.9641750964269314843022769011266422 1.5729695050042161915061498679743433 0.0909721730032114730839771111765585 1.0953795725154759701735148118419220 GT 1 -4905475800704.8296282954193986670595849669573968 0.7427919431729716264071808368200022 0.0709944965338671744851615461907293 1.0736406161103529852757467455966391 GT 1 -249024338802356341.2944976504018645801402639511870032 2.8093404517845656712914123951855907 0.0583436862345212838620860054580226 1.0619218200662969181088209144386015 GT 2 -10283988285746414383897842002373160705967.9986529891306010803461014451823426 0.5585243247933212953220335818437165 0.0114539716067787502675398648422068 1.0115200735777130222123911480529712 GT 1 -24586561696236958980933457.4664174084228846315354817083989289 1.7962029707103591555587678698436044 0.0834618731317183049629505594897051 1.0871516120567089480045487271579341 GT 1 -23577687339940264420825469311315053.5192711152073923227174042191468254 1.2570038554493387457641918136807802 0.0610469461193785622678981356472421 1.0629897968909919884749333886738661 GT 1 -16257678928725962.2853991200629700998406948249879284 0.4404425911453419431309966350079831 0.0166247476137267678596985960738581 1.0167644896796318717482067869906658 GT 1 -4720390897273731794497634102.6816105929133972649798629398077124 1.5788299437456550668923697780080342 0.0258744459721609903085094421877667 1.0262150780744813791491824905978996 GT 1 -137655671959973052388096.1164235351124959593966393669750223 1.0178700641404094470923885796535765 0.0165423860422953901838173692260903 1.0166807392269229786746250169533430 GT 1 -123320067306011264111754802677757.6685430381200404325698773751890523 1.0766942194353382577876854377879523 0.0105483981516897852793687107978658 1.0106044268605342392162589005049696 GT 1 -70360221708202000712868.6548946032240669326854709656623207 3.6989661855715914749931464503625974 0.0984853672410921231490431336250162 1.1036790049021008108315306321600059 LT 1 -58160380350288990.3522376181391610491405433318691542 0.7824317524165633532844621992347128 0.0133359924777288784650407542548028 1.0134257154145516868644396073601388 GT 1 -2970692318064973.8477947776912311161583410232949543 0.1100938551161789512118976718179296 0.0430786470507391814156241983034218 1.0440340717324806489273129890543908 GT 1 -12031301679498577.6822981457848940639039735794279855 0.9102308301359761604064773878195622 0.0368660245509379145700940787817797 1.0375627538606541073015305870401656 GT 1 -155321592830931658090946.7537480517003564518738953504038453 0.0761989992825212964618760124643228 0.0385149941326077012983541934685310 1.0392763085965913248767851286299365 GT 1 -20.1936139592918534014387955387809950 1.3702166227455368675749627998375615 0.0414545934164649330861904236494079 1.0423383450743655223056285567303788 GT 1 -756967357897735115435857.9523789481597643371137488662149622 0.6436924668513868835107393801501084 0.0847713354307885467969663174100399 1.0885813382950588436895134981642114 GT 1 -8391103.5005124208286109517138918654089270 0.4762791205786892140192224106384388 0.0389924228769482171653197052803234 1.0397729854195651022027493388179038 GT 1 -14798.3366105846110563078199915677278974 0.7016549015170270829115385995983897 0.0209760623399483129250409057078544 1.0211991856166879645827890717948192 GT 1 -590548847556865694606.9861804070675644951889524283974553 0.9893948263605369208514308487457420 0.0320057681766915659509786383836868 1.0325291505835326736266867419475154 GT 1 -126.2968921366247395902970017424615742 1.5999977935694367322192257525350573 0.0108357658007989059331010443841747 1.0108949002772473250984154249954956 GT 1 -1.1395192091989504813017483838234708 2.0340714634730337510270202088102323 0.0853449809818019303632690670980161 1.0892083131951031235032142087775516 GT 1 -78840631920315812310907073884432145333404.7331380051030072148237104052706416 0.2907396675955290138053972916240366 0.0767822096105110358849923357368007 1.0798901130614067599915079837171541 GT 1 -198945369292468720410815.9912116713514048710758104113453266 0.1160947094445609605217458774586427 0.0542508188175476327349970801814513 1.0557778812558364794925859330854434 GT 1 -2246483482457669697875015525866766164.4057025072635645773456087377060447 1.4025797040223868369848689216629861 0.0635862055332414655232051313484458 1.0656978120911889680381444260491013 GT 1 -5197253256168097.4766526916445552582599104662418335 1.9454551457969472595254931239996591 0.0298052234422109773711891663679308 1.0302584270674053730029340458606471 GT 1 -54459928650514954193392.3300403769215534745746669605623750 0.0971078828798356374751246459016332 0.0143977603977161802241419082163166 1.0145024138817176859746521738604831 GT 1 -1309800772610923908707354503605712972.8248996939510110717466841260951123 2.0764055595385942038629345966110637 0.0818284930847491013898440511962861 1.0853710791065157373521741127234914 GT 1 -32590934547897626.6012131822627473591144106013305297 0.9388236246873079658260783519187207 0.0935502596545772134923733871549863 1.0982196939586793725484836948773298 GT 1 -523205536045741734047302035741994314.4206554725120686286045188950044399 0.8904417162813435185905088624210330 0.0155992084603015665026400192239854 1.0157221563821600628559459816946077 GT 1 -3694288559853687.5882372287683228575657466008711210 0.8762517076133015501986693608529335 0.0422767530487710005451733896172814 1.0431964290191572939912232094442644 GT 1 -5468299019122030781824090476187603903.7266663876775363185869609122566830 0.3146458298015951596874000028009738 0.0070182944712298502456934773016887 1.0070430385419548158076126699085230 GT 1 -37569.9589569119041060369431661742430135 0.6337526999032278630298495318237554 0.0447026206967366741023001987299914 1.0457325950332249163328761530304737 GT 1 -47917.8266501948007186376284834672537280 1.3691087392711065823573016921840182 0.0984650780282178856376508695679597 1.1036564994608922087231019878444707 GT 1 -1335463225958774446529120.1162181044397797926221986982391825 0.5164616460877228602182313352704733 0.0146532936966987487246899567694911 1.0147617136478990168936029568929277 GT 1 -8290825360279415310544175227.4665544221169227981597796796691157 0.0173901888011971986946300058547040 0.0427309844919507148441427128549926 1.0436708240969892407526814505009214 GT 1 -1300180438065520886451231389747608.3520716949975194117785712697598707 2.3325665342347184613939109586065274 0.0119206520428956217636556057749093 1.0119922727616068867860297729904533 GT 1 -311700449923.4163692770489231627229031900676770 0.3161196905860917633317024676097361 0.0921760790975637509439976703691449 1.0967048388966753319256481070282776 GT 1 -1.4311566800307435607034530913964562 0.8371634041834969881476095682339633 0.0576003168147637076715704062207103 1.0593258022635254894766778121204300 GT 1 -14112636515179252257700538514081559872662.5271498428248525158189832259782755 3.4801869766545146172602327760773060 0.0198858357394534220464127181884066 1.0200862199590203677406379811245022 GT 1 -1408918081371943.1687080791937714551215514111016480 0.2822264793557939581484259007522857 0.0762859845754163340397290856434757 1.0793527623639171787622920540390603 GT 1 -1442956776478066076536.3829588346628630302149017215420761 0.3831495792951729399252051836915742 0.0320882570773369833828868973517374 1.0326143705288930510931682432126871 GT 1 -1792737891375579812409980646195528.0169746848264863411134212560235183 0.5867270096445739312198268175308342 0.0530262643094774503596327363633600 1.0544839204039725321200281769288391 GT 1 -6217210891250980.2920501404238160464988804337879302 0.9440838990114438797926111861759448 0.0592944857676531162378811605373133 1.0611251381819870403445505556737211 GT 1 -49817215011682171181668752606245749.7227799553151510485531397380165297 1.5543416920088164439754875974758755 0.0318843240836141414536832023386947 1.0324036989314841810367324369724695 GT 1 -1659138484766690465717549982016188.6105314669719787917409346405270202 1.4453204198204696966189930001559632 0.0542501576135053581716022491052623 1.0557771821235249787367028471594547 GT 1 -2583491654727569354.5358786618286105437821408751544150 0.7306793262379911702964358209461517 0.0468228977059578131713913206193675 1.0479545559784750782389268349819046 GT 1 -268621661771716523322672.7349630038063509175945028275151371 0.2624627672092050199839737982517479 0.0616440224709105561329051580071759 1.0636258950098148618675105971479121 GT 1 -64485774914948102476977397073186845319.8159001366597908827531541424072397 0.3860992297519185015737250729841393 0.0451487934918617140412606031590407 1.0461997553437406160652410717144565 GT 1 -220003131788883.4053457285762128628504606931196187 0.4873875579483788374362852379974101 0.0094612117306371628558822942219024 1.0095062533181375051076356651751921 GT 1 -10160024347859861131712449550.3241878834114063212214054507400551 3.0818377609240636501837471847346709 0.0967943623157247009806986891413484 1.1018050242659491385705029855770609 LT 1 -5565852922123779441200.4638650467907590962735331142966113 3.1904325778162866395159644666836453 0.0819469219149786678965169684965787 1.0855000707683867267324613739702495 LT 1 -12600533378612224249224.6768655996734954576112259186642181 1.0779784880649353565940848416068411 0.0071816246876300549297507932248035 1.0072075366889176525029570230197686 GT 1 -67017699223914892106989.5893913285664971523785147419777552 0.0447721076481045648983884858325189 0.0990763950797878781270419616699273 1.1043348141803588065264611020795035 GT 1 -34601410915.1608725227120595708044139471208770 0.1590595401486231470351416903267267 0.0012197379362590532316704922417015 1.0012204824220222211899765836602675 GT 1 -31520402908738641.4051284088402354631079914301921068 0.4273271226919743668701140601529294 0.0944985357179637012432575248023388 1.0992663845622003362854588524807953 GT 1 -35292.8321179768400908327746555894465616 0.9749364152528409352618382577766152 0.0973738708632232941214824476973152 1.1024468432637530212624267884217668 GT 1 -2285455331531764195192369466858.5835801616946383825215072663389986 2.8397825696166818170454815144075900 0.0401445839117983083666420674018504 1.0409726141042717677350232783015130 GT 1 -32778673066765680960560695309074513068.8865973641220620974054102507531020 0.2956594062441718945863073212315335 0.0429895445132351242628366642199800 1.0439409623153366396238206545084137 GT 1 -7649186519694285447590587535103922254.9675067155367298846412793899751160 1.3005942094899049005486720834870431 0.0442744452390138469236255436973364 1.0452844837549608251197870991170902 GT 1 -2.6841312252582134875662055232572065 1.1648835196696270736781104941208441 0.0421801697718534639114165817260677 1.0430955873537831051942381548783760 GT 1 -2596389693937120685165984264102390140.2025561119204679430548405568669129 0.1272145832618263891822194964099565 0.0955713812713528367754438269108681 1.1004518951950263284686545089811836 GT 1 -486741113989936074508513221350324970.3811587131100431647217691250179123 0.9653997632564459586567871542787180 0.0934001773595972621586084592781104 1.0980541361069948401041736608713388 GT 1 -62105580570885.3189542941277067660808735234140930 0.5097320500032496356880569655079113 0.0304552168112156437440296937420375 1.0309286133200570195993234408096145 GT 1 -2683316107687995977.3102433574151760334562814221950696 0.9522571014304341667960168519120917 0.0521169457604924944972514969675621 1.0535241448434970125239161806702205 GT 1 -9911464039753.2847164871555505571168214463070567 0.3857370569352015600651189361804070 0.0992098138239323413802202299396879 1.1044829162208134696706329773608940 GT 1 -7173443179496579373181797532526564488866.8214307652875775238868038846020842 0.6304983973438091846178947752584775 0.0390793063575878810721426613560739 1.0398633982429991897058329087576935 GT 1 -39.1615069829895310493101343391746617 1.2130982263771243500102586202828740 0.0704245740400942974139836388866348 1.0730273283028511173490365945161657 GT 1 -28110717950.7021229542615537290213262681725864 0.9275344061463716504572517104653211 0.0115071494648017971429866599124492 1.0115738690377847983138937000905913 GT 1 -5873.2856759054857390402970010894873058 1.6431079682503807711494290101904473 0.0457154943997747903119803126884611 1.0467934280941514176491719293046208 GT 1 -111364744965474600582350647565788214773649.7640669869341641764635035732412543 0.1352434847901059624367650102837541 0.0111231910215067801660734131722426 1.0111855163124627205382074824102028 GT 1 -27997024116759667598408099738940.6964473683983881881060741879500904 2.6018266323822563585069634417757050 0.0004999997472216797030448158397373 1.0005001247887775252679555308864425 GT 1 -1366328960821.7748345216168353798748016876121537 1.3638146170258372514719461486373382 0.0820978225212713545493871354619774 1.0856644545203057289466956663222211 GT 1 -95604159.1558678638139144436477017527431073 1.6409618489553204087138675630621549 0.0012416878925468873204681489839753 1.0012424594256931764699767862744232 GT 1 -635334996665732272396352.6917518534958974419480380233870930 0.1613501149390266605345000035748800 0.0749115012961942801343975939193867 1.0778658717718187866325284894304626 GT 1 -20181387448655917504.2257544647672849099851483124206531 0.4343014554154383751057062013562726 0.0867672673305527028356434905973976 1.0907645210470094104462408736373460 GT 1 -775029779035732195020287364833293681260163.5791798621228392453055077810368165 0.7077713605932237886798914036824115 0.0732596571236618733726359977021293 1.0760818574249699231779861002327997 GT 1 -36355085820.1546331946645683240396445149462013 0.9173205786026231543754227247663872 0.0074462327484742105403137747701221 1.0074740943349509130595539049657391 GT 1 -10916941824068725922962804465527255761.1284817902545435797297104586536135 0.9512419426579622638910036067067510 0.0458908656859780603522516040111600 1.0469772175210589599567590905339778 GT 1 -1146042190969755746893005157362385.4057770449913844230538843725501393 0.4882593046319745242355823438270590 0.0977704509941167023882995750412310 1.1028863023762776963322827780463239 GT 1 -52522.2935467885737575404104199639272641 2.9947685448879205179445988127578620 0.0524323526297234892867291540287207 1.0553072344068174183703156073986412 LT 2 -16427844575989826862346551464221598.0978766402958280976269529145098039 0.9998766225108450073614010267672998 0.0539652436442595743891877613686121 1.0554759702714046433145829660040850 GT 1 -142098897265497772451187674787621704921.6362882353335118321283204144349438 1.4056628648489315965173999857232134 0.0350363201131423719794323562890454 1.0356648157744021643640039838481555 GT 1 -730860065234895487694564653899239394.8955530803666010427440200846707574 0.8197901818474159732247736893083534 0.0763152650105630607317316710830878 1.0793844614598948246070155495437203 GT 1 -17990812233218990007406246463351746.5896673048034608242210962236872492 0.4867081382088833373170178368963238 0.0414622495954078277311589795272420 1.0423463323950146314922526080711055 GT 1 -1402937449241227467680158979096083313655.6060376548344007677481319957307399 0.2654951761829238798184975427283641 0.0408925760593237122275779782427898 1.0417521937499062660027826018526928 GT 1 -359490265058131.4546382821232019763532581870541155 0.4707250638590942439001444747589085 0.0375102302009915612923055147091236 1.0382318416569346209364133551245621 GT 1 -8013808344172765842.5460161427157186615891542367768318 0.3750729425453120110863042397214470 0.0479042894528047822243998158847943 1.0490897129551351420870800326935367 GT 1 -137549383687421793.9661069765658064163757952137227391 0.0311048628888192031864264682360951 0.0382417339543695666770694732400479 1.0389921425900672025730706524915243 GT 1 -207.9378445113025699224819409576078750 1.5656161802178067680180419478968610 0.0935461163167596619283892655505913 1.0982151230176071147886555647971417 GT 1 -3454011902415182843897522642488924273.3314252799742033648557752320044348 1.0394942490081438959437949128195530 0.0391154995798874735316671255593948 1.0399010641025937953515743158792614 GT 1 -5231943143578222582979784.0790589706272914717990830881694698 0.1240853610516190428563242682340706 0.0947552482772872372570379467925393 1.0995499279530680597232587706163388 GT 1 -41050315812093379405859594728472626921.6900639618985391099790896769982862 1.8829874399371906639902580313856268 0.0856568186050931610952868692984053 1.0895493060142785640431336649228784 GT 1 -467174552896223930516696928.0536980890010298265716224130685291 0.0229571102521006272952685844293047 0.0470243905979137541151291348025125 1.0481659691474935614779715630570220 GT 1 -73324529132122609775701044308288.2866762274248141022628984264277576 0.5337991069967039596635937646004059 0.0166867760392824159379537681104267 1.0168275687349293631791416573044539 GT 1 -8605451154505785875389393130438750954.9709672514736585603599717498394612 0.7544285121204026634525223847480900 0.0555015878457622062842393732976535 1.0571012731915488927857888170314630 GT 1 -2571648.9605944813567744108047078615494651 0.7448096943390655233474735867632890 0.0158845222557304764422310380306555 1.0160120333843253220029593681218390 GT 1 -20848059529278941999983936190102658900.0111569417797166237198259870764284 1.7638155035503822796018608670538276 0.0617316001472355634488272810207244 1.0637192303383378427997953669399594 GT 1 -227845.2500797563431169877781027515643074 0.1124724089244438402252279156085345 0.0683790864460998069528209753099782 1.0708292921536183766861057775397531 GT 1 -15.2108074037879512751339276567967035 0.7139877710975492598044242332939321 0.0968053692064176100575456619052706 1.1018172108127351619442698538358742 GT 1 -59.3160869477287837804368152951316178 0.3728443982125100428183682882122484 0.0870911573400497763226467404368437 1.0911192471178343660546235510371643 GT 1 -42.5649316348400925755717278475361708 0.2561671746177636940416633219771377 0.0394131045468496059002547028621356 1.0402108318878244763681922918866209 GT 1 -16931312832667072336900064937938717109.6159123709160799001823682190801822 0.4192531799028897258543362133016211 0.0141271086647505196355263009611068 1.0142278461426488555848809524376674 GT 1 -152208.5030744539080962248351473231007874 0.4459807682009968902373840349995932 0.0210654536475960514706851961965058 1.0212904963451224693519633190572556 GT 1 -1098812637773687626483866471235.7639695174583614500022143106315050 0.0732412381578766223445844719974095 0.0974097292567763287953457557821182 1.1024865707928848577816630472424922 GT 1 -9215969760020382183857695064065.7487207548075997870800520529621510 3.2111143056574254843649445459714720 0.0753497750454954955878799088216927 1.0783397481651679427242392867837472 LT 1 -188980635486869277972295355514847.9226514100185185936337244665342519 1.7986557637607993970507586061773687 0.0075491630001385904092479156426481 1.0075778021566216363745295191048936 GT 1 -17933372.6040662373254420729598798513866516 2.1385927058475226419091467908378522 0.0939119801929977317016062829279269 1.0986188255532588104684005141145900 GT 1 -7709306085619726403056829385.2012712298468598434419135605352627 0.5314575932135146790802052372657727 0.0275303845698210568560426656101066 1.0279164477512274720076820863493524 GT 1 -3935408167401250601469220.5334163541039226481019738643724699 1.3496936550206600774820899520701707 0.0925526595590592058395702012559536 1.0971197415890905133498756541684472 GT 1 -4945141002282352203034656995027876.7999030581648674761799752692868424 1.8723166550705008624685500090775332 0.0339900602959040330733690972634151 1.0345811552738025100227868068892978 GT 1 -97252621347089430398642152125599065915.5717430448859127087265253447315819 0.1745035656502621358706328559211128 0.0627083026264664813627806620727089 1.0647607352935389526306934814738874 GT 1 -31348309948078336582968.2328460421057210071808726961685759 0.1807184914581344744884818208115646 0.0616730203440526484405958012347526 1.0636567983363819618920854387633981 GT 1 -1139896061522451191662233654969035.2643688296008411696281935895921296 0.2663787601324418739796730856028000 0.0241285249964682475338601205111681 1.0244243866875354046680568693239290 GT 1 -428621665050734590478798985078423556319788.5279785467938923674068531270907810 3.1983075581485378637333369284807019 0.0568228810803866927152681582833181 1.0585011890443100027984102778273188 LT 1 -498322267697764830339227013261588246670.1355296379636598180175738045729216 2.6043305106182275405276101301247789 0.0897087696764983202701007019856536 1.0939906973484523156818189675055608 LT 1 -9.8883760289030993010822162528541042 0.2870916037920725650955807084331915 0.0229500832683039640758202427229011 1.0232175364003875451504514308660031 GT 1 -165262141074583713150879648930312667698.9490011889168657992015958923281653 1.8180835895001412600891158275622146 0.0309960798504898576455768897954573 1.0314866215376241125241998321661368 GT 1 -671.3187630639315515002695132236323421 0.1547316398618992872478809754023887 0.0843508380264269361007988637422647 1.0881219986213143347228084161669955 GT 1 -107356022936175.2800361777668725382641710325042510 4.6539866421142063402184124257590917 0.0811547786370507341684386052776066 1.0846375915257739799580311964941091 LT 1 -232065657741134400.7976271227556533713111012609234848 0.0371662167220275914035573305649351 0.0396103669817769577716901690849574 1.0404162091349662713010722501074572 GT 1 -1058846918784811379365.2027419503232382093868266102401077 0.5384953890298515513716325531827419 0.0018956550333906285193704195842734 1.0018974540613105127845897777462119 GT 1 -7004.2989071512905971183065145016049276 0.1025242198204052398107607606183576 0.0599681426476902056594806162402676 1.0618415134920381016660656240791856 GT 1 -28898334045.6124434326533926246225243699523724 0.1120639716995630981649820387902965 0.0959527075948975906318486972209637 1.1008736053509077366979164766941305 GT 1 -66721662811185279852716589.4989577184768869095622520443703792 1.3238244377020882731658512803466662 0.0515024792054238071722462705501110 1.0528761034274834514286906872756854 GT 1 -3167675280998532182.3554446876468565566616432016560982 0.0164003566651654617206311688747301 0.0268791010858758256859259523364355 1.0272469507491909601564227685236376 GT 1 -12139149068471183403638.3032047801715547621720056626463827 0.1076275752922786273159388193753369 0.0503237046352510947816685918762906 1.0516340941745184328297176743306314 GT 1 -1.1129799342777440404234685571029579 1.8018098965353066080345191227483682 0.0912354106717804809420963504944639 1.0956691959818795318654552658862316 GT 1 -1.9269713605179480056394251371340866 0.0758545321086801259463999988177145 0.0324044136465899100324513680031079 1.0329410616938219384191616036372218 GT 1 -16798760708301.6175875544367252788557091912317663 0.3134333349747974736997171070863079 0.0839433615584269319116324783345829 1.0876770838597524215395847624971660 GT 1 -40613009.2059007982246966765677152356213006 3.2053650893493713555380881870726915 0.0863783231924949861829746760183949 1.0903387135585563348292361400045924 LT 1 -2311.3767894167391620063103315405828740 1.0244632259096471382986069596036099 0.0221276268018761586016686340341713 1.0223761152153218718975172635046375 GT 1 -38943.0212181463944106893445832269765036 4.7452747747827869430373380966149315 0.0090619707814144695818684391390382 1.0091032801911225975160540834273421 LT 1 -643790470942257406172827.0705027756497311700435783475327556 3.8202577873533670202764208582874257 0.0578098669375609285920417837721528 1.0595481850036360557845700315930560 LT 1 -32708033108402874663821938496227274977.1617656603472533165071392967164068 0.3869638250581308442123361961177074 0.0530328991456850921553599164777437 1.0544909267856710998864825061061086 GT 1 -640500872651903264336155718.1615592626950518002402383293617326 0.0821593862518007847117059302867565 0.0049141026911021618724921413879070 1.0049262165960077865772289382890222 GT 1 -1910.8767415998728373402408879143008603 3.4955096268667509886220683042214196 0.0575496286413564220136160165800372 1.0592720174297692880107017796540639 LT 1 -1851333578999792407475465309365161725.9314495709166652568298419787933966 2.6341524782026493089283657491434903 0.0874799018104461994299292027426601 1.0915451683548366906563112512847658 LT 1 -1035537998943923860611733101509009073.3720850798366369782887283978869921 2.8341174912516636027899716475214636 0.0451774457981200664408280217490656 1.0462297628841383533758472481102440 GT 1 -161977854522147677800594350.9135392209991456835231356001949536 0.4056159851761868516031421470062021 0.0132632927310274149305065828139647 1.0133520357546737458617849203859293 GT 1 -2544892411197348062086879.3207662550447971723602732014214206 0.1630095235049156570509073808630258 0.0930659000474281990789391526974014 1.0976854886703074326791067520663427 GT 1 -98994133531285166658181.4953052162890274053027165051961919 0.2192736606454708078988831357829896 0.0191839999433886379617768925893393 1.0193704006618273866795224371136761 GT 1 -1379811991792480732659117341.3898619988285509811980498722601189 0.0477319008226227844037903895658659 0.0580644824765803033688945910220424 1.0598184594839926491459404275656283 GT 1 -11623086169.6131354787460000985179152831131995 0.6427287073259015758940763579354894 0.0888205197181072477221314938062638 1.0930153865475371944002415988235568 GT 1 -5449051863844062086861037.0878439650098256291755985117659714 1.9222055929525612910692442195050124 0.0959327067680881480737680491537001 1.1008514819446046877448700063925785 GT 1 -6804740107230883404262331415395048015723.3949095497398315195085319146659643 0.7866273702769250879383473659723478 0.0342491976265392230902427801883841 1.0348494466067249215605075628342544 GT 1 -2276442527267299.1094611438934602788019096014065101 0.5282578879046780160447024111105466 0.0443979944754468916128148339410345 1.0454137648255342715735262411799510 GT 1 -2979.9357680425161086470264003490472875 0.1764003628078586064138821850562991 0.0193498043768294624554778000149653 1.0195394623914671153418985155177606 GT 1 -14582469.5672772860447550537301417225326135 1.7165843090117200264420355963618381 0.0838921837745206308937369683393932 1.0876212179315719605480752500143631 GT 1 -12413082951856731595650475436.7613529956366276678881049306520771 0.6560895224443298117660736317367774 0.0946599193985161381637299107261007 1.0994446261995602545839750872261055 GT 1 -4699251.2593897001128977505278803553921401 0.2293006169685957396725548508351286 0.0821640296153407722685787483807439 1.0857365858252798963237422862361527 GT 1 -5136460824997514567167589928459881.5894440938738381190277065911955416 0.3560363710713667945567197971812158 0.0381941656719205112216517701976217 1.0389426841057364641740550913511558 GT 1 -17232.8923499140350146941538588775104260 0.7397766600440421388755127951949747 0.0662336078536853218491129790752341 1.0685289875124242080506338064848751 GT 1 -5006921702304.3097933400658218230342531395324528 0.2075680593052631684840559436636106 0.0729986892187266650844736067064407 1.0758002994137504949192414672326032 GT 1 -3603259163386.1849826085813108657199083581634245 1.0191319418023472737157414799376283 0.0608426860906028716792941244464525 1.0627722803561981380930673864901042 GT 1 -128381312333372722329975952026565209226.8934060076598739584167889384374596 0.2875192518675750063410053523142309 0.0084466531740565889131087404938017 1.0084825283083637696503808860667585 GT 1 -311659274711623023865281346319860743598.1392718847878703043382627691964774 0.4790282588753430211319748935884870 0.0758483644015511210891597904346366 1.0788791130141342246906105387091602 GT 1 -106157319260721309398366868184706985484488.3557331426928192578891431647080631 0.2272555022844858388128222040906679 0.0455225644034017186482281896501488 1.0465912761202817842949656688757349 GT 1 -1639182183827953.8619418715912038858458433893953655 0.3713716109998456470620082682167567 0.0169427804407354547268531427892011 1.0170879514148491997674980099752390 GT 1 -693972859363306565953825471813046656180903.8896731400376600102395419161398816 0.4256098814210897181837104235576263 0.0014040074536710335131171407017340 1.0014049939956523324644822453655303 GT 1 -5762638270660712700.9907095908496937259333068226095095 0.3252003873575397401287319832314907 0.0896750039171819032651251613036415 1.0939536046774867953593842889016528 GT 1 -23721165510869766.1069361886380125330377586121506289 3.4248315425084172978265249971003829 0.0298639506427772136672323578004989 1.0303189602505098311638807589873346 GT 1 -59982.3069088600882568509165889122828951 1.0285485440631232509266628186077476 0.0432518897215561893205692364115598 1.0442151298249247614650200257372064 GT 1 -540245193390946210264.3161129303469092559358731983485092 2.4104191148631445626515402310234425 0.0778235127306406588436090901825813 1.0810186558809590224429855213918412 GT 1 -35371718966373453726988.2730927794178389201626283684542125 0.5996114085509629932998858575249867 0.0971287500847337875502498805626290 1.1021753161124655393345698102811068 GT 1 -2913391661863078404332237048879928142877.0112921676434582261485663421335773 0.0444429129673884341646719159916172 0.0570258694702161129975603541209068 1.0587164298853320124375803809667543 GT 1 -1016562.2747675379756339997057695994222616 0.0620213630217966781454959499524160 0.0777096143407298540521703662080463 1.0808951531043819277394580991926620 GT 1 -36249833836750.8106992733237670133269332119103268 0.6125097138493456556852213334398772 0.0116804993775371540771169135661799 1.0117492523138738850138649568200257 GT 1 -99747446945969712575024067684117425112.7906646066005535036346686259850329 2.1784621245009559755721856458123294 0.0945109858599800389982897755566921 1.0992801341011017024548471715268301 GT 1 -79.4505253649975143528692038611016066 1.4184566402004892225467038332969484 0.0421244242206201377026553782987022 1.0430373885910004148619170029841615 GT 1 -424543106624341153955804862227473967.2877374829644346544630381757265443 5.5848789842754626822172179679103449 0.0759289411752691477747390693223134 1.0789663068074062251000017545674714 LT 1 -2054265553474885152041424.4716346600629431503934054089661356 2.2593129213515981324940475823567008 0.0811191716075955287094409156899971 1.0845988403425229165993758778658404 GT 1 -157985.0538939295575030893896218553495510 0.5483231508584573430621812849409107 0.0548790021845996531474524465232342 1.0564423196685208821382859508188139 GT 1 -1063882956847423342462990966520.3771155724229429366250672628542676 0.7226431370216364503358276226506235 0.0278786141841129316084282336508885 1.0282745997922387718567082117219052 GT 1 -21108241779508296074608249458287313.7068958024095561519283572252031456 0.4769827778554238218694244521495978 0.0293101267596791451501679164692287 1.0297482507482490811457658428406497 GT 1 -1791882394331336372847188839527713484.1239787411956252804348580536047322 2.5016813561676651331259255298643624 0.0728742948825413590664659402841603 1.0756661183837506183627888536725684 GT 1 -1068219371649.4183384737313940507962913499277853 0.6375056207782779420069130706389889 0.0930993863274524732211865566059192 1.0977224118582655603989310747787478 GT 1 -2114338313683314037719249996049443019502308.2420144511796859347859039248005851 0.2205411950304923441154844683678392 0.0052937050196620262585516767555974 1.0053077663222918672955021315714548 GT 1 -984882494518.1903935540350116464960328409394162 1.3332059757419426381167448060597735 0.0906790287180704534046222360172331 1.0950571434106110125620567413291049 GT 1 -14708145054537246233.8079749832094557610358553097121185 1.4356722342999522072174041070231056 0.0380723935283892329312134622954581 1.0388160842961045226382752495506500 GT 1 -4214046211342919092771059.2269393426414783772107543644769761 1.7114329838431032623269982153563743 0.0993865647255692568497986269775562 1.1046791530886641092286917148770918 GT 1 -11880353362426097464564489513840798045559.7857481280708648132558204582689479 0.7335797151747066103630897078254274 0.0948600928668626961969764928372791 1.0996657537132785254625590058608598 GT 1 -1053098748420369198358618750246869839.5319425052154837507074816115228100 1.0834428483112295330412182646163685 0.0299355634250686433813116594597995 1.0303927802323552067048069057783019 GT 1 -1312125546360143367539743565659968498291368.3334162237383949348064324085925697 0.3791840263807440544665467608928984 0.0918799754381909913792894725776725 1.0963787234758369307121629818724689 GT 1 -229319197.6638698807735596112843369795000553 0.0241937585756407692591117456063866 0.0955361435636964810585281778109029 1.1004129346618331105821216618617603 GT 1 -537649626145.1180943797688835991576654672996662 0.0670802870456170546688912379864198 0.0792746178472393965072521685910753 1.0825934607477532166154443868048619 GT 1 -134215479774434094591839732332302977.8698993116335241689897566275386704 1.7843199882740285535525734467772791 0.0202574460020881202932383192915976 1.0204654418313400228097971297924353 GT 1 -240950755250634911222982623.9937282567459538075186217388836104 0.1355436309834117405174350383859246 0.0367369652363667707831566462529121 1.0374287635003285561352600665444473 GT 1 -265875867726850201876414134150.3598023811413383175636556414640822 0.8946621180927372853230786666685751 0.0592692542316202879019930377113865 1.0610983166131985965468281027926064 GT 1 -305286150.0036678422356671960706895834433598 0.6489235852033358013895643766384515 0.0831293174029163836706581539534990 1.0867888389198807845356591224567110 GT 1 -2775494892317.2333747102929069637312685409341785 0.5369197407380783413112319487031336 0.0913721723808764623329539601266002 1.0958196992062561916772840179262738 GT 1 -362021926840291715.7323160972687785184733141593411646 0.1495580066458114833152019378027529 0.0980935919430862265488934383832713 1.1032445247720567288888914602706923 GT 1 -375174073210930441647981406936945525109089.6234089674911303135485215016367957 2.1570060510539321021259273133645143 0.0865495468455344945096108403173992 1.0905261431085263485009644406325192 GT 1 -542983910272880.8570000960965568288638082408077492 0.4373928860057938641648281058675490 0.0769090414015351608469834276904482 1.0800275026407966129358701264669142 GT 1 -15897649577030878945444220802286387170.5931225487448578537924385053862527 0.6462308071066799073154065742287608 0.0701728051018240473776419704260723 1.0727565220374574419381153594415557 GT 1 -750940.5950858612955053414385725067768923 1.4270834237522633433994468749153030 0.0458621331544061916319820157105262 1.0469471034618658054975141254535510 GT 1 -8158112733736874483073110339517331134734.6698274923732209550673929187447435 0.1840188032604949725695781382677046 0.0592419316278178859521622825078236 1.0610692730136842373183972471572428 GT 1 -21624832659876280.6330279351297057701667878442390928 3.5733069717269261037877485391247005 0.0902109404856130044072065132452132 1.0945425090730898435545260808264663 LT 1 -3416895332396927651611490627497.4941912990726544327575898984201083 0.4670364263392476487695472658603565 0.0454436874250409641293675496594828 1.0465086406210600583621762627426937 GT 1 -13981777971279065072115354677.2593192260612577821873060671965231 0.4330326887803714107814257918958059 0.0867734743155138961753409869783851 1.0907713177876789079725707088018951 GT 1 -7430756.6747853540643213579241132956672750 1.5473238763677455354601725028055056 0.0588937788295999673090660544032337 1.0606992646085887067721359735980997 GT 1 -48719124878965409551956295609484.5495396397846233406103571604804027 1.2879025773844531076377153078613560 0.0866063199571308994603557139733625 1.0905882974112202711122303314583782 GT 1 -363240852.9785650018569189291542206119426869 0.2064780474627167684946476224822263 0.0896048800279993782002424939487515 1.0938765759363872087264161723636903 GT 1 -790956401767494200888237.8798127276179459363020181940568162 0.4925233974921543881757835171957097 0.0213677659210357376602648061301379 1.0215993616966037568749613233642497 GT 1 -200109730742020290912682543.2497219070563485908175953777094007 0.2853735458659322940372346801903984 0.0853355338286342885698419922467789 1.0891979845966880174459021206787227 GT 1 -226723439697531570244497644.1986475548262475814373522199073132 0.3258163192406164867311488201866746 0.0483483362670212466610105051629345 1.0495562105884539047751437912936128 GT 1 -44124104839800098637839223465596225735670.2739917082961343027698874148536366 1.0731275195725667692559937034894197 0.0995022696039353824609695075970049 1.1048076347512406879684094783649249 GT 1 -13015271036906151099917953105107.2647937606108293879395947715906096 0.2727793798884040961365060451964041 0.0001465795254889737862644836471044 1.0001465902693175164243873747908876 GT 1 -72813210006236863709276887776717.9977810920606733842257565909062200 0.2856627437325368398162007390237567 0.0804773624281389468774552094074009 1.0839006158043153813020810272245065 GT 1 -535982840570696460665.1726420422760540913621295575652580 0.1193299165927198637358985382693888 0.0506870988057461698724631954040033 1.0520168179684076310595812826939681 GT 1 -1250811776442817831308859245679238426149.4754085652609221107861528256077530 0.1098658281429643900096464778148660 0.0943870660726585729670612146172031 1.0991432894716239603093168436025932 GT 1 -4632275270752371625264811371276162130.9449033252974947037975711674839744 1.2237454266375254244878158528123832 0.0459009082115584176554008550345823 1.0469877431287395871275015156916206 GT 1 -2045132534547336.2829771500848484930879453444335076 0.5474964413692410786959249000872533 0.0617060397041602172408974930098671 1.0636919885651682020985174006261801 GT 1 -19.4278838124328751344870592096278594 1.1234017102239556583062586679508886 0.0023116947495744318113233425341502 1.0023143708408816590949001197885599 GT 1 -380282556607947661385285758256664.2223090764851736369215115686108192 2.0510314838100089067531747374983117 0.0067844055015339301269957882819061 1.0068075242043068830359101307868577 GT 1 -106587835989120964626529105032318210726449.4148586515691747662064839668542062 0.3343217393036474676364202353577168 0.0475445235628547095139763916137753 1.0487119169718212629449292483641759 GT 1 -6.5740487283374584708787609349261434 0.5124605891157349306644892514600613 0.0391271866519974387908603424801001 1.0399132270037326428285561120105283 GT 1 -5311894032677704656926765737763.5094443556226916544824389970887881 0.7731449902618210305431448222393108 0.0472956064686006237998136326757961 1.0484506086169748254080782384731096 GT 1 -81229809.0611039420763599756231241340194202 2.7506090996735023167810246691807790 0.0812678865070364619877647961139467 1.0847606969515790300415032892187943 LT 1 -1880159764715.5502886955128703603542973655827689 1.0129846354718183152170986970806593 0.0896432038719497938923593447865959 1.0939186726587547049125386723164478 GT 1 -112782968056674159.8111495148341081531819130941499835 1.0521786346606957676916843265131651 0.0885308375133284013205198747643848 1.0926975170466135560502440338990812 GT 1 -93991801.3682313767337554279305762235256631 0.5825616839542476026811747893682742 0.0611268468675090022540865155719336 1.0630748960848154148744954352409832 GT 1 -23121654151503591.5367549678936292063904200652845283 1.3469798944043609072842091411272578 0.0724939474977105127569216653062340 1.0752559589129010884422624240154771 GT 1 -44165543466346.9695802217271353049052682779782544 1.6861394146790135180534097182445332 0.0709591036297819677061254607362867 1.0736025192101974189389424543042673 GT 1 -24173050903946.5845627124749220394151963318837115 1.4575491222728714888057302615150121 0.0771834110730025958867316476468940 1.0803247761135182353596485081035466 GT 1 -236350278087991545629.0967501550473193347054963988792331 0.6192379161027376340366871841144559 0.0307492141612969701234187539333125 1.0312318916615504778347144335634260 GT 1 -648814060644271.7006049443240487254171234337354584 0.0347954275779657721011821398686860 0.0193631263454952258823692320861219 1.0195530473162592567301072018611546 GT 1 -30469550536394509693000086691636369.7827692303067700264742742782774399 1.2969757520970821377779216380881481 0.0671451805292467888182896766138454 1.0695056963833565910325791890497777 GT 1 -52031258.6902846307002049890941916152384347 0.5629501780332469594248298060422328 0.0674238078491203259175948766275972 1.0698044234016271112256761759584748 GT 1 -20590519496186225380486788569657002445.6648210219138235821409219737074599 4.4809857859482648004410642729746641 0.0384585645841924748131311972522846 1.0392176203256242664636886521016962 LT 1 -20776875651373079196608877937438691.5741797962558376460233666731585034 0.1238126540725050514438172205146517 0.0867296589753934324779379558506647 1.0907233403277363535338914030658138 GT 1 -32642083158931896117654459513733457602475.5724774401242580683848061174797425 0.2842076107976881166999745028558674 0.0016117866600245018167136223474443 1.0016130869855626203987750104416910 GT 1 -1101.8618594996523200584855912427705338 1.1736926952124111644799788804428777 0.0830146161055626508207923919818124 1.0866637458991152574091226202909871 GT 1 -454657262752753297574778.5334418590755628455869806357296761 1.0475846780394124431056943949908484 0.0930593180744718804054159230028904 1.0976782313083085712835911032165765 GT 1 -185387805048286.4031281584729665286307831583209825 0.2021924878841012188566309027918427 0.0535179175335320446551977318874797 1.0550032388167810350941281665552028 GT 1 -1124247717746.8789111393663345892918113384605846 1.4043406517805165647409622069496498 0.0979663372380472559004612908517456 1.1031034394806897157817741656471312 GT 1 -4150467331754.5781564676682653449546421268526644 0.2963095448262898757936696573047911 0.0166570335798537949568368304400173 1.0167973220048945332822672713813789 GT 1 -453700168.9943682087020956809013228190858498 3.2214068696539685422590690994161114 0.0866711346908385369435842724171229 1.0906592602773651634669290462230670 LT 1 -5600.8664469621823223675692857357314174 2.2204907637111732509297189412431722 0.0529987281897609727731587352447954 1.0544548428083238401419883065686907 GT 1 -152157462193.7697911662619183640566344476610233 0.5254332495100115305566443266330521 0.0707134700278757427845987874590321 1.0733381593349086750309603870842654 GT 1 -4674.9057136166414625308556401720280211 0.5503118893119014246653289409213014 0.0376825490080059201456729713721597 1.0384108921151970428538351626403130 GT 1 -5.2778120495854796557478182647914297 0.8887067428822008839507374315629669 0.0071876984458404484328164411666917 1.0072136544008176290697981789230857 GT 1 -17338070784.7688247425302377671402190202776131 0.0424220553043793450192396074588373 0.0462180481601084211530152850215845 1.0473201956708203681683075672159711 GT 1 -32186314007.5275573849535319605478321377828687 0.5455443602438645547543033347046823 0.0081687445175537185521891866280353 1.0082022915272592228786701952610826 GT 1 -46533571506.5736437600062849462801958173424711 3.5488566966553709837775442323513394 0.0851231546380516174407386214223284 1.0889658179982102393962578231316750 LT 1 -38281452115129115134439582216433532.6052742019862053649363412128346925 0.8203762060505171570659074398211363 0.0961748578604202894929067265483850 1.1011193641360918870246534882707807 GT 1 -6573162725545155128625.5111612559041120576453908171333849 0.6506906706819504384365710792496568 0.0256352304408858667400755466822191 1.0259695387155415772399672471056290 GT 1 -26747143264317997046715024253423771982.6615745409740298381461219975685069 1.6650350035555301360957221795214635 0.0611783041613233451156063768189813 1.0631297050905017425465545760003778 GT 1 -122725002.0440832281531354454986523436988642 2.5022560431648904982176379199413425 0.0602792990459261252902863335121499 1.0621725745135570149921630747600973 GT 1 -58781629130494913406.1204650094021610532509309955409596 0.4154008575763810459532972488021625 0.0321653379546254437399809169046464 1.0326940099663021813060008745226373 GT 1 -7786310451637767599077647630884177287.6393934405214103881936539146662743 1.5616641433329893299007480739334424 0.0649260314584991899941774387053191 1.0671296420829665235735042792234713 GT 1 -51627739903443013021733119157822397520323.1710112253310414468967050019501619 0.0634576827244694233954639091638698 0.0825545484057469727429254250011236 1.0861621541240958580968080686261060 GT 1 -2748621479538.7964576068596305976379454804550151 0.7849206586744801865306891977809710 0.0243893341854172920916721651808729 1.0246916801308589659146562565749193 GT 1 -8776.3092380624669783798962089949278509 1.1856239167372655900463973855382577 0.0962685898354338809565942642507324 1.1012230753864847157502300222946728 GT 1 -11.0212943725266007550300036293929023 1.0251180895885467436183571625604298 0.0066960715019515677823519391453409 1.0067185907721225994447490898850451 GT 1 -283664847355.6615070653814149080874367801153954 0.5246867783842343921082987184530480 0.0256645819891350914375248028452988 1.0259996629475180164590222924697164 GT 1 -633.5186204178069751004009786788822432 0.9937523076878468030134257742442901 0.0552649794164607545201116469167965 1.0568507923071452620789639971448557 GT 1 -208471.1077668156038491410060465914689046 0.6539116820863834084212019110189310 0.0252307456754639280851466261329989 1.0255544982244599690874501090624856 GT 1 -54686014864772662164729579364617.3077780212730694979843168760493899 0.5468269278078100166284604734681207 0.0996813085146448866023254442991064 1.1050064766866250362091154856198466 GT 1 -4988386927383401146521457510298092697194937.1989970476382693668318993121654760 0.4228513612426582371343910993642767 0.0656905170168320429998437109584618 1.0679475434079483233420032706170609 GT 1 -1039208059.6875867551352484735742231246233335 1.7072418842416869589666535233196120 0.0849668700470296124615123590078702 1.0887950067632202827914481239550892 GT 1 -205636153390543524877445856020618276070.9341084639704341655355009066876211 0.4041074402891608885997655484686746 0.0051701219699536179342050694816745 1.0051835332959776379383153479736596 GT 1 -405708.8570802550566937077883781210834136 1.3887733781117057801061472245287114 0.0843586228372309446049195724589004 1.0881305006155502977440850602832255 GT 1 -9633889240268956947523.5166022300313765752657288644834186 0.7115462627202811434302900599312419 0.0250427337359722764713876536397258 1.0253616384176213631781401619713554 GT 1 -41457380050781262044080702087882824594.3956110294556809978727889078394232 0.1104249229391553757788486322273054 0.0049098081986343391387787642389880 1.0049219009050582994762424157597976 GT 1 -1173989235075671504425.6210659889330697535519298638221939 1.1082724835003316351646192499651996 0.0038590219297044961048876160726895 1.0038664871666959769095860714422319 GT 1 -64302210.4362430721515373195828148598299965 0.2931888870426286876892685585783306 0.0930628684251566593995321298170871 1.0976821459608373787880713102937281 GT 1 -42414951547005162217939312907756.9723471062784460977963561412381187 0.6714564663047470633153603083533861 0.0286121539100935941878439541718063 1.0290294608947952060069530686342256 GT 1 -583700710895292814874254656103840792618.2385559145754899308276213386930969 0.9372692225235094268718777173536672 0.0219759792131407061896413961574741 1.0222210481171814059248148736298703 GT 1 -48811342406880509747184578123099517.5911435105592060745712060074972413 0.6501194139280719641778745965085242 0.0410366220475431742735104484124779 1.0419023925729612768575226030968922 GT 1 -316590014419903539921693.3335702183212288890492888164858225 0.4547318301567908324340558224203016 0.0400941487178308595441761105073378 1.0409200709106608905004261801088370 GT 1 -67005017277335542109725835643232.6717799918466638166007552340546909 1.1954834539039344526763450022954806 0.0527523214048139176585096910236417 1.0541946797645125714912356327427602 GT 1 -50.8394904719778583565230754989898015 0.2422653852328921136291402511090372 0.0518135057236811872607682752891335 1.0532040721545607227805772413715411 GT 1 -2248.6902612492375074434824644862010382 0.0520229375729034008609313644513466 0.0054536344270870456117586443910464 1.0054685597810022503642740008124054 GT 1 -1238151934802.1169372631495628584698825803857458 4.0292506933361352824064416317266328 0.0856879458821134353005319870721914 1.0895833499132254880699949246228652 LT 1 -6055506005665878175933.5807134836605341371574100807237728 1.7373003021749505953026117273227636 0.0276280320989241588201781329188591 1.0280168647003734252385990658256150 GT 1 -8961224280509333832599223285358949325.0507788017448329426801268548232191 0.5540283738226146020228261057269910 0.0518707626145517043081593697061610 1.0532644596627503444727883564190176 GT 1 -345388.6774420139140572941693263617735535 0.4047661127100242949729888164704366 0.0253894764790134509416487235571415 1.0257173508463085059519289554010094 GT 1 -18210116019291446.1485964340510014464046410994959897 0.1289963313592550051332631881939211 0.0673459549050681693388400062461888 1.0697209452952327775548844109687600 GT 1 -17269018348376212847150588758784004744318313.7944413273182601486104241874557758 0.4245589538153617980509233177850061 0.0460589208936757122702756691671686 1.0471533713842541676395799473106717 GT 1 -943346534271944766568.2504743804004624388761650725057782 2.3805128851642161541534934909769600 0.0460706824881246959728994875045654 1.0471657009371105678895972738928471 GT 1 -59344269667355435733.5107761722151534513825862496603518 0.3491944038189224772063824736868448 0.0776345247448895262301636001705809 1.0808137399828638776230986847007773 GT 1 -87858775559633178107987294617990919499.2444078278980025739861132028995505 0.2629536534447560899051359259887079 0.0186814887401596108363730111290181 1.0188581919306549705827561323875227 GT 1 -5031172524413590754874477218203700218533991.5276960683840355123596097811811085 0.6048370332667580902633078381592527 0.0773384420003525911827859494809197 1.0804927877781080961863579618221595 GT 1 -4221729483952137483753936830421.3886759773456476372259312117831686 1.2878238413889854361251462067708184 0.0184600686188362832213475964085795 1.0186325820573677290979561664604357 GT 1 -4.6603794438298458562583280524911021 0.3191424414993241468375496591728982 0.0185786074699785392339009136129625 1.0187533575916000179484330519239562 GT 1 -5298694168714141633.9684236091045397749240436189723866 0.2891166895276282000443522168696493 0.0761692878911840734447602858830346 1.0792264361292681816637171299004510 GT 1 -775333380459502324.0877561508651609018737025584227032 0.2006083358486489203448173200976460 0.0581966805775457174657824678771844 1.0599588166275516521785289050711616 GT 1 -258920531162072859921401727862109.7846651272459361105186044882768351 2.6399985830001573032399027241416657 0.0009816808512563581771133993611956 1.0009821630154833070407002774028420 GT 1 -287051618107371668342578816976.7954555962214607184012085748474085 0.0254879684877143379824216812158306 0.0206367793573457141829633913964142 1.0208526933671257418123179939136732 GT 1 -168037846929858407905379066.8454774415776986158217917802509557 0.5271750455141293619928057553263414 0.0265797441668243693375287560153419 1.0269393724370844694122111098798647 GT 1 -6390982389.0231068731872675918392356727963140 0.1689917005092259598574003746263393 0.0585387671628583745639521664857605 1.0603221076889849544254299614281505 GT 1 -1616719901987996772043448605251837.1597238203126758770087220132931386 1.2654472641348805318675233730622647 0.0032500235612229304548075787742421 1.0032553163587195112363751422807415 GT 1 -187597441264791290161664910621194.7667934551638895566409561496730856 0.9789467319858215278735661710062901 0.0348164091205320156725899438469487 1.0354369461222852970385403487107571 GT 1 -7257235391.9001162815666290458001900839927923 1.6293535488119843027459926369827419 0.0911715533833878491576937126776549 1.0955989302104377849434927856650330 GT 1 -1.8895790549701226231125400871455802 2.0180552049747056629903934386560157 0.0670701561634805687606880026063662 1.0694252751350934950651291847381325 GT 1 -2434137451018007662083345659487845292558.9176163618155920927354151541831085 0.1422758612407031863596064096832810 0.0217706596109920842188107585287923 1.0220111370627368847905000722948795 GT 1 -873110640067506739400329898759475858969.3553714459087667012403747614216220 1.6303832244545073625774170688302052 0.0725931308025926319094409499880253 1.0753629001108585219405957508478980 GT 1 -5532827942769837.9979480994542899379583116711616914 1.0893445801531345943076631425906485 0.0266093620848773065462716014492556 1.0269697995506272720257435577007355 GT 1 -658207355424252170.9480057938095042251393980287657350 1.2990850010192354111297471547815434 0.0154716979037682801743809125050692 1.0155926336308088907643157632718034 GT 1 -293923176158730.4954271417178672260806325741059650 0.5456458731516520680449570760132609 0.0042696998292778295420752936176725 1.0042788410269867421670680912194888 GT 1 -6338131641781698864.2111741032133592058803967379208381 2.0120980220537928652944485248328707 0.0556624065346717904401601389115677 1.0572715565711749927999269434759947 GT 1 -2768910519680369123217940120112005059385942.9824486822949038626439787035366101 2.4146455578890088956631183638577876 0.0512762665175099239709232727730361 1.0526376360494948166808843919535486 GT 1 -2.0431048895305404787195917000648840 4.0444423635775412406669636535392993 0.0139629276030664978216590241598517 1.0140613263064666193734279240894554 GT 1 -951674529539114613239460.4472382430685971442455118029393113 2.5608175697331900500289634227484513 0.0222571946764730746463455727196194 1.0225086237744796587571291217057815 GT 1 -153887905706.8515493737219856035691097698132287 0.9800444205562429018777048931805202 0.0879665256643595486320975097603631 1.0920785852659973332203946753338406 GT 1 -31455620190106.0408404653611621501675337034234833 1.8418565494634295375753762177667963 0.0740323231774633298046519600346483 1.0769159511843558755247275439831237 GT 1 -3782330017767460461942859529982747156366261.3655707928912918336892281918727085 0.4866542501596756677376353245314086 0.0950426881045867916027002483750422 1.0998675055710505090714770491005055 GT 1 -152265257120275976346387143.0410532266472269122407895047267793 0.2592008317974088135458990483512501 0.0414017712262355082157403164483552 1.0422832399802363107644364848775736 GT 1 -3205245015883492862381183742108198891014.6876008639035837631540127581565118 0.2877791392477029064469910270652310 0.0559266193251455095869867860207189 1.0575513820920132818720086659900449 GT 1 -1074.3962905139884455079109263530092117 1.2923643360940021969420659989670747 0.0092247535004930157588970602102287 1.0092675650263096445429664210636933 GT 1 -3553190380241211571467587711763856569884.7216363683668952452662719833100970 0.2508785144187794582585411689199717 0.0873851808115294396012659243785173 1.0914413721936872714293543612400002 GT 1 -590788790799045514615351116.8218889693743555548890849831084975 1.2095776451240447411282361430608623 0.0615701603720962912452499455258317 1.0635471837384730020965167614032066 GT 1 -6548.0735699172227898895123708791570477 1.1692282142970322753410154679889426 0.0381721646196240370233664265333249 1.0389198096336954669045403442988413 GT 1 -2799202452533706959392148655340434648.9273369347448225964129668132999835 0.4303777358692869977160585831282982 0.0663989435923338918745678712398277 1.0687060664683722034783160251948725 GT 1 -8050378.6740729589704466513957153936752345 1.9689400106016437643583527744262108 0.0677686083337293671974669092064500 1.0701742207914817225676543482111082 GT 1 -2289167284221770061410492035.8657613694752792204477085317446064 0.4297544283249398763677421385145162 0.0460378888116046288443069541657784 1.0471313240579758500449416626092501 GT 1 -435264319934083546223933672122071285.1434789289904171420478609460285274 0.4336791772230999134688585525170178 0.0887661304172768877092220466442693 1.0929556972340776011049355166499873 GT 1 -13281810782868.0509012296912858032494587994239900 3.9202820633554889648289243597226851 0.0567226773238554389880654843298904 1.0583949540307140935720025776840559 LT 1 -804.2714791796748641661062930451027737 1.2942705537910833971080704314099837 0.0822135305660691973723734733019567 1.0857905195206484453906139238248644 GT 1 -399820847949880252582335659826411111.1242197783273723490974770543010466 0.2939427755357959336887382912164402 0.0803101036840786410583762044927963 1.0837187349814744943665027657262979 GT 1 -409568679740940410772743832.7365468347920757786320101752746280 2.3422995517600413559869559794089744 0.0366774219881165811942058627289811 1.0373669512996411779025268155696356 GT 1 -28.4663787171859487964806882568235862 0.8955347478999027157142803377488027 0.0260844326328126559866808186943093 1.0264306655784192871895836360065882 GT 1 -6295935227.1240629499557495342619939410945227 3.0137709868094730599621642978089854 0.0208143406760332097038287492351263 1.0210340126295553733407232692327626 GT 1 -314976728003620367374760082654448460214.4809376555335455560596618913021348 0.3970972102844898623122897386814863 0.0196011133395104813392393377326741 1.0197957629260402466056481898111474 GT 1 -114704690366429575960501384933822018.6153010821889142578513003539370883 0.1776992671100195242383086393366147 0.0024064236239007736003175433666351 1.0024093237147285298227417672866620 GT 1 -147286444182064512247205647264.2872371834885217775673444073937718 0.5469356539903923900385990339030948 0.0171089665926643029545074708419668 1.0172570160400995481442679775757640 GT 1 -599043.4479737298839149630701430900793498 0.7311225867250149040556169072561839 0.0978021398214923321787964278002556 1.1029214257924013862658773717029648 GT 1 -4327080576.2189162774217298303337778683200142 0.0751639281128048260781938109621405 0.0082790516972866917859874559400931 1.0083135133843257402947399343864814 GT 1 -835038843879530043570507253901381782832488.6749916589065326064652781807338473 0.9064109604821607206466131039472094 0.0603492230139356805949837135065505 1.0622469865910654590423799230174362 GT 1 -4999153169320820083283726318129213183.4191735825126837950921730264140170 0.8314626890215797719335536680881981 0.0436717970741321925900560891668988 1.0446541163477530238243640768926314 GT 1 -9748902174620482376619907143847398.6993922215543540475161542548668974 0.1001887122422052778446069948354096 0.0669208871544219099488988399874304 1.0692652876828977019626668982001894 GT 1 -59706916031572661030559524939928656736144.3307385291657908711143029897862305 1.2864766309291975444820648811758195 0.0554395807910175632819583658486216 1.0570356245693488464597938170481936 GT 1 -1974834951176716404620851301212530331501.2354678225697801020722069955958999 1.1165653718705857976387516066378634 0.0320689069593979159577902432813241 1.0325943791147345939996502853403390 GT 1 -593.3805330815141495835693436979030858 0.9496155950083125241220149967146584 0.0226518207556764910976859019519511 1.0229123145363700788118572697613422 GT 1 -3352499782143498.4683115373168478937411406294679652 2.5939165543149466203272220838503084 0.0991486145181221470566153674128706 1.1044149789498307460414520597360569 LT 1 -2824244941990612005946050879278.1742730283859705309253586747411779 1.2962702099501620995274857117911352 0.0540729364448877591664570509615030 1.0555898127386374845581606082570022 GT 1 -1818564939442449731434566.2586567566732000479114183265310589 0.0423178836858188690427750801028005 0.0583757155781118091360495809442511 1.0601489327761521203212878450667313 GT 1 -592717203585258694191744426640396.5779318469989848286099062618643733 2.1036210162469256859296696853467270 0.0335229397341749382915275011021958 1.0340977154671346409371281716029896 GT 1 -3782924430097303557331556712882.6336833216601473915736528448482831 0.9069481531744423306934972011282547 0.0003967356465330430252503052479700 1.0003968143669411411975020822292786 GT 1 -4118526102504.4245016965212444018014059947833473 2.0284252523624328245984516995133674 0.0684882236914389767511697056539540 1.0709464467138467777104866213137367 GT 1 -3897165465378633865.0550892161495533793335807079437315 1.2123281200775658644518265029563650 0.0489694211683202827294961766616087 1.0502090625565487374074432734208065 GT 1 -8084.7868044910669638873832936118690369 0.3803992748390916576141728641484754 0.0687499550649654424893083935074866 1.0712274610359828428159329303463908 GT 1 -174024270266672133854641370488418213.7538528776483656089539287025909674 3.3792739479456676324535578600724148 0.0676620549064655367429076440657101 1.0700599279890858762020351353582125 LT 1 -3415210886518372278194960.3234807896628935712754720239483025 0.0123283012102528671535605436832914 0.0401140616832716286514797284422533 1.0409408158326356257490898646407950 GT 1 -55856697450794218602690226.9157492011907632343983327541175624 0.8662190690466312011837156998753442 0.0601918465991093418447187036377663 1.0620795166744317880202909613550721 GT 1 -145.1870364408712178767146732965756791 2.1834453684620548945195592449178000 0.0301681345046916731000533551148955 1.0306325570497954976023731854748784 GT 1 -626233.6215523232497143017251346909658723 3.7873918489263760572476950899746500 0.0063626858179961548174054313413878 1.0063830139770742187425356671691857 GT 1 -124.9895658997552424371008530282809818 0.2874026216160310057085172465853660 0.0465517942871020482834747082216290 1.0476701755923086747634261298957836 GT 1 -176003820607797462901960729107534.7483517348748776311939849564472683 0.8604166861486764533311094386437371 0.0293341456213365458022213387542451 1.0297729951691884466627114505522226 GT 1 -56646122840816055171768.4983834998353924675480787900526169 0.1053246309091108536991564881395776 0.0132823988011871275545187806196647 1.0133713988279187948097273206493376 GT 1 -45819948426843504178913644872.0877685470449008502093310986901489 2.4464739220854038978237459925886261 0.0017378239491622413467767812038682 1.0017393357169127295964231974459935 GT 1 -50153645488250.1410187737769417609267763513781432 0.6822218687624700474852671533325177 0.0620009340258321872202675460808468 1.0640063257395554714435628384154633 GT 1 -381209982954457163839059985411444772870385.0921235113307045911972143576303866 3.8732066895969690955583345110478869 0.0766615995325484059963153412610224 1.0797594806130346650095613678561884 LT 1 -83118139880712078.6054682437868311382904127715484281 1.1879882766577916944040883841314078 0.0751167621008675447128043328626741 1.0780877787355354108768881276346681 GT 1 -25791751163199062534898347930124133600.3051162171497599739069195047884710 0.2669625892203934713401040457659535 0.0943668495676777711088116164407306 1.0991209661604447523075855112896329 GT 1 -1905152157776.3226924455457897768504689852005671 0.0589526210454856339577413355082857 0.0244712323967953523226762582896401 1.0247756292428736802534407134918097 GT 1 -25479927107765004198693814.9273392480874313422577285892393738 1.4047196008922569560197291600423842 0.0686130339141234459889545406840308 1.0710804424271197308072212800719083 GT 1 -515398280078112768321184509513329.3233700682961125163540498014944807 1.3208644924342400385035531495807474 0.0367058716013782558639999854552497 1.0373964845359814224660296399196914 GT 1 -104446731848234813416451642.8133205119593103019973144310260801 1.4642521364032499807439067954964905 0.0402524740888897940255767385335819 1.0410850229517938720568397139223265 GT 1 -133769609623221469425797574174866400611.3243056817287374662667134801289110 1.4192456615614243355523470820360309 0.0456076149149739627148656382459920 1.0466803869760426599836349809690505 GT 1 -157911295402364300027737638458.2941548513306483677247567513752634 1.2284453229011402661944477968454502 0.0140368075421221951410283284875112 1.0141362552407136970326565337126303 GT 1 -1223452887971779610811321892250.9276275968700067615242941848001591 0.3123605019184702091796684479657059 0.0065297281506025363624661999056658 1.0065511400857701929688197508960097 GT 1 -21.5799382405710331702964681514508148 2.8161949502114731548686423249320893 0.0948351185222162335392579584164385 1.0996381623984842799161919931272726 LT 1 -96295619523990245843795.7469997517769146174654444013394353 0.1190221067905636870284626544823089 0.0566960694444166521663359970901925 1.0583667465210773137438433520689574 GT 1 -9696038964575075701099419351256644.1613579985106382226500317711760879 0.4518482900871209902173074391487336 0.0178907957596044614127379837580499 1.0180527708631445250664884482337970 GT 1 -2875144138745185576815110097589360.6409399446300691723970515230341516 0.1173542777320570421950069298310569 0.0711929658443757377955316042972898 1.0738542752468314634072914902376817 GT 1 -26176457917073453931556905946777194412259457.6937899220224752727149607459076750 0.6840847468807697233357809962264686 0.0433937774966919256816318420126639 1.0443634429449411054774334303247987 GT 1 -4767063784592.5871178074500642485924007837118031 0.2239860180245713000532454243931831 0.0549154356990705205982330857386176 1.0564808694593008726071939552183841 GT 1 -2.6892125289652882353762467725399150 2.1868152324115919759401487592809960 0.0299691516983434917111103621185285 1.0304274056175515226919177026224972 GT 1 -4143701449217251801362017292162957220.8968039061064148015895573967132909 0.2175670037695190729511619908805491 0.0835210961803801643299265582770343 1.0872162301673876481067315271788058 GT 1 -2039800018.0176608107954653933774130381845822 0.0570397402571155941541516548482149 0.0434593381407411125835011674537731 1.0444319799136503261723107178320775 GT 1 -6533547389160.2181223411974500712609693366138736 1.9756939110412161579646101556525805 0.0735363604903174009970912183012025 1.0763804790244719031129928848685565 GT 1 -76759077608.4807604773363277484666418950681148 1.5982475699389904663108374559449887 0.0246962741759584621034000468365568 1.0250063428289140462299734364550897 GT 1 -1723208300148651731962870030745429483494.3337609323106377428682285794738495 0.5050908615127062833042605143047768 0.0719728254167125936274695198569953 1.0746942636685451971629481909734473 GT 1 -273102383771976522852565240.9260905353731376088177384453580455 1.8512339358171549690912350636431032 0.0600075466903780952949758785487164 1.0618834321443344498671512917997639 GT 1 -120643580719421928057342482.7969841218650834407507990334456270 0.3118355217407360461077440863949223 0.0818381559811003334595170564955382 1.0853816032266014567554742975825621 GT 1 -603645855135700118158554863057881745280.2208541309727236199131939331867077 1.9831437034401122228515540925911127 0.0781656668503859361563918047399414 1.0813897536206069293163949216294002 GT 1 -2201864087077867566318949664373.4235863711452790096020863683102235 0.3423238627980564791482792980502916 0.0571075593351002690771229332774223 1.0588030636548499684201862678683272 GT 1 -66030116836.4567375964325448002086972961547766 0.2793014007925165870509601637709428 0.0720197861660278673541513583692548 1.0747448677228376119970388860664405 GT 1 -3050921229070195712529279772628116444.5400780538899019494338056641139043 0.0935282628675319183869171663607507 0.0359149467483072409497820767348807 1.0365757587493819950183025200525880 GT 1 -596458690473628921396975347820847524414523.4091730440934031554997346639415136 0.8732197361517575966344323145420467 0.0334099605083846111469451589925815 1.0339808243091058844060916354104469 GT 1 -192421711310020126.0633057533082937286489520008913275 0.4622793030549458412617366653018697 0.0872517587261755555284838543329786 1.0912951852914962052654579995720523 GT 1 -63963723969896281.0974361859810455053094063398824732 0.5652960672831790373532346048744647 0.0093594622616842295355697130985482 1.0094035372563386665094504573537379 GT 1 -18928437339.6455680715109039746590245304153701 0.7591116789200635083895127469582867 0.0530248249056501491827455967907803 1.0544824004011687553804573850531731 GT 1 -209843573.1950465084723555397294179733570246 0.0520317944405049234762528482051421 0.0005899080376006833876671550755716 1.0005900821018050446913370361581192 GT 1 -498725029410183644323337286571438878451.3450134401141234230982040123268116 0.7118829780120181097785175081257239 0.0279367025316137383972787223458162 1.0283343557897193860233145941835136 GT 1 -648096479786593771240978948161.4890582458196977047218987366425102 0.5209082256299819128952226003690839 0.0033539500977130923648051570442091 1.0033595871962360111999678202239432 GT 1 -24083118273787229717721480.8150217985697526086781569213317814 0.5513350155978606825439197415509236 0.0614676973884552928598595995230794 1.0634380041429585940988189187868538 GT 1 -899864524182760750561141010819655.7929329610925609250245764782514357 0.3484460079814222651816669522444473 0.0019032078896075154003987029655795 1.0019050212909615112022329022932877 GT 1 -1925603360.3362528620250099422641141023019596 1.7059273460989661832742687230499722 0.0426747957843886976145583382943181 1.0436121289364175572814927546504110 GT 1 -2521589510521259725971888798871260427665599.3812459507524932597392797034105251 2.8669664469683346586862053841601696 0.0710795852961347009151468306444040 1.0737322115410371382763610944555487 LT 1 -19044691990881664052783600143857927019261.1553880049675847252428774457186328 1.8046305074191295131974504567191961 0.0861163536247369867888288397318295 1.0900520171903114166052250320273871 GT 1 -51.4837042784958924060650857514156907 0.8362269744029846224818515054530566 0.0926382916140899109352913320403256 1.0972141119088215195941767132955201 GT 1 -161670105713333208827828205458385937594391.5210590847252603041126764546496187 2.9785014217126612038308175813065556 0.0735395354059791654475903259664028 1.0763839059491416572776311186141301 LT 1 -1405788964283967817320231293029600174285.8431114660889994392753104665160439 0.0033403457995407183774524454608971 0.0103334569246102602945089674294795 1.0103872177682161199172141800133123 GT 1 -52554359577.8929302499111887306232132201425299 3.4159126140999116510906872570845340 0.0908215392284642069157580957412600 1.0952138775928423124287730245743075 LT 1 -279065688638089257.2716220452090448949907160825828994 0.4213699113667157596586300959613039 0.0301190303641966244290633964332046 1.0305819267300737444183374835035806 GT 1 -180741065614388759.2881348160585420535714121892501420 0.8381385283233442966591352749698749 0.0941645800842674773665060191174670 1.0988976451627063634319307422414999 GT 1 -231435477759932566725494051720355927.1706316168762631843346066512993525 2.6691008600403094130585938473164897 0.0546222930128524111840485229551118 1.0561707414096488696140227712204245 GT 1 -5238482104980526691638089102034.7294874617505583988181635746956912 4.4678774990713941010329563926399821 0.0065466134285248888658304514151123 1.0065681364890806037255032557582852 GT 1 -2.4588358763127882831946588085078370 0.0706534357509457231788478490670724 0.0887227784973208540056972876362976 1.0929081234001774828302598729521795 GT 1 -24085273146.6215921859798567098261129032781931 0.1343723453025497927070912527278538 0.0383007374239117896201025651555302 1.0390534940560421338388536091014642 GT 1 -3271021985059659944.9408472975705595813759080614759732 3.6524760944399626623985488257134728 0.0016318651580277475069022866696420 1.0016331981002934727228686260354376 GT 1 -55168500377484709400213599.8547393781181495080018617333672012 2.0702869883949627988248293655959339 0.0170948011387209924276812785225297 1.0172426041150881667164456758861061 GT 1 -13326634015490.8773943620957976325096847701886637 0.9647821877559013506869249897721600 0.0385113059145084544659912576473393 1.0392724726438694111838730419036734 GT 1 -286980114961467044279462344643746.7215351161932510939700019768113776 0.3660220848287866586808412430890915 0.0081697671560830223941036281935107 1.0082033225887939878084909996934964 GT 1 -17189074957213126979906.4030291351609313517410201767018999 0.5775356191278930018589874791955200 0.0282200828173850882105394764085402 1.0286259228108073214663869007817237 GT 1 -1086606.1739488943701586800492085989270017 4.4676551920398251667132905811561057 0.0507973299408514482628027722239327 1.0521329414671012686725463750152174 LT 1 -35.6684024455103798556514247419003380 1.7646408571098015498091306570238425 0.0025113619369401665794453795456040 1.0025145206959623748859446571195030 GT 1 -914508846274221815655992.7071411702880778227373185271628403 0.3316558458706935683663764486102141 0.0732601411970593281895020911686454 1.0760823797649409854538634251802191 GT 1 -63350683095391363796158311.8775185289416691032688254715109052 1.6665759891917067509305300292166447 0.0115681553259745497276714533603411 1.0116355869791307239515612526862445 GT 1 -114.6151065491511972017119893077864248 2.0648982284951147753950656367666664 0.0159461579590003892918128798291298 1.0160746659054915256268656080030426 GT 1 -270348827453858881545585990532064373.8045471916685101799055238372162567 0.2207065668189841717556456387176665 0.0934721548664019600907497039766514 1.0981335320680424988184598070772450 GT 1 -7222899219927545372246767934746.0454058644667396222257885574562734 0.8385337125388123260301986037504313 0.0941103350284413498500813696733719 1.0988377629473583192437964980584469 GT 1 -312935076964757234771.8657045763863628004621910889537692 0.0108613050680728239374076871440784 0.0414304122833410488446952201807647 1.0423131184883787036417162829946435 GT 1 -25111775235.2488273132726692108299877408985791 0.5934513643864763031812805248409725 0.0730608646485573488623935485809569 1.0758673732293994178340369496284536 GT 1 -7002227968235391857604439.2105215054230848640113061138606202 0.1791115700417330681668249991499048 0.0984627741130906426173003675230593 1.1036539439168669955575315670621605 GT 1 -4.8281878333609347239491134430310966 0.8473332322657802581607835732653384 0.0994317498932747008690923672052649 1.1047293258925313225939668733232932 GT 1 -50271681447221380917082846844712926342693.6538052682492921192441787689573665 0.3578236294830341769125416655871028 0.0057258183948284443496170878710079 1.0057422737365694508248117327233672 GT 1 -1362240928574792017235990960715818207046972.0602855700629328240794716462190850 2.6121595701257981397309899139156100 0.0136760253035934572659296315646709 1.0137704036055550701603268859135718 GT 1 -27780277847113952066219169.8161213377870576701426853905533632 2.1898748128986868955372729659864706 0.0353623178873134628956160316897350 1.0360027070960945252872395182579755 GT 1 -435889044801834.2719024808698778469917118261810607 2.2825018467817223581985830918524977 0.0949975193427707377127855452169981 1.1047993702870140862613511326406882 GT 2 -1076680220275774017645784.5177244347019964079803649409553051 0.3578017966583864050600754533003335 0.0132159854742296391850988861647902 1.0133040937632019613419034347598856 GT 1 -12022528734780481153.0494024266991674624663373863825209 0.0065996095175609560086023402662396 0.0685351241592351623096037397135757 1.0709967967466848000873278830614971 GT 1 -778830003812556153743898192051.3770952138707606277859598656522347 0.4789396093608669762289216293622137 0.0695935129637815740152447827700942 1.0721337054930696133965905142874385 GT 1 -1116783335956774013253510609411064074736223.0765531974134456684947042616123094 0.7679375362336099292027738604170186 0.0177126350146947080692658949589856 1.0178713810682433160687777073835452 GT 1 -416654800284646.8949528094630104804016099156294375 1.3153446312147779922739580597700389 0.0909903965303282541982900184477311 1.0953996199873398643923762325529781 GT 1 -1455157290.6436062175870446376893824956753670 0.8592272598686336755715340657786424 0.0052524236096220885957139578798918 1.0052662660787929617860887771512034 GT 1 -125018332784770149084186890081.1293776761509068667598983281444719 0.2308722311512042273820781804170436 0.0344957744844857107092195360110282 1.0351048006182102588993795035350471 GT 1 -5708075044328256671865.8016494027230650953407392878710852 0.8499140436502558441083005124509137 0.0691980519984502535117655428554286 1.0717087547311476388534458082761448 GT 1 -280941.0054912217805897661450622943336481 0.3045288204646767047967154379936195 0.0356112212486264548954851967531817 1.0362607682142222911483327922533497 GT 1 -1909574260.9049402054055887092968230999634413 0.8686249398997801016747134793423628 0.0502193069438271783508455625326761 1.0515241704519330351546902508031845 GT 1 -5313235126479406267742308659.1283300716780667759627710007565926 1.5435258709058625663553690473707561 0.0615288837543299407180699946066680 1.0635031999388549840302888455813348 GT 1 -50.9120064148753500691645512767217977 0.0292858944905894549475157457140920 0.0090580441559326055275954105465455 1.0090993176651256007198895891332483 GT 1 -2043644736954932706758644391989661.6915914119710779364292933220831644 0.3778004970428049425917209194468536 0.0112667347697544782485946678588769 1.0113306852215129216912718501867996 GT 1 -234486999925494445735155405987.1959347180036360568087115504775411 1.2994486152152679465183319917203944 0.0346271526979408042998458678965910 1.0352408820037187874038436251234903 GT 1 -8188560438645630.9022730786876838348762312589965470 1.8623307153747083780453432893143845 0.0306082241192662693104181351528406 1.0310864393279813409920511414033249 GT 1 -3137742658897318178046.3823980566339082200667489454584867 1.9279450446948073384759552675461766 0.0932069326744058063036947231350276 1.0978410055857578400869354214163671 GT 1 -2087701233511719033917934217085233224540.4893137701136359365541537378046807 0.4263761023685143401493314126234611 0.0522482695667547446736539770837483 1.0536626987543390824172644773573289 GT 1 -1638592.3132944412786865330031264896261932 0.6164523677926570440136618006509653 0.0283812603612324844716999818629121 1.0287917946391645190097595654637160 GT 1 -2471489618105310.9163925971759208761068533571214427 0.3236737191579639973768076412160640 0.0483445045332069787363291940960762 1.0495521841928238015194775132687530 GT 1 -12.3423478191572264222171952236854495 1.1987834059762397399130897174781545 0.0682761730387436825739806780066590 1.0707188312118258079493286397648017 GT 1 -145445830427219.6645375505444641799213941832276893 1.1414064062112353369800314982132021 0.0060906866425169279825357466529040 1.0061093105344395287998231363958168 GT 1 -8122491781812065845325.7349980951213933628360332663535737 0.1675319558350322418304189503405965 0.0030793141992040420310355510091246 1.0030840650425725171754547939767331 GT 1 -40179716083353719387752808111080190567091.4818254401382952504962911519624141 0.6707407742193499926533770206851739 0.0374111933584525904189821646354528 1.0381289504359336988529527385261372 GT 1 -9257761411925519236.7794068172289048959907285875727921 0.3168014785292413559633554546739711 0.0344234650986162412795273908661151 1.0350299105489956969952411616223141 GT 1 -232802425492287620136720.2394376407712467392348545070672893 3.7347129241887915359580152425355305 0.0257638153642216348798422906928630 1.0261015153762792141363143153218755 LT 1 -3.8694660170094041932932476282868937 1.1095551201440899801251674479406527 0.0662092320757840533323564784657288 1.0685028830606582099923325228273908 GT 1 -21376697065659263.5258701708429218735024088661755968 1.5473281667348407514008175999507255 0.0771508546414381171515604657840311 1.0802894973184871755610477924068696 GT 1 -4701517108618670480367195976239389.0527105221346885231807560493345956 2.1555147488926675579875556640164256 0.0295761316742490866242250559922058 1.0300223252762264598969305869438938 GT 1 -440217667.6371974608696022044194691512699509 0.2779233568366112341303512572948972 0.0135688573346389051566613388199733 1.0136617555852135565786040842120507 GT 1 -482920907322627.4401562704199229922400320462942673 0.6488672311884374520075027880189855 0.0202550458404302583375542842562670 1.0204629920462325688275092937284400 GT 1 -117032315565543596085671.0046423698387644407045822374811603 2.3412871700511640335988868811869066 0.0069499461034032261163729544023084 1.0069742094635382824307686180326514 GT 1 -15432267208633827472988896789262072943586.5240765284052517701001523153955553 0.9457899117141952976513307869494006 0.0575126239579049127244490740172753 1.0592327538694662579839983651951512 GT 1 -2107208825499421728834509346083541234864.7347094887824872612958289354431017 5.8589593317844553043722853465962710 0.0443142142203856820241729493916921 1.0453260959192648476068311119793646 LT 1 -22215624742164264954114182152.8208164787585747340152527445840735 0.0380137134680239729970861884993151 0.0436851616335174031855502589120178 1.0446680913123406635835582242630662 GT 1 -520900710189.1014326689370793350443201842559671 0.3208335346149261352854622063990092 0.0442904747922239366231545002929949 1.0453012560255740938009875864721513 GT 1 -228689.1214889651448902423673581608974264 2.6577190608573799526049960149496013 0.0145996850172970942272681471539355 1.0147073092227385565672130056601587 GT 1 -2941124831021670712825.3879137016854145732183383294620277 1.6614032986064316941154621592014037 0.0079876781778099681085281621491301 1.0080197505826827996879922804300332 GT 1 -283103693765903854695884.7314094586491575738383658060069236 2.3043475925334343896480116127898575 0.0621984603164928664069424305759304 1.0642169305243017912271612764495398 GT 1 -81859803676755505159476245003995661.2935913497834462134454508154721060 0.4158398518586608281784447281208432 0.0535458954853278013500143453484098 1.0550327991918113347762158347546707 GT 1 -11459830094982131054070487558102.1265866913181373445098498974114469 1.8290645678896805064164547364217247 0.0433929007628172407887883028372935 1.0443625264408955583026224782957634 GT 1 -32.3451289154085787193063699099013143 0.2794337194911494933255910949758284 0.0166658966768100004293532187125528 1.0168063352761556073387141666320668 GT 1 -983471.8548397373519122946821443883818120 2.1690627936772385324613881489571667 0.0075098507334773439452717251005735 1.0075381916423157861607278849364441 GT 1 -1.2701513673374956915206242438984136 0.7440994675177513702038833871944511 0.0018917428211887723912442026997602 1.0018935344265004164007880423085561 GT 1 -158524020157032593196018.8477226353879647999243057744717828 1.0685188964253688346854720002047450 0.0940592369033358103702128366658648 1.0987813579722265483506622247467569 GT 1 -114052521910535013828494127201274.2045804968426613069793267771214851 1.2782282388444311795342680686150675 0.0792296432110993900484818758840464 1.0825446149804805795801938540625866 GT 1 -2010455926138186093473850060.2299409812674085789582294276142700 0.6584171803553602904025428938818220 0.0506930259845225166504400938239249 1.0520230616392484951756572838986128 GT 1 -227659933025624345.3588314405621231941653437990485376 0.3400385046122849389306286938341840 0.0698293444793686609852535774829698 1.0723872091091851587624679263205081 GT 1 -21436182.8346331881483498511571414523214126 1.1645472994066303303472188657564306 0.0385859338916863072452614733081260 1.0393500927698167055001008609467738 GT 1 -23560203618998070987327073940783930449540776.4207799839257881001630822228730728 1.4916554077039999264044215812332741 0.0286292415751741098819559024906822 1.0290470520304527670702433066782346 GT 1 -15003440412526460.2982920940668166547349647038371515 3.8850516412736885163538984564654684 0.0382622233529336150537459807982169 1.0390134469214617608816162030591661 LT 1 -4801136161488058880470867002959.1894952311279919851522080541270131 0.1557836193230176498087224708132739 0.0592457714296238162324841323742125 1.0610733546259194326523160471714722 GT 1 -431516763522.6188520968203074866492818845016320 2.9989800898633747640704557030981868 0.0562965669068475654056171476642129 1.0579433220541314632700951389740207 LT 1 -287779742149433334561816608579188142.6171740218988428451201462061520994 0.5137359125308952178786560895308127 0.0738588986677061473183223068685998 1.0767286786954939582539085186062172 GT 1 -3039954488572231195750805592368649.8218364729554448686858302799388216 0.7613762783750345194433127733866106 0.0299941623428023883167067295976504 1.0304531892995213518313310365657356 GT 1 -894707629293618096531828020466316988407.3810027636604737720983034525733246 1.5687594618481640993751627779348869 0.0462032864097997092237091421188059 1.0473047187203002926691104550641530 GT 1 -8295049919024812303014505186447739002203744.8276139056431608380602748203137150 2.2812119908904743537035242229704964 0.0319022712345704828807542372136464 1.0324222373332052503516196679359218 GT 1 -2353309003677875724867092579735931933296093.1034707584799556845938134789991974 0.7313299824067453482517632201153485 0.0364830961553019710156587156616659 1.0371652470733127771596117228678931 GT 1 -9198853202691492149290940552095928390.2333569892286701214664430074258830 0.1441273904809938902276943486539310 0.0541526461248905053632568504499709 1.0556740824901633501898619074470851 GT 1 -11247387224019265647111182868278860.5468575413963499319817447114884022 0.4530164757820363174804241115081776 0.0414743541222931409176630863702067 1.0423589605917753103269841605790396 GT 1 -447471500186823897351921.7579756867962970685335143278682867 1.6986405056192504265940918436346067 0.0533343685600290344890863449721426 1.0548093300449193896507384858405564 GT 1 -1.4664134574028825047474353173706025 1.8095464973430724008372102313711461 0.0475399300691508120993346399573680 1.0487070941924464350175523369601133 GT 1 -5895510895426512610472634597066954112670881.9071729246128614100612793414622557 0.2880796460067571126475525177965907 0.0914030382102912032001087445140562 1.0958536694994170616114825903818748 GT 1 -5645528383706613079605798201617828915286426.9344231311849291841953533796122051 2.4700444831874153625270267166435388 0.0361941323375042159712591974238297 1.0368653867445345390113924803933342 GT 1 -5921561500367367639613386199620911.6925917329475237534856815488015665 2.7397842201854057139045915711640703 0.0084431670187404425241959249506553 1.0084790124620415154805583990066730 GT 1 -755025832838553713829646908891487.4028849864798283401426986488686623 1.2300388762266821750624035820929811 0.0918470477665048987947604958156567 1.0963424649705237054173771387485462 GT 1 -422137110360820022920110863207493180.5411731491377878022079789822674249 0.2625327478702570423285868335849724 0.0558606143871236755671227610090873 1.0574814694855240396797162173109321 GT 1 -132404408406258602373451014477870959503.5320037168526194649287588902841541 0.1693267908653564841469158329449319 0.0515629017164864887723469031745302 1.0529398088504067588644177447952865 GT 1 -4369087149061506536047707330468343058169654.3223473746118774633592364379802524 0.1814850439580229834759900298593873 0.0003883275900347532329086260011005 1.0003884030087187468299632076565638 GT 1 -162986822.5831817438340721350457673151314530 1.4455125145875101540150749931766309 0.0878327293846240167752960867385788 1.0919318949630295596881538577889542 GT 1 -7142332020654758127431.6165843858727964779934674990269373 0.3885520033699680908716228353218350 0.0705975904634549020756058656575577 1.0732134697624817696748056978710580 GT 1 -2781632451360389726122572343542213038455391.5920758084468470808209873948975486 0.1947472595738304560339592000610331 0.0888940123163312689472609390239987 1.0930960463558447426145747161372183 GT 1 -44232497189.3943712994031777794518561540481938 1.0592386767437176796562869917226711 0.0780624159986140728210876443974063 1.0812777540279031446447610884298676 GT 1 -3390149411169820501136990402162378408.5384515375990496340063655924830056 0.2070082522164131509620790790101130 0.0876539152517731564557424998032804 1.0917358820011099203045300240955331 GT 1 -2086367871087070757382468635598829944.8862289777619077110421106164621030 4.6692281357633139069378394290428473 0.0470103710959697175512041750512029 1.0481512579642437043930124201954227 LT 1 -50558988502541522833931.7685635077485968911391490660707471 0.3281344292611482758457692099227474 0.0909053773917800538171383542322635 1.0953060949436259740675243673881714 GT 1 -13375604038104.0404154471885391554788781396357654 0.4950997139616056568368062943552946 0.0105897227626101118843192038571971 1.0106461928992488029383056451644248 GT 1 -77213905944630087241716985214723911.0133065213480750359090940396414935 0.7744577084499200536972069674127267 0.0879660113337270951185164176197674 1.0920780213278285035648824553268484 GT 1 -1092981243812172153.6095855143869808224092717512773561 0.8349261625418948811699600671543126 0.0013833404618215715308112265452063 1.0013842981605557248585439101814356 GT 1 -61111.2484321813145898127127270771235727 1.3683225161640723936771184092780934 0.0785148511998012040393067782323124 1.0817686183339801016434766622636488 GT 1 -11220517935.6188832254561911956983562493335285 0.9221935260284285446877199670920571 0.0922258375963150303326586225269701 1.0967596511364780191232897977846131 GT 1 -1428283835774055679158756543.4174011709743214665189208100397327 0.0157520829964284068969037742029156 0.0114355307190604826212242912929881 1.0115014191952285875206051994075808 GT 1 -765253141698826062083733.7798967197774865081987454118504548 2.0396974570072288030360985834508058 0.0615827730968803125372845955538368 1.0635606240714752250838509616428183 GT 1 -989071141.0392386304987206044131773353504968 1.5096091391142758483724548116355201 0.0150257682993165305951760203313061 1.0151397988622115326419635610339162 GT 1 -7408508157364012626.1336057534997307872393897512936112 2.3471439497446641570509708707123988 0.0177674252832895395630780584722117 1.0179271608722572660491251742257875 GT 1 -4.9401335769654392831473184483579015 0.1519072459524156775007782987034430 0.0558696991827799676910354037123088 1.0574910918352568658747644626396287 GT 1 -36106012580889875491426664043535.5711050588660515016594610130032905 0.5085674143816972377690675878908390 0.0878650271170237819267177530471613 1.0919673032760086680326877706047368 GT 1 -131292435097735.5177420564337771957929639080384987 0.7376277058831253216929754654049143 0.0552724228387562869056220062049554 1.0568586711847737001124275248542531 GT 1 -9130171673833676910756195141.3432497679742376573332623716089866 0.3768147621942631506133725657255850 0.0690718243357713884599938621851097 1.0715731521953475047413906419944734 GT 1 -47439589570787647016553435839746366371316.8432734676184745166447303120013720 0.0240369231648770368864863998724131 0.0565412151991323042647713613678722 1.0582025984335921319148578596851256 GT 1 -244277981688805114594126759938408889184.9128736474028915418072935588463376 0.3863634455208555556625261980401129 0.0894060425885199946617751196872249 1.0936581919353636268686900959417907 GT 1 -374646297220164.6108764077094927465217885655593758 1.1255603785221121863492382329384132 0.0719811485292050750316395516941159 1.0747032323173563820551201876842503 GT 1 -6526955028615973360033341948699229934.3036866254009990597496545400111762 0.1510450023438140048484572047522020 0.0558606108447415743202105672132634 1.0574814657335546286144588000267057 GT 1 -355399943716310247936959647468478.2350931641371035868321047849089262 0.6383317527233145478675977044424341 0.0654641695810141294988565657390853 1.0677053110141793268861209526261721 GT 1 -6517648197963395716017532342640.4982381470629319066640649683253342 0.1477140858723243799066744004132659 0.0009084026790992427375933171460279 1.0009088155268532131023863244290647 GT 1 -74877029829079690757468.8130516029751789216375020020091553 0.8013775938892231584248410131244200 0.0290481112351603639936190847880553 1.0294783600493194805506775067429934 GT 1 -3037413100402983.7710924225840073661817927261506110 0.2274790498545082177524077596761599 0.0053878117202669255456986870390973 1.0054023783228005817160361577921570 GT 1 -364526634074108982.2635361350000981481914385995896429 0.7522974694863215165908920221975652 0.0896927428897947703708561269638992 1.0939730912844963304724704994002220 GT 1 -1342727095931842403408378.7998385684479906530405376298219667 0.3682385155472916493794476412680227 0.0510557628729942478473949427951880 1.0524052417118939646042938840913558 GT 1 -91424548754740847942923131.8200292083083450818435644814806189 0.3828205014129656328479476915590712 0.0223271611640014254127266209832888 1.0225801855294110839624124795034197 GT 1 -901527495338115607900289271299872092.7895971990839666609016856006366504 0.8853578268081832166136469251783387 0.0346359343124316074118477738274383 1.0352499786490792015027518417010041 GT 1 -7918116789734468435564236515256677266793.8082182227854727773920094051067852 0.0672940120709120997747126971020157 0.0746875242678398395696021203675591 1.0776237869128691615012865598968083 GT 1 -776335027509531544823.3187509793945597720813842751265974 0.7133987397116321330231480765055439 0.0450582499525906402692767301968358 1.0461049350764146598702729435491502 GT 1 -295777000818376075391866682755641459968072.1980035616580700135746634363195302 0.1104655069218735977098826929202114 0.0844803678041465335033017264380976 1.0882634708639039506050723165001573 GT 1 -4238721906805525312.5121477672639189049341146873308411 0.2807359492398555858863226884444265 0.0447162174836856783597703056806543 1.0457468281757063219828673257192805 GT 1 -241046411058622808254820350899509.0803933617052138256946130518308047 0.7088598676875391156435191508035952 0.0923453879826065575758561262776395 1.0968913559856561009055889907580894 GT 1 -14816720036096516191467007257544383629944.0382742964586413738684458789906709 0.2950264211287505326674543590621552 0.0911675764568854703648349486720216 1.0955945543375038688747969488136472 GT 1 -3574863.6927114609050035334616423054274784 2.0584830993404564831665838387451221 0.0700311138276148737696645670711875 1.0726041491231089457223133923046158 GT 1 -648235257945218635948900226207368814165182.1876483698847240146441903789832448 0.4975919370907810185195612617194621 0.0475798707096687090027549517853933 1.0487490292606361090585182631218756 GT 1 -679399003271717881.3593010976820794662418606953745185 1.4455733925267905902073090510909775 0.0119452717821447679690165205479463 1.0120171898353492458040199645501369 GT 1 -3391970686812639064801560472580.8374202822721328904923085850964591 2.5482107859341338633082941764848054 0.0637301485600262857424400691093074 1.0658515412353323764434790230051997 GT 1 -2912393247647035786298363919.7704715438723493809397887825929421 1.4248944989661783604035996583563252 0.0960918476482745058383422069695702 1.1010275251325651109191246944302120 GT 1 -423959320312270897118784429634695473168.2276203449193255343634600653910239 1.5164494536236682851278636473349839 0.0837329570504342784940489434754104 1.0874474251907582052809044559965648 GT 1 -79720646.9104620727599915717223575760229660 0.5487597099018707571337884240582947 0.0888896342015063621919491950680871 1.0930912410923901052703862257486027 GT 1 -27112310.0151888218919975900808345965235481 1.4460493364976903543848729020714251 0.0483933399839881952937845943503500 1.0496035018220334735846239770209842 GT 1 -362949581278943112430.6893565580816511546875352650036177 2.1086750750120848712731788119284337 0.0200644415125533060767039779391764 1.0202684661250449973991932501155969 GT 1 -4412391425006079094885853626658512.3204629671148774393640660636491484 2.1799792707527415125899295882540405 0.0494417547560196556115859067361619 1.0507058403998270629850283333921001 GT 1 -22374072266701614448913720947609816131.1723269547384015333196200761022201 0.1896215244806302862923825234727650 0.0097928944978245058153338769467609 1.0098411602552974125504239019023474 GT 1 -4236719426650672444577333167033795004.8544757046993148532441210478273140 0.7370893430181375482929068768861739 0.0096300917495203338507318291934653 1.0096767609438438485158819255627468 GT 1 -155959801064408406949565836.5334295266736843042225124005566374 0.3688167443035082083973228619926638 0.0959473290751224860413966741972653 1.1008676559898279268976639888440405 GT 1 -399.2216627908719635899007568456414214 0.8351294733234718760687845869988849 0.0076624734842949868168394440725916 1.0076919810649247819729624945008765 GT 1 -30519080719281385205461236721829014943624.0954727585704663088971996739573009 1.3712645957175423204463194363625798 0.0799131273391607235873745955264649 1.0832871865917211212907069268801800 GT 1 -6228312256.0870727604657183754800765073730111 0.9336460969024199331958106456265437 0.0992993817355137567606939902512416 1.1045823537660226254950045940886422 GT 1 -11550651834288438822278914.7395948788061933029297610039500974 0.3114916486549405035810339469212182 0.0329285753468162766482221774179702 1.0334829241539450274133228597272019 GT 1 -4927760762593129838894206.9319311421367072476791982090365234 0.9020310006436944461372394807450115 0.0551857347882788993354653116768047 1.0567669155553462610125499463811513 GT 1 -10800188973640907684893893436.0944021789729170751609307276654142 2.4183115151521070895602951077470658 0.0506601431657941177934110035865076 1.0519884234767451813161591652178052 GT 1 -154264476485642.5114121242397430353958982864528884 1.0710324358210223071938257641381544 0.0851447036768634657094842202158506 1.0889893723079607355060184531118290 GT 1 -7338579584006370951764741942.7359095745801493842245177036109246 1.1287076764232443359887489382200814 0.0862942470877792936863396312472862 1.0902466927160870499611559400894247 GT 1 -5965911995699591103065222263228514756933287.9903900577431455468965818409801493 1.2059591900024393746118601876325941 0.0344901731236150793860300033906916 1.0350989991473574613582515261511418 GT 1 -947009203031681701798484.7989260353168080824884665127492295 0.8549554910374790885773824338571189 0.0426511491953873467137512524680957 1.0435874285557542768356190680698223 GT 1 -578933895102659292.6750635926167145928858589908966578 2.2386299483741870778764941670419967 0.0920387182546045917846152199955013 1.0965535425395722141646069447331413 GT 1 -15242946.4349334573352016912616190806099421 0.0400236398554474860879237927680073 0.0210169339420101409160121489526137 1.0212409337840746527534167370191719 GT 1 -209739418157271798943650381029440.0562766511395002396205934332802191 0.9145221451502809757449994881342680 0.0289197381350115744379324025601340 1.0293461551316056998668487251681625 GT 1 -4746800354676.1661504001057577227038997968941766 4.1602389698702737980209760668254680 0.0414848639512739314025280427804595 1.0423699252296484122846706994788912 LT 1 -808821.8934394155700464753130633363751843 1.9037094435981088607494670067997278 0.0407637786578674346199101467373238 1.0416179139487178617470304567442307 GT 1 -420845057389530128.3369306862199512925237342092039972 2.6466990991354498286973842595622677 0.0721532317560095854035136275111010 1.0776928374718332988146487121494787 LT 2 -9730846937327.4276375807486331515035772580945292 1.3178539836484087333778890851875880 0.0342951689749661617526509806808268 1.0348970494070592277200228850441389 GT 1 -5858103.8121519858273931591819388861840816 0.2263608837430120912194989587336389 0.0020508760324125179748214974571973 1.0020529819584841854901945737609437 GT 1 -20926229491807907773077130945296020427237.4660342205432907672357502929999981 0.7134423837189013045268903535917408 0.0961309334690856623728529028147545 1.1010707669882639069351417740938865 GT 1 -591364930168894146962306455512150171.9219666862936330292069695588061231 0.1605647731763223484597746599048905 0.0012845864565434091625655308393520 1.0012854122449991106144984226281770 GT 1 -112644746353966765834.2124204833013180736438445584210929 2.1490950048779759298254971530326107 0.0821629375845211992663575033276923 1.0857353960373382961294925343919149 GT 1 -11368803124988725167105976181689299085.6569633232073254922036547776392665 0.0241924222907077527426992443254848 0.0402968589323059883892014093456628 1.0411312703955939949427026671215958 GT 1 -155043251212855052235760279564823429322631.6078250234473491279476908666079494 1.4279457616719961438136921299432376 0.0294775879900020270374082214610855 1.0299207833785138813062734362028819 GT 1 -236125677889561157015007114650776481976.9522038865130025666470761510779822 2.9342728727418037389002844299575237 0.0032318239582977889306252874289104 1.0032370575804856618144789485130790 GT 1 -8764791174073.5028574497907068278163954882725553 0.8304327212098640567761489321941062 0.0593142831074145922116190548735527 1.0611461836077705647393524088345895 GT 1 -180098041243427.9322855911799361153677598269484624 0.5773796579663449280584261448879290 0.0520564390672102734528707661345389 1.0534603133804101137547639581898036 GT 1 -487890330857656365614091445409912289.8420732149929766061327313054269141 0.5843590440963083114074237408433134 0.0750478503803669204824765195101253 1.0780132729486989557136899801633792 GT 1 -15550045717.2907918673722944835581330274422179 0.0318896880355990538797642337306677 0.0627634704931901714958493015972674 1.0648195958280974854435068484404142 GT 1 -14632382036222644480241878742372.0137840461117332500796883022531641 0.0156821511463707847110284085375871 0.0135630061992273061329858863263798 1.0136558239820785422688163010767674 GT 1 -837498832161876388976826.4604630731952168660733315231995426 1.7129221018490839422687019800908106 0.0257448919647907463519712211586996 1.0260820917334816696612502018269648 GT 1 -170081811845091091280.5562857859330116202801941330013176 0.4158528069717493644773820272503073 0.0152884911867505192951670867675760 1.0154065651626300742011159901996014 GT 1 -229536427.1317035409455578054252770490232246 1.8036378904815093579449423779497915 0.0865469259133091541712959287075149 1.0905232738467549838589283989804145 GT 1 -248942455194739114755808334917290.4287064259070045882727257721209164 0.1407545122133066114479188503855854 0.0601139624285215408506681288578979 1.0619966476939280154029917119255059 GT 1 -2022623689847126093569.5099008249291954843712952879332080 0.2057006056396299262174768451221818 0.0190215608095224437524559268493524 1.0192047980574079687026371388422598 GT 1 -3546250424967.4857290759173826627640747659371110 1.1605900048981262082210586449645794 0.0249961411253016645618841813661134 1.0253138501719186041573698170415054 GT 1 -9394134446357125437852284813804808552.1436965904575378942830312317892059 0.0098928788714227087983491092609900 0.0801108834977310019643105043552916 1.0835021417438496889056528226910980 GT 1 -78738275135040495568234.2793962557896747233759233511615458 0.6174652241348644528368145001794206 0.0874899117683273264232911073117132 1.0915561379902495232418767468445306 GT 1 -2279848404738073994873941677650745639.3986107695744028940395397523587844 0.2142251823380345348739165374201803 0.0659371817738577459021073087074484 1.0682115858135214925610218758456061 GT 1 -75199862728.8540457365169699043305440333392141 0.0916790730780361001417491785863531 0.0367823938485123531363752586301777 1.0374759257828754736667688227948329 GT 1 -288242755989743478.3733989376108871654187099648943511 0.9237934748393932599737875643519960 0.0140000839330255211078016122934846 1.0140990095042775920983055852626362 GT 1 -31437180378636403807994.6881820874565008562803013836600436 0.5678056809424213412182236637781773 0.0767534379179594703984404127490106 1.0798589489693240911972846543168712 GT 1 -50110439631852451794790.4286076675725031055031394064108744 2.5447342741724760540459605519542672 0.0969604718906340123822785679214156 1.1019889523157215059780236279598955 LT 1 -72.6229169977727347437382244253895023 0.0762145290902043189820905938552516 0.0473616221452190927961006808562791 1.0485199039454965879194264086610517 GT 1 -6892333498860312.9811029791969545036942772209013638 0.2766540078737570655501680952174467 0.0458532736316655704515282068552483 1.0469378181353770938241444025955388 GT 1 -84030907396897098427858731205449.5041587554539497791280951392363006 6.7229467781834661395857641401190032 0.0471910091669704689317001066987547 1.0483408247628245723956058354748273 LT 1 -1607472523122777168773276262234310737.5111108749835891222199185995186476 0.3229064073073934128474921352379975 0.0761568796424632162066463673006590 1.0792130049180846788690201583346868 GT 1 -850158404256371264439641716187529.9733578386411415335039589687132792 1.5289294230035907304193200612039666 0.0534326011991570495381036577367641 1.0549131024148781720879767150376336 GT 1 -1854526474720066667.7929372531296628356270695803544182 0.7363438547630344018123703166886075 0.0107643798735103094355885638474921 1.0108227349592369192932491702092909 GT 1 -90762440880.3077679849040966274717329451017306 0.2489655036875939408139047111099188 0.0759943497141719947192093790416589 1.0790370923311972131981294615135107 GT 1 -62912104358536613365991625695357029623809.6267319146454017453894076249909542 0.9694093599484684353445368938681355 0.0896359551466799619276100661787027 1.0939107101802607879723758155551457 GT 1 -50795215520629171104162576935388.8624909183311351351257650315694639 0.4411193223084669812408728777040869 0.0348414272531814312779748257929972 1.0354628670529081023137285565136838 GT 1 -219836935.1355507273216231616829663357357526 0.8112440275753588731600302777238226 0.0959500453890145002349042001416660 1.1008706605912854478274853328101552 GT 1 -3473885885968553536509851.6271665850209947497498860826593624 0.4675307948899479942702504698006038 0.0364620434456905672813881579737748 1.0371433974518568709061813392731998 GT 1 -2901739160435.9576947297603992676170399108239705 0.2466346532077184572070004464152333 0.0380852545807701440463563110530556 1.0388294544689447891711463224198326 GT 1 -63108702104123612502.2861570453720102491718964539700362 0.2709458573353938908153329956950966 0.0450224204621151327550209174108662 1.0460674157006748579451889673156445 GT 1 -548.4108328361950821875151853816415650 0.9675014093786594767964502572733250 0.0187001198801977540058508589163961 1.0188771779343738146528110483173355 GT 1 -2005612919.4024599193801788388376469315322019 2.8661981358542985774043320087806106 0.0158853516696557387089119111958358 1.0160128761861037059940811564598991 GT 1 -1151024475322077969.1264690492877604028876105934437770 0.1469283229508740341207367328556973 0.0890937430660168625257792847725292 1.0933152882968093551663728276783417 GT 1 -50574638338037588858071006605.4483507123799017316193670301855304 3.0326354175945789499482818733058946 0.0215421659647164554212519811568547 1.0217775855269565354731310060195984 GT 1 -2235981377962609558390398748551535531287.3719297144480939267607808058926494 0.3862381632931445895210419417315069 0.0214510865092079612087797524299736 1.0216845051574694193570737226248656 GT 1 -138882529756.2517512268981656153698653610965063 2.6532023176926318430360799928079860 0.0907490594879695186931277115777052 1.0951341607333569675413022845734890 LT 1 -800208176736948045838892503.4177359870624243520640954858780486 0.2307386557984271354349127570820882 0.0446646839127630434240913175865854 1.0456928838066033468502365196461494 GT 1 -748404710218220682579428744169132237245.7824263257082300251624178302024540 5.8245380852649085839052781396005790 0.0555628127741951644614195700569748 1.0571660979833252696025033700314865 LT 1 -112875832656321294103466353875217.0481787304259014550877678858597851 0.8489082692153320407007143897056449 0.0463951914562482967978045899227997 1.0475059401672470371190160545768325 GT 1 -2502778869575214795954866164758594119.8597327028486516417180185801029384 0.6396559055711067407900007094143576 0.0484915507018598372345186109111732 1.0497067123083337131808933583956073 GT 1 -74056550704929503.9167798108959752326086804709594428 0.6605426924302122105771843458898722 0.0097759938470354730177991248404350 1.0098240926070566026052608466589554 GT 1 -1.5872486745272531911349996950994364 2.2517812293829295335688583834146628 0.0458979055553069328096627414370437 1.0469845960221628275905686956435436 GT 1 -23766413698961402095693401279348462102.2796850159511003786708714354040188 0.7642483766670795384463849672336745 0.0480634149991448841410971283980435 1.0492568588035355412216007024011757 GT 1 -89551873755.3485272145684288360082226039066332 0.7999272658108139903862218193425656 0.0061739437805646126593878447121069 1.0061930813817773151044386991499428 GT 1 -214978.2024144803211524867649641252661839 0.6739315871384571756218887353812187 0.0274787449846861154556575745729010 1.0278633476714977947072355208315714 GT 1 -1580879508955643.2258161682710116430944153852465220 0.3853844712638181111233806892065798 0.0625821654463755653563219198472152 1.0646261681212564344773958830943852 GT 1 -30217966.3235097749135510385179514513360499 0.0333673884534535724582529945503083 0.0521304393803238624812727715541041 1.0535383804771190694463908559478371 GT 1 -21910750203193095088643.1902103866401979140421671934073601 0.1621338193475863969332180478418880 0.0881089324033596435449522203973092 1.0922347394664760439439789110231388 GT 1 -11273487462.4024139067822241984665666810096221 0.8798256402114069444358906964945388 0.0121862945391267288193601856499788 1.0122611562392546746012018062646287 GT 1 -689944511503.0450241041664196033433563953171233 0.0756164041821439275733475456692408 0.0364726265592342089880974249226529 1.0371543811101470391476163318014178 GT 1 -9760526171942079444200020908648666.5205680195361104706560240824192736 1.4060483251681229852230976214622182 0.0981529571420174844177925423505182 1.1033103488445457728940037815728185 GT 1 -13736381556032852055111370.9813328160779334138226273866785263 0.9264295657015680240666970345224096 0.0710853125112724144409961778105009 1.0737383770130222164819068979571149 GT 1 -636360793738836328285816212111684.6888577923317868524101786466772238 0.1142739757022849246079076037947959 0.0592608385934859364783007220994936 1.0610893708010946506676204049940884 GT 1 -94409902838.1416112816050506699486465164041921 0.5963766942092191261423363123683627 0.0905146632879415505716146107118516 1.0948764035155997305890194148887117 GT 1 -1587816455221424629362.5499072683315696013413120176710922 1.0346107932906521225221080326952009 0.0131091924626149486952448176066795 1.0131958763298891352779826607180495 GT 1 -2108977594682978815531916964483.8275793845814204954838415737603514 0.0239477511079546385149734607337815 0.0342868483935864245239931295172911 1.0348884333731871060754365207102132 GT 1 -1255244905999.4273604101301515285619876125521042 0.8839139018143953916224712575680556 0.0731451863257073146254570886135005 1.0759583452354871864959542719194895 GT 1 -7633461803662549342390552878193757.3468257469702089234690629624159452 1.1034431588232049545268313728720648 0.0180126672815441602906330300292467 1.0181768701829109652778607055566167 GT 1 -541343781890131528992.1630445260384244253199304590823285 2.5021305881658588834660657013624933 0.0107858369664651730301461349694346 1.0108444257730633214213765052653003 GT 1 -18.9932227851356264569804583729763338 1.5442067555963498866552937448005585 0.0145538130375438430004694556145949 1.0146607586875078720244614809591437 GT 1 -10084113462841762661744771924932775.6873740185235619627036792137275841 0.4285504601433227381592282001785838 0.0518496262688284445006568355454591 1.0532421672269721745719873337574022 GT 1 -13791098475171.9603705251516795237315976969525935 0.2148148703522160024548586081311007 0.0768155160330241119514890531238164 1.0799261901644078349080623392520316 GT 1 -409323579999877193968441080.2285101684710355440155027290104948 0.7596106333061864658983770441388530 0.0457791998140522028837811808032198 1.0468601875777199798678387517470581 GT 1 -177311131256996024765.9064264740123598250108011816703012 0.2520414866363191288542081715662426 0.0634995618500029400654767448623904 1.0656052892390567805517557460276957 GT 1 -20528295642475188.3171283263212010763415242850909847 1.7418962622824137273682349337969006 0.0018474356216325762122699555928372 1.0018491442355143407224692572021101 GT 1 -765296679614928201020843239743509148.3874771606083632541003823611853136 0.6044839845048506908960531560331255 0.0805068121748102638549808939173489 1.0839326435294356652043116409395333 GT 1 -187001384545722150803950120127850443901267.6825499325608175763037867714129470 1.1466975401575020362487251855655695 0.0406279085943248749495345662077318 1.0414762799707277427114954576557779 GT 1 -411475559297682303156862540329860.1062070532288175524690119386419974 0.4871972793434265417716598236436799 0.0403010826604121514555160764429695 1.0411356714829927181990818247944217 GT 1 -1026521372242883619.0737796510096227334777245086438232 0.0088035513517538093782958989226174 0.0807210667196374938348285173078811 1.0841656844194270320503295921285787 GT 1 -1553109112021868807605974669603271.6661802540833238791487709598428013 0.2947646377026630827008457515754457 0.0766566099562474122702058626032028 1.0797540767840407974326346258747531 GT 1 -1190456503325657628756546.4850593872512065948374447816147034 0.4124843200923908467709881111114652 0.0144810641590631318971690784264906 1.0145869381234886832799020388811987 GT 1 -897246328285401.2456081241120818158292278552484544 0.1975281916747141625361899379991424 0.0395220819978752474666037695895469 1.0403242871449082072876465305424485 GT 1 -14489431545431353697.4383002762710935447739471699005004 0.3508957991507884128587885336003716 0.0353435811300245038636917107410140 1.0359832836631612003322573155235399 GT 1 -26969242610627184868.9879593502736397351948867367072491 0.3210995242279971586029621738159400 0.0551310369651891026403601543992360 1.0567090245582865816048206729239788 GT 1 -1482955648073375248892189667623512.9961865403405759725421196670277164 1.1252881112861826762704909688451578 0.0828155877390671572136323252843305 1.0864467230611055506312294904297491 GT 1 -20118146886968255917639098.9212038690406707415451988742008332 0.9294213568400402571558418954592465 0.0016646407670792855187754475754890 1.0016660278210324222831556586079587 GT 1 -46533357229593.9730987062176770396942895497071987 2.2070444129764482346917989803079424 0.0402001578441782581000926375494347 1.0410305140132859629993583994688527 GT 1 -1154822320145487239970113.0457722987300946023023726623327839 0.6458292980238922736951885283246640 0.0732113243617214508380689816585267 1.0760297052747002604881247717231714 GT 1 -210835897403519659898.4330571505345076923911884923196632 0.9171497278216579967524334548589471 0.0283509912267527556467217431679303 1.0287606418198920209763252206368697 GT 1 -63213162160475927644065235.3551593031792991223931158796928898 0.9134955850391696973561554966325625 0.0279976880683558941070088500214455 1.0283970959940286240926958954452348 GT 1 -10295537297629725.6148199172952274941173030576469037 0.0391747121799844711276745970943047 0.0975249407374013208101378181152330 1.1026142243230549509064798188099523 GT 1 -1530304453634.9287925135009048286339993742749372 0.2668229126958884122720815262418705 0.0987546102872210781980808621425786 1.1039777058326458313627853089510273 GT 1 -8433.7830383563590789165210263598497358 0.1084560574845536270791127585781434 0.0362891385242419313321865532629569 1.0369639655899250304708167057104058 GT 1 -509656.1198948658412835153781616804649207 0.6706960490070120837121284031663764 0.0590097064239396579832496230731480 1.0608224544594576614652422392594242 GT 1 -179246.3961953937280615264101256192084120 0.7529110065932310157750290370847748 0.0428143633766092589657424542961344 1.0437579286775218041869707058076423 GT 1 -64029.0001328066649555797498097310917296 2.1189194488005771636589536174701588 0.0195921915798464477828754453358386 1.0197866628350557773838818967907026 GT 1 -59179394.0801428100181460244629149996180535 0.8898313978509181488351684640756668 0.0486128341937010770710788455444634 1.0498341848728220325326591966157299 GT 1 -4407943979735647958608599598500919981.4410191014270476547786857942320109 0.3005898319642707592825610647300616 0.0822949633802756057304234723301810 1.0858792508648047787706930367773398 GT 1 -1940565319660842485081032255334.2388115062553323559300108646473594 0.3717762495447220115088163565940561 0.0122797782393585195061461003294893 1.0123557976918902650759292735511610 GT 1 -112782933969921.2201548807427778357412180404298198 1.1242292466358343310460157209513842 0.0728449297080028225060872871901633 1.0756344455379438584906175658890476 GT 1 -2492607585.5413406350884067809858238693345453 0.6638907479827152974541641596984659 0.0768879943958211355411157052926861 1.0800047023245550808730014062306041 GT 1 -2165626009094320.1189998833976189631013738489680246 0.3321085384448557280677718869951316 0.0552625947438525333588002162030049 1.0568482681394722009889820205804182 GT 1 -1795747120483503730429948433684303.8064571960364248349576649655341666 0.1187604610336494992091675873956807 0.0239751009579789555178797296001024 1.0242671815809064385463735846687954 GT 1 -4724326606217059472888.4497366291093020347122345819642913 0.6958045935779528789119885079510655 0.0066292942503424720440005100957116 1.0066513656206226099071735470699187 GT 1 -63880738871680.0976800159006768254339224670963169 0.4468664849041922453833457433903011 0.0601334782994858677930802987734146 1.0620174119917274943116092436070882 GT 1 -23976202144411.5191538979034456823567606982244166 2.3140525210305702864227414922994354 0.0755886628388742286107959377408171 1.0785981363114603861457340176048509 GT 1 -38125739541838978626.4456623909045351142276576787475110 0.1686553161657249047430259856918337 0.0203867833518895887555096380727949 1.0205974621126253148474826154967929 GT 1 -3105732623811596414602886.7741717786992969746081573185877838 1.2205095134681322059294312745738719 0.0848923516117276430836822906259197 1.0887135721148860809623245898450165 GT 1 -2350355129456939151205808925769.5375423018513949185900429526521287 0.6033922537960215143105653412980544 0.0993917598202030934586166507058162 1.1046849215009641010417706378567554 GT 1 -2362541446.6899141273154650585445962251385553 1.0437048370116865456572105979705236 0.0646522635027140042180335868267833 1.0668369081428046047443156277337955 GT 1 -10545789863572584274958567415479538387193939.3585330950590982236960254281021335 0.0138121386387308497706303237022737 0.0641804758213987371953439283604676 1.0663326371444520619108088391077757 GT 1 -13505525567182628019773772563524.3553685449755980824701769146619654 2.0774383937374341947035287245764272 0.0014317951544390399003761626969774 1.0014328211525842338575900172460674 GT 1 -33.3001958249234813026324659499811928 0.1006970454942342127613458555172866 0.0170308687307077008989759238954069 1.0171775619025154190101870981437144 GT 1 -43571651550929425730632530916946991447.5179880395607362631148877735834370 1.9019684969941691133948456402164465 0.0871719976625081115921706943976569 1.0912078034973943997945719495924530 GT 1 -16914712573060005564971005473219.7116566584765758287197328643924179 0.3380195367404048716717910101413205 0.0688358248125985022947325940610658 1.0713196744080309393411383183541548 GT 1 -332.9875028132388401596930026100607938 0.1782009152540088909082412316533073 0.0750093049358345790188664471735416 1.0779716009103992990776058115036065 GT 1 -4817961754263743409202749709260520745545489.3969945762166174336529994775563603 1.1839688716636511227666019605470153 0.0261117633514047474973399365606595 1.0264587286908719248699878049992907 GT 1 -121246495288190249.2158610971957689241719916992640445 0.1284984645537972882024919684201976 0.0458703494351068462058262571608126 1.0469557147080624129974933379286794 GT 1 -43.9999137952458058598379826668980347 0.3186569191955974817146061207986545 0.0651217150077624860448846624214376 1.0673389346460336323698526886101686 GT 1 -193258338359150954477649939929.3448289393311724110018476684333528 0.6518521906713245855604596761237808 0.0311853094684163085755353275168200 1.0316819232211613757697521822264611 GT 1 -1719038059197394372907501462361.8544081244950706504291144724528460 4.1546766772175492002556728016827369 0.0616524821541749794248913621977240 1.0636349104811296745210041354252030 LT 1 -85701000984359107291452252.9527985993833791254230883184418232 0.0675353604984341238765284690631674 0.0294562214258235236169853383472824 1.0298987680919842282198320517267602 GT 1 -114791.4007837587261141610739093237395773 2.2319165479803285965592401949272773 0.0458711748881232494539748716345034 1.0469565798455968977324404429376247 GT 1 -17794813497821261520.9185885687036612440332315338555995 2.2547365640461093334010469541693920 0.0559493328681804940486791164064833 1.0575754414678392135847980531501847 GT 1 -15474.1156653976175720509220575726918057 0.0398705012998328781238438221856118 0.0177092807150957212003604078135355 1.0178679662896444433599480832637976 GT 1 -20692826091155.0021424422803671464312257634190362 1.5177709867063408169026305856090982 0.0358074591730068299167599881300573 1.0364642731668685517487128236211314 GT 1 -6987619462.6941818693427011586515486431806230 0.2257322471327294974725033326399792 0.0682054187212924219167490507617614 1.0706428949429138359308242996181706 GT 1 -39819008263014846791.2894535379738045966903558891936987 0.4149326435982931395101277198679395 0.0552494194066386154136386117608962 1.0568343222056395411466870393153420 GT 1 -1671951626786.4909385709521508889951841905427258 3.0646241106554923206131661393313257 0.0311720876832271628394734938013114 1.0316682759312329702176905792122718 GT 1 -197379627205186138908735671850112831132.2878737751967103816454167405356484 0.0225577505518220930068281344370047 0.0491938754358806316070028414049908 1.0504451020316537168938301862248040 GT 1 -9865321227.0122508185331491834669329649735546 0.1172374609406316280325305604357819 0.0399431614336090068368562264959900 1.0407627894329202833817079562507254 GT 1 -227745113009093055185.5286633364147473102877900685858841 0.4429426252891741354649588697358657 0.0107728704219856801063022403016115 1.0108313179345562078784955265047442 GT 1 -339913277031850278191.0179743984508255574875394738852855 3.3906861794836629393957689467114572 0.0483348820801227003282354420595023 1.0495420729661427236602326555168169 LT 1 -146321713548613870699038.8372730933709978188857162993897787 0.5896471855467799666912831755059275 0.0604142636407976976349203395065756 1.0623162068583666800041337571339332 GT 1 -4559043019406604505067123062679092.5897798644459350519773558047540944 0.9285202255262557130376578975231630 0.0060170547724774842490264527912804 1.0060352301915485825400574215314333 GT 1 -7473780474044688580817461.2667622213670587985573872724292227 0.7708809862470840977128749120850670 0.0530915653388228548542914038330513 1.0545528803745489022707619140304261 GT 1 -1216632056871410621035.3546487842491631269903900320104532 1.5615434106929661824783985740647551 0.0647275960328525391082046342348706 1.0669174509837050089730164514302696 GT 1 -1627128640.1204796551275931076971657277688434 1.4985490318721684985525700575951922 0.0675740203320304389949456266837282 1.0699655089869467620030896515550898 GT 1 -2196279298821860129366457455044428084027.3289185435189182733158529165384255 2.2098734828952982375614627221379382 0.0793127908997891316471696368662590 1.0826349213663419370163733722007508 GT 1 -583766.4178467232445993531708871806379838 3.0283704685418481081401075153214210 0.0851083263481379586620432924173409 1.0889496101667169143452276903501340 LT 1 -13.0468307161081624048066478181081334 0.7943279603218233977430324137940106 0.0366740136496495112144254538747055 1.0373634131987855070338036427623198 GT 1 -116603334.4339872067476663909361366812607974 0.1576771458297159068755152593105331 0.0009622424304513769327396622414141 1.0009627056828968051180909155153554 GT 1 -810228717280209715162166040392408919717.7708066683980828228921414608061693 0.3991122628114285342468019152467939 0.0501131749855530370252730718337718 1.0514124330480189471353280819311750 GT 1 -16605194770765784578113793263260.8060283729127744034898716118045346 1.0705313581958964079547149156817391 0.0034905307579896222049897009222595 1.0034966368736730686120780737620955 GT 1 -677268675206762316964.0125633600185075698516267017509858 1.5003939291024195361550885661018386 0.0607699061231750715824016601594520 1.0626947883892454896623867445107679 GT 1 -674507709.1024470213450930673062027450457286 1.5476172356312433277988337111888832 0.0812281243389426363996995409553148 1.0847174184952222215682111188303320 GT 1 -4086933678.3592700229680878917436187033140725 0.5482466694071524220907788247249727 0.0377906655330930756710443524972499 1.0385232485926623473043667008695168 GT 1 -315179450833206951072962705911.6581400822484727359286850807552132 0.6361015921041578599757209554580417 0.0478133735469024189300264416155242 1.0489942272131262598537885367703722 GT 1 -6503636796590954422262666934765.0941213839714757443034567473682848 0.4132110518977087458017391071874644 0.0939319898218049218740817702840402 1.0986409093346517039218611484955294 GT 1 -41.7346130775372933636549425469714703 0.2117355757513807281702589449509330 0.0530177507500996493596814359679851 1.0544749301640244520719942683563098 GT 1 -115075.3364350895229751323610768149129732 0.8637886860273448895962641716514672 0.0063991694856260917670093568609842 1.0064197319393691807400382069145305 GT 1 -588989983341.2547692734114336089639043541871841 1.5339109217010091498740767741504569 0.0425505058657275993722571666287298 1.0434823069589882842910846971367935 GT 1 -3166396493485776105269270165776.2832488144791183970013072314563895 0.0911909035608289130251472145831181 0.0903098572851877426644281083419137 1.0946512399665795847224571222679648 GT 1 -146893.7218897113823791339522348030014527 0.1321342365002904021838815848430155 0.0423770002997090974377408786427019 1.0433011069605006839149162123797507 GT 1 -295.7908431495227282422415495501928335 1.0479226873622516678483387145352772 0.0038886775719782979170767686772969 1.0038962581372387886422991320005285 GT 1 -54299323.0804665454860638893748425325422572 1.6751384058661963738882783772307508 0.0148942118052530345715707194696473 1.0150062443944432392329922462830040 GT 1 -9020574.0562472151185726415092337768548409 1.4893117029607421749830924055797259 0.0623152819103563810137196653848140 1.0643415079169970667422908239043571 GT 1 -2262728891.9330942925837698200188942120740629 0.0626080186315212427128033201230023 0.0475710191113402031810495075719617 1.0487397355078855431258080279630586 GT 1 -136912589460431593147378658.0702101825978103779606517640654557 0.6595749330534909396619510221107138 0.0344023650282892096558976064968378 1.0350080584854614609031333281187736 GT 1 -167107638811654634.9641036740488551952438539415128659 4.9586911593441804863279825381744436 0.0146318197400583621832999909174247 1.0147399205850996738874145945409062 LT 1 -153277410944148947475926119526702.5951576411436002903561596161402796 0.3257149895291749412976794899519563 0.0725217224035822803165892027403428 1.0752859051560290455003446323148863 GT 1 -15595775.0141516828841219662248421633850277 0.0780637061932991659107485474566313 0.0037958791364536781344034708142079 1.0038031017689496244535557674394805 GT 1 -9233289030478603058854879792.9640220835125821375641737679159869 0.3998890017283514230960152346648405 0.0465887149269290016478355570258118 1.0477088996199677332912394481164467 GT 1 -1948254281573.4146574029894497327828416487224423 1.7426223413623557094752860043443210 0.0048395435978871819170346893001540 1.0048512921092869980637948861605521 GT 1 -1794375863781040212829495140948050626130.3406379202286593741686018636764522 2.1801979101786897709209072705701640 0.0651391561910232638127291911988576 1.0673575909205829766759024297147105 GT 1 -2704418738652032966931736967454840948.2645516375410844878930236845973435 0.8112675165212590660163314004458876 0.0067220339754123292032440018645183 1.0067447286056887088857559253462597 GT 1 -735036595427482762721104465337011.5593992233284035232928399526650701 0.6306933909279885387939832782981739 0.0326812159156291159806491020818441 1.0332271748936167685151210808528241 GT 1 -243331371054928251821747454524363127531.7047357557637228123957163213210582 1.9582033804844859294441764773786114 0.0585823549788058689362586532976992 1.0603684068072849687339396122149613 GT 1 -961206353405859.1161539159628309571290236020817644 1.4329390694380570038797312054401348 0.0448830529460233179228372600256192 1.0459214883505894127098684501785757 GT 1 -50520096974148624989265225176008513.9072428305121920012702677931298885 1.0003572201557599397248965647861439 0.0186138386308072227733659795407877 1.0187892563334430261308935037457298 GT 1 -18307817493.2789449630320936503281207419305057 0.3937794510396901291672830064709342 0.0544813817915061878099970048691053 1.0560216996882922135041236863897751 GT 1 -787165106198928341885043053495.8449843446111132062386324207209131 0.2155300364567052694562890694181394 0.0971769644305678680959887276756873 1.1022287186692915933667227558918866 GT 1 -286.7983829532617180260370848452357892 2.1739796843145050639897056167330103 0.0758891538835772457885569300556546 1.0789232512060158249026806827577418 GT 1 -87246396392258961974788403236515337082409.6587174014623043830404925724274536 0.6769783132980777570846066408262115 0.0798455817597308830142692085060022 1.0832137771102643728153444980487446 GT 1 -142265186242123391440695518752633810.4113665484061192303940573917783544 2.0156986780299672847058230952856128 0.0321413533965706187756435092867618 1.0326692286045555783329675817221843 GT 1 -42835081422.3725871756647634787646985088191564 0.7198972680771204367904152352425746 0.0583955897737518785434480520192945 1.0601700392893411841908610138479901 GT 1 -130.4895495375490589661564610887647169 0.7103604473651979661283508706120758 0.0133612018110874161349151114853157 1.0134512658098452501276776864272771 GT 1 -138326459892724951294073393420293776334170.2169827684246147381498929143353484 0.8717895262622898175748304716719687 0.0893356665199967108487914642921181 1.0935809090272662111800198050133253 GT 1 -1692479.7383554080008009377536936793109197 2.3505690831704991866489644147336671 0.0430527332334872415036824500383240 1.0440069916947115235265465453333384 GT 1 -646378041475071020201900829976630619.6452319961466575703342807954175866 0.6073073239827747748393664258203371 0.0408344628639598864505460485781678 1.0416916046715417509535821115720427 GT 1 -35438786744171372403423061880288522.6263375441051139874491322894018666 1.1604936801560201841014876890093654 0.0480510518197763337854264795031893 1.0492438714897992292525657997558392 GT 1 -237905313434110285937968933130517645336.9486774073802897280997061501208842 1.7548094647130055880780800400055775 0.0384934013845149900510618388266888 1.0392538511422339769369446164548444 GT 1 -4026620930769743722050142138361095409.2453337986304256727355210461334200 0.0479135342676514522896537664416179 0.0569579550202448994750430172947873 1.0586444109377933257369020234092776 GT 1 -1881397848471782769388842536468565.8269830741405515931978365511641410 0.2983907777999817236952859842761529 0.0833975638363293050546992394804876 1.0870814490842536153292377859712252 GT 1 -6029634248390316.2833526956147207419676398595351089 1.0147467638099668820397526808734013 0.0675314890779879407825221419619680 1.0699198964825777702742929865825801 GT 1 -397796974.5653343336786697186336368522148344 0.0389307872318328741945720007507769 0.0723858539055776896713931617389690 1.0751394235074465848571654745629836 GT 1 -16382374062840299443776701149924671.1722339261792374042411438485057290 2.4837271193162723665904594465130411 0.0243914162760014288722873897369540 1.0246938142739949870846657831881995 GT 1 -10331187262701938174947172057509017444.2338236090853103492914233213970249 2.0585100074477065047519013480598804 0.0479499690150633087157477486778264 1.0491376920160556934645862713265629 GT 1 -462795021165276568797669766786314700870124.7863772782217806985590558997876614 0.5708682615643354560137870408648078 0.0163574760628539842570499069578432 1.0164927366169654303387977974413714 GT 1 -110130.2554912145197781733167119725725299 3.8897446675131842282630291680709471 0.0115405185069775583538437039871590 1.0116076271022948270156224286403162 GT 1 -3573069121770993742510013133.9772091726887531601420255751307737 1.2160453760114847855408260452934828 0.0609299570473533133374729377691083 1.0628652094219945706959314029349264 GT 1 -18936936078763755366275230613645251107425965.2586157736096615804067146203297938 1.0760231768390856084841188453480260 0.0343964552324067552800908582308718 1.0350019381537793203647271844850187 GT 1 -21860766595908768800869005.3425705501935546052369581780580170 1.4368923593027922215492103753265256 0.0863607480519468638121071171225038 1.0903194769621052371174438761672331 GT 1 -4352.7091073550093443587748672227802915 0.6500610545961138920252542123377547 0.0612403413490055762731669520502487 1.0631957871141184166150360208551562 GT 1 -6291774059889507161.2063092023649083918467478990950865 0.0570067279360671911840208227579813 0.0728738152864378113235042216027836 1.0756656010903816020749763261463069 GT 1 -746666614631708.4457005306726670453063500065193076 0.6508191229721292612397672049600398 0.0231025948955940936823015798854005 1.0233736425818546390943289561711659 GT 1 -13.3940058163797091085292374025043599 0.9158163538084772610953943190709613 0.0335760040870921711681562865780418 1.0341526219019580251394973446575094 GT 1 -286497155323986987424716354936994.2295924962531527031768000875661608 2.2557760760768156912225706090854470 0.0742768421549427091654248595895360 1.0771800546451742185705887806290081 GT 1 -32731937386831111664088549840.1146226320189298713035907691443858 0.0981904821774484991206094269506409 0.0852790412892112179312512180740829 1.0891362233749436525552784270809740 GT 1 -2273417567120413229394175529.7690297551541531663443064122286185 1.3506634623731823204043149292852040 0.0651981928987591489270430721178585 1.0674207431771965051686279053155100 GT 1 -22048669358307.0612491664417315207455817679391053 4.2436957490257771243753108310708035 0.0046533899499838276156995491577421 1.0046642506748872082600620963873030 GT 1 -21420827017.0804373222988228385856848131965896 1.5726999479509849303402178598649747 0.0288906713155153679168974219218734 1.0293162231212192645798067590447328 GT 1 -28909359663213573373174261.9635375653648129400334462062833458 1.2571280462192146700831537024139693 0.0575718977346048071336709922062846 1.0592956466382949758010681196145073 GT 1 -127344449115538458484175871543.0620138165265037294905178156491391 0.2582962884955800453586797020615143 0.0347124074650865040445624636669561 1.0353291986910471020639507923871409 GT 1 -679600242112749667132937584.5566634224738689526881643350855174 3.0526264499581219563758418425219173 0.0201956251966261299229208220050992 1.0204023447913315772848938583029286 GT 1 -164963.0331015117104643069183696420494686 1.2567423092891632430071129716318485 0.0714970923413564469518954463481889 1.0741817666286971917728482739648131 GT 1 -8586738371487757071367338712014888980967.4289024183203128316570809614773864 1.3356315808322017757594384146474945 0.0962405297049916089672869004311567 1.1011920266760896828219261242841056 GT 1 -62323307923970298.9412825042362666294859183373240125 1.2311131340055694327068655909170615 0.0507541346160807014026716290604129 1.0520874355458484496827267148083211 GT 1 -7774319.0886562776544698592345981213799195 0.4003466856415066304264319495059142 0.0760798006371388263750605385113733 1.0791295753959738467269819841734044 GT 1 -33914006122539121.8233385389081922148100579718230788 0.1738363506852147701311754484277230 0.0812236173155874393242914909104457 1.0847125130204030032243236114672414 GT 1 -557367174878642320180061.3714372289478159852041465954124759 0.1018422151815511992826939752277952 0.0952793304069457427845183182920637 1.1001290353085269298623507760224875 GT 1 -1095.3054945657942269097814067880368668 1.6355545561664686867914781778211307 0.0144833861302798138505521247690317 1.0145892942161700394197444607771298 GT 1 -186.0111099682461441569400134241635311 2.1422345646495427393777477557018563 0.0250488622949230729089091347973645 1.0253679244143772535863674124458975 GT 1 -205632290420962982530870494758531802269.4083624526661226832036787038349606 0.6418725180030259334769076690879446 0.0764212648635373301351100185980213 1.0794992256554791037751918499261776 GT 1 -114253202109183759595738686629.0817878284320704326445399409444162 0.0120367530820402286083988316835373 0.0229679299068934382404612571598292 1.0232358024083752340004170674622717 GT 1 -55299637308085350685266147018.8730347557152801799893274040862012 0.6467371402337993272003566774894729 0.0251579699958802579993194869468816 1.0254798416196255011187543479287253 GT 1 -695381246653843417940415681931880.1116655765191555630054703752952850 0.1151980815189610415870041487568988 0.0603233945883085290912665093991081 1.0622194997083959538876987949060272 GT 1 -36888493134207659774055335.3798040786372371141573108862098799 0.7965038675181458169014025748098964 0.0859943754415201325121369404491569 1.0899185537630266716799397707752169 GT 1 -1006390757043243633509762499744812584806.6774782056983936143628319637939573 0.2010479582630730624611491492386167 0.0761209785370247351352105454224797 1.0791741450650467903089157785532153 GT 1 -203410.3818398059541175123910371708589250 0.0821568049986205309151216893020562 0.0690115430631098900479313933385424 1.0715084003459606209957686248816648 GT 1 -83521293810314261627624345772700969926407.5909328421711846731726667258915605 3.3259412036597528320679703757054194 0.0852594318926462593644671576997197 1.0891147860325581968471009672659505 LT 1 -24746100136399573.8477451878774420784663897368035164 1.5522282553081143710139158804153477 0.0406694785289823300363864452242690 1.0415196112659320933091817638806087 GT 1 -623439028282257281977.0816936522884507751038666088175772 1.0059168993721288396641440124107514 0.0745409959044859383224252545000737 1.0774654439026627395329932972984022 GT 1 -332626529595.7054279846486310662210441986563115 0.7437919066604021425291542352260858 0.0637354670948820889546262832960362 1.0658572218091047802456145927270622 GT 1 -323994504379733927199.1525932242476790068619890371930924 2.0498180329333331746663367639360574 0.0721102359715165453185714902412070 1.0748423420142903690501491533660468 GT 1 -221761537018689550755090157413565171547.0363832436360170467442615029917296 0.2651895616235379108378734275640667 0.0428621483388015899600638391787608 1.0438078522797705291820131146453312 GT 1 -87.8026719701160817947273804099602341 0.1564774926076709589079966280827973 0.0211243312751218578010280660591446 1.0213506427547081725362964411130484 GT 1 -7659177005321768.6781750361630850566092965007300165 0.1738129798223824230108166991868221 0.0207966394402682699868582620541727 1.0210159352857940475370125121555939 GT 1 -48124561820024119367647729122427995133.7117076451603055278771477669627095 0.1977066393080776799472750757043089 0.0149504123421662649874091910742670 1.0150632962773731870877088266460096 GT 1 -1709628110550931.5964576744122515482317557131254115 0.3612073603747920462568758347024708 0.0437566598192874319287402187380718 1.0447428583825457086879786672128478 GT 1 -384485795477289.0983829653997133442204084566876309 0.1808209211269453914655411375316072 0.0723886339164593156099153130970364 1.0751424204594218349107788190779396 GT 1 -7778668666465266137125155446.2879877461052399011029728495873195 1.3164321692264648108771868155225574 0.0143631284425146108736336429622066 1.0144672766373224518223580425135703 GT 1 -1373984604299373712263674143.3531344966261730655655115878260502 0.0959607578450385163845055046907502 0.0509216146106749227350810807895975 1.0522638859019565157502111012047743 GT 1 -1287189000005501160336978950501198.8296295552462829615682164460946880 0.2592315698328372850254392700392346 0.0405149123344269346938693408644432 1.0413585054315270246185160875942875 GT 1 -45887.7641846516779286947979819946585567 0.1686406930134237650657524823223807 0.0897977667738508284363632449945985 1.0940884698471789807880831184079363 GT 1 -936545254244482132136193.9906022700187781392200062557962296 1.2648095070059225003237907039397063 0.0128693558289324358817830888476357 1.0129528833931557990104096557000109 GT 1 -28135.7776085199210038991043512884770917 0.4105218043274477023552423422270819 0.0199929485402273152799174179563274 1.0201955119762909937841816664221303 GT 1 -10867736.9160991608744338836110896888828934 0.5360959203465914079172485285405229 0.0960966709452115545242223338168298 1.1010328611944130061519788585952311 GT 1 -1289.7285865915533956198800925834785283 0.7625231111950073881433393060902966 0.0052591123419222868058037319926085 1.0052729901512579132612527231459164 GT 1 -137704899.3339882147035426445647591463846598 0.3400689331788072527725770403153995 0.0133532114074100943484651529669452 1.0134431672317875265263985882840380 GT 1 -452057322970.6339914543925888485311845306705786 0.0426714588531587226911716242555399 0.0743446592181173017621317074104245 1.0772533157997735842552663566712691 GT 1 -13281746013840.0485956255111521474588192781168615 1.5684507596680322511387747676003377 0.0408618833669330114414567347778359 1.0417201929536118146622448152672441 GT 1 -2033.5776043180466738589079106289972353 0.0067200690028304775594051913644456 0.0683050983839613295503273494271730 1.0707498766712025680815141027325423 GT 1 -1694298382863.4452664079363454514820517840536362 2.1606729863351114752678371143896623 0.0183801043483145912088267345505652 1.0185511171970290016005107787064455 GT 1 -84920412434874889860691986272006728.1405704411328294251372229034322250 2.5552676212794813669303320318743139 0.0253313692926727733162952440612723 1.0256577316930108934055668482727407 GT 1 -447685579618850.8162124105803950858419272350813550 2.5149431626913621110059410897953999 0.0602074729633119790447611510931398 1.0620961439978474821820823108006058 GT 1 -117024982056042902339813231.7614253134432222966323884087440949 4.0001995849556871987748342753872104 0.0224869128017072300462006339417568 1.0227435987740893826174155172534683 LT 1 -2194853725300581231.8494964172914587490118680540968085 1.3896293330326374185554464701105176 0.0834763855973442684602141660689758 1.0871674461830774407740298741048353 GT 1 -6029380238148686390291577866.2077686141701706288595201920986732 0.3081140793219550653960690811340686 0.0403437461814163849575754400313224 1.0411801275812202454108151374012957 GT 1 -5705573652946015593977808782338852.8861050953081531072726567185461996 0.2803451830649742433312667228323971 0.0002059414542217829932121605949471 1.0002059626630749711746716297565232 GT 1 -421796182279.9841688180208382408198221813119425 0.0018895182790920160177540686190250 0.0733407160549005358713309407983761 1.0761693279630204355181052961566664 GT 1 -27264398574277279819426091378928643209.1440950082086618372122994456716217 0.0484683751332546010927908973016055 0.0593236588517517442540987657803069 1.0611561505828109704542061165623483 GT 1 -19146.2034296700027144967470491029613543 0.1312282949992228160985397596753188 0.0853884592737626586983928366123405 1.0892558495060221728973082363433477 GT 1 -14716704530214205644136.7826996583220760969281625649315602 0.7244716284417624200407647292203731 0.0668813952583745223322094940412992 1.0692229643045320467806491939483566 GT 1 -57525517853584952256757.8852101039900699925099658385257026 3.4055286283060295538343585534073296 0.0507215661059977278693580274505223 1.0520531262561558654940409845805114 LT 1 -19464399416799958234071416945.0472299877101329979530101333871087 1.7476459610481989725854300406071818 0.0385451581156847749821397619973058 1.0393076813752196479135179543513826 GT 1 -188863793986046336672807704.7900941349192883336817666806622714 1.8102690865225869912735398285766334 0.0428451766775134968326097389090733 1.0437901207578247719164929887848721 GT 1 -17098577870.3563852480540286482089630285226213 3.5658630451190379472199123162228621 0.0613615950069068399891988229210231 1.0633249591425954289997241874415168 LT 1 -6725995389.8610060076062818207321354932099035 1.0489143026947484287287872848879755 0.0968910914581258028524329727233208 1.1019121253715629485294727884208262 GT 1 -10752856746.3629024319779129769499958325145854 0.0692025240544787297241614104463630 0.0959025227728140808624623834250231 1.1008180956119319113311473171118024 GT 1 -23.7903282020354802575566978097038018 0.6080605278974127673904964679877890 0.0241450296890122939699447064652467 1.0244412996033634013949448900578008 GT 1 -422.2116419694970366283169834232772914 1.2369840725677972585759576439711914 0.0830427797392347557769099645666877 1.0866944596560349210813043790912915 GT 1 -34464169.4079102691712517933160417899408343 1.5458997006899374518139877434135514 0.0673830959280189052910575348161125 1.0697607690248332764595854715922452 GT 1 -596823822116640190345841830481806722.0760652146260392248175639987022854 0.5273106597491020665785120584477186 0.0964092543786236172248865109993758 1.1013787361169454612126107708581925 GT 1 -47395361497633690750256796798846632626657.4740813276039350292842067259908368 0.6693142467540267590821769245770259 0.0165732603516169323760154651819298 1.0167121333546636086623990536136302 GT 1 -149551572463001187510539.5903298820934863683912205951625389 0.2703850858906917890855909041364258 0.0373892689136768296080107579965120 1.0381061741529073857110031681416827 GT 1 -30473295458544973822833.9158118295154551929887938423656845 2.1279395590550036809962292765284822 0.0701630176779613858228168127045828 1.0727459960253068159573614880826925 GT 1 -2264101741377959366453.0022634338634400996760513201396056 0.5007028331288435115323634269189471 0.0069206518676996533939835608642872 1.0069447106447042508109160270812173 GT 1 -4443272476322200297957357.1826426296632834481237813361852026 2.5351045660769503431873099774455093 0.0917595287889503384026624809102802 1.1008777551242497590607605693226510 LT 2 -935097.7989070744368114220804128304717096 3.5137840163384539787681686531742957 0.0308750814243957591837773960118070 1.0318535404711051159202443181434464 LT 2 -28732.0218666563054874005120984287403815 0.4124042499831983506258943306140247 0.0879819648837941587381599547446604 1.0920955137566183228873124374969941 GT 1 -28766391088.2462333182136461639351847503784193 1.3521177091857411534957791039683610 0.0638903946676861073237201086933433 1.0660227096461707563921929688955865 GT 1 -1469059.5262794419524661193355942167205414 0.0139084345283304289876255056927969 0.0897291776879093379217498865182191 1.0940131168110378707088292608600363 GT 1 -206062944343138002.6142481785681727958030563615593092 2.8810368575923682835049839508006838 0.0603876486980438373370453153667826 1.0642277710672888788096497543706245 LT 2 -4752438596.6701756452645607653224890389287090 0.7064902414047758044174998593706138 0.0295619973717179855100742898242972 1.0300077603010029492713949205246744 GT 1 -27200.4952718941412649870503182920545169 2.0612772900892724104123756407191439 0.0604539942608345704238693946377164 1.0623584930048381637969561750191664 GT 1 -1148099314798710600425.4809858538031531675941552577623399 0.0187842245804158685333463653784137 0.0139680495703915160861869533919043 1.0140665208176786950335957158234283 GT 1 -54899436162.6126634363223974782906108782568121 2.1319221375935518751754268311190025 0.0746584175030349859775316624130219 1.0775923312610926154335606533744231 GT 1 -111071730765400029887392786415746.3555880801667117694212401992312088 0.0830066155251116638987083992058731 0.0614324116736075109039673230394604 1.0634004081524390838578755807826108 GT 1 -94778674825895466140667368865.8351806645999457922867869913213641 0.3621292188719312388960707324209429 0.0792044579902033559023833906018231 1.0825172630177688098939948425003913 GT 1 -1228037995672488827609828954342872445461505.7292106198728194698610333647852657 1.0150801024779783404188448780001478 0.0849097311012192837580554067762496 1.0887325640384676847522740342077357 GT 1 -10222174282882714968669305262655.5349260947379794544689151715822701 2.3463239920235920401975517155769683 0.0668505757609486632520230298109718 1.0691899363611176233310427588791454 GT 1 -85101068549268212.5533209532113611959323503528347933 2.2751594846755275450064146828152167 0.0684676346849228428049190328898676 1.0709243441709633558903553907855095 GT 1 -13244791421299545649611912328665519.4574356194257087780209418861876252 0.1372841787295115770062554542977853 0.0594839205242586621804842754003167 1.0613265336559486606645705118812492 GT 1 -1922518328.8130139403077619667847375556908934 0.7578777886365031772776813443559177 0.0125465443072164063735712540828785 1.0126259167933394703514329117275435 GT 1 -65681.5782335429634379039551478608248393 0.4673273949684588433616374729128049 0.0651843205136548796589039310000435 1.0674059033661613146075942542138494 GT 1 -731355339.4431289230952880087431565032423866 0.5663353560296673305034156416343890 0.0689564047188336160638831135090426 1.0714491765058267098935554196828273 GT 1 -4300094727492059802684941651568.4688711431537877570598976940731152 0.5413846597007408016605086748701829 0.0931088156435275908327051381280292 1.0977328092104704265194796345073191 GT 1 -66249123483512758972528263.3916232373134125183097395067485020 0.9245952549570848103419634785747878 0.0104914823530345774875224005724902 1.0105469059452715134631683694756718 GT 1 -822499871458480538155943902003271552135029.4225764819708957403284983097086961 1.1493855469720798058513916813161494 0.0145584763625260858699435679640809 1.0146654908951898937212615773092230 GT 1 -19970271180414282692744596081139835768265490.8080830439178439510772940245817435 0.1831693605743326022649898695617125 0.0784806789398354715741211083853031 1.0817315351249825265124918066976805 GT 1 -3195480774413107046125641590259674475.5905283869316581619156362458580813 0.3003176334111524743368756961027532 0.0027285062310858286265311201127841 1.0027322353891109215499185775136281 GT 1 -357927518.9834420052614133074231684133230395 0.4453557974275049494758334904393859 0.0960004563456584339455716129658150 1.1009264233972322557275091399648769 GT 1 -119402448718681009015016068.8636351628550625709443356904944204 2.7236035230508306309263587363776460 0.0014634728772517447271312098455203 1.0014645447996301657265593229315831 GT 1 -19878290557.2948806582093917442605636625722705 0.4766520892844132593580780753193156 0.0956233523183984790202223385304055 1.1005093596971759549042467134473105 GT 1 -93807.2703148745423995630633753601529547 0.4445746219765814256160161615127354 0.0973824822935387368526189529877417 1.1024563837269814242928862706002866 GT 1 -3.2740301673936150238107173950492013 1.1132437770387545844346746787831179 0.0327882531514090110045095667801304 1.0333378345437774738772867462685876 GT 1 -79354650.8825655231638524292965192095683781 0.9524002277535444599608899093523113 0.0049502143582627255516570275096128 1.0049625072544527291098751027243098 GT 1 -167781200074919013749622054.9481968515601209055330179953482807 0.4259253751024198802693231871268868 0.0400862079026793873085716828694787 1.0409117984511317868452825325235193 GT 1 -226053301859790750612492612423989822302.6030438701697299591311068602413269 0.9505877842704615080440882023194416 0.0380355529179791064785841278902355 1.0387777862945647991239706095511456 GT 1 -12272442653025.8282935686234499403065824611566587 1.0605148367098262159365760436251240 0.0683190139502070952051386917807279 1.0707648125371629844295598145916926 GT 1 -80643611592589678510015608481752390.4133706729579077344638964588973929 1.9639119739627552699500388155024765 0.0047645925390356229347174788539217 1.0047759793936129246014741107031022 GT 1 -95265239597862989898443194036401364254.0276422383062625290028390762569615 0.1084640758854589907465701858000676 0.0096470053975584279923478769481126 1.0096938392014983076787951914940711 GT 1 -6642907368971284427829077446666784670339092.8215168912447690747224074225395677 0.5243774381065871689278982939641974 0.0122935319130295648606701492717028 1.0123697224543144566552857406380252 GT 1 -106171.6387444098120660516684514376389415 0.7173475820631929919069530981144913 0.0286821050084878771955915276963785 1.0291014749903376168990658463332128 GT 1 -34189597579.8014082204672095093155099876740124 1.6972617807991927227362285340439706 0.0488376077130711997213403571237052 1.0500704715119371572133724314831773 GT 1 -288599713457724981256812.5284198651798717358794429233294738 1.7904715944326900533204067821766035 0.0436266026857323552589419518297305 1.0446068592236908344205361150573917 GT 1 -36569284530656152066900412715641330.0870779995819789010357914204146797 1.0621919684645048010355250340412251 0.0861820393442531895868881937430192 1.0901238951372276918103902507660773 GT 1 -12945536614147325.0358753509242002254815915735752221 0.7535029015900220025701542574138522 0.0588098394274150937161757784023523 1.0606100763138497152855330916054659 GT 1 -3207199027854281628671800084968962967.1643797619841360856766030606805817 0.0801468653729823597167847094704388 0.0382548780332855103437711276484361 1.0390058094013637823099186317818900 GT 1 -3400297289.9891996959379148896309875332699541 0.2360922583153088768245103032817527 0.0211739756475257830907195361268513 1.0214013597486098630295280580933203 GT 1 -179711754153244478.1863196557482630569285923424200165 0.8996136602582276015896574864628254 0.0003490079663292827463614824184225 1.0003490688837837603050811140800121 GT 1 -2407028962945988078534570830114764534245988.8044511656940122108570890785466064 1.7769109752799435042068141386866777 0.0363671374988732686852183380334369 1.0370449049404970978307606465197278 GT 1 -13095634348531854860.5970944306697054492203574759874566 0.5818024760852016359499636378577807 0.0249596031838673327224834974512185 1.0252763762106667210834658394359783 GT 1 -675932847718511568009994909191377117967.3832378781321457296904460661963535 0.4409228163249400884463119981206525 0.0114334326981734905797863526879366 1.0114992969070765396861825817969585 GT 1 -824923511309258850827444138.3451519149981750489479153646077692 1.1996108533579980151674727966659318 0.0089934493336748647966265907257181 1.0090341345162512198845318833482366 GT 1 -1362856784219150683849750.6140086272237375179055561864720778 1.5587608278616293762565445786673138 0.0759486007056165545175098502457702 1.0789875819456004293281786652637272 GT 1 -151171057578955489692160506882919604573735.1929521420468672285149853551307796 0.1573805868066128624726703279800102 0.0177217924498968002230731385320974 1.0178807036740450050094237761309380 GT 1 -905043439348165805457571091.0939924649429786323069262683673005 2.0260950634114763910669448413971280 0.0666058553418740216251583332266935 1.0689277186185964116521413418844695 GT 1 -10462992030624249.2308114288241643703915807793018552 3.5472307634257794925248433870453487 0.0484475134550113230964292400667193 1.0496604318703015340836993549543527 LT 1 -13295458764051345687641933295411799827305.0627250960382116867458515050926629 1.1848970374916440784615033446411597 0.0117038014318182441712190971932856 1.0117728300425054151193625452432885 GT 1 -72609722869904042524123264.9916627520925533183777553301824644 1.4646297476612896696985524351055323 0.0514752036018899387469951564345214 1.0528473471990632060978052849113619 GT 1 -11.2034428273028652042190876432157269 0.2193869252893580398303215628920147 0.0785215402613726320614015457424856 1.0817758773612777277153978839287699 GT 1 -38.8132885150308507758324470634847082 0.8288186826544649490656226272263494 0.0253535946772291285562426968289606 1.0256805349691838220308384155019783 GT 1 -69603184180836201363111196326836.8023312292359690954169666036327554 0.9002127948611897432734651876503851 0.0883479275200424502662242602787613 1.0924968611709739916953658476559542 GT 1 -2774144495244123677478094278907.8370840393350359818203992004238585 0.7943537722660110891042631293401876 0.0608744882800712462936739432156049 1.0628061434028463532237815577662542 GT 1 -6359046532448111202920260187113021841023.7212619698448916603546964241296966 1.0094308074392365707901654259489928 0.0813866094195484785329191928628855 1.0848899300353012162530340872224941 GT 1 -5846483040793452788982634039907.5340863452774125876852534499077176 1.1097910791303374766076512493438808 0.0538862557111569269543116998508552 1.0553924800663582401396838628300429 GT 1 -17300556254057530915411916477777742.1050149764102813961917582974368756 0.6565104014864370871667192045376393 0.0778095190366249727004382914248566 1.0810034813584730083153089485717774 GT 1 -360487938.9580524850854200615418011752018314 0.4312101798984690280018364185579648 0.0087098416975895673911910319022924 1.0087479940643832409433877107458111 GT 1 -3176820841234406311759109353230115618.7360713570347806562998749181323169 0.2347801628876077281576508764496847 0.0277980300775493901699173296231249 1.0281917081205712454138590997750676 GT 1 -215987104222017.4407192141064821506066069669473659 0.0334883517646207743339290702347791 0.0804251653170937568889043090515937 1.0838438519711345212653414731752107 GT 1 -232993619629623769754830710593.0007693627125678444167773258421405 0.4946522117951994543026505739846779 0.0420823385021653523497681103105193 1.0429934530371602010285955006212473 GT 1 -1658.8901727156944190604680628100713377 0.6590045396242471330632247041125676 0.0714245400671276524518769370140504 1.0741036306969757950098703796127414 GT 1 -171325301717662351910907136414152260.5728645709073055321553136337071500 0.0590679485468749886482720253487230 0.0851504653560468022277464331731206 1.0889956702409232999972128262891581 GT 1 -967009069296145535245760267.9088167097384822265734045018518879 0.9006992252717376016888419073390128 0.0780661436883946257294828781469001 1.0812817973572796495744633398580687 GT 1 -662889.2129284284807257467186926541094427 2.4340042523445640902902619342539997 0.0745319824027993483610043489213837 1.0774557044568812217299150546782620 GT 1 -8387201269554694919.0408079603106052140424499019645938 0.0830340797352907220219550848018392 0.0611675326607673769327439865660967 1.0631182317310649273060891867577754 GT 1 -320291607235364548430619794930.0877565057480109931609290465668900 0.9872516309472965267932603066390710 0.0339163581331501760307836562676449 1.0345048627344632092241871650404603 GT 1 -1842687495720076989548288305850122471606.6175939253202154355985969219985021 0.0809051330047520267236723793936911 0.0242962709527400362788426317398687 1.0245962949556223481308893830662058 GT 1 -346.6407420875110354257682272330871920 1.4676143677872481671372775098111134 0.0405815833886022763528649383476586 1.0414279941307279681285612343990360 GT 1 -338259876558219088484133224212.9552123090006817684352420225569682 2.5331285289428189274058842524381149 0.0465251039914085050454396357750808 1.0476421825435368692624080820301257 GT 1 -698126888562730234.3874495201731559912508218411847756 0.6068494581056685346109258093514019 0.0721030309701685694317928478554952 1.0748345771119773340496571297933708 GT 1 -24701502380424779631116466881144198.8579833295210457488436009156218480 0.5333585914117081640447839744057596 0.0414954775156726764585874788459375 1.0423809982140610763044912855634825 GT 1 -11396838.9808253229220869474123444148655906 0.2050717125295835371728855950330983 0.0741941878224239511909585686311463 1.0770907723990825973980828389059494 GT 1 -154140550633958658492565702168385.3096666231210114770742159039620358 0.2485184269155587519341711384816776 0.0837954084953385660529891557258109 1.0875155860765850315931339476787667 GT 1 -136666401788842392338102772012065725744424.9660886032332183215792276898032804 1.0113066221632400773531871011807846 0.0760040303718933293542154911884238 1.0790475692243093242509572943610268 GT 1 -4635271790796762727916085183790966593255.1305906600178318503503374571644608 0.1004522090381290982640294474271254 0.0097353853615844561431359403009080 1.0097830840548938730414754655871330 GT 1 -243146883603051232255814.7097625853340064524089578986601281 0.2634528748536688390400217007648748 0.0070266010219750027867560610281173 1.0070514038375512274727432565537987 GT 1 -589753888526049900092644283967613037.4519584963751853734185772231369830 1.5479178571725012755545949747081462 0.0857754552216581800855072527180388 1.0896790650765581526452751483160051 GT 1 -149530465646.9395643949029583772512491156246071 2.0259915408591863996250995489121285 0.0565925178900425418657394584376329 1.0582569771585951204194890487277332 GT 1 -23880893040.9404758385747531609644234277625228 0.5135086917935234339665731121335147 0.0722376308219407012131022518719957 1.0749796466829236679348522116072411 GT 1 -16951561637281649623236.4598500907637222532695680343221719 0.7395923270662893455919191447938486 0.0571546106790069781219716475518660 1.0588529659723071359809054699294313 GT 1 -7444467424.3281124456217965577123642454041475 0.1100446263239753176935686145943759 0.0918976455942371668748149509627545 1.0963981816173633858414474365067715 GT 1 -2806.5343731444755791552566078468527284 0.4805916381722982615155103397916857 0.0173728971365323129438884634871485 1.0175255768237258932967646374531701 GT 1 -5.5112940358296008567398832394232218 1.9830392156924330457457490199873095 0.0328553266265422332837665059308438 1.0334071841987416862804712925914704 GT 1 -51967.3126886764188675954929528140421263 1.3295816454827405449847096016025124 0.0305924032708860670374703034510970 1.0310701190747317675270741063469188 GT 1 -24537807449.1144319078332941828701029930220817 0.0715354928655949560556198040947641 0.0482184589022472171440426824543062 1.0494197441606896176380034832161190 GT 1 -2476330818687903256113452484.5699829335375626638336873534280091 0.4016821595275160428505557917802927 0.0778903936460320340631213782732971 1.0810911835822217880743714134951199 GT 1 -50179835058346710085384138970220944861193.9369552097601985196829237540727015 0.0526157744439077388418017746473145 0.0530957362178292555569285709680483 1.0545572851174359214277518006221708 GT 1 -552809381005779597177919796883.5884638031211654242715910499471841 0.1038551834710231998671651879726331 0.0365049141582341051985428072293039 1.0371878914606334978753899218989587 GT 1 -185398375497719.8883696288758439832138954871389872 2.4977982863275154449357327413841934 0.0834555387609719478888492726902029 1.0909418003353375303345723901719924 LT 2 -20541147129148193911675236130255.2818788848064034866187475525601887 0.6279742869144385354147347300052660 0.0916231524924795051825133163746124 1.0960959561874681301640321764672170 GT 1 -13643.3884692980269585282500937555731317 2.0482162853460712728040713896318694 0.0584726670674752556676686857603039 1.0602519000450173959679875392247993 GT 1 -4558444632099565476748556617.7690964570309706236026102356027843 0.0115847605079844939344130000819473 0.0850670711298458059762416976966762 1.0889045181745748460524333037436612 GT 1 -59626966705277108806452962345591975.9491300551650570897141911349375660 2.0936448014786655963249655077529118 0.0230661929009589635770817479350844 1.0233363804126232555710304867624355 GT 1 -6348859506237764996178094368401696811634.4917364370334606457687402236816351 3.0770338090624699863551554270379226 0.0892747741954306815643952660289857 1.0935140454348201960034629595920446 LT 1 -4808017010162383385143.0949700665414109504642182774856410 0.0661123772505444815016584347945597 0.0280236454900139493470575888567487 1.0284238014534122004432735163605399 GT 1 -1103115997623394737455623002.0388496651084909547933165734158678 3.6713983473875193402412042326886276 0.0189266640468324874808557363754951 1.0191080658875782450565494508272489 GT 1 -302468330275111179569783271420484867449.0826836207544661033293208129900205 0.0011521651869640294354521601778331 0.0155004533186139501067713999794883 1.0156218413587397736981295387287786 GT 1 -1148927218996.8185901733141091552881191636053309 0.3321859261281942314222920138577232 0.0617003359875579301149413941289101 1.0636859097673630490549270882961521 GT 1 -3937412093508490424830.4188769459667279389589732193925104 0.5554282699307249974629671472219356 0.0979855887158510611077333205306929 1.1031247820137202895600419517552236 GT 1 -789606294833965807.3617813040025814675284082980209895 0.3874359408821166246697519673107992 0.0388525108037954840863621642070600 1.0396274070779927457482097778187561 GT 1 -101724734749408530850.2702355748836322058673936751511695 0.1486517482366290597722580682949278 0.0668866593252858411481673376383985 1.0692286056900246291730379985602884 GT 1 -334398011485.5580758820140871494131673398128236 0.7766193228904576023664444046967373 0.0308206654293194417120357778701879 1.0313056124186750540214852452745266 GT 1 -12397527257.3027031847088249505709203268149538 0.1029962504673564064869527476380880 0.0947889492234581615073632638326959 1.0995871571923881183310835581891863 GT 1 -4672705520022226032294368816412515005.7948517087884486328480843620357235 1.5576021239040111814474988177843959 0.0596624024388622067966398379365491 1.0615163218540614069708618934813013 GT 1 -10.6691953122527263377235876000267782 0.1033285434861767779706254484605741 0.0915152832462995414357428143833779 1.0959772137929692183920495350014592 GT 1 -178670647633543416491491848.7912910813001696280004456701851240 0.5651430410514482726671401029019581 0.0678219505867738111697692206417358 1.0702314423994436664138525151852969 GT 1 -147629992879975720162042094125640232.0406311376772361835333894699075339 0.5229288412668429435099624213141704 0.0653202166084005866331532589332657 1.0675512860083591886599419620985367 GT 1 -722600.1430666519387478485113329260238029 0.4367693820892502981877517558591754 0.0802611461854846310953073863708934 1.0836655037828188262438779774609280 GT 1 -18010127309867908948211176479616869840749.7022934652240771115951086295800480 5.5666503374318231667266794142255347 0.0987957246672465940095758139728388 1.1040233263909670624097003599823264 LT 1 -6520660074670118405042.5437628088663640123436826981856102 0.3251938026386811302228596973690336 0.0563251477504792407714015126748197 1.0579736083447556778921666149399391 GT 1 -1567539548684439685562.7758739552946823363274695909484648 0.3557566421692589917165759163155099 0.0895898585706273848432026817590612 1.0938600761407300136654922281775445 GT 1 -20038219017343956741495120410387535873200848.7213396344387686660442273715612311 1.6308342349781106724676971098172262 0.0586611772415545751021072630314542 1.0604521375118595366112565744135930 GT 1 -7088847354565618.0605413615395949073320857191367043 0.3191730056528047548549399559970124 0.0575355696618225931262283673658184 1.0592571000663728803331094422172766 GT 1 -1501900858424424505590279604351312729614.4201056117682753510123484030152095 0.0430968862465508325171196655254099 0.0560259516497626124273955357358394 1.0576566043689346219638321400171794 GT 1 -1034948858819588764022386350295.7809323555641431602822139780093736 0.4805349604379200715797184866320788 0.0423049210196297753041648934298977 1.0432258408405640932760587588449921 GT 1 -7683805442714955468422280321063854172340660.3311312650689648712670124689523452 0.1596023318408638659963216997862659 0.0514074373114546312010953790056820 1.0527759058724214475624556261278024 GT 1 -52294132484.6428561212795327270722188667054596 1.2270278731767798136958715613871783 0.0653423635857090073721685471592993 1.0675749810107432490615722445738720 GT 1 -5143485819281656.6908263368217111339163384389069199 0.9249937280538808098750385584995732 0.0890095126822428180578119742208863 1.0932228237989174616038310478469135 GT 1 -1587.7748841972811821904474719684267475 0.8783663973452162916705932998223066 0.0290219208927449407388508075022365 1.0294513865303457662249296397878623 GT 1 -31135937297046336.9635286736392247359807340728095835 0.4029281746598783431910251367120321 0.0463918880609558286828023236208391 1.0475024760597454633670896467382114 GT 1 -806478036878308673588.0434942284772532016901357340628957 2.5736158217324048756183513899719377 0.0651550849720321643176697163461789 1.0673746297310310916960416028518203 GT 1 -175804610280383844061.0976523658198858591693110871653683 0.5277003350126822388785657680511753 0.0188767908405584356237566051773416 1.0190572318297882498608872624740975 GT 1 -1.8556880802242771241373804795390268 2.3712812730075308201555127869316534 0.0912151166820415345518776391004108 1.1002210262021923970895856192661844 GT 2 -193763622602739291.7963739472012159262675263765217400 1.6525808640619859144688806354046378 0.0071766748820838848709840603974195 1.0072025510910173790599670532101146 GT 1 -7565265424239961793721471837790076063135.8157890246859657374071437657089366 0.1659252255112599584017360658358031 0.0804143114889336906971001253589060 1.0838320489468489162990575357979272 GT 1 -9355751758466894.0579792963865977063361596559361798 1.4686075962163305810587392745226520 0.0960739851031414179133950779759672 1.1010077638674476859696815006600869 GT 1 -11114609311.3875172633488987977728000007843735 0.5481748029399191618458015954816007 0.0679487043428243918644020606142396 1.0703674275523231486640625150117753 GT 1 -48526765402752916350795279332602.0651244882181682357504173303661471 0.0968064403861551669849847645129029 0.0882246105832023382472905613062143 1.0923616027747887755058508083639826 GT 1 -79331014060.7566915125624177646981700832929666 2.1092618956376619665328248440438474 0.0811295836996993542416275090428591 1.0846101716825331669772355502732788 GT 1 -579344478807954957446352200195187574.1762493693972296720342899423003948 0.7030220655949877090611504055971698 0.0915652012646210980240475638136883 1.0960321617616696143837153870345776 GT 1 -20963420645691701345929281382798517678602.4666396878168519404888366227873581 1.2471304988866547801006386061686588 0.0646972654351329145416238709812620 1.0668850218156940565339009204298661 GT 1 -3527024157103766052949.1355922222730218977659835313712615 2.1378716520118117303349929227753293 0.0249734210342664641496778104951020 1.0252905478781745229768808770645728 GT 1 -24254924977085747720288178.1187866134504769549800339457115870 0.3091802354485914287968191804905111 0.0483247000026705483352256194572179 1.0495313738002379810933457478652381 GT 1 -1270200494724777729849264523988.5302952388597750384292820213058257 1.0662304307104980527990045642359066 0.0517980372409130423772716724167651 1.0531877585319892486038549919937624 GT 1 -6627619410417881562687318110536.6891080883211543354745535111662692 2.1960518623167342685157125680571873 0.0383119202880760212904083190182274 1.0390651223577559787808658376547027 GT 1 -196547170090807.9943997197171658540629199246769482 1.8816131038412608417054830368763069 0.0760968862843820459743400636106857 1.0791480681242804744576618888245944 GT 1 -21419189822068950520201873700753585098995225.2540061584493333854553404471522815 0.4714295972804684609939505920419621 0.0570380825695624784154923341643134 1.0587293816493748552588423027816035 GT 1 -698750303380.9651666963203726558925096250018782 1.8734766921354244350883215897438197 0.0931042370771646613889892190776419 1.0977277605840374189953697754504681 GT 1 -11591.8923046523684323169453902631135001 0.9654369676843085611205059853183724 0.0771378331500424640632662855516328 1.0802753873205587476037081074011560 GT 1 -4099341690989129176.9892916957090780208892199267046766 0.6006531721382968722206969564906075 0.0162682062061969542473422174246680 1.0164019863658172355776444707483948 GT 1 -79715894864008823495.2181336461933802385573797134995040 0.4726751066061331251093617433367697 0.0629369999354530080576567247701844 1.0650047630759368290228683394319379 GT 1 -6769873392211245241263969242.9937789493643037631231939990756172 0.7875993437352972528652159425951690 0.0259707793764967468247677072149144 1.0263139751494650789684455341978807 GT 1 -29245344.6317349535282349916232885955734365 2.6375287975544775230863080653144347 0.0045585902809154339545004292808731 1.0045690123389130503154873055723967 GT 1 -947450962833833229546969565589123272633.4066017323447852670623984250462312 0.1366811994041798070673937361583579 0.0058370530369913587927820547330516 1.0058541552144203927989305700845980 GT 1 -5143.7582793166219062495226783539152511 0.6144034945713161650702360985187462 0.0577323916818754632516074774939081 1.0594659594869499053776694761322613 GT 1 -4889246403896.4912575180716732490970785709011688 2.1339421322859771100712082189782842 0.0846504503133262481692347346035041 1.0884492651427656408426950864610752 GT 1 -388176789309620385.9572148741996482215049693360682660 0.2556549070896781396437122622472833 0.0859268623246859477343261949556772 1.0898446913909455233669544765114549 GT 1 -158356709485.9520839511501854019664385352693099 0.2762609284555448144041513582506462 0.0863053753320508315789656734497241 1.0902588720331192718669796900116192 GT 1 -167199616.4908339791446031600278980094995545 0.6434933575335891441940337777287090 0.0207964266520957927367790527291017 1.0210157179783807688556632859709574 GT 1 -3026941340308.7023437752195726980426724902725277 0.7783211266970168923900256599277411 0.0385102013045683482396811342606667 1.0392713237907290841575103648677351 GT 1 -40098417584458011551611741410.8510295822180058982282668953842266 0.0597517390176206131366392325582860 0.0932950002417562962806224311134471 1.0979381301088198746883893762865997 GT 1 -2420314013.0543120190125236933051369263376385 0.2326529722925905488659867718170637 0.0630309879280596740380238131760276 1.0651050687186118631077798022021999 GT 1 -93370037605091906414129930.2332821064024844057063530086520110 0.5946655745881290762848895491951054 0.0243608371831499515019768460186704 1.0246624711573577573446007298235392 GT 1 -16703391949240325584806631764961237860.0978706320124564478632832745536974 0.3546546361577008298338508086396408 0.0926597679354032173360492170163259 1.0972377811636292567438155846675284 GT 1 -7351688657212256269531856480788494347963277.9494114844113025015237169481551694 0.5954523884384793441612538731466804 0.0655182342231702380349870729971824 1.0677631645542222146329520311082069 GT 1 -767479327068774911496841868499634315029247.0371195249936382507248344439622270 0.2746477201170179877674194819937894 0.0185584023549942260304713192458513 1.0187327701995240940224969274535466 GT 1 -57838294602361157193507100027242450398454.0199913175569149044859693180343925 1.0313719898553472002992631454323291 0.0764720061054961828259631925004708 1.0795541669765994446927255478037574 GT 1 -18112098528.6671091852790446124414886130205361 0.2365874680050541251894403648760917 0.0641515483998023024256305953655091 1.0663017262970442021907024302030795 GT 1 -2803115047056812625081724345163.6692786963882642248687001737521440 0.1446389683212791957909706875216945 0.0730066127647284171048499710521845 1.0758088469527594004912894293365829 GT 1 -262698790272273513294515.9541142079936848324764859249041642 0.7558920408144095587741449753296935 0.0236649163783224408230620645535577 1.0239494281081650139666972803800642 GT 1 -243729544904584.7141454952173480860180742793504566 2.5630782368936712636824240484364622 0.0771482372796893765824200583103059 1.0835958890664457648942248244819005 LT 3 -1367784277508005953194392834851652491694956.8377946978583213058746934747911028 0.0750819651528849108969480331782830 0.0915462448314041284480282423393351 1.0960112948425876206527511322663139 GT 1 -770.6605373046603091970633885516119642 0.0355036474532960734601006711702442 0.0236790387326156897179296187569971 1.0239638928720239223348631881092957 GT 1 -877642385531310552246990493127148457.2745950612239302039573005948687569 1.9409928587097050365238496343059516 0.0193203692793339936034453341592437 1.0195094469426605783484368000678128 GT 1 -18675148696605729420838460.7519540717781238942357862249060968 0.1911359231122578463452915490136099 0.0335345545694314702371379083569711 1.0341097332433721055746991926576898 GT 1 -540404872472660898849318244476234.8942087379871835935595831936218304 1.2210543347070843238780976535149380 0.0844581792472477962742734516676152 1.0882392351323679145021162391721302 GT 1 -55817873068564686767341.0645605861097514050117543971768020 1.5063836402284232101828054141712839 0.0202624086807056593070593543528522 1.0204705071325929183853459524464207 GT 1 -1301460105622692705295851856788018978.4047215225320213598649936727406515 0.1861354975594095097661827603748512 0.0145964916228370131965080693438535 1.0147040685202168416837724134435556 GT 1 -18.6829066609704419038099178613006963 0.0276709269800650427187603736620839 0.0172324555198560865288831601361745 1.0173826624048786837914784405428414 GT 1 -1710177705569692199503.2467479302395826554432572758247684 0.1863677399674032651249000717298878 0.0612470367723535307229587793297733 1.0632029193413747994617960855118550 GT 1 -1758647183.9207305151822476054113154646554960 0.9864032717056388989471811795835549 0.0035794904121051032290557124585146 1.0035859121167769892207525803816269 GT 1 -25429464750432115220424794.6129739599759437035233922756886507 0.2710293075321877449981900657883943 0.0310391434551763829328048014636212 1.0315310636298762416450803805253152 GT 1 -116654907818319251428529792762661481.4625932850633803252036345544525393 0.8052075970165711666810499939008078 0.0430020870981036661029432782814148 1.0439540684073223090005865884689985 GT 1 -129570340641494800428026904701.2628855200200015706644511614036009 0.0610664292338868929960417084293010 0.0225222940775634891445308477856557 1.0227797946231794371465317960631069 GT 1 -399077645372541323177530893205387716.0159285567053995497226566791628173 0.2745097871836408618163164276032760 0.0636221334260506937972118266786209 1.0657361803662737371782968860174075 GT 1 -191888.6617338205086383527051545463787260 1.5010745819142165120084991554381421 0.0390023199949063781377872441662918 1.0397832841613833599679449667940731 GT 1 -62689298102510688499.2602254887211903741419919689848553 0.4121023379191111758833279964233359 0.0374148802382496648819509667776093 1.0381327806143362985348533557428409 GT 1 -191759972510975.6202275458352015780665698379724678 0.4668496349189604898922406333425844 0.0040203459100135368539732918786424 1.0040284492266810182746056374765299 GT 1 -3002791.7559330560242312893881637894664368 0.4638142877256131186779540544649354 0.0047373277393391132281547798863196 1.0047485844415896321337684501502168 GT 1 -8161728463907484991543491743046764517480240.7661253241398338020390210053978759 0.0362502759395899904186557393543327 0.0644367391428234338109996797532330 1.0666065130452839850446995805345035 GT 1 -541810116080918941702454436.9607231386366371665194538029581350 1.6878082800881729224199164450675483 0.0082174459245036340254799832835457 1.0082513952456594839036696396372922 GT 1 -178.8365234409820164066245732857128213 1.3417329647494552435849728838544127 0.0839542690274631203709864384851188 1.0876889909116927620139229263766893 GT 1 -439135707487952077395.9838672525315973428849678896483060 1.5278072606670300649839930376981321 0.0729786504965501240463875758706899 1.0757786829334273860570274848954707 GT 1 -23615653499256045088066115626262649.8493636002438743414248094464225974 0.2459214114796213417876621491279647 0.0933342112096869303498912235761005 1.0979813766066507239560800190889296 GT 1 -22124156071834008405350.2301803741020504521876068768295546 0.6204288977714630173899708182229020 0.0394796440543545964408754223012414 1.0402801039261067221381001477121206 GT 1 -1045820462150468473125904567738.3393861972920077003996249800414948 0.0493971404093848029820708424828698 0.0989942990408018685899815634572721 1.1042436940251174816147211999224863 GT 1 -19779898240267579748812366387033039.3900396647806916992355437666154614 1.4531487038972923849709511217742858 0.0579029758670307883573846206913794 1.0596470116916916329538409864632986 GT 1 -249234432573135461870984658943229.4718733140609699766059574368387051 1.4856711082822857524683714285544467 0.0204180478541241524475839603650053 1.0206293777713970368224020383362894 GT 1 -189989604219771425050752033.8642524812774683568812210118909547 1.7817237940598822516122096558500208 0.0651263706010325426320970001461920 1.0673439145508372940676164555900718 GT 1 -10.5505591738177505908361979487923933 0.8515094961136758779358382286501668 0.0100668441368740421540486861855538 1.0101178574632098239529316608812238 GT 1 -528750805245591601905986797114749579.1523734005436195663553848676290274 1.5417108108137098123199567076925574 0.0417300686226467587688844007453355 1.0426257751701320065829211576099388 GT 1 -86296884868942918893243717834059.6462324785146243623231578329128852 0.5732001334424908452365008695570921 0.0676736792216503830242883620508601 1.0700723959871032689375034582519544 GT 1 -98543763900372372949926302144368.7045273398594859858972048845632547 0.0930229816035059976595077645530000 0.0623235469279096560139088022052082 1.0643503222378654129317183846319887 GT 1 -2194397514502741420196893931151417.7481430953622101757920379294451036 1.6744435663983659001437862421697713 0.0802699406180441528488600271349809 1.0836750657085426011022825155017897 GT 1 -21099392129701582262305869137927.5010578332378397895119145945947208 0.3509993337671712812235807027044558 0.0612605443680180341663411084055309 1.0632173083162958709261300314470091 GT 1 -1003316346625655884393.1632182337051076164635447125803974 0.1924253058055857216342468486023704 0.0172592838149807066721674951487874 1.0174099614965825335581142082281812 GT 1 -1669437754000713.6793824363108029027948980969575875 0.5790638230855268219752721592305961 0.0222384140579959835258079884874698 1.0224894158212154736436210985745999 GT 1 -3705.1020797053454374888350443205113377 0.9416181161351558875650547577230167 0.0139704551832434900740544226808884 1.0140689605112255483009981025274178 GT 1 -14034.6460223244597828478144515124158090 0.0459715667259725491516423193767560 0.0711908196535642602226224862362113 1.0738519645533795828516665856906406 GT 1 -776905490078375382541746419480752621634906.3558772219364759671628158063102153 0.7780764814770052989481731377381721 0.0105083456501587348610243236730587 1.0105639481844417612251994161317500 GT 1 -54574454643622051085618443026219357.0254723206251670336842075179443687 0.5656229707633835618709141615687491 0.0595962303851867700333227647205569 1.0614459538014863702253652845375137 GT 1 -1933357529764335198609704053178295.0377216560179744334496905745189816 0.1956886112957951502588707133520274 0.0737679871014027935206248218364479 1.0766305218331664750304885887045121 GT 1 -4263922766513207466956565418378853.7858121715003653953116235912598406 0.1392164840033003211053348527396248 0.0063222504547717065443282844549023 1.0063423205168694827865517758523894 GT 1 -33190117418358922131.6415220980362692621145917431190406 1.1295175478064527597633018345700670 0.0461337070934510294460280176284829 1.0472317715423736103043561454540472 GT 1 -226.9142027855206145754807244032737134 0.3531625930278722826741712629343823 0.0883179394136353077899499321924469 1.0924639674672188658638567642452079 GT 1 -27185278132776886714683470.1189271749914046361850134091592903 0.1662016166458492968855898920215810 0.0069831280674049231126132270201569 1.0070076242126318265049173283758085 GT 1 -34508.4216912565774484160625990574512090 1.1506800645964495755802374408271059 0.0669103776222842336965180904149871 1.0692540244654410770106043494555534 GT 1 -69454554068349046983885539385033671154425.0433699259226504148482188848700148 0.8577698738172069849036125169789239 0.0311027727466572925285963633994213 1.0315967333422620570050387339663470 GT 1 -340360575119167347235930022.0203743883779665396900309548229586 0.2058266932366795964713936559160093 0.0425042016256699533956200339119238 1.0434339460577679560113157139711706 GT 1 -27976806145795075.4044823354707084165660411471569333 0.4412902991364503960051844821623742 0.0954898419921926606533341912621798 1.1003617436871212269228229783165275 GT 1 -41680092346978559531.8395315132809510678514398329298396 1.0500424112052132208139016699892865 0.0627783203377625789043026243041526 1.0648354402406323491073726623099897 GT 1 -163591014.3877609188243078953118057840584674 0.2859579706146191633246876595902930 0.0908544110944465281808039834788230 1.0952500338170221993110630436258976 GT 1 -28014574200459272593499.0170661184733722500662522602439729 0.5488431054558067506458290295998196 0.0175270686983292222391855837702297 1.0176824864562461786953578181797937 GT 1 -2940090963107957.4706284933085968934459471289673346 0.3729291853850129991426775011461608 0.0246584934359525139392795074581737 1.0249676061694914416122760672398791 GT 1 -1808384169781919259374489.0257943779153553687659798295550492 0.0219471849510929929712876233795909 0.0684487570303365241281708381946933 1.0709040792139823382284218352104700 GT 1 -1015941036171902882943276835393084.6111391292036266466585685970760264 0.3174787575024999550040361767111984 0.0597695742983496944454227923222525 1.0616303000332900072962065404528080 GT 1 -198825039074776108272171.5519790046842052938892968975727663 1.4210676499551204958725298968411914 0.0793252283548060005639532795629508 1.0826484303397508734109008349027578 GT 1 -745284285265.6846837215054452697525880158059700 0.4937738937792846939547050743155135 0.0945253944445965964804065993015092 1.0992960467174128846998650578609396 GT 1 -1929474702317726.5455418824603123565817948566555986 0.6299381387968384714047562622012744 0.0549256585225679620997220893650892 1.0564916863524904231986895723721928 GT 1 -563011067623625137.1355972768156811697229714606744169 0.4713498590232169374213153010032659 0.0670299241427656470006110902063061 1.0693821516853344536628614339851267 GT 1 -8845592397444025480402.5496967822971027816493954902418223 0.8755625816759047581607971441525454 0.0606829185273334640339134467770999 1.0626021768253249852491744504230178 GT 1 -166388768837690203.5879851443510587395064198884195727 5.1882939359482053974887284637131125 0.0668040798511079803010271832070577 1.0691401107380193963483947815017902 LT 1 -893419.3307468258420531566209748240007104 1.2306433183462848950112129464433907 0.0923637828310069926974520554702846 1.0969116225436150912118686315552020 GT 1 -4825763640317.4518184559528446604753896513160683 3.7420021859645338024723057787705120 0.0136117156804962055149563890593054 1.0137052044130969526134251472748403 GT 1 -10071135581.2169875873520646128237799794975181 1.6108544324133171324399149640431283 0.0172594237175222099938514829130945 1.0174101038561583173459123075087196 GT 1 -73970967443872886353870959557239959691351.9976779106858550993117511722853121 2.2589942730523793544511905158434573 0.0426868174774363761344592437595197 1.0436246866007066525732986297084648 GT 1 -218468882740884900001.4003941171159164986733540105884392 0.0681852801451663386576771063476215 0.0962396768632550345992298261137006 1.1011910830164521247426529599287468 GT 1 -77509667308212138.1565497718545398826021466962145240 0.4855965977735221594564921013315242 0.0035111304005236237669247312617107 1.0035173088854186574575147443638962 GT 1 -90490509764194122936243319684145287382.4219560191155188561812917671265692 0.2396195757018114609869949119568772 0.0307601588542022321072719970812197 1.0312431836355770984828257036938945 GT 1 -1849067930830299480.6122094660925067864503810457738918 0.5328738865484737134887146504903002 0.0747233112086836339059014783988448 1.0776624631804430834670790119865942 GT 1 -1618353099252965101531570260323570941525.6057480798699036625243960711415662 0.6600557799802697914885367564338586 0.0937968543975482195273820537004920 1.0984917755540073247035126904342476 GT 1 -195397.2916944441825551226846505692571531 0.3319496721302468689949654266664283 0.0451573006563602145305895664475210 1.0462086647972111316183741677923541 GT 1 -37606101590277117105282109934332885189533.9228949122338107812422986904985708 1.6877477516040429687959210757644567 0.0984499182834907651207037232494247 1.1036396841197447111985969523697121 GT 1 -4317.3738624235346900212719116942182138 0.5069776253861405031827310372855757 0.0394829160431036464113327616504076 1.0402835104070852699891263274491657 GT 1 -1138853444557642900851304760.5523471854623056458711909927262495 0.0536510567881620992502002117653081 0.0773044409939522800257377687833671 1.0804559374513167926767520738701093 GT 1 -29996460211936181698585583867143.0302888634988359677556235082823003 0.1851449535375517990404672342362562 0.0694985624802305466390022941315790 1.0720316580114285415896095271604374 GT 1 -6801700.0687072241224312290390413787134355 0.9937820295334529271799776113542214 0.0707324925579468654358336381476902 1.0733586295818736253935918390549356 GT 1 -71627899713079985145048603.8335126440261337265396700527366475 1.7642669870705809545004209078069381 0.0716733973165492104406679067210402 1.0743716655663655206933855238159256 GT 1 -163248546687178070636815839697088.9078019906188613762623776625787961 1.1142522426716789542625578976889409 0.0168597893743296580998681038216826 1.0170035335784905425867426648782259 GT 1 -745449580273983607519168389294406.9138836005194458922241890540493059 0.2611954283673415175628459001544791 0.0375601683528618641562023876576593 1.0382837273485921122218303108977196 GT 1 -922244241005575681976600497134153126.0191751345451205010183826054180979 0.2766703959660496009925784907824319 0.0101204766874047676772899566738231 1.0101720368824124269536038106153504 GT 1 -124428050227008329437779758801488.9387463358245386630750773226268180 0.4503618766698335645085010622564324 0.0608752195977472001473104109493448 1.0628069221251274264193701814098681 GT 1 -534570196697543911485233807697.8221420132153148814447645387893325 2.8248047471177860391946881327881624 0.0131788092526343660579743928575253 1.0132664203506062288342967231663768 GT 1 -15770330136164756735721050463.0013532052806812809389207643696052 0.2545410945946360137437006528245537 0.0713331366069614180993390380156982 1.0740052014730753334111788110592115 GT 1 -28868040528525473053174.4206361718767583070506614507919075 0.0832438957368216086376665834537433 0.0956687957519259167139480052023826 1.1005596093087851676508767295820437 GT 1 -121827.2217750201410304214067567106174514 2.2423094913321187722288190633069940 0.0972528732027730274521776499103934 1.1023128015521748418128245843069702 GT 1 -114446497804.7772031513669681887419599056079370 0.2325447635331555479782979061957592 0.0577606036048870060114298010132417 1.0594959003923889311035409810825366 GT 1 -48099964327633342907935799150809218485068.8934642269019614627612190191824887 1.1275435597794631817572079918157030 0.0542525609175500379078697331277226 1.0557797232892651849438185893707718 GT 1 -2516466410368015341.1838933143461346224485572806235760 1.3274041268181798672914945915443802 0.0459242394592109297090643391562098 1.0470121971221723118358016049771234 GT 1 -463028301613543.0762095118666937267718822962718840 1.6729089683580782788799317456776765 0.0783978188443152157428885819397730 1.0816416223379237661893889292374762 GT 1 -146269606305207365209447.3833768224772786253540902547059212 0.6907163968111931151794486557831660 0.0173426439675853399043767473682739 1.0174947892511560076376100819571076 GT 1 -2554839462356427646.5038257975546605123724655358691192 4.9812246438571202199764248796308980 0.0050938468099417198544765441620067 1.0051068646737559366834476983810272 GT 1 -9615186781526490153598554930789926844724.7050702530166586129054815679958680 0.2503514241459224036430205438508838 0.0139249176921942240466816654825691 1.0140227788934441879688086237209633 GT 1 -638074198683169587728299.9631944572282273225200372375655026 0.7643391396032405579536277978182245 0.0714155924057556145624170350469998 1.0740939948422186907722477165215950 GT 1 -19818015928026543179566752036603244.2724176266060204690183328234494227 2.8694001086576016430316814020027893 0.0270714195945007985081850513238919 1.0274446009233461388381714482263869 GT 1 -46430352901374221269941305.7786574579351282908565966499317529 0.3263914438155322903614787193047197 0.0408632786498398140725932092701857 1.0417216476804102642566063199965857 GT 1 -28059969.5146376244490309222604036007784022 0.0307541063379208884774301778889363 0.0819350503629114994243168042895888 1.0854871396257389289129142029245577 GT 1 -852247235093936907809554575.0151417712048988703966618838259002 0.2749472643364647827909263677946713 0.0877326380527006101194797200399761 1.0918221718408772112895888603208300 GT 1 -46310347881686726776424736419561337838.5470834204106729795664676239641119 0.3733796500566149573042583492763042 0.0507912372117355756600324929593069 1.0521265227013790721063180221755378 GT 1 -1295445544.0702330676821456538738368963467639 0.1145257246080001372640947531658831 0.0033067330697113097862352785431538 1.0033122123939513287521157264027985 GT 1 -49.7070653663953555895531048791299674 0.3347119838010592101308936429044148 0.0530133791316811077763506880983563 1.0544703138068207811629318882064742 GT 1 -62870974391911182733143673.4231191625587473927561114868701673 0.5586178998812155146347684041724364 0.0973533870684291065625595568821101 1.1024241499672580021019943556804702 GT 1 -1457803695.2573066110075641850231330263634020 3.6336908212798123707417579676517414 0.0007199813869361166456309867695816 1.0007202406980084515193724898861246 GT 1 -6002164590094721464361994700952744.0985456487879483039408086423132894 0.1143425892068322920671166822307854 0.0581207360450126270339200788897225 1.0598781825194015727491444439883026 GT 1 -37813359062488859361919992674814905725.3814100088894448532516794755847974 0.2944453530001966989126397275216804 0.0721502899141840025448305424492745 1.0748855096498689503428022020514607 GT 1 -58482041761257468728362821684226782.5222253862100389524024811712351399 0.7730917176657253856286449165380699 0.0324153673638389666078378891223726 1.0329523823110354534446964787177141 GT 1 -612091895.6016172196982831012097287602783440 1.5909941030389143651538709559288916 0.0265971007116972942959318686178085 1.0269572030703679550813625139779716 GT 1 -144894166768968826357255851632084.2800024073261458932798535519751276 1.9333650565178396961038629352797463 0.0484837225055869789617527714350598 1.0496984851989717697497813873979349 GT 1 -1537274904.3846689844026038452518762072457319 0.1602872188243484705625826242542014 0.0497325972369962246706924949776675 1.0510118574020189405063318004189948 GT 1 -2559378043.9100875163242196335313537667594046 1.3564636661425729381060790023802348 0.0076365393642118387484737826964889 1.0076658470323903944021837581460944 GT 1 -4387863578523892365102931.3722546619417724447180609172334429 0.4630454542657892170269093953706250 0.0594534838271870093107446686733430 1.0612941724818498103233352485442636 GT 1 -264393146653723106833796171161.4470574580277333180255649783831230 0.5216438428071246888180264147252182 0.0956549751494927457608551443336573 1.1005443267477484386647095959008455 GT 1 -5.4530517504082534351824075469152399 0.2223067858482172079618284655289515 0.0727846843699360714017483554230395 1.0755694689415256720388111875351495 GT 1 -12542897959022990539665171952.1811508068073591535222555617275221 0.6965951651868844557018168533714857 0.0000741931820030437142260831126421 1.0000741959344533144536392960659385 GT 1 -923223029067347758536563363730437208116506.8635002690465867486545434415085086 0.8639231789614970307979783676949813 0.0610914752658025385942614769922071 1.0630372222677497032961429661820872 GT 1 -163183058848452608554710.2352715273766872635486801842704457 0.9870528604024372979939600138452565 0.0991605000639580534146782658170086 1.1044281727178985928239706016761076 GT 1 -8021803742295623167349439893692.4875707728803153891761631290196617 4.7822774053846388865621308414153653 0.0820961856775849229036622907478171 1.0856626712777477000981106763872956 LT 1 -64203065.2993675987080514111940907758559953 0.4502817407488054019298593467844534 0.0515412705762650181597274823532375 1.0529170019678078831036324549613234 GT 1 -9959841506217129213735786008875142981.7279701725005806504853539525051030 0.5650964833747560224716210481040844 0.0525320291030201956364750275827920 1.0539621463995768894310799856071514 GT 1 -9653737280297435297965918358328299638.0423888688846263697290756957610319 0.4544613348428117211761348343919534 0.0058296035112016286797542172723709 1.0058466619781234725180210482602234 GT 1 -35800446882586532882.4020504689108229897778264226544163 1.0079539580083703537037166235830880 0.0153516489928783213483634063128206 1.0154707056048499286991226284116190 GT 1 -611501133268774593985397435163820655631476.8561527953264953130134265717865409 0.8987809344176341074959941526459259 0.0901225671849731673224689172099504 1.0944453777569043294277276545928609 GT 1 -30159002248.6508502825385068099219013927958902 1.6420578060339312914694360208568395 0.0121946914521693857019497066383771 1.0122696567780561000581800532243762 GT 1 -13453525238286549562042.7260572515790913008907273542360059 0.4322781035524247043112991962892223 0.0230428182888250274426757868663382 1.0233124541933316821508065975698191 GT 1 -231589652662536323447374711195256497979.3136194237185003200506521917818442 1.9931855037951290303157792311944932 0.0064237502932036521550422857351924 1.0064444713627688087962821195576324 GT 1 -371821883800802283152475.0725253880544693099915483427534507 1.3804625714811950839921077687203818 0.0500774880050675802381011359299245 1.0513748640353875726690229879803188 GT 1 -3451795256648915292860097024451894605.4334238568279505409244050592998434 2.0237638264484160315750799407683925 0.0007255964885867194824683931459516 1.0007258598611280114257843521340976 GT 1 -30040627886939684241496672572750453824570.8053974207227333436090927382672296 0.5974522478519776384423025607646733 0.0190845490197220923339801798880131 1.0192690096954959070289374866741493 GT 1 -9099167815199890203081994976888423067263.6796449004106769455167270946036315 2.8645346735707331761061495282381374 0.0987915315963367047820541718265588 1.1040186736598715148707907908734227 LT 1 -29859241298252004.3560361420193557929155212333313307 0.5898207752460342435946716267538724 0.0994046194939468373101957436789880 1.1046992004793053345866790344612879 GT 1 -6920814932219158366543656653409.3554947910452616096798089836140678 0.0312405954083548975793559024494681 0.0081880447094422146345812214473187 1.0082217508652936913208206663879044 GT 1 -1861931330573935675.4330360011062021369062784471663601 1.9853565665508594932619217792902486 0.0544771285188232306172661412767742 1.0560172013494602481110563455075813 GT 1 -23033358085557433626486.3644898701868995698171386840527538 4.5933875142828739803304006909377336 0.0491470014759732037516547616159268 1.0503958040693135459542535044232446 LT 1 -80233905088158173229432111033.3375542607693514386062096531326254 0.1498153757637133602936318074724926 0.0552654946013206503595279176362203 1.0568513376293669878190179382123943 GT 1 -14575102.9396517682376825683697529293093048 0.8765316605226791868934970339177669 0.0975216224042163037211922306222760 1.1026105474047286847583239472864904 GT 1 -37442483948054.2005015453787671934206533377976375 0.3705974083830837608177513445460641 0.0320948913509921027341642280762230 1.0326212247658005963729585765094256 GT 1 -96194392095.3375753798783563497079627444137965 1.2989249690586355051589984758480461 0.0219079707358211546555390996291586 1.0221515139222698321873741436392577 GT 1 -8150416.9220381607257808620966479651706010 0.4154196647812488234418026213781104 0.0656419648857887659760421427213107 1.0678955789674215925167312941381805 GT 1 -1643075282756620288177478021109.0092562162191257422824174241267118 0.0234341009701076680143603230108614 0.0791526199481958863515764320701024 1.0824609675856845809709494673130117 GT 1 -468980759695624471308404284283907175631160.9607761698656883832754543034552795 0.2015644706728552607764725967666751 0.0167049437306584519976103229869302 1.0168460449017991859561470790381642 GT 1 -2.5204911927879021031717374581841177 1.4687646932298172609913095935857426 0.0298005993787504878011845330423361 1.0302536609600701914205636363789110 GT 1 -1254543271921304855.8232662804338812736699542491245983 0.2243411058375203716925086550572387 0.0579353303551954331233472033979763 1.0596813553345697063823448465820250 GT 1 -405567672.9175066214204434053414716137392765 1.1435151016729538541606322177059361 0.0638501031034218423985894831602909 1.0659796690695599623153991466183915 GT 1 -2360313581334778534868130554862330686907.5017921050606872307413902893783396 1.6321627782640754868237410166134885 0.0104414972176074633701254868888089 1.0104963921072642502595248906105963 GT 1 -5425322241657775783200.1257744729618474847326971067693048 0.5760668781615696972681912714737334 0.0833849417201383828551374967654047 1.0870676786328703188139888102280570 GT 1 -80376503502072619.7942505071023484840351159039107091 2.1833187425656787595850301831265782 0.0953301633574506371644191424697770 1.1001852232351719356967328329557477 GT 1 -157414712356378047414117328823581959077.3532571708850467978330281192828479 0.1775396810558390965175542163229557 0.0085170957350429674946723679631690 1.0085535734654830672772242274063701 GT 1 -6990009413534137.4137992975984757594803045208231202 2.6483495067747834627142176922034762 0.0581938816902687320349213686643666 1.0599558447935600394853702857438766 GT 1 -51730.2730792471091594787354158732054434 1.3589890804735991897613753956697618 0.0994810160628505574997332060549658 1.1047840330368127569673142234500233 GT 1 -97701263381771501731866023238782129.9506976795237863301508300644580542 0.1959561462457921706358719760089770 0.0602712376977470180680669750481683 1.0621639960991470956136656506796446 GT 1 -201995796503116182638.4017982995569929480091091493820258 2.8057863300742669298936655115226079 0.0955754778028552394482633799487520 1.1004564246191235362986835404784024 LT 1 -93460753755016008.0845171381194470307040833994933103 0.0397703602221156816231931146422178 0.0252504577959798820089423442801364 1.0255747207743032703386875725252550 GT 1 -51375.6269427498604774498964643267045048 0.8011561778414335516272292195929692 0.0820938879862612720315605277836887 1.0856601680868773492388084202758376 GT 1 -196467.0800317764735258088730994993936284 1.1785721609369926936719542163787571 0.0213220054022053977297790204638147 1.0215526031213219899204819196693822 GT 1 -38800658.0112691607187189893712174117548589 0.6222146239126749570232370415620193 0.0893996269124701385323561924823433 1.0936511463653852437661092135733084 GT 1 -4622017668829954310294767412397001154063218.8812024683282994071204295803501803 1.1058609315079756445980747797455526 0.0305043658210673467870605258055271 1.0309793074772514832268311827150373 GT 1 -8518647.6799119491044701584216470723225725 1.5087769933591881245438461877182623 0.0287502942462304702294750397217649 1.0291716802565475950345488227899730 GT 1 -294.1571000592691780897312139430892980 0.7730368293988114664626071397510940 0.0159155953349574457539150009263778 1.0160436085099081096325736580886689 GT 1 -873588263561618745066374677933571973055.9201893055968755678848496352102317 0.5904246948412094062977375636939560 0.0618762695284814350813566308829366 1.0638734298568654820516327780594982 GT 1 -24877694800120426259.7585285577272661658890990408689047 2.6585683796065063501856426984353405 0.0518823738710429553792762912727817 1.0532767062290754446676683334393172 GT 1 -112125077645869038393156979537.6011298937899765825109567221318243 0.3530918929912710410601360370880479 0.0314675904770345195606208777440877 1.0319733330677581620822517924875860 GT 1 -1431894418323737381481510821766168048.8863038507517113622579856568814441 0.9760097710948021289855547051693676 0.0750650681742593921110203693061093 1.0780318879161374179842507321363242 GT 1 -9443975551475672896228136553.8701550995492600139323416179442934 0.3447221480382530126415115721316321 0.0015684106339645237369263722725535 1.0015696418774882521298239395713026 GT 1 -38655283.4186320216436946331023602502493837 0.7142614000971969527350186311216308 0.0505586112325640812924465439135513 1.0518814791580544470955269213932263 GT 1 -41305684436046533425900260864015.3484318206357957690585709298453712 0.9697117708277546828922023540583540 0.0057646848279558775620695190297900 1.0057813647574525529865769347475098 GT 1 -901527463405724167.5053205662932029113256166881507686 0.6378304830674080714120237785212793 0.0719664183524087699053815624600712 1.0746873597304253480460793715532559 GT 1 -90475566877411082650536638334214533322.3065761501278199956620396506840830 0.1890087517895836227281443204543130 0.0092881296569794895926217945942092 1.0093315333014191732108140227556807 GT 1 -106999.3469330937193912508408742117561245 0.4826092567590850133100987567987393 0.0590148285867607006346167942636866 1.0608278978490409410986570249179338 GT 1 -2126296409154040315171925748208956025941987.3029876806765338311544107234189618 0.2410146256731495183211242990214258 0.0512288311034103355156984392076371 1.0525876381137427938647134714579443 GT 1 -26422958906065121657855595892679491.3368541634344692315340658620085582 0.8496133069652041215185810288601351 0.0408085450058989961517197020952127 1.0416645837800509673844283038852153 GT 1 -266200250745738192780235885837096760958.7129734286270912548531031791925350 0.5314108098655956560804239693821291 0.0584217674303678715351689823939159 1.0601978407951779353858167078407882 GT 1 -15471080152608121610051065273514413234.2154996818524514256753150981697877 0.2240535105686977300582409687118475 0.0888672157258341430013657650019002 1.0930666357309459353849344415134970 GT 1 -102916421015279519.6795142167088488976531139668970676 0.3702848013351397683446510660497177 0.0819318263978552603897093984074477 1.0854836279358560572870696257156883 GT 1 -142962198755109447133605349769.6079318183184120454289503279707590 0.8728251281469158844254731092235392 0.0660722624212922162859073395053161 1.0683562125058247889876474667554261 GT 1 -25192286374260884486.3091381139566677374887851788216087 2.2101520477874089139266002064646358 0.0758326003949332604527773841045803 1.0788620553457144357710530214658653 GT 1 -227545455978309298810832096927.4598023584868512913290806585514793 2.6485908778949926399866752839742221 0.0027420018349908826445793962352510 1.0027457680081670323228260593635020 GT 1 -116667816172808132328467559575541.2911505466779584985087903979854989 1.3023789285757992828353913920654286 0.0607098418821053777739440191317891 1.0626308399265910326707118488603689 GT 1 -1239346.1844084750507391662805576231627971 0.4029379412253103411669074325062874 0.0567130257884114225121647603545179 1.0583847221658791416699825339950020 GT 1 -247714.6994278508096538059518447472171340 0.3475943551526902378162051964411919 0.0325283280078957640045956436855769 1.0330691341015801853614563408663382 GT 1 -71240247946552150345942785723351360059137.6747944763237030697632596723133182 0.8885382375000760338013232441685855 0.0562049015425927235367429316902389 1.0578461931157035173180157346495704 GT 1 -104707614971250640006958434236.2652520276189297730413822666775812 1.7137616283024401215242611825761958 0.0917429735833887048742559062385424 1.0962278716964794537744090772259451 GT 1 -3040283459.5931101905029179920067216249419395 1.1002983143172631909480735221035544 0.0593544052536209269142353161757518 1.0611888365376019022549433328665771 GT 1 -1926328235148.9264180998850227986450748548964884 0.5845499402552650909935900694592182 0.0314759838776891851634373543141818 1.0319819992073125863739280891461851 GT 1 -2.8725714751831601546408679797854059 3.1497237516195787404576569083003320 0.0609128765819392330455371837856329 1.0628470208851453815126886561971810 LT 1 -4544115333160007495575648889980434253097.9321309857802620321797877562473620 1.6708258322779819257619889916810893 0.0131646176895626954306367895746751 1.0132520393653166471713631591277558 GT 1 -363112797741340305751670756547453489.6216906506082002136729828784853312 2.4864680419061043845653111077689489 0.0271797885423467375953506252385602 1.0275559914054177966128449292667826 GT 1 -470748148051540349.2541402324791836031816921922107355 0.7397355337535851302541411194976610 0.0715991090494066622863818135053657 1.0742916449198927421421092840216009 GT 1 -574078232813644202055.7799240760876641942652299391664871 0.6844981038814527024990543884567987 0.0522681844471581864967180637521846 1.0536837117359039677883388317665487 GT 1 -30250136402138522532735184943828.8043765210080451494420062777648708 0.3255113084804593170108678692851319 0.0751120576361090990999576622705835 1.0780826921985532671535817270466247 GT 1 -392589624584408831842997070362.9637913870722288093731846489895184 1.5451749649451822309891265757990563 0.0359137133541458576949657965140563 1.0365744794085517875127201205611290 GT 1 -4687169772415211113288578675977025913300704.7111930910369443831636558155125134 0.4204293623346375868030024532393348 0.0752754328589473437413566225041076 1.0782593510635031609227133368410481 GT 1 -93632218741848.8712195473737972968543224818621427 0.5483685486683731186612739321438815 0.0578098441103467648092311986776278 1.0595481607758150606105314522598140 GT 1 -249348912630629432740705515961642824170.0409491081272292411324842504288569 2.2447833611894114524514838470197711 0.0363413501240700691249572282243546 1.0370181447180407314248873667400822 GT 1 -167323751789.9028948380199517825965884684552436 1.6991737023602894077446592749642155 0.0468149333447461359439251149191848 1.0479462004190316035781217809924923 GT 1 -18035567134618941067868206749789928891295707.0391901340972652015835566703349362 1.0260001941267614428901926242279139 0.0769188742966957033576854949503784 1.0800381548386542729221221157505812 GT 1 -249419110204414294420156740910678393.7081665379020022355622430069425384 0.2155972554759716210125804331496238 0.0242755251721501635753205068497450 1.0245750328045993612951817049670374 GT 1 -75366760368584753530319.6287922168975675330607253859956629 3.7808635030612343427155520632110745 0.0053194946402474373914560974073635 1.0053336935281851073891826818590266 GT 1 -2487.2290666269805269897149661292114156 1.5182438380277471591244270674419402 0.0980083274027431774839025045403064 1.1031499911159472589942136410036913 GT 1 -729047768227418016471068797258652166623.8127399515633361810615381256541734 0.9881096673365864113423417811063854 0.0560340694006970274312860206173441 1.0576652039547530035316478663571262 GT 1 -14127188238017157.2161503854479154768417965216689307 0.1095071743231193353651731257993339 0.0144893072143637822819866170339529 1.0145953023359601541010957188558535 GT 1 -45.9258884892781037578229333186407323 0.0471991152991708420760484397982712 0.0773186357091762338550760824878602 1.0804713215336091778155779799824439 GT 1 -2553437455715024815107964344881622809466715.8579099943754363156023525408074901 2.4811138349497305092896109928665663 0.0965847710861773683268087328744943 1.1067315355910270368135904718654919 LT 2 -371999822259706.7492400524949821451907102725002355 0.6087857579778569034973529405708300 0.0935976762698868958132833680302420 1.0982720055799750411674211570753129 GT 1 -14700.4875683223443257046304900835987469 3.7578062746078771705839346081880717 0.0577461017412650940364732926091221 1.0594805096625165151850637684895352 LT 1 -18569481367866554938654292719469266010122.1997138325159621567435118227380167 1.8747471124940254256427633034135174 0.0700744290281440834283006094077743 1.0726507272505619934802268358987901 GT 1 -97622671220702064630190614.0370004093551738370252134298831642 0.0967457815081441327365491955539894 0.0092846775452038647301975448510236 1.0093280488314490665613648209744294 GT 1 -25391666.2383104074173263159848282180047129 0.1909769914144901499244831974368175 0.0882567353292238064716390140900186 1.0923968365750603342357646052381182 GT 1 -120466249433409.6621508867692765895524239231836316 0.0390865014701463291160417795382591 0.0030466204267234248103702089202545 1.0030512708224647255783687971675732 GT 1 -26086521418614863670.7090929804201807878447153645799542 0.5273795778121077737921254461269112 0.0674273102283716860311959090924153 1.0698081790045018309552477925130957 GT 1 -433845813678264956614688937092.3595701839484207818573832194192493 1.1941195394634686711600723853222171 0.0043166517125390299474398098690643 1.0043259953520625514883582060630271 GT 1 -6478888791289396640381936902975446184.8599335387582848912701096958617307 0.1976574285725838664930464046929058 0.0638383017810566461816041421244033 1.0659670629174684624386257333410590 GT 1 -127832393424144.3273737554996855604017611910048160 0.3378397238309881115982497355638587 0.0299259007151475706513470296535223 1.0303828193870417863035498491626424 GT 1 -7792930332347662183381142178.8486136059939555071972352260609632 0.3566234832091921366437254546286565 0.0947606200537478408280353799118053 1.0995558620304417922957284825587129 GT 1 -5296940873536740.1414205960063664341101305849817707 0.1214999772407251709361358688020447 0.0965340223373308017100194211940788 1.1015168258152906269265007410221393 GT 1 -12929297518353.1985720620693662728812810422118864 2.4880904103559746035024189048340851 0.0873337544901204124762293708721637 1.0955606344974158259625509779666504 LT 2 -10765374848.2553210453336187078629185705011594 0.1926665701384883175488421705051053 0.0265437314889958932382062031547036 1.0269023770987748509769083977341077 GT 1 -1656739853607799414.1347880678065636537230731213414741 0.4622905732410398434859844211743430 0.0843134781313633351229554744387666 1.0880811979145969280200870673841135 GT 1 -90548636.7180506679793567063822660214058419 0.0270478164668450921467807902175124 0.0161331398564333706078901739015498 1.0162646958165424087711283395564740 GT 1 -8649289538509106023693523615057.4594436529315387386080261605165348 5.4438941312376059868400150015237632 0.0547512545479482638254879373759356 1.0563071634248274688861094557623546 LT 1 -1448607748888639414523063869673560316307921.6549063058975031618392909231852836 0.5011290097354313004472397810237025 0.0135384420067228942252758564698440 1.0136309223544876619733693128250581 GT 1 -1062666070754895469.0572612045798959782276266740153123 0.1657828652077217479219747474476937 0.0304573191844830594031901142890235 1.0309307817351558155961254067965668 GT 1 -25272206718932618488195548546984809849017583.4740932424583981797920200966951418 1.0620401326724551585934279450596456 0.0853904459312597288369617890182830 1.0892580216409300021641985115740392 GT 1 -4169.1479024970673719043913577203328721 1.1977548868841104957787641212173305 0.0649185920625707203450791290798155 1.0671216861708299442576377801411044 GT 1 -1389476545385251169012864727144151669965.4894630081884015907117089461743975 0.3684999286062149206197422382702275 0.0627507490333202308903557023445755 1.0648060225484251024260183192782413 GT 1 -259550707720.7223883939403386487634406535493918 0.5262049081138068239768654451318952 0.0203228888583973400125504654887908 1.0205322400343976550746711610219677 GT 1 -3705349054485750885115581275940864556930.0752895182298073311976794251082158 0.4278572887801399392019461579452858 0.0642766109408852480779842527958071 1.0664353706900107391098992605587412 GT 1 -236671427422512963215648818142388865498960.2973969750330363745810285320939734 0.0176646733579818462961341667648110 0.0425019679745281165727473217110871 1.0434316132553261105392933945189640 GT 1 -7.6214307318189442270920861762302989 0.2920472373525875114254360218572266 0.0886606018220964794932313654979007 1.0928398954749219886386257470542706 GT 1 -24567821614509735606930734136362152.8674696416294258644233235712922329 0.5584297426088471508251245590375417 0.0418449348656265737167489472210335 1.0427456507126932317784555212819412 GT 1 -2426473196134815.3957596543483388350906955166180239 0.5682755659957178202412273754611192 0.0876534947987206645200606279452630 1.0917354211530144023870556728884425 GT 1 -13551651527149.8673678774776322184530493211853390 0.0957508922203952999718521328279569 0.0782519964845902895678972295094050 1.0814834078421196188938865418743484 GT 1 -122202956099024844134777634056961067936156.3306053857302592498448921396348069 1.8978227914112601652360795269713480 0.0027974505512515683970654664159021 1.0028013707287536212780980612970517 GT 1 -3867376454044291833772507.0846264619835910167833851649306256 1.9980891892006196429603603565576152 0.0800570879808197998027893904928249 1.0834436630174305551999330922166809 GT 1 -271044106480436923461466112981461973613343.6056039600789476447162021729137201 0.5027475350481805236822070133821192 0.0294727963085355988323510095100359 1.0299158461719348456578325149380966 GT 1 -1768763894708420772733926306658747473172721.9030131262496802055343891885856526 1.7539225267638898231701665869757028 0.0740185403903940774175061419063339 1.0769010665562649982886288231446790 GT 1 -10475982705950014128283533175954655.7776042301876316087241768960628874 0.8666525427419225808256521026306774 0.0683537156088601885298212382014176 1.0708020595191694180369626202954505 GT 1 -421854019775.7674362352629871458103470180111354 0.2594034268714848803135386710946527 0.0831096856486511696561092261175640 1.0867674274553566363005330156331190 GT 1 -2408080775774460.4244192088012893693443285453847092 1.4029409693126127630749901335732519 0.0057889448768849605910456303697567 1.0058057657664942860655871968240985 GT 1 -469363603909174.0878922422836036692732551137530548 0.2286595268869856987758875848620416 0.0416034839477848772934253813780460 1.0424936867984534699514177622426250 GT 1 -799214498.6533049193025699546806092500652574 0.6245604679426835335670194421191315 0.0273259904070286800738963872622982 1.0277062893229086104534398998653083 GT 1 -38319198772795449122.4612694993506054563886612404595558 0.8693460919429657542684519989751062 0.0257035958221681035216650760726176 1.0260397052301021166445042246128840 GT 1 -1138067464985683006370521399074175.4471860197783603086642907824751046 2.0098819832370384899671849801075701 0.0309570606883280219642874142291418 1.0314463550580221116360865604754216 GT 1 -26211958632.9384033570927947798259263239316284 2.7851036627578759537681076759023750 0.0446990823371141855761926529243155 1.0457288911048501123204320817382660 GT 1 -28374891414528246139992458037061419.3131782279523142011875695197853442 0.0819976674131745852319699686839745 0.0884541498987826601130487515048090 1.0926133843169745246532694948842489 GT 1 -771292116066832.6309448621461802478666425659214895 0.1152517827469336781821724443971956 0.0332056739167061726933893822361584 1.0337694989295526555969437840757322 GT 1 -30649756845223699114465387591.3748147647853962179180373252420270 0.2276982796774434381395240721780675 0.0257519471291586748449699107537840 1.0260893333582421639532666354814218 GT 1 -9176392906759234484365917.0658870821090432043169686398100763 0.1302232577933756645530476628379712 0.0751109080756378024781740656338036 1.0780814492806772334171717215193245 GT 1 -15133212120269.4041746139556424307632161821492772 0.2602843036088732397464798513062534 0.0244670250360771660148849793053903 1.0247713163494101889792991370450941 GT 1 -1278598864719842965220101316.6354419982318759920434350336972531 1.9177377145194539233254975048777630 0.0855098531458350007889892334884696 1.0893885855622784668367163456522643 GT 1 -306138770829328451364.1869395814224606542845450603072222 1.8760509000293179144674758398223355 0.0552402786616234352240574424264242 1.0568246469527383990160458063131488 GT 1 -7179462937359436952067.3047414054716461591373756899307464 0.9012653050943875227110572102602786 0.0684707079935803821452656384393344 1.0709276433732688347010067897903088 GT 1 -89.9653629207979751015547943810321466 0.2233389977731019085055427400981495 0.0505715892987713181380091613346609 1.0518951484114293445238119267550034 GT 1 -296830876872019701812.9836246629622951302816964310151488 0.1137875803027433831141625247743013 0.0284330358895692031540365738941003 1.0288450839652943634496639879094975 GT 1 -3930787818000152061793688323862493880244.8658024604308689240243469600786113 1.1514571772297537583737024556924843 0.0315522989341504334240867176399443 1.0320607975251440105425803899793159 GT 1 -2.8747834572431454168694129703261319 0.5130875606445041559768448055709686 0.0885707156382008432835362330850095 1.0927412694837805819840841185273762 GT 1 -23.7718748949246270615427426658354606 1.0145606420411622781188138686136632 0.0502292994867197353729109771743682 1.0515346914022231688436067375024423 GT 1 -135716659317735097818711297.2237168495994553990475137174851095 1.9111092683611522062761100856406826 0.0219485941380007321597821106249873 1.0221930480975822852471597635995696 GT 1 -17432328054924826523695889462707318.5972332962519703855860842326251025 0.6621441158254114939847621930513602 0.0743409096838774394002249538214077 1.0772492651272601704653756585519228 GT 1 -688888375784789689.8214909399036450411543793282316007 0.5194863327047661638405998087872616 0.0910990195191376293010816471394439 1.0955191231025069425169118339690789 GT 1 -144399417041079.6327256312813986296973155987661371 0.2068757312124298047778541343854166 0.0142692798778605998781781256057442 1.0143720650034079997224784949405994 GT 1 -1783882020695952163312029264181227250954596.5125473244212718337474293393005859 0.6206672929051670657287038599706745 0.0618648146809054125127468197012474 1.0638612195510491996833163569934837 GT 1 -35260976643.9388332266005470360356866707033540 0.8306493078859905856561554844534319 0.0489229923965974783569743377152170 1.0501602443171777019233962315719982 GT 1 -5865697985738533384913469.1548594486260029017858361623748746 0.1307681816634211767803054200341123 0.0605373456478458297202147573787208 1.0624472114752063416246597943386963 GT 1 -2196598127495663331181417676765964.1130641649389086324564699930654021 1.2019888874565533821018320448450243 0.0875804176886160979077106677825051 1.0916553263829025303506823023998826 GT 1 -1189656932886066215.8453344559049561530041946717204634 0.6478414276909398913219883989201956 0.0506313136369168807788481258554932 1.0519580559630130255940063225155475 GT 1 -946747204557401869328743449819303987.7734211397271967964757511020319026 0.3345649527208117708725551393303285 0.0089790850948661665610695707041421 1.0090196400260804611109549342015655 GT 1 -2347840576.5178837590895371689483953928460426 0.2966927456274462884323811289054948 0.0431164964192655720807520461196973 1.0440736257846110753530001380203477 GT 1 -382706849595.4681509018743280164240367944732810 0.5151045373469081741775240266945162 0.0484630680529485459522423878418382 1.0496767785514258443565717183299627 GT 1 -136729051776699974630397946924358101918752.9171265215554288820024927512885384 1.2945097334259095917559453419661145 0.0383708862148816192000104456145579 1.0391264392606812407652801310849175 GT 1 -22165.5260646215227882042999942069943760 2.5305035083556565974803993785836927 0.0698510212020431794644656365274388 1.0724105134083772053236941858020163 GT 1 -937668258304049993194450463733444826.8507848962780636003568120115315228 0.9866414485557182277114384206884053 0.0684747511230414178918395252537022 1.0709319836965093180636509173235150 GT 1 -86835718221023055969021952377.8344420295579813997358674959290917 0.2978477036698243444702885734517817 0.0939036677588322431475045089717473 1.0986096516144637293172518925204640 GT 1 -6675997440985067119968577730617907553284.3011317859103796125141158487953250 0.8342965218071065369947001545341966 0.0964414703595636432585309197708664 1.1014143900403755236907251323632610 GT 1 -10157794395529735.8345735314526889639688352154345410 0.2568563728078575041824222007031864 0.0343787873016129210996858971512864 1.0349836410283660052090105373145202 GT 1 -938802203231.9979260904371083445932729085685837 0.4566277979258552653754028099818884 0.0880849300860165823474633474402233 1.0922084183385329079153879610666761 GT 1 -37831877555251.3622222007270838708248078822743132 0.0434500073731600647943755344779170 0.0017112022114687599453266055398896 1.0017126679903744329156800487900180 GT 1 -1946531863.5565342125577290597926911096281453 1.9408219669830218583856915335255121 0.0788646792273182723887033482611078 1.0821483254277597215866520123139795 GT 1 -210370633471169126.2637006624695392565787457841811636 0.5681215543160430362345308360142911 0.0028207413191054889314532539169301 1.0028247271069155557943748850978026 GT 1 -16128478654958523695680019294788435.1303335614085055589316557720880104 0.1934064295233555017788127209844842 0.0420186843976079503383324722889554 1.0429270047480367672923619003380255 GT 1 -893041197309687457324238670925836000386.0672800193100139498137592376588311 0.1845918199921768847786983019422223 0.0047239963325124189003998688869628 1.0047351896686187653552695160736935 GT 1 -467992191.1980228126702707558601593435929563 0.5131085327020033655826708670559500 0.0503088139543914447196450539802853 1.0516184145537965931566028124526588 GT 1 -7211439624412363.4883310884397453265065545255930513 5.5368036616158123814516140319645681 0.0629884442799167828423581834975071 1.0650596641409109040978577010968366 LT 1 -1153275099241531.9882446424892716449682200887484067 1.8133372469342320068011952980123044 0.0117276117183587011956948968700383 1.0117969225902672478052058913247606 GT 1 -337912798316054977317189.6649520397223333779119323528465745 0.0356832475161928192559747767084634 0.0612224324790607604806089678581936 1.0631767101342367735780130555888577 GT 1 -254919852905081.4943515598641489632583693483299130 2.3382987468028454245459114893148099 0.0392279517381483788341694574901646 1.0400181007899939396056532852683092 GT 1 -5.5860064798256749042986482474365145 4.3047791194048629613556409852901822 0.0528208612911820152887813017243785 1.0542670392621420906237044784219942 LT 1 -1915565447892.8070908937480825389803486425958717 4.2257138696184948594595552458053526 0.0024213301643010194573620078857351 1.0024242663247501217239840070955367 GT 1 -1158021718390878.0884913019709684120720275566277349 0.1081425714541516849948386291847726 0.0259362172513143452016620158657678 1.0262784921154146510363197737153864 GT 1 -298118643983378602141586313415311212538.6263475175401670051595006551215991 1.2429644221106414480731501306059165 0.0517956156145051053916569235083882 1.0531852046211023919514199763927303 GT 1 -7414243119806305934650547335.0697515089224920321291620309157540 0.6212464284281744030262558153033772 0.0680879202911173771726624252873262 1.0705168038226852298826542001199286 GT 1 -4053503799668899249821692315234.4657778432532309399851237986531889 0.4333417920900634583101167497675384 0.0053988208825366627756484341743060 1.0054134471829342280806049917387437 GT 1 -37773553375140692.4195078444238214975434820557623128 0.4938938837861417623759806927150161 0.0843164084362914058693051333423462 1.0880843980377250501486560842730340 GT 1 -41967689364557752599735920372791600356.8147633783188605406801589639045628 0.1201137684910757384930330651832508 0.0986960988763396784640506837945255 1.1039127850993272997095827520357328 GT 1 -767587032252999.9606378022003194152160497633873462 1.2617669941112857117100186444140183 0.0987387358251678505530368503980979 1.1039600920701452599170430006332852 GT 1 -1519955777987568446248693307902995132287228.7237313990167724214017852988020229 0.1855386301479961585712115713434244 0.0261263600609794361002024989771497 1.0264737168778268257291325734888061 GT 1 -394376822594.5648878640656440090731739064546247 1.2581945832740310591410167508686876 0.0947099998960316627728406036657253 1.0994999445089841026688261616965106 GT 1 -66074726540063563167.9564723560513102945252456658799013 0.1462003111154893835741498485550354 0.0715758715930666314821193923935385 1.0742666156833206452959590940339001 GT 1 -1703900326.4607832313267503152929327522637235 1.5039871313581605891523549680390030 0.0044888263982859886708915529910350 1.0044989314306659681048299269488975 GT 1 -127496618377737156338144.8067704515863512637988390861676517 1.3022914732828635153623167179972196 0.0453062057920379792043352362960765 1.0463646242527988427472038791646463 GT 1 -17165769448755807486822622762.7213766098270376329423635112682616 0.5104186517241898078628227303297085 0.0106938706334401012615544358635580 1.0107514610120299694066412901276055 GT 1 -1780760000494.3808249326637743667094287629132233 1.6927725792949066052639654186614976 0.0715012861568392646943373953535434 1.0741862833888704362392927689553307 GT 1 -914858144988441677758037.3212354793382050676690960452500982 0.6705305579119669272724004473087253 0.0789966328561761871855119764003095 1.0822915867684493734838673208933579 GT 1 -21.3956695472299450408004649641311392 0.0107035765749318997457896788770715 0.0004654494347698558631527913444854 1.0004655577899819055790425373812736 GT 1 -42593079675237118844237046180529772546544.3101103225644669587389223805257138 0.0733381725024456139029438699066597 0.0474561809834996668763132323470901 1.0486191688226443009021707483428827 GT 1 -3.0241824843388273999844887826119270 0.6735803564252047075159344667884828 0.0660544426944136674458628108936170 1.0683371322749248731545060664463010 GT 1 -67236432176830579184452301723.6273180006089199660417019077212978 0.0093645057490500332954385522455108 0.0960897517983729783034524070027972 1.1010252064816421122836483041084070 GT 1 -487778332561022621907075.4175595403022055794193171705833157 0.1359282699166297163994693983428682 0.0039743095737475482937567328191948 1.0039822281295329435964982227337713 GT 1 -9952301683189973190645035703536.8852874114481063153868116273299316 0.0767767602292654337439239260988356 0.0794016120830513559646252476385514 1.0827313987226792779968379042541018 GT 1 -169300069956295.4734810690599745123246541253989250 2.0094528801433587449791871775920894 0.0673929964623282422748684046863424 1.0697713849452801871278773841195875 GT 1 -10362512274656580352021474.1423603855532792254201483806367717 0.0728016229248724095615850243568372 0.0705175744204689074031308610250214 1.0731273793909602672068713813341798 GT 1 -13499368166439046495942081133.2101198182182325645131593857601511 0.5855409219998789518740778876941133 0.0918996555209579064456293577070550 1.0964003949459989776043409486770975 GT 1 -1718448.3456596059933836114744086694425731 0.3540799329813799439170163243881317 0.0075689624794352635304546913911373 1.0075977524413730789703571912201841 GT 1 -6500069182558531982198801009.7374270218144747002144579242295304 0.0637230338879282761785462962157825 0.0757713373413608137045277530294920 1.0787957675464211916990891924809655 GT 1 -970564410086238455865271853593493.5407071690206422160831286899797769 0.4629726303866371263688242722516929 0.0595933337673431313283899265741097 1.0614428736209552197645534657003608 GT 1 -1205216870799378590492531436669.4775763889578976309431394810818721 1.1765653331662521075592707644885014 0.0260619700071710913283135779040469 1.0264076016010515787899129626264766 GT 1 -1137157521534714347166296107660200186341732.0556792182772728841992286530268352 0.0884601379011934841176455945887832 0.0593727165811865506984934742686986 1.0612083034929582789621832252008653 GT 1 -2773956417264881831415170826697822241618533.3714557842646315945277133511501029 1.5354843172541433725296985077139907 0.0155199880138061369903566149335631 1.0156416838148047285475738256418072 GT 1 -2574513481235679561337163530.3149649577399061398913866562019183 0.8561173554003932395335680057016597 0.0150595275716353435210435535526974 1.0151740737191394560648214176449773 GT 1 -262744205239787092367.1834820154953869175381108707502296 1.8294402261618519416125939160613763 0.0632160149325096198784654576010772 1.0653025622039685906979423924895341 GT 1 -690375302443764713167322.4255856378857019347891949265810056 0.8056745865415952550342238685622690 0.0793174734162487538849145462426253 1.0826400072720879582494808486592899 GT 1 -74646132743540133407906267684795.3735645519370152148741970636768831 2.3328379878649699569535093643140758 0.0818378728677831206431085568222802 1.0853812948787046144063884881023886 GT 1 -57523428.4249437084934810865340757389346838 0.6509372253573162994423441329218682 0.0626434811071352211589317963045268 1.0646915793646615925287910933703510 GT 1 -31.7781803315982064591152393472918947 1.8001917326252019257083271536748208 0.0027581582229925046725809353216579 1.0027619689500557467406119761297281 GT 1 -645266346490747393790238911560725003443420.1960629733821623821411768043637312 0.5266217206735527175587411050708541 0.0337969002053133783809779818334142 1.0343812186340164338122113781353136 GT 1 -98990116915718072488951763895163.5025258523058566629374436620906120 0.6084107207854921258810349513921586 0.0566769414745547399117634672620833 1.0583464690947781332659255371434749 GT 1 -2240247920.9499529412817727012297090062767912 0.6218935870779370929253755990747565 0.0351512785421250140328723862793910 1.0357839552607465524708630377137389 GT 1 -4775112344996310923997174727750135314843495.6709132967045806300286568705106349 1.1539841702268769812099065370666355 0.0918455094299902096658629218403725 1.0963407710540881541263171066138402 GT 1 -1187542509725049.9883940350586921374192968016392369 0.8803291982595732041711301771402577 0.0770202426661594809882347222993969 1.0801479761024025056437914422825025 GT 1 -143596855508896409.3015968856033497794792065260693129 0.4505026672296265932085680059563400 0.0138945945222301787863073798234829 1.0139920279858530855413179048274576 GT 1 -1039992265457306.8795803249886949032316893649042605 0.9034840163752477070863085057027166 0.0225121203633435565956849835178078 1.0227693865481778356736584390075895 GT 1 -126552363306043240.8992156028618461300703539205126590 0.3271739437935978036036103648433456 0.0634457530427502041305422602670174 1.0655478335676389889646548643074403 GT 1 -1011891833367571004496187836157813.6990192665611008089736297513017403 0.7508914901437943408875802890092470 0.0400981951273040611056049312233235 1.0409242863428269565595189340980172 GT 1 -183777256891126.2207436552096802274002738811260992 2.7607806761295776953778172473828644 0.0279137801354671236739132105752880 1.0283107748912922702034333076004379 GT 1 -1227821938108384679.3642321062567389994316994874362204 0.4098132430479839457705783063662777 0.0249944957299779081243957326759121 1.0253121625950742516263681348606559 GT 1 -571289480659302248650.1108740212558156693881574357051481 1.3462345577515182958305806875620302 0.0485503932608488484190559628350909 1.0497685555621259682026596157823927 GT 1 -7631886551890.4537201369591607919420180986118147 0.1714279618049890472946385566450458 0.0024672280261517239345770843362707 1.0024702766486818741334580760878280 GT 1 -1525741582839164999539834390327.0031947639191719144221274489390592 1.4299677150729445623183100603474467 0.0866837626344031166101732906992579 1.0906730866561688946656009071606847 GT 1 -1970517.1225268636577796359529224823563959 0.3883372843831960405466987100076383 0.0065131201307532657799000969870301 1.0065344230470204725392772171366824 GT 1 -8916530.0248300616083099386511821408630596 1.6075252360722927544295525950556559 0.0983039197965534218676760408111192 1.1034777556040051713230054681918065 GT 1 -265213409602616124328502807911787600326052.6941269122302165735245417673447660 0.0229060965511093920604960652421397 0.0821419883255934985455917275243554 1.0857125717031399853758570396234789 GT 1 -16.6189780474888895280214807718634513 0.1170107519166069637223634610830886 0.0175815907014830757889227814200032 1.0177379826580373603716238757966207 GT 1 -510789548377719100310346228.5298896040887513001040561493368796 0.1948142705020828233263737122831264 0.0077787698868491135823297465457703 1.0078091823342737428449509289584882 GT 1 -1676883916736692282734552.1515531220669671203582064625343378 0.3616476844519812591530117495548241 0.0759612099672719167412770830648596 1.0790012276667112035893420195840228 GT 1 -1103307701150190864686261.3077649237002189299444909852201296 1.5344663466248307264459750784743480 0.0299088402056789691123978666241705 1.0303652327310709043284637004912612 GT 1 -315023626490.9092410319150664184809786176314279 1.3205163472725747025738025315022837 0.0933159228409555569969666826464985 1.0979612057956280879386881050508298 GT 1 -3132377995860135455014464243060813821035.5921730285716842074644394954442484 0.6095846368338846484912150533254551 0.0580762740302452323862800020497153 1.0598309779921623129704090693916745 GT 1 -651736259433594425270050423647256.0256907540152238916427665815177126 0.9156247374655172954421851221055101 0.0426833499033954578339553924906739 1.0436210644132928290533703686024460 GT 1 -7667825362152.4102108175611771706802373030167837 0.3394698817119593497419457988031319 0.0653669470459811199327071632011091 1.0676012834584185620260879710222145 GT 1 -14359399.6416120111425254202350484023988788 2.2236956990309925684322245690637954 0.0574406611223981351953507112484267 1.0591564026204789858853464296350783 GT 1 -1111151472328720155202.7651129918116984578476809479083874 2.5126443476201150653314763117321412 0.0957079408466052145375041078303984 1.1056633678728241272472328201156701 LT 2 -49943392885400122338440306.4478746215342708188129012072464758 0.6327905224396241236294655996083111 0.0484716465987952678213776138248051 1.0496857940549010287316141527290228 GT 1 -92530246203875184446347429797773770.4592426491343999498642411678562189 0.0124026904648358989254053885520932 0.0448578532615169882016949603155951 1.0458951048253496377590655814701896 GT 1 -3283945035498257831182560.6366591579946755800580896994783855 0.6784449416460426998275346904168491 0.0575065422613818657912779651311938 1.0592263010754493873147131611025074 GT 1 -51927108388961561579081938565.9891806366757285933476845365338326 0.0392053386497157513445018724190974 0.0271384373520004714135922534044195 1.0275134858005415835705215292973237 GT 1 -191774603025184.4287124375460971655744281406087054 1.0528354799708400316764997838500528 0.0233708705370939136762909576500349 1.0236483003747632272118122313200384 GT 1 -32754436004.7379862695879586314558413336701753 0.0335402389996459897817706636248571 0.0944279300284654060741820589177405 1.0991884134713543031678985985564430 GT 1 -1240730900093546289402978976884657187.2640798005148167914068829877603868 0.4114929960276248127160464074308438 0.0352387803767701948939962698625267 1.0358746490666212610089186119249805 GT 1 -29187137031.6569013432696733596539097340843570 0.2154309782514701098275150289522997 0.0398091686166963696762799561961566 1.0406232315839750771126168004780010 GT 1 -971852215626197825301214336159218683191255.6951729224138100636477676495814906 0.8566370907557296463233320058116672 0.0269577337732219298205139405001111 1.0273277586575897401499623070639588 GT 1 -3846024161253108428.8780195785477905344534164435332238 1.5059968837969115126609961704254214 0.0573977813334069460218962473454623 1.0591109107221035025513962663966352 GT 1 -15212.7635965142586720730327474343503479 1.2201677800917544920009179496073819 0.0089556483026896399791915244949792 1.0089959911659016103595271171378026 GT 1 -868342139326766779426933002947838712927.1870979477056890004373722407290162 3.1873011585149134973472328773154046 0.0599883391576278426726859525156742 1.0618629986435709850019689431114592 LT 1 -342896803234251820880334920.8974874101279749135702043657375131 0.4057026519044296437983234650529389 0.0482626677130955157765760345520050 1.0494661937246780632156997869763344 GT 1 -4651848551644079955859212472.7019272139051785006830172496004936 1.1853423070135621619896767328335246 0.0732912130062108853544472053590247 1.0761159084081272242215781610615711 GT 1 -1357.1128256725194562435800975227483466 0.4402153157225091930415523571458226 0.0422600652872292356257338157458687 1.0431790047619834336756368274543195 GT 1 -36438272434898156096298815104584.3227480539758271014554445377802725 0.0301548164859203631898766359476422 0.0600382476922502768314374122075097 1.0619160935802174890024635990053388 GT 1 -5.3076126921380210125746913811043817 2.4375450689194595516270318854616299 0.0795918679555474215701837119447866 1.0829380855226558000300019036915966 GT 1 -499977074517975795588551345511538845560058.2841914284647469292165711712085626 1.0513337618550167573326487681042155 0.0003988848814436997020603955107118 1.0003989644571797641276931066895228 GT 1 -67542990893873813548481721705041473.9506295348279230253391618604466315 4.2047901580970442308766861512232380 0.0352647860705925723943003538748628 1.0359016050053540109402792060275364 LT 1 -16065527521254862288039831384081304052049953.6326426306210925149700529933529468 1.2766311051294860265129620818584990 0.0392091417268044601919537138956195 1.0399985229647970142839682185510100 GT 1 -54086641.3656682846556155636845922704466059 1.3285496092635787983738144246379288 0.0043469849614413583810931111824218 1.0043564605707602210020550355060923 GT 1 -41638.5828388252068163810707652209908676 1.8237538524592108690568582021236377 0.0119287653379142270470891345909210 1.0120004839729285437696959289967913 GT 1 -1077827458173784553679813296904.9919069871276001760777883653165212 1.1015631407716350905406826096551061 0.0377457138119479123576547177259903 1.0384765324888390493141114994085348 GT 1 -9040817.1611046753087026887328370811744839 0.6824302145710732594000051759266727 0.0131810796112509267243386541130522 1.0132687210320767272716025644493081 GT 1 -4436069861243665784951651684701764971384620.4338969510414445904990311717542560 0.3360902537547518830200580568311718 0.0587324653211763852958578411104128 1.0605278709007055461934319957891074 GT 1 -462474082.2372599964321766211832680919090425 0.8945562615727116377564978938728839 0.0478906412751754836915092644062442 1.0490753781780149971866656068939389 GT 1 -673164941226670.7879342969653965221487782464060912 0.1426249770053471906601441406729717 0.0971334199254727186259495288365277 1.1021804883369838326479082320647980 GT 1 -558051600660807735459106129524914.4499789906522316156432563410497214 1.1644710218153980022478801501989369 0.0466747784657156517613146304325977 1.0477991727526705087462504823689828 GT 1 -83625645932960883666766167033554.0086533707122209551700351034194482 1.6112105528294787662894614125018822 0.0168358915685064498295110580687079 1.0169792262466164572503925972820553 GT 1 -54837950669973119072067820938195305015827.4670503837543573298265767417399537 2.7170327802960687409009126246830746 0.0673721305636636399757438370257001 1.0721814737642073784745525291414608 LT 2 -38235538002524867286.0616170185811746973804387396097681 0.9693612254336866287485560211559723 0.0501165435490675988160981493046938 1.0514159793331118658377104303602566 GT 1 -289074122126761065.0808438089389688150525481621640210 3.4108882640390142403491326625521770 0.0634462783689137002583012228813293 1.0655483944815556512833754914437359 LT 1 -5302872482145350017155.6716645953924798050158401227943631 0.2741029812949830440996697369755953 0.0542945958727819489170704025719579 1.0558241705567608955279212149879283 GT 1 -60531.8589352776273977500096918466988656 0.7498682886634146770419231353160269 0.0246272773509282873632011057701796 1.0249356013944614433790529616044844 GT 1 -9933314988014078194323088085.6730180303446779350850194075246545 1.6276812627396797116432196840887734 0.0255762470023734631309466938565425 1.0259090052735105963459932062946576 GT 1 -709294489130729639997612667.1805620001244900679680663488358615 0.8077369088725900075551379549246698 0.0231569072572572721275879404212169 1.0234292409192356952533471431808247 GT 1 -2319620.5373504324589102160721537436116320 0.8118452354827221539234789326112638 0.0036096146889978899490210431322014 1.0036161450676025712790501071296810 GT 1 -1713764.2677944683880352149677513580693347 0.1582488189871912306141777357958748 0.0243808300605534412783037179621733 1.0246829634489918927388105329435290 GT 1 -4420916574335233305.2381073745055232551371757941630683 1.4702530978892074995248919354951103 0.0589712643251345031486943021540651 1.0607816024827103257081643675779135 GT 1 -54778269195244722847201.1280902740375499696839879101895121 1.9282889256121638955777233689514656 0.0956297914280880934589171654205073 1.1005164796649783914182943235546823 GT 1 -2.7041152315934962855602103287550811 0.8992080024775124915205574167799172 0.0561536218129546273855329903973899 1.0577918610507587824112366134074232 GT 1 -229692587541706014997184.9488095810256190554730403361836244 0.1095431323651029967798249693220642 0.0552813215065191148505567666501505 1.0568680905241555553556060618488567 GT 1 -87328504186282.4515766331825320411654638648089400 4.8834483222467540635749631072771507 0.0224577522778696088741190000620470 1.0227137678804886441515522548316210 LT 1 -274034202690885421446947143335258641.8296239436702967679270635333116307 0.2282119360507216255119072706214159 0.0273144928858415016841770651701996 1.0276944688639255080593224902743094 GT 1 -47129922710672.0827502506400330089526007525263293 0.2741190774544337896868633689654920 0.0855000335358222590768152095133816 1.0893778478224281181533659238930913 GT 1 -36330562846.2986497788923082754256156830536117 0.8119954558208384790279762261649353 0.0362832034605168448103400452692612 1.0369578070566068805363085384549184 GT 1 -8091764061591640842576131483996308953.6179442008374603738553540360787535 0.7906655557446300306951930054586801 0.0735823845294655888059839886579593 1.0764301573716773149089389670259097 GT 1 -1677975603990278373896546772.2606652658306548127637615437526656 1.9294330219001401932071434920281638 0.0686691769243411134917935733320151 1.0711407231744893471459729055118603 GT 1 -23797515111775279261.3651116049103683119783140271368533 0.6863840959912997681290608681948116 0.0878740024924487017787037972828893 1.0919771432885624320644299998831740 GT 1 -105795779527734189811021299265674159.1333225574973613051309363868733339 1.3242366235766951400994087490781183 0.0444940889410515900381409738020774 1.0455143289693503589830305909119199 GT 1 -58064.0461746463415936335111157336628967 0.5751173709339620161144736194027528 0.0871775630628463480785708953204648 1.0912139003932935566249839782249057 GT 1 -17339122575544082176047117415290532.9513440196534844840066929964985988 0.3475377444536375269903194005888534 0.0529182708786144724784846792288828 1.0543698863294838749064297528033699 GT 1 -881074755650011940334001000414435645574.1753341887827948304300664112734476 1.6699315238613781724604640497098408 0.0097701110051310343178774460539416 1.0098181517043990157490876612720804 GT 1 -6012330001.3329374660222608118321151158237527 0.4790247205205214989716057281701361 0.0901825693265913899985200403281293 1.0945113252328728465272278376281333 GT 1 -165821505830846719262831141156043706.0941809793174191522618056447247099 0.8264334849343812415371832495672520 0.0864751242047121289979629997949310 1.0904446722318437248613070943648024 GT 1 -167055901204400513491862811331761587624913.9705163792110768426052543915286075 0.5401670967689845107358503896443714 0.0898069031546975683786788562530782 1.0940985076457778796844892571884233 GT 1 -262724893134.2350127452408678689133193197970745 0.1179576601449201621330569484990775 0.0651826210328053857337916577361219 1.0674040853828497656422974805011341 GT 1 -1273.7485452049989930125133893215846340 1.2484010639673205196474902307117051 0.0152120718634179800145826647142015 1.0153289623748991560744547430861909 GT 1 -16814913822927584.5009388994539301545252667970805939 0.6223480188211070823694455848179208 0.0956214623976283570145922739557204 1.1005072699497236749238437597707596 GT 1 -63597463542712189063009.0605432971067708880741251815145206 1.0327461489346509380810735131306969 0.0850671180090586625811964466501239 1.0889045694124443973116207186018027 GT 1 -323176.2229935587532443795555242390594619 0.0471179498836754488217493131654943 0.0822739123145565732275131210489014 1.0858563123132664585584047011931433 GT 1 -19732379419449244760317536797.2455806472289412612574719087778247 0.1444719998000888174858726000798566 0.0165355858377439544392493039643908 1.0166738246624875367013690422057437 GT 1 -53599525366416182181728779.8825505151221689468871371376623635 0.0586598215716250145514084816103855 0.0317958152036419064559349301776051 1.0323122792421759292802419511165466 GT 1 -437216003565317890.4247209882751237407949850408122532 4.1256758216013182047400962395510786 0.0570028926737985074746563437213208 1.0586920638759703184122965979030405 LT 1 -25776975233816152123565189551171063191407164.6564681145211681044978905477345657 0.3707084717802745080991151606883951 0.0199486390642932699805971501190917 1.0201502995727612024600905254410542 GT 1 -3.5669737534121156939316980789153215 1.3081997175657114676425933211173438 0.0291712228506985945761208622063397 1.0296051628524004676205507479942706 GT 1 -180328227.4453528732087694981868518415225714 0.0126813763015748320269227512680948 0.0770763286909074601431505326400055 1.0802087442053215968228841863243247 GT 1 -5519655351976705928581577249797925016709.7129811922445385766936578329298881 0.5747298317995587504024038944591453 0.0010903852119191986428094972357176 1.0010909801143622531343508397764725 GT 1 -1734.0263487920555807944758038400421973 0.4880342075675993792962498755495597 0.0671561243919604707354284182760292 1.0695174280340702613352262962091246 GT 1 -20009.6396764653391643762313247755982302 0.4891921274117676051878748194640454 0.0539404978595238449949429667873322 1.0554498132397176410489654039913108 GT 1 -259294719143298882889757520932953183040099.7437625684218482032460708796727807 0.0278636825394812239591747053114373 0.0668668844963359331666858342207107 1.0692074136026824866639568654256007 GT 1 -5553734836855804345987891.6312453726834957217499522956493431 1.5863315425009613093678571582516354 0.0640512851545235028900139495226096 1.0661945958374281309546578115293387 GT 1 -135.0658790160776812203198734145538273 0.2442754105860400451105454080500151 0.0207092614419655065051780640979490 1.0209267055062403596212987919456061 GT 1 -2044922871984405453809421397918.9216970208131122469009571890405159 0.7991056989014755594659314208180150 0.0426732068550417784976267878814747 1.0436104691785617068298909990877994 GT 1 -218.8775121803549739754727872359835421 0.0802254893121690447296932959353745 0.0321887079951628415425266902102217 1.0327181569860499126293737616217559 GT 1 -36927629793875954069673164450951787599462.2047836252250239109419126649424757 0.6854457893923735414879962444478150 0.0998896735270165286452923798406562 1.1052379382007681243620412594584096 GT 1 -148750322818171447659.4395348830086556491011284755792588 0.3918552536338816751110524835572757 0.0506208840268340583925479233161867 1.0519470701858918149476897417218171 GT 1 -233771282650821184281788049493.2491828651303544463430423909297988 0.6348596832673048342148261522753425 0.0061299673558909275080191630574781 1.0061488327414270654520277616381807 GT 1 -1331197955033597768562605576368826205556.2485095088722731230128407875466540 0.0853720052278113682776852320361249 0.0828438357624396052724664325072524 1.0864775221654121267473902522241730 GT 1 -6203.2349048466548904323622665159816576 1.1765272784005128787591000390991567 0.0749878921818787769744668954962282 1.0779484520222750244710356297774932 GT 1 -34.2238881338380345497665941334439269 1.3906370082880176188640486226687339 0.0626508984741533880458880001263365 1.0646994924651904626975702660579453 GT 1 -11135125759883765.8589131256893772933852728757396349 0.7569505357880520835442309955369639 0.0307564599820629175035890305825419 1.0312393673819271976628026900044369 GT 1 -5.6073421754487063557881023908310085 0.9070723215326213141854488870046487 0.0447693794740045962016849364280751 1.0458024801930352501293200596178511 GT 1 -2418457493086157478139506294875136.8368693042342482701899632437496269 1.2063170834148769103288838189867021 0.0178696715447443672926653395417559 1.0180312620659644597601798451552590 GT 1 -23084187439056424893547015091324397644060661.6071155015605870579940949195812092 3.0494444084403034647578195275414997 0.0662468706281322924039555524307089 1.0685431911384579661128402657402430 LT 1 -219931832081977415186362378233908.1427103368353315020434682150522696 0.0586359331856384657263113403686748 0.0848728389227723200279654655187911 1.0886922495076936619579939904581672 GT 1 -4311306130889866355303458019401217731344365.1004815117436524199348999906766127 0.1939868262488708740992670428390628 0.0685827902736101913440859340014854 1.0710479713376637235546749923685971 GT 1 -7619447557915442892719418.1865742951196275344922695019659244 4.1673643286420401022374588105267876 0.0731331328387350136713086326651668 1.0759453406004364298287493181465026 LT 1 -6621856634200538672119016605083798814.6227050604264502298789662889119117 0.3664962011396910120713305582900456 0.0976030492946096709233484288211980 1.1027007773382557323365944250948165 GT 1 -160141159779960090645733648662681230060.6512425755529523918336336337167375 0.4398381975392856679887038801283930 0.0534813289086877802913256077650704 1.0549645820705752508714008192292857 GT 1 -1012600498.0970703381229825944271895601641079 0.2725505263955180031548121845804656 0.0639379790870004885869982490848116 1.0660735430405642604129174429568234 GT 1 -37628840029664.4318211577008028617627506100166087 0.0734058859177572776206117499087533 0.0297137560336016795511971204618494 1.0301641541446510637146345467443661 GT 1 -46677067307833427482.0027193633230857331196372660638524 0.8419535348017418681751292327211608 0.0387268114898044530831909516915147 1.0394966351656554988400993757111283 GT 1 -1905552568119559.1115964828786994766657985455413572 1.0966527600847364280717007530752114 0.0380149703015974071618411886331703 1.0387563900815863503214581705947824 GT 1 -1113489336323.3454673217949035080993705114878836 0.4341805641497654707073714385955254 0.0917706502999127004324542838692036 1.0962583445003386325003554781204768 GT 1 -33589176677406169849151128182331199542.1167242599059490033307590417444969 0.2687818387177707955389708858257994 0.0007606166172945648505750584351188 1.0007609060328793250881425864268092 GT 1 -85203367562656300184390641795897192484.6159695296386850760731670050714844 2.9225360686221592270806239353069537 0.0894995303701090453838220823070827 1.0937608640212071496517870755303503 LT 1 -295371958359832553497728192753722739916.9911985358722694135783932137624411 0.0494579169069827106146797174134112 0.0972214869500358934741042572941268 1.1022780346654050125027829379148964 GT 1 -687218306810065694181645477679321599167.4757401169890587010426406076593669 0.7617909217150262468008737014231352 0.0956655502481160276441690707791352 1.1005560204710110716448647003205501 GT 1 -92896486038297466.4547116032472847617774298988293651 0.2660993482337458709713314687424651 0.0557554215733704816432284150969838 1.0573700590776142210574853376305753 GT 1 -37421984377255627819753298428.0297726053585165010732839998273349 0.1317478485665299173880530425905049 0.0306956955400152343551878096943984 1.0311766767011264368896376019429757 GT 1 -295.3283568758008910489781863382720550 0.2056896811902237413909553880853375 0.0435378411436477860201003463443427 1.0445140529792000920765277246523279 GT 1 -122.4846334782970275908415815454614767 1.5380434615688182755139668117815947 0.0883074525790625706205964878972581 1.0924524648011986195188784663702827 GT 1 -872059234175287427153635.2064405183724748200346238556855320 1.1287230413779621253127343356579618 0.0089445119390340944289671420870823 1.0089847542307762628408313609719082 GT 1 -615233618152.3938753867408499719812096292587587 0.5674520929017620100075566785882026 0.0502039602778994784545621817797165 1.0515080124671954687600519809465204 GT 1 -13450540418686432306520.6533174553304934240412030631848779 1.5428105842268384990046992645751647 0.0473236045173948048205043440469943 1.0484799970195005846235566175120106 GT 1 -30058698485936768599.4578289628968586472929270366437185 0.0496512609013344263168377471994908 0.0588880375452241891681179796783366 1.0606931640572012601147334279654461 GT 1 -16844368225829833420507440570817670878488.2724366620450977303479709399695471 1.0714982472839181420269466320750276 0.0825452603453667083189835319811971 1.0861520303468739242662240027219952 GT 1 -192753.9739506869002616468656559736056478 1.2218511810901351418791222135733689 0.0105903442417304533400909789354425 1.0106468210302979991558245569112871 GT 1 -378433116805951452434853927447423.0014867650492652166097692069773212 2.3031595732650940080832138358829075 0.0989977428480933413240701686591150 1.1096812885322710805889911939602794 GT 2 -31190051352.4431064894194930994205619017491389 0.9878932016115048712125087489519383 0.0594314169609904056924730417046671 1.0612707110081666085579160808069522 GT 1 -3002904011863511033845920017809.8789944904972144134563894929449150 0.7414792749142242905190167067255551 0.0339947973182393394576314655356557 1.0345860589851983390435172718332622 GT 1 -110082498511955088971431504752471283852241.6486646769341413655586261157559540 0.7723863460977399131371153257458566 0.0378656937175106068865162119985301 1.0386012265409526337584702779943701 GT 1 -9340310018650154.5643830605318161555358220212054238 0.7876190113781715858677724664760427 0.0760911183323605666437489396338245 1.0791418251168360924060932840337872 GT 1 -1265797946.4586437961572735038103816584049990 0.2603619660807547676632407903520532 0.0669620476118098437312827495473394 1.0693094011612656332561927036687307 GT 1 -3952624042596482295431961928776293.4674421512454153845678706584363819 1.2494620308821998570164251639938437 0.0762183084420078269474770688862721 1.0792794998029455923919069745812409 GT 1 -772710087901044432025167135466523569936.7929044511516259082921864143511837 0.4775271569073513670306631243404692 0.0199031753000426486610233414103886 1.0201039114837463606389703567410511 GT 1 -266189060437722298952150321902820618562957.3597349512176016617951313930860284 0.2470219485491711485032936072158657 0.0907577634152218183850224878224870 1.0951437334140378616208209399005018 GT 1 -1975239543760038.1954938251919176945249563402000891 0.9234741904348998454085118100433339 0.0226453810747978760793073324715999 1.0229057256258874532876037207082475 GT 1 -7424786776.5446580673858830426821240508415119 0.3038658302313122954760089673937815 0.0442114406852220388442752201633834 1.0452185626578047233943761917210592 GT 1 -954936576.5346368750261138384497072030211962 0.1963750307926151507969155123270330 0.0480220777751612152353163076274950 1.0492134353999811460816589702657500 GT 1 -1841562717278432644941489845.8824705525843239121062373637491845 0.2086236185781280724462694803309391 0.0737929681641310024304429646267533 1.0766574928288391602885838450303463 GT 1 -76.4215180333656495270727123960392334 0.4991244568591274133485111186877675 0.0506864352178272964787264164059747 1.0520161189494791951806020416914803 GT 1 -372990425185109373136610441594356.9220967622319591930553460807257607 3.0184955327559175158717075355476441 0.0219346813930020376738457018183770 1.0221788232358192881476260442882206 GT 1 -32628617604245544.8572997118393828202247003355437457 0.2360450346733753249349917806185706 0.0809793152660382593262951352209732 1.0844466490081904094499080950785747 GT 1 -2421033495561005791937077933395500.0858681640398430006985844588743786 0.8914971284629415703405579237678037 0.0924544305033160677153209870994536 1.0970114997824132403294130299513042 GT 1 -50084693248914441282020332701.2071214167003440442626990329821729 1.6736241816906515749341499134552456 0.0170053163970474100018195248396765 1.0171515671884027482855244599700038 GT 1 -1058.1578795496693856886002258252313535 2.3944005332296695513491218909323576 0.0514188565925799750189313221694241 1.0527879440754481809486219684702736 GT 1 -2630306.8307367816931066722080220322252836 0.8177309975515410179645847398974569 0.0789999332955269589412750547855758 1.0822951703006948916583569071713329 GT 1 -398062574010689907708131736848.5270074765552497499789067860942743 1.3718420082537244657137931889461213 0.0002472824315571534683589948526374 1.0002473130108988917606239156941143 GT 1 -627752818182128291479154457724742884359.9612970668263254622418398304135646 0.1826028780703418399552897756804697 0.0159585273630125082821310028188343 1.0160872358292345793986243614478592 GT 1 -227120646.4465755653653045439793735007087951 1.0738187600614665561824981975684448 0.0935117740059537126651975118036976 1.0981772372951378296723634247398712 GT 1 -347103041662970393999803973662306419623.3454902882413361556989294346436545 0.5863348102397019617161716485494346 0.0972329527985591338128641881684494 1.1022907353679248624660083793367994 GT 1 -178968923978590965813098840395066349566687.4313293909748761802050829622670243 0.2641862544295656626440601406638188 0.0710987954134763115371227807955995 1.0737528918013407434522381070873650 GT 1 -1934385970026998811.6795148705819224752376137510307208 0.2463580690203270145423362267131667 0.0353240141907106891153269267017507 1.0359630000259123474590081126029442 GT 1 -19380745321601.1943211780510420519199517874380674 0.1792337606829801964837615602996735 0.0123213443527490960572005734724363 1.0123978814592469155911314370286003 GT 1 -12449207888774283320.1070799898658125548656392444518861 0.0208542331975209628719243928116369 0.0600171602901858838078791433355869 1.0618936595125807972631909372328684 GT 1 -7892131661831734780279605.6537813217928749022068721919960247 0.5750934265846810143864282078423815 0.0398006723811495862933399124736425 1.0406143831366874139525202831374801 GT 1 -16538163083693201103108160737144626158933054.2124836282318186988447142360333552 0.8803325286842614595469480193994448 0.0760918734690080272745582007339045 1.0791426424452231677341751655816362 GT 1 -3963581546731980924482.8602904160527671677052858253354199 0.8596262831761492756502002849307824 0.0310031674342891574141108987575982 1.0314939358627495299033487365410773 GT 1 -3904825049257819607194963530601064711194289.0516401272042186914467139390218249 1.0917982147458528352928918746885004 0.0720570834432164716435324173228510 1.0747850604189497322516271975895769 GT 1 -1398153867067864850282775401242860482.3447145065592129634017081523825096 0.1099976841216627496512133458471668 0.0447868189905388122330397464471762 1.0458207372247476553851012085855424 GT 1 -645156161241870806476.6984605044084959987806087183247566 0.3178131382536218959634282562011228 0.0046876283901691700252505863423614 1.0046986497763949612124366529284446 GT 1 -82505473638975326350.2301671447902318200354789548962245 3.4073206266892083638793474660321686 0.0363584840504608053127388008346136 1.0370359249545550048083220849106679 LT 1 -506178829972148904474995761860.5132335283032510257861373879991449 0.8000784245853089289330766582933471 0.0496312353061594317324694363014044 1.0509051963454017587013986893338157 GT 1 -65248795157.4239196335359588490026385718233909 0.0013813228624436515796215793194887 0.0781487160157066568671524751444025 1.0813713656324139013282848117614296 GT 1 -9632262754952778336905697548616147.4671156952554442181106649696131101 0.3771331807547431294632674167266935 0.0066814776755749847823476642515736 1.0067038986736105710666993551413442 GT 1 -3880298013.6115296284553296130010553570523456 1.9622976520933029060106717649744622 0.0174153427374958082293796463712371 1.0175687737980482683050491730145992 GT 1 -60213120674098296560576619.6615217518232216095449182244787108 2.2542485061332923653654846058319683 0.0158495775299537396624241704019487 1.0159765252491931699809147674975594 GT 1 -7436230555.6464127259510563930580972428839656 0.5806904340477667888943632421667448 0.0961130241991102837545685420746474 1.1010509531753858555735514100089588 GT 1 -3374113487780.3929172292670428772011013417253610 0.0041231165097835208333782458434824 0.0356765073222274099535889145480297 1.0363284673465324867584183519607126 GT 1 -113388022751134210780209257000482884906332.3490889770722670503635828479560797 0.9401636365975894214391665276630123 0.0525028105568374297618494851522472 1.0539313083168547387565453230975026 GT 1 -2302855475934611696184341373868720071313.8606215462413170712822806694654500 0.5923620830068626591953560894485736 0.0491036101381269065528117173523426 1.0503501709926118306575481413615400 GT 1 -7603016413770896881511924476892.8538379103315471937144649394805659 2.5268012341206865764705359738430959 0.0518751744696387650432519039786070 1.0532691128947969877654954243382954 GT 1 -1851025979210247934198624242240.4746881217711977501853701960934506 0.1275550306443533245252959199113214 0.0217958691577575715989082988304362 1.0220369079843016414753023932848271 GT 1 -792233881440832836539359326.5461132751893100365499559659100851 0.1142893682182622789999223042911150 0.0196262531530566196559296656629727 1.0198214056886103725889538635341259 GT 1 -241297569095206451335649364975073976149975.4044589894919374291636793647488346 0.6176782311614984455404728794159596 0.0587158707948784369503317164930938 1.0605102410777192898422935510391315 GT 1 -948.5825861683893096555340261988182024 1.0116067492386704421607668003493705 0.0775903035877956070191222640278377 1.0807657979270713314392587710750414 GT 1 -1600699005255369688173.2523107051262015213809107702862062 0.0046947176227631325653575877746360 0.0500925404479225428880717821092950 1.0513907101301231142798302597111350 GT 1 -11941160059381483859800752512693466.0103432249147630030899204475406495 0.7070116190218883723491532650211145 0.0235230551858058446580720159186650 1.0238041389654309163231984311520571 GT 1 -3417802368200960227771876092765665851126752.1366404089013172903272076195673811 0.3187604032184164352235252317009901 0.0772748331948156076173034854220923 1.0804238495932743427820236587952237 GT 1 -6439584032125533109517238194529047590811906.0647087033218565396868116333743092 2.3459848807040602257488820184182780 0.0351629814035820112884729534715388 1.0357960845533191466640911683568378 GT 1 -6.5176788680612125187193122078136966 0.3308789352572333367912667400957528 0.0455372348819953352011007470004080 1.0466066464064629999734510393789257 GT 1 -6140606808748473306917883231.8876298739048706286986182181440307 2.7843913565671873839949013789530069 0.0919073169045756391087051150786059 1.0964088316963899973491976256062082 LT 1 -36571193934852085.7278303157195426613228408430641357 1.7231419011282188490169320832638156 0.0304799993318533409915420960917749 1.0309541746327530838391703758273289 GT 1 -2806507449.9258383940881597190092461577511171 0.3165606526163521463009061511956620 0.0599936345241618909729090672471032 1.0618686319582093905112226289438442 GT 1 -7248105162721479215162692016129940.2221134674904038446827695281217870 0.1339248719672690921913304793997664 0.0375509870277064182644293186925515 1.0382741877586244320336308776090252 GT 1 -237080985467438805991724902697126497853.5528853158041296558050481640958011 0.2957767934731112809087965643226648 0.0115512696921605457763349295012429 1.0116185038694799859432723009370718 GT 1 -7095214377944918262412565730.0179981040153512808813980658523001 0.1983332529143851710589859563095677 0.0327011696748910998103491555635459 1.0332478030106297339416219455336222 GT 1 -999747165995602854020148.7100340584489888661768403394311065 1.5458598403897996340318547571135799 0.0317245082251396808142055991061904 1.0322386332551850275197802053050690 GT 1 -2970078664879814965542159793962696015971687.3778027775724548306379878240244684 2.7705708807967582021439050824233571 0.0504404903803878383046440349590976 1.0517570760022382396393026877595020 GT 1 -269042882093718256056360.2238762059141067769377107038613345 1.4919427421293530314416282383866725 0.0863981684418572820037643317137886 1.0903604353121045109093663120570874 GT 1 -12176447132028746524615189504322945926.8887032437025621163914957354819100 1.6039697210011323400540309138176308 0.0774004913305272828699585894644269 1.0805600404084473726741536812593481 GT 1 -37330723411032.8328706542586152624265813711454525 2.6303155221546505724994289817745251 0.0465206195584031609856697821447670 1.0476374793022890506344981939889179 GT 1 -40013036377122320034725454825698971270797.6400415403847692388329562259757970 0.8530366934481512367685815296427790 0.0851576119846743528721116897339363 1.0890034820791230337095504482705409 GT 1 -125179188668633617145.3276788617021983455343994014112158 2.8781141864247501979878813598424717 0.0115215333359076342578338054305859 1.0115884204589217200918842669251547 GT 1 -2.9983860870052084092697319033612870 0.3643393798246283952982375632214212 0.0777451018573106718919615971069509 1.0809336314403673146838551722474357 GT 1 -67587.2397256348565648700333951602578732 0.9829563498114774845921393358389132 0.0339040339260951853736563534502444 1.0344921059420775443404491527393623 GT 1 -5818402438663807537665.8017327691785124449507429468642173 0.9566453851402502131239618750726400 0.0226546517020595303752473541759697 1.0229152110992769000672385826631173 GT 1 -5267.5920133748211223622494323718183009 0.1494107572418625555071202033449057 0.0907997108875434790030416834359545 1.0951898690182555614436107099493196 GT 1 -26989249872028964815270.0303530991137710649552017652527337 0.3963952652996591915832698405101466 0.0838687271730287868775311579289151 1.0875956136295643484730382918412471 GT 1 -1664622369390190641025222821.5966681884804540943580899400335974 0.9198492040324274604296993741348533 0.0059251713455696487514378267875572 1.0059427948225362988555839628380132 GT 1 -6905764604894934505625578492012346328045811.2276473047774003693515202167491195 0.2114544453246431783354994679253440 0.0446368453823249856646975328616275 1.0456637441690657115470507598114894 GT 1 -65940928239682515186963.9271927050749135439004566639793441 0.7519406516370524919668348320345347 0.0899000433213388120292101609898655 1.0942008429994641611428131963968386 GT 1 -52857852011633497205535003808300332605801.0307755462802697984920318623039001 1.0743994683147991697825733211264880 0.0967331394586156381676385864628857 1.1017372426006399388546167275141334 GT 1 -89903582354470390.2738098453225992126840897686605013 1.8204914233203844114708785663224768 0.0291051111871824483207791101737097 1.0295370670005543863223300544542257 GT 1 -7664399404209009801817370570752.0497424343800497189821029904437136 0.0912977090062636507788968609963195 0.0016309610318962355139821776778451 1.0016322924967484785206150580009245 GT 1 -104139522368130227558698067602.1869680189866462041076872013783251 1.0160709294366449932964381419731108 0.0627412505991915916148011215455121 1.0647958882261102780048323647265314 GT 1 -295768335509124522044252579127064563.4152107488325919783809600180027392 0.1989475061638349519542677464297482 0.0986095694362594492310593199879829 1.1038167849748184611330249931024769 GT 1 -537276846515576665458562090.1489389271731921228425111537139775 0.7188365343646723402887328573204737 0.0985516692327174616799092122494699 1.1037525527153354808418200004607890 GT 1 -109551901821071626643537271927250.3965468050271050030460983449201943 2.2022410521504506709036139830514121 0.0285456517894242390527843275354337 1.0289610023026456038370884636719363 GT 1 -6412.7208519813703071814267599604176227 0.0250428944648039188911667439353526 0.0922684698546043876465132829134402 1.0968066157463629213296203967249113 GT 1 -47416916854738038.7189543493631076301397805386811645 2.6415006454227584353426146497133237 0.0489668787409895544625306636861194 1.0502063892209179606269259270552923 GT 1 -36694511140609794480935460641889.6761709074388276773649826917880004 1.2155393126575049383571638376095489 0.0816984623454918758706172531551977 1.0852294699063600306782812444586173 GT 1 -4217338.4998508266246086579496335168174185 0.5926409521084295344222781723398360 0.0194328015543509870134594209011780 1.0196241008184177169793411596795188 GT 1 -1668447182459132484193232190263241.6921268486482441312666186894121628 1.8713694518545611942366978443458732 0.0925837232757689395847294712607269 1.0971539741522638156070423231843287 GT 1 -3277081097667371466.7723716056433598118496859641794038 0.1482508933249587609708356287977031 0.0036859942436301371279614110667753 1.0036928042600166952680041973569441 GT 1 -7544236245.1424801905207432370304260108050544 0.3252925225137700624499826052175156 0.0121931993625542790606496157774058 1.0122681462693806675628989341426500 GT 1 -27450442498421341790300166127145.7646047850523240801273302491117605 0.3164009458058398903074543123342528 0.0910264131955829663577617648271075 1.0954392426477166021356066882659715 GT 1 -18687458101942834889420097955221859170475398.2358951003223726615438801619299197 0.2090182239358593822787651465161934 0.0280365570127353763983187758029806 1.0284370853243821142400697408691741 GT 1 -890397.9898548507671972276131384859875951 0.1720823913711056235737606562086850 0.0489000606239625806234490036634023 1.0501361332346914766983101911089581 GT 1 -1559161112686631826338739775718952956326.4293434431938129617676693720359399 0.2563268821814768889647254077482440 0.0738433567943960078004080741463241 1.0767118975129261615688617597035529 GT 1 -7375724239072397347239147524437412702.5187707750218798134531338597729651 0.3664361476461674435558936410039007 0.0930381946209054341037521037439001 1.0976549406918446293058015344207111 GT 1 -9033737073026588.9014701201441452174726767893204194 0.3291131109474253057218955490071175 0.0323288962010160513374970096884287 1.0328630182427601707715602018441706 GT 1 -3.9264183208958825901975514444466376 0.6783918928574587273267509286622011 0.0245082706457651554414142398869611 1.0248135973206381247138106432252978 GT 1 -95631871537168798.7439503515047193431315729965161963 2.1517703188984526382792224595348705 0.0725612659854101479749845433998047 1.0753285416530651196110385651849323 GT 1 -126513944.6208090043475134052574809234052411 0.3123154326865001441967243243950303 0.0710858149973337064613210923932495 1.0737389179520384329609853452857946 GT 1 -9556.3382040597908491842604541105195991 0.0321429747096766032348195096667715 0.0831359932839940805140563686030018 1.0867961201052306969577838117069602 GT 1 -1045988443562654258.8696318550113871288970253452479642 0.7451261861706513251374962840607517 0.0986155791869848377743137954172856 1.1038234521975399465551429026602280 GT 1 -342649393015905816829058636455.0956511838477673092596966470226871 0.1866954544345777340040935849339765 0.0005736446071531375421125028668504 1.0005738092041705997730387873420631 GT 1 -2710247974279053424702780320416.6188605788920838122182668239404308 1.1018278303055965535211061698904167 0.0335530548308046311678920317201831 1.0341288756126421224129746542376598 GT 1 -305313033.2047958684646592843014626106800486 0.6469489971897212484746969948457304 0.0050898055961502870014370445916788 1.0051028027774946811585993332666042 GT 1 -4911307015346718392673767678891979.7265811263009749811761300613758181 0.3923686415304354565225629010742167 0.0293869070836687706384219036646500 1.0298273525941414496501074813359517 GT 1 -42708454881637379510400572571.8314459187116824199055315578299137 1.1838639626426544876860225013082331 0.0713314614765038616255777163208944 1.0740033976734429908567364387612311 GT 1 -108126832225317375563242.3921800343223579552423189318403341 0.4338236286162510708391641968356536 0.0923770271975476653507543253900281 1.0969262148030721178489227305439754 GT 1 -28649237536582987931324423958.4613807422628183139968090204506358 2.1046062629628707143333211065768597 0.0640401237132036124416761684043782 1.0661826706383314470388312429112743 GT 1 -1462456513.5722214340853462951391308580649020 1.0081146553713320807311215847000204 0.0553933001862193476643000857373536 1.0569866287930181486869169736555032 GT 1 -886089180861138731891.6949932454019185262517401183888836 2.0789791682537828293598040106395709 0.0033332066111778059384456582829757 1.0033387741195472700731290612742568 GT 1 -323493581780910599208086941437846719780.6643354351485787100062711344998450 0.0677267603342984894001686933651039 0.0181655443914213355916360815714349 1.0183325636486772533289754945559148 GT 1 -326765.6633796291639034683120035525346684 1.8652738682417658957103603309690440 0.0253346389072773991465334220874045 1.0256610862896253090561936779462565 GT 1 -27758.2861040125040447682235205194099539 0.1923868715195653810970003344192426 0.0715654394631203472464309749917014 1.0742553793625295054785213239719447 GT 1 -7682222143578.5574415927779004664535294351673022 0.3419565890110927912960250278084657 0.0799510466206179740495998227806175 1.0833284001596828038895549185671454 GT 1 -130915646733.3178663744326301924995564307096798 0.0302667057535950412017086536147160 0.0191076067495756863377151636867552 1.0192925163094820464614963142792721 GT 1 -3501942125102403837308094953232543288425.1621499646032680439129256715277188 2.0229370532918965330223815538765152 0.0058556086497583240231446036837924 1.0058728199473919516978318222641177 GT 1 -1.8734757812367852768368677780450100 0.2099174966446632157707451424052825 0.0216414892766076024576482585752332 1.0218791007378678514860553947977636 GT 1 -36823964813060636182574571865336356.4119778986471890480947194040291272 1.0883476129888762045469264163358994 0.0422697406902060633483172887907935 1.0431891071410307330477534178209087 GT 1 -164750993108918320433457514723.7725795157065710866736689858220301 0.4797151758746785563812103550977382 0.0486858943064474395056405814867481 1.0499109810718645421749598803102769 GT 1 -156.1461873009044840402084153400387255 0.3544228186324325588032945244768242 0.0820297299197650927496839940519331 1.0855902744195824741012892645046416 GT 1 -3637771113173736639041708927064.8898252609709912973577157968318767 0.0874322251761935118602168782964062 0.0143628448803231946640737680590777 1.0144669889429810474542066216398363 GT 1 -3099631335089.9670040602163586800897612117728443 0.9567844805380473286612479022871386 0.0532517790256645494094812670623973 1.0547220912890482902623103068750627 GT 1 -1165614732019791889764710960900258232093.2717799108589339115690140155830126 0.3112885032043162720123544942375067 0.0548023605693481837096505284774966 1.0563612311009287837276207994471705 GT 1 -21816132580351971.0625138403465346219190668620727730 0.3814380653211140192159555780085553 0.0760617176409296406004610866620309 1.0791100035549604458259599798480627 GT 1 -38192904281038312591190544.4456493710905737011313311583712556 3.0553170315727453886292761924839280 0.0045552439678302859293284019823360 1.0045656507071505547874548797751870 GT 1 -218141812.2632310788071536401876614214513414 2.4948463976754140392295921401949424 0.0422815336688289505508639077386662 1.0432014206824637880470412964069667 GT 1 -2869019863432577881677040438.3949717286447214014643543679552604 1.3738939135942092065366084467042529 0.0201729209855398406319774392843438 1.0203791728718943056331005839392977 GT 1 -710381735085668956406.1161963661877136452407632985341677 2.1159162909253783857720420994704148 0.0387569360710642127562027422747316 1.0395279738669268202663490855809298 GT 1 -12092237082682573292292.1219104245919839550686773021475141 0.7304261900093364805885393797937473 0.0213663002232162066132436764832549 1.0215978639973957152312871639564178 GT 1 -3994581.1593763507210726009377116199898287 0.6177500143073611058559913484974918 0.0690914556575878749996606316097653 1.0715942403193556551855153408704598 GT 1 -1705898287526527250234212041506985627960.9004121114472400000915162479904064 1.0443985854488423080012481737867540 0.0256635856779977416649677855663647 1.0259986403934677974254918961601596 GT 1 -1085735064578393460747080.8313465865193655835249383765216516 1.6920834620293636340510276039425269 0.0992621546448015479480662915238152 1.1045410233609387831315842506725940 GT 1 -5318736790.0916256960390147135117804077987756 0.4297519249719247390374502713932905 0.0579420596353745829123616171325242 1.0596884984792285826136885022909025 GT 1 -61934764.1703992811456712792751810731967267 0.5667719552636606887600524848582237 0.0564049200818943724848010267004843 1.0580581456227602261709321890751406 GT 1 -17180557947505732894512850510292911311.2249290676043964580297448697312013 0.0636802303924796220819046156464052 0.0500646625686919881725381152109084 1.0513613625659174644786305717654824 GT 1 -375260067593863902162927716708649233296653.8229766478485859441277793188382068 1.5977411006912129735948976314085138 0.0640647055346433465875498400963186 1.0662089347388272775670709331803064 GT 1 -3752802.8265038967536008588637813170850496 0.8863007153603362056887942500307396 0.0991895556738694259219583619294073 1.1044604271633378156069154834460557 GT 1 -8.9290135372248661277149387982110141 0.1498864097677742542896544393593223 0.0536528223236254838223723837055060 1.0551457818270382630427486030634432 GT 1 -621.7460591638611495288916761764371228 0.5591196346622896775184616517891485 0.0182421681991034827987137703298099 1.0184106081676054957774755270453060 GT 1 -67979917.7541966288489783020636550286481953 4.6044376968741497974553506539375175 0.0451344204923767405254623757579292 1.0461847028505222564358948129273394 LT 1 -1531710.5198201929436927677083819564728556 0.9733786051093364320827333147880384 0.0764639020190445079783709727678186 1.0795453918761712855609734363891077 GT 1 -4426802812994731786270798306079128766733.5006051516393362005936367132597861 0.7736599987197679348722602386782631 0.0478173274631457949982352144315261 1.0489983796810803261644288758778169 GT 1 -174381704050424724142266008052.6320427187734204249249310540543667 0.8376222200566943358409799510372941 0.0985647294862543548503857867111897 1.1037670408980754444633936083486420 GT 1 -61585.7076362263813166515456008265291672 0.8871874236609170207598135772592693 0.0372718368821231468439265335221857 1.0379841883227215347623262607444216 GT 1 -330871841.6145503284967353399172843153291215 0.4203373606370220277501900220531766 0.0624770884378261086583941690641648 1.0645140824365465074793387944167023 GT 1 -85856127991333094257894817.0643822166414213216963141124191359 0.5145884903470513107385463621209294 0.0775648799673914072155342550086789 1.0807382361287247334806764717748931 GT 1 -16762290987182956.6262822836159134672345982148949896 0.4276255717907850166650986734506935 0.0579600380927467425890647636445745 1.0597075828987282557491668145323719 GT 1 -818224048827.5718010620870060380144976406697386 2.0381457502338399274921193172386853 0.0178736726823709003727790056422998 1.0180353360118154557633042308756493 GT 1 -12799336557600587.1129712286276901146913382276746776 0.6544272853295637363161584215417577 0.0152187097926115050250804637696152 1.0153357028632574493327520038087225 GT 1 -302468328986245837821164130460922223409395.1090045603194750717021597358488515 2.2792848435576250220253944054750989 0.0104462143003467008923109622411369 1.0105011589744770898072515040586569 GT 1 -8135692499614340572346666981124.8710203783185840683291672836339226 4.7191753709509102985622375346882018 0.0905557994835843392661332714681551 1.0949216347296823626031568868189613 LT 1 -262943307015130799054069997931148812765.1545796625387269199220846756543929 0.1341754769843200514820517951406503 0.0458626271093901029609373084714185 1.0469476211597048023744774634248792 GT 1 -2169262909157234574792923201450411359181.9617630404666876159886840147739827 0.6770529561471065173028699406443341 0.0038861468647074918921221670796555 1.0038937175536723834915762612387532 GT 1 -696631182504469990143469929672235.2350237011795322742714318904345196 0.0970607593295807623641628843338915 0.0787864529681374877842116878123610 1.0820634052906512551857715394672397 GT 1 -11734529490521736800804.6949790721252518943364006683010066 3.7594165904336992490845731966512606 0.0684211166521075578599973088367282 1.0708744083092606967098409512359296 LT 1 -996086798383009806529112065258120900466323.0293898468358021468547795411631808 0.7461258533089542657808908438081868 0.0834858018206267220659772469243656 1.0871777200827405062927643075015799 GT 1 -30599386178197.6786203952493693639592517057126597 1.0059230487326873738699329975875772 0.0552330553876329514146514132448990 1.0568170013617862496348333281750438 GT 1 -18489396023659960804.3218739772924773672490931649956827 2.1086858876432477434683597454657250 0.0399895952697620702697779975755502 1.0408111563183241421557602137270238 GT 1 -2997997321512989130035230101674165312.8118804905606193954330304082021794 0.1426037186257698077765886787534373 0.0771098320990961537488036982973992 1.0802450462499597628459827564191139 GT 1 -524638353855962912540445002121599476750664.4842058610398293623037440893880909 0.5233718035495698513961686652841370 0.0646779992190280852624678905891258 1.0668644231186475870888168093048917 GT 1 -744560149755432379467281587.9804831613520898447802238705791543 0.2519061004875811211245126210527010 0.0675267229256914284098247737956880 1.0699147851677611898948636074960862 GT 1 -45750900910421575210338826.7660778674637987864369442207759888 0.2343644054543443414798512558408795 0.0558172317309868990188383807965617 1.0574355211222585598365076204416932 GT 1 -54817130144333084308101350334.4786316797340326866222300832999639 0.2516297446323469109759729519727318 0.0449717457967896862491826357529834 1.0460143533859508438037649307714783 GT 1 -466495.1521825037633313205920355684358691 0.0392582597002887452072319811813957 0.0482468882702163097325222867661109 1.0494496142425701623295629809511020 GT 1 -379571811546544.9659693326531911468566529343756038 0.5380924897914257141403050911180218 0.0293273322934234880921510506029242 1.0297659759627640387040674685032522 GT 1 -216747643564731683156775075776.1818399717697636836681204897837026 0.2971153963199305326691681134581501 0.0077706827752715925232150757669320 1.0078010318549499676991163837871161 GT 1 -3864735798135527110975504861023637464.9680718709243670256120068950190399 0.8133688243109073196533278480223057 0.0161971556020686208479952435688897 1.0163297633891234002635229791655758 GT 1 -4375314.4155832115246692016266700783121856 1.0265729767980112946558528954486732 0.0253180343705888062245069519025457 1.0256440502935651145214732332851375 GT 1 -1665937925703914333393961737971775600498891.7551225571173039923189473384894548 0.1955531909881489075192732211649635 0.0072003335029278774639494361211251 1.0072263810133591521540036575394713 GT 1 -183268441473392147626449740639997.8616848716917192398814857564455904 0.8515903882884529495184116735417986 0.0813356285099339517572110133252872 1.0848344338978307901671062456866412 GT 1 -8726002796517531711526052514138.7024776585581170295701228968127540 2.1834288778183569718979559336810088 0.0132412468851483620373149129867805 1.0133296938275474658311014217067846 GT 1 -2542640.3094891704301534115411964477911531 0.4007640840941811195620143199879809 0.0741080824825835457579350500097158 1.0769977708918477735515439973030044 GT 1 -331860113410280886864.8136808576281944063343737511934884 1.5071784423074047176636978678796408 0.0407803897266717830997792890066259 1.0416352310727621260624160705595075 GT 1 -52016253457.6743372411787199592862271418070000 1.9750903511627167805176064345278899 0.0983969693504319322878257324918331 1.1035809548496556361745156087896340 GT 1 -271368401628525515080224934563904.2643262641641366656052672626944391 1.0739794028994951912036853308464152 0.0585589018512671543994175466702702 1.0603434945533785046925357865139210 GT 1 -38919689634790048831739033220375213.0333120117035737279097411313248670 0.1778472983398426758780758331614555 0.0194772330877736534291657938005856 1.0196694139190047782316876066786632 GT 1 -2162333454868553354678658083019.4826283877944251292917663063283049 1.8322386210625790083742750751954126 0.0696621481181553334346089496316070 1.0722074772122352835813147864109983 GT 1 -41840358085918306273905308314.8989748010323100621339932418884464 0.9252467548796417181824406969594312 0.0658766767022013549670554496668059 1.0681468116774408234317603828231568 GT 1 -439611865074990243.2224131536478564224451577545543293 1.2507957371275652534798393374193910 0.0023843018377389927513676326542678 1.0023871488116293992854552895442873 GT 1 -3.3280304490532341735504624583478400 0.4400650516382908315593288222337376 0.0315739892781869386792644447535256 1.0320831947975169135714585315456120 GT 1 -26265094355798956117371337096930779434695.5346586517807367168472702470263910 0.5201719150239911183851294607137874 0.0292235775671387177012723912754497 1.0296590921645634952792064680066875 GT 1 -73334151537563267800452.0252615615545011737259922794367632 1.5492418586926227049753387732795113 0.0709897391723626567017276365804419 1.0736354952049269363769506874728211 GT 1 -3.5880950480926288924363254465776203 0.0059425499774977281196312191655455 0.0499695520764201315911673088811440 1.0512612444552815539383068238589290 GT 1 -110325819404009313440404306645345.7979296599467662317821984611474511 2.7128735330989617331186243187945235 0.0519250858740040416160001507570625 1.0533217565096366867775441919814343 GT 1 -5728.8016239339170686041969458504990607 1.7228968232206886951193140936545777 0.0332848672427128309273085950057218 1.0338514155973908679009610312459793 GT 1 -796.1785470136783454875529203738432097 0.3625782906159861185207228643593518 0.0370446050753842756183904148857657 1.0377481871304752578273963203638885 GT 1 -27671964611496336082775969205.4029786961780709131644214706393449 1.6187686390680902901363201103608822 0.0700828144671262749258095108102198 1.0726597446139416884166932130010018 GT 1 -56508746774415079844.9728797132076623204941595449876018 2.9930660040587421247629781520173856 0.0486368182773168501641048588299464 1.0511023744081018151868982142558568 GT 2 -5780165476567573292.9748595159436263325936925550287042 0.2584234514741846522839652902305462 0.0502812867388506253450672180702315 1.0515894295352886940475478183665820 GT 1 -272991126783037400732.4653815620702783652002138622815332 0.3871321446544320628037206064533104 0.0913674606180934144477772850424465 1.0958145136391590187793214998210321 GT 1 -15458844575501716580842074429.1108495864974516581912546213584911 1.2240225627050095623296099328585894 0.0318971979122785853407875316437738 1.0324169968405898767931707456880044 GT 1 -21.8124114266802718547880910791740820 0.3787345541343676382963538422825711 0.0676836687729215693957630021629538 1.0700831106956406266492509992923278 GT 1 -850896942719.1292686569134795155438698012826955 0.6665377300066377467922680598425134 0.0112587461448532647728308077496013 1.0113226055979080099301335792102454 GT 1 -29.8549631711847230529037870843254394 0.2627202916455008679772311362541565 0.0141930516604794172831198400580488 1.0142947363085130684622667148982939 GT 1 -13838655542774466843335927178331866264952.2811551783259524062053087847636565 0.0734240795632316573131438008906481 0.0815014864575525356054931541047542 1.0850149926816168556950196858157088 GT 1 -9021674.2851590704778613125070609410790053 2.1403952969706748515189163742033198 0.0199563270079579111130666312919583 1.0201581440328833987002078131379197 GT 1 -147875817633410.5916589328603745180105589442011381 0.0805603499698742978411239282090070 0.0236714440381549222030001935730011 1.0239561140111543254897005194052946 GT 1 -16591348818960888771963.5921679101801359305095183679161659 1.8009321276105907737359270614260537 0.0214885856502742965798724976997376 1.0217228270635828627588615041517130 GT 1 -17138586588965345218938563.9847383330452317181126246590301867 1.3191259764215374582259442372474628 0.0864290423892618742738761910361237 1.0903942295406422225337462194599566 GT 1 -1061299956431730.9734902320478699742311028779828048 1.1108900432432955224740015120453629 0.0301000757132914059779713451936919 1.0305623836456303331397439886453533 GT 1 -674790732712224315982380588622.6211844815765919506624715832067216 0.8960824088190150530047105417971314 0.0501216046137864080340768606753731 1.0514213074374886612115737445066656 GT 1 -829169164911.3470879319382657593163759730903198 0.0215417471066836300859137104218456 0.0383154309620030722567063626866284 1.0390687728972698234813122216202053 GT 1 -99885865735153388387815.1181848057233291186328704467158424 0.7464212626237450030848892341497259 0.0640672802444647920247612518333911 1.0662116856911400331281053938806395 GT 1 -213222655832418124341343686.2641888641047000970865582950599730 0.9578297070854169255211967024721477 0.0262008248055576538824989906137676 1.0265501822307710241886728691849848 GT 1 -10085581525195772351609618264.4288633702375791579653750984507267 3.6429869059141073813815767861089375 0.0729363369190127502357365061457960 1.0757330393116327862433404451048849 LT 1 -1495031278466121596653593.0935398715294352611755879291676434 0.9384017548325555265800755589849324 0.0827434182118063409901341963735513 1.0863680402061844433366111459506299 GT 1 -9448.4236686225728307264295616956296414 3.1521032488453472245871057301481258 0.0945830484710367232536517308526955 1.0993597214595409363614014471293004 LT 1 -3619399300940610290686982.0512622788095220791346306832177438 1.3169941199228807947009403678918537 0.0221716579316307361761756509627528 1.0224211437101404334879814628255650 GT 1 -162135.5917840280210721315723081399026403 0.1695202751646045364522787543613209 0.0891582099783369105424386466209078 1.0933860630809016885680196403328312 GT 1 -7836639960505047.8374137520915300110190947442936743 1.0866505749019016941605037513355302 0.0574910851759659931611333149715970 1.0592099010054641116562228984814743 GT 1 -62472979798377718307767.5244337238553700034322584278285122 0.0182095991415617096609351915207757 0.0783049833692624132924860526949494 1.0815408947121857360157135948892835 GT 1 -3611811494.0143652780012061454207322431452562 0.5894706907402205471171285670672236 0.0917850830713000668597133618628399 1.0962742357353771360727832573939762 GT 1 -507924775162842461107342636165290808.6991461828510780916013981308464009 2.4842286356940875903601375403933460 0.0680313433593124017714533148948842 1.0704560950759086970184458969134474 GT 1 -504805330565210726020.6123548315376460938337336043843537 1.9098714809702493631605224582635797 0.0345175571328838585898301144296177 1.0351273617769750852815794401626337 GT 1 -828251318222223366175702686245520.9916548130305691472592124655433780 1.1562426468040228024543665995147463 0.0418298577442929401737283019101274 1.0427299152610321029546655221684162 GT 1 -18.1983104513089690155259678376663692 0.7730771986702870255775814717266568 0.0417335661519822055415461244677360 1.0426294250140889610555899775275270 GT 1 -13534.3655900865956845507748140813496874 0.7671541222316003965537098877070478 0.0490011460982330763611621404898167 1.0502424215880860602446307974112712 GT 1 -3210142278011910253841471398867184822.6964693105822732436486233034485107 0.5359940593484388584412707788007958 0.0035248303596754708697243691762364 1.0035310572109100583241723108896991 GT 1 -31728310059525448795065803037.1613687683918777421058083380914953 0.4397537683948261228751467273577799 0.0490798234099961487924932472986046 1.0503251562477078299412373225432050 GT 1 -68313397013.6829226885256911854776793400254624 2.3065715841629481785406723449022739 0.0643921935266600682222242242015186 1.0665589004918948058342470459276777 GT 1 -2474272900645721074648987142400288.4941121018831882140734458521036039 1.8054572297169499679248513023755119 0.0142210133816572732789903569945897 1.0143231010078994315775308002514893 GT 1 -14572359889627998908464344715433385.8324338431507323171083135247891479 0.6152115846521016924901458106016734 0.0222950995846475147341628152505718 1.0225473922959470891949206943856631 GT 1 -1359470054836944118749001284328363357142869.8935493482573128735628589182374677 0.4088876288004988576004855027538659 0.0015185303853227341629508828295702 1.0015196845211298095416829073210251 GT 1 -169799152815036227363814226954433.9579250113564979019122061756864658 1.5932032423258920202726831052819615 0.0840873244610958962734216091149375 1.0878342512335361083710348381378898 GT 1 -886070293041873822973.0614503744578106313878079127958568 0.1269805070951616081667550318833554 0.0971439758960060268669963649803490 1.1021921800226380981576760612645682 GT 1 -165305831667945936416893654.9094689131023398119748103349090780 4.2353005069033602201772763426117955 0.0088793309091322579915605665263387 1.0089189870892533939873730811951102 GT 1 -14778329432.8570915661676536402825044553643027 1.1368527019787000415387372545348012 0.0652928672802529908665364816527906 1.0675220257969884591988000800826048 GT 1 -10432186712642346998226474.0468511827736588395118325681483546 1.5547468172426887310433098389598316 0.0170138787063599718092812354388339 1.0171602776593201551396590075249989 GT 1 -6533562.3741395451649347354710588230221269 0.9755129896231928320650802762181033 0.0307057886413516867452564623281891 1.0311870894825808593517631620555585 GT 1 -65063.7418694870080714403956111520376082 0.1238814534732173372691337605449459 0.0457391696315979039390218054722718 1.0468182378079980235818627092084037 GT 1 -14845026320568389908560875.9952399345989957158630355447724305 0.3620265889441641998608925508946190 0.0740911217288040172099917990671781 1.0769794527727298045265106850400510 GT 1 -20428194859919679172911184637928926166931787.2708848374525740819851219316846810 0.2565986052629468803264504238323227 0.0921452747682832575836502134498652 1.0966709074194846563127337496031560 GT 1 -117039612665174735610263719.7147731749191541456396972647642135 0.7757709796859016365775116202916192 0.0621265156818341246715647124408067 1.0641402171984074863949930377997780 GT 1 -1726976242078618386547210752136691.9719651405692091460069666975604286 1.0253751974266725755079920593444866 0.0359137591183549853311041544658823 1.0365745268775499962152535973330047 GT 1 -34723478272599.8060027807613950026021095275845384 0.4618886905285195413713906291679760 0.0706351863307485893322684017928617 1.0732539222374656709798786033656651 GT 1 -123266937715381179530.2457992883917601098937379654996008 1.0199440540506179331022590335734920 0.0372430904436623684617477648427676 1.0379543294171700213724282115426959 GT 1 -1660068515344441.3780277707667740757331016956383826 0.1557914456770726263216389986258807 0.0811429223581931914740143237582484 1.0846246881530523718945082172647696 GT 1 -544921105587000321950896156652060440962322.9904822689878991757672880749211521 0.0214074099009605820831082464168532 0.0123134218526680296108504453116851 1.0123898601577219412163416999170491 GT 1 -601.7754069942652417487693585942297605 1.0441431831250778205853668685905650 0.0525308907525206298076422178395468 1.0539609449343551743286117102567182 GT 1 -1132147786472110459988280203.2497025176777768416096885320997537 0.2854058094771391170224483199096450 0.0965777407562398789810656893893418 1.1015652166543305209482219807870253 GT 1 -61166862612759196565118150573509.1899558476414914368367520957365308 0.3995283823997219483158817684806582 0.0166438981135731968229585458344040 1.0167839641236686030245181849394463 GT 1 -149588028096111.7341264860753840653986081295641294 0.5463992411356150588573994370876372 0.0387924962261277583805877617050414 1.0395649684775191676418950196789263 GT 1 -687611789610763.6281313782630129689692414696423736 0.2025712648799701648217293249674514 0.0668936007355203408430342504495047 1.0692360446963602473724664716781389 GT 1 -821961734776906622685623.0259530603099202691541131920297007 0.1892723161804232682573447072649515 0.0774182915216760483341110848561136 1.0805793341135684690416521535858697 GT 1 -1172211773546439314.5071147797036661743374723545470010 0.2513058004662802881703911915644582 0.0936435936083226024283802352023577 1.0983226657562936426435733191692703 GT 1 -101695845830268328263864913068306774.9741223818069880165660414355530063 0.7491784035222278128761086450295000 0.0821549575272183372145556798710387 1.0857267016590669580495434432283586 GT 1 -3387022925235489075772418094074588158880.5985248432368017996769384624982588 2.0590933247041656017073549581336284 0.0426833928690834178310090718832003 1.0436211092946692470242928067453325 GT 1 -23811392834815403658132292066.9504437384337415801825867007296042 0.9754611398555285903293262186461822 0.0989823617111142766703072078477469 1.1042304452181483692948124089162590 GT 1 -141792690449575.5906804382932209650486554248347460 1.0435326624104534552965875320648799 0.0834881105984718100800191515236449 1.0871802391716511678939932262792442 GT 1 -139308.8849926475291053660933308313292731 0.2787480683093875249565780912362853 0.0998752749495321319999845008649553 1.1052219418702083801125595633927407 GT 1 -465935832003730415058792178133081.1699593509188998245082100654343932 0.0745732628808765680267707188332714 0.0828626046286346960019314789197562 1.0864979865737369832141911709294378 GT 1 -107898500579905752782640844648605122650904.8831329709404454436067547415534289 1.1284807146628832139040584408676820 0.0026299716797089221598772890813186 1.0026334361308323186278908012186422 GT 1 -2275100861447923986903057507344286397011009.2279687615911086337659389721104788 0.0646073587121139298106890905834113 0.0901268665611941882098842492954112 1.0944501029937590480951311126157334 GT 1 -5377564115547541001300025242927531.6347028400916047596485111648406876 1.4006490633766907939922962931323863 0.0305673886559828029574970134142199 1.0310443153857010843847484249619877 GT 1 -15555067222297061773598953547.8062500341710228782463508304122539 0.1548661557898685690827711200737997 0.0741735379401664696815104497333857 1.0770684678815543077054316346182000 GT 1 -1754590516177944139398254.8649979698004856854493852900975639 2.3905316955980781304514935909825777 0.0494335143746544220459913072109672 1.0506971714458847121343130963387923 GT 1 -117528700.9596362536142158066036715679107474 4.0084040521675031731559341418541757 0.0766459412409717018192551391522840 1.0797425224113602636489798866156454 LT 1 -146196969818903100228609096937592091755.6139539718747782710226390525422692 0.3266515107425548848749061991903074 0.0386619428998786730298130980552604 1.0394291554917500203322743742505552 GT 1 -7608531214123254717730523090463726601176568.7616064911184787454830046100904589 0.0998298898602564694112347257232942 0.0759243201876835166655959216037672 1.0789613061356640575075896480982689 GT 1 -6129877869759501906496323.0553314223001241117439691755785144 1.6621748335149671404163110803628976 0.0400434163174708614639939132760728 1.0408672208736500466173033050489070 GT 1 -1461025718149618049983206463210683065.9184370640165160441873548363832084 5.4038310097802805313639202375736846 0.0023135164035042325270275458719778 1.0023161967173435481532356317447925 GT 1 -21722420930157597431693653965152984898133.3953118854788218463512550333591853 0.2316020796578029883004019614190631 0.0642941690287076491135121896535771 1.0664541350521730771929041317733545 GT 1 -754085898750383527803197540810382400702.9365035728844871502204365109599821 1.1649255858411101282725523623355795 0.0555673904265703189769375937917887 1.0571709449583607331296103884844578 GT 1 -788637143495675261602912537.8535289529874365648409960660369912 0.9372212803631374526629404965624583 0.0872827527006109476852367811891340 1.0913291426296462629336474011052837 GT 1 -31746223898.5893409903003279387924570353605673 0.3452410182611477230332651847498893 0.0665860397792504556523479037283441 1.0689064892671997442531766620175667 GT 1 -2013895036770788392052074740764604626.9442444253690176478697486109543851 0.4184426224587351973081517142356473 0.0624906564984357976041478468843074 1.0645285547855669402438048033941951 GT 1 -898324145684015624559.0106445712259298855131199116765151 0.2810227357235767778131139715613685 0.0134089584661730530894477229989535 1.0134996703637736174175744070402161 GT 1 -1200599017.4498187785560674032668209530169349 0.8490825436172804339146049523234693 0.0501879660950070746350898580658979 1.0514911730116100409384122110620206 GT 1 -85957227063117.3301633757646657487883333206539591 0.5734107590596917611015217744663576 0.0975737569750025259832733940213260 1.1026683172948437539437890082805041 GT 1 -3575477410834714742.7114840485882051277354826945295154 3.0436832390530159644745790800337019 0.0384696829100958506585366163238843 1.0392291834156535519980702334270204 GT 1 -150762023983667058199421743937350273703.3840900378381529444978936270643423 0.7680057866333587269101383395469987 0.0612623267862538258159224861490060 1.0632192070539245822966776619389973 GT 1 -357573.7039934310584795848579754091196782 3.1301439570583089495562149770668000 0.0109718634811474160076643227155314 1.0110324983011582547093017340012901 GT 1 -12303.9378298951566352499283071683594250 2.2055620002252590810963305002657124 0.0153134226874873704368022466935347 1.0154318840668311326328847529315349 GT 1 -312.5903267850316293356467048910839133 1.1482904794971016569717658990326281 0.0064101699605063707673148294035098 1.0064308033228038485802343865920167 GT 1 -332201884597007536523305855261798346352288.0322900591984495489861277607677730 0.2932841601315959664295296614603938 0.0536854248149022774771617279054146 1.0551802332986028226992307954047522 GT 1 -3980525660410115876814273201.0699761455434807412822670408956840 0.2522524588509380831154646458877477 0.0883049114203134819825158462431498 1.0924496775071543711967861366700866 GT 1 -1593335819917440743655289419.2321084944905764552430915434984956 0.7089693224101208095587137213453759 0.0588811316678124200911698738905845 1.0606858260864286607651792395442413 GT 1 -275884658965286342490320235.6602058664640145187166785896021845 0.2304652995500587045130294353311343 0.0418687180401629710043747811209047 1.0427704728636976288055816644143979 GT 1 -210877113149800016.5583600967573823237518215256681567 0.1205918657915147005284977455641642 0.0116039202348111529796827949587751 1.0116717711187802599644039992946492 GT 1 -2.1684510229322719803882455963491621 3.9007572920585892736457588912730005 0.0630297201978810796891414804159802 1.0651037157076748580664369232228169 LT 1 -139.9637710466022477010904408480525756 0.1071300041784851890980406285899833 0.0786655534565361485783588096208456 1.0819321745035060597248943618604559 GT 1 -316668.8535487814226941350168950802138116 0.3001172179709022446809513214135781 0.0471290632121158363088805165190195 1.0482758128434790344025937423000079 GT 1 -1678692974315521550392435.9785893407586104036004306126064335 0.7352589555419438790744747472801864 0.0354503506915584725663409514550462 1.0360939712287915441961403376383617 GT 1 -40317348870707344635125092.5536482368327822589000969131839589 0.0597730678703957103960776224938864 0.0612739745508371192699478924893145 1.0632316150324029285791339356648427 GT 1 -8238384595634.5276459978271883216460695726367280 0.5458049824696326463792542068716324 0.0332401877660665417174237035890251 1.0338051988343860129365291701353862 GT 1 -505088739754767.5194470278512849896154707778746977 0.2070760660618695506110152210445159 0.0598537075683855046952912460902070 1.0617197855808195212064493679502435 GT 1 -862805275791601335.6343880141491417978593224215119659 0.5879345944389337573707391207163584 0.0950294087948952799917823141548387 1.0998528317161759567612205167269672 GT 1 -2349050320026453003241.4357364148388392832967249004455096 0.0636732152608268938785536822816708 0.0783238980234215131589621293320300 1.0815614165202675007768474756865584 GT 1 -2662795112512207657318416611335873402231671.1902113511091475778279426731975985 1.6583558996545314720248059845558763 0.0393652004655568751677200548712393 1.0401609635343412333938119369162247 GT 1 -35.0935542673597953341749353212953128 1.0144635879435188205160303102534434 0.0679846963331227646988431905671242 1.0704060441879260793482174194954096 GT 1 -314297748231222.6053817481061955102253816479469110 0.3935347916842498083345952865966611 0.0350287447208150334559635629802856 1.0356569653622568184615826358404606 GT 1 -77183228382214974838370113.1157863775951060248361080310698476 1.2324918482276463480510569989866989 0.0324410551578100035954568266615373 1.0329789310325582451226415337002056 GT 1 -126780595925735.0346329273749458435222327636884566 1.0815787791924069782316089536428536 0.0112769602182738748083081345669583 1.0113410272437296156726135132057055 GT 1 -208.7069861027703063386961476677099957 0.0319130717934833080130944514218167 0.0629594362125705497673843356349553 1.0650287065522220976245442755899484 GT 1 -2191928839568486448818893553100793282350386.7455168001888835913744210717012264 0.2111937662333236877674225253040572 0.0156572370394119854617047556566567 1.0157811062428410823367146243394308 GT 1 -7223.5115095424189417863051624901577816 0.2639646721977565284484159939455666 0.0671845816778912448023599824670978 1.0695479344464956872713061506731064 GT 1 -6760562153894130363604694921295819839.8607190661214137249898419200087770 1.5141274249538694971192255053615092 0.0942728740166136156293352437405216 1.0990172037534050776254169350467670 GT 1 -4388912740125495732857495.4113865689852841771828147017047130 0.3097980640055462138236547203458063 0.0045658427560090782684279729422167 1.0045762980530119374467362362206851 GT 1 -371010.4511915087495031550608897398507917 0.0427104894104037196664439510281520 0.0286375940607843973710112144998153 1.0290556507261085064516428871637524 GT 1 -283183492134434253623403812320071245.2997815104524795711244677189300749 0.6905150404632990687913368781016970 0.0388654542291361363407231784675429 1.0396408738067093459691308340932384 GT 1 -2426696975.1050576284078824825351536679447217 2.6974096830506498852603243171843248 0.0013104305302953864086741906365669 1.0013112898952234859369614389295451 GT 1 -667703909537109535.0153547459926031349213323988972241 0.1798183084026225764293355961745146 0.0751769867631931234631488241720393 1.0781528968182686825687134040541510 GT 1 -25354115716317825814159200433.2976149383074888147374496028346800 2.6507622758797710722935455123472330 0.0960801103825818862357280996474289 1.1010145401965863549775683898565946 LT 1 -1908831720776866258031213524765174856.6889493482473562992339531518078282 0.0426208090562159646746242585999854 0.0665667802833545984009707272735022 1.0688858560883262743875979888397272 GT 1 -1551995481463878698020.6995363351953510827355631029905352 0.1205414447151116805468425702526413 0.0112816630044586924263244407556521 1.0113457836792326401354774537874243 GT 1 -54216339916.6602705179199560884859190949280969 0.3244423842173854607876417370798481 0.0056145201479950585434452341172350 1.0056303408109847509778665200707954 GT 1 -79929509804146188005216672698546745084.6928928956262911128685031553197998 0.7302262918378102864782339774498996 0.0009272531862275180974374765918504 1.0009276833513984438903381302652665 GT 1 -395928797581622950880947215797132.3773253232064943917522175350472701 0.4899713684795314226499835248492218 0.0977359223981505995504053786037883 1.1028480328080606810802309977893170 GT 1 -1.3893006314459630612600445889230413 0.2559957215053978233662910189733314 0.0968319083340304142175530940145715 1.1018465948642157836203216352576855 GT 1 -58394141691127370217819207320965.4178698613119294085838476022405980 1.5360338022714444150499387885988370 0.0380300512545371383480751518936907 1.0387720671146864053365822057624838 GT 1 -72036312571760184305775983067521962142744.2342709007039642631976517533886729 0.6923491556723923066993826849612625 0.0611898010231746657671846410168720 1.0631419512201965025779752702912775 GT 1 -420957228777700633073515.4846021018051421994012977642897821 0.0106276325864143938288571915327953 0.0690248679265104092832394923559603 1.0715227130462512091430558034101739 GT 1 -79765736404367373686820344148346769.5019522268003263819747875638573548 0.2934667102254037147055345062762199 0.0725104391382156040448421461829781 1.0752737396994287911605411175138353 GT 1 -134804008.1685680306626139531667876768688705 0.6994793955197062319039174338548444 0.0141451525453295096285421664269851 1.0142461487512945781497924214742366 GT 1 -16.7978457241379658819330432854990083 1.8668503494268762010760492241475028 0.0501779595070342554440806522504712 1.0514806377320972399457077342278861 GT 1 -288246015022026529833143251632398908.8183100460853316186860311315882396 1.4072257603881460552174583069128208 0.0220362656833668294291990300381998 1.0222826911106898427425515112401433 GT 1 -2654665301884432113886078991781997.6582117868476684922633764805466437 0.4493621936833959711956192546520243 0.0549589644597100993026679863530981 1.0565269285790238483351843053845691 GT 1 -43698.8701078374301670717832507633192209 1.0432100413115417361757133011346731 0.0558445450892225111790803956602066 1.0574644495821099139191812290412519 GT 1 -600970026461632537597459040119448016529.2587206779059822600221897589998738 1.2770160176423032476458556737912214 0.0696182661645090448715754457787790 1.0721603105633847457648855737927679 GT 1 -16279.3592398252875216798100724048981517 2.0428607563604748428505383425934105 0.0399089603469998922044174735804815 1.0407271660447420279320910981141913 GT 1 -5917459555421603951168939345969286622490136.2042355746878788117238115782782670 2.1222944062299295209936310742255514 0.0352857760813073007099007078868861 1.0359233625184598908723147994677886 GT 1 -65239902639691250903706199161.0898865728140802799533028175527702 0.7401774590804314460413065624129426 0.0566112367835863352997290028790802 1.0582768191458693421262544150740798 GT 1 -1110356794973.3039490262286699367645960441083615 0.3294137500718411655380788733756369 0.0064712845928724134634253755851620 1.0064923141295197871291855316952517 GT 1 -1672206411571955160009817748711.9238786589706676914861357503876577 0.3326007317470187005432468038489980 0.0005733919762406736089088778077472 1.0005735564282865426318633180366919 GT 1 -6.5169728572591804121303833914483756 1.0029834195912601938594385713594466 0.0256058808761010654054277046568626 1.0259394174265945848710578921762757 GT 1 -500707581134450009758305779797.1242001318817751235892895261178543 0.0142601084409716951217075849995198 0.0016089224547091366838626555070381 1.0016102181604216131920557291628404 GT 1 -47811119738115357745707338256.6068721832784796994473769138259562 0.4154260474996673244154904980757824 0.0634372314115466670033836653823942 1.0655387346900644736575814264596312 GT 1 -3351890522065.8402879622761477005745911443089943 2.9359619533167732505485630407900301 0.0098092921528431763426853104241001 1.0098577202160371316597490667530058 GT 1 -27654199677090613068548861096265362.1411083037592576916253532807124108 0.4192606680495053182408423401687884 0.0398538335119368477913520371429606 1.0406697493517398412714651767027504 GT 1 -163040783175865132068322327012880208.4212847254314764400978566458502115 0.5366238254716400576676088005370855 0.0578333291246334098085524959624970 1.0595730870678572944643369383303191 GT 1 -100302740.4047855362228782758581848666548022 1.9655792334999894306236414196254731 0.0454813341952127233123466071365500 1.0465480804236901157549020986085569 GT 1 -249780158.4076688842308348830811777973479380 0.4348081472350212321023861523604062 0.0021641435695744277868692291625639 1.0021664887123639854670471327752383 GT 1 -3323174165397484360411.3731043839997846433439108568898671 0.4148149602079211613887553510075735 0.0860444754398611601534886493496073 1.0899733689306003685343848826059159 GT 1 -1717436993019.8904293782819267121721265583561146 0.8447483447437912503098395706069714 0.0225152344961853225140515091608039 1.0227725724064040460887776818426076 GT 1 -53560125966084892066032144509483303.1094238767440215557631653061237707 1.7881174598681360747852013532715695 0.0747020177825140991245307130119121 1.0776394504087845728259074930990088 GT 1 -3111210534179142463845787737876649731.1769684704087440585152995319584182 0.2808474178813632501793148195357919 0.0701721614811264218516964331446928 1.0727558298438128573060294859242100 GT 1 -458147019150.1908086607142753400384363048138479 1.9289781369683474819050612610859849 0.0157239708829490818438320798655011 1.0158489038721548092780088470382590 GT 1 -297591843830268060834295837879556784.8548690936784765022197609669341918 1.3868892125276423554074931470514114 0.0140220733087531245069146402279870 1.0141213113529614070144211199977417 GT 1 -93468457978141203580849369.1576812684020582561669699025109282 0.7173678847534736090749391675804166 0.0294397390945770679973827754409040 1.0298817856624888256115917792342573 GT 1 -1539235110688522516123003186.8767416888371420604846667732006498 0.0506003117665650449654477209920480 0.0917046611720878536704803118925984 1.0961856902410592300694897656878149 GT 1 -1371359455.5326916608483975510949170279568073 0.6814158285279094516706738191023708 0.0772858280204894471093141227322269 1.0804357652660823259160621882943741 GT 1 -19319966111846.6315634733263572267122983001416836 0.6236344851802832667628333049951630 0.0532551911846674432407178943646315 1.0547256953783680978481764278412210 GT 1 -159854377865098811627440.3197795030431775014803892699319668 0.3389143431350854949074065431637862 0.0060718986760040095382175310983803 1.0060904076137331204480204736188604 GT 1 -21434.2510737214761260322516079494193987 1.2436787694250491112931828602378654 0.0571088911672471780677532328512971 1.0588044761522145402919543772460275 GT 1 -4414449220.0706348554467110459340259424128400 1.2255029512113347357208878172354192 0.0557437363214886795568365599254883 1.0573576839156641469608393246545478 GT 1 -2823774777121425.5213581483263378932837397926304899 0.3296346863899752306443530558591263 0.0356459180356651342474663742265204 1.0362967468692821440202441136392886 GT 1 -5662750878023.8455197121031998922125208053912096 0.7211950204523677088828673514235741 0.0955608378669619649999251760289226 1.1004402377322725072414427485970461 GT 1 -13146713728585691068395221935601208.5465037843489143576937672740014906 0.2030526618348533770367573196250974 0.0139345532070320025501322563064247 1.0140325505245178099153466135710324 GT 1 -85628222085206283358907816014.1450935023135054357353161076029810 0.1108014207449594335147645120105953 0.0378750523916314382234582903936642 1.0386109535817367504095226892637594 GT 1 -7037203556402871102663992452240510286079.2990805267839307753149416593419392 0.0289843232792086034584636027180122 0.0392941681246786446982645818067278 1.0400870231411081257111587178725771 GT 1 -68160973080.8390781244474073348766768630786645 3.0031824717314154853082531044594346 0.0640584964258528002019528561347632 1.0662023006389793899050615656200788 LT 1 -1.9013953553390944451092733262505423 2.1431108505730263668898695270802176 0.0987815668166036872793244623255280 1.1040076165904010748634327525009234 GT 1 -1410149574901631641623059469413820898558700.5491725631310073689979778369489137 0.7103028638762006170643623203059192 0.0612416967380428192740809555645483 1.0631972309235143728248139345323192 GT 1 -158903699399889.9856453587681113577417078163298790 2.2959078646794476717602411065221650 0.0259032995758938903156782752747384 1.0262446985181130801229994261981753 GT 1 -1757297881884833510853124618776887484854314.8527530780605740980231512187165776 0.4092320763424842030376558010623414 0.0619360429067673332077235655654532 1.0639371477660088959419810395690177 GT 1 -919733762750293107.6558943888134286113600699540841168 0.8735204040981603244665049267577779 0.0872393617568029847939267834166812 1.0912816033587958382348212682620729 GT 1 -8030175173234807170462258249502607.8893424843736844496172199399495062 0.7936936795515515264784210183349373 0.0630085997973961728979702111540211 1.0650811747979954799655902468785262 GT 1 -122862.6895501162133907131186417162765098 0.8354051094468095332400257318854631 0.0495984381718908783693877711949031 1.0508706870374499445135040402523788 GT 1 -61795757829969316244396431.9382330486313730720477981193137220 3.1060448057184335278750733633959941 0.0920674839018052996683571000651697 1.0965852246205807773271799418701642 LT 1 -280545107693990882678199103059182743863849.2242253359348758057685724903485391 1.6056622631585820049314605978549750 0.0547182274454279363709873298482743 1.0562722239174150086861418037658624 GT 1 -12867376465617169872242579123435273685422643.8628645783738455705481104419209732 1.5719126652254761388820668660017249 0.0452629085896152534788162659883418 1.0463192733550457405406657951514000 GT 1 -12283439858564.7116755689522408880969908698453635 0.0254712587792440351568620277044078 0.0534417910476403262157396087053794 1.0549228110664813327982391729707248 GT 1 -9382900011285553765677406651.2406881220856799809052914795903363 6.4585633995491693308428009728765431 0.0634673935081278798008156673234550 1.0655709403075520790039865994836440 LT 1 -14449681970378689478827464594683.2495657755170692846955165324895779 0.6003360817258913295622268036963438 0.0942475500100423176778531143320354 1.0989892442810391354657430207913540 GT 1 -1045506005.2202698209519194203569487745278137 0.5579784824912733150868740203441227 0.0248880874716676710389399289038564 1.0252030324909079704610083510383066 GT 1 -128996019008943119175022437736035.0164281343068588950344431190370928 0.0255961190110740606277802151651288 0.0839188479727012394283092437437351 1.0876503243159509895756116782885234 GT 1 -856232377195125340105836750605810084445623.9115852026151285330174914455038066 0.6083639590224357404531597007606413 0.0369127478239977945980524096661729 1.0376112667442200839044940923202920 GT 1 -5351425909489102.0453346129339188008574000762070783 2.3604477152004917116463923228573217 0.0665991174030905660518630797555135 1.0689204998948639058898072113045538 GT 1 -371654344819172260499092937105936119.9987881386275261052335082977147662 0.7788270756400098867169344475359011 0.0361411839923504862793739174815551 1.0368104515209807873914256898312129 GT 1 -46316314117510473008228.4778140694899631936691996862075418 1.9956946897950496255223932793131690 0.0830264270258381752985925803067048 1.0866766261440427168210545470051939 GT 1 -888991647660709348631733718482846158664.4624247201504404439969495193830390 0.1594441528673092974695918356982711 0.0851192783496354471098707478960765 1.0889615810561299774102783180012182 GT 1 -129258135537988.5311043869783731149166803457020748 0.1352205716529743151806565373634647 0.0869508343431067072840490093221294 1.0909655491723392710367747015383097 GT 1 -2691653479626641552.5170584549611250498088866506993613 0.9731659292053854193846360778929379 0.0969611840018748073692866227523434 1.1019897408875385795364365762031942 GT 1 -68594361691.3332367960879526077579475389470675 0.2104892004288436917680712709895606 0.0800117950398826712752965718867015 1.0833944297167615204067632942339811 GT 1 -743817986878146809337457357427707.5996366554809009914991444993577687 2.5609248310278969324901269497107262 0.0026143093633397592885497239756385 1.0026177326376971547037212783650477 GT 1 -858733474088358249.3274322361798821703473276764209290 0.1364952494780397605325100308488242 0.0200012472344592352050710575402778 1.0202039800065530261454992515289345 GT 1 -171580251.0750102624216426893905310223996343 1.5057655845399872544809913533348126 0.0669401309386329374365498607706432 1.0692859118533354739971707041966568 GT 1 -4986.8785860118979307503107203067564300 0.4212155384939685504690079449432676 0.0767201649594333715885206637816594 1.0798229105367497740035617727672031 GT 1 -9671394125.2826104790565763488647194835671986 0.9781918569129687891794193850986014 0.0819408714106661853038377842422482 1.0854934802078637797987647333808883 GT 1 -45.9248813845873782150412419616145650 0.1414927840057286946242856007466724 0.0291630107118570663649046661766788 1.0295967039930194890329168680787123 GT 1 -1891737538110951555070895575.6985963278074105837399112550919373 0.4162677879398959821640085054016898 0.0797684617223674838030206984629065 1.0831299685622417024773229435870101 GT 1 -27061040.6824663708120044644785835679391487 1.4873315246663032326782706767209922 0.0918300583987221657014747409380475 1.0963237575393275273019757792624663 GT 1 -116520767207274023154.8581679008983412592085999338459691 0.7469725916596166318162882471038256 0.0420583250547209565298050014881196 1.0429683849677159844433847867197455 GT 1 -1163091323820740648209321590510125.8190080902974786075501935235503569 0.8141612821767604268293430448664833 0.0041839334538166301681841284776869 1.0041927105939247113903800169694892 GT 1 -4364452617877355476237479314.7818070094395784317324437099938045 1.8950420037808630028395253184915764 0.0696569473776875577095529586388610 1.0722018870646122281536325489823362 GT 1 -39011165688.0617919377674842558572434720998499 0.2226408937333041350334770698363733 0.0450093619702093353186746306283556 1.0460537416596244463722968100950701 GT 1 -2145156997999495378523152.2054150075517892996841378644631326 0.9736195530253080101765494754212995 0.0731731198262542784731254256320153 1.0759884836358843888589012374192232 GT 1 -36473822425852147276074764442912598537.2115345202843971372948303707291352 0.5042375094851636650211159379034509 0.0180800305855249823828397109940151 1.0182454714900440255749186973613433 GT 1 -16683306844735571960062193243936222806460.7358951519232754763866908827959619 0.3402786793421779793396301083026554 0.0359294819111468785915220280545740 1.0365908355025817458377171019695881 GT 1 -235267355425.6662693343360711283609340632075762 0.3771041823227343476523223056978317 0.0044740819766492483898916073505175 1.0044841206351272716783914772424813 GT 1 -19735101.2029402541276897808954334225630289 0.1194783475302458185904576672247017 0.0491959721144388271965672403430321 1.0504473071929539923144610435754039 GT 1 -166353673195588.7977803072810433569603707343765083 0.9723231133934449623778979047889258 0.0736860197177775770015813444989289 1.0765420302286606483874711308103018 GT 1 -22834804971488729603130469704026.8197148810195248716478700723446214 1.0525544095995298680814934589856412 0.0799678257656000248217816257406506 1.0833466375566439640100256344164414 GT 1 -1744755658807108.0690683316233032658668785049861091 0.0633923012680541752358045444256863 0.0486033062249266294678246205038606 1.0498241701055361428287165743101964 GT 1 -630439242497221360959862659583636733.2154442716770472362524831175904763 1.4235699483452445340198610449290381 0.0990653958443220166125518243822617 1.1043226054111997290649121263171519 GT 1 -114929.6898100571331659552080071778645130 0.8282398424588896039823867612516820 0.0778986733801603009494399498639733 1.0811001627439654736147357669755990 GT 1 -144934680952234.0444895978170564594204417402166790 0.2198509224872921039469019360696643 0.0345073382467738676764812669385404 1.0351167776051899234092374623390256 GT 1 -70119.8005171807828941556197417290954742 0.3261368302413833182891460730896121 0.0352182769503461850217452097884580 1.0358533969597400538259647938662424 GT 1 -387059561559422895173897.3484933351609012263394492000450694 1.8130904025414480895410337287574130 0.0721409180575727245803758808301282 1.0748754090816638340246832897893426 GT 1 -11063545259724294815868668735101852526.0700978723575162667340796353308122 1.4203707054040647098641412566861747 0.0757014700941494665328978429269118 1.0787201752072598846781319030106104 GT 1 -777560956649217212048205144998672308923303.5859727324567093289053453944369753 2.2270152070299048319435954092188935 0.0970086774346230325904106308401895 1.1020423351734755228428066528589981 GT 1 -33503106488099.1307140294609395690773836098407316 0.3474911146549393935534955769875641 0.0642918772164342246157427488784724 1.0664516857680167554061350660320409 GT 1 -369548282905.3829815714398173145117478815317102 0.5446237464885800278059799683766774 0.0673838150874916504490590209321365 1.0697615401450508968042875791449172 GT 1 -361483690943874.3559261111777511701279617705849582 0.4262338445660843607283991667081589 0.0575630239043221112582544974854370 1.0592862307597956219845202463012823 GT 1 -284500062237656.0072756786448383574879121440283223 4.1998383046830253722126042358059245 0.0357123914953866208941318669693160 1.0363656797976496167323811786877966 LT 1 -52667224715212717205989436184048814526002.3219888736315299043515670161814212 0.5264056546826095111110585695791895 0.0373984846936081811704529885263959 1.0381157479336151384602097741242407 GT 1 -1862518.9387502394344651934566065999622515 0.2075467092198490281969984357469563 0.0302225053259270251267214503818563 1.0306886207318606792216562279069362 GT 1 -828709447227570872384085579684721.5737822800384528129857068113153729 0.1005344764659520126097045822533606 0.0392134362217205731829888293001435 1.0400029927247627983746086871331286 GT 1 -37488122044938696624677781467058027.5557964566701624692933556660252232 2.0676719661396077145335453644936903 0.0103826700625980966939438634730624 1.0104369459943376894223919748515423 GT 1 -178653232934114429.7518728692287953086586981196773590 0.8603583639931773879997695243973006 0.0024266781544763140665507233934099 1.0024296273099759148854960017240680 GT 1 -1497380770930968.9604345410042385951212594713840684 1.9749750626977582405890514934201664 0.0711712979812642760347625528639151 1.0738309468162995793520148232192646 GT 1 -602372338616713900162391351318011.3510128917304962607850869539051499 1.4000923590717541361290550760471373 0.0624805065137727143732753805934292 1.0645177283017679089857020833656264 GT 1 -13075069249033.9900575282975877906028238409678465 1.0564155686932404841337591730316261 0.0849308735082802972723229477885978 1.0887556684818458997722416962765161 GT 1 -1803165747166353121784.3846729411516376386670931299378541 0.4847587104448351291730320171703427 0.0920685240306266423049766615782800 1.0965863702227028376310443957819939 GT 1 -5437697488331112.7552260481238050630967349201231971 0.3836982785514524880928853327102587 0.0240540447619227394930292654517092 1.0243480678337044501593263798355421 GT 1 -1076543818195897215723.7526722570227585057246123590767306 1.2490822389444978900302318821601536 0.0819869810010444223154494715429712 1.0855437065461353951481105321177829 GT 1 -2073907359236901906328282.9214503677656315802143090615855611 0.7457786911087348716345449162559187 0.0284491599085898554037172054049363 1.0288616799935806108384622657763261 GT 1 -677148947371317207.2938879267649366615449045388022975 1.9351634604319640988477068609904040 0.0325929249956645610099960817921368 1.0331359051981081433397247422463045 GT 1 -8255719849898172481603.6473199671770650196296183153044859 0.5862733913865549453350840118957664 0.0749959913274412869983321620767403 1.0779572077790388359588636378391594 GT 1 -121963617762292143698179.2023615962706563052238037022743550 0.1406883541790861879821536374348337 0.0521547140347759960110276109800124 1.0535639905043836558777725951943961 GT 1 -13500511747294011273801889871307485498229.3748181065420555245583477842124600 0.4577745058337832247846057153608119 0.0393566120670266037777845246172918 1.0401520232376300636085378511461875 GT 1 -637060791834499087190591391467143172.5958285378419509793410993879540788 0.2749535684076353372823628400566044 0.0278856414923482338397027629928967 1.0282818286565941876204934205043535 GT 1 -4785834044135320230395008.9418027880969527030038037076157060 2.0318649217950296018523384112136036 0.0739186080192769344452767242266925 1.0767931518911354494846108649206126 GT 1 -1266961430416208433430937815943168.0736149012250830495547477827608232 0.3102889974378571759988904004544920 0.0539542456638013562956124047067947 1.0554643449939429353412612707279534 GT 1 -533945.6631200930691922558110852564138799 0.5886154035120442237828157040945057 0.0186064372110843518087093763506479 1.0187817145602814139953240830649023 GT 1 -14542853400385206613680.6267662894168020076143426878133206 0.1125823168823250421433279045703687 0.0576436118734014657195826893944327 1.0593717446104470610304340266385064 GT 1 -575543760663636739626515464963111593741462.2791475758035610328683745451128693 0.3804762103696741860702699370710980 0.0336008258130518151832656970740552 1.0341783063270466649823458116429581 GT 1 -2581031872086651098404924313184.1353712175524845202337852773729524 0.4164173130459068470085157259067635 0.0411967690159062998653595648629391 1.0420694066068787706476066383341560 GT 1 -6963.0558745510656611284941147206824252 1.7128474743887858404012630296273823 0.0955039727343025178890885634172132 1.1003773663447165166859247965880438 GT 1 -14363764585122220.4322622918146283303842695515766813 4.0073984188767961711272437704230810 0.0705377372205566709944725658149135 1.0731490721290119339683558221946356 LT 1 -626541581890362494132874491149.8340878604104626316709168678497987 1.0886100298373172678828159765753403 0.0065440255565813264139700955581521 1.0065655315670903604910047336787416 GT 1 -1402901.3517563812793769807865823014526524 1.0169942871077905816879536134937779 0.0475883845118471336568674166910203 1.0487579684251600302316948663584447 GT 1 -72197924617379569990933728.1836973989747028402059657959786486 1.2390909823973281969181834343428396 0.0490958115380681361903450244119300 1.0503419697120488732656814706753365 GT 1 -12579895365675707456536881632499310417.4958046880422852100004879526920237 2.0885879220964224869751786673836017 0.0298883161872274822480354395603926 1.0303440761612618470983662282278557 GT 1 -136856331273369619061386178511.4638354328125965399489536633757754 0.4848988054827400123302073463329738 0.0581291909166735780335473814149026 1.0598871591578442413690966106769208 GT 1 -488058098144289290039835.1830704816706910463093586224501836 1.5717477150604415187315885055126871 0.0371507125511588059956520891147506 1.0378583826002994671733738268905672 GT 1 -184433567934778855873989690.4320521439735048979113870448411742 0.4900484864720584650976093494236004 0.0817880141888760808522473043964021 1.0853269936570005276581301446336632 GT 1 -24058468968219097280201874026.8201763489420875331455309239018195 1.3097172293451528543608194789766683 0.0756671996320030304755656326220213 1.0786830986289404149090220450419874 GT 1 -141068385309912137243.4931353492783526046629800201044874 0.1897028352783868932380541739883463 0.0860987394339098657070178257990212 1.0900327433788680972164946383816215 GT 1 -1123616702.4617592051833477009846795986911141 0.7320603324328066274168986642753849 0.0125727024450537404234088869096536 1.0126524076463146145187458721326252 GT 1 -6.6599901239801918065332358223981599 0.5890466052439276216694798485138646 0.0125332833103980835436945776595699 1.0126124873929981642763790950833658 GT 1 -61602313576659056070.8365461287092811423979001927160283 0.7898460544333661172191292170835501 0.0916475996310643211773027014050528 1.0961228695413593249965939816968739 GT 1 -195769468265215145880538202896.6646570324131561277688994665834211 0.7063704833537013224818435231135268 0.0522519231316369643616519961785456 1.0536665537427364965504571811129701 GT 1 -55636833874317658876808476.2329687273327693519058558281220764 0.6629633137555755201633520168376735 0.0781547557737623840733893835033491 1.0813779174243854476715378730056563 GT 1 -273625549404653789892.9847184052941969941796517293190232 1.2619836355525496451150262722974590 0.0096807342199065307986947036456654 1.0097278971554829299726445264062032 GT 1 -2754143651261413103684.1976611590792414212445744081348759 0.0360915515520634055964934730327675 0.0561512443750953224406536753067477 1.0577893421717123494405199232683109 GT 1 -71017738426033193.6597887221909416741306709443390007 0.2250571859801093865682690326018369 0.0182817225482809181489229408494204 1.0184508982928546816728041887416446 GT 1 -444511569548454815.5741394880951684444534439706150792 0.1343394213137789844369857902874336 0.0391488669092329678606987130479571 1.0399357903456492854268364887407553 GT 1 -240631116071164115324616611203043595185.7176860970835195399238677527675713 0.0120424974196731624019465917586948 0.0039929943525535678797216656131640 1.0040009876396990119445577260086131 GT 1 -3437549359854950192090713171.5813116859059436808566016145109893 0.1634735566818960570090042815052802 0.0248324084588717343033927473308867 1.0251459339953386082914319279505702 GT 1 -17228915903595500531053898389018.6663833248153476171934075975731748 1.4087574430209815911005730929450176 0.0234948231175757381308937165127228 1.0237752272125598280871328941901199 GT 1 -150033473175081656359284471.7921114579503694203797737724105325 0.4693493064038141247932979691369960 0.0188116264384694875785172050896201 1.0189908158715003781242368921815875 GT 1 -18350538429066494534907.6457463039476017948300048237374633 0.4187396295206343930753920204291751 0.0556565462300799773457581497172015 1.0572653508599455498751322649701973 GT 1 -7189715.9044107531459928934261733327167018 0.2105205341656476587895897474193215 0.0009472042439405062893916349880788 1.0009476531253576834451849654836262 GT 1 -21754723874488868696.8270482996681039419713707749808467 0.6593437990703299841001298779616039 0.0725461712121478745172767286384392 1.0753122660222654565680071703839240 GT 1 -2182646868728769332677343521.7936597031995768268550481588370821 0.1177849578225710804992345305302606 0.0506322763404847273506058600053465 1.0519590700095786941760311517632088 GT 1 -21224512088630194114593809.1178979109895248252759252485680711 0.5883798869946023356919305519016570 0.0762738159014406849266309152685132 1.0793395888127743963923374524231005 GT 1 -127074833507535292743320710209.6694011278000823720769121408771674 0.0934994128339401884852767604529163 0.0244872492285068117411924244201148 1.0247920479931267880864365174990399 GT 1 -2260589855610850308242336597694802240.2782674656275843679947709959518046 0.0297026057345199232380268375935922 0.0598049666410380113800789141892516 1.0616679429427943029784595918198721 GT 1 -13860447430053450395309.5093279042899511357601839289661614 1.7191190860492028435753911687107237 0.0576194699114422178534328181422519 1.0593461262212413880772904150095527 GT 1 -194821822.2105120833032541477267658942065915 0.0718712850680130527059999712890242 0.0608303351765717469875751629990144 1.0627591293828360507453790143866329 GT 1 -2440612742320340624045742196146.8554523144050718244521597401577724 0.8750034719792713984506814971208966 0.0949078989889003361975881344974448 1.0997185713872934295509295428895908 GT 1 -5163302870514512885155738877900958096021.0217781230499387131931293629872920 0.0753707102314754885129141341283658 0.0278203665296412262845397567655962 1.0282146834995337321317110636059254 GT 1 -19.3654427520345246172671605184646609 0.2501365101145486323971953564838395 0.0975489619962938111796303330415947 1.1026408417662071005580113897068275 GT 1 -1364218019711078556773955.7610764006746862247903318310151725 4.4802853433279778167396366396499180 0.0393999276065480214074359914632307 1.0401971143886717929278615088220400 LT 1 -192745142164206267271898301109682866.7657885670458892390349794886796791 1.2337352588836873448265679996890867 0.0690659358130787377515937371190067 1.0715668267835456722800392544410758 GT 1 -7432984148865.2536025255546099837251134396144201 3.0089938258919854130428863591695496 0.0021425489125396402231972155982871 1.0021448474542064498183430163075721 GT 1 -6765797509452417738583252.1297839130953791947669949357454120 0.7695500599160365681065272231750115 0.0626181294662888368720120266713825 1.0646645338408798089019670482303432 GT 1 -9790.9063771058334685246337045810085159 1.6228035329868123325260553461174901 0.0221577937492197264134452580344418 1.0224069652664110865974285805949962 GT 1 -2208454.4018115361823002590488656078047537 6.8168048149322852789188427759478147 0.0094428531360032526815175401013465 1.0094877195416465651450507414467531 LT 1 -23903583530975338936173332857532874583739.4813036857695461071844762433211779 0.9887553286759531210085924781205300 0.0946766846743829958270228904104170 1.0994631445789620235921773835094175 GT 1 -3518454169078205613778369.6846745274489079742270531672477211 0.7923412856743721281671339604906610 0.0086846263749584664147609336544763 1.0087225575141200661239601343337000 GT 1 -653603583672597040183415.7570139647816952716645929241336506 0.2291007279119700998571680469093074 0.0001670040659317779094449612839741 1.0001670180126635923404583785608422 GT 1 -608864934.8840481503968144860484477018801735 0.3618395865777172740516071600927375 0.0311155188349432165726458368695266 1.0316098886819277524904071386002274 GT 1 -1745026503569101376473503469.6256884257058756987357472753220601 0.8539086973446175996927695300340677 0.0262657491826555627188719960731682 1.0266168556713957776619629126666703 GT 1 -29632409930738483508.5390684955683854162325980515159555 0.7818648555331207099999606439024654 0.0188788531180163604996482392784405 1.0190593337876321608138168299387307 GT 1 -645561126776940613327.4528457111237412106148613517472298 3.1950854449006816499942191789326733 0.0785285761671552350650144269558414 1.0817835128437673570375688157422654 LT 1 -23178240551216165319933725610995695999941680.3920872249272062189630376190147060 1.4300553141033738233845486648422551 0.0436886643545945719358325497881260 1.0446717540469876808055182109407677 GT 1 -9899.3630261308878218951164927335683992 0.2325720703111240994828617969187273 0.0621553081619163357506919070038593 1.0641709174181424942294312707971455 GT 1 -8109.3277594272980958741765970174115691 0.4563981752108116222270945365292366 0.0661358981702311127149088101861405 1.0684243525925527316100595109078416 GT 1 -13816246750940109909.0757538227827284942784772262662060 0.8483854108855342193220581017134742 0.0785562643986376666622681914973440 1.0818135611412625227543391582670054 GT 1 -16022421450015033620223091.9769873113458273238500725479716453 0.8442201808750439242529808305813094 0.0428404155279840480641221524223000 1.0437851464970554096405796898328340 GT 1 -2089450.5611415962143182955250363300011290 1.1208659226593856069027901726001149 0.0213638303323646081619808426417255 1.0215953401851303163334600511164434 GT 1 -6395277095832471767460699344103893851.5404816337372349679692201048871751 0.5510054197000590198987374384379055 0.0431829867605711750707157663407846 1.0441431145481327987478643485809423 GT 1 -30074.8139752640053394986427448826908211 0.2885675315807997389870910707422848 0.0481709187691235390816601044733551 1.0493697968315710114435806296117161 GT 1 -13890042.1383100658081588378037181583131936 0.9009334506868080415966856242800917 0.0997651190887094961931272489544624 1.1050995709165440955967121564608512 GT 1 -19455166600097620395373856871995806164.4092699612978069969576864727462757 2.7750450903906743608384392567091944 0.0917341613629333202851746730538107 1.0962181694013694020579307483332371 LT 1 -620485515674455997056865439336248013914364.6411611381919996828172376631592740 0.0243610586262127683582173705105837 0.0318143291122761304870761793543988 1.0323314013302001382628556801288873 GT 1 -92632441624922844.5860024620032954914933761097836491 1.0113712926497874991987048013398411 0.0124481780313513918941969203862621 1.0125263056408438943995663426023711 GT 1 -631901141.5339018742517267891364773322766089 1.7085349116974647128419922312712532 0.0251421517864643931676161316597483 1.0254636153177285421556298428059494 GT 1 -76019089754406742402726.0030988784542918546176099320871504 0.7977106371366226358101254736617908 0.0668570769134402563216851132124468 1.0691969032787079306473770042569558 GT 1 -6.8135097787698302797111971479226966 1.0823042641592937306297313892607817 0.0326984548448174034960894698824497 1.0332449964050815218443948324396477 GT 1 -33308573506280892689514506649993209458877.3449608357494721987613051074684762 2.0224424566820893008317746919347114 0.0755631237648070424259264007782469 1.0785705093014292105586604353206346 GT 1 -48213689177124886914470.2661528269428797599245103904657394 0.0455059181114380871667509822690804 0.0288320380128927210575691829034973 1.0292558472903097820902950151783236 GT 1 -3552246987096976699662265023864150185.2040296322822573423562306954020521 0.3210658247620340459387381781939777 0.0496048209571820537289259654458514 1.0508774029425795743319876459984875 GT 1 -1874517.1537103565192656498796743705214146 0.9994385322101160917044542431699365 0.0151541432413261013080905174550659 1.0152701406563108327669761209469384 GT 1 -1888819238342606.7718202254681373752919387166718338 0.4497032155539134129535251160518998 0.0851027556415322688187307317882797 1.0889435212604492290953554078580606 GT 1 -167186979126360316.2243715608995440567260417538662882 1.5204553203319943673297422955806450 0.0214545461442553664368751188956105 1.0216880406385429247358268547220643 GT 1 -1.1474908043060493606539651284805402 0.1536386372134788864433573138871050 0.0332414869520938593036003650916318 1.0338065426913439017692050766442809 GT 1 -3995151846174.9998521811288833216588783098148194 0.3585032934249518831567148428980181 0.0101542483942886913877021061121504 1.0102061544514661363689851259658253 GT 1 -347610595.8740737030712170284211469517921632 0.3166494803282541820389366644804513 0.0292309058546724747820547380815102 1.0296666410862562582427055416534277 GT 1 -68940528506817797116.8962578501124760036899131581863519 0.0446760593010381838598510272976230 0.0647283480384472170178999972723530 1.0669182550338339481595720289001065 GT 1 -10805996675044771050962881381944722281.3013966224558773769096806563444834 0.5416008408323244227318650825020799 0.0968847286210953225755251012000691 1.1019050799149676485246563867319987 GT 1 -1414220.5479262337051657075051032146242940 0.1544419805446777121375581368075749 0.0980836272504509913707791724379347 1.1032334763556143093364028955583072 GT 1 -2503428303461596429104022136621.2750116801450240755371189801071242 0.2546821933202807279938471217302798 0.0002229272114333658119565825047288 1.0002229520633976858990137795015024 GT 1 -8497739478873505733.8715321215962933385257529290577595 1.2619728155717027979204358057728264 0.0359912685645778735143498929422256 1.0366549269069857815999627564313493 GT 1 -2914881002203201831277.4226633137928536002427178136672768 1.2798476996523750934101545484496886 0.0126259888855563591959623551298083 1.0127063740279263984061909742942682 GT 1 -43049945878123925891304759806519853.1829670038113327335519361005721044 0.6551464048380230289403802530234596 0.0603160242006505603814096337444785 1.0622116562027571827556268227787957 GT 1 -4058579969920326642685680604846389.5370508457735097748617184376570562 0.6675532042821789770915018283943942 0.0070633634475849209014382919625294 1.0070884270913304935201936432766909 GT 1 -428760003907794251010.6074967172397639499848982575530271 0.9180621931584511175417724230830334 0.0183180953987410138576948751916650 1.0184879491710166917673957083575421 GT 1 -84970.8123682663863744238178597012314356 1.2696881576149659913089971416311907 0.0978516270275202714105313254985112 1.1029762791294507025740149752774734 GT 1 -70688514225791895379631418467576508003472.3905895745422358158222181123981669 0.9964538377120481885218978366257864 0.0898762112952821753351116733589309 1.0941746571790468157540788645513347 GT 1 -57135081304976741557797145130362659.0073370497748478947691924895748262 0.1729355805477663272296126500642586 0.0764586112025346929286682500416482 1.0795396630244607300988634047613901 GT 1 -6392837184122327035105201413.2719746784445059314359659756329469 1.3418288373193364776222737406802395 0.0267906825892250075899306490044955 1.0271560941247908152131844537848815 GT 1 -249992217920406716114188116833.0123702802004407032526088957822326 1.9148907233237811879853466216951323 0.0304356440208191282570621291326875 1.0309084259154372069067081477322658 GT 1 -8415592573.0936023135371198840312391663817112 0.0950392825244587682985764511732694 0.0479530091589026061823979117577829 1.0491408852817395865510928126898543 GT 1 -8464641974.3603352609635030309645182449969202 1.3185572206278047184577921591130716 0.0345924222381677522027502456908565 1.0352049064372318331645812650143505 GT 1 -3932122088221229035392941327368.3827472665073405268894347508655095 0.8158216733104865661179878416991676 0.0851008573932366258948670300101925 1.0889414464412953975554915319177113 GT 1 -32474489422452073064873110883537218.5642536941504583629198875217963267 1.0128472966575302568426559259667428 0.0652878311750520153670414731645939 1.0675166379150971934295049938537485 GT 1 -2081580430875688646625.7892430765196221236936686326787720 0.4625031538043421133632107105457849 0.0732398589500120365614714907583506 1.0760604944160877774381775759131275 GT 1 -542737328267.8641175107507559739215706605748973 1.5738518070255768337075573462780855 0.0561294398168330937454358081734004 1.0577662406882655218725247903143811 GT 1 -8526700951735583623901.4979140794243106354635203092187064 0.2264576856001473952658780935205329 0.0055315718109584657225082190740734 1.0055469276082861287518593894955498 GT 1 -16213410.8616544771996782580771309740392014 0.9746866590115078256752414464859006 0.0986797890320493513783570332697012 1.1038946894307057948130909994187530 GT 1 -204212850442.1192288502605324129053717340350590 1.0356489590347922273253312393692382 0.0280480470992752001982960356473674 1.0284489069155524530990442091562052 GT 1 -9127866838045.1461704484993811963591785196419124 2.9987991555921147158334715168191656 0.0914977749071629000158832710738725 1.0959579419548134744416469289823461 LT 1 -35.5571374116341964218150817488145721 0.0388876213720723016304659024030258 0.0634681275630744291452193191648032 1.0655717241085955638355687047514671 GT 1 -30.9745939520203616611925161632537505 0.7246694301930777936757089458242398 0.0820465763728092677936868329565799 1.0856086264383536121223232077773288 GT 1 -1295.4050889747988936265152931811827497 1.2331352727473485667638418679886264 0.0919756055524692373316886132578523 1.0964840346100900000347819633363461 GT 1 -19.2008651326680014967831352813220089 0.0668695412071662509342168232225937 0.0818437336762845949172337327498136 1.0853876780947333600457044958677348 GT 1 -2892189493474049651472434036524050.1047844672801254481110745039074965 0.3033772666697643970601078621621334 0.0083913436698399397124838265816542 1.0084267491999067023057857183740331 GT 1 -143.9708892130531076193544989423404138 0.7989507193978861786700213684750176 0.0181539132921660048114022576481940 1.0183207174252159295963813186124982 GT 1 -31800526442090498885263617919244674606346.1989489118447754792638217577324436 0.3501952935523069414409991114711251 0.0896178479232505148650083811302545 1.0938908202873580052523772658700876 GT 1 -64060419.6259235453512693665729891819420606 0.8646853873536636782077987186051931 0.0066669457287092274030195848339133 1.0066892690857782464877653840730675 GT 1 -710549628194056531145804407591432.0582479035970853635298297083737208 4.6462331737696926634116216035356872 0.0042824611917525941333127433544279 1.0042916571924168968570870651579674 GT 1 -18869857572778609211896420112639394108247812.8738898047286214543332967450890141 0.4486818967076055907675675240882764 0.0513314980241943353685540290756494 1.0526958543827080026317979728039021 GT 1 -23460591108603444.2460222814158713358362998454306797 0.8276791302682598603439360056872824 0.0496299640788890185364951726532755 1.0509038587315539200592232788605213 GT 1 -1.3505412819201896691322525615549662 1.0177066222809570324273426119734187 0.0072495400004835552427382553296341 1.0072759456120153180020768790413356 GT 1 -2270169902.2299018309405646058639285069168548 1.5200095509329837251130192838204851 0.0706734637672508787002213173376394 1.0732951097498621952703321214631342 GT 1 -11759252782084960630289941162.6601061993275678701732768206191363 0.9302272486061006768709054691715843 0.0294178161393607391658400148993870 1.0298591979793681229623689782472874 GT 1 -998972929.4072777555661552543165176407754306 0.0685758989534857457732253960350341 0.0741316486087979296893982478936143 1.0770232235669173660906301315331313 GT 1 -62.1181480410038678201124452817007355 2.1810419246628341291239189565931548 0.0709740045292990743541653537555836 1.0736185583523648601882710529272730 GT 1 -19904342107872253281705758851556.4170808311753437694917194981850292 0.0797104791544162447462520311041108 0.0379151137078913234285717492879384 1.0386525928204100784984335418131897 GT 1 -25655931.1041086088492288447773588376581263 0.2268438182915465444583376827849902 0.0271111783707944978315871257369623 1.0274854668095877332269745481154140 GT 1 -895193978102903012.4803157368429976279253092394799147 0.1682923273108444538091801582397712 0.0830326184739157433607098043347020 1.0866833782132000128597337488279725 GT 1 -93973297403276144.4722931747757160932240753361931424 1.6040865022592957071117398815250896 0.0458530413662766846845115673338038 1.0469375747080779194649231224965856 GT 1 -92.5094933267564948867454198267296411 1.7189828132447204509276588816555730 0.0984179745724914470213139991692592 1.1036042527601941837995482073528361 GT 1 -22575556899866.5041695874197761331125848362645572 0.2511676365190019441487535218671583 0.0420550465934301991846109241031863 1.0429649625717952186535162711893264 GT 1 -1605037503.9126491835180704506005733413424262 0.1691191565177634582848916038291416 0.0334377534040472550845557386979398 1.0340095782731516325127820727078342 GT 1 -342225479342508660346486312986505.3576125945828418052195717087592443 0.3387469394140930451015702146365189 0.0287461247726255396029436666499871 1.0291673873701449547265094878255913 GT 1 -2623042996159732982884772323.9738833023573701129958852594183489 3.3897845703393599271749401710875770 0.0455447683932977171225677869398613 1.0466145393712895110322616443815967 LT 1 -4380285671794594267790001628007482384521.1974287548178714631266322778217533 0.1503695174535412186406324480896344 0.0201392715895371810596068854090201 1.0203448312835265311663805198425452 GT 1 -2027041408860855771.0114026781311502683043167919986622 0.1829235782115068179177334954350636 0.0925795011991336383128346496611627 1.0971493213077851849703682733957704 GT 1 -57.8725325287564649615508214957238021 0.2523743852086324803988332937456757 0.0042699485465372477063891888811448 1.0042790908107790384265164506861008 GT 1 -10048.4274983469390147382329883370421510 2.1075984091528566133817701018529844 0.0275133185630027642468962859719152 1.0278988987637811015852505067739708 GT 1 -2551.2993897615337862630448009268320164 0.4927692012125607592489235667510618 0.0855039557781962886781120140419440 1.0893821367791575147816653567313358 GT 1 -3.9561791208701382128021294552658449 0.3268336002723181733850870019470668 0.0336549200112683526715136299868259 1.0342342828983015448344928086617701 GT 1 -5329110249648501269979868173899386714.6859339829287819631986547640605359 0.8275470830180661755374900798793523 0.0069117798930156745683330666601640 1.0069357768821900408547691909496281 GT 1 -9465517057161185006582265341175665032.2198331897739950330077406787565166 0.7408018588845371583719970024038282 0.0647400335718246735989339248200787 1.0669307493785033724003403074738848 GT 1 -49243785630616333006734820224.8186404442956864530598418272342809 0.2226909877157982749317153899560574 0.0779697817581871345990172006720023 1.0811772812968802115497346005605793 GT 1 -41916109952537624692572193753735857384.0377189845803973090949319627915390 0.5908574403576056591440717969563683 0.0116656068804105156252687348843952 1.0117341839226152343818577241025356 GT 1 -49848203609399778797482894867844235451522.7934778782872128170968355433969794 0.2039561578586066658088609077411448 0.0458345694110874592840068799142848 1.0469182152412588343549500276143773 GT 1 -352616112222605168900371846635.8506084999609819414463124547773424 0.1251745882596885723991937583947921 0.0101634291624077743132927942811668 1.0102154294427261663429995000789570 GT 1 -771917150433297817624362955405858.0970519485447923763199410949007200 1.4156178751932046150701507676547441 0.0433825688322357080741105927406928 1.0443517258992785779606689035021645 GT 1 -9730267132768559084.3229418659640457012702721363034218 0.0255020787745282868331936208084351 0.0714108033189600332002658105199162 1.0740888374495176882194602006777722 GT 1 -224501082549257958222848.4878166420684276603494604633847861 0.2812161454093097746718778883002729 0.0281300805919091852214800549413893 1.0285333112468868352740352424501275 GT 1 -268045955672433.0922583959512099138397631140500103 0.2177812082146965598115648590331488 0.0358955443033082235939115887994029 1.0365556337098984495263502496053935 GT 1 -189653200168972666017746386195790692281380.7960123982674228058468440377137105 0.1217263776575299009304209388982472 0.0590853968613985724884584008907405 1.0609028946959774398476513772402308 GT 1 -14002193.1234158426657427247441930542351143 1.5507500111344680914303676376210810 0.0399725075532139178555827641968501 1.0407933569649116630294495058878923 GT 1 -98101.0069551881655691752051238178302937 0.3187091725826549356660383336106744 0.0351332761280374087640395782983685 1.0357652971584530814721786738652504 GT 1 -203145295713462061631867335327960975803075.4443833543188484534609247167107246 0.8624939595965685856466403940944543 0.0052107987831699376846710780064451 1.0052244223421737413122204991519925 GT 1 -21101487.0837540367658513688375838792060567 1.1568428523611288307014357950756495 0.0838217777315702765871096858737810 1.0875443674382473727354870863066447 GT 1 -950516191058829884457227863468523870.7197466168804490485512844220894825 0.1839426519377213752223405477822189 0.0571732777509304033880147176270354 1.0588727648247263854012684959125421 GT 1 -8943180266873110332946692826.0287142694421093387511731214285548 0.1470147932176109785179274136206272 0.0808128920274907988131680798384552 1.0842655778151919994587774510783760 GT 1 -316101857018639055500699.8123011935964588994155504007200322 1.3351836717534442090521268503056316 0.0048563831956052798168301912532911 1.0048682137424637518558274343895188 GT 1 -1575092421666581934.2966625745272443131668271300515902 6.1331708266221779467675005503850510 0.0887053020616650251763771834865213 1.0928889456267574638107652311805821 LT 1 -422597617259319025358478368367591509001096.1054542700064242924759768118553308 0.0420754400575469230611180890486582 0.0301086563244782390346742518722783 1.0305712305884211448937613210478266 GT 1 -8616458644326234370696382767866.7906912476705954298418886812650868 0.4176326441003448466089386999400723 0.0440411874249377077649221036221814 1.0450404499393171089467633380058375 GT 1 -2599208271886079528920481203720523989.5432761035220169423519467299562474 0.3060122955235940612950920455799135 0.0053000832374732941805731285334971 1.0053141785047547962644426589098392 GT 1 -231079298416876248154858980.0044519921794815632798527171929713 0.6113415110006627516922763037343629 0.0782217426229807305666889440989771 1.0814505861110121602738036809331200 GT 1 -78243754088362663256060371339.8303085360827178671483365058937808 0.0768914816363654146537280978850576 0.0504326468880757048168841108711753 1.0517488158986442157023788188449725 GT 1 -1162103524053212226763700798908452391331989.8506903888562966922422066655798734 1.0573511402649373439823659121115773 0.0113123469172587798008405474103005 1.0113768181890465154222647408453837 GT 1 -55216782865315213167066807561306065134.4046731449734757941677843274950987 1.4278293921532597739913608261445481 0.0355572879106414111808157455798261 1.0362048448862849279361105295972547 GT 1 -13770051583902350488441351699791611.4947966711784599159412545995202117 1.2829943358998641171958659279183440 0.0405819146486708008410072287207037 1.0414283394025301103687179962473321 GT 1 -17568019219567970406.6397396849704072172442590418255706 2.8295626028113442272738069275962818 0.0500099957248018462921640234549539 1.0513038162584861141074247648696284 GT 1 -214145485238.6101359200564135943929786727828005 0.0902890519279313729870819511389683 0.0374931210648310837639804485963851 1.0382140659001070144939423024891683 GT 1 -66950.5762120214949798746514435643434322 0.4835475836714272824756303998819994 0.0594857318560558712919218120442409 1.0613284595491693647187197189434070 GT 1 -90922105325502078061070448.5767245294509012358873872313535481 1.1365057920140297858851663794900129 0.0150299516374576607277027988815289 1.0151440460261374099319895170060732 GT 1 -369940906101.8195557180524140551453916802295987 2.7868962257796799114415740144741478 0.0818050521336158960394587148971611 1.0853455493969379549417233117706515 LT 1 -8437539248370.7612944302335712740037530475987832 0.8699061532496015360733389594687363 0.0868899684571585064293069627421920 1.0908988891724180460893410716568177 GT 1 -112004502001171822491137.1040036561171909241940252235905375 1.8452051744750342529438929045897433 0.0292508636200617815770558283108824 1.0296872000128490930744095923814938 GT 1 -33214289603996943916194783637.4927850536211929076128188196320767 1.1037111913281874371885387397879857 0.0647836636141402161271286208983042 1.0669774006429517016297061402740963 GT 1 -3110993563102.2258990842154472056247011897490213 0.7156945361030259268670177368857052 0.0657496518295973913265012496332963 1.0680108379429149485407921086153851 GT 1 -737226.7042848183628831486172488904897849 0.1781608723714011255041602610586673 0.0812857555294600431070671775970867 1.0847801467954851663866045113891124 GT 1 -1244.4538893940112603745192000109588452 0.0489463495346367793722268582874109 0.0331082434542116067380890372938849 1.0336687271823158471968415797948235 GT 1 -8419.0485613861957258893502286626759285 0.6476007350683314774979696123443532 0.0157860728565924683769669440806521 1.0159119999255194549365078008770036 GT 1 -187146332598360742658652534758.2606141116360855528361456452619169 0.4072013676401609779991892758761847 0.0418757680462152638086632900679411 1.0427778309701726115595852681953978 GT 1 -6324578373781810204530828589762929.2507926134762954963039747291705266 0.0619489452991986782979288964154821 0.0527897672829615124905331569932154 1.0542342117888757140086398917678474 GT 1 -183846597587597535030739411937933.7722735692723639591672696656695535 0.5322274948280830167452477399098177 0.0092617240614954501659900634743528 1.0093048805031793018149328938957945 GT 1 -1.1898075571790733029888867890984845 0.3784761448504436438571320864129568 0.0324515651022710638824253080525912 1.0329897934214584168311024161618015 GT 1 -21564129621897116025750081607215759.3032848781519842756366821049069248 0.7375847574979090992333886591689424 0.0683041644054655400421856601637993 1.0707488742206943212523528481893447 GT 1 -2801098542314035379217880457867.7691635445449959451427996210489682 0.0245467457166677603196306747466187 0.0414682368204173239173287146303056 1.0423525786213169024711503279455343 GT 1 -29097167865.5427913381040500557955999924046126 0.8383542864683618001266668848442673 0.0541321240896807983309886809397572 1.0556523857412157405196624037400423 GT 1 -462108716365257973755415417565281964877036.9221362302916047950168070175373064 1.4003231692947165190185040938657316 0.0311166558372590356120137773930230 1.0316110621995194452223687372923974 GT 1 -155046970582258088542217289871375366938.9090022368177180593599230827601677 0.1298205327453971673635775594696842 0.0550480408081336556844604973033547 1.0566211896146338080111328404373846 GT 1 -1919175254.4806521216983668195483703038629557 0.9756959030132074446638713572123658 0.0105954017646811607221950884580866 1.0106519327005222371721936407832055 GT 1 -611560958027879306.1595210239169202645632062653380942 0.0619951883388998607084802590275193 0.0913430143315574177415848013600303 1.0957876095204696272371614039448774 GT 1 -46268090225875415498950199884127659.7779801673274432470175756113249552 1.8591652232781650580764738130365419 0.0547595351909680060499527916905318 1.0563159237425006404702560781609446 GT 1 -2731465172275545122598301818154.0468145024340287653613439858973757 0.1276608196089096899394120604049685 0.0399431867278921414648188474541651 1.0407628157795723270342483357681977 GT 1 -35968.6426403280361927549323172670109641 0.0647893346921954886371229152648784 0.0695198433692768270046395687959392 1.0720545286181170750642034358424606 GT 1 -10.5432165186936536063024384192983072 0.0369019014817958230824654387255056 0.0409458563114385400959946569418261 1.0418077472059108950804480328413881 GT 1 -20048.4595846983624578737986535102632679 5.6473884438370574624816471485314703 0.0735791989425696479988959290914683 1.0764267187697274336888417859367046 LT 1 -118078525969079881735333858744.2779760621353473143866240982697630 1.6498197399997255734009868941615845 0.0712626475984031652562612087907387 1.0739293009146587195162929919455033 GT 1 -148181404381804035649421.6935658402448386563270961206226601 0.4827434872063499064058531927407222 0.0060004015605647962799741333725425 1.0060184763101162439867609868581189 GT 1 -13062711243617168277609850824149607.3347526806108837974056027264715301 0.3591696870715129019254477341056523 0.0901710525159186923834256313032041 1.0944986669374907372691793359933724 GT 1 -363274528377793534.5043474598514068630027624810097306 0.8908171323161323489871088434667658 0.0304563939318994342037610464748422 1.0309298274170422959757262969513901 GT 1 -80978358012923642821.3000053155005497689898583964152259 1.9516911242518972798377371362508854 0.0877835608075042825389055915104455 1.0918779933886323439903532215524024 GT 1 -1197409208853611080480.0424873020114784400140285751837384 0.5270359003216064034223331048729350 0.0482344995806935301621949529313280 1.0494365976222504192560151696734426 GT 1 -12394331590178366140.4365621065909283762374491789537219 0.7066160870090667090195422549870746 0.0883248864082776814631436552448048 1.0924715874713966417051254906696011 GT 1 -94926.3656394996119923941943588771449660 1.7440275831049229509608841470261906 0.0285192237740559534455132423882637 1.0289337980846173976643207976932198 GT 1 -822572217189070199775753255.4229195431948018739824363911375588 1.2940114237794434506648495714224086 0.0781474165263758094640672766088974 1.0813699559815976459579651746563610 GT 1 -11767888209585152474.3763406401467375994617677529953427 0.2873697150814602269251688967800069 0.0931740610513599070509155410692228 1.0978047558299538050742476475863277 GT 1 -2947.6875345981736574556006998663947101 0.6083484587475716469614882163547020 0.0306591460095784727161437888855711 1.0311389704398420802139374222137131 GT 1 -437592062050.5488204357875293742427082012921488 0.2757568223196018241739103899932404 0.0968986996879374399043701278836490 1.1019205498946604118840265426785330 GT 1 -12017400474394328884322126583816.7479343366378715325241856502571400 1.5801685427377055926191327685225223 0.0669521760637489243171689311929407 1.0692988212102406004077365338992359 GT 1 -6008136842019827150892229.2414042039340208556222357488299996 0.5170774577687698492781668880732709 0.0746775205505969843529756443442349 1.0776129757939989127735619884151232 GT 1 -306398353721895528076.0779107923742617279098911579451496 0.4460432708001477642419291739696360 0.0697358238234449449928094527466658 1.0722866727674556571250175122015324 GT 1 -19448857079925382568925768201037.2183979648063523055744952087609160 0.4426497033957601588714808756951589 0.0849946391927398333973077937782673 1.0888253549180296567131446999033519 GT 1 -4627357506923.0266473333934051519862863752234393 0.4017838551857718730636436943594823 0.0105193915142535734588949723492305 1.0105751114172999379681807437082717 GT 1 -28854734788406092555016621250955.4134544730078824933586260554851389 0.3693653280397694936529968829858943 0.0598562253927110481668238252008567 1.0617224637041257939107132304184012 GT 1 -164492738399475724459405.8130641211544156034469413433801253 0.8403150090536769232724208538631129 0.0056597210261511062380294872922945 1.0056757979364463508247837947979166 GT 1 -1.2224437936737329020099043770448983 2.4682926183969674821826415640646866 0.0648335039321990663503045270780829 1.0670306948853985956893749944154952 GT 1 -486578.2015913221763175940104589911118826 0.9033615792781233029982825752345888 0.0607025131424342967684826357243136 1.0626230375334573187320477410336042 GT 1 -578767648479738950284910628221.2322439844465847969309681762625963 0.6201313391305845067625400873606546 0.0487885651560726834512000944390090 1.0500189121850478189085080526908862 GT 1 -441422572418.7526640533180316602689460090096979 0.7029068727250400816723561340219503 0.0541328603824543989688738949387351 1.0556531641724099162238646976182443 GT 1 -54196344666718604096011852862438473012355.4400459848164775365364918419422036 1.6633114703541856938114198294546110 0.0317748900857915802311512501325685 1.0322906671772187439158938420710678 GT 1 -279293212121104030296644116112422.9120765825713480233606098781309729 0.3344382625863921178814168468669729 0.0610185895165841696182617507355494 1.0629595971121023127041075062760224 GT 1 -77949479809724481763336239045953.2832291777138306959516719901054929 0.5104966587528370592297774677312611 0.0250231495888653476637705159095488 1.0253415514342303752997866443038285 GT 1 -20007862942502042653169581816767789139748.7299543201922336888876373893316980 1.2882906468922534769094298098649558 0.0223532459359843417938782626091169 1.0226068663565036784761804987216984 GT 1 -162.8908308675585847854447810911140766 1.4521843240481983717896567244001179 0.0636775490762787289302600637825517 1.0657953629805195201365781700735593 GT 1 -82367699676021880880719413795009.6154525234116326681625098843952525 0.0490575381593396646732015530997411 0.0157960670447928231715762616336625 1.0159221544647593498438779076715223 GT 1 -41079747096180.4272445116871793502153417671948604 0.9147553494613537789079930095187161 0.0834185433938251217278292244768130 1.0871043377399738372304675701944284 GT 1 -1941755327154181356264422813741359.0464424028040663923236407360049369 1.6195410868486063478041667878035487 0.0167276345678984916370272836102320 1.0168691214940285180647356004888606 GT 1 -611715252.1059773590531425954919590661274798 0.3628219701590093864041802720341499 0.0409968413641726499821374126685562 1.0418609104275563925965890742453796 GT 1 -343254012715216516692.1635926324468708518836731993672780 0.8996131152652107947285562604153311 0.0627716763693904719256334025351199 1.0648283512616140094975389948587456 GT 1 -5873667411859.9384670317634218850426063033699901 0.9320833497943222841457323699997338 0.0504373643437364483394080117198380 1.0517537839163035156405511979239745 GT 1 -2388102569036178.8962045587605797384872770646412778 0.2217904966257090811733493533724403 0.0707290942274388730843831707176667 1.0733549725893855140193731542527167 GT 1 -25.1442844653541360457193487783010958 1.1783732715007789442087130104311340 0.0929600968792840353427152751934971 1.0975688352143208640037062910618743 GT 1 -55355342761919183021013.3958456496788477936227495940367027 1.6655695559759283303615836231222121 0.0908356295163540284938074248047331 1.0952293755370670296500463779811446 GT 1 -446920222163818608857411539625418187.6678791748086648720915127572835062 0.0231462358974896239865294920894522 0.0568932135971288143075899429270920 1.0585757616116486304392766854642618 GT 1 -335789796113107941931266.2819240635026931371883314379825894 2.3658394326447684581316872600751096 0.0230260777055572660331292498666464 1.0232953189082299174875420719510642 GT 1 -46821571073209021907220.5760987092724384753555376420607012 0.1914200806405142318133539733423192 0.0261589672237363251087350377948400 1.0265071993619059522049443297704565 GT 1 -966791244097612161150009852869677067428227.4935327013068577403910605261294804 1.9011447600622648211012969381246410 0.0211783282596002974326184329853150 1.0214058065263249836559919105553198 GT 1 -127638521151397.5973055092135574598858911548206910 1.8236610817362706506644620940023834 0.0381487955698500880922089040640450 1.0388955134290880701783749308404525 GT 1 -158361186184369677646644450359754910707.3447063593022335977075699332647257 2.8170259612767031218454894679550521 0.0666329513929758849201498649770452 1.0713342652228028246873072432985606 LT 2 -222558318312421195173493941919115804156.6425079372372502036620650729872301 0.0662327506964645532524067103419758 0.0966760576604654337340343082365711 1.1016740497646328327910702063824462 GT 1 -1334793.0469116666020971341515464184389062 1.2440063555071890100271914910925620 0.0229994170640240845239551698214641 1.0232680302803962681929633500709509 GT 1 -140991760803607705730776333570309676.4420434291351243500933184363834759 1.4005580040619923055606647073998387 0.0508440487975079872900516177244547 1.0521821617315367858971116294363800 GT 1 -19758928207322984.9017562279008663311756902479572161 1.8540827114855936016594181564220496 0.0268962327724368880145683235581210 1.0272645557943427798514382347751630 GT 1 -1838492746.2336624519901358087121471922811424 1.1245455218073488999933380940649437 0.0627322253305067856735881461572225 1.0647862588412293658587583113554229 GT 1 -15.4837571522259220118229581342264713 4.0833789854681993179677389585433768 0.0088954747317189472430271045149554 1.0089352756750639133301601833291932 GT 1 -26914830486347404376417.0649763452477900556279704312595926 1.3970500193358592232177005869743671 0.0664682449708830817484591065447245 1.0687802994079429943744963509301025 GT 1 -16948422650064.4739112786277403900203962240203778 0.9589127258587723378397718757748000 0.0371754160848673449391068268092010 1.0378840396277715139805595925455251 GT 1 -17.4684675848056543618868745224798721 0.2461744954166989329415201380643368 0.0082293044014481058689077593620202 1.0082633520478744602777277131779875 GT 1 -108780493035399390473033384.2209298311206354594526806058097772 2.9869147019019032571765773971906065 0.0512906053284601191695770301688269 1.0540389059921918514392767684193278 LT 2 -158652929694421617950163345365263378392.8264225852777180425874871931914484 0.7258580968807540933724287444142621 0.0618136602072238746478768201611420 1.0638066932100041466986898306919099 GT 1 -4747868231.5996913580022455084270417420986786 0.1083643375100371703140789187823139 0.0025393019918494779246988442616511 1.0025425314874205303328573489513597 GT 1 -10595366266007616.8480809877875309669903424464614591 1.7816965267327610553831064868274144 0.0350555212651767040191556331840743 1.0356847142881725593756018395592509 GT 1 -160798585183381624.6466836508064958281649973000723466 0.0764178038830911625326340711122212 0.0356366971281611144827784647964198 1.0362871851703244989156472654454286 GT 1 -13.3616265882829139528183502803323705 0.4770516154819748435831225635677461 0.0225457933235636913257640273506797 1.0228038356098244341762019716024615 GT 1 -38597925921798712492302.8434857973893393113726754126986508 0.7931040024947683785411374556856411 0.0608490656618015194931837018889142 1.0627790732467736059810085466853737 GT 1 -80361888325151860551156155355452600017986.0618751126223394870575452631079230 1.8699096600757113373288850838193853 0.0078345860411372075473677282240231 1.0078654376557551227846390202426236 GT 1 -25615.0864146502135684671081619492444639 0.6457056042612228926362463479928106 0.0555506436381831841963766347204427 1.0571532129997846114061501322197271 GT 1 -1622705578245962821326913471.3167071590752093908908329879574994 0.8278554643077352974563445431040778 0.0305603934340003328852211945601649 1.0310370996218999600007666115782046 GT 1 -11702045259794530309995473561308449768097161.7850923191232276556191011524125615 0.2160718227563481099608260440554199 0.0756929438648749792984874225364902 1.0787109507092502170777971217229356 GT 1 -346494648971766153461357708843291457618.2820342147675355639858141144439367 5.7149630639255657676066006942805104 0.0369241197410078223803385877027149 1.0376230745883415565160734419219882 LT 1 -2414256948116112232718876.6350257681878720735455799167979088 0.8636319266761984549776772264554107 0.0574453079831977272837148608548507 1.0591613326785268767794779098526688 GT 1 -198639315.7028708640120191576065420974453937 0.0017915221265550138666905238675294 0.0298514576403487090722009298352892 1.0303060827556495305734091327494266 GT 1 -11226618928073465941604639701607823395721426.1275675538337102543524027821361374 2.5077760968411562495791362157632051 0.0558181513200511093364036324446401 1.0574364950751233367394575872427011 GT 1 -342431607571259162337619025684723732.8006033768437055064848929934615469 0.8180272290935349829781691042403446 0.0995770046698386765838800062578217 1.1048906312595029353920952853790073 GT 1 -784340248192.0560622573973433628237547858279868 0.5975103608776696716493603013382223 0.0416461124794379358747137063294978 1.0425381668012546988297735806206882 GT 1 -1596444394417668706830798149.2259124104164144319889283817527695 0.4118874762016014504774011070322184 0.0103983707948670328326168408719947 1.0104528115782810319780316737570863 GT 1 -2278828337557076795957087.3528952579848658237774462400035878 0.1414813772973118111042367914864546 0.0176377981404853181029814631517310 1.0177951976353212079663773630515411 GT 1 -2125927074818119701814634669457609395435.0209810940551818395973854099207788 0.9449923768374228301453155824919084 0.0502645776723995233523579722946050 1.0515718359897131870143694503729308 GT 1 -505957685379208839796897.3963594051021138655256607683653609 0.5511370866372512027672235756112319 0.0022118354535079845769392699589148 1.0022142851744643860598988176539757 GT 1 -532528796105666263114.4574804288256570342939912575063894 1.8305075323659107146238183175760008 0.0685814930720597327392645846031937 1.0710465786205938698583913286668697 GT 1 -301214024064369529113102780.1347363099385607130709116428118121 1.1577315035270308741248571125937660 0.0132284260306663360477467192012729 1.0133167010153203047043142688959684 GT 1 -5496536513244563069632981881695739199733.8336325310688110987412858169775209 0.5692995543938817375820960729370461 0.0313385920022223949061688593938469 1.0318401523051147100652597814493905 GT 1 -822446266669971846377.1575233157874648705958334116617837 3.1066095258728481176279494278899488 0.0993615150865467890781618247517011 1.1046513395010772382418858392581598 LT 1 -694818422271128059315573171435505.9859887519553413283604237937655274 1.0658087234654426177591038035668862 0.0337992450964618286367647714193138 1.0343836455502562770599860191652548 GT 1 -54152414942077075.2435840054297951919663398364491092 2.0276781491737171864643687229738076 0.0601601327123393268212743096900848 1.0620457721792667762490192838722969 GT 1 -47716924833567378840468841275524156303232.2086356906259721042101174684410768 2.8874634106704413140537496096650120 0.0798546720459394102144973040667421 1.0832236562467772148137357001935742 LT 1 -347849.2926026649847117422081852790907488 0.7654141306911061220955671764143288 0.0723571009213638179669850495945849 1.0751084272804914227506705307862449 GT 1 -1641567547106625724939874542156371.0975563490960598771064357055934465 1.1595221619774345215395658316131229 0.0742590327685296196898402512160175 1.0771608164799055260096195396100629 GT 1 -51654176079104714247.2652070623647924715248668847861712 0.9347174852855488377428699358443499 0.0236069907647768416783019126490203 1.0238901002234743781656413146491270 GT 1 -14717081919.4847206870737928038105633877773570 1.2560007835222273729154684483298489 0.0662252686990755799527974679778378 1.0685200568875452181609419843100476 GT 1 -15188767518792912464883347427896449598094037.1123380103844657923889313257354913 0.5733316519010739480608106754673116 0.0467666129792500792935974484930578 1.0478955081217416444384177698715032 GT 1 -199781051714.5639173699269384810642378814508864 0.0493671833374294126155158117833575 0.0322609302702145091966934420566329 1.0327927841065971259895044471593592 GT 1 -12912769953567234587076670170777675607.5327806590759099362262433826963472 0.6111431382518560408493375746980730 0.0818469175740365648569583172355619 1.0853911458086609082644355799453121 GT 1 -25324386709522263748175681855640693813.8524634119210810120245736651828461 2.0429564954923508045101746317560667 0.0120714354834483870603584648499045 1.0121448869691650610603735798239891 GT 1 -1050589830.3657425691769192695645654811824629 0.6093838060363694889289927810164915 0.0536192119992006262096776287717909 1.0551102666076957248935428834323019 GT 1 -1873007391746022391850.6506441992867568501737839117638201 0.0896890549737264003162475370951855 0.0998994789042532984050128618255384 1.1052488317883166155316081012959671 GT 1 -36860534045445069215941378.9889297642806957604201673714158189 0.6606922238520282061253537389273326 0.0326374127651270212027755120435157 1.0331818928630364973223435253115390 GT 1 -4068.2598291141954472462437518996860725 6.2909656152768294456861028609797499 0.0200206548220626779990466630960123 1.0202237838886723627312396004969329 LT 1 -5256058.9042660636199573996981994933956898 0.8432772343245929685175600713117735 0.0099854947432032438047539523022294 1.0100356841862954633833701602693829 GT 1 -257999255511336379529.3050787223272621881247376758345542 0.5545870691350557728231758722454729 0.0143690776517156132840003642752879 1.0144733125591991370917127064084925 GT 1 -246563514.7587152070143205167874949397435525 0.2236065576647386035215998806437247 0.0176385389613021892844224756203846 1.0177959517574716771203254930386156 GT 1 -3732727654614186549534007314086530.9845184553423846155733858341193445 1.2044384830600132298149344942066272 0.0116407224911518092859291041551713 1.0117090061324196401752655212754536 GT 1 -20395322606646071.8063799684214505044591316626268341 0.3000277711458526218041298512194238 0.0971575505346640316454091413777678 1.1022072153553439263591786568013423 GT 1 -265444564791433312973698176907541293229.7802780303113547629363887298997911 1.7037270069640020270613741794865794 0.0003306795167014796477654822880448 1.0003307342032290045472339546557327 GT 1 -68.7137808654716890277603639878047146 0.3601670000099814692251805771590482 0.0871795713901258964468161866435810 1.0912161005248937175489465589563872 GT 1 -471405824933772.5130571765077083382536906476886866 0.0467864204002005977987713334169509 0.0314026019178272713051444981233295 1.0319062352832147758368753763208543 GT 1 -7906954859.9554615132994433692305564555493803 0.4751486323407849422052906548006239 0.0292294977324059302687702736072081 1.0296651905649595035156976815771878 GT 1 -345956939756500793153614.0140515122614942131258813870425041 0.0354645981520023486586154565525961 0.0111886174208405223488147280384541 1.0112516808369179935860295639458279 GT 1 -2938834138.2074215608556147206843374466344702 0.9510177419896065940956203800002593 0.0435046623515872226835342759064837 1.0444793645011502530130476569270129 GT 1 -5.6392968955723548955592281919375555 1.3068281178595599208892359219541887 0.0395433048022925299935332764896296 1.0403463834768419567124463730755626 GT 1 -13260351697695995110107.6879455109164063854413106772643999 1.0790394745916545037382210490121470 0.0659114152587157252904849430222970 1.0681840007739976871475648910255421 GT 1 -13943608505020021269444474520883456.3390770310630834993765935250147282 1.7780067801810188847456072526613518 0.0659926855753753440921587695928053 1.0682710094942107949743413031374418 GT 1 -57428.1678856068034035677480148445976686 0.0103211982034492425589377319936825 0.0881361340508273083589118708418763 1.0922645698422237278333572001983416 GT 1 -45570857287107180988156.1078818308481220267069578093602123 1.2673883435774709559073278490259266 0.0504419726900415941781373715042841 1.0517586370532263240555633397733784 GT 1 -130481218973421063751527296616570327.3949421746264115400277326168193209 0.5890885079128880631446819068143304 0.0711982707530059686917670171815794 1.0738599867924860265486242698949144 GT 1 -1534751455558525435787802955166274437435975.3080359263931344446837900849849767 1.3483834320204674354083535388685662 0.0567723883723046663257234062184341 1.0584476557730279324596097079952987 GT 1 -174086387655636.2148404909541668036004909489573309 2.6199395801674782470587942447105655 0.0405638394244029026607959073683150 1.0414094998014433677535352445257729 GT 1 -21438242995710326031498597026724.6875575364695620585959001447918378 1.8308276371326386746441081343491409 0.0486282436211800001384286109519923 1.0498503818038148078377426829845676 GT 1 -1911323417132.0492512604157839647915784431503739 0.7989897065497677382801262011069108 0.0604999280148746992237810611697938 1.0624073835079437700574359810216223 GT 1 -1802591268242826008086500935.5490379855932174059812305847981627 0.0827811882456741398701015302271413 0.0537889335019246235624179343317787 1.0552896201252283245990639424905935 GT 1 -14826977384430843274501351.7970329880879271389326502382980423 0.3284647142643063919012687028599883 0.0117704868174602010817583374413574 1.0118403074198760261998487384948357 GT 1 -5463888637565057516630420818493752.6450886138421077773925494979513147 2.2671874354103178736151507591919859 0.0836294108109407197236528970835554 1.0873344227752365831333680896866910 GT 1 -555967990716479781225314317080761717.9289316731179214178036594467211780 1.1071056245188171093575955868314258 0.0894427161716896125295738113295753 1.0936984671001540138596015254956713 GT 1 -16791379228369878308.9987344329485827236462195957872277 1.2024197254193412596503838583877932 0.0873152708962979945871290222788140 1.0913647711609077038304565927031551 GT 1 -196499336409145333290488.0893579980529691070629359583555621 0.9449447714819775709800490978888087 0.0419316207312794009874416041821651 1.0428361264512770097434258772609397 GT 1 -15976459319453662223800548589540225195940.1510274508669737747751320976167568 1.0286723368722630401323064069760328 0.0071672038539767420414944601823584 1.0071930116465931491358658377838056 GT 1 -10557449487245349.8920626709456546236827966886993760 1.5668141606571907291875476603064567 0.0479397502370777909095466796518758 1.0491269586272505005415230829406334 GT 1 -20644312457556.6296439120620405852325815136164085 1.5277491642103720914518145482729740 0.0245979595814490073989430541972955 1.0249055438296040996135219076451142 GT 1 -657080166.8672118583399534441561509507982191 1.1365861657210260635222542982690741 0.0876876833957097629390087403161608 1.0917728951142662581296686968597389 GT 1 -188341248462.6610804429869550731069758727640429 1.3649091591917329455109053098376719 0.0469860495447023995722858826946699 1.0481257369720147041013895209023892 GT 1 -11664172854017162438559797159328792825.5441370863017876864558692520340124 0.9470259878730923854453142592232849 0.0817846907565884173299440061092090 1.0853233742027519253946454512831855 GT 1 -6469521765753067302810644151426463784.7043241660069503036356663077036429 0.3114774738799958991963963216456615 0.0700901814942770143721991126022348 1.0726676668853516427272571504734316 GT 1 -134830568279.5677841931090991431323507432956465 0.4111529029336134972924417263333715 0.0483053754984465530667372711652919 1.0495110682317030080654220387188238 GT 1 -563324787802812046157785281530817.1607822560485355648360003211722909 0.8249557201114866477766023101468826 0.0218305453970231239394656374125646 1.0220723574910085032054092251621673 GT 1 -31476213718507038579288917651308826890776.3509261659962534639743380829081118 0.0425737662568003377441979240605643 0.0960674882938676934188410483314229 1.1010005765691296476431216550592885 GT 1 -38672821614446410423902336293697598740.5352201942061767381060898201524735 0.6083870808337588463200937037290181 0.0691182595752246306211079087272166 1.0716230340216946479631763066868323 GT 1 -58582613545563426193687070485832123.6407991472075117115533309670913133 0.0604650905904556911052397456117188 0.0014772303324661861543095885203966 1.0014783225129276830712588503705832 GT 1 -288751461513702528725551908934.2859605424429281071375596516647172 0.2864758160372278584641216416494473 0.0076263978938615367502108016291775 1.0076556275725528482074047047468298 GT 1 -1730302226274478201769671591636281272121.1240021980754514100115532203509222 2.3012357083143305783261237797193669 0.0491192124825933579530885755762608 1.0503665791656116792152032665587609 GT 1 -884974730111668513569341.1039090869484699988196526477074117 0.3054604313241957424961924855088864 0.0126748379078298811213421484651123 1.0127558489281504793475423766522950 GT 1 -348769711389445837911511903608455836.8358633197392783492493013185044946 0.1065846590848548549007827401276478 0.0232780997870271152439969671646318 1.0235533141191162397868473465893277 GT 1 -185934196288348765799714609091046.7215722319024371728081579190142469 1.7363748273289495397086056168665877 0.0741307118312147155283008589177392 1.0770222117847261947328002673524062 GT 1 -440499764820446.3319912746448834442604821826787264 0.9908710929661698060981423716533837 0.0108383183839106141622906681362896 1.0108974808258731137843468320013349 GT 1 -2804742641048697876638.7978234318267114679605079721187187 0.2852973732072045927534877132736419 0.0456041225723932209844148710463423 1.0466767277513404413276308629778184 GT 1 -177558038.8733550292697923020561179938853142 0.2357753657967515113134420580783158 0.0514342825976099310235626946773479 1.0528042063958293361285781630715007 GT 1 -15445382934161635271399642454686470095769.7705743012043616238107895846014618 0.6321278315401511146975662484095001 0.0443847317455496593961398674058423 1.0453998859954510534218347459677098 GT 1 -243399020222759911650159.7784608556886390837589763114718724 0.8432408898728570059372697730649879 0.0800457859707615640882341167344242 1.0834313775370106238897770067246947 GT 1 -15923871970.1394734304117071046841446810421618 1.1438747804597219363222757417901246 0.0816939783486738694429936648935282 1.0852245869940630671265075912882855 GT 1 -11646353512313244022927517562246713108.8904173047786959547134779910098755 0.9200839591961961721079634117623070 0.0283779930625160355754653539483755 1.0287884319073751526647987651735253 GT 1 -558978674856423019423468845605327.3722519944377633214903081951592340 0.1702614956017095083313593006903883 0.0008088238412950490736979396323224 1.0008091511157816773385328554733166 GT 1 -4538482549063443098835933211.0321620874389179966960312194947413 0.7974569556942364900542889204895676 0.0878827585038185121744177630660379 1.0919867428980691769265021180959187 GT 1 -515409835522175239343244924963979.8640308384038346283740870624116539 0.4032899497227676425621194601563890 0.0437201396367054528904419397204982 1.0447046678052224847388813370721413 GT 1 -974488.1444630377273311153854310255509994 0.8118307183743736806803415085100387 0.0916092640231837464604676027869130 1.0960806669788513703982137363053519 GT 1 -20069093697.3165419455174032633923584522812094 0.0990982820103516736474136147699089 0.0768106432146260119089941782733799 1.0799209119067868042642110999492173 GT 1 -43579087083628382.7567429532861955183586199735710196 0.6719615177401167337111371294864599 0.0165731699928063080358423415244390 1.0167120414730797242420523771436267 GT 1 -12880649.9432141254278158847204916209443783 0.3405365968577584973585828823530666 0.0261109930859342301348277928175569 1.0264579377734576639688350488466830 GT 1 -1.5857059433529603204453632741209286 0.8225993461481908144035517794586683 0.0831149606058651679130062546127060 1.0867731805670485768790911584720015 GT 1 -111382119662175708846069791096852.1359554035721344828976324119473361 0.7388929378463448565450346457848550 0.0659174732078556500143182129240484 1.0681904862068389791673172352699390 GT 1 -14630682012603059.3914161651168615430782303924345585 0.2824117440779488221927914292299492 0.0214640756707800844945293595083434 1.0216977791467429580326866204526868 GT 1 -476569707.8489226530427543018028758001867836 1.4289195951241886021963964185221258 0.0969298612208741932127127307956576 1.1019550555149635705970019905567178 GT 1 -8831636518093479510529.7730254616734710849571646949343966 0.2730924716348296212566944651250451 0.0095830414445365217396607558236192 1.0096292542627555085496663503945316 GT 1 -1020050258530125982782.0413374109732741403649663245821782 0.0208543714420048183175063950137387 0.0321290348012556956396228674435331 1.0326565010053702553823577854550365 GT 1 -42437.5283872868777090185800986636485871 0.1677927193844109226581937356564721 0.0842989422655262560133986490624924 1.0880653237588482748673884263966613 GT 1 -25583867753941938212084240157256074146891755.4276409160523931286388624257963528 1.3299868630865588927774167184442555 0.0701853369590654265779611380591141 1.0727699997478972972075784347679089 GT 1 -2537826854497686.4280111732744414360134265672339402 1.6974603442021967799059144722604892 0.0854537686409682804376749000922232 1.0893272587285945052605025669019151 GT 1 -474464.9671706534891101868260026661014803 0.5471568805630360703781435454826422 0.0385906797402599832883054588946182 1.0393550291031350243799019452404517 GT 1 -351134028704947995870012.0088534043161276338289345266084878 0.1632565820684426282461078047124930 0.0647410828922110504916770665615307 1.0669318713349782446601792654207322 GT 1 -90930461490147099319066470586.1545039009738433689993789809567689 1.5531570259758337710289974463816488 0.0932560247591445816957162136092467 1.0978951451854445310741679944843281 GT 1 -2054274.8688057728057972918335693000053956 2.1982560639815224181644024074176645 0.0130804109232045895469842407363854 1.0131667129011608540746479221576242 GT 1 -134070520913627272770815.5370182103852573261030912532627074 0.0004808036012852484459952288119416 0.0500597965063793771233105955484722 1.0513562400595134368618682165008734 GT 1 -8898122533.2913825347909345100328695698039920 7.2236970823250907246187896881999962 0.0330227678861727904438618488383360 1.0335803286728038649624838654619703 LT 1 -3361015804908291562848088.8767637522936365614613962481744721 2.7870055511106994987517291379776156 0.0257361571201107693460475376625196 1.0260731261089226338850091622307046 GT 1 -39082397207184037.4541291937581337217874065394250948 0.9331322096398599129535681124732431 0.0772900126279069086733361803519511 1.0804403003832761303072668928245488 GT 1 -601957.3698475868319756332014445450478108 1.1407247697398702559235471829277151 0.0240199282214065628277973778465062 1.0243131110371379382404083145486816 GT 1 -1590.0127675670058998535508134485797737 0.0150398670028537632610630070989157 0.0836934712861272328195046480770483 1.0874043319530037016941989827249123 GT 1 -107506163343251352789888311203943961.2811789663611458746405343836577679 0.4225206427937014136872708554212257 0.0154378589515201476503658196170336 1.0155582634957353370848187825903346 GT 1 -8661651920645945925421236871085939108.9288839183731898564227002800917796 0.2032799618921699134917456074713759 0.0384583643741726765222275778316150 1.0392174121078693362534277584691378 GT 1 -425051803402927936852537.7667458083538887424973060414737292 0.9878257495296466946753429245470701 0.0610903183164299905235270254242017 1.0630359900405100331905088618599640 GT 1 -1243219722572874639953710589383444657.9028330603690205031994904174092525 0.0877825771838860045268462612814377 0.0624681646598749607908217589889441 1.0645045640179873077013182991436558 GT 1 -1035284342938549.0946194983171503903993888546023117 1.3409292946678519310387221014452665 0.0158294399893287231771214083438693 1.0159560636061939277497770543851177 GT 1 -40569242350853381363848184517550469025.7569173914430069275515435801449678 0.3748494975530568620898832698641597 0.0161570105079311315107603560778510 1.0162889581858173829812010202080263 GT 1 -74.3539358340588810794783984182977997 0.5363799287422519600069076956955579 0.0680755972253463823957899602654825 1.0705035804891074322994055278226302 GT 1 -12461624076828009177233.8240226661068851114401834355771007 0.2155068885323817148529590895332678 0.0954866348040203014824547619811700 1.1003581979198813597601154971747314 GT 1 -4743.8980790832538107199450422634225306 1.4014540169290478716977895822333795 0.0225021426926208419795010239973033 1.0227591791379300269203453002549332 GT 1 -343771680739709228663710033220364015353115.4565438110189960228421568479248585 0.5780136030158105379381906986967547 0.0170699545645886457635589192695258 1.0172173257259599272283496366447270 GT 1 -311780750791748673302674796278738568915173.0440018149771575997906394128178269 0.4862222170093406185160656253441076 0.0820158480989317066176725123964746 1.0855751522349928699024880571982645 GT 1 -121017973973143184837918375.8573078489011002032241790548520054 0.0639850777489079106349301853598648 0.0672796893430615680280080492342690 1.0696498972915651527977572264987601 GT 1 -387566749757481509517155335805875937595.6567039486186948533335110416638599 0.5092142530555427157599058802521735 0.0931003568051533818505472444811081 1.0977234819625366721799195787838350 GT 1 -113198909902905561288484172343526953148936.1604760045660594715749937568991956 0.8672339873056335677381875117377611 0.0778452933928341091446781023067280 1.0810422749167013859950104035969573 GT 1 -14430468465209005280470476109526393437516812.2754796557235525509395822835775635 0.1620671761689685988930369477296879 0.0897675646226059591671737209245414 1.0940552885946259205917865207216748 GT 1 -2733785646825122865654.2454270910780625881320976148822083 0.6370084984744010797322709290599649 0.0284101494128483763780700771959374 1.0288215279902451269579786327888603 GT 1 -130136161922051882084.2167630490268096728287949369899282 0.9669629159244251531624814323477837 0.0753867591527841294687375884991200 1.0783797469084270930709781740779714 GT 1 -1940281370032490462884570362859055.2230178197324424750821669988909596 2.2379808499217479269526423337420607 0.0626437842685613216680495360888413 1.0646919027864002956223878739571243 GT 1 -518665.2373567691634875302886113088717510 0.5328380669524395253858288515834220 0.0417906507560850776198404983903341 1.0426889974904263945863237079720137 GT 1 -53.7433531695938005414172375116987836 2.4514697932111083318137817729284145 0.0330559903796363911751815324076499 1.0336146863216573182609798540722386 GT 1 -4255021097681812700933834670.3701192437796246011721357271762147 1.1150784440647881155311827880166591 0.0311365794726550975874402133160803 1.0316316259137878063459203637166966 GT 1 -2657426949339322903663749344618175541.9153994307458080997031822040838303 0.2975349364724533639687882551376652 0.0786044222864251130652601098752793 1.0818658260212772446200696038627964 GT 1 -4122414547570845012122.8580564028831484768177013761861983 0.0521597551364836507003041347019376 0.0170054053969224080770177216128708 1.0171516577279351706473119550647820 GT 1 -692232976631574345616876416382107.8050011551189132042157924582703637 1.2015731883639381643735597468367349 0.0493877198512229932572609043133634 1.0506489965722066559930526430988304 GT 1 -22254305798269301799265124555.4669947209266956190554984737870089 0.0514773736199564535263618554799281 0.0109277085133276538681018559513050 1.0109878544931877804489285395668733 GT 1 -197494941518002887037.7904232801679752167230674473893314 0.5969355406345086428949466779468821 0.0214189618076136017026948327996521 1.0216516767787819269205294492436114 GT 1 -2922306897.6606668854000774978650184926165457 0.0739121979227826369191936048938967 0.0816102688494428338189971096750064 1.0851334347178504209929371116165442 GT 1 -20974779127167121.8383913145728998786476481704920438 0.1957879145875892754307746018481692 0.0640711145193527706286624512246087 1.0662157824415378812385946525947507 GT 1 -1715934.9856734849844390062287696511513050 2.0526787392245275396589297974457967 0.0575940524903189548235277054839984 1.0593191550800252297790211461261408 GT 1 -82324374083736863372571.6296555383657775479342034926141449 0.2012866591701245227581399687124139 0.0518446210446816896054722026882707 1.0532368883059546375691478503658786 GT 1 -5612230145200482.1501587560685826758541067266569489 0.1198016968551761257072586344158846 0.0638261709124791008582190533507137 1.0659541049103155815741037393280453 GT 1 -1135930939680439398991.1969711093221112394124575369115773 1.3822349835405483119622691048193819 0.0332339507103653285354700525824722 1.0337987473502601991993430857432498 GT 1 -10551724884302837798536765293.7646653114727409215144445253948009 1.8629736414401959110095283228200931 0.0340321303719804465810272773644656 1.0346247065774249949103372228512551 GT 1 -1449158476517019509.1013239022174547582632103575373628 1.7235659539615989832943615102019587 0.0781633084054541726776298232550919 1.0813871951978730340014473443714071 GT 1 -191397876331774801.3613838084323832931569362714122905 0.7304570693458567099748545550469812 0.0506591238183562834762765564382292 1.0519873497338877233468170888519925 GT 1 -2005464520372975496545.2004409907874678443224007337796517 1.1212650688906457681016402202496284 0.0714765766873599547609551967879714 1.0741596714611110687553150220056543 GT 1 -2.4766928475269243717332716452895815 0.4545548915870161192676092612594696 0.0914091517179021427746984180449037 1.0958603980363102527039007769193258 GT 1 -606094197862586.9828844874427753184529008651865987 1.2694954811965801703637426637006972 0.0857239289200431048724651832070908 1.0896227060016069773846367388384510 GT 1 -8229178133029334993632997737.6584749716393015765172695555345995 0.3316765959418303684578801080335558 0.0886039785520910005990529127634946 1.0927777654812717665039938082008212 GT 1 -100.8528222581797153038726821531277160 0.8296645455678747813472039999932916 0.0670829718418745675818201689537071 1.0694390122520954921493738801190691 GT 1 -2179398090668016586604787163309.7351178539909955883182144418718476 1.8811172456364521397406847366372842 0.0480455184764136183179032112894266 1.0492380588595193501220335303968701 GT 1 -100789717663166828967102610461740389490629.4861605000659085325260217993092753 0.5132275732270108674132868477345103 0.0190928518521278567117490174923603 1.0192774741024300546897246164554703 GT 1 -1065932641303606.8954327624742799213142066729548801 1.5494270586014627168152642283670892 0.0712868139851974468981050809940785 1.0739553219432630652087572194742760 GT 1 -1892436414369499275870666127231979792.4661313318948800996979306154435062 0.6702006024196219628819034596136765 0.0792731749326568515811158703886385 1.0825918935991985186071359798006552 GT 1 -9176123066.1837205667916951941099543746700430 0.0352155467892709840059924955862012 0.0208425954622930042767262541302284 1.0210628684381040954019694001982107 GT 1 -32029954083099.5148400840983655270359805217921308 0.0912834855451623589044623525152741 0.0164561207233614831797058280400267 1.0165930267170078310579879910666851 GT 1 -20263865650006425.9990568201920135230037124758364759 0.3213489328360592717819355287547341 0.0695735858470974907972832851318902 1.0721122880765223124623502411936581 GT 1 -174408.1251849865055129867831657740151366 0.4642127511907056971287458276874589 0.0828863702853896507582811489651216 1.0865238997736548305314366423981922 GT 1 -350244.1595659630485839103418885354211829 2.2532970961334461926307885917186926 0.0492632564095075120338267008545195 1.0505180753785286163702626024291891 GT 1 -847109866557.7297421880187697441283164383634422 0.2882267033580592813898990678354102 0.0535396255184088882820747487320706 1.0550261745217710266577276060293316 GT 1 -1353649322249088396167321093944.0971287491458173385122985304339393 0.7596062684475360493069570730614469 0.0247600533288885699467807232058177 1.0250717391118603810824705669137259 GT 1 -12421213338232628455745140262.4238062532622108236345808713283868 0.0907515894610614206957636782500391 0.0457487748692320824946989477717679 1.0468283034899061710375766728100259 GT 1 -1.5412838792014205535659906897969325 0.2033661671600996357072549960727496 0.0628659802288889013655519144105318 1.0649289762660695005543867584453852 GT 1 -2521293502653228651997581.5741242569796282088891042294253198 1.1943432576460871810360151868167392 0.0904515963737875741551763661383323 1.0948070624002804312484590138714167 GT 1 -32134770681938538687.2072242408914071805409188567480418 1.2668644691286830898876697194202520 0.0977546316344100519147459361960084 1.1028687688993035754067831476566856 GT 1 -121911445.1633066281350430565874918025734428 1.0933189348540417029245897673459124 0.0641069221041018072590991161955768 1.0662540420468358251772980514098540 GT 1 -541580677826929317722949.6623756635304962711294662124976228 1.2095997181147427763054887258024510 0.0670588903960599687901202231585375 1.0694131995224687698225254950245864 GT 1 -4247645831536707091022949879753201.3511760645825209284929111476728160 1.4796740845990595445792712234962269 0.0231494868415441670026141760513625 1.0234216446250258691200623407211060 GT 1 -1808090403278.0565217900973669078018165864279006 2.2753359510521116299086879886087836 0.0810722450706499498197679914509790 1.0845477724158828529527405102073677 GT 1 -406838618.0255186357485746795146388729170248 1.2473963333877324087072375239534645 0.0529944963841162895286643065931390 1.0544503741805453168106857443574761 GT 1 -67324599695559466768372135131.3743081586674552351413405466218584 1.2778583062785940421853838150717302 0.0685913017378250512868869421840530 1.0710571095659634465822050929298003 GT 1 -469283597840139844.0585598109005102710752371933048192 0.2068830876884439585672271254823880 0.0414686668684358937831655974763683 1.0423530272742792357198706526029901 GT 1 -4925105.9747278907262859839738376057058084 0.2384119976409588213494667654468190 0.0914221532947885509474124297089528 1.0958747077445090513095654706176253 GT 1 -53672497.7747778271041660409674318837006563 4.3389163352057586802207113087196387 0.0374983933992185863699928936396944 1.0382195436259738154340574257242474 LT 1 -67.7397874899071715859877852002057326 0.0135705807044401237990428485632584 0.0940364622691621946595821562331874 1.0987562190792238507311395036299629 GT 1 -1245901002109097231343.6241009354726539289929262608443218 0.0905983561246207303809674133233205 0.0945638745336848454490598729391329 1.0993385447692879541778675705819833 GT 1 -34124510.9110892884331743975377416660299207 3.5474621240131666537755232484220701 0.0308205753446288013038812546561412 1.0313055194692246887266197261894652 LT 1 -21959.2913861086054180584859742747312520 1.5196863684552801969521762657503003 0.0246103775463312285231063704064798 1.0249182750352153696996454265169875 GT 1 -1871.3289265872627715959081585850278565 0.1028130469313746752128629650682172 0.0817298639840111138186872644669042 1.0852636658367149183885228670343521 GT 1 -404761319030592699481659.8782977923404719686060695356934225 0.4312992690891935587764684270733917 0.0342301188691746011497268557789475 1.0348296914391741102031121240544596 GT 1 -1.7998803057969222782647997493239768 0.1975225372093434606854589686271902 0.0432726119675948311470934949992101 1.0442367890999536236884439659922001 GT 1 -108260977027923182943172487493650386.5768956117045028988177242870453802 2.6554495175287607592975505433384987 0.0598895828295931158073599725439277 1.0617579455416682267508336101645301 GT 1 -120050998878586692798147.3507579585675070590835388536263119 0.2899092723176706349624123059411447 0.0124038107574669317557729717489103 1.0124813801227155432285148956455368 GT 1 -2661363376218.2498715843819617145839959453189321 2.9492130415747903321655001871879917 0.0038977139119010241227901718222484 1.0039053297949005579530403566667130 GT 1 -11587353205606293381098398285.7862631676933675933455464617861616 2.8945297704698508353289243391504755 0.0918978694419971909757094963204770 1.0963984281179770307504057264002300 LT 1 -14000113825867504078160065122521318825174.8224190720826578254953008044820852 0.1316130197683321187665449267806416 0.0226338404134227701427318017620321 1.0228939176362225288935211002644864 GT 1 -3031697896085217842719372193.4890365440887107980712628267547280 3.3593035510908079917325214082365509 0.0871003229563072710142024903894076 1.0911292871808077378807438072097158 LT 1 -46171506459710148127497330337971660.1094702664607312557039856292688663 0.7373932692086010484785107380636881 0.0972060226480560306793925015609477 1.1022609051377206394695636788817384 GT 1 -240.3437346757848887990288257432931858 1.2834846153382856303132148824720866 0.0982918493726470778398751562919638 1.1034643693385188542368095746873389 GT 1 -9627256484977355540592042422956442031611.3408622499944650216839617905851689 0.0428448743329886614828881871668386 0.0564206435053101734360659697730173 1.0580748090780431966105096027194212 GT 1 -3896227690.3195660803153298610693870950092885 0.8904735295631554086811735036633057 0.0579470814124178339251638473341017 1.0596938291390667787767533231883776 GT 1 -492385151195394570178641028902650902213.2503144780021872170661712725862941 1.0138000807765194728204299731073944 0.0696875637925667809727734098950693 1.0722347963431603408515511619036461 GT 1 -151948538.0738984167999310883612136233100389 1.3620238487760751558735507274241164 0.0608365518178122748751731132447069 1.0627657486999289630070233167682367 GT 1 -91270342183.6508613852291479976585024664391766 0.4184604486724630645312699759058266 0.0046286675608095895302705228870720 1.0046394130134105693280292689675004 GT 1 -1674448878070603297705901604.5552564686291280508624882596420700 0.0469360863399041103747528733791348 0.0853786964068391460513866342258595 1.0892451752313349197162077282762843 GT 1 -4384254855057697.2662217056454489268477603084810054 0.2107475960246061160536566393474415 0.0595447732746429225906677616121763 1.0613912371952369785133276875354080 GT 1 -8379596981940011824475557928.7600946722753314387377141326311999 0.4484910788792526885471838789542202 0.0158501662102467019315255371150030 1.0159771234102624378453628444014664 GT 1 -41647617597264993933355242450669331894275.2421528640529528807910246875794518 0.8629387555652643616396965964611832 0.0522654580248286040248370033099077 1.0536808349532918616716318585813877 GT 1 -2.0919502207878533179309076244111203 0.2591948054941082002095196465152204 0.0072654567172161590742231534926987 1.0072919786887765447121975724300111 GT 1 -31561582204331252507.2798329172034081579584726398635796 0.7025491159562726464222472971069989 0.0380468761981004528022723163563878 1.0387895573603244145165519597487071 GT 1 -6072873067849551311057769694108216990.4758409935964872910401779384093445 0.3769817935602760727412229869020176 0.0371817599979967688230908803624529 1.0378906285060937586728339275987738 GT 1 -15.4895441226181984641332783467437464 0.4156630512683089281765558600617467 0.0434192923579459077335835723773401 1.0443901155725379876329090509267102 GT 1 -1133030263612350089.3007392847908758653450053675653453 0.5663452090247204716245191197923443 0.0042939051596924253553670987934195 1.0043031504455314943907382185102039 GT 1 -4955005758972921793229821936018284.8025076706829141675005543269466610 2.2919093967639564889463779115363479 0.0454230761201924759581866723901408 1.0464870483042372012309030674952649 GT 1 -46356640107300023876412611039065503971.7386170421959966649995991149449585 0.3209220753438804945197774851665675 0.0927288223458752653771158842633565 1.0973138904729122683243086923459383 GT 1 -35968546741689411097115338984888528.8600396082075373128518135743048649 0.1400518293985582141414541981055650 0.0443709062537569008882953624418903 1.0453854184662665308180056326456552 GT 1 -421410842880897806617278.8441437701393737709398058608393910 1.5106703374949642089456023459302971 0.0893207881301059874176180520287185 1.0935645712090341256980482962615096 GT 1 -19364459277079643650148476140034344473290.7827450532297212561900947564080975 1.9467706711726964131618937073625937 0.0798332956479526871221004888955543 1.0832004249711973909206781969133202 GT 1 -312921842.3567679705562165607072437036512320 0.1326463935878840245690072850406611 0.0233644906097115895312000042943597 1.0236417677961710169601323779064598 GT 1 -63232053014.1636092817114371730195258037117632 0.4792451529671178324003050423164443 0.0965491868716800105199341689600332 1.1015336107988901500369907579702745 GT 1 -1985282938043493.2254368350103271811759045978930821 1.7547444596957406853578059716262774 0.0093735614488284272678697142900170 1.0094177697523254927366347478168365 GT 1 -29.3848759023314708715365408651226790 1.2557865039087059266230848872785015 0.0400016036679690824202289741478125 1.0408236650091181894861938509125902 GT 1 -313.2289235100005253768874317583551802 4.4669609467490886798221759483322859 0.0514140312501074652326948447790866 1.0527828571830583659227303862796902 LT 1 -5239554601344587534840725222180278698699.5988183808785222951220525532525615 1.5150194446739161957349401258323029 0.0448744609397170453488568805107946 1.0459124926274089404366902495367707 GT 1 -197300162724063628873721029206376916152183.8616967244626954603053187497556456 0.7131264632161920858072608240772568 0.0366758149091075503679628692541853 1.0373652830343007861098498108232055 GT 1 -2309116813046881.4310477433988597696983793637384813 0.0747738036402845085136735508069313 0.0982579639191348943725452916296371 1.1034267908639195406526748696172609 GT 1 -16857429100042972825764753449781195.9523165342261586418015788210854556 0.3760536835173282794623671175989022 0.0497900853951118053418238405245386 1.0510723560542340950338385345690085 GT 1 -250300412758962.6915484451299134402090098612502672 1.2852020378908822865065908981383851 0.0439375752792486850580482042091678 1.0449320702374922667020734808861825 GT 1 -1408493852935060275455893170392120824478392.4743848328771711117362270754589302 0.6838787386629056488352056996632404 0.0403323691974108085812389617121318 1.0411682723814836411208465797886607 GT 1 -18199352271838717160816.7431536048422878677917487655060308 0.9882018365063555107244265756367424 0.0592801174689430296061221859785539 1.0611098643382990752563506878961754 GT 1 -81694.4398576399019504857050985856353197 0.6060365114434084246189313261172668 0.0029939595035871588730142790749628 1.0029984503662222719669259012947807 GT 1 -16890980566926283926933997848360243015612146.9397977863075721825771749552635134 1.1495770091920711726050654929350049 0.0434401383196453106616188216452669 1.0444119079719408303537293811087403 GT 1 -234253651683315863891687004.7006358545748318265695457361313662 0.1439932513009267429720581782533186 0.0899217061222346389965464679564745 1.0942246459439177908701862917744111 GT 1 -648791984123204457168944.4174283280013941475195929900038172 2.1020430940187435468933829269402040 0.0775869207436165301115505006729871 1.0807621305350337903673717863453652 GT 1 -49.5669122491736514760902757226970414 0.1076353147269068965258781507219100 0.0299476217594788751062410239670486 1.0304052107564538641407400890574307 GT 1 -12815683463990240061493128956.4666991756583635760115414617557572 1.6137269050942882656518802843183714 0.0858673814297397497163037195874802 1.0897796211495200328035433196748374 GT 1 -10594683302168507479513131203994.9865612336486102613081813493554521 0.4500474072886998599333150845106621 0.0335506693113645028171042646016538 1.0341264072759083565472880268274926 GT 1 -93412495061362243522256.6119494584883239472316312197237491 0.1797202585805905353632684751945698 0.0220648798197819206331675667209590 1.0223119504318979360908974593203642 GT 1 -10453.3120725232541495106882504371646915 1.2878607593415836786016878151482316 0.0458454364769191151420460883496728 1.0469296043854959675426732606401744 GT 1 -418801767111099.1059347597014884696437704227539442 2.4150035241159433705672410587591790 0.0419384034935179965012586949286662 1.0428432060986123944564898754810666 GT 1 -1908619347765040936194947634993.4398060357693849377898403288514632 2.1815391015030527332166961577261239 0.0671652758425104277849434272418774 1.0695272383524725633855619629683657 GT 1 -50932693915675664338029371172019497190.9826566143773023797453082037500812 0.7789220787502495211526072832852278 0.0739661307424710671109616652841599 1.0768444691327770845992434628672526 GT 1 -16.1846530335096667396024249338002762 0.8551446615530041542431773255146983 0.0080753539428239155422406354166783 1.0081081362184066415540250309267358 GT 1 -279541516661879672520.3918319729665280328133589549127982 0.0655698750713063835522554829401486 0.0930310212474911166254545618767822 1.0976470314888286068007325200626133 GT 1 -1268204438050350222929367.6476258456624504627860487047682246 2.2279913133261464584865526232385559 0.0571320858580736160390494434797838 1.0588290759982659401570927613713704 GT 1 -481874607598.1939636625445588828841224526641171 0.7555409963496121502507320124040546 0.0691799786712923004395059836631216 1.0716893379779546981788031723879914 GT 1 -269338.6234344776187184646977865461879408 0.3048809351322539605219830307099917 0.0724142375268982345527443945610358 1.0751700224970128097358504172197549 GT 1 -351990157465598101354831618787218.1209848289327706265561283334426264 1.8133355190485060741920201019587491 0.0831423315684329610705722189796192 1.0868030331330089127666015994353837 GT 1 -1026940946188735246559.4749185100905265364207763405495619 0.4243225848875362751449431690786896 0.0992071628116821295929452244780223 1.1044799732398730042798910392970566 GT 1 -627360944008817864614114122234273.1475546367848487391394707004866978 0.1475571482295014977656677018563826 0.0342243516601900848819997603931734 1.0348237198388193269709214317362278 GT 1 -4.7216059915891295569341178904018528 0.3877164828191147118845834174007276 0.0022581071498052554953254231896541 1.0022606605183325998321742444145361 GT 1 -189131961336908377068.9373501475059009729196182686399937 0.1518342110996194077050802341957446 0.0353764242322754353056389672854307 1.0360173306675829423359236334649294 GT 1 -977573511547685840203506480.7917078188852146869484020588742450 0.1996713625036254520502814000156712 0.0147903580425439547220167891887776 1.0149008259815171069436186960055989 GT 1 -16345269411698962414748786069.7316245563792942043055889991652411 1.6171240450260638677337529608275648 0.0894651781264702105670230288528210 1.0937231357643159293783145973317308 GT 1 -42.8250380332002973774484666062280313 0.0379637998528834488103537950348753 0.0211535106780028343406731552400594 1.0213804522991965979774982806773366 GT 1 -473108059824601008571452898113102.5834884353075128689476925644536999 0.2473609727008447969154961496657642 0.0529836690335629683050528617640334 1.0544389409960320803310299544445409 GT 1 -321094856690908793448447415492476457719.9467166023181994344300739485692003 1.5906614962343708875433417410640632 0.0749455898976519533911167540980332 1.0779027214673739555046950294155726 GT 1 -5528376682998989779182178865571978800.5108234573964871580034848854951463 0.5296652595554491696634058612360915 0.0737500522294585542001122408718097 1.0766111587599214093800906056646295 GT 1 -236823164752144273712115710218.9249860426658362635244668352347652 0.4572463839460387578977958724557729 0.0972309107852856289574764196781653 1.1022884734212018697498469632216542 GT 1 -65511228219726924793033916463.8661944453546660706102565925776704 0.4767488111807493087268620323772000 0.0025924801686373784286095932603025 1.0025958464646455323731384825608176 GT 1 -19977266886079401372407699271693.1001505700769960308845985179118513 0.4540346420455825077112032005801685 0.0699555946980171658629763352877965 1.0725229463381768621474762477920838 GT 1 -3801538758394279839.5147066041916031557004464972002519 2.6897613319569886886017370948014299 0.0216964042574940551717615655392976 1.0219352320246336161018910114834151 GT 1 -177330708814535815329738387929960632.1241723365764599207860797663399929 0.3609644782642158775475741320368808 0.0685237075927373439692616422609616 1.0709845402496010003006484207210631 GT 1 -10199146754921752043020871.9418959380014010088700896115037797 0.0653565245763246276710535510713105 0.0408142684133149828953338709288775 1.0416705507061133074225359011868687 GT 1 -30408693263894753.1656609465087907732621644143418659 1.8440877627781826923863363874348440 0.0176103611392281845961148865713002 1.0177672684071201966014853641147635 GT 1 -3934421041394755689937677208058.9305972331333547788775995076156402 1.5390549845091928345737686071268701 0.0791929098285453459552720451671863 1.0825047215916692139012069529603285 GT 1 -5.8192213311159534958233321306352992 1.2094850839995059653090623058050450 0.0059930888808156863639100353329623 1.0060111195135323470145525093915366 GT 1 -369232929374231855493074172115034211315459.8801422698508253591432322450419589 3.5658055915667760578453610937694708 0.0417568827134122644442348315917309 1.0426537573336617025681449343826231 LT 1 -20277679687237438412969628682271988046212710.8585964215280973311732217364445708 2.5262313420283175385269562590266489 0.0854131238046067603483556543629718 1.0932685278036266804940509027223645 LT 2 -12343475993134463919.6731480439345367876207067582732910 0.4193965242312553236412082784056759 0.0557451209050147990263436421186650 1.0573591502385200304553048279257890 GT 1 -1444104676191867751423731066.4857212903275910457089937849703228 0.9271514720068074943010413682283897 0.0390134868831108640192379178782980 1.0397949043279222663628636485680726 GT 1 -52824178407935046516592.5700681902550624581934552015451199 0.4265581481845128311812010000394363 0.0760190763240898956313436826615804 1.0790638529259631884716046556164538 GT 1 -73.8877129696220639172122894761764781 0.0346810307374442433479894068967781 0.0217670275005221824228789801067762 1.0220074241259264193887024053336073 GT 1 -33278531435855838.7237472479632726991637019864752956 0.7525346159225615227100597100712781 0.0333553229638025885055376743727718 1.0339242998280074880822796586951072 GT 1 -22972500259.7298064519464580591461263416252620 0.4347014771904585109460151303669738 0.0869890056193153185934421576258032 1.0910073564216835484854868926752722 GT 1 -515.4625880525613381830025975598262341 0.4755388318423691302993794126982252 0.0577574545921498548631261663974186 1.0594925583463153653506331476424775 GT 1 -5391741004892950027611761692138278029.0960411410707526416995351573018386 0.0058758466708668673021860307115078 0.0480689970133998343958608796069545 1.0492627226716849716113203866182863 GT 1 -27866218426051228678352.3938945681516323578752933165841125 0.1572633461471591206364098519064852 0.0848702223558519546892177614667654 1.0886893902731621485141253940038121 GT 1 -2523998735727513.1119600468624322312521707613988873 2.6602512126511368277860533553713984 0.0402406774224675886324661152322708 1.0410727316005734872765446228806017 GT 1 -17520764224263664.3880139400948880140351114525834022 0.0859977475797536570809648481669463 0.0704030755407438272787989935990538 1.0730042013460129507499004951784351 GT 1 -7869.9479484958837739251296256656535216 1.0356606559925227443066918736520555 0.0359565288198527878769341078783026 1.0366188908031067293680134798670275 GT 1 -23190731769118476110764.1484843202167982264090562368315455 0.5263075135466885836277130721926873 0.0487221364880494669570274218145157 1.0499490787640581503459096955281782 GT 1 -28295688292710559.7611161861920063411214555029233697 1.1206460646014399167286137483460370 0.0354778207215746136750512313302020 1.0361224512777051410876738986659140 GT 1 -1871761486173393156223098113876.9828751485762744282678280858207469 0.1746412219386771360794599020984186 0.0789239301094664808137131680921292 1.0822126512510272763923855631243475 GT 1 -152389.4216243449347618089624823963799974 0.5290674860419883500441193387038491 0.0302806537564663257977110498194684 1.0307485831193520786850282455010025 GT 1 -30.4416633337331478602190904386156172 0.8703939132268215698243677014481959 0.0301449502404352474618149615056860 1.0306086518885293214945637536182553 GT 1 -100511150563938934859557.5430241726418117912701885557341425 0.1349883407656593762489829864103880 0.0175113880784061543923402579255195 1.0176665262253933359653031842317435 GT 1 -123766491737804.5016565788876965604039402412904033 3.0180083069313850454771448695210448 0.0513072499903728329158134495938125 1.0540573746075001099574313206927829 LT 2 -26767003641430132310152712053097812.3934842325314793131324528887916603 0.2599566966692116623049072453816976 0.0423420885590047693796171519285130 1.0432646509602292759094346967876517 GT 1 -46091640837.5568659756955512392670931165206344 2.5653917287192252313382827511107306 0.0330293789267493872270127374166243 1.0335871655071742723887491988293267 GT 1 -2812872854313576.1186135085786414342980717999351825 0.0434411030542248532984948264040297 0.0218910400934671065800601830453739 1.0221342042056832475065657223928953 GT 1 -69315496.0538961652371721317600877667350930 0.1644393919723190328324617713146419 0.0447897994208038342120099154287851 1.0458238574024985641394805657478874 GT 1 -684185529510724049384466032857969.1198132506525500579614545930140164 3.1813737553056923500710123777457146 0.0974370118778460656729874575122596 1.1025167982773799555709344815382780 LT 1 -257353781883754918184652.5226131667834807042920381473860429 0.2711001793712419249636247440445495 0.0162100916039735091633716217066965 1.0163429124535186677632217797233688 GT 1 -269072993610892.4326514574804179524841539150360426 1.3364035839979832341080677935869005 0.0059878435124950285321070521844493 1.0060058425336420235981247618728131 GT 1 -2690675.1845054220935896315582414792113660 0.0039729727814717319842794513685399 0.0819597144056355530549134225595977 1.0855140052348034638553287888553745 GT 1 -1009376569442710.2295901584374193902029191402775887 1.1515350569906996208020840788619231 0.0981654116614887995494956408693746 1.1033241589529996148512481251145223 GT 1 -950406428077958126107614932686269064666502.0810944725339838014109404869775676 0.3656451978179809194390516496215369 0.0563603170453488725412376807708452 1.0580108774848144099970133120662610 GT 1 -893366466941.1165357998200199643458524076694666 1.6979639696908798458293177251111196 0.0432501982595397485026834830721376 1.0442133618982332119338677674253557 GT 1 -9837759700457659680037171741.2733744147146339291749262834747962 2.3977320589895217779106679340102990 0.0802183167798176110533583990369250 1.0836189379469801026138460964565678 GT 1 -24277158490124.0074606772960481384370492732670772 0.1921142173647526286481599393651176 0.0331754888250472697733051761362952 1.0337382775832565515485615051410169 GT 1 -988758.0432019234360148543188924466361099 0.3014246507026152331048130555930343 0.0168043090520952736345620711323703 1.0169471034210543605219548145417369 GT 1 -454089598081778813765342.6135677417603704399170696061224002 0.2588411845231467877020302133110497 0.0432001969030647579634586989303717 1.0441611015791278501644559361664884 GT 1 -492079592369809848345885933507745317147332.8487335935169061714624651743811430 1.4867715015704627359640611687435617 0.0422411991888144795820811810549364 1.0431593063951137676966838989213637 GT 1 -1210284031161578705809932162192070282.6693172781926709746337144407897590 0.2524068676078774062166397174965878 0.0362233598161265543449503751598831 1.0368957122725008964770167741491459 GT 1 -617275429891688093321436.4731357250845746755794266952371049 0.4645363149830623286831691326090441 0.0199706322508417716169367820186114 1.0201727406755459649663384654591416 GT 1 -168036287585957417.5339507433444547025132761739134818 0.1735822177726034376665033024856625 0.0221728516095365254494073549445323 1.0224223644547057345704154135292895 GT 1 -3621462690922671561228457446355652673864.3896621297760325309542740175250199 0.6577761217757413483787118023205651 0.0817885407351438869688681321143174 1.0853275671045561205304136710388119 GT 1 -446220844.7487294429259867120383276658398256 0.8409782299274768859242674379045277 0.0167917744841207432606546974003833 1.0169343546995228846685923448576216 GT 1 -9590792243382149280361739300408.6681121049249039548436595634450459 0.7930436173620243569229595852073936 0.0323883980718027039116844696302715 1.0329245099004175402073142525453279 GT 1 -93452466031928.3734661933380810891710937311247538 1.9208867636561751090542343817961639 0.0109170025198759703333188849963589 1.0109770302737632479334258375849204 GT 1 -456980581825385.7461960094688068759024356093304499 1.4225816066691464091530212446264351 0.0992310991871130514633246089972475 1.1045065461570563890422247178974313 GT 1 -33473385850271918235915366351792.5613831774043230605158999694669961 2.1833366498118600751770797669320835 0.0135184669029277617569904024234146 1.0136106733124488713607084109214694 GT 1 -2.2300745331001453638110745747078144 1.1837369404455241523226560219681396 0.0248904320933620313769446191637953 1.0252054369580086389776235125957848 GT 1 -903642145426.1679473254385054734299520911299581 0.0418181978167797615592630648845449 0.0810925536434822210126546679554243 1.0845698729533182972448939973935835 GT 1 -25780999392535141798.6409447783298922054257971911395067 0.0960950117420768820212803340636733 0.0446922890679140495013614924791819 1.0457217799999398823764246904985346 GT 1 -4761745073866187844097431334058.7633765424424534233903876596203800 1.7651966707950072468237068351214172 0.0937720768136341902899548379034697 1.0984644337319184650187647570745849 GT 1 -961224212603180463119774533152.8306524362687924711420839144536749 0.6875546923094865296921917814246516 0.0116837805624357284878677990094122 1.0117525722831178666823545893547653 GT 1 -4159101768764666242709499397018983.1504187373951709696762066016459969 2.9889055435588377901658303050505002 0.0485650100456130464622597837155839 1.0510231375894843478486403437118444 GT 2 -104893054912804353309.9271220182293920291090195269889597 3.1949180983064173445081814021145029 0.0286139388069265546237865093603581 1.0290312983673145452882468986639124 GT 1 -50806050428.4033285429468030515500215850013624 0.2791362812662761096576097994467047 0.0681920553636444169233917688145605 1.0706285535182136602507585673379060 GT 1 -6404179805234066437107895597.4243948220778352044184027706362883 0.4457837654464086237072331895455884 0.0592468459032109325880015522783835 1.0610744967671589672350689897270516 GT 1 -391408804683170.2432152068540524461897600584027364 0.0343234487098072956057317006776563 0.0711816286932238458048270278560089 1.0738420691786772537014978218652560 GT 1 -53783.7581889117195562145426813794409136 1.1577861158955408942883540377920670 0.0231159587374093187094056883238356 1.0233873225580262658013185469411711 GT 1 -9687042375136586771249031.7859708613012046903816158341169554 1.0277143703045422023095302584650971 0.0508282798687334984355464264910091 1.0521655482363926389908299236404772 GT 1 -6899275686258556052074125016796674221009.7573583102416603587564257158913155 0.5271676460223264543198844086354937 0.0084080798163570323073105112379362 1.0084436271160546592197447336051902 GT 1 -6355355998131831.1963584019086563287733402265627955 0.3831895564217289961703991714971091 0.0335174146846037254823522541739351 1.0340919987936553386523756457228673 GT 1 -104027254.0679381027235003501531386845507755 0.8972651553241685039072833334968368 0.0328776105484827620171105750374188 1.0334302254037229355519967308151430 GT 1 -245524590664649.6398158834629572669546545240006337 0.5366678921305908703801488795022842 0.0327995704940686910056958277712092 1.0333495356101770217912505092981556 GT 1 -5480214.1788424163764905099918450135858891 0.3705177123956024461051306983542532 0.0512451711059162059271970285070521 1.0526048605418152411270932564897910 GT 1 -1753643670453378206228645554546307.7249151759332565922682124959097359 1.2016767944652771481267074155381227 0.0080321697552880300164135723037611 1.0080646014119001878089502460451301 GT 1 -263696.7294820158012808132997788588080853 0.3503761856436727264983839403255229 0.0351144124650017850724052798694658 1.0357457468120954484151314691988916 GT 1 -3916839388305806912678025769615152.5663058623483176406500883307775760 0.6586700229092624031166586887329410 0.0201310982485037268636487619187075 1.0203364899889849712558353458663943 GT 1 -6127657.2236094057973573657375364853110178 0.1173173070429481234034499525864109 0.0803457896175148073727214383850279 1.0837575378713858330165941019013130 GT 1 -157148042911292350143359.7406061872362073287973152478920577 0.1065352950295169305526810346535521 0.0986271320897435091852834256515890 1.1038362691228477470632776567275952 GT 1 -1448825750365628.7169797107458866193845123247284231 0.3962182977044199837445471542997698 0.0478483917592048925467627010531712 1.0490310045163053346216054566024502 GT 1 -565781730105368280151378483300402695613938.4545884234392188662000278044178391 0.4541098115690595998026149567182332 0.0630511636243673994533182161950593 1.0651266018891563662601999375779679 GT 1 -201419886375232710578101033441594.6954475610038686529622175468225664 1.0707613614698972364503484521927786 0.0112312334233960916917309170841538 1.0112947799776333360300684157061036 GT 1 -12107245723291324013224.4877357674828606801976773814292132 0.2165569175330179842373645442020651 0.0663992602156798348466348220597094 1.0687064056104473543312559240123513 GT 1 -662200552559407173529.0356563506519315607145764892607481 0.2382993921511309699107069895329433 0.0342624604032095141542434848137099 1.0348631798262140649074218879669768 GT 1 -1007810773918862801509615491.4318918553308931122742726102793209 1.7001369915928307636798913140558638 0.0180326605394145235553442807320670 1.0181972303858772293276440652428590 GT 1 -322550955875824865841283943522326697.3026525605543496801280313862174743 0.7645214281180362932676102636625144 0.0104624338922284980745348828400032 1.0105175499226436285706489552293683 GT 1 -40829220920905007.5886327825161666100083117024043512 0.3862567050612587478714306982842742 0.0673450273866530672401962437330055 1.0697199508021956488055746422003263 GT 1 -30279336412133921971401638495502.3447468752620471822187287593856244 0.2034829646234049264344710381860582 0.0151441753158930197032030895715690 1.0152600194023899188936143477940475 GT 1 -720965310434929840740826867262382273949.4576046285636765000315734927485020 0.1421369988764039680018019392836128 0.0883373709629412811855585811605584 1.0924852816481494306088468513312525 GT 1 -289952924958864077706071429055.5970020767005052824285250804884761 0.3822314487177598184482173515331662 0.0735209924178739295608742592496969 1.0763638912769040612378419544198267 GT 1 -4195386560157500329821343656729640918769385.0900208010794314729511600248062881 0.1211534825574596736368298830962284 0.0240690817558415274380895066673893 1.0243634755616440294157979938315769 GT 1 -961925.1688025079518234734589947439356560 0.4962693677984740654607940787154236 0.0642837751354014557320837489490178 1.0664430270359199955649854321455614 GT 1 -193632703642128311404001380498052877326951.5683642569901324714246275609683950 1.7709126016693771667548112902135934 0.0874997870943214163289521511969259 1.0915669602042261040422876061390233 GT 1 -8724072660192381993389504.5460117038512180715906772800920871 1.1650200401681982677174189334524586 0.0889031805057495084425276650981750 1.0931061091099818804134852586644770 GT 1 -2685692385552177733348388633968059288506.4652457208852364177169310518324601 0.9012114010522437155559719918620394 0.0748546948071748458238033906091917 1.0778044671115886601606268511377681 GT 1 -2095846658854741.2618338341934230123299298313153194 1.6329307397108446166149922716619231 0.0216177878503312447392557683117824 1.0218548753246585671094631983922569 GT 1 -10795501340644444090331999232.1136073618310080931346530322066267 0.5474326677499703983955681377922824 0.0382741059639940401324444054286343 1.0390258023521794686046848826327729 GT 1 -24074352643794396311968597867135125899108575.7633041279737514497949345591955606 1.7309461556792025642404160557366725 0.0301448923436834872744682564259579 1.0306085921922375442544869303375398 GT 1 -29293209769073642618.7039633671939177602739497952456670 0.3616651638010920220011668411013821 0.0705448959450065691771112195047982 1.0731567741652375938671469004893474 GT 1 -2260758.5803777483369939174658255678973238 0.6393331758147530563981147287490503 0.0382516202778174560931918760371118 1.0390024220694438179969375497538778 GT 1 -16062700466154133247698478758041.8474158272867334686786135793687500 2.0718727660163850007470876940112214 0.0044092570559877091846035178076420 1.0044190064989691736392975707714959 GT 1 -987551296552119958072346987369856746870.0130885658781786529282721736354330 1.2928108915673414135525528802768251 0.0978704909907610442710589504792695 1.1029971893932519093691342228849608 GT 1 -4306.9387772554528614187538735722630646 1.9796915773838475650930279394797500 0.0867346502324011801142908853891427 1.0907288055995434379617948541888974 GT 1 -25795719031800770993216511.6682752861775031935785497095818967 2.4762721473564870841234402406978247 0.0975189355091003726347202786301643 1.1078717268966925421387888468989276 LT 2 -803749123.4919831785020215386585020129454582 0.8571582984003476526896728048288868 0.0218117561877601244050992402334415 1.0220531491332743344659402856265601 GT 1 -4077456923240767781288269557491.1432883170475878034220337789875500 1.1913180376946095943444532661436935 0.0479662193011661218225030245750754 1.0491547608929648854073541332248842 GT 1 -3476194995.4751628510839389116189088522106293 0.1470728837437238652243010944745508 0.0508546164634443699152114309673897 1.0521932955444284514746256736602831 GT 1 -12045022985135201503332.3798278936946136227474026073147864 0.6008703724297051236994451567911741 0.0109858122491825737347838951335552 1.0110466019104331867672578640480565 GT 1 -652776039916202.4722625707525638572334445796714566 2.9363000391670160519563050344152492 0.0819030792051908552079865220004179 1.0854523157267802221854332483273471 LT 1 -469800327358138077356200.7108547924738373866690459078606211 0.0606799827755233643863861233259883 0.0052122451239035892049029453945857 1.0052258762600322312466854359708803 GT 1 -8428725.7301247465510824151388675859568318 0.0486789393788408551248174146539606 0.0480556795687078887618974896938964 1.0492487328431196693700264371862139 GT 1 -19405522537825.2813590930217822084808402364051771 0.6515028191859872233504825473072280 0.0946306671377235783345895590782195 1.0994123159231817305031146443831691 GT 1 -4886727.8329103525716891308222647631881863 0.0011902069983864702342344516022840 0.0931307637030898820554033221574742 1.0977570109289702226759110239833937 GT 1 -885104859618358.8769561915750092266352795738293892 2.4572766666173661507098017462723896 0.0613871928871094197094400124293122 1.0633522308045222836410472980810069 GT 1 -3297199008548125704.1898912562153841497713401367279489 1.4409682904367084634398049042698580 0.0965517891868060316530506049817809 1.1015364912200886144892917273535968 GT 1 -41245977760168482353985288888084391833980.1964430231309636787353705686293135 0.6497110209542265622347011670017196 0.0191185526678600745834383384079066 1.0193036755145423518411761641665262 GT 1 -73917583.1975024268966313649899197091073712 2.2559648168145752976623282937646024 0.0334253410499954760626025157429288 1.0339967366021697792173136601012216 GT 1 -12802904914193678559229845252438964.7677818665027250848525870537004460 0.3427257368973920030322489270051240 0.0474592866231883427117123496509950 1.0486224291920776478265211995964451 GT 1 -4852452381.3586709772840971545298304644805039 0.4373481191444240957466736707667026 0.0374599536944137556007580116538863 1.0381796071344678734846979280553945 GT 1 -62745157714576741032604359606198873033403.7857804263708743206333754599064953 2.6257415948168580256623556987128585 0.0264519942117219953515608629501499 1.0268081428142869033954106288063952 GT 1 -1.1073213330714007466262625535179846 0.5629031932666120563667025893558935 0.0625506981675218754595295177893471 1.0645926006451980516761397756243604 GT 1 -13699506213132760428786493945.2055144689463183864940326000626626 0.3286099382553628946267015075427361 0.0012680182810227999243887721384488 1.0012688228964532757863338233541611 GT 1 -10132043904412081032034145454575900249.9561798671547170335156684598995585 0.4082951923248112684208972810237433 0.0594755150515214864163617308468998 1.0613175966102557576017946492353206 GT 1 -529806735779885330453881025426.4817429993504802669099635016125693 1.9908507001002826662680627019469220 0.0178896119444553653715953137085242 1.0180515654835080125880528579956739 GT 1 -3490440.8997790186765962400187710631024470 0.2576974792704367001848779829502877 0.0323051807624981212890644642179805 1.0328385107961457250873039972322705 GT 1 -20127180364004983218235849955.9962823862254190333068008530155926 0.0309909602687508776656028138566922 0.0412315436866294546749735061624718 1.0421056760939152388436940766725136 GT 1 -13033856842497637457855445678344505549049.5118207523633924890272251989965942 2.0796299461726841280559666753753459 0.0419787036212023476330983919383746 1.0428852712178616027395960294502317 GT 1 -1005071416602617447722364200923186308.7330119113265938517771011233090657 0.7333933550099822696017141860495259 0.0336616001083482843215591738307780 1.0342411956671532470207135865839868 GT 1 -152815908431.6705652534714698924495222444346576 1.1288407738855684447234687343075037 0.0978415105260347792307186436655834 1.1029650654033421831966197436113281 GT 1 -135108116865538029259642.3885508304037261654183437730454275 0.1786677258105668410784314286130275 0.0375486959477832826555282187003213 1.0382718072925786076795758638222745 GT 1 -66026720400064127685035076415203988.6460191898755542245169158204033942 0.6967483154539243693618835918623354 0.0442449683772576831080333393990697 1.0452536418390465580773996466840474 GT 1 -82093297294089178995229529721741537.1762654508881288220935608910771744 0.7864070827116856443769262006826125 0.0762325770284717197101082439739020 1.0792949457646815649132699321582133 GT 1 -2896878.0969837861744172559619074956139041 0.3718638457779936795024565522902549 0.0806098767345155732261589463065750 1.0840447382547416435341318571642036 GT 1 -21407362465749076719533244267116613962.9784801457890252489858770461836728 0.6210214705793266126958970124875159 0.0654980470227598485062472266295499 1.0677415622254179465336637659827582 GT 1 -873398287928897390828.0602837158371266511261487920459792 0.3136107176245091416103011874810373 0.0799792301848304957317206814815614 1.0833590333078287296076981377960111 GT 1 -2111033485669865107308128756650481.6272872801132013498721905028238408 1.3080154771823416349613627503556367 0.0175650774724989733670630508140422 1.0177211740456925958925554134823376 GT 1 -25.5870627557673818104245915138510123 1.5843025353915213355321765766254274 0.0099385701137580618222818079931498 1.0099882873884038949412712365286088 GT 1 -30826597464443251914739399943780541383.7411819696016156458069029483659378 0.2487637297104167102888911539673496 0.0749639547621277391043043232724736 1.0779225744042110483912130948545850 GT 1 -2940067587.8948308103142307966881045416221252 0.0113294763816358856110310769897596 0.0909467853061012811436382549030261 1.0953516445006849096865055621184211 GT 1 -58288111646.6381887010570962650204411623260114 1.1734820033547928997610859292431036 0.0257448751042771470369883266455732 1.0260820744274256743036628438971210 GT 1 -14400863.5337826506230003982467208288212954 1.5374385084104738524360501732491499 0.0076193170971889252285500336520524 1.0076484923853650703166468460768829 GT 1 -12016860514.9604020238359005692567373425468794 1.8786301752715358627366096617970051 0.0025899294876962015361876462833196 1.0025932891571969462072653388909357 GT 1 -11149337324927052132053447.6061532306811999306908355659803589 0.8813230722163099923188014031525448 0.0884203642133318543512679816551107 1.0925763208392093401903428203955731 GT 1 -580534936090743977925430710027829892693050.5797677008118743306640280819241913 2.6580890289075200236060151228452407 0.0680231383444695639482941965264733 1.0729287015700995782989864763556294 GT 2 -143527383551492671340041153539488550.6586978638588968743271555804615890 2.0112107384178647191861651653472821 0.0434045466239193593796238515361643 1.0443747006470049482619421551222360 GT 1 -1698050276223606296211815.1137609906597518103498521631474053 1.2635562653389794027110349987865102 0.0264158577185031007584220479442662 1.0267710251556227329703912728622796 GT 1 -586219394814.0040997591460547925298406654939321 0.0617715360895509070364501857930411 0.0011876391248618764633754123513572 1.0011883449270882287425268472167011 GT 1 -31190348999860786782206936307.5061628124246044220901947137032508 1.5062686664373237192299950479305097 0.0239932839200471979607426732403410 1.0242858113632602783069493575357232 GT 1 -3170281262496347182193876360.7952566344644201025538574898349384 0.2865938194989519294823473505536851 0.0601199642765940166926070416484458 1.0620030334332577779627199064827130 GT 1 -22756941659996950125070892652638013.6051833140082909221567775826955275 0.8627564434838374234140997755665493 0.0823021694215927374304219169781892 1.0858871031368546413081585394069043 GT 1 -15717434214386610426325253210519242235908.5916267677875713061624043546649431 1.3198609288289985528236088912438303 0.0883726760646253199517341133247661 1.0925240084580360257532895780687014 GT 1 -24590795861022500527839746.8776232138943096900546072701166282 2.1301503160946307686707939611339413 0.0759753738623209639750603077671281 1.0790165560314473826752572691404597 GT 1 -28188676713728980.2124003851255587377212458426943373 0.8171537561785589520486091535859130 0.0838264017536397746548990965806925 1.0875494145280231875000699238972686 GT 1 -95304263745.8137125510668770320146901797614301 0.4625044392323701309899089506922495 0.0114426856531630726042022103115988 1.0115086569224762159280508389763876 GT 1 -839327.2524525226507362563251668787029463 0.4213208455449339467540072585424520 0.0692755820314930830276333902144615 1.0717920520021452011931072175627804 GT 1 -2.5138117536601325254185327671100786 2.9623279347035290268197523037877335 0.0968005459080073979784727913295108 1.1018118705622875094090787777385109 LT 1 -552997957401777439659778.9133190084369485975365528235595220 0.0021393593240116523841676394690535 0.0822156463879567793808841526199721 1.0857928248764113703195472773478997 GT 1 -15430103155051228865231453287.3663112934861948304682925399380079 1.3611410097810256861931217285839257 0.0480926683875416903869207796305527 1.0492875896719054088141998598531426 GT 1 -14768746253783785115966320492190408.0217401121421741175344592561745127 0.9660227556057737671272640896928251 0.0219409663681350539320870890435987 1.0221852491822330163737632640936591 GT 1 -341621742667251985373704.2317371396356840988309796014342815 0.7117719884367467208200439472316757 0.0981899916621331877693835092118168 1.1033514148776881084626922324774212 GT 1 -1935.3745624479780716993782575296750056 0.2081474835826783048941799697660759 0.0493244577086311872457599019359045 1.0505824499485250711627000655088888 GT 1 -184081020051808373753240628775556.1147361770259759402761364102555764 0.3998984334286768482806811502020204 0.0445687597548356224039390435088605 1.0455924799580116849991229355685519 GT 1 -56060169134871995703296784521279.2015536510722240421830453624279631 1.9157676710421761539509013413365091 0.0433792420201594895942646979898277 1.0443482482224319705758298618201195 GT 1 -9277424604132477712039141775.6672145125398927038067520702717783 0.7391508640010478899599700477873548 0.0228292517987402260609535040000110 1.0230938743473902025501066687037018 GT 1 -5642459995731779214631377.2141213893373596088347879845149228 0.0852069871888960482098334506306104 0.0493270064988330538294224818125636 1.0505851309827004341796112520868063 GT 1 -743274942633156781009480331339158.9476763482204122908231312271737964 2.7257475722559118150839780253268978 0.0687881021262420596645500610722043 1.0738080193727161996430787625191345 LT 2 -1653792715989637384510553872321459740555036.2548805326487557171447165757685833 0.9802418285336408707863794293084298 0.0461035432591530675239503446415941 1.0472001493353606569963424564396507 GT 1 -69182734850786781163082538015138740612.1723286448536553785973469428810001 0.7459485258289363926587840957946083 0.0899184248914884330929341023417787 1.0942210405125464938944700357987969 GT 1 -10958870987.5126194196761373363547097211483024 1.2041000285841036240524118800570478 0.0118149037838104009982023691299348 1.0118852544326601406596598261716144 GT 1 -22211209400528.7237115298100845864638711442122453 2.1110477694632272410518315486964312 0.0940680830347656644884232396899815 1.0987911226003124712517738324729782 GT 1 -111.2636538381084835922797248125372788 2.1116638085674963743093941081490764 0.0141757755427016913296335597665614 1.0142772116132084579146422486152054 GT 1 -305150707148126801092088316449.7354345478816052330622474472480321 0.2596977277838755196543524416578211 0.0349052151423095744262977878541623 1.0355289598162234067842100479851402 GT 1 -91580.3857426678532008186442135459835187 1.2285338133581760937691396408967653 0.0826289386589382129753536914739128 1.0862432415273403301002066294237941 GT 1 -20876834405416169239.2132726404409621142610448928573152 1.3817389554071259957108521884903217 0.0510011608927800102325242588174167 1.0523477036530206298043258927356776 GT 1 -23464106160432906671449724635223322122527577.9575452374068293784880702882348518 0.8063799123357318872212812405746255 0.0743956653886605199787145634075915 1.0773084200849628467653972314713770 GT 1 -2208575586885914083640977047097869273.2773266505734801024904930644953335 0.4379044693515485110595302998841967 0.0195241379080448578421748788036968 1.0197172516069933396141798517631952 GT 1 -15679211867717.3313059637968310158289719707036349 0.9553291498815719518991533528991382 0.0662287578188372574689157343099153 1.0685237934700028655331449353175841 GT 1 -4182944123130470398586357536832746813093.0865368133701278004159255530434283 1.0280837537311559183035758180542915 0.0398752820549453916404893851992795 1.0406920884323178063191052560889428 GT 1 -82140491353348566336015315.8454031042648652914785265720636303 1.8153162347128716142270893962730998 0.0065257457289915890988961312490427 1.0065471314971472096742343362252781 GT 1 -42555117808473522194180577252248872091.6533612507687266627608264923917266 0.6744147236226835661758580544260259 0.0109318731999722893753404538459602 1.0109920652019990879537523577782305 GT 1 -3948158836354160811398108.5012883430845109557876604997076562 0.3018915846364343830300135501281480 0.0165825569239678013038511705985560 1.0167215866427609512985741683385710 GT 1 -31355.4620431200860886708343092759200624 4.4350509149314135485065610128139209 0.0207212975247559279529164737575853 1.0209389961940642471530359567766985 LT 1 -2453510001600917737055.4557257221221095813643867607197491 0.2087730697912212524235222444842532 0.0329090320440376023892035471284428 1.0334627156100771303265583724308461 GT 1 -167774474853388718039682053841657977.1880196585679452819786001361832585 0.3429747284459932706032449130749011 0.0356697235392996648828467719824757 1.0363214326127338917378256880052414 GT 1 -61705402168350873759436330983.5410937609911831975508644450905445 0.2761510248043481275913263175585180 0.0500024717063849732033948281770554 1.0512958961871299196515782121393144 GT 1 -55025653661.7302456613407002216594526911756310 0.7308058932003470171343125696703252 0.0000219579367911786360028527190779 1.0000219581778702017704598308496281 GT 1 -38444544599741688091512913998.4648524901510352250859727086938483 2.5627393826063380742171637967609382 0.0727171638116827211290197158151482 1.0783465229365499009406889044982257 GT 2 -32244167013166244329957783374.3269638248174452299424841807006689 1.0543219791433924303992991731133000 0.0446196230383211417233220955526953 1.0456457173185547223041336949052262 GT 1 -9969723822657800580960569419422126562139407.6435988532508645928638837010025892 3.5257915178694527637024893109230134 0.0389551496753226195730595042431790 1.0397342006277477794867201427827493 LT 1 -8012693507855887448069497008238.3015020269397515035094613058955483 0.0673949415164980876969621078437833 0.0378553645218408443443478835955459 1.0385904908877729436112121245415044 GT 1 -63747173578224926924715537564.4911114335944930546880098836296306 4.7094659021114818717032832790900623 0.0768428149846498741624825105834196 1.0799557610202102695904136800181244 LT 1 -990.2388103397452621554534329863997864 2.5854593074461577824085863618937113 0.0538664971583390691830806187726522 1.0553715963759752431926339560993373 GT 1 -123965323918360026950240976646964983.0414447088559864566836993181795332 0.1284540761671383258500552137892401 0.0268627258789473776815174932006342 1.0272301233753556612370634981433487 GT 1 -272121476971992022200837237828.2527607298583468446642786499660857 2.5807809344653768762450768021537627 0.0874287850052105208690654017473928 1.0956742852754643312009155540999107 LT 2 -3460374128317548467942166073146379317621967.4267776565835766037156981011377925 1.6319381559024429912359109641818488 0.0493882027257169731856539582404463 1.0506495045338927234577157133126926 GT 1 -136564071969661463242.8700908651714931976336417402748115 1.0366494269328921178769832006369393 0.0989320432532145623848398649835176 1.1041746005256971260829594147739245 GT 1 -527117913418998220616847206164092.5868478096499376846498609320863636 0.8532039628694166569049474260369190 0.0733661894524306632989298546932445 1.0761968178377816694782067899111055 GT 1 -1638287.7873152730258322741728038952505129 0.0889898756000895605764728968794394 0.0520502923732244379814718628632422 1.0534538291609787877969448929554784 GT 1 -122738393670376480.4546036005598330570535461641390294 0.0201234677000338030036134828465716 0.0450488350732695350513200241925877 1.0460950760112834517596131526018594 GT 1 -9421633754207901780.7348353471700686511907710056277251 1.8877823966808396693595197401013802 0.0989786858479894019939126919760095 1.1042263655470403716040522884881950 GT 1 -3094937790572583865334819.7300372347966137730626661620457905 1.5242312460722860118926667667533932 0.0724895740422849927265150956740668 1.0752512436389654532354477712719441 GT 1 -721637030385211373136.2021782012908213902181246874961528 1.4339968240634727290084879714079854 0.0970649778764096783584768334280767 1.1021046859354215554535195411720523 GT 1 -2772719136154645605553021591528539556939822.1005098516191314202550513028315038 0.2640136266986954715137398560886998 0.0704808868605110770752968829330106 1.0730879092138802917614935823022178 GT 1 -191009108017344306920285669886939056.7784670600882294141013680872044711 2.1877085295294766136789993906940579 0.0452148182057955070375963331304724 1.0462689043339510478961058235719142 GT 1 -409089695945.8088095968422671416776758423104284 0.4878199126959342995993979338684642 0.0803443994295801326789300549217172 1.0837560262305231610196458181641956 GT 1 -25430611068261261858724311051117.2317548710728124076583441755904733 0.8446013723689703295527563980908814 0.0646206464123720839391961904110638 1.0668031062157223433252631516308308 GT 1 -6602197934313586151917918533807360143.7489059460241976332502974489457597 0.1624683854926346014222231993061297 0.0737881954577787928900197256913302 1.0766523398836644590288313105186642 GT 1 -1045089478557601624372418149873308.2980500930581329940144270416927815 3.1616417072004064843702278993150730 0.0442251622861518827939871844598162 1.0462559275591524470338082355284904 LT 2 -441102911168.3583509271104873764903619957464825 1.6675601343772469421690539012830434 0.0441291434584918693898000518315024 1.0451324623555245213346423898640466 GT 1 -19701716858643.8218636160504910505675623242644474 0.0963574887187115105360753363463076 0.0279136212794559404664316907533489 1.0283106114736910769559803271464703 GT 1 -153182323958220461.9933612092254762575001313930755011 1.0248928912553004806624274650077640 0.0111220093009027389804639417603607 1.0111843213002152629990811900184089 GT 1 -18404550294986957706418762628282018252.3419399264236793363900254411776919 0.3107804338269410510389895821324259 0.0823671301830488127483240114191024 1.0859578922992319816682600306323870 GT 1 -28433067.7025982727532683341369525001109211 0.0610064737487619410428053757881981 0.0401047072762098509868944543728305 1.0409310705482140444182821483488392 GT 1 -65736.1815642751426760399815717664278105 1.2511186135268068613930762266019757 0.0520232031389249184120136023937980 1.0534252529115965042254656824502945 GT 1 -308469095062824408728.2633671559078037843388083286018265 2.0554195273232962106163284133003665 0.0102033976375847293589530233985482 1.0102558091208639883993568160364270 GT 1 -58.4486970738812111880245688178208706 1.9410561649078358821755295049935787 0.0964044224320817772542483236752638 1.1013733886367439464732744572370308 GT 1 -47773.3590810701761701365972739791768255 0.9173394322596312513835319110997027 0.0924837160900509697018532736698259 1.0970437693016943360041093066652881 GT 1 -2108996624879786.1634710328241546944673794685796447 0.1677260990422024466936502058420984 0.0098150469324980187865026964982185 1.0098635320221186109002323928817916 GT 1 -7287348416074440.4829656048154675956722933058405699 0.0240775198184464731349646653719619 0.0646499539599645245960720948523481 1.0668344389649704938315380594742900 GT 1 -7541.2168658917286549582123242541208576 0.6909625696192897548702153660438279 0.0074116319155433575872612184329391 1.0074392345308910886577905826306936 GT 1 -2430852798852912252229.2865309215420238313586675419479964 0.1792742476361462629477319713120841 0.0357822308338969260690177686426140 1.0364381082589331306322189365540430 GT 1 -251694.7640135334530337388996342228867048 0.3818800170832738588291028483596905 0.0746557450911605346417466170719116 1.0775894432378307102776135917375947 GT 1 -936899371781204380430494676202743252514.0329377856926355788711101015798623 0.0629616139133206950656205974756594 0.0796907339868333344760802609383456 1.0830455067177673471310951032775769 GT 1 -2039416513902008975415753495035931373273986.9214218022213363617556918161490173 0.0687438953224280395915192713821133 0.0864206255933077877625430924411869 1.0903850165100484533583581568773612 GT 1 -6340994448780714764917992884680082476539.7658146498962976532024220360436819 2.4058043412192839063793972351183415 0.0707211631177424243621310642838313 1.0733464378598440084093624697007083 GT 1 -82070.1562849117135990593916198814054733 0.0978554190850882184845720400993194 0.0455892595830787310083355545120895 1.0466611546815743965983238978249722 GT 1 -111778955222.4814135271976684699655323179642107 0.2021360673503047853451185543923833 0.0798656382739932488714859758145509 1.0832355742482804264678265631657633 GT 1 -1046384231514480004690368183084201.2770904214779980678311476743379105 0.0827431405718316522932516746710277 0.0415287380314213240396186361253789 1.0424156992426517713393105614409722 GT 1 -41846932867439450176472702911940090320.8526639941584572622299846282431707 1.7536179480260790918323820508943073 0.0290483177228948881435082477386087 1.0294785727146007059803531697889745 GT 1 -7368906154538587844016680.4894633021221501147996731657931953 3.1041865360119952819067559645001205 0.0249025052929993962227960144322802 1.0252178184121310938090063921654521 GT 1 -1960623516385.4016937205638564483459341564326512 1.0078950383372271490879118130432724 0.0574829478363281036737513889737907 1.0592012673422886981098229966962930 GT 1 -3105320702252296059.3172506990951446930682788477490409 0.0594419535582250599612476761246124 0.0874944682937936765425396442665455 1.0915611314000774508349745077494478 GT 1 -3945730826931252.2709737532148601906145797191686600 0.1723988961209241226329532361569310 0.0668329937868704901276267805158835 1.0691710949966074974663231766571780 GT 1 -659.0879963656740275259572927933227627 1.8887016205489297572051031928526294 0.0996009163636350932229104937671374 1.1049171876795703133064341805739021 GT 1 -122.4038033509490143660248704285622295 0.3658782994811290960023163606868700 0.0644305942991159138686293807317419 1.0665999449982209775429309533766566 GT 1 -39986551702778667673622.4336027386758995860056470925373567 1.4562291386697942647779134704327400 0.0801637580194095706243047622578201 1.0835596226297322755331966013953576 GT 1 -486668247312634243056554181038784.6371779245933364095089189471530695 0.0113443060200475631443483241419771 0.0045339457483964518831172963037712 1.0045442552540497593950834858461098 GT 1 -683709434171.7742358673328103988316829660917945 0.3251361015519585413509419553714721 0.0162341174620759018308285811184124 1.0163673344884254211186799175853034 GT 1 -1210470094201631445051347.6593190893321829515693741796075513 0.1836737521343878269801268119503607 0.0479098974232960347237459997025440 1.0490956031056158544653816684284275 GT 1 -26.0696440960955528431123069782931255 0.2846043411533235215544435811460130 0.0307297797252066149977085405163165 1.0312118408743475370085357259724152 GT 1 -555643319636984846677.5713620581090580043688851221666033 0.1864639275943152773254612760304881 0.0947994369895529350603008776965792 1.0995987432494096513939702279897719 GT 1 -5246357617665591.9381035049279722414992653740100304 0.0195456301208068586729776103788202 0.0589579365338420967656502341803957 1.0607674395816136061097125425735752 GT 1 -55928055225.4818051055661829062515796478178674 0.3645427214491931546729659092968437 0.0580682760033477291542271532289110 1.0598224868662665401207705994038144 GT 1 -3967913574380284659821565967607863.1055511268699261769338765595760791 0.3021397371925596239156410891752341 0.0598300924521128973852321286997081 1.0616946673413722342365700818056582 GT 1 -223129540596303242206266.7240085070234496724347005758709633 1.2657309890856911946814425776212386 0.0299839152843824675831093955556162 1.0304426254411423877570603231876796 GT 1 -2501718209881116558325262892669728276.9185530929079619717761701726517510 0.0458886277531013115300389157248846 0.0261784240378636453246221800931696 1.0265271790175615799772180736193646 GT 1 -12495492718.5742374140860284122474993542601606 0.3548611393080021959225093682902870 0.0179147995841042682493831294678942 1.0180772122569740754064533826465215 GT 1 -3850.5530270494782353455312581115118947 2.4752669626596946363607600611267967 0.0825541081229517063140076283515838 1.0898735912759145314602484770520443 GT 2 -11146166200448741839990829683160.5685190672550482289096654963265929 0.9182537853759717158848242874414913 0.0607206836230147928374344339681741 1.0626423824764479663587336282182674 GT 1 -98500.9920532075905931776052826719777516 2.5991023287835366549495210604105024 0.0562212495527136011645602823634346 1.0578635148328175498929901304358477 GT 1 -84812277221182354456613188885951946660.8332586261830200070537433815637654 1.0184256605197129230176021832775124 0.0777110213697448389756464104340872 1.0808966786868992483105411430152189 GT 1 -672097354555833427248.0873227022514495871833325694232292 1.3173614484092509680303922591516587 0.0659374134562212480701850372600919 1.0682118338507923423767476110427276 GT 1 -36142127.3282587691279160137577647088737790 0.9446521715788612997472049321753186 0.0202716044925997537338878441455379 1.0204798931713973523643637804796667 GT 1 -572.9749525789697419090061131833300566 1.3108191874400047264402746499874732 0.0792420991685377230267446544292623 1.0825581428287630909974351220792285 GT 1 -1487247195781.1112519559867288924527283881440329 1.6032319411286935633299581772722300 0.0683824012479503027097490448004906 1.0708328502615348954841210858700438 GT 1 -659877683472549374.3796300637358931281047920971834418 0.3360954624657410507217936905041659 0.0336096551826693827586707717462541 1.0341874427276022491700008656227788 GT 1 -94637689692500083244540140458.9780693625625389986142142205986562 0.7195490234902357684669545439618929 0.0980034478853791151010395842987152 1.1031445814161529561680085292286711 GT 1 -957065841040.7167829346726373849722553956111083 0.3689881333388414514006567039573662 0.0681094926642412096798181589383599 1.0705399525974264456859407488412589 GT 1 -90478192026280498.0999580497709491336211788281072192 0.2380243396151604337363861882670983 0.0260486190578264757734360395512081 1.0263938934826441625697275835948985 GT 1 -124.0811993804377433621777630779056566 1.8892846207774906222629320723639620 0.0948995142126127533453533588446272 1.0997093074268189563199975517724592 GT 1 -329395271398153912144589200668006113.1437258979926359336112028635048394 1.8915375423153891567555340864548058 0.0182970919622324018984621782779411 1.0184665540411631792536050171327613 GT 1 -97205.3736781779629027962757674403450461 2.0295850309776028154363716613836643 0.0265499167536312724789098875174255 1.0269087310403805341964502870295411 GT 1 -521359077350079241089957691.5392892228489728010766235847365733 0.7110577386067736730512623150759087 0.0810567057777128533436865838211308 1.0845308623144427767112712179494867 GT 1 -66247548782076695873742296.9942476789770600356696143748746319 1.7099092638635422036046754937866030 0.0740185936762737737747348025510268 1.0769011241015653674758953739568309 GT 1 -2410.4288492590066170202158423038326665 0.8747624238833595716019756030371184 0.0524278961339276542375917369851083 1.0538522458538479314733486076812101 GT 1 -10037622893228513188520876.8914701248598278274395107127535138 1.7940902839546046238051857513793371 0.0103695269874278692421955350399212 1.0104236651154595302439020166404895 GT 1 -2387016370379387415414954966578838983197.0415585922660704416019781346784396 0.5375126123985103835264917932615885 0.0089236220279027477855534011913657 1.0089636760053664387485521983146076 GT 1 -192233847943235509270633655255267.6846779224745973535944761083182745 0.9676077999026828082266659360407978 0.0813494601459900768885053733107347 1.0848494902564016439594744024376394 GT 1 -4977780160941.3300795814853391318342256641646078 0.5405299250154492842009476032274924 0.0769066152897134329397840789011692 1.0800248743964064766831672349641206 GT 1 -12967170394002827484495.2568314347119948789593286701185578 2.3528244850832639916258960365671237 0.0276261461703567204456065279060918 1.0280149251887453600441109603213527 GT 1 -23.0505990010024947954409341912813526 0.3911698987101702510746458580883998 0.0837297871469575281818826060918995 1.0874439656120056138301275544543803 GT 1 -15791426829621006009526805138280497039984.3327942118685811434713186562166893 1.1323860884207891534666782603214319 0.0203857285194725088551233321148829 1.0205963853286137884180534850518337 GT 1 -3743739239693995343914422348116.7319559708289172823466645844901633 1.2018601778478171341292724841270403 0.0356700346918511547499727727758836 1.0363217552745949611605471123005620 GT 1 -29154372489329553136889171813.5189202328022582293542301838716822 0.1720158013308654456198901560807039 0.0374699833984094303096444896145780 1.0381900272268988148646024029811997 GT 1 -110047098698657169863.9754482675003309311250635791050201 3.8165089348482585439931737502909698 0.0693615639432150051879334393696027 1.0718844379779340031904623022916413 LT 1 -1.6557884149376747395603169703507363 0.9530464348124410143523824427390405 0.0351710523452324570769470724487121 1.0358044496712117241963342171805231 GT 1 -1521665778.5808216285250491283431903251029167 0.5695410051847451231612634763947080 0.0984457142278747084644666266392412 1.1036350209890997339620190833333511 GT 1 -1743.9418985139227300016611948630448864 1.6068184329518967777028967521974188 0.0419223341953235277296539842318652 1.0428264335200102907188863256398360 GT 1 -15914448781909839087027133331862648286150.0872886962993083174145533372348887 2.7892374594309885244325117191123098 0.0841729738370185336771703945350415 1.0879277682063958218127515845231496 LT 1 -350527917349752337207429039457146024.9081281017161179053330317482348051 0.7421099710736092855748410434287804 0.0010067382163768326190121076159467 1.0010072453176690583033941838075989 GT 1 -880490.5642619252868725855912443850161100 2.8520176722731606182638809142495707 0.0371810753680141724314347695411365 1.0378899174375755868707938249293572 GT 1 -16309181011394803677061645879.0215585890996321983246397763138094 0.8129658924261938569440900910942615 0.0048169250880786850870070592503120 1.0048285638621742620426445535761828 GT 1 -2108774086133239252831635290.7129546860222822873525964414861196 2.7574207098444089681868674958695891 0.0145759554025343986984302592219786 1.0146832283200964792152797108005488 GT 1 -23423175440829395663850134144597.0804428861796122931795589447063080 1.8568019120074188638924265764420979 0.0877231742475840850089021407762817 1.0918117979566156945249630997966120 GT 1 -230740.0537129347846013211505531287257890 1.1130372067318377915522573831638803 0.0112633556443090851102790644389705 1.0113272675963657415914240716724972 GT 1 -5.8619049673755193524172507658868334 0.4751487130679063362043361791510943 0.0079208410387727442309851434359642 1.0079523775409557971320897006588823 GT 1 -2.2992843299989029976003972131484694 1.1470734563354175740300253213256077 0.0798070322524843677452578001682496 1.0831718833813459464577962452216304 GT 1 -595511113944.0108313672583103371755983534137120 1.2400165194105115520900093541110929 0.0699599272292832121233245038079239 1.0725276047623690183948019137713792 GT 1 -134710151005205442217994403393142507.2122875053679148292133457621047168 0.8226338679040623658661227806818434 0.0171280884440933388586477700474128 1.0172764709306077183301935733298040 GT 1 -482941814306155.9377120133043563825588535271455311 0.1592531593480498304395487634142864 0.0748919332646628622576538707803692 1.0778447193906094927783881410181191 GT 1 -12709511.9019887169850138709256469728531269 0.8200936374845986937991343825967742 0.0342312049193824824861140809496807 1.0348308159832707489000812729554243 GT 1 -4690714967141564442976602741013343989719744.4318422122744468589739118118728580 0.6153800568034469862970611726456878 0.0191346261307857104536794780543980 1.0193200624027506399276979766278034 GT 1 -707.3808142126087358469325288267937984 1.7949539387176178579091914777677413 0.0134811113449725495255684852724838 1.0135728065613343402047889896906798 GT 1 -417043454125302480382324345865761553253617.1469697366442087395416246977693136 5.0416781495130583974275225738275408 0.0581477868706272857910871706837191 1.0599069029882641385226052726397408 LT 1 -23443820793117981.7673689241783131002427449890115028 0.5626086405145510032014848285189323 0.0584823760056160237041540463278352 1.0602622120007730342843712551980065 GT 1 -35113635134857913.6570962660775288895262854140345681 0.6313751952298310506565791341618122 0.0909037338609908265359179236294591 1.0953042870687769694557499876749374 GT 1 -368431401908.1864526461998781388506449861003566 0.2097352447292980232102614264787780 0.0685490640840846386626267749142276 1.0710117624523401636041945938348572 GT 1 -63705674518296.4402243088080647298719754394073761 0.0382927359186134920237715213187718 0.0904711201492668338156301121688428 1.0948285279813828371866305397037050 GT 1 -203079296600963251624.7810855570244121464946665134940901 0.6704422759446154614934797413018188 0.0354604224729852093746321891993689 1.0361044132356066985338036456628178 GT 1 -58.3453746930272951674135605818649516 1.0027864079857081692326926800571120 0.0127394624639130721318351677901417 1.0128213052475378134021188187963801 GT 1 -6182999219201377552.2301331733052958107188869844106146 1.9819222640102155442711189336212760 0.0756042726334444869849747265717408 1.0786150226538701790981729093806590 GT 1 -86022952457658255.0793392004268724629183067221094708 0.0361395174804802348804707039556941 0.0006492157482937808329264968249008 1.0006494265800928517582983796881972 GT 1 -15329340810046822370937777.6156870570938429586660524236948701 0.2673691336586385541898807199841973 0.0620279179365379852971401504461331 1.0640350936774162276986965080826233 GT 1 -42587163993071795978312414678621039.1325548622562386498572727652116359 0.1997987183257126247833654280737578 0.0583585979290910753115366304777907 1.0601307540888389315008694229286707 GT 1 -65700.7600337651878327533124558032157750 1.8462160377017297733650708757492525 0.0133948166319521591972557903055639 1.0134853364277538084538206042118797 GT 1 -103356871076490235.6540659226644244798865097921198539 2.0991157752739553262494220082575863 0.0818748359445257733761058506919070 1.0854215533686751437139620136527246 GT 1 -2727927968991830990458495.1663795438364252772402060507350442 0.5860744998367639374282009316742927 0.0337660905214270858341339298113769 1.0343493317639750762180794668440597 GT 1 -2731716893534566250940563936511497407961.9290120782459727782249962846231235 0.1069455354820859170407676154186138 0.0296474193821589868030503888312344 1.0300957883564083780939422959844324 GT 1 -53332059435123948.7798807101751267777926623028396688 1.1337022469787332786737646718641327 0.0140815254843286164220267133238992 1.0141816108449196232652569267423010 GT 1 -119447561456845371777406709591.8642493988164012571442241074836168 0.9479769922451758855658969349263022 0.0674720397387353803344342540078773 1.0698561437192977653167088844530517 GT 1 -2617596270202103092285269926770073810.0906478350500422919921985978348691 0.0275841887869352249235294932435240 0.0896457737372451820035884584684181 1.0939214955837151033905185078114269 GT 1 -418682092786056829443974309253.7997580944357304796271568137388102 0.3540830603404185803792029977669055 0.0140727605535773474310454459454984 1.0141727207672738270775968301391561 GT 1 -9.9367693074304688732519374774387694 0.0165159740533554441572688574537400 0.0268637875083965621779840195072446 1.0272312143108860345030385577187094 GT 1 -953413366631227094778350.4006117447999631242661660271616332 0.4779578967270764482191489604387323 0.0656812461207042508645537307606202 1.0679376207321105284680589176639289 GT 1 -2429119183.1892790829246690637219357175089026 3.6199378763626185634288314275115260 0.0232395342750950135021244259903046 1.0235138302593081719052732807091587 GT 1 -1234274850.1955979763395908171241141723982275 0.2637833428028421893622915969155981 0.0172976976856719792630074636812699 1.0174490507709441923129668919421922 GT 1 -334.9307971343698755518466995278420069 0.6850207893977065235940068136566742 0.0913388232519764060030557381019018 1.0957829971420015153680247666824237 GT 1 -26032724195898848279358399753122308915096.7399657767864960557885565058980444 0.7832896076913894426289122104148677 0.0189309350655408461565803081810018 1.0191124193113730046149464439623255 GT 1 -2047291422536465199508788283.6361052998911025138504401534992600 0.9137827269462463111629605946398163 0.0056472071134408762503288732203491 1.0056632128745406556644924800008144 GT 1 -3608063985104903808385458350082278243287403.1113894708552693389328964809277326 0.1959060660939202934858673256256857 0.0978543934302690278125314986151305 1.1029793455950933585089805715510605 GT 1 -104473666.1789328503766681886686278413216932 0.7741801046292158986929093064903102 0.0065044920959806408599656409614193 1.0065257384861247433613378657152084 GT 1 -58613861437353897397394.1431703909516572010124203800396748 2.5024883127115492826679415324932603 0.0806013476791866329454424078690525 1.0875664408250961398162821958475167 GT 2 -5739107369211183335.2377973136358649593315441878651370 2.9346207360368504955585267879888950 0.0414786571730980122476879405183076 1.0423634498409488908072418973968476 GT 1 -47016421269296327.9812881717831129174686804360004767 2.0506350380256653589327833930992624 0.0517879370892024341549780978283806 1.0531771066895392477729477604751994 GT 1 -78514441876444930175664232370786028.1380554633986008845371390827336603 0.6963526060834131668707926624502735 0.0592546595264248746902463215604854 1.0610828025120070610346512888320742 GT 1 -9720698454500718.4382342505170171074064559685508077 0.1659456885367814596896524285721368 0.0312674526341852562366435446011024 1.0317667140992483558362581631100457 GT 1 -118634.0382522534249270185696279877588532 0.7454203346657455368399283373290847 0.0228717267012946106626210120389604 1.0231373425189379447104467821397952 GT 1 -3285998419371.2880202562477163737163129631333766 1.1921971127386953440271437404415877 0.0731570001114604004884880603326102 1.0759710914184591991251319675732962 GT 1 -6228592142409784301844040811.4833015539671744104685647949751776 1.0707540222474141884730129365245457 0.0685828658662982006586002735064192 1.0710480524964508786963170834303724 GT 1 -879012.8549522891051286235404522679966653 0.4735117869227082045417905537744332 0.0884823941982426004143558808918825 1.0926443698532933474234693851306825 GT 1 -947273122516886994405161857609.9959667773502476912313664739653721 0.3927335164626689213269369118883058 0.0093786855618649839375491338209394 1.0094229423644118275557021943451573 GT 1 -532.7078331307202577680504090604277365 0.2636265247396883092268332169099980 0.0264559942697739417157190337987186 1.0268122515652121690319648024668316 GT 1 -1493106744010346221836659019938300.0157293984648737523925736906055782 0.3805268676755671800044500884542267 0.0581965320479903228281566952809636 1.0599586589199489930572683303709074 GT 1 -10293591231059878978580055317343498526.7481813737229781211153193117292727 0.6710193432406116716998493926745482 0.0058344132139635533633092891565230 1.0058514998956609425931330475064114 GT 1 -391598.6866920362331970296781812510110592 0.0648866800052690314412690710323261 0.0284848568342246548126617274891624 1.0288984228792534650706036873113849 GT 1 -55762341658689998491.5698822541515544370652250975827241 0.5039352001887785285300871010761747 0.0519181213741592328515874504443874 1.0533144105982949008395350385875051 GT 1 -173738254206155.0542887739926704681543401725888032 0.1389797240639752865155701866748549 0.0228303700298482570678656956258865 1.0230950187039419281072990534430496 GT 1 -813639928386836630188295487602.0212266559702372866956651923111995 0.0697260346582443324488669348315132 0.0714051499745129936563503813616463 1.0740827493674484043780419143955616 GT 1 -1059440506813.3161498906382269626662767960516111 0.2519352832491517471427301145156243 0.0066474335718784584287144714571968 1.0066696261622798349865813064395921 GT 1 -8857160779543421.4457553752690865557460389232025517 0.4585021983266298533424146816594032 0.0008615252168277916273879685499064 1.0008618965429639452735775709210284 GT 1 -933078281558262201566555854362100457280684.9711357455900549966629777093318853 0.8034085208220221527951396058511908 0.0337146970438556776132569453773044 1.0342961437001743803818570189419256 GT 1 -4649212463638716599554889054307843543.1480259852688111538750236191199121 0.0410746761486430179635871295478941 0.0395923360364500134939520131611830 1.0403974346965017788069545167712856 GT 1 -10699689673513289881103181.8622811567997557924891312040774488 1.4657998634830242115258474853588872 0.0001025018948193337569225829828619 1.0001025071484975655829091813384765 GT 1 -91095168084062.4974188815980445277941112735864573 0.4376819012513602655984399311654426 0.0126608500607220936159212352048101 1.0127416816116878332144145723969441 GT 1 -3653426140146973637819965861674.5346775055831438583766215348954874 1.7748760072182869600472080621302573 0.0137060887193602259427722819442797 1.0138008843347249830973354526236624 GT 1 -639235865239275678.2303234726447986184504488164181755 0.9515548097927509104701941421882687 0.0021684715857765317023345133707024 1.0021708261247353838314616216275629 GT 1 -6226597937.0385085782066924819608777616697546 2.4766372701652762234398929475933375 0.0166939782569349720901761295221818 1.0168348932006776996701719577600038 GT 1 -16573589231979459035398236374927707284501726.7075033707417205043601613921315718 0.1167315693525098092518864032628316 0.0749978856917611721882662775678284 1.0779592557336875844537526908121869 GT 1 -82494458.0853745774298718702164063657555607 0.1713023750621144424696256639582437 0.0313938520176317283121879128441891 1.0318972017459663250444888059441899 GT 1 -14582.7813643772066942163773185282261548 0.5386208746896891224687931004494854 0.0865582977842842508584306549008395 1.0905357232457272223911955994928962 GT 1 -34268086755979799801799703054896900949100.1746573180795625400557669833791378 0.6830432205150587297717472069525776 0.0618645125424259523422889038814218 1.0638608974882638628083843249497444 GT 1 -1831493708675792481265315049817.6373276006254528513268047833921099 0.9221826282356185275587485031344544 0.0009502950264927461176790398638092 1.0009507468430734800639080973782593 GT 1 -563359652313112000615635650232240194.6100320785524533217302209779187085 0.4803622126761683984947701931725428 0.0636518328389293507290315294881774 1.0657678982068399981191550926234697 GT 1 -66217125905630956394645246960992915.2900665713845109685487358107129411 0.1998830359409274241908648051249962 0.0343066568585633798844295484157932 1.0349089453317328765473662888265213 GT 1 -82364326641887670358745624.1557607737987916859003039168387288 0.1504540961087537480466785637622950 0.0185336531144301915576952877737070 1.0187075532853694522173568113536619 GT 1 -320637235775065974050395.1892637702551039977673512014727156 0.3042697333248870587811369771704382 0.0778612938209570986817028725619826 1.0810596261993253572234745059030465 GT 1 -55033659213442990.6219350116993983478103575038816499 1.9751546107431677406956769638599301 0.0573563920270675657065835728428316 1.0590670020649287434845984831228121 GT 1 -5603886459191365486.8371449913451944085674755388353688 1.9033740157238697565996979099437497 0.0030365396639461970112291009707377 1.0030411593046967407377060285272285 GT 1 -17738687.4587847909271781978557643590952480 2.3945839183756864254843175203953860 0.0279501147904184551373700583212830 1.0283481536065588917054369512979675 GT 1 -373.3705403320453407982819961412976953 0.2606096389618295851605906436396470 0.0927508020231328149982468552901033 1.0973381169049257212520439965646173 GT 1 -5965875231006466161952274304014.6009559892048957497694451087540301 1.3497482759043751123630114137553123 0.0071829318682215325067174348870545 1.0072088533259627793960476600604041 GT 1 -374714640748206171899.9737882831647322460448422689402512 1.2338972122923423186246159903404650 0.0980054496666601972951488215292038 1.1031468006968116763355353599943137 GT 1 -133851117045.8602135802960402983206959834690012 1.3037893070430413735497524569912650 0.0072795663916654201302760968933011 1.0073061917277159538633387556775869 GT 1 -6766585.1344635081101672867422190794061482 0.3759473351584645154122566646270887 0.0543787721152018451340229122266264 1.0559131834655316327785045679052435 GT 1 -206262170088585735930641341926356260427.4163190623682258051697061724923431 0.4947468425879668202221389187396718 0.0173500241813502219437744134616129 1.0175022997444466071567185944602416 GT 1 -4335358921157057.1419350972780242494883200788048512 0.4656760098312129481506857916441250 0.0552738589637297079146820979797991 1.0568601913331209073768308458564712 GT 1 -1468462839.4349842875081819653863085815957613 0.6896918387973442059919719377101960 0.0914966020427977251586156564678178 1.0959566509688635176757746901877429 GT 1 -183372291022047261387345903380716407735.8790327481178928826358186742571299 0.6912739493617702983492998295129430 0.0156057883905458517191449509559839 1.0157288406029487025056279747773153 GT 1 -812.7318008256579974627775210109606265 0.0939658954554267822072066521239255 0.0422308738419133622455863363345063 1.0431485257150142047591899305241875 GT 1 -20145196385340686.3479433174437539460615793271457513 1.2372181321902239247620211296593916 0.0365474537540248148966368602395859 1.0372320437718735610552166751187368 GT 1 -1263753814.2599232360821541005394306992891980 0.1222389677802990972798951860237745 0.0244503275380651492847287822230684 1.0247542002133669987436493912572952 GT 1 -1329760785722321867185215616953.7659303772690899472611489567145371 1.7798376367126457963858245493302281 0.0663757314324115168011361246127763 1.0686812037379742228067486246128101 GT 1 -272725966100327.4100444788400008552066665865982273 0.6615487234815963547142377705258548 0.0358687483897691301450849204695678 1.0365278405169404755665907991524634 GT 1 -7669429453123705384222.1713405957164261709763996341850124 0.6012835167611023668271685607113369 0.0047779669742536548276935922580717 1.0047894179479333453667898468380887 GT 1 -352199.3523714393926444971923290449165169 0.1772790746639609645589757760995877 0.0774201204937030453586323985116288 1.0805813165654457545639040176468531 GT 1 -133580177905516178167.5599981955747070941807874455409114 0.7903959767432398026864843630076459 0.0429886124766596791532726835310658 1.0439399884115341841546767403873684 GT 1 -1224496932167998997397936070071.8897662145007679451877151296970534 0.4965922535684044391017493100357311 0.0876838758286095401716878190955569 1.0917687215882867884329936884975830 GT 1 -38829798811150610170698506306171384864.4929884840225340601590590791231674 0.3239565393901539433732704213548170 0.0487772671798417486895919787343691 1.0500070347950985626204073432900719 GT 1 -617319552785290777890935.4210556415089361904318363414120007 0.2206381852468750851654804950831928 0.0143012947771021249124068612852872 1.0144045438726312651091028299425328 GT 1 -46295715980294689659042283682893539462236.5757691366646718668134336556996579 1.3636805571648879714030537307735257 0.0842940401088539481808485289767855 1.0880599703266236074289379465053113 GT 1 -112902113783.3833875727908123559321834158756224 0.4226073369271548591630127785317063 0.0961095019715419578537590246382793 1.1010470564263453120444947612651531 GT 1 -23.2042164528735186916385119333488875 1.7849378890935643053048810128956783 0.0740674711120764423310256731090143 1.0769539099625977611043575482821356 GT 1 -31006555821629558168153144388831293.0967181327788291872659044304232925 1.0729541456956838282809673970738304 0.0398470829519132114684899579649531 1.0406627186135787489294352002741367 GT 1 -179.4408834672626638456559891279982399 0.4387158202256611023723606356462093 0.0060025278312959299175929912950166 1.0060206154186316141934677296416265 GT 1 -1512183058809499972210091285701239750.7607547143678288932583895534937119 0.1695936387571081775047501774695053 0.0530574660320233094458718785367394 1.0545168698252838640044479168954829 GT 1 -2113820445523882769013660303883464376703.5997762444165479467870019670675329 3.8832728157087959190720875603120639 0.0854112937561039887846135828223696 1.0892808161354334021907342789405732 LT 1 -68231299147717232946289174510040106.3436322027154096927242823859474677 2.6526663260937486256226745253329350 0.0526105398840113382905461650098382 1.0540450136166572787988424045363094 GT 1 -106971716895166893815395982417125876.9113457422145261502591997635164459 0.1271391129179705333070771962779593 0.0513550669744696482849498210401178 1.0527206989337892620667078606069363 GT 1 -159220403763500189404881.6200770287624964123410788782469267 1.0214653577255335928542569462557636 0.0796308862929292109423149237523317 1.0829804788513192073304513543501784 GT 1 -152873960721116036358535393926333025361186.6256758234943394841516172440431320 0.4658322562184695321706169949847161 0.0297732201581747396115612910172213 1.0302254411588190753172824243365625 GT 1 -125933.3325221242740639554134006509552210 3.2135797630010564153909897533014069 0.0966540037754219291762107234074595 1.1016496359139633211956510322235594 LT 1 -514627195375268675377606824703938.0412039844686204697295207466030474 0.1569686364341840247650473943262223 0.0166223656696813394201950940367729 1.0167620674698448494896843490177901 GT 1 -602835387977225732643030076.7633183760379337842454737677251458 0.4320095433065555899180178678077542 0.0243307302636170643413371296275727 1.0246316129710935980239756540352236 GT 1 -4130492978367038956306350600785873703358840.9332097815693173870075535764042412 0.5567104051383441716897079001197977 0.0584892792816529189912577587011495 1.0602695441007451983846470738256265 GT 1 -4779580980100547758729145538651994665435.4105600800437502620134539550895113 3.1659263640138404272089516462829801 0.0043309964598832449044185470884406 1.0043404023929172732388256079349905 GT 1 -61999452397265354062859.0746663320621675896511815515705430 2.8834780685267798546115404594091734 0.0346085062105503864732134955859339 1.0352215668682626848563287811376780 GT 1 -3949520485998063492500973617097841406917.4547572611596776107270456168709506 0.7378852891691093674197698512023088 0.0359789458490872185408628253602403 1.0366421442045784375216244950170507 GT 1 -5515535088046752388738177083.9881929405784881140846238019153143 0.5573787428555051443716461299630622 0.0507361019417564152725120625027600 1.0520684388836536410347357474293314 GT 1 -50246391498184367.7199222040643607797865647780141827 0.4584583789535870962996484350149339 0.0855560192620348704649484735621747 1.0894390697382946412989072110995923 GT 1 -3069301387618705.7082233988993586669210943221724616 0.8566298357098109258240575979114358 0.0394325832783647548323807896715012 1.0402311100418409187954365669817870 GT 1 -204383946700047547.8021824969578684805062167176898912 0.4512782261824954852118502460567459 0.0261129103840371827579816641577537 1.0264599064782860771700715823036135 GT 1 -7952.2030500372604877717615260639426594 1.4503770213199324762497842232321226 0.0788846838262470723377034959676576 1.0821700429927081525116856962715663 GT 1 -31431141035864183857172611599838761612.1078527711160844313819741704230765 0.0358500787751835294457425295346827 0.0758383813953802651344049792466264 1.0788683107259958351058581376482182 GT 1 -398021812704563578154671305.1526275865835203816801479553087278 0.6853358735120096796930091902925121 0.0108308076080239004133318653132920 1.0108898877826815741128259414015583 GT 1 -33188656959017.2827907010775033192718543114988911 0.3835708609815421340685960306734533 0.0674175412058434272298819412440770 1.0697977037123677046940064687250886 GT 1 -147.1064619246892510566678369382292003 0.0906869066932466753619458076797093 0.0068445069081645990581623909261333 1.0068680379794262334073793655405492 GT 1 -16212702968932392239.8905623906348388030503031197693108 0.6153742274216667474945306836893931 0.0038390904821093260661373166712362 1.0038464787054080509875207157735223 GT 1 -1500709197451929511344426179939488929.1602303085819028146212536102647565 0.8555940790105347056361189965610640 0.0660573223412774557639546991367747 1.0683402155930912254609122634840617 GT 1 -6314561.6592732065867854344366554488788441 0.1528948792384546364421508960583724 0.0461970399024577298509651923666308 1.0472981696445920482381448646108638 GT 1 -46837575570765285871927468086664715.1885806539634908395458107617238844 0.4339407503539181742894256999446156 0.0769226631626183922789904263602089 1.0800422594331401438674579557223657 GT 1 -199689059054361523.5360646292514948857418180153810708 0.0674796737495602682538709778413835 0.0590548238152856673856501036646810 1.0608704023217298873080223065977707 GT 1 -17.0191222799353943411672677338200544 1.0073914642695846486463964815647241 0.0946480782013342414346370973991453 1.0994315470042400460473530842733297 GT 1 -1075238793154827188.6396185985528509911354315823306692 0.7614882697103756380806520734441807 0.0017870049013977471392403900321045 1.0017886034994087560792585028484014 GT 1 -5006261502396670056619319099080554503163232.5331269430454835582921720434635690 0.7675075382826100348705451539544398 0.0803397144007169568137985848661316 1.0837509319137737500518310523994531 GT 1 -1008926635796348283147703073377875.6325898454700872068952481107315124 0.8901829787113269556900604146073832 0.0457881129131865566491402493269120 1.0468695283306780061763530133142740 GT 1 -3289714136692.8015706514325133955149281825206818 0.1249072710703787788700022131734180 0.0174789349446527999394455701312629 1.0176334952086644692972506930022578 GT 1 -33.3402711115362260864984440592887946 0.3824594133161285305532933916407306 0.0108504483180254683390993203866761 1.0109097437437708039680345401176776 GT 1 -2357635154625013493561065705732251681.9101164170157661478207239531423507 0.6584281293095494334196359223381956 0.0428636704512793651691527049096718 1.0438094425561193576210519384085168 GT 1 -6803518857592158186557939543064.8611242912633174259386224389783872 0.6152108164509560655830456235250189 0.0558745364617416604711017815763852 1.0574962153773670147917371882349624 GT 1 -5978.0196325538845050751063700787974017 0.0243100177743604847788939653021739 0.0574689223290311814706428678153738 1.0591863865473899372415770657812423 GT 1 -1631653161630052714691.6913550485352461870348406774393635 0.6487909871903847854499933712123770 0.0683516440739752765984435495844827 1.0707998360008486009124321891613473 GT 1 -2080779033718102762926791762388634972790044.4253527277732663225537268808612588 0.2909769065307266658211342852920076 0.0605872481736658237679069505650796 1.0625003310441438335355842638483204 GT 1 -828938172.0800312200336547730349995006380988 0.0368416381870825277606796516264881 0.0110145659386741386439160410282860 1.0110756754139632305339872989224503 GT 1 -99883689130945450714308.8472739118465236877100695905772068 0.2448302443064145393211606825622830 0.0534650615417757542523118110192633 1.0549473956931474110259329972693260 GT 1 -4987364576164862142275092060128483136986.0765632013523735456130636283538150 0.0038347762601463450441459911442560 0.0886472980063883876050949272276468 1.0928252974902079754979864431546184 GT 1 -50.0830277927204038441604672450227287 0.2084344983026797422965444925011908 0.0300320181538344872521416622921895 1.0304922164355129035074294470901839 GT 1 -119042711227918765363636887342568932933289.2515503575330823858444990355110760 3.1643105285127988739083253825332176 0.0733793917731659032074400541769203 1.0762110655531538461925316468148560 LT 1 -12704030374692498359012447927815.4393293557613653098884326294592559 0.0908382478122093841826503111104431 0.0265145405534025903547565447544817 1.0268723906485628948475059986335185 GT 1 -5041768656038368691089806603434.5678198112645324258094308885106240 0.2268267328156669846175927057956990 0.0954318566653534643721505753968388 1.1002976388589155880524972191378944 GT 1 -54036372.8235882257375525456348219194088566 2.4355254691776090398548288297415315 0.0555563591671926149558951866444145 1.0571592647232204406270129691064454 GT 1 -747313371697727447154665.6006139438357376532498803133966659 4.3081885279393034987126987018843185 0.0485434561060048616022103667089154 1.0497612644460173683359758650494450 LT 1 -86091703147502607768642011.7467580208641141755056410974002332 1.1874240166919654778700487990043691 0.0728314129030188562085079421283636 1.0756198668478318654864761007436983 GT 1 -3451382145487.5672891035195674883619276292103282 0.7705817736896049059297166289499704 0.0917086815817519982465411843059734 1.0961901165750831140142405045476961 GT 1 -1408625903750718779.6279857857730860126100118785874189 0.7718609643721722138034408099883360 0.0044431625067019042818158800325970 1.0044530626895304233124454460409761 GT 1 -63204615730345138381065044193918090.1620762253690589780122720290971931 0.5202503632807239497210000929007826 0.0755003173448831461656061999242635 1.0785025714161123141515377501244866 GT 1 -72555494950844275171891375.3257859883982857979539807213531788 0.3088567003518381281083978223560925 0.0593257020490460763245527253585609 1.0611583226364960944185010191538723 GT 1 -259081986693282456431485.9891201532194994743355403483178275 1.4453734777786745595279236007180640 0.0620746511633131299017750098447776 1.0640849186049575887480477690869359 GT 1 -1251883541.8830442916321847170572808102853469 1.5679618982111641794655178554155965 0.0268819552941195046708933080664769 1.0272498837993727350657955391454175 GT 1 -24260.2635156287085203203081018484893987 0.0832200944639332355271827430860940 0.0319452177391852644420118127655202 1.0324666000622539671547034280180664 GT 1 -480731793403225243360080207571442827800.7387122269951150020038053935665585 0.0245948691937477039774595010603809 0.0669366471329904663830374993588805 1.0692821781174261431264162254617521 GT 1 -35974330614427873623220057708292637.9587256713494040271415306648337430 0.7680668648294080825213411006805808 0.0538739635807299757499396232109363 1.0553794879175275838534799011282565 GT 1 -402272408631.7014020163923335437028505380146602 0.9749175877073995151260161266827272 0.0194776135807846477573786470951311 1.0196698019702542336029019511250911 GT 1 -23.3862090353837379766272028790015531 0.4716878514738786977860748249631524 0.0446506475426681602549112524532034 1.0456781913036213371238334479675421 GT 1 -55081693116371525063892496338164630.8163763819749745695925141493849525 0.1249425753580835126771275961204745 0.0721628234670617792769062150906345 1.0748990179124625441321593015483879 GT 1 -2161363425165374473829489458856206458.6206027137852489315921868332001742 0.3781817184630528019031841109110115 0.0911965520096174688408698591168323 1.0956264370189454570193515243351210 GT 1 -89363376750473149869979147478.1146682218009192723490024533781049 1.1105535451554642965830920948534364 0.0132652039147811568387077270421997 1.0133539726296177155933115173577144 GT 1 -700998489599877032.9895064669231372606754999230475641 0.8221376507775345438110299369031290 0.0998020301139108159961630038905052 1.1051405733068194605333267254004076 GT 1 -395012840453324318676298717341119.4127348724491162662958550058582742 0.4955300945391600640634333181373286 0.0714295575111211855629617468894833 1.0741090340893393163497176269460589 GT 1 -126390389509435312619.8079972693287726344310946173885189 0.7817121109680711645924332579638447 0.0489894770997045664746416315575992 1.0502301514082741437272742205477585 GT 1 -19.7222937321304769883734941307784287 0.0629460546180892357820168781355990 0.0666609511876281110366064530495064 1.0689867477781600848235584507659933 GT 1 -67115356303495223119761108347.2121765256614365648240476051495063 0.5814670008489114435051167555447607 0.0572444785977760994445732783008361 1.0589482861626253484053302337321042 GT 1 -1530375870292333737012893042966743712637767.9373403228467122099477138254666487 1.3491905769841878963907531322942783 0.0373759663915505091906754477166922 1.0380923550360178762907850170121966 GT 1 -16771723099805234034137151435904899054158.6891739699137980432906204651657625 0.8447280656198085863414786454341580 0.0564236642155455365635322891680576 1.0580780104145812726537714747809775 GT 1 -476.6779973693202445900307685265296863 1.1039183018185083477756904542687406 0.0665337688792235072607083783620569 1.0688504911369683166722358015839258 GT 1 -219709179259702881782597413735165759.0740481784376620923891810930062893 2.5996755132329154497906382473209336 0.0616426803051159490373267252463766 1.0636244646732828059051379931927118 GT 1 -6.5353304942679109229822332352171826 1.6411505900404641070382205441872910 0.0906948840731754738333398208279337 1.0950745800406219205289806943041853 GT 1 -5549721582104980620206432272855.2893597006929483628142530848765222 0.5489763992983953061530326643615970 0.0026636148103966414753379790640533 1.0026671685442471939048567142988092 GT 1 -48000183599858223415826650250060.1267882935938759461387985247811462 1.7931301342229558123183624664631543 0.0546426412409030794530872201668303 1.0561922655548557738120725782063705 GT 1 -9009024338755021245287781408008055.5925707366780722162411232540147305 0.1398393517200028977488633951590910 0.0871969404813185796433959290473726 1.0912351286446633775015011312736993 GT 1 -3638159303566564851.2631013063291328501526737112856028 0.0132312929443886472977082049658626 0.0570782508332723383199795115083247 1.0587719805269486906617260238858690 GT 1 -353446866240629232.5909896327796231906986732482751766 1.7385064923480472876683992491300736 0.0661561227318817353265179133338066 1.0684460096844297836910232229789130 GT 1 -8868316213523543327180663420369616959.5081411923438299397813824584018612 0.2622232654287543431367750324248768 0.0750574322434371038459656709538018 1.0780236323091320289214083210713340 GT 1 -83.2377188198753342596211021181704502 0.5656009979464607690117213215349585 0.0198744764488034618303243819517726 1.0200746302634125127838785866380629 GT 1 -873399788129148957593517767616911064226970.3686172064667106732962324590627481 0.5355634436631673039347805470074771 0.0350181023452621975083672522088822 1.0356459367261090806428572452917409 GT 1 -1361167035838810.7301975899869826539512458269828029 0.2394505458765548717241503547570908 0.0707532320699671033316381822291963 1.0733809479598338340633015831140850 GT 1 -1.5243252505377097976398488043487642 0.4190456685128266749708130740976448 0.0021869354679811350687015195748507 1.0021893303035559936797422539785876 GT 1 -1103860291516839695639630656.4658312061297372181033701850084348 1.6511396803750404224400069300862916 0.0156406088363186526136030327820383 1.0157642136894816078785140266904327 GT 1 -9957544935601233851344174.5568937236133447285037611854327046 0.1527102841941289899774004485015296 0.0270802163459343143337865588668828 1.0274536424823864572271275085400715 GT 1 -6923296940885.8412724342138034907850325035505877 0.0218525640344207940898871671287961 0.0737916993108628645205588227026174 1.0766561228841557414259645688101861 GT 1 -86111.4759939192346417601557563846121598 0.3292984967514763600025415935683682 0.0509504677887144158667604523989584 1.0522942876233306876720080612403711 GT 1 -157407029511700430410815836926793265.0029267682988891475053344664627175 0.4794216995798058103077863972531404 0.0560175240674030203262018234946970 1.0576476766396662274940533593639206 GT 1 -10.5428142629463850793029456746365437 0.0291748680162859073970388730478445 0.0851861920082173207767642487791839 1.0890347229467873119427191034814326 GT 1 -299537070707279.3369823650867650441999498740506992 0.4222133307237147856936046327459691 0.0354441999363592559862865434162650 1.0360875944335767056562881584253986 GT 1 -8827032653.2706605347906202024071931301421992 0.2127208224110855165165875735958984 0.0825580815647594317389123967856421 1.0861660052149804245662906140522507 GT 1 -1897223462.0407308642835846582495376883058031 0.3016307829845829699249671018826967 0.0225756160900963553734581450511034 1.0228343467287026993223946648796626 GT 1 -911075264640625961925599016222308071171.7336982343683004475392518285563253 2.4109561589654367176357134969092391 0.0030969805151907378954212794080413 1.0031017860837461424775213532299261 GT 1 -35741996445411884423628679685870.9655717162923046611809494367734916 0.4373742096451886002435491173429499 0.0336825039558311292324184330061627 1.0342628279168751129288363159943514 GT 1 -2858235278026564211550737476000230458656563.9971931495407552923697209578708464 2.0477513740255152380933628277627908 0.0932408549584989913057968541950824 1.0978784153541293444515922834445883 GT 1 -170377992913946848593026248014780836.1732790932586364983260063455464551 2.4626163009791506706019005996512969 0.0802626934048958636328940160951579 1.0871672850303920458546659639140382 GT 2 -13946.3085430484552466686073364984786229 1.6117071999773986221046775521880342 0.0671643748637967245069699264013178 1.0695262725026223533081566468248277 GT 1 -1141779238445966049.7731469001209833693848718403999367 0.7499220855586137766517414697215374 0.0309919273367272012866063957834711 1.0314823362042226036332409606127344 GT 1 -830854584479991021695858681389003627796.1944597691779020737186330221144213 2.7989789857037964315817500095613633 0.0853025508992442415590716256398281 1.0891619251060882968661445698743434 LT 1 -241892054739269025691353544356177638185.0648836590142556266615247377788139 1.3527527915587500597407444565328970 0.0392760535822042544752543667375851 1.0400681678671037655091947551179651 GT 1 -2179163883776973422160485312968.9513637837545792407401391826239878 1.2035425313322923766437935437479629 0.0986263291566840831486077059821305 1.1038353783342181028299475243303741 GT 1 -3021866.3649541515434234305553892447420454 0.8649690271410341165224276125561118 0.0044549261739569229090839314343291 1.0044648789277533685921835674537912 GT 1 -2862152143931340279308.3660834705286767459923133685060869 1.0475552794414560056629932967974540 0.0099050530898917224994811195032272 1.0099544344823785974040334083533888 GT 1 -206.0656254302051308859494785602717028 2.2439646411776702485559596935039584 0.0350800104566065406591818325901638 1.0357100934708392052142706148995186 GT 1 -9389576247028003188501305880839932394361.0999798674183561535717910679159452 0.2745406911501897488185993984265421 0.0659074768333912066155460285896622 1.0681797844533124458688192889893711 GT 1 -2188816617427756619315323.2209783888746738269632187751716385 1.4469481873504603141164285808229834 0.0527610754879340302357830537870895 1.0542039214061328572488781922348923 GT 1 -5196447.8464998328980527018923163396785911 0.8747946681660043947467422677687955 0.0761837584356421549947421379068713 1.0792420998841101005373148609901404 GT 1 -4373757099661890402.7374452585202086029820086367612317 0.9764362885814017295444862589142014 0.0920785923903879358104439573448015 1.0965974596230088274907452403077692 GT 1 -51444312402755572576.5768918011882699526111946092360508 0.0053088355689381709846397143282540 0.0922960178683109933358916547566429 1.0968369644021233970787346834022660 GT 1 -26185358246.0994163991234688682805298200456892 2.1374209021095365884746547916828733 0.0939339897655141920627723159049086 1.0986431166147830217473735941116416 GT 1 -20609353585114636575136111148159044.9299000601051701384553930670550596 3.9138376813702049073488883041780287 0.0282377312085766754232772957199834 1.0286440838688172123113715735498108 LT 1 -2274008694283518393093247.9427045834833853139950095679970258 1.1386303281157906422328980423537850 0.0088210580682722632701933857544241 1.0088601939173708453374562167015355 GT 1 -3909703260353956891694268776.0184549546103574376894085803412671 0.1079322384356174153496740860007624 0.0756283350933351140086749591789458 1.0786410534676897574158828215907063 GT 1 -47603845389933769333059634014532249705.9771035501279215339260893232400536 2.0371500457198783956880965237496520 0.0317074904201130726905580976983538 1.0322210580344696783217120911357160 GT 1 -129971.3825079279096335163783863352003198 3.3126858457850795705742901740287567 0.0285209413105754978397700072891111 1.0289355660434693310642623759642755 GT 1 -23002217353289101062995033.0475044852643837475439534443216079 0.3124220932706593916389751629399350 0.0968253438764493383339291678219997 1.1018393266338767320531678122795494 GT 1 -200159150116693.8961460417894133090428510416795167 0.8946771670664516334895029593805047 0.0101944208058811066795138110795271 1.0102467397918974726623512990079927 GT 1 -274622755871936828744971121786709605037.5678723749292310085211417188337713 1.2354090884123410320513066560826897 0.0710676673715597827629455670233142 1.0737193817571996467404840697498374 GT 1 -18927759611313639112505140152122402841830.9214133953818326304153812678888800 0.4882696172569832586321361813311704 0.0256306510983762767238466833858173 1.0259648389030158792067088087459537 GT 1 -64331406682412165196399042.2331316021846809587413946847283057 1.7387108154963355124464223375647797 0.0063855790622691052659435798515128 1.0064060540820285956787276779201979 GT 1 -23849210546317937.9260853434651807831735062402819659 0.0201904046937770798521985327893829 0.0668784512047679712378960691020097 1.0692198092404841813111053119629515 GT 1 -25914555173328504328057167183159.0176816650821370697798745595619680 0.4793985527060670648908478524966583 0.0890914854319823600822017968083487 1.0933128098516130388735435943499753 GT 1 -978372965981149370242552484791747837213.3927676922536129116489603303791725 0.1299672042047991381811899524301228 0.0274769142435224295614218483871549 1.0278614652042189665044951958167793 GT 1 -22555842936058082.3782890227079594298671986318958411 0.3102313381451169557592554158754749 0.0380672248730452910380297654676438 1.0388107110835851613188211716581988 GT 1 -171146390368889183140933575004929151.2467817594620695194393510688436203 0.3072607450026089380917552338825470 0.0022484701900731284962414257646025 1.0022510017947078882764497554936144 GT 1 -5.8130906013319826987363068816483895 0.2438446868335745039886558049358416 0.0516878190197678584766025193597479 1.0530715261045822417987427691195137 GT 1 -2385773877023672233416640.2912668184373781489344514760513477 0.4578305350761300820129475583262560 0.0206976166183755626086529276431065 1.0209148144978837604137198198588411 GT 1 -347893497434260355927369.9315353390031351862040466772425806 0.3417759825804475874766770871938853 0.0383064980370351396711454730594232 1.0390594841098986043076916231620965 GT 1 -1.9794987067955625818060883420715689 2.5359871130601741763912617257976429 0.0963436554041301017994997310319328 1.1064376077150872755268564458322865 LT 2 -35405717021562573800765233498960642759.8816888884221286815535400670375213 0.3333660270351150324519904380488865 0.0237293292746477100421259038873757 1.0240154044540865946759601356840289 GT 1 -47361330028.4463013447421404751026636030664620 4.9102460128247106206370511978263363 0.0262011103015953608646549974102388 1.0265504754083448298923989000060715 LT 1 -21188301995249374173358070.5147699736308184524789754888558905 0.7749815298058362013187185012535907 0.0999940608633531286096518560043399 1.1053539166388811286523135808653485 GT 1 -3764224251113745372824240955139133.8754808850475449788146825162316832 1.7075696173494266417467384305458450 0.0344320788136463403736529865879190 1.0350388313886594542596872991158670 GT 1 -43077888322873176686673050711.2638567104051994449510725099361828 6.5590223170110044034551820903025790 0.0942646216723696999081720754807312 1.0990080925029935085933857142951044 LT 1 -140641220866325107598885388375548609805859.5406553982289657353484556144328982 0.3080265032506799615738465391938082 0.0583730560691877516021981832404156 1.0601461083957571736501742415575132 GT 1 -34693919388473537713684.7453559073229830137161525264207082 4.6183186339456315825052358978044569 0.0513316573030495300116986066316900 1.0526960222799958688938348307117796 LT 1 -4752557673463558978839.7335122330689335434071231824990264 0.0642037320391891621717652190351232 0.0770954315730916126305210470915001 1.0802294426449419232354187117351692 GT 1 -2438.4349314228053077040761484683747059 0.1272508376539259531828001120902516 0.0525036921975995022372029838502133 1.0539322388116172316448162402170681 GT 1 -41866242263023198245659.3020363440805216080116153493626318 0.1592637729721117376017890176521608 0.0040852407065412636130993410283647 1.0040936080986720855389288172076960 GT 1 -34326808355065339.2777715979625052500322487123987011 0.6335852281077588409465558713911429 0.0246700171625635970136109396049762 1.0249794213076875229079085525682709 GT 1 -3307273636186735.3066290933319561804862224040845910 0.4394176649994204854648460986760111 0.0213939907071373168705228911529129 1.0216261594420411951982263252352659 GT 1 -1902232645489.4597841783022270811137197153328864 0.6227078800564158082611620303230940 0.0920234885557726455873099464788296 1.0965367691689320746664780828850991 GT 1 -7225412.9532002929615611082064272967234995 2.1864490225487610380983891275406894 0.0665794496758101713372252514703258 1.0688994290769117599137001882364882 GT 1 -5018542.4341379739458768738183990211679542 0.6384001142535056217480713462788048 0.0738994660878173336939960416078122 1.0767724822893078058498597977786143 GT 1 -199046720603209723676473970829913605.3000767234501619260994356644878127 0.4412893051254979765690187865234680 0.0566927840809662942079632367080404 1.0583632637011475148381917650068572 GT 1 -57483311.2763303121112552311593827382644270 0.0192993025837313880887320997779407 0.0707678153583706306298012814152050 1.0733966417489764520643588949244988 GT 1 -47459236648056275079290.4880116910379765359871479352927638 0.0943403048031633580737217312087581 0.0383900579987266294025013412098383 1.0391463762350141648691972321426703 GT 1 -33462057017446448967571010339496488.8499563413103794321905162440140926 1.9157773957670389715086141979920917 0.0945043800758581764270109581730867 1.0992728388607140826553040891863585 GT 1 -6591029089258.2172450687169729756671811890798242 1.7258522805422067122665899749014879 0.0720945406564630917847837151464789 1.0748254270930144008689036012088815 GT 1 -81953304423667643.0451514001870402300794570392553024 0.3383046099249246051722505788849116 0.0178423645250464706121725938162348 1.0180034585868401270532761516170904 GT 1 -21352292425699559972259909351654414489783.7320784739072849753737519018880884 0.9324845950097214608415885850652565 0.0142833619245960862637762652008625 1.0143863510016388638042097944710193 GT 1 -2386177.6696530162875883557741642443113311 1.2623117002570916866165768676017841 0.0148494152865109978378729938677645 1.0149607716129659403842473309975939 GT 1 -1247.6145716390667370206756433106761854 1.1608932053725445025074751195733672 0.0141542292348055486607544157739624 1.0142553557164821206387321549850658 GT 1 -1154614927772.6569270101414878691995365334517479 0.0204920493838749827210909205906426 0.0157380562645122063027851237982837 1.0158632143723916466810089587027292 GT 1 -463565634982702855245876365921351924596.2217708838223044523635356238985513 0.2497687577232924779969067821963188 0.0380768328123663323669400313953766 1.0388206992943547908869516096451440 GT 1 -221299731964021298720778.2864846901036570036019660327327372 0.4360025947288403039736920009961726 0.0177969341733394358358562528234235 1.0179572039945088594131037573706263 GT 1 -24669917242601805731431573721.3916103541746789487821870778633141 0.8375933395622243794170711729816971 0.0339243640975072345124736132495001 1.0345131497990434617388336048812088 GT 1 -428742853366566914172862863045309177.2657433653430492240169201320392697 2.8574629468793686718979599911551419 0.0423439035532565776913977659174050 1.0432665462048151080581825555577742 GT 1 -1509626411544243540.7698209732133435406861082372135544 1.2988875965167478284096907588614902 0.0506359624376958794930368247616875 1.0519629527035815424749098312542281 GT 1 -3966930755.7457707901915063163735027261666389 1.5636702004513215822034679812005819 0.0755034294587922586432650417152197 1.0785059376900068507840033152229159 GT 1 -84904942209599747052699182893.8682517607696240323010228213903322 0.4507697639088679166412123052285559 0.0816237420825437108287277405662357 1.0851481053217066640653539374349482 GT 1 -89559658974671365545140600731167796.6797613493256012591695927418625591 0.9554621644385251286241096246015970 0.0812564577633140315264038870633075 1.0847482573378220362817221972250232 GT 1 -591839527691.5359180535646491551106246688806416 0.0018669971581845398248910886777260 0.0459628214614310597671304733752427 1.0470526370787757228174639865226070 GT 1 -1503320341328.3322935130707571065057782298685442 0.2620285124304780636377239712412401 0.0429764919052695610896613553897576 1.0439273234685720380433567203532226 GT 1 -88158061320056257600273.5361294533378949037968955464611530 0.4101565422047570322433796358536986 0.0756515992269817229817083943120678 1.0786662212949662833459367489352438 GT 1 -39935312711775963169430226416703.1240851877952191644536791882171209 2.3113886290625019589551981926697757 0.0344097903084321538355800173994964 1.0350157483434558554773264768284543 GT 1 -31665.3730512828089184593480052989985151 0.0059182110011179046168302612069350 0.0930442617746461421841150389708136 1.0976616302503222154717447606493475 GT 1 -1735094848113.8444972737968883959327508136540369 0.2906877577330250373984208222043014 0.0961083256317198430250830137608876 1.1010457550086855113440638429902978 GT 1 -20729938354513638001114971356200884627.4296987410074126882649554888813301 4.2399659629842877487227268596079903 0.0631379383882216545177910931983892 1.0652192203748418613794331351910392 LT 1 -9068654729.6028517834788498865345936677183905 0.3882555615893524115857622586822219 0.0359255885263049746825018601058627 1.0365867970252015288638208542373123 GT 1 -11099135072435437987250473287601268690472238.9068966757374378267184896612962436 0.2014608268188402411290664417540390 0.0861502373989928157783090581671226 1.0900890945606689342821006258402576 GT 1 -4991752985428919266391689088066728.0667589135672196218784791524562766 0.6713081102515959847100577529778239 0.0768520255487604310223348614794754 1.0799657383135774118475807388716089 GT 1 -57004126470007247566590358.1711281576516344252429067632918776 1.7946271157146584535584694961455217 0.0068957475130071075848541911558924 1.0069196330489713228150819032030451 GT 1 -101201042287738998260575487761593.1779933955362087501052881814017496 3.6203809504201818464466574894223096 0.0781057085156505314752599693889300 1.0813247133170010287894168690669176 LT 1 -253161342390.3037434180063640026119415284650369 0.0975781088323576267304848270635821 0.0383844642063519575935242606534913 1.0391405591403060590278536725682389 GT 1 -5.9797925423760334788050470531001222 1.2230338835374905356971157426597660 0.0048656334453698165434780657047436 1.0048775091774149957354791274095764 GT 1 -2418491809705259404416985093553.3443198912842269101647064911699458 1.1557731669276191166760779089821977 0.0113176145903404531103983855815376 1.0113821461478798574952197311700484 GT 1 -1199505363431892.3780104650552830411550370195855770 0.2112702052143280438713974716372204 0.0448403508694972700443374782081876 1.0458767806086650733628451499730597 GT 1 -6702763775494813055757385173529430.4995550025141873607071323013715885 1.6770018103809327992167204186270539 0.0936764844616580625191440761868394 1.0983589555093174966860307505116814 GT 1 -1957642645230062683542690429456890353.3051099516305361642464639384613817 0.9643416642694989052594233153320974 0.0492319453833987151081240953621306 1.0504851424864936873498673896646661 GT 1 -433.7704304492389376112528653326920873 0.3810575844358971684544831797905424 0.0046544588894232642644882974602760 1.0046653246123504303352831783970663 GT 1 -217565502391988709935.2184372347941751164183322582366414 0.5104558561749111895455759540017569 0.0079624966955231587965031661972685 1.0079943666614029459544718761141360 GT 1 -136280612215.7226151908656426355598411032420416 0.2519686722991429706960940809503856 0.0071134194504555353025778148805484 1.0071388404437881869480725015087266 GT 1 -1629058539679074257.5344440538972918302897497910361471 0.9678517785128288442132072427775047 0.0847877397563083059820013904148393 1.0885992622010399942345667068281506 GT 1 -39201885616225218365861988435413.3363360081454091603169146659507764 0.2044008468512747032806424860074607 0.0531217739500502516499735923362039 1.0545847832407551891799517456729396 GT 1 -614.2080906201728483534225439290745649 0.0869255439794045254773104689115842 0.0068247624804757361810932500340724 1.0068481576771329328723929717099306 GT 1 -163206867532079468280882551706.8145215905308236466603418571608181 1.5430297227117082974354283391074013 0.0690811482066733336980445258226958 1.0715831679171168225901886858290000 GT 1 -62200722098481160837.8175386889874556432772534053767408 1.6600424364089671091672432541836986 0.0550663674231703739487608519956007 1.0566405840320706236474693119797810 GT 1 -6647023266839216.2263233453770038783389178177842858 0.3690663162735212687441914495178176 0.0110408271995823924217944518661818 1.0111022295053353480417677480710372 GT 1 -9197524927981757421317283815514608625051079.5609778291508644416525074664612065 0.0931700002563227084474017597538917 0.0249543583148686405780321038519731 1.0252709970951865284987036479533013 GT 1 -4941276912.5104632613324179213153703117226074 0.3543513413648423122687979726566306 0.0654943422131459873102384940847574 1.0677375977582937581679608040212168 GT 1 -6365465604780474046092549.3110505919377404772905578454329584 0.6794545787214839755936662779956777 0.0802650203431443744216180067284866 1.0836697160282873447290894528946661 GT 1 -34688.9301211262567707634900179228292724 0.8894064889635389157188906314177135 0.0738590692031242425708843187238701 1.0767288628309713177413431501133677 GT 1 -6149539279586528346.9037316077175019468061686513498810 0.2472206686556398991376852154915109 0.0045060175150725338145337855139174 1.0045162002124513069490422270211913 GT 1 -237478059768647705428590007095.7023348733713624441089568713714543 2.2005530414932931734243322522257617 0.0826357260036401385611109385343367 1.0862506402453692803674408106136046 GT 1 -108293799911506496566106864116328.2210629416331441695014496994861316 2.7032731081572376995192357565919104 0.0207504794390803378797619063126147 1.0209687960345601179402965306646490 GT 1 -1781012368878807822953956394208268800.0991485729795346374344315590064803 0.0626651040565164320420143321008298 0.0291629526776331562269931584771597 1.0295966442155050186374850959962651 GT 1 -1082711262873427371.4686184846929305314964362877085078 3.7446900306028814961035946054176859 0.0101383053909021076732789431360126 1.0101900480278454025937099206919197 GT 1 -42342549056813.6056091030156832455112173789664664 0.2613289145812152093183735227330593 0.0275434743324353124609502518450762 1.0279299081725132543005240066698244 GT 1 -2211443793355433.0741697964324107963326561525973671 1.2074345102141833460412071003874428 0.0033061781699739656719771120590822 1.0033116556533759804687695299197585 GT 1 -1289775043705584.3225141191861947394134383563876925 0.0472519160091377467001263924431084 0.0777435799515691631455454200002804 1.0809319812409605671036914115190970 GT 1 -2236790523480477694935010230773121681.1120192446557267839899451346992192 0.3900604591172270086003778614896755 0.0647287509662900029313271174216116 1.0669186858476287790968272232239086 GT 1 -301430048679866701904327409008170755385.9836647030598943764086122079712522 0.0114406640695242281985791908590351 0.0659772907727707428070651787196477 1.0682545271010907377669423588806781 GT 1 -93279228277.0344751008942863751066401443700453 0.9283317768555107074861662088653147 0.0976238797514594520377948628993140 1.1027238610790162213467328114301436 GT 1 -1193245211841.2205360182932690592309892642767964 2.6233347658994436977893570547148080 0.0612486485607564917740632570482666 1.0632046362891233295772185745279248 GT 1 -25082032011956403.3821898855646527796476979599400253 0.1811835420259307083904636936677939 0.0523916188081716920650821262380460 1.0538139620850497479509448456138390 GT 1 -62867107888148734650.0266969607004989122397121320589820 1.0773765846557679111937786464624051 0.0285797899280526936873247755098949 1.0289961441891729003514864760355814 GT 1 -40061695967031033136550899795.8719437991080153344076157874960509 1.1865885041548159212616668080403152 0.0823051411613648462711693449161141 1.0858903413972980293897317876740191 GT 1 -231481358366181014250845267585682715.8998122243551783896650324346726808 0.5945156153480673854302547580389708 0.0848288023169615441326229350918774 1.0886441299149414717061849110447031 GT 1 -1181537895973847674252427629436.4812158281037868342068005923682063 0.4246017282687795948661546580365557 0.0797456080308513755599008558691278 1.0831051341517833530438641339865085 GT 1 -32112463084.7384160220520344935507955665901919 1.4124423945240817075583827244644086 0.0937517992223882772938696098969246 1.0984420581640655645379938557245415 GT 1 -61.6710011729951373555338385054026625 0.3724580703461191787853263410407302 0.0719975555860432236718641501752692 1.0747209121326418579555840840792449 GT 1 -5.2753616109576220858944169021741148 1.3113793118796367849865000968512309 0.0376453494571376840262061082357573 1.0383722366467219681361388865680059 GT 1 -7914040854777706.4166123927170887176985090410352925 0.1601726564181501820687712978025334 0.0422726568072280372993519303988161 1.0431921519664741845402914733902429 GT 1 -2619850859122551749717679843763615930041.1881957502160081546098669256349074 0.8071071648498534211108728206327647 0.0084790537564002390911321157585673 1.0085152054324228802682722564422312 GT 1 -135702931734495738.3787957986141618094362801374637080 0.2974626108313292705160162003560082 0.0800982321759139839311472009757726 1.0834883887440658577513551114759924 GT 1 -67294170923.4187354828392845811296689968969768 2.2047385863712667273457179809184828 0.0891963890095027551599588887326981 1.0934279801643804176254474831969518 GT 1 -27416129114855258935044.6793267566966063952952271198226067 0.6958404850124755238136648771345690 0.0421006982556619887650643199955454 1.0430126195377700796554022174129980 GT 1 -22646.7873153747458446202957186804011404 0.0583679632904979568753383777627524 0.0436119494914973763961015516096265 1.0445915377163989086711641887014557 GT 1 -61307576240498443.7099488369851688372496713335211706 1.1068479824353051269332493263541753 0.0968581340928291066248850104772376 1.1018756328027939119355055020631445 GT 1 -2587000200123661981.6642511518100056443071559129434648 0.0356136887146937937578194538409617 0.0119492525983012218445491394048972 1.0120212187864407468120776433667038 GT 1 -56810580102029850632.1452640520523331712123310158080913 0.0321049751662607719103587088397477 0.0346225375953909083423586383946291 1.0352361013725551379700849483506193 GT 1 -122368141582972.9660244407985207771209441497948518 1.2501717169669693973541867979680683 0.0916101804428701068188100043272803 1.0960816758180131161635686517668557 GT 1 -6382808807613296339106525966545613799132.7754073744442517774583864637271115 0.4009757438155153670636432409730117 0.0997473865143009571460575494069192 1.1050798733907747746648501687772337 GT 1 -467330628.6030382459857369256749132798218203 0.4064173043087838467863446585276033 0.0410725154534510006221802615660803 1.0419398226547389729466305176519477 GT 1 -35.0834531947275877432325953327825086 0.8995224852801107358672254493229057 0.0554281631643453377687197237219765 1.0570235368749740014253399457085137 GT 1 -982431078976859103.2821536613742271044874828209713968 0.1510556340101630195866884624822501 0.0471884591344416495620263580528463 1.0483381484351020242943266400352574 GT 1 -27813127341145234056.8232211749918424041738835377381717 1.0234718155746357326632127691824475 0.0541326083783949464787202825180096 1.0556528977459581165409692210035427 GT 1 -757248742567080818027656420766.8915155885109249247357781632420009 0.3294850510090688128667957177988553 0.0370263128661510441359248183713486 1.0377291914058619397592440417931342 GT 1 -17078318529024919480564.0029955174782058293442159300168655 1.0986670719905599543748122237598527 0.0174064428508128491197748500466859 1.0175597162106826519162964021872448 GT 1 -2.3402395042327282764975562464131142 1.1142917679190565192503964461484294 0.0452372238294858463004609362477343 1.0462923712739646921744121268203080 GT 1 -2114318340530188271708650701061331916971951.3565672537246787207819704620654315 2.3034494375196980910487951573057389 0.0947123258174459608910163491986904 1.1044528888909631436571965416600157 GT 2 -815555232459797970347696757507611387.7090727009791939478679571436586344 0.7894528434579832828614239419731764 0.0166698214814861586629722833020966 1.0168103266077849060806829051951608 GT 1 -24982075812862894353523608842748363303946865.3236930576025999167717725279095918 1.5149602993320195849228608050429811 0.0846293521040557498634576881529238 1.0884262160615359787939135351018062 GT 1 -1.6218355601283328000526726694674475 0.4916235289118712686929869180164310 0.0591478062924979873806986515103439 1.0609692253711991486570407487008776 GT 1 -90.2625397578206153698726124205561750 0.6662226658018484640986540021758021 0.0208929440489104127624242886219883 1.0211142900797100870394985628078239 GT 1 -1577143354016707265544.8682520132763994027295814343621016 0.4906532867560975457603853374640453 0.0665035808600338334926715523757522 1.0688181519584763542232536843911690 GT 1 -521946720275170.7888704265944994519651612287224860 2.0167221650930472602368175142369222 0.0760764256425369523160900330729932 1.0791259224956043714168333110195042 GT 1 -77326240347933367740264941268019.0111663648879017161254470485508960 3.1041627888684681795323570749340117 0.0206253917208731018535605831847764 1.0208410658421914741798180662913629 GT 1 -189714452387472814939885737570.7518511761641449249124047399244826 1.0682631987571753637924261558813193 0.0812564628305455190677868080876066 1.0847482628532148184492760211722220 GT 1 -1.4283291446910695153305528079009807 1.0025309892819223962766329015539471 0.0971522754403208946260676510473304 1.1022013726095406488722116460011992 GT 1 -40013635616897.8421508133453533081863305615537151 0.7872525434069415970361769036176375 0.0604242328825027718888461832398529 1.0623268171669396508248836739177437 GT 1 -248407906567438723.3783164053719070795339397251679144 0.0100826366998857756535821991156913 0.0621330749115173148172076717958698 1.0641472109483425232556138457792949 GT 1 -2066745270.6433932866026676831990138378209433 4.0360400971976333022003781976485396 0.0554288212077116154017626687247850 1.0570242335330468249154775332787577 LT 1 -156950.4887452264130335813676096586315092 1.4566179274313911162573603981635856 0.0473376925831820041605658224201040 1.0484947850104924410898706180621417 GT 1 -13379345433575339677342795163.1666189765515191885101512682686518 2.7523994156066915797907302096549352 0.0731787290244918206087558562695799 1.0788821204275584370373994617213660 LT 2 -12040130299720710937423075.7161104098264271881287332990936984 0.0700585777874467670293475486481293 0.0676313892193635276748507441625661 1.0700270373586452087730226379045357 GT 1 -183793716004161942032068380.9077080722401191257544091964854307 0.1996005265870245947306166944490268 0.0447422365048059862797003318452127 1.0457740655013496553174900987822011 GT 1 -56957951941657738964423292078997355694.2571219282209539012982062757432370 1.1285769299357754617719234861052651 0.0656626073093482011301593190104446 1.0679176718384728405149004729899159 GT 1 -2893096840811795603.7505362784415988585162343285019066 3.0252900699143932136373237805183202 0.0555231212255881198301137745174220 1.0571240721978993254012169341362401 LT 1 -22268.5488339752015904346298597118293833 0.1077201634022921465666871234394366 0.0403654616466439083169934031717526 1.0412027562160441284248406863237328 GT 1 -1089868941982797914458824527867099410820.0594667857421016164316308617084712 1.2494273893285846622301390043167672 0.0804262189467840935158229458600267 1.0838449977509603838155873523353617 GT 1 -303640815505731261007763097.8482105674423859098183405548534941 0.0780005840602704311612248521280481 0.0981868292283319406545454312341700 1.1033479081210242118743883958474909 GT 1 -1525004727759.7407842285859143834401682239680941 1.0928551990880665171404927489039957 0.0160207052818146896735728478432548 1.0161504241043323375130926920800586 GT 1 -1188658286.1966348447487004817968762537302228 0.5781094828042729970347134679194024 0.0640365744923476689560386040817534 1.0661788785803421635976777005145715 GT 1 -27787657774698611846558672565.8254086814322429757484950863142941 1.2166868115950214293132012874576118 0.0193403044441942082368220178675330 1.0195297750568158655666475247268695 GT 1 -17.8511992051562694662087518269650642 0.3408992607347616649667301914315136 0.0352182137234396343795231114006429 1.0358533314248081948372978611575574 GT 1 -128061427593798234567070376125935297.0363763249773326797018521898643982 0.8999920044734595154819374823782996 0.0189088101070787347207398214020121 1.0190898676788968941985850762504477 GT 1 -434331500005873114435359334811475630933.6958172114256251844408451206944282 0.7094484223866089020892864770159653 0.0814996873993221548469136938245777 1.0850130339887698291673173745619265 GT 1 -5241145497017784797666606479947375.9406211119646157600874023030115600 0.8477176327730159426307899348783995 0.0695045632439263837984807043590686 1.0720381069891552698977799455627524 GT 1 -2.8572216705831661892012744380285799 1.7253282432439376155505864182624315 0.0580446797664383781188137104922708 1.0597974362805821666916802580708623 GT 1 -3734169068891.1696886676951129568212049121820037 0.0572834513368761420285109252743976 0.0877310500613374649695323465293071 1.0918204311340983978851359708226873 GT 1 -49.0477416133032607179621469257561707 1.4255620710380202703857659611523879 0.0043915161884555753270165128325970 1.0044011872197185382206446232314418 GT 1 -2252327989737428676493997483641488.5323403358332173632965809967335046 0.0806311420035017602521298104423218 0.0669759536752805411257985280335036 1.0693243053428850503250064849864031 GT 1 -56096083489137472694.1793975498676602300980315267592565 0.7290131291939083717407480792295942 0.0405653046274974980937325860884954 1.0414110269527782831737952655299157 GT 1 -19500.7700888140010751540432912126683583 0.5745871317608594445971728055190943 0.0016563536578369636707019396215595 1.0016577269281806115045629410149031 GT 1 -17284112530522.6921740995766897492486305310579071 0.4532564925145420490273886349353355 0.0478856632432458302486922321068851 1.0490701497671497434200668662721554 GT 1 -532349570929856879096481237814854.8208981360230408197852476135074671 0.1070614096415311800895064447621264 0.0152865309508388868229401823920070 1.0154045744943551539396055245982882 GT 1 -55471604.2522945345854722997595866111312453 0.1117743964771275305055269931164479 0.0817196113259933752609085292996012 1.0852525007117918502521383827548326 GT 1 -1757633505583773076250.5222513112254145090005338291268502 0.4476276291990212447751132112226625 0.0797237332202897287536995853275048 1.0830813640391164478796940985159194 GT 1 -1179394918908949546613749912397982.7442865036883115878889871776551185 0.2765016221865556497580256748950374 0.0843203759192359369156380923466129 1.0880887308570266992335449534003516 GT 1 -11999114010.7308225501952320487237132387925266 1.6231821218550549508304109562318424 0.0720688835580716620411049862243368 1.0747977769230287109823102822064812 GT 1 -38418037021.0913926712659432318353326123342290 0.1253596374352564876745209777040700 0.0696642230589995648586350744634227 1.0722097075236795802311896889084743 GT 1 -34081.9345275545426263662063781600561063 0.3366894740709733230993602876145333 0.0098016537877140394080375702567716 1.0098500062114444305116571285727764 GT 1 -23292066440.8397352023864563026858551786843690 0.5870938554538294426012972459858056 0.0663983458287468237119092655764162 1.0687054261912521227681783978628252 GT 1 -43924584156982541602621729.9259195822434727936886347810489691 0.2805301659951602535950129107939015 0.0258584741315297066023121435055789 1.0261986821287751143131212417063134 GT 1 -22519831219055595235.7800574049371226467690452615395310 0.0960959722836522814680303543325633 0.0066867277535295364293563893127853 1.0067091840797627441872524560218340 GT 1 -27216677408571864658541212440.2142085482845271667355424347924491 2.8035077492651022735942771094112147 0.0433806544039637734994717754591472 1.0443497246537503862765773352534061 GT 1 -3.0850715515232466167106572155298658 0.4526523258540004887960156022488605 0.0370148614783148267285108857345969 1.0377172997831711434792424544601866 GT 1 -11105541427935639828723541341.9789607717051081180992739185264013 0.4594360932214705277555908927476923 0.0287630289801458217482658155513722 1.0291847920416298852669712774583855 GT 1 -808533.0794133963842994245640170938511145 1.0983665520788003336889228422560152 0.0349793225068269981513446907518957 1.0356057504186504532508423827681927 GT 1 -64208315112440550241.1812904520194195177143026641430846 0.8522521488577419054832320050165568 0.0077060318488722446112506908477797 1.0077358767349283099816455683604969 GT 1 -125949564366486049155212051634928.4301010315898373507838587332790585 0.1535980449804572355969125337383917 0.0830423032973970197335876137521091 1.0866939400661310176268873546201708 GT 1 -297.5790072166915642030423531602164725 0.4314403016248308377137843200138290 0.0677031359257346770342207784597709 1.0701039913296111149060614766241573 GT 1 -1032871273144047171908630902107766507501011.2708756706780905464732283871331725 1.3558460517393728271036545200178432 0.0830983439243993613681333675643867 1.0867550577597370047167741381681738 GT 1 -10666388185604784723353557548073033.8699799170780203140108790864514014 0.7823894271035497458142661213511102 0.0639389417559495412926681036812990 1.0660745714654149238061565269380420 GT 1 -239545609904493093590331251.0413774863672569395515578191944919 1.8754304220818149260416535311053453 0.0113934469776741666755678374418846 1.0114588495430154505883480606622399 GT 1 -241714307124608261517501089382112217.4637257090092191543126444578276421 0.7692667513941701878429791042552092 0.0393334191359479490876985044255696 1.0401278804064821017347422998168489 GT 1 -194.7229876360086462966209093755818587 0.0949264275839969479558187458977448 0.0747343465387750825807490846066595 1.0776743897706535478384607087004874 GT 1 -2652695276950534907.4310431486833817567760357910231314 0.2518108384530374867546857965645016 0.0733867775084175633603213717697842 1.0762190361989830734013369464771662 GT 1 -1024252819956903.1179958574031050233608406469760239 1.5436609912432266614262178347234013 0.0376720436668797217590137961532269 1.0383999754641751768438761201247508 GT 1 -1042.4845832612686724923466724072340864 5.3117226725982421066532638058240751 0.0347567512141448337840404061106588 1.0353751381270996136731607423890471 LT 1 -1308630799386573559097061247513986.7674070399843822579759960749518582 1.7094739644212347105425094861619279 0.0198032556569358131524767235333620 1.0200019679332789182858272256290592 GT 1 -129665049195359627670109473038454.6576564013341787470830675205145362 2.2227763301799224461055825121095233 0.0193265878787412269725116080569885 1.0195157880747988737531818356487109 GT 1 -24696655071822323951.7184701157936173406877473756984972 0.0205895012336515967495317038353673 0.0148185234895656192940854242627578 1.0149294146680571512414322101458669 GT 1 -4240153148834204825235940099344290503221343.4126972175416371632837828446843297 0.6021358205045182228849982479806722 0.0852141929977538647467838438190782 1.0890653318180499149793974787783758 GT 1 -36821984854422630935326134930903890286.8391274074024402852803171118184926 0.9607696550390021474741061015920842 0.0168990517926111748249409662372036 1.0170434701021568835889420123030788 GT 1 -9967852338389285051642709463113881011119238.4946952969231423673057648668841833 1.9455013183792767237805143469137948 0.0275542029490424957589320937580976 1.0279409407230757894952167121062339 GT 1 -12113632157466224894142553691040168243238819.0920262386055712199049123887215912 3.3014793138585228967606885869060105 0.0948403643489089034992975776718350 1.0996439578529931813151080119974511 LT 1 -9799999427543.1825157737611281528571820709208445 0.7423973009404040802734287673997078 0.0894028661259135361149888941783553 1.0936547036000410336482442610950558 GT 1 -22385320765046978495808900149618637630024130.9501962649852418330946934072886701 1.2036700749966312688512936768465783 0.0721622201499836108158937270426145 1.0748983676724233678141924450995651 GT 1 -4047764787183732577316684.1829544817545005662605741468464420 1.6352296212738936913580299941702148 0.0043645206985600975070385319035168 1.0043740730233697104620148499586156 GT 1 -161233665133636342228669935756.4651252198305748745235779745640920 0.1690973642960955963655090204367270 0.0312737372375742862421668016500113 1.0317732015696979971055371468182231 GT 1 -7158871302.5886332029453145427057710581602230 1.1306328166543061572423895592638918 0.0975169803342705501900845296318865 1.1026054037269161767313826540062334 GT 1 -460375166138034301536620834404798977889.4167182161756035890718760899985032 0.2101151048228369336351053287731891 0.0640762395264479597139613797435911 1.0662212583075001716172858331266781 GT 1 -2029.7767176961421114142009840661581792 2.6647824859577444106585489914358464 0.0610417229739416933130759937122691 1.0629842341731459220989435963723356 GT 1 -734194716450962179979272315.9365296234809744359269963643505125 0.1145201607641159614480113942023560 0.0579473045479329645796659737596551 1.0596940660000086155116782456083957 GT 1 -307716027421750058953014939099749189783552.7320047220648481527221616157283556 0.3206537516482636839987126595984435 0.0828216802287289743847004484596606 1.0864533656836964380853271182496787 GT 1 -267981626100892646391489631448091.5527739258344245563391504751790049 0.0476751508117550280271057752895703 0.0349819564552743074164036243377081 1.0356084798441470510254925119316199 GT 1 -17203775.4347767411746576527425555644017365 2.9839503908129702682475493740779253 0.0219730767489019031512698870676534 1.0222180804396291909596846939505963 GT 1 -675262941646248.0110293803243113026183134778155397 0.3670086454780611329277504967249857 0.0994728377960543610056534050580256 1.1047749513519111508832535568930443 GT 1 -14740878421799078.7018402017040069565535072207598143 0.0717877071886648155651197236233953 0.0934206452648221600194676370759807 1.0980767129217753768762391354048106 GT 1 -175152488732371097897673.9469165512370891577329126610833032 0.2265704299120936425557365228780259 0.0872501567446101513046823778347867 1.0912934301742720556963430188121729 GT 1 -277170861054879558379524627753733932517.9936403315725364361180508470533608 1.2836561840353525499779888900831333 0.0272554816536703460973521532389768 1.0276338023465828589913277943381874 GT 1 -1211384633.0094543063822564696402335221360340 0.3579392304424313893368502036830826 0.0448202090744055340709856119685000 1.0458556934713007410059854045039894 GT 1 -17799357403345789011.8209437052455686584900646690777844 0.0158423245947263473792335765897467 0.0630762631306328276326246675262541 1.0651533908038619849190241464999076 GT 1 -201547801449184177280776080680012.9673241982672912850705402305844078 0.5612770946404340565908841803179726 0.0773604958865766755958672692621995 1.0805166905294563020297984160542687 GT 1 -30478782989707299168825707028356452647.9726314448887136670763529324365304 0.0503016624264828399320196843223768 0.0352649316010414307786752613817773 1.0359017558555124106513762456085718 GT 1 -387882384334388199624.5194683805261038650449680561280842 0.4650061798148652916813628206346278 0.0690537922067706806694172788422755 1.0715537823289789838601290352660898 GT 1 -655787534842891303198001540262.6491810422308694665472202966136122 0.8085217745049752686284926451162853 0.0256567471841486995587673282026477 1.0259916218013775804656503174386539 GT 1 -1086883036067099827.5981757126352570326239658094204855 0.0105421981543452630248294745117176 0.0794597891305035375760620816671693 1.0827945955374219491739303801918889 GT 1 -11743304572.3084887915931575106247344789040334 1.8423687399455938296854155244110858 0.0470501642512837000988985560384652 1.0481930149623622304489415141250058 GT 1 -170585578986350047060.8625278605951200887580899795969641 1.1835286574494879933827402043861691 0.0297873196864703984919931095726268 1.0302399734630578050180424783196955 GT 1 -154794125578975951747058310118249.6919392769075829658136014717903629 0.4035595313476075246878304829252569 0.0899621492404942648535237224173838 1.0942690860950426980534273128725523 GT 1 -10641869.4008942972385953696015115438719920 0.1921277588117669037588875109150529 0.0816001188471868189837831905928797 1.0851223828236235260070798789897154 GT 1 -3335195189494054044510858583879801071099.1267239740209803875409991182457138 0.9777161048177573314628939831787287 0.0457266778595381221174056510732737 1.0468051473720280524477218893162681 GT 1 -17033498139036479388819728922731.7026686998607224630220662083816536 1.0868860247534131481672198513640667 0.0800788163199931280187801461896446 1.0834672825219636670786874247852737 GT 1 -219096848793113565099089106519991.7106623399309855103586731542003384 0.7078001375468915796493651689830301 0.0409109153226135428792988651478366 1.0417713151102131948152092349391961 GT 1 -1122735759053448.9297619255583453676779242530425258 2.3820116750125096441082467833741147 0.0652380250939273158007493098102408 1.0674633543954470286485407251205777 GT 1 -55068390320744326854.9431371028594177567937829997449365 1.8468607906768421751610368223267851 0.0735521315250573166907495845395122 1.0763975020012005115705053067701779 GT 1 -92872652796514024.1341583807381278054335998418107377 1.5900099194086812918122301579873082 0.0642599916767320438066631380406214 1.0664176099748646277640104948268960 GT 1 -146892516414384005616756910821633162989.4813937240034451652441223867067036 1.3517625181265740866920289185795584 0.0542996939304724476472299472228943 1.0558295613173608312993530338550317 GT 1 -306895532152982347169133019749258611343999.6129159372153931158070556604936878 2.1687188127603596191398505472187033 0.0608862905722801305039145548796352 1.0628187108032883779278877005817739 GT 1 -23873016791493545085444885.2758296524604026515132420430683315 0.6674427781852563632784753159944116 0.0651292697566833611251342995455581 1.0673470156760107648166984630022812 GT 1 -287193740313.0439024845613754887067857515747787 0.2429523882960812465418647073951653 0.0071682274932257208400082934965118 1.0071940426759675347521124811960528 GT 1 -7658508291225067012114.5205091481757584531487675933642647 1.2637890624345277033152671357856365 0.0686106904513927387776784393418096 1.0710779263303008466003744222870177 GT 1 -1220912019290366747484831564309765653464175.7807419920428684887915098298055461 0.1583641564615394366947589250897527 0.0262042114689257758791971396111996 1.0265536600210007207448966034654026 GT 1 -2742838032518391089679413795196.5187105717419527203832592801787167 0.8192197359241666518248828371856107 0.0652786282589262378657757686963904 1.0675067922416071741900349280705349 GT 1 -197176955026070879573740731661191009224.7615541082958240158519753363395509 2.3311757437905594049558529270650655 0.0661203079398862988216105675043627 1.0684076584074121596680045286574863 GT 1 -82857219104670957158480260729712.1646576542218512359364448765291923 0.1732032671693407935674387832204495 0.0641210143656860102626983271320349 1.0662690997152977541226259636175134 GT 1 -261910395380610379146109255058.7256065711601029040814083805058735 1.8861460186868957588306330581783308 0.0212366535004254397636804536134725 1.0214653954997784483292012720801581 GT 1 -173284753797752066013.2007695315361915208608018282038244 0.1168572450019407064196936571920853 0.0790536249258462640790358250706212 1.0823534690971383607439956507917012 GT 1 -3958181277278147768052022447267348.4389423689546110953128592755925984 0.1515223422018589226101537743385987 0.0458126877439965143327082244805236 1.0468952827229663478498903832646650 GT 1 -417031016136857460983796333438.4811341551335147857058043656664847 4.2955129038165097664313189411010409 0.0857559119754219220709676377874377 1.0896576884492686336178873017167926 LT 1 -6605213036782367258392033758718588164.0400679688581304276190171479017369 0.1126832742600234844667706900779010 0.0391012581884667458857615580853115 1.0398862430852094927315197332092219 GT 1 -4803221683838700008303163404856668769.8995366488727721480693855666128894 2.3070730437894516791309393060668436 0.0453094642322915276161439927104867 1.0463680373322950938704551007836778 GT 1 -568805442784361.3516621125837814926617238493142541 0.6655869730778774553585519004208620 0.0448738716703255754962589952330914 1.0459118756726887542631620446076528 GT 1 -30958886013231500422109567248818497150.0392257710250992133336681156811677 0.0359375332765566746626614857938816 0.0945667331566055178348839943983498 1.0993417019521668681259132527516186 GT 1 -2218349800613380377249621913.5901988734773385970288566852679477 1.8031021189715574389068305156034032 0.0332315503620888004881938132639405 1.0337962644896979897767490387168194 GT 1 -86.1026489873708196988064316239948273 0.3472420234698231312624646512393421 0.0691435003216296725226694894175182 1.0716501492690080296601435607117155 GT 1 -20263252630237394125472111037327502.7114879352687555848428429364762210 2.2096708570853091420853713539079661 0.0195652753780000067765646600221910 1.0197592091243221853494951514380616 GT 1 -3432039610085859538940768977998902780.2754419809136274421123667238786547 0.7471708197271952173246386619498884 0.0922875031636461482525486743781297 1.0968275839599344536066761579147453 GT 1 -73093547056793499177401930961561058727.6477668295137122483080320775828696 0.6812471193225718107353561766660555 0.0036402729799738799963378396865261 1.0036469148974861047147024391900255 GT 1 -80445311301.4130620149479719580124808056645159 0.8874012482335913312244999930539623 0.0471705633761880202209055633378669 1.0483193665570194774072727120490432 GT 1 -525072818383150633253941.9750262903443234773751354816394319 1.2317118219854497413320349584700865 0.0238780435903921401375201235474992 1.0241677450375995228185586609115390 GT 1 -72648322717167993988736699255622.6113136911108569297778380748125254 0.9443079292724150172354969064196650 0.0943679110545250877117229420590638 1.0991221382547622928624430857642050 GT 1 -18730034970429177263940538639186.7186813418705875378573331975936517 2.3601815191159812984031909509679118 0.0177634625706731025179014812280197 1.0179231264869956790656787262231126 GT 1 -62235495570026426412052062029.1861315110938886626205783112107214 2.8349767122783999498716562755774214 0.0544868178417233783335494980427586 1.0560274489836939631326053481885853 GT 1 -376897505201765205306859738276.8508933271803350551100176604339244 0.2175054221187593040263635576503115 0.0274940837716488824103610944989454 1.0278791199827434799789986800696807 GT 1 -97857677371116408041.9169299120105937809485749204169874 1.4638271812652066636438995273794432 0.0530948205779722815772020802284972 1.0545563181353984627382490019451646 GT 1 -982868611.7749752199102610142961292813361673 1.0053795208951612847041758040897127 0.0891589163836770928051025222034129 1.0933868386333871456811235062230426 GT 1 -22097854667623361700749617.3736204894481774343837676904819315 1.5142194297256520837832033962785301 0.0661754398771315264891364258650774 1.0684666955244469387720326994763381 GT 1 -563685118961908.4644577545110418513247815958239693 0.3966619743835501516024088062312023 0.0196661877788314450516147711940320 1.0198621406014694097172213757614751 GT 1 -2764606100430801204744134072543.5022889712340748461528428547472390 0.6432589111511403892978904092380327 0.0611596609165883012978537346921924 1.0631098471561249311793979777388879 GT 1 -189461481158191555.7456792412118488883377675624928219 0.1057448828117376604036130709861169 0.0082248390928744730244347590064245 1.0082588496981465777888312101037579 GT 1 -6069758306864615802985769823.8818184748591577840422730663008353 0.4382933915231373510103450879178789 0.0055819519768657055016233657089505 1.0055975892891015808748882100377151 GT 1 -516177586459406797232132599673968533.4890122879968098994042037294647854 0.5340354804352538971981260460269161 0.0812184190170423785652339385938426 1.0847068551868566807551641688613307 GT 1 -280444214373682584755634908.3478669374724827765548752537374826 0.9943640765640350888744728640566284 0.0589799741916140723231396208876515 1.0607908582115287087856348520381909 GT 1 -91195146414315796.4068689631474902640515923224268760 0.8913923041849641220429413534706065 0.0044618691149013886007578803183877 1.0044718529617144466636707782875080 GT 1 -336053970.1542232697329345260998330897278683 2.3958324024249411067315768104094731 0.0499101827263413364838734493040899 1.0511987543580118927293470052985970 GT 1 -4018764008749756125482586404.5032884221673830548574629596773670 0.1085694684557192465833136842972624 0.0825727843052866883361049884816745 1.0861820311432104974116715485156544 GT 1 -35321368637.1826000701309449545408293189581503 2.9317608949565044999810811595790337 0.0924952741377487317655128971522494 1.0970565052949811232716500833553176 LT 1 -5197256000936161613248519730442651998635946.4043085323412897172498394298507956 0.0877049039218538916613538730964629 0.0281363805192096853000293735869386 1.0285397935420929193745729965751986 GT 1 -4804045070301131572204.8258202506196949995190598217329969 3.3331224157190091434128984701762435 0.0896556644990360897414187936809291 1.0939323603825332271424877321413829 LT 1 -61458009115346801370139787.0099159642019299554414476371076715 1.1555605288051978835124959113842943 0.0440291726281744200495076869371291 1.0450278816977747270483258305035436 GT 1 -39359289570038889866847013028040599286683.4227380678235129873367051848641657 0.2347950839418410149355259167818792 0.0507803549953456712730324274817744 1.0521150582538967727224584806431026 GT 1 -16355065997896199646590.7741442288244968541072023389168630 1.6186694889874070814623398008052063 0.0413138667381603271215487039650141 1.0421915431095191826192778885518235 GT 1 -5601180201402046.6657466738148959404839297762128383 1.8504663245322301974105725266906206 0.0467574810143808870889872316366318 1.0478859281791465225068251928176408 GT 1 -417.9787771880573850599493759581152345 0.7583855436268434047847989444447426 0.0127261607217670526953549205276075 1.0128078319524638816305216167616806 GT 1 -178.3210561441619329286450442345735900 0.7482882961714998441121287120014075 0.0052793195234646427380463867655892 1.0052933043728208839679701112572526 GT 1 -1067081271045.9859410047768864583305416815179266 1.0782391411021668323571361927146330 0.0961735006341877775168529632014787 1.1011178624903086519889822701786181 GT 1 -64879615043759074728899.2717745793441181943547664234321145 0.4827281498223978317149243076717247 0.0575598414295642570365050408756034 1.0592828539086477926718028368398950 GT 1 -7758179709498026109364030350631951765.3399955163852622135389565775133468 3.1299959418021032839044319452832236 0.0829888507347959374331521916019082 1.0866356483860583276476293678439460 LT 1 -43.8872533412395934587947781186942620 0.6013292537266475046308632992875592 0.0973132539128838213599828482659353 1.1023796893081211087203222168179545 GT 1 -495705563858027868513279241.6087936889935626867821678480029153 0.4981259181144353871540552812327642 0.0453519754034643789486923991071096 1.0464125670684690347491595729192708 GT 1 -1338127.7871898264069989325584967090819861 0.3395262767862625443925867898558083 0.0307685492146945968597322910259155 1.0312518403131635472149511177209641 GT 1 -760009816884547.0185040076699110616568875728834761 1.6495165205150669465440333867782274 0.0565820865103037916929406934681660 1.0582459200891246925593714341926697 GT 1 -1127812739786531853727767720472087346.2071756991964198821662619289630423 0.6246272342497174847299036950854980 0.0329235010838092945623438043780723 1.0334776771271326940257466878408364 GT 1 -389212.2360083918231825474610802355346307 0.4963704888265025027977539752779310 0.0739952489041503293677138247211835 1.0768759135760642397909994485720473 GT 1 -7026116711028163996093980194687772.8858463688502581003785537506227291 0.8612756979934714283763852566550630 0.0990613619669550567481136428212820 1.1043181279848497304594267136443992 GT 1 -2725800194698264829432613626497918350301068.9858336632771860844181143373079762 3.6582282905887502537473928889699015 0.0567381677283915418287092000049831 1.0584113760641458671803364545713948 LT 1 -551595.4444731098114333894788342801148487 0.3161434362014201082445902088205226 0.0407821070108307591341746415479310 1.0416370213673701662798031774201664 GT 1 -438.0651120667394153197465213015544439 1.2656260259466788368598534043891826 0.0812036441806428197270452076991393 1.0846907744143310943310315671382650 GT 1 -40497644571539898390325.3310210485580577366204222689199908 1.2537965067048569784647191389853628 0.0079911280700943246980319820620389 1.0080232282595294222568818519088732 GT 1 -296922333962031.3615683013732182242321076482225254 0.5156287476047562189592853552827250 0.0098030120498812839558768426535467 1.0098513779195512052925222816591141 GT 1 -3257021681430291225407862035380142.8320712847277766450198245231471473 0.7005164693507035130060883356222028 0.0324430371736723420420563239640992 1.0329809795050600573044458777979545 GT 1 -4132738493610.6452644749599621178093497781429084 0.1060631286192020946218183036778993 0.0096033256968920333329133568515730 1.0096497349904925726548907332163139 GT 1 -3.7092660702731608515802637648241100 1.3228235446045527067518782090719837 0.0300483757035782263074404172220971 1.0305090805877100687562170347526844 GT 1 -4841489957248787433.3197643503294787209422050287364959 0.1600639395719327742500825938267902 0.0577371635631770743400590764477115 1.0594710237524966918002483522929578 GT 1 -276555241100597908704937928123153342017.6491843874975991549590704519211603 0.1028224654697213789036964964374339 0.0254442737358022140766968866531628 1.0257735772013556843411318913559527 GT 1 -59608871.3036733863739750596899956271240936 0.4392587818391662053896483960741717 0.0052010849891704443249867007379639 1.0052146577140878153742987854664122 GT 1 -21630404313941859781072918591209880400.4951418691977732484997078339497121 0.7508368832624412222280377551177096 0.0491997257916585458363106100050369 1.0504512550986414060945905822130553 GT 1 -6262384010392963188729421525344313.3484336399064492368978391010886753 0.5475433928125604183537507666139103 0.0725968094343589824112976133971107 1.0753668666968137709320409368311055 GT 1 -22231876444737334227415757779905901059862.9984250196051172521109224106385493 1.2647754645376479178649712144879770 0.0679879595536094458478316634128756 1.0704095454460991313339841648988987 GT 1 -324571104499.4742047530460403150310020952258103 1.1269120847984584135189320192886717 0.0926537226725107016129982373085782 1.0972311185661378991555949293651111 GT 1 -1581543226896173347.0278650563376911285335622338150683 0.2475666814498089680397409537441661 0.0436464169578679168216052036222338 1.0446275775722473841156113063874397 GT 1 -2870817827867841469008.7316786632154986369099384139414356 1.0967436968044374296451432402523994 0.0486444587574660632462264876705180 1.0498674259028895691980077783031565 GT 1 -108475.0452079966349569998823948756691804 2.0428168260556122956278587234617202 0.0368922765618580470182350786910185 1.0375900110952336760659344498597257 GT 1 -268136964.8242120589076954798932332131300594 0.8474092142348407946954066740772377 0.0223127175026142402658681820503555 1.0225654121265684418273946444473209 GT 1 -809587814959773373469562936113440270.4251298373925496127902123127876857 0.0221511448112886036682168365646628 0.0452174087908674967708676242043781 1.0462716176024808334534727041003642 GT 1 -5589396825292723137512837.7557220688878682219379953079507147 0.1237971405030133500205713163902272 0.0687336384985976563982612901896423 1.0712099400452288101241938681905171 GT 1 -10827110273223.2635085339267454320447764671053415 0.2030224136998011912566455943081296 0.0410918161794098504430128648060575 1.0419599502665858567928010275709657 GT 1 -600562369065253503757151167080981.9122042182705849541498913757628400 1.1082542709640598882525087059809316 0.0465688708044968694095500158270698 1.0476880860254259311346942407564780 GT 1 -543010100980.6034968458932972951243988941629853 0.0545669542732421227480505942308949 0.0441276221986024422282364707896913 1.0451308708657657511281511347656612 GT 1 -963231325886068739080.6983373647144395249575584448383635 1.5363734548963522001790252824436368 0.0682180641995856089643737254335362 1.0706564661359155604122205604740362 GT 1 -39033489939549016.2823984936017906310072542621519749 0.2348665361113858491795726524161605 0.0288527072223488253674648674583830 1.0292771303538147205295340916901382 GT 1 -544445595505968059.7913989389639296456279448626616313 1.1456933100005433628112697397624269 0.0106976841503038105871685454640556 1.0107553157584027892613930810416435 GT 1 -84354835466359726483064008484553463029484.4411688533324513365670767597646717 0.8975337517310686888598881108842609 0.0894577748703477947896209921329102 1.0937150051296075961117966013440367 GT 1 -67639847549418424656039021.8889373998650582131427963757620454 0.7702756903648833476812410486291670 0.0297417306577121096800291676271504 1.0301929858709222332739150513405603 GT 1 -4777902393550.6201164421424104227253674260984269 0.7462453451577594374340893694325630 0.0842666646357250190192298873155507 1.0880300752892047995403931973486847 GT 1 -82773857039170031427586741.1142712914264229072758920935650761 1.2456588633372698007195654791478213 0.0996180684556364697847375079318272 1.1049362372939957228821029167940432 GT 1 -393392291183320085162140657432075.6444506929084554798751509198586009 0.4862799304845110551839959667119358 0.0799838958609311433336773157231346 1.0833641045932651253094291751670822 GT 1 -54.5247822107168298980685260006362049 1.7005000955952840492932990884462421 0.0677187235863476121340845708714935 1.0701207111015260846825410582630962 GT 1 -787414311.4995892039591544961914542485119337 0.2211619975170287025274733409807334 0.0051161841314095872740894726733823 1.0051293166127205032149369130987602 GT 1 -19980515894049473.5210002417319208383026296560625976 0.3417186596360628802688601821308943 0.0467980548976352252109006358221440 1.0479284931570672132081891305870444 GT 1 -9645199026772.7385913320504502378556275385248253 0.5738099922033516606835216836678459 0.0555895328101422503292899225395584 1.0571943904037186277848025278300226 GT 1 -9787795754671880241867428833419.4319949669652162684486938131254664 0.0111548032102907442254652253962392 0.0117471571975573051857451738135461 1.0118167002069572414857860744754159 GT 1 -1.3721600956261688137603346398188141 1.0878924942634837212847197596718866 0.0686623941406118546864752207817930 1.0711334403069387689241471822378063 GT 1 -4963715272760044957250709644611869538.6723582881429038803259406624134012 3.9549224656577234439243221354581711 0.0364479833184731961592359233283089 1.0371288053701036647363693012889016 LT 1 -32863600837495406392.9711184386331735690103777502873656 0.6580897521424614229620239121828103 0.0756186716092998986797627986929068 1.0786305994112848853760192876554752 GT 1 -196326000.5291369265435459796280778410597821 1.0899301996280404504244662940602560 0.0145666315892839451389844085359660 1.0146737666378976722621736156527262 GT 1 -45758822496118854322385706093.1347694269301810618619224110801381 0.7376638142093976544167295299650820 0.0604999716246196514230246599968681 1.0624074299259774293768471359804795 GT 1 -539.3184933871752932634730873322991775 0.2186818291910291353087834339319397 0.0671906206731095806500370355196751 1.0695544084119210687188713523749878 GT 1 -12868674109959235613187822253022952.1838635994559603551920180025627323 0.0623990568448227503471778279699322 0.0493422583377737833414060194610402 1.0506011743134676570257576103170280 GT 1 -887200827220676273856.1398994591661682628273314595248388 1.6095076339496968272434930941388012 0.0116679783558576928892494275590244 1.0117365833921761737889989819797800 GT 1 -286.6931064843973372594354160244975245 4.0455485085799123342727164701520930 0.0086270959879166830915598912787680 1.0086645248039791747592143789232998 GT 1 -6563184651274914447897249269233822218442.2015130492907990368635273321839591 0.0967260990121541743247774136144883 0.0201772967487315931647034995161422 1.0203836387343472390232207882325609 GT 1 -10009388231773095476861003.9095516195988782473819936555396919 1.2374227158713449734517419972134386 0.0920132733921119931326418575198748 1.0965255187609428496764528116924343 GT 1 -2000079751457930527866.6711005769613942428176119161271504 0.0326639378681950752734386546077974 0.0573785615752016192831482726077166 1.0590905208249857825938265561099148 GT 1 -80.6513525917850145761518197761764426 0.0309187896406186137262295145886431 0.0411895381912611335320474167812657 1.0420618651248040681506639712561764 GT 1 -3964604.1904692174355664831183256242651979 1.8886671647287919023647748469846540 0.0309356848639101303727966011808877 1.0314242966044770841735928799207053 GT 1 -15726417817485586492245635439910.2233147963135439029354993554169038 0.6856557596952052874074846154721239 0.0172229336768933354701413434367403 1.0173729736469532818391234255343524 GT 1 -231646222130449662938455.1323945834038029721821157775398174 2.8040180488807752697036859490185113 0.0768270758247540060842614486647720 1.0799387118914354058807207319178531 LT 1 -684241972270685001856992207617.3721892635041093721186826152391190 1.8674443024090298599386406286120967 0.0217070138261934715962031571130827 1.0219460769466758791824381481378598 GT 1 -74591450876892.0723701260294565032309952974454852 2.3216200009122357449598303771271852 0.0072595715962538813365782000395070 1.0072860505143636525154662919559397 GT 1 -55868139802640408000096646120505702147.5652268420511965787924339841923493 1.3527401193543047166185534380970497 0.0758460574533940204748615501604397 1.0788766167297704486016576584781656 GT 1 -13914246493347.0938528829032971714846813016716680 0.3886007226728973008936149578273412 0.0807184120844511398657699561679755 1.0841627966872520486802497079320340 GT 1 -9390274325528487157382407488824.7571032503474236345706102500408855 0.6631184070740043960478872051863061 0.0267322557344213156349616620551741 1.0270960606869747837040219974130084 GT 1 -38358167075521741789136797370647787162404.8881183760491388588895055011077994 0.6781910009947020854595127375578434 0.0341328745029553556124160991048526 1.0347290054759545908521694770093780 GT 1 -4629506245516640860655.8179920606683503571943970806952473 0.3191346522811509201726773297688115 0.0293648909886396669208134399582039 1.0298046701828885400054693196876286 GT 1 -29228380963.9565180112596962264377755130608350 0.4529451572802399041359070028452570 0.0721076332029960583431937910453494 1.0748395369775597578757192293723763 GT 1 -362483699922179479609.3387751675672011776678205887257643 1.0131649380671823279457454084977233 0.0868407673459368601293744443425550 1.0908450076203401428454657939378422 GT 1 -35572232773986.7783518088915090632382776755965112 0.4182295177546105925606617904789138 0.0622880073733830726271019502378340 1.0643124212316900262931626209921305 GT 1 -4141183884950464652247117236396466.7444583680971050902835685979594544 1.2333998521324889434560933877656388 0.0074596563712852251857639095132787 1.0074876187545113205845993060773230 GT 1 -7912110708940.2223395349130882204437361852180157 0.0363250727509549275844963660359418 0.0308336852906596359163389693668299 1.0313190464120861116536722611132305 GT 1 -86625403014.5074980674688778497047651137078214 1.6712974917577858486439101301353839 0.0264895536491148727934615020767999 1.0268467235126283127972281568571562 GT 1 -138376187.5887906557561527599868276835339967 1.9245419263295578746103746618017063 0.0590596174127949888356174275648522 1.0608754967840227591687706610826551 GT 1 -56641820050172488.2509791921916084995289689272798414 0.2740833535714720522355454182337414 0.0798453889619214806386914730383307 1.0832135675826183795993642727969610 GT 1 -3.4331363272113548020155009699208295 1.4333279293723520892642637065273099 0.0141630934612930732989348912719822 1.0142643472510628325727633377351676 GT 1 -203947241369767375124006390782792240.2064718513589090093447584006543506 0.8832339283544778330974027499404526 0.0150327096683354163111708567094042 1.0151468461465509714866550093041262 GT 1 -94619055624638604.1091451830009586558248683888749218 1.9523418087171923672268535475835805 0.0258644413343677621627314666657240 1.0262048077490838920812229896434703 GT 1 -150291826413050981467.7386815757538647471744326973304187 1.5514143029748708430949401522873789 0.0994240568788285597557221239183542 1.1047207835287659863379005646398557 GT 1 -2321658216750201369614261713.2938929224639024659577174844759729 1.5729761654324342688925771729279969 0.0644834669522123414460131630347266 1.0666564604708837246246297582603678 GT 1 -524368143714729601216.5063786854065721216392350683306231 0.1937329842829164298607453047579469 0.0520485265305162672240073870470695 1.0534519663606115764510638971808507 GT 1 -17849456.6963120802802100455115517131174100 0.0493280809495903082428670091211398 0.0995363858090447742914678856568056 1.1048455214112914575909200953117130 GT 1 -12367480281748.7441860964612020912093725050311608 0.3126114197308818051292750363156075 0.0797118281569511099243941500309313 1.0830684277212250807441652740496853 GT 1 -23691825081148061048258012012218694284570.4391674860375386771077551799285387 0.5783055884612667312612615128588978 0.0442429363239249697035028650060511 1.0452515157177024014671495040484285 GT 1 -466476989014655188706790493.9571798550161169077849660526064829 0.1601553104644742714934962223586261 0.0163295097137857652393151925428182 1.0164643056058676430725949022859986 GT 1 -510075608185088800962934.4479991130701916914198273724009266 0.2577317461742126156857316002438774 0.0894322355594147325413411898807517 1.0936869570588364687120252490516777 GT 1 -260934900746156639851082332647.0746473506986228737601264068490197 0.0206956402411926950162745421298999 0.0044206851390340923024008009642708 1.0044304852604157038928053595682768 GT 1 -85662029010545120966888084134961815387.1867154671592892265478158258599863 0.8316892322657829718716490681675402 0.0337317728088216797777342441271837 1.0343138154124452894567762646794503 GT 1 -26833539575972.0314054863290562340414215078244347 0.3679889475753135895585288922720882 0.0077439208086574273391731692631621 1.0077740606646715016326865390408571 GT 1 -67141630.5462990260204337186484908473525561 1.1074837276312357724437814757294579 0.0067844036223055686439512846540215 1.0068075223122419878464943416346612 GT 1 -244717274757422541347105886262583835.3872397023964321787563044790511546 0.1881767150757404363100733634624145 0.0926618714296004023687392369960943 1.0972400994744030182332389567878052 GT 1 -366507716633794173282079.2484736261221859957692385831285747 1.9241700263086729548336432799028468 0.0127287403776853293505771326338071 1.0128104448640856161848255737174368 GT 1 -4105489567289242.4973002814476648492859035741877116 0.2190872340631702291056021786787090 0.0166776606579976415800165703654345 1.0168182987090486845194320788310689 GT 1 -9269310869653220110004661.8838145159438270128751952314005995 1.2738476610792604150948765633051726 0.0530602167175574222670929777458277 1.0545197746367487160151175751342287 GT 1 -61412582937543542068073237423790.3152721504042297070057092310777598 0.1504810765128093306383532147509732 0.0558009658898941744615031906683649 1.0574182938421898428391824674700750 GT 1 -89537881271082708242866320396.7509467811971229035607271856336413 0.6970344103758105635092166496828316 0.0082552758828308502401971449340689 1.0082895393727886783302119716770519 GT 1 -463138585136579298432182507516.6234016541798054136739913321915226 1.1703518408423379292477158925597806 0.0289878552370323158636385000380860 1.0294163032891456854202457050544784 GT 1 -16798732147504267108527467638719319552418985.6148121806512122504749025191460644 0.8550193958736157715288782375339986 0.0219541411732671504630408776945723 1.0221987196307586437911524176931627 GT 1 -5962365735265.4537988107708823758949078234665123 0.5911423342737360713166740969742510 0.0978364534221106410140156494130754 1.1029594598586299795906306734327313 GT 1 -221904685487391958755863051492977000.8312900378989810711450378030154125 1.4951677956794084485324687966606119 0.0413060072291685154585236806357314 1.0421833449344310553514566999444587 GT 1 -25916720213307802701852006178104849.2366284690915396270464173132591331 2.3426797786600212537348155419859217 0.0032963523775470600065519222639169 1.0033017973159620335482336726523115 GT 1 -67790870290699641723631604761836211.3945800198464795254829474895735388 2.4125222987530148437350006400898026 0.0212681784224587039937747038673105 1.0214976049504581730802693409869239 GT 1 -5826343.5511748246592154202700194377507277 1.8327685355950130799539560337689444 0.0717262756076258427564005420358043 1.0744286280588522202161884005009427 GT 1 -1171060.8756125220342321576453446142208987 0.3852556072957814430613190845940157 0.0820699872407925630486888142937203 1.0856341300923662483716199589781083 GT 1 -22709027076626.6012251893524280316373817863477114 0.3281509252351277330179814203176548 0.0728491800259443731749321698237700 1.0756390298063365434576769931336206 GT 1 -4330137092654236811747906534899361141.6648674783006592529842151577518579 0.1440193807158244839394696610380840 0.0873759650360989558735243513759919 1.0914312740354001010811235789275243 GT 1 -96453.7180114812186305402153223581725527 0.5938080901328550035021472149539254 0.0775870683335138856283376006519655 1.0807622905391712880662751626407350 GT 1 -100930.6910100791520982786191323971162939 4.2209054614172836483650573235513543 0.0546541106231009222362564420372608 1.0562043979529032102765866147657439 LT 1 -34387.1766360752519927248598482924404484 1.7875447797908982463976043151031309 0.0196463547536464990737659514074055 1.0198419099164511668820802595601077 GT 1 -1696639809059597572999.2327738999082116133933534926041909 0.6546409859246349167345147159530598 0.0448361265575143178711055264585827 1.0458723579944502105409422965194818 GT 1 -4774123999357268769940768.2837560344921820631818973485777465 2.4293778324421468661297631733673081 0.0306659478106972714338799120635468 1.0311459873987939345870233838352227 GT 1 -34361506249521817090214817764937944664253.6612041154639786229345093426390178 1.0229985359500954041969697204099044 0.0739456870766184255679780953060480 1.0768223927910022576859594469737918 GT 1 -1600260123252061126362584452.2334266504480604103476019563903649 0.0848928167601659260737479792647993 0.0111769283792729183486982960782096 1.0112398596011553214744251183222983 GT 1 -53281.7822744764422868172673655363151456 0.1653327796100510661993566289005374 0.0749007615461095282945072927331000 1.0778542624092993148189097657038588 GT 1 -50463262259170.5464019608039475878722534163954724 0.5793711275070683599896270951509090 0.0656015340688395898335296915811511 1.0678523086784001307538028381630340 GT 1 -129689629915680411252483544.8888198661777850118120456009947727 0.2404943101906096366453566544623896 0.0830652764064780098212325235324616 1.0867189939993148215320843027922826 GT 1 -633821279182116181357038433.9645816705457245137189795662613515 2.3931627415918462211266384031723382 0.0500790747698202874295181143456078 1.0513765344517193785881304771140304 GT 1 -26089173673031.2802148164329059117999668305408540 0.2316815094073290558794478223034827 0.0914545198239704350385390946892739 1.0959103316657988167498702071173284 GT 1 -25814168743.0730453906569772884283335313029283 3.2380649660636851544300962973334407 0.0761839443508037292340514937130957 1.0792423011310377003868881626612611 LT 1 -19249321521333779261618056287106288287681416.9342154823978456783447692212393271 0.2751053114922330431262083414885299 0.0091673065740547958225486975688832 1.0092095849129916949505536767293405 GT 1 -6740091.7403344110565889303596627659312512 2.2541342199404405447284030820768679 0.0577973877084427100619513907981893 1.0595349401754024842837263477180568 GT 1 -241.4650863042127710644414545098689163 0.0532407273857824479358927135644863 0.0527353349693608612243409149275197 1.0541767475134922355477160129048762 GT 1 -2636951394414837095656657190368610054809114.8788561787961890802975214446918399 1.8224464841493515129549959870678049 0.0926084680881398239261625691866642 1.0971812440507672991460690271608464 GT 1 -10.1957167481578977039965061559487630 0.3626344964840262246847390578640809 0.0380217600529755653536714189336026 1.0387634481699452176738293649936701 GT 1 -29963845.8432360323984696483901885180518998 0.5156310654038804285992994052859280 0.0170473566323484454981941751675311 1.0171943356133047774335083424371310 GT 1 -65886615023268796128737062871.6708076243174801999206193291055664 0.2881793537092005432403827117464654 0.0737459308610690087549151211688444 1.0766067092490410735708033973658068 GT 1 -43520846440711632.6317272219952245609564800743500713 1.6403607106050407350340698553170924 0.0355214255750291613408013918239459 1.0361676610614527729954152108555909 GT 1 -193005663033670697441339663252029.3166857287229352069731485118927010 0.9483680581170377309090158888659770 0.0646596185926000740305473336995906 1.0668447716555042481001605830588735 GT 1 -700272544103017.6691507672072232704357382901293204 0.5194847156380793461722218320699699 0.0545223560376863979981007910713113 1.0560650358354928277631351486356594 GT 1 -11001840773164939270.0696826271433527365351212061390674 0.0368294992251660521255613117546522 0.0992457145901288283678526429465819 1.1045227717633964790352424006878056 GT 1 -94494.2743930789437529912971707027224936 2.0219736264527286105729235974790756 0.0997656795446987306347303115661418 1.1051001934831381912496812975399112 GT 1 -1624.3719210164001425479756974228122654 1.1010529414932818054125375233451182 0.0518465556605054212208821719740813 1.0532389287076022667941968637653626 GT 1 -665240267149300207090633985841492.6562413272597613517125490170029943 1.4749823482558139076868448778796582 0.0711595702031516215872512376169760 1.0738183204794434050050870014957642 GT 1 -66414.2479907343054723118547692736308114 1.3502583524123356046023490202272203 0.0816927711883557989779174650395780 1.0852232724436886033247243814929957 GT 1 -4924996300164404582.9847789220646907829510986931600993 1.1182514020906301993786380920890646 0.0493955382887908720859808941258721 1.0506572212394902756591073761063735 GT 1 -100297791828.7155294856750313639179984982595215 0.3827397089831029441928815374094950 0.0774776158348840332756695511047506 1.0806436386842048442082316056601400 GT 1 -35549808451191.1572963358259626467585875891120313 0.4102371874705135550161839743350590 0.0620372029950358378750884822605900 1.0640449928040879800613631130296701 GT 1 -9422411624997879945584996813340048.3587522005127184069837773128674659 1.2727394044898088358639560528554417 0.0320180877298595290325928266010702 1.0325418775514818558662369783290050 GT 1 -248123769877794247390683017.1049349606365865113276848520286601 1.0806685474472200047539024623377880 0.0219997266757524925168910126454144 1.0222453294747130564762264760318661 GT 1 -1533453726822079235916799748593829453685.7919255703943746743995436228698888 1.9556434891076431349409133559332198 0.0053267140624054144708011278511240 1.0053409515857408734373238980636623 GT 1 -176937.4551478819269697862936850633197671 0.4678261403709857111002645001720333 0.0717096749721183877569281694836133 1.0744107448778080959876494022505971 GT 1 -273431823597085905952620251727826.2158491353883086399406048100313318 1.7967271980469717580177798556737131 0.0421080453425618681356840886263715 1.0430202895664074528411655035228969 GT 1 -39493671218127609975768618341991746.8246823431211772175112060376612813 2.3604603060590010084359530994943279 0.0971226457105573881567993115267280 1.1073877618892756328340493750727672 LT 2 -903339098639356.9867674662393947968971873371420244 0.3928937201947611379594928951935004 0.0891842057433394606807482905734684 1.0934146038618131718525999711343878 GT 1 -119206055.4003250356318531248651834604485706 0.5355663630530651854723953833141146 0.0607294186631553118664161202834617 1.0626516822455424284336558218908110 GT 1 -28949.3009678957994436123871579750815060 1.5757789290335626202269528502894859 0.0273257238517360003445375100874790 1.0277060152791349237631257437586531 GT 1 -361852583091803239310449767100.2131395509610370427009925915501928 0.9173195851555444678509162522802168 0.0147599167824630996032752632719399 1.0148699282025031577713364684997218 GT 1 -1136360182568114764713750280.5325515059381444976293387314237249 0.0624204850484500745278441956571011 0.0845654213003279069087343279885222 1.0883563770608327663998029259922073 GT 1 -166129.3341952675134249183625908638653002 1.8550653401499356978795605197609395 0.0444908957300052041354413582412878 1.0455109870688202480494361342732847 GT 1 -859398156243278522.3903584375746858977752583155035926 0.4960965285367660527139925050129289 0.0473858555507971828868827462828680 1.0485453424690473579164474614356488 GT 1 -7429995379427324693229193141049398754824.9319040786052567201261995250526892 2.3044033459782915453756597803628503 0.0482986282693460404540242344774870 1.0495039785571277782278108072196652 GT 1 -6.2418641113529836654052867159286583 0.4161354362953610492173865024076725 0.0741499878093135322126650704565613 1.0770430313312911313675990052264094 GT 1 -360991918199.0273775340824023316541425876587606 2.3425247948418559066533325659841589 0.0224173921051419024337286299639264 1.0226724813379770633551516655827229 GT 1 -331.3119323236949629796569714869736824 0.2910340135095424510655898422057891 0.0271336443641584498389467735588970 1.0275085591221535191685263997155339 GT 1 -1094955250195354844767671867715864906.9176404845725033221026797749632639 0.6211992617208931103783560121027998 0.0227888779617159872742607586197262 1.0230525581259855969656417862959782 GT 1 -5587678148965025.2337908510838662694452996825762957 0.1682089642823148972655008878682450 0.0236332642214468255322607542394473 1.0239170092753827417085320451448618 GT 1 -23097644217.9467561512982851965292666656586653 1.2446343302954318793882876179207358 0.0330950320394304709725055790611915 1.0336550634764941158048997183394502 GT 1 -1439756464.6881407333583842398553667621587028 0.1773226457529810091927033865290429 0.0686002054956973864051096618919672 1.0710666690648673622001856159751341 GT 1 -324395278125109755866456065007845359563.1569966361233415621061798778162776 0.6970159910799993273195853815548776 0.0517805801903876799014363218918112 1.0531693480134343375451799240548020 GT 1 -729102535541513124093082.5352797102073875182186086235905621 3.6814030599325415869040968111807979 0.0605653922710484474928022505716087 1.0624770658198485131390998649596522 LT 1 -34019014605675688.7218989210851454729422996167833365 0.8047022810690385493706741860897494 0.0327297261579392088688750670449055 1.0332773253295674972677816026689352 GT 1 -6714091868715528127748662931315691964520.4442838017016207491792011840306869 1.5340477107932248295064284943004129 0.0843264285421592226871678363897136 1.0880953408576951150494325976267216 GT 1 -12139179282044093910515937571683424347115.4151571529217712387544724305644970 0.2829020314101805189692707676833291 0.0437117559745652251627793784919066 1.0446959008890315855880288251166932 GT 1 -16984077130228310191738692033.2373682802148043182250407856629370 1.3784412770061861911658066095554216 0.0099507626739305493804766325326046 1.0100006024174318501159760905148415 GT 1 -1258013583217482515845940234135950937189.6644016954362334044550946372663517 0.4587424307267616932455512844419673 0.0256906254638285822692288072596030 1.0260263927802660367293316576009695 GT 1 -1175658949115550852284970472065.1496839294904567615804449596284186 0.9593058174387162105979702691951607 0.0582603044595500013032153119236424 1.0600263742904487061872325113524151 GT 1 -250937.6450376755985424541745946157659743 1.2193680571873360228913969839534011 0.0566864796706238949743467547976109 1.0583565804179403566579181428543082 GT 1 -24950.9990001797038960434008285907492460 0.4156440515294668028561827368480052 0.0080028278013627703689920562694255 1.0080350223075397147792852950436692 GT 1 -5895025481902950954263013.8205834960366226855417625009016419 3.1306822371637593399148542866413919 0.0486485729062349453418124562483183 1.0498717504245708934250932030477716 LT 1 -40797807650073606.4109860827450918451786674596904682 0.9496117142003246199574043511131652 0.0306334047146224400691954842255241 1.0311124153296658017470391301503513 GT 1 -97.7303539764393551405053118184605052 0.0008568503103470978678297145057672 0.0662777882001955830592913523691558 1.0685763027639605737717414025005263 GT 1 -3837975.1846732220487430540844679038850765 0.1370418614493727468169355428144768 0.0988708404664350491254831902854192 1.1041066803340042650207480592725705 GT 1 -36454238768022.1550340760958917921984772889197837 0.2516493014039969768315642915337892 0.0073753614904819846732241243235882 1.0074026939431103973239902613968893 GT 1 -3216822664235418393526931393718105063081.4724547530508486067160030948956078 0.1633748060664347826429818507640809 0.0148506517293671748381581276488671 1.0149620266938147779574321490746827 GT 1 -57812399209308727204154478650967009937248.8807240823278530942531930123130144 3.1645999715081872875608040298280496 0.0341965272582694653459727052530101 1.0347949098339700671566638404834542 GT 1 -53098861880109.1606920079462742385559960484689877 1.0253036109992220077260124261843700 0.0352673337971436872577147628315683 1.0359042458646057769755201575196328 GT 1 -1459384163677.2052107599033085480741609650010147 3.2282546229789415677731367793589269 0.0306806398855630450323373749101421 1.0311611443884578023456341671629281 GT 1 -4245848797914112318.3524716010080005713431215742700338 0.0208448093308457548898295049990666 0.0678047876735091068933104994508381 1.0702130309433072769225791822755370 GT 1 -6.9923681205189106290623657778065959 1.0974370134095797996071138084088210 0.0497329574900800547558046993616865 1.0510122365091534900785307652773325 GT 1 -273318349140031908954380951.1150071152351679692541029818218515 1.3978027526232094977559361594795176 0.0971879594455551512570184417536492 1.1022408972264461451599498780103206 GT 1 -5659477.1422483314544945788077259647871782 6.5922447655658622943493065092669669 0.0117376425305083285600999938863479 1.0118070724873750788320670641228675 LT 1 -275299995159079221258223447836082125.3761702072320386087818614460441298 0.5328361660868132849309900429215652 0.0451167227544842198812987254053906 1.0461661687507840153738685507384501 GT 1 -9873181298881518439068.0333044027554654891326053123976313 0.7063983874947699202822648380644975 0.0208559020134637877722461059810588 1.0210764583282755896228879351610310 GT 1 -6581486433.4430158722838418233471764479259190 1.1083576410934892808822890323601722 0.0105253086002126905223538290467178 1.0105810914270146363762901626268713 GT 1 -286287762822404829547.4243380119135083764890285825515369 1.7158956245842097054745281622528723 0.0870269602773492810779607185885548 1.0910489281521374421474030248893650 GT 1 -68186772768607.1334211540647251290099004807349990 1.0654229253045853144636662096559455 0.0164275617649848809806657004651827 1.0165639903472473127760316312396069 GT 1 -545821028716853111437534686813185825904.4327888400800783256478752532207812 0.4274125347055999279341892806149447 0.0947719841020565336389937972390693 1.0995684157481557124163979346885897 GT 1 -226919157532340.5786162541390155832405163497758670 2.6479425807007948756198824001028982 0.0718224519372111081221875086958293 1.0773097686379898132016115225064240 LT 2 -49340246046652276376.0714661914275109910630830521158453 0.2765027811242805185834792277607768 0.0505893244877171509446907870487939 1.0519138284450089296035505849105927 GT 1 -11305793253419.3139586667595846825011063239273441 0.2202400516673391536203491938148430 0.0014041881652592961733764440012089 1.0014051749613341125009540222540458 GT 1 -391024830465179882394674.7471229925459774364800982163956569 1.4958007207157576756846956920337705 0.0426022997797935772963566224794270 1.0435364041362787882693677431791649 GT 1 -21.0608857911803624840957464373717210 1.7150484894866162920568589282108171 0.0900211505128378532729607793846728 1.0943339220631481122454235263245510 GT 1 -359218504515464051495321333.5477959171065389079467297401263486 0.1144701750210763977660012256434169 0.0818565965512994647384446905172884 1.0854016876545310529550566263770997 GT 1 -10976542992347319079859269974988391185661426.8146544530728170660608457162747265 0.0970167052834932317469105394986610 0.0227849277628820251536683917083328 1.0230485158154132788079432784371033 GT 1 -1389545698079611420489312749977891671.6624206979982692626823269063217255 1.5987062080382346499201243610369922 0.0962638517497815666163257076071501 1.1012178325973344853932776626954859 GT 1 -746557119738449824181816470821346214342.8023764928381117769180596818297263 5.1749043720024012723119019970776222 0.0089278383675146013600931066619046 1.0089679303178234668665078072526773 LT 1 -7168244666912404202544769892105983.0127371385871931406997397584461237 1.1748009893892211018979482878635613 0.0426059031201934729782760898954657 1.0435401678252661311858470657517803 GT 1 -769675160150150121024288676253.5975881624339656707734146368684118 0.4983615602278038890159994351738536 0.0915596898551374134806237914715944 1.0960260948510088170260962506867329 GT 1 -4640425863491885.7928266930684096646652134389739214 0.0121081630631884235550268299977616 0.0807096018240449344357548027444747 1.0841532128793044447328756567517265 GT 1 -203372.0266498792966305265909590396226359 0.2250551702327950203443178611893056 0.0778965138861640998592924072391436 1.0810978208197049018764560069308271 GT 1 -5798345962075669761373.2618737197441155199924110062547137 0.5154342097820525256057897705399040 0.0548585256409851352070676240432870 1.0564206543771481298462702639688114 GT 1 -89638971.5607050988309621722959067919618525 2.3967684193914829759529959804588211 0.0532327016163800900564729230686268 1.0547019410350999375826747156064282 GT 1 -1216484390320.4775805506392255046713507296410337 0.7893926979880013389599516251887584 0.0255280324773302375176028106177852 1.0258595264588717195470795420286204 GT 1 -906303034.4378938677871457256274290005145610 0.1827545148581427922494671150017078 0.0302469035065035004706425008015528 1.0307137795828619154839054557041784 GT 1 -554236120314125973803234.4528061238184168153034241975786720 0.0617653181179584053632792360278746 0.0348500978217360026619856651421793 1.0354718506621780830735076794075858 GT 1 -766519661129875795495930.5846374491428131776690659538691640 3.3421466246113842588869376313909291 0.0709179681531107564428981956484302 1.0735582428320813580848789595064799 LT 1 -2195505575963528985304200172206765.4107425285282725820131130608786643 0.6852750974057088931180338312295533 0.0619279832847535391732812735857397 1.0639285560411804626267882033700658 GT 1 -13163805232219630253529101515.8382459557766508386583241439996249 2.7329533187330039525665091287454713 0.0954963020945085463547792967679115 1.1003688858129759254925932083341557 LT 1 -130898987071421751367972816383.3164240367241375904753316111576120 0.0336319996141705954845324861210228 0.0944871282842554617599654599354466 1.0992537867229876440119827423369205 GT 1 -222907270056851580754558972181643736981.1942647819868136686386368579931793 0.1443992744932780350788690439298042 0.0396664894313628321064815389279451 1.0404746480097090833116771833019523 GT 1 -61435570414.0637522710662057618970401164766180 2.3627401417476089050715819204844199 0.0816268376383162758430884901021606 1.0851514760109671484901662234999029 GT 1 -10214919183858363991022811660912.1727236970420699244143066834190644 0.5691651860689200548838071535960443 0.0748473027714789745217284029533857 1.0777964770087120022101329674428197 GT 1 -3590009057396423861050700256.6853855795661449443283111571936754 1.3112920110150205666208515712774662 0.0402761115190233603776219527775561 1.0411096520553663755190647420813117 GT 1 -48842346452658133968.7614061790785090255297074555130978 1.4602785451830915563814354529463000 0.0308803522669104996845987943083396 1.0313671992410949706161139393664369 GT 1 -26483591843065266562697422767325.6941900156065399508357669292573886 1.1318662441441374206135131099154987 0.0607351910365345726495279827260695 1.0626578278560101196028430785895443 GT 1 -17482325319153407318004029543292237.2396440934846724543056821314403654 0.4468007244995320588177880171545037 0.0541672660441992727111813188822713 1.0556895395639075923489278855576227 GT 1 -3041821136201752075534781851.2781703041951223169384004550251007 0.1041168332202459898723512994672779 0.0285309608835914397275019394111821 1.0289458798269691021469009266001473 GT 1 -297625350.1622084784300037057053945036176529 1.4060673146365244630990587822751231 0.0134799283417029805515777483916424 1.0135716073926474925296595225492724 GT 1 -3959321653433552667291251523083922348534.3642922011773864975021891908173623 0.3857530421071225912185251515430535 0.0777449493106685870769945052980292 1.0809334660342200814734411811722142 GT 1 -3566242630328784249070054.4746241336903729958676181794303483 0.2157232241309599592739370921076069 0.0997150948774862621599279127460275 1.1050440045055286421057971307123504 GT 1 -11102727831051863.1669314669116876875882852979471217 0.5112684071064985828301723892800838 0.0755394184206309298451285538830946 1.0785448666200817746938996044400288 GT 1 -11670770750862216037001.9132874214156734793204895006325806 0.3394479480267583237164471487379198 0.0947870855813304978078204400024155 1.0995850984015595696069658629657119 GT 1 -264722.3464880209096082593856643762004037 0.1333546620449039879318026615784212 0.0412209222069294245345754954358762 1.0420945979020986398599631529643289 GT 1 -539514425507520624558491285923699057.5536839819647156730361539786373192 0.9575339898892332666902590157566395 0.0653769080439730647532049107104922 1.0676119411716690041798937842530802 GT 1 -13224406223338573710859949313700625190.7452859819646789278799160979149297 0.2756666407876246666923068297001416 0.0639848801212352185887059611242513 1.0661236489183858404075907525172290 GT 1 -2968274289773703859048797816954075665308.4647128150118036945123872181615239 0.5988319399053959119907809469529868 0.0744702292659346663397086962025817 1.0773889802962399867579730993818743 GT 1 -1043581257856129575567666853.4406456202871858513025352230547324 1.4076999381754884166502180446834640 0.0743392774522875225957080856017384 1.0772475018105403085379682791756763 GT 1 -161442104460255001019607676194127724.2157997471277158162993081606478443 1.3845576651320165147117809199128392 0.0305499091067084058525560240642639 1.0310262848475414518141525826899083 GT 1 -67297355650.7962018747132389744735462981529360 4.1510622410872610736800638643133946 0.0801150151828817398610015037780091 1.0835066332573977726837257364945602 LT 1 -1315227712964752057.1811084440741270869114355032575020 0.5396762776320753635997627947061635 0.0929183273919950398016664933649444 1.0975227859441338886385402654953741 GT 1 -38275110495151815949276052107096394268.9377936701552871738539820227310641 1.9825958191150094862720130857284690 0.0669811281466481620403564335537825 1.0693298512725281759198938926047341 GT 1 -5068753491.5627458907549957527196051525238690 0.9781736632425124216415251775530607 0.0106418449686616580572264871139328 1.0106988743603168278966308309893204 GT 1 -257679505786099853535754878.9602662290877087199848828192346220 0.9715164875482150564868615652381790 0.0811824209921236429734129422167488 1.0846676757774325711172444826195311 GT 1 -397144553310.4812235342173090688038922038913670 0.1210278116066769777765436485423044 0.0665173769154038560089927122368235 1.0688329309731929149481427734752869 GT 1 -185211662455728009189.5523698558323209226658628763168061 1.1636939911576723391881803448077831 0.0834159073258969002468088255369927 1.0871014617663016740712015821432468 GT 1 -4638697.9979823227431987684640060769586995 0.5345953693728444329746652662144895 0.0991998194751763756914018793070769 1.1044718211917316145456138282082653 GT 1 -1211655392909760678669641174116786084.8558848403892057737020308806045028 0.0695182336587961129018958561983938 0.0739318879623240539229630290623705 1.0768074919247218690036023167799202 GT 1 -443852739001683126820089871407166956814.5435897103727789770346784992037049 0.0931093440349460327227763556234956 0.0367448862105827880781110448312940 1.0374369865987945748785176104516865 GT 1 -1004.1557306724357913100662088864696571 0.7676407694321377302341521413713390 0.0243860421017599121224768182435606 1.0246883057539498442357854050628664 GT 1 -53555760605325.1534634507877468592192621933322260 0.3209876916115825057777277276502769 0.0617315226630938389892621662873478 1.0637191477562765294074290397418681 GT 1 -218532432909569913892699959594771.8717464674677079183699932129629788 0.0146569139157216946578451307028716 0.0171250959091843120888799322806457 1.0172734262507077338042093183993296 GT 1 -4010043785342939548639.6192848614214988472574006822826115 0.9124389874179586993744595417498845 0.0797307030306300102843571265384223 1.0830889376743228676144970869052640 GT 1 -13764621571745627166227215320566717637.8772951898371077102769090715453060 1.5928413237507855012746215594668945 0.0913089453455105532980978006542660 1.0957501164423195536044319664675993 GT 1 -329546681421438261932790.8087930683037072701488768684473711 0.0666338772587018376970554162751467 0.0470118801846220448713068872543683 1.0481528414965313625932724014377622 GT 1 -40.0878605172156471217019841544874495 2.1899338757512515707737232272457285 0.0032891169453255409387973247901899 1.0032945379806755659666879133373832 GT 1 -572399112085080.5051023504884788135574886847537441 0.2778379996474606143148618380802792 0.0792704857531401040379620399150817 1.0825889728896933983698811423267289 GT 1 -22670955860907453654685475790.4074420998292879476604686945988483 2.7427383851977488227626217223660832 0.0352486208937154218135823334858825 1.0358848490694113870908444521493634 GT 1 -248624014006278390547697030412937235.5403693945974961054736201181393822 0.3425316243565053668862716718872638 0.0790349455028611803371181098052702 1.0823331864465333077371507655218677 GT 1 -271618898811.5988445167059631277961402139619652 1.9451852633807240184013801669907423 0.0416432046693178960321938852755312 1.0425351326342872392464625301347618 GT 1 -38965911881016973763650813725182221404318.2379852931833035619928657855880162 1.0153095500005973726230340321593199 0.0006582719553540995173777923874059 1.0006584887114659019714906136680839 GT 1 -106267177738295942616981.7515626634963429689110267698820033 0.4226504250420042362271960586145669 0.0906782579283900876168681719743470 1.0950562957568363527623693731325554 GT 1 -28879482409103966933604242414742975268.2123833781470312198620161386891681 1.9687870918123598754989797522743770 0.0423335602928758664127791965744238 1.0432557456631981520107098284390471 GT 1 -454135384963067985060997613065325246.4287150801789543984221609514831599 0.7104080339893684905310866358103357 0.0038774025568082109548054040926327 1.0038849391700655601028911299236744 GT 1 -905547307845844856940874308.0795927928060852321122185374825854 0.1625816068846653859287137436498391 0.0947110072891414835355720648250140 1.0995010572945779029341207786959583 GT 1 -17917885191582809093581146903593298378795704.2558678540354338862952350379230428 0.0343048314482723940602115586761000 0.0143457931175722477527700373309892 1.0144496888491643181983643053493621 GT 1 -4405130377.9609597747339675091677400325932923 0.0763325854832553009553391290089728 0.0457883664767315498371408139418148 1.0468697940615729095578507139623433 GT 1 -1767314742583162013712662606755.2985929689051901228071065037761968 0.0707516633659528769683751937705045 0.0052873515525518651634160481955924 1.0053013790632068244875802741040666 GT 1 -1784223292510203556586386754501023.5376190615675772472531433063823973 0.0213196639472375632013295295725399 0.0272902631085483450757091837078317 1.0276695589877766182662578984011422 GT 1 -3234.1745470105237333447442762194289886 0.9837361399660003975872349798266473 0.0114375230033799034442725609981780 1.0115034345279548674140943747464077 GT 1 -39311777319325147901759629662424.2401803491144122575787446598439871 2.2873312701703749981858346545069352 0.0798421274030379966546967292479699 1.0832100230118865166390924902696072 GT 1 -31073046179680479012172275220601348194332.4679814861904526266135998485369151 0.5090224151796873749906456620748171 0.0218838246862004750059084950899289 1.0221268273377177394227016284239665 GT 1 -1034247184655688512891056.2789484038854847175540967882167827 0.5268134863603358817992910564300248 0.0401107542589746646785904763250322 1.0409373701955376646515870874278960 GT 1 -1364837714346472742225528127561.2783938458818862297148494605576406 0.8632866231361180959114106605477685 0.0089735745219871506526548064114539 1.0090140795404485035351556280687278 GT 1 -33101771580560250.7417726716567122762165196219675486 0.4611298269440987873049938655609825 0.0690339053717554633988657326385470 1.0715324205978275111836303106877200 GT 1 -670096.2679923755096260624990904468945000 1.7255410190150939188184214150877357 0.0429806291415738199908889284939355 1.0439316465026584302085190571243938 GT 1 -14148643778493306017788178343250.8968579907571691402017100090171273 0.3529383056791282280139606832430178 0.0902204840585109460241070298527297 1.0945529990024354721759584572355196 GT 1 -165602258317682093347158.8274010457286292045061820472871160 0.3649036427608874009192336659414242 0.0678761702553465415402259602335902 1.0702896085893662004681495242471964 GT 1 -2819207368152455.4743056395262528178579880373897561 0.7609237751028518365963649045450491 0.0246828183149912106964678275342784 1.0249925463388675532658275675180545 GT 1 -204732540352192826239589672772237850353007.2235012596044874929197307203031814 1.0448250858704313444061077906166779 0.0523064874664013080021109945994856 1.0537241280146998250780470331439987 GT 1 -755435.2167831182967357582085142370211050 0.2536889464601698589528456390330557 0.0638136781733598844303555580444179 1.0659407605341139172116886468111266 GT 1 -11873098565758938230539050507947381.3113715070644559875167446345424564 0.0845395487457711990871331617235327 0.0052143880758261968755786612772061 1.0052280304423894819371688385968211 GT 1 -36912408327074899953580438.0323802650816455650036094454459005 0.1011148195298775385164960612123914 0.0319734748004491845287516200943782 1.0324957900153381094410105011410801 GT 1 -3301425579.7081797781242549678764940593266681 2.4980660657048933772261254524881365 0.0960269017225125759436900824092904 1.1060517019927069136386854239435718 LT 2 -71108.3978339847891964556719635679975265 0.6066039218845061371074083535774408 0.0935378961717462097821564368451603 1.0982060545940616951338640457599814 GT 1 -125120488.0252520183028874583863374795901459 1.5364219180309898973268078827117446 0.0287082548912565808601443664090658 1.0291283974169852408585598871503442 GT 1 -3340590896958.5964988311455174767094199795934741 0.1548121024805993619047865869500070 0.0145524743454276314419368052223986 1.0146594002254988434427131000728951 GT 1 -1624139703249421948869499781975893.6077620600969561169954819417230151 0.6040379675785008078468925408129826 0.0965210256705475420997379143293311 1.1015024405770805141500314132140460 GT 1 -791986404157246139188559854715069393950.7216158493292933926092219596074079 3.5136510263919457995966003619178312 0.0165182191480621222240703169293556 1.0166561661319936121616081406686159 GT 1 -33161946290619954.5429135231843749213091282669661201 2.0487533393309845321928846133304861 0.0308464083663609875766512592281967 1.0313321743541352019561375405791843 GT 1 -113571289207247335140275108932311.1453170502468938517662818547551985 0.8810378412168916795966755628681937 0.0708054610562822119943080335981003 1.0734371552623035774840172752782517 GT 1 -3115193792472949139853943205553607.3626103705107387551926058905486924 0.7615122069695606540794947177125607 0.0465441049868265719828241261805927 1.0476621108970021932219663008992770 GT 1 -6420.3166730682709043846800629884344529 1.0529677979201400787826016223496654 0.0659331422242271528321480217959557 1.0682072611141363357194539662590800 GT 1 -72331096124662448019.8707099615305742034985602539493298 0.1977571217596950347045553683677420 0.0554393933131337781568919364486658 1.0570354260877468578090736150105371 GT 1 -1750622595004783011737150491965088307.6571353873863802876190378364146732 2.4347603720101249541681336910391706 0.0631815373646547959848022268592777 1.0652657586996809149496580461039718 GT 1 -272.7731850054881885331669816818047041 0.5903638367967462680127215695732824 0.0186043097115005438198736800893428 1.0187795467273564342389655183242866 GT 1 -19296158966477536180229.4407249256275458490621644690852911 0.8268048577909491031516280534051355 0.0858427440384009728183977039391226 1.0897526698529193482710967125483728 GT 1 -126138628737135.9763652810937306017115261884795026 1.2803907473992376660175912756447134 0.0916160742661260886441079257514571 1.0960881640483403971773432036852038 GT 1 -547023.3932746358112843389292697111258607 0.1550614866055205086751230476227781 0.0265022843781314009988033500368013 1.0268598007346609216010415245084077 GT 1 -66322349589203029440563836493.2338430210019034471620388856956317 2.0552886601227008392919448157092655 0.0628589675089825023902686887946901 1.0649214931382351223493920511509727 GT 1 -11.4103900006503384253400672558296028 0.4962138019864007464614303055466914 0.0600579706229767575050857766391028 1.0619370764953212913772890527346291 GT 1 -848001263227099888847124413300650920965337.0372297674609740478775704762783697 2.1443344563346929483916811338139791 0.0034743620595158672501568833446401 1.0034804116718029751514642577034224 GT 1 -1833264.5825668103134920653836103894564123 0.1363761161844732844749675999461236 0.0491528689135210438087869100596455 1.0504019747977648927047561220658027 GT 1 -4596484111599452497996148.3517750356583506563499580362514923 0.4096097248407965917657841487887602 0.0704453500417921290537473072424865 1.0730496785428561761333213897148578 GT 1 -5.5460711901118999130676899113831029 0.6054565318911075108509782962851196 0.0542371987334407852804999943934058 1.0557634799893010717531300007230394 GT 1 -797491736074979047568145.1017381313381365587916886637493753 0.3963991085553818802710718611489889 0.0546681756009628879862853287935221 1.0562192761923405764292512508484466 GT 1 -574324498.4283757929180055171417774016446054 0.3049277312306198249413726794630203 0.0999522384867737927814008632227080 1.1053074487178721474443379152403477 GT 1 -6852116791067405369893224.4584511288576062888265929289785320 4.6347606269838903770427288554081730 0.0502212830026840025154899304772434 1.0515262509963438774926201793292845 LT 1 -2260207057213556679188348383.4457790897085185656538165729141396 0.3131764451291324089587440406952173 0.0794749695720583070035865567501127 1.0828110864701869558856747412665479 GT 1 -2330676004870036594338610290488785524082108.5021507818830994024875236027226522 0.5832457039211571184639280005818142 0.0470127101061549380626959806506904 1.0481537123593228399054249232763043 GT 1 -1339625932164373628362610633951558512.1325691206676097916502643585983195 1.8854167983521854913703845704136295 0.0569797557517395248119494881585400 1.0586675286594296768983959895560702 GT 1 -156478070.2896857553544327685565643424370224 0.5864071822758210251498331901050654 0.0437375235611950003991070881084475 1.0447228466702395001001620321333950 GT 1 -24301815207701.1013504966206255973981009293841288 1.4154123262814636603219635658590905 0.0984241852960887341694704092284970 1.1036111414789287112789724669462859 GT 1 -331825045123.0961108274917227190516298145160519 0.0772968270040452884828328747565409 0.0030743134187869338047286099792506 1.0030790488281977412710047925272937 GT 1 -65761541183.9910516219235191078883246996946997 1.5869841927316402808428990797305932 0.0549840713199189995924728386410986 1.0565534958843333296916972597537195 GT 1 -177968840877362374743414190760282229718351.0166303965020782246442770063028855 0.1538407214753728978056973163520890 0.0171062231350687599734597062413047 1.0172542248316405054830184389472371 GT 1 -275582375947577687862429619366130220.7662214924815113333759776219584863 0.8753574188869411094771900078666749 0.0177291348018820933669217697371596 1.0178881785211609959216317717634055 GT 1 -21239560175147220527600354784510772216236.5085390969394997652867672346969219 1.1582080192632070407534818815702504 0.0963972617991602803774558239296568 1.1013654640687991292905868704946136 GT 1 -247332.5527459181738043914814081798612773 1.4684920453366644739818132352662405 0.0645462485363713926896136221921403 1.0667235717282910111174114841490622 GT 1 -243053.8909632088996991828550686487058139 1.3901696728986500844467952486353431 0.0963133328765225646796069383663946 1.1012725858364022673577594584628664 GT 1 -1189323585925.7286044811442823924532897112748803 0.2219161348114827028229956755763575 0.0232527760253278674591570777018302 1.0235273871552475916940001296738399 GT 1 -52773367595952177748645772366680.2546629732384297929971253537157071 0.0277895446398208886471924544018566 0.0969584967234746298603978601993319 1.1019867650748114260242128497446811 GT 1 -323679636632352808284924786588095889841323.8377529251838187914438540298045413 0.1683167400321037594882553129821587 0.0043133457150839881361838825387407 1.0043226750274109053501061303343052 GT 1 -836014855620526996043085242968488575339.1821312445587956738801240440193379 1.5402715916272896138811960440228785 0.0356168183515424871253086863564224 1.0362665720137703597248545865413192 GT 1 -474465655230223592873.9529278191800874199414870722430832 0.8280877629765454741106565796625996 0.0276341513264648379139791045658949 1.0280231578135000856427767552662239 GT 1 -65183436251301025754806671429156085826279.2109760248483938391516970769617884 0.3428398447486005514386101654757957 0.0964329283989622546722714512000742 1.1014049363968705188623951539138571 GT 1 -260668398947816306628163376355436.3577097725430508510123405484936137 0.1560582392892246683297138889100749 0.0753265474482404393926577402774311 1.0783146280658161634137966936921640 GT 1 -57137273306930258205139646356062242973.4594250560633867442040179855775856 0.7692166648314570158982478267694677 0.0097179042589144298045569245475545 1.0097654312496569486709452457779995 GT 1 -12430163108460445509031006651779.8515442674041974360104427165671099 0.4839772105280656485695550365547879 0.0687316294868405507708262806507944 1.0712077827573967239952472980568595 GT 1 -21503615646546566775173140.1752528835526037007051686303771684 0.0305011961627008910309160155014839 0.0772269771952672616015409799638181 1.0803719871749544549675111323386228 GT 1 -1609.2272093506885904159579657105466185 0.1238636856764115670985036730201582 0.0725396201435000687334112993091593 1.0753052025487988094900027296820959 GT 1 -703606.4894031027575398468408307114014113 3.5269592409515859309550882480466474 0.0942065654620582233168424632917687 1.0989439961332101139248099992951990 LT 1 -4745718579080303195.9101169768958969165554378424866157 0.1996742665756647902317598975721013 0.0390378614364573385825828275765002 1.0398202687447358682925638795317559 GT 1 -114773879737893.9052684952021636239596925973719540 0.0264424515276267511960951697003356 0.0930929784119963718262948553793527 1.0977153461525848060391412008879064 GT 1 -2183186907284679967366996.2921662586986942536076515971455726 1.1929153613563289479365327107436818 0.0655185233507198158248171618315288 1.0677634739530835881442995266452450 GT 1 -8198792077088426264082047.3252530398835590976025022094178282 0.7630938069821911956350673816124600 0.0160308434028477676082999648124086 1.0161607273427392088946990361902543 GT 1 -249918459061746189604262.9538134521699589744704386608861782 0.7665522320653046147476312679416660 0.0724796679379306620071746918235135 1.0752405633800947060017852604065129 GT 1 -1848370464041.3997764830613283815005989466577145 0.4968632139265686225668965205982299 0.0189665546113261818017097500972140 1.0191487268392435871576701538012622 GT 1 -922255233951.2755045773042798936632053427663180 1.0763670370481458287696160931035853 0.0983381683027982842853874258332591 1.1035157386422284420190835837019834 GT 1 -145223694722823191692037111659815595304.7951449670335652706634182820152255 0.3058640309708372841959315048165718 0.0648517625948064850077851453641516 1.0670502195806610813952795955310141 GT 1 -21287485675099955613745.0171436028324082093750991165049782 0.8306748941137062943873408879682396 0.0938422461740839154787570428394227 1.0985418668758400833461094723379029 GT 1 -19635999074422235608064376167.4874397693163784103607888140821816 2.1314617299943500153334696787309908 0.0862334292232194631846974945461531 1.0901801331695550245863430876988827 GT 1 -799763100263868326273.7740831485029557395431784333519614 0.9289126264566705523503428147136058 0.0079029423420216581822375826146843 1.0079343361022956072235219470757024 GT 1 -869703204095.5486558141279507200246197391715625 1.6204825427001686024957337002765089 0.0023793952038929924083715638479129 1.0023822304630220337404200799364884 GT 1 -178911966955111997957654287460931.6572806195935718125851066133894851 1.0664754631135759566522387663833726 0.0314156368954434511798259900311006 1.0319196929544333932346367842463096 GT 1 -7182796176195635538189960897949279.5092009997134613097973479261567472 0.8308496157372358007673837370160540 0.0360471586581842261324200248771510 1.0367129053381030562822441488638204 GT 1 -4966111217431701063075459420521505.4392776221260494722243479697937606 1.0296619178633932238108738188862593 0.0979891559621352119513039704762492 1.1031287367768519384558541778372220 GT 1 -1273191190084.5653235350075808974117371440968666 2.4081782010991065529578006278783377 0.0020255929647249533852958319651574 1.0020276472527239770332974261184960 GT 1 -5987575581791209346792917558190.0070157670672521783894437769396062 0.4275078046229090333773722894154708 0.0262596800391524359943430183159348 1.0266106228367347107383054477531135 GT 1 -7.1815495099991358980493023706631609 5.6715503733380114723917474298423343 0.0832348321346738966738164180081518 1.0869039269095133695914139058305211 LT 1 -105003555.7987991092385460794172810940013606 0.5273690505184191651548599120530747 0.0651813594791735080091958820867687 1.0674027358649556641172352209184885 GT 1 -12291636147040432074254083503523055571501986.4510574841686815061183801342801244 0.4209322397671522941663081477327417 0.0467188616142067994821802010281621 1.0478454152801535820123490038726347 GT 1 -40521305134883361122562.6837939682602744675325874751987296 0.1348041255426825051079413513616068 0.0892406274274212818371838841907266 1.0934765520977435905272758765524060 GT 1 -24328504036484853172780774.4480679270127591272075562736534022 0.8615420833144005535321247966839571 0.0102203841925158625552946199524823 1.0102729709303216247744290470755266 GT 1 -3069917773507170540892499.3812880751090910430610682064491873 0.5382847285350544187439425269647275 0.0238035685373813310198848087965542 1.0240914510749860759164752067638214 GT 1 -152308320131124621835533408178297893024483.4716150036429790636612501399907668 1.7690073534550840585759165266197429 0.0218584265224748063659593054754636 1.0221008612667919752227030190377156 GT 1 -7810814976453440334244833.6394929361655603481615793300157353 0.9568172774992618611253228922427183 0.0900896907412498497855696950946619 1.0944092455828416233258543657887556 GT 1 -14256118657079493688180454.3037874931452551513000468275323408 4.5397949518073661120395583826031419 0.0541996546291437957583970369524138 1.0557237836097552332611936485983132 LT 1 -288125999.4724573942575612067749977737289418 0.9356041614548032359529792031274815 0.0449958887047222588466554394521730 1.0460396334894401451075917478333031 GT 1 -3141.7838998125733585266467618053889028 0.2479768253654652135796101682500564 0.0704560340985351569487638805927129 1.0730611723459842098346392568034246 GT 1 -35739840228.3337538259652747459047467957065136 2.9265652788330947174476296593598087 0.0884417882199065487835843183622415 1.0925998231833730291652097872666200 LT 1 -12443996448339093794640.7623873201055712108460680773513500 1.4156106822000718066425322465119677 0.0698895707989308602860269044789166 1.0724519588075806040871786113711635 GT 1 -19859220861989662.3059548928163326201431656513388786 2.6343015030045547581626355131973592 0.0458919360768032852972504143634903 1.0469783393963111208403824639229396 GT 1 -4155828576668294393776278959.1902530582229955686284388779705906 0.5687012146965614991068623915112499 0.0920214404567662852272639017782445 1.0965345134974795342304671185209130 GT 1 -5363168545240368232678378021555.0659813169948557315849530906284138 0.3967536305415567937686016988235265 0.0005633423768323912067074298215369 1.0005635011137674531522687582407578 GT 1 -1397391694195194.9208475213196117877257312567727262 3.8056008481756961456324510271881583 0.0573902399815878306285369498450062 1.0591029101875170249608245508963065 LT 1 -4514070712898589.5049116818114999200949644375139868 0.3903528566062198768063742490392468 0.0642051106373444126189816887628748 1.0663589618145004046686258253847846 GT 1 -43791.7468191110979183668657316184801186 0.5018081326140398385590609563679666 0.0884315345298994824090468693325495 1.0925885747165109896711027718226848 GT 1 -1500332564628532823041650480289320022494856.1653245885477915130731103703518581 0.0144221495344372786378331564462023 0.0140157202884462599641496380030347 1.0141148680040105409347589002629213 GT 1 -139240264265538818912561185054803.5342989954385413359792109569171691 0.0343744652904152803882313144888144 0.0386055576923353252545516031803399 1.0393705043714544219321575995310291 GT 1 -107099357046059.4642786041727771762254175201529552 0.3111081288310865991059880057620122 0.0962729104947128895862871281782570 1.1012278563087352748226154526703916 GT 1 -12858119650558924370428077135749529165.9274932650448139540993226045427351 0.0207033322248612337415538851145368 0.0770140540024995755173715081799467 1.0801412710334526760545364787868408 GT 1 -5079006443743126116441430563750579332848.6530536119873790440382206789619842 0.3920378617405456888180884059905318 0.0305584635994102582157698164466886 1.0310351089536250367024460400175325 GT 1 -2828009749487832136584332834145022649819604.3223680174270338746460707535931374 0.6250684863055520774355880567798620 0.0708082693678284709555710128279041 1.0734401775742870834710071054973537 GT 1 -2446390977107346086211829850.8260704068580382523295133820712580 0.2565240717720271484622056316735776 0.0570177231269640113537706474663577 1.0587077909335299707719151927562478 GT 1 -1407756861467394609685593343247311185.4833450186924518197938285230633101 1.0051667683159424691175648593904253 0.0224293853906210541380406275551148 1.0226847497222052218646124098646992 GT 1 -672117.1689825458042235637483638780143384 0.1253605600254727908473921956617732 0.0766897876021710078424648381046042 1.0797900095067596647296405515486331 GT 1 -45912121441222041.9894519089522136279041077298920487 0.0268853333241849199690318695803327 0.0450956120142548381620275937390389 1.0461440608058909005575681888613969 GT 1 -148221835052814242.5115039712500066296575426332727911 0.4843099445505210063869441215168929 0.0229178039675335493452871236700034 1.0231844994316355288200948793256880 GT 1 -194906056206375985856753496256.9809128548875027117159876337414068 1.2074667027637298198120831985258248 0.0421192694366219828898979613208738 1.0430320071299230318976048976328165 GT 1 -932490437453098587988772131263698431792811.6855488346482797264201410434488183 0.6824366462920106435241335781782714 0.0992577052321633353559694626523839 1.1045360836310587548572119902908194 GT 1 -178040309678457681147073318.6968191524925596542894637737551737 0.9690639609611993914409845365338330 0.0103514236059619701013367825840403 1.0104053722108063623329318132802581 GT 1 -75.6695444490758236451173452482851057 0.1249829840079599393997255665908003 0.0159342958748315679003538608932398 1.0160626116741395003145227670656196 GT 1 -31.1495089704348983436641176766337707 2.0118619349392713155328184993512991 0.0423789551780929377664013248368014 1.0433031483487920947855089076738431 GT 1 -3348.0380276679666284922370326403592581 0.1446160224872777982407997387536162 0.0503971806153589814094837934422326 1.0517114666676648518457503567029589 GT 1 -35335131970758707.9314448435721042231313016423667844 0.1173245073265764402456415439332339 0.0019826651671529872795907532997022 1.0019846332495313514280352510218167 GT 1 -4199923092612843919314742912.0428593170175744403235061175842973 0.0088670742945540864287413037369613 0.0920770129336041096491795086972131 1.0965957199840965314025324649369922 GT 1 -64440761711747638.3521834384742691100890874211417271 1.7241335893439384064960712725006108 0.0067488822502678488056457297668200 1.0067717589422455175430009326165835 GT 1 -243.2057076188814893226499521958561239 0.2519875584827684189522582300642563 0.0483657740548477108025260805223739 1.0495745344649892380989314165079323 GT 1 -30159974487037848128194513929867276895066.1164044330477645575486050057686767 0.0937520868177601481862123689128463 0.0320913628533476763449646409605346 1.0326175792728887976605769899650809 GT 1 -230549881425114596467.7641247903181025782169955827455586 0.3100333574821598017344197502779937 0.0678496293671968466215813053029186 1.0702611354300572164874677587044783 GT 1 -32215428393600131984440771286919806.0970082904897181075725195522488209 1.4307762547834715028468411326690437 0.0933665838078103336663434274943076 1.0980170823501241569706353026578353 GT 1 -7811569616945016488820351979372499551.0057263706739298292271285072521439 2.0123604864592906047203286431630840 0.0785675692388770892441938123256528 1.0818258298334795132833928590757921 GT 1 -45753257757634.9313453854413747798336671498416017 0.1533474224877862563623347729353248 0.0006935887588808598337426391127267 1.0006938294028424810236261648763582 GT 1 -11238.1163284603108542334448023192815604 0.8309504618022380399570637341540324 0.0022326837732697279382095865390334 1.0022351799277933425988835895858799 GT 1 -220.4207978105093118931284853409089117 0.0041927809329524632590911882575387 0.0463571313272872009342490309802476 1.0474660291169720199639071437389855 GT 1 -80270034568423102792562509805002552877.1727675384279151615000239483072866 1.6393446851865636602638343148602816 0.0218580795425652157775573499054766 1.0221005065330218786806661162734028 GT 1 -1266810879249119957842689.7483692894045454433117312286740807 1.0681034643427170489874715444323673 0.0828790663944590678516743901340617 1.0865159358075659997502113334196000 GT 1 -67312540969736541.0484699060327621009967718412192984 1.7090486393515188831857655911082374 0.0155260081330600549908727560450109 1.0156477988578602348930944709315189 GT 1 -22541705427.4599927668053196454300440314286353 0.4155897815159482979590960893923851 0.0788062619740943870892075925426024 1.0820849086858216032014301635220797 GT 1 -157032031288469644326212506107229758.0192525051670931394294330105770267 0.8826923780413246458682161364912609 0.0649694369013053812321977763869650 1.0671760624215942433492830469905315 GT 1 -607016723334246256838207.9400694709510597204584279525827142 1.5164789636291071106070255477310346 0.0281374148397075629837677466834644 1.0285408578077239615542118149897522 GT 1 -291986424224719845402317086593075828.9606569167868291724395696689929252 2.5990630403923705152904291841101823 0.0567190226402494393775647307178557 1.0583910795852692486971212898957766 GT 1 -79566753973677373048541.7383586123275022012558460908386360 0.3957429176800040085450498590091435 0.0619825795430893761820001523280669 1.0639867582326853008850517585800436 GT 1 -82172547908840720641489649795430745079.5366590173131964944180923097043868 3.0506808041470388804132111605824466 0.0496851404333421778951830415789911 1.0522604767279992175365280924662354 LT 2 -48898005712844532593.8549494881314359077416794092088259 0.3977369897755601961981575313519739 0.0441825913060660577074139001055766 1.0451883792626480078155018835613483 GT 1 -6036970761298238626545.7800843915760492084897562322836959 0.0332527481109833994194872869074771 0.0692242330171889787940273992868447 1.0717368825052713974962063312909121 GT 1 -44404072714368071092766165597.5441239807593062798991701983812571 2.6786844724968239308188442685771340 0.0186202689243657823715176735363152 1.0187958086111072492554624301961138 GT 1 -49221.4764432973503382006979469617033529 0.9172382373778935764973181687975227 0.0544150439305887458360103179260763 1.0559515418589200359079040190708137 GT 1 -1331.0429870745021725524616011504604089 3.1613866009425274510787718142755762 0.0028160118522001778154240005674150 1.0028199842729179473148078453390335 GT 1 -10684852.5654636465709824965230280479493118 0.5541785265107571624286236535363061 0.0848775413528202165100437985236860 1.0886973880745833684065322702362920 GT 1 -27003876143034825830234076570448.4656048764020774485314755697786813 5.5504034811944434797631569989427595 0.0596432071686253799179730479978382 1.0614959088934703060992797705978582 LT 1 -2768564.5361905610520106281523992429338967 4.5429186709731854438690059289952312 0.0325377553414939564344907460578075 1.0330788784484202943332860041062123 LT 1 -26062426111987573867120993403751913.5316488957010357581386323240218903 0.9872285627767915306739174453949983 0.0262001252644060457219588549901781 1.0265494638681782376289594188701547 GT 1 -107698645029951994015872634259.9793553128104815804456431325583268 0.7530194324893235201048982229054906 0.0728966585287298215769581469188961 1.0756902401568731889977901595846316 GT 1 -794272768254968865080991352.1626826784929135168708938736455402 0.4814767328180600066887722420808906 0.0538340288983345531680978147645375 1.0553372801797760842335988499910641 GT 1 -297909519253791989810576290773765331815.0114536550123182181180110500083260 1.7571767279003790906693536308356057 0.0235510666202935704587514728421307 1.0238328255989610656541867389153768 GT 1 -25066103358580745788377170485035523414.1126251500353751756331324455141487 0.6127012843173227594006677021032396 0.0771122361528579146737736708138780 1.0802476511719500106356964374376960 GT 1 -919522634236154168556108891961066946.8051733402221303009229755868059723 1.8163165775854237835734159513553147 0.0056381082587573183822378144823053 1.0056540623867869794714271864817265 GT 1 -248385746684.8099252657345256195781879198227625 1.0162911764617443660339580998402708 0.0569408844136472027896370787842105 1.0586263094626921290342296932422513 GT 1 -11896139.9441244251244601261896479451101795 0.3665255469129527590948328287518721 0.0283160124390475202055542845510786 1.0287246430612901807159942276877767 GT 1 -22097471391509438016565656.1514566221123690516320135264980788 1.2450634518182530647249230119286471 0.0033641268961385305000514449713274 1.0033697982941324678361748952814543 GT 1 -309823849050937053731488825729517540563.6607528522287552876378813755097819 2.0033204447616033204848798882496303 0.0495918016843406543924472194154892 1.0508637042370778031271167790403995 GT 1 -590616791365665522507.6298112313283706005824791830213955 0.4083416829473622465903485840288918 0.0563527142198441608415645513317496 1.0580028206014355674216107443682227 GT 1 -154859874789001451834642.3232371139683505962177650929697697 3.3713926223064436923845528303647845 0.0611545203183906507111359063314459 1.0631043716946326092426171838145912 LT 1 -29768865431539848382146.0445024638386489127542972020487032 0.4658025221217827906749685434895224 0.0803760818963571481214534969629220 1.0837904771842346326947318717059115 GT 1 -3378263349299367387698992844805019715805288.6793010669953825122401928151937347 3.0248791754269206752355611083339922 0.0153865617775199913702217079156045 1.0155061633432128775458808609864544 GT 1 -9404904252983334251040.1884717918447856670938241914630427 0.0148518839287392163899944177224780 0.0682551550915151925655188705411793 1.0706962733362396382320364581392467 GT 1 -188469885026625441591261254572239845980.3625119152619872448220956832421822 1.8219273037838982625117163402236131 0.0003470911345947401455230136633303 1.0003471513846645106507798851672044 GT 1 -5108.7217487669244058834002429722689201 0.2929574072645607941128280400754902 0.0778969757469148596842696474753704 1.0810983216971805680299074283410328 GT 1 -12355121785644481.3400499440729813631266467522460526 0.0445392941020551739692331554733145 0.0894927211799037629667404052815766 1.0937533855355048125512255075371573 GT 1 -8760118196168039588816282266325.4479314611144509637818184663550487 0.9921295282923905567230034538192556 0.0250651017184186410016847932336200 1.0253845812068217682001916740865765 GT 1 -5910261896.3758178004598286013312754761765196 1.8115892361541795951468960291768169 0.0843350269143010998403938998496397 1.0881047311172596932363867635108758 GT 1 -95955495889831264830749035.1962781662619842660031053509223357 2.3476546262310476079377285988197302 0.0123228973506412513992772652913959 1.0123994538321074830915568084177989 GT 1 -613087617837705985055536133503093803747796.0808818463529629532465490976739301 0.2246577026793167937964909325576839 0.0800054818056086912856877638090331 1.0833875674411601699653867382794649 GT 1 -1055294809169703435383692398002362209.6972118879702883391782989954510488 0.5098570747831425412731707733979100 0.0653426615512527142626210836343659 1.0675752998072518243212717709053115 GT 1 -611885076588914580736564613577314085490381.2771623539534772731851830463803287 1.4006326132647752269931104876274289 0.0475742725182123583148465326966191 1.0487431514186716644467351346162743 GT 1 -34758848359534136093643206376.2042231918527685143795927769019707 2.1610335919315227877420304014635925 0.0931179132591255139118274011364755 1.0977428409115027118238380182974759 GT 1 -14988372417171008513341671822515306289218624.9197467849105577427749233427935985 2.0362579124113224895737112089412320 0.0479094051130816206390187726377460 1.0490950860221110485872207337845641 GT 1 -623887246395186142654972269164771.8502493936453792683724893713710116 3.2552412913876162192002149563600167 0.0696657376529651227777694534117780 1.0722113355328736636659808740111979 LT 1 -10981995878691075826477917397018834281231.3924542347944049336977084891443989 2.2881086174789949402973237427955198 0.0823983690808406263174252710725213 1.0859919357937089008114896322124353 GT 1 -1.9829245394102015159501964400686251 0.7543704830279789972887713221308069 0.0458608657892531113295501421150433 1.0469457751797009217521083842113739 GT 1 -39367367930795111039341122204704475.9862017121154980893304768761720362 0.2270278384736498849088160871017670 0.0708605018728336549947221320961929 1.0734963919931275938508631306682280 GT 1 -301435899410591698952.1266193168876332366110925155812520 2.4385068712036096536080767582643117 0.0747984964431413666683780883387659 1.0777437235106755605236635549861499 GT 1 -63495954170441384899244400288412.0757217382980366603180830907781280 2.9276420810584546933614273852370502 0.0029907621515219710212082227700622 1.0029952434178102773337927752052054 GT 1 -17.8126354164213481667487612859718094 0.4294030132436952591134525298687294 0.0161266186997454787933360611357475 1.0162580677499403548163476632307305 GT 1 -509697060296638359695205148.7901661423775024982228489552577478 0.4083436180867990150007715200155504 0.0252927107197166356823528000842925 1.0256180691809578552248923369953380 GT 1 -169352785712228565786904623694492.0114364587808976974725027905798277 1.3127869041946444728654322583713760 0.0587429923823162522429728109598719 1.0605390548836002760819944003373760 GT 1 -764334620356512323671767771283169353762.2024725813480256901327014591769777 0.0003885115300978470501594360442806 0.0318388326974007839950062084295439 1.0323567104170255771637793322609822 GT 1 -139060806736183684580191186439432453710385.0398499993458763554734225863676111 0.2405779334089027253057484403985577 0.0542022085063341436866450162906330 1.0557264838420514891027155617277902 GT 1 -5984602441616953826698770951.0684136458973202870096037035657900 2.1231057148120754052766609368344616 0.0304715588823435895815256646453720 1.0309454688682884979742880313293992 GT 1 -772381985968439050208831405067649.1880902921795352841594999073141524 0.7480429075683949984558487416262804 0.0820251861040793182762572207732702 1.0855853245812398771789137624485140 GT 1 -7699406725965391057602460071680142195439281.1564000565063662111627655185058642 1.8132609074184303704570199395901647 0.0576882462747335127514226107434215 1.0594191104042960877829514734643847 GT 1 -17948605027414.4208421138264657209716619813520343 1.8802793015904475750365277992335294 0.0126695681405963622276989528258117 1.0127505115242511129456987132339738 GT 1 -265579450994074574970295835094629043573980.4791578451840897616630703899150134 0.2110950215414344949984780124616902 0.0878406380812351866178475169151689 1.0919405652268629978390692741363591 GT 1 -47390529717222060811592404629464.5353899577040850672127765406987887 0.1384562533036343754217599628005243 0.0946106025334321859354487850747824 1.0993901543795634155970639427034229 GT 1 -644826449123.0346190821822951039793615317510786 0.2022135997537412596587705654667641 0.0637734641210310309319507466990673 1.0658978062762753830678853460216478 GT 1 -28576016319924342237532868025616122.8486999879828423111068097113672581 0.8319825054419176032795199300386430 0.0195296560046402177975045246480485 1.0197228796008447209881385073736141 GT 1 -745495.4863554096663674970472991206503488 0.5108780000333061930004729427358987 0.0689031789903468848760042476415240 1.0713920103243340746088815794991243 GT 1 -12742436.1437562327663450435731968206465771 0.0894018703378643330532753317198618 0.0164753766144495327136864742881364 1.0166126049788351178008030822288970 GT 1 -198072158922932424.1840096971611956414137431209246053 0.5080559763383441631884363788447106 0.0134765616468726696434275825352416 1.0135681947007192798753272197155116 GT 1 -464933983463045567.5612972797563401362614173538536804 0.1119800546118677382336687051683900 0.0417809704661232400540210882358702 1.0426788950623167737804010649254619 GT 1 -11886.5131936652046572951216484472615274 0.8266728845146566875158032321269795 0.0445948607020654657491924599811612 1.0456197988300102468676229370111467 GT 1 -144633720321650602130430291.2245620963617517467398095372898895 0.3373116550132340553112022038430995 0.0285635601076390444190034118077137 1.0289794370168611140537723671474977 GT 1 -15016.1049046708108541347529629398400910 1.7381978858732744207997213555415901 0.0655506012900214299946596908757009 1.0677978015354759523729264026568659 GT 1 -3.6932027044099381654064669455031915 0.5447701606770276211051603552031617 0.0984968003574291905062514263440713 1.1036916871020566399770622753221098 GT 1 -9540963777906106445568348296220003112.7302460459288680951206402588476640 0.1658258123214267558684023250685824 0.0337051740000736125978440899741211 1.0342862884360748926230202741213878 GT 1 -55172962124229394131.7505501441224896169282563184494672 0.6314735144735660722225880699052459 0.0407416327247825962151484462370734 1.0415948271668033164240454401671930 GT 1 -5237065119259816171927923369059916253651686.6816197628336387322941886737466942 0.4082586365962409324566872794237113 0.0286675691800927494123061546315032 1.0290865100445599174211755514448952 GT 1 -14438967856875223119878830624595.1990192494973344418545716578884333 1.7226330470202953613426101876353359 0.0772607125598307837466810867413181 1.0804085465242256640391466788619585 GT 1 -1607645502161468990377199521772729902324.4289214516714589682749919445332777 2.5975674045193060106455470269726519 0.0573925214848780421397347290054470 1.0591053306017203104691218980031586 GT 1 -10715376110960771557554073101.6559972550732058118104826745074056 0.3251398377102241392345803423860149 0.0771781288559935721407359175752051 1.0803190521138039739269646920904722 GT 1 -3148539768.9280789854612078750975579721112573 0.2946888187711393554735413758146692 0.0775428947168399589015964439636485 1.0807144024865739286349566111814766 GT 1 -945770388711846784761946.8734378230341599534791935330688533 1.5370272629470567734356291888319875 0.0920267425189472181656922476374070 1.0965403529279437590364966305223836 GT 1 -371597799396825.7604923787350836688954307777343469 1.5549439629816050750401581238523394 0.0540818914664129028577489594799131 1.0555992797094629287409623077082269 GT 1 -812716469142262181904802422592843608.2319565866935730591838469939086112 1.7677263671868148107720913526365270 0.0510730178038790811011274441794004 1.0524234251699807178570623015300203 GT 1 -614284.8957954966961253297338138664596601 0.5211642778401591432944663366713486 0.0873909631107170512336341265781346 1.0914477081827423965709575931563560 GT 1 -118159823034953234991648715814.8948306974173961404182897581663739 1.2253322725985136734236651554957444 0.0443324557225964272550286764990563 1.0453451834442393690872155420558264 GT 1 -33.7432503930210077000386257457616500 0.8661344518292574337137692604772516 0.0845565655876672729608999021700265 1.0883467033276869401998741009226632 GT 1 -851274733956175572769505.0312253636475774787186902035775179 1.6469782665706796840403338414588962 0.0819244872566151146422408545247817 1.0854756338542438585175106348895117 GT 1 -9776162481575.6766303380968289775884011124387797 1.0752149048537960761547941669437558 0.0100470678650923178553738790221528 1.0100978802817929083697196339206884 GT 1 -376381637111.9589137445157727070027725571129086 2.9318553622720246207383851992549521 0.0615643469588509549223823308217479 1.0635409889277440906968080935539587 LT 1 -115053967752059113082020312.2502453464403714131802298869790668 1.1700565574211674271658681013046523 0.0717532108843224160017266605685663 1.0744576450037256885884353902952288 GT 1 -74365735311054375525082553924.2194377532579069473263858527010282 0.5336672726692217161611790848238182 0.0066473092689530854540227877359948 1.0066695010275373511234080368176466 GT 1 -112769230515242823039892179282211660185664.9225368364828757408570114701860913 2.5983868913756039525397659856867883 0.0673968914742051359604032443859832 1.0697755614311910321292844977591581 GT 1 -25892303341530627910228318559508839619.7772512674424747275640380739635677 0.0192690869286590700923198757049142 0.0821658275804637839589121910366600 1.0857385447448930526052522873369367 GT 1 -594468278112718469821284229794.5883580490747452192799543751040134 1.4949293381043701210213483874185212 0.0762754264205781740684946108550856 1.0793413323170391744963317019203227 GT 1 -402906.6986907189048889140028331414445227 0.0403255388203096516110173255115536 0.0400466036488161648952453357757131 1.0408705411661413126827786932676225 GT 1 -22235324269489288711522030667.3365125253843758055122441971492210 1.8827094486418995744894611605846813 0.0089071291897088174015244277332304 1.0089470348046168637502047287020447 GT 1 -20611.3766754521683295526942815275371229 2.0025211616119699439555456348574729 0.0139890508517090392070560587111225 1.0140878198282862352804664480878219 GT 1 -2851268455154782736979176.0696814389470057817354938484941640 0.2580846538588736192746523520105505 0.0530517047342746251979774792968905 1.0545107857388520889152125300588477 GT 1 -20174156.6919977611022328744659810288411954 0.3078524170750146735149063187871354 0.0163646909218081823187246839312671 1.0165000714822632026011166097430966 GT 1 -2404497.9289508260110857652062118263320842 0.3947874356255055368687076524893616 0.0737844339478950570754992492704993 1.0766482787151204700085245645129633 GT 1 -36213414391134949452086198.5694975452133334224099577721295831 0.1996271759423059477329900333915359 0.0869829624593201849567809268129774 1.0910007375090606168129934007387350 GT 1 -2561858496311266401068367.2719021820114520549926921266646304 3.0047220366621911870542234089545217 0.0227838294891052951933223255282203 1.0230473919347131464699623736248480 GT 1 -3392898823194525466799892.8382657361233994628858171157421208 0.8098252832927348819572644067863467 0.0045874281483758643082772991962428 1.0045979826880490480115113972814274 GT 1 -122964445851811429941.0707537247478150483009302975910031 2.8002223135154906165109790904864252 0.0305895328840403677445188701603752 1.0310671581090803450055536611480038 GT 1 -65147589809293241527338336798765712.9465786199671079168486695468687247 0.0652304697203634634890242677680557 0.0066366279557952047307397250913500 1.0066587482950678075196106391193747 GT 1 -180138240119103847441.8053565284206850409415052181789230 4.0046601511599222586737684110894390 0.0485322817741732947173947178671897 1.0497495200670590094475070648960123 LT 1 -479047695796825656583.8887979906623264706917787633674019 4.3919555002753079235226032755520682 0.0928197775086013365751964603711224 1.0974141468510053508828413755595831 LT 1 -834600024956735161744014349445.1516556442907381107812514967881910 0.7310730595918367084888658696919481 0.0592858598001918880711625238213198 1.0611159685451747874462629028541581 GT 1 -16215795960355247256552277991.3710231067878506239170662526363388 0.8699506445860564374036461355418106 0.0284094155049602117821930124443514 1.0288207726225243382414089634260988 GT 1 -22670063221742.2813681956055808578518991854042946 5.8763510389707918671143275215218011 0.0660233448271716680783930065331574 1.0683038355273010939945255566906690 LT 1 -820037531361087963181452524875933906160704.2987354522362944608530358428988944 0.5536500163138268599016565293385933 0.0690938122139756751982210824038252 1.0715967717811033097754999233647980 GT 1 -19527112579801347270032582298725252436.3139709314352513749891253566305485 1.1308454921881545409626279448703448 0.0889228700777094791000971882613337 1.0931277201882952780586694738966295 GT 1 -44028040542784241245962688413332060716626.8791403711113235538437988869462893 0.6283199308706445103586770813814316 0.0330281947331133631489168656727349 1.0335859408650961054217444540399520 GT 1 -62.2694867954359080583546882705439263 0.5250158235966638623639712847000241 0.0779075226597584110244766934344412 1.0811097596524673628682930016358538 GT 1 -46.9284354758069593844195590002161337 0.0212301794051704768837083179414574 0.0293626889152151746307157438243514 1.0298024014921043952713896968077911 GT 1 -64769272641338058736357039907788636.6897506474449916333650770377775411 1.6347417374622387517733808364376101 0.0826318301994656212274100684045850 1.0862463935180737614617347731270014 GT 1 -8438.6503959809426287219933754047271732 1.4746147926753886919236703989619657 0.0542875941738674762642313153102034 1.0558167669055129702231462932191787 GT 1 -60424536002263772641177267243.7357361069015903991017067319942750 0.2337355380031077002550774186366262 0.0650671547838711821191691393743511 1.0672805755711245971349846740969789 GT 1 -11024853259267746648865505446412839695500.9769970689273610520095485799524680 1.4511177150552879492167643741518558 0.0766712340141774276063027050468988 1.0797699150668486818565240005509472 GT 1 -21079430993107152940128560.8871451660460084883587277056154275 2.3269689354920818751123512431362044 0.0556028327305743867493782174351076 1.0572084732782154408537097443060537 GT 1 -43076302139517137236.8551707420867159838824378204268505 0.9638420380640449814837574893649815 0.0388368365993887867496103029166289 1.0396110994074444181969814827924477 GT 1 -2.8154627979057247650915489767660644 0.6530238551975087017619471164095725 0.0483131446712142855663152737294365 1.0495192317794206922406757123093355 GT 1 -81872215459409022970.8730644951845873061585136166514183 0.3676560553619452432220394756092666 0.0049885528983399707007929527112841 1.0050010372649380211425643501837403 GT 1 -3903077453116884214894670156895124576468.3187958359453497012349842440795988 0.8120022029530236483687633429116289 0.0175638375564803634845968905686025 1.0177199119618560592739442132814009 GT 1 -2374761976359978.8248020280254787997073244784106792 0.1175487263505352091561302525923383 0.0601405036620145728992436632088146 1.0620248868710038569453661353613248 GT 1 -286521628129984120854083754556694.2391155213987607699939956429819022 0.3014984069315678577878280705084802 0.0283358110855726008239096668921674 1.0287450188712098155009764368437877 GT 1 -255906304870100936256929620632948499214.6503454390347839323321976720255516 0.0192224664042311477359743881805231 0.0882473827947975969021624342140222 1.0923865787680433314175954163140945 GT 1 -43664481711114231314690865396635630.6833815181208306218623471457358955 0.2639195046101905218559871912391806 0.0710161244077963554051622256337694 1.0736638970549847777260551103908846 GT 1 -30581396860248351184.2512543258117975999259309795834087 0.2187223823607423257704247148470348 0.0657728926100915043644792139807857 1.0680357146471279434344229534859380 GT 1 -33248023123477317394.7790569249792024576442847327946134 1.7392695588466637822320623543299873 0.0540495433998473220152745055326131 1.0555650827603038876636281071161146 GT 1 -174146589864922538428718078937.9972333368296148468431841915740359 0.8158375701761256893719595385953017 0.0764752731269501873069510835225535 1.0795577045274416862266047452833007 GT 1 -4382451939770299703208833737.9371081633378723997158607261744555 1.2092230726160099204019732076332139 0.0475565434257875001290048403871103 1.0487245369200239201348027734132163 GT 1 -2758245230955365524335591.1071720133604922761033573382118953 0.0388410751105807963777918736250044 0.0728202022660896317647965330514874 1.0756077756604141533774628815195886 GT 1 -157791631721653.7517917421721266083602119465250036 0.0280582038236332368957752018436401 0.0308410259392049864896582903307663 1.0313266206294663567393489686269887 GT 1 -12634057267369166691403932033696481377351.4944960467617888115229228644905935 1.9898261980631498413325960244104175 0.0957260398037353621816695547295735 1.1006229111868887260043348619463851 GT 1 -8521717521250802286058323965.5559426785855667572932587566654730 2.2973483978521764969427008436490939 0.0570850478619821930627868528544719 1.0587791890288356054144945512989564 GT 1 -59015995761457583080813168.6208210517331536969586669074663190 1.0601160959684712055062483958104284 0.0237449612137688171261475241157802 1.0240314164728224210368562657773521 GT 1 -149.6476377872138284249274099932101709 0.6480297642008209244600884067969298 0.0991467129651044491732177380540750 1.1044128681121926970270857526017436 GT 1 -854575194334031246522850.0489007370515980881115522061426174 0.2627625778274131099637253068850833 0.0256413068799446709478346637479897 1.0259757750432455294590446956597694 GT 1 -1200899286663053109361859136767788.4962347967984837119183345904081090 0.4063110296700524608095492075761743 0.0730840415952404547264303246868752 1.0758923772836670609931920791603297 GT 1 -3943081667228075.4983470138370392200322059524665501 0.1856118178048184479497204910465702 0.0130383409531255895952046475009877 1.0131240862536607970292338966637373 GT 1 -185696557172889791299157169319075446226178.2193371815607498142429072491136349 0.9640359679071705602389156732987335 0.0841644484340021629688540985323278 1.0879184592833222253083017826239638 GT 1 -14141609508.6098426870347707259949447980140579 0.5515998404698507061293768514594426 0.0362475549000096537601873648611027 1.0369208170390842831994907505717685 GT 1 -38339938107204635.3929501582869380517306693716743179 1.4621797756308747183288677780439217 0.0861867268890987781148437831030625 1.0901290247769044421721703075143053 GT 1 -64.6419971102266621273110665202598898 0.3313445051546112150404463935475347 0.0427897182759619333150144179315327 1.0437321815471476842918870456653829 GT 1 -97802465.2970778226301136928863164916751354 0.1400323822684589454336377654268243 0.0914406770926695038544173199210092 1.0958950956361788301808787090746420 GT 1 -2180329364662435859891704871737602625.6579125650295192827784561826638871 0.6273190206255490453719460722931113 0.0075141730113334968402823178833314 1.0075425466349281542339473320702220 GT 1 -249533667480118649144869684895277318006838.6462515022239621807355228132987247 0.5903700546315302639192256211979166 0.0933517317999988261511076897034671 1.0980007009925671064658702192602813 GT 1 -510809574770086443168211816676437567001412.5092727885010752328226877667145996 1.0260355321955837860211557009369032 0.0935118174609939243133595191978564 1.0981772852329267684807657161190697 GT 1 -123925773536972741105363.5973303778966787733204676512314906 2.1525134508083661669566706221366587 0.0118297589188432769091103411097894 1.0119002872911272521168855458809773 GT 1 -159382642824847673822219358136543641812.7209515271402933261559753640317535 0.1081613851097366518659905100373512 0.0700423673631005678650849248132382 1.0726162501769645957591676688491678 GT 1 -12862459308.7493410557675926185745546642251010 0.1882212761259856803310761224031440 0.0876032879333763527666610211436423 1.0916803921879722375644576273970123 GT 1 -259605240500162092022124659118.4080776678483511465853053713053547 0.6939011405120681275918010102054016 0.0088700162743319414670503680381459 1.0089095890499215364086701262968210 GT 1 -4872923557758802018117820010410148.4406565901978598039454094450362593 0.6692220026146481373069612367185473 0.0363921541648801407124122377189301 1.0370708660629454437262560340479511 GT 1 -1.4236463714792330421246305844917978 0.0172003761714279723046885564231998 0.0411223350927949704370798288629611 1.0419917775046561988108145435811963 GT 1 -1644632509127844007729170533135227.9989359294389476652058557214676268 0.3342637089842785286588808791158868 0.0696624526812393889665296289979434 1.0722078045805491618460479899259485 GT 1 -1381092191478.1634583998830097580282822808517341 0.6731214838123116510495024400280682 0.0555540131427490655827403691872063 1.0571567806983106108707725434247778 GT 1 -23101926196347009458575879934140165.2984464635252181035248407257119582 0.5846899450469183495278927129041775 0.0581578794480644398013423906076357 1.0599176187156056617486858155339275 GT 1 -239418958105313392709096869460.5998649087022804376918606954804222 0.2185485508187486332098112959365192 0.0678440417693893385539597991355088 1.0702551411385386855033474157876931 GT 1 -1509792641040511928085376850036513205432.1391973735894248204620324221932640 0.2984663896701944662440249246278473 0.0160732229126619910042211516082408 1.0162037982278356863198028839076999 GT 1 -313352235.4311152682421612323008252944565021 1.8342991472517411981034992247666125 0.0044716855266839713587889300192314 1.0044817134179594367482907503103070 GT 1 -187239988382083123.5615308697768880783962425756404367 0.3896254267036413905858894865602271 0.0478408117360816404276540948011886 1.0490230436066290307514802127788879 GT 1 -12501571648668940210950.7143092424441303644073900101477386 0.5009463074854320296605955780684062 0.0085603807260932662409761316163906 1.0085972312388386539532275912917221 GT 1 -483387274487143611213.4172963706293004747814405356140434 1.9750151578621152525226273838365844 0.0091509091521754113179923275220244 1.0091930359170732933247537982097953 GT 1 -74490825211255914289233139934064925.6176973786180274100864006278449466 2.1019657889437169558104421482477173 0.0549794067610499043419412758176449 1.0565485599385830659832706770217867 GT 1 -46464480577456047921004599.7381748998445623709260368491698332 1.0191920024311668992656948551571169 0.0783924206219040341614138642518271 1.0816357649227485842525809101009281 GT 1 -2634853210859291875423991137.8203405725938783957715884407468498 0.4495472153032564858064823714835090 0.0296497681132993935612264626220742 1.0300982088518343385367339561368624 GT 1 -64465646142986829744619515163513841.9533423167928915144540355386146284 0.1910419142475213303236684425101704 0.0499221533584814968793119046636844 1.0512113539115856589657943171003535 GT 1 -100256556466093886092.7128968983022690565440305368199941 0.7731747764406357964693975378076724 0.0073205062328403971093601233601887 1.0073474326289734632786758617563124 GT 1 -52173151695113694389.4942901585122112319897337524462486 0.3122057059263781274533795789197378 0.0692806988161112144297301936503095 1.0717975496538501629807797394378205 GT 1 -887587668318390.8403047436048854195246748877301096 0.4563674623622280812943525712569643 0.0228081202018868993075068942662953 1.0230722492952617937196691151424176 GT 1 -225.2788754531744494152871311321608528 2.5819725876043998542291255928406494 0.0509602412019834474490701748470377 1.0523045857829751383071906058482807 GT 1 -53359537802671960243978373.8780359892209454704060479419402457 1.2664438831750822233430075646362516 0.0084307299289626528086502515152008 1.0084664695483470102019232161883586 GT 1 -37134657258026634951084657010313.0137094239350595852409020193672102 4.5947655954011748070060829344007689 0.0353456167993556483173301595727200 1.0359853939186254422166105392895935 LT 1 -7.1322782495683372734640880488965573 0.3199639475053094612033901427141371 0.0200054417751390060368726407033565 1.0202082601647109717940966815805126 GT 1 -1001503287859433709.9126039541022296238135773368176901 0.9145266491204063939187708844507745 0.0451057244242729971038764845037969 1.0461546508332180695962765849962961 GT 1 -3028620682492951146870052.2800077697251074709560926363499731 1.1092760820576608814010269335894503 0.0128237051706440859811926803891393 1.0129066386503605393250868509516289 GT 1 -365244863860.8183386821666737546952696461455104 0.1152350023647589747958078955861656 0.0406121273703158587584545617562211 1.0414598305718397417154275636409995 GT 1 -3211949977464.0761142413689506523350087574934892 1.4579405071411720105281206869189710 0.0642489675717328071861032364069913 1.0664058288818651793941223351877388 GT 1 -9557613686956234.1445460447336735943936932428315048 0.1099760066959755180587385897959996 0.0957488443575633813345074106684025 1.1006481301386516958013308757945375 GT 1 -3634592661551724928722936.4149044112210498170146229958822322 0.0174654338945904799685009765801839 0.0749934918028153910867461698954324 1.0779545056056153824741830451235170 GT 1 -327908886888169725117754373707686198206158.3636403614710488575890495258466625 1.3700502189299364989008281911888444 0.0117561717649990137307258831770730 1.0118258219703013096476045990170751 GT 1 -3061572925715236911761635417745598.4924255153108042330421303805612841 0.7199978745401579262080050298111496 0.0005249510276967376524468235543105 1.0005250888627273490271642761711035 GT 1 -55591776722063832178260226570042.8104527313560062263122464653181046 0.0082748774218292756823457774555946 0.0293897014102956595231573586030558 1.0298302315277449881141055746645480 GT 1 -15566825.7959016112848981506875214170141686 0.8273991706524628535661586785886992 0.0008927624520774183358070589953401 1.0008931612018188673190882570106261 GT 1 -3094523179471943761211351598.0497057427343500977388773539552154 0.7083269105074922112938776087882497 0.0762947539881036551858183918657451 1.0793622560537042693916158354123368 GT 1 -37172897937015.0872541661895381354576746047745549 0.9174454668922327456706604509173583 0.0362068785537405696880569793542370 1.0368786117112507052550169817093465 GT 1 -24503632948825587301.9941632740403494998552429397392835 0.6913589662897187023772720546101137 0.0636251129690088157363737956991377 1.0657393623591474777248750785634163 GT 1 -840685.7089330632483880591534425540636652 0.8304650599576014747464625838079198 0.0202923788360263220948247592419835 1.0205010975825142180541663259601684 GT 1 -2109850877937305245701521820765035571250.4884930696888502514133511729233825 2.2565068227126185127204716657107316 0.0642372424102129427735770989626902 1.0663932987454776674326593152669982 GT 1 -219671992522087219073669.0606230588600669518223223475289910 0.1476728517462871998316457279793163 0.0323176430909599432929143425171349 1.0328513892454894416753906211617357 GT 1 -490498337126.4995910494978734470677922737947415 0.0409124286883427391944493704854061 0.0447341984892158127201383563824079 1.0457656510376524270298931096814489 GT 1 -806038192820137902730.8442764951491213276396399071094510 0.6299512753708768773611003286728038 0.0051881931038950771559798007995251 1.0052016985104269189193031954913601 GT 1 -58790658451482320064310755130438.7276591288139339253154024086408926 0.6098628285768826731780129810702759 0.0039207355903257091560943331092664 1.0039284418234402837036626431666395 GT 1 -144460042539915452076302468202194599.1126076753163403107044882182323769 0.4061340215345244433792385065457180 0.0119016036170980164255021083583707 1.0119729947125014841059412557933425 GT 1 -192934.9829622187359339856116131961557843 1.1007079448499358698115740491885378 0.0295571769604280259408894266585615 1.0300027930601232205691146304578826 GT 1 -897935774079568911225453543395.5562632556033375871377858288576438 0.5917919980097343626574857097100753 0.0298878381408474889493201301571529 1.0303435833868007356232190336376840 GT 1 -8994251582117343093815.9278712046998522057775739840769288 0.0684560872453858240648861724051282 0.0354258525215569127405221516225642 1.0360685729935474603521742125479584 GT 1 -17.7222424567838841516906426513344357 1.8823294620545549441030080671701127 0.0353187742409858026254972974435707 1.0359575682171280736427853740040406 GT 1 -5680102207805565.0063666205379961549288073735234468 1.1912052169233897991600310038308197 0.0502441018298759888037954328640997 1.0515502766992827760368368372454103 GT 1 -4105153649984.0263881667616596013476403961928822 1.1246275229861143914159349488731326 0.0455665654841733549796645318291668 1.0466373768382025091817302783453389 GT 1 -10700165737296171487153097945039359756643123.1449290864641280867909567857534450 0.1448551697965729489722422030172164 0.0100834576872654072997666369905955 1.0101346401012121551654667109810116 GT 1 -1002920972216507598433369462689.5043600762883162113961331625025691 0.2912331167597775333659435022970670 0.0347329819196012188800077949177695 1.0353505132442872574556821580403290 GT 1 -2645666428202135352457182492.9386755155202419659253165507357791 2.3725005927215956831252633781829904 0.0397149869225063153139317586246592 1.0405251499605719984213747510832418 GT 1 -350591285068027084045981824076217.7079179911304116488691621106578088 0.9240549662538684557447683561863863 0.0918007702116058720127822556020906 1.0962915083825149569327770315927151 GT 1 -3757443335100729.3375955953087669554011308145313112 1.8605684496196055120806441190459558 0.0357024776353705836522096297822148 1.0363553988306780874674518292081530 GT 1 -290938493.5808027923845562374219671316212645 0.7861842373622259228233414513750525 0.0477386192065696618616071140674979 1.0489157222184120901345554316410340 GT 1 -74.1141729705808511878613372351615295 0.0874868871689943352760650564267812 0.0603200879058112213656204056971236 1.0622159807565988787042611436451800 GT 1 -31956799.3585132930807424209984295297867313 1.4747298089080822427120524471585599 0.0234023015881537935339179034118328 1.0236804840931251053827625359555146 GT 1 -1.8243393707095850151131972501882189 0.1002571743044122036036868669872359 0.0137686341073110779442628323357053 1.0138643008989592749416950284923691 GT 1 -309793987616983332858.2867198245599911906762666993317399 0.3503226788652822703144465293483542 0.0547084788354667408873648115416194 1.0562619110562382758059491427810607 GT 1 -366227120251227126851470697495159.4180564343816235114164463893070086 0.0513803155070113013827346924891205 0.0227748120213048345330061667484597 1.0230381642669078627871428345837707 GT 1 -50715470014358404047318708670123155920803.6421993542020853782902939747615185 0.6384248659995844111643334308811121 0.0208388334515873563442104571305676 1.0210590263556552055058909802379253 GT 1 -29639864021354261225979865.9917041797438564233911413790521396 3.8666675751397769907516893407434726 0.0476720757509546855880709998796654 1.0488458452580974686964039236700237 LT 1 -660426603845896119600.1276983133022633159818524936027614 0.0785140776843839277341679953775600 0.0196477078040005403117766065167720 1.0198432900829801737174550329877373 GT 1 -6174959571300712288344745680072237.7031189401113429149474175079692028 0.2150641257845197640305799786377853 0.0977456037060484612711187133901070 1.1028587628815268213223566873765738 GT 1 -7912052383932447769049264809732.1744326570904733081047436093984553 0.0683352286004173776284770619896386 0.0997701267542997664498578413090368 1.1051051335531674688173469999606499 GT 1 -846021300341854893556.9562610893705619740263074836281332 1.0337968909840255673723768581513444 0.0297669127959775668988429737735226 1.0302189402645678613080243955051029 GT 1 -815344063253460687285441942658711550804424.7479536248499412428745081536456851 0.6505051117934750447795542580504239 0.0224713250653531174459396017371939 1.0227276525813723157733827555936009 GT 1 -1504894.2108721554433716679217318339296864 1.4190654425353846138607899726122592 0.0934852666175243880844314335767733 1.0981479958774179942258208230742784 GT 1 -5702175098533063945198531316172.9576343915750280636854996638708842 0.2427269450777353975063870076507448 0.0209565041167815901278437804461475 1.0211792085486541214685061546561821 GT 1 -109002159.0211762782764117594283799534268406 2.0527193708161809197733948782717158 0.0947857925049157504787653837685951 1.0995836699249320424268778374698171 GT 1 -558155323201.6933345058442799067501442942140475 0.2009986085347664036894809324333048 0.0191851637967616547665532768856493 1.0193715872799733738280975371638703 GT 1 -20911086975049215711700511150580704906830949.6894830798704872919970177027418268 0.1444709476638696996882893974878590 0.0326062330326162114680445258477972 1.0331496616909348658630626490207116 GT 1 -105109939481.3835367227207332610165310100432924 4.7991453682762603688544031145282465 0.0500368790684070147853754730979802 1.0513321152130764138979905365504586 LT 1 -53002880281409558914400333087074.5672951527039844043540606757707945 0.7441037577765432048362647129052839 0.0152167290785124684254922653768146 1.0153336915414271032375475734384058 GT 1 -3087687778619039172307314.3384009001509982899346980974945292 0.3008359660795465010346348453337467 0.0873789290688681295370836200095946 1.0914345218542925920341348220289120 GT 1 -22267345685157922963590135864.0931237834975930790120174838061104 1.2958927932121246920839546767155991 0.0439666969400052055579493398088237 1.0449625307006747998663322665109376 GT 1 -129569745102478655754079781.6695540662834683182850906484186806 0.2045538740723572036369707033295085 0.0864766761741927512300426717270728 1.0904463711136586046905961274440628 GT 1 -5839812387537382723626476395200.8421166718207857598594034002030370 1.3441203269751113690336747231185927 0.0801416492196224414766344532641159 1.0835355873361838902487526286857538 GT 1 -33568797947935.8152331768813090216826070397386318 0.6938645907797988620894564068325605 0.0483597396279461495399358891893359 1.0495681933650113174525453830081624 GT 1 -477462298.1936163589540299741972755314289069 1.5345258074588919192747216059720634 0.0721336264797836612955117072894580 1.0748675506155662366569031318854225 GT 1 -8343340742704285805146942804783947111169.5063796050255637519784023231720058 0.8785284803800829920343877484895199 0.0186248727855362757333733799668527 1.0188004998349257067186704586515209 GT 1 -1544102805201083907983.7534829465357146433156851809772339 0.4976865975249035686032879462021471 0.0972008758915160900585247870633621 1.1022552042336401003043401119935661 GT 1 -810188642063203626671246025533138.6523201875956631691357054967278364 0.6778822358738816535439345214213813 0.0594210705193981726492241469594701 1.0612597108696623406654019780004221 GT 1 -124724753590299903441676710485002780698.2889537706514423511309488820185592 0.8037874719091941466020935036309373 0.0930526257464634305510057008454300 1.0976708523215120238316555269414944 GT 1 -94.4557453821013767337428569983367292 0.1778160712471770884388089986986247 0.0063461008958846208639532149002239 1.0063663229938896308085017063448035 GT 1 -11.3790896063574486846194799545158763 0.8347582306599237258309810520202301 0.0765841261814007113459039736759560 1.0796755784369066645666730391447997 GT 1 -10040770593611094494392808940.1665983642590062023194903872282363 0.1809469581494791512347008677543867 0.0364300373426258525831768353363948 1.0371101807308330164966060738020290 GT 1 -323812.6044160300556271410868522377945190 0.8581164795254693545858681814693302 0.0220537928426505295504486111037997 1.0223006133666306870622121581646110 GT 1 -20409931109290987777207654051370166520510752.3128577775000278280103166294873663 0.3615064924613191889188957025942631 0.0464503597827305692300503505024379 1.0475637942404014166356743756658823 GT 1 -151416100785410178890946334621.2320166330629160641710859280190960 0.0742522160879903979569279594037019 0.0278886790119631182043554533804062 1.0282849533140317693894566551206084 GT 1 -128270976543285477058520099027201448559341.3046042611808429619546611983251868 0.4452052508685657347952311691451687 0.0809810413667296889699869989512397 1.0844485272056467689740959236031371 GT 1 -9450716049170.4749732047963887548538987029038467 0.7887956734665840655742705047177418 0.0121816424516739118441831648207817 1.0122564467717987357557828900101808 GT 1 -474328688466260312123258242732658211584984.4347899672778775311121989467786760 2.2925509487922688546665342667928567 0.0473447267234611949049873747669500 1.0485021687037417973838179735568535 GT 1 -1834570371505369368159295.1213939330481496174344391036289627 2.6033036820102956934229650855380657 0.0211596984339694415094368183000146 1.0213867737965836452101227771804804 GT 1 -1.2850863824831111224676336163748332 0.7456902782870837936301280091006363 0.0760736224640795185634406085656886 1.0791228885063407262271441096193349 GT 1 -5217265980884904632558527.8890234254072381366807554240688093 0.5458415064499578877453856284172122 0.0981664895244823792540245758440464 1.1033253541429509019680467963888682 GT 1 -3996511263001041.7439654510743289282436223541827102 0.1397073520408759423430473462103281 0.0627748347113524915085665629079055 1.0648317211419345327440496600335670 GT 1 -19393.4149939687194954642019752507758494 1.4409876758906917570527372481824836 0.0925616252354335462202169080182359 1.0971296217444075087153594343296543 GT 1 -14300573459037004464189561396314152198.3666412275831907281130687845196571 2.1427326890221639749357738653300229 0.0340860080399368355147699074779522 1.0346804839715209958839864537844963 GT 1 -19909632682903807321187874504.1080231381638736791339689722262042 1.2199042943495555653618094853180400 0.0694982787524569091194693149306278 1.0720313530922538471664661209960272 GT 1 -16091481168321374842192434929.2986379909851376723079512055067896 0.1512833125258813098194326954721258 0.0870995267497998167161803978915451 1.0911284150081251732683911060770765 GT 1 -39641760167143877306.2374104600584138854084357945892433 2.9010760906315827323745936219365264 0.0546219545515497402915286443324138 1.0577479393779415673047482840050122 GT 2 -109907287406031603872613161995159254071.1433334598032289029639896821824343 1.4210556196773381171253823391049764 0.0328636838180768785665947380277057 1.0334158253336955259413562851484634 GT 1 -284960903260401.4711117363899902633805276814570985 0.7387240467677168333514030616981077 0.0711516011093453017635985039815333 1.0738097409006858592193229868413563 GT 1 -864598262357999125043378073582851140810636.0475600990418279659628784437730246 0.4277817182188376325794477119383862 0.0205421581147305530824050107489002 1.0207560829676371377842928684098894 GT 1 -285973765551129469957834095338.1614307834175724265969680849834509 0.4378156533572217760093744662681874 0.0632750286764608556273836152681576 1.0653655602950846667986333297106256 GT 1 -59223386092512179270341672.7797719663335688460060691260194199 0.7350495941438165475901179668567297 0.0588715225534353961724338701086207 1.0606756158296325415840378404376711 GT 1 -377228028610169326904066.2380243376329813430083522202570910 3.4262178001936525641726687798783317 0.0257494861486014706291798897274892 1.0260868073306645862282405042951147 GT 1 -3799360206.0612539333884222894001497015430079 0.2018626050498499935908532242877333 0.0421187379269721718803629307398820 1.0430314522492522032861129617310050 GT 1 -850870649785.5658486461576512272243732664589389 1.7579843582263699747779418830018514 0.0576701587029689792453105630498606 1.0593999156971296306476995867771384 GT 1 -9732505954001517138357736561.9549314683058518902691218941584264 5.8835254000562218559117847788073157 0.0512758804729959347506019757800155 1.0526372291402736995574921272383716 LT 1 -26.3225555598880357525793659015637184 0.0270369270910712910654831155604442 0.0090167108185674132115199451690851 1.0090576073761276390667832448263317 GT 1 -129.8961973594584536658086956277913749 0.3087523236443633956815883017921664 0.0181909899006609341922502118869498 1.0183584802773172182040623097468427 GT 1 -26333459164570775847465.4139010514421403890331973775558740 3.1726865279029409767885452191755941 0.0026496529690919287562262405482952 1.0026531695126404631315200575943628 GT 1 -9640125122784190771065947450386110064121.5049047209878488892391824549713694 2.7234705517659505841975128722120171 0.0700935258970747747233797358485099 1.0753118196326934758111366550512653 LT 2 -3240458269226931776270140091.5010285583545907821105260769372446 4.5276338764434460391173309716061136 0.0283612976981385212922263895133951 1.0287712490720524952540761318592400 LT 1 -29957709728028151924133721390036857652413.2361256103186555631450347887343764 2.2927205081865867418833642526662960 0.0028037173470515053994442427733404 1.0028076551245315246171312232425657 GT 1 -31568198232.4991967633506103814676271428863555 0.4604617696184892951385811945713199 0.0284723407452964364774440382307499 1.0288855399011607540341271332480473 GT 1 -90536702189387329228942459469673.8444267146638963333789648864785948 0.8724950592834959660168202629864286 0.0338698211020300101114008655616998 1.0344566930850910256118537821448494 GT 1 -48299259099476.6042962070965516473482478390694917 0.7531988298458233071244897352176807 0.0799189152552173314766489929992247 1.0832934772306090922818986941276083 GT 1 -202452646043528140858833614.7956244005729991131827340045966437 1.9871717776929920815053890026129771 0.0293367665474360284715883179860113 1.0297756953050035569714856157228024 GT 1 -8910872157668681413177955.2938128971578008480145053033247435 1.3807395311876189083822312028671896 0.0338428641755440737233696077746446 1.0344287915134331300156518122228463 GT 1 -11967877422087.3079989391424401712066961973861394 0.0248731795283727258329135777627715 0.0589947769450149233404472096167566 1.0608065888755143234648176992929186 GT 1 -341797170730074121445117274369881522886238.7937863272812265181317410707857153 3.6522539252174210556164008035262154 0.0279930830586141006020670265996255 1.0283923583521765103468868179903294 LT 1 -1096931154057762218970769.1748498555354539849053345981264277 0.1389820621704761076988515873988674 0.0411741094039001262027744427086804 1.0420457736616421484638565279215235 GT 1 -70456544173764763.4322123072899781974943642028107152 2.5132438515461784162748231256226857 0.0067541995066327477215187562550099 1.0067771123423098018718646190385682 GT 1 -108227330655662427082045154521.9899516461362982340507455876543415 0.0749939452461985906393413716937927 0.0984036284543875428967062012931242 1.1035883407260568086845434043869862 GT 1 -11616859226327509258139172.4830675263906763426767598607293707 0.0088831897951917862188723619194565 0.0911956703610863173433415565027198 1.0956254668992727721897734997826353 GT 1 -2713863851031068002341494907462537.4115022722584876272911516366541305 0.8202579412328161773050978099860876 0.0658725192734984564327640023444736 1.0681423610665336046583043761939172 GT 1 -3262707116.7428820436081252093247356777930892 0.2785773355827940679632030459382523 0.0590799156646259984880318583747352 1.0608970693205509224190402583289826 GT 1 -6464002.0668060554373964872066748828811306 0.1656708957129467632563664496533020 0.0500313572679574310888414350894650 1.0513263025827965226202178433540537 GT 1 -22454922346143938038800541984712893.0070886199383077856425441776231726 0.1044938502409437089810447358913632 0.0958118685742146350467061506572438 1.1007178302575635573256705701070161 GT 1 -817.3770014808374595102663613300839242 0.0006476183621956479195657004514851 0.0013839585976816531593350819554126 1.0013849171528842507915671734513373 GT 1 -22397994034323161605828852368652.2720832402044489835765397323384794 3.1408029975120428949385169622519806 0.0396648830369151667754877751227705 1.0404729752646820245780365130203301 GT 1 -197184078241969201330.4798959080181697870071556846996492 0.8724797946328771636579470317862135 0.0407363720438301798412040559966584 1.0415893430691849358918927529784114 GT 1 -470212007342910763011579449343382381.9524397862844470770543826131983619 1.5525348358640598173577553977083727 0.0246795452989575495950429074704781 1.0249891904966828119789589865501338 GT 1 -1009950274404623894381315137280377894328.0012505589867570731135183169287960 1.9563046241242582777893915070653628 0.0924318934493549452089001851549023 1.0969866671184763365804743181304533 GT 1 -196053376588461926829.3357253349103892302350136633424597 0.3333160922309155619842991159140235 0.0068695387659109343499404371610427 1.0068932426662873006013559232128761 GT 1 -6314.2562749337898390197885447972989209 0.0456132665616685934817442450515344 0.0514548019396075054089998399474486 1.0528258385964889048973756874767746 GT 1 -11877070259029597716224464803.3452490309663890580534970259659921 1.0874453594925191222216241285107456 0.0395114675069339548887768666690424 1.0403132359462382207504274977196879 GT 1 -306938172435679915565892281995484524.2967758930260128617210919016528788 0.3869256017541476696066067775892410 0.0231930494316830769038048264189311 1.0234662405595281540887512479385806 GT 1 -81810107319364642489134.0439365476853105530029871499192267 3.9157209618578714534318018058464550 0.0041281575851377658022168893693475 1.0041367019507607930308796441340888 GT 1 -161981124918451301684.8916727719805533966676162380628333 0.8784878826866694275805120829963665 0.0827143387429311669024198561878606 1.0863363380537942766544077972096579 GT 1 -6591303021407823482635.4732401400853242247505119618132934 1.5377299724594856011286859155809656 0.0059088118652373314856712426954165 1.0059263379671283119751833533711526 GT 1 -51282493208492281359131793318.8736064101526772107855087317640449 1.7625572416574378237814174624718989 0.0622888769208732904441027511208231 1.0643133485397550019756533191498436 GT 1 -1285968225707992059335094555071710198112345.8793256522208157203907752117861361 1.4378234791976825100904936083863496 0.0631021425526364819745199163064310 1.0651810128806741976157974120426207 GT 1 -33929343360269992444247.3533314972567083228094845311024858 0.5196091810187780504647403442318163 0.0794871990255231545436734261093981 1.0828243718609121552450823141142414 GT 1 -2244915725607697514537826023101.5306040806375536463782637799972156 2.9689500783169264982387355927043315 0.0767793900430848398951822331657154 1.0798870590007614991349480068755999 LT 1 -7085603243281733583708479.8878109912262946342735905516683232 0.1779563939730211550225577511085684 0.0767544786722293920419785212890855 1.0798600762465859572243175828920950 GT 1 -41136414558901907781126409253757721182.7441051809947529719240528502586939 0.7286186974940717041704383388827892 0.0993572405848078205846620754580781 1.1046465934329632945312170971773215 GT 1 -59545922138380.3150004532082163219476588351366915 1.0070707529103789826833836827972455 0.0094892024960387384825410673872161 1.0095345118388776730362634502484817 GT 1 -40191435360757308123847654459719.9083587371164603214921232721372022 0.3861639519905398081730053029037478 0.0338378270405550552885087115619206 1.0344235779496436133133765647793787 GT 1 -5325105194407149786904228.6539501302262059161870752346690915 0.0224348948702695047985926106191879 0.0102881450818181802448059944578807 1.0103414338566144512131843646090199 GT 1 -2198.9470188481460102946010708231568903 0.1984041629075275659098087136232439 0.0008548178059163563095741849572335 1.0008551833709995539833950105743151 GT 1 -9689248815249849377895399022093683.1075063973227314214574006578685862 0.2120811276362776484250607273050927 0.0371186463654864832064098779609615 1.0378250797229487209206573017789898 GT 1 -146470846958995162744.7448002101936994317142935511885024 0.1444493272138816993400785589607544 0.0167834462107695426542066043694141 1.0169258842271825255054074158013292 GT 1 -56831.8349327715539860267675664863639194 0.1242722450500698942826476254377940 0.0677502168388911594671698853258859 1.0701544925205963841976432642765582 GT 1 -7015054881355637.9994863189254095270728301903077817 1.5047557947679460501403438516602913 0.0438707655439157035018985363316135 1.0448621925816207550361444088672577 GT 1 -3873323674847944732574923.8461601624541897424838177748832469 2.3880114509603980291611291928597549 0.0926822009522708075300981634196078 1.1019925028781273605197533606586186 LT 2 -473121667666491957230125994.0579085159019961377664736576781517 0.1459579090966888389380175825003935 0.0062678364090623310605791822532240 1.0062875617624089034704656263410152 GT 1 -354918572498915.0844030982676501248378994765207747 1.8385455326897315232432182969074494 0.0795421731432968671079750914602606 1.0828840948320003111107076906185056 GT 1 -1157.9856892244750638704249397170544165 1.0408736117817889730390134992086035 0.0154965499282505533620341520595885 1.0156178765193059703912044505252219 GT 1 -22941535889211213075.7769283676152737568209045298210226 1.2626867651450900062696769279276524 0.0078386549232184472087127623212345 1.0078695386759754243896302456501696 GT 1 -3701.1702035654915815425535174260262820 1.7630572349472442510326355605042967 0.0907472586310721272357225565610375 1.0951321801413841986540945751343752 GT 1 -6006328750682422821266868.8345966386444363868147905129599651 0.6037246353421877289454335391146200 0.0280760572981293914547946083364093 1.0284777258323562409171480719565819 GT 1 -95502169560845987457684952474350748.8644614947709947586519661157801192 0.9533751014208427180746057718358883 0.0232268881613908280086141965699980 1.0235008833472616079293870447121579 GT 1 -16564.3133668744074991184385989439344516 0.0400128825916667168754690056981599 0.0694144243278699519907180628960655 1.0719412397216639872791579740346936 GT 1 -1064992803040824491586.1172108117709390970482873822606229 1.6101951347140532473873285100620687 0.0692292448277582477275226404627307 1.0717422670718235984373234948836598 GT 1 -56533985908084929139487341925681443.5567213348359676237527490587090615 0.7722296159229049891451685146495478 0.0740429738088366442370975511764433 1.0769274534137457634853859233724952 GT 1 -1245826252441163945481706824930171506.0135195983509318842862114257126347 4.5797181494611465926537157737745399 0.0960529848026952194869020004350184 1.1009845318150882908407319083676227 LT 1 -147388071148811.9009543536510032276430057714606657 2.2174602881902327878166741376734485 0.0899884971363638026841603976520587 1.0942980390416415670063567225302778 GT 1 -21.5420649495177098333470118077101712 1.6453092012017435420475067808920814 0.0328177720954936834741506305624066 1.0333683546389310286912841390930840 GT 1 -2349552807581663151067993169.2840121110840975891031518743534909 0.0449144964382336426259911152297818 0.0563232224867854820487151182147596 1.0579715681698742209362667748184825 GT 1 -889158587030523911631431826.0996300569851928320281672235524845 1.6421821953016535174500714811741252 0.0703191799435226500965689519850897 1.0729139559832363771981540765796872 GT 1 -6365.3764809336716951399948649486949220 0.0764692630269024771865029140757054 0.0170632338710696194787632122282180 1.0172104883415760843936201160308801 GT 1 -15180222108960141064155015219077.4219697495656217478879438330662540 0.3946584750098647535212386426933595 0.0454057757472028372463383602687207 1.0464689248656895005047669111432149 GT 1 -355239547502706.2313378000309182535507275866782347 1.6027215824227072595629604120256550 0.0286643284668395075419610346390674 1.0290831736915829785975444506313817 GT 1 -262632535037194710908411086766103431132.5639744258788726373878268976825419 2.9502959226327383412272285170399252 0.0105419017183516354369982345677569 1.0105978611912288165916648780327521 GT 1 -214055690388815001643665579221257.0286591607236897820823746477120610 2.4287754135973966538536609385471631 0.0217640473497486502184809791587278 1.0220043776673446083462188386236361 GT 1 -164504328386315579415986077544.0077287880826437665491601028557840 2.9981522821031837669829804552611259 0.0280738847141227993565707545248831 1.0284754904912118297706048928399876 GT 1 -189030131492106866720638534589408677.4128427382959897740089555772510426 0.1902198228431522727693832456110225 0.0232795481201056884013350929078157 1.0235547969712485504398182247375616 GT 1 -680615486276445.5227460280320953846048256428338568 0.8728838380226590479581386133725108 0.0566474415500277800971681203190475 1.0583151972383297459813025154390195 GT 1 -904563448946045.2525592996708305645979362971253173 0.6361242005021879569471388463309110 0.0946607592934677088866866827008209 1.0994455539120951987083761719914493 GT 1 -271220917935780881.3577031427262402740756773895073250 0.8905400928771276945026528319984858 0.0118350632787719600658739545233966 1.0119056551659576684384834436071793 GT 1 -4495036659295838985.3001230184209161717537209096166802 0.2126778962107401669098912679037049 0.0014521901947977987743012838610750 1.0014532456449120212003650823562131 GT 1 -446152026950010950140441227999963726.1135316480556852282972471709581509 0.5478765076374299023676565655875927 0.0224418361817928630327395254162034 1.0226974862655054445406173738012193 GT 1 -1671152477.3824547009425650880989218244294537 0.0022265147300382706475996007170489 0.0355052641842399134595782195352184 1.0361509045923986634497734262891208 GT 1 -5813589304099824675992429236817063443447984.9386127392701562790002033664273402 1.1565607242936878757874164325496916 0.0421505207123178434870426453227088 1.0430646330973352828932587489721999 GT 1 -1568335811788.8179054078115179443239858330410890 1.3601907518630463421794304442079202 0.0673218314332397975116591547130427 1.0696950802277096452991606603605906 GT 1 -10310968216000345509406840289924698323.5081601186167507957521790077136956 0.2128099621607848127218502013850725 0.0800608552316540928740275748422642 1.0834477581177881031586500011100385 GT 1 -3589643.4645180081247598537033153879451045 1.5414154566563922755025944306013911 0.0381626205264619618249147890089693 1.0389098868123142232849028264630034 GT 1 -49553897091084319734.9031269172894288538823706885502224 2.1224990761946010227753875969884440 0.0388035296653515851766042591080040 1.0395764472711260779681794959857136 GT 1 -30371969296817690063.8657483049657187866340359874220173 0.8298983314806686509765264574376555 0.0233455004662230553546200689048073 1.0236223235319784274833535136423917 GT 1 -59783237059764761411.7082627260505010237539272254785686 1.1511684309451496740230747467291722 0.0510038772301957448319484665612743 1.0523505659761250601017040862229856 GT 1 -96.4709550212509950961015554716904217 0.5909192450708427867250986077427404 0.0033281521356150266532187856591360 1.0033337027528881535051508582223033 GT 1 -1011223478719887125624.5784989164681414469295774336866801 0.5733581264816285552135931124250349 0.0470795857135014358064189730281396 1.0482238895323593529983282701108133 GT 1 -909567560738.6580164156388357061031833781488804 0.4721421200167913659412044103729536 0.0779488649231910114997862323029161 1.0811545959256959326739845455535594 GT 1 -1354457271541038027443516.7931159902707605048950738653951291 1.0092189794293800808809470189151837 0.0982684103990903320812246537100413 1.1034383757075311076536282604077749 GT 1 -2947911.3780793219069325990766356523975972 0.8008083422342455547139077929307288 0.0231814691215366798513320142522333 1.0234543853597915528355927962853046 GT 1 -260953771358.8666566013360507965489993779977611 0.4515372301414852740460616187659502 0.0629705841409895792258020451559185 1.0650406035769225990479554181091580 GT 1 -31372871125086.2330196717710908983456489314765620 0.0379022727703956728160161925076237 0.0130791748607501356863487242362521 1.0131654604569961165196397715520511 GT 1 -4083477981075238715481975355.6062733936724171081183976717887441 0.5465364492704094134621355206540345 0.0902110332750366707683028384631205 1.0945426110631362480339143036210793 GT 1 -25796101.0483752123478385279004109696346368 1.8295764553718521476440998179996314 0.0669366162114798911006684263398574 1.0692821449776506199485313745809070 GT 1 -2.3308073587918092422411600149380642 0.1334514498704492660218635006761415 0.0738510267744322982537502530700333 1.0767201790621136136950937398409488 GT 1 -29.2352480735776077280263855818170556 0.7775756854210315023609242466790289 0.0593427598231497584516610916583747 1.0611764563612101599654016305098787 GT 1 -1478089822605293761690642253005.1555874580069498349711393763317225 2.5728497921256158787670976300428216 0.0246886085397600343560034451723915 1.0249984831172461292995717391754826 GT 1 -397480749396216484087213594139.4229839009295712074256082141590531 1.1680693255803625765243638446490889 0.0677892495934254510420461742239702 1.0701963628137318511416782497772421 GT 1 -9239589.0474514579924184039597242153099287 1.2385420236731830904363800288506325 0.0616512381308111819684679303045881 1.0636335847222658198432510048123227 GT 1 -92544240.6120534878914731751985538666584150 1.2350169490686994018666426288111445 0.0581530646381971221548780829175651 1.0599125066087510699032119721154938 GT 1 -1565374165103592931626138415549383684.7041294776202517939369196801640070 0.1792601300449254165349030214866250 0.0785522496613228431233567316763327 1.0818092041432021817083571267302545 GT 1 -17564197733.3548994929185445314545566870983440 0.6046293393698842400335787845515470 0.0539192674462886613918415272501271 1.0554273726057236116853963845399053 GT 1 -265265767957841363343104479467684443839.3182890423230060879498752694319729 0.0113840903585948698001740699907132 0.0918681562507028933207158721225432 1.0963657085546198031505733611768077 GT 1 -4550149704004571283151602729.5257509984331494804389772249702770 3.8631993839337198731292388439116805 0.0782976724187824296175207150920431 1.0815329626724624744976802816189007 LT 1 -68604.3004378206136957745819991777376803 1.5519130876804417660322161840623776 0.0131075179731418205118388953425809 1.0131941795990656635015039001073526 GT 1 -36988257233771146708246460827624.7286075746503095178340377792113125 0.7364213207734136626294500666155239 0.0068870939216582891093390875353141 1.0069109194082583165809181806711217 GT 1 -22603.4187575619539214083398170228728503 0.0739239264117557922715572773108430 0.0754474205735786201826840912817693 1.0784453564066680614303242011948484 GT 1 -34234422.3360709738166165639043878193015366 0.3425736689147954934404514101907471 0.0948788998560944728368710364972063 1.0996865319205722265611804942376508 GT 1 -73554193703354884140981384873713021714.5959549330511502445983526858050011 0.8646505087696345385806713825348362 0.0825396215629857767656788812551805 1.0861458842507135593525309867764636 GT 1 -82029723948.7945932253662072018831942278799256 0.3092353981726716066121338880636497 0.0870899903184630201158923853281313 1.0911179687636479584154454691964675 GT 1 -776897306564442126054205324936.4078165120676801379580059749188195 1.6810673009677499613537410828385657 0.0188989679645224182271396714756687 1.0190798358966419157388717436585592 GT 1 -3770040926897117.9511468686970651758037810970822880 1.2058376616185314088677546261065383 0.0231236551725508831190663169236999 1.0233952011445677881225351091290028 GT 1 -24334286850887.7512510053572001402775100577042632 0.2588244310043529021706437765968521 0.0630513503335539375518903352461624 1.0651268011627963906714454516224360 GT 1 -164.3237694344677389691161916298459211 0.9686811106442933464964071224239851 0.0532554329182624429519683774635252 1.0547259507097135776056260404805509 GT 1 -311.4487969754330383642766610816583252 0.6389809981102318640989635340059067 0.0534544057807876257788707685963792 1.0549361381044666270447079054766716 GT 1 -3630558367007662909342499111769211549164.0961550912101678609550233687199324 0.8436164779558813559412630562273979 0.0613512441412934540660594558699298 1.0633139316707953297355058113041881 GT 1 -761572.8366439198528280403106726397260992 0.1585080330525190990560501306650125 0.0618286915244148659941182025354042 1.0638227150139552056848316454665078 GT 1 -650046995.7576178272373030485764188399919241 0.3792397129981805312089611475205535 0.0347837778682207423273148255543683 1.0354031383565629417236573393423869 GT 1 -5157847036561429324.3290540277956825471763870372957826 0.7330306000053627406729708408990787 0.0951656215918659882218819303411011 1.1000033593139170726400214368203932 GT 1 -314255549921.5137975776042444820481997348531675 0.1965447196356445945969948109438477 0.0274420227952208118447372716212122 1.0278255886035263040704113729000173 GT 1 -14.8899226099586666716721434555018458 2.1408154642701374788281462672438739 0.0571116987537928664573531938155568 1.0588074537926858326440531502859231 GT 1 -38221654106306147.8724742651775291642667695443636544 1.4750531931088384355186118932125430 0.0409019337559490664656617257912460 1.0417619504695833922578487764841127 GT 1 -330670436388059.8470326512499890710637436170927782 1.7973714351224012413843547512053035 0.0253328507905982579438632084316936 1.0256592516958146671083275341890476 GT 1 -13263954759649749454629.5072772286584881770486604650168673 0.6527643954138232901885687380787308 0.0171224010291060301657076289073146 1.0172706844202137257671030400070747 GT 1 -11689524442990783948781.4280825628640703394201747832947049 0.3025640931278984267578499385045222 0.0264566663085070375350226913950726 1.0268129418667918561970273073624617 GT 1 -5618864732428385805428.0461428892085689475553723097204578 0.1155709509260534754176306296794584 0.0336454908107486182542674493931093 1.0342245253544260171709726378204874 GT 1 -646795541646724544154.9898794976366355663239675622217367 0.4459229116175725575735301741549867 0.0253693296779857028772640390029527 1.0256966794167367295509230535963465 GT 1 -1703190463483608402187041.4027000479868151406800819340456899 0.1998007717141395704123254202315671 0.0600483454607318399419272800977576 1.0619268363819283360512716173428352 GT 1 -14125366745175281293580241565383484551118.7190703549670930106624862197656539 0.7007531478532632735077609134232373 0.0757354643953740080842577212997866 1.0787569543703434943018536132207119 GT 1 -2378758734.3831814270870933407965655305114351 0.6732558944140928370268656698450584 0.0972329281519933477352630913488860 1.1022907080667893967422327902090520 GT 1 -248440404017907520129210892403773166.3319098386885733533879436449759107 0.2766008103766482780045990712980298 0.0960749728797536701822116103523975 1.1010088566307221980755316068168302 GT 1 -1591008534864444696825911309000928563499810.9012351877315217392177221167781438 2.3817132644982562476502748086447845 0.0558865341305468231408545612257570 1.0575089231640972539189338546230859 GT 1 -4483.5265285305425191837598328874070556 1.1313328787021545144371824380310616 0.0844563826040729439423926230720095 1.0882372727518722567939755743899676 GT 1 -927919694086.9852330837474272343649509258216463 2.0119052206565458909931182537600773 0.0275092957329832197375745979156504 1.0278947621295465661317177665768863 GT 1 -124346564189883498365538482.8888792556026832206374331189072227 0.0164248914018012493459428186590680 0.0536636668491653816178232661940621 1.0551572412448204540035600798954779 GT 1 -1931280288.4163614629439078311886544427290212 3.7141814348510864901224074295392600 0.0262969526253087692204752698167299 1.0266489013169062600678237114764415 LT 1 -31945153495061970917948439223804827760815.8921053485651124269470452425484579 1.2207143954829166525623784564130135 0.0001008026357421054619567696931193 1.0001008077166692418397151564312397 GT 1 -106185.8487506308764207332360359988532474 0.0809264424800398005688201213011302 0.0820569876655497002893214776190655 1.0856199683556171430331943007102893 GT 1 -148862845.8361061643620334394297423089418380 1.2838285098672503368064652976052066 0.0599423966439405345155927289462265 1.0618141254296194334972496563587306 GT 1 -1313457165369675399797804729813484589698.0597349868794734606091024645142003 0.4606975632547862693822464895127639 0.0383173996374985944848135157067034 1.0390708200108182330027305456626124 GT 1 -93419759984705551429680044435891507873033.4848556038747985712950691938999440 0.4295305269557581009017305455247938 0.0711452119311054759621482900338313 1.0738028623225742417413498054504390 GT 1 -19476630312.0361884375777850523040716120648797 0.8101127552115124358680102309583628 0.0904787506757182630627404541073382 1.0948369175538625517939602815450699 GT 1 -17191901.3491950257681007532035902247539503 0.2656062692999259327125623185046110 0.0929191250814772022675852736047725 1.0975236653465702911605573564769398 GT 1 -696949223810535423070309.7052451563157910056171098623532701 0.0174759224229896729925866056909869 0.0293237785721563416156245799866295 1.0297623148781573094866394078088684 GT 1 -284930837.6966432480461263534020080797107481 0.2089152391899965323421334923402369 0.0126259183329466714972424781356002 1.0127063025731317888080598310307537 GT 1 -1305513187405.0322614028492724597925558600031719 0.3218954813001545038757345514614595 0.0794663327380858430786847393267109 1.0828017040056480851733813158788224 GT 1 -1205978814048605.8135856304645801928858808943602603 0.5106495270819060415865191195896564 0.0805471886282939057249287673640315 1.0839765561331855994422458471415333 GT 1 -1026674.4925742218247359305069501234227200 1.8591144540288289012713735929583819 0.0968571724860847983153339405747533 1.1018745680683721335763776571225500 GT 1 -21481716333837398905101939119063060.2947662370653635447297313341766855 1.0792508944422259065311940599005446 0.0272099568569486253947095484496036 1.0275870030785244404786931823108545 GT 1 -64868516514765479422200979293384.6098164987789711321578947770006723 1.3349276711814789777344030229650549 0.0962301581787107785069279214002375 1.1011805507611914607186390163717192 GT 1 -58.6849144182089007718272746611294157 0.3108008044443226434310245311467001 0.0852678302120090790655833301512697 1.0891239671689467502599852945059518 GT 1 -21339649506450.8973748229540653105436766735140122 1.1139412086878012316994628805348666 0.0676201560456062367194420630053481 1.0700149894347239922783286150430461 GT 1 -21866485937831256351282450411483938.5622995159673581368924314332652409 1.1497612939762521559257720134245089 0.0166935443458539453728382673665482 1.0168344519230126652240496116716163 GT 1 -202124107068729310456564416379387822.5365265978571411770349327734082376 1.1029596278296706477711270690709072 0.0210628473258830229631657078917712 1.0212878339421526261861819390636497 GT 1 -29047237857096609596361696128408813.6870989286111851705621728138284198 1.2730807694383541250711889920377523 0.0159366651931574145777995435796126 1.0160650193600980729425175735035142 GT 1 -158227.7522149365543760938853608528631214 0.0722337172416699613556053848104572 0.0626541004298817672114575943225109 1.0647029084402973578296962245482890 GT 1 -733025375983029699707994370394.4058197557388374648923635647959741 0.0155910043915814970308752514446932 0.0341559915392709329795506158010882 1.0347529397339399633603593769410542 GT 1 -1667136489756438636343192783155103239942822.1666666695086330704201869816101659 0.9248666692645040378610092492393954 0.0807977306022400586349909624038530 1.0842490835670879643605764388799161 GT 1 -9841445133004943918756801214142024536.4576610072797863844359262258219123 0.3926596970233967830399718068211176 0.0164421891987526667825501911654141 1.0165788621980311860661228183227213 GT 1 -421703594042589522207446444603422364636.3480216933851232005974321488909434 0.5150288718367285293715635603588679 0.0302461629557822051649844253896763 1.0307130159344227273273086508420361 GT 1 -10254222.6210847863905388615505599497468895 2.9798570098429065673160751498600220 0.0246546825302132527250602088549961 1.0249636989244203076687528408129240 GT 1 -8.3084538471575765597410126831199950 0.6153797043064131581658647734869132 0.0983225437401401757946348514331051 1.1034984101641513077139338245928203 GT 1 -22722984533754499646789609535.6885696194808715434579222878114142 0.3278899313787005424447054987671141 0.0793307718941729999126638272424591 1.0826544515279349016768863803396597 GT 1 -61636101011.3042424880179101738896306516549132 0.8034999816143919691376526354315712 0.0719379269152686197995315717057680 1.0746566593329865136707788656326953 GT 1 -11.7817630009772432207351975822509269 0.3308970851940519813822610087810464 0.0914670541824963695780175046482748 1.0959241278325980344274606382484645 GT 1 -595279873428.4844176815069952529468664590972721 2.5209123848885282372432016317776628 0.0431277466127832073449406080920169 1.0440853829730368220562657918883158 GT 1 -16366557150961263690470227738785.9015624870318371948953584916035104 0.5145793123067711343972476904636031 0.0425793960512953601861163008991359 1.0435124815234131771687081063880689 GT 1 -52723115718519874273552141958596.2886928077579924303580177412670980 1.5595547821985987973338776306448065 0.0282438720603121208306723204478369 1.0286504031830524615487762657064680 GT 1 -481230269680154295172742674461668536404.2133581123968350378436375794612125 0.9820316476982340046298515496923092 0.0478330795324273348637649811660622 1.0490149229348397870191712339892513 GT 1 -2365127807693872976803050681286590.6715500000272934757372218589445151 1.5508323007245213885592224694290372 0.0626388044164262958779531305696919 1.0646865901434334343852706682352139 GT 1 -647414419057402404390434465328441032.9195708048619788121319672266636546 0.5539040316508748012311259699907118 0.0854318725601266027623072179999986 1.0893033169988307066378275761984272 GT 1 -117575597346659888617571.7437678357449111558319882579300956 0.3074553679214828488168622327309858 0.0368164401293446790116744791170343 1.0375112728138432480625513547526848 GT 1 -658.9562509451979827526657191060532205 0.2208279272920848577943173793343953 0.0728119101624883868536994583876826 1.0755988323394508466234982624724444 GT 1 -521589738225292491068974413866744120928399.4623573420488553249903907649390010 0.0693135236250116880000406341513323 0.0333619465045749900023120125924713 1.0339311519460839848835681918076154 GT 1 -1023.7954362705824087659024683064210371 0.4428825739031043760279044607610076 0.0148137025975614117080314827146515 1.0149245212749880557262049903682691 GT 1 -83394707645721336323866726788.8965442677141641316139635646566152 0.3555570788222956802493850549516827 0.0305024593949373487008085577739472 1.0309773410689579511185789342842481 GT 1 -137511069480.6287102423770530447506091303156028 0.0176112129541159782613752022722420 0.0624107652712414331190706713392772 1.0644433419565773236628434232170130 GT 1 -2257398155229174847171942960781427919.4429519304148283736663192239594067 0.0997842061189624529588630591159065 0.0476610978889819342286970193032064 1.0488343179276258687930671279763027 GT 1 -1706475578264.0341494759278024952018167563103069 0.3566131815425868243535045487405866 0.0074141727537409842852515976273363 1.0074417943447387644282932879845156 GT 1 -496321908574778900216.4946751207833467971510221922192552 0.0981535079364685720041637747109579 0.0554446639228487550966469324274984 1.0570410060625866011456548185213078 GT 1 -457835174879881900867905641504345528627.5463966891912296781238798078819391 1.2572939130023716740610271624951748 0.0296459315889900921135830895241469 1.0300942551075068612288749438273953 GT 1 -1944056494022072870516513165714.1535026389593668820965534445043561 3.0668678975416499098910590358738160 0.0454079893932852076199642242225520 1.0475510320582167227455095285510545 GT 2 -221314502719939780743.3201397764315760389410623433325320 1.2045291298561542332826867788382519 0.0394461714155899171658505369223328 1.0402452560904139480960680031406696 GT 1 -3150248567897416319.0753376373711690961429040566408095 1.1645890818662650814681730114174386 0.0326859001721093384484139094038516 1.0332320174211259246755729060549367 GT 1 -34254178553004906415196219380084549.1910571623472249993319699172958975 1.0002630210630892948351736949003868 0.0066805887416091973411253964652563 1.0067030037607019220845604209333941 GT 1 -1447671430688179394253889498236567333075837.8274278340380911033047283069938526 1.0157551496270721239706399517053530 0.0363254183068990886221777461237470 1.0370016122192383594231580663212092 GT 1 -25993.6677326433721166487341802184948712 1.1824382645541672071983142375333078 0.0997164512557520396526709583831137 1.1050455111166912056796973497490675 GT 1 -2690588494810390226752948141.5788256293410479718147584812980710 0.1887596443334772333531420431700266 0.0557224466621485530618777347912951 1.0573351376851977386510774061695730 GT 1 -5575.6327128057359293951783487944266861 1.3408931095901644665523520367544357 0.0191105160359941288686100893905340 1.0192954822726731996108957161381004 GT 1 -1606566835149254497932832696367304.3553351701390228997954759502558652 0.0957495284360916147419643715394775 0.0803913270225700691160240613666461 1.0838070548876607222484198957484418 GT 1 -1013363424187507734.0378472808190275363111709605494436 0.2227818226629849416499194608854261 0.0498762770822938438463506100748071 1.0511630682171293513494138944824714 GT 1 -10882334186444923687198883060228103.6540797663847860306459445011916390 1.1954750022904267650875553516673976 0.0797067429244428073599777019508438 1.0830629020406673852097704909584964 GT 1 -1373055049391084619986.8924042176152232241498201703369230 2.4108387865610503255371423926064796 0.0157972352048346479419604003490634 1.0159233413739922435942696553652053 GT 1 -446242940054042830525.0011500981522086923814310078433377 2.7394461910866858336847622355484555 0.0892555536882956194169802844569452 1.0934929410404621563179107433201444 LT 1 -26294555207507195405437642012117604624.3925624312591468048204433897768112 1.2429626621363741665363276646354903 0.0886430895406463062463042367000657 1.0928206796775697624694105069092619 GT 1 -5945730961185346616275473.5699296662672181998393602907125643 1.5955969254401451239366224628005375 0.0644027138682936353030114996871738 1.0665701449478609145668794223624618 GT 1 -39133517993763920260540.3069664113871598252411567375248476 0.2080278574718320586861096950981199 0.0745155471390058249490746367021849 1.0774379457471830879120040322884283 GT 1 -587916720429237863085015465896050.7379353057577415040215000780846074 6.6699152441769962819938978575694801 0.0705175032539774304331565162844726 1.0731273028252428378094765888123794 LT 1 -31527283865187058838.4206256770070140480145432538136241 2.7710093015047517266345444805776374 0.0350489440377505450285141972311214 1.0356778981395179464677692611233083 GT 1 -95224.8933382690996174628979302847242924 0.5431745898954488292072645300828060 0.0791444906231511113887848630092085 1.0824521395330258269851397989759285 GT 1 -5518270458954091559290736114741.6531288390519405584181829963475939 0.5009359747629726053172390207024542 0.0748779091350285390689691782496491 1.0778295600553484346402274438217458 GT 1 -1270587947246318089000.6844063749802527906715804864302333 1.3318873294943882254599316967214302 0.0107138472354830042888805617386647 1.0107716537543387240603026574118446 GT 1 -495714752275784198884130446302.8195040954481477870379377557444381 1.6360141158308083822139692715305453 0.0405927827900730980591702362501036 1.0414396673138182371151161130138790 GT 1 -63117008236907946076414334397918145885185.3554622012668656978840461064489022 0.1384598452888679472497359645875281 0.0548632931524419216316296967241596 1.0564256986203756038149237816119317 GT 1 -2676478669405107149243284048579874311769633.6604004812231178417967270126602065 1.2481858350625478917657433091817240 0.0382345523356941598043820033709905 1.0389846754414958039708767089901780 GT 1 -162379222299227500.0237135599308812403339681620607584 3.3572513963998801625923902666215877 0.0000948113401894093111433548537315 1.0000948158350686361609391755687711 GT 1 -104460897951086090525035758439.5472228204165022643866908596501778 0.1065278841042764070966919100191788 0.0774507472177410282682850261251722 1.0806145139428052552559349678463226 GT 1 -42865730781412880795686866605767422.4337311322321951475280360005381241 2.2732262579062222777306481045025619 0.0315224542204290715422145410933334 1.0320299809370776094911598913724961 GT 1 -285575226978602714063957213100.3341813668853077768250884754074031 0.9023094227966770623523327929272248 0.0215471478353414410924964338943394 1.0217826770936387845826753653486833 GT 1 -3745801751937585393396700896.6654361624763560672446670584526538 0.7486611583725814927579899871100613 0.0364331085847113049001362410460181 1.0371133680935560783178045015750946 GT 1 -630693478212764569639.4346516311221259178208062431955021 0.4623842906171213742680599548282849 0.0900073165553288921996917214979274 1.0943187196742547628289750137292377 GT 1 -19425093670423066264.4060311647192936254972402520097020 3.8819367424272102573558257766216949 0.0347869176437411754781275049504165 1.0354063912863782281814513840271888 LT 1 -15461565862542668260418984498.9557061280108374420048390978245149 0.1036979913937052985212716581310260 0.0393600753149605968623642713989632 1.0401556283779144266511465058440821 GT 1 -2163290645400337.5911769877595889757965316313572721 0.1863883034190132279042791763525516 0.0620900190469789027370597841588723 1.0641013037144840624653106936061521 GT 1 -7132278593.3710496272258043683113976272601495 1.2047149240859036787648941079587811 0.0965128955129790223679642253822178 1.1014934418939686544248806834573904 GT 1 -6004206.9122604403213488202848647694132299 0.4570613694593207185681582312779286 0.0205261405562203242591420196137620 1.0207397296067724189366000905131253 GT 1 -1794642678817460662551215181037162.5916890204179944171049499482805571 1.2014017885463819693289512182913586 0.0595103572376987964882657179858272 1.0613546427819649497439440717535115 GT 1 -1449630877116580931546038146674244.7722258506912718808847183392597790 0.6678840501589730850778878565773936 0.0759380981471311018004500901976604 1.0789762162371462494803484876456425 GT 1 -39.0222185857591815960962286232541751 0.8592783269982175987062941467103467 0.0314776064139392892123779608487779 1.0319836744756406681016011581383861 GT 1 -4871407504312062562572.1639196328707761183644352759073983 2.2048358499716029385533322510774920 0.0184626948235685250447792681873629 1.0186352576573730031026684778928861 GT 1 -3970437753834568122.5811130974346481633704485541345084 1.5525073311950704806420658063243094 0.0122742690065764180783585314281634 1.0123502199814250052978975582902112 GT 1 -68557915929104.0988185276545867307908825064114644 1.4871984164675186824598072857970333 0.0129595964610832660063115808074488 1.0130443046834420279664613857170453 GT 1 -64878625950923924127549070131648881.1958845215047150972303593692587223 4.0021460783805280336020767069095279 0.0402241989179222362046769498991362 1.0410555623345958574251144114910224 LT 1 -7718848743935446146874345497263354342143522.6093274486108226050274326282315329 1.5085526197249862675709723775426361 0.0375807093177104779725458542230744 1.0383050701727095834914844267712239 GT 1 -125761137724595702742659330603313.9295443235558181908524555591286748 0.8086858167547450361997288373945963 0.0639248553674940882475004033934700 1.0660595229999944325033016398808335 GT 1 -1717.5372852260673200124963672699537948 2.6952551647688756201438745413109100 0.0522367852517110477424276865682825 1.0536505813979731714174337872950938 GT 1 -1311.2088291251317299090165651115126208 0.5294582472664731818688922444289013 0.0954739868287709965201486286793695 1.1003442148353772216839801783447871 GT 1 -13.2731887700337801351435190097172429 1.5762947954186360193495992594523920 0.0547243667472120135970248713333975 1.0562787186176184939387053892416843 GT 1 -12139165131947335323.4577907822546433191525892450227013 0.7391677883875191637678480955671741 0.0393347601949021619312022044098076 1.0401292763745702646688656700737106 GT 1 -1818769857424353862078861139419.7747529723897424429367022871967209 0.1259675454125530607520831190196167 0.0791815436175009112964275993059775 1.0824923779194543628306734410443925 GT 1 -11153170.5810162969635272997741774932503245 0.5202701144176016640710217141830101 0.0688883481384492097162364180493905 1.0713760820841675779900278990557706 GT 1 -13.7466821140069313416437432358638428 0.2572192721534663323842409578123188 0.0413649405871599959140922721700399 1.0422448193672551134745480236394269 GT 1 -26595359465411089250857982134800558754255.5427668388129592889968584258333990 0.2891254948340175927055318946478477 0.0047654194455279093504834591600002 1.0047768102591846390648439352774138 GT 1 -197981360953563274791.1537097957757660821069760171723082 1.9863501918763144783500918640213505 0.0173198581986195753338581157668307 1.0174716016113822791160433714846942 GT 1 -2182999494969831104760331.9459564046817985613193924068495547 0.4843191827993876104993881085546992 0.0446630193455864360141241658745937 1.0456911414176238797933230199616378 GT 1 -62307336744734002931124205.1089405228607366852027835261379622 0.0399690547411774426813557857920407 0.0656990657453868344174469099976285 1.0679566932323054924168777935575996 GT 1 -2372228680.0567963006216700408771184893724615 0.3870336227988496670995075145053725 0.0430111972757145868117211377563212 1.0439635879902291412594938862347181 GT 1 -2836.3829600892346165292574891245752353 1.2569939692154597706887880309721478 0.0090295266605410698223007991684226 1.0090705399098892082314552260897753 GT 1 -829067555850350137543567801.1864098003816311938847696912151677 1.8500019404655901605248115115239609 0.0515171251617405004260800835726045 1.0528915447639893021897766025160420 GT 1 -86558254.9086048018831494505647879934693276 0.7316727878744371045570796086142208 0.0067581369807037260081497130955492 1.0067810765995697950119665179145063 GT 1 -10549531381302813653678550601140922914396.8517989685683767523831886938479628 0.1526751643316310170713843790845259 0.0890706252759838199401873784445245 1.0932899097284768821056458199093849 GT 1 -5511407591490695593779690634481632512.2025328840461428844368309710833901 1.7307687934147438782455653779456543 0.0760242396761471628371146082266104 1.0790694411002986441664782577435916 GT 1 -357301407.9271207100117540175034204569802901 1.5327567967522554573340222733864252 0.0671949260141198219662666860611637 1.0695590238789620792206569509142405 GT 1 -1339.0208387099600394219737855523117482 0.0080135615631023505287957422411049 0.0853513142473304370263633804591721 1.0892152374313707423352423411610015 GT 1 -1.2462419233790995288546663326087165 0.6941901366480360797162196797054333 0.0698428094011332020158881605721568 1.0724016849681504083137504397406241 GT 1 -116575534143173952.4023624132231960142675687848845686 3.3965706419593387487504477769466288 0.0292139157103449908427444974616935 1.0296491395034873227116085870127937 GT 1 -31.0581556889063513207182030600123183 1.0107464176847204128659270738413596 0.0080037141082546328277213606420451 1.0080359157650138292339359380544957 GT 1 -83511492609992670807225550405457513407.6053762999433536792639751363585760 2.7711448476877440471639629220970048 0.0730660230638224961438443685539970 1.0758729382437803592293908150374074 LT 1 -12552069729296244207695.2094819848544935335294172820506255 1.9342937740690769741263858586305451 0.0873409356527336715491274776391153 1.0913928916240549192609573532298282 GT 1 -160393034408607584164712291.6044235360436242053922288895660513 0.1747532883244815440940578830476609 0.0842021003042889026217925230897955 1.0879595721711285785807213069729774 GT 1 -1372296868925333.8858458056736755839925266761786435 5.8005768128019150873842625907710121 0.0246271999108530734198087459759425 1.0249355219990976593397072772056815 LT 1 -557778416823045578061041138854.6536745035339115741728200221211200 0.4434461007835603815118388604362674 0.0760748468586808811317314723642681 1.0791242137151911515700532649044427 GT 1 -196873766931424023089670.9628950768692079647755341724186546 1.7255929667706240390309990315176239 0.0298130231319721275744786334973993 1.0302664664027036168318780249091614 GT 1 -37111759.7954745398986013959290183594224369 0.1514917808473336667547031638477933 0.0583827901577376107604683434659889 1.0601564459704475754489112411223553 GT 1 -15133157679773802418198454423826590781799.9039549119264459124155830191892198 0.0318869862634440025764745611098165 0.0863938943862903982505508592783987 1.0903557570754572829858679400362036 GT 1 -255324552465647.1842955461458315159053105784541737 0.6253626760017001488467595124759670 0.0361354055918889523134205156265219 1.0368044564695845862947087191106672 GT 1 -62836183501669797779663.5576281737364897148663019893025399 1.2028098878831746850304939087275111 0.0555862933570972548272943744511223 1.0571909602770928918897508521279951 GT 1 -35204732658327008.1211132070942871773893512210043727 0.0794936500368108153544637889604213 0.0807953344097214611178971396512113 1.0842464767530328221406494951989773 GT 1 -12891797373244251243084466573794563612.2253150354853028808095205911168218 1.5241826054266096342657548973722149 0.0207388201703703133852226198979339 1.0209568897746577980424331489951424 GT 1 -2897422722149160653150105548325639.6854508458677950617384084310075911 0.5800983203110462590333392696505386 0.0147882728138499311446488417658455 1.0148987094507824340367857622040989 GT 1 -30479783506.5614429385519965967540336701284622 0.7124775736205374140277092470596284 0.0218011114307782005134132831661108 1.0220422670774625367901897560467228 GT 1 -2351938393452726626304.3885874219887484710734535755428320 1.4027904765587608933617663010820464 0.0104861600098146399868931647948238 1.0105415271851989845889660946971372 GT 1 -1117532782369028.3015503626682148119733525996310943 3.1186122990890088593826626491787943 0.0437539098853440776428456170684811 1.0457408156411002468838930372621317 GT 2 -31447536877907867.2397206677955020289507237723901427 0.6621287827033945765997661646764817 0.0651529562784471471012065689997544 1.0673723526783058482929596837521523 GT 1 -81254375115193381451677956026.4050918786736796510860730551432834 1.7221172457689372451837495746454686 0.0069380152152218737035203191207455 1.0069621951481833268118535255577272 GT 1 -2308434564.8620661207871533422961694191779920 2.7908745909466816581333489507846576 0.0285135381837049097948070235353908 1.0289279456026612029122939429730466 GT 1 -69602829200724644145342401050023165469.6445277828256288765906675601044230 1.2877819876876483359609668582850670 0.0796555796691371324172775944070470 1.0830073090731356715830432808914073 GT 1 -3524696663786197056068681494112.1047339144906689242705764969887699 3.2504642605144980785933815440368323 0.0318803513706532443517096347279014 1.0323995953879628534008987068949855 GT 1 -2109.6179798627841192957394580684954433 1.6230977571892423113592922417039247 0.0002115730598646541187064621032930 1.0002115954446018782710759661957954 GT 1 -17353612150217048828905751793966226907.6804709613149795653028365839541484 0.3531694770609572459684894876150400 0.0989756855031403385786081735702550 1.1042230356148773155854041685521928 GT 1 -619682267117100037700880146299194788426878.4233199859885694486554232467954670 1.7447729768265744389570002080863189 0.0745457991881221970202813509663537 1.0774706340797315878874602705018121 GT 1 -100248389567.9063749120734735945123336322540605 0.3612368249481203291667435850327739 0.0672253400862518352413290639820130 1.0695916293705227461075296402046083 GT 1 -155574670889582883048204.5739140338912892771506698845909224 0.7212561137456617729674006920788679 0.0218927474701112096350162925798726 1.0221359497966186962938926640338607 GT 1 -12639244.1885869095918215519924743719750630 1.8237897413059115365286828512834837 0.0792651027239609880246070095026281 1.0825831264240810876128258222828465 GT 1 -4671.1077041503613555237917627033163459 0.7338165938182297290567823220843167 0.0298994676977789930334594115205145 1.0303555713064413398214331707322887 GT 1 -15652490628705515351065219.0132274483931277196532209760022935 0.0348826117032006358866933019751716 0.0051369311864307707632279739390432 1.0051501705767916664590313611885005 GT 1 -17297938159171026592289.3763394954034910871062974098731285 0.0522177798058437806816585998207208 0.0059926528197852068275111274681387 1.0060106808234890949488134105439011 GT 1 -261288732862681686364825307386552.4464723426752276883399695571575934 0.2500080170305203983671633722233344 0.0484930239734927276332203424319563 1.0497082606632374989537418492933211 GT 1 -39136619989033265000055545.0479865432866248786838118637181335 2.8808995186382491758887517628155921 0.0235512044423069339753547651780171 1.0238329667451269107113425128200743 GT 1 -7112016486702.3662170730920260215096707491309219 2.5470206181553757294284356468381471 0.0718053661920885525823073179782098 1.0745138334803841359049018463936975 GT 1 -10783401939017633712973395238395777146992.2054691172266337505639277932821464 1.2943159720387898812423219372673295 0.0427387435589482248396599381749380 1.0436789295493931385530650217889445 GT 1 -33464948378054099153346192812993.8839059369908544158016935824497286 1.1731493281670466666829809948466807 0.0715011462277875910749221288571349 1.0741861326842555095683697419318731 GT 1 -205699266611156061576.3670926064395705000888811432978666 0.6194657896871300504079244319936872 0.0144789274294778169544726267612941 1.0145847699994767938849167205377352 GT 1 -1660909648451604048678173.4581675404696539006617656371630667 0.4897539122875719113618092335274745 0.0369479428652713195893116140923936 1.0376478113919590228783599463041716 GT 1 -51581132127444416066295239165454.1479659128105335801940505822715454 0.3706397250469227387269094950380546 0.0820559404918242297660403215434327 1.0856188275733309868163465305351799 GT 1 -139130590529797616407363147674.7710456950850283215933750901703736 0.2955699219624633843082952908116553 0.0359700432816043846426269745096434 1.0366329094204023868796646229692656 GT 1 -56218178913406043217183111756740373002220.7938699727191526874684784471459678 1.8863315733776503609449124605663243 0.0905964469457368106892281114049355 1.0949663305675604269200529140776903 GT 1 -1561.8002410088810924945232960535135264 2.7819260454183415145271781598094919 0.0713188289316590139675427107083527 1.0767270397848570543347272133936372 LT 2 -8.5281600899701380163542525863644862 0.5013702947898088768730354085182422 0.0403329345408728380984336256982540 1.0411688614850549261621350083435407 GT 1 -6.5607127630303145037025321916867512 0.1707532268254192703993763524282285 0.0848843028552913890732425392740192 1.0887047767332120896804298981878658 GT 1 -8856805012796160648672927973787179709736.3579765599548966589818088308403151 1.0852919056686062953403619745523155 0.0188125266061430234829762052607540 1.0189917332978689635014937338616928 GT 1 -995982.2510191763580729493560299789354992 0.0442734637148867351408828675001604 0.0867554421445143553108137592335377 1.0907515724206017816178137538605404 GT 1 -66011856287.2900503259952901599406997158971962 0.4578796363660267675994844027789815 0.0588566458321000657420331489631243 1.0606598086320898995971101563765018 GT 1 -2911387662328176208264543022522424062389.0196697607801017385472087302198798 0.9646783083258046777412036862021166 0.0674886665059675837710599868346126 1.0698739736570243486108423006658084 GT 1 -18314348993946135802933.6947543492085019035378508224756133 0.1603617179569494693543257081061768 0.0735584120566340815273609303863951 1.0764042811768874727853598205644456 GT 1 -1302764649879254997115894491.9676557917962022448912808779041162 1.6825350265442057740533975943160915 0.0327412083845738107085999044364230 1.0332891961531594098579657424720964 GT 1 -3.3031187126712273664223425537288593 0.7992182346890960306014762505848185 0.0892305094190199847558340473079437 1.0934654427394390680984687372649005 GT 1 -351983173545076550779238040016485174456523.9995915823982398048546728839231996 0.8243086298191237712689507104153656 0.0304098304099029598724902137478590 1.0308818023425580780152001376420092 GT 1 -14951324232442013771510.3811437004888614497845810052875905 1.1009674112107705808759730627220443 0.0712807588048658512874301906872307 1.0739488019964344071205816289739628 GT 1 -12929842298950652946306333853.9316643169174986894069498007639545 3.2988800264369181811779086917963047 0.0082542081317355602516246472253884 1.0082884627343205991280709531351191 GT 1 -3030655433.6721591275314712598123549516493284 0.3685121094027857120764200881682988 0.0451809613679595621541706351070766 1.0462334448000043380046416524561834 GT 1 -8063456061772976428969378986914219678282391.8681710129681389723533894806974365 0.6455645704775214706014880779554962 0.0144163153772484231742614590599855 1.0145212400911632366818350944586062 GT 1 -8779231303620973278098822483.6900413631069682497208999559720742 0.2074524617257338714260938766377296 0.0050668485432714087067867251217627 1.0050797285461209864925358394128630 GT 1 -17.4641677735311515766673869034528456 0.3800738011972755753594329874726526 0.0906524665421670155965877471900867 1.0950279328361318252740349174369338 GT 1 -46067491608006036172292664165791634280.1682793502441933216776703148459092 0.6964302416506935110971762297973363 0.0109949665736315679140715260728361 1.0110558579624988603153343161110278 GT 1 -396657.3375968935651182489335477860076308 0.6380905228792882223394649142467009 0.0445135943116031202949732868358560 1.0455347428353625544184216588069576 GT 1 -1020621583020858970580.4816621128455862031892267810074361 1.7827224185696045691027502929520018 0.0635255690752345497449014212343998 1.0656330602739624742349319408142157 GT 1 -4659412008063823413328.2405127823810588465998042368138141 0.4136061996205515566635756962353523 0.0807896268469286469415975392094797 1.0842402675318585502817978884131208 GT 1 -1566523286381528556905321334386.9789013639285139996382777152333015 0.9824224038526305228807698793801988 0.0169446075923692692217287034827408 1.0170898100587770133853505661018558 GT 1 -2.8333828064550240140769445589992075 0.3619476193679505924935482352043307 0.0851035372236901440426118059515114 1.0889443755449019821096773498145194 GT 1 -32090790814938894044431727742791119363.5400259034198564715057150361926245 0.3662066422154721695031078566927484 0.0944983715605581037382465574370655 1.0992662032732712811522322694088408 GT 1 -1425.0026926620052157637195015876914087 0.4079999967060503096182831908959181 0.0922052661627940938756267463054483 1.0967369899931147354215783221108352 GT 1 -6054047013517.2242447550292700277155455189964752 0.9991619557376712660562868944642776 0.0152011553952448403328408352847553 1.0153178773408967622051935072533887 GT 1 -173233.6134305747423795009403350537739037 0.6895009816391556346330507017426193 0.0973652803580732160619280898251164 1.1024373260738622034820110998036499 GT 1 -45880627697770608609454326420649325265.0312530373772520068601679869520320 0.4351034230042868601693550051385154 0.0480081789745727372870250595880602 1.0491988355875229941011446197847153 GT 1 -2.2349577196954407363966168712563295 2.5084622855702277028306456083772620 0.0522940754105035024830220322330554 1.0537110309802121263772003236950050 GT 1 -28485927146257957075900.9223628521343447471079039870248363 0.6948154667565102690291429650282565 0.0133899651569518600733677847449473 1.0134804190979506182927512408258108 GT 1 -270181131996834110790696695126022352200.5512608304019510348928130637798798 0.7886836747868966371555302490833418 0.0420102319459416789869692123508704 1.0429181815964365923280632287832405 GT 1 -96932409635236848123946613139.0352610071298846743864487742543076 3.6374638848134635299895159332076022 0.0311863386634550634186737240621195 1.0316829855456652081589918972174134 LT 1 -239882209728825443595506947993015870333.5049626975933873739990054398086829 1.7897770229863388552052655691307901 0.0737599199581029597373745629488902 1.0766218122355097788713736662019065 GT 1 -254.3141292843297889332742777841879661 0.1743885355796101610222706481526562 0.0215199321758916210746234853350951 1.0217548624872477480815364878759379 GT 1 -4505294558785282941952729943790.8722266035486160166768071191268980 0.3486942588723452510142017019069195 0.0140711920332062172392823704303697 1.0141711298596888761483590822464662 GT 1 -6071056879680123804196960820649368.4184392416626063979996989920586657 0.2301154021632963235043455652467325 0.0298759754585513136243690093532911 1.0303313553061377004601554864002720 GT 1 -544763467145124716929375636499.7630287111985911249468486612945780 1.3160054361002714989472058432856970 0.0052049488653264542419031274710742 1.0052185417992044388143149076243820 GT 1 -71751822.0158451425888601447921955659308033 0.0321975685035322037163034084541271 0.0614365223148220812686634200824494 1.0634047878585651041471837837199546 GT 1 -9503908055097848203934148048289652.9284191494980179910218208236422589 0.7419825646620361582366752584592394 0.0839117165439318766660798390896914 1.0876425396333432728413564805521820 GT 1 -36086322660651375047445274224032948269.7464669859440677447373815361249051 0.6390222292770721318495468925494994 0.0107811823952155297241270900378368 1.0108397204620467711935557107807864 GT 1 -904144351856990485159876414099382333824.2466703497913106970867673617757483 0.9873061071066329729012647572850843 0.0864706282935403783602141030608235 1.0904397507456011491194497151681584 GT 1 -259289446054.2092074582913401085087305251675123 0.0733586242251503003634972574515930 0.0883730759570495032520871818756754 1.0925244471159189038198722013250486 GT 1 -68241942946629656162153664866.7682861374433100330324436525868276 0.0946965117311281997366618100103353 0.0477164099905924305166875495797836 1.0488923998854467771559850361819215 GT 1 -51436.6040614917099386945732408078325332 0.6332388192317405534674129488943091 0.0935988386814524921657218806848058 1.0982732880262800970179096744017644 GT 1 -5231314379737378.9913170523238744432377650849309445 0.3869379677054808822295408314038647 0.0941697970676878132532428160281473 1.0989034044853479764058202730754956 GT 1 -3441710914335055900790981355947799.6803514513052639098778345195779985 2.3968875238370468340545884881757222 0.0724766165863549505235113631602656 1.0752372735906948570223978436784088 GT 1 -1328165818257.2806000622671803247273017977820143 0.2995652776648254203643313001275107 0.0322793210450281907015811907005006 1.0328117881440892334400933931074173 GT 1 -4124234031585250.8758480190338325789132676479719557 0.9726494995210327725859773014727630 0.0569467711734143808577232509182022 1.0586325516780984753252729860262469 GT 1 -11443692734119643435807792264943.8133608789362549819196201488587355 0.2884516358257238833238165935571238 0.0462966301351332482846077028002945 1.0474025889392509239443113918645015 GT 1 -330346264713775024939277.8765249684498208256399615025047377 1.3277493033212552454542950640540612 0.0389425539106967615183291750721792 1.0397210943902186552906408320207406 GT 1 -3582492982770432479201.3058549652754601230918831772974585 0.1159893710229644579645823147965952 0.0926678941856569456119484887141914 1.0972467373262203291077461654696951 GT 1 -269495508665986976765042014994644393.1878113624040879558298030558870059 0.2784642454254676595297908683010100 0.0986469619460658984642120930911598 1.1038582689801278620290026765758592 GT 1 -423859369925614982720122286703.3737381322905182536512680748926598 1.9385320000219041572954433349367101 0.0082125285044311684560519050870777 1.0082464370944381173381231589396941 GT 1 -1920211681757612229148406016964241939014841.0066454664613926563543784292870019 0.6204354509817800630818524428335010 0.0037715731769729990772023331211499 1.0037787034930731270558370764253881 GT 1 -5586.3580277869743601168160032874781977 2.4345165049171692144077848850692163 0.0021141866120013543077055350744119 1.0021164246595063010874113551417278 GT 1 -1137867931909755114710623022651709025862096.5791353475007405570128756348881571 0.2105415173391248541817222480479392 0.0961002299896936274945549074039333 1.1010367986193282727846043008288217 GT 1 -8410654789694238854210.2144209260505940967848666390188858 0.0261639865460221198857618267677189 0.0413277459469531758389884331447619 1.0422060205373020270197373791535255 GT 1 -36349184838959374684682513709378829.8609494191087021151956162889445308 0.5880809370372134551074919029320083 0.0381437370147761770178492217612652 1.0388902542562048674822305731656969 GT 1 -334480326063325306965987304104785383.4486066938810310894028880217266205 0.6586644523237239407689494802730203 0.0556512125319587415742229881626308 1.0572597028268729367030921538775986 GT 1 -40646092127202520566459144865.8643618642214560685790175481954299 0.7643735656102852794867058892441200 0.0658399647538079115084788461323254 1.0681075114843193910053723457615334 GT 1 -2979377773.9290961677467771957947164479220001 0.5013658553604863537317906304755555 0.0022594614778871989049635617230465 1.0022620179124751403269797810322491 GT 1 -24149921460850342551452433610589.8299486426952593830006463807994193 1.1016249343805368776511300755241152 0.0296485245065949089884287584911237 1.0300969272466296277333363796597492 GT 1 -3186601733855097908544803997308422.1571306180299644136098105568741533 0.0331929842405012228965163489737577 0.0841393085152212791047255142650331 1.0878910094057807496417678271947168 GT 1 -6396580.5103543716287915282907161087680397 0.8825714939816857507276716623728489 0.0880940021287960228940438568137455 1.0922183667297865875099524978954683 GT 1 -4975225077455797.4861374050383029443317577255247742 0.1016112529793049640837001375192939 0.0602132142238742179918750686048294 1.0621022530888798419021090017388471 GT 1 -4485967427032.9512589671372097691540826112209574 0.2786711978383064820317992878155195 0.0369017567475696562597736257513011 1.0375998544721888142124202306167981 GT 1 -850512503588200862000562524.0054721147099528797244356884725391 0.9051245320370083871113486422518617 0.0995946604464358503285451366971306 1.1049102397654951286352114441849828 GT 1 -59561903041052052535.1110627362809021532798784956091448 0.8823604345198079233381594900308896 0.0948555550561989822997193234636906 1.0996607403454520653003549501942124 GT 1 -3424188552831715926634971469455730.8011655336517629608083947201541041 0.4567354112811402379513030029890358 0.0170239106809700128596395119168299 1.0171704833230465212452621544573634 GT 1 -17734901544639144485710637737950817691.6336456821816216128734846457605038 3.6674768578638213109332073275407732 0.0877983652127153949529747341162747 1.0918942225692380185077660487038100 LT 1 -455563100793709380126.4892150440230255553743866036046806 2.3909704637392236556458082844570693 0.0333144375557956194687429992933369 1.0338820045106549262212926879437564 GT 1 -550.7787134098745224807027816548771484 0.2846463176021554636875541941728658 0.0064205745303607098877684466354291 1.0064412750728327795002875714070738 GT 1 -152190.6034370636662382450496634855575754 2.1833128743958979488964456548032000 0.0744725068215016210884131316467684 1.0773914411121329990017483714215492 GT 1 -12514036.7466069278158320828172672640335787 0.2752630306815210456731961632516655 0.0072520714435722090276263811366593 1.0072784955441666065041558338769088 GT 1 -1970511501869093301459979483.0021339713884387254649481691314304 0.4431416551740920125987451256065469 0.0673178719824463073744602685725846 1.0696908349880090402345170750912775 GT 1 -1882881788937.5968486503805577192257246343990829 1.6694809993303409185016810307021088 0.0914736207915638200298853544611730 1.0959313555647662015791483644974447 GT 1 -10.7043756427826056347386372538745619 3.1731666728282351582015518687452797 0.0836261354538701872222303231812706 1.0873308485103532703389301684775769 LT 1 -26.8679025345341883735080190705651422 0.2862120553544778920804822403662934 0.0285246946563305594789613892864299 1.0289394295884136140459565935024157 GT 1 -20327923301428416397972546944645244.8582577654142248820345902602710681 2.9259971967210804661012125208229241 0.0357602091210327761104224990022574 1.0364152695786101967889180831738189 GT 1 -390335900640022237036204276826020779938.8217045499693234382918405782579547 0.4001549549728725662621895605371687 0.0591114140157031102127157350660019 1.0609305459981503540518613311012275 GT 1 -376610838879936.8273296268391683062205575926536820 0.5245183194271643380786244259348945 0.0913061674247886877447730092602516 1.0957470593895825275007303524707074 GT 1 -1088309530613707499472341.0646748912008578570791429961044095 0.1004087492112328282585963473532329 0.0340787023433881081286028381021896 1.0346729204938394054947906405622879 GT 1 -26980263975326749451305912507.2122985027717805905888819566288792 1.1018044601829278359491985558211759 0.0727158514164580497527296891512030 1.0754952354841018174557155706751983 GT 1 -123621563.4044567200435941077854399815903387 0.4033578396812053924404296006949455 0.0123124543492493321338878925453481 1.0123888805929832502787356380270606 GT 1 -7353066343383197809965045188720821.9323907466797483792140035921060701 0.0582020518411290347703509360371259 0.0782193629871822606968672667282789 1.0814480045435822151839695899515443 GT 1 -653754586314466412.2737018682516218136216231950241363 0.3954918262335816922764356352289606 0.0307762209425996390114536776236925 1.0312597556137461711648274632319562 GT 1 -163272965135867047743.5715691396438853719274642543334685 0.3907103095720764416622410609640910 0.0470405101383399253446820738969154 1.0481828842464733562000793881373804 GT 1 -548471456780679520102985705953208.4996633465647321845220025961650027 0.7443225392961219351454688971247267 0.0291177238443855898311160103143984 1.0295500578394939553083338368619150 GT 1 -388820128511201979455248924889.6538141582670794028628054554543259 0.3995421467355070841865246131370227 0.0697002573312490920515689835106329 1.0722484408187008319918142483605625 GT 1 -8250418245624479817823.4145797257444731896821712601017190 1.8899429331558891770483460727100074 0.0249938853017152779011897532774696 1.0253115365185353300761521714608958 GT 1 -13164595549979920156952157044548721323220.8565745355796452987216815971934401 0.8535864381054040199559722627539714 0.0345975169894808818549980052083893 1.0352101837572713853758342393463651 GT 1 -15901359906891.9036625116136381764705557224768429 1.4853819095788184231788535194041508 0.0760881382297078941178774561318877 1.0791385995846374111312023645169119 GT 1 -40164059660356582515326.9509256993411462334947782631868202 0.3076814010553664362177960797837394 0.0636347084711365744728984532199007 1.0657496099121585117383095562801245 GT 1 -27014611.3464824591107663135655456589188974 0.2592875315672284280029799860088907 0.0771377307730962898165593520505026 1.0802752763863974251780640811810169 GT 1 -9.0625703333020559949902097467536957 0.6152513801227613953007137630262412 0.0093285192685286517782407675315899 1.0093723024050182859368988136362523 GT 1 -468502887312406332353853.9618989330897579934305858461814119 1.2633872932112347615584379799088180 0.0225582655227022349463711126500638 1.0228165955720056969215641059008082 GT 1 -364421860705372635949.6784236733394485409845286971452095 0.2196515319107209523465579758690290 0.0850998712824096991648358331883601 1.0889403686063193095956996558222977 GT 1 -64.9980920124248453583431298055350676 1.2785699618838785241640248523749916 0.0338102526559032215794467086131438 1.0343950382365986169769352885115981 GT 1 -17022498819013450189443.8782016933828084326230389943282262 1.0175637871516219465534403929904566 0.0675318638478996875389596672033851 1.0699202983942591506961860827191259 GT 1 -616581426739587158958738583110793.7191232940456258111936818330909579 1.4974583806023501599363926321128724 0.0439737454717745966025890957171356 1.0449699034122009132589780267912144 GT 1 -125.4110227995960051479106323277667409 2.4345721621340196965572993784025561 0.0304290780512570210946555446174994 1.0309016538561210065773737550259878 GT 1 -879.8062264779007248647520987124317237 0.8401915928943380648795966194122470 0.0543024267826923742238465618238897 1.0558324510871441821398201932715108 GT 1 -120016606238435199103852.1023265647526148590616389791482960 0.4990711704487784911903743224578503 0.0303275908407564051063407390238877 1.0307969870420443204479159360250783 GT 1 -12508523671310629475112678899694.9928200907613489473914886421600348 0.0784051859416641716725998602632674 0.0273827347645025160104700324133982 1.0277646295398459778625097821910308 GT 1 -2276539305526267234203368.9423360252232588400999662455752225 2.0738866317515883349508757402125230 0.0504615211358211522083137899165353 1.0517792241542153413796828166002993 GT 1 -16676867417790031814469.3102161722338616295925871247138875 1.6330171788957738991303353990778294 0.0396666881627822122247601052783724 1.0404748549497333100905272175996186 GT 1 -1803.8067453638457058819963318795042460 0.3850475140642709278325772467599847 0.0390476281713346118312472094426943 1.0398304322924114245892875819953391 GT 1 -16092108.9600180953452746145118848206669781 2.2962768056299903293087329624848783 0.0648766398009143600698937246821573 1.0670768223544413265969701580914842 GT 1 -93235151962983155802.0686135146080137101379143292061588 0.6071765541623503990379868357476414 0.0867349445094917754344464105361084 1.0907291278247741247057155123237925 GT 1 -128777032250198862.9269303708838233626623483634319086 3.2321553106229961683005590338622323 0.0884381732347662958816587444631090 1.0925958574706784969424044382545200 LT 1 -27740251657717.4962359003030121204737351127394046 0.5930956472601713697859261666226915 0.0225654054804343923277580003517198 1.0228239003386820144660851214008348 GT 1 -135226600129976746849248912965418.1189720903625724368866645050610271 0.1684302665915788878289733674092518 0.0021604588344616726003674208436865 1.0021627959924785791633957207091789 GT 1 -31682821.8296945034043162635261169431296028 0.1057682306510354352693206903987870 0.0683381058217928944539658004503584 1.0707853046020309718491012921085268 GT 1 -7721338670443494846100831943384551635.8343345846021561837296831830613670 0.1813305399257065492905563637156404 0.0831049118950136005669429568053270 1.0867622210079378865573981011963591 GT 1 -1571312458736909774950793540667.7286057448245039400311544284375776 0.2843234377555141666150577774464734 0.0336839056189219966731857270683006 1.0342642784381718676558441760705913 GT 1 -569574499076893889586506807178442544112.8042842859212501447413788295956236 2.1188060782234947773140440078183593 0.0470420249593433765940883813587550 1.0481844738441672198291169567359732 GT 1 -25756360140850325321.4545138932732577272678282220027652 1.2705392989397494599822615239925399 0.0351015204622803392177864827732365 1.0357323857289135425005891527192231 GT 1 -3497449500.2708166721215923917058422785785750 0.2411005535021307801775403006709816 0.0266901988933941418357930805266068 1.0270528496254543174495297488021520 GT 1 -215557052635141203493346171.6581584954189822322997265478272946 0.0969027209583513666946316136701765 0.0665629971755561630032109588286718 1.0688818032005006908809385902521251 GT 1 -506352866235656325938217.2079150645129601373860125953774958 1.7430118891594095077019672542450398 0.0559213895471089336072420471201311 1.0575458425188632774181458112495329 GT 1 -504776037247.9718648501708157937880534873526847 0.6035343365449089420296728228424842 0.0637478874515210504873742667623379 1.0658704877596844985755907381003109 GT 1 -2058615809334379572535727835013314733368467.3995148636779753996224097873622041 0.6200284878498201938936809388764985 0.0088881465786686753094920435515348 1.0089278817768708717051578448151414 GT 1 -93994.2608333445664871563534929025409488 0.9697074076377658863515744622016958 0.0421401775938500552814532382310180 1.0430538348844135796603192030013833 GT 1 -19448570723749583609180709870082669026031823.4271686033654453370526605739371068 0.7124795333473256251301562434421534 0.0725860300173151537272585572590550 1.0753552435381831235844614655766401 GT 1 -2446410153879794601983999967403921537.6473512474423225384214085100809858 1.1578871858204532025263942231371938 0.0926952367000178789566196743818731 1.0972768728479088614685563983311817 GT 1 -1272878.3356855133257196680423152143111878 0.0316696925931182982853974608953971 0.0071180896094033408005697770494413 1.0071435440726040546737366791929615 GT 1 -2690.0432568885305527755295809531548828 0.4672938620900707432951433001939563 0.0688512135837905747104047879828796 1.0713362009226498051430651921372241 GT 1 -18429050.2254789441043462668694114973804940 0.2773855254387971199999552155976030 0.0498244993125272699231310147704953 1.0511085738836725850778151603657104 GT 1 -73744311442583990156289.1594492767156300560802559133864443 0.2181801570892054601570758748512980 0.0102521471769539357016699363168221 1.0103050624116919472224474936384595 GT 1 -1927254249401212144233489617450542265404.8863493439489505107006208391163483 0.2225945990636590074344790234731760 0.0569570270851783112161867456943178 1.0586434269576887340775058829228278 GT 1 -9696970796225990135234853946.4960503142030051614738953655768174 2.9010502039788013492579659926953012 0.0393542419294738097080729179677960 1.0401495560009231624861593863102833 GT 1 -198.4203592260388359197638695212250127 1.8215597667495657263751651056513031 0.0258799800842963657780995613846579 1.0262207591982672153229721416068937 GT 1 -375814354585462942937825665078975316.2758082092751690782772094045283592 1.2216625274729042570515566116412626 0.0329844523536760839071103331313232 1.0335407054302533200892403263807172 GT 1 -509397084.4574983739031556578035556711975063 1.7724711893712884319187431322182684 0.0412721413369931975665690011475579 1.0421480205303063034853666620977757 GT 1 -2447218326113985093211272607490547.7437677968046988037400314210861341 2.0484379516312597487165058954540762 0.0400368110464455013881211409907675 1.0408603400954846996527137985094636 GT 1 -53681957837404.3751496577426715107367676287737393 0.4832952411641643951783270234152124 0.0095312369333566643256412543780231 1.0095769498712136823956084369845134 GT 1 -567578233955916723288046.5631096956396311269403898681871939 0.2381677335464556902014422953938826 0.0085637258422856227823399017940041 1.0086006052434381758749268463585545 GT 1 -217026662096254.1641091288425422425312071223059975 0.6766213185424807473324961631892588 0.0914727757503864684617580247924672 1.0959304254423132993376187259450228 GT 1 -214907657343593.7865004767632699663338559782108412 0.0484869281165923173631850610059621 0.0808941185602728913029430343877282 1.0843539495092612079347259712864340 GT 1 -104028.8561909685874819055260357839590185 0.1705723569211890951403998925089488 0.0186919929092353597928489521689772 1.0188688961262598246095012106988609 GT 1 -14778838551049673.6775716316606050344833577025124978 0.0026575717036635800575253224747516 0.0416129964088084027214665786688391 1.0425036122396168760242152148292211 GT 1 -1333949863862216925649228106823.8005529056910037848252415375861160 0.1825592800982329399505192432426516 0.0375478907695124345695854081322063 1.0382709707017499021574056753980455 GT 1 -384503991699095686446678852913008872.4556162871664288308470540269763753 0.5172577458739081055728622230308967 0.0747579605034147373190518171677246 1.0776999113772167634233668589958574 GT 1 -73168698191203540365506061028274491.7714487193058923921985437472522942 2.6280829661694322526141343786167785 0.0676301386610972796814929495183586 1.0700256960893091106719577700246301 GT 1 -1348291411724622333457250135.7302007643171865162549773253747763 1.4198455348298353752750041453234662 0.0541328053551786111026529102374199 1.0556531059958734002519183750017164 GT 1 -774.9240155706277154254517112105766659 0.3723629995814591124556364475626800 0.0846842529683895395502108129055129 1.0884861945095130510154412652906704 GT 1 -5234722532466.0558454080041927469561128612025513 2.2570541270768091332765741565566587 0.0093502282773770322841550847195481 1.0093942160738111282275033598442636 GT 1 -1915547058683070254626223877033455.0939839885169370729993068017666036 0.0993030002971792773958731885094689 0.0123734344382361092580201448208396 1.0124506227621501756456569288949942 GT 1 -18822450839918368746815476421958.8725518887049270139940124187328773 0.7983353255942546007715177924262009 0.0659282507455393061950574275376446 1.0682020243734903792998826732141068 GT 1 -6075102977716105053765736709.6749444381393212008192066484759527 1.0785504429684899178938764545166167 0.0724307160328265708289221321776749 1.0751877875953644424899551005278948 GT 1 -108551442013860785289615.4288800121329921852073012519175237 0.3471807272248712111799680131026621 0.0201873207793845469895171153114127 1.0203938692402287943384750237849912 GT 1 -932412262480445426069873384263018651236943.1426466042093475195622889023598557 0.7459367207611641296127208387307293 0.0517801149410766766594012577988952 1.0531688573578042745485345296488606 GT 1 -57.6921572498355283906178513837056616 2.7300160332969339956171766451535590 0.0791046799720749596746651923770329 1.0824089082224199094124841841224172 LT 1 -243.4616314215194957175221752518997282 0.5385930125549412719814730378385774 0.0644888073230342582604183795357072 1.0666621689601257669284826846812885 GT 1 -10993958.1584391360852407519549087937702770 0.3797572738085778520872863897894319 0.0853330538704409858049163762704517 1.0891952732692854173844534958990022 GT 1 -7227581803235368506.3375518769569294654441521353788407 1.0797003650778460229895849862740987 0.0134824013761784883348043631134408 1.0135741142221041804668850331433790 GT 1 -1858959548821103708102152214587771163.6353301003474398655473176052330245 0.8954370652960303234496232243157295 0.0500947698809854508255591575586658 1.0513930571331461280222045609737058 GT 1 -7611132.9487911363300940295163057524521450 0.0624325399763568133299979715532621 0.0589350825358883980320439253806542 1.0607431540354821891455337103611583 GT 1 -1228071717133508053103708011173629119.5865991181283850961653391296378840 0.4602705912676449006498098738588418 0.0088437326678007206823889070085167 1.0088830705725636527494311919377724 GT 1 -182774811626951162411086791623821991.0272264094163413260626309072555762 1.0108722596191778272737993365828396 0.0610501349051899796776740326818802 1.0629931930045814601289795288490692 GT 1 -795234728727872786039767.1712855893383915635018644166058072 0.1455654403343809791511269658718363 0.0743177378143927231416267564324237 1.0772242326075094351751783493183441 GT 1 -264501142993371.2437029330618873224227630829466720 0.5392831217265425120731206947252149 0.0778757853629707187508252457114340 1.0810753414662217994298696727329677 GT 1 -14938185319815260161422443895.9010837113656736207222508171101932 0.3032064123899019873759709945713721 0.0036250130286065456816589241369735 1.0036315993100569409628326207365151 GT 1 -1471398487250919857843308324.8427348615000050833408814600113755 0.8332318449700064952055999511732754 0.0852056843594166736260957462232289 1.0890560306256812946537510489695163 GT 1 -569.9524163765902248495338700296953963 0.0520953120955048102275081607560908 0.0102908164581460045701288784012214 1.0103441330057857707659845300069144 GT 1 -3622448075008882616531.4677700897603399099648036403270734 0.0016052940667318305420740501751349 0.0836181174148210323807841138547640 1.0873220988020937206412428031326886 GT 1 -5530551951588571492587956367599031164.4194863345684142803969676055399570 5.5528589515767259151478242087659188 0.0544400179690019890737459758403527 1.0559779534130125324581887251579128 LT 1 -1000673544144047423.8031496741577877440567356326937051 0.2332760759118934120818393422876756 0.0680263480551920577761310078685691 1.0704507351416474839877585469364441 GT 1 -9666580533955923.0045635741376135770103561550658273 0.0028669272348428938216367813137462 0.0710173400894705361764976116797146 1.0736652056702380142465004627993076 GT 1 -621765136993716204856013386211168797.1677210882532416135472913385886315 0.0835300683768846532821004363786278 0.0735574187338228935767775718367743 1.0764032089859457024682790482530510 GT 1 -423109.0846045916356941648237360504400973 1.1888569970162506888577949204791875 0.0413549784946376532868001032207658 1.0422344274661222739312150717770801 GT 1 -7899918835834507112156871805509606.7579957666073747581244433956859834 0.5011634918992878382117777056996116 0.0085106779621300454903454143182821 1.0085471005831826327472161442938275 GT 1 -46301195042702138684.8413229739551712040815556134100007 0.1051237363581427310502783541694331 0.0067876532883190131700271373536859 1.0068107941812516368038465202883414 GT 1 -110219200956100284574724541719293787.5801533063966847144330048261883075 1.2431780420228402170473676059906558 0.0878903138541097640854783640083956 1.0919950262428403900974400367742101 GT 1 -163913136594423168447133069468.3360696457349127911652443062213286 0.0556803958690049469879693031756791 0.0962568400289909493028416531370989 1.1012100740346126218215530354424355 GT 1 -1797645331311049771942150501560345381780.9932206216447527221233238726999536 0.7990750138556014085959418640746470 0.0549349324027647354090675751327232 1.0565014992585145220542564896791409 GT 1 -3418804.3065908299822841737627918929411048 0.2505211077567941141558930975654986 0.0479542770094010407585362083455622 1.0491422169926265878543398976542050 GT 1 -1790437391540182630975457.3026989267844289130353672815512825 0.8963611631089984970440842083321198 0.0556380334503391174490107901436781 1.0572457471890477130964255890581076 GT 1 -444731.8050003928507637361606373047600219 0.2088089174295860550473120115074391 0.0374983791088842417290012681505288 1.0382195287788980905169743563833673 GT 1 -120394927.5096484706300908833831116173715079 4.1649100877702676617486205357345551 0.0605357004408869486236063898189754 1.0624454602554950518664953957457492 LT 1 -19250127076074580593219288019563098.5757451849385292325253248542884955 0.3546241590434168933504259598942618 0.0572635652358331334922547904232820 1.0589685319536458449642019588773534 GT 1 -1974982802448820872744953494600.9899199502550058234061423901875286 0.6355595395455318684039066331826722 0.0966347761543542857968424759459454 1.1016283512494803918912052347335179 GT 1 -5525674326139169667517464107816451258.3028061950946700028580433225696400 2.0663385807002936850685474523145856 0.0325671116622130164415478233987354 1.0331092225432714221333221002840792 GT 1 -1118349052081209126.9591463109694329512212949667366655 0.2680754537764076785836122404777482 0.0360528368896430451852739442869571 1.0367187959252141331184859150029828 GT 1 -89080497033451703691542565.8222304473954915098244533838615306 1.3170787801987643136595082141423091 0.0881267499720372303714088797971440 1.0922542787989500563045554124345756 GT 1 -197142240042764622954835200151730097.7790983185733576370481221384266683 2.0943975238082272278357841022279075 0.0717953069654806823410785410754350 1.0745029961282449509168822237490666 GT 1 -287277215853874494929310.3556258096555884129194319754589343 3.0694926724994005574994821601254132 0.0533035371423245560910374327454751 1.0547767621406605472347856287631744 LT 1 -9668342125495.3225414586777176294679265600010272 0.0044030166078921844103462841075632 0.0829321153344678489424560981812153 1.0865737803865920319857698757553512 GT 1 -1638517587003446652673928389360499946.4296533827526707455043908889826810 2.7721714415045852389580488733915414 0.0697344786374885008533490243960295 1.0748978037453727165773184609808478 LT 2 -4843979873469961822467850871831918.2636640460265715805011783561395519 0.9458640888799663937868337820468601 0.0249698355088508460202752495450030 1.0252868705232179014812151930149160 GT 1 -6270425745115876134.7684430559356280349990846637273944 0.6335387959463976661808088819980564 0.0829832720021133263375511033831401 1.0866295648005776604594319036551208 GT 1 -250020767927729334047429298935824.9521576185340076133142494164021152 1.1787128767158616500044245275579252 0.0700682605109434886849912841696898 1.0726440939274936892013499811882085 GT 1 -3355397750045523815.2444631831281209413152724411336524 0.7079554053183455906916688621447124 0.0380939392579759490067067020576675 1.0388384830408139053516836799332247 GT 1 -14305619709410.4296961292720950654212344955495566 0.7397470757439598845482955144401541 0.0754552386143604685547613696488037 1.0784538124685630631711762972738913 GT 1 -39954.0826199152351318307946690654149176 0.8298189987184739929034989241411159 0.0227879750567578874920450657697989 1.0230516341654200517592576949774248 GT 1 -36067991465.0029202156615375129401078168633961 0.6053326191149196897782388418488187 0.0796326892202715107245247886518623 1.0829824377709323757592017792883983 GT 1 -17692866560615990307163063612536480970.7104108835375779148716306978848394 1.8876327270166858365790194995552647 0.0681878956257015387412155942030558 1.0706240893701217856395590349057295 GT 1 -2944333.5588330625841393130986966653967310 0.6472781669132878493802715636935808 0.0713201241235635390151937666362312 1.0739911895676804258277959190063068 GT 1 -93960.7896459440909776654952073975099903 1.6380938046252766383441950168566081 0.0537697237484261140695893991641901 1.0552693185675892823326148723533303 GT 1 -3448341263139724239.5651021132735879744293413424502887 0.8596987041335224710485666913623837 0.0780899945396266938512286922687579 1.0813076681500597683337722953771169 GT 1 -91735659337037498948755995042.0750556682357761252962768819999545 0.5183557195420507017978680596131569 0.0009368466601836663591382663659270 1.0009372857752931194870630845668387 GT 1 -309389206.2216352775635484386771225199738582 1.8463390423462993726830128670083867 0.0462196513212869792899474185223347 1.0473218765188619998011131000737810 GT 1 -34157108603325442272531721951670.2287697785815585578922721776031724 0.0693008575064984367999191245923049 0.0631935386474745707291239291327806 1.0652785694631013705698876767749064 GT 1 -3587301.1562628454263338608525985908948457 0.4986131138126672563008494725301783 0.0051809469005574639178605584969654 1.0051944145428494744357642566633636 GT 1 -20361057199.4147966040330977700621719276465795 0.0316045478694974579290312502589940 0.0710597296261468294629674665330098 1.0737108367736521480312578263156417 GT 1 -29583830642507714446601.4404805917250190425614547184251084 1.0361705609072099734620363803688600 0.0000834442671903543040112259570008 1.0000834477488569025276503609192753 GT 1 -15910472194453805886.2664206989322948813249439007157102 0.7922332120167985139238499846756619 0.0401510089667731337648748741346172 1.0409793079004114387107296810611741 GT 1 -9126.4779214181451991782202733007922252 1.5318305789229819853991203677057061 0.0899575576877780511145187614354268 1.0942640406553072077350976727775537 GT 1 -2651.5661407594331106183479684686890944 1.8144058269076329665019148554243413 0.0496271590074603319257581597960745 1.0509009071788081395162072397757373 GT 1 -425679481490976590684920147257296395.7351400713593223872486331328277219 0.8483132402643734251842839781542497 0.0714278001195645721012205663945931 1.0741071415135979377198346960130674 GT 1 -114021406446988099.6818275688464027784485324718950318 3.5479740329301514633211770749104882 0.0132015118905049756929002503622552 1.0132894264425243643055589930857569 GT 1 -529412243440401101399023153160537297.1965614167706585963134179195231792 1.8292544481738032132343821549972438 0.0175671888562493152508159230041104 1.0177233231814478028725815981566397 GT 1 -91.9980159682435155665757864430336671 0.9831794960836761154662828797880499 0.0614532598818267232185558501945603 1.0634226211928534575720904952079874 GT 1 -133286863051806637074825.7471803506797381162959139738107721 6.1797844768207889665298197001018757 0.0782890724064172667515045316724151 1.0815236321413500574195922589746670 LT 1 -15164183763493887479903374602.8817460132349789069160349573504274 0.6818047351174365103723300982646677 0.0129849895255596074189445111049424 1.0130700314835080064248368367742771 GT 1 -654863481249.2548084973990465375596404718169322 0.9468708915082685934628168311808447 0.0019159658918026893003918630236311 1.0019178037022819479195519895742578 GT 1 -1419754027711.0541884807289185762846161867148554 2.0019292284101795998111852395227811 0.0736963466849825851218189822248052 1.0765531787430846022836155033298150 GT 1 -59316339692164.1926114119409425340550373160242482 1.0911733228498408498462407973784627 0.0336512490506244353948133522034883 1.0342304840962511033018008475816572 GT 1 -1036125.4158369783552112882526861691119071 2.5941999165713236633706343766430882 0.0507117873173406081202986929007497 1.0520428250231969503827416420968143 GT 1 -10455495560142214226551260711211.8051573494487759096407554884390019 2.5878090630495875475358889400322710 0.0274726880890308927701120016380939 1.0278571196566726288337846336953759 GT 1 -168817456628443193357107214459586722.9932314844518977971155665832635489 1.7498927723310454744859816202595503 0.0725954391064115339281502821823731 1.0753653891011477288240268728238636 GT 1 -428107832276944839.2019793957194800114613212542490325 2.1517581840026860946490977450337061 0.0285029352610079578181340562174689 1.0289170315392611337075661510051914 GT 1 -797739923797901934666479887886478145023.4749326212030075277990592337090535 1.7254929261278249043847582854656203 0.0671717719056455400362261587607785 1.0695342021645880345042305143486195 GT 1 -1458220176.5158689164410122212678612795386676 0.2231741944593070144170424669399831 0.0590113634951188885898719020504956 1.0608242154474822827253568613251961 GT 1 -451303277487985456.3771350613888638308641048302763788 0.2229203030486292723849880141041453 0.0530534133120948703665687519104293 1.0545125900394355332970726130859202 GT 1 -132181556577121491884595506.6352104835053700488792177675629652 2.9512293241136799412214719073152126 0.0612242209671741570902661237462854 1.0631786152605189960319947708365879 LT 1 -1963.9712595148478355855483455256319923 0.0621260997983377229937617656416556 0.0792816151080622736327033098445043 1.0826010605028455381017396410272412 GT 1 -3.6794155274220182045360862568427115 2.6125653163631915961931289704377336 0.0973604211145102454892885139849841 1.1024319426885595422186964118307431 LT 1 -454368256279646748063513353999365.8816672513536431268675684919998716 0.2196218897709658423404546478700576 0.0953680852928059222552502562898673 1.1002271420973324882338498816400062 GT 1 -925044640289970503438266674499924012329.2353935996690773041581144641670263 0.0318072289347752274723730682387408 0.0030446751163245074674193687873839 1.0030493195692357591376216292376316 GT 1 -333.5068614539604766131763868256678870 0.4849099248895874885693401250433184 0.0449750680129314625832982660411704 1.0460178320494412632022487139417215 GT 1 -1136385874764749544464129.9556499553189514118453774785892512 0.4591726909823894850870878056124757 0.0344284320599333481484327873933032 1.0350350545991178078161641573071506 GT 1 -168091934299737160001762807822713165888.5248155240911941116832198818067832 2.1692629427779202964465928551108850 0.0474651032985434977924631504808126 1.0486285356954882228885570638244153 GT 1 -77972034039265007024971848048897315515160.0762655816911540612359224441681652 2.5801014743588395528666180664234036 0.0903273354495794072965521198576989 1.0991517008472581935369312467619316 LT 2 -7497782.2102847014433589959855601454611497 0.3725336954879422645144754879047332 0.0898707024599879550257048896642052 1.0941686043555841157162876531716354 GT 1 -5010434135401246548321034047902140026646301.1684005332922802214477947872626194 1.7463097011055655389551422105501437 0.0769627754289740179133182872357722 1.0800857153130735497526760827312092 GT 1 -23552.4050101711040803281595688442046721 1.6154810694067686869746072581791053 0.0866187226878936448163760704784930 1.0906018762384458140924417926082370 GT 1 -25165917926827264890683.8080468888511824031637792725950144 3.3666169669819410322690495624418552 0.0581017569913194954865198685610405 1.0598580325243797458393462863633108 LT 1 -1351143489275196403731982285697249573580.1480679252586151818741581319334509 0.2746825362415239408768810199950009 0.0529198495738819824017153320229331 1.0543715532358708701123409494131763 GT 1 -12.8123816720399316578198915930742615 1.2547673199223130416029253031790950 0.0463561604167668696367045505346792 1.0474650110104480991866016228022104 GT 1 -280711337756444.3749008608828684747364302473149664 0.2940762605124696055552950335961332 0.0600408173643558916622086481235538 1.0619188273889196021117094338263428 GT 1 -6620783327399108963.1886945198628974196039860681674886 0.6322854207380849391888963781147484 0.0424803859079166775354417650218396 1.0434090734456735911081346688302184 GT 1 -4029249312602700329655158356301120743414440.4994306796910100151711178522234665 0.9879853421600679103975278362082031 0.0416173845236640564061117709208061 1.0425081908961356454382134940051341 GT 1 -298979433.8601204661027125647915597055283444 0.8223525242370760416863913577539102 0.0302338938465904597813099685469184 1.0307003642375583152678649791705436 GT 1 -16626673186500118053783.2105432678974395891968226123536643 0.0605135677864004192519472247283461 0.0241018234286978730396057446395353 1.0243970252950160615119569308455631 GT 1 -46170153.0852382043594066263648504473896377 1.2610392605594518752100606245507187 0.0086505195616245188946743349185866 1.0086881524927495496556784169104532 GT 1 -378316074199762005068595.1912498480479637570521118721675715 0.0708657222952311972980189612187904 0.0665080182019120152279826140238478 1.0688229054340479866789299369189986 GT 1 -6401957699833442289938650894.6595369515867778072526706345723927 0.9985244436286576372605477817178615 0.0052214142584342964976127481091241 1.0052350934792257622796255694248583 GT 1 -1209863193757894123396996354396674619358.1940175823602888437603232062175465 0.4533886951387410054626585145364700 0.0896858651067611551177346302946445 1.0939655358607669854750132841555209 GT 1 -254808389871.4398849963413668822296692804327155 0.9008199318778583075371800203745724 0.0670309666088040658342492185875299 1.0693832690487395637367318218796915 GT 1 -2492420.2263239501776359472900844600540847 0.3358476442074394540468728858608775 0.0178222635036357175391751421094563 1.0179829926096976575164376199740858 GT 1 -25021359295130983708018415568547146268.0318894365042254649960169915317531 0.3544008487979007075816417115537234 0.0851508471307016753093227509264516 1.0889960875496938407446531790130745 GT 1 -850879407232719745414.4185236868969712578184653148504567 0.3793477315627005171515836542796330 0.0247950935490223778727094060930788 1.0251076696023651380608809534392337 GT 1 -1534432994769604938879955.7073819692534252767241716697142454 0.5353610221915617546339675897440329 0.0895863366774512083016175957937255 1.0938562076794686992848942146999407 GT 1 -9479476211131220392185.0723076125325847763989981263810890 0.5975383343923803631997278689082066 0.0083768099540017637478796017380266 1.0084120926020258315113357561487735 GT 1 -26232250194.2050872443347939853138856702860173 2.7921277503684047772009673961832901 0.0632669788006272089358302699946318 1.0674927332411341570534416729196265 LT 2 -504628093010720673522244259821226205987179.3858300669740807586137284178466463 1.8516719410146489770694476379165714 0.0573590960891110372882929804344103 1.0590698706633036078412664926049253 GT 1 -46719971374939.2127244578962681774899507061053366 0.0370496858207702685226280002852468 0.0365628990561593445740807264098913 1.0372480751021133451176273766871204 GT 1 -5326264386102383065388513154425.9918461065449948827662205470533316 0.4305623458030990246857589809344440 0.0026218300530755989349268145614305 1.0026252730688073062991365706503294 GT 1 -60910750199503605837.5040743704922898915134486713428771 0.2092581764531004387561130512114594 0.0030620535236706031906575010839265 1.0030667512017069216722173590009238 GT 1 -2512953286548933546758311707966380944995.9636116162147610661399137185633012 1.7543218929380158163199264299311081 0.0769355247227304229541703507534788 1.0800561928807527154759923687536773 GT 1 -328969047135221768665.2989068173935275043231238965457486 1.2766785598439836999330886083166956 0.0896866324532997679289754328679709 1.0939663788080888121382080254575689 GT 1 -1857528460.7188966399508272716702710483177852 0.7462251954896951191545347353342770 0.0608947978222781066625586345305814 1.0628277696514827692934649159013397 GT 1 -21408614446757794503654348550451.3529691349993541365633620996801392 0.3954497044964807761615638858004332 0.0273672419934889849282632833972867 1.0277487007175056619664025945419815 GT 1 -4780207505895120632074474085044291393.0698286597199809015091719253482018 0.7326879771999466594614264931059524 0.0112330690957221582755469579608225 1.0112966365027301072430393835672081 GT 1 -998616769856175920591409264865233020220.4151897744016831420218163953972217 2.0692640545298967012779428690948016 0.0071094502722768780927581901592950 1.0071348428368884556652189999305069 GT 1 -18710566267371516817844839756902.8445935089800932384098224101135885 0.5671329669277519007968247451078340 0.0048781831866397944429498418070301 1.0048901203592065850552374431413158 GT 1 -1138696589875457780760882274978017416.3462328761122358459985176815937740 3.2708456075338990728916080843827843 0.0485219018165921571590870206640311 1.0497386107101117612320314759852226 LT 1 -383583.4981936829274536635178241149155543 0.0565783925313516518010592334338568 0.0824579582401980551454369094610424 1.0860568780216832185295276245428665 GT 1 -9072879620005933.9549812849364513426298284292300127 0.0272381775679956353246120245644736 0.0724500010303705833177120994180789 1.0752085787086066890833616144155544 GT 1 -9794145290754.8030411849870513196178978313744397 0.1357248811858283086905961660610427 0.0541065978310909195321788374050704 1.0556253989761442557003169169099503 GT 1 -210331323049395470946.0266555926956689200191169399284804 1.2630059414909692903001890592943687 0.0593417033810751349741625933273039 1.0611753332725480390934651900295632 GT 1 -63485921941700505295609216012.3844659141834970880228746240210954 2.1528910199830192022052230831176869 0.0044711580030867534071177287586207 1.0044811835249872498881557003604659 GT 1 -18830465618895695999788193141789366.6584135776429424413626501841659498 1.3630241989772796566372394629747384 0.0716927896001661424396914115558219 1.0743925552899943634949045456185512 GT 1 -2649867646471885160951461963385357.1860856725956631333421208180373826 0.0804719264076531880038892151989531 0.0397298308735022082894270661342528 1.0405406079397373290706294622866560 GT 1 -17780.5339080106559373064158722301876130 0.9763826495304741586973234582287837 0.0949451847791444940755895922221335 1.0997597678116444939924697563720989 GT 1 -2382765748685622034069341496921312339183.0229059480281397866736664938612106 0.0233480074467516469701497405189942 0.0830172282339406441562752334705787 1.0866665945073311992542748031334472 GT 1 -1018885192582371033193723527012409.8748825172616132100545303659421335 3.3216399826033536098071541529476485 0.0920379592199978613694088622740552 1.0965527065630777057148593715550950 LT 1 -564863567040100784792818593593127650519.0697472958109800118644019406184774 3.8552230032595846611265250547360672 0.0368163145859238900630407036187845 1.0375111424716968102554045852611522 LT 1 -4893440360228277850503005.9931968381802722471920605670458878 1.7810918215309417290475875494605600 0.0945756135779140247320564240619122 1.0993515099249719797966990056421917 GT 1 -2867720466.6421399595025212460706615455666580 0.7896369555473171493045051475436476 0.0242241651006294979496369578396861 1.0245223963061304444263238001274011 GT 1 -1468217107.2649486568178722932169551072795825 1.4750428682292949513855311837653993 0.0698811019627553207573253387437831 1.0724428536547356364999547217723952 GT 1 -789.0708591066964291425155193342750675 0.0558444760925548800659560313876070 0.0130053459687463670621100998277321 1.0130906559450326956899926612719896 GT 1 -953587552.2546684723531633412540951897226269 0.6541954850346906892570096075712205 0.0561259003200432176555877648668537 1.0577624907141666552610310545491777 GT 1 -253243987818199832229262769987.0330592494862957411903029996615319 0.2334214685803760845727019281392271 0.0357127754667985029207982039775255 1.0363660779895219821050466013367570 GT 1 -4587398708751683448740.7854991965021219770580412058583016 0.0048164634862199238008655512031547 0.0447492263564451704018536558943143 1.0457813827695045347308352233886705 GT 1 -146898006851730834980785072483799216.8103631196167556902532514158658657 0.2483091376157701356329014079773708 0.0880251350318591807525747250660960 1.0921428496295497214628943604443669 GT 1 -1025135882931074.8343544716636914942110600131943336 0.0501118440488195451074682301263316 0.0864487642561910877418453197455879 1.0904158174420991804616343890906035 GT 1 -3284193630092.4501935556046815688374701772027905 0.0265355675959792740168174272464577 0.0534782923347505555026927508475910 1.0549613739256552550726421004846270 GT 1 -193233151281492916780037485903582823390177.0486931361510714657180113548623254 0.4631337113206012544834167546904895 0.0891175985133788035386884269977392 1.0933414773360846198505373342010569 GT 1 -1394864327058908.1874032861365314718736346905269162 1.0195478387604898734526521446477141 0.0661648698877693684520972976135129 1.0684553765572737056774095384604455 GT 1 -9400550743372721438530232948549006.3941698829712346900242783634697972 1.0929509477291558813507834281039480 0.0990963406961026488220898012647546 1.1043569535016040916392105439305832 GT 1 -225770447142968133256599.0197632705328071341590425311180153 1.3230345422486960190343416449257567 0.0131310535872216523484231677615767 1.0132180280882921993379270419603672 GT 1 -368847778926981026.7542091048621866754939361751620380 0.1200787955897711223235321572063864 0.0063685425233269204507587686167065 1.0063889082027716258238779493824390 GT 1 -78350525557320302207358446772830.3553200777440985805455601380168186 2.8174415563152287186678207929969085 0.0780381424424044029939642595354876 1.0812514255246626976663317360669007 LT 1 -226586098.7191910937557497170890696645881984 0.5831842734428143943425719370012310 0.0930214636048724575253776994331610 1.0976364935404712976265812081228862 GT 1 -143929741727087693770940124996691280978224.4183805578808840100657819742720563 3.8231335718632696035693949144582442 0.0973035174650744160258415158546536 1.1023689032903325962297569093154906 LT 1 -229872734889060842392953379535855693354102.9508002381682789274806104604272216 0.5332144485468427211920378267017011 0.0804572784085887247857737536388097 1.0838787742537136580054059743280780 GT 1 -1130931837939650869342.9934845292284946493216767213396607 3.8265214422104875012672638253828839 0.0252913586972334518095000634865928 1.0256166820757619110080496094435528 LT 1 -2133394701685618540700073255282083945566.6615620104062962859247006669455871 1.1630247342462002979111299864266187 0.0167654623227584247325826721306093 1.0169075935225830961914838554677009 GT 1 -26.8661304531702308236830758280952836 1.0159521722568008907597753910439419 0.0379732228858169351866030706304388 1.0387129938657843438811477588261672 GT 1 -63613810439146037618881.6467194571515970288435998611211321 2.2797732518173798478057743414711770 0.0891048535381435421653683909395271 1.0933274855342317300236751733048960 GT 1 -106525620547097159623293451980167748944.6301362726944797324604491011805291 0.3834068398778286025046123273323771 0.0993484489262025021749543836655339 1.1046368319425125734756998676517080 GT 1 -3573511438692293078.3324978337369708158333888960768431 0.1319442985290109249677264913979372 0.0761563890583926780495197656925766 1.0792124738929252426375850993615378 GT 1 -278790.5898610487825332375802025497738701 1.4008404356984098733649079135196112 0.0736315028823309449017129565372046 1.0764831784436112451205537139504788 GT 1 -912.6728832583695722935281563827311070 1.2118412179501537452145740607874926 0.0472424674208494005281305496261741 1.0483948331149437067174018463647893 GT 1 -2575.2007108891873678645499899084053983 0.1810251172672661314766632655345356 0.0445648200245416132027862394807433 1.0455883564564918247941829107293377 GT 1 -9756732228445230787366.2997871066172921569833099159841078 0.8249859994628109683937584463922726 0.0786178409358697407178841435524357 1.0818803895241642816346951933844552 GT 1 -7382271315995915623247643168040595.4106370393545855856201589751855341 1.2787431216615311331255718957386691 0.0362839669739687231506208298322196 1.0369585993160725974224002640640333 GT 1 -10980981077427870442735420044385052495581.9309829619189629953925076250280261 0.3066975439521763000571293187313201 0.0491508727006932232009106763780817 1.0503998753953823946882684851896715 GT 1 -36620974920650801452408383853205927670660.7842149866681859276503860771195501 0.5689595064955157303958400805211592 0.0219639876412806382337526269226655 1.0222087871725713018082903239979366 GT 1 -12878970015506875309937175174328.9968107037582934425071865584292131 2.2816558545654414592768566350014053 0.0191258822470344443655639290471014 1.0193111479839007715418550319304797 GT 1 -42081489.0970531869379155273040484568934282 1.3028170348519079329295033065070250 0.0126160471447659299109386127656679 1.0126963052083830369576422086546023 GT 1 -291179359732255728409241222443531717129743.1122951736027063380912784711031011 3.0782006219300788932798709125181208 0.0702611828222723207620622003153106 1.0728515740226420433471958646468250 LT 1 -1284096003009220230512467281507134.2730690150315497022793522870462937 1.8115987681987381431515407150965760 0.0849232058499482033079884496528106 1.0887472891955325439120561975203897 GT 1 -931215838684626707.9824896869963100764292180010865052 0.3899143988684065787243291256202000 0.0326650679955888101050857128982349 1.0332104815495765476937772513705250 GT 1 -1055354004432148046.6991041548864467774050878359684091 1.0468977543225420728623563379573376 0.0154454562917683015914075547836102 1.0155659799914686819133689584609764 GT 1 -4519284284506610515793328489478211627095490.3616988916391734678374436552502997 0.1623441980145281267162112196876862 0.0056824952363834601109055465274023 1.0056987020383180643549997326563696 GT 1 -5435752592484849036956917913479.8593151601099546597023018842531005 0.0657486947434711727305531076620217 0.0891124526117577386352149515385013 1.0933358279931209193782970438143611 GT 1 -9301860989054.0323829313230765576921318640759978 0.4578101657792383390471778662144183 0.0387657931421496518754103449906559 1.0395371880940285814969324229405316 GT 1 -6616902696.3387473362899624098389052527611598 1.6764873371626714996948999495288780 0.0283431297311392720830644997087865 1.0287525509725392598882040177668414 GT 1 -1927834378592993905377041109959.3784792461767446433520327367617381 0.8968211837328683594146460724493271 0.0720868227832824623490853090346088 1.0748171096065654244235241386792533 GT 1 -16401114610587182108311293130925950.5339112276783306613828701297955967 0.2795643208834935420822866444001630 0.0021067384667244537911568343293876 1.0021089607619531824937598483366857 GT 1 -13489077270669428230977408875560037711391440.6899496662124021819757767605821091 0.0976946699692676701017537804815822 0.0492140833928053872697147944814352 1.0504663557564148585806276699012445 GT 1 -887728.3243633062241808585124969671179025 1.5643548470717390203332479706509351 0.0071899191944456035930935086655755 1.0072158912295569555758088632366497 GT 1 -20527552798349.2061461321513534503345324338942404 0.3075041400101929303213024270929185 0.0245944137869273296483783900467037 1.0249019086228586717955249880234439 GT 1 -68.8504007753687053659435128262902354 2.3224005266497912960403502321265411 0.0320408222619369088946028006316901 1.0325653643530129175490028879738215 GT 1 -70955909814102214978.8553095993507282673077028286662772 2.1204965973817493628588781367651734 0.0827783850978447264021157480737097 1.0864061620940386628128102205425681 GT 1 -441056516295.5107239450177289561788891755943224 0.2461973439627413819470061020941036 0.0433283286833995483037191150793217 1.0442950275688691687493261145274769 GT 1 -25105936316.0190602306251030643627544193022296 0.0049979996776561440512154250876961 0.0931528458594249024332248448715883 1.0977813611046123858440872081367472 GT 1 -15802190834456288760036992230200003366766982.0042446630062280870500993055788211 1.6539490204459974786891222928204121 0.0467092498903356708386877043312973 1.0478353325511159740793154338628883 GT 1 -46515573677937971730.4117501318680995036905835530545718 0.5065419073838819726794442758590706 0.0023933198296312847548725469237764 1.0023961883973821308480456648837232 GT 1 -54421820560943856520.8686147241811461823360845750511188 0.5890556219025996388466622194838740 0.0883290912858759887564545262322822 1.0924761997364816826237380710898359 GT 1 -15825799663953321646037593423399.1460271088245014945509714090862930 0.0445615202745283328717566197390646 0.0197993632866407311012806597126774 1.0199979969319577579437565901916340 GT 1 -331080888147310.3378596124013623645246054211676940 0.1233769831636052203547283874715731 0.0069930393004900447402735332717476 1.0070176051936476166449783235341477 GT 1 -2854135909022718055421.0329363295306941747362484984848600 0.2156599279517018878360931134013192 0.0631740525741243087203762928639323 1.0652577691468176984812485615742319 GT 1 -11466459988353771249475614195418520.6028856012042647449889993777909668 0.3954268170779090301339396854796130 0.0778795949392696478087168286645192 1.0810794727796693168217275946268039 GT 1 -16768877838560382080265840843122396.8070153550120471359718801491572077 0.9866990603855962267328772277881203 0.0505920675398479561334419342988299 1.0519167176647788328883131332431455 GT 1 -4382066586419415872.7452459593775856585536582349918133 1.3865143261830497608088440269232504 0.0312016768859150249027280989139154 1.0316988176344253638261868285379698 GT 1 -1066654228.2216331898672000983494365157622935 1.0384070236764861942640096140699587 0.0335554627435030580363475956648205 1.0341313671262323279959573272493325 GT 1 -128584008260518848410686920965169771800802.1589072471722883966481973658423031 0.3643611085689069349695839572419575 0.0243356489242793993680627182497924 1.0246366543034520272321334369589686 GT 1 -239410649915345735803205167781152163954.5442145135417734387007729050432837 1.3859074991863840502231907492322696 0.0296125121878081397688381720322351 1.0300598152810620751271634384641023 GT 1 -11254433764641.8813219949323311145068396238026388 0.6137600805499873551959527857233127 0.0643872200434259327082306792481712 1.0665535847281946681693117708884812 GT 1 -4259234405507593303273380250252994296394.2657720689530442356769321693516593 1.0790872596923114051878895940865460 0.0358006480391932313279558389665905 1.0364572091112280975406952995510436 GT 1 -4384315.4914995060410591160949406617595088 0.8332438050869618210712220515194136 0.0502087154763289287070409411864773 1.0515130190266400030931389780113474 GT 1 -3970604.9023287751010260246871148986328695 0.3455352104995023074116068229990130 0.0934661337837588971409309468331817 1.0981268901731688793873088513457169 GT 1 -36785033191709546689957.7362221358140882376867925584167195 0.2831130609373267555221321380126238 0.0904984308224575325517449147489703 1.0948585557065452611146315483830962 GT 1 -73445870981258936130572293545755849.3833950974041755018579016711502982 2.6733055863784680587156498018842404 0.0383753477302314613565202347812061 1.0391310788099997916217909321559883 GT 1 -1355542684495910339785468478240594286543353.0789667441939809442582548363704874 1.1106516849899083304285338524227941 0.0575650684568316961818883415473061 1.0592884001936985834956552141420480 GT 1 -130291852093117406322349024336.5489101414913006357455301442871438 0.4999987905973213309646342797417122 0.0293212274733113038880385152667372 1.0297596867149898481684308293516527 GT 1 -2878534635743184006982279418942616876981711.4201235985875589001606206905608861 0.1729292378766889880222494738117760 0.0918946421145589923855647348909646 1.0963948741986602814019677538397194 GT 1 -11378767407529571548219440944104610464.1208063723463888653199676601652013 2.3462843478815119363852931806781980 0.0700867969976871831797182938563257 1.0726640272954006692065634656005948 GT 1 -73810403751865224.1704874037854718856919602150887741 0.4777953630555898868055321413631837 0.0433471995465902772476735241609901 1.0443147533011950438951524244317184 GT 1 -141190074349323061609979.9286464814392093316427387409211600 2.1614778019976470235975478228285547 0.0356727465625539207339504769884987 1.0363245674598567170892864773414273 GT 1 -547600789291.3958411201831335656985760956649319 1.5660068992598655025369550905833299 0.0889396994364207553067094010932705 1.0931461922952068486403942039412261 GT 1 -24590640927712.8207456411528663802263686080593937 0.3796410600218431893525524589164721 0.0114500263519211123392009601001240 1.0115160826183933232275940059350978 GT 1 -8592861325159456438820624597.2641600655215676745883904388040733 1.3058342147643000144345788439832297 0.0604841987179365563632625462925980 1.0623906414493350148973169234730427 GT 1 -322788060840570773040298.0201610578572321107108480932612649 0.3697820931236712412984347797817182 0.0684583682038686654423580161631246 1.0709143966529703809171902670903888 GT 1 -37089.4998384226098561173897313955634348 1.7063641501696603803254499184806510 0.0952613411082418907831460375340209 1.1001091516908945751280218304135167 GT 1 -2801063250727793.0571585212849641193723834657417813 0.3857664903516059647119738779520425 0.0897148066459782400934589019120167 1.0939973292804068637996215417951854 GT 1 -16209897140606283442463.3869182343059462041883203641623904 1.1289407753439975020222388137625457 0.0817452616175147186479148453167583 1.0852804340642718785130796073397750 GT 1 -129142381324487544901504126077395.7049215948831314177691752920848608 1.0792436904922744738034514443450594 0.0892711173526128403205709942612262 1.0935100301342964248204829693799925 GT 1 -49403438936097.9173696885361771054705427998363164 0.5967849662793293321211701897318511 0.0443955998064123612132373438856132 1.0454112589014986812369197815567980 GT 1 -28949306624358782222452573719.7509762095900214795424567931663834 0.1934097919106542637649060214233969 0.0638328238794557475866259459943491 1.0659612114864768352905818361900580 GT 1 -267829397729314705347.7440071539343045287429702365372072 0.2165084188142704752697412284557978 0.0126690189798881532201823826646041 1.0127499553167872640242050242563462 GT 1 -3540496111552637593400353128928515411.2408443081871807416926741399660489 0.5945666443345888922629719544886786 0.0761046940362660046056621861984670 1.0791565189940299571702751749249016 GT 1 -155433.9751610023772061705984518890200771 1.6500882812113905334014601144630555 0.0846358529240480037757498973664473 1.0884333179312443993738990050693175 GT 1 -5473516212584177.1818027681424013283478327030631070 1.9985713544344600317065945438421743 0.0370989221490943141280172001292240 1.0378045953566253197375096644745589 GT 1 -1152.6111381156099672215815762138997911 1.7163643557967658717575431267549080 0.0768634485838886678892362006748040 1.0799781123924025769867959577502847 GT 1 -59915283790424634807903095736564665007.0157020267741612122397816222108126 0.2553930775340335749511979098943034 0.0981983136206732265326663474343799 1.1033606429821237505298316900040523 GT 1 -298060195519119201859612905674876948461.0352644573014558272373458260656114 0.1546084085247612837557032529797204 0.0305508447439964015664845448047080 1.0310272499696743877949910148263269 GT 1 -44252301721909225374504582673487.2776340151792806951155318052924463 2.0997034690507881654758294770107787 0.0941717146786359172649487227003671 1.0989055214527130046601630194031904 GT 1 -7181671707159662.0843668693152355587247709085038780 0.0759171635093531477314251191453042 0.0377331445436165199006433698089259 1.0384634702594256263203147898183053 GT 1 -34085241829464382203979777193118860066703.4003688605266201509097494258515742 0.1390156655765022133719642622664804 0.0093380531882472756371687920369341 1.0093819261458648925875021870607778 GT 1 -2267.4658124517749155036297052232822253 0.1255382653817356310555996597083214 0.0728419890393841501338743881608187 1.0756312738312365009856644641031491 GT 1 -605008267284107891830342041445599833.1064495195023651404224703043271027 0.4805939412066254773562438251821535 0.0927436668759986819865852771581453 1.0973302523412615467339373551826747 GT 1 -149177357422238703926.7706377544061968904411699845734082 0.5790001499454624424845929203567124 0.0360797073823741691883914919933042 1.0367466717967145599297392286941834 GT 1 -303254100225760614353339217842987856.4882195237065668827149920398998643 0.1172957403325189366342621242264384 0.0586229683473958774496228288750133 1.0604115483872984160126790349857506 GT 1 -1150442342044276161.1022276101490965654604704021968936 0.9418398465926687469975992028023717 0.0068764569645720315632997002784849 1.0069002087427772704626244926397456 GT 1 -699034013556649527968.0647774074017634322062848438674825 0.9304085934096371489706767346146595 0.0434330102467199092381236703279589 1.0444044562204585981507029061134826 GT 1 -103846482887.4858988319531385852681160565544381 0.3454430265243876929706128472547348 0.0726834064956665897385873543215517 1.0754602469067131941297289924409112 GT 1 -243929745803226262012686.4455544733990815834313917830092817 1.8257777075556568493581885293975986 0.0259646947521754380462829739723833 1.0263077283088286200275555169553462 GT 1 -221590.3370778612820700410211439429382643 0.8130784852869938867213831697695714 0.0068215084060818303079447354030731 1.0068448812472139162266969138209293 GT 1 -28156788813926432203.6379654224968457295861037604398342 2.3098857872177849467677904916667373 0.0378268412482882791730549400956053 1.0385608458118502638373956932035611 GT 1 -204820723.7418110489098074106112698311612962 0.7682003346660563729878667071324255 0.0405454945799120442232286680376405 1.0413903795411632976107965620948147 GT 1 -169966470778124994091006787.4760932183827133844449244220589184 0.2449183564059448504796597388878816 0.0013477428812289142098786878081278 1.0013486519035098681644454381338441 GT 1 -421901301.5428063400449900979288461436002712 0.6115036678148510015184679840860852 0.0769809559481047307824354688312479 1.0801054119165198385557123926824747 GT 1 -109462785713212392.9123094122996459303096280209747609 1.0805549092955643880885802381835853 0.0446791438016849673960627733178597 1.0457080198516248882469569024800804 GT 1 -5449746265.8550790490224035280249697856269481 0.2494830649220618477191313757314630 0.0985074236120289135045647815034402 1.1037034711059251725859775471523090 GT 1 -127682166856.3625697329736908592797701886584553 0.3159034754497269539057394734081542 0.0039523516578459867291995451181253 1.0039601828408629729737789980266110 GT 1 -10857565309307329794913024.4371148424058642854098286587628309 0.2943453631052895581239211844087579 0.0428945017624621775631453804287422 1.0438416551122739094593553834347622 GT 1 -639703494274091652906604681148.1229976736148022253278732463954441 0.3485039616940409580796669631617722 0.0275263317536083301431940168326628 1.0279122802094315267316701403791540 GT 1 -3879767737.2431957161337810830210619294919744 0.3819728482087163985279501199257718 0.0664537343516538332740563166028777 1.0687647557412415080615894066123225 GT 1 -4712304749839.0742655764913486354152233443432392 0.5101354849825416088123346208629607 0.0025158383370621836671165486666932 1.0025190083763183571006140475514462 GT 1 -80522440.7535444241783580882292908331125578 0.0134386982608266406180494110639621 0.0710913504864901241073381386916537 1.0737448770661730975913144097766721 GT 1 -135907502237311530334957344798.5415108062769937222909402215620827 0.4887518154660729122742126061944830 0.0619094540926664059487473506024682 1.0639088038166591133035889848218000 GT 1 -112247290951384.0222048615932222684237824353816004 1.2953012252474388740678380240670100 0.0309058505672767532257706027605895 1.0313935103739586514625671879217910 GT 1 -129387176459606457532620136016096224.6584218188856903837922799438473341 1.5362856570296377021989168004367088 0.0028557525634469666936290571119191 1.0028598380046587554045589548053200 GT 1 -4002423454321877.0280124628653177034214636496922737 0.2931550036162479589425679434308662 0.0147018441008559072069988064414257 1.0148109872690351156349967906003083 GT 1 -728988993411236555987669907925628099048973.9464960550246032911999774243164178 0.6523857490670310021974489122529672 0.0669819237160826537804163815797382 1.0693307039560029441426293255016839 GT 1 -1601116842159847.0474515053369612646588053445342158 0.3350672254406232287478868589882260 0.0624658591409162513661497440125944 1.0645021048842949734044844849652216 GT 1 -1098314675617.5594994209722293391283295176530784 1.0757553578100770254226671601869078 0.0270369171543555494214776692092327 1.0274091390928645600009634159219507 GT 1 -464787.1317927371122525442888409571656110 2.5853528242052810834021897910372718 0.0460832287542059162397805502138486 1.0471788532203637425374858252904155 GT 1 -108800821.2759203107588107243599491973126256 0.8625814309294052355536379716883305 0.0820898268295156562482113528902851 1.0856557437261410407323854690426090 GT 1 -42421828.8124488220242314479252708707995127 0.3602942397844893805838580096257882 0.0695405438059899886618072217012414 1.0720767759135922830033839509613929 GT 1 -1469273272236206561408859102034170909.7205564213460476048883946399806665 0.1437648756040602809875773168280948 0.0452850966622458526755400829366628 1.0463425136069008541015279979789492 GT 1 -17127648710079.1004445201598594965147297227212734 0.6987808529984945311272364124377210 0.0083199829269182606016684929052361 1.0083547871664322486365295106820887 GT 1 -119329295795018328.0395476682635409903839169700694814 0.2947035179227551393604090905849398 0.0457245459500410353814216276593580 1.0468029133086143386589693576158479 GT 1 -2307656.5325848581514313849518946146434404 0.3516760861620941820311218649483301 0.0498819837246031078733972803380347 1.0511690744448545716005518898988384 GT 1 -6168757866562319330058531969.9451122712380800307979372477720387 1.3794765672360063475955536935396321 0.0781142384761265486888744406779547 1.0813339660046653312595598756106127 GT 1 -39079.8873415837134894901626208326964690 1.6395823951497559670529855836456507 0.0108352038299592992325561296214383 1.0108943321504787442141865049748771 GT 1 -27313669038120344997254542844551370.5589271973266819407950607368451832 0.0384558301128134405850714196423784 0.0310442353470319416645247358770970 1.0315363186463200587604367223894958 GT 1 -797640689426777367373625704457.2756549798832452479886029101281664 5.5276523811871535343940251569982604 0.0920631265725896491319970589226645 1.0965804254546927535750392064718789 LT 1 -213218999.3030043369282995412946902691826424 0.0385827642102017304859224251837965 0.0396917897218450660740795532996022 1.0405009936734620738651906227526981 GT 1 -82218959736531896575349634086724312.4363792071136170839685397164099500 0.8723874836147163128819207972181367 0.0176424950125186764758791812832942 1.0177999788486586614933390172333129 GT 1 -73090572686463822321231.4018777643798487913602533106028798 0.2726768983644436222310503438860846 0.0513272737893199326429923298488898 1.0526914015886489737158817379907401 GT 1 -557721894330.6763985310227115466090666170619957 1.3153164923982169676525293869131387 0.0193346852322919839278963537834419 1.0195240450407576776236506906064787 GT 1 -97661472563390561152477836.4437319718463477579103632955445272 0.6860264497463080516883642812947748 0.0883530436363702580977735813700027 1.0925024731043397063847890025902931 GT 1 -36513029728839668441373.8838499167101348735975842578382810 0.3731483374712156180266107284832415 0.0024914042993167480281865408412117 1.0024945130114540285509991818512408 GT 1 -59527336.5136577342023669173850791194339186 1.2850539989283545977608431607698471 0.0738357591006012893693565315394855 1.0767036940813717718297039688739140 GT 1 -818366895.4454516911143531498789598620175784 0.5860121553095738523559252600239523 0.0078786221969750065236966200587708 1.0079098225259541807808842502907414 GT 1 -290295027228364487679.8991664045310098018235930563284209 1.1129483664573559261697898273867551 0.0824627957304718859955631439119674 1.0860621502629603287366860576570822 GT 1 -1438857644200535926.2319803946430179451815092384303579 0.6610558022474803746576404407615472 0.0071372480116872416702796242033933 1.0071628400099392643966407966272142 GT 1 -26371.1371781966950852902940266570657339 0.0287281268488980372821280847577136 0.0011893822371545889008796565083746 1.0011900901135536961815004519227601 GT 1 -30600056682542737290176473.6858016365647256093720715714260010 0.1443572601227314900963227791091349 0.0835143685553892447130269345683206 1.0872088894634498275007337710020598 GT 1 -106061467511403643138576.0041214579620510820779876061516947 0.3399328141475419534485017827141853 0.0758090477129000686435083495947858 1.0788365703719696468803123414480778 GT 1 -1385469319548406671263006.8746753256839667181555776305712982 0.9478474719163332964480188712291558 0.0659316674941764832744628197363028 1.0682056822883015228029270357486778 GT 1 -6373196229431096828044268.8319583889460871720884553296523810 0.7779998038544850272107153762508728 0.0447692124814776417308990804920603 1.0458023053739823749404016624284986 GT 1 -1074910689072925733826392846390431073077651.2380437771153080262796485004395745 0.4001382734379393603357849632971862 0.0808918530164711712418969185349347 1.0843514845690891818317115795579532 GT 1 -63798394534720640529779.3896207060567766438342986458130241 0.2207662404128199928500746671139482 0.0463669744230309302546452138796050 1.0474763507445598199550124875512485 GT 1 -103326269806501679574602.9293061156124646191697901661461401 2.3907499365336497178028279287053866 0.0418200694636857734829047599694141 1.0427196997156093495806386247178029 GT 1 -693245276020195315152651671975120.8427752456937534574440014835231839 1.7974441850866472045703362382907799 0.0611275406794794169457765827329107 1.0630756350688032494727337422843298 GT 1 -100664026568245656381845821.0705770876593757245018701933539333 0.8022671806408822070500732818603183 0.0688971032090197135126689936539524 1.0713854849433353396557475376907800 GT 1 -18369655487965509.0176375137510135377204476037971162 0.6355730130550935926231035172468921 0.0154697026829015436325544066380299 1.0155906070574328300524471352374631 GT 1 -28.6921367029953544533074830203842876 0.5497082327462261799301986557650683 0.0723170508652443249576393303975949 1.0750652542107427524458186069553640 GT 1 -53998327137.1453937866705250225939044784701103 0.3439729193142911695186082243081654 0.0544014858720589843627595010633811 1.0559372036852381573184375695082475 GT 1 -79045542894146840982955893219845193610897.9789826339286170589261701565551457 1.2268555697900915170881997610753922 0.0531456726798751872153304237585995 1.0546100230559378286252044827254424 GT 1 -8.7296280623985034384150081136924926 1.6935659465797589857565311508639201 0.0536734717221666200960780871995414 1.0551676021740711342076958218224546 GT 1 -12336415169.7507760180989383554500634321095320 1.2020252087660577513196783307278488 0.0842114035102968114379256926945319 1.0879697308024870913313007896596611 GT 1 -1956524403974446494797380774957359363762.4244994417845846645285611306075647 0.2155583679197253985744894551692103 0.0838305365471529521890678286855002 1.0875539276496100918517810584457786 GT 1 -7.0673183898365755310159128491137525 0.7352411205394135082040748966667929 0.0521064051189429787850555455283050 1.0535130247133334576034590390506782 GT 1 -34656253012031546274925246886318701978.9098950020475688270147091437636362 1.3799209374930313373327834923857258 0.0244774713785338292737297024598872 1.0247820247505167348365877540501750 GT 1 -260063421.4331201410053026514653198151665911 0.5389117931877631519854662477095707 0.0104154780913764831521377745506492 1.0104700987814076802637221875312935 GT 1 -13232850.0349436478854447432991210443293793 1.8366219143627398499234599311391991 0.0881760773588668921604049490906819 1.0923083748271513801793444551414393 GT 1 -52957385476.4498265889432504293826621283805477 1.2041292296381123416986823272873510 0.0892218138951496264313613114040651 1.0934558953375437246497311950028660 GT 1 -19041.3524616941195464842066747061086722 0.6955176435837235756848923772268534 0.0505491607032994342482510950363277 1.0518715254291117997270304097029925 GT 1 -359762315527656099150.8347645465117118277739328619853453 0.1063856862933679197183634724731249 0.0841312137334320409278253035351643 1.0878821710026348570239948520165492 GT 1 -6.6392798223356403224533092435557961 0.0321079300427424346867845571332517 0.0036520123264131865919991177175970 1.0036586972038954994072581891034211 GT 1 -7938113639678185557175251737977966035247.5523898185469716908255102831743393 0.2455737152092545829934825261539615 0.0299133544432338995555040337406096 1.0303698861577233360215306217293613 GT 1 -9164981974.1881595718973884552924096688389773 0.1554148742089284201461228648138390 0.0564719695699350952764602719211415 1.0581292056269552532700737586946708 GT 1 -216805656.5403134437064192862594584084017152 1.0197699527571159265381941923124412 0.0664388884467471344177021978450550 1.0687488531690720781380344266844124 GT 1 -287869661701722106314573679993879600.0122315277732111783050247023173228 0.1340987001112673804486831894554389 0.0576807815905227195279370836420486 1.0594111887641222802570673077963310 GT 1 -3864.8426658309684606213100259224638468 3.1327669142470518753571856130907787 0.0761574664659096365223743213434344 1.0792136401164423479431643040425250 LT 1 -6110459766654860801553588644283865.8508083022207418605258493848221344 1.0215800766314264240585844293736857 0.0398307896629873563251291798200848 1.0406457492846376377009983231802990 GT 1 -410404827278565540865927221486.9741523974040966360704136350579838 0.0536273296979901899001553834943329 0.0987180225877129934161400844882520 1.1039371098337385137890275016832086 GT 1 -16271848010808544053930342443479739361.5429611456832847297406611830377637 0.2131808728591101435501068287670541 0.0431429993737411285793694078907192 1.0441013233271138223357589739170085 GT 1 -1114104738505480.3150591522538540870137544694825457 3.6646186746553569026173795837887703 0.0262655568437157442330317479937771 1.0269708813896618609245424744574218 LT 2 -119814427070104186662461957686847988641.2502032075686196393338009503747368 0.0702928339624553033321108810003496 0.0663111689219322582593020898644383 1.0686120535665142391508409732980757 GT 1 -11632454930685663.1487758270307913993685965887974051 0.0331804656428087566950764631200123 0.0618441080778156617582596384673623 1.0638391477058629651287723155185364 GT 1 -173038329319199043956940137453514040.4644572102679232762923108794759714 0.4059892674938772971299573500615852 0.0444040077508070511321183769538996 1.0454200575020305675197638002162882 GT 1 -5570649488641461199047046654529525475205832.6282870052769791277395240890988104 0.1677648194322458911290904645537841 0.0683276626111815508298991888922138 1.0707740954368318004207842509418693 GT 1 -189927505498743326866244891825.3031310303526814806625487084111994 0.0451863971626536420957124436202516 0.0667916269864134544283169271135827 1.0691267665073611928789132777050133 GT 1 -1233020571763849395686582433604396857.6020481769941701793194531614130318 1.0907232843723233524937130290922495 0.0316767856630848668623361614148173 1.0321893483290783802224282789837647 GT 1 -653265129340.8108613607346709331991384468988212 0.5509462590280300658559316615737425 0.0679731937455182628207278175245110 1.0703937026345422524617048600888321 GT 1 -725275.1053621736549360400821803829469167 0.3672555318779741318731148461515754 0.0386452975239712069914956489740812 1.0394118408419444515034948945471768 GT 1 -13775292017461656784677646432020452323.1494249055150792665877170016729236 1.4771643020166718214624700583426259 0.0656046572442803749756456097539004 1.0678556511289436528013806343732879 GT 1 -215035297900177181165933781680226.8730222077418945523462097642063284 0.2419103823457677828620743101482882 0.0648723037957598285323451202489427 1.0670721855382880152177635605321084 GT 1 -284108899114225055259257968699714464521166.5093019815590510456678198020072196 0.0206423898987575049873193268242506 0.0257283308165432813704198683631505 1.0260650930979571394755408399382402 GT 1 -4781329008664865610990168.4355792753940027357776811813226206 1.9066999906036549816035337065913494 0.0369090099545542245482261805003584 1.0376073856190348426020328138482946 GT 1 -34167071920517866366986391370436050159144.5928330813673231772092191066746187 2.1452222380728577129804987641990092 0.0680344517353126403160769636214157 1.0704594303610191488939379431931849 GT 1 -570752749271230015324149.8918649120786535723366998359461786 0.4420496758537094199935249999920614 0.0410510147900396417396394690063071 1.0419174013322489073581962815943205 GT 1 -47874484999393558045089863544.1024682591602374890351735011952141 0.3968643580773723045464747722198667 0.0856583927122525112531540253650033 1.0895510275872572341396938320317179 GT 1 -914132094139.5950020538155932058885962842697907 4.5627246121499466009087683282175226 0.0745176374194694591356467211105848 1.0774402043295047125870421088436563 LT 1 -16775.0406339837229018542867175193324131 0.0407265794582720276206059380992991 0.0493365581712761685108157685117581 1.0505951783075880338578054299862073 GT 1 -6418537923672821773715924459385714822470652.2842883625061362765841508694077369 0.4306853396367152380238026430622436 0.0682866658915979791306702404326517 1.0707300930381686767403169080884807 GT 1 -7044883180457969592432202035.7836641628573283956238318131575630 1.1107818892710025315006110692710501 0.0176042206658128976312374842739149 1.0177610178788350791488660397096179 GT 1 -20748738957115111108660915964823636.0762202697071371635781033978318704 1.6725015558457627258961883026515292 0.0395226538621692535137796607053140 1.0403248825406518578796212958941734 GT 1 -20800135945696695991102994142.6846405436559127877106508629140224 0.8594190164227823031952996781683246 0.0424043435457982988869353948904820 1.0433296606152003106046316129768169 GT 1 -277628220342409532604.1739587042525826966190660054903093 1.4977029105391091495258884020251169 0.0667734865727959680850236142220909 1.0691073279362652030001201924332600 GT 1 -7777174301502.4045359633201303902007797255426248 1.4422085583978213391764456973227189 0.0247614141640238118026146564914663 1.0250731344977747217025303240055330 GT 1 -9283932516659650677403453350394.6760486708287320466641444125533816 0.9632602898682071720630086989229037 0.0868836826629493037333753420146389 1.0908920052566174851319167630793307 GT 1 -70293373890942201997128549.1633179241168637990228217265499123 0.8755498893964147999955383045785016 0.0349133553579480902340082297586025 1.0355373944799437740665946685266616 GT 1 -824286253381954127190120010739713030.3452503679373532620877554643513151 0.6810181096282739111340221097680897 0.0850802183430465409070459244318561 1.0889188878701523376104217862442419 GT 1 -12986393649888481024700.4503734669485351393762118171532426 0.2428032875488401179933282590958029 0.0533831743559067666371180352747315 1.0548608868485077049615704659222685 GT 1 -4284311022492377042117473.3902956971221393049020287981841762 0.8112345526968737626787480174810645 0.0198740250450203169586798451683006 1.0200741697064038953946006711557431 GT 1 -4066317871.3188721569115127371859313310493395 1.4415913398864322297337957922674842 0.0970024941577908491183146202638854 1.1020354876484687821538664778800545 GT 1 -4926559962578665853564184221044509498.6322209335360124082507465692580546 0.1925585779973200914523059590038746 0.0938143237941188012614449442883907 1.0985110533120258192633795070081901 GT 1 -440410925626325028674.0561406383740688573852713591259755 1.0162234426830191628527959632885352 0.0767482313650401409444133986259762 1.0798533095892794620383927453720790 GT 1 -40026830.9870087149666856726345181390370858 0.7844289792856103382267688091696237 0.0148753262439341005604479116419004 1.0149870734784674371083196561995998 GT 1 -6779308025418.4055136485103650837526934047062508 0.6518530944764239862436434636045509 0.0192470129374761098976810785980825 1.0194346482050164654561809473785928 GT 1 -360349128379296751412138.9281591916896477062233702531831040 0.8463116477566371896705705875228747 0.0605550873997878832345697774719976 1.0624660966532264167330233959259282 GT 1 -744684819277718276340771893650.8639276644745407979198141559438209 1.2541224173822411951799083457791918 0.0307871180993789770424567191075794 1.0312709988563023320563871964128226 GT 1 -402.2066026872347771251697557819575965 1.1496168928776132536238329231068932 0.0809627649840869602571163164164298 1.0844286405637622833446966566357774 GT 1 -4400924664202495620.1777940568802656570900598291702037 0.6868301541583335064622057677315907 0.0305561408850339286625511259512374 1.0310327130261692903588853416437190 GT 1 -219975721231571.7242561378072761927521342297671422 1.0327338500699743675977184421514985 0.0832684682827186518024153575314881 1.0869406176197351941317696475366387 GT 1 -686882979922.3088034141605401808619968224523836 3.0755745287300833743381297920793966 0.0864990215916501171891299010303852 1.0904708321100790193338922809753365 LT 1 -7477622390720976556922.8178247911283972224214029224486210 0.7829798294836593674426901249344590 0.0284951981503682102092996202179607 1.0289090674597892259021965732656625 GT 1 -591268171870828288325609908821138481137.0953461053208058087665055607760810 1.0883531684895859594654379678422992 0.0896126728226739935189043529245303 1.0938851357670104262791052732200482 GT 1 -284729843722947088228145360900966747.5581512280578148703445047413257475 0.1732242684804064086421687742813396 0.0803770332378483609620578078821457 1.0837915116744915318848496026369731 GT 1 -52367048950486480718.7663245993140053943078997304704601 0.3760102508818524660528145522528314 0.0906222854858087198301283983669150 1.0949947435939472570554773020979854 GT 1 -10236944275703100.7077086779943951406377048190949590 0.0151453401870974414894182061035309 0.0578112596308060763450563289099872 1.0595496631493155515219089186029422 GT 1 -1713760933358324815879167722035858730.4674796179495528698471145023790821 0.1162077445095337281196474050361591 0.0331076120995969065072811264495172 1.0336680742091114556960513675091775 GT 1 -50055027053905890175.8555999496940230035386960255050336 1.0535604254526753522392779528272717 0.0024427953789651562794437555451408 1.0024457838714393264458214046486951 GT 1 -65448427528893876998086573160.3222440994453406667268725283149762 0.1770258976032697864696690107444862 0.0506685823882811434992954486820239 1.0519973130856002413243302352949093 GT 1 -38477544533732992294213826491.7902379911465181218182808094282701 1.8322204311968040999115175203194733 0.0062586222252463337939722704336647 1.0062782895043141046225276643513413 GT 1 -1224538.9072755118789223358406073486808785 1.1108878007905624093596332906546215 0.0913300825176838868580210690638275 1.0957733778334227576330635754328736 GT 1 -42328.3458452175475757580031335313446337 0.3894415626839066324000895279815896 0.0174922438575761788404756070980509 1.0176470409773371852917423580323622 GT 1 -1853619380316237431931343888219.2572422063502822420515339531323832 0.2574054450767602306565292831734307 0.0210762688054758271025736113137863 1.0213015442927741618353931751216768 GT 1 -3416887067762423654332513040.6723613801836606066522423980739083 0.3806992477721943352114856265272673 0.0652290469233738208650958374807660 1.0674537496750174700608251695682649 GT 1 -870527479419045099851587371466841829.8010166435542380679985706236773249 2.8823068729451502865508459126182187 0.0962975618958805468483881724239508 1.1012551341647098764414936424216732 LT 1 -1031969849068735207266064159428330.0048252305528832758635318860769237 2.1675574986281244422820743856836035 0.0577805799008151804951071750164265 1.0595171014881667471492161337237246 GT 1 -1849893650374785390868191277179281919.2471644506557497335340754181533541 0.0297014572042647500155462039316696 0.0499932840670615003384731088126921 1.0512862250094454881672306819021184 GT 1 -32129678384780403237808.8518238950116257833671953802476312 1.0009883448959714318929646812840452 0.0774769134111053000612952903236617 1.0806428772679797511861798101495750 GT 1 -4994521239608263738051912687813429222.1016171106164292179955922269910474 0.8832297992765387196186372811185247 0.0373506534007543175753086967468505 1.0380660595591698876133366706065738 GT 1 -66723152747135772184406091122193407.2987810134833555904501696262410998 0.1668596758539245225690312802030744 0.0968432394271413818562682364472110 1.1018591408833851175045972471751591 GT 1 -136.5030334556213342040978184134121713 0.9355550932793594896923679473854078 0.0745452531757815982264117865869964 1.0774700440859976485125152722550672 GT 1 -15808978290364624116440.3417425868538747417797285965877002 0.8463506310670909666636168741057130 0.0687753046299280807768872967870064 1.0712546824145235804165442595754502 GT 1 -121351353.7374093118547397448643529559132809 0.2180720139349917925375590841300128 0.0237589076077334399811551985869181 1.0240457021799663754799608117049243 GT 1 -6792636481650075846.2832751090360071978524502088850130 0.6605095844275835687826520674177426 0.0222047817158586440751160009186654 1.0224550191296256689387422514526197 GT 1 -20192372463296.5445161803434587256286887712171121 3.2647336734137933772486558279314585 0.0797934178572071966130576877576644 1.0831570883383040907699205515832017 LT 1 -236562892020.3724129080095140047620114889814834 0.5272986795140553279163837184156511 0.0241455873020900898805972803001622 1.0244418710133106510913219889178869 GT 1 -3311.9592449052115800807845117637021059 1.6694809015115085951539616442946114 0.0042558579378648119597503241368199 1.0042649398780493540037452736485622 GT 1 -3375734644883416087903120054597561838743.1520464003420842767459040412360934 0.5425243206807839489783707220937440 0.0315833437755938647831703494665040 1.0320928543300815775746555867235099 GT 1 -1213655985182471942305.1328273005998418947210566129620328 4.7864721994017777551132198532279747 0.0635300022918099382059037860802241 1.0656377942281659446530622409033047 LT 1 -30438099874672690693.7773529203959838934963274893675675 1.0389091262190460011070060044690834 0.0954819424605925946738870825643520 1.1003530102339531383836511788852594 GT 1 -168247830401490401491690628959.5385972097558461619711163119852777 0.0437016793741021198440528080357500 0.0134504614396569930558378960270821 1.0135417382974107431492891835260131 GT 1 -2466596293722595405520372650309609319.8048037113316143137557575670009871 0.0637137335443678406314471114230024 0.0646637147213122568126734890363104 1.0668491509571603120947988232260226 GT 1 -377806930932744462.4054826114696378967968029551437291 0.3487032866590833347662722864717560 0.0836474619923576205471281329859133 1.0873541215296742982100753078626738 GT 1 -1584199968735882847395305512855090425976.4750322596253556574703512510326627 0.4281216373429704138109284925525266 0.0102116794972488414194199285860277 1.0102641763897479861316505611661117 GT 1 -8.3662358998483548389417067511149619 1.7622918892599909642016626960917804 0.0143961827984007390790146787080297 1.0145008132379798117067343701290452 GT 1 -759286139947330146.3681718585457758071575484217251144 0.4082298179206347013237973996059346 0.0277210112849964387398303674079611 1.0281124902786570743392764742374570 GT 1 -1542855301118684106.8019022351166815220651239775334762 3.3422430196798120273867303945080708 0.0974442878968437158573324921960655 1.1025248598181493037754034115321372 LT 1 -2522823141489593617105441322619494994534.7054760639875269486042044113250652 0.0601037400428065703676968988820517 0.0996108825689525111215680896075519 1.1049282563941605268685629059244175 GT 1 -2336519540320276773377565568.8245966404591272005276246582084308 0.7839479930805599993684735728146046 0.0923194769068588292544210571004488 1.0968628091071780283234417526410744 GT 1 -32297339736889763790715298376205371.2532698776665786315062929597769281 0.4717613504661543358726108603866324 0.0734152380285686949461723555826156 1.0762497512336334222840689288562088 GT 1 -129258501695730374.9477622056507887664208340870723993 7.0854750703068638714766167189440214 0.0801005488474950259172337761587831 1.0834909071374196048303256185308705 LT 1 -2299682245.1895777281784697235930521381740167 2.5232178912339237541505516409409170 0.0291456413663599534890447918278334 1.0295788130491100290512660254537072 GT 1 -92951321001905.1041424330156580581115338764229345 1.5155073288580787601916277552535721 0.0582913906281542249782297865076995 1.0600593841357690894082959586068939 GT 1 -19859222255612307459473269310292.8704890898558188933157981801977353 0.0162037036623459901216316096375445 0.0591628878380774469196301742100065 1.0609852551647816913709627334532906 GT 1 -162335515652182307157.2203632887477590947131620123333048 2.8018519106673622021853390223781502 0.0211234439781113522666134920749489 1.0213497363100628391707715125254549 GT 1 -821917031.4911286146534282903340576910291645 1.2755877571363844894571824304732923 0.0931943999830002355480981565981125 1.0978271847866676709406364481817941 GT 1 -3713381341534568760560632134956136122.2055423142071514561258362761118117 0.9959887918174942869197417188839635 0.0929073135205780650245411174470606 1.0975106439233166058594904418581894 GT 1 -2467065716165325029529456104.6043991079405848183236251944079024 0.7220352095175613427028615581310896 0.0209211810165438871430316651374451 1.0211431300054769659202613600610261 GT 1 -2985044288636816347.7337902623190442141219937401312516 0.3442891913568982333364118923886856 0.0903671111123643162852045722401503 1.0947141796712949648096512035837200 GT 1 -3113387448648215446192938146.2294813965219265394153210122887421 2.1605507228586863428506775276107393 0.0653138687238608450343052867921929 1.0675444945241559536049487291562616 GT 1 -5.3125496461923386664571568846302645 6.4321939389422090700220182819138714 0.0381036401800201958130159654052383 1.0388485681950279177056183909684967 LT 1 -2788.7433269690436909760252138926490501 1.9682389947118088295445243569905863 0.0785071675162576829321834837948729 1.0817602799993699261480939114429896 GT 1 -17473104353720414019232455660689408618.1192541427011341979931730213054423 0.0272428190736736434029479604295540 0.0932244565897756961080280602648326 1.0978603309261576446679608311979938 GT 1 -9039040221965966170755481432381007603.1854957299894615000112388831753351 1.6716612259036138236713513521386246 0.0228163825714859244324371461482298 1.0230807045482168160613589545751735 GT 1 -185122755692851247447904809991870662900.8449546552396698456800565423504789 0.7691431479382103956462804450725565 0.0276090138563081135006986093078331 1.0279973062831616031511763185422735 GT 1 -25830.6585550363387528150239673839370505 0.7953131950107174071503041374167872 0.0749727062348809438045547933669439 1.0779320351319264423835142982702094 GT 1 -8025398568768941860397827613621749.1307378195816661444446933959163536 0.0488506052945620492001572188694972 0.0025109987857211341155530738736982 1.0025141566305093264839481910834319 GT 1 -636197612886493515.9713480928414238336937150914533249 2.5888643144052087606097374660139928 0.0833476971189439734071910655799352 1.0908139001250764330528168353319222 LT 2 -123013430609455786283508371043834.9665053535415274973032532381221539 0.1828273401597061629841132423172155 0.0534671468730267622651422988279869 1.0549495988168393129025563674812735 GT 1 -1462333569753510576421.9412363577537009333785386052346654 1.5064461427681641871139558062816335 0.0025599644186588342115276731426191 1.0025632467305022415526592668143319 GT 1 -7234599817608280068095667065124228.2756228712557890991748688041568671 1.3407340262256563771633738158324109 0.0169421785338563082304664057059249 1.0170873391344214658984832179407765 GT 1 -14939847664850256.7495926049114466289652232918901318 0.3570681926197204644042778254252732 0.0415401427025131411703211762254361 1.0424275981272567833241456466633335 GT 1 -512310810.3238173889457529628216273123790976 0.2809829073856136196756455835881923 0.0588244569409005315704674372487775 1.0606256073166272625293363470914164 GT 1 -6400532528521755073377404182508903470537.5187746330583659972717769497111127 0.9831200298847744497186995453425496 0.0223360724084645450665473343498710 1.0225893003219278354291888889007567 GT 1 -7445989618881317796512050282642694373191.2159944351756428084537884996383121 0.8345373541837588209128469030982929 0.0585061223064622928074838535506264 1.0602874336213804940419534683955977 GT 1 -442510990071205388.6356982322361889790955597311509792 1.7085503767692155946915150548802078 0.0914584575981446800655796238492990 1.0959146658271519309301283635792301 GT 1 -3186121989632.2316063749892413931008560881835937 1.6508128223027038195387240120831062 0.0619147758847233226980276566919846 1.0639144768374303674677834553765293 GT 1 -2188326289892496181732470161638754621036.2078919164844678242332696306509148 0.6350300794502625296757210760466964 0.0341428481463990190030334827205652 1.0347393316322913852916647509555135 GT 1 -150609964561.9401378774857128908235430637149734 0.1983977584585398171084570796327111 0.0635148422722394251740833856237279 1.0656216058858803916971685286825814 GT 1 -930362515289908334804353445753026569562.2316568617575669529803268433442538 0.7994822481912348763023363034800350 0.0284711852256691434154317701647595 1.0288843505176891587235090395237479 GT 1 -37244678454308387280908523408699166212.9323339906572682834590085569915049 1.0140156866700487527668834426870838 0.0104267311025636651321679156077286 1.0104814702963415352152773599229503 GT 1 -88679112745806799903385322.8219269000110307732879778815284524 0.3411086530340945323232861613561932 0.0592247644052887397400113610883054 1.0610510248939263479192219458997187 GT 1 -392145281405706248633.0999164831991805802417596775295321 0.4856525517219386931619538304605800 0.0667308559660805748492742826903737 1.0690616481013806216060517158047596 GT 1 -141285.0124686550089856339874617005916933 0.1978086860379955572198426242599620 0.0764489815372765851011911163344629 1.0795292361879685820384588158024310 GT 1 -907199214496418903047271987120184384817839.5285915402654118237986685738640223 4.0156850872886759532559410529371484 0.0625986007380004406503026140457927 1.0646437007892906185190747402687620 LT 1 -9166544135015675591433841045485536295964300.3244542568249147227115487841589075 1.0679081281918515862707653267295758 0.0892336632085814705561753803117050 1.0934689055201476291324186569261029 GT 1 -656120446873945874174425288147904857128.9066563726915304491881667317385616 0.0357834209861970900738268241947792 0.0445434659667757890283848557288018 1.0455660066209567526726691378944301 GT 1 -9191358302123260558729095691028668.3835987648773416142769425067500231 0.0438006764149457697018631945912390 0.0114607885139724780447101725405135 1.0115269694940410113247157424345398 GT 1 -269867059830716323074780316472156.5895785237360531182306700343328628 1.2852909829146663610298149781651759 0.0429489096563288542620116794728403 1.0438985030151110088767641407368753 GT 1 -87454597744930471091634281767023257282380.0399252544845258628264240079382210 2.2090834901682196312901524838386985 0.0658582985251361389777684699148072 1.0681271376196148518558211943438927 GT 1 -975319313658560565495347112.4620579372491282124396920500950069 2.0816401997722891671396864632739809 0.0177497856684471421439809423565609 1.0179092023389056784851246624637132 GT 1 -17296083425721259329345103.2783751915363116417307796373105533 0.1531169617595473937633920748110954 0.0827583863178796804700430897370809 1.0863843586807521811746585513494621 GT 1 -719283003454851417360.7203263958640113918430986641205379 1.2476086289727300124200470009334013 0.0312294054074318899838499232002516 1.0317274396062843861211985703605068 GT 1 -23183741767161069113454686537990.9117158370461435395437044944894517 0.4034975286597111071747280509222637 0.0744265895920154838595434168682698 1.0773418303865300986569412783604704 GT 1 -99.5054441877053372818879753342071473 0.1787986468132012690563082393087995 0.0369119443254636603370281468161810 1.0376104324499262473280677650847685 GT 1 -2522797739947423066692035.2699665513058626916161801774132230 0.2891703776866000564517520512560370 0.0263221483124729801797046852968249 1.0266747778027830087932195055813944 GT 1 -29492499441659773491443324764874.8360258055809111508001326101302877 5.0754093397459400834355204638319406 0.0685471762929372042286159156043318 1.0710097357334206450362024830397339 LT 1 -1145573837937496565779704006.0227031008689659027884882884957513 0.5376290896705561134423763196411179 0.0919047298070740213047411522571800 1.0964059827649267802174900049578491 GT 1 -44710568639.6556091593797867496808163032722565 1.2635675054457021113264797855265940 0.0780950586907320203230198036303955 1.0813131612730157478202953109557205 GT 1 -1281607332001470798468101978618341421983.9716315520099503879342807728230701 0.0186026370237861516894307685522010 0.0122843612049111060024915691109994 1.0123604376456787980399959380469779 GT 1 -52704606209.6343537855266926331059044417511698 1.4112873518582309683345692258986437 0.0356958474547028408386693293268882 1.0363485231955959198764344442113289 GT 1 -1719201954926973549761.5529165689062161687301551687408490 1.4868127744084230394202079521903092 0.0537023862090737252279108620304916 1.0551981570912009022937599472264725 GT 1 -71717710775750820688176929856257320739401.5918671394374370581763146860109087 2.9225982097533542594738126198077917 0.0592916932918963078124791617125480 1.0629901295096373189058673102407397 LT 2 -19950511045.2665217881670946285110420035538089 3.1293423081317014233443132580386174 0.0413635417396438430097893763582189 1.0422433601607700030128430652936113 GT 1 -76263667986577534373861100386248.4571837547279100860252600389176328 0.5504425335893194207082507373026370 0.0770704000739730584287706834480640 1.0802023204911219789153425056672585 GT 1 -164586819396009519139509346540.6203794813003381335459166219225222 0.6909811742974871835645688894142617 0.0695397738793064177299119727368385 1.0720759484445823219683318388858831 GT 1 -58262655211380.6466043838414670248458522206701521 1.2984067802649215083401103075691619 0.0487354346858727271433126654869651 1.0499630581609136329471258131548703 GT 1 -7038775920582535053981276.6812978501151073273408945221148878 0.0337552047833242473443809896306720 0.0615331252651099393372458416996319 1.0635077195455765571454222366819201 GT 1 -10776287667620.0669895895078552846327942885281855 0.1968770927541331042026787253348011 0.0619129693373732342939355360219139 1.0639125510575927343641583051565903 GT 1 -11998168365187427461752134939433351.1861981337945659399567585862894695 0.5192925519544371277368048972642696 0.0753689703713720629684604471913347 1.0783605079342184150372264644940211 GT 1 -88638189386115164311.3749435720054349437800040199163737 1.3684853296459769301936734440001177 0.0504559887647268255765574320107020 1.0517733977921450423055280157944427 GT 1 -80622692839132919442870794417457684139.2515502884602636567541410624567138 0.4191996871391452526155548285054256 0.0109959057757046194543225747008316 1.0110568076063199352232452779599466 GT 1 -37095834.7099617531390354001732228697075747 1.8309967910388371779311421272546906 0.0618717252621258097608436708061953 1.0638685858739218080661482444367364 GT 1 -38400899805861747148722371.6995859356483442514095618714782794 2.4784455868770406019112881764917644 0.0459275049563324744527403819469745 1.0470156198091799811906766621916724 GT 1 -240504436668684791623814137288.2691874442744861444611944267001248 0.6195185362974238712283131101054564 0.0813794677861989946524103838795895 1.0848821557031806138562613486523654 GT 1 -2793318964871943833425.7529484261049221546042329763496648 0.6032635271040006782206000363381430 0.0702165810500837915562941345512411 1.0728036028058095269517766311089081 GT 1 -37968596997.2891734356848674746934282016585232 0.0494496294124860770323483581764214 0.0093684165441191817954474175733127 1.0094125761786948909538500621146247 GT 1 -1183111852483446450749157636896910850710330.8576087856971987768032259553645246 0.8759004280740111624128338709831763 0.0253637461160645956963527561982274 1.0256909505328657871832135960500649 GT 1 -4830207.1794313123355956237857234234405380 1.8307740619840448760390907777557995 0.0168709621878931764480871304617092 1.0170148980582763252529175060445863 GT 1 -71316158337.8383748350249358191977241775648227 1.2868537279796911100977062847504391 0.0549645870780357372905161284814303 1.0565328781990302021261348626344556 GT 1 -10280374343568.3111643714742169841156734733832517 0.7384168473210563490108247506617036 0.0072493998775525934724217780818641 1.0072758044658494699081109991772791 GT 1 -8001150379393985217664329953409272.5820067818786191491688963743099495 0.3823147750938926949276257809529442 0.0759868052337574089856705323084811 1.0790289273923657424937004479084522 GT 1 -1002735422084871375268553.2913138613026276699670515368457714 1.2622997690995869373263630665115449 0.0926208107728918932822542274737373 1.0971948465236400301703059842756874 GT 1 -180347029472367988189112928392420.2659017915158720667426127130619101 0.0138288151246293209895871584213889 0.0596126370838241338882168771576874 1.0614634003944163373583971951170619 GT 1 -87379706771645296866196705360910.3356541465484213001999026819051465 1.3174015209482002084383274393401877 0.0840178774498538117417258118992575 1.0877584313651159377327829312347879 GT 1 -264816108874776672879409316326976.7010551652186053155790372126568528 0.5132801131007128752796120019564812 0.0043650252349950428194297092909543 1.0043745797716458323632128563880792 GT 1 -154103234997263.0112285220367153290022154311806354 1.4203090809779474505584380342337338 0.0934334698799577469723380658230720 1.0980908591802126287337625882835272 GT 1 -3800146272.5321151989450756778294982254255513 0.2668981319978675132616810544962574 0.0026891514243304428110452381217727 1.0026927736873551221772886067073532 GT 1 -6296299218332492306285911879581696356446202.0424914136720957821761068057063971 2.4794665798165243088974539590185963 0.0149625476427236439412251522037970 1.0150756158351501260819682399083584 GT 1 -1763287463904845320999.4717599274234570079685492390343477 0.2944241277911210022250719330476184 0.0080121495753548080430070067522624 1.0080444193280674007700350361694270 GT 1 -367669722522.1723362482659054111894420678191657 1.5106993276821015402510809379044279 0.0171534398231489269192421259610657 1.0173022644299531730740722297915991 GT 1 -2300851125442358009650278938361.8198261137650504554342158964841689 0.0134535368099547899651875335969468 0.0158737377591599896253070078142489 1.0160010748761791871380088445779330 GT 1 -7282445153944006809821885045933.1418226004657121057140813399495475 0.6225519376209889885419817406398442 0.0104676343786306675632212291376987 1.0105228054078781879391145355383077 GT 1 -13454453418943334493539208.6243728764799146620875071005392671 0.1947048477187086615514633250406606 0.0362865586753713213941924064163354 1.0369612885988059881577896900195625 GT 1 -33.7061180638669058896605627830843041 1.6917093303947612609265677615216614 0.0520356739526795657981445768015934 1.0534384081869414441204958710032007 GT 1 -6099195431.7577267377647215744705323573342387 0.1953918771825303124233617770006439 0.0512974159978872348416311293959041 1.0526599288575825893756671170197436 GT 1 -454262085213709557031921757333571.1016739115021899684967810990724712 2.4246120314617350642335013713395413 0.0158525452812897364911036365296382 1.0159795408002135651272989165156988 GT 1 -740.1197473436734344690545044144146310 3.4666813103110860531837406726947896 0.0069846495965776016936828185155166 1.0070091564427291702636264137806348 GT 1 -19.4688816611602031035860840891420020 0.0407787881568335706523540431003501 0.0762411825435328740637336228147005 1.0793042614808786166485833577459002 GT 1 -288500525259187667421589901344243912160.9372014623206464230437796388550777 0.1241503069976174921007112053062962 0.0684708356035145396403110704043524 1.0709277803629952911405644419250724 GT 1 -8966565892681.6200930789570027862180332991764899 1.0469349008979032012952704036521291 0.0834059900119593270844012673833273 1.0870906419622430635351597004732681 GT 1 -25445822495542408368882595043453264390.8778064485929345531415456226574670 0.5887637860057861634635284198619336 0.0497447172947271014965475147404946 1.0510246118488074089368996869327069 GT 1 -10012685206173781216.2035099445449718369972543651906733 1.4308085745217843525170167748961671 0.0806045297889549754325787777096164 1.0840389225189869342795541057263959 GT 1 -3243141181343095496167965017.1592959774059967825276506386127086 2.6874055503905806487010355374451529 0.0670692271787511159376321440046848 1.0718341446469536364129991936024686 GT 2 -2563631119.7946561002513646984211765773997179 2.2604414693544414253075147539178037 0.0222193386827713199058106993037342 1.0224699067819686831435315055681713 GT 1 -40036900182403709680645302791.7434475419733776128732637681487039 0.4022126699875163455776827803565544 0.0652664723635890138306506351329159 1.0674937874931733465723059174553292 GT 1 -659648385715826236139482432406.4681511064263275696780273024898651 0.6137576119635405480008659794982303 0.0014307198152396361097447510841757 1.0014317442720915645526219815566501 GT 1 -7394422204416956985739106103336446.1586622495345682060900779987971165 0.6277130515554710436003669872666015 0.0009368632872513968499585699199558 1.0009373024179526082958615667855132 GT 1 -13966891045523707765625009508637803.1170795057282854277699504599892674 0.4459612459657336366226258293381190 0.0687765410460755370431400247113489 1.0712560101466750348271060254898549 GT 1 -24924421418099795154372351374693102593.5521523253992934605498852013348188 0.2307503498068900133603435706186786 0.0712669650284581432361766727912436 1.0739339496348583362937279220452558 GT 1 -61707147247142373583972335427417454082.8878882565500397724010149260088512 1.7387611843747179309210659255795529 0.0670756405462336662358378422994609 1.0694311538181582725767628302556361 GT 1 -836918472904102608377121272400417455365.4557522758425678292518198733148112 0.2422764921180190292966913758217854 0.0123116204547983795248506355821418 1.0123880363036099554833615034310695 GT 1 -2336558.0592915126946866211534468653240236 3.4010265164427998070260485846794148 0.0715291747012362073438949201690311 1.0742163200090854627533637402990034 LT 1 -815036554108733392144135775269884925.2248132026479691556094842111404430 0.6100889476704602407321496439594202 0.0672092985817211029173959215798969 1.0695744318979885498948946827569693 GT 1 -20859436809991488778220.8562408253957094510615150414166886 2.7188732570454636450396029379257920 0.0980281420025872243019672001881206 1.1031719589656391115413917163420141 LT 1 -174237137955309533995.6907922220195896581870701269308177 0.2188415545932899429022235794991775 0.0411501285525234179908508825117766 1.0420207633321040590981711585574063 GT 1 -1500789892236590800095371438130984.2584822806487962401265274617803990 0.9696787895090759650791502514406056 0.0901593936151093405674241855206766 1.0944858526319650749197236690018916 GT 1 -2538565748304190271663870684836637049.1241331502576481205216329872915205 1.0958240728463268063182872831103870 0.0669236139430896475603213501770183 1.0692682100424431344989345093323053 GT 1 -14684871531944733492934862057708133218.2280048963630098637654992103244442 1.1625101733194400373254770000398382 0.0638584413339770753409885757656516 1.0659885760487917641610654728282367 GT 1 -74124809497760813744136925721683532.0768524423896506898062697656882035 0.9806794231856923538844707085451058 0.0833625070525089361847869938164888 1.0870432033715479803100024588054449 GT 1 -57319530114605.0704540711315972659945305923122671 0.8002747386402187964983758128275707 0.0761959257413675697084516093789197 1.0792552706699272838556567868100719 GT 1 -309631192013029184904804767189328.5273822108461798491617304924697072 5.3891538090489331873449007594456579 0.0523554190416198834019601541673522 1.0537757616260301336966136589955248 LT 1 -677384990148746696275707134164.7830679460377456862442560059986840 1.1952755807139401551675746123114063 0.0253990932506716185685099120109130 1.0257272181921581165394259878070400 GT 1 -221298.7468654110163955550007241624133923 2.0035217660636428200931166580762753 0.0527481641655469416400363173215220 1.0541902910177904755756834545835571 GT 1 -37914379400986963867951902.5313398463862869671088405548977141 1.8669340999123984637430504945713142 0.0951392126891312249464730870694919 1.0999741732905061679598340539047990 GT 1 -47125331193962351822699832.3417202831978603437628619429953102 0.1442324488339720788366460584788387 0.0710173331027398674825469612661585 1.0736651981493972666982093193475333 GT 1 -2281167263008099975785992843604.8697133059765466924900950881368325 0.2925026819157500577857512977355918 0.0233660362580844861576536713385083 1.0236433504230375684493429902997688 GT 1 -267356119574.9762280971727901549916881817531162 1.2155188381041927191680743326036587 0.0933522108332102256129407772458335 1.0980012293488820648839595027214274 GT 1 -2167416277088703302989.8944122235100317941199603983711047 0.5767948635477874522795835510729426 0.0907835979011917347577812183501230 1.0951721470225985231807392589639283 GT 1 -6651788818.4675221650096165355707056168784716 0.1935991478809811354004921394635607 0.0718671470673828455378854498027871 1.0745803959546871830837585436960388 GT 1 -137549225.2021781294535833875012916407013857 1.4318576997801156707817697472632919 0.0603674675305173661127423449741366 1.0622664030531714779311553814653060 GT 1 -299.0937057070779500070333615045392945 0.3801325272648401213659712439397514 0.0750799491126800531285968275843062 1.0780479766782945002834039276746409 GT 1 -35319352.2272151486371908705847815899495583 0.5925271987385765155072141708336315 0.0214780999421516687378839546699036 1.0217121111416355632796615317761398 GT 1 -309143990750066969325722041347347265322.1708425978561321688201052561659765 0.4193790212861121640030125857888531 0.0111299408137329770986012251887969 1.0111923420517268019654067398834695 GT 1 -15514610209402455995118382130972249.2734897782924670655078832877777743 1.1548914142500789836109968296456950 0.0495744598239561660380955517200614 1.0508454576539771368555695588426922 GT 1 -25098874854278263584584007096.9853025152043535077293232583536083 0.7547280502321426574235876758131978 0.0101061721551253681091352525734371 1.0101575862057516007212152980574695 GT 1 -13689440614321675614122579662786432414887951.2952103609391143059129115550926272 1.5921329430711318364029874892289433 0.0015003552370959817738469653073021 1.0015014818970825420186753978611279 GT 1 -2501595550836909822390112808142873375916.4350406445427197734975467805405092 0.8726841823028868337713645160858174 0.0794707394744231265559277827677329 1.0828064911710086822890268184527056 GT 1 -230348564324267921576413871013157526094.5730847755936125234408442708306560 0.7562407007305766571525902791619662 0.0312901896299372303512030310685140 1.0317901852447637132027787467676950 GT 1 -1.7454856016079830802754724559891449 0.0557810530862623533894490719606946 0.0981571828954008661681103988364725 1.1033150345208110673576787720811808 GT 1 -14416.1696293953818860580562844094691536 0.2525539461155543930018114368326867 0.0409611088286650928681893759030317 1.0418236510405525639107806491095888 GT 1 -51251153042436651543146681499556.9677478414590489542496394379433190 0.3051126242060956642166725191668440 0.0453434406062574195424976758103300 1.0464036268529805459720000121135294 GT 1 -508.5495713805207811810577348753892622 0.5660419893745467616644385435650885 0.0121231922781746377186706432081152 1.0121972775491941598895519668742599 GT 1 -135099626680.7016315261420927314324525737691398 0.5391245313227303286939801772646689 0.0475784787437562579226981930651050 1.0487475677576161053565885959124828 GT 1 -24.0660558529974274361057149884522784 0.6795775204834664370480894923787096 0.0551925944798777714343943947185936 1.0567741759415972775976167642641782 GT 1 -1.3021149899023038231198806542388056 0.6703210600724664376480849934044225 0.0740984376382829968360347774386988 1.0769873541316577920494926943030396 GT 1 -1462685933293603597797592812860205.4224829820516965282142869167851819 6.5193838588687115771194469933980683 0.0649716721588622889987775367149954 1.0671784529961026059832402428580456 LT 1 -34471928770238324434580380640430.6681969282393479309366766477877571 0.0542858653913059572519485683539454 0.0060128379138926432289789233340166 1.0060309878152982216722461968875928 GT 1 -5324593221076024863183.5948866724309780233724520525625706 0.0144053412108397049533516979410699 0.0122444024106372359784511950223055 1.0123199826964561982115067924811134 GT 1 -218.5073765006018193396399270680373641 1.1548652559465885957363630561495596 0.0712387970674461790174069634607872 1.0739036206460094591806123288519117 GT 1 -1138923399532016540256309850546054.9751176521558225733076390131298293 3.0420598463461854488059468379198035 0.0001997931447229656022470006766715 1.0001998131060321041700457394510033 GT 1 -345.3602637122797482721078764729247533 0.1355028012487288151799828196035361 0.0943504547761424646652185273481839 1.0991028631977486782055720004176242 GT 1 -125031558869064553083812016.7349669937925546970037584979312522 0.3919699008412584190380857884181712 0.0898480472798141849302576806309922 1.0941437123998254092428027165964177 GT 1 -1062395384456652530797837521188152.8755100045293624912579667454932941 1.6327857822281529338049970662017822 0.0943966113462054136211956689325550 1.0991538296521953524707727410564617 GT 1 -12742745902042218.8083939679351752046910649731805036 3.9493173676652335748049888039706193 0.0891141122867709972322331597661641 1.0933376500363907144652542972974722 LT 1 -2800822650.8257433787765431705634000604372837 0.6489067645142570666008546012285036 0.0868723992894923405856139009967811 1.0908796483383048757150260551258697 GT 1 -5982043248.3411550983033179644170207917983713 0.1311270271514930145175693210934217 0.0845747159586955177087891687464747 1.0883665303866627134661003895328083 GT 1 -138148167963953508461557093.4604782700897758308376910876783256 0.1233615501636995707698425378873715 0.0610268603143645875409001499991707 1.0629684054166267506040826846524914 GT 1 -52476.0701194544558908408875505294192919 0.8339460049676645763724930338813367 0.0652194774506310102100253156716838 1.0674435124893955122443707314133986 GT 1 -603102786699759497228247.5917473518224900427935546792100616 0.7023319008489523461905825223551725 0.0606752112015814779794660396095385 1.0625939716150888084720487252855487 GT 1 -267328353636740328356548361269900867316.6943290938930268101563684969891668 0.1066185156364640693323589500783264 0.0713863283650207758567014833664720 1.0740624806584980120925722130486034 GT 1 -218129.7304550820291583820734878567900293 1.1472945917079094318848895067005527 0.0215043078449136618534680104986111 1.0217388946543314555374054437963048 GT 1 -1366455029136659596.5059011445962373221846862622458319 0.8354644277727858025319452235125702 0.0689151084357412923772991929109351 1.0714048226565721372255286111890807 GT 1 -199974121727299266869.7969715828452924102393286532005479 0.4392354379753205816023465929076436 0.0037257940787173173289071606503660 1.0037327521377158850022969483601704 GT 1 -5216195648134378069292102942183441528.0145441199528243274094599251163211 3.1400262168176676102486983856796762 0.0610465441716780501127076655000055 1.0629893688103623787941217621056052 LT 1 -4465379713364951817590630397011.3610323502419722998260231739306015 0.0819148508830965633942621748742545 0.0750257782707846620159304185250717 1.0779894102588912394596744326625645 GT 1 -369222724429376551410604.7916224521211445614294186032257980 4.5375902361602633379824859940651877 0.0352868157120461660876587433847479 1.0359244401757321401440039788025732 LT 1 -484787318029051656946428830811706314082.6673945909033555671629547114075027 0.3185854287877607344246417944345187 0.0992074782448316115094604964694225 1.1044803234127337194679385860089329 GT 1 -300565666069535022814453.7069156099328566235324142114338821 1.3910871645653985050028511651620539 0.0044397493215791739318201497915535 1.0044496342772657606211624455069906 GT 1 -1472.6658229667063730909050343130112031 0.5416233046879912638741196400115293 0.0100744634050292968134915090447650 1.0101255542429692244171962429130206 GT 1 -1112799543.7491160063422895529151298966081523 1.1104504752998923119045311730812224 0.0294590459737215695686542354637625 1.0299016783697795348906292693140242 GT 1 -195768006255205073265469759482.6548074694299515484796043704104519 1.1524942591291160997926327089258058 0.0678325313848913559983836698815348 1.0702427930831182765828767147831546 GT 1 -621545766740605.0805122870116215086291707998367611 1.5227897161703098517364979952269038 0.0297674179552419843041344462300450 1.0302194609223382334897198387538457 GT 1 -4591662759117480806578736861775527443.5778809411738173080809742000329703 0.3327043712423632594852107870118367 0.0818597075378948465019561463335220 1.0854050760052551949296111340963613 GT 1 -112986739317.5745968671003109157671209325848104 1.5947870499127110108457181458752728 0.0979194982506850691115842744955128 1.1030515148427770155859119933618000 GT 1 -32855734978775351367047082.1231106514932615463902335734536227 0.0377669106358897126820992339325742 0.0899084392772220202401386128816963 1.0942100683538326443884923534471710 GT 1 -22243805012641224647973.4448362684323884079242911663197707 1.8300292826225899544736163001825259 0.0747370648747605713220540366477876 1.0776773276728316137404495889775515 GT 1 -48.9039785284744492758887199981066037 1.5801632050066795924392928808563568 0.0227529790473089847962212438615908 1.0230158227120911840320359853295260 GT 1 -18494552354669859903.2216603336281966432017741421871020 0.5817855682526946598430816176695616 0.0549319678987219951161652402192833 1.0564983624381041334117083365537383 GT 1 -1736958340445.4706994690868505083065906290954298 0.0179496105029307580466323969080455 0.0322199616338864862322734937214229 1.0327504506197689386012047727454809 GT 1 -786624305150051.6454113820152359772221160135601889 0.2011988340626012116234457927905431 0.0669377681154698669621506157858014 1.0692833795183270904913058608937753 GT 1 -1182995701518875341997954899962550.7560516500133481610057792466433429 0.8446926333365956698536138775022549 0.0187049924440011226097363453840717 1.0188821433644113390434229185641433 GT 1 -1727648251867080486216011894.9350462547617669560942416338851117 1.5986644399444838260216328024659785 0.0141638409366192422412740619016422 1.0142651054653319317171612674518429 GT 1 -95624190322146478577190480.9708001652058372762373934809819911 0.9350087125549643380862082756128543 0.0941997128321522425935277794204444 1.0989364308277843907693593514103260 GT 1 -3828633357256037733575313.6024932047325197258385452533628890 0.1210889475289505533763797245719126 0.0320657557590991557350996288586386 1.0325911235160748358021306770622522 GT 1 -162947387816597060208329373767757.6286020620359980049434118503042388 1.6157789506490609657034756320163511 0.0963606824725869445082979208312779 1.1013249832417152432467171136528304 GT 1 -312906444961270479974710631.3914620906712323211293801273121550 0.5226894798970001309179677405010062 0.0610855908104848522752699226402999 1.0630309549512616572096616809311781 GT 1 -3511618147685733553536274676.3341120226377904128169156094103844 0.7184214414136445519399052496632744 0.0717607411547416760808245932996581 1.0744657573947965207334768097480486 GT 1 -41748038.5012359502634552707604417639656046 0.7582968188969824940173782855720621 0.0539959392804835808133211877941135 1.0555084174241265407372365803021302 GT 1 -52523074726868867372196337706850557631.8959463403757533113982076167782032 0.3925219671576566958827709353900341 0.0126202666997621856708055899251600 1.0127005786868005755498242771647059 GT 1 -4509581263302.5564700594002604512409816900136951 0.1643052799376170799895497240345728 0.0704577373576400687362867588649184 1.0730630047075807414639098614122613 GT 1 -5827215290970384412241221092808925824221.0613118529663997266149117424745567 0.3303003531208481527149687146676112 0.0579479808717782326697222732648114 1.0596947839259710467238818833970311 GT 1 -304474611704169304597674834066978.7374207277852491146142340608220383 1.8769585556541024286984934190376236 0.0856943197005798783775238958933120 1.0895903211006382579912614545721873 GT 1 -8704865818062672291684977.0251286628285637630224240033081293 1.1564858254065983341378115890562543 0.0959838257980628715313269904295166 1.1009080269337150581198726770348569 GT 1 -420.1471210994853713877843208061322181 1.8739136681650189221525630060044822 0.0864756177304178861022583314582799 1.0904452124753030389653675538081318 GT 1 -18831036361081864288.7252816863489016259580186175925109 1.4358896185778989535267972372057708 0.0075227109750977602339900126312880 1.0075511492771590718232934414432757 GT 1 -9525228134005322993244187241288313656442.8911241453128071326972066138459489 0.3189611613523476782219046508898652 0.0465907826243003744082089051485424 1.0477110683583138106482170638280159 GT 1 -6697378369608828100491643179498926.8275339553094604110476350893407388 1.0627849998168162124033573142199245 0.0921827823274960061988905703967051 1.0967122227676285390549385831210542 GT 1 -13194425588284691743.3593122677858687472189861391361341 1.2808850621517963050560087670402281 0.0924409549804858805529076986587297 1.0969966515772765611569675507518901 GT 1 -680.4596539765337877606881822755750378 1.1659042095954223749876557774721970 0.0366754912278498762528116595979091 1.0373649470298608431761245021250524 GT 1 -39974497455680501482.5245269653910223113528132883492408 0.4569692378410528456060399655221127 0.0341897327829046027013630556606566 1.0347878748090845685710646348438532 GT 1 -40313851681.0346798010569237307593156463274855 0.0253986559276892395093286325531600 0.0002114103400811335039746341438569 1.0002114326903971942296207041674362 GT 1 -566419118321307066014849.5929978866792369750942638356548238 1.0217330763965575305965391629372400 0.0712532046187065372764317611600443 1.0739191334204079819748126546350253 GT 1 -21485026.8681996638317905980545420769300812 0.2252096762972685153745638926426042 0.0838489806651144311512205136092347 1.0875740596277605959828720247326416 GT 1 -11791533301054742423020079.4321098435326094213014983347381684 0.3837926666231166918291707746500651 0.0131488000562279010536887992329384 1.0132360108494647866311812919947220 GT 1 -336127314450491855005630503011924944.3972064823127671092259753298267684 0.7742394036230124709560665781755850 0.0954601694963461364507874382681684 1.1003289391808470796154028443814882 GT 1 -618963464230207.4263379687257824010127486054069819 2.1873392113559567997215728399297317 0.0937783041082426377578037605862566 1.0984713054204254695858861429806680 GT 1 -80432174479202316736975406449471810246.8719824368428887011989341330008761 3.2118685375411386062713198928944570 0.0548269030445242096983111196966244 1.0563871968807676352521825492712147 LT 1 -4030128164396573161635902.9913177943556058307097142694196654 1.9852375972550171441021173164834987 0.0932978226017515983713209734672209 1.0979412428791131189922420706768251 GT 1 -2441818515885728194063698793.0804799461148448028665034833546974 0.1624619853416655032104622958992503 0.0496663528161433343510275039607342 1.0509421484845356340759103152385679 GT 1 -25080158.0589262711353003113973593731681047 1.9482026428439343234348991765502831 0.0618333669460446892612206044568506 1.0638276985742471450623455056091761 GT 1 -2435471275647.3428868946555702572659188918386338 0.6345353232595266939029632664018470 0.0346119438885324874122243237937105 1.0352251277905671302133830298626775 GT 1 -27482692143077864082789762914971343.1543299208701110392341019491023283 0.1671782221053581590193833900245232 0.0194644692782244815882314712791128 1.0196563966521904754745986019111289 GT 1 -530000317562564937563397141399578208772700.0098342454592225232580052396267511 0.4332431661936713277093786917693784 0.0224041944634090680031785854002169 1.0226589811462376585961701087027785 GT 1 -59964286157869211405435407.9662565836467619790781337105448789 0.2976116497536262139872424435596694 0.0588375438790204288533769200704785 1.0606395122987567298595881565835896 GT 1 -2279791226470595889887090394846.3440341653473453885341612030723503 0.3548465787960395564714946244666535 0.0545290853375832750007481266946491 1.0560721532156734917664323558701960 GT 1 -5465568447926751.4226775038671316078995524446289091 0.8646989538812653347539855329046992 0.0965123514582099690665379148211588 1.1014928397220034497253377556256143 GT 1 -49723998631780956186909807679.7542210168982914417148691704173308 1.8237316453539441445464263999964241 0.0702946785634414208093247280156080 1.0728876017155177058444378519049435 GT 1 -33663256453103505.3698214829049858324620039106447385 0.1276430262163830544565451131367985 0.0276142501707644093404986397041985 1.0280026912863441806974740363767288 GT 1 -3112519182894870298.0940898384693592658864483460926535 0.0277623543346124597052475963489276 0.0272313627563854122114029411027249 1.0276090079655046638674662668595188 GT 1 -483920691395463516916848861.8842529521036125456198296988037069 0.0251167362896282844271816529574752 0.0131905909627161093776322612822239 1.0132783594744556146488110012710462 GT 1 -2225247913180319700949478857514763439386953.8803989740094217459334257861039045 0.0954922907607310512518185048465653 0.0772937488577866749812900131781440 1.0804443495834530826334879378837705 GT 1 -1284161702.9037761492764637228266404486827026 0.4584305093781677065933768614913460 0.0382664675150793572361178922541046 1.0390178599450671551841523774754199 GT 1 -844477.7481854927592974102371392498137929 2.8275019546273536546608178610988445 0.0312764825446695556952353355845693 1.0317760355085420405744685332429961 GT 1 -78819.7489938141554228963076884761814840 0.1372536688958352352473722714008156 0.0507539258510767868745261548598660 1.0520872156186530085482175538729264 GT 1 -402530398208991358335.9877980246879185633748262151766654 0.6133267445044270996403452308159587 0.0164059570380734723033234482024849 1.0165420250208565014437465903680169 GT 1 -21.0118166462060300695654432319287830 0.4907257858160763903626697450335432 0.0270659315592811691996213090613873 1.0274389602012500567311506757844464 GT 1 -2089650074755182784207176.7877841472657141676387308950413471 1.3578805808295056453313225176655683 0.0452379202268787100360269370002163 1.0462931006673430461060433309888946 GT 1 -1153213567136506587.8718962385959615371137170219327737 0.9345189180439036831728569369816999 0.0992092301625933914156522772971161 1.1044822682773091805192706178569305 GT 1 -1087544315199786409821317524669476035.3081168327235399238387320786610410 0.5130209592182863419850783536570921 0.0811570596271370863527029788708500 1.0846400739818662027178542211567549 GT 1 -153013246640763741988022511540602463231851.0425234129421649286677198260983049 0.2972059042237513044206670972613422 0.0291221099723429726073597449679842 1.0295545755219902561980848572596564 GT 1 -371068203105357843102713980334.4589382043023227916833952759359046 1.7442585038843391178634389920686076 0.0460649468291641171650247264421494 1.0471596882885714648334762975989688 GT 1 -9510391076679044.1099718538126381562167539485943962 0.3961010943384084224974313728853620 0.0104575360367895989125444090514933 1.0105126002941652557235705228727541 GT 1 -121640709474468.7894392141086889436392025177743553 1.5155511003980305181498780831864913 0.0191142654906691284764753731172654 1.0192993047846915969251918131016058 GT 1 -924652.7854051513713427615847286343184465 1.3556875322542470424634650195318783 0.0355500038551150147029408152259155 1.0361972923091038994401017866251854 GT 1 -213435.2811694420596859325759075787529715 0.5222270788881280516462103874547646 0.0264046607307358837492251429609757 1.0267595244307296964158120784109557 GT 1 -8190594110006487.1224667182239417746350446566005939 1.1906508286072000278142429863188945 0.0582334022064525333893422746423208 1.0599978081495289669692756948467126 GT 1 -9974359392000.8438858891630950412116482840795607 0.0776314103143763290323956893817885 0.0330829630835337457120511266730578 1.0336425815046617088473679511572176 GT 1 -794367102609085788935079.9782036855472476475240310242775831 1.6154723584390904366219098628492127 0.0051448111528964144146258093096607 1.0051580912624820610241106351243561 GT 1 -17612167382.2230912026338896064819625278384353 1.0679275293349360720166229203993481 0.0276376225990025425955112817730310 1.0280267277442401923891845996602878 GT 1 -11.9112371931595265894875359116703995 0.7565108852323602720650997692042707 0.0094096082271245305424511785287084 1.0094541582765378425918855981344056 GT 1 -3484196986069652511258638910966501306168957.7851351233090013317245623183501853 0.0891627364519249100756629722984271 0.0038678990724984078037620180657702 1.0038753987389975371452083352551610 GT 1 -13233764032320831229.2450022332994442831042075792745992 3.2559664802990640465911810093526756 0.0245388778701439468603314753028404 1.0248449740136812390528905719157159 GT 1 -3552266433529528.6178346040042973049256347515996125 1.3501679152261587864286627195557556 0.0027897065661936065888285971949835 1.0027936050496610135233088957324860 GT 1 -6350047206278219438765.2433171256938719525350395839187373 2.5847753024544083017599342380530404 0.0507219818540975936392931107665912 1.0520535642184818411856056199515082 GT 1 -405456353915559706792690373309817414984.5156593026180839236900076341797071 0.6089693241028850005681275464906011 0.0022873134152950771355213715430110 1.0022899333124045934279255022167196 GT 1 -1127745583986535890740080610807424696.0835176686234761556228251154798758 1.7892097061718470959614756296431302 0.0255420668577711123105900775873565 1.0258739285986678501287955232808498 GT 1 -22868092791044952428853632116911767484.7218132672360487850984915473555902 0.4126430915230240371622212201886391 0.0334323644044100636248196541981446 1.0340040028592212492725194835339872 GT 1 -16840632135703595664185359836293635125188.0099846565417830114959346651933990 1.7700696595690753845743525586164986 0.0975177768403720883274383653851408 1.1026062862991481953358845027412017 GT 1 -249913.1422107474044327274552837014622480 0.7598980249268416940931982559787156 0.0498485949670210130719203045749460 1.0511339333672672241172150745878906 GT 1 -34110517.8847293045466690877309029976372438 1.3466138552659551714032804304488665 0.0391362141949114931685123644869265 1.0399226221965161899794308065549036 GT 1 -197233396910809055122467.2458636417769164174615800179170821 0.4026113863557384072178903201652219 0.0051746601297059797682006667582780 1.0051880950509103933430796061546351 GT 1 -34806030213272037.4118040391315109302196210350416214 2.5257646030295792516972788523574958 0.0455671719856588884536278716643851 1.0466380122954866979520916457781019 GT 1 -108255637204990664955848168776.1578089613543661164487857783536985 1.1984671348096558549243463578266644 0.0058379278846998119201532733097087 1.0058550351990306138389986417820196 GT 1 -1170463316225593.6303327196635624308550623413378523 0.1168376088279784078096085942011873 0.0824179040048785528964536005745062 1.0860132251324842733100185247190552 GT 1 -616280206416929764.3266177937656076612472481678531415 0.2611682397842926451168040848617040 0.0095984434042006273633559143731318 1.0096448053690750492555094893623541 GT 1 -1963748106279173946858.8373478460214996393541164074979511 0.7400777421868050519612853182898534 0.0930897061946728740464258599675339 1.0977117380523690555445600170751611 GT 1 -1248048.9503792189463164033000253138940058 0.3368949239658570393153787443633705 0.0173001396460047846349720917341981 1.0174515357181770693820835251530068 GT 1 -97048564.8700982207434601750627157085940320 1.5326555510124433333698998940727280 0.0763650214947495890605949136256712 1.0794383302989864977160821453444936 GT 1 -1292.2622669856977622388126669469054030 0.2450133053377517898774401247781433 0.0594590463151129245106769514994053 1.0613000866012249738849773942125998 GT 1 -4669685559602091525527986471.1536550798119550122729871022189701 0.4209902506589053629197304413221089 0.0953879116446274235957730920116477 1.1002490588225378604723645989624063 GT 1 -434844395691053303.1217768566696897586093441713958471 0.7206723712103908113933899795463117 0.0735403343735282887972961448198824 1.0763847683366089771174977112280588 GT 1 -1553.5397871054118684122061405151746864 1.9059308403257591955710550158541322 0.0965003220056153313829917066262878 1.1014795253479420945479727119514970 GT 1 -231598344363456.1123108721868541584622891482456236 2.7399857796661063307441074035428343 0.0213347593087832621641126627438770 1.0215656349762854978984367720528719 GT 1 -63275.4597711204732236821730505740592827 0.3200044777658452145088316292339462 0.0621470737574939575181624041982892 1.0641621373201746166170406265600184 GT 1 -1627248301938469.6325945410175399874171223192369687 0.6476906393774463939422889499042493 0.0158212745833858093823953411919077 1.0159477669019418792083376709083646 GT 1 -21844176.6915227473165982592285800999972270 0.4203242451736238466460900792459371 0.0064480569464957489634471541029453 1.0064689354646640619148515465559819 GT 1 -1331401361239582115093645596.1569835286007445515400480495556033 1.0709185484936905738769758024617154 0.0772987464075395990648047179016113 1.0804497657852839674936511912567516 GT 1 -225434724.6797488803590982753823863289412024 0.1567254211507953228710036779883590 0.0157568650984999740652406209030821 1.0158823241366411385565214872879739 GT 1 -39062450028096888757253502784563.3150680974657414621220049321207537 0.6038277334098760928328139635341419 0.0762292253762474260479900362571883 1.0792913175287634553087201806605448 GT 1 -82000165289765358956525615510.8101355574269702562289645088688445 0.5193752265853941879413262134662709 0.0339618152110717033020139554351962 1.0345519167838536599385667786231967 GT 1 -66449093863347066252.8699733651490935531861986341162434 2.0529584759199836279406903198821298 0.0772828470258064664378050612999021 1.0804325345908004288258778757225719 GT 1 -92713529544828875191685680349116953.8993884240109878988059077823549655 1.0726348244875581086823572044654740 0.0508080377818992459864544207900386 1.0521442224103423128383095734138524 GT 1 -17452900408642202241732332583.0906718919741544729363060411424774 2.9053146126594997848855815652471622 0.0541648462619715771727006051181432 1.0572375011433849731769611891788315 GT 2 -68561790133715712570759900.1068664264549669800399634856702831 0.5276482301822616232842163274145147 0.0659912491127205265883321851692590 1.0682694715388564571200217479233392 GT 1 -29963927828172362787249078641987992.6222586841882318724717235833346162 0.3797294132322389458081382164331216 0.0169328492055294553977249015057792 1.0170778490679622660433101038117010 GT 1 -3213323.0187301900902266774083838684328369 0.7692575520311800002808350156592296 0.0358223906911407407784031004012652 1.0364797593204300527431425370859645 GT 1 -2286.6925693507623432213061341898137741 3.1495292910272469663997104254229330 0.0398510755538183083594598795678018 1.0406668769201728787678050130533970 GT 1 -103085356553091723626865149372.5735373725720427460907362925853902 0.0045650892089259315022713211140311 0.0169172887011985107390710157535409 1.0170620206668507628142242677350377 GT 1 -1038274023783069920291758622841.0212169158036630733314464136979150 0.3929002577036908474713611962685334 0.0179031956143791639389138901746629 1.0180653966821476357265009788325760 GT 1 -22246.1027910950477001451086106376750722 1.2372894768376382395014706678912377 0.0326290370963363079994142293182957 1.0331732346487928193889698183059347 GT 1 -4223.6519389204985043612985303654729010 1.7233240500208339291307976711521428 0.0601215310738891281165282136700160 1.0620047004530278562663955837721742 GT 1 -85809010.5506174763123398896017490480277304 0.8297008247030228314739065052404279 0.0622883178386351359364668077713647 1.0643127523198129256807437099133841 GT 1 -100008275504612793.0924916176365164629918519106040842 1.3379205393447586368562255844142344 0.0620165260319455726533610265587150 1.0640229485020618055090355735240733 GT 1 -981597832159.2785529462196696347957615221153555 1.3019952190689720478990825984895765 0.0330448130512456084668200828065623 1.0336031269514370538494461581532177 GT 1 -429016647954153812085474.1719032124129500421908114856884123 0.5026795578476025827693040823199637 0.0210753485331632802106021190582799 1.0213006042074021822068949432086334 GT 1 -23546009492.2587049153053741712584955371269890 0.7170186454265167386692966056588550 0.0170529493493713076788585403152708 1.0172000253410562944075007786701229 GT 1 -25415.1312320684594379944015243625027756 0.9028161869685444520729632562875812 0.0436826394939153319562889635118353 1.0446654539630337143351337772135930 GT 1 -122534881525658.9682276544721826585342150700701867 0.6366679064837497284237407286744234 0.0062958290833965010081190195925901 1.0063157313936569476706732131606006 GT 1 -1304.1326658983846743569585573137913583 0.3301808094231218993578539566674649 0.0405705826800428254876917289634058 1.0414165281787488234122427198472712 GT 1 -38.1514968987591614877343754428588124 0.4679586484898267006488425336870463 0.0262444905024803346450577328376389 1.0265950237926262221136296995280156 GT 1 -10448422623637850.2285875901739954441807136723800738 0.0556202684261197726116902695858926 0.0068550186615500032657214827194837 1.0068786222324340945086965040846070 GT 1 -4009212465.2340801532405375053624996871659771 0.5241665732444729876496638310602664 0.0332280558101741677859303927361781 1.0337926498231249077314917091438569 GT 1 -20034899005108577042053408215354369959351854.8970249938980680716131672898541797 0.4182998847600612289159049295122821 0.0868181213577559268412976934850439 1.0908202083229449041754600466822741 GT 1 -5940893812439334781.5686045178881610958808451746242473 0.4932668162039104456622727253850045 0.0194400578799011281677909601487630 1.0196315009766227387678354620515310 GT 1 -153604097659550165562005824429396.7629721228219540270580985730353443 0.2083031083483721477677278236850266 0.0764794713583537493571920379566794 1.0795622504164945231094594521455122 GT 1 -564987994211.5751528676392553555043588762231976 0.6416893118459429434150179186267620 0.0131736179227997313744482354014686 1.0132611597053865586008625005127786 GT 1 -3685617661089162096722467526600063.9120990810518063080199437060968213 0.0702326058355174136674036966264329 0.0251301645206715685686802045757980 1.0254513189689684206738355831855933 GT 1 -198831230976515414391337829.7247170148970972565356252193978973 1.0678544740264547309489702313345465 0.0585626526107631832403990416028533 1.0603474786230935968401013450656782 GT 1 -209910380.0476999762621525880665076611982514 2.7744633223465720918749393860912798 0.0561474555997016406963212713729287 1.0577853280033758268696374155897268 GT 1 -9200754783.1001934323292268190242318572445618 0.0387648994519897891200217389754643 0.0384779597081343943540548052133208 1.0392377913955734161036775759460029 GT 1 -206.5659471443043200910217866309399754 1.7664825961795714846721659980296848 0.0779540455572290671100252390361700 1.0811602145388020559382281150090523 GT 1 -276232509619.1256514030753602890453909277973587 0.0226430019439905092967334318468197 0.0195896334729519795989129703544631 1.0197840536110826891940668231601216 GT 1 -89827677977673461520539953166808.5322216897592254611901253992341382 0.7352010941988550342046063069434890 0.0794324514037273944210495355571020 1.0827648984959124561916000738261205 GT 1 -102619520991184991934.4551475316210770184967026232642275 0.1022659021639266123415138618847173 0.0222536246696900291086288013709401 1.0225049725072485551441663835299543 GT 1 -4463.6548539628917680936883231381549778 1.7496973035970090336729107816464263 0.0723044980751944936385140126356962 1.0750517229658984951922848913383177 GT 1 -36416265404115786960174.6060141190559690778541973777148505 0.9715021273285688824672593935161279 0.0254009352017225684217176524800509 1.0257291081481173175320984541924784 GT 1 -8302.0804066877684151229724441488467672 0.2274134974969717326170533584897337 0.0043260536501206054437114757001576 1.0043354380950669982195137467114906 GT 1 -907496.7530601360701359872512547327077490 0.7773085476808877510864754791854474 0.0399489062148489356844821929889645 1.0407687732436667036600454742757575 GT 1 -841821192870753.1355663532738296617917226614945736 0.8055682060823636064773020975942533 0.0250726077249794471841888153927850 1.0253922802187952759462416893073866 GT 1 -94454211435512001909063.1025698660473790742165545325972294 0.0855076913574810427953006627348882 0.0581505652086307536443011163012337 1.0599098528588092289714394300258482 GT 1 -5846.7599616100665380276726140711914898 0.0955170947731843119425010279355799 0.0506207670083165014228445859524334 1.0519469469279557845253748329526590 GT 1 -205546.2769689809808949991991855640338278 0.0595076463128492117406133689308484 0.0821814126911130766950153179457497 1.0857555252011008737015445602840691 GT 1 -4861920797142594271771219512802428340650.2184492894951709102202343328197991 3.3546051502361805998825554908375952 0.0540549059262831457914053863422326 1.0555707517058584433287692987432827 LT 1 -1026501251.7440055675873660144644121689631132 1.7616464382884056051797962573868308 0.0406909316745398325386443890618581 1.0415419741377007012201607160332073 GT 1 -435.3236515659790121010008766806550131 0.9439432370033747242256076984840470 0.0440086620196219872138875052605742 1.0450064266617652238479966171562903 GT 1 -383279622.3210215528016191405184442054943395 1.7675988312082880072947031722158902 0.0213194674473822397810980163450708 1.0215500098766118813334676098318674 GT 1 -417810954958022782042689584.7939545791568106823839090972878848 2.0763944683962428968648285508244538 0.0594886278471353972223084512172839 1.0613315387108963375179581120893106 GT 1 -2999527936470300269402904253831770230536.8982786428065478440895402620581925 1.5934759516711693366456177640516022 0.0023435700222033481957457982390871 1.0023463204805292481559915446234801 GT 1 -259667912549519863012880849031026306.6777331258324603073208441280027294 0.9473650925045841836683870617614008 0.0394024360902526715824152967285267 1.0401997257636362952441070668399025 GT 1 -77.8525386728133164671571372701760959 0.9085096252391428267894374037755743 0.0000956743088538326850859948132559 1.0000956788859324615650038673523582 GT 1 -734597624047462096675517.8160485516882394820136083797241356 4.3109609882015430798219715935335631 0.0489325037353425304448567045986074 1.0501702449651051225859620327876172 LT 1 -4944854602005859053038008123122.1909920511258920089858840036145003 1.2527713155187885404082834209674175 0.0369561590571933339866169373451108 1.0376563428383218596762224520167125 GT 1 -2044327550377932074396591329309920682.0184105808928677248814173030784597 1.0168495706195796738822927372344582 0.0637820630814895236557097803720974 1.0659069910190898988003339256631695 GT 1 -69528752715678012816.9833374400008440542034919891630234 0.7097186647056358843886787237327059 0.0672371709435692273454574397743406 1.0696043129615923435613759876251052 GT 1 -452955244059994624379001138854.9323028101353675611111371475096601 0.3309430473922633789078483736205178 0.0552015991688732035843055132147614 1.0567837067008331290109450867257192 GT 1 -533186152943.6255340293164506088653580380157689 0.0316232860346380635933008753176469 0.0315549136824778027349948658730040 1.0320634974663533567454755495059451 GT 1 -83305003999932571151227346430.1609127389106195608504200464996206 0.5550313735084184812245562232644901 0.0436101955715133820305259119437080 1.0445897038181451539142655030328022 GT 1 -3902745640987372902410722456.5035749097904042771533363182249415 0.8044850604518007681531079646567510 0.0504665590157227834307654521327893 1.0517845297772925811904074372743992 GT 1 -1202933.5518602500080965938594869408384911 2.5350766498342993940752541498962397 0.0856175337328353305338852307499554 1.0935120344207744243074083341358882 LT 2 -100072511.6460024651489639246926957856188670 1.1878427861238586651567228209819057 0.0596689628719321666073512195965024 1.0615232985568669712069226712152581 GT 1 -900298238103404815105445951957357958.1925949408755644640781644959361974 0.8934528129745063312953504265890660 0.0132080777789607870966444553097197 1.0132960801923819509986766459012249 GT 1 -5423286130946051464345605034777627168.5137782355153797766130450942590324 0.1829923393371144390658306984560240 0.0202434663685262096023377238342554 1.0204511732525482250361772450340781 GT 1 -22680055249559452834336949524669359318430432.8227071101587744464497872493239230 0.7134023532491371904264860234237932 0.0342652555008496118045523067460101 1.0348660740925860081066290218019695 GT 1 -19560978.6695226355696034827201389075821216 0.8852989860984291836558486179189804 0.0802598661856262048130262044112472 1.0836641120845531380619273156130141 GT 1 -34620395953765556128007874531719.0441156860485946903625960822259244 0.0680849347570304265525776392089449 0.0991489330895133699721851128959358 1.1044153325835739869506111178041836 GT 1 -703270559387643677594463592643148758.0128824772528851091012989189195916 1.4974445746002044263424667160826539 0.0794218106674478740870494290260908 1.0827533396757056332621507770723080 GT 1 -253918319977504694349783817010645768.1663584467778983896501366812086472 1.4918372898402071765539960816136224 0.0537222043420607196753681655891036 1.0552191001224680051783014956353536 GT 1 -184775666110815723751702786761885790450691.1628215338084089105227735735175999 1.6044136901792014300976496425994018 0.0820102820058159303652286049983035 1.0855690888664372914213353810084019 GT 1 -7089974919438820852856.4928001120062342554074349646785300 0.4132978479602347295904777508283878 0.0602720287753085632409745219442184 1.0621648379142816858120033332856604 GT 1 -116788115941946860.5100281073659759171011830213739889 0.5457229215853715353338348195430561 0.0861615645474352912141171872981180 1.0901014896162967853575147174970412 GT 1 -1863885091779934.2331198851643555827541369269996026 0.8634168872857867794633991365373305 0.0401412591901870416737860271175659 1.0409691503369194007610488290708305 GT 1 -7570914071390.6670775905533197861517689111885737 3.1071778256008216275332921331979451 0.0903235396642877878140009620363370 1.0946662807825177930018635860365788 LT 1 -1.1179239570151762510159757592671015 0.0471791602542630616281829095443116 0.0646101987027055234816197207984381 1.0667919367888164226415368509018765 GT 1 -3135747934.7139779530765740681913028873750804 0.7374971935433489961556293377082091 0.0921030204143756742411824252328122 1.0966243654238989091270872178826005 GT 1 -5318509044320195906234517477461365.4348267526022126786606362922620743 0.3187572066176008933562168130297997 0.0143186063498553341123541050927050 1.0144221067695718911264495317660718 GT 1 -17299097271705892996713364967.7302034549355336030392900961333910 0.3536899352775569062083010390439939 0.0880383506560453790556362600495943 1.0921573409499248869300623465328277 GT 1 -820638.3128766567557982033109031441607017 0.5008938697885093221177600097631089 0.0959309711419615509436741288421219 1.1008495621489505729882877066458791 GT 1 -4339397440784274835058450338510055287.4659859613429798720754687026208220 0.7429345246043460732327792651650814 0.0470895433990344695089912896786492 1.0482343392377190814251449945102368 GT 1 -24122507139047851.7407724111678810185744915394243268 2.8715146164208904467237655561184181 0.0679997911088496703218770504860252 1.0704222401644354386556859081726903 LT 1 -726737797977.2990037182777405756246832185219920 0.4008999033499002177697436719502394 0.0957634419538375206729141379583536 1.1006642735674004408438926179944513 GT 1 -1829053169187886833312305647.2795864016276609786319292508770679 0.2699152909026769699907568542173780 0.0858168555993609692451296992788421 1.0897243507947870610921112693043884 GT 1 -12849975757362612593457106006682870621642.7524619112494410502812013209522647 0.4006541895490780804914081743828887 0.0368024926640459488118392060843713 1.0374967923296478767509917989959529 GT 1 -883183240400367.9613364368301309425299393337751769 0.6759595397904388752643533185622833 0.0008926859547120745358693839766163 1.0008930846361014544343484156428400 GT 1 -7227146448910281277.7193359174375550369639862443047037 0.0017398622112645547432497186642579 0.0184671132919940606615725286342246 1.0186397592472232382550441478585476 GT 1 -2059872937157.1152248015485196135329074576669093 1.2779039025086401142241486383205182 0.0063522219352883728190493835076802 1.0063724831450877030996131153805574 GT 1 -20802497641315336509582.4509107060586674069909132116388483 1.7802659476642598141892294749042274 0.0627199433182774104603988038280119 1.0647731548680747328132537537416325 GT 1 -26769039986316913835283625193501985706.1007915305124937691864060626792230 2.6533452467238695676680583655109375 0.0724331331151434119101911150094126 1.0780171910543116999067081527365471 LT 2 -867797514817261329349467156474405315622.5441796274373417552156674678343877 0.0089050819273836023393135450704089 0.0781984935586555548521069942070431 1.0814253644582443348682927835324776 GT 1 -12192716223449958732986.8128940977797366556413783623310335 0.2008050241986300041634603526777345 0.0276785159748081208133551377611479 1.0280687843238444633151857606489934 GT 1 -473262062996.7173914589161372254169663779349467 3.4550142352396855850088269004432903 0.0667747135568762465190494572929378 1.0691086427134058329974323635878592 LT 1 -50838284498.7581164390155207076285856236274871 1.9474288396657449016880696639277683 0.0910661469126403726502251865823998 1.0954829563332341650440199262698896 GT 1 -23373778947371310351482155687825281437856.3083803625294491909835751583255478 1.2663022149945909917763743131583125 0.0190564786108689445676870166085695 1.0192403935622769512984653244827869 GT 1 -368.7686229998563292893841007975835229 1.1319193096752552730001610829413640 0.0645461665495323367086263716738804 1.0667234840843691872123471365352116 GT 1 -738.1152850991761396101466327768061431 0.4443400934340950674821708609872917 0.0692501161134981824648853520021659 1.0717646909819354547573687695702761 GT 1 -2403956.2429976089175396661634583582918200 0.6836375621485860975515561240093833 0.0027615519963879116060495260149682 1.0027653721156952362166817083943025 GT 1 -178506627977235930664528237975787574426562.4017022198143140021430096960336815 0.9204304330541541230148614613545436 0.0220187764559223833497811407935289 1.0222648079618061023828018329490028 GT 1 -12976618666203823285295.7394816628091644974941437059795698 0.5408568621323737822117863699822129 0.0363072322952274674228487236681109 1.0369827408694898619384051679771978 GT 1 -887192308109.2434368562500428396079212845009237 0.4137938098300054291348700641774760 0.0328091460909524089398496278868861 1.0333594359824190754956780178647356 GT 1 -3964132900601356790.9225937319106573998207867142666084 0.4815938682680324945877819409304269 0.0722145093595714561603845072514959 1.0749547252428777038159920934765075 GT 1 -15982150265.7647976061082650492286506383434542 0.1630516757037366191107159905050977 0.0151710531799781783701531808175064 1.0152873109410926342063595461090489 GT 1 -5070761664967700332630.3465651337635420751640102667214995 0.0347606771643274730665233996177727 0.0780854904031891644936942602070397 1.0813027825045975713783146506138081 GT 1 -1.3594066368561334986703933846507084 0.2787727562400415585961489446369458 0.0841363368638347871859919014109274 1.0878877647566838504767604941718599 GT 1 -20091376.6614078847869128385637622635026696 0.6841018600930318467455543004817188 0.0460440879297740932385115875385484 1.0471378223646052915434492885678744 GT 1 -1.1586016358408247031727273221032999 0.1530423098631534159766516409623985 0.0027873478509463951412760082618525 1.0027912397386797730576195982027367 GT 1 -34067504196430470194723040666230018018776.8120293887764842965233196753791609 2.3654944177051777636839495468149529 0.0262753285982930714188680299834438 1.0266266935329581366777049754359029 GT 1 -1601208.4506291038611940030751123994497922 2.7379172155346151940145213654736710 0.0452019491060418683742541147548699 1.0462554258957939246036960761571595 GT 1 -1784.3723880349851782596742300578547115 0.2343671908248410265343438327894782 0.0113477492034260031244918738777844 1.0114126261814928832412608397915835 GT 1 -207181535188111.3408317804077714465609216213290746 0.4114889161867649701191051354794473 0.0051380624392481953263365657704527 1.0051513076714291672009599301603578 GT 1 -12881749.4325560867674106967752873488234439 2.4861506161275290902488781807352573 0.0879830509357908254267140738719732 1.0963376060775383829839803064498626 LT 2 -30186722105413445244816170276270436.8757131507134281828082980595368893 1.8576188000219245317634547405245866 0.0985810231596955268735954208784397 1.1037851163176114707104310410887361 GT 1 -44204493171684410839304679170942481188.9734089540095814243123536361508160 0.0861406062859083173667246635584241 0.0659031802345043885998649440354921 1.0681751847066078831263768086808239 GT 1 -4358651996981186265943.6024907964733759651228924853659320 0.8928940137081801605344060397812512 0.0446832370436803048630946900561211 1.0457123045385318222703240507468130 GT 1 -803939030788961084289583.6350804765868410711034824014180591 1.8716180547440752935453016527960589 0.0913269701560083076014891507917380 1.0957699526552744491529454394669507 GT 1 -185438481.0645243633082210924860009915797361 0.9303256781008043502031676124220450 0.0196930487932027593235608103626917 1.0198895408421193401738251671076023 GT 1 -28172468352108846277712754349792773.2739027255272412924853716362003412 0.0074241932344179414220739137652296 0.0717255194101237593692051868026615 1.0744278134314700126438618263430195 GT 1 -5626.9967304586474231163497242825238141 1.3724456050841641803416598255119994 0.0223404663723343611607837905426527 1.0225937946820242296350900630581327 GT 1 -10158793524236004758.2012079884382473296266871182142549 2.5331296501437271675172611806601511 0.0340152573162168321843387854043158 1.0346072392175565218826569727824076 GT 1 -127048256479632718140867537188352444.4790924821703412727857378384989086 0.3231561291864125010448972996051044 0.0049513020819968577927334756308622 1.0049636003900368402136942788364339 GT 1 -360404902567.6649667539773072405847626500728326 0.9725850977763568087690279880076910 0.0807345464263771964841936674859737 1.0841803478747521546629178245746597 GT 1 -8880463099936736640053223714104825509897510.8571567016853814079035759403840833 1.0664297524484493798032428078494712 0.0966577174369999201839755794847883 1.1016537469292630810195900649915731 GT 1 -4535467363439216905095549.6927012087257168014178075813656725 2.7092760208424198711845981543156694 0.0195336929887996932288220050334209 1.0197269970047979888587015189380109 GT 1 -142.0293618577330663290069271762757722 0.8293338550503132827834419579901054 0.0177965836399699772699097856832325 1.0179568471097473426710161583003140 GT 1 -6526106397108770521655032809366652170.8963892449795645461476016772717253 1.5526269349400427254771724960983200 0.0630827124637261324615355060769664 1.0651602743473529552297071765102510 GT 1 -879855448839070370458005446878389.3775270871803625748493722397335560 2.2897758333322055155600426716483917 0.0183686439216363287458709668050426 1.0185394422505153615116594934286301 GT 1 -70254951079750283058564008011782565320660.6566152090938823354552453396649614 1.4540217175718055233970467171308401 0.0509753382597943025988270076103538 1.0523204936285127439726180730443505 GT 1 -2.9409453717306225519117851309866354 0.4705533269985629020736055110683132 0.0759842290909879691585678621028946 1.0790261394027646160910709779977776 GT 1 -13752194161019718703350332448708397.9013207284635931299746181648308342 3.4865672088043056576921846032911940 0.0359786243499007100086514525899805 1.0366418107065375860905350642274370 LT 1 -10880341584246976783530842.3284181318581434109939626825991507 2.0575890171105834442689185521948901 0.0237980472118764732415131345037258 1.0240857951335046539511492387389854 GT 1 -1372312.3758017120493292359435830452666832 0.6450355584310374461356463272551288 0.0388213789698840162856611464618940 1.0395950173250277566198891256127209 GT 1 -11664942567066847.6455999916556145763358740113604212 2.9492969856851937196331080853384042 0.0060159023177719667880551447342986 1.0060340707611549772582909034394920 GT 1 -1370.0522655007805031647986777730624450 0.4420963263554144226272870833663381 0.0077958611672309959143509311548228 1.0078264077544379523176622451863136 GT 1 -1200246388477665062008799.1414515384228646186362132269441967 0.6027670945316908137604931564718772 0.0796151316851916766991808903317969 1.0829633612920018952857986439383713 GT 1 -723271922.0048520908885810038611815535498130 1.0541593647431121855185247050717009 0.0750556804765918429246359970692841 1.0780217383913392094906369504786301 GT 1 -4230981624775.7383016434845549185864532773104008 1.2141038665569800669200397512475070 0.0719848650102986583786851574662097 1.0747072370727872626474982892487033 GT 1 -424367140348980056571794336934426.7307653744445595476056344948876451 0.4533787708049844759451497815480754 0.0319416325496521345832647608494836 1.0324628965705095215265792752114124 GT 1 -1107671332275597565541575341355571.7277357719249779260476957723772174 0.2607196760142426514548002789272410 0.0536519941135488733935747660389607 1.0551449066622639210360138409380304 GT 1 -1203935395404990230859824928143.5972296877376536868559363203095512 1.7680884075497781773459842664826202 0.0393243942847413114782961766732646 1.0401184860869592774261276541622990 GT 1 -46974876373795429011908342.0565347838337950912015262942452879 0.0427722957489383312746913737304375 0.0093441446126099715307017033891885 1.0093880750073508732552634615788120 GT 1 -20787168144693468310.1442804786355623622002299927095685 0.5348524448834896907144499045106165 0.0447709713517631310104867807217780 1.0458041466796938123686876466254254 GT 1 -17749398878762868986562662.4336090285223429191663590040004691 0.2111180829187913389599447247216673 0.0350728038243955169900497687111854 1.0357026248668332644925631153026513 GT 1 -65504459756022.5543100664764688757934768482651776 0.1908109655576597095293770958212269 0.0153740966578654041831005995739227 1.0154935035111735178289133246576459 GT 1 -8.7921329460584124216720437057772762 0.3013526067423448601944691927985470 0.0329893807979592304239916095810124 1.0335458019944752907162333244916385 GT 1 -1039406606745388.3419691423909174269309554397007990 0.2935434947682683527042754018641944 0.0885787844934094485875086277573760 1.0927501224919776234613598859609746 GT 1 -17977904541.6562353460258545233823226762518893 3.6131605121123990023038723248067854 0.0372747391929303491291905480366453 1.0379872030004812161768806787508126 LT 1 -89422799814212282096831202743.6153140650680628622098293775697135 0.1360129104188303280189835189549252 0.0787474928650747829598377401419095 1.0820211140332569576673056842424385 GT 1 -147538.5845736006021960534829216513567410 0.3045834288912053710611430386257983 0.0832230625097493741014766142225870 1.0868910887806366926570704699508650 GT 1 -1039679107439508691427563385404.3498841064299279616143945741274164 0.4940747243082640788880366682508987 0.0602153514903571425120245554653216 1.0621045272950567809509828724033192 GT 1 -118832421789346291490.1251215182179795189323737771577733 0.5685364067924018199696424350463892 0.0781213992022713526709326499647896 1.0813417335115020763358190347768815 GT 1 -39.9791840992101684729051019201796657 1.4947839667790189903563971825076009 0.0515986093885006632207520320868568 1.0529774585208741623504663714039542 GT 1 -2403192350943336969811164534951729129085419.1198678904172053975547570025359360 0.4994461771052239549345617782421311 0.0788879378138904571086941832743549 1.0821735756593937222209695700959792 GT 1 -66563.9723724379280926645681410012885171 0.4961276032636723655620719642036380 0.0697083946641771751349537302762299 1.0722571878581158674344345666811404 GT 1 -32994407772249216139604621.6803067999900747504475717909272864 2.0310303395537805542149296775615679 0.0166969844770654013468037007563250 1.0168379504632789240362847408018579 GT 1 -7064265942365966777516136130.2509590769908560212164309504533179 1.5411033496766017505875312028995338 0.0964527963261339719028641764851977 1.1014269249644385497967953041427988 GT 1 -382420049935796423056667780244302533088936.1488079549084330952470514804153763 1.2184625417122966418261314394646417 0.0223517703292878952508460289614490 1.0226053570121758693513558642545684 GT 1 -2133910928662131361.4258557153237588777696379739419180 1.1350688970193115041658657203767779 0.0576991899802861435284649758300701 1.0594307241500211052992669624421550 GT 1 -1373932.1816972119118137392721797672922879 2.8154858592618770769426922531116181 0.0833339262142246507842085018298820 1.0870120237689930923869482398130084 LT 1 -98081393582850619510875259409275.9793459590443760924995828312803788 0.3511660578065636491515537371446256 0.0999740149579644427163035457805600 1.1053316438056938382388943071190771 GT 1 -5908110884651123022.5423415009811525867372520573231285 1.1323764973871665102951561530041654 0.0220666414919127417988369445831126 1.0223137518537726861761399620343178 GT 1 -1646735208094445026783148965711461.6105070011080789321527033161160750 0.6296952792180027121374429345422163 0.0971377982915013065533490600203732 1.1021853377540975956455916408330269 GT 1 -1713430444.0969569121024547265901811501045298 1.5681650598351712395889066288496707 0.0825336192287892801625870929946400 1.0861393419359684105781205477273422 GT 1 -3654.5869988390931901085798655793425611 2.1639858331216897494652034161230322 0.0325624812036279585185709868361031 1.0331044362190111579175271147220984 GT 1 -102993.5604099814729801907435946086970864 0.3673313167008144255981255392293097 0.0579031545668324325379328343290231 1.0596472013747221645512389737955708 GT 1 -619596298137.1373705954669945554974259113368868 1.0003236390709077980478201910059917 0.0703162245283834381646898189539456 1.0729107770315167172589033619502608 GT 1 -15669.2161095980520563303500726137958749 0.3694947565699925204686524090134788 0.0713791875355877659114480027142988 1.0740547909138866763216626973437056 GT 1 -298489078558820711426591923964.3216288658949601945498262627461099 1.3954656047742666050163372442627113 0.0863584907816270279035398484471315 1.0903170063288366023060133875683605 GT 1 -16450815913.7604108199780302208515701612074674 1.2825809144796984632765689903351945 0.0485198085918221959311348849943146 1.0497364107409569866187787928572045 GT 1 -3658423655619599050851783729248950403.1406385268129599201595879568274697 0.4870654430627587739216159513626351 0.0481038335029836164278154593504159 1.0492993189448615109421279451033345 GT 1 -137779882740827824.7126668538740864383398954065030505 0.8940827809403055457397073424405978 0.0577201594115421546100572209533601 1.0594529778341498364691219861542653 GT 1 -170.1687429479457560849388494500306759 0.5332187237028907168510216617219930 0.0345362251766939293529197259361512 1.0351466974204431679539051899941026 GT 1 -307884714.1741489712160050079186167610901227 0.3458654316778759803391135763871174 0.0883345136109682854525203444595579 1.0924821474322627520420658337994426 GT 1 -16786510376575398389847847130.1544528685871825665265557411172340 0.3065802663403094669624229791640279 0.0957310007011914784533522745784085 1.1006283972577946819748153367618192 GT 1 -865.4591871638600444786031817776481128 0.1057755004671769096569474190153729 0.0367265766698897133476946813085680 1.0374179787924311127240343025799266 GT 1 -4297273916667857171101459.2092080047685272434746763867361540 0.2596172033621943746256963940342628 0.0854124266383366524782863607981985 1.0892820548156473268229002602619769 GT 1 -50201476588757302516772364865383592448.2571505665621519331558148391872237 2.6737373537408753169492223781995084 0.0803000791653177580103730303087803 1.0872113359836340555914982271999925 LT 2 -10095365824502932409950668460317793.3975505543826854775727630843788848 4.9838171509885788671998568218276235 0.0735365319239658022683058714136992 1.0763806640653703814587173090621733 LT 1 -708248499484160004.3343619896373137184796908859787787 1.4672950997060462318739394467364571 0.0158241553036016333991686001976446 1.0159506939357797519018782710976998 GT 1 -17928573512153442987740171.9502504534092906425532038340491487 1.3278208276107319961730033766604977 0.0950074686007573583077830501643825 1.0998285879137857437751293206193932 GT 1 -4.6245536000634901415792753886208417 1.6810814763127023962657557318187220 0.0637199076444800725089628933187806 1.0658406032995189712200574094692065 GT 1 -47296204705868512342967037874163.5609423732527242576945594117251373 1.4322421508369675092274110860207858 0.0429674035928865936788702387450754 1.0439178270777800857318978435087382 GT 1 -227440788302196250743.9687146552405999459103177787891351 0.3285573161383442179593034474599330 0.0675103858011818791128964357112748 1.0698972651145886417093430222297300 GT 1 -6611252606397280464823218857396.9901986978399297270756883565342334 0.2926759988557281636485960547470984 0.0669407136415436665879243660135368 1.0692865363610567915877793725367541 GT 1 -4411040994571891340.7704520284996022331672579185815749 0.2060678089014692062087284692168914 0.0894222610902942030121460381785307 1.0936760029982166229928692830024765 GT 1 -4523811720427579429648.1401711509613955548921004032035191 2.5027110990339994035508822706307440 0.0475547613251835808700068716258331 1.0487226658389383275697552778953615 GT 1 -42602.0620864434057420273974881969825925 0.8631708999624586578255436506889088 0.0281613293042893152524887815633326 1.0285654649478499549193528050449958 GT 1 -129206878701307593568.3902140982135660278203722547722074 0.5287193041784000884806041751700258 0.0326587798554202641001517051807338 1.0332039810919556859952189291059012 GT 1 -26587001127015588940.4292817907582057801281542853212284 0.0403575578138463255004415058017996 0.0381630718610411705254523798673428 1.0389103560545112237401687938491296 GT 1 -765784237804682200319.5944506049566331772044672708200523 0.4314081103019221959458508269559092 0.0514453209802123608194507357498433 1.0528158433827315610997683375691867 GT 1 -66772.6886228293926441336264958858682720 0.1756036931826028774456988346449551 0.0926102314165411771026846080422914 1.0971831873465251653482240818272580 GT 1 -30915.0665448630830291809948988375296485 0.9971861001090046149515045906313284 0.0128053970009996714408897055947750 1.0128880928242798604026309595969021 GT 1 -124744502364036.1441731213963709123677843955476035 0.1648286865933018766069098913509828 0.0736664142431616063654785028500803 1.0765208654102935816597560549254384 GT 1 -22.0574058562535176558664400829705920 0.4391486663091410997926003535759573 0.0656554423072811087658077975779736 1.0679100033295907832598495948126660 GT 1 -48152187132313189704432633875959494218542.9506184653627408259782250309507719 0.5546486944286480169501698954977862 0.0002523023570587545918552413439661 1.0002523341906530164645203437857062 GT 1 -37718658387555862174295199180338640837.3707798588420252261524166557465650 0.7688402196917643143687493078552600 0.0097187414325474711914479058660178 1.0097662766390571112464376489076128 GT 1 -39821210801.1569523108084810390298174759717995 0.4832908419305431611619688503355793 0.0574527705847852203630355731647733 1.0591692501301009148557847397509424 GT 1 -26163.1038493688961527142268423724491106 0.4106044498170930608981075791355475 0.0833807708036201621916009363019656 1.0870631282962911684908586981962689 GT 1 -12561637192032023597631894697409842.2187786892183678726076357641669403 1.9137127238009497377686202223136751 0.0374410759875225283653202516499506 1.0381599949408270308402827799648848 GT 1 -575086204261674270804552996367566134877.9237265349422878385825354844765098 0.2107199885957147633921965767958020 0.0301272261026759938621250531500563 1.0305903770176494139273174743169102 GT 1 -62093295199981890585220590161815703387222.3267645988166119974620374391471324 0.6998961915744376593198829471422423 0.0605745175044760590992108860782596 1.0624867794046706731813839111465543 GT 1 -808493111173908105881350050138468.5757684993860838988622016659230316 0.1803956703012161281358873353872516 0.0741652020270613349174533752444374 1.0770594641687423395572328401611440 GT 1 -521649874995.6526282589204364308678325051356860 0.7897221493663353826022526968405802 0.0968786586903719091034722491778807 1.1018983588345944615374315514027837 GT 1 -13846785343461963683182527448.3021166550849097944696744667267122 0.0870067785598907903707385122977637 0.0554972779821090455507704575259268 1.0570967100776627202957905354881906 GT 1 -860045075941665.1524666067736367260203673825133797 1.3445576587335329263607038932582511 0.0646055721123488453589286754501144 1.0667869906381224933413209738864368 GT 1 -9535560783266593.1432513317028302326142929791484563 2.0882013665306822584169318952012326 0.0775034834181820143110020897752371 1.0806716791376540785269640665418275 GT 1 -6228083505989054176351252996248.8853546921488275517981743792758777 0.5151002932019868424973771919956318 0.0705843207290448554904181943015553 1.0731991921583523790204356966415967 GT 1 -8581718821784.8358231067366945551309129253402775 0.6796354036594223379723447837639694 0.0798398284452048238668241266072880 1.0832075245765313021292282779764593 GT 1 -6643005368956085061338.9939286211291943597509481552713876 1.1981072682849050988081489490292967 0.0935675620464572050503565552072279 1.0982387822282730996168315297629506 GT 1 -105.8708525663033635914385820063899602 1.2397703995306124828245629233780512 0.0641446549308875436138293500922185 1.0662943603143208066594427132864834 GT 1 -1844933.6945479589290262137004646599385925 0.0313583835666607934148189749899758 0.0066282920666196770072734966767375 1.0066503567493004969754848944256842 GT 1 -9594087916556392560588.7861626440879682927250688820349637 0.8747492499014159309947781193401142 0.0136941677129046634730678718015828 1.0137887977403770119166200617363224 GT 1 -191520678815770288856931422449851223.0903982140295751586043377745217211 4.7284032186541509221413559788096737 0.0987791131557656257225773158106674 1.1040048939901883526301568384975100 LT 1 -442697906171979391863980.5582265349610944432858154793287393 0.4784802691907992590473082097711423 0.0902462257806131030980455703939471 1.0945812938649071541233148530241849 GT 1 -6310.5330613694630358312398801814918320 1.6724016066750315142075857891080440 0.0286975103374573966691922966384572 1.0291173353499750823705633159553675 GT 1 -129526107407901649386.5410178680443308565821938810841477 4.4801838029633159182374280682567677 0.0424187520792626635030757354265597 1.0433447073019389845014175061326055 LT 1 -947732.4706419910578867378032909474219305 1.0807166484013604732192874266936991 0.0160916913224307966699141204481901 1.0162225685098607871595123895145785 GT 1 -10892803569476339833368385017996811070392.3315956141404224929189907661346175 0.6401815929227113397480238240723984 0.0461090970549847188490967095006337 1.0472059715731519604321187733128552 GT 1 -105240272494376721930.2309585040298446052775750004389972 0.7227004659978081887126875829302346 0.0789836921968625615129906131761957 1.0822775362569485002097124424485257 GT 1 -45474.0174353298101409767383242456862621 1.1844214072266099394508712690504560 0.0263737135255798453298366006085152 1.0267277384185475189834517550557184 GT 1 -3291811662520303743497698470480426447778651.8148944644116291012835154740085404 0.4415264406450868339806328286271023 0.0494563511904661141564754070666848 1.0507211961621798351066062842790278 GT 1 -2235437574.8501852466996311655206007679786644 0.8236836621309557103999750595378733 0.0036112833928716748820984369595097 1.0036178198180776029854533618142762 GT 1 -60303708347933.9551548185136182432550548771539195 1.0949967531727807548543563607234601 0.0637345286417114495538963987262338 1.0658562194719796043669773950260834 GT 1 -5710304.4184268905222184322458188951065484 0.0980946036477662705686837093323282 0.0386556344565671764802348477676951 1.0394225933645497877344508053224095 GT 1 -251872512076338974548041228103.9257090116115231938291560892761287 0.0088425201648425428502901129797958 0.0749374704268844227837247849272504 1.0778939442159543700992720097762055 GT 1 -90608986461981539203161911215810.8718036940540896724687406346279162 2.5232202014493175323662252575897618 0.0932134985875488444739804610787625 1.1026353860820661399150985809489630 LT 2 -6403301419850862498838453306116785.0985069093081247806380481659276378 2.6044940300190055857490139090198218 0.0394363511096528614990547861978843 1.0402350325553597049206407237935232 GT 1 -9135676956624012360182812936621.4930012932914156342809993893036872 1.3617547868981826923168755031617493 0.0826841137382430758661035619592114 1.0863033881146298810830727661182927 GT 1 -9784234751569640058707908135.2304921643821378026845605528885644 0.0031856283522602820861302306767931 0.0612026889626611059269645433699098 1.0631556792644420705352877300847396 GT 1 -55350666072636902042943152400370726951.9266320051764712849241165991840501 0.0350658042724997406104135933347078 0.0219699115363566296821004411942893 1.0222148441203130157053206550664418 GT 1 -19970160846132394036013428.6919948051202316009902375921382053 1.2190815133598075045880211274252410 0.0583547308395813140518844147677174 1.0601266473433616342818626747321688 GT 1 -133849530322873647473035547016017.1483319800087915206728147281553141 0.1642373216065608028596034046849149 0.0156073246174289635908843433925258 1.0157304011851460568160198121838689 GT 1 -8.1786772624205651185834807357432199 0.4250914071294359572882892055253304 0.0066503685041863054050316151604699 1.0066725807392777524982878788014830 GT 1 -3753590468315608642698730377518.9786657418201037519114159346308940 6.3064750086252147775426267644484006 0.0951833795561530882539314729042761 1.1000229851581256359990839556373406 LT 1 -143521611919679835033877613442795226683.0547435246708875144676296160711266 0.5298615345340005167929224050090639 0.0103613198192450963608639488419032 1.0104153719854730616716426185857312 GT 1 -173218485200567137724018251679258468.9273005832446932555886733189334797 3.3495458166682080407341956636591806 0.0977111445858057703184726843864205 1.1028205713666221371615217280212216 LT 1 -210001701910496783301906063751208784490.0498697061119326902870639118489298 0.9931601774012687373999097083183070 0.0824905387443295141469847951624324 1.0860923871112987895859973288180622 GT 1 -4770013367728976568380.0780337996529121397500699162271885 1.2061094465292160658954210665480822 0.0532859605414718937645097048337053 1.0547581960654944215493815301048312 GT 1 -25.9246237941593997992094335928942632 0.6349076038652985588489979209636809 0.0734753484696442514042486593902968 1.0763146264543394134761501234991124 GT 1 -890158859.5157879535174585986139669424189564 0.8069208778441042393812595229268949 0.0189298689393000537204669197117161 1.0191113326135047100851143489992714 GT 1 -847.0661262501178977039987511938462151 1.2020334968251860023585061377240155 0.0112908607404485584059169779587905 1.0113550864082584866255620706154596 GT 1 -337469.2713813884593714471317351845386296 0.9823120481910165618233129800935468 0.0909233093305673735678197854486146 1.0953258201902591693952247061268966 GT 1 -794788237861654981.0929446736532996560097757269966060 0.5078312930507349064305538484639223 0.0560141206579527609392432626982136 1.0576440712726157104031561671441523 GT 1 -1123149440813027643688992544308441283288664.7285132149872541775091744313884300 2.7135319778912613160326778487893527 0.0641472679419384006275042691507804 1.0684948086382450022775754358448664 GT 2 -444925016228981248330149966473780230706076.0692891847408809581605828094147357 0.2901705603353316638854141075542930 0.0031992998551219587909139434014376 1.0032044285566608820097187157940663 GT 1 -1863534795878495486301939591318.9192194416170970053066492732532202 0.2361343759451871221998615869110937 0.0122106034912918689537620933922491 1.0122857653848286333470801158244479 GT 1 -34481174143255.0767054407069394786307866430608902 1.3990016367549170117022412192785968 0.0095326788347073436476237377607734 1.0095784056489766874467124754455914 GT 1 -193917348925812624787277.1713458326808242242495110562163549 0.1569053891552390286679774750628806 0.0040593893493882793609220470161876 1.0040676510361819895611065418990671 GT 1 -165588018890272645598087533.4457903034160392979480151868827305 0.3341589967186732740791259174532969 0.0034801961571847282440485542880681 1.0034862661270467628034770093165622 GT 1 -4805252.9479087756815263923222566695228547 1.5287503366096420812840144394756998 0.0230366026502612554777749612794602 1.0233060919710075994912375727750048 GT 1 -78160928545895603032.9410721106807775525009655502148239 0.2703619517426590507173698557129899 0.0095169906076908551598552826909146 1.0095625665572288388077113739199051 GT 1 -317025158824214163.6513767093597060120298195432942663 2.5158366311443728966461209784110140 0.0136793102325412341276157518266518 1.0137737340877315676610594050147825 GT 1 -3404952563460715932142283388.9677046631410522752725716733954036 1.6085084062912858012543045764758209 0.0739513111595651431512033930458638 1.0768284659769334708820077635602879 GT 1 -24.7786731092030678259419235195113442 0.0777552029868402409996727348048886 0.0971088736560893462046556100239094 1.1021533016670362130743587308981696 GT 1 -24914004570683702.8661966107097158375749013542877817 0.2135204708423887325301821938408767 0.0705646118909147754620619573850323 1.0731779867605917104274187275509738 GT 1 -593627893859608361605081484904353880.7530319748747243634633916271753818 0.6957855080128822739717985904036208 0.0576903808856871747740961356242576 1.0594213756985184988279790725812538 GT 1 -98285376184164108096994384516.0226953011110891218553942312777958 0.0550491146270894440531923913945446 0.0909051672383107688135705283465187 1.0953058637757807703354963895134170 GT 1 -3472932496700103117547.6048057447061205389250954325572384 0.7983110388827070649638283470250340 0.0377629592849572445311782479526993 1.0384944545992364448880789814502965 GT 1 -12804286441512790925981172170393709388682465.5611425522535376700758246872459328 1.6711643310480304773303683942398326 0.0396496796443830769352981702227417 1.0404571440491825917531016305895991 GT 1 -16330781096262586002960.9450236486596958950660215951678864 0.7203220480493394059453274023273999 0.0749351867592189009892438548221162 1.0778914755559733228734097326414213 GT 1 -3122656.9097520646808966775026770505961492 1.7064283616411259347401480020143508 0.0572275598481567929558525142660914 1.0589303402610373221152643027613722 GT 1 -779638363759727.8787004627916511872669908453063042 2.0287827643952901031388263846244603 0.0912611404910790273539682207816263 1.0956975093469152103360246122598242 GT 1 -2835383.0040345294335965209709735361616097 1.1038779030181861636698223567643605 0.0482621049938889375360979599383250 1.0494656024701153458271202382780190 GT 1 -865331942307495.9069407040571744042488749503640030 0.4242632961436486834244120907944195 0.0833792143750066510772795081638060 1.0870614302877369932829690782506801 GT 1 -132333531893692140.6130104000768839319576398858504083 0.3214237940281029991141604942983408 0.0416426967339911552497453168906347 1.0425346026279319746029806849341441 GT 1 -621.3361848821995670035812010396225421 3.7479830330316268886287245707400593 0.0817165900005174159310447445539651 1.0852492105179220328308405794190977 LT 1 -6795208853049516502.2220659889350547262689761995963015 2.2764718386480414230125729373230873 0.0173946541670235466183991139592641 1.0175477187647533317522436961769312 GT 1 -1062542975606355686.3054183002696707812982277348525618 1.1452709690866780128814200937762366 0.0264828058189111437200992685612038 1.0268397920956691653421012634673064 GT 1 -23021136926902133803786542790602445.0921017100291420198858643343226178 0.0277775351134889207570934103695352 0.0474964712938707946391750722416854 1.0486614673097924545511616291727643 GT 1 -91464043011741520155357991640660.5298756836208049866389479431567360 1.5264028869238160766540663116877045 0.0694904218221586820904343412716899 1.0720229093710354970609218521054789 GT 1 -68079402146971678664776025393818.3519868195147107576511838682022107 1.3680622303186146062277144966506867 0.0564041065653457580860148902925613 1.0580572834773175006095065093028151 GT 1 -458145214357075092216.6399700891270611424423073966439472 0.6195495036783967451087175258771012 0.0939737245303381878431352213932886 1.0986869717375533545356198894198998 GT 1 -127513059279611237975491469808304152102719.6848941212410817552715733495664470 0.2500194627394453325284716239983415 0.0456940679580019271393806063340212 1.0467709754596299616491076770288131 GT 1 -16538811452269608543269797180.6809915748700941268389879425941490 0.6531951714744127371544517200638588 0.0729490250233236165276306659908801 1.0757467257407786735504821247928884 GT 1 -249182710333803154649.6245679402777539187307416448869623 0.1157429477883956545115426641839456 0.0898266283545146431225878064277359 1.0941201793258041552071794526316038 GT 1 -67406536777147723948590375316278392021.8055313547023019446366982791615046 0.0968340334105342948985391522041246 0.0860113879754317292303622999842673 1.0899371670973267713637449056481659 GT 1 -1975298642568101093938932398225002836.3084099736649136115507857675264762 0.0371075919233892651183470692847032 0.0717369449716004841807544731057939 1.0744401218941406195654349517925607 GT 1 -3842798237298420720367.8085253751273611829964123685688703 0.4358999287150300297584416222878648 0.0393831131227459629809616885078325 1.0401796103959849175004966361504817 GT 1 -100616581828687252681046439520865941135172.4139638871224684576663376686439669 1.4917154796545668387967036225228461 0.0403984891514009242547658881324387 1.0412371735611893589634134982147166 GT 1 -194.6408355450537696547263330799213640 0.3144866666848168630691495539735474 0.0333446412761499999287156575110374 1.0339132496159812953378447316043908 GT 1 -46469759018.0103223316827488718037683037908451 0.2287277836572143967245911439508287 0.0129956088507375543009391358932615 1.0130807905724706726880638403300475 GT 1 -17403568756428648056351882655019.6796126727777805893847387773675526 0.4943240365234680506184196873281213 0.0467085660996627443881629376428032 1.0478346152563896714309309321224751 GT 1 -24153007747.5256640169841232027092814426339496 0.3871387314236971056065880791551119 0.0632829671755571893825234164558940 1.0653740350694078693987297573382759 GT 1 -3756764862480302306015709616604921.8641397925538937823626017860111112 0.8915506188448798551750080576166665 0.0504102980062760951895153094699325 1.0517252803182238823113601008090550 GT 1 -26602601308.0071242508009331854992666769228942 1.5611716680590768087514917985081110 0.0646779766943437959515843323612050 1.0668643990363700406604713948543557 GT 1 -30.8132075258624351158123129315540431 0.5445496913807076887096227833155571 0.0161584740791975768590633078882961 1.0162904457934648299836099421745703 GT 1 -462500307878.8182011539933093170807527309282190 0.1544788848575785276155286712720592 0.0524848985747409633248034831979234 1.0539124039728741607659805268366342 GT 1 -672408786288189817743848843731.4435783513075741025504596380716869 0.3642209965793377414683461344233540 0.0668727928903161698203935036704656 1.0692137454031378302087423377347404 GT 1 -31502708780230.7835016952296708235934926632726686 0.2795808552058274752795825185185450 0.0637308159169089001366330285256262 1.0658522540182116161348701154137799 GT 1 -435827370604259394416368628.6048632139251618276081685264757666 0.6740302340988082456106341590194497 0.0998040335236601102806334782240466 1.1051427988305882673330753237139581 GT 1 -9044662125595321750.8824501316825624484905698368708838 0.8258057148620614148545026764635700 0.0915244041506150668501472691714453 1.0959872535326953270788547772055475 GT 1 -21830752490165193844.1677360129156278895073976593804291 2.7794181853707229994931993700077122 0.0733269401192676294061137314306254 1.0761544618374935669524599497405847 LT 1 -119880673217.5017782223049682950542256013215247 0.4012778823801887675594693108224309 0.0858746006246697694978512730463445 1.0897875184975520895650506899286750 GT 1 -1446565230933844013830756352720.4184364899896321042225688998238581 1.3622537387527499091062923625452350 0.0093675552981017085374839405386238 1.0094117067882398751053671933362072 GT 1 -7782627362313518560852924570012318978322241.9061713622737472776076668091163896 0.3893471742136753839117327499845636 0.0071491191471918659322065501332092 1.0071747965532277150008614365242668 GT 1 -11395613282683287605626348927234754328294238.6745456676705521539796509353963134 0.7603976881298909098544303515692404 0.0596720829577108945448022784860816 1.0615266166340460493347687232095641 GT 1 -86186876430113152485863793.1768902131143358305452688868724321 0.7786786395864021048418912555992610 0.0122523679586997582052255159002476 1.0123280470194530830326051309917584 GT 1 -16411334615370992643817666205317541.4741885963911741157055899391409629 1.7224156024222256565210071837081171 0.0812147084267431744858327031564602 1.0847028165960933989043640762055541 GT 1 -2097.7480204724498494381991605076051036 0.5372562615624385567925552156201484 0.0953946670189084412636103958391140 1.1002565265532830783518120496694482 GT 1 -6958722653354540582577079107.4430649744141458551021994045213671 1.8057264112327920433343944447930126 0.0294562971799772413385548252661858 1.0298988461452965532374286607096969 GT 1 -115183551587081901.6737899823733282131912800839251194 0.1988382884704425324545747810045804 0.0817767288553512312420709263940067 1.0853147031790408535728546786443278 GT 1 -28225591078623034891051.6897989349891737932179923736656374 1.6029658185517029567250368023937470 0.0940929757315971907636351910807117 1.0988186004254839996569155241540782 GT 1 -23606.7056262796204400473615215943767387 0.3369823166030225617989886796027655 0.0430248024741115850249792574704338 1.0439778047658795182089300054874317 GT 1 -21250914086708457060457874310.2292813196974580809925397861456390 0.1340054382789662261662607598058982 0.0682119217223351056920891079054365 1.0706498739744146529814182585000379 GT 1 -5694546790086277951123395.1054294069569437504873878697994969 1.6982650909294015845159317531499731 0.0275059925348696688463293157627578 1.0278913654981040368643765471956798 GT 1 -52748.0383615473854465850921390837953995 1.7348533640097820986837723558403260 0.0769598237409565103039557708508595 1.0800825175186406804386402469901991 GT 1 -50951108225942182779427013971412.1777989953166236919178488121026141 1.2023191497759434017586124795285982 0.0551149166927141500042822964695820 1.0566919638487127120779356777641016 GT 1 -294739865404580847808.7813320448486133966086547068063799 0.4765296058837756560967070073189688 0.0050264239466550159904158378119813 1.0050390989064870363214502056367098 GT 1 -2163730392353292981492924.9101186968728233569810867172833389 0.0401845948373383476795595884457849 0.0773089575721665641128371377993849 1.0804608324453638760203759086665750 GT 1 -38102231548344951.5885085603038753089285523300251652 0.2066602070245499255317237475077283 0.0473751125702960192529752384521901 1.0485340651643926417181771996415853 GT 1 -21816636.3742680973253788502493407415272205 0.4859786432697835229375799984377486 0.0399666216940394169342085802842175 1.0407872260559762480316521536473333 GT 1 -409527133022020487832968251733709353464.2750246672828435609169945335879065 0.1173188912953155341682636240622248 0.0771089487111374097398964734571993 1.0802440890531375610762064900982542 GT 1 -40418500777073530404881470630.3720641323445594140562833016006864 1.1133843887760457753136773384481026 0.0750925350887592524451897755256372 1.0780615844076334816317370631743201 GT 1 -1071130369135868203373008874293673737143247.3162906626885907911516626083294373 0.0845584763034941592542153967622010 0.0856785291551644371804304960848963 1.0895730507178749343554626454403846 GT 1 -7690.9704249199023605389719720132704082 1.0779232231343908743467056108250175 0.0365619391632760670459386174218769 1.0372470787813320957493031970934581 GT 1 -5559814395533073439859212.9972066858637264826123210867522337 0.1720769117879013751607269734138216 0.0633067352293291345037353670262673 1.0653994091733121036014050510543344 GT 1 -353691340277532308464209651231996.0700318405781279958173005086839665 5.9724822476801087931385812259972212 0.0250557486866758192100324446342754 1.0253749877592023742996448911889823 LT 1 -9487268154736702641049437782173088309.5905028110513020360586510972450893 0.5956603262102789566685203056813862 0.0445723178822458606167181091972039 1.0455962040711511756289618391443634 GT 1 -46504.2091727839442724176010268918833569 0.0146138481629546138901829613478606 0.0531099031592325473850546948578262 1.0545722465532687919715851672304294 GT 1 -61256731359575656001787271237020855533.1633051494977314676278181933438861 1.0735716079791686639698194081068076 0.0532050353665829063090332981463232 1.0546727196566013278605933575042972 GT 1 -1808337694912543106622322032208071.4730551535137694164926470503914066 0.2088742324299249308895257568440525 0.0818926497139817166558165275213597 1.0854409558891265261758431358525908 GT 1 -1323087316736650334.3744240964464628956937838023057709 0.6010622985427946109908685956819690 0.0471652341450513803037208509161903 1.0483137735137858144124370092613764 GT 1 -5993884896116824979760.1988057812364911008222661705905247 2.3638899877938107842326911715853763 0.0331592845589432572430428450749954 1.0337215174265537804543803074525767 GT 1 -20729131354356449436203.0903989748637333788472569684930668 1.3160327666776260648691597590396003 0.0526358907335062591629961518941667 1.0540717726104452632071108776610256 GT 1 -5028861177366593961323700.1509034077181750968631452952743190 1.1033336256112770514365088532947261 0.0604958063886148764507832266060112 1.0624029964755827541784752164390188 GT 1 -8708417973155125540068800926337599.3321857273791655553368083713265145 1.0698609333587538252102200911777999 0.0644432228100884861405214492744660 1.0666134432978955121661800952691160 GT 1 -12337696649046222690461794576904172275.5008789455634703678180520191841777 1.0479407590211662985327585068904380 0.0942182101512637909884875787821880 1.0989568520047731294170101817934579 GT 1 -535754399033640516.7840725867588424195781688615457435 0.9896264548250501751518437730268207 0.0485635594906476840145197234608712 1.0497823937315929034809346928245786 GT 1 -13140198633158376207303507392926262375000.0177102310142886285923768050711121 0.7171932650963630702823831531141662 0.0124416643154763263563082570790547 1.0125197098407566438172205742270063 GT 1 -64163449025172226416720.7800972576054091955146728173205608 1.7447111270260245495850859874938805 0.0814717868128898270114641813668196 1.0849826582095777142352897716800175 GT 1 -36419218551614.5799024040096034949675086191006348 1.5759338623748138265965360076173938 0.0370708479051386317598932830481280 1.0377754398853681657244567295669745 GT 1 -1890179881.7758597104078848483554635817148952 0.6847380039071855814981584912706930 0.0399319442469587979290176639031731 1.0407511056235144245755760282678335 GT 1 -38948727993418160095923872350156854.7674196082732158241458609609465104 0.2453539676778716572572888431285389 0.0734687947928783361827927764564864 1.0763075530822744385278950935989190 GT 1 -621198859645.2715414871696585195214807977144682 0.9211514906780011563878089487747203 0.0628938714731200977922934719260417 1.0649587389880542830502165266463907 GT 1 -115145253638453438176.0416076628504253496970481205471609 0.3694972683519183112582449444695090 0.0341710908590892047010210797045491 1.0347685731464923601973348886612856 GT 1 -1210526802146023334341315061997093117.4076730554018202391516118822731305 0.0326564235935624221249651739241054 0.0052074536002676698211795987764968 1.0052210596425447580768464923311670 GT 1 -2430247338775147562635882264800.6375077782462667750127036306754229 0.1130728843192848418846979450690937 0.0599958483966834767697376312047238 1.0618709871285677205958595850261411 GT 1 -167753.7461271345221796891387014234889143 0.0881881127616850223724751514645474 0.0290750815749846597679824368624220 1.0295061376505825179317702711271664 GT 1 -41197.5037183131013248459493662557519747 0.2987697027142821721546759841541951 0.0181448673611354089193866980304189 1.0183115042812390985808995170657609 GT 1 -30125404372.7436662657753095750345983278225206 0.6011563779191628091357188986563147 0.0865581568146945892426022987536433 1.0905355689177844079829320111845966 GT 1 -57170075607.6050477279100900033034687236587601 2.9875123684189668235267403816182133 0.0980518050005470434686989005124786 1.1031981940506384327509856754190071 LT 1 -95811767994848274626743635566.8465813994290263573859570989285852 0.2376324644738553685818190790202741 0.0457563948663107069530673993812672 1.0468362888372676926386325126866642 GT 1 -12879.5251201121208749128022938836163462 0.3404483640124474887229065249578524 0.0426233214835086933949898378299051 1.0435583615051984936690417221134269 GT 1 -21208224937089452868897731.1167589699841354497996027009892278 0.0848542720793778335616575601428771 0.0113720039762522498146353233623084 1.0114371596515120851442615622776210 GT 1 -425373639083675470.7462103595390660819978224009629043 1.2546319463693525403058559428518240 0.0936374626950151316146830603150171 1.0983159014276824002721816627971648 GT 1 -4079066056232484225.1226162695559287840575262650898051 0.7726964527494369558350957253563226 0.0485854088501552551046320968583293 1.0498053585976228834769740879670423 GT 1 -400797308752157774876.5628243107556789482445707350918724 1.9063596870409551527708047571464922 0.0452972473659883165081915137370145 1.0463552407372954287254083438826203 GT 1 -358720.8174276623369037003328709957755763 0.5942743548005664259806543660120170 0.0637235765895584656759219768339456 1.0658445219476852692558598802357796 GT 1 -21884330551003139034002088074.0235595918683048234977060915985273 0.4703081831504803466575920421132218 0.0698296200274891021222437764872637 1.0723875053431714913772940222966247 GT 1 -125936626933880638.0884044341292730072742230106734552 0.4438518582525129753999997583850828 0.0462101129909422640726235756451044 1.0473118760164780278842404637408680 GT 1 -5349954462002022768041134881947954153227423.9742461943243288186662319468428650 0.1045768545967625611948575247846593 0.0524900878841234307310047560530020 1.0539178807442575457084806523801562 GT 1 -149156.6061046780689609507595480720318497 1.0489250257396216955799072799914946 0.0858495955174531919693200237563901 1.0897601647392565709813861636630202 GT 1 -11012763757272.2686470386716311446059019429144186 0.5286814793966641581776535647074282 0.0568197170356437543191776532661884 1.0584978343833748254838250201541108 GT 1 -30994801788074000255713081075203151898.9256814021019372291671249483952936 0.8854409347018889632696944340878142 0.0350627024631566510546223392946168 1.0356921563999830076990757947559400 GT 1 -1105298374979984843660714930720982234798748.8551852050366697481724304465152628 1.6660604784675051205479301757047368 0.0619028958026649618692416674870130 1.0639018127355685785507948000291577 GT 1 -2771372713008789633778020266253244566759055.6678176499416207891964683367795173 0.9625517835568985983734031137501188 0.0931147761613420865606283412542017 1.0977393817050597110198023953224350 GT 1 -44552707245780354718107809478.6829536523343113946038699821135896 2.4573147393543231635042393772316349 0.0321975412974196189171353787415220 1.0327272841192433096578377862888695 GT 1 -61.9147340927506271326724645559084632 0.4360932790738398393727977744522967 0.0203592576201624694443220466765182 1.0205693639361718787270011189610425 GT 1 -1145891719333230.6656874695001203816220294401477915 0.6350165935519192408194321224877890 0.0042216389811661461970089610023828 1.0042305752583685870470172758533306 GT 1 -9870536.6215023966347203555549608371347354 1.6783797884649244376572272720631340 0.0166789847260081600607722238269055 1.0168196452348510481286436548926074 GT 1 -2166370279573833903959866648.8393703431442410855995958811917970 0.0697533832703026379566910163444450 0.0858875837625663062245695755323344 1.0898017213958685796043104770956413 GT 1 -38508791.6638246638189528463297261953864325 0.6795932404130397617469476964652901 0.0930799022186594598673975209072615 1.0977009278067595600271965540768911 GT 1 -4412130186618105192308.3010839126269284253205215089031818 2.1213788135576589414133352486739788 0.0367525673572634492945045256480371 1.0374449607867290027429287345158250 GT 1 -21427219.9130274275434026700645263257767688 0.2390843144762782521281762096326888 0.0113971944168910682791068877661642 1.0114626401777305818523975788413447 GT 1 -1407605776126159819714583.8191770367375832968913864545925187 1.4644927548997480312704571096934854 0.0399096625562026507411936807179265 1.0407278974435683411708394098686355 GT 1 -364518496560744108466197051442103626.9534185294787072362875157806671238 1.5266000730461484550081806596498730 0.0377819973998459210691549422461106 1.0385142400600144750691512226757406 GT 1 -5172644243704503578787.1391377732410617854673557552891232 0.0575983451980150237816979803355012 0.0506144289417179580255838694493023 1.0519402709388232198451038167300107 GT 1 -8797109094626449303306421694.0058513951038159194315170458027566 0.0406893227542297674666132287072557 0.0826219917784976809731194330760839 1.0862356689600004033871629074869433 GT 1 -86980.7537774829655874530684310517552286 0.8258113085015973680603421322018472 0.0023436973321158350003103935740582 1.0023464480895104407918151619295196 GT 1 -111008896385959615251063991056361110077851.5666036264470344972994563256997270 1.0884010205812337144711462954693879 0.0899294874182758799589330949945978 1.0942331961196107600186896498375989 GT 1 -2744648681165395110150288600805778.4380137141887107075735959606647196 0.6173962688667658427655225047945117 0.0003046412886496083122370339094756 1.0003046877012333489105755568851444 GT 1 -305155180204409837734.2929687657852710761579384057077939 0.2696803973418060621085079263926884 0.0512326617809953564514547149425944 1.0525916756366396009146149334173809 GT 1 -2986704854609455772760673.2935803547502981264811201661416492 0.5420811093765675064309161446876332 0.0435614964445812867410937679297955 1.0445387853674516410145685676615756 GT 1 -26849063672289254.7185406826242506327078419359248038 1.5849711800909289890003635449100954 0.0435157982859257616229563359968220 1.0444910070034452601517916553718976 GT 1 -34808635434941725882792989896301139696991.4706280233735355128566930782904545 0.0544744674374417680227664581187548 0.0410514974947419566678931975234892 1.0419179047008652247841312055933360 GT 1 -44829.3974926433053909923926096917597283 0.0365305584331612701613349196048964 0.0159122506721340392009691483348127 1.0160402097596345379603508504419501 GT 1 -307787729617440199776703351420107.6925980751348626530714138274900052 3.6947748136687748141480648388228839 0.0440486702353727039711261494559268 1.0450482775147552279834608109386833 LT 1 -3330096469627623046977068025124784.6476964472516246382074481300241487 1.8683703925739657430943220692447806 0.0468987244736086961013367569056786 1.0480341107471522243760604469500204 GT 1 -19457454358719051564556320996510.4685586326323476663814006671054814 1.3810301059430986544404907314993566 0.0020329057796317756676135791237264 1.0020349749373302187745111611892220 GT 1 -343784630142974508.4558031733942253081356011522930871 0.1233710616085359451295995224623191 0.0694214754973378189086620092823774 1.0719488168820736883254106898612629 GT 1 -68870460.8945599583878340096135274254029807 2.0697061234593889240467765389208576 0.0747765980725332643414783902289632 1.0777200550326473824626763487889159 GT 1 -94725151823430569473112131783.4649907751247715182409239127647936 0.8374079777683671186153116397901499 0.0407266704598001051394068741810257 1.0415792295459689769396636102003340 GT 1 -2831093.0285850013460418930694105342708274 0.0963826379051154259698898823003682 0.0872365818621682804462417558867301 1.0912785577734747469977876444825680 GT 1 -14618369230345272992.8701283760136266705085583752528546 1.2497296981549089142339248188715413 0.0520410249125968730915473025186081 1.0534440528877730852674423863325232 GT 1 -3394609441198909419435095699301164297787.9343845520770891607159238168512803 0.8267006818542013217057404844316752 0.0200375938919629709923973322296401 1.0202410691675737387915477435682963 GT 1 -3347162705407640727666.3622473615506267348424231327667253 0.9792938008151034303677964033134963 0.0046360954340493437367887392520536 1.0046468754555291537737937478203389 GT 1 -30692214706705829683458090770.1804813328386869767085335809331926 2.3241758339039145008784753103391912 0.0767813008087118669900673445102185 1.0798891286768321513012397612733300 GT 1 -5516968281938878.6018091984256655901970493291855946 0.6270898538760817578210975090329598 0.0344040439748304969811745063817535 1.0350097972511130402227062665184431 GT 1 -14893.3896251371868074803554789570415615 0.5661666073308399119957130935806624 0.0056170877967528344989188981886837 1.0056329229605885305290046480548616 GT 1 -4914913600211830253500190171532.4573438062444116745316899249079764 1.4344637752063111554195337764786625 0.0838100306820542884785030508505606 1.0875315457252640459355047565430443 GT 1 -259792660266850167.3083468420291297667183846515884864 0.6936326978594606609420749447600154 0.0866084180297993384980413013554466 1.0905905944219440470844185453197765 GT 1 -139658744247426705213230.5562621621411512409354104441657506 0.1105735125487763962135930391748683 0.0127913706558867800544494691494189 1.0128738846373367285784604091874952 GT 1 -5367353631375023743227775360.3132746384429560934551371794504626 2.7632785933529750686743035156401057 0.0250426182160454392771042645425457 1.0253615199304589093354156723402369 GT 1 -660342033.1220948989724045740761029746860460 1.3649832237337674262851655967258943 0.0270506184981175070480864416851541 1.0274232212718044828420930683500674 GT 1 -15.3543669612880338958951834531788676 3.0621910445140170309346987676186278 0.0658139470729452096387740059023284 1.0680796604549741564405802266497574 LT 1 -730536648479521758357484441829.6482382690631897322703292367388788 0.6540912203720189699949943422071925 0.0347821670992254598108903381606978 1.0354014695412091266697565711869021 GT 1 -17048670355279.6200773940910773019531622621865579 0.0461868974819841131267298884884028 0.0281888850805068594887983577372008 1.0285938196199964789836898690378776 GT 1 -4380610079709642.4621516357537847770685922701818527 1.7293366027151054088716156127692472 0.0842769262073984237564220411801543 1.0880412812033856738781109557976438 GT 1 -9113.5105909839531518437335458654831692 0.1107272947046649489122910345950749 0.0722767637936639635725631697563763 1.0750218275240096945673489078991887 GT 1 -143647387805304547102625440461079626.0226762119233598915673647076906279 1.0737392204983661224727024995772478 0.0542548068807338636229162307949049 1.0557820980943747480165255547340281 GT 1 -28355737795788788.8010169338549154477892073698098369 0.2663768809493973360258055640932076 0.0949276526329856342835619542486171 1.0997403966353848736637675465121824 GT 1 -38853.8780703440737096259697961877623128 2.7704250455218250019148586066658302 0.0617492924108427227016868186002221 1.0657693586638764695992131594312807 GT 2 -566724453419211486777723430578659660769316.1779883189133281087720844658149334 2.2129723385317051273054414110779767 0.0797730510294291849520502027507922 1.0831349556967992142319915242532758 GT 1 -13664156451920130010328695527118226891.2474205723782979557846397646841264 0.5919728700074903342681026174411218 0.0901378271054011758319639145901085 1.0944621492998003422332218936969565 GT 1 -37877568395759009.8409832339774186715563185637992797 2.6313912202640377724982259378381033 0.0575558791313879613786440510054548 1.0592786496206503558247215756686132 GT 1 -4271947665113783760394809409449369327217738.1876648580017640359362464964741201 0.0640447135822559036982208153650051 0.0565720658972808892928484715269312 1.0582352985399019166257612170384739 GT 1 -4267.4960353454511305269910061725058179 0.0945846140535488248600426837079169 0.0636833031953777633275512484781246 1.0658015084454437504128318380521507 GT 1 -15.4880398788174496526760058510216014 4.7104259154121365451503377539560781 0.0769364876404231900086507460895656 1.0800572360561979886216678337104686 LT 1 -8923911398.8193483738064459796491823981535359 2.3221015392368411926888829937814745 0.0414781058209394750296710504407186 1.0423628746299699268326619643287265 GT 1 -16088283064.9765408161118466886580824398239333 0.0893706952731869334612953500108236 0.0440136200289389822951093738187381 1.0450116129244192869737366993094464 GT 1 -29084930679863730208042889076391147.4455566646947389258672190330778662 1.8395567173036504298867151371099583 0.0945028324595359886670074917816821 1.0992711297248932218740399210623468 GT 1 -90.2870309915726680784513152943137648 0.4431271344687143202744781552147052 0.0050413704944366118504483920679018 1.0050541210743178031279631863868893 GT 1 -78558185340893001517.6851837523646310262461429897744481 0.2860100311184122487107631386305035 0.0791023753737360117883584144234399 1.0824064056627856810433808521404635 GT 1 -9310159572284608471155377.1022448348032892541505562189897754 0.2775474711235746138529070540674060 0.0964398278352498638333458693911385 1.1014125722026074356183619473706875 GT 1 -2335917582295618776072351266.6896720002570608009987338254243361 0.1406523775871649113095719130101215 0.0469352032516395123967529681338108 1.0480723852485882268128933916234023 GT 1 -3455285941357062668969120841274354712391267.2151401267006664685290679232781514 0.9358924574812589371967548578509561 0.0472852881834841546529212556436126 1.0484397781544402472572901993945949 GT 1 -1148037915089897.5019918633106455480984824426818131 0.6813827234231053124855881426597779 0.0791918642277256617884968332060427 1.0825035860658493201556957850074930 GT 1 -9324800695524532324735710.7793672635857676928512603834585246 0.1731071428660872980773232940865173 0.0256560349444694328964410057688576 1.0259908908070212417424326042105583 GT 1 -3279346677108185906366191633.4954691833613046409361830701668853 0.5776821208965137491656596405535746 0.0526057036867807336930345765435707 1.0540399088681980360437093831287506 GT 1 -735183852859706828899605526523561863.4129097154960068380948403054054719 1.7779450187362569357392884531929643 0.0684405926033455453983813991790159 1.0708953149175736136779696818432160 GT 1 -21509720720373605.2779425995042233236100653015803973 1.1939701080491293561103043732293472 0.0604420810759683171155755906580970 1.0623458133603437293670058266894105 GT 1 -19397733131765922481453885222940898018.8903448343270644801848569905375782 0.8180376068818184300506442117954151 0.0332953121107035571646527851060617 1.0338622201499037668571488212112934 GT 1 -33758598348115711986.9200075065482890806843213940133082 2.4466616747915574288789446568654697 0.0778509847403645047905059988203242 1.0810484467282776842182852987678928 GT 1 -10423502998537124918221264771224605280310.9240840074313786172625707161902431 1.5976105370988306881303264075706881 0.0086548784791457562374533600956422 1.0086925494558692727184639317115886 GT 1 -448038904816967563845266174196568540957508.1229022141930188048222360278107592 1.8552748087059108362227213148847839 0.0784573823622277357921338432743303 1.0817062548268874611027859839919052 GT 1 -3593388727321888003058.7463589859301001179966433512538433 0.6055816669585600906076186828217334 0.0151562054434122134217188939845474 1.0152722345923628761233361984745514 GT 1 -98234022592.0882957417649602234999728567718367 1.0029445954682254598527057934347167 0.0811530195743645264742046961891259 1.0846356770999691621815882842995948 GT 1 -65791386943700038349626759942.5338431896251342339882649861944765 0.0235571179776757366496266871939368 0.0389615678168486450465045473385566 1.0397408789455755848342839163158721 GT 1 -7717576127593409024913.5881108941640345061690473837982144 0.0702795405082655990506221711851042 0.0877566779706333123360328639296606 1.0918485240219252241072128166892664 GT 1 -152.2650336119392114947265827060648347 0.7522346484430599244281502911607184 0.0204417203274583136972277596745942 1.0206535439571052862120266499058394 GT 1 -9102505865125569149464999167186201045653460.5697789645613129043616719199813951 1.0907094581955862369523869695883535 0.0407585356292690727899557081245512 1.0416124481268973419106628183746566 GT 1 -21700056006768.2013683130417755509955804038814276 0.3648687825700110803009323773821484 0.0355618387872763034377805698517838 1.0362095635567823029055974180224740 GT 1 -1689260446546740757585000174985.0625662999241625984093158873229345 0.1381775856614984353376831531751442 0.0240310236893476259874838488980150 1.0243244796412027256553919575257709 GT 1 -503108875001641549347639249.5430521109005528655297069720967718 4.0346668741303995772430016403642069 0.0407988907084111332418726763875622 1.0416545187936997101564919043315075 LT 1 -14043123973912.7585439719192202634516742892794552 0.1174764562526243545105621688683038 0.0760911960347726474014635640700827 1.0791419092186527217291720191645274 GT 1 -38305611261057993667806020073680992.6178618992441084443265428557270645 1.0335304425890141954782700283090262 0.0180452299500450919867820721336823 1.0182100307006859186323488135095788 GT 1 -15.3840569853471803706132752412075558 1.2553520407407420741954345892280966 0.0564540978441858628286150428680785 1.0581102644233901370523964380653719 GT 1 -136359556.6824179364702753719315692648866104 2.8797818687842952713997084206875915 0.0405813568380111032358614826840100 1.0414277579975033994165829840674194 GT 1 -36718248506385246522715475.2977978232671158661713717354829670 0.5169690443666900096986117324109815 0.0614196937937034615256726933882832 1.0633868579362400453126781927048529 GT 1 -34.3477577317965997463175180075328883 0.1413824114361184193149035108939468 0.0768812282758257291753972895456765 1.0799973726666612526850232494305493 GT 1 -170060733949413714.6295729447589438475506502100867196 1.9689677874511422769198057218144241 0.0362936084355900413765493384358572 1.0369686038293525001007475394060975 GT 1 -36765729532661293355.0557529763925045171459343374938827 0.9741203238949112797422573893701109 0.0553896930441415866817683277923846 1.0569828101294502897497654061789675 GT 1 -3113627900407118731050918718.0446169078897535472777296978785024 0.7593084701125375648131117951352576 0.0000314766832020326169075662434207 1.0000314771786032210689158925946469 GT 1 -1638023697709581735763.7875338316540397742625441320024381 0.0866053659980690845637939977766929 0.0960968955706400129880721109376549 1.1010331097004746042944340441558293 GT 1 -29873469937077.4495538738893764451082201220510813 0.6359994057086499864097683779093658 0.0082184960226222933543258623217500 1.0082524540449600623127505808252507 GT 1 -4503886882997696580122248453.4833151530332593975448177512167043 0.0712391060770719160134263018542498 0.0972950203432816455983674835754837 1.1023594902905419367098266163153845 GT 1 -21359713672704850.3744264514785219411618636165965174 0.1168648845263914459297759416441450 0.0734970653188762479739656519490141 1.0763380657699703167441253998138598 GT 1 -17497504214719993639411436208260637678.2635621242938695445399190506200163 0.3394585009504307307088019092928621 0.0059688464016020600785554209034182 1.0059867311684145469310257242280594 GT 1 -1278131965377451205785034807023640959420969.4386051952379092990040327533771835 2.3768076509717782072950768149136457 0.0210438762675793189859392039951559 1.0212684548896445991538438279868547 GT 1 -227414733910299184348710886999706010.2655453076976272651204839014291808 0.6481557184471389105914659535748844 0.0693769564427548718443346641136707 1.0719009778351317242825324247213892 GT 1 -11.2037192721998844120174233437153327 0.6577053898213198579869458466156303 0.0866957462260331276755982602576590 1.0906862077086133538363537553856505 GT 1 -4869.7659807137609174185534060103129488 1.4487459164547412158283164257271257 0.0643181819925061826187943924537783 1.0664797983227551559697297577077588 GT 1 -11.6932875880586313583445988767389384 0.3151194133916237806171176981778943 0.0631379976338747469531091744506443 1.0652192836132388392751157828735829 GT 1 -8235486911983431560127357104405620.7973232983696055060062602247094520 0.1298136961870146913223923380338077 0.0598386922024256603746963878231273 1.0617038144004037921125915051127328 GT 1 -130.5535382639126690711963047727627133 0.4514905069942335935727656956869171 0.0395253617337020602071269443059201 1.0403277018422843746938807820230285 GT 1 -572937125408930.4616690786335499787742499357212915 1.2221746132533711952804248859178163 0.0693285626299836585825815858043221 1.0718489776672077220631060421637003 GT 1 -481095043222933031721768919305516.5746981493446056277173864110909540 0.8765517802538380909714728156657138 0.0410985134469117872074948618740892 1.0419669345545529302411113767563890 GT 1 -147253360186817600609457999795200606260547.1909576645438671502984666127912352 0.0743842939854461035641540962765646 0.0619069332100329784840641745304561 1.0639061165715340961122070460049232 GT 1 -86464003707794710914038962533203.1164943378500065582940399645885857 2.4214850710425902154769912200175425 0.0478529134352014266832872111526320 1.0490357534309675948337226709559203 GT 1 -22.1694086645387907812829633246120514 1.5330214833346874847262184641165832 0.0566603616224336123604771994677399 1.0583288932428266737248989226820535 GT 1 -4641098913129451486945236050509018.6666978379976955768965616708722954 4.9737500607246488895234864452659897 0.0508687239093702497355945308278702 1.0522081589689504705053763484425927 LT 1 -182068057885080047261857908549029099003.8662283192754008636109960027767048 0.5012047494725634091390120165152456 0.0798982660797876504979340826919486 1.0832710347045501563408759881764102 GT 1 -475519089884942346.8637171127814285829227849776612399 1.3246840006451701565409566727539002 0.0001016518857414895414201666276202 1.0001016570526445802031960352620246 GT 1 -16733708.5170688842083229171657986860299833 0.4866286542466191369016648649435490 0.0224094686397333467441092132083192 1.0226643762088204529885639559380347 GT 1 -4.6982745698067991785295323022058170 0.2934365993661217391693438017705305 0.0212135129218253472896667931499958 1.0214417531094757942245372236754716 GT 1 -29004717035140147.2214007169007583429760959122210487 1.3060414723119581724279650217875232 0.0646293414322534692651463232957249 1.0668124019739208746387107062942233 GT 1 -152.1234706890906954406877680832604524 0.9855383624935269353501378363861325 0.0499803346340909473320284549875326 1.0512725942166331259048851338057166 GT 1 -1261290094233190846819904140588282967009.4911102085767602895104738112656003 0.8301950012468013897215293684252892 0.0219341149074653116027566080848390 1.0221782440461047590595001564139996 GT 1 -10841483133308361199720401.0198713164341792120729013287346001 0.8558125895684262632240062161420066 0.0988905584536735717632400880678878 1.1041285619952088297087551311738458 GT 1 -2961600136954946054289626222069161.9659958942170872648717335639170312 1.0205273604673907187829734644814518 0.0219327494153973376596437692246203 1.0221768479324731564901139391525089 GT 1 -213817921810478004270480.7778591838338358940327608253439274 2.5667624169464791629021723331924958 0.0296530736972977332965579818461693 1.0301016154461959512646639807974084 GT 1 -18202914681438068985714849584139354910904726.6201287387794279177732663698126709 0.3019731251599448187618986341592631 0.0709222977940180915683848574415441 1.0735629029706345700743151913875031 GT 1 -503981604442974591028947189467305.3528573340636149155614274900981784 0.0746349811186673810551498915034625 0.0235419770949033157510762799383963 1.0238235168857516947434390596953839 GT 1 -34623243972985068613940180189108298224843.5235763960144871811845021033897549 0.0671499230027473415207162523409954 0.0205738650965512174065755026447066 1.0207884554636084529888322153660433 GT 1 -211154721211732741597.6677751771604440901865205076632677 4.5961098137581440534257227718861940 0.0153228979588199702725309511635838 1.0154415067398112523353490718222844 LT 1 -756761812335511204357059960216085958.7097977344051887138577133057979320 1.2557822353118867809267324248623764 0.0965959308509850522811626862170308 1.1015853515111896950814496797121354 GT 1 -174.5093434481768631940017412502502247 0.0694820831556060572507540968295751 0.0706689720197097938849816045407322 1.0732902764253944949732139571676263 GT 1 -289648833898210.9653228882457570607146609837428029 0.0668155088569261170078929925871055 0.0748214460579546824792489304961955 1.0777685288091562551057288854357151 GT 1 -86839928412368981438246.6306172312885822602077692435357193 0.5145460795836681497322001834568705 0.0949189152993908291805997588515294 1.0997307429414602731882999650061002 GT 1 -740678801.0243737780266296667004751692780698 1.4780693976861211464066436712113262 0.0331139782643001018491294276846216 1.0336746583809808854726937114240786 GT 1 -635308670289229951263257806531599665.6500114451599199143292802562418770 1.6276112305573999497427058910627309 0.0358001661849895797817842412327886 1.0364567093659396678521009368368701 GT 1 -25943246634447.7802823698095292382532867806139874 0.4709747452879953485795925629392783 0.0178190526259433570130643155328513 1.0179797234738532434811744858930622 GT 1 -17499314340.3242907477395295499059559171594513 0.0768774216631595245435648903967775 0.0163203686515205935443210330613507 1.0164550128397608739694788788185849 GT 1 -9815572491694736.6928694509425330838427920983407545 1.4816372806386832214174511475614337 0.0499762578969639270078778800880807 1.0512683030124311574701670447838576 GT 1 -143080132792240298528460576476341250871510.5264003841371991788966526322511166 0.5072062150131415826209047968646473 0.0947949259884768014639639947588599 1.0995937598346611607621495327298096 GT 1 -184893842201079849942910635213.9923005813883076045381152629948286 0.6717883403260745052692304402797092 0.0244890488994151151583368631483999 1.0247938928409434261703283260977951 GT 1 -9879436020155089202128907704155891248728.2947661370811131903269027619400577 2.0174454998010901231134091963491170 0.0893770457376335269617218740797027 1.0936263485555849189371659185350304 GT 1 -74371703.3598357111042438152880186382792878 0.6901574016392858338975568503804307 0.0669481716432244013430096890577995 1.0692945294560252147854148933870402 GT 1 -27772345.5431335418337471390523028573651084 0.3322325848927512329372129866037646 0.0066009439731185441951008316329116 1.0066228265540721891975265205786476 GT 1 -27204.4999850572677183726678706303555994 0.8110510328486894319251353180618729 0.0228639196784735362989057996126312 1.0231293527883708865171244948900674 GT 1 -2054429477783608337232.2330746575018715146330661193724571 0.5306542726974646528576370299028730 0.0449507854357979511725327671406330 1.0459924062541351878646695660799281 GT 1 -492619018.3569912731927341428568795388889979 0.6174111278890161731376229955312054 0.0247185903877073026370733156425179 1.0250292243851654448106998323110607 GT 1 -30552.1053479771932772135805653198239395 0.7422811134976495119299307516052126 0.0247005080577923313452103367592680 1.0250106839289340947548894410817882 GT 1 -4638939409361110478816.0309983388102678252803893699146579 0.8538478558738642725976548492622374 0.0449690168579610126244349817865200 1.0460114959470030671101214251831469 GT 1 -21912218657.5254795320229908852295412578757039 0.3296588912854595954456359722192727 0.0070726197277429026804480685083592 1.0070977492605018240765197935385299 GT 1 -9840509033249593575245459.4525323791434843723490292981194878 2.0031590928781554852055822748538014 0.0955884065966527258025239448640839 1.1004707197713335135522717065199517 GT 1 -10543680.1490365953644360240870394355285611 0.7465516712285122820630917004677627 0.0734420762533778709744405605073563 1.0762787163263031787664271600584783 GT 1 -237991992109228730692942948720732292259.6610672727080923999527279963213452 2.1731251531467985319290276631075077 0.0615661617515330722958672684806862 1.0635429227784359371252896340657522 GT 1 -5770863550997.8379384914847161004184045387220162 0.7679800367635416577150944055169407 0.0210561190063128469325689135192835 1.0212809608794337969493827935386491 GT 1 -38410271441528979527365192926242448.6804071038303355691018527897901220 0.8172675636818983684730040797441173 0.0391472175343617892997136774241021 1.0399340737702103459581552782918291 GT 1 -6158226192224523549075770103.2297971955829601992398327621092202 0.3048770823408273424851546168400482 0.0098511478842149465781378573278417 1.0098999914832725203323445721552692 GT 1 -24306939342464188329735.8786794627003037145926391085773302 0.2056158426727736352313882391921163 0.0903370603680720774961477884749543 1.0946811440936567471557104158953875 GT 1 -65168.3193891986174962609151256783708372 2.3635840440351269598265446409287161 0.0886944743330945403164780759764198 1.0971901385076968650974597016703074 GT 2 -16761301286002948153498238184522176446157.7112573189596968065658848361767940 0.1963202630857165296904052302944932 0.0071565379101837802577882856783723 1.0071822687636596134869180295836160 GT 1 -189485648173985.8389704025470551284183650748080559 1.0752203707846049801114071205795925 0.0297858290012205986295532081425523 1.0302384370122003124961818961249226 GT 1 -15281387010534396.2096469577241586175493942242176369 2.1057295407710451672238249865622165 0.0759682576956380549013001373641675 1.0790088547872597463897510790151237 GT 1 -5649762.1788450437294710772911113110278607 3.0411637093630408678671846332337969 0.0255231914131902191778830867662840 1.0258545585867558683546003278323244 GT 1 -2394138921.9761661806480599140086939137903471 0.2807533682268816056599081007145616 0.0372337075284985694247207287764153 1.0379445835827350046331563080042496 GT 1 -1936343443180818725.8615828149938164199896679955385848 0.3912189162008977831980277772974709 0.0323891385046150726746156602286131 1.0329252751176743292867082465077741 GT 1 -6027511110316838378755529414913638357512.5202443933787594035698837306414626 0.3388566027848660497208017112095715 0.0219460641674200992370048515350134 1.0221904613549087617309137013193747 GT 1 -43259655108402597605573152.0079817830684357054932831170305273 0.4366635571692163973480253051666759 0.0340747901737559636022686019342383 1.0346688703070186654494057016897398 GT 1 -132443179033986946170940300907103840238755.7927751922912041027851136023212899 0.1665500695227578800237909670020313 0.0206238519201498148676715191297842 1.0208394936148743554250858597848702 GT 1 -508653952818742756901315.3258987059705996700877232544460386 0.1052190964407945728486987627350070 0.0267388125022168658982606098981696 1.0271027975689071116059448997746607 GT 1 -10054074240677851305879796121527777.5880727582718809332719085565579780 2.0166613484865541425724395348525620 0.0282894967679229622675933700611477 1.0286973550646926569484245358965267 GT 1 -34187247799404111103.2548700547742510598406240969983910 1.5492933909081174339864677454118269 0.0907721560492346167555017402469800 1.0951595628017931556058807757498504 GT 1 -14198535451600332511.1443339423598474736258479149184710 1.0261043977378397429349973364529681 0.0780562640707333321410385906565076 1.0812710812254681214647511388439436 GT 1 -8494557848748506329494704265051677.3065135708441711504475899646696911 1.6899951001047735538380845378294216 0.0893772605008723475687041509036343 1.0936265843977225901577578391012351 GT 1 -955849140504611764073.9307294571738326546201060988187931 1.4580856486523262551455566368634956 0.0202839096545052068713666296311963 1.0204924530188382547618197777622840 GT 1 -376963689354580449230.2417077138003139970465452034781269 0.2407078381831564030863312756104531 0.0902143283272318772538995363284920 1.0945462328460801031119321781194674 GT 1 -3954418704988.6921426834218575536776871259834441 0.3379651914082666199963777542364297 0.0233971781618228163174406873216275 1.0236752379074131200790874108778464 GT 1 -61650952672290524879920763287565936.0032192045091163422165528627474384 0.1002090246720647748811289091131892 0.0047042337978430286415590525713961 1.0047153335298257051631860119851824 GT 1 -2383233.9184780689945720146508272806324109 0.0749491297899877838783425403271662 0.0866979130750082677708864756494164 1.0906885802493484439793466033568424 GT 1 -8395485628432645935654670912824793310151970.4494328243414075640776932797451459 0.4495044641786227328765029955330034 0.0062291288995283333946548721017776 1.0062486108688874740187004579591991 GT 1 -3129291885244872929353464.8425158726968414821367522465321848 0.4963251997091174085751492821902361 0.0568907892268570535395407179501098 1.0585731909937815443819548697379159 GT 1 -780546971569773258049295203.3728364594083884063796852542093601 2.1185288727283225970230030129782112 0.0860999581108952252543781428814187 1.0900340768684369280730511410848280 GT 1 -399217766444911755.7122400947050700673590618397389953 0.5250888634057961380095254529047475 0.0443717257085172146315158425861261 1.0453862759695771970541375373606073 GT 1 -2411438528398515557956524.6136102269786825583590079329773036 0.6777312169458829307174448295403624 0.0863086258478018547767478639204979 1.0902624295910223370356701753392655 GT 1 -295566.2527175143846114997153939214312771 0.3493170541078538390148950947000065 0.0155786932803123382638325842131459 1.0157013163275831582435767618123838 GT 1 -25142948912258238275.3992171042169284794049536857127305 0.0245449486415017371669654847814606 0.0782433314347356010878220898065354 1.0814740072151659888044331841032240 GT 1 -28550157683546209945253.3166027903667822132558982875368552 3.4198515536794830522875427456389603 0.0138874684990798304001670895117461 1.0139848015804779311076066667558961 GT 1 -3.9585804074168459775782386468568676 0.9981124375807318253766614201386104 0.0511763407385071911835126118614050 1.0525323150657057348482006620525507 GT 1 -52823485128017349707431507327051.6133259703772537665509722920201571 0.1396962933135005346054666046884387 0.0275621015597867353086380120287670 1.0279490631735468324127340490411366 GT 1 -107553743418701001266252819.4710315216910633157989934994622333 0.9143698264701342449988546173239811 0.0528024737681776463853020160417152 1.0542476265198451171522577530552996 GT 1 -963.0560156813106600266613059262298501 0.4721401696356083883776466563730260 0.0358956725397886818337555415432019 1.0365557667208893529996023707714931 GT 1 -754609234488754164798171.6527883840646111967730254380503378 1.2521193272402484857575856505278831 0.0184136379195142830183170083004989 1.0185852792429891544712839336734583 GT 1 -3963789836918883977653054.0357112062516472499812260461142057 1.8046639316394716090648346263306755 0.0538086157811033071457980549865699 1.0553104214924765399972051675855685 GT 1 -2793665170960020514565780263649978677.0196529625216767397137572151524660 0.2952961769934150410923592564601174 0.0218043206023548807609170838167193 1.0220455477772040190776282044665949 GT 1 -10063250.3467676060435457492899523599551727 1.3358626585640501202074355695592665 0.0476035041231052628561256037002514 1.0487738436318732266938956172401974 GT 1 -153894698350273754574577580507.5090779723013821647889676833394014 2.4215459051590807665793950851734136 0.0768162307265138863509306369419157 1.0799269643257795115656110770464142 GT 1 -2673725.5617297268915847584871714562201944 0.6767224546109968621685303381748589 0.0414464008747504109430563029436437 1.0423297982630739029773879024709544 GT 1 -704354379724.2079340815839072571430368678549177 1.2159861975310552254906827550277508 0.0506777020814113352638169072540234 1.0520069195694531588671017736727586 GT 1 -383517538167886501815653407271189265220.4479116777304383825975280731261584 1.1566487329736216215767987314782571 0.0500395197933719041144345250219926 1.0513348950353422239583573516414071 GT 1 -106431185471884768433126.7991192693834936656570082835625295 2.0175218110813561437535607793498392 0.0161022272709252544605366808424967 1.0162332768297446520086864815553636 GT 1 -4350945918482223.7694240022878443315386368851870100 0.6832160738044369336370685906331763 0.0493205577768767894076655046363198 1.0505783476827344469582771947662968 GT 1 -389671316501935631363.6220706159660300848225264162496838 0.5853559119666149524182096902571777 0.0610896585381895557994680593494389 1.0630352873339329357629902077355061 GT 1 -258030124142862664438139293241039383.6764253088126537778740861464738338 0.4002977831306359498557598481793326 0.0472901730968442015389015670860395 1.0484449055297424882476348672384508 GT 1 -877079290293634412349803454047621185194801.7474462450005585233117691558814564 0.4227325012411186474897510293767067 0.0563753609058584099169665963977031 1.0580268199898828304765571904009531 GT 1 -906872130988833449392205046546.1916726388697675556688549216140016 0.2337956016614203708153875688317279 0.0898425021644848159936744864287886 1.0941376199023902140507589808599894 GT 1 -51438046574544806711454163945.6315035374003674685450580565188977 0.0626176721516472047172846265605226 0.0028670738967821499723669145213466 1.0028711918259685685579813223385451 GT 1 -23995615137907.0840485332658326638704742145091607 0.3218102559655950721439011456431415 0.0807987904506513600178214779610199 1.0842502365766676769677271317264295 GT 1 -200511.1681119674800340323654169751363277 0.8867104891192512298624257680585163 0.0921133789382179448959601935060284 1.0966357748493818683913328192321806 GT 1 -409707622216618320486025542592248220191.2665372503909222744981199881407827 0.2042839549456293678926894626521694 0.0100285842564517036347446650214974 1.0100792092566489861977396244138431 GT 1 -6311897306143204484479450469.5933121032131113277059746792746877 0.6254069142440201477084733064148097 0.0158882953270002065355611708728858 1.0160158673637596481103032433840136 GT 1 -160880239315460498710215564521975988767.7589631191030130518535706111265791 0.9520504708823144589107842263243767 0.0177920848851061307037785950019593 1.0179522668522505823918111581461742 GT 1 -1.9700510760447518707792491112344679 0.7550751423402804028744521411493844 0.0477769245617774194239242665095821 1.0489559487007943266554809530878392 GT 1 -69837270469498667627444382483.7186604381034604666485852737075754 0.0928878309708926932356465826343654 0.0554190226205110099091579109811618 1.0570138600041929612325763186009259 GT 1 -3535209642364901396.1185016338067563928264605627240976 0.6117887668273746091572180894367064 0.0832241147427298881345376168939962 1.0868922365337501670873654082499762 GT 1 -300510325849208772287864237643292689771.2737420786930848386524824716555471 1.3044511580219339922941971804752281 0.0924444046216175340757691130243823 1.0970004525946391906272888480564126 GT 1 -556385269752050939473005171428441992.6828729465522131546663653848003414 0.2588207516344550164195423535547867 0.0998710839462070712072522550061502 1.1052172858559341941296028750379592 GT 1 -276006232098653568823268573637028981.5536312453133265216734358619625677 3.4861039244584645889256162975955960 0.0606846889928035701853985226712145 1.0626040616703613998474944331031189 LT 1 -480724737368865488609547281769.1193607535409123530732717536203013 0.0328335448496892836864447674351849 0.0424077604790045736838569999053522 1.0433332288637397454777182114283581 GT 1 -3987.9060191042985304598659267792954030 0.9439498437645202699118546366711915 0.0350437163588999726124274695811951 1.0356724805956355965122367204157430 GT 1 -30563142313681678419.9402310147139656995028134857120419 0.6615827256012216146786500666531724 0.0877128595780578667926800582045550 1.0918004915078229396065100388924070 GT 1 -52522.1630812161467541240820709605466882 0.0544481073212941293914227174391536 0.0754005501814277124048260161498709 1.0783946624762397639983454206487350 GT 1 -725050009119002843983947310901290325026591.7350345961029535458861814454548657 0.3435752338406713721437605661444384 0.0055809445544777707184000611616644 1.0055965762122777647246181213521417 GT 1 -1119589979212446398409442659838299903.0139043269544175970560543187330520 0.9720400004674708609326456138444462 0.0744874178902751544247205315860692 1.0774075521288234767421315109915835 GT 1 -673251101211197449.8276815776950583691601271789127508 0.1850734408665144692124886380220286 0.0679345827815089646617615874618026 1.0703522766111635548428327982382837 GT 1 -486953117784254827386383.3956559430330453631770603144519503 1.8295086373448146213096263285717109 0.0094683609287666588256622905663538 1.0095134708284600675841123114402285 GT 1 -44.5497275000400788881359470118034060 0.4973633166174829199737660162625882 0.0840430527600574658500601533620371 1.0877859162423374532122458921667496 GT 1 -317764240279635997561307796.5933063862332806812392987078791906 0.2505365564249869542073438743968092 0.0646734272261463647818154767958776 1.0668595349820447388608756619527731 GT 1 -25107016441246514.8931842293955893978965463979606532 5.1119940723813990180571368425241170 0.0553943892494419989506614925819868 1.0569877817213751802859531415377208 LT 1 -862332875315505729787725298.9613453303596316667266384299301257 0.9084267067801812131184040027056459 0.0585424635823487660085057262705118 1.0603260339544731455422713236053951 GT 1 -1106866047.0560355296099404110282621292736783 1.5252328265288933702199283882526363 0.0471838355530560489066676002654199 1.0483332958803530351565680053915490 GT 1 -6361321484149254766030969.4828744973769124730281612685549496 2.2127702485424876642481464466448998 0.0157763979372850932769634548967663 1.0159021698758847531076836351623931 GT 1 -676638275196732930282128369193258937769.0506087816442121733917065943591761 0.0164057267999798605632828805462156 0.0964275631116307258937503171233071 1.1013989985184650720117226077634480 GT 1 -222933.7949893494532531150107171749476334 0.2156801401005722221943006685172411 0.0779101512899766357533333889972593 1.0811126103795143531919469846625442 GT 1 -3079810449945606786328985371160484350402.3678073582740675016329625438500989 0.9512474758955386807836595069137813 0.0698666400901691206447650543901845 1.0724273053628040345003909470367174 GT 1 -1599095153058586227525541.6308669224031447268802913204144793 0.5258910856589774063902180352831153 0.0988107104844736904916777452113071 1.1040399551867192301824017863254205 GT 1 -47500112683245871455878892530145771269.7787605253632268543125622631694403 0.0737537385618972738373916434797919 0.0832692650131673713145975010545886 1.0869414867191033003416257627122085 GT 1 -145678486276499828693.5367797370384376627569155427258061 3.4036968300026077888343634424307980 0.0731185294216013503003691240521546 1.0759295850452333196901598593885415 LT 1 -51482702170017972985164751.9860894247118090819082026695172079 0.6130546321658221008927465827537299 0.0745577528798308016129177502917966 1.0774835507307113077980287061342920 GT 1 -489614064700521.6150210694058100352320677028632628 0.0246046525676083147198244335647064 0.0274783505306366345243753254359815 1.0278629420721677527368030115730556 GT 1 -17266541953597449382289225731685441266821.2007653589202629186380562186557894 3.9348587150170186344227011344791357 0.0490939197552224673920026691699194 1.0503399802571838978084335423685821 LT 1 -19519222496327862310687686528063451481157318.9317298826980211349918506001258294 0.1496463505413301270643512110617702 0.0506164420740988527658070481525638 1.0519423913992311394684867586170070 GT 1 -4858366668404264115662505109718.7484312197336807269775905795550622 0.1998798800536025548490791643223438 0.0244058560677316277419123579565752 1.0247086151878372992794905883357259 GT 1 -11665587263715777397810911413.6452158481166456824324137610608838 0.1452082676193208519065707736836241 0.0206320227189434744560235286553875 1.0208478365103939031640276487798890 GT 1 -4203663.3919492693248164312461341084468197 0.0211108002823465901253918600820598 0.0622477711015548557823099205239107 1.0642695131651189974204819376396354 GT 1 -1078760813245195081384618268401.4247609363297533476040450019883316 0.1555139383090994209340736119849677 0.0481322393685469193284302909565603 1.0493291607389627961171277479785260 GT 1 -307010423780686.6890719247465892247605693352055273 1.9577616285387624658227514819927029 0.0958800666371149739943007466456950 1.1007932577405910604710578438299222 GT 1 -1321143927153404094715560171493056.6954106488655976762588682575078809 0.0021831856074302928406019295366882 0.0716834583450592928762480426745959 1.0743825034363577815155608614227137 GT 1 -12141598082404491068.8659854674376105791657800127639144 1.9498004785578602650992163740349523 0.0255491500631933414710118059194596 1.0258811974924034202021780141851311 GT 1 -1745414294716821632113696891560018600719264.1727766358176448122370789104492379 0.8420098334817085853626986585027150 0.0452953652575575368679517889037809 1.0463532693314621599156569268731998 GT 1 -115635167555687285455894461940119291.9360404152390540986988252367854145 0.6329704081594366273057175075890644 0.0638157228385222441261724546294334 1.0659429445730680275823264069073231 GT 1 -175480522.5937853549024722939083775277617245 0.3153165659355718554076961133121781 0.0018736376353530292375768707943589 1.0018753950899124353008262828838896 GT 1 -87197554660.1845075846530654213529916318631018 0.2769504554683271883431768535141656 0.0134192477334632753947376534195608 1.0135100995289610015900565943706113 GT 1 -348756022.4773359428359124741520244259290697 0.3763672652126593838543807015916121 0.0654982161355276031782261050898330 1.0677417431910997385275753350862496 GT 1 -59264593997640611450225018.3479459644326212838292184012051138 1.4589080871499894851565858712080125 0.0324051596854666898971429026216848 1.0329418327175584132311159632309966 GT 1 -1874285440261257740.3459969171841485363887953028910392 0.8728570737495306599071323956874923 0.0784849185495425904512635183433238 1.0817361358092685616139123400583094 GT 1 -153234293439827545270272.0732650039998131433050520985579850 0.3019110834319468314064961983965973 0.0498874666243257795962487653488820 1.0511748452180101697288522543920278 GT 1 -25750252989144209.1230094607125260135299984479763713 0.5149551853281050035170320821475704 0.0197547018343390917461104080618893 1.0199524343877276140427364807423738 GT 1 -115497871978072979566914.1932480253182356674715870323802659 0.4433735097912915210887692670538601 0.0900759650071433569604414977146566 1.0943941609855538435979729906953643 GT 1 -14936339435.5281683612024148761258990017445420 1.0260646509584392666911805652386951 0.0784461724551740121477502322979858 1.0816940906158575263256040085665412 GT 1 -101547062867915928065360237252378079.1352653316893001119766912673699670 0.5379423531555108285944735774822372 0.0728630807002776430948855582326093 1.0756540228131273605510788691972922 GT 1 -255148177589090935985649198.4837662265590909176966798671091968 1.5217220178374740013327102619554372 0.0832038493350227428736819484337912 1.0868701316943318702478701046143256 GT 1 -518.6866677860625371127096406840707592 1.2413845633277038067500221302572391 0.0745261475025263206177740950978267 1.0774493996664744342702784178940218 GT 1 -61.0947709831865689142182089020228815 0.4676594555458738560380247620189675 0.0031422603608149370751091068612001 1.0031472076273538908262813801470344 GT 1 -1960275348163654469314.4452590861865346170789751808216067 0.3183975961197154137910317210246832 0.0215925187410465462027743327143277 1.0218290482167468469345904526048580 GT 1 -74095328.2118672363712421855447226438305079 1.3121652796479586763009251869959561 0.0971823116881626749032867912475296 1.1022346415060155329735725913013112 GT 1 -4513887183269874139.9286835760221270981397319998919592 0.2029732707083543430231269274056560 0.0731523436459613369036398446858459 1.0759660674243171430697306506198820 GT 1 -26570505.4882324088748612162343714150589924 0.5634513532490941244997488456476742 0.0263710386650442734506521058263836 1.0267249911048211005003405488380339 GT 1 -83241626923957328.7647636289162789200183921761037238 2.6554544023315896204551254358092284 0.0654840958527596695998162604205623 1.0677266333471867859640819549683671 GT 1 -9734814776213330635447.9937608597993074987760566390486711 0.9797334946437123108795761488149795 0.0803657364378113590843557288103169 1.0837792275851853810302486452408158 GT 1 -1328118920487173335.5015601823542656467101337324830548 1.4166929621711040608424404739164643 0.0570388095849771361573112207223594 1.0587301526409509522756275543348912 GT 1 -153101537783.6320836308366425361594291101023995 0.9629584337665243781326152221542413 0.0664093002494517790091361683033058 1.0687171597661910652962078757250160 GT 1 -3746507069877393491145721377012619.5071187588724464718289490519468856 1.9311348356289821113682920414117662 0.0876631991364341448207790534337758 1.0917460578894621100157009179914570 GT 1 -1444370598013785152503189967233.9851437408517566162836342076157613 1.3575461656876019044789166574519192 0.0130809120166159006117475474306594 1.0131672206360807690094275078292924 GT 1 -297625876995927093121451235922946290.5549292268845475909110232628321006 0.5625846626819607866586448660108670 0.0509220787312382821183015071263988 1.0522643749244482161601008785107197 GT 1 -52572313814748813224113171838926497.0522237535695887094285984954052932 1.9840645016604898623928183177110349 0.0768306594986726465538491454680005 1.0799425938086586707964668985592262 GT 1 -1885167633872906.5897152957250458275342052138626175 0.0737474727339619767813959145345504 0.0919989071011604023868489733346412 1.0965096967484848666412313782495900 GT 1 -574367.6061568652388545589871353209132895 0.2180067204378317003677767560631284 0.0857366145427462205080622842904098 1.0896365811440415218405483970912863 GT 1 -70123137426391.4344807278830586114272769371018897 0.3189276481088432393287318542085544 0.0858774705952293128738754290855538 1.0897906580832881015536923665249776 GT 1 -456.6953511418550748878330442510945016 1.6330903020740657584444055330580575 0.0735984450644911557349572415508577 1.0764474936938424720489353073927460 GT 1 -1066878236758678589445849037780259374690.6615950574200360427040904077111363 0.6064263939848077039178050754662747 0.0573525138694393766053047465872671 1.0590628879441541596102341801946777 GT 1 -227379150541140.3673494567448307328866543588781582 3.1640945438163886911826938719652409 0.0215008138223430917507199079305959 1.0217353238503306289855476564717745 GT 1 -834826541886028468095937592899036532723371.2662798390636697079493641616879263 0.8712659707465687982946977709477228 0.0621670126019399878409930283835819 1.0641833976434534555024429401997273 GT 1 -4.4556642365317378421700504734169243 0.2732933603918651473922209919572124 0.0405058302867964426803351275193357 1.0413490399330380358257638292844694 GT 1 -22571361166478108155859615901.3717306143592851373931238455135523 0.0688030282960439073757667670366633 0.0327616194996320597383885739568976 1.0333102983965260232698470505192793 GT 1 -23961508453488302413777171792258547299.2142393522641455286681105245756422 0.0871145478633720512181399312515706 0.0653741580218911272366168102461427 1.0676089987898042713369412384408241 GT 1 -1166914.0264269793640077373819318270114840 2.0046748698705006524999633736895562 0.0988910611289669001894033087504218 1.1041291198358110457722195961905079 GT 1 -2826149060640593.9757953590566573827723591545004019 1.5492614077214848783264500676497007 0.0785488172153230837663058481498833 1.0818054790924812004986795343462075 GT 1 -9116100322.1032018944664441061805405975924688 0.6254687483568552861429636171652997 0.0052386116771987399795662974151083 1.0052523813135885368515276397777685 GT 1 -3609.5401077892228465708775235991462900 0.8426775214896623044497798680843570 0.0235897899900532853742274642201220 1.0238724837278085733162150147384078 GT 1 -346185336867273645160765772647697.5625438873918856860647774934592679 0.6276933335825988672994537169370612 0.0299963459307127409970762348873388 1.0304554404100645382446435985117159 GT 1 -93661.1903701620377529441709072062262602 0.0063638640848789570756085310300589 0.0744556714948968465222478889662952 1.0773732512975531124607149772676297 GT 1 -43872012301454579543560175987.2390026461668172348053382970987749 0.3832948860315886068367283364166290 0.0177218069706747498001697850438539 1.0178807184567999773729787353502028 GT 1 -1963826771.3918762596758813648516715525829245 1.6844896946432762671347461557304114 0.0573867161433726449403411897631799 1.0590991718094756165439156613478746 GT 1 -4968996208949389749545596163906.1158291794144727667926044583727473 0.9905672516016213203837086263144890 0.0823498000176573888195002418718163 1.0859390067489023159131551504780114 GT 1 -229780928249296.0517149793814544137960888307289610 0.2936520498313567386998311313948615 0.0441825578527619857038793278491431 1.0451883442629679619289526661399156 GT 1 -11122679434483607168449350901343.6066180696680218782873585756506519 0.0515565020366557270319125919282242 0.0575900361653297974849937313650110 1.0593148933110482279239732455734249 GT 1 -2100284505683442797262264168.4116671616521096878368780833629844 0.4578875589345362430625673038718619 0.0841710409843399687692638866131053 1.0879256577089069856499574479154928 GT 1 -76025176835687395035.7520341728506491687269116266157361 0.3238160044905940501900452433653567 0.0044407193845565927716819182643000 1.0044506086667608890756095923849945 GT 1 -870665817475230112.7081523745264766361721311732293783 0.9850433423611758724725163119694941 0.0637827041903811497074104969480604 1.0659076758052768068346527125709599 GT 1 -108417110409404309276.3631985692654427455175100043570390 1.1076815268856400108098697389978351 0.0897918410877212209593576226576818 1.0940819595721825086691100034215507 GT 1 -1069298389442.7767469411865939465785603680056061 1.8220891047064342001679152984308992 0.0565664939800131106586849879305254 1.0582293925235412955951828743527358 GT 1 -822995553078337328939119469809511109.2396340191961178226549210409329219 0.6459390816864763648696104240604242 0.0765244188390470868617364719319960 1.0796109213156519817428461707746263 GT 1 -16764136705132259036613478259.1754539474080159520260827611412636 0.6022588011858024198238410119410969 0.0468888614002796729528881630806362 1.0480237624006027840120532331344235 GT 1 -10780704110303785380981.0024878884380825515063049333964653 0.1646459234338904902501990815375665 0.0720584644570779414404785157056246 1.0747865486730917480480076309240727 GT 1 -1158613883059622790485664945346511431406.7741662008128957396272084094786675 0.5294344048529012016187601097814028 0.0354784972339974968731890507681570 1.0361231526743911572886125854149927 GT 1 -10637970.3786657891723712482716762597880131 0.3537588695402711050038126412341148 0.0021918572820442745093186129606748 1.0021942629170652796690562922734461 GT 1 -22486601.5496474594052677280971772275785890 0.0420785358154613394423797729969781 0.0874242542908377981904103706234763 1.0914841879742044352925375576774254 GT 1 -1050968263079.9903818801323169350705272915696777 4.3621871332479481135650124779336042 0.0355730752435985931224036633981662 1.0362212144041164711483269799664318 LT 1 -43029.8525165173645057774561993154763281 0.0238604048547701997044953901886000 0.0699040692454998111140657689519885 1.0724675468056450668889235946666215 GT 1 -9038140411276.8127098119258225165549527075203552 0.7457391351739339725871239581773620 0.0731164885095141510697443311292100 1.0759273831349513352865080728369221 GT 1 -46348281.3832307340827949236491818378280614 1.1277128110495557132318415686093071 0.0853869270233182286055641466588047 1.0892541742055337012272256354732236 GT 1 -414519314556048270743553605787467293450.3680853367900706262249302930537416 0.0423588516940164822109504551842849 0.0864024070446345733325388361875549 1.0903650747649419344539900009254148 GT 1 -231864450072564.9668036716131052436293576387828827 2.5919809157523625941576522059688552 0.0984046596766268008286856424930328 1.1035894845004347301485328117174334 LT 1 -134047.8773558978361291636614809756438991 0.6897894639202154581875005034311263 0.0516278431483243946668877624854120 1.0530082832441155262434612644648848 GT 1 -1725111.3311658277129037332670937649409396 0.0663522907243902201135707214445579 0.0808954977196681777678686600965593 1.0843554500550175600062283910481797 GT 1 -425652760.6914613906683868253680650511570160 0.4193607731359786364462604524806518 0.0048141725907117006347347638773213 1.0048257980458838485547254497532505 GT 1 -33590599794396275480.2871217188734749301221862588752897 0.5454717514267804025799047203741103 0.0762856195987945308976529147343221 1.0793523672453592657185030054284514 GT 1 -3740.3905904817205514265001453290297980 0.3375049956297783331056738186698294 0.0820207613828709529823536021345248 1.0855805045028699230809123703530952 GT 1 -175601761.0659735573841501667774154240107934 0.6170000669680727861907798149209947 0.0143990794375801198732198401659545 1.0145037521911224148446051483816920 GT 1 -8430349334946981170203340811951689360099.2397799926979760851081306214405299 1.6945673387355081750309261875739215 0.0591763606909454985046046106023583 1.0609995753368506995591147908348935 GT 1 -42257321676381265942.2369125786833536271444287483439947 0.0577317608576724469661389594267536 0.0584883419499224571505976304630837 1.0602685485398415887608184624421348 GT 1 -172347505747245304120415249213464501116.4096445146008991092253274781864840 0.5580077388846594536456104533472380 0.0146781307149114046664857761898836 1.0147869203402080525051269400291891 GT 1 -364677905369583440276348379581.9559678762445809642771702118450085 1.5975670194250728186848063758906099 0.0863076001639610540095699483773614 1.0902613070202132919978894498211073 GT 1 -611817831855557923.3597817895214463111715205047517954 1.1041245212120890506282842595508824 0.0150451862625219898699948094309458 1.0151595132405045529820762554410663 GT 1 -805755458370325.3579249188045632507810217750272893 1.3182551991592061381927081003105443 0.0007665797463204004917580646020827 1.0007668737188193117984688061584210 GT 1 -336220076326854605028.4116532687805277965223962604476644 0.0381239809084922876774867158740630 0.0991019584266072092743281254565105 1.1043631891828134538066457394012590 GT 1 -76088772872575914322192081.4901309081150447775479420089916835 1.1327598208426727661159252679230994 0.0189061029644392233337661676908213 1.0190871083646430581894089550864379 GT 1 -1594.3951356320381569913035184148612067 0.5981171390592504134294404085647317 0.0334873287719635765675886789963132 1.0340608699923396253833282873468648 GT 1 -247945854183179331533281387894775.7497549804975149995305055718276179 1.0072253703967780383653679552969829 0.0195662184293878774825505490567241 1.0197601709954368394237848306535767 GT 1 -6111923490579129569045886341.5124573656905010368951229817553736 1.1726640321993945175120893810616690 0.0626294473877309821996322527237573 1.0646766078846869271481533369248674 GT 1 -4.7018040808843208268383491079535435 1.8312667414056384494301677248983881 0.0200866977871722402588382162204442 1.0202911783607343745039686578867335 GT 1 -42.7303662309106744896913940223186321 1.6927398027517594601498460628385402 0.0394030412578374711721603534374160 1.0402003557545900111334802391679934 GT 1 -7938294868127667185597287689401245661523257.9714792055242051764192140629708045 0.7532826512775437339074044787708923 0.0449846392834386180095730982171299 1.0460278541108017464061939421771557 GT 1 -32209509.7073329534345613895139133057637965 0.7545875154680358767630395656272492 0.0791272922168890512506308381860436 1.0824334631549345135115310220643864 GT 1 -408783422361720942200422678.7822706484147119355213694978244675 0.4522512210310123531648369749093827 0.0210698707853699893128430134088270 1.0212950085443863597957094116295674 GT 1 -9096.7554381761508637519841459469970841 0.6474867287901969557350974051507097 0.0443071799458110402163561314281383 1.0453187354993530583420669142889018 GT 1 -4659352139.4655686066121874271542268862969820 0.2091685935782343536796316030904175 0.0950424976272247078822154938519393 1.0998672950889210937842616142384468 GT 1 -19594382307415.8715759835996922219630144531932202 1.8164492906393387155123649945684673 0.0069725962932509404060862115786358 1.0069970184328078182460512291526013 GT 1 -16006452216911575714945308.0118221482693353334693237922624907 0.0862077533509805511166011256038456 0.0259959198933514455620026261010570 1.0263397863271761288270831450347401 GT 1 -600630884738146914094482117750167.6163439468382968354687159407964401 0.1499031831530473939754917031777700 0.0065886931608695116140807812832242 1.0066104944135940050487208937760408 GT 1 -7452714.8236505040112245038656644428325166 0.6478280445937866402802688317148985 0.0306367867799724218850643990175467 1.0311159042793225798926671564058329 GT 1 -10408.3318102485188503704293333351605685 0.0141242907333617082753151279554050 0.0508658267665759956595413171986472 1.0522051065583455280214493571779459 GT 1 -161999668872.9881982392003042127391077876594177 0.3741950066199160776215309533633101 0.0254384935768786028640629375070048 1.0257676461482341039214032424874804 GT 1 -2536943096173680151793971898957582657.5108914528440837116858098837040510 1.0573762778624489200318519146172643 0.0524531588464921123286022025193211 1.0538789066738796719842042794577960 GT 1 -248243210390.0833928312002503443103459151514163 1.1483271209294092178390699494974514 0.0282981513728757891073703259348185 1.0287062616716148620737293716205103 GT 1 -2941508830917044629.9463539248117627416114565491187321 1.7070673317144449188629440210704384 0.0101667699587596077087969128750090 1.0102188045473525575632220766590910 GT 1 -8581299034362350975348.5588522227042333198779318154222315 0.3528951812258216041896080828826108 0.0064375720281135561463448112199999 1.0064583825558479682611310057807520 GT 1 -1035697015808251031796306891182462510679.4803608784724375745979447460271421 0.9982659572138530823569608155325078 0.0406885857592370780924939595848994 1.0415395287188968553755529124996209 GT 1 -501266145215204352279390496059283782.4335308600933591027026691681446010 0.1158991074846334429534103119488800 0.0851277357070873828955530370097768 1.0889708253175324377683212360815444 GT 1 -390375837198808437402062.0198601834876501874130470545714027 1.2992726182165067163938062632482859 0.0937487007259284791163431722552764 1.0984386391325461485683880439978857 GT 1 -8148290120144949359.3415875658430243575142978388617020 1.2778164907651167687724743070157525 0.0886847870228826810067450886723984 1.0928664339102784215694265589515237 GT 1 -4785321072229.1039758198712081979977048126088661 0.9392630306426357415612434936636808 0.0286671820104614662904664702211398 1.0290861114482175775329795302695861 GT 1 -36669.2933535213802246246829068931248644 2.2545234596595485545132849952046965 0.0941728010507372504158359210190773 1.0989067207669432934889603865289062 GT 1 -99882389985770334946237760714499901.2724566928275252347245345375719498 0.4630393722140620573982957003096741 0.0829982199985771892223807223442595 1.0866458656136817771894583589119539 GT 1 -8670784506781082031569210109547159.8394988736041244351743570387239165 0.8254092785262072162053661883399937 0.0231454854579014305107316385364278 1.0234175484246414624916574811722033 GT 1 -226686440.8576543743802596196822139232345008 0.9082032957679389878423780966853357 0.0904669553222686173329409084142471 1.0948239488882337093883123420422383 GT 1 -9573574156468449632670749530990630.1346162749976705220210535840466267 0.2518393241264789626783765042401041 0.0456923507319957754737774705246347 1.0467691760110428112966738096163838 GT 1 -23285115839.6703687469986492185232132438272423 0.4951296911010509290632517679736338 0.0955180936596317030720929690037453 1.1003929783928981359736056624561149 GT 1 -310203784454515337688568907018782.6083105505313092299613792190428048 1.8365911827043156360233382634775675 0.0269232174651877277258960029801482 1.0272922867186456291064723045974772 GT 1 -59209985076703762500742169196471092557.8547344658326062445925685825805121 2.3674896698226021915454835795467750 0.0520398829513103304971884313891651 1.0534428482358538347383332562640837 GT 1 -279567782774.6819547443729718217052959871047361 1.6054398611648265892409593542111219 0.0091464637305086952162588949505913 1.0091885494501272509795305228884526 GT 1 -223316802395431.0053335094802615692228215383194945 0.1497743674779563780573245137230515 0.0821810692967916352575887402398924 1.0857551510593456830356756559638756 GT 1 -108899277477719563208368165625666024.8398149522943293950500409978970130 0.9969122698504456438643554991931222 0.0754607775077845681919752375206897 1.0784598034278406403510636801835541 GT 1 -110284210.9569038934777447338867008861746955 1.5909234123942634933113488026705044 0.0336656640683812569141574134295796 1.0342454012007209852095557513748017 GT 1 -907339464071046065.5457867201604170867829728821227295 0.1104666893115973709863590636611573 0.0731315572856430148498960255004369 1.0759436407319777501330559674164800 GT 1 -81557018054238263280.9887984131217775871652398100594498 0.1719301139780452777062205690185280 0.0706898150193750134858782430109592 1.0733127046374891673988797767913696 GT 1 -112607016552.2847936973635522199074562906271968 1.0806496651294674779622406720105915 0.0313830935272662929237136347419312 1.0318860946198759098974670998456976 GT 1 -65868349832754270.8242206433447157765907149608889701 1.4319761792849867298518312912508945 0.0912395701867124420650109166137556 1.0956737731017410599309648282461739 GT 1 -4482719924283506970.8908993172247228687473564033982679 1.1549971320326745673561861420493712 0.0466134356397164355463888598410882 1.0477348286536051114655925184955612 GT 1 -201018902020850300885197654512492759349229.8212324922466633258729328626106851 2.2967897543234433211107502837368584 0.0233599977234306884252551450367478 1.0236371674351322662556976002298069 GT 1 -481288372355462544946.4971960224542359422804074095223473 0.1851486843250646245004753116772663 0.0038501082800966299212849321873646 1.0038575390258967729014275070669252 GT 1 -11733358468269845326436396461611882804267.1148880678939714805809235326857664 0.2759239438049157744791282632043440 0.0507010685487393489365404827625963 1.0520315337125668421672388279737731 GT 1 -959813292389820.6727648276542880487225595401451142 0.8758124974692471277888517561110444 0.0572292741724840512890120362375246 1.0589321586488188273752310392442823 GT 1 -83200651901225799601923.5934548826043644908743045091277051 2.5091792990880239780322474630472044 0.0200888735653265133930827961376774 1.0202933987414199806724743929421519 GT 1 -3599150684732180798783427807837969094771.0757278495088273036831921843550213 0.1573733710983842226342074156545369 0.0611099445521057871609206267636614 1.0630568934790273826651145300635914 GT 1 -900519202328656809358882343383.5808281990623048039481616549192907 0.0698677058544140825384068642578703 0.0150776228522410757076097395612396 1.0151924458414525754006548205621006 GT 1 -2195311483927787866502043941919183.0504339721732604642009984788802218 0.5410200849473461134370122031350034 0.0179080333146925554072903972661180 1.0180703225837561288926040194021556 GT 1 -1396981849381065339963154655.8996876737975504956294686556194405 1.5047855478827207632452129738127865 0.0037984994948499876619311050912579 1.0038057321152688754157563588549456 GT 1 -6940217630743709810673636827604708.2115270360347992285828969835962972 1.2732611967554910182137872174645684 0.0524826797014442158829314425843436 1.0539100621941570134789130839996964 GT 1 -146032411096.6576775375864635833740699529109985 0.1446896381637720428720857993860205 0.0529146516357564364911716808949653 1.0543660648684300330488761895716009 GT 1 -1558398779263120103.0517530563787623039471742531557475 0.0731252128467480865387245364952242 0.0374388642453837475520717395288516 1.0381576971702255969027383621371621 GT 1 -43299406048864418428.1346120360204809026217913490679296 0.9423207380912678247919003665052839 0.0568785096511455673825013810390921 1.0585601707670358389888428060587361 GT 1 -9033289812353743033604781160846521035343686.1730985076184200616934926960744623 2.4129764285084064971378614850448354 0.0256582045335174637820756058485887 1.0259931175272980405973764773011153 GT 1 -245491131115535861434148727.9577547575738811738329571183192966 0.1553854612213365711504039145129958 0.0202877313473417678942875397312956 1.0204963538430955089371701292710868 GT 1 -7453585466924987442641209276138937.4471747055975686529822790089029285 1.9606973860767189675152868986152161 0.0908837833511681755396675040845900 1.0952823418780885172334335144882706 GT 1 -169458623902276232412.1138779104352647933029794786769352 1.2873885551331647882268646546341727 0.0982551819823306529409958466452485 1.1034237057992317426617485747998494 GT 1 -2237143521860756596558391.8040081689636772853456714366093776 1.1788900350878463925638285360463195 0.0117459734412707366029166300750024 1.0118155023803218589060258946685927 GT 1 -5623599654644065385183946318.2895683384463061502002628775755060 0.1594588632516345351622566670440825 0.0005864994706154193669674954724403 1.0005866715287078779531980066053796 GT 1 -70.5114626355969592892725441606135071 0.8514429115587490459853990159250119 0.0332643705729845759140472472834763 1.0338302134337465588335266121522973 GT 1 -425740435133238925.7302952334294200248190230915388685 0.8739031456532820598317746625208872 0.0811032886123847103430204177917299 1.0845815553394500038739219011588773 GT 1 -16680274754815.0680446236120919504412547058780781 0.7609113930741714476148987440715624 0.0475800560967143746416661575027061 1.0487492239090459934886260990735740 GT 1 -4039960751.2834581339184777777143002140205345 0.3556978770948714115007926740779959 0.0735564610869404946512353088449747 1.0764021753046287887509437858869944 GT 1 -942899348690966846281425839070201.1892857356856008076851796002793113 5.3104520025792232142383610334802566 0.0156549124848014743592457192947106 1.0157787447159896311110531153793148 LT 1 -7351869139515281929644185141679584.8153302175191666434110324932599008 0.5776765066352771880052610183634414 0.0510747156173746920268066856960797 1.0524252143645618872575210338976982 GT 1 -208.9319930469725651122598923308381802 0.4356566995033923985712769732012653 0.0877377221668798129772348500779837 1.0918277449092104041503015356260090 GT 1 -11625193350436839391005.5225610363548834603631811416664295 0.3942443774460905815940983132135970 0.0519799388521256088458144430052295 1.0533796154026269460867383491323326 GT 1 -152714663313370881161692190831969586.3104912691714935809489198499031289 0.6401284307708508330586832537219303 0.0588801661561049961580508014146386 1.0606848001679770767273356096341262 GT 1 -4938305.0642667305941816517450764923338187 0.8677256584077010657904289243106033 0.0970896853029609950789803429048306 1.1021320497700192163010565057218295 GT 1 -465067319562781.1933437197187276114897510620696237 0.7810137641076413666041847211249969 0.0119849976932231225347804708771540 1.0120573968285236813801130588222143 GT 1 -35638.5526798009957815706029535740467353 0.0108749682276483033158510005784723 0.0660777881817246461089634634490750 1.0683621292128217615017612868089052 GT 1 -25818068101968786.9763528494421416685987635097495682 0.7319017085624264492626487831584869 0.0362585221434916316514326767314903 1.0369321968347365299990477935644088 GT 1 -99.4597572117625629532644553409682231 1.2200015161549573139629271205166428 0.0575796902738351560802221339626818 1.0593039152493735289318268138754194 GT 1 -18664110894925518704258202630474973874697843.5199006176965082683113668537806152 0.0036068191136442079856586316249117 0.0966662131064954732303200854581766 1.1016631516804957371155229662889393 GT 1 -108.5299049802904746959055096506492649 0.3419645292998553784239511669610872 0.0486803165246304979648577242946166 1.0499051178502096866528319193798360 GT 1 -1626007270073984717772336095.8650653467338814343727840203508818 0.3318948756797227296184661603367511 0.0099378474246960973510265693980263 1.0099875574450121131932011100119291 GT 1 -2303003511035844039708397281758320134628359.0556529297882470008173229803769398 0.8170076333138756578280093822710255 0.0294551562828230000967125222891327 1.0298976706222568890511095305942335 GT 1 -279192060611025923653831569837639.2126461802625764443234702517644394 0.5753258369969819728547422890559408 0.0560662035769029575119061008532012 1.0576992462036596395539772000737953 GT 1 -7329758083643257278464151725838236517887.1297473188367844278412883710353157 0.0413305876046887496973503316506911 0.0732132485224179072080715540595098 1.0760317814359055814178387826729766 GT 1 -468570400059159365862446841762232.8375907792390652101362924943900866 2.3300677698662733636446942956180919 0.0970424567685471217595769428685068 1.1074671643674063298846953200959989 GT 3 -79150.3141763256434671828653603765371767 0.2226472359380533095541288933919938 0.0424939845904907114964394021023692 1.0434232755350501199690928351070515 GT 1 -3105048907350680.4420451565893727411673937224040591 1.2564455372179408291214345902869790 0.0748177320182438296707509139560363 1.0777645144140535784865578402352575 GT 1 -4069968611702657503793693537736644974.9593777768904539077984558341985528 0.0761495262987295429237220168344211 0.0278440304326728392207831652524638 1.0282390248766044503938054568913305 GT 1 -761925.4586405917861045669661701213003858 0.2408672918727469595517867422321410 0.0645393588218075265953323776416025 1.0667162066509887101499607122440605 GT 1 -729.6638586530825051368298651220168972 2.7003931770044184628531788528433308 0.0478145243720589934623115143460636 1.0489954358268791257841864650867182 GT 1 -1702594.6316293777699251696736646873846078 0.6782140640804137848668145706189698 0.0995995544962744744323103967663043 1.1049156751654469123936056360282413 GT 1 -53787581925190265068174677157335561144.6237845407281281900040782056246302 0.0318311400639673355915808881326925 0.0351234320782650952302412702765918 1.0357550947135846255515753837320202 GT 1 -54267437228054293367386145176866828.2737809608310637546933999060145188 0.5347346824513820106041366889253020 0.0716607264067280831466501206557808 1.0743580164655949138664656069411113 GT 1 -21914122396710126063855336177200348066170.4886155915764727970499783369402637 0.1491272721525333950816870785001290 0.0726382576810808842503237407548772 1.0754115604970834799257901127073359 GT 1 -55848613640346863585348929.1316825402806039592745211606999142 1.5775533656075226894319718562352382 0.0738980408717145362923858813502436 1.0767709433473096681291359249137495 GT 1 -44714403931012130299115450387903192704.6231688521777698012835066033575940 1.8047319273096402167480154054119539 0.0474246482137583211487528679907569 1.0485860656234035535762303358021220 GT 1 -8857778074.6313965662107875403936867430756774 0.7575390229042483494445524903760040 0.0170562512178062316708161449109755 1.0172033844985800792648765405586394 GT 1 -20280.3092830503584112864361134911955970 0.2181451923419887686207348929941223 0.0907108009779508973918926619862830 1.0950920846645449062993040672678120 GT 1 -5462090.6745879495737086646408494572157979 1.9135290646690201088225780972806755 0.0943583887827284798214517170673219 1.0991116238065087351338645287441901 GT 1 -168986.2594192945398591804490249196921191 0.3539204050727569883342438159264395 0.0477926764985469783244027516340527 1.0489724911134534485367525822686532 GT 1 -53847110659211186872913.0116736870835625353221643406902064 0.1125232100232764225192713231111658 0.0460951730710467086137540032266205 1.0471913746394024784537411554700676 GT 1 -129207927740397788539769605.2545551127298952655877885063794606 0.2039661555201104858330289134719485 0.0494874226767755935392250630278623 1.0507538848179756225158583841357465 GT 1 -3384003081560087373523147407.0656460041653774000628686478513000 1.0644757952337500578215409837254884 0.0546586504196927979808888573364510 1.0562092002242660702263930441615859 GT 1 -5201923.3724566215254526205759851434031064 1.2008663122099462866154837923163562 0.0138571396480784681229048398226831 1.0139540460798170756045776956881847 GT 1 -23947133721104069865.8145205976732049706344490773011063 1.6348779475057768384086677787493294 0.0442234946967066224716138806162825 1.0452311743252889811442225812707187 GT 1 -42552753146440195718526.4976828907464443586046300770465244 0.3964328284129966929934745918402546 0.0810060534555953872635177353805881 1.0844757436509685436844069360906934 GT 1 -34124614827077976890736.7107826805741856139550422152002524 1.0233920383776677444261020048982188 0.0792519147176469049703833386694510 1.0825688031786976453166580266190459 GT 1 -79477055862881575528271328604395177183099.5290030838464462592613629662256514 1.8290906109629186842838834329085467 0.0355193470368012276031791087234050 1.0361655059736744285003253897078953 GT 1 -235016274417767388616146164955945998.3523508079276484138858637975864052 0.3261764883683535975749847789754764 0.0645395156408833677868610252269454 1.0667163742893500506421601365082953 GT 1 -105008714490825983646220.7102544931043989069386663450158727 1.2921489439362320473978832686278673 0.0660508369452661016910767055486819 1.0683332715122081450103018931811004 GT 1 -582911865817206344615641752052962673.8695980896549896083850712853830533 1.0408680009143425201261424944458386 0.0848461772999590637099310897427978 1.0886631155954130253056338593718220 GT 1 -1.2904397013928081414060031947554026 0.0468497458609217463553892148669246 0.0656074915655449721015795421447021 1.0678586844548107855584613797660299 GT 1 -500841350.6811426689113958438751657230692305 1.2441601580259418826545872800543657 0.0007636662973691275304682396819544 1.0007639580390142936259408740324872 GT 1 -21182092410017180557.6075357627299170388374484871216274 1.1954966844700714710425273790067763 0.0695319556587552804019984131241184 1.0720675459492521364484407626503281 GT 1 -11.1537665881117289203261236239451143 0.9346507490200531347143059046371786 0.0316241896322885217562135254375293 1.0321350331978800287688244953888049 GT 1 -46370273768423647535482.8616044332334445722643925619337948 0.6410170319619076446964389802977923 0.0842624346670969651425581176511764 1.0880254560854528303507429806823712 GT 1 -22763430701485772287.9248071276758496610028750770125834 0.1785517156924048729957805539067433 0.0216291281552795160214589105014476 1.0218664662658367446656542382137421 GT 1 -56935455242727.5638181063139250072608622081210438 1.5443539866532522758825736465661016 0.0269412842222779748154683447532765 1.0273108535215290167412028634255040 GT 1 -61587.4718584892942814784228001081813271 0.8230511593004064598780424094565397 0.0894124668199273348063706970860029 1.0936652469504080418921849163023269 GT 1 -1835.7962836730205880547987782633020715 0.1773450166256159984691097768956859 0.0395640378135951654664479781792929 1.0403679703273343470363515851370372 GT 1 -1657223879767152595838299.0409424621160630200287586757380435 0.1118631593442891694808069320820741 0.0064716605236176802201842114776063 1.0064926925089370694376403509550276 GT 1 -108225.3080138731951927746990925066325238 0.1901031606801041611314627980947552 0.0631062171204553048430540867948609 1.0651853618891030306395184259266847 GT 1 -2356217354257470126.4702883088800416413611921314198806 0.3307328910057823367503366283161430 0.0986010254910483334646446250229878 1.1038073063910336454851025623885950 GT 1 -16517587946137.2783201546827843512402832506515491 3.3893057939512353984972286853984248 0.0396200608589130459890545682406821 1.0404263028778875242250573710469974 LT 1 -2735696.0683532454228934593408731149975426 2.9716890724147416322068695534519671 0.0155024901152593398209886905259226 1.0156239102258704768333600960738114 GT 1 -629879294588900874285809003032132716611648.6078213227368308591395439238791096 2.5754851793783475729367864866556206 0.0686901556176455908993749494078410 1.0711632489291041591997132381103836 GT 1 -34229901461251718158445183412676637135.9714006400048365728397490628258184 0.3511722705565431968161728726798025 0.0738694982987492587223243141425487 1.0767401237028307523138557849893358 GT 1 -65303232979.0674452166477225541701614890031522 2.5698415570513303413085308630754804 0.0993576815725618353179644002100550 1.1046470830697891798662890658920137 LT 1 -636.2701493864127677515894245788877139 0.3658540472726064886035424192638092 0.0314377653191396502342458475751938 1.0319425393654613032567410097168600 GT 1 -43221833435823829932160366117387021.3740094349707975228361758348795751 0.0890929147993367192079302932924354 0.0107012238206973089979156614400733 1.0107588937109347696779906272914456 GT 1 -103107544956849996056046407.4690354222824822239984205488239003 0.9525803560301285642129706881076989 0.0929604594044368521582545110704099 1.0975692348937881249965735301719709 GT 1 -11298995.1808258782355230076290863948252049 0.2086149610285231440764251497431955 0.0773733632691780171499432650572748 1.0805306368999193324036537396423346 GT 1 -127376715587184424053814.0376604380942989242385094863425006 0.0832263890646233139998232648288324 0.0250864759442660209417883422024687 1.0254065051939413561435398892983903 GT 1 -537973878.8810709784396621648236562611739130 0.5774185721440887107812084572738053 0.0941230279161083799140173941270630 1.0988517745616662928940717888336320 GT 1 -5514.6664374573162227818607689425206410 0.0376258369773588923528727479950661 0.0530850579823005221999883196301706 1.0545460081850908019498430293139689 GT 1 -14410573474967326689494623183794462543.8877378444743531771718313345246818 0.4665163630584868745209244293385593 0.0811185765666470465821845875588259 1.0845981927713282302419952207664564 GT 1 -212638496463779776743404831107355577057926.5761785149492006747083874843703894 0.1568563771725589011698715845263079 0.0506573996500272544403286646200920 1.0519855335614183878036190528373380 GT 1 -2987530314226801.3255549508308167005906990225998851 0.7466874631820875026571337261642957 0.0504832781505224970810543553820610 1.0518021376689927113132511638798385 GT 1 -361941806354305783038.4969712050908890569068340356626656 2.2274647557170704483972516376685138 0.0685489724902639012145750149222770 1.0710116641177820003628351926907015 GT 1 -23808826044862704328058265.0675943194644739786917099028449966 0.9971845284950636622768749694268593 0.0892083191865576441790278869934450 1.0934410787676857051018509579088135 GT 1 -867617281660036.6424541703842004067001257237390566 0.7935733345625045017834484988664203 0.0916978944158760369675721334271910 1.0961782403173211306327181253552217 GT 1 -24837999787429151680978843929479.6373849036649652615085315737059496 1.1458039998235326986744006531841289 0.0698081220608358215687702074449951 1.0723643937512621073085360715057776 GT 1 -956044925422760345.2545507586483763392649987324198686 1.8419009814940294572106613412817356 0.0230136880799717453038259659831413 1.0232826373547686540991718341975531 GT 1 -924858796225911494289474897998914834109.1613647033831318617389712750892401 0.1543333351697191165593621271034145 0.0124619173654041921922716735119992 1.0125402182571972060415192530430887 GT 1 -15907401926128830.4333596413229224171672968879389490 0.5124260639686645317226904054029540 0.0511315567093721002809745609070344 1.0524851166512915349652856296847003 GT 1 -292720880.5265576207960018776891783281893405 1.1556247695264436302526233837834073 0.0570357853080775553566413887643504 1.0587269454336124288358468886423142 GT 1 -2789880827647813893961367556.3529726757876356995573752604751115 0.8612393509057151893150833148485985 0.0301128663495725599110983348924770 1.0305755713161315906246956232699456 GT 1 -63550925873943713.6872040968719116847171217007439294 1.3079419886825031894521695882130597 0.0634863147934344972826005861233663 1.0655911440637444619461439349212026 GT 1 -11929831934451094731757544999475.9491730150694407459419978888248182 0.2801729577851670773051730282361034 0.0899440850665225290904872319209539 1.0942492363770635244623394221107511 GT 1 -596555340173349.7261561581556598970230474516987201 1.4374715290992313023884070513276986 0.0868563830723478198100129050614613 1.0908621085369979871491901322240276 GT 1 -166551454649776615029.8643382013104096238009590781797823 0.7875815649975236829487810964242068 0.0932989679909073013116257354099366 1.0979425061272972637972592256955632 GT 1 -168919624508416056467.9272665200553021132709262454728384 1.7507413248019920136854378281895532 0.0254453069334218904508086143817877 1.0257746373748681026039411219596235 GT 1 -13567333193586244939015122.4125949597079415010673254404340349 0.4857839610753222216543535832458417 0.0551621880573934089034458081155903 1.0567419937920530216071343904445187 GT 1 -27897738752405733223.2160863720043696147056254123309566 1.3832598193955923818197050102716244 0.0560255985766199321149954039607918 1.0576562303405624779540064448643329 GT 1 -6010877777117440862391103898662333866.7877629692242685811898040527101965 0.1394383224497549389664777608615028 0.0068699755666695158989398516228881 1.0068936824885178020383950310838195 GT 1 -112503848862804.5587395627703653556560806082211016 0.2825697308866306176304781009826492 0.0483621925313560699999123203292916 1.0495707709215453500017654707367408 GT 1 -108968999928627757067722546099.6126838948799458460251976651840931 0.1521160350982359092226608970886241 0.0952841521279219527136539205152615 1.1001343648361778652660776905490586 GT 1 -690621815490608884822975924792145.4627711205984488782327248649487714 0.8178607198430339620752280499715434 0.0246574235954067852139017098779355 1.0249665092819379217208070533130479 GT 1 -2259738643802528222907183367080484.3662384498030136018545250205208000 0.0647598895518146342470897777823419 0.0415146797537884170170037615445346 1.0424010319541345566533503867463691 GT 1 -38578378641533036.6620949113634923179912376582562166 0.2245099898350501740312159358450107 0.0993470400630374911063047821778538 1.1046352676726665819112494647980561 GT 1 -247158845077897642701775712.3073882655599722694646076152825089 0.3089279161120070044352318594095978 0.0687548439969352971992929031472324 1.0712327109093434866313373625866700 GT 1 -179960687796948346999869256637322814276.5320663207886008120740885923784125 0.8375060749264822867441548473553838 0.0181375852380553063667941782751180 1.0183040876106595902357266784968727 GT 1 -89777536971334324358866563541603248.5586656336454041259975831326414759 0.1434263195688835644799013077956312 0.0019004879167649820775268746952581 1.0019022961352873714772998987623339 GT 1 -129035763319693770358347791776321274522948.6029342268189815678333001920199740 0.7764718117940534572819048245803387 0.0337569961006655123173349969086398 1.0343399195731243778764507947340868 GT 1 -8768418247504835175.3898747580704628093896850656247736 0.6162488198293153810594026947430872 0.0728018455579918173084398043474589 1.0755879774223291131767628946200962 GT 1 -835832261869474494139181600.7622343164544096233921301406970283 0.0332502757798976918334128049939321 0.0269143398636108603227514795510954 1.0272831635320274102859548088178995 GT 1 -2936315865100.5251525690630735908805348061916106 0.4415570698621281585443463522026748 0.0835010551911693014030709740434094 1.0871943630300115391228722987312296 GT 1 -941403346921148344923940408490.3433970430605755610695665066449568 2.1028484133813549404490686665179668 0.0097932615000086623438731206366191 1.0098415308871077970583116726376741 GT 1 -363927101675762832701803148.4302340599983423242383406591423860 0.5442939331172134527685231380745923 0.0340185157351960247482939521774382 1.0346106123810557017940753929592608 GT 1 -3242709456522740723.6460403220794033025243047846999080 1.2161096166576509655636583666774735 0.0154774139781386109974662050426409 1.0155984395491879835248585100691314 GT 1 -87928586806.0239938353305055377448156974772944 1.1432573412940684038741864378887753 0.0242298838117009715274615706295013 1.0245282570044842830280395742659810 GT 1 -15325022431645785531723517670422822259163.2681181168684012729112659964465761 0.1964679014376691676989604826964180 0.0247860882056179084483179732681811 1.0250984353360421389585959486787341 GT 1 -30989100.3785271119376170519859219015506257 0.2865122014882855332514727454118586 0.0500719937107293451738555228443376 1.0513690801126153617271131754085016 GT 1 -4848035545012339376159702236959260618987808.8793182867998544838799085757078247 1.1185452726806996234161521253411675 0.0133303606751934798939016217162779 1.0134200075074834501721947113277982 GT 1 -72797036582.7163369083847541753015760184854191 0.6172939995826683809334625942503199 0.0717048682592855661576917363047817 1.0744055668637120484331471356376169 GT 1 -66625826965.6848334741194482891848100404268325 1.4656944983445544358693635830476298 0.0468874418485224426665259823192894 1.0480222730142735196035753172664596 GT 1 -1031805726446880542.8501850854827535679171394948980233 0.5006456553961922699947779777159030 0.0775154927974084601709876459042475 1.0806846975688160228753701916801119 GT 1 -163142585886292875226756541.7120884410643869102048920474324975 2.1481838744412157753304918788390049 0.0432912410753190186690421437908878 1.0442562609885289511387437512305556 GT 1 -30107385688624856413242414223.4364744766792087520036744774799061 0.5220969814550152820035205726598011 0.0338648653302350628936051637419752 1.0344515635909577300693871021980453 GT 1 -52.5085265182455826244128104956743695 0.5115503023818076330591523371720048 0.0620135865640203108681476947060191 1.0640198146906451075314053664373301 GT 1 -10562222011386.2558686224010727802490680700414792 0.0052015402030914875058189010825890 0.0312065268906333641150673586682968 1.0317038238537206792340814431574224 GT 1 -439.2924064307164566291448466287448661 2.3415402830989826053697929054614531 0.0494560309268174957881272978483457 1.0507208592354168539704350859298047 GT 1 -105084568379569893238649488405532368499356.0593959622663815530114363693517186 0.1183823561578374346613554482939315 0.0454619111357657913660179302729082 1.0465277320926097550136971157473325 GT 1 -1044669002761270779199191.6239853052903365463213408185142437 0.2251151588784110974820986016044897 0.0801391498675181460059293471142687 1.0835328702344620004707733820713457 GT 1 -315008370507809654723562545615435.7543576650644281049867562420085446 0.7867207632051064437641362988814028 0.0523879864871985539965800802225331 1.0538101289467157668906919112010027 GT 1 -143306195267440657112817638501.1879310293945408637909497830570919 0.0801469759686616805989855750758896 0.0444853109699220853111981145662459 1.0455051422854086395338031197655148 GT 1 -54790028387497.6419298071277480032709017845286354 0.4801560776213394573828685909762396 0.0859414491640664466189566736397300 1.0898606495841900016634319411989295 GT 1 -1590988524394057320915262266346953.3983417207856738431558209021210478 2.0015556741013723513244277758551842 0.0410107442551003539776802970399173 1.0418754077642754602795892307662851 GT 1 -16274285564914291004.1323016865804059181538509200888629 0.7432645057566514116672030681166866 0.0658287114024326856458759846172552 1.0680954650648950137695170840006555 GT 1 -1631275039348040.5890799216668168389921523665144073 0.1475013981759110632071024133277363 0.0327022247941941194746572103292919 1.0332488938006166523882836283075591 GT 1 -26.5280767621842432274319780611444339 0.9636140481387222450039345456352098 0.0438482637533904746250440443055185 1.0448386586021783942894717760534133 GT 1 -53878960.9603550194652569711296943578963737 2.4103741690567460699712434838703935 0.0686913232661491595490698123160369 1.0711645027000619064358877709340164 GT 1 -76923353.7756367422290036367688874663507922 3.0091486717876650536244384065989672 0.0012009092796697451993844997210796 1.0012016309490495718498040859094116 GT 1 -375431718484036780686585088315600410695609.5814510745853147917222789048035847 1.5195490160099316096671379614045349 0.0166335534117101449621200388402220 1.0167734443867884111030541295753884 GT 1 -37600109419763610378044.0969780070091359623682544655902157 0.4271824608698795316404679918288894 0.0023808542936783174937815017780452 1.0023836930339085228720837486999777 GT 1 -245596921946768106189009231501191783225.4033006879655800010680244109267509 0.3500508814890677180381113478563495 0.0489449698771221638024232226417934 1.0501833525768460835989595270059793 GT 1 -99953739129300024359313118542823.5410702177259284237556677479965459 0.4605968672434961229090208372717702 0.0157318737784380303639831982871191 1.0158569330499281994668648032447654 GT 1 -12822348453754153.9148393684248102481243502201480069 0.3286554674997868301495123332229326 0.0474856204592739235067044730776625 1.0486500754645504596813033006757593 GT 1 -5118272919951824917783360202789345244.9782419422775959798647524027643923 0.2426646849051659009354898348760246 0.0342887647461074166497704981352887 1.0348904177661915953144672762760801 GT 1 -62302782587029239593.8236911608599213004896621037345694 0.0238845370501104955777735775543129 0.0754128829334031735393148318273469 1.0784080010459617122600990879407355 GT 1 -1648639.9568935603922827777026651479282644 0.0827338302250915800216378381545620 0.0500269585885005591320682469394056 1.0513216722517778496363324427531634 GT 1 -8029797375740952393894046502690592.8197365545256193535973878846070588 1.0908526846502239083560097825699565 0.0476880898896589473568836065060486 1.0488626611814187672773018305943240 GT 1 -104956814828033300927534.8518689468517803206155284934421635 0.8613166813278345102129056845171846 0.0586462642943290944901813680963369 1.0604362953636991823188261494483896 GT 1 -100800358422768436040244862738579897236680.1019220802363480684009892278414776 2.8507343870802852800291871261555459 0.0866373563527820239696394156885631 1.0906222771985094883275286826672779 LT 1 -14078579.6613908183341771082690993552209587 0.5862459130304653817532528292928851 0.0533243685862287642038671278383591 1.0547987667365538488376915358715551 GT 1 -100624869981606525.8127305244687863582095595349620736 0.0452853516058345029391208283772528 0.0685145451386072603026561572303323 1.0709747038113127843515800642913515 GT 1 -1705828149247366867543164428484.5527388487865537412338865944186548 0.4613464351467595579418193939597843 0.0500361001781170356514806566727244 1.0513312952970675660591582521297744 GT 1 -291714049584902093680.5850006791893260163714416732386733 0.6652299909087168939347184807973944 0.0904303900733007695952626896394428 1.0947837474747728252357567646154493 GT 1 -23443021964574658.9530601651479527147284467513673709 1.8804450053082240113058920236258531 0.0393893600375101691768278004572915 1.0401861134412275638570457851253766 GT 1 -231748579656158732426262381775105214718.2240019274103041879981488406330720 0.0790189412277992919603201607501641 0.0783767141267830257280651316860455 1.0816187225701952625032157006432720 GT 1 -153144347208187622916218.3238293293985892055290101518247386 0.7562108133476751215918197924727880 0.0416468688765955673760551890411554 1.0425389560686286626159640929119013 GT 1 -200883479627022170656926904795.2515236023089580636923645137843149 0.0334833008553863147247100781976722 0.0508808445206549355617151981230750 1.0522209292663604134316887785061405 GT 1 -75153148132978347924.3855124847718523498011178362730006 1.2994257439435716228924441108115957 0.0021129423339199472561829717142511 1.0021151777459927908649258259870414 GT 1 -891.6537415399325187722240044998157567 0.3920168679313588138795556854444279 0.0341919585516468662608609585293383 1.0347901793728094820339535240349487 GT 1 -2151284858626824426586717989180504662.9881748456976214077120132277069173 0.3726331954703253022878495754220078 0.0955233306712810762009277711206777 1.1003987684775577039506610222618006 GT 1 -71011118.0780484273360383417024608416475073 0.2814632156737730936332649246465079 0.0737771982336701846490449167413868 1.0766404666179942044527292969692199 GT 1 -8170.7734201433297363485454489851403005 0.1325831043664589004130136412612047 0.0443330931327386912603499748688920 1.0453458504234191586788585185891681 GT 1 -4415481834004.3504447088373040962666011381369158 0.2625113167196619427997144594425990 0.0601369707399428475234415750033720 1.0620211278884693410917592277644930 GT 1 -13322694854532160249183926036146.1627255187642989264196421449573207 1.0713334849226854245080231028239427 0.0287473842388296526770098757448295 1.0291686841135123061592370991651502 GT 1 -21400725935002.6245800063549551523968251661941411 0.4855595037727565417869607534299539 0.0762400576035545605703540371836088 1.0793030436962446969445017242383084 GT 1 -6653746912643746788961071250448880586712654.5869212531200499497497432706355811 0.3170111966966500229686249173227632 0.0892426196819306145482866670683847 1.0934787395654198245293751922894939 GT 1 -367009675.3295471316745693218091658852267688 1.0828122455257224940413507999479729 0.0405434948519882819120205673962783 1.0413882953091038119451878562028984 GT 1 -278093516269659118364391735622820.9236752037604237849215100645494871 0.1432767779092923767947145769251633 0.0420364723856111599696946671740096 1.0429455731197377558498896482663562 GT 1 -1108470369818459.5614193881268715736712350477324458 0.1582668042877544735993389502578614 0.0446360080610816099344702125378512 1.0456628677265606843297657741073383 GT 1 -76696744863805185589751006226781.7424331394745094289467551312353784 1.9276200040165165439007059486891582 0.0419931271892324424469892131793966 1.0429003269130359258784950944376487 GT 1 -2191505451616796875847759003014.3114903926925959647119558204327167 0.0124677095392535381399279053738243 0.0116831373122927216414235478589407 1.0117519214287445145496358593752727 GT 1 -29772291706450694938067292586210353.1312676333972971401400544160130295 0.5146790250841678853391061156552872 0.0769465442085659843672148303951992 1.0800681308893167872066157910862771 GT 1 -7229799897917292860487605893.1749274902213301869876594739791464 0.9038377687902888610435626814172179 0.0708977099158216981710434192370734 1.0735364384964718443179016125810218 GT 1 -399724351045883422113156766.8601906536824789475965437667183073 0.2827979874989592054307563343908039 0.0559246354095045030343359566548788 1.0575492806520224103115135419752612 GT 1 -3620274743866186396923634534706099684718.0727818545567720693413882251572187 0.0904499630691647503834740198146618 0.0421905392269843577004819328123481 1.0431064135143348429449248013448918 GT 1 -20093.3496507703030927336321086565278360 2.5599958421743566912553303145813109 0.0717269540948346615926274205359806 1.0744293589719858657840511649273065 GT 1 -18539275977669908122922128449929792.4163420591390578696428540910532620 0.4308719572542899960955457953199332 0.0872736449377381803315749235997309 1.0913191639451653402209252141559705 GT 1 -31.0723651058354112974110121250231570 0.2548689808671741645625353491122547 0.0983882362566317944474817808989629 1.1035712687115124027489407404506211 GT 1 -1086082799816154030990722740144218378393.4834665145999278496720580213249908 1.0807195032002817399869609337071911 0.0568352934366423538688024733254331 1.0585143492850343076733907388370871 GT 1 -23567995776927844763777528347747749991567.1251881959181619109707080631628702 2.3849985027344356923290946926352646 0.0422206849645702427785329824881140 1.0431378876365150077406945504117171 GT 1 -10649609900234.5165932122713895986336985434732715 2.3087473417780897700937780466044025 0.0876768742379741568365879898429102 1.0917610470952211885364191121722217 GT 1 -228446439292713.8410673204227687306640906103645520 1.2252106934233403687119632093765603 0.0231005804108414099696701313969350 1.0233715804587851122714974532656972 GT 1 -2387574915949114111775.2237321585330947456870366087708036 1.0931918450703739310069207772189501 0.0482680953083035957738261652183884 1.0494718965698858060977022453693900 GT 1 -601.0564186582155272640060892284792282 0.0383502674263694463826780646281007 0.0674125804256153876030127902793992 1.0697923843253396549972497847261782 GT 1 -45701913143299641590710356.0727130725381263099066608276939367 0.4986494835398586145851062247812700 0.0302197152005894988813919384810199 1.0306857436581616573927022892002095 GT 1 -79953856256.3038273152567988184512152964200461 1.5996469512776891188588985811732925 0.0406654326508922465505173763038101 1.0415153938773803711559173192293796 GT 1 -2012633229918301943813.1639147593919924573514664176274277 0.2226823787855768343974261614918017 0.0003776387624496984953540197267490 1.0003777100859240550229786909079651 GT 1 -231.6418172381648038035638324453398240 1.2947253669208343130960770602051938 0.0606385201090898188925936354098584 1.0625549112428405759380772920839222 GT 1 -23980206742008723816527847211.1548446586876296036210995149280979 2.3011936576612581979638172322505986 0.0975557669566122033649489913609173 1.1079167275230268801105961603927296 GT 2 -267488.0303725111584779137238993448619259 0.2424461247424141360654229764799521 0.0099283661476149404104218708218800 1.0099779810445221903988093043802155 GT 1 -52429402077.7429900216215906700697296783163809 0.0190283404893699984389577529256208 0.0865439205448535493391883242591767 1.0905199837341078595929855444464114 GT 1 -490088373060322194655341574749204503.2342667314336220594831665226258947 0.2346396857544986055101082435829892 0.0193431289157585019367581197765000 1.0195326552359897296668873693498707 GT 1 -517415799342385348583672503042569252.7798543673607872714837473100985679 1.1761145495533531488790593564242580 0.0126017605179841543353983432325917 1.0126818361425412836341597493743334 GT 1 -215126168241967313199381607868428807936.2817991099066620052300707602253091 0.4807229223296755841964028561357287 0.0999897628565113189687996131682394 1.1053491411186403050914387652694813 GT 1 -730418579812650340.5239017049091521388651528171286526 4.4174466559806606410793669187050409 0.0731709076679921713363234168576975 1.0759860968302473991496990392315647 LT 1 -469894625489800962336036828751.8300943520956686426818487980454866 0.3096578137670258148048328392399051 0.0029159269049500368583776463084703 1.0029201865022724008283474766671327 GT 1 -2159836074073625024805439575165012729.6556784143045726862144681003344364 0.1780777312857036221023880276056683 0.0270431479256792670689592015356842 1.0274155430267694718802610747404798 GT 1 -5897729375894004.2794803775721331852397968516374479 1.2001831446546911654750408167716838 0.0546591307079642492134501812804549 1.0562097082824332832238038623343453 GT 1 -4214918581052638.3760688322788157325728564326509516 2.5047062240033693920352992454224662 0.0685280804044456043213996487054489 1.0709892347565981296128147339752967 GT 1 -2473317245504053268919923827127855.3721982386127255131494412379168918 0.1339811730684131102253676568092018 0.0518411376158547388868932430325966 1.0532332144118805266105431478756773 GT 1 -754103146021685048335797.5399636147659924117428679278726536 1.3946586783073724729647549249311061 0.0537319439317865496966898452070008 1.0552293927023989302028324240525262 GT 1 -100093642328307966457883201263833.2079905296715027629639810766018935 0.5489030095844793969476249419747768 0.0396527645902995137435861339828846 1.0404603563674439228449055217030262 GT 1 -283044772400638963410516198819427130.4476008578594818421207441205810867 1.9287270703230967778096281329596715 0.0878812535634175342091121992061870 1.0919850929575889611897960029299407 GT 1 -987143.9834264647825444856199688633714878 1.3311179100372433778411229101186326 0.0834319787286172536044938480355206 1.0871189959388326973717192004182354 GT 1 -6475745317916615947821061844666100199301.2104922262316316411549605069742363 0.3257939764366424687976191053664114 0.0942285976322759500626110540021712 1.0989683200434229508902816004076838 GT 1 -11231344209308777745054052.1229354816843114718955781528290095 2.4286945839034528941131067112814248 0.0874481090347118079058669593278888 1.0956973984267018275366057501953263 GT 2 -609410409451058725794.6226806776054584804121307342476323 1.0659830036757606579467704940183426 0.0592100138687239379578187058486190 1.0610353458875387053185296992679288 GT 1 -664746994712113161698595.4899057702767910606253611947547227 0.8754214241216624367790102632002672 0.0220297761870761881927382700856452 1.0222760554098639611785253167423298 GT 1 -2213453186487.4079576267750978613341262530635871 1.5716975345073631966251224512107760 0.0317831380874466019950875647418113 1.0322991858953368921279346547895229 GT 1 -23687125671562475408575906154.6658850073517055929189050634198593 1.9794449060603245542096462327289614 0.0494242548169711163128312899317247 1.0506874303991252156132685565778611 GT 1 -4.8769466247212089084053166449852936 1.1155968612925849146639250670393226 0.0518367626212739284409755995796799 1.0532286002225702134665481967525987 GT 1 -496051472536928021434986694480.8572719183247954901418455122203894 2.1176793372881574597240111687550031 0.0857248592765417280306791109062260 1.0896237235902778526958876044066586 GT 1 -48826914224399490567610448779285783711.8873497728802384576576189160728721 0.5445450835839887807776710620427464 0.0324459095211219580355788107502793 1.0329839481692560599887399512905548 GT 1 -28526491491271992.2035027870641953715139658814895064 0.1036394480112658580878368192405293 0.0879757368036370185709323448893968 1.0920886848797190031727975303108119 GT 1 -886675700406983180622949628877215.6532415527082009722864693220472607 0.4092778396903138803240749869515529 0.0141655293066344147077440267006146 1.0142668180941956899410858430538742 GT 1 -75958432897937.9371854619198357796260139732789500 0.0498336980168172181299833751815146 0.0378587126918499192207554517020257 1.0385939707968336825723174470874345 GT 1 -20873158192542051.2055995128628139381817554653429535 1.9271211902174103945344359456715238 0.0100683977813853308617602730430905 1.0101194269082993909069839290741358 GT 1 -25739936305114500681015212.4723278349104532919156737118506464 0.0272840997929733017339892413088695 0.0701173398156851062959920714074959 1.0726968726399949259282622906288825 GT 1 -57799200573250766118784437411656235237363.8607727622713188529263354942512187 0.7879704626731909076965597792232266 0.0285992247544226420229059719790211 1.0290161510004205359914123262514541 GT 1 -68710219743937693375054602392.2387743035621849056657607908812653 0.7120096480559435279344668654784595 0.0873997528363644813878782273787709 1.0914573396542939551058834909963359 GT 1 -5336693317403622006620053475086138374458218.5670214799389133857208649759226907 1.0224623166829983072345260943882127 0.0540323932347967654120991797401004 1.0555469528366215485421707538055791 GT 1 -11371989682872708135830244158.2844971654831698364775402919235115 0.0859183008269219798425330741208222 0.0986653213030709196544615642270257 1.1038786378513805563957068256483555 GT 1 -9252620814154014451.5255346853931441470353995826825517 1.7880567583604223593617629797983480 0.0052438481121136471423519882739370 1.0052576453384680206706552627398917 GT 1 -15764478.8779686253552091361213269220547463 0.9697953693917141730846919440884721 0.0015326345215281462626853307401454 1.0015338102072343198002376579768529 GT 1 -79241890.3850140504284900660693807719787006 0.6185854790468572690557428364943358 0.0031419216230429800164813954441659 1.0031468678218822222263153398932502 GT 1 -91089667608123254673.1270571881785287752826193270631947 2.1498652795564901265894321890235115 0.0706930168089982431878246744126865 1.0733161499835002370786164361575746 GT 1 -6429434375916961.6417605937906858601434911476921862 0.5340274384813133196435269786886606 0.0505706230630360025997790889122550 1.0518941307093753982620370043445771 GT 1 -4692703701237464105979885883481390290818480.6185986047413914288049559379486697 2.1824845628948717011915814849189568 0.0416091469955018275511562322928969 1.0424995956935227792049934733227641 GT 1 -4192406359.2594094533917000204205068372259367 0.0187392792828458122831965319752901 0.0053055624828327236318316920071060 1.0053196869604791789677696620151596 GT 1 -171910812790854677709932238067482654064.7558671950309521118935290910358052 3.5923329442661347506827576250626153 0.0205164389961286927964255936047635 1.0207298247870040609023274946550457 GT 1 -49988088606747668205256.8102058336694002537059965035097190 0.4522592825100300814327072861321722 0.0457949450431506480717874764154053 1.0468766883278605969999979055434790 GT 1 -31923453308872163506611.9862676067474158840789112214955734 0.0977437611843063700544271169727713 0.0426955931434602949717028240048174 1.0436338536177367490920465596959876 GT 1 -22714913306682295954315.5157776977001148590870817498166050 0.0415133847089171542688842983457741 0.0178177836110827944031099701483428 1.0179784314369387130376990776105687 GT 1 -149845844.1585894047067472192500779194972461 0.9814183588476847670158488436669519 0.0872039997143201386570684979624921 1.0912428622518469292872788117553626 GT 1 -169791979590858937807.4378366926343469473464852466340013 2.4096060405123465138870300851075167 0.0668253469602394266402081172586187 1.0691629005413284277630711449684241 GT 1 -2231146377562878915801.7802839497713010410491528643104054 0.0538395874114003235347598582918003 0.0222467113222488853122404287277743 1.0224979018361884509884767669790457 GT 1 -46867775322111323.5612829185775836899350805485711006 1.0457894879170742555079539963818420 0.0198437964403607204013111631264965 1.0200433286315899642888738416939618 GT 1 -89942519101.6202915274008339173790321951155240 1.7309129817034638210170368035642067 0.0036098337902725127745236442876153 1.0036163649626376323407825805550694 GT 1 -1581002586403354372319534161533.4909947450096621155921373851857720 0.6471635502711072077153607058945380 0.0621833902700054550510635760188215 1.0642008611058090687191726081016425 GT 1 -25129.8830405192960994827645625653443994 0.6473578838184210217479000712648182 0.0613655554536184708661209531719016 1.0633291785044347144440759958819625 GT 1 -462093515830131631787.9557381398661228526362678382519704 1.3406967218338770976770235515188999 0.0470385370334170958244945996014787 1.0481808137462042844044730017736337 GT 1 -78641342965001499221604322.2818178354621959306156362477781432 0.6497264741105476952530111566614306 0.0774268856475261130908582415613655 1.0805886494574559179829838767689770 GT 1 -13149699749.6005009935461821013957370150797001 0.2730791763686504836082443637090146 0.0286599383704502026766051732120045 1.0290786540527010276872419514903094 GT 1 -2436680668892346062020.9498916543860806022560863746697750 0.2963578652993504284172009463557056 0.0373597322291180253689520662985503 1.0380754906892149590833588475431814 GT 1 -128.4043931346883596869343000164200569 1.4110882358053721231464408867011888 0.0055933922192718264647480112098315 1.0056090938150263392996955035954715 GT 1 -13763503928588397045546067576915187472.6994889791176533087594247707269219 0.6192112333535597705263239946674986 0.0110701595856894542168316900077934 1.0111318898006433616002691630731580 GT 1 -24169225678.4451822658752131651049693517440705 0.4498214536482466741346306284883997 0.0496392935984618479881969396732155 1.0509136755029304948569514583751966 GT 1 -792231.6218710566153461943251033174975622 0.2889907034232536850641734985742650 0.0182413888516598845725112952970609 1.0184098143393221658213461884984513 GT 1 -1021048321631530728759943464424437058952.2187678405049399849703618352047532 2.9784267550385580136856337396349954 0.0690127581302351640070700271327971 1.0715097054834294428190474285628235 LT 1 -68399.0762679785645558361571144485357762 3.0629815665682879741818258027719040 0.0610699725322303251218082063938984 1.0630143206891790226295922714021298 LT 1 -199746820502693553911126.7424980175143296507771680826213296 0.0919032765857005960906261801514304 0.0912721814199328144232090065633104 1.0957096591474997603595828010737079 GT 1 -16877288.0528708110512420585746100557837283 0.7979472651783774403351219512441317 0.0535521568542578066384658642246204 1.0550394148212556037101813597704582 GT 1 -298281131127793118.5767040981023003175159072782035462 5.8083487931028891612988300058673535 0.0101364521569643534016244670723213 1.0101881758145725553429447307218789 LT 1 -1261618573381974889925092868035896396.1669197902471604417644637166003643 0.3842026566301148962023017039501087 0.0791413025966768706627293858195229 1.0824486775121948996220652356061789 GT 1 -102263081977992620226431309285127429195.2208040167009729825942677982894460 0.8721442334016392038131635222894312 0.0107594362663831446393328174081045 1.0108177375706734341786307193966713 GT 1 -2093.6101461730109192909856081777715244 0.5200860226164906721490467761358235 0.0005643148587516611877341782614031 1.0005644741443091886261620978088768 GT 1 -974532.2452702350799385886073471035657125 0.8432441368530060563221177718965904 0.0186312370735654383367916090081394 1.0188069849276177828500405264099022 GT 1 -2260365650976.8897702461933164447598843368715686 0.8186577808784299458628911175968149 0.0223705564704963253465617329980080 1.0226245728416884733157402124400642 GT 1 -4489920051519958298868956243582742.7390671823599430540001130992229198 1.9013329875629299194898295688749757 0.0569876337314414087523545746385300 1.0586758826822159223579527505669479 GT 1 -24189631196396133526980360401.7688649589407846432098765441404791 0.2891690479789402077398567387600643 0.0494124009830172676912294999275802 1.0506749603144371582680877534590940 GT 1 -71484073780153.3436958382294285941066703894108003 1.9590741314823234613472321330166583 0.0090966904394936241820213504679508 1.0091383179687724425909671257918234 GT 1 -18191242825310814995212060176389321043616011.3060720927110097725919148840631862 2.3399234081713370388997109913238341 0.0837522608977687011083783578784380 1.0874684933398658734436657035526275 GT 1 -199807962066629982303973594908377.4913870210685079478830720998319711 0.2992608326868130136089441774910789 0.0691844560122906238162188481327458 1.0716941480934055931106966068789425 GT 1 -4053434427.5008832907006522794059001992650993 1.3672957767621016468790335310972001 0.0702211858575500961437507041432495 1.0728085553773173451305957009205769 GT 1 -137443499340676.1281581128872992476996493191347014 0.9433533703638648276591410331870966 0.0928027145025338573464270216315063 1.0973953381896403898116867257329070 GT 1 -1054103818675842045575870105212735217598347.8156471143827077022545592037123455 0.0091743749059289079912673294066612 0.0739826214425265663963808275899039 1.0768622771713779498283523285695495 GT 1 -35.5859070705265763523924449949756551 0.2926200255836091341356528940845080 0.0264988925633470597992778369628081 1.0268563165879381039037932373501709 GT 1 -5744573961410430842370156536.4201945563745145180932871443144094 0.6022330963594017658712519415186720 0.0461577427674230818587654925328829 1.0472569700182850081398114210906199 GT 1 -274870.6892485619568101334401634199483395 1.1162088577952007521416728739776308 0.0763305411534909943881160765880145 1.0794009998616580096531923277966653 GT 1 -26451779212753780097374460977066980211.2868428984095462264386801352049748 0.0124608405444240340831943721748278 0.0366144664791201035921279736232991 1.0373016009659377510059012837470210 GT 1 -596323728005651361.0656917426005987438813261171028592 0.9285687103954041866177272375489836 0.0474245071985217596604261247778206 1.0485859175876330925714126604532314 GT 1 -58846879363.4078569408269890592882607427519919 1.3366641100477254537365157908903685 0.0356414808373921418944601002113119 1.0362921456671430513055285010726563 GT 1 -2450287327152.1510417311007840502124946288804739 0.1044179068765740078704711975000721 0.0315148520884380024249455190473844 1.0320221313981929742837581684171908 GT 1 -270139873120114453799156572903912115.7398813214362059837413431827199508 0.6686980369755834757144451752341350 0.0718383316637302825043521595320212 1.0745493497997535570182763643552556 GT 1 -88632665740248367.6183473574214816962105890622590102 3.8219569618822396142188899251167773 0.0420225160524627690163499188005336 1.0429310044737675333880717252833602 LT 1 -93615824282.4223040262489809885895885239685513 1.0047165947170087073814779699031619 0.0264774050457963257390669267668233 1.0268342444195045910258836521099656 GT 1 -3175405490044.7315257526070978524362934545533990 0.5663601790859296158670890736420295 0.0876670192730331010086428140447233 1.0917502450981696842958126170392558 GT 1 -14932997403569044631429192133023288.4915596836404296007309256956287684 0.2839552119693366855862456020324295 0.0205142531572773173093392055340643 1.0207275931656686769522524128634726 GT 1 -72388316375015277504256.4064143524839676677144234116706244 0.0672743584860189428721671917753014 0.0090542085159463097692386735948739 1.0090954469716501790575061424666312 GT 1 -3096711179571481.5636522908035424113359010980086840 0.9150180845059170819415712579446559 0.0769962092287885194304759615565939 1.0801219374766552822864040568552689 GT 1 -1.3281927885541401804989396805151413 0.6050582020882419167793052866534194 0.0019617259264673249649207130662897 1.0019636526309624100273271303379146 GT 1 -51760041334672630527544327330937162269.1764469891241104224320576993047403 0.6578622146603918826458937754644670 0.0963935914801823627957458784837017 1.1013614022046982500425025604409983 GT 1 -64331.1866577061643941341084884217657594 0.5346906039500549265452546580084976 0.0002372543892599361298030783143267 1.0002372825385349950968924453449847 GT 1 -4619368602582841615605417975069225780684.2284420652712939219279658218778844 3.7223077789735220284270112543321710 0.0492911833013898805126233854793910 1.0505474497581770460034916964183549 LT 1 -205.1726891110180762319425642905855852 0.0812357412483718389403087395501160 0.0895534503557180681117517895876498 1.0938200859371158006758583338637798 GT 1 -25866905170463386444977993887240795612.8130860482859774946357793472838965 2.8178085986097598601094775632388944 0.0136638164697713762665912098625225 1.0137580255648962956934430807057074 GT 1 -50400426256326027989814.1177642368825848929878478218928410 0.1118287254618070073584594887679878 0.0484851323239867147575818849219920 1.0496999668545960762003165669317264 GT 1 -41864461946572666418501.1019199155049705105702943366214233 0.4664371514256104072133896398876233 0.0839887359384085124329419497963392 1.0877266173731433419138861874246464 GT 1 -89539192177.7230677735877159237238216329917330 3.0296088830339124136504421373807796 0.0931254971883076670374953417118191 1.0977512035873169655910238291310318 LT 1 -327375464500173641795469891.2918801455610068688885468683670391 3.0899868423347736141806796301578545 0.0062265126035452454440183108924982 1.0062459781769710349545575321445852 GT 1 -51427757247.9507687379158328277472784903585069 0.8148976657181833503005492443557763 0.0214696779649203061171776251208240 1.0217035043429652570727173006331522 GT 1 -116960896824103828552154382474652.6977471722899401412560667592331854 0.6943235610046383357775411918267602 0.0973417753126020336486860201603904 1.1024112859283596763411517302812032 GT 1 -355623416046.2202634334872835714820840521777583 0.1288242776310943073748513680380614 0.0358083343917537096868010579078008 1.0364651808892445794352182936655399 GT 1 -108405580146368712981787195365221104.6663784767026761436699098301244327 1.2587020410758285641628669598926565 0.0646551923571889570026793932590825 1.0668400394478222355137908045868711 GT 1 -353607.0054258114578188176034053713414322 0.8827288813473815862393925525378224 0.0271989300821104622585473158732089 1.0275756679374824636753902518579451 GT 1 -1154906400881541497949567367051607379073.2798826817849802365133940879171720 3.5082835279869226983675066576385261 0.0735138766648596639316450134024573 1.0763562108808776361495794764229576 LT 1 -108063036879416249940510.9663340299403497766718898893480350 0.0411906513865288247817832321719188 0.0497535982097513380231130226840502 1.0510339577126882489710573858394909 GT 1 -58671477279447523312562781547097671956282.7547163159289289748964269694237979 3.1213982917626474986790799416671398 0.0119472158329834375895231397129592 1.0120191573910884819385726006309187 GT 1 -686993121363171098075711978255296691745.3789980535041290892370598809660964 0.2444793562363798457050281648095031 0.0773622768044701536525487747082310 1.0805186207737221739914752803271059 GT 1 -541819423285580986338686658530339428.9687544854643537046754195611824330 1.8052542176097278314497539795675611 0.0645237604423126735619637991575098 1.0666995322461428563833901756696783 GT 1 -11565097315399212.1838360028867258715674539609148209 1.1518759631429994177094841220984888 0.0571005847911107102925572274997019 1.0587956667155028537798817163360904 GT 1 -520071446477044126544297685176215972.8117114571022498427489542811544366 0.0937368382653026888775838231041966 0.0113909138311325271800201329602032 1.0114562872058667548606230625571980 GT 1 -217501.3537749975741810419982282890679429 6.4612361561923052426330191109070665 0.0019364856530498659076890780450037 1.0019383630655051525236138561354737 LT 1 -64737091790332875822099002261.1733783642773416579018982566680950 0.4490151391913659945498022339362117 0.0708807346386902069149382299376889 1.0735181680409578420276605708151766 GT 1 -24068604561687640168654467961608955446.6809482300022035448830817804121271 0.4229755431084720658116298828533177 0.0689366610430305425550272922230297 1.0714279707679168284489662800655479 GT 1 -17061310062996953778.9289158044310018931722760744724750 0.1961098401039033207313287827840071 0.0400645720052751496358079579548954 1.0408892592879738422817155301214435 GT 1 -654568983063938842888794210190.0587277037633457592864273237666015 0.8365363712509803182761832590592308 0.0957959177691168292349809084635522 1.1007001893885333085565125259803490 GT 1 -1110093634.9799137474717499297648948842739639 1.2064155737036052991520474268780782 0.0836524745559664469206156183156502 1.0873595916703795899379408596462864 GT 1 -22679234197893690716.7691440851737455681185925369875329 0.0716134348777370902643653646799889 0.0527131118014265006281777332181959 1.0541532874309228263850923971008294 GT 1 -531550796622445744318144008504.7491573338609816549429758461195350 0.1202506719684975295202225510630148 0.0440122312622633148083985748476935 1.0450101602199707403251292468054379 GT 1 -467504257747972991772023269161710539746554.2336647864353935925315790639359542 0.6377473099493527690554567999109732 0.0573642489007141163971669548569899 1.0590753370351375752333387420584259 GT 1 -22235943896775300180026471569852435917.0310688843099969391878329793266137 0.9535337990572757293534070458000550 0.0135196033833507335615600819708916 1.0136118253675451770806744239545026 GT 1 -5893267800159503367495814510567436.7395321161050987577530176399062750 1.1131258254970872856518724926916778 0.0845879703317561082964671453638728 1.0883810094154235669526272368688910 GT 1 -22397400307721090.3253823781476801531662398348742427 0.8731675389534098946408329391493066 0.0748021418166304758417232624429592 1.0777476636044353049696347727317433 GT 1 -503012098944.0201057960332046580483337222183969 1.1137738429001266570535975677636399 0.0211367562429698667372947343593378 1.0213633359363872597671802092863821 GT 1 -7318056807921.8076902056492812246213411577202767 0.0325389231498012624434620258627562 0.0457346138869874426330266035393164 1.0468134637110313400508514939926986 GT 1 -26.0333257184349980925234170738824865 0.1888909523353135297130348307658925 0.0482215950142162867199879215026024 1.0494230391574933955076810256490986 GT 1 -5908588911790010875486994109449.7885386374136537604410687164646543 0.4909357655033531583234945156530140 0.0072025304270131114082243659149706 1.0072285938732040077374081431837565 GT 1 -2328429549052272597071.8128560281771825569216914686891779 0.0794373758224111196497226660731398 0.0534496493345305528519593391764448 1.0549311130593600276798044786289570 GT 1 -625487850108541452286011.5618562067879540833213346183794426 0.5685603065947547320074573931485407 0.0375383785573115017869014887697660 1.0382610874409580705942562012392819 GT 1 -47546293199515283224.2850493360908927482302295604776325 0.3043155695368226484979062313216839 0.0944924617729550207489621430600709 1.0992596767600852854397603212295924 GT 1 -162929152258.9683012046216584604287663596088243 0.3130959342567776071200178769982516 0.0878178258207620361097031502065374 1.0919155564661425336906619415474175 GT 1 -49525233139631.7640483336514241078416965710220886 0.1675842766337811150354927537973253 0.0791366806051487485486624211794370 1.0824436583057283698585114943489979 GT 1 -15519456.6009963737504179969350922610845282 2.0128450110912177424997522641459740 0.0924809149739315796190881943050642 1.0970406827325096987543442507472649 GT 1 -60817019.0238183021825952894727913870013766 0.3465323069766719463285430586789095 0.0159127376271423130800149475415093 1.0160407045886059241028009933792240 GT 1 -21745896077127.9774598629932373697432856339450959 0.6705377158410498392096030930009692 0.0643164869448796300380555101748923 1.0664779867602575323247574483035803 GT 1 -224179.8859180568024621092427092464788782 0.6306784410917081634810504861812936 0.0779253977605131394539334567662418 1.0811291452070119780082094662293276 GT 1 -33599128342496912.0206277128326185468552634298975147 1.2809642970572033169548689430889976 0.0667350775134147046002271788810919 1.0690661715091339089993879411133799 GT 1 -11141153252673465514844.0908128520148064989089768761818753 0.0133489390118999432470214050205028 0.0141158751382782728539926313601052 1.0142164517097850790938419031897503 GT 1 -146788910334.4618163781911934143045805759853192 0.1065193482651729359442489258602748 0.0254628077818798895304359895988477 1.0257925953260458769643083384347203 GT 1 -7542435484487733864.4170282756426024675147898881643989 2.1852313077555189807602333615814914 0.0648931149014229789262973929178638 1.0670944406135305146959332885026117 GT 1 -624526288243305646848906.1213865700236765845327838223382512 1.0537993451750388883219634230834875 0.0891230537296899772165469545000048 1.0933474662899142316496873976061441 GT 1 -34.0909605753184097271821370760540425 1.1279017035049674696606899479589403 0.0787630679139608524031820390250543 1.0820380205604314372371394083018503 GT 1 -163522.1678834110269573987029799524216436 1.0151711780886668960671321804509187 0.0639851492411165113870424047368849 1.0661239364350234091244495825896931 GT 1 -19569154254346777065069711737401.9592592092912737567413632059345855 1.4303460351789509295041224678508176 0.0842507345458924641274500582227433 1.0880126794484516977748025185430439 GT 1 -2551058945337266794807790640379192.9631991189413071118500671014763474 0.6068306181316872911265216939700214 0.0526265379370578123396096538390314 1.0540619002179936157419793657119140 GT 1 -339743388038761393.3903707684760081610423219745582262 1.2256476987420463816527828040101128 0.0418590780552799659518908997280666 1.0427604116783780858558480990687252 GT 1 -100806503141758270871147572260408500531751.6103517525794304795340853310672129 0.6854923293332935002401053675588664 0.0157253818478536712929146204625199 1.0158503373784824691756257849094260 GT 1 -3599077104.4837126448639920944820393327002370 0.6013778023857151796075813161204366 0.0907063719581891164279397278504619 1.0950872138170961371216042868402924 GT 1 -1107705946239448.0148835910795884410879604134917854 1.2738173732617781595405667926310537 0.0115842105587382558893160164329554 1.0116518302469344608654857862731692 GT 1 -17275261371396003155328742547072946.0501275857648070365071658276327239 1.3447393687954278950442640124627533 0.0852993719722144246355456891456690 1.0891584497257765280589483297874139 GT 1 -767604198330.7274914047278020510892891059003696 1.1463875319220073658626892844947283 0.0195481370001375684384694407893811 1.0197417288906655719534899375330635 GT 1 -4876347629526763046362462034.4932824363895059796239331315492777 0.9310180358119690561322748682564396 0.0619905133240481801340250065688169 1.0639952163000282437121603264887903 GT 1 -445298319.6247291359594729528175747000227102 0.5478881929330159007936436901474971 0.0743866306353239900269536662128541 1.0772986592088463349295430410293821 GT 1 -34676093902591583451509789512.3549080794706840621243243994094628 2.1291232723394974919532287077824399 0.0706028722869614927670164978311104 1.0732191528104928750371676136235369 GT 1 -69247515688316505229937.2430057231442121925209660488119353 2.2786355045652960602813178621737050 0.0810260313617336956196605950636586 1.0844974827748934676756525761946475 GT 1 -22634457143542833971250283780346061903.0015219593026618077798955968734456 0.5733606672629289823602388965120697 0.0854193190918298702318299595430793 1.0892895909769350173317883209554263 GT 1 -198324457936171826015.6765228508786181090020488325163531 2.2518185446738963315442744387075634 0.0595159712129712635233805060667204 1.0613606120045621587277955302438704 GT 1 -13405361755253082420.7510369730642295726672855935128344 0.4466886325072973168535746239821974 0.0650050660334437099498189707516122 1.0672141679257155026335305473443369 GT 1 -21490458174196225913802965515114532.7055008959766673362287277246729334 0.2622156270393150608947322935305837 0.0628297293163302423649816069583144 1.0648902942732385677905282537698486 GT 1 -356031982395764897284561497759259.5686146572388050879796097086683192 0.4877751061717042783833503677852155 0.0793213831319546785321825883499804 1.0826442538216796384670841893852642 GT 1 -14247351316174289170810643342316040117.1639480765725642413177289682754511 2.2972143718900123669013708444865146 0.0616340134784408427786134445650644 1.0636152285470552901678088338103426 GT 1 -3753230910581519350004563582.1554262723582608604429465149594817 0.0720633012236585247085106920034647 0.0186486927279860455808914883686669 1.0188247721349593805205426246232077 GT 1 -75945613372661763.5322234434813918119168349215037692 0.1793645767425590551887775968700539 0.0346825597479692977424884404432184 1.0352982781074863129315441157249787 GT 1 -3255238820825585022.1384464112430668192278930409486690 0.6617600417197193065770760209230172 0.0338340229826728110521604776289456 1.0344196406702717893528240755097762 GT 1 -107820053368322541668324.9563864426032409658792941217850185 0.1671438348946392647328154901739509 0.0417220063769413687460468449885727 1.0426173618707824107762109710018598 GT 1 -7840842889183991240069.3620855079319850112387178882256850 0.2478894592876508566832671772644230 0.0336464434190605837629664593414529 1.0342255111301143759486949287665506 GT 1 -413953689203973.5509316336759229445332380330154018 0.1759216035883701485246147154607561 0.0584727115632405943654936390579774 1.0602519473041513942608694231142769 GT 1 -23990718936184.6374559722070529096775250399877111 0.4026304399456439239016574038326203 0.0712459674713546530833047448596129 1.0739113410714160689465731485642036 GT 1 -611974851716952358261572.2807965434092988350448233564792729 1.4588825488436923863401270352820552 0.0432318764613129839124558725020384 1.0441942120402828071216096346779447 GT 1 -1337466976.9412591677638936694323088941082945 1.9147276608854732505713701867181004 0.0312073260923222155894472376094972 1.0317046487994296294223415803597891 GT 1 -49505012765764329075125243073656619806.4555086491976613824363824178120688 1.2101663673387683416660822152373981 0.0290824193536507693815936966070904 1.0295136951931428992604888627186620 GT 1 -261.3803670140000216003748128845609521 0.2884803052430501372575775826043524 0.0440827283061962119513337209035569 1.0450839055603239769149036075336024 GT 1 -217789085582561583997543608279211712209.4024469155647785965619041627596759 0.3464768382425079842322258807322666 0.0247465608704251929724670886604503 1.0250579041934117307475543487518025 GT 1 -2663828273500404602540866958996.4895306793944881144984080927170669 0.6189792133115879514453769827278714 0.0808709430676387193627838801382271 1.0843287345683941567519641726099967 GT 1 -3111107546121175559301201470926049043604269.0420667933455949547156806663903571 0.5615370958118030443671937819161850 0.0954125913855512018230120435157304 1.1002763413206445031956759280149074 GT 1 -228711005362152894277528184233.6386185586522833442972029209275147 0.3085859568675380885249674964514546 0.0116685198089824294916897970215469 1.0117371312376989285967055336766155 GT 1 -109098453449901794691985015935818451.7922420938618815181147727154827064 1.1878594561631038525749049147874821 0.0981501115188343455601722899869299 1.1033071935215713877282426778624887 GT 1 -180738.5631742857705635933976373721921816 0.3729775466537881666177092757713495 0.0996847618548407122056471037407902 1.1050103123804204302058103506211848 GT 1 -249365528313991198727429789.0287144483286170037142066551322528 0.0806789753057648082824645316719397 0.0879813299911377698291555408169831 1.0920948176163985509368497172140355 GT 1 -8677916798864766293068827887369840565.6985686381424873073716679751738528 0.7508398882025540119394332638738431 0.0822603823751671008784769269559051 1.0858415695268983196440494242666696 GT 1 -50247585509190225688538889519791.7374389008361238344001853978236101 0.4641212261059270393747913322136050 0.0898343550255677818987911230392559 1.0941286685917954235690141918350301 GT 1 -12944033281611145091656237833347222300.3854443658174660356274826100425384 1.9658746214517541900506460439749074 0.0373841763317983395746911287714612 1.0381008837813758635537528510909654 GT 1 -44179082563373443658036411246115445.5195174793465903035954150618843805 0.1331233634676787878697398880259073 0.0332945761701475690013838900833053 1.0338614588623202093102543055375487 GT 1 -13110704252797531935282.6719489497742065565463729208997655 0.3987846422208484090789612161666463 0.0411183379448095410108827790400257 1.0419876089440560880204695957571846 GT 1 -33344274401423276763102812335.7566108909289621404234937929596972 0.6784436071772713822868600652700636 0.0825825617958519779338039461761341 1.0861926887109175029670246207012501 GT 1 -246362492304212532124065.8415758041663060483794702521082176 1.1141011261660014880102390683026082 0.0342157304842443707678595198363760 1.0348147931926758900475351405300642 GT 1 -14750665129930876.0786698734998588964982172463239174 0.5441206348678071076052224308763315 0.0505467423065865139497591081867391 1.0518689782791880569520111812622820 GT 1 -3175532657279536544.5810808428901817230846143613529960 1.8314649044856445072565803196901926 0.0136068758172329250264657643751528 1.0137002977739301078622710493377944 GT 1 -213922203597394228.3845269828750111747953469916594980 0.6590868814096992126642233396901655 0.0508104864469151966352487460445925 1.0521468021500281494563696774076354 GT 1 -51.1260958686018699853721127993576361 1.0867284754463534124705347254558021 0.0633850439579307713316912167655620 1.0654830139189457672270315851751642 GT 1 -3707661303415455489947518756215589911181642.9368875616663939083129094706237225 0.3898590286776738893490897537764307 0.0084164430287441271858860462728385 1.0084520612788238988618257427630683 GT 1 -2330900987795816117949155955.9435252545934922204033655744577733 0.1626221884887198334861297052684846 0.0943324760252074168330546259565975 1.0990830116198649758321995311965175 GT 1 -8194272186613643130101516852432347.3647436966482171372663988239962787 0.4165074717342341051779878998873647 0.0639821739169068352361375243469662 1.0661207577253283434636397808018699 GT 1 -34528851693598611969287.8535618306393889747447485349826631 0.2799401999359894714563092832612406 0.0699843521752446252829391730056317 1.0725538673583680218114432667772355 GT 1 -75113816379883740640803750860293495.3786250979818875216323595492628279 0.3187729884789488709851081670194006 0.0048121640932681186750126646851884 1.0048237798344488796790363795301830 GT 1 -15721521121621440307894.6278633637670042691422184404525188 0.6019518116565937756026238001402237 0.0660012302098172466201480100576391 1.0682801578952938179457320137791005 GT 1 -14505299187797.9248864501873542315492620750304545 1.6788898812949323948321800895396722 0.0105205818605687661943556470844237 1.0105763144191788822718973120372397 GT 1 -23.7052687483417196357478802173736409 0.2326793444097775426515452076212540 0.0478189191586904154418955493202137 1.0490000513108220677773685844280105 GT 1 -8462186459272.6298747982066986926233918157563179 2.2888496499843970998861455172620039 0.0149861428732778342804537109247626 1.0150995697600471367046882107957118 GT 1 -6472080012758095480659004645511.9867169915952681421630130352636291 1.0982024349541781655589763968476414 0.0408369708594164293003850600301949 1.0416942194430679991061201171903096 GT 1 -28692.2404035165509383630774987248215094 2.6295304131954366484687510652475945 0.0902009665862252354281881582994249 1.0945315462629608561422337408331255 LT 1 -3175303967942151497321705966585470490141917.1402409710292025270447696484753376 0.4607198856129054480043166052528642 0.0679726174304472948069395728496748 1.0703930842887082919062417389826034 GT 1 -6412232492879568.1556472428441796870057713733153749 1.1238685559038215906688012409487603 0.0838737312951669241985475461057715 1.0876010758771193141531118454433777 GT 1 -239539.4384905945338312769177511259011415 1.2251400109052164970377147752493485 0.0452497672990033703184994420803952 1.0463055091467725002895375273625500 GT 1 -26.8076716381117887282053952508792094 0.0267650776095165167661604407118498 0.0628759382652838711190851537830741 1.0649396023762016365843155899365047 GT 1 -352558497982072745131559.9097878851906104505686399461553052 0.5394388960633888982628770038746141 0.0958415219876979241945434859571982 1.1007506264187985556763455643804183 GT 1 -548347823644771509618471398109.1482352886415991650206136684133235 0.2133318336835768515087956593878589 0.0261889828572349575729828453496930 1.0265380217395501074975286732065652 GT 1 -208520259070409851113243165494789504679626.7480789498737268558600103381622799 0.0814532890393665046435612704678678 0.0936046256046872747377977858434195 1.0982796725521999056629450137863358 GT 1 -9167338115804385131835.3434560316650582164172935798572053 1.2749299168145457248845470117350066 0.0328059248114774452513036463228451 1.0333561054359218284782274946012686 GT 1 -124730.2625880016034544947125207345425622 0.4906269531943586566478005722073587 0.0891255224253758571238503722144025 1.0933501765341918741647435329387694 GT 1 -84815883.7251676431956578194828677901786364 1.8515143227203423532528081505319283 0.0088210299662673763986361683525416 1.0088601655652708363041785176794877 GT 1 -219191600558765777759411901.2635961709017993845797979570938649 0.2257567489970938869826493100249820 0.0196118553406195084172249611450766 1.0198067197519856974500370435750948 GT 1 -1061237370267892162311.5197597985285280093181550585748894 0.1302157963469453326848180918138108 0.0087228965596569757767840863102904 1.0087611637180131726128220480729155 GT 1 -733328.5147256040900639658823343301618361 0.1395995021383440916225733566182195 0.0832597341328747937930304490446565 1.0869310901758383953993788238737704 GT 1 -160608056809334827145456588473400307554451.3005484660497429313354446478089585 0.2522571639260820319781215007450826 0.0181952577549277332242157919391396 1.0183628272159773393671381059234338 GT 1 -1518867099961437412300875011140016.7628576357724558820886561921841844 0.8128786361086369030135615420052917 0.0817138173459008023623965844818961 1.0852461911337095243534137464369233 GT 1 -359888201335703.5073217914852423797210176295729942 0.1552198831155832011078007011385768 0.0981304251584688363612770502006149 1.1032853648938201231968885355228145 GT 1 -23531349321464116057180671902510.8611584920731285579471217471880267 0.8031055609859788245758132319234707 0.0344128811542595906618130551447471 1.0350189493398447065217757545259181 GT 1 -5404785.4970885266844788090122294420328784 1.8121265975024772718389451046024320 0.0711062260382806090951873098992285 1.0737608912037399724307123400542256 GT 1 -517032.0190390813384592704868346233359747 0.1612821841547054006122524932989471 0.0770323644269552420291979184818026 1.0801611094786216910320758088126412 GT 1 -892260410526859138637.8868884736175125065022558350414829 0.2564133523696247631826168281898153 0.0884980472773973414526863860657867 1.0926615425479931191272217879173070 GT 1 -2194688823310.8459273070972263738920534136407466 0.7400622059172334321432573084091531 0.0755811722641865293681109492433900 1.0785900332689744282416183643477520 GT 1 -31093201635977021288216688022491013241976.8480600934745291860972135423111549 2.2413787239882756910506355637864093 0.0345987219482904524883420155980555 1.0352114318994532794939308913805804 GT 1 -1388926910710838876893197571.9073739761420033435598775982285367 1.2525610356602497257541216552291275 0.0076432223537476855914601013881054 1.0076725814722444030942645814566559 GT 1 -2617106990672146018836951403711327789.6564849759064002328604580192425979 1.1318933093155495501647478120651242 0.0589373422795604720646771384335709 1.0607455553006268789685455359215416 GT 1 -566696348940428738869194424388.5464173745190932770882714226665571 1.0656043604512962628081614045913172 0.0616321762491181355983264347728327 1.0636132706462462872533914107259360 GT 1 -1576899893205125802528.3048190536724729448337616002105056 3.2621107091192463440337589959066040 0.0405995968477609284975580901493647 1.0423056870607193127706841448327312 LT 2 -422063614672013879285836547.3512293432859903167560980963545393 0.0190852547671100250157553614079053 0.0518443145590617828774223373287698 1.0532365650619197731636537665397342 GT 1 -23119643527962009162059190307169378.2857931623699997288356013929525546 1.2038820706250911445919589129480569 0.0128617434799085426096865433941981 1.0129451718306414261825901144489492 GT 1 -253303.0920729255921952926796422797398871 0.7047776553905586834519474695469758 0.0418473348724319999219840408466311 1.0427481555367019512981336064121132 GT 1 -245357031741075780048913130084721438094.9860080709045634107358225343768055 0.7126629577823205376340621408967093 0.0625425316122908030560604494495588 1.0645838892197972409716306542152440 GT 1 -486.4351219690348850578543052048230634 0.3287822826927286628460775620626534 0.0059704429405650329415544638251284 1.0059883372953848293673408763154077 GT 1 -10449579933348432081696355185002695704822113.8132180842289862247341045220717720 0.7688083443539481700985317804973858 0.0052318765830653450468274079104889 1.0052456107740276220848045954105498 GT 1 -450307.6975113195311016241396352126240802 0.4625896079262350001184749859870198 0.0307854995321883347378264276059710 1.0312693288766008845215996257646646 GT 1 -5036439672320856370846476629036468.5845614851095328759446279130558210 0.2438978283211240285025103724298159 0.0874482913841464078485814301976521 1.0915105281547250214736662812214596 GT 1 -12201115423.7725593288184234181390551557482006 0.8524325751695006331683994582880382 0.0412751418197127100141195263480835 1.0421511501852836158822088533739439 GT 1 -3284559489208467404354130.4570272214835922446470322432643584 0.8654751253759105613080990028012161 0.0802827144542049972494139468169554 1.0836889544846429590759258713538950 GT 1 -15755.9314373738861873437805461457058734 0.3907049192043210978171193120865495 0.0673001846947884041190575865155553 1.0696718712709839602904308933555926 GT 1 -1422489598052923873318832219291522965623.9658797137103571752485410787053945 1.0122419207547343505085290318204524 0.0155687348581691679912061007437514 1.0156912003622888755262903810441772 GT 1 -344477402.3608857842048179943639918593530999 0.3015740397659934114373421768158263 0.0467574465412914345327509774477454 1.0478858920151188562866295967409709 GT 1 -119943.9100360364280636310180253514173404 0.8135653032856313133079553847253494 0.0758466611699671412373428457820030 1.0788772699940617315202139886105055 GT 1 -40801926842118257918391695996837.9182008234023326696199104495401579 0.5033346039607977197819407618761243 0.0250078878103752041413372797013051 1.0253258980789378891606673191009555 GT 1 -40207715595000826819309424200712769.2301022225514894822997125786580530 0.0500818765359024489529705907289555 0.0297008882430571617748534459888320 1.0301508923826710966133751013847437 GT 1 -259024431394.5477642927801060988438279796796198 0.7644100213855993046665774724822932 0.0838282546662325720581344403510156 1.0875514369771202313158893262834441 GT 1 -7179766705453915149069.9800679130410855728541166938641014 2.2495870273801862042199777317270857 0.0047100804144409411813503473555951 1.0047212077975245766386118934773465 GT 1 -8407074279596.7727632318728679111274495459441901 0.5678616770614666737066622538781008 0.0066244874449983058711739120511125 1.0066465267486017261120541296016929 GT 1 -1280373.6687856279786822243890851372087016 1.0410943552799065958177331633792751 0.0312109161163618508013275167598903 1.0317083544743258791193057494316476 GT 1 -6707659792670594874459148481784212653622.2029117886044280221346852696142080 1.9476286660378476427851546395954549 0.0277868273497073421344724671650532 1.0281801851411447951971893255358722 GT 1 -5102465248228781919524471263293.4456293301111843950284371991644561 2.2649813131658152939199865948450516 0.0949110052183612964223317799024347 1.0997220033416632799913754174981290 GT 1 -99136.5530873526513200267353461010117352 0.0379326275083323251271478930196689 0.0693187649949531600505183275410596 1.0718384502317829378316279346685211 GT 1 -6598574735260.3777785430171673900553498198095917 0.7309353804673880816830315681805414 0.0680426440801989884130067661651102 1.0704682207942157249081395189516668 GT 1 -3024619489423189213811591895215025796354.2646135993235567363597234051631117 2.6656494408576220464691229413354422 0.0882936728880629953462413469344280 1.0924373505097593778095905287576953 LT 1 -2886141087527208960583.7522564232983576277786584080132748 0.3158001670707579077329736538832354 0.0654536544341953394746743768214244 1.0676940593453613299560813429006549 GT 1 -2128170136486050252729.1731563020021351754151097168166578 1.0946011428829298358760868291321374 0.0003823031121954015779370558527253 1.0003823762086607965102448810817491 GT 1 -6184.6073962003596400259473207678300836 0.4255354648488295740992464657208567 0.0929648759774354037199346772738251 1.0975741041233570082593913403315317 GT 1 -1135632557313978936320696978842538.8146054901120983148509007075287113 5.9142854683691305678103884547883982 0.0600462766966399959041997384139807 1.0619246354582901272195433007671062 LT 1 -1214324.0971774081831915144593438132221237 0.7956376935686176641699108844270806 0.0248052214842762231262515272001010 1.0251180550995860414746779750229037 GT 1 -921563936565134.9607083139758182449524709853211625 1.6780738178382524760554664706985044 0.0954762388115800275773259412469244 1.1003467045212232945007080166937954 GT 1 -3327941915761699475237359607295850236085.6203246546140801379672183730695036 0.8972625482151337610725753326505186 0.0630445493821471282795207772269161 1.0651195425721291229838441484428686 GT 1 -4495961556695027690.5960754798857406500970785708633161 0.7581857557969808698870406645253806 0.0172007435112820504045656122009607 1.0173503948588851757023503752929460 GT 1 -370.3356947220431417315472827368168582 0.6578683566317304710469542042267529 0.0440335156651552740491134895428880 1.0450324247724396434457618088897643 GT 1 -1300.6091868163401559053927702132988720 0.1327902790437009486207860146755547 0.0688809868152709835314842370797763 1.0713681761643302182234868516184224 GT 1 -14.9181208766543684595872997317364388 0.1154776213810736266398815677413003 0.0329159591407057460154444781728822 1.0334698784538080255044113130952470 GT 1 -132978749453400326755879804111.5112332775825971993435896987171409 1.0916377402796871263015977394426713 0.0302092463716665137217111852845298 1.0306749486640978430870918583130145 GT 1 -29558374467638917689751.1220112804186906405352042214268638 1.3941603323535141598095021064037993 0.0691487311824684850289092207970169 1.0716557686910541141026887510573416 GT 1 -142756609124269392643662290.4366035898422166674926643657362706 2.7928445604420541786739582648482665 0.0901707188796380268563172788612950 1.0944983002353535767017657786483497 LT 1 -4355322897712.9388853539224419610927639450286250 0.7781946682474759346657062210537153 0.0801172704862672004947436484893966 1.0835090849836324425300328879008749 GT 1 -1179414444729878008144739637.2219752365140816934826404759225833 1.3970341869050186964937352123755755 0.0763750218021835980796065293236076 1.0794491574783424070547220055835407 GT 1 -11828.1121817325542965561888803427803321 0.4924827952019506075969489750375597 0.0936214151579030287286329691981472 1.0982981961559075593473148042514347 GT 1 -23110210874500471406242223030794370932.4307623869788137493246372543859059 0.5904849764271016421927754742655308 0.0803792546712239441525798737620782 1.0837939272688589133061302660071050 GT 1 -6861965458637026429620592323703353355.1990808288758828535295702619022133 0.2427205892866531469160675469094481 0.0588941794308696105073180520159886 1.0606996902793003583358190463792825 GT 1 -205534490233455615043385169935228276635816.9596509077231476577510490350256921 0.6455132732598458894893485919340823 0.0562708419785312229134529386563053 1.0579160628784246968625325965682952 GT 1 -15.7352477745695955195437880600226919 1.5653765254697684845690756247387180 0.0359452987644771355880671453188921 1.0366072419612205204324010255089274 GT 1 -4227341882884884999788.7921864926623169043052038817948094 1.2380129216657510544374232918396165 0.0994752683036315501406762178105125 1.1047776503386370993093943544842702 GT 1 -93650236588626260396372.2425181810313680008756778632894241 1.6513759752713294842907058830518245 0.0325038245044647671182598927549989 1.0330438070622041853457839253958066 GT 1 -30160515103.0933642889686403214061329681338271 2.0967530377564419425177774816101555 0.0999949152281576329227783742355894 1.1053548659272945398496646260101248 GT 1 -1894071333000317978092580927746370.5016477040972860187095525053110628 1.9375368189657947804161544523133898 0.0764556747808105802796728779147918 1.0795364835058256911125115582459977 GT 1 -326532292919596.8725436453147307312777947692557620 0.8219630026437051044899136759214730 0.0620183567290130433843810593131955 1.0640249002409834392410670255371755 GT 1 -7266657724143456318953927409502108646.7953051551206387593644925935583911 0.9828673569228351557116223286163307 0.0528514342079830599777714265027062 1.0542993176443154171629218216784904 GT 1 -9490896828201637538997113931124310.3279476636185977033040081660956628 0.3735186821193105641345660398481301 0.0598193803421370981316773720694728 1.0616832736040653570837389144837324 GT 1 -28667320314039472198076.7620014804604193981433286395157177 0.0388484476896896054409354928407700 0.0409751733640337391642818857581855 1.0418383163879425627327215084618727 GT 1 -5247.6096466635069817154389866076492297 1.4964485947866792019909605792801784 0.0195808693842128822241633230026903 1.0197751144465587710577003258829114 GT 1 -845299019434053222160503.8633029469520880526184934871860951 0.8547898111003566540534779465384557 0.0434671230649369875212449597306294 1.0444401185701505088145375680006379 GT 1 -27669736574594.4711273090710662716091580380519996 0.1541434579395970154997777887429802 0.0563617892131715485400928094574486 1.0580124375813190723420387544698624 GT 1 -94.9895231795348719432186950029090040 0.2248939749542163423137203759263467 0.0107731229222997238363309097486559 1.0108315731846789747413245016065091 GT 1 -31633559995710732855564368872937593113.9199330295493288304517565012361470 0.9407833618704121024529557906258479 0.0725516289532599380497462967535879 1.0753181506895137524266836663746672 GT 1 -87284382516904537848705644005.6928824207449643246629496911305561 0.2722543943553979407733098214918447 0.0120267786817228035040969968347452 1.0120996855304565887382127781537058 GT 1 -24874958078096928060527923099.3058648285577339047285963626173872 0.8550923546463864700343297706605838 0.0116211234331551536565075528623487 1.0116891764367597592988373002953953 GT 1 -2165890314778515.5359015721431518436319282756996798 0.2997172027437744621335796430774018 0.0591659582616331860089647672789999 1.0609885186718502644353884105823325 GT 1 -15249.5992223645237919665089060864975905 0.5975228020734007651163087666185312 0.0933178085756740604739133083249913 1.0979632856123216865481522091634001 GT 1 -19642044715742796577032342506987784797379.6628601458594405653620156497908407 1.7074975301988109223615298973035145 0.0479860774221959929150853546665287 1.0491756197411927083288034811323190 GT 1 -14136512967593831730357.6754389269093505172690411901070296 0.0337446870083689289417926590046080 0.0993782603747382234168148296313162 1.1046699323595257781113906597569649 GT 1 -3873250548374561963246363547568500083.1079891428301512205613216357216797 1.4565305078074303392004312325176609 0.0976671862913567118477528028320063 1.1027718539038875583157902657131085 GT 1 -179155414125497598748894737462.8801218425891239451486579087047967 2.4050815290363837874158343004170945 0.0706004564782844525817906590579046 1.0732165534851181025703627053538853 GT 1 -48554229274499768095751.1834022132969248328501610225507243 1.0222502260735338747150457822793568 0.0131183942984575039933828750293640 1.0132052004401876695510877024847719 GT 1 -21082314196178526750795515342759838420620.3005695126887828899634859585935732 0.5119792139570175994480178359245260 0.0660599428666556378422083327411709 1.0683430214709221756088129164083525 GT 1 -67954693513580431826395237672407496.0558844916853241398519637545628485 2.8257425163496317823943606384433043 0.0735206897325768606252656719997882 1.0763635645719866832584767830748679 LT 1 -1367.1012955858701097500530658961876416 0.3083345391970840831686492429132666 0.0189947283600924997832531531444631 1.0191774456902262245009075287537159 GT 1 -11654612968242670551279525.1169772688192285963459975193970301 0.7157945915324475800501321839923712 0.0844105025548191410635309747709911 1.0881871616497447799758943468103392 GT 1 -84978395737859761020109698870860.0671290356253619941315580882750579 0.1091563830173497071269388288581068 0.0619378903586351694106589013899811 1.0639391171985546014606450927892215 GT 1 -312898568688774312597.3234861301626349646911969496166618 2.3813599115792102039718342982915896 0.0112178006950046330846566864258094 1.0112811947617542834848279227801823 GT 1 -8083.9471155413890093309253619381828837 0.0411267373122279412543797305173801 0.0523447717098858098617003606074088 1.0537645261141789429102370859862668 GT 1 -105500823403136682132546623356812696225.4194716933909032393366926005437377 2.0467078468852565983785557266116298 0.0508885698423034133960832520203741 1.0522290687639609411210065695240392 GT 1 -5598629214146485110074536139197.8783595659736025652928099243727971 0.2379722382770378785558987728372186 0.0580938960119306019986103481737652 1.0598496866689288106484319682534414 GT 1 -317373484603279797.9276351498462293469844889688466275 1.8212571034560342233380927885992628 0.0027086992985875127833720191665056 1.0027123744626423449356203420968005 GT 1 -51236029195750309.5167480610363896869412454333815027 0.7325277537921327587544215527990292 0.0094060661784591246765081643822899 1.0094505825883803593994830169515398 GT 1 -18630921685356734.9533743835933258401569682994010851 3.3687690890764373339198919434544624 0.0075910813798062770188783479587006 1.0076200402840815018692401736263119 GT 1 -24840.6854841464620594421810541980949675 0.3774689513908944081317433504317454 0.0663096210657135319225611465389782 1.0686103957819459762848074291995525 GT 1 -5447043671172642737264386997495.3676084124111959518158755833553230 1.7181023567146205428730615146532583 0.0976267836324118868075920190413581 1.1027270791225345328685016955357317 GT 1 -1708861847134873141785839747948895218714835.4997330042315594091158925819536251 0.9330212147781422190364119500824415 0.0363953877187797044297217038963719 1.0370742217426847987024147174124084 GT 1 -27071097482131389035235191717045507.7192928835716585040547785332225622 1.2872824097026500023014892199177093 0.0563032921106368621059144518217227 1.0579504484749081664579150499181088 GT 1 -1911.7708931773137584636321296434410338 0.0988609700880162406623626391520292 0.0215673935373519253337310471079740 1.0218033688535186993835793702790148 GT 1 -2597598669166730344883492304801789210408.8649709001302192681170281138705701 0.8813162243122008292680893036837313 0.0079053895316141818551904917007388 1.0079368027889890714190311716854365 GT 1 -113782138052703222056386616.2956205556909980694604042966520476 0.2870343578250277831816392442363826 0.0645790773611616267911821371211650 1.0667586663556843214861680364606656 GT 1 -11.8616261590559567752260804883491485 0.1065291829218478892688359692341303 0.0999900755846843906472457772004967 1.1053494885904961768182118522663036 GT 1 -565707404012544328457648361816170897007534.4274229300370029791856905266411347 1.7585223077362124313416803798354729 0.0402738506135147161748519557165320 1.0411072962706738422883849588341142 GT 1 -331631109971059086.2202550910764176939997793358939905 1.4749637202850869210965842085938150 0.0547551742735528093609614827898310 1.0563113101996849021938528503245357 GT 1 -239368696040493251883507425938.8711609325689939570701859418477438 1.7507332607710173506365227731094420 0.0787747841979137150239029662468570 1.0820507386333280229642398939377764 GT 1 -130415968335814258631776015248343.9660984997686059470226772675176508 3.6695478558442621690311196924475382 0.0890052877075131790346782739259714 1.0932181860282807403006296645146986 LT 1 -1060.7514748236555418207341737729742725 1.9966413149565557780949964241862542 0.0518727230154704138674387392849053 1.0532665273164710876197058466726967 GT 1 -29492156746041647987669914963.0330510222383836353205912480042565 4.0012582267632748700981824818219052 0.0063056370863465460154787394385587 1.0063256015860548679267959794307053 GT 1 -31485560584000476799.2038655306624063294856550682256287 0.5509816588115956756639038208270181 0.0948001647714785351864610495798175 1.0995995472504762752203399646983642 GT 1 -1.4324584990571025033460815060256485 1.0817371529444012737300080899673988 0.0885394904710438716104029376117088 1.0927070105096345047785197015879200 GT 1 -875947455123559613963.1238771127924370193283882898393157 0.8171405637788283073411256690419029 0.0772722424209082098979762981711166 1.0804210418555388881463192750864991 GT 1 -699583393836151.1003532114878347979359653594793064 0.7635629159969168377111108192943435 0.0753393974341437854132808341770392 1.0783285249449311003602251240391750 GT 1 -145330061168577722251537827214373605461038.8247160331401576839799851430878233 2.1782173683476141260164970122808609 0.0292964286768747573682114661538183 1.0297341391493426623232194368567092 GT 1 -2571162.2747366365645778394245958602379035 0.9699486969929428432016854696688226 0.0375477720614716379824364237857360 1.0382708473625911664324953939897197 GT 1 -663923.9930434045182009383048395045372407 0.5983435718732952162713490968157606 0.0284634953940421197283134652522682 1.0288764353626499895929460708141797 GT 1 -941137.8112357375214289050452631688629228 1.3693335067447132926300719949236074 0.0858434704614958745802955133190562 1.0897534644901426333319074600666428 GT 1 -7056328512760711400955890650310.9540315080576367782044179892533151 0.5525763279682912204065684197691532 0.0182666481143944174889129158561610 1.0184355432582191866846032278211954 GT 1 -12.4086192061149272323166211799488442 1.9483769409976857339823469832699750 0.0732972060671581900432651850763173 1.0761223754670460308987939868829892 GT 1 -60310263401196864951586233.5832474742844160038767951072891554 1.8813311415229329379803758435462950 0.0307062559222997819397432407891343 1.0311875715664056193433748792779893 GT 1 -121836417664681186332484405.0123060027195147916887017286268583 0.5452775886552829728233092214457133 0.0940374140584656636703274795931938 1.0987572696621268004745820551963096 GT 1 -35526.3913825667082910555463338613373041 0.0114054255525993975495135022613704 0.0529047344172530150559048931450025 1.0543555936193522092706584009145140 GT 1 -3432145693516040015932720663530.1777118405212920393830299780037046 0.4979449158841026858289872174255860 0.0572853484891300731215789017643511 1.0589916386292382037076763256474547 GT 1 -108764109173207372.3470682177985999138740383222163219 0.3724844306520083166714474791175601 0.0081600127634924008843381386910099 1.0081934878970272236175629529621535 GT 1 -9483400797307178.1117624397352802264588296848993459 0.2660700768821368555333866779467716 0.0255772574133472828026401684315417 1.0259100422058458101907378573377717 GT 1 -117523795100359465888269558083.5466408771616948610665116403612697 4.1102201724841004793469170765845558 0.0928385024584852137578767011162588 1.0974347878908687811482833627158534 LT 1 -211583069253305560256094273095734837308437.7720727737402809233268008761798483 1.7237625700215454811188779881812577 0.0904046817048021961653260307889344 1.0947554835520229369796688945591029 GT 1 -636725707724871004777840608758727514.6172490857193963486012162800564382 2.6997325000880385504772858931942201 0.0938569828386451704526579064466454 1.0985581298105554416721084941040306 LT 1 -1240227.2800529092860065021720819258870695 1.7652555913428056136122802678752572 0.0364286953613563497709681450381714 1.0371087880137631506530819862628657 GT 1 -12801045.8602856109068991124396644792700860 0.3248095710575305991029346718291715 0.0629629809705077627126893705081413 1.0650324894883926365785797416379320 GT 1 -696.5176725429613733800403533766546800 0.5631914214605415190323524108932822 0.0787867106062428128555201984374975 1.0820636849632007767733029406071586 GT 1 -777636509995.0040848655114533179753332226145652 1.1115477155024614360050048306797466 0.0750094065313813903260009601282000 1.0779717107445337749808023109056363 GT 1 -3618618730180039891649.2921972797741936857111838790427445 1.4974181990186375775533843322404082 0.0513910491823132009843637216974773 1.0527586297644011131285907644102490 GT 1 -13600714148800909.5692655940573965391450979331085750 0.4203621337022024463191885503995118 0.0431781550695832083888518266349398 1.0441380648064144498085726801177910 GT 1 -19935610322612156241.5445370272512595117171326540073301 0.3204010871495183132123844815715139 0.0881038716842265001513652636590334 1.0922291897848635194310745099580173 GT 1 -334891840106877.4802714787254195835133508271098016 1.5838543860360395073532821954249485 0.0561035493822644695689137842318955 1.0577388109954886963816643956564301 GT 1 -1894545400568053917367.2659437158193941218311350228940750 1.9643469117520659062427015825276399 0.0582593497190861924358180390819917 1.0600253604859076318836485949463569 GT 1 -8023226.2219364852497887469628742184212657 1.5714638406234403020169350189307239 0.0208731096808427323862818792136714 1.0210940326757302038314555766031227 GT 1 -16790543367144827013588746770047.2511469317351003718291502156316358 2.2965404115353674867420815749677683 0.0388174349414518294884348862912133 1.0395909140082725769587237211383925 GT 1 -997258078.8458609497194182449808296895847307 0.1641754806876845083137213566649715 0.0418463189551786994975000528090660 1.0427470952498064560111801070475056 GT 1 -4157316110.9967354796189647660695811833139017 0.5069403253366579623561046284268208 0.0697275356411304799746874272320566 1.0722777633139851415718844161236349 GT 1 -113779.6603837343476062583384566046706016 2.6363036295708937353655879189016710 0.0952100302342575959705374756419828 1.1000524398233005100789355156358922 LT 1 -10889505156312597706795864392907143259.7426886508213175993315993252621090 2.1831413635872509109445672280675442 0.0695590126497960771873942147863449 1.0720966252761637913655068720393721 GT 1 -141020085338143878396651859.4930312801148872897030283016708657 0.2426269243177567643839967275318097 0.0645864957963011096013670162139075 1.0667665969721334126062366897572966 GT 1 -69098024556118.5757037095491462713039192816689581 0.0609466352500496304096552767088829 0.0451606688805779822118838307566851 1.0462121923208135341013263439115837 GT 1 -12044837269359187.2654224932323664612356596562938631 0.3993278686840310633767726965003570 0.0933573335456281247412232468294434 1.0980068795329461043296705220387435 GT 1 -5717194962889977592188500874665807.7067954511600697433341132780233434 2.4437052526476244272365423485722762 0.0904746146567504974836330982774063 1.0993289593050037037149490300185187 LT 2 -111749781794887.9146425230891599533090608640707945 0.1485425046633502072184947448988053 0.0265621007889310178922065603936798 1.0269212474618795516320670843867158 GT 1 -508325053657168665203144888.3207105870743490235406833736346639 2.2805317850850388004991003631257044 0.0143517814242328525298941674977897 1.0144557643316304155242070129213585 GT 1 -134306428951076107484449944713845571.4300901109608317154544176139400701 0.7140759542150096826666442691865885 0.0611421957814673480484082012668679 1.0630912444481404152415496803152698 GT 1 -73575535800022759387013191921659428709.7532243067350705271105074693022541 0.1955485920397197525430261307184913 0.0431356449657848197426404230869340 1.0440936373513738412687438201358126 GT 1 -1115382304510262779772002374016850856646.7913989039711113549343782594619639 0.2067203121708888708421308341143987 0.0557455596057910258527562236367857 1.0573596148385849594380365964171060 GT 1 -3405364961352.5059833433246486107755230544808198 0.2077273373396328942805910855870689 0.0924964200415825392084605712297954 1.0970577679931518508890636868837190 GT 1 -14650390769802114.4647276265064275554635136620634669 1.6374441128143078564908907947293351 0.0635766885013287722712269524395648 1.0656876488667606809543559494726992 GT 1 -13529814622185316207.2422226245155539376081112228088796 1.4839321181569549965794427023283400 0.0115957342065300519786717091172260 1.0116634890195793572456573021139679 GT 1 -22292351378592731.9441595994909614034141427187549115 1.5665850795441014776247287000625109 0.0568567043827514158972321018275205 1.0585370507167042471600560826014690 GT 1 -108323226833.4251633021335878272573505048370314 1.3469548507186383453635643942152034 0.0145072834674293368538410954557428 1.0146135430482603638656938275444632 GT 1 -2409.3282941655988179894823186545195969 2.2027862182697188682983992768642651 0.0945576131567020247416914501220984 1.0993316294771352411448548177866235 GT 1 -218.6336403690958446793427496297168389 0.2858794927685454799907557575606270 0.0227865023983671117036948439075516 1.0230501271666894390876031862976807 GT 1 -38250174175064163923106957358212915.8379623984497830158550332924393616 1.6618342922221689848854859923269212 0.0019239541330964526031747651330304 1.0019258073101828789778038688476977 GT 1 -26276123.7035241698703296485900523656793970 1.6620729153306695535567386664340648 0.0767193029550648082799091756339052 1.0798219769043520428279752059347222 GT 1 -373578130.0922448886686071609623912278356986 0.3248580024707606709215984300058426 0.0246695757285645502904495172569179 1.0249789687081500144880518049826381 GT 1 -9661312005180535024140286093022446037012.7860743215901168093676417798175381 0.5159309979301636340831898064230718 0.0318041588764552304457594995615438 1.0323208969582487349453899852304308 GT 1 -631366746481073081349912961530778.4617007048755670890723777967043748 0.0054903796759619210505421726238015 0.0311362496834604620218543694428270 1.0316312855261423237831185016860949 GT 1 -9881452422.9943033092491673865866152067523950 0.4651651891527492747839786787456687 0.0650274662076950536708079309840638 1.0672381257481253882512516301954175 GT 1 -159527512626590568366158.5755027361897732368632909659590295 2.9984322966899261164953145063306665 0.0465068469893820976673939062636348 1.0476230348687382745926101774666371 GT 1 -720725530252399668199811979989438268491.9278190960723141219969992131080691 1.4238741614420897970115863096259210 0.0074218276578164332965077195267132 1.0074495064572665696277669105227088 GT 1 -1352924317431598743365508789758222088041.9650354906307283631071107830720494 2.1140596241474440883957040960016076 0.0746039877856835023120682174393059 1.0775335117747184085182977823022607 GT 1 -3895194890294245323228419193.5415779222096359060553983585044912 0.4144015234195850667551142911351899 0.0357125825770136487284734958956150 1.0363658779560043179493055190821182 GT 1 -6692.2491146693778431946778157980369971 0.4781049438070256720579369991748684 0.0532098740323506337926288333012545 1.0546778302437006402170760645023896 GT 1 -231774002285938276.0535136304137914488229153816150042 2.2779988776752118257516897862892596 0.0705679827429284495554069787922126 1.0731816135410752961333155587092753 GT 1 -4556973798654996.0144221029470186780298433108575864 0.1818401284057915717984269646059730 0.0478071657362446471283796731270319 1.0489877077029279540763126528368948 GT 1 -4205503008960051876413630284864.3645908422117438573454578789595488 1.1561596240066819603194669892402206 0.0210192721173643911883748213096319 1.0212433221585292646430868660226471 GT 1 -798724.9808805642257725998900449416207608 0.0536326320658116623650855281878345 0.0443625931498808948750446410682463 1.0453767194137027313231128107093666 GT 1 -37622.2298434804618467563472387037182717 0.2225548192203603231232835848617216 0.0115801372301238093777775988883060 1.0116477091874929274624131053834433 GT 1 -1321266.7002512386287755798401091259582817 0.7254088783028880444691100085910851 0.0157221383742792738032202055640468 1.0158470420905917786305113829142396 GT 1 -2104404175447071.9468810636836738732382869658940919 0.1586496805382506868881714239424669 0.0300704963970858424016383388132696 1.0305318868238143696494106012999778 GT 1 -15941955746329264647753697734267.5370733210105907496177617923314518 0.3613819115191500383389119596001245 0.0991028728096272733736742969185864 1.1043642041517021666647366702187083 GT 1 -15279309114766949182998784576950.2205913806306352887980917497733142 0.8736574057107880682777286169142688 0.0798501525856799887968217355871736 1.0832187445779102616395335375561279 GT 1 -289757010035839100212494308321918.0599544237338676299842129281417769 0.6128873766525378813871476140206428 0.0502934470465580919328842598035442 1.0516022337323518059698608794398635 GT 1 -60079439860047131682763748795917260788503.8268921272527860734916606827938929 1.2978056490359167366338523327517082 0.0452930679539526573339905050083221 1.0463508630366173616695970366124161 GT 1 -404026538533485288.5642242036471179026361409775432401 0.5505339746172120630023005650748700 0.0566617531619211091415345331541011 1.0583303683642540264199270644961149 GT 1 -44280058306011971768194720.7050423648339968386601924830821489 0.2461773409778672243297368916082918 0.0732894938952598716320557260213391 1.0761140533384649890545005373772697 GT 1 -1841766119574968972700690383.2727228399341570667040888585803901 2.4960516602006214539001252321670899 0.0575915891944442850879685904204603 1.0593165412460804661327016173973915 GT 1 -9709690821846214065980998905875658501.4763657037140793680190828000254197 1.4614499787377467492631385949403985 0.0467710916608848459006301659676261 1.0479002065431535711265513980134266 GT 1 -4680123131191747164518609886221004190.2144681042097630263670072640753015 2.0950419127731260395607890167270818 0.0729328251217322667578261750145499 1.0757292512323790557684924336768462 GT 1 -29254275341451050353595503289.6139317691901882815348792694577483 0.7482012721148277979233172191363876 0.0208434877962308334244350389468734 1.0210637797669060823712290166847807 GT 1 -1402041747654600611451182258.3958483544474816764278048295959474 1.0818749493686890498068498687223738 0.0335988157845870496201999806736122 1.0341762264138719512082350191650803 GT 1 -3117295722407.7100930553145442125011323419055119 0.4374012738648699007780405001036109 0.0850412733080826185697196446555388 1.0888763221645143788861111763864369 GT 1 -8295736717526.5692434381847780568521959616925516 0.2110655360169059056805163346273684 0.0822879415389102386796051666508723 1.0858715993708917920505522331302911 GT 1 -21879881486103127120489840851658.7662704550687815721636446539868257 0.0963078571830578969250498784954895 0.0349209338103890315309637398283110 1.0355452471243032211771812378046518 GT 1 -2436796546738775087401298999776164639772685.0230315979686016751779856194969133 1.2231001081327051499002701683086897 0.0143886013523753935948418369825924 1.0144931210834505390763670423525822 GT 1 -49497740753593632362648.3876758780591282463199677812256415 2.1103732906190568212180656081884254 0.0196864135147488141587213656077762 1.0198827722927479444840668550065117 GT 1 -1530824541520076528521955227820756450708412.9617705213182011251568900758772121 2.5376333416787763774134597398479553 0.0327482498824825796846711318588102 1.0332964760286182349798902524282486 GT 1 -35715784056717963156808546.3094117938144900503763630512719506 0.0447304839413693368585763295271602 0.0053766427452418171728585377980885 1.0053911489085159855416441775272356 GT 1 -1712247125593861326142950800679555939221.2561840413291859829167702757636443 1.7693849772489746515303601167776564 0.0305413421990135359200132540478334 1.0310174480132131783400374323681984 GT 1 -83353966585976.4343186990280770486369373519280241 1.3974107685701262535769924443279652 0.0960785000805172022077347105760175 1.1010127587327101496086726057418071 GT 1 -2153216649197776232368049713514.9473296665425453575950920587743343 0.9889029590752380582465865771355678 0.0255605637416939123100262876915345 1.0258929104950096209414381582019732 GT 1 -3202231562327889124340334561864821357740.4433465142264498238018196482539486 1.6745700129690341376222318279947401 0.0103989555812867433218291371579609 1.0104534025095964588960052548527078 GT 1 -33563449955746158549338091666646180877489.1251502222055078481543017232048447 1.1747041457465516898465855983382397 0.0545394706980302166652767939452096 1.0560831376016809219571938085680976 GT 1 -1247173335913335458636052542632087580.0057782815212958432787808545981538 0.2683839633616970710643396685629867 0.0865955105299838837918685726986451 1.0905764631239656214626032782177485 GT 1 -939121235061036417513811986108561813680527.2507864021357185214585046882790036 0.2044164244327377534293756292270826 0.0755571893449217059873311551115743 1.0785640898248916774608819311945931 GT 1 -50690699287475710375503225.6938463142425118708253318632598072 1.0857378533177677204785409985364799 0.0790791238258036756748419592530810 1.0823811571945750879530809725337439 GT 1 -190608493023193915897.3017563645333264485629578279991296 0.2638366216131127689493951097596682 0.0968750374477202165084992978270302 1.1018943491459446302019935569342634 GT 1 -45338514704989884354619461.8455665412489978507666813603494411 1.2873931621706355246880451369267256 0.0888806184077361753775148831780139 1.0930813457498481782098674176385770 GT 1 -23247121406355391783.2380009192511190732860777702153288 0.5995815747485278652728901047884188 0.0819436703889072367853425794153305 1.0854965290120427903312285318376044 GT 1 -18293020394935928619246455849087030381206.7537460149049155906414015759500089 0.1673431419405316124239251898534368 0.0636013989730623278305331765956250 1.0657140373573798087378686668005115 GT 1 -497865015250670219131265191341302044921667.9244740153559341858589110911706964 0.8897697950006782142076603850747027 0.0848712802173621720403664782909545 1.0886905462426732364260081921277403 GT 1 -26490743545152394331392.9750433670536452724390970743603489 1.1218126462002348350971439538337008 0.0298082938163707370283589533919518 1.0302615917711250405728910834007746 GT 1 -39672.6412907041233988509322383642617687 1.5282379077715696342104022374448572 0.0673758666643589212184401456492370 1.0697530174650991331909579681785555 GT 1 -8127662752968121333556473943.4435754546116290478596578358842683 0.4760266179613816738053947084724812 0.0734952916556455418650116984599942 1.0763361514084862909997419752126275 GT 1 -52883157614104349.8256396441634954611258100545220638 0.4421420661046926912630294407914081 0.0501495297972834898616309464086641 1.0514507065628111436321364970350768 GT 1 -1269581498082082.5749039470048496949402088331444798 1.1687994112851026313707497245672463 0.0099011052240693170375258148569947 1.0099504471294848531467752537386384 GT 1 -4942498831055411071658763073281446536.9193695021310145941132165561725074 1.8893785628393543367996475441222875 0.0318179856766129418014759741456200 1.0323351780554210169688001820191937 GT 1 -2226832321730395198879928074244494945976.5598937734655538149802962329417328 1.0978873285823061514159793307019086 0.0166267804301279500682505144060276 1.0167665568645618908628756745557399 GT 1 -8363455306878855797601649496616490595.0414527904435201831895258257372635 0.0295578565845870605432113444289672 0.0880848659577689138488892023935226 1.0922083480159255408557340884179118 GT 1 -351844481535100865643579399067353031.7589252681181247348029447018457688 0.3399001823635104240831512260267795 0.0257644350958094422805455844562151 1.0261021514969599001552336089652709 GT 1 -249117689319415812.4466135162686353206025580259949539 0.3165398203143996923444776505742870 0.0469112162715400249764027564527964 1.0480472173079286360059356193553640 GT 1 -15884262333400407655411483997195206086.0295067073453244764117777197327523 0.6808003250764074567630224973272157 0.0995550941927094236767519786119139 1.1048662980176071860451954984664309 GT 1 -1.4215542405125509706582336229887524 0.3873548891394358634526318653498257 0.0096393249034567191678441577075327 1.0096860839219551372136995907553601 GT 1 -123649839048320537430740304689482479.1375396916338781012268036988980333 0.2671338159375478502454940149947097 0.0248483608324221762456632378198011 1.0251622927260526575241752589524680 GT 1 -1220524252268472511714120310260698727599176.5649921667212814288461975408522238 0.5413128834874243548438381502288591 0.0136321509120024577347314325811553 1.0137259218562323955974509697558578 GT 1 -4216051995311663421.3949256009963824895347649393444102 0.7473416313416611056467709713620202 0.0635253347802947131429947690302435 1.0656328100857002102927757212298127 GT 1 -15812679702901487350747282922172041.8203696815012419287889179509844538 5.4635158696495021682478252566972778 0.0338307167963748726968598974107191 1.0344162187109813880208956903836287 LT 1 -14081879.6267396261791742931138911330835010 0.9799585870144875461869371940095399 0.0669906653853096538755128336972014 1.0693400732387648242461441947702946 GT 1 -35626145069327519116873313578379.1816114702285588790065806625829666 0.2809937893297719724255270497420121 0.0603828181603207796614982874797350 1.0622827400303032244396561612865013 GT 1 -36.1464449591224230249597341243100080 0.1751880412405909237753415933942481 0.0658446330269451213479549701672528 1.0681125087916601905566611126708187 GT 1 -253650067264.6620958499400817740842390100391526 1.1020478262825704641196889845231867 0.0560338610939991794266391779125204 1.0576649832829383628827955125312904 GT 1 -5490556399643788391465712875790659882.0936719768591654537456674600219947 1.0594902125525335184875048003569028 0.0492219938468391399248738616046775 1.0504746757018441085033215269791954 GT 1 -93112267.2072617808958880347354099451365670 0.4463739858528861276353781052083591 0.0950885802156064646870238738014551 1.0999182187639204852865058318727423 GT 1 -9589812297185944404277.1927746387040738167978292770827338 3.8221561162332257583793809160868066 0.0357280089173605899762309861786847 1.0363818757419986043183007712433081 LT 1 -239153074637831137017621877214468.2238641656008853926385083561601268 2.0625958803214619813470779512498515 0.0769329497768609002250506445867529 1.0800534033223339820769454978239809 GT 1 -3780815684611892521869.4144375066648584584914636066764443 1.0505040227141742619162358593114593 0.0321789394989373930893178815122681 1.0327080636475986463681596630460002 GT 1 -109216137757951.1299769379631194266185329336199858 0.3488830793538359312246736259560345 0.0632582730109129020514414164432884 1.0653476729576011752101669514058589 GT 1 -8.2105107967476100815778254039343877 0.0204226294420096853571876913078002 0.0572848280320792042505201518255060 1.0589910865460533640902065974195946 GT 1 -197164262491621.3749501637427226331280925960603108 0.0431831376249436750050156303502063 0.0361031511469597050641418240337106 1.0367709933613301822211800682631284 GT 1 -8865528457084716819920037387903863.2381354526010569364818768100892395 0.5076302449163865989264775510302699 0.0782056093214711005402489308609166 1.0814330838970071326206088617565715 GT 1 -68608339141747128595381320293.5657644859057153626779420888323624 0.1865359178848260371927081839539055 0.0316020688667907705593319192247799 1.0321121902967969416071569862795957 GT 1 -4005236858971617436473477021578522790.1948102962587342585950549914523006 0.4912939734416690892855905588520463 0.0640156891003405965353063866896342 1.0661565645043647831808289252299852 GT 1 -490811204157138503988037557413645578.0769357938799154996559755833849476 1.7657426252531663336894007610533638 0.0145247252266680846018141563890136 1.0146312417215175045551457501675659 GT 1 -339924001173504608842651335345943495242.4303857560585730191457324309239122 2.2982465224824968889636395947088661 0.0063744857816198770438295930721937 1.0063948895714397200595506499478226 GT 1 -27.0943077568525277402042058336336334 0.0704847493444933932754180071773389 0.0963339685089873520322956329265598 1.1012954210389407682830331273596723 GT 1 -18274993692774.1851850324671997295581251025464715 0.3455455875664813735497149442939086 0.0057020062136131482070347258646702 1.0057183247127310321300457089455875 GT 1 -3423597854940632879170654127287291.5883639275498317607644520780984801 0.1151533539714830183531608672152242 0.0501444892676231027448885114638791 1.0514453999209297322334586625884455 GT 1 -361967750249528646515602347214593932092212.5564229128251685257040456951898248 0.2291984901511356652976527350822688 0.0032535259758781176561777226766297 1.0032588301995937977478527303667322 GT 1 -685646509180135616862.3463884298320202849548586350512834 0.1074126552203862550056235449871653 0.0201565560335808092120837259922582 1.0203624711337526113843954561560399 GT 1 -30694592911551927594966.3352750133048919205396985712021912 0.1039575486310296907266079379296973 0.0521078194274302647695739491154389 1.0535145167685071998252827304306449 GT 1 -439.8774448046636346285991998917130983 1.3441534230373999461318092213503771 0.0003188871810588525194054901552455 1.0003189380363876699995501865003442 GT 1 -2874570.6835112170047776803681955593764320 0.6366889585070658599585121617996348 0.0074176517710357409515585831205475 1.0074452993548812198872921857738336 GT 1 -190948882261367292105061.1295419524906838872683066177332244 0.1370411468509313554669186753039253 0.0986391995707542947622161980875188 1.1038496571026951320388245399712265 GT 1 -6288790037345213260676639350605727479864264.1373608401157707647811531710341536 0.2944936568342471858987403851384606 0.0403843978446839368227980785918019 1.0412224891290615261201455453156561 GT 1 -95822083917397137634616.1407289074013543757956031201495176 0.1882849306683561913597627144825338 0.0412171482260595002699363906216570 1.0420906616736913713561531974264627 GT 1 -270482318555092636920823706608.5899426812874796173577541781369098 1.0717634189431444926453023551936686 0.0774536422929632354549676066417456 1.0806176520731067433459237241032582 GT 1 -2940664777.7413930963353786443944804927943306 1.2633071371655463290058015627683429 0.0383832326029028102286375128200593 1.0391392783762016871979268250217461 GT 1 -5199530072.5733615071281430778038088760504497 1.4582546206046326209781754289797230 0.0122238732146378732308255075233108 1.0122991992326962331231436489023689 GT 1 -44382133101258665794790605032717743849964.4452556508899093347152678699475703 1.8530041979097002812683114268620739 0.0753592959511815664613908727978283 1.0783500449827609282640525440570726 GT 1 -3609556538818164665421968625657447845.5305556006602992341492716459142831 0.0140905297832376001753433127350276 0.0487419686415354568301070269675911 1.0499699268894892439886544580273849 GT 1 -27809661748531548589115295311976381467.2558304459769800192427928735724801 0.0148320241961842377323305401835162 0.0893984746387797048589132102711280 1.0936498809662096605401807264924171 GT 1 -4480403808085918.7760380349792884958080442961350135 0.1902852403971276263593871395669114 0.0903426172707600327803629130080686 1.0946872528614418072947008213528580 GT 1 -166473445473338630066404584717794699815.3191943453872614751018631425340732 0.4748019841152702572514950861684332 0.0502972764010095062612487922075968 1.0516062658853992735242814704160893 GT 1 -15275536546214885.1474318270131760561390470874354787 0.8341979523889098036647284952183954 0.0613243568887472114213674941062351 1.0632852874444028816311630658563438 GT 1 -1441011105554088796566577755139121379131.8068212988054741493997036096837465 1.1638079445585835406277643889715518 0.0796870057511515566219855307408083 1.0830414556576859024643107512713573 GT 1 -1117660443443684990381485519560707614138.5275286985031020610149276186629764 1.6493602036001677081845740683528776 0.0410511930884254583290841962166990 1.0419175872633100400375772754798023 GT 1 -319.4624350242345817789720652953616745 0.6976069377888439789047402664335485 0.0499469114409650423496053577082727 1.0512374132552090850048846250930777 GT 1 -2735554547016579169444.0143953288271652719942912053099096 0.5765803282926452730502432471204246 0.0811859285552901985232105407787697 1.0846714932597508539348723029639182 GT 1 -8963.8364062824771124277280402843177262 0.0058931811566299272123644407019131 0.0660578609144965072669383992410321 1.0683407922595047254813855407289858 GT 1 -84925157159.7438598490971913382085611180664672 0.1840784245515284867289768665306485 0.0099795080905758486375091947136334 1.0100296371693124490781393145210121 GT 1 -39138321.3506781153421811672946059755752578 3.5666783476255719393185839806656651 0.0980764345437789352918095566230218 1.1032255014721229851705939955275364 LT 1 -880632452921611472270267030218412.1215771296531538306234420813996648 3.4796180042924234503899441700834510 0.0065335884567232974785695092895549 1.0065550257718648042372324880728474 GT 1 -1058018813039299876568431143169.2698444369988861727869124770881901 0.3687021480778410871393936125453750 0.0305303519162124576975865353537634 1.0310061115622801142365343226211921 GT 1 -42578330220024141373806790823148097555577.5745615293839516404056203533705993 0.4613154146105801071473939518016608 0.0819201299523148167417528006490551 1.0854708877370675630049347805351212 GT 1 -20378296358708892458821665262219712518.8001519344398543891040526249932681 1.0159379612924150855461855332251134 0.0866254688877632678537339399393707 1.0906092622282300454057532212103721 GT 1 -279347066149159595187268653.6790664292462847464109859301859180 0.5086341471889388284259330379227975 0.0352813694299896039371959128822183 1.0359187946981209216875451625423226 GT 1 -12839772962.1221622464033166307997340975445544 1.4590933915215972819962783472055191 0.0015741823357741388753411469789918 1.0015754226626252488890983184826162 GT 1 -470106783150727918801754641.3344878220860668190941827140064082 0.0604429798885862493079908699124356 0.0370721314306390595583162556352511 1.0377767728249235490253086211862546 GT 1 -665613233072721362313331665068100551592436.2433776080793140913095548234659534 0.5627216527597694999650583549535267 0.0299811984916274861788853697887255 1.0304398246742342513348031076029568 GT 1 -73420348324700251816099246044882377429.0174539203580472900991474494236533 0.7902808491303941819234348115615970 0.0757515227775231787074797246291617 1.0787743287486011999450183884891390 GT 1 -2295612896585264830292656.5371228039891242181230249092461892 0.1952692529476272537688714293774170 0.0777839616410798140469414799300347 1.0809757679500903648275138295617052 GT 1 -4526179448639139532576.9698542291256835733728528502532235 0.4798054398942383627971467015954665 0.0371303413580540107222838218658557 1.0378372256260204232805053322633771 GT 1 -431094977085132616601341640408794974813320.9526340993931126146665432421521229 1.2304614250718811063305730158643621 0.0707865060707161851598846479607751 1.0734167560978236642936363237601061 GT 1 -18368732367430568933659556603345695179.1975628825660714797261659892099665 0.7842575158238119354315730970391585 0.0395417373472799778841457813969868 1.0403447514889123020904890212480212 GT 1 -39.9602225918546011856704090656023226 0.2207295033059712077717742045082589 0.0196929870855151974751035327716753 1.0198894778948092719167692730279064 GT 1 -22.2364466762188660882323652499797352 0.6079166486770126505744273376636399 0.0790671885275032649589564447255129 1.0823681971007515364052262863769871 GT 1 -29451.4991108157505850488996610435634158 3.1582328235478111389386703536196378 0.0811473449054810983902397151233362 1.0846295012605950199263028650736225 LT 1 -3636.1926800485996484241323107046328728 0.7464170449831542656719931516962564 0.0464758333686609725857797905980019 1.0475905090805302450223468708173955 GT 1 -155.5022912020828818665866389444715179 0.5200835617466198280647080876897704 0.0308165187000786016524119825179527 1.0313013338293347153693052162419703 GT 1 -2534574963.5918819669887240734627341107316357 0.9161014809519321814921796965355008 0.0179010204314287083810019620672474 1.0180631818490151895207181757648434 GT 1 -7894.6801998968502398326264294783008108 0.8046057075723862916898200798828571 0.0847290023139318029507180322435213 1.0885350852224828737591928760942424 GT 1 -11569.0428958672936373195467226516803740 1.0874633071802839887683500353335009 0.0588051214613257977841154587940382 1.0606050635603574400485112273475654 GT 1 -2728281874399231869715.1774416273812278515641516145492767 1.7128446077372430360338739938662238 0.0095614475233099132660212376626865 1.0096074516415070641904450461879167 GT 1 -29262111078382821837582450318254377801456.9644418266333600188407158324602869 1.2664276569529339999022061154656404 0.0917099048538052982896360842971414 1.0961914633598120185773400440496723 GT 1 -463411.5901215587645027463648627648161892 0.8958179441279543907081752479018562 0.0485068179296396423310485835208180 1.0497227577257715884895117730134184 GT 1 -5083721804222944289201007237.0728699015353057273090689510902438 0.0895251197504470323394559745706415 0.0734928744340927796628179576192123 1.0763335424434397346533845471444072 GT 1 -112990777528428498317695081.9112419693290096028427517431356560 5.3832141387430921384541182119874378 0.0900532233813696691385640609125273 1.0943691684139605512411573790257332 LT 1 -3791271924502657.2706451254098496554074140237906401 1.9199633004105082630220531177354032 0.0094401805605352558258695760848733 1.0094850214925021118539637916028012 GT 1 -359285821072118319.2308251623833290611073753238524754 1.2588347894340645616368499604594428 0.0943356604128172340859732830172836 1.0990865276929533810135004498191176 GT 1 -9350043799266820530.1275761627409394724902338499045874 0.1971714160318781938165306909809887 0.0349501309724421439627642292777044 1.0355755012296353650607041320935899 GT 1 -3922578421044672.5398100418696184467141337137506059 0.6496729526175913170632855911485262 0.0674630932062518362839823976114716 1.0698465499162707001135769199529176 GT 1 -929457547983588477.0469175624794537405798565340041120 0.3690426211636253477177162580136876 0.0746440249113409647847820885390331 1.0775767775671513022169671115337654 GT 1 -994307320891096086909578336730841.3343573907684264118158857239707009 2.1700420254891610653274004909131746 0.0391911159446964387034458607350390 1.0399797617402698841201779374557224 GT 1 -24172711179694254027711907818.3637110330533670943896275596179286 1.2412796803962196692561914772023946 0.0927962416918915503324926155321478 1.0973882032613791513564117775237183 GT 1 -250643912926532453234576392412131991566726.4566077621547741348611978805264383 1.0883180122653215674691632805455805 0.0383230883860719290918804769490069 1.0390767354400845020854335063811995 GT 1 -57507784807801183962.3806543494127140288418436878570511 2.3307729326541401045595208161678666 0.0622061456037433210447617561718436 1.0642251255617547045021476630188611 GT 1 -302188968915796861476783321369303644024859.8001958184730551216748308711198342 1.0016539363195900894540422978395066 0.0935381833599441649766764036969660 1.0982063714172826949552357844647684 GT 1 -67111474739022337284115.7583920724280876564744657491875441 0.3298224655882463731209130455153138 0.0100563481256203113439343956180751 1.0101072547719587219187397878332130 GT 1 -14358616766422789121977032369381.0780308103645531257542160592832921 1.7801953881325248179850555399296172 0.0011214663556398637890097122515095 1.0011220956695802181164744781053266 GT 1 -19111080077129275007099146533140551369738682.6462420227813073056625724166310773 0.1975386889895690167431297048442092 0.0682135819388890983349666510931990 1.0706516557293777679889407962176732 GT 1 -3618478224472970478481.9273311390027604922410203722917776 0.6516374145785700494165623894876666 0.0987221705501646917440085920583013 1.1039417121359044833942917006615398 GT 1 -931133195093856021565750132665838.7917225419335565688984574587202369 0.7264246728092022061523818860941057 0.0890335522648624672695502507736347 1.0932492125484631212308014107370865 GT 1 -82242183187.7874347798995702668272334937862755 0.1134849109290675420588956256515360 0.0110442359563294695949277954191770 1.0111056763236828746299589015583284 GT 1 -4746031821704823939934371884782915325875.4447919365544802937628477832737550 0.7792354317789860049785531921484512 0.0788532058691928027020044947869557 1.0821358698347397360768297326897063 GT 1 -9334547166980008202959.0792633795157038007553956203325782 0.3832434329900615804795516629810675 0.0209856832967652611602708231568078 1.0212090127554536003934467610745416 GT 1 -7712124377163098.1510114851438674390586099161812141 0.6262818138723778534017287334855570 0.0627226432882761233843693597595514 1.0647760355160393391666028368093925 GT 1 -1537364981333560455053071432212714709018244.7683491241844844658894004804544259 1.3693939195083861090155564169492143 0.0694638882188073854744720925495046 1.0719943946456891477902551472185468 GT 1 -986132766026673037476935893819635.5513962833899348649462392794335802 0.5981521039862907797614556532475982 0.0794475609502549759972124080170630 1.0827813119253785489997311654894616 GT 1 -20479214561689894.5393804799437781719737607721581622 0.4537785295858215223399915367087579 0.0267873753444032533925904971601298 1.0271526958433079766836405667048445 GT 1 -4244843290442606222377504295822397778.8687477464141120293671491484453330 1.5865987793450976040364670789265036 0.0315503354086112098857235349644567 1.0320587700294449207386961901719824 GT 1 -762032484872750.8304285732989075754098800139335924 1.0770677482370650586706408544895939 0.0623283827906665345674161768810080 1.0643554795340852699517581525169143 GT 1 -1467081442043000389982712518.8175147131377028916580017006543758 2.1774528562583788375501354149761774 0.0132883172703965530378781275904836 1.0133773969847898245120847204690424 GT 1 -94446998700722505441848660737620229965267.6376093441668573954367726149046036 0.2019609517200753608739741690939185 0.0095202997524575597491663300141824 1.0095659075032755307068807269076242 GT 1 -114220740722096461020564965.9342909407267642674605274388496778 1.1388758540060986812205291823305451 0.0387886353751443377883498909157804 1.0395609518180419937985290094115325 GT 1 -202714144108621956395841738.1070010576643944338378671191267692 3.0443350036838392198424536824787176 0.0910870655527225682285248517865891 1.0955059710781802875652405042964352 LT 1 -110865907203.5830248473719974529203925917251050 0.9427470492176957498400560631572963 0.0193285702712190670054280544860773 1.0195178095372521268130272382622011 GT 1 -801.0410943511251839610492381565568987 1.2645847347951212887679747670125317 0.0709116926070139933579341732171809 1.0735514882886853483387329878156490 GT 1 -3815857711299475679139181.6877079529312507006268120675305233 0.2687435071391845515042103458986332 0.0845741780694558363818363972359494 1.0883659428028467200610435212357055 GT 1 -18801237877374.2698187204184849778790155074225099 2.4083445880314983244128892616763353 0.0354356905215076437888517594530331 1.0360787723651014700175213405615550 GT 1 -12.0802989212820999823466842537602098 0.5938264417230068463302165127585254 0.0114862445989247016495982807790138 1.0115527210397810440888299050106964 GT 1 -17220138397322722413703.9375984336652580760631797438060329 0.2157791311897944822231827000002583 0.0413306242777569488421388854483429 1.0422090229556077438807187068544356 GT 1 -41653108847437504.9482846986220320126923142702083611 2.2176441034190900669585243551091858 0.0803962903787066898984558445891832 1.0838124521502972643482907038883779 GT 1 -1184019049448425490734168036.2061765002367005178581088400677888 0.0161272778116221103612122935774876 0.0757617464457360101781217417487762 1.0787853904111413899911045730764850 GT 1 -318548704241222.7398850990718647850428598866272578 0.0013440406564334795112086010643247 0.0754556615784165645862733445015087 1.0784542699522572130475273089210647 GT 1 -1562659909145872677744719415046.1838989183261543930644492007482377 1.0538060352362113253955118609120602 0.0013898633840826543530840933360592 1.0013908301400721890865895261487775 GT 1 -31374812276200113623079321276.6183461255147891873211232336974102 0.5849253164433419066858967424703123 0.0357245336670344960941258116658529 1.0363782717339014898877895990788815 GT 1 -36508050605.2474427330041853971862521336577735 0.5013164602902228976316866180412304 0.0468980126705511886629563016603753 1.0480333639190763547957351348115646 GT 1 -44923495184667514225.5170809063633166123188079399672218 0.3871173688477814449201875743322114 0.0023762244881572816136661995973624 1.0023790521899573336763541982876965 GT 1 -29877152646233535619150752117547.4077259312985771457771676815414455 0.0113910364270704293165485649511930 0.0132777866495872249210006224730563 1.0133667246021674870188682167798485 GT 1 -12255086468830992558108448208165009510506.2184886414046959585306098590180988 3.5105685156937514317241513746612729 0.0568844916463555333532892103397801 1.0585665135492144315085500855010287 LT 1 -298440227.8504683550341969805418962868824327 0.9712659892300247870410253284468184 0.0301246599072311435312581176953514 1.0305877311117956140512521492410918 GT 1 -23072724191.2976966763433310831349749701071629 0.0474351081340047358943875239161883 0.0355052779426626161040975834238243 1.0361509188573005751632232003430233 GT 1 -261750439015.7637234055933162787022073390620624 0.2462144082052976044043629139137664 0.0131730555566424578088592232678556 1.0132605898320965365873286416515478 GT 1 -1101056805845300190662830398278719433.3502367981425967413333753464724256 1.3773562583217492624630468267378178 0.0819619728629089974425043382304271 1.0855164653229792080761573888066479 GT 1 -4339767832267921312362831979726835372417.0781304239124747651789340028221774 0.0501718261533052689779470757374265 0.0033861619320988948340568251684041 1.0033919079533866596522565647757481 GT 1 -133690027096438706732770673.4845637797680239136471446250780907 2.7343351537098848232972918576954007 0.0132212068880779780990988767446038 1.0133093851213772818471530164816856 GT 1 -19261048078626003350892582260683698.6475172722858080294132750468495677 0.8912321769155028291100357543663749 0.0434974375926214224482713722680083 1.0444718111640915726253029219073370 GT 1 -61545567526.9982959329378989500370181123422832 1.3932500556716693873419976716305366 0.0750403709220981820098441377275179 1.0780051866622555607955076035489925 GT 1 -6103185219681522499411282.2501416490632475795547841646553722 0.4623208991844853360017123693385938 0.0431862155556175349544877768370971 1.0441464890705853752460485768944192 GT 1 -650745971704.0332283892920727844815250328683132 0.3489762349314783531517035784188233 0.0494572741611838757965652797560134 1.0507221671551132124103432981277492 GT 1 -659346210585961204605.7267104306785594013993929784391640 0.5385854978426761712171499576000937 0.0468677707855623434455704494557041 1.0480016344655507406106168326989991 GT 1 -43504086845032298491777414703458.8920135958143646322815926923987020 0.1723978501240738012913890756686581 0.0407102856790166318163539918101600 1.0415621492828665493592029188050752 GT 1 -14314707313271604.9143701513740987756671783703369427 1.5941088480872787407246628908792057 0.0739294436913884247362850958160245 1.0768048525209046450878749213833448 GT 1 -924482689949700813460683.8578300323206717484945973736942706 0.0943691578537473400871276649662044 0.0008399858998333459506091607692325 1.0008403388856718996349097334191731 GT 1 -96310047.3193204843420309922673355969281696 0.2352366485348728665968820696796088 0.0200005853692624492181315216274742 1.0202033046332717692001151886133521 GT 1 -13063097357746828717.4245241079162767834174222794513707 0.8116349766602090081265892791115139 0.0478569008970747428392334460990996 1.0490399413030716815464428260111463 GT 1 -1458532038880755333802058211778180580.9311886803613541274220119980886814 0.3947579580628539623254862075841348 0.0484977284584394346159028900741058 1.0497132049218665398973646755651220 GT 1 -29548483993517.9275162302305298206798967141442374 0.6479274262478623978139772692980888 0.0845264764872119110390524179418097 1.0883138355339534996365854785438355 GT 1 -338593357551924583905102760072575278343.5424566094433380774168769226976986 0.2811659018649996056401530046355540 0.0897122144945340791428133428540411 1.0939944816588346853791524050911798 GT 1 -16800434878104423165633759923739999294518.8895244059845850098523438522352746 0.2094025998943541227498869571145783 0.0207775455505263372330328861231391 1.0209964360639228856781983476270809 GT 1 -471747209420856606637771680419583.5716917604417514874397692999419903 0.1869572923299377730941125498859579 0.0454888842336568625569910631819721 1.0465559902410403353323937282128374 GT 1 -11322168876283807872517445533206.3593434160272162063172384449025982 1.5066216235194231568845486686621110 0.0632931311969314237062321053576389 1.0653848858131882857732805885780095 GT 1 -708.8138919281489716257384266495159467 0.1635240678523193089482607924903427 0.0168678348749429197342698732891867 1.0170117170842067684415329511085448 GT 1 -19252446107303786522346223283580632847008971.5638478838450491818374222788360267 0.3640809188050994850985887629444210 0.0329211005277366860257290336422059 1.0334751948487442978067859361013837 GT 1 -39689.1802186090228235751972737578566166 0.4095310613561400767959814890539320 0.0719369833696245255860861833621923 1.0746556426497367450705773689135182 GT 1 -9057073770740.2212211743601398569228944625624183 0.5616885385590144247333338499098761 0.0650280682209317173949433815960410 1.0672387696316713948392322384166776 GT 1 -2006528183054851583413644148463325179.8054862505642079279846672942758049 0.9829741002758227410935928307942592 0.0075951231875733281481256295636264 1.0076241130165225576233171809911817 GT 1 -52178165762636.2800432955276005621187776883526289 1.8948178580786826446929794416134505 0.0896210474595896516861582927898392 1.0938943347916288034372607834736658 GT 1 -1489898393639905167563042980.9599109706347315053152698234741958 0.0986231357388622248365186626067175 0.0776211586229289075041048057325633 1.0807992489535755975000766045402925 GT 1 -78668649855309625741690503918860665987.5402199917168475209224880766145586 0.1440867720481517508534401622182637 0.0406332506487271192626480676964123 1.0414818482682873529189975019041992 GT 1 -5701873147267670139999.0315692716434962405044612672384682 0.4270692923430587651770546084186887 0.0947047417465801717662760053442817 1.0994941362771681912502823971522838 GT 1 -1389339066764280410062.0709840103911508738735753134657092 3.6205857059700758067271958805193213 0.0453574754749373700287815569673944 1.0464183284456209163167318401816508 LT 1 -2247433911054215565766.7785725953139797186938630225411891 0.6190620794955486497052467451830742 0.0467990104042752999204963141001744 1.0479294955754150700949408532523190 GT 1 -278670194334403588170350678329431.5794558130726956613390506107167883 1.4096849247542653621431785808692487 0.0102701740340399481761101937721383 1.0103232761630059192988927135227731 GT 1 -100602536160927511822291265.8749670244797502123257975304626024 0.3574407403769198656212150118836377 0.0319355226277507151119945982051465 1.0324565850682019294760924801093773 GT 1 -1022601063524672.3037707686131401597505635951679802 0.4438278633141191128765107884115213 0.0958928865253040371098031439503725 1.1008074372521869064569902044317027 GT 1 -4716323660137039111958.2055640693714252415836808199861009 0.7498309958242234912214534251152895 0.0105246851444461193459279857921856 1.0105804613395797840645995602179601 GT 1 -517206.8478166631565134199568492885658470 0.3063100743833773358938267953202234 0.0780537093689067381331971527470749 1.0812683102339341401792554345801485 GT 1 -40187505897152439304375475502.7269421046788959923009943664512076 2.4802830710993353154686939960638435 0.0303730538730784140111744438252387 1.0308438730807638339497346348577184 GT 1 -208867956019953077783891035443689017389.6095795589543881028484438320575482 0.3388189712122370608143889513852564 0.0081029722206455548019334629693425 1.0081359797269111255337159006273784 GT 1 -101737117520868793822511058890619457064.2979642777936802330677763685710653 0.1638705761108059568278214074142189 0.0116789862427308977593778548725346 1.0117477212971864815042032497707198 GT 1 -46669.5372303994892257280305466456932609 0.7398223015331360300300394051083117 0.0106810182650396626025769391016304 1.0107384698007807961082507523356572 GT 1 -96171624733001065.7639936252415198849387847267795814 1.5344388545362543521068519029383378 0.0514337044628098715262800891332257 1.0528035969128875942903956846703484 GT 1 -660580574731039967618443917648479510317202.1516599956715429962375214346995397 1.7174631591805383493077710877152015 0.0533024821703560873414282953096684 1.0547756477693472024080568780239473 GT 1 -370054058979086574227850793068.5143892309220070830032267541163074 0.3928051570744037396156966854016294 0.0614269274057550611431350711733734 1.0633945649378450580441791196189909 GT 1 -7210624991061133574901332243580216.9378920895037668880727523357383246 0.9602933477409679772426724024201671 0.0189946185651865334023497354280737 1.0191773337694211113192895027608916 GT 1 -269818999024209445481450.6786367563400006427058577769951799 1.1781340487375984273497256127848775 0.0403690396484849291870121030981217 1.0412064847276475928402883066330045 GT 1 -44871741268.6201244373121797620131160364345075 0.1483903226231825807958175934894401 0.0825865958301570518732283946231335 1.0861970858839014288474364634863862 GT 1 -410696953118593191264553488.3672818450847368915545700566165556 0.1669005083517543626328831648613795 0.0560535968886535935543448735130465 1.0576858908135743362742307685458007 GT 1 -1062021815715323140144651281.5727428219440134241772946383126166 0.8412978373300420855323469849145738 0.0192664396492569592077756605759707 1.0194544563569582707204737928368210 GT 1 -198194771032683170118733333804130482197116.2937061439890983584936691047986307 0.6161742624393575825223597051281815 0.0083904652794479244887112543058310 1.0084258633766564124235704875759177 GT 1 -718265.9074621608507515185129716903976509 0.6507223634693332842247960350482725 0.0871819385831609230996889559176892 1.0912186938017642039311299768343892 GT 1 -22.2923142575693389192342831497306478 0.1932034253415262249914224523380977 0.0835937384944083799289593508318587 1.0872954957050661758585159550914477 GT 1 -3459595262700797518813626192059601508569182.3284151981833297706863204513791399 0.3795146889514681249136086023041859 0.0076343478460158180461062398292096 1.0076636386522322163885783088947576 GT 1 -8728495890745878418398980996505364192947.3229984167872704320457089785531372 1.1139005053568443103576785084675386 0.0010341850445694588733599451826171 1.0010347201829091910951361866080711 GT 1 -8820641904338.4234627640974954711676974709592692 2.0279513361408185276379155859097268 0.0517129691197800274263668189403810 1.0530980473641676787770666947718224 GT 1 -487331022809695622910780651959391063810.3101001256864127108700423808793367 0.7651428061009014661894045298074939 0.0223141284950541222361657091634631 1.0225668553216302070383701547970191 GT 1 -3.2131526517364216606748434133804316 1.7618730416232236834430059894046109 0.0129422946245440744431601638819556 1.0130267758316980288012387976640229 GT 1 -20660851760068402.1528661670482576181169975236302926 0.1334249294232679520245653396579160 0.0319764279508290206156305494963189 1.0324988407115820083300673503414350 GT 1 -23548494239.9166191896979675070149563694795169 0.0539843863561557469146199117370266 0.0847379199522844986501934827070373 1.0885448284371357401925452687193664 GT 1 -8164699020309911452890730846269218966419.8862765154038414177185407052780864 0.2883904986051230400328025420736543 0.0251862956546454613773993912410470 1.0255088987072622038615529945651402 GT 1 -158475639655596514926153539176651698347.5559433109020529935798856346857765 0.0271953346107928556050183246923261 0.0952160176080437518560180216222175 1.1000590572635869802877593545123048 GT 1 -242436396700125056799417.2730614414064038763684659435649395 0.9575537443506361225744670351002527 0.0691758988881533928715931002887167 1.0716849549886499908564861548550261 GT 1 -347466238.2964586230223433177628911130048461 1.4798327519208506906169815134974231 0.0994825573120002860555510003062640 1.1047857445503912102177782611580619 GT 1 -12087654216214329.9070854065543909399533664150823799 0.9855060362106595317854731414867135 0.0771725099520471051008237381667828 1.0803129633040174220625997337198601 GT 1 -5327328032293605811985831792766839074298038.4965208853292582955852472396521185 0.1194129997545510130278741765408754 0.0284742184329666734060998675499460 1.0288874726196653397032707673889368 GT 1 -360162459931755620.5188212145165193201691916083174313 3.7918249631647499661192366749695421 0.0795025872042714974776976853734339 1.0828410889639826350609756964037416 LT 1 -1408822477758417922789695671373198407.3842733218863596983329615892254083 0.1886120073137823390779618006894698 0.0166854848864397116603640981463037 1.0168262556721498132184208997264542 GT 1 -8527933575928531795449.6656330392921387553649339259798883 0.4832126778700332468118338488116658 0.0550333934062855741442719557024600 1.0566056890506269283366995522797892 GT 1 -986484343508167408193660310833.2590699849278234125977504110748696 1.2418457186716170068095249544756222 0.0012222880340799377280155535854727 1.0012230356373521788838049805802281 GT 1 -211498251994393467137087595.6232526994290653807655706060494102 0.2167695985132176537982425855012923 0.0591025368615471687158974363406081 1.0609211111804566574750210125549575 GT 1 -5599993554.4189809005924972265250568520418202 0.2287579090203974317042687488186364 0.0413036468318960673508840032157155 1.0421808828408073457498907804886097 GT 1 -1298197114970911441684435826431072925.9097424777681888442081745809969891 0.4208332964873932549862060441370836 0.0002623751501721193329707135289589 1.0002624095765537162965679935941470 GT 1 -333239964053312.6046576683314648098781744424286157 0.9263611675318484028588239290061767 0.0343992931702376787057112612744075 1.0350048771881446166579529115393972 GT 1 -5081450136.3045482002638214885017970557876311 1.5363364745127822004491680602505553 0.0400899522106726335865904225173084 1.0409156991298455922749397191496161 GT 1 -33851175828476988228505299082808961.4270311233148604813722993377049979 1.0071668122034193391598022469766076 0.0728736776934105511506019990942002 1.0756654526823015382761769483928367 GT 1 -13590565482830321283.1934784177649768333781721971109375 2.2540877030631812480725076800073827 0.0876174057111131965037563715481216 1.0916958655963871124080489151470021 GT 1 -92573210636277329895.2892421286941414474022227197591998 0.0469033909139221960081272867180060 0.0093984495680017532231758873999350 1.0094428936848693777860947599740572 GT 1 -18437740.1331140053896769855203332989686070 0.2721928560796414316834898620911786 0.0458555334151120744682766914374102 1.0469401865196727923127290228374377 GT 1 -86016969788667798204.8163950999196654322778681513217094 0.8698334556656036627415114517851708 0.0286213700606257360869441028481729 1.0290389485513364568554279468542999 GT 1 -129285044029069806390128262975.5637025678450165312561662024814718 1.8694570410650778666859251824040407 0.0551428935423648271962100106822036 1.0567215730195342635486343705064535 GT 1 -37054062398981337856436946584.7298899899262552044472211541593624 0.8342489210245498740788402410189459 0.0141993753334146290994362735808741 1.0143011510464374027756239079267828 GT 1 -15211.4119620815083657086366474718332722 2.8472211731062030466751635741360060 0.0066817690707631418795200107300458 1.0067041920288882078665028178246624 GT 1 -548105384808512457210274770247.2260570165755441266266648557436614 0.8923937549378984441739264738470376 0.0335326345318155423418548869401694 1.0341077465859931191114734720248868 GT 1 -68487203742344357746944.5918977985412359451310885847712871 0.4560577815513954902609424548761641 0.0752119548101725179605682674286135 1.0781907080616911846764625960584925 GT 1 -33886978260785945696595797420597119011204.9667367855872781937758246845703478 0.4510360511099204604925516675811450 0.0987239294320734943824917191612027 1.1039436636802203408732037231932554 GT 1 -52204760856286608457016971448301430797365.5295088378367040084448917135904731 1.5609688713716061235400102784505422 0.0437505268933542384856340420307098 1.0447364448411293907242975966362371 GT 1 -47016817609424607154.0846193617355619229254833686915781 1.7600311498876109875944724856832067 0.0933796068628251722512017638849418 1.0980314466436919494588344418908720 GT 1 -7515.2420004523841933709181059342372856 1.0690139116195274434798414545211975 0.0990818835734253627300191177338519 1.1043409062733239968348731796959934 GT 1 -3845091895074.2644933562742135829337777558227005 0.8213749315774962270301849047579498 0.0181398690565252974257296810793619 1.0183064136199779501087843146669885 GT 1 -3.3722357981371337785289316235062043 0.7568559146734020233072806771493565 0.0878839472897312654977416580153975 1.0919880462246957974749226079164524 GT 1 -12002796271155991843005974095136438273946.8178203387584036475884629034674880 1.3854036987919914688880400740441078 0.0862534447055500875580841666276344 1.0902020377808498870905980915172260 GT 1 -5119392817969799022641.4655936358744820209610562290619221 0.4681937895523836971112372390434432 0.0699653113068385825261720604981870 1.0725333938603847865054529559263028 GT 1 -322936387015971441717206108.8577138583943466788191875735677624 0.1489763984637203468959576204249285 0.0263210578090386008311144895390675 1.0266736578195957393029992888954303 GT 1 -3542399995578458884486682320816469153290999.0944786460494470670283853178521297 0.0607728414447774157766981407521120 0.0284216277758715025837702612626182 1.0288333420605747182686619576241171 GT 1 -4894562542316921202003.7970549621281048740474266723256997 0.8801926821556011736788071432729758 0.0689494410079100905212319858667325 1.0714416970656409628689990659167952 GT 1 -27.9600734928029339484017339245949494 1.2495615695372735638721898683969917 0.0039501929384593723587452202364356 1.0039580155579514271074795675528063 GT 1 -14.5353848595081689377152318686858134 1.0963401972527710548214534662737101 0.0118366035840671079832069937732826 1.0119072139204108854274052874120298 GT 1 -26929477484671521351106.9804499275386785525976702825099205 0.5417010195779575880298728899834235 0.0579008816893957545842197079147678 1.0596447888046069383195094794586997 GT 1 -25.9673025243012421043614994696983640 0.3478947505071994892662468570992854 0.0605654088326259240707601455707340 1.0624770834491518050409134024109079 GT 1 -146648936031742519389796298.5763396252281912088173358948125780 2.2767378945599634340690246300321793 0.0925914161063950797841075308142194 1.0971624519186787713070399641298808 GT 1 -2241895954416278705723392696.0580143940087625531115380569323684 0.2608316491522734018403508824596417 0.0317883653752607576487588523201707 1.0323045847911117846673206561920192 GT 1 -352082244866663.2457151918284061245657365296646714 0.0877792860447298817080097725582407 0.0195992102730255917397771745370686 1.0197938218134341935827634692880172 GT 1 -11810238662801197827490620762.7230292914687498035543060105873943 0.2189340011694188677173540116122918 0.0127321490641272344257594505551395 1.0128138975041712763277547330541835 GT 1 -950.2496707350217337810542775578131016 0.9442132291291612477262908553031876 0.0975735590322770122158971708693620 1.1026680979498221138656727187946511 GT 1 -95113938856934.9996053358966407877335736727513967 0.8605741429562564123587281601445408 0.0418552679064910503186539464231712 1.0427564350804414562644889028010874 GT 1 -209447160785867753575148004462.7897287164194534092106126182803696 0.7940740174241202912773928674426195 0.0300340215920848052222139816706133 1.0304942819060818668799877687535302 GT 1 -1338605432887355687112974.7096009793204621618947597879988817 0.2821678331508451820676390567307941 0.0697390100031230836179475493290545 1.0722900978000605047122020594473134 GT 1 -33621933710.5875527393262978755188358936663276 0.5989437619919681637466553718797147 0.0172238407856842982528848549042960 1.0173738966530354140847026251207075 GT 1 -7867816.6123820282225816306521176897729541 0.4377330256893982406973008436091768 0.0039839859884556815738469578253690 1.0039919432019500045734017708106878 GT 1 -22788387.1547028765129452894412733744053108 0.6311693216849597492273345515679111 0.0989091230035046024322150009592923 1.1041491640888170449901316898992245 GT 1 -28121039187510256570397282421100.2863137056167228609985091342153478 1.0559789644828159244799438881388979 0.0900006859516969405158031970550940 1.0943114332645989900251636779720734 GT 1 -15308732730853050.2853340438252360065392989734765546 0.6663718175624139006509340676210779 0.0052972237735495661825135302122665 1.0053113038088133388141951096630688 GT 1 -919032562902356621.0570012947076388131597735686734574 0.1561362171527910344732781264137729 0.0308546209842677032123461638885142 1.0313406484007411426069075080371510 GT 1 -106197108987498895495232323856467528580557.5956646424552854864828725143614076 0.7654201232282862991450072939985202 0.0339344356421059874813454097961113 1.0345235750667179845819601570649922 GT 1 -2531819280292.9374504626872980652611488059404961 0.4716904071803034809285577537314426 0.0050608108743510934926814564943728 1.0050736601478652806082719362766065 GT 1 -40124360340288386.4716435075507503294314656423635197 1.7940004184641682598263281835839184 0.0288748989110162845634252181615465 1.0292999816168389002865836851004599 GT 1 -30221340945569390339.4873460622082807495630592052991173 1.5923446777537006038514282267459845 0.0545800895619198774624620295790519 1.0561261005125474522613857353428188 GT 1 -1780835787086957187488123993711903045833929.2890065276058048770742509018558675 0.0296481971511984104032862327838939 0.0269116433374171636271142304792850 1.0272803924271103550131249417525267 GT 1 -1303076525035630038268876027139357036389.3149826721448262423451488002745039 0.4701104778479415420817372671807276 0.0802311236288685773158742225194038 1.0836328618361435713509425146536066 GT 1 -62058643007513058036783332984738.4156100487329291072627011902716666 0.3110837901085491021227968971071848 0.0940345744981013265876002755510506 1.0987541353650174166052056650253321 GT 1 -98243046835214391247239900369978281827195.4264224341200364443937562837024891 0.5384853653128082080751385814625103 0.0540356983898903772679232940951306 1.0555504467838180451684373128835381 GT 1 -60648.7345088631031950110262834029355577 0.3756915772122935616103690757224122 0.0171710331926806559580744683717507 1.0173201650135344230088958041338908 GT 1 -15367071914670826343070798312652349.5303097815279123445798129476773507 1.1336095449097449363223361873772020 0.0297693292158194978730238188908896 1.0302214308236746569670122827439365 GT 1 -3095161744.9061768560550462371950825140802171 0.0218070731750175843827962941557531 0.0250607951353881540524912131221655 1.0253801639133939052191030031800930 GT 1 -1871486793044493.4638612034754239353532365672816422 2.8574207333010024285638520733640464 0.0068082582629927535665693776604679 1.0068315401863513053044218465925229 GT 1 -1158485551636716953299576383087.5218937089971835967252350465117110 0.0456252145696735776927645210515641 0.0984856321567433471309632397082238 1.1036792987583295631243972823895315 GT 1 -8288941763174.7292457770351246142704473809684894 0.2593112152813872477550435361488827 0.0704083148997957669479959746105722 1.0730098375241016224728598098416453 GT 1 -649015995353500924008551052891491.9617920424952860765189463126644227 0.3478614031342478525046107276777156 0.0732495073567163820844155837895465 1.0760709053697980428395674536881741 GT 1 -71184010237350035887.5090784629377670142602559267425363 1.1822458932993053314171229797325911 0.0481781537030251981222333413241190 1.0493773979456167355902619038894370 GT 1 -7851773522321104002024521873363095798884.2040600559161038193532883727775931 0.3635861589500008616182081566340535 0.0698627165657748426967350922254226 1.0724230871331519976681366211297398 GT 1 -293471836936581.6307170289452605709098607519294642 1.4756236650415877067187577162916028 0.0546595830320961632344297435861913 1.0562101867598320930430917509926915 GT 1 -115007.5296510906338402005627715324540461 0.1769924455494080743872047590178775 0.0965569571196155938080748822959160 1.1015422114678334770039585499198807 GT 1 -341.6840332344998630412426125814813874 0.0002722912208552852784662817062487 0.0860205419485734753964868482783205 1.0899471825601695573690853039203318 GT 1 -1839929951756262030126583928587.9667749900653198346583012612892579 0.1230685525617476305984375902336726 0.0609535742141063566396456491496322 1.0628903592645601394952068231443862 GT 1 -19827994402830832027537843.7624275894625656877425031302851091 0.0150385076735499820597413875010355 0.0000753081164626606408983739633936 1.0000753109522612365441927443253920 GT 1 -3213432211501410947.8480408912383989068049713408310722 1.8136774144156028112705345413695215 0.0889067525197839017638393988392667 1.0931100296823734628219105239713298 GT 1 -11331.5276106450481059850856719464273376 1.9796364469442785567569095124595414 0.0776362547410235988513585410339675 1.0808156155926984646365361103525045 GT 1 -5910583675229870349.9921436235801299325350298987110023 0.6838488877578763745796244202467484 0.0778969051750877562003913502473939 1.0810982451636235285749221676971554 GT 1 -14693359011300.0011163621995675680458608453736529 0.0824229943031639770805934917392548 0.0545559252503431924068533886746137 1.0561005414963862751881432972699637 GT 1 -5666861001066202.1217096728280019538041522346818635 1.6897726567497755674445383845876157 0.0483942227091935242650225866463774 1.0496044294380872843235177376648667 GT 1 -158649234784800.7491128480591458568000255578745107 1.0194513116591734513475684762029831 0.0841929755756821868881128345255322 1.0879496085283291631118218307646487 GT 1 -99785813521563431.6615833900052341986102106594049536 0.8748260688959629356353797384441401 0.0580089475035994038129103230196335 1.0597595028623485248981863156385605 GT 1 -753376816327144643873.4624689649144766605512918443732863 1.0813795159016370662674154567305801 0.0647458047893025969695807788303735 1.0669369201069547252244631370351609 GT 1 -2821105092634224750044409.3210521849384832677974554993103770 0.5051674264974380906024529614788304 0.0927848280433343189114377585702347 1.0973756222103693755695572043881711 GT 1 -15949783049345894558173835563940.6817942474656123019045777213938584 0.3805968742998378599132040384252246 0.0678370422544225305511598286644716 1.0702476322140656686861754566287091 GT 1 -43650808.1839723665362251574469154288516095 0.2257538714939286440725544837657260 0.0680874197098556184388753710796172 1.0705162666677988265584831257908341 GT 1 -2105279494986148519138529566.3604410473233302581455380197249860 1.0593111198981539396744776669578269 0.0891448215598593987637103379704916 1.0933713642383284831183683246597265 GT 1 -26680677.8797879332330145727053282603279085 0.5235381255610407372567694433289168 0.0275945170459726216058090209534696 1.0279823979772631600758829936983593 GT 1 -13384912227003680.6385184860230525151379338505890628 0.3159403974224849581470125860286280 0.0717358629790288097873770787392440 1.0744389562849577234795187861951921 GT 1 -1115694516260410906295209.5545461140176730423120553269353412 0.7021912922729616256216242228586862 0.0580856939374981557428325843549182 1.0598409787534728167307393512869482 GT 1 -5857183.8770237332615711625380236665816420 0.3204015661555409037679176259840036 0.0629039569037395437762825786204550 1.0649695013601956074967563381838722 GT 1 -23655275550005995729342135861387.6224700854743830089935177228773487 0.4421230782198737691081159723144607 0.0449049226588660807706828498452881 1.0459443860316472457127089866290367 GT 1 -839018325449.7431151218690414230932767265308975 1.9935022908255134213320095941702375 0.0754284420580510366093055929640828 1.0784248293742804362875036738906584 GT 1 -335452987596705945380.7814876728882348357135594670782114 0.7826436200961780901236365406379456 0.0279499206456241458056674240002033 1.0283479538793865774184749979659061 GT 1 -2462369447443736893179337722906.3590818419962488757371468146033419 2.7403966978222697431802888100388980 0.0769489666772129784720379533498168 1.0800707553005148313859467403405486 LT 1 -46722701388564156397885611773469.7331868659455111588881234866203474 2.8265120533428926089393074947724818 0.0046027437934567371636427005168857 1.0046133690347159356889499538895764 GT 1 -1664047193477088401131916919631689.7012204746182237819325654363646605 0.8882651568094883036816641928366348 0.0659332438650152496128194072461312 1.0682073699294666096665961922949888 GT 1 -1117225863.9633422301119116310269023829067622 2.2390308075927484372128194688938242 0.0201097284893040583787861009771189 1.0203146814326153193545418730087460 GT 1 -1511344729755621420440299.7362664395107345222606266584202120 1.4419680244817464609986536327227966 0.0696256697197432379885661239700208 1.0721682681408200776099172218530538 GT 1 -95307522957889040544017413902500.3890864740374778377131684508690676 0.8459383924669670923839859434109617 0.0262853833482502034984985430888316 1.0266370196571345381379806115447564 GT 1 -2488196778757151771476378087768058.5566124318536969061335703578183601 0.3576457440588327849953366120940176 0.0572957844731608128308259242073968 1.0590027088314232946691462317029525 GT 1 -200.0302025658202437203337383633543683 0.4001984139871101374485106735739418 0.0159631944173701408540284629789644 1.0160919785820094977596465583642556 GT 1 -673256509793545245243809190388.2893108780766634337938321194709156 2.0200116181621549575604247929293978 0.0289110430633852501762154961822244 1.0293372011521664133508975248750466 GT 1 -40426531560420645.3587034189128404838346166820220966 0.8002257595439615197514123438084387 0.0916854639314235273081181916196667 1.0961645550034605300781763478050570 GT 1 -956787184213075145996650724700408438639352.2656288656642250320782815166657132 0.1910154336131523260998051806684599 0.0874216580816366096873715216677141 1.0914813430536371367750641522007815 GT 1 -16388924249365216989667271928497496858967.1463643845217656606596669761666326 0.3199287767989561335770053971904211 0.0785460233860145435113709195055537 1.0818024471086655449842085001254856 GT 1 -69465643757668354132.7715121538993072556850402769197572 0.1344941653284961153044296705333365 0.0818071119167608810033671341965029 1.0853477926955534902417381885807277 GT 1 -109965633542499424981289984.9083180504185627947601195612153536 1.2766409788745733733389745262250595 0.0345395702343213608034731618932390 1.0351501621422789448518744249976243 GT 1 -249972834276.4815480481398096480820469893064522 2.1097027966652804611793788336452339 0.0569520687420532880298752192333345 1.0586381691590173499774190729482717 GT 1 -185101635412537226.1202295699808983539105331884969673 0.2063136119918544442576862878574925 0.0632223707008957781997102766705259 1.0653093468950483462275911540684364 GT 1 -23371558389249032809921.3549909820702743307125511325307343 0.2261734779797730663646651607038849 0.0993696113660540911267560684942997 1.1046603290302100121264706561379168 GT 1 -1086693541327305349623373750737647228769.3233896183960932820752251721521459 0.0268358992286802351605378559740523 0.0354138736889811171130797755575134 1.0360561542922724030118739891700387 GT 1 -185.9000398380801641126308420920398827 1.7591424108482769798661643069957257 0.0180703969393194779796223390409809 1.0182356605082452110919745745946749 GT 1 -25052439780054689963.8274452551285008194471336419289802 0.1016547297503076637444824510248927 0.0308852377989535066498991088237313 1.0313722404600703197633173475698863 GT 1 -5919930045088522.9480984608252261297056728325178301 2.4993761229981153985259381469395485 0.0875931758032916741798468496813846 1.0958709403338600806443750646501899 LT 2 -302061851141644928160063576981586689.9669695862661161012245814623822349 1.3114756784089638625731618313219591 0.0084151608383665547967900032521184 1.0084507682062032653390005999060039 GT 1 -209018571944037993730919553549671625094676.7864168557482023418664232204675342 2.0739733868774551156420867261002916 0.0281553887928703989486517840885625 1.0285593523147124006173405016236442 GT 1 -12735293886844.3795507081206727376619836081303785 0.1886538845827888686270479676384807 0.0421853309048804013005178000148970 1.0431009757856878063719974283537228 GT 1 -13128795830794052.6061478274565054082986712418334616 0.6787836509094188939156464557733260 0.0811173222370310500148065545332994 1.0845968277108014953512116920388626 GT 1 -46272082.6415359864344453507709120890345285 0.1836748924470949206491186359025979 0.0404565070293446336619956616998230 1.0412976357751918691234944034872521 GT 1 -14965706693267.9882875792829190458726368599909974 0.6665244949294262261054020621998390 0.0779186775123158919983330187410278 1.0811218570508347595198780326925126 GT 1 -8027197446375871747640163.8209047687497846368667501608902280 1.3496838865780266257347087921902642 0.0500516926915000228193355422985664 1.0513477092274847910628081141157972 GT 1 -1428671248466086988405508855716285723.4810517235095462823282567383532036 1.2318900607382812941055458965286162 0.0364357451727514205541082312834222 1.0371161043764969233553777420203048 GT 1 -176053772851974576189807897.2851786283205881402582832842854453 0.7658514110358665831126883939892674 0.0698192222852205590409237003693687 1.0723763270855337479923168226592349 GT 1 -6296.2936866845213904925963805463920537 0.3385497997874699647294034714636622 0.0235253722300287939470721095159610 1.0238065118294132878263669288478659 GT 1 -88420662202978138184731855911855188.3006744127927674912914868636980560 1.0768110568093384789803978902574312 0.0734800640019986380729650563184432 1.0763197159512529082097077816896988 GT 1 -1238557268600.4142946275212844495874857055533797 0.6584269081679470800005036328558848 0.0916724999996407387245237364324711 1.0961502825914766463048047327168954 GT 1 -19517.5989031918237310845711315895456621 0.4032533878813151381285466833153196 0.0774507371162299054526172823811544 1.0806145029932423597817014210787851 GT 1 -154079107063325285494.3519647003179017442619084772936975 0.1935847647502407201618509833231979 0.0489253073462318540165176488021072 1.0501626783497883121303112056086472 GT 1 -4705720563071.9164864273482816010555233594958956 0.0313709558826599397112239178495361 0.0389315710306583142235045635633843 1.0397096665433943865849170169692470 GT 1 -14917094926146181400454525916586614545791.0099213210953681212490278500058904 1.0502328187369258090800579571234792 0.0647697035328267210810929353903347 1.0669624736398834979253208592013044 GT 1 -7690568249647881391966567.7563882008765937504974706643803838 0.7350835076434080220413754369885038 0.0420622693880543062420244124024019 1.0429725024850523202276617491670022 GT 1 -57457777361308343220440317951141454633220.1368373033429415506418364030010681 1.6261656632688432515814683732641913 0.0972028299406543061507579660679307 1.1022573686700033433348365470118544 GT 1 -304627166261845774393613484310.0310127294846271810363619830987538 1.1491344295381974235713885263621202 0.0192919602663433567691534004346615 1.0194804786632933046602983499036909 GT 1 -173248421121261746820265266081.4412750023153497436201096279126338 1.0232422695977633469717995365086235 0.0512853010901048007119784119803646 1.0526471589646426391857459212386983 GT 1 -8409363045.3284470861682390209621044700699443 2.3988146524924719387991184104134153 0.0685116433890315417545970786209597 1.0709715886311016062250796637889197 GT 1 -1959199463352643905857711931484336615.4823399757938941663927175202048513 2.3130609025738913662679396559935810 0.0897599304556659229291148988792229 1.0940469015776076007000380737126580 GT 1 -3679797736901265557274105145.0135606869793001474203387162549476 2.0921588986277525132183698827252325 0.0080261651297360038955656302664602 1.0080585481839675041451981182610052 GT 1 -124419502045.8561859486257823792257755964848905 0.9984595045441883689928930599165439 0.0605452340507495218864062216717146 1.0624556082283776152231893567800508 GT 1 -70711690847729298011223917813249412.7612004714939781389285885253884226 0.0228349390941484873741329122460599 0.0651942453881129300647299824377260 1.0674165203544747061504050093562498 GT 1 -15018606237933500991473277179033.5889020350092580908256222452127372 0.6183186700784596604009206043195604 0.0008575818679235128102952697963282 1.0008579498016241618865278869289909 GT 1 -159139202675863876606598485529.8283773392111729199011144267104242 1.3655599877025927046200860184574516 0.0604369908593940512228414106706732 1.0623403957030782963137088053021905 GT 1 -24010245478696056565331531500813432221849.3570888672203341562761941738640845 0.7784234349045720852094707595873700 0.0973602762500258775667438982988836 1.1024317821987293464808064286137031 GT 1 -2357690886272853850791.4318993518460895296908194825475692 0.5829649143635629569422200596332541 0.0745934376903866290562671289312468 1.0775221112121276618977126117390391 GT 1 -244605196414869.6321194400918259871506195395697803 0.5306361001231236063710843646085354 0.0018935072565900066506146932553556 1.0018953022076485152882408195131015 GT 1 -1603635746321458759612294558954992981208778.0827060292201410399109552594455316 0.0341564884858085736197057089589334 0.0266116183583148011518581725394079 1.0269721175059933713230120660965492 GT 1 -4294263776954526263193394835980526492825.7847037759530663675548115592964438 1.6181558202285010717630208961650306 0.0880446411417399617649937143707024 1.0921642387261573790117856187191506 GT 1 -7704526269793.2969050423357899057293220599083866 1.9287061232344102021982459885415027 0.0873101254704167344020085386575943 1.0913591334952241425609156734975265 GT 1 -24731023205452902679912341636206564.1480982780602820416163645735010930 0.1992537265594006130149147165012543 0.0254198199812016027454234115872175 1.0257484853085604531710334085662755 GT 1 -59217343715651193313159683642052143863553.2070690825306326798452955075249038 0.4061736209751151392939943229541601 0.0973209164003863330117871796949630 1.1023881778785554868543793919734664 GT 1 -714522195716404407062125576343589.5984001189755982435025073888745737 0.8701390909053616044888771415565626 0.0888458692852861261397917644242486 1.0930432075425817298375741372146084 GT 1 -97936893202764315755546759.6257188294587350603608872045044025 0.6195404941997735862493281938750381 0.0651728446587497501334337285665493 1.0673936273798697062840570998002902 GT 1 -63178470209261894628181014707005992341.8315314434373727983703669255622272 0.2221529672296990905812835410773844 0.0475319639506766217491553166975211 1.0486987304978280096624133123540260 GT 1 -228216724379457841231314084.1814381798937478286139143181035440 1.5942402018157061651907632122473237 0.0728891410428178911648576025871291 1.0756821316158963864911374151010914 GT 1 -21670694137.7753056558161486011669557753197695 2.9581057634870047296027247015580343 0.0925287350635259073892421380184498 1.0970933773262923928876419400113128 LT 1 -17628114625.2582866359954476663130087775958969 0.6107818002115516476933473912350288 0.0772411957725026035960423905367515 1.0803873958252170602791882121482917 GT 1 -12879.7198678953971481181852479890973581 0.7738532230831967426154184304373640 0.0487859952457468701985980033937510 1.0500162104651566492259236873441191 GT 1 -220580043690496846508738642585868.8527806709749746955213165084170362 0.5984205724423759674669616161435148 0.0889082763540026236508708861002194 1.0931117022175363232931400252079897 GT 1 -2508132825.5306880575890024091029704660086693 0.6517812463838729164903557389042143 0.0089888412250439162889439332273342 1.0090294845995436080150915725121187 GT 1 -24347810827616470917065754828939367004994.5363752448593555811804049123376764 1.6847357053130330576651269767874807 0.0685350144404854545963093594241516 1.0709966789550792425460011693970110 GT 1 -40197979286689049744521359468890079983.5639550217553378227298202998314906 0.9151085720666670163356260078647277 0.0965446759547233153255615110878991 1.1015286178256925929754533393883469 GT 1 -4.4634625970721645867719466316546070 1.3230347295766693451048126114932583 0.0053497431404012289442578455106817 1.0053641042579949422187382905433672 GT 1 -194276839351975.9594659712389995249502970967629786 0.7804110619858491787044582416095150 0.0434996571953601700489741782820895 1.0444741317070794596173723629727808 GT 1 -23299225284070477022096829752542.0083056830565578872249751171188577 0.7293821588105118333730026916607190 0.0075530169852649069918356025874559 1.0075816854649586802274257608624160 GT 1 -21329093121680319465842.5525328729275352399289181892223451 0.3086845447501337208580601914893314 0.0783678582150649288953194429380441 1.0816091135799432534578082843568833 GT 1 -134835826704009775612.6315567333895293027548564471997659 0.7653861855719047359240351037975785 0.0602924732986273098948531935282788 1.0621865939397926579765966864273405 GT 1 -4922452381983661102614897817160406554099538.3847002803903409767736202778899881 0.5810292973664614115282926862413976 0.0250641875768209498739452304651837 1.0253836435635281153735607861230214 GT 1 -435339463865962328.1001620690280435821447102747507811 0.1045574277518339029022056502983792 0.0318497371671151304717375185403918 1.0323679735532595028868667202851686 GT 1 -234761952362591827677862245762378874.5856383086807031075204871254916483 1.7166959165113881951055098437459074 0.0564403765851601166019008450967631 1.0580957223017757787103609556043232 GT 1 -122289598010.8840178744160842154250869723728329 0.3589707675546813326142325983813578 0.0682963070217268918591186912228239 1.0707404408347046695486195108201512 GT 1 -518108914243568964.9844628987620887449204347566802277 0.3750200632021561755125700639404403 0.0072980494834336455315650962605746 1.0073248105283465370569674565129643 GT 1 -779612455554600845088795815720375093.1811233928732702983155758699066938 1.6036918572766348798618386030790084 0.0009669124062268384313753341300095 1.0009673801675746377297842949161875 GT 1 -4264143262850.7049643509140614048986865175063910 3.8687472292481341084903080619450849 0.0045625631840386059540803178865810 1.0045730034437762033603952980018543 GT 1 -14716373038.7812421559856417040372624976744129 1.9436529540779190827061351623979599 0.0950033927397539792932346617741275 1.0998240841729440671650322126322194 GT 1 -14539142750824133.3592196104931778429677552356693713 0.0632993094422917106955436161773343 0.0049857882428803897248924203592332 1.0049982587525632930679800289580107 GT 1 -67746706741615555048655262093.1001758783714164783810145278148171 1.7737397684939205753155896024789189 0.0075095193384691934622235587061372 1.0075378577398049465484623788033664 GT 1 -327899178322119965864858368774015821117.1324232345490910884934584949650317 1.0188378004497847350085545897880076 0.0000746970140598577425608673279740 1.0000746998040207478352764471909075 GT 1 -21215684153737708854654976621406347595.2303308675572461691264147661262116 0.2765970087393418841226559479041936 0.0320468133383707777011716641513137 1.0325715537617320934372009410432178 GT 1 -433888441568452898706.3783361187719337379400789237313509 0.4023977563118337222375664268166902 0.0409949102179629288472070891309575 1.0418588967279684844002858338846258 GT 1 -2067545629525621239661201836399912.4667757839576956240846300787118903 3.5280385869513709765358747717695960 0.0879163186477089514900708644073522 1.0920235372483777182452588562548388 LT 1 -15467137941551509739358025290.3037482237208921032338172109262138 0.2316742428353560183063025785938571 0.0089206575698254573471144104800383 1.0089606848598708759459042724106597 GT 1 -700346009710531834.6891303260768444080890256569131464 1.1518607954198847185919614642912700 0.0749630985541921176524904779229773 1.0779216488105071284508329625985997 GT 1 -1491796604419828346933298688.3027316467699548001533212927250406 2.3502471714940319118095038408746162 0.0022095277541166257864175404688893 1.0022119723621814593033796923922235 GT 1 -13127208268319111857588985739739628.4626384531486907796256641984971614 0.9336574073411855021075786014805350 0.0941279163233421501900528493468066 1.0988571709019798028651169192412160 GT 1 -17496533083427317567291022777047481474563.5808870304948684029452473218214061 0.1153171633752870453541732958216467 0.0845656647516623246153430841355822 1.0883566430015918923381926433601106 GT 1 -125628456.2339140514933489407764470908496006 0.6955342722141406627376846501182635 0.0422482030199177920525111385537414 1.0431666191514215841530356141960002 GT 1 -242541559857481028341678.6965576980781475133174508092560298 0.5462943395302750609502914840231552 0.0225943316311063165530274358820188 1.0228534947267485814259884310864860 GT 1 -322111746685423.9760656155429156259743300057110713 0.5032437556247659804106297582138718 0.0210291330801230070618108104047325 1.0212533948924874234676029465500028 GT 1 -11407651617717598.0647568011210396118101364748801190 0.4239377237882232233766739176537798 0.0639726707497223587680344406373213 1.0661106050138325934697649325074516 GT 1 -264226787211857402091848925697182.4594332386685557953512068113881232 0.0092634130001432166167678295370774 0.0381727210621792355317482805329687 1.0389203881600134714128173523281991 GT 1 -32201012981315598993156000872522533156453.2531258028827834699771911590000018 2.9446768372573503810522466689182013 0.0631201321784374723417242266130979 1.0652002143319017824744866578196876 LT 1 -251405094284953.1827593428218919416030053632121377 3.2640381706244960622731358922820685 0.0636203428426429127986903493964137 1.0657342681236207599124152616004055 LT 1 -16983899091344.8549903763249048103203342307326576 0.1331329931174217924317476812292553 0.0233600026835532209554254027815232 1.0236371725138946900389315056914519 GT 1 -12.2726956239484645086940414966061144 2.6318629517616931561437941301847783 0.0602115017231221559439420718072214 1.0621004308679062081270490514951070 GT 1 -5389584874719359881304109688609020170.5981985736656948030136412923858428 3.4345806456408480585724878744605451 0.0994051724988327777469803509103195 1.1046998145231564304475599152806460 LT 1 -2082537319752670403332551587333554376170.7612429659167670860111828823448710 0.0246581569666478551945457067997822 0.0364331243715338138069583734877046 1.0371133844772890385097560758132274 GT 1 -831587984186246404.6158056129471247499995246076074150 0.1997635839993192952898059708016967 0.0029003750797131027763275990022739 1.0029045893180684311163234625334236 GT 1 -110503662.7389315551883166779184977778838856 1.5700339813167650161225023240667373 0.0828767723391043494096376498985168 1.0865134344444397998780245477269604 GT 1 -345996050.0370637598223224099208915111721040 0.1967912312379048794180434386559656 0.0954674095026355426808480368661150 1.1003369432896991052886484327305425 GT 1 -281128482584289944917393360030.1680121107844943160100364775907407 1.5509936076661470205629131646351899 0.0386576953678813494305169642233137 1.0394247371473576079680633815310532 GT 1 -4000346558.3018260375908180433915785213777387 0.3443076565000565413202355055523158 0.0168153492409337695683194189392603 1.0169583323665482197576552417907777 GT 1 -48790183838167648995740890597770.7294109217999475609037012275281078 0.7209520542869598315284093390026577 0.0834523743457914034566704104864134 1.0871412483452307311837835767141717 GT 1 -481765824785433817.3558603654107078861643548170502453 1.1273565155871837206856099384374872 0.0763805246220139142688177941671108 1.0794551153469067764169103783736031 GT 1 -51451736061606216.8048407435206378582094239161781348 0.2358775619425494777199695984059199 0.0251504607678586087490955870358312 1.0254721386289164343327785898205333 GT 1 -42251124105005402188761530730922051.4530994322462392360737230134259822 0.0142235883180012872915888420673146 0.0128184043768164752218914653023754 1.0129012690121067488643824406030956 GT 1 -82192.8237552362407982171315426922642166 0.0752966270007002895862407132769655 0.0418094313505855549486055585864401 1.0427085973602925170868275496760683 GT 1 -56724669240645098301977447558369639959417.8408908532268898049317953060651559 0.2630300290191255198435935318814204 0.0110468433914004743811681340117030 1.0111083128809517972282883544790669 GT 1 -1146957567829907895059192577.8107740503385924381541598735290045 0.1529226943634383849209028628330443 0.0440205330036593188020364482133379 1.0450188441986926547810302499602548 GT 1 -5.6909994524803709502583889165558902 1.9436393735758742339857628217910952 0.0123262310340877213727469192469080 1.0124028291144377023710467109008055 GT 1 -18840390759.5813420816931582241421980083620362 2.3723060799878118916433409358663267 0.0318926698117200327206834163811640 1.0324123195584260466464267356025239 GT 1 -2.0862007171345315735109596133613227 0.3105406073685558449903272992782055 0.0422886650708858726630650837151256 1.0432088669507136219513032674142307 GT 1 -56141754903400410.9120930993705879739300895943299624 0.6912655545245206453929731495977708 0.0070395943485868832927560284600872 1.0070644891947587808972703829030072 GT 1 -828694.7384028584793684538021137580082045 1.1064664425643893430391470358980373 0.0246397055595953428763940509372987 1.0249483434853148260177808575286903 GT 1 -30352227577662993417109405.4025885112450424478269546005369537 1.9700741693273245069098585791548396 0.0586952071492928688141547196792283 1.0604882887063393150704985287647827 GT 1 -27907350946963395852427804371393569229800.7474181407239383773467548074890127 0.8983119615169293974384922615117365 0.0892394722274538434466248156941139 1.0934752837064762542014461761536127 GT 1 -53187820889771566186693764012672162124122.2152147820291684542324012558183248 0.0611847725990739052739526944417832 0.0357636135973941726876809167871899 1.0364188003210704942728195862953881 GT 1 -90655129302370575656214580679691573267.4160351721005152476768299516610245 0.0322030739265721920315586922175200 0.0766786555150515621718654814924899 1.0797779528654896843369792627834910 GT 1 -6129698.8607143967122368812778162160253836 0.1846396099954290746718618266003267 0.0196703272606267599819729975949189 1.0198663631331043112440579419553234 GT 1 -5662381051425254288243.8012506505590657736702865319949751 1.3895764873578541597365941609690246 0.0332919546274149644561522379240591 1.0338587470339665074213879700287361 GT 1 -414237824079500703495880223685752520924.9324050866285212660047040258227390 1.4116397249318511686501485784027193 0.0660392629083919939564926779936135 1.0683208790120416765032286725192291 GT 1 -7313.6783151471409470838120335078604728 1.2300571702025438694901773720189040 0.0610147050427739618270157405464522 1.0629554602189412575543575443540131 GT 1 -110963683326483640340993368.5548233252171500823064032508450264 0.3860688012211447921419880857330407 0.0828547509686276385193703725739803 1.0864894233787124097676191543505986 GT 1 -76144691525344532477660094356586.4719566667124751378111848873059426 0.0993244513128890999918489163107392 0.0558527574869427858391296934913147 1.0574731477614129784245735782502792 GT 1 -751509529289742352217872803702532369949811.4049628347089437175783438269059130 0.8131552444284964348571324233407231 0.0534249027698381065857299233714255 1.0549049694514745981541659617394650 GT 1 -71056718328077069265777671228.0888743216714998324975008193936655 0.0368789246215149399682909714405900 0.0687780284389278397284446350218870 1.0712576073938511754059718054583243 GT 1 -881880612.5799789779941403393415484791124532 0.4981849424262998131469814318217704 0.0143300491291438344522028987074131 1.0144337158410044715223021376459816 GT 1 -9651887130992127925443939524089219237000144.1279712542937724979302983239606062 3.2792039589213768915601385147733968 0.0787392368301421404974673486789582 1.0820121523231127131934117476151501 LT 1 -3275034750304502046.2377249839714328552856140376138611 0.3505035044239416847983770630481773 0.0749783272224615427764744576164754 1.0779381117144194135630954862945458 GT 1 -249086603888.4386638431239688813644996791736117 0.5012670557537823886565274765581674 0.0995187222774005499216002330563450 1.1048259055621623676348559136520280 GT 1 -40174613127394661521854.2652986254629912016104844896136528 0.6366928556438246243808240016583939 0.0633678033532554814836553938018294 1.0654646067326318524879309606743519 GT 1 -3153011183073915973408322561.0516677118775056740257452927729577 1.1373823680656855147700559211827999 0.0974069772421701111013701536172324 1.1024835217788416550604082916595318 GT 1 -16436815.7231135331268537576031497537496868 0.2623871639502073589173373261223772 0.0317206673286291370036890854892860 1.0322346665236863237090216425204376 GT 1 -5.5980418864408198486991820142618161 0.3000109615754763706432456768726467 0.0434946410604641703535065452560227 1.0444688874624946810672862353593549 GT 1 -14099376152243899541903923592.1386462369394795385338272299774392 0.9953189828147307579638412521363828 0.0537656859221359266105239655117718 1.0552650513001214237277894567367372 GT 1 -71587081155166140687311085846.7548162490290053260483447763966900 0.8897332920181601807324296167880176 0.0370733605398364893820209565313153 1.0377780492548846965863447561615435 GT 1 -164.4244168427132100335018718260958923 0.2088848597403252785859684062916141 0.0741373212328547127147216359819378 1.0770293504006361008102348406022829 GT 1 -2661675502.3065626180038608302891386496969560 0.8577903702940677384799159512159802 0.0889329012806923452769914427955746 1.0931387305164847713128204956669367 GT 1 -8537034322819072988914793861623431235619909.8715843195651854926614676474933807 0.6874773950201497718328510680288693 0.0046850590337032201538092904869968 1.0046960683223480696114685095227736 GT 1 -178751510174276609128.1955562852042232446473652770427492 0.3598391376825769570805763200623154 0.0607618116297167518303756142780048 1.0626861702043819295968890481146890 GT 1 -235737875417760560357102.4687486214815911401990111422680159 0.4340483886679657564501725906686392 0.0877148747096630106376095086650692 1.0918027003889322422236089935680282 GT 1 -647959577.8937017139032881899851046481453221 1.2267396550536749805144092934496393 0.0734976977225789794336093826693374 1.0763387483408450429144350624159585 GT 1 -171624241481997178877175557580048278.8088869414313496012188894636410110 0.7923242554087611525499410877980798 0.0226060719062825928590955020688152 1.0228655064697402032459004430286250 GT 1 -395624466497308.9758854064630897170146434737819872 0.6154182259563444209276827109578660 0.0334010285109712095583465768579833 1.0339715836219690024988236497724361 GT 1 -8586755695600007459813070634132720.1762918786244493131372230081281989 0.3395381310609693931922134070152120 0.0788556265219545988435511863254372 1.0821384977068202816827913456253564 GT 1 -31354011164577545763952778454724855994693.7497934005482023367865136797080272 0.1053460402437372999348265032852006 0.0097754622800531738350389603321666 1.0098235557923194121326619428565175 GT 1 -14372417194741938823254690431498.4073583002100386840977809220188274 0.5879440164423153711244308441160705 0.0607178807517888645163866738076890 1.0626393984151627972752720862195785 GT 1 -25137475833140015211759014372261.6236191126711155385643617994348241 2.8821101819723346947293493958667226 0.0014281517734512874409525372793082 1.0014291725541976038823591588881244 GT 1 -694178764724486513158271921802220797084619.2600451132598816461218563141793093 0.7553499281576591168331627335540911 0.0832736568953649594765451608601475 1.0869462775399521508425405107739849 GT 1 -78509734552162436159010812495738.3828334067069817567852038286940937 0.1711655544867299936118632473897558 0.0441260913515150653619108504187210 1.0451292693487671540179732821443979 GT 1 -1516247638006581505026705315917.6559514962405192199230287860509931 0.6953423912915017826715436218191320 0.0193956266284674064171314334726544 1.0195861898814836398594162285976031 GT 1 -550324364.0886451878400554130329718177628457 0.4935192915138020644144823745676751 0.0970786883026434610891240296850576 1.1021198703396039598864299704697239 GT 1 -63996390453565635031395721829468823766.7085318568686926970816215439540883 1.1564776794765931385395906217716235 0.0818200541445716638940804948116160 1.0853618881205911592819846132089336 GT 1 -3.3636773239539570635749042516848146 2.4542919184748959615599695643914861 0.0662875859544550154597709202306946 1.0685867960408056328692803857487393 GT 1 -372.8490492096562166723063367794404991 0.5340957583791232990243412932631852 0.0333564246309642580745718754887112 1.0339254395102667674085788424585177 GT 1 -24144946532661675611026162554424398836.0969939755602864204903290984996487 2.4076956341008496808520921566350008 0.0296498311714280002133661148552802 1.0300982738367527560433164896803389 GT 1 -7939.5552647303022581453434297191868807 0.6207841744452760297094784992717611 0.0619497369231771506197212171119510 1.0639517460418098430157279447463895 GT 1 -323388898192596349234457978393337713072291.5757078756416197051613373247452463 0.0729658697124715750766768611400928 0.0307492445105075263383089341576829 1.0312319229735818682463444497816066 GT 1 -245101914194.0694758904621643782421896456541866 0.5368494249705689643020929436473390 0.0886970079948672671127216737854776 1.0928798442580422729367274430690914 GT 1 -3185421287058350727514714145136963031438.6179385313204733380544664198595435 0.4985268078578571158616136469135494 0.0049752798793469304380825997775149 1.0049876977897949502265082577560748 GT 1 -15472130881.8270903426507171443276022906718380 0.6572980551967439617414955299529923 0.0586817489633298287076358904924432 1.0604739914352982893384085625390032 GT 1 -8447124511566819930179.8773022696050686574501645260185577 1.7584442431595474334354040232206107 0.0991183420216201709836894380094751 1.1043813751963616017749954516722716 GT 1 -1416981313215379979223290500585757491755446.0247907752596878649995128497908922 2.4788056911898971484882691768165186 0.0229821800183583893516140300147746 1.0232503876157822553422892614440295 GT 1 -2386557961.0220389806139098427617693515559103 3.3532611876637242982303910028098654 0.0441678395607613013390647098463979 1.0451729457380698203149540772943317 LT 1 -43162578009816568033720600434.9959403302591012614606142890379200 0.9281232423643074848938081596649050 0.0700825875584962439889872242425700 1.0726595006044687190746992733712249 GT 1 -121084657.4694867409420398458086733898511065 0.3224428838647942660625600408532717 0.0382570047292928426714927055250318 1.0390080206923910308969057164071534 GT 1 -880553845313149617253578028648781.6310067846549233785047506518155317 0.4946181193137901620812328071340235 0.0916752183310713117996812287602786 1.0961532752736294216062453688229038 GT 1 -12554452977351416525859.0089654510307915412014445773680926 0.0510409960455549656235782407570957 0.0630992926310210435177102037480498 1.0651779710151621275016116736694192 GT 1 -45189078.8440104862264297868685828124241800 1.2497595699167454569401978563487604 0.0328020459527502159859640103998593 1.0333520950195547108989821922881930 GT 1 -6020.2361196794298407501036225845340031 2.3880463454253330374756137870495447 0.0945937739446068168022156829994781 1.1043089216302345391447975304163693 LT 2 -26421.2063997127024652892365859471438137 0.8556846056213146967714730012273786 0.0483559176676053509030625187902213 1.0495641771912268234273053439062848 GT 1 -13322003962545941458071606490.5452265749009257097519561071542322 0.5544140082900657267760889472617593 0.0933903720034655343186961397486545 1.0980433206370794599106427036912820 GT 1 -65209357083333702400558696754430.5409352614574925990526148148886311 0.9425707919700306030468390380597107 0.0284190645949952686950432051889633 1.0288307039023278139155561016032286 GT 1 -33330441238667015815.2618947411565533852862874843933311 0.1280502008204889505801756871737893 0.0812891031301473567495288688552961 1.0847837905909378347746518409150509 GT 1 -157406.7949973859138658319044962953605195 0.0199681359415619670794204736647704 0.0981402390085943681992347477607326 1.1032962466263846121811724617438040 GT 1 -4.5951917691274055144887553582813615 1.2197785938602886496135225948507990 0.0173528045287806852311996771253653 1.0175051291867020400460493707103472 GT 1 -961733499774.3322617558054696868838408272562979 0.8221885994050073285145210983815120 0.0141133726782135682859312825470273 1.0142139134227535519992932114947573 GT 1 -6.2677950758430058989044916988738525 1.7387925381107275283437330646646755 0.0179939056540628216696373231394883 1.0181577645920027995849630314620634 GT 1 -873570270143036682265658086191.9020347130400745251119612183331547 0.1734165335089499769576118794381471 0.0116667684336719589470674659948409 1.0117353591867283682431242616353179 GT 1 -14610024157438336969266694432957610798827.9997964683031325705408139739132025 0.2492201733077241189146451814049584 0.0625069401471333279278953752658051 1.0645459239885810887182283490795159 GT 1 -257480228539756539049881354836132680014.1907777154292807498299055382638039 0.7970307762593193305045219544219612 0.0726775314738092562468724706019833 1.0754539114186091951100243189285193 GT 1 -29930832975073942293412294911564194098746.0390801241172451626457717882510854 1.5563384456243212771209763998014549 0.0838314071147792366736744888325017 1.0875548778756049875553505804800725 GT 1 -8259559424423061938372614266.6804153800532902979420171495223845 0.4858973511579172538543082720850211 0.0320754646889692134784830921177094 1.0326011541339821878545774190801855 GT 1 -120209.1500195973473328612374569958982307 0.9581366199056468721972354795444471 0.0302463530494531472608682222389888 1.0307132119570444607215750940875238 GT 1 -13403742656663257265815776755882689.2878807130052021119972840152269809 0.2024500661640245371116836136380792 0.0206292500023865083057138527012962 1.0208450053859377892909453087091838 GT 1 -1489566618004036661689713158279676.2435845711249575682587197006633131 0.5564371420182264561589027885150030 0.0583025234071371769172305969955823 1.0600712060992490249876319173797866 GT 1 -74307937844682520914890798711356380.2307539965540791349579611220265027 0.9102716816953752303604536750849435 0.0559475963061811082543297364857544 1.0575736019898719149963871155346404 GT 1 -1574112254018674.6846115349191959025348405627038687 0.2338030849749661990823741035827477 0.0743044272925683651423957203984045 1.0772098535633470572290236767846065 GT 1 -2652597286678292735375469974.7358247614997856620934336860830354 0.2504473900627906418214579046164626 0.0874007794641269782454691166285401 1.0914584646028605804656236622610851 GT 1 -4.3693713092700356638666452261677001 0.2895731846838791301858161273201787 0.0044564574535682203315191920906361 1.0044664170608115420977957134691638 GT 1 -368827005211219.0113762073397463280097629895482674 0.7111477677568308713829121328650953 0.0695242371785241964537997145230596 1.0720592507173365675915316679898534 GT 1 -1320174.7870336830058059674865739152855351 0.4109532738489960532716023385051757 0.0574552183736318509945696004422014 1.0591718471267804345080564668726836 GT 1 -22016708159143138597824234655645005.5089722622222056887493308169786638 0.9398604990803470878597122278465586 0.0993307976440829683051623379991678 1.1046172337870075188645470156868170 GT 1 -533465.0432444296230242618308678885703682 1.4000182632625488019525098220336299 0.0641242615373058494519776514673369 1.0662725693703524878372753034438204 GT 1 -998867692228889651303471317406789057662.4039647576864830062951867441193616 0.8431921055482718512746422683399399 0.0787426584794553488432774720275981 1.0820158664242707989288557932316595 GT 1 -22681.3371935152068477808540011536011454 0.8286914909695084155038750155926471 0.0400607566617760214376821645728641 1.0408852847123871095624901741604208 GT 1 -301637485478032220479020474833.5111657593229094736256896113594999 0.3183184084959665241648217041406905 0.0859642587971351051470757276337557 1.0898856041318511111650078021700211 GT 1 -2102849468428020036248372453014.7318524857668768072323213864617333 0.1130847132134667731716115083709203 0.0402003544785970068953127270375795 1.0410307188835414627335126862622513 GT 1 -28161595001910249307303394440542.6906468856087164711380965537855726 0.9453890075029167339630859954931984 0.0881855364069947450239909539313101 1.0923187486470921535008724234221189 GT 1 -40990168259695293156308783255733.6799145980534108099743406741370806 0.2977363109423919700840600360804257 0.0843452033215727130866116774027076 1.0881158448587697613678906680495478 GT 1 -30877420813843060219156173469231296717053.9162160982574623030055195198978291 0.1059976108662128071197394985352885 0.0422226337643498980289009601800695 1.0431399223450660100364668311846554 GT 1 -7779445611748512717.1906826295790444226973329092436398 1.4369276670460054214789831034779482 0.0559332746233353048951610255867853 1.0575584316728875957360641873676782 GT 1 -1110821189.8301856357780212853159322795074603 0.1307053642350156693643601050632716 0.0470699101368344184234906124678996 1.0482137359797632458101220571296208 GT 1 -395686399002.1420558446888725799364877694131283 2.7876934357724934852889625574099113 0.0739055781717761060046281029057619 1.0767790821171929338691272557619646 LT 1 -2018768.7405544041607599960893434165879426 0.2227651137277222261390821677683343 0.0735149133394569681738411302208153 1.0763573298131003410726268414991083 GT 1 -36335126901910708.7442004034136757767741323578127606 0.0676850117888875055806187019201851 0.0070947652672720876373965411440608 1.0071200527913863214947919450739145 GT 1 -372200.8417554127766916694836821904227775 0.4303517878478358038871677787000989 0.0927508242387146089738078465898004 1.0973381413916732604167806452976559 GT 1 -1101557256517665.1681774046652041697407880734094666 2.0736872840927848492712593173391667 0.0340752860445642447552184093425114 1.0346693836707144441310985390085819 GT 1 -7564399283.4562672490380131908451474748425305 0.3525253611896873224100815272949779 0.0175198646697933560036553922506217 1.0176751539365455968125889197467365 GT 1 -10901212264858261704932.8393102727000186595096034810091056 0.5244217759959756337880229617893292 0.0914960054932033887618390151190301 1.0959559943401708545688545966580499 GT 1 -15886103111442181512385.6703260338926537757240704833814982 0.9513430444813079910557174808130964 0.0826232908800526223266699626608287 1.0862370850637909132840144215912923 GT 1 -399078789735048131861199408197530057.1958967922137586855539242238771738 0.0885171303099035491445272101663507 0.0063252303988145746118254322821359 1.0063453194252303912119443904989135 GT 1 -1779844700079324750665371985570.8345749052794220156958250509130012 1.1631413278232664346607137345232336 0.0340240648073574427241771653872454 1.0346163568887819554988105386554276 GT 1 -43643321615635611442242264928.9149184947190165340143639912882434 0.2160098670979312042533046317479236 0.0211960048810210334861952024217822 1.0214238657719922874520203155739100 GT 1 -97805738640417642484031219294868021.7754098225349368350649134733216636 0.2598165023333394047259440425260807 0.0630523542993026815178877465016911 1.0651278726903416728503986156012750 GT 1 -1933923239241702200106622253620135947.4767553219644955140543343495073540 1.2091041310123231481599435450918702 0.0600764908251374451952362152639908 1.0619567802472987370818752275705252 GT 1 -121001390443951582588.4843720574001666887926211378224588 1.5110535636693509008407925525279809 0.0587814145179921596264412949917424 1.0605798757429219916069414733633747 GT 1 -874182405747572106873175245560672101040502.8134239790905719662337876243152823 2.4964792144488258519683861440871172 0.0739627668378002256006469178854682 1.0768408365458138192344064779963406 GT 1 -1218792989814756459877997099842567872300364.2777682758016493708355254289016059 0.0310221891612614490799397512110017 0.0350665882053794075480887633837944 1.0356961833456265402895860481085723 GT 1 -163912381002517.3628138840575871264292320735803528 1.2927379186282448445006770416409153 0.0350463885555757752512195578041541 1.0356752498406481321132123268998872 GT 1 -1958427792835207733805819185965708862.8650199193582074601198667322213121 2.2497070806350986998024493138982679 0.0597404382502527926635122587127102 1.0615993123138193804571666339411699 GT 1 -518543067556.5011618809026547472345498344669968 0.2007300727585416011530402272174770 0.0169597884519661834590270261697381 1.0171052527051739362625861308395146 GT 1 -65636032434289.9930045475620500972985263926600377 0.5494927579862396141546388862606472 0.0574780139052911843364448092343722 1.0591960325106095736854816990344341 GT 1 -223088472113834873801072018.4735143227015912280489891847351716 0.1159561627770420658726941084959879 0.0373983977274409658287322699013887 1.0381156575886884953883518144702078 GT 1 -9143668630634898320977692894106485458.4661111520418894158692818695092606 0.0211906612094326264268374870699129 0.0970034323155304386050629270853047 1.1020365265862519583425383424683852 GT 1 -3790261365990.1091251416517003592392225818108645 1.6092398822530207973751119860530803 0.0627143690543077513581708793816575 1.0647672076089240217792459095175794 GT 1 -98199.4400326501964377544932499514291547 0.8705438479904728969247829933974258 0.0922863853446439140407557529602735 1.0968263524925724293191578337215107 GT 1 -790880161088.5641609804097312054050098266994192 0.9475897367901550446547223715228750 0.0166165993991108109534638493797862 1.0167562037472388678456578296833854 GT 1 -255798628702413933602086335745708.0138874645877160404760486848768560 0.4779773862513777415463855033203527 0.0112801589656609415119669477548490 1.0113442624799208622302810692566750 GT 1 -13613872843892562076504452924496879.7050259076363048431129382190048637 0.2021896995728216833680255749968832 0.0005169255471898514072865976770749 1.0005170591992612849040019290953389 GT 1 -13632461097926860294232094739850778526209273.2951243510000153512330788896910685 0.9317384118726532514920435564784220 0.0985549024687232453846869936709751 1.1037561394342785283693302295380523 GT 1 -119326511125681117033819463740122510.4132119227151282129090127743721726 0.3168371347311066798945831199137592 0.0297032400304342219083469857061731 1.0301533161612757258683149403766412 GT 1 -2420333010117783738292.2115481083514619438378294723024000 0.3574955211101740616212704704861205 0.0859227398308111512580554496294145 1.0898401813748334309184281882856296 GT 1 -5971776104417274208167324551840544.1000048363781481536938079577554641 0.2182952863545057039246629428817389 0.0262448667313975934545158926559877 1.0265954101616749934642823741944848 GT 1 -8882794086.6142098577527053638207631712459514 0.2037243897446929799697434861771108 0.0381197026180093707580820568026354 1.0388652670544609146208958324792765 GT 1 -1551789595477.5202476168850119692260993787821315 1.2086365894381367107965839724207611 0.0735089808752201225945845858968246 1.0763509266390730628642045389720319 GT 1 -98917588685.7953824233895553580527276750405864 3.0536296564375631541255837482022881 0.0498373468776081039610659178376891 1.0524288295402669686625342999828579 LT 2 -236717407910579283562836762001407903.2295618496984229262314009036428578 0.0557895339496024311894930210637475 0.0386104933136387888752047701439687 1.0393756381997309235226543562928833 GT 1 -18856296517277.1335359120735709504925879063564463 0.8585196110938857815059510440840423 0.0643280110390881352477365881510923 1.0664903030670161742284175788482307 GT 1 -15230867797116218883759409.9470862027113518336774634730231624 1.1729656589535989941375054609792500 0.0971883751104738291090539718739372 1.1022413576379113168403447345692934 GT 1 -9206302360648405744036.1737258076278075886270446957205225 0.0261294917659554123890846745097010 0.0832583631025798504451189768082873 1.0869295946276217739557553607719379 GT 1 -1965619112367.5176229303177692247852461590175277 0.2942724589065097143729310398320786 0.0653462735412843471216435079911854 1.0675791643219379513834929376173025 GT 1 -26294003463199712778412334520019494079363.0204641908742484798655737624586100 1.6092761316558556982556829452116612 0.0452824487894668788401458113559140 1.0463397401411281651821857357658199 GT 1 -362102211886740521438.7633554516705608933849928303836499 5.2526844710777527920560918698780645 0.0327961238284907961937297418218152 1.0333459720680904139810363258223979 LT 1 -26654034.2758285057405533702715592475576995 0.5881660508445408153210850775986502 0.0843815550603469803817446796213877 1.0881555459126080430539101151908524 GT 1 -11725478112362809593926064080694706.5360935521978627061644412672015510 0.2855793185233854955655356739093119 0.0318475846844193259881500152714351 1.0323657502617048337370046147542210 GT 1 -131.6005597991615207296960337510307063 0.0097670090592542799203044499513914 0.0205329887632368183599181096797951 1.0207467213512594721956229432319128 GT 1 -462543345562990937418409440488030811.8433736004055590545045438088970269 1.8635413632825000353863510750894527 0.0807463850932862017003681480387160 1.0841932263562562429725533446258940 GT 1 -110202427050766440907633994659671.2260235199613154078728670546638446 0.2315357756213359753973196843426762 0.0227598551495136259658408472318933 1.0230228589334846807464506776648514 GT 1 -79641982877372208097334869353599048.6298035278118853919825817925972366 0.8942377193948457510887611443185773 0.0361016164123300653116738439201197 1.0367694011438541622126027768324953 GT 1 -6389318129676714336604460048265068614620241.6356261432345104763523746111194892 3.5339639890270467626194541219588151 0.0895494515645185169747968220067391 1.0938156938259923610136636638195313 LT 1 -201480545106007280088.0397245911826506750103003285813084 1.4218105079386522665925172110401224 0.0696547010512157897196050739732861 1.0721994725533697921315039512218638 GT 1 -91302505559478189827320557280827707448.3901762456181837998760852935946780 1.3804718315273562295265660318315203 0.0807050216776804365957097484211340 1.0841482306289036169500428235780270 GT 1 -46017409857934788311515147.9768436610494256247985866999704241 1.0899732991331532554601960858903611 0.0694629277704332948743041018613775 1.0719933625010294511269277539935889 GT 1 -211730702045227322321.1602172828000081929943429573681530 0.7585365921072952094991582559908693 0.0333910455502257207501878442057211 1.0339612557512711523172178099245728 GT 1 -1675143715666676749.1627277773363911873595861975231089 0.5690223452663621946473085972344346 0.0785141339460078972936278459981259 1.0817678399671066936768530083038569 GT 1 -24807840285988550421974.5163473142711725205816274249160674 0.9889877669173790234543804528086426 0.0361878187052011407401802277420268 1.0368588360356879259200510609213310 GT 1 -108057.4187435698499084517994375222075547 4.1184245955918240953728392189754717 0.0092117590100247726296207209870696 1.0092544496348014041382201378311963 GT 1 -18836.4475389437781939465457978629227025 0.0343834048980872049274334070424974 0.0492395825450234405889314954136985 1.0504931751420515043831303184358727 GT 1 -464004827403507435306178302610317286.5330693523387486201108908103342622 1.3521346911003588124847686552192591 0.0710144070868153677958513779457957 1.0736620484551987225032856725891852 GT 1 -18782864665.4567338139090961262839838480292934 1.1232410377609890058360427242943578 0.0495719445613807326500737948493790 1.0508428111981099015710400465203833 GT 1 -9243481085556618135911.2509117186626719404431459022923476 0.1255377124576402829820638287684863 0.0450889575362797589784932946439582 1.0461370920927168321965280049426911 GT 1 -23.0737067438815286671960630395463653 0.1407757807986637252293820312283659 0.0706226864804921810696363736103412 1.0732404724424954542121328847383701 GT 1 -6874.1713390054660620932142749228482302 0.9431481443123387340708464710774413 0.0558806248721002132593154963365309 1.0575026641283275890516190691154039 GT 1 -908445295481540398.1057826394562603879126957550291140 0.0520060649128166326833166842926576 0.0570170695003375347545958816525743 1.0587070977854019762158345334660629 GT 1 -188298351476692064024.2178761956274828189323122433088057 0.5853340696160864319112531225607071 0.0769443240372202681490652475817416 1.0800657256454365322700580107197939 GT 1 -625476.0778774683164611877935574333979044 0.6144378267283642679468024559749023 0.0455820924023688196580620652400741 1.0466536451749275847983792791351644 GT 1 -152995960892544939983398843502955703193945.5495075589249087710094262546851850 0.9965754551907891717917342438176044 0.0689415675768832318184795308498128 1.0714332405992759926862365832301215 GT 1 -128.8995428792057686844023900957992534 0.1151393064283164626226699592500276 0.0013952323927529449104881082879777 1.0013962066357702239632075734421947 GT 1 -5971825035.5342087291733384600022789086199741 0.3121738267874368640651275792614080 0.0988336627373715309770543831303911 1.1040654243589048660112039754733349 GT 1 -3039833775081796843528288689.4125319484138226792091706591421057 0.0760882839922068267796807002982134 0.0710032041693641384992418411818465 1.0736499892263069574526335571137719 GT 1 -43.2170276988488107000753800363097640 0.1338765611921895155305364461287698 0.0640560662244814699088497112630743 1.0661997041110906185795192888618143 GT 1 -2648614371455343447193499529.4045164376202466495179333497006819 0.0239263448959473947890350410328925 0.0010679212637763542012496496750054 1.0010684918979869471545343926703315 GT 1 -923482781811987359.6907035427778605047987532045260614 0.3019656755296872739717948391737135 0.0540275625363699807745576357203932 1.0555418462282577891519935777761507 GT 1 -91373735003191885045297826173.5172406026812279482155493469059303 0.2518799133194858967265844547983920 0.0845051804599946417269207582564321 1.0882905734963557085931217224544557 GT 1 -813522560121354116196.8496477935444276093259704427671561 0.5244111164013988493253341025784918 0.0121714952661099745751361057296518 1.0122461745052740343422091266931117 GT 1 -1188988480028819335051822306516176.6662127007975465077422305145763688 2.7451677988372569761226152718395170 0.0766158001078361453140714284789795 1.0797098798503508359781026562370132 LT 1 -1925524778573100805864159378706108449359376.4478902074281613251690250721616405 0.7180290220650421372310232987317034 0.0490901589704981524747888941790160 1.0503360253163484041508984076072368 GT 1 -180042790086461288511097788.2770652359525913395848623367811204 0.4857624492193324299806374005801732 0.0975338133238581994178972600049560 1.1026240557638034119331883709048789 GT 1 -182714391844578547763374697416647.2359195543261951568325489262978757 1.2385835084673821929760135376600181 0.0574287089668131270394608376659909 1.0591437221670445902770944604151892 GT 1 -543459523609812763805620818030299.6733449120087982410685991445736524 1.5967328922893953299098152253612883 0.0651467353991907360580242814496467 1.0673656982650517628328790517463724 GT 1 -30318203629331058132409116021091330863340.7287445944436252802603617448824874 0.6088163617535886015791774908920106 0.0202035235494745069899270524255794 1.0204104059766932450763472888161709 GT 1 -8700697951417269766.8886306412327875451111347512655848 0.2300356563794384398078894968500601 0.0801736749617242459702200899789607 1.0835704038920056516743238650795114 GT 1 -15021821477164100449679354734898340.5926007816861945837293034849982780 0.0209585232900487409709945962524959 0.0679070390803556383587839287302628 1.0703227257945823580321831248730887 GT 1 -748834929503873985919461758192214.4092033974346683137995016213124266 0.3823835506711927713416373842079705 0.0356823272151890152008105349260172 1.0363345025728522848368055577670793 GT 1 -152734951737177565267268076406.8723220921368511817908274151543365 0.1501346529217803141061662849601335 0.0124911125080931727111234004231718 1.0125697822555554192738333831819499 GT 1 -898455789319684750.4422088572837678834223656660785921 0.0044750621843810253680250987684980 0.0928261049705777841192746830428924 1.0974211217429686895495629917580432 GT 1 -3385106156809437523560.9877114847827968182618044605463387 0.5796456819918096701060883124712736 0.0488016519076828831301484376161124 1.0500326702635940799196598812863548 GT 1 -13170.3580250995113456528916702199855766 1.8009746208657755132337656202196210 0.0066415449317331434046204960222314 1.0066636981334103953315558232974255 GT 1 -85110676.7171599607138876660315307457578661 0.2595610558226716878713525707015472 0.0047859094690516269387415668260240 1.0047973986057439782291925309495408 GT 1 -82729057637121630655.3797618282596354864007174930133877 1.4107711780129223090804538050643137 0.0334528632489177945747224950230864 1.0340252109579867613268109123396641 GT 1 -3663017323244004051115617800.4895488169632921162528961509762520 0.9058515554824354135677957039908105 0.0252133324318378887750497215736500 1.0255366344192405763716245341243285 GT 1 -7464908214319.6111203910428505096534324693641320 1.4646903077292259345308867025303983 0.0085042543435600448122510700234866 1.0085406218469836838304908413319832 GT 1 -1342741998022312229467757393.1014451624811242050006850163119094 1.4567495689805601293660730914609653 0.0069474342235116362372690843440720 1.0069716800072385825926859841851323 GT 1 -6259951394633354.9840181190537315769069598905569289 1.5043069143897061938084789785181803 0.0906955503872037484138732598616306 1.0950753128136600705846471895149829 GT 1 -3089639469521979.8709792071969530506237003756818684 0.0243837954273044885770890469696230 0.0412403706838767878020086479018635 1.0421148827358555030092682664180849 GT 1 -100913645631.1354755242047552209782193122649593 0.3017375205021629641044392542830865 0.0549347533078833731421935707534070 1.0565013097531878169977207752700617 GT 1 -3801530.5453008333294885924399953076646691 0.7516547276363255584325384978631495 0.0852819734904171108581507149469154 1.0891394289491438134083034756735549 GT 1 -9806968855598066798730537238744250.2225750547928558576381538656698175 0.4714644200163222874923321599934715 0.0570271111916415131391834969507801 1.0587177467000809613163181319915444 GT 1 -382163243374019418324901652.3945565457460722197516069410520658 2.2127111768649877164985900603680385 0.0644542546281415708009175540309029 1.0666252350815312998723633084385784 GT 1 -63.3471821941610231248695500003326489 0.3576525999704271519931066539388535 0.0256822899800228778532287803325515 1.0260178375427125631417504910407403 GT 1 -21402501161235410320659918457796265.2160808515999810869877277795711816 1.3227389831947122300429142051902217 0.0574546767297819511757126291950386 1.0591712724658148998683205091323350 GT 1 -7601.2566915795223466524949797089214366 1.5064882945274351829794364865026977 0.0335603012460006666380373891081289 1.0341363736366145591160989073903508 GT 1 -37958050581447709183657869.3062407546758256922396480760982415 1.6675846110071097684412521154891098 0.0715915913273171118616418816441084 1.0742835474571203219958856707926749 GT 1 -292984379127080236571652075860353835168208.5089894562299091674385761684614710 2.9570863414731566154236267547867192 0.0622062219107614247581357723130645 1.0642252069304060882743019827191883 LT 1 -49072288.0884001299302935549868598828656442 1.3173641638763907617433895887645701 0.0193431072975019446605633779759949 1.0195326331913205324880685943631153 GT 1 -1231466655403849001803837103829031.9917234135635095362794172035693552 0.9819879397232268710114029198360429 0.0815784493605542189922500296557750 1.0850987882746286773253107978427661 GT 1 -1509.4888903206724633137661224823340773 0.0605720578614626244017135917675719 0.0790833121561193407244292824973017 1.0823857051855570236021803230219923 GT 1 -366447737038104280605628704628593410724.4290753626946177105836074415420672 1.7334253273706900599132746250753358 0.0275051874638140136869590239983611 1.0278905376567844608881023088781546 GT 1 -139387850931327036584589548296.4403694806110383112919154197452106 0.9868469916565223403238317527461547 0.0271992611489485338755740301515789 1.0275760082608071845742336858888546 GT 1 -49245515538.9249205094100587105424637399251561 1.4816460358612691404178970697209115 0.0438539499403222844717708337792365 1.0448446055702422017584730785933366 GT 1 -842436.8023731665278713636399944033048273 0.0104823478342017582050636453248641 0.0163362350261792720412643020009855 1.0164711425857815053181736124547789 GT 1 -56365963654815782900701086353161.4327259536808604188952723345377624 3.1092047125625147805574671594985817 0.0521855064644712279737976403507689 1.0535964777998687664133071246190573 LT 1 -17908359323505835489700.1756061542595656126205481838928221 1.4327778241353731453509840598672632 0.0282254608778062673917360085693095 1.0286314570631703017849547253002696 GT 1 -126536681628865623145994601.5843183445632105582892403667697864 0.2925537134430545808328045539603688 0.0095444018425832113128252830604460 1.0095902415541112624897528764258466 GT 1 -2177026036204521199684967032151121307135547.4446386582328441327193148938860479 0.6350473369221136122149236796192434 0.0198850482488137178615459875623603 1.0200854164910652478313359108603608 GT 1 -2651156542663.0143011168901821591682490954703486 0.1058689802189191054012329403810802 0.0081342145915231046986414094646117 1.0081674778179857612520918483634825 GT 1 -206587012458584307.1832366978072626579398882082469773 1.8914892372992900164906731144278139 0.0359040375450953995567092461310972 1.0365644432109308916287611265963048 GT 1 -417422234999447805747718683.9103909022668916432138560197479560 1.6832001299971539285511379949967814 0.0464687507108232285488649560286075 1.0475830812336217084123226896746090 GT 1 -602587445711428590143660629677085.3585337023981828042046736190563268 0.2242714513884693136024035505682746 0.0761847550680387637536924477516360 1.0792431787057299883635110547363161 GT 1 -208669503870315818106866150805684931.2637294046667659104364110159093089 0.4550726921853116468057332851002443 0.0622853024204306944099548017551267 1.0643095366049898669735080069557065 GT 1 -2.8786672012658597194662549661522346 0.0441670890970144102899158362642889 0.0377981472993303850573644053294153 1.0385310242346740309277194068150246 GT 1 -22992304713694968676.7368843456788851795139769891802426 0.3631099974426292304588159539382557 0.0220538145749357095709461680364641 1.0223006355890037198923235239526364 GT 1 -23705197759639601964488817.5611365561610886389073578788954002 0.7654257986497351237537744630503283 0.0652025958971588306709482659143958 1.0674254532758885710594609046385007 GT 1 -400783382.2096075118448351390243040856927338 1.0661856839802164678787813928257309 0.0576996997839575866252566515439201 1.0594312651702600027864599347351305 GT 1 -255548360618782660458628960.8394735896155943730557154974286823 0.5193950017298124458524862470427452 0.0299696410943636532673625970480323 1.0304279101336135350337226963934283 GT 1 -12685703761265692720155065.9211741941980764902914247491381745 0.5754878836100123317257488464351203 0.0616611553512699165083861935609753 1.0636441535781844963245400390941381 GT 1 -40312946171227038293072559983.8799738759749357025252113584532035 1.1199430192174806932353791275301125 0.0104478080809778877811691873534688 1.0105027695811340460173530600897548 GT 1 -1681045283410697522243259229313261251.6172540068226374450624959065655153 0.5525971721677583348277587890232179 0.0898051060110172623229532169978464 1.0940965331835320778900175631052550 GT 1 -30284832992065277704041233385.2225234984003522546326836453053591 0.0275515284208289163823428465209113 0.0853022554361247835264541315691948 1.0891616020888195500672177520577649 GT 1 -2754560403439695820395089798455826667.0212230195174978642025921407925467 0.6811019687572565894072610471235379 0.0762722059766802315942486203892854 1.0793378459550041688614540785376763 GT 1 -219.5187214887918034823624303665914559 1.2654857381845338510306616095845021 0.0154859863638073943547677059298031 1.0156071467369267246036549847440180 GT 1 -70232035417519228809556.0466699337616528448894010033120295 0.1335409063787590909254475417229873 0.0369677716031092466096512742367196 1.0376684010805698248604702498413635 GT 1 -382539295981905325.0378642987179084138509960118588503 0.4474500998072685232912462017524351 0.0105431325575318076030751075684666 1.0105991051448109473338044062159052 GT 1 -530270021739678060348402055925824.8784506731224388453441280691692445 0.3515601972001606608115684560565387 0.0711040361538061679418603466758915 1.0737585336877844519665254701032607 GT 1 -275954771789257980357119225.2944854383958384107163580639005086 1.3721436361116477377412552853803893 0.0565959691998515979976557877416539 1.0582606355100366344540937535852937 GT 1 -2371067768590346.9392363674965596455437545348402913 0.1678517249192627751486517086108913 0.0416095423372408941477905140892187 1.0425000081993593777249147227055895 GT 1 -399.8998655111628626494041640871179705 0.1588851989504728178225683519211928 0.0847351428606663306587721291285948 1.0885417942380078785195842625180811 GT 1 -16089.8324208528315525584831966417393707 0.0093332243364975485014267859313570 0.0933560273410425824162385337021462 1.0980054388290249843175583023591372 GT 1 -26026317.5788425193595905465093516416152536 0.1915061285990771498751497839407114 0.0170860127137608869776315050665855 1.0172336628807955184985733251452693 GT 1 -104157999566942328053.0644302865080538347784984682045052 0.5024044042776088514865851001987697 0.0606412147258293789372687908562635 1.0625577798090550624995761935255483 GT 1 -392613473166468316.4153692186686418631013015195972663 0.7851472543458767880510451133848429 0.0083897377079747271138615359311318 1.0084251296491348402966687827548450 GT 1 -6879977365843233752066493328090528744902021.3805687960240802415539601573379714 0.8941724278742293582859516255259602 0.0342880130371224200947988482131278 1.0348896393671578156262947261945190 GT 1 -270509519088013667172503408.9860519000433494093167105945754581 0.7091638137746156458762112278085231 0.0958843983956188693091438846592820 1.1007980488846872105530088773724694 GT 1 -259875937869293048712191739666587019628944.6967249749552345425092382675934435 4.0284417825444914000654639751885867 0.0948994545890429155827443149784826 1.0997092415517378905533786604558357 LT 1 -6251039352798.7809055547473110180651556427575038 0.4426022329741105709361430774362984 0.0343792568564670312056632129966291 1.0349841273007905346501995903067310 GT 1 -2548.4039521501720780930480768471727742 0.2567989946761431866803996351335940 0.0207098201316049022194702536224770 1.0209272760107665086802467338753797 GT 1 -3516829343.6767356338227887413519946094049843 0.4565505526111930468264508155417556 0.0484472213694763214439076980281593 1.0496601249135184843374090974074439 GT 1 -546935384227381983158494197113738539396.2309253784534692578641073195886213 0.6312956097698690016535343334598349 0.0088226893015375077123373542034009 1.0088618396692512961798001550367720 GT 1 -57895014668998064850557121343443370930317.0321593865300220359587075304210041 0.1534849609303898208959354814961138 0.0526497327575774188101898418558202 1.0540863838090966508253180576389978 GT 1 -4485638832397731460387519106292.0517384566896513084593089919325076 0.7573630779364639409147484292723182 0.0621099971935848782657808178198092 1.0641226046493168810111840084921075 GT 1 -82156609076912103763572691807179352.6562746626653879253876750456068330 1.2049617481781851359513938534688148 0.0515757602900970060635551418866255 1.0529533665874465328106658524873828 GT 1 -135099394595347055835178625608864.7972444739077192440049146301022906 0.1796817851641370916560851592933489 0.0541470366967473579766354416944603 1.0556681519227344344042086999473343 GT 1 -1862612225366190876492265202.0413488037820019027537909611087266 0.7626883065804552005556109414315408 0.0841741507499946382219454962587537 1.0879290532893849655341763454836809 GT 1 -297.5785645651069714639775315326691147 0.8201544862085609086334518957128750 0.0989153415216830554876862186222721 1.1041560652125489675479615689247072 GT 1 -529202412273520260176434984710421356696047.6729745326564449919027587803188844 0.6272504382933042183430827379335651 0.0917351987594218282338203880520452 1.0962193115747693265830932227667394 GT 1 -11782752.3289102427456570517461095609004359 1.0469563650529671209129467134839502 0.0688173194299407756334372068854849 1.0712998012221084285413680522254362 GT 1 -4915768044313729.2432093861442080265052593750286034 4.2448856289333613451164505714700700 0.0138146165658461372017759082911014 1.0139109263989293828325840949401628 GT 1 -63.6677482319557347738582877089928762 0.5081096250396841957745399101874276 0.0468538784409804379873444793577013 1.0479870591076797196315689633169261 GT 1 -465654283612440231306544430.1420538348921704462488194359628099 0.6556537814673475097930179875100719 0.0227439318493406506980658760869270 1.0230065649135040769466798593243398 GT 1 -9226826889571793485053111320964845105445.8051718711970632884195198945869083 0.5581684392939777952014239432946299 0.0034261620846010780058002594114581 1.0034320448185594987277962672066496 GT 1 -1724895070348474529741439181805326027736.9952464256293298933731384638088640 2.2423278854308457200850091583035391 0.0040496771018724006195616380346911 1.0040578992497238299923533164583491 GT 1 -845612120324020566305016854597877.2862860674756148812526678533764197 3.2246816452452821386827734184303917 0.0050798432642254442980058020649413 1.0050927895299640861276983771782069 GT 1 -838222674938887597283864579085844428806673.8782702543740292350727315190778598 0.1593116703280037660393461009667730 0.0477960048568079807682786577599698 1.0489759865329864248475494301628907 GT 1 -63127531904071452700215203412579691.8991686561038224573617166222453578 0.0371045784283989355174371558022080 0.0977379266848860592867601239675455 1.1028502542075504497262596287391899 GT 1 -5690143405590405502555549740.1513248742785881026616753491028927 2.5748088835623982761692026840516568 0.0790626442274349100810589990693273 1.0857551161774568368088881503772851 LT 2 -860709434617424950241527023531.4425051435874439439170797427634361 1.1858625221467169137617754619341351 0.0983934172633965891636997930873991 1.1035770151113035569575093607278626 GT 1 -261756171061.6550446663126529253291738676111660 0.3064534131425950406899558473090691 0.0156872459576289272907010801374010 1.0158115929561945196943862534414789 GT 1 -470226057341437563690047658064394136902396.7582464651161634191364665623459038 0.0024768778031035968496623632242397 0.0054647832036364007526022261409179 1.0054797697551413624724244476435231 GT 1 -1738826550120752078270138.6634430525294196744281689811915982 1.4501715512078893478606109131129440 0.0534118558044426392089620389782971 1.0548911862075258635363772888399548 GT 1 -7816885854.0489593506897972528726096625600050 0.6021535084583283201817578054846499 0.0608905987949714081837095716656647 1.0628232983548597499279559424219684 GT 1 -13.1804629445612551285080475369735891 0.5215423317879507615075119590466452 0.0430772279683196062799458409580725 1.0440325887669652733974382659826561 GT 1 -12675589682343640749817.5064981497378856727032697575640345 1.4124584683766944357095726632121027 0.0100793224735173149237294277746407 1.0101304627742009635985636035124232 GT 1 -22818260.5806788404490503948762746226757263 0.1062953058224119781147991757038732 0.0506685825264501120110880914915329 1.0519973132311436900700234001776153 GT 1 -208.8773842251095413764650625514721567 0.6236058723061356346035058985990377 0.0727084446309509032321051453717120 1.0754872479045261764256338737721109 GT 1 -47385677.6907289487239582090302749684374046 2.0148140548217696682358896854960307 0.0480381103392367291794405896759026 1.0492302768610145332104158477361073 GT 1 -1338042766.9290768842028349256856005955222137 1.3222472589536699023830509403809247 0.0198800291599880119481957789890908 1.0200802955856391958957297467771838 GT 1 -929129561274455635041687689929501226263.4712622960996424957840379422350617 0.1822741304611571412846305586421785 0.0993822116270179318525051764234273 1.1046743196186529480386399618614420 GT 1 -2216249259.9596964730399599407599253960438774 0.4382875055218701023528999225469904 0.0753741651721796399397887953827529 1.0783661261919168852197454881031279 GT 1 -97261.6345170776322464141625480202969277 1.6174753391398126268703379001828616 0.0948398598383025021966453570139427 1.0996434004811817014311325735068299 GT 1 -20.3483559578775199355431763126612503 1.5583986177205967143394209229919529 0.0525693799661040009866561000328952 1.0540015689452132698632144102637744 GT 1 -14602.3129592238978323868612261198879480 1.6671043947024605491589743467753392 0.0147346427150607616220828264646374 1.0148442758324216226668372770593028 GT 1 -838200534707780993843085549897285957.0849649587023659394032960296200768 0.2222547914897503448414236049374723 0.0602818987144559321552703938802667 1.0621753409441816361813401646869686 GT 1 -965447511465175.4998298214441504428537460775285343 2.2404156274444983634949207236402293 0.0556036379413449153499556372958735 1.0572093258973694413388665372845934 GT 1 -52475716965049.6088311590213448989933968644324857 0.2188811667417747478813458423897777 0.0461749635474307854401330541216790 1.0472750242985729560663198715304249 GT 1 -88056118409020.0245789205506699034896392467865272 0.4883872086773279248083688968082745 0.0892890974052338246064528354511933 1.0935297728156271479441178399260227 GT 1 -95840608451.3989760319689554639065804134336939 0.1956316834311392926934856405211586 0.0834010985963683340697643002329378 1.0870853054637647977707451939852593 GT 1 -3633572713357415548489.7494353450951800477632486936624405 1.7138896090713387466958835964925096 0.0304591668484078220725294485377423 1.0309326874436118512537404173312747 GT 1 -100034190424696.7763827176828703957172666918304823 0.3669792547358236620876600528574892 0.0884376356548694115101536374875143 1.0925952677358710651164362378952639 GT 1 -6157759659.8591085622347029035350349014826802 0.5481325943732189045421956600385779 0.0338872195254782653909469988421268 1.0344747016107418327251797455519425 GT 1 -13530014963425015866567141493343754.4725273173423932616288052791065566 0.1786710560769476126583978302887472 0.0647874048501906734492834542446836 1.0669814010473374386090374323027417 GT 1 -538111541573632549188886055.3841674476579163370927826091321154 0.1016903231015544757800010068720883 0.0146049199400262006269130846218480 1.0147126217201619690586370464993631 GT 1 -434044423393238683.5505443742458904019021274826172121 0.1909704305210013712636476322854413 0.0977986016610752641162230082722314 1.1029175040878225673925950477000798 GT 1 -3.3440949030515968940723583560531956 0.4360330146271673596598629803118725 0.0015018004160098897400194714340057 1.0015029292485836958472490299807601 GT 1 -687477318495.5377994166722964071209581098609099 0.5163068569730984417085497786621963 0.0085951865055426694030160814942170 1.0086323381578462975602960240712165 GT 1 -116480905657016685.0621423568542430141279903212403713 0.0944666382760240356454028617500413 0.0088847207087358356159970553356347 1.0089244251902100333542821565908587 GT 1 -200798008344805061645870845860267362026.0153618961239883297165922524342549 2.2881934717317583555905806913374314 0.0080882081562041281431199524479291 1.0081210951631410099615756077886259 GT 1 -73066225152112576777934062309716109723415.7327145890471061057329722507995224 0.5589153881746898750768236596332809 0.0284102007505350028148160291673460 1.0288215808290926630087525567065108 GT 1 -428598.6432415115065086158063135664890402 1.0600797627995770349886360708384007 0.0575892840294226476410988522293886 1.0593140952129424414365318343737763 GT 1 -1756984854970695347951065959885946790340.3784252571981512455790888884134185 0.2601672916534775756970613066719514 0.0026765619461911007631514841391864 1.0026801503425907214287302135274277 GT 1 -7486677118803027.6246202934848016943743834704230718 2.6030814572891279972089919512588761 0.0707182248362566213070911931104742 1.0760328940355556350071484585908030 GT 2 -18.0706985585925437478774354430929249 0.3005943336173497984497411003585520 0.0411825451345788811809949570150528 1.0420545716800002276166874632127541 GT 1 -1084916.8515040031020856576734785432646177 0.5131417156453781256316323794914268 0.0495651953211443523874038196679227 1.0508357099596376095548737126010942 GT 1 -34226976466116556540263655617825.1142876314864746549227401107981179 0.1485836540926819093447531441285925 0.0296088181177600011807101928350373 1.0300560084893801316458306716500204 GT 1 -4051726.4457935739919013596168910082618569 0.8700619638329042840466746882665207 0.0381774240408751879910474774684279 1.0389252778011131649732174726996475 GT 1 -180679.4390883909397142288698940300042875 0.5388536225511795288895945423317990 0.0321645458509138955493903640917837 1.0326931915378882473082310423192431 GT 1 -100425456897421113146879490494.8627516947621701412407388695625615 0.7615629667061107350443612279861369 0.0186781688415232519873861558205308 1.0188548088363970880427281209311762 GT 1 -34452992240541896391880301241472227.7264387627849419051203973506235227 1.1198870671270452089286499354704182 0.0446244560421481678213505521569194 1.0456507760534502924026265837177124 GT 1 -37049138566657650436386901.3601721626110590155968777523632920 0.6401167463321103403866119094054533 0.0828566582231706441248956459158117 1.0864915029364794522391447652259364 GT 1 -13945.9287105966611303238050965042636816 1.3865320160067816541570827812710799 0.0361600655716394027432957990296699 1.0368300412823843776856475613732221 GT 1 -127079199566449.3511507930553705371814231908153080 1.0890264087416052584666717890605412 0.0516626491267971740765791133827489 1.0530449846771340557680407439043588 GT 1 -46.6937311817181148742690940309300941 0.1789023800248046947654239838277767 0.0973069930072586319956980295202318 1.1023727534757960438409496620551690 GT 1 -34786488854957975.5479251273224131198133966313928171 1.8590623899280177020007107278093018 0.0630638111944099485208789549577363 1.0651401006576216492101785298339040 GT 1 -123138653253499230.4972031318747630785551121746995437 3.0619955528820352342998055876893682 0.0455953211946855135278558871073077 1.0477564339093509123690504092085151 GT 2 -219300154416807467859665499639021975230592.9184994877379034325174113591740193 0.6250935105488813744459887740019093 0.0286235746641364597406925698256257 1.0290412181153813305053878305426808 GT 1 -522592894399881667531.0419878848680268454267714639013277 0.1617427433842145031792424000474994 0.0383708521692196022459482261356800 1.0391264038565312142895801032184182 GT 1 -219725063632.0795632997800959897199025067323362 0.9342668259676318551049076708897875 0.0825455382844646153982484503045558 1.0861523332927610553982800450971887 GT 1 -8935103693503500.5447401369837594948500498593485890 0.7781632216737287243777716396829861 0.0181684915502429219707418928293445 1.0183355653392657052038202561277825 GT 1 -134255257535866191062571093708872.3415763073184486949835016880398207 0.1880479166704515121125024979687754 0.0398061035544883046890160951959872 1.0406200394504784387118279535668956 GT 1 -27543999646254523972197364002036.6275478983581599028718843993823021 1.3054364852735086773674761282024911 0.0123382760151180683367922251633970 1.0124150244919555772957604846819645 GT 1 -46394780030830026009.0181598359627869410455297999383505 1.2109723084361056032606133301859377 0.0782754802903120751378431502749521 1.0815088856351728852351486728044540 GT 1 -52780151544611796047838819875737.0759308973088132198872929692985228 0.8879421956942858135501495412008689 0.0227370418996281174612856421526050 1.0229995146370728698180366679394331 GT 1 -66988001459005553209132073034605775660718.8550032577359327397328273793166531 0.6009348364541329885149949455747746 0.0610122048851481353150788894334016 1.0629527976061071918316841476405732 GT 1 -85.6756321801558282632379086878351965 0.3050801818841413895626140678963381 0.0910276828281214893579158689787670 1.0954406394247447262480316794129664 GT 1 -247896033606054129301562224857034.5027563116825426318663910718851422 2.1038475438873990692445142766810305 0.0826699712410068469306785523602777 1.0862879709737846416272361102519731 GT 1 -92236971151142417767696209656888.3224071305172318932582499000787781 0.4878184250429545167011679555466991 0.0750584038074088752207753560639595 1.0780246827143311278295077520396158 GT 1 -858623.3907494610554258075575683034670449 0.2123358953830195031595431306542220 0.0892930376275298241346965475323706 1.0935340993596583568960966811398171 GT 1 -7994669417397235629451533300204631.7120142852127349633078080696816807 0.8543761457758417251345143821413652 0.0536560380880873728515006049489406 1.0551491799139153344296033785401707 GT 1 -6745183643661151334861.1810379628184524574094324718140305 1.9768899516329722836693783313277114 0.0520104702544046394149811646421852 1.0534118213602637764319561165204379 GT 1 -19.4006974737971907413527846635145639 0.2553141638152081656499416214152930 0.0745852000162231831733339377823560 1.0775132095705848035314974127157636 GT 1 -6800034715392465577574484054.5144144719385629830459879512485746 0.0588003341923483544519625918167757 0.0942026257838427458959280668338302 1.0989396467203113003119381749660685 GT 1 -367682782006104126561.9777178381546687225757264933934584 3.6438166544235984619064204330312996 0.0440036111517159506612153182721295 1.0450011432932214037729827881887798 LT 1 -3142617727332.7336258314167489907752568366851125 0.6655591768348894534882646330006127 0.0153310983949478799873735611286299 1.0154498348204154468787566875981922 GT 1 -5660177120201579874466735438174.1188944653195892692155434406559796 0.1607601414343953286301136470146760 0.0199487819277378630319145065851079 1.0201504453441571723143334476417266 GT 1 -82146519718944241445275466892963750063883.7013295206508830512673838121990982 0.9715436366314214393584554971727718 0.0029132785677270048662873796288618 1.0029175304236353036656303842252978 GT 1 -4759966332339322524474591650335359.1458767867749193946035161094436255 0.1112830978369580390915326734067260 0.0479860821186891286914137676460256 1.0491756246744116833663442217112581 GT 1 -66403782607863205438087767131.2136507576937927060344848920018251 0.1841253749165651495198255760255751 0.0894476320297666665467954765585396 1.0937038658503854576532943620154616 GT 1 -45976304440736626469732683481705.3518646587108681353974881510843868 0.3533476137666546688941697769577890 0.0921015264305201296411379231357878 1.0966227198818826550287493956126467 GT 1 -505566.7336687167253218817585462043207656 2.8087968716918362236284058369323108 0.0477850907494149946628020906580610 1.0489645246562239907775246183761230 GT 1 -968172727.8403880186217819693497999152096554 3.2953339544878836898613171117827454 0.0176465742918975827660976793754928 1.0178041313978354179225241991831303 GT 1 -997945781697572695959873295.7970386345151079983146995234521801 0.0088344342940523936278535614505391 0.0777022662533809506044509924808239 1.0808871859194351776628026155368586 GT 1 -9.6077080971625083053656778455147070 0.2160239475044737153315052968643049 0.0561228698486018216542652418306967 1.0577592800459456425418601490126580 GT 1 -8878652869383671517577186020415.3197276264588084237752627708652349 1.3147681617324192588129631095779591 0.0450032987995305847221834295452881 1.0460473927477188685389928795406781 GT 1 -4227949767488526028957852961746335072977.2786810495881193947377442332340712 0.2778745196598713841704561782700427 0.0319012625129650940520178262567699 1.0324211953711699189733966343143305 GT 1 -22899518900109680.6326544752118341719377549626954001 0.4008258425825600830372156082612901 0.0102246927296623191563763152696802 1.0102773239665483382718818565269351 GT 1 -219551.6697341192594571804201881505076376 0.1530888761024004458435809315950329 0.0170794429155868142976576867622715 1.0172269789020314761641423508635238 GT 1 -339361894449786870796092.8941438188447783714641063140679038 0.1473387252262872669704998794178199 0.0912298564454002876080998083269743 1.0956630841576819265945041595175773 GT 1 -159586056580641899433932481113577670526647.5756636062253175809924871091463891 0.6850462056223932796872630510039371 0.0914187426622417828003668837988698 1.0958709539372181169191806402787716 GT 1 -8402.7972350768869015822575101883303920 1.4575452023055823017095425034418274 0.0589269793374387056005637119121616 1.0607345434036197787179771131322125 GT 1 -2449162354900019110.4533621414515305990256255579455471 0.3590208994343889771046506426912067 0.0877104623924590414821633556104153 1.0917978638456066104838202307578731 GT 1 -535361913295900.9426524193914001583058153578165345 3.8216236931443857512437016408155452 0.0949525156073429450947466561172395 1.0997678677164952379037506075911542 LT 1 -2.0517471710158015389472575537541362 1.0166575757788481265367652120954994 0.0682046463936003945090461468303042 1.0706420660827900822929766356093961 GT 1 -88966548396.1994655733553437236222471261012237 1.4914058175651998864987878699008334 0.0455954901425341414678792035731293 1.0466676828769610763313575157841792 GT 1 -302505998776557607087906.8953093850383321890476684844491037 1.0645374149032954778539161904090190 0.0291090045106555990920228357525174 1.0295410770446119011075936543627219 GT 1 -435059415275267773403101557916222242.7283992198236288637920083556733894 1.5022505063102429928140298229911922 0.0438537184406908662989827402800226 1.0448443634528341146994519777884804 GT 1 -19123727757085496592891301829152907219357291.4469236169395983115585247575640392 0.5957095233970800106897515784271045 0.0605419397726574983781606364613617 1.0624521016494175573229882169107494 GT 1 -154021865212057138835533.7744904379085446144364995458243120 1.0930429104077222454569587275657723 0.0197058408614676952362881780804323 1.0199025899709784626773881634210897 GT 1 -1065588470451448832634321117621837451872.8246416542773091258940725406432371 1.7826551738000442710485571434751255 0.0291926405483653232119602922781619 1.0296272243470995635431314826281334 GT 1 -78842365522965194846106982919669.5952505393917276183939015843188130 0.6481362336623539823872378601759242 0.0399464952884830221150160644725710 1.0407662619988441013353844082680742 GT 1 -18395468720696789757053802.0453974251091197962216311506168845 0.8213636741384568412931049962061891 0.0822903759635230977122738754030781 1.0858742520851275177557346168079298 GT 1 -2522124501286019539618245698096507000.9595394663898400086263757875226045 0.4122369593357729524747726084484916 0.0251352263828841169175204608006378 1.0254565113291890822075728905322848 GT 1 -18708330879761806211061.8412801617979825171290492126806577 1.5871532518881492759326875072730244 0.0474484995007728700176220126123497 1.0486111046773512547691751065928667 GT 1 -65849538495911955595424615934840202.5722803711147688795048203452988232 0.7319999553131075741093210807956140 0.0434823444105923906421340329786859 1.0444560317364751203943994296625200 GT 1 -677.9851835705496265982232963085193966 1.6459053891934018791246419514063212 0.0091096225744481047265721261254717 1.0091513689084737709246035949049743 GT 1 -24196.3743471944839326398706191765460592 0.3557786177155353365622981168730167 0.0735827803614008958885557280585440 1.0764305846433669512642085488666015 GT 1 -176851287.2675844821448083468877971951284016 0.6363332191036807690371625067511263 0.0603458723649304640730984828847792 1.0622434207524439762128016664342552 GT 1 -300351671657850584774825026688.0442193248291821096162242153076937 0.2959511650747037517528351112600711 0.0483293668095393865674920208402921 1.0495362775928565214902917973670881 GT 1 -732133373307260846274556872195088407899.3503233651717915978192266528161117 0.8556903443482843620970775655575756 0.0488636987705929531368832939340510 1.0500979025958277327916868946433673 GT 1 -23052779815.2261002733818324135571987601734560 0.4061792004492082301704954732168390 0.0039079542229334617884839285433165 1.0039156102287605825416995132120660 GT 1 -167853701895067863034740628907725396.8336312404034605497919546942034568 0.3759043488767643764129351746137510 0.0192950721754901064187413336243180 1.0194836517932748264895958997446232 GT 1 -156903628577417650031157501076692644911.4222818052663329464106628313441366 0.5857111145984253010405385112091636 0.0696351385164573479649824039646644 1.0721784455979898986119863644428714 GT 1 -78735415742017616561338263240797657.3747950882329007627633010928260429 1.0388241890816704151473539382500837 0.0930960902102016242159501193783434 1.0977187773792374006038808272454790 GT 1 -15029317323563633523351213012052594.5514492085642043965955561569460207 0.7787882114602082884826492424467030 0.0781972321119867753607427286049712 1.0814239960011558541412168072044793 GT 1 -32195862515384124870026178775.3921141810503250316670632760910339 1.9065488915490682540853282147817666 0.0059647195785733212723807085014853 1.0059825795737212042218479605002799 GT 1 -17554632802960635.5281599511196513151372493733814236 0.5493355822924817702695271781476791 0.0099046335087060550906348514864590 1.0099540107037318402705635982345627 GT 1 -517466333512553335677097931635244682120670.4093870130836268924077147334365613 0.2945753129076520394811063654840640 0.0196583498802288073217571555650230 1.0198541455010530241756586413659724 GT 1 -3887916148053327051667558.9537356887621185958513876031421389 0.2016525943910521295503407512072511 0.0460951828217145371335854263408121 1.0471913848612480998314078182304857 GT 1 -529881796431534720426121070471773303857120.2409969665343282751893328739128142 1.5384324854933814310936901849245615 0.0026544134698998714108906596060174 1.0026579426720256663319266916146689 GT 1 -2366751433267223585016613279478933932.7285380218513630986161133654570605 0.2730812305598377685547264834509401 0.0584960015743413122895246944629276 1.0602766840265461796150414025321644 GT 1 -1006583248218358.7590582791872537435310241966250558 0.7369452448826489614244348658906496 0.0743871156019441161751161090914017 1.0772991831497953577025260273614387 GT 1 -1509571367029072.6048691718451188584484563613532483 3.1303994420963143850890013591891392 0.0962075879200382721838817156957047 1.1011555776144852091611024568568032 LT 1 -211818.8505222370802331501767312262680638 0.3741705014351473296577633653395520 0.0661350080995389796970613223331047 1.0684233994878491416098724085604289 GT 1 -284.2380655732437299207302424942027024 1.4610493222454769440530508634800082 0.0059244862106162345123670708283673 1.0059421056040815494976482586536450 GT 1 -951263254146.4553022470662942893680929021020191 1.8904554194912680975482298864146079 0.0724395518245292414111370524854387 1.0751973133892209532178139982074455 GT 1 -18582906985574385168773.4992819634970051254455612064917182 0.1739469672812982746810449342353311 0.0664184328293041971483328836714418 1.0687269420235802558046521732276211 GT 1 -15755499210614.1867788789355900369440106718373436 0.4417863118761399564971022597456647 0.0836563134867884941361400983050353 1.0873637810622389561396521511218538 GT 1 -73202621994681330915.2054327223664672239095937771853814 2.7233320896374430785471600784420915 0.0451899687572919011451471950084756 1.0462428784533504263950760161846520 GT 1 -84461761468698329234218746032900952955138.1774474325487777156677363412061432 1.1612884632960225349296534615395112 0.0403804050082302185069591715389964 1.0412183282670059954925742257853297 GT 1 -1463.7679831654799746598889349967354657 0.4652302735089849250193063226776102 0.0913120197923067902371076992483141 1.0957534998276643427462766255674347 GT 1 -34494202608671556829712.7387260561333603417821147549332824 0.0972983982978565798972261695955117 0.0106347850800442625895393360827816 1.0106917385587948605254756219715883 GT 1 -6840284745.0547748062758467244810679225910523 0.7577473039493162268432993944176294 0.0516867953769515506971072521945036 1.0530704466686281751209845958833092 GT 1 -191139393781422576873.8854453925383017736887988551901327 0.8856352008060469667464724644959753 0.0670267955913468241709730164370319 1.0693787983664507414436454636465028 GT 1 -9764654.1172615000051842005017956512323423 0.5151501898696525313674181698264462 0.0179281632682553316396776383538547 1.0180908198086092302139242452230076 GT 1 -1736796495688467.9826330828412704642295938494377701 0.4852719869455993852657884768478289 0.0598764748636694274206438473961201 1.0617440026320877099508493740952787 GT 1 -613836568.7388924760100125964380993773419447 1.0691781661148776801251094449355848 0.0773582380027392929398261972230310 1.0805142433319706387791216186192624 GT 1 -859001339783477937467586715048661.8118194040532815920738543746979404 0.7290600457309677975899286445595499 0.0668348898815372569498608900389905 1.0691731268907705732030565170354075 GT 1 -3001612483337541748491965660179.7263293417480260904493365203281977 1.9208548099020427845307535047972221 0.0198704789605564915250677231767110 1.0200705517244917667420260547028260 GT 1 -9882295901.5198313802458410794324051600437179 0.0001274130390656420547809364333052 0.0271412499369370176546912348347917 1.0275163768480556317687793361299769 GT 1 -124856206051516.3867722366591643589082309061653803 0.2657632091221981898625235606088799 0.0625904170287140231590240951955773 1.0646349706193011927184309077582435 GT 1 -11.7598580906584030122962292409253692 0.3847772729157488711409789231218646 0.0074066396064832904357965174670995 1.0074342049570354948444972256491065 GT 1 -16.5707583809185135392408419793127623 0.2532772573930578543682784412415035 0.0965622202912215194851634738158286 1.1015480371665072818663655304744638 GT 1 -6570915342000683016248716102329515550579310.0221514973446491982919788382483754 0.5533113833546958802194548854282131 0.0297298829803400456361521373747931 1.0301807750963151965052489679923511 GT 1 -3417822907017020589306193628421772.7523209165609534455023736852351143 1.3729440513093832617836449560028968 0.0628745461166599976922047168577578 1.0649381168230644763964500401544988 GT 1 -6401298063147646267321434104140.2814332637109636388056454313058459 2.1564883350522982736284504372932234 0.0095465497988424599920656226485769 1.0095924102112346466913755433356841 GT 1 -604231123899307.1129995555860883292558723165183950 1.4200918540666140197030178747946089 0.0850416138268064863964203549321965 1.0888766943329819819664118692425419 GT 1 -1669913.1321532266206533403738009468779856 2.0431345289767989463464990148702474 0.0846429555765533108359894504936879 1.0884410773350665897718539374155523 GT 1 -39985632324409425239611228.4860251443502453601837796981035791 0.7164301598417323307945936624909892 0.0642187871034076591263678503454731 1.0663735767329608194833011026877781 GT 1 -28577949942.1734359309026536003863893913438616 0.5108539914286322297615408248090652 0.0549080247892229397716264799109253 1.0564730279591100668558593025957282 GT 1 -33415903226090984843010278.3789608809272422757299925426426104 0.0212351942010629225160048479964262 0.0493115928295035040715568473316777 1.0505689176848766301739727122818753 GT 1 -104964346389.6809045927957514075494116606048711 0.3448857533479183536550064586154805 0.0560898093162937162948736727661712 1.0577242543500458944827214935791183 GT 1 -1102201915852136033917641317.8886503217620162688160090730303402 3.8141633934341611348116443196602939 0.0037866352004280070876390002736872 1.0037938226534105828979098531070622 GT 1 -30.5777698832709897036912143461942349 0.4626802634238089089894700122998022 0.0924646667276984002142353740676215 1.0970227788657497739337522856467876 GT 1 -1177953468113.6837006742069280647437979168898345 0.4426307696850745025584408148164405 0.0359010527949485445758364031983344 1.0365613473100632934086061895284464 GT 1 -51631351540131.7593238055709869144137429285607678 0.8093352702703607464471854274092068 0.0700256097282575963854467265318935 1.0725982305562074687203958414667030 GT 1 -30.4029451483587510473102905966354274 0.2132197919402754883183498428160625 0.0553267773089173603348431795555642 1.0569162073837425122037311496693438 GT 1 -41590647444.4074880682208980024466258307431087 0.7076477780190193454190749720017726 0.0846444894141680605826005636441075 1.0884427530078646520886778168528200 GT 1 -518152.5450910405674629676488542775844200 1.4912162962154968182313296797834545 0.0963909872183883722453590436621689 1.1013585201334594854384292412369224 GT 1 -123943865.9655683589457831612880716796047645 2.2911413996073736766717524984144058 0.0694104419730367080626141437041659 1.0719369603233836813750561121932862 GT 1 -6302881717288158.3788222974355543408646978854458574 1.0233419708625934915601815085104466 0.0416535330657544896139453649053222 1.0425459098856646785524949428910464 GT 1 -94294125.4472091264596039062465300412730300 0.2963606489826942725575585084634579 0.0687380835550225244520055953150645 1.0712147131877120776575900857146650 GT 1 -1353578545741494.4185779372443256280508661645185776 0.0301556302956362432910577944858435 0.0512737881048144355237254076427515 1.0526350236878865144982345162849239 GT 1 -2177809.8780125930418360750428621309932532 0.3111621502023375987021751737196600 0.0445582511809119152763718997075345 1.0455814812427815753573330688983377 GT 1 -21043498559560001214800957051963.7749214387311715836616768341326978 0.8691583715944717705284049030089320 0.0381813527903045686434196126743533 1.0389293625019212650134054459093939 GT 1 -5134096283080206211.7541446806737158165724191501344013 0.0420726683579796444676830018091628 0.0977513023548399497734626978930873 1.1028650789125834017476132006937635 GT 1 -8905058939.8052160952540137869054802735546315 1.3521615691447552059236879284623489 0.0719227865724673110984016660016287 1.0746403455327112190268145552504415 GT 1 -516457.3079667269751176700989886121371850 3.0875634672255467533826296635508098 0.0365571224045414332317450600862988 1.0372420792417771889162289969951595 GT 1 -209180388079511173706124583.0462519989522885196017420592969813 0.7419779227560009525829760902991510 0.0251456710094189735997462070931457 1.0254672253100091779699939714029745 GT 1 -2381.2567219791349169391110115600929078 0.0757307915221835163295395859192177 0.0685200923040098899157313904461621 1.0709806590110326880476630854068468 GT 1 -251130937111247061109672665061451631977.5129218500685032853700783219876889 3.1677732181269664949796074582159407 0.0973592915567722554070149045499763 1.1024306912953593631572409009162653 LT 1 -342664719573381080881154894084589.0466599839851465854664857814243971 0.7495959383850011047652368632554601 0.0186074831023205305233479751547129 1.0187827802813469982944764575749769 GT 1 -4067789709821449860603374563888911.2852981090788595292441403240836835 0.3686182200857951245686395432584827 0.0803452519951171214037033681486753 1.0837569532796616048586788707595480 GT 1 -230652303844.0145321842362324784394216123523020 2.4934859282953727919255893768880020 0.0091065186039675006138826946511085 1.0091482364069481480999331432748922 GT 1 -220719755440159962676054217790.5195202661065098196160546104648746 0.2144258345927833954447241655451557 0.0631656618222543445229514500372754 1.0652488126119170111760958545300499 GT 1 -35.2337058505030675981642393442920752 1.3578647048315152622548270648074487 0.0899155032849078186722811034907114 1.0942178302487954617644499407073438 GT 1 -71410576557771.7738428505685043394856235649064459 0.8077061203414325581307894457750345 0.0958529589779119658171159949317741 1.1007632758191280987900453748632055 GT 1 -4177550.3774565316551113457170336462136492 1.0192904052073283928633757553929626 0.0967868320180079006647926500841648 1.1017966869992054318023986535340238 GT 1 -421456189532628714924645373401535964219.1356019378648136174783811541873850 1.3931743030302076703681668188446543 0.0432956607155272915703480564240082 1.0442608806289112787127138863824229 GT 1 -10361395702620384997187751937121485812344337.0429422175226005758015603739905370 1.7579564608297016486542751593257890 0.0090256844030806313395023759130846 1.0090666626500564504631804747239026 GT 1 -21023081879671271247991538.9422539696974514163007973098773153 0.8836750852115891197678968594259172 0.0822261584220910669568982990539479 1.0858042786501592679321284980707873 GT 1 -295374492333498608215450.1877517951560906637592930266059757 0.6819777588090023238407667476795605 0.0153401740555749695826250653715704 1.0154590518297447599100199632713747 GT 1 -23730104053240638183784408704829599.8282019028732174845491648974182491 1.4220051895426989427729855640452958 0.0534007938409146188006593564032110 1.0548795001337455014324301838714088 GT 1 -8409053529001268019721.1523610098255823133220257782252732 0.5276184122027922354824465151172216 0.0152230858281707010402796459509721 1.0153401465354977246511198443950885 GT 1 -76820263581753821208394441.0048577762269405691465103337030794 0.0386306956536912472826371725033012 0.0682648678409682588088323579026421 1.0707066976494307450775480126314730 GT 1 -5934937080051749012749199110624128849.9959524588054420728632946754073398 4.2763207833046684506968061482090254 0.0493729322667696375323590829341810 1.0506334408406569935269324617943921 LT 1 -3464059.1471920922106379361510529838903602 0.1274387220684831757411522731448353 0.0696988685049166652116695691367159 1.0722469479393286762142961369332970 GT 1 -72568208837320815078913665574454642016203.4990569359265168899507740264948083 0.1207944164816189425157271335902292 0.0544258178606373816775029408554240 1.0559629358551534327569524081176643 GT 1 -354704563091267218140630629261053.1321721752144382815462924542703916 0.4219692602465080281999245507060903 0.0014110451415647212233953615304086 1.0014120416032390629185834509731938 GT 1 -26863157158241.8418392850780924897516722705537927 0.0209858112425703375009875406373363 0.0516178913189568318232722439622684 1.0529977897083439231552242118168752 GT 1 -12615378664376998416112359.7358967597813608685530032594173184 0.0744163937369109662772280853776546 0.0384304935282032963621006986938148 1.0391884269438179944722998114190731 GT 1 -121861233316.2048304047010437501345910695812965 0.3982452245376005077066577968827148 0.0242822072363132343435932957135722 1.0245818811385460722728538187141911 GT 1 -17705.1143862500566354138703570454273181 1.4154455769445712889053571856166139 0.0259642030356028563339236349659553 1.0263072234847777695925373547388867 GT 1 -51420790705921045608153506498751.7041690243065242950336721234909928 0.9357709389438321492913427364293030 0.0202219470602385673947483779840815 1.0204292095592957762906478212624841 GT 1 -270155930103744263729343942.4136149655094411207466105498110694 3.1220610098918731144339330143156764 0.0095354499353584834205284885328251 1.0095812034237930631770432128140150 GT 1 -612676339037685044794.2258464669627573959070171220638424 0.9713863470529721388408637235344844 0.0194277027879343853148412360949188 1.0196189010185789980158575517234259 GT 1 -33127886495459727852872809820525199267.9748140654794838130474733466057524 0.5476089675255390324557459339214989 0.0761449964817587287882551154615493 1.0792001422533981717042350806356193 GT 1 -1874318929986837952751044887.9875850415308157516332346597180533 0.9933570776276679789021726105621178 0.0219107579293246705932714874856566 1.0221543635492899456204795402542491 GT 1 -888146.2093692552565378238057260101484625 0.0232424294858323888366758748918110 0.0241341826978987556841222406262179 1.0244301842930357232302134785407480 GT 1 -26743769134688263814799.9412726232240569930701030380916193 0.2111898075075390747316918686861178 0.0537502247998383809973420236380576 1.0552487117996886481516360662862450 GT 1 -2647033839628781805242628965450585588133993.4241836993102859340900379950351338 0.1460897288395746861826718088452356 0.0296776058514887270189853034332344 1.0301268976041955393830341700437713 GT 1 -569241103866146.1636063826757874976080161896207182 1.0136582454059214069651469681111297 0.0904320606158900152307813470079574 1.0947855841061917951754788061209260 GT 1 -2821493411390589772263.6611450890908955117219012615761210 0.3282113708057152781805458408571642 0.0124133789405230125594069329638320 1.0124910685252332753966897820311654 GT 1 -105713731.4132941416796153196996249623710074 1.8800533394757489364315669538904129 0.0132448510592783641511426739800955 1.0133333463725092743938800721971833 GT 1 -145937565431842417097354759827644.9974074954955088299011515800248337 0.2279307847862151892348858604169804 0.0598092619574184716419951937920412 1.0616725114908505523334163246711756 GT 1 -4777600927707370913766277258902014795184.6918003307780303812542577741168109 1.1921816769502458428655319421999293 0.0398351128105841007505317180542828 1.0406502517799089765276132560356320 GT 1 -39.9278711909604656941649801984258745 0.3160239372297535677692174088494747 0.0094354020318738997199089591603134 1.0094801974353965835319861268232055 GT 1 -193535366932223259613595250057768177212117.2595672390993873095120475950499026 0.6738086554371746192305498851646860 0.0787451548610632135622904010170273 1.0820185761828557798466465931549223 GT 1 -596.2342111607821691735722530447150240 1.9515304270679082391561246861078911 0.0733340197797466123791840674811132 1.0761621017353490954780159071708621 GT 1 -286.8734117470801537885278566212994751 0.2867400385071910235191943601710026 0.0748849534102427062730207784156431 1.0778371745119730505187732382584531 GT 1 -3610210.5378133304123422916757892190728616 0.2685946082215584138582072940133953 0.0580847296357877416001624393746104 1.0598399549860126589665666296015505 GT 1 -1563460670516809302611.8161677340509014175480510183070142 0.6307269318676815808529779445050066 0.0822136448041792587662215817737277 1.0857906439919944236540014758479403 GT 1 -120031323685745073268693.6892666359569549178918287643067644 1.0767417119355000149962698828842166 0.0305061336147433610258051676623851 1.0309811308947331151307066196545017 GT 1 -563842126805280924686836615967733734391.1132227298537871217207864737284240 0.8867722592467923237557903080285958 0.0119386237408930833843635366825955 1.0120104614439995186413454726921867 GT 1 -171514416361148414070397155742712.3171336714712120498003356337340248 1.3556501440262203447700197658809006 0.0790073105029617562547642743515132 1.0823031803294097165300284014249603 GT 1 -81096909445731089273890582668423323.4804868067795418240229708977131132 0.9378274680631640259677751606605350 0.0727630966502472239009598681656929 1.0755461868968670087715744482479230 GT 1 -4124942297375492753611225563010.9492313129513103639333299647745436 0.4084555406489898501277553356003225 0.0113586150054242637218214549367806 1.0114236167615480528175521067028792 GT 1 -7740045209856088415634.7171476319650968853463929105297766 1.3678046210332585640861376339082466 0.0762805798844021659072064208726352 1.0793469113373955079089181196582542 GT 1 -561900552316535856068805590452.7235240172900159732358259129541529 0.8143477640566438447796423262956669 0.0898794476058645275058723989603749 1.0941782130869096050654778477330993 GT 1 -166213496057318421.6071450621605442404034240229426750 0.1216555053809623803883029293667432 0.0491988454597380083841606506398178 1.0504503292138505886628241201916581 GT 1 -182257877707563483.5644237312514830022553019967438301 0.0692651592201255764062215415341568 0.0530701922816613078195645547549054 1.0545303092207046328536646998391667 GT 1 -137467720880867644.6226600433008177801424007908559148 0.2771108379085192744744843242641976 0.0252261780219073732817274566301956 1.0255498123535889074810860069508138 GT 1 -394635277202829460404102212858601244.6301080765481334720793826744274960 0.1960347424128288371037509259515994 0.0654706489241489685295357073300609 1.0677122442588826314019835283535583 GT 1 -1600609533036960448118684455057090644428507.3873114881208564103652463631432102 5.1043153850340824432762813202853196 0.0235345127153986234710401890912894 1.0238158725725302275359666991766581 LT 1 -6103065433109.8858224429840075546346359681093070 0.5528631563110295138811676567535350 0.0616951308937422628065861230438630 1.0636803624144457773565558683789410 GT 1 -4821585856822048671818251376539667012341.0048589419747896256820274921816751 0.9692689523092307650746586390059391 0.0924259314675382771834791528620910 1.0969800979561280301788653649973317 GT 1 -2253589308.0916886579654461248484128008030282 0.2782206078048640915922388134624328 0.0538293939514873722354835747940455 1.0553323815302407353574653458692693 GT 1 -3417456198637784697995.0977340365569281634621801358234806 1.3858569243248213911706328157427156 0.0256107000493618771299985553855050 1.0259443632540412388847183313858163 GT 1 -451119110308777307682009926.6387443653109482598754253007027977 2.0426091227008365382555812124364575 0.0646143420521188925554844006761778 1.0667963663416982501761986121138408 GT 1 -2335591000955876277753707187022152146216874.9118998294849431123850481341397645 1.3990955011791265873903954287739223 0.0441190225926278982893524823566206 1.0451218743014849338078819932745179 GT 1 -213852995048628780.1624006510818322825215943415625925 0.6153176782900511716273916232943432 0.0130441208947156628244013921004146 1.0131299425688090990386832234292275 GT 1 -416329352066884606194930790717710895654095.0400604228741445266708660810098163 1.8685474315001969988504559325254598 0.0902498310644186610612811936016582 1.0945852567953741375822503696820633 GT 1 -8986958663425428231416886783881812883204.1561200293659956204826652592360163 1.6422116650151711303635216334561694 0.0498838379813200976263923129619853 1.0511710260534912028906627642676821 GT 1 -3687.0510536359228418346979651371656401 0.1105874240851404947802789728382823 0.0759235788434719253115155696739149 1.0789605038811188793657400091693273 GT 1 -74057292164437683927192437231.3994718276795964937674991107482253 1.0706994126293690749362478180403441 0.0968905632160497992706081429758165 1.1019115404565914329377616956357263 GT 1 -43.2399150524825298694199866676354741 0.0984236458554226944409368638151259 0.0538588603306130239939873812120114 1.0553635247910641305194616958618428 GT 1 -207327975416817918683153056.7700486314470315198366733950364070 1.9973065089641221663559423237891058 0.0759779396134534444282049021776536 1.0790193327482383504643381783151337 GT 1 -492326786392342180480251572358277484083.2560855817688211606381872255877210 1.5869264299350064227152044351380627 0.0047363263030685592805490788126561 1.0047475782391119932194129405687864 GT 1 -1489075713062.2400836410047246009177288605815839 0.6756152089815648721577277510702508 0.0998316491343663049367796032383120 1.1051734766333444691210928674012727 GT 1 -6736041035000963879290533632505045.3737032375483493206780776110643671 0.5650679420720747166408587110961159 0.0380246591538824655516171006829536 1.0387664618610610992219794653492989 GT 1 -3.4866202385609335544976867536366100 0.4460884015221014131721152683738595 0.0952629137377604192847325436492431 1.1001108899065327129655103696479779 GT 1 -247427120606190234895313373.1710746045685294824103827539537446 1.6324343501712798393885622118424461 0.0409817580014867887849289935344384 1.0418451823833529403705661617414101 GT 1 -2.7060669813575555603437702039612942 0.5834216035061182292526017409636808 0.0220951538958384534526940647338164 1.0223429080527471142857597809490216 GT 1 -68120854492250698997335011.6429351027374240675417094260869294 2.4303942202577958545035508097617132 0.0638832463708816873105158663309793 1.0660150735002846146374135810746638 GT 1 -228709054746375107194.2251670826589018522872288258579179 1.5095693067911320718697056025601866 0.0871630109054452816079036369716279 1.0911979585837820142259772401006921 GT 1 -2275550111.7177519523374178045724767321762611 0.6557368293558647326858001183056304 0.0112751735925563996803100906757124 1.0113392202421413323846941294026174 GT 1 -51494363549601673.7448351546395373784118439772319224 0.8542978626776670795585714853834611 0.0137500404391641130037742519799408 1.0138454478250086351159170730082062 GT 1 -6072339886200273651940025074023.8374473252903652520891574357077430 1.9982909320335918428823397904596170 0.0538503730629111120420931436586958 1.0553545544278918898851791332493120 GT 1 -1339163294824475049937037488123833.5324285200465972985192275906989616 0.9671106031359786332080210658638802 0.0134162504329698403819160888756116 1.0135070614644806685301494849006372 GT 1 -4209045521797603789645629942920430134222304.5335834119727501403216109990788115 0.3649503504545887800985263530406729 0.0034978324673263332563252956409470 1.0035039641859697094573164226528413 GT 1 -106538993369.5578263707433023453382108421238011 1.4093801957565212673555268348841770 0.0505818242824935381854170610858589 1.0519059286227381712818168686261388 GT 1 -370027662018761340178699017.2561720089177308139202149929129084 0.2323301331159976960373991593743471 0.0084969510717903571102935054036393 1.0085332559607414277583586604555663 GT 1 -116690431504145305499.4681740969298055802937127122304454 0.3386437611741935425499575224662109 0.0069975505311370332842586079640710 1.0070221482039917759336710328597146 GT 1 -8846899418011537.1296643337857286660100449759749635 0.0267291210316527687912303126478926 0.0376447189951146460427718531118295 1.0383715815225261564352979779763605 GT 1 -76745693916520713825064978411606915480194.6851015481032712204428890405275845 0.6995977421493806756237135559929639 0.0659883524183775038021314914317996 1.0682663701869168323226512029892562 GT 1 -16.3717638947169861276412927189020467 0.7094649282343282740837962782809989 0.0325422926766234083804653587306393 1.0330835683945080514018932791860864 GT 1 -491097983293331160112852981755938.4003450363257854130709882046893127 0.4215659123315719512161715286836651 0.0998602482083614230358301182983499 1.1052052479439943643084430743796179 GT 1 -3933257161249068432265438800909.7278197603088776094983500467158044 0.4553101880633762466513732210531356 0.0777521496880417599596060634021212 1.0809412734248935260399842456588921 GT 1 -9301472059921500163.5472278245758061280213371756935635 0.3302394842834321683170672491731425 0.0423017577135637951364179025990088 1.0432225378050665163184152056729527 GT 1 -245155335646424916955.7135264204299831448194171525539592 1.8994477301122876599216596313656948 0.0524761212662970865715906886564312 1.0539031405133508075833268822047485 GT 1 -43.2808720219189697564736180369783470 0.0373601017012661045925486841809479 0.0974315666889782430261840009167417 1.1025107652663723515037968238750389 GT 1 -30373173453971334130166288393032967103.6509757760378973537528884777294910 0.9405373116176160888200932552841707 0.0632167153367581739094300863409318 1.0653033098731447871044980097211743 GT 1 -216.2506766488901680168376479979285439 0.2031610251355966348594198932452446 0.0516559917301569642837005237405294 1.0530379646296093149095462448434860 GT 1 -247048946828673792856518335186396556613441.3308133712941879980871282790052224 0.1254937730836315850998134261809684 0.0204870652137953610397223459755475 1.0206998361858006815360642932890981 GT 1 -10.2011084846924510901393924992093567 0.4735250761140812282439188962811529 0.0930188062040174364897316695246667 1.0976335635957643740989246612954578 GT 1 -8280068104305382508087477391.0491243257543961865104429653538966 0.1113440926689546135647652474989739 0.0950515546075217753773219763406947 1.0998773033220100297326971988242502 GT 1 -1167445271972711474098402975905792209.4640664087422849673628364880456609 0.4129984985272547291668407497122265 0.0779034232950382621825964577698253 1.0811053139426187291899682037076303 GT 1 -78147142377373886282492388628959344114.0641648361025529306265312191819056 0.1555556030235272551280607232319453 0.0528299195134585194816212269861908 1.0542766026754608036176523163550178 GT 1 -5259014.4056214032945117240913123258502746 0.0694251667046848566730949170661639 0.0436338053555410982516519641328063 1.0446143904839199398342929670498251 GT 1 -15661258908196989.8903953183261961061685949184560641 0.0247559151254425081897692534492858 0.0968010162528406068445740990038797 1.1018123913165390149762815451087151 GT 1 -411202181359028829408941625614842984.0544809723732297120325149086632560 0.5638514803265832338224501933368242 0.0069340232356249209813402774582567 1.0069581752867501849037195501509949 GT 1 -44829597651035113774273161468454947.5646992011148405739225934095717167 3.8416342945556229483318914382228353 0.0076188361184912629515594990054162 1.0076480077139185271854493551238605 GT 1 -2690004237356543086749920040436321.6139628136635436833946328459685479 1.9095570142013934591643316119914242 0.0930331364381224205630286086868797 1.0976493636447758713315429043094322 GT 1 -1436.6680612824068489323882009819691268 0.5393700203655424040461276697914430 0.0577242624757828348771604679243861 1.0594573322445883928571131909807451 GT 1 -2675228549844909382.5868305943950019047472155653904140 1.8209490059045473765546349858653085 0.0630628379419946200977867809666447 1.0651390618975422874151285143313306 GT 1 -442439659084117604509.0359066010490918910688721749895108 0.6808211822125257016329384379232504 0.0651128451916759754402829130763740 1.0673294470216527653901671303492993 GT 1 -18.2667942681226264023502222243891399 1.5268514326365356937204731934919411 0.0200473757961869439337172936998939 1.0202510511352333242427978974383591 GT 1 -26435588123476389976801.1028563414090279139963063861687047 3.2657912969295117868907561197735856 0.0397884105204921043545445545471989 1.0414258585912921346142715496096619 LT 2 -2318.6812447785938910133263160316229185 3.1939952240071137269147193399844710 0.0628629397955546771965207111740755 1.0649257318758991453800774948223249 LT 1 -11147338500.4609310809140670926248211738859423 0.3754515782080726352737976009942658 0.0579663340218621155568150888602250 1.0597142662140957795773691208879721 GT 1 -959902323680053989085.1691997983139026334670505852818994 0.0944307032096658958010371061307376 0.0011054810188895376141633577338723 1.0011060925137366057278432001555814 GT 1 -1.2029320680653566308105406843011927 1.1371943094093475841385124535497837 0.0576102149823005905331717390423890 1.0593363054711292663868769164449313 GT 1 -322495148842175496.9711901336862962082186908094145025 0.9354896276668388704004255934213825 0.0763967359048944782190674197905759 1.0794726674076675748737374843124644 GT 1 -17.9191777852607427610349459102653739 0.1340195197448375094251632964767556 0.0895729577028679451644400646468499 1.0938415122977780195563544103830863 GT 1 -16774496488012975836807725868.5922070346703164426826698523713206 0.9958754279255767331468301608785896 0.0341263032968122476834917636944640 1.0347222020724466101687955362069965 GT 1 -2515994048885.2101266926222321246487347547809755 1.7623910471653192475920517908372028 0.0444424643977009753390506384809409 1.0454603019369633773026785088389659 GT 1 -339561243951840961963707537573620.2097018827643615629868875811493025 0.3473389738503577590027400902785070 0.0770900756964447283951813501913968 1.0802236393785053525023443719729327 GT 1 -122640951710046287.6652764742709052012646025734166498 1.0025065778730276711310732414929727 0.0374675872782481276607955231158081 1.0381875378321396577601215301537572 GT 1 -7652155670419725.0572287141314351829369863082749858 0.5569379378843791146591134768890954 0.0916277478507209193049920309462408 1.0961010150679071429345980182436912 GT 1 -6694.5298907360844076394202360590076817 5.9080454430437948200154980054719043 0.0684055002201560573359753701627012 1.0708576450470830772707536357124970 LT 1 -307.0153584499473443961417977291907357 2.2286337738588188250086508969708490 0.0397877907494520718336686583299596 1.0406009676458403771380270655585752 GT 1 -3757465240127413009000124.1516104466912268993790052070688398 3.2220778710009466634903878722312822 0.0989723866397151192854566426005610 1.1042193743847271436959031548938210 LT 1 -6169.5189966559490702260480643149551429 0.1424395393109189940529949080713159 0.0130806414139080093274814407763736 1.0131669464467636426838505047180081 GT 1 -21285463550640298688528462058.2094974616746235257797428913771039 1.7478539726873640679324306104062879 0.0743380309956315576991495665953608 1.0772461552525775580231572771955737 GT 1 -1356533752769661639664748260.4305478184251743605982846444375970 1.9739018225230675404492640815993817 0.0750681325820196702318462875829741 1.0780352010279371797211082070235117 GT 1 -377970.6761040558315105549397241983607298 0.8335002151517004775943815006723461 0.0895884583254529415630343392316013 1.0938585381041529705085773003242743 GT 1 -844137499330561393492608.3981895354123220369565390431048805 0.8406484883577699199907032002150240 0.0653248840321191120423494999840899 1.0675562796280513448835519516420058 GT 1 -42817790174100.3221394195502713866990669347371408 0.0265001950880986571753608477475915 0.0902748528515759327509092189983977 1.0946127611939638393937401307276374 GT 1 -832443.5797873726842385031670293566617586 0.0875665323679119848742821698294014 0.0233748837604379013043210195715887 1.0236524096435415474248513782271192 GT 1 -87510312483800.5264510927854367166551879119723590 0.4042677571260215851982233913744040 0.0091275412646507109959071495514616 1.0091694524953451514740300069567817 GT 1 -630640281180897720018919608829540619.6738554177786031850713241767420993 0.2220783908938297386809260234391911 0.0590963313105979138289761002850612 1.0609145158491601461089743766649925 GT 1 -27404177327051513962034136034460558888.0229148260550290632646031220512662 0.9792654277096913184503709264592707 0.0161825392741713042710429782559490 1.0163149065309587188570686620622013 GT 1 -420717620922296246.4132380980389477717553039734506788 0.2745894898180010006211504327946227 0.0903165995275956202655286370791295 1.0946586515752985916653622582991707 GT 1 -92331879868740628109994201783930520347.2053633065017874372065145358320609 0.1526823131352672919446250677943498 0.0493618994568636878765471882918413 1.0506218350845634597383971427944369 GT 1 -594443524916071768742328476802540.3977624601861427371890986400046056 0.3106222155994767056389928761958502 0.0682779987514588366139334682902273 1.0707207907136127835080921480712813 GT 1 -210357756227781393774456293164050077.0521743460046356579244731165993155 1.0584638332590101178739513996254183 0.0072359387453363962523792824319008 1.0072622451278317217991117532834302 GT 1 -425827400837329401484370321877.2014236532388727872469876770169304 0.6063814544410433954169188083352713 0.0999768214765227153517197850179096 1.1053347620744779149980436688983078 GT 1 -7325134444243023441558267005595.0286214236340335699261515225387414 1.5733409643120555339457354436327791 0.0827445003544366093728227864501470 1.0863692199668861801854530287596821 GT 1 -137.4426713177709214117136415064480778 0.2959369509131128431082293394797855 0.0037479630405749062667500717269875 1.0037550042530270015837093061548615 GT 1 -541393699837265958458275.5432949788211786208851847786590547 0.1128157035078126932425110355720290 0.0103646758098934105876079480198434 1.0104187631184247463364467467404965 GT 1 -13660848518376463736.2564399707716751608088212316852528 4.2051480078012205027020510366082270 0.0997091691349893209859294281270143 1.1050374224524902425867959512255258 LT 1 -25617657007646159801717177134.5726357687720368641664156838616657 0.7465776323824321103396152153761583 0.0844995009369562870435556735414088 1.0882843697415119156888785226919892 GT 1 -238.5708158750839099009671714000910412 2.1428276059211791118858586093466633 0.0615519984171454515271825503011754 1.0635278303692204880632499380803029 GT 1 -30.9476401666449046282807632829954439 0.1206801674611675537458449087139926 0.0646126186906275817206142291805052 1.0667945239359599297837438295864970 GT 1 -234856343482802042909.0820671934524884260558973652112572 4.0706599616260450789800920339614703 0.0076510162797873702576865769750734 1.0076804354586553244106507559473071 GT 1 -137313767441893066268401692044.2508414304266190984104045244429716 0.0483074375784455545165485283204961 0.0001069666262164295559728582759692 1.0001069723475539900398700751634175 GT 1 -4906099340197674484505720916126.6124572860782110928043412308414370 0.1593620615445118484111036497865232 0.0823280336541068209449404648257680 1.0859152873562518861740168149034066 GT 1 -23084707674648571234023667799142320853.2007152826977611400730338012867122 0.6838764150398037596694237787102924 0.0744614108273132679283415174591846 1.0773794523513920619036837173150421 GT 1 -9943041178473516013312764539690917474.7942668062536724640137535037053523 0.0721021913212832781860790141754819 0.0652300879545424145684915153372371 1.0674548633507739246597763562595776 GT 1 -170723626171561115825474600.9394245547818778988501308822253000 0.0456775691064623097947787486480084 0.0121063631007605167462969069459708 1.0121802419897643237391514406986946 GT 1 -31549413542742.9423618931948861761991654295305613 0.3446026820412994377257280172495075 0.0805548868718583360051083224556078 1.0839849288040793023179491474574800 GT 1 -33268195744149135709559950.7337107999317828077378126720453773 0.4534630833979849908267864839770751 0.0237254419157405173025964727396154 1.0240114226165856341046608579961567 GT 1 -2741506275051455305912703826373306.9481551320008355199399607685017598 0.8643771180905721682679968874885090 0.0753354866013155687931285155029380 1.0783242954746292462678700739243762 GT 1 -133750118934590175796080151.6588752149749276793364780804748471 0.3285448610685930054711293662972491 0.0697856009557178160607394378127959 1.0723401827975605078617029726762009 GT 1 -40528005871973407119708291434629545257527.6979843577863165468445730161133200 1.4133983298216183242626113865052675 0.0568446291806507654673569581130719 1.0585242476518283899234607159803735 GT 1 -150948374242629166091693039278219702.2412064310082109734099898463252841 1.5377928027298148833284906337702617 0.0656242589032453462221240594614954 1.0678766292563719531788393600812168 GT 1 -39704579220741858273416973826098917994799.7038868720018224414819221495158784 1.1213653030533668713223476864661665 0.0655428780452712577162992441868465 1.0677895365477252869795082696807958 GT 1 -3396064524967.1861742566921246597451379424134321 0.1774517814588978973184943044023841 0.0350453142214531757776790588331719 1.0356741364881389528008165780144736 GT 1 -3644888688903937908168923526754305705277379.6696179660881207758708532738112869 0.8755411491771455866069324964569167 0.0964652811201891736673273161954976 1.1014407425937331393023307911362769 GT 1 -296502368997484418229.1804115503610698174144141630604976 0.2653485993322695781024702683309068 0.0578942184732316741389405934755175 1.0596377160959384879511033294033695 GT 1 -115314383850427540087507599157891881.7651705563531152408265584138789130 0.4773015927328011673206275883555124 0.0880302232835376119116278271333088 1.0921484290222156576694624805868779 GT 1 -521824246223478773648608956083828528.2195696361885229397570073271475926 0.4398618888859508012425468689675334 0.0901631920870191552070219395933388 1.0944900275168979472767846974193892 GT 1 -10438496522087568813064780780383853.9320006625004123475467584352929437 1.3865352004960414097784043667425836 0.0564486053175159748123736514499020 1.0581044432856256922863080718477125 GT 1 -2219554590773165949838.4495702500152112128463608289931740 2.0003009847367587526519173062666996 0.0335261577816187113847608213793871 1.0341010451403711833331792817327850 GT 1 -13422227078041308805465007363.1907775487076456620984646043616273 1.8733535937730354142311512299364516 0.0893076926473409516660795129358461 1.0935501914049940897865374197614475 GT 1 -231128.1246016516837128515148533595029057 0.0003816482314458618845347339243817 0.0397394744519815638844061314045810 1.0405506505581720956123310132915555 GT 1 -2197782197107371791396240442688.9051223575178071740253751012191204 0.0716842772758340942687768181006412 0.0925398245968632795323496039732591 1.0971055976593485386013662301125128 GT 1 -386285734615477708.7531465991770242003720012160131864 1.6070134944970183256119567083559851 0.0690590898508644273501153900408203 1.0715594729468931521309679352315877 GT 1 -4449762657080545.6727465444461453419602091121547398 0.1071759869846650974651087706047176 0.0677487479027514388372906119099963 1.0701529168323967609794702881293280 GT 1 -880184377173315596593037891804589303653.8894614992474886694830358310516685 1.5397501803595407009185272358536152 0.0344328504149915735726471823683807 1.0350396305055694123350819240880469 GT 1 -2503963.8846270177498838990912998608476874 0.7036702742351692293140362793247236 0.0358932116722948251596362499823674 1.0365532142332766545978915913067769 GT 1 -7629283156537.1706305482734107091056092701579205 4.3594885628416616514372865165257137 0.0832255457126000787324405180874447 1.0868937974070344492572446350155314 LT 1 -2167614764395554995856657430.4007747428490890315008799691772040 0.2657660987585844116719522987622493 0.0893365768525029552028299538701427 1.0935819086633865435973825429992500 GT 1 -6382359136.1928535012393624605974186253463298 2.3886567876700693165107330985509945 0.0721841703740656634292205337349141 1.0749220253464321234411201170868393 GT 1 -1287752393328567694022479396715.2164442320800244638227755176682819 0.0914897139415357029288731669845060 0.0517449213926153491899203337723328 1.0531317426590714946122978087789546 GT 1 -646859343.9256775792185505044710452833010293 0.0462841123274879274451027130370239 0.0329422995649281226675244654000089 1.0334971157794513649126542980768855 GT 1 -31422153050793004782296765808610463.3566211063369247983041147369517112 1.7900337455803313478884543280750281 0.0016998181377704395156335847532838 1.0017012644678523011207299285814649 GT 1 -5.7715364523002080554203049185556824 0.5940749173123282191349286199149876 0.0326406956392990814730957687716575 1.0331852865023872734897835313748437 GT 1 -889259785803272945442821.2494551108333913690839212407698550 0.1845503002352895782962951866340409 0.0611475124056352582312757710572978 1.0630969073282887594042930726674666 GT 1 -7322543938.0912317934476876721839699858062945 1.9811521708053563947874123773495251 0.0131572148676476885799198010274290 1.0132445378161409443408397083346351 GT 1 -527110522818641835900923844798522327.6881533216840030183696212420050142 0.0654110556716482966325261751870042 0.0633254229014178770781799561673256 1.0654193600571392924106675922383216 GT 1 -129346087570397234722057721257.4045885338289945646453363413905016 0.1413980752118355651248912112503864 0.0474351392507992034166874218848452 1.0485970790249075052328779435294987 GT 1 -9432154697488327191.1285645442097240898684278496180961 0.1341229492179198696094770625036350 0.0477667662536276981331582987556935 1.0489452807656982813448691128527092 GT 1 -449755291818955221272144138.6186859925982151876435340308891014 0.1494159657253509026513321068056284 0.0934803351411333588418279419313835 1.0981425558522360947807698008131219 GT 1 -46023674805455303115956609676310028.4324642900489975333714875987795922 0.4187661462413195877113749075776704 0.0006779233169247854174550670550695 1.0006781532108427706759918073130751 GT 1 -74323371650169385827159931842.9050991311878601130308446692657460 0.9673646235335722039875693978659483 0.0060750793951844611631574720445004 1.0060936077690216317597964958958642 GT 1 -5058740485555053653310247605876446208084.6385499424091344998636431759902371 0.4147936335692343612113633722883205 0.0621466659557966402645313669138438 1.0641617024954838306238299455521934 GT 1 -111240021229632603648239.8293868256371685575092076178811936 0.6789809484065002973420393809316560 0.0529241307601503073569042274361848 1.0543760736515323922585355375664589 GT 1 -93682056481328409.7049368701865294161289147880367142 0.7471872193049563717054409244809346 0.0487236085719416921305640707608582 1.0499506262457012132764981375360666 GT 1 -1669400749.4271570929207026967191861571106553 0.4944929595427030186494279420070380 0.0547630460407265062951271542546026 1.0563196379892021870986337124975958 GT 1 -2497763086175137443615110267286297.7591829485955289248568233655405805 0.0116788089752629150412908391409775 0.0703238201497529918147998803679635 1.0729189471777520986327618655040409 GT 1 -1685518396487732071452052.0812172835090100656336950494727611 0.1473961025785267119884049379644379 0.0105154482263929293736351270441280 1.0105711262153976139109732853995208 GT 1 -17444893605793.3263690848619934025252429444053734 0.0867491054298181182106863661025270 0.0196122418224291301785732158264853 1.0198071139651225098563969352553912 GT 1 -89757032004957940.3744857465180887430132566198488780 2.0271074453825877594138781036877069 0.0433084083600896754720815566526492 1.0442742052569786269892944889387275 GT 1 -190994515369664820004050780861397746.1309163585389353589282106808325137 2.0625815493624131644795870871761424 0.0347443978870019431143765507867555 1.0353623400597634870644443324278650 GT 1 -91318266446512079196389586047525.2659330723933709843294954403690345 0.0854507782449638220662199548038830 0.0030730460073761287955132790332724 1.0030777775091593990843843035033357 GT 1 -3456711850525653307223941663133814498.4111630757191035668928987469664805 0.4120017151742593243958568942178570 0.0872347171237495546591054313039530 1.0912765148163657291307775481694539 GT 1 -1082276181.9395049467833561361666746212818767 2.3529424269805133038995967876167888 0.0049114640868806352226130041321392 1.0049235649648969834951228255258505 GT 1 -5083880265774131621883384964334437087981161.8592104969679097856482116878245936 0.1920042611682857590578000892632936 0.0705480697176013409968792708337161 1.0731601888304533895518322558481582 GT 1 -4269997523650342002047700843085625597659.4233955990755209530258210743180143 0.4162342465577558993027110468766265 0.0504797892751304772727055536532999 1.0517984633061278520279170110261605 GT 1 -1009121243742276.8494614222827630290123041229375460 0.1254256175615400359269392710363430 0.0395097573156679775778952527234069 1.0403114554046850535839776032559704 GT 1 -127.5063165114680542850124433303846750 1.0539625290615402358366375250098729 0.0765563490574238167238289177545998 1.0796454980506005311287603794709510 GT 1 -23302232.2685241650764294865397943163156304 1.9286334043351813384383424089560587 0.0392751835939340391681490726442967 1.0400672623126210773668960783441597 GT 1 -4113526459222539105525115490656740.0639041559310641776444556816293640 0.6236321874271106956104358443010139 0.0449849187472128512512178596017816 1.0460281467383621167014557857517519 GT 1 -67066626415535771074552956307.1058098602081126776308403329010383 0.1512982140826474967278602954541572 0.0666818982835545216817979555120321 1.0690091912096401031811496778913500 GT 1 -5358448191944254.5736442931049993306336971387938577 1.9336061477834127564785260399980553 0.0001431386567268101879707209641957 1.0001431489020420137324779075025744 GT 1 -1313327286198.9684499806096897187901800002497858 0.4226430267214760449024473295774158 0.0354032812399710270614275463584011 1.0360451730117398090187782304696937 GT 1 -55413573780612502005506250450724180797.8076826437155648207712650280844805 0.3233576532659971159149788896733930 0.0074649409111682783187637167116751 1.0074929430256960132562553071174534 GT 1 -2909772336713684949198834323123243548185.6596492644884506827075607340615541 2.0003107787101004428555385131290275 0.0968763386558118768171114719678819 1.1018957899310884312222203015781656 GT 1 -208506571917191.9355717149773999678609306994992483 0.0042456300404844557841058588318639 0.0845954589749379539111735974519192 1.0883891900745914611219185210297832 GT 1 -7082075970974865065003252915309361403768187.2676217031737753197921283943321038 0.3002628538839179030943706638067703 0.0993026420364746901044164287026006 1.1045859735113581495443564648794035 GT 1 -30788547.7915347323214054952977628317023738 3.8264521652028227964946518035874439 0.0699861095159462952932103514544638 1.0725557569420176108997037128800174 LT 1 -7720402820546233058432002969611677643.0186256562450530819923445930808285 1.7247282503872431050155490723202914 0.0041935711270128932180135432205055 1.0042023888067572189561205108811804 GT 1 -21526235874482.7518871635961569841923707754393792 1.1713902013954928914617207111066705 0.0463275238153090750653415513799652 1.0474349828486553168742806956372655 GT 1 -199474435440928269653608620563279424.3974092566920571615195631698690693 2.8162965674724914352561510057091187 0.0601042537153801192685003905661486 1.0639074698910621855225959952371134 LT 2 -119618367418779343.0107647088612686538981771381894065 1.8537318482945951208181232808111427 0.0307287374570620733825589254633337 1.0312107655626724659691560366688627 GT 1 -6053268821986222037.9176934988738304696628316471492967 1.9929189559233262363272051486029816 0.0806273677854236920096090732437802 1.0840637630591722508057489306828431 GT 1 -1.7255828401458421527628205382724901 0.9629869354032684541864718731360570 0.0009177163044444450857999208259006 1.0009181376638641643451383136707371 GT 1 -3374822707356320093366.8382609221434474009562324896973707 0.3206507563018149200501688530930734 0.0845975532420837395341282183161802 1.0883914778822738237461145574156023 GT 1 -32285514537211471328467749194855.5433167377014298217382473811333835 2.9017822693097624332060460271880251 0.0289131340369441381284967354380196 1.0293393543800402594318038271570264 GT 1 -38814724097604.0804839710420101804324003466246847 0.3765608039059124105853501750765332 0.0606153746511796733199706492421389 1.0625302719817432249093844530016469 GT 1 -4152655583391637426928942130878546418811251.7289533640185954839417933572948597 0.4653156128331334218702461594113760 0.0014746979396719179224050081788968 1.0014757863768875740889539071345303 GT 1 -7559180403.9204689822525106734281965947368905 1.5688438586155209715109621413669132 0.0646559769456375176213541244666224 1.0668408782708650483177464262001133 GT 1 -18.9570028324226691110955829965467261 0.0460878592575486494957764066715330 0.0815052890027351889912684872354498 1.0850191326480923571000258098573516 GT 1 -34803903082447368577.5794379315891169572972185396755688 0.7457251393000886567397130029858269 0.0194503928022861583384720175030486 1.0196420408492052989096984029785891 GT 1 -300182579863996429379531714.4251615232418756289131094121715794 1.4111954125011427944180619352530448 0.0105082913821845593536088017370850 1.0105638933401462597936881727095239 GT 1 -146720804809748367450429710218057.7313559783076804961143291832419395 0.2267015044954553786443887394161090 0.0795572571446007208491593495945724 1.0829004824648278138956232257670187 GT 1 -35908986541562503370895765397122422.7351104014320445444226926036475910 0.1795925904412638487634330645797610 0.0020853610513630378644870897535378 1.0020875384443472930479769973376104 GT 1 -228365.4779830611773139642299906337602873 0.4076321906831703784760175060275578 0.0466699215738807314602424422833644 1.0477940780805134264758505350017003 GT 1 -17850626558580553198707675754166.3091430732662375446043933421126741 0.6708051854912899429238677997249339 0.0229421896890191493542700033088652 1.0232094574401791397483014039781582 GT 1 -133895092186990491471477562613452960526829.7268736657804108845382717777218470 0.4763225622164371409532880347116296 0.0949136547331648228059336671380845 1.0997249306987484310082815614527222 GT 1 -29698308768203520549.4134230878019014405176051498852136 0.2464772419593040283630312813827804 0.0105480995534170748856402393083199 1.0106041250789947511939250314802056 GT 1 -9745347277749635434.1661129505182223038404992582999805 0.1418082507735637551762271915779382 0.0173466178820013592520110396996128 1.0174988333082497623693983697175563 GT 1 -824292049844221272132097756756.8126920493401957651529374376309935 1.8245531314585147419425814213477136 0.0205753111194047043771100641447004 1.0207899318627665000048408986369198 GT 1 -3353948746743470126923523590555.7147196236041849818131817079907087 0.3426863055796037728295654230069423 0.0069708693926875956266348148636372 1.0069952794082297070830206451905711 GT 1 -5245575383.3504525654689374576488398646417780 2.7570683410909235701459143641577906 0.0251376873229914237006024850559685 1.0254590357236282912722231926998778 GT 1 -146029129024881886.0960893742540104237531394467876800 0.3988450358323693587936847738663349 0.0361470300295420431800739167585252 1.0368165167816012785236522644395860 GT 1 -344335807283941488810783284105386.3721347153175679421767168438180693 1.2045459544444534118157391342519540 0.0446079536178238454732120618835706 1.0456335029696821131583128910334197 GT 1 -52917014640697533706789567227679607528.9909971982215954154765290531594392 1.1172283846010507538453715823416828 0.0181589426492505735732858230955653 1.0183258397860765145410707209131192 GT 1 -417586725599.3110418405195879514150111312065161 0.6344555655240548110371251336823080 0.0556991513006032965261537108233359 1.0573104679531693422578454917184555 GT 1 -44959267436018622347445143589330.3553040369504808005120148395123388 0.0328562634870272262766792502073244 0.0259173818328295369386076427282511 1.0262591553566612633905334859899248 GT 1 -5135444095920.3680580168826093321684980670698218 0.1188026375206808410892962641125769 0.0786583902664259302873977610067766 1.0819243997347550867965612809673376 GT 1 -38883039914107881119742712797464.5981549874649315327909274442816003 0.1859972531830434253066675417253487 0.0664689847358516299417472776546022 1.0687810918451125620959311971372822 GT 1 -1546432594960407363668316391155318748612.3746549778134286739551280221227395 0.6926667973543660999147081145174249 0.0988939888120508019575474864877850 1.1041323688190511509852570060284149 GT 1 -172.2233913734526980899701828120706690 0.0603435655553291030783228575005484 0.0702827838007091735516309612667631 1.0728748076759794597094532375111059 GT 1 -2.4191719144819056073532053713390720 0.2640103669354377796122306999476323 0.0847807361737851570730193925848892 1.0885916098169643410335289096518010 GT 1 -25127259658604714846464.0337826565207396034330414947641318 1.4407117027307047404859692585886811 0.0016702858244782165324824495904142 1.0016716823070793080127876508335318 GT 1 -46138449.0698955882235248800999894887491502 0.0036269017919834332629844758861907 0.0666456782919467687914192676885213 1.0689703841954497385245787981900932 GT 1 -102703172458804431.7787503871774233491241576801190925 0.2043491562178181995196373976938077 0.0979030766293325221622019568374087 1.1030333108445179104867837739557097 GT 1 -53559982583194174898233974136770887032824.8929210110285092027262614220691035 0.1316604348922434279982468569551877 0.0509800625048911522194662431111744 1.0523254716412514990929281535244612 GT 1 -8966025281.8175496111551264266790162145299878 0.4416231796296288964536062328467262 0.0006295422446534402166205215449477 1.0006297404895790785977043246809428 GT 1 -9695472678071334174.7240361366214601098810605797335506 0.2537231275132804867447624685178861 0.0896174734606107664918666574398889 1.0938904089627709828519797636194108 GT 1 -8467736300109830.6495971701271006088861055557865902 2.3179221540956875944430881047151367 0.0321005907029984860952899248164619 1.0326271131206975537801744856221389 GT 1 -5526956.2067636868888241089878412894413832 0.6081479417470290868351105724412908 0.0263932822279980639773076953983992 1.0267478374024659334983005055476474 GT 1 -1931738.4927098517605249100558079991181633 0.4587895532104617621549899183172401 0.0960613914961747451833857588893307 1.1009938318431092847591117476025271 GT 1 -1483079848330516644253938833519633271070371.0884958303633075902411076422870194 0.6261578312522845582150713462881172 0.0714474357332121861051867117483302 1.0741282877650802523339986052320295 GT 1 -11789373242.5591257810887327682513994429852750 0.0999938793693601668994449007712655 0.0297974907248605546678069144480004 1.0302504568260461203096593447246855 GT 1 -125545229669092370035573981310564904293196.8047889330785626394411620833246808 1.2865327476492675010230904329094699 0.0788860587755900200996566660169759 1.0821715356943764453066202632633310 GT 1 -1292720672265599756708181831935119665599.2071861595238994703575910245269757 0.9287462427070074746719528014136675 0.0594578512409326572065986284353517 1.0612988159777435181301218367873575 GT 1 -1344.4224219649717446589568885550600870 0.6249654036054280823576540434833880 0.0358468753747687034783721838288018 1.0365051540135689480787432616119754 GT 1 -19655402.5258952829354618658991155918509500 0.2109605511587144164013757103209787 0.0885277905403496548692214997480265 1.0926941741272792978231772111627864 GT 1 -28609716239465818276484142500711.2268447974674271476398632894769517 0.0272918746460150388833519388811094 0.0608181998116487201465583038047347 1.0627462080897242532886561679406258 GT 1 -76253323052.4826161778784130536896038463540165 3.6942316337995510716435759297414305 0.0769853851966002631558502546262906 1.0801102105814567361859545696767962 LT 1 -5868831893795213734046657221488.6502139133237247685729084633266369 0.6294962347074804248331453488425688 0.0182652320748111018979226770420007 1.0184341008720973765783091264429125 GT 1 -108002459652166612832530932849181429816020.3587344727953965061838023298970542 1.2473092043257480725135902850678079 0.0554433349032424907834211458157566 1.0570395990315525082284951161669974 GT 1 -16527191031061528150338094713.3427670034274347088289028497910844 2.1546880036850520149446140295991840 0.0975393352545304674379008758195577 1.1026301744945075798272484293165606 GT 1 -2298516143.8178316172629536139826519524133038 0.0793711961621087831969378336959542 0.0630728513937466563386359076413398 1.0651497493861668847056958388831242 GT 1 -2.7005200758926652661140599881792118 0.5839543880561451748326592504907773 0.0625832714648885648133617613187334 1.0646273479784393290062259376997705 GT 1 -58040386320025943922426.4309996610398505861798473741674764 3.1188995306877813066433335346244088 0.0267775709831669600564239944749868 1.0271426216708172193782478747214433 GT 1 -126826046528764973828860.9028597664989633457407843205612138 1.2737449524013455037874575802470797 0.0331280942343945510395501771793536 1.0336892579023521460354419440584194 GT 1 -30025918293522519750659734432.7683045065419379767949340421526706 1.7440856022526419197960967849375993 0.0260017482111062531172732525273242 1.0263457702191452452975857178208629 GT 1 -1130522975131397638263399109797985.6582101107788480943400967877194791 2.0864149609194510379003659161978562 0.0432767453704191799116219795191770 1.0442411094651955562611211630075223 GT 1 -588037531195135389371427858767135129043.2434860295255007952649029034620526 1.0722597113129810523281029852560791 0.0917264334565368201613800200918743 1.0962096610184799279532200194612650 GT 1 -319854606332482843143710391319.7992549083859781876383680716919877 0.1391987218117861362345155862853966 0.0417503418647701091297175422543097 1.0426469314810145501904216200671375 GT 1 -141119618150169080925337021530.1449435001230677485352764397442382 0.0815291814882281645572732203678148 0.0934949648866409734983696680294990 1.0981586943477658647857908024340966 GT 1 -4930617739140020074391721806535.9500018176859989425841507815697962 0.5558181303555702989608276746557809 0.0231420825641447648392286761188469 1.0234140649091547703214182241028297 GT 1 -245366944941207033989301925436360.2929161478725754735246475642280562 1.1190764727385511341401552319709144 0.0372039850952355382056595510811402 1.0379137121503731082238447778939217 GT 1 -21.2608839295212133581606740550629527 0.3391549735379294378416544249079416 0.0849547186324883126965150052713062 1.0887817270977520577883853321808388 GT 1 -725256456762871991153253.3802010606474028088519941886972876 0.1786905487519893621899919007986122 0.0378516886658604709435495390601934 1.0385866704133628833992022432043437 GT 1 -261883488143933625515866695255948508.8737418314159247595154422467824898 0.0798696204403585885975477813323873 0.0419791946286378221764061849211035 1.0428857837404570363741979259197355 GT 1 -79374682977871661274743727887074084520.7386724635562443565688685416061151 0.6170113953554989574944139332211246 0.0585507365327412443663417409494750 1.0603348213786760187443145294877819 GT 1 -276956306371300954530097830642.6265065809282437160159906492657853 2.0762551045639464818893234452275091 0.0809003981215426857136609955334215 1.0843607817827222613382929022355846 GT 1 -164546806405273262301980450342.0038288913176115946899975842348739 2.4697815276343833967786806452981502 0.0787493174589606084813084976335348 1.0820230945930693366121038618036293 GT 1 -38.6009980507065107423160160062622035 0.6425377418179748671168557033687675 0.0778400546371291469742695650412628 1.0810365939384590016037240234300282 GT 1 -28693.6137006845617446729018899346148914 1.2277242207224749211521589783788586 0.0402128761360965788414820683215722 1.0410437650846295846907025793794521 GT 1 -1052.9251085387500134715976359154006142 0.6856586947781436757698936927430751 0.0545510161209876972534303701641996 1.0560953491040052206751863520859903 GT 1 -118274514723021.8360169559420296324121521814915761 0.1448528113455055787931385156267453 0.0375480638815758172760362469260550 1.0382711505674048172607686580898380 GT 1 -43.3212100956411594961377931794769030 4.8879651612106889847167729485617864 0.0454859612371399821327330314102524 1.0465529279487390025432328804705828 LT 1 -42827803618193991722784.4769492584348980203825389689971173 0.4210256105622636560288044780316596 0.0851862994993079220569960640264691 1.0890348404473059719926594873805068 GT 1 -8096589605536850.1515824898019267964623025022421891 2.0983379774514197456046900663121620 0.0759561915882722665524485914390275 1.0789957967633480243369282259967137 GT 1 -60637.8760324025512497163147945917947407 0.9216360770297893880228843915930704 0.0827717866469390268546377038043155 1.0863989681650425191243753773444245 GT 1 -4.0718936946664470227304747227540589 0.9900068949044985563388239409171518 0.0665737526814031504730311040342420 1.0688933257432967766396682340870488 GT 1 -5508458281551543660855981792150934380849496.0767353098016345112657879232881229 0.0938980595225778071888020571345321 0.0437748178253342696145561126578778 1.0447618474595790081237200631403711 GT 1 -20473185467389619935630350419198.2318990523179679123866400387312882 0.2463553044449835812984129775468943 0.0688121759407734045443453111438259 1.0712942776282213915430655374405545 GT 1 -16384254477233654185.1459440195175579982879299696372509 0.2150079404541389988667631813701444 0.0052496997641375323454073444213996 1.0052635278547249099949265392417509 GT 1 -1028261817405515827.2095918841443256250695468737261442 2.6404648120448779102421214465530635 0.0002148369709294700520487126415741 1.0002148600516973031486417766190173 GT 1 -40364468678115626.4989560713944906167754776705339947 1.2650105488420611504481281778363440 0.0546554852453641015628004866112976 1.0562058520484655252335087715281454 GT 1 -923526063748030504055062107.8994733457329654826179828118389158 0.4463175022676703881398129737052751 0.0711656689126025045409105311009016 1.0738248864398357418235229365098680 GT 1 -380598740974691284807319687536.0670218269927489793819924762475923 0.0537399929877233398445136393523509 0.0902584992788580114895209097102208 1.0945947849669881921903474415958973 GT 1 -2607382894.8203710119145898417016083526748673 1.0717122863014115679140630502345985 0.0467535076956827932831390051104600 1.0478817599739540769454452146774511 GT 1 -1.5750538400967119374125139234873254 0.0734697596569478238272158389438199 0.0006287092346352061805934578051192 1.0006289069551628884087956724416877 GT 1 -157891768006870240614634891692382.6799347323790961820851992127847130 0.2629044527095609285003554092474315 0.0993851519165194836809678973156167 1.1046775843712918285184467545287350 GT 1 -680660.8785701339567542448940274505207248 0.5093785762789593736609880951211709 0.0947624657862718332527086579844606 1.0995579009766548672540235160252400 GT 1 -136431577770256512540106564004761654.0190544695121365064764360531309861 0.7597709714865639174930665617710267 0.0482515877532070215732890593008808 1.0494545519670022434440585575844548 GT 1 -2442069315820557422547704.9143082396537611361777967748020530 2.9870113943200960677791075370021293 0.0782101217271584275204920140051035 1.0814379791499807356604499182779619 LT 1 -2983747388587569688121866040837976823881987.8177236192161040256929062785166214 2.2500728251752894564405939645816549 0.0184303899562444234093459788541127 1.0186023456778200256858046635410093 GT 1 -67750139111.8906061345589698267301943266575883 0.6344640624555836055554384783974566 0.0919846667634596178848999816379635 1.0964940136990408911894145368932901 GT 1 -3646089735759.7275161211514257055329111120388538 0.6207336572733608378862980327042000 0.0242599688457045491520065089807304 1.0245590895718136697558810485845848 GT 1 -1094426.9988952103574508727511802376035806 0.6262677502420852545625240911722979 0.0303370154829044136866093115424248 1.0308067064976669157394783520055652 GT 1 -133344083765570639869556241658012243181.3904905785500603873525607671515660 1.0488960324618310386062291696113465 0.0956435514664372681679560969489279 1.1005316948311787508543705818240439 GT 1 -23368368974230019.4802278115961863873475474922477004 0.6402630130821612370802122629635129 0.0954769471488228289768212444244568 1.1003474876267099012517529817511399 GT 1 -53548508025484566.0413978677851837096934708875089502 0.0807331845145974199269822789380092 0.0438546452430944324874201693554300 1.0448453327635668140562475337759612 GT 1 -18229152686783152088907479713934743.6801168897918215683893258679373331 2.2844724294782985546852595400256212 0.0582273025718101338827493552597447 1.0599913313697156711099119765875582 GT 1 -32668582528610950762690794030370923595.9283377385495071549813495345254968 2.7687548845505204002648011946277138 0.0309262788458104278582210475612129 1.0314145903627918633595983400185383 GT 1 -65246833130753142192894309060675683466218.5417733484020399085983088536575426 0.7876541426237036153034402518638828 0.0386652522690105626555350819281067 1.0394325979590523896417732413849233 GT 1 -429421478450801.8609900128410266091309651309143417 2.3914407702701999384951742185093270 0.0021836285155069537924960535499793 1.0021860161086313233650552482389683 GT 1 -89934.5700079246207374653755457786414067 0.0868990953853245191528666476318317 0.0247255861828539337531656788562156 1.0250363975150627078461273339387769 GT 1 -25750712309340988899854389.6210299602361074668493863274785311 0.8709238659476579650602504776073021 0.0172569271228243081445171459122275 1.0174075634181353700513129195077271 GT 1 -5151739379893371088363145672986938158039.3299585128942895028609762574647197 1.6063203279822964772292985489750844 0.0718206410961872846610971202602045 1.0745302901902486861868497148152879 GT 1 -10997541252742324571435010681575358525.6965188672817470289695693132245064 0.6237413238833339958811166387255869 0.0593469232796724996305919584325086 1.0611808824853698517213614122435157 GT 1 -44344572266.6709787669324255158824998385446578 0.3020256677822005720693997796714287 0.0434177928657890394324273248177827 1.0443885480195133211826902573148728 GT 1 -10137435440993824423379399684060468.6277793183001369888137719268886176 0.3625764038874741060127548702884504 0.0305868456956558093870141355949411 1.0310643861309025760008940630708825 GT 1 -132.6988767480148900134247719069666171 0.4109079241102303524442166057002390 0.0092425820408145564766441603701770 1.0092855597236888998455675818821171 GT 1 -3536595802572.4574505154824716722839869773828333 0.2177795594051373214471212801941766 0.0968252141621305210924434525441897 1.1018391830134721702517351625474406 GT 1 -129608633.7571458777294115366353768370522092 0.7315694309926115241473627349325314 0.0985533828281894928987743196360813 1.1037544536530179459934648037761751 GT 1 -23937378.2944339588472335791610067119733979 0.6735083020864062195367574619486156 0.0855236023362060164230927245084221 1.0894036204905142901545872830691000 GT 1 -2644936221080503536062193931472.3490787697163835441735050358070825 0.4284451823583072607676573560247352 0.0716998890867172899655124934945045 1.0744002030962587068873665718997838 GT 1 -163577769244075154290258438982189488920.3340766937161094790169242392519204 1.1866404378369049988715595620357774 0.0752723028379650855316438243654294 1.0782559662548842256773848654423328 GT 1 -98979166143377531072232.6650298142051324979981223091401943 1.1864916762999352009859378167700729 0.0583790058319865636918973121173119 1.0601524270144355387334215815849740 GT 1 -2.2657903500394028928730419401546680 0.4415179718035209831589787841911371 0.0823664576326209646014988884669024 1.0859571593806503707196599467014475 GT 1 -386798.0515175855947432878747486512793636 1.7927819254862912349528778773236615 0.0369355216010237830281226793818691 1.0376349136632717324575480708588510 GT 1 -808021596454580624301644.2396555753367253742421008366156844 0.0953969525872497229241646222177132 0.0948542600571122178053808500141729 1.0996593096366103822495197961595609 GT 1 -23125557817547773472577691208510043933399409.7989055271336379913437299747916946 0.0652311610173336322009366920364994 0.0098692305351013691861006168447299 1.0099182542080815464437822418307882 GT 1 -1052167240141785732982.2424786785070959771236710778186322 0.8074311664297023245995766276706179 0.0178928348858713428468802592295170 1.0180548471377329017626759862290262 GT 1 -68119746273170.2153276625025629637090051012245951 0.6847763990227641467010129304825314 0.0841953189940642440557052014721131 1.0879521673876934168110893265081956 GT 1 -108645547389788085515696720523648786639.0542070384572831358558822495348265 0.2571979625092867633750300430623752 0.0615081062742193055659993880737943 1.0634810604720662380246058150101132 GT 1 -1437351071122181.2950415659783233702077832100278150 1.7048037576527462244352431762294863 0.0327065152387054527978812223225484 1.0332533293055216144011989200335579 GT 1 -4513105450937156262373713449613.7150855437708156956630361566293559 0.4358911261728452154948585771087612 0.0443759981484525491353965643854998 1.0453907467974094741665372723952199 GT 1 -81272461027923793440534064285628662612381.8600760774512623646332061068517138 6.8692794555574391730670189500947012 0.0525707785055265791007445503361725 1.0540030450854447819989553420129312 LT 1 -164774999172880015500205347690.0333047433579742943537512301226821 0.5186694298999392119790895021044950 0.0967634646702173461497133457313933 1.1017708159796591711420415843305378 GT 1 -1101717292705950512699299069097160564.6012089707169477783951323248236744 0.0988578200450703489017991622191465 0.0280983746613206627558147542458586 1.0285006881429248261976061722666975 GT 1 -25563382295124958732453.0442306011687153227549300395458909 1.6289717526368733341987590049381038 0.0165417986348769268426204063055769 1.0166801419391144336524369889392613 GT 1 -197231332866461468.0092052193503459884876296009754785 0.3092272099573577084218199264823792 0.0504681757686486172444730994291842 1.0517862324601391874451397283991306 GT 1 -15.6662048907605798197253051721190953 2.6113693893015283424535302210809385 0.0621618748498713018731711300474428 1.0641779193354128535059349455151065 GT 1 -8571348205211969309529.3302257153148325307276161456285912 0.1197536306367218629705076145338300 0.0422485620517613947451109849923230 1.0431669940208940610627118263607491 GT 1 -734591143589723870139913624.5728247042059532960419916786533992 2.0814452771589981919093418933495869 0.0294842887548811892412392323414851 1.0299276876889433453643643818650887 GT 1 -260150834635201619194554.6264672882508332900220948589866446 0.5225873658965792782419182709244024 0.0065340541504563854891837076693938 1.0065554945283691263927775372731368 GT 1 -172755650749745035586690.2896110595363743619720324042482545 2.3682772161573722088001749753936469 0.0462366165061820207849503917558943 1.0473396639851301171678324200120112 GT 1 -1615440752986196785383.7553207789833455571843471066571368 0.4763042257983542836030239316675882 0.0841841970000137627135747886896999 1.0879400229569581880621513729213687 GT 1 -333612641.5261139212001518991772390062252176 0.4347755101412678335919573399733889 0.0428996415384208283758826609742725 1.0438470252514788184499330872888620 GT 1 -2868149616818.0490696404861289315151471049191116 0.3360562184620478944523185657953074 0.0673344994623051430185273680171598 1.0697086627425838316070508988762656 GT 1 -42.1970389464033304824961026300323727 0.8483244588490582605668778173840929 0.0896124788173736244315321211208580 1.0938849226650988485387299036072313 GT 1 -1240063969558428070.5865302943872198587673901928099466 0.7661998830054783948093459553499660 0.0648704731488244054560991117304870 1.0670702278964055441468037830100626 GT 1 -168023356542712076725.1382431325137680760013507169403011 0.9658609648353557654124335060978587 0.0569866494242578902604093418533853 1.0586748388924364642870950942014099 GT 1 -140131419.1095114345783268144013835049175201 0.0332166908098811581478222528398695 0.0130086560384749662202120207219638 1.0130940096362260152584054929542314 GT 1 -315296013938282836850.3195085142689752858260927107346732 0.5985140357841437384695250710530995 0.0516582879103367990001504913420490 1.0530403858849129090232132612873687 GT 1 -424113244329623718749.2217321070812218745403613262481278 0.3219674061580899491682467018346976 0.0053873966917779637103530238742377 1.0054019610461903997837017508627341 GT 1 -210956418637831528950917018859.4010849682707749093903920055921133 0.4278479318005709494229759797647502 0.0656053159656221220028965213921678 1.0678563560998952353058538297272461 GT 1 -164709291935836378148415551457881786.8772435653813767503403010267503606 2.0489345020027670614352071297668842 0.0867363943266836794825908662844950 1.0907307153357973358722810245347960 GT 1 -2557653937265787803479334.8163062522692635586246218896381378 0.5416440379189308378168970729429368 0.0751256694012608097596943407618233 1.0780974095115300913312768852641695 GT 1 -359491632210610.4901813016198853373563055103207218 0.8900191382036832276936223430217576 0.0973578945753619029924026636726216 1.1024291436360124493913093383103121 GT 1 -86382397426120393.8844489162123807919822398142777646 1.0380462164129226981453497837137945 0.0115996967998238413098414473678811 1.0116674981091534590701160102902659 GT 1 -6747838315083778519141038028665586789621562.1709148194941637200372327205171253 0.2177991336444331295156272320468431 0.0813662632336956538047452524604119 1.0848677814788541157026425121804763 GT 1 -507472990422366253561418304300.9832490827048977481008330133286092 0.3710307922047152674479971966845544 0.0257441730295081716899640275203495 1.0260813538004583965933746404340726 GT 1 -967312.8668221706817580178983989087756926 0.5766213801035525988854626355838932 0.0000068219471336895657304883171109 1.0000068219704032767424806546449298 GT 1 -837.0940966859013853197778558036588945 0.9583017359031627368921620409773796 0.0844043919794273991111465805574503 1.0881804877472828981261964465688700 GT 1 -8599357001148863896167359254259516.6117210550481076311991390767501274 1.7271253140826954291783537469480664 0.0815795959478571157506294420768232 1.0851000367078974932292746273172650 GT 1 -94506554.4092012613869707757515847158472791 0.2843770495143084357744489869151969 0.0430241166592827267904570649266735 1.0439770881176477904281372270336883 GT 1 -1470029840653.1492657935356324958157682342121399 0.9885703320409716646108991500457814 0.0345498375753694766901090870560823 1.0351607968563767799028666774688954 GT 1 -120125521643316625.9392337646392465654669291514306411 2.0885248221348993010394407505219659 0.0156566518419718375710410785602123 1.0157805117372600830415863227202119 GT 1 -88514.0213789051854578770784518166986232 0.1675882007661056151773091944885029 0.0324068620577975593396046221345707 1.0329435921046050436260238643185415 GT 1 -7766004757944718.9319258382533784161609699658245002 0.4918614899741088036954751779904141 0.0664080915234137776433339906601798 1.0687158650604320509657664800118017 GT 1 -1085751776723647140744160145.3808998480745274447468018549148732 0.1903711740456019081273617144076412 0.0766420695655676325935267167602880 1.0797383293640126197675185019773131 GT 1 -659992.6516779659787304593169650991669046 0.4362433803655675032136336289076732 0.0256196117958737104625934436707133 1.0259535092773666876077698081996021 GT 1 -2764140921457159510364.6331093075414004983095273267678840 1.1668932735378375091603162016739866 0.0360640704786389330876910736960033 1.0367304497324796766659475822243553 GT 1 -1168910283553111416321184713020855363929.6373336942875907961147202419968117 0.1138377765458962095565880252796750 0.0483227202136926498315002536931130 1.0495292934825932867300841449422937 GT 1 -8254069499.0288081566595299928044410610713011 0.4133811567471696562379439395019227 0.0205831813514299585594026750673904 1.0207979674613537729986798357209374 GT 1 -1590771203133314091381.0590614537416755802297616437189924 1.3353434622923480893661222471965540 0.0081601274604710281082462431806896 1.0081936035376413700692692881987171 GT 1 -299690917103674598.6533589630612553481907137071964425 0.2172281278709137090827404214754815 0.0344482352938812648374574678333593 1.0350555641477456262445855835550985 GT 1 -525440858678461297245326456575667.6354638264630884459429095356244933 2.4354322055671425530129845832078008 0.0197331316953564100524221991068159 1.0199304297918343002925901497965572 GT 1 -11097384665517138702.9927805468178968068448068658721279 0.3830932016884820734686292496462033 0.0046220073502244925997532874525038 1.0046327218539549968520944806996755 GT 1 -14346963884588278.8589717656645160601089211701340832 0.2350813660152721733179234406835689 0.0975554417937282377573285198824978 1.1026480220124751518102499660567642 GT 1 -69325.5889400418463956820765258198204961 0.7805866274019821903176265805446680 0.0061382294825391223858406818412031 1.0061571458615724504621827744138743 GT 1 -68245796296724399027201789918.6226424178819169578912589667538740 0.5166361965515433047990830078670084 0.0275659953618181001464540973045934 1.0279530673468039058750990672373300 GT 1 -13610774886886008084142114476647831094029.2373028568396555684997429440545571 0.3965511044815263781994472073310386 0.0661829809462883038471140632654817 1.0684747710237728245266914269266506 GT 1 -32558608943926446066829032472545055346532.2355064253848002345887940721886112 0.4312824223023981514184931993185878 0.0995019234121778241112773438861756 1.1048072503064172009903795982387354 GT 1 -139598.1143555172599517393310954220678919 1.4376840897092709285377305100579638 0.0469252399757827089754961773302759 1.0480619313698871691666517067739283 GT 1 -958128092803517325925203828032691952.7948572868223542343293925717133470 0.8377653351162348316165535810678005 0.0176529113054965275366997476211476 1.0178105822676270345872876683290841 GT 1 -182589761939413982553414711.6347395005988115641097356759149633 0.3761488126727855935719930999546702 0.0186222331101549250211314100263927 1.0187978100664996543860156972866293 GT 1 -218524491.5546517281371789488918867515589486 3.4497682525817038618611805372889551 0.0972510913597744565563229204740050 1.1023108277533255524509613462312292 LT 1 -3451447073044070.1612972649915783713598151597576356 0.1754768028684992369456681303621645 0.0630050218418804874906148160536653 1.0650773562478106919789627362442094 GT 1 -111946665737175576572057.4883206148485696771877206221035482 0.3653825329743805300301774072717258 0.0894465665726686743454134310348401 1.0937026957293555046840049990049780 GT 1 -1037215744067289361422385.3806406006689056019563458848570413 0.1090488246104041019308944244036553 0.0750510136686159285553190941365933 1.0780166929025413916648810457849511 GT 1 -1054206425.0100244332272328671175032636241058 0.4545882089529340422665973879161873 0.0396771619600333043681075847475701 1.0404857614279718700830054381160073 GT 1 -54163062130395803392290839491.3308489474290630419040552612638281 0.3747739985448174355440607966987962 0.0580140227961656377458265111354938 1.0597648907120794250195527176643656 GT 1 -7414697917958970708.0695030424617330197033893462113660 0.7721586209565911550063065309349772 0.0863681387044439522861987546577235 1.0903275662406403851355274660995216 GT 1 -2909115955567796780427971188002120.1945853959556469803185478033887400 0.1761822264088496154527791454551690 0.0159420527264811259939691786239835 1.0160704941581938794098798054610246 GT 1 -3849165212646.4203278751047099705059352581378214 1.4275971141718122973070265056489737 0.0053330702222436936554356017158250 1.0053473418047572976235980727271832 GT 1 -50313009288977649626781.8592456669039646867795954965532841 0.8437490554451010606015441482891818 0.0496550707067696143131669724344949 1.0509302768198433703650150226673504 GT 1 -2898109811494641080768042439684672275.7059329643511285720572624837183911 2.1941041202348716975820768678591511 0.0839786091115412585883539036315678 1.0877155620823547253862173548722850 GT 1 -7102982312345955931518856341117.1415007940537327976982707006451404 0.0455643713992153899287259789550553 0.0647508004325200132759280636262411 1.0669422616029727216167566001830830 GT 1 -989317183122667.6706619190682599876770728044802061 0.2736906629007816641440676864244480 0.0461799669997657668128349546261946 1.0472802699833338304321469680009242 GT 1 -2582.5724458066048581810815519145601928 0.5648943070330436809509662205436813 0.0578903321057827106864914283686055 1.0596335909122179497992218467029146 GT 1 -64859.9227782507756119171307126435333304 1.1477082547015771409144228366002704 0.0794978893718711287236287334662794 1.0828359853967729684253664221283315 GT 1 -122081174411503028337859619059970126421.6081825260739141349278522755978238 0.4073148113686580217672211984845448 0.0380572171379294517557351775934717 1.0388003073596287216798552598946429 GT 1 -496200661192757269945746896735766635206088.3482807112673330900209501913701586 2.8527723749218549479385380838092280 0.0298865951528415129550068819801042 1.0303423021048433122536173188039057 GT 1 -162275265135102012.1707773920434336535924796742270080 1.2530255055522478222540553757886286 0.0232404488481172074551995900102555 1.0235147665927107404685140953379758 GT 1 -480773032936250462819.1240209910112895662204810636511257 0.4350109621355057528711328685953175 0.0791593510260282767943763813089339 1.0824682772686779390248045966305788 GT 1 -17113760064862527573836.1222159850326354875133555125334709 1.6965990194743469899909170078659675 0.0464205895103209796012228753578156 1.0475325742530586909531972691116369 GT 1 -4140990785741866814171030051562.1059326195749174110739682609741777 1.3649630156843533877166298633760525 0.0098118015663439864116174138080326 1.0098602544921727264744180664591682 GT 1 -50774977528.6898876005167945551125110079830361 0.2594871136591780472803794169321146 0.0516980682436422003500970399261915 1.0530823340214965087960538986447450 GT 1 -398197535604321161060426284248225801878.5308868340052814875088766594365244 1.5532184416011271848815989175570047 0.0511871698160553547383850276947118 1.0525437282922204144642693095288839 GT 1 -1515989813941929885156960292672442269134959.5478767428491255336727060465982565 1.2951336458719660023314893139435936 0.0088016997376887319879255028745644 1.0088406634968513670543461987564198 GT 1 -26306422246318782204772719001723667589.1733719023042362942062546772710959 1.5843886450158600431245257740057602 0.0795993881661377678118999236716826 1.0829462560733611862874920653653151 GT 1 -410966429897843352355.5996587403559369739700552595167927 1.6578875369076015698823630473112714 0.0159829022689463968138054339541284 1.0161120063378994476142223852364668 GT 1 -19594089545104120161284735444617292637.1469950156892154353511922781524476 1.8222813968133860612323998256077819 0.0834310476846845022166008997742967 1.0871179801457455831051742733909233 GT 1 -3600204328481024913.2826801266301809400965029003978373 0.9916275141839869264115178016874990 0.0401948620757359093395896042978169 1.0410249964526447718555249997558911 GT 1 -447677722595304473229358049571.7297845247442107988387595044657101 1.3029044824506236977429853177644012 0.0364645733150531426869028158769648 1.0371460230595629192879479871419136 GT 1 -61309441439585046067667363769.8270119248283517603220367750664376 0.1032669883125955038796470686296372 0.0196495078404911081872956761303112 1.0198451261965461164119830548808003 GT 1 -15420870983356424620078503.5888067081331497280282611912149347 0.2386672261472109189527772048756894 0.0536929840986022857100471990856119 1.0551882214603522708593255756760993 GT 1 -5335331036.3801377260336548580421882510684383 0.2038583121297567740864481769245843 0.0162294279213021744306072977976062 1.0163625675721502662107674633759982 GT 1 -807207256142241.1473608523090632922876237871864665 0.9535005523607588205268493466090516 0.0404027818688888119616380148264104 1.0412416470088037985289731680000873 GT 1 -193829936567241733942962.4803414579889724377290251146063651 0.0095027652150327524514688686200253 0.0809818829525959261775571049413227 1.0844494429498146885516517312594376 GT 1 -40320806157368054155.4731133158114623899335728447912779 1.8381968717819043142812341087872169 0.0990077285091147388412333304915214 1.1042585991121580175418247739266250 GT 1 -1280417152374931807869536404579885665395323.6214458533796334114392404390409557 1.9385588286329877377482535860911537 0.0379221236869330009326872215777651 1.0386598790845223904093112888502121 GT 1 -5996910823769457648199278676941308558.8081148506084626862208010081833826 0.0745757037316722831812611280471534 0.0894733508951088595369354954252249 1.0937321115938186125254842954553439 GT 1 -389193160511676113480018493.0879203355286766736723469633288569 2.4408944776155084946946143188752002 0.0360163483713540170605843573862393 1.0366809434068411389176572657449675 GT 1 -1472945536019857731084864436944.8337380221755889709156627088574387 0.0234883475586701763508946316783029 0.0714044993822481515238481249038355 1.0740820487475419776338559524148469 GT 1 -12645760265989048398414621104154044.9752331707810220249992490344288828 0.2297137858962672273422072409782473 0.0112272422461679449289333206917027 1.0112907434735407066417403794379163 GT 1 -5208324348101717391008.2525777009805286366688869000114496 1.2623685932632069067393212753321756 0.0232185374448766153243931009969305 1.0234923340938916526888487286251683 GT 1 -35072895786.0768367993735423930817018476159029 0.2239701370169399159091268874030941 0.0400267449450535959225276961678504 1.0408498542260972928584610541959343 GT 1 -580851101180.2514512023685094649124585620850056 1.8410406695941635472944700386335929 0.0827532359856319611616815391448435 1.0863787436740720080827388104580537 GT 1 -9951133564748856731289.3565909267206703468284956745103254 0.4874466458646341327387219207958278 0.0309192150721425523997022105215419 1.0314073011878104672096934807904740 GT 1 -13179928848267987.5268608613685987557511948207871417 0.2171480182200501925366692267470164 0.0620456566303542251337541727942649 1.0640540056065583027542704519575223 GT 1 -423803351114576617.5332470262733675952079733850659649 0.2640334737475770395334221033198094 0.0342070721648458371878958481896653 1.0348058281671926050399441289415391 GT 1 -83181462094015714068130847258696.0869317703088025652670262952393056 1.0243053443594931808429438863623134 0.0531242015767633804737340420328603 1.0545873470654988017855493019546306 GT 1 -1599595415076093343600771404908161938.9930986641663963148317289623372924 0.5163587798897366279892283954752355 0.0224181939250047517432155668147169 1.0226733015450728147589904916875370 GT 1 -43148.5400337078642753821091825051746391 0.7756688354349563033932907045203158 0.0828428248942048238036301432427685 1.0864764199892319726630357399532987 GT 1 -8878.6396036077750821181109135055829655 0.3104267463594270247878748896838332 0.0829334909468593242806796665152385 1.0865752803992368922874450529100819 GT 1 -536488193175903.4506322575097355833805359897481379 0.9861517087048767072393416321957319 0.0928866300811343986570611865669048 1.0974878422802820489314048096070248 GT 1 -4910002955484018865763625023733.0405673772728207561132751919453347 0.2820294633618796584472348774450747 0.0368893744378439832187858118977215 1.0375869978085877751069351599491635 GT 1 -428290468062757946.4185816798696427014347957394293042 2.9055034606609816960048791316843020 0.0186690970927995441567537429385327 1.0188455644616115597709712519679901 GT 1 -43994665118897.8252228832978681492850426701742518 4.6244043752666491354956416979192059 0.0928059423734588927221219220721953 1.0973988962653965065200520783478388 LT 1 -3692112059.7223013063064853659789472708520588 0.2782800083825601845154859051015197 0.0874600119605646168288234624941716 1.0915233719766982949691853901340716 GT 1 -4863524356134004748414998699258989262752055.5890468580580580263818242261767805 0.4946042565952786013589112471146984 0.0856265384702084130499936953743113 1.0895161897466439152797993888613756 GT 1 -4085088490025581555046542193876375432.7642150088617069967501202822222303 0.0668790567308410940081972688837316 0.0739018031787466401982465553964192 1.0767750058748070598098286909747921 GT 1 -44976110434644566658736580.0703668537666282557207624699525322 0.2595583299249569319974485594797873 0.0941633561629777315810601437097347 1.0988962940116738628783915940465507 GT 1 -296742758376.3277901348752536036018113258961937 0.1687958243439530199727186749767539 0.0409792904485716513017241682629656 1.0418426093877282739912849002684733 GT 1 -3711556865835152165173899337414664.9431261521582686013148378910765934 0.5636684890981561579766881253465829 0.0347262017875477346901080825576922 1.0353434891689646421970760753308297 GT 1 -558818360606407464613807831186229560166.5320361780959573677585346490470881 0.0116067899780894177060785814778306 0.0879497165633788902917002376103325 1.0920601550805307810103794304798441 GT 1 -339504101137500414.2601696073759611551570613037608403 1.8723228765395765468905132351500682 0.0156384221467832010011796807476768 1.0157619922578314492900758638626369 GT 1 -116129649221067184636257825767535571.9369661097010556774194621302089825 2.3258010948240857484941898846252143 0.0235847498870415586477649788446174 1.0238673218706793440526162086791227 GT 1 -40235286028758650050617123746.7293178056974676047623791679681223 0.0476766165766073437135193188772745 0.0605735163988409506828495586423981 1.0624857137479258383989495407987360 GT 1 -749496044802841023867092048155886.0403520694142906483137362327202860 0.0470136147432462995193021088475429 0.0940884105001797893153947214079316 1.0988135610342527589814861029384217 GT 1 -177393141360243.5644230963352432243487392119617440 0.0787498741469740297092461028796689 0.0253329475643605426279426067136417 1.0256593509848562311632514032279655 GT 1 -161880145512912752884751929849592.5179932630561005540020961718437208 0.1881726707704932830690772729525554 0.0349153620594030317409649995201107 1.0355394737787842968419030576770747 GT 1 -107250643606584593564848.9098058713428110708484945662342861 0.5845753068977523434244404463610622 0.0566218159020816879917441641309317 1.0582880331630647589950359765056370 GT 1 -416405896762933672928.4101556636055999244078015910220650 5.5093661325244954275101216579531116 0.0910385227916291696608307763563291 1.0954525650114094531879923257553399 LT 1 -2166815845935246967598269189102742.2041617688247252310246663684492807 0.4031633456743666459728397932098688 0.0460403379791599549071956884409708 1.0471338914248246572325248313740514 GT 1 -507.1183109935378863220056965043848137 1.0473293029782159168791447202646317 0.0805941112711358878533757494249871 1.0840275906611236080675387183568003 GT 1 -446347479449448650961516939.6598513997401975277085181668149494 0.5720147614861848087623284242128186 0.0098105007779149954079419445539134 1.0098589408150589809596797466146654 GT 1 -192329168.1902087754541964997569809424790010 0.0455050608661564402661368600736292 0.0664519185929548314981939315317075 1.0687628107311225861173237860441831 GT 1 -239906339932350114038368764.8676447393682237701907822121358583 0.1340066449752847838044941588223925 0.0618455096623442880593392692421295 1.0638406416852619795759783776013470 GT 1 -487120451013.2726898690328361077679492597213728 3.8404226373268774701781163288435264 0.0959394644342008319289354871078715 1.1008589567104979915753432651420322 LT 1 -12893.4140911863371661190628358945833140 1.7207775854035529032516948771697079 0.0432541949695204631828683817064391 1.0442175392895651575727040379952388 GT 1 -4609602685004493367.2175066456442559201435242998706149 0.1550100714411506592467354062164975 0.0077209668543102264776334998371029 1.0077509278370328982658670169298622 GT 1 -41906238787.5721613166389204436784514390556605 1.3789712770453642242425295631449639 0.0028635099373475644211915731379323 1.0028676176254059973086348771483700 GT 1 -7313689434535301575185082016486110.8301995495324118085643192120576785 2.7689937994566973089312275289319334 0.0635231757944766966479245116267522 1.0677841862189370401687603464712501 LT 2 -804639106767681762349396640543413552.5395909782340330441259509260354655 3.3656504015524337475387830369724498 0.0447457191312049229612325232473656 1.0457777112531879797997091189701885 LT 1 -33452236247008.2281352451683646516391046630754892 1.8569613638212726199324737408013807 0.0293562798405740697433851363677104 1.0297957985587444371280767567456021 GT 1 -93887838.0698978757111146789474281695734666 1.9452729165899352840376975669605953 0.0859878565224449796713623965850119 1.0899114215357702766859392822810822 GT 1 -148027.4488675063787043967321748111002778 0.9427749561601559222028206018438355 0.0448561468578216128942334710821528 1.0458933182827110146805561038124750 GT 1 -145271824739919287311118472581840550236.5652676501570357428201682196817044 0.3854394236175287796660807144482588 0.0613860182062671349028622696453941 1.0633509792979390336290677303243103 GT 1 -9589692.5042293474609365746776616172659073 0.0109261214150613928142436271328853 0.0762495684307981075515279732452543 1.0793133395271939069123915115357434 GT 1 -54716899402596619596.8013997956087034677216426315685301 0.9786795654528184336243825382538307 0.0914631869631968036060519635785568 1.0959198712879268929540993842026637 GT 1 -51133826900256.6200662625633190987927631244785973 0.6689604212048314270144148237799172 0.0959453681117886158114401812501710 1.1008654869113326184682535668496609 GT 1 -3940821666274968164333906410430987.4100387515521163635043675212514141 0.6704351150875115283120128652138425 0.0892571381859481479890472839881756 1.0934946808249179254462975312484991 GT 1 -113953219845858.4270642827815821968843997213079608 0.7321868553196670936288220913478868 0.0405295987651030979059269147544138 1.0413738121239035789514932049749587 GT 1 -24772196628416855112153245984911169.2753335093223136956169849243835442 1.0567880405820721785378709350666021 0.0667625661143902454776853884798308 1.0690956261743087830792395011119315 GT 1 -845319699030061126671.1282050344581606451448716934988540 0.6718940970061942469643707206516036 0.0730889798823409229891561566317554 1.0758977049514135040563556867399030 GT 1 -119.5033178769975008519901388089066494 0.4332142966890876253887800408518347 0.0907172132390315885435286827014685 1.0950991366384352407154714097117659 GT 1 -60363329093195767327318568318963189277.6178583701685686032729242466542710 0.3813762799362971553335281381884611 0.0268472747183093553200110787054494 1.0272142458230452774321229393522870 GT 1 -1577001274940669720.1481093603371850041210901299064798 0.3284738087693982306743017577111876 0.0307528414679280116268331959484497 1.0312356340504878291603383859584450 GT 1 -7518129081788253493445956052974864.4681831960943074816142864173036524 0.1271905900050254756435386754072529 0.0956653184952672993557181708475182 1.1005557642020841316756774584665744 GT 1 -20528433081.6392612290615744979707722430356536 0.2509338766767035675918449313990873 0.0712668736862036181097878643844256 1.0739338512833982354873517881803426 GT 1 -482811398637.8654704010626520555264647448942625 3.1972709498951141412104600592630397 0.0870857805677912156008343257928310 1.0911133574208859496256585665085848 LT 1 -41741137419790559473.5980756997778692972561358883497665 0.4150978333602753366472499854402391 0.0215908322186280508010450052743126 1.0218273244758748312202032803066975 GT 1 -31450895494780028007734975180886447248.5185499368969827020927489539057941 0.6652371429560177136095782840622600 0.0287874899225021578751989426691275 1.0292099777080738952876296993804229 GT 1 -100109376097346133323028548685751448764.8052253534704994879621615393114188 1.3831514212286116108533681518960185 0.0068889613988771900968713058396886 1.0069127998379288016077520781408512 GT 1 -670018433825596177847602.1293892614420185740054725115416110 0.4904535934964023062689564979949057 0.0801825362533719502124663024824188 1.0835800375957713417855160437833763 GT 1 -8.7083562948932288570920043741981449 0.3789738106648888282326135582488924 0.0629828686125090578501138396513378 1.0650537136798041991861959910788939 GT 1 -6778512904860136980218271871326801178725.6760089821922024102384657525629534 1.4249990617200014151498477629291277 0.0872046120583206158627527881836429 1.0912435330963792008947032624151494 GT 1 -88242.2465223474440390930954367437861908 0.3978621744206775481143705267138187 0.0715243545445420973526645142250275 1.0742111285221255149514561639640604 GT 1 -3189975421723.5379185781406097071213535277967782 0.0637460950012871377045154052934431 0.0723701489996528459978264679851724 1.0751224932212418462927821976963707 GT 1 -223270.2112556152321378718218713288286666 0.7510773183705731472953417557237236 0.0468315954823311838480012257307135 1.0479636810571581945264676993831980 GT 1 -96996808824.4059481728040235112480714322005948 2.2331388501054182210770383518119488 0.0830540158476927941308156442338048 1.0867067134199534753170594260013126 GT 1 -8354950196616815545066379679295159846758.0730620712604469755311894796179763 1.5539128143152351499733221974321914 0.0700733398491894838677646141061008 1.0726495559973448040460804141922743 GT 1 -174670802244997333.2124625136974624716209704747175575 0.5920585563268841123256449220875449 0.0881530326120619881651008441461492 1.0922831019043536014249961871672964 GT 1 -2990058558319476266638747316.6330045492098029597348515475190420 0.1024239413458462682623106826164823 0.0856545224920354106597833018907419 1.0895467948016163395136417069556823 GT 1 -5198416902123188181524129201009419106714734.4224690147386761422999060371882895 0.8464101864105234868958698910420138 0.0260127620277833124436936530817683 1.0263570781233725271515018050237939 GT 1 -22856675312910054216682303506228.9911255217138527744307628429756871 1.3273192750176077388371276383207249 0.0364204240664284271829278910179808 1.0371002040518000713118616301947272 GT 1 -35794878462040.3584722005013555111643768007443760 1.2188034699476954046986395323831442 0.0531139456988521419150094115491557 1.0545765158430865595957848469910735 GT 1 -654445348173640306065023885853338587461.6732355843802809056910113943880167 0.3562247683929208671297906255288650 0.0701609839281537375323234527026932 1.0727438088165571137987198179079652 GT 1 -211261222927715641780060.2832286884482202190471319964691394 0.0169189491441352060279794314108166 0.0871444724740824072853099287762833 1.0911776502008591024917741667221331 GT 1 -6291717862634753383057157781444324.8945649791263570271921770027878056 0.7551238879585619196184382868549226 0.0343369492126088152486159785091608 1.0349403143262313985764321653858181 GT 1 -4060577254570653407224799344726217791257.2722407843309963851651836112688475 0.0048466088402047056022911861387097 0.0117851826152861364542740662309440 1.0118551783652387912604855037492401 GT 1 -925504298195.5445014079618379441128649878510356 1.0950001560583647704296189589356462 0.0015964071518884665941226607849547 1.0015976827675678569801167427759798 GT 1 -640937615720940622328953712526537.1842110321944396109761426242932790 0.5953808135635745768399059023691771 0.0562948683778099368482462304723957 1.0579415222010743323285104611165248 GT 1 -2179945086193028.4474620032240582647553300173999706 4.0081621121899619948971167762015653 0.0219340959566319714945403756047192 1.0221782246702800366572170509798880 LT 1 -762414815980215073109871648.9646224886344594188458337358116572 1.3542700912193165355600209516978630 0.0512595921268281601973873476628722 1.0526200606020133377290085879371938 GT 1 -786691027546843261236756812.2533509734703259569036655918963235 1.8533523814545760676184416843075630 0.0043123957386092586234117341642473 1.0043217209360635329451728196024444 GT 1 -180112374997973901422755118853190642848.6178810939583862184329638302310020 0.1681732733580587896213364312540383 0.0254745449359106271532661353934282 1.0258046392221692220957008836069422 GT 1 -61559227593209296008398306.2501733362849997106663033481161576 0.7675764763706726482127776893593799 0.0183504864572108613070741418023113 1.0185209451880655155857090881249541 GT 1 -581157828584491195819356978.2209447516267700896417264265348608 0.4618893056853132350081977927464836 0.0265942993057515398601398251760987 1.0269543251234082164837687383001375 GT 1 -37960097214870062532107768130408898999.0954087402240872390560648427552157 1.6789375738085204449562745618032355 0.0557829363617317187048338943660834 1.0573991989740784124986095907024678 GT 1 -597852718089413016875037593843.2094725479320097849130977030576869 0.3547965964216271486216628363835985 0.0041211645109489619163077800762668 1.0041296799130465224665850419493316 GT 1 -80896002072.7309740846833684871462297520161529 0.5552492792272217022939928030936694 0.0518016828186011374766494388883803 1.0531916032663806757114523487859342 GT 1 -107760166138264496121376870987.0652864339702723091771728145860710 1.4747773496651540728649628692680137 0.0112532222463752438940512821567520 1.0113170188146863270987898402805390 GT 1 -2665165549164750649020081.9827915102418764390945316963922579 1.0185046378181210770836991659150114 0.0823055951887179237261216046617569 1.0858908361450467163032067698908434 GT 1 -32117452019.3633901889415659287853507718736429 0.5451408560303369441667256160278511 0.0833267418844917371766657480674987 1.0870041863440189608401860184430420 GT 1 -6813478703440809.9047360449850345649037013103741553 2.3310577999337201446363214880958472 0.0596227851438742089167715429982664 1.0614741918142145489187518458870698 GT 1 -42656784791354569083355132128958535753.6387715037036122002224549821590631 0.3007034050976822214605321376718761 0.0575775593898734941370621952777568 1.0593016541759112651315456585688175 GT 1 -2515.9739027361654177604519291870685263 2.2531286266947725113135517203963454 0.0240244984650255811900565515273684 1.0243177937703737858539376146223097 GT 1 -3763478213699312839488942.5246549976849544526943933105254217 0.9460698399091026796841818629978823 0.0177677485505484242265207951545265 1.0179274899870925930351885814797475 GT 1 -13083529436874270.3095779112319996606406328758504002 0.7253545105570964983546190351778441 0.0335487638428148677139141243089412 1.0341244356602108712542648050169561 GT 1 -879495464333220883125952.5728504982578032014476370939825163 0.6514249296215210628648239682608801 0.0123457825487990814953990674670098 1.0124226248292217180593092461100393 GT 1 -15894172358.7000051672479263845853336242958688 0.3465209473626670480014351294593086 0.0186922490230177486405362093175488 1.0188691571185415140225270704525827 GT 1 -9.1754968702994563490440086966378230 0.5844763670900630118862593527095420 0.0049735957565692760998340380118549 1.0049860052475712494180118858948375 GT 1 -9567905143518845952448861.6359332569964582478240532157849370 0.7664735065598840808568987964741124 0.0145302214768059553891645536957727 1.0146368189953524013936423880039236 GT 1 -5908508359943123167841859995168.4272474300595130308453400787635141 2.6383171429077383865782543230923745 0.0695427869768961029420341176933419 1.0746768913175331462363896666600893 GT 2 -436943827208498.8002303739055604152944192355367552 4.1181977599311469717731788874169672 0.0668159515648232433160394766308730 1.0691528323851815544526499876613137 LT 1 -3948124073864429.4238763118946408548237619188814087 0.8284817431723901637679724354365452 0.0168187181056084105300999699291813 1.0169617588545876033907331332133617 GT 1 -388163180.6696066774059955472816651448143067 1.8782821142876746550337586934008048 0.0728280869096343035310700648269737 1.0756162795957773261891386290594199 GT 1 -6167401171986796279125804029.4966322100172607138301337482427597 1.0757322511026881195997968293780636 0.0284698738152198007784078495379785 1.0288830006765477515437902825416137 GT 1 -40484018421816383292259622039340204147.7681033023168871212849665481181902 0.6507014556182583062061703360393541 0.0881058735783273803918304433437347 1.0922313850966277762680204069527786 GT 1 -12224821355270271438283973926357504463558143.1700381906549697276877098242493520 0.6825324499047185229157852483903095 0.0882418696599681046888497707150596 1.0923805320421472206773711122498536 GT 1 -4747871487407.4786123331152152609548709322133830 0.0264709613798236035094834916109972 0.0861720568961111273026779321240277 1.0901129713055143093245728710815511 GT 1 -6724.3985407876618790494818510665229455 0.4417790879521280450758712605860225 0.0667378128748400905761230162572678 1.0690691024726450223358583374694936 GT 1 -9416951407978140193158686.8241006331606535780521846209368085 0.2935380256224557587722392072599652 0.0766331758239308606500697397228426 1.0797286974558307028482726856517795 GT 1 -3755482058059832917639442623.8658605935739562503690736709837994 0.7928323665918211548771301340628447 0.0186694226341772450273834186703812 1.0188458961962290400997642760946314 GT 1 -3442753257413067949827565967888176.3552823496289737591219918903391496 0.9112993027860512329908870280481202 0.0539570433799634631139396512397954 1.0554673022719457145351029385610522 GT 1 -3404630809056445437906393930025.8152537074092387506489969141835651 1.8941433958420525462245781380272532 0.0169418475698507322333615559245322 1.0170870024665850105321494532351961 GT 1 -988572503569848529820496242140778.7342962862408104489415413554549652 0.8152706997333530484599360930611890 0.0909227988289437763633943583841049 1.0953252586298479322089123557039312 GT 1 -1138409843697943981749788870557855368.8022256811248363534301218583315472 0.1138528117729586991035261530724199 0.0352155737565498741354403325459886 1.0358505950928050405131589918698205 GT 1 -458766146518226216586214381569.2072346600106312935398958541412399 0.5596390549748557270567956938895119 0.0402018338973470304197319395848933 1.0410322602676179242192937971172454 GT 1 -55091006889.1800770995117892377443031118388232 0.2234898110471719907029744280908514 0.0920926231384555993581323961531548 1.0966129134457347725592119357006083 GT 1 -916486195401741550767343961.1889882156484462362665912604582356 0.0108497708661799608348485464359093 0.0352381729139008669328856153581969 1.0358740194158167640447378220422640 GT 1 -4990.4845488431072834639060967780893008 0.7125322470989415926791522910730937 0.0273670052906552923573327049737782 1.0277484573545272492711397424427205 GT 1 -1364570214101755051.3214754832383316001090214610448357 0.5517152786809190315392688909485366 0.0073119906927953051841807951856057 1.0073388543279466178875126004774375 GT 1 -46488945470995175589128105476799.2942972198578291559238608169340635 3.0054833601510761070681699114407270 0.0771963101777849329143212430227374 1.0803387541835807173901285613902559 LT 1 -35315450375.7119077626303543964992421985795208 1.3696724626590747981271925302589054 0.0869542422545726325747621935008924 1.0909692816305179288442193805319122 GT 1 -5451370733629.2725528708218945136112595025382751 0.4380074208319746789101696583429840 0.0520227449232750967460218906485723 1.0534247695500410347288228939742538 GT 1 -2406711599312019257986482.8132217215710851931890779624283522 0.6793638118176490739528021106975638 0.0915627056672334475911518095882389 1.0960294146256470254782765596994450 GT 1 -35642774778224028382885447631706867829.0455797674674405848698392624496973 0.5993992280591929754241221141307649 0.0683597665780039338413511853656606 1.0708085544613974854207266947754397 GT 1 -6938517206442171472504.0485638938826980374942880235645693 0.2315840705406958548363026558312566 0.0082401778822968662537156581714082 1.0082743158124868530587996800051290 GT 1 -533922017337332517987262590816964585.8654407028410210388261116422342228 0.2733542293861804128689994845680035 0.0446233768274851653161181885735842 1.0456496464305912238488033174363847 GT 1 -557.5041466825986616543547099773830111 0.5681132294650302469851909879260908 0.0517767776126112364512061734622416 1.0531653377916729840718136273856769 GT 1 -4646577126118576143334597419598927084060.7610749262101874713228575514618162 0.1270331781589985004388436624544471 0.0318293340555785083807618214191549 1.0323468994521286941722317302963534 GT 1 -410082927804453.4108173566590021578626336393972971 0.6552876975129945939237684392405839 0.0270652269902641333209291537987746 1.0274382360321775814020667538789287 GT 1 -530.3381698521879319405723719916007036 0.5425603251942633474110297513767931 0.0614364216873413332390630125466014 1.0634046806442128028443876429061189 GT 1 -15371761689925489.3663522784611584345587215859967890 1.1219913907872161172742417695301011 0.0418756432708732599789164804714769 1.0427777007414092447029625555460840 GT 1 -500694040848450936050387.7721589159572003414694327898431528 1.4968656883123007440976446172969415 0.0185907001840547341202763889964502 1.0187656793003683832163633734110224 GT 1 -3350574663364169.0255444732176404251528500729795910 0.0225968041918898076875265955252131 0.0039796230286759309833174610515055 1.0039875628002670765946578945591155 GT 1 -1705871364.4491618066888209385503450784063653 1.1059662497938643944608470976545428 0.0880136859161090646420361389623446 1.0921302955073658086058336740319875 GT 1 -128749812655587.8708105546809091449330303951762600 2.3359729502145061245744994576983388 0.0374831394564577034858303120957688 1.0382036955257903084425128344888556 GT 1 -4217122280278579688048400037190.8419649053365194163319445639307844 0.1973452428975985884770707575426618 0.0750973747322907486616492116449688 1.0780668169918400463969001284900002 GT 1 -184178890543970552992661465.5302461750030643143918223042158611 0.8815567844408709608234178913919530 0.0069651151561005192967800147967795 1.0069894847948211507311955671697308 GT 1 -906676047811858586792302800854.1664635871367918832125449156360249 1.3006800983313870908981057297482136 0.0641252531826069827099870979987929 1.0662736289616911111173118745166674 GT 1 -18192776697168137163258705947933.6294484516355766981072065760882144 0.1084387977534736564886465894572632 0.0652053508694714125502061762682175 1.0674284004132684281046110704316310 GT 1 -317317316580125899975472.2926218872525264172842047719386784 0.0009065423648243904100824009139115 0.0232666898152111231257057707224716 1.0235416322829979716030937360298833 GT 1 -289953718373233.0291266683849629083910500142105421 0.4118153128295859483601688714033381 0.0116114620353815503738724193007295 1.0116794014903470877081719176060126 GT 1 -4100108431445.0648560609184855553187206676191805 2.0927792899125596749330910185160662 0.0027785228182823070643746900051951 1.0027823900779821726852858084660544 GT 1 -90294434442410331113809754992216200.0896287899188840638999247445795697 2.5723333508181725407443333585922752 0.0502651977162952450514418040531369 1.0515724888495345075646356058163579 GT 1 -7982637076492547987007447084856315908940.7029787676335758808719231964550521 0.1820020318163587930952057893922584 0.0721653225366934411940536573978123 1.0749017113516352961538558956396203 GT 1 -459377.0297617660378100897578826003391043 2.1311689672294448853999175076099965 0.0561005738125748384766162779754462 1.0577356585681249187830567573051050 GT 1 -49523000758373214628713052446.7389679616654746481281953174421647 3.3618562621328565841942836339121088 0.0579062184208894123586411887678635 1.0596504535446598112645374502702020 LT 1 -53767052087237163.0285974701229702995873619184774409 0.7976079275791675438527482244496657 0.0632985439312576046933521245197666 1.0653906643017904077029915260043597 GT 1 -106484909632779.6115530381957564513833493438475717 0.2951985956029043652126741975378054 0.0746645905927981767149004794051682 1.0775990024303892760268149858603512 GT 1 -143259866409160.3470554729828835612184476155204520 0.0463234688920724010296737232854751 0.0145581116835250571891672441799685 1.0146651208286513894072055280791548 GT 1 -60823865818357887009893437889147708329253.6021069812037134288525093013085140 0.3662460829779481498785469077382391 0.0398076239115721387301063016713463 1.0406216228372226360191543460890932 GT 1 -4023068574719438125063620903469764827.5471945793854175929073871015538848 1.2491035006965024166923052796556427 0.0600377279039675068150819071896299 1.0619155405916115426739445019284482 GT 1 -51307418037427649762.1354651705124513190653826046197518 0.4435748792401426924663300646120951 0.0902944022701868628463451646592732 1.0946342507930230118754380072546158 GT 1 -490237178675573928853.1622595064769285584653990652927035 0.8536888252057400676445908374494393 0.0673577605349940678540435460157371 1.0697336034772318280096492795987380 GT 1 -1249835.6464509877796416136520857929897857 0.2691288039234260228109792955208894 0.0587334439240501576991322132911245 1.0605289105662059782578101086284036 GT 1 -587094737576258418649682734.3853345564658232824880798876773068 0.4098729930009868277797124937478773 0.0442842829046439554039595268437525 1.0452947772081524486920972287492163 GT 1 -13024016.3975426579710846552227694451043880 0.0573780165451490803180811243622009 0.0925883364195566729218291618260364 1.0971590579882410915745934163824463 GT 1 -14308977446042850.9812907426086173810202286845105230 1.6666186549711659674150538288391885 0.0598676126824937106725840691377631 1.0617345760629520046507660234143127 GT 1 -168769268.1120093260176366990416889827059087 0.5105033133916046555228438142450470 0.0043013768374416188439610325796644 1.0043106543724647615999680587632810 GT 1 -5784.9288896140380040347245060267793618 1.3363597678008505736959223326307636 0.0604571544567772242354476890199137 1.0623618565455674913202185961994904 GT 1 -175355984.9811575352044971916249455623178657 1.6102620357827546040899158651484974 0.0104271916905918764631926132193893 1.0104819357375068092451000692636056 GT 1 -3678449828531321640958.2629688543138040773096389893773275 0.0781959351084781408270670751741276 0.0852055860589286175969888340080365 1.0890559231693043869252735714766415 GT 1 -31281810061278389468591968369834198941.5538020341340699411632791292364603 3.0618860999548698882104217535123669 0.0370775584299402341672191204299276 1.0377824087762460545527389744901554 GT 1 -33564.7137930251766756132459959393711126 2.4503778480755942987638839130935798 0.0796246875658004070609795773592905 1.0829737438292913839163321827729599 GT 1 -20510.3271204642655110504353345210996012 0.8422209918510661118481256180531428 0.0676246152089493333024586512634179 1.0700197720070148393552459714020826 GT 1 -637325370361164319696080713001182201930236.7660144175026269576711938796344190 2.6183631586951238037386836949187284 0.0086340591528376837618015022256074 1.0086715485882148879712189729283488 GT 1 -43350305170560828990843030035683439233.9325627946780233069544990697998482 1.3444203207221657635131082330367033 0.0403165114179839174437872266788657 1.0411517482767827395096684717113874 GT 1 -6902630255764972724251887507101781033.5264900531545612671247582534553190 0.0778384199343481738140175150425302 0.0576892780247507889491685639339442 1.0594202053185620261624724878458454 GT 1 -1575208277837222253612934848784838926.8940819451633108894725052813042646 0.1654153212672151320451011595186767 0.0645355064637823060393704090468005 1.0667120885193181833668813464693392 GT 1 -56456389.1436241388181788369813683841807184 1.0468099920215698514085132272610619 0.0699038902044169899639822480241302 1.0724673543082266087324866669396405 GT 1 -931871050676.0275203191033215393297147329097246 1.6611734030113247396393181130684863 0.0753707929234332750086307276788187 1.0783624790489647742083511279005938 GT 1 -9330810322114447121490905141482933980676581.0987964744846016646632108056404197 0.6471377086964770085549741484571301 0.0184453376207179790195416083089191 1.0186175741222785060793566960915882 GT 1 -276053888527.5849249975041419889478665455273381 0.0569224811296810026386111599163331 0.0669482411960471487509505933387439 1.0692946039993927169425747860086358 GT 1 -53616.1324366252814679310601957788370505 0.1444236538963817308545322062318306 0.0886277544347412693432745588219278 1.0928038531448348116339522833376702 GT 1 -2344543839570128453146668699878134153670907.0200270073937665152671811816157793 1.7282632196354746198581401398430223 0.0742649775287686836446057326666324 1.0771672381243363986516048370067075 GT 1 -59.1528334484702239092053785464768666 0.3112730207153874283307096121188254 0.0144103810545983820424318384897329 1.0145152189842018985343943918640771 GT 1 -54056041767999689711718921000414143.3718357040445035102745516743851716 0.8350294617190912363607445467677990 0.0514196388601145745555529308812974 1.0527887687469721651368922967092680 GT 1 -33.3883750393419363572415653417676583 0.8373651886483852209535646092842426 0.0049486672458142334456921997499528 1.0049609524465746857736846288679566 GT 1 -56.6392858379150679865147063523773175 0.5589060207208767171947533729766151 0.0364816166301814412667192702063321 1.0371637115278763792015600856847147 GT 1 -4142117414564963126468371776026028856071981.4506139492911275428902082005815771 3.3829103506788266456685924495397080 0.0556847255059275111356630051530882 1.0572951913763161559132020561853686 LT 1 -234061248182678175109771909211.7141172216925232452114840625212443 0.4821563700657436903823008218821780 0.0719225166877449340116050454998095 1.0746400547328949632769469105823560 GT 1 -10133791656487732343312.4219515063073845971784011671655613 0.4679560520592900354451290284903216 0.0595148113640482819340120752882166 1.0613593787585183231078284240679337 GT 1 -2100331452480990476995356428400248915959019.1192584109310114370964515127312396 0.5953366521903393190429418341240327 0.0672615308856453695334667731465399 1.0696304292040215639201411231433115 GT 1 -21345765.5504066760950691738542307191723021 0.9313539921906361829388696174827331 0.0048918417710722389055408271679292 1.0049038459935342146346870378835332 GT 1 -7132786113453478159596898802118.1567290034469086961997953798420712 0.6157583155143451934351354721895827 0.0285674369218302914538801875195231 1.0289834278306373642928763443826652 GT 1 -7914677054783584191164345108.8300483109353061869004802373321790 0.3640335072279088488730279909395089 0.0230793163349764932747190553890398 1.0233498137917001130939847813955977 GT 1 -6971277954.1067936952462358697076137000170890 0.9955593772617223313296322717389713 0.0362753640742921026021785507416757 1.0369496725565460834748697040969330 GT 1 -5.4392914811144977065437526686678519 0.3280596370772817190504520859427989 0.0524436651845337938376121766401068 1.0538688875233882547984255276572498 GT 1 -185492191884162817203940.9703944994357740808911252771131077 0.0022260508720825721590401191415590 0.0962123368253848582070216099720190 1.1011608320487552130728255034340062 GT 1 -2819000058823719938.4712218884996219802768388727466366 0.2997030673242270572870556247406106 0.0534532853936564373508119660044863 1.0549349544462520060904345928258153 GT 1 -5073682318890186897.3882297592699501668085336076792642 3.2949665122592506675234717969850143 0.0992028564720490905540297964230347 1.1044751926408697447885418944021086 LT 1 -4773964974482810922965673393569214362.4784926973094147337909871436809613 0.7927274567680840518835645955912486 0.0173753700272047571152538924140405 1.0175280934383978229696661506066282 GT 1 -112125.0987383356821017770293114785671537 1.9840067619977342117688891805466514 0.0622065015978055720260438363803745 1.0642255051698403741226249743624446 GT 1 -32560106654035983370105302699411623.4386536245302172158444635776479207 0.9113222987513330374418352985478643 0.0247930162313979783806394218908904 1.0251055394701250537259662777538226 GT 1 -16626445937063344631026885.1704826801793820382299653593181815 0.9870346852198259196971813469308174 0.0351699637629415667969542914830346 1.0358033214073060522292767590358192 GT 1 -19411471155.4816219129000961377436949188360354 0.0113630877228779889608255720542518 0.0592015853151405741830839560679475 1.0610263869105597185428006019084892 GT 1 -4648036038.7076369230346760592901659665864375 2.6882971187724831739322722143273145 0.0400724308397757438797399779265890 1.0408974461580914331408190499523206 GT 1 -66545457917730821406287754456319861986.9856754763611947820332226420053789 0.6049129962611225260943393044258757 0.0807712824460240370630261769641162 1.0842203110361574459194741991604736 GT 1 -13442524027490627408030606530.4864861287990221732288663694805296 0.2691323524536003641985059900561585 0.0770969207992278456120789549855311 1.0802310562758510240062360659417714 GT 1 -2766970368416530.9022639226894627119688810196408741 0.1240318096602224181661247417832128 0.0083433894744674358827311469788334 1.0083783903684550965154973237736394 GT 1 -37252405306482255.6540684618264959142878551472868534 0.1030089659120206240534703054519991 0.0655355081528270807711471645698374 1.0677816497616880462263790969578791 GT 1 -73114351541006022938.0878518908891980640281259393083283 0.9941318755213145966221673315148542 0.0443373415405151107422827514935723 1.0453502959234035637266710878788397 GT 1 -45817762780414433110246165293593607.8065070542466674973157665593347990 0.5126253890370163529277472336059066 0.0271828889373804207429267756513268 1.0275591784279916334352307626757558 GT 1 -1279164231309373347350866601075135895035402.0437508962462461316254808097186442 0.0713244498708067312930715465970926 0.0078607756590362798994299384060875 1.0078918344270926454529637141307783 GT 1 -8874878378366620376291747115647086270.9652926369993404987712823398758043 1.5133520616216141258957896111592270 0.0288282967087093813093261118472260 1.0292519949216945243366420342547227 GT 1 -3091229988848888228900.1477459218684267954392225413260203 0.6596797698934373321389863514423865 0.0815674923159633022660974510141364 1.0850868580458318971336765883617371 GT 1 -640962525640042990342298436574.5699049953549234993310084369320405 1.2662143101534076657418720930761511 0.0584263772308885128113013281997900 1.0602027366303253577029112715678742 GT 1 -345684231145083374668261279235166.1583467832163784865057562807853457 0.5470803895699137855168403563772449 0.0395093943361299929533865433590079 1.0403110774940585142878345489307930 GT 1 -94947478229271291067439287153839016586145.5793170351521412522942138677331962 0.1920837162523280514393472141190953 0.0344034567415340934139671021517532 1.0350091890949643171761204882134275 GT 1 -1060446920610705542378848.6824950036048726598417448937951639 1.9613943151231601460649877313145147 0.0842547631852789696512720829474022 1.0880170787402666842809565853498461 GT 1 -5120300127985423095940.8100563026462474602855230139240846 0.2419378127211015869981466578389144 0.0152061122762148315092457048132047 1.0153229107479444632759093362802929 GT 1 -4820970511408518367169081828591802932.8817021391334440323220058521038953 1.0901659070234304051624937472968302 0.0446060856805295721225502113819842 1.0456315478189402812125961922627477 GT 1 -334514368263069621689709291180742346021677.2612373445605196652134978294827551 0.4143372147300474320740601390167825 0.0444350591932805745721433352532616 1.0454525523505168276932394288080826 GT 1 -1025608431888111445236445594294165415.0549816877727985808830171952228174 2.4813775612435871126806274698975168 0.0292851546518968509330656710571993 1.0297225249348269025537947094341802 GT 1 -16952079216354460089570810714456507584986177.4535620792185440978727030966031160 0.1218591613662987058350088119056006 0.0481942930133335255074606908778476 1.0493943543195469981109683385485974 GT 1 -2657566127590371893832221.4254502497427009648033781727698390 1.1756355894638966554859391518551676 0.0955142083258235746117656685660919 1.1003886827564283429177262389341524 GT 1 -7558.4683954913514470139696763266089358 0.6817932731324800032806994800044844 0.0519599232633385143088173736027293 1.0533585025820070582154658324783455 GT 1 -671785952142615899554505.1078814428265159746299730421378440 0.0081284609084873974833457199465741 0.0539316677195742012398713957250085 1.0554404796843530687813262123138164 GT 1 -429075935428102.7045608516959786199390671816330239 0.1862404925215102005173954874494954 0.0084158831789576718111968809145333 1.0084514966772585810681859144235205 GT 1 -12.7275487402542145459362021203598333 1.8149614212840005243240579394663235 0.0389486326340171740385451559654583 1.0397274194466128407438878856464701 GT 1 -5057.7284704785307816781552189121553450 1.9092465846402909764104719061099532 0.0714283945576238507896120950601930 1.0741077816773349353322078426654601 GT 1 -1960252055576680405124171194891.2221515877927811093042803164370037 0.7017758380491098837423061342796761 0.0110639982574814142296587946725899 1.0111256595214436954658132049106673 GT 1 -16234931263548068358173521653.2461657526674746390655220098348003 3.3980190995948091180745303593656613 0.0526190772995698874586183352775660 1.0540540251735572940763686279259105 LT 1 -1471648.0474750475468578839313889979418143 0.1028721353948511234960012387662750 0.0050331991012267296525878690823076 1.0050459083110804713984786766534088 GT 1 -909373464572390647878058803968.2625766771815109458236002438501396 4.3883059844919024146547141988910105 0.0114334004174383711760439021648889 1.0114992642529936887343984371832322 GT 1 -5.0584455241957782150295460305268290 0.1739682434318799423946403413581045 0.0269119128551650894318467242786080 1.0272806693986550301025717772180326 GT 1 -5739317896626846062.6809716512532693240566099819064244 0.3496597071874001294247400889969064 0.0826126164598591123042923289290970 1.0862254493224590078754457864692933 GT 1 -12408149632668661207719336462851078864413.2441342542955319738848866713563671 2.6030137899362495871838201829226351 0.0044906460734881996526100134929619 1.0045007593125758252011116011241448 GT 1 -33816.3422184866930571103958690477639436 0.2994538233071987875589628569980324 0.0984342979032335092390881126281049 1.1036223581328082403131711196867947 GT 1 -7220748054383503665.5800012205517647159688433132774806 0.6562842365038787473504513383613783 0.0491554687898763494398078357554481 1.0504047090752577723615920430064373 GT 1 -11360772248046.3974614778209541099123156050940927 0.3646905079244671485226683464840690 0.0520904218466854588887784652674478 1.0534961629710542565454202170939737 GT 1 -735394429834321121594123145047767563.4921665215040985040220198173493579 0.0881660125734267875020304233858331 0.0128856404505324859199222972970566 1.0129693804556477697780799261712565 GT 1 -3525734334881.4900332351219089584336126923072160 0.9308641378813154534417348610498038 0.0574147229294253439964371389556771 1.0591288841025308211061000594183076 GT 1 -59463906886488387.3002739521375526671983686704954808 1.3197233698753133653212299013384959 0.0162795159358054611505896785163592 1.0164134831931974092844629770734274 GT 1 -2821113392198162333117448252313349478.3049220044027544178947903751034195 0.5666972625059922434015335527381129 0.0555120586684959465637368828519688 1.0571123593729969754972999107174628 GT 1 -816096449624678304689260555448.4976107891249560026194622239321556 0.0243599695404220238699666928752537 0.0620144343232252000520793246095788 1.0640207184986063439155637335127668 GT 1 -1696253297158720160205.2013890165925290035902380702350825 1.3961739733421946620439707318609883 0.0968690149384185283916630752780305 1.1018876806454924474220849999603382 GT 1 -42701.8982486264854720408891651670608910 4.7434669158434995975445391396161926 0.0177320826190351668380344751135715 1.0178911795483529414374882892465638 LT 1 -1371345521966319564866790758165772909.3614919364383967439924535900156039 3.6762420806450597902822656156448574 0.0267749828917581429760380705032019 1.0271399623733222154469422946847529 LT 1 -9375599003829736878630403695790891520970.1545528539092664363535327459087624 0.6437260293743579760850463577482643 0.0304944968574503436888216983683270 1.0309691280467940867864342524985672 GT 1 -1130843522500854133114952391693379194.3888663514043590886976342474509591 0.0508102821051671286840777610292894 0.0850711423911344522920860646329748 1.0889089679765421157948281133202035 GT 1 -232571475061121434565197406066490199546.2850737342362286864391720452548013 1.1575594225861445954843801888956283 0.0170077846165081314600371028902348 1.0171540781099780601395795583749931 GT 1 -3226936366850719641114902082221193421306.7240864892608821166771265261718651 0.1191451681910103282261009709839121 0.0406884949471579505684480116781462 1.0415394340550854161177161917566778 GT 1 -5634.9961198922704971574937105082268123 1.8678163014200062621563918865913442 0.0485310458706376501962756202010761 1.0497482211236379285281631284079271 GT 1 -3.9373853460592857756879828962295078 1.3857591833968670584171207807079356 0.0981130296904985470632329923547827 1.1032660768496352334481562043513258 GT 1 -238799999430558206589071004066183.7547105118054022273889396157415417 0.7195484116268225420256006045471735 0.0033253996800331648364494678532922 1.0033309411099390608854289234611844 GT 1 -2190320992085576.9307926423637771747565098550773752 0.5002918340751028412590048125669294 0.0477179950780417667118728594406244 1.0488940643988177578834046236441253 GT 1 -41399231493397741307209507961.4163377039934460970020534124153488 0.3634906061952444329290286595716331 0.0354008619249738185745433970489398 1.0360426649045524146133317545813362 GT 1 -70892243337415140086955.6166205616504830299402097822067241 2.6546860854443167811247471673194083 0.0670330234105935237167550844412152 1.0717926456031476718422670466356837 GT 2 -81802885549421209932140055164.5612064654418247413279913145803002 0.3570180892126977674561611705583710 0.0888137409958130093869883292665257 1.0930079470724108400213240991796656 GT 1 -1118822287087585445178222487403868448770519.4795268447432475924581184071188343 1.6493234566021623722521386644219169 0.0311081311708003560122880038588941 1.0316022637935933291190239361955757 GT 1 -106389417512162541034016813152397644934383.2778188971777775631558206460578751 1.4575973072135234212461771041946276 0.0155348185950816746902422023910480 1.0156567483085505148134153172533265 GT 1 -104.7272123405151492979221151616501066 3.4895337960411213421866923693934417 0.0130072019092913400459663512341397 1.0130925363425427998848473447418731 GT 1 -55510130634215291530591.8775409926071236822502604953211345 0.2946177648253242503769279926244476 0.0390448287154583599544704608952276 1.0398275190868451264825475790898654 GT 1 -5518153121369920828391247378728567332.8956477134990657333816138544758166 0.1842238400984852285107418975584741 0.0510202308377644331613856827685744 1.0523677986582034883160590062995836 GT 1 -13370488157723871383398.9616145450840376211334855176877600 1.2559509641620048570567640000629825 0.0488352062629353915553710837979274 1.0500679467620902829197571596317622 GT 1 -198931084672101140812521038.0857001043332188584217883295619796 3.4707831712936559077279254899343364 0.0792486488362130429555746629209903 1.0825652561980478242392576903046140 LT 1 -1408906235496965257.8722800710987354424187625739817614 3.0103971412892755010122173094769983 0.0700092806766133899249461257036004 1.0725806721067931348856538030972278 LT 1 -4038255626112.5242292057404597846254548943242710 2.3150042306919219395236423700268494 0.0439517787009895914536634768798544 1.0449469265134831288312742907838614 GT 1 -1172143.9538359613444206864772647094422456 0.5121553218919091500588158645175211 0.0113346579137307210153658450029418 1.0113993847176606752263253365374631 GT 1 -146441800060242365047.0847223349972945229577915686515101 2.1210312154105583509257062595275162 0.0938281384365062463130792417961622 1.0985262982536003338362172765984795 GT 1 -613526768683744985214929798630.0242840096951614492243827797860752 0.1245984182624758736670217180155240 0.0073519165851131741854159588331008 1.0073790751172322335527816012164149 GT 1 -11099.1268529136524408318020708050500035 0.1729682281482825910352829994580061 0.0325289746058908606457171889026018 1.0330698024397133715398651255363035 GT 1 -324912977277555250476115809662377.0867958062430337938492440060677933 1.9424414346058849571418471885511265 0.0219927038927179220119004387126073 1.0222381487427523497003427761912849 GT 1 -13108481.6467803840414981086178133057187233 0.5677219065825821123165065168053520 0.0415856476638580185871754647282372 1.0424750764240847455723447326470907 GT 1 -8623901.5402432991955360681223529587787596 0.0956242778320635502051355533782300 0.0458484624153090625291972976766240 1.0469327757198937283272648719402113 GT 1 -114982578396744336620550648656843032.8596131921914937891907253451992285 0.2545769136232174703793682460767940 0.0720255862145096027508328668020709 1.0747511179278754298686219249908153 GT 1 -1585010976212463938823222581294026801.1827764077402819743656574513291233 0.3188722665860945901935712201801121 0.0223744387728871514146491069695323 1.0226285439885530884771242246789134 GT 1 -9545781652164646243544975.9921569729911733231080607374707065 0.2880856267578163783802955572487091 0.0344163175450444712312101594015800 1.0350225082076388650642866310663795 GT 1 -8099668435218462478657018262.4590784804377191884437148314742231 0.3194122679309674637583001093305541 0.0574478415108943458064485479715701 1.0591640206192087963458778365548958 GT 1 -835603394253640567689052703.3620521761708617657610132369451320 0.5036222315851880328721947750607171 0.0193674257415268267336786391580177 1.0195574316154550483158142927288580 GT 1 -823194611970.6271711301015527668770908204780892 1.7930832215593513504518838026554470 0.0301438383560494025291991460423320 1.0306075054453069404380892065319591 GT 1 -294797211989039003578479168380838808486.4600106554695974615779686019164093 0.5173578404303494045705407323537332 0.0758202094018263323782281321267476 1.0788486476989554400122670209007875 GT 1 -5143194558887.4503705322786541918301166939488012 2.5257403580275252785563894477903542 0.0308626147656616147901054480524631 1.0313488967136719442433675250909585 GT 1 -122197735235297901058638856576594079647641.6258297792384545238680017789939708 1.3217534179638863989921264063521895 0.0540232990830986424448463022586246 1.0555373392854601672532042993448308 GT 1 -777997341718841.9356518502573372696235175982302132 1.3512387385953617311434608012013479 0.0817254696367564087665398169070770 1.0852588803857153770149879303621967 GT 1 -333895967105941538001273134.6573719611467054200673329350104679 0.1826053071648781530101359806309573 0.0502626291224930004208099225226761 1.0515697843152554173966325119936000 GT 1 -1022434687768543309246366165019257535110.6346888407941826094271987245899061 0.2942672181703034996406927422715120 0.0598503637283236270546051095688293 1.0617162288640167707167487638783457 GT 1 -8585622175302129532332123260950.1347140730652564048966181904623413 1.7555641746806120740573079460355332 0.0730996977163306487980279743876498 1.0759092679771220340003990519842530 GT 1 -81340825519380060287497851258534122336.4286261371383845751767752990892334 1.1663134353017787417682361292572004 0.0212271617305765664393142198783736 1.0214556978298985244466201974427839 GT 1 -4852032781292260108857901539975.1604568263668865211459249233538832 2.2572656530792923569606445821149585 0.0320184183934459087766158687570383 1.0325422191525372741228710597760886 GT 1 -17613940976278435.7726988918172139033124722259414772 0.7730846899348448796003084434349357 0.0617530748305382374524022448685974 1.0637421181698596632925711549532998 GT 1 -8191511.0583277669716095275464241288054615 0.7477829999829125472534964718855190 0.0236819061006026456999568558735699 1.0239668297875581792600174328575208 GT 1 -169438390527819288546451068631203176.4926469196590225586714753664357592 0.9185221879278596119690579338680030 0.0312180868021655038151694488166897 1.0317157562013485139778376647413996 GT 1 -30296.8706694032109744445729058545182531 0.7392660565438385226376382062272029 0.0112302058658140894678598590221230 1.0112937407487632471659596915555662 GT 1 -902639438680.9186711060135952968609330921084659 0.3883244088124961481147598726837516 0.0670399055478471242609510082201508 1.0693928502690653951733554701871637 GT 1 -1983305410526470586479415039956007.6780016175855753450676318409568309 2.0952057431623158430063642213864435 0.0056000838051438706143552182332105 1.0056158230627348524988158381123293 GT 1 -51043697608390.7077066752342215689403061230711927 2.6150617052600326915028362407494625 0.0114950125393703709382948145494556 1.0115615909005017728271159553303916 GT 1 -827547284622618174281893252891053074002960.7514072238518768717416087711168789 1.4025722915250303914718406229999435 0.0606652963832180591223708495064186 1.0625834164097378223373060021365814 GT 1 -2568839332433874654085934677834534832880378.0193230326908894462193718592531086 0.9993011242440742806746927381338448 0.0044736826515679607725433121213086 1.0044837195154839057593529513972343 GT 1 -5447631050799695065110351829802983862.9368886730676373308871972622759437 0.8614362614059676907542656946625078 0.0500622871398367228338920791892989 1.0513588619474104519735465551258479 GT 1 -256970473369589828004004146.3880395572387977440802688271889307 1.3326433011730377653086331464096028 0.0510803531809641534169545645341524 1.0524311553806025481010283820861510 GT 1 -14302.4026033887453197504273328139318579 2.9964427188301991833843626573920849 0.0864711494954124687654379291609024 1.0904403212822876698999465532197012 LT 1 -5523049156236387538548374099934525351128.2365018396302174971377324290306366 0.5592254765913395347463869499362042 0.0161513846558790144011832071538768 1.0162832399604224021546175081515627 GT 1 -81843855.5387862056857096488014801355281205 0.7911220246138569864868356686778861 0.0766639805911873527538281429424707 1.0797620593660766956875969422804913 GT 1 -2549812.5570251243567743256814396016937753 0.8808803511912647103369726715909166 0.0468021778022801759967129142731799 1.0479328184876884986135761762217927 GT 1 -125312895393409535541905325009.2226439775353848135027098378141625 1.8388179845272664395808803394903709 0.0985490905670434591859226827518195 1.1037496921387524901553416928344139 GT 1 -3613672413783757761.4669404955905779765392070737717181 0.6643394876017723090084521745971950 0.0865796457123923172899627610314059 1.0905590943897422213149091828959044 GT 1 -157907053174516372653476276060685741269.7406075307824217200722707014481564 0.3481821850491334067715179120917745 0.0359241888829960055795094361307873 1.0365853452261740767790223467448984 GT 1 -33455560423741881777531491574.0889069380359139024999294549916297 0.1037153634411510085996303811145318 0.0645940212543983156028149097136268 1.0667746420648490207339349817571770 GT 1 -1981208254820997984265.5371321861505602360590456921056038 4.3009364357926534904321843240191667 0.0719891415300783570894404078638670 1.0747118453269763485101553829849152 LT 1 -5546650050737324556586461.1653287258880941128531817262692405 0.2134798584127356034398744359862347 0.0279080199371366071668981657784961 1.0283048493045011535542625359585608 GT 1 -126112910006379689222973817128252287.8767474771450874114807170520291026 0.3072849372127635414996716017246929 0.0234844762241029234823367557193121 1.0237646314278152795656196553070597 GT 1 -4244672920486156921178289185512240276132.2447406740379534146486764457285253 0.2344344214644422479520420258560399 0.0453619884297379648936049583496740 1.0464230558334670551841859945105227 GT 1 -245688333065243303929800559842713907.2857563502417956491832819813681080 0.2588863993405201985886236449633465 0.0277708194541896384085787545979337 1.0281637198594749601310684156869249 GT 1 -741321412052730825668409332444305.9847658160191700125063231374044682 0.5478205806151638061949664159769750 0.0475621362378700685483606345524049 1.0487304090045710004478315889674515 GT 1 -31166007314598211923264052285912618.4155850927602246250953647419386442 0.0391640389123189077725432971783878 0.0070118054385782536304156889081884 1.0070365036668277305365687433875210 GT 1 -21791886592574614252830339727367910877726.5197439548198016807844489729111571 0.4679651554074399732533006806663745 0.0172586025666462257120998739667943 1.0174092682841337803748852268976630 GT 1 -20946233920764740274664476740681.5808614807159944329434145453075756 0.1814514979855497322310640621737392 0.0331685359564097498046288510784727 1.0337310861606595054363827517701306 GT 1 -25300479334536359442008158439310.0611816076724716482036923453394322 1.7182676552172497082299564841270990 0.0789138191239736918959201989699903 1.0822016739492302353655953353926665 GT 1 -46780149281670189119388229.6846849882100829135052929864543940 1.2332736067382912309218735951799597 0.0929148701773232824160786019878492 1.0975189745915425729136484605069325 GT 1 -1070705970077109582609.5327896943633378191111879757123835 1.0192570092147338024337730989212891 0.0034282590142625719775971986325887 1.0034341489595552114719582714669680 GT 1 -7702048566083.4383590190764808978504472973569426 0.3666258586256297211959715892600383 0.0769614519343527005238943703676520 1.0800842814665966770034869743333858 GT 1 -2716928758821050678334878621587569819246.8185593563354424701277142209127935 1.9058947027493255236596685782648590 0.0786719234793327922585940438460348 1.0819390884367053700975210946004740 GT 1 -1418091818908230999565457956284.0343732023757179926374900251130563 0.4547252522852876792903527874901020 0.0636946940126155057517655971413248 1.0658136740797478434407380496138306 GT 1 -120477068496420976679764.6069755559119088349034753769941932 1.3031926658620560763824016042932985 0.0549640260439115777507908802567527 1.0565322845345495326940469720677801 GT 1 -2215905224008426917693043.1007691970099571598708311905753882 1.0423544997878308731514494635561996 0.0456969661629239910870169796658964 1.0467740124409853660123183036656022 GT 1 -2643599852260780946474607003096705779.7895225402119993996925024432349663 0.0371345570361868099334845219942934 0.0303543208415064035440977124162649 1.0308245534334606745188465934587912 GT 1 -321830493.5173560950817495972292607722230373 0.9650533139909610910873056004328582 0.0776078356599021512058175365376652 1.0807848049244948081209596103817963 GT 1 -263365501950735529426508056360761128250.9548448888632304301722879076627178 1.0507537324835294851489603150788739 0.0383690975965493048303374176445464 1.0391245792747019559784380757049986 GT 1 -12576074464475029.6025610452240480525346486508146611 1.6374898563953676383118882058343434 0.0735956380537738375247692215545831 1.0764444636833143919727920607986767 GT 1 -74131198978171290.5952731309021292777924707944033421 1.4677268457128895084963008497004873 0.0083045787128590390992146599652746 1.0083392538349594470597880210685483 GT 1 -1.4505213521114689827702290734701077 1.2787507030651465206251434782070263 0.0094364402506674294389183392928599 1.0094812455440608165311518025621409 GT 1 -24661022320093402323632415886642413588.6142702411478040344094743158264284 1.6405080743957123814554227804192608 0.0192610937920169591725947777514271 1.0194490054955965588989537044877817 GT 1 -1490968077493678744321449000859835982317462.9982663803451625970125665894721892 2.9623055051001615391742020742483583 0.0508579531695517303908638760444283 1.0535590645764726917215181846753235 GT 2 -26750819151449354391339419.7464882619429801903861607236215247 1.5787298491965842791196550609713203 0.0195533629338494605522896480075943 1.0197470590326507165768798911432532 GT 1 -33.0716356196592967874238731440148048 0.5056149880079733659646249940603110 0.0565353394428511632767183142724878 1.0581963705643104026398597135942002 GT 1 -141607735031167571428135290272312.9837031884626502145775000249763771 0.5995158416955011879817501575439723 0.0659691913209085164526443660600784 1.0682458555595266022582362951170991 GT 1 -205392174458296116719084135.3850425430276425715733826827169364 1.2814096077857749465685497904543832 0.0035325283450045348864471145748098 1.0035387824561525395314411752756023 GT 1 -308840776350440.9709888306285947875759145034953622 0.2527430442868479650702428411118777 0.0365302456327188260461953213648943 1.0372141830399686267418876861376492 GT 1 -23042939939047739944912506839573584261643.9249225705261542748839574084206210 0.0267432378053859115340950970957673 0.0899726544706392703513913890181331 1.0942806298904699634513110554435736 GT 1 -2765242459557152891.1261229860136014038857233565522961 0.3603367266384441172044527002119320 0.0287577930085566088989558736755645 1.0291794010221033994312211772727676 GT 1 -2755650032991731053876834871.8715321866548748398661386697847840 0.9206266815754026043597794870761497 0.0888934311515187039895983818127239 1.0930954084886426078743252187548131 GT 1 -208280.0839757256448705544295732589805865 0.8293002030466040131655568668649438 0.0087113635789484638292192921473235 1.0087495293187327247075974353871032 GT 1 -9842764686001242492763711655097300126616.4345364801052976557671682515323139 0.1384890163917149684181751211213741 0.0941429020810305187346104256823253 1.0988737139458750411629672606328164 GT 1 -6931080731579655.5555549315532334041221388986881069 0.9750699864410054439838538584591535 0.0385266620412185732348233970993023 1.0392884439698285829498038577051722 GT 1 -10295798191336262223510.7087492644779098460374876266456071 0.0118369917967593162770123414996673 0.0310835513448181521150431420943683 1.0315768951069572524371509968229446 GT 1 -2727170862399448005583153151461.9098059846396240579478172454789575 4.7015401186844421226992626165216390 0.0925853587062365364349654235502904 1.0971557764473992581664438151945180 LT 1 -190115591399049911204.9049958250507383524316967436286447 0.9813334557496841457209219051790449 0.0513925624416882525198642140179001 1.0527602250061292822530990129554249 GT 1 -103638299560489.6027708973355490926999888258393336 0.4066932390184928358316926532980624 0.0882479708014239965711299350902789 1.0923872236872954532321661829473614 GT 1 -52444576124693971455114288034354.3380014529206741816576501963026492 1.3266326031877008142916451394300957 0.0709715981739210071954566249123393 1.0736159681640672845859770201635061 GT 1 -24642182615575942434.9336847630897603863108941129071590 0.8990182357676101456887323054273210 0.0861002596281975285765996285506066 1.0900344067922122010533656394321264 GT 1 -36523607672544546921989377740758584900.9818589505758899462832610558193271 0.5888054497456377952543011872825282 0.0723052350160745020583593801990406 1.0750525173441952362623975694567911 GT 1 -59500603398.0117111252664347731226629124345285 0.9602426007277297839365674279911202 0.0425188595581115119347689023215017 1.0434492547877528778146801065717763 GT 1 -35710246034576615587315012.2399256165069223598594291071949532 0.8933814068161621355807499075052372 0.0915811115442462722173388948015329 1.0960496758628190341646026537056171 GT 1 -635131980056551693901444018084084872786.4416356819946604653701061942141389 0.1797587542410519800437098140134335 0.0029749932684615749784538713690035 1.0029794273573754215644008706229181 GT 1 -28418662444983764635780628.9621788351700113184590859931512713 0.0163125394998941888367885627528246 0.0941293080919463637896716565058719 1.0988587072885165337230190734362968 GT 1 -28.1010826233819486782145700096401102 0.6539944262942618795187976257547963 0.0558569315188508186353775257117462 1.0574775687255875410947040818831035 GT 1 -1736355381538745400125684935778297087.9526248814500304335245181473452193 0.8993248089189285220699391174497468 0.0936620284336684835684584631428472 1.0983430054512479387157861968472919 GT 1 -13894624.9057644950594587727571984841752122 1.9615088483898190935848279232879712 0.0296436354397458898921570260808772 1.0300918888098818334236230157292395 GT 1 -4490460531043071210384.9643674104561829626899489420658468 0.1142286333193298123545173038779032 0.0828221665019245595602971827391260 1.0864538958677555353432914482922074 GT 1 -1909982.7641406416980687670455891947623054 2.0653885369133360590529815660442473 0.0423724633055813587578518615858499 1.0432963692052654992185830780826266 GT 1 -2956187484790392342790975898920869171842259.3953995975783158520329528671515090 1.0728681849916586663031082729930838 0.0025457716121685214406840360564462 1.0025490175989167776725793672373525 GT 1 -18344284097270882644561429959106156610966.1649691415175411646142871886949630 0.4571382088205680487842814141966137 0.0188939572502672301050036531872568 1.0190747286739439774971325881391020 GT 1 -115786048751778044223600923757.9466412261010392121374972212772607 1.6262879343271704841541216197916434 0.0236978861525087288234314600114104 1.0239831975910286545828828934875342 GT 1 -81734774315366698031141.4074406629426273207824896273919061 3.0885102792179807732692157718000581 0.0935335333352832277858793519819513 1.0982012415677417402574243467528602 LT 1 -392552142.9599996959159803191185905887338670 1.7228433354688762963704000308554803 0.0168537604767004590253585639371922 1.0169974013106017401126098223791200 GT 1 -3670779353327593724066744616485904308848955.6776432904961649349564861505348457 0.6000368380601851595553713629535294 0.0879358834350738155570681112532196 1.0920449881279478419384202657102351 GT 1 -943080650.8287796066294572639007121572764371 0.8487871233365851050077621967516101 0.0773036170524873529823821026525186 1.0804550444795353565218223490451196 GT 1 -200400677521959113251818400.6104359162604340848792263561328576 0.0619470211042445291274833090302480 0.0420276023785179682226723442809004 1.0429363139300368652721682882059823 GT 1 -1281039.3273032862116452207993628780465664 3.6979197136185256748957062822787203 0.0807249253505850707218141750457536 1.0841698818821405994296568500585647 LT 1 -1378612902663260.5079540595343619003279026595721508 2.3218349762256032368036689004933612 0.0603879108282353015169268277093574 1.0622881599841035325123172557811447 GT 1 -2364023.4490292074881112237822705989823079 0.9728005085377312931034540580678032 0.0297596656661264086739282403192120 1.0302114708194615755392259550588974 GT 1 -323360.7180308082141109263131360224474718 0.2343339329791475072631534178520205 0.0993691824450661607254248068300787 1.1046598527850252974417277768311479 GT 1 -511.1885993481513489987178688156053361 0.1546786821961450633829550726396361 0.0909842986856676241463240242024073 1.0953929117807548329575268908567086 GT 1 -36143770416443.5656895739984730284962217780078202 2.2232973782103081782028294232478300 0.0206819220573821540578232712298381 1.0208987883597894680482569746349624 GT 1 -13275208033623406904401266119718606066.0098685419362606747988536899213210 2.2675588421875035154548474634911783 0.0584333037901844588627744680430955 1.0602100930224392847148043094471463 GT 1 -65799667307922888263791.9376864420661439744130649156003905 0.5457322619975870848491813948194820 0.0128756705589419409298591970226796 1.0129592804696164681819993621757955 GT 1 -8335160078187725347319299001730194213372.0354058619499710626628923358594045 0.3885266555025666948710193956017646 0.0635423346810400718741460709231315 1.0656509633317824500244627088619956 GT 1 -6963867894709.2340709304510076813332342876545240 0.9476502642179339053660872467424560 0.0106298270636412978841558808079185 1.0106867272607371182975369959311318 GT 1 -651342699806492745158497419571594830.6276783531354972464838109403610991 0.7223775925152466661654280704032447 0.0801995902280303846753400674138361 1.0835985783752499671278818728185478 GT 1 -509172855158112309923955.4901971820183123812755227735989280 0.0561812120657459426207896685260326 0.0953253978042665646952385922782174 1.1001799555226438077907239061379685 GT 1 -25086170590198175438892857096190842825627.3279981633959083826571255488685774 0.7134245526244785554295488096713847 0.0877097242477577150384561721179126 1.0917970547336171850790474805471486 GT 1 -6.2082470813637618860987536441169933 0.0367505602454269404745571320092456 0.0877819867295058375276783293336062 1.0918762678369181452219683711497707 GT 1 -24430025.9125177372607532546831709636941369 0.9000179500991220853683411804738303 0.0468755241775783704751386471523635 1.0480097691433153702865381518988955 GT 1 -7355.2457648328340692163110892923453691 0.8928975935625065685083386635091058 0.0497607790798530443752776704594485 1.0510415145918521117935473095048412 GT 1 -58497263.5942629098399040111981524272679982 2.4155846215187361404675264966022686 0.0534842039075972819593525648947894 1.0549676195207213974877206843108335 GT 1 -7800460472814118966915229367660.1016250929012626861441563119556466 0.2343279438840094206022402601226738 0.0402926331521530178678728899954874 1.0411268671893642171342014973458217 GT 1 -799633468750626349112140062426996328.7989025255454960921042491368441418 0.2660363194270929732770796829352219 0.0365994071644326127233119102814289 1.0372859694285483110341223019683887 GT 1 -182147325993290145766197311078069542.6324247884978366497370435789825007 1.7729139772895920496946354258467907 0.0971107788093045160838825412337276 1.1021554117278946908528329490202726 GT 1 -1213721364939679677480232.0008997563694916233076816881218706 0.8379200631576120189600996923571277 0.0702399898353083656717372704829290 1.0728287797227444074265391029242417 GT 1 -10360101471090763483.0967552160727391882869929202924111 0.2603896575471045860521510873339790 0.0635624131128324258953640645115072 1.0656724043939769025610072064084506 GT 1 -468066021784130528135453.8310856230326879782325140372395744 1.2297911774814037955684084689940372 0.0988767334837994530469455950453118 1.1041132199477445460394031909317661 GT 1 -54382648775.4846815296661473160301268095134025 1.7666667140905473476068558230538626 0.0590935044935390149799049453372783 1.0609115114897272073103535217030451 GT 1 -2257367.3747950264303410006692043376686325 0.0674670066944305282799689636459297 0.0197237812739531912521396779828411 1.0199208911885104108603647162805481 GT 1 -272416.8908208957638575870227056576489077 0.1738760452384041826337023340179929 0.0449868623088622651458689791573479 1.0460301818513831056599990888884748 GT 1 -9105634265526341652484442536499413196.9534576799659449382192370444481026 0.4048700306714559674303923232765686 0.0086055253671465281346024818246854 1.0086427667086994876971657021147880 GT 1 -129331328750622742446331193108.0268533527769687404953941564539404 1.5801250582514486206113505374221677 0.0405077648535933362217475320870980 1.0413510561711854193934922675129677 GT 1 -217438760253495.1701214693188476581109482747237109 0.4791136998006103080325210473530109 0.0674579526435031799183267568089137 1.0698410374818107750727797567366896 GT 1 -1213157813670743363430.7257287800658514238344714847316010 2.8855570862734862129293481242267045 0.0589739249903934047898125307629232 1.0626318033457229501306073720268998 LT 2 -5139382052692314614772052599394918768305.4152160516736407921245041830756927 0.3655003635526162166500097446754892 0.0365063926349826134638840422207421 1.0371894259551053343030788134316828 GT 1 -16628486375968.2450251653416027816671752888905061 0.1938372522116457834040756723741528 0.0994898196083674311874812545435319 1.1047938091644749925302629294341188 GT 1 -650738840891869308083305712904911872822.0477451612920603001582116057273918 0.0113792806053604904463487336582952 0.0186332584096313045725383478649433 1.0188090446407693667397940053250877 GT 1 -14693228706214586.8844958326195073388816605170348255 3.4354322160486531183616244769442916 0.0352227026452695350092258816312585 1.0358579842202245040401658582661531 LT 1 -298135888.2809215238314046560534775517588017 0.7096142805546286720768710954955243 0.0183334408882367883068897888077726 1.0185035811281345495216677699416115 GT 1 -13.4066342700953053413723622193996145 2.3783652270022968465330741894484080 0.0670300452049292896314085989787324 1.0693822814453070721927546962709637 GT 1 -2318437530323602832.7141458162821618203302761384199858 0.6047215466108164792703672200764144 0.0751236377703020426394275694430993 1.0780952128577143693989617009348241 GT 1 -13496408687694413025825226551508436764655441.4925871697702773816427042912436584 1.3156820057942303933524674311514559 0.0525681196100478065802050770931207 1.0540002386576004085898309256795857 GT 1 -15175471210880649696692596.6053258595757407732147374279114170 1.0523511119943993238428704569389395 0.0292247227090465028979794963464405 1.0296602717797217712351147620955980 GT 1 -8079.1499214199688413742329612909414044 0.6207692472294998379307428138026956 0.0140822397427250727343422665770276 1.0141823353050790021593473903319486 GT 1 -337353245862721570413085750059056090066073.5176598136006721137085562596234686 0.2041106105493462153759985726441984 0.0822240348164726604826366983578725 1.0858019647869117712940188357703436 GT 1 -294061222422000437358894808350632088473731.9714421015968203572405754324686849 0.4337191568866336545384826674226579 0.0606243826406919913763412117084212 1.0625398612729232453763836439261020 GT 1 -37360921.5218273098349847772657204173506502 1.3669959440609776618547431084124286 0.0814083754112189015602169896250388 1.0849136247144379770736280842170586 GT 1 -4.6875680715050033344715558355579129 0.1398480071050087486907799925487407 0.0087839400543918350751713444638834 1.0088227462706106235657083516339551 GT 1 -87249835.1639485438010335239316437321997868 0.9481798084181807831499440876330693 0.0438034267822847807639265741872360 1.0447917665471149846454411187070465 GT 1 -1325123134455379546801949448234690062.2217734636373230631538094285412101 0.1190158290126110507327861464519644 0.0933146331471080628907165710053461 1.0979597833675048468432215699465847 GT 1 -8189111223798888.0054718669609673554600224657868470 1.0245669401738603245253830454510442 0.0516304094766825592950761317409762 1.0530109892828914617439233313069724 GT 1 -61984.2282101698185876420295227295582220 0.2435664740484982237284599049566734 0.0507726170177159756190852337232664 1.0521069063512988438811148582744531 GT 1 -4170775129587018425465666267502009994400814.9797366178602707661397292280563628 0.4398351919575215706492287145134300 0.0468888570532261497881055421051261 1.0480237578396934239157346187974998 GT 1 -837692160742.1876217599155435508757162645925066 1.6412810271308227289546575599740056 0.0358603727237060652377517796770172 1.0365191532872002700937107251986660 GT 1 -1706270318218686306239350534071042.2690939482299467165438219511126642 0.4117367537076090148192368787161348 0.0039044195027286041661779546182437 1.0039120616471327850239404592263623 GT 1 -119106063853978864235374094136352748063682.5351424888799690493918060515768428 0.8211481776719031791562723291145085 0.0316133947168141550452832681207205 1.0321238858156433174111573934840419 GT 1 -225075413022626258263814322058778690981051.7490608671713665544168172609426334 2.4198806818060438484392396029042284 0.0349549834857226579051817039403992 1.0355805294935998715737973097810800 GT 1 -678763844278.2327700778418825624546477837581244 1.6180399205753209432868808866044942 0.0139212800544306583941513617353780 1.0140190898933678111392328884494443 GT 1 -4450677048.4541425268890564979824385388967026 0.5758580814713135636149798114214965 0.0169258954697503312516194670961368 1.0170707755825142383653916528254426 GT 1 -210346064038435340000554470463515752835566.8530724496675967334174985427523094 0.6973818146139943484860727146582904 0.0355409069762922341366422434369008 1.0361878601602546563821263959160464 GT 1 -93773.6025359339854238865883007342736363 0.5727261595304431222760539974543016 0.0582250370413548398432335678715470 1.0599889257704277509443892265372529 GT 1 -15206383029995.1660481191267684003520414589138831 0.6358757424010556222297519432271459 0.0302292795743347026709814797786427 1.0306956061198546113396545277479047 GT 1 -5031226577692008282379066927454200340.2679496695320847077705521918574455 0.5228359094831000690457596727358989 0.0362764565534569458499068218137825 1.0369508061581407049949985013469246 GT 1 -372256655.1618634431047806470594265668000161 0.1843818953020021079773477816348702 0.0576209020873945784220444658978340 1.0593476459651186268997833494041400 GT 1 -4100639285790192541985535068549.3491461795753923786832454280459923 2.5621704420518535165140948495634245 0.0079144361422746473355999819824900 1.0079459215280809995753490569906298 GT 1 -1900582479.2534410462567677407966590101708170 0.7678594436518760574105741962359431 0.0400547830335259638869793347544466 1.0408790618084847270465816647702036 GT 1 -418253354393964308564288816685163273.8091412160672085855121952275549970 0.0827422741489434469740122312299780 0.0737182769155404873871438613237153 1.0765768540142362598699471808904218 GT 1 -159752507532220826426476.4348235095561800374261355036595705 1.3853645749300771352250679857202702 0.0182740784221355436950708513443763 1.0184431118468235786522020545455360 GT 1 -2891976842079052297764202901672.0846227225248313561050842282589104 0.2167808994107259139841458289511668 0.0474479444959107206742553713389816 1.0486105220267542303280387669559850 GT 1 -42096362744736105199689030669.6682881536674417446035470598141455 0.5942444904137879028622926746533007 0.0065785978276561210392176851013862 1.0066003321758095261825645262386380 GT 1 -45062349498984842940774560505000698568.8873007820355774379409349641888035 0.2484540551662177324743772608325708 0.0511190719300768427203193735129048 1.0524719591927948031486558487040255 GT 1 -47420146553161851218606.9645784385566654673637747346877384 0.0190486169929555799821169419501776 0.0312935045098008280088286785732028 1.0317936072040541084610869199751245 GT 1 -13364576015949571.3665514594868744662595734066030850 0.8758749503310494937864770424586090 0.0737326055850641262224958148968071 1.0765923231528286721086061840688999 GT 1 -77172499378565861437777232407961549346.3467191119079739048176017476445363 0.2203630574003583885343754392220209 0.0136720982328116250215594209478169 1.0137664220913013970228234698690345 GT 1 -24.1307613757976517826557624948583283 0.3059480053496559526143158363383363 0.0378097331807313154769109924165400 1.0385430653164094525368831175518968 GT 1 -48099.6120508697489784595914940411995983 0.1007741183646526692933254384616191 0.0280429233653542037844169738989978 1.0284436353376718431772538082119808 GT 1 -366260538853665331276014498119367559300214.8203204194348557648789465552699391 0.7568921779068479866550572074179705 0.0415780068397950708486922512446887 1.0424671040960548221957373393673860 GT 1 -345.6854390298594784063789039762002812 4.2496911057221898075006416131908990 0.0896454334006457036866048223771450 1.0939211217330468223632763570940812 LT 1 -6721843681603942.3238599269136870080211115681467997 0.2384965384601221374138190448404743 0.0677172901853271591674672524373808 1.0701191735828020930653009976971115 GT 1 -1598.6303703777810258946394370130219979 0.4720014676172693149734486396585944 0.0316957712982460429272133665834396 1.0322089552340925886739579287302312 GT 1 -81638.9530956803532451778682733856691183 1.1888376255178416508379491845797214 0.0985415651596507636274775576379298 1.1037413440679893731004182504188528 GT 1 -129869110171702085148991930382085175874.8229697636235989018041125293813640 0.2000178319316645967931655932271422 0.0308162381000151987733657019936757 1.0313010443072491691244686428274948 GT 1 -3.4040206664966775002785074268634755 0.0991054223031161000451406492567530 0.0097802191808953726214953531996166 1.0098283596646602583924599342915478 GT 1 -54316.8552337388077435502657189272233332 0.1929959687881023375950644301122115 0.0773695157137378485767250201084427 1.0805264666892789275351566539162872 GT 1 -4249.9745882548889613987175335345247031 0.5512491145523707476750005129118312 0.0154951525675527258966185283677401 1.0156164571644971573301334417844566 GT 1 -329.3772088477013722027715942058251237 0.6262806353878631189918372563415646 0.0598175424494155605974641368653722 1.0616813187765708004245776535189594 GT 1 -66144599096543067998611.0486152714750884931238592925230429 0.6811393293386277641106439488367494 0.0195381737130068525200305113674577 1.0197315670082887651491212780880404 GT 1 -225301465504926452.5105026544326282330674544000784653 1.1388777871111265774009676356421477 0.0574699360568921027179311974822066 1.0591874620858311501820048687692325 GT 1 -414.0177854594016190116871884059945226 2.9784948099705496508368039849846238 0.0706342471274988832768179235529934 1.0732529116517825038244844377993823 LT 1 -117.4958013439250485252030515469461096 2.4627801923671931682110200815680388 0.0248578201504725775124333777402624 1.0251719931290978178472504311421783 GT 1 -13730.4833170136095291383478585548613832 2.9668134831485947342680628104208124 0.0870841210209056919690402310209581 1.0911115395662159361355190726326897 LT 1 -4887911354203175122168830561002382309.7682878800886663872086989245461011 1.5406687375493649556662055813287632 0.0563365785730493926587859478027434 1.0579857215125218619577614526634197 GT 1 -55557504219.9669479157981514674337222655098749 1.5718334939373261215080041521534079 0.0393713012803776581456299553373510 1.0401673143704720895261184500921785 GT 1 -96054860024415875967714618972734428569701.3175855003098535024411122991779242 1.1119294408855479847229340466095233 0.0847104381370251260643621059963942 1.0885148027174212694980411557071149 GT 1 -2549666341940572624108724102597511569774878.8639838295752669520328882180015307 0.0034229464395747664945333801243987 0.0198928300110689059910719864187529 1.0200933561650123217745642125060188 GT 1 -9864617113192047407026644494252851.1526208362512083208852202527243019 1.0993383343261082128011385689226265 0.0812913005031611458878973624746333 1.0847861823941145672589734196000586 GT 1 -14881841322511464012747193610463.1619360087439518132737092981442184 0.4575829943784800201981932070863353 0.0472800261144989491323104087708847 1.0484342549328628252002098108517287 GT 1 -1396623617889930.1291994526159160043255657974941552 0.6759645490651858259005727270421984 0.0243220591161861438462068529653097 1.0246227256266130413136197609437736 GT 1 -2632639262876267807781156820651.3375438553058880440379183968488515 0.1582995343221317469211014728136814 0.0442118418781969804905652324607437 1.0452189824086536243485950539474126 GT 1 -8981453730759915397526280765.2185152689888684883754230804246997 3.4347722866436256191347614754280722 0.0887306762491930574598795476109580 1.0929167901219057385464301006539100 LT 1 -14686650342873690730260866678512189231986875.1751808278254612071914097719123161 3.1208793335409444716641257509308435 0.0860536699089838211244525301520144 1.0899834290649553317328950665449805 LT 1 -3529197514680662356775154543119248169.7683737730620659594898190750632631 0.3258463359693625830729365148961729 0.0371563362092199171299641605894931 1.0378642232594320739770081455469672 GT 1 -21274527414094980228089440658.6513481133571239246572722518099461 2.5743721646273148267134496221941269 0.0026466263373977874386811825973927 1.0026501348447218698342851838060751 GT 1 -9587869482339894613354053280249684.0449209175933023527139675784128986 0.3279673553074729875263555365170081 0.0196364348635958755016082330065859 1.0198317912823124154618784211579752 GT 1 -786709.7632331063950490976350223612053652 0.6608335532741445439149322336162077 0.0303782001855086452088586970141332 1.0308491806128078936084488270774967 GT 1 -12886680227849942459205.0908547744912221092135051195694287 3.6796110616387580729427479113314486 0.0869185097783201817740001376767214 1.0909301469247664106363598595098061 LT 1 -8672322426747803661445472620413083.8606340046480518989729785856369000 0.0083932659598246221878303347144858 0.0058005046381902958421491395490885 1.0058173929038605068779404142729010 GT 1 -4392.6478193850425234529139083352033620 0.0894723919461999803641679846076899 0.0889335735422438375883292729941727 1.0931394684004457472413708520547382 GT 1 -61713357419109.6522656964867215669503543517268610 0.5094481171946622075441330076474692 0.0198952364657393759872957949482841 1.0200958114655125548875957665578540 GT 1 -49014780001721179201101475.5179803116620834949799580472907802 0.7361726119139411523108684908334476 0.0629596702399513044029643934617834 1.0650289563038540153296210005262335 GT 1 -6824366691724677461884.1743164454809325282333629128519530 1.0823787720080097445496014725777441 0.0663926369628850227363335681062268 1.0686993113259004611843806612524604 GT 1 -13867592576029112186214.2224219687759614454694270664851175 1.0360854506827399712090646738942658 0.0502594703044320896877673465052398 1.0515664583296675244018803911483388 GT 1 -414020533773536497460107098301212431.8133492407947243494574745497706807 0.9314446146490473809484382211103231 0.0129341848793064634318773522608801 1.0130185597852820290188086355809146 GT 1 -30938884182094435001410526535691726.6979723404249737973305726131733574 0.8996770188273393657517670960444334 0.0966933686717038592802449818836019 1.1016932136285586053260800437839632 GT 1 -314039436.4604360182564287858274997983144400 0.9021244080820214447694497010606423 0.0347716060076754959326927549957048 1.0353905279346490035364324891684143 GT 1 -378427461059092681.4530474426896455460338789415252275 2.3466145661905575853139145305557051 0.0092759866688914837792949096720454 1.0093192765454088385438668088935270 GT 1 -995442856806910.0259728047480489902298681142901241 0.4443923123227134906419447513437892 0.0201707868827329424836399438518200 1.0203769948340256572481426189558162 GT 1 -10978448974265121875522500501121325159632770.4376048256561513545804207118671190 0.2149693072369484910013260007860199 0.0905681257869352573438407691891503 1.0949351884879865835830994635423936 GT 1 -7895047199749375634571076730209319286269623.0094547923698308826228236746628116 0.3211957652686001242328815920531742 0.0244113641416783950282644350383698 1.0247142610699184983251002150410431 GT 1 -3365662334520987.4751253549295394874845006492987021 3.5483092840260628325578269996046330 0.0929783218195490348383236465471624 1.0975889281818953611186723413245637 LT 1 -13340610516543072923386.0821742935723444393478355768161833 0.2690423910541027700450247127128007 0.0462065366051751297591863887786215 1.0473081263656264608537830134564354 GT 1 -2384.3900633706023703243596266398709860 2.2469310201206346472493521010462752 0.0348807105566651774012628763181499 1.0355035692795239091766377631071402 GT 1 -737738060.4459153504819933664751797570260295 0.6712898971404759974703847290854424 0.0939376431258337404406211226848960 1.0986471487356701115066250770473802 GT 1 -10290.4418909755921107051213328910908260 0.3251683362681853503303758737580771 0.0222574212054714161455900685578816 1.0225088554601779322496926026239752 GT 1 -28563553261674091.5566039908164016204622226114754108 2.1101698980548729089468102694213566 0.0807579618383668347041396350798419 1.0842058200711899335340307589183989 GT 1 -3121039465401846947169745644748490387853.5572210652093140912232597017426114 0.2505436797437748833632193389363925 0.0426952570076473654921283405742031 1.0436335024903926057591435914551182 GT 1 -10394623779.6012301996252800324268625990067126 0.1519951457280280501330425109298691 0.0309811137280281198063582598786632 1.0314711768045565280740618931628118 GT 1 -12256448108.8338892482477466809373902387884145 0.3390935521478044365391839205967169 0.0926160191924104491766014983057863 1.0971895658561010657038070388606669 GT 1 -914.7168077845461698558055976057737096 0.5883058780861013894724866395973125 0.0581110890956721655992617495629842 1.0598679403362398721575706253360872 GT 1 -21508081.6717966612850472425570574072187956 0.9111677592746853041912564439798507 0.0010505558050582486229942319230399 1.0010511080256008955588742600058253 GT 1 -385022515127634017703802351462.9119216452500399164173970469479972 0.0972600111606412584947930136730758 0.0483476196053044081331082768739401 1.0495554575172679850043179831195567 GT 1 -622246489031462645270839812449077244000634.8133904387784386136375025798133168 0.6518852165478007750298123698609664 0.0198402709182811607179599288535880 1.0200397317398636259279333204143198 GT 1 -489752824216358762335194589225787766.2427285453505472191316880481864928 1.8325756968360502369651933874970238 0.0492650797519506308442399801409552 1.0505199932008951496148969026305180 GT 1 -5989.3251768011818274454240925147956055 0.9590716090782346427839085237127191 0.0648981373586716892181121727938785 1.0670998116259961465287710412465368 GT 1 -25081486767477925894931.8668441396797255599783732442909221 0.4891409040589095954604135678593615 0.0233188344670071664886397841405895 1.0235950204936994086192015349475930 GT 1 -1244.9803968309336588372621632067151237 0.1122709895170754185569766183105094 0.0378843461640376227134848596463244 1.0386206132598448631584129093243632 GT 1 -42935804357585086177713031323437777278.5257714878764419794466019078564826 0.2727204597980985637602626784283763 0.0391280906841941000679198134286161 1.0399141678489822743487903359711782 GT 1 -1094766590.4556649021211703119120070645427306 0.0048727722017243744115088671281924 0.0453177484398081542585361162362764 1.0463767147446596767756799581782775 GT 1 -2818361388085979870922066969816286.0385778111384384136351949821322070 0.4011428742905055988555580332858196 0.0664132262464917580644330364411707 1.0687213650408322777152126068721882 GT 1 -649715230769.7302502953578561411228109853507721 0.8586325588027693567728309944173225 0.0532657848321597388233120528138733 1.0547368849900387051492975608537791 GT 1 -6797169869.1994586291268291770333594726159700 0.5285125706817751502651140748423323 0.0866716102518583567978304150293826 1.0906597809672959134437935975122969 GT 1 -16061.4677948237689695950504063890898388 0.2712761558488580972219949980878491 0.0342414298057000396562590454655162 1.0348414033417534461990641054970386 GT 1 -133.3623813913760370792825449135137744 0.7194834579114834734489087732197263 0.0272295450638357841361822642778329 1.0276071393908181567314344373314855 GT 1 -20716123367954267094000147167601542092819888.5706151435634166156994794378091401 1.2555406640550458121200016097777139 0.0068686235454695256322091289844248 1.0068923211156397044016700678033239 GT 1 -855552133094660519.8177296073029644847160434679464800 2.0403480522694857597885187279146187 0.0799604134863457449734848093345034 1.0833385810455747363758451929604185 GT 1 -110390505081468043743989.5132797677021037727317917788684163 7.7943726636043595718739962114168644 0.0192931757479486913385536504577776 1.0194817180559660661956889458718434 LT 1 -33348546368147302821.8555885099071415823761627008227833 1.1381532122735289165605032530980947 0.0639944935843918051647161748311460 1.0661339195991909987781354350741983 GT 1 -20.7746056546168159090530135237192264 0.9994823844403450401893370378485057 0.0662491596605672572557346390597751 1.0685456425736057263205206635437098 GT 1 -11312221.9405178032006191734361861249401630 0.1560204116380552541030313116666484 0.0368645471867552501515457971277574 1.0375612199483560780038547788757013 GT 1 -889731.2580188670323411757077416938179833 0.3726485095071581703942799000746689 0.0840028286520431402479009239916604 1.0877420023608568459110018862234472 GT 1 -1.4293218863842899131313372352081129 4.1764296786379431604655957890164152 0.0380697812078369530558474722187022 1.0388133685854964133158511310320707 LT 1 -701838179697773199879118379180.8385985561764659898192798616684174 0.0217298177048207107481326611816050 0.0171981508709387758792477822989587 1.0173477568461817170581275781954045 GT 1 -332985703061012303.9951031069700275481850885476398027 1.0244026396359986764421768978406217 0.0219778500479636634379952272649341 1.0222229609910705239017560579325305 GT 1 -283339088.5372340379948203695871454854697938 0.9853009103760390841613545948901422 0.0186271208853196795549009069260521 1.0188027906025394355371682824366779 GT 1 -149083.6182779136127389318103468313171593 0.8181548408880477015173296011472574 0.0406516703711554231482687436813382 1.0415010483284011876902326791790270 GT 1 -2380481320461671150115884558.7833705883038253764255553958421843 1.3716209536244529864608231258788208 0.0663156460338019826812850687129697 1.0686168486571855522566880059313639 GT 1 -4627.6070772384685876602205488596151395 0.3866079661392786475793501018178992 0.0375265776562558415198864335053609 1.0382488263508045086216081688465653 GT 1 -2310962902149968364563530288414135258947895.7287572954262796675199149546251663 0.0599525734183163400004235345119701 0.0074317210437697707392554764749279 1.0074594738689373291717253777969829 GT 1 -13612470115167180085073560648744982961.9911224007274559802413411363796774 0.5722612527172795007788162367784867 0.0048625154395674894825590745038588 1.0048743759312701711188579034195341 GT 1 -6808337780017075522.7030803360711608876615346613647195 9.3252601741443937543072231447269346 0.0939558993471145842884014811888895 1.0986672979064935248607288146250734 LT 1 -782018629933422681753016512396.1952830857854752189024404911926457 0.7944388344775035470025209484364877 0.0480198778436819754081637095765485 1.0492111244966650429691420489988749 GT 1 -38829146596211895172433359920593551104184.3162818317415323660382583523956120 0.7482649812209784287441505936788871 0.0323358939836684894542006783339326 1.0328702498402808260126496141383139 GT 1 -6820617.3999152606659896645801609924275436 0.3534268944319396435323950831644828 0.0946492725631338939411681329568498 1.0994328662289069530432193890851978 GT 1 -348846834289894.0812627412658284025574344864740658 2.2039330436003508251901646362279660 0.0623012233042570551914039053437311 1.0643265151369724158444179091999950 GT 1 -2581935893624020244828349535742390663274604.8580331924257878460875997779606536 0.8640600567905795565630651407380271 0.0394209250581307417460573588189582 1.0402189733096502762828924536073634 GT 1 -11501390836851107.8489689807637362689289140215459315 0.6556987911803636426281175640825531 0.0454390909010120450139495199022798 1.0465038252813032909013557579073916 GT 1 -275930977055608363210807163.5978339666566925261477649540765165 0.6654514701915451909945119502315018 0.0685767165141923784125403593312307 1.0710414503720308999521664000144705 GT 1 -1070611421086973154946353284.1334888576482623624498743706575139 0.0952354670594636323719718821011617 0.0430286063461484086141255497411796 1.0439817796647135383619512230917892 GT 1 -16831995031969125932161886.1834299371829044268884714913924581 0.2344908362321059060204903725336077 0.0317171145710759925141352645906725 1.0322309973851273430262347719298285 GT 1 -1278194464213646753102976104068909598.5618284959264990370142036186883990 2.0246195295176990816124078293627877 0.0352246601913299636988859082454926 1.0358600132356788915539018302499818 GT 1 -1342.1501335101471866428355673796526992 0.8516982341853262594164291383413284 0.0464797822289118271380478365141370 1.0475946504212176014651318140715455 GT 1 -5421630.7513618563483320020281249902274022 1.3779035452196948309640642449547153 0.0654050642369067075575079456147937 1.0676420673447726622997782509188459 GT 1 -136427266.9625289502996627266149951754084859 0.1894403475467383807329093417763867 0.0112527622503184093433588650338331 1.0113165535833852680338338827613203 GT 1 -90441265844224.7959082387520753913118804179020014 0.8196549183169246412884219150432030 0.0656215089290018221152582457202225 1.0678736861467899766074209898554310 GT 1 -51644801926.4047722048602499872257558160920385 0.1963545960938528873327473149832129 0.0730278552970699942306271867093177 1.0758317627319112372809516820894686 GT 1 -906386047766863021370342.1339386773293756075439507258994009 0.7340531822084663092679641724769478 0.0601971018619013133663562038519539 1.0620851085364158748956029170105902 GT 1 -1008.7267682487923637196918571286680908 0.2725456002761955668234487902883088 0.0171309172679122754819550035873617 1.0172793490552713016895102576869851 GT 1 -123943048102552266024517510169684.8414407611785542538846397298881531 0.4377773702901002037520077806707074 0.0554645891203594270870886686507704 1.0570621010761993766478717367195641 GT 1 -359085636052718121.4069110519341104727740818112169738 1.1094356732256265547124021943502823 0.0859736414770539022595981492451542 1.0898958692972634752207582369423557 GT 1 -6098.3537459939272710722481511367847680 1.0703832611993045601170636516538417 0.0790957040671821580139617211661474 1.0823991613370203372164697468522345 GT 1 -11468916627.4917020698030498139079405557702062 1.1591259336029205102249626812568165 0.0336536542802882201040349046034622 1.0342329730865402919643713338014689 GT 1 -80171194.7243023574551102070800868314951429 0.1571823337948811065542033944813845 0.0525584731451425038878835736665918 1.0539900570118308242118046592387061 GT 1 -520984059.6426138090905733731035396543977850 0.0197043017688752711289196914089627 0.0785425597093688616479221186876002 1.0817986881904517725736993847721920 GT 1 -837542056468343378687653159947.4349062107310820797270270076831395 0.9306415537614381638587677692548402 0.0262008886234181386538377212995792 1.0265502477657028679932892720968750 GT 1 -30483189486192197.3755817477125313351627735363948680 0.2449415380892297745944476867350485 0.0258189065034993302545256286248318 1.0261580650075216407998006550621682 GT 1 -38082308590995292943810.6571511864633540091481021412186552 1.9592675485961558979067685254283336 0.0769530521613638395093178518724572 1.0800751813756122077817206813129409 GT 1 -1401740392588.1611439452856196477207810857576567 0.3254249384864745773166311802918078 0.0237176427399393903643075542657545 1.0240034339369831313680811044781652 GT 1 -42440219395577038203627026323034061875.1551173473475880139764406849628414 0.2278003769633397649789035797422288 0.0286567709660669199227947115413923 1.0290753931975750191656261648273846 GT 1 -16045.5856272805606975830194716626826790 0.7343791097305921470942634732771055 0.0688428063609988164986379991730308 1.0713271720918541631926904009801894 GT 1 -57756327051188658033069800746.2708360675793582551362235560140086 0.2877689727048996436738079519746920 0.0086963945316313296818564279554045 1.0087344288386631033176377795611455 GT 1 -7891.1982276979210332257565839918821643 2.5980401926617088373996996824431694 0.0474210317960520308872730805858057 1.0485822691669502902758478647532411 GT 1 -3391040596804240026376851261860.6248872998967033692319922967851800 0.4110400309164235553140749532961620 0.0887873249987000768295069156008767 1.0929789567162139974328179779070190 GT 1 -48511907627295176484567529588944741757.1529802237989449188295803979731803 1.0995290099632423237422809130336433 0.0946982711739027864430926087785834 1.0994869888305264624715969249939715 GT 1 -24203553738235535301682900802308930873837.1472022751014950806071555752003792 0.8749130813904587667627383334242181 0.0257235682587637967489385323349711 1.0260602047836504677435475256222874 GT 1 -58325559363487610200858946056244551.7079759281498918575588305505338947 0.6112434342059761304583245512172618 0.0370581822949615026842423944349449 1.0377622867610146399558570254013498 GT 1 -58609932773.4972045576121921425818338444367547 0.0096918555220991001137875664571115 0.0630890768948208509685807394408682 1.0651670673191511162730032855072522 GT 1 -280453325849343831673962185442217822753798.5091098188581877017206503362581725 0.0367109164874033249507486282526601 0.0401631955783929300202104187618087 1.0409920043652691917169515221146164 GT 1 -1639570249405822566864797300678315178.5787647508384752611443925564629680 2.6141611656931718906260327327722476 0.0817821162690119663096206828803532 1.0889603702792713298527737236362075 LT 2 -34573373568424951705510744502705.7827513364035456599163567754251192 0.2298850407998748377317050829282717 0.0622604631098016082110329889887887 1.0642830477574626851501222600958414 GT 1 -3206316280553927136019.5778664035571213526811291639298538 0.1823995516371662658513193398109385 0.0869234553020939809833333193470648 1.0909355632399803664470471697250060 GT 1 -16.2300426742497279737347517081266439 2.0279451016521662970111978090199285 0.0284097944803009340757524026160211 1.0288211626792217589933606273771023 GT 1 -27.6907549923179635618211052353871088 1.3043317983151175996149710501161110 0.0386201402812300644947413401496607 1.0393856726508303737220932524780567 GT 1 -64187629900198369909215657242229962224715.7846628703746792872240497229497372 0.9587533894004540628502393059839821 0.0041739471531098499962420007490278 1.0041826823859353091038340373503968 GT 1 -5105691562517717122612325110464.2498301121754252582446243279972215 0.8225789552855240944056200087311993 0.0088609647840358638737663153192186 1.0089004565959411243553413892858182 GT 1 -268774472242038.9174294007675843564507935732357833 0.9767028184559332801203549537109570 0.0299805415624818362552078022831408 1.0304391474410484807911849960248638 GT 1 -268679.4618555996505433111772280589082784 1.3971681482465043220973539833270107 0.0244615244398987443625480540798267 1.0247656778104658987938779570309222 GT 1 -17965356431140817760149.7617044285205481422953060431571170 1.1335840237461571304924777888012142 0.0754880081283440969237604763377186 1.0784892570420509589741727064503693 GT 1 -337940072917.7173396756511586592580443664861660 0.4503029749721825488057563237012994 0.0097881371769344090769691535370533 1.0098363558972638910277150982408392 GT 1 -486985917398.4197652763408781697469912037545108 2.5054811001369796391666464733788050 0.0953836652192956016956195955259976 1.1052688309597051520878615089824806 LT 2 -654494.1068043212128289555528546628535890 0.2756179169329908388189918099558345 0.0154677687468507079504338553388659 1.0155886427358099504066669431942632 GT 1 -26636413290401061351793169300.2561416233895969896899058062664783 0.5078527956764619161413416133009641 0.0253308276792902391334511312800449 1.0256571760034001005789631855214371 GT 1 -287629508755930041755940.4071525606542069398069638336745903 0.8928834729468585450680513240216562 0.0669417007329668006716599160205395 1.0692875942701947126263936380734886 GT 1 -6315297597852114951801512541056395.3317206486526269933882882790393771 0.3760433661916962459832689513433764 0.0317296582798294793240372488969885 1.0322439520600392518656631701795659 GT 1 -18607649394695807168441128871729590476.2296973677207301919163809060233387 0.1452825307931764782230863196964416 0.0649778722600118813556927975217179 1.0671850839414133177929172279846003 GT 1 -24329854267272505985382056.4153257942587523812861186345733036 1.0581674535670470030540780830637122 0.0277505702463738435223779650994566 1.0281428924688219885141826727178125 GT 1 -9092800475012969660030008099662485.5506819138871698764295214546310846 0.7563939380045432444385091461474504 0.0328764368207711299412294503733326 1.0334290117755284075023233250368441 GT 1 -392092511600495470661041918.7652821712274220737089794621261551 0.8794044414651085472062939418492691 0.0148596725305571758405031538663300 1.0149711835211596460777330541390693 GT 1 -746369002587421257908141125306746.2242186255718576553047113758435720 2.0643336125164746347908332502245151 0.0224910715183608360967702723864600 1.0227478531677691038907260749932697 GT 1 -41676333797519528009755891.8439599318089122785530080908945973 0.4514452955187427104093068023439864 0.0666059093860542965726500315278349 1.0689277765193044339211324385430075 GT 1 -10883359948757814177142087177955.6359839484466909807398991660740640 0.3644046026005025051460440559207309 0.0065254254618755171059080715775698 1.0065468091263730574821649304312027 GT 1 -64559204385694833315953829600.2837118839633537350013094164568283 1.7254787733196548980323393056595943 0.0555526479530248922015291455049836 1.0571553352067139645668127480489383 GT 1 -2956175574604088831.0458201642893387767727202657372766 0.2143177465079802924217340726812084 0.0605812409533768174271072798980093 1.0624939364097614926842669543017035 GT 1 -727479101627069904223544358053958167826453.2286150387287940515646922404665718 0.1260347053110468939868296547554216 0.0633988051810672834254211792051344 1.0654977065353108721984395613708621 GT 1 -537047119197293.2059884882679007106400810270703149 0.3356697092830393260599542063447331 0.0361874436836745591876854716267204 1.0368584469334739272393346065806026 GT 1 -403508735334168715152538218860723338532.0268568363932525872312604959101100 0.7720305700246216440750069491968725 0.0535659161031529148325084383787449 1.0550539527052078772424536657004822 GT 1 -9.4329383742909810380387304455092752 0.0868187254449198954949358871315305 0.0988609161188905838082625462670140 1.1040956671592664552651485652296315 GT 1 -2301789851983552099714060733.6498237491378870794036470567188414 1.5776771100901770150533697443998181 0.0656829167852781596891481230686504 1.0679394088435667524693655844219474 GT 1 -65526.7308207467336822846695471464715208 0.6332903061064993250469436252552851 0.0198938838366232057173229257244597 1.0200944313802062442443860478913151 GT 1 -6857779805066542613.6148370048498016458747532650032977 0.4296566144068461464894386593755943 0.0306332000847406389386657751322717 1.0311122042332021954610212919608279 GT 1 -48.0712590954763111677150903104167851 0.8495066477151076276808843772435901 0.0482626185019353085111211796805260 1.0494661420180177636297829217547161 GT 1 -17808945381269156010229162794424918554426346.7413307742620029171686189225598032 0.1183303823966275645535787461084167 0.0942400788150603341928809794915114 1.0989809957091818202066859939313397 GT 1 -645490878332197557921069.6147308605579663774353573536404665 0.7390121965472790742188087615156630 0.0947662087314527475489511540768035 1.0995620357509848860725121016004549 GT 1 -3272656801186.1977580661478057908855134350552953 0.4060279735191924136933823359870731 0.0486913985868431992576340688537795 1.0499167670644054862351856523050798 GT 1 -3255797694791992607798388.7410756606752009603652041977048462 1.4743116534951315702533896559095369 0.0112225913030837242074289442492543 1.0112860397313417649287420389521037 GT 1 -12163920149447279185599626.2035655315196186624293786106179724 2.1295981052193919093776374369091495 0.0951414134932651972067876639403591 1.0999766054953726393268739813600654 GT 1 -22507108391916852027.8936319130161697786192493701775993 0.0127545240680467795409794247376479 0.0394359602473671353771818465666368 1.0402346256461385877972484590783462 GT 1 -117700449693105221038096829056949.0673249585779147918734609974427885 1.5510906403330156397819256846381071 0.0780826201835574654597308846026794 1.0812996691842908977396179808958101 GT 1 -1335472.2111945960728604473055886143451439 0.4247388996219275800318479788314226 0.0572984494337427717439254145173775 1.0590055357672796360558411300445187 GT 1 -389410.3690897936140107317671137649105299 0.4586469915994645299780236996322339 0.0374314013871855784897161563845312 1.0381499440738342426537232015010915 GT 1 -251621194.0866715213431192694439822686472235 1.5963976147438097349543564278348625 0.0543492456395070533218473149884981 1.0558819595316137440721314622602571 GT 1 -114673710471964805.9419181450345438653642560548823106 1.4078558928925085328891095940044301 0.0487654962944566966511066500002762 1.0499946603930261161210164746867791 GT 1 -1609128989900059.3053907931353413633967827587523762 0.0171122452791120107248842318522707 0.0699877413619306500052479095304639 1.0725575115904510485838105147887278 GT 1 -36.9688081254979344126655413056318612 0.1245552783767424313005727814787513 0.0688707135390414695484861906921122 1.0713571429672731203084428467327789 GT 1 -497231589662549144537804.4158527755537628150178634103825674 0.3120112399773541297220961065165286 0.0349781158689258626298937889420222 1.0356045000442544397037198737075283 GT 1 -2354595054.6429936583686896600348611580418871 0.3176721882356877757034363045789887 0.0903293575915798362174686704686226 1.0946726764035439215723447893965220 GT 1 -71963786229127029654538429775126875255.7334284921313541660468963190285474 1.5646384489398151690131875188463910 0.0509757226615071324119836259904007 1.0523208986778293505345863950563759 GT 1 -6491218960256797092393588441556422136551811.0173258521119347897957695690464770 1.4265094845648813456876620331665449 0.0490246890740853609697560864776335 1.0502671779452320785868727861101182 GT 1 -2695963745103916458242.2727696851572334150859337979661550 0.1564729577079933013604493512885952 0.0661273031424454586176969805314162 1.0684151489105438366755972145209672 GT 1 -1.5538207276063720846268761061175267 1.1009415847438894407370141589667756 0.0793634866532303966173081390920954 1.0826899858320152556265585577614237 GT 1 -9872744951603682879274927267927352905760392.3559142226691167781863369238694473 0.6536243315065812150482758824387362 0.0062499234795868856257934438564271 1.0062695360119247865628819889074126 GT 1 -1328682655348561193603165122968.1231366842288904917759649927480057 0.2140236960695666117541894257644067 0.0091055266602425439381530487420613 1.0091472353475536893183522817259208 GT 1 -6476361606599260270202987674900044.0748950226758261875546098789536238 0.6739076628166617597909734707016110 0.0977263810493509646842184310514468 1.1028374579679584741046586891968262 GT 1 -666967759822733796909.1785657604600174392291604563002523 0.2441621112004094241580543064407155 0.0733062176416508643834532612514772 1.0761320998558876012278971434424152 GT 1 -3020017400679931500633176402942243304634.4259567017490253778907361036537305 0.8138810917600282899756060079104372 0.0887960850202733674190377478042243 1.0929885703485980718771393811694990 GT 1 -14845295896787.3772787753593309158898282371624457 0.7975572501721209053911529400043166 0.0351820838802176309157971322535568 1.0358158834057383778635935585837949 GT 1 -7829811552157064461.7990520882909802670505504289144729 0.3771996100196615559860456347567037 0.0338865828981142565826678631776773 1.0344740426533539168037264708743390 GT 1 -28434.7352425125837117782539762304276890 0.3474899512848196800724435327430623 0.0803402080286257421757403471623455 1.0837514686641901727868513162834809 GT 1 -10451812718259486822009659192642281.1978236834579372303745975618060653 3.1460004129992742772043743057769609 0.0864671434602554976137984836283828 1.0904359360607688431486036786602868 LT 1 -938.3053693519654499773596550204646831 0.8607133387464632635485711274918655 0.0595245591729503371627795330908585 1.0613697434718987678779098436447520 GT 1 -104640252098.2014001553199488825196339605886545 0.5070051569130810546358793282146151 0.0333268971588521603852242070533418 1.0338948935863142265553361493225525 GT 1 -10230.8184805864014265417228144714583924 0.2093175464096154871012592780082819 0.0403647498689821721500611919232123 1.0412020144988910664965385996061271 GT 1 -32673625942899.8534242400422514584793256384608251 0.8819509476753472373812964002524598 0.0583683437874741310325545968093888 1.0601411040042059849349142496820073 GT 1 -141502612101803931647183.5857258170211255596157076050905291 1.4364806799007138961885611949502069 0.0457213437632411895106789362333720 1.0467995576931957453467691022510828 GT 1 -765399304575359370697284085.8431236967686597484533494194097507 1.1155497508999247988345305142155421 0.0781287516137277885545598012152117 1.0813497090093275854268101262163991 GT 1 -723215812078322997962775853394.6404928790546267396018546559435132 0.0713967593948161973787622313623801 0.0300098129807896751696935801856959 1.0304693240109213269023053009432789 GT 1 -505260267065005618224059.1512008623178376461893847976369455 1.0517156072299572033773364559584094 0.0598694024136438553423267662990607 1.0617364797659600567067830786882912 GT 1 -143870.7473243024466811075573649459569004 1.9476254433235421377550219662806416 0.0099865770749469826636439726706718 1.0100367774352626461969159197135656 GT 1 -143703622107790623.2272976962553333549675486961059991 1.5299389804999619865649619207481108 0.0986676014202475264994045370175243 1.1038811675666067895956521580379147 GT 1 -32107720738737861445283632018.6516108987434592461932274407401985 0.4672282296163210120515182950135993 0.0812703242470423104148970762215768 1.0847633503292112803265345527412963 GT 1 -56701.0422452732862789448991711719427241 2.5311404743660705831484420036111615 0.0654161005392075096519893922183454 1.0676538760621548152382761659793418 GT 1 -551308419948610315519501702449361.3986077953955277469439331773687676 0.8906852087669743966896010982414191 0.0958225010352356890227988484893103 1.1007295894514372876305341792357136 GT 1 -3947829755440437888225952630693459049843.0172383427374669557743862585282482 0.2177557522532806551011836183694234 0.0935253907788931952972635470894642 1.0981922588638928479878339569518349 GT 1 -513517338517593.2139002795025084229288733121437898 1.1978109686322938171878645707561419 0.0593565901131946305087519613632330 1.0611911592637416115367134259533792 GT 1 -227669519586389229280452053243.6299936693744898717805824511037751 0.8426864729347022789931100144820193 0.0501471795289415236421420189098648 1.0514482322097334755506176991924649 GT 1 -6558495988390447779274.4173371705783297100332176963284997 1.5671618093405389798708893308177016 0.0337437643888480914724442601181102 1.0343262256874584986113561876752832 GT 1 -50047946478062286451341281579.5525090690692806032892664587081555 0.2429066407305800143173139678616075 0.0593792838124907340479868754446326 1.0612152852745262426869970607215953 GT 1 -245397537117486.0625506429531273588315947216015406 0.0369497075068333521266375506630712 0.0920481748250668323044032901826191 1.0965639577631049786126503785920073 GT 1 -35895288931457671142916589515149879.4021451729884005431512139963270109 0.0380422910730226180818382522518602 0.0178999435443361675503851780160249 1.0180620853337712754600409702019507 GT 1 -3600724602.2671978166078810064624502767174786 0.4831849134047641043851541132313180 0.0107404807972118731062344153080177 1.0107985761166655893926483761886427 GT 1 -186792424497525176996.2299626079906954686441569026595644 0.0504029777230845525793180502597703 0.0631665926487885931981162629949697 1.0652498061995330332143562544494531 GT 1 -107156363484203985344046728525591030.8022794002326081361934622203208355 0.9648745666732872926063443853399266 0.0038618501324466919464986882992515 1.0038693263298458967034571606605546 GT 1 -2.3837121027915639008132601572075066 0.0924274143293152682294156992057270 0.0669115607068390988373095251407512 1.0692552923879176771569450233283057 GT 1 -659194011880.9833856775608288209038177136140001 1.1411039953450917329162891838084373 0.0868324717432236219973739664524297 1.0908359231532109879975352950266415 GT 1 -17038505777543499108647.9123162825128045170188253357359275 2.4951517952089699021124132436704892 0.0700744690050032883550465577492703 1.0726507702398735170209360113793199 GT 1 -696017655771591843067552127896012940.5733629089967243408247498645866252 0.3778951975810929683718196640885569 0.0901589755531336036867784688517478 1.0944853931428229596626353378501427 GT 1 -13978448326953521394644023002789918244.6456377029223115802715971831614233 0.4826781071956543667084322288943166 0.0890961138693335507772737603624575 1.0933178909865854713798202278330388 GT 1 -283926070696406053620492444.7751907126348237236624020561549093 0.0211859646110608966412600034398310 0.0781737498165395067229716337128191 1.0813985220091342899309170866449730 GT 1 -1.1417669592602235580303219510143965 1.5943256140678327147637663847484886 0.0735354064027797012244503576263292 1.0763794492085074714114390966289450 GT 1 -679377203273.3365598608473318131683580868984316 1.9952359582250386929884914669131894 0.0294811596702587019957542597717905 1.0299244635478584263241679546878884 GT 1 -146504124874171792430456.3290710657095536080199382081781574 0.9173789632307110172824930595521294 0.0166428390761286261586176220164456 1.0167828871619532409437964636932171 GT 1 -65230896854280385334664431062986103205357.2757078110540535368951348197730616 0.2877018579773095482565492930065793 0.0002550236034203794731620570687133 1.0002550561274692478550096488365101 GT 1 -18880802789220340528750272.6425385611662284073906922488686534 0.9865268235595835132954737688840453 0.0950890973643446789343193966058437 1.0999187902550904281382378795345601 GT 1 -38305914129238532239227495970.1215165229731509577668197166063778 0.9712295642775127549637275108934297 0.0790803829481892732742293719851304 1.0823825244382536026182236698516705 GT 1 -11242846.2762542762632261338329372180315961 0.8440271351561690171526730766834092 0.0925451493894200453512446418780308 1.0971114654740731502358425491765183 GT 1 -243097890.8748944167208446252879324201230593 1.2119600012351335908493642224791843 0.0979981630285195242397400952115044 1.1031387223678394116444448929921269 GT 1 -1355207677015685322896383479688666782925.0946899437105106502696149707840820 1.4523094496361291462692779652292094 0.0356478857033154436903423398438918 1.0362987872709297610980527032013367 GT 1 -671228693306183033730882376324.4469393934379188144860833954295699 0.1889144134706874328313471968752015 0.0029396085084365704652590171621852 1.0029439376435845786042332204556320 GT 1 -768646328707886076.4941022347595919391135518942031744 0.1931095667711034060847154377464567 0.0633607494422023944778606270257526 1.0654570756179462079671076974020604 GT 1 -39966799891329533359.6165355920684809072543389030765886 2.7066975358229129150590029367376722 0.0531773399176252209629170116885318 1.0546434682928643465184786832801224 GT 1 -487052305730412742643154851270052.0480574902304460941263730898300025 0.7444544929869061453979790528734796 0.0385795634040953773317715860733761 1.0393434666274399237707025553238742 GT 1 -12660064.9041181749232794883562595270140551 1.4634650414686791582666004824634199 0.0752759809381707008595978611152851 1.0782599437582419559061732186402831 GT 1 -8933456738473.9047482628446797546508420851982757 2.6382609401631431426523660945283760 0.0604834295177138392600243247123555 1.0623898227298341955554011853416726 GT 1 -5808214674774002220436630.2490109987266168794572218574433889 1.6289599531456011748152407413377884 0.0905749370249404428945405068550794 1.0949426780687952284618664716735224 GT 1 -402035642165676573353178019359341363838.8060307757828384406689206753917594 0.0396039590843990848573158882149874 0.0462211613844360743452169698324058 1.0473234597600627483627463277132727 GT 1 -37784066662682099429.4179929432143498994744715506362387 0.5572132631578774507454619103817276 0.0445474029570489909196292413185189 1.0455701271625452375728770574562296 GT 1 -102519.0020527749984393339465027472616242 1.9164765024489938835688532726553594 0.0628040377531277588942592935631111 1.0648628806731077928529926797471827 GT 1 -145517752918542204823718095466358991225.7922879195811130441977217620665987 0.9310780743610129664733753771763131 0.0125714658419905961301727883440676 1.0126511552986310149044602045875519 GT 1 -26783870685914498763032.8391878419317471097626868682803744 0.6728766559029106953828873013451072 0.0194555507157210897944430465389687 1.0196473010899549915907919211464796 GT 1 -6910782073145223549.9980122981241481366284893751849712 0.8728822171380719502973337199163403 0.0817463183532068663287941645789623 1.0852815848737978494863735512003264 GT 1 -4291602452.8147277498892358530028920186271004 0.1098182244535828195977562482451629 0.0013853850642220079787236224495519 1.0013863455973514216239574642447177 GT 1 -20861411644678512504.0782479360007890978565310805437261 0.4434177744627731310828152707333571 0.0393319326607176529492467166060507 1.0401263330703824936234672346103844 GT 1 -435792463934484945974443921.4999949858698426936225620146459701 6.4508116477149268653558963530005601 0.0210998619640049963555477199272104 1.0213256457034282102017070579488663 LT 1 -76923871838279362.5599616221525498771680000575697746 0.8373880700208764466676388661179150 0.0382200910326590139223345240288447 1.0389696393489123238776381214057973 GT 1 -2.9272998470880426984763156617431005 0.6369553625179582070698890068760845 0.0591868146798954407403545205237658 1.0610106869273693535641882109862840 GT 1 -22179111954950877026936542277718742820002954.6218124345413815876333248246104428 0.5671649687553066133409918941561093 0.0238987280123086011333826123868137 1.0241889356695071414289868737068597 GT 1 -950497277090172822053.9855599180645582854414099205610758 0.1224750497864670376864374646627153 0.0042974050336420104441917802423890 1.0043066654185930295143132891296627 GT 1 -228340503842029915915346.5691766070241958599323353253161212 1.7575048325399915564867644669321365 0.0345992790530981524642690989128731 1.0352120089703367661771751909892891 GT 1 -3471853057066770076199487710030284.7898094198001027682534290421157603 0.0740517134347616500348403823018286 0.0483907266345494033192093381528987 1.0496007555761735511600821432151525 GT 1 -10855108938738788928566606869.8164540902940384587456571147387173 1.7133312324298972304362208383776744 0.0954290617524916473611912525957535 1.1002945490877749690723187212634174 GT 1 -102645985508101.8021472209209472180595725710645935 0.3883225059172085581352949744779221 0.0156626182063946576559602467343472 1.0157865730191450181706972604005621 GT 1 -638984263918666634839488185417.3138844446083263113523832697843507 0.1520442853145669831057001552922398 0.0195541635669030913699118453281855 1.0197478756333205147715847827246238 GT 1 -1526519811204475.3208904648926315599231566641735669 0.9783515934962841877312768212174342 0.0913344426298352379916058378339977 1.0957781761903708202069026899410257 GT 1 -1612243041320137861874138792848791.3828081515253712118515981533304831 0.5488088546568067954886735808782354 0.0821725687564510878057112869694114 1.0857458894275664626192768459946544 GT 1 -11.7741273676079491028130688963078967 0.4981339654654587966038289181630738 0.0169441407361724161335112790194139 1.0170893351556437789800275039264660 GT 1 -13994849890562207729443392123190184782.2809872303086784999720624543454066 0.8634801994052461854377717998041415 0.0551298811062544113977321071466282 1.0567078012582598797331852154691883 GT 1 -582645.9865087042449330629490803562704065 0.2221194535295150447011340622129003 0.0524247699271753190868295383951012 1.0538489466837028426051067405543339 GT 1 -30937331056942562988.2485999958004142031914840094515173 0.3612459611707881711510085182686335 0.0420164795324495472861256775323268 1.0429247031764036190766146483022677 GT 1 -180482614209676.4375902610597249667632970654839292 2.3527744458990426543245052870438624 0.0463613812404867081031581594839601 1.0474704856308400760762914758771688 GT 1 -2470351956016049436125828901057073850687001.5751123007608747554275872240828853 1.5132629412611628640961320333986715 0.0155234154532232539911086484580967 1.0156451652926830684314763372880412 GT 1 -1005952769580861773004536.4488059845747948332511671977718818 1.4347724566276369933326272212223837 0.0501047224840231315802105321815551 1.0514035346574943676388515298694441 GT 1 -7007819222888343834973932478028.5230378616171809396163495615950815 0.0321107254632589952158949059970372 0.0418302550868175629669700910052435 1.0427303299500205055434267878164462 GT 1 -13181585166458205486151476898935961.4574113616002722107850813627422565 0.0278795557490467486649422478658487 0.0050076547583197997095894467474666 1.0050202350775792947362162421327099 GT 1 -20129017926365079680939332089629802988.1597489828833274731024939560516838 0.7160287477635381200667616297146217 0.0596796048824042242080265654351607 1.0615346159230622195099593231716418 GT 1 -88.8410286560594350854834525741349983 0.4924595537694590097905986293160992 0.0103330937872843622292976372926630 1.0103868508393128280775878798416084 GT 1 -227934016858734608421455802.3541029944036193459381181408469202 1.3977198087396485667190851340136948 0.0540017161007161884127968343525811 1.0555145239918578713896106606110746 GT 1 -8997271996031568677743374645429377991.4872722364334775741279845425897710 3.7866468946350479377893154039701675 0.0099206770264585546338304890740316 1.0099702148475765295859402185486848 GT 1 -43447369887934096358484900243749663422.9337278177456205222198626166373255 1.0952106952466116284893991936062599 0.0383977626213750339434506659920583 1.0391543884790411655312576387832714 GT 1 -1083768333261148485195522225881296755494593.1182820439475048129845474273775048 0.9597947334871139171684024354673125 0.0739342739036810711314499006441543 1.0768100683490686347198642862188768 GT 1 -330307618090732.3411898053847338006989290107606299 5.2081900696902715391577792258959201 0.0572030709714755177299514424032419 1.0589043652138362773578913117059029 LT 1 -4693995694513.2899800951306301658013550218074447 0.0078797097217437399548483340380532 0.0358255506193158123130733148934093 1.0364830366557701791366980697833552 GT 1 -60456572843262123311701376886540546.7039919547140016145298403869222458 0.1373274003576848176811554118006418 0.0865900995929088467360606653532983 1.0905705392193751645395133286809582 GT 1 -1227111749911840293279896934129849451.6376529639166607181728993055912734 0.7321080704719200825058623491809028 0.0183305417288260714134155548357217 1.0185006278288673324045619509552537 GT 1 -52666.6443577160337546292698713269690960 0.4338478106208858914394163138324004 0.0423085085342356875146547727204223 1.0432295868359274008476267517228135 GT 1 -10328312.7423614423342194732281891261073445 0.3462221284214758210687176659722831 0.0485842705738595567898594203215621 1.0498041621942616485191027734387786 GT 1 -14845223601532594159771068034454911692180.4570867478445237373851581726733457 0.0354681485883240355418247507970900 0.0125854411257200074705015858499431 1.0126653086091182659835453505545661 GT 1 -3.2865170983773882575834723343487516 2.7227258804229864759082193927123422 0.0668520557408519460373434351288384 1.0715852557514200719033552980819365 LT 2 -367269701689216026652540219.3389724208155004954026849305554961 0.1214953118620966751386707548399712 0.0968439453060376516690048182354259 1.1018599224522145072016343430914049 GT 1 -22797040835712238612.3191569315521696520489585548284308 0.3725582109526807674589709337851483 0.0764775849124224735719604026839832 1.0795602077504724027338356855978099 GT 1 -729262797539876588617966146977387931.9507258548667477355862183335373059 2.4440344514468212394676468043924968 0.0980160821687818737366502591759754 1.1084794357280226859056419305459669 LT 2 -8265417480476250622880495463473766013999.7185405463869762854356719959502359 0.0745647608009356523557002658876510 0.0866578842156068986108674905488208 1.0906447524920343446524545370947416 GT 1 -10420631871.2721868022106159473590888888666511 0.2158006697641780440619410449046885 0.0069805817412676450967242707432797 1.0070050599834182363469790676084099 GT 1 -1734045339591.8643028571097997488515822284969501 0.0332708569991266488855908233825717 0.0765075822116446684021006675667038 1.0795926896761081859211297678766963 GT 1 -2175.9522855295600137017197650926842347 0.3568171071802781823304028743780410 0.0003376724487406448429341718196100 1.0003377294729193214187976360173558 GT 1 -2386812846925031029368703318744.5874032478246961869941031337210525 3.4001139118291155238098995780720052 0.0069860540421278318358255343123699 1.0070105707678378718648392518616408 GT 1 -53178410986239664147906370988832364065.5137868562513254632686982581769698 0.7605817611604933869959960508419897 0.0700366528193015779745419213715254 1.0726101052451518815472220911524633 GT 1 -35144575372818985124465.8475401118638475863474605935059669 1.2896819088599771338915316077631889 0.0894077916103092044463252149349337 1.0936601126855011515492671814613292 GT 1 -2679686428433528943326661631722537341436.0554944005665535693153747710108468 3.9907815608200740277508877718517352 0.0752202518035440725115564295570256 1.0781996798802979735038789266852622 LT 1 -24144069586125469458126111118461.2351992336408789513486017415589953 1.8839261318606068710627012602888554 0.0184883473185125140481022042164271 1.0186613930167004049098287554047664 GT 1 -1890193418.4458706827858309347520966729038576 0.2730671385007998858853199339048632 0.0019891314898721509928307145562181 1.0019911124392625951552934154552127 GT 1 -26917192330145530911765.0635201834452934276841460687779729 1.1159804487873905356041405294208991 0.0678588479620083519209870142437014 1.0702710250795025712812917414564199 GT 1 -231543781014.2962945907299250754194504088670311 0.3255010311677726150513864056228316 0.0198574161425885145550227598688383 1.0200572241686534331031228787470296 GT 1 -12889901544380732037064980112.2842691408618237661747124932715806 0.0153306664709559261058743247602723 0.0097500460461496954795896330107036 1.0097978889796321220713951216625285 GT 1 -143977.9980395828669311295385971112710792 2.1636688286197460257242378474137876 0.0762781770705994259400531729338364 1.0793443101030539155941236398429243 GT 1 -460617329918723547966750597528.3555326458955759096903392554576303 1.3034849838838031058843621032515663 0.0901574951754263972655412280219492 1.0944837660712103485868222057995008 GT 1 -100758870128682000969058126815.0154188858249260748978625812424555 0.9093065206172549404818548172307357 0.0555258434087755730055095430941594 1.0571269544146815387509834182230219 GT 1 -1526129171885337481.2268871954221551673556356081814117 0.2763745172733723663752466264084413 0.0379723021454799462123040447234203 1.0387120367823452130618955493475263 GT 1 -1270789046626126846506.9991479713465690675125646337177946 0.2803307072780426427314985412027200 0.0442925588813930155447187564099764 1.0453034367001268422041222189271485 GT 1 -20884966395939681010329986.1345033008943551933602844230818713 0.3674159172158627104737638004675178 0.0227629439948301649579669522771299 1.0230260197227895539772505062766481 GT 1 -14607903624857838601110873833673351100575506.3433669531265614334739187927091676 0.7235688064402167146264067857669547 0.0588438393016004777832624501367977 1.0606462013072208866906874074844534 GT 1 -17842644.6655091993939750899110406597405808 0.3793339108523798847112035132583647 0.0779997098313531921931840120009014 1.0812097407090560795995815170828232 GT 1 -150230229971975425894595084357037.7351919696842089066830740414846333 0.4361322560653451197950374585264835 0.0645385071260954017312715942720214 1.0667152961954474308389106148505211 GT 1 -149313.0130128810999682064682332816902036 0.1090551197351758949186918744617787 0.0249084583858921566781633355897025 1.0252239235565882783578966601755165 GT 1 -37162299479440656035.8801244101909467775561303900748489 0.8880614236236616955526577205768865 0.0194229625276406164159507399289698 1.0196140668530109374875979167817848 GT 1 -46388174138929.4842937777511859772088052475124599 1.1326373817524906947229022471192577 0.0497279080484474569341370465559399 1.0510069228152220673110508139049678 GT 1 -566475021695814324.3369118156889328849251885867360624 1.9337741142814739838755747268213066 0.0608357718326989704345752877516718 1.0627649181897649213646437267761445 GT 1 -8162602161259433623300641841541.8493905880465349043027639600065934 2.4386787585418057553065399841558804 0.0732378783361504571771033149964470 1.0760583572808599758369758823477148 GT 1 -1039830693697168361290.1716654203863180920791269879251157 0.8977173196330868999751209399941704 0.0697384613956755313322441423934038 1.0722895080652530850334742829254932 GT 1 -7463370.9039159106382710773349273264945028 0.5537228630155905344545495174663048 0.0286075272081973335588313514130959 1.0290246979250952323437972492718152 GT 1 -787209626.9874451735905565257232827354907656 0.4511600774885408027054768078499427 0.0664964828047693036464417602846070 1.0688105482568088575658220072406128 GT 1 -387045498575052707019886373.6364377167768989664722600403850570 0.6242827073055396789876673855494697 0.0469391069106071148865478976688101 1.0480764811578857298762917094881752 GT 1 -1580785430158.1963385731845600535207407847925640 1.0792534279671520923971115834506564 0.0050931862048828906055428877690063 1.0051062006866679138573514119827028 GT 1 -792453965895017890525556628521.9937953354821453020498387643611248 0.8973667025591872778194651365496257 0.0749527579858204426254427784887849 1.0779104703261032310175672254393364 GT 1 -26980966284683964043869994032688391.7025470272822016078937046998871519 1.1026567870093396118530384597380906 0.0925792354724128448547890350380318 1.0971490284703605981918346250200581 GT 1 -480267218091936748452649322539352554430.8766671642227298277748098331997177 2.3611006991141264755378394719344860 0.0076859255307869753963318408235564 1.0077156144789521524834420552769858 GT 1 -145358579897221423548789497444549959189243.1493605029720885005539465257732679 0.0622652562502815807675006395536899 0.0874408935143764479023303380404914 1.0915024213924300545939431663954932 GT 1 -13600740550439898525402664997453.3850390150389571598396688448762749 0.1857535541448125573083270866433235 0.0902634937326328991799445613521863 1.0946002749523089455367952312990213 GT 1 -25.5806308010152501951155979209442278 0.9811395379483539374633803621921400 0.0562503537058482647643891433788861 1.0578943532066266162797717584670622 GT 1 -254843992455393874821457069.7836996560683216816730363362787907 1.6356061847434418911095693226780138 0.0670937548681873330063319530199635 1.0694505707168946498498582071890596 GT 1 -4738967397315.2793052795549891946604739062140756 1.8260455576429241025463417248410051 0.0417894461726691451659729088570296 1.0426877403719692108004223563905032 GT 1 -11930973453075628089325306079.0318270739465549479302498215122730 2.3662006113613651135553000608640462 0.0931288240732876930289219864965517 1.1025328796223136972907928387920418 GT 2 -5480.3791767987032586950622179379094852 0.3684340037286738008959927672099363 0.0305543960581478829470697421321359 1.0310309132052725432860899837454281 GT 1 -20638578011735434511786499661348463966256361.3792553668608651435079065754254868 1.4499039899593997055359270192526705 0.0539499614073832458278992758518047 1.0554598164109461029264242396736626 GT 1 -48915257590232446330159404989967883.3995459409175131533950284124708621 0.2588116551727711954518742383442668 0.0601200874665341141286949803670944 1.0620031645031214716455729242252112 GT 1 -207889626505.2396093638419402783170217632147021 0.0670485852468487595754672887489897 0.0879839316293154896659296977764280 1.0920976702355104356907169629030826 GT 1 -10198296383670430391028001527409287670.1132370722088504766099851217516523 0.2658026365108804914392098130494750 0.0768266871268837873129013804174073 1.0799382908459538821509349133920041 GT 1 -541238950375118534291928948400311817331890.8361163531206438784368044189887179 0.7386969497610399804999367052870362 0.0331041530205165898713693603606967 1.0336644966932098397373939516636471 GT 1 -3875760688410968268082767124607010326148265.6632996977913638093988527604975898 0.6964035906809674548906753634346735 0.0959385213108822242003497368951623 1.1008579135028923406344986921447539 GT 1 -933397801.6943386577900184095731295895663574 0.1040592796984292264507019683869726 0.0701680338327674413152825338014720 1.0727513907003215733992414695123574 GT 1 -45590115239066480630142953696100.4365146561598929724801685713339566 0.7311395109923263682070021201958844 0.0733706424608485169943214753702192 1.0762016234244835942561911419430559 GT 1 -975557.7392869854137799078964085575095832 1.4412718848905027117772072483416540 0.0352580468568625018578890026430022 1.0358946194718166300765877413038621 GT 1 -20041054604210599856579.0917305859842336319252620340671305 1.5392489825049368641983631240335586 0.0761469593331934338899548212309952 1.0792022668871474083998025591352301 GT 1 -140755936466995516864222591958218.1032312231207730188031056238467679 0.2801846693070463533901976153282061 0.0019868849998094024502744058662090 1.0019888614742628673573068627598549 GT 1 -1395838830562769600476326099181.8824353100520538517595601994535710 0.0853493949165533989038637518333507 0.0040427411280241061039813801652162 1.0040509350974591361524797501835222 GT 1 -1694100057853899311001203781.3606142257897170604067641891594623 0.0546752528082012735442951529975442 0.0891856211644112737104714726505489 1.0934161578776531824650752389432883 GT 1 -20074526753760687600037.1263100249139515422368202559087026 0.1397032840844831211195394958085372 0.0912249948765157950783898426380875 1.0956577345586493633766660457121854 GT 1 -133603196725116156432.2494810663736688031167308355246299 0.4010263719746290375158466933817528 0.0267279585779145823327531035330202 1.0270916455123779570541947028533193 GT 1 -14623991290245607886778961051375.8039425122091268619153812203377389 2.0914139798042487841694759042874160 0.0974821033755457829476163549112586 1.1025667589169170878492931710986161 GT 1 -11015826047313108324406200973906253.6949182060241044993962665481840143 0.2505416374058791414823900612067771 0.0497305066596603783152383133783977 1.0510096574159622283280623845702193 GT 1 -511.0350441188135112619782536293474203 0.9528131953155686945342062894338276 0.0945637945479259908590810100358861 1.0993384564298092521922660827576542 GT 1 -777879561173.6835405053765069199722957378390807 0.0000899658439761226868083378700408 0.0954019235994848161422930635619044 1.1002645484048214790246356561494129 GT 1 -145247830555509560931.8488144302880568951380595217108765 0.1780806775028631363363662918268582 0.0776926043276392577466696973894218 1.0808767100451272442715482083805918 GT 1 -154227249764665652282111344936065562.1601216223156595591422760731432462 0.0918440012598250308787036032369751 0.0947526305673771356055832873652234 1.0995470362421575112396329316136942 GT 1 -9908409.4975793460610323952833696453579515 0.2587584284596632261901347525226822 0.0626876456873966901602947197045720 1.0647386965712263158362579819964636 GT 1 -2.0436750781993373393182123537383684 2.1829323188488116398098337416201322 0.0588432481017401695655840702458350 1.0606455731440113035675690698190271 GT 1 -7149.3189068207767283795278683919084975 0.5332790633720333096236075841673456 0.0449299525304864325243780426280591 1.0459705930556334736012722122055475 GT 1 -18540293608.2519104296450457649814959511408176 0.2569776715104180915247068810282020 0.0558435750880654097053872059433655 1.0574634222082237816882038311168979 GT 1 -2337490716948133439187.6351440631719682591536460389570059 1.9302926942143368451756693235258702 0.0690925333547723071065803629675850 1.0715953980032278231339895525709875 GT 1 -115983814699412085265375340533.9208977503673193455931300318256754 0.4148849441596714171259265783463135 0.0815811586853716592857342359640728 1.0851017382585568508719094359085282 GT 1 -97.6154725055476285357219338688295425 1.6209635538634573851111929872474030 0.0147395238624604261268814981590580 1.0148492299896489823702803746513920 GT 1 -7110527377770157386184699659674522667338563.5316496744176187957204487794428172 0.7843146162630399638492924380733840 0.0221834603121204197360363134019401 1.0224332137752119896574319026733482 GT 1 -75604890087642878.3166108819089616483615310962397184 0.4211756935104477982876427998806281 0.0136629698048655482360225042166003 1.0137571671714229751236546062988903 GT 1 -500708761356.5196317928196657263694260934598795 0.2105489514300667038626200808991701 0.0789676088611508577151070838395738 1.0822600738133970889490370479127316 GT 1 -9536029794261211287829897495837576.1661345266834512948897795245650933 1.7428633497096619249237903579139784 0.0655229823331343686309946887037007 1.0677682455758115640414641839116157 GT 1 -858945493491550199.5878137743925534207376860906364719 0.0582096409603667816829707315370544 0.0257920736923897474899405879739300 1.0261305214206521388362348706221763 GT 1 -883238441.0703959039484883289859948085605620 0.0440565882108943050848724127452096 0.0076416047476642554798681374977932 1.0076709514085400298081199182100352 GT 1 -1749195192238722996253102845.9841772408849058918378176664574107 2.0368479976669151019605987103790220 0.0882167834769132786629570020950818 1.0923530183440349599851414257698032 GT 1 -4602.8599764478873018143747507109769734 2.2279894426732156090695616717812376 0.0527371859867589400778349012539357 1.0541787015811091524623817056594785 GT 1 -33083941981827123950854080820838685586.5976520105212056215120820927713180 1.2762421472267337055234205996096641 0.0641079083794542573913524959262361 1.0662550958807570598640994618564632 GT 1 -5702206617500080584191047830954826689.6208049834063383708497340005993109 0.4392800678966247222598244851607972 0.0694505981590870172377497919280347 1.0719801125940334679900905884943807 GT 1 -61298.4000692754069894410002775790079961 0.7003252724339229448003141579876917 0.0775892911659363323906065231715961 1.0807647003439609152463919811815778 GT 1 -15014175738741842451747803696775283040.3788429132218804749947726671280005 0.6288305106468898405053743416154718 0.0158668449907360095410912003705957 1.0159940709534608715911981682334734 GT 1 -1483839043626448426409175325462694864472.4719015149115674471225047853670271 0.7374324087726116042582689278534661 0.0374497832624868051371992330715929 1.0381690409473936444486536096919922 GT 1 -4256030489380558759642351.1374155124824850280299495075566207 0.2181253805053517156621973348878107 0.0560224944380710145270464834018002 1.0576529419744367993725836881099806 GT 1 -39034939679094529284760714241.5218622178525525415103868184002155 1.1926879395700866433313418051741497 0.0557965155391622166290392965159745 1.0574135804924794920049906092668218 GT 1 -13340.3512570407704792756324530064710410 0.1084914832794592427631645974597134 0.0112691977924296561591935584236765 1.0113331763137312197489223508904047 GT 1 -11123815463557924518340.0126918167555086526109170156233089 1.4561568216985018820030764467313068 0.0987820884283839892782847399576708 1.1040081953756456355096482537675137 GT 1 -22834229628456197983688136275583.1447980869366620301755148113862640 1.6761033876039182768712443409668361 0.0673069521471968510194523728836383 1.0696791270641652632784908365360805 GT 1 -636534879076644460064563227930780573754.2329962858182864258090938516005048 0.3963616142522630862355096038455985 0.0812246146480593261642663477922802 1.0847135985217632753308593720596993 GT 1 -412037191957795765760237213733709421.2112323729808599863972224586667049 0.6211226488374320079961107786561515 0.0435228891867815170662638856033350 1.0444984205363895514673195859433832 GT 1 -199508149711015613896038911786667974712363.7029819412907404458277084803892697 1.2903771662570956911191453266572758 0.0234995844252456895838156804439601 1.0237801030897087208719312691148347 GT 1 -458855474399601793673029604404996150502113.6697709976685502233227968660488804 0.3090149830035696915107726404557023 0.0576070863788562923508340696460119 1.0593329856152683647793416586304874 GT 1 -2005521565907652683426435790844908.6901380114153373871736653538496735 0.9873384998672410980360329900611189 0.0673708822824415836679410878761683 1.0697476730091497493466919759157828 GT 1 -1094316142941451895340999134957352162784967.0766402559876996490584752973592189 0.0564896554217290800723498361666001 0.0065569336295277465931765878573735 1.0065785247516271190973559034652591 GT 1 -5761420246659.4133722353955925977649904533468121 0.3913881016291837071390206739259622 0.0436985822748476575582583474172639 1.0446821251168612831583454549077127 GT 1 -509260291243726.6422090962599873086603308725774799 4.6799581561947591968309606191515452 0.0528768499793920074150276644415634 1.0543261519904108709802720202336534 LT 1 -29755580049444650194380596.3886554094154158998087016854877935 0.4683044879318997553133831708032813 0.0998726084260653741466960250312959 1.1052189794812828114875553058949457 GT 1 -5627527041364817411292.5179771954533455736701572627123354 0.4570101147291492669311899460506496 0.0068565399853189044623656421081259 1.0068801540580614591966598320240461 GT 1 -12169.8775556280385133322745714719900654 0.5683355662706190892609433364550219 0.0676124233049371495114798876393259 1.0700066959171694670162896624468634 GT 1 -16765947326817540252533.4311716263672730835671502321083251 0.4466592191451246661583920651871143 0.0083895970881474346796069914699105 1.0084249878395724858437146588020791 GT 1 -3810549142438111940133371174357612120.6368152227402241685840130761514460 0.0942396578171329233159555326397246 0.0552165374552246953944189296406650 1.0567995179092717139065878336334755 GT 1 -881196149970299810314574105329.7690579096444503424958917160789484 1.4714766934162924686852139479430839 0.0850255091165676468632155015920322 1.0888590929111580743032178119507303 GT 1 -61.0944158988535185769206818869220206 1.6914980631588164112831539235061959 0.0709617011155684111469448832615718 1.0736053150929488956838447700712957 GT 1 -175348.8381350507931176374263156002095866 0.1401544821365804937316434997415685 0.0382913116051216945276433835626883 1.0390436928916189419235647028939935 GT 1 -108380806548.2766214852517909753596557962894844 0.0536933965275108684926449353223688 0.0767386997643252416635730867587322 1.0798429856973171769703328603303157 GT 1 -195597383447047653938.3670813198446958109266453261338725 0.7743130497494591364829260497092146 0.0880129829888801012760048226974919 1.0921295247425558413428561123257016 GT 1 -39508709086022765671727914344084303315.7612149134923721024442009504026436 0.3521938282189530684971060403650702 0.0526933174415303469011193382276443 1.0541323918043331462446450497892600 GT 1 -143369188451937841460942907821668.8134948392985641364251980262989559 0.2287694203152812397427351665668224 0.0720514803938259261472196487236241 1.0747790222970193387533269502616415 GT 1 -522468706459949661754.4489678948124227818394918705309482 0.1934629223813305002003886101753274 0.0133782943673110279348120224269370 1.0134685899859395227750553112089285 GT 1 -96694251387915830042202668.4480169598257206319976594200320702 2.6168120606034281334739031443743131 0.0484823378316882941871114013892586 1.0496970299712222001071415361833475 GT 1 -110421140879166180847143163787.5899162195005867528444192850445912 0.1859247313211133585903340832108952 0.0938858258825434733513965432629570 1.0985899608818178879107343762002193 GT 1 -644314743630879145.9353042883887835412190480682082859 1.1038755530951878956667424223216004 0.0675433879893254019361456841621313 1.0699326572215386042555472098931370 GT 1 -254787.7649704045034602274217332227005343 1.6506271085019731229604533308762115 0.0255708317440966143892125180501243 1.0259034478933534734494545411796970 GT 1 -1149.7405031414512789556843474555031305 1.4778715159038422987756037424189366 0.0288059077196655116397006523816876 1.0292289416028027835517175182831470 GT 1 -8909483092561548395259464119798313.2971463265305495808421863955091214 0.0939492652836728105078834333943899 0.0713942864039275633998685840375526 1.0740710505011026284660359599455454 GT 1 -9405.4683012102675832382999142762942924 0.4256608350383399475336214764803316 0.0255161709368122361905188780558953 1.0258473542582102919316870787473644 GT 1 -1949.7399112327426335528437524750377921 2.1964896386520699643603711399733431 0.0181926908422783077346224111375115 1.0183602127355379947796066419892968 GT 1 -55284361818.0458834531743510484626126499360702 0.8285105251688553212130869637317705 0.0704139667349812850445491478756170 1.0730159174540940119813071808677055 GT 1 -40377131265694.6928346301218243086925319122190923 5.0367078827205281679456457923120579 0.0809552334382214695483802732038358 1.0844204455584697357176389542695075 LT 1 -607067454233978849.9600259038926619391436299965040924 1.3691105614347794594956334375728607 0.0108692913122322446440534719000429 1.0109287936171227469055659748798589 GT 1 -438505180.5114304393842583573902484755832128 0.3116503611092526343965476614989910 0.0681294328406364634161154993239641 1.0705613503792225014848705888166440 GT 1 -1189991974112297951338915893.4845894598166306536896696066433070 1.8111261587149895099289172268941695 0.0016043525112016079720413156052060 1.0016056408628562373280131521641922 GT 1 -7434941480434717869858046934962.9389490355884554787114842330257704 0.8270190332024156192290971294992611 0.0618325917342614352983143334588958 1.0638268722695847739928387125953138 GT 1 -15081892667081454973408268894138658567910.4309078817532336828540045168878879 0.0569302683785291800972368115406425 0.0636020763721753234923277735217543 1.0657147607665746443224570204958585 GT 1 -2334726238388641.6760247296561082847262215906880097 0.2899574886224406147954524784665046 0.0183751486465211957142337617563245 1.0185460687161394276380435547355057 GT 1 -1961955391579722573044590855561.1103143171292321346327271673758446 0.8261149562766752791185880428040042 0.0575144164193167397476589271871297 1.0592346557125698176994521135221318 GT 1 -2100122539282840615683759174524867580.9695808002397704695400981286124320 2.1492796857417729957979846748499352 0.0171409321514387750393600248559618 1.0172895385451289180128134232636150 GT 1 -14766522.9387070548302700480184963725419762 0.9210068630030060278761042735486983 0.0084144797454206525721624670534924 1.0084500813333457033238047036309448 GT 1 -2330803473097324245.4192795033696424484898457457107140 3.7364549104381527619223137626902609 0.0849361599659913008525993275419211 1.0887614456114946311888070374849605 LT 1 -319537832.4885654194039387810514838906178277 2.0594044793345644274607683296151503 0.0592667068548804291759794804142574 1.0610956087466785100592505655317004 GT 1 -5058268784810790.4544530900322949789035804211447902 0.3502287674314936960917173840522410 0.0029793921699388524609272613741523 1.0029838393943370251109630452664866 GT 1 -52346209825382385.2831637833862274943013069365694623 4.2521731549216397483676248425084057 0.0291763025605846537524724491832918 1.0296103952098408965582859115442310 LT 1 -11216987050939.2588898476567003982189185320291003 0.4338369078810168828018556507244791 0.0106499660434132362499079032083516 1.0107070828215713169484063686412828 GT 1 -59220369261591119108082967775697042.1087240324557429244679397969859520 0.2795415422544312236428320913800832 0.0216958391372677853430978961816854 1.0219346543715763162150134165877288 GT 1 -5676.8766433809335882633473490894006495 0.5971999494998973264120480632037972 0.0660217049834067913503056918180395 1.0683020797635823695578188526441199 GT 1 -1096612272168382734166626700.4577358330001528009673374472451473 0.1478312899772140498659413683782864 0.0795875966838419467647308317972448 1.0829334449054707622253520480867499 GT 1 -168132392324329.9979937352763264980537510458832520 0.7590878246183453292528027220442118 0.0543293754827298402044958694417373 1.0558609476010134202314198535014917 GT 1 -3741025874508636530564117758845.5894807157880029207132663703764537 1.8794866474979942948983511005120682 0.0831341057547999776675843178063082 1.0867940614277852191841901733257046 GT 1 -373740109745487450377773352168058560472423.0330671639095472442562539670814435 2.8737136201520190427266332238516367 0.0248661331478320131843029234826723 1.0251805180734240786847750071754762 GT 1 -2361339902346107945889248638027381218.6445757798598857160797965940113395 1.7087622110058153797312211052703171 0.0784152073678050293448820571620292 1.0816604902267897501002707400626731 GT 1 -8.2452855559217882763086445668504146 0.5405107824870103789949087656159839 0.0311478433396296093780880710523385 1.0316432518377440831132135703607800 GT 1 -3873574498173006402.9600870476331614864398151315625255 0.1579908275326442617467044547467843 0.0002819637351487726324475198900672 1.0002820034943966951609378290004752 GT 1 -63309875870180.8334958220873437118049830242364045 0.5414943978611514387231434755614781 0.0636860482287387844586058615019636 1.0658044401857344592796751710953463 GT 1 -888.0823923476714217496951017013014070 0.4344295118848865025359524444787438 0.0677667345813562996297067080842366 1.0701722108286047669855955140586973 GT 1 -19810718757909618991502021632862351.2561340228639287584900471394430683 0.3974013763739121127575223621814789 0.0133320328713148083312399101523247 1.0134217022971797091214642625555348 GT 1 -9529.6896966410632840939114475257092687 1.9000626432212141979225745251362440 0.0445288865944041100403715891117884 1.0455507476734068521562190278938809 GT 1 -206275264790852423766481805341151687166519.5668053411026991249784118187285954 1.3382094201904857669715421963587064 0.0182636405640571427754440759395044 1.0184324797525079090911798427843820 GT 1 -177816483243367997757918829335.7527927240019030989822536148424356 0.5627897640850224833498280911207132 0.0703092190071688126200945411295928 1.0729032416791690122227977698218163 GT 1 -137014039480661176241375646.5312960067830088801540505530818201 0.0067510561240992359174605848124612 0.0431172333324936154140365814247006 1.0440743959029264616747657645212459 GT 1 -227700019374117687625652379598599265589.0124556110872413368665276877336194 0.5622789183312075905325465704347871 0.0264971147229762376048729475716055 1.0268544903560685484776889659753566 GT 1 -541087166071411720.9412456539631170976712235861854962 1.5430563990847726394586059279875317 0.0136797384547155046193150773903821 1.0137741682490258321112313121371032 GT 1 -190383399836011605142757068460757.4618180861293498854620110384262815 1.3709979096183366392656367083949299 0.0531136656428716915993536105314798 1.0545762200778909874549286252158695 GT 1 -5368580401697582161219958592457254211344381.2610981267622361925014815313609861 0.0436176074731535620899694574878123 0.0812649696414064866094547253548475 1.0847575220750760807485462773543651 GT 1 -629347987999827.0925590070554603049953223825598879 0.4239652238198308103902070968259822 0.0831065533314040239503054699087920 1.0867640112213232336194302592552863 GT 1 -25987302886988080.7426900719241916322190433787679826 0.8273943363721316553377666394101991 0.0930472825598740627785709012949621 1.0976649609423629173085086607142383 GT 1 -7281190985746607707372002322504273725575054.4728839546726835894531286935727063 2.0459680254382805482068770799623797 0.0454342427973654486787009903904554 1.0464987464107053556192740894912643 GT 1 -151157783885260363976580214878832984865637.5624044512637578968922975094039301 0.6713175557624304989195429444552920 0.0247907980291698849458135630164857 1.0251032648763800746897684353244004 GT 1 -6631791374.6202311751324083291813304830542077 0.8318026881853560751229826482755550 0.0956294610807062496741970708536674 1.1005161143861154012488454261834114 GT 1 -7126588850905436290996588230023.7960782372885354658931672878680769 0.2788417709072700000007722412099174 0.0410031028028713618162641074885707 1.0418674395605245507622209571753861 GT 1 -88705830822437901.9382581374279510021453927486970412 2.2290258831133105735683199154451799 0.0498019543597793654479067173465876 1.0510848470192437170769513101818580 GT 1 -27181266467983431865093846969839282591117.1012453798186710078467642804949390 0.9425539043352334180417947736332683 0.0907151136631795607441798633908768 1.0950968275950236724588592788229143 GT 1 -44757708.7581181251626053785336378603306659 0.2573313162391385300561619729021351 0.0170427834935057296299482672512015 1.0171896831732961425700356328904342 GT 1 -216257554215753.8218045207495895702759163253206549 1.0979108544648342117548591391792351 0.0497490645348167731405417509727476 1.0510291866721340741302856000226618 GT 1 -287729955021880460942016571248.6026628872929421209266482863052565 2.6497807783462954022179577923319964 0.0658928870805362295807700096516024 1.0681641654021431184252817231193752 GT 1 -17920577807103592.1510218199403014388520841481048826 0.6789695904809232658574753667233635 0.0650631992042024103315437788083900 1.0672763447097089747343149197237872 GT 1 -571689435019631390014981174555271660628.3604060198952934513540510594337356 0.0011687176397039360461768581526612 0.0032230538997855568576846179549661 1.0032282591254972280733407271854934 GT 1 -6014184395233417.3501575228485862306476735382990723 0.2352129146595213223677165609991999 0.0199794540691123449753010298239828 1.0201817423016872806520652035286083 GT 1 -9827744.9576132876644007228774048290690450 1.5373379487485188356871575719003812 0.0543671725886779893040021564760566 1.0559009169733683838833076160824188 GT 1 -44284800044350248942221887020751812564339.8317976051873287702167729608736245 1.0150291239723185797902029725805468 0.0218117888894361900678478289459335 1.0220531825641367672824518901102529 GT 1 -1854572706267.7853672226433310510674894048297580 0.4391867551761269850884338954014908 0.0590558291413419150180211627733924 1.0608714707438003211420693527416173 GT 1 -71625325345235933410504.5213883689865950554719318687487454 0.9439363872585390867001058572357694 0.0226993582335102286122143823859498 1.0229609549645964920807049130216141 GT 1 -190.4338069196605145002123172640395183 1.2940221212428126291870357245155736 0.0359313944427851417434199948706822 1.0365928193134124157994943503297593 GT 1 -22728292991123332258489308539163530824.3036970821364263285048971906429697 0.2939968888249654724624088576027500 0.0451294429685142703417795345244937 1.0461794900635123170431318664148001 GT 1 -46234311480448866.8946919711983031200574674574469063 1.3473133186322646780388298356674476 0.0573342203414576206595503295864958 1.0590434815905106729277406919088534 GT 1 -2471206269.8513470899790966240661878600452611 1.2880041838005671099997512851255489 0.0995199303997734717507659126641546 1.1048272472038080563826620600990773 GT 1 -1998878706956510966.8598664009826753940234480327811935 1.1491797741738895597025930849445253 0.0063319723288683063809758452462201 1.0063521042940139861888983753282845 GT 1 -166559561.9763290871471084884752731040553814 0.6973624750975033499883131942826904 0.0426198869395800675241042889939202 1.0435547740585381781185848209477621 GT 1 -287019007937301276503605.5640178310286415309875597752578292 0.8651226727075118504475110129239064 0.0820773184194252319450527479226697 1.0856421167665207826906522870321653 GT 1 -315925010307771376691505548030152511.6960978684526753287928119114842456 0.6150208973446337644948982752763192 0.0216778763030461203692025334184922 1.0219162933443695168046258776459772 GT 1 -24958342862010651157040.9067798353684626013026882815757751 0.2438188317578842289184184952599215 0.0594119974120883440137404330817645 1.0612500646153557945828705911443825 GT 1 -1272671998610069196935724403631586009010026.3310704269561722307939148671220972 1.1150690756502709687578326065203874 0.0927140693300421752464264798892153 1.0972976297382506394849259957283367 GT 1 -14354.3935452417395209906930024997301329 0.0025636257039526280036812378094554 0.0581566650661242827149724108366120 1.0599163293475356151921763946821548 GT 1 -60576174636162411479694598738153.4623457800247845278014224979751760 3.9338914670177437253540830479356405 0.0208961231511275717197613872502382 1.0211175370253418490766295451006682 LT 1 -40648186548034603166141514274.8893879963857450535015175048816404 2.5515979148045739650379786191883992 0.0384480686942368746642318726006720 1.0392067046934065781153030352773832 GT 1 -199553562437052052045714772.0568742334266387589906611392762944 2.2169179390161109047485148013034100 0.0736887281143004061524475307847473 1.0765449540758009826175607703222719 GT 1 -13161246506780160555578533712462.4753945653679413878803149984911251 0.5047491509447297965218614730633584 0.0675457735744801535420221668366312 1.0699352156121121217753256791106431 GT 1 -5756135892743.0169978924491897882943853226999606 0.0390435865181938864824710004757624 0.0096031018745456438465572724384271 1.0096495089978909154627686140669094 GT 1 -3242711.8012374175508277226307829625585561 0.3231373021340733967265671758381540 0.0772977415748960690183208109852788 1.0804486767739788664530585023842347 GT 1 -14270735539017911688422363.8687223272243188325480798864029272 0.4206641279426501019871387580214241 0.0138781248222404532749043390424183 1.0139753263610944683167570458051366 GT 1 -11652043288260479533629721590.7994773303989917107619351672936725 2.2711189444562722255417512963840916 0.0795524271718858242623684670171776 1.0828952350335455059925164553543046 GT 1 -15259883773222.4473667384279762034309621295376955 0.9958729454059226478717494304135077 0.0472096086076783986833842704164759 1.0483603455927345821593491743826189 GT 1 -727994836254879114986450968773802988.6558657108635849042841517139538973 0.6515618535059118024726087984206337 0.0803462429333606698712933466926125 1.0837580307913904053846748852116266 GT 1 -12980.5444838585230898933164850372764511 0.0441412946441368493699908050739841 0.0874416934524321129827883003563563 1.0915032979804785305569213169823502 GT 1 -1543986551541421576095430852078485582899.2629059893897276328727718370169283 0.6303877782396801234894829820000360 0.0043791016263529946473873966472409 1.0043887179761308228857446550026539 GT 1 -23875511934387.8258081538545009656189242653023940 0.6295051185575157547351755102320216 0.0963711557844746611725392449269961 1.1013365734551761315222907396704013 GT 1 -24326400354575.9178091310727145743380862139029520 1.0550111371083549514696555492145663 0.0211264051508905073376230646388809 1.0213527613873719533198043364186621 GT 1 -2518206079882726372151823.4883270686472215632261423811752245 0.3159431268827604406727125206555781 0.0527160315882329206844218228922547 1.0541563696981246414556166961630076 GT 1 -2016131398648.2981287384157440805973793677838319 0.4095695717728991222272281234044344 0.0104978494235050186680996046756847 1.0105533405447132424049093742053911 GT 1 -1216742212648.7096235288476472113791757460859681 0.3007223548693261947086938259575468 0.0861872077423813007151293800042139 1.0901295509822279864638291065881699 GT 1 -10881477605416527737647686042145638.1725494565760988957100682959455692 0.3002640071162080303343795203917422 0.0762072024947534412263757059574017 1.0792674776113422103300902921536050 GT 1 -2.2816361393581023815756581502180245 0.7970885937189514050348509953755292 0.0662658987366376848603780960322213 1.0685635694395182400230655536476279 GT 1 -1119289314849409672973293685.0711986233299132842682627200918838 0.5645866900668080344206107188504734 0.0646789886741159515266388070790771 1.0668654809956251424795023906385751 GT 1 -2093396871167229159531643198958031038.5724946890086392755701752170276121 1.6530645799106135933100523795424953 0.0867755559047168658332348939739770 1.0907735971690993920429453852120377 GT 1 -662749302315.0646244608962411023049038897890011 0.4473880710974767046751098003888521 0.0209494098231013490124353999506576 1.0211719624273050226705093227457757 GT 1 -40706.1648220553884343556871493294947146 1.7538785191607112398123107745302583 0.0437928411090465708335020186334685 1.0447806960047806565379181944500204 GT 1 -41327639687024507.1620733415072636081230109943315823 1.8660976823742785334087590376401614 0.0554096066908791452150793767187755 1.0570038916871011025695937473760187 GT 1 -1873656962570576469834022077608707873069961.5653019221570747356292667586771459 0.9557438739376867146999967771801227 0.0366220921371944893184511290397081 1.0373095164763845853654292221404112 GT 1 -180327984.0907398872957296092504654840398791 1.7556040049396023627467775516900737 0.0473527873621757685201162597118408 1.0485106299730407280149601953407719 GT 1 -3670886069237475803959530.9668610406947425674496270393022409 0.1326402182937324390861025757254527 0.0908756351078170189909471885983206 1.0952733791000778040322611590833601 GT 1 -3.1804728237911931794659645846799906 0.4922645026938617506051215323173500 0.0309606731741217984848842116106511 1.0314500829552913850527317774572286 GT 1 -100332619480320832945026201036458386645.2559042034079254725865685585195173 0.3934921259340760132095060717441615 0.0622360743730564167301391536743896 1.0642570400883391809017797092842484 GT 1 -1466151834399379390143449155286952708155722.4503124163877581902065705328394021 0.3687672196495250138343865105521450 0.0704338231726608365006496234604079 1.0730372781986016604969207401204415 GT 1 -17012967644.9754147617726520953112820400921418 2.2933089803340245590612549384312041 0.0261806140416396804492092468404090 1.0265294278958906499983148844982548 GT 1 -101910933480029025423642.8590383095735625951426148715617335 0.1656204513503366253664570768486076 0.0616352313297475280202881810488023 1.0636165263904495184910850315616005 GT 1 -758215831.8331382823969389221472187972001570 0.5068140728145546750627926933724832 0.0317287938920625605164673849203061 1.0322430593471843293333304551607829 GT 1 -174987348800761746.7215010615483067139097022764559202 1.3205910704451815947094394316541411 0.0469400665759147884349641544818318 1.0480774880880806314991762057291288 GT 1 -587780164983916488366487796054381694282518.5706082443357756444174900199494542 0.3928103930242891692837903714754301 0.0968467225404571343465550703922623 1.1018629974896624661416336165485026 GT 1 -5530812634058018089334561922585.4385324693745749861339692634181659 3.1091702403130450485247288564832474 0.0250810410921356984038922887741955 1.0254009305077282348526037602942269 GT 1 -1795907145318255.6593144474480275845241595079967664 0.1067438040371300836841112495713545 0.0923472455243465833331942667847349 1.0968934025170306911497538075948010 GT 1 -1108904674646589904235030196081164.6344997371299190890922256945314568 0.8735549565706117096677624164652727 0.0363922147431332623051022415191426 1.0370709289290328127543367674071974 GT 1 -3542098968808391849710137761.7578012522733834942164294401544789 0.0279717558069183994770552763781946 0.0109216618268711239226397917076407 1.0109817410189498871734455072149014 GT 1 -1106.6257807491732031118269028296759837 0.0078733400465618546083268985504008 0.0589948221008915080315747335948007 1.0608066368623655776334058314333618 GT 1 -122031424940956730358486933.4777585033812183809980892093194879 0.5348423399493109190733473939134512 0.0424357190049568644828249378504178 1.0433624259822569761569716702380420 GT 1 -976883485937210505958.8316442934845427977968736080134748 0.0001041369338094038246604033488070 0.0400836483718218027840555955087961 1.0409091320372660068444063016020443 GT 1 -468492063.4611444866207659660266060245654269 2.0573347026573047745423431591460441 0.0605817746319570809686258047548009 1.0624945045043696896997065543631170 GT 1 -59.6020455653737675324243611949631712 0.5251581924888940264365421843860131 0.0952531048962215459174220454186046 1.1001000483167314431677275704723223 GT 1 -4547122204904824772391977761439378848105.1907492442046505305954454851949851 0.6464520147027361595011133907655862 0.0683542875290153403666467625830298 1.0708026734005751397343740273487810 GT 1 -489548652.9823544406366828552298644185869423 0.1501109690161131084669990073978382 0.0671582954906731599930140471787658 1.0695197554345023895165986366376334 GT 1 -7891843293701143737483096741696333005221291.8812393014318135573585803264809800 2.8459390265168171157876404664437863 0.0525321096911367728084829225678631 1.0539622314558769226045332945920129 GT 1 -54784176923293692040333919659224583725774.8126120023048235698028381747854868 0.0681518996376483404376797442737681 0.0741000980437513284838743704660673 1.0769891474183576096612618621564721 GT 1 -132848963075546339216917466.3963978030241009069238235091065614 2.1000809853152635014827002452910014 0.0822684759552660793262598534332120 1.0858503886032818021829150288126113 GT 1 -3404432630533160446954493779778430430384.8950061504884554691941537168309548 0.0973914197365445457644853444391457 0.0254888526620769015469525387949278 1.0258193210666752702809780097957315 GT 1 -2154977.8835794674178899028130586121141262 2.8565876970446050946418979794359163 0.0506503651421638234196808665046529 1.0519781237161227458893901115503866 GT 1 -748896636.5906292055298194003499791380659517 0.6078699249383889012871554069353566 0.0089944373829045332986929839046249 1.0090351315325893609990386799694928 GT 1 -173935545263415186246171.1201125898171864739705696610665391 0.8216001900773530555833542774908715 0.0228421146137873757920564932110856 1.0231070377579100840290405099952059 GT 1 -7955607.4676878523136132923011386325678096 0.2893938765894570719402968173807089 0.0239217609042277256194757012230319 1.0242125327739633908999574616048751 GT 1 -9838779.2955884652826410408025860216345934 1.7750313029790784394826494046102575 0.0093385027147591267135916337390502 1.0093823799097500274146255252203657 GT 1 -121215988788807917603621472708.2408318233475733916232989101518127 0.0649736310836097038655999186697117 0.0877175425897858691977951269428466 1.0918056247860860179357830322452067 GT 1 -9165143646261045690296870631.8927576692666297175281224511085816 0.5225431118646732341094723838260192 0.0006117727526705046387881182621402 1.0006119599619778890275210619326415 GT 1 -4471319664.8719850945113361658806253170868932 0.2776702013616717144805498972961358 0.0562311564501107958069149588331976 1.0578740119428547132111414797700188 GT 1 -64.2623871310320435173181873737492143 0.1623556861126407418149387563973392 0.0188398574164047147552591679454050 1.0190195885158139705526732947026079 GT 1 -3483603952200091551171818458815162222521172.1557966563437794670814560502421820 0.7207401845559371787356052142680289 0.0389726998644953262681691934118551 1.0397524623659130118053737067262240 GT 1 -149.3315824627682290343859522800655246 0.9322173571604357500088661325428184 0.0270024517936752484268509163453613 1.0273737166283666291143644216506383 GT 1 -5986796320405.0359487740659803506371253375006158 0.3212082408932400644030350086623436 0.0335410798291044641441148798174403 1.0341164849402197866721562682384530 GT 1 -156508595238416.3318372382036177160086335370904333 0.8374247808230204610197598180056034 0.0910350011662131461985825946293170 1.0954486906793476914108755186467153 GT 1 -2285252022243133682654.4634721733244795028725235037352505 0.0155348318258142830597322780527033 0.0689752667856518550748004324406221 1.0714694357697111066998324545500392 GT 1 -345482883371980048171.6145678329935288531382944078022002 0.6495764791317171428375283649840230 0.0538576180943592146180534175841962 1.0553622118416676515092649951260620 GT 1 -53275797631138130503884.5093389708636714347143383785527502 1.6118413221924327080554658073182693 0.0191174373752832674406263863687160 1.0193025384842256097263959172350021 GT 1 -25737664792836125801036928762983156.8650246352875004188243041749637882 0.1188228575625135337420101235012919 0.0946290539164475157390761755182708 1.0994105340869959223402371578638021 GT 1 -15102.5544284668022630817744870291424001 1.5996388970384714786759780841840458 0.0987724740537788790729199638823228 1.1039975272306853737157646087312677 GT 1 -4.2950741653161945404041815033181276 0.1698800109167432351629144617468368 0.0959043120008855634557393621008384 1.1008200746350870610746972016944585 GT 1 -64603777387184480969321968013446461051.6572899689160169753386400376338659 2.1647632800259333754887272618032111 0.0401240083082127958903495287271940 1.0409511781851604642039498427040875 GT 1 -3224565918633447577.4125479826443462636206922066336947 0.0024010175893111459432747886361045 0.0534170439410784194899614465459417 1.0548966671031882744853569579097185 GT 1 -5735015078588523403326080264208.2902938024756993300790158876029108 0.3149592666631029820533016503103877 0.0191843461422911528258908207945205 1.0193707536321741121192629332150165 GT 1 -53.9941188720453559994657863035073101 0.0607180473989528108363449203173254 0.0980155939587927613874364681624409 1.1031580472716088213994291127758922 GT 1 -61996916186162230113401817223.3343107213373847469896126653376000 0.4443485871616515987788959315460540 0.0087722467140754501198264882713461 1.0088109493760520236522867541046042 GT 1 -53804316819439.2888594734692736139297947677644180 1.0812390522908315832524330171728433 0.0357630697965285790708972297421529 1.0364182363507413111166191059227805 GT 1 -6185942720783849044073327633991358011.5078864848260861151030611835661560 0.2420161950559055369750202801837169 0.0828985338447267331701872618129086 1.0865371627321427957615115744535390 GT 1 -206348376428964758439729583.5222173539694653783692944967455316 0.6225675326081253969034848577402157 0.0510527006672540274352016933233684 1.0524020147564211190050585165194467 GT 1 -13196.6878291328964335800238924608769219 1.0628829740955354898007920823415667 0.0838031844844682280736748760583724 1.0875240732880660070668051027789369 GT 1 -232372366473665945070712.0900887022876156659174558794468717 0.2339331758894065218232675712671298 0.0291663687177976135763978084963786 1.0296001628762152024031566294104183 GT 1 -71.6860494986691528589378659398448546 0.7056161097754313278820067864344383 0.0424436578224687836676031561972989 1.0433707166532631849175621505615930 GT 1 -641313.2762550763129845725836782425922576 2.5884196930730397726872591221629236 0.0777744355874331188796105870605731 1.0842431395924154939239809267161853 LT 2 -35344137049730468631308604755677895.7921105142503181345585501605547015 1.0864004724828188546347119624690860 0.0135983315961957450152044919659025 1.0136916357264943165978546583681551 GT 1 -1170709.7842043481767194370082741496045203 0.0842165790259845640625506089922102 0.0820602919846764632816352900174753 1.0856235680617314170636040802627170 GT 1 -106658.8572233425698493856380251473975563 0.8274695353410787968893359315241626 0.0634520130969558935961456711183759 1.0655545177241068517663278995936608 GT 1 -858516528.2457492095745679859744440844012436 3.0237487550194068044838300060446250 0.0952508835552814893922777126484004 1.1000975931127123343297730226638715 LT 1 -4967911747888685555845.1547143941975062833544316476976591 0.2823634891489738618657099011852264 0.0529546910156769385600154780095750 1.0544083421841697123613083443045524 GT 1 -41310902458342514107.5938647488461812378540773648572288 0.0421626857687785715486876791156982 0.0027079250077178829840952314385549 1.0027115980690565310077863747647348 GT 1 -25124387276210518566656342051302525262394.2858535482692689883731959439368537 0.2218883085451871879392032175085407 0.0290222771249628465679996652815633 1.0294517534101867411859650462186422 GT 1 -7.1789602405762373908437605296023199 0.7895553848060652325890127363482339 0.0835078983247963360203642824961701 1.0872018296607298861853913749452904 GT 1 -25.0142875342888029509184952397387806 0.3428634033002879305728030514728541 0.0842266153303557998211570880441391 1.0879863415644660109075187157813048 GT 1 -17788624564787100095163056705162087374223803.5513057605995168988651343298446269 0.3739578919420306539546402253314040 0.0757757005841081093373885286180523 1.0788004885134534356143199420948902 GT 1 -9638672360795277099163501014166455198.6846395590643619675950229183485951 0.2488408406051153920941026102298693 0.0722635068708336327114334247168075 1.0750075378871925116285549896422740 GT 1 -3072975656655402387769907281963645.1186373638057713998613203525955175 1.6217384362590321165627684684257616 0.0584490702402450196245770690657768 1.0602268380731397808275841564761918 GT 1 -3962880748984921144378142362.8707173059468532317994634869229916 0.2398535391874123874452666988510149 0.0342947542793194738630570566671216 1.0348966199843781711647026068974476 GT 1 -90657868487841235136052049530566670.0963743000402816030397767660475839 1.4574658461283731488076038423214917 0.0482860087186850077822123529443536 1.0494907186550523338352157284006303 GT 1 -720629957416673328735996688164325721.6028300048855265247618328499685012 2.0952741468886609132848744215555780 0.0520940569333158702327606577926076 1.0534999978237492872741635054898198 GT 1 -2089864323.1242887940916376209785888808969417 0.9522537326910426369456170875455329 0.0642197634230786069118950444636280 1.0663746200539495292274293086898393 GT 1 -102360900259081614.4813467683945267937410612617725582 0.2293649493151563983223685796824472 0.0714011874333281007979176263956463 1.0740784821321409478628664544943274 GT 1 -11199585105167087514579823386.8064311816391760188236296017798558 1.4986979925585771529471954071028809 0.0875027212231406068811255664761006 1.0915701756922830087012347715748274 GT 1 -4507751594408171642.4242013208671686638148582774333455 0.2447342851473757900328684488453632 0.0259760850057626047469522750699693 1.0263194222588573888351385231407706 GT 1 -10.4350732095479866080805500748651442 1.4114706199796127185076245379626181 0.0777362953051601179337844506742135 1.0809240825508770452468147539306753 GT 1 -37949419.4816186264915637153747893981460999 1.5309632520690693861571334490186225 0.0748933053016498143538722707645751 1.0778462025016683292011964528099957 GT 1 -1592854656680540263.9279269648661097122212727078281345 0.0250836509785891334935031300283865 0.0257735911300670370987861033109794 1.0261115497139955933852291546648301 GT 1 -50797702346917524.7522015388096116706349489243407384 0.9888967599847274566332983768263173 0.0633227182446053269182674268219553 1.0654164725517304509416358217262145 GT 1 -2161795.4765292000146138790572982575410006 0.7480692966766817620476949201837433 0.0844384389584907351454944987410920 1.0882176740463537728479787470973040 GT 1 -137292975992486063263280.8202476452353917010793705441375023 0.7791739386454530312725850768411365 0.0743603102898814988615531628465197 1.0772702240413091438616914943072805 GT 1 -2319445630668421875463281765480822438777.7951131042410704550171155086192542 0.1210019195328511394127904023449238 0.0868611038433480715246693259598141 1.0908672783515983466398808478955126 GT 1 -36966554976953301025438840625370460106.3896207159880883945253907018848340 1.0887270435002149248699538986493431 0.0101653988763857269412145549413475 1.0102174193832838216183733995512276 GT 1 -47084172394459249597283893194780245.9446936352744792790311199892445759 0.4565327767844816597494188350873546 0.0194672713485225661698536461995268 1.0196592543500647779380795411431031 GT 1 -15882646542412945611566.7989654638181895674110597003471344 1.6928911761300785317869952992179592 0.0722552095482867850871789720925812 1.0749985943073026730311327250327692 GT 1 -296687664374029327617568150599394.4475548876991656663741120366039096 0.1450180977671934836601559223263152 0.0514716693564727768748624886672284 1.0528436211616984250217233748765528 GT 1 -60893323882138092.3572417153510658296685512929660272 0.4800668522270082197480865744233744 0.0924534403553554417186762676054192 1.0970104087656601739080830215742117 GT 1 -28072796483951962152501755010.1509504846471445013058394940507563 1.6896588859352121599233004191460472 0.0174788869701606189590314236278469 1.0176334463807128700815716200124764 GT 1 -5308690.1644557358496361353375235929735830 1.1230064802869911420763297513277760 0.0248828306414969525252508413236710 1.0251976415035418654572374648525348 GT 1 -9204172685871770.1456388860056714323009442607767790 0.6966875689116955572217062471928725 0.0609148473578228719580712287522268 1.0628491194954898741367520406600903 GT 1 -32424008017502.6132524560743811542383722957314988 0.7157311642825187869566457932626057 0.0891261779271436921564667803421274 1.0933508961745153611190577366291325 GT 1 -13223187681889670110740432.7406295979797383771249100891453608 0.4507748258885837558609864158095440 0.0786463749187047857634999477828183 1.0819113586767501563601839332301920 GT 1 -282707739.2632448821710460481764183327059718 0.1354648822640383995678787681787867 0.0987982901363609828790376224594478 1.1040261731071180976773988563249938 GT 1 -33549777240040195763799127.6972001800961102764528004683902734 0.6532693724599002986856220922621792 0.0000157503202532548579711329855662 1.0000157504442908513209708622266518 GT 1 -10947433859575098658277965.8291694225819158500166763223668879 0.7944019471874682346262455763262544 0.0480713529780806726466397875259313 1.0492651976069364528964724797478758 GT 1 -67410407786547281653038055712759580887685.9507305668657635257897499647946910 0.7756946073406318383929103200172012 0.0247563074108380119348181667491059 1.0250678980972779842081514134059343 GT 1 -558917201740416794915835267454.9524442044217784589174809274717735 0.4260764895681808579005585184984461 0.0360744831670564314691276203173622 1.0367412520527784622667297270819382 GT 1 -6526892372075058.0478456609628966777836042520813821 0.4402909124512522369129522908160787 0.0029355018446232148622313079845516 1.0029398188806779198409233494284095 GT 1 -115755867032880505996529022556009104304584.5455479920048128465199298571033128 0.5034085295940717332797888696450928 0.0225559161783818390922788591523096 1.0228141920103261290423781012736426 GT 1 -9755418526754320772.0914587241131469066312028435310989 0.6295424034816270324799467040278394 0.0035353802306850088422222625652083 1.0035416444560096823950235071195753 GT 1 -84617095267299097033.9283207510947377928642332859186445 0.3953221502872819708435494854224747 0.0123954630943076522409810784615289 1.0124729276519880666138847826076436 GT 1 -603538762737865354395001737497941894.7385434567183416285434167183935682 1.0526747393421627631950867607361583 0.0542594211742564867469634300609972 1.0557869771091588639045890495748635 GT 1 -5077153.3697383057593788399948245494696702 1.4761339393866359442895229454471716 0.0354876183665681510999583046607391 1.0361326093590502366506498298622610 GT 1 -108741690022971118381164605451981418.6220020698825649728952401433703783 0.5147128152094946970181706934586956 0.0967770958521043269431111275789817 1.1017859075799346590257796594258539 GT 1 -5947108595744853577518627265080065486285553.5144418880425684453126430617880605 1.9303232963589105907188915689336063 0.0346984537001798197835257348914071 1.0353147432436126992519718606912201 GT 1 -4127359484308360506475514182695001829485204.6171414374818658091110737922682629 0.4070431976434006428486492678551280 0.0160717258447352731436791563738953 1.0162022767052766209808106377336157 GT 1 -215574031501719868322516100438989485.8867859696848498174993469490493506 3.1422837234436879048456908342754287 0.0474397255312751426189841249883698 1.0497829657369424447619663435408889 LT 2 -1826829962885663463894652236650400.2045568943783084106070557526928920 3.0676856035149079300784215748937786 0.0813510390535963270683905745316754 1.0848512089828319975545860972738471 LT 1 -119250672828284.8206700468554462801897395803646303 4.2786715910434184868014778887654776 0.0349597187422369893250788295972313 1.0355854362783101711442647845195497 LT 1 -4219336016120470472642.2586507373558773106832215126778685 1.3601169092205092579236219346796113 0.0473344201255236978292871614003216 1.0484913499506477423045186256186111 GT 1 -10244729.5021122019088348577030182910259355 2.0141170750945630014807798514070176 0.0525961862860357767950776830704149 1.0540298630478072816979741782486794 GT 1 -391798384859087157218794.2028872785177666717097914246265112 1.0673380583071132032905002167485843 0.0256645409226392601134578400218595 1.0259996207993068288549737399604479 GT 1 -1563.0337071743636943287720399399215382 0.9423223553846916854317047973496979 0.0466717521873174883226574625354867 1.0477959983127979056903729651526714 GT 1 -2649264472824569475769875767756811704132054.1058943175641936893433981124404945 0.4799568788088640736322629362281060 0.0067078100260708929155104229905902 1.0067304084979404578063471370253105 GT 1 -30.1025762886632313789633768193036931 0.5686006751170405949788228065649258 0.0396405795122064625309265364101643 1.0404476682476253127218086083925030 GT 1 -3846599814052661819491367.1800563108299100605923076414281362 0.3320992824424849417039077300520505 0.0412640620588025563151704730651353 1.0421395934839078292840209329669258 GT 1 -9785188521112300887931377.1123161568452261245818112701432302 0.7657679490549927022749948313969339 0.0533189046165534892129579901084459 1.0547929950089148286381559617680906 GT 1 -5284953.1061513068777031393516443845661760 0.1103115085867972735289634443787784 0.0100634012069511005600495838235247 1.0101143795274366771326097087384206 GT 1 -14724785948355234.7351711843127710442270898514631940 0.8592894666431823513582452798519645 0.0833261856045867757066478390124659 1.0870035794977613129465599955946875 GT 1 -16908875818768198.4147020184010357369273502867216596 2.9241352064156465330251053357707668 0.0287927201735838992595456616565775 1.0292153630023433824725541708177259 GT 1 -8646457204428582992200952201718847282913295.3915168643567682333745671869895956 0.6465166490094158642358342978606813 0.0906340580133073570602838019179091 1.0950076893738065815296963734395950 GT 1 -60498324684292729302.5298588761036536774406278905672392 1.4131369315754333928599699952764199 0.0012572475942121620561681293068909 1.0012580385930258167602715022839057 GT 1 -30436868811631688604260310477320884.8589554717521130191235167792572147 0.3615657680290319115373855273768467 0.0613733904642475185157332572067946 1.0633375257831598078857145501281479 GT 1 -17779233901451817515014082445792387.1903724602134023568528050478279264 1.8294100835840638392458084899219648 0.0308504198374508562518462366650309 1.0313363135116707664773228914055656 GT 1 -12683286372511642179503475954372586586320.2814940181828790263105354344790836 0.8376358071223309248215872965477017 0.0196916898760278853754436954087526 1.0198881546270860533274491152070410 GT 1 -256663158.1170488887557018222376606895088110 0.1825706265470258811048123590902147 0.0015372039213911626270173431371253 1.0015383866315389749098271339327351 GT 1 -1383711201396746691544897308253633.6134688407268937197892448326766960 0.6817889989025139210929975167754209 0.0109862483592617260924569125933828 1.0110470428648509352979894014727886 GT 1 -146647550708666063410716036.8906655732364996845268844149535827 0.9151728058108896182215802406807331 0.0824027257179706876895775442677781 1.0859966836574066420085855843464766 GT 1 -76324795.8029563859030638754890566632801253 0.0399129453238350372077407785577194 0.0576874672566791980339802210391642 1.0594182836951637604187747176803277 GT 1 -598018669316059054088613656201969505434.4020569544605996602047796537322038 0.1077805712997198565950551707488797 0.0670502644352980095755057910470617 1.0694039535788656315175411190830195 GT 1 -4545.3381563248501749943071361439544123 1.4507239974066149890321821425094985 0.0717595605253523608733478105264582 1.0744644854935843676208306049066322 GT 1 -175604111.9669659283308498660906231187821432 0.8616992301351369153491803772911465 0.0238281519701990283664880509777893 1.0241166342671913783032870707365244 GT 1 -3464694949250561861776548364714738858649165.1181237699066562043677461169578301 0.3613757747025376957516940870298149 0.0779739544506622883043868990655333 1.0811818068556249130695013102564811 GT 1 -83.3153914736712566625249684480449308 0.1046153080468353136881173739267788 0.0131541981444907012439072666514518 1.0132414808767870074085227869361158 GT 1 -18557.5356006303181727696039292223471478 0.1949052790080748418889490932073552 0.0934224871751476595872904867497559 1.0980787446382346139248697790224112 GT 1 -11863798339906966084433711120.0481255533770301620984431796691624 0.0430366624152141963117994937508744 0.0193392489131310207469561923770360 1.0195286987094346975215383127674640 GT 1 -2036566803946801.4129426514766086218672085404992880 0.1689674328936102418334942960136929 0.0821560334906509175129078966861538 1.0857278739310883251452632906261237 GT 1 -92047515868225213007096334436457601523.9394418876252577174018177380534627 2.1731215562669042752778409269754040 0.0234083739623177443053172688835652 1.0236867019994877481603617708077416 GT 1 -26273495728641799183.8471693361080797435305402932994385 0.0735668171059916880783828657170730 0.0927709524789248471352320147927041 1.0973603276488052442413756855574424 GT 1 -103638016237074678.9079787366289258467168168915525310 4.7527658230426501879598763372540047 0.0777207379953139116842640807851803 1.0809072140797951141801494647728543 LT 1 -51970050573.5307524429787854948116892640860530 0.6853384186507284238869198765030889 0.0854985722454896498176046928567585 1.0893762499118554651418916879171946 GT 1 -161359263.3960031089541024095765080063232380 0.4037296514347075104450870744704129 0.0072471974372727023482225538156603 1.0072735859450683788562443657640508 GT 1 -1976286180003609381116004947307298493733.0545365266046398428395537152815515 0.8195839370069423911683802820084200 0.0860094713013475634874794162929653 1.0899350700557999100305797698791502 GT 1 -13581627649934434605051102753.8773783258334709493037120652102263 1.0798873455141127135851513818680249 0.0955308302510835529086102416772136 1.1004070601352077125776558202361138 GT 1 -108276740964098457336.8658245020688710603110998098704300 5.8347570270487936250841224888030928 0.0499942580657500581633315978163362 1.0512872502645005536988456438860883 LT 1 -282073638609.4545437135824234189217210776776477 0.2493298985760565919849985908115669 0.0367645119139502288116660902710428 1.0374573611631438779536378563945747 GT 1 -3556.9039285475460688098115764248089065 0.3697719320651093985299346809007553 0.0617758053402041415303645273985896 1.0637663450385034867518668014949684 GT 1 -128589365692.6047950350957500324927448576643202 0.0087799441996588287449017792305823 0.0842909758917668813578175837592470 1.0880566240428879811607477842090993 GT 1 -8730322692643411043489655655064451709.8839254252441605663404640986127267 0.1258600903503013029056021216952111 0.0070045515440287545256842770516376 1.0070291985769041194846316543254417 GT 1 -160897491881387737916191450003351.6547131899035622456300879871359158 0.9847496333642933124411585924505203 0.0469231963108626467516290243131266 1.0480597870861282410320012079174746 GT 1 -2458188064202842907232739201744305565.7679982135584588459591832955649335 0.4004619187927804318365183272956308 0.0350712792166618991120939930004907 1.0357010448444904352263600623403709 GT 1 -1765370.2840201435236729815994936005302340 0.0012105567319110746054348665940855 0.0579360858260357290228847246381845 1.0596821572658675849431582000301958 GT 1 -91972814.3971407686084821447115163553514526 0.0459359990517300338912853108955001 0.0527278173222595560768444303167303 1.0541688113816503683337137475797644 GT 1 -187566992640636521660819239672249719024703.8329802205351506216831423668716265 0.2864955327404131585283898622611386 0.0962204461972186642262353258173922 1.1011698047406227065216412471944474 GT 1 -17990871788750442216320680.9169598928514524006655908427857743 0.6698899106926819136931007329829662 0.0665098678519657741390303496249235 1.0688248868671211188340892229636046 GT 1 -15003245470860319293844443543808124090257.6211871204812432826829245352774941 0.8851542207593040598880522739454329 0.0938521548594914287808603705068978 1.0985528017704994201094440317947496 GT 1 -112116419675821063719115.0800305208146059441472607643070149 1.9465445201023439139055782799883973 0.0043576771263731191267139437455027 1.0043671994749582029254947862477782 GT 1 -2252726796072918446477.1536653621401006278131715720140163 0.1298302832307858553226340491166274 0.0570447121736165548107429014017969 1.0587364122910548020681245312513201 GT 1 -4808327391874448210146609365.1956543893164891497886866672672380 0.3319915545988143162923368824091934 0.0787937015926701109478447101122053 1.0820712738821132980303695525790909 GT 1 -483289147537033539.7821188784335244481197010665590244 0.1360430245111536840874681937532802 0.0133986118063877117604112990670044 1.0134891831354328261837962784274990 GT 1 -372721140617599886325507988.4719836870812865668900795566766089 0.5341655369256781278089162280372341 0.0317015470290859215620771465952835 1.0322149200413238863071839377663723 GT 1 -188398505954291409939286780182903251908775.9285725774019278823580912250324864 1.8772270763454535123183524661393783 0.0174070587926518280897147813671011 1.0175603430640011477392145605585741 GT 1 -167573142925407133183988.7792926733445509498857222453086018 3.1645520607706029901015555670944199 0.0868124409270739721804990430529372 1.0908139878611208393509885633634682 LT 1 -3620110.2010228756773577746309106248456676 0.3060468188031666028581460929912409 0.0008393651647843780901103701730547 1.0008397176289688789450997161743143 GT 1 -40204211099181127936009.7246030794652228586997794926101014 0.1011878581608737415937028530691603 0.0524732179349386199680153289619904 1.0539000763933053359542909878811114 GT 1 -2370662938195288976527170091174981432326664.6941621382644771732266156400597065 0.8486553798066615439647657637310362 0.0100562707131564184649590537699195 1.0101071765731029390450196960894934 GT 1 -108.3748879141840233791938095102571743 2.5220489928751095124603094895970469 0.0990234472971716843946288178920754 1.1042760453496803315931321386597870 LT 1 -311358767699790373969385197157956710945.5104482214459642297900356033007810 0.0830857216868575879546551073064665 0.0731389323142998223620488850151720 1.0759515976950788606111841525557116 GT 1 -75033934534371135.9513593082529370396637532207481266 1.7199031330725343221418683278936432 0.0726262562472744943226233311888277 1.0753986191004296890070273827794568 GT 1 -1808832221.0933034569857984962313496721147155 0.2640546728863718748738450925363690 0.0778536639423552490290385586155881 1.0810513521219163251381074046187443 GT 1 -155588234316214.0886305090553580071112898040559975 0.6053345605375173359001954819535176 0.0420357597867943521531925575172544 1.0429448292515932737215368652427510 GT 1 -1318368841630423486425388196215545758118227.9258706022826229481576689019842607 0.2227414091231465305449234884710816 0.0587056739287345914587265994164908 1.0604994082052667596479971700922566 GT 1 -15534634183500477914985799706660735.9794519770439059117686498777837838 1.1032053997036797290527481107196326 0.0016994117427365023991014818171633 1.0017008573809273443602318089933593 GT 1 -26899475738862095295884.1319814781008922140520146075938836 0.3955964505942863846983091297026089 0.0404237249480360440141780874525649 1.0412634721113517999697382186586909 GT 1 -268685070154986.6230183308774100050988819404316615 0.2879119677164040894654300289294881 0.0494969306920833156768003573141842 1.0507638879079813790907218471789306 GT 1 -1253662047349406.7498656152662011288089283611380239 0.3773063804280879046796375119239033 0.0256018672231732570451722679678926 1.0259352983082802551847641027914332 GT 1 -16679884.8138240872213815253474851166757249 2.3359848239429903777310541831417797 0.0865180471316879780069907768233254 1.0904916593873489321474943909396660 GT 1 -2351096766.3007614166805421200967418840035607 0.4329475643657850176322656268466414 0.0982623679695967072683891627991536 1.1034316748119226072837982573621636 GT 1 -14178203185834127152818516890134.7970441799118886014091436611679142 4.2724338770966807757483013671905443 0.0785981493619263596998815391391169 1.0818590179756372106850220999217595 LT 1 -8315373096701770432969287344224045769383.5257714446755149830327625374772277 1.2696813434963740954782326876823837 0.0739534327890405332899572209713808 1.0768307570356341063023222349889337 GT 1 -41709734459278541925.7412214006914684378191706256166687 0.6725579761454952373135022230720838 0.0717521914855108882135697879098114 1.0744565468062810753231459851555826 GT 1 -109615301398074.1298761963783080308850518115840574 1.8207926412341341842290388613210544 0.0886328446299197394987645537424189 1.0928094383592388798768533563499573 GT 1 -22008758116.8494464872871164844177176504120729 0.0958384971486016740087355655020055 0.0048540397817749858919484964026920 1.0048658588953527092049863399505567 GT 1 -24839688690726187036820154374643400509332054.2488861731153802022755274346544956 1.7614955134594162744384165586530888 0.0510731209235663460380007320050119 1.0524235338397675430585113626832231 GT 1 -1747840107372655637318.1003769915459891201216481648347225 0.6854350478400905721666551492911028 0.0868713697338640070473238123031982 1.0908785208342768313452237413539005 GT 1 -2636127008166864.9568290684955021465447053371853174 0.4487516710964398070271941600216738 0.0940677851719230651285326052465508 1.0987907938087244347363163928217121 GT 1 -372969831502036087125376726.9177274210179490274913712121002073 0.3474286819926997338487200194285045 0.0895086877543643446705334338041225 1.0937709216001007181347159646370667 GT 1 -218991814732281087230373168.9293968643604767087981163831585182 0.9309248187158643666113936586425778 0.0738447605242772409013041260017456 1.0767134131646847643272846824498215 GT 1 -23901651058307386290.8797023577131300866580462614741626 0.2591258325919125587947137951057519 0.0242509377294171403374366572815982 1.0245498339563783576289346209665262 GT 1 -170461084736182896120810.7330094641675552637902382879472789 1.6755995003169944760487233440407820 0.0653939010729986836767218673675688 1.0676301230287777726410756926322358 GT 1 -146.2268346521764509069181787749462650 0.6245449668346056671017336901926975 0.0058386123710117514127176256944096 1.0058557237050265422369627876062735 GT 1 -1335289156775079.9935267575294075436463358973086266 0.5349798708330340231145668863229843 0.0700790688916572062469130235303771 1.0726557167628770612623740146367749 GT 1 -83541646556381803253184054.2032329935207225484705358651058125 1.3852829844648414993731448740894390 0.0593692494151193199023503879237550 1.0612046174849736582693188092066071 GT 1 -208670971254850558112252445827.6703991468747418468443596594083961 1.2392888375200978495090220455795540 0.0965559495881573226216255640854412 1.1015410962554198053509994940874692 GT 1 -743462928.3750547322555337947025498696395693 0.1253034768569354686997804597896411 0.0915595423700820983919576521695362 1.0960259325012741168004025366852592 GT 1 -28151.0532217356978911188859726765861353 1.1562043965807536985242321067982273 0.0273057705251329147627601536132910 1.0276855016062281096963258335780532 GT 1 -851298273216395974249192633964705.9146205704638514227082228537277767 0.1057166928654198495156285451819201 0.0022040499650777760130109878154714 1.0022064824580833918998628498373537 GT 1 -28012.2581491726410249655292928178119202 0.1993031749908738237471459902219561 0.0065322860770893638768672216446203 1.0065537148279162944037857392908409 GT 1 -1.2623843087417562423767841822503144 0.5796285329576174958299328951851986 0.0715706170718137095079335884172465 1.0742609560863509760189840924398888 GT 1 -132345757046747895560207551938.6488595324914694242669846080683179 0.4521255933707302249522280541478693 0.0006068481391488418801987119283232 1.0006070323460083326221825063741667 GT 1 -10991.5681190854386801303855832005979822 0.2576098038306862893067255381041383 0.0171780227715038833502431193578395 1.0173272767327788439517055987010868 GT 1 -23957082157779080683419175.0685147943765169819563806297443577 3.3684769337418001260932841724398585 0.0081608386297783820942021078565000 1.0081943205581826945704235571383221 GT 1 -1581294984856420018377603918310.0943706642049796970842223393985505 0.6582158601807363065186965764787598 0.0210857007665210249092335731796000 1.0213111793707516887635035372818950 GT 1 -435426961494362380407332660061.6061718015848189268652663553938927 0.3717288668668401507126467074597498 0.0942949467315274935920466926514714 1.0990415742102930486492548517677497 GT 1 -208948149686100585825185253943.2913296360557237557434024166549026 0.3279837080959773137155200715615151 0.0558301860794146574895781484306977 1.0574492413867368605493117150584562 GT 1 -772373236.1185053501433239049522609439068260 1.2485345511859599209425006799750839 0.0385564185151868694353394569629948 1.0393193932777989778358497238752437 GT 1 -13993889062215709743138061861.2073629640203265997421361207732641 0.1865076515608523852369472702146781 0.0267949422430225097846661411089250 1.0271604710486892958490531422460806 GT 1 -3271873747153796923.5072754327241534817062961881814144 1.4149939246027402608197700692597707 0.0084236552724330110209774471788197 1.0084593347656292113819111149837988 GT 1 -47933.2929899245925059600628816408751773 0.3120159059585848239783192954285650 0.0651870381799726657748877614693359 1.0674088105384817911543459897222748 GT 1 -446016991857160629962.8336622795413602216107535882920183 0.1265060550829756003538765602463271 0.0109733172178824218244004779125073 1.0110339681661193479698033795524365 GT 1 -1665374301017790258029619115603201629.9803940849297674291332707623890328 0.2113497759481207421375231524654800 0.0947438229648765878394439941984772 1.0995373067914554668395530261508165 GT 1 -15238778.9197387796126175415267904303911211 0.2463507409631035481511877969914710 0.0266248090253180332997297558990005 1.0269856688865400150178053030327495 GT 1 -3127869127619616792617355273488.2134348238112128133948447992431813 3.3842721634215001429136857382023961 0.0160623047721123926181121630021748 1.0161927017923816074722661253801537 GT 1 -11500876.8563971443366367837615889037056544 0.2222212912471388591147550085613081 0.0831944077948718825648592943947302 1.0868598333400816555068085543624654 GT 1 -281859760534412681813071718952888258162.2771061686725175295305129774085797 1.3849245148480738077823241655947488 0.0558041332147745175891772952833044 1.0574216483575815592608341364231412 GT 1 -10902483334910.1827681816842059728246184859023628 0.2439457240237420707202443036597368 0.0976381160201538450873734504729166 1.1027396376279239671337782995244058 GT 1 -2604357989154687231463697629345.7651065238576498173941611195560113 2.6936751729329012292150734293804822 0.0346602121683599995289848284958452 1.0352751278773105732296046466642813 GT 1 -31689561219129653480021352496284187.1161135026312911793588947067355394 0.4835447420561393663626893623897969 0.0571737074320172517628090424661903 1.0588732205618991017403398336175006 GT 1 -4359496617483924168951.3280437205114418215948656419836225 1.3304561646416818483436452788653592 0.0722392565411471988410286047072951 1.0749813989857599152394090996472834 GT 1 -24388896693033203458246.7066312492060064798786943060875333 0.4693314717058160797674313926304816 0.0909354689371853018681596898466859 1.0953391960561960567837522997039069 GT 1 -1931387935340726125097417.8363926345984979903156543144608654 0.9486445664064392275354952951518738 0.0402660466697711657170204919365541 1.0410991648760878874982320303924033 GT 1 -15162909488360532113028892548690233941.4787622317222132335477146151907257 0.9402695328687967678777439004335920 0.0120181444894884816843858823274589 1.0120909462708088099112654541520706 GT 1 -2386454624453133.3890356863008003866301240833427122 0.0922853472949746437156202560848316 0.0795663573947943462142937057623599 1.0829103693320455956310965284898668 GT 1 -819350257053705614534124095071027781052.9819565448856095217546293959389471 0.4553193401376405638476230912352024 0.0019119980518926603450544248522497 1.0019138282534344897008577420089706 GT 1 -1776569768859526907038712532041867120115.1968939892452226488221104706407259 1.7513770246443900799552149860569600 0.0694010855789805741208568822489287 1.0719269061088914687860101388090511 GT 1 -33463848914932697620384079.9322706527813259762150754530705847 2.2523003770718310103920629570975475 0.0548760399971068974803678359684282 1.0564391854847945813666740413274911 GT 1 -31363729884204685211551347833076540.3777225717618763618189538235804055 0.0022626894824481702848123322675572 0.0728211135721934372851861273214753 1.0756087585404918742199306475130574 GT 1 -1236414284829916145824176.3428738783979692469520860934533404 0.5637435251340775093243856411425110 0.0929237198689237542733762797190890 1.0975287308255270314978290878102721 GT 1 -10406117414387.8394323068801748949544138217304798 0.2559296077715423615734600764980524 0.0945436706748804685135153374704950 1.0993162310656201765550004977019764 GT 1 -219997036370.2243207915089291088666785387342416 2.1698186992891288133278433845691981 0.0792199060263081646174542916129372 1.0825340399948348874172071090750821 GT 1 -7309713106608134527844331017021.8235556280184790126690323617492987 1.8909058620135105619758889765465807 0.0605494763457087846911550573084948 1.0624601239375863163801317418762679 GT 1 -304265185196120665041574.0423402163488188591730583407933865 1.9982963864813826679858304562634709 0.0655398513448148733952753069825628 1.0677862975595646187277479254878436 GT 1 -3399107515231584052.9466788288375806051318303108313358 0.3960217555112083048579458740809669 0.0095449255883776914396202028262696 1.0095907703470565808105671313522259 GT 1 -874252094113836036009097608982.7453819459194686949246298904222231 0.1496232904172679495985911622008286 0.0138887705503739106379030383423732 1.0139861219694924645107395621417195 GT 1 -8245.8549145170317355403944401362569913 3.9335047040807183060220124603882561 0.0359178782073891283973659538709763 1.0365787994183860427091919240551933 LT 1 -5.6316574802528283653560764142605219 1.3488800437615273041624355638320144 0.0329589755398028577937625725890188 1.0335143599611061057888463164113578 GT 1 -50.2582318251373610099535266218879829 1.5047521408510912981464548471779527 0.0707225779223606401314102191185008 1.0733479603368864927827798195257086 GT 1 -13234903958658414051925530809815578467861968.3792713262690102846347426129643085 0.3042534955198158204121765852658345 0.0192349166352714692657627921128689 1.0194223145922018160476930350666627 GT 1 -10923074477809741155435778675283710.1367369711214645432347908104102130 1.5753718510834564255511832037628785 0.0330377393534198161673717016357699 1.0335958115431866971447654000873358 GT 1 -142283545931306232212933878.4715509706747688836078414094260629 0.5499352743028100190837286601724476 0.0303674626722477669115196002175656 1.0308381067551345249672288278592338 GT 1 -102101.0161914803704906320854511516119234 2.2637842239814516977748447570276719 0.0597839607138286828201149108910974 1.0616456010968907328055866247189335 GT 1 -7051698177.4756303456509890264241103077368367 0.7806698415943208090214177600012426 0.0598614878845446735104412193644722 1.0617280612592065380834029782940546 GT 1 -185447312406883626783862823192772473.1155699029155597164880306511581299 1.2595706827945645924361338021308957 0.0338048252598854746520253381761296 1.0343894209333835749392716864314843 GT 1 -2909137713351005.2578414136056373951054437194452572 2.0255581923348917612912446493724733 0.0381835393836741103541675597434673 1.0389316358991582428839776956837329 GT 1 -3936998382716250944543.0916891357342415838265578859876489 0.8440560264063091281752353098845963 0.0893294297000884375242849832915798 1.0935740604022326118213916793788366 GT 1 -10051194687552397390760062348330195.1914904950460916661489078069359184 2.0923265179473627345731771699089135 0.0909330874980010992398876005905386 1.0953365764005131489538593942679455 GT 1 -20879.2364691339757508498108695920514127 0.2698794458342264287555421021582845 0.0067546408243358650002208614308632 1.0067775566611289108516942311248201 GT 1 -95706825065721115989113193080176994943.7810040833058620573141273578042651 0.7692859474636930530568369666642928 0.0883155647859536948786789713791188 1.0924613628041551499176007287889865 GT 1 -21833196952757466.1419877202508717414927129601495382 0.5620806926262775790753788850918825 0.0752258497486869487360967368974870 1.0782057331725514097211591645910023 GT 1 -13268708322702182226987601063524691081.8025873518858039847855253021319921 0.9032044644080661136162059027181075 0.0373745052698076074741923753137265 1.0380908371842055318985053452799660 GT 1 -347061719231647820468391.4911013021727179297307026926271600 1.7687685794813459205558667510566249 0.0623354679828006922605157863100987 1.0643630357176922607673311478905040 GT 1 -10.9796135639957217723571938711268545 0.3045602103573530354276181573705101 0.0482303779762969216471771713237227 1.0494322671485459726979166382522288 GT 1 -144278645776.7982312805164603726528089937785109 0.3018939534062947661009350703802633 0.0458120401315786734291869392783951 1.0468946040174441158426026186264474 GT 1 -168862.8244202073007192341220008816191936 0.6805179021604044338897566324751158 0.0989123241043630403004348421292378 1.1041527165679576985228286936026617 GT 1 -80148.8984236776018220188434642778953783 1.2496536704979063288831191602614541 0.0302860421348669175443247143527910 1.0307541397717919335586202385275616 GT 1 -276833391084399333076851412.3005137147869083906754748028126365 0.2786855887703737208394303690911573 0.0953491602243298204460465394287317 1.1002062221295387298215994743155400 GT 1 -7335419006895992860524922415983.9118920655324058224674952408955592 0.9492229206179681438135778952955013 0.0718543515049069026423573606857431 1.0745666097017447456538115009204334 GT 1 -17377967204065558858850193911767949361.6592161071444706462862057078934523 1.1917311308064764065655305296094768 0.0385758755426904979915668956918440 1.0393396307881010810283145254398300 GT 1 -1918036.2643719684427104341723146775569559 0.5307413180680069950530441625388344 0.0863102679922515184984090425720340 1.0902642268564576954665044503239262 GT 1 -672435785776779109934843918.2585546499886694229451388166921427 0.0234711674009939121609212888265549 0.0065045980984676904857866577312675 1.0065258451826239840140288213636817 GT 1 -751948739181387661390140063.6828067388594316124178025893623258 0.4370828214104072930474537065131451 0.0035579436297703272445073519460134 1.0035642881646754489296358218438045 GT 1 -611466221569167507301010881187936096873841.0831786930706121205030872635099938 4.5854121485056712620766240476497175 0.0138830306749172992722474337896398 1.0139803012683583933130216442064086 LT 1 -12702981813585180677312149.8853679115578774369673079396710395 1.4846850795203493092891548536118502 0.0258187751774741701263586970618125 1.0261579302009469853922729132332502 GT 1 -119289544.6799022349031524308490263756750916 1.4738182891397492826819300807154357 0.0289806726612994479004533047069078 1.0294089063176381869111518335630366 GT 1 -10682619097147656070.9749520953887621780332510475677148 2.1133273187961027171592514024967471 0.0403637782900155441776235817577247 1.0412010020533033705588598555805388 GT 1 -885624785870396161734794491307853202990.7268545966476865567335394658754290 0.3426986281435221695618170935607370 0.0135040779939476889530175869016933 1.0135960873282622696725138100494245 GT 1 -761715958814538473913.8778465527804222823407917956173153 0.0886537237858367456084453929100294 0.0777229419942443657026728645753928 1.0809096038132031378406359317097481 GT 1 -167779755.9095336389826452802614185378342192 0.8334548696550102523451362661316153 0.0916489401474094568350645960775984 1.0961243453092812647064542706350409 GT 1 -248833023699479.1932563350143996490750584870683011 0.3719334389105593244572631706376034 0.0809971358876288098187252627441540 1.0844660400781277824628975359443755 GT 1 -4183281245888009646166726327732266819.0395550365912025203796838998451791 2.5557767394232038226917910120200310 0.0824640246876340729009397160074992 1.0897669517996868646961818533170194 LT 2 -229309815928167361.0976406121525604852882183463508102 0.4081074361219389717612148790314570 0.0665628399706185622578821470171705 1.0688816347853597791528470769756801 GT 1 -51864.9693904752766681412898381634795981 2.4333798164373700003244366108993602 0.0082108673134933891238245289614777 1.0082447621493573200074358456314689 GT 1 -413288497211986760.9833617385899803450002388500739719 0.3844037060946038045372857733515753 0.0988806088326219052733788094675452 1.1041175205326917908046970018647050 GT 1 -111765384554557.8006868246815749047880374855408205 0.4994479515491598366559942917042456 0.0676234615745758275161805742934310 1.0700185347010127454663779616183143 GT 1 -7828538150433801328441762937045.5632763702523217149021308292238563 0.9801757332778178295698484942304765 0.0157403686678895056125920880886865 1.0158655637531722164508618580370191 GT 1 -12179986197601736076688961.1018080768386388007484552615615417 1.4248354183110800905449417891526612 0.0238483988171612637586402934909112 1.0241373755505797704004072888671159 GT 1 -2010248431470396370101386710717517291633645.5675616992061045649417746381058493 0.8772186484826510069613858317164338 0.0436305013659524253176486132863720 1.0446109357571636120448412215286941 GT 1 -1176543.5944408864003477252037471228724758 2.0674449144072871446475721957188712 0.0957436013535396213229479496980229 1.1006423319831379509411403972093049 GT 1 -2373644222243547572993469.1271273655429726495892070112439872 1.7793628981942592673800148196939147 0.0374428457822198332976821382252517 1.0381618335776939904552229886498089 GT 1 -321384227657329573.5716055654989421410197156064335430 1.7018558374432334116735057352241123 0.0005063269070450096666861504780631 1.0005064551337983389353681867487272 GT 1 -1684.0878825736585338900948160322428655 3.0448146636386247370278002627487901 0.0250758669172229420441658518765219 1.0253956232346106979269168957587324 GT 1 -40973265914819200.8527586798503888740825640888654625 0.1285322361266703591251109804403180 0.0237992073429908097071729499573445 1.0240869835472343960708100654113571 GT 1 -68604069444.0361382152178824207280462537198470 0.0532538082300779095012272697129924 0.0005494433367511520073008072446569 1.0005495943360542093085595329772045 GT 1 -1189320717105245383371899685835109175.0028904953126880294181654947779672 1.6944404365351717895802805110606885 0.0372838652933929906273021473811957 1.0379966824896871446094726902324428 GT 1 -545458101030050276877.4172251006114860049583305289647445 3.1997918697092772601282700969342499 0.0552814139317505231101583464591529 1.0568681883577625681805860569141767 LT 1 -231591862184029796351971214.6159992747641568843541410922087397 0.5871058449358616744587363501227461 0.0827879438130024446010664949797173 1.0864165835285210875089446185591114 GT 1 -333935645120698079591.2941681737974862337245917673449585 0.5558403252202283823297076322106802 0.0980160082794606266074349468506825 1.1031585066152075000580647028823711 GT 1 -85270086837.0834977983060823896526078659493900 0.0177291848392660692626773393319599 0.0206956690197085215844149469189419 1.0209128257385756660738191377219243 GT 1 -71913017655036966621777.7683202246444394758765613349229955 0.1406887121644101181735039398244200 0.0653203150352102959715495340567173 1.0675513913137446701147485313666941 GT 1 -522317471620066284700550.2066523964142542226140522807194184 0.9997982716912750620444825662548872 0.0904157593575561008341261579171199 1.0947676622868813153137582896007300 GT 1 -34732577359886831696.6655109532852148687610269825365557 0.2363923665641741256079330567245191 0.0181925276826525537533137938736481 1.0183600465526111872964904559425060 GT 1 -43000334830176711636591273423496.7243807317698130488369587375548913 0.0113618721889062868788763091322754 0.0082101664942251034651378811453041 1.0082440555283654358327852474770777 GT 1 -21597705815826795255341785242212808429403296.3634788179092704588843313949941072 1.6011893063033936721160833906300012 0.0551074471346871089247594487801826 1.0566840586244322425391721943746677 GT 1 -42611891128651.6226201179587541860331092641814247 1.8339683853927521111851353263980865 0.0031527695102316119951388486514484 1.0031577499589167122982182917849794 GT 1 -80414336210089585281200345574664849.3564814009238070083345316546901346 0.4571889102140804215129789795771224 0.0292036071668238279214028336736545 1.0296385208008128572058266302125117 GT 1 -5678766221056600515946467728927053656735.7555918623685432076668048325462966 1.0789725168598779718956398331833407 0.0086750573711328837036748313252042 1.0087129047256165647675166567782508 GT 1 -2336531.4014888242042588939018499259649048 0.3929786695506411440252800112265838 0.0882098786455539284502896913631642 1.0923454454856080871917496787177970 GT 1 -650755972750564669857283187968489103659053.3126482895538068683806080676449362 0.6114156990123383766765899366253857 0.0736290778654082686177890184760311 1.0764805606799932438681144950143101 GT 1 -104525440276932773732168638283317.2894890350626178371336668543061785 0.5776604132317487876009912908574410 0.0684501346457098081216555961426939 1.0709055580552187363407787101057065 GT 1 -7091531047979223336009137.0154614502108427332300197995534734 1.0209332236552354951086245683858028 0.0465812209433871998682119890715914 1.0477010394716694519028976204325679 GT 1 -115492288518879034137379216454090439639.1031519895843502746702371190750706 0.2814011223414621141578828986252943 0.0034416115970799849754754397099972 1.0034475475657181801934619921599302 GT 1 -1047652034275034.0261065859589128975242151849270440 0.1820660616684830967877960009722583 0.0982126409528904894068307035102622 1.1033765305616739764225093761147866 GT 1 -65675.4383646521678277461397059898515534 1.4451075702106849557174818188878416 0.0762708554069621548031040222816427 1.0793363838698103580295113279600239 GT 1 -15134.8378413848950295364255825890945288 3.0053628126222238510568083813254558 0.0948094876116267329309676348735245 1.0996098465101475966724508837992549 LT 1 -292451097338917225546355888461.1193704874421757853174399674831500 2.3859694990006995845002261573182613 0.0239637835670537046848844341084128 1.0242555862565227304715363093929386 GT 1 -192407.6219410814866793976041025937924093 3.1282462889552933055800490336210662 0.0698203414291523784364346712109192 1.0723775302329561410417265558709088 LT 1 -16612476864675061858979575104344008.0172865263872611015149755360584444 1.6607920538244120143320173425519685 0.0771541404111521161699124081211014 1.0802930577872593128215249660881220 GT 1 -176020856797589745085314358.6532430221900221584855835851966157 0.2050981509764460123018383284222518 0.0384419936947908924052991207118388 1.0392003868024454932022427911757598 GT 1 -8522.1859391154343004839215408771226310 1.0342126260106690358667537050294625 0.0706288104201444708114718242395134 1.0732470617574480694359675621146084 GT 1 -576891203985.6368765569425370102651886222259572 0.9279383150961285276152250790263840 0.0865578849962496811003787764606219 1.0905352713417465981254962040364599 GT 1 -548293086776050.1018653385746527889861947600969979 0.1292975769814446901313457314349605 0.0782204897505919318886344974342580 1.0814492269212858606322985219991110 GT 1 -185762778659173790930066938279.9054770180532148895772841686437982 0.0604023827434858900397495080767580 0.0676489243029360513371680697741273 1.0700458445645756216510435197169729 GT 1 -31620765871061796.7541245773237034920155744144033910 0.5976942995683338432429457831395184 0.0726848310010179739726785693447461 1.0754617830664837587921021852766825 GT 1 -141726.4137253754456403798060167288397566 0.0456534717746108914789042714992302 0.0084744463350247985475263193342595 1.0085105586211901015596875336443109 GT 1 -278.7337519969136553223312058300275777 0.4897893033671870157294843995051229 0.0524147681611652560906385858058182 1.0538383916238953295105380299629443 GT 1 -39253428590054913058753996124062222300297.6946896076530461260482602109741785 0.6124411116124631710426383809887850 0.0416621490868742075076805552922503 1.0425549004336015997305521258684630 GT 1 -7171.0696736172398089248246058866672019 5.4622946850909063578309290943714725 0.0300854963647271339992461537599047 1.0305473519515108450529747535505867 LT 1 -603763242362.9494154165469496908680907153013156 0.4472297604255032607241823479665548 0.0991939166385111064300307794149196 1.1044652683318935751806015005115447 GT 1 -36063551031288509.3174993061767077035475097166825361 0.3510860705810785722273106481119030 0.0107051355035441007830794518096588 1.0107628477141887788293072851632733 GT 1 -4812778610296092.1508865625628794553981950457176068 0.7797377957855957935439555047498555 0.0069125750442614000935589548414749 1.0069365775679176120002014288595478 GT 1 -656558104240127893166606.5124314225413616324915628463755068 0.4355875447354413087733813670724423 0.0051677514429190374056817910910889 1.0051811504521742552791741566456704 GT 1 -66668932219093986675316617262535.9461756080854389663978356605225004 0.0116436375498221834445710569031158 0.0657651824897756484803655421172918 1.0680274617411273978328550021360018 GT 1 -4409.1182400336598801215463721882492607 1.3432064589996658781928875746226448 0.0755670774275681024815601742595411 1.0785747861442481217471810023296939 GT 1 -71492435189207949786341108618129487.9646816272547232051205318056107170 0.0553395255080566766090537868788609 0.0176385196728790766369684026589945 1.0177959321227204289482049539608613 GT 1 -7666977.9012773000465253311044527883759580 0.1745825090314970416143363049088733 0.0540572901894141342662539456918996 1.0555732722180432510334820298198269 GT 1 -1027298570031406127765812499926353075.9506693435877768623721511635292657 0.1466001072511226548255730937423579 0.0212149639519676240151296027027112 1.0214432355892985081571466113378438 GT 1 -290.8863488991768494316323357560822014 1.1975713563397871665158670991108152 0.0927514665081973381979518560598557 1.0973388493225562303732263697664647 GT 1 -17869894251868.4207986643265876227755318793338020 0.0115920491521736403677297286235159 0.0702321769570567627145420982704085 1.0728203766452404026293945194829911 GT 1 -3860303767920248025196053.3878991248443765499498117210260354 0.9500898579740681729816620238859232 0.0834054869260669017281947479620155 1.0870900930979161310658797230851833 GT 1 -1375154852223488.4002829353981525839844601681699383 0.4525769233069576674557225654429244 0.0988488962923645146614726020541905 1.1040823287672483213970167470233882 GT 1 -2798290686819338454566155727613486767782424.6432164835452645219367790901298119 0.1867048155042862970933698606333329 0.0090908344769288279324644033391956 1.0091324082647631706406847408418716 GT 1 -100388685870651582091142018085202919070.2912215101895960176573460456171019 1.1647699076133859826241080272546709 0.0552379652237883351960553507901003 1.0568221982507558843592898239400949 GT 1 -43967816307260340260.3760373570343100325877592787734981 1.7261332539922014415285927209639597 0.0433068008155741193254898628178753 1.0442725249420484931999364106066505 GT 1 -2249073296590576559755546049074057792873.3847664410922763579032024504407170 1.2822686311796926309678123161321280 0.0434295742446807272070296547998789 1.0444008642128889042830667548547402 GT 1 -2656159909794666710573229739963715317027610.4887974257277247997125926960460524 0.5873500885364554606386125365010193 0.0060191050961626305589649824503497 1.0060372929289523087129191191526038 GT 1 -266800910140272584580173630448647489.8155967710598704772499232893030371 0.7131421597703593662188058297753135 0.0227937510376697494348223076342842 1.0230575448560731190207292386391003 GT 1 -15180319846825086374012299358355397707158701.8632570634938537063234284848826465 0.6866959629719657431629044663098120 0.0470751266369802518054369550598280 1.0482192101635248643154919917190255 GT 1 -36792583533117256717930190622523.4174940940121600519805173557713322 0.8948166099699323018848540205350122 0.0330413797554631805792225459236178 1.0335995763322009108781730971529322 GT 1 -5293357.9600683150262817231743948559837993 2.3553499865083429909576273196430330 0.0131725350537512568735218655859493 1.0132600623812026772882634621410347 GT 1 -48661787686232216880396407365070900.1682121274646068453656564194747429 0.2700695999644704140191111219467188 0.0000424271203094258569770419485877 1.0000424280203651526706401654168719 GT 1 -130297.6391937813037224229566637717245386 6.0179611529801518204394347048431989 0.0317458917845160508082219988874696 1.0322607176678140373898195518967947 LT 1 -200928538040352833011727962233077241869470.0566115397117853398341490510717827 0.2384363765018131492270919174503693 0.0383164617438181636669533886442490 1.0390698447480623809468208234049433 GT 1 -17640544556.1942887975311638704109360717785467 0.5050221820306632456905681349128267 0.0239183647402763156628726029248019 1.0242090533827557065153371123055894 GT 1 -1448120390778748565063817659201977.0304935944625758523074673740045648 0.4789678524744523173551628291513674 0.0944331796647861852238943376310415 1.0991942105268412015056415503235663 GT 1 -76727885668831308692341105140257124801182.6761893064737436813405659604723960 0.9511465979160110683727867847247134 0.0905702627386578365953382725405633 1.0949375382563352024507066525197106 GT 1 -19632699079495283370063900901580581097.2961864562826016976946131327050706 1.1561367660367983548159038772372247 0.0069127770361565032279553575802993 1.0069367809658366366050405857757064 GT 1 -1771588731892616582354753605133636434545.2263742988373568733918402618494318 1.5590707251548413231197937584793003 0.0860449359835130923865875993751490 1.0899738728323281777301470492119465 GT 1 -20097043370309.3244651136212418668534940394020337 1.4908975736015511168051375106586680 0.0152589410331032814435548805517379 1.0153765566677489178560847101528978 GT 1 -1662505852639947450.8810712676354749180421742965461151 0.9212807028588185728478346404994212 0.0674160934198582985118489913544171 1.0697961512653452767834677542603381 GT 1 -25354713271966046513907802649302854537907.4540583002588608248369338447430198 1.1847281989654881082374116552587916 0.0768169843596538475426924539379944 1.0799277806675227870272886409435010 GT 1 -87675376474062799365137779217219823.8398289640196995134189327872743502 0.0122494684203609343872740114726280 0.0675351808799577789239102358824597 1.0699238556610753305207306621187962 GT 1 -1520628349915290281943846026579886087852.7130336900939799921066383334327819 0.4284577700177450327233135462860628 0.0065763810461634021775622212997942 1.0065981007169195285431993420505285 GT 1 -695662.9959777848527231891286936797158153 0.0039523773543631190916756268528194 0.0590168287157379812328564823935528 1.0608300234203716623004429803070622 GT 1 -15247886647819157837794409794100.8259206029911765392317464792444197 1.0666905011114995497341203427680336 0.0698162474827877163249153745692483 1.0723731290000139447451733856405053 GT 1 -19002749672024054571214605137649752721277.3262774063919563347353367428426642 2.7709263853861722530804859128155512 0.0603048023329954454836431565635993 1.0641341163192643890182085113027175 GT 2 -691561572079177951364976314172.9076867047606542945648520681312626 1.1427171721708102549444258395473291 0.0091840352648566122726529455132614 1.0092264685222362696833591067089663 GT 1 -48279093989684122473725463419311.5336545161683867604092528112524332 0.6156998321506161758174581884141782 0.0119406743944336114243848438463045 1.0120125368774875578824673347364751 GT 1 -231.0125108962109266280187460768916980 2.5815020645296113822045673005850880 0.0200938940887947394144016989920318 1.0202985222023074303604719578170360 GT 1 -1170245.3206682414839857356884499489838824 0.2608953955003077609147285758514722 0.0071804206902269328429645578142056 1.0072063239830461520268941360347834 GT 1 -39413388.7893422343996175806872085364601663 3.1640447318829582027792400387526453 0.0766696038306198542341773340504823 1.0797681495179147126473311879856875 LT 1 -650.5462139402453841698223235214692857 2.1720507481558384983136525833308745 0.0081529990745191102315401720921589 1.0081864165304102368261210372617280 GT 1 -747432818449121756478386012109640741.0214419730384040260439778352855232 0.6484199386237598525571346524837441 0.0670172543009646349749577538157552 1.0693685716616009064802142742208256 GT 1 -949861478314779883744893228469129680797.5977178147856807872818758232006152 0.3156533653582545204667539602308824 0.0456091343750933769004744125126107 1.0466819790479752373201393194356957 GT 1 -1659.4358904176182631933637597204427771 0.7143130701944645475577968534159507 0.0371957921641360386626975412157375 1.0379052026674567754494460983664045 GT 1 -10766053955712723910890937490472589368.3581055242460788416284966704765378 0.6612784756230902714906251595349042 0.0129227337816197575406084745342065 1.0130069587034809399427614645772173 GT 1 -728409783733638069477507534281647260982.6958550023009053279552196863116958 0.1849968466233427548063889499711541 0.0761570983600407417687833197744139 1.0792132416656434325061806000750501 GT 1 -2049005448117181556481685.5729577776930257045178520530749711 0.4120302030833010610631203683803392 0.0227300559441711777286625438483772 1.0229923661716269694513979820085895 GT 1 -986701080555250704221569241.6830530386523749345344231702784406 1.1816331493566657938565814640789300 0.0814275913743438374573182168841779 1.0849345438732917621603364468139556 GT 1 -17112.2764596177239970961480884261968321 2.1826718685158844938030057756643869 0.0906212364345713112284901594243269 1.0949935900021937130238326782083405 GT 1 -40206667468162397773096.8187026408679472265155874357588298 0.2951541084615791503079658475130108 0.0185639906335969391302569127538217 1.0187384641649376958062525402175632 GT 1 -786657100182835219318297245230.9141795275741370085944860945765720 0.7847626072418539641275004506929755 0.0293149825919080467156500831933226 1.0297532532155749976356434640133118 GT 1 -1980863040406144660093833.8969842953518765713194609695457885 0.6771790571458818031795860314473006 0.0016592189705843443136762755796703 1.0016605969988919401719100778940400 GT 1 -1.3023048626391214167467887564379642 0.2863864377891144704240407514490820 0.0146647954435689064719283807468243 1.0147733865077420045199821857831537 GT 1 -4238438033751139911551522250343820108535118.1874238025392671444903469112606259 0.5735928387143654942333236602789982 0.0966884803607154052631620317718091 1.1016878020688597858648307773870734 GT 1 -11723213910892175132156952.0980863074948323911259401727288952 1.2168699493222477265393614832236274 0.0143979400806099874568027986203428 1.0145025961894509339535027124204819 GT 1 -1577391919000820964246343035.1856031091493713102097206158575789 0.7565763395744751537381347825341303 0.0475722828799933254957180367474859 1.0487410623989366585628990649468429 GT 1 -65.7243853074999573356921836057704228 0.3426467337426389176981676427568393 0.0087552036426743843340505221206927 1.0087937556233268698201704237787813 GT 1 -5277946153290.2258051256165710285474136930645056 0.2530966588551462442550549454000369 0.0765319629323401070402359476037856 1.0796190905886266463480648373572990 GT 1 -201320475223319184560203115757021.8161598089842481929019463248378481 0.7684319012579933897536413712100921 0.0916167663945314658786101125750901 1.0960889259824185417390698664830542 GT 1 -4564137536219472734695123339749459909933.2089843021904027415295887927034842 0.3668532938697076738279997986815198 0.0702264624372449988060282439501746 1.0728142304847592821253632874564853 GT 1 -6335596373621660902.0663591380156542363239327591204474 0.0957074487226826751684174250076568 0.0159331227364020589497165317413505 1.0160614195406007309983938430682267 GT 1 -20715190105192904743616369850318319339688.3039458542728646970935491081154476 0.1591904132475865090673568436317455 0.0147138876152896738938291630206236 1.0148232105620226366534531859789230 GT 1 -13.9095017867038131544181026667295408 0.3604406891292694008499463285929026 0.0722521016402618450681737461047664 1.0749952443528203045585592465791908 GT 1 -1289213321701980.4608412841448771362416137626521940 1.4524388431469237521559640038397054 0.0969898036584992774659113279788528 1.1020214339993326948868767973971787 GT 1 -7353106503035719399091.8208978110614740233596545102120486 0.2385019058563711367828457769722322 0.0178410886622590111266180678815139 1.0180021595469378975643743612107491 GT 1 -1329.1403443613410771868035053381605846 1.3649965701795793947561153181749442 0.0548293995998054182415111284279018 1.0563898382578724467534781561318786 GT 1 -17643477.0728652693240519648871700801190172 0.7246371471011175428665126261358476 0.0037119388093695231627170023285038 1.0037188451501384279968269716885499 GT 1 -129667153530550577889482331339.8885101984686231338922636718332467 0.0926777602155245571321761395947042 0.0313920999416843184510769534877096 1.0318953928844735205663101085801937 GT 1 -4206501031525826009.5531320269093412257557880176238199 0.4912867496845332012711859955189337 0.0055741903073469450619798499631809 1.0055897840815799464508053737349596 GT 1 -61785741780170969289316857819904405771.8710686026214151803060488369151458 1.1625201407253026262292688567744804 0.0253696661277266055555706706106032 1.0256970246242181070903112814855915 GT 1 -341.1407814101648732464990743418078639 0.1264455885523418699239728809949270 0.0192612497947647282817246081134194 1.0194491645621525903124992396497878 GT 1 -1307128741270474478.1854541862196408130802868849110631 0.0045832047390988040701390229989749 0.0373303852429221359912548466806331 1.0380450052214318412883087578168203 GT 1 -156858350523724986985.5190928632444738816343837810031901 0.7327084611961598440389725151738633 0.0141543556915784983805617482054335 1.0142554839888598192539427531348948 GT 1 -129137.2096086721894421483396328300322599 0.1152297980330072333754962072283869 0.0523031666127930994424443811866093 1.0537206238778180909429031312648266 GT 1 -17588266847939880065.3018119226552070203225544051024737 2.7149104125673995538783728223559876 0.0128603862526532962204589416082349 1.0129437969205786772633367843045552 GT 1 -2902372692995240627241018623240490967092.6494375799610208360708805549445035 1.2625860666440833942196281995688736 0.0304495203623534843048006805298452 1.0309227379523312765477666583346296 GT 1 -30720560551291516.2535432765361694521968000869139290 0.4206484964336726795017109069721239 0.0501734593032415757152579794193502 1.0514758997991582226348921150888510 GT 1 -1761521794.8070848676001610082060316817640721 0.9123443088342819113158595050909172 0.0334452701733298760290670431318129 1.0340173551116713264121906891865022 GT 1 -81621444009570977364009553704408151.6470743521028576087451441891459826 1.0639965112852509751179782134082318 0.0510626856545851037709551110736315 1.0524125369844419439781454387161606 GT 1 -561186654949516048592.2137689934418917888896021529920647 1.5864466494484768323413563130764107 0.0137661674368152737664531821708812 1.0138617997947595795816749347278594 GT 1 -54519625301534713055852706981488056122876.1826937136822238119806809109692899 0.4493612837571810294752713318812299 0.0445552002274186249965318727081758 1.0455782880092580661396158474942514 GT 1 -24086862373314969178273647.8044979688647091961741933376162990 1.7402982379245293159731405172808686 0.0423633430509158931934086243524096 1.0432868454490173498874912437042924 GT 1 -40830150985398574743457.1622236323729389645248210004982672 0.7514803661637391921425664940123606 0.0771210821733901926605101905090980 1.0802572363710113828913851928763964 GT 1 -30980.0501900624893326618905325717450895 0.3262880776117300094268832726711102 0.0683517986268223679278548965696817 1.0708000018926885078673519394833672 GT 1 -3732239654027097814133439657556.2129688199371100267334120030795653 0.8127667103788189673486198693306576 0.0899127381050275520590878087468981 1.0942147918763262830193043978934439 GT 1 -25172114842567603758.2965452089073225141408002793609997 1.8293994515730416972326855138019185 0.0261887168094254139691869229391843 1.0265377485368767780015458817866842 GT 1 -1424043579327033796.3421004727074255066828359329607534 0.3578312062911844575432852681343855 0.0562103160975162855866432002010149 1.0578519301347494194904894806906038 GT 1 -2632811178992009618429932505523963237493.3182332990686613124452847321914169 0.0256121506076549659493834484462871 0.0698069112510594815612546025669357 1.0723630920746757869118879315059975 GT 1 -24946216182654910446399414.6167565108807786893711216564810920 0.3398659483561834278830917621212175 0.0015589830603851233735699164952029 1.0015601995389537854184173145005259 GT 1 -51292411759638231310856292661012924515851.8877019391567307415616086933040484 0.6543802178909609289512022118437521 0.0496414644111021391222603090291261 1.0509159597041868769407226066033415 GT 1 -1280020.8585272394405203431759684557706435 2.0938559049342848488525799741107083 0.0267727380470471395283802341661750 1.0271376557719889557713368719892357 GT 1 -74306760733922742405833775439032967.3471679822869072719823165966943396 0.6014268480614640878837865453367627 0.0153426163410020118380347687681584 1.0154615321670059524122018235059440 GT 1 -534282564421140956354769714451.7674400071081720408467808728630923 1.2084856052945663103055220400437260 0.0002674021465103008959934114283148 1.0002674379048389913538924955955019 GT 1 -14952232223400741220947.6360117478823606661900612920679420 0.0106942367124893376867957011430017 0.0249989418950465181650592809903724 1.0253167227490290184435332515329237 GT 1 -80656638385699167.7364165096566375187437616764347629 0.0456460988215649314795673025189122 0.0859423643235429559238502235832509 1.0898616507891279167827312325290043 GT 1 -294.3480984761459338473236952382278772 0.2127390274652260074483780388491994 0.0708598782484262663312842163013170 1.0734957208084461093918665094817847 GT 1 -33.2682474313761712558948180250785409 0.2830443384249696045947278516204982 0.0388627829708502072044993159489376 1.0396380945344569773908484181674984 GT 1 -29657718949724882083662588073086161098.8457834089671651165600557597062677 0.7881028540230467690573382511163916 0.0425261355174493731976248937974755 1.0434568538794486990156073286241641 GT 1 -3741.9182834800694401855775404656974875 1.0434063762079209625888064905220942 0.0850004649187297234822930121740409 1.0888317218146461613091260779992318 GT 1 -1881084465.4533525948519845262869938172540079 0.4876865293491813808408164264292368 0.0877705376890044085846879377719613 1.0918637171434563559963692403782828 GT 1 -3131744622954813.8055575445948526318967373382627541 0.4190597587431396209993328189140885 0.0298121893098128467335477559088163 1.0302656069582657408053470167706079 GT 1 -14.8901153329668502223765109738015590 0.3782429518418604825384894080472484 0.0066043492191970822701323893028076 1.0066262544332253532861595400970604 GT 1 -93431380450.2782955115410048763590223706727702 0.0479747566367721362491974272123524 0.0250719132388612741381565979439300 1.0253915678725463976759806213437190 GT 1 -59737435919412650783793726616651.2085653509173128417761664251678356 0.2525972264348653174501628121905428 0.0513358319748818829939569208025656 1.0527004228495415527577795449347559 GT 1 -15880735269707290225281031113.1887858108369297413357401530389093 2.2754889427353036809461142700453174 0.0090967038216667821123319522510900 1.0091383314737967160783263846152347 GT 1 -23709798.1649398671418941221967626493781110 1.4911159316595692397448006033914530 0.0046208434740348631263314486803773 1.0046315525740253866522884790690110 GT 1 -5693424878830904315.8212443654511741203814232658955588 0.2460125710786065909902218377227889 0.0533104172363498379893584797000008 1.0547840296432823429262332034903449 GT 1 -41578534746393036195133393948200.4047901591447994768494014887843881 0.0808324485687352830450360072710711 0.0816124989792727466283405233507556 1.0851358630252040325490264569048784 GT 1 -4953287570287326074828653810354.7522450290705080453071430092354700 1.3790565816675590989275020099532877 0.0802949603385056268232968562413762 1.0837022694087177557353753141932208 GT 1 -83016860060829819637133633377549686661.5223727925421555632864618084683137 0.2001814431023375271017457707188816 0.0569900751332884461040771932161902 1.0586784716249431783976252439550279 GT 1 -5976274832790750712778840633.5669881075394362265304891515204249 0.2243355945173072098939585671342279 0.0532449904105284306092615546387440 1.0547149208601558858722077947591954 GT 1 -20807865208949213087404663728.8944836332990144890950446188732341 4.1527004256800126714880715685641333 0.0661776540521943075220358266080992 1.0684690666097474685746513555958552 LT 1 -8681649286011.2107239311876699089639222139377829 1.1515798478133262578979598589598179 0.0050521739598693376613807821014747 1.0050649793389389602179824226698396 GT 1 -98264730968811515879299657432095253557.4007821346189517604550543845058757 1.0110084992564060252305367629673243 0.0955721100566106941357528228835597 1.1004527009916767133397301842306713 GT 1 -438391751.0790175432545326929308967221528673 1.3839066627715610945838278140982583 0.0121817603580840508308379271789594 1.0122565661322219094039573225717656 GT 1 -10966625523537796339834408807074655321768518.8960403698662741175663902807032754 0.0032257617927660696135822291398381 0.0196175572247437667610762250094348 1.0198125357145065698633336504128530 GT 1 -19363990342.9467286660212155708509632649752521 1.7046037334567383692618908949383130 0.0945806366970463013250652216113415 1.0993570577466800119690400997603153 GT 1 -112862.1874138885867102430026073507021087 1.4482672223151389905708811454500791 0.0493816171828389688958263189726570 1.0506425768689029809942260252883512 GT 1 -347991144.8048456591111240106395117148050968 0.6984346930218510861445325056972259 0.0742907410825998109728792578774630 1.0771950688876942534436471750331480 GT 1 -23458594072128011.5373003616176383294191213991678507 0.1572996775984157309563879474013432 0.0624505230417996168954133405085436 1.0644857471080643553534066814516757 GT 1 -70716175067782308031442.2970734342131250184702076416379357 0.3314866805744597920843315812231907 0.0528897616458982898700990051650357 1.0543397845940654405910960941093982 GT 1 -648338642.5944452160115684545827644894642031 0.0137747945962237592418998307477962 0.0879730850485330357873098589954979 1.0920857773350889481265449400726788 GT 1 -3983400658051785103803485.9178365752221400601917586622799188 1.9660297344544790909359374567445846 0.0183838889029325141414085842084756 1.0185549726220567801916436128663584 GT 1 -11219527398960135600.3631084958917478608648987586564604 1.7093224290052534379785310402995559 0.0723953848216610787093964460210033 1.0751496982160496115542015288498615 GT 1 -2872066454223715578507478.5290773756811514424776348280383394 2.9429647632141126358710894804452205 0.0891377363231483905818755821413634 1.0933635856042250403214941934775989 LT 1 -33912885359378212.9177616225953940591145454429332485 0.8016128654037450231478595797616842 0.0169682630612898006788487574045931 1.0171138735588819528837588610320836 GT 1 -5549.0616707931643693673505982318463299 0.0951648122275353826811175288551114 0.0329893912455606914180369624197592 1.0335458127984947192239130706203162 GT 1 -2190025234969.5433005064693430396836722462079518 0.4328684509222342912374105633229431 0.0053938673039675159005803875305547 1.0054084667281171370479972494310678 GT 1 -28194148262113422361323124.7815924122100064248041510466675019 0.4164195022555231216579061941258891 0.0644337467182250504227061027175307 1.0666033145231338355604766488676560 GT 1 -710346231036.7872768689275052425418022647942515 0.8992519764246891658033366662078361 0.0485220379916077805411094303992641 1.0497387538295651969115655673133675 GT 1 -587122289431578830984070406153333042.5418539568055786370063630053777596 0.1894341249174828424352942912178652 0.0533866235812641997042969356935658 1.0548645305948980579894319546869624 GT 1 -541908119352564895987071917.2967555167291276847058710845831297 0.7501263028868803481269905973495021 0.0857961384265101798103667727218333 1.0897016891014103480555558183028380 GT 1 -2219432.5494974446643226820508168220796731 4.7622031091802681738574601783882812 0.0984399405841141968131478891229718 1.1036286169096513733370282596321161 LT 1 -25317288823539589492.5499330582420875993297583991389860 0.5128199194899961868824441136911640 0.0675568885048074402105477578627177 1.0699471357646067475558470264701137 GT 1 -10615979642414921234269319795720.7988913054442694389928282563201588 0.5145644181829073348832194379537119 0.0428324862849773294178746084330339 1.0437768623924065506515259910256540 GT 1 -190192.5301697814309906534188134918812889 0.3426702667696972218672199120360094 0.0172667434908689713642357673504598 1.0174175522110788188966968647003679 GT 1 -3422479186.1432668605676509252602146946790221 0.4851849848787220593592431092843629 0.0497125666443957431376279701005555 1.0509907787230768159095008276163446 GT 1 -4302644339106733937635355493.9832160156762478566626125772489949 0.9128173956083389057111217630709312 0.0649648285259431205149554360337866 1.0671711338511412662962140189902311 GT 1 -7957248418137222740832367039316193457313.5046199140550376488933711363738560 0.6530019589299887490260909413128612 0.0736223500078627633179750456427520 1.0764732981105904110669672370286428 GT 1 -114170882580105586311.7799069109992057782254922578289364 0.6941847863007760280017493756010566 0.0595317683453559075427023126184276 1.0613774089565287185323712481384847 GT 1 -27845566813486019182283612.5910592038923419781690765600004245 0.4458836647959676496010524288626214 0.0296853346127492724037096900526963 1.0301348627836943119317119103575633 GT 1 -19016804694.9205508236487471268218069479646636 1.2224541388176445154179596566383685 0.0498775741655260979392580073912371 1.0511644333910391693379619038897200 GT 1 -533123775423160867933026491324272384.6824092578859313231227440179545819 1.4168320332438252222762643915390748 0.0339402462057990738713496206976565 1.0345295897528654247403673489852152 GT 1 -908571200782765836135510124141936136665.0225921135146529260341662948410080 0.0838496049447195819760976551034727 0.0915864709938949013510926261834257 1.0960555756360695928574400765183191 GT 1 -20115862001354735999.2790228208515549790131057073298586 0.0278999413344125070747287756112830 0.0093743343131987849000066078419006 1.0094185499300410943860914507388560 GT 1 -276508600058992973236380622166484.3831647837241555994114272507104737 0.3021197021404490006367946612646371 0.0287065525785176405810449907404626 1.0291266447909017243410677732231208 GT 1 -6361404391136243.6874685609990114906672784590056748 0.6973290943519497328266206386139161 0.0270344778781464145683614741330459 1.0274066320366417271258796856840475 GT 1 -358112867456264116989334133799.2510801556720555465379992078446576 0.6688871947087106033503664809640227 0.0858870766721579948167642317231531 1.0898011666607411997385117060765358 GT 1 -112849766121171856483064900899318162600.7178158306827490439943066857752731 0.5982344490251584509056770655141987 0.0162792398772060375648943472668495 1.0164132025661644656256963663232334 GT 1 -9333169714808833723234332.9969748120775699532968778627909211 0.6027730937766002130903455560074850 0.0325908078671554177724745007205855 1.0331337167437881094712211088584543 GT 1 -235619633702.6254878630932117382189198346330959 0.7608641789555894881063343241461352 0.0068672026945513932679370130267615 1.0068908904389584219220798165043518 GT 1 -2942266242154963058848390647764429.3447729438731900826036779600924444 0.1141360478880342940405785329898948 0.0943985810728893289876234995383358 1.0991560046979722538294497046407593 GT 1 -1859623639696735832633558674133019920.4275817030091754012654700929576250 1.0340432322913964899137230718078576 0.0003682515515738646586819777367788 1.0003683193728271818356910319297993 GT 1 -157669482544441.1324149074735338092303634729099276 1.3364664420887809058167610085836342 0.0155327545267373200227404381611423 1.0156546516714936219221605680919414 GT 1 -3255263530416319671238952855195216742752.5538705808771147590364754667681389 2.5799541487496488343834318071367267 0.0128128726822341669707646687540663 1.0128956655050028853974896920102024 GT 1 -7763628806400682946000106342176833320830.0535055336093926267114472258844321 0.5471419981008444753614595920597050 0.0650861666654988703410813675769018 1.0673009108016506422019054138846664 GT 1 -15454558042034284752.0670541673036037458371868250883586 0.4721056460346960686699775498748395 0.0535874117685140479067480949314379 1.0550766652319841609490457211151076 GT 1 -1592.6312988258849919492954390717591303 0.3014904818794565279993106638817494 0.0210620973711258555973434948339624 1.0212870678516351173013380021707370 GT 1 -1222916702156254867150930473427523361.7133176332713192169963438101833969 0.7805416320067976881951605107177448 0.0109791847854888487401201108921209 1.0110399008523792955315028044599433 GT 1 -12107907352231589718948582917.3598321827545143475622213533156565 0.3556136160893824456465988536584487 0.0930950612179420572678592103643486 1.0977176427588385892749381804668022 GT 1 -4516225012662530730884881587587437087.1852402379387278783715866708062359 0.3340597803894025605300694083088655 0.0128414279172328741036849422740650 1.0129245917817024202272727545477618 GT 1 -11208631627.4604230389197780339306122088614601 0.8194345130765066601313572740388345 0.0035508146738596774235014497291743 1.0035571337793667835286849220511764 GT 1 -20079270511644039568517407533179250735.3061843621294585041765409323607417 0.3138040267674363364275965823211389 0.0069528374834396844119022423993537 1.0069771210833850511601250169951406 GT 1 -19204133.9501044284680481533007037987562281 0.8230240050882403488812419262467272 0.0918140685633507533108172227093525 1.0963061510387411837083073926715737 GT 1 -167176942686805701262382570692572848.1823668736644810476288858111339632 1.2466829807115998143448751766186735 0.0724886492689464048696649246652407 1.0752502465904669297705567076711623 GT 1 -11104007947883730.8408345832239152573423281976570141 0.5971583082901191143081294418988462 0.0291225819420688374673106197415010 1.0295550616488713308199605334504433 GT 1 -7628.6041167104786948154157868204436192 0.0630124700856971489923736868509086 0.0119580309259038423323954862791242 1.0120301033165333769633945960634449 GT 1 -22846373229.2547385259920002745193185475780407 0.6072547737912327591952161778712258 0.0996783207607222127588821335753977 1.1050031581406552219017804070994998 GT 1 -1081221643030669680870527069938196777348.2175575816046306723475719049306458 3.9684431163926376746485752946270143 0.0477618140176113499185517118058818 1.0489400801247592173342945640472779 LT 1 -507667100252308800676.6461710753610972458967622624480639 0.7162586273852534065811192757725779 0.0040778366371206803492280980130696 1.0040861736854062211742411227538909 GT 1 -91518554347658865471.9104423352791300827442235166455769 1.2866467056880791509086387453743854 0.0363650587724419629320162044083505 1.0370427477660480826523381332282891 GT 1 -6744151810680505098746599753057387736703313.3393206755597978393831160067749343 0.4622106150324827025705246565053305 0.0044572399347508778115541101146855 1.0044672030450068340350279409615503 GT 1 -6003696491023914093574956.8678284820331043699794360100761973 2.7151708682455640751241166984502560 0.0422876924348278432673198352887299 1.0432078513674907241680301451880347 GT 1 -1068631753782918270477925.3590170119960905239952046383524564 0.8137095877560228301859153958774195 0.0624352243885628642716606006921294 1.0644694295389176999319277972270021 GT 1 -4237002700120328003215007886.9997309805734584571971092979622681 1.6724865516871261237396984236741881 0.0329382138873377109073303989609757 1.0334928909343796568750571379735743 GT 1 -96502651078167827053720518775683135312074.6621628771198367689122553213685764 1.0629233561611349611953812935023056 0.0230829109931774994594220782096656 1.0233534933788708479450561105529856 GT 1 -8418703735926.4778606033494900041258766386788346 1.5506470546381197644382340376207925 0.0858322731774062728609330252356878 1.0897412158049865028793863186182668 GT 1 -18053279198475239119616.8819860826979596261882638826242707 0.2007342370241141952354810596501072 0.0711329377362732674128244811290386 1.0737896480786547987028096776239368 GT 1 -19475216241768079.1217312958216034802514264540552409 0.7921365352692922432628502576662733 0.0320025004160707125636047033236879 1.0325257747833493936970916542991465 GT 1 -85277531739011775934.7787242186188048520974800999052661 1.1365639110700420070925557771443964 0.0410291988088337397536854105146169 1.0418946517038634789988103651322256 GT 1 -35.0330940750313489790107908896359078 0.4286255889980746548923263562998536 0.0889136099156009524379311014369202 1.0931175562683101250415842809471847 GT 1 -35371448.5248568426831909527054438685176857 1.6285815571419527669217277259710978 0.0080647151298929018430542296227487 1.0080974108513933131907212265184675 GT 1 -83410154312423740.9974675971301718523212753494626900 0.2142529224684297722341075416623881 0.0919940348728249133680499171448369 1.0965043308791024020347253232108482 GT 1 -2300078349779404787445784631223014461919790.6308584954107518735192195128882165 0.3597629900074717407076534577533419 0.0516675883158054276509864319226558 1.0530501929522969443510507049225011 GT 1 -2923660676392464740312274.1182344654082896123739122973211549 1.2053337651167417432191058451412677 0.0811269159329443545128507522425472 1.0846072683755651724462652888912986 GT 1 -91770032128842813016216717782207366864942.0366645594621682976539001988153549 0.8797655863823187163267707113418196 0.0791523346961804958182165975333986 1.0824606578145136046656202693713941 GT 1 -4944987849143301968.7892256746588061889038963063152748 0.1047852259648101857432136132484337 0.0663480452032831189646767295010597 1.0686515496045535723570129687632758 GT 1 -33368351531898003610891307507.5488131453579833415636745149625662 0.5459957056524889163832273239532896 0.0703317618077421570101573409416025 1.0729274896058382026264068141058885 GT 1 -389082.5462330736980849895999978158548182 1.3018730263726265020524591892101376 0.0962086572479627244301029855445974 1.1011567607717487039934772111036957 GT 1 -6176225.3510458161430901803290866130271232 3.3300600809011967150351387737784593 0.0856826017032330793922266535358777 1.0895775049030477133588329487557858 LT 1 -139660158960665101931051388883161336205.6964106204480084058443798416455212 1.0464611358887315928115041082942274 0.0791094392687167405452028917625133 1.0824140763548195666617525942577897 GT 1 -4247689679264782380987175386739349439271808.7255678513640270642998503711584103 0.1379235367369749813591480643127223 0.0367603235957655394829530772350447 1.0374530129958153839033875714411311 GT 1 -900970909093781236.2394496976615365511145081208711453 1.0097774787347347002809966098252641 0.0134343872806017603544232557971801 1.0135254451185304707309638292177244 GT 1 -206665579.2359118836026518360499098364969575 0.1068473593832719303870620146257523 0.0042447945256574844223100504963849 1.0042538292420141205515020101277673 GT 1 -29336380701885510917109525148870469540.7452156720975456503944982929306385 0.3968964051551592608150876945223684 0.0815371370216154542901016386223733 1.0850538073943517701462631342170612 GT 1 -8626116804949958054447588120188845.7840861389356829246390173031918274 0.7871786154429955338744698884006453 0.0604050979020211702693056726563813 1.0623064518208902134751484046076001 GT 1 -63052709195.9585124174349095472265091930134074 0.8028330683836031343631062294215045 0.0633563748226783175188748495129380 1.0654524050798435541327627417561440 GT 1 -15358343686030004830539298.9477065796426980225852513381125200 0.8945333471589045184586077313140214 0.0493086653632721052235181896292801 1.0505658383776061964818007304158298 GT 1 -586103489869669383927480.3592288932970470614111040978030010 0.7983491347894130764521344459368331 0.0013121599088727755488129856941070 1.0013130215445042994361978340572666 GT 1 -40.5789423366287721211565565496097829 0.1144817378293443418107468739460404 0.0910659568334863546497234497443115 1.0954827472100581524171905114631726 GT 1 -104835926.4201998665859424243218963772673126 2.8760025248759975453201952300585798 0.0769133948241058339596916518347861 1.0800322187879929649113246161815546 LT 1 -358.3095461630301544760564332407918001 0.3193812859680482254028567647101838 0.0373506372086424232073391002940540 1.0380660427388065690370651778828873 GT 1 -534683715139981263358174405812.0788497340435895227310770983358117 0.6361562359749854288008821886055592 0.0869885997148554745946688070438900 1.0910069118439379198094400588640956 GT 1 -414099997.8603697641241098380762593285748589 0.2323045142021397217868412651861995 0.0588302740687490727953813682703229 1.0606317880401580523147362422976473 GT 1 -22365056690777879828218553182.8271598970359712442977356844734706 0.2986604315812742728909454287822372 0.0037664925831040665743194261982270 1.0037736036778328608566498485764479 GT 1 -180345903898.2957231570684868559345600724112116 1.4228455074180918216406334888577093 0.0092816313907950921551787253597831 1.0093249741341503250281528769830266 GT 1 -1824678680528673747439838660477.0154231859439930810986250400785522 1.5033498695498776934125550863014043 0.0715632295939396049339278950818062 1.0742529991554102311887845915037085 GT 1 -73251176686835942003852841763116378986.0374146115472116535332372456592099 0.2772316582167429904275831355257506 0.0213593584582256853389540111944418 1.0215907706994925976563353711724172 GT 1 -194296128185011270177187413086361105.7144389460669287703535261647651237 1.2764249707079088199080995224512715 0.0226280528649151415616866714680854 1.0228879960772292866444619122712359 GT 1 -320686136872993840101464982996.4580912573980940833551622038609545 1.3583408925775643082624807897840525 0.0598673995051198426945180707486967 1.0617343493104727001221230711563401 GT 1 -4271064671.7733070711368942820652239300025471 0.3294994684116886665907709958359455 0.0012166123354793831201141846149474 1.0012173530090694996551639360214236 GT 1 -16833493204130700.3363732630867211983728430032227006 2.1871555252076756492165681746909510 0.0856073194830057621426505484884156 1.0894951712175258638723818905457520 GT 1 -180061046367976051.2886594295461390995053493482546632 0.0773761470090713532094905672719857 0.0531610235440532021509628374168133 1.0546262356751066678208417673657806 GT 1 -911227476187982793379272.4220347797211871997496790917457809 0.4135375813227335542502232506636584 0.0380074073086219481796785587661132 1.0387485282510874031334153088870988 GT 1 -213322346384471357.6769900751088652595884202669182590 0.4567232473913135881536469435701583 0.0468757585377807507727873590457968 1.0480100150295947999022131907900175 GT 1 -5765870388.6012882471564694928961796808569240 0.3491623340143619176260449341926788 0.0700141576728926806936954760007799 1.0725859162548967800502326065891923 GT 1 -1229281426234611852734816455290306294677146.8539881922624942187269614080354287 0.1798246745200633127460735466012076 0.0328629997626600854321137591157741 1.0334151180340486906223499086465947 GT 1 -219514362963453852889500562514126278192509.8953126984660979805226876214094104 2.1305568450368495530698449417908389 0.0967659341032506299813804290412682 1.1017735499660651593811113874244785 GT 1 -3798965528562583783298873812982578.4528678532951326393567854244078552 1.6902525495101161425189508912318504 0.0780370929355545094777949914747885 1.0812502871844548652145412038819205 GT 1 -93064801128.6748356709750589166495380230785990 0.0431607223332445009808111116816931 0.0647788412607954765832423723413036 1.0669722442521529513207157412382011 GT 1 -21224654510236046893097469070293195816175.2341871882954590775389106355984931 1.2827001267886148464722356212855318 0.0486082164164394403244539855023791 1.0498293311537254169876339713980662 GT 1 -157024431460248969925558992557871636.2754623085694928756481784881217416 0.7280902310649587203166481154435830 0.0190751565888957723359105016961251 1.0192594345727366861475514873976482 GT 1 -344865877159968607839435135.6195628394409275459061176243703535 0.6514045020665936860213493977753714 0.0265690140725767628036234210279529 1.0269283494128106562569771852778819 GT 1 -35915.6133495621978963327678540683283477 2.4677411074802528350550070727069159 0.0142581628723284633363899663146008 1.0143607871334814078855916705803158 GT 1 -20021225002704730357556.4273378026494240733169197870106271 2.4033950985531358780190076139489120 0.0688366195538197396508108173313473 1.0713205279004456687421753721412379 GT 1 -3633518488832.5222707799523646512914002315806323 0.6646195383409105383678841113824815 0.0763732260423511856402720241241211 1.0794472132281011309285721651442899 GT 1 -20801821025193215617046.2985826570671606461312081636904091 1.4975415369453727790667228567671524 0.0019298310286014335886844187172050 1.0019316955516967642956919313834325 GT 1 -141616690332188625853069790977263656.2675761318614296623636532725021170 0.6088461596736512264256294218288187 0.0375556135967657403625540957977262 1.0382789948498231778495933549854336 GT 1 -649699884155636998463780159244277064.4437169154899529421255884077251717 0.1920941225267068194751197396830959 0.0525544243729985008940143163747459 1.0539857836467963520149314886317828 GT 1 -358617.8903992333285553397789410538863407 2.3502230298317314073570643072067222 0.0221177816966663363842467094012337 1.0223660473824222981681323916782979 GT 1 -611785247766881197283334404177607599706.2841648161123377897850466155314697 0.3447868565727480939546949806643546 0.0579474223246342327307556902790817 1.0596941910213680352571501967966801 GT 1 -93207.7747453537317582422115609978305725 1.0045466697390511044227852987594886 0.0738887497731887072165287462029893 1.0767609109185601269490712928726271 GT 1 -2913375654427394968827.4466343444016751358706014532362791 0.5961251593726747664747281036806400 0.0818873253003513357617618298219957 1.0854351565692651306139052190185312 GT 1 -134580459982.8189505981205460679471725966256921 0.3192619123709196494986904189324612 0.0833343891320834699284566651185924 1.0870125287707477602523983570745841 GT 1 -28418586488028025294082013700.5506841989426241114169701733332021 0.5281841656457834933078566067253609 0.0756508501442364001750942248100997 1.0786654109052461605833733513083453 GT 1 -6765955043325883641866055854336844233065420.8422588596701137123749110156521837 2.1520604158393592849417260436558105 0.0577421070497120502681935589538798 1.0594762701649748341890221208518585 GT 1 -550239177589443908843201387.5398506032785935186469012222308032 0.3053789205421651398460731070937041 0.0216038601452784230424316439779228 1.0218406399821234350096658065142829 GT 1 -3500340569.2593719513917134185476281646827954 1.8328589402065954712618213378119716 0.0808733746511738775793814546359639 1.0843313801019383720549084310373895 GT 1 -943092404476580256745553120424180.7363830750353580847408664679787180 0.1023148118954127755756324731067185 0.0680584193872509496913994259106082 1.0704851480071060172172666336986462 GT 1 -1661458923986098680.6722365547557741664909029151262761 1.4072331083891846217234822931934051 0.0084993891311525967504384945744089 1.0085357149167299309591150427717691 GT 1 -1.6359285353639519024841203153661911 0.2247721521462253102772306311113522 0.0086136652255768330918860097064963 1.0086509772566246352850335080730576 GT 1 -70278431440032268.8195874176875711221608765438624501 0.1662002874500639344532903392105915 0.0993687082950133896956887830667622 1.1046593263207752213066113321949227 GT 1 -52473599395191058551462280479.6200520926211027491989028623583595 0.6147522336063759318040219686794333 0.0486467815706315484828459068428950 1.0498698674885013229692436395882207 GT 1 -12078.3173593268105737916937055229592419 0.1584353625696615688813719628738107 0.0866918827893887061366407755838150 1.0906819775427546338107019888978091 GT 1 -818257318829383964434181115543112854829.5199444642171956581674029753295179 0.8663340970576255167809005886368464 0.0971440390800877311435262151137238 1.1021922500050962402185173395492401 GT 1 -24797529914619.2140079954548666198231272213613813 0.6768532216903986735371383787197062 0.0552478096338740728104735029448399 1.0568326182941245285998690938608094 GT 1 -1875651121663840870898408913508115229130114.3833405731861499037092161533996307 2.0589357859008071882531040718011837 0.0854734873045574453303557496899044 1.0893488201056955808477476602544608 GT 1 -3363061288190863265501154683249597987350.2967919843477184480384064418946685 2.3706632278523652213520549893055525 0.0154914666477565405132831409017479 1.0156127132389025828768814083296209 GT 1 -295031629191008109684551.8079375793683233556672439419248634 0.9121506992827692279311463502533636 0.0030383502068529863886011688481824 1.0030429753637830045711774812098244 GT 1 -45.9221545173779782009334944220566998 3.6556857743313685205639191285057777 0.0045559716960907482398994084849624 1.0045663817658276521378209150436157 GT 1 -18747194502.1140395561999211172609771305846458 0.8483402670612763095865380292160770 0.0126541515025241689262530087337598 1.0127348971795346004177931385023255 GT 1 -151909119269707718.8825230605070442784971324864035396 2.1895972979340143037244763938075260 0.0017667483132413465749470038932379 1.0017683108537242429554594939935010 GT 1 -5632377745227058127513187783.6981542317645232624055043723546961 1.6977026630841338835347047692492376 0.0090035270347830365568626138920750 1.0090443037248630146865278395401219 GT 1 -60890183943453328561088.5677356087948976872457448741380298 2.5023718918818447071491631148912411 0.0651285412074746645002389626286446 1.0673462363715558844910967559904076 GT 1 -6649491313451207753417474618541054084280.0746773189409657864434572616722766 0.5350954631358788498923843808535559 0.0126224108763479135220124514702925 1.0127027502716949633346301532301890 GT 1 -1266193459351531574.5695530632191611965581684414753568 0.4770328308578635500218738898896627 0.0275305105533569988481800121507485 1.0279165773013358801279237557527913 GT 1 -732777791177746959651078213316689129.5463645044135404489982615284515101 2.3468717544241252247565054067941164 0.0975346919912385707650970766230867 1.1078909777224211400015026867838156 LT 2 -3127104959398259305253906321543360269081829.3466595134675014222725791731603692 0.2970426698405665263452319976546805 0.0600164898153863780692120151067003 1.0618929462287504314499012864203243 GT 1 -2149008.8838835468019476563770222181578482 1.3927782797788004287272896762805895 0.0940892392628239694399883487863298 1.0988144758729995839952329655831276 GT 1 -4035893160547877583936804202359071491334016.5042218049358959952237619249606537 0.0892346565367439960409474527441506 0.0958682275066613165485931689075387 1.1007801631803420815512981161676987 GT 1 -11148079824135590040716935749086432310.0608351418514012798270758785676634 2.1873889163033836285889138883788844 0.0387384874005033755978689315015259 1.0395087815375179434530566446402744 GT 1 -11112572.8892335951835527383324264884109173 1.0580056949013342224477552052842934 0.0098137703143473059555990171121431 1.0098622427505296977292302961514802 GT 1 -243453305130713328964337216584880360.3095054781044411192404673245847986 0.5655575485520880071010696758303644 0.0832365430858687153384364211892932 1.0869057932029234601590946733270145 GT 1 -191099059947713711296762557197111503054.7923866164440829327046783162070591 0.4444544600115150948166848928637914 0.0853918490235559812015540973211011 1.0892595557309318458554961688242608 GT 1 -2.0118949677471657915881270262714461 0.9829751024573028242772004937027860 0.0055585814154245068215065363539614 1.0055740878181986253711166629142500 GT 1 -8868053720327721232689957868.2273925024903941409334121601605988 0.4016102423311477582330488242989211 0.0736599386866001743259683841587599 1.0765138749113768418897345296636199 GT 1 -279799742166.5940715699776616022539498341020018 1.3606725129440784533706866612589982 0.0906363056174996485052081878693864 1.0950101609937190162075311796892298 GT 1 -37178932157310276668336796769561203984154.4163328140765597074457210608455614 0.4138886917645045249662735890218190 0.0532009530808183494415451326841032 1.0546684079765477813907143183521405 GT 1 -582615514873030338249991622213376512146284.3007041696983525478878296316972417 0.3276660951052304519036664670293253 0.0249413653503808980614811657369485 1.0252576716903396089862309563847864 GT 1 -3951481163076829201.9709377483727134151797708905293817 0.1425457605583455631852628668770734 0.0114130469684062107188919882842136 1.0114786756153474437274357203574561 GT 1 -16888706229.9451414545627328090843726137498252 0.0185072447649835375831370874515525 0.0796766236939398342240344222420379 1.0830301747144448400776869171165684 GT 1 -2284156983382.9608363442295683864634206165330550 1.1754192639170342244474864317668671 0.0898133971907800454201355209858106 1.0941056424606560471892401485553932 GT 1 -4.2611376148753141806063873365380615 0.4691743478453522536876071340767968 0.0573406680503844457164487905912094 1.0590503214812935951178656665938038 GT 1 -5783595868738.6792866348819982550010273734029956 2.7081117287270475301550081542955147 0.0761718700328944081350284386582866 1.0823678667068867930819886673462564 LT 2 -7776786237706567947590564425228788314571230.4452847924091192762019786857086175 0.4191608862477785878561023119811169 0.0468049233482290591738705657879592 1.0479356988445661831810580818492691 GT 1 -10040447486121943277853419816876006319164580.1456452832546866655887305464209774 0.5260234887267838350208475115351097 0.0652688137036384633179639148585234 1.0674962923171820600183637906667832 GT 1 -2742311422.3550511089059696649707259930799909 0.7653991755770061319948154016515139 0.0765519442162263677925311426153279 1.0796407280457524775881989639848468 GT 1 -265422015884183792200106.3903970929275801132472133552064880 1.0644411271411440620771045469864629 0.0303331766099648004637266422447887 1.0308027475290335598290720574330292 GT 1 -1194309442746195313145336567976693692.9023982177204465347096506954160363 0.0472183283694352565092018672676868 0.0710498952720211877760042733877182 1.0737002501919490219681670827862376 GT 1 -2902137651701693295.2891163440357443890299807689402659 1.2448138955573124602710508013439628 0.0215245828872365208754503058074434 1.0217596154940286443577237138777267 GT 1 -1146619007868667232268068177612.3730735634248046735687462588379698 1.0372185170870397753814944969101704 0.0253387654410801678796847296850759 1.0256653200940703722333889108354645 GT 1 -5773149.5106342565410580909786189398789126 3.2669643601198514313202439269243065 0.0796475970882734020339923725096603 1.0829986356395066416441239544654716 LT 1 -17818769034770970379661441289716644511180.0443221854207079832475771317592544 3.3862815090380572767459955881034747 0.0834175143322577031195721061219409 1.0871032150236213191525128321186925 LT 1 -30441002968107167235282167213.8947893232383907336245102928410378 0.8021351518922733080680194130196051 0.0511256349086301860583196900906042 1.0524788757626782013922188250781234 GT 1 -506.5961030863248574846011381550368246 1.6956519554601273432938402090845982 0.0076673327405077347411807683338792 1.0076968778545556218060771088991992 GT 1 -127876887295368.9653712882579334482392544602110024 0.2910173558809561673921003870816393 0.0463065291523348940094808226988843 1.0474129685487694515070032049744701 GT 1 -225234412189395367208421517628.5054179974646809449523741506743952 1.2483325942217705382947438893856389 0.0394952174883107316169849338604556 1.0402963175962401410849608137590670 GT 1 -111130.6633730510015561395937997115626907 0.6547923624099730614474992981463985 0.0662573395787268284846217017828095 1.0685544028912788979046672859422998 GT 1 -518813828065084950052892206499954249852.3995319502314180325636404417684803 2.0413959927249593030750340562803062 0.0626449190191615230670273531842348 1.0646931133734407552119742256562767 GT 1 -732495304958225127528239135042012001.9565522901692235465050266219385858 0.2498186272999783429661738323844137 0.0232311373004578028168354906968266 1.0235052335369400109990115938096525 GT 1 -14.5036986052779529176515268944315892 0.4566939004539691760485983787041851 0.0921931196647530138858509174117765 1.0967236098573553854281184439623132 GT 1 -3374976064591394861509714352812.1749147251286419346526249216567872 0.3854270639973029932680368979950626 0.0263007385001993564476069696620160 1.0266527894450792004157113720722867 GT 1 -28297318.9556938425303934221965509533861455 0.1516090907737118201155585533185737 0.0308600394188378922755037638121863 1.0313462393573041531392711544372284 GT 1 -161762548923134942086.0296407435188377155963657836067873 0.9173614476694860392250390702724596 0.0042798421383675656351054650123858 1.0042890268782580259676631612525086 GT 1 -12783591597357006556735105095466045779931043.4798447855837781301663446062534259 0.7182670886791694958301952240305083 0.0671998891739993535555546987562240 1.0695643445758811797758925426949403 GT 1 -3653.8769324599512329633841774634657772 0.3834219112115358188257082053979345 0.0545696542489911268563187991231702 1.0561150628189017498403613322012259 GT 1 -49168721516644421619557.2622564321365519669174926518754224 2.5948404786680963036610862111902858 0.0366003270535297022847893271927507 1.0372869242645148882678164910195689 GT 1 -112633852219384567401565286827.2073921175716323312524213360504522 0.0407649884667377814673943081975009 0.0140507741420530246835494326985612 1.0141504207784945196860951321478433 GT 1 -69531972839235631237188098956739232578817.7794611774727861225058200635957032 0.7111944718567778441023552479252407 0.0055948325511918323010489747901309 1.0056105422496524263801807774873272 GT 1 -47690922409.5908445897217351762526475465612747 1.3234559324966865121784027214376936 0.0450704283163795125960903018596234 1.0461176881489912975575428585252269 GT 1 -5263921748228510.2277356995960543594618169301492877 0.5514586275876238088971108381451730 0.0221697514416493315768791106559789 1.0224191939935686935912737451597190 GT 1 -118151693558688031880291678862908608.8832678076290034826979677733549609 2.4323862795750042983705872186507754 0.0461332979900595065227375981498963 1.0472313426528040394452428979956530 GT 1 -1804196879335.9726282072135939320645497432170293 0.4436969829107724852382459059828998 0.0957559521119452858050130998078936 1.1006559905458765151067505609594949 GT 1 -2099196624152862820978496739.4589289031649355434135220665619080 0.3620148127450692190551366110655856 0.0854709068003042157350280245403902 1.0893459984263055019323893641351685 GT 1 -2961837424117789898976866901158947162621.6905836642946898581529244956414839 1.5748840010086047834390742646201000 0.0379758599746110211547609293883881 1.0387157350497837861610926318098293 GT 1 -163805313644006835647328395987.7668351498815172948310461643650363 1.0676134645821962494180008653546456 0.0366604889108383216856642658777437 1.0373493736690078827345705714506405 GT 1 -35108787861786805530491505043048.7665016137521942849644642570774123 0.0961533903969384631465462064484183 0.0316501499564596801785647019459560 1.0321618416661141933339839767086903 GT 1 -1.8238863990837469301698068357558878 0.2798572481130026472044109673816750 0.0863552395418317608324011500587936 1.0903134477842897251236781607525161 GT 1 -97455262259275041115872460684.0801327093791318359057155525210349 0.0783918006427649801762641126384903 0.0149863888020599313989189111775967 1.0150998194304563582175998809709063 GT 1 -39571.1650775165847153032073315840356290 0.9063618434108836481733048651618055 0.0690435419017534754894786744092594 1.0715427717587648841802966768167435 GT 1 -4718441597392034933196516133091681944.4866699605011234066974128803258730 0.3226051651785105896636869269689726 0.0215876708010714274389775233827022 1.0218240932996418383762214689245212 GT 1 -6150042604549934302914502787565150046954.5093573773860680404006223570385928 1.2905724859359379452314567317038899 0.0851030757767704281242965594956328 1.0889438711743834367344261566824480 GT 1 -56903421697258999905596.5585718725136087104299093183791167 1.1668273079335585739691130376031143 0.0830356851218723678386589138709865 1.0866867225558084536320056553754549 GT 1 -67865958523108613674487451651.9016395550448360398043241333991780 2.4382248472120539249463023586266746 0.0806819183769450520405672466518470 1.0841230994022851277717448346331491 GT 1 -18091429423636621673802103891637665951.1226260441380494348746280173884664 0.6529650247146296932453519123645469 0.0000350771749201056360199785193441 1.0000350777901385926169069467832019 GT 1 -5353172117302933906030674330210193085345.7212034789157781444697735696778909 0.2337361440237377659151530076461686 0.0161622920543388422668893286326944 1.0162943264820197098649411962016550 GT 1 -18616703705184760019435.2661960212315734746220529583372690 0.3476496040437729816505816413967263 0.0539573532525157444158501448831216 1.0554676298179634314879388388366313 GT 1 -7556158848727367795116322142307827771.5040464194164854983846312973515293 2.3153879592793696910792557973731563 0.0936915539095316996655362882858562 1.1032144602863876081200464825381337 GT 2 -23468233609552385400009893768541678385.9050914693108983355723878121318777 0.7934254721982342269729401054637136 0.0541564354276516041008326770761876 1.0556780887500910700410787701121499 GT 1 -3365395238940294679583192772.7433024031031503932295003438314371 1.7667937198044542427226213109451635 0.0743572157814038433479003543827122 1.0772668809442710226520411271354850 GT 1 -10500355355807667496796750887763512772670.2679767825709970591783285777540986 0.7634773855543598510847531160649243 0.0984326180710966713580766609292938 1.1036204948958106827302106292640491 GT 1 -11.0952481937544523881099983032740971 1.0141369201139291233422117851432892 0.0068651217223022186022614818352227 1.0068887950796322279070207677388203 GT 1 -257.3589875650241750035607337960123376 0.1481492717756947731286724772546780 0.0644372061413780727512565344752717 1.0666070122083985833088000122055455 GT 1 -178217675873055634162057174992415318500.4861069402266023821110081217336907 0.7105648468988379861007823573494328 0.0778343468901014329807004325977629 1.0810304044163567669122423373558489 GT 1 -440162067337990504675252638802916373.1920495161283943762930730586995563 0.1900526513899377238223725096183512 0.0386836394543075549243802378296376 1.0394517248669124784169228064591126 GT 1 -1648160336.8650830933773263980211826403928857 0.9499044288122850987622234679148098 0.0042662749696578447647665396981870 1.0042754014874553741631448537712470 GT 1 -4670720891508134660482365123991171276.7723265113656234779016671000081574 4.8849856091253406961524977184103838 0.0199083010619931325164996175985303 1.0201091413500461413410321236615608 LT 1 -1549059377988709544780.9125878010502373109633016295728276 0.6748433371872953958210578611118849 0.0306457058790099536441110591247224 1.0311251053093889224315599861640261 GT 1 -6151055942013.6804014498920104533685195183815228 0.1557588691977049610745905162600227 0.0457446366818110405979803425010824 1.0468239669186351108874303863984820 GT 1 -14469830525571441107583.0261004035097884347723273074255041 1.6635308077722304483123074582279530 0.0034430300310536671458813870103601 1.0034489708992625477392435848490390 GT 1 -75147768805645996.2878626535901902831640836092172551 0.3112598509372957653583511280507497 0.0214832201584652565569415007496174 1.0217173437580025149504240230103840 GT 1 -27068193538337067170014586428.1893694661724642981882706883437296 0.4921267782537762857585790584218602 0.0554427167581075013891304012197966 1.0570389446029135867554317716232664 GT 1 -877.8325688846556132613907724176459058 1.7046851250709377308252151771181487 0.0288141893691861014003762102695298 1.0292374689248866125639611162256000 GT 1 -2596804056758951996371083450025867203.2936869564224466150852755093667272 2.8975528891838114283604240426356987 0.0129135574208075955678812003736764 1.0129976622497255244751565577846284 GT 1 -9756041233823101953558934342813525346.1551000988002691164897701696054604 0.1201247668328326175783428297130363 0.0930785124169947772008156482084288 1.0976993953667979921931903989725514 GT 1 -5555798040520933775790987375858603771916.8234162389419530448156709245935220 1.6982931031704274049275689883233285 0.0172563493926659453223373022220940 1.0174069755432324670076292976077766 GT 1 -978156387121509856540418674651749043.8397420450231873024411900656207851 0.4235112909157613986547713113807863 0.0144774354428353399233993316310086 1.0145832560942396155533431538556046 GT 1 -1690686020425714448013001480590.1086808878752673673080919055377149 3.0866112635507349035074402327631458 0.0936921975944105562395331825710716 1.0983762928824471971355292007728182 LT 1 -1.2670926065942182692271904581020742 0.1374217550353157098798320452032573 0.0189551385089827583944183927018315 1.0191370900943659503913006802264614 GT 1 -152910690279758306669034294392244821623.3744971553175672602120799870755130 0.2417637868430137904731885499163962 0.0812946592423039965861176179059194 1.0847898383356381110292091468331052 GT 1 -70390876751998105.7846408657540899283526083543319468 0.9012993794321039131223402876844634 0.0435313844929664515101749655450942 1.0445073024467000252390968158080840 GT 1 -2715370195109382793469749611.0207732821543909150686770778152095 2.4710099250682467031694960728167362 0.0067288412471894914888825264667590 1.0067515819693355320824887362430125 GT 1 -107097957242131901751127760159835938308.6135344162706211171720006197783549 0.0068225951891583812866424386945316 0.0070580551376113937542018045724716 1.0070830810344031279211512479137682 GT 1 -95002559005319906154.6110152277275888853965220797478958 0.5315948113699147769904703673099828 0.0298609876591238072189905193034843 1.0303159060612230652002645619025499 GT 1 -772825005135705395292688159.6910967674868352041219137581120883 0.7560592529331620861059847426251896 0.0781559651699463298832526064042544 1.0813792293549777490201611480501878 GT 1 -21898836885324329187286235393036291.8277345068324686986972281120579118 0.5316755624236653622139437482014648 0.0064034555259241455223804703265241 1.0064240455927103193507006164698141 GT 1 -405461274044542.7020598645587851291138913633023076 0.4268070756019414003796275335480815 0.0752270780337689211502332681584850 1.0782070613734936003112099570314478 GT 1 -5399841673196180216902432492995941731.3736188744466507214651308886316708 0.0185302915567511063750474335647725 0.0025907037570874290254672262490752 1.0025940654373996865273664066663434 GT 1 -2132779286689006348513926560144069.1065834740739441572158393032266737 1.7337446710696174659809537270580375 0.0260894763874491174240867851267146 1.0264358444336156828279869494282657 GT 1 -454511845713601881588743014062634101083712.8018249721745302592171421842972738 0.2470756600796271380007806590068135 0.0880175928492213074726461076091674 1.0921345794987158402541828344133698 GT 1 -142566576540098508791691274302884259.9781148392129568222622185170329484 2.9900385845671356315835941635046426 0.0231054694387543788109468750787187 1.0233765851092628176461645609067689 GT 1 -824008.8479128928013318844007600382048941 0.9150364260423483929428454089414218 0.0632661756849513901759498487656570 1.0653561093356825800138015020929542 GT 1 -478723784684559.7037587546210436006054168583352380 1.4027525254285367084171926316836707 0.0258796836861420431511400609333159 1.0262204549255870836201800348917173 GT 1 -4869774.3993609190029807294555549745807686 1.5834208635381097084639600529784046 0.0565426156114482333325007943932275 1.0582040827733193503352709781319316 GT 1 -2095468341067976353476498.3165617407585289778639722601435308 1.9713777297410289194655616361302598 0.0512280396867953284045558848980421 1.0525868039649924181812207329425626 GT 1 -67620509118340664.3004541768357394848436304564716280 0.7808047010020449850090444414915647 0.0663258897852612594413309307502282 1.0686278200391198426740140231082154 GT 1 -817438961119944724876598159883718996.5578595892616344391691629803060821 0.0627711670206902488564027742188516 0.0467270681894723671506221366546986 1.0478540240842718657472709783576338 GT 1 -497.3128579002015996544015626550276346 0.1784268159801241155167647061241166 0.0998818504175738666992891008305190 1.1052292469601319881276865464954611 GT 1 -63106144287104500045615766764463362657454.8833529126569236839642643697614264 1.7099099343125397835024937351333661 0.0543166279182475465709920417153919 1.0558474677717425286306954018283442 GT 1 -919403755512370615515964961974343347.6073709692384086288534453721132523 0.7183160296766122845171044823515969 0.0006632574435391351798551871316729 1.0006634774960637033439964891085767 GT 1 -1340524791079513724561393.1939009035211991202508155737245612 2.1368849737650924566796175694808502 0.0115419783300264690571567103574629 1.0116091039702436162847403503559515 GT 1 -112452460.3676809545803821728676359684569082 0.5401322950885915196887742668434415 0.0716945750169044926837640592231705 1.0743944785955933071855437736453097 GT 1 -88794429.5537758279222593698768002916899421 0.7624922493440707663958319709731197 0.0812059902258620597823846438650252 1.0846933278073648933701715035332937 GT 1 -751155413657.0085585010024892442815967102791700 1.2987049444282524817734208040377133 0.0600762894916782235614909838965113 1.0619565660453602885245714834647273 GT 1 -21283202.2407617282451666297814433323775890 0.2820958640409564138437081577227405 0.0611774630106236871272149989443360 1.0631288091266285532917236378574862 GT 1 -76.0247008083235228716452348536290298 1.5455675793807114061548617838101341 0.0959545380588508343223584156720664 1.1008756300965396676803403760251652 GT 1 -16.7293062247689561188142846206395409 1.2092870343994218751873478208969284 0.0738852930200059827779268949955315 1.0767571783791587881335120889147288 GT 1 -2824938207244813693913.4561241187250839843721493333943846 0.1925464783884621363317131939817250 0.0055544759692414603893433891574896 1.0055699594325221085256318442167003 GT 1 -328569914396.1441853217323428835965225001537796 2.3513478447734819615591483926716240 0.0194597336362871931204055208531045 1.0196515670153714033211086851846423 GT 1 -18756483096117593300501.6511306146708579197309808017647204 0.5309154284021984889647905334480586 0.0096169626105033591115928609582838 1.0096635042284659243658771716649233 GT 1 -1054149608206319013333057877743092134.9359379854231867843959147425142237 0.6760813345524435363050285540309421 0.0757153399331692863352694847643630 1.0787351811199992351190783807477146 GT 1 -59185853227490401766.1530568758845715901262846382732873 0.6088992233635721669859470830469892 0.0740727567728698840730752885529154 1.0769596184518398155554508985404922 GT 1 -650086740444247054263.5617548033142517106658275776113606 1.5987637212579611156723740500603175 0.0735600280893146360362470272665818 1.0764060255222526263045460705045958 GT 1 -72658999440158.9164008934614597993416777940580914 3.4206090338758298295461003299379007 0.0199088720498000939752348435936203 1.0201097239363224101918302472174682 GT 1 -9344893131141274.0075173529980058737480562908539813 0.6521921034355504549395655731722030 0.0225826071492652461391558373566872 1.0228414992862672357531033624588249 GT 1 -679076.8180198370328533327048629207562499 0.9182628800845808821905664000720324 0.0994705892239663126562804603813393 1.1047724544041508380672113729797507 GT 1 -7.3851337026560654658503360040418157 0.1630314353372308995593911796864345 0.0454008631700022772463757017578279 1.0464637786324155856150038991931740 GT 1 -1575.9121833612037335409226948961511416 0.7513907348135485694485364741108779 0.0217861133768291703048753461371497 1.0220269348795342656309025642417638 GT 1 -485245914719495119.6734957342683442854571522960902863 1.4061575560886744641024418039945106 0.0491640276987953719627287442664648 1.0504137104915348776376671881935059 GT 1 -472033382955252952.7274519939500451520990805347742020 0.2542919190028585678525729924138317 0.0740980793892494910054024698626730 1.0769869672125955913639960443087978 GT 1 -70106872831463882071.4278704519885649593483690528589066 2.4472152350944195773227656557749630 0.0929041664804369728417917419094769 1.1022609991046223989369014672220463 LT 2 -463673623.7590443577634061437983729296375490 0.0418809739675200374900458073458641 0.0942668709088278980862580339127795 1.0990105758323464481218485759288577 GT 1 -34150060120751048697238350246459414328.5717234340870800798542905672164701 0.2613994682657713622974998837890587 0.0421807203797609225882278213819262 1.0430961622093544160870935421001110 GT 1 -40824507521413066370150320569918185504192.2485880196223359810304878236804007 0.8545130881352982533220573476316034 0.0289921073313950752083942974322956 1.0294206823318752236450465115779847 GT 1 -264712582689713222.2959603052858932546694109170114270 1.4155181687417229640937173905684041 0.0425675005754442429629289178130443 1.0435000570968811211775822542618344 GT 1 -6693184923647209.4789513833118079681481397547748169 0.5654197668513502473637926899332733 0.0498662619702120991668993211021515 1.0511525274222237560419151698637022 GT 1 -621669986805099105130647.2479781352822354319449336160447504 0.4861864924011715248825166495435642 0.0515147646397255731373624374330603 1.0528890560326266210761829141837191 GT 1 -38300743561604607255024335808670816.8234858289765974186420665914600918 0.0055035332907835963682788966497729 0.0147122936939675105473664016071696 1.0148215928389949119658062439614380 GT 1 -1116516140382301811435922418307481602.6326879496110244300510465282034579 0.4674963371996758835605937502783089 0.0972026721725629197047405284959225 1.1022571939152712358834967897409120 GT 1 -1443396.6063608480750659369570887095619814 0.5022937108462051152992449223562541 0.0262293652848049935232755105441900 1.0265794910433272291853063462624143 GT 1 -1587158755422253908801003.5883693349431222569452942228905185 0.0168081221650089777553551009936630 0.0350430176455264522293709005644167 1.0356717565077858143385077473119570 GT 1 -3949.8285675701080263840525161841695348 1.2081920615752537087169203894438495 0.0262699877634944624129337386519757 1.0266212085942394141352714533571420 GT 1 -198789686035083786467401975376335.4842207036821809750334336065808171 0.2051115356414939442983977159475113 0.0689255822263766941296517478000386 1.0714160717377683494975773942043269 GT 1 -10554548378199983036667415112731.2630973878318065392777091959131091 0.1460937555285706299966681499574547 0.0448565898611048095114833725395785 1.0458937820907379139763827722156982 GT 1 -19474568848062.8252615971492996471426820012959349 1.2044770385084210412106195807627782 0.0435352009858881058224204780919850 1.0445112926461420844793983897157868 GT 1 -224911383946575706922.9279903130871026841043012089842111 0.4446030838135479709210116851301462 0.0804217801828797988196681231360538 1.0838401707829857925122533170802370 GT 1 -317508288468.6656922597403561434134718804939309 0.4592859136882708539866811557265941 0.0692713392053913826279430060936580 1.0717874933848476575035701819503293 GT 1 -41725647.7506888133993833803718832463515319 0.5539231926999839285649158023309834 0.0385900767048364868023590651723151 1.0393544018622484794592294972260953 GT 1 -1260253278740885751982270682933747561.1394975674620386092813387739137660 4.9013435280283341911282436684254310 0.0251819210716950454704321764384392 1.0255044111081289174594473956493678 LT 1 -37680416615307121.8478103213019377158578129238841535 1.8145920316689534606731023607543019 0.0199049253477613622245887968562942 1.0201056970719015737934850486259266 GT 1 -1319241.4053780126035829365748173561699629 0.1120217965328091548004410781219482 0.0714561893728925529492333870008900 1.0741377149976124700666904119204227 GT 1 -272862354257185935991137548791528546608987.0722124594184413665327336476855343 0.4936542606866487188461529333060046 0.0863228385208780404349299474007760 1.0902779849350039625512764908381127 GT 1 -20062907066673409321.7016661949538791368212621450862010 0.4357241633099096173045232573868029 0.0609597114587423589989128764412179 1.0628968948995648554003159999974819 GT 1 -28722419781468990735332916542831771534.1043703765362154893670054698310677 1.4792974993685317868789726091259411 0.0782041817871783639711177668179816 1.0814315352510164432827538291747278 GT 1 -181121575624450685105007566622.3193411471626576844072929039903597 0.6191263992499413823631760805063069 0.0864401890567509268797921572008084 1.0904064308211209180949327359735850 GT 1 -596941025823392308788.3371945965141648342599594100251263 3.4876114511495981546703614907168916 0.0260088028703569199109140865893218 1.0263530132350194987874865378556358 GT 1 -1082542390762463177268031.0587426456593253442680369549601253 1.6903384611430648511632382553217789 0.0152255627591497376059016442618561 1.0153426617590558829788965473307948 GT 1 -3.6203863213182450888301153741119383 2.1221892178783124998946273101953862 0.0839990111581329096369495125474768 1.0877378347869005046189601964566079 GT 1 -67307553727254127436539.0791787855508386917005189904659693 0.0203078262337015157180999865515431 0.0885779853454349719764117476464491 1.0927492456771629934500931978522441 GT 1 -57289244877970049421633.3833710886952544576410419309703702 0.7124138359079455543191367654818218 0.0352826757651798407719349598240652 1.0359201488090847853985759921772507 GT 1 -212086844886093142593648366299.3432340851791188099110366540762926 0.0242025271135824946532035840165968 0.0299387041289372020954920685344001 1.0303960178615624662225610179971945 GT 1 -1546383519164.3406626552608445731010071777638065 0.7651257699059287808103995774791144 0.0260390250150273825089346404748615 1.0263840428928371028209234039941443 GT 1 -4913799.9821558060281388609445079132940245 1.2208050248682915101171064639767742 0.0768401601097433867536066113121276 1.0799528851599211895289121726465975 GT 1 -14919772055696629883189561806340.8495299508861572433273909151263448 0.9660628135254108893378248929465937 0.0803416953806947647447249693155500 1.0837530859505875390901783398154123 GT 1 -33463178776113975114986084879947652.9866153975123880165836091042700510 0.0141267282181225074903177854387939 0.0641201188172886284067646672939113 1.0662681428095624498442360270620656 GT 1 -14463047.2031200402985437475134331734939647 0.4470966087197227327896862264772341 0.0636069428819715204692728771938643 1.0657199578332481177350162130215385 GT 1 -373294776881731875206776958797798496153.0977345766360778070393184012249175 0.4471159382933232978047591586808322 0.0088858184776695154785975329700964 1.0089255328005602794876456499665590 GT 1 -664897326591786762778.7211227452103283696008914239419921 0.5330237352141852864866227510836074 0.0310801160374045541658899556275824 1.0315733495986439049706607374060733 GT 1 -10627320231847339429852378866366668172147422.2127757654911899018850763636875278 1.6162223730425532386288387170947715 0.0629955650083157075956215498768473 1.0650672635727559381503570936758810 GT 1 -2106881249331163814083172302.0829430548492237480725678197541386 0.1531594406102711002864291125670757 0.0369369237480227982208736317899806 1.0376363695865781923279654861213529 GT 1 -36451611626486964070708525269970967458249.9273808251769457522020609688141552 1.0450425475490936353068210611474619 0.0572694725169350487431020722000139 1.0589747980736258989954879693512561 GT 1 -28071381200041.7341489025005366503434500856450439 0.0528335124778038229551195247913894 0.0784074062184709955830178412271473 1.0816520253341629378054081689126306 GT 1 -743683005807095246.3413690425723340369146019884128669 1.2065109485596827183393724747672861 0.0627458165748026234357231739392780 1.0648007598655970829430574571608625 GT 1 -25654563203557211243303526608194676331.0951551987070918080288862163474222 0.7247570396716295448760050989045250 0.0550829162842218104740373055943530 1.0566580974376631289060981669280344 GT 1 -1511657262492644316164.5703169022048393333182696336070965 0.2003779777256923194729788906884650 0.0446366682760860352007179907014770 1.0456635587880180142761339531724981 GT 1 -9970392076632259585110380.3602826490733804643753253915198740 0.3692503471503965335668459607055401 0.0677917927386720804393601945018017 1.0701990908971770141890601511996749 GT 1 -139487006.6432301403900924728930745180375460 2.6346801523428832115719976114118965 0.0623031825368823194180733398520776 1.0643286045442754586787678446750176 GT 1 -5313189126894502227673279869887771.6074353247246443224644721132701988 0.0464463991662113082587004672018096 0.0205003379099693139243935715483440 1.0207133865797035284012633185338952 GT 1 -77811649.5885630348404503212833304292577488 1.2537281963043345123293022336623508 0.0833884896786760239320329069348948 1.0870715493585061061243009410977253 GT 1 -27010632454596640113874251554695665045558.9631460943681430944488598786489217 0.1552805247055985936317279291100121 0.0530070437137171770815114455232007 1.0544636237473920810223305274113099 GT 1 -13338371587.4664252621252776966614851569685151 0.6958305208706493930724004056527621 0.0920416574077676693885687446523448 1.0965567796356679758389136024263009 GT 1 -850463540147589144465501726283577415333.4579963474671806308442950414862287 1.4362373950556148760901108234166193 0.0914019596845086559162704518125190 1.0958524824768011090578072096834089 GT 1 -2004283214357576684602897.3723560954027277093397420518545054 0.6865900442630259447210610650493915 0.0857927599934174082720764189034287 1.0896979936161993297938487801134746 GT 1 -131919499467048.1305848946759636901424467819270112 2.2570393380712910500514279683696421 0.0332318089818729526300297352663284 1.0337965319992747044906955213475907 GT 1 -77698633498203.7410261985095168980225143244028528 0.3204757363542023728201529147795841 0.0676164929606770788413220647422153 1.0700110606949970874540204829977492 GT 1 -5867905440331385391670223008.5093120409313511288325297936730999 0.0099510200914021193643012753309217 0.0577930803209240539621595332058566 1.0595303685709337262385301854678773 GT 1 -6092998791870047.3570359744465122666807406822802411 0.0737982069665489904703494950212499 0.0902011210896606282105041389366156 1.0945317160844740007032731813625647 GT 1 -5865418048728843.7671270337138597192505796198087753 0.7390108716493170003183303211341235 0.0715698579695596905043604617937437 1.0742601384668770031995158811266279 GT 1 -58965736590716022927413456.7366103393001012514163576829559895 1.4617692742966375762825970080903045 0.0053507301731821385701623472945786 1.0053650966000406408983645186378848 GT 1 -180722968045158988363214121903353237.2464626580176510396074373566005229 2.1560124810985394889311447952609080 0.0095019705116728776904043023696479 1.0095474022565884323920559870431440 GT 1 -13250069022330199636.0884242446104458225947475401711395 0.5434863511923751987054204598341069 0.0796226235565949270282806930267893 1.0829715012583931287865044018887211 GT 1 -2596730117833549748226021895916840.0813225108983793661316852245064241 0.7973465822363672919423560042327152 0.0491236330200175332872769662437217 1.0503712280635151043126398338255526 GT 1 -1018726556011198021.1991576746374614761072169573114737 2.0399557583581964348638969201751262 0.0611378558531188198511850834298008 1.0630866218968890277230332806472324 GT 1 -10094426689574935830395277062.5938684910596715339511209675176318 0.3226133708344975690315790252085435 0.0535016722117206301575740762726267 1.0549860750661961813366315671941043 GT 1 -1195324581421129159768462582.2135632758626762975617177039828168 0.0855825938232014494730329803514292 0.0180280430681152856873284766277634 1.0181925281312732014557081769743364 GT 1 -1765338840693499673885739479432809833264292.6550625187235657241623111531967328 0.6546712197959474692243080257023631 0.0625927392066535012526130753301401 1.0646374478510875429493268620765383 GT 1 -2302940981057162267406585593.9966718728289818510637799554502121 0.1707132505384907753544677321392967 0.0767375612146621223220388848721578 1.0798417525155940726462231225604814 GT 1 -326704746896.2195414778105465176385470505558521 1.2380313536275532469863969490490937 0.0347079450824206570371320747421441 1.0353245758487087988331874271975378 GT 1 -130081293296830019151373603.0207656775638357690152801538170301 1.6235147951627941042373407422554215 0.0984122444670933772556583534643019 1.1035978971685481913178036503585722 GT 1 -2871564006911728379564288678826703.4981606032352975525164576796267423 0.2469849343060355908966534251048085 0.0224837527774421605434749113902818 1.0227403660611991605721854128927573 GT 1 -183145598671916495.4177239236249595280539686318830164 0.2332251881771732117294631199243752 0.0619060709097519162872774443257335 1.0639051973664836872552609985046800 GT 1 -38991744223.7784637812154257944376970590428038 0.1985510130825756230913707537379292 0.0048447305005038388846710753178530 1.0048565042498023618297635828965819 GT 1 -446221018827748599149972277465262211.0010228345977595596885354058351797 0.2109876735048080439076238330127285 0.0777748697360380794838825748708975 1.0809659092403668158721987963795184 GT 1 -26.7967668735904237042393524146970691 0.6086317231065676089223589867287586 0.0272579221060099392166262582737243 1.0276363111814875153461007303962285 GT 1 -64235652636815978099042.6134028583062551999231052224284716 1.4598909745530715669239570906051263 0.0138298838326032554995154674491609 1.0139264076514322987318825997039798 GT 1 -54937289532719395144469559154240839316.6592787376664845180350054025548977 0.8205049036068030563405758880740864 0.0507155231267724897129492282173912 1.0520467604105038859867010806227781 GT 1 -1185578332260794610012366374.5172978147604064662492564208647566 1.1407901141030452266151310225229787 0.0431507028712146522696627603475895 1.0441093741941487505480889473451663 GT 1 -2639487142107163173178945780005552514204.7220387672944281128485784590099115 0.2739609278713805179483585572461745 0.0147819376373525513762545466744892 1.0148922792023858623737370438273026 GT 1 -7744744498854944044037.0637836093441092728567322333455313 0.8481944748378293223718047090218213 0.0770852123429359187840334370411762 1.0802183698060727079612912905332839 GT 1 -22849804574003124657.7563231525400537209777492604484096 0.5261269141359599061951560073568949 0.0839353504731136535563483008920947 1.0876683387124022562326968591640731 GT 1 -4423273715.7187490028433590078116572917208393 0.0536335021367950206113905632035798 0.0490407976196482929671833579118528 1.0502841170621686702206080214787563 GT 1 -1879229350132812254246571715594111558.4552952223206455821006044135143004 3.7400827867501612543305079514005758 0.0848091642626545160321269915769618 1.0886226718056175101033591117403803 LT 1 -50959653569780868214208635502925654.6637512606404784161832081894304201 0.5146133761721618807100485956093222 0.0926879417803475025220013223996641 1.0972688326715102908133821141894828 GT 1 -106187614646.0190062959779001334667938903059824 1.5150033318154128364765720861467973 0.0916340864617142121755013243836831 1.0961079930806037823236185514343091 GT 1 -19689072006313058537.7803715218005228672321443181545122 0.1124067241321122557681576377002819 0.0808027629015152729469104752803664 1.0842545582196403008245747642392078 GT 1 -1813175892610275296814433697.5643650830894711345491991751163304 0.4961352067101341187056464533201067 0.0940175723210472868247851621585802 1.0987353686250975103474817719015637 GT 1 -747987050566247981408995993623.1241194268210102104700387823044011 1.4314181076834873282136136495296482 0.0892013745338024851015502786094063 1.0934334539436720373208059715851360 GT 1 -13715968728522137889689932215693619260351.1897624002015740469369820572271086 1.7340175204877566728347033967824719 0.0256619121932795282478178924019619 1.0259969228313850732744568978572661 GT 1 -290981323817100505053957981795.4839854576703466243755663742851040 0.2740196836612100609931786842878028 0.0680620411252346444907236660501016 1.0704890342432140600981309256727757 GT 1 -82187476169149576140736.7294832384149706992448323283810382 0.0814602021918531067364759209951746 0.0845223509202783354841798751225215 1.0883093290599466139172852266385565 GT 1 -138939538030628656289467138347555584377.7815240678930469882638677445384664 0.1948165119583536301177635972615903 0.0055622424729085228746096892281133 1.0055777693464965662165744630460405 GT 1 -4664490150772304360581413900054783137.4506124685564763875651893617338807 0.9183160907181642376875453247578061 0.0776008537101585309581562757469519 1.0807772355591108509910889065639634 GT 1 -16657540279.8958023420225689753634233037967593 0.2140339951066405374657649071500413 0.0360088722393688263083938823112175 1.0366731879817545136332482882048327 GT 1 -207643.9177600386845017472723668174780910 0.2555610917432851861287268824909718 0.0175105376296811347323955121921352 1.0176656606190681089772468407780395 GT 1 -154450581223931071310881334.7163114004003203329336324967485525 2.4695729721950115007011564260578182 0.0415695603893452341275883442429266 1.0424582912627813898473722308570445 GT 1 -20317547956296398828212128.5271493277749975675422062231233636 0.0158023100974467655937413586998001 0.0359589652489561021447088992621078 1.0366214181084149983772100465507907 GT 1 -3833764989143.7674869934885401618359095520130826 0.5509915068188418801953958344529296 0.0512851067266621348071229820251996 1.0526469540943871455252118463640177 GT 1 -344.8426888566862691113543884910224850 1.4849009859332184659927763082717874 0.0532143381514808395024830111885604 1.0546825452587097435804330716835619 GT 1 -10077284719771016980054103.5703914026246478091129896334858522 0.2795587106362420886010827909458913 0.0340968402865780616561446683601897 1.0346916985387298603084726262999799 GT 1 -7533389931201.7943959265409635935761437620972991 0.4698224909303986719411276559392490 0.0939639990129372599306915196177597 1.0986762375398081882870146563064012 GT 1 -164660271.1549409508750550042540699000439748 2.3819260793636395276308698288956795 0.0021485736757071764604551413609497 1.0021508851716668923363909862941909 GT 1 -97414787713019789982181496236645151421.6976049362198195263802012861326645 0.1441519260239331528405867629146117 0.0176621376947669274252461347480545 1.0178199745004792003598100456773267 GT 1 -320111246857773029675112.3328940614671747082640427739388748 0.9821503091500709508351908764486097 0.0642466469992797742431902858886937 1.0664033489812343270553997576825693 GT 1 -40176106816807050696100818459.1892298268178605198337710094694976 0.0342939455268967708353481548109790 0.0457270337818615463026290290254915 1.0468055203494356167063242030625064 GT 1 -118445987141901356185359631793.6716682801381911799981729010687356 0.0044418727483946302144548667901910 0.0331473197366648871843796393941503 1.0337091423289244437272118748013695 GT 1 -405589061427979051034.1962055579715693951136770551409100 3.5712073744868099732801710922686270 0.0999735690460048351961731650945736 1.1053311483623882489504013370169025 LT 1 -13141021.2470005549370761443497843575117078 0.1355513543090640519918063108581158 0.0169154039253211957500489644263669 1.0170601034588184175315822649018146 GT 1 -38419223922249127279832754.3660843963435199243663573051323707 5.5491131013040107793119860443768860 0.0907872960510607210154728243353444 1.0951762144342525623915465010052295 LT 1 -31428.4834343789199258643334812173271754 1.2178182621372692340821648581444441 0.0085274751309336823029217149287331 1.0085640420778767834452400836935438 GT 1 -54698.0610057285291197237651693351886858 2.4767366789002939316012549071232037 0.0775817214418237621592376905651124 1.0807564939203147724073329770340371 GT 1 -154467582.9077210125191809356692697701857830 0.8701257966646525626708972659567965 0.0946266402593179338873767317722695 1.0994078681588228282311071100265613 GT 1 -72052701976962261164909250.2256032108549895027865172658754129 2.6436541508590534214162677033255054 0.0190752927899388365562191806668542 1.0192595734223676592221532941542814 GT 1 -29399714045128984694838843868230094577.9159631301193704623714895803453994 0.6907771501631610461836512280617786 0.0914328886301197914665959184712265 1.0958865233514958900423577241875707 GT 1 -4730662006582.8921168271446974580783495988580435 1.3254941107865604378660864602460034 0.0088774807040519273487498720826011 1.0089171203101506372672118193502159 GT 1 -2086891183608967.7952141142267772933246757987627274 1.9522267320053332943281594716920134 0.0475897119985147830360830122957344 1.0487593622422567547449069045531530 GT 1 -45220720537484717396.3405560999101719871373187622164889 2.5102834619233158602871083191512618 0.0894444690695161877719436154353669 1.0980902739321931977569934234730429 LT 2 -22988349967585300091041655722870.9303314358613795284721756174029363 0.2053739967249024930899849883761730 0.0400268876613932340411579338560650 1.0408500028931038945743382894304831 GT 1 -1092593832366949624963930151184071826.6943488098322116164560283127065119 0.1409278629468064406578933262494366 0.0276546787972677385643693926080838 1.0280442688875985278295291741405602 GT 1 -184683520990474149837.4461030949686121049012038896682709 0.3096995608771621119691919319792961 0.0135724191667062824082272135447949 1.0136653664185945344032490476990552 GT 1 -266095.8559109084439965715248292586453672 0.2276579265970455230557939248051399 0.0936677316337606703202949645196043 1.0983492980465215475802890190006153 GT 1 -51008765487146997256395035655762236778974.1933034495140352265320376096419592 0.3721276016566070006221697229628878 0.0565924158890338649287843494585369 1.0582568690388217488473648105771747 GT 1 -205973014410016.5474240348449796258968754884854700 0.3099255579858758350201958604113733 0.0131462902897602442049080911111952 1.0132334676461162190272984864821885 GT 1 -6000312932355.6531930809822294093013274279700289 0.8814888831352709951163975539006180 0.0774286133772954967930959364103212 1.0805905221885818228470441459450212 GT 1 -21.2694099979352229453792727776915605 0.8288110222179802766452828837295468 0.0950683806588847563286764719578536 1.0998958968760154355354987356960980 GT 1 -866994800603357049637291761836748.8083218446225981156590639421409062 0.0290587846437061579327417178852791 0.0497466051245211784498810808020319 1.0510265985061864014737456194842279 GT 1 -79006059935232147261919749489.8754563647772726159642883210663681 0.1050746165783868329622290227403927 0.0897968381327081839012112253218661 1.0940874495896636519579673250025977 GT 1 -5342029655.4776955587800467540530490072936529 0.4264849073144033899686283151184219 0.0872667762612761132549441689141323 1.0913116385235763165557584715915067 GT 1 -63911.1017545176316689816871691801760280 0.3222280311198542488056076086404806 0.0931679765353864736856213467305399 1.0977980461679342254462645378758192 GT 1 -15909321539.2892008703252439761043874505723345 0.7560712408837116681200683129875442 0.0880822860963351560202142963474768 1.0922055189612381388432969660546794 GT 1 -6171.5181730240530115276152034358070538 3.5778962522362741148712240959914391 0.0635454340841156384561693448513648 1.0656542730470204416305468884739069 LT 1 -3382020544990807738251975846874.3296495555090345048281419663461513 0.7616396301216874421241540322830246 0.0875092372337031428513585558217969 1.0915773165725674120028643098916404 GT 1 -4330123345901330.8945018722102867742925510790123301 0.0686390721373853005489882371447687 0.0107409273351346239817167563040605 1.0107990275027931560450526924390756 GT 1 -242239892877340844625045835703025.8189850024673578906806242637372306 0.0093334163166631849945987131143181 0.0273062361100777364446271313400371 1.0276859802613307521300962070783104 GT 1 -64.2101748562758986976792737229269632 0.7126021217515479403012213945618827 0.0194852151596618330561913005983520 1.0196775545809529292914618823111582 GT 1 -42521.1312957750165341343198818269146041 0.3809760342105347456161876655093613 0.0501493894924635304572759571236859 1.0514505588502879639874944714108030 GT 1 -3078556119593.2750706272999145001821599683414828 1.1545715031666889125975641783385174 0.0816404166943559423002887583316912 1.0851662621098941105262669613876773 GT 1 -10438945066738998735802404228080756.0774181374373345674268725984923749 0.2346393227881588198336400597191069 0.0356157994627906428453932637627526 1.0362655154957462009209348133442596 GT 1 -143061313634587330102763182953397958.9915214464061784428749747816115644 0.9006808470895907663625014020551220 0.0980916689523924778587839274534487 1.1032423926343686822100495710400646 GT 1 -35994768776169735868095441.2075996883652907836829086938351830 2.3203643449824525196885579550834642 0.0342614502199747415068035134822116 1.0348621338042204934811585864937076 GT 1 -18700591731.0695617829723205731598536588136095 0.2720109855399814503556311768722694 0.0964714561073611309174190367685153 1.1014475768726421216449137700776955 GT 1 -2177659357211330593.4026313593883159709352544433559283 0.2070054464739815013775722364269538 0.0149299482776004970710056619832214 1.0150425218389508163985008525180486 GT 1 -17908015175657.6120411359787211434457841720926499 0.7518910216675653038687688842082158 0.0549478001163190552549756762587974 1.0565151150418057548679484350750452 GT 1 -14519340470322849223656150957.0811051171335761880714367660808733 0.1964327602543033219045315426549130 0.0248429907364807455825398843216091 1.0251567858069854994668813898866439 GT 1 -3844664832246763074605803774669062.4239453628706529569657173294673493 1.1544648350002245993109723254126544 0.0507492689224699235663147866442213 1.0520823097072034318200101280242820 GT 1 -580033028435460155539761845.7035956665874921961151549512185122 0.3025861052937588650810512615661790 0.0780294229683888824968433651725316 1.0812419680479655886173893915315387 GT 1 -30650404741349.9889274796241699467728204989602480 0.1445194159375120577125519474709008 0.0269334615245871354642221330586015 1.0273028142674534782148542570161572 GT 1 -46021293436833357951828182.1478271395547793423115853846748535 0.0557525239979718902535611927105584 0.0686134299415663454347627551726531 1.0710808676290406461914153263270503 GT 1 -45116719658129705719571234723.3268538791680626559827998777499775 0.0737028234894897713331057187954356 0.0861686738068443838984214465790470 1.0901092692048836502256240582894438 GT 1 -6688544948192669182521155935.9956853267600148143908156100112504 1.2733689926132900185225909518362332 0.0664110321836785935144913287892230 1.0687190149001740439063832916528558 GT 1 -715830041213961903268.6234160317134653930716136389976303 0.4719705821180707869930423128693787 0.0162537697057465039437934364510632 1.0163873112332119798359770790399645 GT 1 -17967469744262332542202090317727183346664.9663576003999408961065557941521884 0.1449417663610364271688678728814450 0.0307905556528358647701438825084918 1.0312745456101859869382585713679450 GT 1 -337.4466477879046016469514463260910839 0.5218107788551564278485332472136237 0.0592664906500797910183069437441014 1.0610953789208847714225918749915301 GT 1 -23309675807.9032703584641813617226453636265401 0.9485325355652403323621627085321839 0.0436384862249013166941563839261652 1.0446192849279535816958324026810823 GT 1 -19716699168516012960568969.7945940290430969593197085947853722 0.0913385261484282498146336420096760 0.0346549234131073662005014428151667 1.0352696492460226655784401545801717 GT 1 -6866671912841681.0905885453270879490713735814878533 0.6305248353582667844656909499130378 0.0045537211151901894220313272356730 1.0045641208869711592762415037895221 GT 1 -8116273739760788041263105169570.6651376294220295312645757874199429 0.0912980576416168540775253001297567 0.0045879407185413672323899712592313 1.0045984976205624268567988972107337 GT 1 -203844189669375343915319535020994151275525.2075687868641826432020923266833924 0.5209919897282425698462808273719879 0.0282027606026657767335409488646693 1.0286080977250769957599584286713027 GT 1 -1432626316411504085914.5094915805622358436460712774455586 0.6184211880869746036644506106718317 0.0349877047652030036054998423999323 1.0356144365483637818331738703102911 GT 1 -11655797298103.0818242043948661907260845653641070 1.5061616531800229716061718739662411 0.0274982949220213622580773320624612 1.0278834501975214129145002016846876 GT 1 -5972140523279520669444349436419109842037106.1641642569071048909112126247846751 0.3681798331770698802670329604653255 0.0862018308040743669375878515475653 1.0901455533612920167979322930454885 GT 1 -104769916926484912919772229472935088.4285353603789299454530691229619027 1.0191502751295960309887811710774916 0.0588187871126799706080006354532076 1.0606195831363514811634495883366127 GT 1 -7176214459810414860895869240162902753480.3956596047123051570248463220781017 0.5815278313829219812932738205584244 0.0096200005904074757662727197022273 1.0096665717129127549256060876704007 GT 1 -1842648677348649128111537107880843460.5461071572882225257865273983114424 1.4603531822103356467975067810898510 0.0526691763962757305836573553059603 1.0541069082538625095310083939890705 GT 1 -7889271628483349337.2322286218637727095982277318934950 0.8838493923158147513466110882996880 0.0692227205193543933237101387170839 1.0717352575203294328092450437091416 GT 1 -18407421575855522774942142942316431258052859.7403670174409538483611871824707065 2.1401773949805390752808284132072708 0.0032802559557867471589922597659755 1.0032856477896466984489024966470995 GT 1 -4466668523878048876.4319021165827563327958736685730702 0.8296206771102254068465446110682692 0.0944250684922312665462544724290665 1.0991852535553101558161689247938306 GT 1 -2.4911075542482739155724715622858570 0.1716623673009659915272312353575052 0.0057926936055677735361508211843422 1.0058095363298278054587785720110171 GT 1 -1442829608750.6260870493583291502811893396109095 0.0247662180907306356045743165418589 0.0861164532765202345873936791496880 1.0900521262324078324534153717477336 GT 1 -53467453324788.3540355195843868923709664052530109 0.5907068644313343822887399584030517 0.0463050930468343822532553122025942 1.0474114627143864530953748630312453 GT 1 -63051264063234964.9548508237958782741034507022260824 0.0634896968220860625595679439844280 0.0874106598134898075494818491089084 1.0914692912643634504118290790502827 GT 1 -20184212293340702537234160547179.6064617549247212235061300029268111 0.0095506449822370383238446232279233 0.0212597859175623455289010857214385 1.0214890301103138230421165314707097 GT 1 -2698341411636925991697216860561953.9381203025470763150248782332970903 3.1745412328283595613620034264810498 0.0345364491729003129531121327227296 1.0351469294293887228066443206369132 GT 1 -20858530961.5622813269097395226606971519277249 0.4093502931159771075029538623501619 0.0347575062419100785130616075725675 1.0353759203424235660905491377545267 GT 1 -1.1970443624940300753320743906979644 0.1068456763299975980999570182146867 0.0285696670690559886680971571970633 1.0289857235636304429072739108278893 GT 1 -1827840850088430231112262.3678580433960886774258430377120560 0.1603555377888433888935859629752380 0.0769388173061836243579966597483372 1.0800597599006237501306135247941353 GT 1 -69037783444551604231712682327.5337354445138910428291436572226713 0.6548816329285279862520672023694879 0.0887004790598035555004938171500520 1.0928836531685552770438024339048396 GT 1 -10653160351775006523846013994641.9952004342173233489942012444028186 0.7945896048355463765662301346951110 0.0735233475763105566088999666589833 1.0763664333328069217786142663230087 GT 1 -2955396972.7880527095973362525282868938591388 0.7624260993262811617587622264648729 0.0947314753954478572293009689552964 1.0995236670223678209830229904258374 GT 1 -476909811945134779124.8003506227894131223373295966014263 0.0865146480079560154828797584059990 0.0643892169391492158795327120248340 1.0665557190490345189169936763843133 GT 1 -569817956.6612985430981145159312426676060733 0.0034111154086226728161064799720042 0.0737864328979236406562169891687162 1.0766504369083736507012800796582155 GT 1 -83166986073297628003984862467054535.5432369700563750032132538504907613 0.9684021685757520968551212483183734 0.0671119184027043851672617571965896 1.0694700407455654606651138378055455 GT 1 -1540787.5186939596544544448168742563118444 1.3651120305165357268904804240662430 0.0833038315916620022114035111221071 1.0869791937893276060483871394941683 GT 1 -3396320907955042.8258006802504185533856551654641497 0.8515793722081623562233994360148293 0.0690558433595900387295338562276371 1.0715559856303747487193359499135380 GT 1 -12928325214558675742662602872277752.8424443092723308790678730797438098 0.6819291957007496670046729441223358 0.0276195894512891541448923124085751 1.0280081822092464185501403029693703 GT 1 -70925080330289277043545256694822426900.9943757675053478477763568659003480 1.7254994427131500641578948702603666 0.0746401537165543094711255720706089 1.0775725941104131511493532536076289 GT 1 -35829221937776608786911770427907285.8668049205939274324174490291351696 0.0675040121338794947149077135261007 0.0174989701510056157882233924945127 1.0176538870469094081556498245906565 GT 1 -2739104399.3098024366468110947048347342225186 0.1107493950094628447402921276091295 0.0340818729229382522669302259382676 1.0346762029401023334667491867618107 GT 1 -380.8015381587430543119440014944281516 0.1500125444457354211407392458403250 0.0963841257289255122801718601799715 1.1013509267348602850931585398923622 GT 1 -191933891682990081124929610700970060592901.7385138674758074781695670508597787 1.0172636141155260958836620980694188 0.0157361027818979124891606669662138 1.0158612296561398669713722355341685 GT 1 -25588475315074492274962319837304551.2020844648009128503816755230568723 5.2602134934581152326870106778115589 0.0820427934243910771166965089677007 1.0856045053789120878296808447656798 LT 1 -2409851293909451335.0785252879483411481947011106462032 0.6637892654659864612764063188411572 0.0229062035325765279595221647031120 1.0231726269749052445327248045444538 GT 1 -52639.6036463223765850058098113786800371 0.7532586777381404354869666113578324 0.0916975271988531214893190552665354 1.0961778360278821577416251596346490 GT 1 -9455264118352532200853214949514700381.6685234736351768172342316959484230 3.1970869443071377395188428593264700 0.0476243550643410532661450190205890 1.0487957370025183144533913802817450 LT 1 -4940004768040822837414919.7257681242404696402354827442911358 1.2411443471076545819138960109972801 0.0239493542179558457089929764987509 1.0242408027452175530934263982154353 GT 1 -10.9249467407463719905133581696999307 2.0604766974208952642844634978630428 0.0697239427788307620115143690786241 1.0722739011601546451193655386000414 GT 1 -55579093200226636545482531.1779334784451872704142826832376419 0.5244333683185375967141169986298527 0.0712383739315201684234156834194753 1.0739031650543802158817150037045310 GT 1 -12683357867598.5090960753117320985094012369587211 3.7893003248296683542167261345802031 0.0756763057974732034516240909760969 1.0786929502866139646427753851358765 LT 1 -173213.5041902328343002974458946561428533 1.1550397617942290177886979276820239 0.0652248834831571971557094360627596 1.0674492957166108329585029799373015 GT 1 -3223256531815428649430802.1272623022039766676533358668378296 0.1281412121147721669778616635060736 0.0420945796678840505579564042738031 1.0430062320519188835583943489135759 GT 1 -610.1935469834267238745917570287384075 0.1936120104571352304845988150908202 0.0912146702524416004902760316766613 1.0956463735888083944604976030290893 GT 1 -29841909441427.6233485559840877372760180510870437 0.3177510559926529877712777192731842 0.0642248981349148165365355191714650 1.0663801071605616125717403657547162 GT 1 -24145429635493734149.9678729221515512089868510029610942 0.2650826818931127764422599141100913 0.0885041746993405362208145228167311 1.0926682649060969913249968468252602 GT 1 -373172301.4996172943506857000280686482014533 1.0723307166523272198216800701353527 0.0882365320332554917248986372813958 1.0923746778458299580359932677905167 GT 1 -62017259524924328786091229881476721180918.5038002409692103894718305725906259 0.0803048757964188488375483702399817 0.0215994051759408562228543071001929 1.0218360866534525285498243752052340 GT 1 -50724751930982308602615285.4351272534272710380986815651076157 1.5271107822991566342210897911431900 0.0861643626293825165192842482215560 1.0901045515210300569016808517588328 GT 1 -5206348118340341.2797729777022165089282537196901623 0.1518097354100737768167130571846495 0.0202064100622405741536447274305239 1.0204133520140462404149993979943972 GT 1 -278210598698726787051768565572952340554.7309631056753138798714211857874054 1.0244972926757919509546400001326345 0.0647589619084968346367488477340998 1.0669509881665361729505957564546452 GT 1 -11236681865482215097475246.1051592263675253011920961955825690 0.7265340949521318030452144631043199 0.0065468749129659845482661281619726 1.0065683996966744803169559252465768 GT 1 -5902941178415080116716295556454.8945413936218389323023053595604733 0.5280692296576550478382805430694612 0.0610465619245027745592331363766976 1.0629893877173963559064855231355990 GT 1 -1317543809888158.1826450382125471924800261647847242 0.6898502258535763405516227449560588 0.0041532507390553574282772688480371 1.0041618994400283970735508140386173 GT 1 -2054795295828429087861962811458949952895.7633463285606524221862939195489544 0.1421811566564327101299969894697784 0.0327733027414610484665796648087256 1.0333223774378728599966718720362809 GT 1 -576221468.8229019897117647405477418316149991 0.4128653408089437181436714745762926 0.0957654107842118000022422142747864 1.1006664509097122172219336546861723 GT 1 -888385400665.1514960329115804353705353834999121 0.4211389150948188310216351534036382 0.0270509327462281684373651088458456 1.0274235442569128396986103542887229 GT 1 -64404921820180495745131357430167662237812.8145527363797370559729215172256590 1.0770361557572873206809680097259924 0.0057238853878658185746791086761093 1.0057403295997112547596162670044121 GT 1 -25540123423618727085718629718.9658810690451440102102297244723880 0.5054263694536465797838633593413572 0.0665834589550359123917106541716026 1.0689037243410719623228383331913071 GT 1 -564290895220063017257884580510445473213.2647441640125732413981186799799860 0.0291855763346502423439686825001342 0.0951080442500903663891370217900347 1.0999397283209782024845504269988868 GT 1 -41260330379495051.3710654498821969761308143509122970 1.5986585773436813503409337792141343 0.0903777334518438768631964516503896 1.0947258573509738625966673281293843 GT 1 -28833002906682486396296370165599212794.8303627208073579587741741237788504 0.4405044013187650588064614068663222 0.0661655458401850656169063241703097 1.0684561004030988874990773868039104 GT 1 -4172221617318713.7332709186607241465382292726192445 0.2223662716279802509409541019160042 0.0306391281620279016045290004993341 1.0311183196638257448306760149748487 GT 1 -968914814696211648585053921524788184.9619577724552976578625651441748615 0.2349381949254951194514328386603194 0.0078910062645480030103481449580810 1.0079223050156396453517110966789773 GT 1 -25357011312551933103.1127770047793523788873690242924724 0.5909465619295880265342434059064672 0.0644172753123486182376916231974336 1.0665857088636478309402789912073838 GT 1 -17927579320203665221527433222796692330.9989792235496439878813675872668027 4.0407607141236120118804323471289561 0.0513948628653751173641757095120390 1.0527626500624646149394497112822145 LT 1 -1612215008008005833098410071755558134760969.0832163405949650960793983983910964 0.1928942986021288493558117293167936 0.0604214416026150549544705862020259 1.0623238463839126057357080121596310 GT 1 -29890072436631575527958543500.4385448611691381985462138637506681 1.3248985534222544202456640710722132 0.0423935107170467747933644974091206 1.0433183481500636656175868054776032 GT 1 -1067006948199.9889169413990615865714828494948748 0.8483396449689835834801942815992241 0.0372686113917999116662615426476250 1.0379808379637692039214626076019305 GT 1 -188154709753895705126520775671032.7026087109289726979689711212099782 1.0310945652827029902709464613366759 0.0339070121092416121906672998822336 1.0344951886459097117216731583683762 GT 1 -2088659055186.6258358697940323464423183861044354 1.2403999039145669613808880923128398 0.0867309471349186324391540154120160 1.0907247508196529357304413452640668 GT 1 -19322682617585392029081.5486153502566708005183666789607535 0.7230847807738963336838114727975372 0.0878723173970000531296060089275522 1.0919752958531240153961675764928657 GT 1 -417195149778475035184550937801667.1132794431655035479528576848325042 0.2290505038716129190074927436277713 0.0536951534878922050853125489106903 1.0551905139423270523831238594036250 GT 1 -81165802304132768890.2608085332257694024507136904660747 0.3543317260892852060972453536814148 0.0251996999364575828699357496435700 1.0255226494105111751805371624696174 GT 1 -2290546821469579485646509933265609098023866.1913946835809042586369468296673783 0.1676552575691941881471522707401463 0.0652897502743748814590815895652656 1.0675186910618914366581520091306399 GT 1 -226434666598022117049891216066276399996937.3620679621647600867912116286035076 0.2721027007560787707461040275588026 0.0520138507945164061229500086317042 1.0534153873765890918760168579455299 GT 1 -21711384108211782300677363989048.3356326917614297664270543194970323 1.2011042245146153153847820633419637 0.0578107702463524802592748564546771 1.0595491437371154989028350147298863 GT 1 -40904371838.0222641086443574395337223835261841 1.8242191662631363281626133859061838 0.0207118923200479565827106659476160 1.0209293920236481270105946944302352 GT 1 -39132790573687.9088604935979709970372315873873480 0.2810312886802682786115099532240330 0.0963972916418984403066507641821018 1.1013654970951915815179476645332398 GT 1 -14721963352636975306407741035.4047167027006903685770554599719861 0.1033500391541642290582037674971464 0.0993189599987207615053119725792018 1.1046040907067957697118910656022636 GT 1 -24540244022573716467664997253856216731819407.3884105969743725814798546210906069 1.2128386057720986488030433226109810 0.0541530348389214613099372866194008 1.0556744934593427195085348638513759 GT 1 -457810036262735734056827.9718957444170810657194037651549477 1.2405930469640120230170455014066050 0.0416909229423267302706258503618621 1.0425849256354630067381409477559932 GT 1 -11589610811783123934583165167545.4432467719338802326328104208596434 1.7682668881539853904390142249075112 0.0158602779311281437407086995941404 1.0159873980376427774606641618053305 GT 1 -14338603152052693561738716.6569802248190372083307326501439481 0.0698349257680211210652935634958002 0.0945117277865834736007180388609510 1.0992809534670970966643546329448700 GT 1 -14307575119138439420019805270567692809.1770861164578941373624115772723462 1.8455362009500393960593484781270218 0.0255701020899336519138547019939991 1.0259026990919900193203711235365117 GT 1 -291113382013713654464840.0051304356064771286105071168056329 1.1717982935695926874118908388979943 0.0535447119408552151814639233641618 1.0550315486887738100484168935320579 GT 1 -152026087068038606149310498060113841261866.5977450432695021729588012801174281 0.4662489315762843230868730983394051 0.0382692132573843107246173843490026 1.0390207149419366141863588569923400 GT 1 -40910344078706042543.3718087537917885807858734693242274 0.9969932899663950478208211888418957 0.0765244302947592057455143067622278 1.0796109337206493889684922140440950 GT 1 -21463520302560589863306380345855610622350.8753684971234280603958329790899566 0.5343386417680446271073206408878931 0.0859020568882009118694962225328049 1.0898175545034329190066990460261650 GT 1 -202519952242.5447801950518730638388863659558776 1.1224031115264614381235801055164543 0.0127881406332822684775103423048472 1.0128706127683270796211082305338150 GT 1 -11917017006409989385149365491.9722163748751399272814739767757907 0.5056939972142225432606131393045092 0.0301429535720803058685763226396615 1.0306065931620215405080246983131910 GT 1 -1476.5165000517048537658817566971516563 0.7862707438846799079870924052603163 0.0434135454291785236251007183274583 1.0443841078081555442541429744505264 GT 1 -852926523352393419018.5435273610861946847557861872591224 0.9155611496240928549022420749260729 0.0279970698363356382868813057493412 1.0283964599545706342659416565629300 GT 1 -81432.2492238739554133275590152378500378 3.8503430168732442596913729066458160 0.0399587504722882784946159646504517 1.0407790271853312426832938248294899 LT 1 -584774892665570030425.3468233494075384109587021155700813 0.8986824278069494807920153503799433 0.0283565533224843582136990286641519 1.0287663662240762872926406947698824 GT 1 -881948534033893023797151383683078509864.5591062813199115679589121379179200 0.1462844559442876186560109884263572 0.0564550672181081385156003790853278 1.0581112917972762571361334121522900 GT 1 -35058109875500239311958440.1706495902814895201257891822671240 1.6612077088625591721846836450455524 0.0411231914209918466710851328569125 1.0419926705576603402683396410453537 GT 1 -5.1537325241609502547328607966952004 2.7246942366494473775461333413831046 0.0188326922285774167733938879571490 1.0190122857714875498802861195091964 GT 1 -2082164455904025528034359024455824503033032.4517134813778196345472353816571008 0.2354619959657972015393113403095658 0.0961316007558454746502247339921885 1.1010715052445344613631929852113957 GT 1 -1560.3267735811883127836390285106487040 1.8313465483204663894746199858955189 0.0702245830982737723743752844119624 1.0728122092000098647168104756442650 GT 1 -539952898026700.6274563667839543465942114474358288 0.8196295455997386325738537691399855 0.0485022501441353299929996774374885 1.0497179570875471093473215964737263 GT 1 -427.5162641827566538517595639214326230 0.9810773308540706816984808225574732 0.0234267077860625466528890303498070 1.0237054754513084498985055043712280 GT 1 -27228094908482004469658044189848.8364061088987653296480611754903963 2.2182079768169301688237657126178638 0.0574857887753985079000513808795366 1.0592042815512576251240277524204893 GT 1 -17414227433280642299367288.2412911524315965398399461742904531 0.5589746085004059543245643952281279 0.0852391980274097613141803460265582 1.0890926664916076056153551234159720 GT 1 -10023.5062295475447563706683972211755803 0.4550781336291264396426342024149423 0.0533887319427658834101844647409038 1.0548667578651882861792198031052919 GT 1 -40.9304931383601755764525848775122202 0.2078291374486757910535171324249728 0.0944413956740934365917761180672174 1.0992032833488505827988013622567509 GT 1 -4322058843497940550471121.8984263444614454008274449923107883 1.3396253590236457568193246083657460 0.0932044744541153228393601553089033 1.0978382946949856469987684104719439 GT 1 -6298754454883483294018532433946563556643.6368491201070451601900959287104428 0.9200943283391313993902046290808802 0.0144805792375604502938439848785080 1.0145864460767448367908914104200695 GT 1 -4000262.2863137376732645382643796962201327 3.9854574498596399401913269071980512 0.0454057956019022947995097113621082 1.0464689456647883841945843586730014 LT 1 -45653.1780829921249696219817423171305747 0.4019656545988188859553108591264577 0.0120152297472518429782717889968690 1.0120879960770164274734202761835898 GT 1 -26216726405441444416363968481725.3013155985937597115991707603644537 1.0158014498950695952123474870354805 0.0344897690052013007798395527547151 1.0350985805930165767537087863766667 GT 1 -329192105935671641.8825911297060268930330509803977243 0.3841537936321503265118458622018398 0.0486020170498640842313965750451936 1.0498228150722492469888600669429162 GT 1 -4.2609592247663675679907168277437963 1.4208477659852161361274593076205281 0.0784427001903194392015310165643613 1.0816903227856892380584890455030805 GT 1 -10405537397.1355349912884181620827441343531251 2.4256866795590754239815434332817319 0.0541487384945074424032657122186119 1.0556699511445554428555944536753259 GT 1 -19676351177637917098490.9501634620009887810986570132520467 0.6112005999201901883550604742831467 0.0735217464785208980297717198127794 1.0763647051765689886399814326519125 GT 1 -529.1507168696886425120829797969108167 0.8371643122403281348757528490637759 0.0558219952310227766083660814613774 1.0574405662387467870155222465682286 GT 1 -602759310592611959859230987903462211.7753505516744254174167451238337885 1.4729491879394780252070065054990257 0.0238204801583776398666392400813499 1.0241087752189199677318736175456267 GT 1 -209082698674419666089.3515451465194850671494517685047264 1.0032525162529513031057082774965764 0.0587136155436879195002890467866105 1.0605078451502635556459732765027538 GT 1 -1794683037178530001.8429220023877440404935190381854061 1.6904215337873748857891335024567813 0.0899595573375034743742968329494750 1.0942662379725194421000213131143264 GT 1 -449434.6414082281644053675289875259831247 1.3177276579730472784854849949893294 0.0797903470936110798175455433196772 1.0831537513066721810626679836863775 GT 1 -63428198520260536684.2120069561152269354230799191603160 0.5375562368382706180930213062762614 0.0295820816912993331620390004109962 1.0300284566539525989269765418730578 GT 1 -123614010284333369521146468902817.2009442177713259474815673040266914 1.7057197522121474513669405436623127 0.0901895300126270670436163201719588 1.0945189759025874439861550689027552 GT 1 -1641892358944173175.4854932790907131483427728289582652 0.0374641111032747832778921838191948 0.0708113894468431381931550442895865 1.0734435354219198022858534298072859 GT 1 -2302.7081272024841352169998622225179398 0.2372865812574036936669080972471512 0.0129715101429956328864077300383286 1.0130563748618966581232459883664064 GT 1 -322519735628942.7592911503452776684016946923519625 0.2906440739325048363928312584031295 0.0075374221393791239824533349048067 1.0075659720579667501008595897153260 GT 1 -67211720195.8464443255750252179299300065779487 0.5737465646946733535889244764973361 0.0633510133532910704419481563930503 1.0654466809667461974550740212259790 GT 1 -789.0337114484528443651127054424702794 0.3596696921228810979991559405754783 0.0524817145832000213839064648891705 1.0539090436188423504484983246181626 GT 1 -257741196893403200.7985434484434063543422247234837324 0.1864477269233020851668272635795279 0.0715222753583830079704396901630942 1.0742088891700851548225777100821612 GT 1 -12040211225542191113462.2382776945060790637432571669239046 0.2610118240752528938694935316022358 0.0768413377110899791445019575153852 1.0799541607809423759116466867317532 GT 1 -2595061940591530910213377883667.4163231099860892388034159562812596 1.2587510755858818452206648186076496 0.0743968631591054394183342851756794 1.0773097141273253486632301711771640 GT 1 -1197608200106.8444066980313395277903590717041998 6.6710665043363758674928344865051916 0.0467718870727281601359524408275435 1.0479010409829908625222911020503740 LT 1 -53.8925103067011363913752745226802486 0.1690000749804719485871565311561957 0.0785653450681381682351922231959096 1.0818234160177939553418014015257981 GT 1 -14265647438753087572621668487660823.7518570295642739297406940061330749 0.3147228843948427139472521730391276 0.0446542005131452496580698482525736 1.0456819103379984100440586580004265 GT 1 -1791886704368168106194900802.3317971695026010457766756247933682 0.7342866371170833597146334659376145 0.0265220692201168406459971539176855 1.0268801244012899166366475857134006 GT 1 -1277328.0368876506832029281520749234205570 1.2873395605395443684588389423445517 0.0718268704363098672501249338590211 1.0745370015666293094097029665900882 GT 1 -13199716544655.3685787304526711771909761375384690 0.4103292516408506649571361924658951 0.0676328197513007456816564051626657 1.0700285716585112810948325237933092 GT 1 -124845996.4695079532001244154498527171506673 1.6893823843612859441787584982980483 0.0947777009026288612478165053551385 1.0995747310836553904666364601204291 GT 1 -1.9170926882105760378974761181599040 0.0259046050103133865519247516950686 0.0364913959435253496277593234840882 1.0371738611660576829401787718594995 GT 1 -98564214894720274256681219.6631693132351550961331391903827628 1.0142070555483194412241053016140802 0.0298425506745755963227672138416001 1.0302969017648044319798381823108491 GT 1 -70672842002803495383.3528396090435629548810153122556366 1.0761295203269150497948944311061140 0.0934871516042281925442455913945106 1.0981500752574812101564841610264231 GT 1 -377801226604441857530998.0210453750230388170598805640687749 1.2228944562244907876096399443978451 0.0135257010379571126546333937846265 1.0136180066089290396634199281635318 GT 1 -992431983328335011061389829311660731.0172932288829888579710085562084357 1.2633652455843478565801996108641526 0.0856490495929837681622893795483167 1.0895408092274465481330077822676778 GT 1 -8925700607491212594467.6281146832028977564798577125745121 0.5594776719339923351929521181210413 0.0461438393022409341521672351370837 1.0472423938514740320560821427371316 GT 1 -2071586795521235769334351009462337368439.0793170410332029134267302631921126 0.4056021395145086013140513196740950 0.0077820795427571458707267681949982 1.0078125179426314836726438898612401 GT 1 -692014042020290658048686.5002770531320501774339957258522995 0.9120573713496663155485046812009693 0.0358976379667134716146062264691380 1.0365578053269532151063252337113637 GT 1 -1114823785.0296518475080497570674607762593563 2.1526152080481288240679781537225182 0.0380820471554971536331069373104690 1.0388261200570950601379143250299205 GT 1 -499970824698755808185298468920155.9292010988190952779636944406314041 0.6467563228605447446582569028077287 0.0325476089663436757469223129347250 1.0330890635229119962691536142692655 GT 1 -31857454449964995.3165162751789129098596358678019977 0.1663562007067488330060437664701001 0.0088397051626139375404910455791721 1.0088790071396451680233345338448148 GT 1 -39838362437036314204907154.7296897473662513941861305016285041 3.1541359029684837149313612286261345 0.0962135190959702691122472532668093 1.1011621401783158001432459442705026 LT 1 -605584006060949086701044902.9821618565645126352044550267946202 0.3153880957440756387149861638513648 0.0642403363650745279991056882829894 1.0663966050963142909976201553189923 GT 1 -1.1142593595053472352496235064992747 0.2826895464743265549180884449762285 0.0198530883470897232424921706776864 1.0200528087029697059250991484625696 GT 1 -6855999381379044764670432049.0776963690923015000009476489633710 0.1638568415887846409650512692950386 0.0435992329459887884972889990409061 1.0445782413761108259847634929236606 GT 1 -228786034244556.9462879177790051099082268691862444 0.5827750009623894131131282747057146 0.0844909078107302550067118803288992 1.0882749835250036582058085276949092 GT 1 -8059512650077.2186953466685870249700056325268250 0.1704513752646236738826111451131484 0.0087174413811062041400870183175996 1.0087556605509154225839754903319587 GT 1 -860.5888889611211786260295686806614666 0.0844591941635563010778730350573704 0.0051481627574155833015711362210605 1.0051614602052210921723775585112625 GT 1 -608968913819020044.7766636886446453992569994378097314 4.2919091681708107338867926051264811 0.0328982556902782700524216730536809 1.0334515726110459525243476119398138 LT 1 -155873813817153573231993203894426601347243.2028645930046911828397406982337900 2.3893016990351673898495432155304823 0.0346125985241747421038309128061969 1.0352258058970136175256409784118780 GT 1 -2765680163789735572934859363382726686734.0487908519136291385942536762596509 1.1770963700308179655416323296152604 0.0652505326605203065514838011298751 1.0674767349678367370263205217546535 GT 1 -9349044150.8648462452236103576040815924652360 0.0267439553495947955892437192829448 0.0600874440081095903479335285102691 1.0619684335857735444498478682658569 GT 1 -32945661175624851635.9244878647728367058568320881489617 1.3522332937462552615246773684469327 0.0980894295057194694280422262589264 1.1032399096282630301153825710496463 GT 1 -54106369149707785553106535.4146303100596963092626109358964228 1.2956814758378337529372499298174760 0.0026750338481061543618950687623754 1.0026786181446537569835952891427681 GT 1 -6757314288172417196180697.0861029921911304684537445448936710 0.1175734320908916574309476743478993 0.0827385123117698760314143142331344 1.0863626917714994943787991988817573 GT 1 -1235282829014229120937526179028281.9626117643099689663750215844858606 1.5327976538032718197151280046741608 0.0558304316295872192297756871539618 1.0574495014566955390911826387953387 GT 1 -1302134339142982215932.2088565533662277174416645927356835 0.5254752587040702997753407198351061 0.0079582629152986974157134673084041 1.0079900989082424044947103833726677 GT 1 -29892948598839.1951651260406775777043174506581796 0.4511526790010036230655897620565528 0.0695285571816807833855463819298534 1.0720638935176734094650215398599047 GT 1 -1225631894072987296832678353996.6429987707271464710613677336622419 1.6947128387727070556834055992128116 0.0893526859082013495255693099276673 1.0935995981826645468204967514363516 GT 1 -10676792265594806879.8661365069022053574409537876483304 1.1579862227419496004564793317564645 0.0888993213232571746473806070573273 1.0931018733644096104827010283110266 GT 1 -29647842396577783967104398356845.2699553281001007106920911346259010 1.1855176198040286068903983957646594 0.0121544087722117855434907205320502 1.0122288776303152137529616142220923 GT 1 -50375444542.9179698647608384975328793251249707 0.8701754737885090474835361859305511 0.0918428058263109259175885692719226 1.0963377940279510709938813726575632 GT 1 -872789969449691048056986999814805737008.5987412475830605559573824517500448 0.8165776748607381731034751432312397 0.0764844567686273032751402896403486 1.0795676486979352428709036859766976 GT 1 -32099349249.9954991727404888253500134923463996 1.0736236626742899866192483903022966 0.0986882958741551267956985731202547 1.1039041276771216150213928736059145 GT 1 -14017985213870143523754107.5211449777448919357602901661220091 1.3593625480100336688460012118116035 0.0110609008727007005190399902948313 1.0111225274887088133758469387456645 GT 1 -293435925895068406109829.1395080814739384094830105476156260 0.3197677350696752843100930463212028 0.0609135609528336653236896301461857 1.0628477496472876129541209362362633 GT 1 -4824084475410015182366340096079418.8647614299566003649582696090465305 0.0231138175491726267484874667327506 0.0558568737525065350647384767379409 1.0574775075417008560871850183038159 GT 1 -215941995088463756218092420220.7723688391139301500286260937751834 4.4671816415021679843131917406597613 0.0683863707649291974821521429595910 1.0708371111572511927177695732890882 LT 1 -70234914688971581082227637265408959082693.9311540821438498470690869169261818 0.4401933427114701410803969063439538 0.0056708456048089253503868181005770 1.0056869858980766443084871011726057 GT 1 -2080631348075332.3990453111073448598782167772231250 0.1909030366064472564495426927610752 0.0222141697679107339377105782471763 1.0224646204213330978213760394453230 GT 1 -30438886804996096468218621695596.9707388160580847385126170731708683 3.3690012660344343031878183855369809 0.0235497687670334228269586730952733 1.0238314964435354651401411607020921 GT 1 -13503738821341857.5798953205312217274326793567454546 1.3816604496530966518354031618373626 0.0941332716627869070163504183201952 1.0988630827248201157018758394770007 GT 1 -3817311815893150938492067115136.5793210549167476629372351152028249 0.9228629630378980707454684015653439 0.0557769425233566314321924716583354 1.0573928510488166163108493420426842 GT 1 -112519435346880698501059124964.2575274509591703467919257309789024 1.3704321804904152985558208827717751 0.0005132528993374132945379030266447 1.0005133846586925952817928708692691 GT 1 -565294928329929.2603861413512689814892684131232669 1.0978489678003363142503794881015345 0.0825322369036452340288545237473665 1.0861378352604850792666416887722150 GT 1 -1414612826429188243809043.0120571919079543793236387207256417 0.0311656418472029849228605969098507 0.0081415362718659953408445121885026 1.0081748595701079229396906302313877 GT 1 -65036851.1933077670660305889139252923845836 1.2955553366938416275773679377490431 0.0300248864120721072462416296465657 1.0304848639087514767321785190935108 GT 1 -2483858879797495989634034.2703413387722571664951407992467138 1.2916277429774076412111081107282908 0.0291430562123413424918345349590504 1.0295761502907325206565196757762792 GT 1 -13220502699412901.0562459759837501828823818260459997 0.1041536696738291243989258272022446 0.0998214599407227313172184920525493 1.1051621574884673973383670096247512 GT 1 -1670773872146109490558404068830.0294866425539774052042065907335768 0.9253681242452293143008753048052345 0.0305076195557756270143976481634113 1.0309826635936212026609299964837663 GT 1 -630297.1861694715225795461057778403628550 0.4430039461394406077188796208209219 0.0411649250572076029130545731775424 1.0420361949646173460948854902433482 GT 1 -481935141422242756937.9678356627615815545194952573132870 2.7512369029350687460714669251840278 0.0360645058354356558673000851018672 1.0367309013775337751618095440371489 GT 1 -2133799187218159093710039793892914776.0353252794618380248039900383489774 1.4893588488790981917137144067570073 0.0217139976644495716473757290489266 1.0219532157724499926327142083107757 GT 1 -15431324462042988904985588843461092735.5165455119180516142870026739041310 0.8114574843649622151734363493810598 0.0947236732685908672224649345535864 1.0995150484820966078358007481833724 GT 1 -896788215400960686808745061531883.7774029933198820667346897293071292 0.3811906563306248777224852433937420 0.0949859495742560177552505992149715 1.0998048100704138624321559130584778 GT 1 -442690575190995582927013527844116.7460999513276437701351779551475133 1.4509977857756726005403931267426216 0.0934419241890939262517196746863672 1.0981001848593287639296648191505536 GT 1 -45331680445057009880393715642.0054948740071972870772399566899709 2.7252957839857657054596850432270307 0.0361818479123888937315070342793463 1.0368526410794155900691300758642489 GT 1 -14379368254.3254557048377406765428218023839014 0.4461893755256219449859781298009384 0.0777545188803945418865114137783603 1.0809438423605599341503646035239973 GT 1 -314544301522053780996084773401185820094.0813867740256152078452819303481852 2.3196373939035125650217873808427471 0.0343943043199033690788005967795787 1.0349997106245625603314816905043286 GT 1 -8453553906395208841537.3399355724436149652711788248304894 0.5035594167054839462393079537271283 0.0683798711807967663276125717513495 1.0708301344866060184241183274330544 GT 1 -423837392207.6848985821875103481871603329941430 0.5189377737541474788309864224079470 0.0060588274361047689010158080568801 1.0060772566082106454355301491069852 GT 1 -19463601094299646582797051347648517.1976994175631223706976662858362521 0.7003532604270227597362668562696531 0.0213785200625646805244534942365987 1.0216103507078413270468604541549209 GT 1 -6264775157618727437063291.3432256895409652269698639415858650 0.4050675761397614777534262765335436 0.0557155114158658987186541310802174 1.0573277932123885451203246523129714 GT 1 -396259851224127975.2503761358076144617853742355278639 1.7633848434719063992847399608436758 0.0874708306834726350219023792640232 1.0915352276621275730036597069935050 GT 1 -5932878494928064520.0178423880220393102499306591997628 2.1124538571760892235178198030407620 0.0251952961674332827031113684368994 1.0255181318092375765565714087516846 GT 1 -50247.7192642107445041477343847659336131 0.2229586499418607269232242668364424 0.0102635472654125359547059542299995 1.0103165806525051925810757448613843 GT 1 -2293184977305374936914512140400281.1415739947643100952949313585872806 1.7451964324686962642918190045604775 0.0174261618611171021364908343331184 1.0175797847405719586316228100310891 GT 1 -3054524110255043.8616403079621143481326054445022319 3.3033531147513195493764852829117262 0.0734350262664202738216263264327445 1.0762711075627751715962974624921628 LT 1 -558783909193367921893.4346678479084795126405478737082827 0.2024073705342020752403664114656548 0.0549726900511114281512832190346210 1.0565414524891610954981527431886665 GT 1 -22000638091.9830240835890575116663407924006188 0.5962470006468172756197797974680628 0.0035061927235130210350780910019872 1.0035123538227701925614273309024561 GT 1 -2338668885.3646789967164444932236955906512376 0.8750202909288865994633541859804238 0.0526663934257088266777211069868771 1.0541039705615486844067721661879941 GT 1 -602373753340029450808.5821723891373711514754328403826725 1.2805289542132528468269670285026016 0.0291329138476155416945749770797009 1.0295657035284022360430385358522309 GT 1 -5376107871300.7072684024431572777852226219241369 0.8078924380026788857294554787828947 0.0469578175790356835624052147553104 1.0480961135362912469908612660248527 GT 1 -84721794518313682.4115921503628602894542351107255158 2.2308358989255785024601020069318845 0.0005047222550725353259691436399235 1.0005048496702245637121441210511580 GT 1 -1310796004321645225200262150064637.1644521647211515861257065962884815 0.4473216946200206622087276760431957 0.0249264807808107243749672884508838 1.0252424064996796491688500324705600 GT 1 -541659571973202732022559430396215226912.8749059062334861400587050100087329 0.0793123534213234077447175202117365 0.0378959954445389357124299719761682 1.0386327213166882213511238858708400 GT 1 -117194784905844795495681480045615017924192.1038281113508200523014414515473262 0.5643796656223815403210974847461856 0.0102168271615806949857417955317854 1.0102693771762304958511081688948899 GT 1 -978656311989914538480200.1562011567151242211253320685542579 0.0831257489447493781922767426046900 0.0698464863805184492737628393800351 1.0724056380490813671153807841239459 GT 1 -14775838003444851294577716744549224.8170720132971792181186397033004849 0.1618516416427158979408202033575409 0.0493081634744700991137344466553377 1.0505653104579216025216515773589554 GT 1 -537479568.8821231669429853332583085208165713 0.9817580527336636424325152492411364 0.0012232547059123613591328565062316 1.0012240034926503514949381418914427 GT 1 -43807395302469287134.0956241527704653514286883487024258 0.5170652130714782644444052260925978 0.0986794985459160203900581222296288 1.1038943671411543281843512775280119 GT 1 -157757633.9581575673016990829682026756302120 0.7292318235262143359266498855008872 0.0930625816296920922024926385425303 1.0976818297366921358089698115153942 GT 1 -1940627797558996351528300678680723738.1661011742799164269881037154294341 2.9524150516453259659022424556260255 0.0870697089288773955290127299371358 1.0910957528123644883149630187426131 LT 1 -26084369265683700136255622479593379568297.6366012984791530447434638513060778 1.0180777058172264503865645531916424 0.0055654586787854228196118751304490 1.0055810035469817005844619666443621 GT 1 -130998855533211489248526835493383488815309.9227890661930863057695102484815115 2.5964569226070134801786209989887916 0.0784286815070660190654954319572511 1.0850105228262185610513713421782840 LT 2 -226398997547044751145533686094.1671768821281093415853564794192856 0.3599456371232210009455897086593030 0.0803239970346899019144792607371258 1.0837338416555918672892326596030856 GT 1 -3438611.2200367426293793637440528344165923 1.9595156108391606260375673783836957 0.0651880198698046094051708870945991 1.0674098606847543582189877751281960 GT 1 -3268496096026642556852505235762084208088.5053241338092733037053789237817958 0.1880267966279957144319576920345922 0.0717978064846193485274625614227858 1.0745056889852438958085657344720393 GT 1 -118841699322.6124232407638702817023167047498184 0.0240513340830312488302958928548320 0.0545853808687323253959410142257261 1.0561316973077505384687192792521478 GT 1 -2389468.6701539086687508374526643519013862 0.7244600178224864683155690426820074 0.0029567381378546380260219644939507 1.0029611179234458386421657162231300 GT 1 -125862229203097027.9523407223871616644158858083966266 0.3326268971925040879079735537046248 0.0225442916063619976380690485051787 1.0228022992554480841502790314072268 GT 1 -503124076662398961566716.1178765946126571034605133010467182 1.2651137507942772939539388136564352 0.0113029211139997474415755611988889 1.0113672845832623550995132110096084 GT 1 -1650961260985216925102642084358096453389324.4566050136061114718448975681437654 1.7103964911878222688734784502531086 0.0073876047046644431150612372162014 1.0074150282024196231184749499751687 GT 1 -14137785787094695789353.2372650468207445912184151474006266 0.7083859607819314482895880095866714 0.0494608259663924463883464404594210 1.0507259037697312497249557810132087 GT 1 -92464278942369215023362.9692531650683541223492369710796005 0.1788030860302154037335870491404020 0.0618710513757945230655978985138398 1.0638678675434893962647937962030343 GT 1 -208810166802306280504765030358990.8695847364864435325214062689192066 0.0127894295375683515426040279661295 0.0676457812547724473013666766744215 1.0700424734708451809315612708818234 GT 1 -1491629858406416445.9177215368800909750623849750527533 0.3573694267167757643456108883740113 0.0032116882761331616136052424464963 1.0032168568163850361478367220875409 GT 1 -114491441140812.2218572720232501925386478123034736 1.5774893770638622635304813055180049 0.0982773661703052195561004074979904 1.1034483075051876348674502658721901 GT 1 -208878363531743696488982070.3957366860610435143442174922004178 0.0915985068276519311541497843152135 0.0581505501585708276783199829605419 1.0599098368795462493686386662327820 GT 1 -824165045.4776995395825439626572866566916344 0.9442792399429162834896319257667169 0.0117669736846651926976990580607076 1.0118367524495947229130732851822682 GT 1 -179349836074996617544223263885461085.1572430446356744360014628796344119 1.4595351614088262507349567094563482 0.0497348554861146175699832188623213 1.0510142338402668722394145948009652 GT 1 -8923625424796297946794966136.5162506214802798767504154174578390 1.0422504904207089272895613544643045 0.0018763531611152131843486431257058 1.0018781157168375858917870417098493 GT 1 -1252327960948219477.2858721865158079063649254219302742 1.2592825518401281059107075753557392 0.0075558761284988882063346647679940 1.0075845663718498077953971186347803 GT 1 -1724259223363.9595646677921450776287472329212861 1.5534885759535577782600142576806245 0.0846061444347102883826776985555069 1.0884008630799779157148515505588690 GT 1 -19654080152603339407978896026884.1815425293413147449390021724384220 0.3605237550236979841003977621650077 0.0208700212599768167342628842627702 1.0210908784206222904297829976297740 GT 1 -10.7425349306537217382821884196658945 3.6898876259901831340094725303073093 0.0281200393740433498331811046305161 1.0285229794465157414126895004761269 LT 1 -50776424836561.0885110403652566789576661442591837 0.6780218170370177764973574272546704 0.0620253750868791303638630827204603 1.0640323826732609393655245926211095 GT 1 -495522252395129820682927.5104928029164766198545799236249118 0.4350906385150673481482320375003244 0.0771381323999002135374385162280407 1.0802757115833977896707756169185496 GT 1 -1176930355575827454258207875667865.2674387122735556347746038382571519 0.2650401246118969612113925596665132 0.0267079128643720387314618041372002 1.0270710495163363523280557931589118 GT 1 -1909.6734647517544882926072200125397319 4.7465232529829120364698432064183691 0.0452781099287108506330934396990696 1.0463351954976456539355727801980133 LT 1 -377535.3996268699709590672896085781177479 1.4125833826836211017142840060419996 0.0132983597541331791704885063902707 1.0133875747652069253559244598037973 GT 1 -28478619435181137418392861316505846087578.3385440138577251212231368399505502 0.0487766461408247056050092179553459 0.0309259038303109015472007801380320 1.0314142033794088888629028381871685 GT 1 -12060548496384840.2509613312381158359190483441724429 0.4737384534903768953330617887156837 0.0233451981003235379552464811795769 1.0236220139385112837925068005426851 GT 1 -42383167178941915765.0681927066074670289675497188276941 1.4527137741061403388955658711824998 0.0870500016334895400159057012352574 1.0910741661886382520393463442030120 GT 1 -576951377877996683.3571330477155618025729131327209460 0.4437207586705829452484165095639305 0.0527482742882537866044769250664133 1.0541904072727388221366225110256623 GT 1 -313464366216127.0623304267662686957785955515288193 1.8616912397249025105537705544363677 0.0887551383161801808859277663360822 1.0929436344309202758243691044884125 GT 1 -5515298734325031806773.5807607653342419432310328767288091 2.4321258733321116935152848851231712 0.0726604065903475423928920073764254 1.0754354445681638627051553434313248 GT 1 -3777443017350259243844358628.4606252520984221542435846194697052 1.9961932903683025817617671331162943 0.0482236590011675419053230554019866 1.0494252077181356463237963684374748 GT 1 -302091964510504475145282649368.7128095826342253547107987302167087 0.0535227206800834236960341581948675 0.0067877716133310355081574936361272 1.0068109133149086662733652596959694 GT 1 -37900688749871.0642245567382170882720115400108857 1.0508613947492845137831744474429523 0.0735426778098021158160828081158813 1.0763872977929086784739853980552574 GT 1 -3829844432836732734273407354.1479629731125294513362297168411587 1.1555458096407676546821762634850305 0.0635292270128131468100044943100985 1.0656369663546859908816188945452924 GT 1 -157955663541054713556659981316009100956.4034745012854523462497802705026090 2.3912590475638795190698629754066190 0.0244724214366333761183812966265529 1.0247768481106325332094339887716250 GT 1 -13929769961946996468335.4714369103058686573318721616227408 0.0520163205231472901654328207745479 0.0509833339969157137345650780317081 1.0523289188793274510556376517155870 GT 1 -222971980898992381740.6670739663395154212912327341483736 0.2520431255628218561307112049677776 0.0745453139303242713122850858382529 1.0774701097343125723780860498872531 GT 1 -12389824455857378518591.2492846848080548300824036683461439 2.2744438995048209437391764746574384 0.0655704227687572780250095839264713 1.0678190136941997226961187350703745 GT 1 -10246452717498569139020.3945028923707336874903381047870811 0.8599994758525563681575259354489218 0.0216074227768750290206938469777322 1.0218442812864354612356599513294886 GT 1 -1007486110957011778803356063421.3003885558738935656569895122432930 1.3647414829972819643300137424599634 0.0526450275034938507980481088607015 1.0540814170691680421713161140574519 GT 1 -149405170806468900304637359336090.9965219778145691106669501376660783 0.0617730171097794012952964778830503 0.0723983030970977680210324438856037 1.0751528442547599023638559301203163 GT 1 -5082632925285.7274839727115156668707424876346755 0.6277927067064633482487187729510398 0.0437903297073494339576735382136206 1.0447780695881346469778499256911734 GT 1 -1377250096906182872545400629015285498394.3775650106826140876526598005626958 0.3626008231448917507776682530202804 0.0226938535186249608375015084006004 1.0229553224098357293527569013587587 GT 1 -7569711831326889614840086240775539108323226.9608756440607943850602205706620034 0.9053001134722072508870349694991712 0.0959021856964034786911938806439526 1.1008177227800678079654785920857059 GT 1 -451738142857141974435.0115332085599676350217629403641031 1.3392076692876889652329446111179276 0.0373331550504771889291712519588999 1.0380478824406743179365760733249709 GT 1 -8825810312502509.3373715042038480993923063716667731 0.5817094910841698244650586176090295 0.0786838571349215688604324363068750 1.0819520411873920127851873340660854 GT 1 -93079699379386934236.2783000842184602533111865623451423 3.8466619921382413943781248611901075 0.0170890557931511569972828828306563 1.0172367588628858068372731050555004 GT 1 -428800872304362506594467671982788219375.3245173185572225996668574252480295 0.2177222331059337187967957123566555 0.0588119166214959976274952244869671 1.0606122833028941113251783597812945 GT 1 -90842321536507958234919919235809043.4440563819533311201240142884982003 0.9626878872882914849534155101599475 0.0819267309517539034376396488026104 1.0854780777685508468824190415663325 GT 1 -44872241243890155582158132.0477947171731258903680988745606956 2.5226593683535424984605355654882161 0.0115008614723923963267656778055934 1.0115675078664252695926621560478339 GT 1 -1193809236911629244696279.1296958556107387842349822339896012 0.0937355043743057487581900293063716 0.0301766196012642062292086570744845 1.0306413061268189005153807790153907 GT 1 -144027898325664123701943377697924.1824585024391267535602068407899240 1.3239582910493777860802555977548024 0.0184184717083856789060839250861873 1.0185902037213234954602829500254399 GT 1 -1132338685592.1534414136908626723454089001567682 0.2286949800696097653660598125926415 0.0901236774703061398151487449887003 1.0944465980157769506920356341310692 GT 1 -7117588356126283409364356268901255933.8585199963002929937791283864624331 0.3015613057099701599174275890716707 0.0072786981433410564107258878846411 1.0073053171129550624491187105954594 GT 1 -13220033475.8299306675531079185305815540926688 1.1064327045056987899922282204092176 0.0151891581665464189973445535570560 1.0153056949996124185147297538508822 GT 1 -1125551263763972675792586539282545.5920261234205168458146380045865269 0.1749853638443668275043476647838539 0.0543557507017880625921158761479520 1.0558888384820349643440863460557539 GT 1 -76.3894720330432528614902519184130815 0.4119399690195252949774173489532081 0.0315330093388045381205753070004276 1.0320408796677092739606786428339549 GT 1 -467908268102670295561732292.9989907745409138979884624055792450 0.9048874748929055903270090926385456 0.0020371037716495217694298771185376 1.0020391814897021369025343311408054 GT 1 -99254730249398.7652926171791188241480719470670564 2.4350131938134190638528594844208314 0.0025841775312693445346726548975415 1.0025875222815542029550991343807203 GT 1 -5401749496008140.4710590453344678487486418110965526 0.2738739236446021943696001257930419 0.0979098262206300497607717692305743 1.1030407929857085009726145874367959 GT 1 -5095443391564889088444090207092344754.1190347482685222628956197739119808 0.9220388657049776855068265814758052 0.0442361970833025872427203952177618 1.0452444645358500967378872616925683 GT 1 -742496.5771914234296695029266694454996949 2.1741782818579870172089687934255314 0.0573910016674888191361004603404411 1.0591037182485418949088547673752945 GT 1 -15721078924259683884071557404653045.8841147683221966966643159271006278 0.4392947441178233800358955527061392 0.0892809064711911015077754373797335 1.0935207788558700224787551982723183 GT 1 -2.4246667112894865889405735245780240 0.0025721969183736525216767768269927 0.0678066737430565233616721821653902 1.0702150542013443062111810532267176 GT 1 -18197004025988492.4680198601836794258267668087081612 1.9114516543450403673192817244901136 0.0926778272026685710891087450221911 1.0972576848848035806457035660834994 GT 1 -2773150685177441080882904724.0133565452445410950706149434424380 2.1822967370502017754013229094692992 0.0674447459692890694464670317479373 1.0698268755673578310462514017082416 GT 1 -2876868916258778481797551701086262227.5824678447925176570006389172955328 0.2511011030199915553090175988362251 0.0582744830053819704100699970356479 1.0600414300990061184975162689382049 GT 1 -141877438769.0095625519728395980264626438780612 0.3284342427777269419441957665673172 0.0787341325156577341622572273416389 1.0820066117633188967259041513864401 GT 1 -16113413144990394500030444326602493358821731.4434789346106546356332908237873023 0.2186718363329460119268939352885064 0.0902541839275615268956527192385616 1.0945900414864960088431886785504584 GT 1 -315371910162787124569588599096369.6820240745217142316474290444348057 0.3979182527925642253023197652531815 0.0831015472283885459076703672410216 1.0867585513836862382037256832776697 GT 1 -155852884160268.0956110444600861592793645028289769 4.1410591366325022921730141072938582 0.0283402240355664978988100177895411 1.0287495605226005857949286029311284 LT 1 -935681873.0062162542215799690053963356868730 0.2678492121745754192257765043703515 0.0720550416496942870697118976166840 1.0747828600774853669916332358944153 GT 1 -1502043183427025036273402121.9168496007704133267030222480296776 1.0364273587756536056761846752362198 0.0566299354098640303558338155320315 1.0582966400429577583573351564503564 GT 1 -560451369298242788912641208300042.6224796236472687188756773171092264 0.4768403739452734846862468175223472 0.0269339088273576777905301636861830 1.0273032739512013666882519116899336 GT 1 -1103547685108829334045360765646915040270602.3200756072905370748107702762817142 3.2478116162657486014230511070575833 0.0108206601612690087748320333371770 1.0108796292801076734748539235312227 GT 1 -90297744492406690220286597719020829824317.7849061650288507159419697377073283 2.7077035067374032389930879962480833 0.0277635301013657268530742547867153 1.0281562223211951971724499217810321 GT 1 -564335959834230119030346.8701411300925318318306318154632100 3.1942209925576353415873209919363976 0.0785585334789201658701322002121580 1.0818160236715165907402249962084081 LT 1 -30273127391971868123806345872868.3077656027491373777626567790308418 0.0026896457676051991497706695264170 0.0427879918759137645793620369484188 1.0437303779742815261538342704828657 GT 1 -24630302905724222749707097740365.4345902985766894897404127471868252 0.8397222538232563672040225549793353 0.0761261998486878964122915688489844 1.0791797965911622948499960852051156 GT 1 -9522.8108646393648160928552524205583630 1.2431506522569508387953012548568103 0.0814471231656525784353212413835841 1.0849558073020454372434044544512210 GT 1 -131.0315238163009588243723643004930135 1.4052121917568797882046524131670811 0.0940179349218512915741979495649048 1.0987357688545782249696738340143047 GT 1 -3746847210700020622432522824067130.7409389961824959163595976774734312 0.0978928808804254572829669034033681 0.0162852861557227888884376693538188 1.0164193489212513532724167099530487 GT 1 -30870.7522918055873285862001905145715307 0.9132486629857753538771593960162833 0.0657496471606441576739092593669479 1.0680108329453752300601535757929076 GT 1 -14722020175836594257417172162168.5439083845820763081336455366028196 2.9096584943388032111037713496602272 0.0483965811011425946888937420003713 1.0496069077699005114449622783948605 GT 1 -769277759916701689240943855555991119.0842648046120389339630402168942910 0.4884823862949788458832809657521818 0.0350957672276232832410866849321634 1.0357264232182171138131070048717874 GT 1 -2984159120720819669305159.8069693769017324226011830985919505 0.7054625316489444301813963104100683 0.0378085724733453776127196451500850 1.0385418589991914616258492623429741 GT 1 -14873678958136255475227595869799155353.3512082347992347757684503683393092 0.4866315036455884170033719200053356 0.0514657623037304125214482501016033 1.0528373935835036236062126181446290 GT 1 -25.3022555581600131038829060712092533 1.4262970291498210989835577746100735 0.0993652383023990621210527371648383 1.1046554734833692455943299605014348 GT 1 -23046082928047472900242270480055203245141829.1479486953573494349740268974326256 0.2931437390985445721456278898263443 0.0620923848019534761612459201575008 1.0641038260865733625105867316296942 GT 1 -6105307916595830155342274089715684443.3721675439402642483964010473084283 0.8666440413473872635758210127915193 0.0097490350954848357890024110104750 1.0097968680756221986344219162346868 GT 1 -149939729834436562367594358274078188352215.7500276897539844965466752766653626 2.7440775695040780130549794178910215 0.0444316241788889989107945432611711 1.0454489576097819004219192859563632 GT 1 -140767921.8201252225463211728040648901791768 1.3979134228592733716417224372473957 0.0373695782649485924805142108738740 1.0380857188985616454528692219069062 GT 1 -147757153125.0949527278764321069021501270932334 0.1375619596674791649484755620420165 0.0362703059383820011531340081899576 1.0369444240421388483934715038307133 GT 1 -4459064348554991464768.5296319761518239164799029138133419 0.3493344002254145809779657045853078 0.0918468607293151866717917063384334 1.0963422590171432845785516340203600 GT 1 -1372922495233275819080609004.5648835496495114595202723666679571 1.0332533965792445451634711021055842 0.0367025058184375193787612167337315 1.0373929905075622266107879201212827 GT 1 -1.5812111290748205475519725269093410 5.6676982982054261087172571421514374 0.0992917160265496194113339200731323 1.1045738429732152175676461591044638 LT 1 -6899418974813255024921762054137145930.9055738856000456595152188574150650 1.8798100176119989666533002943328526 0.0697957937740689155000581665618100 1.0723511403512232449498991342847037 GT 1 -25436844413033231839034542.6074823926902915056191731274488584 1.8092385726170174354695363815335654 0.0904809470163483891813589344221480 1.0948393323883522995443655886237490 GT 1 -65213386364762391223.6668610110761132874648733756365703 0.6420088611624348074703171572215655 0.0101439143811791469645479918111307 1.0101957144822593327992535103848293 GT 1 -567944146281.3494644273577289698055485237652796 0.5673711022612753869166540664917763 0.0958479417621535885000163551188857 1.1007577267196893571126732094914719 GT 1 -1550816971372320406398377939719745248.5329854810942105332482314074934488 0.4231506241473638862091704508749690 0.0026645561332746804741418109865274 1.0026681123815885819414035207816398 GT 1 -106689715545.8673282853432745196239367027544241 0.3890855058665787345614099738808543 0.0876033751010826989816548258396522 1.0916804877250443875173139731923448 GT 1 -8504502609688060046289220296272956.7940472864422207710079786445257576 0.7104357358395349373068453457453888 0.0410764067412482607704776944197992 1.0419438806213269923837642455386307 GT 1 -66694940553956909308961.2071256427102479078042538704187775 1.0239448825118874428843851303699004 0.0667352626434967833301591912551212 1.0690663698773528145523436624713817 GT 1 -48469276258420.3067269610772013493888635632814084 1.1736921620500339052362974200492457 0.0399465147286882771173187883819130 1.0407662822479295496167376685513701 GT 1 -2343083160164368944873563389756335562619.0595336936219567704775103317782362 0.1481103589639353812456078558666306 0.0255030843991350271364168309807936 1.0258339251489558939768549627263550 GT 1 -1310741375.1612715863548867035343849236322571 0.3705806472156988353161946572688945 0.0770078781653816100581907264564512 1.0801345799061574950394162753766184 GT 1 -22159902264308258361898816320376316.5570720743497172795205495647778180 0.0297514054343370353871108494543119 0.0652793912806278869962221052917773 1.0675076085511900597093029600896987 GT 1 -522032161827086550.6396864574535844947900732790539066 2.1364237308500810827785640255233922 0.0703360135726874257842842161915063 1.0729320630380510995114780229374505 GT 1 -629977259276296492815747729594.1845878450421447062419321068940437 1.3418208533080810832713294105622553 0.0689988996198604849471948563415259 1.0714948197722136687727583374644629 GT 1 -365459234151997964730309689455133981759.4215459099364945978094563990353437 1.1924663551803142724869785250784682 0.0296994780092980481027011054549844 1.0301494389826656658106102967515387 GT 1 -31252340707006105318581226.6420041450030267397806067921190625 0.8816467047952109177086344057905965 0.0396543933408126135950159150646283 1.0404620523705501205248173983066035 GT 1 -237895701294647688313952701636082049.5817454950865775185768679329521993 0.2703748311392490289656263595492963 0.0860682318134772283272991217305991 1.0899993621892784880291036468060287 GT 1 -631774.8331991579369792069640714488424307 0.3171676682466861784950294738870273 0.0012651413458680561981056748733436 1.0012659423128094358419589588475916 GT 1 -1.8807713541108337614332342452010968 0.9207076686786064405537004393791906 0.0052784052667430374937004534144145 1.0052923852642516153293541262870285 GT 1 -63538601.5169042295079376184001155594517301 0.8045867799622997182004098593754042 0.0205724943787326186690335796117442 1.0207870559534151015463434445447893 GT 1 -2077590371806125.4629712108923618432589512484365108 4.1945252368065347411242831723055841 0.0347583253853563113999578629819647 1.0353767689828420196830206116831204 LT 1 -1415989740.4232235537733618088502632163626187 1.7719790369094448758442689660627304 0.0624611248380046358856385431491103 1.0644970551578350707689654037405178 GT 1 -188779686957681801623339284073395607223.1675783195134424083880595755448673 1.4487573348269235421436616181800539 0.0109865243031124038652391730346577 1.0110473218740039581185578234223956 GT 1 -37145911859935436419059278025.0008199633791023567817173747773208 0.2960534557803284123354077331444553 0.0039018989685417100134731303624909 1.0039095312363496714658504071568054 GT 1 -257640102981367698789002617073728138180.2328491065886460050172031192372324 0.5809400178882525318703317176411334 0.0498021990800786001580900625543754 1.0510851045659013544039291994520077 GT 1 -8419042010406774777387.5125554584193644101550398914155639 1.1946032357849819799761045652240150 0.0451308023447913076762537369175047 1.0461809136881435805618947358896413 GT 1 -2377115852.9890814871318334524951426541606009 0.0934146899510596897287089560317700 0.0103873705238771126758058565810179 1.0104416957822606831056046089525942 GT 1 -1525156131802973515712074726535067101.3388274248288863050712013239760189 1.3486817223872512703135940169823181 0.0904489217489243685676006579350492 1.0948041217970975340324360977167343 GT 1 -115850457929522987920248694.4528236136206210579064905157801131 0.4661604696204267382027473919029812 0.0451554739298496390252714409875121 1.0462067516812974193629920706480907 GT 1 -371592490162932361229411594140242.1163362652761016404573389305676538 0.5418152926864175540171063179391396 0.0894276171360238123450403980370693 1.0936818850456827685456262680798974 GT 1 -6122628811363264275.7307601303591981107651359798777032 1.6738221506821993375513031539581472 0.0270554811959226295686361373759811 1.0274282191782210331620318632670879 GT 1 -32079895829687137051276.5098941791098484410544210065592411 0.2003749189368822212006521644713089 0.0593341085868473790585673547927478 1.0611672593911020756954097043595171 GT 1 -1311605738923.0198554824347591437820194796330492 0.2035394294063654068285665270936355 0.0252769200309282679468917997754900 1.0256018688703052686117230297874944 GT 1 -15731.7930886237318197142005652056212622 0.7893097934657466757705599576575032 0.0483357286268466274122402125751717 1.0495429625092020483309412485383511 GT 1 -21457658950504794285.5003119868840574618785285215398885 1.0786190963358089573124677025200482 0.0553526457207101141774663953680124 1.0569435912084990834155435170213383 GT 1 -631242903983.9512093964450517015447543432633633 1.1646421730637372991334520050662208 0.0608167657047101124883528503346014 1.0627446811160931644092584198596761 GT 1 -231729453252214613.1784110936231419706129810202139630 0.7834861986212169086136448849220267 0.0098119903651873080046016593772925 1.0098604451618470564198153184625231 GT 1 -293178335535594840.4268837748109875235863472006945084 2.4550395059971779631078074911254655 0.0391665657598883815928475830868814 1.0399542104869740367264271318388089 GT 1 -365526570222133121344241115282310189088434.8441320027585099355399633501686184 0.8482592773986132012023223066141383 0.0953154722039401200300574846031267 1.1001689841238075919556215800777954 GT 1 -72316343462235.1627781294399390420507954599357987 0.3727860885524913157094197228735718 0.0999108902875970014271079184138313 1.1052615097675123217268741483226757 GT 1 -336783542372589789582251672.9093145978693185785248447092602807 5.5640135140505207706213638336487364 0.0476593395035958951744091936912078 1.0488324715431520075815472383177308 LT 1 -166623.1933184669619111612307082139880240 1.1405957079739353226589888392919717 0.0980609000751206158187657337467605 1.1032082779118632892961167279622216 GT 1 -1052372160078501677364954576475928.7161642973651096564199356166117184 0.4963364418602722882545660767189188 0.0357026450901580564992860326773044 1.0363555724853833301754834239048324 GT 1 -2479817086839862351231870534809248689.6533465296260956841887200382595963 2.5633412597217688860930552621619460 0.0592585396114449998719182173369332 1.0610869270001707332532360551594864 GT 1 -5333472599.7230543137971085569269025008288146 0.3159683623500818526847990954933887 0.0336078413438662912662403803346306 1.0341855658078765870036036845143904 GT 1 -1659394690369432498706831.1188838342776606405142090416118849 1.0009640550722764416195535719753073 0.0489484359823129379134440779530736 1.0501869970678556361411642086611142 GT 1 -1684299842255353786495152883.1790903886033481959491267652333414 2.5256473632640411737917208871491324 0.0882396015390512844663764977271333 1.0966448959553943529130078116258668 LT 2 -52019016465764016572146613994652403.7421223067601495004136933514239420 0.5488957197043210494784771594891731 0.0758522064329375837706098899882636 1.0788832703831468882436225103550569 GT 1 -26256942888203076615120270841575102373658.9034602810592087184402724721286712 0.0260402651107766485509338282580545 0.0175262846364332948177108688175508 1.0176816884072027014944820358226718 GT 1 -2459521688818104547552102544.9970367284573032830162714263007529 0.1899288142879361597415885753411756 0.0440814941681471286715842233241114 1.0450826145100532463378325169018711 GT 1 -178082958164938955298.1632973791208471677732234987319335 1.1118384716184609965872303205227226 0.0338500517265008897043831457445305 1.0344362308599179610666524558673532 GT 1 -21085890647693066.7331200674443190882909902248337977 2.3545400636841723599978192812944944 0.0370725388290508428386089620535559 1.0377771959080134280782412910946022 GT 1 -1989618009.3585551460744243466710590989828084 0.6738464037325204498407722374231320 0.0386360106823850143532022501185159 1.0394021807272059803702847560010192 GT 1 -23855668300078805329415923402447.6319356834390903256331453186619958 1.1693812225670324169986851238939176 0.0686523564802793400899518828532290 1.0711226626832517207505128551582242 GT 1 -231047077047283554123643804089.0766859126660874990690370840752057 0.8500811090266752305578169076821709 0.0156817828902956786643031053699890 1.0158060428379516216131114040940088 GT 1 -147592141614522943382474660700506530323.4441262970980785340822309225532015 0.4155116884406965177080168867995429 0.0526167615652932047460290968736077 1.0540515808226199230326594550886642 GT 1 -82399317238719046009646989067.7024465002245145493053634408137732 3.3419014375470851083433227549055256 0.0066482390079881064936726311448914 1.0066704369886303206886797814910828 GT 1 -4947801028017.9407906897093203543862926790843356 0.2971128150786872829239563405455329 0.0756529976006240880373408345361130 1.0786677341170785314624087798045099 GT 1 -3111535090299649078108537.1698181215710119597854599595213358 2.1430952238238574415916253538171840 0.0730432281908113821613836547904822 1.0758483468561511914187620512533564 GT 1 -2992882475.0804594313405364643356344371942489 1.1556503494900502286811862434434904 0.0623809789678584474472506166052489 1.0644115734281549650921226247554537 GT 1 -1217764563292.0970693633391439548968315586478400 0.6471983502017007230258729096513222 0.0336545249991542049513499813436560 1.0342338741291759050024361774060055 GT 1 -80269404326393421149365207956817067514.8416912561758870693437001163994022 0.0364347511981529984963633535682436 0.0708916287118130035300985398433269 1.0735298932708576234517044851782944 GT 1 -840854977771616525364047.4076186443711345813424243859014766 0.4852837589310069451181899285606974 0.0864377861336654872993265518547566 1.0904038005391224386663234169257287 GT 1 -205928585949970649398800264.7399942489387768398817994988751996 1.0836706796869713903258180567224341 0.0641416563803259588918346279291064 1.0662911562446175093597372734693859 GT 1 -47873725037294612388143356741655132211424.2794554817259450851487192857887592 1.0116657182956877543204125120474379 0.0725160995836722654065617831570988 1.0752798426928945615830009011366182 GT 1 -4167563253496515644242588.9454282148629299577995277752512046 1.0141675172881981815719616219256280 0.0131126527480804324233470925144264 1.0131993825856019072627929919236954 GT 1 -109.0621811866569471136210602456403808 0.8964522470551703073558553379459746 0.0259331176092724193549321453619065 1.0262753099448370869856894142055435 GT 1 -1012047762470923.5306434762575440368517377354667307 1.4230783672335326357728540468783106 0.0819921119387733910496096400503146 1.0855492957392750285045575599361699 GT 1 -487658052693576399338.4617838060696805004377592187564385 1.0327020168412321042714953759096932 0.0334994485484294477700622742727356 1.0340734097683989212243438270661740 GT 1 -3540209012855503.0729406952795310341725767730595946 1.2248589483599276777102553964268078 0.0756889995613021897709038128855561 1.0787066834096219685305621742284196 GT 1 -14126025427428098456565906267940478769416417.0270239672248522418023237426210353 0.6308828032163262606250933680747940 0.0735399176954306008164974730733552 1.0763843185836197791254692239963399 GT 1 -370674774227.2922864399324731969660508298892470 0.3525053130463520580256758228197679 0.0773703956888422630917812013750257 1.0805274204573789935262309407588196 GT 1 -54046668.2961178086974772237392225584416231 0.3081648519035182755623854153879879 0.0725457870874630731021491393828750 1.0753118518511301055189207720231795 GT 1 -145223730.0350389906856463369183244614113298 0.0361729408528132159621380901242719 0.0041745031808512029226028998234998 1.0041832407443905782253784226340238 GT 1 -234808545909873242430796135.7245340670139870358577983877135516 0.1303381498032452120368214841060153 0.0847010851979502090997676490081060 1.0885045842120671468929023648978047 GT 1 -188544494793778943716215529807505817.4612586134055254779522916857134649 1.7053629918834188776188998242493772 0.0257108034577302995214324895452412 1.0260471030427099541270688250349461 GT 1 -1294274862948628372754541.5926234729748198715583227817621070 1.4460595077804954517577118355080220 0.0847395624475841469276305015733548 1.0885466230015662308676242363141012 GT 1 -50757098.4490008686807936834196122786417242 0.2289802612357204699166858434738354 0.0117590284210181465634519872568151 1.0118287126133453681462812775265848 GT 1 -10724446280975905644355616112657.0097939108407758283888383796873291 1.4472087095539439988334187418340112 0.0654363734288971805439228453348014 1.0676755681858723092218188392684867 GT 1 -4021.0323641167365917502699757965484656 1.4792771035133684840427149744238760 0.0267076572843967029332756709614210 1.0270707869230766750866333183863221 GT 1 -5061.9017708804765874644838023993776634 1.1609906705060318556296252247060284 0.0583087990753933437375896134914913 1.0600778703298787451626081897822000 GT 1 -4394197217729498216439037687294018748.3459016460003057754078315308960244 0.2650933863792722032717742679516392 0.0219487995732748073409676923572467 1.0221932581430813451868653859354336 GT 1 -1431313924643162535874364044562447314062.2273167089576472914491941193613042 0.0030455359876302690035342247263128 0.0102165798660917354250853714822822 1.0102691273281174417237140138777845 GT 1 -2380627601851462193168617662.4848298543239391561055257059528301 4.1921646039395382297105445128929899 0.0541194536614546556304447034911849 1.0556389902726879857909934850851238 LT 1 -198895486997696.1474691577274033216333625568056391 0.7772935234919295648939097453775908 0.0096821945790078360081148604812543 1.0097293717912176028495466970547483 GT 1 -277641.3780558594081257205753685975275433 0.4917304259409915911997072423876994 0.0812942499744483381713879361923941 1.0847893928524713756421129441728981 GT 1 -12.3977831318090536397391249494837334 0.1475215429685043182425205350083007 0.0283554123428067811211426502218413 1.0287651919466069487425633159488238 GT 1 -287345500069149366380903.9805258693759577783625376117337065 2.6172364556490580668266722896118396 0.0772847307228216596539439954101237 1.0836694365733158078545176553990508 LT 2 -534379409661539695204873008082587675337672.7300180681323996094062390016775336 1.1537704867714012748253181057907828 0.0175133941460913161576909985255455 1.0176685680503151112938360099301076 GT 1 -132586245957428043184537.3853340856921640608382846662592294 0.3689806773240204258744469986881458 0.0927990935700880627917158549856690 1.0973913468580110819592876692917362 GT 1 -41497.0095164398743794551809936477869063 0.1217887851038001583156702116370887 0.0963695247364265618053391416930073 1.1013347684590358212071339402702862 GT 1 -27.8693411556457806130467305008782466 0.4945667091464436129223315249178619 0.0705303658772313609213603787237188 1.0731411413991797840450035358932216 GT 1 -414788.4086156763186301946981257215633793 0.9742926581807217546641735221919123 0.0193733984008987322557905134678537 1.0195635222529857177623835559653398 GT 1 -19877517936618722.1013536317635238932857020746911933 0.0061959905530426496452510980294696 0.0889226356533127312908812584633495 1.0931274628836622350101324974680829 GT 1 -4188943.5760209206079433084299983079069772 0.9883359249047750645923432050487975 0.0101469093122664107719034900413280 1.0101987401095818808383454685448475 GT 1 -1755.6655977130411711891555625338477199 2.7806258963120404168472845891287852 0.0952820676768982054826311279510683 1.1001320608546267710804423085636586 LT 1 -161729504442418858173064211212324.3863542683773281986530207704881745 1.4645597569021778071092029524628429 0.0917671506950161000106849860123936 1.0962544912906230418468519801849735 GT 1 -1661686200590.8825629205962397836258284802929827 0.2758864374592452993278652238847506 0.0622091474435205320768505401105507 1.0642283265259831777514278326758378 GT 1 -101291158049470604726811544683642219969.2053458115110698324997177282123158 2.5532466100860476932182411711610600 0.0499455493479887561512892038201915 1.0512359795542756610013886815779601 GT 1 -1713059388707769783385815664558.7387445726273845910467287686983614 0.1191650888958680202115452587568534 0.0390733004964110953137142049102785 1.0398571481513444367111537147568195 GT 1 -19546094993854.0454135549478521254775437277171962 0.9205021707674496700123907605146049 0.0273717474349673552767942353643359 1.0277533329405892415277416816426645 GT 1 -5822328942398836424390282653905438721698115.8847332408854502422820903499003744 0.0695420343921546761866590906991497 0.0145172172115717765527999766703543 1.0146236230762931283374529378391555 GT 1 -3392963632652532459902555935731686747169.6042842666775617552958399470954543 1.8575856357495986993040192583854861 0.0773882410773734002641893414263616 1.0805467625216609468562992476303638 GT 1 -5379209138122834393281522802365794081.5289920332312407240098939131697663 1.5563575152233987580720524660902875 0.0876518734545992527639227435278642 1.0917336440401833527784471221468985 GT 1 -139761974363693208436496478369106.4623106484926023033958812012335251 0.3803650390613424023389768980675857 0.0645897813233033979439873138413184 1.0667701093575731623126184071766445 GT 1 -54876.4096314824249780059031181986413238 0.3512356957395623402529869064029824 0.0737135431948347084136491708128809 1.0765717435726803962591576387750354 GT 1 -6766227087243.0347019011785159012183800043132781 1.0930543302032719486955244031419422 0.0950824211703470280675048163700274 1.0999114125460245658968525268382162 GT 1 -32492364274566082274454198680903191.6319520003772003245345457119760154 1.1280018809543221035839015214904516 0.0013925164621991506039276848054465 1.0013934869142661736300747083016277 GT 1 -1896591157789224379055733.8563300362758569832770318597383550 0.0829020969842828363897863321536105 0.0212820539046512968924529500251025 1.0215117820521360579122630418422675 GT 1 -24100975515255497594.3281971625418596513111124944687577 1.8279621312690326496576920766234219 0.0384216903813082951838703157891010 1.0391792720085380238190222749764022 GT 1 -4111269866080655667229154.3698564039092532566307162520413196 0.7461668321234364272869322847937734 0.0892267098816427735497753805877698 1.0934612709599810440863138266823954 GT 1 -9841539052390.7537707161600640279838847585334571 0.8727030560833606049442361296591898 0.0201800757526066595951844180445291 1.0203864749697261514378960358460393 GT 1 -8921334360254575427981644164.6076916500748438489723390852232671 0.9273330549140436749829898462209992 0.0738099749747641593888066100400336 1.0766758547783689796805566378670141 GT 1 -3787107093967664074797811704708248026263508.8154364629842564695328390389904455 0.4628529203084166239888311012960539 0.0515060057579250632281562137866369 1.0528798214752167244825115796578076 GT 1 -1079148774020282324369908625.8849806025938342854041480788302094 0.8964125689973518448172093588033110 0.0436559827519617301616972401173890 1.0446375799835981819540937261847491 GT 1 -15677568341.1945101327124265535115392238192978 0.2294104657906398037853982622799806 0.0906186946794983427408535170538336 1.0949907949605425873996415152093684 GT 1 -97500126937454259029426414136403175369345.7331114679189274449799003276693576 0.0997636399344079523432224069839495 0.0302932588900840275855064864677726 1.0307615819479231435460526217239428 GT 1 -20286115185930309619.4026235309688053221750847901837437 0.0654571921131429405803790434401440 0.0662995780416732432955786267139427 1.0685996395716919845789323172210677 GT 1 -8.5246966462493348974148333944153838 4.0322695107967768680881520360272125 0.0470883415775309260007665939925816 1.0482330780271432676487938431991255 LT 1 -824.4850912422757003986358430743490726 0.0036848899775117441627545024724092 0.0108507130371207451863817713622237 1.0109100113667305972245303444890651 GT 1 -22680707244835398.8478328389668988044349821655211558 0.7893628841886621840860700326020901 0.0845226534910376166055705875139000 1.0883096595658957061748532321915504 GT 1 -6530756125192357258118838129145048888564.5002495702359395009378051060771365 1.2369289799500073952253139146527589 0.0963912516392506336978686825645926 1.1013588127610198678809315086489544 GT 1 -258075861158410502571488985496.7392546999222101299861841937595262 0.7122530730136611373548646559422688 0.0568337269728039285340208406590099 1.0585126884271515985521010326189303 GT 1 -82619.9519492549384430069647532015658056 0.1417672194674153447741658728840207 0.0211668208873744067939075901188229 1.0213940502433203375901554136176642 GT 1 -13613540423256295.9749301952809777433642928253138535 0.1329917884023846116945320568435196 0.0600618000853667968432255374621070 1.0619411506510365069004953492154943 GT 1 -16098080241023513834712441432523411394049820.5289739380357553906866371694799288 0.1247120745569307137245895777736280 0.0635144503022294652231840239440457 1.0656211873315395192398662127455421 GT 1 -323405511489673322135334964742513.3564461698535779819661583440618301 0.3491515637015066901101623009350749 0.0345101955495227408085384890674378 1.0351197370341841106558894026406879 GT 1 -274121191025855011629.4387539263422938479801448891028498 0.6978300243384255674839479951301288 0.0960477730217186612500668073559524 1.1009787662493366276763418814980268 GT 1 -60536444514456053083112436687.7426287222688273573629140231826270 0.1759829147642501040077226585300700 0.0910634982484791697588873434982531 1.0954800423034694412343450794796813 GT 1 -36788450818.5607874924896025792964871761639585 0.2780137536813751706279055320112828 0.0106624314458147020280075088865432 1.0107196824885281556537827902649375 GT 1 -383083352384816145689108955417250985488.9042557823313509257802170627742851 1.4360753479725204637080163064965092 0.0902631318800967384206840092303834 1.0945998771970669567693103628917684 GT 1 -27795528259046779402400734797.1231659021730912324467073028274850 2.3200959387678960860236475639026172 0.0460409777373667043974125526384431 1.0471345620594927062830572653140042 GT 1 -187.2331472365782566712304121730739641 0.4470266919184269802818175582145165 0.0760414525499784331574681497299039 1.0790880704138617477475650040844785 GT 1 -4.9751012811363231463504159667968832 0.1260374829699827370333076611367619 0.0996171301603129303421215660254430 1.1049351951864169670526675659646177 GT 1 -705162447616608282839127017587235.7412399863150350858400731589712538 0.8499004930755683176341307624490063 0.0884672345680739977402980520105105 1.0926277387931666945738134175580880 GT 1 -817977335655.3655175774621746538190344186964792 0.9921207394723846579526266205151791 0.0752359993336035344100266955213574 1.0782167084367400954248025409401847 GT 1 -18280782294558312013552349676758723747.6442485518645179639921257571683995 0.8214802620458931329359679799506953 0.0544610395735923060585311053440304 1.0560001855703251119152796292518352 GT 1 -14216102445645273110819369.1727513024256075871964706235155169 0.0290531517472855523183011036689543 0.0056015939601219886278290186545882 1.0056173417234871618654097631838918 GT 1 -85210018868509923729771777820102310.6555102536058848724910261560913047 0.3994382547509979943438618755035540 0.0566420322185612572621826024056707 1.0583094630979925502526867735485409 GT 1 -36393344503370829318161584745751233707.2144847653651011822047692073334838 0.2291974434411346745909017564944611 0.0093288420606058300655602722077014 1.0093726282366749395555988831117063 GT 1 -6599.1093331068407311496944791310554766 1.7247312839749212396621298143048046 0.0336130330379609335803912249573280 1.0341909380659125323254427647152845 GT 1 -217881105634803175380899719357346666.0985762488647415250073651967731225 2.3195233213619216510732152269992402 0.0299166588469235015534964236099550 1.0303732924609980391108338927870596 GT 1 -3610416329487699382505981647.3626275998499289401683183661201331 4.0501863931051557082114959134809866 0.0463164332960577732321523958647069 1.0474233536415203652212190982349965 LT 1 -727819177603831102.8894842535758501780594506108871055 1.5184220153758715619700785000637965 0.0703532684666478151626495424699383 1.0729506235656640530869187657706720 GT 1 -7859.9608466005558073118730183275647422 0.1058866314979530820277041407358750 0.0035293425348782733573758414062961 1.0035355853572765490571450062349105 GT 1 -89007930872127461845236044018152265.7225163994507034663912354073304086 1.2057384762458221802051065888464387 0.0101460406736978724840669000238223 1.0101978625670499873593472672867540 GT 1 -82470606162806893.4624246797294276110648504691480296 0.4373581666363542860741109523751086 0.0658345937803257917272045349229265 1.0681017619790534127463784553241712 GT 1 -4420609837280932244469720.1254051941325192759292515864391816 1.1582255291498572717541446609239242 0.0644529760070116741010396246292729 1.0666238683709642648298074298902309 GT 1 -13421029973158396160508529970406116297099.6302626673539328120072709831207395 0.6138904137946990663463155689665622 0.0923673232950945969357280418415919 1.0969155233035516019441211908204665 GT 1 -367984812568852.7918615654998483123536245720233300 0.7741505401784388592584972061907935 0.0710148484598401459678140965465554 1.0736625235681961642814502216876142 GT 1 -130.1977744505455759363798565746806507 0.1130549661731909249825679653537004 0.0888676694980266595678035870622093 1.0930671337618733093314182383259427 GT 1 -2684867813386714708652195308.7198040366606182267663621951756729 0.8029022459468945248868096121156294 0.0479166407103145745124427410765651 1.0491026857450429983519670918851742 GT 1 -816958798489931455511239115230682379.2272022300271153791698259583933929 0.7228719704082791216356774206102429 0.0254190233183284978282240018844680 1.0257476678667903190396678940136436 GT 1 -72932923557173900.9195741186607011283681484281315029 2.3398040536723607477919613490435134 0.0897758012774257177697025527603447 1.0984883873967159916931743111912792 GT 2 -218194463.0593149839742790961279325459361859 0.6920397720198042286064186864346463 0.0892129917379542364011956044024198 1.0934462089895362625936440980253012 GT 1 -54139653477216316785904661.2845913957059745747234043581271369 1.5932175476389347339343159337624621 0.0392630491507446578094332774619058 1.0400546318836462912503790926472123 GT 1 -1698394363.7897427690314079634784971118824869 0.7326529132944897558651308806811375 0.0472872068014362181161400452582302 1.0484417919995716041992866046380547 GT 1 -25166312452877865019.8493905778766016451310241325164287 1.3500322691422762992710937230360244 0.0189745165327715746571786916743060 1.0191568427233573015613214509353067 GT 1 -137029306115.0160041689992211288566126126728750 1.4038300793156949631542412404254183 0.0219953838220527418879725499975071 1.0222408889401079890770732255648259 GT 1 -353481236791189621635843513377.8844203611606398664211428904633424 0.4536055614100063510550517797591588 0.0505823546583275939197701631084350 1.0519064872553784170321864337308945 GT 1 -6211283374084374554.4208693726491912999428035512134300 0.8170415000407535696283773192505271 0.0381568830238817630892107915144905 1.0389039216818356382178809557835274 GT 1 -1430963978253936630211910465799.6337291384615121562377012965397625 2.8011135349136721169485401223499487 0.0672614984816075637605349510537883 1.0720545903798232113214375892108225 LT 2 -55.3589752904494761902570569921220162 0.4008859371730125946542745907927059 0.0024665580616578192744387173542337 1.0024696050273700271145276407217124 GT 1 -1779.2058411662966963455132958980061564 0.2514649059850662080007224950757717 0.0541408527082056377083020719676505 1.0556616139421325159723091853881347 GT 1 -15883580.2592635879956898990790925524866701 0.4047688055578447364424891234838520 0.0780504921274830584719885424865194 1.0812648206208808496010189523172396 GT 1 -1442330028269372913521364810507813544226.4185978346579008515195005434111703 2.0066645277316502806358048012069412 0.0614237035885669657134858465882185 1.0633911301369268911022847727378209 GT 1 -189035452135989614491325500009931944061415.8111155532071990846683284882791799 0.2934389407825512693898154671065328 0.0071745485539266327628700497579673 1.0072004093948802279912821161655346 GT 1 -1126248990308579202660267175679682613903.5498698588881418563986569175865355 0.9341983217782888447186343611559806 0.0583182635970111294803574135613197 1.0600879209379450318738111822772224 GT 1 -293332749831754759096031376552925796701.5514577986211594201030680206232243 2.5101093555914895599493243959754880 0.0881451370806246300747459218219163 1.0965317295333759925183453276963484 LT 2 -248.4085520193720927251532655625040593 0.5525783310124526489278131289336836 0.0631320257414328553413386746961273 1.0652129092770042559917173624527886 GT 1 -37848244992418860755626218620198702782.4016609546738832946429770450116504 1.5208822383420015634246442695288549 0.0545417217752611837809599426292737 1.0560855185365174764171176369621713 GT 1 -8873107306.0772955561371991936384425636656036 0.5160622203894059260106283458157930 0.0740331291636028221436559617079542 1.0769168216105170065998005711735480 GT 1 -54906225286542007673329927.6102668280782031171194931527937390 0.6411811590195361977795712627423040 0.0515954590634172908276652114039935 1.0529741368051087501815071708863587 GT 1 -718342939867077.2438446222292743104673734482304749 1.8430427573947581550490118888304746 0.0379471583482088744393044034988251 1.0386859008730043758462710845891555 GT 1 -108771215727.2975919170673208438518516261395287 1.8259959304487885378929463060688186 0.0125381294156526120915248869601875 1.0126173950188088043387223517321354 GT 1 -6735982717406529120145454679028787684204.3071658701329368819208169305201449 1.1734089842163628572341263989099256 0.0963716896063202464173820111530639 1.1013371642087877288625919418834708 GT 1 -5328795.5308716192911152429051380254448830 0.0466440765381848429190630812091888 0.0701412684135957126219507717614107 1.0727226058930351710604100425228305 GT 1 -3270217613238856005957107282758841.8682072831944987310530226508382322 1.0044092534554819324375577933177369 0.0814676191650557430285988552763384 1.0849781209092320936280046270472025 GT 1 -3744047469353219083859245.1037492583107423375368891707249867 0.2433922876938844412233963007269116 0.0802549856637628400406994262293072 1.0836588056846963270153106059267039 GT 1 -290877.0558074606288409505368984520621454 1.7689448372348856135281453068180722 0.0251002180308791606816918221371033 1.0254206009912886249409579103718167 GT 1 -146091559835196997195056.3630708890903361646289049131499679 0.5467158656939056690620900904953495 0.0796994215700071219351780829834000 1.0830549466142234917856501749603637 GT 1 -3497404087257349371105926823.6687000297921899976488142371583250 0.0295847412640925311069734593554493 0.0922929360191046456000683489415654 1.0968335691939550321357379120760933 GT 1 -2441755431294258617783663.5477927913140668732088163746351862 0.4917923911899854352414559942844016 0.0535761007917553911518142133090312 1.0550647138808412096337982024609573 GT 1 -14417182920911300649678109706447137563764682.1460840705006014381594775419223359 0.9108584084361012734788082786399382 0.0632442834634918377911504549731150 1.0653327388060018024569913816110004 GT 1 -27179.9157376288701411166049468708328466 4.8957646068831572652125159404805322 0.0366321399822186923519907957883865 1.0373199463371288461000434967016054 LT 1 -6.9785076039359123289839874479654196 0.1596434773739558246985967298286866 0.0691478220924673520867551584108966 1.0716547920693448593863930087443308 GT 1 -773426443039750.0100664175197136368809963256994123 0.4614470452201061677603096345539172 0.0527450090182758442130299414350132 1.0541869601802063189196061777172424 GT 1 -1664334740447456413316.6446407192513266462395104077461173 0.9234648247865907428412214835042496 0.0817744519878113390058104033641105 1.0853122235373365573720705943763908 GT 1 -167011894439590563988.0300772630564396510280007707330987 0.5709630462302485738037255955934726 0.0534805308443320788410915238363731 1.0549637389133892077249342731261216 GT 1 -98680291617711600541029659.1589184727572182156100875486378941 0.9156216578799414801163142059758821 0.0607196613899865436177585798573523 1.0626412941606997433986780795562289 GT 1 -830695476287429.2807523824044134665285198507144712 1.2136395247815657392338637836581420 0.0609157766080946472051525011566532 1.0628501090231476379061115369716619 GT 1 -7731015222166.4715669847009380278525473436663719 5.7001908552600672996438141367780070 0.0077499591423736964825700900492803 1.0077801461422170571774770539733211 LT 1 -124857886880971413721411756.5911517545705222315808348864609220 0.7805531317086061345896695226434406 0.0891485438172408806569003207896709 1.0933754507990411058672206644100605 GT 1 -648476418501517621853.4991129332707925973194299601539941 0.9250560153508725533595442077770086 0.0262069283192470089607244535042797 1.0265564499838894377699043907995246 GT 1 -44356622108632688581298317266943.2364091457775862686879110512270743 3.2396552186810331585927510996385600 0.0975132752697844831341467036769227 1.1026012983234903567549856169817516 LT 1 -684370051.9431961297334032508201292348082871 1.0688535337980674338602032084047179 0.0789615605451691958685701359832022 1.0822535069475836454195517440495974 GT 1 -8873600580770363561740282798638.1945634938294171778863193029084897 0.2585623906220625485930199444043583 0.0406654316735181927154795816770596 1.0415153928585762056415843173755662 GT 1 -41390540230600794821575495398651.8531574654047223144989297511817469 1.7795369572744663842355382085525060 0.0418180384070263144004447613003359 1.0427175800150790879226118867971311 GT 1 -43362488007754346980795127303254634.9311482536681983675676615356653659 0.4378504766142967274433968557798743 0.0697250307123543874104507077283496 1.0722750706346900110738227544864193 GT 1 -18492716859611228787823439634995385117556.5192336775866386224187329882221991 0.0238469096080568564345678860972136 0.0820529778625916531969564790482238 1.0856156001169070211688328164780249 GT 1 -19904527996673794946113877133769.5586300243857684933943005871626019 1.0147885635404208145296339667103953 0.0568516087447781473113159165024113 1.0585316479065145572447027663112829 GT 1 -75440203.1318919069566683371992837147274868 1.3908915241048499542765933655501984 0.0140339413165544730330416684120297 1.0141333482139366813788383869243467 GT 1 -264890959087744399492585711062859750.9137097147408268369670533578437283 0.2305446636089832465058367458272178 0.0303448547615096573266854486086597 1.0308147910697492427683097388807882 GT 1 -52445669230934698696449882742198802142950.4560305538384408706970214329642115 0.4519862928707658163864500077558258 0.0499974059811219430077560140796967 1.0512905638450910394679517214618807 GT 1 -544.0720993874287569647541572493371613 2.3866987185907002954692375053652669 0.0433916684102639542863696974303896 1.0443612381881108167195735953379834 GT 1 -52543448321.0406639052127701153278685364057937 0.0205109850450640725348820414337676 0.0950705872557675958202799064988524 1.0998983352918315914451104749839134 GT 1 -133131807.0330244494909037128309333580122819 0.1245252618783476947003830442372929 0.0765497513982602413464671629722040 1.0796383534505071188515233795852706 GT 1 -33156836573.8963434694766921793104153007309190 1.9864204908463100357309306150806346 0.0891916818143955131391941307917988 1.0934228119998203825810099650210922 GT 1 -75058814597841033737.8377581946045772528036557485829578 0.2844759168019352634649247350117640 0.0479637076820832110396410458043086 1.0491521227347179749806280652852778 GT 1 -23671802.6215859327184130749431377163549333 1.1137139308451923495089252932515841 0.0634340980228576250379183084954876 1.0655353890697253233802784486585388 GT 1 -67809849500158367367021319.2568286814120037077698809036846029 1.4190917928730217000110154537447270 0.0050117164534017111957622762793318 1.0050243172229259962648102880609095 GT 1 -206367503488863.4698065895302309338086888879618546 4.2498990531602593092695640683938739 0.0870281497352221842174726215642950 1.0910502309930713889513177554631003 LT 1 -16777997764065.3675097786980998061040949203498175 0.2246004634536459202601491209192264 0.0630782548233768030365350365685426 1.0651555165850569226040819066901521 GT 1 -2034463.3632032920621045239006150536019133 0.8626406041386282506560114425358981 0.0049172843636759110861762908642330 1.0049294139859706836533417549732028 GT 1 -115596389747863118.6659593961182373681486799180952853 1.3492655212802997714539062761608718 0.0138878842546395325426255584667566 1.0139852231912313335128191538073242 GT 1 -31845909204787860047.7613131813334596147582375349065872 4.8525754170534301827159846602496860 0.0243368003208180881407811596424493 1.0246378344195614353835605013705609 LT 1 -647283425560115614929897114175984632962.4396692483092596927471905550773487 0.4774391706252365124669713961930740 0.0135590414255097255835706579709448 1.0136518047028192120459105679773333 GT 1 -8356131965501378906931698895631.1932940047859036767012316444388782 0.4396985062395192630853419427651815 0.0684607522316676443518467118416662 1.0709169558846442495576798890759511 GT 1 -14739473650052056124733.3289403602368762469432765616359165 0.2898763262735861418024042925901414 0.0531335759227782013076481114190937 1.0545972474055804837684279143994414 GT 1 -2272269716148256304230980873568500596118973.5710472231614897567865922876873635 2.7263123685969870404551531574710640 0.0217142888583376594764270592219452 1.0219535134297104774246443285044903 GT 1 -819332389532971201252645220980425127560.3845121569874781186838683141199115 2.5961438080787876359874403017362073 0.0382234700702187207269196305711078 1.0389731526719335580902383157146628 GT 1 -5399687795515068716.1932840902308708132404617919244337 0.7660462651987979029021590026120193 0.0256266333557426602975008377193591 1.0259607154827187091203136267491122 GT 1 -5701301057194678642166.3111703126148802354940252157194056 0.0775191329947775294241184957311108 0.0648121381876925291917400743744714 1.0670078481511234043070951192203280 GT 1 -221541523.5760408181071242713978674389263384 0.3346720646768771801152226710202991 0.0319291433334430051790903191363391 1.0324499953487793458103474161255083 GT 1 -65560.7454860485597614019614388087918091 0.0341703991746881415649480831869141 0.0896613802917893312822980161677461 1.0939386391173749048826915906858704 GT 1 -1574289.7587979814871090566721485873143481 2.7254930802693697738029959164552044 0.0739555988813930992543379092312817 1.0797847584425277475840667416393237 LT 2 -12764415914362945161141142689.9683539651444285409958481192204210 2.1707598286617551325251216643795884 0.0813035468065896728523405932621492 1.0847995123920312246629338335459842 GT 1 -121954987450994410324177322225871027332.8744524904163529364226405236229174 0.5440304385329421745843876397034405 0.0588659639428845664725698386990352 1.0606697095221850230620731679865211 GT 1 -4172752732914090316625.8154159599911568382799099983214687 0.1109000588857488685490973069842372 0.0068154876496112881288148823668981 1.0068388191563890214376894082301254 GT 1 -2746288828055825739299117108958249.1193826228062783067736799314969359 0.2908574285395688875923662002172310 0.0988505649280778528986094052559698 1.1040841804403488228750423469447212 GT 1 -1028674571237239.9924601386040230616498305305620885 0.2952875415758125758518343339078812 0.0832835602216097534536908866163259 1.0869570805236474670967917473951489 GT 1 -2789602186041265884929880251630924526676.3357733801493784916908754306979251 0.5859441036117300188155439264155080 0.0839865670318853356107714841901233 1.0877242496031818404977241824289301 GT 1 -22884575343.0267591109178164859580925670002804 0.5226149906558249709651477673792286 0.0959557936430713449725951739867270 1.1008770189482570636553234132753192 GT 1 -106551117825178942537028912.2928153298225181360823569208319530 0.2661235377618037202690113632812365 0.0026479867680837677488530902289064 1.0026514988864444407291407636595351 GT 1 -37253121865518446281683856369980467.3955798551471739228220589769158744 2.1950385229260986427322244503311542 0.0702686067795071575451674560254416 1.0728595590467562896616962667175643 GT 1 -29398614309461649983708766303016298639270.8237212938910846569870430517735348 0.1645048550930134969893936490818128 0.0111865802555867195118190886182627 1.0112496206228152881295926855657171 GT 1 -448088371436068490940486221855.1585997032273945143354543330117241 0.2876715503586967722645048885290952 0.0893178269133339035134219012941473 1.0935613195569495426716651109115997 GT 1 -442150.2568703472148640111050337020711259 0.4360414789285655726736896172802348 0.0053213098529069177401718590967289 1.0053355184501635823479095123483015 GT 1 -757627846810389571901123201577584.7323294671275094749937423579138445 1.7754727668801334104333002398669543 0.0397434071955463286053856151705853 1.0405547460629996120129583087925439 GT 1 -131584141825482754497827848239769167044115.5362613647012881030237837954300807 1.5642868693729832261925042335384522 0.0768244146630277696653873499351429 1.0799358292701832119418034373860046 GT 1 -53718211030730.1186810460889325395332931757216967 0.4705365247966144721079648136113414 0.0493417175516991117409056534897557 1.0506006054589818020449618062892900 GT 1 -12887982197020.0932893150216708990899652923964709 1.8858081778417706275698879602773931 0.0290320901712804311172104146846736 1.0294618598170319271054336440712939 GT 1 -813056448660576796137437730.8664397093834356866467797393049672 1.3728978186889767209275266143305838 0.0462458169061125436888971482334217 1.0473493104493008797336356116691669 GT 1 -222.8502675371269200590262890060835423 3.3795464898775184713374642846644772 0.0936239508947667204107091829199135 1.0983009938173408352774254781637292 LT 1 -281589517245265104606982.6730310250952870117424524841422636 1.8292670571040118946394002345556926 0.0518152119959815268826797684109508 1.0532058716674686469442099606210984 GT 1 -414149766670116931504275532434402.9460939617017020221220709876442164 0.2516768930287640424593700381632726 0.0266013931085923039042347640167577 1.0269616127617323712851848807122312 GT 1 -3296861478399779.0948964168126238159406732342549285 0.4804291995732071295553509592066642 0.0536493993073061134472264656497088 1.0551421647505472411012233554595565 GT 1 -6892074561600279651939619.1603239773526729096599261143046917 3.0080835738559291212149702945071064 0.0639939634492116382367264612126296 1.0661333532189438696520468247519485 LT 1 -1642598285722796510151230.8733309169086447677871591895289201 0.3411574137279751220066403566340505 0.0986463035575978297406880960612513 1.1038575385357849526406289386755361 GT 1 -1290325177384346.3982618206550137618040204405986177 0.2734491936949471937817048924668630 0.0222848409141276986636061757588842 1.0225368997468192798994677474696978 GT 1 -39.0298287946520097590772616998894822 0.1864796213199915059770489368923645 0.0966671330589973946594004210568273 1.1016641700781065736050754527472800 GT 1 -22244867466344446.1825918689882024615247583997975755 0.0930348597403291023686793957982446 0.0422267289652649403847398461448623 1.0431441980878580504080590237007338 GT 1 -465879807209467628657874600738611373.5726254474493444178048629182174847 1.9804740887844769914494375673732530 0.0632780012485457483348583124408020 1.0653687336670907889799920043118790 GT 1 -38445353651492189070083621.3108473373751209583695956833565765 0.8470804392732894213190095154195891 0.0078726349988620377958890758187197 1.0079037878005854997139652850102616 GT 1 -217440886.2961218684210348551651430558752076 0.1012445357839488411092985917959124 0.0630340248461904717941310970507758 1.0651083099389866386413255795841654 GT 1 -29123828575189535.2927153495815994718190917247270416 1.0344767218121956652871963098246837 0.0346601426282056814960588588463863 1.0352750558403421504278402081137892 GT 1 -1870471398947381445713639849570.9928722908796790104610278194358074 1.1450745867033700790044235380236049 0.0132597706857564274138121178534138 1.0133484663739470684502210513196380 GT 1 -14051499360398835795847595436660158848805.7934152586454795907871525371014152 2.0011080920161440120538364649976553 0.0217210108033133778355677079956753 1.0219603846003644122312302113671341 GT 1 -1422573030152572589138602200612608.7576790166468249559772490766375523 3.6676494868137508726889224810843165 0.0616500146088050071381460343953325 1.0636322808134653678703365839486576 LT 1 -7734742427414480021.8282977653407496696788390935661770 1.5851169034243973756280537048779677 0.0522465176429296042195180520196931 1.0536608502510341909481034232706806 GT 1 -132885708749316.4571249605159118162678159763313047 0.8267107844314866879483977935835400 0.0776290916342053683969032287347585 1.0808078495903585709663561361242834 GT 1 -26589062631893899766.5926568951093219182813037784060985 1.4526957486175050799234737199888327 0.0942044025837742768896049357076509 1.0989416083087689222595535277414195 GT 1 -1257354195551413937570.9583322200411624897621016325494223 1.1486113568243433041597640243278420 0.0646503418693296929902511377222069 1.0668348536861192742154684331628071 GT 1 -2781499235595333997312741330178419384245826.0889746338354431993833052991299537 0.7536221856453393101096873126651658 0.0935869874471699535982604497364820 1.0982602130686219732910508479800132 GT 1 -42204805726502966681106287112497203548155.0375753280425802096974472327125377 0.2295062270100793918136971995180753 0.0973823881183541830765270017551457 1.1024562793913378172867077100995698 GT 1 -5357084207136216.0662240445859670886940978954303845 1.4341778638966682077744903987359496 0.0817231201206146875174079486413841 1.0852563217683757054469209236228171 GT 1 -5346550946783428839864776999360445456648.2233937126982992767738377720505808 1.4752694116495014769777768376945145 0.0777192749098513278900245956202951 1.0809056277009591637729218589327548 GT 1 -32992.4997919227335827899973512214951368 0.6722587660499881118604588000975018 0.0023109434679252533067875655052520 1.0023136178187580569618677318452677 GT 1 -5362816685988828307291643444551036.1141854702476827934864697912073360 1.1785413062757633900666409826784519 0.0270281583611586639350661883581150 1.0274001369488701867019415986464806 GT 1 -164.8969471074152932165473502137680600 2.1666247994412106380450136205915769 0.0943345665602274414419372744779978 1.0990853199033988982706958819564806 GT 1 -13152835738361776.8722332897902579577119273641879476 1.4664103495985461937070430053429337 0.0228473766607933458962044589203546 1.0231124228254134202024865498699944 GT 1 -248571763508310758694924875634097.7195719382725840059302859647296683 1.6755928712142766692809921632268002 0.0198295669298521745150057421079844 1.0200288111422665938572681728486576 GT 1 -1966548883769534.0982972327954148590342414683400517 2.7848781739129708917184360362560868 0.0239466388359943183083046817457343 1.0242380207397999450378397787780003 GT 1 -17426893555566.3494412184219368534547314273644246 0.1859529737826276732147113888727904 0.0831808976838013050412753094087262 1.0868450973789973739129668568398516 GT 1 -60373116810.3509028776334158658968017392401651 0.2666785654088473554907418283707159 0.0726110695670475790845289019824482 1.0753822432261050428746470152886145 GT 1 -13635188800302869993059506297429502475971.7815052862843460962373690669942763 0.1022004688086675679739636950383865 0.0238327793170844070549120165261403 1.0241213745778879607520116058253557 GT 1 -960847149100920559113860189931503802526.1062282399563381082801885465610196 0.5884929375588376990767249432026124 0.0176668818754466432912382778404179 1.0178248039917548207307966915617484 GT 1 -68505086623982325029478904.3982783438643161508804914138015481 2.8320678941101401294926315568293372 0.0101381267406581266789039908014362 1.0101898675478562964915445346726624 GT 1 -59058683100623216.5054178773583481516495181369469679 0.9258556862999793630033421992848576 0.0724911589824088177162723180664485 1.0752529524515390387301565015900569 GT 1 -144330733642809959244775266121875210.4338897708981942132853125620951523 0.5730572656996518303533162694952168 0.0103346491912487253026256101166731 1.0103884224844561290734716321220850 GT 1 -6802907.2042077739006985673620651772114638 1.6775251375375393027897091343759203 0.0459557139614148125821579049053601 1.0470451871871980011758614542305009 GT 1 -13864933532644141136940269843001965358861.3941621237779400952198724193872496 3.2137100170232336310274552060699658 0.0572230953473119412922632406660721 1.0589256047701766224958857096937484 LT 1 -50927522949704.9729259533787653113927584659160565 1.5106690233106114357601552824083349 0.0969245191865887253450260063594464 1.1019491401178576732358479259598998 GT 1 -300355.4223928810530361808705868485959197 0.2571314867622915616422969006902696 0.0413954481570341912565205618381507 1.0422766438399998503673286519349113 GT 1 -18667842515247370659.8453138510869352486875585662952439 0.0084446685385087080720470673319190 0.0805807184889484038184695992827352 1.0840130239884409914121496425940465 GT 1 -8360692012169926561466461043373302.4662869575193521044875127006500155 0.8605749610882176195610718446129180 0.0684750490090743800042198896367809 1.0709323034796616810425143374682808 GT 1 -986445951175081193160112809741114482260.4569091209459047530764485687842704 0.2674558180529091486593607260394218 0.0897909423689799030231237509835670 1.0940809721955161590261809914972606 GT 1 -2749.5274459298113562246085063327114523 0.1890046510857932214394736283850064 0.0999092687438700401270779488914151 1.1052597082322545006911075887665033 GT 1 -200538563396813775801858571022.1487347290511226074917175348256732 0.1867642950125982444297468553349749 0.0514283464081768580771871515185871 1.0527979483467034772012879071332988 GT 1 -298841093082796113685821399457977315425.6414118576652562750151757091863897 1.1050856702849534669320670927773959 0.0542913175628426290292795007613694 1.0558207040393413515116258295247932 GT 1 -22601597687198.6483936387162311925280746132261914 0.6026527205482106259994908467888979 0.0686835953870128465511590185279424 1.0711562048636226275032115406799490 GT 1 -79900652143624329864.7590334341474999539583334914166015 0.7554019943695220788246628101517000 0.0887542761407372855478975253020111 1.0929426882801420664726124375442440 GT 1 -15608404687763385503663089262393487513407.8864875923897167230365082602849039 0.7366689316382126574647136925158670 0.0318307395340154023775865508442576 1.0323483511377730631592657571091126 GT 1 -524675286096011654.1354504944746672269460683319769169 0.6576909969621802147653799440399634 0.0046027576389290566003209058453540 1.0046133829442101897654600231580543 GT 1 -9804798652457724336361566432948017447156402.7811852351481017859483008019293518 1.5637185126038003498126608840559556 0.0625268258086279323170425905857244 1.0645671357428348784522698710479578 GT 1 -158018060381283.3345315113081025590383824556770759 0.4705617293111310791121114453102865 0.0195761636396284613439064155046667 1.0197703147306573118970954032381356 GT 1 -636737903692241.8471776870715596432581924635625677 1.9546315096936923877482658849844323 0.0869679132602680246830503489795205 1.0909842547114705668692032221994689 GT 1 -22388568627221519698449910641.4595176518640360902659888416091266 0.2410121834964347882169058855753816 0.0579250965715399457363861598257363 1.0596704922501126505197266119912328 GT 1 -435338676178547174333319117356657499972.1904252919015209506344297240127408 0.2765613373061878339967218601452210 0.0997103605620767163684659348430773 1.1050387458335965533843109076041228 GT 1 -575497115130483051505727159748578.4468051479583368875978210691221929 2.2764843261067681139045839553257922 0.0045221983103067167299286363479611 1.0045324543807556027193437248988962 GT 1 -409405764231788449187320910537058.7079536735693677694956241326815746 0.6472225664909283603055924806548345 0.0352065200827763307589924406636334 1.0358412109951278193613503732195349 GT 1 -18659965672812013193134269.6473293023568536190179399902957521 3.9459723317671317154830414804779096 0.0295646746252960803241292416117530 1.0300105191143056713059129071221563 LT 1 -301932980134985690358.5126591905121563668326849069789700 3.7210170196825840299965822648751355 0.0678537049981111388489548343254962 1.0702655077287255844734897227071385 LT 1 -126.3482975401381735057727439347736496 0.2705891889700356581378200394601607 0.0920099021914633531793870987438754 1.0965218059375154612987994134920990 GT 1 -19767149811.5133859879478145295402280434998952 1.8295839115873070561694648068852075 0.0617991490419692138791025824927439 1.0637912260768596876935277231805715 GT 1 -1110014626559.1240778828385101550564759012768873 1.8973794246876253349556452707680355 0.0048186968744715189594809846834552 1.0048303442260236003906245956471880 GT 1 -75499744498848354546627628232210363039.6675371996121871055016738990506456 0.5808145885905463121033893754203133 0.0740605091034858386302661994605155 1.0769463910752056972683180553561197 GT 1 -7484165374595795.6811418048552798247802469312601272 1.2310727702195966666963923526934886 0.0465786678751060795717586645219540 1.0476983616716104423379487719328734 GT 1 -221109252697965661513094844238.5433711867959821844110389355489680 2.4171513277105946632653642457527344 0.0472389291924272321022677712281141 1.0483911194504159672190372953963977 GT 1 -35192332922825474742024666.3124962488586940202839532897025669 1.4697685035612760082721191455005179 0.0764654122497082113729201647292107 1.0795470271472796089950789670561166 GT 1 -466866775.4097293340603313283959466634746584 0.3162617015937153374523334858142595 0.0606356951146631471960141414905004 1.0625519038913158718923147999666371 GT 1 -4455019755587465738846480458939871910406.2109867620067289602121113459429345 0.3832347520437230536595547963594399 0.0663860453580978490267166418685453 1.0686922509900690402464514464261118 GT 1 -6365870098459247196.9982228393087705789711297018280678 0.1637474088661867244653304024698331 0.0951281460379093380705576690700945 1.0999619431400743996784545472444014 GT 1 -97465.4213693035338636658850251916020330 0.7379335160771721898450223249893992 0.0991578708051891134150418332039177 1.1044252540460018157626221917472439 GT 1 -46860804766769500744253411896.0324344433047040665566600677446022 0.9924190746001551966275329849129007 0.0156806697869261577119870842006920 1.0158049120016826143286458124368403 GT 1 -345912952.8783499782225276497904448063528612 0.3685134477202663753383058071388349 0.0944536745714059834399392380247788 1.0992168429136344955849245165302298 GT 1 -224488717.9152401416895954336549095970792754 1.4545560873321117006264829860307906 0.0567751234459559251687066119319293 1.0584505554735699768182561408131944 GT 1 -389509939864210777664.2063627310445931120750407468135135 1.5469129733068696454229955186746956 0.0330369048776411621483923264139129 1.0335949485566436386834892033031079 GT 1 -5246392808473482622525681446550568878567737.8887325709583200193591825808983835 0.9680663708153330727191168292951447 0.0020590428666006621130218673184480 1.0020611656097438627478868675884076 GT 1 -2933882362266359816104778.1329956642464678658090451775961238 0.2349509318754112600614594879414852 0.0583396924923699827108764622535780 1.0601106771817500949968186614233432 GT 1 -984818.6176558083305785910894615685025504 0.5773243174235444363359122931921213 0.0190422779053854856779000166272137 1.0192259170889775198588107256132832 GT 1 -259190.6129223121480646102174939089207324 0.4485739004779679240745157833288333 0.0884424035377846305024421598239529 1.0926004982012466056975783507015855 GT 1 -879411663.9501648667644557171500078097874941 1.0461366070069605402174943902005040 0.0134104900151754744637057678631767 1.0135012227295733339518975369470810 GT 1 -332727631.4988844977140387138987822259516682 0.5505519749331332157640405302095169 0.0589154509438459020627472798113327 1.0607222932139667725648959390709171 GT 1 -1361575104075.1236366296962886481121846464433573 1.7063876908093128451800533124568350 0.0835295727290146241577705746265449 1.0872254792486260004045507051584164 GT 1 -111599242566221.5260406710208169472895624817237467 1.2327964274440334976288775465255095 0.0953075375104559357585358123872783 1.1001602134878076473874403350411722 GT 1 -1722731861377187254266015885119031575.1500397656012498952163371069545181 0.4473358792253257073146774167282354 0.0554216108481619469003840111707855 1.0570166000881655387692130290103249 GT 1 -367643794405662697320205954455.2549300988916810441431355234785071 0.3658633100965231338009169729627173 0.0489459106644872514752065750061189 1.0501843417812565599345231616742160 GT 1 -65295165554045616259066019120374763.4099051253051115894816916987441311 0.0673512129227967373080588783062659 0.0813776350595748303930119940048047 1.0848801606195397913545557514749115 GT 1 -6925957410509794219055121697.5070303390644642855794218031799287 0.0019429273058768301241567346146668 0.0937811018057524869552724725085244 1.0984743926361046817032429221853610 GT 1 -371583380789112256872902894917126327305.3775185103525631959091858900659181 0.5111047304529369214793764085044948 0.0555038008866395096686854144084283 1.0571036162801570909313351676501901 GT 1 -412711.2022795134830577027776770739712924 0.3742207561681543285723048157189089 0.0213461216031064368255374656743780 1.0215772450343618690502633777054670 GT 1 -3371.2171170145470958756548601500519437 1.4493874473466002122716913468575451 0.0896880551323138396447593796372106 1.0939679416546606697464150398497767 GT 1 -2971680809.5269881345060900787575529231402923 1.1537382764885417106108293668131396 0.0333808383317087533434060478806449 1.0339506959850108121597766843573997 GT 1 -1250781174095.9349838330523624400212907525816402 0.9652592318846896409695147224972142 0.0762208020868072936389987181722096 1.0792821991941414971127177349426617 GT 1 -37512.1647135319206141777027008008039084 0.5967941494619627888892805400092462 0.0336872237632234841671786238945493 1.0342677122524462347313342053009991 GT 1 -9354.0309747746243412334002959303964130 0.5374122483119828473520015606465859 0.0200075439520561313876157207167322 1.0202104052574098702174791192051764 GT 1 -13484611310160331255560.4346836886577323470974785497051265 0.6896050349111050947803028535756104 0.0780802384739218243693751924835129 1.0812970857569564117202588876174929 GT 1 -317304779584201477627914055128182310803.1315972977449342474203411132982529 0.0277886052232435657490608055864430 0.0047425136453481907931107893662341 1.0047537950454477682168939068873914 GT 1 -866092985880425162288498030168821638.2497773474162572054652394475483680 0.8141636235218924674363722104726241 0.0974933359722576087810347431811465 1.1025792048381048995371533990463975 GT 1 -1485630189335744311268420351423957.5313601218370050883618389280108614 1.1736218165068490934319763826080461 0.0182375925209386886874202584339985 1.0184059474790388423059548959990744 GT 1 -293513182381120072176632919032451.3412584515327568137836986031165521 0.6148439666826108254850026429841023 0.0423228794467504324354877474847060 1.0432445927334082685430793707091624 GT 1 -73744511108722329.5520773915741309615369327697145853 1.4865367588910279400941830780876405 0.0805160182005782265003917182264321 1.0839426556447790207335454323725394 GT 1 -86899454022118774580894273252788.4350623204666193290502758019277800 0.5251685519734219457687653530566269 0.0183576183488946198056571710079069 1.0185282104263128170897718037445473 GT 1 -15721009047025031042865044318750292885666551.2845937578595257803338944321598483 0.7788628763929368005384406788967264 0.0177579717712593261816822469578353 1.0179175364036933944123852346722196 GT 1 -15046433694409909273035.8115799889414920284276619115117550 0.9676135020091800581852206786093317 0.0769516705197076605070382901379170 1.0800736845496648646858257231200627 GT 1 -250639839.1945090455032625956399447944909635 0.2674278650373758486288636758560026 0.0002113546986097925378302643659940 1.0002113770371617321417595768168417 GT 1 -44082134465922993.6377712148937429547593963582217382 1.3834147446440362925467510945515900 0.0414569126226885964072056973334478 1.0423407645831476889556361111507646 GT 1 -393945165946466.6088015454276004144261655820459191 0.1547785993341017442835037335279035 0.0820938148415782101530412726914585 1.0856600884004266434135955584367510 GT 1 -15391125691766839.6304833532695887436824659564129310 6.6818787593483331507597802049491253 0.0408525006146687846859180604576658 1.0417104105185187793920776090852921 LT 1 -7.1920278625075376735053702786585405 0.4143063161449381746232538634064518 0.0844351282290842500737807419937971 1.0882140579886669164207865013472307 GT 1 -74002911951189946518263379647735092.6326730669166262722970823385312156 0.5654372500141559180044549062908233 0.0793295268130037683966360989666969 1.0826530991634924715031352246469464 GT 1 -299390294896976804463109.3904989220111944742717749251406322 1.5346888919036538058183096299501887 0.0329058631515564769971019605905582 1.0334594388890712070790456668983560 GT 1 -40381612627422495341213092003259376.9088220671846849832222193763428800 0.1704379982263924721569958846055450 0.0728150559490995641340605262684463 1.0756022251698616555390164357268979 GT 1 -135691505846127.0291014434732222198037195864860121 0.8574155452701880179091457247033408 0.0234910641742379885522893195619659 1.0237713778360363355806215504218567 GT 1 -1408068725109.4608087140040916179157888988464259 0.9296077521676013583608276355105508 0.0867653184626503451233835695717884 1.0907623870172564571899452979069257 GT 1 -170719032970857599545.1025600258087183094333028245207212 0.5311085333950093314961240085727656 0.0666229475490880326157968786169358 1.0689460306723081448802960071975799 GT 1 -69804555568964910012084746186.8686546631979008490733862257473254 2.7694969416556642784348714316135610 0.0017897828521674572938986293529828 1.0017913864271493989208796427326276 GT 1 -1155.7757878027883157997892086967866885 4.0773982487218418920152032310776877 0.0610484730722427849999926909762683 1.0629914231215042605772757917938876 LT 1 -128219981580295.3830559251049777541953241854225262 2.7964852006656417865523466812075517 0.0789246121102471398201928124906949 1.0822133916904496470365172143444971 LT 1 -3053257966136.1318936664781292204767836566093095 0.6218594308322536369028257249013131 0.0831437668476544090905386551824970 1.0868045985672025550327994405378626 GT 1 -95330279615825285060.4440111300988975931525274912510785 0.2181907239466316814017298279592001 0.0333978632001844639506267640639699 1.0339683089385714224272173717850086 GT 1 -4886680954296.2332821457466601514598060121753626 2.2160046113653441046675022044343396 0.0360728429045614810489480154470125 1.0367395504056379590913471705317777 GT 1 -47857.1560860852319916787053931998553843 0.1951959284930344097913198227863666 0.0659443259735299575273993847247386 1.0682192343644050415414473069359976 GT 1 -618433265.8628406314977366246400113160023899 0.3339857446639505108217701476478150 0.0788062319229832048769701320776438 1.0820848760638991437104606037659560 GT 1 -490334654863366.2291434470321779536383572903973474 0.8883596323296098940696846557343227 0.0031268355996287009344732400166623 1.0031317343644824658671870470145102 GT 1 -29842.0928905221783237533549274794169195 0.4327733009955224655345666311950790 0.0865299612288349096932128685947131 1.0905047019820111039323604554927823 GT 1 -757787160717402840899750434350243578.6753508963091615949437741503605404 0.1939311265567370409882193353817093 0.0447882354293908926070966340572062 1.0458222200768799599644518748150583 GT 1 -2361.6057894316020547638911981734941784 0.0311542769450287810971484436382872 0.0873037525826439353704017113866454 1.0913521509859388986659147420509591 GT 1 -169424462285965859006.6435889435078691911305953043413608 1.6543476019392428493190095776194634 0.0200203593045688060966166300904641 1.0202234823338990211651690040956451 GT 1 -48947906488446198036145253.1335851859660005299937565022830065 2.2262067286211527970493545972697894 0.0160046659497906106551268843662233 1.0161341237600189842938462169834971 GT 1 -1651830250618433604355.4203372291986095291679157584029287 4.0699633769643823364063178043689108 0.0295742680755771902804661419376075 1.0300204048814965882980780472707413 LT 1 -278235481150307787794278387991.7192893185770367267257037802066588 0.3112356262925837118709448807709994 0.0854855539860360314498304151732018 1.0893620146505430353078795627190293 GT 1 -648009085789961541266028778221874492482.5722612014438632991789613244436597 0.3453147884152250149739641795127172 0.0728582537330307300113705625222988 1.0756488165112520717008775434806742 GT 1 -903791067483114.7714025034135813817823030576416937 2.2932646975289754641322913676595189 0.0761236965345109536147332228072538 1.0791770870102811526203079820424818 GT 1 -24356826331069079083431016859.1213877334972796702017407990390644 0.8731398493034118338460293655319238 0.0359355075617298348403994927340641 1.0365970857397799475780894608531679 GT 1 -62239184596117095.3385368365129787453281788184500334 0.0400401402613270258555608379922198 0.0135144078478297687724910916774180 1.0136065586416608460042597088281266 GT 1 -89682525034105546765.3874225035974218591106641783240997 1.8697077746626827320978225333836782 0.0008540872907409163971369853110858 1.0008544522310997634776740265041546 GT 1 -221407228588278806646369957.8329316135259235762123611235309646 5.3745188999160123909417720376192539 0.0442146787008976916533788355252744 1.0452219504585154299604665121938302 LT 1 -9.7423461906855178976431417800618905 2.6315968165597104557794885573741691 0.0825629255900905791711082119355173 1.0898840303474172312099683949669903 LT 2 -5513967483323597698875890878549214119962.5114307548364094681784150143846857 1.2349190819361065264409749367777957 0.0950061019222968113109900463529284 1.0998270777605179734720030652621300 GT 1 -1753766869786.0918110790543381094785298595969643 0.0670890538814772248017558783994709 0.0064223549193524373802356386195872 1.0064430669684188037500586608374019 GT 1 -778831577142.4224020765942185827948434604482666 0.9379335109489603904191241572932078 0.0789824548840015507055392591661549 1.0822761928366209636877362425064668 GT 1 -544110938523677.6571965107248677377762345893832916 0.6014602742592881936552162598961267 0.0723930797404432367689538408261614 1.0751472132366563597267258935579188 GT 1 -19465228474664.0908996984417878062290904626039235 0.1253620688545644295667618657507216 0.0829915571001393043569071679099991 1.0866385996798775763471877613663694 GT 1 -2406004147735195371107714.2587226343915307650673907867745596 1.6706840797392398186525337680982271 0.0252368349951554839169178409859918 1.0255607451784795080892945010253159 GT 1 -76.9423289811475903253934296646221402 2.0864191234577796675757110933796502 0.0425764434878075078701352158400615 1.0435093976552333833802175101850998 GT 1 -22875516776919444173979157729202007.0593296996466824100265776288229787 1.2122151193739590913312916325626929 0.0385688186247405718655805930098482 1.0393322907475597546340645895143574 GT 1 -26091653.7424331681279711648914424540205746 1.1460746682541065253407783841726874 0.0031273404089620905354232204148191 1.0031322407573509198822112410457127 GT 1 -3732632878409341336492181743710.5291741855739912246412731075612902 0.9762554140508443465458176865084249 0.0746892509468561601821815601955977 1.0776256529642546577905264145516985 GT 1 -81039747713197486.9277419949318501896661993950484574 0.2368702837431801901070577118370533 0.0343022229786826851346699884903472 1.0349043539469694124739261047378047 GT 1 -786375105504612528150643509159100849753.8140325906864936318207787815242585 5.2940408153487323376344740234423087 0.0331557190026342512241407116131182 1.0337178295908250269952610567956540 LT 1 -928330029228648.7915728021619784268195901877407985 0.9878376554661379714782816556794002 0.0236338817706272695999061823131166 1.0239176417727355430269208834627742 GT 1 -11.0336992499810136153814851876872671 1.5820806805223454472619154566473533 0.0147727909740953418555907863804284 1.0148829953482336182376571859481330 GT 1 -720956.0358701560906023151265832096793432 0.1072244840172750558209961572797493 0.0990871556695027176333881257693533 1.1043467582052667743992964829258299 GT 1 -45038197848798225215361043.1019632891127583570660975509837639 0.9340428504215264771896109475215824 0.0759456853347232341630163950745082 1.0789844269627752570139897320800539 GT 1 -1425719386156.4489877594304099262904229559514171 0.1064774032186755286606070194090733 0.0789215250246380499893154454484683 1.0822100400859270027066522337450369 GT 1 -531069600600088629990976.0830839107142336263838980727292625 0.2607376748414006972933557059569426 0.0068235764904958363289934304137268 1.0068469635381461981755267282079621 GT 1 -39510495.7690305485625091584335382959586164 2.0543846334629714902027000461307032 0.0444728555758949015741957149081328 1.0454921070982041321994637179845180 GT 1 -4346211906565488472916343.5521683428093861856989450814419208 0.3570512894522487640274082846095258 0.0475618815434785109585694555371200 1.0487301415914754130457722185394236 GT 1 -4560234053517598017811291576227933119617.3519021454860705675321761127602227 1.1445285669699107333403794530601831 0.0749287807419088184956662745549282 1.0778845506410507635258611927682504 GT 1 -119722.7289262181865504546247026484074252 0.5978506954611608325499983032501779 0.0357990228892904354872835017235167 1.0364555236210544065825959916358603 GT 1 -15333704309521.6813121066744611427243773539365187 0.0325180046265973155477846227232014 0.0377300059944848773920593509972619 1.0384602086444219719805832230264918 GT 1 -6497491940675525784.4583422959887200041569207584105786 1.3164166560928458615009404041512427 0.0905918045990078580088162907604979 1.0949612257547804285745816765891573 GT 1 -1006860567562039985392497679998538494.3471506175431459251235150580479188 0.8370342661103046525364756148581771 0.0449820141323451944162708302259254 1.0460251053094804292660708135389759 GT 1 -8453844432722335508573.6530362387946404074555595273437379 0.3867465215633708382887386625558586 0.0163083137975049714761153106265439 1.0164427580570381299249099823798786 GT 1 -20253253756041231171040870741262453523.1666250557629903264674670375751833 0.5153132656611740454682231292827499 0.0867260475249622083548795006613178 1.0907193859200123455725632989927656 GT 1 -154690.9455728895935392722066276757311785 4.5443121801712520316996338036614918 0.0129642681604076790388311262638085 1.0130490377322243901551372639774245 LT 1 -92919667892.8009511337444229467944108281761658 0.0035030991969795237614625495189314 0.0394862340818485677929285730066192 1.0402869648427546820663311074487310 GT 1 -869.5224492047612307436206264587317932 3.1032871482821642738032289894258052 0.0474080067350265246881997242984776 1.0497480500377684143344759490563005 LT 2 -3470250283513916678565678775497826084084.6635388159274003403773382535390263 0.4730576985438955297220278823067493 0.0281498818640812057629480320046042 1.0285536858602984719302019649104141 GT 1 -949468023726252.5472661039788259019837204981304333 3.4709794980528162572039828788512702 0.0728442133946223152945816531259939 1.0756336729453897645350053814388151 LT 1 -455364339917258481026486152326630476706.1492672705482657044696893339148282 1.8890400181611027732134696970543302 0.0817084727659926502506106013301149 1.0852403709825888916009701217074620 GT 1 -559384539606.1463153689403878884474203285690079 2.2221387324964367624398670385676636 0.0300872202306483990650693498972502 1.0305491292911080487098718418140043 GT 1 -3936167985950992.3676611838699041483750588867577100 0.3579957558701096049081297383560527 0.0007358756808475297434986462566147 1.0007361465702584669420229029036669 GT 1 -36279191448810174215411580149138945558475.9316431263445311428758484771632960 0.1179150880096328376189383482087091 0.0492801708855618861757743941362096 1.0505358664512227021301663866876577 GT 1 -2749480817673847245052954059165182.3460404143357557146426129276123397 0.9735756694632899289863464798445544 0.0943240275457485231779178276346109 1.0990736832075835829381324610616424 GT 1 -2180751080925623036832164689492769123447180.0800449705344963285513255252119725 0.3928019458063072253843590615125434 0.0043769157807764762650033294740229 1.0043865225188231021190550633283919 GT 1 -120484363123.6334684652124489080385994289248824 0.1546066370434918072204562187356598 0.0977344579385645200232739057921230 1.1028464097151835986762425490324674 GT 1 -250847296280721755764.5207590656451217389753701945035784 0.3418130884352421176496011111154797 0.0371024426857377690038104919728761 1.0378082515401734577861863045492086 GT 1 -95049133675524918903916.4265427958494583803902835041917681 0.3497708986247207883111798169853656 0.0037410300893793993866035617119424 1.0037480452438454909134204938718524 GT 1 -7171624435.0586021849518711361002091983212970 0.0422779937909657381865034240967634 0.0931369323943766808795957931972225 1.0977638131359701748623684184964611 GT 1 -498141206899.7426489567536241167656540804840003 1.7454963196336445956610029174546748 0.0979798081426515701904395526097708 1.1031183735189060054371852547623349 GT 1 -117607750723187664330521486822697853846222.3647030593775932380161461581896492 0.2249410722535832932379501802099053 0.0930696943493956771998774561465829 1.0976896723369098123772328386310311 GT 1 -3867039.9409555793591850614166842194652625 1.2880741700085820424849625712504869 0.0503711202274359527158271982886776 1.0516840235832468435573204487996488 GT 1 -64216753151122078120.9941812394839400982362352443733639 3.8773840556052099326200171198569778 0.0769563893792828191941879934220416 1.0800787968189648549892498879793957 LT 1 -9940136454558.6516695310979057782453721881588487 0.4301034117386176621494138698493867 0.0341981786179401322213720692129362 1.0347966196653478242393257845740983 GT 1 -516403010067138787.9070800564098379966724315377643165 1.1526934234661925273131803484163826 0.0071827083020135645642848909704522 1.0072086281423010833822271618011328 GT 1 -11316147820698370647195443008129.0122185841115493156991342948360780 2.4412710054881733923706310958428943 0.0958488928908438438053351858161658 1.1058349444170247644206695006176351 LT 2 -399650575123.7096371295009510985559429588175051 3.4702686547294251861133254530058553 0.0950743683558931559022728238335416 1.0999025136376469530815617432453537 LT 1 -284530959419762431350.7333586241801768252682968784726101 1.0140383947063760042762566315018586 0.0204398979333921485943105408264554 1.0206516835344956551881050998778026 GT 1 -2243.4661726821949853052754293581650180 1.1301787812566318219119244160042366 0.0475717992990598790135889664663852 1.0487405546640167390729043203361363 GT 1 -720125026168739087864053856935146.4314491248545666284488717571325686 1.9684464975483913862981909224659452 0.0078546108154382670676000236865715 1.0078856207583920859667226028298965 GT 1 -21728262924455902792655512857202.7864975812129071489865165473260400 0.4468923775708599403208633033494048 0.0327098970332507450873342147123436 1.0332568254527718526613222280974790 GT 1 -358928964958983918158970078947043342944746.0960076156257685536735805654114225 0.5167785357727148838499327358643660 0.0253261291187429149731316052181049 1.0256523553428563150564678623828868 GT 1 -12768245.2782845518789210527160720593597738 1.2654544091338789583520400632312335 0.0616365669348491045632682355810992 1.0636179497239938662976009355148760 GT 1 -54386598624.2352424823001472757610004873030638 0.6903730393727956206074176137693829 0.0544082795617872496179506809861664 1.0559443882503909622413134235160688 GT 1 -72121199980430590669219631647780537742324.8250075714186689394158385216047219 0.4422614782206568153168228444774633 0.0254505807173695579724095209387600 1.0257800488702461755852824901536160 GT 1 -34091714597456414775913671634754321215809.0687598620858950871968617943627779 0.2138548299551278908140394576501357 0.0309999542758256323297553089032203 1.0314906199044014820331438489748478 GT 1 -49110558366792900821884348558698999877.3719627364833968819182587276648574 4.8541099981844291690463005007985704 0.0140434640137293812279715022524251 1.0141430065009310318930341146452756 LT 1 -3743.8328533176044238081684289172801439 0.2987145023500985915572276531584882 0.0167135052849308472744034815371126 1.0168547519439944752524402828709858 GT 1 -370856824585046149940828528627188235073.9293047281829386043624788505202826 0.8904475334591053456887126703960546 0.0764638747892405008772745690152756 1.0795453623918840279155982548335917 GT 1 -19683614732887648314054517043412040405.4198110567565713812161235384261789 0.2075258295916492264004075415437114 0.0876441020195750240576285771565121 1.0917251260176220826469434496389219 GT 1 -219539534894204190602479985638.4424614437134461976029073039752314 0.3822744077154553422946745243283862 0.0823469197730066195432018418326310 1.0859358680364270206931533108528162 GT 1 -268031663602208.6225298342533830974177495364016062 2.7806824355507689959318299641438928 0.0744107900155765742971332534806759 1.0773247604908167290525999907708997 LT 1 -11.2008010786780186044399010709155465 0.0982469141260690522329834984992993 0.0432850056703502123434651298157712 1.0442497434516182450940765025986026 GT 1 -4317960611042023951828577742500158610898.6503913184488914822550351084485869 0.5234884926512432165249340713827319 0.0362814257193053931131676298393094 1.0369559623864940811405194266167922 GT 1 -5118206774488.0120370934437839441106958907722621 2.0724041332037327142113383900717252 0.0309023006193010358065017081782160 1.0313898472195832012740635916418574 GT 1 -141269449658794006848126501343.8515790915375700405188412508095568 0.5767358683297017475649541511549210 0.0670234345459649076577675632604113 1.0693751958628504784192134764201239 GT 1 -166855913421803364602404591.6189023195847684788581268370239645 0.1796962208580923987143093351483278 0.0449554304187617218115533282599347 1.0459972698718301252063251685772391 GT 1 -155375307822319022112224339257.7720752363341261033260798946146883 0.0145385597045431042201801016876768 0.0886119941947639894900519767064440 1.0927865604263153872543281575349822 GT 1 -6878178864436074953180824099.5503780766355366162155331780543430 0.6587567388920023386915740540546757 0.0514927453249419068891550266111513 1.0528658410595570702933422482585841 GT 1 -89215616395088311183935860655.2446212161141332838996173396202441 1.9977585648396728296377343304472656 0.0578513192269431434663590635427989 1.0595921816448818273135234853325144 GT 1 -20957452978815895.8053760555486783249822935493757818 1.6878427175150228920980120352323086 0.0174956805277286981658497916842712 1.0176505388389484914412166558354469 GT 1 -954976857555586101269679.4659492217655691744128158348605951 0.2541698403831941824939949171854661 0.0689826728830169598295820631282745 1.0714773905818208030515301553019892 GT 1 -518434554659711180850360316.9105688290626873921375664454351581 0.3875663604117235319497041220046947 0.0915255915250566252444509703319396 1.0959885605300686533899373116711399 GT 1 -371948305680264298357633054.9561691322867627751279328228994017 0.6899741133255768581743417167081328 0.0804001754043153053565699642016412 1.0838166768329235678543173306320718 GT 1 -1486803231.8419352900418761103194097507804811 0.1185449761211432113208612727935056 0.0109336443853867732193617844966430 1.0109938559653978658690335441446097 GT 1 -1602451506873262886685025749593.2705205764632199046809640736205982 0.7566549139103485111799842450945867 0.0176492966986943497691820954599339 1.0178069027126166836050056591309012 GT 1 -76991811714837004148578626753.7269310771462690454507204361309494 1.1954878953606027357920417112601903 0.0901144306464963542523206321605431 1.0944364353413621172375719805573114 GT 1 -18694923669068617.3721412652317196488811486377704308 0.1408309752990950426071909980101563 0.0312566165147454362314337561270330 1.0317555282886094871078207119803945 GT 1 -1039419392878717524865365.7774006946333759495709056708234086 0.0902997190195424080257823661349214 0.0287418467184933257146264999201551 1.0291629827084806408721149738730142 GT 1 -2939613309126729643568766.2163417104099730162577224593495618 0.2221162686611163760418566094891996 0.0946319670104361638436810895658836 1.0994137516617234976825170154433493 GT 1 -448783583060357167548.5163509192058508741460929878892954 0.0658501982646649375856937695906275 0.0562477706798242649460294014476156 1.0578916162281288749408007420552198 GT 1 -6852857925540656822246164991.2213492819677254937763892865030396 0.0633927791701136122837210037229810 0.0810277669020258956906498422980196 1.0844993713397389033968204442810520 GT 1 -1967016.0753269190712371733762597443033501 0.9593125012437836710499866011576443 0.0253214495312583606501008873857097 1.0256475541715203259235898074800259 GT 1 -2.0899133215515010489799596817607314 1.4319146157596999508538091417332391 0.0489946553289277100889559803546095 1.0502355963988354142258957271844950 GT 1 -5844779706.8402881339122603554556204383672182 0.9434432405804488965071223194350396 0.0966013854645246059259297856807363 1.1015913893741935810307731291525819 GT 1 -331762588004037527949807672970173.4225542059438447132859115535894256 0.3405738276597570002630972298326055 0.0912222148181927051301040703481609 1.0956546754361436284491293199671796 GT 1 -366458101421478360228346289491574688.2224552323632645878265212748765953 0.0870767861318643090677224048173508 0.0724622751181454818157703771291000 1.0752218116006335895380482815471256 GT 1 -2053141.1407212467209097762835111422709264 1.8834494170617175118483641221633142 0.0335457166080456641977485673084104 1.0341212826506732743784036594599354 GT 1 -1839682.8908576607315083411412399762131729 0.0921983675179470418429574268359731 0.0500001302624082609151957832127699 1.0512934315058844193184012540544764 GT 1 -47501472884406.0520956929996686403766070085851639 0.3099365801356711270021197210190286 0.0378810247083778298416591880292980 1.0386171610242291866414446663920420 GT 1 -1417479668.1595290406450084884794027582906720 0.1686875873690061782775142487074089 0.0327140077982363440453565639436712 1.0332610752364798924045081188203941 GT 1 -529577782666605882540828010454798359052.2341673114719792728297158596645099 1.1101297501471041725638819656182610 0.0717979151435708915531927544036368 1.0745058060491321974741861998855598 GT 1 -33941.4713395773658725329005108937745393 1.1537539364894000999827225301372932 0.0970914967006279545043186132023194 1.1021340559487663951699292383869629 GT 1 -6890105122987275094080640350352657292330.9647463593994677265832597606646888 0.4127376669473988815912348494718191 0.0367698162190282985744226200249064 1.0374628679366675842284284546183340 GT 1 -208006062373322602327004811489214196455.8826435819073870160262379222676710 0.5418021971604779289803462247405602 0.0597048978172697039371956122660954 1.0615615144941984389421560632226747 GT 1 -24.1537051516613303236113518289998893 0.0813197300727021038271392201291913 0.0135375827901095965875185025376856 1.0136300513461527268050933082257330 GT 1 -5857901658.1564074999326026241728823092996256 0.8406311389753965506226114511134567 0.0116410607864211676218426114801620 1.0117093484121300171682806459684120 GT 1 -98218.9722210493793124290451405538834893 0.2973714264136767505459214227294819 0.0660260510668884295034564207752544 1.0683067330768517242267415051212832 GT 1 -123038124229683.7637903021008125995943370070635383 0.6267249829720064504706697285422533 0.0972617682041784894415886822648425 1.1023226548598886916983502742216129 GT 1 -85390719599.3774370323064300766635083148655550 0.8775299245942527758882205326947106 0.0588825986398961073454958799986003 1.0606873848408818701620758184506944 GT 1 -1652807368457769652610687587651.5723884183733615976890755801642211 0.5665051343141221211371218024690218 0.0960326314465117133613399430920039 1.1009620159743302347401541164497585 GT 1 -298532884405379927948425151.4097711052585379972792273875012753 4.2410418048077417802063282203630509 0.0501501583507604155977730215346239 1.0514513683024266022438393921481840 LT 1 -190288462395753652.6708360777819931925915904108067526 2.0788893745111128746802859210646789 0.0205408498621817020964819506703144 1.0207547472780145774411200405581567 GT 1 -1312821023308595105924835600487.3827580426819992924952147731682839 1.0377431597131992178510580238896511 0.0686984231138869286996651190888350 1.0711721262463448768591421098415198 GT 1 -71090311.1430196547372987113803778730871480 0.9160842889431872133512336471147734 0.0985359094530712138632900854827658 1.1037350701360816740294547667277639 GT 1 -1922783995926629.8497317194656414029028319108097048 0.7456068167638469171460904673105519 0.0683710130954912162641089435408848 1.0708206262729904963851275502809506 GT 1 -10672800200908643217371.3594205215062325107722061273435507 2.1465570501997224625964242406923606 0.0213970742623442882497460904409737 1.0216293104139704397877507253691471 GT 1 -15812786.7777742917564307936022824282179358 0.1249258175020055266396296933153868 0.0363095892672642334528720048473671 1.0369851866437013790855981531133241 GT 1 -3483126215909682715810338.9768007581749096500528709558326648 0.1876994642301671758601219977256390 0.0662922058718604946914253387561241 1.0685917439549229454190330932645872 GT 1 -19319058092219260703848.9250520229030869710187521132846104 0.0066687222338333541926270426499217 0.0143282078399367594067384281673015 1.0144318477841710128891350694458748 GT 1 -818688009519196915196581091554.8307912744011405601512035393643406 0.0684017207405728145115660361776553 0.0911739892311935297882823433202156 1.0956016104204147526255701879518055 GT 1 -20717857192274109092990546572.7616803815871272623947305049593203 1.3007758980989446719513832874839199 0.0963286475919413785582534740569109 1.1012895329108099709977259676875505 GT 1 -21385762728724579860090520177258530522532.8222207599651187773240955654753418 1.3060003564505821876356308482372537 0.0891714619651961471690177001282635 1.0934006123510471916643645638410747 GT 1 -6525402816510124859867.7797102912240816115847952633747067 0.4185260056768418033458845298658677 0.0261811934868224669197153061901645 1.0265300229193247008331180534047592 GT 1 -400818480646151339686339361764567312.8257354088306528115751857327635864 1.0323534292963783328446281421628964 0.0147263404885095354123835530474261 1.0148358494815800417300792179357263 GT 1 -446498609286939362944.6305439736553436926178827121238433 0.5836584739576124008162693802556636 0.0796503140887298974100445198249288 1.0830015877744262414643935007559511 GT 1 -706472750333832878183588480819.2264159536048308886523835034215340 0.7530623334264681944295667743691301 0.0827606450503225854853613735281847 1.0863868212110062734550252369657366 GT 1 -1359029661178237647842784896.9081527816400506210187314888731190 0.1571074126506212014576514403096226 0.0311763457725421945580348588711433 1.0316726710344481812006470983305760 GT 1 -11235759163276.9940068876868833664920569719795955 0.2564253729257630227431934840132736 0.0291329793891216171405931187429827 1.0295657710366216643964130442688505 GT 1 -3603888926826.4521940917728034240198937472659216 0.6007901799335702575662284808256196 0.0754268664291883408383284622647965 1.0784231252038389040444685067112011 GT 1 -10991457762475492845066.7496424913914302640278211211514284 1.4070547778008986910604693440286688 0.0732215602700735254463073858796385 1.0760407498257902223193127099839831 GT 1 -327080955830210.3235160884001475874835690099097535 0.6796304783337983379344443010313141 0.0839552204159204339017454210664971 1.0876900294940682851208702451186338 GT 1 -44213419821429873240767655375266241290.2318391873222840679084165623677517 0.0801221980333378358230048604783965 0.0659250954313671101140564215432077 1.0681986463579949235798986731787643 GT 1 -25802675253876631201778711010498568452509111.7101332604150190249148501173634880 1.0183097465983167659649604144194041 0.0938846541229331846146955697870162 1.0985886677127161149287816973029757 GT 1 -437578813722528.1369550058128585575336788854710748 1.4635803133863267866583419324744258 0.0349357072229579492572460661800979 1.0355605552230520265639669181944711 GT 1 -248898001580900223791816120.7867792449503225187073556335176913 0.5859474135284720372899828408821143 0.0482251429705856247500341857735077 1.0494267668770588423834639697077125 GT 1 -336374181984298123865272281822300093.2302946270131356657664869612679297 0.9405147808108402025830925799943697 0.0380940973522092776123303020759004 1.0388386473959965709581147134392739 GT 1 -266326739817474518745710204074546573974661.9075716889986011298130370566268632 0.0458590881819408420295773948272986 0.0268062897655668139909555786722687 1.0271721310669045178654664093812842 GT 1 -13803687267467.0337703375130524599232370843854434 0.4195696805964173629391664954172723 0.0273944522090631680722291191315154 1.0277766769459141428175289377652350 GT 1 -397.0417125013468953745836547894548480 3.1810865526559288671489210885270451 0.0589352586955923103766149425075366 1.0607433412273720694704481951046207 LT 1 -6947181129067361184208117107180904.8316702655319583964104664190060461 0.1743340195520429311436752685924079 0.0644750871112533302439855634389936 1.0666475030627223326980776380825142 GT 1 -4375266920121099.7597036754406464695039287784882705 1.8839251885598637803849364661665125 0.0701933674130942863857318590703631 1.0727786364031644638538795498709920 GT 1 -550624177676769667221.1566799541178070189192026795501391 1.6070852842885192117269076149953756 0.0114426514538145371274773747333213 1.0115086223272661582226776968984190 GT 1 -287415685118277407.1431754114280174190816361374523030 1.1781863859454549882153717038495751 0.0326609782687182874810872529868856 1.0332062537293150180476753987513515 GT 1 -590191562764660705.1335979323186216903437496522571349 2.3729347251851026417968470255110812 0.0786791718278477465254277489726079 1.0819469557504367398788093079710230 GT 1 -35081441.3055594970599174974559934426421617 0.5812004753570601352441962068223852 0.0399602322667294054213589659506580 1.0407805706560783687787874159095092 GT 1 -65789718747240394493730.2970947734759041732201817109065109 2.5058539960363241517410304067174005 0.0523227676175040380598970436532997 1.0537413068712869052279832878147482 GT 1 -13687173515004.0511762304632414350487616662492004 1.0004190173162755401284710794494010 0.0877029810245402882420085680571422 1.0917896632284401594509418041603789 GT 1 -231746574.7123066664394903061414866886818669 3.5651897403773592199362402691895100 0.0588631975328839290944573891712203 1.0606667700833497401060764185683581 LT 1 -96585420966317375429908592007885242.2007274167492332884432085690827240 1.3930193365198995212544433819316634 0.0791023757462114560702109312312363 1.0824064060672556616325316625855301 GT 1 -1730397651568266911144102030.6973473169811279199383851257062457 0.8513445133858504407135710194385797 0.0724872733359397319806251087421237 1.0752487631240004402660238500328997 GT 1 -476.6984000141957177479842679934854421 1.0603503869098171327019888462259540 0.0624058851902435369490798541284388 1.0644381370458158152681972255962238 GT 1 -141917225370.7500121211021594053258038060581634 0.4622939022579687529506579212898946 0.0534471353567909422916628610291655 1.0549284571262663826791919202741069 GT 1 -182014003131609710200975168196658589537.1176748558834295804239720298629415 9.2237896704900346709070607406914622 0.0235869857408471983747461023258873 1.0238696117328719722336848755339671 LT 1 -20715677927072740485450021874866515.7396350075079449843822921098513543 2.6255600889408353689716289857623765 0.0862613902673356913042465979674274 1.0942797216153977234473896763900429 LT 2 -56180081595906139418867718532719.9307611768258803257501659778313224 0.0609037925008359801531722023427874 0.0145154013756407786085302259684239 1.0146217804928509844409459883479776 GT 1 -123424015363135354475330214202435260996.7141631362308980435445036403819544 2.3892937788212272716207280242215714 0.0546378790991896352173467002989527 1.0561872281690725471063421718450331 GT 1 -314344122149523234.0858796209182344559150776266156593 0.1227294515408937105697905306363254 0.0680981657900441861279999895032366 1.0705277979448456016329563444127320 GT 1 -1647795846688566.6932426791633395234774730045374741 1.3350275590257376939422217624092632 0.0533783594799439243476917723484048 1.0548558004570690099839572302169310 GT 1 -8610766488013566783467768289483622.1973342220212745600134236356927775 1.3173937313400646422317487618175919 0.0263823815719133705176815048795286 1.0267366413056606938754783874953218 GT 1 -387130020068457041050492018825951641907430.0231048244723404902974933903334762 0.2815104247410268484368196532455528 0.0036090644534506007084853679900932 1.0036155928388742806382796345495957 GT 1 -572281364901657091253927082039.9789830022935708576689644774293700 0.2924902047545878221015704748461920 0.0855312891899493296739003751547785 1.0894120262690231627074871739002764 GT 1 -106801741564511397888094503386128333.7595320141200307566514154219276021 1.3419962324351323530919836562247283 0.0558660525244557032141342510031667 1.0574872293903394597836188315131875 GT 1 -1011627640034284724.6211691651279884620320906513182644 0.9950071988521693603531581783108157 0.0322298105291209778107384070907891 1.0327606274626045625308513000891157 GT 1 -2483908262175943981280991305101.5910070431103898895276180884024870 0.2484431898074268620321953797779806 0.0498930125728006983135085795763400 1.0511806823840998973106868013265621 GT 1 -272973875153930310618941361557563617071056.7208010513053948468245983584983395 3.2617094145455999442435356985225768 0.0651688382560860765908337567576531 1.0673893416741585945991165258423082 LT 1 -8807623681301406964415225814513774.2226674623132279034390760933170375 0.2300812076400002125850123485409009 0.0942320385011307915718470724760541 1.0989721188776337641445224576095659 GT 1 -1209361998415593927.7568863073877251678595219063301008 0.0951720026628313871183041679161645 0.0671146165087778466572772619863600 1.0694729329574271352706382352121539 GT 1 -6440627328332.2658352145466807602323846744736972 0.3847379749695162781571961565626660 0.0482705128747227610326614257671331 1.0494744367489822245856540937673808 GT 1 -6131075924117037162.7092053951409917787639702364061372 0.5569461287008848967880379515136507 0.0284854490973491983240551256256344 1.0288990325077386617280995425139611 GT 1 -172153841310645209583359187446459982.4540981577882510679436907966505096 1.1025068248988250024478158023878023 0.0077568506188990488955288821363079 1.0077870914686704587091140166316488 GT 1 -4422049648.7515346813922554169939256954686227 0.8451853712107267402743662065726338 0.0969246148843923942266513334193863 1.1019492460866396549760225273980486 GT 1 -56799791115.5948515848690408706991273452640883 0.7818658600053509963147225000567980 0.0365192219857032448761898736532085 1.0372027414935143158877104476797553 GT 1 -22921852397819805167273624545244929.1629313726721580776279946462663581 0.0744583660502909626848509829541708 0.0746880440212214404475332239143867 1.0776243486188238595805324990399156 GT 1 -71565680216745319670.6555964934865766188803857303057854 0.5528002705955167360875208432985458 0.0312482132697382748860440125880920 1.0317468539495593626050924405428642 GT 1 -1152036737492.3660470627088000018124047894009001 1.6379256537881466842754278605850645 0.0647910157952509508477520290487831 1.0669852621502033796048137760945987 GT 1 -44489853410.1300826963703188200372424871895815 1.2284662625764692037375464696581099 0.0583598781019234514514946733406240 1.0601321136018125185761704435060146 GT 1 -10.1006472007444408008187655535233646 1.0413187474112958380815585154747228 0.0500209636421157635385664038669522 1.0513153616227309804281056965409536 GT 1 -66401728406189515794178071803289.2847986917662745578083334519437573 0.7706520138537298367174595994496868 0.0845475720634780478174482306319623 1.0883368791488526948779990467171503 GT 1 -1380568901072333713724547.3840758712642946661266319626467567 0.5999029685066262303913452906353023 0.0654790296419958081704822881823539 1.0677212121478161583287993210980368 GT 1 -45527.5396860240056419976666861996005075 0.9930796599357118073680488440764393 0.0692285535405276682431198402910970 1.0717415243680267427162373024340099 GT 1 -17748843610972958948429253.0263054851781496235154611174567888 0.8763855903801658542742110740582902 0.0131848745390246704428312284798921 1.0132725666566308117496665968927039 GT 1 -52162552.4950088403363700916954384598705005 0.4633076414873584942731255872056843 0.0035156076970327897800571870648326 1.0035218019677843482320050591863802 GT 1 -1803737185182271154675337367804696217034768.9639034370359555415328581065401855 0.6785372520503798519161051727611722 0.0372053317892503892046503462894346 1.0379151108837868702095808239468116 GT 1 -31852648.4521412097698119149545783703784143 0.1891852427413316743529707238234232 0.0381369711172511825455049926049466 1.0388832200724197139437223083754342 GT 1 -4467022994763416941806347329743818418918307.2937475184323491336082779737954629 0.0716808239752012489521523100878975 0.0930513448167831792608555466044843 1.0976694399696909007055805824465000 GT 1 -186550644088143874216.7674139136773936671061935037830074 0.3919340247275776611758919585898356 0.0887722975973459010601801117837026 1.0929624652012751957383009573015362 GT 1 -475754566084261949528554.6078384612459814415281106536330713 0.8449381128857101493977900907024321 0.0328594903164628859776818547304128 1.0334114893445982850684635059426150 GT 1 -1374484651844891403.1020431877714121165660965996890715 1.0355978274280603406328412306868937 0.0754466635645744659051308864176592 1.0784445376228464743508298231450681 GT 1 -57783663751731348529010093924885186755256.8029947488896403679172065592758958 1.2110338545889685004588665556897264 0.0746428498801217138463646941777085 1.0775755077526098197876535988360922 GT 1 -9888862334487.1445962464419992202607258900067065 1.1042530405596915792916389232403424 0.0288445729343934426845782726238179 1.0292687544319027266368517205752110 GT 1 -1106788270011.5795910423474590341442074100234956 0.5665473137562698625144036448941869 0.0402367091348743019522178014281198 1.0410685969396265394085800941476056 GT 1 -7786648.8362878926782508449977306022065684 0.4519616392937632901387924644230119 0.0132324472253777208098690419531278 1.0133207761255189301515153511496728 GT 1 -19567185458411112871.9303250167301522225388136211160941 3.0817421479237507916291699030622405 0.0054866455294345871203010154564753 1.0055017524519089346222679068938479 GT 1 -5687159510510305181046082814805579603086048.9739035602402171385879450230446820 0.4514735352740623275238594911439605 0.0727735906054026180163822848127447 1.0755575044086057301147851127618844 GT 1 -53746215473554.1411349482240288473269530166170070 1.4167222441606950984934541781392741 0.0747796427705296156976532239343971 1.0777233458086910070139872354929104 GT 1 -12588228883990.8204976008635660661540825307814185 0.7483861857434536078330218770391159 0.0656154121414379753001821920820754 1.0678671612024215757441260188577686 GT 1 -7046361147941299593285092928.7674588212418662457810977383812596 0.5714147832224333314731257379030490 0.0692044314773027540224127773633657 1.0717156084992644297328864792906886 GT 1 -7608099265279.5341895927607311171567322327109593 0.1419670793013567106460379358351387 0.0854410766683530415529810114509874 1.0893133809342174084090214420203986 GT 1 -3700655633.9486605844365095279760354036797274 1.0682000164994453767800959535494168 0.0371305299621310369870997072325040 1.0378374215030987018554583987074409 GT 1 -175458618.9181915865885362434653914166130504 0.3825284144196277839765731395263290 0.0000891002385293218319628372472565 1.0000891042081913751310981960247120 GT 1 -3498852511114788952146477.2997795330699761650202097795616015 0.3780562160897659130046459446670732 0.0425297685674316174523288348817170 1.0434606482982936130664631602092644 GT 1 -4133.8911526599219582864839900382453476 0.1111488374540400164581626586322206 0.0931116091306212422668807881148371 1.0977358895043846479308155101866908 GT 1 -27556813509507267025875707634279019893833.1261599816076966612427500006112157 0.1888333178664793119110109176445646 0.0015474175671990739414036771676108 1.0015486160542956007691823601621405 GT 1 -420302.2390347676053771871570482620812772 1.9595825069580151527970726906199390 0.0669079861557882866886330601417396 1.0692514615139581872472668420636877 GT 1 -238883197243813630509555.7248778627661482280899633476093531 0.0001347176740018328181359698012398 0.0095375035902002300778093187854865 1.0095832768518331340006176493943689 GT 1 -177721453219258593.9569100806250777450991343701452944 0.9370469640406964380782080989972335 0.0632732257331273170134631357857228 1.0653636355662115770045102893849872 GT 1 -8040084574135692.8157417300908785256423969054115775 0.4544353315359141465246694702971737 0.0815121247103941041569959093306730 1.0850265749697670158331513579364388 GT 1 -336752802194458581330048728737.5728466323273294277954876859559814 3.4998501771316446417823948383010568 0.0556367769782893201469989542753544 1.0572444166915706474870107235102388 LT 1 -328346780927856047311880174737669560030812.0194996206897717046181486130190423 0.3876900316608881809303268823462929 0.0421343744444754632081215216867987 1.0430477764490769458486062077968701 GT 1 -220.0464023044746896861067807893143567 2.5397503394916832670877597003958950 0.0553153563938055682305699751452850 1.0569041176517593239933708507846012 GT 1 -8750641280.7471653056263748196200858118320354 0.2719478848539377433405137946107392 0.0801141994489979505905393292166586 1.0835057464796640713591106669439261 GT 1 -1.4385703324701443463167575658637983 0.0613940861778665553740714159122347 0.0470367194231882334171487838248167 1.0481789064198683203166345375399414 GT 1 -684.4972271730023644857643810059176568 0.6965327749186456190025273295170581 0.0736898118453569011760343572352075 1.0765461240191270968987474365721265 GT 1 -8676772399223621.3280009249934756887231444130658816 0.5539021894249310557758118956893608 0.0966300749222458402685994636663126 1.1016231471307568949626035014446685 GT 1 -6110697424562522012114.3935267545980270929011690529909455 0.4330849548922978756965714738124904 0.0098961044422947021605689727421919 1.0099453963520604026465389036805957 GT 1 -1410560764312888316408228.9731131809397108547145875052625252 0.0463741203783504883775994119241296 0.0346297553344487564557480864413038 1.0352435779983529584356023617219426 GT 1 -4823758619774894029523.1011955221159070918209206191491950 0.8239177022064528834257990230328554 0.0332853675993093543150574011269305 1.0338519331818467816801598885376527 GT 1 -19858655104413212991732100593530705.7175358019163680598317238342294849 0.7879599139652904241991781776898171 0.0390124657542226936167989154773314 1.0397938417444918899829258641773237 GT 1 -268926898309217985949536231173.3922259344772243945725021457605188 1.5692815318248675508438375090318587 0.0545452051755625225059834496767345 1.0560892028944617848109692792982399 GT 1 -194114150.4972147330887008549126684015489758 0.9488831989929977337457592107453765 0.0700300384052617263683057476131305 1.0726029927169674872788702518576981 GT 1 -652586216939267507169131431.3646320985901118823191722825729656 1.4943984236414195137683370297062026 0.0607319012983465911186967545556248 1.0626543254013290634146406345716128 GT 1 -5178015098996233090943482.9994281652525958684173021693692023 0.6461612810331959602410451147648900 0.0483302073585780224698363607286484 1.0495371608284850282329212544346119 GT 1 -2529070316243001021881219478588296690.1377264555897677941913689036023031 3.1085743501533619435930543679423834 0.0186582556261215211956230340696627 1.0188345168050467708525479375876988 GT 1 -10140980.3358940691580352810633202933896571 4.8660803299404599457088660387944455 0.0583565721097609534559573611194318 1.0601286027208696324231083348621502 LT 1 -58530525.7418933757200767169482864536246647 1.0511131585661764606559329007130548 0.0776977598199306939506077552423423 1.0808822998373426223230250522879960 GT 1 -36589799.0700804393605356718449622788385853 0.1754519068276214493642375075954310 0.0415552876905524587851466234670980 1.0424433996317028166026572338541109 GT 1 -9950114794824941178350347.6404629330534413387252184299435811 1.5944023825116234748663638205774967 0.0770056129096153933713772669044767 1.0801321256566217961254565133410069 GT 1 -110429601369617774668957452937890270286.0735310478107226168447909829585821 0.0886808376267210374135907642167146 0.0657344977790864895107916088792479 1.0679946175287203775760132358037464 GT 1 -1726758847348730843210981.5200552373029647553821898773481649 0.0249663683493213565925413257339768 0.0930544139992128048219627194377497 1.0976728240505925800752028055942498 GT 1 -2601367058587.0709296396872953646362695978988166 2.6794902261305433554872295235395172 0.0604882506342320504148855934579605 1.0623949542294154382577445490368984 GT 1 -24807296699.9135753725616111023857062321347168 0.1368724395871399051124506363376065 0.0064460822296043844041915322482155 1.0064669479340243541277708300130330 GT 1 -18.8373445637032906874738300786006855 0.8536695798327899912262965896638814 0.0737300380935247139558381975409849 1.0765895512880339862017110666714333 GT 1 -40759922359028088.4549654282351711318658690553332141 0.8080548782230231669895393465270642 0.0606175043482847098186314764226351 1.0625325391037097869415275225373344 GT 1 -1570386172.1074726310038382202696618338032752 0.9367921077163802347789370581907037 0.0903761951418374207557673070967071 1.0947241661998639225044603956281424 GT 1 -316452111875479585602887706246423731988.2570287509745631536884914419880405 0.8386022222496827688591639195465486 0.0357513788302729302009230736982792 1.0364061118458442249943779152197609 GT 1 -6628655631490794965643352.0635689905840288773486593354394900 0.1378930264181737545323363000466935 0.0545518796619379084992504670833241 1.0560962624704155720780231378331358 GT 1 -12241169.5289125130737680797217060044912403 0.5894078213918031264035766126030916 0.0736796242712439041115590635337665 1.0765351260637746330750733500308009 GT 1 -112512131252828750073.0898057802855395821742965341869460 1.6864243963212384523487399821553368 0.0429279885185319556964654839592147 1.0438766432530321926218826789396494 GT 1 -3425456.3248877402473397160860015679410039 2.4666038325533256693602893645634013 0.0169424239742742395001152345691958 1.0170875888048306843745847821566120 GT 1 -2221774055394530537545569693529373.5280681193742750721178562722451861 0.2610451552528542106760906435092264 0.0697260352304113711772704288079022 1.0722761504429536866191828420459213 GT 1 -84249560307226461630285722584160157405574.8594395616563501185127888084049622 0.8984786047009890130004653214195647 0.0890603866744366395377310958385089 1.0932786700601862996648610191708340 GT 1 -12396780950620808580512496634601053840.5443817865809345959264504994174723 3.9940021002382291493399346140271218 0.0403053204171834819202600761953153 1.0411400872076029620365126708444475 LT 1 -2716.6443449744952909097955474499306565 0.8665285154138065080673884274190497 0.0576448705682092383277683181357307 1.0593730803000696335208472783276749 GT 1 -125371551717661693857907967514608897194384.7819154254371361913844421981269924 0.0255975299280813857754942752776914 0.0279730420363476923444818395846008 1.0283717403757864670690774553494998 GT 1 -88401.0543561794958827339602472215713668 0.3027224433143930690773668487793087 0.0991085158372739206535311628281355 1.1043704679582454081116418748644301 GT 1 -1366071136452.5900052609417498360165258415383916 0.3032494566222343424161590910924752 0.0541237641519657636440329012619810 1.0556435474023906034922276446428489 GT 1 -5113.2893473728707750216520410903984061 0.3305868804653446561482938326047352 0.0902188600659249384484210050828018 1.0945512139642936944299079525971346 GT 1 -33713592069048919733371258883810960.5809807810474987208063600026392180 0.4675845192551837344447004281004039 0.0285643601859144921231583246603822 1.0289802606205186112939036408527161 GT 1 -3919968886.4694324250704387894440642276700379 0.6243646911867535279582556825920873 0.0322712555109236893571719914700264 1.0328034536105107782965336884135111 GT 1 -98370.9388406965341353001997098202121409 1.3107445845163299994707171181512034 0.0439716669650001504289709847000882 1.0449677293040055024801397520151523 GT 1 -1995974627.8977872518525332218502900509923155 0.0786760564781102002025033088858617 0.0567854104375582920052224563554826 1.0584614617250423827624458238077096 GT 1 -173951416768339939599248.1282595101978494956685753961249813 0.9536551885437131043101854534352922 0.0644412284046027408001470173614729 1.0666113115156151064218223280474386 GT 1 -220003439290545588000292.1081422011742867279301394429716008 6.0210896007161236163203743441510527 0.0169831657713681848067768257387230 1.0171290336218602760080561243574995 LT 1 -91588105308247414177606305771348.6089822861607658272707397560471957 0.0352263365278538937035041272100883 0.0838436304493006779415550535762165 1.0875682197606660006452821704081814 GT 1 -1798162172285073001429506273525965.0074109310539209956353668964850636 4.2185517955064623906003448182612460 0.0644820111011940012271404794430708 1.0666549042718919220905548980236986 LT 1 -9973770710.9855747405323928638750530503539896 0.1049790513511803555771711592683625 0.0352793442977324764892543160363916 1.0359166955056026219334686947111535 GT 1 -143995003325.1332432752792544859043747179964023 0.8488600503211494033044889177728995 0.0639466396675283730169144364944771 1.0660827952272774367611618910965547 GT 1 -5757101428154895629244705757858.3952608234004472510660577428449089 1.7654970546519183488452676836641811 0.0622138054983625102567226234374892 1.0642332935891590616919852140632827 GT 1 -1109987373758303359953857868271764.1322275520655744146454386133978248 0.2018903755306572619052347132546782 0.0918382647862617005342663208846578 1.0963327937606788839906200766334272 GT 1 -484053959349482528139384440156376249388325.0511840943338238595027491393955561 1.6273661944335855122189318359579290 0.0096255946255885912505842463805997 1.0096722201013930424370414863248984 GT 1 -60579301974788601.2590601282878417886534239906120261 1.4028619762729193294532175892982993 0.0640037009541179032776445227728678 1.0661437565231718520299882792384005 GT 1 -11755.7702414989441270049727064475044261 0.2203720221916913725905816056798071 0.0542629815132345701294549423938946 1.0557907417204692450235142617985489 GT 1 -68330067.7943648660482568341827791411078753 0.0923433071522256246279547036584782 0.0311412722584567154122446818590085 1.0316364695244218896846636187723148 GT 1 -4716743087744615595236269483830415.0166215235642733513975080257646442 0.6572576866970457242510268033483697 0.0314932810023648868846415579354435 1.0319998586293264455342973226706115 GT 1 -109942029520356527421293750610062.1335140957827482233744982424840007 0.5610036090825803164683980553123562 0.0025996751185018837152732126933303 1.0026030601417759951842179216789344 GT 1 -11231017457423003126295708270343983376.2389049090881163279877860900453269 0.8613112614562301159685218642049534 0.0489605053150557888057818491258917 1.0501996876619129417508672560835358 GT 1 -27734118364243447300422704.9694604227035672353444765311961850 0.1063830178383427042940274441266715 0.0529938084169380258693450224008311 1.0544496477149379421677569016696632 GT 1 -5133812829551420524952196623006304825687949.2251393956893199377421687121435997 3.0762913788543890682867800594090285 0.0558782658338323239380886790243829 1.0575001654662062326407067431378183 LT 1 -70257798652067982386.0896307724015026505193454131617713 0.2040709556738129426239310166809135 0.0416482924513776822483337859546261 1.0425404415083827579269257977704062 GT 1 -42668312911.0615343150959307314637341754928337 0.6594893999981711193783823574955313 0.0926616358543516103045343529126746 1.0972398398410747223701687992113481 GT 1 -20575210355001278388.9148809127025530072311038798570432 0.0309761020818472375618485127221028 0.0402146208717938337371936604902798 1.0410455829223976666894455524533077 GT 1 -111367416995365841738437422837736789.9087516802941220554971724763095355 0.8953947681129452002436328332694203 0.0420949368054809831925446755412878 1.0430066048837829990713034977771082 GT 1 -781627884111272305303564229.1841973783753612354436422862430268 2.2412075987968351964210017565420564 0.0787646986327064242480090590282518 1.0820397907024351686323007909193925 GT 1 -1.4275858123669301528024036118144365 0.7784867974767714659344339666155123 0.0686522287896125978221982870587782 1.0711225255801421812131907223438059 GT 1 -8940211.2698348140760345125874973300953014 0.0419563124067134388731663586248746 0.0390489034203560929590419550260245 1.0398317593611663787144813157397523 GT 1 -519397.5666442385099629135567396568975675 2.0553249408075353787858476997996588 0.0273982823290637341665138789369769 1.0277806149530032348010280991232390 GT 1 -1330.2749855922793114378073764016688020 2.9369076336424164882228629175900604 0.0567563554166701278262749075980057 1.0601377288404704959398814361363756 LT 2 -169056998353230864486194.3590352853246532813031049312633601 0.1053584543750269323711864184601060 0.0112192911237340490394059607550701 1.0112827021006341241921051317833777 GT 1 -132897769228743.6897834578311634379674488057581236 2.6925129080320815477544915032379905 0.0606038857958544563064077580143706 1.0625180418634718465704144782191723 GT 1 -4373438324163151356530361363.8404867630849708289751592854697933 0.3581025234126194701110041383807183 0.0538039544035418625163611703132925 1.0553054950408546235698783636069343 GT 1 -44092494207564681639715120216803456390.1267803517457633419528558428115392 0.2649238047063092386121538557633733 0.0083329875575576077677525424379105 1.0083679009891228850816684988549228 GT 1 -18863026964670774483017882181089644622113222.7489936284603298053021927389673068 0.1279878750827352609509702909971240 0.0833649156925300467287139043418487 1.0870458310659246872278613749804660 GT 1 -2863509961.9978401825107597873308570801911458 0.1827563442777326221474758770280707 0.0777617823516373708201241266267850 1.0809517182460965947894460702406212 GT 1 -52515637660691964.7318849497069652493951304380469168 1.2493655268725933260470451109275461 0.0425255559799443826634275848376697 1.0434562486020086581183987067948315 GT 1 -11081417060663.4121683252645833544500813199730760 0.0145298575858287725317941673825230 0.0556686540390365584641533457787519 1.0572781723461627347740664810493600 GT 1 -391.2376075653158770826492965160134728 1.1783437012447758511922060035534686 0.0839389278002514809200318766044150 1.0876722438233838984307558041277093 GT 1 -3083786893628707342542599464447937689.5009034365509558384786017005968989 0.2925208045933983215147421817688537 0.0326167833020738571039411316010783 1.0331605676191600025943171061280458 GT 1 -128607223815381705.1249275738995713690523517745742078 0.0303441096509975409537720840201300 0.0278269198350071351711678226735614 1.0282214243602016312208001326923955 GT 1 -127145367046967107179004.8571378954345283905292094900213948 0.5889313805677680394443864070076659 0.0664509606523428535698061366739669 1.0687617846028067855962083513329520 GT 1 -3050746553318346801003.8988594289225539088806321237570160 1.5746738752343615225052054058984377 0.0078231929411597667317554528242517 1.0078539546566465084805705814046577 GT 1 -203709398791145005537273991312155214.1392627577607399229385446104811903 0.0838535495800132323668972828957332 0.0376102161855627625659128780287298 1.0383357296996679245837169216393310 GT 1 -6.7051297895986688747965754225711487 0.6943812257525820380589212321934661 0.0424913542653823414279632371939293 1.0434205284802502363662493804110866 GT 1 -2688306282355718374.7912164415810447863631783688600823 5.2731307975527315747491329166693745 0.0994573021953840199586671490356620 1.1047576998271194889996326680299908 LT 1 -93469060413985801597270.9917685660831430167455524603655707 0.6222395900083193834815241041611207 0.0638211761290799358901154616162299 1.0659487696083453200121249314544789 GT 1 -530318273463467691.7949921319467738498861544819357587 1.0717146219353285831051085486294439 0.0616624789300465149329701092091497 1.0636455641344218705531494688856730 GT 1 -6187795908082554594117.2527420699821603968197703718835626 0.0240454706574648671170666633801660 0.0407885787920600818048747190992232 1.0416437683256046485928389419033770 GT 1 -86741849190913721113385046252869268204.5528047568598523471665310519767825 0.0715985723052257275231986964391537 0.0645379860442799439488955011309323 1.0667147391637852002482286183988641 GT 1 -5405135693250373916914853383.3449357042622030137889162157273344 0.9595032580844397387153227096192657 0.0184557575769182742165421204772038 1.0186281899462442803253311785381102 GT 1 -882934905961576842411350694.0385577148796199923802026540056529 0.0961672362791859973784948004798948 0.0742904964105557448127047814445592 1.0771948045800735022392534986026767 GT 1 -9598808774683376581202358119058973.1732816032235057432525428445092147 2.2425508632514206373651322411404908 0.0082797170044012334281496985739309 1.0083141842457599418751558528686283 GT 1 -852246327462078177993.5515941041320622172021859255506358 0.6401273377641966037833863664933057 0.0432618703993020991658069580069493 1.0442255617554377613915704716401042 GT 1 -612261787308239271898010262840353372158808.5360033576519623160016271885386558 0.7105412907500334624059451048214396 0.0416600699253352321116590271259788 1.0425527308863155611952728892667606 GT 1 -1468811093948865511471.7112875715735260243341612380586350 0.7023692701566526953137580379915603 0.0918761901412892030065064452174962 1.0963745552063237113395841518951511 GT 1 -81058484594977750216425091793742064106.9625205316383974873919990532292006 0.6548144007458350928574746726969064 0.0412210240558284138484697205972679 1.0420947041298071473699751880461204 GT 1 -143615158692135787981547111.0479328970750375472257650294719920 1.0178421693732610186831653454540612 0.0699582367310484101006276474885974 1.0725257871023047690105414255394346 GT 1 -85633448881230772953461754.4892231432333852062839780579363212 0.9964556672249652100659631832193882 0.0171348109513624259661138525933532 1.0172833106115264392210972730104332 GT 1 -802967137280915526478444573795614.1587521364999702570946652362559621 1.0487608978507319178858245192389409 0.0413784915288178830312065720338889 1.0422589551296617779544150047943531 GT 1 -385489149758551.9441812595926712880558015461416806 2.2290769095288564860480799367105874 0.0134147669539848133602971924269795 1.0135055578132494772241712651819759 GT 1 -367851555821949951167381648.9274664402289256571815458304021217 0.0151258930726877933500951733050965 0.0384475414304813398340153464691762 1.0392061563469327093329383490140198 GT 1 -519738966516456243.3346680318978561451296080070316928 0.2530618519019561567675654742488219 0.0432543026062675584233069743850606 1.0442176517925440930683856771531177 GT 1 -102.2969370338581950924871389991048315 0.6140420455714606136153166927533145 0.0153666012443858219327288965808286 1.0154858910921572572735143816034372 GT 1 -177955862034040912518783458167873277599.8789080147453819966219572805166328 0.6878653866572418716840336982106217 0.0051449954993717302680349821082049 1.0051582765623070628620649134920964 GT 1 -228.7466167319240105421399716934008114 0.4075647037678791299268362506495918 0.0285435386091553918261544706013680 1.0289588270301025666509835983219190 GT 1 -15896.2712513024661181539488271948419713 0.2176971755923134950769477727317841 0.0928952411885706626083026525825559 1.0974973351932895440303556542932193 GT 1 -1864567930746129800882689.4192517680698442555109268321288229 0.5236965436807390772028068818419888 0.0118176112343781650538618851347180 1.0118879942577061802792186790999349 GT 1 -1640961205354510655418199711839247693325.9094057430371425593541279173491004 0.0211438265289241009721667065363128 0.0507617703892705720602283516184574 1.0520954796197598862224717930356702 GT 1 -4584197235224988884702061.6863324300683010209210004187545942 2.1971685478652088606076261692380061 0.0436282508989162897930888895825999 1.0446085826244136372833511168288957 GT 1 -120195273678681.2892620998590394834026386501612524 1.0530235381367583073588275925274370 0.0244273452872005874870238892472980 1.0247306422328697907976065047133645 GT 1 -9481253320135097408867639079211104943.9826509625917561909364006880704666 0.8484673607005717043733289272542962 0.0119564609908846876213993059499610 1.0120285143822360166565351655942025 GT 1 -127280414639.1071973310029629036335842107102196 0.3542891249716862353485330137326767 0.0793218578144002344999230622738771 1.0826447694006875868655457271723620 GT 1 -129362931.0564031310763954341135048585727348 2.9045232141267347039265044234724157 0.0657860141877764745147291342747354 1.0680497601289287082855297672303698 LT 1 -613470652742066518050030479331085221.6720745695256486630102582390240312 0.4810800488684268979757027650295317 0.0735734618564228076452791512708005 1.0764205260456691929724658102311998 GT 1 -4905531414319206511938753586459.7937043867570429891362042169933304 0.7871658385916369175356724484677008 0.0244827115552795280348370923882959 1.0247873964263788821388440687608864 GT 1 -66462295776524975882862495152476864039.4249561169534575069683171628863127 0.2102561376602422999540744118098612 0.0294594627459306369940284502696562 1.0299021077924605914459495474607154 GT 1 -12.6500801625931913613366348553351373 0.1273190657351816855889422256664206 0.0225469865761812800757120461646427 1.0228050563865501221642353482247500 GT 1 -18048944296131531970.7951689901296705061811036666288290 0.5361079395290266211989057547552822 0.0748415233968199691930001041869508 1.0777902300868528470770778954391945 GT 1 -53418129246512267396.8487088823797688074153338916190012 1.6995027513984553174816313005155154 0.0201108913868078793256751765877155 1.0203158681963047582856202439010051 GT 1 -124338126761060.9014905111214884030970267172667206 0.6453040671455684261570859160890396 0.0093043571266095326403115523218377 1.0093479130410963119878112352307246 GT 1 -33352162512534819306378606349938797.5432900889067057682734292952413626 0.3346138507766936293071440206868219 0.0428270310508682967963605777288831 1.0437711630571436245563400370752216 GT 1 -31.4545305802275450959039160613945137 0.4824044360611340433039268019367073 0.0780632777928143605340204420882324 1.0812786887924881122852047139583808 GT 1 -1106603168913732893060886028650014133631.7455327735882032405964080812385509 4.1781819779151285890616536506477234 0.0494260447964224785172294322337127 1.0506893134485778691668826007170668 LT 1 -4271498721239452324169747.5291028216189538204985799910196559 0.2504723910625456117695337590897982 0.0390167919178921872645993037321471 1.0397983435442063446553834449034603 GT 1 -196391298.8066217131865825647388231106973560 0.5650185389611649305479145232034591 0.0583288982767394284861292301641995 1.0600992142861834771916002120266083 GT 1 -7555191962803722518873527314628505.5299915594143146998566251545345101 5.7365062676405942993752653806187353 0.0786176478059775106108955426568084 1.0818801799152955952633600193309399 LT 1 -8509425355774718104455123226676350932.9513050310652855026503827061962886 0.0779362417139813255935032622254258 0.0959264676953825237873078269074159 1.1008445808530331308349688115701471 GT 1 -184128933492674935262478702388379790.1048786890375228325993960229821867 0.3176992095066872682682648840742200 0.0544714740515462139293012229867912 1.0560112211129794002098735480061466 GT 1 -34527710700.4850085456450872139868042277613470 0.3755836746087107814939320701451654 0.0335746726512866905313139944994750 1.0341512442096677289747792351385732 GT 1 -17615406.6479449705317763333411806275076498 1.5650011397297598585708871317275201 0.0370754982736367381374623804148074 1.0377802692954210929400884266496644 GT 1 -794372.2764524438144996699058949375504855 0.3147680048515435148496782302839694 0.0646443868480675066163163585004949 1.0668284870805896671108733848323391 GT 1 -4904453325640867872580090941978360406.2268292295229719280947167918781025 1.2814318771690456229635877192640789 0.0487981686836218331027156880204965 1.0500290083378870117287610916613506 GT 1 -23939930465905763.0414568294241910586537676799921197 0.8287576226546605261707006865825077 0.0400047421677282724572947526501619 1.0408269342905060583407703617950377 GT 1 -2431.2845783081612826735885675557659348 1.8138647368741892233555600701288344 0.0853121089173463208650542521095770 1.0891723745372630410721108495542407 GT 1 -722.6075485572997826313243098392081636 0.7320440960636919294952327569220752 0.0755619818520713112574452569352755 1.0785692740499373974107155858026865 GT 1 -66885924635637351060517240126.3407457348279551608804853116649195 2.7727106677994610762497345791857353 0.0334874403994064211334029561131349 1.0340609854874103200525313517413634 GT 1 -59342179539416930.1758121142994700062703440112345243 3.5884368828478571048959567010619788 0.0629861824738615642869781142735794 1.0650572502930649683610971355063556 LT 1 -706157303481674782263048808721.1656849170198476709928435413332676 0.5505748276597358186979190094211098 0.0331533223069463186608819363486585 1.0337153507089983705389725407378877 GT 1 -189751107999151578.2747035628715897601017653880421941 2.5974179410451812587813311035614436 0.0325540079058693061654152113234496 1.0330956777612424968948044350266601 GT 1 -46720478420544922.0693578982839386804259313792946041 0.1660787102214698476783106826643790 0.0641293330034540963669598487340419 1.0662779883375090081907725041251374 GT 1 -28126312256137281.9773891910452450555467558090654385 0.2280860808022824554747422994931836 0.0041551786981719212026937354769054 1.0041638354417116492772350475494551 GT 1 -63188310706776282.7713890473962353037933452011667953 1.6011236001129818406120882016909481 0.0458799479204358663568134051595615 1.0469657746968739395975507808224739 GT 1 -684769115.1426208752376064617225794265518090 0.4409494781231341318285398093671956 0.0131346053325871592987634608653111 1.0132216270988495846589643104445599 GT 1 -1983727735184873580305.7123108577748730717144107004488151 0.4685200414079757016559129269754315 0.0032304793170804113549913373632440 1.0032357085804445920898258674818855 GT 1 -167586675941029445779342.9799639416157558861367362704596746 0.9369188558784699448339991387019689 0.0082434521707944675701057280361019 1.0082776173113272099256252580767106 GT 1 -293589049427.7795631160153165101504312948095464 1.4044557796439685643720482724235185 0.0646989147445965174861691050055670 1.0668867852136366116166632486078442 GT 1 -7663751691.9830893299850018680959741083528065 0.0823526677065497352346648128513432 0.0074645242130308302070654839294322 1.0074925231936244297755168669471247 GT 1 -607555501376108.8801997485423793142138309634749500 0.7633242644231201078003754434734714 0.0345131358550503831319539731814771 1.0351227824418013692784405415782818 GT 1 -2239571566781.4273397314502344200058866200695268 0.1879540242548827558039378081776704 0.0201318694079650368527966514830839 1.0203372769919844378178308930906712 GT 1 -4850137.1991133136271128750365141470321265 2.3426870361918193464108708241267653 0.0124876427283888807388900347887092 1.0125662685923849646176357534480305 GT 1 -679529613.7896154215688749436626180270226961 1.1786719013755456818806980645494782 0.0946319131242076774832643761972473 1.0994136921431355652041631008419807 GT 1 -8794141639211769579463998598588981917102.0178756101376808744773713880915142 0.5214466851961795972742038334918458 0.0954339559573050023990851720502869 1.1002999596286696351664754096439297 GT 1 -56547824.8720515948408177344858217033495442 1.8573098807952884066517206042619468 0.0759733582501395702644690403110803 1.0790143746934981400603748164341891 GT 1 -1179808885.1268722483084496449500463260873397 0.1545254338324522902066114817091635 0.0909968912818247496475595960328677 1.0954067648785201984554804098789422 GT 1 -17829536105224329540496211286562682956951.7984953529889132779216546223948565 1.6952622691883683389456295963490677 0.0863691134598719716864123508704240 1.0903286331429555273333429519855909 GT 1 -421.8096873639386871013450907245138034 1.6842484567645053036489228695512898 0.0432901671629269914793328723886684 1.0442551384820406677649214537120895 GT 1 -664390566.7867400467692744970532220135372065 1.9884542990678725339256185440789092 0.0769289462550559716722685595071193 1.0800490661367287127071361723288184 GT 1 -5577926669540.2104255578007689142747760222093168 0.2733859239084754528418071875620685 0.0885920112576836124901658258827455 1.0927646348382178145193934332636595 GT 1 -124354901665113.2358970417383175234778945982671244 0.0160392954151088150719147000630276 0.0181766408800769148187309550345430 1.0183438655044002490982700913671962 GT 1 -5328094793098092078855452441924312.0796038859741165193718571523147354 0.8596899958345992752733171225241546 0.0026137371886160464256551951615230 1.0026171589633754119587631101321440 GT 1 -688609083535520.1086698243268508171028591854668970 0.1319122656865633245723958022448174 0.0906585552293366306297877699996849 1.0950346285243363785327141590215157 GT 1 -5586623728.6774333048416129769271216844906732 0.1533666455204329933203390466510864 0.0127685353325834324509948059216557 1.0128507537017630181234490967591775 GT 1 -1459116695518247430781422958811773259.3208621465511043481003727550379093 0.1370943365989307404208664248976378 0.0752704369140944846015335836317866 1.0782539484479192229659986023573767 GT 1 -8610124041058653065239367338.0038922930288843755222479928856030 0.0590446289865451484969069269786199 0.0226558220592056899799864277671787 1.0229164085857630652402114330042455 GT 1 -43614849565993089926744456536.5099241546099030404385848484565361 0.5214901563517816184869595646439719 0.0269489397545691610448455131843634 1.0273187210451245969321426696784511 GT 1 -52163916977.7783749151824033824068308651544766 0.4201551968236577487885256244004312 0.0756087735532272455247900194380974 1.0786198917057352236728880227795908 GT 1 -128590403188152885874.7905857578735903197509686375490070 1.1366317600479760415730708728107892 0.0956020862732321675710874123102252 1.1004858453846452292352940456297844 GT 1 -323500500816021980096.4720005109486972219869892481962873 0.5838095788343540323982852776013682 0.0540482993792168906558724381005460 1.0555637676599159702325200743181805 GT 1 -72989107228987448068105954564723791.1537757642612276425744519636250015 1.1224464809336706924110760643361084 0.0567098397568830590287274853338797 1.0583813445870140321870780286077772 GT 1 -99575525646374866692743978972.0509597682557290561282609665402921 0.1562406162722709973664218053279352 0.0519763767113629981126181543817277 1.0533758579567496655079999464327534 GT 1 -16640625031229733027696774408174700518.9446922898678349627176686868153652 1.0549173170280473896174814105889268 0.0380031396452956207167115420130319 1.0387440919863047892287640251134935 GT 1 -882892472371778169538598932.7803733137248446849475837337963790 3.5140207308985109026914106318935264 0.0949685142836837018041960257571434 1.0997855450406400625317310013973390 LT 1 -91784287185108974553461865.0859501142570342116819104078756069 0.1756223289214392165832881526970639 0.0554209214822216135890475130649518 1.0570158702750587640182786390769421 GT 1 -13986118151549000334180522936385031626412.9464603484345747798300717685758059 0.2055061222133782741892692884800809 0.0249134969235541396375194342174473 1.0252290908157272188385252333397815 GT 1 -2.9759566216658310013682084136148475 0.8134029928609329377394481046226410 0.0969286724673646124920736484086354 1.1019537391690053457505128422205326 GT 1 -1132183815150807.1938926468394091221709358275874271 1.7260677724953895566443749669988372 0.0429260988141132091806903130860285 1.0438746687907864029746514086939170 GT 1 -394859338638100859468602.6806582683705206035170318667477231 1.7780726573850679125559437188836813 0.0381003094780929726406285668950886 1.0388451055598627871965010004338464 GT 1 -197537570331007589342512.6655945831622550847630435048969307 0.0107153086262101927772823698083553 0.0304512465610092597811817776144701 1.0309245183652429325335401206363987 GT 1 -1099878066521420024699094952.6151948937168556967305035928587736 1.8798820586082702971041463127329614 0.0083435446478248580213282350214032 1.0083785468473893523814823501034514 GT 1 -13690029606330290796873700737274072884.1793785707990143138890637195180244 0.6210319565235402109764201522097698 0.0908675033926845555171900000152894 1.0952644345826064809286204175843378 GT 1 -3215654931335971.0642025536740360024810722599790696 2.2472477874340277932220334686107934 0.0855901448069418994190363917260706 1.0894763887894298755032435633943294 GT 1 -138.5153349767997270624762788041198078 0.2072238718311146836388726737797075 0.0819068743109962952444674986816400 1.0854564494010833944814743070844527 GT 1 -455128.8955270098110402292181433621378308 3.0090314088695507617168916852865498 0.0246494250095796155617222731383248 1.0249583085192280158686152499141298 GT 1 -7408345565.6498826717037458925450885345262962 0.5660890956252377248281605371655152 0.0386834152847317312830672420764808 1.0394514916767173595919003525215891 GT 1 -1929471.7980345956220854092052696031238649 0.1262992236637917189541514206297459 0.0559557065620944734994214702152076 1.0575821929226623125510546397267807 GT 1 -152074583160893638201573106105912009506.9346606003718314616650604698739142 1.0586676398810275055501959692086750 0.0927892863941113182519001786097548 1.0973805365480808065571051425376202 GT 1 -565759181.6750716429703966879944342906012483 0.9837201905360548102081787790682651 0.0724317366816759676376350662752433 1.0751888879438004820289154138922584 GT 1 -45150882969392897987950916421.8170063247065067103540183812983317 1.1652766529647038998872902926620616 0.0010734367459691745432934974272832 1.0010740132918202364453599465505332 GT 1 -451923081536212490112143.4951298722641844177699762818116542 0.2658423373962167093923688288061297 0.0976291297315507492116510425339080 1.1027296790469850257358555722195287 GT 1 -2458990942437372257.4677292072257976976080926584349878 1.7084057653607980550752785192623799 0.0450068752023808414759403399646781 1.0460511376921176085065779148493272 GT 1 -229518834.7387195963176257937222832273859595 0.6501613148574710548499399698625711 0.0475519068576358117539768016123302 1.0487196688548026875737324015024825 GT 1 -176198.1165850013807927702800969752427098 0.2503684856826483648638167614235989 0.0155993988778502137997434717707327 1.0157223498171600146290317041891832 GT 1 -3.4215008979596679575879957208383453 0.1348914819106590640623653790150588 0.0775409793063472029598342391159968 1.0807123260664421001562658023441825 GT 1 -302321796426733158834266707.4403190567530407499834576173914512 1.4955018950060324893404852208051335 0.0131463245253838059013640798634571 1.0132335023378074177102042175800158 GT 1 -2313649636958381353.0370457826036652412487929196313555 1.9771795124703718504248386728146202 0.0796716432504174342447763341843859 1.0830247631056836931090113861209980 GT 1 -85268465719050837124002649316.3773143788953435117041657491635446 1.6137553514761210848065621891355674 0.0706015320526101911813777764672883 1.0732177107645202777824456827719105 GT 1 -17761618093.5799605899890870770971818356046847 0.0009041656217701142188427305502582 0.0937790308646364169849898739899744 1.0984721073838837380891090283067617 GT 1 -9288100366329602191528574877794511727858214.6409727308495041514455045403739803 1.9999821674099381881224544054098304 0.0654087322012847346596244708935389 1.0676459920092828564777926801991457 GT 1 -3738730225415.1940513889143425503061000148531624 0.4661310961804858161978961018272558 0.0320933196454672355692690744489871 1.0326196009452062641668840914203283 GT 1 -256027305248415308343885066384783.2648223561599472699516239975880943 1.1104561708079943130440488813852861 0.0329551862892343201296220979169537 1.0335104415718663335228812792884274 GT 1 -3718818245786857855100498483190582.5729124387557397754413879644612486 2.0457262353541323064562055331205480 0.0533880432671307133150958289515905 1.0548660303486163864476494862793324 GT 1 -126051709494847743102.0336255679848953672905732180264437 0.7142900615082263030055540559750097 0.0996003480138864117236870497606322 1.1049165564599482214930764135095997 GT 1 -426589069797077550857798728362.9270369583675621814923759512315863 0.3552618305488521937420582480227387 0.0516388520068650013090729603895824 1.0530198914744477615922229294954563 GT 1 -54717644399.7013316300862476277181729102250411 0.7458847084475745161242155539027037 0.0982953276866786517841887049203456 1.1034682268180569074952453571943540 GT 1 -143651411234086948583684158533670684688221.9114638114467007002389288582991765 0.1438330179967791481376421051174603 0.0998356296699054524621659752062979 1.1051778986332251470178135294461038 GT 1 -1486180125964.3596013141848366281628831561750860 0.3499663641291890475304347120278163 0.0166547257314801368342584131268344 1.0167949750661922903142817159965772 GT 1 -7588.3832844032602455611241272229867305 0.6717021222635276788452246825124109 0.0950354893396748683276763841552860 1.0998595507911011783677080325516067 GT 1 -51669511983380176589885184.9481563794511664045306571720146892 2.6053335499512544226450500590330758 0.0244233472128395330061478345654382 1.0247265440591977996204435396597322 GT 1 -5359535984126462679550.5353140814824364320894914656754720 0.9608934541490163235092159050897223 0.0466405037459668987922001072844126 1.0477632205898061604198131292206580 GT 1 -588066414342563483597946081607.4502285029732998577222064104793716 0.2180638131429206487716736127080270 0.0938000736304582398233268311560198 1.0984953280009875882938001622597618 GT 1 -26601282187283723.9365822363997547872463898176940134 1.6213808746629433010389934810627244 0.0628784046026267802519909642047296 1.0649422341948573452141732019628957 GT 1 -2394970688571527620796.7454345333475450388234447902875799 0.7063297628228132884764376960761756 0.0377183637001332980137533555696567 1.0384481099361634941024182245944540 GT 1 -1089851765239299.8442405420533113401577523349286456 0.5038300400637505415151030568083292 0.0793712209544281762173694219746680 1.0826983869040712828957253978606628 GT 1 -234604068870791468292.7788748048935204082871892976300855 2.3071288985698884073384089412479916 0.0884430797140712217837082036243159 1.0926012399827204292898388654188834 GT 1 -312.7175764767419281142775217839876947 1.9569620396520359013904500720619193 0.0799657874803925336412642066558398 1.0833444221091773237686303220618851 GT 1 -2366685044620792415358467735.8350537322590186580868135893623522 2.0157679331301857471171415169629122 0.0158742209608824113358928581376835 1.0160015658719584751334668333479669 GT 1 -2.7121717861307342576649117186284763 1.3925396438643016663626975897170446 0.0233709327239784467925332354806261 1.0236483640497905604550046915287768 GT 1 -2815180699941134747423853996074361841903824.8329819612716485854775553555132474 1.2211622502561656688626137298834536 0.0157257966219655706452412017358089 1.0158507587793716550975664671597380 GT 1 -20569293410099828850788486173063142043255680.8620694673151434095479940917547764 0.1120057756013057854262098528446521 0.0555995383508313080345769235086908 1.0572049849428928597805043332967547 GT 1 -105818.4776165916079541883752633941845175 1.0298938404859901654548146861586894 0.0390243752162538944671342421575447 1.0398062347625114100296739521264805 GT 1 -42469114235446664714870916965238.4177209423888550200056754508127690 0.1559894955923735062291659681153224 0.0967648545663262732957391837504212 1.1017723547761138601170722923126967 GT 1 -37142823471205217.4390943483096455409424140735801954 4.7549305948549626263737826067275368 0.0717270325852826038077814651177973 1.0744294435273347546147452797520503 LT 1 -4287072318452364797.5107940428663607688937386896757143 0.1007938139691464732765074841688765 0.0139576602770795381551934704614310 1.0140559844059786363183634385777487 GT 1 -14601025733801242352166300094120.7761805354306127561303358396241696 1.3827895521396979953959420217421140 0.0940469406281054092436546397733818 1.0987677851291845237174936140701378 GT 1 -191470475259843239195.9827099538674622510549080282505205 4.3595303957092518032903426489359703 0.0827056581678913671469406595863864 1.0863268747706174757992848751242494 LT 1 -21190.6477906516713112011646961817314133 0.9126162051566165721956949858470790 0.0564515399908395046949564216816267 1.0581075535326179075225081556086410 GT 1 -411407222.1313839180210849529280970112107919 0.2209488228770936729804766972165562 0.0023487426971393606103797159931444 1.0023515053199091572066212863344389 GT 1 -89639513559881252772281380.1505249412741791374065061033725050 2.5895616501862655204139410762158673 0.0778653353270774140958294618054354 1.0843496957363484998275193735203894 LT 2 -15432254562204987734168806296203726.9653777579693227498058681525673619 0.2061946072637892980190722462590032 0.0416413377085031535448731075949864 1.0425331845508538649733205355282708 GT 1 -14851.3518646638566995555940702993242324 1.6086776368261915553984646721074844 0.0013474446397753020047224062862770 1.0013483532596055939451457395246639 GT 1 -83213027802638284323921.8621965644324529668946511045514901 0.3022118594849503747325704383084916 0.0957924142678989043920083011821072 1.1006963147163223339278235483450679 GT 1 -1633370.8769564035115340933950413611107383 0.1464724350447079675720977593915783 0.0756252675183819972494305946522885 1.0786377349217199552557881669077954 GT 1 -10318025903356657408621731961910127.0997258357469925132563116464602290 0.7049634279990181037064160290701338 0.0131266784548977098207056590236817 1.0132135947512805981268892852204843 GT 1 -63492766687567138.4671587981882420971726394001128389 1.0681906925159687706375489286293905 0.0483778732529864346195126279807393 1.0495872486725333478838706399361312 GT 1 -10237156.9703304225201452724914785175935905 1.0779405342837230792009640409720544 0.0279402696633811105582515304302991 1.0283380254461314121721561201426901 GT 1 -136794789.3305698974044691867971322722008127 0.2366744564921195454899903763743582 0.0314391392844924269728997863085567 1.0319439579282320866309069183695316 GT 1 -171140817032854164410724061911952843016067.7969207006082146761711639443843644 0.1438416440290449974897811162672162 0.0874985410770241191872525533207601 1.0915655947070689986199437350884398 GT 1 -487893950940552931506066932.9955569452178421252012435822211055 1.8235925008102111089414968321219909 0.0819582109767719738362801928444218 1.0855123675859375843937446601166464 GT 1 -232176186690803989594686020225044.9372167262635429627062720810359784 3.3992708290093081237210463804008489 0.0353910161584246833912339393683081 1.0366816268590579231128428777506257 LT 2 -1471528.1930993483511807707751156880950222 0.5454596986281887075060116740935973 0.0953902758840005623571286143731904 1.1002516723653957266272977979257437 GT 1 -5143633184674.7145287002057607817391740476951390 1.1384893622874094723874258287264364 0.0474989304120465513629520434367684 1.0486640490549262565499590526711228 GT 1 -30260098723665773979300.8111084456030553257755339631671874 1.1888935722871826535964380441007440 0.0763573874969891534084613720347919 1.0794300651656923592824899998108458 GT 1 -218896773854092022106277299327900411568631.9916715731088806001553281437837104 0.4092170838324756951434061773850545 0.0290051294417604381035633177691898 1.0294340933430355995921962755404156 GT 1 -46100448756866729222047944974665.8763557351995040646589544487998019 0.8633176219921282274893447193087816 0.0032203859363490092525415553881776 1.0032255825388481591370405202862392 GT 1 -73925969017815.5293163635152180983739533693611839 2.0215088461532601884113137228056265 0.0878897450309002890081671088257069 1.0919944026083798135699520530800921 GT 1 -1659896216497367818876995640307.4931863185673627423674785023022745 3.1232360800417723371142550976710733 0.0779618408805243820415879931914551 1.0811686689506567332328270135924699 LT 1 -12904334049616777081300114546511981597.0930654303963995340512483081037529 0.5650275732964212560988417890273932 0.0244313424140127769559619204669319 1.0247347394520583750875847899535165 GT 1 -3677256393937181824084146732514.8592818274009705221319146071986760 0.2754405510668144751295269900657795 0.0627197828742263012189807226168951 1.0647729836876081977390687169942874 GT 1 -17094244886978801638271559650543979361289.8467492644654155050149552503758730 0.1742284169786426454703559296115010 0.0774427156862790719662150331877395 1.0806058081783406754646728352671109 GT 1 -485017497624542.0006874890144729099442431713120990 0.1653222513290655265475410218207085 0.0542213037043189877580048158889151 1.0557466735601081022324712367958838 GT 1 -303356501320767395295913571774067925087.8461427631658026128301674090162423 0.3651430206118460971759538410909557 0.0420192543879614971920801065330778 1.0429275997393104312215656433259658 GT 1 -283.5820680598524977005292987888074037 0.1260242940503201974102371997815329 0.0375232565373504319594249744317226 1.0382453757483272007650157549329581 GT 1 -23607352613607978967356229165576614.7199994727041105278240006798997216 0.4790348622625062792756673082870275 0.0465334789349324732070717755000181 1.0476509661836099596776449745065169 GT 1 -920798287966388263557404331.2669748282484375673141937148259404 0.3883371229958296580834672638705776 0.0974741191658174280872864279723850 1.1025579123616943130457897045017340 GT 1 -81648296445916656135970984743468259748687.2937011009642226754486915775697761 0.4219120881112993533763221297205496 0.0528486315984630161487851447229193 1.0542963586519515822269695879436639 GT 1 -229770902805036077235405790.1361377941745602870764799235859002 3.2138462065204933060493465535167420 0.0940981061263859167025929673502085 1.0988242637101023365560501507887775 LT 1 -10621148768829516275613.3562787293872874368619916030644086 0.3586062529515144746929338347668315 0.0881916119549343250003943742944761 1.0923254118098553806540894293720384 GT 1 -2.0494707774641345532277398654154300 0.7432543197940507503958303150990596 0.0906956032873856935371705414984857 1.0950753709901965501148722406192032 GT 1 -8883823425.4035583017703801771756327961667840 0.7416708057461793894649786185289136 0.0872377806721002318209382590425557 1.0912798711595015965395446875413384 GT 1 -5384143297064556626434121795603.5877195048355186433940805421691347 1.0480698288708325425981328970205111 0.0046951184431763664571605107158527 1.0047061751336632323240752853712932 GT 1 -154695.9344740500075760777580372189827520 1.7938737229866100433606834303523551 0.0969978616997983393426726123135139 1.1020303575721616855550069264837087 GT 1 -10424598284940623579013275353999570398951877.4898469580830807906984711140473614 0.7990593610963577013042256977018053 0.0130368629557106649066004366616968 1.0131225887321565819264220101790984 GT 1 -10.2468860970053184289944476061357007 5.6916688762422471162160004769882061 0.0556258164227452944364931801212663 1.0572328104666863896662268018216788 LT 1 -48067179776.6149128709539449541867117046605133 0.0568193572037747570074944544445312 0.0213156632017213682165900369955935 1.0215461227672431125735331630085535 GT 1 -942940.5096946163730289451203635269788380 1.6464679700956569706581965710992013 0.0889037670132074700189498426433360 1.0931067528479844625502535496779029 GT 1 -255836853584888958108776148370257319.8033354974400940844716391807673128 1.0371642693207074604754599955311203 0.0712884676715764047663913885799147 1.0739571025660389194569418508210073 GT 1 -95372393363620738901809393946355.4502829349872397614072452707523762 1.2011639666882403903924851279793660 0.0482779859457157594344345567498810 1.0494822888754886323038062195955214 GT 1 -376086069194.5717960113030535616191104379567380 0.2553185523919389919249103893396611 0.0390743928497703049532541249203552 1.0398582849227346500192864220853420 GT 1 -39.8797699171264630990717530222905678 1.1335900418798007980792223473398499 0.0560785281397208525367207039273302 1.0577123028855198722169499180827493 GT 1 -1581997063093.3716448712233309271035650769868331 0.2649818550215696025622052405009678 0.0016987435230885508519667630795576 1.0017001880239899920980881276022007 GT 1 -121293809535450645522158149426122993473884.7875039603387649987562076169796561 1.1727050730449902980565033321100080 0.0137553886930054572865381770804311 1.0138508706575176283747654299378916 GT 1 -16517635532771421306686705.2361066137653694990068086103121129 0.3083634285173540630198658486039182 0.0088370485775905804053415628096488 1.0088763268653474508245391273957859 GT 1 -340830603246974589322477713620.4823813857927981564962965614572210 0.0141310920704989731962630480087353 0.0228924751157754847320510572102901 1.0231585768188120395243450017428026 GT 1 -20794037603.8391719613775528116528583724779267 0.7839465511443895415762457611730729 0.0917868738817146851861250039695902 1.0962762075287784479066687521277057 GT 1 -149126827980923.8661490512211418885861543179341401 1.4601912789846201750063439925317846 0.0650512052246754636864017429659763 1.0672635161392814371131307501907116 GT 1 -149.9798930362092752349004440718941994 0.7861679649732652795703600090956702 0.0688833228062762510869177327240098 1.0713706849670745089303311034734122 GT 1 -1553485694.1240820423687779041827145876442802 0.0351750357406277257867775083603014 0.0804137657859739490604784423298884 1.0838314555243928654398914057477266 GT 1 -1445465816607945480.6575374562068090397362199268272627 0.1544337692072205845191655059880000 0.0659290286464254448811620862634637 1.0682028571801893081088667601510582 GT 1 -5499035237628889.9220335149193964116408082578568350 0.7605112050482623351226572267441677 0.0338511497984066369709433660601947 1.0344373674045420264001168375927200 GT 1 -15563224923672460935964719.1112139466454749296010436339827651 1.6933995813733891549661519494089867 0.0776385189563504719024525979632399 1.0808180703922475685908590000410168 GT 1 -29107460131393897271057909202615927.9098035254484397068459128298574378 0.5019129829412873691824058841398553 0.0181295164462885099506931735241654 1.0182958698008202147957849508117535 GT 1 -853229944603703813563004908.2816369099630492708702284994346289 1.0635216752168466108614099606642581 0.0011817325612220463225400194779943 1.0011824313577264766744693043649035 GT 1 -1781786.4552607515832168201716461462449409 1.5894646648112430836398860276680745 0.0653902612267326058662904354902287 1.0676262285119513363938044770774433 GT 1 -7636300047830134334952474351014.7758051852233020277079126539373334 1.0593441901445391287978445314535833 0.0305344947426997568492120391538091 1.0310103848629938247694490652284232 GT 1 -238549901457335968933759017166445.8934299035403546962149881718470034 0.5136726854539578208448322739798165 0.0940437135099217386015332167867514 1.0987642230103720741580036667306960 GT 1 -8416268686529.1649846749680864094362018015169631 1.7225717857032348105977474842232161 0.0519745025879990929649136279823374 1.0533738810845859177436401223999429 GT 1 -91381839309128628904076529226203242.7624551356308890402856242531367173 0.0424320117705192504491920549466403 0.0852040964234124333410384000599043 1.0890542947878007006965006839693384 GT 1 -265978.7790722563741080823318542793062081 0.8009087880763341062641501143796870 0.0108150334556230476011072109846429 1.0108739410399510733787340454748799 GT 1 -22553669108506786928080936.5680466811895338704943460637695502 0.4635529420609924160748793171829678 0.0370300807131809668077154812557407 1.0377331041341654750383418781674420 GT 1 -17617284196585565054177530243.6981022710865833585254194505253193 0.3836997497774665483664679375989088 0.0169000328499494143557345203973980 1.0170444680239161268592830188343270 GT 1 -238562058614385610094.0105412899697065717057744603152205 2.4464683720674992151169232506656649 0.0899923313211527673580928716428897 1.0987487097897805951957509174438762 LT 2 -24988.7599103801345615048212189655364782 0.3705825179742805860584017025460808 0.0880445963180396467464356945272905 1.0921641895749584984359308960047522 GT 1 -3361060610468124083768.5522676659202852886454446553878363 0.5483476234890096954550844875491311 0.0483138543093183685396802883886126 1.0495199774431489293401142219551182 GT 1 -5523096706476032272205676.8406434270714953724522943655785885 1.3584448039485047580982679328427461 0.0797854110219248976396216436121835 1.0831483872481319177310202425082607 GT 1 -8932198781523.1238588154412787087663223522976054 0.0980530910820880309957997158219207 0.0268380326693001305592053479923768 1.0272047488500795240642711910582609 GT 1 -7918894515829095999268940123762010.0694872471156017998022295210512268 1.2996195555009985725811506211650548 0.0598467560137546081381603257637943 1.0617123914880206987731124410157668 GT 1 -555058054846953617395635815.8510898827812025434978262697099002 1.1667044465555202851924403283579989 0.0049053381802035271461004707140311 1.0049174088414967802897053147098449 GT 1 -2863897.3989592752402071977074581985451288 1.4215066007048757064186888124622556 0.0584381176550336312122461997643680 1.0602152056471469159527125963154295 GT 1 -485014511930090312479021704426.9300190843184026467204546943802940 2.0120469318074833998477742411115299 0.0211537668136470183520255789753116 1.0213807139701332461269051836769333 GT 1 -19926282067858479.3487262708605622011918418898061673 1.5111211066587424780322083069650817 0.0458024740819488711757984676144076 1.0468845787372257011959867918763659 GT 1 -199840377324768564415636616310614875983003.6774200788631531548054623584775686 0.1558381092524660925669845341697843 0.0317588458632491458137213637113865 1.0322740965580030617470376787509118 GT 1 -110242586737.0928294456120204019036580042007140 4.6425312896176049274932371425665481 0.0797930670956449783867427626683633 1.0831567071614008020057854153831604 LT 1 -1839857720.4035253418150972218633557526903866 0.1293435057925120597733528565503673 0.0922964346994605611320651549244616 1.0968374236170805645566938413467964 GT 1 -13028671154520.4529324831201761249214535753462513 0.4707345367997015653561490083455088 0.0182969228821210843635192271896983 1.0184663818097320887226774466536799 GT 1 -2506934058336.3928432635551056710354574636943486 0.2097624171686917805309752776039096 0.0502859720909136834126145718096121 1.0515943629577379469091824262253718 GT 1 -192103.7440747194198651181680953295691541 0.2428785195307365541437834785017501 0.0137509341643877010237859763697600 1.0138463540107274427116045679521569 GT 1 -1652743573.0983542286284297841646234547216520 0.9075703540213206659476842612601221 0.0712503617068823547758202589882859 1.0739160724058373526170626662276627 GT 1 -135300792721966704.6178838129912678798143424038870029 1.8453629868998913363172765755799963 0.0758416915836857503123221901416589 1.0788718925607822229560134669077871 GT 1 -92293979391258464556986.5508641255680649564015430932493247 1.3594498460838620605400851060365566 0.0227846857409190504606366023651874 1.0230482681504520226757689277664844 GT 1 -1055271036102291817169009855032219873.6887701950305303992514720860574957 0.0658279389928744672672920675305255 0.0666550296324945881444795066562491 1.0689804033137807900624288657875881 GT 1 -6565282571201256355555866643650087702844361.8568979808003774696342208418554069 0.3916834398655533058476635063349804 0.0074809648884005466329488237842010 1.0075090876509527579460375889927711 GT 1 -196824045790.2234262705448190697237713954302584 0.9615378982239522807269394379551207 0.0565801435519544329934434180463455 1.0582438606027392536074761749212809 GT 1 -479604745364.4205382848288719630059913102735903 0.2499069648343095183914751956619611 0.0071367726282463013518353825377170 1.0071623612092931716987722052645716 GT 1 -2647914298406778713.0896424672630188060158737524965353 5.2897221996959744417338293065087282 0.0196744566096237943805182060432381 1.0198705753464124640813407331860103 LT 1 -520943990792748628905669.8299383471177457933070669611888293 1.6214752251489801566862863260354923 0.0850218980749625131109470783831837 1.0888551463153617356760480287697401 GT 1 -1375825.7288928118591175072456846187185578 1.0006745088148945251522652618345933 0.0633990891630149485398497757639647 1.0654980097401244987322319777961086 GT 1 -35042461676.0068003426671470409992160331661758 1.7563471615028188348347052983738885 0.0530745767930596207922620002224900 1.0545349394705006309030557873944791 GT 1 -754930130634.6241174071455948443452912885397037 0.1459848951159941633176347724825647 0.0528855413779666542856422361381078 1.0543353286623711916087248453394745 GT 1 -263262556672379905205390638832.4780770032402307159324145478769609 0.7677886358601517686631432858831138 0.0575716699678205634004128952292752 1.0592954049575172349791265134577690 GT 1 -11248282493948688472633911397123.3285128656133720219314459616890917 0.7725876533180635676649600073038059 0.0752353455767896091029225373591834 1.0782160014925009496292419817970099 GT 1 -107607487140125441396409.9160801161267249027498806129542613 0.2876430099341047477320986845386855 0.0561614788354095575669824777194599 1.0578001855570973924302490848222978 GT 1 -310053372604313641683690330490647857.7197572458332822752970403950400551 0.0187474178016906387898853719332279 0.0791676574029585915941880989520164 1.0824772977375324944534175154052189 GT 1 -27702554771593389053006747957.0241861668020189765841028970177714 1.5113546076660662658559618573723161 0.0642480291945911509409501465297751 1.0664048260759492551887556871232833 GT 1 -85015707127204506771661800775603.6066555239636582259794217990690219 2.4400199384331160139866311603342517 0.0442442450087077473378591485020845 1.0452528849837308555197675251039959 GT 1 -6102505952726917867827211.7333876756354140545108738305433737 0.1509471157949696678302817909706896 0.0875147954571811852973993102388954 1.0915834078565926532802151904554330 GT 1 -13929502271296.1817566521653220501296086583737919 1.7029663251481892908637764330401626 0.0770798659752561123865014255159182 1.0802125769070252134251969903328894 GT 1 -25584724242336021502604.4113818438931613155485417379558320 0.1595672400951237876713863690184765 0.0888398979666505170536139070502554 1.0930366539871868123920246693074093 GT 1 -21880638703911.4855983338676168083273400180621996 0.1185922517988006176053022258828427 0.0949959923145811592009757130425395 1.0998159069103379066847929522342957 GT 1 -2241769169345820042003937980769626470.3002568720641215360385415642030782 1.3374102287940144992393155365847286 0.0905531955471559421276896263002010 1.0949187715164152840457423355585064 GT 1 -149476274934328170744024803.3791620613900278916893610846689197 0.0304202193675770948690051123700147 0.0438302205442914469695319444310358 1.0448197881256906196469789265992274 GT 1 -16472096956057226392350420487676.0565885725604628233697801425983100 0.3565450922026639993856379743695047 0.0939407979520075217565994132244854 1.0986506306501788279957081429353218 GT 1 -380545141.5347086885521445818306599729144405 0.4100482777667199069837294836604407 0.0541243436758730563047652151185756 1.0556441600872883331344437769191729 GT 1 -44145402213562907126261275368429.3835214858941064399917805630350962 1.0748487081376430919743531321327115 0.0269937765834452032042661151008864 1.0273648007050199153960625039339849 GT 1 -77388962627997751010.1345252646252258120588871662947300 2.6394814600574068394325740416574034 0.0756587985166929737589698552019839 1.0817688097388500456831022209656511 LT 2 -353013405692240855524106668627846872269691.4261610640693996512827164595443021 0.8402190626071455722811558522570490 0.0459333940962968678107727876809276 1.0470217924618566001665616505370743 GT 1 -3055870084687483854757351023463750260.9761474247513213028813994352099869 0.3750554267191886121321467204655700 0.0728333599861774236143113878841771 1.0756219668814504920667828736680517 GT 1 -5413541609278546331322.0861189045025022246459550933302948 2.7435660306474992366924623824175546 0.0024218412195620533570353334249116 1.0024247786205794058655125249822054 GT 1 -33083905457075201918975805298401272513.5140908948708931662340509591069789 2.1022830435390553241339299349054903 0.0633578896424475476298201006762139 1.0654540223662409204360897652880753 GT 1 -49172235890982922557816918.1010316434940409775921637418028862 1.0448429824964401626200254657917560 0.0260526625486019072188640537208804 1.0263980451263998213982937145737625 GT 1 -9034204760111014444950835301.4339331918146541233434303272024351 0.4054253809052423465938003640280449 0.0056472299659057620277578803330890 1.0056632358567913335535170994278886 GT 1 -144761761577493859226027327585.6387351768725336963067981270960827 0.0736451134213931279983719590417246 0.0680847355708432040515435955161364 1.0705133864243042129415252770055766 GT 1 -6813250312263272360900248.5882511509374085486641116610343109 0.1838629108488236747579923331123983 0.0679823753323540356620915579439776 1.0704035538877458094590669659002187 GT 1 -116542629699469663141196850388373.3455394310410501446204485196368324 0.6708541787516343305287741485807012 0.0420811404052473933074111090139857 1.0429922023073565161788878099580430 GT 1 -7961090449275227152047397987304950.8762401207963571354149156925083256 1.9001046265962007687678158157995101 0.0785840571146722895422254468715167 1.0818437237373203546433960188969299 GT 1 -19721225517587543070662.8296582246378188979125959643171770 0.2025489625486600084137683343540183 0.0375343262142636929471275830776624 1.0382568770553940444496080327525417 GT 1 -868092236704.8341329466797914141346147556366626 0.2754152422827195227036759566400258 0.0534734945218791075625485229290894 1.0549563050501367688990779215508904 GT 1 -265447.7160358727942130469773748877885151 1.6558546446156022833953313948667172 0.0123128233895491243519744038205944 1.0123892542337873300067565137400852 GT 1 -13377031214445507606.7599202929812263773170416291131771 0.5723218487648519323994731723602618 0.0153940843498208941053797890570715 1.0155138034999949500621348878165283 GT 1 -770548936767452725743016826312383149703696.5479658579384871554032295451671222 1.0223421072837923450171229597091859 0.0664247210440531329801706546194568 1.0687336776277819106432652758479711 GT 1 -60334665071349219867189545856596.3071379305154865764090428556534738 1.0684273549948164540341464945234232 0.0082891902187703738709618366061135 1.0083237365961326990731814580496519 GT 1 -788901748786029749249379773778663.6634004476159001073670079434950687 1.3892561513633857479168344929934727 0.0567359998077859309333133740855094 1.0584090777435310039079480614158995 GT 1 -41162029269.8903126191647696146175371685573156 1.3336073052440587536431873860696018 0.0262120074746476591040580642232827 1.0265616658442138264547336053910565 GT 1 -8070105580876970451401325714.4460442431946771430251183290965021 0.5219669340529156556930554939274994 0.0753818723774020226902658616418237 1.0783744617121391220088488746916425 GT 1 -9471077952061900437982368973378332352861486.4808165944550126396874539632502730 0.7342559748706301229704936949039650 0.0467696556838818810615376546154198 1.0478987001096948280198932399811847 GT 1 -53385.6711902975060331220753105078380097 0.3155131102200005419646154446607710 0.0804373253787321585214839704940077 1.0838570756279595941351455832784081 GT 1 -27662269925846665245639587151683442.3068665631757544762090245233592796 0.4116743318436573255931730980911421 0.0041670497652484378225519415274779 1.0041757561120593417814817919930060 GT 1 -230907.3208648138730602632508201597961314 0.8574954641501345881535151459925127 0.0961289970254307064143868582578188 1.1010686245965698550098439021436357 GT 1 -660830554201413443309528299667106653973340.6423096046848515746973316715307141 0.0239321472457618429653724885490219 0.0731914006955937385874068498749508 1.0760082079770965017700330549837897 GT 1 -475158922985502949605.8556617213711985149180659052189014 0.1256736883385561772228296367533286 0.0472111940759421569732610406909154 1.0483620096204128769950225787605885 GT 1 -254530476.8354629062873070152016290341510990 0.5838345815808247592801772994155063 0.0243209256755685109440250488776466 1.0246215639318449395668608042747358 GT 1 -3035689.0669843607524490806113639339786048 0.0663851536954101908058831908850236 0.0917668445256140812706674059613309 1.0962541541861562220225780850751215 GT 1 -1161773949717171632768.1800785327743423208716513114392529 0.9839202591481285203283812376965247 0.0147497681478435875967285307022144 1.0148596275838784549165102710590023 GT 1 -159696123318679026.2520523858552593249201243068925957 0.2194745814179907465119461612509055 0.0589224725647055927457391445503358 1.0607297544426754205576256720174340 GT 1 -3887152.3259021015071020900316593394587884 1.1468591551045375831901070729331617 0.0497216565753544637427289709139327 1.0510003442230661813659207219369575 GT 1 -27.9299335244699581920436881155201628 0.5395469306339572875136645323543950 0.0243794200000839089025612048692493 1.0246815181520010166143499551303580 GT 1 -74695972308736239185.6082201217665700493386092653189778 0.1559161096000868247655807118360562 0.0268396033232829614345897331516301 1.0272063628211378407234708217508786 GT 1 -6440873932895597943647550373687227140.1664792615532346478220049454829793 3.5981159814223736156924269488628765 0.0480244659890511547896279686156427 1.0492159440893423476171185295223672 LT 1 -739567404295499988436163.4745723058321409440039096631065746 0.0315976602329931510289156946022747 0.0776954212996166108713366374550123 1.0808797643156366973168991423483902 GT 1 -6095426206236306819.8669426039062668391433963229389476 1.3512744669801101019672503046505665 0.0819033305366552487677832701032940 1.0854525894794670053107408627498724 GT 1 -69408259475406309813957.7955781912536188676526448380878680 1.5660887128659838245978925774052876 0.0848788041069561851125651991107209 1.0886987679500254564928499721829969 GT 1 -5637218737.9065700631225809774146048162899802 0.6183250243000483914458574453799834 0.0818779202590793261653586645815802 1.0854249127360631420177994743829981 GT 1 -3064087022.6423480801267445681194049575644061 1.3929539456926370598063142520070914 0.0904121650880570515974754043957699 1.0947637107426075735661358143585070 GT 1 -642164.8496385620765270014274447578262631 1.6578644122444993423704432262196853 0.0772897519150021759479605835414092 1.0804400178320179144231179113715109 GT 1 -218398251498217168249377322.9696665257205077395297444153452844 0.0476393843549842637319315147461037 0.0254632003420488686779340168948239 1.0257929981431483732076811212983734 GT 1 -2192311297998781324875.1353076587531539759507738867413338 2.4226651532285793063411433253921675 0.0523843208481379434001557939203126 1.0538062606631582790509561706465919 GT 1 -4558205962028574200189173405416.7094426228066700923431366159017687 2.1894411778857614229734693865520333 0.0821705670336952923911522769148564 1.0857437084940872005935452037334504 GT 1 -2227785013308126899276568118702493528244.1767768497768695092638970358926597 0.3681703887093028118314911846361167 0.0989039219330374928810546022894813 1.1041433921344118585950671544364506 GT 1 -534296287450551332749226873661898215802504.2276935424201954545722564744677371 0.7916830552562037922391314765223922 0.0454669524929174559256096616070184 1.0465330135690886867321178939712042 GT 1 -292522910108049.0597777721843238398067232179184669 0.5659410149902681004777749163787104 0.0322686025030437618464390408810799 1.0328007121354244385252024856644371 GT 1 -53297070.3631266670137803797684026986807162 1.2866382177238955786828310753099373 0.0656352946269640598082079239947458 1.0678884401247455566854890310413019 GT 1 -4044308336175.9617409192833304780720130157705651 2.4147148724292993374125738350765011 0.0132135468034365923625479483660660 1.0133016224343764317474802231740602 GT 1 -341073475310120546688873768727857.2106976617433502644644280949599087 1.1158795009405261584171942783645018 0.0493828069178309752831819244448671 1.0506438284076466148749949130042528 GT 1 -60926974990458915299190449.9030225341606427548700226258226026 1.5917038133263709737442517397975094 0.0169815183008893702745494812769638 1.0171273576901356848845847053172301 GT 1 -206433742313643266171553.4148108360945500666911792126048776 0.0666415135724488708228752941201921 0.0417010833572384476288005264253095 1.0425955281321083385928336032413355 GT 1 -3232246372720676864.3763243412860147431642483971972997 0.1742492209243799190010793993143636 0.0893918762857200528433482970364310 1.0936426348448605556685636826632927 GT 1 -1673178380309.6904428734341731856388743378541623 0.1376091267866947906791794617781679 0.0390993708431926827183849143945891 1.0398842789412904396266018140892152 GT 1 -12326236597574636754064059897492160324791199.3573705224944076467336073364727487 0.0420509583593834208491240997594195 0.0853726554140199105658428365233266 1.0892385703415893176259635213894823 GT 1 -1368705292124091.7656013989837638602319021725589818 0.0478586180763829548215505740946708 0.0652210008531632497734869414322361 1.0674451421807902614788629505399270 GT 1 -2472217576067386073546435749749983271.7778497387218990659956960256393293 0.7405307250709448057996595058997825 0.0770866895698478518152517116725433 1.0802199704176502044340399862242346 GT 1 -77407192405243234165996119593799.1063325616591037844817038841618078 0.5229100500586075467719988123996569 0.0163614327068370715714116804163450 1.0164967590660203523497074406193363 GT 1 -8003811464543424165400.6699916839866543873737956683589084 0.9974558453118402860776088078032892 0.0920931466979954447008587686935535 1.0966134901121482725796852129455325 GT 1 -12325912451092903741137725683165.4916297887714382205511775009367140 0.0378477723966062702523186404494717 0.0987440627837674810550211229326416 1.1039660026474152410439399576559470 GT 1 -101430663307492516017.7317355370513436560420849077735820 0.1384581420320283735582183145881700 0.0496564226414787201278109836057701 1.0509316993935100966478959941666091 GT 1 -6017779945074770167529080188284988.7103089399778437415879899536655324 0.3974471024131589085312336186344395 0.0567123384329412341466353541361492 1.0583839934849596033839052027576513 GT 1 -118819347786186091.9428230434424235969464464147660731 0.9782302319608834671020138468674259 0.0118426361265145781646884887146486 1.0119133187416207840609047467584388 GT 1 -1398454852576549257562642346397065.6250334593901593538816697679200074 0.8730562972385862338878190980441497 0.0669449253210487081599469715957664 1.0692910502103609761096776030111015 GT 1 -22190140.9500699916726931273067988199143011 0.6102498787950264860895194431204063 0.0585020420920480880379887504529523 1.0602830998644973604508461223787626 GT 1 -666359475983419807.5635560418208040264387216883334069 0.3600017458156955956583014090627837 0.0815599822592636182407482233865720 1.0850786810421522442024141258513023 GT 1 -139113952421570608683142651206898330.0544714702568963737816799342446996 0.1064615388326852890362910871354058 0.0532786574190668704252493268081507 1.0547504819153582883580520098183701 GT 1 -4022.3079568544635217734077588636953845 2.9480500293140651885669641062128776 0.0345310574921312420953030996958618 1.0351413448936396011528838670330650 GT 1 -150738149400022946889749012478719248560458.3044793673582200979392832625297084 0.2072512777171630622952369856612537 0.0317645894912422281133506965105785 1.0322800285977684389963605393107873 GT 1 -6016320024.1707818475570773491488269551423529 0.7344195210311687416272248447386165 0.0717400354036522955300117454731405 1.0744434511629071752987150395585715 GT 1 -73359385801998617.3638494360563297598077263963536083 0.3183687993747068925632395392796103 0.0526970015114132514619566886693555 1.0541362808057668063979826533155716 GT 1 -1137563401165476.0571211448166551627936084508824119 0.4852892737477873722635739083105042 0.0950143043467758039052188742072992 1.0998361413151651736795920598013254 GT 1 -109.8752522372692973449660169493188875 2.0724029113136450785440259588434012 0.0716264601046050358861137702843214 1.0743211057469549611098659674165851 GT 1 -14.0043174965493993234304172530796324 0.2005746277165178790016746976959126 0.0695126303979537729787130993235604 1.0720467767672960221569491788259231 GT 1 -200.3114372006123954434211933622829711 1.4149952389551306781747190168599724 0.0852168873955391954830917588676404 1.0890682772089083384872679706292913 GT 1 -363355982709362267750.1778702447460174986066066698141224 0.6425147819087396228728968829880891 0.0941585408630549829489173473819065 1.0988909781667510199108609463681865 GT 1 -1003143650147.0436924588595536746209832952997574 0.5770765877673781388685858998488493 0.0400816638745734805585562195535839 1.0409070646746321490416347172763412 GT 1 -95655390024592888097.8410023770421775313045544424932029 0.6376459938560898585515542426252170 0.0095373671057796844574312408401693 1.0095831390531667163827583763694721 GT 1 -51.6192229962729385134690738853407642 0.6887316684424447560149590539711550 0.0791846580533656131774792138556368 1.0824957601726118912131801937733238 GT 1 -92589.5768644237953969640983032126352352 4.0654936108657418751169190217726988 0.0296665886394192950633350208863225 1.0301155434917988177297888386424581 LT 1 -132464796124755640612138578.0400143393573961601918509455588435 0.4587724982029619466399379196267770 0.0930332142705485988146864416142907 1.0976494494609535563967322053419002 GT 1 -281639579548.0606471453402406335892755631290205 1.5102880519211336384923927207842062 0.0752873140730277296013669809947208 1.0782721995276084876699060088923156 GT 1 -10055918188175575980.0645908735160181594339631117297253 0.1341716465146835865222994986808338 0.0609529859191698551167408970035857 1.0628897327835512464662703671776364 GT 1 -2458336271374824943522742328608680136591194.1290188209345207925704167784369706 0.7307670676048569509642649942066690 0.0116127931325817450370224270508436 1.0116807482260136647638451925093082 GT 1 -1.3488590283819060128475294388399725 2.6669300981871151675622613054199528 0.0469158557118289153311947531182074 1.0480520851142233427971685576224550 GT 1 -7262630403122845507205316315.4187959069781469089880368733630654 0.9254557399089541610206488216971386 0.0482029596952936370485730605547184 1.0494034598768619402137228266737143 GT 1 -12431372298007946771143340564926873512072.8780698960749523940125985048432606 2.2642619330722633634094315450783043 0.0027482580277088195224904054447823 1.0027520414222216828909247817266644 GT 1 -163506775465500305570960640924628139823431.3570302486163493468597947918952541 3.5182002848902455207852453326237270 0.0031308500906802327014170195013710 1.0031357614556694502402005712092074 GT 1 -14212913097861945998677031939700846855.5798493220903950538940872132709928 2.2055859329969164749770117091701991 0.0257882356082960340728619385491916 1.0261265817313623628321740394842136 GT 1 -20722129214951481422610081368149.1621502632414094676408880486144293 1.0460966345247654924130704415839345 0.0662061341343434443662724386498954 1.0684995654691717934617518062424473 GT 1 -21133703910498174417550858583348479.7956919789283788314211448339984317 1.2347923527871382906635418518725451 0.0751866764178378005459667969254849 1.0781633741801715419482706872651438 GT 1 -90028526306119430407016912234953728003139.3022797006434652826289242448791314 1.7025403870086392689364448978030138 0.0361912638376375487520463964967540 1.0368624105273374109836381554084724 GT 1 -6180955658717421661.0785165694597129123566036542726924 0.8433155369147155059740478427955719 0.0591123893488565566444471471317496 1.0609315826072382895732404383790835 GT 1 -170963818302247695066.0870423865389817244228476728132818 0.0493712981134779163086304054175800 0.0082309753299695664465563459283830 1.0082650368424912625264545100249359 GT 1 -233469439508497253607219853.2598968525482697324773229600581792 2.3436875482577421370475528075994312 0.0571159554397827260904178271368902 1.0588119683206449819759526359248633 GT 1 -13043.8286536197366049290233143130862889 0.1767899746225494516940545279113072 0.0376069077921232550243108737269972 1.0383322920200410694188252063637601 GT 1 -4226413090564367937.4802760893997749542537150417344757 0.2207218036451097712514582161381161 0.0392305389563994312649166663472755 1.0400207936469928905709570079099999 GT 1 -56206671486330538893681241767793.8147685345857766192444122563087997 0.0583764781605620809449665499637813 0.0541033585692147774217190311036963 1.0556219744292320818576381289109677 GT 1 -473419.7214874965420492713472741074681433 0.6859840917686608535774728425045183 0.0238823136566957408771097605784389 1.0241721195684819980863660581032124 GT 1 -2163613980893280582377131778620703895293.9403297568868111041769264295328076 0.5941869130736902649940700367021618 0.0788718225637752863227479663720455 1.0821560803840555985443315394906377 GT 1 -30964345725601513346144709677.2582827354726122471565243687882557 1.7016027556258606827872560430397817 0.0385047159314303167158726546413673 1.0392656187302091533378785702502699 GT 1 -80257926.3085363745733666420412251911630738 1.6747338244428580132111674957383602 0.0921378988834276779015799358586651 1.0966627829314052519984493493670368 GT 1 -229211221995502633386.7664990303471886781504789691990982 0.1825983200562811725286493874758441 0.0850224712323353215822913769013749 1.0888557727320498731146462686555156 GT 1 -1040921069162955695446.2672725509988682573320009896299665 0.0472324410972033980921097569871283 0.0077232878374545000172757610208729 1.0077532668825847924099847794379895 GT 1 -25184960902690.1114021888449181354388697288951681 0.9241290171404772217693533628290166 0.0910829527336840245934090600271598 1.0955014461016094053227273018062290 GT 1 -28656790856368429612168788316.9315032928191880010697965794086141 0.6041494900307769477219930151617306 0.0806839549122379299640709539926412 1.0841253146720479293250374502270765 GT 1 -198.3641812614984940769919846107365201 0.7107882772687835370821819275375650 0.0458549610164322397245242771064875 1.0469395866120820787637608481538800 GT 1 -4.6559320976155383456475396386280263 3.0964774747017515120653724332922490 0.0849583466623394663103265509388220 1.0887856919693462510377199522623185 LT 1 -18495350107479284002318.0080929417618617142532505878497042 0.3154290808893737140354908338692316 0.0120391213884377206643100444434916 1.0121121785652349408628314072301819 GT 1 -3252359259542104152908518779039170992467.6068175031463603571013803380681999 1.3461649243633534181007604703057025 0.0002438170242029777121690789610012 1.0002438467524058828143969133751588 GT 1 -329936041276616002043742424064425.8053684731574922301236326701596145 1.6030655606515472423359365993484986 0.0697441168674157387237438305260791 1.0722955875264547383624326274255126 GT 1 -234338241063784633.9352655915268859695193535122678604 1.2427034841171898931339313290030067 0.0172482575123592958621873723198966 1.0173987416085866541087633233688084 GT 1 -9924366441053071.5826495753873361563107316678547464 1.4367307685433793841327064089317808 0.0098558636655902767010303977146656 1.0099047541940459697440680108537163 GT 1 -526411540131596779013832.0683442028721427973414498148085494 1.2884338178938206809670146612656486 0.0373870756729586316282736719892128 1.0381038957259703054910030655856613 GT 1 -1558416655326231107532877294083770093638.8679138170734510879731418420934293 0.8990505048737803679926849210263120 0.0235132744783539777011309634908505 1.0237941226936481782499867298678350 GT 1 -4.3669887727414980684954231920147896 0.7592506006110889186356987856792820 0.0381922715055310111884679966836292 1.0389407147222530983100577265670684 GT 1 -50.6543501550558684909985822531660517 0.2203039030461118962851173472297304 0.0422503687348369305841071791658413 1.0431688804025876805677992543445131 GT 1 -4973617191393683614466222609370271749912875.5600991618031284430043690893334860 1.1873714509774714161093095097768598 0.0834301017408786078364125027226008 1.0871169480975670198273542042874268 GT 1 -102065373929130028111078.9646783111294120550151184352150033 0.4072956422471767117843302678551263 0.0595660850976375261948321941493759 1.0614138986296871475591850691371619 GT 1 -1417029094693531903630066409808111.2050631458440960718434843289786540 5.0093467914274927325373398780901249 0.0442109662337766917364472255843856 1.0452180662600157302555086477647634 LT 1 -11326438017983373153.7597103896414780549547537165280975 0.4180651420567685592394990943135054 0.0267151125661938906830354678945984 1.0270784468110911382709455262936885 GT 1 -1096088758482222830627988.7650732889134167259193093536459327 0.6468888779186148772572811679582054 0.0800720864877529227077564793865748 1.0834599668869471806201989768723900 GT 1 -1080719253310.2976318602416917904753886700866463 0.4617085856507542954570798396391630 0.0623614282993243275135845490224159 1.0643907222463113688327586447760889 GT 1 -10776983942596377404286.5431142019113010041479112466740233 0.0311359906624570102970013742447559 0.0985277819434046958635159724564955 1.1037260542771988183518271507261639 GT 1 -15286877680467634936.7080703060669300323139228178421702 2.3902854746794208679125749963068816 0.0862659922374808591969174863807430 1.0942852123995416856501084313123075 GT 2 -352999722636975732829511469.6038438295166794067916356236312226 1.5532644635240225965852562589890396 0.0182786524216821038875801070642642 1.0184477709987329998856642866538739 GT 1 -285.8206545679499774388627136189511718 2.8782278991501611440215532449293268 0.0712493709265190818347840578614258 1.0739150056169052813697712371838122 LT 1 -9947820727979405.3337104371938171798432124258901675 0.3172488139365710927890791461291361 0.0922865680483940295393778775029057 1.0968265537716604069639002434331185 GT 1 -1772443467046087812341745314272164182398521.6925615900945948817283152136590092 1.4733104915761043359937566611741423 0.0561598855915689404532663492529792 1.0577984975114623006829482701560484 GT 1 -391241.7876928928266419647360654659104389 0.4079858873923809792791335810380427 0.0283583497210272228595903748003213 1.0287682150506284783428380343373015 GT 1 -3969389594351578605361236147.1326471710302466507032353181454483 1.7325483968374279463728831697980987 0.0603260171746313737336297908996834 1.0622222906579284798895412177689883 GT 1 -56965490077.3496060371681769718388378743734191 1.5036949602624638143685216927193178 0.0578620176926279734275378417662961 1.0596035370993299897676572563935400 GT 1 -38878046205678474320245654811076103.3858386562549789570956941775045224 0.2771356197248951760532339374624209 0.0281694853474169247537453140977310 1.0285738573668779860281310191589925 GT 1 -21730380467276816652016212037652680.1033741989603036245450375892543935 0.8067066069226980550083416717196794 0.0610343583873763285618897029418639 1.0629763908452109532132530494934255 GT 1 -223295238579026.2493114399642813251404973502878677 0.2376811915996760142652368527627151 0.0668063566204187999989447099224735 1.0691425504958870052061353842867539 GT 1 -59223058635.2934434482050564995116169916940563 3.0820553778171263877397137357623572 0.0333802097659360123617592537612954 1.0339500457128112762675013556242437 GT 1 -111888802015459060379437522152002073683.2100745343347523568644877781169225 0.8392465083876636575984298593842518 0.0679051490683570583693063155758237 1.0703206980890190395977866964272033 GT 1 -5797619384020814325.2902523826624270387953798471351255 2.0330842946858202500222705134372758 0.0981629957777428477107103387874638 1.1033214801019760498295567428830914 GT 1 -73485018231160528699023813514800959725.4633630912007573580178820185855240 0.0641164778135154686606345633469842 0.0167227469854522983504611223891734 1.0168641507753643594812382318980097 GT 1 -19784292722545871064322403.6592629455496229645652623030648474 4.1199955443174321940976382496972390 0.0775651757068240959842863630470814 1.0807385567360755100152343119669576 LT 1 -1705641534381380042037532329977226518322946.9741419289256369657116533775120765 0.0718530612635002880038077580607021 0.0478099110979288958304411555769987 1.0489905909063539612188632426557209 GT 1 -27521995863533416346954316437.9508816253820524481549040918359845 1.0545618714806900970816424252132711 0.0570137671209842033988059119747145 1.0587035957351909127640233237306340 GT 1 -10365718365441.7472967878744092744595583116625082 2.2027118427004115321409314383011471 0.0466274590690687117543475706222932 1.0477495378314069788753334941777132 GT 1 -2581326241607787809879229623441117.7272679618278619751075373113077367 1.8199573709607137050797620894245036 0.0515327646970361776435104634873126 1.0529080339011705296359543892936518 GT 1 -214112057.8333788802318975581023054789526050 0.9960345187769645676342732276293097 0.0189368017243327573118048411174438 1.0191183991924461903239743777392971 GT 1 -7348189535135691665127570453265842000.0820486898776793931725011662762060 2.8998097929498575241567349334113882 0.0469344375717190874709799307618964 1.0480715818618557939853260582422747 GT 1 -136.1180769033106025990838357979999444 0.0036813584749328618901745537778826 0.0003240938461107464610214615870683 1.0003241463758713112309885734513318 GT 1 -46670587562245551626698411263263678577917.9369237549383254801326343246072619 0.0945899111498946409627805722751935 0.0351852064434171969436326826673915 1.0358191198384376271052917602695272 GT 1 -68650637098101532790.4888349862167705398153146189101905 7.8710487938190828935209981213518360 0.0197044160212738558559745951601360 1.0199011364897503356824583040267941 LT 1 -10380.3411633360371504872922925496788215 0.4185005833478685331101478519761854 0.0627720056826570480295591841354689 1.0648287026309827410352626640225001 GT 1 -9200227438879284.5215614247907268909582848784785884 1.4025155840732867104462979519928077 0.0688346749508415175769260415017979 1.0713184395441071935118083942353876 GT 1 -43720190198253208.8252731532781602395605359754779938 2.6366056770596427956087586414608304 0.0765905940953573805168014802472774 1.0828572397967963788388129322380644 LT 2 -4663878302284225246401686745.8428892201333102067639622479880936 3.8842293173237974315846607566539007 0.0063495448299873441163569466832704 1.0063697889291353517515309521530442 GT 1 -59316918463.8951958080228336955465408658181072 0.1563627878452288853430462902162471 0.0701208881906173409487720665245040 1.0727006885856560038391226656696066 GT 1 -556689330320712661761918068862.5922957815421245402370405973259139 1.0650008338764964290445425600454297 0.0496152589163723723227609639791531 1.0508883857597694035999519095960852 GT 1 -358447643240434921.1709454453902780737324590170932409 3.3605072655036319246772329596471783 0.0036418370815815054787349408393728 1.0036484847148852691483187243586389 GT 1 -34766724254822533628893409252703915878931.2019376328679925084432500443354627 0.9640498698959141461962525642005562 0.0287360380173103863110760673152915 1.0291570021318505861929802177636409 GT 1 -6147716417589741412020.2075651305866937756054846764583445 0.3206307325515572595139649394982257 0.0488769082136784473353757449972141 1.0501117907575938997665278471680078 GT 1 -1600447570789651631668970784332572472957.5789148944822521088866797202348106 0.3910673408656500956502779713582795 0.0261969800472053949834371276608603 1.0265462340339967098803468948225626 GT 1 -373771996654701955.0269602970482997625702428732472846 2.6022348663148724427203108229822766 0.0429032560665779174123636466555622 1.0438508017989958645413951043372573 GT 1 -1025468749539.8179188039883498252080586213263542 0.1627099976736188668836089491631572 0.0833511545047683926476653032189393 1.0870308184565430149415585976763221 GT 1 -1236304550203811290687960168110359584742338.2630455603151703049714101701185980 0.7358379348623514164862197622880264 0.0459949020006275514890288678375375 1.0470862637332728373927422619047798 GT 1 -5742317708233698407246222.4357644457295578871787497612834628 0.4984727350275373498009214034188438 0.0205177238986773971252235861013715 1.0207311366042132913004267128573583 GT 1 -15428688974928125719131633.2064689198062126519018263524661917 3.7543116145990277444885504594814008 0.0976872115713756638882959836885719 1.1027940469372410962479534684529462 LT 1 -1.4178057430040254885025116091504892 0.3208488349241409213630855392383245 0.0581979220673846483210567295584883 1.0599601348334143815128217841917804 GT 1 -1727558674879860950466455729042932698423.4644697392675479658628337074648944 2.4876397044002074155469314291812770 0.0004993041814825980893792018377257 1.0004994288753239195130217719627934 GT 1 -1139384718005163078.1177861762381545898304331437890509 1.1921685983790821757749021447970911 0.0882609050277395971638920014416791 1.0924014099107920977353284899482189 GT 1 -1477221772175467946862.3616990932212784870217529096775476 0.5532728408260143090777152804153495 0.0094955172702028601024762915698395 1.0095408871295956707988718153811536 GT 1 -1639980.5860299500178944913138347479160850 2.9233815872275196062570785177273950 0.0553333962555418595292206928784247 1.0585433401539355616796136942598345 LT 2 -3071190186872.7591227099378999982316777703238872 0.2525824873526376441600676147698701 0.0632147692547939292640826295483002 1.0653012324663691709066433070705539 GT 1 -723900109949855622554.9898780906842984965358450769789255 0.4273106314540188374680431130371480 0.0345303738350407152401026999093822 1.0351406367850528046555758696410632 GT 1 -138198870979172520537.0420689064049495029390960974644781 2.1588196088948443591162365533826412 0.0071850036643281361118230361341362 1.0072109401134836688876679786627454 GT 1 -26097013.1406963380079567845814312452526091 2.8609082711717526352324452752832461 0.0971565902979424558710640293789152 1.1022061517852697622600769785972672 LT 1 -581827101523692333.5303973575554207291160452067921628 0.5719139399066349487030625459533918 0.0418640558133671266440529881220717 1.0427656069173074386493928807691765 GT 1 -394497838711994259850061291.7955372047310996766107100162433197 0.8557564245100729907538609559472557 0.0959741190210988214608643009222346 1.1008972895983346900256730657207505 GT 1 -225404570822886620674674785873849036203.4473822400755167469644992536613969 2.1759517994247876608435923010631863 0.0434426784883654986385004410669961 1.0444145635005644886915709170998058 GT 1 -4331234062.9645941187221910742552442981734841 0.2705836469562862569777910520609529 0.0289908768120465549409702059323585 1.0294194150727951298576940817939416 GT 1 -7296873728162225483322934572242568.4973608626156156981628874385441866 1.1715308265117625164869657273923648 0.0708130495999643613392211668197675 1.0734453220931999304714191277082310 GT 1 -3499912438431.2346614123566552375148045459020479 0.7971320509905809594799857002897380 0.0962570512548059512139207998153606 1.1012103077579192445636431558244099 GT 1 -788930674061063292776768.0442046844585063027938183922478516 0.7787633219382491904009748815737374 0.0669621490806235561355943004728227 1.0693095099122751394657562897862293 GT 1 -235450465765.9934912857025041219681978031308297 0.4225838332542515515267494854769605 0.0967717285622237067705461144424116 1.1017799652218425330869030239028169 GT 1 -201248041513.0146138050446001946220720307958241 0.1056129428411400706847153906177552 0.0226544287583864642980553041203642 1.0229149829878442050254500341872389 GT 1 -3824762417378467443258480.3347229312240345126234152040592698 0.5162536971324628069273502887089014 0.0964095258819836483003833640224858 1.1013790365885938664899596195278979 GT 1 -403642148716085781503.7115548442609192479578924988911335 1.2536270805331113996157315115196599 0.0067910937640875630172161896152672 1.0068142581753701532708943481018591 GT 1 -1319123036356210801034848230199062368682.9263920158312980313038708694929555 0.1955523073306882699345603415707614 0.0277942337817092855349279286826584 1.0281878032854180544034138973383957 GT 1 -20830085642.9335303907066194159274846563474244 5.7872548998637729319424904853215442 0.0841342597909061361310209978927100 1.0878854968748396669209824921821556 LT 1 -1537983020966302861911670279373400457.7416300766202358823985925506712898 0.9108181958595646793491501329348555 0.0061977747649482811570345401012297 1.0062170606988429503452739459038524 GT 1 -664551300133579043197.3910902319272961449874261505871260 0.3871657422519088440418707903813252 0.0004943803230011394669494701169820 1.0004945025692454436699609731010879 GT 1 -2374452774413293022345532160051553833.5572686712184026255436214159203415 0.3531583573511364732415691569977426 0.0416787332993778709527469490995978 1.0425722057669826599663345235791717 GT 1 -4405290307887743.9634002016976092132952755021334406 0.0039316091277686260456318766822697 0.0012689677698587257016293480444382 1.0012697735912389065305885821797362 GT 1 -23462333660569702322263684055135752.6845538186968979940092063740606388 0.9492297547108703502297044518850765 0.0585944198547215609044320170489900 1.0603812225360847771868790915053220 GT 1 -30236691094424236049614315582764.5548489294441194529142440871256706 0.4852931535711907218721770648469019 0.0434669546225591467819555291587593 1.0444399424733669362678285233951113 GT 1 -7387.0439309434657851750884892580703715 1.1934436242419822529055426320564861 0.0500294226509186904046703499097006 1.0513242660786617653533598359589378 GT 1 -9318723459933997240469509114778675880236.0865590739633536437121604596410113 1.3818862579301246259204754491349748 0.0410693821663890874281327990028965 1.0419365551689348590631397333916776 GT 1 -362649733843062045174995014856298.6516285810040873885799796645430719 0.2657537593522393630901531712116725 0.0082233956887422580977726569150625 1.0082573943248535533268779820877465 GT 1 -3301940610197797007536444748803.9526225195344546184315397345254516 1.3958474468804152316562969987456317 0.0854537607722438695774994414057067 1.0893272501246288366075402055153531 GT 1 -3358058395793686358947984158084860991609086.9187133639770520040604871314290819 0.1552871849372349535844518670823568 0.0843822002780015275870909136942354 1.0881562505924727280669969807793987 GT 1 -515.1494489642033008526666270517537259 1.0687907804532490394691060669723892 0.0227051477943590864463262409422203 1.0229668790147303734550071797662385 GT 1 -19243516144395153425159494.5937840007091740578115724522014975 0.0157789029970431226720599504304485 0.0587106775992824675517883470857913 1.0605047239537084813772609174865954 GT 1 -34802881169850951.9559695646604510953829782306702475 1.4312951372547243497647428949035968 0.0380453390818054521357401064365339 1.0387879594497517675786979356915283 GT 1 -26972175715286676142929707150591486.0844710251798310649090372051635130 0.0945503266024438247061301498495993 0.0081728268036417012419566025316899 1.0082064074436175723529555956691508 GT 1 -3783.0776763979350752436795289881526393 0.4354481049616701515616328087718205 0.0562509907838640331517411707691207 1.0578950282566605949017902776173866 GT 1 -9170809825778172641.4843908636317727583601358389579616 0.2718095564531391078133819000716820 0.0330122846188643430031190019365315 1.0335694874553121736642019210160225 GT 1 -22544869601720175783073437017173788.1488244653759991529759708397119497 0.5098187639256135005824865114304869 0.0057803841993409222881945730162848 1.0057971552801753296981414499067369 GT 1 -123596481893185.5075213271249276528178619749246761 1.4321428429988301130850474855079800 0.0853894408432552075258252822615353 1.0892569227157681208759624343459915 GT 1 -2203371511948202443917286663311448.2286695746082395029565201610748279 0.0024367327025629475221681741042437 0.0177779372668317184362511973229636 1.0179378630624141486215127211138322 GT 1 -3.1252417892024374387744697222050021 0.6820191662077437503301451793676686 0.0216529286927918664383447080476276 1.0218907932646224620429141648468720 GT 1 -191876997012282801601121376574598629784.5867165626875948960538052469191187 0.1788725004391202305947809477007149 0.0772634118178206018614082629586188 1.0804114717946401686672009783476804 GT 1 -8374180987893995925879089340496.2339636006875337882099831578033864 0.4621620083132073427505634984209909 0.0792352878169572346413916118391541 1.0825507453072421692271174871787321 GT 1 -937371043735.5111664897577667364418859758292183 0.1605750550188785383274222058954368 0.0457122071868673085323518535849792 1.0467899834115368604020437259458431 GT 1 -510287773661055123291735.0266813407192431028964303573103971 0.5291750779145576392196758775580090 0.0772177013459476801950837980278179 1.0803619350792932665624861114637462 GT 1 -250207817955031714869483151357589583191467.2235119731527647891616593006900593 1.0463392534005659246244580957947127 0.0272113070676343303720204242639401 1.0275883910569811014641757468337471 GT 1 -46124808080844507458742996083574442898344.3172388395789296375764996636557505 0.7435791100747066300567335565839306 0.0327160474205756234252300093909296 1.0332631838419038341370889927656942 GT 1 -230479.9497887560184509693307188602099118 1.6353404572149306771867498642296626 0.0141293400890544987377401111127243 1.0142301095448063721996952888921797 GT 1 -1913612948446487.7121642155643591117732617367775240 0.6037963438730265036271728301558244 0.0459254972348189328923099525748698 1.0470135154414181181942387528586791 GT 1 -801079730858366774318204373491555.4138523565310368799548637352124873 2.1477628698892664699289211983713490 0.0216987971861191346323422035661344 1.0219376780256112751501321103039791 GT 1 -1924511050559665435553262521.5818183265079876938379386192516008 0.3576314008584562758055013213356273 0.0889294512145826583937741682595912 1.0931349436828013604005940236145849 GT 1 -22454049333951612.2936271449486606358287602531265442 2.9747428009536444593883721315462172 0.0903460848480073850411479940983378 1.0946910648283673079447748177500463 LT 1 -1556918676990086760071699928508377057318099.6143763970206169915587753681045734 1.0180237570059047281327065544323472 0.0963615175308147464753526121831229 1.1013259073478242250515539460166538 GT 1 -263152.8050025946822999865805667554163474 1.3161769675359211738088472980548892 0.0705613570910919026607852741188784 1.0731744848559240835740602588608150 GT 1 -177.3990450686330198983049988297296405 0.8481268957522325944052678209101835 0.0918213296596651626617322918933323 1.0963141462356387056721875571478968 GT 1 -645322520688982.3293916101052972825884932692075977 0.9899235637292485884920230776645680 0.0535310856217824984776797809371567 1.0550171515786777939633691888989468 GT 1 -3736929994137455592315868669715561868.5254134880244885333534255056181005 3.2342732479811830281936475509033316 0.0896930088578940000237360695018179 1.0939733834585243926711552679310711 LT 1 -15042544592180722367896176192490375648427841.7290245934093512980964802382064556 0.8863973828972233387141943935808956 0.0630681943933717152726512078631433 1.0651447788942688892809173256922237 GT 1 -5872491918704956065129824982288349938990.1426805202798883961701909790066783 0.3385214085319366937307929924632903 0.0864554079005816903449435740486657 1.0904230897967172458880273317575455 GT 1 -130285331977144394629914365474072.2692045476901109407471680915947097 1.1811745902571399100687401790781576 0.0192990787356531640223998761209150 1.0194877371896398106839412250835661 GT 1 -24.4199739504046190961511038617399479 1.0407346773542549272879236552919044 0.0429344639784671816276657584552891 1.0438834091826214197848608443712639 GT 1 -51893985099164874777786507063011735805.2352692120638774540208526842404455 1.4639726349324870085983149430239952 0.0739100066603405172224003375316756 1.0767838640260872685134361561135739 GT 1 -224902369717990299275103877.1022476748317781505734007494890209 0.5207735101627605233936477927466952 0.0809093184418368705414337343414072 1.0843704873288505737036492423336834 GT 1 -297703632755467313798484454.7787541981136060090463819477994213 0.3391851155608535383057584068250796 0.0516862563996365083193037989154650 1.0530698783150934462620873502595351 GT 1 -68140422027403082800985721862774.4061878692349498794169590973660905 0.8932485073997289640111568050142894 0.0244839913654140433425908529683300 1.0247887083569711804506572378460589 GT 1 -218685998.8434599313280318607937810364664293 2.1636558096811773996054044280250175 0.0262476381485656592091423273374845 1.0265982562787502931473813723262120 GT 1 -45297562417003291524924019202139437449.6783938266473539384914317468411212 0.5647712689291447865816144681425040 0.0423019854381515306282740492954886 1.0432227755883313851821658058253228 GT 1 -1372353495443361496746245152065928397418.7477938849063013896788302995157908 0.2637174705566238235566390606536716 0.0600545123679318345969574203081444 1.0619333972804601502097691081037438 GT 1 -256301719449897765865336743537221145.6729687431947814713071823126706826 0.7233942335601472698872201929919810 0.0067927465217647107703960102954168 1.0068159222352088388081798108475914 GT 1 -234853880950410490.7003771253374498394404041698906767 1.1471045462738930563607708321871442 0.0928808813406369789580950444878083 1.0974815049001131554814868734322762 GT 1 -1383224830209228256199621184612510998772586.4860274880936451717766088139811895 0.0869631129533219651488045290198737 0.0411319589797512623205467248460467 1.0420018141710678369478827759907793 GT 1 -36591136148138140740.4806117221786984766235371623212370 0.2570202445414200121692891733426738 0.0173468359332373052190367457689182 1.0174990552087327880526656361576805 GT 1 -3530927105500734895506378444.6666594662736911119367577472112732 0.4528139915249384712805505499029709 0.0562735689972420896343505446724446 1.0579189525026645746628257434271966 GT 1 -1133548981.8098228846827858999242948205295511 1.1213819722662064865800606673579247 0.0399184742854391913509139085214145 1.0407370755066424544020877869077212 GT 1 -57238944428670889424873289.0755992668091085428744256777483505 0.1081955909938741400225332963367251 0.0063575541070713661022139518919651 1.0063778494189401323520169245777312 GT 1 -23483906584743935506248405725432.8550164020249344838263143207530689 0.0575521076329840986274546037838227 0.0724380867814636646389582715196478 1.0751957339321500178110881435675390 GT 1 -131.0247462705274117877321696256422096 0.0250157179826331937602995373487930 0.0922075764380926833877121642262707 1.0967395349277263024062086381645720 GT 1 -4314336449995.9842844254693811287974726822024117 4.6906332292624255528559785370026559 0.0786367196198129534016050536590570 1.0819008792603370283869439135908148 LT 1 -17146673603464024112809.0698565840585920523283137399114047 0.0439186864332721643426356311248609 0.0631261747581348811046422513852490 1.0652066640373457788056037483104041 GT 1 -7164356.2350773825355045351368526284250826 0.3203068990909176962842070655342052 0.0788536201279993850513511169490083 1.0821363195555685684209295357183740 GT 1 -76828376.9890619045560500361819930094331875 0.4023357778642919833874372411367263 0.0189103770563032013415571726469280 1.0190914648295918922815132142193789 GT 1 -2830883301311243965485227324768671294.7947183111909240057329048236342658 0.0729363983190518763759829738241569 0.0598015956671027877311823953736065 1.0616643575506442803161662747574634 GT 1 -21185001258791985843713314926085067764.2927917608918093689759448861750382 0.7210670875288704809994246243356003 0.0254716714842612206320175578413790 1.0258016906615152098366365876368549 GT 1 -8603135408891901302.7953392404742628558273307383202703 0.6762739049972058431539966186947400 0.0174005719994178151470229752095162 1.0175537413762115182689534777501490 GT 1 -794167362.6351932086572553350936793666452914 0.7843159174711651200036092279171197 0.0383043411978593464041902626817927 1.0390572413612965104897611455172288 GT 1 -3727397.1866970426479172243587710205238248 1.3304698217287355868944653364383012 0.0903901441563872309526716163657792 1.0947395012443405101651960597057333 GT 1 -125278557817463644668107237.9129183366615613293689635423204012 3.3567412396032745628738029698646975 0.0678370139862191164069847814602471 1.0702476018886780842145699699800087 LT 1 -268378178532086056871477370875680059010.9909352668199144666907080503161609 1.0437465095895366849375477041302614 0.0364592156845105868213653263241444 1.0371404626873140311442676848716152 GT 1 -9214.9528898480194108238287892743779734 0.3474534954932974601313067621793755 0.0892102754510711707945468497572052 1.0934432266426121492522931219283401 GT 1 -89502629275115202072596915472143722.6573393055670398309618158944900664 1.4367404560524515390927263069320525 0.0521267870635711053220485096030746 1.0535345272995638565880564660528209 GT 1 -551.9603057384183794260076157079496832 1.1921540342928656129683038228968347 0.0707814334081517486041325951113914 1.0734112970200642904015666802365063 GT 1 -3805488436191227839523387470423007653578.3611781399621834131317309264467965 0.9846240951192838155082917528281405 0.0241654726757319551590827093351060 1.0244622486188140438842000306554343 GT 1 -126521.2732408446135917315632286089494786 0.9344851837243069477107449150195044 0.0777187837538104482864920892460182 1.0809050951560444359052552397018286 GT 1 -220524615693.5882771754737598326463401849744304 0.1469095993349608303380399093086887 0.0229118584750888429637560881921451 1.0231784145041034117205786575990735 GT 1 -2572129691078923729249624912397.8368433834191135000613615383096706 1.5308954667116216471125113152666296 0.0995581967205999969985336231752789 1.1048697435734824357664826911214443 GT 1 -2778916469737205344362053457826982.5273142798934243245092016225903915 1.5188434362536125449495530011873401 0.0389048545870854168144501821398516 1.0396818682395136110467545530141848 GT 1 -46457044416614449154182935146708792.3922254788395646933190486905803216 1.1616810188745511407948079916344269 0.0342950903968632354203131618939913 1.0348969680384078500214887772625295 GT 1 -36074420406217048848563413075265756537850.6305977057047867682123614065777833 0.1088539339893243515869022750472051 0.0775542571947831773119623162695052 1.0807267201844463509941718698219558 GT 1 -1140420746075241885114624770239.6556706282297565951858483993809917 0.1809940621253240252223563593909289 0.0257421072982064580460192057759805 1.0260792334855939348261151813078592 GT 1 -231270099283285166155.5354318543152132491449672488297171 2.5377770148222504138211834827463623 0.0250628956137519887046364422768958 1.0253823183868380617522005269596828 GT 1 -5874678842987938831649101.9572175998847934734182146360718346 0.2735690420405761019625664612999492 0.0228704133267786986503700072437427 1.0231359984030535331447435479466168 GT 1 -295131650794727623530421643592.2208688422288552109869952814039604 2.0831330329653094008463223370486527 0.0120631087859576171774251745118401 1.0121364585638131993826923604345925 GT 1 -120525584409151426693.3095094712582254552197563769499257 0.7008310580688013616559489584924781 0.0753364989993906850644575851105040 1.0783253903567347825577411325904780 GT 1 -23051570398668004934156245260775552060460214.5851638192792325560294578964050567 0.0446683063790253312268184233044843 0.0980823922281437597656883428464489 1.1032321070252650996934466584217656 GT 1 -737998166366787633725.9501376738605649434531847067039896 0.1625414858353911056214775689101717 0.0857814073215962180693980544085649 1.0896855756426415344028750169052385 GT 1 -93874242207153.7060844181328931233125753612253829 5.4331586890756808972172577396367680 0.0449942036779885465803252967104995 1.0460378690726934123632559939640757 LT 1 -29735811509784039225343252.6396081427863985332922193978339383 1.0622311867246095439196878932961346 0.0274546296414793543130384872477753 1.0278385512528112503338473538891222 GT 1 -10981079903.7012873636533259948282872625597199 0.3667771744379972194598385870638351 0.0113036860612985800143352083927835 1.0113680582758433137984335580341040 GT 1 -223767116.7776241672538557561566391496757178 0.4545643958988745778941733779253996 0.0844860323130984822754791625900055 1.0882696580894713345716707771417850 GT 1 -83022252332140814798470.2387448084161046681029304215235149 0.4083977107951792760617811806083560 0.0165321630839027166436608022259266 1.0166703443658587486425094300167866 GT 1 -1729593148860173017583603052795.8042992876800539227966709354048783 0.3876950470434502161496024483167375 0.0998940223676562390967137157474541 1.1052427696653313566130769644817915 GT 1 -7060309922831185136879234799539989.9070738867290730797292994724882418 0.3478663957096566490505554445263927 0.0728459766381489741131556765775222 1.0756355747241725565128804898473856 GT 1 -1750226311841943257046157.9123139324331242314264287980694541 1.0566150833754380738819644634131746 0.0110035215401761078329511746263342 1.0110645080737279820519987433169186 GT 1 -2728305693323074780.7451799001441509003718908163370526 0.3939177409394776816019569256795548 0.0911727047515268967097326716071784 1.0956001970819498417803313496434848 GT 1 -17616995622086143560.5687013419922571504416422009950743 0.0640372070482822589182497936390499 0.0416806122147696466368131557386179 1.0425741664009568780635753025004015 GT 1 -80333602075105904248583171071022495860.8633211434079764397441086753932042 0.5574840015295921138006309384326856 0.0062028263883701883340442941708844 1.0062221438392633482322878988914915 GT 1 -21780820009182760750570985.0438059451720692576390201089806719 0.5369187559573629786461008096956368 0.0503318606403740464570608507466847 1.0516426824063039808494905268889997 GT 1 -7146405700525.7455638586581185208111838980158965 0.7039194147009182448106002079168902 0.0059568355433540170184895370076714 1.0059746482617152243924067961354139 GT 1 -22620106971.0251526362598277167346561213541645 2.1688692878496667172448301972965175 0.0603029237915818629548027103435323 1.0621977150075377095505127287738362 GT 1 -134.4312780038266442501852675636073044 1.8283663278749082370702174859315141 0.0388982653430162287142221525494428 1.0396750122882450039512334418970006 GT 1 -5494910686518771594839125379292.5121881692995634354294624959665918 0.6096801925011984748855955311031225 0.0975803764173656683643988612970924 1.1026756524833888166767137881849232 GT 1 -28493097711229352.3945673203493663398279731478462716 0.0925730277438852985576607551335198 0.0535492780974490504491093443331420 1.0550363731825096997915245827565662 GT 1 -26710842865000795145104671.6918325795183064831218639814898214 0.6359663030233655951137869168463198 0.0516147809841340078045454705365679 1.0529945100917273680460771932505087 GT 1 -37175208121001366915707379112804284500222.4136277327356376710919639213946975 0.7760579050084226947919609425254136 0.0047442564455048495089943924628060 1.0047555461517759976533696194958760 GT 1 -381135709770680323126450.3293245391708540557239372634755138 2.0804967005332676667561943517857479 0.0852703242392502774627598862291828 1.0891266936835742820164689472344910 GT 1 -269968.5735366307864954269479320690644903 0.8361082500727581347330102012010833 0.0676105902255944095117588723841950 1.0700047299133459094235680125424228 GT 1 -50301842465515643069915185532.4608065013420134225927774255890253 2.6546196061518855645457278374760629 0.0173800345574566570690317842455510 1.0175328404609952039356206320945365 GT 1 -245.3487181920174858049574021223835918 0.1850877140994840419814549193725508 0.0005952861151495091891867987046730 1.0005954633682766617466641354521443 GT 1 -1719632951670781.2254707444438622876132865486289365 0.4891634959206068821234294644599144 0.0381686315195011995843805244663544 1.0389161363217951570023285132581818 GT 1 -193242833897888341606486529.6583307718059826584976249576509408 0.6638091557307208108143312568016798 0.0185612194749837139617074276911006 1.0187356405934827072766304516391193 GT 1 -1590629028859050863135873.0974340062519814811123926593381727 0.3820137515543143372710542076597961 0.0964144241788529945485648189153028 1.1013844575290379622817846078358675 GT 1 -2520840100.1429898442565264058046250415846656 0.0028100874255168174715680105700586 0.0088250418533532469109546541559746 1.0088642131644697932099776828214441 GT 1 -769523296564895.1279009717313093701837103685239489 0.0251683585982664836662979686810187 0.0106791056121322585401305288310164 1.0107365365001024002722839288671491 GT 1 -1934552.8135538635007879876267796614537311 2.2337291831561472543114982371684357 0.0427253275465594751924004383455282 1.0436649146519065021642617640930098 GT 1 -10099781655860.5837740609618688556885833617389668 0.5009471784247678414246269156334974 0.0921664585739180484986850322396277 1.0966942416074339411084860010852468 GT 1 -8798121778610870.5206677676981192213282735316855307 0.1754946177054452630005335940309835 0.0264747846499638401126409865322320 1.0268315527590136472998257340420762 GT 1 -25095671595060483092535559892180995544.8908978507905526153448435568436997 2.2628835705180902456338395733783830 0.0343690291036574179910684330122946 1.0349735354626211704102530922299247 GT 1 -3546600419378886192567999997826424580593.0871060274697355889584945220136158 0.4602224146410689831650554472137674 0.0976952648781713681618258224070316 1.1028029721601103870678559473602297 GT 1 -1221409508630259051206070129637813476.9615406872990970251212132983641267 0.6483040262527029091047489015908222 0.0758265386064947167411319870251432 1.0788554961784455906252019816525702 GT 1 -159534522083.1462159414188096164048559274404896 0.3916156629217541425958068764325062 0.0160408227879533441333301573428788 1.0161708693635986225890889369137265 GT 1 -4019220828925616783456462787.7996845942160211264918302567942752 1.4108616618437338239354848293837065 0.0311388530034882489124818271715547 1.0316339725123408273519034306967648 GT 1 -9113292.9497974837812005673418267406754771 0.6542988371224481503312224201617858 0.0388339867998377480000219010209489 1.0396081344630574427091555066248687 GT 1 -7258422874665545459926120764358005421672.0996524934650158846301810941928668 0.9789718526409215741277955601226216 0.0340137150230870683744543392440634 1.0346056426168749561713829161006080 GT 1 -19667127518669.1554707946549738456240557117713747 1.1048282375648851649249192503366778 0.0688709771728347032291697208843982 1.0713574261007051676170857592289482 GT 1 -17126470097252533169120295824.3808309212039437029960919965852934 0.5076894952336176565460789253062336 0.0953791877087317828681149581412294 1.1002394150272115757199071828172535 GT 1 -93138961169801716269367590833140845570235.7802572390639302812905315282434627 0.1737061931225439788959674697007008 0.0463502941991868201210782285076971 1.0474588596578214778751922165531228 GT 1 -69677007806681280.3362035057393830913697013587482107 2.2165967701358119321680019984356140 0.0926517893454788986110713354005234 1.0972289878195636329323081682303122 GT 1 -65502490210330768008936567628139.8723331363614186569740170250260074 0.5017523679683272660279316242650532 0.0027469722985420751284855707601919 1.0027507521506327712383277379760326 GT 1 -224575901918381866.7836706975313710027976488254995017 0.4756417823563640887211960827663345 0.0229399016645771269787743063704820 1.0232071156936223945508839168565793 GT 1 -14807491057311939281014212784.2941849914407112939857130709131012 1.3852292804733248690483328966913174 0.0025830454067865505445424572340528 1.0025863872245250503238934151378839 GT 1 -17150667250.7036665341934266284675995354815185 0.1169542503621615252351046990219795 0.0369361296934458135068238974618598 1.0376355450774995944504050554858220 GT 1 -30613359422032.2356130221919342665102115139803330 1.2817190511840109148757961272662927 0.0741914413734092517325488126847941 1.0770878058537176371186703536788614 GT 1 -26886515647914.3318102756947161557803529892458789 0.6936898534039381251514107676878282 0.0476541904314638567396812089271738 1.0488270648032890679128338079826895 GT 1 -112679940334070472.8004448211619223582361157389815834 1.8464881419327057656545537396490821 0.0248997317818134124139150402583801 1.0252149740737376115319763879351449 GT 1 -15708288218157867819224.7757787388465510102479653352526206 0.5408754230913005885895255770123862 0.0634354067409246043787396030208391 1.0655367864289272667699569470112292 GT 1 -11240993488171646934484689776761885979685.2695519551217508450900472245720953 2.8763335766902021919993260604283809 0.0233524989241283106363232784429870 1.0236294893034803262443896634624380 GT 1 -1970.7948585335974053534073316009798344 5.9388855178791316093421568040288230 0.0374092123498142931130120208056059 1.0381268924371431737421199314720386 LT 1 -224401350934961450673252056872312432860976.4301564573123856779016908313019445 1.6605117693551693440164665339677511 0.0876309738968596925639299847519572 1.0917107368649971724945068069431388 GT 1 -139209398722993968546977263465098880008.0599403526099171813862050796005839 0.9271826040720480049024861351897352 0.0816656354996108941748154907191141 1.0851937231959249770687708376345149 GT 1 -9037743279876919774924861346097443003.9109384010394091141177345866692658 0.6436030702708289056850655338464330 0.0752053187529552952988245100282398 1.0781835323272702267493184886339784 GT 1 -352831191207981513895521862.8338528365214599679539590533806509 0.1688647271077301722340912532594603 0.0684361182836643035400420125843419 1.0708905118863331200572878961559214 GT 1 -4116136380.7480133106192709064300179527366564 0.1850641650617465892694364409985407 0.0150858309699180869436120485518483 1.0152007796473137625212678531676053 GT 1 -55.7798384391066006574089894283897196 0.2096563093333800529775839510308729 0.0017703313361815782292658110142449 1.0017719002246098352865139248010481 GT 1 -92305890777549532726243929385293871712816.1949409153578226906014265659057411 3.6210259976157592983542192310971640 0.0146332110754125322898810546880273 1.0147413325815131196372841455146427 GT 1 -417562020465.3847330773007782106529870193134348 1.5410432556227377020494666007947167 0.0147438018912074321002554085058209 1.0148535720272505154014148561676080 GT 1 -1827870125.8266537162542501174145555906761366 0.7946091209485449787581015655793078 0.0331398717382321807812893047204063 1.0337014390149680925442503610092016 GT 1 -67517084342102399978504288.2559389345133310511967618110768690 0.0918319440880674858595323246016536 0.0998972716064180736224478456055781 1.1052463795120685284976973983993158 GT 1 -40740210525323383265478024423373514596072.0678385660841585112618789600908362 0.2144938776922785612560701645338899 0.0081767590064218476877110030518461 1.0082103720562852307220224642289109 GT 1 -68537817734116403.4101729513433084867635040890070249 1.3990345358862919886079371210922240 0.0212047381311277970208211068972780 1.0214327881804736426024535362084078 GT 1 -887907.3883504971691856156615960058228365 0.8544091328968132654654365648858913 0.0328282744910024793417583170143737 1.0333792134535656158753498771936465 GT 1 -2965270246467407164097.6684338894686643626906624079190111 0.4880414203753668920062621035452649 0.0136090451798744966855109538237250 1.0137024970644299267759527951792966 GT 1 -8041997332195431834535763039453.8963927314802210541174112031449050 0.0323815723656168336133289185982263 0.0572377193284949765490188986247719 1.0589411164936105898333435017451255 GT 1 -943730937303348647130787351088359318.6245207435328728320428707801058588 0.1266162950799872172161773817901357 0.0980832770270775710755118098829010 1.1032330880454383281953511174682366 GT 1 -6760725090258730146200425811471.4327551108019043604762458707195824 4.0163413824676398830021833059848463 0.0166247477252248798383277245737184 1.0167644897930149487723510557516026 GT 1 -1223995589461210980370351886412320067967.7339074472875930404500292329338259 2.0913804858052119500357402596360976 0.0697988107070322265568556256350253 1.0723543836582686668722967561355405 GT 1 -456299545922637900525417628625887975215.3540784129854157604630822984329007 1.4664221637265399980860197456050048 0.0205579215746815773708508534669696 1.0207721771639642939115944092968782 GT 1 -123289536037811587828152249745313471.8447683362331969197260224828079990 0.9159897813917279498761305064849379 0.0121521554794663916736533249523995 1.0122265966157563519117807909151587 GT 1 -44398095063176756542107673052.6886693100124464693171012019193042 0.9205635372113106337023802236231490 0.0851731908887064447549572225825554 1.0890205112820597547925466334870050 GT 1 -12626765965747782187.7708481600668753361513168922642600 0.2677087924211899914720674556478952 0.0542914130218039131148382041242973 1.0558208049784232005342715185876698 GT 1 -167616129537561968342628294908144958107.8952521770786634892299084262519021 0.0093646232009965165109187725516667 0.0078087626350776574968616142530201 1.0078394106751276426139212621998163 GT 1 -213586072932497377956673191861376387442.7352863263035406428290585493953695 2.0165894816733377239785433170890712 0.0333180410032473884433790490431027 1.0338857321489976738681004712819207 GT 1 -61.5765116769390541794601095148899252 2.6310397891033133788643193323931256 0.0148700088228538668084989518639578 1.0149816757792005487713693534115458 GT 1 -1491148609871641844030263777632121182458.1243606132691342070414166666228436 1.5629577956167707365127740404411090 0.0954041394778238601451237782777852 1.1002669979800647104500314754935743 GT 1 -212444840948296657728025433997735948752.9276106344851970473646842891833150 1.1373689878193316402728918836877161 0.0963774291143961200461401522747742 1.1013435158538585340259596521121219 GT 1 -20714758.1207159410993422868889754364242038 1.3503251545654563127399646818508072 0.0377719000286920141525343016620674 1.0385037462653163462110767363840883 GT 1 -1104818789434.8610063430291402800704836552543263 0.4412026533635536184850057586273877 0.0971022947975001530519936913377795 1.1021460152573804524177878189784412 GT 1 -19634491534451.5203766632928328926899069761675888 1.2016645457612760752937788194901476 0.0421680168089770893704489590064999 1.0430828992830268165049472942478154 GT 1 -35285131851049005133992216.7226503857032208347096745636069469 0.7926853123793643786780123409660914 0.0493472220966360321194436413727552 1.0506063957213452026364996509368867 GT 1 -198366332390.9130290886576637749848586449481815 0.5419278596339794646227908305686888 0.0636146000127095870253222982093811 1.0657281351280146803049054291348212 GT 1 -1232823108103554951118697.6483488938006333257180853206143761 0.2558505018154041998738607923249416 0.0463277199965469929285627691697945 1.0474351885600111495082854994425665 GT 1 -3517945366.2128611006824762443953720645769023 0.3268663507970600174932442610778909 0.0478354343567681700003622514766968 1.0490173960592490731030852251769337 GT 1 -275006320.9148931005373747238603240802725944 0.9434788558221282721261542496631737 0.0700857796638616981983906459744075 1.0726629332865558496853322439056004 GT 1 -3836107014181415.9139112413145929607429009205971587 0.4470569924759145909697127956041499 0.0072084103298516263386645115986280 1.0072345164510014230928255979292179 GT 1 -1070366190.1828852845996015437338965161626773 1.0997295202566842366957241549856368 0.0411169687149799553766194212866019 1.0419861810005400343893481771121510 GT 1 -36120981765782237.1042634418859028643509457862814989 0.0471266171458698578104009881325949 0.0239329190231589976862034062587947 1.0242239644218193799575043227831216 GT 1 -21411454304759575502278693958720434867.6093476749948523090062053844005012 3.6432675246690456219050288570336015 0.0245936654646975930820838751035958 1.0249011414323142860201324647188323 GT 1 -117066873.4647761767497777768932264055759611 1.6824115170050364233899113355667175 0.0457317504147828599334600307294359 1.0468104630070866728583605202747983 GT 1 -147.1689280764713483173405940714265213 1.1173114034250850291553325988923089 0.0717136982935966220126363527730924 1.0744150790070008323727384506720118 GT 1 -66275401882502718465797874688.2609175853966325360156520978481237 0.1510034285554945475418214562979638 0.0046121437539180010303230761280476 1.0046228125054376481654445871569221 GT 1 -15.8120002877531805954175504593390268 0.0724510351259057962498957954194291 0.0703734429049247599254464468531978 1.0729723249889041180984417883317292 GT 1 -638399375721159636.9939549403871834683520298451713483 0.1502654541806381693263813208232175 0.0939766355270146122328717580666849 1.0986901846701488644789857600233557 GT 1 -578199375346390191813684006609694680294178.6732268420221454937333712205478653 0.9163534937053471280202265832203782 0.0437047091768792987595585002204696 1.0446885320106975824896156428410924 GT 1 -136860184313637790650.7817162798192871865438150182326195 0.2822874627709055747154781811738950 0.0748963283389891723060740364777378 1.0778494702785593527233139906731136 GT 1 -2686561495333645125948.4591072159063275641381988735784183 1.0016713731132446092353426691829754 0.0025712662192214497677332223972506 1.0025745776017217557510299126957294 GT 1 -22632155.5490129403063984003261678010086201 0.5237065710791711251427141174633345 0.0360363424058095142521683497604063 1.0367016846733275904129506451954425 GT 1 -435183441031184997598008596922463741.6846588674300606892888375584927305 1.8665486073549420524315848285982987 0.0587823130740244524640945095611616 1.0605808304164431764563055528923735 GT 1 -2084713172439328394347395.8773861360096203353214456845756737 0.0457386336817770855044770811815463 0.0469205931051359662584695642672300 1.0480570557195044273933317634117281 GT 1 -21063938436852079570426894108412594930796712.3679376563644740572030951575754674 1.8418986476425240438671668649642185 0.0673702766638793022368817338652220 1.0697470236423713140918458041129393 GT 1 -754.7289465493662138865200367739918627 0.3416733833384634804640052040683258 0.0143937686598794661502604861330007 1.0144983638404404068222008237080769 GT 1 -34903801909222685459946.6743858026693363580280265310031895 4.1579282875640252755224225003434393 0.0950940792311970457149259714472676 1.0999242956375003539574733496624906 LT 1 -5189189539989751443239789235690358.5742657398818684939158177342686115 0.8504547441734226756515635460014419 0.0642346328129499936353137661070044 1.0663905100112573232948260167097288 GT 1 -22614377197577944534006422721873696807382.3848271528999731375547527170045145 1.6648725337445290203846584424592837 0.0683194468391163524571168288522705 1.0707652771693882912074606911234967 GT 1 -96835790558356948162786920.2274499464689827457034132495171075 4.1535908753027332399434545346745376 0.0815873649418515472120172631238446 1.0851084958262049915131257289577480 LT 1 -308439139864510243.5114423406986125063539776272629104 0.9844930741904488047096321459610873 0.0497627721065920016973258237406602 1.0510436119887866565765380507138327 GT 1 -1581267295735389625.4913033389372095319601438736027711 0.9611447090940602086085108035020790 0.0028328520815250646237994940735663 1.0028368722010472969759212946920567 GT 1 -56496146.5260197394833352553138706123908323 0.0916726165305496404210760937361191 0.0453256382578268937718035437907294 1.0463849791180761633175361116643188 GT 1 -11715184708440843926249839861197645.7005479866891534057885170196796264 0.7992271334962089740837300519337582 0.0464414598409536393924609783986903 1.0475544607984199153185592408306067 GT 1 -64970234294169.4947646967251834241764029099976928 0.3519848503112878248829041108483354 0.0135753543306765976344301342261844 1.0136683419723951560720151285952076 GT 1 -974414987565728941745246717325866.9515814237619326982397855922206415 0.7587579257299210420781916995785614 0.0601855236674721952389861199620449 1.0620727888009351093604812308250484 GT 1 -353807521235147610.9962539295171296093320950752664944 0.1292978517794125542739917174477448 0.0648606212760566124068009309610269 1.0670596926490531270228886261351331 GT 1 -11795.9453874996280943715402543353741772 0.6529132464954018917179916215325488 0.0013579426360068871340136937322980 1.0013588654756450324344990711406895 GT 1 -1214590378.9120369398938320188470735982969570 0.7084684343950731554995338787177701 0.0815958471512970677371018676306574 1.0851177315970248420214899186562953 GT 1 -70284853519731387387340055716672.7033172872049059649906368626289281 0.0328202287284219441660418642079187 0.0469583891467445407220285618491128 1.0480967132661781218517267439477815 GT 1 -23279243872838.4046056146962015272906789747479962 0.4359482070164573651827811430772020 0.0574822495780679211769512636664954 1.0592005264983963468765405350310768 GT 1 -833890426.9099406977977382318828565553132043 1.1230130282758635736367287948819889 0.0598058899948818713381492710741747 1.0616689250308340245021233173188370 GT 1 -6174172910686016743019.0500789035508571202117549640084270 0.0213107992773387370729681719909230 0.0482431496879165241034853164594751 1.0494456861493378262992263602737569 GT 1 -13.5698104209880977623448655233533586 0.3880937805101711925597580022329812 0.0762884990726472151929248525869217 1.0793554845274995547584884733943560 GT 1 -48564768012082021285308714569234.7441444829628716780457061090929736 0.8541835334675913575478414843777624 0.0043151268688042393758069042978348 1.0043244638987447873167690010586482 GT 1 -779042690226592325080829893358876101468.8865482392175083528711733862395505 2.8685192514276737096724902665151225 0.0822957156874522149294255020812461 1.0858800706352701778638321563153181 LT 1 -2670346123643144038829291.3873433657657771852524203827536716 1.2925752208254080461891067735120379 0.0717162379089222176177451080797901 1.0744178148211509351572024526724632 GT 1 -383873970767767773229.7421653641636393133824910421015219 2.2209952840419984274285336527394898 0.0658006616500427613264642999889216 1.0680654391674767286813911219026468 GT 1 -184283031169653248543872386898614727394.8788870728960113635372837549234790 1.2896224165086673531657642999165335 0.0400895266515687023941395800443204 1.0409152557976702710142740008766906 GT 1 -3655362027.1791532300774091280082184844519926 5.9293226911420536485405974343072325 0.0211559142907759305995974917628472 1.0213829078586233568603672683728145 LT 1 -3308972292.2505490144067382638195397707039772 1.5143025554173172519104402698094239 0.0436864735258638885069928773470776 1.0446694631338305062781373282322637 GT 1 -776.5165301002064628012748273686657783 0.5391692033891929518920462668091758 0.0541924015549115620440570070616494 1.0557161149231693251707996498229984 GT 1 -71323347.6202056108509506771993569537800056 2.4831666793926944980109249686398098 0.0022472711182933016134853374022794 1.0022498000214973282479455732890951 GT 1 -484315.9800071546326051783403630604768000 0.4987686080801019574167431640603780 0.0328888208267202689952496554070887 1.0334418168458522361932762230812330 GT 1 -31778003085036035806.7759817848506153987086509699851167 1.3285482113319354676884349515261140 0.0626323796351326077715892987199383 1.0646797360520693317775532879024635 GT 1 -65498820868907804869814705966387.9445415338388377236568980036973833 1.4525546794985143432637855388289571 0.0819323205369103203394917987678454 1.0854841661738674060103927656544421 GT 1 -3470623280235615100293164720949846.9464488703971392335930376651662088 1.3153999823045470321381062040640131 0.0856649935259266963315034216628173 1.0895582468119408538766860971781615 GT 1 -631563848369.7647237303976865842513030389102836 0.4692913439441825252950193658803169 0.0275871464920400695298788101397411 1.0279748182935524481828383029986470 GT 1 -924937454532405770584630127735577537862844.6313528749553072855569302924861273 0.8877715003085462427898674689837987 0.0496021083774277956161789483570484 1.0508745487868104664504923192496237 GT 1 -680.6487109405951431975638122617119244 0.1562895052930421419278157315457729 0.0426036292452052942634911442904011 1.0435377927612300241224420309887274 GT 1 -1995.0460053823500651479086298724809995 0.2066688131243243430255350856749378 0.0327614731692324354544183621339553 1.0333101471097372591008098805339723 GT 1 -431122381.3231092974321654396028764261429175 0.8219691178788120028544915503861824 0.0383915191185261716435630092898294 1.0391478956878045062003038367718458 GT 1 -40398101507391993204174.0634289940253835668969028446948340 0.6128343488190971652802103663810827 0.0113374709036781614522971773117923 1.0114022299614752581407844976980829 GT 1 -83370196003381522938953155093247.6833872434971098988395072360849166 0.4828723960915756677179097816268439 0.0037047241671186629471948903785039 1.0037116036540194562735248675436375 GT 1 -6643.5600578855311667042475603419844806 0.6387240260888337783040032210937585 0.0596462266875525110765735689793507 1.0614991199340009337596728023763933 GT 1 -28.8226937088777026524245526486570166 0.2950740915730300344235787075739425 0.0764447159353599613765264067068749 1.0795246175020696765357238902608388 GT 1 -494332.4351609491652263520228625092944280 1.8756099514066570270095401064021735 0.0015482265251513444818206940115999 1.0015494262663118922458676943043476 GT 1 -897438445315592.2103006807809975622069362754571933 1.2406512267316818038009597633591188 0.0562300544001015787102978910284809 1.0578728442317427062117402467091774 GT 1 -30431657905596.9485553844145361586932065968808161 0.6571067924429244960545122349825668 0.0743151075672431242019745281924978 1.0772213911968869777390022959591953 GT 1 -88138940164225.5750220291498861967664306600724759 0.1499211855422675567795856346470071 0.0758063681010300245726035866812263 1.0788336709625145243075330860704658 GT 1 -443843726.2240840779050485214034680751979496 0.0006219499264389772329571421202659 0.0037102188874168842076980569960494 1.0037171188216446299020565521496375 GT 1 -38997313599531730.7281931454905083196536403532347794 0.1649391363651083534645864470654329 0.0005051920198162756851458110897581 1.0005053196722992062844135519282041 GT 1 -699747413673707908237337351028485409400.5836558000518128639667900145839276 0.6780575439935958943692569582019490 0.0874520985028411642286620237442685 1.0915147001118868841739238885645937 GT 1 -1206266961631059923.1407693451113770285103538835176059 1.2669322877988235641116058238069682 0.0387921161081758699459235754359585 1.0395645730188120356729135886229430 GT 1 -2486680.8188840471864558612735159421835768 2.3375391274255272915434919428871811 0.0852868660532149640485478265130798 1.0891447776749156477102613286704035 GT 1 -1307776160727742662871122582110759063633.1594611551037075425455172707053119 1.5954372097625895093976464770129526 0.0279274642419412932517699838197251 1.0283248520405320846215148953281542 GT 1 -1590664597093022901290427791828645.1703554657883562780459633599504039 0.9308304055332284092915013528819955 0.0891076847865854396553788704405070 1.0933305937436156020839688295207619 GT 1 -343.3320311294580213072235091235012083 2.4687201863509954345662325214556707 0.0508671648210106122507692719292687 1.0522065163225448604159132630439512 GT 1 -34383161126362629717164586461418873111.0749640547506092195178842459787676 0.6148288147521421596141468757842811 0.0825586366339372407413395355329791 1.0861666102334939336200415903192227 GT 1 -455125874227633.2978042465849537852207764978098604 0.2069774650488690422228669912747108 0.0434288891068352510897187736605026 1.0444001479691271631650449987647814 GT 1 -34150065817315804326503482544.5400486905613888337347935066926731 0.3250071320821288138059406030910666 0.0485279072696150663017809050570779 1.0497449224391854951835663847716954 GT 1 -1148.5492069863337716423402627857758806 0.0959450281653303866546857505957872 0.0269428307722827740782582463346364 1.0273124428924567354323822123803002 GT 1 -1046255658101.7739197010778941545813938025322254 0.8913212418908688688023158890512852 0.0075403912001645304139768686711819 1.0075689636722530551566167540640327 GT 1 -889104630954399924324187762198475055014.1570325505755350966988770105908641 1.5424580496250572848514639750674548 0.0882140486463307168253767376179813 1.0923500189178209840768208875493590 GT 1 -43319409089506445733830.2035407896717205240046544493070706 0.6312439415204416780151880123741250 0.0457395340374592592909561750202397 1.0468186196804581904265349856189235 GT 1 -254284008710506336831.9791111942222387899156886142156693 0.1876669212408943161673506517511527 0.0114118769943217755857419415326276 1.0114774921348366736085055283046646 GT 1 -1586901705504.8091644311484830745902466610399700 0.8599559923905633905366819772854167 0.0057325214722415810455120088368365 1.0057490154383376843321563718014192 GT 1 -6468250047888921082271272181537.1151684703675259221290174218622343 0.4359444513255206187686726210074566 0.0544550932389434037649720280203987 1.0559938967591813040584437562606611 GT 1 -734.6298884169528949719403850291654853 1.6222451509217740643482617483232388 0.0870891313075043829523364782824481 1.0911170278050152559446871883935987 GT 1 -14537495537995614519026780352986773543894.6195537311953486138734715975530536 0.3074834921803080302411407825829204 0.0772297018789224199564801921176675 1.0803749398920478619177937619973620 GT 1 -797310811987195005.8695967145904633451218516163719145 0.1931117837370029017122299335208721 0.0347258213733066172339047402646277 1.0353430950692109128884806643301880 GT 1 -70436512488.0779924237025618586439217334643585 0.4277865361328645509161066732530435 0.0975900923940495740332728695084978 1.1026864191253526158754263081313524 GT 1 -4320.9438915792732610976781054923431833 0.2669217669121087344723921730605709 0.0689312697909021035069500446022002 1.0714221803600099730381150586165273 GT 1 -8395.1122317080518467717197032515937399 4.1319168429984906556130202185076297 0.0399544438590821892934585127270645 1.0407745413327193898184678998559324 LT 1 -11155803275574299528967623151928.4368976611225335904704239301380641 2.2233703665959458147447337098784224 0.0409354498350386432028311662022022 1.0417968964942908625746865215608595 GT 1 -54108282191429974114816174533133531264936.3521599888317410383752105839061604 3.7700781861702236367517359149371514 0.0284372477670179658096983046245297 1.0288494191132912714227062501034435 LT 1 -46328309842200808520416629.7724895117796637026171927114995652 0.4434279661119449706369564262972666 0.0551073597967551213198022867663721 1.0566839661928349287839815425768917 GT 1 -3637514553035780563285.4755335268919900699605008311008339 2.7657370052578813435176528382669750 0.0524019646724850573461989899090416 1.0538248800138022991714541117081394 GT 1 -529878168589486594847031525282756222.5890464739505846665005457268918139 0.3980256730725104346835690286809258 0.0711825438482220731555826485052983 1.0738430544686729569555749893206747 GT 1 -8846366155934991528016484920721186.6769804372273241286623742853728365 0.9550825221264367303326404886877355 0.0592113317453086895716469149281889 1.0610367467076231379875984374645619 GT 1 -2354765817.3292179498845717836205248560488303 0.2290949011421855163448994873500617 0.0937307575487723360992498979418556 1.0984188399890400016566386882493630 GT 1 -9462834160.2237063234006197169555988219568238 0.5811457670002675961136115506518033 0.0694147937202996320777159700668372 1.0719416366679660270155816453892491 GT 1 -690119259661733227199406491681333.8982320550090906586364714994721452 1.9800234090250207922549705867189524 0.0290391790386633582615144896006596 1.0294691606692934563844176625617076 GT 1 -3123139818610627921150.1678084352457432152043552147808320 2.7773531075774859596373303480440758 0.0339681266448903426666738131833464 1.0345584501223235129715523062063050 GT 1 -1189048284887647799301453.8530685085849309992419025204939047 0.2051537647251834889150722458955876 0.0254307681560869254120602462527408 1.0257597191060505851784893097144468 GT 1 -2413073.9985183246824354338767226307283842 0.2396528272156842574269077615536958 0.0059542921320544071608224096799487 1.0059720896122151773067782608250664 GT 1 -711305629781957985.4525143147674245209811037467128029 2.9705158506377286902514723370043793 0.0661728346435099958582181227362229 1.0684639056749412835871186511063580 LT 1 -9038162287603828221570973.3098252986110822020788590007893345 0.0085770424711223741150268032059369 0.0304342034293322706438246609179707 1.0309069401033735209490051643066172 GT 1 -108551438886556493247210712878824.5799693549468145337464156645330752 1.9055417333788981326989261283047568 0.0519570165870155682568511546605544 1.0533554366020570881722464192889926 GT 1 -1768658112379931298197.7956339139784509515504548046613519 3.5805516479077701733839602697329674 0.0340418090633082965240522219975385 1.0346347263100902313733694818574968 LT 1 -24235958331230327523943458813210.5774901784417773810354844319780528 6.4248292518100771319348583590018839 0.0723005125891074548919576928674396 1.0750474268606379416624355936154426 LT 1 -447826919937221860177432.9852074270317287306816566095145708 1.9778797466726668451399431063091614 0.0313189039539066479766966881283152 1.0318198275062984664175562377109295 GT 1 -3386878207388008001940351425917302013487625.8012843649126104227031496944347112 1.0559805836150313326260509607990569 0.0871980968399941088065757813440518 1.0912363954671131068309134306534707 GT 1 -33919427364734475894941831023225321554.0074881582937228544222328952920996 0.2333046870631372124331480201546621 0.0314167787467116263826555927666566 1.0319208718418744133148388300842545 GT 1 -11664773168932194.2399823938379239997512775387325146 0.1266422334448698883085608536405678 0.0512946529956587012063448810359492 1.0526570164609562402999883111669673 GT 1 -221231067824736279674495.9535451856974789944114819187410588 1.8449618806550813480139465671309516 0.0528553146300703968647060561655825 1.0543034146045774696094424613562818 GT 1 -2615046612188187040309357720473962792664084.4205698521784520907072728314572823 0.3198960461785977907577393429703963 0.0991711496926777067439406214255774 1.1044399946813785405505469842864362 GT 1 -30015460132951461120835520079417902.4694481165029693430396247813868959 0.8512876860151741880020562275180602 0.0789592682206359210626192070092940 1.0822510181028379115762946346312095 GT 1 -622.5552765042023191853175706051065690 0.9989426047838765193510875386876810 0.0034107735658580063491562701161676 1.0034166035142140367703160941094563 GT 1 -1321529938577.6537611405262086019093607316200094 2.6957615275384805450823388351662161 0.0464786149235521255012529967259242 1.0475934262157697928824469877677245 GT 1 -11.3591244361936965490868557805655293 4.2676431193485558961368474361394690 0.0179989985508078208052106267732450 1.0181629508224964818787238996153734 LT 1 -5352176.6860153083190324426998775130895912 0.9934888957919900021663881310427928 0.0642311856869089058669908385570511 1.0663868262676472241206374134572786 GT 1 -270444355367546035468851948628.6883237680732210605273744031831632 1.0178817869176020408028986666390355 0.0572018264773440750919313367208857 1.0589030452123897748316520702069527 GT 1 -213273150814490400.1376121563325567305713175653083770 0.7571482787509104744401818991694290 0.0481448375423999573995211796377559 1.0493423960409076607625631808158932 GT 1 -1350949337137282637398036665.9548952125800094648395268784582747 0.1120356368883475242220803650873031 0.0494708556216048182466633590604578 1.0507364553686562613928938279232197 GT 1 -3410356586162636721392416540348.5570653353747311672605855718981853 0.8512226495138551909238572051946933 0.0066776624938355342242878860039512 1.0067000578367320014924450010465854 GT 1 -11739573354745178093236847541673578.3976196012031820261931990333176571 0.3355321484320351853817328639878284 0.0949456967837593824525668591721820 1.0997603335284951228331903345243573 GT 1 -115188207600886365862180824698.3762308862788204343122459113889689 0.3981017978073019652624423265762757 0.0653010306474738340066237319606391 1.0675307594447623118438508851578235 GT 1 -341237997170401691234889924780335.7676179509837387201098558115959075 0.0203285474422867782236886480268482 0.0317862716199495602087109495935102 1.0323024222958757696480839603534861 GT 1 -407853958929845617007949.3347854566410839019737727458145693 0.0059192537841678832166900693262868 0.0129601559003406313359029598791926 1.0130448714681591483105361773421181 GT 1 -152507730854037.0170251805341782308523682416149434 1.0653699277193947112313817356338702 0.0814329458793972090808580403467438 1.0849403730497500181616312476081106 GT 1 -13809802102.6609136944238620119563419234699001 0.2312212645926291248746279804755837 0.0673218892525940259602813046017444 1.0696951422205362914849813448300115 GT 1 -117749.6916169799384883449284696953488161 0.6123481745605337667369915909145529 0.0569406248760840188405450921070394 1.0586260342545708341575095823177947 GT 1 -17496652448.9323385684649974051809318326817801 0.4066182654816895029672693326298207 0.0915780387719666741886203322417324 1.0960462933185745718489882996989662 GT 1 -4388282.3182314773699244375080912884447650 0.4143397557549099809396547147284269 0.0111202724390635891607157625211415 1.0111825649052603963329098731065221 GT 1 -47903891521572041547650048649550335814969.6452054753255105680318041039488064 0.6600953702010662240575071175514231 0.0306986874700970615844490495452250 1.0311797633836941633107873504593715 GT 1 -2655570365410382853667.7732767136245562939358614096933118 0.1394513227586150690723454261760834 0.0810064599683712268303832150301731 1.0844761859965000650786683367128568 GT 1 -136059778209220548368.9665704507386726443766271752029546 0.5997237202191394193366715659526401 0.0923535559354802373249711255765879 1.0969003549920152602117760059955159 GT 1 -29328053284308724917389886.1527652261579807235792037021740233 1.0449502533419624238656936945278165 0.0413962966440945323109649534403792 1.0422775289676932454665511597460739 GT 1 -28087161156266772622156.6478290110792287847990206322235296 0.6959091549434922081180297725068171 0.0042125578271162599113072251987137 1.0042214556460159390852494476176708 GT 1 -65970330.4760338665501143596215811508534544 1.5257655584582475583808395169284971 0.0477118033257652938701869919242790 1.0488875624045396730572182203196847 GT 1 -445050451334054708911378482.4956677169273390318211271625547360 2.4474709614636908819831987180545644 0.0784989978859998818996194776402014 1.0817514143915697376337739427708436 GT 1 -3324226490427589892945790790523807051087153.3716073016373046960846680902730900 0.1117292505376725992332354781611747 0.0004049868445995872464801974080818 1.0004050688739196812230385974785655 GT 1 -18871743232604751567259806976887653619697722.6290869537018079999714227122555887 1.7057390503792643100101542468250683 0.0692007706422442117724677914432654 1.0717116754897150744508864865113158 GT 1 -2765815923751967764460245053683.0280244573802415365961378482711245 0.4486738416509151260617912300106146 0.0212106103001966742923492051717557 1.0214387875829150024962678462615559 GT 1 -5983682712446726921030733727845.4222739474411457082112338054765505 0.4743068224633521266799956255190762 0.0871142347553182007682963267192457 1.0911445264292856558924059037670493 GT 1 -396388775747707148084525381984687.2081037138307435092838618161629924 0.2283621595932832455255956532493940 0.0888797160631188844201198950324958 1.0930803553810900390253159208840774 GT 1 -5542692999.1895554466137451890223203383651507 1.4376789688910068113551740403063189 0.0905949901807415407136216198294142 1.0949647286782522209422731471331295 GT 1 -6735613465795845.6940911159883638324698735192874761 2.0016524506383844899017981277960305 0.0696114464290302188636381168702591 1.0721529805500832523479424473088911 GT 1 -6878.1098082904352511037944303427865130 0.1248292121691441068015310246031354 0.0459233938997665693257720727091725 1.0470113108622916620508614027137748 GT 1 -24407784857.4307345964247330995537337211079947 2.0270981452703369422082277419604863 0.0509304916949515320046293521939837 1.0522732393188384811278290516038197 GT 1 -43039795523605487223696.8255043585628959163558291586105698 1.5666438095947981083400123569406606 0.0441633528682909510974965014217033 1.0451682517320238049774458986066260 GT 1 -4368003690458670343499049844401727130706.6415339896644140066097186974671423 0.6880138925651422934343737141187019 0.0989026550242506486750066031856130 1.1041419861712442586996667185346341 GT 1 -937854726358582658191.0483312208420662481966775013450023 0.0874648671432045867137204793648722 0.0738592545673426298295422840376621 1.0767290629778720467739880772915073 GT 1 -44938.6576182358184792225838052869239862 2.6103802636489089733553432974524109 0.0408991598988240901035058800397807 1.0417590583220424853899030189959143 GT 1 -20512179970308835681.5591942428246345431287810813244752 0.4189192072089140028188608636398114 0.0039350359881244721130917244812643 1.0039427986130692548205494743210632 GT 1 -24355720535456443913498660526390344.1125814094095603777581165537707542 1.4115108038512169601494929115027327 0.0620128931941201305394951842245696 1.0640190754798911188848785218721099 GT 1 -877636909505770939231859.4626686784822298520156398416274583 0.0284772494515508643141960878341298 0.0474914563998803815535410230763725 1.0486562023625899378440058019884492 GT 1 -2337992826215.2897817087938229241073222546712889 4.3421034046419399385929701057846259 0.0956600112216138854130878227177587 1.1005498955140988032725613024314615 LT 1 -3641.6969895756720315367395364848327843 0.8550932585447675851633120138807792 0.0473835426159871057565243070128379 1.0485429144849410216469135539532136 GT 1 -11483657881488338181358.6858429871600577020311073795554828 0.1269929921143023837861278016473180 0.0843714827343417671461198788916754 1.0881445454017941602201738861423070 GT 1 -54.8573942564678973182463587711575790 0.6689434515824773610072798758147440 0.0385603570216312137242315863398843 1.0393234897371099163077122289865071 GT 1 -157115489765598517.2588650095030077895346671849294746 0.1952643617680424781239671271710351 0.0265142019798679181210005896787109 1.0268720428534597326501269440340024 GT 1 -17835078082.4651369443439866140697681565611166 0.8526737240848310831839357479832625 0.0760057087003246028283102469795721 1.0790493856066428884246675590142332 GT 1 -4379896277932462014678923718295.7071785257461455290457893759612480 3.0035143871842697629318721018837352 0.0412532978780341102873081100093181 1.0421283660750712053231890106151377 GT 1 -213418725124502294326.7230734302559853727520895759267164 0.0317101404719613712099138689386243 0.0904533500508836682036479496401089 1.0948089904766529636659290848736507 GT 1 -474464955839154580567956313763223.0195118604100706317433661415552931 0.2571554285674883447774504993363826 0.0859921479257310927643467327355247 1.0899161166740035163410640958273843 GT 1 -448591261155549189440997381086498265287.2899895463111725458445359434105884 0.1848607280227907976853686767724161 0.0180454633310914838506646940428624 1.0182102683705677135087652508603711 GT 1 -332118933.2066316499249889407518892050782775 0.0138813566085247815043492272735314 0.0198025181805162916749852344641125 1.0200012155576498948163991934216355 GT 1 -243604424624785656608969457.2487103744614557708163387185182733 0.3445558959798770294821112781552967 0.0459145036522073813290160659170187 1.0470019927361766461247992114202919 GT 1 -283.9860862857515650225249932250220645 0.7677376269395873143092306325675471 0.0896652438878429519842938219477396 1.0939428832570486512776472252996384 GT 1 -348174174671388787586707510988924761.1036451665307297232345064140385501 0.5188982378061081483687477137996978 0.0802190322604010926024768073222083 1.0836197158281608368359639911695614 GT 1 -2821959822797918572023629437943475494.9914283386121003623072010478351741 0.3242710170427492208119871626037212 0.0922018700983182398725152854223005 1.0967332489952911766987499216490810 GT 1 -225541486686212771360871.8288542215155961308341717684667118 1.2186509814683917995512734193479911 0.0520588532046042314381036507651877 1.0534628600937035102927036919823962 GT 1 -584025138059736455924531668295.9692788525206636817998421817193187 1.7807546127776482929344510676050803 0.0487028329319666994775213454592984 1.0499287867327078331557295121847008 GT 1 -202577878752322146911885545906799.9450416121818058034060763801930611 4.8987466857899993818882021752098785 0.0493414061978870351121598442372347 1.0506002779451244689609152259729159 LT 1 -2957023782133.2481609772984780448893114745179586 0.4123752054002615027425396584765420 0.0737429102061938291166130402426983 1.0766034481028281432633204332625983 GT 1 -399822660.3154637763969149969730031952253762 1.7243367494868756058973669406266360 0.0357087866643375439113167969139037 1.0363619414686705176020379179818914 GT 1 -2383537444827.7882360630053383932711242191092309 1.2543108110216140435989435393664864 0.0560629438510510869173953458170661 1.0576957928680170739992199468923392 GT 1 -9772876437099582.1571481036950288349851144430539639 0.0484802242066358198735261013233928 0.0848331732284584597050901737928405 1.0886489059851957367491441258057786 GT 1 -6143617583960572764979.9122796200777324952149443362184712 0.1410768543422066095556850309726927 0.0816741712271386014593586513710451 1.0852030180318004762533927145655553 GT 1 -565466621982278956950801217194.3871902581154459475929074352932998 0.2320722074504697449688394633492771 0.0572857827538240994197193197786113 1.0589920992827279453720312473731589 GT 1 -126818156232317471973824.4973729033007696901789595531648120 0.8824712614279975747690601811197192 0.0109524753969442782054586488672474 1.0110128953258172990479423042590379 GT 1 -2466181556862526088814675966379950452683.4415966152502280407107104958820252 0.6298375937705008931310753490787419 0.0578561901157808879957146526392280 1.0595973516371860011978360500897565 GT 1 -12858315709331.7829240593907958841351945486743657 0.1040063441020102148612576401990894 0.0219593674282236094728158111316975 1.0222040632134472956827280431880331 GT 1 -120248805334306975252954215.5432285018581483857991781384883542 0.0261769154041252545954682569647148 0.0709055560907941687645796774163270 1.0735448834311001118964174651318982 GT 1 -606606795589068363096643490817.1376158303904265724736534566239847 1.0043586324583179331440830917850912 0.0120557251996737173805427809811562 1.0121289848488844540457717413762341 GT 1 -64754295.6817966913382248409872021308206832 0.1474254661593069512105151083502426 0.0484728706985100618405005036815443 1.0496870805121020092699570971459075 GT 1 -17267673497188027777938245066256395332.3107279257238940408492590438115518 1.3752235880933276949223106297656820 0.0773822285729897342281343619620864 1.0805402457124675149081988830055302 GT 1 -2151.7010796885451689684004048004364041 2.4098375262026721936172363970330109 0.0186643939555047025398312285085399 1.0188407718620808706063167682892809 GT 1 -48599387.8129638034097938309902822046549410 1.4682739699878629047947470273183126 0.0120722077126347260908750833655003 1.0121456686344755780692977879429782 GT 1 -23167128101264734181684006537098604740192343.4151537159114222386671331523556155 1.5313769303070059583807976315773811 0.0208288915477308745088117905873101 1.0210488729164421753418290360176696 GT 1 -3343445706311083458959944020199748839.0634760504477247606785791476201020 0.9778299250640288358057929416565425 0.0866258112251788082045721418734996 1.0906096370333817485042305815379928 GT 1 -3262884851372824816.8207166875263796856598197504133368 1.4710939732428814097245012365802001 0.0971638545451105541517876988542963 1.1022141977834064649515842156087422 GT 1 -3128.3841677217472346387706814942610833 1.0456052859254602199853190272313028 0.0843733640436952718620816133426509 1.0881466000683437072322928855144114 GT 1 -7120984565850244943411953499412.7731508545662682793609893234279794 1.1359269086441152452309012076047526 0.0172334379293003833670426988882168 1.0173836620409989858407401189351764 GT 1 -6449098359228874360323465.0518294404242633929616229266080035 0.1906687779268969583538557677043206 0.0898246020481663576877836999871998 1.0941179530421577147365554980266006 GT 1 -3503.6806329299727081658768339197369387 0.3001996215974835685672611676649575 0.0149137223314683014768079579940868 1.0150260501043067146586076418323850 GT 1 -11289819856662781790059757251624254782101962.5202718982635018088220426228018470 0.9062578555158018615753541620190851 0.0156603885333493741069213483744519 1.0157843078704660649817931440444759 GT 1 -15407593528206897479953360241463.9159622725034614271623437846659847 0.8186889359523214947993347297207777 0.0063810358998912926281381927507020 1.0064014817329406358415807433100581 GT 1 -4517259699792725816976060916819487213.9492087096437307957300587381963268 0.6168945707422270717818234979303004 0.0975853698624590291568037278332620 1.1026811858946514640954310956915666 GT 1 -188627674753178822596311486.6624936252069954374043523843995639 0.1632116867341471266852629152542850 0.0408920436206667656749733702905403 1.0417516386103088994742128084698027 GT 1 -5668120749716043119297328006481630416095916.8441005563858721881675524600522285 0.0016948834987900330169157206667094 0.0846680029420549859408457998529004 1.0884684412018246162673195861683807 GT 1 -3415.1898840763235498751961194300503821 0.4507947815640943483644478269885213 0.0280128717154295504183019707995761 1.0284127171149666846545494207382163 GT 1 -1514029709.4863347506146965140776545527293868 0.8874935574352567159379823636585767 0.0275452303500732849119808250488196 1.0279317139285312286546572219549819 GT 1 -66681392199106990242592386346885.4601697764692202599676661467683173 0.9789141331082845507297486755632455 0.0045458095796019549665368198414576 1.0045561731912322184956462386966836 GT 1 -7931763305899456012337604884.3055877108921858801942635468534271 1.3448642603218210723645019793015577 0.0419888062433829946817077061340607 1.0428958165736765520697931564872065 GT 1 -9308999627956.2724221419486105637077339244720214 0.1956112726870419803848038421185757 0.0975864989769220095724939439122248 1.1026824371101478166160243336828513 GT 1 -3719.9767375522051796756735541058284837 1.0639915480997312623716377893327389 0.0304443345675969791567738318009471 1.0309173893077821354011637541395128 GT 1 -117309034377286450.3741870203044578201444007042769660 0.6226163337522777956484487471947497 0.0996200582805217956880600910726948 1.1049384472751318963161302459626454 GT 1 -120169890076394151196603202323482.8476119614464940415724950430425875 2.9671057385490274870225309570562039 0.0601528029824162765837956797346276 1.0620379732960778912444121043255913 LT 1 -476171595115560704781179702979150985.9300142631512488308051876780038572 0.7145813681036562448302795564030362 0.0266727700994400330541339674666423 1.0270349430576895430940431120679027 GT 1 -277488277214001633480.9817071144569529797936510659837597 0.4827316418546181495132529788159350 0.0813937753923582130690961184455327 1.0848977309239380787856190101112111 GT 1 -2720381421.9317428984400182888126791741953366 0.3558129602152481829886444963811881 0.0038244686007504950065575257475507 1.0038318005807110368315344253183120 GT 1 -1289473058286.5236265090960717756746240270534068 0.3723504793058531627107454215340620 0.0973391683528273541510875322591777 1.1024083978407770034476260287259647 GT 1 -11568521.2583445607593039663967819569418477 0.0197307487377684645773395925601401 0.0099214285193582989640022912001066 1.0099709738707855868718296631961344 GT 1 -703705607203916260401092011624219.9229051022468742460089669636860498 0.4276954035581111585858192983394131 0.0681806886209834442819195059406375 1.0706163550030605637411847266203058 GT 1 -1.8263077583593997840786880035302984 2.5001621032124852217198782655781398 0.0105117334848784358961412419097280 1.0105673720036366761553618499204081 GT 1 -14694392.3000907630813208214849617561705434 0.7604362263293367363955205238667981 0.0661933946266169454003362501577620 1.0684859228213754533086041902043493 GT 1 -653788546580535.8777213452685575082175854038083912 1.0050906068295304830940789181956944 0.0207321694479654988544572806001819 1.0209500982261337922130511701750982 GT 1 -82151396703435127.4122884395057001014173070203897434 0.0019703872419215594878287736626627 0.0288778146304198343174030993861462 1.0293029840351446232211852247200880 GT 1 -34.6311150992334173918290721276184519 0.2784961000961078014089645334174861 0.0961106245850318074277517554417147 1.1010482984066398612746862899029357 GT 1 -6303938771726717817315726146061736.5244038671058740506306045472579015 0.8272570402238836812351436114868231 0.0476342054898590440063060019349742 1.0488060800604411206245130957532987 GT 1 -10212379531302929692971209.4600862621899289696161292336670249 1.8453845659630761604380716498562820 0.0896986863289640783066922523058884 1.0939796203531437209005237424118184 GT 1 -1338204263.5850049086543971221132107095736813 0.7432662230062339570975979085826822 0.0932449645978799450215806696396645 1.0978829475926144666934198314990800 GT 1 -127634251601753723661971217593327400394.0249096237553669701173804651472190 0.2126384082616575729854622040560933 0.0599590034058478813206926256932172 1.0618317912710898951756501084652345 GT 1 -16900570360410506925471226.5915416761841677279106354591520172 1.1233303298889905814560346877005022 0.0794859686422494300231208325812217 1.0828230352337081225429314332104271 GT 1 -4437.0878682311910076555905789346214143 0.5324526766012957247896925660979176 0.0447122089278128006375602432223346 1.0457426319907234641085711390429044 GT 1 -18587022391484427709398987.2039373077453925146596288974129849 2.7532268602892207706839542643123267 0.0787327868863327607420455469551377 1.0820051511335596340870951688230265 LT 1 -5112661392908208665563768072692866895540061.6683042593317059664696237966242183 1.1071247496970435009740259778210198 0.0274153847568872838496830225237291 1.0277981993124392478303703866059148 GT 1 -406506301239.9124880482355177442623516308130954 0.0730956886994909738127641575368220 0.0289300654924853046252197167919706 1.0293567901046300485404379874456405 GT 1 -3210.9193523861138033493649921149676554 1.1665157764712015031442145331960306 0.0094550334414293449752278434250518 1.0095000160359501353725381659498151 GT 1 -49611818710.0247886474070590893252307657394703 0.1571177254666493333081181303870087 0.0696189186553769816637499186795441 1.0721610118788480748840895236588328 GT 1 -4419400643179457430.9903787176640074903646973696442687 0.6286840855387309839124486600689770 0.0420882657077326357978781520957253 1.0429996406502956158720876151497482 GT 1 -3075154625700762.2184048090380240257349562201825344 0.5893206093281466735411236725647301 0.0410659639628799672458708443828447 1.0419329905758837018698032281029014 GT 1 -71234157887462337298617060143889188974.5046747544411641780637814985967071 0.6137945919652030592732506324556827 0.0611300397101328319633920297917094 1.0630782968083765984267673020266623 GT 1 -14555205827340883848780263288899596.9456838552341886200923411864359365 2.0004934465074857364355218020075560 0.0663209987025780474328077751051849 1.0686225815197920627747535242431044 GT 1 -1680443.9819175688972409757471038861961348 0.7161650770161112969080780257684532 0.0538113942480626568190734777955245 1.0553133579713804355012293878888809 GT 1 -5698740289593215126618694638.4136565650231785365663266747772812 0.1369578400827504015548171653001206 0.0366572517745707102123347417062649 1.0373460133471364745067383249475278 GT 1 -6852786808189674689079055.7208177271154819546495097006431086 0.6888780903689331796996309986468466 0.0584488820960795358694832864166501 1.0602266382494863392287350909413870 GT 1 -197934426154116837748515466325992672992.4101813033805819665808124713942121 0.3499039821424750812077642472468155 0.0523602084826592105375372990408706 1.0537808156866332727482638766288684 GT 1 -18347831976342542980209065372377910.2938264610032684286317475783976041 1.4755174477503458522977735765301269 0.0892058204438829065835648688144810 1.0934383352871514060234026475738819 GT 1 -4.1621699457921882954270429250415691 0.4244200410539357121495576551009477 0.0159979635795425520844688099756435 1.0161273123990398976778612142437876 GT 1 -846447719915108025357967044823284814361660.2280534620212996633736112319089130 1.8287578492285141216113666082334408 0.0964021286102691402142382153921017 1.1013708500907858905720782259390361 GT 1 -1449176763.4120860837253227281655898704659269 0.9594464678546456899858343139431467 0.0763491902930502410343036408806648 1.0794211903395922807483042068310835 GT 1 -1904283887.0920761647566650480973035806694841 0.1048533825711846655088550970202712 0.0972563287184192897399554131113605 1.1023166293375614452370942281322250 GT 1 -5394343294049188698238198.4468560863015642091060210631172018 0.2764036775368762431925964882621880 0.0334067204844497443151610168068752 1.0339774723001132412662152086097663 GT 1 -180074917233472744788575290.0845505306253206096664124226695052 1.6389529532241046098195510497234050 0.0368068915879964785033730048838406 1.0375013593410468908310800269500037 GT 1 -129905995169700684218624616010.5230073679915546191098990868885989 0.8798423065980412311194262100652536 0.0045511953977705250445363332036355 1.0045615836187438030104434993772207 GT 1 -16851625253.4073888609263723469974884669930377 0.1970212316539773889140800621002348 0.0582206925234271487206665536022594 1.0599843126642423953467867648612696 GT 1 -126120983548124110653.0158706539776992590900306116740374 0.0504331355185229064316931075346924 0.0665700627646111311679018042699871 1.0688893726623657935435570420288552 GT 1 -43459561241463385050303314.3995471812667393238133004925845318 2.3719770427941866880953859686145945 0.0235636147453954768637498169540140 1.0238456764560824190271114439516827 GT 1 -1183039167454365965719817.1745163282395789650945418725325697 0.2601449713096322979940498652475508 0.0751337901220586676717739256812337 1.0781061899005848907295347069415803 GT 1 -31233847015942772849457855111412485509.5940014496990513147641517369956432 1.2988058114009728006547337725268939 0.0792830460519091769984091406542145 1.0826026146642290217543889213937194 GT 1 -81814196297278232027388541403825.9374874142237079125469293640827238 0.3098253203090051778062442256054019 0.0945166936325899805464291746244505 1.0992864376459381703518622689353833 GT 1 -3336126.2373658892083187232797413789072004 2.6637413029357511915694366038818807 0.0516860601860452795475597106483987 1.0530696714072296154992670597585097 GT 1 -48.5866425499383666334468930957688502 1.2668502080523817165645560969348044 0.0889699576123145226379498677894440 1.0931794048919516831171101378048732 GT 1 -1620546701126625558.8349061350108380164011007720325395 0.6636619703411933675871754554317743 0.0879348798461974480118403749559143 1.0920438877795118145467003761833073 GT 1 -2267.3479030275539612974110579188855037 0.1950726652031710515638045482354891 0.0949588805227666882895508853561939 1.0997749004279439056841083716464205 GT 1 -16.9990204641957779817828008428914114 0.4343855186108944172330274746466626 0.0940181515359365753178154577046130 1.0987360079477341811336246134607719 GT 1 -731039888495196687942201887850176.8638548341858184118510923323614111 0.0955874377103759183439241086161895 0.0150526950508329109195375106949576 1.0151671367546271364997311684300057 GT 1 -1462360730.2182539129362186544113409260455980 1.8344544672923668858905581313272740 0.0770965551574843813568127148993042 1.0802306600894266057934473270412327 GT 1 -147504271.8272069056978258310960482627097492 1.2604145594566370691089271154939724 0.0984902258234529098548265448733214 1.1036843942715870025891285944435881 GT 1 -683067493249616577051461.8845364309627423382853544656638946 1.3587408205188882646069847622042566 0.0368264264396420884560138521483363 1.0375216408916250790946167496455742 GT 1 -3143269652530.7411528945215740864523080303531954 3.1945889427785415872517640675036223 0.0277982660782308540834343161004631 1.0281919508692154671103195485468639 GT 1 -118.9009076896294378524991612482030622 0.0951145177952199060462169488468638 0.0987546004769467631697839198676138 1.1039776949474037279206112497767716 GT 1 -7.8606386788585645012574017202228120 0.6244812550083248990541663298788064 0.0962802417500802568601637774566634 1.1012359685864230117226519676061209 GT 1 -27838.0462917710905354943903503428148331 0.0573934148168558275724481509809857 0.0795023965529189310400572543419569 1.0828408818462545756676431772641643 GT 1 -713645255999766616999.1481083735939488049096082481705388 0.8983261578517308008273798745388695 0.0724691318026794676668162291773286 1.0752292039790713440820342187424386 GT 1 -492667538642984.5041573404258582258742714801117363 1.0688827212768244577483939968801624 0.0574275266185074745945845672748578 1.0591424677817526338212568885079378 GT 1 -38003282294353685174167917741929.2682647336106542680036781659339671 0.1113402161963173425902329611656793 0.0523023252809303011812534955758111 1.0537197361134405958255039559821483 GT 1 -201460818817280102.6404526844585016950863115445870283 1.3834030983112424798202113845864857 0.0285927057993725097171885545092657 1.0290094401418929460873733060077854 GT 1 -113429033234198803862321.8249489479979617097247272278487665 0.0516488598504316096621769052870519 0.0974986987846986087037734776904382 1.1025851469863328089927582297683185 GT 1 -1282272122972079211129613609023554160.5910049521468938345660733557559676 1.3419993933389644267066130582021362 0.0206027616531508323657689229648621 1.0208179594576860432958310888802632 GT 1 -2469249823442742696690335695593126.4354541630868308318433709578474460 0.0660070788274761828607435297618948 0.0005193608727603027245007464161814 1.0005194957873333024482402008579216 GT 1 -1246230776187701211038536.2922306685489687973596362908414166 1.0925205110249926827221812756913273 0.0161819928316141439780946059220648 1.0163143511002744518003024329545404 GT 1 -380484522687.5964759994905412831696863759604410 0.9630142371369382402391992290853364 0.0064564017077483724162280143083625 1.0064773344178890498159469043490677 GT 1 -26277168521644844589.4179335025296323204163858875114897 1.6088009375289195207582221187369577 0.0175153172467459363114940487563027 1.0176705254332710565949583538085107 GT 1 -6548004267799205.5570929309854210051679074006161626 0.0029022186941618733461137420264592 0.0533197167043907122476644022953790 1.0547938528354727883817039400450956 GT 1 -11038.2309348155732761095627588216431770 0.9336612294622496819879883087872521 0.0609995229384846291248110027959518 1.0629392917212711783642864938902370 GT 1 -95561905357481.7976859412481049621729873087399687 0.6372426018879062734145865602476638 0.0828688182015970779119635991371235 1.0865047615608241992739491966287972 GT 1 -42925829587026121504252191570451380123.8116968845901490615303349446552907 0.1489739182103475087254197160087541 0.0885560661241831472175583189736748 1.0927251964910222870989407296558814 GT 1 -32034699447862397584816349776723.9717737731728219860308130641588920 0.2947160328245015539220562628634454 0.0596608475754931260861990145980677 1.0615146683393156188570010577917258 GT 1 -89700927955201576835790596155850362.1949654627915302084708821102975922 4.1083775016024918331145106395602990 0.0341189836577177641436355301453680 1.0347146238441704343216441896840873 LT 1 -800128479542884258548972352921538009.7870416068649899486560217943090554 0.4884006862711754800658517614396654 0.0785643940434227253288697714833027 1.0818223839052946364736431163413274 GT 1 -1559699307304951659023108860.2318574755855061140503318342408980 2.2333775141314336406345668687674946 0.0197341875788729245380450270430576 1.0199315069312534949877943558846974 GT 1 -1711070504882479.6553146875812909890808722778138520 1.0630644613851228433409724735034457 0.0303893982857563261613006905833004 1.0308607296156390939702429072721115 GT 1 -5741095025500443796424868704184109996.0963164398136511331565758547840408 0.0273332653009208935121572346471110 0.0770204054092122609537899594259245 1.0801481524259522200915486005724668 GT 1 -1486840.1755636601421328125462848252379438 3.6542133352837874870740198751262167 0.0075695009295925230063466624793732 1.0075982949982691980667731915932969 GT 1 -116482645.2434389509678318305891964455638137 0.3690025595398536944602576862813469 0.0998625419865168937315136832022332 1.1052077961939449596795300415571555 GT 1 -11033566499115319977189982859.4117147457867010601134651412692296 0.7690499294727739421607036597459718 0.0300322095288402728672458890323203 1.0304924137358653342594865377518456 GT 1 -10650638692175865242015227227022365903664687.4534522012498597958782005374385207 0.3105088267103123268792410991881459 0.0389609636771467531078680057137940 1.0397402503135752716052967640431229 GT 1 -64164.6285356160558807235960181191893308 1.3943552460690678689789734111832742 0.0359709788171965635923733666577514 1.0366338798633223409221778734089324 GT 1 -675672333048196021738162943248556.8443701570995280352611374933637492 1.3813606787563671944696784304355924 0.0918130195205808274127588011621541 1.0963049959424908004178240076813172 GT 1 -5.8658651448843193235028230342058895 1.2468773711332524097812168147385209 0.0767664785701424493530911520532359 1.0798730738464886400877371524601059 GT 1 -16466022289646378519392562732701094222.3063451244189454914193769492448177 2.5833011894137369999387035350433314 0.0672603723363704962515638316277887 1.0696291871103439437394255376633101 GT 1 -7370271.9049181931773883651650926541472692 1.5736843801854455642047100818457422 0.0881437172849394891403659990910260 1.0922728860678439566332031718699892 GT 1 -6533258721207555075865864.5867924143121411647510461297004132 0.1567971694904877057507847977849646 0.0740505207418987062704429510758947 1.0769356038609091562808362015643417 GT 1 -1061548212345054643.3275672885584761808598742295533326 0.2171944844947268735846763360431733 0.0346126194937615681680141524050470 1.0352258276184355272706638917552985 GT 1 -130.8917799025769793882966402300508517 3.4567977599418089280701157271369479 0.0433266230911857829749054616838422 1.0442932447307811326371323588750540 LT 1 -3133604428089.1843788974259651505440592410253099 2.2268238182268636144237149767449022 0.0177717647663991964600132429162874 1.0179315788612420131843711972614675 GT 1 -50553718934862541148650566142050.7152985314854098497076305665019166 0.9515361132395614972068630662018275 0.0394962177852518388875828218992453 1.0402973590251639624724959690174895 GT 1 -913890.0211204740484128718258225599191424 0.1896481671537523734812604821292301 0.0289016456016597513563900339789648 1.0293275239581380857243380361241239 GT 1 -398558149908013983535.2909722031811664750255105430142379 0.0820167162183625129481813875077189 0.0755826106784424014437571204407701 1.0785915892902624163820713754986640 GT 1 -24313001989658681243037358482.3869309978762761680205061418465326 1.6334960993685601253891464390698722 0.0637086759098013451469157512859059 1.0658286072447034163275093017579269 GT 1 -381121880388347480052127683223404712.1917180778475843558888197359663219 2.6455438238806040285035753208686346 0.0375300477818711221990152106921122 1.0382524317821757813028435771473078 GT 1 -5624887913144.0445346458065046138431348190457177 0.2691169977591712267145471537058704 0.0734954755795627898144434091112901 1.0763363499222486574456312852907711 GT 1 -30377819574153040171289629.1505385083291288636836414222108408 1.0756027759204678289805329078189301 0.0409853997809327521431201808991204 1.0418489797942896135949434185631302 GT 1 -32.2411694514221121760560921188520099 2.5485270035430344149487501582167081 0.0664952164868960810691303675002909 1.0688091917359270357376626238186066 GT 1 -27151304343917554996699645303203.2240385238584128804440862557999297 1.1452387419145397373722729681699561 0.0466837389215350010716312927866554 1.0478085719563499927322200278412272 GT 1 -1628326860784841.4936094631693081139999777156771821 4.1370881017855439883743586340893096 0.0716063779652714343263136953984847 1.0742994744517165111993582356977776 LT 1 -83067611013617369695175787832365203.5759750065820043875444185342014725 0.3188340757180668467685770995434222 0.0897306798150408809169047534622593 1.0940147670104446061417525977509392 GT 1 -151446080879823758873755990181.4580776044852167072772622921571554 0.2833397344833519013459169099811456 0.0294198573901438266079595880867306 1.0298613011015596603225651362858759 GT 1 -2231271970278420731441229241440331709.5208338453199607436427620076635393 0.1177393160904624636841951193239460 0.0860952817981971647378829804281030 1.0900289600060671877308988300106483 GT 1 -37361367190464779855171106297480480155127.0071128841364802974208009230076004 0.5220650389856645033497441122506140 0.0533487302199201404053294325993053 1.0548245009440775038938340735383423 GT 1 -25968123716326910941535936137145.5240931207013569190023650680554384 0.5420216238564741811310219660879780 0.0377273977713122794340944432814639 1.0384574981581197169662255390961096 GT 1 -3643517776375896910222.0113925482012386889702829667244541 0.3813980365482913018807737106563664 0.0292838335699786500621776690111520 1.0297211639985791693750098765579562 GT 1 -501617922991.8251886190131616911011134598622962 0.9434984895585537273405248950111229 0.0769464308972998630098852210051350 1.0800680081323318525380983811274931 GT 1 -156004224097000807125513.6130880958553101389958111431751984 0.1480566523212068498723705022620057 0.0868250215603642192063609885894778 1.0908277645708726505813712581368380 GT 1 -11528.8643779159359543977112767268467922 1.8835696756747181102422872276158855 0.0968130155398002179367374126136074 1.1018256767241661519007058506771660 GT 1 -777808389061795615.2576672505686830233343403773862822 0.5047833850998940928690536312715508 0.0155004806897552041291049433941337 1.0156218691608263533965632624230539 GT 1 -20311385262093099002225689727596255494.1596930333496734549678699987984374 0.2587982728139838224365482026712568 0.0763989773052146002088241784654384 1.0794750942105243593182284923376227 GT 1 -919519500125283898.2210826858308998201131508327327541 0.6075229320137185510401171842971599 0.0501027990780598332965697070119435 1.0514015097984793657059035736961905 GT 1 -4.4315042407823070207105780047010137 3.9736464860628003793307402510509312 0.0751007488453989372653902155357191 1.0780704650723736419145129655820519 LT 1 -4459061037848913.0329898530651212710559981558997115 1.3394217748889861197498820895186103 0.0223521920827019618472418678652097 1.0226057884081445195658645657840660 GT 1 -30.5824158134805377700791522029466057 1.4609748912728850864932783740755470 0.0877990500996590529437134225891460 1.0918949733760494167599160441360580 GT 1 -203203473735076471.0827331841064153306031391225444840 0.2051690294991639889197218179583421 0.0056743601621952364081840132451701 1.0056905205058894298817902903393379 GT 1 -46680556175141089760938345065199.0130978555772068381734175555929491 1.0281532913916726755178607508740975 0.0701070720585392184137968053989244 1.0726858307086871386974747109562649 GT 1 -45259739.0779723105319911477583429698006201 2.1652062842207235247721586554942130 0.0552947843504965640410650062879250 1.0568823412637798508177608162735602 GT 1 -152.8963292754168996532413495208734448 0.8160165043912470523956838774367269 0.0551830729325191715300491530667488 1.0567640982270013378574788836351026 GT 1 -3575326950.7358437784668661675845781318663304 0.5728848826530614569140243829103239 0.0982077368708523334738957727304088 1.1033710923963965814652620846380639 GT 1 -453404469.0735153452423107737110979207289859 0.6202721425727397589101755619276595 0.0884401344116122761267882745202789 1.0925980089198705134700013227976439 GT 1 -15856206357414936.9860397186099298685003029761077345 0.1990011978380486548997208631339912 0.0804373527590544468383453178014177 1.0838571054033337492719070945993359 GT 1 -4459231710438057708485051465.9535907819829052806816010470858437 2.7619244095384167257511125264174212 0.0950421640941785494566507001894946 1.0998669265268794287290443261089904 LT 1 -274647035.1932868372949726317078505147286988 0.2448639005416502751156606892092803 0.0254832731262381126059396947048322 1.0258135956115264454711098959716234 GT 1 -151726473748795311873387181357081358274943.0463577799292453080081235626371271 0.6844465220080043652104646792073091 0.0406834211539756155493573479094058 1.0415341450746676622687805789643534 GT 1 -144.9914135403047024990638239932758244 0.2837710931318906517677570503209229 0.0243495165177671602554333144638243 1.0246508678924048687549287014936760 GT 1 -51.7877582920913613268482637028545636 0.7203835107846212296660826135370534 0.0862777070290324301816807445176632 1.0902285907078743857831372149902551 GT 1 -73422383194926298386888683070215974.4273841561303116529112036905011036 0.2920513370566030528897553381006299 0.0158607786157494066554010630612523 1.0159879067913668655018020142292094 GT 1 -1547774831853738938431111029.9012361238060807848981674338186617 2.0068173546120467920194290768629617 0.0562077567894793688492158944547577 1.0578492184028768509871304693032526 GT 1 -451572529872254704003229760161.1386212922858257016879147356833523 0.0798319196389569385040010920597176 0.0606290264918262469795075067478693 1.0625448048359953900186086942312705 GT 1 -211.7355456011508447847481595509486710 1.2012624896074037792643714411958315 0.0364591416771157712131095550842350 1.0371403858795720256892926152643655 GT 1 -30024.7452142001183787998483503697221125 0.7757067893243402383949710932739632 0.0996969449445433209685628047730563 1.1050238444985254163752243270467745 GT 1 -3312079792036120092004353641448.9268413003237109702715774199466653 0.6760418120001670181999442639363506 0.0106964664319871282002667659025834 1.0107540848732145736222928931963480 GT 1 -11406021772617116241574826353826131069662.1437721403858891931309182981002239 0.2318514757382352064282747125511968 0.0653457276944223687540066523900188 1.0675785803123875303555907898437971 GT 1 -19828019769.4960598388280156343537376049362626 0.1193331528910931949530545590027083 0.0176096155622013532753695451339578 1.0177665094651338263973306563503277 GT 1 -123695601875818674487273048374908298979150.1019959861291928965652751133476728 1.0336870910059093936818035619370052 0.0714326902663490277718040368902748 1.0741124078350122973175289185724538 GT 1 -40313077229708894590981885430.4123606194159016966236662383042877 0.6274651442052204794303112737217489 0.0213872554834273620764278250072165 1.0216192769985770987412817756772625 GT 1 -10789339.4314880613409685569217514822242076 2.3435790058995714732663126516256487 0.0333156749787874155622255477838343 1.0338832845792024078234419714423349 GT 1 -4.7547036534170409636199636088129226 0.9342706820637397593317329180334881 0.0928854203804330523410909422565483 1.0974865087094905127722529342646507 GT 1 -27138705923873593.9646664836156890618857403015897464 1.6873148637981500923814364143365490 0.0834548893770240059749139972015183 1.0871439923757784838915567100517476 GT 1 -101325141.0200157050952926722226102307604142 1.7890631109870198074428771322509887 0.0926170272725431559003088345247411 1.0971906768308526646942433419994896 GT 1 -289998640059768689655590791.2978639459554997324772024650812232 1.4746690536607896166297094307582998 0.0691422898361156846842696318230762 1.0716488488701524066212860681281094 GT 1 -36189705028934245.0132094837449408382812076080696245 0.5310451149557230557806748676988752 0.0685801766914814971406612677399973 1.0710451653142893246610811745616002 GT 1 -130425690209276962842659.5575690555467438391163112051792858 0.8244001568193303746194080967489719 0.0796778461718525369896154327769685 1.0830315030287701016182617663992327 GT 1 -241035047661171169640972.9354922700444970874615816456965175 0.2201963660495922846805550966115804 0.0994487258096129991728378398210334 1.1047481762976374754959687354173763 GT 1 -86800188080310437162866190.6064616034279560746913337018682081 0.6911826757067686058647897644971689 0.0248993359500379628966347518349019 1.0252145681342583506363514962312545 GT 1 -9840786123947.5398631879031618061274146119190481 1.7737412484139358060336011312555743 0.0180287003892175331489402252852841 1.0181931975203709339804291774979613 GT 1 -199358244358165490385516788687.5046776252237799103431656799693063 1.0729070100239833383457621540657453 0.0097117200425410391252995418834997 1.0097591863654061382322016542991165 GT 1 -437.3176904323547773105548943253069091 0.2320133934796254417223498115208122 0.0686263827086079526732076416507706 1.0710947746978407842049998279629667 GT 1 -924192319568948505007465119764055273365140.3494655775917121249502662963028572 0.6550957285575879991361986530999487 0.0381650206722103520875589653211931 1.0389123821912569108836669736011213 GT 1 -82887230137826499079359355.4145879189733928817458853010963286 0.6460884315589837549627536421423697 0.0865111437669641979214488160236869 1.0904841022170981293182766540778782 GT 1 -135255928.6495528776374381963354185186313653 0.1607862343691429505343652525909076 0.0270531387898522179841510722589916 1.0274258116378059092797302217118992 GT 1 -833881519370254320452472296000921402.9909473222709443859527593562073792 0.9218053167107617126528060972816132 0.0036094123473269248539231965180617 1.0036159419929308333488042853670176 GT 1 -5638556687080768361090296698168.0016604687013393533757282608543005 0.6916656320059094436463108479712686 0.0964084181227834962258492976218799 1.1013778106366246365172355431192978 GT 1 -256372386535590116634753214.4045927334912687619270492199984663 0.6236752236006332464182468391838612 0.0723235708727694927173238705440307 1.0750722825068255331700317692312844 GT 1 -4590082769151699858.3251123940645981027479157132407574 0.3336610129273611002255280328167120 0.0095661434439993876372998604804275 1.0096121929066870626367845789683050 GT 1 -1521796541094287.0460551918241060774953962361859025 0.1570804161431714758195183264192124 0.0485001983343928073516886072298195 1.0497158006898776714784113841132157 GT 1 -14935854668523879639544652.4176098397569481245976255163056029 1.1219058363834609026910878222086763 0.0323255371921500257549764703182417 1.0328595470188878179132530371614060 GT 1 -20984805605729396584617705.5505270779806335983894504495247728 0.5943003053022184159391183380154724 0.0665971225970511340579552173920735 1.0689183627596361164358459415765770 GT 1 -29.2747633013946299938418218956762255 0.4167322189375001538634284038708005 0.0500384024620830921961950202605450 1.0513337188489060534130499774372343 GT 1 -40540395.7659496309076816167982157161814046 0.0906120142144522560804411926400883 0.0047824083984157900886610374311554 1.0047938807049114418000418306439557 GT 1 -43163205405783148617068272255717684266364.1294944622752391600033874670272192 2.1875088071812134882209932184276354 0.0524517689916814025300482337027915 1.0538774398822330401630093258230780 GT 1 -244983503270584625621770223710.1009925583737997419880191535517162 2.9155764879412215372348354838079027 0.0052189414631720058282933862700843 1.0052326077077944777284347280854630 GT 1 -466146875181590131.0101148040338477130049085754828051 0.4036362097695880252559119416294695 0.0110762017493122043532772605908213 1.0111379996193929908616475790794803 GT 1 -1528747191627094138361333279091379528716.0513173266111268657957115995711647 1.3626922988874510476861872184903858 0.0912935515269946982318466283635339 1.0957331759342691875887618149218503 GT 1 -26637888161017148985392.3485394815962149560096681800362046 0.0782464772200057639765693988530263 0.0140583796177855695838133407470271 1.0141581346697041514020680664655334 GT 1 -13089316675.7528853541655205671443131065589362 0.3925253575484431973818256974612385 0.0361273275175084359897765286530188 1.0367960755822932456429367112950319 GT 1 -53403.3364118925477366743780068926943675 1.4864958422536611429977831094126080 0.0726281444252219609233614216454655 1.0754006551510321563981689508869794 GT 1 -23.4511760426256531602061325841049376 0.2898091639078653932564355377093780 0.0588341634842431009726598006754355 1.0606359205822739517041989708464130 GT 1 -1718405462.3976818181900055737564230901300245 1.2004015010826798522747333261146899 0.0195136944857602071003490652045932 1.0197066002823963963965676994506356 GT 1 -8951728385045392104269180221486.8405112508891457513496481586968554 1.0262585467140280206876224110182442 0.0051431827328700638548262283697410 1.0051564544225561351488028623773637 GT 1 -139944174105243525312372282880481.3375549613587074444409649633280875 0.9178700583947048192013495426766898 0.0136735797457735623432766141585284 1.0137679241415546005004050745688279 GT 1 -454.3870409111052168059114782639960078 1.1704937199009379198051720674329446 0.0809607579771804622254391989366405 1.0844264567515743027278665863865827 GT 1 -823121760642893751652529.1859156407724527938123517827650543 0.6402768451012147539897979157554296 0.0210781283149243087254719945945889 1.0213034438393428465314828503412341 GT 1 -42066453061292557.7255338188698484860190035662831585 1.4248644444879863429754226216080546 0.0087105100340448111613973655102183 1.0087486682733168669262900241483998 GT 1 -6499014135278463197.4165372435087747587272025453205915 0.5782883134972406808954292415905202 0.0213376515270357725104395089364739 1.0215685902488403056379209084626772 GT 1 -3572427181092.9317633344711946282164500306695237 0.6600176834866642822787355478042495 0.0627978724091049025346592381531131 1.0648563021943350021528674922962631 GT 1 -1860402891086617663370354064923273.3273652602244381599202905426285718 0.2878957520084707716642370066689868 0.0204941418350288804267573190055887 1.0207070608446544024324958574184447 GT 1 -812452202408527518345472098.0033262712624669758892910673063881 1.9106825183786139493315021359289187 0.0771118753979929438971319850560518 1.0802472602741522569838942564747902 GT 1 -42795868993696446810001732109509677518.0211549685481422216203337772724359 2.3328110636624658382339006654359426 0.0618357049743953260640543842173427 1.0638301907021715416441305819483136 GT 1 -268348615540379308819460082989481.5183438520708347622895002837998448 0.4100262253708453185428664772077198 0.0378480787292462551431411322563619 1.0385829184659764474230009317312058 GT 1 -35068911601787924297844201666879.6315877053735814094101611393767011 0.5591441761317814699557662666933568 0.0944053360726159901207870792306655 1.0991634638569121808511039020017263 GT 1 -181.2876508493674128511242905567669350 0.2617242281662420391374143526014869 0.0254244844849544438718364886455493 1.0257532714872772564938948054081145 GT 1 -4869825414950648537820796272041440589.8147564086182940297882557167508648 1.0146921297088262535371234528008547 0.0101984535001181199525944169465777 1.0102508140288353752672923323718717 GT 1 -109.1430966079221250567754181473087209 0.6636446969161058910897395857389314 0.0521597414137867537790584341719031 1.0535692945264829108969107068089871 GT 1 -1602585760.2307591160997926493982352960244646 0.9645567494460713674838833236183628 0.0633153235090221201370941460794384 1.0654085779368636397310528669027900 GT 1 -121307073971286364042598.8788258793257260405591127732926948 0.6176654492632281592086002834620984 0.0345357706566572344589966897214985 1.0351462266415889443710111415481596 GT 1 -8501.6905693671696866532561764838368843 0.0412471923132872748443074378263459 0.0966156007088590091414143498532830 1.1016071247936943320593940202256197 GT 1 -86870210604197978920624288606692881795853.5683573296808967048532766744997175 1.0282762257333123213812024522167339 0.0161978833322789709771046449894113 1.0163305031008284937742776404192470 GT 1 -1292234361219660.0583642545376987451430525553169125 0.8526787177777294143660317275329481 0.0504212568633723052405397889698346 1.0517368210081762993643377255450839 GT 1 -2471894909.4671534089572274261570506293004558 1.6757289062299002787850221857336675 0.0320554837921909909469663404699753 1.0325805113154369401830664380224953 GT 1 -6866139780367325401450849577188563157444441.2142144804431256173692584952131824 0.3333063700123023146013789520829339 0.0876587534425796619623041455556173 1.0917411850365653754572638180593619 GT 1 -2593578127244784155724.0409343396697123884510276340200292 0.5364189424651835790439487071473143 0.0329033301479525499007554915744130 1.0334568197021790415022619999071535 GT 1 -21038726027181635768215398701.2549842245502921333434626117233299 0.2156682604714041770330112186959400 0.0594176868656608877304833897794574 1.0612561134600829416543562715554178 GT 1 -579368.8123430369130534411975062867536507 0.1695940889044158816988426662646690 0.0190545901304229141322077039183738 1.0192384683967735000832122597122358 GT 1 -12866202128690006104810995941.8378096895969429825186349853514111 1.0501441595793063709741425137230179 0.0898706980733140898648948571819445 1.0941685995357482237765113932723510 GT 1 -11371.2435301239932563054559137853446464 1.4841123821270474258456220914254113 0.0313293115944771782634515628213414 1.0318305716991230817746789603068188 GT 1 -6577073843418648931048914.1144812175559376512873900196943825 0.5126753151342333056858970324085070 0.0959245396158983301385416422054721 1.1008424481974920326164520550522340 GT 1 -366553.9689854023857610554621236862088670 2.0883835729668821599238579668138898 0.0821600326008702157156885032597110 1.0857322310103713471993598471271704 GT 1 -1757899683585832.2070329093950121830315014858446762 0.7850706310796306522949089508754418 0.0345047807518584154710848761538288 1.0351141287072443522124102881891515 GT 1 -58763288976070158.7595519944829686512879224424251530 1.6040331341981813042195743445691568 0.0744026222425005880715503911249526 1.0773159361258066062472286759621969 GT 1 -4605735406327658162591216399.4136905935004015297268966278379908 2.3676857462878377385655258494421679 0.0433603033094820720455831509565756 1.0443284509066699625039555526529792 GT 1 -18097696786551.1256120041104788385051448805040004 0.3171984065152590372768392227721017 0.0127797413084231422525796758540142 1.0128621046765245242654545731427676 GT 1 -4403271.2993471553312697742115077859392578 1.3898626536972656428234015214060174 0.0713092908598311163555752215667749 1.0739795244063820426586711660846379 GT 1 -3368306324634572251.3449546167695794753656430875635597 0.4753237146588739851391762949881646 0.0362566889451380137396214166843006 1.0369302946683856828497981835940933 GT 1 -273415081.9216600611291658859956902776741180 0.0294649434029598156897432585267957 0.0307313090765403226396827290064288 1.0312134187135385622058987626694911 GT 1 -66039113303107280155840626270817.0382935017199978995177475639455426 4.0101235297409880151435931580420386 0.0684271371406231408969160672386567 1.0708808710018758952493767445269387 LT 1 -18672129468900813728981042478.0580501197679842267142872341088433 0.3507246759126586141555828074059845 0.0007670398690089757839152727957622 1.0007673341946052359374914570277790 GT 1 -5830.6328183020354931466761065501202373 0.1593101727616386467995434862423600 0.0147934708188932739472203004357919 1.0149039854930912767430076652825036 GT 1 -1800817275248731097.2233586645111556078106657076800749 1.0507818072758488189856059521076023 0.0436119535135889411117748875923096 1.0445915419219006096121380452732753 GT 1 -4245101021842282437335228.1867788215050778598135691991239065 1.1524543363427240643634725494116186 0.0591262569450966781398390092368213 1.0609463215604143242669833492195992 GT 1 -353901.5081840829908400817144469911508893 0.8821087217473002507602293994102117 0.0274818671083974628317117072126973 1.0278665580164715382134712004809101 GT 1 -123538689304962566.3012009039991880228507852558648699 0.0071038209297672643467836524022088 0.0989353904291175721497026130280907 1.1041783152090290553901378152710012 GT 1 -1.8755745252147636030583291236891024 0.4122840729043933116355268773160658 0.0999084448836622006870939345355078 1.1052587929247169516451121234331924 GT 1 -4448597816079983956681933843892.0197825279969764010373961595847203 1.3752432521326286523570018486325314 0.0611148848601746556373608847068011 1.0630621553529154409697737712908369 GT 1 -6414927438938301946077032783295517293083577.0058485974251595741259618954461978 0.3559383058373830655629653190326350 0.0309065252711684723137241775179608 1.0313942065954011044211444331690454 GT 1 -218404749551762.2885112174451375551441793564036268 0.7753319822359562903159751117401656 0.0060919989566248662204268242050199 1.0061106308912936836485843972513133 GT 1 -33226498365076054472.7201927815831933864919255213388991 3.2675432634089159086147683052023474 0.0670665523890444043224074671855353 1.0694214122857060962375923193291887 LT 1 -366942033714654863307566.3460125487748790185177910255394058 0.0340271966392968506060441518259568 0.0900164768683307684574781505152304 1.0943287860838801783076356494192614 GT 1 -3327822765929978472233765317371286104.3457319983262447162920860202046138 3.9081109562515623053892438866650642 0.0519226237234030234411740263577762 1.0533191595129571671252724648596931 LT 1 -165584394891459039.8497034839226979135610369061173018 0.7960328245544148846339920110307230 0.0161652274524015421716873106783263 1.0162973101066745266377030316335081 GT 1 -18747818951433422722098289678022.3544301122710727005237507604378184 0.5161414029867060130376704854614737 0.0095893389295329743232038457358071 1.0096356127009498053856189558239914 GT 1 -15931804799270831350559371004.8063525922926900479435063678119345 0.5485123924589111150269067555663503 0.0210103957066292531079105251039269 1.0212342552073203216360155298424064 GT 1 -6360231830938.1250584306276149081865665893126313 2.2059111809183147333316529057741836 0.0689673098954039000220323716508369 1.0714608894272102174774606148979376 GT 1 -15492848847496352053306.6704799479965014053961327656634289 0.1280188664866392164834010081708583 0.0380216074853643545150531379960880 1.0387632895721799285133930682764228 GT 1 -67.7203904983984558651013716248289359 1.4275444689095575372781017779558671 0.0500269259394048071329169436755222 1.0513216378833339383872225732986709 GT 1 -7600965161255686438119368.4872700049996120607670192201972770 0.1957868669881863211356238723544675 0.0974719185030577306423179455476535 1.1025554740271008624387733378530861 GT 1 -11131763628799716394552366907.3509072434438151948982603956136598 1.5951148533921222091256668821695716 0.0475848492008308315480374935385912 1.0487542564749933525490610932104988 GT 1 -6391472543161252253627488836575.8299784850366182486143937198283919 0.3038570801393697957971795261351518 0.0476801868194308252258510929686642 1.0488543623904960662733903907299815 GT 1 -23901343743256.3282236826189748448989350670316792 2.0499540132001782152183025635174648 0.0294918675844159527996441284021438 1.0299354967939778395993978003347765 GT 1 -4.3954694135274626801393101400867817 0.5824430910747403252661956244669042 0.0145415016671138009588678230374352 1.0146482655715068237076777971215768 GT 1 -151460931850125709.8200992285621913966389055988567925 1.0277528081381962332964118055039682 0.0407637116986163478996691360440027 1.0416178441439635583742918752201877 GT 1 -7755092781.2013520177416933280134339894922739 0.8873459918549243235968200880046589 0.0137970801733215143428613651901785 1.0138931445123748001869467090707466 GT 1 -842433784715.6339052175942919451072555786599124 1.6108475525016010330311873920925116 0.0210288747580767142694579771976996 1.0212531310214970397579595064831622 GT 1 -441775213953167841623218130595684815539144.1835948666680143819907787251593225 3.3797738985395720758733872426134572 0.0068215129678199059608729369700501 1.0068448858402836662654250600357759 GT 1 -184521400844400362770428185232546678.3775103471412863354314161801741822 1.5493546607545932071004992683289851 0.0950701878861432550917144865768948 1.0998978939651042355651820762155634 GT 1 -1.6236161788705459125197601721391122 1.1239937742588422695777985032854409 0.0227051992912525569374350938514930 1.0229669317080344577232778328418241 GT 1 -11674899634519655029298963814010392943.8882325465611899628519939884409018 0.5541044235499226276725673844671478 0.0746568428514379630961265669085179 1.0775906295648898090452326799004539 GT 1 -814411645384837671205.0006847768885291599962797542190383 2.3109255217826325489438917111531774 0.0230495140724436164991126423844085 1.0233193079292881073823185843813117 GT 1 -12316271245419842070653917487779168849720.8555162523906705672943098728144257 0.2134536635922565671340159350421203 0.0357719358802640557369415434341346 1.0364274313154014300058737125685665 GT 1 -61724631611397108524951493923621484339.3315341801121384437006335569914976 1.4235071902500245610909233030409538 0.0845345494752253600058128657056952 1.0883226539469404697428426270823500 GT 1 -3605076179101389.7072482529780572110467733798586929 2.6455702613297023440420055772481157 0.0409971142549138623751454620221494 1.0418611949842625738614753752029930 GT 1 -106850635106519015.8723947248826190003855988238909108 0.5490604434486371724423329233601912 0.0591387381427533066951266910173741 1.0609595871877467916048849044618207 GT 1 -6160730702307398454662130987271.5306158936257552891379953977374158 0.4901589425839230106822406874032378 0.0111232338522908028049763407428606 1.0111855596250215360679276784731059 GT 1 -72856665214060579700776500767505390703.1646261527379376490525215205959116 2.7773276127621743266459596908775556 0.0357686342513831091481584075512419 1.0364240072051196024002744192177016 GT 1 -13148936105703089217507637914543.0278111609397280927572887808996222 0.5284624163229510771104223271413617 0.0470809144641055927470689917845622 1.0482252839316298907151736035924992 GT 1 -7119349560576876811228492768814.0885959045799634375674467884522938 0.0843992266731639412817196482884112 0.0817332054659816516566481629795294 1.0852673047311089895341985640218386 GT 1 -5550014151338788484608800.9608563066762182866544658651335194 1.3045334225681145434382982442024373 0.0325895480181277449836394166318276 1.0331324144528676041493907774499274 GT 1 -23499742622528696097109359497771.7398044005155314330918743877400602 2.8445457887827370423697654276948983 0.0013436100203981806390324661576287 1.0013445134736915788786307610493418 GT 1 -6233659057845306182520584415206007162056504.1717435537657545811681137446339615 0.9065713171362097065700679721574478 0.0565926730509052815441274235251767 1.0582571416271608691236845629134371 GT 1 -4739601.0467734976367130685245980740686130 0.0063858216299374639238430242040430 0.0674544401083845615140772687590634 1.0698372708650524285731172250084287 GT 1 -798.1432125717859215329537843644576803 0.5658175825934673654160879182617198 0.0654306524838572189826267159362588 1.0676694466898425544233865288982126 GT 1 -81929.4946638760237894550291900410168850 0.7966378504546237223821282407652933 0.0729810346956120401419945490842557 1.0757812548290252059138612195502984 GT 1 -695373.1589339606604053982227001474852615 0.3848551063173331876502573202662975 0.0990008931414196976509025224869936 1.1042510126522257454675917088281436 GT 1 -1778017449811.8070884380459151390121081471031250 2.6035296852908568745902849685037628 0.0718758015804595255227102850580819 1.0773715338602701789497435151433766 GT 2 -17182922592920022041034344201305028428686598.9541201556884081376935015225572158 1.0061118405654413552934067839429800 0.0549101507946905434504007420888004 1.0564752774839337026341175188832113 GT 1 -36307495685311517784377527434350.9761868579465457955675262862172346 0.6047929427391578482727458545929477 0.0978746717576694930213719701773247 1.1030018237351665191881144744137201 GT 1 -153626275551076768240066430351373023992.9206830418552732070289796205576570 1.1638773047030121827656010730320903 0.0319249900424510288846420304354393 1.0324457050821588618818478039931668 GT 1 -17273868737479221037412492452677487.2321097020870529545337673864627139 1.1854102613183785838488339535749436 0.0005839458906689265702548422579660 1.0005841164534734058070327187218386 GT 1 -298828056556199923754808301170220743.3805455201114579109828437542624196 0.1681484564121097274154845940771918 0.0376843912297061653543968908959577 1.0384128064766810685982185872415454 GT 1 -1746275047643763918071.0453137135658693180010230657870823 0.7325437313564459158456956457654251 0.0649078465525428583794985657859483 1.0671101947132991009358698269212056 GT 1 -17454839638556049687318641451481370946.3629718396340282859427704219867930 0.3003325741066200721649621519603122 0.0569521010621563262790961178733974 1.0586382034309801217674014063625849 GT 1 -1480959790.9428564228723712493934648484489772 0.0498522581142463668024808215570792 0.0466451473258936622589192742133910 1.0477680913560322425157781727651638 GT 1 -5694555772142811.4561749287393202856941723901612506 1.5454256533164976668840268543816547 0.0559016681209967562535362309714198 1.0575249531353836353209585361361279 GT 1 -22.2900352022266053949525983349960400 0.3506134492199114865536410232809811 0.0726190183845779250043044816475937 1.0753908144429214899914087337231919 GT 1 -5313479793725731945169098129061.1628245908706854262459407636383963 0.6170277918436892664056364081317574 0.0630137495196739205901239600166417 1.0650866708318205193966595269732999 GT 1 -36353259445.7478587915316360066667169490570242 1.0824129728586488429492302106590940 0.0739122646102855822420840162289768 1.0767863021829769047268306736764645 GT 1 -24534285003219145.6219509195925708039655389714276174 1.5494403406350478002632229265328780 0.0978680594343903174198224466607331 1.1029944940451123132049672095731782 GT 1 -23691095746537739408109416889038875.3301743376215086070585729517166716 1.2880272890032840763816571888480483 0.0904969283291803472241058540565699 1.0948569037115547646370022729512980 GT 1 -30294866472199634559035447652617398.9518079244820297575045108485039440 0.1503210506188824719926235469818064 0.0805083204936762154009599496044279 1.0839342839114668023640606089461103 GT 1 -6228764537454682261723025678557924217393.0596005158901166261162064401889508 1.2558099694750532836037099863899453 0.0305068144297309234064567242073871 1.0309818331325194642314958234154829 GT 1 -56369517753207907930851009.8511254986828733298924122342488004 2.6405559863067020864485126619567366 0.0080619502301600450886471913445176 1.0080946234761263732316790009962192 GT 1 -299281116116950.9460874031236833659923783444072028 0.6593270868267685028828143782158319 0.0195809868039982754099896611088989 1.0197752342114519252950255688895629 GT 1 -3632392571867044122787786883.4674417203623773142573749254107809 0.0097022995691402765629609693503378 0.0905790422880840289509307036318966 1.0949471922091863347696318795881535 GT 1 -1449674326195272569.0328179860041757797454234237491090 0.8152966479251492800170356961711671 0.0459011128591371591253750081613395 1.0469879576217649453234320134002663 GT 1 -8334158397787693944.1668294690270639218789471527778971 0.2271856880902250821915529950323544 0.0898996913187080787917831820049440 1.0942004562259454092030097112853028 GT 1 -13.7531788941353539024968328654293446 0.2200074435044071158457828195163141 0.0914582223131729559791895402314706 1.0959144068572201474996666620102004 GT 1 -1138196052582768496115641395112426133739.4285090743493204615594145190756687 0.0224016066482926079648599532875966 0.0731592826224737915875775847466869 1.0759735540942567280039513942348407 GT 1 -63885618.1794671493421004539349959124794436 1.2513374168233427017759755174058062 0.0342417420124056701166454446887753 1.0348417266179486883997272973636701 GT 1 -400965851412761893160212661450107.9951868468183783127967752296539448 0.6297537039559868999004756624718780 0.0984914257459840314690927608418476 1.1036857252869171197382183272787424 GT 1 -44.5881779083474853549870183604116802 0.0238695095822786616082371207996570 0.0513059171594151322982874007878833 1.0526688897266264888024701127976937 GT 1 -1163369466.6354108045870157290701630046212056 1.1252930339619420095661638774530417 0.0527483462637938509996853410524413 1.0541904832562824201095233725043313 GT 1 -261240951008747549855961019011225212947148.1116770698506354108760739454114418 1.9254248789339811782697641308835292 0.0838281558766313284887330197663757 1.0875513291484337207934301463859898 GT 1 -44387123129232927.9673034287469410705746911883825168 0.0075758314471292110642319311143546 0.0781686091956094846925010807921986 1.0813929454630166702257974387750937 GT 1 -4456132.4122049098426934030249443816384658 2.1914845098827451782258873766453504 0.0398429333179882871057532844522456 1.0406583967760003488194681382799719 GT 1 -3655408.8503308735761441080988767152751133 2.6304902012406186228086491726904032 0.0392802914525590970232027664364310 1.0400725789986442593078974549531442 GT 1 -21404733504482715643751262397577745841267195.6226637244482147433811542111656573 0.4841997862939680184657815878215449 0.0175499007162255113883128064042408 1.0177057260616067143518181917613142 GT 1 -30772502406220839468212.4357083957657644534908387664359700 0.2357820287386011166065974397075861 0.0739865374581448889536416499479049 1.0768665060595059724962134476412170 GT 1 -75260221505730652800442011617023493.3021545004046196757108909737664762 0.4529079189357102128942029553100963 0.0232221051451572542914007285746969 1.0234959866066930789012431121360414 GT 1 -3953236799824904950106768343158.8648386903119645230915728534841122 0.7612971688427319481152614714148658 0.0024519311518546284359472354191880 1.0024549420577375865976729589106669 GT 1 -29.4497956807628306640694957349157888 1.1842242749467060447427976629650279 0.0302023015497517586201495861320659 1.0306677875347280097249696954690594 GT 1 -241581353587.7431233106341017880523837899304571 0.3933601576258671712249523471826816 0.0409921079045022230626277863420447 1.0418559746273495776338556563961527 GT 1 -11833019239817988299162.8846938239585568024849398806005271 1.2512208771322276470797618035160113 0.0888596517124668465343593862787733 1.0930583339969937844940672052550614 GT 1 -2173145.6981261957753967022863632655778671 0.8698482421982229867679607657121259 0.0172698500163915041217978671271029 1.0174207133236309765244824489961405 GT 1 -229126074451132.7090706961642261230737213580514961 0.1028821756755865671257219064362847 0.0253083525598550556711426461984386 1.0256341170404740512617578836439193 GT 1 -5108889406373607012640369.5321971788568344446630818204274050 0.5118759851696293956068853612531824 0.0160743618133165085456210316654197 1.0162049557340040125433642928882396 GT 1 -7707118519677966715.2893683519873540709428941269745491 0.4562778681482744800041635865049954 0.0738015105261840364408215430903287 1.0766667158223520007773202890548452 GT 1 -37264930.2841414267730954396205578879193953 0.0490730603620538565687551951818681 0.0549419171265796526722676761062601 1.0565088900190723299471583374193157 GT 1 -687470.7352103505429687633102588918366070 1.2278621293828891000518955505960947 0.0708249437552639979840793583756121 1.0734581227803182316805358962576072 GT 1 -1481959503876027483.1352931634570654523836165340143366 0.7327423912139916178987152600499533 0.0947730202394618848454140617011503 1.0995695603636339607066176471122214 GT 1 -46059.6789317512628283928649652316677187 0.9718708431073353318144571224532026 0.0026535651137134998528520811996047 1.0026570920583196274314945856915060 GT 1 -9021086061644924.9628699781493445319633729538652804 1.9400705692763084414758177606023266 0.0489835149204675267067409393346151 1.0502238821184985039816045119140430 GT 1 -46544078706703885435864673385249333366.6018095450979548038762996673918270 0.3455418841266509569908601646357612 0.0624478182847357839790142034960396 1.0644828621902772863951253138124039 GT 1 -1668082572463472001109489812552874801693289.7405136008448184623237626652341552 0.4597389135437603691465565044540265 0.0509803637594121117319800761941670 1.0523257890788066777658618717192770 GT 1 -1258180828857.6865205504899737452016618494044359 2.2132433561469064408261375396087529 0.0683453244022801100621680732058497 1.0707930527008826015438577080034020 GT 1 -1090874801383886583030722623638.5202441527185238438900808713487865 1.4315288412437345847994282488159407 0.0528210071147348951269330819006872 1.0542671932177753447533278477567400 GT 1 -129.3336325529596707793661855735213552 1.3519745849150181951590816172509652 0.0122448458257687552181739478334847 1.0123204316083450587484696037618914 GT 1 -1266297310859972721561410486.0192457961710331963263579485580400 0.0368641167849177177833840810590657 0.0185784284379762139620196101630896 1.0187531751704837081294887743998156 GT 1 -16968075797090737.6097265920182926577862561939426040 0.7179844538516731182593445072972947 0.0673424126389454308044107744190229 1.0697171472530599757666880180988177 GT 1 -115985269858147670.1310181456151356987259432542096400 0.4619628695884124132644096186367531 0.0391459948952832507898454887836121 1.0399328013189847513634246742852043 GT 1 -1055510643.6583794587367540021087071491139810 0.4368899090786161909437434782286585 0.0400015170296022005124163844439639 1.0408235747606726676526027915425828 GT 1 -8347678.4109925481848031058038416167277412 0.5907899785290617022483161023246814 0.0842200804555460938739218807747972 1.0879792056817213503810085579618410 GT 1 -927333025643273435322.3889686462651420775345546488284915 1.1407843330018843404688292227090482 0.0238447197794823895637218038817455 1.0241336066372865549550008959501496 GT 1 -16337344514763660.9626272893183686985671459815389030 0.9903303869383632997516196350942509 0.0206120354984560076089026931022789 1.0208274284339594589329903197547814 GT 1 -5123909160117895401.7601467976687668334911473892808821 0.0482082355146252752339992161814382 0.0913230395132768867156352665966161 1.0957656269692455167394540599045342 GT 1 -1867864036409986390345220077555763.4295917842235882021519904919140064 2.0433502789333155749384244536679303 0.0995481300122884184114535870541880 1.1048585638925705462780216791851746 GT 1 -15372909711379728833339615211.9568275152883251465443400875507495 0.0107030872073137558308424672172468 0.0811939128766187727397261756194858 1.0846801831092732340081527355059097 GT 1 -28956598390250011027026875655908536169915.6182270672671836175783760469102574 0.4356558482502643491464232637475565 0.0493917259308825385905373966044944 1.0506532107909627742110727538340928 GT 1 -9506.7509267859421639077906136531077498 0.3525311054312614650613839274830208 0.0616153851416798036795380170536988 1.0635953768557885289911527315844530 GT 1 -948624060022735233539769.9974724876631434446261433435199000 0.0032122896018693093838024540073604 0.0487924797621347648498076562337065 1.0500230275835531062142832149539126 GT 1 -18111794868384279429887890801693664.5998153602002435828077606743935920 0.6408208752149109524758987023549334 0.0045962825403622618423015145488959 1.0046068779256799588601527686784299 GT 1 -19193191478426153528301991307382443.4936566221947133882706956875286221 1.8059712126411757000957910330381844 0.0484319883677310928609508509086888 1.0496441164690482303536676878377181 GT 1 -959116446803025685480551737986.9919540575061958470117416185526239 0.6978438360690762711431458007005404 0.0340820294583111188362291421860963 1.0346763649987501240538161471604366 GT 1 -87573958510854445529875.2828086396748154521505276534151365 0.2457945051903253183206532165864870 0.0192137384170017273282103199152298 1.0194007212565747751812262022092667 GT 1 -30620490149.5261839437415142170105661496848553 0.4273759404320607127825823001199493 0.0791685381502239055902889411980118 1.0824782542066374282002471096376771 GT 1 -5300575417204788667689295590982099814783254.5162207637687823948339089855144898 0.5026379308154378118507643496412549 0.0249284440942230576521533056358985 1.0252444200046617932592742671873633 GT 1 -681058016.4333421414946180353327790999627939 0.0777826597414932354592269838810083 0.0464744827541772106516873860524463 1.0475890926365904979794423385115182 GT 1 -1150093559771894294739234.2703650062461101859025795595717529 1.0074135280033822347533796006303593 0.0948056230245168485759610624117271 1.0996055771560090430898119283640468 GT 1 -105567885055874314.6905063229912848102300614308847965 0.2031327393607051081189212360390647 0.0633126345483451815951437941672496 1.0654057072196577268958830572364464 GT 1 -12084949899551666027887620539368512699233560.3813374470918669840161836448014912 5.9209471299273185171680423741561252 0.0606333411059135340204470535942707 1.0625493979351199098341594442217149 LT 1 -3494308066441181.8672702469186054479930395356328545 1.5660690511224906818535088003246457 0.0879352989301207895469462031306136 1.0920443472686539419510291311724922 GT 1 -411.7632795491805190483402062950588435 0.6163519611810838803190692922661314 0.0729290873669497239562879405031471 1.0757252194347392534430368123844424 GT 1 -879202220047.4104556250548726849409322205938670 0.0188506594905394836417591323114401 0.0799488953851336812041294597353509 1.0833260619873916310692921519691639 GT 1 -1951229850077949010374773.2831621990212375597683104839871769 2.5151637935144180231681914212478378 0.0255001275456175346347876800758540 1.0258308909176676575455349544439415 GT 1 -123380404007.7453777485839076671834914631185044 0.7488193777494349224735126146765382 0.0239104566137790916084008766899761 1.0242009515046173841289183675005226 GT 1 -311744966580969003.6763791244981516196637687810337320 0.1181785940872903330086340581862078 0.0347003937469656206873996013198659 1.0353167530287858161459279980830021 GT 1 -7093259321874.0003190548342063997250801754357693 0.2111908345852756749988039612029060 0.0610507076191122574241778398877758 1.0629938029563139563675116695324162 GT 1 -896104999942029064184364506696705565.1403741983566945413571573099362717 0.2194337100179825525670846535459869 0.0840779052631143708188910868311248 1.0878239673387935815965424914213186 GT 1 -2862477445975185349161435484955738179080176.3650547975921750815260946585757035 0.3779737355058008520135651274079662 0.0160781719672911028381148702698018 1.0162088281418404990582886233346614 GT 1 -32948524958459094308.4788288889940284882308430966494643 0.0291711726376497140119157987579706 0.0748410341496614209465508729961355 1.0777897012617471403322591616145717 GT 1 -261224972534105140462295878.2974802661047338249486866725694243 0.9339396031110648242518499255377223 0.0033399199187207844245575142830439 1.0033455099014527404441678027151235 GT 1 -3424407357613812654000970078394063679.2938438357394496968248434457288449 0.7554957016119854175701941763699257 0.0310779657610210464055180319179172 1.0315711303501455504510625908434819 GT 1 -1590837.3004562921084410435627431785454600 2.5609620290137610999597058972933321 0.0449677423748394275056417134915756 1.0460101614538885109693842959458566 GT 1 -328876622172374994646581.7323726820674311048553594252683225 0.1117913489157914659649213066336049 0.0609091536247333842112611914957778 1.0628430564501815709421548022761267 GT 1 -693344.9666287904123219477018720642099890 0.8607809874638559968871597266005694 0.0359695279899072248980657090779052 1.0366323749022000714264297922742510 GT 1 -1694238954030651132327976928678562805.8330782801747494726873657618648591 1.8423810967279087122319428284615042 0.0352913509671876402842064725831292 1.0359291413303092880885811747000378 GT 1 -3577313473934676751075634571878874768.6161941215025140454942719311760580 0.5398805628049560874440904716385488 0.0672617299254828615185247954812275 1.0696306425970200512991432463589762 GT 1 -3513075953038987.6986220061044478322792409800797534 0.6499081741828731055035969385114634 0.0532143244774286792955987694449603 1.0546825308161039749580199651128766 GT 1 -3328868818758961588007315046312958.5042917864360507712509057508948423 0.7889349572835367653263917400868795 0.0746448288835662297476874028700847 1.0775776463923344363532132058272449 GT 1 -23.7534486326488047582534116324884175 0.1157375950119539742141628178582969 0.0719521421080269103624541309504218 1.0746719765213936553814124547371570 GT 1 -9520408640366618716651120078320126157678461.0709367407143548220246019759496772 0.1853475835285880794176772273708000 0.0759253271884627574701072786558024 1.0789623958746864387183694328966232 GT 1 -6569055.2910972293146783621126281739904073 1.3174922153967055653159090982624540 0.0701550836315938544720370801198753 1.0727374633333736778177380787506185 GT 1 -17473.0615166783545525877341593947397802 0.7584090505081909587943128168944954 0.0788001940339909200244059346359143 1.0820783216674038751441999830907007 GT 1 -151476929722305939828020496412051632.1797290440371538695661314313043466 0.0363985807310975341048819419492232 0.0627563319633998554308496616647526 1.0648119792848022231761092095348355 GT 1 -89545008692112495742627.5062562026492870758942923043138501 1.5111317106811238090577973473821338 0.0480733187103998914685186664580618 1.0492672626087146740159215629664633 GT 1 -15728453652.3269300795144715941711503114432180 0.5348000441611071592208044683061344 0.0011707479782244359681604878440469 1.0011714338390043676289031354823929 GT 1 -2186686559904460242.0737889885474859564462308205920204 0.0593640480799816771517527359064335 0.0067625983384143243076153440645301 1.0067855683229820929957036570495653 GT 1 -248047104594022274922.3097701686393166970691547888065737 1.6332882149842357451350837860306342 0.0038762580446330379641437047289390 1.0038837902035421545339791311471198 GT 1 -487960518531.1683889231497605664400846687261515 1.7083893331358231168133005978912979 0.0370329113001987511870384854485786 1.0377360435730007519207184156668870 GT 1 -761114566177248.2399205851808553249361551562531813 1.1146204411747846443129917417859513 0.0457574521510927371991478280401093 1.0468373968199275385291676025075851 GT 1 -378618339720432402920750804.3742199597707431678726623794327592 0.8980076675129567841882987516838791 0.0176200726401103617100287191478324 1.0177771540456695933025437542233232 GT 1 -53923616873467911.4584297524569558848455873049368785 2.4268432878398435847535723746434138 0.0092792964746450874683467556709179 1.0093226173459120771421278380595017 GT 1 -2716218.6368730258515849819874060581061339 0.6838963438685105401641170876030861 0.0790189053509311369513215728845381 1.0823157699200644053795071198660952 GT 1 -16890381784087339871677566971674129927703.2065359297566877252074112267630349 0.1626018805948173487021109872201719 0.0533210666413280766683558325111084 1.0547952788057012483536369353073227 GT 1 -45942.7766814330778045319592912765605315 0.5099159991296582562410389080508831 0.0440082828513420014532768203853118 1.0450060300387104654717485955263518 GT 1 -5251034180349594555621447747149712081.1260546756395543622430427157960365 0.8140139439823779340790576237876534 0.0144837410817047348699077085612074 1.0145896543841102310476004506056275 GT 1 -132210393785966944442359946952.3998070176439476726549449551001565 2.6880905396244460311202008724464817 0.0632513823091668768759700599153345 1.0653403169530553033696484150883318 GT 1 -4082402154315552026.8217283213348240279795098890299082 2.2362817074125819905065285276980874 0.0798777407768985752438320353349337 1.0832487273083131723516072035755419 GT 1 -130143119043961768704.0998983479907754894926523305418158 0.6594132774427371392263610307343843 0.0743146970465276886312474453620148 1.0772209477191681955854029889661278 GT 1 -1753236044552251.1965893226400113897882400313901395 2.1018232828560812563822403512573591 0.0588969963589612018635155557266080 1.0607026834945646375543273489297418 GT 1 -67925043179137148915992229614988484439417.9858342625562544356261721707886276 1.1702420246384367717436978498328336 0.0032285940781822155387888205761789 1.0032338172333716155764146951845767 GT 1 -251698202611448679833112507127365827926.3528939464037070812304821397757875 0.1188986834707804887569811365061807 0.0433764086286129799586276312055033 1.0443452863513594413432600477721740 GT 1 -5400197145817059433796265903992.5542927538695915081910682817866606 0.2625927857273092887265801898477871 0.0664978884153384109860638027471170 1.0688120539947107043710823893062224 GT 1 -10471288723686801601720.8006448967423314227548529108695413 0.6768915505682598370297215854070935 0.0325147162579631093857509223275147 1.0330550647964284180727021820711669 GT 1 -5470654665283495254819497967.9693323882431921335286556734588795 2.7360550541279305635255232445538091 0.0939988235145861173343870679037674 1.0987146743909788909495413149812568 LT 1 -4820032758026699773509503875079.0284576677295770344759832013710338 0.0980813556963128384253924510682337 0.0996965445008102703582588788476795 1.1050233997109155712159056884344818 GT 1 -77714874.0604542974300811544562130483973631 0.9505451893714581921534180291208559 0.0019037518511873863134680190501081 1.0019055662899359593781238260854081 GT 1 -368845716053014.7473645125205288828016924133147368 0.1424057344597378941184652966205634 0.0625024404661380669800819665849293 1.0645411243048400134264127463939451 GT 1 -98763203508634568969734596637420195.0120580638184785603152469040838284 0.4691091530377714040474905359767698 0.0389291857770306885336576154909922 1.0397071846694759648814868637561430 GT 1 -282721391105235516639535920977033777970837.9706303719889131911992843602388467 2.5998757568332885607475676314634476 0.0378437251445301626240213577008598 1.0385783936349490017789404702862696 GT 1 -49208020732228542959893.6854733699298463083224343242634024 2.2573120070003816393457007138758568 0.0220129945818530866180895179931194 1.0222588959291015821732014257901791 GT 1 -1737.2054635415458069181007354663987094 0.2450029570199053669374024992554829 0.0563111588461858831180275652384219 1.0579587845942061600892886764330764 GT 1 -187830699437862323.5902942774931433289523782289539951 1.4589360612249923888515565524523847 0.0130183365189118340431790170034869 1.0131038177545745908589349405243054 GT 1 -53818067643009767340.5660318377188886623177179774453031 1.5380440175497620076264080329619202 0.0075860399907631789033956250884076 1.0076149603456170781206143976967291 GT 1 -279853078989680731549299182393.1393094807614180610020364967553736 2.9772023459970114338081244676268425 0.0629438564850977706796874092380122 1.0650120801663878636744905553590605 LT 1 -259.6798835865601203349731374792662238 2.5644621870594974474479616044691629 0.0616394831808058364053669132943989 1.0636210575289077577687437812856753 GT 1 -22939403390994124.9056458653927862495456326573595519 1.4467003971593979290017736761850852 0.0292418178425315281740684337650627 1.0296778817090302506074851281648179 GT 1 -139800469167126033821052579144274597203971.2322686635014709650092782289421108 0.1870743518940180025280823090122549 0.0162351985465635955758024480883215 1.0163684334135872902596755709759152 GT 1 -55709899960284497823030884409122935256.3333183353201139625516510191571551 1.9913411569219335449827681438725985 0.0936044022804136713171876577610347 1.0982794261649693438517512045725320 GT 1 -11590514098209674998180211253210009056113.7886178124536349770717748301490000 0.0634851744893185901799995414659413 0.0714463051204866582817864014917003 1.0741270701581501591707792446476307 GT 1 -18281598391438780277566645071746193995.0822190490417376793281145626462611 0.5369659718155901429528018987792299 0.0389410326034989981649840329681050 1.0397195114401048224412545699028146 GT 1 -2321371530170244335807058.8844236203928143067253782073114469 5.9414145249103346812310281813349484 0.0436698352294276491291851492093577 1.0446520649153198424114478394361858 LT 1 -14120953225129281741119306298697859839545.8484947638395397768041113828853590 0.1919468959677741136402157250072873 0.0548996028017274685330702870799702 1.0564641167100557781107798441394994 GT 1 -59262988489.8454671086427846882625508261227130 0.1088362191344317079998249657395550 0.0714886068606245511581677475454904 1.0741726277860632838201359819948631 GT 1 -21909014654700746.1297419751354825004533138933636353 0.6873268690748163143347826330642463 0.0445758348765037460249273340320348 1.0455998851459168273579057264784004 GT 1 -131607098937.2822088044332693136431829213328625 3.0738992409059424658990770631104935 0.0814871794891014867211385053478856 1.0849994163286721300063241179859591 LT 1 -734704061069042539.4119703422275646413059479341658608 0.8792956787858585242134132668570987 0.0817912434404392280797112879477857 1.0853305105542873463951254833035619 GT 1 -245895589697615543319924999788.0917406981907839263534684239817823 0.3749799876490623423219921261513236 0.0410818236263469165418095911228179 1.0419495295598207122668537254802599 GT 1 -53810399958927657452031.5762841489257787652328127058271123 0.8721192179850080221669434212924332 0.0186124601541137447398815975269064 1.0187878517123268731100017194223437 GT 1 -13872672816687647617.6060162694240261542759322821187463 0.0203292823314631250920753800676089 0.0951670455420997654424811653830123 1.1000049330288291082726262015035351 GT 1 -274672496050281725271.9033410450043584197101745249944533 0.7273325645593509733851254804058969 0.0611566878473786598538598353541864 1.0631066804147969265071547245724156 GT 1 -4522317297042.9597344600262334690574220735909478 1.1181341963154414002624850247830001 0.0369866323010886450444688912008834 1.0376879859730752078547300207228438 GT 1 -57938589732277.6463223240295527841465577297298738 0.1141008493062262775464713459133469 0.0334988937793032320261077083862364 1.0340728357708298929435961134145348 GT 1 -7777775623154455.3408735521393705533017267262755813 2.4389131523351337181370018015283165 0.0928162678170209360742637591473846 1.1021546592029928578835121213031139 LT 2 -1081722261054.4821942654497403610197135995294801 0.4696207790308828813111458054717569 0.0566419589982430439921328862721707 1.0583093854813105775457898711324400 GT 1 -3432658466359862913049491716862745.8016191875849881155717137942148173 1.5574964651389791574782047843438468 0.0706602249973222541750008687403416 1.0732808642988645400746830773011917 GT 1 -241078.9225521069810854295898780586541119 0.7050992070834731242140527080391515 0.0620320582061150197984999417270857 1.0640395077519861896052156400680493 GT 1 -185475.8611192429848700483683836521985924 2.1837840405710232189844291766565511 0.0114966207943863807474736915729768 1.0115632178587313144708100835184941 GT 1 -442758213116755271427996621113071780008.9518018318602602936414638370317319 0.6106677396609762405405353237642844 0.0512738105990822459372551227311053 1.0526350473978544642062184402495984 GT 1 -144176671365610113947624078138844436.4077940032310007930599323961362430 0.3295338656331500435893450645325464 0.0421640585813964357600490747272921 1.0430787668052316727058227817800239 GT 1 -4895749968201.7449225937065544547286147692422182 0.2098992269916589687835039081001969 0.0776335698357492463793522777250299 1.0808127047005689548196960656003399 GT 1 -13247174.4625208947278254570542090676013183 1.0975318401188653033978885592223190 0.0713172481916008822382362792014058 1.0739880927766501854212248360840193 GT 1 -16070330398686757285017185.6461922705736830727747265059192953 0.4205686706531446420925201206620034 0.0041731855323199409967500744246419 1.0041819175731484945399706419142993 GT 1 -14712826.5182135871234909529361463193137884 0.6117686706404524518718572283048541 0.0740024889060380870777388085390317 1.0768837321430666731438624781609569 GT 1 -14093136307078695277492.1078634663308055305523438442317071 0.8007417716434578666267435780599795 0.0112186556151852155263368340513144 1.0112820593814357197169102664612011 GT 1 -67838212.7771629132742214700632881947563548 0.2863730917320533476665015555477839 0.0237392208241409118798809136216224 1.0240255364798665501514022290470335 GT 1 -12487668533589270277125.2457381889068859362027281317127470 1.5047870278837137906396389987631978 0.0177976394967087678869624940079076 1.0179579220981751171661696680824547 GT 1 -1641241304418742299173789561829837771940287.1024715656312122525959563570594283 0.3642295239687317425945913336807403 0.0242688588749533481958614753756843 1.0245682006766817748581685746567466 GT 1 -6291396352783078.2278446665898349879713714367329301 1.8493962653984100145703731241075016 0.0113238505006366867834000150925748 1.0113884534615876785777241375226240 GT 1 -36849537620698805811.4696718370661654622102620218624286 0.7040767429159887055779514181269749 0.0179115550017856187006302581418629 1.0180739084937592213154328395080037 GT 1 -44048406337817234693761466.5583622418137383533139676767459374 0.6900378916736839700924633750594928 0.0557135010016311390673657633891786 1.0573256641801753224919080332424644 GT 1 -106315365434261.5831848397679072015420889678798833 3.0161659167535172455835025729797259 0.0141116087336242971897181833811395 1.0142121242281723825988344791270794 GT 1 -18428.0625905202439886066896281207063238 2.0978378957398832991739331440046342 0.0176206363490661225429498666539722 1.0177777278655347950424291949517694 GT 1 -8879070258631101671628422839973925139.9077244167748214018018765852585881 0.7759677398485019933092982154876101 0.0036940872378701459435783682600599 1.0037009272283408003540317724368887 GT 1 -3228175.2956552293697322857088005275282473 0.3963698907986747108509411051139860 0.0880843909258257057538805751569247 1.0922078270992286368305809996068083 GT 1 -1824807058711.7498423984751559133231408822799380 1.4988328327971649689189163246106306 0.0571023091520388565529513358991410 1.0587974955028338008847571765838938 GT 1 -629174904502670849554976662182185227026.1706968553323116698789061458804169 2.3624434772758633035278618328263884 0.0820343994943470062401313604362063 1.0855953612798118931111511028985841 GT 1 -87229871013594741529964831041612411.6060402304336595303886289176741606 0.3867526967443209019569799726049903 0.0273976976462909940255368403321886 1.0277800137998422077630585969827122 GT 1 -535692251327354.1965581132228275537438153667140536 1.5466368171597943753715175243115609 0.0659624705401648211903950837714660 1.0682386601260336071637222669809078 GT 1 -412033759097014540.3544766653253641265564276362394934 2.2261066488684626231572060008112560 0.0709299198236346395685412033911313 1.0735711068709796959929620087431828 GT 1 -9000015176676899630910256178928.3597651532612925155387409633848908 0.4288745236891246128965530099096693 0.0277901627242724265244371770454988 1.0281836158499443321486338726874414 GT 1 -728849248618489567057028519.6203494189962416191168149731793477 0.3960740614358141916558340644726803 0.0891773063082803231991153962067238 1.0934070288845552627279468477355872 GT 1 -575495459599046368.1838646077712613072992365030501340 1.2099259518416930946915452839834130 0.0403658037682451297583433001585232 1.0412031127284960393361364770301066 GT 1 -11287557386817009927614021183938030.5447323511361663277836964856092425 1.2134253820151194474994928359281187 0.0973598727230560301203499846323827 1.1024313351467450040972928249344742 GT 1 -8464048012825637445611977713540126936526.0702275136265261186123795322658490 1.0840034558832865537295753134023880 0.0592470571977453517813627379636667 1.0610747213686468576372814575977427 GT 1 -25226606542745865274143.7676341443858086181427635400428227 0.4056208236713926631417096500742086 0.0100643016353307241314529265158974 1.0101152891097172275277795453234167 GT 1 -195395004139110242502099186238861788003056.5756000288837515866605731013320236 1.0839446203817637157169463101651317 0.0115358347610570144319460562230346 1.0116028886836631359603010502544827 GT 1 -5611709132544688735090584308130417626.3198094134581822694229637230197994 1.1229798782448997662403218981664458 0.0747525185440495481978390574324959 1.0776940297342205863125202605260672 GT 1 -10048025097198793013382742108495537903629.9150432022624686169087244746654042 0.4529472683335621479785730937615073 0.0630790203230772163429836359436032 1.0651563336223570761462966107977174 GT 1 -8887638483646328847675700154.7761382266463681908492525754873276 1.1310536443074402263221028182998902 0.0386503181933935991882574517534461 1.0394170633498488861520259454161704 GT 1 -76262550937283777723738.2581948840151832013826917052552163 0.3563509392902708412791354731334217 0.0974913331858054503743076970486658 1.1025769857029896038208388854885891 GT 1 -57665308.9266600767800093940358847232634430 2.2525780238636849661772703291833902 0.0444690754025288624677872477972916 1.0454881509930210182082822045679355 GT 1 -6.2439256053238473476813093692962905 0.8066542110421026163721061984861908 0.0699739826063518004768237004155808 1.0725427175340529684678582911261894 GT 1 -34109360820712195174200105433.7980283950952845138374953314282148 1.0308327528019582217654843536021533 0.0612653261662226205655898946285110 1.0632224021795129980918485698428763 GT 1 -136064961782829316.7854935473544285144243623497654686 1.7435243904512496493525917520657887 0.0615327770597868920212629668590489 1.0635073485092961905299786025218472 GT 1 -674987436195071066729.0642833156736039748620583031568863 2.9888791680326311741294453154927120 0.0630660673727936254050729196581662 1.0651425086989878809935180940369027 LT 1 -116255804370126947737815.3009839719788647805843721759144283 0.6683193801919130284540673815322829 0.0410376426696052703610036326048282 1.0419034568707527089795709533893689 GT 1 -9798367933197226774917285801396585861865849.0471165032283991076732160848342096 2.0254842137720509386406212753599271 0.0280475961273334631768184696861816 1.0284484429298217090414946320736350 GT 1 -1012695916039363.8481848789182938561088954577419370 0.5182711217524154377864524612425078 0.0222673569544021281235155095396044 1.0225190174390358876236191159872545 GT 1 -3.3560385781518078018979247143668392 0.5601176189201458853141882201801336 0.0514891181030550514767426881370974 1.0528620169296587506224429095148123 GT 1 -5340.5632612657674132987486678980253518 2.2094925756581190982256832558712587 0.0011355040000617642300331710564872 1.0011361491731728507539514134092385 GT 1 -96973996849508878026926434456356807698325.6887590434377531213800933933238242 0.7301498060044951709407854278690478 0.0786834425019559485523872088023809 1.0819515911433159051545320932315187 GT 1 -30984088162080703716156483278230072863.8336362128031807062155312293051302 0.1939601186100641513321729449305915 0.0662884941228323330911149080294115 1.0685877686837793346192705970930861 GT 1 -66825177597992292671718502666.0090741094060589250676456833499399 0.1433920011991608264991148419756039 0.0970464678637720611784301811733273 1.1020841863175524426905178121629568 GT 1 -208647442773069123451640340447.6421733592717453060952491239625203 0.8164643306584413781699685770791012 0.0204212747923442576998229694676148 1.0206326719761627910787946925998933 GT 1 -25770711038438499676.3997636224059943385059118637040190 1.1578673940725922101660447319167158 0.0224827010880742295549446651000556 1.0227392901826087287065652274593927 GT 1 -41.3999359285711973211577500523911519 0.6696603824719717600465551911925753 0.0279953792462025326176193405236077 1.0283947206710659912594534270385391 GT 1 -18958.6976717871026914455022176978140922 0.1345653528010358140897830854635666 0.0294676352075751980517140255258548 1.0299105283537244090311134438769260 GT 1 -26959318022246697409957104830291.0996239697043366669788186700511353 0.6089078840532572117130708534728817 0.0964502000824730735406870301122633 1.1014240515783881712955201428018883 GT 1 -53010385285659.8460785689372719319507338453245254 0.0079735123348955030622280957192852 0.0662751395628051704711829825427040 1.0685734661241116686206749206045454 GT 1 -23.1681356858352144114393150790506432 2.3304054491430721211458957833340346 0.0437727048309772410674736201880122 1.0447596377373693726067705914528475 GT 1 -94341235937905848.0369130466479636044949194916555128 0.4488642429948829015384453970092302 0.0975194652958359123838903163711078 1.1026081572025299613600697253358634 GT 1 -240.6509456877540267677213084423466801 1.7533385561408699048351111106482197 0.0058802760135750527431917888815414 1.0058976329122568509251092524364003 GT 1 -92213298222448.1939600873807358871691550700653821 0.1005714617786612416394253382902551 0.0294209101869015213539283264052927 1.0298623858108819148894362206276760 GT 1 -93771100162549684835866372260378107172.7156603661768774770608581062305435 0.3201442259655411243894355264896718 0.0616725627560861061046264547280351 1.0636563106728436762898221053502302 GT 1 -972749304476.2757833450288146357925962643901224 0.2435534657181558253896348612791146 0.0786528118926523987751379804913168 1.0819183451326105632790808637675004 GT 1 -83.4589329531679297615431568319311239 1.6427589523022408166827501871006740 0.0569482469413385556113714024863212 1.0586341165622786761093864279635174 GT 1 -43287246326.2448209530436033027409813305804938 0.1577879268471136528212527887449610 0.0384476709759660154904561990403473 1.0392062910722846624746808241631292 GT 1 -325840618298831247895583681.3652187405925448092627272029311365 1.4710590182873305667525383302934079 0.0692962644351036845091912289734386 1.0718142740831556262390852595351444 GT 1 -1149830682.6212773578398997320561826635473502 1.5709323306519602344141652067053726 0.0477454180113353064672794260499570 1.0489228618852865455951123267039293 GT 1 -269708059149866730133551775645124297.7813490438153777380289545421442299 2.8238183278289202809093706859142694 0.0196312451436553080027157747763995 1.0198264976276022214556698193084313 GT 1 -147542589317488889758843087.1624839847857298738604523753670309 0.6103945234560700910570722613871791 0.0263521997496001167509707921238325 1.0267056421187741382433907026850146 GT 1 -75.3032024415495572782740497716952339 0.7639142114397469258530011938658500 0.0407371286622587617366776101636520 1.0415901318187058420647881860636211 GT 1 -1227703404694134652226688.4272564759038871722238258826259238 0.0726980392276795747988849149618951 0.0457044090177740996671451280734953 1.0467818117286442376796965055760923 GT 1 -2.0242992362186835950039128704246571 1.6141090581687185652901139609262890 0.0590351157212691674235187314448283 1.0608494575439413387389606604092389 GT 1 -2002528087039.7279236718213676789225004241641621 0.3473585988663912082379696241467952 0.0836539969367580845614643457305241 1.0873612530292134130338887004309711 GT 1 -6527381295245046737875119629274.5730559076773001896953733347132564 1.6078990990752896142281337450046369 0.0134899424532970087516076884596399 1.0135817583897821882998288579216424 GT 1 -3283.7347889398323042788809920535871810 0.9358982528024897558176182370767499 0.0436704497417995296109480345036956 1.0446527074889747920673293279569385 GT 1 -209509863931081478131513962944.0686294529932549750486401386679343 0.2664053710368305112256823119873745 0.0254190192988846230645291040747052 1.0257476637425113082172388802841967 GT 1 -536352963227987.2952966507412736911126937313195794 0.5625831775575091912637187577060422 0.0513380737564199491834179315553111 1.0527027859452105988326180310764579 GT 1 -18619857.6434048102697816080886255111317398 0.0137432552437758463426800814752176 0.0266059856783595602159034242483042 1.0269663308500559269774182619317550 GT 1 -787205172253018243797480564171.1007490733743860559471808372805287 0.3446697446333002807591959040388047 0.0743730789994383234916022972567446 1.0772840186071303524532145687040360 GT 1 -88021980833591561451590866.4622055115781468254814470274958196 0.2335419483885625619673556847480735 0.0314308775748691958730132375347820 1.0319354280828472285510107097977817 GT 1 -107877616.1483693222388561106656831150198745 1.1085442606868502987286524749190157 0.0292553753616929220815958079372739 1.0296918477142445200430306729525611 GT 1 -11694573943.9502186104190336307875339850710551 1.3523369635073516496187452854612211 0.0651502262359319937684443505109155 1.0673694323732706964976152328858566 GT 1 -1534007.2311237161089173750142923958589501 0.0545776896174015271699347235360343 0.0960496859258156237310187129659286 1.1009808824077616826051425830981524 GT 1 -3656709.8777861926605227190793659076501404 1.0902798005146509824012339853017658 0.0056572784124242044915553017596036 1.0056733414225361767035023359007213 GT 1 -38.3191351272931689255584489897418395 0.0712016024916784624006187956262209 0.0581590227373907487411655050199541 1.0599188326027267337890572907120229 GT 1 -211.0332675116345118470208237948021493 1.3220119591460705744622977108346836 0.0939141692105354955825471021284965 1.0986212414556150269460842399708913 GT 1 -1421974064068717077574799000837.0343914624125716784583303111637188 0.0213322315847030909390541863659461 0.0036026375375830798300184946009781 1.0036091426646395519236861499820371 GT 1 -416692635247169952566637.2084475587081818053606432674195088 0.7503342051161894723776866784475320 0.0516526855148453998313290961250607 1.0530344783318950770122472613792497 GT 1 -1434938.1747314653015113395786473167651930 2.1120718448275711164331697592763871 0.0407233300670282990023714590709325 1.0415757473403733690328144264656985 GT 1 -106805859587.4934936917026166022199004899088536 1.5371023550563334525270919070694425 0.0247738167834012654432320582974058 1.0250858521018805833973822069528542 GT 1 -6.3165024052554335909318649907719062 0.7802468889128807171054402089077443 0.0933608502795159180801885782719857 1.0980107583937568484079368354438047 GT 1 -5632664.3433641345176904254502324597897077 0.0343136733699794195164874642917685 0.0821254636279167702178748088913287 1.0856945683205723454888627739215692 GT 1 -9541172570100001.9747235166158052577483303326728786 0.3822617247109392019491337718740704 0.0325308496795151048969164749049124 1.0330717405602276684260385267821729 GT 1 -292605210118773611408530300478319194469.8579948158490136960551399117814420 1.6118663296166077352863889315795168 0.0765438608447164714726628814797273 1.0796319746176839310621445609085268 GT 1 -3070214843914144.8946393178807227697781346535783528 0.3007219530034223612867145204204139 0.0912419813804329466743823461118942 1.0956764263828921646832483438097787 GT 1 -24903123486400612283906843796591106648.5078505400806124467140714469560892 0.4222917925039258877439150622599859 0.0559928978611195563939351331469413 1.0576215894127335286011743788751894 GT 1 -1043986187185.8786622406431769271344860617547453 1.0280583951000772871171901279766677 0.0752319603029917907362786740724296 1.0782123408123641949273445196289748 GT 1 -26291.5585896005045941137046294023982142 0.7179808123896577340588225264278893 0.0358820597492864089165637596600679 1.0365416471966721999659937989719937 GT 1 -519879668990814709119013548083.9987824834990983358585937043774903 0.3005884847070071382862137318133592 0.0581925910861675738347381394497907 1.0599544744444066643280810467535217 GT 1 -313618.2823764995935418085404842072727319 0.3565526400340807660664208384326352 0.0255338487640886789647656476934183 1.0258654951314554991960870251912067 GT 1 -8306569028363898530.5344318452678299233004884890726923 0.0890806870315801697644133536737222 0.0780525914823825353195515758365535 1.0812670977057664707992699794573948 GT 1 -1589092195430736837802040104410353109.9382861441538713506191229213997786 5.4354741839997786199119072172392014 0.0938548894422822934986151076588569 1.0985558195858942972959726160830304 LT 1 -1773982175119712394.3900250280668982124094354195089763 0.3391421752446498239199779163297051 0.0230157909466372624253219532544292 1.0232847897584440896611938223915932 GT 1 -99134769144590151454.9520485701677535459063107282406729 0.1764105121083851148969767013797657 0.0864843428419263200132042293688584 1.0904547635648470135945434495985466 GT 1 -20561877.7173665142951940222140251818722912 0.5509786964664817445389332571993810 0.0305410379214823045391225206662472 1.0310171341499235659706382227782621 GT 1 -80054037936094449766515594971088618873.4540465743922214203187554330180531 1.3381048600096941322006444484365803 0.0287446305234114982701228732664229 1.0291658488969375653325150653242032 GT 1 -1.1675345659888606499238264322614853 1.9552491115416695258802890373398243 0.0552291217826927774887406035068006 1.0568128377987258512515067012547915 GT 1 -456591200246490922851727844623819.6547086662584397533613947709151980 0.3634809493495796467822747456342881 0.0860407378510197484616022333524446 1.0899692794742771382183790774965773 GT 1 -865124900268204.8384406783356368593197697198602816 3.7351584549212558633127816305318106 0.0543146371927745273103603356191615 1.0558453627084237814801001403661544 LT 1 -945.0710632835837571481972054789381105 0.4384858687035075987227823031182950 0.0355390392495907770105225670286589 1.0361859236085579664923703956891988 GT 1 -124256973.9732927852558451373114069433465614 1.6894086315205921219704714941191267 0.0032949389250478821797707906798478 1.0033003791898216077991851559953538 GT 1 -1620356331338758744168003144747827849.5522950105859451647176939639098035 1.3235978214195200575907106464519894 0.0420476711343329792551994937791353 1.0429572633499574913873843452080414 GT 1 -71348463446.8636609925561052635550948752368381 0.2275208706374836421283800649385690 0.0508768383155354597840980417486590 1.0522167083035431189012696133313140 GT 1 -43786125463834301514263917108922291974.5670427814235949741332608645038530 1.4877134504984060580342737385436205 0.0315627191191587533105762869631070 1.0320715572606012471181839578827176 GT 1 -10178138914713.9525108624918980803394537692038349 1.4197426130236075804045598629460773 0.0393942051595743551566491831396440 1.0401911572478247037358602319578150 GT 1 -3005906608830452115028.8860418763967093361302249346939620 0.0078460190765599400837307903527424 0.0666692257231084634167704747418193 1.0689956133368979579776925786768946 GT 1 -352777895190066789479408.1619793052917189071914706478028726 0.4495484076635143865062223578898667 0.0497622214622020927432092101379410 1.0510430325079852299970258330741998 GT 1 -733007485095444073633790923265242528.9069619330091765135443485947861252 1.3252117242478418899063743688768202 0.0904650916081703974164103373420496 1.0948218998013977001340853826983068 GT 1 -46152.5238136298892423000333492064821442 1.3680229090898473898684294044439452 0.0625918779762173195960147271799775 1.0646365291148278824191102649397719 GT 1 -50050775453968217166.7507352574233495793613860164516239 1.8282602653874093779139844739556790 0.0541185168296089673047927208014967 1.0556379998396091153105846199245218 GT 1 -4448293591119944231575718027724907313.7111365937553826333797577836962678 1.4662683648860136667140676241360464 0.0754228504684032195098683702692664 1.0784187816295801478857059441351682 GT 1 -750133853.7937203746597300361505468457468866 3.4614585908204432682969698122618099 0.0834483870926680963689252673333520 1.0871368980590711643605506439016260 LT 1 -4167.0415194934445485495303988031645761 1.2897456786281444520818959044202198 0.0868218600947259496147081465828498 1.0908243025178813454231275867266012 GT 1 -419567.1532128070822263603015245193458799 0.6822325594587506319534151975685297 0.0116755075195392696329379720766868 1.0117442014721286713312651257826113 GT 1 -109785535405019.5588552824296242215462002926269223 0.0005659067816655747234370170414826 0.0545074103996557841386475489226897 1.0560492284602463470881047678138612 GT 1 -1262867193361.3342273134950774839139843971558072 0.7384876172367717027128302417681507 0.0544904845229625096265450427976655 1.0560313269712440025894722484599749 GT 1 -1008308483577249266494390575380.2633159707777597238757410702134954 0.8480464241284742970856571023793384 0.0246214538076462543030060764791514 1.0249296308298127692998322157795414 GT 1 -2488301179918.0732438360256276072777582662354178 1.4817920396021428842030154628625728 0.0236009072605536497469945427047145 1.0238838696531878023925586028837885 GT 1 -13791849866313704746533532585023013048.4642743620840017060723395757421214 0.0740908394750746092056868134189452 0.0378674053738914356730570706006373 1.0386030055627505153623088241190283 GT 1 -18841927358888415670500152275186819610925.6135336625910364722665806760334830 2.2190694156349860287595910549888762 0.0220114222749999678221420270514051 1.0222572882333136904628612932142898 GT 1 -4331034301344856803002937470538280946.5928922623182056200830388128408967 0.3076407873402247412389925140936367 0.0706560290359665276498255261149384 1.0732763493173731069406873642933762 GT 1 -3800798466847910.0505808633668309795795358706722763 1.5340090525326697248344258026530656 0.0893830801651266006503917506571566 1.0936329752801355077965773075261897 GT 1 -71109011765364335881989807.4088797820968751770063631371835227 0.0011350125829429975558239824669330 0.0825860031197169939794336018459482 1.0861964398172035817488945674876139 GT 1 -104588012381383939.2243827734733582452320940306043050 0.1247738462149568735433895538159388 0.0077647756307065677079634116780599 1.0077950784660722834987523122883996 GT 1 -22454166700895614034255355104.9112354022633327637922966447527409 0.7756510178162987466543726205346060 0.0990932865688852737228939822612664 1.1043535634365188939225454703095939 GT 1 -139202552215141672958705140337.0142432334690029384756632398292553 0.0853831944569939807804133925475286 0.0713485721357855671730396226099639 1.0740218227801471071362773543161467 GT 1 -392872936813499881144058635367403945699.1478750143352745385321265333712565 0.8871695720595923440689959403871407 0.0950153365479138767229431942110270 1.0998372818875871255604084490127547 GT 1 -2031404438519309522302099168462940626618.8684957293668543426801094682220233 1.0064896651850840120437672424177637 0.0856250606416814921424332126574469 1.0895145735281130298509912079445022 GT 1 -62042518364494095088639543.7849621068377163952410276119790400 0.4715851039970025565582922979278723 0.0569188351830704615275783790683486 1.0586029291968584220651193050028316 GT 1 -379129715943023561998159580648922.8169392529650003896670516362333238 1.6965152964472597292449037466652459 0.0813278072994927191330555939623591 1.0848259202584750900327801861047029 GT 1 -2623601908470014.3730104777505134793103158615964996 0.0712679838337276626308383260089750 0.0804259933575012405001124355908268 1.0838447524315963150261528095740518 GT 1 -18667370327149707458082615906435552.6875698135605852598809248137233191 1.5340793747860676953207168609795846 0.0967708593782443630979879082882613 1.1017790029140975054442428964049533 GT 1 -1194032885736.1037991006428323827130749853094669 0.0660486763698719289898451735215863 0.0565011333322779852924432548161069 1.0581601153743362421732517931063860 GT 1 -42186810026491.5958811478916843078956635666750554 0.6343293742227692831177054844715369 0.0135503999950666444597296459400811 1.0136430445306894831338368985427313 GT 1 -24057167793008498.5663277401640153209501976457085567 0.2931966796880095148493324563461565 0.0076044439457406361104655943794321 1.0076335051528935824183069693195656 GT 1 -16851138499484628749291393879515192141.7230145709818755504301049292013689 0.7713247740865843787156705995953980 0.0697397704968376803031626300928116 1.0722909153061514065811462139183555 GT 1 -291.0255465995780687759233141999942572 3.3093515991681434407301474515404958 0.0693174548193776489383675242645810 1.0718370424730315768915215602258093 LT 1 -3511.2630826499047328446198019697022876 0.8365023183096291641636444398172216 0.0076509609398385983986320534044075 1.0076803796920367893319087818130495 GT 1 -41213253991.5530677512258791090347739301681644 0.0765669060458500557121639114708694 0.0273683244036077214939692483074922 1.0277498135843221614606723722618789 GT 1 -27138154248761959395798.7919127361291184814727871793875621 3.1806703219844618572325785576785411 0.0768004569502590702447757534325533 1.0799098781918766305150113801014167 LT 1 -30139220597301940537390148.4810922810159080455899486861318188 0.2675692872615737426323291282704925 0.0989834763116593558876024898931118 1.1042316822652239434874631969751025 GT 1 -8200652674928637642577249261946038342273.4438122298379202728689750871175986 0.2788748808578521419440653528240958 0.0676047589183876474731777979217671 1.0699984757786348539458652834106286 GT 1 -3.8653938000697823995109767201338343 2.2690654537446454520676461368924097 0.0576018808778195279286941534637343 1.0593274619249002065427722435615803 GT 1 -50624390336018821492.5291703125780607371464746335123330 0.2372244407246157850264068182925254 0.0926725165722628896311812211071193 1.0972518318206735666164232041576306 GT 1 -18777326378725.4724345974644694211270824260228397 0.4931594820947419634631463449112579 0.0053351439158546560555073121971533 1.0053494266189906002888527063552758 GT 1 -384277765603302071741436431821045721253342.1229208729854062883916688362852709 0.1623414509127159480237825878596776 0.0726721958535409227284259966334943 1.0754481576435207420988577200822094 GT 1 -2473430114394026488983468321994277722.2569263277182489801954374636336079 4.0932102062784685819754951644987678 0.0405031229289109485730034538691761 1.0413462182858083286319544292869464 LT 1 -10122438077744103520139680478260702.4504592607337945845971320085360269 0.6816663637699364451314363381115673 0.0764062541112630238369368871690887 1.0794829729747697142539275393673654 GT 1 -155307391149278897234178954939.5367952903511164795650770324184419 0.2313853653954912379807677966752670 0.0499881855346642456909463082579343 1.0512808581855796197103500530092554 GT 1 -28208412939749960525074097966456543553.4677563744823356304074899719527273 0.6035163948218074198200443484770105 0.0268092266800962367190957559833808 1.0271751488822994102360455234663598 GT 1 -218411319.5392584481374974809099737571318737 1.4830509659086941685589381058422258 0.0456208619843203547511364806648332 1.0466942671803377088786244477189271 GT 1 -17.4724420991526799311351032331915874 6.4567976780086186267271821602526925 0.0883158653655357062096272436684203 1.0924616925011642809968671134518472 LT 1 -29708270093604.3925439907810920915155539320107039 0.3582357120875007791102328297513644 0.0154724163618393864305771423527000 1.0155933633795949068881018311648531 GT 1 -724737531949393986840247332349872912.0457520886078391120117350824699215 0.6133574969133240119061316057513698 0.0846559762819269171940424943138411 1.0884553021646692121130286546457732 GT 1 -41952684899252768869159246638121358610.9101685032407666974079589861747798 0.2799228105362223351983361264313259 0.0354624739008988342203879187370889 1.0361065400846681170933802484681203 GT 1 -696563234.2629175221320510815716184259482674 0.1624310654354554327117112412037136 0.0002546420059323943770105415844296 1.0002546744327129174682826476227150 GT 1 -3046964495.3976484278201570442039705269039670 2.5923610717863581150195599064731980 0.0458919277288260329075299378928406 1.0469783306468019912944865138162358 GT 1 -9158.4108597380707447357042885904442359 0.7595288969056423785340063638528512 0.0733012846334410018868728964106244 1.0761267766356674594577685171949826 GT 1 -203332723.7838048829176021099705434028029623 1.0148099381761544052731583379618219 0.0031366799758912619815104344673745 1.0031416096678031880813140900316669 GT 1 -9355230.0810578512790298802980976977381107 1.5803101735868002099164551208006559 0.0190945784394336731554796765990515 1.0192792342984166401893139265144306 GT 1 -152570049510822552.6991638611448411478110104631771540 0.2950390685290788850440963701213805 0.0085704951415962775051986839682295 1.0086074330372125380430492640976414 GT 1 -13582727073708416711715929212779469.5181201098457303984773865413829839 0.5906976169900829892896221605302957 0.0377936647263058613780061493438236 1.0385263655837157327793456271512915 GT 1 -234723510155291929223393.3752390979959617077772773120390013 0.7143025913393553811810981098925751 0.0392502418536134342870482576185141 1.0400413012713954185531354276989502 GT 1 -792174561195892.9049538758229282505038234634299344 0.5610886330648779877129187037892022 0.0510340854641276381501880558005110 1.0523823982607974420341621877356561 GT 1 -321780516415978536354.7013948791918348167160119360210599 0.3259218412621354269407168854883910 0.0610815585694835765668108131995033 1.0630266603826583328810606761868377 GT 1 -101199018576007652048697210817379.7259247926850843280600263318075079 0.7645925407865512374642704829188655 0.0565313134022615887759394540733825 1.0581921032799406064700175652568496 GT 1 -61545.1131678512997707499347446502654297 0.0048083032090162045805740110065627 0.0466621150567162233397455412351810 1.0477858894317140242842982331881212 GT 1 -104532024201497646639937826775.5241578446218372721439260979373176 0.8478653122663476099220576304619262 0.0285799492719767603134602440484779 1.0289963082211082906713620717357317 GT 1 -84009967612064787.1335014890497955516437021925542513 0.5574772404443254083078450248349444 0.0804235743772615677857479448707659 1.0838421218906712916068454211263989 GT 1 -188089101256.5742197157955903880448511826935961 1.4688896314316018332160904368538574 0.0260242587741747744207836228310698 1.0263688819887584376863453057787491 GT 1 -411659520795.1174891189895339196427983695228050 0.8169511034135573574736938798503369 0.0536931942991532473632921434405468 1.0551884435876014354068308498413022 GT 1 -1536642316955953920104299905492.1957723571301621199463749566105939 2.0816428594094848132113615271448616 0.0396040999750612989420074210109704 1.0404096836727448310453428356599453 GT 1 -2997648994552177424672055.7966262374766485005193548649146974 0.3009300987267887020071108053148872 0.0798019119615928714499224945695729 1.0831663190303615053478104119826680 GT 1 -86.9131570022502447662311705390050482 0.0583523916644457196056065838671622 0.0663116755311367300229488724109200 1.0686125961555707314872109227726372 GT 1 -106.1489172259183425085576220920999577 1.7194039670715232266577844227559696 0.0079287140216606882285584982814327 1.0079603134138711446498747442590694 GT 1 -22964259717660932.4945730795513035669069596978788032 0.8322862029617139625533826850855322 0.0668558369380451569223145823925324 1.0691955744634315429849035965703277 GT 1 -63994662505518.0912256094862887614120141748238829 0.2231550982443215386496889537120243 0.0814122374268421875325115914625893 1.0849178290024354139207093453883404 GT 1 -207061922204295895145355420435200767606.3112026427057258262744242695130446 0.0250662519905997542291330457943263 0.0365388330743621200921614504271374 1.0372230961167670300323613435003887 GT 1 -897283.9731395962898284656639556516905104 3.6582546415312746040138580117998400 0.0781474085792066782362685027883382 1.0813699473607300154455052328741698 LT 1 -1743672061844001239.4305406969623247748050244255083765 0.7205980973162410263018729498993031 0.0622905328132466640914623561906617 1.0643151144288381961836587260791957 GT 1 -1227945548899.4537268582072403564001545169554675 0.0273792261312135308729012933949980 0.0410342844219209324372946347676644 1.0418999549170227667660266439379654 GT 1 -2928132475.8492753184786763659520751245791038 2.7893094102754267653755275199382041 0.0632522221169344577570308088432745 1.0674759505556081581497142307477717 LT 2 -6.6491629436856467689173546360434322 3.8768623345313674213071566757911275 0.0838643364377882635802937601787083 1.0875908209488109813370793891576011 LT 1 -3611150299090028.6797440790259591797501651721151106 1.8298215336808092699638699443717564 0.0029759930584706380309708025258112 1.0029804301311309387453011407880564 GT 1 -6274.1224489087125566000549419403718058 1.0970150475950520797147658899545905 0.0254932018006287415439510667176416 1.0258237839691968253295560028522211 GT 1 -1433679263706203.2788075045185347132716138784571108 0.3452196678556367334103722220494689 0.0901569850382819201063290394501942 1.0944832053840598160219092685102070 GT 1 -53148524343132157149.5430130573014334642477504303113117 0.0522454926948386481651729811864356 0.0287245415644761988434050688491149 1.0291451656123818110407070955778441 GT 1 -2093110308611029.4531365646446155380582336675942220 2.4291240375037708849568609968593046 0.0490274547040961591231033580444450 1.0502700861532586582129742561931145 GT 1 -156999979231626214.4584261252358179708111786055305842 1.0737506995707797541737812331459097 0.0468194448667980332858024582775794 1.0479509335321347168019207163948072 GT 1 -6697885168097561872792922134487.3669722732185454487510389623284935 1.3705600077085273334117321416980309 0.0198487154322291565236071917291491 1.0200483472237223091272453915423960 GT 1 -93135210293.3386828651617778091785382117127523 0.6949145892520784065892671357257693 0.0381819624449263045133343068073794 1.0389299963582274629185600923639300 GT 1 -2079153977800237503229935928255861.5547456990424169285295518376314261 1.3476337177095582120432867447029429 0.0720807284559545031110824691735446 1.0748105418505893387076226889616900 GT 1 -867615078740330271986.6271157661283510025980549043055680 0.5866216563148104733706923526658585 0.0051010187757691282013432746355744 1.0051140733855070504578299213289165 GT 1 -2259900344130810495122052748612519.5363830054812447366550992026211599 1.4171220738042359863777469941495033 0.0814477131655047447664979311410776 1.0849564496167738854239293570032028 GT 1 -1381116.4328345359136810318912359236305450 0.1133454893332177739414811109819333 0.0563798409590532285526815671754602 1.0580315677080370986334791299774167 GT 1 -264364226527899505598.4044691744076047650275577063503080 0.0985618061641103626344736838844807 0.0367103851350368884821630741581372 1.0374011700667032742576316774640657 GT 1 -20192417763448276506161748860480.8786717864912998249455994374010116 1.4432888274877342136583799108863626 0.0443101605900478607675722299390784 1.0453218543350525080746971960353807 GT 1 -278408940614546118487815915645956459.9232404605913187949997912858272632 1.2628577870933720209015824753243172 0.0755328337706328306021957997157958 1.0785377439512744825713371107801670 GT 1 -26908546561373550.5878831049682517036161596810441383 0.3276554731066336764979081075844532 0.0337999647443791738517708712622272 1.0343843903728841812595740117991350 GT 1 -207675566997.4070999746199850632149156436595689 0.1061457715640898516986194620562277 0.0620799534658715555407657530569957 1.0640905718454341490312386416405640 GT 1 -9234512554186017906807080014477267.1812054405074471692996789635462353 0.4643068567213326363062346978366860 0.0052372502752048462625990953169056 1.0052510127431169768226998152193143 GT 1 -894063455644520427040019015118763286898643.7633503254468238478028905155087490 0.1698678871730888019632383845857807 0.0591838061176617075654617377249901 1.0610074891007760943077428433673509 GT 1 -3873850177745598723348.0564372932037922248722943566383986 1.5597797590358595800610496417041536 0.0699992498016118623995029960652358 1.0725698861702273034032030205590598 GT 1 -953582780837651849972052392312901.1957257710852274870735327002514883 0.6227568431474658125505041712848482 0.0001222632353912228613604048091846 1.0001222707101498520165589056393507 GT 1 -11564806.6084092416679269822756492319688276 0.1701084951015729093221867383697110 0.0586970093889365249406830471758636 1.0604902033267498848055800227658117 GT 1 -534.3730398197910683444569464970831105 0.2613586268121872407575160023673328 0.0563491622669329135728811255238448 1.0579990565401386277847699313097458 GT 1 -282383281294166248600879482255532040891240.9014849718735145466967284857336308 0.9257841217905087335429318799313090 0.0052712032878932420459959909835449 1.0052851450949256593608386162788937 GT 1 -5.4197194452863691042077838102945362 0.0114102144730264534734329426821438 0.0178769385318263607349289995111201 1.0180386613018464554934686817136371 GT 1 -237260508694024147798766122.0294203399737120413084317111942154 0.7991056186836686640443529181527031 0.0555379567887508136824336112440944 1.0571397800251777253619163301535546 GT 1 -11292577948755280.6019736954319963043821068034005241 0.2449220349854999815509215002170178 0.0595884340483418696301854040051381 1.0614376634215670711034015578168105 GT 1 -2110919225001127297968826974132323728046.2877299803890802131797343208477615 0.6952970678011720202252777144693007 0.0672626382623940482874013806086041 1.0696316164365017329570883086428935 GT 1 -84633675177.6641800211329190663718799208948682 1.3146724936917797920234158186728006 0.0651970336771223171674084859592459 1.0674195031058688000809067958982775 GT 1 -1688488556869514814921812.5026700296598965062564707108803871 1.7508865847911387829966493411415931 0.0644070325913548495667807374708533 1.0665747609649153544035089962294871 GT 1 -99929577192.5360058862991107197200525882332252 0.0944794532477797899054653865660101 0.0523183472230969053027541323043121 1.0537366424307508649856860871591620 GT 1 -158626469670431195257231539649918.8990715088627153975394472345504384 0.5406268019025607721422564286094766 0.0984277138289210075012879017274961 1.1036150552260364120724033051744070 GT 1 -16644339.1724083779275128815467127356472550 0.0995013464676206349880110068235313 0.0634800422906639648820486874185624 1.0655844463700919433067273738320451 GT 1 -871032948407871518685388877604451085907237.2767533758303350255931568969811303 0.5250198266585960725306834647037145 0.0904844806440237633605629960981316 1.0948432175565938615507110379828206 GT 1 -66342104498168474740382615751453425.7411805455590200665574305813224301 0.5594363512385286620546057249327685 0.0265888071147272881805323791221682 1.0269486828968152799338586749607904 GT 1 -371232198781049299194686952614248591612.8740666003571958487128848711016367 0.0379607153721730438894400569290605 0.0020420746172764053717654481864894 1.0020441624945326606863974179805326 GT 1 -3263410455193908568046932.8777260862213000645348017624345734 2.4818315315458239888700986783065524 0.0649111758528816247463721585293348 1.0671137551177504947532492083589197 GT 1 -2520229579758026464.6619845814430818626663247656275425 0.6500964313264114893019266413984583 0.0214437025625582150754288248518507 1.0216769593734118734232195569755280 GT 1 -210372825915217569053158616555687.6656688101245170080355875526658918 0.3854632344269013065254437984259691 0.0981093163368921971186930530001768 1.1032619595421631323680116824613390 GT 1 -6804328536.3298348566638710773907256708984102 3.6286790990565783046296477566197948 0.0204035197598304206143997917955305 1.0206145469687974955034815590662574 GT 1 -4025310177506409890059488055228.5096376063080835163246484658101633 2.1784293331075055433302209771288825 0.0574476428158105820018869990423573 1.0591638098138321057721069638869382 GT 1 -294607029101962698.9316051311991283076117851549704905 0.2424273384811237859978929038429528 0.0329496068028637080006125956157769 1.0335046719630583496546070815317573 GT 1 -235162891.4447965746235170288182359963660409 0.2343658744033085516378079386135760 0.0370522581813096975588713735854412 1.0377561346806707506215009470638607 GT 1 -214449047277740.3979583103844091275599256603979158 0.7457830979502265670452452982319921 0.0680852915441033053090951946083644 1.0705139830165558555886953171343079 GT 1 -1314.6729580348511999764818102457004895 4.0367900682861532175200047988074966 0.0220807280486864454236436417920501 1.0223281563713263818957648592363433 LT 1 -70419716852784352750224095160684.4449776816270288516612914918468089 0.9758116905090226327263495324257524 0.0524288212611221153262838382402128 1.0538532221675683268387604398331797 GT 1 -54113217.9901703858028605023397032173775043 1.1910436575307895159512182020911944 0.0399282492441955453328084661353763 1.0407472569425478283704624604662027 GT 1 -48697275514540.2228830792568037832441581400812388 0.0275471628863939515600857168784443 0.0484016176088413815581959659963077 1.0496122004379669086215766685530011 GT 1 -42955394932901408121500260567165.5903442232595269413630275547262854 0.8822798746032120285350082454869307 0.0999270689651992560749745672327453 1.1052794844578307275817781206384452 GT 1 -45882453341549460524.1670499617101285977881464940738271 1.0232761918714410159044865822873058 0.0458815889481146336339102554124916 1.0469674946367142410337351189125994 GT 1 -105326013480468614.8039154753459718178775954577837575 2.4955641912204358539776753939527376 0.0960776272326292954183437695404358 1.1061134842832370597318764499408928 LT 2 -3245465530796477839574508536523001.8374572648681055526844653184414089 1.5137276662169574427956609900548106 0.0702219606490259601721641265269630 1.0728093886849674000614783462614921 GT 1 -3053153840970625186475.9138626698151313669252789110296811 0.5765900876482147095791793738008971 0.0948820998154403201146669151801088 1.0996900673204230418213887834924767 GT 1 -1193460555399860709003.4576342803435475711771529012424634 0.2880753010803798906324699399296078 0.0017470855075726491692121858100335 1.0017486134413379971497354588462209 GT 1 -35081889310.5326244071722505836045908651155519 0.3508498547257112171306889394022499 0.0009048529845005482511535495742243 1.0009052626110821928341416108518366 GT 1 -277582868735628664362686442605923148737724.7939438693366743539019769726381210 0.9620548740719244778535932322691974 0.0916539038582628209867725065009836 1.0961298098533710689641706258322872 GT 1 -2.8986856960632355598987500225039694 1.9583306349155074743508471129361512 0.0489006593767774651806066157032875 1.0501367627721129027119669241494557 GT 1 -35167207793062122661010057364984655.3655058761635243087057611987834796 1.7580435045226287434863020984678770 0.0425170511826196344284113371257796 1.0434473661095243711429881816431530 GT 1 -65.1529890765655678537644407449762294 0.3968407392548910578295569015371865 0.0081584292703886544642715377660987 1.0081918913775683540984539510414446 GT 1 -18182603009215009837721898224765118369943955.8077640701015329351846587517117514 0.1833911301258426946883118204068777 0.0099630417909978492208339691190476 1.0100130050260608538661413872981172 GT 1 -65196091359870268099528426170793.3582941086223290286608851368027472 1.7436703965208513201658644634212181 0.0609244228207217666288156867340089 1.0628593161338786321775545413245560 GT 1 -70165386370408517646803691563193621123403.4953541060198420242835561472084217 1.5876649477222429997000390141835425 0.0405275541879356443466118276659914 1.0413716811827235425487072262774913 GT 1 -7770311147163730798019262801130.0318638692896968298794469956534468 0.2276655472370320521745888847798814 0.0614042072524958124604519874090673 1.0633703581084224724565851404782200 GT 1 -1708850305244422.3023912468314573211436180074526668 0.0058260673446452049958117635447930 0.0913365502991260603973272071041771 1.0957804957145545234637784933965022 GT 1 -516051333516212956811.6313690755382567945293515400981254 1.7152185385685679064323441366448903 0.0560312887124860506083088070012862 1.0576622582084869147948124048223888 GT 1 -7702678993010898090196098685268.9493920061409868567019050332907322 2.4804575477639013076197501075724993 0.0622502148251591047358516713208491 1.0642721191059134228717690443494667 GT 1 -91937166261814.6224200750613550648682704198941439 2.8519391693966619262523890160134970 0.0498538325838729018364543378463487 1.0511394457848252298138561408395150 GT 1 -13307654480.8682721874630709588252180278339914 1.0374928304200786908305881922194855 0.0766848138430734428810784535890683 1.0797846226436725766219188910110261 GT 1 -445.4600377889879445379878559497961912 3.7470090169155883545861002317082813 0.0607789407634092409655260350574562 1.0627044076335034675125288720044720 LT 1 -1599828280074543635042416949372122.5667158609651201538460135082666834 2.5913412191101509077821315747491729 0.0392523458683727803928404190350674 1.0400434912454707440578706213445775 GT 1 -33122227212100113835471908107974475.4516170344366424591763487799948194 1.0890791774998931837728326768296947 0.0186179829215486677125594555203834 1.0187934792373875243780915604254397 GT 1 -332896351145198865946526424192599728108006.6246006158551442234095297518663931 0.4964992126701482192797142618808674 0.0795546531284592820958291374135241 1.0828976533779800340880169953632992 GT 1 -30085847847499127565581963088334210096110.2682474341567294736913472463765026 0.3666481166317082282379717720945767 0.0183986470024718827220325610217804 1.0185700072270453342965793243960130 GT 1 -265572783333317276340946263997783.7247887890486671029426715141498966 0.7576539719794350557639200270209489 0.0359365823078851851965457108783657 1.0365982005477236568627583419966667 GT 1 -153900648.0560476489679650423258673262893618 0.8939216999228668103750430807422186 0.0331303759777289097222661308086591 1.0336916178282256003222765201215906 GT 1 -1180890280254497510624131128.8563479311604053820772071212892447 1.4018130565849752241399183311794278 0.0195009067134927507662715709640825 1.0196935580922042021640423393832270 GT 1 -5162011.2902887449911706739395322652919079 0.1596687491827736993528872111491255 0.0359403416486979875927127764749580 1.0366021000299294520163596180896032 GT 1 -171456831273933499212163486445189537.4954367570568636127464756342629769 0.0817159169289180022957578545772022 0.0204289849794385039840123763280494 1.0206405429284804918643859485343729 GT 1 -22279295921566392786989577148604313.8884451222269977360526057372367160 0.4501701755455222595010802926241891 0.0412854428152244764601729416038977 1.0421618947182574562381441703339256 GT 1 -111202854745027895355436035272857899401942.1000041381640441279933837568182190 0.8585115954811468085324371605303516 0.0207730964321366482578117403202330 1.0209918925526276017860121328772295 GT 1 -6201564633790174578.4519275534271754284621854531765099 0.4833529350654655220129049687446386 0.0299396845996851800727682281280318 1.0303970285927890881972685603649012 GT 1 -8806.9502417122433695439610867538320114 2.1486358799931314937396677641384179 0.0030102818134503869273960716302126 1.0030148218251810147203073474747227 GT 1 -22989639971516391491.2984757877937963457062677514635292 0.1016542010953855953459337412767534 0.0265637413345787716530224124495826 1.0269229327743494069388738015006292 GT 1 -52578865858467799755587729577865691179639.3416230550048091952075085398538885 0.3088901846693164636799561573298694 0.0397777196139223075696754525310205 1.0405904792531519473497419225344669 GT 1 -181683144347078466025369521324898535.6737179329280098378744487757158377 1.6574737610543132131267523553511452 0.0564199112066778449761538990836668 1.0580740329924462355803380703847589 GT 1 -2689368555789145276.3824005411983137898446147492707862 3.7286834686439604963536824831677242 0.0857788224520446111740190828242201 1.0896827482379944689839315158750674 LT 1 -24336750441096687674887470509213061261158.1887179002327513965867129821207960 0.7854452576701870181626301416611882 0.0039964001289314312338568203794687 1.0040044070756883902824537124241816 GT 1 -4835621174974.0814996059616266062915739139544690 0.0738796231446462345995037532131551 0.0825866260249925217788923226650255 1.0861971187969107979770327768453577 GT 1 -94276628858324492626628132570134598393.8993476774416251158440506851188297 0.5099554593942586659598909482768634 0.0482254640339174961043824558210267 1.0494271042082918041087859785020022 GT 1 -1329949.1884994533109828820328989305386857 0.4941589982758875978431518070250513 0.0723728841386677383212189243793019 1.0751254417497354716462470677478939 GT 1 -3137373.7791862728649018311245479751287873 0.0316597818608788743868295506419644 0.0255296945291767588610253479150510 1.0258612320525874009304086274663168 GT 1 -6080242795055357675251188381906527636684315.5674224701977903835679470060112560 1.0608576496564385657961700163390267 0.0196815590318322284987301790755555 1.0198778203355743173040501885223076 GT 1 -110637031165755922178669771.4210350854401603100398665204915621 0.5042837800901884844571728806826008 0.0339098912824143445507485028140142 1.0344981688740027826581425461998250 GT 1 -1049347178018375954.7098860838657706810407729820113318 0.6294551305655709599846368596485406 0.0329396991039075323376379443574597 1.0334944267387425745293259968816775 GT 1 -301673030774919399781.8128943357361228009742118049885911 0.7539081518157172191634267040515178 0.0312223266857526233113289553302723 1.0317201327207770170613656487168910 GT 1 -51891689487287112670912110151794597.5351278039660755471190676532486721 0.1011114244350250496444299857030695 0.0148963931059552644732926228981442 1.0150084586775622500303108621042461 GT 1 -25193046630015517713630336840546.7075914028226105444705852755998260 3.7600832846203330828679478472304480 0.0688128707000836804197294865663344 1.0712950237285799931004441774906088 LT 1 -104607428547100493180573910646805.4303910942123854790046440282315204 0.6949664435954814571804654238378387 0.0771759781367114878603063795945825 1.0803167215266743042453312850252393 GT 1 -3316631217975658640925010629359406332090.5911252382421616176337017089850608 0.0553048242593400753575537674391807 0.0776139424838040806395292445755800 1.0807914255836391976252136239354201 GT 1 -174799.8609735588436693458583880778256961 0.8368411999214506100937624607400576 0.0612378380268853465307760377724142 1.0631931204903884201308879851325652 GT 1 -9263.5728691199156387263681195543334691 0.9349196506832902482199986685855857 0.0855153267743677277878342204203272 1.0893945710230651872668262134980500 GT 1 -687614832437148579522952766095.7185849235163426083629830350793724 2.3715262939149364976845932271938230 0.0907730457700095681235208169088172 1.0996883056625239908030965199057635 GT 2 -581252346704149204693007231490706223022775.9283302989150189071074284015021643 2.0003964257436531489162908667242191 0.0916485279704099397234904865129488 1.0961238915453961116584702967192991 GT 1 -113215950893798310430016279250702.1518482211870643732809889694943316 0.4551860057761967678030762219627154 0.0660120003004725974009481997079419 1.0682916891232782776600193916397538 GT 1 -11.3532534818071251621705281346712809 2.2726637131617459034555938011679329 0.0745001104826781994607018378345378 1.0774212663447974913703141152166969 GT 1 -7650500285159911226701244771.3878706131746475761248089585099843 0.7596732047621087176551021855840831 0.0466319940682336836843974785716110 1.0477542946392196015769639782249730 GT 1 -244750694710469376661729941312580965369.6762104061454728549911446063413481 2.0641733823093985845577643801221881 0.0484249519746527466463957182690005 1.0496367219717794394784203742956106 GT 1 -3319771433374514413340466959940686512.3419772551302554088340089226122615 0.5372137414032243513955152377708703 0.0687851611666147991405879927566827 1.0712652669586183511564881517223558 GT 1 -523183377681555243355647439558240.3911681177527714129133850504611095 0.4982742155906805353543063181095100 0.0833680718699327742072555575552205 1.0870492742931047084290962341624407 GT 1 -135793187134528260299718029717.4371196396382145463465957549128761 1.0275586379028981948181124821465302 0.0556036377735220680259516483409807 1.0572093257196656147980042643614004 GT 1 -18983372335185637252658884270865771.0036182623984253234116142319634105 0.0316798929028583280827833994587537 0.0585715494000511642106221431069829 1.0603569288869387933971556086354352 GT 1 -194924508633640128483115654.1664993450492266548709103385718203 0.1337100984366105123756409488973556 0.0818062894414319912694739802565326 1.0853468969415445053229386314015163 GT 1 -95888.0775675984979525333779741415689533 0.3516671074364422104542821114590336 0.0804225114490265823494027453482614 1.0838409660023828847030771479667666 GT 1 -9125560744.7036496583685696598616302550546980 0.8368494066608845557430639107578928 0.0584705717804386918619559108024115 1.0602496746346316965604842692657753 GT 1 -2122358161.7969429316927035047039188174005155 2.5620274456365819568428721263221882 0.0077747079965429526503850393744720 1.0078050886081280423319875743792403 GT 1 -47046271.0752452441011945566736354397684021 0.9463114752977528256732474412157287 0.0015023782676431435305834042596122 1.0015035079695074811638606264305429 GT 1 -1044230637893201417670916824219157.7497936723874069315912788105984054 0.9807591394935332478030629899616090 0.0716397716552962615935866150713069 1.0743354444215879658212309753831152 GT 1 -140762519267955953803228133.7993025251230646330635102552426198 0.4900990596764438630219271340061112 0.0613399385990152802233609319645365 1.0633018872568189300276282928853217 GT 1 -47093174733892870165690704318.1644223585592552559643850331754135 0.0885799263588674524420039838192136 0.0882785050907306978297690117777448 1.0924207139342399427923807372379020 GT 1 -1032664583138625.9708941757633312317610087246090412 2.8829174348586865168481400502880364 0.0781189620528939090612111270211978 1.0813390898378623776679189309713583 LT 1 -112807188894.3770580861130051900334970655639229 1.1375969346527419045587104798917370 0.0111086545777427400940394312614633 1.0111708164663437943595906991420527 GT 1 -20.8976975344194341338516645063470086 0.4863577719373590707390321965907612 0.0561158070507224458861690802900121 1.0577517973225812206315354044884404 GT 1 -7468148635.1742578563571669416609885186555497 1.4119557415744704167648495886271932 0.0882360174567861550959759620366551 1.0923741134710307821434015531354066 GT 1 -22768650547018030994675089674137940600.8229770043095808870303104522679758 2.6540246548489755527252719783156703 0.0532868216553953064867993378410102 1.0547591056477749719445513666898272 GT 1 -344014626472972119215176597.9215641364169442371468218411788958 0.8101750886683762092185980571980323 0.0009135181282666951452364513579330 1.0009139356402412355408880200466079 GT 1 -295425470912483109956722120796.3241862758569048716106787143548539 0.3315255758629443920172312484173712 0.0653564004814596037543226237194745 1.0675899993453819199987006506263306 GT 1 -23943001463234097905282329187647534082737077.7169916931675017015475606662450960 0.8856000523859135832900302244877483 0.0831984536706645731797844283324813 1.0868642463636870619565851526161551 GT 1 -49576660164212.5160478206414194967836527228028299 0.7901894665420686058429107586241387 0.0277325219904193540022289866440979 1.0281243292402041732566068344133831 GT 1 -1991419.6446880752476952826511554269616938 0.5017975838340352772473492362717785 0.0923382857451741676976936932127450 1.0968835311924455306327613501794654 GT 1 -3642831847214718.9407690272657537873155195259370451 4.5169907553250543160199965562295742 0.0772980305057506159094102771481505 1.0804489899095511986522706160483336 LT 1 -219.0346113529496601992841427565286817 0.2721335304224217537700932607363823 0.0543275256192574467174340969154276 1.0558589914636278005665392609174935 GT 1 -10181899.1569317808206305011022005572732317 1.1607264270670335265783959331268093 0.0713002421879244386486986386888821 1.0739697809818649597420469686583978 GT 1 -82471075002403309958621315106561874748819.2792161926310594208543284022044651 0.0877010303716552218736527453042602 0.0601534965868955234681482327044511 1.0620387112934219138290056698807399 GT 1 -892560206178859142.2008686269682832129903455750517417 0.6838280607581906101742876145161503 0.0847646116691718098540355348064066 1.0885739917846413191300947405999830 GT 1 -252219049289231730538890975861891737642792.1965479450992567355888061648932259 1.3181268870218927292142463385930375 0.0872853195598325390474405093594518 1.0913319549604514676080799310288550 GT 1 -78732719915.8183323305404881864238676720664320 0.7964835334420031134248197360921721 0.0839745190178806804272907843849320 1.0877110970288417562112088774285139 GT 1 -17414161589304615695449102224054.3045412057938958188936269883876333 2.0854434636492945916167090959624812 0.0610355070837631505319098036192853 1.0629776142095584349697075707040620 GT 1 -6058791285.3596386915573480941738549640151540 1.4718804514062256641048778071706929 0.0416278555680346718958534011166205 1.0425191167011366155095990851537488 GT 1 -127659132556508685915559834394601.1349699548819407016691399155345379 0.4890230777957979573421604989307784 0.0970998648653449214940491851538059 1.1021433240013594801704503934775415 GT 1 -28840853118792407987060013364659596713630.3246409420719868164427807845963005 0.6805138213301464941837266216214399 0.0634036658395982803365969746236796 1.0655028962266870468084007753274737 GT 1 -1710185.4011529920480875452240269475003484 0.2125575598678427249001302400459500 0.0427464794016742066667808619885915 1.0436870108061364129009589098654949 GT 1 -3343726026280337082225421875666816954.1875640902859039318727936574465835 0.8984000527093941003811273065699721 0.0359540770108527297325880331067982 1.0366163475506958464039448335932493 GT 1 -10069392965208169767442578734700416055041268.2946950902546837283483573014785044 0.6090011106925236082740658357860907 0.0297588806951283328898926699253770 1.0302106617717929117984116328478651 GT 1 -972.3232504893250415531925884777213791 0.4301336184820684281626479801720900 0.0368508925587697972027735188868613 1.0375470427823574284710925440613066 GT 1 -20176098520145968867652090.8350815709823024679881464179736922 0.2602791989728100156897389022040348 0.0739731534739017818399116518773995 1.0768520528273837454746234283322699 GT 1 -2987420570.0728414059060546159260036517847254 1.0439437878741867409518735190563356 0.0265363455387715830151876113695543 1.0268947897808403054009979769436074 GT 1 -1619869516679847323496502362.3889770301086557250527323115218669 1.5071617547533992627561247465649050 0.0685177476883876331151955399858058 1.0709781419275700282688927576460658 GT 1 -256129887907062471830.9166714166157634770975626181354481 0.7858568692194142586334608212531361 0.0503263443941323411154433104845917 1.0516368738190804042019817926609508 GT 1 -808484555960.5803833602200880484214394849952270 0.0118457767653367471948095226835693 0.0042809804692615491969385915651873 1.0042901701026225021535555369685486 GT 1 -6010.8027578145870689664971767061768868 0.0481712616904313126930630915378189 0.0853945668911662935550424249234528 1.0892625273550592420653829833504297 GT 1 -7153869986545760128636195468496628296763906.8000247450379750899146235862167514 0.1104998006285370998531567951140925 0.0974268153000846124062541506318578 1.1025055009825663229347686050232793 GT 1 -203122.3449145803591951400355488741247126 1.9067469725458354875767880809422022 0.0747156979870890515466434208091303 1.0776542351656600454721580959773272 GT 1 -7365138247.2074017792259559178110849903536638 1.9819653356795429374029504477227588 0.0172865279106195002359512002303963 1.0174376844481558366503848407934377 GT 1 -8037896314459709590.0394910601115768849427754501037351 2.2007798643677084844511497443486266 0.0204887078071520093715335212733550 1.0207015131363294472842990320612578 GT 1 -5352886829383543273832458669246154002379552.8426703873580040291738797896827681 1.2576826671612895972134580051283317 0.0954035852454318065437500143524620 1.1002663852951670051022961908921220 GT 1 -24607136590.8065237888174804666351284881741414 0.3598025188482855295179544675560896 0.0612155824034641705243258912637842 1.0631694133571919488717025279447232 GT 1 -9024140928827749993473.7380255312175178565662732232329458 0.2054614644367158552946448801327947 0.0898724393576926637013256823281457 1.0941705127650450130560377591775512 GT 1 -298401674616533945620881.7229603118307963024686985586130930 0.2913582014101034679216121967011631 0.0841728897637628730910477415785085 1.0879276764060346184005194330174420 GT 1 -15373414988696642622774682.9475208902771508006454199749365319 0.1243606362514466402644876676275874 0.0123517448771994306729378901944563 1.0124286617055818208446839606761980 GT 1 -13009640084046.1059778136091060675844275613013700 1.1627460062741085315835318751514380 0.0012817409863696236893276907461699 1.0012825631189301136234593716716928 GT 1 -25368683207021285238810937554871110961340.3530594514115455572466536677810008 0.1686805836222662106004110963404396 0.0646976418585809024262616702602580 1.0668854242773888905851188395690562 GT 1 -5515822217311300624126.9752171177588229395836536015443532 0.8558127362316891277868963452028670 0.0374470266187491664987009725055251 1.0381661770554716010812378032669445 GT 1 -35664672123881.1541092549047970243758787436937068 3.9183500547675302091420135050383068 0.0252379257825062780450610864183474 1.0255618642071833676555199319384408 LT 1 -3415998520740.1883160821434392658899441946958826 0.7444617803094785482609659907861933 0.0664907911019649777279140193502505 1.0688044511341435466871214410862866 GT 1 -5.6155946176501444905246247279128699 0.3455923230086565386038116590840879 0.0751356249393308184677821834532476 1.0781081737757363223552703833014437 GT 1 -32167238111155511402162531672077.4565119595946246533574531320152247 1.3879281020554183170851893823129071 0.0630044762498904340367656959477927 1.0650767739695232642581878870931893 GT 1 -26121064323427.5106570134180715702128104693776907 0.0247893844096797989630440302526788 0.0065917129876384591731580096467290 1.0066135342736580945981187828478719 GT 1 -49546.3382801571743618070787270575154499 3.6229151686226223826205542314889170 0.0796277379682896692723024593412854 1.0829770581375991377083849324371538 LT 1 -65277261117307956705860581182600528377.5676666527805024346535328452613897 0.4730248494876897970959823785360076 0.0015252137358285793268477551837945 1.0015263780583429507617386123653848 GT 1 -33586240892898.3282158401493727575331543473769308 0.9620163486576604437975876247911932 0.0225509053758375624237746663540391 1.0228090655895072979760282192026258 GT 1 -58242997620606.1852591375054095832191610884486018 2.3243078171621679275414147279897250 0.0439066753093081284232695842008877 1.0448997507259119393308113286897440 GT 1 -34104933103.2619492416000978021606337869528818 0.7294958981429066917010297130235101 0.0352392317102191819330935815672387 1.0358751168855440971398401312560728 GT 1 -49907724507834615009.4054837201548462861698796278045865 3.3466579674115908555317730181295890 0.0168620087302070710929866837250616 1.0170057909964645347808939389407807 GT 1 -80578364657961871899771174030817067568563.7841206580018349558330258527389986 0.3266303658686282168762661831530356 0.0899384370042421739104465063224907 1.0942430301158206522027007682771812 GT 1 -1535.2555758744540769169483377913751824 0.0908665845939705086430062826132517 0.0965075198871543396649888179263276 1.1014874920471961587328820125230662 GT 1 -9232767810970915701.5305149932631060701202231746654132 0.3960203584347593591273390842264609 0.0805781949764910553513096468105630 1.0840102793113986638367847859698008 GT 1 -12267795.2500176897796502905293899872763552 1.8414414921951270603231128917313276 0.0452475149289053303403743748649821 1.0463031500298389889601439364333582 GT 1 -23546341.0661560438507016072524798445046298 1.4244261214045035551338825282481304 0.0190798274712712846782767306359162 1.0192641962968663402480857673843716 GT 1 -3.2156144166730013842580062127385779 0.2108853563211755192443493075352275 0.0351287668931326079614787830885003 1.0357606237416417454884565617436509 GT 1 -77166250088190.9196781775112551745454325059841853 0.3512728750849661668303137542895773 0.0096768569755076309749495629003443 1.0097239820172614426500383481635354 GT 1 -3093697036465688970205062898375725125705.7976361430956856478437126414515412 1.9471886032384618153743151817368796 0.0831920636244212653890627332151095 1.0868572764540049772458688462455711 GT 1 -57416126508428583365782542811.2214692501411513168379539225084519 1.4268356693960155985774800448637390 0.0278464959493374227759944507935994 1.0282415610126445603251135582396830 GT 1 -29104620839348467211653044.7167791118947486365329815121790711 1.1130196556706132418848603025532770 0.0075026693568061344864097755331243 1.0075309559526765070028088848314180 GT 1 -66600137702154231060167235058502813359224.6259649361496655498571114106793200 1.5494908486308919975855706613538677 0.0142405132146382182233996837202932 1.0143428823443984509361740277474865 GT 1 -43292650857.1880164731367297882108709436638153 0.2614732533025284806054361063934395 0.0933778268032325759345191677780333 1.0980294832443921019418799275800242 GT 1 -2569.3101611525777879380372211795396955 0.4720577754787041617816154035020511 0.0475755716963865696871334033170506 1.0487445154925546055447345576118240 GT 1 -68771244396530421524082167947475631.5898254512066104131026898139930949 0.0358097315029468108056263001747920 0.0661876264518934758560955110669280 1.0684797457854933068508830723639347 GT 1 -268823118993469662118.6328480983609439092018588564891290 0.9235619936358986525828558598015671 0.0807723779760802715312113922851863 1.0842215028295469871999804228344151 GT 1 -685922362276453579536122002213514480026968.5456471061398595608169312057978698 1.2274229202911474224187300082378341 0.0728626822213884349926503166679121 1.0756535930181366951281566767273035 GT 1 -444768785901690.3324167317226475597977002759561566 0.8137794155240908427055637291464831 0.0752028053904443984590180104218186 1.0781808145790537621037475187329005 GT 1 -1021783338.5366888025414480173060444096101841 0.9696509437384688140486722020466071 0.0659626530287821151380401266845130 1.0682388555021607596167767750210078 GT 1 -166211734.4067044354869916183229479166101506 0.7923639160575522898550059793362969 0.0606421931676562896916354975897629 1.0625588214156827165015938336258818 GT 1 -217084594584551376615273203861338201117733.2007343341529450729161698802922207 0.5135739372813013640769481162483517 0.0596252959667677913714497918129516 1.0614768618345062912391923292100652 GT 1 -2387592742514.6876955495451309775194260864934151 0.0628048625223760779713707535349530 0.0553785287023203589257952130914969 1.0569709912071244347777569253226572 GT 1 -8974313632719631661921688.6717058694511575155247685747365632 3.6060106841108668627980581936138805 0.0401759056356245621897966584413913 1.0410052463469544527899669456357017 LT 1 -4.5960837751816790406113653798398728 1.5970871908793939222481412689836006 0.0118503017709290639137394968041314 1.0119210762855384471949801536250476 GT 1 -11943839447102683271475728114755758917599712.8591931427574674086454559525655426 1.0731425974850748289591183855637578 0.0620863119817823728507472232317272 1.0640973512478872764416221167941411 GT 1 -358077560270392327294068.3561764717540142531102624036327895 0.8093446626890304850147636467082209 0.0623712620535827953256653714590889 1.0644012100889863510653391767162708 GT 1 -220904573259909727842826712684073289.0758688663751683277011170520627239 0.2569013753160110539297817734347226 0.0014646570314598471308183893321060 1.0014657306900588846623871192709158 GT 1 -4440778457110733170507487671.1905365030686219028616969272801352 0.4258761790230398501245531460750643 0.0429286335062237586512278718745091 1.0438773171708789165581835036377877 GT 1 -237796277360297086835022180156006364960609.4320855009811949979996655600556368 2.2722041802032283155741069840840730 0.0794349250570785662064424514499936 1.0827675855954940367845292715977272 GT 1 -24540671332556382703523637766.7933010573715576225857124794906105 0.3398672989045185763551972769540461 0.0401845828467867493894493067029485 1.0410142868059679125092350552938412 GT 1 -673214102024508612913223665000175972.3505165156270371508193948931768979 0.9968384914326473621118336115732427 0.0639868642209808771240046886764706 1.0661257686510764798607865984783879 GT 1 -24164492614059632869612190973808135914609689.5556707160040336911434058352067140 0.6378963918438533535442797289732617 0.0872189103844112988109059439686287 1.0912591975467780221433189813901890 GT 1 -1613010493979811286704474258590511678097450.4346057220985561489977579912874040 0.4288239165930726720434325438949368 0.0123064957936506058304424769930694 1.0123828477765813966518315091906566 GT 1 -4710989873433236294727.1919826656984084785582157179968274 0.0541525385228102690994940242977008 0.0899510089106268301715711313760892 1.0942568445584177123552156124713710 GT 1 -20331837.0640520401114073877729619128442871 3.4807207444725210573089682250998983 0.0312500759720118139491374840700901 1.0322527691494628761382890786408636 LT 2 -19483005304111116.4988313935477357205115821555970412 1.8858302640711164749843558957942305 0.0871306291996639191623115240772405 1.0911624855126506606440099670194603 GT 1 -2778458371994732617516394474.4561114976794622967365748043014172 0.1719443399420728496938410806682032 0.0018699715707875634821467464892561 1.0018717221503217327478113131868481 GT 1 -53441667916891590784581875362821136555035.7066529779276118549142199314168656 0.1824025155883097227843713498701641 0.0194745990039282117760869844209844 1.0196667275149800848297258669956120 GT 1 -1204597361818114.0186283467090125579888051573403883 0.2586652993152517830599811698396799 0.0587925953156086196188892869851608 1.0605917548793926935795622805438398 GT 1 -2061990832148474451.6872044240029106392352067247808915 1.2485645862886857179388917132412327 0.0003522538377797735392408934072247 1.0003523158937362825826657872040990 GT 1 -661354673682211704.7175101060798047260340403849360114 0.5938615710747556795556158789860346 0.0521630292591169673984383785483390 1.0535727633082769339165404215829045 GT 1 -682.3340377869102792457177963761695673 0.9060205820137791385042023177629452 0.0264312603027253296523602205157949 1.0267868457769669568077283199248079 GT 1 -115018088457301689118732463589482548126212.8780299230050453196372177888143156 1.3407946500961708338579664929338799 0.0603197455574478921214783040907598 1.0622156164322193106060474558841842 GT 1 -15793611142535063.2455616650598371487371352525040275 1.2277161744121741709420719613517519 0.0243363792501770377165167246300828 1.0246374028458889555913794209585112 GT 1 -671730685298027357859580792610814.2158110660786126526702017656311023 0.1333491341760278200284030597469191 0.0948277082007139664004034052675718 1.0996299757229724531629674789403460 GT 1 -125068053045440083561792926337919.4880677325166507402187482179752407 1.8916348473260648457190840626438604 0.0379559771515914809041213980843898 1.0386950675667871849312231529333434 GT 1 -30984725341142213.0619918193384429457516751753033357 0.0245433957290270846697117085171072 0.0805675679443227364822308918812853 1.0839987209921429548819936237825163 GT 1 -744941548177004217031429137386918813965889.3531653467713833659861043348159266 0.6426259375409754388856849278125287 0.0165632075705489406721953528821786 1.0167019112107231398689066904435946 GT 1 -7697297764899012812346.0982161091574480499967008874972279 0.5988389543281737658826376270835833 0.0996437213077396081504861807946844 1.1049647287781648768451353599984955 GT 1 -19770691488972641.2744250839164883052713793667201536 0.0839032265544206734968186295447711 0.0779153857103275680518980136635125 1.0811182870879342628310606564205257 GT 1 -3546701489481352.7174651691162913871790736731856530 3.1911890401945131162172410718095288 0.0147583311574837811262970384669819 1.0148683188245145911508649840219508 GT 1 -9155865553073020849948914388778391363432.3774226404932074765959819406727083 1.2111303244334174619635383769031347 0.0552447283788166498819506550012269 1.0568293568568246886537593761547531 GT 1 -24040041239410841331835649650528482255430418.7989426252330261248466364002421939 1.0214566295640949375266778345485335 0.0549200004551195454352154621711464 1.0564856994684295445178554683900912 GT 1 -27735608203156061.0085323172005333575867346859602872 0.9592997991344384317232112766095235 0.0947552558760035233581311714901977 1.0995499363471695483346705987140923 GT 1 -4120467094823821.3226125907115395868693496366542557 0.5424754177892747660535216282318994 0.0302920509255438193630757806684655 1.0307603362478195792666334195985748 GT 1 -2482495242903429289619907034725.2325949333658460493085962167062194 0.2109808118561930744680829175777207 0.0287992716679679707950744291375491 1.0292221087471679290917577158844546 GT 1 -10963344631374270430276875471.5024136175125132319944692109996636 1.8011669877379247489706385152238368 0.0489252002090670093250212238661843 1.0501625657012659218153161896493444 GT 1 -1605920953854.5842944618910483763151510205451622 0.0960560358985102190465940999397819 0.0658574792594511591549493469459728 1.0681262605949360175085231252714820 GT 1 -90777063632.5605721660757099214427673026235916 1.2208910947384874780872985020956702 0.0058372963136352279743814417543013 1.0058543999194502652751450240895650 GT 1 -319803200.6108057526333462763699709795070503 1.2454147104975433013362702198054119 0.0743054195747572963789640038918750 1.0772109254953623078498872273710763 GT 1 -238550436066538120493.1752247931313387838948173470195155 1.0036620926976740327241297082485889 0.0699579558207583870369307687273250 1.0725254850618387445895347520132715 GT 1 -8426119166682812346669925788414835928.7188983551583329217959058884719646 0.0844979693359258392807013161833470 0.0261284924227664002804633309428859 1.0264759064474321554606664268925720 GT 1 -88719938354302456905542089645.2644001311784931158183964661168951 0.9652073412043494880598045877327366 0.0879631048923358384542082605356001 1.0920748345641811985859542674802358 GT 1 -13771452362997711965107.5315078838849251365671854768583127 1.2974136673378456188328632833265190 0.0748245250685193497111396655435168 1.0777718568323524912763874338260390 GT 1 -507061.0356638878474024344751232694923689 1.5503644363326803693082054972924064 0.0617592240732524718061754977696404 1.0637486721618849391224405413460526 GT 1 -3470084788448364279160423581.8154683560896508928870036325830602 1.3811558051957352582547901282541485 0.0895450958009227319982935856183164 1.0938109096527235169979193745635500 GT 1 -276702800046199835733693249853977227353785.2840649919309552994132643246167058 1.0509293999760454441308731787405803 0.0550161520750884280290447984839569 1.0565874437774173554389727232948970 GT 1 -1461130841474809015.5619548212395030643588240545303331 0.7385820968096633429315517953265973 0.0482528212638534851792122198093641 1.0494558480148127107226288167948174 GT 1 -149556525283620756.4717547530159371852577097876019984 1.5560252456645838454465552174081896 0.0018706240490938189521735283106126 1.0018723758512433903735418813362962 GT 1 -609778290610495828606791.7459715377195030478695252052158894 0.1192074790851323247302778414444944 0.0611468373460538757640186221307975 1.0630961883022994695224014842232861 GT 1 -298879776466324850015407.4450737696042963112092358877996591 0.4776698816649614132369031934551270 0.0289504668819441953634510292902110 1.0293777995119293676079778332499808 GT 1 -439.8308887532406080563080278132865433 4.3987787847023094035241189234090736 0.0586822382458482127462864437444972 1.0604745112198079447514641688166386 LT 1 -5.3107822161410749205595291391005556 2.1909513338816768173936483816383643 0.0656335711066196455895416221602794 1.0678865955358554686659155037610613 GT 1 -31683896167982624736383492769659446415.1604042999653579152305412936449379 1.5123888020125210679428275968592548 0.0921639522219387477369576922160978 1.0966914808055851851846272157852289 GT 1 -335219380294418063486.1389506730517604682709975531212695 0.3874017623056242887170134642129761 0.0984179972764041825849812009968076 1.1036042779424986010448219962963531 GT 1 -13507215851268604854679213776181613.1869677964156926655670786178624053 2.7270857191767467378012784506160913 0.0744055366733682369967885524676964 1.0803082052730956151905132837533232 LT 2 -240831296517424742696.0429374388179512430536746701429349 1.0733425793872893308600427342796852 0.0792240245129456216346386205866843 1.0825385128281151359839643755329882 GT 1 -1143914832154519921805.3037749428237947335030271465966224 0.8010398903067141242564910243771851 0.0235305969272078526584173273988201 1.0238118624150896387633689364665842 GT 1 -10085430861149958517142458152213735976476.1212415715412441129948574039677450 1.0552155552451544439391517510671692 0.0765969829898871510185840694262844 1.0796895016305132430759918932939241 GT 1 -7920945549.7757851773201664227467029169920523 1.1368823929562279095073606286486279 0.0908384216092276575762698296540563 1.0952324465957794234764996966321425 GT 1 -4328641384049174540.4465123096676879719985678525889741 1.7030492136847408782182169252835942 0.0317489644412618932250028115263027 1.0322638910719805312927271226198172 GT 1 -2730.7027774310061212670072326643843100 1.6312138704526963063935566361315575 0.0093239296061319893320003190999374 1.0093676695354401406183983211269766 GT 1 -2887264607019816338208941.2543760313049999829586643075519633 0.8930933017933615569735078833511400 0.0125170192921703940226787224337619 1.0125960170816282192688050675543386 GT 1 -350985275870887260952361165311013205825340.6430455620870788015735366865895037 0.3749440957024729899323714600785250 0.0881218442823927521919942859351973 1.0922488990200733573608049768631892 GT 1 -5508591606021911764.7183356357339656065424780306447555 1.5192373893845464834352174064535397 0.0407051945617614229114341747193721 1.0415568421231320803472300051524406 GT 1 -84683941834231801163499281357.1855393729026994347941218362644461 2.2924465832316364960499612118967996 0.0489015879943229765272473872705403 1.0501377391348956134375645970626699 GT 1 -189587794008018937.6285185241294835279931991907471881 1.1711601597879066706698116904303652 0.0711155769167037333150612500542666 1.0737709579366126874904092612250201 GT 1 -32329752071102121039.3349530783265139297408601960254630 2.7957290829018333074422836154118356 0.0476669051220421707912177602458788 1.0488404158101688315635036861782355 GT 1 -4062972977231839635026549001997262082849234.6508644257889513919623998631868586 0.1435357053953323638169630560351767 0.0299842778630840567615769254042861 1.0304429992274899192675844697427691 GT 1 -600941890391750000618281065056872065582.7426954724406958050437137142494310 0.0493443251655680911136956615402575 0.0293622374543049314964993260345124 1.0298019363741864086753628491104707 GT 1 -569919307755891820122128684602590247.6993570852098811759424838917022856 1.6515519270327153536026699527222114 0.0089675826156721751899737582789493 1.0090080333967262105537797782305029 GT 1 -44979482334733229766.8960307885620762431586625489128846 1.0781823511305613757312312359871119 0.0475672529354625902440490097437604 1.0487357812304465558272611372904226 GT 1 -8036188186282413435542843212574207610198.0274559588250284481877463151963253 1.4535531176986838327721917361108365 0.0671526112630476881078469216794769 1.0695136619994857341128172716865593 GT 1 -164511166959.2242893776351185163798797917714219 0.4636318535624832760323081499846098 0.0228246024364637123413112358338353 1.0230891163752299504043994881231278 GT 1 -9268747573131.5390548470153165591343273489377169 0.0556940038416800191908723059504887 0.0266264497486192020771308758944449 1.0269873544900967799632387737495106 GT 1 -231902364134655711411490107122688918.5725764520781886447086576429362285 0.8726694493063850096216475576850317 0.0726134571112136556543667214694533 1.0753848177093246230949907289788415 GT 1 -23296882224.7114739437301168360309124592406658 2.2084474995573791022586883241868535 0.0898236761284620573774659714953735 1.0941169357445737369166909622238049 GT 1 -10295024001289449325104416783.3217580650005605501036862026234651 0.4617419794980174854718468032528031 0.0025135883869157113503447042447247 1.0025167527539281194979472368661489 GT 1 -59768960505449588099772393342703.0896099125422614517399494862037442 0.6036063073666174537984578244503167 0.0053943470768972052450812653410087 1.0054089491030288059190331937665066 GT 1 -37842863201345578519308602490095092700.5051320397925330739110874408146791 2.2302582704172556503637794228645514 0.0451864868084589812669771075440037 1.0462392317148683081200728902646204 GT 1 -61916722859297424459950020442322248297.6163113565311154903578229890158170 1.1795183101558918917597951514682335 0.0386235396043680274293882038607054 1.0393892085363738566531870890609630 GT 1 -98569307922033584148513923833196.0056080773580174711243542050884809 0.1746771382456670084868241535642646 0.0218104080858636195164456132131001 1.0220517709721932930113028317035061 GT 1 -126528926086256003121949523826596893.2643702096462372972513876171828122 0.1964835780774247343373491400344030 0.0907543640975969018259010423527862 1.0951399947939718710727115613479026 GT 1 -3033424395766486470300520585161597629394.6545983522387427923815542431712739 1.0794449166827786575760130758708968 0.0093840617991234918700923247802000 1.0094283695158055942244535176685606 GT 1 -26016966702575176.4577190528068090466259728222902376 1.3096912054884252462574248983323418 0.0868951228378281372030551295486782 1.0909045340509535077035296479906153 GT 1 -172320830897173251847941785591783.4981865812993670678170012767070440 0.4982854374805144426174939154020071 0.0856546657597184430116534045002130 1.0895469514904148088260884321272513 GT 1 -110557.5410872331143670256445844672019646 1.0286943452766907036730855380444743 0.0618332849484974708401777386173805 1.0638276111723499275829624946743646 GT 1 -5.3014117517006343781026076170050026 0.3940848514284270116637563366050359 0.0380325204992240615762557915643463 1.0387746339805840924758870280420393 GT 1 -83183045147366380891622104851425.0305247809265179145022579840638698 1.8451530153145063559927330206365655 0.0111065570948659724635999161112905 1.0111686954237620660877896209071172 GT 1 -73650266203503822.3299210037371816577789273428074219 1.3769046912382914491027816396668940 0.0517755555085861708478070669595753 1.0531640489567144353587516610596373 GT 1 -604018534553168927994754.6588948224247228554991813567224065 0.5101775758910227209529522075815016 0.0481274197070809758800793869481218 1.0493240973788371042583578168294240 GT 1 -24756745394.1927212478603683473654827350383877 2.6365321143419862349814570036991895 0.0722470229638809941936919924518868 1.0778015029840628276383493930413303 LT 2 -337236369232545515115566196489308838289.1712075886021940683868722830106899 0.1200462536873713332182096764379555 0.0390572297528944536245970062488204 1.0398404240774466386818131643433176 GT 1 -2804310924421991060247.6110965636075731969637068452988165 0.7067397568743050440127952043763752 0.0778979948846678760736152293518478 1.0810994269297732429517417938482191 GT 1 -24139497467285946260006867712.6879977531813318799593518883476996 0.8518850605039116476491736933237759 0.0614953450972669096988186064095804 1.0634674630288936154234169225956726 GT 1 -50399355.3424735413433099734449797571616184 2.0223355372420360915961852676976069 0.0664831528555201718786893270034979 1.0687962688739976555790032240284495 GT 1 -710.8785804975242971808860856903879188 1.3888988977764856216419383081923197 0.0271203867175172681934404946874035 1.0274949318071255898242080361025502 GT 1 -1803779542483537611.2103500385316783917811610512779988 0.3407212287015834199782377771709150 0.0991498949805404411579184187870498 1.1044164003422479083520497079406029 GT 1 -465112907998739820593230260.6874529438034889444960768656963255 1.2546618470418884582286619831125436 0.0222084869239782066563960593329513 1.0224588084866100967713809102968324 GT 1 -1717973848083816781882578946.7131451994188405177452464717406192 0.1265316993047155337225592741913110 0.0106911503915989355742683588438977 1.0107487113696083026642120617010490 GT 1 -26570333196770235.1974237359765707839574465697589243 0.5174892433162204959892327893295726 0.0367608347724874110045948954546509 1.0374535436808255951360100360501876 GT 1 -157589342727.7433620973195969598540378114246372 0.5399505820860997958497902271153113 0.0622374281879608027911846172357539 1.0642584837521916883658644580787054 GT 1 -280438105628190070768.3291917827623650678690651351266754 0.7513734490289902351920435219170023 0.0580168885212524865333468593020542 1.0597679329329991482154630018839532 GT 1 -1034723232845106972439727057247775318.2613351296997687428353496597287050 0.8223565299713556815899826747465396 0.0082413705055814320648706575963964 1.0082755183455750596646221688283767 GT 1 -221377616844528615113222545220408428.2537703600159212970625918215589677 1.2889619459364811793626600609691055 0.0128682247137293777631257755831818 1.0129517375321072266023532449616538 GT 1 -42.3976570322855087045067857164441044 0.1171261570831735250509199654566546 0.0412567050246605780984733060188489 1.0421319198319425622872968736534669 GT 1 -1012667796471.7967071664208577621234411911322309 0.1833904114965605212522210008340859 0.0990090726781824652776422341931370 1.1042600909896279210755457685459628 GT 1 -5879177283830780351928279552.2143886126725451175257215214679653 1.1442188442119841806579388127922514 0.0269099934477648339501159674078805 1.0272786969096968280409087184363887 GT 1 -6032.6681935799884146272858963613313575 2.0023021424074889484293634263271185 0.0792110630865606528092477028938888 1.0825244362932095186383054030514545 GT 1 -5618805240731923554167932976818063723.8073712070288125723979343409651420 0.3843961281643559063446653329557255 0.0439813771692083319866130047033283 1.0449778861719406502020430399575815 GT 1 -18060684.6984258481548278029562764925571079 0.3935610902654717897652186847069459 0.0498787107867822823806299660281191 1.0511656296810173272716889496570469 GT 1 -55509.1037875795640808787062975739736563 0.6759997170065911690431206056808919 0.0218382326110371974086673554473773 1.0220802162972553164615716595521028 GT 1 -29917391549870318763198567722.0714640137981573958441386201647750 0.6227795521706755011739991104836983 0.0848040990557594256587204574707871 1.0886171372300072362773752136597816 GT 1 -1198931376373297786.6718658790935235844640809480400153 0.4272510697498155612087492993612934 0.0802785980553117632247391774825635 1.0836844787726540405070318722577418 GT 1 -2420722940064714359428992.0650562299703724317524265768052803 1.1447764791803685051818376424598577 0.0114705128586770711851960466263388 1.0115368066278861053543212390747299 GT 1 -214958259806044866808.8504263710092768463274748340379431 5.5287015587274878764706193830387363 0.0402969357032178072710855425178711 1.0411313503900335297506983795281339 LT 1 -2785853227153619.8637565900831037689068467927077001 0.1749296717224395684794013341906290 0.0195569564374586751954104451386658 1.0197507242093760757847577515672378 GT 1 -6718040510663215253.6477354770505714845833919327065327 0.5065186619356935465188887298840621 0.0690809906585685590754604383824897 1.0715829986777774973064027525052562 GT 1 -17300377063919882836121435321.4758552337638641260891945971155376 0.1658470787384661686827863488107573 0.0134367265407791028684752156092027 1.0135278162359914026232324410526004 GT 1 -1620819981206.5034372888239228500887100839057477 7.0259052650033553823045471761924438 0.0124481929977629102355753578581271 1.0125263207959084680386979512465360 LT 1 -12172772400146838284860382099508.0755295741989762693049494495957170 0.8088462810188632209752703621032441 0.0692477253747168858147622227521556 1.0717621223695163219335438495110698 GT 1 -631107022476273727396840417.7397776453218614426808085006337865 1.0913265871818973271194976280915726 0.0649125766058159741615070867074346 1.0671152531080454642564107571257532 GT 1 -90494867046413431338365217147.2383537092957153187644229171454746 0.7205729395142169805887722154949580 0.0697836678729968599149427738743597 1.0723381046952280014360707059776661 GT 1 -41867971931693834152399.5554557024937288185839701220704651 0.4180531121800798234092524671585229 0.0331707033288829265879888514813633 1.0337333278904574215927398037237490 GT 1 -276321535952378452357697421616785892.1774884774530207220250964851137581 1.0145809244998267868725236752997352 0.0254190230346407360516901446590836 1.0257476675757034124378512463701548 GT 1 -101750539162546775358737110.2302786620188570397565936644742601 1.0658187526009578713323220842352740 0.0591832862676715021210983547756288 1.0610069365488005185107840886134499 GT 1 -145711.8025337121254795317007335012318341 0.1138445866304775970879661083221193 0.0779648155355893266355826761515399 1.0811718951293500015225500802334508 GT 1 -54179882148404400.5447572789861297722412917431567045 3.6861086734511348010543014914664313 0.0345762189232673466609964927653968 1.0351881226670422578951638913201331 LT 1 -164416678180250098186100648860272182.0536191712793100996272529053619701 1.0216625053836796964360004555308883 0.0882753676495105323482427509225994 1.0924172727125078991191236213979387 GT 1 -2459375742386.5114803866235730024533060209083995 1.0914833957990664407959630059355300 0.0975956749290993220697162070664127 1.1026926053964365777707895591627051 GT 1 -451311664618138837602320705669.9010772841363711544931081550856904 0.0399190661194813608931692331397938 0.0251428741455636899122251489576938 1.0254643563071643360609852574351536 GT 1 -1536753.4119901010521113869401559885942651 0.8135056963242825862944308132709573 0.0609978896584277355253511614718998 1.0629375523412853898250505164069489 GT 1 -4098385632760644675042364932148030260216.0609500567042859018624982795159825 5.1811917780044829276969454756832141 0.0064066933897705115870218453224532 1.0064273043290052960962701857249830 LT 1 -2102.5465081710814410667960816557159181 1.6380853809773644321113150065060610 0.0012042256925319376343469190570232 1.0012049513549239124720155317970848 GT 1 -60.9115532326770205564630964242701108 1.2595252327637363128629863478767658 0.0671805272907366455636094295102170 1.0695435880578490167007450715398006 GT 1 -118.2616161428813655779924935846221469 0.1468041137613170158973762189929717 0.0577355689255610357351657609974598 1.0594693314048787718000865688521454 GT 1 -928394789888159225610346506.7410966710835337077380435167192310 1.4932713905581933390745394388260866 0.0479572722547155333005373579293636 1.0491453631125595535984886119702378 GT 1 -1613445739896587180.7463011812045531059280121538374105 1.0562387049236808448178459254526605 0.0312317734985346987177932734008861 1.0317298840384444320994020562433310 GT 1 -210845735000560.9612162747833068042095097392504144 0.0065187010943321223906656573511869 0.0940643069903581093195698914542930 1.0987869544763427370666094388906740 GT 1 -213498.8082587855762205236734143767293486 3.2082146405144348605257584872726542 0.0248538672117601643822596551629849 1.0251679394323322640518590937863661 GT 1 -129.6794202476557319494604804944976649 6.4270967085719130386487764326686359 0.0808249545235353241314441300497787 1.0842787009052448139526771506858403 LT 1 -1.8470642116823052166087417034745586 2.4877531127695004503880341697893389 0.0819416835794882184815103285263459 1.0891490080787523391018037385870542 GT 2 -34873044379014652904036459775337099.8670533987585631265120149105693156 0.2375085464391010800816875182112361 0.0345781808886075745934301277288035 1.0351901549013545586307098260624550 GT 1 -22066082202.0812497339699516437110123840148124 2.2338956839935643010008818624247886 0.0398137834448950907118799091288162 1.0406280377528508029469940239594931 GT 1 -297328706480226645136063.3933540225204694008390157987112937 1.3856510227055922914531326240122230 0.0730756750043055366446426743687589 1.0758833510573951534130652712717594 GT 1 -1408154069828644172984196035284.3144244320349075249810776920801241 0.3966411468842720667317660229985619 0.0113414093327983560035954743111836 1.0114062135623995943695953409879659 GT 1 -226936028623009892385076711787400544.4555518656469011928875942373722024 1.3632814286515186235485137666745825 0.0216149955020432926604172707804016 1.0218520212822725362521121404043298 GT 1 -1016432005985990694480233129774090420.1384030333929196279910977468110910 0.0171881897077197410306472489593813 0.0080397512591754671621039210930549 1.0080722443340078791160826374070656 GT 1 -3465.4075629860643003086827773593499818 1.5051946569478414629527345141037363 0.0809614150292281811046265096273207 1.0844271716854449686929285870198804 GT 1 -75519228667632.7139856631467968550759733677739918 0.0234028688182787913195794758674557 0.0881126341758547852160409686636813 1.0922387989206589772221750911271119 GT 1 -50223048150891809896867029532445089.8940424626107837136775203395808269 0.5354245143426799086512914127819456 0.0019377359295164549822686559383367 1.0019396157685964181260670198542088 GT 1 -2991866586.3474199623123932530167809511437086 1.0439115190579308727828277957898137 0.0395175275165136407121068683883474 1.0403195452653940087320742765565185 GT 1 -43783139050836.8585061198093427000234399311523402 1.7790009367022830044922711554706681 0.0939266420558035604050591412175980 1.0986350071836435649070642799362364 GT 1 -31966049.7181237769313787102399107657823922 0.4201346165787803288284760589822396 0.0948532071625306456345156625916674 1.0996581464051850664855630763087832 GT 1 -11378995474444179.3074517012573193913931511842350616 0.2220527695329182114848659282173461 0.0799412933598656019077808713061364 1.0833177994095589116457621489427360 GT 1 -1548446324880.3880721639842855829611622187656276 0.2080918480717926507445526177367501 0.0340287141111622618162901416910996 1.0346211699641642378826765022612293 GT 1 -13910696445103628069796207461.4938831191159311657529337867232839 0.1715962703078626230874914798055709 0.0329981417622130267335258413633106 1.0335548618783757851611602743857751 GT 1 -89008.0630633134523364820268770467635232 2.5385887876005590253235896421901295 0.0889001660319668507706024304969013 1.0974368662247552895476980005027376 LT 2 -136928874562106490.6886681619644180245374861017536599 0.8743551556290700040844736048913194 0.0796526964756172543396724006545157 1.0830041763448438947100842917394517 GT 1 -478199262101959517563830894767168.4701434606948185062811435556923404 1.1694662792342847239590787537751641 0.0337181603932208266922971765131388 1.0342997278958164109889550612273279 GT 1 -930380989.4913759288578326355875113863196192 1.6793508950506183442351956984749722 0.0237173450526833487676134184274780 1.0240031290178084247976972744763191 GT 1 -4127978459278793.3201974741715927605557351227040383 1.2527664327611859676786066450331104 0.0457648778973964967248372255363320 1.0468451786728888945478516964482060 GT 1 -215995671285827617763377944908570127459663.7806726472947599054520071362688429 1.0120997875371264212504337639170011 0.0517393714851084496715593140089791 1.0531258899181887558695728846589848 GT 1 -38884520939683022386999418159464098.9680766015092411086675716448786638 0.4106285415515457265664379936745120 0.0248331755718074990265839653768549 1.0251467206429304096244625054910250 GT 1 -73371723297493493326551529253.1473965210517060811847123479961889 0.2458852413927845495492069270897281 0.0806682970312205141595770365497473 1.0841082827190440494205809645343137 GT 1 -3179079698861139416961687471383636152.9655683717881501931953029247430147 0.5858909939481239158198896018616131 0.0983807836283053121099843279928069 1.1035630028505010205868827705034436 GT 1 -111495215327764074958566075657305804.7095082499273906051227299450180208 1.0756522779098722964775474553633915 0.0970116499209543583750643270750294 1.1020456270004837149981004971321649 GT 1 -2681437318031628518038549587672353971.3459828873395614782438571209048872 0.1778598907538846973379166232902567 0.0708354224514820346673225657698745 1.0734694002626767804932886428935817 GT 1 -1395153784752995490410779762979.6612349636289952974515706316719429 0.2232521296966158865536582003708625 0.0908129299337791144680221031109763 1.0952044083254819810793668281782235 GT 1 -187621735519610922709389441520078724473603.3414660256716073499325071342667265 0.1194194869089918726408066698674477 0.0076098078864486596757748603742458 1.0076389102105558395848637828543278 GT 1 -80530.6185859839866703416620094628725943 3.5021068405673620291920204608389464 0.0982695452362121783092835194077648 1.1034396342171020658214645281663962 LT 1 -5732360014.0069633739798803817276835585011437 1.2605436227134668926156852307053656 0.0754627150918513414637962632872674 1.0784618991594764265312690604959087 GT 1 -460197036750796252359521698986531828.4770013897514424836985208161600823 0.8116548507471479370888961437479734 0.0174076373238717989819274904976266 1.0175609318443251483835172334294782 GT 1 -165505.2062923315821332793147457715014329 1.1957855156125620244735276788594467 0.0603819784849780897393997171144512 1.0622818463951252637048775566166484 GT 1 -923038925.7634726066313372292091012238436163 0.0143055084389088015871404226306360 0.0536977195021316695653324114155544 1.0551932255608165377887183901113215 GT 1 -1825002128694492046.8747384612197673024415456616307045 0.1793857273184348012726505896351391 0.0902288064740683631611480751022382 1.0945621467722823605099098199102381 GT 1 -3347151.6909062446321529604553715110020867 0.9485271164064591580128198660961281 0.0274629113468770024837440732447055 1.0278470667842318631192473118895712 GT 1 -15907629177274515908697704104149.7642708531243881562581988001859729 0.2721218128644314610203053425120867 0.0979143868137129267664090410205717 1.1030458485829688510046524622925204 GT 1 -13.2973968185556448749175268259444624 0.6126714679028500909526291413323256 0.0866089786556105458233378031281895 1.0905912082068686353963226282516456 GT 1 -1227.4362569473867322506817641964814194 0.4968062346115035712765640074224083 0.0312781627589584933135660148859479 1.0317777699722107734203198671119488 GT 1 -18688494720.7976216302798962747058143091632791 2.6420824214252085351605191117086883 0.0145930450351621230551782382243307 1.0147005708853716835089664412436265 GT 1 -2438237103141602568189550473375.5621574194058429301285963014239146 0.2171570271031685910332235947900635 0.0577507353773256899116035597772288 1.0594854272834065967638992497222980 GT 1 -5091796222.7756730724731705428044878283439564 0.5561425934307175941132163636063701 0.0419458555184483218921601349386742 1.0428509843604062466066227280960505 GT 1 -4113993410625409528694970.8798605229820034324962556711193721 3.0762333889070001045238012805390958 0.0239765916680114097572912260618368 1.0242687089099451956915464083929261 GT 1 -288939065743963738.8999404866519881216840854957394790 0.3066203192880252286179196260827863 0.0494716793431212702137535594602729 1.0507373219616252821737342771089680 GT 1 -260.9611902522536937061608769166972050 0.5723946263918602514346434924128889 0.0552765635141981512372455111259610 1.0568630541250160920745587016259738 GT 1 -7077257008931953044518593.2641207515364475783248416767760507 1.6317933210311895806173261584130911 0.0410893996082455813979471926523189 1.0419574301419691164067032218936024 GT 1 -56795071737679.2138932145834343808180881139728261 0.2664314266195381106735410797625634 0.0626445017921451225779467595634153 1.0646926682625836104716193015632133 GT 1 -47089096096185087.2910271101927204696593166484395798 0.8067748694158800301397295383050795 0.0618919801473758710669008682360188 1.0638901768486932122492925761870169 GT 1 -652590097085569554596575312932.9691250344528401852955100217587442 1.8034516676971406605273283704923596 0.0263329418507934938699633757163725 1.0266858631921930739650659230167365 GT 1 -21.8748010413683000484925479012028386 0.3420594548256764026605079405761903 0.0420080179660305522780106191901697 1.0429158705306751089784566218316199 GT 1 -7882037051018409358305100098655.9668801564466701735923834725363124 0.2607092834151850697618699828271149 0.0460241789632041993278656439573888 1.0471169526801976683927712984099927 GT 1 -6458774817709739927006546465.4737983355812100976437878378673682 0.9343859543823799876200884875116713 0.0144807367179075342731452808686358 1.0145866058710181392641937236298361 GT 1 -5786738929653129379915863.6838132073461468616062514181812811 0.1718997138913800988078317531061198 0.0603806049861061075290129064306577 1.0622803846331787403067306676823308 GT 1 -23228121.6546498464188524757465393427073376 0.0369069577379324118672656094531686 0.0860345082512216266923254089205859 1.0899624634390055962610705559028535 GT 1 -132846149950856.2165527359814826502301043065796788 0.5181158134197319917315361519461536 0.0418865718199393817485217264609868 1.0427891069970966182528244587358513 GT 1 -53191.8727467423985886223550142823331246 0.6936456248437034925447647744524008 0.0909026419651248045163589040270063 1.0953030859911232973774157900488133 GT 1 -4089347540.8783286906118110736196709079593472 2.8901226907697731362647941573351694 0.0566101292573748782890998966426660 1.0599736705688641348917378902235383 LT 2 -6307095083101842681351551133759.1428887246721904391019139268033079 0.3851647667420792861320127461809842 0.0599977399731002736624092897537385 1.0618729994370418787047087568846559 GT 1 -1569211.0409213123818645741122218213658316 0.7968435999398792822124711838602917 0.0896118969183381831718280451726041 1.0938842834880056507927610746056008 GT 1 -167532830837045068816388804562642.0632049725314252075620382473064618 1.7669270379629533929841685529288851 0.0038171680928467743145606576934581 1.0038244720719063879878477453639252 GT 1 -2507248333.9534942703479190966205418688548178 1.6014349683989107517416532040246177 0.0612992271958267315690268839961570 1.0632585163688647592101837753493399 GT 1 -8738457039522819526303753825033688.3808350361918047469171654489054087 3.4048995796613854238740039689333941 0.0839574101083343103170305524145054 1.0876924198739708593544675876673256 LT 1 -19015871012746560005181759563.7062437020549854503576942473142828 1.2919623902033703649617512464524484 0.0785809334493606580954766070715664 1.0818403336722351569267309452759405 GT 1 -12159452043429358390556750251.8062093759425149312699003152054667 0.7582597720240572493036351630340500 0.0943122433020919785331666532933082 1.0990606717472489689504139278847956 GT 1 -924635988281888741632710884042276.7747266535671752739832513685597970 1.2579857286756245605241182329463785 0.0421309132664529195551749087564508 1.0430441630280741894395906295183125 GT 1 -6882297720782.6071311048769819113784205832511900 0.6998295981132522638886444278571189 0.0204406018976110201530214651806230 1.0206524021881753422760149859174037 GT 1 -3662822695108049801295433215292428119.2888701818896970267750409220190130 0.4618641660605104702689949128924536 0.0785813214975130744255656005189290 1.0818407548141978261892645117606868 GT 1 -2029726420761430834353813440384634.8319431422311688493202961090988366 0.6515956997440645765767561808531580 0.0499025251975934597773992171708496 1.0511906945959243862254279168810296 GT 1 -688616.4636630624025252602379538847575802 0.3739014507466742299985109725437971 0.0082554498847140411685386937994521 1.0082897148230776729725191870365497 GT 1 -535.3660768846897570978225668056610995 0.8138931836209269415737082483918997 0.0287883690315354874014160264379159 1.0292108828749885282585538745924833 GT 1 -560351598902988751609065033.6651538417439756468650030464093811 0.1198304502002806125568608231425977 0.0655659132482328679237107804239958 1.0678141877450292969071177016690631 GT 1 -12672163995764827629494027151402731437739.4461822708156382799189453316901304 0.2723524590976364412553238701695217 0.0519087370035166604216108562620328 1.0533045123770442612615380144082066 GT 1 -3581727142274848140382929947230221872.5283674051406519980729957304871219 2.0920779985057825736411495185712941 0.0653332547647534594094717721308155 1.0675652354352347520185175627603505 GT 1 -8445.0044458358316324269456030559265220 0.6727975893813049041234140148026760 0.0502069488296145079126598817043481 1.0515111589915984150933515057076197 GT 1 -2252805675584525267.7816016677409869626720557672214668 0.1951757492391873845551358513826383 0.0971156803289637253532197702380359 1.1021608404481060660364067263423772 GT 1 -2908.1913754236709881906199265835070082 0.4925657114473042952716095832191526 0.0317508377379203145319610661980991 1.0322658257959330823426080762652823 GT 1 -1226854.6430580356829832294491455193597728 0.5025364820916711790882038101766116 0.0538585421011065953777487947482556 1.0553631884464749686605440047183152 GT 1 -5007351889167350545082256383253371163350.4784484157110400403762487220089269 2.4186025999672130518909353654471460 0.0793575444075729608227211756881856 1.0826835313557976948630914719701033 GT 1 -786262245438.5877411299710883750418190849786950 0.1224482594726157967347561214802980 0.0458867049518484547621299945416195 1.0469728566729045831987681721092293 GT 1 -3372218311102.6911896386157946612395655107940600 0.8818459086799040715555125374584180 0.0236493796721294366219443896763285 1.0239335149418403902395949948807462 GT 1 -9947020643082593731125312.8225946289300205244916944236070251 0.2992442556943844785746184240037517 0.0235065283181426025512855433315732 1.0237872141133962515869634996341163 GT 1 -5369613666606154113001973873301256175211.9075288905606828581094009505397518 3.6635773617918755570151331104865540 0.0299544826018837569356481317277304 1.0304122834329619245667367072348380 LT 1 -137848785755117454775939396859241.4565387780767018369099404420853161 0.1909042099024851154402081110621191 0.0363610838115913932338231699061046 1.0370386228090936985487451880497078 GT 1 -255049255112593953410347472902293619.9785771474987138905381922820637686 1.8238815091457101746574362020639743 0.0837200791898396124592627020616207 1.0874333705871387080899199897408498 GT 1 -634506743548901.7159706127132551251479820719216528 0.1908282111181426216761475170494208 0.0961225778866783283314151899811635 1.1010615227911822021674370720945345 GT 1 -50772951840479227896373631386650413556.8161961919326356223375272972026391 0.9949118525120911909248390616562755 0.0391640842905827075199484234710968 1.0399516278685795240326100832880608 GT 1 -123344427112003287497518367585399985.8373597967310795374758323200564572 2.4625761595833583330174279154056918 0.0942121313811474453220477136544128 1.1038457061488144715406074007688568 LT 2 -162923813949805957393111398339102534106.9530750741398678159030505168608810 0.7879629609958190855060823329291635 0.0925000413159026848589152223107321 1.0970617583702977366702275337146148 GT 1 -81589707714274662701000587751439.0229840332837040982097980954962137 0.5350223553530391068011689529008254 0.0240401369952166219995246112413383 1.0243338173851670582621781670949684 GT 1 -440735037614152928142349.1997300868997857046622594647488888 0.5040984632408484745711732937330105 0.0810750062865549879951463037011006 1.0845507772441065279308503916953559 GT 1 -9786076674.9884498597222804344549824086433404 1.1565124653043854929644846026343120 0.0683703234159995019252078017327003 1.0708198859791115744866890639435070 GT 1 -70335168822901555532732447284672.6243560586767882004370753628780343 0.6068863589845389791678130833664184 0.0341843034731323908457278942890513 1.0347822533172697631574439089126773 GT 1 -4752686812411441638849386025975924.9090028294564485096014946581045669 1.1991328060427547436414371149261141 0.0882987728381296093507536615336399 1.0924429443771914543601206515926607 GT 1 -2264686904616430165031365681736997787846.0638260065232218955520275984369511 1.7002024769452468874528661081127675 0.0506255399577137001905564787442392 1.0519519743829803298601663897500158 GT 1 -25043663419633807084226072082541871314503.4858146432003388750533223363786220 1.2733348269786350694100901002140033 0.0789635651250251398052528282330248 1.0822556833844743272337838357297238 GT 1 -22983348565045636024202240146498100570.2177105506342056985295697220384203 0.0505955274715060554711397840260021 0.0654533763956660662479224502554814 1.0676937618336442999834645995083643 GT 1 -5292394833823118533522373417635296537.8752722313730372950135494201087955 2.5223209177694229749382783474166933 0.0244683890883709969697699145818816 1.0247727146140332117487360506125842 GT 1 -39747323141514925727.7474925172900499891717926752191826 0.3920078305997005870006170713097678 0.0193254051918058140804119324193799 1.0195145820808281611655135242050462 GT 1 -114599.8559339648341936099730776571171464 0.1045517265171877490286058133514194 0.0910363974221395211076673505827970 1.0954502267747975247773913430763842 GT 1 -124548066523511426382621788432723282.9808393196060971812179058453537234 0.1490040766558290060831331815839675 0.0075046588122838700705847039272230 1.0075329604492229866670694179197979 GT 1 -131.1020106692376126895909072338249103 0.1958373663229758035859534595379996 0.0935906776398134280887078318584646 1.0982642842813077510745417719042212 GT 1 -74290275364495098519161699232109573077655.6860480289185382935941285529472085 0.5397859098450768606571041970450676 0.0214412209184699770316239986836607 1.0216744233507548374792456184287533 GT 1 -1428045511537423875656833.1652084681746426632358894228969106 2.9037662693799129600533272731832461 0.0980768842835790189557097729976152 1.1032260001173845561895004075861647 LT 1 -6010459446727529912844192869767.3654838267031523876959085245565945 0.2866691831434533000093326753138322 0.0576311668234406771202305513986094 1.0593585383883195038093240245051782 GT 1 -158266470565401733818590630858.3460831294072954996532307550729000 0.0940626592896271669539823657585220 0.0654331989493429798523239274152760 1.0676721714410467029303333511263434 GT 1 -160002580163562.0440567469778457559690636886342185 0.6867301132309765524668627503969743 0.0058396402419749387878368275726214 1.0058567576131096160762067994129217 GT 1 -40287109978.9981842062868139800969442348246224 0.3286275438344296402447637741055254 0.0824328327534256214433724283370725 1.0860294949246438788989406577669658 GT 1 -40552810759859.9063282021865495850080675072341434 3.3917679902405160949827849599026393 0.0251867644614297286319629502138307 1.0255093796267393374458981212136157 GT 1 -1900270730.0045068986248234176671367150271930 0.4128459153791581576834222227688234 0.0195743697154980630107348585707291 1.0197684849888429457577948393394161 GT 1 -2806665565391238968610583951560835.7349128805170407394936692070827475 1.4122412977542757475441305063557941 0.0999674558549907097599338872620328 1.1053243561504677337252210081487899 GT 1 -1424.1555789340915879906137570684673518 1.0527669279845904047586636030758409 0.0465234414168597244621900148927207 1.0476404388446663209789146149702350 GT 1 -1667579676964347464500045.0080340608997467993826680291094590 2.1254699114900942164284549702924433 0.0905430731016238103165979934878601 1.0949076412456288069765936918989956 GT 1 -64897380569576817855159060590220172416041.6206734969560324903496817623158585 0.5089778901384364880433326679947693 0.0356340995614235707518117936071508 1.0362844916177686637961861906745415 GT 1 -242446514162650127596.1384998515866628024020076272313767 1.3103791772844042483749226597456559 0.0144498920503955241684045563387951 1.0145553084768576755789521552167597 GT 1 -21011675.3300365507342322552153835857524617 0.1303841255542952357967233221577098 0.0123147001523233135240888294226794 1.0123911543946902041832435393074277 GT 1 -1047993343945971477990917220956793181620.1222673307665596356072106537230977 2.4790443555620753072580768443437855 0.0449515214924111799925647134563995 1.0459931769546243813164482759490860 GT 1 -150585034990245801.4929468551237987188236685687869792 4.1597689447622432058700730400115608 0.0660400653836172413813532939558488 1.0683217382297133924078509312171911 LT 1 -6594233882731793233707608953285.0490538676099100718920214201231377 0.4588085388771441992956332999346286 0.0239164001347662315877043575528746 1.0242070406376512082430286577176747 GT 1 -1635708099643626579480732.5703784549418406312478351480841920 0.0445682008538528792209876002871692 0.0372006238243394731436602462399054 1.0379102210006625945179802145711960 GT 1 -325612210.6098828858462199337108362359324966 0.6070891888366293224365439862784595 0.0376074369647537427187642990870477 1.0383328418710117956808892894838891 GT 1 -7467916102655093258072754.3567553174413557547216561158471500 0.1120850613244938111029759903406962 0.0265551136962892090220251418588846 1.0269140697389125355211013305847940 GT 1 -2238455957917221096284331485007966.8662291171545035164604029323647904 3.0665934803097329241965671497906487 0.0639462251997060907013332704406724 1.0660823524451155569825805719888375 LT 1 -15256402700311589770262218.6870514047938174530966342214911054 0.1582209907229032983208103666445707 0.0516160972909727087859378227990245 1.0529958980380236512363906497329142 GT 1 -2.1341960309095507382967987546051929 1.5427206397997894842388133711303054 0.0189472430562003793446680121629951 1.0191290421229416540406050198321801 GT 1 -128223531632519234708534161803174563429728.9052242433921552264433685884378588 0.4274017995777679196123963476344750 0.0628082497335359857750353605401218 1.0648673749198211221819900089810578 GT 1 -765656.1903057957080359195680152889151773 2.1023977114054667333303958123970380 0.0451415515617176372344213973412312 1.0461921710178978326996621821199350 GT 1 -2319861631933423447145757.9835445541696047703150172373227896 1.6950745008197579034599015567540827 0.0295208043860336264302323228651626 1.0299653133736143418811951300633997 GT 1 -781921226117792.2276041616940102933866931159931321 0.6077847533237322063889374064517183 0.0987073660569685879570338397569897 1.1039252861558974981731001293337163 GT 1 -27599796.7286401759729492665707245816853734 1.0883629458506927454491683894650620 0.0796113518162785751647052973101501 1.0829592544653018927641965231027018 GT 1 -2893657592882341365405998267968.9784727450086140895504155365550919 0.5437923208276602004689107478610471 0.0555921393119925869481029180007649 1.0571971503323066426455406284840612 GT 1 -28679148628.2481011657433283068734774745280102 0.1126890790895667851113950238595625 0.0455240221113037463427277075143046 1.0465928033528394050178210625190453 GT 1 -18467559402191021504185555781423158988.3263177938914480302697613668081267 0.5958497501575503364410780477157719 0.0927393235766437641557408622182917 1.0973254650625178665205273719291368 GT 1 -73261187165995537356455961817.2473596844985736222507861216736756 0.2563952742834459945430238475857830 0.0418910079747276737003942893859886 1.0427937371013491554092819575710219 GT 1 -53810525969326274069879041.0355635358405081547921128546370517 1.4696728414409968789647446046303947 0.0534009299760794379248858105917674 1.0548796439487558273397418392474682 GT 1 -70.4973355995119118108303525376682794 0.1125584450295414443728766052993381 0.0919010284182298022788994953158270 1.0964019067814674258544086618956014 GT 1 -1402140378591745.9777694819780813745262986116380330 0.6033358081846796112583128888045067 0.0084435096320362620520547902755801 1.0084793579927701789353374355595734 GT 1 -55197585.6756263114980415222098468362739019 0.5706457800961311940449501635355506 0.0046206231783785362140316570571535 1.0046313312557161726542494549361849 GT 1 -682.8727168365656279954632524475239077 0.2092809718276400799290484917418269 0.0803570766224669697910222972484197 1.0837698110432895269283327397575994 GT 1 -11341345449846890.9611859460601659099246055639881634 0.6487578671617866486929422928456186 0.0731306803435956858147717725860078 1.0759426945981015026407968808679408 GT 1 -453262583637130865184292791704833.7713295928865007629714285148583050 0.2558683721793900643107075303487535 0.0071304155334480509700365670222389 1.0071559584397358847083360840403182 GT 1 -1339798714616218.2019418700937930915999472728146567 0.2396836436361563209310136648184542 0.0370066846155525327003763944884872 1.0377088086572753584823635606348907 GT 1 -67612973645385661145221382105.8932474085134926950136445757736486 0.0298325959982301923105739925586420 0.0461591018985400474387976220523273 1.0472583949206469811636053618190711 GT 1 -23527872120940497.6779904921071431418310621046068799 0.1016999254827561212961862282045713 0.0986012974585988550799369699778209 1.1038076081082523703250729504339874 GT 1 -459911.8699685693124290812340768540812815 1.2968439223178448583967611118561249 0.0773148041324596082119712188866270 1.0804671688879512849640753679518061 GT 1 -1416370228219845661677.5245050589315966768238021110813600 0.7384921616875214829518243709270375 0.0041595807197979057325427704387059 1.0041682558406143446599767800042965 GT 1 -558041013495643180850659.9022377695291079047397878456345071 1.5964935466631760781748195742540603 0.0012186126790521642809884529737729 1.0012193557912549197813012707588770 GT 1 -124419369302947892400298847454742360150.0991675203622899762432366763668842 0.4015665274213997145258630403461474 0.0983260830396391040943546043044005 1.1035023354108353333164421849162516 GT 1 -319935262785925.5305660103556068069739006495503292 3.7194686371028348209767021327972569 0.0626624210546040541855038797859753 1.0647117852718454017446193370326269 LT 1 -391248622343210650449020463743002871.2796423437963092875004014760155219 0.5925802680622941413133176330853375 0.0627845080777393947874841054119916 1.0648420424784353988020474025681105 GT 1 -847117104215355847764105200142745988081653.4017802047469617462243787879137900 0.9616886319656147799605633410211766 0.0812042317214885191315113177888554 1.0846914138825112138628675735801792 GT 1 -5226122588275452872994458380056210357138367.3133675215090968079554402721131549 1.1049162217122544559494886865334704 0.0990688011160074176295536848579528 1.1043263851285123730179982653627960 GT 1 -29796423975302185527004587171.9082363699144911076871844578776929 0.9562518255826619815153421312705111 0.0173890488685167829036620686607239 1.0175420142542468424146963007246745 GT 1 -52191385972511672.1415158739629353893350177578256286 0.4965138124058215861023242355870360 0.0663088725816611646297507638310215 1.0686095941417349952153804055167937 GT 1 -17216767532940057081713.5064304410627664233129567988162283 1.2211163296319681278188378131630298 0.0413553568544279041657271475764357 1.0422348221480498164434437780646994 GT 1 -1.3238857166466103679143701529198711 0.8071298703788034922681886576354590 0.0620284290842024273950059823110819 1.0640356386273283749392495944204541 GT 1 -8157491475787921170593025187253520156518.3264000637772230622514303373932802 0.6840665934745617774966295241948708 0.0778614074818637680722056626861204 1.0810597494572614058666500504283585 GT 1 -62590718221747357498007869916830498262466.3809824152854374569077841982135064 0.3194873624928013881917297457309640 0.0813231266569688662805942586421361 1.0848208252630707142549641651753676 GT 1 -1534348769955326440.1588526477591345290861519370669369 3.4323066349661779216402369763046585 0.0333781644460180759160067549838358 1.0345241607318896593759899274899277 LT 2 -107.1964062620949498543670704563058921 1.4793027084146391813369552697354646 0.0627025815656890860273648355266105 1.0647546314911332210299320769609713 GT 1 -29.3533148342935487539302871396939761 0.4613883231645666161464673532168634 0.0116028289289904874177676610963902 1.0116706670014728945712453306204940 GT 1 -173321948510461816090611972008157662050.7370920167772578542048261968464043 0.5840097966927384270465962100434565 0.0167562369415715833782474959484861 1.0168982108803404050119483690755003 GT 1 -122319771241761399986546201490871455473.7690159617229034816054918813977021 0.5630340455162632143372790939118114 0.0838889996048432585812669565835433 1.0876177421789506132413781551977260 GT 1 -107921.3942439388037985492479339180654647 1.0008127345405140014515069952322115 0.0227288511558419884161507225897169 1.0229911333622134800685103704807706 GT 1 -601541861805906.9686387535978876046182141605591293 1.0605585723209695702950038368447243 0.0808046845922897164543906855195688 1.0842566488403532975736175548868661 GT 1 -23956100888756123566525968.9447879443424209163976171199650601 1.8994513613110492104278531399575653 0.0007380820935776196861149129547306 1.0007383546102674265049375487657791 GT 1 -25443942213438213164467768171722503.9425977738231682491872234963201808 0.8256305935867683688710718269812706 0.0747931248880365868666244554213289 1.0777379177056795204927842292748869 GT 1 -2262.7309590222456737422952644362540265 1.4631244361448334475402004014553723 0.0284719454528975942648154707159694 1.0288851330241000147059039765733574 GT 1 -593967939045961670730236303212429671304.6175775483077137065575908818875146 0.1834860319112281045007748216575144 0.0511671483541250411320128768108403 1.0525226269221145360418884742089623 GT 1 -1871913533477334383585.6792538401376422822568032230670995 2.7698419462311489266323188885805085 0.0281062535258951494919990408682800 1.0285087948239971059955945502096501 GT 1 -1095400947984598331264229634987513065938.4700207480654529005725997549513008 1.0984745507429790011145919463609813 0.0454563251806566961047369902700648 1.0465218801116046742363283955936872 GT 1 -89187589810.7228253625164152188207551146075981 0.1680767382068754095273824865942673 0.0225956630658635221130354946215891 1.0228548569407270180361841232976019 GT 1 -745085297619460576431.5231743680564435206734018036473407 3.6698903165669458366695525251925781 0.0616085895051965618229426326700084 1.0635881350364222645196370803673275 LT 1 -133.1610391508596073968302474426695993 0.9095126673816745724863137018052468 0.0232257331010803089371370644584343 1.0234997008212342477344516384322055 GT 1 -7099168444118209735429734580.2505586530325584889036454235505919 2.1486003384957672241879876404020583 0.0114750739346816450862807580335592 1.0115414206394925782918084404575001 GT 1 -118215148478043796977967107766222268.2988110021613594162297736861415632 1.2140980550822019018694908574504600 0.0196238201602212167458043372260029 1.0198189239923957865368163011222918 GT 1 -12641900778507889869440.5886988277107808172042729166538063 2.3205258793274032412178244047754528 0.0188640603936154893631315903155722 1.0190442565334813051301744313332796 GT 1 -66690575594296869840306075184674.3989495560826290639963451714227208 0.3180426428212568468640332758509455 0.0659591146486016908886213991919137 1.0682350672452032026010664906697760 GT 1 -1176564532103278554892405810659784.2925530030193094809260087667243925 0.3564792403515122569607692992826409 0.0102832278437084052610277627069218 1.0103364655157078608044060179273240 GT 1 -2931694822283336377609979445918561.9174345671587164122086530077376294 1.8593169641207267716000605348057649 0.0892355767743897540307175022504704 1.0934710065725704455215392793791415 GT 1 -50042104713881416751450697090810933603.4781885210783722495247378269059154 1.6189897543384898142681954583406893 0.0147120193949368330494692577229843 1.0148213144441760786256351723596162 GT 1 -1153197115073233445622.7417591141311147814447158429984770 1.4035606096201048957286333448688906 0.0608760156500747734290196346081185 1.0628077697789020619245767019315458 GT 1 -272253342969.1852675182357200252165649828190364 1.8473811920669115583486296001035774 0.0087879175118840382510100700942300 1.0088267589835126161643177270544541 GT 1 -146337191663209681.6667780029805109809937798116500950 0.7669328852685350550352967713039974 0.0670828668259179669737449188425171 1.0694388996847958071369742367989340 GT 1 -378735086883586667248390966800976744.0757654688120153528094385613547558 0.5971700302445580071322857323852703 0.0958177235539453880303989238826343 1.1007243056784234505246482683108288 GT 1 -174158810499867361186630941805078746506258.6818805594815303194321338229369154 0.7373825450500317508044465846661115 0.0128125880993282183765798767832493 1.0128953772284876693441100288291703 GT 1 -1.4015234520754179908754274787162809 0.5970629178489447846686460938963723 0.0036376816465065135209655004170775 1.0036443140997748692658228248805698 GT 1 -6241245524354881430.9441824589820092989615442783864159 0.9990446285258494438107995133361302 0.0445097918452853795948299716311387 1.0455307632300757072025280262268166 GT 1 -18444208519984623724222698094698560921632.7081773488785956655767438883079172 1.5078798852562121555367601757014355 0.0969127418895855524117328857710983 1.1019360988821489162586083052995611 GT 1 -790.0015589469545082456070102629970728 0.0184695559436684689146786250612538 0.0866203242118363214169183991132064 1.0906036296413089079194462074663885 GT 1 -896519427833827656.1140946620854372510586786727994553 1.2985734309685053003332318674094491 0.0741787017829641012502029794533564 1.0770740454464761293666055558542003 GT 1 -21860430.2593610246632817074022078472681130 0.2051459450947720309983534429395894 0.0431210207113023208454318914067884 1.0440783539492367854563463813614299 GT 1 -2838183557710659385271678.3610907613623293849733881416201246 0.3415729834306380937878522317581784 0.0581170298354846706369952455678428 1.0598742476177873108896907647091372 GT 1 -1297569.3581472418516190978699620145807194 0.4645560974683880309042100908932987 0.0540249635888919088414188181097900 1.0555390988502106059681138375994150 GT 1 -216742376724825694164363752893463132.9495249080937687979331503444846764 1.2474001650123705731900141652712372 0.0574409462249670088882219498608516 1.0591567050975753686906730216467951 GT 1 -1068756678151574341.6016527561425983295500407894611414 0.4168543252210764446424497689017232 0.0845285901313127644052180952832343 1.0883161443353404979092375442659558 GT 1 -26192569532015770901562109902827886.9526764486226216810112949320023687 0.0912262777548704523135019655641653 0.0685023793494003155358867473564265 1.0709616432641000575255854483185164 GT 1 -81814873988770380593847525820539655625571.5076954137380009731468976781038318 0.5287082069538732821994694112529936 0.0899803490819596951733520930020212 1.0942890852889684527595546955151893 GT 1 -12335496213418622307074743708.2548451789933081924575237430973068 0.7739730872950460459788050191109291 0.0714035996441211188539033673600944 1.0740810798243773213011944741516753 GT 1 -51620474.0622161145883897994710399294092216 0.9889802020798290890235485787168977 0.0106007690142835886398245687807005 1.0106573574419980548342467281976077 GT 1 -1422897551870.7346768233684806522140835851510062 0.0328601068784835983454269990462927 0.0797151730528747384129773896258618 1.0830720623457967014321491103030960 GT 1 -18093301234438961092734.8276104257970736977301983599234282 1.2732477808167705798940325761414948 0.0376184106488694937616418523190194 1.0383442444390505076822117795516863 GT 1 -552190698596.0870271913810248303638650657120041 0.2599001994109164669499748352194872 0.0572892417428145894775528112615343 1.0589957684703492353413837468062946 GT 1 -13509504762166786042487356420086.2422124231861816230729472638770384 3.7931220636687497850278829902876323 0.0194305155889271352078185499423216 1.0196217695526330976717570272464880 GT 1 -1065135994534468098374.6200676131476480118452983594519103 0.7431904462419360499145214154201041 0.0650551659658064270039619804182126 1.0672677524670275141739280639124216 GT 1 -169780881361332216722344798792953405.8582342096051547325996860883724648 2.8154403895740453131655869053455126 0.0930795693559008235147952229623466 1.0977005607813751120259871350885335 LT 1 -144925858397348960279.6934769102116918429310181319579303 0.0426681538033238610072146200198144 0.0333290924276290984979056222770828 1.0338971645414728685136107372693262 GT 1 -17852363709979910950057348.1846933630393333628135393257979872 1.0504109799875846844964956579872332 0.0367035064528992972283688966499408 1.0373940292676415701849772998677024 GT 1 -10704070854154122684558508099509633913224.7970012289663361675688191088563500 0.6087161571050922716189996609993447 0.0804877401518695845698800640279577 1.0839119018584792331198674510439917 GT 1 -3405417444379039790079613396135501.2631734527268695347990907422674152 0.7537213943343928985781840191247640 0.0779366121235375689964401224475693 1.0811413073804335696094850141096289 GT 1 -502849192691174211418727.3499504712993220243811062629273609 0.0240139533613859066106011076227825 0.0891382259501536723306992511335193 1.0933641231466794866697993455310025 GT 1 -6179812555489512495956591635.7495666862571311376425528215940201 0.1299944246752916006504111667834742 0.0309337654311300664032291936000353 1.0314223158991212382622409017206547 GT 1 -455233313219325565.5179771762325176232858347791073646 1.0809180753218340959686898733434861 0.0576504733199493156908349435252866 1.0593790257957969613053182920513197 GT 1 -8917.5596190607616877684279621737320770 0.5557110918606058569607822532135149 0.0413047747159435574989440043864918 1.0421820593183304198602046963769123 GT 1 -2442915577087033651318228863634935835695125.2814018842959746507799163493286006 0.4651945310622616478881047601051893 0.0437722926581386706571482829771194 1.0447592066968083876212268596071719 GT 1 -1223474304232686846272117498584879229.9919985571932579817915794529423669 0.9239605547653105785145425705938874 0.0430269978520802646060487520878981 1.0439800988488322905979350101931843 GT 1 -8076564801.9446358038850094965474458185355299 0.1096988943574832823995192582854394 0.0984005154590140909833062899848693 1.1035848879725880745542800822486616 GT 1 -193559308980520929820577998.8511726241576042484213853444548658 0.7171898309315314775173354071136515 0.0666704059132972368947181027828114 1.0689968778306524466398121207461914 GT 1 -79787601678432439460209300154.7813298276952337274740609014447542 0.8491784295895838961296142459419572 0.0730116330543690725086928636858228 1.0758142626367372459590182392597145 GT 1 -956904266.5758302657045029264360662878110450 2.2466418043823025391525793002713325 0.0825882706746260611721140414162155 1.0861989115014367841643080136556588 GT 1 -685201.9327757388258083221435114072611250 1.5246709511361345953876064551321543 0.0019822704282367627284857613808669 1.0019842377265034608319054979255002 GT 1 -58575523.5744777795298433938649200714536837 1.0389993177749774388493805778381710 0.0679465790560463982870939696181664 1.0703651473298023134729766858335765 GT 1 -30930472596952079.3529756524808995102728107040883142 0.3795044002514456599219938550634006 0.0542588324788283294503596445845267 1.0557863546390459016371272326172649 GT 1 -330106331352319.4016372207867945125005486905194584 1.0957292288544859417220200495631330 0.0420505731000770856233060692619392 1.0429602926970890711781595596321193 GT 1 -161.3633651577604968845750582334654013 1.9044708648881977562248877190662037 0.0136617076239921149012099696677175 1.0137558875073454741106561332453785 GT 1 -10780220802682293.1653371421404135267935459161486101 0.1758444534214906363930699730782958 0.0679898248423454292417187882646154 1.0704115468050103818213593661524400 GT 1 -265442992352986694584251570091748567631408.4399277768317086888231138252590506 0.5443587627809714665559214750947007 0.0716824768104296667113996413564000 1.0743814461093936676069596792542388 GT 1 -105977994167130949849026791637.7674132829297738078007319754140727 0.2570760786921068153484717127612992 0.0469305804139461688057899204795362 1.0480675347636079586462102925652437 GT 1 -951501693894830347570642807554865.1004785837379482422258073541767584 0.1459009436894868468901788836812752 0.0510882514994623108581462014409904 1.0524394789002973764744971716064172 GT 1 -202178923032636088800138083483666.8095550528867313036753800507263910 0.0385895219121684035370397957860849 0.0732751132261251643702465978196786 1.0760985354853040424770663061325111 GT 1 -157412689070285765597935156428.8425739620274196483632117459070579 2.3987237820843988785604475326300464 0.0188794269271897954555457097401753 1.0190599186382829238519998126022154 GT 1 -619119538893135935.4075932304327065640907797006607898 1.8935559926213360265983765603245050 0.0778973965795786468342301460546386 1.0810987780808478470893300654952252 GT 1 -802.3559671529018854024720527544579813 0.2502381927440531164775264544818189 0.0873134705891935053690098057009867 1.0913627986228871864086076931602665 GT 1 -206542888.5742207373257825602926175800214198 0.1999188602639590090203088718840733 0.0383792275047929717524955249132555 1.0391351134220275205062854938431009 GT 1 -7234649821770424113054851003486998281.5985801998436176817409611984197172 0.0363602381363546649403635551222816 0.0465517589739652468910807308635595 1.0476701385550202978482109087667241 GT 1 -5638539058327178116.7502659794012830312308334062990605 1.9509695914983417772719172663602590 0.0969982123446494945543142539456794 1.1020307458823376666960587045737793 GT 1 -3860123588864933143798977253692613158319346.7431712708731400525004453782056223 1.5755396979741109090765034594244365 0.0969176798012214173799796343467081 1.1019415667094173832548526274175570 GT 1 -1730351089046885779369044.8617016300829125542799011635616438 1.8142969409330175094968407942502402 0.0213031662509032358854387949081905 1.0215333537154034983202725901987696 GT 1 -7468583096520584841803600269195168793.8593890177440265603048887843513946 0.0079366385224510959496967733344454 0.0133898669736524574825346507077874 1.0134803195821429032263489402243783 GT 1 -329253.7161969239850804189847823257675360 1.1648320462910251394931186756293845 0.0370283402339420416611816863593089 1.0377312967281072066060565249802488 GT 1 -23386911714332279947851438737320338930897.9329133797114263236516621904337045 0.7568838050217019132285691217582018 0.0927938201992658139914531748821742 1.0973855340821877480094420231313432 GT 1 -3238506824487533560398712946452507.5569541206731287405767833403854087 0.0672030614207408588404994484222978 0.0120759266942169174020263583305612 1.0121494330680821220185253563857141 GT 1 -4637244250737804597596.8169385464549758132922949467413594 2.7347565406696265490677539161564550 0.0291998374302930259020038429128769 1.0296346376701796505226280322359388 GT 1 -13198.6212602872168844811165672984273596 0.5834800323763976467182383301260405 0.0125611539347092042037307954316518 1.0126407121596286180283196259483456 GT 1 -60.3496391872910646068799756971494442 0.6228599934674662152680090432453073 0.0641107903044377429101275802156456 1.0662581752201878592042001279255599 GT 1 -520009613220666043132617666671.4983588833246577758038832844897570 1.0178244300551640356879590277960756 0.0450539980007217404007891514985960 1.0461004825091217910762654581765796 GT 1 -19436952778926096.8924351437883744261357142149462859 0.5774202405357921427795317677917602 0.0428563101189599603100149953587986 1.0438017526338041953092801497804260 GT 1 -138466080232341276024106779322951.7710207159627332833240280604602930 0.4523216587627485786551505563559055 0.0332310199875509031633133058664788 1.0337957158842975830773064949723774 GT 1 -159314882.2349607120291661868667016882176237 2.5150469337723823466418191618688104 0.0289090014491820301032856129906520 1.0293350987576921500872682508435776 GT 1 -29865039588262100527885869054120.0491962738287242656972047434914264 0.9841030019164425679152937620095238 0.0077315045572293946147308199897242 1.0077615475906719177099864544822010 GT 1 -138033215915.7190404537663444686703042015119745 1.0047313623553143184413222698796694 0.0844963492921124660409139616957660 1.0882809272098887968626616513953648 GT 1 -16301684774619213713.7462774845957971309097418721123668 4.3038841520711765964492052941225658 0.0898663433460351968117026401271928 1.0941638148124659382786827048511612 LT 1 -636351.0602182928588790020552796003445756 1.2382609583517400299071559834365114 0.0755292887624445877653962383988442 1.0785339093084436440313847795105652 GT 1 -13328413068789258807431299622.5022279042648248462993288621008050 0.6095409094628508428137083558844778 0.0918333797246884730291526950065992 1.0963274147095194652170567369878782 GT 1 -917553267292049854442530.5475938386301566145013229645804733 1.7606527172907972552957783270151554 0.0066669871941463118162226205750980 1.0066893108295194535026631261372694 GT 1 -1549518139245859560827207923247.0935818810653053433195824911485412 1.1367505321935122415894756190350534 0.0387399088436254004914631886558776 1.0395102602653712463204086150184203 GT 1 -7276172760318887094195347076934.7753845944759863307789020222904332 2.7786291537464244198990861162912508 0.0536607814824318210414804614971870 1.0551541922629376169302340085155688 GT 1 -42662044043410174208060564817176050.8424371642615499629877331811776951 1.5515133886961702426728159431894134 0.0036069517566550108139454005714239 1.0036134724918494387982434879133760 GT 1 -268695988173699051308835988971257722403.0572048524065442985225385620108358 0.2169116497102611300319165493324073 0.0876374818055946906954051933477991 1.0917178698690331508716398082869196 GT 1 -2639677196258699923951106088.4555376928981424963618923040867455 0.3513367677695538111013797737679468 0.0421626334644449471076912789298981 1.0430772789555596314249729469718768 GT 1 -1098055425710.3224575481794925345426884442822286 0.2398253923025203250165261391493125 0.0623199442605896012476122749215571 1.0643464801232561300564203268344213 GT 1 -3987808267277601859501704674710074820161.9179589492399904910571708991562166 0.1780131993291183725447294146143227 0.0886773119500868085596677989559274 1.0928582314332074660487444015695958 GT 1 -2421780.9662256271303400119110203788853812 0.0318930177172959763684326567126467 0.0597249585067938959743173472717511 1.0615828491831409534438559965607861 GT 1 -46189.1848724717518857451416406806307667 0.7484153856131227303352666525506160 0.0323973289414574829019519388114859 1.0329337397513746218853535959328918 GT 1 -47475538976793728674219360540899417568.4301205680322347998640598928218799 0.3530456616115771098068262406413034 0.0809417006317768717015456780459105 1.0844057208058748692942480252393559 GT 1 -1238564619065549380826453770778743.2667258503439446475730925292075249 1.0725362051217124735267096357886112 0.0205307535677338848564161008051273 1.0207444393009945042382822793910494 GT 1 -175515922234679543478553866.9410035154279165223620106357691084 0.0392231095955681409802063951227874 0.0362515386685035841881460911667083 1.0369249506490666634634723217355923 GT 1 -3484089919516372189746092367771.1915958217036279270523284489135914 0.8612217073974336811195946072931094 0.0617343409321676943162937289085719 1.0637221514523129436262010148589524 GT 1 -416904835179471553504464338819385.0362551925560350033173471712080603 0.7682445190197273036016288263805673 0.0294025822125270473586690755737595 1.0298435024437040653504117805759408 GT 1 -236586082371270583810154575233692781053051.6354686221258969815481457022030080 1.7718453306787511883366565116820186 0.0510914056580266644618149891527685 1.0524428028804372797940311252722311 GT 1 -4420838881273492264.7936844224426977735160159690893098 0.6761261026840809842189697727900483 0.0215881331256156085863261683263090 1.0218245658250175046068255091907560 GT 1 -734684947981949259275158122529817.6261635186930056501430607180401396 0.6263603241207541866634354044656694 0.0652183147022537096147837209857375 1.0674422686170360685839659401132593 GT 1 -123971535839117407252732446905.2848066904286404737313223572945186 1.0828353713593305727431909452760088 0.0333409860998267614476107671518297 1.0339094683620114282571305114989299 GT 1 -1860385846063804300701004156.1109268546154420302054549021816376 0.4622295668179395173592864750107977 0.0942602922316708719759967859995479 1.0990033124861640562320496527684160 GT 1 -549855008122889395803967532.7169736166699574916676342482369120 0.1881469695262870476194911439610530 0.0035982789509214862346925942442739 1.0036047683283628407617577584343143 GT 1 -1847415020926332559359009622065764.4059024070337719474335543985146725 0.3781955030949515811571349802538099 0.0332825116436722351261377371347112 1.0338489788959357738070800697786096 GT 1 -33588018026.8369470758627743435908699300361408 0.1778381989856877745670609495503281 0.0760068953614525013837655555425706 1.0790506698806920588205502752471954 GT 1 -2618086645260742710855680469248245034.6791331328061081942664528613874867 0.3923529988665624747482193818121053 0.0881176400122097401667300285874139 1.0922442884693493843315433861821181 GT 1 -5206187059909692656.9272522522421381441053329886044510 0.7132856029366892976440680072065826 0.0149337343610258010186119321059067 1.0150463653125134776397040826960859 GT 1 -8354062058364467035598687548803.3888699963995664291878995782601027 1.5822666146375923836770501226578566 0.0373346933829679425235500070279611 1.0380494804324696580297850461838814 GT 1 -1011891055527364547956134.2135816369401475203028500110829836 0.2310008519250653660337679211825371 0.0289190042192773094903413925198397 1.0293453993594149244875080334416165 GT 1 -4449.0461533451392744698495916546063751 0.0315198934212741656186756642947832 0.0567819783103103106392406792996957 1.0584578229761917603624632917029290 GT 1 -1675080624836697548426813289673637365369.5471863618574479428756721228143475 1.9686463618010401254629542966823279 0.0316454916790113096562806097008732 1.0321570311461933178129397317726725 GT 1 -15860002048914608739348908992491742008.8402001862356172934974469787295116 0.5636873814960296085725134760748668 0.0133877839835423980038810924936469 1.0134782083247764227638440764675124 GT 1 -50281319878549651321789283224.9777245133507606491424836102513537 1.5102806277747944962830580985011490 0.0892640574908126711824773254808280 1.0935022782834753719132287123634550 GT 1 -938619953221600.6708051878416054955854639289932654 0.1866488842529010152449829571755934 0.0885073867587900571821972869788364 1.0926717888554338214307943024208925 GT 1 -21.5710214067948196558961273690364829 1.0596256613579939310112867756431588 0.0846286699447901588160311840383506 1.0884254708344381061524151558602953 GT 1 -2275.3617344886532800862580355974462583 1.7442341099818598849259081265887907 0.0815687567558493029196968161624640 1.0850882347836387833743999121078342 GT 1 -2285492718127065573974871149866710.3800011819133133236030158398211831 0.7694912586882195695750196471896422 0.0793922063396975190961241285927181 1.0827211817861427502408760906263776 GT 1 -14939732881546404.3702111834616488675600164408279289 0.0040183261125838226578503009941757 0.0735826196493056496359836394337548 1.0764304111663655533178998628492690 GT 1 -1395.0621002004693262966628088503723062 0.2979169939181775310913679255802216 0.0363145279633540527909936334734838 1.0369903114313818536388126300030627 GT 1 -1885447053.6419936841033055770252037451422322 0.4008601697605196319469265846738548 0.0821759454714630905006512202030531 1.0857495684647237650986940938649108 GT 1 -14092521763210184321277499782.6075763200732234736136725995071319 0.9036063513777898500466325324172933 0.0264788504454381732366503106252085 1.0268357291315414152770885789207101 GT 1 -241825771729016027355623108506756975463.0598296951059355887957789446659270 1.4359894889580632639905380419157794 0.0014443511521741791510761152635484 1.0014453952327666764367475240832779 GT 1 -47116341178500823744204082.0892934898037472139808068226379220 0.8457919113742391464480310321433629 0.0784078174882406576848777868141308 1.0816524715941092565756368844224839 GT 1 -286442092155533506282019764245931.4623145113223310756237206938036186 0.3254678942644523677145580273498039 0.0051323835219681852807510957018451 1.0051455994411136468709318049338810 GT 1 -864854.4543124315009565838771567098458728 0.6610075631827159172998225662772804 0.0641884384467644265085827478130286 1.0663411458996511388095012703843273 GT 1 -9562652539233740350865199018684969176704.4323562115482569313952114539878221 0.8171702459594739195940058799860385 0.0461457002376841206712309272379668 1.0472443448136160945522215057380235 GT 1 -9294132625091297258477.0161436703054478608446199353734889 0.1175778953256666819013383183568697 0.0986899650406207455337808233003836 1.1039059796091486483428761190896081 GT 1 -176431244041625514509662990.1998943204061805796764694958626751 0.7663545907138849069730514233180425 0.0941983696632691134750979303382448 1.0989349479756520861900086851808102 GT 1 -1045926636284363594957578019380767068925466.3614851814585244264858228443243951 0.4394854451910403809173375998056966 0.0500046014800306736331812444999147 1.0512981380624712906272486408943568 GT 1 -79351296756302147164568610608505.0340469559113438215404417870885351 3.2027837723876714922499607322398193 0.0126956319685548553927178115652680 1.0127769101554931507306625087643186 GT 1 -3235819919500511624874449485246.5126182671684568749640020880335203 0.0679786893980780076831400405945009 0.0931715869608428919133508775336595 1.0978020275366444376908343652002147 GT 1 -138712106224990178.1947714109556093632095493502441976 0.7570185195067458277448960831572499 0.0202483936861910715696637445648780 1.0204562023897734574283405775707524 GT 1 -1445279641134.4297596036200059422885356117886221 0.8633494196297733032415959602520919 0.0752305512714264440544379919741492 1.0782108171540721465816438465092617 GT 1 -314509760.7435315899417274967313017398576620 2.2266504118939581151663624253577800 0.0582176213451793815823507581967111 1.0599810516314125359898278576002799 GT 1 -300441062027009202574850.7469488575508162020049211950355139 0.1595833060301859101357488585634238 0.0098139685456133131314440059198131 1.0098624429464927466772762230299030 GT 1 -1779070630805446911161.4801365330184565339066712135707706 0.1501468456838900192370035139972370 0.0186127388115800919200266595307670 1.0187881356546988664128957230118514 GT 1 -16506191408263508222682731683.4793238462416091089491737003003364 1.6703063508461789724556287346743346 0.0069276068288063192123407198902234 1.0069517140986318241046174649809181 GT 1 -452.4834443078229690678700303018677157 0.5960477355015675615893082373507625 0.0474611327600966170304474738367345 1.0486243673125919386390743889235966 GT 1 -4369948102829669.4396729598897655820418612929047577 0.3539529840939777264716647950376308 0.0911483805509449553034690480668521 1.0955734330584617428753945998996503 GT 1 -604195.9776295901532367104941884785044696 1.4030157609023522474013297341259405 0.0768924164604982063678883762035936 1.0800094927240320253669890349639923 GT 1 -3197596791651857980137964280462.1176224610660235211069952964023360 1.1510943192183855734249780088744074 0.0725175572580943609714474938720202 1.0752814143380378519500492825593385 GT 1 -124384.8890605729218535329277000360001860 1.1960702678907414431613470367061574 0.0047188766825441016819611988802549 1.0047300457318797247256680507412361 GT 1 -168066.4865689497290067356963691219503075 0.8543721179202558693987020975646179 0.0724705192387696645506783190099680 1.0752306998183748751642844354471188 GT 1 -28854186411967837076450661262631562.6050318503495597494729713909235145 2.0614901838699962466291104177795891 0.0420728346503511857818184513069936 1.0429835317202758027414169558047391 GT 1 -3287253391152158238420204428.7655198593905102803615769955413749 0.2925758033565349804991979012578613 0.0995858915810342024805962077401697 1.1049005010152705132071511894501929 GT 1 -200080351476763743864.1620974502529185905827667779702778 1.2732569417400615858669380766104247 0.0986082689176885139483635835265021 1.1038153421842266704375800812791273 GT 1 -1034429172388574229039.2551668092599704051533498845211614 0.0378166895957247505189037530287252 0.0054581196923562948746387686396520 1.0054730696515708849566768062774478 GT 1 -6048153460289992.6638103192321684588993672809021980 0.5165684338145693954917350408588491 0.0806035468760939877412532436299882 1.0840378534335199880128986035751220 GT 1 -2945517680749277656.9290304359179252762020282929714079 2.5049134181089892395146225024362761 0.0551323522118098309048819437621456 1.0567104165476391672781576645373047 GT 1 -552967769120817571263780680552579.7988495918981442331335441999942436 1.9234511141236283964749431849608573 0.0136574808582271450479785141903802 1.0137516022061043430148663697324632 GT 1 -279322611196779.7561354670063300629702469997595781 0.6899010241237793560276555499516018 0.0901914862882914954476905948559321 1.0945211261062091409511304140701922 GT 1 -287055764.8767250199607246210441237795948642 0.2693044293808556355554427056254891 0.0810632641916827356576170038938906 1.0845379992481519926945239095006870 GT 1 -1.2936660532873424814815400921256330 0.4468767876021320887712816725029650 0.0069132658259079681920588761267924 1.0069372731581239318397443791195415 GT 1 -2157099618413489616264.5416579188951363123246328543470442 0.9455782230966733953816696889716223 0.0465589274006714762136809594024115 1.0476776570057820093735506951259042 GT 1 -246823785650184542892482197223.1686193682082842251647891981059344 2.7441562096448884478036788483950724 0.0934320192873815573325913733561473 1.0980892590864881716534483360424260 LT 1 -54062007556.2980564421873157614838979335197905 1.0488268434516368679165423971555982 0.0895714441094386130390296988394826 1.0938398497898549981360519305067401 GT 1 -2353826282476930607158.3815795722688530421723420368849906 4.6377250536406417661452216440447313 0.0902304454282151738315885993813823 1.0945639482753798037505072714259235 LT 1 -268501177221390258162937377330560081849537.0799400407717303816936485553498350 2.2744347343348427323391820915858918 0.0008116076814911484907830216147442 1.0008119372133179151947686430178924 GT 1 -759769777526.1772224507682692115193591520425239 0.2039359311288199443442939952749437 0.0912701698691098787497192896833308 1.0957074455599376367532316433410212 GT 1 -19581708747728026311.1362013856589350675957455120826674 2.6091083225072412481374995069944420 0.0534954403604179673218342035904896 1.0549794909755494386417239601622170 GT 1 -47956746641074820.8206673265626546806595018405388509 0.6369118003671439954647052515389864 0.0072250285313650635222118903802760 1.0072512554531976467866294313837291 GT 1 -2.1374836845449014300782571506053462 0.4039604757516941799411368663107169 0.0468857506328271085466384129026852 1.0480204986024473256034816500774056 GT 1 -6582.5865074314728469502016757555690528 0.4995265313910543650193629416551671 0.0680500002590495013673144824054625 1.0704761140822895234007459855976727 GT 1 -32376.5804251111356183190489400973902749 2.5417512247321280575999873342802748 0.0699346289557003834851846932513072 1.0725004038596798649029717465913354 GT 1 -2796460027978.7276866096640986216732127691105507 0.0764677353898038367383691307603078 0.0911079793014324654473810327825805 1.0955289809711301524987561382206453 GT 1 -1386552446501695403347983.7126418080994965684407675353981533 2.3982438461688654698374428160532622 0.0524077116703554314246931364667957 1.0538309448377924319193607678309589 GT 1 -41623106127449965685626170435789272761.8749880144170347584320695724869956 0.3457314691792581712610730303516614 0.0352575337430317814364652249707901 1.0358940876055568548716819534000928 GT 1 -9087387825253799386952698672.9227726542237462665877742549492780 0.8049458972785340978474524899561403 0.0243679802420531314219991204084930 1.0246697925988539477565101791239053 GT 1 -5857862170526121682814626461990388085.7405063788896802105614798742408437 0.3788443281970888222708704504880703 0.0558441158409836570351654777815566 1.0574639949449640441025574181544027 GT 1 -30526213701400870024440566404510882789287.3515374942143512897609875305043738 0.0324243706035600366475991765194758 0.0602808944248202343750948289986518 1.0621742722310242805614259411028384 GT 1 -320.0459344552292240351386366214764139 1.1068745924650278666536962147846560 0.0957256832535431326541300264289873 1.1006225168925292386634806572205108 GT 1 -197865574861568392310612751.4161379929515240219181741191660141 0.9465826689826107237485519081401037 0.0001964753696313916297573917605847 1.0001964946734453515841790051307609 GT 1 -19410147415.8491404634408343686511852941229909 1.8688318274824049301671581884490268 0.0206578319384441948284289544549777 1.0208741897914687807249597677225885 GT 1 -8324023979.7848556979969470121988410070303328 0.1597912383843304298658736286789916 0.0134352477040751993703839866587489 1.0135263172590526529929322633708381 GT 1 -472702958344025454.2385345288393110460126759626644859 0.1468680390556499829812513859179877 0.0269061023069406710797624446948600 1.0272746981706098587747931051824572 GT 1 -5495336198105517.4838465559219958703524073501250549 0.2570598567294807338119245922598951 0.0955030756619045985060346025279322 1.1003763745526842435451299113721001 GT 1 -378937515335642.4816617223769979280444859556399625 0.9019840620468912285930867065711991 0.0447292159125064743815859741698298 1.0457604351451676575130846810900710 GT 1 -8700293940864850501.0833318728325104005667445231155276 0.6543251895677924681721261174182021 0.0063387073992021942751448315279257 1.0063588823053533369397393548352316 GT 1 -363899373398.9166087478297910419155368048306674 0.7501998803227035259962180213344287 0.0850792116119418267588825087161016 1.0889177875217163102187018967173142 GT 1 -31221796761590858.4116276356617363804815491013927199 1.7188788213171771700973159922252961 0.0714961417100842611250043542169079 1.0741807427969162662710969123610053 GT 1 -8839433737424342932976000626684304720372584.8111685658029762293660162109514514 1.8836179247164257113772904173877868 0.0730668809225798885879465608904631 1.0758738637241011839247660427763020 GT 1 -2320491260399183280002594003375871329.4340730047390085496192122921313750 2.1151524133829441468557854875262728 0.0324931194964321250905464720686631 1.0330327424718930099373751674089689 GT 1 -5225838094524418893137553881270.0033783158304233896746799483193506 0.1205269714716723334906753998354187 0.0110317368964794346989094593478642 1.0110930377595331393375129982243856 GT 1 -27479631353037022738531.9294736682254419981823129477472000 1.3187370868335519614414754114275940 0.0468335363956056570457560738968386 1.0479657173345268038186573811751582 GT 1 -84552716457095127112625194.6354840838494788600615679791272913 0.0809207315771577494722394080504566 0.0518185360164763941040840383778822 1.0532093773410075920597415197226514 GT 1 -41685579859621923940376.7705553256385421151136305823967764 0.3490296181345658820392221055638546 0.0559670444930025915087653944703343 1.0575942029512928573711853440516791 GT 1 -1185428082044.8924225254833897965716318106437132 1.4696258543999193676576495038491721 0.0393877982195519619894730796933066 1.0401844875830248884750648724912167 GT 1 -10725258329422114332679019009050599494.9501048334061109011907256888229370 0.3322602642179497692037784461091413 0.0697453140072030296692653104081381 1.0722968744202860955059561260841048 GT 1 -4138881889801062297245164331.1104477288985060793480702402912611 0.3833661768122475272441590408395168 0.0477709993197016429826461932554916 1.0489497261844599993109469452593670 GT 1 -9164971412157697473955975788404020002722010.4365628146167808855000541740981133 1.4594496281497705215920902766487585 0.0397973793601064769525162551585838 1.0406109536243958872771316465190712 GT 1 -15562457355446198.0271649227141584472783881784323700 1.1654785520315644667165733015532849 0.0295892489580064579924216429868451 1.0300358424338726319778768014302306 GT 1 -40076917.7223138340444054252361100751772189 0.7870159914005924453963639816439947 0.0587928164700294858876703743811219 1.0605919898482696358842739403015011 GT 1 -2958617912129824.0253641261256668752557572106725671 0.2712863840098499804963066609403057 0.0611495407544622756315173851391375 1.0630990677859164494684839767170909 GT 1 -2673464125435986553625.1435779754481547209122828567281652 0.2275664441404898217809338052560069 0.0993812285130700267664451909414237 1.1046732280197260623400564462786539 GT 1 -2417828180132214040279415163.3110374556652137199929922278641110 1.9779316415537017981532392646608083 0.0126524790515007843677901873322200 1.0127332032952594390691426382455425 GT 1 -217.6107881714552139087352981979338207 1.5317494965509762254198041589834645 0.0463937897235866856759623450957268 1.0475044702379651913049862989040708 GT 1 -1734489290826520795117815298803555420.6734090570800842634330489394379535 0.0933536260475410082814784868196893 0.0245169547633233552498403204466652 1.0248224996577378733078034062964877 GT 1 -11146837829068122109964587316652022503915.5483828793009225901786459176184275 1.6998242348643216381571590046594394 0.0865606558925880576370428232432626 1.0905383048131571917755105381493438 GT 1 -168618812.4194754803476349437504797948296249 0.2774424941760101507254980967581050 0.0808904497699180160473686156914778 1.0843499578222242348533619451614411 GT 1 -535941277.5074688739761929704262516622201798 2.6816694754741656622740339408563380 0.0671447142035585171500353123452317 1.0719206826622569603951066452455585 GT 2 -56715633539727332534663410445257188681512.4541875890241891571165396691479496 0.9588532749072125280750769163877723 0.0698623427625737749480068087318794 1.0724226852536309707469317853588093 GT 1 -2345077363578869047379309613596712063243.8376271756155431417424580284850419 0.8547124348873538118434414982739424 0.0040804960238258584204624841298384 1.0040888439646244809132912483322919 GT 1 -175382390367766629534147.1102975328971122682582290806707408 0.2636069355242742594683378680933423 0.0437155162228790525154618663286053 1.0446998330253202301750091928436765 GT 1 -126862749565032524947447880998703384905.5823259046020186354103780276060664 1.4896828792676872266545025809338106 0.0806271336055447455872179976533490 1.0840635083421609802679623571271317 GT 1 -231711955.2648502597111310220830859626241235 0.6369254584085364810944856561116187 0.0404173820493136683300920606329278 1.0412568620294606909984956256305891 GT 1 -12685897769882673912866.6361642156812154582048437914369624 0.3080836896231356667908205137564717 0.0561576332684395442343229243485862 1.0577961111746160350059946746569948 GT 1 -242915436664.7687959908904724712784845676490631 0.9643743440043326056320357638711814 0.0328661995630035096007014238153672 1.0334184265680371182561507649637933 GT 1 -347619783232193.7232061388694287908771033627905974 0.4322185179384801653982537885092605 0.0708677453904071313081329397351749 1.0735041879654474067636836218613276 GT 1 -1426255637576153457550273368280.8239327735016648422827086005690831 2.0054211518383950776485260200135426 0.0139808057330592086513216456866925 1.0140794577668061816225133584598076 GT 1 -34152398466376718027397975972.1134807211403836678727263145939952 0.1984567987961362679513725994560819 0.0779758223608845929995071010689200 1.0811838327334440926640226921209840 GT 1 -6406495185491222963013.3219934047937794731269278444372501 0.7299806400855786183251638266620098 0.0400959922847774367892067643729110 1.0409219914830946007873814165426184 GT 1 -7127973529715326693594302266730777.8173887010870364597819325196025954 1.8203330973122648102626320780021709 0.0683266717118376435310176181341222 1.0707730318667576484689229965752300 GT 1 -416301498.2461003441116278049139397860039257 1.0839420259380360836794007014328267 0.0061819362295349472624332911817447 1.0062011235145615464089998328927289 GT 1 -291039772864625277.7856437739944421577438072282310499 2.7586827211394527954615149835083651 0.0410060736191308276023366672774088 1.0418705374025193587727749976668459 GT 1 -312361320807422377317997987998032601.2059353426357602706881982941246198 0.3070511068517169635444974665688011 0.0795586823451336856539514726666691 1.0829020308518919835372610366239375 GT 1 -397287.7418681216907530098644342511613078 0.1817927984236892280407485297730793 0.0384089910608465189666832804765037 1.0391660653497800899927317186013665 GT 1 -11945.2932424471350275002369975535443430 0.5568357024756130493781183024617176 0.0243865015420672181970020887662150 1.0246887766783475196011827243508742 GT 1 -256089550627602508930066354964276562.5647183130924431215301232476315929 0.1632269668031020807406663580087671 0.0182735887777233893934403267929825 1.0184426130881789457932019035227657 GT 1 -1634104993815385056917.0779852203299281893463827453960677 1.7845939107775852834480207737219433 0.0535415609924573963216128090848447 1.0550282194843280220527154456844572 GT 1 -84897151701945.3809297066468188068531942958805854 0.7678722358942589153284208461082081 0.0687275014532166266954587867842578 1.0712033500668796946149911586442874 GT 1 -493133201908460189.7657958505010261759342396929936139 0.1650630432662569011738816473302588 0.0247909336098966882195115336958575 1.0251034039037148803788527269229445 GT 1 -1.5628192490463149426467201261508504 1.3873436947042725025902119264307544 0.0497516125404213534085141273749449 1.0510318680786190399411784890051588 GT 1 -424046444245820051844966968.1326469787389232337812141986489874 0.3910790125415796857832004484747575 0.0436264013085227480979572717475854 1.0446066486603387259779657313936013 GT 1 -9241581043119270.7651452952604572246394255931208729 1.2802020160429717529389438506058097 0.0312687184511129573513696540681830 1.0317680207733744068607852597697391 GT 1 -5537775489847829.2881585225077310829375921373567050 0.3516898019507519183724157684151423 0.0769141338667064357761671603261017 1.0800330194093997804664186380105001 GT 1 -2331331740590091741281.7608091465608220565964195979580917 0.0207628829248542882542181328775453 0.0349136057550736476446069198889122 1.0355376539355682312415621293424897 GT 1 -218380129276418410.4892294218075313279471634917333467 0.1648757347040925202803787715878631 0.0711106504857113106627941451398534 1.0737656543511437787083506442585470 GT 1 -1059747205051631.5307352683411671566555968942086512 0.8199366881982256053951379712914123 0.0202812171762868343580368690106283 1.0204897047996907417148996265330048 GT 1 -50832731134690220.6411452944140679609044555853584941 0.6952863448209265429659154927313716 0.0903272229865174967128491490397357 1.0946703298371512844351510423756587 GT 1 -439321229834989184033833889958.3152152171579248268468948623464643 0.1157992677029180191107738091941285 0.0122125414449698396364359588650367 1.0122877272965335655045671249383261 GT 1 -43038213551.0481252604515769811180388032633772 0.2899264085386292864996082876561371 0.0838170158503934541117198245099131 1.0875391699027831267017175957426162 GT 1 -3000348006262132083773538170908871063534152.8343038891594122492822005053883603 1.0375892285146853193933920120674938 0.0473596219251757225620178372144532 1.0485178042841875580594811262225598 GT 1 -1603.8571338611975368119762262345596612 1.0016552094414292306357612800867703 0.0874110275682554112040587624146835 1.0914696942439113238554814416393224 GT 1 -62.5439850994539143185105017956393452 0.1232661974161025919766031510722550 0.0528901132119466640241970083816924 1.0543401557927911935172496258729344 GT 1 -2683967687406.7188628525254233998320856600786201 0.3936833198720023605160433646272948 0.0311394702242902450520756124615914 1.0316346095706030069874715191077547 GT 1 -56026237.8697916829331666612859588944227978 2.3884760451637938396414186987582596 0.0573907598157482184086298272220057 1.0591034616716261198832644630351495 GT 1 -2468044031567800959267215173178585408330303.8549379781456079086833528860559098 1.0134875395530175141913923773716810 0.0952501866012731851593156574701835 1.1000968227845327375983558032805752 GT 1 -5931862567.7200848596269216417609119897171775 0.7168698849845516142015349370421067 0.0650319133036039512911204312771275 1.0672428821514680182164908799601748 GT 1 -81381902454128157540000715.8276652100088062190371935031532114 1.0626045245571015499862638234695526 0.0680867351258936645094249811418896 1.0705155320670165376629415839986540 GT 1 -92557.8506459533041090522450680343540866 0.0219703204203287540821446047832950 0.0423095003097255445977220212495493 1.0432306224262111526338122213907023 GT 1 -96422238484895860792868.6969909989570517704396472941522961 0.8308246320901890929273537441014948 0.0046511592776279854867988501629594 1.0046620095763254191491191275022273 GT 1 -24509972205503133360453007845805.9093474203127155254379558708042083 0.6384542850864998177228383991141187 0.0454588411303704229348995974613415 1.0465245158768355641109426424669731 GT 1 -29803094961398667567014939235754.5974080098086806354440705178035359 0.8036851698179533113337109254937573 0.0148839196135000369191327706841289 1.0149957966454691577899168946675525 GT 1 -38414181290310033108.8280735939348213124709082212984134 0.5154446116692094632276417774136036 0.0701062872301703088204801658153392 1.0726849867104007444302970120850446 GT 1 -250741260309581.4762005670501086840321395825714627 0.0444673945538818943166474286045156 0.0793801241923372569267672229752407 1.0827080577737668914709102894491253 GT 1 -285435767229412188061061.1773016801472184245762719229021496 0.0830547695915378287780228947943627 0.0019905888095173382493130134937385 1.0019925726645518954258122233297135 GT 1 -456437667173798685308.7320286408932076675450525659317264 2.0289737768042512249168207726478202 0.0562237465921222373264435250409322 1.0578661606252882727449111867507294 GT 1 -36189610293601.3582380411153975798324089360835943 0.0132602067079050523832075150809915 0.0592644725201606174846511672008580 1.0610932336504820494951572704030321 GT 1 -626275129148850253667048831.7704351059039223977780476759176150 0.7948688044819079238500024533052590 0.0223062084466671195843937995142669 1.0225587545435187493952595725662154 GT 1 -416590527512870030675675.5173977989190931960955054600679314 0.6327281825029756987539731045785940 0.0346259314272173580244274315886111 1.0352396169277904976853312116046518 GT 1 -70469259083067388567241147859.7361596789736211298829682990775139 0.1488961676041697738335785085921395 0.0445386086477313956752361813200520 1.0455609228662021637868527815793263 GT 1 -1071912240960153696443835527771926017575321.1872828221029848402798445578111065 2.4177160272780738637273330353380379 0.0786500672706553935776105001529310 1.0819153662144085735691914433114308 GT 1 -140828441115966045186.6197790896025288885902751436231561 1.0984554945044948416115161097510509 0.0012207103288277337470247248450406 1.0012214560025773901743277942502776 GT 1 -539462749830854785886321556.9076881480653101838734830907034309 2.2493473076813793898400268951764312 0.0969845432697697602656976917997676 1.1020156086239061774582656784859305 GT 1 -3394503647688048445092.8408722024881893125894167038027759 0.8602805335856270254601469446279110 0.0281318239975430907584947798715127 1.0285351051157604478685770698343838 GT 1 -304234830468095401436698622751015.8393001863610308906212625601405192 0.8461237507091290186868215160430440 0.0158548234322815040920424964220122 1.0159818556501048434109522607107507 GT 1 -1726706738591.4756134406495344963781285854839569 2.7847441868913696163012653749142673 0.0998913994571721853422144810605325 1.1052398556677270105985712257320703 LT 1 -5658577614.7497311816937243566273838398088180 0.4458844356135692637287958105852544 0.0862374344801465619025841192823622 1.0901845164177862637521177507942087 GT 1 -872.6364014918445152147102615691296753 1.6206555366596591499036066421831246 0.0894139520621139355388666238861877 1.0936668780329165958767131111995558 GT 1 -133.5584077663817034570607185109589512 0.4138099575221920148216432297380188 0.0692654380205004457490454828740882 1.0717811530125869988065106086202429 GT 1 -1089950072021003587.9659205778048282969434470616955915 0.2751052791552407656224580269731232 0.0061878779684529625345256968943165 1.0062071022312870981187359111973480 GT 1 -162699661198768476890.6061132440250625519602799663326884 0.3427702688974609854064906806600985 0.0557929629436036608370562369702352 1.0574098179678397694221576653494438 GT 1 -57006131014186333404832808.6092243960300901811503807752819428 0.7397788132860930814688696359995025 0.0358516363350984822978361906957020 1.0365100919969275671103166957264068 GT 1 -178.0048828513980732940851093422716424 0.5627617358762446168906492792782657 0.0478125952974247942364814116737875 1.0489934098847391966729470790599591 GT 1 -2076982649297421984.4417905394370555202320890082695545 4.7133191252266027836102979092356998 0.0306173554049522940566301308229026 1.0310958589753520252180125289653799 LT 1 -1027540862039418314201508805206884456.8941460160870358716303572842980028 0.2741406300030850277504806564196641 0.0572643548199840087060697017359827 1.0589693694989579968520882045867292 GT 1 -63598059.8605201450362333380200772091202800 1.9238670777934098085951294293147225 0.0824639625088376144820474085025873 1.0860634219052459621531150407735739 GT 1 -243015101911210078541044497944450.0558379070092087281036238117899870 1.3127641850563624854773540891667702 0.0281626995393882632440537473936296 1.0285668748897531138546789838341942 GT 1 -75805780880376847592583466.8159161881105668878340083895646529 1.2842776576163971909912901775852831 0.0773645094597553513643463839966562 1.0805210406379120180176882282687495 GT 1 -52408533298457346640347042706.6550393930661382615306325814327993 1.8024796672810881014942472983196333 0.0369158359386943967584750885006149 1.0376144732238413393213280859244675 GT 1 -4.3289917376407078502766533784555272 1.7501388499227695851135288728760218 0.0742016601678062765055760166279095 1.0770988436116841194245138205763003 GT 1 -10.3813207241492370461608274691007568 1.1610467361291027740047534262397778 0.0814508260722933543204167234398991 1.0849598385496718223812565242532882 GT 1 -4321191542669270373286237607077647462233761.4113333856821334948427192148491037 0.3680903965907099604149050474786298 0.0940660269910618129540976112783740 1.0987888530684279875442234806625204 GT 1 -14016483484534336.8096329888526305292446561484878021 0.1241652182681205096968103741111316 0.0534599860662515568293180562120335 1.0549420335435739918367556753117594 GT 1 -600743654391400553356597333659016.0340720939975114802987330877015571 0.2912828711902290839186754119117384 0.0182354394039448726872484951827154 1.0184037543673283088820051122341213 GT 1 -119905033542088652372323024246141330839.8471160155961134756134017635841798 0.8646993766701168738147507428530876 0.0726488226572086254823687151479532 1.0754229530700427306713546894553065 GT 1 -67704259434655797812.9574059930129928099969576327138957 0.6558261984360826301780383800419171 0.0377742264174569258323074018305412 1.0385061639785147578899985641822966 GT 1 -174304865835154.3197467086152403820871373802748011 0.7697833533319456694006608686950351 0.0062214410413378458215896891988699 1.0062408748517859550053639058123808 GT 1 -3194.3089275785402313113909855059925061 3.4447623429667710159780933508717657 0.0738647132692580937964280716312374 1.0767349570258656432577211428682022 LT 1 -418971490870.8899859765383132503521667092108737 0.6006499016335783266417136456711431 0.0846256876677584781859022229532359 1.0884222128427623274027837265158879 GT 1 -58456107.8383059319835088979278296994335718 2.9165830624031013892685718479978619 0.0616417010235748746867055268487585 1.0636234210612071865223830335878027 LT 1 -2545.5263991595763756303475925162399803 1.3991736026416911432341195468241339 0.0434399631268063417217510186968100 1.0444117248231072403645980076587623 GT 1 -11057920703539447858148739.4005941588528658755184143395695089 0.3216510449595683455053558417709662 0.0532802009703792508940431849828931 1.0547521123344703056154909010333000 GT 1 -1118529114003532.3803234427955552922753484918379373 0.0903340396413872257317528000246880 0.0794008661280995812551183049060647 1.0827305884294402886197818307486646 GT 1 -3787319891483725106587491005930177208392971.9213094244577271138365983515292195 0.6403018457357130682428327631752703 0.0564258712809954186128117429120935 1.0580803494601331743899145021875023 GT 1 -286475.6435855390977551019011628464184709 0.7410592575787147017175414981156740 0.0545779183021478277812564468558610 1.0561238039062936447311079080890513 GT 1 -860873305549355966204701186555.6979522636487514763009007293990341 0.5831962249487989522615450378616357 0.0788379191388757778083225005889965 1.0821192746475538276615021837534981 GT 1 -39187579133.9105012333307821406332762740470307 0.4300535926903182140783726861755094 0.0917507697585242598135423088558272 1.0962364553995160134194122115691589 GT 1 -772418521026783131.5393657906972691491398125961364213 0.7622776356599022024961908589786352 0.0597947362884273388045713123681560 1.0616570619057866920747128058093611 GT 1 -388.7562411525670552889302937289580086 0.2837352356116248067026363629592629 0.0803421113794000737766587155496522 1.0837535382911985095929572299199664 GT 1 -8137954468118247541189049.0693810590329976765449823702585377 0.3008498284264796522675723846731858 0.0445622409277475299814795602583070 1.0455856570652959139997519384491990 GT 1 -8262854000088.7492701423756055702459344988902818 0.6773078876973700942153227088378590 0.0654747089749008309943658070578686 1.0677165887554643953950909209870714 GT 1 -8636994033729868223976122527.8532780748882529322374407359184876 0.7439094264479893293930888580008064 0.0065101284578871387235112939005916 1.0065314117658225377202177732205356 GT 1 -1608505322365951923424936664281689.7849438068316503576509743423099006 0.4600757365195073915481116214281279 0.0927788483069330169300445175793955 1.0973690309221291849073947393852802 GT 1 -856914030864.9615368051037813611767218703274952 1.1041875138727119137725297608289062 0.0607499626251821418292854544742525 1.0626735547358659454215994005195585 GT 1 -14200.0913717113052063227105178680224464 0.7322845608295087236904324636806056 0.0688229931828586702140505052090765 1.0713058943017174187161844474926883 GT 1 -52.1635208849251208744417439153534587 0.2558979852603528991203933130555533 0.0684895313880526883328664887955258 1.0709478505581833412746256808687588 GT 1 -75813864679.6056487124589237360481391114647498 2.1858808140392434487025219310043385 0.0783807486791958004513203176505195 1.0816231002387129639110983237104250 GT 1 -267021.7971002172838528556570570527587365 0.0139844626152157670306422343970793 0.0266226558674645865230792649997155 1.0269834568356351175758923323192386 GT 1 -349.6487341135626144989531736116320430 0.1330694689816042499413512526222703 0.0943740529632858784139495383942588 1.0991289201805164371932387477096431 GT 1 -162524389.2909104626143684928353825829554531 1.1968685516652307057014167308180612 0.0903177746065737011278584450819982 1.0946599433211262306910715487349702 GT 1 -618475.2739143358686897246210869706156342 0.4189671606239169510680235672212854 0.0469968789732565102192655365954371 1.0481371003839339967826152015756146 GT 1 -22948804639680026292343524.5711345002018455519435158320708150 1.3384648031095103748564214474619702 0.0397406543870845478089345227601387 1.0405518793245292703649546658510182 GT 1 -555.0264022942544485911278905906410141 0.1943389718448144181987128700171913 0.0764142162732145966711377947152011 1.0794915938606381056334592716410625 GT 1 -6686060458249269417854739.9144215164217664288559170519091605 0.5377441822863150062271504399079947 0.0475334505540660419864386494246958 1.0487002912898895743824567426429777 GT 1 -3232728593.2573620541763895870085885229647290 1.4283269343660899210484397056020854 0.0480035135184460736909155991293692 1.0491939348682189121066951562399348 GT 1 -517939004688756571916598240696444785983047.9658483568139473055724105821842675 0.8277860812759723142439102044114588 0.0119995640795752886744258870581087 1.0120721400193618039204292521531136 GT 1 -2601.1961981166939925968367221432307358 0.1107340217345434220616105170948758 0.0677031364684935142593864548524962 1.0701039919117849463305554076672887 GT 1 -530664464063953251807890.7568554978483636321358585017572199 0.2724247485175045260205493930597827 0.0463984374504648028156401218554671 1.0475093440927641781072205156440936 GT 1 -23917479777017580660807642736162438091311.9522812482991946620914217679988967 0.3950791158624958535191870335675603 0.0866381984611314328873382304449082 1.0906231991857874580955849863591787 GT 1 -9.8338659770697703489727862644555848 0.6739500420823128263490017751143719 0.0209688981685540236414758427148506 1.0211918679762234945227026686212061 GT 1 -627344998479534396264291766.4418465965228677262835252608480318 0.3500891849606084841928821967891021 0.0559134518136585009287305838311917 1.0575374346384253182462417006297555 GT 1 -20389502191634314.4765935615084503127584606812867565 0.2790958540767013102066381327218896 0.0158366406233842732396597061750221 1.0159633800823107683657867610254166 GT 1 -5948122532457368280890262.2818371463649258579347003053889038 1.0585286561475088322745220949425757 0.0673936646475210067837107375822351 1.0697721014158080701469472538939840 GT 1 -2227987477008492226.3592359772977428432002118666619129 0.5147303408674184317448137110424759 0.0162051066175999067397125702419100 1.0163378453414235678760045372493995 GT 1 -58240.5502418827841462907515251610400162 0.1310612842215371286882042836445728 0.0954596572117986526849545155786949 1.1003283728327603039900024944248538 GT 1 -24920946645869682846926058244965398211544129.5322017692817774542319432194398823 0.0902068698956024785685698257649324 0.0501890729886056317497608586777456 1.0514923383940267951232802629749516 GT 1 -107102509306856548214777462958846.4336473682876918275226508761607629 0.1276249481625275421384841765970533 0.0916167005315130962311576763487576 1.0960888534766593584633355537316495 GT 1 -5589885448960741923755.6949604588852501291775276206533646 0.2131730359887744588028746053348870 0.0072872976830372361149658695514436 1.0073139797425646653987633438723968 GT 1 -1241.1177244121926199734209742488614446 0.8378732830834906903110014491915056 0.0468125796503267121443617928572459 1.0479437311278144156411999439720500 GT 1 -1209787280632526425891572796953725956.8551866006105982163614523583724739 0.0450515475651684398617772261109683 0.0772214176309088046232623618138227 1.0803659623481840865867922264597134 GT 1 -13543189993.3084541029629608452328267499897341 0.4349453105755079251081401035508903 0.0539774584383190608446698773365833 1.0554888819248446325972724449766515 GT 1 -569789938432808307126119.1909070858195124019271807000916452 0.2987125146360629103947072992265859 0.0621107479817570086327294889266724 1.0641234051573406256157539734788342 GT 1 -2061514125431892334576790820150388695428106.0374161050161787140512217505652753 0.4537273268532452950719730568990945 0.0042765018612716656525334750759229 1.0042856722494832287258545910893069 GT 1 -16646.1436758708813794748666940764471746 1.2558760406465893791129280020071193 0.0337526836235922127140409077613252 1.0343354564438366809268246879931596 GT 1 -4767898874214424325422237185945.2137870359919059817377723392328403 2.9046977463312697949285425117670184 0.0451154160368007082134665487260808 1.0461648002936955346467925744104519 GT 1 -26070941196588023981390563075.4864190853137158696448764362813846 0.1936593962304690755345618479367355 0.0990907692955341246054521388530194 1.1043507692850303983375300293276149 GT 1 -244126018214619.0201741723118130808379385029641214 0.1325637710922184168758767745348201 0.0552046872113685479607874598619163 1.0567869751732810306135997647993156 GT 1 -119805074.8495759131519529899276775700514195 0.2458876116754626770644120354697189 0.0153018360133012019882121607658434 1.0154201172708939828820457932648442 GT 1 -275871525188459052387980067406180940148614.3586511666069626508508661406648630 0.1277323164139152150096601798168406 0.0435387293780965941608416065863851 1.0445149816462184582721640190279468 GT 1 -32244566281501046938196555838801331.7459304940599972110225236688944456 0.6078910021152007811587181215719774 0.0348800398528508457735656226986416 1.0355028743358121657230915891134957 GT 1 -29914.4381280301412364360432581934059019 1.6576811902059563127795158912027144 0.0610980587568054691752362142323936 1.0630442341479391460332354461793877 GT 1 -20659721901593199642288058269.3132876838247027371739389454283021 0.3116638425289573637220933977346005 0.0208663449642756716710993167234658 1.0210871237722309897346364847260691 GT 1 -2325514786286607085437223103171.5867690338366366382729013451940360 0.8036788862692274656264239673189784 0.0771568044581470918195096270333402 1.0802959445649508984148504883492634 GT 1 -6382743.9256998387229869807697542604691386 1.1096339884420846979344769022277134 0.0722352335474154753683887639420537 1.0749770627546380679408349837623960 GT 1 -164119371879105939319010584075294220.3764996996269618074514849246202516 0.2866020563109644833267291866282097 0.0647267923998512077545009685583148 1.0669165917338729152732250846918205 GT 1 -86200783909935207802.3190169033343800439085533334536153 0.8555634262765357629929201163641396 0.0820793002438892249796824955516706 1.0856442758008743023568785311080378 GT 1 -524717180275.8417802292745169618868441702641484 0.1072122056199436652014819143019316 0.0736361054904303256986345989689341 1.0764881468979009095166662234337525 GT 1 -4317494608444609373838164907.8867271970322110993974947609518988 0.1287333646111838024411201453276559 0.0019164767059686075627449753036465 1.0019183154971601123924034242206005 GT 1 -1652804666617741.0740398176372928511760362229557451 1.1564515855386554375220285624164879 0.0701049602810938969194994085660897 1.0726835597213681067967905911315681 GT 1 -1238923517215809410359927.5787617823837854615672651289016485 2.1419997903592170966841843136320372 0.0369218075272244971257651142473753 1.0376206737276668472822124268066714 GT 1 -972401403566052429909400404456734.3597980675765899319984204112061364 0.9743905540907248964357167634223509 0.0802265039833235000574004932713415 1.0836278392331153078983367496334572 GT 1 -114283194811301535224921824860260429577438.9164065308604573072370078134922230 0.2214609464033799332874640449487239 0.0659434138599418083058504865103003 1.0682182578560788577756756214652057 GT 1 -868795421.9311561113972536407832762334738356 1.5970730863259640265341899082186245 0.0841593034936808362356192435033449 1.0879128415434768188126980501395784 GT 1 -621110447324599992460310735523812736948.3981998842333812365220556091524428 1.5204109670540396345477484932528879 0.0089856960040208867621760472011771 1.0090263108552278967053966723234011 GT 1 -4.2247664235177907988965387212566375 3.6589484323310832984450128302075517 0.0654044902342291296527726497617183 1.0676414531722800188164996664252318 LT 1 -164013881728116258264.6127746423071475912067394908334478 0.0136725209846163138679116045018399 0.0959470436446805022782709427689989 1.1008673402666337978932206246322346 GT 1 -448258978638702445428240710.4372928564554567214476059535771084 3.9011136217171602594443342683046061 0.0074152767591772751538366587982609 1.0074429065972210714053556093972688 GT 1 -10770162391799610177.3549388161960292676850512390673626 0.6831959758287798053348930914240514 0.0358127812393990257961942889925678 1.0364697928954030885103732285234140 GT 1 -527868475199358439576873735044023.7150303650583083041991933544618958 0.2582868601309728734384850195760867 0.0467866134135016478214027427128823 1.0479164900180412812989102217469800 GT 1 -26987911923888042981.4832866714501143982412933737621038 1.0499658866291782395624347112782022 0.0960990524537930116374701683160883 1.1010354958917774090784540509347411 GT 1 -8863223493862657034819878979945993.9064492310704535061395816084292619 0.8273133770169496266723872004444883 0.0389739852071893523164545571606933 1.0397537998342173956282357403980946 GT 1 -1329022181926363510342937550388693433053.0727802969839059153465425591017814 0.4232327540682114539963780667205150 0.0317453694894597594175313415903111 1.0322601782485531307678333005820460 GT 1 -656432288584232558777899857345910684.8046731890490863399749655083255317 0.9459552903546824680664621565437507 0.0139698776419925225117973387046847 1.0140683747873140654573651769334667 GT 1 -39737781109130501103050821535398555.8448011730815079411689360644920670 0.5279815909822781260552010264014135 0.0775526813842447901091036765828554 1.0807250118897258170391380067911285 GT 1 -274799401009608712494255949494.1731486961291293895448491518960440 2.3486618031114228897531227111629372 0.0318908867271842685110362910180448 1.0324104777348615516048456721995936 GT 1 -2621.5258324587613520178779010097656986 4.9479211300669603826966731205433602 0.0693595092493538119775320866131101 1.0718822301477892560301058813477565 LT 1 -80831894957218986034674030309381870.0601904643199138895341841970057193 2.0430858521779170157157540041975249 0.0184184157312952080500261806347075 1.0185901466938761960335519022567273 GT 1 -9750990198237.4153712971186967179982340386933964 0.9532977872625166929717860962433227 0.0256760104204598117151585365104102 1.0260113924794006382831675994448331 GT 1 -202351434672353.1562238609643614473933153568399084 0.3684229679337368266925717391551106 0.0988704699699135748097461672575553 1.1041062691871210570139724061076508 GT 1 -13.3201953621120021878343527780202840 1.2399045333837261380091183675103823 0.0200548060662229820413162182959299 1.0202586334387262016258126288481886 GT 1 -11.3034702595457192485054234784338403 2.0971589200487159862304191125911834 0.0445769791692758348069357276618601 1.0456010828270087535999474765041202 GT 1 -5915420675.3977134970219326673542871501200428 1.8668437479087150418400257182261080 0.0827151539361330324563137208946993 1.0863372267557532502044052374631359 GT 1 -54949826.9298334619236210093264639660701969 1.5927874707235457073269042133952905 0.0293717024677511079016879563841427 1.0298116877561745853773576846366029 GT 1 -600457493153024499025122463.9436603098366226097169191511035545 1.6158457103257372681933833959072240 0.0330082538354097185994331590363214 1.0335653190724158954883394580339217 GT 1 -1263528735.3394348109005479164271406887553569 1.4839245140842111802564805526861471 0.0066777390139302944827367978111980 1.0067001348712401549220883962569908 GT 1 -9959811463528.1340249601400962759099602295879191 0.2285774864694868980502145339346180 0.0723472528755119965274069303734742 1.0750978111332783701813305045744649 GT 1 -1406164379129529938051.6231782086103307910834927713813837 1.9701188374492894830906811568023742 0.0130476931933822122308463526765745 1.0131335620873784523372909739216410 GT 1 -16.5050165783857231290988847725831541 0.4956411265788678812193366943544689 0.0405350354362024837579256111886699 1.0413794784649344427617278967646879 GT 1 -1281419292354862104998.7833351130985894612719245825730500 1.4816753436391295931168305411904345 0.0913398609385369356322995879604380 1.0957841391376976012050845443552971 GT 1 -178833840513763454047932906.6881430881735805812766703066073053 0.0026322978104195787616138199378449 0.0686896665518337491330460713275345 1.0711627237916470836353328578141411 GT 1 -240499871230951533317426296320263376060.7305383104162945796954183160272134 1.1620302223938799144353485340379781 0.0989778819746659329276076189796256 1.1042254733672969590624074518325810 GT 1 -363713692237758594290372023156.5012441984216648086242714124299272 2.0891725570680325973683376153318432 0.0167559648655779820768072828358319 1.0168979341677222526555288612942781 GT 1 -1.6072132257647091254911847005469178 0.2449616346322014109799095605675834 0.0906387990675404895624119887724880 1.0950129029697564760271407289235497 GT 1 -69236201574026.0293608472053469109588460323254448 0.3571786878136383957451704381337796 0.0720643083873613675944214562125233 1.0747928464283504859983397311782088 GT 1 -2270667216059867.2187234670836574652559248629766459 0.1777258127717407001103307323148921 0.0394412781156872171308655483272531 1.0402401618548872302836081861776588 GT 1 -63642691593706401969589897.2606840848756330588512436061534410 0.2856135630774443233672150747508048 0.0357147178420235110122101693362450 1.0363680923034440873737724569436935 GT 1 -4846414127912238296594213516785968587544.5391216528212282921533671551588886 1.0935908194871768011392304816876918 0.0024072338864966840479779808121021 1.0024101359321927887679713687805039 GT 1 -1460265712475.1479893448635129409526946558413491 0.6317614582553059761916142864829828 0.0034834404845382331153345634959474 1.0034895217900272826649550455943412 GT 1 -110362827013049484143408852857274.2092692770161369447790824348407576 1.1323947154255021358859759183862749 0.0918931621818657712555808327518032 1.0963932445072654957257542632008834 GT 1 -2775874744651713403800620.2494447109828202327884196885042553 2.1689980122565157231059426831043276 0.0535508447658087634826147013429603 1.0550380284928392489500913569870371 GT 1 -254906722529732068574955.4294718125030396901500109402960709 0.0766385003219885882071350367098703 0.0968625071329228095724417891922640 1.1018804748446103882778313560997408 GT 1 -3847886.0265364013450774407420923031957807 2.7514880331797452375510643607079536 0.0646275509291147752392021490813820 1.0690423083952099022902187476391334 LT 2 -1476587176541427786803025070825324775410237.9101320266259789915243774709409235 0.3861168334887301365648349006456030 0.0587862491326699497106616115878772 1.0605850123043637448219828574743599 GT 1 -48481313854007.9325993345302856052711426943657464 0.7810253242045044346859006309537529 0.0673055754961966451023750236291074 1.0696776510694771816675824339134757 GT 1 -7448269684754141437093126595007.6587394867771262001951287365200246 0.4428639273976840408003841625443397 0.0648010735626534502976165887431078 1.0669960167747378146020143304958683 GT 1 -12130778517112222985358109854515937775.1834796750634666147997503804955805 1.4428250529062297872075537573653948 0.0311349775036962345369303490581903 1.0316299724633627677487775321893773 GT 1 -238182424347022328406462297803938755601.0454503769313289713772661714292951 0.2554721786262502243365854642211650 0.0645639938583460634868160732855977 1.0667425416562657270151077823675525 GT 1 -2515.9113987082652486300579964103640023 0.1463085401829642142831905747947423 0.0323008516012934496209868494574200 1.0328340371217651375470760018437442 GT 1 -7311576868918430666484939446.5462631811714338410021643404338089 0.1340970830817519475114637160961054 0.0046405863504357005678747272642117 1.0046513872993853759517647647494697 GT 1 -1.3671063754753706200980617804860859 3.7877773660173021473288075891334999 0.0477094607485507557598530212138876 1.0488851024619073715084625733323993 LT 1 -13667805871015421485.6342753997955219899684110438887598 0.1892886593183270199724749196689834 0.0393754108480447644728344317485470 1.0401715923776386149746651838377571 GT 1 -37597302336775830.1002773268002860273483556919457184 1.1172546586149404069972443880154523 0.0987061852411624167445379665167350 1.1039239760208889700164232166675161 GT 1 -27669445016650765830197585.4756924873396882383078789279000854 0.6094598017919969807343924293633096 0.0712228780913248025051049614764616 1.0738864807830963998928225621348347 GT 1 -9110865510106.7854510062139574973495063573148012 0.6135059097199717782340534854845209 0.0050519940212516339951021000732131 1.0050647984866402535994429137155220 GT 1 -15.4382410814357221072092516927032150 0.2491467474030287457191550679197000 0.0875743638339056820232502674200668 1.0916486914588562169857380909549203 GT 1 -1636732516384557660608246456771794287437.6045446244611206588930821462785741 0.0277996541506575044542928556125969 0.0560608342395059229181717565900229 1.0576935579635030151633764743425807 GT 1 -1830753795603325596432602.3258472678156289322418347041801130 0.6503428927623003642661287959665263 0.0820466101631535625849569292987673 1.0856086632488758532101105271406685 GT 1 -14627701389744678758161787223266563724.0793908639399678167289777688207705 0.3043174491739920327233385468414429 0.0366208127790786364067721137267920 1.0373081884853066051850300225823639 GT 1 -15171044091056356293747209731117955256.7048018779230365135821405441416409 0.1168911100290937315567123281405488 0.0897128228743700098304873401684145 1.0939951499969678776311814016798631 GT 1 -76623526997864998159112375721350.0385519184273628562001943375200601 0.6103408586515217745132845080325757 0.0867530083685524501628304141998473 1.0907489074469120974326784917961388 GT 1 -59058642853.3496487445341778193953275141852654 1.5319785390300471967285924789148627 0.0934995122016058205909488136694884 1.0981637106755237123999673872155946 GT 1 -32115844100979177774059088820.2807590093128441989271401225297736 0.2260337631686006745826455294880717 0.0498437412746095707816031658948443 1.0511288250445424150585475445754524 GT 1 -42309118150380332643778505.2369556886678465159933561654165306 2.7025577729834410285149837509302188 0.0580290427301375884268593635116097 1.0597808358047696301570874227093288 GT 1 -436745646378716693437436206281374579.2253755722102051350504933576988980 0.9703789759023339802095134623898369 0.0939105378400150633788329501628262 1.0986172337080924054010453489259723 GT 1 -2027930286858221465052624300736805.2106523667531797895621296496391803 1.4891368943443721290227940044656951 0.0919230084250144979119690750085319 1.0964261114920589751107412646895778 GT 1 -202028.9425011302053200205552747437692929 1.5435659364950904950905832448311335 0.0941185205181658920582288012998561 1.0988467988454624006458853576235088 GT 1 -146.4327023010001483321599558593619295 0.6905623822193306834418611118365091 0.0565863275217540252414658151703000 1.0582504154680252583532258221225771 GT 1 -74820.4381618763413448720248735934449230 0.2077026148070225072933536319197192 0.0683686860958256447941201505067011 1.0708181285010317821606313701577942 GT 1 -14519534284180664162205889569094236.6103398704186081418629211703977758 0.2484363034225832068710171272865543 0.0783273892647858293078711325898558 1.0815652044539777582115214745570194 GT 1 -1030613512313682168759.6255635349284831793829643075633558 0.3112412540708081562696167276540508 0.0356068789425740109243338066461012 1.0362562655734075035760246945153107 GT 1 -148651749142009272282.8518594309883963593403786299688976 1.3381867674061667329931760832193340 0.0738991347380789035509189967013658 1.0767721244991251854335329358186306 GT 1 -11544126215271810439349.7524831339861702789245025583874107 0.3456015110804267545118361576480381 0.0695891796435825296063516967258324 1.0721290480555212448684287421214694 GT 1 -3009474199.5115711558776055561475859971179000 1.3257802760687758611850671456576512 0.0605692151541038756937876525372923 1.0624811351726297621403062104245547 GT 1 -70008333455719197.5772846384122187936321818244984952 0.2150972001887112113313003496359214 0.0238053779480095173148453582881483 1.0240933046079910849191146434289471 GT 1 -47890666189053.9855128826425953994483992861642940 0.6658509566381537658313671931718656 0.0279302308702466711783955361970038 1.0283276981576073873414239994192404 GT 1 -333491746546287226.1024464704499521898760274609522819 1.9171239526462280108660890606744836 0.0930682703693086078223543566981644 1.0976881022284237512114327501868456 GT 1 -303631943707183682299175454965.6561646260997468185925359988795777 0.5900860181580625670957769003474144 0.0370838926936538474807003712738090 1.0377889869639319659823384679318169 GT 1 -3662730953174388964.9772505849359944697688074413130330 0.0215822099597380502442973881420519 0.0409963875745381443006245285545600 1.0418604372387842230438068958497944 GT 1 -10982920839261425292751087027111975704458.5225430617824333881720096678423079 1.6881850819312183895393139342364256 0.0974272789400256714520309466057300 1.1025060146695093890502573039854563 GT 1 -102993344245771.6411827580307947990315721739193798 1.5350537109597142579969851561463777 0.0249401581314490052557822513493022 1.0252564335922994854104578465129245 GT 1 -67115006224153044579470148780917348235884.7024923108257516840814784575277875 0.9877366487154798987767093983034871 0.0468001166836891867829310312994385 1.0479306561701562979879613294690168 GT 1 -401274292083416666.4011440874039212708965212299708321 2.6346928729420295693519198758392458 0.0804941173111236781542427207287216 1.0874400228772202055554146046868434 LT 2 -512736007542820657070764394722262093.0159785003183328934195047166653779 0.2299031910860013595670355807885182 0.0634083805373885762146579268576336 1.0655079301025254931690359487584956 GT 1 -94301244.5034254214609814922352983558738743 1.4725087336268038051248438480923855 0.0068332752768994662206553085047702 1.0068567290073324630869191708241627 GT 1 -16491426206530630877887800541646.9603178928242828931473703691586020 0.2643171812689893850930269350393841 0.0519302979378496933943336779328153 1.0533272540479585715410724450955376 GT 1 -7800822.6135055568781980673041413583189899 0.1706335740459668193678870761583016 0.0142307759418404362759120384461967 1.0143330044534559497580751066938567 GT 1 -2379963246.0081206721233391885171491281507856 0.1006430026675108046612813024619822 0.0001684959029682738976231467436197 1.0001685100999977157026873103271524 GT 1 -95717370209064674287857.2984431188470182342255197537597749 1.8066327760296040869752316742503823 0.0297645012977129857442278528109169 1.0302164547842234772850299898904784 GT 1 -225171960539.5772148201870040639386239063762475 1.1838469944785570991436319026577165 0.0753296959796058298171400545667685 1.0783180330913601752189295292524061 GT 1 -13520006959605940920911071858426852251.3047862357493955866883133368637701 0.3569154643783993884563079203352100 0.0309234787550583003812364260922217 1.0314117009162558060265472541641120 GT 1 -2503673813748.7496784886445747680578035450558282 1.7562494837534414028396558386713860 0.0219757950591058513653884036837792 1.0222208598252646395989214845966320 GT 1 -348474794656751497974582489421260863857140.7421538290062556122146882380796633 1.5015834754744215628394483577878325 0.0034023759520613843675354569289551 1.0034081771955328347675309327611266 GT 1 -358.4677977927340611585382318373079951 1.2613070826272042912010776064005909 0.0874289429462071310061178196875591 1.0914893258133768737181291653671487 GT 1 -97.0353969056009237981752004823218509 1.1608634241132462260971293401483570 0.0970304282109962326665138964771214 1.1020664229335618535312832709191088 GT 1 -4382755557950468736087.9683579315684364956368680467584187 0.0500542479093206279654072915208178 0.0502871069024491284661485508314974 1.0515955578566023304609745558155879 GT 1 -27411914224474227195321655784827.2877540613990667497183007251662577 1.5686329334445716776482159843034255 0.0887794480905891889149465928586527 1.0929703123302418546077134907136097 GT 1 -582773597869591462065537645428100508193677.2141464177967811756822019634147917 0.1637148871558392019870946610975425 0.0091553350837908547609669484019165 1.0091975027340096411940839472149362 GT 1 -196824967615942275.8369431030087907325118516463299407 5.0869795465036977966019259102013332 0.0247553626639635167752238855350959 1.0250669293687190889445588348273543 LT 1 -301250206538143380056.8215994189987054969564384447643411 0.5005262470420997778744978722425145 0.0999606770282310707987115060140458 1.1053168244214479042792155534677516 GT 1 -69001184.9275205053389173833535743498648845 2.0202768961636503443936266634280624 0.0158494997427444591725064905990099 1.0159764462092370511705340527825784 GT 1 -77608472678693.5897943702451536935217553782262971 0.3943035326884967836149458953700015 0.0224851904783294186717450706109017 1.0227418368315813483964960034554983 GT 1 -4648639759560053167655530730.3559872950036629133499508196607450 1.5816767897966919679838430190617059 0.0577940941418381817358626255741612 1.0595314445781656753584470149819083 GT 1 -74509718778.2698765661376422039321104041912198 3.1337891622012162225463873685294714 0.0115327545536957299335085679626017 1.0115997725337100940140080118423668 GT 1 -5449494548.7586338206533234865793467432158305 1.8190493735370883778772057800403189 0.0557732970951429884130907077616767 1.0573889902860998881666451687774836 GT 1 -975496644828678500028296489757080679.1547400947934042753956484098317932 0.4837521476185019740087564147554427 0.0892727378520959459294862741730640 1.0935118094793415817108769533105497 GT 1 -36375507626244049716827163978362822.9836675366200543255278686101553797 0.8796854771837270148081813531280782 0.0436714714740959095665563020138934 1.0446537758788848481062072660602980 GT 1 -71.1892171554055778469907449115704469 1.1044253625923993425360378537063092 0.0310748693644076592474780612512574 1.0315679346423833335994988114900612 GT 1 -8137129490784.0892006122744973904445838593790271 0.8159083440206828665231913817165829 0.0322495503719653129949521191831908 1.0327810249127234199791216857055335 GT 1 -2.6735198423674189964231076606403697 0.3041356009380919835304300027606786 0.0896665516260050604955240690663249 1.0939443198045303796353512172499518 GT 1 -45412372043.6072195725373292680589803484092576 0.1380689311444654071669064929637826 0.0922508623078336238866487504643280 1.0967872186279212379375286177925891 GT 1 -22131910657956514560143052430375315432274380.7010651554868723915773019324541404 0.6329039904501811513523220234839128 0.0442428041430794640995262501555216 1.0452513774180848638010118845382858 GT 1 -134285453245722301927057549270964709.2317063265085163312456312410312117 0.0863320875425687997879016016426624 0.0914558508246838995693203981272106 1.0959117966466032472962068468914213 GT 1 -743832880775921116409169139475730017.5235337923806354019860904905668786 0.1352141168481742976738614350795235 0.0666297089403341471480337088677358 1.0689532747069865912158207827203970 GT 1 -3250220531.1824275635263698540025335378757480 0.2814720175070003258096648552859890 0.0352763430404766321834705560135989 1.0359135844987327669527730427400543 GT 1 -22488669257024325104.6412925144552023592804291242215771 0.8602952187199637671897282446002331 0.0438107616911735481147268324779797 1.0447994374980753960336502944680155 GT 1 -851016248231633288521671716032062765064.3907491502392097886817868266263050 1.2222382363218335662208900941656009 0.0430345326345220648497768374849388 1.0439879724378340883648928276398207 GT 1 -405154303301846397856242.1302722934693414288065344612391979 0.6388008165896158666994540768530544 0.0781501322003510337555021766801770 1.0813729018734071955877342249112403 GT 1 -2849806022606977101833.2957411566800464996067866847339361 0.0632001999222534095154993917271466 0.0119049503410458911236467038258412 1.0119763817533345372618905312388275 GT 1 -1385929593320281077134012831278347907.1823407358651019880957725393187282 1.4085692216032781465828952830742918 0.0138312029465247329310188540030096 1.0139277452652801373740580101772742 GT 1 -109122.1964867940787952301315449962229505 2.5586897447044507407067574372852554 0.0205672140461445276489989568798307 1.0207816647240244053009417514767733 GT 1 -206814722.0562862555043968352923566228651703 0.2399319928588715425671361313519034 0.0795371879235562001933654919122278 1.0828786788247751782091830190520391 GT 1 -870973469209550896222.1280720302901756849045292899642826 0.6803634938747986657060620011689032 0.0025984731299899491783957584346742 1.0026018550210660065776134488598547 GT 1 -466814665020591217221419293578127234831.2361663085972739191620785588449229 0.5117975388344993383885862535052834 0.0189890637731261911295064465270474 1.0191716714392861843441496618990314 GT 1 -2735374770857501561186583642.6627337713266187714182052641335635 3.2840219008496197847280044941796124 0.0096929355932297990043203626934584 1.0097402178776075029661957951409047 GT 1 -18237883424688564681020685568209507.1629292215241536294187401449069226 3.8980645358800464924553375526974275 0.0468280787906902390623881591730239 1.0479599915882910784805928316262793 LT 1 -341460479673014322900975730.1805820494243887184235366995005067 0.4824474522761158497831549833668528 0.0096610271651873392191322095956447 1.0097079976550687411682625649630635 GT 1 -5389608703021.4760010292893358608416192594697651 1.1853330773327544079331178514505179 0.0591161932488632008249933205812155 1.0609356254999844239713823474842949 GT 1 -8591229630138945301651015.6072619245973773081243620640963090 2.3161918471272065652571674954351978 0.0973672708843448644156971582896848 1.1076864601045454811616251428864614 GT 2 -16196.9296817998209088947756867112106486 0.5197363872538627527483551448908611 0.0026836061665741320521264893073588 1.0026872134928100727217110011976838 GT 1 -63628970409563527454318359519909171344851.6158321486471235600521289048383213 0.3243638224715094248831527907960918 0.0728054006797270848988699694000960 1.0755918116928503489227335234851186 GT 1 -4623204230786271301.0723082603722483890422438279253495 0.0685397012884272158642668946851418 0.0144679201727791896494590377732820 1.0145736010904239338512956049741433 GT 1 -38018002380.4856357870174789918198149078309039 0.1892917160997144466722909545036354 0.0746611954920165652513231400056184 1.0775953333883114348031556513099214 GT 1 -177569920863453624938596.0192508646276791045183168925070909 0.3258444753903597539012148649341836 0.0725025232617097476611478647707623 1.0752652050020476754929399648397499 GT 1 -224052466288188789.7262706170660908829372584894124446 0.5896974531567268526815996833823950 0.0876837984218347989110169368148254 1.0917686367418509899636728200699914 GT 1 -9631444670666733832.5644529804997497989051902489427775 0.3323955454799879227254366142213996 0.0899109374168533632559291129744999 1.0942128132898014795128340079589057 GT 1 -21338836958300006482191613163719832.0795232541865380170114668975952747 0.3313000217400254357783192200771558 0.0069097308644731335287529855259478 1.0069337135947728830694559385311658 GT 1 -10804526.2100976313792853501657916505561543 0.9061335352287942247088405991932716 0.0538753332929380509854210204094229 1.0553809356244364120214488208097876 GT 1 -499768729734099560542256187740.2015625033628217369262701967287038 1.4902503640624169986616488368768455 0.0243899931658130626449164778458289 1.0246923555853629160153952682922334 GT 1 -1427751941831112096700891320584676249228392.8086172487993622251071180459344095 0.6126338104916626190580273597210676 0.0384206432110881904793831348117782 1.0391781829972329227784295861038853 GT 1 -260256467018197458447552393264048030156399.8264666406074754749416611035001203 1.2878889218245438772200055044639741 0.0874882101126217674222381451084894 1.0915542731844343586624988554027632 GT 1 -2935659155.5081503454932783423000321867296506 0.0260336265016815549459491628993819 0.0237049105071889634198841485207095 1.0239903924745082051585024164991581 GT 1 -1660222650668.6673813451119385543951668888125774 1.7712741327914484164289021522519795 0.0865113094017438005881421740828412 1.0904842835381875865411531928651916 GT 1 -1705799882558909.1062716087415789804556565152015286 3.8004075474850131376023503519362011 0.0546549800789672450105992330471155 1.0562053176758066706732075295532726 LT 1 -3674936837829236612588645090074398301118.7476736386493923759236251627326834 3.7834699967060887861055430558539359 0.0805656689113023189953813870806788 1.0839966555537343875254650459158109 LT 1 -1386930201451779022853.5394062137181646294798762663684616 1.2995447559349398552048755227638487 0.0427517643120193339202995210237794 1.0436925317311789599386752253009378 GT 1 -33952810155036312937243212005.8646991428615506605440703257955353 0.1649738406965189496778889391584210 0.0618342913578157147615961717219999 1.0638286839133051393821276661509676 GT 1 -400586931671131464710565289614164937630726.2482224897848947725918133436698704 0.5095244492996116625574727415007491 0.0702825460386883391717832343075825 1.0728745519401639993628528144267093 GT 1 -6680605341763729092.9043227750894011520082945680281764 1.2606207855556998708297068202510565 0.0637845884190036265771827348870151 1.0659096884048378381404073665200147 GT 1 -726932121287.6915271407019709056620885888879475 0.4822615671010505580856994439531757 0.0825498112318673913293821882097662 1.0861569906981490218367918615477990 GT 1 -6511438652165576059313030846610944488458633.2395343207177856833519488533951081 1.6145911455609935222849077470533204 0.0544766300162206844799970561214817 1.0560166741253325504523049684173392 GT 1 -2.8139774197339532424387599696853095 1.0333840472021628594144087488059914 0.0555951875260773331576945686723266 1.0572003779833363723989333481851667 GT 1 -26469140102629307026569706.3554136589511581030716910900337727 0.4292347020448792683012699366894542 0.0896289571856151471102721245926961 1.0939030232178770252598169798793414 GT 1 -21894708831951290876549144301.1060849733940233355378028262074220 1.3550033210064572499254387155962147 0.0259131693345285153264602444905377 1.0262548307859176329136925383621420 GT 1 -13.6543490113875806651186538716847600 0.4608381166985385070768544750199404 0.0846071810447491208079548121812559 1.0884019955003229611154566006767120 GT 1 -106681086085301070326973110368506053921.7521437499234101304818837452569093 1.3483973426468849080485508063792797 0.0225129166828481024177219253995667 1.0227702012077204240779642271653588 GT 1 -13411396830513669242636666.5239251270871891902202925984027973 0.5002172345069062274521471438958620 0.0452419353941578041145861022522148 1.0462973060875277133443614389374907 GT 1 -26406392076666.6093552804433066996453732829363707 3.0473892681738499453338047797891671 0.0308361000722018258128377451087237 1.0313215380221574566957824701650826 GT 1 -198048215845145490.2999199444541698436956722388542684 0.3079491249275387181255379088724682 0.0101768792080415213298877706577767 1.0102290176828573604121456852210237 GT 1 -261025100101064.4762481204663857938836908358700319 0.6449992241896111327466669757543238 0.0144593040303483273649195541490397 1.0145648584985351754072294203108344 GT 1 -471830.1485463191499663034316804117149911 0.5368492745078317208897969942478095 0.0752177820060573246697893958210187 1.0781970091966097308980704111922753 GT 1 -67786755567479158541405713.8500032140095965953685441233408073 0.0093323402161934731979904797200541 0.0364858612634998066432067835916825 1.0371681168850975772101119517664883 GT 1 -492394604902219768477117972193436781773.2257168741947778054921994431149734 0.3740477702945792426516275247844479 0.0113249553862598103253923675729471 1.0113895710026966258212921691981382 GT 1 -698120134658818033556973965.5914377525242005371485015512033516 0.4663783267483069077213769062794969 0.0636194695016100009174666299185500 1.0657333354457064508080639043781996 GT 1 -2992334781402711869871571857395753.6837819379376972703865929561994393 0.0657757616710633245925765900507269 0.0818224678026543354339767608596021 1.0853645168659324338038264869531269 GT 1 -101203057814728938560088224010081448.2059828498849625970909889634225365 0.5798319348034274447335527140938970 0.0497337081960824698939878744096699 1.0510130265042447218876679496569471 GT 1 -2333113439900919160358104461.5161446794165326654880269449132116 0.8403403273348662772984678592785835 0.0663108798278972647802616210884704 1.0686117439408867115912049402391641 GT 1 -16195129107.0431343600073412393691829022302558 0.8524210317446734417745998243098023 0.0764156027973086967023222240442495 1.0794930951019513479327392554507226 GT 1 -3644581165247548115243.2298027924467098034647384229599666 0.1991206310507080280559410430006338 0.0406993841456593161461386599025586 1.0415507851753903725238198860026533 GT 1 -54613578532554657367981823444341789.4617773366350507300150251784243936 0.0969156838821476566273293057213907 0.0092789224076855464062736412184869 1.0093222397754347552527721132000193 GT 1 -1449784202555996781751269111600188850.6605950439372651510463432300944933 0.3102936704617809375401514439920858 0.0682929725648409711958139585208419 1.0707368619598496570031962868379971 GT 1 -47321786043110026.1822313185172339436248756458848372 0.7909753936775485569227680158172177 0.0096123961004580595262798358684227 1.0096588933866550462532039863200429 GT 1 -57.1446764430187856899090923953914727 3.5806309487803705567903880119989928 0.0189847785369195658736014086587070 1.0191673032648968302173668175851771 GT 1 -3899110377711278443.6317501215040251692850306700593247 3.2118584234489200199242724014710004 0.0512377568875677952653763563798996 1.0525970458892275747820964821949815 LT 1 -3472300285774928464.8001679939034594369401386006595602 0.6779102001963897208144179589468391 0.0267496741917378461647389747362537 1.0271139577284508329832397473534719 GT 1 -967968667831239297177868.1767968998630745232159327230796450 0.1985026578986675392665991393844246 0.0710520890996728332685264202352940 1.0737026118152816187265763397052508 GT 1 -376505.6013019537172094118329862854346051 0.1384063788944143524967603557028703 0.0027270530370446356804065297496377 1.0027307782202341428760821493652790 GT 1 -59027279174886240676594.2609959800817877077803451043022236 0.3124144978419695603911142651976994 0.0875958076491308839639470440175835 1.0916721937217972128052501090242355 GT 1 -68898264790285.7446683513167212349766368279569179 0.3759620966238574987965178959515150 0.0359658626879249294718702774849762 1.0366285728491313328031385484764396 GT 1 -21698955019265910115.7679625908890100423528321256749409 0.6441352490558736274831969428089405 0.0329318643964055243793314362386985 1.0334863252007534741049097404813441 GT 1 -1132235933283019631963419576222279890027.4918603975438613128184816585035427 0.7102123261459625682306242798427123 0.0008996713200655919278146770310143 1.0009000762672054361734453166520289 GT 1 -7183554851.7226608811680644737197165735826877 0.0668757555516989510105442345507638 0.0957953422937359129484431810552431 1.1006995529446053320669872647342597 GT 1 -1149044892814902315438387409537227738929.5487675496729755837934738323008074 0.3714162756342884520431541224172290 0.0503750896944619948502313865631098 1.0516882036112628831407131749223297 GT 1 -1745960204.6888305620507340622822893174759972 2.3576271799846133057688835760435547 0.0656803968703111315919600991929906 1.0679367117810661127103284290458730 GT 1 -2287583356.6339922027357814187231803079994871 0.4848489662160937301499278384227508 0.0579235093674769646221018734451331 1.0596688074554958437157846562052459 GT 1 -202837493128763769829868764472561789435.5739304585012120531110220725844116 0.3384746511621947945671321341972923 0.0941481682844796956721221454057663 1.0988795274663175928480167354398043 GT 1 -287784500248957408624033.8045344257929970602793468877445077 0.2895533825957681782456296483527058 0.0295611194342827994948931361464561 1.0300068556197809839713562926406944 GT 1 -459918297289604925945664.4724337471245909838291007123250812 0.4798784487897165992064502383484250 0.0985254473222102658862158463807750 1.1037234644933712233386839284074635 GT 1 -3517539209.9610893311471455810862884993574909 1.4089901729687616729749943542466548 0.0100226936284418721936418049493371 1.0100732589732461351582311409533242 GT 1 -102552547096907139271414585943849.9657788635277027943351326938744947 0.8050982743477651470887331637955396 0.0790785861330938384888705884656377 1.0823805733305681156708719896429444 GT 1 -18978754.5096532756419361999993558812050862 0.1844889463193529389104316606558189 0.0364872528449480495716679264880113 1.0371695611632842817466193158071279 GT 1 -24640.3069798780710708867512488054459807 0.8427438226620297989973323682595773 0.0836021555899165544626759860479807 1.0873046806424864556968435403769200 GT 1 -45.6953636635583739204626836322206475 2.1478006249280438207619274310933941 0.0211662966378196021394164825045772 1.0213935146572515351887815283888736 GT 1 -8437337678257296348668.9958615024942003122993274917822185 1.3837687357798265845894819504971741 0.0442355919002476417720984094343405 1.0452438313429404051917208593267415 GT 1 -11667164073869517134739.4277953835123479170595514956631362 0.2547645903422627826241775355197141 0.0685215224970624742979176414901262 1.0709821944109256190391609219511654 GT 1 -4223851556692247.6225421677637050144597290646676648 0.6972038389370915754389946773626982 0.0311065424430694159887902242682561 1.0316006240580567789741071153131044 GT 1 -425517117520568298166301867668592192.2079239642183772661046557319906217 0.3758054498788214415074418862220234 0.0325047726990442732137774368853442 1.0330447871126355576199210114309909 GT 1 -5682156673697193960376885599372.5430672086703079478394183585178556 0.4166678393570034538954343640746429 0.0720464951717003071825073443857840 1.0747736500068229852682177024266705 GT 1 -7814.2889226067152936284046648909348852 0.4546740922449264361370325308902837 0.0101606698244573900078264909445467 1.0102126417763723213005456798928994 GT 1 -3864062805034252620924606176455694384048.5853404043778873718427927465287334 1.6047996670602694759708744650387038 0.0391392137163136433391962845657985 1.0399257438940223964436619358937438 GT 1 -10.2618555512220601558792229994385450 0.4167800454649595649500959232201567 0.0985146821669104081893738640003872 1.1037115228462208236405675694702921 GT 1 -111399824.0654498555339289134792362618001289 0.3290875055304661126667868511754182 0.0873547307629324693491232902596479 1.0914080070324229814994308218935900 GT 1 -2356554321105410236.1201696908257997959840692187781860 2.7248233035223210197165608128716298 0.0881419180224672972489754161567874 1.0922709128833288521965221252029949 LT 1 -51546993441409022.1816848363204338346005692184004108 0.1463309711850748674511289862710531 0.0641883008507604784841267084348320 1.0663409988657829057539998641684925 GT 1 -1573046303014359269210110864531545175.0243059953880588064681034142838930 1.1212122863948604056281197619504754 0.0459726019539389046847159362833483 1.0470628888203865202068555880903774 GT 1 -1703301073492287045114015003.2033826974985243436595778560762643 0.5993745174083677739602942020730397 0.0822606340840729140340961459340240 1.0858418437974381300145510583016086 GT 1 -14.7090612174623219857427313603782692 0.7278943549165369443595641951333083 0.0880923373063687813141191438164304 1.0922165410800908543979118396857086 GT 1 -5856183681945921762449397684129.2875503883496791866775295352499687 2.6128991378267975891853587799950025 0.0903853706607398623035968198598977 1.0947342534085882338201789026853885 LT 1 -286.4415601351264698074441488903157236 0.1059853304510830540774569875837636 0.0366357584541454976936124052689815 1.0373237024087943080827243517009851 GT 1 -7086329.5325816755320248458861238315030190 0.3138928389639526735985447852504752 0.0551590415616917588762519816920152 1.0567386636009634337450286249461559 GT 1 -163147876.6595583159172032013689355692802122 0.0894813133197137639109285657941380 0.0486639105460671266511049202631577 1.0498878725042073254429935223901265 GT 1 -6509776194.7403016314392592305757162442777057 0.4233616116338850033864512551683038 0.0166914174388195208442544517295721 1.0168322889099235804442774127896439 GT 1 -4858340739110586635418908534004.3430859294798865749396148116776616 0.1941659172387300976948996704901498 0.0950937237932549003028470498721658 1.0999239028476376937282174821997922 GT 1 -554492813456037165010041094011.0554828049566054545280049538645220 0.7459902385860645124556126988945765 0.0654912652670068521007391030220128 1.0677343051714079080473107557817255 GT 1 -56000097344603137592189795693918038442595.1332925805825509847193622913489196 3.2730714216221463422691219717969618 0.0233423561230229074244052656465331 1.0236191040330255768788811794006416 GT 1 -220631580178890725496878709147934061.7477789788434265279721804256940811 1.4440926885677951603479339616454519 0.0183834161899023047836813093729165 1.0185544910560850687028966569718541 GT 1 -288753421895.5314201153231390555238786592809688 2.6409512009774515530041192007561280 0.0422669208188322059524970557532816 1.0431861628180388025616421924224871 GT 1 -811832521208286145829158008777584198.9645748866982198694458507296388105 2.2326610558633179485995081971823214 0.0306059746013681775846538624066446 1.0310841187849934479263614884191632 GT 1 -8.2884366471847771114445608498105074 0.0926559356317393278048743887249003 0.0609663750308324843718556366838761 1.0629039910761766672718853730946013 GT 1 -597382515927432690281895722997926280520936.7109975600707282197882144791961617 0.6009718360897972500437340450744773 0.0160695587793914684207929183102787 1.0162000742449812011686946639355058 GT 1 -192351625938281222157654217302836036784196.6881919994218452460740919249701103 0.2483179214042603409133851056418179 0.0171781123279152999255525912233463 1.0173273678544850855907466010015606 GT 1 -8052107118241944665850640570514705460.4796993321045543189472779143207152 0.2907039173644530955334168023761394 0.0696274438991267493193533264776691 1.0721701750948464389037739836821666 GT 1 -1233388231399885.6375633349316993564440728484604439 1.4168275739376484250870634583057174 0.0768033454059010749391022994584313 1.0799130069414328665689052621221442 GT 1 -215712234589195006926269733559880673371.3942446007655427313979832458560929 1.0706075160048209369120225272012465 0.0245129953630883649608678573250373 1.0248184407535683784748815193983640 GT 1 -61404263521705829412497696696290611.3578092585262562416767020088088243 2.8594265728473775627845495199705435 0.0378110932203252722702553967081133 1.0385444788004178182014353326616414 GT 1 -7468912907847608419899777546134.3645861037647455326747899536719408 0.4870473278098519084924712606274936 0.0497284037830079699688051416781705 1.0510074444917966171543196828449599 GT 1 -155.1219939819217269661898314718634548 0.0289611881983509650976266804078679 0.0797431578803720009589490651451470 1.0831024716844927482141243259932104 GT 1 -3273.8057295820188584455596982685690833 0.3903223990640594594767968978000485 0.0687632307018509014427054285214240 1.0712417168543695620613215902327393 GT 1 -7769.3637124961789914389912377035739617 0.3429770174536577828216049463231748 0.0553989731262434504548118525506259 1.0569926344216676424638857887390069 GT 1 -497829050644784840534499612205352465778.9279318385454258347045398241129631 3.5385155653935160135214039586724037 0.0619248392632397844646141228143467 1.0639252044688181839448519069736569 LT 1 -47.9348721546374059718204005456047244 0.2781080418839979955711170635157119 0.0425491621727863489743461030809400 1.0434809035512820730376453441486072 GT 1 -633.3393615326347195926621794220373560 1.4880181263364778864226817699845196 0.0583701724513497989327203178566601 1.0601430460222331537792786569322449 GT 1 -257720292.2766613742293821245334696567989898 0.0141648712031937015687829969603592 0.0518820115654704993330706144427532 1.0532763240976887399059181995477188 GT 1 -191187.7040017391061708608846688434357513 1.2850560337811334722552279057617163 0.0837697172095950805141734800643042 1.0874875454775923363814678980769373 GT 1 -5908017.6699067755278354618468921695914837 2.9216423020857357671195131439655926 0.0006841773627543289260925708657843 1.0006844115188951604977365507013381 GT 1 -5407166294045058.0178489616876916112169459549295220 0.1351197688641657502126004525906350 0.0056445473431534105555728287520838 1.0056605380022526489235243141669257 GT 1 -287298777123082736270661.1961782502300167551079946909672797 1.5283327544073699016857121652893767 0.0334142017738618372956048079077229 1.0339852121825672453321433408423887 GT 1 -700633016907976009931.0946993426183262528254067710205619 5.4272944506377189796192781821034843 0.0494489374598599177708764954722160 1.0507133967289775086199147055671138 LT 1 -22109591637401465026630517502.7902854095099473776837588501989158 0.1895391005506741577346769905772379 0.0096971495247409136239936157513912 1.0097444730633252539264114529687997 GT 1 -250448311.1219431549635370885702117857706375 1.5853651024589419232709328814365311 0.0004622496643553158618663366511696 1.0004623565346665267718491940043376 GT 1 -7288538754.0547727759038755817802849006545852 0.7617930166679686927899473579808178 0.0606171478877471489113727990129915 1.0625321596411675539195029522390209 GT 1 -1924429844927910922590285914212953.6993934088500693904614334582392625 0.3104560938106707274937568251190704 0.0259697565819176049606042686430673 1.0263129250844151959487283797156143 GT 1 -49428776855471680213227711821029066910.4912969546719377760011319308528064 0.5399724997346012067074561392387773 0.0671654825974277373094796414844772 1.0695274599940290663358019017242062 GT 1 -6372349.1931509149912613638771782041817897 0.4459802224670624502831738692551423 0.0987618524064895792502737511035232 1.1039857415446161753071483028772637 GT 1 -1037231.2958975686146922837895717730165324 1.0004184504260891700272738491616890 0.0808459982418545175290348581304409 1.0843015953031239842169897202155518 GT 1 -96519183140554418876739440394.2554925531782481611262766526188740 2.1036761064974953300910880944712064 0.0718021986197395868755929479711113 1.0745104208696786331083800751381427 GT 1 -644803318759281823795122.7417476813553554003545917568290529 0.0546050000991236111106243974163926 0.0280918854964424281746636792923980 1.0284940113939146217728395878338785 GT 1 -31671679435441726462650216291791845399012.1898969249865427819328417823655611 0.1328138493746659023069268877889514 0.0671285825359717644508296509462881 1.0694879038552279935212629082893779 GT 1 -84726420673479673838939755689271.6762894352381615815251683181138670 1.7043857402396225476247791531652075 0.0687159451637115137138796980367625 1.0711909410052764150806232431462184 GT 1 -1697549011.3006790907612219640240611347387138 0.2702043501272954160605620533551032 0.0986771697845244232407199253868948 1.1038917834227329568208462783217188 GT 1 -2149940.7762618449445677629990359284639464 3.0152827394806258345634364480743592 0.0103190771653434767103455574690314 1.0103726879703764817190900039387187 GT 1 -118503588149245858214.8100862239110621060315639265009713 1.3667764035626787685866287781075320 0.0371813320285417418791136708060644 1.0378901840095708110049016187518930 GT 1 -6336474022563.1475129733263338202935545139481147 1.2388839694730458037279969770872928 0.0662989789914180553574527554773778 1.0685989979846808530103157821072309 GT 1 -1334503862588057797887345262852648148877.3574691157904144439327879895909923 1.3864588794587580846467636256010957 0.0134487546598257460637652442971774 1.0135400082491079155804430871925602 GT 1 -1013954908780403101076583.1613805269456903753348865692001877 4.0557968351627275019292646572876880 0.0706726486789915604302905145247717 1.0732942326761210577100886354669148 LT 1 -1094483030451.2958246445209566424078420734317128 0.5714503991191460634547232730327733 0.0176468337441883581231682794153673 1.0178043955108503959106085520915742 GT 1 -449270100313342011031323306355733644.8260330319473697210185370629858092 1.0119354042929742079914515765177168 0.0655991810189860211395490777777418 1.0678497904305898202732850721534260 GT 1 -20.6015034856268114890238528018612302 1.6488663389737121526504418014873550 0.0090152052412013266148883379221469 1.0090560881010411364237793369577852 GT 1 -7234223026626178106108044251844855918.4992069423655420276799288426913682 1.7465328472925303216552096347021870 0.0889406035194145950232696535711020 1.0931471846372525511160330644849424 GT 1 -22875056179689729467993895377155500.1504063341585093693907677034777721 1.0738946951096181726548952542681840 0.0786818557460712806334982185105419 1.0819498688747803569774347859122008 GT 1 -4886686328386904.9799568818466729214049100264455142 0.9957135765332247214551803341176515 0.0319000486758539712640196905387819 1.0324199415358914039996434615722875 GT 1 -39298130233668175730955839769297533.5711083316248920972855942253568466 0.8989537402641176926783514702561686 0.0388997058404812971212892508381830 1.0396765110874799164118359757978135 GT 1 -280.2226927233318227381998136894448349 0.1667575537481135790467878728554680 0.0960752648630999026458944402979635 1.1010091796479909205799775769585369 GT 1 -5.7441142663296477377182585522434621 0.1685834771118813388312376072618208 0.0180739167263969016919412428482621 1.0182392450761968384194341073659388 GT 1 -44507999211486139791844624257699.5158077239090847685982356685133974 1.0769588655312222556644599607250775 0.0686358956584098313558961402140970 1.0711049886422855467138200044353531 GT 1 -971111627916810816970743401786717891674.1680361703361708858221090607269322 0.3859469938338438258235735277907138 0.0952094112313143230735707033001424 1.1000517556836081890594488758522076 GT 1 -930358760589671856775598484965.8035409416965504638729476146550995 0.3634874638547129347927170137753885 0.0530533948873100453064910087894249 1.0545125705823881086290042409720000 GT 1 -18254609472104095522136.3078680781346177062128005014968978 0.8513854923525092155742065492445677 0.0896817149260684037129239695201224 1.0939609768068390834011563300575161 GT 1 -44688350206.9696386904623897702583664235747417 0.2214230539837975520559282845709713 0.0099699241415413416390224829432165 1.0100199566599450687706423269714168 GT 1 -98023917055408.4382640894785147051799995257701788 1.1645290857358293997534312116084799 0.0927378869726220959221704252591326 1.0973238816114529136228627633259649 GT 1 -1934379281873.7076534650239782627224011519910953 0.1733679187365926298541553908376699 0.0511593718805052177602811776088206 1.0525144311247839769487863075107525 GT 1 -14679128461.9368449650453441082648666426608933 4.0873155753291336501211103621707115 0.0369624168634592412962282767216661 1.0376628408048020883231579074486803 LT 1 -7591798053.3543217998989769375843103943643243 0.1986884911445067518732478247403897 0.0469097207579385238061143264305114 1.0480456481860863564856792128057868 GT 1 -4.8964315803188269974477327825384416 0.0432285119756387875501509486259528 0.0252378033967620990577428920998748 1.0255617386527124531034106321837823 GT 1 -902449859523125513171343.7435556449003221721426259020457307 1.1066883449955790275535496066337049 0.0123057610311844849323812280141011 1.0123821038593746006816979383854863 GT 1 -230359.5651764274733130038904853025393958 0.1120636269065923795083956090133078 0.0037259108834845731543960274720841 1.0037328693793080177639948456359224 GT 1 -4118136133.8914278602892581184561431640511114 1.5274112037793128885045673117376358 0.0914540575979563208101312652829129 1.0959098229120747378191626725715263 GT 1 -239142744.5965975825666235182483082268646687 0.1774872135123748694986101504511443 0.0151968647625732803580163172564539 1.0153135204883798790153349584774207 GT 1 -25074667.5698002763618490807328170990533880 0.0058558829151393233996036222790879 0.0749689688801998209192814308752392 1.0779279948758643958563086327990779 GT 1 -9266894210136667142613598007.4965369710940612034219046202316217 2.1719122037312053340220507425570317 0.0745045867814598757436504286181204 1.0774261029846042686428506259857492 GT 1 -1222624604221931144031821899821463137822.8218136116574558146687585590704505 2.1617406020154496478391388191802950 0.0892930688685330897594856634527557 1.0935341336637815186284885464320533 GT 1 -32571253000524993470874839246249.7456730344427235783997039181281521 3.8171309605292298677024816884715459 0.0588733684449676011786450419262865 1.0606775771913240337778455033660203 LT 1 -19.1860034800748012321422219091996050 0.7157331941422356234869975825925172 0.0591790391885861989768874507740378 1.0610024223119282788175113565773575 GT 1 -306045506.1789466701992002085965078393092617 3.3493198004226572568258111394755253 0.0122231221437003542012782487761320 1.0122984388674357168155051288390531 GT 1 -6347613818277411.6197032140437914064425702749067748 0.0029834915350533744384636999395471 0.0325590548792820369169738606933105 1.0331008945760502985404385413503902 GT 1 -38771129186136286998269695100674588.0136500134438350327249853239731377 2.1584242710889501371245652595737434 0.0572295883708332557350552901447497 1.0589324919200935429788925682681763 GT 1 -627.2895800016634751045800792470233719 0.3686302385351648055179641016320210 0.0595134647982968407375653419101007 1.0613579469818101713297148512556600 GT 1 -11993338069566394372.6339600324127865666921403310123401 1.4995655411196950795120601606569854 0.0994216131531863437207041557761185 1.1047180700182116065020927712698025 GT 1 -237063645355319547500770.0325907012321810165801052216070113 1.6823823105836162861616689978741239 0.0450966479463645136447344519709162 1.0461451456607566099437526500046209 GT 1 -822491654684308550247491766284314041.9534544803838411272606976811013282 0.1873069620574531606463472107079611 0.0638886149375870148768757003274011 1.0660208084495617836915713676927115 GT 1 -196.3712977203389380253832896621732977 1.2256193867335202201376223670455443 0.0233068503713744386497624482085642 1.0235827503460478698970140661245674 GT 1 -94736069234268299.7528227792247663944834885189238208 0.3476318383533697780627078130520563 0.0215498521216733827386219344618656 1.0217854409366416150402414166465655 GT 1 -1060261823242318916053729.2704850927575314233867589693599050 0.4928530297654970602528809820459861 0.0981105023838950970700645354160622 1.1032632746103906355622293357064783 GT 1 -775461097767353757281894471698593923073823.8557067332685321518596586805767280 0.3787930276263647371828913648393246 0.0185470999518849680520117327827654 1.0187212541418626496958985865364673 GT 1 -15175580891478330040656313277378950638463044.5346193492550261166155916311779908 0.4754552320976639771525986310014357 0.0998078402705302908024331929675674 1.1051470276374935968455814939838938 GT 1 -1544.4011393034280309066614713917911429 0.1407540761014360601680282720292861 0.0671932906711268626296627781459124 1.0695572707350255050898697577810137 GT 1 -1286900969750267664948610549851968398.8051177003957096540687260873169249 3.0607094967628458263344176742855121 0.0787160395736833191661292931919369 1.0819869727373333549053035002878137 LT 1 -406215.7846971462600067797822214480595018 2.1351391282630644630820326193723103 0.0394442168576020616828388668388166 1.0402432212684798687761514536067945 GT 1 -16.6313684479579348635012988437502422 1.3607066569546407451390513397413283 0.0210701827853162639531403664654889 1.0212953272596722449368640951186342 GT 1 -2125190515031981109203005.5124053990140932060885137683217292 0.0892504883018989903666893327394673 0.0797684226091960960632243461614931 1.0831299260586228526811195273532786 GT 1 -359223.4349941469808199034320379483358526 0.5511087313597225980061365454728561 0.0080397637407148418458558614441993 1.0080722569167091204746162184981249 GT 1 -298316899126155994750212482633420887182.9093302948513014154357148755642705 2.3532682032105038180977610445988551 0.0077483689123792675472680244481597 1.0077785434930312084183916128592307 GT 1 -15587988871546129771112446749658256.8943436641954402321444361117423668 1.6453598942296356564130163097812553 0.0377738174334318762679815106347279 1.0385057389390392409637548393680539 GT 1 -516317504529061217145371860904.1967460624128844425360073358352115 0.3307699585923375376695078769487967 0.0997006064471363392744150506210699 1.1050279114735490850544712267650860 GT 1 -165346896032265720.5606569861484870952313660576587374 0.1593921591913093364399424883614841 0.0518024411381441934067237466296067 1.0531924030145267623506661098063363 GT 1 -78275252379816806784010712998289.2773784120369179486255651462658710 1.4873086805036174720207486192667219 0.0148653460001344191716097887253912 1.0149769425848747302449750453700633 GT 1 -324.1852917044543149197830099783458332 0.1562580994099239879270625598857553 0.0313255002762439072171952202130248 1.0318266371207561194962615665084241 GT 1 -2003662965501034101773938850990174.1653455948127697171482068857315163 0.3668530249207785703849844246070582 0.0317476906392044372900585392055693 1.0322625755028018898293704871332782 GT 1 -577624479814381734717663733228671447823.5680975466627311849413573167457909 0.7084550334744130673826872576091762 0.0709347713459246905671717243143735 1.0735763287967102992169991285690449 GT 1 -96979501731075179466677626406308665.2853247331435687466392638250342929 0.4790318131135098916373889855942961 0.0971064922089172670444734542767707 1.1021506640909631158512659582455407 GT 1 -2120133998532458799824802466862166237299.0922115535448105860737657951631639 0.2527739526819872078110832988104831 0.0461743362359014914236015366658023 1.0472743666189157496498976681064314 GT 1 -308.0907895344187421125013800369341615 0.8950264380051029769523765263479641 0.0749872138786771660089450908265584 1.0779477187313838228756942672794102 GT 1 -1275.5634256360606082596963037016784169 1.3316358716742931827206702700483516 0.0052623866426930359490128153342827 1.0052762817684018843780596036789287 GT 1 -321.9046588066805693559314992454662870 0.5995256907704340640693415153790763 0.0104184811472212163208748497362239 1.0104731334493262750793621142992607 GT 1 -13304972104302.8733173928743034926369662986235007 0.6839598635206449571938743136861215 0.0390062091919146440773766960137163 1.0397873312105688860204951036285775 GT 1 -218131521564642182624637665279319.5906075292916041173564535825968213 0.2302454598330023652122066727811507 0.0873273115341788139795715416638092 1.0913779637967883262953584997846094 GT 1 -44265495321851899068919.4428847932779470750626677005620320 0.5541251192848008243604721885728486 0.0667755596393941897904110983332831 1.0691095493357549837933892472205688 GT 1 -31852886269202581934303507361330236529450.4465520521579479299486684145219801 0.6191011891642383446666276624601055 0.0055742084173096377964147388917492 1.0055898022930570432050244150849557 GT 1 -136841951538686680482604275886.4186280787977474893089589258501799 0.7509964667649157169177682110383622 0.0490905509639888659238544809455062 1.0503364375463565454095857025443800 GT 1 -6212674589070097654450088423037200584580.7032352325393288406654266137370530 0.4272714105611006225546217342859165 0.0893235026001416624427755200563282 1.0935675519228198643054032314210388 GT 1 -37855415275.7689567032316788694710880283669809 0.6651449101999562545281235926748701 0.0226162739976900599325121649088712 1.0228759445790424886621828510080720 GT 1 -283092554355.3268686687347998168301790847199912 1.2972517456155266242110957720573216 0.0338907281478010199184530752493070 1.0344783333075424498299803726497075 GT 1 -248434540181680177017423133.4713700114709943260356673260963105 0.7030028969695645329920245235263579 0.0663478301882693525353700356383933 1.0686513193099690610991439801847570 GT 1 -3190644378.0888885158507570945077996887107445 0.3922348101520895948126624607215351 0.0902518160351957966180726366932516 1.0945874386833367973847363738786707 GT 1 -216644981636041045830933.9981836555613097246560339157672968 0.1941088362898968694762532853395441 0.0827349654868983206050677938646675 1.0863588250245992600347925989807530 GT 1 -92076675188747984093848018391531844532.7346049317998111719987778704503656 0.4730748370690914336039157565081024 0.0725567702971753448186514012232689 1.0753236942413993098468520520838432 GT 1 -191325.3073764814227208272793536144483849 0.4461831943978633911583466135842991 0.0324709917118312280826052538954691 1.0330098718008837208724430426459715 GT 1 -13001648283577230984562468.8986036788398019811782242072825359 0.9793469643217877351210118112073671 0.0968486487556469858863907021873586 1.1018651302585866474579148537460705 GT 1 -29618031036968446765696571301.5653325075233440975827519627249675 0.5693861528766330087996783133480012 0.0409568652194635740528739878366493 1.0418192261941235695126115147921260 GT 1 -116926648189192449739333981.2371352765525389150577507649746473 0.0010581106406236181139338734665144 0.0951824483169330366884922031963095 1.1000219559564953892227123588064759 GT 1 -332332838883900473633663579.2469106443593062607225081796862801 0.7238762834660784866070170789642366 0.0992413691584374607756186787959764 1.1045179475607474989307614650661450 GT 1 -385498704787.8226445028337182622090588450870398 0.0179377820201123712229945671724965 0.0186472319726531584458548529642085 1.0188232836218908328807045457263512 GT 1 -65107793111603573865458371155.9661171780743088551751608942689244 0.1631677228301974705913208375227719 0.0344024190479930596167361658641437 1.0350081144297838210043325221965448 GT 1 -1539070433294422.7527898913930172219166088534297495 0.1413648444805414746350264382602103 0.0763071633879598017515867821518553 1.0793756905159060571296716658583636 GT 1 -12517779483274977386834585378.8673134733403382170269239216562821 1.3022756495658537962134482365068353 0.0855881343878484572164566099329252 1.0894741901944869437805292756413826 GT 1 -11939448706141518097121460.2466628323155125264328867893188045 0.2444617984054590281869434503171088 0.0819980158893250139451256974001523 1.0855557270233777214678166486436910 GT 1 -4457604624121073447246895356774344792.5720311820679217692094994984959324 0.5254545306343404268247573013780494 0.0157233765552437759793043611369196 1.0158483000501493044266935693857294 GT 1 -4055788562715261774945474894818414195526120.4287510051321275769662432765771201 0.4421118467479727738669893326979226 0.0416040250127841593901137073991330 1.0424942513509564784584919617396461 GT 1 -146366743698247462885709574000773206.3038555727348756819863617954847116 1.5025370392858110826685865263773715 0.0833796280069047167182051468119621 1.0870618815452230548283171742578825 GT 1 -2552422.1969708760829155062464398812457154 0.0721630492483379094226258798713037 0.0178907077772993260036044202143884 1.0180526812780955156655058448712169 GT 1 -20046484636507755006374185.7353788049287843473740781727556539 0.9310765137049664090437478850336406 0.0886921950601667325713072718118438 1.0928745628949464182424509336061565 GT 1 -121274319906261490.0276909395150328960111636072344206 0.2806087171685532743999726062326379 0.0968432580224476751333676226814252 1.1018591614726197847111428899038295 GT 1 -12462525.2388577734407528481525739120396707 0.5677959132198586117918590137474362 0.0492338238214199051241064694382081 1.0504871181943097965597201992860854 GT 1 -299241668869055495376763189848179730559796.7472782328015891342167262529340008 2.7287483088997383104656528897992869 0.0323129593521055443436719840873347 1.0328465490957378536896578178687781 GT 1 -143633201071760219561892953976.1654553688854227040358137064817047 0.2897528247904673698095564830309413 0.0466838754983763910092141930243990 1.0478087152213468771574472840520782 GT 1 -13529891391132252130.5844963658167754375799396340207381 1.2933342092083035039187260222801142 0.0069314356821193195650509317997067 1.0069555696692030544782535699828959 GT 1 -7893.4702265804378529227942913435061646 3.4981826424683138637086013450627507 0.0600840066420972725385137014966379 1.0619647764799023621251051266214191 LT 1 -1084856176217668724237937222.5145067963077186031951750860539300 0.7385036626782471635620064325933631 0.0771584924544521777862001372845918 1.0802977736924310826657789667985951 GT 1 -5.5348096058231237132438648526622113 1.3270906316071398380801527275332835 0.0739370092830025481798821840203652 1.0768130221171265971268894496093524 GT 1 -4052223257646757446542142.4731118628023989568075668269535750 3.3059594062419234301281968321163350 0.0997047881532559691089772605575749 1.1050325562793339044559388419771487 LT 1 -712772293894401.5206719099471391076633797986894918 1.7262449627773796758115880803111741 0.0817001218950361508884496428324364 1.0852312771025540826272947928446944 GT 1 -2256932577.2826306190817383544615663851834187 0.7511481154513488556775663149268550 0.0340621673622925129295723930709764 1.0346558022880274942880653591889392 GT 1 -958.1612136298186126494581870510585934 0.4587997072262994598097062270012657 0.0109767361563046278517850966278726 1.0110374250438670929224957154202080 GT 1 -13591252500452020717082692546982891911.4875855079388932399002892712339870 0.1753824029037631972927915308953116 0.0602739965035264806446656288047113 1.0621669318503337352419836227319914 GT 1 -6073935885836.4060334979217025044751953743936673 1.1763475361674375753931396006061357 0.0822163995025869089439206022803251 1.0857936454558167184437475939385754 GT 1 -733475658380220054245559699.1710498724026279544331673844178909 1.7157738429472436388424854257646961 0.0573139594122501786499381161795894 1.0590219885948897546097503677814706 GT 1 -50919018681601545398954445186247465.5159423762959623873298593455742275 2.1262953905554330517056202636069813 0.0462443251923160344237157056149232 1.0473477464062210179229928986625168 GT 1 -1036329683826605101326051143307781.5119296926302793433713282792770178 0.3195067315884229289117146790643546 0.0743317096672260904683018428569695 1.0772393262944555694477682688825316 GT 1 -3.3759058304496333971352711886374056 2.4568850963521052105145966258000946 0.0032045112670119051740119051771286 1.0032096567085996069696699168128481 GT 1 -1674079692526921968992144724.0250847101337179290265179556521210 0.7656478115399862477331507339263800 0.0852220593729809894710412504866115 1.0890739309993983281053028185106919 GT 1 -2704302344361272005461.8285889173091972701304496794560242 0.0088182395111148639481710657333489 0.0144710143303822113340175589934165 1.0145767406761599488767473875298049 GT 1 -291942030527023543166111231.6887569084507234652538705669169032 0.2655460800821014692937081362889847 0.0385095097973055537811106060615642 1.0392706045870359555875160796629256 GT 1 -24342097654144968784.8405794074448058412298683081880551 0.5281167578514695892243455881056666 0.0215570336742570250251761142754896 1.0217927806860960409062949168472672 GT 1 -108738021847776862329337156049671.5002630910162689540795256812850855 2.0458758367828736103774447299852974 0.0506496249254921230471271238161422 1.0519773440071978728273971702560105 GT 1 -93292459140219817452268218213775614.6522602546439603360498390024504815 0.3906558781165518408539566736122912 0.0398902213100298143802517491924733 1.0407076482559861169965358728791358 GT 1 -5.7934771858973250482271995247697710 1.2032225780813380513745933727905765 0.0666177411259021563721879941503599 1.0689404526385955991868734832729747 GT 1 -116254603003208851366153718676026.9315434713578387938549810801271342 0.2833650536654222353928278574409272 0.0895308138579304057983606738711319 1.0937952231745574300618814014037944 GT 1 -1720892358964749670392785855639230609441.5514956068939751911074516283583106 0.0227229091717418885439305576118866 0.0604953476335145748478985967624175 1.0624025081808083217915321112214749 GT 1 -14464423667444635761517873941460.7734959950056641785678468939675101 0.1543835008622642054674864866032396 0.0563430692012509011243912293567863 1.0579925996540031210514147155687833 GT 1 -26058748167232374643639519754161561.8986517987520679179451826840711116 1.2484169954904249565760104084059920 0.0718307226111495467401447527441528 1.0745411518514315716515032894323284 GT 1 -1133650912447565.2629995315157889513552061247320366 0.2289209002700027933997581711692506 0.0866402859866990228849631351906452 1.0906254847290953113483456338406257 GT 1 -6858976789120654097649269870527.8882132365482991328753939463498838 0.3200855081079698167700991253184534 0.0427655117916585324409684879792504 1.0437068932915815068759499491035616 GT 1 -103699719879350759863818.1935077011015657197787056079807312 0.9856873055890808786614010773773613 0.0570758105597129297331254351000797 1.0587693925387048445460483162706282 GT 1 -6525341405248504079087254865068775321116.3826246864409201545875194029122858 0.1743844494353172197212847884665805 0.0780712991053947843777191604571165 1.0812873893326468195475397761932415 GT 1 -1194231564505305939.7599113188613128546362870934163846 0.4249977512807740851684742056994302 0.0048693922218372629151375148892480 1.0048812863392662320665410212955967 GT 1 -226224699719259528.2780231931592436596740017658178626 0.8854695483331045551955583169006689 0.0124500893565646026471551572973007 1.0125282410603533326404147543363916 GT 1 -37821.9168003780249848467868605456730055 4.4623618116931338380106971650987950 0.0753617751508625716617045731433729 1.0783527262437024392556320562381457 LT 1 -40288339105254065.3458434053990082540415005268211271 1.5337837750506024603614241164772234 0.0606470271729024175802796606725788 1.0625639675034131704984232568557810 GT 1 -370608577824477086577966865667396191.4064185633654561223828803564720166 0.0491476033549323986756642384499936 0.0993915225110886321372337046995356 1.1046846580022833110156785823164173 GT 1 -33394302774856115221237449101220.7563355528850998812996293857142236 0.0594432017570539028973329690631496 0.0617119079788465033354550382447592 1.0636982427811019628788155023971419 GT 1 -128740914242114391673377360790769657.4100296312489534434852293501697460 0.2866976068458147756057352565148477 0.0851086078909687837311233825760670 1.0889499179002795353274100369092530 GT 1 -21.5153776769815070355174336733794241 2.2489283023298801544946917655085608 0.0678277355780195425871209740828935 1.0702376483052788734445261993350449 GT 1 -12.6892834449824218256585457908942032 1.3944522008743251942449342987582183 0.0797314152290135516868006016570770 1.0830897115767680245758286029747218 GT 1 -63874627547108154782204709211111.4056279661647617839860094418322332 0.0507376843168249951743585859624845 0.0780202131762863955424646375911280 1.0812319788505521531092344239751135 GT 1 -248233545363455999841383545754989903755827.7157550632160077683328243936550454 0.2468239430311615420742531849500477 0.0741158265374068840212158616584672 1.0770061348132323347341109236748115 GT 1 -23698128551396715.9845712373963378875752956573822512 0.5062132463229316329918878780723434 0.0475568553947977094755495556565814 1.0487248644660416370876386736887954 GT 1 -6121585651343940437519857050981.2423793315114319238091043791645111 0.0941081850986723608351680911090800 0.0502303905254570262559484375341557 1.0515358401419804188458251457774439 GT 1 -3745897100621277635.1365507189285958919170892217340166 0.0180569776866122243731797042265466 0.0924802648951042906894879580631264 1.0970399664075252644809675458555743 GT 1 -37349111492209432356116896957670.3661207954237679448633007031903383 0.8789711249842767274258026486208417 0.0360141677179221538531525802831413 1.0366786812824143135870133647879113 GT 1 -195047230613412290936800827490715718833.3307403585041069834120929171744389 0.0048590242155998240967012766110170 0.0158794782237022468033347211671635 1.0160069079501502847293935917828665 GT 1 -11885735210687116.9769283748236394637130470368850313 0.0949615528496249250241154277998618 0.0388913468987990107938883446829260 1.0396678138626602618304384123616254 GT 1 -1022120361276939147939.6727419467892247147897402769205740 0.9259147538866492276075135213561848 0.0293461332984797634548665664001614 1.0297853451978964431687503630208495 GT 1 -1254699082937347.7508843009395503575933168898630089 0.2615073726872464081217031149206567 0.0761981903843690150980419215948436 1.0792577221050750197688563369386670 GT 1 -15925920.0025802977990471685674668597463558 0.0865850796153373554998955271598285 0.0026412378928794244750285377839458 1.0026447321157548685190716573785823 GT 1 -3400198866097249577776089792367483345.0600199287666730038715665386452393 1.7846301872326193919677664556307047 0.0415340575059969588606863694968383 1.0424212492153512054908417161089415 GT 1 -1009727714182671951677734.7399120944503478606760786362971548 2.0045590505598796541095798926252904 0.0169136496525815055135060382585438 1.0170583190028504529891650555504072 GT 1 -4018474046346074956.5181225866969523088317375196166893 0.8211107448032541938606001007857901 0.0145147827922642367953049528005712 1.0146211527984321526813672070053870 GT 1 -97988.9340202492045746434949622136008765 0.5437677714218209422795007993805482 0.0400975142475976746928313777543780 1.0409235770208302182947585053708155 GT 1 -638300913587044357223562612152.2614342195471034487904927116755432 1.0264260740789460395273431107234622 0.0784821336185929181968951454410900 1.0817331136918908440272823631580297 GT 1 -1059.2518796155804061710806693018234397 0.2124786413570220946125390636680636 0.0039697076707226020356530154176823 1.0039776078748164181909029458458816 GT 1 -110535954781924368594691861816.9827316153068074678182979718816504 0.9557511312012180029786971099184000 0.0187537630097337454431667984632775 1.0189318448072505065117404153993473 GT 1 -392909706305810755862676928048176532921018.2325075880529164915168883624757908 1.7757383420984669524120734189134343 0.0713959408748688077846318623956719 1.0740728321748430381709631250240131 GT 1 -285473000508528645590949482969949177031.1174261186715317522465549831201543 0.6294614721187336305662896548057639 0.0758011714538244451178296218708668 1.0788280480795859262911168082060252 GT 1 -121.2117814102552136118413899267079368 0.7262720157272801566368833958070127 0.0788767655469421384225176222306196 1.0821614466257476537975788730965230 GT 1 -68646093292826286184532070290730.3679888841982038200491272559292073 0.6947079561364334669563741341457013 0.0262673941646037218797528689302779 1.0266185450269219475990335887489398 GT 1 -818481082093791476795000166279.9965179866681001952362854975981517 1.8480475287416037172165579155423032 0.0615126927834496376992084485159014 1.0634859475898649207382139605084185 GT 1 -876605102387749798407645253528702866.9505397408712210440297521240381491 1.1349165165182137653427768651037756 0.0847153806540358077615371669103423 1.0885202026810626550591864235621050 GT 1 -1842801916951029131.5536860415319382787515525402718726 0.9012720894728657189984256495781118 0.0508803358787211419007056044563959 1.0522203933570443235965190316340150 GT 1 -127612634684546096713886907496.2817949482054842116154192666576421 0.8271419010077167642895984373638883 0.0340578380625963558804949353366758 1.0346513203329285012341900163823140 GT 1 -899163438490058001344523633490591457.2942079701121477482960617243434366 3.6812941202652934956152141186198390 0.0755084899648573013107768264076161 1.0785114115014588725690117593264590 LT 1 -889273810.3704653471461823585889361909880984 0.2565632129344430984491493669466465 0.0871667561291448044044862083091673 1.0912020614317464516340334061302617 GT 1 -552.2945586936561813346614367062209590 1.9925920606232550544553644732292051 0.0582460282035676548463266646926567 1.0600112149551876480490718141560418 GT 1 -25086593772147281391.9758818099680628577182199113863058 2.1285901499129112104437443297156246 0.0337159285628999145930391966649149 1.0342974181890083181524940504936131 GT 1 -64135647075117225407099798842722340.5359482282736777654607535602294709 1.1576159742180925100906887690706474 0.0297045121442812913890492401225633 1.0301546272186073165219185903687832 GT 1 -21625196021741812648.5134499500056815602867898213861110 0.2900166759339374115380969633158134 0.0885555611773500063957917539281213 1.0927246424836121752560886307251774 GT 1 -261829926292109485.6230600859587036096504564886968896 0.4042857634239698283289000784552959 0.0101384437776300136412537356874428 1.0101901878319597886291166191807510 GT 1 -676.9109444131566389909023314216143343 0.7673246382065424228674621174987066 0.0083736506337473907904290291576734 1.0084089065982561677953081894920111 GT 1 -11417739895505791504.3100185261128832253207420316429649 1.4311920700533427007511939247769642 0.0855357526450598301472886761703284 1.0894169072080325265264521917690839 GT 1 -4241325730592341096910253156007096057.2863178895348923702010427903773740 2.6635852469182611775624176984563667 0.0711253024241506618249345202809770 1.0765032776508435986103509439206672 LT 2 -592858116391.7744844200828167044486792287843008 1.2293813632887476947127030037188873 0.0461765537769179646813837393212888 1.0472766915129487924022543425451187 GT 1 -43841.0925519939162099186034184332747279 5.5865007789693003673297162487278525 0.0351704879401124008839181455186900 1.0358038646919194408670444844770130 LT 1 -573980475136232105236302967699199.4738277053747284052433730294571452 0.4754391486861904425802371515149170 0.0119689401017663043961568113499699 1.0120411445844446608720040376067122 GT 1 -4584938971450.0513337265444967098512511789999804 0.0807401174871073568901268935581852 0.0890916848081828855124428069797195 1.0933130287278439184776900096349157 GT 1 -763138975144667316391701322219.7032415384217849612385017419827541 0.0873429887210634142894952396921346 0.0043492316135843312916503871001778 1.0043587170342507987169963648567695 GT 1 -24001281960997377922467238274547367.2745124497936703849581740994800603 0.9205847037263594345631228077311375 0.0497958726233593181276349543469392 1.0510784465462213005506641031259895 GT 1 -45.7739496752711001178589824685848133 0.3174250050926498730841009310326015 0.0375210366556865458416581886981321 1.0382430693246977767407029230387109 GT 1 -517203657.0135553214364541392372276986569427 0.7409116142293930347973818140643036 0.0188809447952583050630683033828976 1.0190614657154560031566273382056782 GT 1 -196528744.4289220783687408297043139099219164 0.2676892733412784789774537641167452 0.0218568585077927249905492640060756 1.0220992582131361519480869793972766 GT 1 -5246644570134436152838533637218.1361593557357190488350153332221784 0.7991679084446229674586312247473060 0.0635913845063558570401441444986511 1.0657033427523844566354014330794461 GT 1 -2286751864385106.2870780552344287913839233013789440 0.1566612662393190214491538184347356 0.0123915619927058230238629300590133 1.0124689775953092356705146536233518 GT 1 -26149831283044162069136411.5234906183101680186986009139618638 0.0322838410386285017633038361594890 0.0910839787313192124724927363275782 1.0955025749155285126982489471974234 GT 1 -2266.5287897939030758210929908905809405 1.7791925985142528782815149091204826 0.0623875506116251194632518266203231 1.0644185823162526304348330437599805 GT 1 -14295693482553487.4194842564787285575966112204600412 0.0993711487817789385733459677075252 0.0185176271717006967755837342425135 1.0186912248478826218082902827974132 GT 1 -35163202334909715908.1843417328915716052688859056238645 0.9486682090747622265859276774523975 0.0964420962356703630007790290525242 1.1014150827197127820673167651274051 GT 1 -1575759347697903694.0029608505532769595450233616125718 0.0039660607931509980451508571012776 0.0610449624999351327192566351547428 1.0629876843068324816288065599224661 GT 1 -1491304336959144273957.0471192681374027472490775857957637 0.4656595620516638240745273515966995 0.0995742688452428468737114934817268 1.1048875928870337809414305902399792 GT 1 -276478704882393019.2551708438694582291942188122311557 1.3287429717938303637655450580100569 0.0710247250594636488782301768361982 1.0736731552258814724213424090038554 GT 1 -544196044143754953420202217164225757898.8237967494350041178770835383600254 7.2102344838407572237755035030011202 0.0693467968674111520726027373687598 1.0718685704207030533099887031861754 LT 1 -14235702004465534058912300.0337132729911106766240892750331775 0.5200371182211283846238515999728589 0.0448600541976130452326979656377275 1.0458974091301480254521170370176424 GT 1 -5118406623883634423345.9780765396121784500330011001618395 0.0745603339768092298088282755911983 0.0431085993170700713138194272668609 1.0440653728786105297514321866704115 GT 1 -1234442641316680245160327842064507517675.0934647155733588064093651490565508 0.3815578314387716542570480093622194 0.0701076776294290001697449332876029 1.0726864819353700905873650373809780 GT 1 -2307.7415829190564833988315031641237560 0.2511222221628929994370844164803790 0.0793958894785362192896292111072795 1.0827251825628380778669486612221666 GT 1 -943200136182478924807963003.7472148521931461057123593479306037 0.4764283291379263234191740575689269 0.0761996006603559119125097152126314 1.0792592487063965180015128064524731 GT 1 -14358.0096119240608596405938055931249864 1.2925765302249340762730800967505598 0.0166276524948419621903187814216674 1.0167674436744559730194699581062201 GT 1 -160080257436647930.5899663572837174100407552993587804 2.6309611027102472947961216562562976 0.0575395888251448498324602702515251 1.0592613646006755176814912900783285 GT 1 -9442680666350.1420516377742532263830344925711592 1.2519890043191111087125978584858735 0.0709677774287365348781709005218290 1.0736118555477895278232110544985475 GT 1 -4601440012654.4955474895407381193593634329164067 2.8190846468752402574841056426994344 0.0613330467819476066306683503776260 1.0652976448169928965719225481969044 LT 2 -21.8753981593530243080232942452354564 0.0801394655057406978513801864132748 0.0647101660800255217456887498682991 1.0668988149260807412267710744872544 GT 1 -29084532961.6352611155718932417076297421705643 1.3314513624219573489090640819829129 0.0117234622104007286181787543888006 1.0117927238498229861048980919379595 GT 1 -228663056315451174543334.8475085000647988542562572821183908 0.3759220076759386866803454666062423 0.0076051661866482686221228432464267 1.0076342329283920124749298787282063 GT 1 -7702.1761124435134126304045894581325328 2.5452040742218192102419523575909895 0.0737076583851845262639880164589333 1.0794965199812533854768366571651309 GT 2 -378218248024268.5301081176911538262722563013262290 1.3057905483966285987820073332741004 0.0715175341548506765245950999554021 1.0742037827563271959800008112089910 GT 1 -12773851396073822145144078969074799143156.9865649094898806610730776637818567 5.1343147728943523875353974930214707 0.0278202260706664869709563079908496 1.0282145390211269059390313760598746 LT 1 -8829316654700503608756810237436039.8061636008993084136865195749135530 0.6680525158255771055392610266016826 0.0370513026382723483203642960705525 1.0377551423707854320146514064793495 GT 1 -2855298431654567205281716149988602826287643.4571320779941462026466854234375018 1.2893690133142565507039648699238541 0.0228839475765821203996060859227243 1.0231498495275313080203187495454030 GT 1 -26.9873146052870681900702154536574424 0.1580188967740770079841046689949095 0.0016629331671846138001805436880670 1.0016643173753204666096660462914524 GT 1 -18288836709103662400004.9125504172950023843820412015020496 1.6582284966907906006162756302753457 0.0823160168719898695371277517281009 1.0859021925861386907709852824400671 GT 1 -5689440954681.0839335908719764995322276020277936 1.1214825234775736995237103438380333 0.0319949571616996345416915351415138 1.0325179821754309366781540788285283 GT 1 -70945944.4734420783960830153487561717984785 0.7725880741364739282678754770440407 0.0896148903670925506298645543017099 1.0938875715952047975307261857975925 GT 1 -753493673339.9129755231922706297736309071992919 0.8118212666208507423482861008942619 0.0475115913938595074961940930346542 1.0486773414977014733517889543632677 GT 1 -164.8416881918456800163534774419509727 0.9550313810304672560537373681108618 0.0378522542103910918437845188106422 1.0385872582070430993611511282212805 GT 1 -2708649194724528712164012331286084.9005332543930136257936129643693503 4.5595006847414570683467142068664917 0.0766650014807534882947975490769109 1.0797631650200412887635988509535017 LT 1 -1818349233009730.5497568040406652060606418052269629 2.3523972499118369881243390718857523 0.0711183560468427812332917124466528 1.0737739498419858794087173844813823 GT 1 -306547048754354281175817130565528883251.7636687030955009964276596331520573 0.7691316756879150982840966484703882 0.0034347268826894436904963182067888 1.0034406390988493282769754512176291 GT 1 -13732865030561370696344.9437879816390248335275445285760714 1.1761302568533161774577612329211960 0.0349997216033857996873763583159444 1.0356268891492920142430949366166624 GT 1 -24357142.7028264791461259123218550095295990 2.0476073432851983137809275956145605 0.0743856171377181797683679076338115 1.0772975642624200066076124947699984 GT 1 -18872989733263617683881127978205598335525706.1628916215807534235374969398821582 0.0353191830888051318577821545728138 0.0965625831013119339808060255469196 1.1015484387549413870017031888051106 GT 1 -1147224000561298704019191172.0310590291008023165484967455266846 0.4678104178860887122901197063889587 0.0480518565563714442246344134396304 1.0492447168470390201065093067636832 GT 1 -1496720927066.7075377252960675521129149342150779 0.3358738913105433973892308676009520 0.0041370842891186546894155069009848 1.0041456656985133791622749553267603 GT 1 -419662285137758444151099682089.6711941354674555673604936844722748 0.3399396708899063223859956351084907 0.0105534921838139676379757059128399 1.0106095752126391965109035007205229 GT 1 -19096093253131096336.5441319811351709391223121590902379 0.7416181743814834718749298860291386 0.0479380346191074729302938099293994 1.0491251566232019433262674968584201 GT 1 -255.0684606570088208333949109331847273 0.7845430213446625631354494571052141 0.0088560760104381255202161880268723 1.0088955241279752920465369380576240 GT 1 -71624623.9399764050097072505734586122876396 0.0145679126849416560274082646362155 0.0236441235864019706527136855076357 1.0239281315565377350499005188265574 GT 1 -98508033816520086831.6397177369218863217950043236834984 0.1086962186388103951473074548858274 0.0720853483890388554714565936048204 1.0748155206722680671534748141693698 GT 1 -91372952289621742156726673173455481.9470789872840188403890778259955949 0.0910844392563788416732431373280285 0.0815897453749171706296047452549346 1.0851110877288636471520111752981146 GT 1 -1613902815767.6173806495670758510865775735381901 0.0589034061747091417683448248889334 0.0672107946486370798633304225540269 1.0695760357605843556054830850030543 GT 1 -1072740974682944060997.2589759121705441305660481719999046 1.0824586705170901045551656317431525 0.0764683827408665048964156093393085 1.0795502435898199357252613421021957 GT 1 -1100307588047310896299565.7004001865901699098702876842737514 0.0896869713762787523115826765259318 0.0125669255714593513024536354983810 1.0126465572341271407377945529980018 GT 1 -16503392784546671727108577967976213647366.0296350008018299588794761382495000 1.2782476371442458842637349382536278 0.0563503064998085627993774952827487 1.0580002691004666871071649183104225 GT 1 -3636485530476227939793700424754258704884.5683484347933351056560249943331159 0.0680314407172005578115399588995432 0.0638722877615691540460306695801097 1.0660033671130980668826356354980014 GT 1 -7449343.0181943730063515864144836289261912 0.0795002245526974882066317495156535 0.0559874591411778562260549056005121 1.0576158281168043401889570604145411 GT 1 -316.5237895519203032201107756681110557 0.0100409477658488398676882189003436 0.0811242235774863174791456141581928 1.0846043383174751658208442613842154 GT 1 -20360215860657127.7718970807633863161448706069733434 0.9933025792133070532375521075064693 0.0332639247421134013348528651856811 1.0338297522624037413350159754644360 GT 1 -184279554351089064120351809227491265790057.5435203860776513556104245060335678 2.2435671538999131720424849017982144 0.0599165691238618181232693910852855 1.0617866514054796558120320703979733 GT 1 -2306316669400160245218858591580474816496588.3497026295671483167923234177228600 1.0384059669602980917287252560108359 0.0951311296762208305634978212738336 1.0999652404503149840588926835868439 GT 1 -36970602008.8375305232606549966326161332920240 0.6561078243903760803441380440504797 0.0374425589589075316651719272851121 1.0381615355971862243031172187314774 GT 1 -16583636527804328775.4500625250658538505848764551083221 1.0745730462151035240293170413308848 0.0049092073410976611923826327102592 1.0049212970830527938657246116174282 GT 1 -15999941567909766679143195215.1621341334934230155495161702497523 0.3244080361938192873520910194568313 0.0317252769479519018644724083919307 1.0322394271646910506312644926536554 GT 1 -100693917046897368.9023422234554076009182638817308002 0.7331135076164180357618826977284329 0.0482964846353148637049924521878402 1.0495017261366935227351587017357417 GT 1 -70334199172.3676061997458826068168931859434989 0.7119540092409539900275180149600652 0.0547038058532410469189842560182921 1.0562569676387095799094172573585981 GT 1 -350799010648.3320524047959180884423327310892019 1.2732336038904264677778783742510655 0.0340660731308614250485152705790471 1.0346598457951078136113894597028974 GT 1 -306396104415339539840259357866377292661.2995743112581614024654942895652285 0.2993304135059820088666593574127426 0.0851872309354719072630972606972982 1.0890358586181506544339234363169740 GT 1 -24681909.1307680538043442821516193300786423 0.7157038187040097377709522118826189 0.0817786372079918890009935082261573 1.0853167814912375764817587501439787 GT 1 -38459383274958816118830009.3762886242574445371744199675749458 2.5315326311747703015554968107292874 0.0278418215756218574154245935062821 1.0282367527570981820282642783706015 GT 1 -1654167574099005173081.7164953142789394878343734987325875 1.4284238189968971231691232863566370 0.0427159354952003308263440975129595 1.0436551034602434651244256246065074 GT 1 -10774420.3499650135711704500057657007287091 0.6842366398923341885355370075594701 0.0782561355798619817355185381221080 1.0814878983368635250103860299865613 GT 1 -1725.8953543713177269683643688215123659 0.5764864782147876986108016164381082 0.0498238481837528927088768972928062 1.0511078886117930154462310380485577 GT 1 -499695454392193.5688320987342063037868439270322190 0.1772289333240497344934620938837560 0.0899739812247064686754563806790013 1.0942820878192243826288455782919331 GT 1 -579232773.1113291410668258844782979161216818 0.0568225769304422100058203913529925 0.0874081382652246365097725303013924 1.0914665281981401972637753286833286 GT 1 -4837490332049100099390999165892992.4178255509345553218022181223043275 0.3114760471076023856392146982725433 0.0866744443660088147472502825535609 1.0906628840335965939832747083481077 GT 1 -190426655907034724087.0134542461018078183841597025679362 4.9199238887165162093019661718012229 0.0849256147994436355508981600141592 1.0887499217097451549169317974321310 LT 1 -842742789.2064924234019761096573121587836132 4.7567703020266803468160715630690214 0.0797980045247454849684621379288786 1.0831620727396963448264242929816185 LT 1 -15590621438271423759111232.6432485817491057283398407344657604 1.4565038491448487323766749135861432 0.0954940634010956670193672992867859 1.1003664107643413793305372702810654 GT 1 -5075796970297295259114160688972550478460791.0156651823073305471566013142516977 0.8125567541802041840476811708008634 0.0113110017753734336692855046556265 1.0113754576572687613142256654345469 GT 1 -303675646.1488068438691245594973288619775770 0.8842578983513990908934773471598185 0.0398969817691177351105462612181674 1.0407146896204627930845226867570804 GT 1 -164958243.6381777421966362621884367090726543 1.1760053202710489856859970092820123 0.0470884320918022870826810498455437 1.0482331730142019943404264255854034 GT 1 -26769817323353824566980044025717.2001729277310122115125632653724512 0.0587130744730200874938434955714820 0.0008987495480664385555961570492558 1.0008991536655932866048238753577996 GT 1 -39309651882283537902010028450.6653285175814853076484769824449803 3.9332169996588323159595339960939176 0.0441191396861845114089916215947192 1.0451219967995433244857013338335054 LT 1 -7040756052111015232537884222730843429.4255717685706411010078810144335824 0.2359140157354898843719947939794495 0.0871752660152590317077072923909478 1.0912113839732273971315816826341161 GT 1 -4626.5997586465420759543311588796183151 2.4948495549374204034581210083784585 0.0885882643344572852778489533138796 1.0970627810889685714016017203300178 LT 2 -54416637977.6705115877045930025550133307254134 0.1567307071957485536255406644313711 0.0718854776381557852487563173265041 1.0746001460925378860181059177754333 GT 1 -6822391221128638550188138455453714256060156.6777696116662178633055672471899617 0.2655673239223860309347273884212988 0.0051869877665510842911916213025577 1.0052004868876803547319620562379573 GT 1 -435941305421449437.5914056936479753601068107244177990 1.7236286511193914691157722760419278 0.0847167772321754478416957914093420 1.0885217285225065074737271129470225 GT 1 -48093986871.0876749478976186528000085602759416 0.8553000252101719749259439134413972 0.0132220183097947630041473139753680 1.0133102074151436887502740049334480 GT 1 -5931110722297300.2691915598779320367731171289622394 0.9509828525185217810618060994054171 0.0185850598353125123300985630649839 1.0187599321237976547350925581622117 GT 1 -8.4253878875511983692382726268877349 0.3549577355273009615199581772855434 0.0165879536612881771874219922910639 1.0167270743958675973632365248526817 GT 1 -23966713460056289087664540679225002658413535.3498472972638342513384643336180901 0.9037188503147682703961230556745078 0.0453613345983504562335778260163237 1.0464223709338970822729633626792315 GT 1 -607644058304520269916337.4146208983843798385159376734130371 4.1308598559029394203041107428473235 0.0609694666022018362993046452551861 1.0629072833719755956066682438938090 LT 1 -94734249302127244024060323347859727.0543286105631494032770133266213934 1.3265877582713635970389170880511897 0.0422737421312854400926740048589973 1.0431932851957591971928183563169371 GT 1 -20196219.2432929315578441877859745289584433 1.0587360262846647887331731608810852 0.0612700419721897640675190007197694 1.0632274257691850735580990763512238 GT 1 -171611974645292055926022038028051576.4849031515000621490440577946457860 1.2757882524947575454130492834507875 0.0282276436845414103223124622247890 1.0286337032726548970295158666265159 GT 1 -34927232661162876625683849927912478.0074495954825037391245476809078173 2.0766852989123512146032866959585481 0.0710445475370289064382257242329462 1.0736944934569292057995088024999489 GT 1 -11323802518532919382.8552099719128563785147057041248413 0.5537935607820313142972834438112765 0.0642613002241579168213521461187037 1.0664190083850311023159506792364510 GT 1 -24788.9021038908526123871531289881841856 1.8109792223467377372517439721603367 0.0536705514127153652480523632634438 1.0551645162361226073008892661964997 GT 1 -4445604166916741127190717564.8984537838144583818163889937278317 0.4065602146819751540751351804863340 0.0534213249463515644084292269648934 1.0549011897020016007003915623282056 GT 1 -13091549541637233952386011488556054973835301.6400263975722886148848946883170016 0.5840606282093319180590129172091009 0.0063652428242700375403842323201458 1.0063855873602669258683434268969125 GT 1 -209780300041430964826.9046796304408775979285287007199624 0.1427978900332482979186638070425714 0.0310821396886140724623163096426337 1.0315754381648466209787803677879114 GT 1 -1243240239837724272172190.9367554616482994332858613323277776 0.0674615281513052835836656796272089 0.0720891728374333422899506135790008 1.0748196422326607175680157355849826 GT 1 -1205381821093084016150086896848440556879.8078544196705820774935366146046056 0.3084657474068882685939810528568374 0.0916333015407283418379798783413584 1.0961071289787753824471605452437809 GT 1 -113074588119956843536875321361.6633420735411840732150010385688296 0.3726488000711358288412113201821925 0.0282031793764174184723716699463809 1.0286085286522549037213578917560415 GT 1 -10362308731553741364068895484386771.0980973831861892801146631946474576 0.1474528710832957766822889113637915 0.0469645610738812204987506778776735 1.0481031893182741436145235781998165 GT 1 -2548388950491462403184050602445016.3921906026857733969903659973185662 0.4628856866319916976176064269026871 0.0309753927229312463688713685824123 1.0314652729070269494483651387425860 GT 1 -2845882896104744561302402422.3662099814236733190370313767788724 3.0202137242366665327359929969813885 0.0481890935384510346136940733549803 1.0506085228923609935985632117761655 GT 2 -195134042782056375910711830070371580774.9779763661350647154953321156795697 1.2530435214228726824563265858400224 0.0611693098805608884274873995026355 1.0631201247434366643202920361763206 GT 1 -33601831836272921498947409367469122226967.7885886545876488629099760187516955 0.0733350060304939528868472851691502 0.0660677972387899751741292060159074 1.0683514314380307690223284476595655 GT 1 -3977760706.9203708077772015712898078872533345 2.1805607369777930826058066105274949 0.0407378966683408769919128873736911 1.0415909324401126576198822078925665 GT 1 -7988020263606548314494722758768127103990266.7971214686060220859702073890117466 1.6997220834790382136504279551881452 0.0432885258716178564737074310082225 1.0442534229254058998841934570356947 GT 1 -20109886300138608806199342587798.6287816006528978415997565549778905 0.6582745375760734841961146396851538 0.0426710345561062043154090930939197 1.0436082000511472037114914577224082 GT 1 -5124785207058409473.4062793917059641034381567219926270 1.0375921950178042593293207699537881 0.0461216866764944131861276614049795 1.0472191698378084177942379254275733 GT 1 -14835849646275006092.9960933212982323112177122360120545 0.0435044445283062929200825440095160 0.0992058218086994174510266714568710 1.1044784845491006300991906874770071 GT 1 -7999152599232692986521.0854342391371314219927963815934204 3.1734203834958109634415159610579206 0.0464996250444011228165852017170283 1.0476154607004203448671193107141236 LT 1 -4941653761.3650038223752601200825324029171804 1.2307851322204228420657182223774625 0.0382818306477862783782908704697500 1.0390338344898842401718931560354120 GT 1 -21968870556375134497.5784938899969727122282784823365240 1.7947780135252605102696085392161731 0.0765418707135326653673554213485583 1.0796298195299055622725738920859595 GT 1 -3738493694627878111.5304941769847741343461488959684543 2.5957661485587467191462811903648610 0.0911252917532106127084088400074920 1.0955480290167379793724883210966363 LT 1 -153.5300186147558731559344694714792725 1.0924444537523829563172389203485533 0.0675034480292010743897059634890044 1.0698898250894488458483411234206303 GT 1 -55313646943905273846780663342.6415587855465485659139234483160580 0.2916789017742002984274356602761260 0.0604485370231181191720197276728237 1.0623526846443807411977359783129911 GT 1 -8733077537892488272261152246161315608753772.9488211472225706049280264102550938 1.1725615247011892560324820686843471 0.0993699039312967401156986672054940 1.1046606538752228613235512490235701 GT 1 -160294100285910514949164635749075780.6628572619043617769695552121116941 0.3623417566183308704564477072237278 0.0074516018948642105521949339039114 1.0074795037758187068183771658735910 GT 1 -242890452057636970359492695459109542.8044235062965519470184688569247433 0.2563688286479212558410891249548733 0.0238262839016069809675495744651151 1.0241147206012642276026306803864116 GT 1 -1395025001462794.5687262274361235916115135986451231 3.0298793773329541993988130620610876 0.0277855375319259492481900618944305 1.0281788584599579023169903052719219 GT 1 -14961765584052769111160189820007024572875.7791807405882664449923996214327117 1.5883382613079728335928654520064479 0.0301011960240169846117558336755432 1.0305635387249787788652106409148524 GT 1 -402620232935653859632234761.9423257242958564535532895590565862 0.1428644523439593962749006151495694 0.0674832200092258138447653818245633 1.0698681329978917539544484058468443 GT 1 -158771128665274726041.0701703142397914579123202778591383 0.9461556573869180706855643383408452 0.0523031669961080134134973171775031 1.0537206242822880654584337297911753 GT 1 -3268976800293750565471.2949053798893486034895882417026471 0.3073244740153958273456594709741236 0.0880229954179761239266176880211339 1.0921405034997874427100205319090574 GT 1 -592296733891447.2013271715094773403125932138868371 0.2738257246850677403977106814068009 0.0461878071452356520955680121500764 1.0472884897495588589294502803887332 GT 1 -30690150402568415510338591080.6609815096627684346350100910698230 0.1118007512863291212982734413737459 0.0563166266840148966505808262006325 1.0579645787219220487702282071258363 GT 1 -279277913440095221816288152661651.5533014963853103699904354181906575 0.1100789779183889929894557898513478 0.0775701012645620711765995877643893 1.0807438964855720485757672534977930 GT 1 -7.4549563280383666125114138411478267 0.5509089028679595333391641384731494 0.0112085744374653221506347624680226 1.0112718638752341966225597715130881 GT 1 -9613960859652936473465528.6334820451804828252885222225962890 0.5372249912235774573566369374968852 0.0767028778049778226645946595877516 1.0798041870772282887779333848893764 GT 1 -9152854819423224923808119482114960017526545.1197950985410808797554188411835572 0.5784891811373685345979360138002998 0.0303985820497855650847251960347233 1.0308702012607569874207479136586325 GT 1 -352006581316450531148038749.6352611600568060920352546276925288 0.2784513066400749554220970176702384 0.0501667442284641668180828463912879 1.0514688300335192160798215495088959 GT 1 -3.4684337987529168495882797998693735 1.2258029759529530502196483816824740 0.0962936601643511525983771438206693 1.1012508166781766442390542376381879 GT 1 -7902045435143564593.4479126502550441772696667876107334 0.1022015394525445870359202207271628 0.0163530101229063141902127822970750 1.0164881964210091991275490814901927 GT 1 -138615781313307094108168644438052.1026445519229017086875106357144123 0.0041159554709540004498683509647292 0.0852805157573335803244052469830234 1.0891378353083936230017615242691700 GT 1 -32152413.7406124216979948030979772595923532 0.2870122506947593956716941557491689 0.0336638461775408918828383623204968 1.0342435199790124704958167538169785 GT 1 -42325043538842994612078078900050.4259263383886838474628481249290669 0.8800608240062014403118070757626586 0.0952231361654468467977752238362821 1.1000669249817883063637175306530486 GT 1 -1114.7043845843965950308171097797475985 0.0226178021333740163858892640541107 0.0202795885272860203227382832831027 1.0204880424373111842243408413361595 GT 1 -941827120002023980481664985.7717219797061525020886065577857694 0.6632743876893133807556203841830222 0.0129158679187338054761177902588493 1.0130000029774780980846208311336759 GT 1 -74588954640064082.0515515582766988682092348072136197 0.4684788384614568363490364690395729 0.0261098629678823651756443044736228 1.0264567773564202626166768455531783 GT 1 -74041569221053864416635529942317496568.7811765134454600097226188002335299 0.8066114360778229365800256441930425 0.0000957103560486543421454405154816 1.0000957149365770534894392742409529 GT 1 -9872420826.5372124759845413832653768447316323 2.1097555203687921147865618327994704 0.0423970240227493182540368690002131 1.0433220169975357305881267105466465 GT 1 -158576320930607172733555057082.3632101421115122615955812014794221 1.2552997220854558078623467414782254 0.0134411610440446025785620912484063 1.0135323111461012276823826435174285 GT 1 -54268287157.3180749460199889615195830598730635 0.3690731101652238738163651801615990 0.0294489496698242821207806127050252 1.0298912756646272607659963594042817 GT 1 -27599094687638507887779865.7187220541033554288510015402759145 1.3103482104520715411166992288371049 0.0544554021530635709356095499794459 1.0559942234640986698905685037681841 GT 1 -2254446229043873964866854196638874577146190.1283483108102404830469923622784607 1.0535910374802412402199194820887081 0.0918112592108764929034491860967591 1.0963030576764330426387170177153059 GT 1 -1199866716889539032537.0970020382993998267966454524591113 0.1563157668440366093799521757380185 0.0569451242702033816391627938224706 1.0586308053272853685725898404189570 GT 1 -1816761152380733089278919848.4922173295520550749790447176163806 2.3230201321580108885379530641059409 0.0610292384554952929281451864479150 1.0629709381239447369039292303599524 GT 1 -1963873554505744.8405365857784421014033156786635279 0.1376057656220147413685081861654640 0.0760994266840844216144169418364974 1.0791508177667021305712557463933945 GT 1 -1435527217354290160622188297742904979078.0859640377547978253289162702357021 1.5506836373247824749567497255481128 0.0910472091005106074209750182670488 1.0954621213574197024357452476054646 GT 1 -4056476125200985452795856.2101598805900607474737607642044321 2.4980057541481715317108939482642968 0.0103464512849190069294729597114537 1.0104003478934170203621396876631886 GT 1 -21511067193577122094021276452.9380311933342410493448990019727641 0.1070819576594195254380743371700091 0.0207546080863699939693661690091349 1.0209730121775415114205091180621142 GT 1 -168744241665692400890773.8586823921788456495844026855595642 3.2611359394996666516316042242123017 0.0551656301433018428090738021300826 1.0567456368428864844072183151612982 LT 1 -26487316049987538956500429297.7848250094947340726872746173252066 0.1535526212828580773590817939200505 0.0149172607624794431218137917867274 1.0150296421118764024526235811724094 GT 1 -441392131635.0156122690087967371155782653746946 0.5867318708987565096289216220906367 0.0816780683800510868328381983740422 1.0852072617991646198543666467747438 GT 1 -14086796765278075578.3580989895927366152949558882836675 2.1892565625775832008608653582340803 0.0096052373539574613740502139278124 1.0096516651856961353300019686466245 GT 1 -1603849885269512157697345768773611071403494.0774661119552373218254198914865822 0.7342353983649464262030286042869916 0.0594654141105057804034536509304750 1.0613068569783405266354713886512268 GT 1 -144353809721099.8020999424978845398666315329081665 0.6161835304683802452288915930017797 0.0456386523605845379369366482852957 1.0467129081390205677936212452816763 GT 1 -9.0170189829696631797394143292771520 1.0015944647022639393258509415595684 0.0111753294557105031684276705687316 1.0112382426058448572176995834948173 GT 1 -290140807163445659526521650546707296864.7938073378477801210209351579293145 0.4207356264691276082616369747019491 0.0292816756650880976075007981711274 1.0297189409981114037901543127111385 GT 1 -4902399910501.2056427473917454091647572485272829 0.0494148868020320298165258363473491 0.0729765417920802321022202358111623 1.0757764082262993573279763273393424 GT 1 -36326999.7210830429891910036183620465021625 0.0755135362062664929402686566406389 0.0111319247254441917502381455090791 1.0111943482947947257957823177718207 GT 1 -2450383394927218050811083534.1881396450944771057106024581600950 0.8294564545242103960957369753148048 0.0168855326232181919112573834937263 1.0170297186390302664518420642697130 GT 1 -19963990329209088185692995078249978.0124406635531126983451259549469389 0.0703803366113267361382899444788228 0.0074207387661127672571579527127899 1.0074484094241695979537946257538127 GT 1 -12803779481975744128545528680251.1901093978402952727775355828333427 0.3512653517307786585635149786713769 0.0816548897075839027139725291690459 1.0851820218705989276794504886361760 GT 1 -3822347370.8960826769782267542122473395267630 0.0751736902033031216187329764010419 0.0203436487580734684216780606008801 1.0205534308118487285044127506187122 GT 1 -263.1712733961461636460714525688048981 0.6469620085241527653695333212803684 0.0400065871947469956706109869161763 1.0408288562049912215758544617259674 GT 1 -111651536618574321451406815576775630.7432239498054095908736440202682137 0.1454412172608936269314675492101313 0.0140773687657245590994342182188653 1.0141773947662589823385724494664511 GT 1 -13439972753.3509061916533699415208749372032729 1.5811536216943062725825140676000650 0.0850139472553080066514249731855051 1.0888464567247659117407060894649810 GT 1 -354677215232876950446899316032600662108745.2888622718510789373870315046774741 4.8077886648136173733086965916675512 0.0889644317836243138071134238621913 1.0931733394367254096581439217963956 LT 1 -40154043394829871183337583245317944.4476434243777410179311394810599173 0.0252123762604243583974379366245525 0.0618806061800199480944984069732896 1.0638780525536603426103231902851133 GT 1 -984.3419672620871557058897104071813677 0.6085700448177204104332170883032067 0.0062133281048972918453201031955409 1.0062327111585248144923918024407657 GT 1 -4048695767196878841519801110062268578004330.5263201288917110964647388616388025 0.9116488346759931384215688690502754 0.0242972699714731576924032701757751 1.0245973188517240292229789607509878 GT 1 -87314280672.1995204226410772755574441256987671 1.3519783476860133465204411049446210 0.0074967054293247447992827795449243 1.0075249469596256709976026308425483 GT 1 -30114591128607235945516336.5073701894386490974665708247171502 2.1190269742203983431786555762648228 0.0683409091439634854131911553542555 1.0707883135545336363919694456104491 GT 1 -25255268149151056905982049317116253935219.6997449630934938852181034948673111 0.9464914087016957010484539339351255 0.0383769728617908742866972284003426 1.0391327687967620931594908502458390 GT 1 -19236616984513578508305624087513662.8505610449787647101352526881326090 0.6289742906884384148846357234079091 0.0624351032458486324798165154732428 1.0644693003289584985896380864315017 GT 1 -16310344.2952039338720916750575613664613925 2.2698074522105780029850587628457676 0.0592191002906887993423073482443514 1.0610450042235953590456708439126664 GT 1 -228520139440606892346385459188440082.9291136114635496470494200493646182 1.0096223102908132484587190116820130 0.0082815338723271198110849089984025 1.0083160162841091875890356488138095 GT 1 -15651897137.4702457032182288715283805799598836 0.0183661928673649286599300614303923 0.0587570447828246656166527234150218 1.0605539843930675834362559831561432 GT 1 -35232381709194153579.5626934877256628424939996562578455 0.1522128396294498355630086149880504 0.0933976226679779651520310381104106 1.0980513182286364997614990466349535 GT 1 -20377089401243909166.1737560019001121921350127363052691 3.4956351188220593700695515366975903 0.0385052103677117463106771732257506 1.0392661329671656427145910326215015 LT 1 -998690728981211288504524152529509708.2051757120886362654226300861132974 1.2060057596012378793339312230678207 0.0836071499336547864668050546153494 1.0873101306305874386024833679174159 GT 1 -16494352598876548506083945189.5079828146859077385560500880226343 1.0516950640804734393668734336068769 0.0853112132459898703113128264314889 1.0891713953279320138450647043683947 GT 1 -1641063308693405728846043907286609504.8785168318853295546441902438788083 0.2989560527206373871035311997189680 0.0767844359652083505216761224036100 1.0798925245805574307664949443222889 GT 1 -191712885120910609324933076580310519941.6994480861934675068703966949131111 0.7728936831411578683851323973119298 0.0819301408369816059269240182342186 1.0854817919509316379204584598220096 GT 1 -158245536474916776.0861439930219778048960910447463502 1.3049617023132539642694981430381609 0.0978232722915445090015744094869702 1.1029448493876958539217499536244427 GT 1 -16876736004137155152297657810.8931974134212505278980507079495239 0.0337378043029076757181785739280493 0.0680042100184590474848509408574053 1.0704269814939362078764141868308477 GT 1 -238368760264098602537392511684061059861857.9812082778523912871048499110895647 1.8337318497372062302586953158732025 0.0954592443789771161890643302032250 1.1003279164321910873655631245499039 GT 1 -8033904431315800304.4779592737122477252140075919994286 0.5974461897690865031858579967851439 0.0740662378722840544388502198298516 1.0769525780740069150393875546384380 GT 1 -53029550667352402198699921570399889255879.2998744891393270025503076784090082 1.0027602844127788513048268234113863 0.0312064867315716024661094744798949 1.0317037824010663788210003487367093 GT 1 -3512021080809400356176052298176444612151.7106059699729169921674473615876641 0.6220963383109358367915614618648257 0.0473994918749933401169037090433849 1.0485596572069462770924006436717846 GT 1 -16777791671252.7872539740940465102160712120176821 2.6192257979320442931602016115947736 0.0547857976528145944322920879514119 1.0563437080235040924997894689849896 GT 1 -574054882214060.5068770276768363338215649971111474 1.6006719497466309448441466436786730 0.0298739330803084223326424041360363 1.0303292500329547428999086320556841 GT 1 -397814133329.0600703184888503767251395070227415 2.0219762920660025186917722637903799 0.0302851692588531511054326371827806 1.0307532396345774150843643399346196 GT 1 -1261151340456802417.6137202141251081147793713154483302 1.0176107067636864479680071882013792 0.0929409498359399162761351915260743 1.0975477260644476879687160309716638 GT 1 -178153299190.4700190344994166815777299295912903 0.6710477063929610914774365953308650 0.0508134269120230141062726622750650 1.0521499000241833413357130378583003 GT 1 -91674526875883753286314239.1923315043677485543839465458435858 0.8581441281579059336528221448584458 0.0148972562371806138309037399945981 1.0150093348611407484409483082053954 GT 1 -15387669694355148543988025285466567523.4214082632705467000270774050886029 2.8826210701134834813209242107177279 0.0072210777029066783455619234191274 1.0072472758800711804027150128034342 GT 1 -19669758515630078862160176.8909102563436270646856786068110380 1.7174697553552882839890174616643635 0.0020306097878162135593272121355566 1.0020326742711181715757943293286965 GT 1 -316906212533972.2698035355044126124029019132761050 0.1485586494693004847252299442569988 0.0258645675650553745444069627136658 1.0262049373313526719230135551686784 GT 1 -14250129869614296036816362966841300361.9451102579896544599354180739508163 0.6793499746939942628627695136346882 0.0275486285533406441671873921012089 1.0279352083935807828942188602389444 GT 1 -17138808489876166805209.1348877086908630277894499699327080 0.3128424830052145034155257935608333 0.0424082236209095282229088418841163 1.0433337125163821124657473296698107 GT 1 -8911241004166402171344031276939084.0149470029031139562948210496431899 0.2716926388727605050433495912994867 0.0845291828602365109500046282093326 1.0883167917931521133160941445231209 GT 1 -1825446415177741922510242970842.9439670403955223824845629752514472 0.3304474364802083674564286143868241 0.0288546431380637501937129019783779 1.0292791237874152489530875509655565 GT 1 -8789372506633524705485748435858622563605.2851900261960521392240437173353535 0.3126395374490469354053927452742130 0.0644962357342439940673607390493744 1.0666701094751731859188019271762848 GT 1 -719577291690540070553939315376901915338.3568164395638744930134152338823105 0.0892372292723894837758170228315945 0.0307139377214636187378444656606684 1.0311954967486846153776244455104354 GT 1 -6156818792784.8042301498009334519120738580773465 0.3404630147864300722204210357614657 0.0075125294476009267418312534107978 1.0075408906290417209212232057105547 GT 1 -8069395.7432088945652435564804452512963468 0.3062271350590786011611386647057756 0.0413422445909155979828350034548192 1.0422211443228696099365048836006936 GT 1 -27297163396.0326055665997599812596749676510921 0.4018091660041696346220830073404137 0.0074543554610458839921160701333561 1.0074822780183709715288266760379690 GT 1 -779387888701518762060211123.4202300091822569616871831218937919 1.9271249538736934453335092233512445 0.0286678318646235732588525284083935 1.0290867804819076357183052432313120 GT 1 -541924311640626505713405202744860.4392733416402199982597534949599921 1.3543212308673834476309127505913968 0.0677854326917032964545724471262725 1.0701922683598688901977934880079902 GT 1 -92943068127069627859666839879197459.2656606521539318171274911692179283 2.2857584459970014870785895478580048 0.0596782132321799347596575206199479 1.0615331359496385727855049657429371 GT 1 -1009431004.5116869272881775817753075815206982 0.8442212942521073769821774434007595 0.0203076408110013655099120118902063 1.0205166757953634421570454126556339 GT 1 -22159937798617960800669692540.7680160308343351467273819121195200 1.4441190919266847856044305988313456 0.0343787598147382381467274789674225 1.0349836125628829252252087814502535 GT 1 -4937090467126945417313718119194358935841294.3990990238459567901982405840367790 0.4839572664875787584641006014863082 0.0884376602762128018600707070324400 1.0925952947459196212015850734201634 GT 1 -6188583152083853566841775.5196838269804254958742010644199639 0.1796043228726462318630238631105717 0.0764421613240540061281893518989172 1.0795218514437546702877689265759829 GT 1 -10985501.4550575218993529027181214979071414 0.0861313159532437443117551970359269 0.0326173603730103751756858797037233 1.0331611641470908957247691420945208 GT 1 -2327799776531976188533938493.6933589069472498243006951167429317 1.4337400079126952310885402333861982 0.0386024163754296827219630391690428 1.0393672369178106797702157113925281 GT 1 -23176832.1277381837383907325600410053890218 0.5957504250075862161995900933508320 0.0727493545536057105663246766589992 1.0755313665259772870927318007832713 GT 1 -504502368316383111277012843494583320.9396522204186066726722900094511043 1.1972433548650524315449764980406822 0.0680683778813724252841415519977175 1.0704958338135299487081329242266350 GT 1 -797158487011095354492.0651671056989285567728983540350707 0.3535330338217577510713980567085096 0.0623228197261724620544565565150549 1.0643495467022818690891504037876631 GT 1 -1528249139601369262.3811995767723549696931074447158574 0.1670858270330859318242908428838841 0.0500525563324789202873017807407853 1.0513486183731349709264176083778037 GT 1 -8235467369.9830595614467073500505721836645663 2.5423003263910813126921952211798420 0.0677647533522903658862190667150288 1.0701700855805213453648458441503397 GT 1 -1008328938930821740080917578577421437829395.0245789287735897481649856524190737 1.1260872129963110906984751177675539 0.0485453597562201943513241164641112 1.0497632652227548238405784067721625 GT 1 -5634172256482445613010249484697.2288868963038908091219866159995783 2.8579587215946425863903707963785590 0.0879093601164255903931061600961533 1.0920159080089981391135884204769436 LT 1 -103140598353209912.2305388402786320908935401207700427 1.4311233520778049985554513935639663 0.0723320716787000170092951607188867 1.0750814460951334999836979316591977 GT 1 -467568010584.8176526227941136385908320167160174 0.4524994423948597725387694979066180 0.0975595849046534621805605361711300 1.1026526130096705607123156485837358 GT 1 -1866087437326651396299463133.6336146822677563433069031255818153 1.6842596242194174076468358401946696 0.0948019699868091180310167271584019 1.0996015415251771486909843648231209 GT 1 -406784091012789797758925922044403.8067059199790867927420355254272784 0.5986217944940608065283065510285094 0.0139057326617053462536857315959861 1.0140033231296752949406229790770979 GT 1 -2149185915642947995706702068961022127381661.2233397658005454632714734418162546 0.1761084430437034247069421461276598 0.0999986483867910701254252434632737 1.1053590138664996238591554588211329 GT 1 -2009459502355839964025068718.0706076609479568156485751450919907 0.3292518138044376896491681614192962 0.0671070970411216999704273466590471 1.0694648725488450478255072115891987 GT 1 -201491223665252669402609598212260953341398.3557701754864986487364217724775336 2.9866684510265106796708217823915049 0.0676519074535836372326937817780505 1.0700490441698507165344185169934798 LT 1 -304098897896217241327836616661830.6023740638494301128595092535179894 0.1311547780198839674586962163297322 0.0370693267183829113945539380612135 1.0377738601372103024582434855680664 GT 1 -452245932338598966612478636000126001886155.4232439899731574405614986851591634 0.1196007104220962988353995826065192 0.0350763476252788812725572916348474 1.0357062974831766780933771703766785 GT 1 -7122395821213315753767726660221.0178996406643862968673768637614092 0.6151421803013525877300216100943279 0.0568880979914758833546830178397926 1.0585703374201862375568524144385938 GT 1 -145615.1150766845631876919184402774252522 2.1961065273269165704189987751929678 0.0760118345300646881091587016810405 1.0790560153554456081791492693637814 GT 1 -945519365962.2519497381144727208156153152216224 0.0168521138368757870703778756059572 0.0141997484034173972552768562877463 1.0143015294901754429520245227370521 GT 1 -6209106735405735268209390641980081.1515378546276141086666497360510514 2.4636587010149712226288550473922039 0.0120219394151608514682075370701930 1.0120947873666139044961547154006324 GT 1 -27006647161344341446.7532179039977187385449788283722260 0.4609674478860048266412477560456423 0.0106494466425093520427588588833602 1.0107065578296577204978202128213360 GT 1 -2258730316.5771491989307782772386600553288069 0.2996620762016349597856142257769027 0.0131808089241193287306003040574980 1.0132684467293765254402863455567666 GT 1 -1223513914603914839310601.8536066843094590870393737888891816 0.9121218664742075803185075556303272 0.0386054050936378458633668043105607 1.0393703456450475972965640229769615 GT 1 -87563628203412989193551312439.0637791336456962491660553938380628 0.6146914261617548278996198717757876 0.0421619327636560019138266824129571 1.0430765474111898572932910464972907 GT 1 -135.0010533593850132649478996889249916 1.1605996812511242903135391173130181 0.0932669189976753505766703040223809 1.0979071599374298344485676345870496 GT 1 -53.4369538637563391762146524721833245 0.5694211312487098853560499569698160 0.0395730606150837432159066626489178 1.0403773648567213878282380355927032 GT 1 -235200100524742945107340397823.3615846992187739152034859451557153 1.9752431757883471154888047476728515 0.0812734526734449486424286336164429 1.0847667555002987287301201293468085 GT 1 -1771541371586281133020.7088819330555118618268513281261235 0.3682063613553553924269382039702583 0.0517608953384014500310821387245096 1.0531485884220876978466752311864391 GT 1 -4297046491149595.3223213431529421519695086902818186 0.2603039797970372646595518287243287 0.0051860712531367139433581480469551 1.0051995655959592858205186874517274 GT 1 -83145405101190118.8080316605989235081446964057434026 0.4365838651083171700575982109849703 0.0233839603248459556053471452228920 1.0236617034927732558534992553854745 GT 1 -57338141067603716919526.2237256252705557975662225979344819 0.2718669429451218825385998907339032 0.0538815839129712046900437892396538 1.0553875421963827042058749093952662 GT 1 -20365412.9125802062639563259297205356489172 0.3913689475051164661319676465010469 0.0633850641963429168942571564205732 1.0654830355269846242423910774325197 GT 1 -16459905841864955010518571326765041030.4445099959154118216849533659167280 0.7273031656883714141052299202802654 0.0435146257430382050662718974070580 1.0444897811157967736221653712068359 GT 1 -235692021756641.7107281899479819424263207774266773 2.1646818511943796505750339091817992 0.0496782988386061533867548779677965 1.0509547189092298078959474151686304 GT 1 -12576876090059531707059374003037008540099368.2686546851141468933697031562636418 0.3182366059874924604806923121243016 0.0015548273685457220473628643135842 1.0015560373670071709070571848803813 GT 1 -22480672786084120329468286967845251182773.1668618278849830001102023017578494 0.0663295878755009904705021922240766 0.0084647218159555432113461804677997 1.0085007510359530253210105935796495 GT 1 -20406686395238452215933459646.9538559756115755578530422044275915 0.7954368854418688804341754199303048 0.0582525154920991864387206414149564 1.0600181034962183368403933769888626 GT 1 -133391252923866551987032633669064339027.2914139249846954581347646359082226 0.8390345146167331541635214950375031 0.0074654033917223180681326871877833 1.0074934089847143403441579367250736 GT 1 -239152.2368526097804222565215609624369530 0.0665714043816081265691238611017192 0.0435393867627768061537973428782441 1.0445156689557063771532747808088801 GT 1 -11251404379924538858683.5563195126961421494014805883382663 0.2559300525126851345244351811032665 0.0746351071356401467940231731963319 1.0775671404837258038344992179502536 GT 1 -69086157625119.8264838727936504560983279247551990 1.1928363025567288489172721109998971 0.0107229094206276100858077113115917 1.0107808141237887837257790689999825 GT 1 -1693805724893011706073413596982545499612009.2569837215847154249417687257737795 1.1965469023251117998106459846021368 0.0046286150473808703557154318962253 1.0046393602557857287102178733211008 GT 1 -10643.9120395465838500898290723116076853 0.8060775445286944544666255387673113 0.0256843618104448749841137370686913 1.0260199639873040011121762834009762 GT 1 -1374769383386237349376569547096607174030.5471781796471894004768900145358593 2.5204619099684579430932023479365881 0.0701838967036399010463153909902653 1.0727684507786593204359275405427304 GT 1 -18355550843712341380.1874802687039020961161039898948199 0.3839243157259564466739505208164966 0.0874336150030779392193219270937374 1.0914944454901345527665608406734731 GT 1 -4.0451979419429879666045382419321531 0.7885973267790157880712182354213426 0.0372020505314863245297337053288028 1.0379117028339907275093776670281805 GT 1 -24.5120534180623502419828285364495516 1.8651740761943514893081130823492567 0.0600848721378980687024395390513668 1.0619656973028327054858948397393647 GT 1 -118024250596190.7541786052977977272011603344667036 0.8591915815994062805475891811205561 0.0196266265003820627011784830838210 1.0198217865101059839768836062129093 GT 1 -166926979775776351163400152585358637125442.1596085032126069738024540637884725 0.5421118722768240160645149673040690 0.0141770433004137205116277882894338 1.0142784976016187022734961665060492 GT 1 -1181609109425559490.8741717859368924133749312265692401 0.7987465391890065611106268641351593 0.0489594748976784234712691239700012 1.0501986041981610006729974991987047 GT 1 -2157571439106600913929952935004729505.3808553645673520538107576105976771 0.6382481845210843841758312956070662 0.0250806433952888528320139841576322 1.0254005225797029400676380698878005 GT 1 -475836466917035120877996862.4505168253614995556626832667090793 1.5009918536584110298497924804319418 0.0284563083740127986489188363723626 1.0288690378089686839538391159544782 GT 1 -1.1648785615770093258705599915764329 0.8073576502802087665670714897325765 0.0417446051352921552754430220726017 1.0426409448237198134106356297694736 GT 1 -19217334.4724668176660070970033692330860298 0.6629900143804657705185343899832652 0.0098353719942651584980278375563626 1.0098840587634193446252868023392876 GT 1 -1037561791581.6431048998982782607365547019821506 0.7401249664208174360927662429164399 0.0997795632821205799731217207782286 1.1051156159616723620377286567553647 GT 1 -150434220.5750538944865213881273262756598136 1.3879352302658608929458798929469524 0.0012392811260842359708316194929061 1.0012400496699658730012735998830622 GT 1 -103882720100634200625615938685839467.7279232964234137772651806297099925 1.1012225243511874003204820403181032 0.0126351803434403058913101619930772 1.0127156830643830567507345151575959 GT 1 -11375736078943329252795188306.5940627515699904398142078071761133 1.0884232462453978586426167721553180 0.0698760201152948416115724883105066 1.0724373900160669389532877354241794 GT 1 -308960751009582053719250602899665880591.7871720396463655443382227457389789 1.5685595657198987988886650055015769 0.0622775539018305309657782215420946 1.0643012734449833282727244967235830 GT 1 -4446367.5143231552891114660719123799510980 1.6913246450851513095367792160855167 0.0829259127363076890670064338378593 1.0865670168990811285878489483138660 GT 1 -1156078066775659074236079148151.0330582269035494941451312396473559 0.1641793911064857595518439854558908 0.0070807309003981689906296431133127 1.0071059182423896018191875012135471 GT 1 -164868396440183363491913866731706128460.5892405059047923216168914738648293 1.2067301365692371119773668136744896 0.0100669521767646672630441270527278 1.0101179666017873944443000664385444 GT 1 -2980950772655269116784.8682084792379433203592527427278573 0.3417044495280076735800519233730138 0.0601472681887827449054323908570850 1.0620320842777844274782079511241687 GT 1 -1302367955.6941078465652588924038863870696333 1.3648771853188086731336314043864266 0.0378786380767554624487544080055045 1.0386146804280414744430455844325479 GT 1 -44725946486103753465075523195.2756349157135984817992925347915284 0.7050118272010081841811486957745966 0.0749295565028636573367071305103948 1.0778853892373274222815282768596190 GT 1 -2321883402363769216460.0799869755029877136327750070479502 1.3598571809981760696960574706130401 0.0016190650128257835341991741173298 1.0016203771150274226766620229933958 GT 1 -1022904.7075999153164212906668526800909555 0.3950069790265527862421565219901757 0.0758895487001758051146136965433586 1.0789236784455451077572620042328182 GT 1 -18057978707915718.8033495053845200379725693960821988 0.8358659403064850259477727738592389 0.0499558501307719754726243474107703 1.0512468219208565263295444174406977 GT 1 -6323532500665718.7762395337401764097849190097908915 0.8233352758679253005196356944144297 0.0400392702028978855683404408592446 1.0408629018182992013448262873276819 GT 1 -9375084808385.6967518228304096756493407153769509 2.1534254844284075597154587091968692 0.0619410899096073256258024139513364 1.0639425280136763432124609255038808 GT 1 -65218.8533627628283804992071846114790763 0.0962397337522489430067662718678960 0.0380980322763287490753713952518639 1.0388427381622108885743206978427096 GT 1 -18427534016035546576.6241239472620909759803296227937520 0.2950072449740722423121985723162120 0.0862309203534713590489662003558121 1.0901773875380292870869834453017978 GT 1 -6257833457385028.8952580457819789885809145310339532 0.8763484742086348544966520702405595 0.0692684212078972486720000846734888 1.0717843582144775568655539548082444 GT 1 -12881735013205014530997486749.1473049763976609108749442220870013 0.0899678294803977257383965409604629 0.0456621861537876114583566154260934 1.0467375676492033549564269208098116 GT 1 -6.6323408705592627189354016164810934 1.3394101101005592625386103614570660 0.0510228054254990273594879036637987 1.0523705116678067481035884531843910 GT 1 -5335669.7991816385089288304356600190310246 1.3426608946601013352063276728385550 0.0271585038732272485125341619902333 1.0275341122996746266404191521978554 GT 1 -16060044477332332080455636841626364.4482523561808513433926762726508815 0.2954998712438403752331693856820527 0.0953197957373707312236358269104154 1.1001737631861536343929628558316446 GT 1 -4055276.6197093822829647539406498144640490 0.1268532140473596019794427818267861 0.0387886758575701655715917558412207 1.0395609939340928127178387717583908 GT 1 -161351923912635225441.3119711677471930382248981809701435 0.5630998120683256898360436307661145 0.0782590979854410998939133818045653 1.0814911122561028469673966420782153 GT 1 -18176855482667274219949081943189.5353027813490068313849602726798394 1.0326533516839983120987796504659602 0.0851328706937838873484415937792836 1.0889764381241588692263842279869908 GT 1 -46023662299001231847255212141723.8202960845453263757173823274590717 0.2677194490173184468949203475402501 0.0314340428882808777496031785786056 1.0319386961186647839165858932232603 GT 1 -6229550622557301895041706423470764103776.5123700386116834751513145122121488 4.1781730235447936864279999160632954 0.0160130299434729112302272238929913 1.0161426238300296720529303844375243 LT 1 -668338789655125797.9166552519516327715807629475267078 1.8810251942339926517410745118038555 0.0965761874198625759369997659397360 1.1015634972645036549205018299433903 GT 1 -9759247404471247741723475496032033654776763.0768806246244254168988608799998106 1.2845937427335883337372085571613861 0.0744799314003362614155232584157792 1.0773994631413752383626746746621428 GT 1 -17562298332142009851083.7540773120147097899263826544738681 1.3224081809376249357103131730333914 0.0441692820696674661773456132036446 1.0451744549046937968252962269195507 GT 1 -1191907938102505453824915048091190.6437342734392679348944001398470713 0.7479141804115498977831156156301613 0.0879915685816421491813642327700306 1.0921060439742706194409391058340872 GT 1 -660.6461480046068857307574721115147093 0.1302722018359676888785642956522125 0.0630222951139496988107926747827110 1.0650957911718904186789184445208868 GT 1 -368987862.4075623395669669077414540435391572 1.6726401282464248022147642890589345 0.0719611007196943248541359023420329 1.0746816297465275196773910097171984 GT 1 -10362615087449360253868075.9352501115288908135557534805097708 2.5399299819641595349338286693734028 0.0852004674296238187283195163722968 1.0930153082377854823784588758360843 LT 2 -8662594447326107480822.6158224119913381342635766600531011 0.1816969489441760091387261791813451 0.0942197209707085328469569082459174 1.0989585199790266176446806448557582 GT 1 -9214359693854.6804923059281386452397688584501972 2.3000830342073175859776418904102885 0.0440879643747513177125104756210406 1.0450893831084869573877766697642064 GT 1 -3277342613001.1433635102308216625845140976579061 1.4167384768378112371558628398035713 0.0727829220298086566522511534027334 1.0755675682627697387306240297821241 GT 1 -80802944426648674356950751166375714165.0914133866316236731164664099855893 0.9360642906157910982402322065581359 0.0534957723051615695294113661029412 1.0549798416815216698940795971559801 GT 1 -287120481438902394641123696515369.7325806438475700710005914742969589 0.8705613271436109439526048690076317 0.0420809197238914754676358185403843 1.0429919719315493299865245083339464 GT 1 -1494910743.7606500496479320608156609574893299 0.2392937787050695245178936296165360 0.0772842176358544069855985989260418 1.0804340199983941645625311082967436 GT 1 -38672606085.7813029769502247128446308911580208 0.8358633581405802352292245349684149 0.0714151145333233888276148450935926 1.0740934802176941401505405406699004 GT 1 -409304118686399524234802324285467230538280.7832416100163877602319022826992255 0.2023009335298781327401330973026238 0.0391062226111383447506283862384538 1.0398914095354084720338466854833538 GT 1 -11134713940272.4443623297627915345059905899203701 0.2318762236172223717270726721745244 0.0728823550595250281579117326507850 1.0756748121476877715175557534273779 GT 1 -13705103111945523562762.5580270051467686626441208638347190 0.8802339025172755750685384160566062 0.0060298650539718282902606749272019 1.0060481181028602549484292393565946 GT 1 -21622564051928121694.1102603170226585903140696411942290 0.6658053604079864408841914821615139 0.0605348277938117970619356718468807 1.0624445313786124813348277204064502 GT 1 -51948463731001482.2966976659888932804070961099237875 2.5447927712585462521189053849432458 0.0005696961455874360699430290112276 1.0005698584840952607624747296669225 GT 1 -448846682872252282403625558675401.1623035772237921767419038323714755 0.0110202971581058187227842779942416 0.0860875814902468772590654833685625 1.0900205343186221222635593328538581 GT 1 -5206785768818.0358866129550876550909559827719733 1.1619092353318147944964766410649094 0.0577406152270132550216458158743235 1.0594746869237740977746293170498027 GT 1 -497420765067876359697200394311214014337.8414289542228959160970626362718848 2.3321483473741868341311749067250876 0.0406977505582421725416492209693230 1.0415490822826795437121955781580880 GT 1 -122482422965.3923577662279319903451046836163048 0.4777074682672880172111085009384148 0.0243612692579160463850651890344875 1.0246629140207423333153471036923471 GT 1 -131958.8710432482984602824636884162107094 0.7391777453766993320144392850789400 0.0258444772211455991629207481913829 1.0261843137752490787400717286622399 GT 1 -1835146234204931260.4155518386077695391915256870914359 2.4147256171159768844645587230378561 0.0900197447940442240219080962381217 1.0987816759843948003207194963310235 LT 2 -3.7663458633959824297314627672287537 0.1817799490809338096950241480672465 0.0673350154112904916672847053041344 1.0697092159410539822716013769168363 GT 1 -149453387191.3718061960981674124241322976914447 1.7896461896782647370315503731352949 0.0880558279352474467327707128656492 1.0921765056227906206433738048244778 GT 1 -6669597523404.2152328542817308593352866917529956 2.7827110120939465000707823557828394 0.0588421831379591346669740296234843 1.0624833157452285183265554702605122 GT 2 -11798028959846.0077748924412297876857080062298666 1.2728393430817712688104067513714614 0.0373861726646761768802023464080354 1.0381029576460462912432421531771935 GT 1 -1212872520569632944906511285725325156472.0683440513518798036208986287811033 4.1084332007201185171033147904963424 0.0736582362455357161753265791099034 1.0765120370987082836832483171885587 LT 1 -184381.1040024662368515256742231382998885 1.9672088964309212792141289435608078 0.0134539303891546814159389562168880 1.0135452545482029763898574280514857 GT 1 -7.7801213228091481673717956401906630 0.0676597831829497156946250455757647 0.0229544345716953265302422490665890 1.0232219899221638299420739139301308 GT 1 -471597236686675291615477941406989657011047.1486099571993674263857969187447251 1.5570274330880022634680254605073041 0.0886512919748355201561060122101824 1.0928296799616596191333881695628623 GT 1 -19593167947945708390546679600.7432464798875170930206752168500463 0.3080368013876262841859320698352528 0.0826457007616556296099825621354146 1.0862615135838323050347937564117124 GT 1 -210683466077783997951083.0731255942959483264957398385466440 0.7232493961008773392879082199083740 0.0603463655388591330701646234518250 1.0622439455988141299913148692902140 GT 1 -59639494053129754023771368193361870200.5045339368880251390980600797991556 0.9598898372811052672553995422477427 0.0900394595832329002859444719290230 1.0943540425907846190748632351147844 GT 1 -87784172720795382.4432694243408108204647797175123398 0.2618967553072049946119131017022558 0.0200093242766861459744982828728331 1.0202122219308303258089555017050768 GT 1 -9133.0100957965285388243050572792095273 0.9191471213362475277393361891620552 0.0404964398457477165513516014127606 1.0413392531147394548528998578513509 GT 1 -417051264967607407122008839580558493513.7007370234612513209576881195115385 0.2469946876673502527776654161866533 0.0994825131815516870749992517598344 1.1047856955447357662403762794889336 GT 1 -696266122811478694689414531101083613957647.4844011213371696946394578435780835 1.7050213277204637370351884551148283 0.0023195556089164382691456611436408 1.0023222499452762321965890227738373 GT 1 -46038854532652434344736312841564808.4676177315925261848951383034469755 2.0460983246265505632281500795052474 0.0389648302391695729796476349919434 1.0397442736358909103848462441921952 GT 1 -41770087129632042827444674109769025408.0958380210426242885555358299001735 0.1600968508073011905414519512888046 0.0100401721369030004021069108954528 1.0100909145928709860878003011571665 GT 1 -321.7674138724068152672244568161232889 0.2981795171155895482659713265760176 0.0665503133532591137504456883333956 1.0688682149925298715701514071911866 GT 1 -31349.0131381911473194537051443439333586 1.0448195343897335597338098894378009 0.0050291582523347047887843626503664 1.0050418470291534091500402943359699 GT 1 -121522408201.1995321988731931848061881163711380 0.1371936391164712213181395001805358 0.0110660924080431425194704815939677 1.0111277771031429223109836194642242 GT 1 -215573378299815630283243724895532263821718.8655558719656677323921345502319718 0.1841832172208871189573072626236530 0.0011035516792987083018346472044947 1.0011041610408023420887293164823581 GT 1 -988631925943380006200413121.2308158244038326602563952960527531 1.7019697752470367690373352068037667 0.0590738763130282773481564319175530 1.0608906507815948738274802310924587 GT 1 -15784861198540861599719417771544946710.6383765725609990119270668591299701 0.9101439298992103455524026450542665 0.0382897697932866085738421216688158 1.0390420896924196668664453924114895 GT 1 -13410767154348662178211523732147028168024399.4261730093754733081581833321558648 0.4504178507314375419376831517323186 0.0835874560658055132871402204556393 1.0872886402225883170897242943377402 GT 1 -810786023.1317344484636001480157128675796030 0.6906309255312362801276263078047048 0.0910069400492458283718872345250799 1.0954178196514557634434743751440182 GT 1 -4663605.6689199020623981692700105166086019 0.3711706341310761709210533367919676 0.0962134634623105360242085704585508 1.1011620786221195123417451782866355 GT 1 -206340767058471324863775.3105816941253614786857183833840314 2.0907845317401763834503833697677365 0.0843528286702387499214074381862111 1.0881241726482870462726715302226079 GT 1 -13.2466531069938980329125882483347913 0.3366351577658954726566420291296632 0.0334363543692093958209682750087774 1.0340081308404277885656635977458292 GT 1 -100542892564.4588109420809821088597576249586378 2.5886564752503356172741798573882483 0.0771346033541296627286515787217491 1.0834936755336576634416828216252368 LT 2 -18268329511273870584.5315492188200809139095524333100493 0.4176498573208710650284593014528068 0.0146460109530801992407131106416221 1.0147543226284146619731929337935973 GT 1 -1.2042400657567541335306207818940855 1.7430469793316664935832698746276082 0.0093234348086827244281526931182541 1.0093671700812386236052408179750098 GT 1 -12246049686180015474582.7178692502401303836898697477951782 1.0468424183359832793548029501946720 0.0120469697264766313322769033290555 1.0121201225733252330013302095283260 GT 1 -95232.1323302752771089775963219983253173 0.6662189713382786785326011592392154 0.0225922212341576170773522585459002 1.0228513355468516008668285982904716 GT 1 -1468799290521867373015.2948282456939768327246642300942689 0.1382159580569198526699250280065449 0.0028290892089244249647884391513846 1.0028330986456220157519996515540793 GT 1 -1704141704.5285641766462367683584163359131531 0.2812929553188471994067238367458850 0.0644539779563178069633584227246639 1.0666249393484960933794357708664256 GT 1 -264614916689.3297081806628419636702241699319888 0.8795469481398327012652717564133680 0.0592719700754021407634315149448897 1.0611012035685939965337754741395050 GT 1 -744310541225.2693655493508142825877996454971443 0.1365980456182980550300758434269749 0.0041146062923918065203780763979791 1.0041230945768294700786887399096739 GT 1 -24145842442823413337026009390807.2547378603519009748978124499788803 0.3304199544736656710525326014693120 0.0930537619551957587490111713148351 1.0976721051058259712014257421143651 GT 1 -54067603989003323247437123313422.7295202776235607645432572293740526 4.6496542231257357791189171314992472 0.0966072388971252331758128406280376 1.1015978687416286615481276741220074 LT 1 -5877611.0732581787584779337477778847847036 0.1251275525479504057618463411027614 0.0546954005299323352231573031686734 1.0562480759431838552915337070564688 GT 1 -594825902436047654.8882017401169862427199684975046718 1.6133644127970587636279714831282271 0.0921627465200331473174917494071835 1.0966901527011241401273241713036807 GT 1 -108762603078059985643179531046600690407.1424505517518753519000747946276800 0.7373137602619853612073635461419095 0.0978274610395416553524521033269322 1.1029494923335761566881734142146358 GT 1 -85055254277044042166849053.9685026923295499182110097417426141 0.1468662943862393569834239560799072 0.0663962442917093347286930833089113 1.0687031751940920133790101046777816 GT 1 -4473137336882329759299245361.9093853584920114019811192295512380 0.1195377517109683425604771865966630 0.0413885569601953547266437232590896 1.0422694550862472638476350383198739 GT 1 -580274.8444008079328102572435097943510080 1.6179184316281210929873701977508423 0.0250237243453893010523678861122069 1.0253421409422716409302258833037752 GT 1 -1340554851915849811182.1800492886279335361652950682512524 0.8777266938059593769308481343618011 0.0237513587394172178937726824636681 1.0240379696237473609300650291988436 GT 1 -3603855767366.0663257424677295681836498937110385 0.6853851927340237642600997671588223 0.0934910699539550895313744345515376 1.0981543977093938073388738382667705 GT 1 -4852030.8677498593930226095677371610364806 0.1867520053534228776517773116247424 0.0664404239343469548805102277123182 1.0687504979343087367059993122672841 GT 1 -1835320379346340443663.7998986140519807441688322843237877 0.4132054650780233540697353621035634 0.0954032745227333187702892998724332 1.1002660418020466984890690587013997 GT 1 -795847574218123.5139867047275954396627824034750118 0.3736169068944235746735080058967341 0.0677933927016381718208707576769443 1.0702008072136894096670432922488045 GT 1 -3872076633724279840887868500680926.6068770051665664048494287481283260 3.5299292116442807488093921457080308 0.0472872643681609126777939916154043 1.0484418524235806494623101000071717 LT 1 -5857920959766105546965.3874915326189373284435515086339326 1.1513979856330247474730614706712042 0.0942485562040189148356613572565523 1.0989903551745680413008243751284450 GT 1 -650930901774425045347747788.1203560457298811069153968756823151 0.2391432621118832973134144590331271 0.0138179319276309131453902584051632 1.0139142882083957140119091115386425 GT 1 -764402906815.6298550295319426838811641279153969 1.4873465157276226310355840178009132 0.0977994142910009466376163067370619 1.1029184048072108929968640296612815 GT 1 -9173233120886352588403528004682318.7479057739457928690127502204421190 0.6056525000571318685158493935417484 0.0678636972488793209656652612169465 1.0702762274026423193124279600418098 GT 1 -63472768492265679010619716725241168717.4571729184931843262936414359408093 0.3726534395460255992073231673401392 0.0540803740671785040876073176670472 1.0555976755557802376862279995341658 GT 1 -906.4443033791832950944999217107722493 1.9240984166056922083330960993220350 0.0420768654366332229175787956217946 1.0429877395503784220232434056216953 GT 1 -1580033171660706123214919631221151419469645.6343402884351621160705872133269067 0.1336421617693754256248247991489181 0.0031820113503463475903615820973614 1.0031870847136549777010324952203754 GT 1 -10753233495254.7045657988389441094959711618306902 1.5318343814392208462013274871403842 0.0740770524239186361020366112279090 1.0769642577591337782071409986886778 GT 1 -2280346254106834984568232.8047547818558288332297363057426183 0.3567166275807648971035326469975126 0.0297742584014402927884199310125779 1.0302265112630901992455113521790856 GT 1 -6742.3060300650446656058148889912119461 0.4181859963468913255308226379798691 0.0694910912131981493205690230208934 1.0720236287524324643190188340709173 GT 1 -310005916271594321810.5214930272176045116405948545391619 0.8176129763000681149549998856219201 0.0156366703714509369420440073310005 1.0157602126538597544826040224510010 GT 1 -112048300331161636463786368495.2595060990264482782907751862502857 0.0617477368669360957724370481077953 0.0145304556932638933270119321118773 1.0146370566652341932332487193953569 GT 1 -127555916831029481732825169624869076249.6407009388095934355410560626461455 0.2578378752561401825991414402846401 0.0333996310489922912563754576361610 1.0339701378714458304250264207529538 GT 1 -780593984097349218200573532606729.0249680441483344591514356523482552 0.4024769449185396552880315518954630 0.0720032674153560337438257358022713 1.0747270671238548011608662150141862 GT 1 -742719216282975065470491554766020682.3969174800289646900757216268016957 1.1892538633598879523330688069127387 0.0464064858924859233086014465214974 1.0475177841753961820244112121739165 GT 1 -3934707939969889024073351862849614217160258.2195482637460435842531194716988146 0.1279798161789426652381366607070427 0.0761805462038149979231659803117351 1.0792386227572768981928389469609961 GT 1 -4207.5587973678716567302803154509735028 0.0785008146327423092397720876418868 0.0848320199420270069917996157600050 1.0886476457934241006343664001859166 GT 1 -248351544167703162759231784426394230763080.2132223709836870048105421262384520 0.8214713242461308448429363411044585 0.0848903959302755149663346289576473 1.0887114350118186693035324281575268 GT 1 -94.2732739357904534607016799989565201 1.5805753331499867022242869061933403 0.0362441903373508465675360565168214 1.0369173259384360787801918160915695 GT 1 -587179349791683809172031.0030004166082796987777182391736447 2.7442994430662048859866464579253637 0.0389031931507076925789700252139788 1.0396801395501641739910540528986376 GT 1 -665.6142204950865418239005701678204482 0.2541682215158817179286608776862755 0.0315511206691686834408348426614049 1.0320595808726973333769760270864742 GT 1 -835969.1277019772859154719177752440096417 0.0073540409151898804814452782597158 0.0136373064240332169864492532514142 1.0137311486339592807036738813589274 GT 1 -419075472917200033901835.7189642295816337515992201918430509 0.1647235358565234058718052022703390 0.0002036025644598530758358705209099 1.0002036232942757905932113216229756 GT 1 -1922880073365.8189473619430555044902384314950025 0.4423543900025499800316361768686947 0.0322378758141192648396606887063114 1.0327689613818488206019883895368393 GT 1 -16365094720.3045075680545375977003765002158919 0.0768559720198051658738899676275492 0.0778261960092816478516897383846667 1.0810215656087408937053185517326147 GT 1 -2458085035065085692099096264.2391526815475046285839649769806589 0.3391172359249558004872731081609727 0.0791115607426926095542407081873957 1.0824163800774441411511707545182650 GT 1 -529784340012801.5397082539871885495138377121852496 0.2381179011015944554463332144425414 0.0596825974876273053033622838613685 1.0615377984659493772441410672079872 GT 1 -9551894880297131529170.8581406154020903153145648165959350 0.1401487395954937086821180396839560 0.0335732900081175901034715675202021 1.0341498135329864419399738249005626 GT 1 -60579845829624134745327.0651367539783791866644791379127173 0.0291807593790298545833279184421346 0.0521866582451120275719008117968598 1.0535976929968809196802585671725319 GT 1 -13381888803937347725.8818276787502349645910563543669293 2.4637805877652323889277355116153965 0.0465946154057401714378574749058123 1.0477150884465130959758042058988654 GT 1 -23187895792536221422096329040091.1069945414039481687697964830177964 1.5141194747515465248819268406869406 0.0995946751694790041812551970523842 1.1049102561170677231792343342200643 GT 1 -154225961441.9263601383355554061581566071962973 1.9358682381264909525835371906832649 0.0865598959715378254803479099152966 1.0905374728797189918824067120209357 GT 1 -1668601543354002259442280508992820720.4911287458328033896661309837462201 0.1209455080273504619126037465979409 0.0134601407623670783747425263375685 1.0135515496346172228611982759765035 GT 1 -12551633091611629.0988402175075249406923217045055297 0.8777788935589836249714853567739400 0.0448662891311252314518911631521043 1.0459039369210647185223796326130648 GT 1 -74528080791583726809736216582575.2471071558543738812271611662494335 0.2397125368349600370282377178732866 0.0163987371683782260589552832791510 1.0165346847535490149275879050019528 GT 1 -103400676395745706891377.1199533979575154927973800280570685 0.6786631409402391675009725717723840 0.0570569535474436750096085520492984 1.0587493942992625483528774147505739 GT 1 -25677039969164237015598607743700115104410.6577478726229621418728292824139729 0.0851759105287260582508646562383063 0.0038421169274618431910026750740307 1.0038495168189506978892086130250616 GT 1 -124.3468068682104066682903974018531868 0.8743101043331064261528930452872508 0.0268504209824484140842065868093012 1.0272174788913431586326978014781020 GT 1 -3512610158806294379984.7579891089524105140593059424862271 0.1667451678290833231546280397192775 0.0279364284085151894689000901183897 1.0283340737884745994740095880582483 GT 1 -237244387272248485925004797.4175565812992790166817449425968316 1.2982009302052575059996385566240619 0.0467562374559941776719157577208612 1.0478846236238515199607998963421777 GT 1 -262225543923640855805.7445984341431088427855020382645951 0.0393499334093821051092286033424648 0.0996962741161395995950183559345769 1.1050230993848106146842500046474824 GT 1 -49.5367544342414584653503562719963769 0.0109874104841838485370009629379103 0.0778177435658691633023734253606582 1.0810123998694415127652219049174199 GT 1 -1.6181727747844179519344326881564267 0.4909359902282724451690269038723363 0.0275303325882245899418240386617097 1.0279163942980457449581057591042371 GT 1 -187777464.5291406393926399698218406718603972 1.1066165586776502581600402793974777 0.0266396719049163714073275388610860 1.0270009384282451245218532484015015 GT 1 -208621365254188433588047927353405298.2299852384846451901221129319955278 1.0832003212332751905554710539712569 0.0171692033465190779157044764446098 1.0173183031998110176030393379287432 GT 1 -213401903.9069597044653533686298342616570622 0.7621476427222931919131801988653196 0.0232869286870093422879845467524859 1.0235623534781028256523769757951272 GT 1 -45221117318465711096302949676.9436193136273193457540140796065065 1.3766853986105593233414724605555765 0.0441331038149861650412314429849485 1.0451366055561163944124714877400662 GT 1 -587542504240913551.7999139426251072500491276142119106 0.0055353114818480184840262972304931 0.0937263942034627143907897489091532 1.0984140253770005143660052793398983 GT 1 -12668813.0312925998086794530938587696075735 1.1890470536293834361817503384143374 0.0788892627177080984117470738831919 1.0821750140346195894185486086276752 GT 1 -354712713942732745.4329888247857967575045234542439523 0.1568859534182273473007872888865143 0.0916429204123590160823390006078069 1.0961177182293229863235970642851879 GT 1 -34058151437749106363972405551120739105.8815539035340819057917569501560158 0.6484978290683850068457459166446671 0.0894695514431626186078107922457353 1.0937279387955564108517559591815895 GT 1 -223791080.4515489919343995348889506922833229 0.8330699217886338284180989097142439 0.0662303382189415233242482795319004 1.0685254859631642342789998836411024 GT 1 -6764182437320950952261652.7749469782122774907306045770545735 0.8884501694802587691864466893255589 0.0828912870088145523912288399634379 1.0865292608722636942638714306240224 GT 1 -117432508449509482.1168909487495359803295243489725575 1.3332553593714765652780927723940447 0.0381043632962013374665339466097539 1.0388493199563227441026238079297377 GT 1 -5673767684012368733211.8248335609626821342365991974531831 0.5498714399448122670501398661741337 0.0680257898007853116630621093292807 1.0704501361394778589289791053457629 GT 1 -2386578863193305707.9532488698893755898308296999929131 1.0856668692843111835570376429550039 0.0439382476669607123130346077399684 1.0449327735262431712596052183789000 GT 1 -3486633055034612804926965.3067039300209273051393574844141368 1.3692528527957022656303082819891060 0.0178215019640932153405392073237724 1.0179822172518179462883521239716712 GT 1 -48.1697898121489496621595955875408689 1.6352237309545127710496861240781636 0.0426514432155826061567411872076653 1.0435877356749827189662394351389125 GT 1 -3649204250568839134183359366956.7057342180958930526954900389809531 0.2259221990180129749845564952783496 0.0394443143744263732330962876708337 1.0402433227897355552969112856315205 GT 1 -63369234.4008895452883886613335201362042261 1.5915861100307969224488168154263841 0.0238054077728572363214303234964313 1.0240933351601448264758187735588801 GT 1 -523720.7048164811600785710074422115689144 0.2303971125341199097192200282844799 0.0474584944963942480087300606121420 1.0486215975987886607849895439946936 GT 1 -34418726760487796474869340781.0198924206366084825183200943584681 0.6424341173319596197996720195709104 0.0004385038694699367259566766341491 1.0004386000404069530442192080608731 GT 1 -90467689.0178401021873763696052150152499963 3.5827243332227823212258986101539713 0.0153619793267450578259937000455512 1.0154811970539508702144573067939623 GT 1 -1.4540128093383131446867667138462832 1.8886485876568750091124389867459548 0.0134794370240744828684759157161171 1.0135711093617201276936060436149036 GT 1 -151768817886673700744408671057.9496378914038518377226192101351205 0.0807229005503084622882731958959559 0.0118827285892202654679893207655946 1.0119538925181550566573107644007962 GT 1 -624068083220143163.7139884760074033055236893740516947 0.3033079962207827983603939162767787 0.0414102005819089974131217105619378 1.0422920334376850237473285939131625 GT 1 -3835073179756283842.7989030770966167780251069017955021 0.4892731504772257104585635001684830 0.0613781385788107143245256879140262 1.0633425843725118988704132144643383 GT 1 -12170935464400776478808059928240019580992489.0369464142408698812648356636110201 1.2645717397254829880391429603640743 0.0088453055291516581427246395891008 1.0088846574692526638067639829432343 GT 1 -570461317597.7576937129087695571295069277013023 0.0578745274492247343362870236650475 0.0626240088045839496384691049291490 1.0646708059450433934275363330149214 GT 1 -393692494415135865743877257063976.2409688537805447481043715812804824 0.5593864740817031979391981932331401 0.0746237536746506636480453459716197 1.0775548713870388448635351305338362 GT 1 -130169241872842258068811.3409906449545256980965654771937794 1.5788146569692412471298496915769235 0.0769168301377565052822813384624415 1.0800359403456710547519620130063000 GT 1 -63444975176887637687627770.4115786619632019543277317642818559 0.3353954748680928255268975722130496 0.0076047055531468480790580774652594 1.0076337687649574388397079227630841 GT 1 -309127892088357334633114543.6695786258767512188363147403382654 0.2362808293231255076823122033722245 0.0160777216791618500246747652675343 1.0162083704957009507239872902465887 GT 1 -79022277734153195269945047.4012937259730904107765520758264373 1.9556693755733481976496946781192327 0.0519150771779204406399999210651074 1.0533111997033077401456958074478298 GT 1 -2203526871104254307915504242091877887.9570020394428594583991767972756473 0.6687239833600506375729173683066750 0.0448226395550819498535059310037702 1.0458582380014423152542244862752237 GT 1 -68247026178785155.8195097879216589707043710176671488 0.0449194915765267296070404933900463 0.0511833345197485596375797139041511 1.0525396860950311702939049644715869 GT 1 -4019026230466113781798700305868.7213186516898164810354682598083364 0.6012204988357573815167502076490926 0.0265611558078938724765470091245428 1.0269202766957123071189478663443552 GT 1 -115876215923579767085642075007247049941.3437838675970713851512367293131941 0.2331061903634396408420443356357480 0.0604465416085088650806851038814781 1.0623505608517318434756392287440006 GT 1 -84101.5177658522338259200048496138908894 0.3266829818114523475035604200493549 0.0911436158410101856912604833633653 1.0955681905113361067968831531420665 GT 1 -29335614697313117237829440087207848.4000620660411744720850083641326877 0.4390355549647179712569419970029519 0.0099063235531921112422133446152749 1.0099557176564009136854433328698443 GT 1 -4974635361064.8407416213962986880365821498858031 0.4438095549556124518806241819495301 0.0997621141990171990899658893914938 1.1050962330269099336454529745875210 GT 1 -151005625064251434322685678615207266569362.4283939783968486659172602712328123 0.3313950228365754383943234490262845 0.0476016125289019612372593608496451 1.0487718574923472978439649758133977 GT 1 -939949450268155904292535346853448.7269011153397478823277984255813930 4.2584835820135216368225155992252447 0.0859353104871853115765483098365457 1.0898539337602830892947841319294244 LT 1 -1098040787774947.3033052983746546665020873897261953 1.3076062942943357613071315098018006 0.0400745260521964820825666020715442 1.0408996288380921347774505780744575 GT 1 -28218427988974394049809884585575.3013951737302194160652179781824984 0.0271749673287092187953064975781011 0.0862060262310487965823313654591762 1.0901501445683516300360293565361403 GT 1 -3969730100487923257332035479859260476067960.5569824448934001562128564587365565 0.9633908791397811969191185987117027 0.0570020887629798613179081484819732 1.0586912113701993767304234379292837 GT 1 -225577154538054598.3714952270427796215291024808832470 1.6844156078883368215122160796744967 0.0569402909969688081185587105499544 1.0586256802163576369536805614794733 GT 1 -378.0472604491590599860730971229635638 3.0673060757089908354226892867413830 0.0906694190082821536309639808410248 1.0950465754601134306445766520588841 LT 1 -154007963996170256551.8443403490190124916367775626329662 0.0868230655566874609395068514134057 0.0997719523424969793484253884450295 1.1051071614685950037350152332076513 GT 1 -153816756894341913883.8877227716899421526726978701067760 1.6084037571130686795223250766245420 0.0755721068607149007852553113301889 1.0785802267194434748215568475934948 GT 1 -8937009.3062834322477938583341903952482184 2.1375540775622446163867865918701897 0.0781217709235354476531702921445446 1.0813421367330745440579123102075243 GT 1 -2159799.0062601038384859989926126413587170 0.1395709266051964187681896747301171 0.0134344113265247029513028917033192 1.0135254694918949237611258913117493 GT 1 -3579463453805636266792594.3968838643024407260078216083290300 0.1651359967371686287551743727349722 0.0869234611647885219672977305639685 1.0909355696607942553256503625212352 GT 1 -178658798919.9680964202524865155178862013970564 1.5381738005444021371302251866081427 0.0959324865908959476527405870086282 1.1008512384039224424351246694514065 GT 1 -702709242414060648583072498808921556726415.8829131581629066229401306617628527 0.3339031128587458794439156741717442 0.0430207489620710816346891597953584 1.0439735690203072543517659870526993 GT 1 -234592671526830445271.9031840587529930368658693764999107 0.2560596029350723122533996216192684 0.0050614321085537250962660384405960 1.0050742845422035166195211769167285 GT 1 -136873235197918937909.7563847678285058227707707311668632 0.9001157957493944893033284526899652 0.0973083747814962801560439024795871 1.1023742842013965559328452512577810 GT 1 -4264550328642516.2731209526421658497550214660392661 3.2205103845620578763832030667472786 0.0151479460804638856828213572248889 1.0152638481575183633616008348337942 GT 1 -1652395513893841741934729184622297852216390.3555316269638760143827042216315531 0.7654005566906259883268468009340210 0.0243262135919855628250244912618843 1.0246269836757810311562500939682631 GT 1 -141044942078744025438683434.0290533865613711988040993203848495 1.7079142056118579188080204966038424 0.0472143938368642621878111209780626 1.0483653679368363259157377176778436 GT 1 -280842119356858393090455399867896966446723.2712224672920551910778228895168972 1.8370560741107710405227291722371947 0.0990505795033712958933037541596878 1.1043061600232076649039390832302426 GT 1 -11443181215315210172.6386741100962708386895339028870510 0.4087241195643337220788301024686444 0.0966024486131382122698203796582927 1.1015925662071243325172924385621425 GT 1 -116033668135286372318867334043593662115837.9377865249487602530150099079930593 1.0439069270655938688576602775641884 0.0085900407175990204685660593745512 1.0086271477709132266489370341479725 GT 1 -274566949965564793806143822715627.6943981729363374616059506621105824 0.9286122237190075644740082773597950 0.0956716676769738233203129747878150 1.1005627850585488337124735784175804 GT 1 -3260075967156481131.3778931978552326201678308200468815 2.6506940261817425208748902809857585 0.0981248204927462885930139505305558 1.1032791504161795888667003265146841 LT 1 -1667753435387614044923.9395720195795294721680873372836776 0.6368129226563939334742603231657851 0.0873030653606240870760994629878019 1.0913513980281360498456129907191219 GT 1 -619533152951985119190768121307461.9569681962113141839082988453522085 1.2460381575791500686665687457165958 0.0832820202187800366979097017498606 1.0869554006131873078229642675894207 GT 1 -251.0123084519710470351317098546013519 0.9779983693265361217696554154188608 0.0681644838390787390794513627813587 1.0705989646777002562903882955992996 GT 1 -3304032860341495843594978869699450664089.1180818049133263098538768076216107 0.3450133492715434494673813178196750 0.0147321743020770033755251079580187 1.0148417705074617830988808454438849 GT 1 -8215841259703455963215441582153458633.0106998022966455282090806195671161 0.1842538388562702876439206792877172 0.0452270577772456276161602870024943 1.0462817236048560266365500676705134 GT 1 -140028.5332892443417587707312831903056430 4.2915975531072419103255135662531913 0.0558981530258513798188009792769683 1.0575212299124068050983964141708993 LT 1 -472662800393869293041689704406667158922.6456960830270518436679459107317255 0.4109131341693312710348001921133309 0.0352717762434915829544445747708720 1.0359088507222331291491252274928762 GT 1 -9.5161730049749357481521368298334849 0.5708259404958633363609524036518877 0.0154836663732454901029510068587750 1.0156047902566773163292481672457009 GT 1 -3579466511508929906374504737.3318529642355262670122126501662204 0.7973855263278826306073015581979115 0.0541950546834826365164003040226845 1.0557189200732829951485132068214519 GT 1 -11314394788810313320190849387091523786.8585189368152970915386308337142509 0.9044333583950728149892491279996580 0.0013510367916589665777440388008867 1.0013519502647150106588349509224622 GT 1 -3962610002.7074922929164512919879236824649950 0.3951137485963132116325290015016138 0.0951010436999642696893676199510852 1.0999319920127897586485365914524259 GT 1 -58759.3034355814082971387857602329064095 0.1353439562772586212719008250241336 0.0767269157739353087785727743594348 1.0798302223385741683886782784315646 GT 1 -10335376210777225261.1220405890835474408715289266008502 0.7682996714530296918423043899959686 0.0531077025035164328564343163063689 1.0545699224681757043239099017631574 GT 1 -14870609551635529813946280290749511152462.0202636062840253774532566730256423 2.4646759175620031892192762315745240 0.0435138360904389540514654360694925 1.0444889555388516948700860979562469 GT 1 -99013487128351309457429657600576776000760.5479392193391436576349371060601870 0.8939996055450238762039116943437641 0.0060288341162987901799372347387974 1.0060470809115985130562395752003186 GT 1 -92709020152567634784261349200459.1373420056650009282988022299974639 0.4306742181787367810947467153930411 0.0803956464126504282853639332619132 1.0838117518857984906858292877540493 GT 1 -107993369.1219666521956738107862755343975443 0.3994793685960924592116391279933368 0.0556351545620938179645258358726812 1.0572426986928575497676052769249968 GT 1 -929788729725835463092661115530985018554.4466367940107958663925606741841298 2.0639375637990388347138820931926986 0.0120171539105105496189268210432892 1.0120899436425967471700772975434364 GT 1 -58679701378.4487223121846841169426446484842364 0.0642730283311973382894754087633768 0.0143295600364552544643686093089546 1.0144332196378212424893135993336364 GT 1 -621462789054983981343547099.9070533202877907039455178912676809 1.3853989676483054388909289499539603 0.0234463669140209350958396801108551 1.0237256063784943864256135130889187 GT 1 -75430959089182087.2619076843981686829805375965693586 1.5123846185806866712599590655301920 0.0374771615569429672057895222141695 1.0381974848491815066113880954449141 GT 1 -111348993956888520308398461.4245849899613820507175791610533134 1.5232269788078497933152664659651233 0.0141718678728544054116435242121384 1.0142732477604184453636911601843339 GT 1 -581844551627916263695.0430498991070486023624991574881219 0.6736851432889545295337791626897263 0.0194715144339856996404725535398651 1.0196635816861340226505836943637090 GT 1 -958150225142.5158332225810913604159331207356551 0.5373876303991339408650585301299021 0.0137096581913819770924656519168627 1.0138045034166639825668384435695605 GT 1 -6512820273467.4349651836704034057935588184159808 0.3381034453598226778027728760597607 0.0558023122423220689195111417315613 1.0574197197633559874509296219710576 GT 1 -372670123324856798608946084608.2696314919744548601433232475037697 0.3488564722467648242999100915924341 0.0912786644433048385106236286994472 1.0957167933480437429391515010319310 GT 1 -1046290415.8231755355817582857230036417697222 1.4934993104124011863878750473788430 0.0609266725477059569935206829299370 1.0628617118193097963899147506942023 GT 1 -51739640530973404540217478806234667.1932251260749971291855729339524630 0.4593501229533121626448581299660466 0.0953203319073143375663928798662806 1.1001743558487320394340132057529565 GT 1 -18481300377338343377913894622850816918605789.0036800378881977540461441969728439 0.0879502191393015859971670973499902 0.0191473191508551943043773427684919 1.0193330031207494690732695573504486 GT 1 -321951718428394515143.5134677424962347704365453101261793 0.3216784782469404624564588936921779 0.0812026283543260797708908877597729 1.0846896688094288166152154992264992 GT 1 -56788542477912.8678663963254957102867950005184155 0.5030290187901309899324072026320654 0.0838201699966687893441044270800660 1.0875426126121100963632775876373054 GT 1 -121378.4230738687069363265505851778666619 1.2285558089684514304181771182379689 0.0047884140682884367514599464522762 1.0047999152525762902524783110825245 GT 1 -857054221578231205390700277127.5164052174099751477507366996488591 0.3531496063348095223281512229707968 0.0841596178120162298067127956436735 1.0879131847455102400817792764023247 GT 1 -26792492248740490645947029846673451063840540.2144401912683994179748542816031256 0.7417182332219596195464682927784451 0.0716050384867217908407502087372502 1.0742980316611247205039133238744281 GT 1 -159931634254656845558142216637.1212276770194207784115332462647204 1.5966861011814689605095409978181750 0.0961535594377025661242935288601580 1.1010957996535580909710322482101711 GT 1 -8361052300371.4636571637653192849467490585413956 1.4301505270240895264852216513175371 0.0814309059075123335245109210149682 1.0849381522324340444983752761890616 GT 1 -42135974.8442258541129151078328261361576262 0.0046685362458448083860651255210972 0.0487066134503972443382133551053129 1.0499327608073434519002967335791955 GT 1 -17913089854701.5700140701878949705037702080012382 0.4032549699469028051938650391575549 0.0182020191394090741642925250022432 1.0183697139292638984290149400529490 GT 1 -197672183082936.0856739398301116784567853639002179 0.2399756418218592355797287950223836 0.0466270934291778275819600271144765 1.0477491543089065179525090798651578 GT 1 -247998300865942846876667.3045383440886071239137556400616552 0.1121038531349589322756890086349732 0.0902951406190542693034222736318263 1.0946350624283134663478633680946372 GT 1 -9460226339071368047661.0498757801691357191636233595649902 0.1335615791001133810909708185631466 0.0908196711387345880976406476847829 1.0952118228941323876214849171617159 GT 1 -102687923258921867850838100.5779318713249710290732984316861490 0.9451471366784443782177073815355938 0.0290226152189326177707398263919626 1.0294521016097598809356848053038659 GT 1 -377188323001028391610692.3405416762870955557363201429776700 0.7051531912183844029506604290740489 0.0789917396130245235467855616845086 1.0822862738343956026081233615685997 GT 1 -37259258227281251607499117803260818642755.0154122743417909557026814096787267 1.4906880366242886109692299834739926 0.0139246193152171541010170236587736 1.0140224763029647402865781867857456 GT 1 -2558372155411504.2620767902251338505482168346365382 0.0301726693808539513026995196790582 0.0394425072456076768162087610012391 1.0402414414546439696326482312314785 GT 1 -11399982494.5959622826078902192715846408859249 0.2161137146921015493407915476206329 0.0020751576540812948269201374209433 1.0020773137771058035380598149265151 GT 1 -52524381991974071.6982231657028647660019641532659350 2.8062630153209360011213439187205017 0.0925039025368333903237502019012335 1.0970660131684474446063091138182008 LT 1 -287944040963428078974208995788306613625265.0540346613472025111471146381841624 0.4425489994180121788665682653821920 0.0817548300891506261995362531086996 1.0852908543987274202450452070259014 GT 1 -162.3506665303972785033096117930608626 3.1851586084712627382242526019546009 0.0641342203403268008257232432273342 1.0662832105864868988486054855943345 LT 1 -110620941032837411.0496505811445587010044989076418650 0.0255765123186771281455536845693824 0.0284838842581326095565233865974228 1.0288974217876986209018284528235290 GT 1 -3213142170060455116.4346110605180805355101776882376342 0.1646310026251793687558735614229565 0.0655838685938223030869971285531025 1.0678334031379115424871821313690053 GT 1 -11582.5618011478629619615643739971843561 0.7728312847308625040176387429340527 0.0541240288252132573942677853115422 1.0556438272204835981199330583403456 GT 1 -44741873311.0275313394294977236017456989612246 0.9157801276546351597525241654559579 0.0633981050793994734882151227170478 1.0654969590438384901855057932249790 GT 1 -4739419570532043.8341387697843174859566584730766490 1.7142467783695694711087557459066855 0.0519789620905171273533368059847714 1.0533785850857113821896657905700393 GT 1 -55077007569521180.1117025701963388610356118888670929 0.8775408430241952494500524318658470 0.0223052474424770550534897871980572 1.0225577716143786980085554360147071 GT 1 -53165429132148.5813248684731483391901949402976108 0.0678530004862617783974188142388966 0.0716978647342263724824871578242127 1.0743980223895455867626830433230174 GT 1 -3517507908113.8599170796207558745125570680213456 1.4953001818130611674584805854851314 0.0457862757260428401396109900600912 1.0468676029874707253834275696611709 GT 1 -1707067805488148.3977275797905569958641942799952736 2.5842629940885817756617020301540691 0.0565015105666470758504514309244087 1.0581605151993469883535334686114963 GT 1 -1136998258263942.2940101862145439907208000266240057 0.6370198619163843251189368194445449 0.0658827042221490149995731582021303 1.0681532642937538797074237378300434 GT 1 -265325.5453276565789386781686739568434321 0.7072920593239317445182107495106722 0.0327339223027889946106737466612766 1.0332816634696561583407250781807831 GT 1 -853417688744760995113473871.0208323480853161521755062275857171 0.6558980854413603856610885268751050 0.0439261403443271842832131751372235 1.0449201098610117103588354219234924 GT 1 -417906223327395418750136244334421244.2155758216364594189445490389916134 1.4518121500389969796842137320723148 0.0749320742885958854174141002686072 1.0778881109642794520406452015667968 GT 1 -825693121720179706413406.4335051913451299480656012515470395 0.1360879276362944861902696396996336 0.0785300778503466997731500559364248 1.0817851425030017527713727745031784 GT 1 -7671072.9647727476968819955615279390022767 0.2717068189431844272806147073482858 0.0384686412043846962990656182202846 1.0392281000331243101491756372626390 GT 1 -245541531899.3359096991012766016333021892619379 0.5947069902560478149799007695695954 0.0556323555004496512658052703697435 1.0572397347351143741461836184081799 GT 1 -9410671389591085860.0640937768708914837613526643944739 1.8631480300072877532199676171043450 0.0364465785272576550695730628413264 1.0371273474413492455588347784405421 GT 1 -156889990740067947232078961179.7457024957408426623986366905607083 1.3074116318480460665897619887527379 0.0162106423114356818036765555526307 1.0163434722352480905802752422042733 GT 1 -111.8360374285393281138889999922036266 6.1449958520039425748331367106500777 0.0169608092283690463246375480100768 1.0171062910929436861532241260594317 LT 1 -50048935359002.3804275574422373461064979969271547 0.0972989889557406179600964090143648 0.0840262328877512836093243699724063 1.0877675532418430783635305655983454 GT 1 -6298938524548979035104605312376810.9966967656241924137129973762229262 0.4069809848145570676354032146902114 0.0817320529366586271810057590718374 1.0852660496180997772026547438636216 GT 1 -5720992178979081055001693.4249804288662365830933078039963041 2.4814220660088216978471764749641195 0.0905213204773245503354321532461408 1.0993851837461487049875391415286398 LT 2 -1.7996071800554296962179372386890274 0.2950468329300495580518250170797410 0.0314333888854599475959925735666259 1.0319380208909269848273253130684608 GT 1 -2574658629173580404162251.9796645342496848902608552896307818 0.4884758823546323473958113500261177 0.0630314966199265007212684058761053 1.0651056116309156428779456133200963 GT 1 -310985107.4336001960077967953153433882413625 0.0262342091671135273003945837117588 0.0246029798620437159101042174414124 1.0249106907262745208622731636838645 GT 1 -38750954.6087472329315068552459350686206317 4.3426424036396398068587476882540461 0.0793295027948048525931997763965685 1.0826530730757669475468120668543989 LT 1 -2668386255235906217352044.3619662191580755049535791753967946 1.5434041893245032924357167498373541 0.0838585384173391458403401515725348 1.0875844921895097062523809709276078 GT 1 -6865786783693978046026587719.9784965923366561724067029602600262 0.5332847294917554942971733255401773 0.0400603757879525129134002985778274 1.0408848879437888963669287757290584 GT 1 -31297640236788290910667663491982711106498.8627876367163682994245995138809905 0.4719987612424068742032752471937103 0.0136226505488133474280429208049639 1.0137162902391373761695914831957361 GT 1 -17195683906157261040991229963673.0465089505761506400102878172272142 3.4537906501685548857511183549902230 0.0875140565194774465352206447236372 1.0915825980490463376476648761967941 LT 1 -1212499.0977977997642094937871874412308791 0.3523060727560759070376271245657194 0.0633329397348443743171828938093681 1.0654273851106336626666642168373042 GT 1 -40985185.8686395558678003963095450259445207 0.2087818720823291582907863974881074 0.0409041789729074845818151513145009 1.0417642914393605540721337507560455 GT 1 -44075972936781314586842170606.2242665451587912491204483996483741 0.4204081724914884405544279540748927 0.0886557306652518047575611601489668 1.0928345504367987976643466714232383 GT 1 -264698348440308323686446.9037102602693825195032326063621493 0.9361505247743607703322297067552845 0.0121592097330202078386197706869819 1.0122337376737445756806523902364469 GT 1 -117893.4409829368625876547680272620333910 0.9580347292903622193948631334982015 0.0586292413320987642687194540817752 1.0604182120357543169104018001824685 GT 1 -132414451472248587030372705539975032929.8617346942868390765454385009425418 1.3829892539292128488257134912001753 0.0107078371145198789932824843925695 1.0107655785629595348546816504630165 GT 1 -283465020256088068404265998916402923667.5209491999896578332900754537030756 0.9583655577061445973355320686348291 0.0566101036087243121368866765057689 1.0582756179717345245151724694890585 GT 1 -2270261408711903570900288826370168144.2391314187610876215728622491632652 0.5307470027076207479976090760121611 0.0294649427428684085820688551609352 1.0299077541433325327446684126107915 GT 1 -175.8927319709703987303010754742734741 0.4606314997020739418162086191640488 0.0140613316582306557648720052017232 1.0141611288072914779334525765451396 GT 1 -38747321071727583917379243.4148811262106646402179720878409178 0.3327490175873476929773207772081841 0.0780700487277243402656671049764421 1.0812860330706915174155976144961601 GT 1 -117924266.0916089439285068000496981623793789 0.3153625140430549506721968441500875 0.0144950458558168344185311302753802 1.0146011253657894781133468179390748 GT 1 -29890907200199663390181294393432537467.8985447761082448691536200747907330 0.2716708828125345679781475143668136 0.0385087860842216197754096751004052 1.0392698518881596386106719738934490 GT 1 -125294611944829857.8620469248054722478222387477564090 0.0208248082803081208949144181340571 0.0938155869530728406142085764020376 1.0985124472425056147271156020451173 GT 1 -71527452494691709561887186.7480681302276198150021295386936006 2.6470858784782831897429977727342715 0.0619861099581352543332720688359677 1.0639905219385745631456871781172626 GT 1 -242458773817522905.3241205080895621322423740490800329 4.1198590149574597191059045383523032 0.0291511025021450182150213658007164 1.0295844381473507967844510037864035 LT 1 -54109271041605928703480.3366214136798023997024259675869775 0.1823950181250660870044565327639464 0.0902399934754801287121911768489967 1.0945744433478086238927521932150319 GT 1 -86043335167941284117614762.5415615109411556079708702396995519 1.1131418116956650934606974842200157 0.0233379444210909983147229628138163 1.0236145869005427113975943462493907 GT 1 -233257457093.5244588546773560257561241183572341 0.2523612501369941322166538265755717 0.0830372167287922749513563063010012 1.0866883928587571946742092995856657 GT 1 -48115406275675981898314491660068124180.4965064570647094012558886967238596 0.1850568376865474492760575923029905 0.0274246734829028106912894771656973 1.0278077499162905608622809469869672 GT 1 -114073529195034911944670902012367022.8293725942639263601057457420318638 1.9650955439116853618863690950785968 0.0543823161296494241178835027993212 1.0559169312886390731163273954457295 GT 1 -11327458868506223390175533679466276998532.1232637664727100503018996043586936 0.8332078552462445557092220535303940 0.0249081269338357278879073647314472 1.0252235836377335350113939306303146 GT 1 -6659669.9900737909032970686767582112685823 0.1240466331359514165350129082420621 0.0246528919512257891909598812640451 1.0249618630850393370478348398019513 GT 1 -1214320.4104849426488607234304732195431317 0.2616253968346231611537262834450732 0.0969121917360161287983074868294359 1.1019354896902940779854323685825387 GT 1 -589061627151081851428656910349354433221.4152417790999177238817536026995223 0.9632198815287887808763783312010024 0.0272967975220588504846982584472474 1.0276762767528107586461654468504025 GT 1 -2041056593245860726704640552.6782451907475581785567231155228729 2.0720699432355684269804123654058005 0.0669640494399476646940165287739095 1.0693115466584344849374349981042304 GT 1 -9891458962011024462207118846899952032532.9069729751617331605886375897228755 2.8659682893324298655905941296344884 0.0844754741410397327583242798667526 1.0882581256480769209426905441084960 LT 1 -16520929993444419112810353430.1697336225487832917554137415433948 0.3002204412372311677777959290022213 0.0279196561696833144400856715266887 1.0283168196760611650796382963223595 GT 1 -25925176739054574503718668908697066.3454860664853843129410660496281568 0.5611052297961669336913093395532217 0.0557754505519581182831036450896946 1.0573912709452510817420509164412361 GT 1 -5955134058824973.9248228101988450462508375846735598 0.0326797773911268230972635151924944 0.0214000836407896703260581946038286 1.0216323855969618565838734815870277 GT 1 -506549320539990717560860933327563179.8701868271135689609971397905996274 0.4874652797185174062748435012012274 0.0507042335902107548252548890532589 1.0520348678011692959139153875577862 GT 1 -331927.7168270129989954722917652394836270 0.8099317063069965904048909393227394 0.0156595509536997385598615349321180 1.0157834569656731172019368110083050 GT 1 -81932099974009369583.3592688610814846530157408460054555 2.6342675593806800575680166307146295 0.0663482738843052533220096392155439 1.0686517945363495859750730099628407 GT 1 -5734849450212.2665505810858843787324249656819365 1.8280711468187946907257052835789763 0.0746567702213037287992712163332494 1.0775905510749471074224555166758097 GT 1 -8.5757700711413963273287986259655642 1.3510880480554742678670468967259175 0.0891853467243858448347068699028870 1.0934158565649044382142556613429626 GT 1 -134000407008877045751510233937928.1604164390569921714421076788109167 1.2067898222352853638729892221700403 0.0290235452790973368206804295638469 1.0294530594699785951380695276321530 GT 1 -1280892926405893221758427.1286555895213876069421288222518655 0.3277287725664798919183564463996285 0.0534325531892417467309314125907579 1.0549130516948616723684641674667775 GT 1 -677966558197122117.4661715247489782580232146575963337 1.4497663707845843081731444206150373 0.0709928235423677664410851695237555 1.0736388152706520666149981739258169 GT 1 -19754431253039.4493051657120979806318829777096951 1.1804110301442712619399087453516851 0.0685138775153061495029820129887582 1.0709739870818583694890525489545943 GT 1 -231730323.3561416916482374487562596668255067 0.4015122848512923631035140344559813 0.0934717460235574375133109283195758 1.0981330810694829691165693566324033 GT 1 -527126543009941177197546986.1310539685994170644275171479731632 0.6532894407576690261104230680527295 0.0275600144081450277692790361360198 1.0279469168674380074059497098780678 GT 1 -1244151021369194.6882123293476525026770460771528098 1.2306659936739960194745833867076627 0.0929852973790244206059345357155525 1.0975966188319277914533908020410561 GT 1 -44467482218815842291.1078027476734921040426966884537649 0.6010416574068351626634829708854617 0.0960415396553625813309595963353761 1.1009718705919351719258799856584982 GT 1 -7763379.4053861014412990291454749734605557 3.8518407438169885063215803008068245 0.0424337635456126686748747278830344 1.0433603838662482972634323028555482 LT 1 -1272214939090264915091.8408771687666923194915594484315656 0.5017753368082707727557894718198558 0.0661983173237334959484739572085216 1.0684911944804787685329899637877413 GT 1 -201806978693082667396163969685326712.7876753336850351152711008841318463 0.9029146392860114366058645967257928 0.0929072635660194251562111864239077 1.0975105888522549503796906609140898 GT 1 -98.6459448207644452143043163954514515 0.1274759323227202422962021450916441 0.0541578300332631738950477746452264 1.0556795632081219224507388797562199 GT 1 -122729420610534764768190138674641.6129960438842122341248920984913576 0.0168464108056881743430313495475308 0.0119167467965918742038949687724280 1.0119883204083931793048905179190586 GT 1 -4057776331975580011502471202422587158.7587769386316069276589536085134508 0.2336425931074142474498893053202624 0.0003913203337577514885554955019886 1.0003913969195399251968787605105545 GT 1 -7.1758508327846393345235221061005146 0.8150309020889487229311086769877345 0.0431831080234570270041038183534592 1.0441432412838532742354468656709545 GT 1 -34912563375304766392881579572663023300.2609281482720542675604732998370628 0.8150279458973504830319744542937210 0.0042221257132536520090641315212920 1.0042310640540941379638336745764408 GT 1 -145837939959983732848623071413.7774551897952587596686405242619381 0.3313685271815452700416845293346878 0.0661931287997694129766765042392050 1.0684856381512862010931938324045170 GT 1 -8099793.2680583495822944770949950373267528 1.2803282479421686423794680701346625 0.0806055870049723272543676553543961 1.0840400724230918106890391045753527 GT 1 -574718152093193347119186480.7002834587648055864146787603170197 0.0944762933554431642202157968857193 0.0636629492693075767096568993976185 1.0657797703893853072961050405632546 GT 1 -27616996166914755040.4120631562840571370797873137020779 0.8291971963899462399046555067557925 0.0305211096916567040942166700740940 1.0309965783288055551893594422103168 GT 1 -464667478180298464273661610101897917864772.3385941522603560874274044509969658 0.2459390579771963667479966107908777 0.0074199444870589790291353613021188 1.0074476092072327629878514143699338 GT 1 -365747427707281.6677197038411934891671590266821957 2.1190534050663719788025659765818579 0.0596908751407180477754678273365250 1.0615466015461679304679487514026693 GT 1 -46453554667969088868619138316196936776285.9602365863607872525245538176973038 2.4481940941449911790526707002925575 0.0527198874085989005454510254332428 1.0541604401018704398399453634409285 GT 1 -102733317.1285033769861691178835304649486082 2.1761210709786714740027194918227858 0.0837441291889814448786823428679034 1.0874596183682223583110271695275951 GT 1 -320199796361194784905493243.3094643280648706116784664808457609 0.5079927815696459213652569436121146 0.0725976061104238493388589763523267 1.0753677257367816724430413464433103 GT 1 -12.2569403511655567343062888188539885 0.2389394981819425024809292186143794 0.0437568243137509801976609046638607 1.0447430304041125888092546448095311 GT 1 -10591115495037392924234.7628859835064128562627139378146828 0.1485611174744837125346551671336587 0.0396611041581620861443590798751252 1.0404690403140054473583969929799201 GT 1 -164579580023681406826539890963410.8035972643613688462740178544353261 1.1993725147157957888513810677837552 0.0219973821576317795207953959815201 1.0222429322204643004514993954399929 GT 1 -1742669458294616111401791568292389967.1721985499283719348510918181284202 3.2866863795164792481675417867758141 0.0499052032215035989890813148486949 1.0511935132832227120408849996824199 LT 1 -72500.9072759561941199306179579076048765 0.5162170498288280680303247056511572 0.0516058496512734050804684501979372 1.0529850927256331125357072915574295 GT 1 -35440637899989034083225.2098332000817348880449319339775850 0.7242370700330070638222033353292441 0.0277637035105729509054733083492989 1.0281564006823532669433539314534950 GT 1 -336049251824146891205167436925986525.2228622778055315878123908085941698 0.3669011607991118578630804875198743 0.0916296112977557820580165861776068 1.0961030664834383928561177348980972 GT 1 -2353.4920053152138401511692851466210499 0.6149209980360245942520093322322915 0.0013670178590892058693992236179401 1.0013679530804094026038687934471534 GT 1 -3610935865569990584.6374533587158490884142930512027105 0.8633818887613398430679307679590908 0.0752112456499335681083589241267925 1.0781899412265544914613259960719336 GT 1 -440281.4835086660838063951279886896211241 0.9312621298071918274312021350449700 0.0879176101639541330921592473412853 1.0920249532556871190510838939125983 GT 1 -537455615971990018718022100536533830189013.2185865479291392110128689830801391 0.1113093793045935363811757254412714 0.0479246646506132366394874650027501 1.0491111135513191244450488130636306 GT 1 -290176.6586908498152147592197025563475312 0.7180181768664601885998705315762529 0.0627900076651551523799107321698034 1.0648479105030242269197955264332320 GT 1 -750415733147167567.3441033960880020552610072331606579 0.2579609027945041605779530464244197 0.0206810479811834265954450912507889 1.0208978958246383842040269563768084 GT 1 -8393831555888087830733017547162899146698.9364999999761256561464327917582756 1.0777374768532642405426762520075469 0.0276316570262431361014074528837783 1.0280205926298030885976538146853450 GT 1 -718112036242530589611749655.3728955436956487764047439262360839 0.4365620643797437916900723843659723 0.0905018011625956915506339877596683 1.0948622614136018825331446135767239 GT 1 -5067458262021258899529375859025792263765369.7731187340160826616676585217032733 0.9884905417442398566217331245274892 0.0590518309016940139080909331133359 1.0608672215744264784713060772648848 GT 1 -12700479834414.4855342054897808505144959685707609 0.4805105231744715845446441095217313 0.0613306194022169317997067974963212 1.0632919591146506561990755329087998 GT 1 -45612088233108910665228626168910632787397.2950868483739010026014451967431009 0.9369165099957316428955830004304879 0.0744353706688496241575900358480176 1.0773513176064409850474760261762730 GT 1 -5664139407441445797984373480.8744528157443935713108767169265483 0.7530363917889395193129470286141713 0.0724467870222390133228570435281697 1.0752051136635236186779763058499798 GT 1 -33050193572368.8992215193356455818956687134237367 1.3908423879043941845711197305743018 0.0327925948049916120149431036497076 1.0333423233884810859156340964787649 GT 1 -1091155244436032774763063415161214611501771.6443217785231058193744233490331052 0.4119854052134971136373642019852175 0.0290633870791370009259991987073622 1.0294940930267419138878613717446199 GT 1 -1809803674743700110605425342030999911742212.8287963270138012367387437959420003 0.6727694310464060822715349879378043 0.0362484588361383389480119171733238 1.0369217549734648365543180742600945 GT 1 -9074772811722103840342383956580345434990491.0909399609866922966050324358862071 1.4011944841560536579345537100683857 0.0709220791893262357726117628785593 1.0735626676785103281885672461490710 GT 1 -962331461833802809519425537046648229869.7071084463534342552327643789934944 1.4186130823938617334041424206319207 0.0102572586936887734093057712725851 1.0103102268886033389392062344485029 GT 1 -20143.8038174753208116266266878620632218 1.9110426432467279684312499304715946 0.0080159155749797336717083285206855 1.0080482157523602832384382932184619 GT 1 -45874095208606673306043031766.1783861680935445937402135439182529 0.5656976298130334459676598393707360 0.0235361556946369872289344138682324 1.0238175551518348524758995306569533 GT 1 -82394112207.6104469587465630693013949461262011 0.6483182640881646349913675939002158 0.0603433247882523071833769114644523 1.0622407095705848613387674780495483 GT 1 -1264239923051861711201220834993379668120.5650871442253624108503035695844029 0.3044435483976982129133227788061550 0.0794308322444016213112316433538699 1.0827631396267188834099872519445789 GT 1 -1193599761037759867763456740275116177.2932204429559473252364370922834341 1.2188833818940572424189387189411060 0.0539886761523581462216561063382171 1.0555007397612653247581772462233663 GT 1 -10365180613777464660560662270145056.4162758785385837384750296987849707 0.8358471652136000076929343312456782 0.0647537623622828912861652763396551 1.0669454286032272702796979227493518 GT 1 -58342.0129762064743184022946445030589477 0.4674740803723812631375719724584080 0.0274549512462818908197148947416801 1.0278388819364641812795180562027451 GT 1 -34704552195882733548629794511837932.7485450814982118230727845580893008 0.0051600883563893813344265689531243 0.0897784041123921584983415530481680 1.0940671971510631246194442933766817 GT 1 -136035207229288102382802310628902.8651294644290728412191099889848485 0.7660554849298930042013932102397065 0.0715028677998707412516362630269635 1.0741879868315947126066216878838224 GT 1 -411579284234801531380510.6231568825535987108688773318724073 0.1695820015503219898377556975413468 0.0046248185274720263379818301332124 1.0046355460888064871854896544277902 GT 1 -1856313571.4060312122708738161401184512967311 0.6411230735731120059180389579884019 0.0147311755759742239572602541107949 1.0148407568484641514673698820018147 GT 1 -1425999357851.5266737625820339361777134379624096 2.1202709171377574016541824110216780 0.0752465654205411813375836054995335 1.0782281342137956735275518799997182 GT 1 -3646429819986788071912274786043194.3737985669979286139082186345419873 1.3530417644002215738955611342691505 0.0416421389821448292045216919421722 1.0425340206407314565208325893859718 GT 1 -2527621368232186865277153777.5017326728246539977777739639988693 2.8638233377090609748775842787257684 0.0307352166193986836565715245183599 1.0312174501557707053760096261967909 GT 1 -486.0649076951107953125114765124807453 0.1733762768101936446618313116869380 0.0341844430747574248046971826960529 1.0347823978599973510140820244584202 GT 1 -2702971230826.6035423322736024992394010815424365 0.7241340208855323294003467484111609 0.0934484955700887907008163851305912 1.0981074336004600312544417977304362 GT 1 -3586711042255323055877471916962425230.1741985464200248014436033851376099 0.2383612800088182801862362143242268 0.0704834597354432720218937043963199 1.0730906771811621300046785413701880 GT 1 -7351828215194666051346169045733311.7354658285576391971354951522962369 0.2527445934479678485755501591841943 0.0472662991387476156193261888407192 1.0484198468410435419193796633293109 GT 1 -5894236881729140954782801700439109.5042937146621808195126805640634197 1.6978663465286926474540537374953333 0.0719210170105051871523175464994597 1.0746384388376113774291750151462535 GT 1 -56175606.3303209819775941081210340847461800 0.6433365548477200264125289942278036 0.0945419727858421903208321860692141 1.0993143558924159357786425666983670 GT 1 -309500491873499425256525901650071618814.6995143145867666081197070630426026 0.6809099506602058084039894461909258 0.0170527577823748695257167467200408 1.0171998304506218156989520298768213 GT 1 -5962840771717297104428.6833835438543385388268094334870055 1.6689110851516324644862603995809916 0.0512249838222044691570339274131705 1.0525835831070861618795522726861119 GT 1 -294372648.0063016045746706632036856841488263 0.0058402515483845275036460101431584 0.0431553338284244200027559223553011 1.0441142140037511074613889443553135 GT 1 -12575212915467195484412788017845.5493803704201125839581850845476349 1.5144658080597991948184192439742970 0.0816276216257080343844666294980532 1.0851523296810857044320655502101790 GT 1 -308119645776937014300.5816194693160971912892077173954192 2.5472943731883385747698359086196216 0.0640471566285418603658644158781899 1.0661901847871103120904494247397375 GT 1 -170312068429049162307901231439922242169.8074504797975728780081106579974372 0.0770311186630809909162609518144826 0.0244613459923676194951909842136119 1.0247654948883984719634654389808947 GT 1 -2.3442717531157347813375491944149995 4.1646193585427076626062968306150915 0.0256014000341934191843342520027138 1.0259348188442376606831224262791196 LT 1 -6401671171445608021124170241024160.3352749214602297471282805666629178 1.7860197813800879629362186230625233 0.0197892600937671719600672728195831 1.0199876897148153335958447151127743 GT 1 -1529053615532021.2865006840931540776415399834280975 0.1867930992698046432432281572209393 0.0254732662834785120730889518306207 1.0258033271460334720013844436797048 GT 1 -141691790756788547727442248880799133188.9757043166318869435230958986330988 0.2437819102217650857958448585052979 0.0563277388069943085406294147367548 1.0579763540575041328413620538136275 GT 1 -102013299064551814991956991106663.1883203302897016536668699109350993 1.9806759700478149593605104422115744 0.0516955768837971449061037216204982 1.0530797068449728655651102735944453 GT 1 -15793355448236.4108176002910327449404556681397278 0.8811607605347119931242213149730808 0.0683730169333588471728922019283704 1.0708227771721690592833996118214303 GT 1 -248585.4279463852078515302881036278690486 1.0827308035176179346424355960629367 0.0388428599965154645818084609056805 1.0396173662060794127437879007560714 GT 1 -66030663220958007960155811.2217305553454510270202950930212284 0.1995241773769876808730074947438574 0.0577702617485445369626976611910153 1.0595061506464048207254903423517348 GT 1 -956118349.4933319541093486265522768882167767 0.1217839940628455459070842566201026 0.0145906115686165030249524120149999 1.0146981013842902912360132232595041 GT 1 -116190116490011207583058812867044358556.7505348203457757195959440035645419 2.2158263880021013562043853800268456 0.0486045586524893485379001664654474 1.0498254865158151232655439387273557 GT 1 -52426466667.8186203175939819537288781067018632 0.2994950123776067040811151818150955 0.0107972672572352449727095562585766 1.0108559807600780416486184889128342 GT 1 -984163687904193285.9680593414167696459923613296893282 2.1489943266258429864258840526296950 0.0759628441366190123729569678771058 1.0790029961755765723977477851015690 GT 1 -757153511654516801309449651373433985200226.0702080160116488907023663272845341 0.3309709778675502608586283783118474 0.0896077721380070390514227046114776 1.0938797527049550524495864468904763 GT 1 -1029199269600384005790856015.2783472392199566408690260676270546 1.5744352848666363346395591153954661 0.0820261331855770002840529016083489 1.0855863562892692276051616610253540 GT 1 -15577.5916402249947687728235728199434764 2.1477583874636326940044324104553866 0.0059550053809583881734218125387446 1.0059728071337076210970083497600775 GT 1 -3786765.5881631876421294063076863364026210 0.2113925740544379737594296077564709 0.0931377096069974250011945669087605 1.0977646701704901109926315086040903 GT 1 -1438636383947133419020973035693150862982706.1431953361450518187678514641633408 0.1334596582433699666243422747561687 0.0767366221456034751934726155424595 1.0798407353957139335144612835183147 GT 1 -2653647977586226.5819600866662854230943610391503578 4.2637410483184694079837214624496082 0.0096861579891183509794300041278872 1.0097333739590267048575541838276482 GT 1 -311.0975750701036174934804713660174628 2.5411139237737818229198394367604900 0.0964333601939760245186441255976031 1.1014054142751935718394128026457503 LT 1 -289.8236651002340258244873029442696301 0.5683762950969943474585291188725136 0.0637029160251756294389809564776404 1.0658224554554464427054001889420035 GT 1 -999548068178827548662482398677.7496618482913088306378455802656789 1.1813139189587417857646893562196126 0.0737922787835581502893498840409474 1.0766567485240643076286707196837515 GT 1 -960370398406910955788.2664292040624013932587764341181019 0.8535259896383099538786717697938795 0.0675565900994879441075172020217551 1.0699468157394298024457831173211806 GT 1 -1303761821362079584051650685432.0276672363005397849772988652320611 0.1948593775282396833982946401895457 0.0151324765030294334636364328635311 1.0152481407668703400060819930581873 GT 1 -308391616446904336123531752362452413610.7604495645099649819399403483786341 0.3451529783140442369541326745274277 0.0012970782249377899168532160347126 1.0012979201590135793068153375255957 GT 1 -4219720452560566709545206278531.6628936634773664998651755172977506 0.9643729048616526861862878251605496 0.0279129901176064014590377812666370 1.0283099621881353348564891041453586 GT 1 -1308508541499591304116138243.1588344042501698886528370307488495 0.5395869212338424722199946132010264 0.0412968691272700159846984895583661 1.0421738131563910384237953756291043 GT 1 -1301628270629385321292308323791346.5412986241688742049022225878448998 4.9490853000652200397786000889171737 0.0865855185485693197187693506550457 1.0905655239104215188813910172655813 LT 1 -9160721321272519624339245757.6216113308143771706923971727048249 0.1182672826291150504236833358127491 0.0523845604129744043899680215921194 1.0538065134712027358143733845753429 GT 1 -39686175001405432237861.5073277075633774327878801962979109 0.6234175766668582113098412601001171 0.0115747944131207609313948576220871 1.0116423037896814513706639094033067 GT 1 -15858.1688109101662252522448591542462616 1.8048930664917004035574248138075412 0.0554072888095595734632683538946738 1.0570014378420354206865060672977814 GT 1 -71347.3414954525374972630912263286190480 0.0018238141793945541563353645294777 0.0115653178771752066046243047939318 1.0116327163262455818907801888976700 GT 1 -2960755183837720629397335911131032.9953315191000810227790832277449706 0.6780372001464591550708855489006546 0.0857188425880704738507571564163352 1.0896171427828097848867483881329568 GT 1 -15143196240228977319.1518262906798278991859391356330206 0.0827182778821229102914539196827997 0.0884986397362581840010624765995500 1.0926621925291057393072501511288973 GT 1 -832529291622662647512585654606117989523.3597597735609324702224181521018065 0.3944777519773925705331790780449237 0.0530359356324373093348882993091230 1.0544941333296131169672749277099762 GT 1 -134350372402543213211077.1804959390688968709669976942599994 0.0857787697998770300832475998129763 0.0575230968450274831532812369875696 1.0592438658966152703733917038320954 GT 1 -4303489390199038598825691518.2368945481090674013649181449230042 0.2824513887043846813404528283608441 0.0061334398792387698445956614962879 1.0061523266886235757439397975332551 GT 1 -7099502690823713.8220983838321434139932808459938228 0.3749617252603577180076819816867886 0.0999271414900248831751950148300126 1.1052795650344440755934071283319609 GT 1 -10302546096566278675.5161838724694793947570992262356465 0.7701748592434669141107168076787175 0.0977938501324151048344204126770582 1.1029122375074816759514431795783328 GT 1 -6719.4399595309508540152747357680165470 0.1646564404305179937572710341375626 0.0847388514453444303548933882110754 1.0885458461713500642494892991702799 GT 1 -262982630743161478487807.3606702632632640902172174105928878 0.0122694742877050006005355042683501 0.0343212333243105521872519068884940 1.0349240397463962727692826685603923 GT 1 -71314618484.3609553135779466663461665908869664 1.4163226293373743029380745013300355 0.0733372883403585675388244418990374 1.0761656289678646004695817535246798 GT 1 -3117918644911301654291317050357.0570985192407878603213941106067190 0.7243463914586057596634046027115101 0.0383906278925323553926750732795751 1.0391469688806906566397116970180965 GT 1 -3192617271730844582244319933450101.6931028251059925687521082925880865 0.4450051597567447456660691328652059 0.0970738400311875553886589931338298 1.1021145008147332418946546699430889 GT 1 -3734282346837052511021430311714647583857558.9206530705007405157493178797514287 1.3160065412967222784099065648389411 0.0270177551320977635572065149209794 1.0273894447859531522909113909968266 GT 1 -8.0957049152985710885619765594413447 0.7106727334418209211892840012580314 0.0172305445973212314374901459953052 1.0173807179769335780876562212210386 GT 1 -44732521958471578.0143373098405960681791919553011838 0.4976791913450896468001514349625747 0.0817437969707796775606838552406547 1.0852788390324079076509825278395613 GT 1 -23855920781334776869.0965970049344734839998262602750569 0.4715029429887600942396760336530136 0.0537501374437448745838518352954485 1.0552486194814744053469694713306878 GT 1 -2408887679924669165.4957781947706248029400612911463404 0.3790200506447330403382229620700767 0.0213417886050613776693576639258757 1.0215728175359903374405753065561177 GT 1 -12433537920746618448852538749984.6901597029992901249920288437832759 1.3061574391645058551568335840523902 0.0370184632961053575409386224794298 1.0377210400532774402527443947522573 GT 1 -4394226578257999186.5898020665998672177499362083080210 0.1930425234450240900251458109218927 0.0642782106264457554017010084820441 1.0664370802624619582754833471683067 GT 1 -67227143907469317.6817906092879145263793739534105373 0.4364337678007910574390263181656901 0.0047369921997820532675468001095063 1.0047482473049624375511355529592366 GT 1 -460.7178683174104201930369548774816523 2.1145107873383651442671784354401161 0.0947360107977963077439003064743836 1.0995286770426948506691204392533251 GT 1 -73173088318544480771.8809527935116503278322434868178919 0.0249655853485997029222557369032509 0.0660942062317695587869322818643698 1.0683797090435087740090934322389906 GT 1 -312167645403440334146.4579024481193453015286745329065459 1.8222370721899503380283171452339650 0.0933702282675498964648546994843892 1.0980211021303345950945789584050794 GT 1 -789932.6971798292613478641938020334749332 0.3355683304310489265662216102303767 0.0769169913165457877855637603245058 1.0800361149548597134576086053945365 GT 1 -101409198323330762234458495034261.1096865354071093754615986672595102 2.9783883646843706419614544804901502 0.0360215252241554253117503638347115 1.0366863136915894966539281344817732 GT 1 -871992201894017832657140351505.5215537432708607301801033251506595 1.0172842274322846403530111649052683 0.0766314919891896986382014155304867 1.0797268738759036664128267153526978 GT 1 -5322255278234648611070226031.0936678171617588274046295887928305 1.0657836091912255868412255700923574 0.0908346745248708620206714846054772 1.0952283251318679185947065231754268 GT 1 -43325886748691250285369157520064.6587806200670629303992732735520021 0.3059204053252133760924626165639234 0.0865044807596812540758305064419395 1.0904768082222808533758359587879653 GT 1 -36684285674515440103053411588030.2407375305472296852177197516308368 1.3717554759037421352654364025721262 0.0037848948320423118135432795394289 1.0037920756713613612470530482686654 GT 1 -9448516963020492.7646741081699198581535500277754593 0.7458171984640985390365354835946571 0.0454128407643493170994677428375979 1.0464763259614760128730999023234626 GT 1 -75961408468285242250279761338274471427288.4130341129052700806048275882296211 3.4296409586291381300015785726588612 0.0501416805837010447640654959469272 1.0514424429661742465470330683173996 LT 1 -20719761157693.5353239759242454159902284465398411 0.8906965990844964901443401952913964 0.0592525838571523060885533905613395 1.0610805961051364842722595278619412 GT 1 -4288720344429292769457261569876078989708735.2806034578336799216029264478354659 0.1142784848111269703565432450985994 0.0501101493289780519602390647203189 1.0514092477719665438502219224644166 GT 1 -490303771578638426688655410423526455709.0002241870785278666608656160847264 0.9155124365793200475401352321834555 0.0558968238805960196184256834903090 1.0575198220724327510029350909264558 GT 1 -493928072260112261205681.7319710635827803154067448106841956 1.8568798323670594745311194923634792 0.0539046030376196193352584627168959 1.0554118725595697835506379636695954 GT 1 -270164740968189028872575001064.6910466209148306553786673128271029 0.7192808799377839702375631141699115 0.0015505888336702209819683149070468 1.0015517922406896400195483940351059 GT 1 -1064473416495666034312437328.8985664916014376857947294669475723 1.4560402276556716439953634111207245 0.0649204322036181761050333913647489 1.0671236540667184084278131165453376 GT 1 -201715115045942889063562400901438950622.1455724646674028105957129127474785 1.9067481308322182589166273522568717 0.0071443443879383940178473297489729 1.0071699874244206138617521077653599 GT 1 -72306241405965464988078.1837800948046073571818082225525222 2.0963906909972568726638725417918673 0.0986296627736169632245515421325701 1.1038390767150397408060484517161780 GT 1 -101002388952688857688050766.3877750994897113831343032281579677 0.0761695093098857070380348405081114 0.0417533986287220556036713787956526 1.0426501214313593905959906626317563 GT 1 -15948898587126983378682940313257753927256178.0468810658387731758553231690398614 0.8301515425924230236804765844783104 0.0229150631808174853766008316155870 1.0231816943627445519977362711289662 GT 1 -625643.1138581929732611657376866451005972 0.8293998308011233256005197454476461 0.0648043401398311174743372148496479 1.0669995097031301457139478877200140 GT 1 -1330486388830311719055959.9167736469562922249856250573063276 0.9841640667924776453621009421813814 0.0885986193274744083090838472849195 1.0927718852615497354966310220299110 GT 1 -3044489900256482707472634615070297917825206.0982241023097541802856583780797439 1.2020270441920524896036568180759002 0.0964524001828376005626090961739954 1.1014264865333218136312607945708893 GT 1 -380931485315859864.0174048710881381518381126698749795 1.0804126503976358004205114104065567 0.0388719272208133250464438486461897 1.0396476085698106496870327839455322 GT 1 -528289230836212572.5482505501380685156213385612939398 0.0294401863922737879475492592298448 0.0553017612203271364052678811654034 1.0568897265258468262553659966247297 GT 1 -25017952.1348143101062409033473350483317074 2.0460239118511509078657671980427434 0.0028575251481506967996159424104765 1.0028616156675032400420304295484347 GT 1 -9523966488161226.7903524517213970513803094217379904 4.1266717737645178561565141559538562 0.0699988302371630141549808277787596 1.0725694350261243371028598290689480 LT 1 -527058591752.1177314105427670391428712036683610 1.3923107638261532339049050380035578 0.0682991551033835836868164934394975 1.0707434976928359072519612714982208 GT 1 -1.1881813784792512187848680225129488 1.0717899109331797767782843832554080 0.0553646404727382809192543115181005 1.0569562888867667903364582132474164 GT 1 -29934428.1329490486218986438417985780989242 1.7331490625157802214812752933248743 0.0775022105166830056543779969312861 1.0806702992943723682358154726356098 GT 1 -624594001862654.4853295270660183273952012551309055 0.6517548704583290016742260352324753 0.0697852831336109555150828079038747 1.0723398411321843400883508870668611 GT 1 -2201735683124842196265967129435137523136.7321768171651440019894081288850522 1.5906343282097419965639433203302696 0.0734142353207485773116251705497601 1.0762486690797725685063993512654747 GT 1 -350477695.8458547623656107446812996284158984 4.3030326177687957086402324068839373 0.0441548089747820287920347623187970 1.0451593131175133313599739064539833 LT 1 -41472104.2547060973416154930572924264941156 0.7058510507938914952194613499114093 0.0034957155209622592668462398540413 1.0035018398111470008091939572663924 GT 1 -48572455763017212188604148548021036.3329912316586949456686320850435243 1.8823463369757656779185728006203725 0.0787825595753767078000412013054521 1.0820591789258242494383226071874333 GT 1 -30200477938496651745.6899286786762872562372260654402275 0.6443893087485035808312668377775382 0.0877318954548624576949974357474727 1.0918213578278291886424444775716535 GT 1 -58217022022787578470197.2794859608064864430935560558788082 1.4958186940678142498504446514401850 0.0752858739880089158056119942533133 1.0782706421964294243764932422847424 GT 1 -15169783.3697045637600115311798926475065636 0.9114214981797186449035983143113214 0.0407034526725190164575480731440622 1.0415550263229723475980136715423656 GT 1 -46045402224625919523.7551239177246610146720445683690959 0.7773192731772699022482587940457629 0.0804834711188454848877137648291030 1.0839072591546235124846444794579659 GT 1 -484333567732239991735709143.1575517948334373747753108916527756 1.1210778454179866254205378324040185 0.0105064169642366888244389402900421 1.0105619990178834552185508327327150 GT 1 -40125816044495953540799385426162182257135.7844240342211090741401304363517326 0.1544165502750300083975090793725479 0.0566674266467937348013451284540411 1.0583363826459314920628036578899892 GT 1 -3515012.6583651250294501809934318808194569 0.8959847836318517469424494745474206 0.0841468669373195726240937212251239 1.0878992622474605396529975624636788 GT 1 -186020181685.3770837990936872135960418722281659 0.8890193848245751557446999542729872 0.0228052946629754276231195504913463 1.0230693578111173932107116017429286 GT 1 -88926347250150642859628077400774813684.4291810427974106430951680552933615 0.6346900403388928726951608533807392 0.0143087150664037691326090583341672 1.0144120718496817017107115030954986 GT 1 -2564818285495414412293993170741.7559423503219733766493776409616475 1.8578364740630103127368446452615416 0.0287087910460577182831229512236284 1.0291289494189473873206746665764726 GT 1 -3618926456.7979309115224716459257705705574205 2.0463133428690854286311094711191328 0.0660877143098929111131616746747335 1.0683727577007114535591687163717439 GT 1 -148821027588996756036768435806.0324249471778543812720420017982395 0.2531231689622325797944131577205575 0.0920935531080244502337185421348240 1.0966139377463064342404523238304570 GT 1 -42906233789574026818227125190125671555.4262469748898871742177037412693175 0.3759113937154106917007030500921810 0.0779609279906791340028656086227672 1.0811676788729855401286235419531257 GT 1 -2205332822980122017.3874685568613241123768063072456889 4.7464734282189423681512629033864935 0.0650482358904022222714815714690652 1.0672603402118139202161907807571101 LT 1 -2027517655.4096505850465770013888329175048757 0.4206841110027681420307393462604565 0.0800962561763797328314259869522780 1.0834862406914355749128102506958369 GT 1 -235985235632.7028758992899041856836745312027867 0.7129347132113990797729988663818504 0.0428480110544870208334733910417511 1.0437930820145630980030199756679170 GT 1 -112280174192982705621.8194909477489321043840951859193801 0.2558151547900676595206890273670616 0.0332185722362170755415163403372032 1.0337828403458229325073863474778003 GT 1 -138454892688787175240.9631998040876386214623211445570270 0.4952177581911855550792795051369873 0.0393715632145483101962157142758275 1.0401675870400339211786537869863265 GT 1 -1125516198027198062054983735517048075538.7787754788348876670842629928785167 3.0426811657313087706174503276392168 0.0608947728829152153079980560073849 1.0628277430949665213048931554201872 LT 1 -3959212908762919135.8986134123812517679144231246123098 2.4650375794283037052252238473456792 0.0600214823215186383810121385138034 1.0618982575127639143211133197617648 GT 1 -1201465540216744520360955999420974011035.4357905385327333967555959861741567 0.1311732954177454892879154757233543 0.0596307157205990102833750983140539 1.0614826252492665281299114478549438 GT 1 -9481491.9032820254840717701775402766103059 3.5482867596032509666547126622291918 0.0900170557860156082427630510908299 1.0943294222688816351009436889404259 LT 1 -2284003919605614387243.4700801998430688219185702542979281 1.0896355631749806990297486787028369 0.0759626622569246545287095177282964 1.0790027993440148717515595090472302 GT 1 -16768067632.2787677223076797393718088220149293 0.4879285465757972967338188407037070 0.0439695822844671485729146782465262 1.0449655487428358371747696002398098 GT 1 -5.6672014495973625448041313368135068 1.5176522489879806922068561494050128 0.0917921862590524244472089805147525 1.0962820568087786730755225887288610 GT 1 -116093915509651413.9321124432078164072591286369764808 0.0412701126648222604090037061622786 0.0179139024687085298028692505453256 1.0180762987771806621635228579352341 GT 1 -3489861924086328204116134750171569557684073.7070543940392706181176027006242951 0.7395383153683701215439313101378925 0.0017568480757873688721440574668988 1.0017583931432658047102376221089939 GT 1 -31491226746650917039815621062772972549841.4467707301635028636768002175338512 1.0435957583137731445198005313442968 0.0593905184360105546106670553120854 1.0612272291860511396093083847257030 GT 1 -1231843418177738682.9896475635114432424718100354641478 0.5336839390208518694590505476553320 0.0225694918077876907278633941572410 1.0228280810131926349906897827289034 GT 1 -489805685922271.2095310455278491199391480640019026 1.0787165879559477595581797303512619 0.0972185835753001440038718319120853 1.1022748186273346542145109494764481 GT 1 -54195395897523715226726147.3049822212613222195300827220620125 0.0505756143422733561914607300946854 0.0187588630585957825854200167104391 1.0189370423427147282510290582885040 GT 1 -124474567388464512511246692888841321.7609537292555439131139646783800022 0.4353563341522607102947979671350251 0.0809619858246155008516734367582434 1.0844277927644441626520756997190862 GT 1 -65444416864573418785.5957486264310617710550735985698269 3.5442987722902893151286847823008392 0.0691190952071266243170843568406347 1.0716239316999289172545986584063235 LT 1 -612613145020783433618711.7182724847884878033490303116744046 0.1475834527746388917723989848213372 0.0321609775188254051057728418605263 1.0326895046244825320515576813133905 GT 1 -40285112905744138785838686211934021724.9172207923962836922983587352696638 0.1901655192991703879715609973267310 0.0841227053465604649353653328185994 1.0878728810830763953118969829436903 GT 1 -253819781962692283920.3237524009978924175285073458052907 3.7061280364035355856444011435616282 0.0343498911163235852575991622308032 1.0349537165066599396750906066023777 LT 1 -3060412016770811340637185.3115434268009255136657438781067361 0.4827207620587043434100339903874251 0.0329101096011156057499954458220472 1.0334638298358470203339737463686493 GT 1 -33.1978434601982725819758061831825379 0.4244153446966160624725764642967958 0.0912199701170838836947384194222373 1.0956522054172091907101214466144897 GT 1 -362348841729956038440451567195.5602512811379448213779719529679970 0.4551305339403462669678354382236434 0.0445629262741163629874038866833879 1.0455863743769241481395329609916518 GT 1 -31250451446316016.3463927551625672861657785801103644 0.0274622382279996866871515314224128 0.0833500422115953313658102415605708 1.0870296050229542631450046213794097 GT 1 -10717737371774590273911002325.5373992535299712312199689892157769 0.3777658441677516582860745361623235 0.0932757234302004654500734734574056 1.0979168700444675554992042843718156 GT 1 -1244225349.1513938842125282598221807967211061 0.1648010656059661443679778032038386 0.0484771177852091127705430785174504 1.0496915439646369997269992774488875 GT 1 -11590866343052609010168.2393081004642920323607051061876992 0.0528367940080315855955677327817270 0.0589226669003888416371854243591951 1.0607299609460692950257759997482645 GT 1 -29331258473529494519171020760588239.5795570199942381427337288100384840 0.2535536549815948155125314190947653 0.0087350823510780890359075000172919 1.0087734568157550015592321839146116 GT 1 -18468991061695511.4979241314318179358595724664798133 0.3489741673920764352197822843152454 0.0470860284605823473803487357077147 1.0482306506099522982791206437652204 GT 1 -1493770823221239765953238159441878328190415.5390226601370396604407578608626112 1.0113029923852992564960933858564512 0.0671641903619094446222331160731654 1.0695260747165772427379735849976497 GT 1 -134840254.1536619474169075261131974185584247 0.4250737443441978982856662523001021 0.0685821721554371064713439848141068 1.0710473077059833887336194703492870 GT 1 -116715516091785940.9209952807775344055378781622769579 1.1589718902936535023549134765914323 0.0082742853393718116757754238931109 1.0083087072476104044027722427829122 GT 1 -57141583070103767221133.9923724336800679887667602408992738 3.2955335227921502680407860321258281 0.0360935638403440836177976919170885 1.0374367342962354406865000497877034 GT 2 -159395794427.3254120083752280974689713534681525 0.0841149376999905045811977807134808 0.0408657982196618294058858299832778 1.0417242745980073938649529352406786 GT 1 -20663.6306883982255704185063273078359242 0.7471228746814223194444356180623827 0.0556140418938945162165560788490920 1.0572203424686689847835180550905009 GT 1 -1665.8543286746493438354177011790915052 3.8471935886641805177773067633319102 0.0983213913097209244785506180315127 1.1034971320688914197709729644770483 LT 1 -583798544399575481897561194489844609468548.9545978487697579286346999758140033 0.8536550150978086835619363131547966 0.0690141530557177729171915307355197 1.0715112038138736251737811478563135 GT 1 -1760439.0854492490247169625140454177061573 0.2703309241905673709450205310431216 0.0405281971934135834981881576270310 1.0413723513486008493461304217726854 GT 1 -59527983863793744.2142456023846315847396903432113232 0.6960664123867756151431988497059832 0.0377253222902555392373453488204588 1.0384553413069180074424595232041596 GT 1 -684872200292934736267682205798546657760286.3495865735506882040285724705205591 0.0361905204748414621917552943044316 0.0629691233745624676665474291326703 1.0650390446447655388157157186046400 GT 1 -1894412635846408667575968053053.6838021507870738838561663024844225 1.0360173906576120886915596881120244 0.0707861171442932878050145955586254 1.0734163375434827675418531601481951 GT 1 -6385198445849644450677100125861.0286640845864211107308898793155427 0.3394203074327508590597984555267023 0.0455119332648735912837285408960346 1.0465801380054072600964895962836791 GT 1 -7153606414660683889391138839.9817857428570184488419358451051178 0.0652445835027661704459035634400866 0.0050136476910135128723379833665875 1.0050262581899885959867866847622953 GT 1 -15179.6228148207369686713401804651036505 0.3972965150504963370339802610625775 0.0113715483688181161684060445134832 1.0114366988034165596347619461721330 GT 1 -67203311572678433020760438706067553464.9183047505671519226407427382715930 1.6901511606518465418276410640735442 0.0259450261887910628207749350582199 1.0262875356477425600476541514525184 GT 1 -9859254406756064552837040421183359859.0775787324247449891952807989110672 0.1149679806064115260724742940450254 0.0607383114884761300388726015421240 1.0626611500896286015323377821505791 GT 1 -115885159144199568518270484760678.6432805855759261787370040625657198 0.3934805641624830327366471863820235 0.0136975185423663567211335850256706 1.0137921950995368092069079532059305 GT 1 -1259218242142.5003082782842761220381935589631649 0.3625841581957087805330945320022383 0.0036755752182127966837863872947388 1.0036823467427293050990544169638601 GT 1 -1456034477.7754197261914940454493153982618408 1.0106101761936697709260986431707598 0.0416514708892001462216000871035340 1.0425437580810649907223128767453825 GT 1 -887.5788231056056917120641179559888995 0.2139568787681180032212315507474761 0.0356927558964887187370463451276621 1.0363453172016673382041062098539517 GT 1 -8.2695262620706689424621809436397012 1.2925437773228519933245029144600011 0.0429748971147646224911258733272036 1.0439256570631361568121036583099441 GT 1 -6116708792694939286700793837700970345.6181786364927405315518869702206886 0.4913243671188855525231814661361784 0.0806280557069795448905540475831195 1.0840645113105222664895580551201789 GT 1 -6754.6154924603252002102015378361659872 1.3668334378995134908037352134448342 0.0367390204145816527365527814727014 1.0374308970612907610648261919113909 GT 1 -25045210545609569887482104080582184908.4533495757931837179270653186992917 0.3187839079944981390540719286953136 0.0471127061056128086128001845252537 1.0482586468606800794369319216686141 GT 1 -5716960184718215969791181242796535061993189.6717282227024773229430131727899690 0.6683105858759268223170551798373498 0.0694824638118865811988259577977510 1.0720143570934134048516930027413824 GT 1 -26248560435547096830119991031229.3990624822423593493283762824368277 0.4202941138382338293333625646977872 0.0691849184733760666734732302928624 1.0716946449278249507075042812395100 GT 1 -32344025.0019765706324432023034443156563223 0.6050796957563664750599229037790435 0.0877574658137643680092072353645439 1.0918493876549628513624605248414461 GT 1 -13380998345665382282291.5153192735613809807104398062669381 2.4125740102870032925357671158833096 0.0547672420130869068964852100881456 1.0563240770683727154150835128284741 GT 1 -96.8018215386831630412966688228698725 0.3078503678886619354859531577093998 0.0692712873773960319331547878449030 1.0717874376994518049513477857600470 GT 1 -155112078254902402771159574138062485124.3169563436456115760667559620777806 4.9921532234618511710516738955382663 0.0861299509023200112276854971861037 1.0900668958663791532894500104330793 LT 1 -81380502366438.7615145449843344439263613075790587 2.0325603045383256831762869526606341 0.0715372140465667853388001888399080 1.0742249787411821983000325265106111 GT 1 -1555498.3915974888154000492261977065421378 0.0479463545280108337538386260576664 0.0466460248722159554146468055238151 1.0477690118388133548041350796002990 GT 1 -864314925240.4374798988652700883846425435991484 0.8989513286449826666400951246828302 0.0670018683125848011312462088201957 1.0693520806154528531124267039788195 GT 1 -448937195181482527607448635886222371269.4921639978474271042052438800523250 0.8858353084657510078915651519223632 0.0005818067520033175646025248318941 1.0005819760672273346363233276954181 GT 1 -1550536818367817.6871314225376386266176694423887003 0.2554433003282430157187889211122923 0.0053717299158882093569056276545270 1.0053862095340435966833509861747318 GT 1 -437971950934607.6131119568350991191680352414910250 0.5649186471173662962403739920007559 0.0591118678766422112064155179835081 1.0609310283730620358293402257639419 GT 1 -505496116548031471699879906.5308418886822718117987561881640269 3.2204409270470479245007466440674763 0.0726117496723038440924151852308139 1.0753829765813170000603265938676717 LT 1 -3900062.3617334906021758210678790958601439 0.2168874961367222763520387783999139 0.0240299457890348716445245448675441 1.0243233752006480773836525861473192 GT 1 -4529594382221712657121048.8518101462766090587850377953719472 1.0654526650269535929954126540730187 0.0417844016497997129828010643759189 1.0426824758613970585512066596104598 GT 1 -28864124932023469.2941424775446008805827579247582586 4.0523821408167482453999241195644102 0.0176692220305506682297400700955351 1.0179860905210375742724984581164537 LT 2 -413181574533003541096487.4753985294023724866836058988285952 1.2920879807903868244625546280117022 0.0884494905563955068764386637017108 1.0926082728566144955281469509150491 GT 1 -671822019079024.6443978666080218417160522567766032 1.0658134193784320489709830496514844 0.0508772611948812728972254128320756 1.0522171538510306220259444559099312 GT 1 -2650281364787695538761.3447086985137997136808702050525764 0.3763141080564849387838739562773835 0.0896744291987850100752099188169249 1.0939529733444816083010216173202597 GT 1 -318822487739525455131683204930480.2105544934732734841518130285219782 2.0983620211375294265819576470689143 0.0731468283535319763325458229855430 1.0759601168498273793547853075971564 GT 1 -602281384512763456873.5056512387465230263474983246994718 0.3156145083665206524391444315642149 0.0582658811775522254573845661286185 1.0600322960271457749771539722688587 GT 1 -159505378395490894042338018.8258814607369553107158451703861126 0.0968525632900570488686682761993798 0.0719499493850839785870932115540613 1.0746696137980341999533152471625987 GT 1 -121848140294735165.6776054542007760534447823685236328 1.8466658955383238083681298591426583 0.0118303985733563273167693120309885 1.0119009346033954081492136103976801 GT 1 -84125793646418137.9276937630583865834029333352375183 1.1168067821806650893590840434447495 0.0648845561968218310462706505061927 1.0670852880069457847099485093704153 GT 1 -35708788.1142687437861006877102885613354359 1.7927574582577236916461605732184243 0.0052302758174434369902859875721293 1.0052440015906448180518070635970499 GT 1 -479066257074689525286445546191567112.4172614131872504536434974665406977 1.0106727713590049737154240214588446 0.0666278350723526098253610132798094 1.0689512670728048884482951297158966 GT 1 -1159493358300088697695684576023.9762772777061337928234040487740808 0.2341113214112330445917632014019075 0.0544061532835071840366173180008361 1.0559421396309884088796237284027445 GT 1 -12447482654029.0913967596403433201480418030458265 0.2360574821059792190322046444525889 0.0911625272736498607532114954970358 1.0955889986717078017203688496004143 GT 1 -913041998.9468348769821570737871877230669822 0.0380562018603430564622571057512756 0.0420479666562969509585453015519655 1.0429575718433977703349228957334849 GT 1 -4064490903610073.4690508132176175002538292434478763 0.2375780638171586238224646712003370 0.0322324213665495794434315816201140 1.0327633252528224824600755513910275 GT 1 -4826738219329898136328463.5587656413548943040036886312477218 0.5537013808563709495031467855688526 0.0407173860841910055483255419162950 1.0415695510420495680865241540740322 GT 1 -800808924979153283878921374106.9380354270454761897739683582833041 0.0034138898207249631153624026069592 0.0796378645912671792835022490850753 1.0829880609449478712670043869182508 GT 1 -46437663186205898809818496347276982.9323012159353797487637320150163235 0.8698843514430834730966346885869099 0.0249213675899299125883650046060313 1.0252371626105025388845389805003152 GT 1 -60921926871291427658362993114662425328.7347840980047119515565846487992366 0.7332379843630264458313925460552877 0.0583788655396251413061839718980107 1.0601522780241816678046091204632441 GT 1 -80270637027641586163384.1143101919956491095351818236872208 0.3248871689680766477943711153316601 0.0843898271253281501459293087789437 1.0881645803552775762628652067416755 GT 1 -1192232923156041155.2658009169851475352215346678064700 0.6848390444368757112004654639460507 0.0894778688150923883768400040955368 1.0937370734817509271500600234222466 GT 1 -1266701530153303761840807.1796683492987817750770217330311748 1.5629128412624423071565384590219707 0.0579401044850455546385301018642312 1.0596864230779009196493306953074217 GT 1 -23415343957521091450318002955381389216544087.6888046680883909801630630546517200 1.5696239338447413483409589533815446 0.0370674785851441674506488759276537 1.0377719408594092270940956292712166 GT 1 -571431890.2525115874543366533881013455957976 0.7049894242236078463227693039610592 0.0667355582475878276570820598758633 1.0690666866193511212183604523744369 GT 1 -51054490114808268714255.2031167971866033540733136167277506 1.0371179454328992495903404253397168 0.0988071483967248636845855853816324 1.1040360025424185933233700889153447 GT 1 -35468242539444343274934292007.0196800789734129865844467660412599 1.4284833848783877975661923347924402 0.0609918867040470798875047877722917 1.0629311594534244825110128808025469 GT 1 -487789699493999657.4179277128527757495395546082512828 0.8329115674842108436855186427536112 0.0473166625162864251953178452437729 1.0484727102053748312305944713097797 GT 1 -127455182449286.7260516616555473838015338223789990 0.2544822557141928310833183371645027 0.0551809824577916933699410813263545 1.0567618856582433797654607277562294 GT 1 -201709907676.4479665318652717412594329101531927 0.1997970109869023254914460307110512 0.0591497568664425751314822729166133 1.0609712985724730578403013828609604 GT 1 -9471772564281444220.4477869635904438417750450309341417 0.3677794912784786630884749287123740 0.0768291227509247309127111595912468 1.0799409291666461728147506670163560 GT 1 -847315143846.2004771435472350247731939482324801 0.0726458828770655016267173566155183 0.0643012557566808662924056725376127 1.0664617087517002768125261839185451 GT 1 -93822925260.7318052518598746327759993037946009 0.3942866720491190945665117645059916 0.0055954074871665494522162764996913 1.0056111204205627785659357661601387 GT 1 -2951767412432.1759956895056306094046829037385777 0.0006319195068075796445924757583267 0.0664639000540282726344811444062469 1.0687756451401902297815789126801000 GT 1 -33117.8586342933531205255444150431433346 0.0028093066505114894653282884931568 0.0016121885540478284104971766173462 1.0016134895284801413419270348414350 GT 1 -877465238.0353451113103047844237303710210862 2.5915311093670196221058741913287719 0.0171006081951409753315405869664391 1.0172485121859590684879471788376644 GT 1 -189827783668824077984278433143777523601261.0569993478144381103809354058257959 0.5598368195229489860020657370431108 0.0228100096588052509085179592223664 1.0230741828548667213990935841732864 GT 1 -383434824330915595714259628903472714409272.5748545153249769126870528518424008 0.7395602259175465074279855326353825 0.0689394966416073420682093023903225 1.0714310163210775418908307958045656 GT 1 -18405072973540218493582383324.1022343728158260342878794105343630 0.6370294566521645923680316718735151 0.0290271077471656904244757570862696 1.0294567284308337371327537014621331 GT 1 -2029397139.4601093566967969633534056041119351 0.7037553931855521798531589921589592 0.0737432643680760298302301331924185 1.0766038304609809838524984689199164 GT 1 -648179391236.9396582023480348746498290849096006 0.8237814160532557649457244943302933 0.0705166085347811626784022157039770 1.0731263402264109369699109792239756 GT 1 -260966210343461269282497714801.1402867084410060943874701304463419 1.0584003730894096421772863372755688 0.0371576901803011422288991766153607 1.0378656294815262057158662270111443 GT 1 -17060527927950314297514649245969425.3914327940627194214810926377881011 0.0984038364787120165196775500630312 0.0840581046746314796379703531768341 1.0878023493708755710405064807043319 GT 1 -329134611199833169.1485427743470134058256129601165649 0.1185921216589624599762512926326699 0.0711261102945513223626323256653476 1.0737822978162678509308930789380462 GT 1 -64.6007026974998725499123865140658227 0.2441602842762191990910266464272465 0.0941216437127568707999476394228608 1.0988502465370706607051719308583818 GT 1 -676826263081333.6706132557434990183039662207316831 1.1883801258359523903031339134997126 0.0035601076630097626126514499602768 1.0035664599272736700881267092410384 GT 1 -474593028618414075164138358.3115529014019134207221242805241944 0.4829846898919195782918047600348634 0.0592825828022082212877644334093420 1.0611124850296880983128337517441435 GT 1 -721622424.5449034328115489482543328719647214 1.0720519616130561834415715698049533 0.0743610762574911377098202917496093 1.0772710515424794948391531382607133 GT 1 -1224556095029178469598632.8190267065748293896715939926407443 0.0642106692111849711860438777317412 0.0049436108403724716571926322098821 1.0049558709071322779926748703687047 GT 1 -1050093978921.6205644142513487662288869130969642 0.2209951237414730729738956020372101 0.0097426932366157403793232039548693 1.0097904638015680678299318749707833 GT 1 -16485384285891813285507951323735303401353.2080015462721525635809339156060205 2.4460256533820290332855435101815583 0.0033550606178591702016911842870692 1.0033607014541662862149763038557111 GT 1 -59022338135926639487193784530309553219414.5402607222960962403016411908563423 0.0208904940631132692348233763643906 0.0396696258737667736402557548444284 1.0404779140079182833541055153449322 GT 1 -61687820003207443757.4422912445640615945850966354680482 0.6613700000018976001199406695079527 0.0496467071664533978098355408751636 1.0509214763272465896519577413455035 GT 1 -34578341009411302.3866799675811583077353183578985001 1.5960542105854813117335618889842935 0.0257334475598402217112161893894934 1.0260703449767657456348724857237360 GT 1 -22.9584506085611938578512743770707068 1.0442900089924110381720415438145373 0.0849926527703098115425340816425586 1.0888231839796298316486901232871026 GT 1 -2.1955579363216984700039765842805670 1.1454271763836595567391523366089786 0.0606950862821868971629451580860240 1.0626151307403592543441072804625845 GT 1 -70119854418241.0477086712812639573488937548697587 0.9165075807632177838333251311134802 0.0463249498931519868054902283760921 1.0474322838940897644641696418426805 GT 1 -15988313455320968868368305894108123.6718160639394768264224410368036325 1.3570468403196856590762115147843169 0.0437427966901946313461666038091199 1.0447283609967643256447926699306977 GT 1 -8109498361888710.4261210096714924215170028998815438 0.2668957805459914265503848434141319 0.0693530658997236651266507611638030 1.0718753066070785152786148891747851 GT 1 -28008344118434810832252488.2404394128725873585025843813448809 0.2244425965507483318624335415572408 0.0324345102490204180309134850664229 1.0329721667039470088248700892468180 GT 1 -123688429913652903552374795208684626123213.4523226120434718008792534574546513 1.1145244607113636715794137291674264 0.0776035880016158507124045923454046 1.0807801998891636172592518436479239 GT 1 -600706608025626288635585710.6562145525926137375097758201500559 0.0104123988409969379947523709293595 0.0655179290593400306167221666413133 1.0677628379948482853992800246459541 GT 1 -33021609047732799708.0730011962227652732999048223964705 0.0155587421097744915392625098936948 0.0794239823121034910455909016860969 1.0827556986792560554201596754031272 GT 1 -1114879145833120071.4865112305838769428008339251938963 3.2039353907141590381386773859099903 0.0532831247050423356981826551101236 1.0547552006180160229018473705279228 LT 1 -251268.0726849834882473120990080940890142 2.2554152907972178606085142110646225 0.0402736986207135061177023449939173 1.0411071378996747071762371996387404 GT 1 -50394244822720306592443237812523729.8985083812759337808653648990130194 0.3479117693764488296125516529406189 0.0744403597486101106773898355622806 1.0773567079304105624345879265578227 GT 1 -12474753977598.7107247270368339500488159717077639 0.0151354938522123158162471402974138 0.0107635179208967104516179324789321 1.0108218636276546966911773039666310 GT 1 -1370766.8115310083874495330259410946756392 1.8755939680460845836402757652619515 0.0036818106488796009316676918300473 1.0036886051963251476523055893064877 GT 1 -13986814499457.1038114281286795575858689460202989 1.4546798604256913827476275083870083 0.0059414105057818170949323821084645 1.0059591309095054031776685968047794 GT 1 -47445120977764929219633996497619.8340381008243826468800320702065947 1.7844920951722427750613321026850542 0.0629196440526525073602407713702820 1.0649862416722829169723552979528011 GT 1 -1646.4512067957074242871636595631336821 1.0190616259813707749353946228101023 0.0417975854926952963271027359952031 1.0426962346998209714540944802535350 GT 1 -29749457072019.8495588636488112195464001901877481 3.6582724293912752975252872591268162 0.0216331898352374913857417857526727 1.0218706177471470141467003656297836 GT 1 -15986921987324437206618020896.9850468590322755295701050834620632 0.2086704378473123666270835281646506 0.0932119220580958367223271381260263 1.0978465078305325640605765133436898 GT 1 -198605701654512018278927579.4019595684784869096323997052852457 1.0559387921454326083352294496942433 0.0356106015576050075067131926092398 1.0362601256405673475660715156513149 GT 1 -128705199422110047198.2776368190683163661994379625594409 0.7365762630833277199604102566366607 0.0789496942441079019996862049317761 1.0822406234194775111218514265772052 GT 1 -587072745710820586479842.1647882373247394679865602866646521 0.6147641590776637840260346817472536 0.0814629538082731106803273338046660 1.0849730417797076386497057369061504 GT 1 -59905497889.2068064866279053156895157215151251 0.7180411386664959985639513745854746 0.0273518463045329510070953815772118 1.0277328719609864965451618947408552 GT 1 -341662094052467.0242090239698413959403616861953683 3.7656121648966675055214200204333552 0.0188658523480519596671678858302056 1.0190460829430546931707611875500049 GT 1 -1957221928904954885419.9848273963499997743692807329005608 0.1097781743500517699332725972826442 0.0848213295111467870763125057655251 1.0886359644751588991743381867105525 GT 1 -18664954566640328833007731665167839102.2877636607485544995704443628036729 0.6683098075261253130951661715891422 0.0424181908605323996420163097380788 1.0433441212226198425024398227735503 GT 1 -14437736714323631508521736069356439.0197556994905543748668999889741112 1.1878492077807438088978930591560898 0.0480658577807371874272731860058340 1.0492594249248140288465623317902901 GT 1 -776215556.7470522955938858810552192961771202 0.3770791719919623867128836327645683 0.0513228603046898612260879026097524 1.0526867493263441805773218311640311 GT 1 -123082294123335196704.5614782631031928967539352238363320 0.3755228992673428811131109578470865 0.0826123268488419495455431086614912 1.0862251336314252688134119541354104 GT 1 -291678287945391768996491203.6177440272533788870673954897001916 2.1277811015080980827753917155174885 0.0269514858046387930632629021882592 1.0273213376122345970189562959595364 GT 1 -3388556703846.4288186295081271884197933543339872 0.0756609839778253357771644576089019 0.0061514275467401133725150240660478 1.0061704255270406693916253542694067 GT 1 -19350124917428579965011793672634880549525962.1730937786337043721595000949255517 0.8492596498389335143833772494953172 0.0950815464677896865806721698630354 1.0999104459362967221485718544032254 GT 1 -21085758260.1778625063055147494828429651462938 0.0012205394031743595935374739428479 0.0083241331244485151853139093688660 1.0083589721919880234030163524037214 GT 1 -3951713828834568874999551.0788287454316857728350976516814717 0.5091513084092202462619253087653498 0.0674514526755366023581256464889370 1.0698340673453625606082557605191038 GT 1 -20896336165930.8133375347626985961537483906942990 4.8886327328531560529487679438343178 0.0713130444275921790074898308352626 1.0739835661991012940926442768594324 LT 1 -6835939823739258551855085030.3498926537130350050763517668875354 0.3883104517095408153264915109906127 0.0440163709940566616617725392887130 1.0450144905481317563583952491000995 GT 1 -304161184648872847747619500892133.6897071509595059213639506393859240 0.0982465278308628326439868562917287 0.0348226017336950994174016778290096 1.0354433621379403226360679772367021 GT 1 -323023312747789747797262869347394428.3595349722095993801697160909959385 1.3872616303719217040269079066109851 0.0863397766853263085751257815848190 1.0902965235634911859144522593234386 GT 1 -78663845.9202930341440379431952183262501160 0.3188362647252326242754160197357418 0.0307212641019566855400119360152745 1.0312030553100491804415366747118981 GT 1 -1.8994242463256206820758264660448182 1.0476388949512064159657664177906644 0.0927470104220549240037759247946092 1.0973339376858496549941933151695055 GT 1 -311.6355481008754292459780997139831865 0.6467063973424195741371724824210613 0.0698262068264588495822690157813214 1.0723838359135255949822601861844499 GT 1 -1649328561216876237.4633049525533712145714368464832588 1.2697791981038237371392881853489782 0.0056296943379883889987616171048931 1.0056456007942407674801093149731912 GT 1 -340096601577245.2855638155205040929562833270358951 1.0508730628937200424713146178191584 0.0334025580871567061610944956812034 1.0339731660542297838085350446030766 GT 1 -274966078780691874.2910684103983312430224688899405265 4.3084638022812058822618766345001671 0.0093531425981422374843340817371642 1.0093971579056624195883715064913113 GT 1 -36.3680285317064974856285736407179882 0.7242690751196392618068339278261382 0.0360930542425766559668950669926313 1.0367605183281225817297761781187640 GT 1 -102921405714459039866749087375949365.3906339305523060903070406103569946 0.6821993723342589881645298045706958 0.0896834426143418831928676114739973 1.0939628747033674679454736554563198 GT 1 -22022277977119335343725085785.2302478576802416989460965200547055 1.5002207529000902855138131221912798 0.0323651256732753579594744844497495 1.0329004588053100018609317889658510 GT 1 -61093674800080786213507.9146169584823977835373159925782315 0.0283416977006446601724713304889958 0.0028049281844522654389196110712557 1.0028088693670602512576322972467268 GT 1 -125791048351052839894814908873.7821136462882338198039172708422810 0.2703567871528589745885184258307593 0.0306095733290932341108788698830459 1.0310878311396301061981460720121756 GT 1 -423256798675692706117631003585413118743308.4924895018113891988600799875934919 2.0220093409933194155198982439782315 0.0375063298121786738656267864358163 1.0382277892700601453307918791847700 GT 1 -64164287647020911619372253354211685587359.2285561735573345328895866189947275 3.8659604400113685278992860127919687 0.0324366763408236004571558814621464 1.0329744054094927819389163960046117 LT 1 -245983859639290099576678824785120026274.2524857445735792722160752740171014 2.5910569798689822211254231731099605 0.0667245958661638339682417160477077 1.0690549404126486174163963937209038 GT 1 -169125958340690315708582.9569562875655757781171240850477568 2.3882464077219236248432362854026082 0.0097291023229782179459174205238557 1.0097767392672673045121954957825084 GT 1 -65164697330602078099431255026300249164388.3462033517980794546412923132809836 0.3935117944682463706529973009204382 0.0048339459156600036138510174319517 1.0048456672209104422586665536899334 GT 1 -4338936170357738.8739317662261649895059064869524387 0.2323175015390436172161130329649596 0.0419260194010717994841921149834323 1.0428302799856647111336109810544931 GT 1 -3291778373616305.1270976577272977626421403397026035 0.2572683158690934759196258268944559 0.0016623506456249943091120038188170 1.0016637338836230990194450820298318 GT 1 -664659.7667672028628211955762580509733215 0.7668859848819701577044276068993808 0.0743919984428074727866902717499821 1.0773044584153246230992356295089152 GT 1 -1314724571050950109589755.0664186360558843699580462104756399 3.7642492777617548896529362799654932 0.0894819973351818009595314860403625 1.0937416077256840269198653148187497 LT 1 -4.4060982513985653666663599328341175 0.3046017793272527476020965716035747 0.0348407364949776012219781764295495 1.0354621513591597905305507757514976 GT 1 -69363278730295.6422168536436512882961993776303712 0.4213193822460565877455489067371931 0.0789702336650578363335116701031975 1.0822629236671833260623299224560068 GT 1 -2872481736594.3589103508270244309112599852675802 1.1190759011718863976167544629942588 0.0111582263553004883187936350467838 1.0112209463621221651922712070720201 GT 1 -153618184936220815603666648402298272162731.6709305411750534947670122617591729 0.6635771958115595231162577818658211 0.0070759880269002744862021772974265 1.0071011415578011366669955652469299 GT 1 -4982730298202743.0918102226155400617048497166000509 2.1010340121083570092216761885884804 0.0239057636779443124879794227862835 1.0241961436213806025524305781173027 GT 1 -6467029701.1031941101546705436125083558400868 4.5844483693472963881517165321865383 0.0219626687282647248710158111271761 1.0222074386413209697815313224724635 LT 1 -487922633490.5299208164259684158973773255818762 0.4391424814008653832714588948895574 0.0876928824528683869516608209306762 1.0917785938995157488163904635636809 GT 1 -1128711187301156185499564628630084581559.5319146126322796669537550502567351 1.1945925627278636280497990551952750 0.0455117698751470466365559079625009 1.0465799668249407310959247714550520 GT 1 -4568169046771116971469215117497.6118027466213769299168706516879548 0.3473924187677042382939215672324562 0.0103873479243829702770894887927006 1.0104416729455534592766908398371040 GT 1 -206356782216462106775547.4397862814608950363559390671532139 0.6374840033046139048296979273755404 0.0870904968450815336847717452748091 1.0911185236121583970845278732203560 GT 1 -68742409847.0208036932815772858477499831260710 2.8048295187178677844096935396325077 0.0403113317401700649870804430314884 1.0411463510141462034834178754901693 GT 1 -5907736902663051403137754469.8263644372983206170671528248084489 0.2992132898001464140592663435738652 0.0312976466129037217559691166837468 1.0317978831245499814471615973331139 GT 1 -2212409113429.5838978523556460558844387650038865 1.8875329542750700397840438693850426 0.0688367989957672329914072461856118 1.0713207206077283555291245285067709 GT 1 -1206577825646768659344056431956075976532198.8414994666496945201877963137489247 2.3839315849261986402039240667084226 0.0833227811124049375072345552634130 1.0869998655421466638095686910234481 GT 1 -13253.9718084739568737909813340923760195 0.3604324979755560310716283902118749 0.0296676454841241260817079845867541 1.0301166326486473735896949043163989 GT 1 -276298014162119791522026477.3506196113963203345406769619315064 1.5782416582855325985545547417114257 0.0614366181151825108540037347157820 1.0634048899298342260764078029911711 GT 1 -36536384109751032.2366020944948822939786870985222175 0.7583401152711475785886773603025868 0.0277333501774351775756879430383683 1.0281251810504182186370822184205075 GT 1 -1708141841989964703004309884400986607449.4646117664342831985928886746569723 0.3724678490309330548736436654805582 0.0502101777323898004442262315366067 1.0515145585829723378862854661223948 GT 1 -112475457798359330886384525608061372.9546354120575787064363554761428374 1.9039353874354638684654197775642612 0.0876467491093925220780798237678782 1.0917280274003647928052909164806223 GT 1 -6248916860144.1186286337169644550723559076386706 0.8758466766361243193620870071511511 0.0194144502572582715558760236190865 1.0196053860119242370245317156650115 GT 1 -223098094917995557320974686855.8633983957276594387713682558242064 2.7953982323210701294402912422047387 0.0943387955725731381851373110061490 1.0990899894226973987379482595860195 LT 1 -703899807560542043961.1706452647288149758938052311326545 1.3584530149619699002047731805922165 0.0671677798635881321080386411088251 1.0695299226698265952146213283857508 GT 1 -1589759894445613958692176585062.0491230991037660952019971291661414 0.5385937283076743184505553084799654 0.0655334204216625902238522037719596 1.0677794156170516696503726760493168 GT 1 -473137915994285540758027630940129.5240304048443478185827386261085423 1.2814397510162964998706179793880242 0.0909388821776924945421390639683738 1.0953429507367477443844982385261757 GT 1 -4.5431610028188586560195929787206996 0.8598831052070572286301811380065929 0.0123193404156818134155868071608319 1.0123958525250152227511554668261828 GT 1 -1408172381706364653888391597301.7690932643138587808706327398543616 0.6868549818345512649911747642035322 0.0543400571833871972906880445957233 1.0558722430359225362325415753946208 GT 1 -227825.7086010485150850456933266643758018 1.0848849418180508660658400298093458 0.0925171164144088003924117623070402 1.0970805740837127091101843004670244 GT 1 -365349855294.9407612014861629812330826273890262 0.4107546251091976940897224915168549 0.0405277361835596109740798925259897 1.0413718708657540680724850016910456 GT 1 -19316977884.8423414186088117214397796819606124 0.0642179468997812768439060758367185 0.0102384679762016006369100776358222 1.0102912416126017613736929376274121 GT 1 -3427995277888261458286276181102957405.3234722540697953106869854709590374 0.6598544293239046606195245391576998 0.0974140628835303864526120290232136 1.1024913721266662332252509997488165 GT 1 -600243.0082485978753959733477046909488873 7.0449166764642176789586058483388227 0.0319784130318045058289713436851587 1.0325008913672356124334712868669524 LT 1 -239650.4341826930253507802675643188028335 1.9172485212223889898470892780508709 0.0688945610464118878423085323486463 1.0713827546767383846867660438405786 GT 1 -3897534707001901160.8987674677279538247704488203631192 2.2215535764612726591519119633936218 0.0299099422397787735788633403537366 1.0303663687425834718184806276908951 GT 1 -452560810232953116011004855227477677547.6563949259463531409649752736258865 0.1599904124970770314951911413698989 0.0721519308530109708859804506613168 1.0748872781908946847991366517720581 GT 1 -840218036212597.8213461047235701061120657002287145 0.8606450303220571913111972865965960 0.0140760324247231669545921425082780 1.0141760393454040343641515464967849 GT 1 -23344875042.3995148361516283438974031365185570 2.5441094328943963096406671351814453 0.0669610485143959792029798916839080 1.0693083303614376191001862117782931 GT 1 -554168794977937718489969059251405617362760.1300355924258122342422477312701433 1.3962245418252106338192264650811134 0.0969812078185625587253721933426784 1.1020119149495373604714169541571921 GT 1 -172577986080347283412074487781.0597224733721512286839755812358815 0.0535468519438664177098027497961372 0.0931935217980521418939500170782296 1.0978262163491956883524807291654208 GT 1 -1434618185895185636.6529624320852165325558708340843797 2.5982454588145252970451302955022329 0.0895197774531917236612207906327540 1.0937831015805294403259077467292526 LT 1 -39055286746186871399318.5329938710325724950900731118406690 0.5401005761332625558910535686886404 0.0453915963660687208329099912643322 1.0464540711451600330911473960778841 GT 1 -1.9998357105149479260214492154149925 0.0443618992113436401966531400861858 0.0947175945231980672077182586739477 1.0995083337091542144821742011332960 GT 1 -15325187846.7175342201461952651110656072072352 0.0957486986448315241588351369877473 0.0764762976901940290093672890878093 1.0795588139333756660733832235656657 GT 1 -1164317096409064038179158375963180382451914.3827006413913130063300009516887346 1.2200611963586046838660358860757614 0.0580472511407890263597157469797089 1.0598001661105487511291014095980741 GT 1 -185.9581687699867043432281748749047092 1.4368865068801687582665852916091883 0.0770117970468866756342447267372666 1.0801388257601922850292420520546783 GT 1 -1305.2695386016822152676974431930399789 0.5922101951965868356423542090192203 0.0381030457842879504543830351996905 1.0388479502536639377393060803073346 GT 1 -4582514484067146.8771178119272348107147488433873359 0.8180505742361225858135894642248862 0.0985815546264899270570280551447446 1.1037857059068754294962252288904145 GT 1 -1508173289551654992596878.6647607232554565945163372109075218 0.6614536783592377708375332018890937 0.0885111711641535476544485524343281 1.0926759407412140563169407104852057 GT 1 -1125748922999578622.6936318758399114513798487128800508 0.4877610862226630255736017555959759 0.0270638301718891096548536876341993 1.0274368003579565698130025988997227 GT 1 -1.4973935711862871018233331852610030 0.5778600722137705792044440551618987 0.0430928031989485653127095169473074 1.0440488652710256653563499215922078 GT 1 -6581162071879230898.9757609418964088995374360675875764 1.0726239213528244930917864975793011 0.0253940057729784285174632115701199 1.0257219981432339584050194374457280 GT 1 -839077583744131678830574302157485341872.8454106861933806662352146383875247 1.9894308849027844934326915342941766 0.0917873993513175507319519554576004 1.0962767861041587920696124485931800 GT 1 -1715501113300893373.3135421077196659824075950700983253 0.4548431347302875601033099501782594 0.0617676605931620540918301690205966 1.0637576640518733436167276474142072 GT 1 -4683718701.4631018474798831971191485471037269 1.0378477747546199999276768662642705 0.0647400175982484850696340112823291 1.0669307322992135219806111691878377 GT 1 -280340517484729131666313710570307407174.7365650343183109571413085061201517 1.6601196928074414445135331166911587 0.0585530737733214215089862758385392 1.0603373039803117023970711428705695 GT 1 -991319121393430504809084653.6998281728531160322327118378336150 1.2703818804615050687071914349298252 0.0366587714146529088529708864519700 1.0373475908140179029837398711587421 GT 1 -2231436483081312659694436876936842117180.3964907963488683845095902161025836 0.7343216486225596657991135628942667 0.0775685621072760141438427153216260 1.0807422278969843875701550228641818 GT 1 -1656803320870520085.1029225606259145293300558681539481 0.1216717785679023279258512208250948 0.0316299051156871013367118144142334 1.0321409353488881677836213639480978 GT 1 -60540650192613330.7674099088592772864786675418253114 0.3871684932508817090550322680824361 0.0419374777619141173370425866754259 1.0428422398442922037899337488924619 GT 1 -230205674.1664935997976048015999070153647219 0.7827008806154742165662824492582990 0.0490833972036150243593012905770982 1.0503289145025250838455177699703533 GT 1 -21656814224760.0628898095120149157798695084116635 0.4828737029988981674858732391623730 0.0355256012324802606348174674177731 1.0361719905163530601128009523417092 GT 1 -14018734.1234103250291862985068663033124712 0.6741014458861658352213365525240657 0.0482007224507681404198153792024418 1.0494011093317337379629831248467512 GT 1 -3029.6912376153037417154174288878973261 0.4545455215878447122857332989772892 0.0914694750727682247288064784230321 1.0959267924508800412363905067916083 GT 1 -3579899785.5745226049347324809101365475244938 0.1891031502024878429606512748170649 0.0322149672841470735798569187207326 1.0327452900082100289002275060618827 GT 1 -298904949669038774217691.3197260031956829771107936687793037 0.3515119371661722822719986739077429 0.0448547715499910279752009258481143 1.0458918783877298436995050811855659 GT 1 -22844870409824002.6348677465138116830057640071164804 0.2778243209182437760181868975107998 0.0380426553530677261325680135284079 1.0387851695833441930496277903569446 GT 1 -9054026.2208540133269636402677338764603537 0.3749401939953843433480589091302230 0.0414378328040311387046359981362541 1.0423208597619464820895793314043767 GT 1 -42177899281776688721440888143774306.3917103182045781300777438600053064 1.5855612124356362550389756968743728 0.0977526697905956912171603493007257 1.1028665945000212610629383311964937 GT 1 -2706929109873177064336911.5275631267376180045261670481244386 0.8677250032907919954221748268434994 0.0589475938024376874116775645503319 1.0607564489203357357860410619621503 GT 1 -71508074733105828435039515255988870530226.3139354748921067124425790530162015 0.4402716924232813571262551126450946 0.0656626766860279096390969972094723 1.0679177460907534694751548835209714 GT 1 -7792180256384700461070182.0724469902701390795877080787464046 0.8100328105377594413137167404863050 0.0048752591452869020516669909252088 1.0048871819882377936025949071959672 GT 1 -1281623644514516786919877315904150478500.4724938323251140560103376076686382 3.7756025155930402755747264004965684 0.0796178619106512843228469032685958 1.0829663276918233946722775404453174 LT 1 -31403725711.7801830092702959698856736418831211 1.3753084916275302101630773278178207 0.0463907677659484651184252083757472 1.0475013012644230672037171887111494 GT 1 -132611681999665669294225672954623263.6326796398431670343903508312069581 0.3583185803076107003111348898141645 0.0673473279514262254542993919537490 1.0697224174888891205931091317084579 GT 1 -162.8660677844056109147026042366848307 0.9981332596434467084183278858680855 0.0765479985444699200941606914411776 1.0796364552950522024637484086241062 GT 1 -47799044.0302555702551240981391330495506193 0.8622012570621348124642241729510359 0.0587575880532926473000909520115823 1.0605545615773341471436445515257887 GT 1 -22836304980845953031316705328908524982.4451360367353954431333257637357825 0.8699859855270739061942741388385657 0.0775833709909574267799533844863961 1.0807582822094748472439827643901205 GT 1 -280163017054261047155988265.6541879932044212827296146935834158 0.2776560641417101087307454041515066 0.0795628554688429775345805925468008 1.0829065646913550662761942460630664 GT 1 -180848544301892453757315.3739296787197512196000835591581318 0.3674973989640238976716925665917875 0.0402722252573343700002496599229810 1.0411056027096459744471505321393840 GT 1 -4217532626897729973382958852063801688522667.0756693657371850908871311274336223 0.6096643162399727452672639655362255 0.0514435797226353415255263073433873 1.0528140076888940574454041371970737 GT 1 -1288590067976061546809487359.9933385818720710892240101640688384 0.8113352110162466714847558719951615 0.0577349829887233512006816553555103 1.0594687095660019320228236760240510 GT 1 -31012733921686192.2597627443671601268655772109757037 0.1812647764535468762455879771851799 0.0165882078111376286384302803947273 1.0167273328326878890238709838146964 GT 1 -130581003301226955597962510961831045.3706579944099755103618144971681367 2.1601715690244287489212206543490239 0.0709651313519118075209021563852887 1.0736090073440435665672096821011541 GT 1 -381629.0614409694369808875188840220509921 3.1338002014656063486187343837562713 0.0375337330548368372026886339245439 1.0382562607640703828559287076682870 GT 1 -866796737705445801598859814798317277828.5421551848185299610946947751997100 1.6281134233418786657380336255372534 0.0958469800591328403998451520349507 1.1007566630683925120054570063231009 GT 1 -6675437134.9792822861190788174172862110053749 0.5468501151605192946078469274413570 0.0217923714300373944980310336305255 1.0220333323283045300044487082237304 GT 1 -2157178.0662181754951790771676505041706207 0.7542033004398797901265111189604467 0.0455649650533954410614072134334588 1.0466357000010568204576398083341160 GT 1 -5287516039423.9636445522329614226878953060706675 2.1124714404924646081985694352681489 0.0522278218217686806637338410093582 1.0536411239855968240324498707594241 GT 1 -45991407999083742821.2523499455549790455328007569382062 0.2063552980706165944878591860653444 0.0733226582391858221261986745332913 1.0761498411461466717745068570195452 GT 1 -14.0682303623210058206212936109974076 10.1404203867734543112294749879577944 0.0286633058458399229816912605493119 1.0290821208933678530637129866780614 LT 1 -2381942849.1910914018685543918154806434796057 0.1288073968097770503000433579677691 0.0468490002011812800543685939399300 1.0479819410809623589557702735875091 GT 1 -6787504100416363490907328222353169131695427.1400134100710242557038062513618298 0.6669129017363768632430827549990502 0.0055601860923481150985215447719897 1.0055757014660096591517355909025712 GT 1 -19761536466909053447564630319960859.7241646039483047604972813924153355 1.5444446491828235215807635744544174 0.0078593263655019429499248707258449 1.0078903736517899112923857719894665 GT 1 -21326474386793016180.6833182470353612451232189310185756 0.9911683163448844932575855079998900 0.0987496714287635243821400808145520 1.1039722258102441493296859006898069 GT 1 -2504493254449959201601816412837001484857961.7015410756383858916837921257950690 0.0297036881616221362463493434291384 0.0715402027160567296172691385736172 1.0742281976901216165328507794652296 GT 1 -417742320669218.0326017685912045466137732214299418 0.0117280890169767733821991837165192 0.0377874795503794328823997958087161 1.0385199374863105813163476050804947 GT 1 -36566280366256112413131538.9989745453134933187646377079751388 0.4977466617910878960007278293049403 0.0579311988187601632071761305500233 1.0596769697254828244596274704608656 GT 1 -17707517.0933737123279102928466842409741662 3.1687937881211284864961349903445379 0.0087612082000068462892961601942168 1.0087998132344650900761889989359958 GT 1 -52078551925873335411647495378507760119.1465147887229740847183056457740769 0.0701746133723540698086225594100055 0.0990076653822775717135576426661030 1.1042585290484771701783881230027855 GT 1 -689146.4585045188494334492642709878994080 1.6527483420191174823421678659025659 0.0704336675823865093067945803113058 1.0730371108191668397009385375811315 GT 1 -4047457445882524621.2641460058799277778674595068845429 1.6783496938926512655307623331133157 0.0170326170234699624130921395048247 1.0171793404876829391928956198234600 GT 1 -38182077658.7373635360836880588412488700828713 0.3927362048406884759501740256007621 0.0367260412175298194899428081167320 1.0374174229251164903197582609460710 GT 1 -41062897780.4918873047423999821933453444697435 1.3266976355475512477889007779009086 0.0041861076919026034403671278762478 1.0041948939694823123652194270176174 GT 1 -246558442088283.9832554823196028815240544297145800 0.0015182730419689783619217234352438 0.0815109652040620644416788373662294 1.0850253125626832100016049318483210 GT 1 -3520.4992829584838330612016768802230443 0.6858590322655498594618559422347471 0.0517659911515103190639293474444940 1.0531539624113866546965022457659724 GT 1 -7177.5829873311619970590249460153831492 2.3463571794458165648502349642492819 0.0317165806405850526744656611614985 1.0322304459653390097677532877906777 GT 1 -606197687722767340867.0705263811202352566860618906762411 1.0127702867955895548574804474839703 0.0471153846573148417446121114857294 1.0482614578494338250896153761763192 GT 1 -32844164108237.9441773210707111791636645493615551 0.8837455727763746020208707291436055 0.0741395715603461313791756312424702 1.0770317809233018942303333101963087 GT 1 -99926827313356382237794054.9130320869719949802543095793928286 0.0495751550229947114893807200486012 0.0127811909025562429604164559542151 1.0128635730369887691566871397152254 GT 1 -129506007421842642966811197452165235180168.2466975313876992896817264633547210 1.6664959319584720193566557880371827 0.0934947503765438350116748273419436 1.0981584577135901578046735698610803 GT 1 -21809272.5172523968518177715723561843470048 3.0929837930393280169323433998404010 0.0964954262783810755619243284055708 1.1014741067361932637179213286288737 LT 1 -1528689895576257876195888137512704395056.1896513438596085853954068917214935 0.9995331016082562428897716775875471 0.0706351255900385577400519625720812 1.0732538568802376446056941554988911 GT 1 -112738476239.6898262598569936012674514613059735 0.8240776321338727888917949360533225 0.0717437001389181577778496501851893 1.0744473991329153325219423704397612 GT 1 -29440.5631570724980422814227047921973391 0.1686550743146986030954556712861050 0.0943482446805970514733284997160638 1.0991004228577072379233374665895290 GT 1 -3671219490200790620940959247174829331881.7238639194530619762669746751595368 0.8718849747244148339875052869756622 0.0869736036512783539329028717503004 1.0909904871416616562405199826273180 GT 1 -20.4346680903487898995390058621981587 0.5608207788662795004570492059830555 0.0178288594396745755140908830998852 1.0179897082559007554914635801578338 GT 1 -539207216942634952339539772815388.9901617524785552551232353372683613 0.3124511628090149396977544556413025 0.0979215335417811360192974637920400 1.1030537710642430096512477807286304 GT 1 -1086285593083419024451.1815466311502928427404819703533210 0.8031763633921635995638569249252279 0.0953712404935891520305126042471244 1.1002306299317039553323971580827772 GT 1 -15344331453366169614723853069060941.8545451821291029484936542623497562 0.0534834744105321489468458596300063 0.0630914035503283719565971972334457 1.0651695506485040679487065709784413 GT 1 -68098800091219762069555826507443795141.6417456646754738441877605477979404 0.0009682729283689886599986942593871 0.0236577208312691280255761608725057 1.0239420581788664402274910345759322 GT 1 -79319296973.9555231450623413950248367026926566 0.7156993163484188351811209362751905 0.0601596235860998166316637772110214 1.0620452304634710006812891713688428 GT 1 -1925701409305414093364898592.1632956773160576633364691007692908 2.3064846968502226095618343323390653 0.0271775226507471761877149690519800 1.0275536622094019013131464383786605 GT 1 -8800918783149964712451224308687218.1806488130401131163135416864800588 0.6522410056995644154649281705132810 0.0843818351827605820534261765825626 1.0881558518505869029913865232090760 GT 1 -240.9991773894775286353450625935680160 0.1122716768381295206999006798688251 0.0746808838789796337842388992123670 1.0776166105641139943544794133886757 GT 1 -30896448212725703737.5557325199191159539385347953787757 0.3076404284132305465230392328692244 0.0288048418629649966039415379574110 1.0292278441330754504566152090693382 GT 1 -890896913254938859.4096888543748177299267407866505326 1.0064125310438058483198389171318171 0.0813165963074844586232834400378696 1.0848137168591653338458514455694083 GT 1 -3874151719527042363696118.1200360770853210041036839407401780 0.6773750307293108443905308763666404 0.0433366197461620164200433517408996 1.0443036941772143352941116496308348 GT 1 -59039910904930122276908487161896.4822800615231208282120088702108316 1.3960696364377474944820729349749044 0.0974868250316736941877422617698501 1.1025719905788006204856305586819442 GT 1 -211.4633537294968811254971115469021559 4.0231522011484443783680103274394708 0.0768605014010069252565954039719676 1.0799749198222755680544467685161897 LT 1 -17942157266555172505.4586208318114554038593170717031482 0.7067848870836695092346718399484416 0.0874770700041815621270487624948803 1.0915420650786717936335583356478390 GT 1 -62049397805153361731657177176374556.5477194188934707465587048371724266 0.6527234485076813454895020025842591 0.0839588685128697850817257747227548 1.0876940119459034427645921380526887 GT 1 -199.8312962077766332993987256428336321 0.7518106410956461442743780410683676 0.0002487344525556170844049342100034 1.0002487653921001546290976652871417 GT 1 -106999883737638852522675290761690132.9415537615186628422394106891490464 1.3745465908117099978883134098775586 0.0001559624946670674760340211103676 1.0001559746580816462895446678845289 GT 1 -1283150517722927492764940255.1596743094995122708659560600093482 2.8913779459799942177097190828693089 0.0223653451574421322926419174066702 1.0226192422952333481031994483848079 GT 1 -146443478895060.3951435136810641908786068000737404 1.3049502424548117846053824325412506 0.0866522078256446638423148897040715 1.0906385375456030741427773015605704 GT 1 -372740984679386036080753352500.4489046205305594436345301919432688 1.2025254456756183897198437277137485 0.0424353227497151360658500180155705 1.0433620121665292964104704534798374 GT 1 -12080.5211750595795492805726716890992243 0.2947963508877015173005260625238162 0.0697761374670065789449563933550989 1.0723300094003489329812943098567792 GT 1 -25726656185195614859874361299.1258640977429343962173966388839916 0.0748207906434399863890303033072481 0.0842622475044558846644016510003176 1.0880252517008900043610944531357709 GT 1 -88345691226377549554.7971958116459066267298846236097943 2.3022731095495729019113675393642544 0.0024801858263814955920065303343497 1.0024832665822003443800390177898042 GT 1 -16969583.2221749152295095161555571483629115 1.2628554262493110533822335355538099 0.0382948566825749681774594259120434 1.0390473791263697045174772325726893 GT 1 -3982.6761155686980328355537175255529274 0.3451919249329366480956395876913425 0.0826096212785686108755780477048619 1.0862221844242766665027054050818584 GT 1 -305979254744718135525713830.1745390492740282954758103804696049 0.2979060362523638370432943321024332 0.0192724078631569091639694777195223 1.0194605418345038232284542018099260 GT 1 -15152961737328909.8240374711081308677803157525333035 0.4038119698726842568666632913293417 0.0906214200028974592495675172789951 1.0949937918634555220930690189630798 GT 1 -46294947496262597474006227624733609.6674707945020349470904125480420922 2.4111761316270748411047207795106879 0.0203256361403914139997481836796412 1.0205350443112506113205549870086727 GT 1 -2697929021.8791891970948718752432390677804734 0.3319895914133351066787359739002068 0.0692139488202126226240598739700809 1.0717258335066551586664642593728314 GT 1 -576701840506755357303546810107279877.5759402166137713323145598056834553 1.4945759315121643392527206100153265 0.0704910535846305081323045198459168 1.0730988468907671772886979741132862 GT 1 -343.5366515036862348460149250232590024 0.1976174822153806503492916444226285 0.0891625738388739570258254106060670 1.0933908541116147676994466170331596 GT 1 -5944891634934.4707281621309945714572816345641843 0.8209189571164408768555238478116733 0.0376695012631968170216308241170771 1.0383973335370569299341163260175964 GT 1 -9.7031484496560299004549403882374385 0.4899947553776469762368291017728273 0.0829124955548801117893038997192171 1.0865523865835315413003859905860660 GT 1 -128298362784.3239706700103695796517846642543775 0.1768561137080169795849408762586359 0.0668842957176795148579544933660702 1.0692260726594593675866360150469284 GT 1 -24480.6880551054608610857404449436090172 0.2078888963920259314819765469754339 0.0665162922211697360620736922408594 1.0688317689873379065995671691627603 GT 1 -297952.7368477333143675397685323503946940 0.4422237641585669785167713010033056 0.0997468095499094081032678094469711 1.1050792324993205090295303500364395 GT 1 -9746323965185230796164878146175053855556.8137730596704917090502015103242529 1.1414398713797031502718027792102869 0.0140408397307895309315938815808139 1.0141403448425803882415959275421107 GT 1 -13.1847938062062345302848605751308137 0.6665750206658121973472288739542041 0.0417890319984583794367447491383224 1.0426873081349002276860631378491032 GT 1 -47326221158411181889771500971753856.0964107226754476160439276055566946 0.9514663895537275890761920320819180 0.0902164712605221071152450268663703 1.0945485882753649528927863559266891 GT 1 -3133538929669.6978859691397809019507836193286584 3.0490565422507151976329904312762734 0.0245876127025412306185090427666440 1.0248949360764925052874926499374980 GT 1 -1374182403415423137.1859615422095516277343902409776443 0.5518394289447497565692081973235427 0.0716228217683979777026230657824072 1.0743171867112206079026889950882670 GT 1 -7778287292061526108591578908130766585835.2374665303439429328658943835102694 1.1895029678595685224393004637863465 0.0455988992084524740061541272808442 1.0466712548131491484585026796828186 GT 1 -6.2430745226427456925677053602986879 0.0953090758012098468737763985721160 0.0397503129523163225640013954788446 1.0405619376633005028868599708427771 GT 1 -345755111969690749576673165962186091625.4111791220398427279031907051872018 0.5038092215519136848882805693920366 0.0015980759173388274227276369014837 1.0015993542027038398015951311111010 GT 1 -5729455397004187666473229833172962936294668.7244551623313434768864851451713133 0.1695471798433140118499324288930364 0.0054109163396976207508226066787160 1.0054256083697120243706913809073212 GT 1 -5920181041762451708386265129622727304722.4271602190268221031243189994551266 1.9969722519978556653919448316748729 0.0698704083794101912883139299288953 1.0724313567139724009530424764832207 GT 1 -2091497075641849023.7192602149147652386123049206365368 2.4731103038407183817012672180603362 0.0770721991203760587747892575195639 1.0802042697710633391700595631320380 GT 1 -58044686255193302798228374718553445.9741169820433651508641530000217388 2.0442626221657003290356221796146502 0.0158375552509191462132687394035527 1.0159643094279840872241838867281923 GT 1 -4367296898511.8202458944979014941182234000886657 0.5862409189496027301384557430190117 0.0418833608761541217477961416179347 1.0427857556836608774879660198205210 GT 1 -6631627.5652742715677205151807167406657641 0.7232156502886186474617557362926057 0.0472501074495986075308613843332683 1.0484028520065507320854933475673392 GT 1 -2.5379592746877919011933149193602832 0.0121471135633855255835822878441873 0.0787959891736479077439444822143988 1.0820737571302435686979583130859842 GT 1 -230454367.6844484198138244740014353983831422 0.8002149642365371484888330792860571 0.0757106433716026863097564830260952 1.0787300998394833417198681585445092 GT 1 -1544593744869353.0249983582099200699498290731239122 2.7017760538400114114511621605840490 0.0578343013787025992232275549817899 1.0595741190026527989388733744290326 GT 1 -331877944089953366499690490699023881.5529628816627943649893729678153569 0.0744008900117176352183763763489151 0.0818370405452053064628552415795690 1.0853803883697385345609556613118979 GT 1 -579038591752037300940791200937283.7409910694117950710837126031259265 3.1449475735579126754325459478383515 0.0909575836860773348568180817880291 1.0953635232817479221356805519401924 LT 1 -17992628970204205742048520746.4476194912808353428578796566219846 0.1688579196720269994101743678751845 0.0779150090589358640147510192375757 1.0811178786098955447848712026050447 GT 1 -38291894.6870273715744141383675865030873036 1.1390451388059612946960587693877679 0.0091175017489756640251157650238595 1.0091593205507878891539428623955089 GT 1 -1217937938355842154549806743549.5140172682652597429413295614039149 3.1053505781897330973104483783648673 0.0884207297917160049642798669014075 1.0925767218776300159908365033984474 LT 1 -4130085.9258206346851280839938173354733078 2.5736019968649184548582519443519816 0.0454030635188159092170310138423372 1.0464660836327708574622127068698232 GT 1 -7959125567543543515980674432872751435.2213940376519446662078155113748255 1.1597710292306699392256035923363864 0.0136653681062921036298601707671718 1.0137595986976345059751741262644357 GT 1 -3525119.6105576657052503994996230397778312 2.9559849569363456030134095194265899 0.0186894026948941106810012181100551 1.0188662565768991398008402265821436 GT 1 -5670431304814284599600218078.6024117857998181408738157275042965 0.4776351151499556787675004303753440 0.0411863326499391291366394164450947 1.0420585218822225164161810749578288 GT 1 -3306248899318201151839063997921401.6722566234286876267870587110848240 1.0346981061512591803761694081916122 0.0771873739543794813334391236603780 1.0803290704553554177872013991634493 GT 1 -2966894384756837622952990103975841617.7538560499729483464162066495712469 0.3205473605507510837914502761244238 0.0587885438196764914440071673067650 1.0605874503157099079952033624796728 GT 1 -974248362730372531767836627973.5513406588705666791211326289088123 0.3562582060100108192874045362987351 0.0189115883137067198331005668522531 1.0190926994345891366354865523693752 GT 1 -15317288741868777360858060590799986278.6142317827041605776470637799383521 0.9123493156255513376821523887503923 0.0487378786971038102913856018314587 1.0499656273876669567697531365415413 GT 1 -170613817056516101265529961890894068.0357555188646906516186470000746806 2.3200712847570746517886155303074633 0.0845525285481668573346269627599113 1.0883422934095563820950036205039660 GT 1 -556437214515363513.4788534034241626142604088860629436 0.1231021914283658884214113202474569 0.0889102412345581320950319470737722 1.0931138588419718969894781393342200 GT 1 -4826995253.4765843719899830621207364917217879 0.9039529775079908889793895434787476 0.0880353259018766550628393527798427 1.0921540241995388093729523588785045 GT 1 -14271358420705667687158237243404932.0933560387494352506808041614067579 0.7316378916536927840224576989450203 0.0671076577766986181591252695297021 1.0694654736207833817081217649279938 GT 1 -982610114186679984749283.7400980629042575359492121867519083 0.8396270097126922721494810042612010 0.0364890142020784611506928830755252 1.0371713892228979669021683158852478 GT 1 -439418012.4117388831974430287930384885842920 0.3086427843970003380022651593807186 0.0257818180109529870269180058960368 1.0261199942763142703170037286485629 GT 1 -211204363288757627578285.3362896669268960182667501768395370 0.2561273502712688170084891675406351 0.0668876231875721785879661234663304 1.0692296386436242991619074365128154 GT 1 -53801306565898149376324781962.7072662887758360296506187667536056 0.1280198965621573355593556457986299 0.0274152399138051337942497886498183 1.0277980503865061264182759296464413 GT 1 -153.5279302202189904278150439922202200 0.0764907380154635325726246794760814 0.0747612962594138495052560290814329 1.0777035166630445752116686785764580 GT 1 -32806668950047932688467660538513.9240983096957940598441732501437191 0.6567939690050952539220005724385775 0.0673204637191712630713333477223689 1.0696936137914706544124498287348229 GT 1 -77755109948391.2636218426084833875291699089138190 1.5393678202290111495426735997473668 0.0332451145944801681094885161383804 1.0338102950753607022033465185216905 GT 1 -2823636951577068864027809.8670610993810320751608584790517938 1.7253478037933247827375935414218705 0.0546450690816660105665528108381505 1.0561948337306445361043371559425871 GT 1 -362586.4321803332346160261541929703676964 0.0935928705976351873657954969776917 0.0295344788664729609234952811823720 1.0299794039144953573177068667926290 GT 1 -123847883360927146757408833.8747270235571699873530548009643455 0.7205309609767025548572510696545378 0.0420574494362688802402795402457755 1.0429674709057487549600108607621216 GT 1 -3468.0681252778447163794338768516005925 1.1014075911964079891218284815638974 0.0623660570272007661189186242039229 1.0643956588385562074087769507946916 GT 1 -5499153178486047224905023458440.3020973602607907896735780161131851 0.1199466580580218484884511897200029 0.0451854120583411089600787758483160 1.0462381061029051885485848987485977 GT 1 -488594.9783250826796910412539504872756033 0.0448925594445246323523631412758321 0.0012844637761245624796916815231642 1.0012852894067915010114866996238151 GT 1 -4773314806.4880343289060569730834502534052165 2.1601361676273220761525033751059891 0.0768440227274221226718488378704925 1.0799570692953143175537677095747627 GT 1 -28088082253953807835690941929.5394251070721241817034390349577896 0.8214822041781856204542840341848758 0.0302157837151262747162476379718027 1.0306816896703091969954943042009085 GT 1 -1053507730225573303.1375733867550462646992658738002582 0.9157481107985112204496467789740229 0.0016238343239665166654042829129480 1.0016251541719254881554274502726134 GT 1 -12353586445491932824523143.6626509355809748118277686117100837 2.7957291633837639422252723326866672 0.0154908034245776464699765986287108 1.0156120395799823877472281232344842 GT 1 -145507936600444987.5819853434372084269695283874850244 0.3905301833517960393729038001797104 0.0513460961416979889991432087082116 1.0527112425080567084745080498033108 GT 1 -533293316497016446662946.0374743871340683132848775416960538 0.2774814686040162403154244899181036 0.0940191392147512120518784514761106 1.0987370981233869085814838929072441 GT 1 -74145006336012307122339.6621033242360160950735453365250652 2.1648231465187517258648069043240570 0.0429917079638739155766801037988325 1.0439432229521685328925414674920260 GT 1 -24649490467770974517422891.1592035312574421313259324098609842 3.3284562031480343093479688423828352 0.0201575467877631980591952446934136 1.0203634822694492200218740208875312 GT 1 -32490694931444954.4265212536009813847094545209940504 1.5058332874953021368714279590853630 0.0039735710131643913796622765481724 1.0039814866222440935962527818782431 GT 1 -10215304344755569352580053443380880.9901264306013311242243984725273530 1.0594315387865638346361440342180111 0.0666875559896689386821691608222654 1.0690152531549215477060589656197685 GT 1 -10120264861005966014291134834.7089286026444671388364447626417947 2.1175534682019825597163341104295847 0.0733060206554445760363981195516557 1.0761318872870875274045894402740492 GT 1 -6757.6291100497540766885066266256042313 0.5607805416366666372419000153846470 0.0363446537662955824440902181343904 1.0370215729526015607424853559423170 GT 1 -106806682078030164242.7982640917394682107895840183286338 1.0194240394209622048221591364278610 0.0237578378378349020522177921438945 1.0240446063755377918772135455096755 GT 1 -107021571016317028265250428273.3381482395094506384019164213620052 3.7073838576262200749812515213626074 0.0979739898342121737221078432039162 1.1031119232312882141232955047407946 LT 1 -330248060528448428053862.9660051498924346585299824561664226 0.4991125448342986125354410320561710 0.0150582915659633199471714750948373 1.0151728188159944541429291903691584 GT 1 -381238.1640816804753293605372219296910011 1.3239613371929389106498336221015961 0.0311845154034257854769653007534321 1.0316811035962394314959264394899067 GT 1 -6781570347.6576398560792821138862837861796346 0.2149435748521694755314592605193497 0.0683348888818049055211762825361081 1.0707818517030187768259043812500604 GT 1 -974350214083556970306.1866079460407695231301229091393145 0.0458606237658052464568573697629950 0.0917950311585422008936498712291281 1.0962851892459835403098548242779689 GT 1 -1193810518477781559373151.3188224824770309405715234222975208 0.0662544595071067008432684717882537 0.0846779248398935284946128270308105 1.0884792809317213937245390783970384 GT 1 -5284479526539821042601611052073077.8415770673569987758449640559497210 0.1278691892252181952420113828813471 0.0685875312488050383687708087020486 1.0710530614167510740072074292771867 GT 1 -5446855643.0006207890980527004288143425531209 0.5263967204264802485576349520198283 0.0083430631055116614482514760765277 1.0083780612536197756030541284383974 GT 1 -14.0659184637601648268677856840373977 1.2836152441143855365444052782664146 0.0871176849625592556990488638540850 1.0911483058876717680020343972503327 GT 1 -3001570563623761319548683019.3725537269250134250288561018017094 0.7982886558267150643490091402151463 0.0193448974575592991783489848370889 1.0195344586633124390592469796496819 GT 1 -378473663831788909005128305377791818771.4542467543038083704005841057534285 0.9941868165651888569137216617217885 0.0634465575196950356398786016565434 1.0655486925432861105908362101637991 GT 1 -52330744930773391737633453.0988165751297308720763739560079064 2.8166624376423613858630820238868966 0.0717730160910411154386392999088186 1.0744789813748689053315576291694526 LT 1 -1809121395.4230878241728238145524034715871727 0.3122868172706012066409174411590255 0.0702297574327645728764796508730546 1.0728177743599342427106170820984888 GT 1 -127802046089855777136871920715.1878254164551723060364998455935386 2.0789702813269646155523459059113992 0.0013044959416180239641928625513275 1.0013053475371313656921037520803062 GT 1 -549576906537547346774166733016.3990590889048191576968181104019328 0.5274741939734543339896688560463502 0.0636380106982889837023519529369373 1.0657531365625001974526218954282467 GT 1 -23495280526.5249383487666469475409698269185728 6.3573700347634709124557202540091534 0.0776502457679434178981860375270725 1.0808307843730255425483703217034960 LT 1 -3574108143276206059557.1838180853405146648067274071963105 1.6066511577598713637431352751855212 0.0267343578692620146430428106612168 1.0270982205624286453805290763788602 GT 1 -1120669755122773638903477607.4936852103641783234891568656882036 0.4120487968030834997622923820615138 0.0582758612579282898962380468740299 1.0600428936396344775225927875300962 GT 1 -9470227.5209517803877545657397599978430042 0.3394868185875690382662721262568337 0.0562843736158052508796170556733033 1.0579304014565765560411498565759280 GT 1 -1197831791.8645496083473258650221330282972726 0.4662280565726971048574019979379862 0.0620080478005199909291745919625533 1.0640139097574094197527386655238155 GT 1 -1055.9085937429028980670713507167373103 1.8439943606091391059098588984409431 0.0481165444537623448765146142539329 1.0493126723294988306202764213705997 GT 1 -8419709897521.5805751829007179998861985445919616 2.0197515910383273632458289301971777 0.0129737697083264034610286713763571 1.0130586641250135400908797861525542 GT 1 -6.7663850278821137596016375572178482 0.1965168761688012415729670602024185 0.0929941309953470941331170341871980 1.0976063581000054705683663479005672 GT 1 -637965722164823582586318934561922.2908693540067743775678615229324469 1.3144273100119851816289011444592948 0.0113671497019627106351827656535976 1.0114322495514627374480717476795171 GT 1 -17384003741.2350300990138708097938106044784671 3.2537772649985197034765949636758899 0.0727341667099008121634533292676555 1.0755149872229305051816494538141016 LT 1 -153182817939752.0128376409180140013911982890021596 1.1043284099088569805439763240252954 0.0809901259056012046670621724670491 1.0844584122941827393771204443432832 GT 1 -128377830504055351019489.2493359037204567109089064228207081 1.2624086052409472968406442972258294 0.0013887437620463327303904292123306 1.0013897089603769106489178202868727 GT 1 -1152656259883388560475581938.1435218110776644708275689411507563 3.6619406539107234710167249158099369 0.0484125153382316774933705163886176 1.0496236525295141100663557956584941 LT 1 -2657448.3794950989139039562734052603154960 2.6739129314768057404631400686301290 0.0243060930521049409955202722367089 1.0246063616884950449697256684808464 GT 1 -21675270225864041.6388998281722946372766082661714008 0.8198604818652754670298791300589341 0.0100563933564579342184599609189205 1.0101073004622751056231790058052713 GT 1 -63326285.3482287618465332083134603576726882 1.7609702335226768653546947713660949 0.0867851974590689524797331522567208 1.0907841549299117850405098270307890 GT 1 -7.8591418932103476101824056505209267 3.9203321127684079503232836887270402 0.0257101965975643386575675822392532 1.0260464801681270112704561976322808 LT 1 -452763382233804512145023150462.9219557896955779228432293763422787 0.3973902985353762545853188494821761 0.0160474451530879677128055650744091 1.0161775997113340058459351194337255 GT 1 -8977144898459480660805198381916321044910680.2655071231493543136946276053544587 0.1403773282647335718982270572141151 0.0127119680626464463642055753298427 1.0127934564504066952295424507516943 GT 1 -473309854763495329092797352636897510.1575258053010474246890809061730130 0.3692225272797704750192325854372851 0.0917936720555454341174717044144560 1.0962836927754438867374056834437844 GT 1 -39674065729437805464765.7405195325182998678087534922861824 0.4335268463535738681937891220508071 0.0377908256068314474678306517289286 1.0385234149532929843651552657988596 GT 1 -27245333928222833961325629686526.3886837504356205685037795344438451 0.2083172687707005880296673482390832 0.0957814460134129813732094837331683 1.1006841845504890047450949449747077 GT 1 -133596767303127725102549921454339.5847144903002033368835143301200446 1.5840977662170433980742721835684870 0.0287774657697601610744053027216936 1.0291996564849560758856751660132265 GT 1 -594275031357.6322555589277705631738017802247710 3.7927195896265961757363793320954374 0.0633918806270954330478537227675948 1.0654903132836123887385733633670057 LT 1 -6077382317607259821408281698684477.4133952105437537388101189007416217 1.3174046893205224763160267331171526 0.0178640854758700038940893404447179 1.0180255743758212889989039424266888 GT 1 -5817.3843352697998728188504180896048339 0.4232855186231692866435668665661521 0.0156804675727446816168608404336674 1.0158047065661552419926850690365806 GT 1 -54218811536435.0297782778492856451736246737706846 0.1450148913760135686104237543162278 0.0943513578840227787633090631693613 1.0991038603917906382689158050636760 GT 1 -44110.5815477568307630744693870000522629 0.3015703410238026160321178638833814 0.0248668601589520133289442925026304 1.0251812636237692417968793540196810 GT 1 -614331412094905890776759065723.7216770384543733234393711069347843 0.1881450636994100477353626652701909 0.0082736027062694717847318850914384 1.0083080189193183063416830023310501 GT 1 -138.4585398871484984946051305983633102 1.7389921519723028642536615126731315 0.0363591835416192330037201256756640 1.0370366508379885480267569965553493 GT 1 -12920041210749740431901858572158174.3169597726399078583030230688452508 1.7259968163567149320791489962498153 0.0985113748066981884169566487626242 1.1037078540630695021131254566447871 GT 1 -194.3637651116868955946781404640575517 0.2484420322334798794025666223210895 0.0550613967709181279172389634225813 1.0566353237270001723392274717715573 GT 1 -1113483018356.6118711909774442346402727831038343 0.5105171333001276250474966599525744 0.0960364713356428048521226286150120 1.1009662638016526244627885284293427 GT 1 -3900034.9695403058353800908841767461851266 0.0588857043731689300281442259735624 0.0975966590727822462891113209119832 1.1026936959765592858077996490542439 GT 1 -8507582768842023305672.8550730680542255944542801788313850 0.1791271480735300006578114000035439 0.0276861477956087487202193620979107 1.0280766334260987340646473532000271 GT 1 -128576783532125202261337165035534692717617.1339250889372980887039925156283864 0.2269103468169574658107891411261813 0.0192484625525358715082029171247118 1.0194361262694732619645446736680294 GT 1 -37078174274491513.6347141421694500580918409230188246 1.7063962845479269178236547566908678 0.0184021651843213444882422063634844 1.0185735913583666032397189386817232 GT 1 -4985192047521800387439446069588786194.8665557786206210623219436599730571 0.2507689617398292586393309915650986 0.0763528060579509704404795621798151 1.0794251049921211004000248377456709 GT 1 -435681907658949078640063638.7351557327749966765297190569279427 0.5200636510969639720310679853150903 0.0735014991775081904274762758528838 1.0763428513665133068633535013687212 GT 1 -115145774.7980825572365067172285723936094272 0.1001808471354806836038046898970051 0.0567798784371161391413834700476597 1.0584555966925453198918393370979257 GT 1 -87067.9328365548933182994271523221261796 0.0277726461760174302812924298678263 0.0606869135130895803345134614776931 1.0626064299091136495903858884623119 GT 1 -3.7268226281080009689746080249904584 4.6493761023107534141932673311430445 0.0584077088211943112051477107469223 1.0601829100079799306737644776058469 LT 1 -201601565034311162717908642072218210821.2398234939398411730867131934127348 4.1881043969103364577630200395048856 0.0579756444773549309157649387776548 1.0597241496204310841806926076043134 LT 1 -42140072849.3081409283078509651752070540257914 1.9354019052992308337397116458392996 0.0475858292422069927983615408516473 1.0487552854820178352195536843974130 GT 1 -20904613409296007903498316.7595790480571985038348216886653271 0.7639274528785566257951636157478510 0.0917756595138093714750028753588837 1.0962638598778280195753488615682339 GT 1 -277535884258205293097649189206323569.6624396543169302204815185583164224 0.9740779963554382622901195519831809 0.0536240414611809588694990128512414 1.0551153697061146553496631311816712 GT 1 -448493.7591491257493416309328956678230641 0.7125600667172610396549779577483248 0.0613374947351938670621082665397013 1.0632992836937820727510602080846454 GT 1 -936496177655900.9108981664338486312513952047211487 0.3165217327565684272988055155689421 0.0382378364061763504412190067449693 1.0389880900745512097131525324710658 GT 1 -24.7619125632905268321909017563488505 0.3452231379187634591697002949141672 0.0907923017332384009520181809377995 1.0951817199622059369564751360158659 GT 1 -562160026624776289410498403.0808565927658361175807775651748347 0.3279087232660109023824025108732178 0.0599112431568629721714956779576914 1.0617809860020302825816360674164796 GT 1 -4257501385982152402021484406279608887492.8794819133720293994862025216345064 0.4348914161813703335105660404990263 0.0078363392807952504935776767111486 1.0078672047413463348607256026035334 GT 1 -1945050046557501914592071953303.1267531098241216535373567074303798 0.3200758574383157047183972502769831 0.0803948595884872360689924767964088 1.0838108962745527249535308576201719 GT 1 -8219958368524.5224570636493010037092295157313803 1.3055681455030035279233912094408126 0.0119447460131985505467445156776277 1.0120166577101629433108716900230454 GT 1 -44922700.9867132862443965382235617933989260 4.0432264669141108334675532468543698 0.0013304329073569823979777060253318 1.0013313187189799293826984271216299 GT 1 -944913405694960.8353593891669147352539844110209702 0.7010233960803390143679505166198677 0.0893474111058344845002384441153518 1.0935938058336305059137272742386014 GT 1 -293380111037969062073374570000026890811112.3620989418603854932653563256317223 0.4765963627355936292743133525175998 0.0355090426934333596848488630539741 1.0361548222048588523326059505624050 GT 1 -1158163729704.6079735347684502837519032879134030 0.6394163084148727417553864215496372 0.0310897749129607864683986094337782 1.0315833183523661280915834390352521 GT 1 -1897748145237159479900408407.6517026376124358004343788389354162 0.7249419223431320178083488678038876 0.0061761602389986105919954981426869 1.0061953116119989261909839177440844 GT 1 -8364520887586815254.0530621519173004110491514180740563 0.9976430302206405908977746057267917 0.0505357540930621639643096444179730 1.0518574051450169948016858458558865 GT 1 -7174948750175442060985.2926503368693373950790319738438397 4.1891044924005520164139410587141760 0.0733862516139424749870440718072867 1.0762184686543883178679817455809612 LT 1 -12613609096021143950642346255683.9038812211249057715930823912393847 0.5998907477009976973677496904256859 0.0457625918167896249997260156595738 1.0468427829552973707611830147942264 GT 1 -575232767621890013854326795045945958319997.5847576857435916929352692197909877 0.7391635227851950899282824927378651 0.0737527563490398848169446787243709 1.0766140781916958322595547957223818 GT 1 -1400438543070816537277483457887249782.8015802753920049088913099961965179 0.4957326663310735277823374789937059 0.0143540823704775002676271704741775 1.0144580987841125581111915762349597 GT 1 -12316739603513272329299.7125403618789894513474551938354489 0.6509090887206597639257679323570773 0.0900703815009879154538954881105518 1.0943880247710898446950329835525687 GT 1 -36367631612414373005018290310993090336501.4017465288287592958314452849201340 0.8095346211669469430954352368032173 0.0778172781305292461591658015122372 1.0810118951587737302439176935838202 GT 1 -97367659655988441497782268391021174357.1506889140031236036430411699664372 0.7378388325728515929030851185415563 0.0839094158408079035137826901568752 1.0876400281939149064108164089005482 GT 1 -5972150974906642883851266725429.1965582424068591733464822294603031 1.9320196233848996336172266682463381 0.0021105037257191784160817656915403 1.0021127339772292432740840560496092 GT 1 -25650137.5410881469885760582516290344865473 1.1627617357854275529752636678942988 0.0974484850610265641961990455492296 1.1025295101393268810499440030165269 GT 1 -26246167735063432567943156.6726432072799202461846088493828570 0.4529167305887662912545585777236238 0.0830986121605816317691296351441846 1.0867553503060746940039214567784741 GT 1 -1793164.0581446918250401657314789968534488 0.9466245582281818237516400342626880 0.0291474216715390901081046612602055 1.0295806468018203350624715462396547 GT 1 -268977167159943545806523166491.6380971620195021499520123140673922 0.3187910175590704070769223009266960 0.0401147460129956603526693207432665 1.0409415287610583202597943338507991 GT 1 -1103678475827001644408900618150352690087336.0059490099862698665477651623152643 2.7240949180696160959215913500421537 0.0295964208325622524859946017754044 1.0300432330167266376243972239220842 GT 1 -2915340400740538777579825827.9200499963308868348636137933520891 2.0015650146252394047869486601111244 0.0933418485390019915111304857303765 1.0979898001752647773866389875737972 GT 1 -5420919646490353504521.7482628373921605564102648020865072 2.3417005785330581893131765482500201 0.0926617857432644250973247026184270 1.1019678143271904183346200015358454 GT 2 -277020652332028.8958621896498999628435171816156000 1.4085688957439955740337432179192154 0.0637441088034733303860539554862223 1.0658664518377656945381364209565371 GT 1 -454989942290594823637634.5488674132979472690611744460474084 0.6550290786508003556124663619216706 0.0293881297701121189793102602074653 1.0298286123002204059467592357902974 GT 1 -11.1630135860419072261417256801907960 0.4994225820439875882531690331254386 0.0709466709303744630558140089054670 1.0735891370046693358271666167327596 GT 1 -460.1607580191616773991362680215722964 0.1950145136580375891319571080444383 0.0467797212122377196751034736414425 1.0479092595527078807435385039050228 GT 1 -195887893366407.3339679603199545306603767124285602 0.3508949196148742647301718540761610 0.0297637326815569977375293071464098 1.0302156625890785159892764803623377 GT 1 -43024743123543485808.8582472463733989625884434009818477 0.0607389495942655048491664820338361 0.0441240224517708279347719601279624 1.0451271049445643070035065909227505 GT 1 -2053471131192144604499861408126432974699.6216803675749936999359852981747754 1.9082901723476675532545296518400957 0.0809686783184890284963281614500380 1.0844350748552151696380093339809299 GT 1 -4625.0955745180650715967187122389886349 0.4567009144527140509170181101818775 0.0919982970037630258427065805442310 1.0965090248360861020120476611373093 GT 1 -22728301901293584038256905400340.1855436884416893173965132576542779 0.5266783741358032400741965841613935 0.0213367875015652992513578783322247 1.0215677073855213956156529418810149 GT 1 -377468323833.5912590986060344915102692105992773 2.2282364229484571642065302677045302 0.0458040459806759812408131225055718 1.0468862260900841504955627160882267 GT 1 -73929529806138601871535646.2804270857018098210037330347680482 0.0500547959776140895766905497899446 0.0310035774627030195287037605106435 1.0314943590101601645466196225303991 GT 1 -3026573499428936708227.6246526066752425123920539426449833 1.6450636017702223709742850328791460 0.0242278828411439449309032301529993 1.0245262063488306819614457436998225 GT 1 -61.9109229891439946274352280583545392 0.4747127808423718958995528519637338 0.0413799811936369920592049442812201 1.0422605090964394792803246437607270 GT 1 -64917106971827392480125030009.7197261749145451999217711686900023 0.9367325547252555925846454633037996 0.0454465219808582012918536292934548 1.0465116101263564060935612770846323 GT 1 -1697662538816437010349024994050985128999892.1648701641117297196907056366649272 0.8034667315324622163991537150691823 0.0378566111645277972388738651651004 1.0385917865801757456608174140680449 GT 1 -21004846931297734884.0367496675850958818246083535811774 0.6924603069143043363379031551128366 0.0262045102090553003924447004445500 1.0265539668000799348398942702110414 GT 1 -991662045.9115625307751306530253837338932239 0.9674515118426091922784861999888061 0.0801086255897552117111245611019427 1.0834996872032271046475471547275104 GT 1 -547414979280187447718838265735086901.9385840371623211240848230786104702 0.3121663987292143784561498543238111 0.0572797933325339446303730046400647 1.0589857459232960723193125474053441 GT 1 -5036065669744623098379014539671868724341.1155442065412515624199115043318051 2.8774945744014026957094799800711924 0.0775093448292227714267816692997518 1.0806780330149389909721172099594919 LT 1 -7558492007379014912134885600.1381165233584907770804424128189632 0.6135497090301009568461771144749627 0.0232353544777647878566704613981382 1.0235095510234732523118813164712147 GT 1 -1894114604056977.2352830692855127415119848695576572 0.1684382379650445115801501542262630 0.0338073163824767655045306393391682 1.0343919992176348633641980224110284 GT 1 -45040663717379649987274412743236792.3421767443947805552251386885609068 0.4231156233005914216332106953437835 0.0898644139421910107623135343096377 1.0941616949020714601373841621293734 GT 1 -28277309583435303907333.3019089487617402365150709853943223 0.7416283762328575559563335755544287 0.0748002294693879262025330876910507 1.0777455966462714216823937869323889 GT 1 -19088616488077438910146275.7640169664011373527757777828802040 0.9206510582260432229581031020125974 0.0465312964274570588902437778340473 1.0476486771625176674332369306229338 GT 1 -31459440544106441211959576779032.2925731325260084253591010474544258 1.0320417511066215892279596746203579 0.0445519893111207082445431563853406 1.0455749273641393644043675274290858 GT 1 -12880827629889063453129.9881955881058455834386607771497107 0.5820861195130654680333095537964100 0.0151092800918899974653816513009562 1.0152245882205432241090480876190826 GT 1 -10421211220516202807087114561.2842316767711476548957455855309924 0.1304713476239758938442950656419344 0.0788061888200095772322218780334529 1.0820848292735558815970677464025193 GT 1 -4490107004512326219452493470173805753834321.5660604594015014682577690722837912 1.1464771217786370869349292336326430 0.0373837183108459319129772197928929 1.0381004079728215254741905260259041 GT 1 -1966891.9517601428130397189921173681658657 0.1206121158105252115520170901004740 0.0861639135408228966151388507581103 1.0901040600886204348163837921781170 GT 1 -147707822387017774158062320150892701041.2210566346445480519280171805059183 3.9409171692894793569795227122198688 0.0103282432635672816874015508069006 1.0103819496833783876988184978112741 GT 1 -22946155431809116.1372157179394126364406492176037837 0.7445854608303245248564991272494968 0.0168266134990626363061079621776194 1.0169697893422520808797892687139652 GT 1 -14178493171895.2452289106812437770733916024369796 5.0443430084476227970296933293148605 0.0959427353763789576014711593056497 1.1008625747736328012360324065592453 LT 1 -2701545875.5687545859563356174396565468811292 0.1343825820465182105079805703331414 0.0357896349764359980531556144605817 1.0364457871995250439690689180489809 GT 1 -2123321291536822692136630898.9462960960864314551626752783498353 0.1633135832728531825940481108770053 0.0918566036700527264916120529005240 1.0963529873762483812258071815433250 GT 1 -49622760377556162825125129820547.0988387133238416650151184952136632 0.7702554658220523742912665708805226 0.0732744382685018448885498877409209 1.0760978071597921694199539445789825 GT 1 -14033432694042071912968635340957550647140089.3130350354365994518575342424989742 0.8448416135898264851941692825815141 0.0742034805585802944168317502966943 1.0771008099065945866558622240835886 GT 1 -60325712352582911020981805750.9904176989779578284235693314734642 0.4549253816225171359648497412908351 0.0035425815138769877427326077570506 1.0035488713149171327780713963974480 GT 1 -4131783181700021315050113762539091727.7314399400018763931082318377068806 0.9695722120218218555214781223405172 0.0600294234614554711012180578333440 1.0619067057627312224333262472738780 GT 1 -7177171399859772433436852578649771203589.8821865012975401130613349034928403 0.3887817584436421845654374164689474 0.0043813573198982727803491816644242 1.0043909835936005175685554833136592 GT 1 -47719814194012938337753990.4889872041733736177193929298285477 0.6212032800915281629931698917069166 0.0288729241144200767243139821132139 1.0292979481047959021932471029419639 GT 1 -135258978308312656525584244.0893725090909237729793692098577222 0.6321834141106207495314696761313405 0.0343047217372337582408351415803462 1.0349069414664225224101147858270047 GT 1 -883.8121589456583455414450131066250149 0.2819267466603022836134743940391521 0.0009005477007386253171889675638553 1.0009009534374277289462687633526022 GT 1 -10190909365685815728118911531498103710295605.0367422292161213240899405386446402 1.9588531252145812390398004065933848 0.0737423080513624192769712325471495 1.0766027980083324399855275893713533 GT 1 -98868445884371.1814219183033526729878951359515729 2.7481961946397038553078446260438707 0.0142165131092679605940894586941787 1.0143185358242445502636974069601031 GT 1 -166415058415135.0758924739549969951298736279787507 0.5035171112217286903743260212399861 0.0291389500554932234971495970332439 1.0295719208847514464489836894173264 GT 1 -3154921650240.7639997681334208948731097469366427 0.8553967634489891910198673755763720 0.0847398992743721563465657226677398 1.0885469910135944665879975491157851 GT 1 -3589058908691706880258215528284125023.5545756544095520508809910354829503 2.0403455261758994897782855936314930 0.0538247769481533049080353275884451 1.0553275018689620446018101277417641 GT 1 -143267581630419939021376155558265598870.4083248741646809534200523403395733 1.0033791796056601589113582960942196 0.0793345531085915723959326426368138 1.0826585585644991085345198821390093 GT 1 -527465848646752373.3887154060740063118781587098800520 0.6754005603882495416599876405380065 0.0001084740294669483619921688799964 1.0001084799131999747597274246509175 GT 1 -222954159997070592979.9111363874061704899202455196839026 0.2290469550164407329316261091016129 0.0783473839622078557997423337694801 1.0815868986153036075182109992286629 GT 1 -432299393123837.6406007158437567471949102936641014 0.2066914936747773457024232229325996 0.0848238829258776380132143045989152 1.0886387545514306719658195010900985 GT 1 -3217869.1987302057276020162870384295962964 3.5657271264649495901208057460432984 0.0190339397718573251594868632514018 1.0192174171323499091238708269201928 GT 1 -166107745796942307647.4635986898638396887832674455742938 0.8663520664648527591002797726835061 0.0649887441297686991089074279428179 1.0671967114020268298350789395259364 GT 1 -83108283123.6934348730046124231922700271574573 0.3908873495744323638066030769922707 0.0291227280852366471507126162033950 1.0295552121757824430972617113881438 GT 1 -12273857551130037898673232316.4848923405969009710882227573935453 2.5570064097906395805685875463052039 0.0886413988792124881122357819788149 1.0971264916735588110115132864553086 LT 2 -15846116125116731110110530865388254646000285.3048199970341927807241586529586535 1.7001874362731074883050142518082013 0.0578945129921463916864477755945178 1.0596380287136577807578809996176188 GT 1 -893260135370878855356448093601882644139230.6522425493165283372629136588644028 1.9725909935276569462114782789110146 0.0086583803567974759074850591386076 1.0086960819126906335365012656332829 GT 1 -674075980233438131770198.0239617101225275526598810078452444 0.6787349170498775867877174457437550 0.0630331569744011858941885364954484 1.0651073836818862062683369913207528 GT 1 -2322.2408054461711183808260165291447556 0.6940040895647233839176580024882165 0.0616872470775045038362807222949061 1.0636719602592648168354773865074784 GT 1 -661619211550904586.0844757678442159697383196283190833 1.3822317576844771635793982423228585 0.0068255576694541688025538691010216 1.0068489583307001262226561015793632 GT 1 -22231374209.8933569348762751313835906785466330 0.0777070570546851361530878033293249 0.0880083383983986771038065999461186 1.0921244319303032696338801076615708 GT 1 -7213547770050119149492428480375281690.4654251855160064706270689559314271 0.8130579965574132101155419827023740 0.0898312921254991205738953786404493 1.0941253033857673435165866216767871 GT 1 -537861555274148211400130.9994607059977208501617179056491890 0.1406025106666434829428337053911467 0.0742321214521894305680151660042292 1.0771317468738883238329800511464476 GT 1 -16605922751367439484287939866340094.5976822389317613033870142933399955 1.0358301249954225178876457858894581 0.0034719196377589123088316086928233 1.0034779607376063433432899977734386 GT 1 -35961532.1007947343559820639563705397854209 5.2640768141761032474998119906714984 0.0384585815045743652650383539507212 1.0392176379227671623494724457563109 LT 1 -175888110295278031359516494571825002894.6900031735954846056888672213411638 2.5220780351624800501911005950057248 0.0258386172862118448565791598927664 1.0261782983935447453170768667347435 GT 1 -933657261330400126750477008874284734430556.0943592915767589430980915929932283 0.9870696836010991104700438363133910 0.0968055270148924883778795868206315 1.1018173855353068916004405030663296 GT 1 -24584110508619438863.4973032498122045442055883888936204 0.0598644710691630070101893911081727 0.0591302654444836332829926781666384 1.0609505819704379599033665012292812 GT 1 -397999287738511220322.0314032964959816086224816244888519 1.5351888428858528418805904106929385 0.0024572335451211694313738564075094 1.0024602574981904501148565858787241 GT 1 -1140064065279272570565647422200236751195495.6665659896651915289782822647541682 0.0834618673693651824305221370693575 0.0561302899023002018195272398747397 1.0577671413264311543214388234738511 GT 1 -1888448.5690955926984468534807290490331998 1.4362210131574758528089536868417733 0.0499594137635058388889904615372128 1.0512505729459199362505402631002016 GT 1 -5271.8872226313471636260657290440597653 0.6258599137869241124089507570655621 0.0916577553545198511899224208003113 1.0961340499821488724504111975994681 GT 1 -1222480561381840797888717931897233051330.1961425491561310495845793505058630 2.7896131067197259847779221603680028 0.0598361744679786712124967005620169 1.0636046515405636183050984835259387 GT 2 -90418550588015.1427270011814111489998811944190051 1.9912278104257554085746631934367652 0.0936712483953183606847427613507658 1.0983531782662856943189413524610181 GT 1 -42603462069492083410773536359260653965.1726326037181716334396094445202512 0.0489279727642565144486293079372068 0.0390535534683400661926995450855814 1.0398365983787307120144964245805239 GT 1 -3421652809762433101822868729617.9029262334020983580061512803400962 0.2350101441175476816292881865809797 0.0216992248387816706541532657905859 1.0219381151637388555068629613838311 GT 1 -4475525526821652502106.8489885717958403101217443893952059 0.2065862503840806324686123441692731 0.0604042112740358203122848478989976 1.0623055081934130453382847721301644 GT 1 -39930989530058881.9379569993612614508505163939788332 1.4693694870660072334807096675574598 0.0391643757295557949738302682781860 1.0399519311867762336641669803929621 GT 1 -2086909598767496999283336882638237288045002.1074766758684264611387003967985932 0.7758101549561357142061034704265324 0.0557888135664285029245455089149167 1.0574054234146379938476653334776300 GT 1 -1010402267542396743052764127.7154380902376749319392566608966970 0.3198569183066310135619550479058233 0.0955557137815236902264033605975997 1.1004345722645023662734681056971423 GT 1 -93594682977052632575.7095081181759327043520620368881989 1.6489514119908796156335048942708728 0.0828793459676836045291840639909173 1.0865162406455180131652402146197144 GT 1 -1359049448914934174921827858356658.8482572361428868593378894286659210 1.4568983200706634406866954032420007 0.0770395329442427277937748583228950 1.0801688763220619236757265119714827 GT 1 -3488972093698570407350986841343.2833770682195888836589144649445730 0.1724429328752214272099749532959794 0.0445379314124980647652189061863201 1.0455602140620584831353874320581280 GT 1 -7376746348039057145127521962.9040559322153660896961143220998797 0.0297697067425640530926768773030414 0.0487255677412945623470627895158670 1.0499526857642470300235625048479425 GT 1 -1999010489614499689628220216926137334039.7700961510636874388397367942027224 0.1922289388176047234409084481423315 0.0003440318240640027637799292346414 1.0003440910165884512258051978625533 GT 1 -4286002.3546473901608144181406727710898908 0.6409819047478791442504198873589438 0.0762277741480823478178969654138789 1.0792897465470166652270398314078159 GT 1 -718793359766687281033243210893677965.4386062936772658848248004667765181 0.4818043193484628858859970928261591 0.0264880634228490216956606739653071 1.0268451927379655066028174686088124 GT 1 -1128752467.7616562760691952364915957685970060 1.3400728932435994893106475476705463 0.0053767269099381873341376798930360 1.0053912335281856497019421971687869 GT 1 -102668296110975405869033355595573545.0131355080297320958673438193696932 1.0731920945778656610630462819371534 0.0999042115990863139795989271568936 1.1052540897646918140253167603562804 GT 1 -5337925030101888.0178810659378780877342725968130068 0.5234351476071263585051499919310468 0.0954346375546327229024810023439302 1.1003007131364859011743807124661036 GT 1 -379506391051228.1515208800579510925208190470868354 2.2555292636215125748808313208595091 0.0538248751779693414751356395911868 1.0553276056867526000683138209551955 GT 1 -1816818120.2318108503700555129415822280317290 0.1388971239656317365890396960232364 0.0107068441335410952405455411432304 1.0107645748347206028149701723410807 GT 1 -281494361322921338874842196504116605781.6074730853219806433346970765044552 1.1421870547136013329980061091404645 0.0090276888846227816357164254857789 1.0090686853902404039176266307129259 GT 1 -1135223330190484185621871959.3207213106229013287774468623559692 0.4448813928082894915416977613501034 0.0066912282302720027242568803041409 1.0067137148628133296239841334096829 GT 1 -4430324971102987045141636333218303.8698360436712726513347292087498897 3.7160506894359932174245161102226243 0.0656912763628375789531496045926556 1.0679483561432656243368761582751915 LT 1 -496549.1897804195862090046802799187866687 0.3273926813827273602073431283040906 0.0906298018474788338598348261230536 1.0950030090183282929804557773970451 GT 1 -1053628010680.9540548221908839391656902506913537 0.1561935026749113808060961404686453 0.0189310551814859881412288796181037 1.0191125417451106366656174624809798 GT 1 -259945161668935145382356882400270008.5360098911908986251441780402570596 0.3104955176913570013739140382481299 0.0369070482095362155301409821900092 1.0376053486951716523686311968509467 GT 1 -294213073849113498433624105137864.2268931357142973848994262908243629 0.1268510973827020438211098637843281 0.0925013264736481350512791029646616 1.0970631745231505740745053124176443 GT 1 -15390477506967106790.3811439236324998618102507841455457 2.7636046241677716645976903453581123 0.0279350820815284421091540261555766 1.0283326887699493198668793407314883 GT 1 -7066459953889.1087796179244775450261136843352372 0.5450749266721645130192118871659238 0.0246256549807990816460986518792303 1.0249339380623400266239166974369933 GT 1 -155610.7689164932138554086355613122762599 0.5430702561424315686690256255628943 0.0878392687675598130559115237106598 1.0919390640498705232773679302451091 GT 1 -926.8241944109423810443930304254833982 0.5930939419584610881245841746424012 0.0462163835231596965248465757184507 1.0473184503709718350932275910965714 GT 1 -126.5223816771277605736008915627329277 3.9963119155327110276419584677477292 0.0044903118676489122493727309527102 1.0045004235992227858323928341101216 GT 1 -10206325273435562014170476521764521575423178.1234870549281646596555881722522253 1.6176203164591327847834039960471805 0.0657776837126427887983593491266580 1.0680408430733947520287505788989662 GT 1 -628945365520749870170262861606961929158804.2356225818105633279626004378616345 0.8787818653926195389634902151552295 0.0117485401226830712745127765548639 1.0118180995716071350721513625358870 GT 1 -25689851089380894004034159576832.2591099641075045077838276380333754 0.0450093532719930306274010299715306 0.0836434427155193576122728479923854 1.0873497353705739869525139564137419 GT 1 -2818465439966769454.2272177193014264556545206785557056 1.1088499801264406366327140188636025 0.0152817180984003785974091699659361 1.0153996869399261219521077784925061 GT 1 -23375376485312929972215.6277370013920975772402518201348311 0.4672013230022030249038698870890261 0.0325386310870265729468042265158437 1.0330797836474953111729994992774778 GT 1 -74285088677412785144741875947.5527187550953682320279356651422244 0.7602662904753358526233693645127738 0.0051466990105400034797189149663232 1.0051599888848254674211977277223516 GT 1 -23778959898717748290642569704946.6486424727596447826558987356473600 0.5890168614281245847326384595208334 0.0952898762003535938725655947331277 1.1001406917846369633703986425932987 GT 1 -424671847854414369946.1247498529870047880167663476731149 0.5336894846727189167538206268721725 0.0569725492850121853645896382408794 1.0586598867882865243455505491493968 GT 1 -294827.7748133340404903065319501123549774 2.0473668310734965384460360119546669 0.0788493836144992399662336073871740 1.0821317203910378128085001387780865 GT 1 -1911864314102467236218892844671.0513872492915877695573853155880379 1.0591814490232929258033261058299126 0.0738459060268325181466938685203824 1.0767146500018961220366636657075489 GT 1 -40375485302587619.5601848766912139357614847725273547 0.1245415602741928941936341104130453 0.0976391992275743539484218672982892 1.1027408380421811389267444649805386 GT 1 -36.8731095818294276251974112003105686 0.1503466146003186236886488871860349 0.0621706780459092868181384347067098 1.0641873060697741503814393839620361 GT 1 -12227800765284273051943715.6029662319137129576935681094793370 0.2907817625676988744694832624951002 0.0124756700520943993001791499959306 1.0125541445884390091725082800880132 GT 1 -17869795247527658.9611110117584937178063227718281906 0.8232855356804262621667270248600045 0.0066353138861812365345866094850632 1.0066574254470730127864037730226646 GT 1 -100206238745805121456828594245554869821314.1408816718593349828808153365615650 0.1127504609554159846013764756902216 0.0899499871539018454283168001860808 1.0942557218099048286293321901925838 GT 1 -15225055723474133309378835542300935578930.2419013012394629065437502472322681 0.1953871649485165845611806785883093 0.0433224457283014840307203041298174 1.0442888781895301471707253435799137 GT 1 -1382133275342805183245642.8617262800927870372892903489534366 0.3498703647021660092144862294372217 0.0022698959741516933975967811553700 1.0022724760931590376141203320038823 GT 1 -32736639449906357893.8034977760206651300841091008517944 0.4260226272730371250297375354724658 0.0851597053357490494024374051653154 1.0890057702912753526284164474265549 GT 1 -106064013201.0195937978984879739082886027069409 3.2253089731757277610049646091864548 0.0154184082510740707336905952037894 1.0155385080049372352568173762078459 GT 1 -18762892639107815401535887.8253234124977688748474712105072031 0.1783743330698453814297780164913516 0.0835739462626599654762057797206970 1.0872738982773205171488397463418868 GT 1 -36317884488589163534262.2443623101501224912848614665402168 2.7883905946101402450222860386438717 0.0375317327783300228173854056707789 1.0382541824840340377421937442091232 GT 1 -323935796320670396174175742324194297445988.0019466427075340874838707727898678 0.2526865775909050544839165655711416 0.0851980158083704797498626241413248 1.0890476478463250595717657784915242 GT 1 -27050352917945405105631.0187435509850091795573661656126067 0.0123783488609354382547080156837418 0.0741860759062505848862169033137103 1.0770820104313691256621638666866058 GT 1 -134529004647904695881314610281.6320344527037245216474563117000856 0.9937239173901597884158335012749040 0.0359467627571002694253342719392244 1.0366087605407501389212475812482774 GT 1 -13858460318678915811733215165279589710.5998126772795830132590938773442206 0.8466641304979996051821838721635880 0.0228306977313926942375017731834243 1.0230953540618872992102427448138919 GT 1 -352792584289744583659417344178387.7370676940733959366948118768395863 0.2152981632533737455254585074020478 0.0300080997706479696535209805519046 1.0304675577985908452605040323705919 GT 1 -59601839784517.7366153149869259259037753216889482 0.9082263470394999702561937251671040 0.0284771439346366704535229687008263 1.0288904838687028974863636297544363 GT 1 -95365141208123986685595680087.6765065805540682381353544000683739 2.0170202327227209233275955397443014 0.0637569438397070777444988141153531 1.0658801608294338244901515309998636 GT 1 -1535596568230289762110576703181287901.3705464437189148186295027552289720 0.6175036588472942773575235062579757 0.0865254939537635397291792685959647 1.0904998115488733806850552350332403 GT 1 -315653603539790852.0420320795690711292708474903173858 0.7014520335007878569675341801147665 0.0022242153619811426733817312412522 1.0022266926029292828886441640712953 GT 1 -499951597.8578073024351736197827105319153570 0.4294846408130510935391946207910502 0.0495066656692855764422412449252341 1.0507741298812788692726440729487480 GT 1 -64375307758453550.7274215301306355923504746876035912 0.3074148189115393760425653307417454 0.0858695118635740140012380243843494 1.0897819517044893368372480425370192 GT 1 -480416368691887082068359000510259426954.6317356197702706791234554103183635 0.0227422352691021080753722697200828 0.0109196741656578151789644891536625 1.0109797314114806028939718546650304 GT 1 -1779968258718.9144219600275011092098089697827964 0.3816206759896494934012818281547968 0.0009327707216409219754193471543795 1.0009332060229624339553657007659211 GT 1 -13261795140596.3664958019007068265312982586651564 0.5713829288738537634193531351223338 0.0122476081883108536724645460415596 1.0123232282188138095899388035360393 GT 1 -623137332932734794.2310395238612577951085349229608703 0.7340173843965001719059005505546696 0.0074077629970570343913982238916729 1.0074353367308859775247509763177157 GT 1 -675151713580548.9095518145979090490810100528704591 0.0861072325353655366748785665470714 0.0918391495861151904262811295845025 1.0963337680367909483273659050777700 GT 1 -45.3753922032337079280611982520302644 2.6483761898748182894934525938213084 0.0191296959723664385288656115399280 1.0193150360799133371313836904451968 GT 1 -1780529641221.9178414727868317555769835275265644 0.9743971527786428706207980546036608 0.0206557696778102051734002595372339 1.0208720840325931463833970481718433 GT 1 -1562192618768597963351360947.0900836977602869641329738685844400 0.5299072792892862036904917706223049 0.0412789970559061248854697211738031 1.0421551714056701558955136898969794 GT 1 -143383464438783046214482.6838106260931378115325811074572866 0.1692306664625766814413824616257435 0.0912510662851004416873466622045433 1.0956864234887144029110689563797233 GT 1 -79321065466075315743285.6109514509487288500759706277624431 3.1935985521606290927549016709898114 0.0559573853026637143815455022208936 1.0575839711676805986245202491643569 LT 1 -185919638302422236332.1607667312746223937905179915888426 2.1123839356413102999732174095714058 0.0104774797536680224295488461817311 1.0105327549803814482084179784382870 GT 1 -22309319828559570075349365449.1505653898467919657592928436616850 1.1459214064240555449753227058714568 0.0962028264917861406370628172012689 1.1011503093519436397730091308738156 GT 1 -33456522266653328998414536580333.9259060946467955253825755851881937 1.2196151352812728348110987687808433 0.0032559037884738725305278974524692 1.0032612157765624160882854927572176 GT 1 -31967802613.0674304848253016044478806983987933 0.1701722807274595017105326133199674 0.0657767819075581149529225804653755 1.0680398777735579834334296619206366 GT 1 -346011107905984034535481322507676554579211.9177638732422747622876175037810514 0.7466684553835787956875646123561886 0.0094561229210766510334678318625830 1.0095011159155954174743387110726251 GT 1 -428.1787775760182046535352896413237906 0.1355209083700783372030742554948279 0.0323314520411011455911844588133274 1.0328656594743215396007828557408465 GT 1 -3166487929.5138769115489445015176595283903434 0.7368184193786973901247571999047511 0.0695651975766381135709464920692907 1.0721032726052075119560971267538031 GT 1 -131233515338614919.8422470482539518651736856746199832 0.9844673165083201999920792226050454 0.0977150385482324269468114649370200 1.1028248870254112305240860862233244 GT 1 -671259445125429.7870036483925582731114071556714119 0.4910905169672159494651577972495667 0.0129827365305077497225270325129411 1.0130677488510692191902426657277181 GT 1 -483660976305969975076.5376406174714330628807465979853180 0.3702446910340268083126268930907749 0.0944889126833491486453097713287816 1.0992557573198809516434325384562077 GT 1 -20017.6584443278809215052488999466649891 0.6013143208701982964918428765038157 0.0885366039448387757378321431149702 1.0927038435906026614181737516608188 GT 1 -7563679571888311724841474154354506812.6840264495541775123677818375432556 3.3718138617405698103751509798438311 0.0174180873027922028409263390994241 1.0175715670119552733102259251883426 GT 1 -14782331063048.8416232137368183614034369678888992 0.0260739384369916574211497448767413 0.0939138557926394907863000740786174 1.0986208955525767622157285539930909 GT 1 -2190921381194799.5886020842193837544963895553544295 0.7022613273278904095762859345715218 0.0384351048427403021485491806378748 1.0391932225676008236424549343342482 GT 1 -605819484204654228502817.0299108048926224802187009167765952 0.1195807803495181816217577770593086 0.0630321995263854874434599450615203 1.0651063618233928804993942650184694 GT 1 -530209405785915979.6998569084927641955262081765428267 0.3083964376593388572933931638032714 0.0128124798478743391142694219306034 1.0128952675720570473130667559845642 GT 1 -5.1582917948317083497588083975461436 0.7606103773552800639767390989129598 0.0672546239221934048494635504899398 1.0696230241938202723967014528315279 GT 1 -25134590.7136083361212280950987852481731091 1.1098492579013290667036843929331325 0.0549630852793335134265730360944010 1.0565312890548686162255733094860201 GT 1 -40688088159711220932378984004.0229958933938824620522973255088065 1.0745636136021109480846060476595277 0.0771514876107272324948493163352868 1.0802901832047009422650545299702050 GT 1 -181524771462821278808291206051.2916936145934642279727259987898389 3.1080539646681814199347443783044957 0.0346164106180959172313086929247052 1.0352297546759617480744103540206368 GT 1 -38341576522510726509261206146038.1891467924864256867901156374355063 0.2691349808109885071972874843470665 0.0583421235093802451514367598549266 1.0601132588135008199714718161607649 GT 1 -30562793670110446707945849493.4554855753661661262345030812885600 0.3128764079219957523046261222200202 0.0822720499651140925211233546890651 1.0858542830067251796269026113626208 GT 1 -6115130261924235103290235257734238574142732.6784525512885355623785828411438112 1.7219207991344234094239546636129736 0.0581279767719099258636528358225967 1.0598858700808610923039735195905600 GT 1 -88511918644765360.5971003716585878146228249194610972 1.7403122249695397585711461107927517 0.0215427471250220243768257810218051 1.0217781794825241084702254382704037 GT 1 -7435545468774130307.2620626108136764903853889903529168 0.5856284730938731795425445690926525 0.0151281011798906000208136852899577 1.0152436982268173072261914230865715 GT 1 -629438564512.0004398976197302841862093831340314 0.9230221290595107257817172913604368 0.0490105716460316654824688253947727 1.0502523328455702416857132128269786 GT 1 -102428493.1143143740439728530382753410895265 0.1344602337808002801973870556025172 0.0647762136318666240267453573786802 1.0669694346223525901075576710296839 GT 1 -5293943.3468916100556950650533437847488316 0.2741964568037015350711133374708260 0.0349056770113547692076246922354408 1.0355294383901033621362456846023837 GT 1 -329945634494.4010248259117694334184124960232632 0.8562348346799772357379396209226612 0.0774785588355308600702399067265889 1.0806446608828473706815060786516440 GT 1 -2714580689236480756054586898916141.5718862790222362446254057317580392 1.7129038221751236175717164737494841 0.0416273324661672646501241696338632 1.0425185708779637636476465856822464 GT 1 -74403695569.2563001426875213424859100228894553 0.3977091711889651088206012550677532 0.0836919220875891662840108060630569 1.0874026412554260818458095491048535 GT 1 -219300831351158407227881941974664550015.9881677458100809534171226593700730 2.1786299365533654797077349509085624 0.0607794798134479310588660805348416 1.0627049815667517462765585814938550 GT 1 -2808309531515801819077.5899556780536214569722729554264523 1.0101544510907621381221522208432151 0.0774014751008475448403003611851420 1.0805611067116867701769393510564003 GT 1 -5364744.7106273307999201631965646505102845 0.9834381263693749807079217694960056 0.0322456304336067189539092655594838 1.0327769743535930832133752563471239 GT 1 -35956630399369795.8532197613113555177936000787263057 3.1815956899265417600181593665187035 0.0847170621669633694127227775791680 1.0885220398303347129803046038671748 LT 1 -10688944019633729890017294144381632100.1663121750516565024262259535980446 0.5793852515483487958691339716869252 0.0435252080764904673982954529346199 1.0445008449462303153596987729022209 GT 1 -957786835430257861652842642021033.1622949437978989114454599231142049 4.3594165605220951298157313447892269 0.0880623427988264604154701028781428 1.0921836495763894823474999290983603 LT 1 -35184254151347716.2335769954262988162046179315674723 0.4324307495746019631624484671025653 0.0003952218231221543663531696945171 1.0003952999438509129870091749563870 GT 1 -86989.7525552549145312200301068274509072 0.0223269787813109227897054950335378 0.0063188674974295131499222068701241 1.0063389160413389124635033394573557 GT 1 -3442254608633660378495260250749328592504.6434661390379919015268858184922401 2.0258261472407924043838344912529396 0.0663285330690724521907796672743148 1.0686306510992551979199480411385875 GT 1 -216391505650633292329768933923265493149758.4111451481301860734990374279523219 0.8492847767639248834850754393743444 0.0058955780368483962992818641667198 1.0059130255663545481793991536103225 GT 1 -52976404236526507049192917.9526696673496598471891076528501747 0.8656932674917285499384151111426025 0.0887093319304332046215314467229583 1.0928933677721815904531790581081192 GT 1 -12311092149631691860876515482366315225.8567009351619433950316107749552191 0.7526040174865141996095667722075443 0.0748586128652702100685766021704555 1.0778087021937644298060430493212270 GT 1 -725684668158044646594355890387378934.6463783400655122812805926697930041 1.0984304248707539414267585418255188 0.0984200237283660202455438785254525 1.1036065256074177201880360579619666 GT 1 -17158006845275749540928171839858308040606.1579125039724240002513639903623566 1.5901087155566414609652661954506101 0.0915262728494568823473161174996505 1.0959893104957797248158570020102035 GT 1 -9431627130483.6715958938941127275386725126684270 0.8497878087810411344599170827592759 0.0813803887164431307337774322370869 1.0848831582180096041285203954391014 GT 1 -438110767927484.9031838518366772068061857891429595 0.5044804343516255301096081870487956 0.0907556844324793613251057677632001 1.0951414469162466105913059304836515 GT 1 -15101604.3607074500345262636541597458926140 0.7627357612657009060149342544393842 0.0850353751530796946318084265498185 1.0888698758234717505961174254556376 GT 1 -1145901309112729393.6684313754202422284476671590540648 1.1704173223816838009595819510472827 0.0561596067112111918173266633573210 1.0577982020373536138862379543088204 GT 1 -2.3004786914488522976232012332333494 0.3946827170552524491614436849664958 0.0711790838443306736468590505241218 1.0738393293045689169426137639318448 GT 1 -17706951620607165057356.1352584252228027232414772360689180 0.7847936348308011673314874288823737 0.0676835334406124691360202434545829 1.0700829655385788599410509042565560 GT 1 -235.1154791640192124723622662452022306 1.0003710628218079444591265755034082 0.0215975369884069603819260687736487 1.0218341772251874656957412673455048 GT 1 -720131398542.1635033696147599581987996609883495 4.3678979847087587981752175879884134 0.0190580001394813342046699283941047 1.0192419446503459644013775950547598 LT 1 -1493122167308343962624518154.0294993320600578910577983695637955 0.6045236514908951221068446655639042 0.0029418744136389534912744010043963 1.0029462102318815915004912168906390 GT 1 -17062796849096214.4895749464068063524295960106030382 0.0437925803298037926219476905198640 0.0031282563846283923590753066370024 1.0031331596069936612325847393926147 GT 1 -1830924.3525342538360478528503446190800197 0.0238934067978243152956364259046800 0.0417132224217141799016636541286447 1.0426081955171488266900714970217644 GT 1 -19729496.7447879356455709876761720598542493 0.3317749390924806327111401291251667 0.0963038585963338137965067023581986 1.1012621018590797671409604006491297 GT 1 -5605050366054271.5704158278763079663542848842054334 1.4686234386005455393662518983600983 0.0504821964476682083391315397360106 1.0518009984555241620928207947237509 GT 1 -16596306.5325336906748818744546022297125376 1.3793659209472970420564606986487134 0.0454695429802830550864902957376813 1.0465357274519526754355276016645548 GT 1 -1045637235323700.4188643283258431727802910288202465 0.2233024279923303131557481360665029 0.0040702590490392240948423762960698 1.0040785650995820625618469663161211 GT 1 -14447558975907656498901427.1866866864558862076366313517697162 0.2061184198080047165641072051160573 0.0168163723619968338688782791008148 1.0169593729865320799668887761590669 GT 1 -11614884574297024590388608732.7523174981559253214035136742083869 0.7861682348642393531941216904070754 0.0953815148808556610793409318788490 1.1002419875693039461498517930838791 GT 1 -365363.4006404525379965923513525731532631 1.8312621825343625407472061743949868 0.0588211443290611544587723902101902 1.0606220876692732728236402841077831 GT 1 -41621023314901091847207210695.8520697845168016928992102017672706 0.3133718910958049367599280129329812 0.0533427222766902124905449876498933 1.0548181544420898902512789086897463 GT 1 -44169882499210054956636.3758849416211083599007750642135011 0.8321650137543891904367390855664054 0.0691880782370848549691014857947973 1.0716980395538195328149688168722948 GT 1 -675113222824.1758070677649899584683466423385336 0.6002787208357091726159127476994111 0.0669653945881046742355320566744393 1.0693129883489994048159515354345989 GT 1 -8530499.6296866468679049639546073284522234 0.7112000531072495245827199406321866 0.0955672343866872104302262253063931 1.1004473101176936701760530370090414 GT 1 -8110.9684666636646739793142586091568069 0.3690336374555274234838653550573905 0.0330366324742765929409334757131894 1.0335946668464857496255705269432545 GT 1 -1376588103458091555292787201862.5268846086221882968112898739691867 0.2097841256965275543624926273453013 0.0765545991135917250893114548696276 1.0796436030327808530283010582227021 GT 1 -47835904242284240136911.4010377812547342644098395034115338 0.2433447912888449595792254916761855 0.0085726143592554885697360753411178 1.0086095705769103004941360793722875 GT 1 -1317658434714952498839591031.5284112857772041776077366261714911 3.7771271376190706918371759602364671 0.0980532578876752730824525705369743 1.1031998048840615323805403981142221 LT 1 -54725376263112.9625789310995383779854174687660210 1.6627134477890355294757622779283138 0.0323930163271669728353886859297489 1.0329292827518139041757039283853460 GT 1 -16299518856472896756341627.6811872306297417202598327343033735 0.6003660295426623545422302860194169 0.0896764728892103358874104201676256 1.0939552183574582114903874838694996 GT 1 -26917167740285735210309116146.6854926702373772236939559292731656 3.3412206834740695265108824124517779 0.0861836224649313671391641654269637 1.0901256275632880875539553690086852 LT 1 -1298172079257316665862739658259292783640209.2463976056096106809261655223787286 0.8992541556114059875108595930262277 0.0025394259209271011728906416097250 1.0025426557320003613807791018611198 GT 1 -1150694715901129380298481.3244084583507420038653605405372406 0.0734996687298635286235726063353945 0.0964190080276096266847685674353857 1.1013895304966750723721783745804869 GT 1 -490026917155089310588265891859874095045019.1484382507460754120427106420155283 0.6861030929200506521779752801410811 0.0027440476402941553068365430317359 1.0027478194406002175317549292691464 GT 1 -80545779139176193133367884.5292959392987801359795256963907720 1.0463988096102195777321055943501896 0.0726572224079159984557024780117011 1.0754320108994329443753584790836230 GT 1 -1248629886074785323599308852598769858.1984805664895225863317400369267460 3.0424329152673859610250660142055225 0.0404086084682783952623421269613161 1.0412477189491647043096403690483324 GT 1 -22328510743980898956789584342.8082807996213118035362110735266942 0.6332398246443228801168023172733451 0.0198636928592934082219175804957812 1.0200636280703979641504413235657126 GT 1 -321202857936484439898379566551857.6958527412544832311191884113734069 0.2851443750468627353553820404881022 0.0961750773499235694958912408772569 1.1011196069812172299593808373266025 GT 1 -477787259729094005235593872.7982326382084922552303520420923663 0.1745458331955976310146579434865950 0.0099024687938605437471123012144461 1.0099518243360824770853926569904557 GT 1 -34919315116.5225428156542814073204603507440291 0.0844485442557737545193986472919534 0.0720979670555530124170601899818643 1.0748291197164186745462502156433194 GT 1 -65101783167822.0413989889740717845158530848296469 2.3242477537466881445465734262334118 0.0707180429763767484431482968449073 1.0733430802711378335852142147905726 GT 1 -122732113354247.3955265794753487948288933545183153 1.6873896385992045732214383082095011 0.0972416045717111947370010632916425 1.1023003190303290055204488417969651 GT 1 -2573019.6030257893993786701914086348462159 2.2196231594023961822695188690446485 0.0543688482503680143653765448243193 1.0559026889752766197662727294843948 GT 1 -330690979297048932633594869334740675.7673571121353130380807122107994881 0.1189449378073705520026298945850942 0.0590021762485313362522872851383880 1.0608144520971270693292763248525848 GT 1 -31664274777046852323737.5710838424917624582536646132745098 0.1249103927575562959624647123009886 0.0864597763771471739750111375316257 1.0904278717056115683850958082717188 GT 1 -596738752.3471566372701146847779735331308481 2.2958470982684894971008321031145575 0.0271261878823789491790520277610625 1.0275008947053900554622040497555771 GT 1 -200079525701.2585636118660966662479893939554329 2.0326276494242252967193887304550006 0.0859163900170419204376568193600987 1.0898332347063285658098269912723972 GT 1 -390594144620605157573.4716995213771297988318989392743261 0.0096876540659885841981129703341607 0.0042254784292680100444039489728865 1.0042344309913852029721607519689320 GT 1 -44648609114991653890.7019583764632055073099844380684381 0.5391500221438272182468613999057540 0.0734612036023676915268284469870963 1.0762993599859487593377886581280709 GT 1 -73293546880.3518485973712246946319602042236219 0.5483025429719610736971930231259991 0.0756065626481688759290283442704609 1.0786174999668792467789046601755573 GT 1 -352677.0937836813661510509160164248239949 0.5350894077132918455542792724576609 0.0916510126804211312519122877516844 1.0961266269550762338537834882746839 GT 1 -3528215644202073973064.7052586836742818057082884271966724 1.5427833766002999357928709714640414 0.0511813638843288876725681408735802 1.0525376091570462842019190764282893 GT 1 -26657162958446433932.6474006177421366524009093809753922 0.0296784429445894965102215065609714 0.0285820253257697416522441380735256 1.0289984453563360740517031295449906 GT 1 -43848818.6270021429854385508120003978940261 0.9877907840285840836527891672062222 0.0669708679524790416853902559281839 1.0693188545627460316588413454390955 GT 1 -214886750148520520283842110.6639236248234586756781423212613023 0.7924635287520914733887800808358925 0.0028869364332624935575903245879968 1.0028911116719493420660339741458010 GT 1 -8478561131.5567590226590128155942639947079760 1.7026600982989862742753394587246520 0.0863179044475283061277662536474111 1.0902725847124360572939140012581978 GT 1 -810762840055902.3054723027594860845406936224915902 0.0575490722179050463214345092197847 0.0205676496060633852126520133860186 1.0207821094304115633785256532060522 GT 1 -17309206124663069681912804.6098705236980865219106946235769820 0.7982249697333829152928889419480254 0.0663536424179074582852307885485905 1.0686575445916290178633917234028472 GT 1 -94854302440700716.4043716179155848272685432439658808 0.6980902229446245805693292150125333 0.0547197644454810802283397651943309 1.0562738498890007610922669851609592 GT 1 -2964029034246.8949385267422973030010129137891948 1.1036156329328679528553339146617194 0.0967721457333688143540825005288485 1.1017804270887422286659508008011568 GT 1 -1506585791735371977641537.1579533381981303780287427786450762 0.4586843007556064156851871972377972 0.0512438602539887058645585135162331 1.0526034788876913234874661368042303 GT 1 -205609255861254827.8863974239133222328757103327914608 0.2285652639423287349944794039089348 0.0757781009682870587670686306345267 1.0788030857047387072252302510231460 GT 1 -44031596197050095398392006420873092812585.6194198346860197477768209721021405 0.1243309204037482914319640036425671 0.0548485369976078493406198208126904 1.0564100860221805430451585165786522 GT 1 -5050022.9057839277961302208031387819981863 2.2956642236329307189935352368820801 0.0409348888636605357628560955890172 1.0417963115793193409093552168570416 GT 1 -217582878743785734132677965384178.4005201557774124276775095628209322 0.0038298545958094088048219544094238 0.0849305948856620018572487547803353 1.0887553639993015637334182085976596 GT 1 -16599123.9325360895770623177448993290830477 1.4561716575081203499149832126172796 0.0058841040814915251287239446327050 1.0059014836308318054901797775798887 GT 1 -174385053340414.2791213011118717065421919356358599 0.0230386010160892159542553036923925 0.0743309579874641806682834302307346 1.0772385142546951465334325214348795 GT 1 -22894174595933052329916352497533642160808.0190852152738389814286560694154820 0.0331762738218644688692080814688958 0.0038876697878426706749644877260011 1.0038952464193683660419847454922199 GT 1 -99844348078609730859914146832018.9197268582725737147572903125825021 1.0135952752945866764391310197865322 0.0985809076347383194158658846985833 1.1037849881586168491193647116998439 GT 1 -4213425232971.7742776919681072973951707943788462 0.0797787192200530586980298244321497 0.0736073265180441173123135441215428 1.0764570807849687387348373254938032 GT 1 -15655882251704.8796900781304183903359634248112981 0.0084104387133137073980816816884856 0.0728877626443826605801806934952817 1.0756806448493492845358194339838858 GT 1 -61283461487.9693312708212621302999159700002569 0.5499658884068665953078900090504941 0.0809608789705612643833704688231403 1.0844265884036118156879731113347765 GT 1 -93967046292294481802369047.6164721332529637564083346191110595 0.6086212174224693220720568742721247 0.0893792899390780438709930671092162 1.0936288130269661845662104360625986 GT 1 -61204013648414954310.2941826643907006090128561045742161 0.0447110331952242108230646381079607 0.0204985667308871213981204659778913 1.0207115783325449240323173423754406 GT 1 -5872188784.2420883715333623046200138392441149 1.2867152373921405205433104766270595 0.0872653401439460994644330550476234 1.0913100650997512027090208843486485 GT 1 -1274822595669034518765892671681.1897788102033892313673009386208028 0.2048099309963905784785029109153510 0.0911492188232018944593838930308483 1.0955743554011473778724158732753730 GT 1 -78.4390065868588967937216839126780532 0.1411781920927918322893224155035068 0.0200353553784518394384712309148229 1.0202387848850946544419913286603427 GT 1 -4068281407152196.5345295857888634581104681627951603 0.6111356825820622936405808819388335 0.0752297003058691516157230403448772 1.0782098969623779500055339051956923 GT 1 -1485.2818364327012688441394186501142951 0.4064433047421284829418965983570387 0.0780011707274584886042251290955071 1.0812113251958271355765958602605660 GT 1 -543315695998263156091130779178806.5112992065781468553818675168605403 0.2842975663859010377321121166435886 0.0923946171045728341030748766666445 1.0969455951823731636728575417169069 GT 1 -250.4660195854434518050250621515266036 0.2184602846410169900720118328937350 0.0799756171285210724434074227277669 1.0833551061690798217222169386476590 GT 1 -344235271616187400710173501646237350695701.5075315280285430903552653311434765 2.5358247942917558465501491830738169 0.0807452787231926226406304311378275 1.0877361711563091322404660653611663 LT 2 -5466026305325048246929821433579392591617483.0072487585056674531273494139644870 0.4355201202869556510972516123986229 0.0934060717833953408699056160879529 1.0980606378101860335125939463490855 GT 1 -8059846222024473722857970.0154234714070350619604337859644543 0.7820027296496751085543309543343874 0.0558998038185539151812801452845604 1.0575229784463717159199195760433937 GT 1 -929500651152428654185751164640647306667.0947684975958913298699352265510226 0.0473575996771852196279176865816755 0.0048578821672803022785958152896115 1.0048697200303790355879570566812984 GT 1 -1045769041340132584304552873499120.6670938570602503036495639055649870 3.9185506602870071308774367315308216 0.0154318524979352581204843045162899 1.0155521628800271409106982327954248 GT 1 -11549258087473439460643437353434418.3723988329734727529333320207994061 0.0352171834657309971471909358183759 0.0897193816242792284696841905689050 1.0940023551666138021379956975735203 GT 1 -68044.7418521926085671844924473319312808 0.0158858051279986954373363572200585 0.0778757589800499847669736410262131 1.0810753128551952828476151758234309 GT 1 -594965790173779769233712591914989943716200.7762012429248702963118566773878945 1.0629949499650085449195097967251532 0.0393739129406642844670017242613669 1.0401700330731719701693044176848135 GT 1 -6219982360856151471505016952965548449.0857794433606120746805371976178856 0.6759283119732498523190415343532001 0.0026836760743032666197271696810000 1.0026872835886512891494877055288534 GT 1 -2475010424728563344155448916384595388967.4207522710021466710213716493341745 2.0097239020581189995971978107345314 0.0622615743465935287507950604360281 1.0642842327746306966175411689646035 GT 1 -79966292293205491633890.4819436118253455387286822212347517 0.4944525845232843083845092465371080 0.0396829929344461474605549253438813 1.0404918333361723798476428953676114 GT 1 -12252964326272611260975921875.8000542872352464860585855008148804 0.2625065340160921420618080230024506 0.0747302281282010366925042504980500 1.0776699387231159828279252074231299 GT 1 -208.0205844532435650627213639715340713 2.1192355871523653744352299793315933 0.0319413428501670140543379837150853 1.0324625973122710580166828578769069 GT 1 -34331901770781591.4311677152861448304976194334216070 5.3618654281163240797991746909520260 0.0878144633710251830071562227810616 1.0919118703126144521048639368330175 LT 1 -686285593428264297971908649.4206608610929865510361714154756453 0.6088176713684822346369408771674128 0.0943787551554127438702547503178996 1.0991341123951936530180929961329876 GT 1 -2816987456679067319387410236508.7756111701421734084072589915416723 0.2395903219724624401573707488663772 0.0136209942078772321632994142654284 1.0137146110242341131971617793566402 GT 1 -5013796177070288109235256097526.4021958799903324126479506722945791 1.3011802908580870775421546563407868 0.0781298541997070849806004985389975 1.0813509050403791993698391025839294 GT 1 -53495604310752.6586790147217073074314446438659755 0.1009165944320176747922385747572352 0.0080000303362777986679556995824751 1.0080322022781899269052690308670536 GT 1 -3154773868534763143199278788251643744398.7103610268026567551068594020616527 1.2284186729397720701779963783509093 0.0922168081121967773732621118030849 1.0967497043462023121730713461778939 GT 1 -6599572091000739469971530946636999829481.3204874539454681726692560293914087 1.7491286026482685531323856250090271 0.0771118953694755932106886779290733 1.0802472819143514674999420090977611 GT 1 -96745346847000124143842189582028904780.8631012449655867175994802604371779 1.0168549774580366079832984115308531 0.0174234724625618728194006270859489 1.0175770476486911493789378427363867 GT 1 -316766.3180899414196913510901751074918736 0.1471089163726194410470350989253509 0.0441751582093744510894182648067307 1.0451806026018321465305757519245912 GT 1 -1701887766154444460716331687169113088097104.5308135478674832385218287160158219 1.7750003608957423314272594645539944 0.0347902351384253355277081298835522 1.0354098283516708862739204840565770 GT 1 -93759216402819468384647.5488291161129313838687604566414783 0.4517874936357632441055398745562814 0.0579824971532970038016668037564393 1.0597314240617198081431778185775627 GT 1 -3952657095.3268763563363134767740394001748755 0.3000564614642740414417153367396660 0.0333921753639648303620138332900049 1.0339624245945703957814761016814464 GT 1 -44601428.2579698704192181546340084282334696 0.8055959997364431262259495455362336 0.0269944307204304575004407076486713 1.0273654729897282706719874996134092 GT 1 -17362353091738431221499762280850723.3240932589976363154583334678948201 0.7021760225661960284164719748917081 0.0929062048420468064542174342080532 1.0975094216911563727151334031810210 GT 1 -1146409037456297807240973306153515.2335482476320158598925323262084231 0.5214213207857066349293524589269306 0.0502590344923289388557109602050247 1.0515659994548595819227338275679008 GT 1 -596440577415696992993048.4430420387283106323238390273334967 0.4473810385492550509692645347126130 0.0206754502792196792445469123918484 1.0208921799279386622655968373869732 GT 1 -15658723638589600.3832247337018787843859495631345163 1.4959071899470020354473805726914761 0.0869980370594443778395248883820211 1.0910172483998241439466036327376884 GT 1 -3714649969576581646598685822021858705.6471261000131581502845186019307522 2.1219433400647625597481502303545705 0.0346561086745270349708159626576012 1.0352708770578964243334488094480773 GT 1 -9247272032.8820932249670871826707347198173031 0.3417668129519608687786789562554154 0.0726547016102590265743734466520213 1.0754292926012030503949435338547725 GT 1 -3583873800083875212284231106539773732790346.3661879633251615699794819500946181 0.6214603307917579077123507970658303 0.0959869013151708217051841010974930 1.1009114289993276824730329834802484 GT 1 -4694098.8893531648458323195769392136404715 0.1381483337548124328254560493916153 0.0929874743322925752605813783863931 1.0975990189648852326643051450679713 GT 1 -1627435602705.0246119938380625772294270634233642 0.3387031858577873193037767170500255 0.0454756441783425666886393961613281 1.0465421193041074614493548669382321 GT 1 -3782508157.4784445066271738346583475719757481 1.6209538299206630361174415336149814 0.0270695525869795741386670234552830 1.0274426819687923569814396654915899 GT 1 -520832887175587126196578337216679.4227253283545820738143530471523470 0.6182015493773458097625426626141131 0.0255173604527743384202388491903247 1.0258485749215528998587660806493572 GT 1 -85522697723999478935611555403614.2437971672316299533722762877997790 1.1194017305899654040175168719744825 0.0884351852933408611334828786930725 1.0925925796496456968043431463103309 GT 1 -269652020327692463.7642410843570287145442970267396937 0.5175980675626011273803302074960353 0.0781519833975990057640729762498705 1.0813749100085400001826775886448328 GT 1 -196043067514787570680.0428217922081221669430078983500072 0.0541338780254825576941756630624204 0.0343878012034496104087912220094340 1.0349929758936216526296094844486758 GT 1 -19773523384231980664.5034612175019600293473473931306805 1.8362343665742619816708382535921383 0.0375963778099177571710973852998326 1.0383213506233451627687729291463884 GT 1 -132053535.3354592429434653734902601683681333 1.4438408628219272347195617330891597 0.0302665110047350698315343949786419 1.0307339988495265479229947403274802 GT 1 -67356.7734021714085391723137545551755168 2.5186166646570434375767143445094484 0.0495944975079596783179409484565587 1.0508665407313832473852496722162386 GT 1 -740992873.6496564610868041074391857634744839 2.7570504290972888856204563540130737 0.0470005046314598173474059255126057 1.0481409048469206935230349991605041 GT 1 -1546360858399534474.5948455554433443715851088898337125 0.9958002221762448523243210327292787 0.0143382238146448857172821041410797 1.0144420094076212939236662952472552 GT 1 -517540534560.7575160565414364540024480604483068 0.3360201663708542684601331706403323 0.0864540618471526996645833888970859 1.0904216163574905589927002239672888 GT 1 -173718663786888132.6587085191384997008135317807274644 2.0702352609891452596794924259042470 0.0415390209396506322834087612194980 1.0424264277473003106586390619279251 GT 1 -8210746075556182.5136282202003532064734567327515318 0.4213746863213198696734977250149166 0.0315242469899140384243024794196864 1.0320318320601646634134808802099027 GT 1 -104047786327581285699976593.8397482852841998531896676017740504 1.2905869018866277813994895373131862 0.0549922968876532208200863723139864 1.0565622000799803146337824151513453 GT 1 -541904634.9177064274065722725603675699230645 0.8301973336064474019487104296351421 0.0935258528163236654247371520019823 1.0981927685721003611370171249453478 GT 1 -252834575974470926007826312967616998595.1096803346841646531110342903027415 1.5229171084339797216761481281084844 0.0359776156811978124225889170485998 1.0366407643934571050256450091513201 GT 1 -281664425513549558.5220403183692522419370370960806932 0.0459934362631304449897194824237916 0.0715871286130907527625194102639125 1.0742787406248481019497606270599093 GT 1 -150492327760291905885078959128.2329182261878084998008769791265910 1.3320143348637677265683009709892539 0.0313439419780557552552375711865906 1.0318456753811486712294065812721149 GT 1 -5120.1368640293628990576136046109448382 0.4063853579088860629299889116306662 0.0891009876962853421540571034969566 1.0933232415401014323744127035738340 GT 1 -63598228867979495367155598.6157165213206013512005193871025928 0.6389925261962237493217334955601630 0.0598338414009116294766392678778430 1.0616986548719698035162854563639222 GT 1 -625489184631.9746992606659615062075985441448615 2.6379859953652229145495793480897305 0.0205221313259908021296016811708194 1.0207356363663193936865475481603553 GT 1 -4765296805201991593719459.1917794896482329487083655444029673 2.1180499581925275051652101928112838 0.0825188850998962611244611833826378 1.0861232824803947836779611084962202 GT 1 -3268.6013283550494759254988412787584651 2.4711915670746936432259244720083768 0.0848594700589524231461775371967641 1.0927257256077806388968722709105221 LT 3 -550772179571823926747933043287.3887287447779207042949320955642419 0.6229914197829606330987005061061231 0.0046134449801133665465972520001199 1.0046241197617375101159973996340739 GT 1 -9223705204899883938500613625318500917.8322351603669706355718013691328466 0.4111667487767337892269981036926178 0.0866373664572635203073451387334208 1.0906222882614554304578054386021625 GT 1 -1015610565808062010110695333991036.9967107159520988285372922816042721 0.2840993361891866685899612743912337 0.0794697119207474828465692191009092 1.0828053749076304308848443812136859 GT 1 -832217.5924460919854095402099390095244339 1.3408380848565763911315075059301467 0.0555373639246371428160006777241067 1.0571391522985985006231179109736819 GT 1 -428241032010422315893.2367447024264107369978203180826848 0.2070515554237596170192448739947583 0.0228394974873311651307569844549325 1.0231043594568999544158133150102655 GT 1 -15095740214483996821914.6600263294139506258245998744884003 3.2697601520930561841723913949071648 0.0257730121199815157709640496731807 1.0261109553861184297413934438468811 GT 1 -41851550222016875866793793428068663330824.9693218996638942381012896662010796 1.2577648860959806010212327589487292 0.0156071517938209422015999303764618 1.0157302256214739851495683280634343 GT 1 -27286089408520960.5825112628170729455499131765118590 0.5049462640267178176043381413957494 0.0639620058394643343588621516641891 1.0660992112765257041696933413480898 GT 1 -33947426109239168973425183261156.9909534066060455527919583777567292 0.3995186573162743016452348648154340 0.0490711917343987224656615239954156 1.0503160791068136585357189614398281 GT 1 -67544916.0043969917461585950240996421747917 1.1350852436310280697171806951678817 0.0567728543151893678493778460182152 1.0584481497608989857022093339206703 GT 1 -17007130848382003934832972048.8588693087796725268876432407525033 0.2713685747129416578034006433007168 0.0879834794528102408595419797360794 1.0920971744367971933204994469545219 GT 1 -122044810333931445487085.7125866276147707112607493500641126 0.4333135137747001885195561371040282 0.0959299671092080342496865311119956 1.1008484515786689424397617901146871 GT 1 -2543952036130496.8004390977534117491982311221068683 0.7521975450666555897419470380287458 0.0102368645736897711370054683495236 1.0102896216251995379434459775633113 GT 1 -71161323743642183764936645.8209501097626208125875711974907070 1.0549190970885124108498488757811421 0.0166537026651939199823849467448266 1.0167939346729745750429064012720846 GT 1 -2143239044849271989539100956951.9409765565513815686571161272741668 0.9777918449126539893198807938227736 0.0710282103840741382571058132258507 1.0736769070277244657254707675130054 GT 1 -30777858396486471927319687.1676411533885603019936628226839165 0.0239575330227570204818095895047427 0.0504265997506968506447526805245703 1.0517424476109139124299816768971099 GT 1 -6622156208460629.2912850526446127488130639777966792 0.5793702452360975047583368275230732 0.0214286178684733773765499382556406 1.0216615442380146175689808563699377 GT 1 -9208606889.0754584941980679015321792951708292 2.2834119536896558415148525183258367 0.0103278678156199549728652441751704 1.0103815703173173123567820993092938 GT 1 -152647474269730.4077439009025071014021894176333114 1.6496814036764466085458003726275861 0.0176105951639571516689320219826233 1.0177675066270154238495558827526873 GT 1 -85699137555286.8285818517806036835587022339619039 0.0398076346200907474251064827608826 0.0837269067429882758821877158189698 1.0874408219984717335149945061281690 GT 1 -1996842980006278426304880273374404569341.7695685599744891377380521984462299 1.4594645531930982764750945755634176 0.0831106881554424532640165179649760 1.0867685208329653333315653131986090 GT 1 -90182882044030694460873143299425927.0379768350746975188821567513664842 0.3247433125075874116083947227495699 0.0788493797857925467967820651133430 1.0821317162345984454485727587236653 GT 1 -27611066637810429770435.0763730868449644959163404447349957 1.0175532541800425634296240653616085 0.0122083119679400151308245628791894 1.0122834455373976305091680268882005 GT 1 -295142535825398781315216807085.0251819141194982636335001973745310 0.8346982751108282791836933598953316 0.0832271054710407967662923942241184 1.0868954987630880306467600141254082 GT 1 -16956.4915840927990329154792399204013994 0.1792543524182767289933168408747205 0.0957103927485701096765343499823490 1.1006056078911160210916993156181749 GT 1 -797778619393092946640773167492577039917.9361043176811551392847029666146239 0.9888660465497200493965882627575398 0.0033713317377941763598764949134622 1.0033770274817351725521610186869169 GT 1 -25639424198763088185740401.9742293098810195443657684235364420 0.1556307317279822010603603874261552 0.0475094978566054818930415834912715 1.0486751435339946701928938026585431 GT 1 -7300073.9273792754354961779311320275417620 0.1521145386190997244651654984530924 0.0994965992581348839666494000470570 1.1048013378692426910811980627567681 GT 1 -2445677375634831810951672280.1486422683850165837354149101572290 0.2630166008715262596651489187782836 0.0908105440853335460652379256119262 1.0952017841732104565962531006488769 GT 1 -40866499685446596290513.6688109589646144530135222452672069 0.6415430798069744228614004532575091 0.0829100573515283413157461839143178 1.0865497279494330406912585486787260 GT 1 -2481340908719651.4871546925478873476273206347398979 3.0812566484322380138053028142532191 0.0490843171682249336395834684637935 1.0515964304620725167376119330896884 LT 2 -24134.9513713200541407463062517719343525 0.3025126456275533178426734818314106 0.0999536847605222837235531114192915 1.1053090556047200840499966388448217 GT 1 -1935198405783533724927601482347.3043657454765779540381976157650472 0.3301315181770632099816049018304542 0.0847301182188899448734834010050266 1.0885363044303909395667583219007142 GT 1 -110267838275338916387113363299006919.0875630520316275016930384926718101 0.2321228042112026388242708639060026 0.0721738861379191559157906012992973 1.0749109410570489230125818622257603 GT 1 -1767443665183.0679239016419492008439039202995692 1.2079267397809091681217938511984455 0.0600751847560798230203923810546132 1.0619553907000244630263550501098928 GT 1 -142.6049450009604301293170156698057209 1.1037021546970745314415575918459829 0.0221817333269399401913905838935499 1.0224314476119438142653861569838289 GT 1 -8918553.1490643772226110330202618068000794 0.3422429088264042576716187014653823 0.0826550333688605725036561373280937 1.0862716870301061831281478361549429 GT 1 -331896251454616163083580362584537540.3291825160875194660409143672275513 0.2224207840151101610015666635943339 0.0322126944785331199538128481916051 1.0327429415497524912592002844599448 GT 1 -4189461994.6470557717671109918472582443235606 0.6976399157900619549652244152447290 0.0529343741888476691002907810676364 1.0543868895580781551308672609069413 GT 1 -8444362.7273034281481561075731011986805329 0.2075410620448830660006272446271639 0.0477754301906464735790850654984487 1.0489543793521858991605562209351064 GT 1 -7787801642030.5557085450699733583749634926434140 0.6383256990773293101680380952571648 0.0916738064406973839172303832219457 1.0961517208854798203470288224468596 GT 1 -204250415043.7873330129054043359700837540583786 0.7865566256465366113814360344881200 0.0781800721760454861238631075129620 1.0814053805480246938316694483098642 GT 1 -560.1278202118489277625573137707701162 1.2696234520935102282293630608286448 0.0697730495235152875887188397118755 1.0723266898355749531596262294826190 GT 1 -114676491296180232989872882139779569.4488430213996247106586039473194430 0.4155399583263497655642496842391444 0.0059791956748151482062520088278248 1.0059971426399778866481662639855837 GT 1 -332154662732824128467.2310677531048346539317798190171521 0.2501398864168884147595757977398439 0.0323212422410187929182976130842515 1.0328551086031137898821712690005191 GT 1 -5.8240977199387405895196893185184885 0.2642726611477959887887781447542182 0.0524483308115724225841126016721646 1.0538738113873883865677615049256129 GT 1 -202542714794823927020318.0531659666248335461742249940810910 0.4059160145430501639838419021585816 0.0498282808439159360034973437989443 1.0511125537157255741947569066302891 GT 1 -274370242236541448644541999.6672210835981567307602098376584840 0.5354907351217333490107919481544428 0.0641318099069018234615502738827720 1.0662806349710800821634047132080753 GT 1 -211.1137329123135338303421001857023248 1.5197242264482962907766262511091858 0.0586713466680410267664195669547314 1.0604629407223209704720750770443229 GT 1 -696.2727934472227619147475332533659709 1.2900812201448890639458363930660379 0.0849441485939948835217227594557534 1.0887701757814840569894508699954790 GT 1 -10240167.8505443145212187081589349748693615 0.2348942146724243786284930705642190 0.0409094561075143349408254200590678 1.0417697936519749002506057346428810 GT 1 -8234255296.4744835564344363894746858512752145 0.1130304039504077718876677363376624 0.0510150360109821906358943363907762 1.0523623245556645751132844443493466 GT 1 -73221574.9589511633129234119776937591018959 0.9254941498868980748943168208831547 0.0108967847978526611950110798632679 1.0109565896075667128961577389660992 GT 1 -885679392393.7298972500935453009990900455649036 0.3986463004171947372668565402421073 0.0906525137230843236960283490020557 1.0950279847204959392535736317443092 GT 1 -33.2634235333697340892626776069882014 0.2874144596529691432694370760466618 0.0773168459328937591324511249952416 1.0804693817799565304898893854740143 GT 1 -9163326672495920.7705650609141548170129886407410397 0.8361307757689708180023460121237705 0.0975979292044326822539521462132766 1.1026951034763841270516888017720309 GT 1 -466.9691937133937768328882359585023115 0.5259659681773549629154751055978461 0.0776926192745796610795343422658698 1.0808767262511563779226375096955315 GT 1 -3024455522.4761126664785023233327171101680088 1.3212897642417941576348813938661499 0.0209913593301022814554189958705028 1.0212148104743369899061274271335795 GT 1 -124774089.4392976452377529156849492077135978 1.5111088561300100005870738544923316 0.0022996997777094093137341717293319 1.0023023481483271676136404617334345 GT 1 -1112918462187468153.5591435361940848178268951686178615 0.0901716273337319594219141276704627 0.0121476472000936759952725407032021 1.0122220328875360096806508477599345 GT 1 -2333352.5988997473180991655374966555090086 1.5065513409763516786424972967510753 0.0493516121612730836488171084649611 1.0506110136795268522635283282275133 GT 1 -220625.7094611827156854672890500033693031 0.5680257320197465225839860992099095 0.0941297226892097020778854258615712 1.0988591649668164477052490907274207 GT 1 -5.9663733951502355360612315981725674 0.2127041757289674175001980374943281 0.0996986362540081998679963032066270 1.1050257231004517686358033898538394 GT 1 -2402998613514.5239980770834922497974608484502463 1.5042782153453319961492621089292939 0.0051822639395947897580877036893550 1.0051957384418088238665111300019704 GT 1 -22044220643139760171013112755.9140664480607249611501590378256903 1.6925506557945791916825712731483313 0.0098852345923728721579542792212894 1.0099344179180761069340309814967286 GT 1 -1.4119339697549044415781986391207255 2.2264125355618618299990804376177590 0.0935455822769095371587308518346718 1.0982145338649735143871812954810171 GT 1 -393921762776400.9748227836369383322236145871262819 0.1246007038625238762460429745589971 0.0122307406795767227206312664354411 1.0123061517076807885195203704859684 GT 1 -1173808293601107290500940343336252.1855981979650099767618967207992945 2.3967861076439630679586859535580798 0.0801610191032930611327030903853539 1.0835566450214213609762669363959491 GT 1 -28622068953313959447767990552350.5950829508033861368512992196655902 0.6690140146316108032006440748910235 0.0422894068810848095270968960165207 1.0432096415165553034924836633285517 GT 1 -1657843774505871098702249911694544318797103.2611756283756133681684579451293645 1.5579163678803307689222347107661253 0.0784800074601055345567309766871626 1.0817308064593214284565668507800595 GT 1 -16340100411941087.8703017505989615512587426697853408 1.1163473665750925511956063473833891 0.0273351687977829730157115749940537 1.0277157256129387927884307191465747 GT 1 -23290243206621269.2766036971525718240292610717565553 0.6608761460318496167739321839937311 0.0110408007120092300130052867127223 1.0111022027220529475233125030476907 GT 1 -25298075.9514263487469796160046254693084615 0.7173034486804447671895473802794074 0.0699365398382103548446195754346449 1.0725024584297482542351025741671067 GT 1 -2749227459511238547149456.5499610832418790740485637014507755 1.0235774649465611796681157294444061 0.0043706158612413898440925299027842 1.0043801949238694572376358681215525 GT 1 -1470760004339865314036188348459.3276827691371061827024804973429097 1.2358494205529680292608541563329056 0.0603609250708473741065160714078508 1.0622594402920205501219889399793527 GT 1 -258669537226173263623726309.6275553279576600967071036107830770 0.8370207737232734497405627160152294 0.0720691028084667804399518456075087 1.0747980132017967527344625450956755 GT 1 -46731156922524960519516155804242.1639115473423988126533263488819815 0.2994646498712122744883479437152502 0.0201085460967754996635684220281071 1.0203134747752480973710752115170130 GT 1 -26806165805565257748412.0126629227060751923608935851378548 1.6341537883888872951694483317368434 0.0615302214992583878421024638960974 1.0635046253912303803153065497188407 GT 1 -106946367336030125246072996324757.9411123508549443744603051806328634 0.5241275611711752699298801259890403 0.0736943981487114704466991205994447 1.0765510751842627065390994268056728 GT 1 -6825030227944754243182.8238858701436482336447086219983546 1.3752915761787829679303261706772519 0.0240255819904466701154412134887862 1.0243189039683458136084818287489222 GT 1 -723108.2319753564850876216341593809817783 1.7032033326043968843577839647710895 0.0997706092246979005901870178953553 1.1051056694946439303740656429545445 GT 1 -253708924506848870.4214511497001367255836871851915560 0.4312520319795291247449129329044914 0.0205386002535350761179646778923527 1.0207524504940569433699799403811961 GT 1 -229580952972155845521374045061685508879.7650805824853918360916451815887282 2.2351375966669610100411731897378449 0.0331698036055867141075984705839940 1.0337323972992137831717211386452863 GT 1 -115110415719530773237441493725805092.5332042475582467463924331110529222 0.3756364224026780515838278498943018 0.0027913689830074369650116858074597 1.0027952721184933939011262002109963 GT 1 -582391079511113639747111367740679933735.3359161720978423831832061960535384 2.4124499851923289949534946148299021 0.0300194055451161428273013227500134 1.0304792134014401437790514262141419 GT 1 -2579873419184942.3443078237598151363786162653019407 0.6177995626658731219652188531557871 0.0760981067032569483682061375211124 1.0791493890633084250483983357007544 GT 1 -45016543048248722515175.2324283247320161641476845562508679 1.1386180168058498825154511409289868 0.0822415187296569802507528855950941 1.0858210152745979340800486804738999 GT 1 -14.3090446819528992278799708971334662 0.1922275842473437087115185234943982 0.0705067262325518201492699201642886 1.0731157082454783535434633541018354 GT 1 -4160670976699450558205787933416462932976.1892597735967870750880272623303895 3.5466123149783172247117151211636407 0.0029328298379779871501148814662194 1.0029371390108501828516774901795274 GT 1 -7567.4598761631744465400659742302769061 1.5280382242149791826372304077683578 0.0237214515439815919010947654454299 1.0240073352790934401199164292336125 GT 1 -1662705279048568526675.5255509564850815200540617010203885 0.3045251380465483415764848542512609 0.0485679408483849600219123049354833 1.0497869987347637104738531395992459 GT 1 -465.1346795053361413707466138544661063 0.9428844958053728291263692496314903 0.0640304302754316936750825500300179 1.0661723140110636193820373174337325 GT 1 -2093225458640015396010486862706349.3404009517020474526955106533406904 0.7987111556496073572153425307683388 0.0236610289050327952884945048042006 1.0239454464162075051779012735342570 GT 1 -76587452277.4173332515397368382946588217441333 0.1427615570003692938966491027274064 0.0914532408102194366160843093982467 1.0959089239070474558097638326746165 GT 1 -13.7363508565718135529337726782721387 0.0090362309985219704236767007038394 0.0163198249108075206350010014996324 1.0164544600779210786524382133042089 GT 1 -262289911110467.1456506600380864428728770017520955 0.4841367846284844940373137690027300 0.0486588601170053405661659112748878 1.0498825637434948655658138877592649 GT 1 -63376544.5807504381676816980905282170607693 0.8739091186390983512129350391392789 0.0692371488986653489844726461446356 1.0717507590709801123500826495174991 GT 1 -3419637.0759556061420673531715579641710081 0.9709687506808756816837592942465233 0.0513027372610651139185853167411818 1.0526655378631773065555272747171549 GT 1 -143753903171246465439917853058966051.4218006103882182409971255611648844 1.3286120358717502795676439105553301 0.0672383860486156223732650577214773 1.0696056156569828537668379771535705 GT 1 -844097191218.7952222045201939782017180291175589 0.2274667513329178567281398271110193 0.0355200883496739071429497243010244 1.0361662745874929573423916193520279 GT 1 -1249173396868750952473.7176815145592009327597660643498244 0.0675890129425111742747239457558389 0.0854545493026005473829375755181676 1.0893281123343923177593041013686529 GT 1 -1342472752235267608161541573.8135580853232365470803774399449391 1.7510724145171624731842001907525895 0.0832953550603639470497591295682107 1.0869699470046241166226916107845452 GT 1 -5025356226379223636.3053691596996385911311509223358687 0.4519644301980357378450662086275566 0.0454318847986293889679168300857301 1.0464962761819066892497539875000225 GT 1 -4365443.2276364796767043254807745913125488 0.0666285932898753085159315129329747 0.0868367379873125698617665706108445 1.0908405950824274101401949549309508 GT 1 -786.9332798495768556612034498290679804 0.5401751234368348879987025375434075 0.0865399016066932316637847298713513 1.0905155840378228803504402433571067 GT 1 -54.0122066101113756076630540720959972 0.1259880440517921960352682812350778 0.0809690265664385724580260667208711 1.0844354537846458744484853901599207 GT 1 -178677564993681333902413841645917193589937.8840593418774071297749611349522098 0.2378276010417262062563937620015479 0.0940810751932564579131605386174398 1.0988054639116295881285559317484599 GT 1 -64892889716658642078935668.0884106269364094868037875392787542 1.4970083061672520749388948256631745 0.0669143178260067855948191918532412 1.0692582472238421204384890293338394 GT 1 -393234462937.1391319621482230208010113743466712 0.0178469537368645683233015334153376 0.0902852992970551176251111336291041 1.0946242443386158994066916284889503 GT 1 -336171708868419343034166706848040527.8403119464941366208613557056243438 0.1088835335576239850805663248707908 0.0062984168299845730584697036145233 1.0063183355388676097996468018600174 GT 1 -819532729781138142500393143446402626317919.0755549328586643017668342853943271 0.8936829214304739493427494286217987 0.0540858252583368404809501511705331 1.0556034384205270330948627190138359 GT 1 -3567670105689264987312.8747655157555300151247865298180110 1.6580870036159160606366463509890337 0.0366139080753227528053296193938915 1.0373010213395928574598352654685283 GT 1 -2093545374927427841.9575158924982864566080407859885144 0.1026305874559557423637431765412785 0.0688752237969255958633730780598647 1.0713619868368337354906437473507578 GT 1 -1242297.3480553030107810043522372380078140 0.2220841487430913902397574344755054 0.0961454220559718038980561404410438 1.1010867966363030130506110178010295 GT 1 -8054873577095500245233914796866580833.5011379550619416757997510460804997 3.7825448021743955052088515968553642 0.0369716379294784997497320826551964 1.0376724158310801606349860528069252 LT 1 -1517026.7662473969040993015848697882882480 0.0206605564442036977309919546433966 0.0543918505492850424096003441679674 1.0559270140819974487869396053738860 GT 1 -105196348133.8039530281778594363883035735127096 0.4727845599064355988900661408201962 0.0554840804830904942345514855910506 1.0570827372150042096709420913373824 GT 1 -9868496095133052898983401266.9790996163684429627898256201935173 0.4774175299690210301779149222907195 0.0508710293492023667474814838713091 1.0522105879718609783628634696975592 GT 1 -235.4977918961489886208396574084923476 0.7840972537748185585403673205581794 0.0022879765132084645917185725993379 1.0022905979307287432994358716835868 GT 1 -7030215283280397604228662940.6495064662344804201678794392616169 3.1753565609264612966324135390643891 0.0277098775838238543763784583520872 1.0281010392059140444824505609044953 GT 1 -1212667226266639033389435812271377.3151501996608914430329334210699588 4.4340029509411134583815205564838464 0.0348749465304276460918475175709169 1.0354975969514518579215003987005069 LT 1 -28528023773.8227010701195187947732460596918455 0.7151064455061993229452393741122225 0.0263542768799882159057148899931267 1.0267077754698721327633052351695600 GT 1 -5039335271415132837045640.2692707982469379308496795889979250 0.7115642276626057442514418991493900 0.0185877898475188741519513875901469 1.0187627138381283561888625299561579 GT 1 -179234286951926510622959124671080717310376.1108133024428540807886313723356225 1.4008685556005635702637006179677745 0.0717544620531758352902268843242702 1.0744589928884814518212228804527500 GT 1 -605771149603.1848885094947621137609388207250881 0.4734101464773867734535381890841248 0.0321411117197493705127015868394019 1.0326689789019859699144564856284258 GT 1 -13758265719926343253733359588006.6726131008326560553657389193765300 0.0432929893193777209476923235748513 0.0072256031027754179583411131939383 1.0072518342062818144536252948130375 GT 1 -1653262480054244725595273243.3512749517682304337910454870537428 0.1002329301878341627471649127172097 0.0309438688897219915461782608686440 1.0314327419266734008498630221146088 GT 1 -2258739732325462735521747981090209500638012.9097524828202494193506531536876188 1.4096922952540306868754030891858371 0.0715316976124794405659507352847589 1.0742190372885111790722052598366045 GT 1 -5839753829800528481398531577418112651148.4901001815529890717334360922527832 0.8622548508148842993362825498831205 0.0509089973601401524474177741526476 1.0522505917769806027805791058952350 GT 1 -763639823924338225968099976498354.0613670183058278270805024518618965 2.3299788280123697618888648995745000 0.0347389802813313924466964076467780 1.0353567274630012538687925095673808 GT 1 -1090298342.3436225655442278383916966170951879 0.3299541658563408767416864191069062 0.0764824435516469612954445451957291 1.0795654687510997564170955136913839 GT 1 -579967097582946594418122290279548.5035843201875933092982378356579052 0.5123164061880654303606688096616997 0.0199857300043008504570381196001033 1.0201881462034318116993836483472913 GT 1 -244897120167.0937578236795893975848411927655663 0.0180906583589527277568417311502640 0.0409980006453479839446152089369272 1.0418621192680754125752755400835992 GT 1 -6041911789976191309.1588129780226015864713990978268468 2.4380904594482153477680434057362272 0.0563700695292213105620838552021119 1.0580212125040434049329285929613190 GT 1 -3419700485089862215057807854817539312.5034784463948112520947882030001084 1.2310163442010744010601122073908723 0.0403789618563503357593214221171126 1.0412168243890086592487377864228718 GT 1 -46278174.9230902789284347697354031665871188 2.4751928471074050616178051176656358 0.0384195833806417500259191805501947 1.0391770808210527686940750738330109 GT 1 -372502961859046615339506383393954089256091.2560120628004996949717311534748595 0.3557627106458855188006611841289195 0.0953264345958248862225381844480501 1.1001811015613962021844274308604801 GT 1 -46018923097215988125642.7211868357921607901438383030245514 2.3187651327580489255524850046492432 0.0551969088357906115690458349154464 1.0567787423386620885316621650533284 GT 1 -732070593303270440546705309.2623375605308291278506086100749100 0.7868584224130501002775613895092083 0.0922914335547083735342159817769597 1.0968319139648481639852856628099183 GT 1 -130289497818621744483888832381720.2225092722577614793957532843542933 0.3954477323673981423532157591845619 0.0288248072568970732203743005971512 1.0292484018953206710282930930608849 GT 1 -66851543173942177320.8128402185755501052754273441686604 0.3102609467843150517123588114430588 0.0563536139350627462853096174863023 1.0580037740462883824206104410797278 GT 1 -5395524259045587813546064517452.0410394277935404654560287486748426 0.0178020732069818420042430908338293 0.0644986709355404369036778578546488 1.0666727125694192948686405616134844 GT 1 -750825006025775985319219881203609039171.7707598228493744777182989877822802 0.6642137514961183812797243035886395 0.0626069654736088898155150892297002 1.0646526241522553805566926407167401 GT 1 -379567801036781010855746493790816072.2424688335045900095560992415582585 0.3390865708411035533136332926213836 0.0755918522057963092427303646931224 1.0786015864773073356180065130329044 GT 1 -39434308240536661032.5625461184720839759149489988464243 3.2345692652219835120617155750671742 0.0850269263239581370128514135734169 1.0888606418160752833372900662574987 LT 1 -792342547542510266127075925724.3198791137832134338898288348950307 0.2627837797885977724784850408450137 0.0249814892185331831596513625944282 1.0252988227476215786755328665182506 GT 1 -150914198880019579729917961307818571215.3104046508287939522054848462775169 2.0878867243345578212869457859981920 0.0357412246389465712569438461841024 1.0363955812237219357043600126001652 GT 1 -1552934500263710052514041958766.5827304515968258917822523742725064 0.5398662025443110441680029511617293 0.0798209331731810715933299576866465 1.0831869900233029172908761833830592 GT 1 -238816344840392952744619720184.5024058406659697457039235017366688 0.1329034853737121549520941615191705 0.0764227755374835359709835603815385 1.0795008613310573956512077672008173 GT 1 -2.2395459853784287517779043054149385 0.0781955204585305894655117618618660 0.0105692661382142149905966712374365 1.0106255175400037843759648942133040 GT 1 -288308322088988.9305037935350915743658123108856730 1.3854559446213407471169273590147340 0.0067479332157919324224666221143393 1.0067708034597843715153352321974515 GT 1 -2952241827393766.2220032844664524588819774298815285 0.5692756971443076630466695999404957 0.0250074195330161898104157682615888 1.0253254177906968811033312225413432 GT 1 -70.8290601059559264386272744904635913 0.2661032275450423868918262644314831 0.0687204246611181895519550759255593 1.0711957510395046290044021526728737 GT 1 -50170207.0484287969163977418840882836976395 0.1958235538585338474658039754607891 0.0754615727108710248333755248227122 1.0784606635356749984421020847359452 GT 1 -71.9120383688013290310322841253325525 1.0771932941876887401007483666780270 0.0690963816561281242964823005536933 1.0715995319364575151262478330530179 GT 1 -3847008838851584676735161167448372348149.9318817428571085000235803584066667 2.7825259497880718503728721359414043 0.0094167847931481073897860968721654 1.0094614030389335508767368338269063 GT 1 -11005465180229584550518.2477568185310917095478368955673653 0.7206680635454430183935840937139186 0.0657029415086716204798247906884485 1.0679608415438201549258694810983155 GT 1 -22343235825129382300002518903865857887209094.2945352125385939192195631335742343 0.7656691568947879986182099460918896 0.0860862074460863903594099277315279 1.0900190308450947483880130681803129 GT 1 -30595845624539518531.0864323249655828849002303693151623 0.8249758614063365616048455056929509 0.0788155345342685738258698070324871 1.0820949745454335893452468238843309 GT 1 -1096209875335568336312963272684537.4653516547409221386792521799495756 0.9997165384406869164247074581762352 0.0411721032638028260630175623191227 1.0420436813756304052592688002146641 GT 1 -823201059200396213357425876419083609.9378196388692779837295143058319504 0.7185079909698388587081358919953852 0.0342592819503489610691333357729532 1.0348598886135400698245506589399926 GT 1 -80129039948566315393370527580133626.3692981552506519048877017032587771 4.2329991922798642156941925220127679 0.0954918563887274041890169083009187 1.1003639707475472507765794457711769 LT 1 -2236475023.7517015539812336396529408206279743 0.9245467766287749995337915959958584 0.0623225755153689372657017999764634 1.0643492862600136120477786253210728 GT 1 -2483577612.3423260426215876035158403499250701 1.1049521294813789563188559663699385 0.0262014837753088662763750118337271 1.0265508589308452908152233143186269 GT 1 -220541510826773872310621838891066278.6269203202643340211144131317427250 0.3163648019592765144033528451612295 0.0616449543996117808973291701284932 1.0636268881608005376686915024191975 GT 1 -85195188166947390505.9850842406706363092447961026041864 0.3920453521700829957720485838971897 0.0622819142531195490643863504240389 1.0643059233938513270477642334782650 GT 1 -3082587157266966681400840665657783078965.8910283832066726656728577806739938 0.4037237672596968557879666720563274 0.0121921233734257233144490438313150 1.0122670569991490392340637586468108 GT 1 -50753990381631793291.8064952342680325092513312890933757 1.4389006745493398349066180267866200 0.0801498444844117047099507603368221 1.0835444966441109570561925598809454 GT 1 -43457268870471874689753.6612432963100967890913660005317496 0.3647104759999569049348046588952057 0.0717857182711542914730472762601751 1.0744926658154687648229787220736381 GT 1 -127528798582481681023255839.5856957816716953031964749828149802 0.0326083503910145536678636043125046 0.0581310544271391720635987504071295 1.0598891376800482649907479368556130 GT 1 -54005423540786804927183665916859306302850.0749520381714396973888955609298111 0.3107434997629384714556700400081405 0.0112592468044479112229622097234044 1.0113231119586160834927798224865217 GT 1 -7333336180707338025342.9677798137700984256710733035822452 3.2618250672976072818293511477555068 0.0802988973781134865817679945144053 1.0837065501812098802355347237348277 LT 1 -126772821240964406486490424568404061.9338744379357085538812473075703258 0.0409336690842784938226899929299902 0.0191847346649742861487394422809887 1.0193711497542777474104225024003502 GT 1 -95008670821122852398563278537290050377598.8479686577009752666673305588295273 0.4722404288663847780706370408951227 0.0648733024679166696242663489809955 1.0670732534915677250195620039873501 GT 1 -1020011.0185137915683904569327059663419685 0.8746911596722887117007120217737767 0.0343748081920785944018629880739000 1.0349795202600113844813747159870010 GT 1 -1251830847325409145.5141299616973363672859465290681471 0.4962066621144459939124278129600065 0.0506278538802552183798399613115390 1.0519544116987696088792295426261323 GT 1 -155309743984324317723.1796080636118831094211728452398373 2.2911472575216131921920716421653972 0.0244727059717223768188772915898036 1.0247771397837094905438909406140230 GT 1 -6358956787748315428287.5712155472941017690154593923871089 0.4710479211854660248670535613650276 0.0217825643220046112590781313249657 1.0220233067891596047720459776268012 GT 1 -74564214290747.9782797487509300462049780668069942 0.6415465171518121637779659104192388 0.0677272411668872753892385672994230 1.0701298474208589757148411634411852 GT 1 -56.6987000276665934433641101200582107 1.7689996467568894946196566930995652 0.0422177647083390475599126397831043 1.0431348386546321767409886909505258 GT 1 -235250238129297713439798767604790473835.5860856094667667800032129497465645 1.2484915986631957434053635979004792 0.0664171969966976750198635469090458 1.0687256182701643665076363621193164 GT 1 -1921500828115.0983149553982221799744833955447942 0.2185571205971695991588646803156849 0.0095819248889456548235074289700329 1.0096281269042709402568481551394991 GT 1 -2.4401831453188537449746899849018117 2.1487466935735439505023357841071486 0.0069052555189047689300946625088171 1.0069292071207659897581304217274893 GT 1 -4433565.8589363980455778933940391907527477 0.7504243439139171289690092687949588 0.0697712348195697660967995614518055 1.0723247390189763637036608790393048 GT 1 -138756308061220301795566286.7167703398052775676935335448963014 0.2064852243812118889499003917636279 0.0810036745719724074511303827384235 1.0844731550805508904387161451071929 GT 1 -50414361546688697194.3986488126551951832608787729528295 0.6543814792821846640195852651198550 0.0288704308717589479133735646834389 1.0292953807379471071529043580145985 GT 1 -4772996501336648.8344654631031545470660171525356431 0.1879250924329207879182866289182916 0.0428881780288161737796614619594173 1.0438350479903141757928448956840753 GT 1 -639680271516960479859346907217928.2504663443232139599323222395626846 1.5617090167017176234473973022640200 0.0482348508581394008623829182066922 1.0494369667021451419245275370089024 GT 1 -42615781198721725899998619551468607911.5097151179049194691559836354483354 0.7773921518397385268268713820585853 0.0893808323206242588980772294986720 1.0936305067978582749643368794771628 GT 1 -164771250809902488313440.3426464953334587801247451369692928 0.0674460325238389254283941696102233 0.0336185327832513559040209448728815 1.0341966291204570711278420070037720 GT 1 -139921031076234706369997174755.5603435080521364090848930318630740 0.3871002278829235098054505769392319 0.0689482624043499035016515032044825 1.0714404311807727180458052434265413 GT 1 -6965509203.6635394522316218871695130121000890 0.4237665424906366405370386179671892 0.0683146394333184215555773479858052 1.0707601172533862595870205646503770 GT 1 -4902045568691773965031916025.1862312615365066796420085449731145 1.1310836559562476960677474266367589 0.0663097992880852000544331997925269 1.0686105866614845242318815389837030 GT 1 -44271980607314099430835.0300662172875483826856323806232237 0.2394386117876412289081068429629860 0.0947885388665245121923101252232988 1.0995867038651333479619003504338700 GT 1 -8272542523093458109.5079289769326953137236743127597193 1.2608197953948999316756507826249249 0.0413678119534780398106377747827146 1.0422478146370296855812199102931422 GT 1 -40810998577338.4858082575388644863576213478479336 1.0803633946885229028844358288228912 0.0516827714228440098850510236238254 1.0530662034022151637155294339968025 GT 1 -7741369.0688622942331663386945292391943482 1.9769395639191285795426068219541778 0.0548426581901809802162903617184179 1.0564038660782095662020831720594394 GT 1 -148304398.0230156428671198137661905299366711 0.2071230323548682610891861754342440 0.0420694752097643672122209420709600 1.0429800247368457581784447935716532 GT 1 -38524370059284.1061634103369021382862914044226656 0.8326189726333367289517997306369779 0.0801552560079171675460820350014782 1.0835503797103812681232825468121797 GT 1 -2859956203.1107490109442177113337423910426366 0.8399859081345154051613572154247437 0.0107996101470239170616917191216670 1.0108583492255964332925580579564649 GT 1 -512995253860.6885937288192627719070865592709233 0.0069542903649737777093573564888247 0.0794378590184541097260763493078186 1.0827707727314509324101987380114834 GT 1 -710897934154102207064.1565782250907786431299737501823904 2.4878951841628863422888730859272356 0.0205399043584678049059163214647079 1.0207537819460174219401996976612631 GT 1 -1418344399788775524820742.1742654043630276438667645916646996 0.0468216776281449703791095749777026 0.0447531495675229458954687326648900 1.0457854897739083516460591933100972 GT 1 -2468733138043882207809906423739184559.8795748077486897387320639037534828 0.9606030447442001565153253253960175 0.0950590021018699458063058154154301 1.0998855331002164509771549453339255 GT 1 -68320.2409085473812367309721934850579073 2.3704117041030294517411353201107565 0.0211262583109735698360599245065606 1.0213526113783138925821780257682471 GT 1 -75430319715891.6923086430481930751816750982393121 1.7316197116677400710886891967495797 0.0939888449537785468400602455143942 1.0987036606019068962687596295295710 GT 1 -47827107139912.3026797084114335322166763086733897 0.9860155369577529215564723536412204 0.0735318955562080771256323196674819 1.0763756597059795705386264252271545 GT 1 -1470949284177835364148850.6998431999277728857877793399925012 0.0865474178788488094944996023314805 0.0325812937588427425409377963995900 1.0331238821654044223044373308880483 GT 1 -33707379099574203.3917439033988224538014922675857411 0.5281951597004764917901365024508236 0.0490695145902127909460071106886357 1.0503143154177841816670894558215662 GT 1 -43368337244172298573964436045.2208600062677603186362836586604163 0.2659827618618650576485383146523271 0.0422694210571933047929981282666123 1.0431887734009652873382230741896919 GT 1 -453415138159407337102864277204548397.3058421750123002938137644468616735 0.8624841559249156607990219177515528 0.0899279001306023303297588140817356 1.0942314519841098472772560523734366 GT 1 -69270648545212602375634207430470.4163330202330741185079158121570540 0.0142945024937557182612630689636448 0.0231985855539798195911846061696599 1.0234719081461293374616074791039967 GT 1 -13835696393645992087201.9490061557942509538565981721327719 1.0054889237426448775046737798096188 0.0775886046703160780575955726455506 1.0807639561035068303240574957533932 GT 1 -2011442982356817953355437.8397856283379584308816689205308484 1.3116921034950227417388573633775479 0.0769427988542323414052350137280258 1.0800640733271987483586328736446607 GT 1 -706845558.8023319204791032351122261341087378 2.1053585332889446756718072015827291 0.0347129844408987019696271784902999 1.0353297964154860115440789508054942 GT 1 -1653416.7871516170805440453685578553709389 0.2461666540724797860545309066073422 0.0782552140664306661669622199554818 1.0814868985873601702314609305081613 GT 1 -42931251911490790232680924661085.0846908215226404770309888431175532 0.4336626931658170231101125942368892 0.0763426089754167858152929216561990 1.0794140650341008886075650456997059 GT 1 -75666.5061827536915148685935586288072441 0.5100801943356927123219989994171689 0.0757295098243910421398991612286021 1.0787505118946533480276413364163578 GT 1 -31741659629753581865402753334606.2841298181067188718110784892047853 1.4109064247658567643025100777501622 0.0002305719096607271966781409390606 1.0002305984954501921898566748926917 GT 1 -58043176885801920325904592059384.1592379974904577943653391766953286 1.0083912649318672127076666600533531 0.0368185357343718390307112235070830 1.0375134485230166436329761385882558 GT 1 -25158999647.5989344850453186095704660620322422 2.2965540890151926150199507661006222 0.0692959689348747870393431824625431 1.0718139565812796859021931133406365 GT 1 -768612888569511815663113325314499199334.5429470386656943618342612449287661 0.1933450958638788070995560022245775 0.0372685361382657631844047262327050 1.0379807597970738018797217298580570 GT 1 -723156168.5762578822427385394584956289022416 0.3188889783238112007431909705362670 0.0538538936863747231195781084808489 1.0553582754355565503909725547462848 GT 1 -9662305949564434430547814680449897882.3597673150786882133044733603268375 1.1286016640173671351536319583212726 0.0443754315851483821757548424219107 1.0453901539249668404949746938353560 GT 1 -12669089659023702618.3149893372383300823947514754678803 0.3962401948424784333230271576650535 0.0622231777632520008601103612230517 1.0642432876707291568774950814374024 GT 1 -643790087279.2192972875316367593352963343945532 0.2661064074067478908339219729827205 0.0350349604121219802752996248010923 1.0356634067057597100500772181926286 GT 1 -458.7523193637675469106822659008507191 4.7403906500082308820861876939125611 0.0255470957228164330786655350094235 1.0258790892914494560219378447255387 LT 1 -30645389425099140082317664329191766.4806312311366753055096083868011447 1.4495537960481947136812087291041657 0.0773129475673178708423897485239826 1.0804651567571809776905693166913562 GT 1 -10180555106031658950085141754446838053293342.6878887928051500677610793805432028 0.2519629232491833678818997520301357 0.0315599725401353924983038152932710 1.0320687211707657834492018751519451 GT 1 -1507818005003068019277697706.2591055102359243039854560311377774 0.6689419601237126671783275122634962 0.0236061742072138746681304796026797 1.0238892639237325731716675619496689 GT 1 -61.4313016373397814612453290626670694 2.0051364319392006079833116183821166 0.0282563187969657015249203241505641 1.0286632117633211070265456681934801 GT 1 -833.4324699758969343329929026400169242 0.2375718496871572816558517306336013 0.0496268407539128821134591380268126 1.0509005723065554451945794136110524 GT 1 -92914877539308039782930046365552248665784.8524137542241112430434064573045442 0.3822331069828058988096813875978339 0.0092248486525846328321818337825626 1.0092676610643329221361263782426692 GT 1 -117442910188814057038.7836850432936107056016812795785876 0.2044748974181007308363163043425560 0.0602677618522779707329227805367139 1.0621602973307574146134306455695316 GT 1 -1553155598003002072417978124499627070.2312669192817901497191031748692394 0.8509396436091607441430457254010643 0.0632748208468396445020804734973861 1.0653653384267620340945857011077834 GT 1 -7040224985740678040286002888206979.8220542812820624790745769088388490 0.7687652632381056189187730156010327 0.0455463991605671273195853521277125 1.0466162479570969546259222610152718 GT 1 -13029826895271951545437329103991.4581661528886758137765775495444031 1.0463019777099997628114489174832521 0.0459803287902170760538771590529880 1.0470709880296803738903588752615182 GT 1 -267779287127058657305140650318042400650.8419921345330629679314090012012086 0.6676101660605811252428155784463135 0.0609849041701814826778348495870050 1.0629237234070202639107973606369830 GT 1 -4.2029214445214910218919414074581489 0.5341169386891201352033820893193174 0.0135981501082012579902664333937211 1.0136914517365603937088727679062747 GT 1 -76414642021681453322437644993275800628.3107198145394293499259962638105118 0.0189408150801486157873036535716733 0.0726358830246064791081314301359270 1.0754089998421354651818166784228936 GT 1 -15549952338239243.5556571107303361845875176201600305 1.0823621033660826474682709601520542 0.0818789285378474848237242984038470 1.0854260109335077431358484556852084 GT 1 -2078752427713268132121209.9491812019987407084787860009604240 0.3961680446950754569645894580689492 0.0085866952891964040225585665561499 1.0086237733618437241380869686360734 GT 1 -3290346305466371385615538133747536922.1776401235537426062408460306347791 1.0319030297560314289738610281539948 0.0392001887439674501743440627037990 1.0399892046609781596698033304968982 GT 1 -227653155576888314620.2706342462036800258863986528457119 0.2710148415760869714658643880859377 0.0573950462052490766324613864472618 1.0591080090482738827544220459520870 GT 1 -745640014158639388708856300258.0314623326337578529241978357592948 0.2118594309831036376591356629138249 0.0413881898691459360214494790654017 1.0422690721459206100548237073755782 GT 1 -696678041633909379592.3488784158879982976658147024329650 0.8346383854033396481734797519937408 0.0274399485680162678065238984659373 1.0278234558515040542455266565044890 GT 1 -132813744397911938395827314835454094527483.7687132368675045278362213309356689 1.9828660202650978771414336535489810 0.0191340797260188636860767089446353 1.0193195053389280072473660244607874 GT 1 -50287642259150998417.0278589944418297343807245936365807 1.6404791765998999307302164185353287 0.0853995135536938847604264733706904 1.0892679358905059306315619283889306 GT 1 -34895553615375352016.7549989049181146209254752268439612 0.5645262240050801573889512319561799 0.0608327155319999664528181021000167 1.0627616639178981637378601828380406 GT 1 -153423625637963813077818808104203347.7532764860785451210015387920634678 0.1935536744158930613212904092044889 0.0166187479232945089321979796375964 1.0167583885782309987927703719895986 GT 1 -66503053570879084.9671771245380994519695371213946002 1.4796778536435018667542515888913999 0.0806553294685656883373668034653241 1.0840941773954080525100839507077426 GT 1 -9250007357565340041093588206204288806275711.6159849235127116873464292380943640 0.5780665003567609588145337864518207 0.0666629124815365121520685841047470 1.0689888491538301643519940871874950 GT 1 -1868365000784482066104265.6211156059193088500360744492828027 5.8506560152199583302217765983971585 0.0808727015705957624336616747686528 1.0843306477976909460314905385151969 LT 1 -3356522458067205394.6948509341007522598725849323415327 2.3982568949813885470923773725811190 0.0497336167494545154933507471543532 1.0510129302716156756334138278949822 GT 1 -534594757732989320732176052622.3292536883914970010818472470024384 3.9816451688520241956381559096805192 0.0282763838232035336466161182886210 1.0286838604526667899473350190447552 LT 1 -3872094515953281475483585607341389616440579.7854736055929062077813239501578466 0.7060045667064017796491562478832838 0.0186808348869027008112422796315139 1.0188575256301301397274941991000559 GT 1 -2608282711051948462144783735873.1873510974911239879359203199756828 2.5591315409325927556562742721773554 0.0309325796272403670031908906398782 1.0314210922436868711616404745820421 GT 1 -23406721190605784905273057914262.1312410787227957203592563386697300 1.9217980566897279797066146755737972 0.0515678807095329900703458376611778 1.0529450585460635639917194802749369 GT 1 -67197750206108010404200.5862939780717970864347693160651088 0.9209351812206602518075567287402099 0.0648749196605144879320484906654240 1.0670749828764740280085592204759398 GT 1 -9484393500155807136795939600627.8836808704648864153888143339971676 0.9795209020828505930590290133611808 0.0437257162490507080933650615581295 1.0447104993915986745628238439785027 GT 1 -16507827632077990580012940485272.4569686419366087416073832115044417 0.5129531807779022520127492102794993 0.0413502866191050080070945568858343 1.0422295331997924464632974852315800 GT 1 -17346.0304116829501594515412676278958546 0.6866379698185493961251274438350719 0.0601245741232845819681451110034667 1.0620079381634577907186440090366447 GT 1 -1252548070042245360631047537.2978123119351708664266485318898091 0.3920273209329981491590428529385944 0.0172374303259438201714939329808114 1.0173877244551132944236684043165643 GT 1 -25.0167898948337646822931602959038420 0.6616879326036628235147529602827708 0.0936129673453421703311385351455526 1.0982888757975784057713661201753488 GT 1 -861276669838827539746987787377238.9627026070012612849185053376713222 1.3977713765846384984278461862760737 0.0349485249609561091440807388102327 1.0355738370564136093320971389954785 GT 1 -84968374415422659966988910.2632542771286654458658239013352494 2.2096259042931642142668532407798914 0.0580226585670646026839539417727101 1.0597740583756040781850317351824042 GT 1 -102704779404418.2977078509840846575471453549123532 0.0961083067530624767334267592530936 0.0139108440654582077761287582097683 1.0140085066270037438306998556374308 GT 1 -1718.6404765051595407116286853666238218 0.3803605462380331858667707387336016 0.0267123393466399602310814531554026 1.0270755974751579284028466713628270 GT 1 -7209878822402171.1499773163332278944503243192355381 0.0422700552658371755453293747640550 0.0531572468077768020857534812104658 1.0546222468989387668312644295943938 GT 1 -99425259121312092138762.2829366040897414285372382664946974 0.9024339218117931898623047890516703 0.0986641080986119253939762083211586 1.1038772918434312595102206466708973 GT 1 -1907964034601645655911822316295.3145271440662108701486180619797336 2.2934706640364538783283073254451375 0.0909104826698613071495826974091363 1.0953117107423441829199694202863914 GT 1 -17006664932809571018261.9246718312632796189793008431262355 2.5312377726972038939750195358606507 0.0833860444091124824499298842965660 1.0908593767093122386695048081805225 LT 2 -1606111414156096937443315601182.6010677733642505773956082716193802 1.5422384371228528518037851508441738 0.0837470542620791909436161767838177 1.0874628107928058942032023462041124 GT 1 -8098063916504952304923709909.2008356434349699157336597908078585 0.6789755901330632123467187797647995 0.0178167167672078509852472391423149 1.0179773452400215415929554350921195 GT 1 -1521.5070744745769176256402341182103708 1.1409714095722303536827332088259212 0.0340269747692043212250661870167103 1.0346193693512294550493558323561269 GT 1 -3050.3986728590822320411449730249805540 0.0792299655119527403224765485667329 0.0308462646460121202530084538895082 1.0313320260594382091078622196679329 GT 1 -22037.5076540090973645735291851966829844 0.0888270041614048022983497618315990 0.0792237071901872012224422221435595 1.0825381682028075807586397608087977 GT 1 -2934249743775708445184407.3461686201775909408291074248991370 0.1161571188230008384580774859149757 0.0266814108790069225609398421880933 1.0270438206660171734289088433612457 GT 1 -10047431933347518380850632.9087964388284427248961797164245519 2.7300459638116362949539733765774786 0.0388161360816193844791818330179103 1.0395895626947947022417150991774157 GT 1 -119942918328058517.4476146215715142257135461931607129 0.3472061130583194004875767634757418 0.0839095488627612906745450569146734 1.0876401734000390006264427685350005 GT 1 -21613570591241669270152125102078825521869.9246739745504916568361484348447416 1.2358222867730328797089905971715056 0.0924092138906208954057210870391470 1.0969616780568278610104752109034454 GT 1 -25865047093376100238000252200500585758496.0529919441612300986337813606341103 2.6750889689311693286543219856415533 0.0929723114808349356320307490639356 1.0975823017484316940451281297736881 LT 1 -243256501414205628040292048873845898663.8723603755590532377664242435623359 3.9822764789762040100251685024439884 0.0614917356202291583827033596350987 1.0634636170489318626795778145090958 LT 1 -23060872321720110868398384906130781348234.5831320235364902539817552270359917 0.6005597487918849568940441024729492 0.0455362659311839019563282865331170 1.0466056312277100767057085156790783 GT 1 -21724119002208523685714515704913509538.3639630331973220430973902503792947 0.3956579878797473896606275633345031 0.0220428729252286264610441134854030 1.0222894472550638251330435681530473 GT 1 -38158342092117.5672177590823152142984990838162823 0.6672813730484756408827066317856989 0.0543327102207957599442114411414620 1.0558644739281078185119363310062790 GT 1 -8914248870447371363187455274567543926.5672713314972772406940832254454648 1.7588064875689032345991676335594199 0.0307401263186013054944118267875266 1.0312225155535047464843061968096734 GT 1 -346656756029546799964179234572.6935458140535100920482668670681544 1.7504739098989540976078630587499613 0.0780521890755475292212948969169231 1.0812666612310354089487677963036880 GT 1 -178772295638152980112517753333.8459042922816548031555741299373047 0.1592471388574817331319011370759162 0.0078179580648115679972530140270799 1.0078486785178565263152211422860737 GT 1 -26112619686.9059480333913474958553098642881879 0.3792436122243953913406652565344298 0.0506122845356520960860198141572285 1.0519380122109581464243725752920768 GT 1 -2335013283243161114264226464067462850004.3920503489176111547925300938437856 0.4694375788642680235303633836543360 0.0387866007378713265022728015336508 1.0395588350774431074452343767682754 GT 1 -268545505003272640622123.7015247184240572136470860423699817 3.0718302840283973756788281581522936 0.0137420580332962638072036416077237 1.0138373541632679535423771416621871 GT 1 -47467437390911.5008664966306611689500315847064776 0.0007465156055692155269753818945101 0.0498453778357174338564653186327697 1.0511305474586214180549582286961943 GT 1 -1456271334353772387646.2378436342152182875906484369565420 0.1084594536532102236467881246171455 0.0580443682771606833426762777874043 1.0597971055969292357460095557572395 GT 1 -28738979748648502843557733677259.7597486630337622305568475117522211 0.4424862152060288974170172004397759 0.0090798194635924451312140537079220 1.0091212922588786098402010301753019 GT 1 -1962378247130689236663.5527030020998902176793318680842646 0.8909771474821960579537655071640959 0.0183130978962431533182568863989372 1.0184828584285328501399255571570380 GT 1 -454331279200255402648206407888136.7555471627655700171564677781424959 0.2967486048951243226345729315561695 0.0781374121944572314051873244638058 1.0813591036199373193740515254737968 GT 1 -52266709232326421051818886494929805544920.0076105163793599965755431296385688 0.4552277369653184090320558477448826 0.0261057207183348601561843848756410 1.0264525240627674151971047682657169 GT 1 -96550871361080472527879991.9126688707399198583917769168196224 1.9029278489856265090798860639682688 0.0991582573559537483292817309016293 1.1044256831454356031050072440067541 GT 1 -8296.0899916990796942266184230789724677 0.3219523706437145376075982950809758 0.0174466507287332853476727724089968 1.0176006372001462704696380731827817 GT 1 -574616271036602298656142.8345677421697064636362770288291875 0.6619784024616788515002640613001565 0.0766873056613714854046284877948821 1.0797873214205342964175474599637001 GT 1 -2010519663634454791482634.3996882804111498662047035180435834 0.0086423313631176038361590148991393 0.0888468366663792940511603294047918 1.0930442692527513894488720846342498 GT 1 -2147.6592556043277936054171975205589624 0.3187648328553748748712669521096003 0.0920414852126616048923006211187506 1.0965565899847978220366847231345157 GT 1 -7162046047442740483988.0678018759834869866098200529151887 0.5886772266245263119744646141235824 0.0644687564109403941192066113687967 1.0666407360821685500783569389191633 GT 1 -283700589837161373187938502664833.8891925159699671085877932323227715 0.0885618184937526293128966015019124 0.0318348321762016903940911490908359 1.0323525783437004078801854183195394 GT 1 -3586088655713946358020023198713.0242332652982190748370197871770531 0.2065167346632549268564112793722891 0.0580178783194782449286442640180990 1.0597689836936059123525274025360570 GT 1 -1983789278066268500233103690464391787227746.3546646911116054734924884035110861 1.0519088990429363665717911913962899 0.0540553094742190505646367912469314 1.0555711783141515793986708484139831 GT 1 -413.5302791350177285055002132589848312 0.5220398648295619158617620210812364 0.0476481599329168293377563452178064 1.0488207325662033538364879933505601 GT 1 -209891143537881622938.1863504402657035931065990036981798 0.7370705799918142474071630169013275 0.0282449108399300039197372489364178 1.0286514721551363307912874990968051 GT 1 -2043408846278585337794629734991980993.4873834463805488879652967559728759 0.8127785507070047533726052297036836 0.0154685932735345067879401557125563 1.0155894802168013163361139132290751 GT 1 -80458728915941597939886757342018239845.9059419491896076812642054199965736 1.2010166721795198732559291125374841 0.0669658316524414556097503083907684 1.0693134567822564501665360938493098 GT 1 -3816.1504843945996137087515810356580429 0.3819720083834153179070633162725175 0.0588509989997815745651414631470708 1.0606538086796351134052619769549401 GT 1 -428179910679126514514223813703543272405.3097530161549935712959811409324279 1.9720404198687408891613635047483555 0.0717220046175655598906391016308757 1.0744240270665773500583648046541444 GT 1 -17348971395810273395306457009747171.8245172894830998311490571507226491 0.9462211788831337444582732715649427 0.0268370820222027696185822702942348 1.0272037719863456872167749597410828 GT 1 -59855001619523714832284667161950.6482011614287640647786183702535671 2.4095160890147818073246562905847345 0.0894479054184141406348062289164756 1.0980944014670724813799319362179581 GT 2 -141647761028859034187713957524427.7886110332584500626939113044777788 0.4445068421810332304234033310136094 0.0949877045499889640004000764225426 1.0998067492418927147750718480360836 GT 1 -9871422524727528873326857348904929.8387072045794323895684583304853942 0.9654793269068555566098622609750898 0.0303918690927761465168054660294663 1.0308632778655897136358107221245209 GT 1 -16104909543904228390029071994858318.8556546660006768954586844992048926 0.2203488604639061090989694973064632 0.0292626025505360451086500681917711 1.0296992927369240343846711045841382 GT 1 -1702504521606666519045200272768.5980820661271040234100930884802121 3.2137857896959408274688820549844512 0.0041075483089725276437021540404983 1.0041160074577156455854941741006199 GT 1 -741539588661396361633077894672249041.6961851904674058098889459952293066 0.2360194970916994799803898739211103 0.0841828348026315319773155893611433 1.0879385355439165112392416685174933 GT 1 -7081696141069656.3556732656196112977488744015575965 0.2858697633307999797154187759864545 0.0239940969808575067879397078444548 1.0242866444119837892471339334768419 GT 1 -2056920.7353281276254853433088845575341505 0.4619454728805075693961016292392859 0.0528615654634986564683869248405303 1.0543100142869191367357763306194903 GT 1 -4885701261364066286348070259739434716228.3263500016023314967881983738918790 0.6785140852997512614577252419074932 0.0518334461021776260985111114225770 1.0532251023931192790386227950712831 GT 1 -490292671501576552550941047463882988934917.6140291963569413074503772637114177 0.5508575026109445525825146261541194 0.0606034050637005743207514372431177 1.0625175301176559902453248826805967 GT 1 -3756769636628180871322904.9294277986320021919204569960854772 0.6549359894851146400634106250524762 0.0574582976481267241407919156756778 1.0591751141116334344168891165664257 GT 1 -2111030526055594008555995579.6672494753164605497960247953956716 0.0144368611192655496742510884876278 0.0049653430829372595350026897765953 1.0049777113577071350276367077111906 GT 1 -20099169619499796.7146831252567437848230634722978076 0.5496576407580007017685384451275137 0.0539509078315822954998693316274795 1.0554608168069440325729410624387323 GT 1 -6372057553052328670188707122871032440083888.1409674243828186621775930697393112 2.2367181738659436175144756926151012 0.0397778163510080147616064930392309 1.0405905799976280504873692417095468 GT 1 -10204423457242101459685466361352421430014832.6626354505723048773628783576086341 1.3548309867989245496628319012446217 0.0304360029488040016455851816060828 1.0309087961106172345486810529617183 GT 1 -185779770441114448256614829995331144.3539010925700951755937741337686951 0.1241665718223985901053202906687670 0.0742665095318141183685646617734979 1.0771688930301959672210208007921118 GT 1 -73875293438387989038256487236734441855106.5895029822245150211644446914784813 0.7762815005117965356142963300198689 0.0856711616125051162379169215348236 1.0895649928156919262657270758885330 GT 1 -27417436993650927461112107.9337827469607001060104553050834358 0.5799351463241700820114814080645817 0.0937843333039430899327203419410387 1.0984779585559488576881761275702738 GT 1 -129480638.8323532470681295689114110186190889 0.2875875599669575228133497417655960 0.0725265477325400201769708679922184 1.0752911078024160809652767125436110 GT 1 -1560447385529994725673730224221.5937085726582000829367265229850992 2.2808732263436005571287679775558371 0.0910549220871350403850694635744457 1.0954706069679226931178298936461259 GT 1 -276079584972534889676891870840427211.7971354475489972948658932916548399 0.9822547709445238179665383275625224 0.0416464558960963508547559085993060 1.0425385251414507546545646298271624 GT 1 -27772860942624955.2842314217111405357779966061405253 0.4416690691689963671514897532660140 0.0389532043923938038641501136086007 1.0397321764964500516503390706166151 GT 1 -8360691771303407986626684713700433579752325.2872922814475646083684845319104073 0.1450450868295591036183588193149637 0.0986790511765217749473762549308616 1.1038938707924276564792897862516787 GT 1 -1871152605102854590.3711078789652001258976376497504924 1.1428944701266876139632057622285423 0.0727637032956598683468315218065091 1.0755468411478021279982563675433328 GT 1 -1155051790169862918345586584696969.0577444387824672056901697708265446 0.2689450818422989825514767673519593 0.0932588190541717305350314264063451 1.0978982268704725207938185744220927 GT 1 -15165572.3664710667338906577806037769319555 0.9559862657121481120863211972263680 0.0177953654457774747126871010448844 1.0179556068438138613301756194016951 GT 1 -3785010196653815689126534298222.4633194850388452391116441416130071 0.0050062590076995339876006822179486 0.0562196558906768927365964126174640 1.0578618262371690166636049166043899 GT 1 -106070499966014166835628484437231.1150191986294946472666568415919952 0.0004274140971200409354113023519607 0.0856144437317330185506321093647925 1.0895029624833928679431906025192219 GT 1 -12194820848498181288354670293591190930709788.6312819116084710009554220793593205 0.0592814436651316570786290586638849 0.0899053260799401114289743981300588 1.0942066476079521848240163996562234 GT 1 -18652479091291.2715603139776365887802122323927566 0.3605958032188588977226818521825176 0.0255758635494209141251013363514421 1.0259086117559306711306007727029167 GT 1 -1117239631927987433078548.7088753270980097498525045341125274 0.4891329497890546462482725775143931 0.0953166689923570290694447493426068 1.1001703070039627644839975542149926 GT 1 -1610153646196217280807487983812231353760861.6012673100133896419252569980679084 1.3007788513162310586145054447703459 0.0804077933452197203098219189421886 1.0838249608410913056051041291552264 GT 1 -3008902183520083761956550322891714553.8500785253327020061467162213275455 2.0527091550869725971498429010305582 0.0500284111840068326836161882803095 1.0513232013442399809206117790996254 GT 1 -3181340516088.3063716244851496302522111050596649 0.4684984334984898378318655130641657 0.0558803183473535350527523335904438 1.0575023394610185663954007491529436 GT 1 -17.0244599019354073794782593767133117 2.7903426589001467448540717299679130 0.0715157338313837634610450747225024 1.0742018437625521580307067253171424 LT 1 -1583533987123310607.2670161803797455500374724305675146 0.3652439238528241474845322660278620 0.0790684266055453508355866069758861 1.0823695414755624707039568482544493 GT 1 -11226999170483976.2702855034449435291497836998155261 0.6640435965768920765904810556791169 0.0517066338511398051171542897216165 1.0530913666364219213859945793703394 GT 1 -24103936203174568030663429436.9372800136622547534809195741830618 0.0059137200839330829861414412652573 0.0980732980708934166735863156006085 1.1032220239408198265314481187281972 GT 1 -4558074790734947.5639358305143301159511601229889588 0.0948949734773167444828235932057005 0.0244647858648446928351450815543566 1.0247690210208870909540523810449365 GT 1 -1029006046386312919613344697152566.0308065661277751098004315626209307 0.4167782138697364184536148537391712 0.0064936548772212583515465122482058 1.0065148303747478147084838161801056 GT 1 -153443612558545010107.3137078374091869660394232927211897 0.7324074876446382400848781569944598 0.0171083789198336613119680933290733 1.0172564181379568060496573343154997 GT 1 -3662.0622910733802367759952414727997132 0.0918844402036578493992627938895395 0.0534379721216837549492803631719958 1.0549187765356762849218591362479081 GT 1 -895228161671054091179928422763711636904.0914523729854433214539490325634348 0.1920463882557204907875642764257837 0.0953967731270710095126399405009538 1.1002588547626551798587264348255261 GT 1 -3897871471780009983323627551.1727555456995663280947302915651330 0.0537011178584688811552101878832513 0.0782158209161779121875553877287509 1.0814441619111199050634775125415631 GT 1 -24651482052.7481406022360857505909491112622782 0.3060274432845812704070604565295459 0.0202593888314987941214688952422092 1.0204674248332307376668929691811913 GT 1 -27703.6577686891958584179420564290530330 0.5204162276012436075862844461118402 0.0257538002152633057582380176711024 1.0260912354281118655697684974928401 GT 1 -25.2809898891636331399324933506781056 0.1909016775126832973192695041549957 0.0362881957999522112525969651258819 1.0369629873672378031101748781753220 GT 1 -110525550006065021172193.0115016739800790067887812320976982 0.0565468191908759527188013911423316 0.0970577652613518932011168839619164 1.1020966980004382491944728745851430 GT 1 -5718339708162871264262461147379976612200.3573922124960844856885293873129071 0.5726403520761693299051404956537822 0.0302651534284670270120369267548182 1.0307325989027028259489456271832366 GT 1 -170321474457446982152747661817708542.2155955249005258237055539805709083 0.0432137244193733522606094582517421 0.0712316814659329843386945213119247 1.0738959592856585223853900440469848 GT 1 -581982852879903059024.3267873345369064728422309525632979 0.6229013170832696098638834864661957 0.0443097221401618295869660799565936 1.0453213955567257172019185923325578 GT 1 -52957967874196829416039952676376266988942.2244465800210908908908121186236938 0.1008030533999317562819601163029149 0.0490176792123532641916271334345136 1.0502598067382028105266859988491711 GT 1 -12818441417283361272628466406355544036760956.9071583808689055883920404746010311 1.0728445475453360783864476068761667 0.0792123555367472074892375738257252 1.0825258399276818778664130816427964 GT 1 -3.1925598491444894643376459260213795 1.5970852069135479348765507137270825 0.0642474204887040354957222989411608 1.0664041755769835834690524566244076 GT 1 -113109916587480524774593543460169661.1510056997769634481794479254697213 1.1916817407874944217206836923013026 0.0481742421567404704224889844166062 1.0493732884179118956810055352574314 GT 1 -85836882.0161087388257123295705328208608110 0.3545646170953658128838133164466912 0.0460020764658511067038146917518803 1.0470937841251617587084811516875611 GT 1 -109483998625219318692561518136081793842745.3277022916266135550528868758340152 0.8747189615337780136765780310700077 0.0709771860767110621530982991773241 1.0736219829635977896212880570072300 GT 1 -94273267943390.7697434705429259850124396749513165 0.4782097404893291494623993306233195 0.0163002852601930263926528973530409 1.0164345964504476525032453062536093 GT 1 -2495406822907.2764044542996508838941848384242777 1.4672106724437624720334769358057747 0.0575406811302505174937740399420168 1.0592625235944387607829252572355173 GT 1 -544262946263189552593620611.3689539622479711018745992393623355 0.0222436337539623042786589397290519 0.0179096500218739725130402007217537 1.0180719687722669426744830351619843 GT 1 -80493.1845427932447943311048202125146175 1.1713722301518163441105275062627971 0.0782833482973707452383623299333940 1.0815174218523093289807026572486243 GT 1 -37894735388624096941560953031375.2658890591046515357918322236608967 3.4849670472897730604121463428714821 0.0502370213708878511459855680519461 1.0515428216967822467432110795324542 LT 1 -119878520463.6479722860463123024921272136293523 0.1099512818077980638930923755358503 0.0821154228219901803260138615687909 1.0856836291882509239157650379336978 GT 1 -47392616.4605703018265833304188925223662540 1.5403677806951452149438694176900560 0.0308964567520102587249938388195498 1.0313838170229635055451042386171732 GT 1 -2674309070482399190936.6633369121512771909548760100032180 1.1006212392232220942186306951758765 0.0616376444900728904823627219464852 1.0636190980592811478579089571822469 GT 1 -8.0765481866730688424634874313588638 0.4059000078698054795549836166277702 0.0502861971487276360642652016040158 1.0515945999320628545946314054876087 GT 1 -31130270010292903737.0944221752653422265073194722937253 2.7410283058207837067597177401520926 0.0715179483783262978348658167121083 1.0769573626782705917491948183068015 LT 2 -397238.3164237874395884853384798664405949 0.0302625269233965043638650073246525 0.0495790065368875914090035674804108 1.0508502415361590712326870944958258 GT 1 -25496872527555381.2283873500874504094440285033305430 0.4944573522784699702907432063625807 0.0934170341448028918815847118934869 1.0980727296931606358493847296211096 GT 1 -23486133904813168.8533470638248506957955455797253998 0.9969512631668414527460921880308596 0.0236357455807998292862102201997525 1.0239195507000494888695357507966164 GT 1 -770293944848117502343781831004842158908.3309993696743176537099063019167061 1.0081871492874595095236389091456073 0.0418016273711919632706921649245830 1.0427004528973126487120403338761793 GT 1 -318336162326947972.2547586838503703414057636138058557 0.0730877547233618074493513794316545 0.0455602247499383144251710974399500 1.0466307334066716726965714534727119 GT 1 -23253904071509861194982658302520.2163199582797170346071425017925025 0.0324363223771323811077546161924038 0.0281169554364529062325670974448234 1.0285198062843738417882228425947075 GT 1 -2678034792157207869015721413447882928790839.7981242138309087586448688899039353 0.1605351517285522359933943545567582 0.0212034216927184294296789079721309 1.0214314432234888920632795730846090 GT 1 -4533541311973.1188671495736301652900431136620957 0.7996903208252503676310797982208456 0.0989216459232136557890763935314160 1.1041630616956492256650259446597652 GT 1 -4852258741288931408891017672646276.7619414900883448705740145689578605 0.1307113475759794133001262641174480 0.0381366346260408368304770861390779 1.0388828702397082116072469321902144 GT 1 -6683180658372818512002314345777095229971625.5564888910733306570263972025363162 1.2149083793052135940151993557357568 0.0542153805657983739404265384273987 1.0557404108688501596854063581254367 GT 1 -895635549995312051933.2646557251442515121063860900835398 0.9657232822414057561383533008518329 0.0927814378886247165098215899582802 1.0973718853368248064114870759403509 GT 1 -3.3219233390172025010912795321915504 1.9840930367259022720236133919598263 0.0434226741387991485874179155191201 1.0443936508590057258689730714205994 GT 1 -1724483465956121821943226790761031.2898670085656520849614465870531594 0.0214256610785928516273788451642024 0.0810169543272668149870546383336753 1.0844876054661247888116172683060723 GT 1 -639293018459031549.8933168350422353635647569759262369 1.6006318348562298354462195155977304 0.0559191023756750914937791303436245 1.0575434198724458967753034547911035 GT 1 -681.1295897177557706757353408053920676 0.1484871001472303287405193217034901 0.0651612075182974772689250060794445 1.0673811790166035586838992100249435 GT 1 -43826906393011.9622640888505485282923032211878054 1.0864254980139883598618971448266898 0.0831262318939928023994640154006257 1.0867854736647904134175265592120951 GT 1 -2805175758429606632447723855378469597279914.1863696038425460096134721440460109 1.1604432013593074454475758755803202 0.0290594582394391491545380013382555 1.0294900465918905788341136382375802 GT 1 -136075893898145950.4530778012325385807123384174128082 1.0768615297915031083974880886469919 0.0702699712528439593938293782689007 1.0728610266473428705139524174049796 GT 1 -1029070156493079463926843868.7900434873978894597721375044325756 0.7991526508751561815792758724860814 0.0840158079893694879303124728233603 1.0877561720872374349772077144690814 GT 1 -2864192297270762902935357.1822961809572855337507408970918328 1.5204926309403086931205925718955092 0.0198141792910048512222544118105000 1.0200131123234238704699729022972024 GT 1 -2477005823113.2289897788735172700196829710323066 0.5647994545045378426308493733938234 0.0338136927071295321971983972304110 1.0343985986732103825158635660710813 GT 1 -1251550788.5498203180968093797114857960797849 0.5082486435095337415103821460089064 0.0544880074567486696905339714238883 1.0560287071531157205961098692579861 GT 1 -1022481346185862674369061790605880779363470.6906421160676794713776716658524111 0.1197339651905531317343825801066629 0.0486081227844695684918883035101057 1.0498292327379445788117802572083327 GT 1 -115246076464325746797951560602924338738075.0351256275351981687460832573062203 0.8424234391832891567264849480375751 0.0953099211563528060779577772375931 1.1001628482494928301987345911365281 GT 1 -126210127951058495053571689503113913.1161180550233497572800885011084341 0.6398646082784325988155623004952037 0.0317608821594269113997631768219479 1.0322761996480342213120647287490131 GT 1 -483556516981567773724493290148173.6895834131713339419833845591722048 0.6808465192114658834218350777208502 0.0704854243622813476738974353534562 1.0730927907841258145123787958128372 GT 1 -3897186383653955799.3533801808290458769455298425191955 0.8571979076270596943082537213290278 0.0230476397256965850600675699281409 1.0233173893623023685497208793708238 GT 1 -537584370783.8880421946359345300997316481871542 0.2836490763563367036170398506971098 0.0173086562040932402564857918537771 1.0174602022452995336610837935765560 GT 1 -448185130489908367284152.7666666376483297573954043281470198 4.6187728463373799463402616725393366 0.0593266279733541025411735613611838 1.0611593069567499232239501778418504 LT 1 -36030364651157927322.3528994390697863254182905407618111 0.3936283959623655130874172832773991 0.0379738992972337128320021942789786 1.0387136969768314218978172233956917 GT 1 -56966256710975228601892582.2143965158888385220517915548788902 4.0542782363315606827955954202591426 0.0798543764005225667247279179163279 1.0832233349438695480514002959535953 LT 1 -624136819211344993399764019218.1083840914058028656292401739828968 0.2673210454475097492896564166674785 0.0758970791628586716992386442907493 1.0789318273560512592042235656086941 GT 1 -159704038613990169041509055753510426487.9382720801847638154763620910882340 4.6192188269860081670899869756189902 0.0078217408809383626365230310074761 1.0078524911481785393979035946906893 GT 1 -63.8919548145515652466769555683608867 0.9515795200286999023421207599474115 0.0819299580234598368040364258373099 1.0854815928228350744021465344976833 GT 1 -1052973636090534635044.4508287612016216367849578834034552 0.4938088285252413762706099430126216 0.0230913397202998460840771757163756 1.0233621212998873222388035449097356 GT 1 -1043765.4121155683633145286438539795649098 3.0290751319996622439776851084058967 0.0369540454030873799651447218421845 1.0376541480765710321741205303497238 GT 1 -1374371533099808053465712025.4536425355639464129770333368697433 2.2374408495092900835171403917227034 0.0716165389859210797372697581817781 1.0743104192449741515384625366781178 GT 1 -219094.3543486202911456406152414307478530 0.0621142442492291013678395739318441 0.0092958767592222846592387088208021 1.0093393530649296335421885456542249 GT 1 -701682.6548464623713285401054495402437798 2.2091182599698559039379531476391928 0.0175743087701141588944252591476558 1.0177305704349841502826759126005143 GT 1 -3106124.1308075080224360561045496894412371 0.1297024285724212505282767619906234 0.0165264300848645027558987857518536 1.0166645150116966782475927801368743 GT 1 -31.8757573239252547015624164750386695 1.8128108609824582376151380452448246 0.0375398403799245754184211509323755 1.0382626062794142148529401906222747 GT 1 -219406875924855174003.6287419733175912784947642922329287 1.7733577616347737464881015976324967 0.0271886774576687039206533598292015 1.0275651287113944875115493520956337 GT 1 -78729914509942749132888555360271366243.6980868319876109163595862602953919 3.9549616198535312936928237124105804 0.0458053991031269848017752013729265 1.0468876441671622601252228654941001 LT 1 -3092990763087113363423002.8946136185951758487326705457125259 0.2554208826389106619616916951682562 0.0099845209885790645677499082069581 1.0100347006106608356106692474515253 GT 1 -247151180819571765.3193182787458057488803477273788412 0.5861517917447910533569033843514169 0.0456627191083019440424517211419685 1.0467381261041397680923140010726564 GT 1 -40274392254499.7260518777757380070293928518837958 2.5710940326545800511576392421529542 0.0913752460555523888635352007691166 1.1004141134970777922130277822967503 LT 2 -144840265230443968898510098621.7922745650666613044329945198934785 0.1388203879647652173986000070969448 0.0786907130811642495053874940026412 1.0819594826848682701098588859353097 GT 1 -100544598926921.5250398320150858015447091815029413 1.1348813999050731052785377969690905 0.0592025829072562235644455951894445 1.0610274472786778887642484143186747 GT 1 -5.7429776933562005682842906106985109 0.8803258882216587613706770173500904 0.0547191736369513617755412314051350 1.0562732248803283416742406060917699 GT 1 -3321217297948625218632.6143920175787203082229903991867261 2.0480280551914880745160845603074191 0.0438898810276793869125872263937041 1.0448821853547326026428079629575117 GT 1 -407866223345781945376066579682248520.0892712678317835437069773528408655 0.4390935302263194301735608281090335 0.0140909072732123615021286115908143 1.0141911266758570474957169131831533 GT 1 -170714435816614358176880607232505683071001.3703417467349056417897300942514467 0.8789677883745657062247085460451958 0.0684565000109117414064210708117294 1.0709123911697801044233355223106058 GT 1 -8112139487243761.4248737306500218856401447404232666 0.9194655474509694113777460633545684 0.0783569450301831639643142316793993 1.0815972724995651242828367597528808 GT 1 -3567.1462674622194464693932181082845469 1.7538003223468084211610162330155346 0.0237899435462700829276790571004383 1.0240774939495659384687461897270404 GT 1 -711129663823686.3930590468418769433927123272227166 1.2097466602123218597807089517921615 0.0144715182402763228096995113459906 1.0145772519853454377070867467047499 GT 1 -3590999369006735669713.9858906878150387794785378847229387 0.2003282917594343119952559649568755 0.0377636206084317977119806176303975 1.0384951418765639920476408471094608 GT 1 -8774141843448499681829817.3797405580804895328582357663906072 0.0417849626454876972516106496190455 0.0577190094021313182183780108941697 1.0594517573806714389516945771346706 GT 1 -132.8249932138205088501649679135932623 0.4084467542212892911432239310106074 0.0734271382271832719162223211481611 1.0762625943922101833469795817613935 GT 1 -8096869934423411943.9042967311464265269359820845888061 1.5058837433314280865068213883991074 0.0408151711374356659853861135724716 1.0416714918424498364341564549129306 GT 1 -109263617929216712073317123094.9516932613590433758840338683970475 0.8127187954742974869226375815031477 0.0475815339372534427795596258015529 1.0487507755792888197951716649325245 GT 1 -8404121738886154.2777819129462552892677234975271873 0.8476824792414688450584244461875331 0.0757195199281752808954837283819565 1.0787397035411087104987698645681368 GT 1 -2009419464.1554975511264903498277154655248404 0.6214599961498454060106022578133162 0.0741623250377054795749562885574936 1.0770563567192361133150549640741667 GT 1 -229867567.5825523065426980408087471001804075 0.9436223347890198656052392216089893 0.0969714021540354664714643561181569 1.1020010562482858503114954848175664 GT 1 -1457.7714261937009349023465280396849155 1.5730405400356689524220233113526864 0.0795329524104168139143229526648101 1.0828740773315491819294608648012771 GT 1 -525784259285890735523907177338.4272545658278139765323990685683962 1.7766152939423174723380236645209197 0.0064658690715235298494585418765163 1.0064868633493807654262102861885851 GT 1 -6405705692979279034318907776428054048.3668905427961807777366566888311186 0.3748392931455782703304950429138998 0.0651920359719709539379183518460972 1.0674141568543356673391752889320453 GT 1 -2833455.0421206355208117300518709447016612 0.0140537809360150543563282099104080 0.0091516261173367052474305607859096 1.0091937595039719539317993718486559 GT 1 -23487182220157400623815966554974.3362574294717212031118922719951839 1.2229465099237656336288834026630694 0.0756668252315581102997598700932471 1.0786826935796238204942941468673979 GT 1 -1554565969035109924039.9333037609253425712675921165759034 1.5525106911025270007259841764372830 0.0133413931320893518792346503591319 1.0134311890804602447197043567841812 GT 1 -5731603432309202138203.6155837767931099580891367878086339 0.4210333175569038579224931371354291 0.0826255843972982827292703792199542 1.0862395851491864279456509837051938 GT 1 -46635348325664814965626961.7036759336243786721216569940041554 1.0496511260806909477763289122413101 0.0576408486833911426073986023412807 1.0593688124013656402785825147441417 GT 1 -208271980861654593226852018.4588691459989856409301878573335402 0.7800100160485929419228440934017720 0.0238000386276787336244335598722476 1.0240878350985219156814480157748388 GT 1 -1718724628869276.8186797997316170257074366276223727 0.3031624358536677652087424789155922 0.0492968299694620937811135992027468 1.0505533892054000998505816435877858 GT 1 -286277486457821128301142887450983400795.8402008336602107038083910532974654 0.4334066032380219997900992603807932 0.0876461611581501288901917883461317 1.0917273829668053447352259090941538 GT 1 -492404726662409204025919.3328521855810238136514288987104957 3.0570459818756542846360407631519466 0.0164228093718179559455382230792081 1.0165591585915972042912803381663260 GT 1 -16043440626080509657258391208814603.2126656068335653744820949017532662 0.1393743045845492328443791592543502 0.0419185753565198949966066602000707 1.0428225102144534870540174925774420 GT 1 -20240400354751027.9603400584873211147853060131193017 0.4384760047862875864091819230494865 0.0557291644881652987867474592163865 1.0573422519599035786039493432439890 GT 1 -24092036234173914244845828957026.7569767521171992024525237008563176 0.1935950933214303903658742104751177 0.0372145104792236350945635458802433 1.0379246443118671933626347100016375 GT 1 -385384949440128368375539.6545828902269965257591501902413960 2.9552145469617651414465295339441950 0.0775802892712847234655454447901951 1.0807549412955885301031724134835295 LT 1 -395968398197213072707917.6415914004988508680913488036493887 0.0234487857549565017056057590456657 0.0770581058658859960309877540892307 1.0801889997284071248017838010748350 GT 1 -35461788323.2069570862558037424552302315854666 0.2488254801188772575570621733761548 0.0742527913787308520442269501590593 1.0771540744548899822924032441934837 GT 1 -29804697252601053375375567389237332.2342561256119505204140155962441316 0.4961535599449302176584815350017900 0.0304275413855775312287041602988078 1.0309000689648799639375883894844605 GT 1 -1.3088905110206861015865433451928661 0.4209600945756186395275399055743747 0.0504489273934160129203280663795691 1.0517659612278877539447769925854395 GT 1 -14414024.8450157183062316153728463174055315 1.5029328653294144090205491345387951 0.0597980330498025369604138592523210 1.0616605683392032890819803569585206 GT 1 -32877752906659793939305379312652025739328.9738908252228092523898346712882312 3.9505344569876801219079263246671858 0.0601721044519182192232460921807118 1.0620585103235449897902309687870438 LT 1 -2964018339169308.5876166186736166065209112942573741 1.1816605352255179218698127591525818 0.0613940003279905256171502507507090 1.0633594834922287261369606995890664 GT 1 -527604.9636913886085005279961363366107650 0.4290917762711467673961387985512471 0.0831922390540713923347787748414416 1.0868574678023342735196724063931983 GT 1 -22490166234873419804407829246056908.2235241215142507558082440175082132 0.8341763083610763158620237730118834 0.0440758233572249668109986378686202 1.0450766822113613493922924346170708 GT 1 -2318221169248948488056426728166327553.9917469588361083396192905330859164 0.5699523745591996291374940555665468 0.0326179160705228640210792212298221 1.0331617385812902823898367742317138 GT 1 -100278736203191887815979747855858423.7435910315396549036851333579870430 0.5572007373124286814253646445202502 0.0174160424865248097659111586151820 1.0175694859496913794326211293749572 GT 1 -17538070612015330194058819195748467351671193.8585205029224070640701591434481553 0.1389547742847741277169986034308837 0.0576113525346668999965635213722088 1.0593375125651268467546634964222180 GT 1 -1720845019356562405880635115.6304765303152506928791021631237759 0.5769842931582045612549651267492636 0.0815264336078779061995616573742338 1.0850421538460127705894995363954853 GT 1 -925343.0044923365612955175750011289235670 2.0883464755619591405129986133367196 0.0096121745227704482749143939902436 1.0096586696584278832484667262782156 GT 1 -7941947441.5382940202003558927725761637448557 0.5391281469968797751929317832444635 0.0738376824444878714080425512907204 1.0767057707604301200046119994361330 GT 1 -87653448591503670925045364894474923.9671592302547770431326604942866857 0.1735487191124090472837633991897841 0.0962517313898708618554225222772433 1.1012044212950871998075011451302072 GT 1 -5980611205573700865844339571484215.7418541242980233759028488578181068 2.5930013124895732722825525023506062 0.0160547304289458251916663661444757 1.0161850038313726521461485379317211 GT 1 -433410694562533897970190618397129.2023088231469944659344116940565457 1.9922425187270799248137996409494151 0.0913401838291374317699344538243280 1.0957844944858018978563541683251516 GT 1 -288475557191221.2588611735979186130004372133782679 8.1926321247309009972899913172984304 0.0609438207125040432862898617027141 1.0628799727163746958087177976257747 LT 1 -1333327316384475760365816720394009592499.7186836394209229129332654865279363 1.2258923610570943141682029266510475 0.0127727582757770972175077450802953 1.0128550312722991867060809649988820 GT 1 -6034.4491413342448751729187996735049918 0.2980154797582096141700388694971507 0.0922236833340979616157287079769750 1.0967572780135691218502838664451615 GT 1 -1612512.1021995175226950001042133513816685 2.5576038705488908837016403530843421 0.0056020542528215658520565383781119 1.0056178046091910335876259127938015 GT 1 -31018187026982623220330771397084849455.9545704742282814949102533099137063 3.3612635066104411498874654438337825 0.0446314426456362847382768589185130 1.0456580890196223192686298918747470 LT 1 -254203601640636272872026470973798659992584.5741087021674177024759121679862789 0.4737791984533151318283682610199601 0.0791305801989143670535905696652133 1.0824370336678484273879519498267100 GT 1 -933480922028.0383749664777877722031763678858633 0.1058661395966870794366367526104244 0.0959038360710589653259399980058501 1.1008195482198993245942474454943496 GT 1 -272645821067941355022.7074717423542625911151391767575750 0.2245676106968122793253929001468325 0.0958759003155570002169753768298912 1.1007886495997850212644439592610573 GT 1 -1077566946.5136478792573046916174424259916229 0.2972901930752855104399945466935226 0.0191339181188772277286734400151205 1.0193193405792753549781639685909536 GT 1 -353494895753760310637325872511535.9905369094757704611886322998586404 3.0630669100089967911058362993320826 0.0595087281971816188236262892110047 1.0613529106638934012040224398345088 LT 1 -494937050577384069844266821148458734.6568241716765581000379140795208630 0.1393943556753947330397150918341708 0.0408145740425132992861622371864450 1.0416708693401764963715255299148448 GT 1 -13951091386844030289680452749591.8644019911650898116295078019311256 2.3993560948891967185767198668824397 0.0319860746820227006904724675279131 1.0325088061499651787700525531719412 GT 1 -25983723093094086791491494412405317254869.5334346616313509653532563460468935 3.1023618996056246324392017857698238 0.0405012078125858914857246133151349 1.0413442223289067711407483593822311 GT 1 -2801979295288475259897716.5047237512286450829713364835037247 0.3550953668477948442058302334652418 0.0059637058081484349451717185690759 1.0059815597206758392784273947635335 GT 1 -18610.5011898924787291434745253128348938 0.4828198385673509166288548909069339 0.0602571046877229910873572155945080 1.0621489567555453609451692638085912 GT 1 -239875360269700527.1700760308235319178886408819255000 1.2601202273060716473989202428077567 0.0084262145449458110836284132975910 1.0084619157830457453577618663937559 GT 1 -5685901522765781564084312580598262139740.4911838793649768500484529127630962 0.0624500554940733022039898330844043 0.0438617100185306018915708388306934 1.0448527215998993740182478584881639 GT 1 -16527322209374475104066.4282746821864238264661283286968111 1.3080542394924074351979702831802462 0.0043955623481379719702501409677922 1.0044052512348108353911720501215374 GT 1 -5309092939253803443857480.6934583473928927557490879516286604 0.2909384894486763606475091459793056 0.0926891463148857038296397858865844 1.0972701602581182843310102913837456 GT 1 -165177729557415869033667.9009237266874187811627895203244237 0.1818490652114079463672453721351454 0.0739131721770894281762009792969677 1.0767872821843459677144021308691221 GT 1 -4622190446805334210793551207059869425.7234642315380177986130496762066675 0.2893475053300049893557166583271402 0.0698535927964975348242325947299931 1.0724132781246407707707607098271599 GT 1 -97741.3338235812767062255570408952965006 0.2660370036268959288077587395587573 0.0252098500136981492906755399730716 1.0255330619330390718728252889385575 GT 1 -14739010186191614.1146525872147403453904218524338299 0.4751471389815799722491605792747591 0.0580801826489914619230710212993080 1.0598351276135680749268413600639232 GT 1 -8796.1597163939422654449442852916295490 0.5625147163258905951510774062262047 0.0772473251859989131627000856433703 1.0803940383344248767827617831260025 GT 1 -16093123137155071127520428026080712260469408.0882230560081593005587787794344562 2.2769804639108934211496057299781168 0.0371131359072875826048959364081909 1.0378193568554216838055901206245118 GT 1 -24601959042.3385538681876962943646865371507980 0.4766487667646415925272512450852331 0.0677999400253652312882521794191701 1.0702078307068382117220160796713262 GT 1 -35680799445024685000876220428199982669565.1451759292585925277487659495085515 0.4615715036041681102517864117861940 0.0355068617036471502066163001344368 1.0361525609215323781226732023734050 GT 1 -2697749176190488644063546951104.5442960137727170372800225598587294 1.0699667045227811304188381541146870 0.0484002163164184757183648705144410 1.0496107278720009627893702454087237 GT 1 -513036360405407282036610322295606.4243870999564609080068485339185797 0.7158452731064631311258364686321519 0.0165311819457339518375626257430468 1.0166693467351864180476052830477451 GT 1 -2.1296700320882759909070861173976091 0.7198264750858370919265318276195404 0.0694122088569138280658173547179159 1.0719388589966916371552655266043001 GT 1 -210709305590948499152510495154636.4135267786894735189738511295057100 0.4142326918386566110404814736200218 0.0909813398643568417510903073697746 1.0953896568133311972502062067081261 GT 1 -5099426663904172869265274.3287426057203514857622392858603580 0.8582594836199390699146061868498746 0.0582973792274593840265910319505203 1.0600657434472241030128884010074612 GT 1 -114226364254.4736251729117472714422421197634505 0.1766460228355225991394080269490757 0.0424474689762442931329319684863419 1.0433746967442427058779615423885324 GT 1 -81692734620119689343534414975172257793.0156471216027584124627361847686943 1.8985161958171418127745707190312399 0.0407161318375978377942481391343649 1.0415682435589835558836954365242056 GT 1 -496621262071568.8876359225312458755719560303117390 0.8457709873620910023369506358327677 0.0754239789900516983455413717909794 1.0784200022117000687310502091541472 GT 1 -64616366237703797477365008085041.9230568781878254233015413438123359 0.2382367877483132609367945464283686 0.0324025121308257880481431154477375 1.0329390964989383359311213627041965 GT 1 -1741047515859716276568074.9876271700588612750813802793733263 0.6933493784183766380835165126653609 0.0434835750065176240549989804174497 1.0444573182748987940880973228811364 GT 1 -64427499782.7430635303061971572638077949666870 0.0870871756727805025684842194268682 0.0646796262040311269313544574219308 1.0668661626120164465785768436303987 GT 1 -4501670224520.7481302326301878901387587479004462 1.5244303040326482953725412540447929 0.0867732135790849601870802920988115 1.0907710322764893167836896220714425 GT 1 -127294576322877718632625458742902.8463798209697743627504661956996789 1.1156595507346746816440114505099232 0.0465675383483756307097143966927050 1.0476866884885201612041534694805945 GT 1 -1184979938256297263.4518439027992656908693521640990304 1.2110401574112173941090693595993205 0.0388334763345438622805930839647677 1.0396076033735772448137620196520276 GT 1 -9.1794917574054340161911390219763844 0.7174007326708179478522366101049227 0.0099862163402828365700338694708488 1.0100364130618207597017062852319661 GT 1 -71020855607692464080289561.9139367732318851666282618521959451 1.2705784665567653689390482144945155 0.0995296907102335983175390286772138 1.1048380862703083092600326724828718 GT 1 -486049266344636628.0310333871366051307981779567807999 0.5153495449682556379298987397660101 0.0630904280385683647839640324264654 1.0651685094463464066830801651606103 GT 1 -22890983178250554.7656496263302432378895507786117018 0.6425823705039252818632508791814034 0.0488533598408124160958813896620524 1.0500870325727037365107905999690604 GT 1 -46643571216961088.1094792673691415809498691868298627 0.8296258262110895778654168155637632 0.0547724912554532373851397302556901 1.0563296304697942853453166469747707 GT 1 -57988270820014837968184574265252061933815.3699167742295531073320753363818406 0.2205122160435019376945037737638544 0.0895671595133608646390547218175964 1.0938351436698984973587648859898493 GT 1 -133357422259.4479770674327562791844665591743348 0.1858773131827517088786632283454776 0.0118784150119340574613109986847806 1.0119495270769309374526169646595985 GT 1 -6815570128418723409868793.1862558573555160139806157745063846 0.8542941280187757022782106971338092 0.0073356751807127273089339380877188 1.0073627135568718114572267425813607 GT 1 -3766.9925025580614787445402166441137010 0.8135768538680733218029030204168225 0.0503827756672430151870371864321920 1.0516962973373243324518317461867589 GT 1 -57915727414935539868162081074603839594.2208514237314515622401430380043806 1.9088025534533185666140774669024728 0.0128561530993525335489258092801540 1.0129395086272457839572154895956611 GT 1 -6973071050970601224426869155023611413.5584005267631843200157738541399345 0.0323778950817079678817304260960756 0.0173184821002482065627429703923355 1.0174702012600885856632737657734610 GT 1 -1221052209.7497834240025124199348911979341854 0.1935226666423399516111784835126842 0.0905219078409058944113705530996134 1.0948843690995684837268479656475703 GT 1 -9858944119906931981.4587126357211884298145396196380169 0.0448057230365588277061851718681618 0.0476012074753035158517740229787223 1.0487714321939452430006433935180764 GT 1 -81321828462406390400.6436964312315425785682418548754165 0.0241389237818872685321809398125445 0.0706712302659490286908837871298902 1.0732927063980468469112280275964435 GT 1 -443105530462.4680043308951963917304170041439232 0.8728678291964499725504030180142851 0.0580553251987114621281838913063455 1.0598087377639955687774234703556411 GT 1 -6.8584013350822201513087874300354295 6.1125359161352187108675566943181410 0.0125697819760798206729037861286116 1.0126494499960022416413528197730238 LT 1 -69603573635692308605018.2478212693524907589148078675636561 0.2890786629683251413731927323177936 0.0615640395779395883914061129158536 1.0635406613817263858912126171158154 GT 1 -51840662849328320815.9996756325273697401508009761312555 1.0159213970548576638576183479646319 0.0938311127310353571888276513783051 1.0985295805221594109728327021999376 GT 1 -3132571558616975186425804.9362479530774357599702637061269133 0.5504728797324085940898201067189886 0.0452604239329853132058490889894833 1.0463166709072942064584188840008702 GT 1 -1568319.0619697013114493567732273501054300 0.2282782349147925840822756481952912 0.0279609258907281809350854634555707 1.0283592756287873653505882032547383 GT 1 -1131248593592145232953225552.6726161732441548779569473621369764 2.4500687262384736933918095807258246 0.0228843976255490800435539680440367 1.0231503101167003092783859849869278 GT 1 -2951701073558810850791349527935616456588.0377501740561175594581641526609095 0.4135898079906161645598385976444693 0.0617181871188311242786133790578226 1.0637049349272013337027495553360494 GT 1 -1434799036469005823652262023164.5032632563800188711650205459642487 2.4374522000241620160547444754961484 0.0100863366299852098406313276049250 1.0101375483735594919003114501246615 GT 1 -15144472434171764981677969560280465857.6901975253209380103430775053304760 1.8890759852502335727246994614628728 0.0592008482360845278234214121654150 1.0610256034496654344155502433298868 GT 1 -1554207703083053133936902787614.4043483957521083570749167477838663 0.1232530293700407609456656862106811 0.0836303658710799044459187592380959 1.0873354649961984342078083450332071 GT 1 -3306.5080425076002397897838835963743860 0.8317964236569241663691905965214855 0.0248984140834287582085598815471093 1.0252136227280993529461784460149630 GT 1 -3710179872207292185685029.6076301508915356690180346414544951 0.0185156036016554604840053156829473 0.0836530427758856846274535254014203 1.0873602117627349840306836546947300 GT 1 -205816810080781281279632961478433867812753.4586555278142375806436726548623198 0.2108345481297255361195216620254587 0.0942101404165275088358786033646273 1.0989479429067102790928420553993823 GT 1 -14169150993427800760416887983527851626.7683089122768695548085466862260115 0.7545760144157530557894256975126053 0.0342455499320617331071228208054448 1.0348456695582567554207671993006132 GT 1 -6310491697628002490376207215358692331775.0893760614309856072764067146916672 0.8934897798503416835947029866743718 0.0864406866504697567793936268055385 1.0904069754968480932618758014293256 GT 1 -313271933932437712269672138913.5509175978727679248389230416149929 0.6818348183068754422234796171911689 0.0920041496127774606148078955488153 1.0965154704494114622790947399797071 GT 1 -2425482211910894695199261280.2172709768450116943808346584563369 1.5592443480137795703758692764552867 0.0194855145654976204335189196944992 1.0196778599367579912093555248391991 GT 1 -41374691202451681292837867338527797.0266318154126982394139380798741305 1.1343990001514947939482011031958698 0.0301235794664667154750513040133843 1.0305866171127918659448848889877263 GT 1 -322329374023455787847070.4001411740602501239533362241319948 0.1698671523640211980515774586660695 0.0667654881192352118973651248645946 1.0690987572203998820052570324026465 GT 1 -489773812182444095999464769144009678769406.9017432724302463770021679973719799 0.4387230327653865450848947636971129 0.0267876592042826203142199670631703 1.0271529875163849309812874125878835 GT 1 -1937776081617061987391563518650040789.1017491723272640881409172154933161 0.1282258645860886874293061726628736 0.0017516220555770590357460937321105 1.0017531579392770698998893571441581 GT 1 -254831810.1201365951708771929157710944492001 2.4095120027217229966977067448962797 0.0554203046204712281452630879029741 1.0570152172206316732885132660708464 GT 1 -6713703.7247713620063946635506966470595930 1.7093731262691232582041814815295305 0.0897661529033190479577737620490716 1.0940537376521003683818078388698438 GT 1 -89150936669227.3801363659146365266975284495006456 0.3843371568231314977666325262481184 0.0548836567224975142172119832924668 1.0564472444870044481260975615348879 GT 1 -217844440.2344665642360470958687136676317799 0.1410917700307343232351787390226376 0.0955861072074652802125026898032276 1.1004681773600229756352940010955118 GT 1 -80530350423788267609042298066468020477.0731606521636015931782913183270246 1.4953864253808177946814863646329842 0.0269135326032440949470826321087111 1.0272823339441863916619705786800825 GT 1 -96708.0071142820996669852059334845253105 1.1148828461072480293818162511038002 0.0459741189972124521280973105261351 1.0470644789680938253179775558541787 GT 1 -1962969281168458215837086398481368.4543835506008948642965079602198224 0.9164641104117751959725467842374642 0.0292718366612513397371300638377493 1.0297088052525224211182441220231127 GT 1 -25.4136530629927150647433719400088362 0.1281945380040987761674008506036643 0.0167025404158873842580926831480607 1.0168436007607260405061400288801109 GT 1 -198651028.7055142138813277745957959372923588 0.4206990695093302249151841297012315 0.0410016627281433211133740821373308 1.0418659379147413278737901629206594 GT 1 -875560273828358368.6991994024146810526558187579057118 1.5943254552978462331238115594707337 0.0809347538174121876725224288074940 1.0843981622123499325087868999161240 GT 1 -7884099917006412275557237262540799448881.4052316495211645475483189471340901 1.4099093285203815593395530008380371 0.0131549622657234366930132312247784 1.0132422551837021616614606962271146 GT 1 -16.0056457162279521979339775303352806 1.4300597788874640666370844834140158 0.0557806692879689814031366135273296 1.0573967979678602302245745630295734 GT 1 -1823700353727784428447.9657647736282771931229032095547774 1.2688313445506244348683160873580164 0.0626961257502365275545243650357046 1.0647477438233632490072503510992579 GT 1 -1202734347623543552964923587575282076590541.8142234961948633454792392475311062 0.5568911640201483113682470337657913 0.0317707232766124623871536937042538 1.0322863636323401481403487735355859 GT 1 -6416627958472843480868811101732965.6598211351300982650194961308687479 0.2734265216507408555197947897594095 0.0385955651981475611291142038694279 1.0393601106747378152704984972090689 GT 1 -9644139064706072925.4237367418462481424006581750371463 2.5492907441701085049343111980728270 0.0119423731083205714390452380483844 1.0120142561217709630172538968599682 GT 1 -266717374324465025.9150757669884845708335498694323271 2.3689051093992901137591587304943426 0.0962433038547010594239437308995634 1.1063153199994479367865283414331860 LT 2 -6265224750983250910933380570442531518502.4806022878334389089288500508828931 1.2771850760897648979575495969968752 0.0469995836830812870462843723274163 1.0481399384792174379795750276483985 GT 1 -17495422064104210226541616012.4210604800982838790836203770081439 0.2276168695191207750331837952408382 0.0530082482248957944108847854245472 1.0544648956807646058565256283744955 GT 1 -1614749394356437.9472098835255573415686483870788234 5.7047098430464316040450028911744208 0.0446310708480930429697755719727778 1.0456576998530875467767145856968906 LT 1 -150507936137000322722.7472970716891191102348364189569518 1.8894946698784643052432490465545811 0.0788176132851098823866933725791313 1.0820972311544676142874762651380345 GT 1 -3430175019324117825951147803531207494.7611479330983275314934747754836335 0.0193851283621284479742157888540879 0.0439739205975981147126247109022051 1.0449700865931948749696582963629616 GT 1 -1352849708.7608657215853057969886364174490392 0.3750894036919534050148710746553742 0.0892108343026571856036195068480517 1.0934438402329309734583181992162587 GT 1 -144904721931324625933027261723716371382585.5878884085334609322785852676186344 0.5535569719487812796971929508523022 0.0032242452048065888278884129979502 1.0032294542832881377745715536642721 GT 1 -1207997995124491579685080451.6387497851510683165493663250451169 0.6780296320968289075804336950209528 0.0039252093388173232023160954188746 1.0039329331914449156992322861280367 GT 1 -18275107474024.3612266287871828204572744714401397 1.0969206992726934277639312054266666 0.0526542953872793218277677241984263 1.0540912000221141350547783994454073 GT 1 -83704.1434129710304914686577110384729628 0.1518681802032937763966674745896309 0.0747248807190694607312848497674081 1.0776641594424758251376889579899681 GT 1 -1914655746294734184969961.4456005084778764613001728026472641 0.8490211895548246385477276731121971 0.0011326354396699622155932391523095 1.0011332773559400820961031274242489 GT 1 -16040976116645800043373.7741661418523187258558087797173734 0.1566365056922601782339519726049143 0.0229959326940354910625623154392275 1.0232644638917613529917310122006383 GT 1 -345172127.2760240939452746017749391298648958 0.6738942081683221559417043257346569 0.0139213627467835579636101123541182 1.0140191737531598279630100749824276 GT 1 -7.7253546564055088044863520548089026 0.9281161622971011437733647875557565 0.0375513066326847945888409086629396 1.0382745198333911312876162841810410 GT 1 -546727.2829725884852933690380392938292318 0.1187313721470068379815697267763576 0.0027405487416151764192516410852604 1.0027443109205129468043445800168847 GT 1 -402801376.4530432187782049264824629518882507 0.1964818593810343480607179012688792 0.0735973050097072954531023697628316 1.0764462630675807867348877121301317 GT 1 -203060302576037520978541.9466649719868666541600564708427087 1.4959439363389894211751914452514227 0.0420064284877117633295546561404155 1.0429142113549930717304881615559859 GT 1 -8549836235212864.5213078523037295377118790514574192 1.9636623004171411317517027184500241 0.0696716589152079828959937719639358 1.0722177002141780106924339754762579 GT 1 -28081846024578678337282713339839616.9332484646458906588176280968201293 0.0529029272593671480589986277172039 0.0528721168251671912007926570318161 1.0543211546018473904208687283600722 GT 1 -686369644674208037.7294469449481898757485658937605018 0.8188795617893470737170759211807619 0.0263918451259706146725302883202618 1.0267463613434571023706740987627864 GT 1 -2120305180581609556434080591597.4270306614220350268652403623167076 0.3795354154202260089121522357271018 0.0364558257734317093167957229075795 1.0371369445122965211231019107042604 GT 1 -13172277236906049015255161079.1871425365307599648435569128755192 1.0101213925489899275885998747405632 0.0555649884930047387555850470031105 1.0571684017059498440919215302919617 GT 1 -14078.2055711695170654889473960979098130 1.0647145422290807776566945974353142 0.0690881838043572921630703524055157 1.0715907256373810304597695503436885 GT 1 -26533909618520880407639435887823289346289.4739765001739073705957739707530820 3.4295105899180940624304667967595728 0.0679148266633247431235054644252034 1.0703310807718520134157346716568055 LT 1 -21708184018670747057088716293442.2507903485529682181598457957703400 0.5290762036957023724546493344193730 0.0574515511926287696154787733316699 1.0591679564109857125389880855259262 GT 1 -17610618918319860064694308.6666148340238261102567053598177667 0.6579334485290788939288017970606836 0.0095995048221787898097908303207986 1.0096458770743241549385148203050272 GT 1 -63886582650677131906345560882176532.0116134765593486571637560597318396 1.4672503900902050648073475078973753 0.0877677516960683036170271410136516 1.0918606630997130448520664200949220 GT 1 -219042512287.9573049999975587781389557148757268 1.9268729846230476616373074109730970 0.0307940482620418933603350487666546 1.0312781491816527490580700369655358 GT 1 -23356226925860586.5414085649046823514248541421035300 0.0131008200207227787811073387949122 0.0917263549970534270438695772000846 1.0962095746353868881354104342177028 GT 1 -33855145.0014413782425512441740867109450408 0.4372299202485731158725369586489578 0.0038491407351551038541799142746016 1.0038565677418764783670384747169586 GT 1 -55498909183815983386530496346661507335.3642100443395055467876230757558838 0.1482576281427905138339463858498060 0.0768382663077643169771917535950623 1.0799508337274880020423757232714340 GT 1 -21610782378815040590780191267344548421.5546335938782438047537861711359481 1.1997732423947478961183436501673264 0.0684933174297297528939035974121465 1.0709519149777456273855317095921581 GT 1 -33214.3763311074557155023771198791665381 0.4998733068581594594616021602526300 0.0800216538654123033353399344473610 1.0834051460262768872045781920087351 GT 1 -3902748872470975263890695600.9153686077198740971615667154274724 0.2045691340276222944958642821011945 0.0757063583792710780434622743430816 1.0787254638644303693141322899157538 GT 1 -3403.9186512764437088996245140625321445 1.2079120604822994601222460051955554 0.0685498764398360129034372851742445 1.0710126345928623261268973392521375 GT 1 -145712996423682837765060.2083398104320310849662483519365450 0.0756116208807516238428616475409536 0.0124112187680862399271961690798033 1.0124888812031004992507139490548603 GT 1 -925277767128839931797959209398602762833606.9112740412191151607500710377493710 0.4903687077675496361643956579807695 0.0501269932172720325862408549404272 1.0514269803939391597854299989804208 GT 1 -62341531079574930876179305.2856652010358886941332097033887976 1.1473009830162369874096396263112322 0.0966415088923468775076188854840960 1.1016358042296310364599375759772948 GT 1 -853157799706999393932893835.3245245134583229188800704252883019 1.5628453658784733356049334642442972 0.0193321893257459094691062209340404 1.0195214999284422840981581016295489 GT 1 -2038.2209916125561415446271638949244454 3.5762816578094609117257232443799552 0.0382506139564509503731986872540064 1.0390013757242029591368783866372737 LT 1 -816595655089620463.9577967217227735029139414511315476 0.7040339160572941929641374628630264 0.0310500301963662350724368059488542 1.0315422991738878102266260615750603 GT 1 -381402626157451909278471889714113.3713341059722962972199523794320699 2.5369617070839533244095569815797544 0.0397118378464144724810274545618686 1.0405218706519442844422510069217626 GT 1 -1454253685483538559549354101844750.2397184428140060138487479608877305 1.5046790194703236967463191749625973 0.0693261411605865952938710819003503 1.0718463758185319326758889471021876 GT 1 -61.9752350876532275552454673476396787 1.2643618007838644669801743124308804 0.0567732303123392332642188311681948 1.0584485483894017033855744631364665 GT 1 -140199622361620083.2657012521715880764271058958319410 1.2219421401744087342098270135388324 0.0921432280455893123552241975790549 1.0966686529614420454969347927367339 GT 1 -22931858997852.4161253667240516610874655745179876 3.5706801461726515760078606089541415 0.0224182683788517355811841360300554 1.0226733777063202483831839439674760 GT 1 -99404077235.2566864257015835013567435268471107 1.2538618431072393381292062027973481 0.0657415912925855992445626067084261 1.0680022101674419442504085808568538 GT 1 -785138432362637078996739113584.4362438406547482706898489227674407 0.9768145831154066300371995665757070 0.0958099037348052866526128185590344 1.1007156572172346456422117737021659 GT 1 -15385939727160742182413803822943284324674466.0576847178772746062475530325555183 0.7599080359039287549602739856871820 0.0878632644806904677605007381557799 1.0919653708485909798549304662292592 GT 1 -23656626552561892425.3827982051669248173803666757394924 0.4692022786959267280431233264258565 0.0406810528158345596528883224694708 1.0415316763013035440923942449873505 GT 1 -468718565.0377087643768117709135681139669711 0.0651245896059317108130471786182222 0.0439587055746841514548200673775116 1.0449541718580526442461386098446217 GT 1 -46267837814.1273820679165215611492234094023358 0.3934355974468009892521838169468884 0.0355903378019657075322599213782487 1.0362391138555104663974328598565375 GT 1 -22793289.6484813871450684852672434058343949 0.2708881917895283731526097086725637 0.0795461976214271982231659539306792 1.0828884670985083013015605465806786 GT 1 -216933435.3909545688172171172956424646718656 0.8715503642054139393219062350276900 0.0919115225897236345158175276920313 1.0964134630462128662155170876545016 GT 1 -4972899.4066407331398662739412201091459273 0.9808089850573530894934165712271004 0.0396615204791959133786847756511849 1.0404694738288051399777872827749301 GT 1 -2.8398768249581997462590981083797615 0.0683335078849882888075098061179723 0.0937658930371626920343791756310569 1.0984576101114854199228268759481125 GT 1 -2088448339452.7876358919853299845577320481911756 0.0163265223141455697538774335837734 0.0051443901504152995358021425350537 1.0051576680829110493448731675843869 GT 1 -44623354580828870787848627.2270916495959480221924481817491941 3.5869671924411804220842570040106705 0.0537192035725694619483613046390289 1.0552159289979344669506019010551507 LT 1 -947342.9302891778176058643898169706305070 0.2127222507881072971508907550814536 0.0616656327998997596043978439370400 1.0636489252652332399592833362789189 GT 1 -1095121133576298036539894166037768.3813602524975922402620025139774964 0.3273533436303869184544853188839126 0.0644417502369499161423335621547102 1.0666118692918965668949485769831264 GT 1 -19693140827892567563359017679378944287.3393271215829837740399546889186835 0.0649367553620965568999091820219924 0.0301543648303452157104911510632833 1.0306183591490187260437519311303895 GT 1 -1178.0077313463658602191588162690772484 0.5901792247621922015213170215517417 0.0569420521354334483133526917008136 1.0586275476910172671991638045958076 GT 1 -8674931867766582135344398903330122.6591895898267544474964705969704348 0.4361545778603992449679094641531753 0.0152252215493108951846766198956490 1.0153423152738438111185277779847347 GT 1 -10857.1597116476164480897489526817848251 2.0208896764715630441465325634018701 0.0556015477098924044629202707878466 1.0572071126008942152239017093173187 GT 1 -43640850781254040.6286526102588134421246796820145749 1.7222379534757508268166277801173705 0.0771351699291406418840022446596587 1.0802725014973505840816177947502896 GT 1 -21199836164262723.8218542368503277173342390959109766 0.2907620806610694064216920344764173 0.0977531857084794968727726735577359 1.1028671663144384792012258166642105 GT 1 -3946575854286139944241987317.6180808727830450190229486371423796 0.0128893970238888088839594237179177 0.0559004243983028892887396398393184 1.0575236357706212449601363859461294 GT 1 -58765.5717594237096317983374623431804222 0.7142407837860341020922968057829268 0.0455457646740890951537297826390639 1.0466155831932293529719086207063398 GT 1 -15829905554601848415069.8397254042281522743628846616027896 2.2966349141327170758480157717757445 0.0778020985270034675514135311267582 1.0809954347781624741993077805171710 GT 1 -130494070661692260746844953465633370436249.8681004651076723915398277018915991 1.0247509452634971582736609073567629 0.0026093043632249396475707479958970 1.0026127145312574847486592774981714 GT 1 -78487279616107388543528480.6017967523559454677048876233848223 0.3882139651163225186515304809916266 0.0834665437521824366778462299069979 1.0871567080065967337063595338601086 GT 1 -7560259599.6996098601774167033451589423797712 0.1078551103420057592145440269223908 0.0241119909673491889755420733221534 1.0244074439963332467307871253504114 GT 1 -4.5625570135940422228483155030161782 0.9396255703603575810126345423210349 0.0391887158732315610949464887878530 1.0399772637737053997161825397698974 GT 1 -249055890045029932869165.7441925675784356635523514036452173 0.5513049944177955696553361542877823 0.0843445569078860793512950472364030 1.0881151389011743789970131550448275 GT 1 -17356066652.5148992292960382613542558366642642 0.9605599360725895313845481845786419 0.0813875144901432964709164717681944 1.0848909152931365174174612989625539 GT 1 -77640576771.3227248001433418912550110846394515 0.0601990361640640465808037335978134 0.0675803071572416075723255096032105 1.0699722514485926398101450177823509 GT 1 -360245055512126351006346390845146.5447615563994014677460840202086074 3.8446273809346984521514858884132310 0.0699628954951710606158226362762453 1.0725307963136918496655776773142249 LT 1 -380347861038593571532.1955200984973273882669065568901166 2.4190639203928151257336053179243049 0.0689431300442583209275043644601001 1.0714349187632147062755439652561990 GT 1 -17854170.0650097268275200209271049042085530 0.5791860365494352738427245917967545 0.0304256486244680962627162303526784 1.0308981168062298972390133278691263 GT 1 -89233.9847178103325568592636339152181631 0.0328671953191443187856622794481186 0.0110329595763320469678741912416238 1.0110942740788914439888120612151481 GT 1 -963185.8080091930411241459983684705107004 0.2330080170832215005283919662707120 0.0008203725185833732681653487530838 1.0008207092082712356614468493430064 GT 1 -27037715682830.0715615738800809447503611950162690 1.3921047785798121910370605885907925 0.0288840167441451829292178750043634 1.0293093705986727811157472035684401 GT 1 -3490155329750070025666818156755.3781341436418236754496876943345876 0.4771586197202631787063949207161915 0.0546327240138108149169024842307695 1.0561817751567194090111511752712764 GT 1 -3857025407865172927748363876.8512412733940845628802451205519916 1.5343754357188373050983713766719905 0.0463691805805033720309504714754865 1.0474786641711769399879415956099846 GT 1 -26673192958795002084919267443611810319176.1727339483167594113021243359913264 0.1969501387062299984944450556293981 0.0988590192932185869506480617400210 1.1040935622414911690074868924875835 GT 1 -312411287566.5093404847908714625150567612998093 0.3013156555237220458486551601301173 0.0650949424722490399120966205225957 1.0673102976003327189622289160874420 GT 1 -5716861806235501455135195177998948.5142606310369284592709070994544395 0.9124786546893880596674088534294408 0.0681683571969518731504044331747533 1.0706031213833163952635513874003331 GT 1 -128423665.2008242048435355885575296492129462 0.0797600769260413931368470513498943 0.0021060228112644326967807852354943 1.0021082435958684054508997820651761 GT 1 -19361548868044.6945831888443901219915529795567607 0.2009571892598159044354220123653104 0.0954903432290293652848285000257539 1.1003622978400747875113682421299375 GT 1 -27683061.2412183606216838433202642920916864 0.2191976173728834884116524694309877 0.0768913740104761794613759497394406 1.0800083634413221818119783630467571 GT 1 -838879058398808242052553015721409791745335.2628941276596632716968974670458132 2.2297636882604351420954657479958302 0.0722682497273388272784145479566706 1.0750126501886528797271482625420942 GT 1 -2.5514294561599571862080369488741419 0.6137790623012578778508849817540281 0.0124431534743596476680080678615560 1.0125212177618102962097260255374999 GT 1 -541945651075961.7150190012245140036598858758287974 0.2401624112619531041472992866262679 0.0530324574842468123655446393840464 1.0544904603900224159326650109926142 GT 1 -3385289312.7919460466037985883645562202618792 0.0070537511737616441546848857944061 0.0633077512686944762195009381220938 1.0654004938826343642418963473148525 GT 1 -14864179059109692547074650510039769.6078674193100136837037532192665332 0.1747529038550463841595614656598846 0.0991016565365068304921797438021273 1.1043628540837946236575900114708543 GT 1 -247012735.1564221336596085123036148566321504 0.2987538931782523726051136834092871 0.0701109938754918095473294872316841 1.0726900482106219196540227886122769 GT 1 -3635325325798924937.3874695507532084140048187568872254 0.5152241675169998078669366228255112 0.0720234955587526690766699649897439 1.0747488650064900604013116849403638 GT 1 -727767917052126826192459204.8120768569707964296362404957157546 0.6676539588718200240479639061130682 0.0621430498065985950097206143539954 1.0641578467303068331075047289469061 GT 1 -48293.9745070850351372174925493575985086 0.4278398782371807439617987028724268 0.0742834769693471592889172756540452 1.0771872218399502755823491665853704 GT 1 -9751.8282045037912987561618906585664774 0.1123873762916991247823632812238737 0.0063883778179431570427641155336292 1.0064088708281997154997982897471856 GT 1 -5764969710.8774274638905547099720609916200746 6.5813007863184803551701599971920421 0.0554841907768539474076464894035732 1.0570828539878056138451762269854910 LT 1 -3932112017990899934774015931235.1379549881826815970659782050664623 1.5716729514570668163226358595919532 0.0630782819784942789012391010827894 1.0651555455683930541275585298417042 GT 1 -453484378984521001827685117963564.2082226474010765224661349600582379 3.6642263605450604021855420699223027 0.0242199085401740672932158623868604 1.0245180340837642338882248042056582 GT 1 -11627110021794741626543659505764209187988.7713266474685807341206500281321125 0.3171255173526078593042912637583497 0.0601112344374190664065850584518061 1.0619937452280603719927326033115819 GT 1 -5635826695937579690664688152094048650.8418902006476953892841699797913795 0.6331395765537825528261950737079344 0.0784846500366051757388746248522078 1.0817358444272785108812720358594002 GT 1 -240602948179759.6456121289551353141777652353240468 0.2030097121656030675530091354394294 0.0091353593665725423007154209978434 1.0091773426457837359738016715647439 GT 1 -115305589820086275829999096.5987193613863934954769542088148435 0.7843453918413035155447912245163168 0.0387944590432829498466434086512176 1.0395670105123051594536996501784064 GT 1 -1036870854.9662581436755988403859647810389846 0.2844616618208790291475674166287206 0.0184127056985116290813120310125356 1.0185843295348473163810094908451678 GT 1 -163455325909.0861085425069336633543713935672164 0.4856843856408235531402461600798897 0.0917156500123270917881912821716002 1.0961977886260703901457578428829281 GT 1 -22399677976001102.2099241447929352873974550801078991 0.0416228519606727934587095338981268 0.0359108894413908142590515841551612 1.0365715503049451968849140907456030 GT 1 -4743212657902910460355177136327496216541.1701825623662511810110215381716730 1.1190537738130216859178396382224262 0.0454447805186652330803818240707088 1.0465097857543913642656910543723287 GT 1 -136773772594358997341657394549200.0092666757108216537798472486629230 0.6113489967712845818441496694817196 0.0381258568472896196283346176535038 1.0388716651987880661854094345497986 GT 1 -22353802116339866599694251652587736481.2006573395301829572115216648789795 0.0565618906780028766479970113137901 0.0763910470987605962914850871942575 1.0794665080654094880554085438417155 GT 1 -8235812700441598793775772978.0896616056350144778282958010852035 0.7373892024308043032548464082437852 0.0548544268211734772834656913547919 1.0564163176603336088031903888371256 GT 1 -6373453781033.2083704083150272925764858431012924 2.4241810020686958288023229561631081 0.0289462850122250711402957845026896 1.0293734929749589883644304918030074 GT 1 -936.9679138389882504937009736162949738 2.5299563451013844894546666922016771 0.0993814054631650955030235120279783 1.1046734244958800734627989049742990 LT 1 -24150092820560.7094370003593152621049314152216718 0.5560264074813206458712076241131533 0.0840662263083910812392182171826262 1.0878112163850480045350148004669081 GT 1 -7961709362.2158207211042359686965231707255097 0.3194995664363360476369421355395304 0.0202354760967998494284134641983303 1.0204430179212281756001821729838960 GT 1 -232966018558.1451711777697279808889314562058876 0.1857930360259110599904572405529628 0.0062109608356179803484755416540170 1.0062303290915010121795730180030637 GT 1 -1855590123784761021042392.8039402881350821296967753066890089 3.8797529576649842987556279882103792 0.0338706245601400929135381275985579 1.0344575247105403904485545457870880 LT 1 -3.4674315362809286513859454413615476 3.0109640705529802118134916779142516 0.0380026869755577562944415975834168 1.0387436214342167136205383022707061 GT 1 -67.3922560992158612592735755259652007 2.1510520886357443789171380278786997 0.0913802760842310724518181720034945 1.0958286178627681448728901391546222 GT 1 -214571422286241796207727365.7443995148908176412666743074197978 1.6125939069783067829165606404797917 0.0826455669336166269267670268229353 1.0862613676990532703036469892875391 GT 1 -858139856694019.9739846062113861707814717172214500 0.7772228747289507720824599362591426 0.0418896047191313553911747650499106 1.0427922724928543094360663844453546 GT 1 -16578934656162463529269911850682538065443.7606066696349307958257977923176500 0.5004421510943297508278371922284682 0.0158089147718864296395809324064126 1.0159352084777751380984160157214222 GT 1 -7298656043798305619838683.0020515242085973569924329219255370 0.8182218679805677434164833392426117 0.0308517462483775421920701246817316 1.0313376821464630858925015644941928 GT 1 -13277527672947.2172772231685324254897918074050699 0.0652721077200483580165314252951310 0.0284790587267137863639944594394483 1.0288924547888434925516092875170584 GT 1 -76030059150559017208965988538636737.3358708379985095106142792603133971 3.6438691544791465759744944235762627 0.0665574817738533235683674871798107 1.0688758945152956041842548958918201 LT 1 -135874886.5936068923429339800804263351580571 3.8029559326659354935232278029319684 0.0859958739017399336355758551638078 1.0899201932074763121862298380548405 LT 1 -14432527356.2492299368442819948754929081854279 0.4909716431251028968966674487624787 0.0283199595621815576335628305682648 1.0287287052164779635290850794255218 GT 1 -60896060966842179.0144075985217521433573053076053112 0.3794386940017504419460372438606389 0.0977949788104502064776983090215425 1.1029134885283722643661574119256669 GT 1 -24410901.5941938922017820154918629747293005 0.0326275646084597763226317785500906 0.0084665932702552053630641015409388 1.0085026384686112078748658201935473 GT 1 -3421083437531668653984923116844314190639.9180682475418566265587383671291215 0.3257868126599571772304029975337489 0.0932941086631423609983807173395789 1.0979371467921117711671208441327053 GT 1 -79381750928540281572984993591490725.7451138790778037957008827310957513 2.6906861532072502277131484581379836 0.0019951218779103591505702551644460 1.0019971147847333996216458364735757 GT 1 -80430.2443517579660922360035970503273686 0.6890880078446800516813005461579476 0.0584595216966967312515986451870348 1.0602379383908482762191090158915817 GT 1 -20483249842283777764288025586473626845105.5042788846574871691826421899158085 0.0829027799267890525575070081646303 0.0640405877005892682164596183825749 1.0661831663727239338187105427788608 GT 1 -471291258939.5894797048233611156383687744942262 0.5694452339682933001395943630836627 0.0908977257281121964030341233898948 1.0952976781833938646869430932612780 GT 1 -56872410028754653934403799816004.9871699155383302718684525243808239 1.3391115984252993623261196387313998 0.0223682477067066166206491717356142 1.0226222112505162634629303814396150 GT 1 -724548357.3607248802863513537147723865876266 3.6781672900778535356392175858192926 0.0958629921997397652539432242276374 1.1007743727724352261404468947186781 LT 1 -5485474500263527192328.7307888673503227027572794704150859 1.1830613632568545035851551458869020 0.0386282070727028320626215350642896 1.0393940635332011817032433855322366 GT 1 -189391309.7707195586392416334624806724382556 3.8084421279438376909417656508311807 0.0547628831036261167722535284766013 1.0563194656122276478220129771358084 LT 1 -487866554679537499857880.1412100663133768512364876618020015 1.2315991066870275985486693476327772 0.0279962540731318114498177849573928 1.0283956206948974448568054807079803 GT 1 -16.0493659314663605859081343986396777 1.0437953056459877309965295796049033 0.0877035021872040507073337534595605 1.0917902344928439482543853143003231 GT 1 -334876007226921846107761711733398322.7612199221383871157988351655336211 0.5970596049617341968511482772457573 0.0142857834433577084429665664332515 1.0143888076120301781438213158982336 GT 1 -10051220293716802812440.6392156074938310862751857296093825 0.2077566248306881316891984160467867 0.0872393516589813299492814126197386 1.0912815922958498961045445123271883 GT 1 -111315758.8916581228940813945271308440989197 1.3630003951567475687120361489623698 0.0363957200507610716241012013916072 1.0370745666269188918448171896176774 GT 1 -14855539823556879.8174508660973359679650132923861681 2.0573109311466622384184441253034383 0.0626572218895132029273685991102794 1.0647062385501642403892066174074843 GT 1 -246153299966527043741769340860231174.0036158729932543135117906370287342 0.1482283398192228208691937196820275 0.0192636822118738260381758974071337 1.0194516447538703340689879350016512 GT 1 -5421327613020080792722721238405084470958.0426171126254975004076293536754722 0.3902372285252370259461570819087157 0.0193939698633935269764952016097102 1.0195845003482536342710529617140637 GT 1 -7207622500888659713.2743183270497054641573705245962888 2.5785873117631235300709508419396238 0.0683286554835257529483434361530202 1.0707751611257370129983877293301747 GT 1 -104326776105382268099430013918879039.9714020766749953944114624244744100 1.2196456089641919977983701383541811 0.0680185075772426082763502608183677 1.0704423224092132429336686445394593 GT 1 -42328337132958252854.9806768757493609154044008923974014 0.2226859904788523302161783546865363 0.0561554681809970751932210987567126 1.0577938172693670952314721547931532 GT 1 -1766814938.4699838222725751291013241858664231 1.6383336127587397463187774957731307 0.0885896315211827062450047164910335 1.0927620237865005874897033130516960 GT 1 -4.6200072419453993023160781133830293 2.4923202846574255927175341734891602 0.0397691469548687473540591948129399 1.0405815515069816456830474687540403 GT 1 -942438950729.4245476614069416172759547247110500 6.1830077871135689944522736105350949 0.0213606125459271522559000565007553 1.0215920521591538506036094648887475 LT 1 -29768836801600663478.0008242262931323296413073002337462 0.2720334467826413067822760519106623 0.0221117681985918361471369913005716 1.0223598978897001874181469281323620 GT 1 -129888473195548510130329449674584032165776.9879949752111382855460601381092338 0.6914765028413672285102782930992071 0.0231347084545636430173843216122614 1.0234065161330054591404224212981544 GT 1 -1416875821.9916443482254636452691436067298144 0.0422465624142777715213023577940225 0.0084435462928216019290445763170627 1.0084793949657378048154295995466971 GT 1 -6644674264.5113504715897920257043195401408483 0.0739590862758778352412545084002045 0.0924034310347708401838647269603179 1.0969553064215981333355916740351410 GT 1 -73531187237.8853389716679631790648368957430828 0.4542595292847487979475969815260264 0.0919617002078358836733699852145266 1.0964687208825653597507790379132630 GT 1 -300394833533353607.5603339982031759847822004634685146 0.9494850906665844840740653137259262 0.0530665916913421109130104375421429 1.0545265068443886128701978063167384 GT 1 -4823.6636913008791814085324119154451022 0.0898193724381600258023792599549608 0.0697858570637102989654763606329175 1.0723404581190648858361875642803123 GT 1 -293757.8502179539814783132595921433814734 1.6720829418186960083503278992219566 0.0366532920724517849525748257611727 1.0373419029783312834767708035474659 GT 1 -103588995983503185261946724.3921565378555748778705775425833577 0.3405389392004931942787996276812644 0.0621406619269539476526385572649202 1.0641553006313476397156078223192141 GT 1 -256730302799806758624669488050719351360086.0740315677938481554388638099696058 5.7079035805317719692680079362488469 0.0852419246634792025507499910975782 1.0890956472053933563699504824129370 LT 1 -476607691871883672.7258351398983073676065955819223288 5.1390694165458296174836913718935440 0.0950746213652158297197623375165699 1.0999027932289737936609786194209768 LT 1 -37028.7921299876952690428411711768464822 1.5613483875019750765312922820789859 0.0046684021794094342154749818207857 1.0046793332024062586656401445069074 GT 1 -16981081592143182982315434227294602377969.3829461402856613846596614129781322 1.9820282939444659865148654855887027 0.0628913077975210565534432120588396 1.0649560032551268855683478972851069 GT 1 -10123033871005963928376158623958990.8913720192023399656380306920418977 0.1041662419237176931993483144426969 0.0949418787853582339437547075049644 1.0997561150077561642150688311770960 GT 1 -29492612200857860131025867064.4821596117035090527715268631277260 0.5846507163039303782744032439498530 0.0878985952593382567592321272016502 1.0920041056802694486695628948224462 GT 1 -13420193151473930595574646671144402452811.0023670393270117812652207335085169 1.2708072784134128786256729433510015 0.0340361164861308200288938470593192 1.0346288331353573820263773128454992 GT 1 -23284949137414097747755101254933311352082.9881068267664217811306820498758242 0.2454215058778564176823969309541209 0.0219514418957248036726532636680169 1.0221959597664913723735121092826624 GT 1 -21.6930382621708835256246483715617293 0.5683250457247606086136504050417129 0.0089221062589619263470640809704616 1.0089621465896570230672871062841696 GT 1 -54653459648871.7982233227186745308467134528114342 0.1284829950699782092818196476822480 0.0198824427320970822499885279461863 1.0200827581158932729920459025966635 GT 1 -72.1749801368723980385395366918573017 0.9143068074704732819876878001337339 0.0993328847262088315694327248496691 1.1046195510468167370444682779127932 GT 1 -26124997452713682979024994749126721.2522058572368320724390386081527933 0.2863851311992644261359891336581115 0.0301269252717200601848567849630817 1.0305900668420084691800778897676619 GT 1 -3522622611280686.1009963418923506085525144417427884 0.0937582646283443355785719772027366 0.0344868695110585965437233797325895 1.0350955775282162850251357353890868 GT 1 -2156358428494959568305537833251135553374952.5619835101084709377900137858606871 0.3475005187968055457093336409344799 0.0982045342147130601549807772716294 1.1033675409682204712420671908289271 GT 1 -3938982692509897908590594297450.2768984563041047993653328816214283 0.3720081140594004108656122234668440 0.0310328509672776571559618527467890 1.0315245695930692627515050391382026 GT 1 -1330.0261884004211256588381562214984151 1.9690934487523342719544088979830301 0.0333975689651717306196526332985151 1.0339680045372497734701286209891659 GT 1 -22906.8012784312886386755011565432413555 1.6875328290921939737976847596500521 0.0717784470961495067670671254681094 1.0744848323370698084473529236318486 GT 1 -435791190308383400627390498360174.4620535102262530824552373309707561 2.9326796579958087392428834222311984 0.0680490942109076415631665091768648 1.0704751418759461800350756927388797 LT 1 -415845852482048060436710906800.4159505559173491988574826413869942 0.0764876606396426210533270827764173 0.0012467229845725331146260332848966 1.0012475007902119849917087302183349 GT 1 -18751900948352712455127053.9587348011743687053976192448133716 0.0134401803491870319653078349084336 0.0682826620596010011602779044463921 1.0707257957685604846559605959542145 GT 1 -13493424694582107997914.6248919261686408380442802909171556 2.5065822183787740842721457213981684 0.0972802828703314971551050632084268 1.1075802261840778702407828710218720 LT 2 -69213298724213588.8385687073464673427125194006595621 1.1828407397152537424329787360359962 0.0751545019178604728539603802315883 1.0781285845210152413628433818791952 GT 1 -779758185724342341390903.5476767340783532655757894656954834 3.1494858778086772543308828979227877 0.0149035485469223261937066140155642 1.0150157223469919384643359647860995 GT 1 -571099587286799646934431251504796955851.9432527403014702506182453151081754 1.7411819422735633312183886475719317 0.0596968500042363112496739826283927 1.0615529557145397646989690722606173 GT 1 -40409789403532383826643625771.8562607349433126671541477477795753 0.2454719404521840833510368925792611 0.0368327439425734153309990377490490 1.0375281999624127787077200414999720 GT 1 -33954105839520.7504478482586025718769071691613000 2.8164160500804842516229701423835387 0.0496437900927113680243437296233102 1.0509184068695121745434707198352966 GT 1 -89190.7637682223597500271002012336003654 2.0163440201968346554459374929736644 0.0733294289648760442600662220950680 1.0761571476271840480979485443806585 GT 1 -822536504853261374006770197851138176528.6846315768398859252004699206605272 2.3540283372914575701611235481417882 0.0121444397237744366433433005473990 1.0122187859740646269570940264872568 GT 1 -46101.1023963770747006919196681394062608 1.5390140498262814199448887955097823 0.0981365116916760512430109612394461 1.1032921137119591099977280307904588 GT 1 -163855163215268206541836.8149244054430337883888250902664643 0.6434382534372200173012881169032716 0.0495365720874486453441268881494892 1.0508055944771703029185247233030695 GT 1 -1108.3745205603379608422748153876574100 0.2493585346818459838531353569324672 0.0551628157994508026623184786665998 1.0567426581836110143935461164301533 GT 1 -62913156787032127315414065899091.7954548701254498814149226443009581 1.2349603465085826250026592970670203 0.0703668615887517760978208336941095 1.0729652454871121760574507430755903 GT 1 -29.0093327926496929041432554669987446 0.7317975720443937893799593364098227 0.0002043798182645613353352638865578 1.0002044007066657785052314769611293 GT 1 -4637826423457027464062.4117624740921910872818965851022859 0.0472360427387777088593880192177315 0.0729876920210273890036757352855838 1.0757884362887031624918309557231273 GT 1 -5518395825203255598980258138696979446.4215877031430980991759333312377505 2.0027812935861625294124259741227967 0.0925167156828978037425460823703961 1.0970801324980588456812791038111855 GT 1 -3165370304556320654.7602687822873947716097862540177143 0.2083013423725436885650604797059833 0.0769512385361021449011065055481049 1.0800732165530382141612823547032131 GT 1 -53025993742521975958.5652059262616730194326483504869347 0.3541964199384116326920829992974781 0.0362378258903343701945286552791014 1.0369107221639757816634081470987602 GT 1 -1176931877093664685315698558610.2906280334317762468930777528667190 1.5362498983190184694262063338976394 0.0700301688249325824535714779783714 1.0726031329577122286617867628727242 GT 1 -987375098557462967760137.8945556042911293465268207565915191 3.0691509626841320139798035163086157 0.0392481918934171603858861581598339 1.0400391675648897588042559255305827 GT 1 -1549141379329505039867869428267861.4258312215953477053981505290169317 0.1319894798883948208667414840302494 0.0964046362979835965301556175557608 1.1013736253199819323728562590589840 GT 1 -10800551031645544163545898613.8396092698827508852874665400170426 0.0749206144192958426924865211567513 0.0188046713612483093960200342668538 1.0189837274746558577916567319360389 GT 1 -338510796.8350568631318632170624329491817218 0.2180124527931320451871132929082434 0.0767764763527377518549114156348431 1.0798839029991321370119452241632415 GT 1 -1374290.9607784209354068688324933879007713 1.3865236669886332141135673569883821 0.0779619312210355023754303816275388 1.0811687669298072190979810212153676 GT 1 -185774859301674842419183.6420447055823518081083658431724157 0.7079402068726137162361854831336828 0.0509426002503471577413618940475734 1.0522859977443625146719428929236317 GT 1 -173402928325932435.3051446186648399727198758523408608 1.0760172108155102145361315743008215 0.0894385762365454082386636772496632 1.0936939205155442867489692545855454 GT 1 -977661733570165490688444124000646941426676.2729512803737043791807932551026531 0.4286450926807216482253743399842440 0.0144683534247736237446098345507870 1.0145740407027902218418730140033297 GT 1 -481225364381056035530029694624993699.0012186569292112506854780604128064 1.1004326528024172407110994651401261 0.0623256053114822236304853859015578 1.0643525174362465866708998009470952 GT 1 -12700844.7465858295785122661143641623861485 0.5616539663625415365905771637470696 0.0696342412474268221786616401411624 1.0721774811714138346380648605982133 GT 1 -15951736.0849089291368199679304306900923565 0.4031268890825748102978989195114229 0.0853497078652883490998688219397676 1.0892134811497989420643799221522951 GT 1 -841104216780675.0805136746854325204808708245140822 1.6059124829436829731671770268646450 0.0617725370763469427347510536496700 1.0637628615873375653560162903033639 GT 1 -1483.8112924604514442639582610362365708 0.1840527480526641015581491332120352 0.0743746287583412885977862423589780 1.0772856928888146586089641677203467 GT 1 -64267796969020396674.8166610922524083611028841709456535 0.3766934073501598753523603751752749 0.0517462915648200045213942196328104 1.0531331876006546994341732049895857 GT 1 -205985.2857725909646018151211808476590329 0.4158095189245382555033471097528318 0.0890216658708403486139005129042985 1.0932361645196308482864960472010673 GT 1 -53.8386951868488931346667743207606023 0.2138953367044950840692991895568426 0.0359730691990118555767042917967245 1.0366360482462607530501905194366797 GT 1 -513792495.9973350624271181902346891498589165 0.2843981941175957548515652518356129 0.0036022007179235187861399704621463 1.0036087042656832049413586457982108 GT 1 -211360.0900199138611031691075534709157497 0.0256975267199275598623254832174327 0.0889398729120773603494321893960704 1.0931463827059546482607388633618998 GT 1 -100870929779248651455620235079847378.2686030590138205149239130856363675 0.3491761117974624365076377926448075 0.0894994052140559739331318835441226 1.0937607265626899448854999730321100 GT 1 -61493296250021.9197295668934263308338819808621092 0.2057020917213791052467884006218480 0.0460147268096099032270363296354896 1.0471070445603487130917641088697649 GT 1 -11850733111532406483538008656230.5666495290392709502571972137081510 0.7823386849974272114661112742267408 0.0562738996322720682408131835191462 1.0579193028532291406862164107371378 GT 1 -36514550538988291709385.2762800143072496692497225627138225 0.6043650590097751387543632182322273 0.0975496472690313669030748468754781 1.1026416011126634483145068019569709 GT 1 -8064903031398658.8857827473184447014905639037628036 0.6172571591653988831777995147670154 0.0221760340043701003040723688944628 1.0224256190176593896885852872328053 GT 1 -138104333826988149958219507.0340432205767269943698410429456723 0.6289462755174470149028919653184840 0.0697709391238116459541197443590132 1.0723244211447907962783061827653456 GT 1 -10447680785518821.6551598868872947788245732362552630 1.5176176867175043225121813376823582 0.0172534243867277901309773227941734 1.0174039991804918780869413839027730 GT 1 -7732.5875519578264494757952863701492921 0.4392949687227638899027398434194597 0.0980420544770416908760068302267805 1.1031873835951647086031099837821851 GT 1 -9893064756297537.4407621048265874161905687859919300 0.1041122279723873067282036976982340 0.0552566405537654440853540221184656 1.0568419656777606663438785649440885 GT 1 -539218655221588889895825084931.3492745918740163660454330974089688 0.4953232941677565284352136557440316 0.0178726889433234893500985108497380 1.0180343343702471852964951270193798 GT 1 -730976701482711573226781866428567964590.1994066949494967221975619413603154 0.3303859885790735554949784392019463 0.0880499515436075334420858081539992 1.0921700618372093992162017725634626 GT 1 -104980745270.0448694121213075609125428473378621 0.8862615196110317101962010749744256 0.0706104596744368018279252462742057 1.0732273166171370849822587208576914 GT 1 -344577249304689341353916902265990794946.5327106062923097642371228062429954 0.4311285094019601598111403802619939 0.0744933029257557073366067025587890 1.0774139108259443054215417619834040 GT 1 -14801524154.0431729807866564353344363082882572 0.3247042731667869954699220916438845 0.0665965777523986813727696418142954 1.0689177790411726050465705474059193 GT 1 -384876.7581153957073840171248787893399736 2.3169079408024786722068081405817023 0.0542886556039411844016661983214837 1.0558178892664578230721360616110927 GT 1 -20737674786224265590147277099703.2236616744434148826217789304623976 0.1369784587451275826689103985549648 0.0561939886272406240316395225269471 1.0578346303810818970125991230080681 GT 1 -2681978802626615511066449851.3086300936411365253747190623458266 1.3130595351348642895789734901488602 0.0929595169434547425805322141526121 1.0975681958426218900046180325788574 GT 1 -56638607746765976227.4152999017750393515473700054689664 0.6554394584350089350428960217319327 0.0658658084333874502520697102267348 1.0681351770192338512751033894733813 GT 1 -172338859195761952341865.9611242705943903173842979375425148 0.0060255386612361703668113684000466 0.0043326113457076237428902484610252 1.0043420243045447704128599916816146 GT 1 -27.2338630895711301643778806776621165 0.5609772564797648015733582415076295 0.0910457122624683618131284882756571 1.0954604745867350663398026186805814 GT 1 -5633626213843875571813.3304756690221697313722235011554879 0.7121855683559568278606565556249561 0.0743831394671728416555016910196992 1.0772948874811651747042370719615532 GT 1 -1756944962461019763005917.2221805316431862226157104415270762 0.0710666837665560354228561793630104 0.0989118051619316831752824468881568 1.1041521406614218443204711964866262 GT 1 -205864.7510993420028871099930482874263940 0.4286996695693819907079807735606674 0.0155725285324668049195755188156716 1.0156950540407952114697132233837982 GT 1 -13796.9478229724458167079354292261039117 1.1039306506681666318316942032613727 0.0043843286731891652242507593659300 1.0043939680271952917236063071864468 GT 1 -1660061940414899871995720853746553462661.5097865986871402166804704080544761 0.2663481991339271084538702483797033 0.0358407765806077597081967167644957 1.0364988284883840385932476052976409 GT 1 -288882410659.8403306280857235426131473730931658 0.0350083164202966941062861825930578 0.0914066397185345004171758141023489 1.0958576333200466994040746767316181 GT 1 -239.0519536468997908443952396095685865 0.1194714704260564709454645440341476 0.0292255384302756539920500634880764 1.0296611120581991383058243636417970 GT 1 -48482669547074076754977373568719702848265.2380286173718142947567804023302267 0.1763312499748496059124061073714225 0.0258517443942781562501065838366226 1.0261917737752893356247663370757503 GT 1 -76543992494461090664438936297853242391.3206768887956935287716851652533146 1.2019716217151911935581575621186011 0.0864885453634761603563421907931042 1.0904593639580461269100968055188917 GT 1 -1375.6110310188777046130618643488273046 0.1944279510187863423547906196022349 0.0453422149509554492994440171121097 1.0464023429834013561652681063256339 GT 1 -3846100582578539809364161840380249884510347.8562749719229086375962258058845387 0.4924683913489488354562708649113700 0.0404377247017851025153820456469820 1.0412780617341247387358560740133843 GT 1 -27489816626782962990204558024209.2250471597426877827085750709814491 0.6170055971513663895105855628651955 0.0387448773407414809899395753599654 1.0395154290121050945684794284812576 GT 1 -1365467113412934.2044526858648388839136575892672554 1.1642013509684656271687595672417515 0.0097214140089361204359882766413801 1.0097689754480792103556403788804533 GT 1 -91519778553399499165300132288883226539.8958794287279107182682348472586955 3.1417466175143733458756590129673018 0.0071922598211510915499031349605579 1.0072182488098332331487390022482683 GT 1 -9972.8346300727518396912558364018405818 1.3860178361324962006640449162053675 0.0887533647989579671604309057863216 1.0929416881752310221702415207071502 GT 1 -85883567369989763557761.0066666368547931566766167057433592 0.1100753851656979726741466254095327 0.0831563625976064311409170165132574 1.0868183366386879498937984978542025 GT 1 -389316429842155433392396159210177.1976954813613458175503857275949064 0.2189493955970031603512232049027999 0.0751063960852700059278517344430653 1.0780765708802273267487712657621077 GT 1 -22111924374.8628931179558816853194896218923253 1.3059501921489657794324291016890296 0.0696580225843794501247023109022502 1.0722030427751968085165385492187755 GT 1 -290876063073419783607249148729832.1248101471983531838920685463203965 0.2706154513812086917928427756337631 0.0249386174974157200857575608051148 1.0252548535530547125056178489111686 GT 1 -921054866865322555065595529039435757465.2390817062079866190046523370797206 5.6351367718374701109103202944746999 0.0097803056475507798963970714411330 1.0098284469853347766428677845059096 LT 1 -49003279841.4672105854696148739193887318699090 1.5063394075428589075467151281531369 0.0524800697971526521673914675913019 1.0539073077318994775727833903690478 GT 1 -120279664946532091795.1148215938931169404205440238971535 1.1099229380202008300945897148516755 0.0720140600747324614954736095371916 1.0747386972533128031636141259049610 GT 1 -74963373310550970228682475.4893112232312115927381407238576884 0.9139920530403373783568845875825505 0.0299087755324939298703216876017133 1.0303651660639518088749397090865440 GT 1 -8266434569661717682172.1978409811171982105039403787006923 0.0392938716495627405562102780744533 0.0376491912572963795597658197991516 1.0383762287382289218066537231380654 GT 1 -285511572982914.2934610657876002756719903092813315 1.2176288919742885173750214436120943 0.0692388234861234296372165592277813 1.0717525582284803530638897633270806 GT 1 -3388589858409095020761683283074431.0495321985675639410048915638580898 0.6204475326350245746598841726932705 0.0954542544573823477451450250077928 1.1003223999225144395312318347312428 GT 1 -77115461830247895475.3316577578991815154817747377634251 0.9466683781907595542716019912823556 0.0186230856126695803422015949518182 1.0187986787461393337029484147786849 GT 1 -961.6612183576367694404397959715836975 0.8385459723412890353128013292679003 0.0655471276060589665138504993342831 1.0677940841832995695468830743226581 GT 1 -35128284157710263919134297247.3489144981609310824570374226670087 0.5502952469298367400870640636784293 0.0889838461062184534591536768702318 1.0931946498335262098371883312325985 GT 1 -2257547842114362693917077690.5003483573666014533253990204915993 3.3282960398240152843363311520753669 0.0193794106575858068573982728137872 1.0195696533074645845426841790479638 GT 1 -15292360714278441618332310027638962657369148.2402483848092816137452481971935344 1.5723397477751659355309292838427431 0.0124193490387308339510283933676098 1.0124971136823117761036865791170255 GT 1 -814714765742348625866.3128255220034257852118802256149993 1.3095674847885879297204629330476837 0.0965545151700291230155991753970129 1.1015395085345323655539217532379138 GT 1 -26593162593463294.1407295781182610629102111756974752 3.0648718952851358808611332015612775 0.0956480165816449857080009511426383 1.1005366321833012352485046679715352 LT 1 -411912116776955904609176250623.9989107575817106787852193012778084 0.2443928851452461667519386827847246 0.0914382615626621080009838821363820 1.0958924370020803295717512671673020 GT 1 -42168431313434824428210120929393199735282.0475540686087670551122577312538721 0.2983753288312079962352429722881334 0.0897234928692678607833737205019632 1.0940068716357001491130538627986260 GT 1 -246009556461263761718026670486505502183309.0756484314928470046768540959922789 0.7323370627411610250719299353828681 0.0286976429718105461233626578219931 1.0291174719030711743521808376858594 GT 1 -136401261052565556951307.3956010680710566723339626360969231 0.8332176819040677014244538822745869 0.0783911232198556409399739346461906 1.0816343571639972354597149594956521 GT 1 -1402069867914695166.4776681143554283199322855820521458 0.5281724709244599304568521872116632 0.0700931726562137494719913169491323 1.0726708835055958081455422222801397 GT 1 -878404.3935150309834190930442987318383765 0.3815024224936598387331352051638739 0.0877893436516113927149074118880742 1.0918843327420888493203202168661113 GT 1 -942704397087427264256.5393397259187205693135180150608562 0.2563151057925792421581310885160970 0.0193731329173579898486208138940338 1.0195632515245510898266271105760752 GT 1 -738878050390267751085410.4581627774975455236616995510053913 1.8177223416347432177621991830996185 0.0678731235236246882602772277249859 1.0702863400035352400622112131688171 GT 1 -48387009.3311860739067753968212213114707814 0.3054445814946906869618408361358965 0.0959378189501855587523837292836431 1.1008571366083554184260255389199584 GT 1 -18650701143233.5160624076916875801291641695054462 1.7353817833619302492455463559837018 0.0484922167016415525288586437217381 1.0497074122495851933359387009678831 GT 1 -2224524696897573737858323565511979210307.1997769030449967711832921237358731 0.4790799919310718866144305508898202 0.0774375844924334409034715264728803 1.0806002462694345581197442400182778 GT 1 -756637224645545983684226409010.1995783707091276659563032073081423 0.8345606561508574982565694861116936 0.0452909376544162791941550814770407 1.0463486316742085034893593884644858 GT 1 -823.5648394055188933580549471074019606 1.7799775251202242631518052753509699 0.0300753347932723383229749840781565 1.0305368752361025726882496174636996 GT 1 -550971880123691434316299079907169984.5083087529207329906327917728139472 0.0524769610814235920098971875550355 0.0677464708089269073013235582550240 1.0701504742601412377099311687870913 GT 1 -3403421019849.0120384384965772880485869457597311 1.1469094781576979544905217656148824 0.0462533289824159076543025321652041 1.0473571868036282826258263168305495 GT 1 -43614352037409946065777591763614452914.9583478690916137201151030511854271 0.2120285204361046047142093004829881 0.0211457388937005029959341032072838 1.0213725125930891432022907650318325 GT 1 -249697.6996890309023707734902776560390851 0.1180408684470974081160364504175794 0.0583400899940394597793645260115048 1.0601110993103565641257565455588516 GT 1 -381822144865687982527340591079390544311.6172450083283469963412279815759502 0.2393573473818841271739767257208327 0.0112432498279114710544410749772968 1.0113069329480134945440860973749925 GT 1 -2148.4675993429547572095101851596826023 0.3062333594070352013396494674974437 0.0940402767169328370853679019749474 1.0987604294647878768757876721167031 GT 1 -68239262879148093196717061968.9499539683547838479296536467661006 0.1145629871157752153211268148297847 0.0375579292078379677587206956678703 1.0382814008214206947354775955216004 GT 1 -20945283376423.1566113590910246813332982337581784 0.5637894598367230948948823878809936 0.0054563657089853488280146784021323 1.0054713060437641080762249878694754 GT 1 -1977442537041739574594480117403432271703345.2682385142817576858459291763649221 0.6926034546834713335575244542728001 0.0877563183815990117325223587836679 1.0918481298409487834224018211307391 GT 1 -916737883188.7594943694274200240834691878207541 0.3913369547083568679286215178229292 0.0081765439089157321885327522151019 1.0082101551855023119433982095095076 GT 1 -9923753949461895817110539810209668164156558.5720390783311083175393389761905562 4.3236024346936653519989904391662704 0.0416542513432108975906441936019968 1.0425466593825850137989256067040692 LT 1 -1206748525239655087684414.0088950340834313046682403350876211 2.4897042261495543746983012296202191 0.0509612968503074226412229034279701 1.0523056981166801338843927171237271 GT 1 -589619460215739289692064770439.4274743648969931950977285894158630 1.0818350971194577843056173275444067 0.0109050136483343021700632207249185 1.0109649091485259807112957326193040 GT 1 -499821060691.3158258971268474910580423506455013 0.8375986355899869647297156817482889 0.0031680609903788973088081402238222 1.0031730899197103287006489090875948 GT 1 -76147153891342249308616860068911154.8250074083807887219743539936324547 0.5811438044514177387923338253575448 0.0727977841240500433372721477607348 1.0755835971018688836677916525991338 GT 1 -31860513011508567593784368826474873.1863317819833243829268988860433378 1.4922409128756268594588766862907200 0.0376085012702407155974568915318337 1.0383339477670009769617118990797847 GT 1 -3817291946842679478268606.1176898681586879702276039190224789 1.1190439046365993055942746051974006 0.0822337974244013321731195071115796 1.0858126020886313849293817030331680 GT 1 -337.1166336660365457189126466110118476 0.0417109710890809650110459932476096 0.0800243980619107528975694511555202 1.0834081289232144177335327195960329 GT 1 -57935119947137656130510546507041502567.3230716389220078511477300268379900 0.1915006627522725715906591100073137 0.0029259131623456714072995239100915 1.0029302020141774896670320286181874 GT 1 -2011820895297656127664514935202.1562720072780445176659535582468574 0.2777212355837555023621923435285764 0.0157405819018264833280088472112075 1.0158657803971889857364127341735873 GT 1 -30430988897521000557.1898919484120421040897658156660369 0.4470207720452539780599633248596620 0.0159764102438040764672243113150274 1.0161054088877718968801042670403484 GT 1 -3274217577340440382501061318760591105.3515019022465146313300075969695960 3.9237591544785080197427258337256241 0.0173493121789183027554192467440653 1.0175015751709041542752939680690163 GT 1 -143990661460280901294819601990001188.5096186673973736108115881478226736 1.2638559470374611006137053940716125 0.0952852518567916980754590358850718 1.1001355803885976898356143147050731 GT 1 -95915921203457297597673796831167.8179504940719180328801734645670956 0.0439065329583021810602409717499205 0.0177273206102699492448695654523961 1.0178863315866737023384578008177020 GT 1 -84506335571847.3642300510532484048158893595050852 0.1182405306819488471218009705382926 0.0475582061396223984700839105829120 1.0487262826565028176678228799368876 GT 1 -66408932322452411753763819480162714478200.1560985105749271250977324953646287 0.4294028420306906248280773252828862 0.0733834890702000587486026585275492 1.0762154873262683700409637713378135 GT 1 -1013965628921546723233064220584.7924871041491483430386294246906289 1.5373259319727729217478731680996154 0.0178220826182654743412637534585400 1.0179828084420599020129732446702944 GT 1 -998.6554914588723198718496587313489136 0.0736482223826830937764761099339421 0.0877702701557317259114617002848163 1.0918634238694014108335156735170168 GT 1 -11.2898537909980466097621730814326202 0.1658465132151303687447268321862673 0.0361275312371716375288742182699288 1.0367962869376833776987919831281980 GT 1 -3717210086824696854998959284242673.5906640054226100014824195994860302 2.3976421123551913900012544103441657 0.0992239091922065722513388588229943 1.1099585390771308332339739384428932 LT 2 -15768042542826597257202042.5225948689558056504053619546194050 0.9028758906847057580774434819074381 0.0230403641961296344056524544578872 1.0233099422207918118031988594737343 GT 1 -3067006.7498511931313934014904464150266895 1.3882715387689089450881589537846771 0.0362883993143597928273385360526511 1.0369631985449241025515476651665771 GT 1 -114421496525929177328170939166.3778375959997967781391935306157017 0.0251229173552253624530409262577585 0.0381684963206348853797162504640039 1.0389159957578031281856161405998208 GT 1 -349922023038122746705023072692174.8200563820083739302549781545547149 0.7292753103763353491371364483592187 0.0866026325006060468001906131793428 1.0905842603249538163730285760657775 GT 1 -304140016381659975207357098.6706238353227225110288768573651815 0.2390966309584756095810760328215664 0.0841550691341129397506432980491851 1.0879082180868043124358918577850746 GT 1 -18682570.1348705261796483015848690419034848 0.9010574704524703205008090786901643 0.0030328001671074811319765485297056 1.0030374084251767844972197699343889 GT 1 -2809428338038261759276334782152895292.1943340929887983960083608236745714 0.9906780983436688755759152059280511 0.0414043822655937331654234146194210 1.0422859637938589990596456778910587 GT 1 -2695048351211284071461.4174834051206473354936969717505051 0.4631452855645670617702619193442862 0.0516545151498645127113642270613216 1.0530364076216775390499293398792477 GT 1 -136028059397956633828361434.2731514333528727611020077432072502 0.4778347460762403860646460761759586 0.0539805818327498063066631596927191 1.0554921835370680695250523977685288 GT 1 -81241641028.0826161367062804560412777014504982 1.9396776254692387950411473605166325 0.0258006587134251470232893661964272 1.0261393337682328944032841139263604 GT 1 -3862040301461168580378.0077965651729955250767970556496742 0.1519917483699456029473901465968357 0.0658000750921370610626234492599574 1.0680648112953540673441399616775041 GT 1 -52927050694029686541891398.5184181298802826026924662808150370 0.0729616121175987848869025309903675 0.0379929589733864126570727645170890 1.0387335091887314641733402307462387 GT 1 -16430752312419733701259176481164007.9622824085783926243231521741545689 0.3042574497528422709610220731612437 0.0241099451976949386146858139564624 1.0244053476825236412733282378323612 GT 1 -51763396076010814599573940343566320.0572966232242908733233895644946839 0.4360468503124633707271995471468355 0.0914518987411735338026983106654845 1.0959074467480117720860696871529283 GT 1 -608915357224524015264371309007.3000468386202604509694677940369424 0.0483161290133877017316478351611538 0.0743215080728073958852083033714165 1.0772283055667166586431893710222029 GT 1 -1535.8110929422249606996631218029270647 0.1249761854834912535055604536542764 0.0890592078052355564756726991244392 1.0932773759366011167589135545007512 GT 1 -1845808862757.6153915100533785665501581755107846 1.5901448276028027751080848323451085 0.0908517990736865232335774822923996 1.0952471607711210215141196289742077 GT 1 -67703328277813990422493713784.0798019008932807503768474102393116 3.6538123880704818333613923380977249 0.0921789457431492286985326443932252 1.0967079966126657376435210318049280 LT 1 -47.7996352663781985651584001063411404 2.6210328505555865755318981068785738 0.0223180180105184099594393544866034 1.0225708336170259730276838200017810 GT 1 -5.1013558048834868069643844689330689 0.3079253314461898751755895621934271 0.0873170512715973304261021675482196 1.0913667218641232344831383101416863 GT 1 -626297762391128491758.7396612410254981515606754824704804 1.1458727345414844165424238260564572 0.0233054573986436270033100614300281 1.0235813241337948156466401580207371 GT 1 -31754895935091799692417371.6695303199351640022098934376269070 0.2916581429022953851183541564388379 0.0066391642870408319279553971525930 1.0066613015747185264977962007941076 GT 1 -313417214534237327898325164181759530873575.4210954216198271806129584483491855 2.4259280656749309042925621148156497 0.0559192273688213344627278863329030 1.0575435522691026153233733845484563 GT 1 -251962377847864289671552714367752598743956.5648153853901372550498908959470060 1.2037493094878440629003783040191551 0.0404008409907355725345689069255807 1.0412396244141632938202201768937700 GT 1 -473956802192687735256585811588015696842.7767483867848399014254073206716213 1.9743344263124610538873306242522244 0.0217870904594930467777230019588032 1.0220279337236165410300692485053640 GT 1 -104025817892.4305128341746378345410599937412392 0.8108752104125583912451537551633286 0.0052125610836238439032285216058072 1.0052261938752912478485193244364853 GT 1 -79525938657363608003281286992576.4703715165383254161102553167715054 1.3726243860487291435657597360193420 0.0009691548740061468963462810343899 1.0009696248082416227513172976415930 GT 1 -986334794911.6832253182011836595648624221769564 0.3242490401323409144241950633665142 0.0657133443892472817304083272119469 1.0679719760522687289520217251262868 GT 1 -1814537781140036113367414637922401077841750.8862867256289309945884363769155431 1.2806301423132420444586842734274689 0.0775246911297870846694318762021688 1.0806946688779996346382539762229209 GT 1 -3319.7082612765102763325292575552303061 1.3775020955640921419901619262611823 0.0257044494529703358131000750905703 1.0260405813815202342231624567141872 GT 1 -1365083534992548930153115923801717.2108553716790794087863782733218867 0.3452259098992057503009672248304501 0.0484751444534743674322403396310448 1.0496894700999665659638897634439415 GT 1 -422199207785494272.1353401898810249880517063837485335 0.2138637392562598364077610566511817 0.0179169311994561877772137489130383 1.0180793827587435299393476169397811 GT 1 -85747511.3292813143411529868856252186623135 1.1798439715674901204126430959938760 0.0365318142783013486676102170753280 1.0372158111625457872008231400013095 GT 1 -3.2543129216727477585510854621561793 1.2792745520905969919686330787805551 0.0058238091358422355247931392488967 1.0058408336427655775070702446020413 GT 1 -780346181681725248168326.3170384750544818369210150174274566 0.7314863517350685792836982156056885 0.0114451877133891903610149744744921 1.0115111879475935212441458208632490 GT 1 -2469137339624724823154246050251188481440.7690355285758031158603546931265072 0.6947781052800182118444043498608870 0.0359911196197739315919959901156232 1.0366547724013391224299762594437028 GT 1 -1759198003814.2211320722616524288297162577612282 0.0112488087622063540356794834023500 0.0630502016027061280042250054043728 1.0651255751296044675433664264121042 GT 1 -204.9623921442122551782066865548845915 1.7635411682846602947784599765875621 0.0950850542303357176211113654986819 1.0999143222738064493064259810164255 GT 1 -2257990083480267313966807382822664238545.6815000592126127827932829173296009 0.7193816248509619551084781013161369 0.0833183820531624472160755683656018 1.0869950666351851719008856011875235 GT 1 -8388662612194756269208783584978160057450597.7912861346144247125730993086045349 0.2849912700642221320535569512108592 0.0240394862235225367932038273405964 1.0243331505836911103954479932816147 GT 1 -226459303427301762276814064619449130.8851921182670501557781027482825610 2.4067581897255092445595136716623952 0.0931647137262105930657470184274116 1.1025763251879173859871413371645679 LT 2 -6870654474903564220365983993727969.4058521793178232404832945681944498 0.1015537131542232181269608568672283 0.0295051626221968051873409306741445 1.0299491959361099874094492215345720 GT 1 -32114220905078139247301648485357275204.2012046170882333740796190311017210 0.9423326811878620257004775021029581 0.0714972580256110523128654014572053 1.0741819450710779546991072324390077 GT 1 -107047276093365.0671920119613781202086224788015088 0.9847788344253884571112203279349443 0.0326435204164079876186854289513534 1.0331882065975582027282359655213054 GT 1 -1375761903884884385.3085321128436533697620586585688020 0.2613258880284143808852225138560365 0.0624179336676079826362741400994954 1.0644509875475294973385367490299898 GT 1 -876551381973442379435624569699004148261.4048242877547174984106603993394741 1.6623596059099734141576116882922999 0.0759146162312110346492863739728532 1.0789508049335082581253682871157790 GT 1 -1245555016649745130538.0094295825297149785476952993905885 0.4576178069374676013418592795922750 0.0809846117101966482806556317256350 1.0844524121640241144971695681610926 GT 1 -6830166129474319398572611008960648643091021.3410858864801678149015020144314611 1.5777555021003389954085494319925352 0.0188418966510692871392021382352954 1.0190216669092333866169323150039905 GT 1 -99373413.1709383463884430248453936153755006 0.1944581351479769936184159504233264 0.0929890744886213938853737247977216 1.0976007831717677610726095179735186 GT 1 -122155.8775400565374989597429930891411745 0.1576629051801244537878810656262196 0.0785225675323068950774125767700572 1.0817769921692214309264465531535507 GT 1 -2334402703048912117591753910848325657.8828105609117692099110199013216476 0.1223232754160157056154668382158945 0.0447341441518767939343231450959813 1.0457655941557485763488552267954423 GT 1 -916496537565781817699257226797845978262.9747062050224633037334998151146819 0.6962224633460730808337599449834592 0.0059576338228015121745155362368088 1.0059754513252003659901656354240079 GT 1 -64677947945.2849913619494883206148916527531333 1.2050863743397990820410777933472088 0.0527443770039026945672542162177926 1.0541862929742603752796746636620272 GT 1 -4601129701596854588202422575616.3919185353232624936574405703464435 1.5417951309495461218507406738270361 0.0191730021362509574666253366554867 1.0193591878089795901443872543373562 GT 1 -23622831683392696174620008.2867773118447254947575205448539722 0.3911345213656364704692847087806307 0.0979522412736289719662544397600652 1.1030878127309757899546023357272962 GT 1 -45100917754804593097.1160786348892325278055956344126077 4.9146134476606459241100772497294529 0.0911291798435882163360048876123280 1.0955523069426817995184396822030474 LT 1 -2870439924062475.6057213701637317432719536169848639 0.1335330322482749861424054809345910 0.0603326464285693489018014219868682 1.0622293455274294218728620255719468 GT 1 -51419850428845510661632689.4513207273479517073117111770442948 1.0233832335811123056464296060313918 0.0595716654149492154955954030187460 1.0614198324159739704930280274766882 GT 1 -255094142409769426393.1978712720307772472549281817480287 0.0118391952158737359139703730607673 0.0238394274693133409952777294401852 1.0241281850656063336361668775533167 GT 1 -209.3341620510101621860803329098040587 1.8583736798076413804685485363893298 0.0563719328263925354854082308503728 1.0580231871118326433258530280897574 GT 1 -3917120610935783386285001647611309704.9817291663945928550455069577078524 0.5381023031820220893796350335204119 0.0848508907315550257656299568604642 1.0886682660341886472099909398124005 GT 1 -20141921264976287827.0769061317888145756494305442628242 0.4017773784072231817542149423652125 0.0334145882078759771996524578461724 1.0339856119754176015700154844695760 GT 1 -37082821199732633.1480918924205632001877100120734902 0.6082179418863943153259384066913930 0.0788698728019256211053211227618565 1.0821539636756170899862060148878677 GT 1 -20887991761258987748347515940183.7409227432093395045176261099897907 0.4466787593297937992616519219682346 0.0824306997420968171688130430307326 1.0860271702895373619164214169719212 GT 1 -9757151525595271282422078521164810123444.3660317654715238214091967929889588 0.3123184468078218975050037007467740 0.0747034349072488849295793365002606 1.0776409819433250218016238555168822 GT 1 -13175576090811663645591026245468486546436.5360182143882917952007524538601571 0.0225916089027154704593165092699666 0.0731026702032074185175108431236882 1.0759124748933736599487933879114181 GT 1 -6227526041692633095036728971119.5183269697403285217634099095812399 0.6563596465725564383757209804978532 0.0261907975484054100410722682324749 1.0265398852354742060343771270697484 GT 1 -7.8534525329823473213626483927759378 0.9913201377144803100571864852681478 0.0453617624521939993381449791836981 1.0464228191180686732685744488919285 GT 1 -2134142.5993623238337795233546027739447756 0.2420407634302660547592392310101129 0.0797906761720072244490665824934425 1.0831541089191509749381325727231682 GT 1 -16265692576.5872181401739312512565047509734790 0.3783573417623702853905005887832863 0.0289182055325345366307984394407012 1.0293445768879446819330944541885841 GT 1 -5226678414770217343811233953508851248395254.8366014410811581194428459162132164 1.8441473727938243339554629509542054 0.0926723121832192209737237015863766 1.0972516065557891880760831279543840 GT 1 -1113603944472831262.9471919570520258606345015812129687 0.0534659622157857246306555318506842 0.0817193972075060987107894138359073 1.0852522675384986446976518138631949 GT 1 -4040790691944.1656416467814775815138690755432400 0.3929453988667643772939818199608809 0.0079264060506573263307791547279524 1.0079579870000828057060713506235664 GT 1 -135236.7194390008323623459803682923678686 1.8134041426834800895383598247997646 0.0052597522598944882022138454533238 1.0052736334526301309400808837550707 GT 1 -3371205719868683710177378453429386527688.8744444295558709975789084236005976 0.6306400207197927244310475960583059 0.0126097809780779351851514753339732 1.0126899589974823147328531616527002 GT 1 -355003931617560028080088.6340777798068247243068729529522845 0.4285120640667152340590360165385665 0.0332245279405357521707092616316259 1.0337890007068852212817695613146702 GT 1 -356288866077549712776272282.3359650614507306959280397527247082 0.4505104537638681661401482689516982 0.0346387657695275434634214759178516 1.0352529116992609733753145063634250 GT 1 -15824469967619781159596.8198108577615325122578991202054183 0.0438401581292060222602538049311409 0.0567805349737394731457103693121090 1.0584562927515423865397066847417167 GT 1 -13786243665344747.6953321423453567190221639724850663 1.2017047199948329646151670292345610 0.0195247905174324220677343718154079 1.0197179172119612802416642210027476 GT 1 -227019456671222094050232002637131.4271036285037413140925284671375003 0.8384616004014855813615727215787399 0.0053271415679091862755955794346484 1.0053413813807315358234359845742920 GT 1 -101502777530962720.5606405797985282980015222589349404 0.9125027585943084828665725982142226 0.0797409403426959422292170801572288 1.0831000619930862041317719881320223 GT 1 -138801866796628591520786180.3518888784937175992712351475880963 2.5821772250563539838544565608577761 0.0508902449909510461122993220566071 1.0522308337307211092738065106397571 GT 1 -14516765660195394965913215471.1293453474847559806197692023426475 1.3165056939523482137827514415230802 0.0418557529645758495835823523311745 1.0427569413277664497661807713570680 GT 1 -198407298501482142794205475583709472937.7720899391019102541894821527004401 0.2180804263285467192265272234226907 0.0523469173219701927273109431597546 1.0537667902440537154007576706917447 GT 1 -3699.3797364769804260190534408977024768 0.0883423490106648532164989440949694 0.0025515561194344942286651053317126 1.0025548168866177775980888035196910 GT 1 -354165555352193719466892072577993191250662.0493634152114780934638235923799090 0.0040216251531778006721180578285246 0.0607436523659120042672969124969145 1.0626668363564976140428894487428334 GT 1 -2091912705527551743922956442681024143.3265873372660920967208730312923555 0.2661238280154116290382443993543552 0.0292378972459267870796317152527354 1.0296738430217858110766968637127082 GT 1 -7.9197711245123297244085305085032394 0.4037330188971061387250186972807320 0.0878817699624747224086446531675088 1.0919856591110699484148364995677527 GT 1 -4516.4469286076995618464231340367620730 2.4452533968529169320272489685467156 0.0628285206393498417691955691313726 1.0648890045650192719407253908791118 GT 1 -5.1668595248995526015165304436296140 2.5513917873400859268074998549601912 0.0004491477669278399939406152027008 1.0004492486639990353388987913920645 GT 1 -256158628335560425239293.5066658437799326038994619784034693 0.1882797672230859921414362585269209 0.0716475482464915079219858882050568 1.0743438211524399148185947554694576 GT 1 -2391963546127545171956445884496443883.5855869012824860499788821401155360 0.3545489302073213203657288867116294 0.0824255001701882227643659119963084 1.0860215036252592167460110754575751 GT 1 -21246611622867.4701152017614171394766826046562819 0.4439284645351452140181596240022845 0.0953308035376028323162015921732659 1.1001859308749679960145518038217087 GT 1 -146.4719828662557786123979285009434716 0.0532103891224513163275810698587997 0.0135544650121598617320395052288480 1.0136471653955252493942204678291477 GT 1 -2382186732559445043633977919.2500455516834202413471017438687527 1.9213711925604608290426923076565519 0.0116673567390508174755119746299740 1.0117359544369285670525957561449779 GT 1 -158841115029752198049893812329091.3977094159812543732235127832613391 2.0971262417557983492542373129323292 0.0026797455948118772678096609332590 1.0026833425404081214934774884382253 GT 1 -68495843337807839215407763092407589218.5831029390354446647452753757284229 1.9318587239338000559484556489313217 0.0286173402984936376291432092239625 1.0290348000621179495847133506342372 GT 1 -4965623131633534.6266888604344719131315289056946540 0.6280104976586493405215437406047181 0.0234682691311343328363620634623694 1.0237480347039721480226640253110347 GT 1 -7604053539976623691427495.2059542637357613580283101542075382 0.6130589869084147534672775626766129 0.0377243743411754651301357291618222 1.0384543561946261489501052644280878 GT 1 -279962298226006100579721221074929879.6661930467866356386472355196740826 0.3168258069830064299073125231621898 0.0142058469556210800937724271064205 1.0143077159068028657403213624885466 GT 1 -3520554952928333204002700055803614.4129930226232975273306020414178296 0.4212781297833250849720700749202042 0.0347285498566584773521156033999057 1.0353459217139803507101690209876244 GT 1 -191303474397790340567676.9070056817226332075528304313270302 0.1484987629915246419353266164359566 0.0876093019160679441092272099204208 1.0916869836217558769723132572826091 GT 1 -26231012352025501918771.2977566536525688203654856358173845 1.4803992878255491605184285203685557 0.0821236797908999686968365768202308 1.0856926248792710305410145543724516 GT 1 -579649220618445278675552084297145233682.0131882983102688400625666769989905 0.4568257220597268951761354878961867 0.0907167736680974122600064547561980 1.0950986532125590156284904051547510 GT 1 -1816283704485610582890805771089.6326271732591753177809777607177862 1.9343311619322005827464549482865785 0.0646631486892399438854679562531493 1.0668485457931033300008738344014729 GT 1 -290116754728594549831529798247645512226.3537138370916755868500189763594367 1.3616985914490119873499162975662862 0.0969161544357004277166928057313500 1.1019398776449781259932188108974942 GT 1 -44903.4222384149486766230902527540590909 1.5377653462026011754416732458214582 0.0101126606423119001188592326249831 1.0101641409576545329980358354368673 GT 1 -8236080619951871960917221.2691436647647104345944028980474490 1.1401651183496007887450142362580418 0.0188382434941817887029697128435879 1.0190179436050338632390152442370302 GT 1 -4138185282273556895838751901463799470246.0026880462312139212720290308360597 1.1288062577642238335593607564699957 0.0344420581440673138866145161481723 1.0350491666346545971702709056140807 GT 1 -455824688755043315175262230046418.5052364702812735610940120113137584 0.0566152145669719608111386161915082 0.0795841042174469085633078294183683 1.0829296504544654703793271084611625 GT 1 -298872344.3630966647751863470876638997097925 0.7616610475886889155123802068554845 0.0236040878663614138933234316721357 1.0238871271439124610939116857429499 GT 1 -21875169657915.8340097632777683370762350013784738 5.4976480086752007563945560637389798 0.0168786029922159991662214549521815 1.0170226700126393625117813286649188 LT 1 -3621006.8860405712898212435486158055955473 3.1341621025374914715398762370146136 0.0867486128313610790514778833738944 1.0907440943715298271960529520277729 LT 1 -185290172523.2445846709585993566739321027087415 1.7174918076399426990065659178654155 0.0824357869887498550640227516462780 1.0860327145691401995067768986069346 GT 1 -1450893602317609.6275835944864330787851496548452613 0.7135407683072209831333381498762251 0.0228879026535171048059611997270970 1.0231538972401133373950470245092577 GT 1 -24.5674128902969506317874248377574618 0.0530132318546795567205982051044204 0.0379928921316851142098509030199537 1.0387334397072244421607772989468127 GT 1 -110512159111845489644406.9224415269411079117299620435512278 1.2410375431940071417615354023392569 0.0193472580248653099449131766121139 1.0195368657992575793155877048004450 GT 1 -78338543479302836354419.9532627799498211540734744645551871 2.1082791368510653557947844507244060 0.0429535037758091938456154105263711 1.0439033033131862873146225705873467 GT 1 -59649404978504926574922502135985.8211237953988108881827976032151834 0.1082995426155255071118858201898784 0.0839623417874048993162372607439148 1.0876978035672623556741853381264018 GT 1 -2702859996832599272.9485560458339077391032141940580416 0.8858652753925691615156999440304126 0.0399786693984475004099812683306555 1.0407997753904846345968652643634795 GT 1 -3768348.4848796084834843039550155783197896 1.3678830363063238558430766423884576 0.0019083811856238142651185291958251 1.0019102044650426730381151804552057 GT 1 -102614515631364178.2741542533543308083695527503093371 0.2031683663796900456300306150534800 0.0144566587779876614625692591522523 1.0145621744401076754216277004558101 GT 1 -517553821827237240681307236539843071436062.6314196023487554353921204510302402 0.2834643663518664116582515534048702 0.0926706829701919059924574479572904 1.0972498109403941419442616266279128 GT 1 -297434198884.2016179110303250517855719764925490 0.2085506228426070834861844143633684 0.0127600464249301420142493845210627 1.0128421550382676519820034653751084 GT 1 -39365329941838921500877.9309864488984098525922897910908476 0.1627930054142198784987199958150005 0.0957922873295432689191343735853864 1.1006961743300341316519734486099000 GT 1 -198864134288147772653616168593780737.7949422630855361713053156328241712 0.4068829504075360370387290491895224 0.0315359677959783472037111954888352 1.0320439344560717785457044440890389 GT 1 -891239372407629996800546.8060499492658942994060650925464808 1.0854452796675967445220530137200601 0.0078889487945298566679802015233750 1.0079202311831295939389858496535568 GT 1 -470327664871928945136.0923558799963366371226625696785887 0.1376810701391593865128369864425883 0.0459171661752404948644286627405583 1.0470047833946222503407744568429693 GT 1 -14881606750663828930958965248394674154783.7134444524869053345929152174713708 0.7265683618030226524110592302640532 0.0301079143189544195267541251018264 1.0305704655488681823552296000085735 GT 1 -8982253997458819781708543905.0455879566776782195495722415722194 0.0756970330154771850512189207315988 0.0205314147267587069920152049762467 1.0207451143188680898810811607040918 GT 1 -12403631732211.7408464859806721724736036564505595 2.6585294539853227587317515047020809 0.0799568706208596222834319107598876 1.0868070689131857635026391799726707 LT 2 -58373538161741617021597.2359767051020892176208794826057687 0.0752541052667601130450040497918064 0.0745416079726117616556251875172079 1.0774661052699686014243347019256478 GT 1 -136590630214105969.9737963711417124100638660329819349 2.5372131195750020102026409458450397 0.0203250716856959634383906081600627 1.0205344681457882252747398443302765 GT 1 -4922990462004950283551034.3884469164791667243697819201083927 0.2369945172689938113853567964288211 0.0456062907629143091522104709091888 1.0466789995475994283329963917739304 GT 1 -5450096795638344512923915106405041030574.0599241307253631710570562153062796 2.0741222065454770545853169897868755 0.0195447317231296973100493148933165 1.0197382557256660062679735634673385 GT 1 -2460.0348617100998501205623672982024448 0.5954518758357488368897975671714096 0.0499756361740160028043280686151874 1.0512676485837922359971037002401266 GT 1 -7599621756008861.8539672287152348371434469580074851 0.4033685277221116954230088125024613 0.0258607849252298025885356566781406 1.0262010542650402177933430673137207 GT 1 -8588064700270.8831862202164878090189583096724948 0.4427693413120725711410758197202164 0.0750377206769144187009026077637556 1.0780023214113801269149462009060390 GT 1 -1467369973332435786381388630670142.6385732721491630747464746720671325 0.7719396205524736965141284783827871 0.0211118382774089031638185088653111 1.0213378802370655120385429060229945 GT 1 -7119080178386446004598325.2275692951503412487587391954682960 0.4458388439494973380150450354937499 0.0578199467397133456937047780797263 1.0595588833284404654516064222327324 GT 1 -214196515005306231440.2737490301275137961058974636273650 2.3829022612176620444266664205596467 0.0886947263115472333596359336850921 1.0971904406912530077370391837625313 GT 2 -1531818.8562223021620842133488145382373968 1.1544133964821399676131993143590623 0.0907724403191661936854841184350470 1.0951598754516728383550679778420227 GT 1 -56006568482147372964073432499460.0568848913453668239483842121946124 1.0915636533171199307051667551786934 0.0206717356984955573208557331376067 1.0208883869323678973550349240601119 GT 1 -128098474.4028876204889377311789353114385615 0.0178114264038853633884318671583563 0.0135172124822243354604393603760618 1.0136094017023236202946636947845034 GT 1 -163539878318018982785391601975049031.9433450712895037079175595053537216 4.4217319925672584115012826673420557 0.0265132402154928964619040511601087 1.0268710548946195667667545308633758 LT 1 -89260713529519929852.3062506830952519285810034107063666 0.5300642950746210358826588557211766 0.0582024091718985944925983852597473 1.0599648992263885073530816277717888 GT 1 -475955342924884854.0547317808612556256088191655371409 1.9749601353058507022220350423044548 0.0916516068654097405658705999114476 1.0961272810926282578354605030530030 GT 1 -3810103843847.8021718309730345226634519396773063 0.9263558067220649601496891299372196 0.0886906921184645280246123358651969 1.0928729136821834826759319143660158 GT 1 -383258743725802534357702364376031.8194492556319434483649367840636686 1.4647350830152496573476661433721675 0.0665577843186688701627726548065548 1.0688762186325911732111483928516360 GT 1 -295442.5251469049687829141204243138268908 0.1449376493709839976989887921330784 0.0308930464074746261029424782825574 1.0313802979577833351166616828392354 GT 1 -217320568242550834398555463332845959.1328515780259853857817500059926554 1.6435014753269653939130112932726090 0.0550301328036897708621304486624317 1.0566022385615326914306311952084009 GT 1 -2613041929477330230215716195922820.4017648499056275138739318264552233 0.1236121290392464422479317405544505 0.0838304503229610740497355888535692 1.0875538335358120880024085249493260 GT 1 -47423138463993700106269141454071.1621823394148195748887208266972518 0.2377029954910311473931137849456082 0.0557228547371255895986422599536827 1.0573355698410440468309423116653952 GT 1 -67140724913137840421667695340400399.1040434293650851710520163298808446 0.6721217131172901298535149365526866 0.0994887568569886340982709768732311 1.1047926289993032629450298123425640 GT 1 -240688704006699525098925000464812277775.3805217031360282402357111771651284 0.4806004876684541325215543716738267 0.0346041506929157532248024322886239 1.0352170552190122237474266638931388 GT 1 -481342690006787981362701562749991660931039.1579049514699895674570702784262734 0.0733317084120824443852135334251747 0.0310038236397155758346622047948852 1.0314946130637749165781775281599652 GT 1 -86151698636141777940424798.7669487558275189084302563794454973 2.4843061910031687775205386528005201 0.0003634767600932874898422799601154 1.0003635428337821700793077355961564 GT 1 -629188015.9043434245315987966213148145280041 0.7724525843134789114215185121739649 0.0942045644797479485222795819654318 1.0989417870422366069716796636558977 GT 1 -273281788624929567985522632409.6090578341029995378637324212637374 1.7175390289569261572212706753783946 0.0313853601193607720874774055753832 1.0318884346520715932791538091468308 GT 1 -3780.0886136334523059517315252508522371 0.5854080865964388916266841089353461 0.0173846751791274005501964057806656 1.0175375631745488874617512675693940 GT 1 -195494973770526642575737546780433971496.9896589925414803467410922807188421 0.7077932356120358562324476972473057 0.0017819129432206491103959549317802 1.0017835024385981703174497356237743 GT 1 -49433769327525835959791242902951367488.2952383568342994749087049589862352 1.8884752125245568638459058375949744 0.0401907768929836743615029985653756 1.0410207401990605400207904993129381 GT 1 -27563826342437845013889.5573278172131781132353654228649808 0.7863666873584879387966389165982317 0.0213909109248832129744908408013705 1.0216230123354644326244833992278300 GT 1 -22105778054753059559151112516270146.8676744116230044734420942921832147 0.8585467510690028848515034879074289 0.0788216740358290832590719319226260 1.0821016393582371166502361796550040 GT 1 -33305185210196956.1953797697595806047241916950375878 1.4417870085641778976873702813950493 0.0701929054986596003058729077450012 1.0727781396178074216172577162716692 GT 1 -69005604536633490912666.3979502932349352788289154714179571 0.0951514472009161934856274917046427 0.0931954164841507684367519489801819 1.0978283057564987433340710884778793 GT 1 -2952202556.7584614281854274606694551344769840 0.4982842090713784152349896680076257 0.0715859905877878564606313038969845 1.0742775148505826985178988235745023 GT 1 -264225124713530.8028414938318106873340631074176019 1.0525427468999994016915936313716915 0.0833428833302582159094188761498305 1.0870217952223628726085734269430896 GT 1 -195762099357949.4425482721558385513612472878718833 1.2081774199975848003856028537284116 0.0795848926730239740469766086300719 1.0829305070845154137731989642862892 GT 1 -4644035264410975668136423599376779069.7126604612127253430389613636189613 0.6967664441914749020537045442813864 0.0264180706657015624122966029604055 1.0267732981483897302518127121915519 GT 1 -2418647835482.5184557075535700341534394512444117 0.2983258210129603103802241063693936 0.0178990107557046641343205133555405 1.0180611355444067442144115785719285 GT 1 -7092448323424030439559254483840561.1968289032024172308988485560547352 0.4960817682550723609069001107159478 0.0282107222218059995727430571426669 1.0286162904338346562204116340927134 GT 1 -128294517805982.8875434639433199650899232128997629 1.4650187517171462997672431458466959 0.0247386882879977139621721103778709 1.0250498318807833591618657343039834 GT 1 -65673065859069100152090.4689956940426847963542526950007050 0.0888440929370161113573415268749873 0.0007938682209117295315496767804625 1.0007941835011595060260166811804840 GT 1 -2.6669471548028276212826802114430447 0.3874629255923333539936332808192156 0.0349054855672938362967025121535000 1.0355292400218844383624293274882281 GT 1 -75841340385479180486.0084150439294154207709719103019309 2.2800900724595187228069538061311563 0.0526577345515475139702005230754912 1.0540948303447029092690406311681011 GT 1 -170062.3981950501804238603231477052679622 1.5280281547047509443553462805375078 0.0415877222279789046849029175744559 1.0424772410059914252012939087106491 GT 1 -428143251043347851248.1590680928566493342460938846181912 2.3647186115129469839601214783428742 0.0716648904150591204493383196861561 1.0743625019137367861421407214696021 GT 1 -6180493604116870012850732860.1058080694787965865890362859644354 0.7110658908577147941192118491331603 0.0847379298996640714813012454299477 1.0885448393054759060697025951728645 GT 1 -183394.7724353204320313909555839773903046 0.5624730942981264548912280874801460 0.0857644836910611411943349398123292 1.0896670642340670714608794649084924 GT 1 -33870342320694135157175904.2961758673859212412240854471619116 0.7444530477432707657448956220362043 0.0270339514839648081540953178668218 1.0274060910164028357123069253097899 GT 1 -1925360789.1933164213943707403079345421587855 0.0229886179737284755174473364743387 0.0401946394849352039771600356171041 1.0410247645401803564619134051532597 GT 1 -35.8718655712075744279113634581750495 0.3693001537960126385036567430789255 0.0564450665289679250957607891722254 1.0581006927936737984296203164700955 GT 1 -1367833582446377.9261044112622806578191638656247770 0.6101673782091620443548309416510213 0.0439496491040190596291026298384043 1.0449446990164267526668181167623763 GT 1 -230810645.2368749806800489142362961873147549 0.8566942735629381911616630242203408 0.0148680575053072717543611997935496 1.0149796950095239411960589472118031 GT 1 -166465126463398.3245418749987419131332833411608174 2.0577637758518337063852507263874902 0.0916574779576874653473512727152714 1.0961337445941834175532979172341453 GT 1 -2467.2381000913570933292436024133682875 0.0362763431069570525078543977078988 0.0577601559952023087348498767199722 1.0594954253437122449157146480650818 GT 1 -73975200224917267.5044599366763962225270282629635058 0.3956378623369218366746331219261915 0.0579479077528234246228449656592233 1.0596947063092890740169849809809301 GT 1 -28718365072524498994204040057.5434037117497816115729543039398440 0.5646726961453358133933525083922565 0.0469977758174026614762876710427047 1.0481380414559497762775177511394202 GT 1 -318006501551813854390058912.3866567743512495035196984179104580 0.4613557130049070295803815666223410 0.0250763131187406199413605881551040 1.0253960809129106240563873368872922 GT 1 -8699373150242431.9813637365825129654763049295013592 1.7848883551397842185585382228648806 0.0691295267612390684792881586516047 1.0716351378730362869940527909053356 GT 1 -2309316948965524005334422226129.4245098668084401557578747870704744 0.2698779479116906689762930991515373 0.0126817433883124726298616555089975 1.0127628430825554831316685182597632 GT 1 -77576135963831.6906874947792288868017539278766809 1.4823409466890918158240348951978921 0.0176810348903371102993219363704807 1.0178392116469437365168766027205355 GT 1 -4171609637077629034407441040031384931750373.7439957251826014989185036757483675 1.3601137335891685483327389415278540 0.0663268293558543679502352422460912 1.0686288263549805715189567517778582 GT 1 -47764344427080562067990905762707122.6502080508340953594734973375195972 1.1647064473863993970419699255040441 0.0539183151447973014330323938065394 1.0554263660309363752914768579827736 GT 1 -132595259949.8506441624261051460365503399288239 1.1314229553388343919389352872737112 0.0757804416738223318846262206324573 1.0788056183308340125169622717663113 GT 1 -133.0445108767783683818827313003368277 0.1490249938419177836531350873823028 0.0440481549940714583030159954317676 1.0450477385321246797457944781094883 GT 1 -1029662467202030054025161780672963916.0982122845925429336029977797207325 0.1247972474748582846999193900884925 0.0197410274027559264248578258139663 1.0199384844751593890868955446711976 GT 1 -104419691675574561.7363339775200263894570506623603799 0.4310019792307743033366020745506655 0.0239897068184439234120523826827726 1.0242821463320783708815747679538035 GT 1 -2060694931980160052075939027.7902346870552229439679556712638347 2.0611159270584143310134196071848339 0.0123874835256193090412657782439362 1.0124648479640623962255981895907562 GT 1 -7208083541255761580546816908622258681543.2926831548390717579876867993129353 0.0747476946761033687182588374844877 0.0897737113490748019624787505397453 1.0940620415370439333991055595155609 GT 1 -2588515188879598.7425996945590536378172632765463835 2.0171796689204900126164641819176881 0.0823779879880987213802507327095597 1.0859697247756444300430287700123917 GT 1 -312732800888048395.5056121501441767916260885720493506 0.6724951278880675125117822032508835 0.0222300644269739659202018100041707 1.0224808763209003884172098889251927 GT 1 -667571092441.9176130461670553556840597366858550 3.1872722893785923347323749831944604 0.0200626639033537513850683723705863 1.0202666521204690196210626431276994 GT 1 -7914061524701.9663648792435975231974740343944595 0.0170788804903289397870371914007743 0.0695609758293372481998497538190462 1.0720987352236391981934570333192563 GT 1 -26494426385769668380779.2189441219227442838248788437780415 0.7089968038450862758565979991369869 0.0200738667083581530117306871053489 1.0202780843504988188454326936335646 GT 1 -8848673635430016182109153.6190324145324192047617879081915566 1.0684043414851055823544369366614346 0.0472205060725935943177190565222368 1.0483717830792306347446255092326812 GT 1 -57375523.7344897834494348026425618767609593 0.0436537994742269775067873337727599 0.0998483824930714606703033242545035 1.1051920659496877901141312277420958 GT 1 -141876301753225188.0944049393059221902215801942933656 0.8344659087265432805132972525008357 0.0261981201912660178786141113042823 1.0265474048505835470037936099622426 GT 1 -2207229114439043673.5105883297654281341409880862411961 1.2011235565145721480832598872943607 0.0670003196545347596653635045309374 1.0693504207442139317103008915739890 GT 1 -3655352105148368580178026780597.0988690413946894812964046532758808 1.0185827945316855292807466032063727 0.0186137162537980031285605227457216 1.0187891316353308998928376261194982 GT 1 -22060858031725005643917194977036006156757536.5589742889536732146555206512507907 1.4084680583505642635107042249600785 0.0163456289916017850177590822824722 1.0164806926074590051464508775488536 GT 1 -1265732590270176462376608058328.6763289665992752080798782797725027 0.2857300171212451681830754100761996 0.0139436904607369253123481851774185 1.0140418169439725414395424694396918 GT 1 -1158356189.0824698710361856847490004317004199 1.9273533453944612139114655699705441 0.0196115389121161608790566095943899 1.0198063969936434976786184011176719 GT 1 -17010.9735980173255680366578047569586069 0.8706291782963351676634858101267307 0.0563675948847258682652147650688812 1.0580185900339725705439967471306489 GT 1 -230477969977549504543054965330837688470.6205224808298047339100783372947524 0.6440826038802081289638711635761564 0.0597520964424631210037047918222476 1.0616117112991204812859408396428087 GT 1 -4849977777381053723166.4775423342952705232400700990295404 0.1284324911724920925867201724310607 0.0541031686842507793686314593757638 1.0556217736832555959827229618063749 GT 1 -2.6398375663782402776591641343698086 1.7963417309748577515844458536025744 0.0480517718302458580617118395453224 1.0492446278441638117619195748506448 GT 1 -130410333110792060515945252420.4342817997726070922695207590749530 0.3238290083531869366656649741051696 0.0854112382855883010568287531083055 1.0892807554846582211002828818057365 GT 1 -4359693317.6474631051931010870918079606952644 1.7209281347212764560869970339966654 0.0884911005702477777389415915761200 1.0926539214116280825266151551220099 GT 1 -49848769931396653663082721129926.3029903634874194510091072691647694 0.5105060474858395161223793943841628 0.0514914009883424042307367277442416 1.0528644237423565943345574551441635 GT 1 -73664425527003848212913351900001876.4100872661328596067141695568385419 0.4298172834067822368066475520202000 0.0283156031431369175691926044685195 1.0287242218381048243717259243200167 GT 1 -259966947797084.8981749957772746886584090874735423 0.2529070268928232881251487224818370 0.0277770443936610939859673808116785 1.0281701226290322456030994839314987 GT 1 -1465112292820651558326887857536682785.7679061373196275980745383237000470 0.2276850946679004010016587630846690 0.0304198882094669988787392877680314 1.0308921756446457815761926028792496 GT 1 -240127646399574343537515747872.4384729888354659407680285823335253 1.6681697351797549905739558846531768 0.0474695986487928778391751017760669 1.0486332550615424820122013043788311 GT 1 -1274311569520800170812116243919.3191633270018718564859461018156546 2.4012330327869585689899121836374671 0.0809917556107426652495099950743627 1.0844601856228839879780620459226779 GT 1 -1595974462401311668568391251185324221.9570270381458965588434066976516743 0.3101460014847556124559879730849100 0.0077685246119677943842895650547470 1.0077988567922711454778782702585354 GT 1 -13485240581919133089558.5712627053149298934050037793288029 0.5696674967651862968129194011258776 0.0266467702892256636484397290584938 1.0270082311131713283481442941941121 GT 1 -22069097796705493353309313937239.8853746514405986106746646834912181 0.5928138532010737507573295612366930 0.0489936203036865412869782661209866 1.0502345080509268195442912824006874 GT 1 -96798459008900.8637003972914690242674133109947554 1.8746499089161530373583343792443413 0.0801165766777642471355081575923296 1.0835083307480988842047000653154277 GT 1 -2590517988717893685834.2937194743231607270129597980391547 0.8702391929138864990767325792111974 0.0705596812149761242360012011382416 1.0731726817518486555418762982856207 GT 1 -2153088539335816085579538101533212715400.4995464204195886600163008064125862 0.5495353434080385777313416161516007 0.0947773502304380492794846768430583 1.0995743436958024414544103597627106 GT 1 -46374658342947693.2486635621948695970417130653654770 0.7486887010149087172867819701506968 0.0464153562713491652903383166173849 1.0475270862731859029874867989130885 GT 1 -1959855131185.4959477719450761631477826864618991 3.5905353363296416280660614089207149 0.0977099974880766314112500860548022 1.1028193000475837911788886065480648 LT 1 -453832117650579318688.4267143623629481041070317871224994 0.1885176378336333104038709820519027 0.0153360763917885412851150689683468 1.0154548903364531007186295076928260 GT 1 -705557621440806158652716105635005.6822365012344120299499487255341190 0.6216825633168192066920984280270771 0.0415400833465243847097700119036792 1.0424275361987508927286631782748868 GT 1 -478251495.0441409065373325979660497190562375 0.0633927736081705456891859978250321 0.0258852031639893130021427411373881 1.0262261210567537279103328159209715 GT 1 -178957383.9780086245778538730258829233785431 0.2335635708951407999753093049071843 0.0721682323673620625399016918660740 1.0749048475086491966582764404324673 GT 1 -3456044961989.2298358898954416275339117428945834 0.0487373329730376093582453637778986 0.0863461377291819016865671497684948 1.0903034857424682944463651936036963 GT 1 -177.0367203714637938364794134916888865 0.7466214393402735703685827885246432 0.0710484853676784430877656167400221 1.0736987324535197606736518917336617 GT 1 -15572162481354.9656119386682361154462246749414713 0.0553399460333270624247664799796401 0.0714991162454339027706276042260926 1.0741839463809269019735370167687403 GT 1 -3.5993018496275255420895020151871388 0.4625066034682525587101498910930554 0.0102852751459959274289487622033384 1.0103385340917516543010098216695090 GT 1 -92188746121981745337040226029.2327184152834236682571480923679611 0.2709676684791902204535702456661330 0.0656376348470905804128791303591255 1.0678909447388900536482750994516399 GT 1 -11944351.2935149194355015149826548418944665 0.3285354785002669900988814768087708 0.0782883588531450576885081829194388 1.0815228579799783686148030973428485 GT 1 -95444.3472497509266751622507999699019600 0.7651333410712164833756956245371867 0.0174464381504144281460852771566231 1.0176004208472164077859038446897023 GT 1 -164852506098800904187.0751955830210785263059917085469106 0.1407021572289588060114820393953841 0.0153964177369388087168956700345271 1.0155161733718855623917819602757173 GT 1 -1848415136582711839351332632704216.5790470995260982455011772033896985 0.0042853622026293511206247072045405 0.0267043880095678902539465056979799 1.0270674279432567167701198294209987 GT 1 -426515946543846315296597634.2414223652307575110264638903035399 0.2887574528106359569495715453479487 0.0969070993049169622377734964496656 1.1019298507959421225710462188845448 GT 1 -44532129554052009366930008595653.3145566638824387012951358626843211 0.1194599926655424010697102072215596 0.0420318590055581034079646027003338 1.0429407573111902461359599049862954 GT 1 -11040537758756521281422571108177792755250931.7263459846870319077400994370069886 2.0202463362980162060531529166269175 0.0059397931167552991635052114284272 1.0059575038547947235932519855561771 GT 1 -671606541099993825.5887282448584275862337153970946687 0.7033850126813640008302173141426331 0.0057092919762861668472504759419685 1.0057256522839542010227290709494953 GT 1 -758082209.3581070718663561332936176085565796 1.5811785456472276017557956807225398 0.0493832441777167581061101681056716 1.0506442883824814160238294272402360 GT 1 -1047197998258248899505689555102112.9462639584586294645807634617517789 3.0248472599808285580341020103350167 0.0909398688319291353758504920745890 1.0953440360925645677453408342359277 LT 1 -618684289287749163368869026678697943135.4553300901558504862654750552646213 0.3835618048276789964560983535475503 0.0936024849349248167666982706354578 1.0982773108154842501012521238625396 GT 1 -272513440627050835941120.1664814980658687113379706098730219 0.2492308586233401716245620893810664 0.0062261736760040713717601121579530 1.0062456371259290452735648995354345 GT 1 -17778742708176962548934165506013183082310.2390615739936693601391379550074991 1.0061672271454573142536868513118805 0.0229836234181263072708244981956713 1.0232518649694237183559129424064631 GT 1 -172905181940306784183426314682209898693040.7196492142671157740013356867099801 0.8005264636879787073403991352921089 0.0521964828515264661696618211286350 1.0536080586004240430784774041160869 GT 1 -285249997630121697181151477613055968553825.3557182445003372337381608479071170 0.0692594482335907446472939010839836 0.0843143070390295727502433718357573 1.0880821031458323105077292467584301 GT 1 -131422482.1719081819494486974696890765803215 0.6407467429069989509642845476267026 0.0177848231479255662358986298760079 1.0179448736005521141159954899391126 GT 1 -22293673291210636997.1876338601151235542594225879949792 3.7746281366347285669843933552954688 0.0296738977951647259935798100365728 1.0301230761431416975254806068120023 LT 1 -24489551723386474940249333850362241171.6646132997542177354080876802062245 2.2622736893814857818700657511274409 0.0176077533412299826582076500165253 1.0177646138651403229459976159776653 GT 1 -20319741074909254357695184923017.9667528206941553118660099840453443 0.7122363433453736088869959577166051 0.0786363054723957743139966786231521 1.0819004297662743500911326480840207 GT 1 -5758859613636220.9933851598819570427430415534179241 0.2175056102519176466744715142319602 0.0527974355202609701579607578088439 1.0542423074239039892413682464966729 GT 1 -214457422646059736.6972247209504483041583960902666356 2.6647952381157940198802552725413543 0.0891990242153145580959944419530900 1.0934308734441085609582502993811824 LT 1 -5572564701722235740.5016599813753398184140563604388342 0.5877339951835122779132096175195487 0.0662331603579154641814696810505500 1.0685285082751477402659897138602044 GT 1 -5311976318118993409.0817978464135539188192249270369027 0.3311891837915387665671323791900867 0.0929656349708981807730693693918659 1.0975749409087914778874405343997112 GT 1 -1058621.6675075303922486885878537430154115 1.2704668602677298878402833545567878 0.0939740439795436278143737762259494 1.0986873243203320278407959899188542 GT 1 -52721953.3168780149657823430623693860840042 0.4484243421470313897521822404545115 0.0889930197421382675365954677001088 1.0932047195584906658495460418838589 GT 1 -1522402202032137610929144003085203444172896.9052673042086504006431477244703822 1.4982067655504697241351213091033726 0.0254808174091977458442989922699506 1.0258110756815154661540809899788517 GT 1 -1894596514395414555259425801026495192192.2666931062267563744834363537636104 1.1510848329268834012522879867698094 0.0221384368677217181894048514206181 1.0223871699560970439062915909324315 GT 1 -486551949.3743083881558873217427608454552844 2.8749729645212376845905233341559242 0.0971759441862527813487743928573771 1.1022275886098021664285795711250052 LT 1 -1109112732975637.9157724822647903913864984101845753 3.6795021101427443056928767577357347 0.0475248316771737395323702308836968 1.0486912423233915793957335957197376 LT 1 -20624854906628759383630591268.7522634780120538518122967947764675 0.3192718978242086281101251020908870 0.0076098043393825522867790430748041 1.0076389066362902641708989563713715 GT 1 -14533818150766168848201.7914338324527769393963429205919665 0.6002504579326153813203637348177919 0.0997864192267419867864480434643207 1.1051232318415711361669986873283879 GT 1 -93960542796139987183141329327.4200180068692353093288106958785371 2.9775296699862166147902125563072247 0.0834743155509737651493649227455222 1.0871651876007558403934726452244791 LT 1 -8687726124055.2284489657045947615206167989369911 0.2535919495202676977098208692445927 0.0617250526628160997239369496936323 1.0637122520988750615097267200649037 GT 1 -28025268476.5979381602546634008110028012947882 1.7834445367052646878296019658824090 0.0680855715879806027850453848711317 1.0705142835203646629556941215193722 GT 1 -138674978059834871965111480363009.4213208963288448587207323076094458 1.3874467002873958569399000480988675 0.0348772020327085616006670253308062 1.0354999339593954104081167866432511 GT 1 -7251155144635826208130402740661068.2454308067971432112755801734507182 0.9918930267901658452071676489178555 0.0939500373958876563016589311761729 1.0986608280975075472148122644899207 GT 1 -28447230334902863766201918055093932180753.2035652719661691165478821290641952 0.3318595448990789359732560879494529 0.0551204714634578226184710759032318 1.0566978426451605605400933801238241 GT 1 -26277184181373760434387865753469.7889345920142665413977791433301912 0.7859381189348640289126454505380716 0.0407037187891866237547870188532602 1.0415553037311473901822107433715022 GT 1 -19194038.7559466447792879310054931853016891 0.4042422312904619430182358278986824 0.0800221546126338953961161663820252 1.0834056903296944352830587073850244 GT 1 -5611420565408121632331967563820551080505.8290607839513087519531947980561158 2.5312192638886185448828194854426676 0.0885885774566871789963656596999244 1.0970631565150368332485770746620757 LT 2 -436279471170580813.7376506956817961588057738217853986 0.2461459450423592610103606135683676 0.0083127981261298271330255401120068 1.0083475421129496367866717333054582 GT 1 -2166.8842271550527439133167438769628886 0.8648348556927792689246702629452339 0.0535343354464804141681415619955139 1.0550205852152483223507565213687257 GT 1 -22201291243107145344974.8790409271119453991526181491714874 0.4021633399166835953576796037565135 0.0760351225310391444781480253626136 1.0790812194601328712799228496272076 GT 1 -716742899824455.5762431241573057838316724894886650 0.1115347866121022015994116085314812 0.0974458612134569936279183629276540 1.1025266029991667944456017993860245 GT 1 -21915122201071816600.7746894143697267486124244059945469 0.2473669841438210151670013556140625 0.0628197966477961710038631962570882 1.0648796957553287585340400696595807 GT 1 -1314690527063428122048295952524.1247717240053710988223346379290966 2.3518533551580932478131978068064081 0.0791905198030488867430023155011502 1.0825021260182638524996594619749032 GT 1 -1520102.4317684821531055061896743020470089 0.1372278299392734848565319592075947 0.0249961416615668804487867270215388 1.0253138507219320334922137923692780 GT 1 -9478282188462.4696693863586669055028303652378862 3.3436642608192004187116728383466428 0.0209639122767588077776334562960010 1.0211867753095143806698501467178581 GT 1 -15123953916649292573427113601799467252347775.8944308542683555654505381215921017 0.1973154969504257880974389975926716 0.0595330661037232747534603004186377 1.0613787888641312087083389058005485 GT 1 -2960027776.5631610000218858648134858855129174 0.4559133943930698239034180958552624 0.0742337623925942328654627897644565 1.0771335193936496234028604556731449 GT 1 -5976147862282278891641697854820053164968959.3124716899386369666180896071650247 0.7616449934931655114101711883995951 0.0603189095644838507259004883758617 1.0622147267757769028375743821829953 GT 1 -415342117.0553609124080051699626700121833500 0.5274315448257930433411038220736213 0.0853659404041199588503195724043735 1.0892312285697849918509660749228065 GT 1 -1463579922081265676223931209873271406801.0561753136074646456204826559520077 2.4204974436499500259760534728462799 0.0380849009735743540690846922100740 1.0388290868613865522607844558193692 GT 1 -4034716499467039669751285930547424314.7979759211129237979936516589913004 2.3307861817136234956093731711527190 0.0785118238759287326388652218697784 1.0817653330733292471124791756694172 GT 1 -203768896633772.7846394034263110392647820074482265 0.3199819953273045643081516543959649 0.0200560857897787856175135350807377 1.0202599393529746007586037334602755 GT 1 -15274262.2253931356958539552980894363427251 4.3150233174071351415552521377874633 0.0482604486807916297232935628996384 1.0494638621678065312326787949810968 LT 1 -4143155770365365694967046.8359464937587618944504757254746740 0.1330490624454490680760581818810074 0.0130859107909097323567354093316548 1.0131722856784071448887591087583529 GT 1 -46953560932198556.7649965656772670140917094472580091 1.4549845558167700144803632612289419 0.0193620323464066547645246623084511 1.0195519317162775207953433265889212 GT 1 -700504556476266674981402891905575.4045336736804185442426902140345471 3.5752851969027560713993893822054372 0.0756630438286436928804183105162229 1.0786786026357056641899854657033333 LT 1 -334158821220209413781.8479161890639065606172154997873170 0.5314270831948903166735549064802864 0.0665504420414124314373138254010674 1.0688683528555170569255893201344935 GT 1 -27986858712363308651351256459402.1236850301300785868831033973133907 1.8412060624209600135714303330029074 0.0334758832274476341831306769984758 1.0340490279574780802107417650513051 GT 1 -34979275574211356129139902667295800547.0427036065209301427496355008156716 1.0248814915488514277438030225144014 0.0677276132343478408871553943510772 1.0701302465181524295776953191830222 GT 1 -22525.7662642849341977551865280341362555 1.2401989022760943524528254328358954 0.0654422102264776681384330358755294 1.0676818136844573303986305228106678 GT 1 -29901439882423367319.0654222950167941583090480706027753 4.2943260089722268235257391543745626 0.0109473707178858258627222820686372 1.0110077341320845776617367952681415 GT 1 -74989113840940905562547.3444591006739099025859649954381680 0.0891040890231346323919319247786576 0.0726753547726862016140926294085281 1.0754515641244992656554030521443828 GT 1 -2693458875205005106389569174768608.2047608128077787120609779593922725 4.3704702798665625427775117583729674 0.0174052102359325064861014467185521 1.0175584617610699429069307201583782 LT 1 -15350803198460015783129357881401.5765324660055463928825136913206308 2.2737600505109248382134031696636628 0.0877740973392136989212999808516865 1.0918676192945066228896960800645043 GT 1 -4238.3964819225710533197892152786570715 0.0647974428764804052131442924694981 0.0987838139169400160467451307441696 1.1040101099960561930974893239311068 GT 1 -10634842234681154368345907948196467764.9378802652610324941956811299727043 0.5981101277405857432176583178443284 0.0336245927272870071131317254569202 1.0342028998978276307881943797734956 GT 1 -3379472902689784504480577291935131661037.6486371449227481481249980628823990 2.0531146272217561401971214276462061 0.0521698347386399570554281824375670 1.0535799433446807626118869812130072 GT 1 -599155575547341445410255030330468084388436.6048692287743691402916717306416746 0.5839599793207687089874866129060099 0.0843486826391543734943742119015885 1.0881196446796243866357762667396280 GT 1 -317488644528409825.4573783532722956006604190948646664 0.1126155072604603935864224456632332 0.0592271117192257160006313028373559 1.0610535199817821319529795513537068 GT 1 -915102838145741130498329636273080954.3062785996252570842802002087172687 1.3176846880457181556889336678404486 0.0832421433933186955373345819516626 1.0869119020028688980932541868249721 GT 1 -10219959614011637392418439189300008.7459390609690960098518370319832935 0.4656134604012114102701751513670699 0.0685925133764780784875662332114541 1.0710584104336098179477920358768831 GT 1 -520632.6370690634738180687862767087680918 0.0819015549759155136233159024801473 0.0109818222404856733578357392494963 1.0110425675894923599293647910653943 GT 1 -87669153241.5912712047209302189948854434738920 1.7718751342385639970601469792219483 0.0244632656697492051079008997100469 1.0247674627030642308310454027459602 GT 1 -16255973951451896286083393748834147011.4118074841922337572886598243923158 4.2920437318814791747631784728592411 0.0493312994213575405355837265021514 1.0505896466597487636150047410612542 LT 1 -6280722242737653.6810322002297168387344392960383803 0.2678934023913419956185932260497768 0.0474079626868575532223054205647824 1.0485685495489665644306354934231479 GT 1 -1.3181930010601542625302474903343292 0.5539595827278512693388209186525700 0.0012062649111857786227206662658966 1.0012069930343022327914343490715650 GT 1 -12020180711343404004201770282455247524.5047501848281120268176829323171493 0.5971488911167400489299643546346771 0.0440557484658291979529848928942928 1.0450556819258807748118706651614497 GT 1 -115240492814608.8087494545094195893159714433030123 1.7508011351780172457716819074426696 0.0570311541038656735501892544545483 1.0587220341201531408906096956886900 GT 1 -17758182277426.9133185923129708579481249436844204 1.7809261936558575234539707813392239 0.0826498938065071578430334430855578 1.0862660843962630394667050304925162 GT 1 -11544999546333047966562785151761954914667569.4208919282406749117749373284281436 0.3461398383791592534964561721551530 0.0498609554541532748205536082647995 1.0511469424176838860614252658963773 GT 1 -93219910282214795699873384394230582196322.7330123565988230718110423470982826 1.7304784771688922620288044474342297 0.0293775067858290774443196550074472 1.0298176677337289075087030484943949 GT 1 -11699492471.6558623101309383199906340823003927 1.4753347373690025886607281642557997 0.0390396507071505636995698682470157 1.0398221307040027285177337225383274 GT 1 -44866270158998.6693860366972353600914801755199656 1.5844491711530135512004083878903064 0.0659477182502394277105447702964985 1.0682228661424283457279826709167765 GT 1 -5782391.4157009153986694107440559836275144 0.1822061738685263784584739459425790 0.0014628603621616240460110992131588 1.0014639313870151826760451534962726 GT 1 -825536057893907679299753739.2043486405084304749175214002932274 2.1348776729736406174090826495928795 0.0318536474348794054811916223129751 1.0323720124672700782450828865029980 GT 1 -470966463848.2182360558568787491098380358942906 1.7383003468592563511980091440516907 0.0720311446198299742083902034240832 1.0747571077718676838541881342503316 GT 1 -681425017476326275036864526889809.6745050298194106051914313577138730 0.7195437084689345562133137304853287 0.0069291048805866166846204227548134 1.0069532226018592897007562115783893 GT 1 -47759885600989788252.9285062866283678483549162044489691 0.4055782740401878620219997296961142 0.0807957892136098109750904737561262 1.0842469715329418989965340092937246 GT 1 -910834510116464231.0194838216952482722051923132248085 0.3504380620714115211352305645861330 0.0415008458986144803886498053817163 1.0423865990201600811260590446445267 GT 1 -195052.5761736926222248053816768892294601 0.0643264015834273089331320651235915 0.0468602500604643484429574583605306 1.0479937439597044848082599864884970 GT 1 -1280184694454479262335115439694356150918.6040913118294598777271608356758785 0.6599495589561219203573737949174494 0.0852216318512897052725413482032167 1.0890734636492662403011107495430763 GT 1 -76220124472615930542884875.2886570965746774952217089787830759 1.0535033034201362181963292475367090 0.0565101553975287481017241077514159 1.0581696777688507896528666291855962 GT 1 -2381883460995005626.1720384620480324682921498538786361 0.2021733804212465993606901471043350 0.0935079679474928025100308179856369 1.0981730386190143326728241593121213 GT 1 -2503991.9544261653495749860080037587677481 1.6328448163317990939427119010454568 0.0887040427600666238684838975221648 1.0928875637458673981964697858918658 GT 1 -736.9271818419930904757259135360469337 0.4793565269633290508974876498242405 0.0089904457839264913654995062419649 1.0090311037136851086030784836863941 GT 1 -130941298151668026608495472606828180.2980280901382318069309781440825486 2.3177286148915306576655046198116593 0.0558987981898190084660722546751261 1.0575219132753195427347505411049379 GT 1 -3352.8468352169713584060481270941387292 1.6057841609836616822080820596683760 0.0232549966365778575025797988710031 1.0235296606337072596831172222905515 GT 1 -20607105776686907274070210317586072007923.0615786048835620752703563939841872 0.1026906373046423003388847328437910 0.0103509401260961984182826084835474 1.0104048836740073356675477952211110 GT 1 -175346089.2347209352025340260805145076014191 0.4392832094825723647315427425599007 0.0766481206137004803595063545992023 1.0797448826926413953120198562000745 GT 1 -1068662113923445050092410358711361619457.1095130142913511519268274627260479 0.7724465900347642767465655279571277 0.0065913156854443091853750458936863 1.0066131343352642880961484213582992 GT 1 -172442902848472173728640760362238421.8726271433216591827791266232498171 2.1997643344791724917609663951688714 0.0839534057326732275492897492176302 1.0876880484976255234972713013970175 GT 1 -1785547673906004440685698728623682.6493842180193639143321641591227949 5.0166216713749151355536465296916087 0.0742465175755498372421229670340988 1.0771472974623548129991483228269846 LT 1 -663340511115231316695.8924710672513383596189649854424377 1.3237119410085135834782357394358473 0.0473976286556204295445833792184652 1.0485577012794248678371716439701845 GT 1 -1563427039450370832.4873378401600073074303022474575357 0.6411241737982006543015702130290843 0.0521008609605923506072002269722415 1.0535071758056428170077262690979485 GT 1 -16248593540214744466898713522787.2203987719536494756609897714541665 0.3081959539705485148581219077760519 0.0244323577517127571204666489267013 1.0247357802175856901161317011232296 GT 1 -4.7521531256219013401548783444307116 2.2587016300625374286558039439664791 0.0408637753631614131338488019363100 1.0417221655559530937480521428098248 GT 1 -501664628354371602397811751857.8133118982601233025425235909635988 0.7329143689413364631732800087625099 0.0151142945092067169448964889219506 1.0152296795773612597721307481064104 GT 1 -12402488848839136010098495269974.4182733142225180755319452525865018 0.9733328034459706710865918957856260 0.0838048983613580477665573534281364 1.0875259439325212412475326798112380 GT 1 -158963339904434957535754373340995008.8960641096614486944207592202826897 1.5913785852623183530721275313604719 0.0766405003506827678249546430400010 1.0797366299000239206609759616923571 GT 1 -36747535606852873910847196795957884.3016773301791595876595018659476076 0.7667061585996227206387401714817523 0.0729633177337461976534059589681734 1.0757621432539334915058196353889158 GT 1 -9647784725347.7531106223423479821827123905585305 0.7254427711385928670848427982576579 0.0295716568004780439825600649692005 1.0300177140299455966398914322149083 GT 1 -3122992669638477.8977805296145675690112965014277562 0.4985582169842710306384995314835384 0.0820553667236104612279442524974916 1.0856182025155962520381343107047460 GT 1 -155896895274098716659660748299643713697.5173049876469808532641615340608847 0.6135476262788358114830132283774292 0.0815751385538601593514874748028834 1.0850951833932708461261597887072321 GT 1 -625722663.2830077182606176108330728167676217 1.8070798114990252210273080320603381 0.0549845273093249997824771139003251 1.0565539784047884602148693192991399 GT 1 -1296740428742541047850974692.6612127182539808141997227270651194 0.3835235293220105477810569213422112 0.0639619020309720541021935384014843 1.0660991003745247473919779993310020 GT 1 -38215985782166353220.0348095068551633315419882823714716 2.1091206016881826731714005532413769 0.0642023838655047745377335567166829 1.0663560479624395195470536753552053 GT 1 -112719059392796847104897069148029141380216.2266405091880416970100075071664168 0.0883396435941553559970324721276692 0.0685250292205305770305319753113932 1.0709859591034586933134410829765825 GT 1 -28946839970429874482782.3930248825551390696058051975376409 0.4464456626983372556014867047345228 0.0489362053539249941255571581344652 1.0501741370398532289945557984335625 GT 1 -215467493916430169308.1462144562256452252594619967556767 0.6124389900960382325511857415235130 0.0178239551557659133344021267453659 1.0179847149594558988488898760951355 GT 1 -3321370606707744412154.5410399313543925263902488072936038 0.4869872777055688510977939804985704 0.0419669970469642270579232847149938 1.0428730517580661798681317882388571 GT 1 -16.8909792699356966564955419327491980 2.5456811440237486364910677568436519 0.0362089933648857741619703363822873 1.0368808059720504248560809807285252 GT 1 -1485200760.8970075550312150883307192541643914 0.3414416765171514602366530609857583 0.0141891562880932908527968099847343 1.0142907848607204631369616697368912 GT 1 -1.3889528019725425083734995802689507 0.3478118995168587782605325453229649 0.0055673355732625173646040173200935 1.0055828909474795023063379792584139 GT 1 -1773.1234390357427061285978630263241959 0.1205168326411581278766110332503813 0.0920123496697376808239664093836491 1.0965245014311985062086595916865874 GT 1 -11541153564172442000886932935207186549671.1139455415102286475165958918942276 0.9194752914944967287518703522818280 0.0232373271835534588639696346256852 1.0235115706581823786790920963407584 GT 1 -36574.7851939380538446938098945265798690 1.7278607116193085100961705595896807 0.0790237637875570832210306787021226 1.0823210452177540485713858300540588 GT 1 -307966004218.5032810367937953375449363552677373 1.2445715624974362313600265843144696 0.0680265591869164473413353994897879 1.0704509616842625720331296943933007 GT 1 -271358939722807273364208873870.7581387205651797845921912200868133 0.5364917510773531850878289012984045 0.0645903887775095327566991072975651 1.0667707587565119875098741108574110 GT 1 -1665787.8506336637296671153713908402746351 0.9239097173772153275850254167127423 0.0876408460734608508772010927550407 1.0917215573002919176679880365800578 GT 1 -317132486572766723593151661916703.7694255194655958404633205754293600 0.0721817175926536346508138752933993 0.0946151878594646891500191799585768 1.0993952188718763560679313563859930 GT 1 -100824906089142759.6636864707139882199169374378096651 0.8314020663243915674260112972364297 0.0910823013596559164778885317279750 1.0955007294533776836155547352712035 GT 1 -1982330619959.8395367841151582995763826274578410 3.1221561775901147827345687900355111 0.0474724395593035382859171699975723 1.0498189793557150989269186101999821 LT 2 -101778990098393238995118052045795258708.0183793166205329335017435533526152 0.8390385507873605126770201636442593 0.0342291930933738896008764871495312 1.0348287328512381219041605177190531 GT 1 -7.8129023567158652631694503921204707 0.3361945039265191957206696743247532 0.0407914546768651024862314845031471 1.0416467665062482988649177288294163 GT 1 -2819074.7682940035012035315366780632726894 3.2072844338882502975182221973125695 0.0238471339448424840616772238444192 1.0241360797769542873426874743762795 GT 1 -492.5739245213404625862872646020623613 0.7636681988726122580466914488474624 0.0722037023751499289004676879114972 1.0749430771608691467721156311660139 GT 1 -100638861262864.2285827113354070269000102467760779 0.1197673391084767423107625647657364 0.0176309871277481391700022026915534 1.0177882643584575469130164209991807 GT 1 -17000157084364674601676.3375999499629932399551581862504807 0.2399850263439887291183079796702335 0.0055795025616079995146463480447167 1.0055951261276113767331579711496927 GT 1 -21861.3720505922016909483953476410410985 0.6635663065759745432419169705347711 0.0184740452674613827117199917656261 1.0186468216697253207658757369505624 GT 1 -258065283077145075285819998705139371655.1800774581388718061633059198307914 3.0405032743912249089676318448465839 0.0805855600026367876125092358434841 1.0840182898410646026831144147899561 LT 1 -61335385779140718993574305580009.0383183008050941570342946113265510 1.0741786529835267832389924320977259 0.0575634261087605744131389021120033 1.0592866575305341322178912697380103 GT 1 -29718855865439088753.5103492144517691794309742865966460 1.0388949804458189632504713911833491 0.0858711500803360950694140086370128 1.0897837438099395661822530394208672 GT 1 -3460664099686639442579327283560.0858889285552514309107945770863450 0.5986858709737858088248961335522970 0.0255209235859742075692809136988466 1.0258522313640275697509003662863676 GT 1 -9927336021122917367686969573487423655.0706282918090321281464718750447509 1.9320088164071617386554316894688402 0.0260061219979644128440561214009412 1.0263502607782099130780436339327679 GT 1 -4140130.2968831330896720657226070552649716 0.7909672095712131387509634555581710 0.0327772101236685915432279471232872 1.0333264172251441581971480871439358 GT 1 -10.3545483201881565685459110218083909 0.0903471551126348083765770019064181 0.0057623417038524696505319113595519 1.0057790080504369959782992651561974 GT 1 -16621760297644782099362879736174123637559445.4141500113504340083356591247600108 1.3117410589527402248576263108008517 0.0004591621574033653061589882660470 1.0004592676046262459110385827594113 GT 1 -243542497561222262360517286.4281989975652446723373775061942073 0.1572121594965118957513607464014667 0.0926817589562121961134696338051313 1.0972620182541186712126768343760255 GT 1 -19458044615058808971.4165091350796626041611900292351882 0.7584666422474202646540592090616513 0.0803453102864570346556586725815096 1.0837570166636020315000546833247976 GT 1 -1137072827.9194693908668500128881586344770141 0.4176512131666816627611675180883246 0.0983007246572474767873401105156524 1.1034742121333001791796620601574337 GT 1 -2443621659534426251805584382886872.4733307362749683334504220984333679 0.8434441236213798089398411971669897 0.0716113543509600253023640663383572 1.0743048346770646460159127631150645 GT 1 -3109350518318742138968406024139.1809646699583578645190766592663687 0.4622589794244443902435961502905107 0.0847283057367730895186995291760666 1.0885343241616654702605868979423712 GT 1 -302094517221039896216472129593.5029457078681870017191479905666625 0.2794175736894565130987220463522336 0.0084266165822103021252241328886495 1.0084623212368323340272860518305274 GT 1 -95897804618801180696996462515199892952578.1680413307849212196116689141196011 1.4954389263447207259395310366650519 0.0908911697927362990026425481985627 1.0952904667706379142841091490068923 GT 1 -16082348430798132309152298805.2891207282711140178364381939549863 0.5578514959310412280221904907778299 0.0511877513848417500073373856053821 1.0525443412360446638027026635301327 GT 1 -757440615819.6123932513429946927776571444527948 1.6609450140574261903903222422421544 0.0554083055492817874185526663254208 1.0570025142215769604531641753789561 GT 1 -7745799264862467756781573662353106216949.4679710181233268068894660765979214 1.1287969473385793958373032689524146 0.0862409304161117293042887579512891 1.0901883422942060230339169753989134 GT 1 -48086962674613471.2364052349786479527136187090487291 0.3078080444590523400872788245766278 0.0338012973071139655314110803752464 1.0343857695527693912653545735353614 GT 1 -7915297645304311349160280591317351910095.6800008728754732158660501884120915 4.3311778913340984938936894067833997 0.0779224826310086734824255465199835 1.0811259837221502115128219676102575 LT 1 -1375011922237566.2173243933100286653609179539419806 0.2477328602558948120284235308746747 0.0375717676379379853189172807229162 1.0382957793798904050107467207272576 GT 1 -536749314138624837302654080733973224.3869003214000729299952957877186560 1.4027850794030282404478221516269127 0.0983626176444883027255631213102718 1.1035428548761856114352147315401928 GT 1 -4796677026968043458897.5184044521598682831341255392901792 2.5523354533797445055603194693718460 0.0197244599258335381983097334924810 1.0199215834955380634061645406807537 GT 1 -115780829843.5806230002594362671539459104723648 0.1596845567064776412099374509978167 0.0177477906957045761824777244475771 1.0179071713180033225538412650159500 GT 1 -34018567672694.0007994362418640023764508052931223 2.1326893885429133812908038876373021 0.0579360943890748180917983760290139 1.0596821663555259394878667445009919 GT 1 -29914646990133816679553.5205532943612724413428353522256145 0.2164441749919298654088891191051496 0.0022708513371564062298291566844189 1.0022734336301304647623104559337543 GT 1 -304579616261948824646510.0094358976220852408602396688243046 0.4018573511855698699569472244770433 0.0054903668312524344028837979497390 1.0055054942908328459842125131033378 GT 1 -2685302948541934346438671189479795583615182.0844790903207361229419558133842393 0.6806245540030422941407214022912132 0.0081213980633573832558172996838254 1.0081545562659474440991517801925507 GT 1 -4585397143176.6301465250726150203548588182200313 0.7644234085235227843742196857185656 0.0069441115839635210785099335814402 1.0069683341279729217295961025371921 GT 1 -3.6988712500383100484674580589949945 2.1389828846865725529806196974183046 0.0771182445207532070642005710555760 1.0802541615924899557948435649816593 GT 1 -4371961707180471369307.8850328419231564583359628617866899 0.4167593890166244366659542992272367 0.0291531155642396764653236761150784 1.0295865116566135653185955481075275 GT 1 -7992476622607049526943779.6859054564509223907406973804284713 1.1869601238414204469561021958716034 0.0563767715915965546701359671201300 1.0580283149559256447901675701345259 GT 1 -5929546342915399360556613197737702.3541729982539722755460104830931922 1.1403927902380714980786005220766870 0.0807222728081304692562704155764348 1.0841669964143401132837719309289562 GT 1 -1325102569693182.6155238020657459416703537208520412 0.0340380374124296960289317226205406 0.0170814443808235149621868421072432 1.0172290151472397106979730305743559 GT 1 -580941296811257653142436118695690.7477596435433194950139958948747607 1.5167364685532182049330621612222406 0.0383417061470831251735511243047969 1.0390960953113735617109371997897565 GT 1 -68205334499974844200660869796988962535.8114174352899972670062025358897693 2.7594408128774876870603679035220176 0.0257522303298090161413420349704334 1.0260896240446753244581293756324166 GT 1 -43868353059918926998213713905604450436450.2474517054113388505633276711210718 0.9677654707695421039673532356942057 0.0077943097811371116226786772395871 1.0078248441801488388337489825431402 GT 1 -11059285876041306135055255.2319366516668509394380240823490737 0.1908689576935596995365757143282612 0.0786148931994042660932342309240745 1.0818771902742968884220064373040781 GT 1 -142671206285871618355.8593524389869353768473514037369676 0.4770934784155751773834852636364152 0.0473261920765010104270028769191687 1.0484827131176767430437350256736170 GT 1 -17081350828588059908213.6161143798191135219141420875490493 1.2675708716929457376149560442931834 0.0387972251670571866794939171909072 1.0395698882815610654368109410143296 GT 1 -1431736965481767911132924.1574682485447384649429164615509842 0.1324951625162815732914601903187743 0.0236806276224356228612610775910094 1.0239655202990442047132615017624775 GT 1 -930.3863197368481492583201312468136023 3.6086875034233869041723042214985644 0.0291046329586151336062722596758536 1.0295365744359574913304546646651700 LT 1 -709029370.2366117878739499147703854121335941 0.6461270423534198845334879914579801 0.0889540739623999867865741967172579 1.0931619702183264494652185112479954 GT 1 -485057411992713159563146.4050024243359315728875852839379858 0.0201698703889120883499808979018142 0.0202358610808953035529585976022734 1.0204434108566342845751312053293004 GT 1 -287871733307565819546897240904330.9399204458966511219513646923113185 1.8366395371348746062037317487328462 0.0714169829499696719514112472583767 1.0740954923315625220062702830470288 GT 1 -28996956011892572065712964.7779762121457708349221155426848387 0.0242317126670517650032194757612609 0.0344530947345913280238302745512429 1.0350605969726195050012377994169481 GT 1 -1170128620655329612056763321986735857990.1256350018135295058873903532848085 0.8720523337357659821528208011198031 0.0023675580577257224094724925767511 1.0023703651548228968645682889168881 GT 1 -36083450096570826.1014993861564626828141630569694420 0.7360234382676575260194788193259483 0.0784500761827027045919832918935435 1.0816983266525166816005341448479675 GT 1 -6593521773145877688922513880913688.2231138163837330334951552887977321 0.8293361643085405353561566952300108 0.0666047156336500229455598558982752 1.0689264975829442070047008494966152 GT 1 -15895789349016268776469801990615974.6195794816663683698757762106972099 0.5058859834777958286047297932199444 0.0243599158328036061762772014115177 1.0246615268021633181479803192983430 GT 1 -6.4108496276624524197582902811760905 0.5047170153003930657761904330678235 0.0409135503463454285501868656950288 1.0417740625373226812120343920397405 GT 1 -473320267.4832793653958541713278063638439818 0.5405084442451745927197993175130364 0.0920783773684418494489315342963657 1.0965972227942273685509894259282382 GT 1 -41917284627380523169948.5290569708467088857468813692216940 2.4022017274044940570769177130765844 0.0003274785383281310147054987432246 1.0003275321711340452988178885772797 GT 1 -4215871566663266.3109046972540058772786543685303155 1.0346521391425651931595150853084086 0.0724103639801269443003449502408948 1.0751658465611153819220468550705210 GT 1 -3457136414848953237848647585474185902540.8266995033745487753011003072272473 1.8506785412577782294406972862680257 0.0118062540749268665421109538937974 1.0118765013447408039483674876625920 GT 1 -4479295110462265373575107679292048906576.1008843328752004566478025510465354 1.3153707500044307811146526919999701 0.0873124557905734018728716417471476 1.0913616867427144928543624450098492 GT 1 -3474075.9544186853518716748494168840249469 0.8419780872566907322899324926787545 0.0104182151920588717240464879397908 1.0104728646941792362475789333537640 GT 1 -109690380090294202724264971427976.9083539972557251540170236364471343 3.9532540170127207400994678920560375 0.0923062112360039607189302339783325 1.0968481943021006844592905321802998 LT 1 -12833048588630508136652682790574505805032.0549350340909194185082615340985106 0.6039380538497348466586742701180865 0.0517566277273660572825296641887930 1.0531440878679435870313200375108613 GT 1 -790916.4568895672513337289475737076480888 0.1313444880085064954216943746705278 0.0498432380699303978512882340563136 1.0511282954426571431514569336573373 GT 1 -3049884204295352963122507619470892.1157003467550867068260056144991492 0.9225355542916034066720495490299086 0.0127650594068718148847285805759340 1.0128472328257406555305785449986917 GT 1 -5699259.1580480713756571798905159503591395 1.1913178290224540790085288996285986 0.0367809323865745193089594579827169 1.0374744085132369364045022344308620 GT 1 -74538392357675244721670853.9010906487690370933645360572555194 0.4436649180272884614696225968098673 0.0828633844909752810295004869683189 1.0864988368963561329744647384754260 GT 1 -1623691683561016493033440921.7318638794361757160931865383171457 1.6662158300458132405663031912816954 0.0814779358718036192770775548471068 1.0849893527012742632915333146501571 GT 1 -32857681844900610.2351619193984157948661686177660624 2.3024349339122657693572854587967349 0.0906198906802816429786077703346585 1.0949921101421531858388640729715983 GT 1 -118457626945963523701272691555845344431822.6856855090487274372110334886006725 0.7329537524323147705386667721929095 0.0722635595825774070447734160750396 1.0750075947047755884983940206911526 GT 1 -10422.7428572327116786376902914990493411 1.1570646287752256326118316152118032 0.0132255433304543219897777104893177 1.0133137796745790574216453483534993 GT 1 -1086693751105074520665245998586021.9687300528713955196861070153460229 1.8256270820033154007916354361641488 0.0823212054583979584467303991466984 1.0859078466033948222900682440059054 GT 1 -2847057912727979618578989116847260739.3157093184137339927647948876223587 0.4689650867301423835848714127902458 0.0396738915024799309591189281148324 1.0404823558524144289430286272279926 GT 1 -9327262084.9366339395687823256985903289417276 0.9018026373028583600333716997343789 0.0955551848318265172267069034860237 1.1004339874307535559843523855512100 GT 1 -191651884502348034.5957754096635767449578853919913655 0.4715588604420644675461945536074484 0.0621181736292434614507232656313478 1.0641313225920127382742844944937862 GT 1 -5.6845034099348514110543695959240545 0.2758256975104293526306534566932230 0.0806720551481212188471338197578460 1.0841123706065496727401693686246305 GT 1 -5288691656759865243279092.4594835530668495436756162769178563 1.2531575631851533446942192755922935 0.0674056315329685816178794164878107 1.0697849331560312359978566050178981 GT 1 -253181735726262500768246223900012891.1989563662856902130822387237723104 0.0479672560687140289397495952875875 0.0750690072276334477578195698569632 1.0780361466608623010914687351680871 GT 1 -67405713934103689.6984973954899067934447640702389880 0.7827035087365185039759019970667611 0.0115424877824486182384757840650351 1.0116096193715477351055295092604973 GT 1 -8984179552359221297468188774302173374499871.9248872063631489526609875816592756 0.3533846223291463783409837295208544 0.0878135916899007270804683875800400 1.0919109147167702229794337557342308 GT 1 -32127812734278918222911010619.0157172417797685799911177689414136 0.8785754897335417264831752276617875 0.0283364632827219576361819913719095 1.0287456900880516838287623779894361 GT 1 -48543181729285555871.4397199701223051162914324401914153 0.2569382749544824925666303541831511 0.0470581022336617608226500419409678 1.0482013449028709355537730726040654 GT 1 -1091327702653280.4604330822836665862492701961909559 1.1988369257866771617246781066904798 0.0841734273401435132539094562941493 1.0879282633907748671105464852255276 GT 1 -4602962227077335866.6777278429239693770732672933142346 0.4590402926676430550744849942740883 0.0966395729142070700620590819254589 1.1016336611423800943068621399791296 GT 1 -7156294727901348349505527699385331363149.0231416492090749741929637566635631 0.0908808987876098106110101167530662 0.0836443300901767388729444871362757 1.0873507037437252260975718831865768 GT 1 -28134812423952829503529584.7460377393244726470964505115351222 0.3458876905397464106404783952148610 0.0753578113681819861836543534490113 1.0783484394058040911058344235841316 GT 1 -445454710391.6672708226349804351559267526317677 0.4148473611311248025172604987742921 0.0036706511505292993831195267719643 1.0036774045217086065721354917472822 GT 1 -4.5598111719385237341677603771883779 1.8309717318417104159264825000553496 0.0988685880594019927487587633555856 1.1041041807986221918411958963238775 GT 1 -7655667813230613532108444169805466626963572.1658896234241688146024951515863229 0.9470170053048843493386622084542439 0.0976789274078973125258315138779838 1.1027848659463959794335218822582149 GT 1 -217089614838330204211.4571378827397525195241653190983070 0.0151174808554773035869452053627179 0.0957719792606776048422134451983116 1.1006737150648345581427937748993112 GT 1 -1905997406804319014609121681.6291847767103113648541316627717885 0.0659460403267085382462146946325984 0.0144814404381425347011010318157195 1.0145873199316280823869956753733084 GT 1 -1441672587974837771021802367087608734157703.4432994707458191138000962694879268 3.3219159857337550473400348658889258 0.0334705757125366483250475455818764 1.0340435366301058556953044760948790 GT 1 -8259128420263874.0364328907419812284901832017766537 0.7253123279667337883122959828742305 0.0452735978586750856097037190033621 1.0463304694518509862371081251224435 GT 1 -1490837230228969216897.2680064839866558338221113004947477 0.1598688068759377012028042874498484 0.0458558653086400722033883748758127 1.0469405343638382668334838122388395 GT 1 -24315994590137547126291778864508381695695.8774405375074157748130752080178455 0.2359672561753399229954291238113548 0.0490437310783836157636438659013520 1.0502872018036091686304980308153971 GT 1 -1595036.6678447292119479689427695044540566 1.6494961794833756432446375511528750 0.0692387429186908000298239619199608 1.0717524716676834745579774813228895 GT 1 -129749609788581591504022373068272.2593753857283798453004196783172083 0.7363239645333310000533309573948221 0.0718982805464152800678870899979976 1.0746139407226798744944480559280347 GT 1 -67134452166420279614792040265072740825443.4165725786695477696964606172680079 0.5280341652968235582889764666993314 0.0931411445582517942768475843831486 1.0977684579095946164686669256680367 GT 1 -4217.0262837949876494452103569892656080 3.1893739295641666282350209712422145 0.0067045029393342493765917939832898 1.0067270790836304525681713578867540 GT 1 -290476813036418937095653551863592.8815467612697226405135362317485852 2.2098701962956373006626600740859535 0.0607208458526227074195211760343167 1.0626425551935717184869265341067113 GT 1 -361474.5325513248875645945817279768408678 0.6485473989801160556616782365648526 0.0296357152068136899329349979563578 1.0300837266532779114830638344784027 GT 1 -548358518970132020849.0232167745210012643748841763094309 0.7336425660064694038319988893979352 0.0118807442021838597792977926258174 1.0119518842696391674461978670078695 GT 1 -34985967.9447566174779573241765387541173811 0.2076127521304662875128084150624451 0.0754948424002389187610305741814740 1.0784966493714263860107323790470019 GT 1 -81091407030457158740.6900915235434962819219300989943152 0.1878218988285448452016334639733091 0.0342570147890741303314460335902786 1.0348575410283432550257834862278801 GT 1 -10059920785902100901819788699615300334.7445962269544201527159156552959819 2.7434742061199427208884643237102341 0.0975758794795378836749231098440399 1.1026706692954064922404220542842703 LT 1 -2775806952.1075672523040318345549466414427929 1.2861475166476099027262244800760662 0.0059630717447964180899750667202025 1.0059809218534737083341905298303271 GT 1 -2131489103987068969491328000128634570496423.6377804229394465957087706185555909 0.3471832135598757506235553281385210 0.0906100125416095951800554809869694 1.0949812477041906926965971378300399 GT 1 -696440282983069007241.4836033519816499322643669903709847 1.0750526141877786701904738679881096 0.0154787019086969816404671565945239 1.0155997477278108798818445797481545 GT 1 -18889019061421622915.2712941582254622771207371579031758 1.1801051441490487847573017803665979 0.0353499709846697319995195132539548 1.0359899076545465557879847129217221 GT 1 -3365612549517146450746.0494894902924996072982509277940237 0.6193166377832532518732928172989382 0.0449929602905045630350119221257288 1.0460365671050201823279811003614478 GT 1 -1082478483099287185429515051854341341075465.0512518527252553177007810121579343 1.9164196170106852486324669156072196 0.0754232632640958456924323874260115 1.0784192280993906831392064644461375 GT 1 -406699562.1653842023059515099541779354779224 0.2909079954857536546912172905790033 0.0367761907839922213161769821750177 1.0374694858626467342553782646602628 GT 1 -438283786536750649179752431655139.7478886077732434557895223869028869 0.0194949365115901117687149537494950 0.0564026010259325353507904556330505 1.0580556879445024157727512952360734 GT 1 -83879861600079268172310636553707.5495190060822317904127618590642287 0.2519976664913158618088364116935459 0.0172302437079154407274857483143839 1.0173804118121885549914609578028645 GT 1 -32369396810460722731921189.3075831958166289997754061977365943 0.4602644355908962944555882235223940 0.0517241928421714181470633700885544 1.0531098832202399536439717847876278 GT 1 -224932522836052.5176963532430736129859411708579178 1.9633099300964728304127975938248062 0.0378497166092059536065197168094164 1.0385846207765134630309919442887935 GT 1 -1251286051094623296454503015377.0357712560753162309423467482973375 1.0347210774964372322084106619136021 0.0175521225345282090904188683162143 1.0177079875716993395732293715128287 GT 1 -888249523226417871114480647.4646831121258725825346551026611768 0.2117910831152639992360012032926096 0.0447261177793297667506757904633501 1.0457571919515053004675909041627350 GT 1 -125761877185550940.9733582206500266819037126511561826 0.9939221384645575456016077044237572 0.0209815857717918883654263246712547 1.0212048274066505397115691106892535 GT 1 -638039796664.2900338095829298385682902371152950 0.7597747759049357438172239014746802 0.0869625160038242081285055589506823 1.0909783433743229277769500612104826 GT 1 -399.2929742727110590951493114370943002 0.8979917061969240310853910766016954 0.0838178935880158252063820468833582 1.0875401279407056917394454386689680 GT 1 -28165095866837619285666.4066485182604192906971039563412098 0.8784318159506391113002484816131951 0.0080302613505747732641574029118571 1.0080626775562878147834670426905991 GT 1 -320665014167.7450421323841607227759842219981459 2.1589171926453783654226917465362375 0.0524810984686727208248599169403682 1.0539083933788032166458729516003655 GT 1 -482693.3447862299894040467616680204029641 1.0796819221913992520103867353041594 0.0845294108932185171488280358003847 1.0883170408813875185885624134519788 GT 1 -21723522153712790860860.3925083675395855973899791870766899 1.2541372362517607910628245027252345 0.0936895664327405167944852358268495 1.0983733897210226634974925281109799 GT 1 -26501789562406018408722.2374200214507928104463927862811565 1.7876903223827891325750229869684659 0.0720473252634131363292388438553189 1.0747745445474220405668052521081180 GT 1 -1395775132545658009.2040232409108593878864840808933737 1.5969653532613992560439836993941138 0.0392233058283190452465040102183713 1.0400132652011517238634795201497112 GT 1 -21051420698404876093650570972.7311694387690672015039790349745558 0.7841633088870944684445218085392111 0.0902427731836690629045861580299097 1.0945774987826657397870909892690932 GT 1 -21833661691894963.0727106699463054075695785794853357 0.3815665124490526645775787657527073 0.0357350990076011703218014032287811 1.0363892285598469407321784528428289 GT 1 -8215590503835903853860796433894523352067.3626843205469592571353415689259260 0.4362679071004353932989198109863222 0.0529327777798568334228626630925427 1.0543852039223610032798343642716161 GT 1 -5440365722221870824653194709434067680734.0903520804229910660227205361055828 0.0304619076241726474750489512748575 0.0695185386087420839480927974780779 1.0720531263747584719971700376720757 GT 1 -329328615974736385389884.5380969374819461898116553026870007 1.2575488046062366498928105388796526 0.0335914858644331472134757031743200 1.0341686416835591933271255310442101 GT 1 -176857071847265304169.8877936242011117161319138504285469 0.6053784013226523248956338554352536 0.0296890342292400943823783497373862 1.0301386755917201637024970595228078 GT 1 -3128506458464809133838931.1827687113704156678575272607706507 0.1852953918455306321942364697936256 0.0691211223978764095459444388223260 1.0716261094145502721321405498277521 GT 1 -108604.8605342052331180929721386161637227 0.0343884433490307599990979241973581 0.0261672959991455591687728893134619 1.0265157518984545701840106127781957 GT 1 -3529627960846664128430200423.2614317594833142948303003426429805 3.2090642984210074029322405556705495 0.0175994810605019538117131149770071 1.0177561933529388146473993484039814 GT 1 -9.5346010351947181682632407197521643 0.1898852278020014849820931001643024 0.0032760565032525680252328812767758 1.0032814345253739909140796981745161 GT 1 -1960772987789884857648.0723536160747171740913495204818518 0.9225964138309305908678838789218260 0.0614874694689097700597612886970426 1.0634590713866451555505307974938861 GT 1 -494468567046135963054497179991356694.9103575606986452262199135867081881 1.8634809362239101801057218776932958 0.0666612835270375236008801996096806 1.0689871038539816252032938991493774 GT 1 -7344425978163109.2497008832236446556195968373954490 0.8170449028305591727854623333601412 0.0774639080987576659065112960136853 1.0806287798205921913474197571334720 GT 1 -30267309.2203420536549944707637429544159532 1.3451949567281285910584043107329816 0.0296398185713030844097775303297007 1.0300879553468001700450459479061196 GT 1 -8783128035390557618482031629198317573.1395248084591490128394340153978672 0.0063426598147096533199900243827640 0.0437569019520373459214376861309594 1.0447431115950601338933062677492295 GT 1 -622177627.3355379636937571986488580152630908 0.0748144349150343506346020189396737 0.0771030729045220316902069081995273 1.0802377223342248708738469610881314 GT 1 -274846349238.7162426696230418771919759294326269 1.5226821800923229430377018149649655 0.0852016219082965820607674504254198 1.0890515897999893085055407270215513 GT 1 -183.2936358655985306059440609979669063 0.3693297225415433778550169429780105 0.0235700506350435555361259825217035 1.0238522676800018540989356928735994 GT 1 -84920933747882640631895343476754.5083759197994544588603509780895083 1.5817604644372461079296907221307140 0.0387694205457628864713216158855194 1.0395409617949973232341863915537310 GT 1 -28964811267759673392477203.3236389999834234556802171412835552 0.3277032481568098319396349102436489 0.0747779804113517172610809412797351 1.0777215490932690900652373596734582 GT 1 -135787653646.8174414421863061010680691244790659 1.3997917978216970024008683002612077 0.0146193501016403133329047958466496 1.0147272658639831187856601776735888 GT 1 -45255599716085621221313109781697325515448.0084930151952624216531225643264138 1.7362283080977413246478677668403580 0.0139886987357698223967798521044180 1.0140874627167585705637105234143541 GT 1 -11218138287.2033095736019602105012239027646734 0.3328611945365775637338741509879692 0.0935684979819989254134536144218981 1.0982398147774027768693097334329751 GT 1 -91646679471208545.2190475932037208882523857287707605 3.2157026429844675237245874804263099 0.0851092386722090810299079594579036 1.0889506073607588744085714949961859 LT 1 -111955884993471510796943.4639908420740313947225389519152591 0.6620048524061140267337002698014885 0.0711067730876911192273780123350030 1.0737614801296074187838980718484767 GT 1 -67426.0187363686160329863827411086059361 0.7190077144334004970565629623710194 0.0153582511374957777231874681587925 1.0154774107059601391203568059071269 GT 1 -8803682601093535523765664.1877510817163460355761366079692636 0.1895336027714531653896763666075720 0.0955895188279261509268234200839028 1.1004719495564948720400889966893816 GT 1 -3149223623648.8187670610957150944190883165398544 0.0017965798632636432236946073580248 0.0161923145022843410219966693658434 1.0163248425984377086758229520981283 GT 1 -22005271128426.2961907003222341570794714387974925 2.0718623027452397400402500531775954 0.0304891196574801268869411882231916 1.0309635817295829181674127671559271 GT 1 -132234308385231295975757266049879571174.7109156197890437454374891106103558 0.0736514676700951179638369255640238 0.0172050347125429676974338758127841 1.0173547611733700101572789590255717 GT 1 -303741971702.4102400882713218713397593241902680 2.4482494559486294026086729071962176 0.0711178751069521473967524266830004 1.0737734320798261269414158304290800 GT 1 -4446033618373283801745680824.5531526346641131159457596873918064 0.1393506129970068265918342710345812 0.0143726027198466354685731223466384 1.0144768890241362036672478004410044 GT 1 -3128050912635875579897798840586456.2524616837978950073589811471184708 0.5804501722442174975223420057693376 0.0430599708853583914133017320230264 1.0440145549946892813012598737136359 GT 1 -7094141884001.7243586706557273742377316602006614 0.3957086104307714226320884994147749 0.0500155156831696411413776824241770 1.0513096268189972722668814986430477 GT 1 -419825489920859055463745.6593143398203896722126861432658498 0.2664543073123675550737548506707143 0.0143362573349981772578067448466225 1.0144400143239804592747202742323653 GT 1 -1283227436218300714.2590971184853207945571102752871368 1.7979134133143752789500138617345456 0.0106745092461282541247827451145014 1.0107318905299699620555749879795286 GT 1 -69.8971471002338795695502325590126364 0.2558791091440386933317188594089944 0.0861761659537404269684529425571993 1.0901174678487625136729342734228495 GT 1 -69666154041233775995910.6593898941422546312601967226310008 0.0752814321962052864723625581169486 0.0275320171605870914647088065159823 1.0279181265616607604645811916620996 GT 1 -72619589368992499410066.5284594677922798639292910552594478 1.0511548805978983493351795798242671 0.0277620772370502089681906288338701 1.0281547279694865799312621572936420 GT 1 -22580682.5100768465122756492214223984657225 0.7438504865373414351061869782262639 0.0728228082390320278682314044371132 1.0756105863090186679577135297444833 GT 1 -30761595104352624762762215824864588981.7216881662141872859134710290636503 2.1112261471284810000238970142518251 0.0032812483146115334886643936589279 1.0032866434148710655610756403361648 GT 1 -32119624152488782366352350159943.1832890192283834388773269806110654 0.1943838016345625939085576625926687 0.0290861382441622657581346308975155 1.0295175254849285759665337486963024 GT 1 -1403869719.1017845693748875566037466836656760 0.5705741633214900935302252912250949 0.0584442793802734393394459054096555 1.0602217498217965813621671899864206 GT 1 -9311716632806916359398952877147692308.6958452145711518042992527457572051 1.7061619493354117251831028347844238 0.0077660980111695317451376781042024 1.0077964111957634639819778759236791 GT 1 -230946323104944302266786533867867.0644282069441532463960787771448197 1.4584886931134167719985685952770598 0.0806188830401304273029062787791351 1.0840545342591797185108319091082976 GT 1 -2045690490112864.2341106665984705057475519691142796 0.0877545046285566518774831189193634 0.0134879569381370588627736095077611 1.0135797457259003816644702991557800 GT 1 -1.8887311968079821967203403640442631 1.6719971314768222523615008335948095 0.0064176888797921308910214846910495 1.0064383707792209942133433102524083 GT 1 -252458065826348248285482740.6433285744170173085630025955536980 0.1514529511845124172101967302038273 0.0235863339564380019312853229034292 1.0238689442036787563440080296322119 GT 1 -6450.8409950642411899994012293991237757 0.3875698197626983724267118021043714 0.0708556402103853608787121683030764 1.0734911595713664153964099629560113 GT 1 -18688.7639985205518152002392328838326249 0.6745774943775990301862527485978860 0.0961628506214097406251225572945312 1.1011060793106385207885209945582818 GT 1 -1785381285331566369667.8734223795050306549487669147325278 0.0091780900745897664006678660244181 0.0800359142059211157336018803494775 1.0834206468813706522231573860943065 GT 1 -132373396173089213583243610632278377383693.9785798670294161221245557206613497 0.4231527859662819467533856565922715 0.0157262764415800032174648341891650 1.0158512462652061293430180574465077 GT 1 -358492372696718033479008907981066437613774.5198938285488771823187426225063433 3.1760585887634821784721880394003107 0.0127114493767002241778133300201742 1.0127929310861834959849745925271680 GT 1 -49459642043918.8449114103196746815852623195891060 0.7643018223989985874407517710648371 0.0309997715388692199191419773974835 1.0314904313213978091054338122981206 GT 1 -20110359069.7139938280067414464783444472138031 0.0442767512909173665173029626568331 0.0468203716464934644956887014195327 1.0479519058349591874794781214563436 GT 1 -68855578809073808005612.4192888847319720655935999094056041 0.2455436245095718209201475951943098 0.0536565236311282275393759348428092 1.0551496929865241913254290384187291 GT 1 -13072856233521229543001618199649586678671298.8264356838933792969309995931483917 1.4149867531553977021243431907292137 0.0170431741836876425496812354356248 1.0171900806374512399197543834509931 GT 1 -6753664197225975711830506550449926168311.5012329215783087383747248495455044 0.1528179728503533088089121702477130 0.0283227497940665313526592340918600 1.0287315767747842092641054061037678 GT 1 -10752488.4135514067567280243604017406822313 4.0276179566714970650426080565413621 0.0451990140038143723179826943095836 1.0462523518449897533828606965133880 LT 1 -17082694215771170060.6332294174967008811249923833109477 0.4969136906620308117097203161386265 0.0001623674956283844856584450306588 1.0001623806786572190299923323844995 GT 1 -38497757861190111.7243686473398171121503391191488155 0.6077499773808071916121407295822635 0.0509851886835639034875156872962591 1.0523308732058708755192801423576782 GT 1 -3.9377793513400511743372584933434110 1.6717595531026673428549230498555262 0.0549634828917118774955953672462334 1.0565317097923613170461964893631357 GT 1 -36542814402718890308686832510514.4381360695174539651793481976945986 0.3216138304483370052079558637277562 0.0569009975623164341753056015345377 1.0585840151810456884734530928216253 GT 1 -662454887591905743474197777.5460232223009226826319124299870527 0.0294664801055592671723912967141470 0.0855843672182637452772910661138629 1.0894700704296780422634538689292293 GT 1 -2985502630.8744707971309298142628168471968320 0.7488752194261687853861486516757174 0.0602891529656675417496745148208953 1.0621830605775501980395352485550131 GT 1 -717311776190483328972318004868136481908.9458154026231370537153332686521122 0.7049738445532570043549289307791245 0.0247887594869896286303723572755780 1.0251011745145936067473731842797437 GT 1 -17185389512926754739116105833542890101772.0809795480053055903101459119713425 1.6726801926369142645100725428049387 0.0979996410062854895289337672105545 1.1031403609221263978170783905798855 GT 1 -26873351730582716804133099633460032226992269.1070115735550080017679831464908621 1.4647526115287782786137045106412940 0.0149977099227960671044531755539921 1.0151113128612747921617461516142525 GT 1 -698647574990884005.8707600016956269443571600240703732 0.3549678463328494500177237719023075 0.0509103918727125265546666641131392 1.0522520610919282575958064582405319 GT 1 -173.1593359731918896571535225180492641 0.2857524011214937708177141225303968 0.0735701961215938391555493104799719 1.0764170009641451628435325674518430 GT 1 -6730686148515969447985568014450223967.4636641649422316212658299139788412 0.1033577207063565088058939636783795 0.0246288051625203708097903130964893 1.0249371677831384894956253765610845 GT 1 -172918.4202010966343646331493936468561693 2.8051747560000890072518383098127130 0.0747017831863556103298926243250816 1.0776391968730228419659233951631384 LT 1 -216.5652143492161168943412793346987246 0.7957076919352255734720959635228414 0.0114672185591141166317140233884946 1.0115334741081012631592772394487771 GT 1 -741741483797943058520875002657989805124.0416948435731534004575733169765528 0.4270815069313342929020156768903487 0.0814742421805822357284975355092787 1.0849853313675046584013246332036207 GT 1 -2902773.1274358802846173791769283274354041 0.2754213093138185595049310040006481 0.0361844448926887452457397957509160 1.0368553355542944633910370402862060 GT 1 -7098435.5821504498747580343648134687827111 1.3997539273699967457057605965144333 0.0796525865182152640192397350380493 1.0830040568710376470745756963762890 GT 1 -79765187720632578759.6854305072250339924452812906242063 0.6982373107296902891346646217404792 0.0167088871769614643508042663835502 1.0168500553503266843673715953510859 GT 1 -26591598.2134411657485178073455409873421656 1.5640183001204294637020997279657402 0.0462006197022918623596229948969465 1.0473019228375488098505879273784067 GT 1 -47014172.3837153882965798924026809515071008 0.7641223194298992926988173171727739 0.0710527474818174061640983718783357 1.0737033205551045498613236850641929 GT 1 -210990991.4390593367900247743025777272373725 2.6324734269431872315646966457245268 0.0896395588740307570636166533146597 1.0939146687444241754408717235200510 LT 1 -30513420959563255150308924921532.2794818213612799325337884927592108 0.9927397647178547812954904432256659 0.0846585562725174615968145719101468 1.0884581207707448326258903648079959 GT 1 -8674109007734790055838814530751.6466680267745261878306636576494365 1.5802622712895469840170869452484960 0.0560973708276613193891119930045378 1.0577322652198610704751041406008019 GT 1 -3949959543265474991006605272876714805223985.8851238735953039380663884493867458 0.0440078053574102848535270007196402 0.0486133539142053780352180161425857 1.0498347311495271803439483472935435 GT 1 -57791434999678372.3193501480866107146837023889073421 1.0471108697962869051591610790924740 0.0717517995103738967008581289423074 1.0744561245321311817429957838122399 GT 1 -52081351.9026035413793419540384596160147947 0.5794401590544079037409858647830082 0.0310279039471164479982732026422170 1.0315194641490531358422146656014475 GT 1 -68613802792.2429148554444728958817061118404260 4.9827209507508647399883095726442281 0.0442405591977978736576869172493714 1.0452490285551573455708338524912813 LT 1 -10126638929861736115.9698637791974140219305097524189166 3.1647730159067343903383879793247169 0.0248949802187103099390791266335131 1.0252101011886804839943196501657678 GT 1 -55392199.7788728658565425468457098973142823 0.7959871257101137847099773360865526 0.0608280842619609842642293685271731 1.0627567326786007210186858031631732 GT 1 -2798.4406592544917245048249892514860499 1.0274566449822648317393201300194841 0.0798842178546256770397701484676753 1.0832557666995022730012662298268340 GT 1 -16707519319423520.0226689904271752685004811783543430 1.7179538653566735975231333152118298 0.0787024276331779706144176515329029 1.0819721978790561615403417912581169 GT 1 -79266284.3386670560765123273160622417546311 0.0787726235618550769746166224530229 0.0921706753191502295775748924798137 1.0966988864622810637228990332211182 GT 1 -37926671698022.1237819074990287515176157433339166 1.8058703442644240796453527932500181 0.0571710734405157532941928611626059 1.0588704268470409645396443111210753 GT 1 -723590658407332.0034860437166598277886081831296717 1.0501235227643720696172904711078436 0.0531857919990012083155584262010920 1.0546523951167116221299676712469149 GT 1 -10482322582070221836109120471591343686186.7298133541927759981009251205318570 0.8968639571869346144973891744936395 0.0787407179952561531472931407573418 1.0820137600832213665677103081907316 GT 1 -8285068944388587692441921738220530902178.7785049765095612161506894988006345 0.4017373195113617753462815394039334 0.0033935656149688030806263915794208 1.0033993368190993598786074315477487 GT 1 -40803557648507552292721151331.1539747760481340530392513867482759 0.7093525432793516896560824077929950 0.0279890275170475617314319990809360 1.0283881860227050509262677201613338 GT 1 -30398183028889754303.8995957784243992101867829961028620 0.2176900284421834275933877935887384 0.0895950811984555873940339929418836 1.0938658127231455331591652080581525 GT 1 -218.8729372151871278937982880101393203 0.1479881432050373470477500018650510 0.0389045143226171831734335481918074 1.0396815142013004077693053202571454 GT 1 -1003789681400398951035087773.5374515228204144938253012962969329 0.3658487697615679068409991521147244 0.0333291752118467840597201881714272 1.0338972501799467088170771296224474 GT 1 -52051014574.4916943337211691905870737708914034 1.8778122536726839389222108119107733 0.0669446928321923985235364493103583 1.0692908010409028655346139614430760 GT 1 -3661828195.6764837895088093080894562656161956 0.6580789097485971229832641765705304 0.0708449895998111171020115011308486 1.0734796968213432341896442546045465 GT 1 -778312.3176214502730892116895151591965972 1.1173379644407836956563998479127473 0.0220026016487583639279813099157680 1.0222482691234125468050647123730683 GT 1 -93254046889.7856365483851621963146573710304951 2.5080377013879749612068366798811786 0.0441187877406018834562577047883661 1.0451216286098112682980859600273464 GT 1 -36020561877738780394294187555.3030279623870900598886783598902568 0.4770548305068936927529362861394660 0.0589834004819990708568667200299146 1.0607944992569142183522218810878308 GT 1 -766647616.2600049323165294277995851506111211 1.5496379690735365732606917112507586 0.0672281645583827362320035599899294 1.0695946574077632385981046753345892 GT 1 -10095056661354979389644624120583941.1030497620515010814143587986682808 0.7874946184172082977662501684920091 0.0936394677601025353105450053610214 1.0983181136410326809879944251547802 GT 1 -389009742403196.5378689460054554674844109183002769 0.6207064268592107100530894752569776 0.0129242016530572020795538312238572 1.0130084457932753354054955192564759 GT 1 -94014130350353019570230406901106251.8089364818860535381221403829863633 0.6604757441728678980656837098735196 0.0417499942234961247736826222584187 1.0426465686932921930725955895285225 GT 1 -163440537823566225412602878206487234718618.1026062010063263468022498721396838 1.5897321593812618586142398528202286 0.0738797930384153504535578592594464 1.0767512396274926245141997057932123 GT 1 -6560482268780053350284.9326095936729820510666701878747204 0.6546242008423925858792266672957625 0.0144508242737711532922114679492951 1.0145562543687093439768208587204906 GT 1 -5274.5479681920486344492719765894058629 1.6416948774837994723309147931119786 0.0444713195636461201924510373439452 1.0454904995970220106686228029712972 GT 1 -58821406470847797197598755453866.4227809913897472398483725674711715 3.5697059052006782588793699648432409 0.0275106444584288856891787781557222 1.0282852465727139726671840693469966 GT 2 -3570836023945209593421853282904929554363.8002787565900925077302106528123607 2.2477326460325354498259790587669468 0.0064889467513426171314961004615505 1.0065100914873253806408506728596736 GT 1 -5000481999960713.4455615279460249668238113534214883 0.0799550496855991206819126382557929 0.0120367141000392570069618503053973 1.0121097419450025444795205535035824 GT 1 -2872464173.5046411315771505566464621030025750 0.1507246045225961461401931372905078 0.0625726169991043024571702451616332 1.0646159822699851491583957600816859 GT 1 -364411742402893468927439416.6997675655102795759763668242355510 0.4889099775129531275698575969767694 0.0404065679173234633738805334558255 1.0412455924724128824704252567288915 GT 1 -682642763807466838.4046361897430568628608990996542698 1.3540164191068385522022494721168858 0.0849323780776314637798374073480758 1.0887573126970691290053626065316153 GT 1 -11394067704268608082913822588244.0709779137727304865951379362337788 1.0280133141787283939265259146802080 0.0900777056924600048241058073399182 1.0943960739880844666819703952412550 GT 1 -5829532.0278907770495552378761770023409911 3.1154479000575312640901496344912316 0.0444924217124780864940900588785844 1.0465482817621410559005616341035683 LT 2 -21601.9595013688414330277919065991832656 2.0452557782344915983158011069313415 0.0809528720374682550701347274162166 1.0844178761540125914277695698783614 GT 1 -9060139313347632643402306655.9875835583115914554884650247813927 1.2438434814656263301995217699803974 0.0992582063764523348703138492290564 1.1045366399993244851625259545724851 GT 1 -18798995650646140.0913358750751091192496373139574489 0.0719427341365755786223354931565090 0.0326328408136424694663908543509644 1.0331771666716983869518059172719813 GT 1 -121.6685688425969480831011900468092366 1.4496824644917364292261333504275823 0.0860032842840503604090208132044275 1.0899283008430320079818332136893502 GT 1 -115973.5154990359463850592952501737561415 0.7686640532178272251297920358776060 0.0726755582818511615218178146153029 1.0754517835829039766840433984724546 GT 1 -1079402.3191700508974976978153781039592294 0.5893541978575741098923626941038268 0.0583960383452556490242214243664428 1.0601705156800693354740566342000290 GT 1 -1505863923700.1128829356609196323278232648576009 0.0158773868259670880701707479057773 0.0230535769502093926219339253065171 1.0233234666725125986418184216054847 GT 1 -27531241620143850528382944818149.7633390464833384061997301343407903 1.2509872651721882975175619962371333 0.0434045271145098842475384758933553 1.0443746802523760512348957299562341 GT 1 -2455780969560057125477098662060899875.6535223007748869844560448822325907 0.7252733666475120546088731556730928 0.0174483766219672391268015795858892 1.0176023937406445904367177139164129 GT 1 -29149773707605608917141404055930839462.3313285525962284002200501576613443 2.2269867521683979296853095754146196 0.0937262742603231790232726803958882 1.0984138930294061111781211903437901 GT 1 -833007167455.1167388722267813649254962575978766 0.1433446664807299318666520435759943 0.0029516880587426588522727375368865 1.0029560528811194646608404315186688 GT 1 -797806505055611559825457195453594245.0816408247915729266345551587011782 2.9305384950155554548767380452636350 0.0540019228210173706157482235497066 1.0570556858308057389223167087290848 LT 2 -37759066421444450827963700.6057382590192062780706666972511111 0.9372361904518216705430299353962502 0.0125518360678945689880381355019922 1.0126312758052776755477754316470665 GT 1 -9313950975188755600592022307531226248.5894050974382842831152132385553665 0.6502126931304171624211877939246002 0.0344490154088374362157928765120403 1.0350563720953874130948513193544319 GT 1 -7057257145576830040906393455429055186099.4215220532075611014975128577693918 1.9809914926131317680562902747520416 0.0009524872960814759461546236835315 1.0009529412003543324810775256515195 GT 1 -4508616098578324805409117607472392545618408.9947818945873272760203066300389496 1.5878735570136328659334921883666435 0.0801349266609080800759335417052279 1.0835282791086250560935504197075539 GT 1 -4233491164336943836013409929349.2305290345517557814807213255446428 0.1128435882048999552172899468574160 0.0757827847055077227392016226755682 1.0788081534802303347291064793013375 GT 1 -53221097027126590032276145253540289350.0408911525821499048419790555513624 1.4646264393145431713407601505631343 0.0499797801670729147863174283075983 1.0512720105793922955237242645993549 GT 1 -347156.6272551179842484430990727637094640 1.0966295459859899318688323116620812 0.0485156758191796408030008531733160 1.0497320672310189860503544463621459 GT 1 -64740992894776850644879631611772405.5451010754386228055805020805044831 1.1449254612925081292332017828075395 0.0011735678850166684017121731224590 1.0011742570550516844763387792133769 GT 1 -5818543776259753051030.7923937596182245773201093694512992 3.0596328849172169115911047105723793 0.0645042616858121068693043061234777 1.0666786887950042120083487201057680 LT 1 -39267964641853642.3545242828250857831925938358526281 1.4757924787744062643880574475215430 0.0821074452315861993500639489944263 1.0856749379476147876814103249707493 GT 1 -20105942460972662144331280095.9162051512636744804470189361645035 0.3293621745448636960351434433533033 0.0346689839119685182487138235968610 1.0352842146088142253017301106424182 GT 1 -10517843658645520982451124982.3385797530469795062473512419618452 1.2370914715520032225875864749558024 0.0564762505695932607616902814869647 1.0581337428629801061397802634090758 GT 1 -197822988809827585708127939225.9693533047797643268821143341312268 0.1436070652325580947239787221417108 0.0788079097652437680489379423066537 1.0820866974437724142175689774042039 GT 1 -564330628819573098785564.3846527761285326036942728149130485 1.0822642742905869626001096897250994 0.0682122771853418165027815723582439 1.0706502554593067646547160333488126 GT 1 -1030641168675.8062271531499864951247958711933784 1.6725031532344074545255018533454640 0.0683928601030254466150478236276716 1.0708440768783335079789085438898922 GT 1 -1719972915828.4665427795509021126093793678001883 0.8826335225320722388813276609407563 0.0231570750109760404757601582093584 1.0234294126497156657359963671746602 GT 1 -89143862120335741968341.5084207502799050062331530267445284 0.3291991866994843504968620646738179 0.0404068434282342006926693719698810 1.0412458795845804705981332763562889 GT 1 -24214346.0693248564370992805370676308774366 1.2773569202332271116455667137585893 0.0199819657794873100978050936050379 1.0201843052210097895834234969206278 GT 1 -5611359296204842146.4137779279926864167631564426477650 1.7117809187150722722641751219189731 0.0533678710342074922023970520584187 1.0548447206473725129381039124033516 GT 1 -298687300120507264342.2543719147550979767605292616886123 0.1626483112695144636207183689219341 0.0494913645375098939899481039343082 1.0507580319160803614782582760974163 GT 1 -204096307637.3742985104854846474402550888916380 2.0934606700370533485189183319821758 0.0726234143131719325394870441582014 1.0753955546080746206576299979699582 GT 1 -11160033110.2124458825976610051362008682702588 3.8148290272442800992594946384058724 0.0371727063998872487522806399987670 1.0378812253236787156469386392391475 LT 1 -772442976887697597121984533360845.2433564799757896984173209313216581 0.3668430327132270686899131328269243 0.0148065627251470952828745658056264 1.0149172740705140236762965166856392 GT 1 -2470006774540461990148988.6484375634200296116138375164066461 1.6268594374884916555668674078884142 0.0747908392027400268283474087078253 1.0777354472501147122222160135992074 GT 1 -574995564802314544656923895698566.0469071627366303036752680680782298 0.1967218752315098513819436306939045 0.0023411074350652596857532317560652 1.0023438521116351010787244399685470 GT 1 -6.4144320438242392832323491589677743 1.4230654317392488033972562564154088 0.0337563207715045367542614467171004 1.0343392206506770753829788778530604 GT 1 -345246919424090507724973052102.2128903917895184478106326872439693 2.6760152814182502702728707548144268 0.0655829962681376967992675013669690 1.0701330915518542968319386392961856 GT 2 -227823192.0864118339452038957429035236790414 1.3205299871374411011532449723028670 0.0180343672975783874579414404547382 1.0181989684881323022882287595538192 GT 1 -109880546255704629744604122081644636.0221673814708744977514870884078453 2.7523104155099128643387741978480002 0.0174328712533734415781324070055617 1.0175866131486805117985476310976407 GT 1 -50014071734482314453898.6222500910799694060074072787302547 3.1050887026381661985815777317338450 0.0026873693940792700995988696552514 1.0026909868536295868029435327323517 GT 1 -15975894526993668566399.7611698678245635155384458516864358 0.6839230781988882759044848048174543 0.0874417945535000130248185929371129 1.0915034087690963920896317544823474 GT 1 -5289363445832471186476905659548523214700.4819039062931689509342469249709485 1.8055550121417995867325470918163906 0.0464562384011875971921563581740501 1.0475699592435957525881109407226897 GT 1 -104981032.2641847746247027740949581807210980 2.6676599297729824720774602489548265 0.0812188517526998252519499463238729 1.0882949917294827578336451235704245 LT 2 -14296024298171733.2056516808301110375013254329111354 0.8886145254459853223284075270131082 0.0597915087202798027581371380736490 1.0616536290781561005711462465548437 GT 1 -2260433355460046337983.7431027934375791590966983930570872 0.7724384165822997626240188862429268 0.0452617732407890935278129310349264 1.0463180841814383556396992943094987 GT 1 -7112.8806434611416214169108465358058292 1.5466845656480129000548495452097890 0.0401088021400725124985636998022812 1.0409353365057908400173882323462069 GT 1 -90850982817125.1162729578056769298134439939913761 0.0886615755746176684442424032101008 0.0008764406858670844394809036114049 1.0008768249845647563794691497054828 GT 1 -884530897850631157330493599423080.4119957648069304358827077638542037 0.3925372883315703802817155274792859 0.0362950558296714284357585901889028 1.0369701057340622548326359792231849 GT 1 -5243.1860285911405711029496826594975817 0.5527545724377707665653696597831923 0.0330971395882013309044964993087467 1.0336572431644030582680098212249673 GT 1 -56.6103643257598791542782668062475071 1.2485501590168828719926449328906540 0.0386669717536470975705137697271483 1.0394343866036201297073879984248287 GT 1 -144759145225914967077576660408123113.3413610969401422866537499726744531 2.3090328868805722798130280643204041 0.0628214118897044420174447712352386 1.0648814192694346262737589163545856 GT 1 -1120459980503163276029.8495536242648109168168290894219929 4.1555662456382827901865162301151914 0.0612895231196952570582230324387875 1.0632481786486309086657536109017918 LT 1 -3690408759557306801324296060644730367550691.4038127781800302068609651801701883 0.3588013558771423991511681766142931 0.0825748130016138878903542629514257 1.0861842424342377459986586331409178 GT 1 -9146954773599950320931604309030458.0565771533631834491042381252864075 0.1353627640829551497568595667158547 0.0642883395743449670278450463495257 1.0664479050640603237338850331730705 GT 1 -14927.1424833867411758970755062434121390 0.7775203620930360951992539622313745 0.0891423908804970087982246302280742 1.0933686956734712889910616093509700 GT 1 -2193703903606931702171183853613.8374255808178118570114091100597650 1.8766944937915428751515833255930397 0.0862877211006235498674425791336593 1.0902395504125285127032830133111676 GT 1 -28253058727.2605159865496212278180931245333175 0.1651107701623920669798291184221053 0.0136682862279556953395228789620203 1.0137625572533679734163761236356317 GT 1 -1538495.8263376335361287579429154774749063 0.5581222856709127360192789216172426 0.0862332513306050505860366419083563 1.0901799384889847502138257198692613 GT 1 -264124189751681844307982.6442467813103616246736058699490673 0.7523463841264205515222216418974753 0.0255092123814349886055376877096191 1.0258402135234693495229911291506932 GT 1 -268002732993959505918046.7062415848271093606783648441147199 1.0894777320577154462759624165232666 0.0979538226627913102915271548072709 1.1030895658427519862902204208200359 GT 1 -2241534383874928181866461.9535367866063604903821535266658838 0.7055185054724153250117692622039187 0.0766167594757678086068797451192577 1.0797109188202943899619436288658309 GT 1 -754354424097817744662895.5591784087674556001616671769894459 1.1345825624251698364943318358311514 0.0388855980274478959635123619356109 1.0396618323806090943666340754845038 GT 1 -11398927870224127682126675068995603223224.8647296058369726714839755368873494 0.4997451117589598247664911611714944 0.0666383753363304709876379249945720 1.0689625598067091488409019680565357 GT 1 -114150669626236044503580354268410317686.5848146964211959384447688805170476 0.2866310546802467523798657469572366 0.0598576107732383092290172154576699 1.0617239372888959295517335030913637 GT 1 -669699300021.0541827535613912292462498604382229 0.0117822660945282158448106431278565 0.0506199304168473976606528325645515 1.0519460657299356148850315915114799 GT 1 -3422037345851471916777012077482.6039333269433316714822333306765740 0.5346761602941977990057218312199219 0.0318218516953416147107471370472897 1.0323391711335717583584789124025794 GT 1 -7671416191683993032518.4453953037339361487034923707625864 0.0507544291604333534140542426384879 0.0817429862011194929581784668056892 1.0852779560878663105469798243748853 GT 1 -4950081702668.7229144699472447799814449702837974 0.2793309909790531373463323753737604 0.0141084207417150060464429062152171 1.0142088906098610599161752178360559 GT 1 -8199907008299550411273654.7417716893119000078077650476289314 0.0500556017763067347125294888417621 0.0796439330866232847237929294826026 1.0829946545618833390381808807439239 GT 1 -1464879411772767114138514.7205741077857899702691191574188316 0.2405700247219843137213211673248931 0.0829097721211585590060091252594242 1.0865494169326917569705482351988573 GT 1 -194647163593586959281323.3233234115278710710562432750851456 0.4114098297950977946307437598595656 0.0508577960214258485594614223488964 1.0521966454667504360784098321546564 GT 1 -5443539438115858879840646055027449.7543280652713303316253671203984521 0.3275437301111184381781301304499160 0.0431988099568179500437669071120362 1.0441596520123145175086832857005235 GT 1 -463067656214831914171836.2977435688490645490484902839292628 0.0520265772032834597850260796053330 0.0043645201189271937925686050335588 1.0043740724411958972583815546716379 GT 1 -12902.1817885680131680068189498772089444 1.0769728228443599205161436037957230 0.0685557265279162963901317693404816 1.0710189152366708237150907693423033 GT 1 -3192.6149639633603861765646458636727626 2.2394774500437274472301617854995650 0.0750880877520046919530436683567578 1.0780567760065436424419541945850967 GT 1 -461059587288663781161.0205399970049788515117464784579244 0.7894628815732459728252999531240249 0.0549224013388413899471314795655186 1.0564882398742921292013362781473914 GT 1 -782067401708.3013762028905746974605623521008122 0.1883292315406486395353687487036126 0.0445517529582153424252854506341092 1.0455746799902650270212502482393916 GT 1 -7011676270966.6212655420376455055128904906282160 3.1062971761163624596887975353681983 0.0159165316628408085978733505067613 1.0160445599814733218619546135392908 GT 1 -137232689496468468770436742208508059.4403242938102961785061971355256327 1.8572564895265328729038960111046880 0.0887156496085093603148619967693783 1.0929003004668714534869572346702968 GT 1 -123196803870289217931361264991.6106723308516078403836998471227407 0.5632082599122791054763973397028965 0.0560391724781892856211737453138050 1.0576706099668986751774146246037661 GT 1 -307941.2984622887546746779037322705204886 1.7239401819629095770539609407491894 0.0607046959802683505744905910617543 1.0626253614408465676916203097402473 GT 1 -35458.9228405991947884379429019590663397 0.0407985829445625795459565522225961 0.0706636789223590431499163208794133 1.0732845808421009617224247847452663 GT 1 -17846235809029721.4320377512170353624955104498744177 1.8397758886872844797994581956553039 0.0212740924596020764075184155166525 1.0215036475199148891292753113625129 GT 1 -773840687777874637419.7296794940333129853649887517871487 0.0316270074456920366988136543744501 0.0941747434436477687033794899001949 1.0989088650997645430574169380653225 GT 1 -38931164468394298892199322617026934.1370818873771843015603094269330856 0.9364074765472972655983946753742643 0.0664450031285356725092757490850270 1.0687554030368183522559051172257953 GT 1 -36870604773.8119360690026731010161798693199419 2.0733349543988419285755495573559347 0.0841417882737726763458158220362836 1.0878937169812139143434781870153392 GT 1 -538599797.7277569667528022316775062413379420 0.7341817027353595466508970707923783 0.0369071453450246203308189714940245 1.0376054495530308264567825728682454 GT 1 -176164716.2587481809422053940840210458048292 0.1444062411163652416547877111260124 0.0106199335672023779917903798455559 1.0106767275182308013092104576051843 GT 1 -144889647.9371786979185653189220840516555567 0.2336256842634772836367023603279920 0.0197133709897873486964507273081593 1.0199102714991921515617986537482219 GT 1 -21445243279555652.6055716841224776689539054273884456 0.4409951353864206829796672331149544 0.0067334061930955719341061469943787 1.0067561778506876044579219510368773 GT 1 -556738672828580519568357.6399859210301072850282874251578012 0.5350185550209339033352387690509768 0.0856678859076145545171656545924148 1.0895614101888675026550464346221525 GT 1 -6721741810364989291.4173157291946868165811194678517912 4.6050337025221508167295186286651517 0.0101650112954913012655754041023990 1.0102692216508482284893495988998439 LT 2 -344366.4490410602525598888038644111466486 0.5018270720139529704221947596116078 0.0897276544903224459342246919409023 1.0940114434669350612065385625706791 GT 1 -26950090.3380280452727077705174487782815918 1.0945887688027089356220999016042015 0.0778442233081805702324946886079016 1.0810411144996639846428522003034526 GT 1 -27702223467989452014222969351161422002.8549320393886660526297129249729043 0.1537762887565304182189909040056613 0.0073506736369821412293452918554699 1.0073778229641544010811850452746511 GT 1 -5893746098410613552154480608398212789977949.0682153886420390529614332916884298 1.7573731765958340611790996119813046 0.0039452557294390764929967732140185 1.0039530587809419026732689557404397 GT 1 -1410495680232292074146463733606820.5579566598238825466838598500438688 0.0929233647999827770059979708308284 0.0678059510192948190813265438686573 1.0702142789077853566470539852239951 GT 1 -220945110066248385304699925663295576.8680569844941350112153966813107684 0.5825348109495981483281547310478821 0.0933407953811589955690368578120991 1.0979886385938797374799737698689014 GT 1 -1620842407.5956042211658493522505088520060210 2.3471584350827381696291801370533807 0.0852037962824579234552958249749523 1.0890539666917695544088208083659867 GT 1 -118779931553522509712569.6958763761104324225202196109466556 0.7863845179664374344525360493255869 0.0926810555471310319103674800423976 1.0972612429927200994437188744137901 GT 1 -4.9461340215075956261943397285241870 1.0857467427135094262556962051904430 0.0021946956082861392198953530725258 1.0021971074822249076431470426373897 GT 1 -188709145493186763748.3085989960893566410455777146215076 0.5513991496779538158703516853607671 0.0695312284037266646742335591512569 1.0720667643482623689562345586935953 GT 1 -3190091907308827840603.8071499152138921114369016957697563 0.4502459788612054622097939801156028 0.0069509464047058128240503422665990 1.0069752167660427883660398696578640 GT 1 -86107468637537241267531.5366891040165758262363367305298135 0.0680313442626173390535205406069040 0.0013945997602978431777173824537258 1.0013955731196132501078623632394513 GT 1 -257092896083183977641668046494.3175899741870441654256546667707144 1.6999055820478215604328513934710477 0.0580629633919382021015803326595333 1.0598168467585046429389320183706207 GT 1 -46720615791397727977.9139524144976580279643528887493468 1.4381389526116041181681657855651959 0.0488562388670266239583155337323009 1.0500900594777569864628883644842911 GT 1 -240046960564245626417183641.3783784699638423300804807905436543 0.1553663438690947362574511844833964 0.0230812986623145434348808940201584 1.0233518429526979584638442361402092 GT 1 -4143831172087944143797.0841510583387195574733814179530543 0.3851877264516924260875194470871384 0.0294469200797572265354654640769813 1.0298891844939008407557298053475688 GT 1 -85119102.1746201989808590282984348361661173 0.3800850089788167809921010186774917 0.0055700021926155947289307726522834 1.0055855724995079198997341390829758 GT 1 -345040545436516535.2814928883721553928235309654581926 0.1414799578399447563195044489980500 0.0361459800086307351081855273438601 1.0368154273827281344589254978427600 GT 1 -230312757602069040805228025362891931291390.4731865380357879737748075963428227 0.0267046725680287693351123149912945 0.0457414824682713427762915072326942 1.0468206615053799596814475993985695 GT 1 -272404603609156594987932366848.9157762933286801618310886587463534 0.7519825180611374749714262994651724 0.0546485769776420625760081984244960 1.0561985444030805225028004935930768 GT 1 -59839207285374462923836476.8250318415348567104782606277037221 0.6209547603466361263940241386866687 0.0618253309167070843584815279696601 1.0638191329371442357034758272027716 GT 1 -3911031674918305282073.5921024447317117778075797341308196 1.7170249332875620429775772807719076 0.0911251496365047803114858630755355 1.0955478726511867853465970337309663 GT 1 -2634898472321451770749837552637526132.9162305050122738299749294665329449 0.4821973639947896611428742068824482 0.0847393087389017331913914098914502 1.0885463458032554108403191812047986 GT 1 -171396.7767904533240396384563645746716254 0.1269826003252994661277911716594204 0.0220708249465489006865851686568582 1.0223180297153957598421834249378315 GT 1 -118734531150738118062210823500618345.4325150164638322549750604374573171 1.8639638638723151227693089096038518 0.0472336253072001975830783822577422 1.0483855526082908930574285953247794 GT 1 -11687667052294144729414891536236774.8764119709062392468906658109103755 0.0498100198632954010745657882139856 0.0779124025143317323331632113926211 1.0811150518195826521438694691461845 GT 1 -2597154297878697927376.8592277950862191693846705054023117 0.3090778051631626014617231418667919 0.0547542320628979648833258616401185 1.0563103134101129227196598561235505 GT 1 -5184587953.3040627011574221289191186544929116 0.2498517096528005919204695088340052 0.0193001824013315926572928592819124 1.0194888625748367883543811029151511 GT 1 -46025699958.7030023068723064996511245528863347 0.1393526892225981198462321091278392 0.0906900218337580788850862040162579 1.0950692328515073032810307104484356 GT 1 -97527434660064695414505676100.9523588440924710375903661105418841 1.5280302652568578568012112824863267 0.0106386942729612521034153495271478 1.0106956897798213178761123415298354 GT 1 -1013623835894494894446302588.8303151025330570333399643591882294 0.1542058376450639479479382582268455 0.0394256932893001026031316843627915 1.0402239372351909523042352448754825 GT 1 -2152807945164613180075480312613314888.9146701095269489511548156556831979 0.1000118508664945628468862908791765 0.0862425189910184106390080119835514 1.0901900808009310826572726920736582 GT 1 -3044658694559553009.3578989201885903567756322728059354 5.9990493821514936711033836028548417 0.0151747096058312475725992204641404 1.0152910237001992730672949401471280 LT 1 -1978675375031794395665.4616208636932431243643336156724269 0.1555787036896679517918695003683935 0.0300034572049495546105554990159166 1.0304627716198740419376426355287530 GT 1 -724761635554580472.2723713640816642478829632262942364 0.3468388092460093682845224650086372 0.0155452378270328952869947475695647 1.0156673320115449435430783745102527 GT 1 -25667899273129423.3696529278862558721385372966790939 3.2975505481372586796003313339163499 0.0999942023502620587524435250495496 1.1053540738455326616516755971616388 LT 1 -3858188429.4491187288433433091550385059580387 0.3619336276788516982292505047260855 0.0883369874215313088625562008382503 1.0924848609428171318778736271694958 GT 1 -164396940218052194710423287721170.2579748851811989016249417126556126 0.2777900070722315165417931212467824 0.0156553571075856031227441828719067 1.0157791964101060388934807060346351 GT 1 -13420544429421294539970626188965.6601262620309255729997877431032116 0.1116968963030982621488002670956759 0.0245429384037556341580448889821819 1.0248491367034809085203369380274248 GT 1 -390607006106315575530952847198.1461543687466171189564782116659932 0.8448081441644289592061909356023378 0.0631052318205740352847750918966650 1.0651843102230751719386450802629863 GT 1 -6553636612163282866766158060507266.9133250854299318928496120629036846 2.3626629398589967964000896670173670 0.0388552973110076103853176038754728 1.0396303062285213607720122353088792 GT 1 -9274460.8430732704473748858427336310095117 0.0441455338062165483139100415577011 0.0182012251035090064549136789768469 1.0183689051726821412900172654854056 GT 1 -426.0453921734157785397242398735895839 0.9216239379625119432090995761855553 0.0136004125308590682146205951247812 1.0136937453507224329551988520453455 GT 1 -602608.1046583155600652870727051999198857 0.8764578889119667319659305349802699 0.0845765348597522597113914875447223 1.0883685173351286156415730756871771 GT 1 -781343268868684818509127697.8319488098088447260574086111629312 1.2140680906109762221698739817065017 0.0007135631175740812675956846970810 1.0007138178249091767609154338537973 GT 1 -3148252239167206290942255332074174.3254013175853536582424443557688073 0.4664390525329918336122634530265268 0.0966138487874702293984555369988218 1.1016051855088324087659540284057951 GT 1 -15024136491021220745645163985.8353666758535340003638847870478457 1.2246574217277494421570763832431558 0.0367363304558854470334884768893983 1.0374281045107802624186376838263567 GT 1 -26689943244055806317059791838494551498.2014094947525042460672094795662770 0.1982391472901045186723671736881691 0.0533243351468736542113640474385625 1.0547987314136265337382070925629414 GT 1 -507934640769251146683867837324.9483680116872885597701857337813396 0.3179629586164423931033419545323395 0.0024227212183831948547601347327258 1.0024256607561810478648338194754662 GT 1 -4615545144742785076239356309854742811547.5158691689005699759439372319696772 0.4284024323766358626559728058155378 0.0520569512948612312266727527209050 1.0534608537372525048829686863940698 GT 1 -14260556711564802909194066.5027414014783650667376949334592422 2.0400972873433598877291215823072427 0.0369069244219350772982976177841603 1.0376052201638674279835831650574750 GT 1 -76832151668.1445949915662968149715709631138239 0.3913117640823135389143307380988304 0.0480264391470029149381424414392215 1.0492180167896651488993412410346400 GT 1 -3162349371258715863886.8638456077959263717314574894009347 2.2791658081277963032691625045645889 0.0921365109415380413226312307143871 1.0966612541300300364264169785421404 GT 1 -414683914903625598284469737862699.5277305527266276424567784986685300 1.2208070605651224124799774322674403 0.0078817545325650824805083094857224 1.0079129797409934770793141994399022 GT 1 -395.0802788151258968320034879852542429 0.0798789053239738263754917973267535 0.0062424666809543676212807738030559 1.0062620323439180458826921087878179 GT 1 -65.8619555856807653977314505308640457 0.0630967681690495714210618762877919 0.0032548667332343055520257048835255 1.0032601753342823858363256005164003 GT 1 -9028884939419397710726704235021257818.3288381583362659257898927016501155 0.3441509644966732285247543623760481 0.0409933156618164601543739450269022 1.0418572340101812586439519730445994 GT 1 -206107624758639445089948164549383721247307.5048950048116374977208187082161342 0.9771252784480876417772149009857846 0.0358583154211989139553917563695038 1.0365170194673115393943071661880797 GT 1 -12868149859416143397545426212091243507881.8036888617993107450308123731321234 2.9766938877948889802163022652897554 0.0067411588786162557716297109763087 1.0067639831225299990275581623596455 GT 1 -1206046787141580287816760808760933.3436918768841620305680218132383156 0.2529637972347181956259289801390754 0.0854745943590087885226031903079901 1.0893500306284152969942362197100748 GT 1 -753063875453100.7532216044202833681515399377580796 0.9993362689563092516791974766892687 0.0541300182707463718695782084480847 1.0556501594085069846888526083737945 GT 1 -24019649.0911548997806275974770709808230844 2.5322373580235952288530220101395585 0.0601739377149776522108878687811658 1.0620604609624397648525744701446008 GT 1 -36.4333217992932653802745231844582763 1.1434613589794178537780355808767850 0.0981669739486291589861214911329326 1.1033258912978373174394582945553986 GT 1 -7694880242065313132.3460214440307985200394989729113222 1.7645900094113290007033445709081437 0.0789438882690994124474276587038906 1.0822343197934183500694813803669202 GT 1 -27456506154061.3972555889940668596001887371017385 1.3683812569437916418045896764166446 0.0505487626155139636608904916273853 1.0518711061470536470995409978401158 GT 1 -1843462222535810.7558594919876382568245972796208951 1.2908009203090942899981927416788539 0.0621397354664098468331154608737078 1.0641543127858905538931897838688832 GT 1 -13697635286826215863.1064468010041112597042438332032648 2.4899592416952602523263537695991090 0.0107319479868950957905871966895018 1.0107899507020482066015368197404321 GT 1 -171679861161425117741.5270526220833906561487129757807889 0.0362456327097675947865947754648135 0.0512715176464554807592554288261563 1.0526326305257563854271471294632925 GT 1 -16075151869559201686613045098872759794142707.4092844535306502193572284080246006 0.3617447540052767820049577443741681 0.0043559114916799878597297595840686 1.0043654261140965613453335468311016 GT 1 -355.8538384733019250639756070851711766 0.0312573631530560044207478370780708 0.0288337514939308916409938975146853 1.0292576116427357592442925529665768 GT 1 -1447.4307025411190463906315614622443516 1.4156424301296512034641138188509120 0.0487332090010532433692030358333290 1.0499607184519652369992349654970721 GT 1 -44767187482914401494010396682074270.1866157072949238846402406586212581 0.1516174145426916285643575424209538 0.0882691632641340288034492465342259 1.0924104676267992404888082227343166 GT 1 -105065836990427594872324952.9645345589292310451453000857474459 1.6794852154727493674012362975967000 0.0690071226052601865304280583393908 1.0715036522233363965441767225350063 GT 1 -63377.1940885211184159292066573594032134 1.3778440792777263202657810937195379 0.0644816602979213406411219458218734 1.0666545292890363803039748409354489 GT 1 -308899163207400269199991578215647325102.1290498603566748631650604524805039 0.8269412541162971267602322960300702 0.0842974669853691957100245726996879 1.0880637126664986555416164819765215 GT 1 -1308252574223414166368036370490.9615743484076130800588869525575428 0.5619456600703675821712489790440564 0.0738223884561794317837228990898157 1.0766892576052920956468068023702434 GT 1 -380255411691381805944.1574943399091222198038224639666932 0.3967173938580189885223003340851761 0.0781585790620640967609786015410988 1.0813820648626394177063705712501364 GT 1 -287717786577003703638356203310467508942.6292180663746500837619825640302286 0.2066012143056315281579345197009866 0.0600904695798794637864542952285543 1.0619716525837752658956115381442841 GT 1 -8847837471148272804609115880.3282430497138004907946204508461254 1.2247966410585348369150084738560841 0.0897088952305084913210776634684985 1.0939908352757602444803546726924061 GT 1 -2289059825433922948514772010238877227081.6397953568278438048720498679957968 0.7452535406259076916088557974793900 0.0936810772011542106012523339467248 1.0983640229615618246088706933091020 GT 1 -6482835208552318729816883192251578401.8409862763557835309438306156136256 0.6563140416211800170166830771478237 0.0902455298858768855067249953739129 1.0945805289387372564616869769084327 GT 1 -1705785659135.0020882703879097870857562778759423 0.9845998342528934474610974099581404 0.0496845580207265884810447840593432 1.0509613053133133510279954041912627 GT 1 -2048901228497.8475408919879707698627064664292479 1.5399551486518455513832288993954670 0.0198955989473949738150724552108483 1.0200961813052849081901733842254075 GT 1 -239349.8850435994663697612158124216854684 0.2438081584673697501710113389256705 0.0137646462974555230600242132915776 1.0138602574240393243031097181408211 GT 1 -11999083045359360552221857628881167.0921151604398886856708781379525721 2.9217707739742638353351465884741352 0.0013322420259360466221325044699570 1.0013331302493172040821976350992316 GT 1 -96790.1255687096051218711314106089412148 1.4486023273469879283593987286589159 0.0531497142399374813545311951022487 1.0546142914724948612599036897588252 GT 1 -253252986182481769018113199516.4954663148814050349932674521547318 1.2493540752623931709297490975696708 0.0763545600294203185337367630138847 1.0794270039565159658188610057595327 GT 1 -10440011279313394759289602641226954.7250862564354985366166527351801758 0.4341133724008973932249654635418052 0.0552958635045439348268994844199826 1.0568834835827232240886164555897685 GT 1 -9324676104314255097629993454.5720442250033356817695698299506356 1.6439714676225866990781494010843557 0.0578407285855543066124710746475422 1.0595809407631813031052862532587636 GT 1 -7342069997.2780601973708699111696356572119222 3.9849967464868166743876276805819564 0.0565506627108035743390306629913003 1.0582126121820738378836068443806919 LT 1 -1444091.9418122096373220485018080062545626 0.6025764279241811665545658877617780 0.0121201436984737685820606604741558 1.0121941915621833267329898883651374 GT 1 -48685086154824561428774947509.0669980332964039834546841566908999 0.0527566795389470744965840516519460 0.0155567506092525343090045585883420 1.0156790266571305995416288387842325 GT 1 -161031.4503776757987014984542626713080195 1.3533653584694534757463921508181633 0.0777752775142304094952542446265612 1.0809663514081944985783575002410529 GT 1 -38650879754190305771.5321976630746578276275598219487384 0.1063791154749215808198202983875639 0.0535619551527233852902103666702409 1.0550497675831709614984342349589908 GT 1 -52471625403053651716.0561927194571933982080660914114834 0.3788623970564528495553355074739020 0.0117855545853308500551904981826038 1.0118555547713684867425746380347673 GT 1 -6568892986452677267.1620817000549844511692364695682594 2.3192057405369489985617874700791515 0.0875919977066588717256351756826049 1.0916680180126659390397350843968751 GT 1 -1.8705929632479628303485043360301148 0.6631026299854658517860429780305595 0.0525495626209041591386924367228519 1.0539806522284377903207026499008528 GT 1 -42755906100377378980461952.9640499275089795139821534265258612 0.1300517155935625014966845285680004 0.0281471885890068052252108099347087 1.0285509145776775931533199308812072 GT 1 -6266769122983567497.2543147218240247342966215388411022 1.7238118671247721153266344197900510 0.0816292256624478933251104559863814 1.0851540762908253308809659175423937 GT 1 -2731956141.7973253672273409184398910975019485 3.7727095580461989494027838789586274 0.0588093759067948998382220816626215 1.0606095838304755013017722267807061 LT 1 -151082079170728152202.8128320097983831714338315486097336 0.0070683872215688733190040815577164 0.0470993440276965210535566100070432 1.0482446242324884790165657157197890 GT 1 -4497092467120779746691615343227624.5794443232606843052738990484399977 1.0717220166217141560801273651459447 0.0312753430035463245023032409700165 1.0317748591765624212834679941561174 GT 1 -5530572137530478.5059363116109126078363880970173809 1.2866804887901201667690083652162115 0.0739243728194859219764424487205999 1.0767993768495481188150627464953679 GT 1 -4.2426325230460840449771604856229741 1.0651585409055891698964969607317345 0.0642287450826734632974052429761253 1.0663842181437009946005102904822428 GT 1 -417891.2583275871644788464301423702848029 0.6532603121306189758947329595820465 0.0699933493963528165594147072723949 1.0725635416736876429941447513776034 GT 1 -183184607700363347592039037052031607563879.5379204985434126024387924855906695 1.6365328346123766878758388756246893 0.0304991573476199321490533826389886 1.0309739351379928386760169417936935 GT 1 -3098978765828567482468103642952186.9723847491532816659950205040296227 3.4503445765792910435873204515427187 0.0255828017081774399278040917437955 1.0259157320469804011520644563723414 GT 1 -11755006040801880.7089682919020737979488294198127110 0.5284744709161036918808136172324508 0.0062526925303514687462417516544577 1.0062723224817706243660900045196689 GT 1 -81185871659.5070085542201089747470792137967979 0.9599247117997107798278742844590872 0.0666686456432644438123008159006820 1.0689949918212684056342255474921351 GT 1 -4301268675.4146813194715496830768006204660728 0.7807879374742490485385462667143194 0.0720264567581128646489022010930692 1.0747520560399598401324125811959241 GT 1 -1037054649234587831391393915994015556196639.4925518486078485282077977078366658 0.5514030133043382889416895597429377 0.0936600277869000972311648762561342 1.0983407980577335499397496943889609 GT 1 -2639342.3240585244302642773011970512656943 4.3771840211307984656402198323557640 0.0097357274161000029439608156136211 1.0097834294722394655457304452978146 GT 1 -1667415569755108608365038186582.9403081639676634209617016942220047 2.0876938580482359661959850513254246 0.0768116439937444950555279669311908 1.0799219959527125646193343640397440 GT 1 -7000351671445337187969254234493.6176707456612066690230862824429435 0.9535495917042647796925624315157113 0.0064942734496339112854742625973595 1.0065154529904042279992463774899295 GT 1 -311614814621527379614399880042.9809686395494546966263779545594181 0.2864504257363748205439613363290533 0.0765491416443774945231515683458604 1.0796376931510677499819412414105188 GT 1 -95497361134408774159200134697993736275.6710584563817313264867266856971242 1.8014459488496729266109301502680150 0.0919044691110398863427869368021681 1.0964056956849195698849510933709388 GT 1 -641847543847043229709154032.0255948559861038538493968849564247 0.3275017802663766503605719914828932 0.0653613601210801655521938335049389 1.0675953058095594987828960002310509 GT 1 -30379756128360653619521521934919329911.6824535899690517740455923104170474 2.3704874135344630389699666407096148 0.0012764367866750973899740649820302 1.0012772521260035460848930406068981 GT 1 -791098394545138359126008339700312440180545.7812001172821444421131411353483054 0.0325252749144489911385695036700961 0.0314102779787006781469491668670264 1.0319141602387276299700768288688627 GT 1 -144545140324444938.9540019614835995176858304452108462 0.0845212862108166082114051219297881 0.0553031832747168339097287790654100 1.0568912318271183146763064602047856 GT 1 -173947774352065912529175543283721377234.8232820176802009338675570603012830 0.0264001083888177380444398522546170 0.0918038244274898904276876392209471 1.0962948713241685276137692128465860 GT 1 -568801472758618761827587893.1092403910072426595040398211599851 1.1120718950493543026989491047354689 0.0907054320378684098724246238193221 1.0950861801357791991097881767993640 GT 1 -2468524674260713482837980138397035946917697.3624308654292835290904319307224760 0.0200678883616683992984062407496876 0.0865774250148584723359634803391102 1.0905566632036799033149618334570155 GT 1 -16076805799234583424671672795766102.7944703935710997062299626556809473 1.5325553738003276877503955715297282 0.0272965748191712527594713950498165 1.0276760478002777185572859575251858 GT 1 -84249794546154580568799160146758565104.0313615446099933985840971093655026 2.7424972500373000943824992447958937 0.0994581845390368239958489144027180 1.1047586796186243355039323204215323 LT 1 -514324965002204.3014514491373955117856759201929837 0.2486209594242722579567248108906551 0.0250604456648781078068246993850649 1.0253798054598147814805980030907589 GT 1 -414875753901657.3478976263475560417114425445379908 1.8353801895855482699382031798238981 0.0361054568143264017217549448164922 1.0367733853912730687537901844700097 GT 1 -2316982942331581369356097147296929560458.5232804785582875940999926893987995 2.4179710174909872346985229323696114 0.0133986162744577418520531294389137 1.0134891876641818160769710496223330 GT 1 -9419888394112056236772118366650.1481137723432844074532741124605507 0.2459384537391153108352337053365836 0.0463062373812373216513324582139780 1.0474126626107905733486661612000927 GT 1 -450537538801897313.0080303411618710660899928355621349 1.9326764193537111921794755894252937 0.0955298469709116556210921377711365 1.1004059730007090414426431710313521 GT 1 -11513353760417869191704363316641.0999944238611685090628729040913299 0.2553428768776208198400058471626828 0.0583044764952966548036923530682694 1.0600732801094629074964345962674386 GT 1 -11074337724325.9150640736090367150417079156037957 0.0839886621819506749731589365357686 0.0620631186114120390716597957104513 1.0640726228705316643386761247127625 GT 1 -20836241390036260284635636969735045683728174.3634275112869525581583314446501884 2.7440748386959860753402340911338102 0.0022219261526750639118277926302435 1.0022243982932103587289582013131883 GT 1 -19564.7875864879061421305700280693153754 0.2297587704613147464371315745287023 0.0304478551765319137404922489027720 1.0309210204714712485888967147928269 GT 1 -4192483206947100971214318310.5598505432668495169198427986681396 0.3689606457751878655931170208541548 0.0396846543895854663362808869372487 1.0404935634487959690804474197007565 GT 1 -317763308.1423974614835726762808891521662410 0.4986113762341042646284733243221000 0.0119318904630419721633841952960314 1.0120036468320021425267864521331763 GT 1 -238025302933815484416910.7910999451067178444048228128257405 2.0371035769140081258612595806315722 0.0007429694226931903009771351599504 1.0007432455612581973061043724409479 GT 1 -121029937855833823107651.9881921049078947841531002841092022 1.0432440473538858603380155613045378 0.0353099548541579466820946467474836 1.0359484259779324198537806344336862 GT 1 -175862486661292255528985083277746.9710450399827940250051840305694317 0.1087859880167436760075456755841470 0.0859960116463694414915516706873490 1.0899203439120912631516337127531699 GT 1 -64189413128014.3275787081529056263558633842075954 0.5357389016521288903271026083057236 0.0919315537927824726581193120401453 1.0964355219363882277678498390198999 GT 1 -19080415923957650393161760737428448147.0208365223498104787684913337910478 2.7998086077775154062215296156994996 0.0636175026600983149742175327866558 1.0678915326011568672635978256130693 LT 2 -20157282976591535.7296277102151498118002427967736298 1.5755540243953663346441743627917859 0.0739837495656821260623341213766468 1.0768634954248026178591634124406181 GT 1 -74361652386.0660874883277358007477604057548354 0.7179903214443928891861813029424058 0.0239884453815341433293277508897198 1.0242808538906938628857586551856024 GT 1 -94939854252591036979841.8868543292074357008627701311099407 0.0977379073944030007181901679162489 0.0080236281681376162256808614139789 1.0080559906988150857444437529941322 GT 1 -25119813307259555586374779.3570818991507199294870744033828499 1.1614887642173579139177328328300679 0.0911642437443484012711650180552307 1.0955908873177759427441320903259863 GT 1 -982761892877228467218255222.8696847826226326973551751921287794 1.4236345192716730173185421636145075 0.0023823455541132873044518540915914 1.0023851878544078804683744354075272 GT 1 -12161733944195695672847074.1003952786885467556811064310445097 0.1544671047644053402611980201428371 0.0735213585323061978196853570224943 1.0763642864445242774945764199542443 GT 1 -66541040335076098.2872053356865422382094731756153772 0.1577532556752431276694416817948477 0.0738859217733167438082679400509483 1.0767578572945452487713120821914984 GT 1 -9820400936253931288491553237573.0609241533518038561832318601243885 0.4693933579546285706055287577265657 0.0010621151469565757766973441739097 1.0010626795909543474861714568113800 GT 1 -142800174246134557.6878452139010824310213969422904618 0.9794043078508698850480478357286980 0.0876143560242904286457673418103384 1.0916925230493624326804829471404151 GT 1 -10284821333890879117509870646761379584354.9214375916898043225267894950145421 0.5458627123201456572823274843579353 0.0631585857824492355000576778197027 1.0652412595016244787630194451135296 GT 1 -25854367796522264728463047375459553.3314215492111543525230800074112994 2.6678713841255053670957522504876655 0.0133443768409294622497345429006297 1.0134342131389651812071637549861391 GT 1 -14847.6292997580295281808634125673173883 0.7453891402270206307650424260865864 0.0814037964735017639084817010329035 1.0849086399897984234360880573378710 GT 1 -4739818551851916223201817722978965.5742401690102297327433679079080914 4.1297463287673763516392155304372840 0.0837739672657477380459124332532688 1.0874921841214897744533091183802597 LT 1 -79213011105850150913302.9948420690867106988541808820380763 0.5289590118889356506360980928735399 0.0732222312494216424177660738196746 1.0760414738171588650339141470475898 GT 1 -19167795272522.5080431838286978257807601213674458 1.0551192865123132100320088485222349 0.0802564097247842028564664478801661 1.0836603540074397167721293530277767 GT 1 -301875839.9447136862684903302846684587118851 1.3808052432285964593540910314837800 0.0162267272123655508834877039638645 1.0163598223129341406158198412615697 GT 1 -2305343.0675065507595153114859981713939106 0.4824685034857135687904474716386636 0.0543267839869851128596689425081822 1.0558582072259539573506372371641167 GT 1 -50187056111167161851728053446.0751996534386330270658123631567449 1.3880964879432663931586217673269929 0.0864750171897328892882316739901982 1.0904445550867327300403316801495501 GT 1 -1148680016268232608772244793781941505460677.8487514754582060261355769878018131 0.2423442300240177854603057439057455 0.0247159296722791309143925495098271 1.0250264962373995413570302446044485 GT 1 -189835266887942944647632380668745012.4583039131518548563417112333675552 0.2525838584126854494728502651212646 0.0801428329788980855080822560125378 1.0835368742300152352450357035069101 GT 1 -592892091612500320850794.6690645468896563970517571282619977 0.1136147375816453844345825168901739 0.0779162071970004003055893806117691 1.0811191779899469780149148456599656 GT 1 -440927724638038617292005404840235316.3818213861017375963354872631212220 1.5596082375093408515587453555587879 0.0002132115571603938907541219863649 1.0002132342899757706659248481821229 GT 1 -246656607257948950527719244383291.4238164743286937192003860068380625 0.7952576419400259259493098524204799 0.0106750593236690132320764732228340 1.0107324465428280407975694593944876 GT 1 -965841153399847294041396897732589.9080910806174860448099119302523538 0.4213191473712964248498750204741825 0.0331312827590338359361576570521379 1.0336925556813834726689893188456208 GT 1 -22567.0190279614966129601138627405953583 0.2205567453125474777898977526030411 0.0818716322005334713705476254060850 1.0854180639333256918238282281504446 GT 1 -270639713538188.6264599666608213053066321017931285 0.8168415987897423920816753697151617 0.0523923031667031926484314729105926 1.0538146842808346356944605560552683 GT 1 -1116863817158260118300260099910.5400759383604308358192223016794210 0.3998367145539203720438352572077465 0.0366544393880181038016262588025152 1.0373430939475224233488230310115446 GT 1 -590103636309741555015226.0682385585125129290101959362837326 0.0154292862188984007205852456555739 0.0636501959035972619491125880102842 1.0657661499961223990259086400691819 GT 1 -12290226877826374101404521104702.6980142567807412219180712385676209 0.3028963005187781371119945978010917 0.0165757000562198620754507426284248 1.0167146141776174779458967790543568 GT 1 -318677982856660324742429737.4671348047120314609199718152334584 0.0530251496385407141316235467236081 0.0821859523194114353039450834533501 1.0857604713196344373538317530964575 GT 1 -3139798961151165674652524926.8864991376328199471043167741543089 0.0718475609510934386235534454025823 0.0472986327852272469090923293979617 1.0484537851756784587215969201174975 GT 1 -75089009695685465472050966.3551714312968414292581066692128226 1.0032648764685334017706494912168404 0.0328478248532933137174928411644715 1.0333994276093074467360361483148162 GT 1 -27753335816966796.8899215833633820241138493940570711 2.9062348165809092093743071802556702 0.0517576426451079972838030682877987 1.0531451581820789213692005582357825 GT 1 -1449783320032648876701238622615682.4058028939043051331412876074518238 0.2380114357036518062798179466241947 0.0309993890132109441242339386303766 1.0314900365582475673642299452900517 GT 1 -235662789142671691635625252253447869510.6632471713276424511185812114236552 0.4189642633268341086678092092993524 0.0720284748110459039567294325238125 1.0747542307303290398204033035840920 GT 1 -33477740880144096.4775268764469443716232728607776269 1.4137131786468584156176542927502139 0.0310432255739827156481528214513787 1.0315352765218393471451240030831589 GT 1 -728067383637212888409182174812844459.5844873064917868393121844878348451 1.2903543553558062028544497427307772 0.0232779851638460045785452549715447 1.0235531967641410315194102335323184 GT 1 -37341.5029039521081843888387434331863054 2.4646066640521677852756707641085171 0.0981643374433793402080691989013953 1.1086607856442353038500471684042752 LT 2 -2481366649186937340302.2460475353264095473691550436615285 0.5346982144471428590895242344874432 0.0671230121613718538463518478259546 1.0694819326593431726573623906600588 GT 1 -41309866414391840658720992917364542.3406874989218029630601293507421045 0.3440010255568066092616770836038674 0.0030463537641735839521782620896247 1.0030510033450483875207876328425294 GT 1 -14720421551398.7385972612695319455623068740714326 3.5189632376609280751634380950360860 0.0901876598883240348875502789954634 1.0945169203949375580005653406000304 LT 1 -17489605961896652430192.6643284010119535973446628118768663 1.0291741367298336576071687901241013 0.0190961267518322781435261604808707 1.0192808127519418654959096844170481 GT 1 -4744049317843926.5321444720663382231711489730308839 0.1107116144769682108170263223748184 0.0667423981424952032394309704683701 1.0690740156460088269161396850449875 GT 1 -1265434135277029636202717743532749557186.5037782769012677511928747362629326 0.8475069790710280726812186436253100 0.0561621198964252308999549458510907 1.0578008647635707505594354078644792 GT 1 -772580300133781409290126726142457168.0566873935998463642087202080305591 0.6276336914427474280131226160459067 0.0056508765766929034590587773917324 1.0056669031845081144798507091375522 GT 1 -18028922844151564443387371499585385741.5070262152512218803633053457009191 2.2158356423625148255469763936816774 0.0443462141493383196674605118028690 1.0453595802141861662470708642435630 GT 1 -1915151638772980.0962299922392851014306695332153654 1.3600979208008670798370661755927726 0.0003365770627806329995287291442566 1.0003366337175530492378731044173080 GT 1 -37605495493525217720831876220468282637927.6762764880654642105457439926928612 0.6137389683550126713302194885156766 0.0839345590918824320365681892131718 1.0876674748204380849867510816120968 GT 1 -35757.6954408648556972842387903635585725 3.3171367926923918080492928088879951 0.0046151530232604929545040474033072 1.0046258357228422494754458888774584 GT 1 -56638018237491783.1911402279777116096772719042940719 0.0499884502744810882542872989218436 0.0959759773538040735805285551510680 1.1008993452193676348145464270282582 GT 1 -225.5851471242497878225800181056900479 0.4514136553089329644782332430639316 0.0385916862345879503290402235221968 1.0393560759983893186484252956035462 GT 1 -6968788084616.1995888550383470124517011842056217 0.6426666193004653886757738228667238 0.0795142212686649170685519815070461 1.0828537279326023585345976750811484 GT 1 -1859285343168.2120866858093467833014724140149213 0.3731055565026095325288792601027666 0.0245268065421764489812693862366931 1.0248325990937557410138248360251376 GT 1 -4673200770293463964259244887915924583.1801688600882252751333793927941155 0.1581497277789439024896977272704426 0.0401431078047180848224722626403276 1.0409710762623004947576075680109113 GT 1 -182325862213755584840540927936924582.5208785135261870277574896108099538 1.0337922631876195275715731860405765 0.0147831868166862449689521902631915 1.0148935471248624655568878236594140 GT 1 -1787880071123241329775257329900578666.0570827023220262541918677539302012 1.1284120173052679190185433858171872 0.0335222907369480961421503342769062 1.0340970439592058751179559006919294 GT 1 -1143864935336836.9256586670629267883200782637654656 0.1515220798065398625725860618493366 0.0114584928688583422208211951918573 1.0115246472366920625169155235486503 GT 1 -110043890871847163206134749556.7782288705527804392958938445292168 0.0101758362276082376253038201547489 0.0434361767627092497055944518915770 1.0444077665178704029604203810123715 GT 1 -25911427370.7537126306863678296478085279153194 1.2345774892200969017826909489450481 0.0116759081590915445240569473103042 1.0117446068446925683638394153973306 GT 1 -3636248132.7398660372475723926076566097252120 0.1917971039819058408341361119028861 0.0800328543839554958292467418665952 1.0834173208636223935804765810459941 GT 1 -105265503634486073399227985844783.8657123869419658524411757440450125 0.1681403476902913919897402774572050 0.0482419637759178653010429121808903 1.0494444401259869745860112965050540 GT 1 -4549623410479865.5085903260531742281273414151926586 1.0760245306795283402522897797254463 0.0853478186057875156330873987696915 1.0892114155980072916100868636059350 GT 1 -146892327518659641371045109.4750873905765793067999139865111905 3.5014923177842198801699124200230625 0.0436336007784121439956572795766368 1.0446141765730684069892361884655929 LT 1 -48026279750888957779424422694497602583.1835222965812465951694257124744464 1.3433390429649146364931860620133565 0.0315497930847883304722847539900637 1.0320582100378512844751810288493209 GT 1 -1302494403277578117536518706039865764071080.4857611462282168882463446901858010 1.1776977288252846152580781147033692 0.0423446088598619571890983166658329 1.0432672826976623035311777838497469 GT 1 -614.8798200397660454171861048580540632 0.6374938371359975087063383530658131 0.0521656345331025807794857932527234 1.0535755119640548144582108091758142 GT 1 -478897784611067.7533178710370903343891412181945033 0.1995245549975492042255474801114146 0.0232930224254002936743599715963421 1.0235685925237135649713658287037971 GT 1 -59991556415013077130148611803.5343860372175607159354602059248519 0.7002929215901840508970493900828243 0.0385707888186293616808099079531102 1.0393343399799392004867442899035589 GT 1 -29380849456.8138547458713888677094967825474500 1.5297385176114846813067054864035872 0.0530167240699222789857119657582637 1.0544738460047156146927267355048464 GT 1 -67198159310118397212870.0236037354159456751894125571918493 0.4626757047715100250917812319852578 0.0730332019293247635827418787664443 1.0758375305941977754647057820664879 GT 1 -178644819483993667.5275968828280684355698045849662994 1.1816607058680337653830173729547252 0.0875040477267653525749460216530355 1.0915716294002772927812632744503556 GT 1 -1279154126261851668055536983580689.9295959427045083791599261216619409 2.0582962742360544789169681879535547 0.0800137504044594992980140139449722 1.0833965551425488050100965085778394 GT 1 -40397.0518729913074500103558785264697954 1.3486197049158298094902816160556859 0.0568734263188660859815188731023684 1.0585547808796965956915699764878684 GT 1 -15959485362157500101715.7609788189479342359321545156603081 0.3518928008107905094565237246439772 0.0835815644575042584894521421380799 1.0872822112519224488580864352958359 GT 1 -342980742384262243188831084070682242391.2921956733032760706767998263320545 1.0108133609453989254995095256370401 0.0157558423073948387314716327581468 1.0158812849720918083195610851777697 GT 1 -755144938998453381415146522680318.5829180649594639176694614960800882 1.0879073668108621068588378899866305 0.0205426175750187018682690958649323 1.0207565520642906803834353530352327 GT 1 -33469709980352.2148296580408298411776329063505256 0.2239487781791345339781556505717951 0.0093519935469939712611295944175211 1.0093959980064780743311033294241304 GT 1 -3364686909.7015653514828075739080231211609776 2.5477216157827668669091751343423337 0.0726452169146379070026422257197599 1.0754190648606471123521626098545244 GT 1 -6171.0063710549667535043072535552700215 0.7010621325794658241623334822546296 0.0856589117748185961000105843266458 1.0895515952773954505659826216480647 GT 1 -9801207650006.5468164490053937472003153732489887 2.9737735607255394758850246400194095 0.0323122726684769842624969570773712 1.0328458394826542057862706355387286 GT 1 -28614283431.1511121203016800422771563890544076 1.2324047419967468478916317030670118 0.0659017494959134049679705314122551 1.0681736530265239854049672813802445 GT 1 -7.7948749012610977569684113659807509 0.2094865968604937228625261408386545 0.0756894925757319127004703738187966 1.0787072167956370353716995223899661 GT 1 -1528.4030620010498883895826504931224766 0.0239278957482870480103082486419336 0.0259197207502160653963609325052304 1.0262615565084228852998313606674483 GT 1 -222290838794460072598853753321814045747.8396696560386873957074667601028631 0.3796665168840579257776858515758918 0.0865396368738858651026103623168826 1.0905152942246504487614577640146552 GT 1 -101.2026918052154318846539743173447479 0.4536640647595377773695953415820490 0.0422258022884794357428181499062899 1.0431432305558071623837122496959550 GT 1 -820958276834209816878367935690682197322.2985677347007550220485308505690901 0.5844680991081061199124071596439171 0.0755187702688036249322186618175720 1.0785225315182393565389448441037825 GT 1 -23856602819501843.4269821650796345058741517044930496 1.2561202665003050253543914242152819 0.0192161024570290110329184629187058 1.0194031316113778256225667841591641 GT 1 -4595822313645775271.3461042774924723075459253360149434 1.5329425070565264181199450203913643 0.0817752351809811639044673630560419 1.0853130764797378331437828251608296 GT 1 -74260043046.0988642260484048896932927638930672 1.6218923337092450422286782552421505 0.0133048987950055320656729945617166 1.0133942019585482595052551931990744 GT 1 -53952026939494324397644906714.3048915147808925878595491499827995 3.3169394149803888995627220087185084 0.0660119265839976041973528837482194 1.0682916101967052298001627337669917 LT 1 -30724053549878183.8355512460436442614974274300231956 2.0026650576483235265212169322582746 0.0442428788514581511034058549419108 1.0452514555847802658427527622821593 GT 1 -1436458903889390.2319238773918671815821528385713910 0.6033984105904066610234713614133328 0.0723017028233709304082750489605433 1.0750487098569564268477680862696666 GT 1 -160791149658.0413894887707545112474974085755588 0.1751726652858095437737709080621474 0.0088876253705723528460124454916830 1.0089273558947946194025100663236501 GT 1 -4957181727454.7935497656026312273844273486478510 0.5672548645368592759953747969562181 0.0616625057164912624813160780992355 1.0636455926811276436923061735516714 GT 1 -14573326753444625229722522788792780191032.3144781419597475505191019117171095 0.7941439740129223023739843400714081 0.0623012510119502215122232172178700 1.0643265446855804169328908829990493 GT 1 -6190331442560.6799977415740949560399633064467690 0.0126020197805775864434328011403940 0.0426933711791100145165385131404004 1.0436315325568957984130618275058224 GT 1 -30282690997601996208542496265155.3035931438234379448487730720597676 1.9740337164894493857718462330918533 0.0661378439081487298495805441965281 1.0684264361290553270478906527518435 GT 1 -63385038426413495168.5006618111322894934777128071700542 0.0798465798710923320146348859773573 0.0327739512873315333308825880402428 1.0333230479591578441703004610527328 GT 1 -19956287594174520276379012977279230991752.7815834009237956149931137298900943 3.4080895232758971352796382048441281 0.0483782314493206809492967490409818 1.0495876250786630418475547212419789 LT 1 -72659617848052.6235161653882908602418458434579093 2.2623288752283451676130971867317349 0.0129630908749358878069717919887693 1.0130478449843514283218008836728873 GT 1 -9710729420007123525.6065435656198792384031727604321538 0.2834963931349218835860794473939012 0.0275951879367462596417406450799741 1.0279830879065332353365334783113330 GT 1 -138002006.0769875766820793859335149900268417 0.3203317944939005522480240970944112 0.0932951403327877961096283311342273 1.0979382846144665399319960851929641 GT 1 -4010308670502096151.3865053564282059602138004794046773 2.5047753647453751804466802865910448 0.0126057411322340211054453960851697 1.0126858675678714877208488272011962 GT 1 -806282437448109.6165842497752242898140266151644686 0.1057201679585376185637882497798701 0.0881869699114156757494472221429302 1.0923203207931865699898193632488030 GT 1 -30023184110013680676639698099211.4019596018732328314939272839187751 0.3183826051065091201871348074652286 0.0171818212600424310173472355531801 1.0173311416197745829183387856957343 GT 1 -375758354235507741179.6729026058494893545002972277607784 1.6165414597281198949766904082364958 0.0600400049606350354683803127333399 1.0619179630924854745710936935041717 GT 1 -287969365399.9926236168780269691888562481499825 0.0506071810425209013961632722941984 0.0236309130392247079191272122962346 1.0239146011849541854545763223025416 GT 1 -24465.1262794824454514388856964821026969 0.1956850698622808639402288570171979 0.0376904596074226957962043629355206 1.0384191125126581938413373991576264 GT 1 -32223612.8691354131704140441089549565933756 1.4238261329021104545270303936926512 0.0691521526209561097462912633924675 1.0716594442994892929506444432867065 GT 1 -6.8824043330194297305947629531969587 0.2834509622223057358116118922796372 0.0673979854625216925378790951336436 1.0697767344799919704608964341691334 GT 1 -47735476600031387331147195005485003.8525634461164195524170979100453637 0.1661495914411035445556691481058512 0.0913246344341318939886191635593349 1.0957673821829507996940763647858749 GT 1 -56915985858106221438245810415.2956430542243005516865278677077568 0.2272601368692998110023525375718940 0.0492239579561361552770982638575276 1.0504767414956603593096757102858766 GT 1 -9295297319267500669889805145741.0407147230146686294353550651792871 0.5755434212170305065973720924846927 0.0456872099628089157967494659112344 1.0467637891157953271729224052821359 GT 1 -10791395509248516736519808243634268.0672587685826012310191399881941945 1.6046640392370662608663089540959375 0.0896113405946376937930437756506751 1.0938836724040859180893718752262217 GT 1 -11791550941589101946.0401385648547453434249832270081349 0.3805811269889147038780304139842094 0.0904322728505721788850964375372289 1.0947858174419303748934348487785913 GT 1 -318231302933423911080874266406548778096550.0758051583962462406085514553710643 0.5081823403439890608349362916471586 0.0279939356425034740718575907909470 1.0283932354902384217183291558236769 GT 1 -125641522.7457420204035222891353654628630741 0.4823966411245810493592691300148188 0.0953796098831670930088660820293241 1.1002398817139471510914907957774418 GT 1 -519306.1509441893080920007545736486187517 0.6527758328696319881770403071509929 0.0198424779658420957173431993343345 1.0200419834647409942296179678096880 GT 1 -326248854536155360816825927031084.1234564354125402309210714834557313 0.0967250758126821960142175032028774 0.0623818149003244295753906557867753 1.0644124649766622672908089611189993 GT 1 -20168880739725119919980612.7381118549399270619102625453103346 2.1741238979767256622907731170914024 0.0261250595819985920951814075930347 1.0264723815114515558565657132397673 GT 1 -660813003.9214535166965988744484421954801623 1.5919613090403566074345245023821709 0.0545299318641518798695738673677725 1.0560730485652124839488406787669050 GT 1 -33723987075546149661764981596116523.8180020072807382402086775416526609 1.1164632777917169492397959769755749 0.0759285143773355480736416615300237 1.0789658449405065295209539776691316 GT 1 -274406490259.1901155260732717381655778056062010 0.9886456441494664320917788220075395 0.0534299906354244033419991498033477 1.0549103444917381104607355100507347 GT 1 -2938852602281.5529411665111866615875361023711521 0.9702304386790525134555552763116828 0.0759769581658576382033033023196988 1.0790182706014383324687203124099385 GT 1 -9752723947.6519721790594179240258548678652564 0.1189554594152122856268413094139391 0.0806048654457060206016280089493956 1.0840392876032441360486431497788445 GT 1 -226686300351364867209689.3844927882521108464465300735436835 1.0719536405027492858916266094649083 0.0160101947032614239303187486827264 1.0161397424543478067870649471594397 GT 1 -171544121263048.1397223464317818095645145687652541 2.4209630900142729238063118566749235 0.0720674678461341487695796039248520 1.0747962512592887215503531372570644 GT 1 -98975299114659093954360273027907848434773.1553963290979519402136646964987766 0.3599986199216530946052788388408488 0.0933855382102318952312266202622140 1.0980379889262767204380757728995063 GT 1 -331264.5561766832164271613965752098433024 0.6854997264784931524169323792283290 0.0333552944155470130186874181819328 1.0339242702946579211503388482970646 GT 1 -102146371.4706947353773100176037631409213258 0.0012721755684822955903602734808867 0.0279748370531179669451544089421987 1.0283735870513472379192240986109194 GT 1 -648.9465863880999203413316252724798938 0.1379760040742542898604518589183736 0.0408054772233902801234592718061535 1.0416613854846669658748736978215235 GT 1 -964.7536854759435776379146821892116391 0.4395517304799373849837227701347130 0.0847914304243805155696339249460685 1.0886032947907178323205476401273660 GT 1 -943337963974585.5330209745815877332845573383014009 2.2626062397393520266505725581270343 0.0661365506568178902676831406555816 1.0684250512882338739816226783482766 GT 1 -126939414473673514755529876215.5472012843146643780163473328666206 2.7390098894803996458460990310483925 0.0975581054025110333458437999651221 1.1026509735652209323532660051415482 LT 1 -5349799392899.3218224661059242421955884192791838 0.9379650326599062064937136197111990 0.0437027331399641632794595299563425 1.0446864656668678962747972722879207 GT 1 -1358776018769492413206.9717645066055464481592965275979636 0.2402252790200684707386579366418711 0.0842013479604487653697125561361153 1.0879587506541417459503025134927842 GT 1 -302321195699664724928572928618013.0293641713275451992275712850036894 0.0980906151386043367505881515974337 0.0774471786333350551208456795962925 1.0806106457726308505139637079715666 GT 1 -14535.2450395699196644435267245579636481 1.5640903473751825070021319444243339 0.0129625894978759836578252606307094 1.0130473370226653669307580253777431 GT 1 -1582447996169138687371716509.9924525048455195410513764248644662 1.0546048719855028409961620850301985 0.0393612561357002289813385893817579 1.0401568575809019597880900768890985 GT 1 -1257628477718356985289906657361305352489.8519111138635566339428487343899599 0.1620996414461916768643067371161084 0.0424651326510808030783366493260021 1.0433931436045291036240742674086377 GT 1 -7153415157151033565403.8262638888475007135527957728534571 2.3476625028608951999582171909669814 0.0433957196242851606703053896291800 1.0443654731738054286850016217251092 GT 1 -137785704487914.3474859976138466973018848284065839 0.2986954271012588993595932033187902 0.0070555037035756946352693901759190 1.0070805114675005897285467010207613 GT 1 -5468035687132681231.1678332539291954641162730230201584 0.3505398344393524566482676007759091 0.0748361729796682688999546126433812 1.0777844468596375263629456469152917 GT 1 -9995053850310400468.0651327744949592535004850668940464 0.2250529862746393719215576095262067 0.0391179437372501262880897707694864 1.0399036077594746528311735606793882 GT 1 -2239561.2826705744914505332125817188546844 0.5118361197018029730850128164433024 0.0889199688658348440922077487905981 1.0931245358176639814846126832789016 GT 1 -243787959789659092998825657.9382092720127702525269164296084746 1.1863785480271412267248809241365976 0.0992166148416681531522858706561404 1.1044904663068538711886390654190253 GT 1 -1.7800967781207901914116587906924415 1.2593873504240718758095208778332103 0.0582498249135100431403439782589354 1.0600152464939009306783102137235208 GT 1 -24380215.7346579371890432342704905227708876 1.1468197108530897756086298419008198 0.0651861902190329243908656956337430 1.0674079034473418677371788080512167 GT 1 -359270519391246380301.8134193710467176025789567431531522 0.1066060892659965786758482896862334 0.0777616970031156480352216132857384 1.0809516257011161979364909377631904 GT 1 -17288634195191.9053331888637255011207928943073968 1.2999778617832543416013959750533542 0.0468510323094592523785776702988989 1.0479840730731069629625392098541487 GT 1 -535797523891662556559181769997244596798045.4337385929897980878901525984422200 1.8657928665307163940592683154794878 0.0927990220998637967647231298073141 1.0973912680769814949923646001391159 GT 1 -14827837312775151944228901800112788973.9194700314815187536377153469485884 1.2268202451031998913356563631736976 0.0324744056729434007439388206010195 1.0330134003432902888697282206190145 GT 1 -4925193771651087833041410980054990.5908634591758352594912142872383429 0.7071564445410324722583656882378903 0.0524659970903280499124051877726713 1.0538924556935706820324851212462398 GT 1 -209518462720849192217046818.3270459507894741089816201151150022 0.3872096243649078190589616179530963 0.0830001097799748383538196974235817 1.0866479264421186690894824816804910 GT 1 -14.8779997550535612978364589372481053 3.3009779975641825849238794639057731 0.0615446952511982245681703325887941 1.0635200482251722284795593024555521 LT 1 -1840839803736498887366349596232475332796.4648254701873091612309631753796788 1.7240517450000850239093170412721006 0.0985483789497702705888879636725325 1.1037489027258350897706984394979307 GT 1 -5290226951737205895084228276093520792498415.1453857845668308716533376263025912 0.1815330566026592607282331826304932 0.0814349309076752016712124128039281 1.0849425340573911254134257031480716 GT 1 -123734684399201029887837467938264661623846.1184471851623537955629205025740066 0.6986129721890416045178425641885558 0.0940837948730362494264147800587275 1.0988084660388484074981509296839582 GT 1 -103743996894457169.2674743007879307111930998604853711 3.6741448318079951220883109238420421 0.0779197720430498158233513447428200 1.0811230440734507120735534133909785 LT 1 -22610462783153817522512470065359360420854956.1045858612914654584889375891576176 0.1736227265445063192612815416153020 0.0986625994586993823004115331361457 1.1038756180626980916236100298959863 GT 1 -2636578896253.7128650022728536218066936415942536 1.3796562779188717212659846275011362 0.0117292544717790432191216672116444 1.0117985848392637328268355666997076 GT 1 -70.3355655986392949000353060840492068 3.4604551481947000780628765973299591 0.0939925331439251284247015950984439 1.0987077314101226691686188953338407 LT 1 -452955360291.2224867012333831776224119090715291 0.7096706835785113871601529679426669 0.0215226232916144253338147663686866 1.0217576127930659196645489074115243 GT 1 -78996227880078.0296334559047501357281359344672860 1.3623666712290797313669151102133240 0.0341317185923116516455099522435998 1.0347278087171856906653331927972923 GT 1 -922588057775619966670356806325928094131.8253555269672973874284089354429629 0.1345494282964331321161995072826798 0.0220322130153846398363679039396060 1.0222785471333183862815899005144776 GT 1 -1312193603430586971713787518373.3839324298819798926695167603290461 0.3975827837111570458045977450196731 0.0599486576132915663678896358012401 1.0618207856493532229107512897519928 GT 1 -6089342.9982695409376281460117600784134281 0.9512651520288202194973182556053758 0.0084324756360868715552093867663802 1.0084682300997412639672876018904998 GT 1 -987888063316118770878874473956234195.8879122106011123792030019986627117 1.5538209597160538554595542886313075 0.0486128596137779257936428704154749 1.0498342115917836729055610666190637 GT 1 -254096625160714700.3256436582114081344526944159582377 1.4022076793797302280611648774684789 0.0932323171455010112001164327181394 1.0978689996533338414703875307294281 GT 1 -25592908390638333650988350912739361674338398.9329514154065075637694576160635812 1.8174225988465399078495134247245918 0.0691170760212469565571628184133181 1.0716217625892732431772595522088926 GT 1 -488246.6447752620602930013476891687332308 0.7302096566915102654681044507707851 0.0910112413184144222906904270894397 1.0954225515680508785384578238506087 GT 1 -12884903093252818912590703.8052371568884572847823430877735485 2.1269539745110310375790468386858588 0.0920754926076170119263152442651032 1.0965940454756460833457347522362438 GT 1 -1.3126671366015865751002374429693276 0.8000089501181889227998185080896372 0.0987895003240614054084203577375494 1.1040164197196819434474262774568502 GT 1 -281952426390120622.2585350057429848027947900516599483 0.3443004708449237004958367214249071 0.0798401347359299743691451133078627 1.0832078574433360128492581488804149 GT 1 -6554444912952427747401720430296951620047362.3225811714260425849381396793427265 1.4150645542723945585735723904351829 0.0583358756601651604578242006553613 1.0601066238894545309010084523906745 GT 1 -1728742.2963024267493935083982030453940907 1.7106424826949091604667639223932502 0.0875206145389852603774375312509679 1.0915897850562774784828383920321807 GT 1 -11825012932422861541687623486289.7372124928117384730078970098810450 0.0151745836499075615153575854226472 0.0306353069165054228762969755831310 1.0311143776458407099384617907702576 GT 1 -22.6720334991598811300217835413429563 1.7730166582721920414282271478759822 0.0149006127937909619295831742710072 1.0150127421832196261550148989949839 GT 1 -12.1183454056341081813696260236201245 0.1636963584490158239762919785426129 0.0578229487983882860651857888546008 1.0595620696232970342510455835533042 GT 1 -352.7399789193990192357974948152756918 0.4057901650267199003242377480484970 0.0968573828409999653402769586350499 1.1018748009827387829929257327769553 GT 1 -272914256878863.1888820196222862760495591715382775 4.5397208873396045081988865285470863 0.0885537286306846476056743447747449 1.0927226318894990850365904486058263 LT 1 -4410300260468556178453780063573099686784683.6008431745128001366543561705455141 1.6871446905918278781315733604490164 0.0156032674385233545695074544888746 1.0157262796890741619918171068492303 GT 1 -160759993.3347005621170407853628764584756839 0.2885120180444399160178490186067079 0.0409536225731272722337723604250139 1.0418158450731532836685820326779448 GT 1 -177588638738727905858047582308.1565864754115341243534342145158598 2.0786343134926758401701449715887215 0.0389428615512864591965403157127633 1.0397214144966183178505405376462771 GT 1 -14854160443085093153146156442.9513487011818887893086992424271082 2.0879144861958461363967807335958140 0.0425526975160980057357719316256842 1.0434845960122409482570416371421458 GT 1 -47193237185602595494297231988090.6821388655636703614663419940444123 0.3661504820643573164694683855340610 0.0669937339397162226358681714426027 1.0693433621227435665144822426493683 GT 1 -10869890160.6705327940620520866620254064238578 0.0965369128921517755896314505644293 0.0312399638606467094612848864730257 1.0317383384824595054100306986233895 GT 1 -206.2090922133501055682499972251148067 3.1492173055694867692485865606092402 0.0212184306434387151900508306751384 1.0214467774268651316401141903535027 GT 1 -2481684325070900102746267268738351.8683328960831642619084565232873244 1.3666872503295701778227769785615414 0.0600250015547914376608451956896686 1.0619020014705188483486738255009338 GT 1 -683025992387219186008603.0996500740590574533628024474100962 0.7579356580248629513350497676939522 0.0371234857946135949651432992128606 1.0378301057225387423567959382369795 GT 1 -159429026142145.6195815349922262383429266427587510 0.8126897018451935780958547202442059 0.0571613073830401484498623225297299 1.0588600686509555298864329846245117 GT 1 -867902239295048946856670555020.6206472410057129974750541544747090 0.2769499318249341883841811418289614 0.0206889192960155222148669870472324 1.0209059333965132478202442108842735 GT 1 -882989441357016459550116355579831666920457.0774301423096929741717926617537850 1.4288805547698276488223686937493442 0.0037533256226839369363132010797028 1.0037603870239954665338039053714253 GT 1 -208958390447517451674949153535756202321777.1706023825506540279386587498003744 0.2545839133064899119344158754394868 0.0777390165011697413197237136494867 1.0809270331169790259234264753646971 GT 1 -30668070031394639042083244049667.7835062369413513523380989239897105 0.0236669312838305270556193402965822 0.0735771706123559350587714083579006 1.0764245293456655375189505676188498 GT 1 -69304894747289873078131421457.3203363585736007112865432248693754 0.7522661418520058311852593292945128 0.0441964259375498975644825719119960 1.0452028535037333228629407313637619 GT 1 -27512107800005694117147.6087568475715654508148569643698297 4.4300546348882293248916083847219234 0.0594877919058269503318450028383327 1.0613306498955542808701961911561779 LT 1 -1387573418193812854387516272909743458261004.5207960071335547604524716323767078 1.2125828268898242900204581115801249 0.0369810418868713328806319442362772 1.0376821808636360701988686828969310 GT 1 -6690355933154210018478.2188475523486816145510179659037248 0.7107847512777111613515548386135582 0.0646704176780010488680517537886003 1.0668563173429964079282575882922516 GT 1 -79254773396546408968907351772216.3779249065038313959889536090293640 1.0372666378736461900125809141914940 0.0553628440602717687907810451615457 1.0569543871892066915139380536405776 GT 1 -3965853975022886461682551950.9681741282415276906161463836397755 0.8233389589203979292017615403261525 0.0699856839143012417794859940905651 1.0725552993127800001304191125127023 GT 1 -36362405312213345423050997624483289254.3367445893868556604425599256069429 0.1167687932169339325435783706595337 0.0601309765557888927910894083353745 1.0620147501878333897672374677837814 GT 1 -15554397449386825230561239665805403510.4529718578412357524059052550511878 0.7040010052290576323106617365918518 0.0346086677040774071259905808826444 1.0352217341512163540459430237993729 GT 1 -125730117821307.1926031337635854046903110601335059 4.1090318245594907661165794158083204 0.0788605004798047454252473422272916 1.0821437889194521610343730273628478 LT 1 -380429658318276937908145749849344084551.3036700227472188245465769703511821 0.0610347187748329495554714538853574 0.0192621942489647175510747063215395 1.0194501275654544869252661894800530 GT 1 -29350089812.7993548173073930273692633121475375 0.9670139905982239301758481549062537 0.0096466346086526865931410027229017 1.0096934648008165806142534826724784 GT 1 -4345808584.3434041571601696855949886653434655 0.4576529324319836750685247250557612 0.0249543864957479798656762914041480 1.0252710259972999699036354282624806 GT 1 -2162971049459957133911277392186.8590594323787238788331114643896983 0.1665787878584450046092657125779184 0.0622356288894386904127648607433729 1.0642565650396624947139533762667936 GT 1 -2254863948984610925.0481999235906288310593262930981828 3.1939613734214371448208294678875611 0.0740659444851422444052391750936059 1.0769522612186255374228467078931639 LT 1 -194155031747079873446.3887773878293307502333259489826707 0.9055648899618155022125692656806128 0.0272763661405565020425979819297225 1.0276552722296680992559805008637567 GT 1 -69992131809882801530994024594179526.1324976406647761294965927926524700 1.2375436543491932718243931883779546 0.0073438858789536983577619793541746 1.0073709849654363657292480683536600 GT 1 -45.0948281259320705517228304012887554 1.3130041576536145832093117295383411 0.0827575142851427131678340331245509 1.0863834079690646238738236939058058 GT 1 -158170904744845527756428123469.9917361402703696018598289744729863 3.7471666213079973933740332385252710 0.0542088126627925844424244299050877 1.0557334664968801817434096580570636 LT 1 -4742259826220129.2146514027607141856262329363397122 2.0896128379058124614704979879482319 0.0003188636884487261803912563282212 1.0003189145362839378661916991659304 GT 1 -1486629.2807018668410457186009194272949679 0.1795717248212792221273851770035078 0.0197383586885061477586121068504968 1.0199357620204901064888824776724132 GT 1 -4328401176439852.4265991733946116154648686943092282 1.8705612000617364080792957258361323 0.0193254737272056020280325907155157 1.0195146519668051668040373724088978 GT 1 -3166797175690693061.5066913773115778799522180089442152 3.9891166151610138224473220752531178 0.0714721458728988270149748269197302 1.0741548995794565731619331430143588 LT 1 -16794629894867366577022.2647310139932093818593932591130263 0.1458938684209896352051662182821368 0.0730937541383166906235975597926050 1.0759028556812760355993395207833293 GT 1 -1336995867812.9388405073574626835966029369325985 2.1609011603506547456401334752161681 0.0899752347240433283334829676130591 1.0942834652525881590973464660859446 GT 1 -275154.1233688254989396192403752348568002 0.6029127195578450899560201769506501 0.0153982650405783441933347543346175 1.0155180495638939626088526812144221 GT 1 -1553950961366555160804693596776129829668.8279805775994677613652926339096179 1.4463896855325942572874565657659680 0.0488293288503584381939971369752413 1.0500617676073770819099140296883994 GT 1 -2793.0915016014743120314500910776957102 1.0781405581299702295289931739604443 0.0970483151855994510426684754535544 1.1020862321855305083548337491548052 GT 1 -59687096630655529029358092569762470.0672726056901866952307401613720504 1.8806376387522146887561969033800947 0.0802428609903974035483257711844295 1.0836456231251178468142811371293720 GT 1 -40104.4192118363899968831078269538546999 4.8388479077333550745530598007161239 0.0884085027851828942826729462821193 1.0925633089744047456134734767736597 LT 1 -1324354539211267525136844107936.7910602824821958898583363730675557 4.6107387908516815805330225425999322 0.0294653997125686155828909019771484 1.0299082249865075119179006771377087 LT 1 -1651705506153104204.5600073649419096216426284131325795 1.2167163768304914601397850907577068 0.0498880479140523333763900883269511 1.0511754570296471643815679139410905 GT 1 -24819163265956819640598691072.4852557111747353206706522870258487 0.0359666572490638457524730187609428 0.0622902843473823391400140560644526 1.0643148494578209446938970174787329 GT 1 -1920523904184993384500664978610889617205680.3021857290194566323750331596883402 1.3383434045822884248634169350769394 0.0019026405855073246398580290997238 1.0019044529052664049277678118739464 GT 1 -1348095023777459.9433656363530703094456780697939635 0.3287463669245316710505778514171480 0.0780948194972787527296076223978904 1.0813129018173912906453278501398924 GT 1 -198884601467900.7860610388102434492776085113554774 0.4468001835913490776964123054293652 0.0271386177333670982654119903751640 1.0275136712137496647102276558955200 GT 1 -645854747375643781.7228313613039214470142978959066252 0.5313762622308324160035357774721427 0.0682769873953747195929652468865746 1.0707197052444128891967254955193105 GT 1 -144898684783777032097034524468.4077561054240625939536831046823795 1.7633483618154604225659639723187988 0.0823713699748929371669071744731758 1.0859625126673315651179364140352198 GT 1 -663812724673948379836.1454788332150152465040265213806503 0.9170640915814880703311907028124199 0.0444893929726446478975002321665487 1.0455094143405520122832356872409051 GT 1 -2283723715251657546233094525149460800.7877939534443189095742800732272663 2.1179834412355385467289531711650460 0.0518240982962874974746944470856696 1.0532152436190749684193493338894042 GT 1 -11194485619.5102593843764319541583393665813462 0.5372619011410625206198066189380685 0.0061582697355963394449225253290995 1.0061773100893358097718565450726020 GT 1 -4107528447246010683808637812930700.5636456744695585471382200975209621 0.5273050330936742150456728604773170 0.0960252436631708655972858136270769 1.1009538433860165053067575272309772 GT 1 -6315243057414838095545275.7529737907521700740851715329714302 0.0942916578684262115691353864206786 0.0149447525223196865342508819668831 1.0150575505731389200701076644573236 GT 1 -945025119986756568707191964833677881.5781624937743291191454947751465218 0.3267905349237450414845587750556807 0.0900259593872028988698669820277100 1.0943392066772622640302993185051843 GT 1 -143235350781481843436435057927088320.0871991709420202419637005387890686 4.2098715728819544330103378137788662 0.0354369597688239623277163695671133 1.0360800882422689465372810385342634 LT 1 -47558703466638863471143673602526743135.3681008087767029147615907615297973 0.6001151871038543509381673709513759 0.0607675931011064483750019036924292 1.0626923257134479486363268940117874 GT 1 -65761802681602411643007639612.5719338054756196703068438382910730 1.3116232865780862634448461222027534 0.0154427474588837137101838360670416 1.0155632286668463326687831132341407 GT 1 -217923573547771174289210163.7308918099569989194482637447213422 0.4033914622884824134991608217515594 0.0271077015999104520484309105720674 1.0274818931590385932104783944776108 GT 1 -275292666267181.8601294821844190850774621603928794 1.4777625848840852177694496168680700 0.0057317901013172157179559695320303 1.0057482798509115978478180918279962 GT 1 -2978020762887836540311297.1446791574417366479657177601340989 2.2516475478989384695260239314954418 0.0687827500005960328415832532175817 1.0712626776926437955357793728535050 GT 1 -5801827003458960630870173625980976853.7927181397367580465211916445912114 1.0588166126942907099362798052413390 0.0265241481133596635828347694147432 1.0268822599355397091517819225444326 GT 1 -26686532837158980316430472.2953099670255252897063486569084027 0.0615602068260495386497491360251449 0.0355900371215350801739548253524405 1.0362388020788915247113663424103443 GT 1 -51759618733.3009701780145102123864423150066845 3.1914213185695215704575407132613672 0.0312244583726221769009995910324699 1.0317223331113037037551656630920152 GT 1 -1.9858734867777488903766700728520748 0.8097960122165571673526259310648475 0.0025293516452829111733850208243080 1.0025325558593521352904377536469161 GT 1 -29000642875158136571.3082207557840269240343437521661857 2.0380773151483210585513518497494712 0.0475240290064324010637808978709013 1.0486903996028358946335869681021273 GT 1 -7820853736.9065745962484316723633505367523322 0.7065123152436925655629720641746787 0.0011118828938754230949816058624047 1.0011125014942435599889936555685296 GT 1 -18591920748421035979161880048.1370681307731660760236861772711403 1.1123037202670425445616054565423100 0.0983604038800516861975467301448157 1.1035403996078457591541623914882037 GT 1 -491580466340152810866853251720750759.6880809846509722952711757848051059 0.9398215580690953667901880891986039 0.0608203170185334350038559240325252 1.0627484624022234032115215360869061 GT 1 -2947471.0944029356664916811854033435555737 2.5117250118556522930031456695231190 0.0510205089497117540164765336630316 1.0523680917223942230692609802784515 GT 1 -108327965.0587170492358637555981306483993546 0.2205932320435296353606302306385719 0.0329929747444013694818766699601141 1.0335495185546136560026119765751885 GT 1 -151102598947749338354.4984728140801754959148579500441674 0.0494422455135535241112186463544055 0.0267795055261849303507158224206114 1.0271446094434815229621745570856749 GT 1 -6425170445537362360571791435824641474992.3939129227449960099594372102844567 0.0528451316356913005772873200533682 0.0681718534793434892163584100078714 1.0706068734440859082638969676344078 GT 1 -248675373368324996333863.3817036254733715412648039322934008 1.6493400422736361094497101111268060 0.0927437870228737142889030605036459 1.0973303847700786309299359691430787 GT 1 -1155290075465108789645.6447999851582194548046425710134598 0.7827119475040910843028263849541613 0.0331140861975082276818838822142590 1.0336747700106990981261153016921321 GT 1 -1573.9989755998720759607700034986365894 0.4692866220235840363519931701906813 0.0491319599790966402251879646406031 1.0503799852435530801248122899422527 GT 1 -32810353865527461074653730790593.1108482746024171818917126010714995 2.9812060441875778476185572565882644 0.0849787195321932613086161847911761 1.0888079566351982311824967831075817 LT 1 -324522247240492623504715930417355322913.8794020142267974709328993591817491 0.0060752244429243125464049064819743 0.0681135656512776760320391923783915 1.0705443232782148791681190472262168 GT 1 -7232908819640584836.1387093626547840666216021374003177 0.4538375556426033337248922152735488 0.0239030249043149832095142927889406 1.0241933377757100423469394570709348 GT 1 -7443004683212074824511066966155.9397552329072717799845794289910994 1.3174595452576204733092107650110657 0.0160809941850369863031605999411885 1.0162116964812888346083090932137729 GT 1 -195147610495254955117601376173.2771462643609025329305776218222392 0.7081329657814960625376005298772538 0.0969784570678809117175108472960457 1.1020088687820424621043702470094276 GT 1 -611484533736871426034423695535454.7905507500556088107629413937255794 1.2784425488011578156007536468430242 0.0198741452511927765077746584273104 1.0200742923500057408917333885161546 GT 1 -726.7572217479636533015367849915235432 0.1486382605146234832002134952717091 0.0378691857288850077263328967730169 1.0386048559902806972777128846646744 GT 1 -2.1185716709938772684136591818882206 0.5850359198397142605555566327166653 0.0489068001590713384679536988046596 1.0501432193028407502899773821253142 GT 1 -2050380801694250098176517094122128779950.6137980776772629085200824384612295 0.4902999561738521746045329552016174 0.0003551054158293820640082188199302 1.0003551684806877814748370808981117 GT 1 -1526320194097.2671209517537157294947886030190388 0.9463347381924326632541985058249787 0.0242997219173984567099248516514379 1.0245998318599700026499364334216434 GT 1 -629581966224942530253184409.2525726934531291448040332601356980 1.1441798399089221335682070902347032 0.0168142484877074217834050730079508 1.0169572127878309278197757295905213 GT 1 -44.7804551356776640641370021179464884 2.4048551816210025026140202371263514 0.0186254083795530305106892659824423 1.0188010455937778060270948480014081 GT 1 -10217195542576368131100162347885.2845429380609650951675400601264664 0.4588612168954455879657403407382251 0.0684045093279312396131486320880855 1.0708565813957862200162970087066901 GT 1 -32143861596082379517.4628819332920814755533900373886318 3.4588645152176633102020337285124538 0.0582036225512699004168108262825382 1.0599661875925563138130343556530697 LT 1 -75972848545981302522.9864184531556542317126440455896892 0.1832247376430571421478094127364553 0.0574578005035322050174946722792894 1.0591745866607395705626087781168742 GT 1 -93298110245280212627614919.1649964708937909474179526082302733 0.6996710679613043042201044027505793 0.0245576219532999378483265266763591 1.0248641898110334621852957061013656 GT 1 -14678001516699351073406876.4922058269163563813740136452797466 0.4643937871233428953343728039162445 0.0808717628871719258474654657718362 1.0843296265213714273925608955811731 GT 1 -393734563447542.4813806213166582069311404100307641 0.1866548074398135748504867741927012 0.0641976970628887913891098293485991 1.0663510396243131556606572605515224 GT 1 -9345886971407930599.3503027847681618871400689298129112 0.7955498097384731180059831308609174 0.0105895698294839665171960702916366 1.0106460383292813745123354552786886 GT 1 -179716324270648.7124456944238444274217005550441460 1.3688946432973878558043775202990706 0.0936755431403917606996363542463960 1.0983579168947815957839143237292497 GT 1 -38183623340392.8476610816383654975632035777541399 1.5297426063021409926152594201490084 0.0343902638985706174094566530934953 1.0349955262945636742743673598509308 GT 1 -34007649.3000944734870677897627402365840715 1.7765297599899962831476778855002283 0.0532238316259334315796174208973835 1.0546925723666722606252026735027182 GT 1 -347899839372399607249124857.4057505044770670618689284425143032 0.9759632723381973117705707173850497 0.0118322720017338167284292427803592 1.0119028304623154388887891373936648 GT 1 -720860522731.8679301069237132461048145911552205 0.7221206296990277787113125352285223 0.0669392935165297606838616597127413 1.0692850143528050676883318969126664 GT 1 -32063800940289491065803805572792074200.6157159567390269004170442858013118 0.5631978096167503138930664348743887 0.0349060490510796409790376235096780 1.0355298238858914106446383103790275 GT 1 -761694008549524915343266863093344.6143805548975438018649861997868058 3.2481789220602737222098036113986259 0.0133689338822214024350291512193654 1.0134591026204851800468021336120224 GT 1 -312917241912281097346264787.0883986312900477517945733618936473 2.7737933035040970073457308026846524 0.0471081886970134621085834680543462 1.0482539061133531355670773621348702 GT 1 -217814179346470079186430707432908045809.3792711239369116681223904876559867 0.6419286737442242347568686761833464 0.0325630271222514345079394887002112 1.0331050005125876406547638805754768 GT 1 -550.9147586880598024425131745355351254 2.4487962276782830317175368392266534 0.0036478599469954123120995515235301 1.0036545296130372425670730348211768 GT 1 -7825881302200840788505734.6564894977392870676860555884454808 1.5825549602762108301451520891324489 0.0020128718098785531717850335565481 1.0020149003589366316685822116275261 GT 1 -212424726205805718727239075039364.4225100526337780103542455527689460 1.1949894470568767095905676672166610 0.0257302458737572386126445475154086 1.0260670587294711003479009993568191 GT 1 -4366213473184076995872.7988803383848389464452860089287631 0.6783467660590633002012992084931044 0.0747885703017534049116902096090570 1.0777329949417062595403766264995048 GT 1 -1248030492124798104559082544708069590665092.2044515356391077806089678301161173 0.4258336505811506937580402157369394 0.0579182212784244995908507493681425 1.0596631942443994195213304300172970 GT 1 -9256806730823404707853977374.4615599915376752586382820182736357 0.5955423855177964677928588555264743 0.0825734564669478665130702286457503 1.0861827638028655765168139868842332 GT 1 -1844552435266914767138492099.5347865337073312953030814970600433 0.6266607339486457273805785547299114 0.0864022600813590464288497905847738 1.0903649139028021480693587391412313 GT 1 -3296288.3919586915197245803660414457513408 0.4784566410243452840435737215259161 0.0244534488920643562978922946054407 1.0247573998033836291023911655392007 GT 1 -49318980962165165262211968882552230.8322428971948204073043419739516753 0.5475435754146420273142962506945126 0.0862648236584735255013751134657640 1.0902144909317915366881227093139340 GT 1 -262539367481372779779243082266764238.8284999993411227623245642207007312 0.5472002660507699838735276155491262 0.0578889665910018986965125019186019 1.0596321414909480658891423611196557 GT 1 -8059.1335753597265958123675776433458410 0.8758307916871335883038362746216394 0.0078680773908883302605837465946099 1.0078991940380644689842111319920693 GT 1 -50361544.3601387107868902504950114757533222 3.4049075253278029962056838598610945 0.0260354860810279025482545154144615 1.0263804093513904275320916333503931 GT 1 -81126658936035393521080775.8111792618530561444093819555438994 2.0804622510859630644981649038083471 0.0866714377477730601966913769778851 1.0906595920932053430246972310701579 GT 1 -223183478923008802496078714737.3043731000210336379477415749251188 0.0414492544876038011360020886452702 0.0349669230816923772798089770229325 1.0355929016312978208489932133174365 GT 1 -1637974019751230862.1068944548007403289047956220620555 0.0840836196235413121280030595769964 0.0522151619998392993613578515693097 1.0536277666222239270935150158486231 GT 1 -730794521046548798828724398556070465429.1104730307127024548060322623007632 0.0627508723306952232996805040508429 0.0440321974620253820996497866943475 1.0450310458514809652834388927158986 GT 1 -1168.3411494990808228892019108063125378 2.8996792084598219364966259273866631 0.0622955946367144045843783674267206 1.0663890766808125851231359804514115 LT 2 -12851447525027502583051677901372112945.5875470399656498145095618881089320 0.8857440760549739720180608827363223 0.0613700477784575237703484483313730 1.0633339645376080872421048635972494 GT 1 -7000197502938460557416501738481442731063210.9632707964191356693571686414320009 0.5412291089366739736049325001226095 0.0929480220077161269408945014396734 1.0975555229100282297974167829733067 GT 1 -7550500551284249255337952511143601004.9568638255122718150872446307596794 0.2055644519436758080891476687853766 0.0839257305092027550551587635814238 1.0876578373647029838103014856240055 GT 1 -165565878348641651263875019329041.4477904140901632984442335539044079 4.2069059891723553095606626356966504 0.0243587676981253969005938522748733 1.0246603500013929535670604358073465 LT 1 -227027614302700841878385280152351017571999.6393636738886036595168070392796704 0.8636696613817618899750618952464605 0.0454456791934018685529769106828287 1.0465107272139751867847276816604434 GT 1 -179377717299218329328167924303658985290747.6865137358730808682080620724382839 3.2532086212823239621165331061179660 0.0204105370810642531827090026140773 1.0206217104759248970403227438193675 GT 1 -834700127031.6064180368991409273940050601775850 0.3542762520619515315359132998937690 0.0366526774447776411609182100711049 1.0373412649655856999908281412823548 GT 1 -3694.1716940725170864197934387304390937 0.8554983769097293019613081076360001 0.0273963548988319342555673522597205 1.0277786332288432173017229071506571 GT 1 -19261977390036393996311688599680467595191528.4851943908112551106229808479930298 1.3590652204281909820770090282607540 0.0367247325526258061535494258430629 1.0374160643666263192420722380602842 GT 1 -1218291412242298932370942392661165492.7437943435833440124234023329136270 0.2426462318607861947551659684514691 0.0847945694787768244701339998386550 1.0886067246753189617899179791503544 GT 1 -365901539134641869815839209316258457277.8641012347200763928955477178681587 0.8734674257046844238488553193985361 0.0660182583076356408889278430292463 1.0682983894536148963176126202004270 GT 1 -219461110522184951040965594282932.6342346064365378578112757887528302 0.5523358028324371975267254638517275 0.0345806326988233907326077296814114 1.0351926945304375417101974872139553 GT 1 -9171810.6760185980611940001582450458813797 0.3966948286849206909179271182411650 0.0601641553972311369598687517269488 1.0620500523695851057664060338830800 GT 1 -5830955267671.9170011291311660861322785010959688 0.3663986843514977474835655654811761 0.0797979817537265660601817348461905 1.0831620479940222981127108463610911 GT 1 -2466185814498.7739473025874596183069359931804845 2.6120610789499133569645476982944900 0.0609796539197551549116718818389870 1.0629181321915307397558367044306988 GT 1 -1960198380232399272499839192885252256.0612443265996245361773795272667007 1.0258194449263989628642448194843800 0.0333688093695810623965359019872078 1.0339382516969613691322922854283323 GT 1 -2869754510825802513811794176301922.9250433965486968489517545242017465 0.8116534533292310196372614374012628 0.0519708026901732214577858051710894 1.0533699783513618437203001993454618 GT 1 -5403213217125218518831.4150576145374140465143426298898009 1.7426171169823024354017613547011584 0.0530940509639252259086352004534104 1.0545555053679207657273463704903931 GT 1 -4039566.2039320228654710527284861641730695 1.0001607873978535885281177189319851 0.0620974096513732808665203715123229 1.0641091836109166660131072231693629 GT 1 -15188851374810278706412.9087533963978668258212606494746059 2.3282550438185730957314377282450101 0.0998305232952272501914237647183803 1.1107028244898362414415513602440754 LT 2 -676771170544864594744562061.9019320991710941253062015579319967 0.4167911967411074977867430295224069 0.0672109550027214485294286179114535 1.0695762076687681465553743700013650 GT 1 -113960510204231080.8538639731986639307384067182846032 0.8011247669810419120438510502096124 0.0988630846247873335575554309862416 1.1040980735674943244617325123326341 GT 1 -7023100106711.0533751379452434487130212890745399 2.5494490997275094553340386066405713 0.0161981507093908145078457717850895 1.0163307748802276710931564076215301 GT 1 -860.7859348940293859056250720289905658 1.0555459142734650102858819714076951 0.0538060660597509442604202250024283 1.0553077267755730663232370784032903 GT 1 -324598.0062766123802115349695707036952117 0.9523967519101545566036119143620827 0.0881579073555030994530491208149528 1.0922884479291206044129200042865269 GT 1 -26500722349097913532862.8415229709046980388971334123867019 1.3640566322027945606323838214752139 0.0531827526999445196695603887421021 1.0546491850949851842783884889970650 GT 1 -48959970723373784761530376568951620.8772132089577895731165322660059392 1.1852644834376128064667686925726654 0.0938846532580611190847398669562658 1.0985886667582327050047869115301365 GT 1 -2333429215997279071711291355277720855.6144884061985456360920409727917958 0.6596083940024489163606118181216588 0.0185058396754979572668062317758004 1.0186792150291162722137606415581180 GT 1 -6349737949640921251908819748029.5601098411949751215504153346688357 0.2263821907877574593776487122634229 0.0612803101543155782140193524350484 1.0632383642059495927561788244537449 GT 1 -10662134.9470238007141229244038223262123679 1.1204802818399639324006878044742765 0.0231557291103248015745649839489194 1.0234280348440422925471339888947872 GT 1 -514139153924841867193292092053.1317798558578888445139372435130782 0.0981697495948965659672216225419346 0.0592400795971990657810058842501399 1.0610673043579181273301061306241210 GT 1 -4312091310673.7817548587213894659059444782854797 1.4572777685719812608048705981267046 0.0943892008034717298392681606706846 1.0991456466964925589876365361132744 GT 1 -12108406893402415791206909.6331549262284092492398867910033655 1.9681525475387522232289882217905326 0.0351964910581083066418339628453562 1.0358308160528408870634495196031698 GT 1 -513949111468966418.7500842696566436735105785696723389 0.1069378425513779333701649252188235 0.0965903817570988041427605722266443 1.1015792091026779734954354411324201 GT 1 -106.7013209353965404597257699195562880 0.2601180619520067702130690552450888 0.0886758401426871451999383396818892 1.0928566164111845726751314954297289 GT 1 -120251397.5347758082627391129709488493401948 2.0909673561248923428260255691519710 0.0891249187061524812744282823872753 1.0933495137436118661699183160126437 GT 1 -22853926744.9424243853680436664151008338811227 1.3768705663147314142120820234471518 0.0171768490815471848925119555678416 1.0173260825294713475908809271994262 GT 1 -544032526403841496649532119628612920.0492989976386235928909008082310544 3.4552025758594890999567175875346072 0.0404822551576120875362352968917838 1.0413244698623608032446273803174903 LT 1 -33332849267871521297.2830471084543202809710722297630161 1.8451969780672857493638516836917641 0.0092661016189256605107978931948561 1.0093092989931151705168623163963998 GT 1 -12284684.3970209678498985519290048277299202 1.3581532503070099143499465553731205 0.0571435264401101352098318165152023 1.0588412098839082661681884024731621 GT 1 -104839704555625670142904511889.3055974218788839658183064506240754 0.0143188378451587244787087166663408 0.0799177966686952936243813181242178 1.0832922614835835036064830643276433 GT 1 -11040029017.8370606221782875093918324985850309 1.4046064219437377148228149240063951 0.0704060771680389467142597983211138 1.0730074303069337678034933941736377 GT 1 -6157644722821533483145932642754772240762397.9943418429889090990499879265442624 0.7009292749305807365260847364998454 0.0719286299609336823492441882773841 1.0746466417834730812765866228916581 GT 1 -5349518210971586144272041450.0060350141090540163159674911004839 0.6267174044780997011868670457349575 0.0831332376977476391300318856280606 1.0867931146626728249072513149727893 GT 1 -166213261185459702942412177065.5195786996944818165169518807787471 0.7238269644844294864044371561371812 0.0984411886045534938396332937590528 1.1036300012004593727739714110330387 GT 1 -12529524807282064489171710765352155.9628952454937411465852416466809408 0.8860602264048976114957493732844460 0.0609950954202368208524586896946058 1.0629345765928790040504054298668459 GT 1 -206168772555882595885814597822016137772.6873232554941562590190934461350896 0.0430955327960379535776676348840896 0.0758264228554937345880984202069837 1.0788553709303200289786819167798481 GT 1 -7833374244332920943360743.1690299092145082484432614210103702 1.6053104769667446874419749645609707 0.0381966130436746053958762120112017 1.0389452286680384283647037050003130 GT 1 -33646395.6911332239799996639044497469586021 0.0968825946388068741760713882382902 0.0759461553161875013230562909371687 1.0789849355709558871990041017431500 GT 1 -28349860071910810751350804059346918959584.2575858346863751245650595080160501 0.3217036136447381832073288678435606 0.0740452044030038575348787942719277 1.0769298623774350395447915891452818 GT 1 -433150116112356.8962068392193499150073067563181666 0.3123365403100318970757145434780629 0.0860982156098938003688467831552344 1.0900321702054974642705807090211271 GT 1 -22111803514377641932457161.9491522937167269428105375022802381 0.6347349057178468600640964069873587 0.0248536237152346714778955480690717 1.0251676897297626647437783155706845 GT 1 -41651932549879331829291.2588098794352467569457176760462070 0.7498325674490806083636660027505084 0.0308738558301641450470483973308342 1.0313604958221854411786313256915288 GT 1 -23401735773075248752350706.7008890635945819082063610537112115 0.7006631006185328460659374994670785 0.0983021933891814267557100692747384 1.1034758409835946015879239741907776 GT 1 -569443698531125591347530517262124355.8433369437501931293641191745218209 0.4867737445308925099204873377495452 0.0157036742035651830616588611992498 1.0158282831625995234860851749263753 GT 1 -3.1302393853834617579625673377742029 0.8347005295800225777103182645389816 0.0476966384722449825612198342711407 1.0488716378841821975612124252826343 GT 1 -351268184398824911020.0855488926649018493520257461453311 0.2198455140854664202747903679654527 0.0671850848405926725348260328982908 1.0695484738488546624018958811858154 GT 1 -43322.8163024257374647904708482949964477 2.5484783949868851214687776996295550 0.0408691898816148138667303081097217 1.0417278107746377864346735254264327 GT 1 -553226104779460471705281859658.8084576372384805046931549195635089 0.3827462227696069976456311156998370 0.0027824381668658960832927933322553 1.0027863163434703653205322236229785 GT 1 -61818898622.7835587377534136346419166524425959 4.4384297798066005155365322664937637 0.0921267188920582020190248409621024 1.0966504683711680436320688927646013 LT 1 -270686638327778302129345447889672.3072317925418114935465114043181232 0.5668842765397832286895689803659748 0.0538620869636471446052375494179440 1.0553669351052347704438598178474101 GT 1 -42830646147970028443984403869880848.0666227516079453236161885882708814 0.0983073386171798998959940162926108 0.0615594088029946371083658596673316 1.0635357268270898904911007386422754 GT 1 -5842756601945570642185885031007573.9798467999674825377670090257311534 0.3456640685673920776677795051513735 0.0688526921225168036773938764429880 1.0713377887890806693913552501946137 GT 1 -68029161135410045.3853940520290679870996902937875757 0.0311996807865032102975552758464672 0.0103919435762669914203529031599153 1.0104463168459171674118939272610978 GT 1 -4743641448978378541087201998140662822008948.5367194228153927854630145072968447 1.9692770706024127546873401048736937 0.0009151228188531799701365021873130 1.0009155417993718976703785963990426 GT 1 -1229906273574671373209452183860582447.6702955400129097176451908332788346 0.6029471719887728893170539205331791 0.0719195035060270034773538675970810 1.0746368080461897209360331500144365 GT 1 -13461910792826277316040887361378967354905645.1717175635502632030421193710862730 0.7900964757147936598033420122293857 0.0960295201918096742072664935357633 1.1009585742025847495848126014445867 GT 1 -28971.1793453817089988251865160030971668 1.3903504630861278199607152870369995 0.0293212739430695360264476585485066 1.0297597345884580435337353284873129 GT 1 -3963444578682174.7029714925890821826590493259214849 0.7262368653917982654155577777893003 0.0631439492002035734814015311613200 1.0652256362940157475178332276768049 GT 1 -3057051050458732947.6304497913136887273416745590934407 1.0328509013879730043046609876213578 0.0652124059920041726718268729266247 1.0674359476849208909163377942576177 GT 1 -490914.6538718875272163834519496387092274 0.4983409088146872529122967033100967 0.0937227240879337135208315489036637 1.0984099757080328258602952077546357 GT 1 -2997160565943306872757549030779169.4936306199307184229508141206854165 0.9030732602608857043097547279769146 0.0463845381570078806621944368178334 1.0474947686215100922512688013385197 GT 1 -987295259570470927575721.4762980502633801601868465934906193 0.8352067382863449130736669746416707 0.0255950570571189374466753618250522 1.0259283092326376767022769196252895 GT 1 -1912221774.8203947508286029059083041560874103 4.6593838561959223268110209400099934 0.0479027899385044187112194651684757 1.0490881379946527929654739405534259 LT 1 -1170786947144628583257855625613105856393.0956011781614367278228179798177134 0.1725822876133716864733636906759483 0.0574184378333421180951253744569576 1.0591328252963174485162400754943180 GT 1 -283706370690449485284707218124783882.5885919249522379410746415467094471 0.4583808432993966974361518723620423 0.0153916770346316358935788742443045 1.0155113585499818403970161108089827 GT 1 -72.2785601412130190797709203122786134 0.8035710821331150137319148929258145 0.0269434284134928934682946143283888 1.0273130570818513073702472117165949 GT 1 -41569634832430917674248268391069110284.2826359740095847529743717932042521 0.2326069972882101949610520778798866 0.0003089921806001897237377415160022 1.0003090399285201016567781665969545 GT 1 -15366392622583100465079641714285821341510.9163968829092661082362406947058348 0.3573520633259258726023924216211874 0.0934007988906480537589005468911411 1.0980548216699613436688653844662112 GT 1 -6569626141214.2679234995845684524683117530845755 1.1427213377021812545010427734455846 0.0818270474752495988838742136072088 1.0853695046638864458438630997893840 GT 1 -549652181.3993704679783385773787521248570848 0.1628671361137392006854452985352652 0.0324375975126651284953703238842985 1.0329753574632318043351205407828522 GT 1 -19853231325975248.9680645272234208796761739157704971 1.7106362014637504392751747011151946 0.0571387060937122959297719983321434 1.0588360974047440836759732804875848 GT 1 -1878008640322617541407371775590812555226.2110846932750480149861122710559852 0.2138911893239666615452280960506102 0.0379792613267536911152897835896223 1.0387192706764007433223490347490929 GT 1 -178703226471636606752891962882149089.2061616671503226407478687118137052 0.6793724325548108520861151676983720 0.0442230547076204496737012670314666 1.0452307139781445832750265765488740 GT 1 -6782981439031175968.4458987948706019159447706105195745 0.4825981982218431348897659669281872 0.0539809068911183524533851596986475 1.0554925271435714349415631629640341 GT 1 -651346012947481231.0598366324831692930129603864700933 2.6503832119937655264474515703536278 0.0631641937386172045170973658675080 1.0652472455445850184703828201650108 GT 1 -29835590112386678172197383.6771800415979640244892454754620961 0.6668058939625894426181878103779500 0.0124462901022375092187317562879977 1.0125243939160439550077141086555391 GT 1 -2695429069197368583915248691619.1807994545192761654361119431530878 0.8672852522991982023225097475247617 0.0288681189867001404423933496473297 1.0292930001263578279795359674264238 GT 1 -244866891369753332245361191884756896162.8607349067951438610446300461552743 1.5751544204519511955486094790881933 0.0082271974427229797823444000357218 1.0082612276087309922432543992613657 GT 1 -191262851708970465108995092939061538378.7423493090557424927698501224964663 3.1922238887580684476460941655561611 0.0360026127266940784331651901740378 1.0366666946726647966889994069874036 GT 1 -3906355776181006.1897256673736489955499437729576328 1.0589435531793099873544948789444196 0.0369431565243441420050963347568735 1.0376428414331725070761682518828503 GT 1 -2369304790.9933087608922378357955351227806078 1.0520273814524885117879909935693248 0.0696262163924819183277428812000847 1.0721688557246360710149740901501566 GT 1 -28.7916865607101926799740141424539321 1.4999811370311152629618267979633566 0.0521193228738966274012920239097664 1.0535266526595975155115965387118841 GT 1 -10808572658995437647500736661255987960.3140588737567909531081467316745497 0.5422430959396550165640414441233439 0.0094876897226897162328520706887501 1.0095329845741596790734541075037227 GT 1 -7005.6799440348171200248024316520229380 1.0224781442106913413575271254029660 0.0358196600601727744234368184344947 1.0364769272414905259092553052830611 GT 1 -177647615.0299261345393421944771362998312741 0.0804975610206156656403906187924193 0.0193966462396578445037402577801776 1.0195872296603671641319891399946310 GT 1 -181151284337547379986945944233392680936.4675192877986548459038933750912052 0.2449802118408595914601019883820000 0.0383628277156507165051919962449190 1.0391180592466506108085277483216716 GT 1 -168.7392395918626686639874988910812579 1.3427139317566364980055035978977074 0.0809657566238853864490487604233091 1.0844318957579520609530654544687976 GT 1 -2097296325388397102591407636527.3293902949766955509904355630388723 3.8112112963724054637449047888433436 0.0807014717924967627589384336098305 1.0841443691063092308404824463465019 LT 1 -11548958519017548045191926323.3428543970879126842993145254249563 1.0208399878387191446238393195113264 0.0065766525967010444716640941057752 1.0065983740651363166545081427210321 GT 1 -552.9781220454826557348243148495449786 0.5198823450174738014270895690870888 0.0630320558505147895361500363067144 1.0651062084820938416630541466860601 GT 1 -2054507346890429.5212877733230097902135761599958704 0.7919475574819420892939485859092057 0.0880622585069682480542620381341018 1.0921835571447921564450688534631484 GT 1 -3003462956545109168723059.8158907595764687201042249891681886 0.5940600584668763798275137739124895 0.0497806535119544498549722071504580 1.0510624299987364979622386786549477 GT 1 -573205.9118647540287117978045356014786438 4.1041239851486026734501611030651806 0.0492873804119533460511653708418396 1.0505434497091989864003657979109674 LT 1 -5362334863091019730523454142200467.1086599620737630418020088413558062 1.7331853327413833950022249265189465 0.0154730208564595875765317271439893 1.0155939773743837025728474010197613 GT 1 -8.9659754868817487418257497581364954 0.6016065492853692359569791217505238 0.0119148690535773028856586715268702 1.0119864200207241601905452727079195 GT 1 -18737183318041960045778619930067117451.4766265533739500013300553358906944 0.8268276545999686008724131778320723 0.0845636514883250937847997106692755 1.0883544437601543736006462084830582 GT 1 -81282812848444591379830346635664244226.4871160093890823033616834181424728 3.0366735053098821899612392815259273 0.0357187798894569932077883332345240 1.0363723048078391498496820017772281 GT 1 -319594536372073560287227410382748.4045982242212842807799854537880174 3.3427875408580165529361309860580771 0.0864927222471935194932094496708157 1.0904639363071340905432563725782303 LT 1 -176649877434288791590200032.8637280332775167958737603527732528 1.3329433067479032819673239911781504 0.0128575920598520897556055898274584 1.0129409663292340627521069517392624 GT 1 -21724.0214369346678812629584519424465010 0.9653224634442505729148564769974573 0.0886599980600071389838969009604358 1.0928392329754288781351868598935568 GT 1 -4745010668442507202278870913.4617348933107655957531348073440241 0.8689889335548406010125336676149021 0.0808160088994563751757363694611404 1.0842689687213775361489132536299856 GT 1 -9018316049745575780013397225.2569567573242968889911230524396223 0.8956854795395114066397225657637628 0.0199649762313604194822403700742168 1.0201669694166976900567222357597948 GT 1 -425333455945372790557.7921709950874595782988520423959683 1.0024486237042875805171903716175543 0.0832294465574671914856648194530434 1.0868980523828879715869480642048745 GT 1 -21146565083758031.4578501492621247273182667413603965 0.4186117289166181579431495224929008 0.0354528142957072746443426155939350 1.0360965253817029890533960541622790 GT 1 -25832687394078368757.8278928387348017088041779790708394 1.3173423108122521420067444875747236 0.0627800957819561430881752181405283 1.0648373346119574766347211079464407 GT 1 -14549432388019513891187535990049194927935590.2681823314104545181062286266479809 0.3688373379042114026632708244050464 0.0143496658240732316496217109328106 1.0144536179290404389110547138806745 GT 1 -11766343.9297752063717040764897072369561902 5.2937602813151575034314983943789329 0.0365467163630039263187874805139084 1.0372312784090733110828890924361488 LT 1 -3609367929.9777054250375762562076788887058511 0.0588174602618730931799718817251603 0.0484778623737557675878440059108069 1.0496923264879497872007907353005365 GT 1 -363005936813159475.4341862748813812905352029524342464 0.0413545805048296480616899248491631 0.0766080297547435535923422154965713 1.0797014648044797823396319480118475 GT 1 -2.1805086710112224363151482172149394 1.6448813477260420791422206287850638 0.0265080911496429741908355280959526 1.0268657656062129869718461734629589 GT 1 -1631635167630532814458029093339671.7083023168882866854070150735321262 0.1122789987239589135564104023962288 0.0245728464484094637778921390056291 1.0248797977180341543432015672347451 GT 1 -48.8039512845055624068988400773992820 0.3542006482031534836582526186483168 0.0199786699823949582435956320054004 1.0201809422302939005054353689461533 GT 1 -37068055.5486671589631090049390353152488367 4.9265773982610434839955124274687722 0.0964957409806752800060895971060458 1.1014744550491494622709247207188804 LT 1 -856247295184787220400977017053.1742933213354707537957336222538366 1.1228913496872038125392589622156541 0.0090756562740812939667343187913712 1.0091170909308125680371175630172681 GT 1 -22885235770384285856186.2108391133569420565485655775578109 0.1941824069063957305418857212379700 0.0045645226148395609772764047780086 1.0045749718575177122374227632848152 GT 1 -102962408042434137173974.2854567088242340129292386940044240 1.6794702559606213248495057945207827 0.0602708142614255578402096971843782 1.0621635455050575586481664345173054 GT 1 -2739898372147448760.3157881016378054945315363677671513 0.2013238087627281093551146776464890 0.0033959899981882789427739243992272 1.0034017694605962017772077013260048 GT 1 -1844391341093495573825503944658.5317687553792172045028000909775276 0.2991424531877611833003618917590261 0.0926472390694594074187887030523098 1.0972239729150799192743749719102584 GT 1 -90884985043022886442956398.4418477097145078966488112878611047 0.3823823221416397591351033252123991 0.0118223885477559908002632010967084 1.0118928287143611504461050676444237 GT 1 -34534478792.8747164275543164989317623114640493 0.0129560908507044668942690924957924 0.0079537843688397616534371558645986 1.0079855844446040229003895376521376 GT 1 -22713028025886663706302311092099619203.6675832278752315848263934083842454 0.0565654219525859442187079041095612 0.0161406625008243456774183319787359 1.0162723418441249286839011600175686 GT 1 -317862580954287842506209004573579387946181.7162763501718550725480835063636303 0.8750721028569293096002518093781068 0.0799520531617600666564718765731168 1.0833294941685276355580265640995756 GT 1 -2518943477619.5143156880376020326055512508274484 0.0504217022528092453635258015358857 0.0548132510829631139409706787799203 1.0563727531106133534220423530002074 GT 1 -18991618886.0343677958393340558760321035649294 0.0894214321928121740714834235183878 0.0002111841042056849004162692681717 1.0002112064067086308152832006194627 GT 1 -690830280209231320709011991031500738962.7413695794260521118306910515961902 2.7247573139435994993440981288577820 0.0868008805844170946316856054677508 1.0908013286112553080217048521184322 LT 1 -42291610993.0664025685579002181632807933016215 0.0053012996697494362429208180006875 0.0293642873934003753517383117294117 1.0298040483271097687368099060574947 GT 1 -497179.3270573522139656000951615707495696 0.3510039096331885003843065059433382 0.0633926732131177085149446781956125 1.0654911595141128902875364954272392 GT 1 -342478017069156806339132.9609969223081752203263534416817147 2.7286879481335316757825223554719048 0.0788105762640721211229231436243930 1.0820895920655520347929815047604545 LT 1 -2035794.7829579291669977728540849078448606 1.4356492842849515407118699819065803 0.0045822815379707105510402405685692 1.0045928123724975859342004443910107 GT 1 -549093300374488520241759572.0299242132679004769386479483498786 2.0103330555512280573533326684481402 0.0729493678835817573097334726076046 1.0757470955805510238162496365010831 GT 1 -1.2168136441937157578850491274643698 1.6327137560477387954031249079698563 0.0420421313719912480736201079837509 1.0429514804459894520334277464087555 GT 1 -4872691.7268450898260717297210654805771186 0.4736000972963493752887392581437305 0.0223181669649083712791714242316375 1.0225709859716812211080499385615050 GT 1 -13786776803664750275.6900081834627888340200763006682631 0.1700414853947736390610012270998208 0.0745618288019341431173262413766727 1.0774879550369679503498380384843291 GT 1 -2350608471747357.6202815702554987657088793887251908 0.6173197253684842914656026519960661 0.0012267857427058679252746249369269 1.0012275388603407828863571111870636 GT 1 -33952042092433018338555147537205594240612.6811611414560090721827562502880941 0.7633032140712987233970036216506561 0.0967789489405175009394361673620820 1.1017879592222320387011070659272617 GT 1 -5779410282311363996184.5248686003297502255490377781279376 0.6584213169990646602954532337462199 0.0564478685535079935933060416789392 1.0581036624445136070539389195321759 GT 1 -901.5842098562607465413805568364101476 0.3306661326362509340484753310822356 0.0600927945610548367397846361102745 1.0619741262091356781014240877359303 GT 1 -25247409460098379752129.4336973519343113715278878851486373 0.6613215102402215727511219491266295 0.0388759672322273693921003483079705 1.0396518119845473454709933604708347 GT 1 -2605223207199219133503227190047621960525.2792781326362723521780617187217346 0.1971816282183732289322435962230886 0.0874189622224851414842191483673274 1.0914783889454299736637072421210853 GT 1 -1863754776938409014085398820741826776496.2982716419777103788908387262993049 0.0585749890770376760309685978463635 0.0026134340183624969813224363007814 1.0026168549986841213859942778218550 GT 1 -305501218514477.1596681401816439320267475831140047 2.5232257081338071037450476458785079 0.0240317642508542725983011832849796 1.0243252384376456349666130765700648 GT 1 -2947843910421387357334771248166446622036174.1417805326959536242174945220857681 0.6918841773496129703876274765688295 0.0825877921117971428694497852401579 1.0861983898570226121162082527561538 GT 1 -1274168633450287312622731067.4317801365658345463805304289497235 0.1631190312720267503327022522155591 0.0047052325461000721831034875316923 1.0047163369991381099146550034837960 GT 1 -1704945442690791181155.1879266574297381025610366493330859 0.3581919333842912106880574608634154 0.0242484153079519738322231620543381 1.0245472488468431966994441757863274 GT 1 -130891055032131063494540589012156684.2392238243297040855800045174687699 0.0923950696124899755085031469913913 0.0693707540992274578457845926109610 1.0718943131357112679280671257929350 GT 1 -95619388947612079171302603306.2357764777297290919405498186711350 0.5677171495915693368381603615521124 0.0007302725644476003793205983690293 1.0007305393433455732418519510263935 GT 1 -192568644281691804740989492281792.4504843222369329816464744913375283 0.3820011773395741512980324547810969 0.0075739908413758068141015124472835 1.0076028191659001343150353029901648 GT 1 -317302054024145439697506351910.3905615789751660988583469041932247 1.6294432037826273129399709213807262 0.0887408087272566605902465048454050 1.0929279092654255057477233484601261 GT 1 -43986191406564672958492742904302690.3316886784534425157404810417019858 1.2057525075406506201443033649421177 0.0240781932545593840497030251307010 1.0243728118180134451447116452241254 GT 1 -8746240686994720033682626145996559485165433.7083929703997379785979590761748220 0.0232667137931141227381057378817640 0.0259991895468116845818844206395020 1.0263431432524858003290532618155253 GT 1 -1535182306350263268865359202688759906.7006123717155722334281107300462694 0.4778458550494244444487473698664574 0.0699416069891911528121239234482026 1.0725079066222655003905173108415790 GT 1 -12368438174418178588.3644726761048695981486823948011855 2.5194119844262404852306589624386413 0.0810602330676590571837611864290712 1.0881077585561227187320466839145114 LT 2 -25372757301282298634692270.1870377308968251007422910284622154 2.0203928081460399116107725909231066 0.0229937701183662810349848459679155 1.0232622504175823033727140172695295 GT 1 -103844990732454710255227057570186.1042430008829510500031810380304283 2.9884013202818101593461257733474119 0.0583282778621751441714721313744820 1.0600985554421786322206709941912236 LT 1 -4117165301923339.5066857884463004105289504218170170 0.2349575376809612712335886024417684 0.0386618293824858055827353841060453 1.0394290374090575410050804831457854 GT 1 -22524580360279843.2997495141182389198034334365707646 0.0681462868628874773598746817745236 0.0725336982196436573469958842222400 1.0752988174728655593628829911323160 GT 1 -397946366603909076135374.2747303484009535911605928964579396 0.9573070700020587490605873413299543 0.0159569474074310884808913338391588 1.0160856302522777300931658171374823 GT 1 -681749934702360586744696403.5879738458414861831198517209147091 4.1268293499044826632499533277205363 0.0505616834008941918645672228747240 1.0518847149273571899782368789902493 LT 1 -56.9127500183370058979173547007211254 0.3128726218061984422601370889487767 0.0073573209200287370693871260301700 1.0073845194934593054605754396272893 GT 1 -12572591583845388151800775.1174107007339964197713267755993520 1.1116865226356727281179918908776088 0.0785903053522633915808546714641550 1.0818505048862949155910591679927219 GT 1 -2.5225350745148093394205465247839899 1.9335744770192081526699001034761858 0.0815156831419078214792833210294891 1.0850304492053476442247608409236020 GT 1 -2418222771628941658032585.0156696419935326339674197021822304 1.0850963118659634313317008940345233 0.0667297188712257912363896301369589 1.0690604297024125048295474670509851 GT 1 -12454921999665469924494.9970164633777310165565925967381210 0.3521841434047425694827339723091718 0.0128129467499537747509853726932052 1.0128957405340630673727755557973143 GT 1 -58.3201537524774864419373865547772051 0.1570599704586312557013312108427608 0.0440285833938197122938024337144496 1.0450272653252283662256713446988393 GT 1 -3173064790147844732.5381175083479996174182295771305764 0.2625011072671163483223570725088237 0.0721134107320976956341214946722998 1.0748457635047900342025885119661535 GT 1 -35231767931490310088739867537511286944246.5619733025218227104985262965327055 0.4287688283156949573533956725664103 0.0973949170156754381702836012849633 1.1024701601134859359422326798928857 GT 1 -28.5666667056073302220975902256086643 0.6280432128989323838386083180789193 0.0752175328979174549846830493630869 1.0781967398271284934754595620209165 GT 1 -87822522501519.9907338417006895519772643311905875 0.6109467795363235187098760280038117 0.0050318228225529443280414704087109 1.0050445250712370107158224762077483 GT 1 -45497691494.7718779342306653478446236432072839 1.2404554895163414846307001861980707 0.0993171867928967208693127991765138 1.1046021219698069787154854241048460 GT 1 -9609772930631978862061373078269015.1420165935070764940359753742890118 3.1348030323892658166259788713355818 0.0365242675024298578048809056290303 1.0372079782663206561760710606839335 GT 1 -138970320323927615326666017643754.9543468041735369563245379622157897 0.1422812953243864253218734986695259 0.0792269038665508264466975186079423 1.0825416399276310597388454838955262 GT 1 -13473497246361204316.1532093118801964047004150786029776 0.1154439709656059436309304845700954 0.0256495201593680560932371222608768 1.0259842044995619435566583428215434 GT 1 -259194058505277161.6568999681600840105897872765817726 0.2182569385637259432643742961079586 0.0328551836574938491522045064314054 1.0334070363728354356853052101249778 GT 1 -11820439462950915890366108937109969.4522515910225696497185350991513634 1.0448617501089228014864882584429719 0.0583735457862550017486966828224777 1.0601466284713537265546161776005605 GT 1 -380284502814938907615088557450944479.1809499149722842511699820449353905 0.3548654894674604512892834852111935 0.0480651140248744569299652029363471 1.0492586436149111770666030933551230 GT 1 -159129570167302844088.8138988055829663618458510607224840 0.3819767956677053283671681820023876 0.0587856106456361881126877089502843 1.0605843339389907256662672633627988 GT 1 -342251798989378206873706.6656904478475844995558554899928136 0.3530214374182191747859323900129463 0.0117993991300294960778922873860352 1.0118695645257719437578057741880829 GT 1 -135.3365547128398962403987114845075657 0.4407984233683829058907102313111192 0.0677350534872494256773264777636965 1.0701382273215065165002088536060584 GT 1 -698637560506311202635997538584291220.8841398337692045864748120954582926 2.6354580742145172830423972614734153 0.0863746256837675108835178850136980 1.0903346664772104309815168951296009 LT 1 -31729523080743685249391821274.5255044983015666968160862468868196 0.2636311271832667722937372045430116 0.0501220676659357575949861437273245 1.0514217949233231263465950169153584 GT 1 -14451192628.2344546504208380900987912229579297 2.0683084609130240244022006200220526 0.0951781764296364670118618946832980 1.1000172346983762356688548555897034 GT 1 -46686734451119482337130276317647.4334011020341210895987901902896746 0.5401272112580441328101446617039167 0.0562517967389127848093013513589979 1.0578958822500264382774854659709976 GT 1 -100967.1251039205753915876230153206905673 0.7239244666595194009760165563262693 0.0751190468463766871248405975424610 1.0780902490455567582545227545902058 GT 1 -18696709645330289192312582110475134.0192860015253794086403236447862219 0.2233384928283919554535533845377132 0.0548893692566529831955405128613408 1.0564532887708222108067837799341278 GT 1 -187430.9006240944552043248827921085286388 0.3146257408972500899269423520707585 0.0856136883622694965128045561629191 1.0895021363885947376514364619813475 GT 1 -4370342318024.6536666807347463588455792791008954 0.4305209614880366858796841318429974 0.0288977506611031570161069366584500 1.0293235131051406097607728153254945 GT 1 -203256136459.4975270012709004912245145159988940 1.2983867254482122195222115063942087 0.0839708911024153916641634946964369 1.0877071365404531086645710225982007 GT 1 -130704492479336619995.1938826220618781183842877547066917 2.9758783067157129016912954347871115 0.0348202158981192268839916817047776 1.0354408902269409843932266293029375 GT 1 -733319779967000469772464.5364125256650494236895959448289803 2.5237106809239207638197010560013372 0.0038214328057577654129698411760864 1.0038287531354854365514819118153350 GT 1 -66751782863770771671565714593206836885214.4870721584432879588845862902092585 2.3557919306173880587271615199815257 0.0554140498972233220543677769657512 1.0570085955426831182699262506634092 GT 1 -8552590.7152035547188417420429097690665486 0.7637324052062911627440736968608719 0.0069403543804067180637351580508812 1.0069645506586908773400879170650781 GT 1 -931474512190971.3225284838406735719548451341003789 0.1575885574107409715964427366080961 0.0518260448235882464553988424935342 1.0532172965391030818941886593192938 GT 1 -18111318.4110591428523106354200345231857624 0.1257717094342423172052787250433879 0.0969475321710423440264120305329540 1.1019746233450810407365493558729083 GT 1 -14954315760798090939651.1926063032534552640967831033953778 0.0565298950476653976180443901951276 0.0902212769394618585343066923758300 1.0945538705117215365029431261981674 GT 1 -30310551.3120652081045619033899465715487509 1.8629953586205931968219890219227440 0.0268292027686736391173625823389578 1.0271956754780566891417865561224319 GT 1 -5728428385275005037210670377447.1008605353292451190837404959235230 1.0445841503573337131815801229440096 0.0156428453842943070209851254163283 1.0157664857768274984488860971706746 GT 1 -9007.0856436334754639881510360789394558 0.0555256628808357448830926712194673 0.0270718982104094254286521253696923 1.0274450928567069113398479138859383 GT 1 -40162736668152066946352.9158849443593766204137554955896224 0.5002228768510932418246069274085282 0.0904435349044539093163163308148933 1.0947981992836208818593821239506446 GT 1 -2686653.1410814251291670116236326683473985 1.9996579047170004556665553244612860 0.0999374240800009956708485202189282 1.1052909892748423880531869029006519 GT 1 -876926963946.2648396183035912668794756975565069 2.7574912298895473209693420491948943 0.0064291741437978969225801312074826 1.0064499302949847058521651180744557 GT 1 -13592.5492103720298597173384533665352212 0.0424997871087042747063659526659884 0.0982418527085076189886235372436712 1.1034089242612141528692068750864346 GT 1 -28173114803128701994067543527044.9326415550498467909547519904558175 0.3048635417694107818116521973325489 0.0875425815066841216738522353050684 1.0916138592791791411863310604519186 GT 1 -95824950424626535299079614.1475175601186438001272991888764532 0.4428195404710290791151599254018209 0.0732074619231312936327747407667694 1.0760255377329043212857330376716909 GT 1 -207855.0121877317457382556037233773309141 0.1949808155839655327549001430202761 0.0004055737538260365023004963245259 1.0004056560211053175723799686473341 GT 1 -60236.8434314970309728578994245374992271 0.1651496512435593088360412092875948 0.0966954021705978614965029980145830 1.1016954648034225534033510337296357 GT 1 -207340133001653637018959056738.3385136399195877623801853335813469 2.2222959649193588185242620994760661 0.0062184353903357673339313130368021 1.0062378503888110341327410647161576 GT 1 -6634483537565401233.7516287889972763280612102649598321 0.6078323805305431400967295966467570 0.0989817004493186974315608817645971 1.1042297113129229584798080073345574 GT 1 -20200020116207680623506860224.3001953221124565761644557347663463 0.9041526822096614390680567530724561 0.0429820099499002352408939356212778 1.0439330893254106047727532889069484 GT 1 -3742080296581283159672704563220951793367942.7861036596032593043926658403990545 0.3773148540282690023318481312117074 0.0051677046536016796458984280897398 1.0051811034198064110345808102780665 GT 1 -35017241859883251037872877.3449335991068448534621179055689143 1.9452787412255721496376598547130564 0.0675490545887463522121252840790145 1.0699387343049826772625461086465654 GT 1 -194.0680114133545349787944773549403984 0.1159494829202451604757726109945279 0.0637753591946554902380578786172729 1.0658998304397334826258153143095511 GT 1 -13945655334500714735624175128.9272534292645262248089438732247213 0.0369976099580872008883381805592034 0.0795104843528965497845513704881474 1.0828496682194929177074246970896864 GT 1 -296.4935875761155046429142993428366519 1.4926491221918210715597472548021596 0.0248523575907862443664944095762274 1.0251663913363550131592783544103719 GT 1 -8401482882034850040524.6368472791472599382395848054791649 0.2805682005327605609407310748530579 0.0771213947277714943559877107000044 1.0802575750442958097120764890052703 GT 1 -52876.7392402687995119883724863740788512 0.2440378892861294839752269623531701 0.0153937504918014432606172290574885 1.0155134644222405487259129931613057 GT 1 -2429007661268746690357238425459286815270.8017840294223069126109352152344746 0.4641175406175839586789856480701218 0.0438337778184326808957196373249967 1.0448235084699587737937841040074909 GT 1 -18676.8058164036239989609357999104287433 0.3842744361877420636825402097288627 0.0405060493597246469650085157233171 1.0413492682543349534244443944801818 GT 1 -1064314892132878277311389434233995462.1135465709724479864732805112410733 0.7108540083078463593462731147321770 0.0364287830853498555203642682641545 1.0371088790542466900263377218835309 GT 1 -8449288331151.1671276883845933084582357939967587 0.0229515768041932775690872058195252 0.0005780084395401421976881730998333 1.0005781755508158198049623756360333 GT 1 -46.5372209228181752297552931003798162 1.0233085456587691070777638011836014 0.0823502853980390258356253439128541 1.0859395356873910936084979411448531 GT 1 -12183999451227523167.3455645527811059231819949166942321 0.7927286000773357410015937385874460 0.0029331822252626343483123777674421 1.0029374924347291989263369520583008 GT 1 -1338703026192919346685077.4126732001359407666991203718715300 0.1348338136300419759127141784581421 0.0403466121011780788664990402045943 1.0411831139881025988002063813499346 GT 1 -1809881180704109.6570386443543286291970798590200305 1.1074423059662868534362984425758310 0.0836059571447048122892934375179394 1.0873088290183218980906542916734818 GT 1 -4588.2257877751821115219502881511616472 0.1984566851626873405641722985937981 0.0081939921155385602226716504815925 1.0082277473890263599548275020872926 GT 1 -12403383372.0921570017468019359557069210266970 1.2955195954639902782119685728933470 0.0168555172572254965367680726486834 1.0169991882086480405673246935580925 GT 1 -15422741546164007939969099267659.1416722536004034734220593056794102 3.0956365141872432935860821323502263 0.0598882245910385939908679661435219 1.0617565007777888484698204868770921 LT 1 -1042136.1245868222687632873084787790148384 0.1302263357955478614228195129583521 0.0440225389824248012290050813317468 1.0450209425501106094880157769420855 GT 1 -701679355943818453741826543902211.8648911218192610127555994983788280 1.8926357758977923746084528056126090 0.0792013959980862977076954336462191 1.0825139376465151139716653369013128 GT 1 -130098671429728003710457426.0286004961999336723814307732237365 0.0266192758525854537411969311825431 0.0235764622721074827433569416662459 1.0238588341091849210232404424950260 GT 1 -964256926735786411432163293.7497583780385203761754637987875798 0.7326797821817241975877218611998224 0.0665687542453081777684922538143737 1.0688879708234772075073957258158446 GT 1 -10373175.1521610416908156593687231430223272 2.4879916718586559236622473467627880 0.0909937212947410657553637098197126 1.0999541702467879726288369317715428 LT 2 -2129740563514103.8566680756177680597121398783458812 0.2346797176904116301009408095857681 0.0470414766992466207662547284334900 1.0481838985198051788303927549069153 GT 1 -33.9893398886020444807059157030392210 1.9022445873902796782058023344326796 0.0831286418220951116257901901416385 1.0867881020868843762110917236380818 GT 1 -9506765339913255817626457056591762593.9759894006556355090662388762546859 0.5501473393076912145167155576315386 0.0593176275153111315996746749656924 1.0611497389012991691255692006076073 GT 1 -2002615957.0737279611648145201257690495052752 0.4413349342283058127318978417855140 0.0397360077728797138392561731046838 1.0405470404203480080154636138524655 GT 1 -531371483616388084066737257516482.1609665252185669772741416542142647 2.5489024892205099176317684365807788 0.0257748906126681207558497635622558 1.0261128835758740209621471478538982 GT 1 -6587545249399661344196.2635924774844723201890522585954216 0.3665471451422954100159615271489852 0.0477397207452825701805799374449307 1.0489168789799612138069635417717738 GT 1 -13683109134233251379.6416169902316973097783781688360214 0.0314479673760862024124266545975970 0.0219034339579307786638476185164667 1.0221468755372989047013198271827832 GT 1 -20812766403642629856.4931883712838510782457829320126700 0.8724149030503200710792868731895631 0.0025230765754650059152785277121818 1.0025262648972168954659120237572266 GT 1 -2444368.6084035890072665999246370689282439 1.7386176251545793674221580384918545 0.0651507608564879512662305745624201 1.0673700042520086823734813582719835 GT 1 -579926383903336462754.0966075103157839799750855438623646 0.8405508658788211342021399100308837 0.0377941396243192293688124940627579 1.0385268591349564094167646988349555 GT 1 -242288663282758883341509478034.4452862232724425350020527019713765 2.9718123455992150779229862173982601 0.0895562238274082735982818344733346 1.0938231322179937699934290978537632 LT 1 -77.8265030675332609067020003788823507 0.4362937127262246663684112602567617 0.0317730235538723930772886928006376 1.0322887393919331332842909485091173 GT 1 -13558709277.3339893811250929426334975031952243 0.0241837195819483439219242008569068 0.0036026295767353037866450692398206 1.0036091346750080613630832415956643 GT 1 -31721.6600769910594861625536081489721459 0.3393442646584282765475955469137885 0.0820934023071456136836169800484407 1.0856596389706847328553629328483670 GT 1 -1340382917406608500621.7446739608021791478075765055127087 0.2665143612506602790658150795654030 0.0740039958684017197178822192932340 1.0768853595379265838007118956923695 GT 1 -713626875073736048722139916.2993065698746957882723783488401141 0.1348217225379244113762996136713694 0.0984141852640095916906483705549777 1.1036000498142482120478362335161385 GT 1 -220625.6248495786995733178623685464666864 0.6648693242921008568767156133709277 0.0279536560111125138093963158224617 1.0283517966573923605791410879334649 GT 1 -354494106255.6857260867362794461373330542822027 0.9742442896588590997217314709044315 0.0532417788379651678741417064091577 1.0547115286762396518242813447914117 GT 1 -438087.4945265154359076930220850260940217 0.0559348744675505681293945584467785 0.0819674511124372521725279954473315 1.0855224326856719125722051165125730 GT 1 -46918652495446206076980480.7202066067815360715044697342811836 0.4318425881860741969205299737729854 0.0612702947165979036921472987470328 1.0632276950100247876527930695231983 GT 1 -1970074873322919857980406.1506910297909066985724062709844340 0.1137459563930568164289432193908268 0.0711789633959875409608181565662915 1.0738391996258189794208350266103036 GT 1 -34401412113601154803797711089318.0533009513047890920170982766477419 0.2417339960730836469905658408816602 0.0747206456142513384386536956083313 1.0776595823226142970721793956300258 GT 1 -823046.4652441573228580884798010145824386 3.2257470683279933061207152761275420 0.0876212016770655779963819567212458 1.0917000261030350021011361126683783 LT 1 -32605427729758460796939642080376448792.3816106665363732056831519080246568 0.7228506252015455845408328186072062 0.0836018803716800134804544302142874 1.0873043803163814870179474327524847 GT 1 -708458314713849261244546287625849711035.5604306268054831188620342308653216 0.3295002172928521634028191457309250 0.0956152025716846425723189128313524 1.1005003482858193883724136549404153 GT 1 -37015668.5127158904980460393117810869253187 0.0045943871438843141892146135634096 0.0085820633699396671724386797184144 1.0086191013361461534258694548135079 GT 1 -539550861352685208466831633965990420820.9138079095404658405022250423960975 0.7335202394421276558820273413471810 0.0566104151603772873466868834344596 1.0582759482187571092237636771545635 GT 1 -3116798749.9756062572580907282777751684778179 0.2715418020131916969698045755011124 0.0102872541094563431596167836236147 1.0103405336229187872061807180571806 GT 1 -1845352885010832408685.5397710588211720803163983506253850 3.0206872128997704882580388925893140 0.0337650401257138331218587382120657 1.0343482446616368071727167733546570 GT 1 -6081133589959.8018812517355624619985398604465272 2.0483192859082240591647937927855890 0.0600715004961494454722057602919949 1.0619514709687332195914005137336603 GT 1 -24443.4317509915614252010433830499862003 0.9246978190429299028246496788737387 0.0911024063471801884681143570278330 1.0955228493987982432892109657288128 GT 1 -909603249653450240202709077.1125954787391836467681623526930265 1.2356689446543083733093739604534207 0.0090837728479699086059000957855995 1.0091252818761468482848440438976296 GT 1 -316367108449690239362226225665768.6074644947296925550479222304300275 0.7699584725799116495858114470376140 0.0290270268868525222983643125504931 1.0294566451532155395862300221348454 GT 1 -14610573702352340574251265183216431517282837.5359896082558476166402758518836829 1.7990859203885541668270886161720721 0.0160245905044451978837622232449620 1.0161543725921935614600454200453286 GT 1 -22989955458.1828106029484421830096015769200558 1.3283087682972259820084608308091399 0.0254290941609899726828106726820169 1.0257580014305847840033100426506166 GT 1 -2.4940779513139480498439398049755407 0.8079244185613490123241851161205350 0.0306614144368123675955508214946972 1.0311413106175812305621779321537061 GT 1 -3315869771833973.2813930590038418122969149435171061 0.7918853081695831988009606057590848 0.0888003931548810587265074299934081 1.0929932983186179996537459831104767 GT 1 -833796888.1308407856639346439455945787527731 1.6729584415955569010652547677625401 0.0788799555321279399459389767074917 1.0821649097787658297727509189997408 GT 1 -46705213727282380800821669.1663585992976968189287584026577520 1.4435748006319341882965583236870997 0.0928339804969459959844527635256726 1.0974298031662292153635029119992299 GT 1 -8795818909836189588180342339513.8401480647084757155855865378598030 1.1239601207815039961516519065091691 0.0657996961811965444937371217557603 1.0680644056960240193000872405002703 GT 1 -23766516.4219371688975004962429292505503977 1.3130591231149258513813200725331012 0.0241509059979755954753909184664694 1.0244473213246589275043778900204357 GT 1 -436350992587218499898321524.8779752568151954890316457933886409 0.4596570425728745096664664046594123 0.0225511918311234820391671121667841 1.0228093586536980266556099812627757 GT 1 -11477724669712227871651366990342427291685029.0755095625613088250766169048073228 0.4859880938486973999375964805339439 0.0279823560926930496255365919958813 1.0283813225184353184872863575518882 GT 1 -25905.1723230497084706825241183309172915 0.9092668638934967973938939960674697 0.0822359851462675077559470809288358 1.0858149858378558902428253194968222 GT 1 -227598990218570872460130438496243007971959.3625109371760181900360675540319642 0.0677901011729880389157467485490283 0.0149195758744368099849721870863597 1.0150319922846949988725714746354340 GT 1 -204003998.0873818517567055743226678939699482 0.2048601429166324107174292081356360 0.0404261244175076608811036821707365 1.0412659726655380629581042311360690 GT 1 -1513180703458724184.4712549118272087543685658226636883 0.2599354733435613590253190600474534 0.0182340721143045647560364178672102 1.0184023616824188269072703446541631 GT 1 -99.2364684840093644261751923500186378 1.7229797450332149816038012948621687 0.0352284739567354095745003666407928 1.0358639662522891069124343823897653 GT 1 -656060570.7410001608671713291597437513330168 1.1194205831581787234368786327863745 0.0221231291903782407795350611183038 1.0223715158409269119490564856006699 GT 1 -688460598598712011484262136247119453032163.3485527248373923761340079998017421 0.9328638665581846410978869710294119 0.0551590921431883810229192024130243 1.0567387171353678478763396890742849 GT 1 -1741119911489030899986893937496.4393917947604474832624883867073243 1.1983245175292868929708014203999387 0.0370134295100947429550381844085397 1.0377158127745994350982431366639419 GT 1 -43815048627953553025988742293233244381.7499912433617020417128795399914838 0.9043837440958708826587444773178701 0.0849907621817439172238388074370791 1.0888211177813436063268053414540727 GT 1 -2878183555751332415.6516461433740050179612468787370635 0.3196101446794807359485167748762956 0.0359121460876019232157545101063089 1.0365728537602133225403908008093671 GT 1 -305342546988646833382668915.5772298450062368496743982293511516 0.2966641332617853124128735004935629 0.0758910020439429384279155336052701 1.0789252511416529414338124955498390 GT 1 -324591983804460198803144091766398665.7438299181919205211344737018490904 0.7689969192865210325159172141580939 0.0232331244540691129638190692691234 1.0235072679544041066929672269391021 GT 1 -14781101928081414.4502460943254736891589783691651536 3.9248791236100353916341610106313797 0.0290337734617030067547410181727206 1.0294635934396003270514344609283443 LT 1 -10959265401122625864780.9696564533322992725424028986438029 0.4219250561201934672707152163999768 0.0384614595697946286173049553615153 1.0392206311058710759200520641037189 GT 1 -114151271037769163834305427980324.8201700152627564418756524500847749 0.8976138154255699143659991173982070 0.0523659890690587006131097314519381 1.0537869156880072597027213873401597 GT 1 -2162409.2024613991998134849648307838061167 2.1467556844075641901921514403001039 0.0533534181530823732007617887414943 1.0548294530789549758355736487018933 GT 1 -993231510452728133118783302.8116863884762705636823034364934482 0.1150886027024450940868896379003571 0.0238840523208016663536902370838494 1.0241739007734316776854244085743572 GT 1 -56021528170422521.8069065192994265972654741484959588 0.1683586567802106421256218991639452 0.0097528910923711597290329851355494 1.0098007620424352101020643154007451 GT 1 -2845692409635183277978215496739156520.4669923834644703050116376372066349 1.5703225236737120735871418823174847 0.0792895354464575863880125748332877 1.0826096628861499451052988465534470 GT 1 -99778992372840.3874874536229603147671051359266357 0.0482693696125263238238302465791774 0.0412784125920952209815636480575764 1.0421545617771849592380178346944032 GT 1 -46443330.4036150650478918832569196685578314 2.1505081911949548554864917663773067 0.0352181128908603385241386616553495 1.0358532269114607612902570277336475 GT 1 -3116451394580823196620479555.4284778531789640677681352266253678 0.7302429721692363735114556617935964 0.0806517275577640365799350521984611 1.0840902594918609479150044609128926 GT 1 -2663243037695641183704077704063972917777.5038026728882135710086558198948590 0.5174355909991502344576149205845384 0.0463063329828570376352479551223939 1.0474127628543155442907747100524907 GT 1 -1031129.4521762717304147492331411094763872 1.7898826720232632032279023154727910 0.0297442542723350145524496219889051 1.0301955868463373119661125213496834 GT 1 -4140669046149729505713625726.8546605073770000599730246298242158 1.0434503265015749575183379949251656 0.0747920667487784910593638707451091 1.0777367740277827445615425699033369 GT 1 -25891936738338233361403530827245391014452.6536011087013812819451355295982646 2.3336974626485225281165153388442622 0.0347332194991060775512618252906820 1.0353507593725912874234183216917722 GT 1 -1486584763020357923813389.5000555917158164734851112693573491 1.9592853527366693630931467492832213 0.0907425055242350740477890941242025 1.0951269526681004354673345233208271 GT 1 -453572920011505309191815828.3029121864207895364294235051258395 0.2861295887342262704170403435906373 0.0833351150724934557006372815713216 1.0870133207069661897046942210403641 GT 1 -105660474507176580902740288034901034.6811394456060849346420594294169878 0.4133146458068397978606919113994850 0.0968517741202424299775248966876825 1.1018685907749207355621506560152084 GT 1 -347285785612793057177382.3327375759943907892471027364698592 0.0057386544836777890475560460137862 0.0477279890476425157038097519413968 1.0489045592123200704766727475457448 GT 1 -9424913253911464103188182498.5828075295931264047731836365879220 0.4657491095981549443911445063137831 0.0476832379750003445645154370378846 1.0488575663146559209010228775830910 GT 1 -169676.5436273779354832959838538277549773 1.0263684097089696408706125084403729 0.0977089001370553728857278733982236 1.1028180838639278562663934820999820 GT 1 -6360203490312386607323029692929960025448.6354456623350470921989990057059203 0.2123077494125605431886696775396387 0.0599110510474473791497650234655436 1.0617807816496278465343970717478023 GT 1 -345.9271409051160053771860037434120529 0.9955084890179859383991417629051023 0.0114871706721360694531654994147858 1.0115536578741347357371591720841183 GT 1 -6767647351.0222819764905802785298272296775938 0.3144609655077682211739879633913143 0.0439192308777237035223005027469306 1.0449128829699438821806184246051326 GT 1 -16807319786427.4657338894035929093459679585027073 2.6633645567366413942655906771983082 0.0053702086826359673941991508063126 1.0053846800861738009293092066342874 GT 1 -5947739451415524557456531583453362.1154502160692476163969701739222505 0.4956188268582729082379777970945136 0.0754564837011938607026707579739506 1.0784551591720692381371996164618281 GT 1 -627841735834170207173884185452.4266769837568105245994980862805492 0.0794768665632388619067503538088097 0.0442430899299348316653617413647381 1.0452516764342987451797078128686241 GT 1 -248505701877027662.9464050413117938585674775943729206 0.0712881801096611090811613132046852 0.0257500946858433220957622583462880 1.0260874319517689656589429115993539 GT 1 -871414250092965029917937300123689972.6314121688614048706476569495192607 0.1142479834329860528650492715772885 0.0978945422559038231654694338132868 1.1030238502945063430353448434632783 GT 1 -1319273711699273404038345791295497400571.3283068044161305008519056474482240 0.2908200342190369322541648506006873 0.0263667042154541214685310439240804 1.0267205392652454997292797355538648 GT 1 -9026091694465234922328479536884009.3899618561801526309167513089979038 0.4845954938999568978605642684016162 0.0518363450298904381146733394606909 1.0532281598012639764449095906707150 GT 1 -1.1344619704453762123156037320613944 1.2847261312914457531789870364078265 0.0486123177510371599552732800573895 1.0498336420417409459178483342995652 GT 1 -27706788549329773.1034451196366738435309098357427227 0.2527375939707532676158232637915149 0.0033345962486535645963007119602762 1.0033401684054347429130705498324419 GT 1 -401.4674798710879246740989383863203398 1.1627831399755533202909071420062633 0.0784207298102515953259656862646143 1.0816664825771810955884728272307288 GT 1 -9824897593980229922006008142404472.4167461489538113511109324573763830 1.6488882600551023691642037659985618 0.0550508880774321194735487308158837 1.0566242027557362541508187535465228 GT 1 -221334373149349224264989375.4934709825110763399200151869491428 0.9814106634638459577287681870376074 0.0492682595455307156936567262984834 1.0505233377702697322882169228624381 GT 1 -290823295559695459333860104337550554196.2396512333423041586993421645063565 2.2624838567110855048762601541839966 0.0871680070285506419511631442428389 1.0912034317808998389385630689580525 GT 1 -91.0991204147546043306668230345924548 0.3664708886800783874017069783878097 0.0330120425802178613952597268339293 1.0335692371536668266242812207519648 GT 1 -295066699273171192455826746396290538.7798452940755090964089097880786579 3.6388908390577577621565491778033212 0.0150794654334501899350621633610045 1.0151943166314512674375058803551845 GT 1 -8152536243711624182.7472886126783832261281984395109689 0.9933486933530778167615471119155103 0.0315469092430124755091170296675815 1.0320552322518365433773890909267193 GT 1 -1139305201956473711.0676635722004769961360753419292616 0.0031248465249016628934069559162932 0.0906403181811793462845913166529793 1.0950145734994713589703924868181981 GT 1 -135.6908048679833587563108450779349477 1.2801725500830892624662266155353740 0.0053810622900780684463861926400525 1.0053955923539901197181664309190036 GT 1 -6.4678293742638781409833260448099637 1.6317560060144580616553545783903320 0.0990494363818618379301491140207724 1.1043048912274703479889585723863828 GT 1 -134603011283341081981277065207686.5568921590425638327446725210495557 0.6666301714414217942392956151803434 0.0473823751691911409466350415256731 1.0485416889696021318376487602740135 GT 1 -690310881168258299761039328881044802.0081201207376165322903867864120024 1.3505623091709249263908758451654609 0.0468165512274303150719490848362233 1.0479478977641892542061625210932179 GT 1 -269037396587151206563378930164.2209686997492365968913557993303347 0.2004018618473254304841242005153091 0.0877485443548265636683179081996023 1.0918396080020973466353025152575619 GT 1 -362577336327167781658756041942376287.5447266856724932584237358711506273 0.8176047986528811766366081165074244 0.0963946974454258636766758081855463 1.1013626261512195389289701650198945 GT 1 -21813265326604199755138058.4294834379074087294501890282956393 0.6335741868079947551879790637367567 0.0389498160586215131019129607745829 1.0397286508327521779496714729566910 GT 1 -917958234146514680907307.8042136729066719145841219517059725 0.2133749918454490078599130436100984 0.0372185500763805239753060109735498 1.0379288400602196867789907662737419 GT 1 -52807530780582650416229.0287913990611040335861472119759634 1.0421390014954002663384917303707605 0.0940175124201094095930391151556962 1.0987353025079918503024219677433370 GT 1 -19803504352039545.0057293794046241858659728566935194 0.0216405116740799650216200516191582 0.0740116506946728134584729506306163 1.0768936261588156117808856457684357 GT 1 -240135012955879787201835024175688590.4980573142429978655219176371703463 1.5580327562559687014520558189009913 0.0077112683753890189516615769283792 1.0077411539415847806135391149925363 GT 1 -1964.2740303052548755398667125834586828 0.3223335694834400491443149918939611 0.0302837612232742922369545926723808 1.0307517876256857465162940276410895 GT 1 -2700600968821165657.7405076631083096756979047001508212 1.8828678253985385347428933965022852 0.0622252761958156611338919176494125 1.0642455253405688269121916536206252 GT 1 -13407853029329663112607685.2013660745288507548510387547092265 1.0781496640354273677059653031128100 0.0854724354787779610489720902509559 1.0893476699748245625372145477210663 GT 1 -282255195813280128.8289165624531827243681598292642128 0.8746062329913995781533301631991097 0.0318218087746837273054304489305094 1.0323391268022087636487802376687474 GT 1 -60625395290569365997388625.5790540588697563676692741874755764 1.1062630776573454908775737409043969 0.0876156521587615364647749685615738 1.0916939436497415713777957071755853 GT 1 -96288463214873434738868533.2046640003887490326521508930451541 0.2307831510874367753859197835221470 0.0595231269391980362867077890183271 1.0613682205903863272098225310495569 GT 1 -84916720561168.8221524664341837930941135592448784 2.2808063764113728119117679397108292 0.0835956144212181431262761905258036 1.0872975427542938176423556392154447 GT 1 -513025.9719021114962213189586795114711154 0.0580024690630380171262175705604475 0.0717702723231620577494860072357729 1.0744760254558195287981019813916955 GT 1 -240527057.4261570333710207019485589193361897 0.6539777040198316763324268217467787 0.0631480537691889182495878332990545 1.0652300175198971080323346862216696 GT 1 -365804845992661379552639640737747.1534228726085939020987363391913911 0.2073054108776538491986355236424857 0.0706468789736242973643421062824540 1.0732665036438830755539768746727266 GT 1 -360029246231150727988451977445169.4636082481976973477374580451546888 0.3810477031945344972934559933740381 0.0823875445089397560587029441808577 1.0859801392714599143208851079454203 GT 1 -446.3201984819084321115023567546762656 0.4579376550333327220603784189465105 0.0903535749219428701190758069540458 1.0946992988442358261462361646281822 GT 1 -3212577505641820862290794.4486088902054084111522899341067091 1.4397011097068409960375880739934921 0.0234345895378370298782253182255425 1.0237135463085022854383007746422441 GT 1 -239984353860213404542526514677078336479697.6915828551453597268852016249145264 0.0275710268067756053147661260826905 0.0794761263784082980141474209248971 1.0828123431520137630663955386063509 GT 1 -110927960.5141060062081925350706357901287033 0.8614164104348056442043198016285750 0.0883217967972577497318614032828208 1.0924681985384986926005578995820799 GT 1 -737959267808.0694494825130490339811465470468266 0.9792240907511436781073873134629374 0.0892957051493824880778379743388480 1.0935370284311045636551133909961381 GT 1 -15514496080029405880449713545497.2382605619582287941430104475850653 1.2137721597490305070516951924818492 0.0618346746841981934044128308430074 1.0638290925047269526733220244835391 GT 1 -395546626649442867.3190036361686603228457413117196916 1.4309575946553348507821321008137302 0.0191760939744920328111667089220091 1.0193623400907999159604916218466165 GT 1 -6.8442711663319057475134451588308737 0.9016105446067685262808570939970294 0.0336737427059615012254269681985350 1.0342537613210738381875400554572916 GT 1 -173917660.0541531302739955828337097076688555 0.0402017198536673607707700054740129 0.0931686386323352852390217898372912 1.0977987762890298474008424141328074 GT 1 -14318134180574308671407924750.4495511534457194517170278649184200 0.4429792316476555488845004990906768 0.0215523584775852476152664869251698 1.0217880024970107273848339019019613 GT 1 -714098488950.5803098515967263337327214512074106 1.6454853920038149280350432022371863 0.0061102873117648196079221191325780 1.0061290315112502660778063495020686 GT 1 -26881378.5453308337282185515389120890227752 0.0666984244143182592992516079059188 0.0438800939665072407461432016889704 1.0448719490745317393901624698142400 GT 1 -52.9893079165746339781276702505227826 0.2251502624411963541993812503341255 0.0931441935191135646677040087823518 1.0977718200270497857412051107120448 GT 1 -1733460097227257005923368539577560196345785.8002541328182449498479693867361068 0.0420853189413534680804257930051149 0.0691397989888651315233254311393590 1.0716461730112206068467363230520162 GT 1 -30177411876180.5023431670078750656644380144787683 0.2109741170698267061010299086487779 0.0652354079921967973279129816612309 1.0674605546473430577406165113896682 GT 1 -78585777926.7786433766440958966590286892544229 1.2449568575813797270435204845313642 0.0826853921449070822160133661093774 1.0863047817540227790554225313898080 GT 1 -2216943544255068561707279948326326920581572.7244355475603555012759678163486303 0.0472837371839355816604477447450398 0.0141346450689039548660145946582681 1.0142354905692533937428773697986121 GT 1 -9.2053810595841552576635380375788260 0.0863740418413703203472194158463144 0.0242392881651160648893919109146032 1.0245378949290101203839781967801131 GT 1 -159510935940007708213087874.7306479651907585595542840017053698 0.8451495049005706397288397223031415 0.0247285315535679215945362202579056 1.0250394175626717105353019871722247 GT 1 -127203534529508057.6516803408322000643744944912033717 0.4661148474064469862310002132868571 0.0206384234896617348196709279367660 1.0208543721453986372899974613891385 GT 1 -6089339249880257690.6981445306384819372777606497984259 1.5058253496680880121429565572080518 0.0394653492744891309047558472091583 1.0402652217079338030191299806607540 GT 1 -60803165048340623731546665112189883994362.3516625970270000025393922960893004 1.4638827000977123528445429855411359 0.0455552888242355633185252514704633 1.0466255618777102696110105957369351 GT 1 -16173204849975413803527121055094.0921810030808210506904019254943606 3.3923831970076504122060653699881021 0.0452737753251105395998431556764393 1.0463306553338497974826830663279627 LT 1 -241971755079899877327961219020468036782.8866616179578106538279527899614547 0.3891900932202200014438491816915255 0.0085898149347385542630269659463725 1.0086269200317901298459150291376351 GT 1 -2991642.3863784571257461004019271722486125 1.0753179576613867736365505410329507 0.0558955669587799075971292683097541 1.0575184907338553464200494964479666 GT 1 -852316.6887892277814306239227706949015700 1.4864275015903107348588345615063998 0.0856099843870472960071971668717843 1.0894980856196001783287980159031039 GT 1 -1.7167470432901129859413898297738914 0.4144884491335212166887055116432997 0.0138171396734394210444682281993658 1.0139134848538236620163209921573610 GT 1 -372969954970964567233.2515995562794534256312207040592950 1.2423278519021267259209656422572616 0.0749175643287200135071998216271772 1.0778724257960044524048074077011384 GT 1 -178.9819629641854509103693065248390841 0.1230266532135099235209726143928310 0.0753294231374330464416349969025666 1.0783177380217214690113700238502448 GT 1 -14775380975710091389125816958627016.3724691076989788845524228208582319 0.9730244074612489155454779970768264 0.0490739750844697440182870272690185 1.0503190060915892189058838268272777 GT 1 -55437385688308275802231398.0452018791213545785638779835540441 0.0729846011024014323203055404694606 0.0453851196209765935518354503822047 1.0464472864540802775614986344989818 GT 1 -59.0733872454582827515755595531187228 0.5011816090115367592825999613568842 0.0745618815177843017602032570671341 1.0774880120000945002598510820907855 GT 1 -1052.7034189680491208282464109828874237 3.4360567684753462333621240837153760 0.0232489194853162167207640968677606 1.0235234388129298195295506725506347 GT 1 -14812.1394352969119432570992684990061271 0.4391619826596866362357645651643441 0.0008951683086064144960042343563072 1.0008955692110247302278883994287546 GT 1 -5737372423730279969858345558.5562884250525896269205372845651490 0.6939627421343910856059631626402041 0.0502234705816359315379595983163727 1.0515285542501776975816886773075650 GT 1 -142273050516525366797062732538.2612902945534140127207543624667907 2.7876772731665325411053679555695309 0.0832499114460151770848700504017359 1.0869203754351406598924621747929100 LT 1 -1501757480566.6550313003464350156563048026002600 0.3339578141100457371650441413793693 0.0471720159468733229696013722019427 1.0483208910395099210878071694599011 GT 1 -393170743541846729094251238563180067.3214658084947198145187870115172607 0.0754329460000005850230031576695330 0.0950725857399262226093469888782163 1.0999005437363105235306490873365450 GT 1 -17353.9123709374169509879567533046720185 2.2896271424668690603824868453994453 0.0775080188507350034047840631331068 1.0806765956263569357881829129159940 GT 1 -3294420234575586800467681080302279840730333.0344534760770843927399254310180660 0.7581965746642494969481745532474810 0.0388261812836130267452098256147621 1.0396000136135643724359842549120390 GT 1 -20423420972855520474992944503.0269576236431534305880993754842813 1.9158878663340905988445799276862313 0.0985736222479951576706569860157244 1.1037769060607732357980000946926733 GT 1 -58308920193193562306296202186834251780208.6350491187705826787006242627108059 3.5600024702352105594168840763390232 0.0372141940016016068522405057815666 1.0379243156015018439289120072333852 LT 1 -27045643463.0735522099886236786290127766895699 2.3414964024980397400378877069829011 0.0749965283966274066902645326933121 1.0779577883920275354449541856871323 GT 1 -3317360.0500223599049822527058896868450479 0.6265709928618833126146269524678660 0.0682948846648046623909728984403093 1.0707389142164812458981867324230234 GT 1 -292639063987005431633325408.9395804128966581514634153418708706 0.2377234587580322131427499748169233 0.0161400819665262899962735752279446 1.0162717517860702306818078397304905 GT 1 -193314261608736795703488946001005532511783.1546268573835428296889488898798922 1.4623320438433758945044549042762669 0.0381081354811998471126245299182533 1.0388532415796788758941713950496090 GT 1 -14417401518859190249735005.6097394434191698535206510421443534 0.9178697455241533758745148338644860 0.0527488996969028043799474102285919 1.0541910675078574293422462212007219 GT 1 -10209083830227412636.4073887142824727868606204966883852 1.5595299584277068789252311651435768 0.0428751584655470860022555488942491 1.0438214451129714702530773400428855 GT 1 -4732620657188928219576494276776458399593876.5928314827382141149912577171758494 1.3856923337761004156925150225292085 0.0515259258499639103428369135327412 1.0529008235072187326002130230556436 GT 1 -71609603095795957539028811396965785839.2467486014779159552225413037689359 1.1668274523843962942244431026548772 0.0066782598897165105962301418499905 1.0067006592488195588554670957697934 GT 1 -41035935.0225159934103776767377565394390335 0.1645508284302331989896229923404884 0.0951083621431464444471334562785643 1.0999400796260261662846954562442312 GT 1 -249241309.6242677747063755495488463768518994 1.9869564379844272559976373709620169 0.0658807828354621731725953802557830 1.0681512073949902254135193052689257 GT 1 -159243977545638661813830.8029511840294260828096661669301718 3.1045078112427766701041485811856993 0.0682514274866413531634935123414831 1.0706922726729273937037283682231125 LT 1 -774074626658739805155862630457267272642.2168020946284501289690659348204483 0.7896441053121942580855704005222771 0.0427183439414470118598195990554974 1.0436576193793585045695495737120511 GT 1 -1645384779314722559.2785108385716099584590605934961155 2.4860247144593714934737895014077266 0.0000521102774196938945210243461993 1.0000521116352073702730877485313703 GT 1 -145484277962.3092110712466176790297116798946006 0.4884562159142866503914018363849993 0.0163678109259972336259771204748444 1.0165032433988347765893415163301111 GT 1 -339173374.5324619983629270704864844369902299 0.1467587894453229158559934663899460 0.0669630513410362646290511676762666 1.0693104769264729759504281965037226 GT 1 -67434235230817677029674092090270111516.1036987300955790391119269016164221 0.4316270831250025469991315716195741 0.0663472247665002831886023524625722 1.0686506708655136701203639099517014 GT 1 -479429571611809489688467478458.9905645956886407216202838274000066 0.3613259742907675211445840383598747 0.0918257060840496407642709086523948 1.0963189651496610455101627825067962 GT 1 -4406957269730195014837227850148166172042043.8210068126947909831411516755229053 0.0125153758341233088869335060287637 0.0704581246627541513462313227789318 1.0730634213698567194909989146869438 GT 1 -38487775741322385736780558115752026962915.2731975775267124390354926595391435 0.5522934369417443225353956232995663 0.0969592325993320347704568778554668 1.1019875799611201532927566456275291 GT 1 -94820915936705547567441620837.0650763893521159840686445311313040 0.5707043766352684448373107917723365 0.0744348533330288764911099639948807 1.0773507586658119103143236105040659 GT 1 -9855577.1166264807342631766630021732580478 0.6374635617780247179051504602700968 0.0342465447620182333352965949269118 1.0348466996653081089081881649805084 GT 1 -511056481943353042528168135298.0079320354837169952196362594666341 1.4810666097316460881990631978950291 0.0130991890751222154826068131533691 1.0131857401155094103529632315852649 GT 1 -226850.4504752539308937720540407178701429 1.1465486923901860430409256414985185 0.0594971924794077821241702292491665 1.0613406451093116125205631172263299 GT 1 -10147233896200830822449.6524009425889657729550539785746203 0.2287163178054761327861093531163863 0.0825642650613929423339291052362368 1.0861727451702272108707101023709724 GT 1 -2730933834.9314707446261330725820948864882487 0.2212901755157997081068800630134284 0.0745123258284116390433910640581209 1.0774344650782447031327829296136096 GT 1 -51976972085086064789996095630922412902167.3174407382038593960549597727675560 0.6418661602463107258072473764788471 0.0860055131478009431116769415715520 1.0899307394365519904323072259003587 GT 1 -1197.3687884150556594758791622004577028 1.5616522250398141263863919788907584 0.0869655204972370902950409975379665 1.0909816340369834813777368910722583 GT 1 -4977460968521787157.5895057108032122829779381254035973 0.6341516895381806339862864611423741 0.0654486962965683624490393371039038 1.0676887539643086844237976350681581 GT 1 -21147843419147814527941513366.4498152939889387961338070492792258 1.5962377930978834931194479892911180 0.0858574949427837120272290326407928 1.0897688060519142432567536410619242 GT 1 -166.9307548919235999475378083245290042 0.4508015801227454818366942560670553 0.0843815603319445102963696287902484 1.0881555516700254194999048519796543 GT 1 -20283448539708.9676597000318092386502462606478389 0.1366284219503698152445922793354893 0.0150962626161177331671236142991812 1.0152113711300754706426796994386665 GT 1 -5245214.2313539106221579434655237389204747 1.2586322701002260476909391816611981 0.0501208651068795699560741437622140 1.0514205289098133642691045503444382 GT 1 -1302366560650870665080057404719339820740.1131049761054285260849804068142603 0.4159016913150055255906694693667168 0.0718303266306660630222583898463885 1.0745407252262365101638254308783064 GT 1 -1432954679278807144227845939.6081099306264200382540125833252639 0.1833288176348434886741151142838551 0.0010553061825049390669515106770125 1.0010558634101393628567899822536682 GT 1 -4039381080787890950107893903510966842706451.4365270380642615186242537965874955 0.5597414968022866205218564025488643 0.0093830111731132858259099414057719 1.0094273089378231938540884236401437 GT 1 -14959017115634017699467265915060168123853.6494175537201202618949366877672549 0.4620329211802615588032205326559762 0.0634393596642850505748084552900623 1.0655410071006576516617493585832079 GT 1 -26917111475583562880604256990109.9561083342004192802692280778350914 1.0462857183270509384930256368849649 0.0638468784188073512917221166582654 1.0659762244512661606586091593405880 GT 1 -2804394005213778546402976216344904.6072547290530363684498580075662590 0.1882663120644863246768175698677619 0.0202438852128418569851821138814060 1.0204516007510040124029252584372844 GT 1 -6607.7211340149610878596804661385547898 0.3445011433592561111385073178575979 0.0128041870027014238414662588353235 1.0128868671312371425340988400148294 GT 1 -111527.5369346186391391192438902022760086 0.9370213126511536934257680888521912 0.0482054937897971520230241730640254 1.0494061223119921611746733147078074 GT 1 -239463222212591120393064800333003790695822.5291640587524393821701797773087927 1.5513310240010042695940846829425738 0.0068590982267118644021388040696085 1.0068827299645551885572974639725121 GT 1 -4570818494.7653659142921960727678224737370026 2.5990539428132251219879563638953880 0.0690023985526558956934297999708492 1.0714985780270309044561781491354574 GT 1 -115858427288685793195180983552755455641138.4852724478385113538002581052649889 0.1973814241053301016194132526972339 0.0997862507719471514110235368634039 1.1051230447140019992851819948284638 GT 1 -4306877438025271922229025717009407961440424.9173117459048214064933581914938049 0.2753381617812886815279965513967258 0.0727574161918281852911604680803782 1.0755400606943844329838899348205834 GT 1 -49460.1099024276400558676292368472436144 0.1539635491871219329442069928394186 0.0563672708907704946451408865085438 1.0580182466863957005292223559851967 GT 1 -40465257432613211.2105590455412587842696090512774583 0.1148264136453801341020589082082343 0.0319693682621527873151594767263422 1.0324915478489519688524837137475544 GT 1 -80529004662640021763668256815804453.5211232000968103726328879832387549 0.1069315954191781119890132744203699 0.0664031089906845977682062111782529 1.0687105281253234389642724788756751 GT 1 -1638.1670044393927224342022265900362866 1.1271607125101118104027807602559228 0.0608128964064189096566596225481282 1.0627405612700615697368280643457911 GT 1 -2767784284665308491355310587392029831493.9931820765455375163108618613326967 0.3740640858275248849026001359809380 0.0664666973592843223320584258592615 1.0687786416064728182379269217856936 GT 1 -4041287137828599088506123060280943.1375949576912136499791488281107207 2.9187367837161761796494494743947209 0.0950192659586113672606456602036975 1.0998416238608678726331036548544068 LT 1 -48984287192561292704701046314394136875.2847392601509332488802519985565505 0.8130014465120998056313078715276441 0.0531773634387403958579330498829702 1.0546434931350195448385600897782650 GT 1 -16714650706168819460.4791230782442910642662465125464685 4.5459369794273264668906170322603679 0.0398254497245745916144954889796824 1.0406401878445222747564193902136605 LT 1 -1268570699470496.6204656363855565147566797609853950 2.1141886829744693797018947389490766 0.0091122779962477003384624940541402 1.0091540487461411282206740298887699 GT 1 -726845683644779397635244307021997009.4772954043222958332932256344613857 0.4628556366706922917338971853951974 0.0508304063629996600116082733068758 1.0521677886072371646340413793761898 GT 1 -88883325356642224284.3999934114295954785540150401510159 0.9418685152515425006259447241244521 0.0644611498111435132384753219417104 1.0666326053340771580085553099266863 GT 1 -71.0467883376786936639624945949167472 0.6969867190224667284590826658897023 0.0955120730874941344347613787062926 1.1003863220385168528703663508641696 GT 1 -265742358585564882202873665447049520036.4029600670985803617327117810051920 0.4504966643642626218295755491649501 0.0854001941618356576226713034092301 1.0892686800497373102513010411779476 GT 1 -511520327338766626088770317.7851268429722653336258140080655951 0.9839527908532920313630037355508028 0.0777901925584204453263845072620147 1.0809825244346135479223376331638297 GT 1 -1134271860826485618103966183112152928.2163579218167309012073375172213097 1.4029473113152620694466197184731313 0.0678226306766740194667581911381332 1.0702321719705258468863459922770766 GT 1 -5413993651079326368740091965431615.2072793282039262319707732223553330 0.3281658724357741890102841136163903 0.0577165392551972853897673118099599 1.0594491359294047822243361569952498 GT 1 -10587744655112026753617180712021720179.6075594248818547207653299861181785 0.6358541044651345575541316356163406 0.0528687609285421647881186670393706 1.0543176113731669864823460212485847 GT 1 -4.5329766204038677021835811577324773 0.4374231292659341063693706070361145 0.0472436032956633024073903572173472 1.0483960253128032407342993043212333 GT 1 -24422718072698591732.1295706836823613727423613298032708 3.4228253971586619334462816586086924 0.0147374096198078905347752682756016 1.0148470841201705066373856360957999 GT 1 -7784650502788731996713642976033473886602.9617219063545040951042928370877806 0.7431518527010103315727671478608932 0.0607635770396273783392381221020536 1.0626880498251124716662819604504391 GT 1 -202285335833673530814283864050021939135.6382698197945596011886419329781193 0.0069389951813670112046205757732746 0.0429546337744730854646579751173016 1.0439044840283714462346996630066740 GT 1 -162715902.6586938588663968390370108546902771 1.1622440327423791935960413013321142 0.0089342765861105056382721530383341 1.0089744265546841798019146327273544 GT 1 -15847685980850.3861041103931527578862624593947281 0.2270285473521801521164234956695342 0.0148740691672543776028902683614793 1.0149857974208158923412652236288904 GT 1 -411822.5183434297560502650026360606154489 0.7137620643488896981514350184315865 0.0285565067478275461473838453283488 1.0289721762904608846171333787378143 GT 1 -173761039487938070640478954821512843143468.6615530630693994985899493729761773 6.5267368968069889666711923264216177 0.0096941754643596225428904259972204 1.0097414698851418836552890802406035 LT 1 -6326853485348894725729.5282392135636388038393468858509707 1.1615594953332306803987316771393994 0.0078369069029241811597586866678050 1.0078677768468504702296651065724954 GT 1 -2032643594822821045548127.9644317520496339458315283528856468 3.0948387325415648799127213182278953 0.0082408251054330065336211515004795 1.0082749684133816417656081898861955 GT 1 -246039749464305802747735.3708875116770155175985703779095243 0.3217518042313773563894354929125012 0.0029843466306874481709031375442429 1.0029888086728250962299472363885013 GT 1 -91193232304768.1022555928446372065379588528009891 0.1607613365021834882975785158663270 0.0790099816975057783107962199920405 1.0823060806764463236090261336920898 GT 1 -24173175822541238488113644935315797.7078442654770383581801467737287535 0.0484802059973797906400839359644845 0.0719087558742001930726039724268173 1.0746252276179440652857052086781402 GT 1 -308478347953653663319.0379388968912185691773269534123013 0.0305494578041501951644582496085988 0.0930200926071878538550899647758368 1.0976349819317690155720424562636918 GT 1 -487618918827.7311121804742525701172056798589777 4.4834274452457089452808266310837376 0.0846102912690137681794128031832400 1.0884053931996319894781772984291304 LT 1 -502758.7831332221413923846907282529584480 0.3586883551163018908126896893104147 0.0590502775240796704533353848425016 1.0608655707116232427530147082039906 GT 1 -66052189652644.5724908466582419709092037903845782 0.0420429382267582112256991485396992 0.0065127834059914588916553527712197 1.0065340841148095229855585933235248 GT 1 -3711311167289451965967.3166368327991788660320492682179485 0.1680973132229737328177387312788090 0.0424870460510595053398213000593277 1.0434160290904537398109203534720281 GT 1 -3176915647193814.7252869264621451799639971870123052 2.1300689820669224817827859743043171 0.0696505422454521651688920180929798 1.0721950023889340092308520364385247 GT 1 -708745365.5255777942551776618936627564617183 0.3276154765975286789825551419940715 0.0989833610426001991562594408863513 1.1042315543329954516502045574332121 GT 1 -52555850924560826480749170956347789621.8893669665578797744872377709481922 0.5156865681894219475155535883904227 0.0631184954345659863241825454121451 1.0651984673176921754364354800424063 GT 1 -152556581421929429103572.3159906977723451041290628184651626 0.8572293043562619619707221485440294 0.0928783171459809215325120076421528 1.0974786781588625782006709807346605 GT 1 -3857135807357.4858524661867553135094988779379800 1.1065133961894069621840499659682093 0.0852942105806411570853748231267738 1.0891528070303928705135997697188209 GT 1 -3788643526283783510721723215130405555686615.8786242454382855144663935030199109 0.6783373289375031427520671692750503 0.0485533960792997561119611381240047 1.0497717116128176335386078154185599 GT 1 -39348670815253777377343867196915.5197747646747138955800827720652658 0.8451400692472503578749767104041629 0.0011609116346303887416619249102526 1.0011615860145229319853950058423785 GT 1 -13.8899836821599210441270239371706567 1.4730126867991405009889441537128512 0.0369723609774608948376106483842639 1.0376731666378915771079966839953271 GT 1 -676.6682993277558578900046153493159098 0.3530810739393234998254405101244896 0.0273544317129552412924128102230113 1.0277355300772319516882346812796277 GT 1 -8915783996222419847562241692451290630870.8741414169898521269761102357066160 1.4755588279962304290788267569785971 0.0178063369532818361075229704674818 1.0179667771930428080691073859442835 GT 1 -2934777361367551816421812018188.2107262878812230967615666046080199 0.4741047399884083725168283603257896 0.0312042640478055233315970439540784 1.0317014881235078362524961264682882 GT 1 -69985043171691159483035717280464857251941.3832155135986602280909252925756761 1.9707744122173283093290582127629898 0.0504586501167028399708983612863121 1.0517762005645011501821427628024591 GT 1 -12755732193.7284509499368844527669258775648470 0.0370175068560783941130084005543777 0.0599115351599216233061467152748787 1.0617812966143015978604359942887175 GT 1 -292014462905139956168417954101.3112802384928712364769377890284756 1.0179908425925849586326986378112456 0.0316524823602615264811337900556282 1.0321642503065561819595937808381420 GT 1 -42258069789891556473175303.4472921529571542741168905390579321 1.3211879149750118394430255187205871 0.0229662005141217867249086745306900 1.0232340323628526390275731149255498 GT 1 -34385929.3483912065624598088555319655134887 0.2194721507539220707070728653409717 0.0857856448374145361840544263316104 1.0896902107765941678351401566033736 GT 1 -2421603268882321.2469581799412496933457864060564593 0.0247203034026328387724777886034276 0.0618611553098203555996453522276143 1.0638573188723353942536591703673868 GT 1 -235467760657780.2100465954918452885653402100111437 0.7830113331732946105166814442342034 0.0131848856632041772140502987396268 1.0132725779294409688448101046490251 GT 1 -5296794963543770865.8619867323690864306718478857851125 2.1309085180044994370983554209247180 0.0406661660518535646643915772330577 1.0415161583669199104332252768595781 GT 1 -78671.3295271360376163906041440034968135 0.7200567078364378331555886305743270 0.0833122819801024267681727184638223 1.0869884121407083932854500203800119 GT 1 -252714.2501468512259090811725386714767915 0.4175210202468479281274909657148472 0.0146040201513381982992136091892645 1.0147117085957762271182917033906157 GT 1 -3006002564245966.7183355848788609629454262062797636 0.1181623446548312881931673639999451 0.0930889730331921766602223878737006 1.0977109296359365203675648309123511 GT 1 -46897274021066275337667722443.5804565870659441175717988421636559 2.5625219974877372929584804806370726 0.0163189078514751095408166022622057 1.0164535278044767622844780903645055 GT 1 -8589010982725424734458672481797849984.6425049623244083824880719271620813 1.0600973168265042375227165431237495 0.0818973716452747526969494375717454 1.0854460990169256048679404538050752 GT 1 -106651853373623126.1177811477942139895589410711746798 0.9599596208002737007671662782688778 0.0741370953731150518917682366119650 1.0770291064554838749113386932160443 GT 1 -1478871494.2327899407730310148473123836696622 4.1577813478414894148205411950451617 0.0228021563880311564244403198242883 1.0230661463017960324076396493977117 LT 1 -177239222898707440998547325141.8733512308788926106073986522472589 1.5617706312410765006721923111036724 0.0519531441986347931782776847140881 1.0533513519977301275911859821194254 GT 1 -8218479349744009791201196.9363735169084699570792096977836981 3.5604052478355780455550720966629604 0.0331112119555634223587549317171505 1.0336717973356071525331061653529448 LT 1 -434833465.1902603203439361038693158004539660 4.2719139671836970752726159783485188 0.0751089248034755875584802245090732 1.0780793049478559959959555938203442 LT 1 -38826000079223.5106015461524376809712454880240155 4.8077078349718804311190949860873032 0.0417645693184928162134658034386574 1.0426617789262735713975108953002271 LT 1 -12362140.7464417989095319251507234266447959 0.7782062509599799233963199647055162 0.0246046636684037542372398929698069 1.0249124170057060089112754278904105 GT 1 -128848003026757595085.9309211626413869340136709994014521 2.5698897452544269571841162293807735 0.0086450454022293368490552190316294 1.0086826305810632057883678897836071 GT 1 -16040.8867452151924431432314886023153391 1.1460526292649891790367002463987526 0.0016581998241715692056212837655278 1.0016595761592027793478984585781901 GT 1 -14458.2717053537147873626814762661152044 0.4817889245369102925085821242425926 0.0266556359744705564212813368442181 1.0270173395491949617107062566729889 GT 1 -4293635663085999038712140847690718436.2902410547689509665154646764455879 0.8954802749785612459584745166691218 0.0481817657531273915959931572041246 1.0493811928332523918942269739192961 GT 1 -17187171118.8193388743589631991507346135085177 0.1933020519255996085687603002694726 0.0963405925736611486044419000553208 1.1013027512790084278955052152028586 GT 1 -2908233113173371870881247822700842598.1362801378775250847836659802888944 0.2364261032309299521826001323505873 0.0876328480813433375320521264335407 1.0917127910627559711798963559517666 GT 1 -15415726773.7943445054749093589902729533690842 0.4812014595911991307816190483362673 0.0423552543824166944987419382524121 1.0432783989946337724518831951394850 GT 1 -22546501957.9944396324042431580933990682028220 1.7023423419558803010562404722320131 0.0194206779979841676406050002169402 1.0196117370748212350578863425254030 GT 1 -69399.1421627507753619935891760210718898 0.1484792424273778567092280770222282 0.0988799986666309605803656119210911 1.1041168434128890790643625232913949 GT 1 -2579562156263165420692338803306060510.7138931859183174811495817208288252 1.1465068003789144793793444168263563 0.0602573232635495048413782352523001 1.0621491893466647229279214778196615 GT 1 -8.3493955887564792673935545373182907 0.2958548796247976222583844091947360 0.0173187666082094990404000932344938 1.0174704907821741197608699153505006 GT 1 -909174374448042594.5287416427153654342131796308278776 1.1441967386074922156065785699894831 0.0979805457829078598218507101001592 1.1031191912839234148551062071208659 GT 1 -1432947666067607940.5190566540552304939385546657042668 0.5465181315956937090460807992914065 0.0551981450044689790956886346688555 1.0567800507271491952982998276147496 GT 1 -221369728763073872200.3540649691896862745562215111989578 0.3051796517517772776414818901992431 0.0128376819931826723441017241471714 1.0129207971360913551649384914001469 GT 1 -3670310812329159226311487340112.6284336438233984706962646420097394 2.7562835314158720768065034117948355 0.0077050335441426607506497010439994 1.0077348706779941251274009090906507 GT 1 -3034129837182641184.0296744136766216088230719839773010 0.2510140337837683450588855920358789 0.0852544559336558986065840823970469 1.0891093462984631827461958509327700 GT 1 -143164194091.5536112791899124228645087090252622 0.1778730531205789501633317581901205 0.0526398548397424904897351474031614 1.0540759569726045331330145282736284 GT 1 -26.1706519702713154366290314558310700 1.4891486023421919971684253818688846 0.0966183890186825344918700944889068 1.1016102113138166660962136592198342 GT 1 -123851.9611335507390256637958317762637650 0.7010335426859049895396109258104692 0.0101019594832989886391638841264069 1.0101533305343411790533039869421350 GT 1 -433045501096122997.2968532338837492329878733342900368 0.1153568980942551440203352021957891 0.0507596760277803041028774393051107 1.0520932732619516126730254489893459 GT 1 -83152404.0295703956231264978760897169480411 1.8576774552262603272314663998689066 0.0622305192389055070876994633472549 1.0642511162971318313709350881019846 GT 1 -20423.2347028059649046535186297131130280 1.2922288025444354751286501905329805 0.0573998654851809705450539972903557 1.0591131217863645970900948135000250 GT 1 -58592.6806572647487513121555067228302613 1.2705541880948058749132127270420061 0.0922895248824709627405772340932537 1.0968298112302246817964640063330748 GT 1 -5520778928060.4534229385798657756889753503595392 0.1672069564928777767419731995026582 0.0130624451160598781897749403740876 1.0131485091449263402171505096337782 GT 1 -156656868456125133786917678502.6806311458627743419201748078689380 0.4077857604205956431417283432313951 0.0416373698956095958323851667953806 1.0425290443423537510690128628888710 GT 1 -5.3707910516278372928607826623997922 2.3917498146122444254475963397706669 0.0714839116178491562386585675899687 1.0741675710566156851760006246056705 GT 1 -27374990.8457178080909123334474096558925230 0.2110029386884137615626558452840906 0.0968026693399994248107831114143810 1.1018142215762064356920670822540790 GT 1 -4495894667704153123085847552033.3099332237265698928082589550427137 2.9274277265836493274189897239857860 0.0125146031862699629493759500547052 1.0125935703529332876424021377063346 GT 1 -19600044.4454657193266376023706336259000131 0.2166041301253733153969719168001231 0.0393404996521192258766231328087341 1.0401352508536337300504335188676254 GT 1 -28836146722977172896.8601417532667079736608162894882082 2.4750572309785105507963237116166451 0.0104755464459034474786109660567878 1.0105308012038514621900497810020453 GT 1 -1274553669580889234401742.5472235325386792738838853564464056 0.0487939113585724710999291700213222 0.0580219845669221369362563160352544 1.0597733428595595929427162273434110 GT 1 -2178830291984371793003273839141108261178934.1627669429395741467978048858827872 0.0462097562656560360814481208874578 0.0839454657029885880711654155693395 1.0876793808214138821515871355973196 GT 1 -15614878721089374820947.2001900088987478760953187541627141 2.1002935309857265308179522900467729 0.0092925769110596611677024782689808 1.0093360222595058546812803768283973 GT 1 -15684778.5785772311973119426638855353509698 0.2094979921647742826179824674369573 0.0257996257507517210402667764295012 1.0261382734491770152475412946025478 GT 1 -3125713284561627591144904664079.1396397376528607828477329216386779 0.6687585380461927394421241430948152 0.0513250264127790205121612145657058 1.0526890326221794620236638224618635 GT 1 -1060471058862824176155833629670960513713870.1312819346157862097520941630581337 1.0590951501216487966422462910121912 0.0751018307898592874582424413134031 1.0780716348701562953027660431117647 GT 1 -541527515903669914242336956.0254338670383879735776256744306685 0.1542093508924854439006363202141900 0.0864756769333866379882957647640216 1.0904452772825176238574676025096973 GT 1 -838990499.4776201934248848579595902766500122 2.1651920692006764117384326116712950 0.0328226963053364581359071301105289 1.0333734459466867429205607469004492 GT 1 -2796249099953062339597008028497.3889824541371326174899185211881196 0.7847816232760924879901126393502688 0.0614439322163286004254312385074938 1.0634126828288395805867317082272012 GT 1 -31478897620265680229.0491600261615131923874349263620999 2.5326567286577074638807222936639676 0.0091475663055697582051490396029214 1.0091896622035606810416812967458107 GT 1 -118924636178561335951153509521175.9085581267795309391334104251749919 0.6840995192061533426030518226569988 0.0028644610869279752437979217581501 1.0028685715068891562671064890384738 GT 1 -991521.7259548726030214809996085897913127 1.9762357597196393346543139073142344 0.0639671333813939451539318832329074 1.0661046892122567155194600574655670 GT 1 -48348426215169.8281053504930539477656914714998905 1.0971460863916830902456798853573044 0.0931077071084526356263883195684556 1.0977315868649271345718389628253677 GT 1 -118723620203454905272.8362938905209306982849444693648142 0.5322106540919540936587030568996205 0.0953353763056653759294412153375283 1.1001909855177449239753544690671581 GT 1 -49578834804268136293004870070118.9962720586762836561103605869839635 0.9728031013399945037042701938272069 0.0412381522426407575388876899987595 1.0421125688726080185183990279550771 GT 1 -100464976306435519146351296983.5536034999906837994753837574100793 0.1255514572897876040438003328866278 0.0983980191725785100461704910248653 1.1035821192454286026402197668892387 GT 1 -145577810717093376881557.7051504474349770778326873562074716 0.7231380445411592515284434630996540 0.0137180755095750990800602562459880 1.0138130377738958884196775316763485 GT 1 -5466826192412.8260198830388397238230748947449483 0.1014021389148362336653187224836809 0.0508613087602708162894258638663193 1.0522003464351938526388813743320135 GT 1 -434047976.8676943824965359963176214460377990 0.6259684832613145290283198740902807 0.0398927710453810335820051485797997 1.0407103039301532240800705737529073 GT 1 -14.1438420645106041223495794297244190 0.5564926055606323567697584495342173 0.0707190649986452112287021208866134 1.0733441800695604194948497051522919 GT 1 -2.0801624768987281669214462844358582 0.2943587871391665067244781119178219 0.0391484090287073321211450325884524 1.0399353138093776732507072796685745 GT 1 -157920661799.1791395929780620779461842636400466 2.1261277781551780470143435142531299 0.0298264869839179291328559113318359 1.0302803440836976488064553048671770 GT 1 -446327760638289494660091937431788145.6844780590024628628669520077921908 1.7310933583677117478871775711416124 0.0154147061993698245624274368609597 1.0155347479866966102502405221177252 GT 1 -9136331398114792168064334583222671352619.8501090559977482152652216285265175 1.3224974808299472452304760338079135 0.0466246301481935834949058283133343 1.0477465705583247505729743368622237 GT 1 -6637183935568158.3646851199566911396536175278308834 6.1880013232867782019440034788310310 0.0857185141953201145869200668314259 1.0896167836015133961621068219145802 LT 1 -49484843141313755480.0999456119525371614183070791569526 1.9449480257425142814051663201139335 0.0884791337836586072647552538088365 1.0926407929517259467580952202874886 GT 1 -19189304741564015930776086064473332711554.0878982279712916224102576636514195 0.2390941174266403782156509694268335 0.0875837797765701213262329288566294 1.0916590111943791103993897482673907 GT 1 -4837177167141453991.7973636444771748429752419531097446 0.0174698670170542947339895706501591 0.0212513568536249827463592529713904 1.0214804179908565018103075879838328 GT 1 -2296341737138.7637166328065777713460897599433183 0.1155162443967041648136250705318531 0.0344579064743421939198278990831831 1.0350655804195283612809871788799617 GT 1 -16907133024634667705966743102210.5705047088373529002446036714895814 1.0596052668721316330052789212813406 0.0595657710238501864738253764787515 1.0614135646628555417277459760653535 GT 1 -58001999421251234.9367821068814640664830765063130898 0.0250847484126825597502976516790262 0.0975305518022992395702721896326949 1.1026204417606268483941597092580616 GT 1 -457298093376724775.4103359141440033434751768864784567 1.5907306233290784955085045723182786 0.0602465453153205955748558969775381 1.0621377203704334412429124299907898 GT 1 -4170867818.1232433958794522903651072902782334 0.1572897762863360853857696549085646 0.0403168287387093285843916150039260 1.0411520789282752865865498540658052 GT 1 -1761312013322.2526696716489613441042299575097459 0.2635061122900913524544564820652891 0.0135959050382482910065816907214016 1.0136891757195412594587607952998955 GT 1 -3372529038578532989451783094155.9768042062157182778318268661545841 0.2971031463953976758522824092972519 0.0981120189201262546438779297757394 1.1032649561218287917748837484091514 GT 1 -8851683.1882335371352799325127346693336600 7.3252099443381351341609176065304810 0.0578789139179000954541019550691047 1.0596214711780944524038114989753706 LT 1 -30624103734089111200145897292967.1831829460420303624909344584576596 1.0463293784056129099742554659365977 0.0957507419820368352784246015304196 1.1006502286999338730652084194962023 GT 1 -630800255079058267326651131701328655766242.7916213948607817922003973518284429 1.2607932889321469587976118832472379 0.0513286447335830941309952464078021 1.0526928467079360293731002547994360 GT 1 -11941195635520742370565872479493.5359926178874874188633691318094376 0.2131620672126750887725157223150214 0.0640387371843066265559531078825320 1.0661811892416336663581334970211255 GT 1 -1838627223497369254599134.9008320257747417736606947916381304 0.1246305409167389968163732233036046 0.0298063779563756814795920502405756 1.0302596170499527190822021675926815 GT 1 -3248846072817318807035890513801425667.5406470910664820780503749850698028 4.8590600576952514605530336945012274 0.0782882924558302891293755746161137 1.0815227859430099579602790826297923 LT 1 -5.6335876816777607434411270540021487 1.7904909354544372964452364611749703 0.0745139151104228472806084161578272 1.0774361823170801307395917483950913 GT 1 -531351458037002385834552863006995420133.1973586372619002640776328626211310 0.3016771723427296601095468159462209 0.0656046792627686182919173513046151 1.0678556746933681476900511815365385 GT 1 -4.4326474477829493041783098335504692 0.9267452130117792193828918903643872 0.0958147603430803024259268408142376 1.1007210284564664072288572162930928 GT 1 -1708093401297751758043.9536613731663032028680705683029101 0.5676567623264223165141561740500185 0.0090894592914886875029629702941299 1.0091310204640103407512796081812105 GT 1 -390273603.3055672312216082697069833780222064 0.0678904205890278143268944222292935 0.0062773594591965500339427177151478 1.0062971449238619279950327952956145 GT 1 -5057.3302073474728868136232076914948984 0.7880807607460386805227509420648076 0.0217487526236694916382603679066800 1.0219887427824557500455736738432800 GT 1 -25068118605423847297564951368517268064376392.7098344463039734613611082944189711 1.7274415006701383389257294998488874 0.0682089434826850423447989308220084 1.0706466777166390007213902919001266 GT 1 -1186896863162.0953176696159792082654548078710956 0.6874507920050588246060446516471678 0.0740894019157995373366456170365292 1.0769775953422119387497307721673519 GT 1 -54299.5281580438983135846580585991432163 0.3033586952283873467641895736346915 0.0353602990877317357746750649075313 1.0360006142922297305429769232638306 GT 1 -105674415880488265420.9448273953450068851161625590908787 0.0812086445501652227418050308760685 0.0025610731294218783101569703545391 1.0025643582874276617183553933834495 GT 1 -1178413209951601293294436311257340311653.8200265890316935991394539553864512 0.8231592982174173467065408644823943 0.0906116513091889284407741751932450 1.0949830497573015774192789885109337 GT 1 -56367340646105275655168918310988.2137032033374233458787839451264552 2.2830254832729248400509908839097159 0.0311154013552820935828634127265492 1.0316097674294396753015891254982089 GT 1 -173286762801797972968.9152442001335912377135926447704402 0.4421994645174444355616611268265110 0.0986256917753572263336364875197235 1.1038346712122750940518034207516985 GT 1 -6434842665587.2374712402229807103855357503383784 0.1090192208300286952198477676346087 0.0191608354862468055900888064241206 1.0193467834047668344599463368912620 GT 1 -5.6811568461503903616140232536243755 0.4746783775624109684026966722466823 0.0756195175675725808511319723372253 1.0786315145732789613818407404312084 GT 1 -1630303661314158453900268514573128.9051807822454429132393288298650208 0.6214765340416608376131607083103561 0.0397495248982297868329333716858123 1.0405611169874140153035321182119222 GT 1 -55086971972834638445887.4523679728498037703899486213203258 1.1880409614382322935957627694446014 0.0276276897130925034848324680707592 1.0280165125863854881129119918527015 GT 1 -42943994526590183745832511223639627880831.2027385061068383211706677888043209 1.1997031556092695291474276536323117 0.0264501145367517302483786907645927 1.0268062120690699204958857359263890 GT 1 -61736760304343650644870221.7186894158980724659044386825270785 1.1682467959032712076788711921289331 0.0916360826919909965216910272162599 1.0961101906889029263271689453739296 GT 1 -2392083031274.1467480349404215126776614395238142 0.2871624512488244199797015663109295 0.0432415164685430556811763859452320 1.0442042876851100441115326154776244 GT 1 -404565282413236.3417100939963273365364785750787832 0.9859777038343437480870009530259546 0.0647402657474030858558137648642390 1.0669309976256384629938186951469942 GT 1 -33314557962.2792412725604954924779052833053373 0.5620668747152359903842645403335245 0.0714852355479259621603335289292882 1.0741689969134610741974095630256789 GT 1 -10687807422417931556828071053394561494244.7592945599187399376140770109066380 2.3035290748954068579762205670717843 0.0370383141927337005620880652798288 1.0377416542607961470475200312255390 GT 1 -74528133853598532362263404592580223344.0980793558465265108774662583238344 2.3179383640730147833595053662441738 0.0410799166595193115891742277766464 1.0419475408969937543492704734241633 GT 1 -1468690327811737059875473636056802536731.0405200999894368989424011100229348 0.0489094151388336032831105520019070 0.0110665122166914113449710901597747 1.0111282016095069489858051546511313 GT 1 -5.8236493802899621490977932320178877 2.6210729019033520167321723929705246 0.0458394723800067687357199020287050 1.0469233537438277791395298793928099 GT 1 -8517604.8745527566865677969462872720290297 1.9292320153032212689385846483479375 0.0581267589689896124774784167455028 1.0598845771216235358052926454944324 GT 1 -2058091570563631567744314878266640325365242.8583324838178495980894004161459777 0.9982086598034329130134255626055627 0.0976513841074737471531897608860932 1.1027543414680369153585489956948597 GT 1 -38306047715262.5442783062455337802110218793578194 0.5194138691928726087424605898224741 0.0966777019032335386021749922862680 1.1016758699801584890381524132841748 GT 1 -239270177.6354575583134193440674128706113529 1.5696331336631040056165345882731142 0.0619175771116461581425048611572517 1.0639174629532258415866490053159102 GT 1 -968447098185712551425025620765.3607183991245982295990474076766859 1.0415739347491987237247311981432483 0.0849575276756351946296734541148986 1.0887847969430545219946266433340727 GT 1 -26611270566144680703399879694385258829584952.4221108781298148572288920039475932 3.3882044995910658671572394546251512 0.0867688254061537382985282386416867 1.0907662271585781524796751442404047 LT 1 -423.5639929993144594911729384327266131 0.5235248803590738229586213193215652 0.0816910468253963103964426049495536 1.0852213946828625778903756237791152 GT 1 -4909.2250994270825266077274959490504825 0.8907406342752710879580330310047037 0.0265974893044496999812826362120036 1.0269576022810444950787912563588223 GT 1 -613.6779229965415401234807297464203362 1.7104520633590252772525259518087986 0.0149119491759511976544659255946173 1.0150242501057061228240893752547473 GT 1 -647693.4327795214389965464049779703566315 0.8029769073083406952307892175246516 0.0976437912087980350706550145183922 1.1027459269078585354645840467164925 GT 1 -99858387914723679264944.4997830246535038372975216800326329 0.8485311768012007466760395898783405 0.0723599085937356922283486193176224 1.0751114539587785368753403935357559 GT 1 -125649110264490676972.1927337414741106701472193472435107 0.1065562279047839920935346996306930 0.0556561521008603821561520689223342 1.0572649335021126816202656476476004 GT 1 -8170982193398.3383637021728019100689619226710843 0.6308481441332409759903705032195272 0.0555209571265880369007578827930627 1.0571217808802721824319256648201054 GT 1 -9.3982410212335882371750909871923485 3.9415686527899340592685066000275928 0.0572100453668923998372710347812362 1.0589117627996779547185471626873735 LT 1 -1931150854822067902486304.0696442787372786640878003866208390 1.3507624788620389226031404962836588 0.0013038426892905673785899372050030 1.0013046934317397282364248999756312 GT 1 -10.6543992266259547036793876909124512 0.1432530700384287961354713229256313 0.0473307379736664138255201385334670 1.0484874848537877959650439517009245 GT 1 -464023348801269106972942683.2151726009965256437282071570325051 0.3914952852145047381687506586435838 0.0912443092159771169839116550254460 1.0956789879432612861382711469432514 GT 1 -16772539067196556419904427.0965547286082354107364192482096856 1.4372484119918009462537966858813527 0.0637267037698021317057444960157658 1.0658478619714089320630136614505056 GT 1 -880247977751286027622.1020108180227224455890061746895142 0.4967735393712857625218336884401947 0.0991018201948009547038528714408440 1.1043630357450332937320387207848243 GT 1 -2232944.9582949789874119755892557265755999 0.4086747804789542103771613710014059 0.0287452042333874607548180490658301 1.0291664395862283888616174157001446 GT 1 -23990418678620045706882702.7576421376757459195374192054933521 0.1857665526128771746790984721569061 0.0601578813620890148523629257756827 1.0620433767206017782321880358619601 GT 1 -178878018880298668901580565.2590590563034844693821804612690933 0.7699716311821791582053134835423397 0.0112750320064826151589755584379646 1.0113390770414652035498050892727407 GT 1 -1606974036841282572864514.2159166987151798355327078251922922 2.4710398349442271376286465833574566 0.0217286001008617102926586573183565 1.0219681424353689865223374248162701 GT 1 -8708773212441665336620319135918566.0506247037929560120747948371645028 0.3542544136371708735223679693953378 0.0874350179864336786538579922554632 1.0914959828954754491387959967223673 GT 1 -186901116569741454788713226919740666426.9678336610112646365350055947333708 0.3354506504759049146661998162623745 0.0676558514323113218601007819732319 1.0700532743357094365600702834813212 GT 1 -44020180772241379875569385827819084004543.2285870184985821741640882279068824 0.3689551078585521104682885159923418 0.0020592852116680710140932972095458 1.0020614084548692208666647464410242 GT 1 -213256794752261077062034825203.0622488102737229967334745054918339 2.2185871718323129947174978514289839 0.0431349995605400350063819304353999 1.0440929628513533041288097001506966 GT 1 -31272552176726108641463.6518529959513552854520833722639789 1.2336303070139795220017560213829770 0.0304520351428292892408217370942611 1.0309253317148944366744558354594299 GT 1 -137492524062.7148321012710782889971997246681270 0.4238911331075216967763760764274095 0.0985683018776901465399638562859286 1.1037710039097650967832032261333803 GT 1 -1836.1527848329986668066520068716376054 0.1321397944490756339655181391734997 0.0797478145137682347190572928210550 1.0831075318426624704897212390232944 GT 1 -2674354593291490848662.2760364487377290357179567840038880 0.7433992996600920287838715663020009 0.0482904070550052381349562053004387 1.0494953401553391719706098062556493 GT 1 -8721292.1850768888844672726289220570551857 2.0336030040497545109963773088712888 0.0600022310907078035217654690086358 1.0618777772216572116370189613848952 GT 1 -1285629640974309079035124.1939840470671044508550838983477992 0.3314299593710241206665075775673931 0.0587400128022645738186815254779967 1.0605358893556821888827227308312318 GT 1 -117135897756250653982878097429493877652444.8088378462649204375421683474990763 0.8336750357804927003327960894540107 0.0848386909153543598805486483147808 1.0886549351630112608901502650579315 GT 1 -6674170340196878492340633568342043907630.9769807514231154250549610956606642 0.7639251250800033131695508076468833 0.0275518003101515630302919873108020 1.0279384700085844493811908508681937 GT 1 -3.6964300634338171603900733462479943 1.0981566584532148381147409783916513 0.0611644316284868082528707448858352 1.0631149286634069664796563136265310 GT 1 -20.0682537726351320580523751174395992 1.5553394268311287925645179892993717 0.0124838664893643020152738031957625 1.0125624446080300982476447385260031 GT 1 -5.3710278514863963679708871931180472 0.4189229688044256818086774015344602 0.0047945715349692285635243822350879 1.0048061023647605956765274499835359 GT 1 -64739001482341370867050.9824596105806523024243416618733764 0.3643348322458370402973984448167206 0.0126171234859265842862070766130259 1.0126973953028130697317414863196632 GT 1 -57996324955810704526159624.9627718084029258488988166542335862 0.2315245281076104116552911860073421 0.0755515664773335941634850618346769 1.0785580074037586488271914814171590 GT 1 -76227834129639169922.7890384542977215790924470203119101 2.2552473191639060370513306135654160 0.0764355105681843272084291182234145 1.0795146502359423854767242766051040 GT 1 -6487218169127767263880122.3901587643008178383539758978415676 2.4567793814012225803575998440105215 0.0373419367590408838295719182145669 1.0380570047540318169516436261740821 GT 1 -19868601339704972106195559.3837089024804308187130948397664029 0.2824677364728844343597907585312553 0.0529362204513728173946008698564648 1.0543888390157233662209274389697855 GT 1 -200234115127914676372608114783694072.3905753581879077206295736410061761 1.2889068753424688648007108541805760 0.0815991717271682018997872845144704 1.0851213515522245582596327465733009 GT 1 -6414298657858115183671330644785336418855021.6570208567220017526574396620795994 0.5971168620972844285136449932372159 0.0925867360553318634137181052607569 1.0971572943313720046483734426421075 GT 1 -4678317032276493410468430426189058048984071.0155123952969811514772332894582036 2.3795480074652857728019880697566997 0.0671817067586221522257838226077837 1.0695448524703807879130288171324939 GT 1 -52.5263123041116796690581773734172482 1.6364852540281891197329377125322419 0.0593375414233273414751721892137068 1.0611709087662682818413490739136286 GT 1 -103818367220458.9499453002960961293929724124891089 2.0405996266676832575350512286900298 0.0871255428237246693801631090629568 1.0911569136729858376336616745317748 GT 1 -757584806748247607.5408254973179924688578858090247440 0.2469957407937807309638619281845038 0.0709818687962816039015161762574892 1.0736270234548558889664054288784316 GT 1 -7555624964216797241419153813634463367402769.8450791481602228843097832709055217 0.6934563198814665847854571810372998 0.0153635902087150758784538376538355 1.0154828330696783870892858184326944 GT 1 -496896.0018227005208447331913371004287231 0.1744425634991419470288794839183752 0.0334461114874867252914428171438847 1.0340182255378324514136435044582086 GT 1 -1184858373529126570.0812719493359938606467654923968625 1.3584285917585087389448913892855432 0.0055039655910664194153115057280067 1.0055191682185001896433907194410523 GT 1 -2647514470.1733966186688037266406472379700915 0.5254006478619725568344321831334145 0.0102119608918306938724701552334849 1.0102644606875276461819145874191208 GT 1 -1850144426253.4004877647415946255782061669675719 3.0125630443979012617804217663821443 0.0006440933697450389883754374471211 1.0006443008869912864372875902360627 GT 1 -6208660790428645106.0528907058918523373817562690885211 1.5598954171422347179714075822145911 0.0295505156865280748380136538925195 1.0299959289246173595663141318002148 GT 1 -1489396562653223852745114395104240.0456203233930346548691366307574408 0.4338986280626875679421407900708629 0.0596832290548635950428733226515408 1.0615384701194215978826267149204713 GT 1 -171485152339.3715504424737114300903161510613899 0.2363111541191888954673147356499358 0.0881054668431994792506535492126992 1.0922309390634475993988398051273630 GT 1 -87736146.6987085475127791320943419645352551 0.0866627278812674295310156766324577 0.0330352839684888787557943260387355 1.0335932722695113732206224967009396 GT 1 -63622926650425724756016888722187.2767431654737522947359125164489161 0.3845464493597690161500744622938682 0.0848001285032849212119153864898366 1.0886127987666712816970156645858809 GT 1 -25842356723561974606903914528352070.2519916232934722645676164954722020 1.9773613695537918245974165893950119 0.0682890537946449935488611408921178 1.0707326559574911765612448836024234 GT 1 -4022425190809747054899004327242381521399.8613115217910098186184262069926015 1.2211433785891639753099251074757696 0.0165660697038995466067444245155600 1.0167048215528392112404724419899097 GT 1 -139943836571448.1413349215421775611412999944945705 0.3926354112255406991199959483648865 0.0667010690778870918549623438366971 1.0690297318925954551122377878406957 GT 1 -2289061480590587704349674716.0318979016812719246754993815338970 0.1030216454442164909286359074498058 0.0562120284557975645445740947055845 1.0578537444794746161938124701238758 GT 1 -43257606.3901497877082136421769682389721919 0.1547940353054273424522731129664651 0.0805941182900862068314669787582208 1.0840275982953474387135943424882293 GT 1 -1.2969566181064486630811130587387512 0.4228794080325157470019988559255425 0.0033918239796978142739894084080274 1.0033975892548763231261110151977750 GT 1 -1008935260535498163.3628937501495669739784870906247977 0.1828253183796498821071345007711804 0.0169422843609910951983863031193933 1.0170874467854041164751689593620890 GT 1 -874207421459593403657525052932537048784859.6710651065308637329473236786200301 0.0221288262727005990576900070961957 0.0807510313126064601059254168692901 1.0841982807079462855892101039433674 GT 1 -2139573687359954212139610452.1941145072691300916309004782032622 0.7523560676644382015284465523622052 0.0182620517339751874636059127341560 1.0184308613660836780445446566781876 GT 1 -2243013738877194643209917331038893.1443249192532137169697818956051319 0.6229382924755174257486471843528963 0.0109206681649810530070572623537170 1.0109807363852898544963048721626531 GT 1 -5860158380903547304841489.9568304995633518224876932116958576 1.5445579953779880704777869330685504 0.0952339525825149157659024689447641 1.1000788798428760866130219775872579 GT 1 -1556723552723119682535.7906691846258390488734461650489498 0.1285933717077899073407758495785242 0.0334091483032367556216379853974807 1.0339799840306285234090022457829658 GT 1 -779923448075846072411755.3640010775197496043631814917289352 1.1115852421928685398725234034680014 0.0762240793051520609791796701547763 1.0792857468212858930577097945437633 GT 1 -281908079203905393700.2688064662105339297843726973022828 2.4893591085372632349815893975795864 0.0047348929203375833215761492621416 1.0047461380361419894595664349252272 GT 1 -166355.8693099418219652509005513543484020 1.2280237286874902190070528033563766 0.0681840093280198800115876331204824 1.0706199186906906324443324988162054 GT 1 -49580551926641222.5122413705965638312162593963621970 0.5224696776853269640607381250170486 0.0432619500741714593316533465014549 1.0442256450330559650117143628861098 GT 1 -85042678.3421941015019898372815797454703444 0.1976561066557743865968835164309586 0.0978750010513393861024449225294466 1.1030021887551029775141057262226304 GT 1 -41411697488912181807665.6060120879864828952980053319021340 0.4015907781014773327012941131641543 0.0376551092702933934683610964778750 1.0383823782952717881469774027649755 GT 1 -348701643282491109986994.6708666152767697515827225528002475 0.8656770665554455471030280685672154 0.0476465318170554863719605627729848 1.0488190229937521285972836948222766 GT 1 -30.3792131118508160416273401412578616 0.2049761336720885240983445053966782 0.0651178852331296178828946975889402 1.0673348381055000250371160823720452 GT 1 -33803114768643949400589067662374195.6916846443095636803002856376249302 2.6640620794997966979423784717106154 0.0088612046922702773655683448072433 1.0089006986490284558240242740097001 GT 1 -1110630689.4838483971929888618807206821818350 0.1079734950251990456196951409944439 0.0427391924675718100658030894886215 1.0436793985005032172224638117347871 GT 1 -721492571792933590343934141653346323368285.2246813993573139068301049091648200 2.4378098532751368583824661561230596 0.0529166053134898371077543911141937 1.0543681277023148903296376318447135 GT 1 -302.0018891918549940412661345537332176 1.0998191391134223427162977644855855 0.0730645230601535429712108626281421 1.0758713200028995708548285818952010 GT 1 -20906345021205312070311260582763425870350747.9263053507625833911500993311996768 0.7190291066383646954877196666830430 0.0939668142350906617687644942494683 1.0986793447303878705384944629935819 GT 1 -265463168878004805941162937.1179112833400425528682741492399995 0.1463244950815150693616770680356956 0.0928259538760026632405425533781689 1.0974209551877322944565156331034678 GT 1 -296.5754643320878027389755432796184409 0.1036408440495781524934895724434732 0.0339061248364629178081522311172214 1.0344942702328973264780119990375087 GT 1 -16.5685080670959841454660387202149922 0.2015667141650250023374905581688252 0.0171389641742041208412108819130674 1.0172875362486361708719793212831202 GT 1 -4599101730051402241977314102573008617.1370196300961249223410105802943711 0.0315588536210099920553907696817483 0.0921801077279962715385547191210645 1.0967092765847320919337832031007630 GT 1 -76012818979725085704847449.7160701204153104751338796569169632 1.0865770248430796829060594870691473 0.0434355477114619463553426389302814 1.0444071089025339399870959698319163 GT 1 -23507822551.0538581091969564637438674123319632 5.7323364926474910324118037440128265 0.0414196185908439152980665308221830 1.0423018583442365431657705321257948 LT 1 -160421271136512985.0761715079785334023890917788938806 1.9907712375740301635246894791842354 0.0056835224324374032006895385481707 1.0056997351053007969431654360628782 GT 1 -9323349064167738.1379980088698348721253978506987395 1.2962930546133263145013113755844823 0.0301434023013997949231334200232357 1.0306070558378611911917538841829461 GT 1 -381837074546517503396.8520319111992447066054051631384078 0.6419133447085993410046103867800822 0.0215102676947008425942051967987142 1.0217449855017263384304364058745437 GT 1 -46445210.7140866197004244565170592987672382 0.5900480294292235869547366559121764 0.0378183421469023273147476023838446 1.0385520126161083244043936914051408 GT 1 -364489.7922500191661441202495952682709263 2.3634441084622606438517427385632733 0.0981907113947054019233516565933564 1.1086930529392908115227278449676356 LT 2 -56272200903595301082803284904239694.5262336426113570722628209477010147 0.3948467966006825892117412583624284 0.0300079870666737821657118090108166 1.0304674416079632603635234039281789 GT 1 -1869292775476108937431555524997162761.3873405276475732130163644495140697 1.1402896459848916768937141749200074 0.0787836184546261770175685113698840 1.0820603283611383896683185795103493 GT 1 -111048.3663776064560867072730663039843458 0.2481104598142026123154652731785311 0.0659276230250307894330138221433397 1.0682013523477085315729344754221714 GT 1 -927104751139937911678453546235481377932148.1020101283803587817050363383029890 1.5643154644245967303762521202946625 0.0641874821032742802197199718340884 1.0663401239599350955907227476054403 GT 1 -176278.2964843419833642748933722750865899 1.5228846035299289862128603518005512 0.0757369068444777406433946271410812 1.0787585150168616102762038786269576 GT 1 -6207090853539819475.4276064631124230661383554326673131 1.7676033750297330974842124915750879 0.0065718631946630675280608549161176 1.0065935529679621674332752156680499 GT 1 -6308625869047539236423.8109727884195282005246910270651620 1.0806435705808155869958005454106397 0.0606157957447047703546985928609230 1.0625307202471375212075909118535116 GT 1 -7426788157207590806634775601615.0917984200314517712029362893558399 0.1560199270063275323925462064974194 0.0438039030591355568191088137979485 1.0447922646423631081086429196817485 GT 1 -368534029791771.2993747524038184437681331639658516 0.5752163039406086305875704250391755 0.0023548540243407350199668555983455 1.0023576310536010055456458278688948 GT 1 -155121362523607722132965388194809693491.7783608963340677646995309631662573 1.2176513757696228494486116635040911 0.0143893518926541844842025610576328 1.0144938825808983039961030449493661 GT 1 -179403.0001683836726080218547706626750904 0.1864617532469516083193775238726082 0.0666092526434899763287972666068288 1.0689313583540908339185281916400123 GT 1 -2523652255941356150630255124.0150728978184484320616573438337012 0.8040984775215576548378208391160155 0.0185313331783020068550107151140108 1.0187051895432058191276861780878543 GT 1 -84394422.8097083224082283717343681974983836 0.8371193392035763251519754238109669 0.0547804352802308467458770433239512 1.0563380348571893774426614097101184 GT 1 -5424168029313286.5900212631659574524726672968786399 0.5626342666043830650227065615274332 0.0611832620569577018504634386695386 1.0631349860812880065940898068961691 GT 1 -8831678075120194269676156406607715.7885759841507206564368970368283815 0.3237236664089020385127746460088530 0.0144294556684317291571011394408333 1.0145345726767016817805964410741619 GT 1 -4174631070624757807404760667793437.8303664594148534964550649703056942 2.6779797960115617283974802476759399 0.0778442175510605661570510235331165 1.0843249388702791947267058702729318 LT 2 -6956565.7632109137514060097638920944768036 0.4961060411913656674922442363133316 0.0272482405753227023199361524793285 1.0276263584070282961224596402349876 GT 1 -2551892676853893831337844229044081.0141525603406434152355491993730757 0.7624981056065387099310819880297872 0.0075196234304677363753920918694009 1.0075480383346099754697461115125096 GT 1 -15858964511426978.7890728741166029754897104375369333 0.4473207947137690186741258773367467 0.0699965807353134966496142744199684 1.0725670162128990485333894148590407 GT 1 -134919887323813.7061085202622508604311994207985467 1.0836848866134919367989461269821009 0.0773989221211109075102004598375491 1.0805583395533448809648155890411275 GT 1 -4814878924626.7834959825980399848401468846279734 3.0379649922282412407567347383555172 0.0802550994467620057190680621213073 1.0836589293961646473133419539834554 LT 1 -61486504326517201302331375049398.3204013305665045953773634065635968 0.8498117701071040018881822731576028 0.0247004409395217995293268912702232 1.0250106151108235791013147533710715 GT 1 -198547685689457622495850790942292394550528.5771429180556970815080313863748665 0.0622601877634389108313992409996972 0.0246578565325082947884561801546491 1.0249669531641266723163167469137460 GT 1 -21114190626614068483157149735441281.3079771257716111467102779495363393 1.0641065159963497605902989282511741 0.0337843314729228611506787242442203 1.0343682103434774116124967550369976 GT 1 -1251.2643017432879743681795719313547869 0.0350706773251750444353553003752515 0.0159945126313626214711706430312107 1.0161238053512890944877407299703685 GT 1 -38256093014429012.4784941167910598279345162044166747 0.0705482257546020068583741013602176 0.0333138756130539648957956337165556 1.0338814232021093608019054237227410 GT 1 -151998442951342408454272261.0038496198823752511639925521892058 0.4071907266736286457684781080773462 0.0839948344724916770051361584839510 1.0877332751017364800549043182290989 GT 1 -22975796565202276977080052983949538029953.4404774165628652884535018677761950 0.1378417532703261092124754705924035 0.0700566856044423460563858620021000 1.0726316469553413220567472195086907 GT 1 -1004814454375070975701975.5540895290482583605334510639347698 0.1375603854656363705778297134605513 0.0867196767041286522388435974863971 1.0907124101395298377598090466660326 GT 1 -399400307703520693958415712137.1907578578902968180418157085461821 0.2758586343262560901548429770529851 0.0856500091881453962776287641567613 1.0895418587103226149122815355036076 GT 1 -10278870339.1501693662281333232677129159870010 0.5861249914684309607097783200425387 0.0212995510828984494068216829620616 1.0215296598633308456821312750687613 GT 1 -5647334816778666850387.4267128231687817366616593635112587 0.3822676778783476466388821434656023 0.0914027346075307981510423266764542 1.0958533353548816413864216482243093 GT 1 -3436.8851148692427319746957385224537277 1.5208202333043624458773438220001903 0.0019871740276673108716225037797584 1.0019891510775710965082642773632256 GT 1 -21.7585730369363301080562771985450641 0.1378033284566021695655938039114612 0.0347377086796399246392662673996731 1.0353554100982388635079703593773823 GT 1 -2874468697580.8926586999061523689452608455274426 0.6846545276102025309385418624266688 0.0495219757315452028253826331606973 1.0507902375014076011767347649183780 GT 1 -1727836509391737588610928.6424631775612182896392411228523710 1.8315988861534100008659915117815784 0.0354531854225957017969616901678917 1.0360969101497737756124622197692393 GT 1 -879085468295419677437697162569981961040945.4650436178584567448887805942316550 6.1280852258625079238448138928266322 0.0704447632884720610778756691328644 1.0730490473232340600254827749756836 LT 1 -19328593436225762004364572848.4712072667152564861192290230157595 0.5919853257414197137328834333766372 0.0413060853455022775853833131780973 1.0421834264164655040005148645682868 GT 1 -1091288630002.5305330786056491259088782415503221 0.0899914796638719972803107613747628 0.0733023074719480427992902067076630 1.0761278803806652205385404304848788 GT 1 -169525192981262652.8607854746703778866263795217956864 0.4869639300609810468013738503341321 0.0956877567391047580508901535186546 1.1005805763901694513158350082384097 GT 1 -14894455578204678650100620.5511801187588321490553827748933479 0.0080410413906675067633728357919258 0.0506273601348415762171376586567707 1.0519538916231730499011673946643670 GT 1 -14169138.3639129424536505493603610064330606 0.8922032751606804820111696767541520 0.0278202060706604989456379291764183 1.0282145184487941762975024660519617 GT 1 -189916369729053886368497.8375087761173070097034098246996782 0.1282303982987263239082425446681943 0.0408122203472009214218344361007866 1.0416684154951107962675772140804537 GT 1 -12921551414304139718223745213839327249.3042766413722571404443055032617329 0.3503688193907849183459798403962743 0.0068087209049814348321519870848335 1.0068320059998261783322136258885589 GT 1 -17539693003267527245785.1555702847497669165072410191251168 0.9682356966733932323357568292417039 0.0791431973779684586220559797013654 1.0824507351386758219389163402556980 GT 1 -11558768517821476699.9548635125696469866455915100020357 0.2931142405100840040286719172697985 0.0033646998176580717831993861077149 1.0033703731497037715166062808497118 GT 1 -4871536073890785698003968013282751735796734.5417112959795367787190947724000482 0.3859091724559188623686269878432145 0.0816649779113072317439423728561399 1.0851930071298670746388517783051850 GT 1 -321.2050492586775447261411175713273388 0.6410851401629460699864855295690655 0.0034428015126008882451999316935570 1.0034487415913218431806016523298401 GT 1 -16689414537114013931383264.4115780875348219218779514016970861 6.3161460322477249333507019030246291 0.0799509414011607374563580150254688 1.0833282857967993578324493367061148 LT 1 -6896843099105980586253595547.2288098984549449265317661553892915 0.1546333602572613747715476664809637 0.0797918534918029595844924725912465 1.0831553883243019380340531882956014 GT 1 -536715496702078223331.8867371266775097662206889837012794 1.0130054461262284484562452721839826 0.0307234937877028429142623833644452 1.0312053556682723808162112834937382 GT 1 -1463833633926209534.9426114835950896524670029243809304 2.5319924742383358634077152551912209 0.0273486184112844809630440663379700 1.0277295533016336052136825474595716 GT 1 -6946535345711245000561996687715535406233549.0300150887477214731007096306558677 0.7559165999658598298132749063518970 0.0575381423190961446313934170567738 1.0592598297829563938200065369022695 GT 1 -288443436044361338.0549504410766307725555804916913140 1.0970379000392246955383545410444378 0.0998521119651107321797793340478055 1.1051962091181192611023103699027565 GT 1 -8308911855751424.1368355283550709167186785373824109 2.7839035167558698814466195577359012 0.0709392653999217390984941404617059 1.0762882599804991827375979715762887 LT 2 -15637095441527378566624.8091243411344357390417188291678280 1.1652666191564832585795960860726524 0.0820525524080197898978022726782676 1.0856151366321273910859413739619827 GT 1 -2228099131.2854855682103038231201626948169590 0.0477911035025380771575134787968337 0.0277456897787493201654922604684872 1.0281378727123420172685445322954230 GT 1 -1367673499310607120643410460.7324717928774779203628143977142244 1.9678408517472293155140466532683182 0.0737460220190819862812299915391940 1.0766068076648219056730368996368224 GT 1 -59297777231.8079530297883513479474569793477598 1.4021200387863690423345847152053251 0.0588236623765928398128574353448890 1.0606247630915747142138701106983225 GT 1 -527382956153488975856696.8462895065332506395155370905414110 0.9641112863447025354186772321763956 0.0596441593046074215010406984272794 1.0614969214202806951923134634251782 GT 1 -1265091472754625318141561189967.1360957470610557245472894648914300 1.7520688443421248066100775762896025 0.0975965254405245137939473641093546 1.1026935478917265094427961329441086 GT 1 -56520347727619681254448.1365489081653104501569951524447246 0.4621918970599958963343233040613764 0.0460703902590367643526125110503296 1.0471653945946617030684892077546851 GT 1 -638684.2917241242776574764900699664361789 0.1122371248191411561093605103452092 0.0598601975434151537350569985813892 1.0617266887590617245052024072415464 GT 1 -75.3927153772298691706710828682289374 0.6045224407752753752277411373435361 0.0945940144072056357668319300212229 1.0993718330094271737759121953976428 GT 1 -107499.2786199452082086067364775082578165 2.3211947741410556897009384308161608 0.0707557135203477714210919453917779 1.0733836183524351670304833450042240 GT 1 -757454179318593.5555529940747818152917491127012538 2.7022497237803966449845295106542869 0.0544473627985215799992120864756927 1.0559857211466154194354959980086192 GT 1 -68829849355435473682626449828986341640.4325475363090941231743165885966839 0.4204192270967869350718671067496741 0.0946665562169704651956340339611489 1.0994519569727393816717935700014350 GT 1 -384215121310.9834209310698005552686814070536061 0.9662659007519931249985289970490791 0.0267602486178816199231248782120739 1.0271248228505162289849543035299679 GT 1 -51861282099133224.3629716948308156766772419883604263 0.4407200798488636615519455674105475 0.0538217577273898693304208325318762 1.0553243108998130326082878714046139 GT 1 -26070001843714788569065577731457873.6568638698412297898692208472791906 1.5109136339113962091651003039541339 0.0902768102385645780929526350556137 1.0946149128208596824621992881939544 GT 1 -31992449882538084982794157343963.0560017477424910792971413388405680 4.0345625757331921191595356460996879 0.0691002711796919303881762570895316 1.0716037101688897815176941967973675 LT 1 -31708010760957346467554399811182893836233.5428698896226345441097307288253988 0.4709370824459641019966957068968833 0.0096490891421520637703317628299803 1.0096959432460128786862220802446911 GT 1 -5464088157680991872751279439409312414124473.3495733196015024902401320957272591 0.2196106790876346416014177061351310 0.0190042446347884662321721676336002 1.0191871462709752235120853977040551 GT 1 -8815380544.2755926693993620696747432453035736 0.2320739804763044162485595090977166 0.0460369682907357304512982702769167 1.0471303591135467406049655033960245 GT 1 -44506042688944145970610754012676759415.0000830409289295976234240887397683 0.9782309901539234131292028411044503 0.0624403574586634768881142586739505 1.0644749044503965682393837681486545 GT 1 -1098.8180400349523575711894306218400135 0.8803180024293578279302128028489939 0.0200724414362439187530589430602427 1.0202766298826268980577187285072247 GT 1 -902688.0479620055802558421488990734475990 0.4149165198452910025448399420217281 0.0426845025009609371543913968509984 1.0436222684018155610762508307447402 GT 1 -14631248674.5178713186317160937977220640239027 0.0137083854126383309964054531645512 0.0904723353199948434324177472928323 1.0948298640264130627587683372392597 GT 1 -8221954967567027014936.2971699106850263199337966460588808 0.7510414745620464051633206886079499 0.0041255048329425512623849844163765 1.0041340382057394900841466622347768 GT 1 -241264927664525729741762228781647242573.9077539831083231887603522484968371 0.0792617735290413285063124975225288 0.0874278410915104890562216418390457 1.0914881183961320180637871475839630 GT 1 -1211832310919987155999639503009555521017.2311445257214770168795291629483710 0.0688475354411732131372485908426260 0.0395658745073485069949952510268035 1.0403698826833704195472381140711299 GT 1 -4855064508586169500092995591.6455250662524443285468888301617277 1.8387962397086205957639686601884074 0.0664662008900875384171475329685914 1.0687781097892753340987261269682971 GT 1 -1832475598711398849212083179150699048933.8155964823416028537618318563640646 1.2497661291192895505403329827437041 0.0442980187005056853243837349166284 1.0453091495725744180634314867617999 GT 1 -2038586862464408407196485282180452621316074.7128921171184167782361270211671801 0.9874300532408389424228855120162562 0.0047468089726509105434820490923278 1.0047581108497803285460120657283540 GT 1 -365540035491882053739161741195.0413519708202798827580905478336782 2.8048727175915987914502645906021354 0.0940430810785162257786179853236111 1.0987635249290251045643822668615719 LT 1 -5829169390643155930367610038002724.4451017592058913982724232360591164 0.6841295355039320880645325016117466 0.0162273032086398026811826257081719 1.0163604078100794754847844412523652 GT 1 -7164191090752298926977928170022404306623.3824044474614122938405360710696516 1.9110013499680352784251708679529474 0.0601801438043780776727891998460535 1.0620670644289112208393348647325228 GT 1 -12913152456.4710139060272761824959209646120927 0.1340229053890968775610059016752968 0.0586263584987969678176857307962407 1.0604151496622302848922657917197642 GT 1 -983627394917448134009821.5405433153425469757795417636270573 1.4832756552572839102652824543610494 0.0112817586149210219881537234891809 1.0113458803806524225692206020754300 GT 1 -11403339025252208684065.2760794731462861059039423299720910 0.3252588108701273839365956417931075 0.0634325355811210975238662927951576 1.0655337208043849498084620796682625 GT 1 -5500554616050834768969088095387169513622.3893071986753853837263051056612686 0.2724679296654275361323839139897886 0.0787468742661319824700448571302324 1.0820204425574885635696823094531474 GT 1 -552551040174142212212000196581650196160.3252140019633648373193393885350016 0.4281325879442141211140149096714444 0.0156050187002105750550535094016193 1.0157280587108720405588455470145296 GT 1 -324296314638338034434800146190082.5453489667248761484643851198053831 0.9084184416635198371040969401501339 0.0863354828212783385655940297909713 1.0902918239455712550238829325670728 GT 1 -24981795704599.1589841824599529473925185012103098 2.4134299722987556059903144414313553 0.0427477734607065075478473117927544 1.0436883626527257854614149863522047 GT 1 -14283591609.9216252535894479833442131746174593 2.9382997638435401365149976022951871 0.0561972363603982768962701822877081 1.0595106927462391405982607479528415 LT 2 -4342980000937241831.1520993459719838769562003422477380 2.6318027388853931350924522952068796 0.0296276107360531869809532290679574 1.0300753747002603930682028209717928 GT 1 -103880881018376553249389773512.9901925822555303699855485074782598 4.6512835194191878405636300975408035 0.0485329279863876983160595596198491 1.0497501992413719897815242798977066 LT 1 -2344147640740043.6161255954362753413168021856657032 2.2428764711385570361944409590805171 0.0977779510719715472687471842547340 1.1081882661599327864249122391142248 GT 2 -1912894450.4110928085807939039414974481783268 0.8320629642619557309429103939198780 0.0867131480537809049312509226646687 1.0907052615928612381641952000147393 GT 1 -11553033522.0703565706616304853560030882394812 2.8344885380844130324107023159606732 0.0846547406082865768628337267904777 1.0884539522101447157619252050652662 LT 1 -175864125196097687230458753.4477335242854107368309797167075136 0.0025410172208254477187984129363733 0.0692058656477808294526988496035792 1.0717171493011670840886545067774230 GT 1 -28968486418.9228631629965319055531626522992129 0.2548369274154113864251936350484834 0.0271182578957881293850984436086583 1.0274927436438924716679513682362658 GT 1 -897523135925606900215493753918089061728830.3626683947291777777567557804328543 0.9834366373681634071771802794476135 0.0642505163926084395856612366459331 1.0664074840466512555125150968606319 GT 1 -16801926413749989344252944277948150806581.0020138370738731560641152922951571 0.0869682516099673398384800100977237 0.0771837436355588578925468285237423 1.0803251364913226404339661967738014 GT 1 -236466047059941050952138391469820.6084259414257739575480134952000788 0.2456145662095231308620225072749471 0.0779833826920196970471253671779858 1.0811920324773498269282612817473707 GT 1 -1652247784756.8145261530583572776503031912718103 1.5149619271678525210147726109508427 0.0825997292482497662726612011229519 1.0862114016896668288979084883375801 GT 1 -1096857126545519266898471281646487.4383535058292875429183281616187819 0.7963378645530922430059496299667695 0.0219414565404522269642361150963622 1.0221857503507955952026515450660715 GT 1 -521765420.9258495600815602382137562135606927 0.5077115128183567385065305673200345 0.0660954411627337137223757302742084 1.0683810313736505172026254310484153 GT 1 -283222090699242345473087381553.2731716482131290048143490290104483 0.3566473816769677458103989694746933 0.0329831937832024541777521133802506 1.0335394039313708262334544593041301 GT 1 -893689413197452737730047777274058088144.2552484052746530725472301609549187 0.5836417763173623858405928956005647 0.0073167792078574945428193024815737 1.0073436781261256204396528316133904 GT 1 -61311716356679304647362.0900155782463688569984553636946330 0.6339625995917813324902586286400050 0.0837068726408216221462960478122065 1.0874189574656193103124215655993137 GT 1 -4317487506.5806397422793733662246649077704087 1.3481545970824911213402545892121422 0.0886555426314971760154375928999616 1.0928343441111087618842990404530367 GT 1 -2358608566471041569.4382483286303403514461510266319674 0.2635363314189791954051280154767624 0.0405343082351877668317788059272701 1.0413787205417522593295769325695783 GT 1 -1958971989943570144693.1581914103695643875778369198034677 10.8879238008710800314018347163154064 0.0440521861577976444236084197215998 1.0450519554518856474987092604785228 LT 1 -6618103407689935103862.8550835894939069277984130168928799 0.1490631955093681133907456815440480 0.0741571080356093071076191195952992 1.0770507218357801129566243010601957 GT 1 -221656373421613450032882821874757213.7290635659818155554370441315447290 0.6846558573013213968046228473775989 0.0071019284298397785196551263559215 1.0071272671640736730152438952602662 GT 1 -27876.3608523428719892927762426463413361 0.1520690408976604865422901139013341 0.0786437176899937541887099283858293 1.0819084746322238041705424025620276 GT 1 -2.4558238437541054894978797948670014 3.1557842563425832784226988967985185 0.0913759574567020549029157445592100 1.0958238649203079920398007053963717 LT 1 -218613925347037896699003215602679906636.3652520905190156535078587585973945 0.7596295376143418144499372098267319 0.0154257525492283325006872115777501 1.0155459673415809827457136345732881 GT 1 -122983467547581.5888440177185372440830728385597038 2.4605665231573510402753193279444931 0.0947797057141121957085728571902699 1.1045347298711718673744454781006371 LT 2 -506733226480038489381946240830588.0365010804265262642173968432102767 0.1053236307656831925995982929746362 0.0402027557329802850573314904566737 1.0410332207154584170060491342370856 GT 1 -10855604474.2445790750945101077926968357870997 1.0945040179814905731734065129612144 0.0272275618557702962144408525326082 1.0276051006713712176005673056306781 GT 1 -2223.3289719997734188044994965192308266 0.6211245857355507488221029245753868 0.0448364440827545413244377157816307 1.0458726904246245810975128846940375 GT 1 -49770874602618299334436625643331406164.3016459687777814921305570222861618 0.1038222139522691247744993787964921 0.0964903615264576328837656229614966 1.1014685010780979648669273539331863 GT 1 -9682835145256508749547418309430538054083.0202638732421879245831772065624225 0.1760474426915590344874324445017917 0.0305497191824605855302691607439922 1.0310260889383028015176506201240754 GT 1 -324709736593209764318267915475587881427.9491504631568106151178365664159107 1.7890385086147360983884729025033463 0.0280045121603878815503392549596071 1.0284041166727894935150095305543298 GT 1 -24.3174010772683324194606882774734330 0.8686666192701644338864205940574412 0.0389039358265388305121217962321931 1.0396809122882617227659796141502941 GT 1 -11701433854744003236126527135595934.3387373983281335818922683682095659 0.6633182806720780952245682293367986 0.0915658451667425106038876797122225 1.0960328705658133011088009484744938 GT 1 -125238468009.7117096474270282331665197639308953 0.9019342767085239105610404649965043 0.0941193388651540046386268602640747 1.0988477022167932907929642300508277 GT 1 -248.4755915008063521492966391453976317 0.4681283048980191861347284414914333 0.0258285000520132327458279915278221 1.0261679128641634610713006311512274 GT 1 -125.5134391862727806482139088051111072 1.1623780871543100790011809792468653 0.0697084393358595203290412281552856 1.0722572358771274993981918068620706 GT 1 -5998525381533833.0641759801603661071703491393268234 1.8992594479160231424077075167423653 0.0533990622973812583706812488172730 1.0548776709097841837959943813006158 GT 1 -73442761591.1406333186070657616977298760426806 1.2783737708519927105897793083708188 0.0484430531463518097728820936436280 1.0496557444796751778042935866255447 GT 1 -80402169345207934560482901426332090.7340032120007304045707434392885871 0.1367666826507222165983959451812954 0.0760837352642790972163957078743241 1.0791338340273156588836759303629484 GT 1 -22705853254115871781198205090536435626.6677287200128344793465366848189973 0.3976675214167085355331974998448281 0.0474504810471369464807829202817290 1.0486131849306751935420984934348368 GT 1 -1.6067054284915214078018623412501320 1.4002321981566661899989553802125911 0.0302398607852797341209202130993242 1.0307065172233233113132704263570631 GT 1 -20726829752247585498656642138882697336299.0248801695529798412611324951353682 1.7624388637950877825553935374268616 0.0352935779571392161740113438904944 1.0359314497915470613624206460580656 GT 1 -386073316500426306587902037065634103476985.9738559509899897386812177973125703 0.0112377875124972603347028348603353 0.0134491442574123788269164227814862 1.0135404031578016106225552780223735 GT 1 -11424844209026.1284656181665497142502094178699754 0.3678319174871981040865514535250855 0.0102870728447047524617561804956523 1.0103403504740852048090746095056000 GT 1 -87109702349843385015.5186171731025181580609079289427103 0.0967034041823989587502344197753262 0.0953763035304156382756495996862067 1.1002362267590674071876593861951574 GT 1 -10483.9847738405052069789707356370240587 0.0829785321123483877422379901622996 0.0619198903815650603315978312132291 1.0639199289122020210567559750607685 GT 1 -76.7862643790781926199013877967801936 3.6562364308583935356806216964711781 0.0176793263892707990988351824399032 1.0178374723955994804159877991147086 GT 1 -20332.8339812796158178611015005737843581 0.5654489596759037692433183774225540 0.0776495041225433233090595875895875 1.0808299802907362377138860600306078 GT 1 -25706478490246868543926556106186.4596697208251541357654202973807376 0.9582956259768370287588710304740194 0.0745262519500062438896012896356822 1.0774495125248610167740643909795688 GT 1 -6129297935748968401053549733335.2898682623571696841213390085404461 0.0197738365785947089617619358139747 0.0861409005474876533088902246353198 1.0900788775598116387885601722941234 GT 1 -1698778955817255356148867.2839543004350707145300605045954318 0.7859927500519823179555842710465782 0.0396768714843257328218686057129220 1.0404854589508754872776788461042905 GT 1 -56311569754220799391849477339992.7824598922696423535970448372873167 2.2129151831905993686731858086912872 0.0695171582240209341411805148208116 1.0720516428592296671324513392725684 GT 1 -14138176508.0568123991988419633106554256263034 2.5218461752886938218619158690811657 0.0667215876047052975145625157810626 1.0690517170805036777753622231899906 GT 1 -3290125498684546205589175559.3618518236982343416161237867643312 1.4406522727603467769812855807310157 0.0704335918992179224934900075703180 1.0730370294014531527158388009569955 GT 1 -1024721451.0236361786274914018777814487180976 1.2513686393358473314952648982095181 0.0914025014239751551608884195693667 1.0958530787136450864760122801283182 GT 1 -2.0808160164413112296231053095537626 3.9275187327266382762875183841123870 0.0655399519103101523600173201462349 1.0677864051783869249141757244216177 LT 1 -390600034441869685186356414213983873866.8916702993831374372957471470008130 0.7077911569988173353284606261213878 0.0278953348383351695176690624203471 1.0282918001113212602763107937673043 GT 1 -12858581006195099531.7253298508421613257886227500845635 0.4423058618813868044223948648404498 0.0221763233529397175453004967176856 1.0224259149283984287959953096468691 GT 1 -2222921179611682500807535938021225498006.8069001315142553790496991929805928 0.4275589920442119534937827344755811 0.0238696543151905028957418467877691 1.0241591505796058621733020450383280 GT 1 -135713597833410273363714629.4007690251427063045749287276157118 1.0438713869206988391432701613986206 0.0774696952629525122464175555140906 1.0806350529435599170928411960969917 GT 1 -59179541373903834971711409.6349284896075482846121349019350470 1.3229190735453752928629034119473580 0.0419889739084123654086431948572651 1.0428959915873351974382107712392276 GT 1 -2765488921108467657072.3335608596611126563813923610772351 0.1895245484127686009321793453469923 0.0002106350646139883006152963789988 1.0002106572512947940929693919158309 GT 1 -52085828151270098492520772.0982577040093256100407804392105529 0.9297927437850748023332934689526833 0.0054263526488981270751943842393800 1.0054411287783343671821119599641074 GT 1 -7893098064294630078674881809401.0209155939118643340656841602084927 0.0231371498514800875061409369478011 0.0468507109986305531163037108895836 1.0479837359686401552855057385817326 GT 1 -15401200.0033703018768845595053669771576895 0.2617323629706865655117879574744671 0.0468877241315082342434400784078750 1.0480225691839390844808227733241661 GT 1 -23377639091595535.8540625862619874202226759016277805 3.9989180671829050852471877218227714 0.0416164111280219114090046443103613 1.0425071752316900423523449991397704 LT 1 -11175898834.0934274938628439407184714326009058 0.0801089274361932988101959464278836 0.0629659441363421099570606648545613 1.0650356517652924266872521284263778 GT 1 -299386488082788.9070166930319695721402621787410488 0.1465968012278540044263535096976075 0.0801789250960485135342241770445094 1.0835761116535304381024705432494666 GT 1 -4642626610529636985293.6886600267504270798409924760873009 0.0411791849338677464091512321294366 0.0732790541466270326298068833591539 1.0761027880190792410417124973317249 GT 1 -3494472204894770201142788630994868421.0425716586690814920304625464991745 3.0023863654877291319667436599182887 0.0698580632721017752932413306278476 1.0724180843425787937444631383137428 LT 1 -727333541485776977551293893386.2580403552793054145731763956368853 0.5242754690116729095726690335298273 0.0714106332787799819490987707441928 1.0740886543328444699518777233495633 GT 1 -5396429223723103145068312239.0196759624810475137179030955546142 2.6231648265035461870273924873787976 0.0120571533758047578714266950711634 1.0121304304538641667450404346552540 GT 1 -131216491181707864298210051332919512.1404877507041568894131176130385465 0.6340979249165951404204607175482888 0.0890343319628364000652012692398533 1.0932500684507957966017265944738117 GT 1 -18837695340471764765132002484298635459420.3736542853707893664749187691727199 3.1174690274673473477059791639625920 0.0855103402858805902025481132744842 1.0893891182527366555973165536033323 LT 1 -6047547885580190220723662064705.3410119477673310093975144509264281 1.7354189338428332428796777960130104 0.0998274471253729647401035878348558 1.1051688086185428079126792508723455 GT 1 -579250683339718245690967746.2401245583642184735746105301841443 1.1989200053595175405986315691034535 0.0509325911903023803329262839308042 1.0522754514831264404098357612814725 GT 1 -4104591477292294383.9993874927598349744389778709264589 1.2568712765210599291846511182651020 0.0083363968419513412452421625363419 1.0083713389276762660163976477741365 GT 1 -42124289701.7314265942007562008263094174287142 0.1386205266544846357337093044052795 0.0955545758657505628161019215528865 1.1004333141272410230468539641805364 GT 1 -17567905677337.6793490763113306537991605459261737 0.5651615231796369654019304615023586 0.0839055247495385449602968342705045 1.0876357807067417295397541674476205 GT 1 -327673528448279106325894461939526152621217.8845809573205171873727827811397326 0.0321779936497324026201760049018772 0.0854181594736927297017574869528429 1.0892883230544584171854476470826739 GT 1 -859102.5088302460287317482122753314024708 1.5613697788424882835983908790143077 0.0021191735679273400272828024822531 1.0021214221936132402621406562659316 GT 1 -267785021542906912490519.8303733124257243753914451929741911 0.9909246444170684272923253134658938 0.0372845018930031224850729728537579 1.0379973437436099355502900380174696 GT 1 -863820550195843.7556965332418914830523831476985094 0.3184866958711285582513938232436113 0.0683207210951389126375371332082522 1.0707666448665991382636613111600422 GT 1 -1061594646103852.7592618962545925498299421869182402 1.0590491102479971651017651237512337 0.0527211785257468697854738229169629 1.0541618030757265222682568357809331 GT 1 -8208963540614387591.4780426949887730834906836074955252 0.1360536248556879384089719382181973 0.0745421957171444976257153328018320 1.0774667403549431752534739431163954 GT 1 -3786108.6856547772899517700753947460727387 1.1872984411980079101847210316159593 0.0633900185125193284029570196853067 1.0654883251386385066551458262730664 GT 1 -328664268522441007269.1179208910027785292983918001684883 0.9453757102118532109788397725026794 0.0298857401180601598879751353296740 1.0303414207291193221460320163582515 GT 1 -40181271917420479382.8146589168701276749726151581366485 2.3573643279779724536491100197554788 0.0847342628187070576107802179038541 1.0885408327223008987846898708644649 GT 1 -1679247442877046.3465618975391600007045470264079762 0.1934938662797914548198468924375313 0.0987680386929781185799051016300120 1.1039926057766031757690763375751109 GT 1 -82568309395888961391.4340056819779848569104413358979422 0.4322720056880473043542136059881417 0.0168122215763636499063905540046644 1.0169551512147748272949780960534662 GT 1 -195896489299596490360500880215199091013373.3822486691995170243385256009516825 2.6537711664287264981566298748573320 0.0742633403269547439571018899635385 1.0801427244313170727561376645005929 LT 2 -4117239010511879916531.8569679388635404103076840137816736 0.2597966275397008129684779043187240 0.0327434967194989714996715841717730 1.0332915619498333358357999598411601 GT 1 -1417324573997574109947068917469799.0394808338637513155294036869716312 0.5815311750421112171086081389110819 0.0103833582546227244917150986827182 1.0104376414068401766474524402696250 GT 1 -212335632428832216451031144268496018.1201974389454344672543930440753529 1.1087221828506549757503128509534947 0.0563576379711761262336788502393786 1.0580080384028871810808895921801508 GT 1 -12271641852521782742490133.9072064344632288202255720959319966 0.7426067094024764137868116584394369 0.0912723714713197651231551470356688 1.0957098682875777226986693724386183 GT 1 -7389592903787319745995307252003871.2009100386774113161538959253144071 1.5273303135113580840027340495509857 0.0736827055987980348989688273659679 1.0765384524859928723069049655241799 GT 1 -26296792670916765467041293147754.7195657556930537774109411104456684 0.4092850692861698365339853282513319 0.0855935896385539486981365569581592 1.0894801560695847344355145511300176 GT 1 -55081921.6742759378747510669024516676931198 1.3347749721734420568065912477210416 0.0604886429439077206151611393648732 1.0623953717971125351431233949980473 GT 1 -747345852145215727862413453166988.8240687494019865281528311053611413 0.8133861392046535119937537118156022 0.0635330832121107204889680311197228 1.0656410841631092302309023986766789 GT 1 -5593158312036592862449812466112655370.7074064184994103493507569748338722 0.5156929070354800355230967904735593 0.0492825715195915738302729578032589 1.0505383915243168577839573082636897 GT 1 -1455900875611383503451121063.6901482489114847998072331192981022 0.3228676382659393976933734561507892 0.0118115142097678592312543885613116 1.0118818243381947977438277883068690 GT 1 -40680.7829962228807759001335343827779566 0.6646805477940663636015819300277651 0.0850904181199889895846986536774967 1.0889300362068724771129443096779979 GT 1 -12203392651626733274969061.5360696259213280723758674131327170 0.0654963061977058631330745360419325 0.0186505237241466186596470628696180 1.0188266379274183449663248337157372 GT 1 -5632038478224765278192417277.9912815112036632084463166468768306 0.1723695859337502174965829964633030 0.0140108699693763222880007714108031 1.0141099487499820785483071661740085 GT 1 -1641105649764339995876785723896954129813816.1214551351133558545169344031546506 0.0491039153883769504811762052557853 0.0220782891268832108819170830642541 1.0223256623834974595685053103972592 GT 1 -747198229225.9869413382512822116253388479575643 0.2048982021427242024285329150467919 0.0165935361888866689910792657249402 1.0167327511042875130759704085293812 GT 1 -27600003217164731578.0262283571573236067123431135459750 2.8146687350697165267910904612453335 0.0899210273478834976015383563985867 1.0942239001024857090090248734492816 LT 1 -3479159630568888054136157380305031641278.3146867534428906161862186823088887 0.3244830042342782357174282450916411 0.0155741341819274423544023282230794 1.0156966850911433815854520983218220 GT 1 -47945470681189588857935553582612423116895.4397428646449194484698170666481245 0.3616143874598555983560737079709222 0.0126567193542545288756853453995461 1.0127374979450854550346935388119352 GT 1 -3845.1418908346638804447215833562785967 0.3612497386504901568411078154769418 0.0831833544734371051013026686690699 1.0868477770711212779081289680019028 GT 1 -13735127815716877202326625.6608964572370929279122183437172698 1.1431141097724858086213783168867572 0.0835712943228146169176417828681077 1.0872710044966412476941383717536924 GT 1 -7280813.9703699750755894421765034855318809 0.0414065021698008397631549831540383 0.0723062951736671781135433059204594 1.0750536601319293700072230829739120 GT 1 -7190018.1218645842355988596523661720092349 0.3280556947878378256481571413809974 0.0640952718307905961854573598990385 1.0662415938291131506173141741920851 GT 1 -49606399320010282.1121430327841453509715288152829239 1.5563965441943218562689434351938886 0.0688625590599207423237102230660489 1.0713483853827651699807397920897302 GT 1 -83064725.2233695245706913307225523717897072 1.9513995132851313376059183602511290 0.0354050188840353804738400837774159 1.0360469744336145408831600974274935 GT 1 -358894855009001312087388.7549751622577851954075830465836717 0.0195816729330892700558149850776254 0.0608205179494420491606349503705118 1.0627486763452353199253676346303434 GT 1 -11904659671108201900672390858395759.8562957397370247374735431895097761 1.3690302875696808631339627056471617 0.0390485678076103130940357834176442 1.0398314101106286895816392348415102 GT 1 -9710855534485174516823283875559.9963289025993050160826257773994278 0.0022404508893859378240049940043489 0.0506392237230832906776140218523417 1.0519663879411300738747443085396697 GT 1 -14321021789.1142496854744764382107779177144890 0.0260326688837360611738842793810984 0.0836791527854511081179740524761387 1.0873887057533032173491115519702858 GT 1 -1178676447973716221.9375466219418238207389070310538220 0.0363263833222727742605905402927077 0.0314913666684194021941945547290189 1.0319978820482496013349440403219309 GT 1 -432753823807195505135.8347382357339456096948591207272665 0.0695952518619268631899274499883311 0.0823788497843806145681575690804830 1.0859706639386933714690811122743651 GT 1 -5066491187963731481.9904505923833368730242565729058629 0.7987103804558911020029862612958980 0.0758888415546407145581507953359863 1.0789229132282883004570073745142182 GT 1 -6809898602659493430512965648213814.5409068596492776846069411214311007 0.1422650490869697565586710556465257 0.0392426418310893310722744319228475 1.0400333907906487047638959778433962 GT 1 -66799.6902449802869404131475931196443293 3.3853097272718886901370883937490573 0.0053258291765039665233536910183184 1.0053400619614588601664755151794348 GT 1 -2369.4374709141316717123996411579944231 0.9618887556694376321884227289988360 0.0551354619207128130873189575880875 1.0567137077112508591480834766404801 GT 1 -6954868068209800810404894.3920797456972599282203416643925770 1.1575614483220129421683580935622223 0.0362712248630480179577045116394544 1.0369453775513124068355689927857568 GT 1 -40284722289504984924810142974028294577617.6187418665429011851490074666358768 0.5612925608282567374371592432129127 0.0398726909979379372435768832156863 1.0406893897688391635476209558972056 GT 1 -4719104884230875.5325371055069458007415674485552484 2.1867597714005737200605970879961108 0.0220987402182585649193276549825228 1.0223465754126242745256675516788517 GT 1 -4320131357989135147209384949856100394497.4554153074383412456691337782272905 0.3192232676753857867389273217508520 0.0619302009917637470031669572505269 1.0639309201556537106576809628778888 GT 1 -18254481614396151665443306049527383229052.7437453009114352316275496928341109 0.5442379428795123503145060602099571 0.0730512633917078395122089270266688 1.0758570152600801129346333129788917 GT 1 -23216627769948622068.7290888500671181768396946230265978 2.5407017730813540971339246674187605 0.0552411579534580329548836678531779 1.0568255776573651083875885282338304 GT 1 -4468831490145510864394007557679722.6100584417247315926882518982993019 0.0009423053989598021445760768985193 0.0340650906908267035734767973888682 1.0346588287073880644220371525386536 GT 1 -52101.8671509684264252206418257256794032 0.0789570034942134436884637925372372 0.0828775748687095202814858661922905 1.0865143094958310344925139814978467 GT 1 -16760920762241.0642128690223263736577253994689451 1.1870662733652784145250118970025346 0.0319676373139426256531745790555889 1.0324897597374957327039366231521000 GT 1 -2985263520381974001382189736792235497081.1420828200889796615445192079315888 0.9300621540976027657505651600856363 0.0695899974724421361566316698655828 1.0721299270534876789485354464954044 GT 1 -7171421680930032388971467128088186378.7051949326763267112554912461468991 0.8178962664953845242110390729235111 0.0478925737494434680734113660883521 1.0490774078568658849857696110477590 GT 1 -19284209678014536790001499859763350582301.3022223863341623510034429057351215 0.2686814346593705277621464423508061 0.0096877494861101474940465285239403 1.0097349810235784680040751803553153 GT 1 -5907464821600404343225430234847.7616472028781003741381305494221921 0.4740118400087625464914756100437955 0.0197749074962623630354205719271882 1.0199730474630590782990348466009053 GT 1 -155362546101796522948585347107928959088094.5399479098559357216598950260985977 1.0025463889914773151120605151007536 0.0639675983585971428318599441256481 1.0661051859654533921081532068618387 GT 1 -757621.4981635745915934332450360289138857 1.7933117675825772082041334781731439 0.0894466308994919041301997081598335 1.0937027663752101470302143094596413 GT 1 -990108667420334177495734651804454065518724.7219710318323060066685446244287806 1.0416368423630191321779993917157153 0.0043841091626006418268685341340502 1.0043937475499864182174430649639205 GT 1 -3502426163939482326179890934016151.9907983608835670395189527124655855 0.5234391127354286740549582164575536 0.0355783122059625790233406793544369 1.0362266445476019924353845695874164 GT 1 -22664437326719992706.4163584551670560719622059675629582 0.7858700504095018825428440758255709 0.0664506292191698259115874041029869 1.0687614295779497885259750128438683 GT 1 -690294891936605919534290264802.9619570020761703110283664555975879 0.8801505381303972591288664177720661 0.0697145082280814257277122523618803 1.0722637595437652029036961304435589 GT 1 -642327794775094129000168.8710064412227125068449426732414147 0.7302866113383104977526562335164221 0.0872980900228014230633143841628232 1.0913459467944647352301111999655030 GT 1 -12768881493910921023935145552217431355.4972913346300025856963083793418944 0.5296952322318073857662550612654176 0.0718846872253187819965983289303989 1.0745992944600276853993534424476557 GT 1 -534785043899738333238395849304389.9208823603157919854625603855576526 0.6582031148667128482367388093812895 0.0367935952094614536523874531984036 1.0374875549578500414510411002378968 GT 1 -155139085555988386809130297980.2981997956777458763032908822106533 0.2495776024653805052810702412428629 0.0818785209115848847728847363002260 1.0854255669548378470075910141256131 GT 1 -1684937.2474339041083898541185196164907425 0.1174334308858724251261685672828524 0.0514380255664228319194724757425663 1.0528081523282291562495192783263457 GT 1 -107781.2600018605589057941665471271984646 0.9529029866726619094864682999269034 0.0673107996236783246610540644097907 1.0696832521988234617757056308004190 GT 1 -46527585870006563697286884.1060279410553078932432550630641315 0.0244407619154521494141999353886045 0.0897409431682551818654776647354083 1.0940260421472059767221958543556816 GT 1 -1761213456113128018070682527053863.3088882919208137102260275201979985 0.6615873560868181061728558822063574 0.0953328027346783383148268526599970 1.1001881407427210984980550761480921 GT 1 -4197022071434714392174463870431242.4295955282360292847817746860024701 0.7605215046041560769950482146427761 0.0502364729526152923955765506824257 1.0515422442704910948310018102399235 GT 1 -258.0302712042920282465247380278071209 0.5381539293702255557832555292964774 0.0675308994596400209286053445518919 1.0699192641629287954967664211878607 GT 1 -55990171601100258637280425279964063924913.5914148004821838570407180467084982 0.1290647574072868591881800676544034 0.0776491415047369948088244019307365 1.0808295871454659001084247990466515 GT 1 -14779174690238745250636647.1857190703842113479738758897055197 0.2726111441411627827740217320131206 0.0996368677565647356395636421102935 1.1049571167636185968788872273893534 GT 1 -3057806091180.0241348181068342584196686509346045 1.0453967496939404149487353786134484 0.0262171556181009296920928926737394 1.0265669525771590145708707739184842 GT 1 -3874349225536323921594.7458726073791640682098150018598203 0.8248112310971470935992681993548254 0.0702162910598861614314870849993445 1.0728032909158075143151860568204961 GT 1 -332.5115382803141335820512602863975161 1.1619852191341888773080943395882906 0.0173159772954155537521499827350298 1.0174676523145810909539789166699320 GT 1 -3267344766024541597.0781083827388174521504880599598358 0.5555661564847150094714397596821254 0.0325379901130338082254782206970656 1.0330791211158418228743915040762769 GT 1 -28175474906044194.6986781278224700252362955748172790 0.1552975202356185800651922368662474 0.0233370333673903321736208595454433 1.0236136540770849596211700360631969 GT 1 -311247221763767.8150079960720239671474621262616293 0.7721779460474955760273055386214504 0.0761511277686272163796020461787524 1.0792067789087074783763065907030668 GT 1 -421545617753263194564885976.3757940552507830841391226143663818 0.6635368770588827710747881206645285 0.0613038550337185034929952037952224 1.0632634464269126622515556794043663 GT 1 -1562164268200005741751.6819047446932549014483055974423426 0.0509074583811254864730236383954795 0.0172451761273181456384650551054298 1.0173956061471296529425506605019526 GT 1 -175.7391005222768993472997869246030187 0.1922838544513916808548260111076354 0.0856949721414008006856467869840124 1.0895910346924574588609541678709008 GT 1 -44999133525919973041065307739.6116794235662468961379101290611250 0.0810924276539288530244922366919608 0.0513313349403011117753952058882206 1.0526956824745241995346662639681556 GT 1 -220840862570540460602.1625261294417961281599437088638474 1.1177944503463899765799774923678884 0.0260117399547529422225652549927627 1.0263560287538795222123217907520061 GT 1 -211589013098.0684851032136988166311959337223818 1.6219382534939097835153469162312941 0.0035852854266151894681369484038949 1.0035917279659147838507023919686086 GT 1 -1789.4421926642085994173516284074680351 1.9022507818475451332188178104578907 0.0731723491127273506624477663720706 1.0759876520747558039070195375328306 GT 1 -5416228520928665862.1497191087635849734970953557779850 0.0588163131326164996968528030322665 0.0035677376092846827317124717803091 1.0035741171633455945425149273368389 GT 1 -6830189335307319123178169064738125895.2103608586975187969301254687976194 0.5080317080672810812857819204010490 0.0768742992483865476763217654294328 1.0799898665887365645165401863816330 GT 1 -9767928432056.3579755127506812894993370507447667 0.2265646721632798944688465713223083 0.0578909341130928746278953979102522 1.0596342299116073210043284027813520 GT 1 -173674306939.4727413501222384253035459095626175 0.2527250209731442764937252968014811 0.0523813542288839952895380302835379 1.0538031300536975506564989816788666 GT 1 -744576167996784460.6523642705607303665590397518047103 2.2470425009569261109397096839733305 0.0256977975039077014864245992840267 1.0260337539600554687754015294609619 GT 1 -7961101719.4110657027605179636957163497763031 0.1358172323188741452288786535874666 0.0562179965594983533327005831028209 1.0578600680635323219625292349333268 GT 1 -164361112511192303132120913696662122993552.0665991821089866129457643025787547 0.2064768795256131331014013676234385 0.0237453414401609236108728188643462 1.0240318059473460285851746344413779 GT 1 -355777209.2870058832584050182799145876613792 1.2454111270018577274847394594973445 0.0093360490779829293745772043161727 1.0093799031467544088080034384890733 GT 1 -29831140829740562.7452722047228527043738280499262111 1.0185105926006821038027184471963875 0.0386085085074889270203404468512878 1.0393735736836453761477110323210941 GT 1 -314462092.9768798650942116462454870528006623 0.8527582197089593122137601627749493 0.0835910949416813899736364308244595 1.0872926110140452609485231249740494 GT 1 -225584425147290296994977200834247768881194.7297237609001668368302641090534997 0.8384350160657907424503824702378203 0.0932860457119446000839360693321763 1.0979282542554857197230069887373915 GT 1 -7651976665591296305655473287047.2501729155369069909564298808223384 1.6603450440756664761965918686378349 0.0890665054985586258885022742907612 1.0932853871296635558906112154908979 GT 1 -2414382423662641203192877.6630395358733471371183994760632222 1.0517172559364076549258884061709998 0.0879446567603935652696450071832570 1.0920546073722058440830432408788110 GT 1 -2236841781108053169078502707891851.8854192455406014946025936863785164 1.2375336448646688673030090583823778 0.0351485403150314211631275986975108 1.0357811172788462004452879042393277 GT 1 -66773226.9668675371664449244124912395039508 0.3588249211996677787018360189333683 0.0229393436469679317648206989374939 1.0232065445747620514563234656399820 GT 1 -1353049244185805913.6172124346388187599310722808186588 2.2625888050068775648539443532696753 0.0126323261398706320306615284658493 1.0127127923401163050967028878463545 GT 1 -6377468380747638729987933.8962420508408144396189261011084300 2.0431154412204119021686649952749101 0.0838523832030181040640879739771435 1.0875777735833752329726229054664450 GT 1 -15043155810681929161477995561822609973.9863080770323394381017703672103720 3.2805082850722027662450812141114344 0.0122589801006740309294779620691972 1.0123347412031607970324456114757286 GT 1 -432459534.0544340381621489294037586565993898 0.2502782025989981834241690020630853 0.0262213139938155791798047931115058 1.0265712229179413437254331993295826 GT 1 -1024903080562897907.4403076097330426329636213301982048 0.1197409640147753567668757221635581 0.0691006926398696280854649342981848 1.0716041629139707569041047450218600 GT 1 -1433196870820598870814943449662354.2680487333672905232662225142302123 3.0400133029924401405308883525501183 0.0659358538312133499877501433849794 1.0682101641300174206117974740382124 LT 1 -637050897059630743710904.1364271559227995376616084384679036 1.9046479988654325718762291540432676 0.0368532871448685638470648479954585 1.0375495289904190744434134098456146 GT 1 -203761285600.7682393229604811395984543254003628 0.1435568404142652050365566033519076 0.0499350393090361583458337822270181 1.0512249170506351380554519799787117 GT 1 -701805396655835386697512197492.3665199345101859266834915369283068 0.0893064324203832152104256441699840 0.0691308985067178342427512806472764 1.0716366114899668004302421716187853 GT 1 -4787597394680955334174173.5955074383604521210508690208899886 0.2499559050852076163470418702274200 0.0788227097475728925664809683360396 1.0821027636924695449375537356735705 GT 1 -2535143634727517565436922309839.3035466890658991606838670483096716 0.4110890390041853997533552775142703 0.0371654267903560975011570321376177 1.0378736646925454356855710863708529 GT 1 -85497620558386676.5090250151539290336421146564682866 1.1037094495456784288404998077024422 0.0879813411133268552126593114489150 1.0920948298115317416792239556823882 GT 1 -324511819976702742287.8433157378194275103393769117731307 1.5269242541465970266942147462882611 0.0122119194836060837336390352882356 1.0122870976457290730956014939946480 GT 1 -7358.7738154434307533451239511189464024 0.8381139265724590977934848620649012 0.0719451066915581926711428370815433 1.0746643956733353231547213853822074 GT 1 -4212765537244607355.5814628147329854008853362687510401 0.6818486424963284471431876997771471 0.0281257933801198192190475764055733 1.0285288999545444282050061547376411 GT 1 -19386676659630742.8421775584945575835716985731052209 1.6348082156595414417555758038680980 0.0073101717596684927953686884288905 1.0073370219985104640534111039090879 GT 1 -145191831.0611966452753004479784165102999271 0.1707433984380805949407450565410694 0.0304787931685047555218295707339046 1.0309529305505294358427342035635094 GT 1 -409836738207369894189465338802.5843840932074844382462363758368914 1.2779584734942145044018263078650395 0.0229294126565389962554976859138700 1.0231963804770730597511355759299084 GT 1 -393234.9187137965696355755978102650144932 0.0702073522313850940763920064786385 0.0003061200014250672446748778315112 1.0003061668657170122500543935959034 GT 1 -777463663.8164946933615571448208280909554903 0.5001315574648027671281538047346867 0.0904355940809788142188137066403481 1.0947894688868653141576901777556884 GT 1 -30327863408591390946449859284.9229662909558809217640692753959545 0.4499555878605307324981867814991785 0.0318209048828726857660102797266220 1.0323381932019714345628436265516254 GT 1 -1192471174660942304887706159771.7924784563770334285876896382301520 1.9944935077576075545770360301036888 0.0528038551577173780531591830458135 1.0542490849173902785829015143484179 GT 1 -9722146.0072968311077376819715799236652844 0.7820054029141497026664733795363816 0.0133677223722723189188874589445225 1.0134578746952283473044593159425391 GT 1 -896107822993703731248.3143327958445964954354459357932864 0.0336364354496929370777714796068915 0.0359479041775857297411068012718214 1.0366099445222120290884561197863148 GT 1 -148810720837.5076200823203959738974080652588917 3.4272286255723181782357517399039108 0.0373459242245204324918534380553625 1.0380611469036591406463504022370833 LT 1 -23929742429451486565334030658654430.0849216046075510809862119537137141 0.2877370937169485145482507860152805 0.0376739480251921825710569209764492 1.0384019543739472617105221597839060 GT 1 -10917551041587579121231813667.9849090639948864942802503752159805 0.4185434274463507765372357631320136 0.0057292360956318745501852693911218 1.0057457111251093993878868003554493 GT 1 -3015103931797910380635398377059065.6234901515438842998886738453385559 3.9676026895904372805166406046376301 0.0855872775430955508912917360440533 1.0894732531502690386857383097262036 LT 1 -887316279.0983403539985227468341430124234343 0.5698572619824493647623700320761579 0.0702728460066679041527834142403327 1.0728641186828579988655663041838288 GT 1 -86123182474871166549920.8922174151437537701265636939044215 0.0439789767189089883398503164391681 0.0308803717971950915616864263694918 1.0313672193936992794383396636095536 GT 1 -25547646459899529730303965112.7555457346802870862180499144298897 0.9969991554585426916108514843636166 0.0380271568373690580955496997963063 1.0387690582755668056706178971840624 GT 1 -234787.6222781485270196612505370818498104 0.1464618287113445356778970198668780 0.0502440226287773658701054280455011 1.0515501933082814953925486772384679 GT 1 -113979764051038708972378612312280655.3736516062728251643665970788007225 2.5484948704236399917327448344695752 0.0443935645493999161449982327778225 1.0454091290925058812989908615553628 GT 1 -114492619037395939042329508.3006150273999224197220544860028132 0.1961153993673597307191168725922836 0.0620281856316745950197582908737752 1.0640353790752227600842939618082929 GT 1 -233194731367248485792699289278842183491172.4488368123304537628294129114846297 0.2398918193910331308717947965702173 0.0266426758818838041533604859765945 1.0270040246251201771984972376710991 GT 1 -814.8974308112365206406862006300502819 1.3227227035075794155204044375643653 0.0585881783077580962463952559059306 1.0603745925283555134416993117559772 GT 1 -4090938388966213997004.8219572983437406425978366593814830 0.9452320561060202388441955545256201 0.0603793328335127641519993312559729 1.0622790307320790930789716428485188 GT 1 -48146245577130611.4954064274041967392860979873455744 0.6667479774760077104646365193619530 0.0686588328489191398446798223590177 1.0711296164681273528182543851781643 GT 1 -212.9805522390449992412151583899873326 0.2941317544220990212531410701774294 0.0116616436715747801259977693598286 1.0117301739428784797421474992140522 GT 1 -9361.8607038953521301183666605149656071 0.8605822781979585353296161983200516 0.0486235515527614195671042520580895 1.0498454499180227841773563681043126 GT 1 -6365039565506355238102662794948.7112279300184491001205456366082655 0.5752364971490666598331996888048696 0.0165127980089110327123335380040599 1.0166506539564602007434079872585947 GT 1 -60927.5467878331316489339478617348544480 0.2400686091276603479648557626393141 0.0242292182845178179215010590157105 1.0245275749514626235814553087479626 GT 1 -3095783017711.1405162716696441638527972490408610 0.4042253204466300318835981626251203 0.0278013826318302596973284372041813 1.0281951565398967552752317093421882 GT 1 -67724156993878198519500226.4858401645281974018950548132182404 0.4304159874023471634312259487862684 0.0574093097042190476288676135018104 1.0591231411636221804714025266598806 GT 1 -5272284906587777.5815291063133823569631536020687021 0.8331749601040708658089826533935174 0.0112298059726389188778328663174484 1.0112933363137808300843887198913261 GT 1 -2.6023668478196071779271550511743415 3.6827045378996654574394462086143845 0.0787057009948677945317066006189726 1.0819757508760498909071945099237114 LT 1 -264828155982124275643651229765834013536.8550171534882864257222058509390896 0.7996112258426673631463740335613322 0.0517310262877465042828725054375144 1.0531170894255919630092751794997020 GT 1 -463944518996014.7850699404538458611813136193956499 0.2817402763141941128781472998240857 0.0665445298702264264081800630666472 1.0688620191951571845985192693660482 GT 1 -5768319724170892645914223085093462712197503.0784448992585268567461395391024437 1.7231920448513375529888259084956489 0.0006284918540891929985341286960646 1.0006286894378853961860844316040641 GT 1 -7055222993603625926047.2609593144020598461100402396221051 2.1704135944406482056990428670143848 0.0134461300862487888490084577077647 1.0135373479006483546739899204444539 GT 1 -124.4589007586104937713411357402317569 1.7569624387428907859854933899041243 0.0859265228300077092161080726052761 1.0898443199823555539575291399468026 GT 1 -27175349233961594844077.1510835394808383147151050208413923 0.2521652612652130458236371978849062 0.0347438533397990392856849862422047 1.0353617759117304591465209433759105 GT 1 -92676024.0708613961077950772049309361353765 0.1051034989798479640773715949890680 0.0226582491236771112471456352075950 1.0229188919151160229895349303941526 GT 1 -10590421463565302254471666.0863068561787379641612739639803093 0.4640808573744927595758152814170538 0.0102162309976663793741771266349576 1.0102687748587218378506569172413694 GT 1 -61381537729827295552958073332.1284526805163630264014005497237472 2.6232615912285770287278008107509125 0.0538409090392476959480449268858248 1.0553445518066768816370451205696045 GT 1 -7162353426474096.8519414928575547412099653524873259 0.4685903596163933307700816732832949 0.0617665307587541084407723415581474 1.0637564598365844332510778000751676 GT 1 -887966558775735167044892102098514.9094343602044651881725592196410272 1.4049542336804621420274871919588628 0.0514151686869693213820933746303677 1.0527840562705225189240998516396864 GT 1 -1083811987043463947395372634199836943.9212993007828947945634456983135206 2.4340813962551066651780245961775297 0.0018146283815121231114207847532059 1.0018162768140904980183459150439036 GT 1 -4567.8055208995020687073233643501074120 1.1420026400900890310708781814899936 0.0422974400495684582289463206892052 1.0432180294389947240216612672678810 GT 1 -230964774645925.4847364253841174307644959029220768 1.1075158080234889078347719303689390 0.0139168632592001265609316902010549 1.0140146107526567537548268039156049 GT 1 -669930674055413267755.9664090819897541125172305294886871 2.3184271404575434141009691031276291 0.0293877945350936569069483258458457 1.0298282669150351927560784170997824 GT 1 -20161647394107019865042322470035806697958740.3263409830134119648638932243695341 0.3425575763446514108199658491608448 0.0235074887414520123479824528319930 1.0237881976568705000460902514318073 GT 1 -11007732288659606361202754512604860554.0051641843295455202305679911277405 0.5364250232743207845331263524329464 0.0772881970975191904534075611835445 1.0804383327784745757757183100231634 GT 1 -72290991266432100508663495292290311157252.2113259703658077197520318964832613 0.4866263802311103432170065199831674 0.0095996577641929518281055279942907 1.0096460314987481285451716333893394 GT 1 -207881010761199068350363180868603138419.1854793055636041884304812191202477 2.7940353739446376391612464740573087 0.0162385194544513878217695826005052 1.0163718091325478739971056038631934 GT 1 -162027785548064.5900460865463906666653952971017630 0.5818934829193658181189581500611886 0.0432470027794763100503863759628948 1.0442100219709906946594617341695269 GT 1 -1327726155.6701921631602702773583855865939644 0.7273386200639019913912143995230009 0.0153724688013731798082236593529588 1.0154918502384523209566832958503146 GT 1 -52984202306156701736284506.4796930479653100099106005747177503 0.5003450086061638904090787705912414 0.0053263773698370110491077443451276 1.0053406130901602853047352986954174 GT 1 -6970132041256186680354253893.9610380777662892639542022629985249 0.9185375706704848224922479883374323 0.0111917630870346310581392598818233 1.0112548621020744539624206605659993 GT 1 -189794125601.1361575362486043393310038882477715 0.3291269425008868090086439520349042 0.0957003017288841914852583337815263 1.1005944488959199200480508466946010 GT 1 -2187312302312.2856621460740228856221088402296594 0.3670962691381575306429471166068894 0.0866182647381109503972397619611737 1.0906013748600190096698513889566315 GT 1 -481258312.7931739036277162965494777156193779 0.4617848273096434836946642373095522 0.0813413553111595262560549659621716 1.0848406677512960377891472422508063 GT 1 -1750764395650891189812169260518815463803.4684362950610865980156365363241627 1.6173854989189281309327552601831670 0.0084696750145940887227815965121450 1.0085057465324516175238208347095919 GT 1 -2031139938098958711326975842471.9205463236944981000337129010375308 0.2887942873243502507067134087463050 0.0784132704267935172664814952716131 1.0816583884788100556306129773991560 GT 1 -811480353.3709201839527134106423877095673285 0.0746165105500110505191721575512690 0.0539826333310024430882510008403759 1.0554943520977103142675475286381871 GT 1 -4153690237.4376228673439126252248524411094062 0.7348418469142087927802740653174035 0.0253936696466786046181577151783548 1.0257216532589998652626169652404590 GT 1 -62863821950492.1517220828314183444167707113180559 1.2552802984930786474775332984982914 0.0856309332414543689532170953560003 1.0895209960779650092040258741901773 GT 1 -324070835927211901744898511428.3695213049369290578569131781005345 0.3883396934255355900112781559114889 0.0639715316867266961199489121474936 1.0661093881024593905343231359709672 GT 1 -2244177607.4238720723731222939760184081836226 2.3907906841738089564554269232123002 0.0537827023634024030969800655691692 1.0552830347890112866360156437578910 GT 1 -181.9487876507432000311305352869509024 0.1453483190788348104550261123679830 0.0547641531215023416052852543771948 1.0563208092102589987376110261636245 GT 1 -2741452281857601350171687076959417956.5207982153280431677353547586003992 0.1229154841156233013255083167432140 0.0697061332501580479820498941278674 1.0722547569953008490155235027230222 GT 1 -1226101495879478931.9631195010054944488416004115522220 0.1604457956089068592886322987736528 0.0620472523629669870143141401021851 1.0640557068982911528479284626612967 GT 1 -310981918241971725782591882.3539770878361798803054110211312884 0.0834659489743955335698069670880199 0.0961128292248518020597364018483573 1.1010507374689505677574089048025491 GT 1 -128.9594036630924700948019840236157407 0.2614875814893967630271724569748733 0.0808550350139711893148049018210292 1.0843114269706385992919868098323518 GT 1 -31856170513310735957551725137.2207881634333195001364229822919646 0.7327337632646713453495543659265933 0.0164576018879540265196432089531038 1.0165945326647738943465201779334107 GT 1 -18770036299776099456892155101112588024791.3160508635160290351477009277383512 0.0090714598603429910254572928960868 0.0648783207665727002034482222089869 1.0670786199431239846088407185569156 GT 1 -77421842627648591269324708143159208234.6200409642460230217729490530545320 3.6093032456443610969125246908964150 0.0318034790822893869424253817239225 1.0323201948338454689423652621491044 LT 1 -67325258833365.2564456439623623078086645875295130 1.3763966719213162227776959740132112 0.0784391119084074641280625231088478 1.0816864290778027508422790270009854 GT 1 -18771457936146195923271088664154287432000853.4426864555662899714864879046196019 1.4354949284882545351300390838109194 0.0280947844047185400629818600332741 1.0284969940962464003431555336146617 GT 1 -3560734428772183456201336571269074.9436738185471400981558648529381586 0.6725637570004424141253090509597107 0.0294032585905115864622791642697600 1.0298441993116410871029605371911471 GT 1 -53202952211484.5139744326863291435246674902817868 0.1785373673477236837148299844142607 0.0606688389113088622299317218258253 1.0625871877329490019734611607593437 GT 1 -11.2150548198558019650996636890516372 0.1204997319826572179954005688757181 0.0997430500403712301336736337897524 1.1050750564500400224124431548824226 GT 1 -369168767338420736924272458064809042.4700166082536592670878408818707564 0.9261392527428040102873886899742334 0.0985904182101186098480714118396145 1.1037955388842811561659033454761834 GT 1 -17349.2866346403866099639065020676923354 1.3538644285069263898946079257784330 0.0251557688312986370343144021820698 1.0254775836516380795897590985383980 GT 1 -262138.7199175949332191538865820175790021 0.1111346907965857485271730725746670 0.0662770978165141304426736698886002 1.0685755633755027464371118611746772 GT 1 -115365707808340353987584060455373622406.5348378487641862634944925234624266 4.2373627652432503725441553976410036 0.0283702354236231613315670571453230 1.0287804477243612635446297277895602 LT 1 -429481441757471774959243927165598231.0646829585136653716372237811449303 0.0454414641914852709067018987512586 0.0478653873064847749879777664404759 1.0490488542986473977551817464908720 GT 1 -2712850080386094890446915395926654151324.4346425390160572070300902852639185 1.3191620018800589804538094876349518 0.0136390039436983978297953694694523 1.0137328696247641284861704353027123 GT 1 -1596056402934367831429740516.9488675233706178690284658575950596 0.9743019110857811387648322854226651 0.0664152867658524710303321160349076 1.0687235721432597447053819318902355 GT 1 -4771855117048190687868.4510941450019040798783118235134717 0.2232364257590179577033416880436721 0.0411186584893824096597690269002797 1.0419879432341349691384641266348919 GT 1 -297334238642232660410435119494247445312439.6948138343414486369643696066405348 0.2884756836875098819205240971639309 0.0814118130573098406239895148914360 1.0849173670221526230966566639729099 GT 1 -106668495126856.2283842863041022731237578146350033 1.1220761039063882815461662168206273 0.0645764057805301147441238265526731 1.0667558103400107151904891908460860 GT 1 -122477002566268897044199669579953069472509.8521566873564330435127979984084185 0.0434616353607143144857722177987972 0.0950308826209881918872017558015300 1.0998544603075438594732652090353863 GT 1 -388886785759044146521498815132105134158.0363240715226371483199028906940487 0.1870035716953045339443020331387083 0.0130117227554927154611384348228149 1.0130971167777433912601297767582444 GT 1 -508316173704709407347523641715161372443.5918823346010272688252302739322224 1.1359011547566664313172504134841042 0.0420406558744379946082972326387319 1.0429499401941002452333643300059475 GT 1 -31405875712882484297617201338.8085137569983183852216073407447780 0.2737599172895668145271155633532898 0.0218343596016029970951057019394300 1.0220762568276708405028870184943210 GT 1 -10918807.6280229486559643086338513735080016 2.3554095490966831128416019733659262 0.0185660311873903557348569608633858 1.0187405433182347576886273406478344 GT 1 -18854858011796145405006011844694419255161651.8115253166948144683510140777299419 2.0286066430775444451774808102455720 0.0346590807294628320347395371624350 1.0352739558151534226171566040676322 GT 1 -1641376718936458791716.5513681797209925527180939520708560 0.0794845078433099740354234396122191 0.0849672080336526224858835177366330 1.0887953761342019090249670329746789 GT 1 -20836.0291296868424410225966000195602146 0.9525255735597813056236471174361162 0.0386337734806581995609512418281166 1.0393998536178607496802987453379224 GT 1 -1054527885907838040392006266.9175742799443493909030004193803446 0.4820735288471263871912066778302891 0.0003070825961205911530370087738966 1.0003071297556358359193906545481204 GT 1 -1637525398588707679349273878857385.5582464177271478634499804503793321 2.6045013128889070178010495970766452 0.0200939927458887332314503560559441 1.0202986228824627687973307430330647 GT 1 -253.4830005006414979990471538619682947 0.0829119307381142210140164962001008 0.0385015223610398341333040333757709 1.0392622972733702608651365914575991 GT 1 -821364542.1783949615354685311535021673338759 3.4396173433892881007340309001254837 0.0612094267887675525375079495172084 1.0631628563730749077946915043966326 LT 1 -1.9752510374752083699834695515314437 2.8346270176911095555286437248317309 0.0880087037731478748741038628073359 1.0921248325642539648452229802193784 LT 1 -6715983322389663026077221095539406652627868.8387342242637772711153465104425730 0.2478499349098537152341118184439355 0.0918156614327230507047871971899999 1.0963079049425554036572103659336891 GT 1 -6008916.5268495101272234594477973582464558 0.5603260556322744866467340785780619 0.0297008889179553884113440599050488 1.0301508930782279807675324535139401 GT 1 -34507.7326804924950493585680515535739211 0.1202368483256447612898601912938027 0.0901222498070152876490094256585097 1.0944450289429970047528257040988904 GT 1 -2.1940449793886807224238019213553193 1.6547318520031736312391277889649725 0.0328109232759346583249285186096372 1.0333612734549384147769718478944223 GT 1 -8392516453576993035027530064563412.1713249143452998960739714141920506 0.0176155311096998320143605785240180 0.0178406519845806732840410432076680 1.0180017149370318819827281014810085 GT 1 -2096.9012309277610526486074741540968738 0.0326409029082491072228166120987891 0.0338724509532967328759439550603752 1.0344594151352903245839059327392082 GT 1 -6269119908140.3710002926118061443838896550848235 1.2124172799258807968087366543544306 0.0088250932479577854831433963995173 1.0088642650166735324311573950476914 GT 1 -26540675394408040.7673813672650985321237857585653373 0.2635292258295320415818445007123065 0.0554818800750303811694306194061654 1.0570804075501975721181343620045016 GT 1 -3828244662429292543782918370529.7540699522582766908515130785864734 2.5572297199427598674423334078182226 0.0450528672841255614923756994335719 1.0460992984464372077537019708368105 GT 1 -3554741279386018199136519750788350105.3400082003174052594294564225301235 0.6950273591206430250149727352828606 0.0057497137855422135821924126645240 1.0057663070246698684509108064588762 GT 1 -7.1893147554581214722352845509767453 0.2773372612584798683013301673321373 0.0736432489063190460507662562535423 1.0764958581693283727058590110819664 GT 1 -669057327631403261660974349215842421.2274180736063119441279203142270565 1.2160684416018754414577603759796858 0.0503566506370545410356166549110248 1.0516687865991434349170937411466874 GT 1 -1189136979950657270379404.7279871627079587519342339553996323 0.2217267508763009922400478704321250 0.0923153094896837471739027718426611 1.0968582178357976352005256253945766 GT 1 -3287308649319707.2074763692217758203892781913802500 0.3770134319792591880582612064753607 0.0315310120665212311887566246365283 1.0320388173669359084497444431678573 GT 1 -1240519189050581032530589.4358823234498190935393403955036364 0.6833114334802739664789517325082341 0.0299817184435843484774880805414226 1.0304403606969334060468766993985832 GT 1 -11211709378387355552895033423823419703284.3086884770860990494620291044759069 1.5778975077468222962171982663065075 0.0882390976405244144521759093179829 1.0923774917454527697068431987331098 GT 1 -7545919.6873497182634087171761379185835683 1.0714798528578939178226867502723690 0.0405028883056765696152353295495039 1.0413459737584822895294249866137301 GT 1 -450057381.8950008808896842919706166688339135 0.5216911390073059732912983662333731 0.0474913611636913672385624946891007 1.0486561023779914865981144748609759 GT 1 -1437960392.9896867615299649816264669971578645 1.2586392336217943078854032434810551 0.0726159577874104222566919643409536 1.0753875141896514678712552248240921 GT 1 -1298869652533855786446026.4726404713351035313644839417646620 0.6517718593024279793441684147622898 0.0895244861776511363524663029493863 1.0937882732871946578050904535507866 GT 1 -155.2260602682867128728516305375850008 1.0448464454229005397833350479044676 0.0154408658594162867394898814487976 1.0155613175563805888309484415538119 GT 1 -243196718854856193115190588163659623.1081896215087365799347253662510949 0.1398809743687989886767994702081128 0.0150212553398011762563252213841622 1.0151352170680575431615102679012416 GT 1 -23212324684885882507060.9975461517241231372065712979621217 1.9967783060521575873673180216131343 0.0237994271360401166526220072070424 1.0240872086987357097342462966911028 GT 1 -108509995634271108936600800067369274049.5282836091357245232708937087527844 0.3658674476640805792155327118719980 0.0816975526205822945294604535185644 1.0852284792465150182968242656135776 GT 1 -1402824.0331142623071069767344736264874822 0.7145721326098549099215296274730830 0.0964243253144934535047770448570675 1.1013954151960837581732644024491531 GT 1 -410256.2307726599855189653184237465730123 0.1803739694169312789578492768706236 0.0872731333458505565218259735090303 1.0913186034357186584913553974647415 GT 1 -1102011205988830.2590844819323805043735636398525791 1.8584703340475239592875898653845834 0.0605940535610179091842377121070596 1.0625075753699091652152549452991135 GT 1 -672909791680466997793822.7916274839972713054412577069967411 0.8972039347197505588987198410503160 0.0752716631806126830881130105986874 1.0782552745300303772247880184510278 GT 1 -2910273027960769050592718314778411245576785.2876619335826867687892915114296263 0.2267996554620225974355833325742975 0.0478471724460234100692975018781656 1.0490297239299047954061610938978684 GT 1 -1359915461596262595566699805768.2277638587657472304220308313534274 0.8966850269989850196763516715905556 0.0577327949414629953943950315024713 1.0594663874541964319607166220208674 GT 1 -1669778812697963192306513500851.6334225401454932674828486038323995 0.0796164101310313456719520788064300 0.0828145161235542473011742205656190 1.0864455546865970433464602251989163 GT 1 -1497142.7087437063669149170333463362292334 2.2971950743535668177413599874180212 0.0732244717648649198326695221387599 1.0760438913526534440983534900038871 GT 1 -1093970488517823406828843760069860016.1652155124288174771838346644659758 1.0984080410537144089241047153399835 0.0008367678555079103655174013213585 1.0008371181411487241533981743728579 GT 1 -108715764294.5948649687150526603553470381248073 1.4113105239087815023065812284416689 0.0409662426854649836667483031601347 1.0418290041816903156369841634793731 GT 1 -666134770114937695805343058124.2605440181952641144522676929088650 0.5203972924034411478713537943201887 0.0864614327440327748746894286393636 1.0904296848369268354682067902072268 GT 1 -37143205258108.0862624207663159013444450246705940 0.0253676163250638070111973757548384 0.0122210217204349844778122041886566 1.0122963124550046566402484445193044 GT 1 -50320635692162838.8247698046183195647118181363410846 0.4437072147301726954524953562249063 0.0416798480789624339583958491418145 1.0425733690305683595990805633891544 GT 1 -187432.5475984519730244936582641670252041 0.5264402085016539800380907622435384 0.0547448584895536798490407078306243 1.0563003969130644224458777831250446 GT 1 -186113736641027702531659606870.3735763337563996998989292818909796 0.0454139997813697625132741565348558 0.0938413487433102091008952847279868 1.0985408765070819684560388232582751 GT 1 -4681711455773539505.6853903462653756207313300732741479 0.2143068273610818521710996644492837 0.0948443244424665830569540897508990 1.0996483328848267705575735437556524 GT 1 -7162619205964675920122118601420965025543.3548609481915241381468721369499489 0.3795261855026621349101371893912772 0.0142704767932961700606800448652483 1.0143732792459367248445745159650809 GT 1 -292245160265159506.6369216192205811052393694934939584 0.4009245857590009500252742359425742 0.0639285882307066724737532444904747 1.0660635107895185214792342361640223 GT 1 -164844183915062877406.7642045838554162737279462890185789 1.8954687634835600034268798656328582 0.0525028410523107462147597225817573 1.0539313405021468398631949643680727 GT 1 -320371477.4833761171013697892127568665784564 0.8497869452094603886541073534616486 0.0120548901454917576463165051529595 1.0121281396050277432527826090886858 GT 1 -109.7273829379230338086421583297995500 1.4335789604596660190482940972966460 0.0252498096442720395901658075994782 1.0255740558327318330333813414150529 GT 1 -22579368810475726.4562703020708330066128961462422601 1.0117784727326439470211537069243755 0.0269365650183782863205879757757460 1.0273060036677848862487692182936445 GT 1 -211938823494124600864.5811165756535016486239611353292095 0.8797198959137644434334232162416224 0.0567455798178715087382915464875389 1.0584192340292923262789776302339152 GT 1 -724940168170524671553627171.8470002251521072405849004330854354 0.6732776153820333756564621567521545 0.0568326508109346271245655929852218 1.0585115474180993004342051487593832 GT 1 -1148.4641732281763884083197687179819743 0.6924369663046291737531534462740407 0.0092516762106743960030620352772849 1.0092947387734067962407646937954906 GT 1 -1289848952001852578217433821033.0491781256574705572391802340632335 0.4193344220626125448608079527249372 0.0042840667196715354069825527049923 1.0042932696268179896294560883009286 GT 1 -6549296284218482968123820044889440046620969.3273723961700287870787608061674436 1.7426560428835447977490940559539519 0.0606468514242575565494830841019611 1.0625637804080044114117756723963440 GT 1 -355643311210.0219419237938146803192534018447988 2.1278961709220469473034727530227952 0.0107108936203717130220400494074751 1.0107686681563963227387827164752620 GT 1 -2219422261.8149079428216963313568103921693495 0.0426185761649672103332365594493545 0.0073426088685261790174527256587821 1.0073696985082353836725000709570959 GT 1 -5877536943620901391472574573279652614420602.5131978546415761540607309738811878 5.5463876456308345192144381894682507 0.0504226300232928897454519934799631 1.0517382670819467527983106042891831 LT 1 -9924800.3301126358486514359466632930498657 0.8183476329321723491224674367063530 0.0916440808204607278599674067000526 1.0961189957102487014886161568296490 GT 1 -5066974114004388489441412535336354627.6059453540982093840030979755376657 0.1566940550809834741551785549418871 0.0155643357114842829576988803578874 1.0156867316532876377819621283157180 GT 1 -299323156846335161077.1264352397473873926961184437389174 0.0321748958947110677163534365019357 0.0222831687577401382849376603491842 1.0225351894788111553220555670154230 GT 1 -1031388155281872006159176607490116.1370335797110138847836489808124219 0.2944693826350679864537914370942021 0.0277024776488956380759745818324544 1.0280934284047777062836548596305530 GT 1 -1204193003793975378852630159091002137.1527655468167144777623605014813650 0.7951751772757502298192096267776809 0.0077848904128064392588779150086164 1.0078153508626713525168119565541228 GT 1 -156690207422458513870569631248.5307902173797616811308565773079978 1.1426760144963958594229153294367285 0.0279805721261485996638868441200911 1.0283794871969074054796634357469189 GT 1 -182469477914975267003352.8418065871322873040134270623005732 1.5201254810196695648794701013397108 0.0989797637590900719047642251835694 1.1042275618691789316274292899708808 GT 1 -3991239557239317762303040336326695937339490.9241704167323539777851044304089888 0.0591077056229612456734301775476025 0.0822878714071923983497842149124100 1.0858715229507178235460910293286325 GT 1 -6747158514866276674793179166781552324225.6149120635042092965210822625356395 0.2358122402793168545500154987107824 0.0430763857821376019325346296442631 1.0440317086689719806476436109531760 GT 1 -5225258866654732328012714766451969087295170.9884372683173254656553970181319650 0.0227801492289953692949182332029478 0.0419012310872388814065561701601385 1.0428044072517573765102827101931256 GT 1 -1328339470503120977599459032131.9377411420362430327943537835884779 0.9728830543880778796901620146038183 0.0211235253226659576076784016496347 1.0213498194099772101764329189295496 GT 1 -1004526739385712155994139428270482184104.2666382114294891965268422645152922 0.2562607653952601195554376563522421 0.0638672929216156144390675079274402 1.0659980314878805300341013898185360 GT 1 -9528286.5213337698034554133589369619981146 0.2176202407221290952106661327494151 0.0308497197016859231255986594445362 1.0313355910891197307591388553609808 GT 1 -10618209.2924976556161308054531063057317521 1.3160598289654753698960843937455623 0.0243224335631867286934459701274907 1.0246231094080400340799018208186897 GT 1 -38571941950533225997472226.5719240990076562222249440419484583 0.8796551647136755644979027623251791 0.0133892578171721635324716356373942 1.0134797021586319854285468677082581 GT 1 -26074539580437357207438290054238.3660515149039059007509435460933562 1.6091139738952918480815210752158862 0.0766364276252643540771497274618546 1.0797322191407930235826347523430396 GT 1 -1365513929931049829.6376684870562289079549427214301635 1.0243475891801036401431324899313049 0.0072712535114347816784393681341340 1.0072978179246349993387278668688131 GT 1 -402834245875833325668281387898.4805703222525017851307923424845392 0.4184406340910924805885333567786536 0.0243158654238753258732839222959284 1.0246163775558078024537865593200019 GT 1 -3752509989442.3042586715137123839475125292474380 3.4957910289119914997098438976461572 0.0748082303909633480987671843162685 1.0777542444609656759917194059292539 LT 1 -1621885381352195625916286048953.1484325636350266105346808394719811 0.0122621159052467548979956291391047 0.0648474494032202010379517759966521 1.0670456072834156748287383309077281 GT 1 -6099066329688137854938737635277075.2340624821563688122958242202414616 1.6321790095208344888575398669636290 0.0809438093675090803014244218845657 1.0844080152611372384036145204309702 GT 1 -171812827181.1157018685571801683482118884120343 0.5547614688077584310338058166755500 0.0044361226152872351582134556025354 1.0044459914041361273987508996727631 GT 1 -104289122803818096.6439967497330715296721111399674528 0.2113289618305324038295585470272677 0.0388936766903314795220578717082465 1.0396702379323518007240050049563707 GT 1 -6845786308437678588246.5740028611626417533052912344852816 0.9626307088954356382194314220732367 0.0630557441226727275170655587190259 1.0651314906400934115605637001762692 GT 1 -1562722192214487214839959333968.9606922676012565983354526872511341 2.5705580896194391728383437857486263 0.0080134423781192029502070846020404 1.0080457225734713251262904712288700 GT 1 -16814604467225.0074559334542547055302212058027879 1.0665038476429675221992951883679150 0.0389510949814569923619552945144979 1.0397299815891557632553035602294846 GT 1 -42568962911244831.2346227878834530453824035586050188 1.4522998436167506888437045377307424 0.0421732286795614868061805259966806 1.0430883406180998153974389196405048 GT 1 -152.3706952358434430002416646682419805 0.0379002780634518675621116094461919 0.0599526025540978130232033551858818 1.0618249821744853057838600707924613 GT 1 -56604.1389945702713284254843951234535648 0.5680381796346596447497284647752708 0.0548501909867801955937256929568625 1.0564118359963215253879417996333482 GT 1 -4287082066922805859592472079761952312.2376131189158436423576499383636223 1.4541453147958814379708816833497014 0.0242456011614964303688020178648642 1.0245443647701564788618739609151118 GT 1 -2232896113154565823323.8673424069762255371039982392691433 0.4741885541990795737278142645546698 0.0398083242221685585877640806921020 1.0406223521815386745905997094964352 GT 1 -2194303931023.9505809626847318195211638178219182 0.5453774939247745637453879970419074 0.0647068740176380309810135059094415 1.0668952951010229249802127385804280 GT 1 -68418527645442001988.2133827739162617223389261667521212 0.2403796993526646316099504582692936 0.0555036745405541735304380155555380 1.0571034825092885537872076901926378 GT 1 -3002663966177432747.8155449532121520891854174928253877 0.0524357382328273804915847868413764 0.0108031848259728939674590555192318 1.0108619629376860963033902838785113 GT 1 -285956405758477257653075176676025737.1964048187833455354283347802001371 1.1172240541531129818174973920535481 0.0456448226155831924987839286679074 1.0467193734835783187287265052013666 GT 1 -61858447240585823264115247653568604807679.0131321128285960130525670189354458 0.1947649620362546132792288023661869 0.0340981818603618279749458289450894 1.0346930874716699312179499765957117 GT 1 -24432699341883308128671637329242614351886441.2681509548025693951933619061733886 0.5947547688190789800743545345705460 0.0465232239953750437492219369086384 1.0476402108144563130188608033773703 GT 1 -25349016.1693278371934428943643888998858967 1.1597528186417588260746476968368026 0.0186302173806780327415769610390471 1.0188059458764515235636041811419169 GT 1 -11330561826169902247315287.7965849555879242220627216620499977 1.9069728172845866669678908970612770 0.0101769735165484795713145595108686 1.0102291129610029906687848092914315 GT 1 -6074797077252957829946635389233630.8856417816608399428613183488858874 1.4996012812864051223122042324317215 0.0369128779348246549227216191098580 1.0376114018418816459138384817926989 GT 1 -1224552213501648936797.9838546133205210514078532325710095 0.2768197550259048610016253480505479 0.0461832007839198798744969464507847 1.0472836603395059317138185833060433 GT 1 -73026094413408687805883938393047.8062396449644731988754734805666871 0.4027390358573866388709406139896439 0.0313841615672381115745735541971511 1.0318871972648468123085510624800487 GT 1 -2217886227661558807703296630281.7902970824366013190081172084993361 0.9149130523333103916010866119241274 0.0016605452895802614037412959614663 1.0016619255230814189549592584676601 GT 1 -4705130042382424374559234178768016583623.1458021052412211791028470940249478 0.6200924428597632096353582085333358 0.0347842896413813476675665271811502 1.0354036685727824228504109893441206 GT 1 -455315689092413496364864406733358695385615.6208932476561771232932927018524229 2.1854562761479300436691274742581164 0.0250805099832368745029908564254098 1.0254003857355199354105836885951019 GT 1 -630390626910745600290479231965461.5915531857882390420024710737594522 3.0430121033875923612373778698068618 0.0609461964210877833788105381969410 1.0628825026093047312550445552636552 LT 1 -12789881610155780193662188309.1580450340434294605430552753177155 0.5317968031218498184491563145750372 0.0762176912824620477669071793132251 1.0792788317237389319833356235549183 GT 1 -238484910825781402441441676063679.9270864199829253867658672558420593 1.7066702311844457393116720246073880 0.0635879772204411481799695688652790 1.0656997040847565152435334259389613 GT 1 -11213152566365065072559831775402310131.4320861778670000388313497294079254 2.6888430121832833638706849124403339 0.0010837622982375420390922761447742 1.0010843499932499180590457399399890 GT 1 -22007021212149456130747037.5636083535745337416006894930751138 0.7558649230853512393480619005446909 0.0403793326241464035206628807372294 1.0412172107580574366730106730080590 GT 1 -39.3436897944886415771447959163525983 0.0471590537098516061526843789312200 0.0686905996316502328534693137245618 1.0711637256921419011296501370295661 GT 1 -5.9276797404435126687769595913940922 0.8984645939299745140149568184187285 0.0366888964122292938520027927628332 1.0373788626704662963419831047819154 GT 1 -5526390600658598632320896443546025.3691614089650526335055832816618835 0.7186341721133703183762029240723510 0.0169355823030743710029408909122452 1.0170806292456357413326418885864714 GT 1 -1.1992579505482363518277552806775162 0.2352380643827014511156815869288154 0.0111528758841317068129697343483835 1.0112155355301406000883231359464165 GT 1 -15994217871714.9030380766965313708829993492277723 1.2545415144711425513204515276923521 0.0160463183639315201231688043743186 1.0161764545458423191104411138042444 GT 1 -1802174606447017966281034145763105.7187515292061755844600813662269556 0.6610652753911411006467770213434024 0.0407690949932530770357947108438034 1.0416234562228727218094081950372326 GT 1 -13477477126129141564.5884395690915660529671832064486073 3.7136881963274662375230924610673905 0.0225327314290947952791434581897762 1.0227904725211945568073021236994995 GT 1 -7422556178119098568280730.9969880558799165424269820542089795 0.0877320865643870008590717754823238 0.0693614447034507174235118145787960 1.0718843098510997472473246571058003 GT 1 -1954759905716549459645465.6490085507760125295015774251788565 0.1624363645698694030795563618374143 0.0649506763949052958809035584407513 1.0671559985659973767912296282039067 GT 1 -1551965163620465889775069309844.0657023924113725821645309919527264 2.4933368446611743703678272200009305 0.0796201580741712763011017101526306 1.0864107352411640230345168496053718 GT 2 -102239138298964037777585209028816915.3294886392662183656893959952675363 1.8752294456071879968071901201310128 0.0317782662743484174350029889767791 1.0322941541704898781145906015019364 GT 1 -263370489876277342.6097090153300460493097018976243304 0.1076786503989207962347182663625900 0.0477972344764138957020231169106043 1.0489772778743440711368674863161878 GT 1 -2.2751011065535060086036934600151986 2.3676814473395008379105618430509739 0.0209463262507758619423316577108171 1.0211688128786499302580889468294925 GT 1 -44.2555496373357758502762428582174970 2.0566438953930842657743720872365541 0.0351943524919102410460764256340829 1.0358285994731870042835769366338634 GT 1 -55291775720828915928361944704.3466009029246000465203763819222012 0.6083073415200371505700024005382691 0.0619548241179214974604595959054327 1.0639571692144680339420979424059365 GT 1 -630527186910930770710419737.8299336141186876786196027726860840 1.2707721958435901636212387597187302 0.0176534164163475593353432753609055 1.0178110964555212177142446078171480 GT 1 -93411585599.7747846408360182934069288460175029 0.2249791656829440399027451742040648 0.0094006924160270407156785356326728 1.0094451578147441593870456625576121 GT 1 -15725320880071724.1616790270594008668163968056934072 0.6014884772572234194795144766211638 0.0975359743536292962191094467592269 1.1026264503492077053286202057815441 GT 1 -5441376220797017154964784257623.5745669933005047321489591736472542 0.4671545612101953401457438106584553 0.0313540380897483109047238012983579 1.0318560982389052541762652154249741 GT 1 -35035.0258929010977484399827997801488507 0.2761100884908400564852617350327594 0.0802772762363031450582874388662919 1.0836830415786777251344957331833227 GT 1 -5727604149653.3038001512635115159090439526099022 0.4758921483255168654002914483293244 0.0922953490863536836557980359094197 1.0968362276181893162615935491823173 GT 1 -89691412106833052567171273678625948.7847366364094621139437124944731208 2.2047558039120341206878165902434339 0.0619698206157228525406247570841350 1.0639731563098259870484183529555392 GT 1 -114005857917915089660476839.3973903180379093958185382879593565 0.2205812117955152008500871524684521 0.0688241300312231245621911250733660 1.0713071151749242370529150422770792 GT 1 -3220754087583914.2762751431019112076017419947954041 1.2631785066794572045694129224229523 0.0485873986792797356821246576032732 1.0498074500425342816344708748245635 GT 1 -47432984020398196827224484972846519.7038484641016346071902125140699467 0.0564706814719984556149097150475661 0.0464185446083810464929661579171094 1.0475304298068543704342166607330018 GT 1 -40972636144951619324.1142854507916421134912148287944511 0.5526480990324933794675563319010512 0.0832971703056483408946269659447261 1.0869719271921269049207485097785924 GT 1 -3602234204888450268.5762491215802621489769293035139145 1.5401387073565787255316438965478713 0.0859547885178234340142714861984683 1.0898752432347608087560411682835316 GT 1 -167635294037415840479853319809698316.4438203677941294840632375870749317 2.5834150813356201840889030059624607 0.0027756828145695184541106275699700 1.0027795421653231157534935042426305 GT 1 -5367790537760538173.8545898771898773353892425261865643 0.2080709540323551795227287427350066 0.0578507764697803543069042428707337 1.0595916055606421222758228676184140 GT 1 -19473227580712594295517736363404221770.4751238218712108784823872068716222 0.3353762802950747949960852753245342 0.0155511697749311462395424910431464 1.0156733576472552670284786893605774 GT 1 -105357221088070.8652143016405626439668765372727489 0.4917161581747359045808591520558096 0.0702530031678433565783512909697338 1.0728427762632104960378225749179552 GT 1 -117383851844934156091129226558.9425027212130683726254281853120081 0.0629009807161476710147229461135268 0.0532085576254511375055130004891725 1.0546764398553260332617053700298548 GT 1 -377701925068481242337063642574392.6712458639557927012449524758429979 0.8761077022555237539498285392109273 0.0622680616223242041106203259011394 1.0642911507999486309069974895155044 GT 1 -3.9315082709177851520539299538840882 0.5590419844856094595018650685641612 0.0734818035433054076905870169133261 1.0763215934531524139478393176786545 GT 1 -882720262216163239801373073445873531391230.3349196324262425668849313540466561 1.9596092287681737061874284883180091 0.0044915204313684975999072036422260 1.0045016376149853652574281090009667 GT 1 -604874908269676549947200369587477525013.0387276053015772519936720788722637 0.7014119554214029209289210019348220 0.0799479540470390387733290712451378 1.0833250388511676079425587782507064 GT 1 -267596458469429561390.8899962166516408375578299962855368 0.9390514611507073084355550037560371 0.0073789606807263015718035326032763 1.0074063198824936349459860457464935 GT 1 -1403817986.3666116985852836726725146797176693 0.9486263934874257865580799647795117 0.0332219402476595949988969798514826 1.0337863240880757756891040361096884 GT 1 -8600458273314332263.8970475940150681201064486947720872 0.6525705815337775033608257443655694 0.0805649919176317647875234163595434 1.0839959192385910185933320905470313 GT 1 -9412801189679296.7573089759131683368778667698140716 0.1607839849790551509153232368556473 0.0285816586883357112725050393521980 1.0289980679314022145736860463853295 GT 1 -127051736802.4451525533501038435227163650376368 0.0233365874251565647701611002187450 0.0213570278690626351256733707227199 1.0215883892468029916567366754910581 GT 1 -23297.3115127767138847133621602180109465 0.1504977808215101638201411055878152 0.0164355785738076468054219094826568 1.0165721410854976152101086630343012 GT 1 -333364547944.8688313874748703123734224837523680 1.6164077119999020116074294416374935 0.0646805146970823295861245197668952 1.0668671125469244204962791882244089 GT 1 -301765.9512053094713996729711681654534703 0.5081635501582626806333364031843750 0.0361328071386048368214974313974922 1.0368017606035919446644870504303172 GT 1 -7171922168680475785131473703171214044556.3908287526463262775029111978757374 0.1606967316010671967464565884446290 0.0405005740691380358974352810114922 1.0413435618348616260180467917260929 GT 1 -61119581386906869040284165666522449.2025321999069273513860618936024148 1.0412004720475034322695538710580667 0.0441134081710011923688629864116310 1.0451160007615033295962002573809155 GT 1 -4112574363.8121163337114440847727801154526980 0.2468270222892535532418221048764059 0.0215393671495541998598703530660247 1.0217747250959170026427761811540061 GT 1 -9738675035961400530058786603636062345377504.5618823431148696230444262636005651 0.7773612067587682399781994626387907 0.0460376177717787503280673212493827 1.0471310399379000150171348562997545 GT 1 -5440.7974392912257590627792432708178287 0.5021860769254020731211385748820525 0.0894717059388025695268346306910168 1.0937303049967003174187409869957199 GT 1 -17847471625676643002329849401337163047990185.0015551136103626160645162886308539 1.5451723716615527294203757881147874 0.0626461168507647323861018584780652 1.0646943912588364388189037048083686 GT 1 -20254487144888102650664454776497074735.2840698702995399910584847603750438 0.2481048497672590340138137428235267 0.0243591413418030374468065017765642 1.0246607329738799881918509807514883 GT 1 -96290014298419098345202562247280.9308805606383759647046795025123316 0.4392155080152855916912660101557118 0.0648974393462337447550825010525432 1.0670990651702298675951870076752246 GT 1 -21136284.3408355346962040205952546117704112 1.3807270476564912191587028886971243 0.0769447172235924321880048881246755 1.0800661516072350934723678371038245 GT 1 -1891397.6253578411115458018940722063615138 0.6136148663483868423753295233516490 0.0459496313853162299918802151225660 1.0470388116375534700513903905557889 GT 1 -9924482717894824017255432016753961791.6861288728255052318457709952291627 0.9865415946776236765819013195351906 0.0260917904454617341907836312829142 1.0264382204842955685001255601265680 GT 1 -688404340.1119586943201627432905574350937522 0.2899238962510825897155878007506603 0.0855577884864050248454768854432233 1.0894410044944075701439572727855445 GT 1 -702197338518958347339969.7125176594515895298281967757496852 1.2291435626219319796371505087033404 0.0039280311350560319868423885861032 1.0039357661114847845434003528209194 GT 1 -4137965715858476098.8842076976756243971311448560255387 1.3816449256469996399243456911607616 0.0448748326894016733599950312397141 1.0459128818430060222151711845571537 GT 1 -13700328485540028701.9960452791498009219113759286052080 0.0391504346897701096161580122228433 0.0370030992792269970730615463126984 1.0377050855476815931367052835931630 GT 1 -15284591371329639385276119745252804.1716328776723254653329188445191241 0.1664125459758782322081102983738405 0.0524880564581098068314980094526894 1.0539157367837458928603855913296015 GT 1 -139.6760267273175516758354133359260168 0.2253970851756052666516580979539257 0.0567436285920211504050246638024203 1.0584171654210881671344451422886790 GT 1 -45273289569111192071561832.3524343710355595083267536812448343 0.8107560661099844752097913410813339 0.0591974171680159515418636635025968 1.0610219564844171620922585798879816 GT 1 -16945.4500301081645215115302851820204356 3.1284941372043848485576573240812977 0.0938842754945974911969818712194544 1.0985882498539321205520165215764149 LT 1 -20.2640941853043050320065356947842701 0.0962546657470933620990938541044143 0.0475232042595969223891726992104618 1.0486895337054237580069038710455754 GT 1 -13616131804222260328974793442456.6767873192471394216157037045777762 0.2520786960238557644326406191720737 0.0612476877402456369303901828827993 1.0632036127805897036565034984048878 GT 1 -9424249598832423.0273997340145552632474186697075617 0.0684071531473349601082092473208434 0.0811412360626530006972262503974039 1.0846228529449075237637891403833011 GT 1 -40918576751415807418822736374.4365387956355996883698033927249399 0.3396979098586759885993753283043918 0.0740562041208055912007334273527820 1.0769417417728322733608700418881076 GT 1 -34980645997705524625.1025813064586863170976421128689227 1.4717314681675719936852583875739680 0.0232566934334314691703128599711952 1.0235313978305412380798929715899172 GT 1 -1539072503728814893.3592829352500142300243813725230406 0.2404458175191314187104212148670375 0.0005924311494348051854519165819147 1.0005926067061084676769506162236192 GT 1 -5479634568049805929.4861171027359805687845254069480815 1.3840660528743246634819641965001018 0.0261787523174114495129052655683167 1.0265275161220283937278717568104987 GT 1 -17.8723131338013708325577383782926512 2.4496098440713737513747909882536491 0.0652217197150329219451379248980987 1.0674459111990787952045608383039980 GT 1 -2442307096349609916085941.7097559412498668863035655553318202 1.0243534099686728701793720355163652 0.0738026066931836628651261510965642 1.0766678993350231486914195891481239 GT 1 -201951755251.9238267893707830572759682931865914 0.0312389390929692503584094929416836 0.0501955772351258740816114290655356 1.0514991863556639063437807802768847 GT 1 -68933556766595415.8819207698615911856477184888272317 0.1169306247061508399417152362982055 0.0591159148614585951356653262310759 1.0609353296214057687327616450294363 GT 1 -271793780886970531.0782000927365475914752315703183393 0.8247306612770050037480810225007166 0.0660327811330193555936874986304828 1.0683139389420545146668525173879830 GT 1 -354051624883259672062538.8525909987489181412825341678488857 0.9250419915206214663469091611565169 0.0947486619468697702998096745800113 1.0995426522340486262557424883894796 GT 1 -262878095370785884630.8868910714630399407974472580200038 0.4607325875866443204642998226090729 0.0308479575501092458068109198059221 1.0313337728468816681712450718420586 GT 1 -13137737694445713.5224315548375385974427579451375108 0.3648499053111056474263665515632011 0.0618783642157180120553583307017364 1.0638756627068692722937935141808724 GT 1 -28600686425033482411223339366722660685.3074883227023429414986392620858685 0.3621148551024654138250751518746305 0.0570158701184424450581193311241406 1.0587058258841898231031883286246465 GT 1 -792036368245886900490.2415494355619918544272881381912116 0.6715817988991343129907903264870525 0.0475083539182249393204611826358068 1.0486739425375636973435347657528686 GT 1 -41259654351.5440255374366096671484396892660513 0.5757010112804828301666490646213860 0.0097267438609020767337246627968440 1.0097743576368738613428991563201999 GT 1 -2826630284360112217968873620452.0748081134708593169209158226100055 0.8643403290965372036133437982904304 0.0115445609680305207892495153043110 1.0116117167684822768517101445101299 GT 1 -9984570278.0627080501063340884895278675794800 0.0045636515199379460358668965455857 0.0389993247398406258716080674679833 1.0397801673480338071074485253542094 GT 1 -232691.0856252995408872984005853412741839 0.6223613415332213230437804695612510 0.0334321702765711808133218687816754 1.0340038020167636300120969923079331 GT 1 -711191267647331892.2939424979920458184349180257206309 0.7837700974140076730704294736572681 0.0567933093537790088340940936427687 1.0584698362236802366252645945424746 GT 1 -9468159706717067455335595487735309059.1991159354983491227186042757077380 0.1803257838774444765121097867403931 0.0994969338148729095447618871650492 1.1048017093912157314411474561636393 GT 1 -3695407957274809318991368160.1591548475180225730513217675827379 0.4041738526124444959569651840111607 0.0868705930138053963857970687405078 1.0908776702205708083880446917173723 GT 1 -244394411191070319386275326331758610568.6968564802673573689492523637401807 3.8590766930962003413061367158301607 0.0849146981165239293492314506537331 1.0887379919497390987575461906397070 LT 1 -709038.2784339630411095405130157116103710 0.0663903974990086580886718730332715 0.0777644406021596817552988319672090 1.0809546006405826468273152510880320 GT 1 -9948853497.6741358220128810449986467281939582 0.0182279879353128970027679230016738 0.0274984645569229800809786016008098 1.0278836246290062390056643092310132 GT 1 -141973195801339202579514127.6642647325446415621367463118547273 1.6439687250117463987991370676201151 0.0265603872520210730683910703489157 1.0269194871694118236365401323282173 GT 1 -26896709.7559119136964396788038690538919376 1.6391420112872858822700800957625636 0.0105387687875670119687831835642575 1.0105946948865311642301213314331156 GT 1 -483566933569462286450492494624766963.9820601886667850064313158881930222 0.4412515274732626109162790123210488 0.0471896113163262679226298165451942 1.0483393576800910248621639163185436 GT 1 -90990772851488586286.8521325420102262365682141947696787 0.3436928495219998784317895921142874 0.0224266483724366622452733633399172 1.0226819499097805014399701919715335 GT 1 -89971184415667277362548651577.9272786188309350229201596507922977 2.3528232502457132717485511796910986 0.0426229597583806639350033827397330 1.0435579836757946536018738285086993 GT 1 -330626940033850814563091923.5427010736589781743052490447922364 0.1578472651272894611095930344679524 0.0908371238477326458987894465964978 1.0952310191701164517531542048679841 GT 1 -225985494090691020070.1635071008327385497684740594309571 1.5362378667693796796302213054063408 0.0912008615681222791770356261994828 1.0956311790440030921733765193663210 GT 1 -160541794.8257037079358494533718999627972794 1.4247134817914540380281502405505795 0.0197142884995026830366318579474413 1.0199112074602851203678678719318184 GT 1 -22886077767404381863923072793366.2015996466304204866471363450997300 1.1648721631967967130286346078187474 0.0155265511979563414651275551814340 1.0156483504875127785612275479530678 GT 1 -66904508772.2257451972404211924011028049186780 0.3256826532076329337130115212880820 0.0765800944125882419449382860816225 1.0796712123001256536157966223760080 GT 1 -823116992602524478011593127382523505020856.4398563629950386930407662636260722 2.2967062094045363805175463926499175 0.0957485319400297786745053086400714 1.1057127729165617301935640922773125 GT 2 -1040829651835.9253214009735874987116542303848044 1.7810735827247499227374611222685283 0.0836663889671974966293245789738315 1.0873747764299696474525758347903441 GT 1 -97289685176501398.4978079133847240836151128000060073 1.9192225689312235478991332690445715 0.0394636544586791972933730239985810 1.0402634572590266803323846949136035 GT 1 -46463290747798.3698248198712077063559697467595882 1.0847335716821323879563272589061141 0.0802871743726984618707068438558228 1.0836938037240529076799874310363666 GT 1 -17.5005294705619317438611671555578663 0.3033795389511677117935450311498318 0.0156103055022094772443909228087517 1.0157334293357696293675492220341456 GT 1 -137611531917956964718936.7771764482723841110606192357789933 0.6164596141105401844085894031601906 0.0233564495608146655504865723777359 1.0236335344115386425065406968733411 GT 1 -15744302472.9545241590471449696857380666650689 1.3969027468953725762366504717229561 0.0339500542819776452646960679671389 1.0345397424643611868814826211170694 GT 1 -118731041751480733792483125539.9534893074348634930758421392693737 0.3788926203243385586232975904052885 0.0240349856140367563802182760221885 1.0243285391275460336919471397108721 GT 1 -46923342615636.6344546415153953157283861061820956 0.4355524527970516259343439874045831 0.0529492823821366664924193692702815 1.0544026311394662510473932753764117 GT 1 -17291359224448481919946088395596075231843.5682209416580640225053560857979868 1.3912772289582939197140309210745355 0.0311762135553540811924422137366394 1.0316725345625747763007643134830979 GT 1 -5433032394488716.2797497221067409526450178395174311 0.2117762437549172067284105448710075 0.0142433636302117590118989943050105 1.0143457739419259223956555979891943 GT 1 -691711260949442430847088908550.1240382775172060867489313092920353 1.4578262818203153573327136216569402 0.0738330667124396600968173456516849 1.0767007870545947561758858220856305 GT 1 -177185393787542.4137791883290875752255187777115661 0.4797703024201888528418132899119370 0.0316614135851690708754687581476284 1.0321734735099332389316020296637570 GT 1 -29005492767863796.2314355518157346678146660742407172 0.0996894642979894554472368065325268 0.0370122151206383549829800815604344 1.0377145517095670761412053621542545 GT 1 -197736341379456436366429185855284863248754.9863002130141564283329071347669396 0.3278786586362799006934778446838165 0.0938204804637753074760726819900764 1.0985178473838508511236039904981723 GT 1 -3475936543477520192124007.9877554570766901237224632053901157 1.1554118154124048480756368513151870 0.0796816669388935516520550069037366 1.0830356545913030733650931604950828 GT 1 -1.4169170813251315474404074372596581 0.1517252451556058638284379100635203 0.0888000919100268189419617445420871 1.0929929677161877740106706534360215 GT 1 -3267672952686350647956191940985761.2142972301449669734301583667483044 1.0658007088000349428384143677149237 0.0222833977312686611012099905831477 1.0225354236709085172804448198827972 GT 1 -21814619960212759716092566956634.1705099114827416196985578370033436 1.0768804758992733159128476510254346 0.0590609711715738974225649628771299 1.0608769355146562915953146692981730 GT 1 -56100081933567324876221243447150.2487146041078099108299481260402544 0.3924688909605635364618034969457837 0.0777235737657590145717184436583210 1.0809102888261561877760028323019761 GT 1 -17590440898367459066131294773875.4961284543648913665499099206372103 2.2285235552029453824914027540710651 0.0021572414764940436548710137110570 1.0021595716736898290271218616697470 GT 1 -6454512839706208457487237593.2963171280931858261266822104076416 0.1374094697035166714348267207036984 0.0898033480510613808128937727174971 1.0940946017749185795210741082584626 GT 1 -265339470454531721578424.1067545805001813212569540948398080 0.2853763932843429304468912122656485 0.0310039440010676006878850122611390 1.0314947372761943629981074346206805 GT 1 -18374140155256754471278932953.3365810428228364247062226333114878 0.9531689067261040041311298370465515 0.0420873706111826401474752823004689 1.0429987062258598853776970078227634 GT 1 -6752.7518569682906832171363929634520177 2.2605663447697358852774087493058636 0.0106196535209490613942175197788404 1.0106764444660214593031629177481826 GT 1 -2142047775.2678365086871717772142794665570754 0.9665401184215241513717669220025485 0.0802979545537041508940157894480648 1.0837055250395378917280640305117946 GT 1 -153940594443614.5438534265261124895600706163878575 0.7648875568532489587193520153013694 0.0033298992341248402795183342318869 1.0033354556869605183650902482078916 GT 1 -747.4865330979178378586418349419177089 1.5345954154082393397651172717318211 0.0444463860095447895787578687609071 1.0454644059492754350443810535237728 GT 1 -529137880707496016613620891403355.7149984883299692196534405595791370 1.1042751572911937106354326961882217 0.0491549912570655966163811927340453 1.0504042068557306411127713342616474 GT 1 -300409425725482121797948503835744.8686034742019405885790927443687850 0.7072237279378598843160047126526426 0.0023734268388889630996272338916414 1.0023762478809440000149025275054242 GT 1 -3312974593704.2895276877211081712834094378368485 0.7669377244664505069275920128378518 0.0864042798813249647800869699627283 1.0903671247250386483296163734030179 GT 1 -17712241640603007.3045970252345116493653650221219976 0.1586045572983289253972707076528043 0.0764532138250354572023778408134193 1.0795338188232229287132434736218798 GT 1 -209398.9785933694497465745393563050751130 0.2549531859503427031760396879705712 0.0288027474676140325889123121189549 1.0292256876220229355635607279478908 GT 1 -120033647467675296791450551493.7254789849446412976885362384132394 0.9188458549983232357861735298379416 0.0467027201045436298630939830675117 1.0478284828429574171742948187813043 GT 1 -900.7585505802312309642367025536457877 2.5046093068985334067428390150404286 0.0487005029320340253710573636988470 1.0499263374485515052953402345246692 GT 1 -99275.5697614709780868812998276807491296 1.2889134546332277715629190866308918 0.0612357283353791759006581225296623 1.0631908731808769540693984693133378 GT 1 -1.3553963058806997142211314978545368 0.0797743650216545346409916508502864 0.0435822995836118992917485932940682 1.0445605362329774840933326427024430 GT 1 -3583089822182.8883073182006219743445567495366409 0.7231125171586608006668750625156513 0.0038138407641233124093775465748996 1.0038211319991204166533308617965122 GT 1 -62334086817631897.3816090543187533345908504625620522 1.5236000628381261022288088487400696 0.0307987361394048352465248157038267 1.0312829860160652782892451295411028 GT 1 -20.2623602378005460957663756078296097 4.5814248365040660277517767117912989 0.0004772266884446523703848723007127 1.0004773405973424199402753705349951 GT 1 -174.3450890163376381500725570976374297 1.0642999872974380149429111411476838 0.0710634462820739131194904152021896 1.0737148377449532519104498263928172 GT 1 -10139102.6703187228198449674748660328674010 1.0334739061815607084126879933865474 0.0695819183482832566287815762051624 1.0721212436890999433441964228306163 GT 1 -6336628931563440354815.1706525411771114407433387919977711 0.2368488191659660962624356856462327 0.0764901882998642251724277613794377 1.0795738549270177373353732317697804 GT 1 -24494317224545775.4585040876269330112561457059641171 1.5725962772269226291065811867866292 0.0678011152424562058581040973855001 1.0702090913995609739586923636951520 GT 1 -21661250863806311358384691517443348281510.7735010300599424153078534428128712 2.2625736846863410018529212614047576 0.0728957806144650425425755410611433 1.0756892932140569560327486044710874 GT 1 -127785224421362578582419471611499299.8800517764696335368812150296180270 1.5527077641038555142751839235441544 0.0406584853760082914585046648102599 1.0415081521392368059133768287327038 GT 1 -143862.8379735598677977502902397624110850 0.4080483530020114460143665000202792 0.0972273704579982766058735835218870 1.1022845517978457561791600118579367 GT 1 -25781031979087155462804033.4774306356552651654617327862928407 0.2250784942937098255324192311452367 0.0186782731166468250441364225730667 1.0188549150962659733479092640534548 GT 1 -4670088511904774925047385603198.3503204325076481322562818257832774 0.2711496346220166526622399075191428 0.0709886053578664788446810243314714 1.0736342747514485388595232784532265 GT 1 -2.8006829700753843702444977865984713 2.6304855093335595047967584348083064 0.0882387782785772793154944379743578 1.0923771414761109089860479040623363 LT 1 -2901390717219244392213968439459406014289207.3668762106222188579637615950006194 0.5437632309447443918747203685226478 0.0025079507922037066828758979564777 1.0025111009688860895666307598155258 GT 1 -37288.8454948488118124899542348829681045 0.1207686544752459851287485195597501 0.0836293070791258841876305751278763 1.0873343095767007634835290983996157 GT 1 -7731365294819732.9259503437963146192314116201557005 1.4931677420107983274706281267520150 0.0760246746642945580692999899491068 1.0790699118791528798966127300269704 GT 1 -12939501968001.0863137337323091998106611462664144 0.0367103024325007339198233991644227 0.0586441473322067941975247469756680 1.0604340465175304749088479168131916 GT 1 -6293549130042360813375475409435381.0918298173110398502318854091213298 0.9932932379432434096416754512589971 0.0658820985288130673456191261148442 1.0681526158814588543765723518000391 GT 1 -20301420491906714606767363167534.5256116244210943500828187626854075 0.0275419771651133906312576405757037 0.0564282238841457696863671072482087 1.0580828427524051973789661691005950 GT 1 -202661115151845717293804100251270.6793586481307421671182340882022228 0.4818122543111782367120837959668481 0.0827274970654110726552357485346463 1.0863506830036977093514424092522753 GT 1 -5523295461127880414034894759858485628011.9860344743415269300038086277974635 0.3335298984122807415878091315618594 0.0000025658269103740470141008155216 1.0000025658302021135447043087868275 GT 1 -13364422.2735117333684426242311424657759691 0.7244328477937737769975475410930561 0.0133464031938146402845990432512864 1.0134362669000936215082333855092131 GT 1 -422553388131.3549855284275172298207147076286051 0.5637484669101004814222827904063826 0.0450415736814868704194623220076375 1.0460874720997517386189096706501872 GT 1 -204.0597566435507425573844886858212062 1.3443426021164918687298672488540635 0.0612341350636674305103263055505997 1.0631891759812627521870508940953181 GT 1 -11997376899588473351907214677154.2789593336907845620830800871307611 0.1751739267142706057383231753417095 0.0969415883727178779867031667844550 1.1019680414697464799056508731467126 GT 1 -95380868889412.5713371629902364474810369434787578 0.4248156700147854636856972586679219 0.0871753437602490384920859195886708 1.0912114691429104951819388365424785 GT 1 -6808061732758535161.6014454975237354996329150115962107 1.2068506645349564654530783505849806 0.0993889476897411558829709522233003 1.1046817990266783051207867837495511 GT 1 -669356327950697137203895998888455.6418484693487846281914690915067744 0.7302228498951776091594292741462404 0.0427692048234778326386372759533215 1.0437107513211330016164701307757851 GT 1 -1.5611974062859365609463787293385660 1.1199183125466653982582181051742306 0.0426221287391982243366149168394480 1.0435571156595514806439293551053530 GT 1 -19655812720547107147.4659521942563919381828330134217711 0.8774397634661165774627320866668344 0.0081775664269475143984553527143504 1.0082111861336540059226949570997026 GT 1 -14137096357523387051519505970768597550296527.4710750887005004313201241201166188 0.4644603564074359911483010624003339 0.0405815643801678081718354604664686 1.0414279743182728903787683164387297 GT 1 -251341022890644335334203.7008602357482749821649815764581166 0.2423812941303461196060009250388445 0.0993047853847925548045220078262070 1.1045883531684639823520087981824314 GT 1 -3200284.7202172445536432906705408951667407 0.0735007401478895580716261754476048 0.0872089059128931813184224166218005 1.0912482371787273584960838793869775 GT 1 -658728879452399654793956722062843065.8798241754008296480934586047608257 0.5314479855840018536532792443728260 0.0303152479214557725844334041981068 1.0307842581651283001395154923417564 GT 1 -7443689.9349905382748776092568732856122356 1.0260690362612563557606257909421869 0.0842501450430997342341875798588259 1.0880120357104491399325150752044897 GT 1 -26780190142987050057536442489941273030.5756460017672345019694790831205618 0.5163496537733918942550895541854119 0.0562644263774911390970496665151301 1.0579092647635433442984239421912389 GT 1 -7.4659974398905933588164531365178016 1.6708886416360899176095331767056915 0.0150190696798133248388283954115149 1.0151329980784857144117495549822930 GT 1 -118966683967791.8655405355916468893474296287964448 1.1789376106239177550890685266055914 0.0149056492727137947110733833524875 1.0150178548569895940107797683400246 GT 1 -89325275.0778911922794277927658708341039824 0.9080817164032024313956520747546924 0.0657241139162994469219919045822784 1.0679835031238138091591412990950830 GT 1 -20510949990130911643179.1047728643091869251248149013069230 1.5651468871451138750722892755728396 0.0797486285183557910829132151882223 1.0831084163881820645325508753849153 GT 1 -7831751888382686405498940082893281938275372.1716981008662085801124363895124018 0.7366325863312903238860757801088423 0.0089095580335215333745246391425068 1.0089494854798869675109339755188665 GT 1 -746462548461402116.7548858141834620859320904914883072 0.3437811591259338434658124281797612 0.0151681947434263018207201877988017 1.0152844084752249816856701196170481 GT 1 -14129140335700644023422225741656281881.9597529608229318956431927063176101 0.3817260095707077093784113036439550 0.0377426160012910044401003167108244 1.0384733131675900282873115440493368 GT 1 -92.2318520711119367469823135693936487 1.3483017947583040872567934381349899 0.0692376126126358552825763879121386 1.0717512572796113128374287192531379 GT 1 -5998214992851800161687804398887452373335.2766095263036233338675292364977680 0.0296289728861864461150366176970542 0.0031975679885564151303734009430290 1.0032026911330607586750847468509039 GT 1 -371100611633610342742113310716.6589153743823529374279904309244430 2.6422220083961139018615742382675284 0.0345683258507429097152918533270037 1.0351799469410933083953122881445902 GT 1 -2442493653880205.9555654764712261962118688879523062 0.1031272070974585677007344644280371 0.0531483932161742084519132967927267 1.0546128962964447401599258434274931 GT 1 -476949722579.5013413050687475489687783307567172 2.1933850822685278737649216171591927 0.0443380625824246107607420215173130 1.0453510504178636417482211321892116 GT 1 -29362948860770955861690137.2179443385323415762772313032416042 0.3276019307050112804317085470367910 0.0428770318620022010781913644185302 1.0438234024316066538902412559215965 GT 1 -901384915513139732211061.8533942563396810762977668182910182 0.4486124502930087771242047102842586 0.0671627583563443552356227340846823 1.0695245396077712213851025020561789 GT 1 -5746428617421285795076.8442534753619032720532895978154304 0.0515629914328892879168859484148314 0.0672091384988751911540926409346181 1.0695742602808916685836301513615064 GT 1 -140744024965677265.1238555867832942014064168704956816 0.3456112978369348240760432153161170 0.0063010787410067767781086417630174 1.0063210143255704139165822825815958 GT 1 -40876619535359709861188410620868157.3921499449091134223385749106911925 1.3955409412144326995435858515812728 0.0493514655880123767450908944495838 1.0506108594971274683800972690457658 GT 1 -1182106549262036842586627926928630869.5703119207567546604120124264844575 0.7175863249215916258456183352206429 0.0970109972606420932905081838601883 1.1020449042225250140509514914037580 GT 1 -12.0780921808360961206627326156425651 5.7089362835537537702597438980014112 0.0991064403728428345119250098439112 1.1043681641713000780318854985229807 LT 1 -42240116886554962012271295565.1255807763047961627068874341018274 0.1007377265626499755279180649679763 0.0867813775881106066819188534792659 1.0907799720553474411029090524729122 GT 1 -3539031593462092972060762163.4614034930589308282556090551721714 1.0665694645477477734379915467934357 0.0674527024933945560669283813546681 1.0698354075637340911053376708298371 GT 1 -115040968186922124.0785955964379187523158393926138991 0.7041366754197990266278464002975621 0.0799936831463100684218579045082150 1.0833747428173077832208581439996945 GT 1 -13618666930596979638394.7792635860468682571918048694450471 0.2885527431032276092646600834077197 0.0813046067403408944010185975873232 1.0848006661293282174402716223183350 GT 1 -168560.5337013904247507653734513373086169 1.6250259762062853230915506900072125 0.0632411100527730527019393280360240 1.0653293511508345507102144379396533 GT 1 -351772519459457363875750782035.6613501017179092016911632995147031 2.0161352378274234415842141885203128 0.0672061485752889441393115563581055 1.0695710549334576617788936402907990 GT 1 -2193704668667435410152612049068071.8843233919556373051189941281653828 1.7295244956142760869342893391731292 0.0019402215463188729235686345947019 1.0019421062143201435937333767406633 GT 1 -1065372623.9707752135825297790065531201908630 0.1149380073567050782184441558765027 0.0971449570271896953888313993245338 1.1021932667205063866138879443089043 GT 1 -16425997.9612026600168424513215311959751044 2.1637142966348800944711713056682935 0.0032219120214035731917293377110095 1.0032271135555355626467022273355451 GT 1 -6496.0084022580124827728459179722744348 0.2633508096891273489770619680309376 0.0724193658605882227419063352882239 1.0751755512018226483125559455067687 GT 1 -1371294630336182.0089831416147350373776072926548454 2.6517847279232272807404589936784461 0.0689129091390622244265752201417691 1.0739516162681255680242041464811581 GT 2 -8293380128106527985053595700859.4620079262078834442515787597410124 0.9350208185127005817392061270964511 0.0477478335018446005154818406429755 1.0489253984901173917059094545783226 GT 1 -20413398956360336666579168.7293889120231743146901979795640263 1.6686599881685798894223653229888671 0.0823849016168497672839365998253674 1.0859772590922860441470250514037011 GT 1 -374535522661.8093059171610252044778518639131885 3.3455031308583877847256066199709331 0.0124323501445451040236783760346252 1.0125102783705623564588161208043832 GT 1 -1912399984291845716508.4897216126799617159008641123170660 3.6795124998763853364990219454877064 0.0419111773692397180683961429694142 1.0428147885756369598150850892048220 LT 1 -5866967490283657278.6927520669924332524026644793672728 0.7926227410876603144700580086141805 0.0877482454176739191133424489724111 1.0918392803105361930840138739367127 GT 1 -1237276506697.3393280352432307906703083027834892 2.1433895201240047487564492075138921 0.0546741568157597066701994801867137 1.0562256033185034889271940519784438 GT 1 -23745116156799098498.4463262959798817184755143018165317 0.3329031348964652891826089348509445 0.0203485226991060842416538830583068 1.0205584059780391792705147826636270 GT 1 -9823059858124620184610498319.4386942680658445111499669997478604 0.0615968717167928872736079037509229 0.0946555639388977932445489629301901 1.0994398153563920794818945568093170 GT 1 -4602.8572953051962577057703541752651799 0.9219225760749420560250976651021737 0.0564772557509105152922987289015111 1.0581348082117360815713307235958529 GT 1 -6.2327400762292374391574747498042180 0.7900044629295267225823318186719576 0.0490985526001584675480477095252176 1.0503448523011406772621892333292619 GT 1 -12937.3549015829886655698802035858715800 1.6344336539218122592144968021797043 0.0805507325661024774246001019154864 1.0839804105394092064454254675289148 GT 1 -2.7895341129798748367691099990790275 0.4660519006205660688827986042089396 0.0845558199458708697286071040567282 1.0883458888136878157253120074443947 GT 1 -1060642006777140584999904234453769.4388581235396523447028575108104763 0.3810541196770947752907530995386685 0.0662762020510597223797882158538643 1.0685746040276891305409051104665360 GT 1 -14496659631087776211286235114819462.6810106894060215618102444710983094 0.5625295159930826378864386059987988 0.0755146209747609325558679907496199 1.0785180432878699719411211687333776 GT 1 -11040479995956.8807790954269214780204548579326477 0.0297498618072544626159536276907072 0.0806202312529292357120094567559806 1.0840560006954186972503023168966294 GT 1 -271275413761590918860847101910194770101.8489997088237582769072734754958778 0.6737784134494628994620256199381027 0.0612604509184080060442380910427505 1.0632172087683277780645586228050895 GT 1 -58402491458341750254794358.0064047980131915235197146357588153 1.4968315312047281795160050885936119 0.0901849478909401160681510675035815 1.0945139395677687484426863485982824 GT 1 -34502893388881145521381700062137174190095.8494151351269748589471908224910857 2.6803828163147092230278525757364066 0.0329121963123782333014871750157657 1.0334659875603094709208604469065786 GT 1 -38478617789075895991579648076838896901274.7642913807023585573791780034047118 0.4647311721232196319290850034217190 0.0527062200432179317528618088778218 1.0541460121975960666620818741207686 GT 1 -322160571280024015658.1086153705050377250519591909264329 0.7067680491486004473917798444275652 0.0852102179513408445380671623049350 1.0890609864972697131361148184226922 GT 1 -761816721954287607353623410255781037.3006158938052557717394371869419200 0.4189849287377760316530527968183001 0.0397064341739206966173434000324764 1.0405162435313536137633119763637333 GT 1 -11263674571777.4779204921280885086558437351328254 1.3374742086384577424480501042817983 0.0608591832155561964575965527758664 1.0627898463907739750664387843923280 GT 1 -2.8085103128296374209481464306218368 0.5976454963244614142891871467605597 0.0138930460216008209200931618649458 1.0139904576675027987818156937040791 GT 1 -2385031886.7808258101457281701720935197104274 0.9406265724487384298340022026930622 0.0989973834785241646343170370213279 1.1042471173586197501316688280985768 GT 1 -1368722113893194238274238166205517296475955.0544915099324120940978199500403320 5.2143536094846008424494984938577086 0.0674020912737990887189565369216332 1.0697811370228252540576497836936341 LT 1 -1454486358.9700565452662790337871023143549721 1.0276202723308401157447483775166472 0.0992956917533721563869087514111854 1.1045782569834644117365866511714798 GT 1 -2818629989766427869891855211842605687587.8938174792290553802599017394852955 0.6366952903865238897564569017537619 0.0796532835643881996984212509095287 1.0830048142442063950982624733249081 GT 1 -2.1261054371178530929437053304676089 0.3863275499640515171553231774076619 0.0242385024681489042484712219165856 1.0245370897145335547901560287363209 GT 1 -90991308080524747016372565357243627.8314707266048320006334930309312651 2.7562743008661748039389560745515086 0.0690886942065523122021125795134330 1.0741539291702450284855644870425946 LT 2 -39289234165653734614407602785739651709.5743549122311475244876550298001854 0.8037948936558803744909802574731111 0.0549515448116308497449230347201431 1.0565190774713216122049853933289598 GT 1 -34.6404256271895433725141720096430957 0.2455666927480637189017106071656316 0.0041566642946310445652082172030179 1.0041653272379588649700187787959394 GT 1 -13858608810203201054285696791075413575629.9919198615348741507781189578948731 0.0860143551153725079216697441167764 0.0124369535659798934756082552655540 1.0125149397546858940844941039798113 GT 1 -1435245497783929183766300902834543.5434918826988761926859673940807318 0.0881547326407880015024756461995355 0.0512865645334677291757301498810335 1.0526484907076900182841621142435361 GT 1 -905763075206680345685895469045.9365671167044684222879431980618871 0.3710542910914575619716685953197456 0.0106642953599321377588877619093914 1.0107215664924642145761764612379439 GT 1 -62919779593286005108420830495298078755220.4192440408571499949874689889133568 0.9090040805918309874540288452007260 0.0933972985875466506620419696297969 1.0980509607617011667789680463183046 GT 1 -431.3562139499104495968094269420211640 1.1859093169582799191814273767228098 0.0037912503713363791089284138257613 1.0037984553774452733970969688149141 GT 1 -914002623024003210624993918.3584713654939331994590777978648096 2.0639548198638028855786803900611050 0.0373201749064675585966475690798914 1.0380343990049774761635277930877388 GT 1 -768754893224870186760829445232076.6247635031074387100932649037893035 0.0473679086406652874719026100346430 0.0766952427916899731876263559294431 1.0797959178196551729268233911792304 GT 1 -468763286593300498392760693583738374.9438140148281687633127118043011854 0.0881650517418812533048726273014876 0.0610595046924663196223325851866065 1.0630031720613719856356834182029619 GT 1 -296552049146275363389089951298.1034027011623266890198623671248230 4.8139323793653552982865763535776166 0.0939733034876458927004570104655125 1.0986865070241053424551236402489281 LT 1 -8.5737146559218140876026565221397173 0.8102743267081748271321952455118911 0.0475611009011401089364781310012260 1.0487293219665534809191868996403050 GT 1 -17990031035236060559.8292412931782486835327382139914111 2.2139328360807680454463415720170187 0.0815166408060548609036582412611269 1.0850314918629398536835210147556719 GT 1 -1.3611494690454397545949757129160668 0.5612896474354977473186451585167713 0.0977304293679443108442807883539935 1.1028419447750537247462389761057869 GT 1 -159467846606546793077631704026703.0843724861831082252599632115881314 0.2274337859677709408746456040282357 0.0768678771714560774653920984511418 1.0799829097305464740463020704046235 GT 1 -1929543388350209521227405584095513.7720883972466647611803605739030501 3.1428049498386661851136584103466049 0.0030735967481472973822051049372781 1.0030783299477519039308190014150178 GT 1 -354412767923375460600134655023126227552269.4070266705770361434501859209500561 2.7676633061945266305591596547501540 0.0358758441349182402235289334420585 1.0365352002734557523987465408354989 GT 1 -5746488200.3295631829666529294393674490415978 0.3050354391576670512303484253854584 0.0686562011635119866131750796718473 1.0711267907778413309941810262122851 GT 1 -357680557139.1010930182633559437688836159321648 1.3883753032593447713398600389252583 0.0388366926488223474781106301526187 1.0396109496404109517377960849836359 GT 1 -1470314159243157537253169.0640761853134473964669184102635256 0.3281333858042394792548623191078912 0.0215282937744226909075010194791234 1.0217634080208086670151763887598293 GT 1 -2908311078889366415225205.1615240494343840088725697780634430 4.6421598179957822918430757781522557 0.0797387393954593592422685071569739 1.0830976703354529203931435743297205 LT 1 -193849616786316513.0929420053862560941050733156130712 0.2244216147596956666224965750437247 0.0684833997098359008701144335595019 1.0709412680685146076657854305712522 GT 1 -1848283608177905.9804878456805585621229340753852545 0.1522435915887788421097665756941501 0.0901329232731675868228666568133125 1.0944567596713876307794067096884495 GT 1 -2291182859827047229344697.5318643897836278875799538771393576 0.0211867945173109238705008799821480 0.0248802313295425137983311239050140 1.0251949758664556688394937467807059 GT 1 -31475419264453460914619979869.3792031210663436712613868026608542 2.1264050995173578968654101221901735 0.0111064297835604757421453918017054 1.0111685666825936267378748372922090 GT 1 -13663733718.9981285181959537598180463031426653 0.2818162354664137480371592930769257 0.0957882042546719532820171991556215 1.1006916587020481236503860123154147 GT 1 -967559286.9294450475127665323760973068875162 0.0343533717033533613348262734324881 0.0532723409706969476289392325738961 1.0547438100183443475946105814066047 GT 1 -45970335694174537074089.7824257008976281752326517585714715 1.9783165891208299156365361046941351 0.0524858304661050125742779380858020 1.0539133874841880283931280646344791 GT 1 -2706993756018772693734.2372938511197829660987367577244489 0.2290582831776455170345929138821570 0.0916905386504207209079915681261620 1.0961701419812879937178546751551883 GT 1 -1415176315815067876286936076123433751.2850683159479056566250097415394188 0.4944723692463009606210655475100342 0.0852406022542754436232697191558362 1.0890942015682532734675379459918274 GT 1 -11234636069645819527287771941.9930080239437942803425239675326545 0.1281447616518704968007730296408499 0.0327227880904039891457467131204817 1.0332701525229175186293398567251949 GT 1 -2907548872200204.2048754852257762770809543986342665 0.7263441100942587557278772067006446 0.0454020285831000295987359434698547 1.0464649994734620322301855978557957 GT 1 -191082853382.5783152474074251739249855031173511 0.6508679654987054478330947242221544 0.0798121061107955071157240177385565 1.0831773973034007974868962844925844 GT 1 -1069193611102.9955850697395931955557279989251588 1.9441711601570938887306031661044171 0.0647632554056211521584293487513714 1.0669555789691258298940228571751021 GT 1 -2290728787806477751501502369827.0176715872823038951710378682136697 0.1802321237935348314085462703151218 0.0303342330420930025087844405795655 1.0308038370091294031227739847503049 GT 1 -909247262482309851346109678305943.6444466590119882317428641867143953 0.3028517416334760745194052674224933 0.0911568431608432729426895725097461 1.0955827444236136631449016397889654 GT 1 -6581387798277.7976419065930312636278128838203740 2.5453988106360608464623147097140853 0.0378769132758893659561157690352665 1.0386128877235154882557703476222468 GT 1 -253003333180998096.3126770337521860870484311468184942 0.1313253937961773319523955958237705 0.0197697049859839995735086350795092 1.0199677400122377026852452853047819 GT 1 -52718042593981356863.1747400228386793011302308437878542 0.6675327423507368846891903160483693 0.0063603582773796710265451812950191 1.0063806715349605825581380895098527 GT 1 -2523676283767678530263454991009640493936.9198154576741697372519485213645672 0.0425828517059995084522997883193527 0.0478174952167758660385931767271353 1.0489985558590865918664928692850753 GT 1 -13.6746884937979937075033408410620784 0.8088678572689000609336799968416421 0.0277714316188825935814342306080985 1.0281643495102794510216289936509234 GT 1 -4335661081868336737954849634130919396763.2450410886501294166276620055689646 0.1120475987828035787174999924507510 0.0597459583767712905010058230218074 1.0616051831849565129291228062414874 GT 1 -912571177105639.0908704915880757396018770943672981 0.2104501271513344839526119758222565 0.0266634893204707899065071448609745 1.0270254079964708573542336089130808 GT 1 -1802839825795133501767052033.6840569284320152098075376962883068 0.2249494194102140695869732037645152 0.0965567122979362846768707992308205 1.1015419404804723293719848828056913 GT 1 -9022966330807511858495123.9467838838524606724858655585015142 0.1334752427933788413448853062240761 0.0555176803185943649314069972118817 1.0571183114519835663238435910033644 GT 1 -165689560449893.1167921318421034965706999696760138 0.5527962553579331836133562253661347 0.0866534549986068206777297157843155 1.0906399030427601795651211726111539 GT 1 -6665012811710048665348444959.0300762624324605953362060742343765 0.7964959090241681646301892843327178 0.0496792822132643255875042898933671 1.0509557536905735985038312639463860 GT 1 -139741141006.3077059974687782871622103455370882 2.1424831484861712360796615308170694 0.0087034070555666301142082174431297 1.0087415029062849502728097377530995 GT 1 -36641587412591149443111125620283006468.4145188796445149353502891460030029 0.6093748233056458379073138929929565 0.0095822495528343288666687071445331 1.0096284547092151814611164360790415 GT 1 -185420692695614761051143274609058133.2549800841141143251469138081075873 1.0267709407955351197357234063098911 0.0935374257107852301473051149242076 1.0982055355863316352511813761694281 GT 1 -13500674715052072411596637591.6031885127864727147017963549084069 1.8617275512094659793101719221201171 0.0911601853674041791278800071944948 1.0955864218597929808327323785997128 GT 1 -12963472556367693883162761.2384168320364997544053302375934630 0.3005242443580543665102652297164080 0.0242846156961692928175682277945714 1.0245843495396006028393089800834095 GT 1 -15.0051733602414064531710803626572533 0.1645743010603967382057765494497435 0.0537395033643417929637320231993687 1.0552373814141618076977711796516458 GT 1 -3292449037809116741723968975287546.6179234474793322055984165883506097 0.4136022792164306943083068103746408 0.0073909473725211649955674213603960 1.0074183957540448814032120101646438 GT 1 -1.1323835767514911369845299432109536 1.1388303015732869905272194325590082 0.0414787673195559105749832807112685 1.0423635647538457722728116665043687 GT 1 -21901930870361654115.7467246554404335709162514067417766 1.2473600912592652805385588663571503 0.0318414210545952259268796155945292 1.0323593838981998087636100554279203 GT 1 -4045526623425444306112654591333.7183833819254931025548908543914985 0.5993615321084642939866297287091693 0.0055574177659451298417322019040256 1.0055729176650082953658607183531190 GT 1 -392882271115168.2713584125861823139906958422458440 0.9040039479998239257823872870361639 0.0342383314288374663644610102564452 1.0348381951156107511713302260319303 GT 1 -49977657601763246898410254397.7481029556208946215081511536108576 0.1095613903762813497869531175923852 0.0313049484645836245068113377784869 1.0318054209189760345428052751265594 GT 1 -2704470704549796.3659599026408599787647441507533324 0.2462032783098942454758988476337208 0.0913707032942192713864242477718266 1.0958180823886495615534460209203833 GT 1 -5449416245762882148357523119310.4110625272189599889180999296808325 0.6839078299843366503935085083920362 0.0411563950852757661298197742920687 1.0420272988215653444784478062839498 GT 1 -16464907705989474873497307475.8879616049084973110635188473807450 1.4025128437882551512064019931890354 0.0012717934080480325745718926117115 1.0012726028236301267326601860779244 GT 1 -152.0184047102602527721514201657768829 0.0992166264978690502813420849797292 0.0077172642183474065801394433712101 1.0077471963976584257120210285259064 GT 1 -1006133.6118071134942871841570751306766129 0.4844205704434482909353323769232928 0.0090515052736760633695541966268737 1.0090927190337484890502982536017761 GT 1 -27084599349101692210268755488875.4312077634942295646149171634990798 0.0054907386964348139977657240072139 0.0423523444339934140526347206835802 1.0432753603479796277067478433622127 GT 1 -21774514903699281464.6486181816886015932793933809967451 0.3763887930107008909197738533085771 0.0951446545996236572877739858340877 1.0999801873944798070618483743754803 GT 1 -1353281390480817270645167866.9963360046111260135292176488759748 0.4192986442385117343312202988955684 0.0938335875433362297718019661379341 1.0985323115976963149728753931028363 GT 1 -510022840520357339948225669.4412975418105139939850114814418541 1.0898391883262000460392342729308511 0.0810961684514746760982758686163252 1.0845738067718076258524360349005254 GT 1 -2449797.6336064480440737667874539308130071 0.7424312797441292378279099204314023 0.0594295773818586900335850418456976 1.0612687551940282763268313498662888 GT 1 -2983.0970154749778018359621475144937973 0.1654058476728183037939770638112360 0.0749327416655733909252150886607341 1.0778888324001866878924249199606195 GT 1 -424636989078601712201412104949.0795724055420909430679193899846321 0.1458287631897560265591346882866807 0.0364194514864196672736214730450500 1.0370991947116872054982283682479775 GT 1 -111548556.3482414891376868453498075492841327 0.7206837167208165352636644336979887 0.0876512135567818116127162157814405 1.0917329207443716002916232491312062 GT 1 -317722374109225165796765980.3491716438858819344947983122265649 1.3342067712633714023869668911196276 0.0747519143820394815793953625317633 1.0776933767610162008853502601591392 GT 1 -2456103334307.6091645790298778148681138457206876 0.7740408261327439333299735879965318 0.0503769072339804508617586035522318 1.0516901175682769404431862129159314 GT 1 -3108166508655561007776682560.4064992928365055687534769936221382 0.7033167210192183877290302261246021 0.0474727328532258628523363991256569 1.0486365454652765159167709125156820 GT 1 -463967007209487783.6336568406270644980319121689310438 0.0829971799635793853906996676128039 0.0531561262371685600622139826262980 1.0546210634184280088595746613790382 GT 1 -9342225732504319232115747.7557293102974481416306723938890979 0.1659376523808216562140324282994558 0.0262455701773526183214143458448534 1.0265961325673240916174496775183122 GT 1 -222132.5968718647102960097122792955178401 0.8235298790630528872013005417263355 0.0555947975411437435388028670636672 1.0571999650408694154946921803167876 GT 1 -2931988138453264353888476.2454281072044865756579748759023283 0.4284827163243683857587512828318838 0.0136806300903608116249361477275789 1.0137750722515928386748888967752084 GT 1 -165977248888601.0863501333232732435699805605381171 0.1249577372559830506225001503348759 0.0847962121682525028670215376656609 1.0886085195629967641932736560632958 GT 1 -830.2496326164904991324289011507939238 0.3946324903614099786032668358524659 0.0053702697315112397029087117026470 1.0053847414646662599123401202254423 GT 1 -259619622442789.3832988737543031228257861938736252 0.9662458669321604617659044044359665 0.0674285385244948483439564046225479 1.0698094961103376894726122971407336 GT 1 -116906118183405341388111426324186346779981.6660405790021713023513967524662068 1.4942707070535184787370667498828235 0.0228484080920220843556000211419413 1.0231134783736957106313985262183314 GT 1 -16953946237041522686530844202.4317991773477267705388601915600767 0.5342045193509700698007205854847408 0.0883598708009338291110050860478815 1.0925099619574310953878497624704563 GT 1 -27408234190711286716.9039068976062583599948065760794865 3.1077844535942251368232665145622226 0.0956157763036476712466452433882677 1.1005009826752370841210157559206844 LT 1 -7701.6196924126915828039158764741254060 0.2228035425226712027896325991298096 0.0456066408024503005239525911701912 1.0466793663140573323435077413624915 GT 1 -4846206669823.9188715213163609839636618885874048 0.0059648055786321764591918449059075 0.0132102719581748504155407937317287 1.0132983037428631504735913440148536 GT 1 -559886107209.8112148814945320397349834215437261 1.1539027052622445946172135265859729 0.0655413697671464631102159613505528 1.0677879224801858278243709969886399 GT 1 -769151022449444784308360558896431371.0865096035613525710182102832013764 0.3471331446496784003075318725699529 0.0808648829302912893751577742386466 1.0843221412425456107666548562246073 GT 1 -2.9063751248360732104594916990022153 0.0459885064792528809887672733876807 0.0694890992618113464912068873873141 1.0720214880429390903406624199819071 GT 1 -4406.9979352204492664237941148650337902 1.8308453754593765657361567340165270 0.0314615318884002713799440046069980 1.0319670776553163970995179921021818 GT 1 -1607575377714941403722394055857622.9130519546107316989945012185703804 0.7236240618537654497291032299847416 0.0457390527978706225701853115745778 1.0468181153742604006416220085678263 GT 1 -116917333095564587.6045624874053108598329025331078599 1.0100941063363995424650541117897550 0.0440381924604067221791831735963691 1.0450373170011611216641527559714838 GT 1 -10299674329.7673012293885968084587303978750773 0.3356079486647499221415004629170442 0.0975004419688763437068736098834110 1.1025870784914274528944494325740081 GT 1 -794488502241582.8503110928598876053864393371374900 0.1527242853054868108025615210977520 0.0414497258044007451494769390678389 1.0423332669636452267680424565244222 GT 1 -14324675554566213969058696056581188379232320.5177820568440826571044879705566218 0.1499575297890133876372965313549675 0.0912416396120336330817633204127782 1.0956760503000097642269803360659838 GT 1 -1280642537958704968266719430.3136199922668353288853208113507117 2.2800261188968159074622360039771968 0.0234001763982658632430822059739577 1.0236783079794817292231869416748770 GT 1 -6253149235361197211228038177457145.8742461469808782530501391979983759 0.0654419538436504701613799204433235 0.0428670617512059525582617535097166 1.0438129857357374401257685928400418 GT 1 -42353.5111494222148248598495583705377547 1.0913759967908013968289865272194616 0.0352116724172229394786738488687822 1.0358465513589585671415463538339888 GT 1 -518993232823094.5554351732555723276761067980453497 0.4659444461322056909980002925477068 0.0782453958680555688508468448622793 1.0814762468904536242198670757910222 GT 1 -2760893092.3444514656262287159156426897865014 0.8885792728952431004455848455862042 0.0631950547912349330405041125076226 1.0652801878816859854853121828403059 GT 1 -144813438.2264331835916101016641854952034297 2.3098696515879596184697911389152903 0.0862393133891192139048838102977081 1.0901865726531534056134137273478991 GT 1 -135174068286671149964138506807198901858987.9526034215482299424498747103376066 0.3806046231690964215823617500608170 0.0698713133636437096715994507133747 1.0724323296801933779895881256334664 GT 1 -136820827137686918150444203191436493712751.9807939822844257483523739505748081 0.5532315848696221458038228458822855 0.0943746275853034315451992172954308 1.0991295546833172160396053293695670 GT 1 -8768329938361642.7471922556567092740774026724364809 3.7174834842565463344526816594534329 0.0708629234226603201497820484446766 1.0734989982250089289407769909809072 LT 1 -447885075217686036956143551032112285105.0950854806041300294541272171174431 3.1954279668365595968817687514996189 0.0072246695845206969979849368203373 1.0072508938941436898872688432561974 GT 1 -4121387639263778765812459696744.0405153928102545148246144182467279 0.1337047035331818908896973267047719 0.0948199799560340500065111621817259 1.0996214378879561356497719480656528 GT 1 -145976509143114113415884.4926382420011777815165588750910095 0.1568085434020654543899798867711153 0.0094020033237091630418540136569159 1.0094464811636900756869359281192476 GT 1 -693748913683834.5798231891044640181921118148174981 0.3312805269843959111996044254638001 0.0962164634012672610962375596119855 1.1011653979279669724671960369358709 GT 1 -32885772460032163390360901935439.9519270766169656747052618388865044 2.3200831133751395642933130160313703 0.0533293396026153097697871503695967 1.0548040177742621190603625586857896 GT 1 -668096985344625586437342164.7580655162313221077012740648222384 1.0159888979515431470317318914780707 0.0450420318275804580496766646225744 1.0460879518548812397223679948059895 GT 1 -9269636738.8377609635957465435826271789305527 0.0600674752761250130701295021612283 0.0595436388471167562088031314694862 1.0613900309423397371190118364887416 GT 1 -27623780080457723464119878270.8073049334826678701381891226455452 1.3225779077205727749059098403289165 0.0828737942475437381244054796258177 1.0865101872398815059974359198717554 GT 1 -9537074532177040.8661119609834453147257722929911468 2.7744987621832040813320887064900933 0.0144940615378849234194096286491572 1.0146001265707695180743659744367192 GT 1 -5.7324609212574490541113781751899479 0.5749742756785398067357374254078896 0.0809891666519867744128439796382376 1.0844573685044032813062627879777453 GT 1 -743.6974720562753286672052955169590684 0.6903212432717529672757801551077740 0.0668312944353633583936308133972451 1.0691692739399815022457702408248291 GT 1 -5084040471727364382358539921034510.0767569119227636663367834232683545 0.8339702764284740754821072848316615 0.0892854068602407481600019674812110 1.0935257204456545916826524609508343 GT 1 -1506964574794652132633044203.6312183730970375965479232582047625 0.3604412130170417143890862477792580 0.0467712237388853942789487111860006 1.0479003451016976345625264511672120 GT 1 -22884660513832.2536049049988780633392369346294117 1.0468618322211417050881603788866792 0.0062498961085691042682232262637400 1.0062695084687647394671084372653377 GT 1 -2573232109015407391794473014398133.3984664720455685841870490846083920 3.0800901611637740781580942236470935 0.0033402081836693512897121655661952 1.0033457991324513683195485678935942 GT 1 -146248933584.5297494923109378853442163754845090 1.5497295870069303623973426643301650 0.0067258311549238980222033702311373 1.0067485514900167082348311982245049 GT 1 -154.4104521781253337715619440679936208 2.3875769353590995415267036656125304 0.0408851644571541638585282339987270 1.0417444661759685297033729768493599 GT 1 -895914747724123.4067390064504237603347059239689768 0.7405102485660047527499381462307277 0.0978415901642143932724021899264179 1.1029651536785001052974021676798112 GT 1 -22857757.8303310958798105285567061271137713 0.0534312703771692710451138652556803 0.0281307388219301452200413312419671 1.0285339885291349211778391947894651 GT 1 -3011.4278838240200633056370480633995878 4.5354139208118895930666735216642822 0.0865843865428423311348400200967077 1.0905642845989714353173048403023657 LT 1 -24233882241930202179258105742793997885489726.8419702863466405247557859517582324 0.9515911106771911792794879881085239 0.0614220849814595568594296347103896 1.0633894056040168578482329241890026 GT 1 -187537515607854096.6653193334892544812935116456905768 1.6421799104475610052277036065185790 0.0664812463980305173386880981388717 1.0687942266446058935876993759663010 GT 1 -86842041698661667242172431862504232.2465611315638649476877109552940395 0.0644229014088899651251682424511734 0.0088978662069901643939369087396477 1.0089376886174887469110865390096823 GT 1 -234402086767515360354457005872.4037364203431797226898557465143215 2.1247433760328945041556502032682783 0.0295355727559402465088590048835718 1.0299805310952760960328526831651094 GT 1 -769988038599819194998399.6739171478291783232210286422053366 0.6643174059888005526123716832517774 0.0785222700428855262760194332611592 1.0817766693296565471101032797724730 GT 1 -73483776712554.6946823676250933429744888124378447 0.0335627692354031642356222933266074 0.0694257103395205479777590505144232 1.0719533676552831848856202965411688 GT 1 -1014435297915024036095781511338741474345329.4364649239650745387825709114596831 1.5177277054113736865539584584977251 0.0308061265546511065310580371430160 1.0312906113088696943970195662282570 GT 1 -1502453996581309034356503726540808.8786276349831996780067488918917565 0.1365141567222436415313102979515411 0.0866482046526408342013638785397416 1.0906341545884587446156293920680922 GT 1 -244862392806033723836741723211177445365.5198288870869829388062100544133371 1.3880988986507483731069861842193594 0.0915790322840847952891039060990015 1.0960473869872701906658877747047400 GT 1 -117797079494095772.6203476754994915403321891198679063 0.1170763812245733437974423347862714 0.0150903822621513782127407189487656 1.0152054006619079329857763836945438 GT 1 -173490141.8415865652524927782560284364435177 0.3698494072614435422739636573994396 0.0131565222682600216668231469153951 1.0132438359828245773476063679984000 GT 1 -40288854.2912408436709619717007031752204003 0.0549365643791677538518351454992460 0.0422527712887399328759386215677458 1.0431713889464054272839454367997064 GT 1 -15127277377195352620488.9341298608560967615367980314656040 2.4503055632973056214973278346681550 0.0218871834291637003387464319474434 1.0221302612332148026903567124154650 GT 1 -210374124130161682454271700752420591455.4073375786338508024902274694529091 0.6670567522220190633835870754615782 0.0353914951594872944251058521549321 1.0360329544252051089895740381481445 GT 1 -8341680277687659627.7841988568940195068016611838696697 0.5489420982125833071137463042882503 0.0039364723585586007070420569564001 1.0039442406590418384096259283555743 GT 1 -3903.9466064691328559984654379145528222 1.0581356295560673702937344568505230 0.0488128575825553784105534525336783 1.0500444509199631759788483343586762 GT 1 -2138740249158825349.8453290257378451766676747645577752 0.9157538898784285420284029719673039 0.0678856711035874769514486670126472 1.0702998013302421229924822904196016 GT 1 -124021026381039014919.5667501662450036811902236393656316 0.7117351997322770232605121496990479 0.0236463294745431813287100806892709 1.0239303908665766186374549495921099 GT 1 -4637829968789688316865052692989379.2765871428043779458747665879897483 0.3070987704951172923489191617034123 0.0789552366185190306452567854126756 1.0822466408878525182649890866078037 GT 1 -66362229363721126794209.0491280199147651470687711049232519 0.6523916941851214461092327735984508 0.0935041341193443091195314212340026 1.0981688093264163294158122297953872 GT 1 -154944243949303.4677123525690058955407173319793073 0.4514552513146117671417081027241847 0.0169066383500962254067220549603922 1.0170511870988413454289604286996074 GT 1 -5247390846108836067757821.7059125020609144572710175358225562 1.5043313351803793242197755034530860 0.0367741622936022415927852606278685 1.0374673799260672642625229543082477 GT 1 -1223356141992623037944766486.5171371743338060413758750758741686 0.1250744774534828510403634741410059 0.0949512294560546691830907242794511 1.0997664466304234133146916644717497 GT 1 -2315563.0077325837901433610040991821193700 3.9434524109642458477830009671097411 0.0746740833988968617527703716180635 1.0776092612562104686537980243130601 LT 1 -467459433065411871915089022.0422962856856963680890559737979402 0.2484382629457114801731037045287260 0.0070481845897331125335930433501494 1.0070731403738543911004789176223535 GT 1 -277163247.9572646827147891321432190035704706 2.2211194156151374922381264321119805 0.0321459014980008652886656362324488 1.0326739277536847608968074581150733 GT 1 -68073675658344501408520473120173961.9279291066714147945563749387657784 0.6202912954403599280514275307035627 0.0273288560157752147291870861495475 1.0277092354414842959106368518859074 GT 1 -25.6518197968934473314315864885092190 0.8156598825750022551439549177329570 0.0319678140132292119571805452916018 1.0324899422719951195470251694371774 GT 1 -9938070157.1230105856591241517574221197542139 0.5568347570878271958593655419311000 0.0221685895958051416159281650047054 1.0224180058066050994462812440905030 GT 1 -6533231812.6935622417245338503990410298816995 0.6952853036702209355307778113296770 0.0705802953690867621339859802877083 1.0731948611024741010378432341772515 GT 1 -194437227590671303190923.7124198721065697966284157136367948 1.3898770493271607026020111927199042 0.0739955648239749325151062102083018 1.0768762547404892814424529757774233 GT 1 -5270038507990281.0417483626228411059507393157582541 0.8746933666111076243421449239296203 0.0426139351051165742410127177842558 1.0435485572843627869898931745883622 GT 1 -251283.4361768631239059188283591923533954 0.0560587149071483261758101300173373 0.0059278860098868486652330684305004 1.0059455256713070548809583281377563 GT 1 -16722322629434482480007.8436492160042711923863659541507592 0.3087026060629418316487200765265849 0.0924465209745262945361169042749453 1.0970027845238203132570511186187939 GT 1 -228012038286507387859526261925834610.9405122900063493871750965211409471 0.8849575223012620982556636699607317 0.0134753149596697616360323728719082 1.0135669309837443852251755613536173 GT 1 -139454934322.0758159875967997280475270666994454 0.0161659622452447645311688859440548 0.0467431646223389277757582183393647 1.0478709096668040311024547257607071 GT 1 -790072477385085180636057229419350642485.4066970623634454888523884841589418 0.4814467003251985440143132658892338 0.0317338817370288731893512747325351 1.0322483139269977880643668785394098 GT 1 -12642.1575980321021723758328558592201690 0.3622526789858011687789291620970532 0.0985926379847415680512328556089666 1.1037980014466955897997178676206373 GT 1 -16692128682110953.4247189239398582939044246781853401 1.2576830094719273286004326372924425 0.0473354851532015950637974498777434 1.0484924678962266716556425207188715 GT 1 -36073427558632304.8658724494997558885068668559988023 0.0668407158453792181364142721160001 0.0727438970611749506938430152559569 1.0755254808720851913676509871417659 GT 1 -5431612.5123543738015350583844033505563071 1.3616028808643022226014288224243292 0.0679830011294205835466379424486641 1.0704042253313538257615212326490227 GT 1 -1486400501902100488857276524601635714.5068004428956611966418203520394678 1.9781344971788473863152150281665194 0.0870604214120288524974542627826024 1.0910855795606963864747283684807690 GT 1 -89.8861000467222748081060325102131870 0.8631435941789928171480854610873255 0.0990368903495972330812152644510743 1.1042909659962554141564928668547598 GT 1 -2966872903779397514071667774.6377253890617441295268477554951702 0.2694594010933688219592456284586803 0.0723485069487003096593110652093077 1.0750991630120281266105759010203798 GT 1 -3.0587486854355136146938693967580739 1.4113027398179066146830177406390374 0.0558072400719588305542526748893021 1.0574249388425382741735182695242879 GT 1 -2021332.9177734940382233791462960955151538 2.6320914718348630108545559032865741 0.0915088824464599526257896423731118 1.0959701682398927728544853853537345 LT 1 -177968.7137501746671567990161262265786819 2.1534413303138231098019752001393965 0.0034319620520737079084876937968719 1.0034378647429139895791917782516732 GT 1 -16505019943995240705.1304481726977807994840558798232374 3.9393810173418835903275809425871868 0.0859555162410076102809427371818844 1.0898760393917393976003238998970147 LT 1 -460079151539780824.7312569797024764294747462583753107 2.9986059043361978500904574920558907 0.0307112427891744410643083772243946 1.0311927164254676974162197077716769 GT 1 -124.9382267292522285715084941825095641 4.7718463811213180247481066672735602 0.0666328796573645196173542742260492 1.0689566717750594849411021325058752 LT 1 -725153658679370753293161724018263974749.8573968099547041396161442977939778 0.3713442828283759542621594355142233 0.0078630749257053279433894903189315 1.0078941519136680161627684608989486 GT 1 -49.3945386077686035740838087895745754 0.5813337174169076082904110805472666 0.0822663788974655901811365959212125 1.0858481035609250629048125158976922 GT 1 -119784692334382786286558327998.3389000868726303233879587311403899 0.3065840781418078591536899989778606 0.0452917141663836379079890610547860 1.0463494450238600076302751032875170 GT 1 -2504096737883385317917661265676.7920310742736287607877192384413553 0.3996883790704129403234416072618110 0.0203587214670366985761367549660425 1.0205688166406625562909486485513385 GT 1 -73.8982004528323905616320699896658455 1.2458193223560477899525778921017327 0.0563439863090751253433931739124023 1.0579935715201972272710319902260480 GT 1 -2830513482227563354.8310700248789636750565174221068083 0.3748069597301177710045577276271545 0.0073490012253318762539697970177958 1.0073761381695375973140531954480233 GT 1 -2746075065585804189138345656048318129894665.3395648072031453495536121655428568 2.0638269827494649902786000078374717 0.0980122645919446691585318324313919 1.1031543561205410213329925752390148 GT 1 -705335932651771891174792.0955863801609634547021277639373786 0.5848010226943847039971212511065436 0.0912531169738401320636706484870640 1.0956886800977484400005388214708628 GT 1 -248205333111616674587786765.7618293515897910943759517672632393 0.4248898567262789461225964483501906 0.0587159981576964091182136051287926 1.0605103763852450804821501691500903 GT 1 -7431691275827373276702776767267496217.0874901145268070061159649307744842 1.1372551413445764309960571855790849 0.0667822389491984865633177111746146 1.0691167065997723472869703597755146 GT 1 -40343999362708704601581339291710989.8866231150073997457431533391206938 0.1297405409116257883199661760045221 0.0040077404229736709418881951998640 1.0040157929367468607316489785292291 GT 1 -742957.9152269510798338074289346010828863 0.9007894163379104407010815704685361 0.0470619459284907335639514973033923 1.0482053784148718057685796836356329 GT 1 -235231245738539.5255334242897934726911689725628248 0.1670108646600614137882702442591640 0.0911545478657142127107535986275742 1.0955802189138891369595503758899437 GT 1 -131324770969.7257704364101437924962062436123118 0.5037658181902831222041254436730314 0.0232635202267441239787550816434865 1.0235383871972707231641968023995496 GT 1 -9622784.7436745355252756361320116106738212 0.4693303691683743336349457514116870 0.0723061736108067524050152149927638 1.0750535290942260541195391732719009 GT 1 -400785505222863504585805023417583930.0208743750760798844831318848104994 0.4067351151829480717672464116000273 0.0797415086068459858409337387003518 1.0831006794978198257137643803076307 GT 1 -892504.2409223860377949282370960212445108 0.4366932783089222075794722193454526 0.0327512368061951653579966414219072 1.0332995640853977860707177605635619 GT 1 -2902452956240994669085668204294145767.7343518494616581808886837762907625 1.1620036333277835594435082935035272 0.0789215973200319148957432974132656 1.0822101185758696800349485492948094 GT 1 -2.0734975503168972654296815078318354 0.4931591201248648002637913410492933 0.0412365815371013192632589224672338 1.0421109306094079359107720720514484 GT 1 -3631496305083204.2949478728321719814798228612731259 0.4512914945980890973291024870781753 0.0511138718584659980834797117394717 1.0524664789926892763538335317634583 GT 1 -209438518105366338969912392999404938947.6649892792285704591275714838278664 1.5139189202106411662619217685369790 0.0788567743930804504610329233730786 1.0821397438435542225673911019924319 GT 1 -24248971757488874980857812100682330769.4640581371983929457292214171534897 1.8661786363342034500182673080390892 0.0450601552783388557177977746252575 1.0461069303055989554121525532841819 GT 1 -647573704.0307311414035595644441852475152828 0.1980459642445310999804808556768235 0.0260946178854237184858681477068372 1.0264411236778804981541919765850473 GT 1 -407658462415140017177969146067991246.3065085499675500704758094995352103 0.0929632867771031678200016661765226 0.0552861512575856310571527397830087 1.0568732029068386166095542835504086 GT 1 -898049247055147565279229384075.4412427141796255611195976846369595 0.2107612570325384763343559707401024 0.0982683565980566726294906624493027 1.1034383160433997021351003332488286 GT 1 -437489953.9985004408932409899292507123123044 0.3141554461686302725416772516258473 0.0969833490239538752118864502796436 1.1020142861160606198711118305907486 GT 1 -1353480517545467537945043874653209.9845950105712807848317447199961243 2.9939886131466235209725421853028465 0.0007379197993838826476959955130439 1.0007381921962119628121794063512439 GT 1 -595277299127.6159678104080133155833287326603472 0.1656155624835338507605337029504181 0.0773371768252762006601236635634879 1.0804914165556939799659480381858253 GT 1 -2857376897889443.4492264840392557689940738799196238 0.7693085278841268750055251193526047 0.0499710987029117472554752685605460 1.0512628724323152717251693247586013 GT 1 -2870215555294841909.6512789773129953095234638537901998 0.0049890551334150787223447931614729 0.0010329837222735325656985433069310 1.0010335176176606036573344837849773 GT 1 -41777588.6241237016502798813025624193909545 1.8437606954340586038883009564581116 0.0607995055466860548086760903336623 1.0627263034462269094051829326297387 GT 1 -22567993036.4975329400618289866919345685119374 1.5716842469580643651956735263297452 0.0807846121820708361218948321130786 1.0842348121417478561591282937676450 GT 1 -466284798087175072027887432.6462259519023049839258749597159729 0.3706520557995590658114140045457212 0.0446361489022030923208409256989410 1.0456630151479969664830214699662002 GT 1 -1.8141983851220011936478617841800200 0.9438148388286758388153293239963872 0.0391986725372973001987842505979779 1.0399876265950209743505315443592308 GT 1 -692920680871680980196394450384.7483010765203884001966997080604693 0.3014267762000967299343865543527054 0.0959836078409990853588042214672976 1.1009077858351111487224250019212500 GT 1 -463767336402506103709301948354.0796687584364872776831787671287884 1.0590837959951767302589392156909090 0.0897957932371922376838491030419640 1.0940863016097840356266242730190488 GT 1 -6685920327332340351650.8352577541272613856177065225735637 1.8514268460520662363217252068767173 0.0671376443191488668967037599968099 1.0694976177632974167028619684447431 GT 1 -30.2163859696022010853731007644229209 0.2482642865536341998573870670688030 0.0636253522513495808171583525232396 1.0657396179003571496711156483289904 GT 1 -56079032130416.8945866399959438873729934738625493 0.6081008880048878796657964842386125 0.0762691857470658001824130286064646 1.0793345763503690186467019179306118 GT 1 -77483.5979884877969654590908885598183057 0.0833700950986207909182691473296750 0.0280501701920638827543767212454033 1.0284510912777538448298576189770186 GT 1 -1197679930743607225215080061.3174125111776713024294636727187054 2.6447883072541988132572364424867981 0.0424447379971612447177902127686670 1.0433718447073046343277275919864629 GT 1 -35714542732572265249.8507225355514224236159070694836641 1.0245112430863559392261265019973278 0.0081920691842468754755451388224415 1.0082258085729551789144967487122267 GT 1 -103383081816.5927206698641797198777980074573982 0.2275377330362739487808442922496747 0.0564182628947470292495744561754157 1.0580722861237800772879800574901836 GT 1 -8.8591339448987779788958257625100519 0.2407001329295064395196173823570813 0.0817408235468725677004218215000265 1.0852756009175079926095832921300242 GT 1 -213877266966157944805398178324434636767757.8372633463634145643475846287350685 0.3349740026992196278971820492630246 0.0227149809956046251639461063703426 1.0229769407179029679444156123991967 GT 1 -1940063688043579.2087326273630578208831390782571273 0.0477209538923794577254158062362138 0.0734633292320432763982054887128332 1.0763016541501242066612879758794015 GT 1 -345012247330010964080078385708264803246089.7272257121774525523096332696702330 2.8456114766869068224128026729042327 0.0288376743982492775473657042734330 1.0292616510255370890028583814666009 GT 1 -3403842798939487413558206976787514471.6540867493119123376780689199326012 0.1918494566581255486287575259681739 0.0829539596235952575444979461617474 1.0865976003781750978959817298661761 GT 1 -6937.6391868850111615338172834480962083 0.0051878534272381436973997021879660 0.0478954598410390534408723455753103 1.0490804391282227491491676200121167 GT 1 -9673109502917360406572203805183946335646001.7700965240464056379086091737432064 0.7704870477936092114417926255776924 0.0498887027019034740431079333112280 1.0511761461990396059713430422626115 GT 1 -7407632411592248.0535564991830288479119205585426438 0.4730874412172297364076538243536383 0.0341833636571195733278971070831096 1.0347812802376657151703742029202127 GT 1 -6814925622065860815369756848187487921757258.6746957471835156930232125150033143 0.1127330913820564764421927136460793 0.0270069638188024752542383529669445 1.0273783538811503110251313615330037 GT 1 -4522700486797687502845825578849414025684170.8321804731922364515602462148053238 0.8712185564748547678629253836159901 0.0912510116393699212544865539145389 1.0956863633557922612130520026947361 GT 1 -244259531419.5827640764283601205563218773099696 0.3065764651824869644448737218376209 0.0107496646395317402442562145140697 1.0108078597118913107957009063835286 GT 1 -58607450.5745420795291601034243028974149186 1.6741958506094171032134790372508297 0.0306540076009117123979922933729411 1.0311336695232176735397054284341146 GT 1 -423827389262.6043689560331936261729263291214144 0.0992748372621898387572485627079172 0.0535194908211162101930927309647374 1.0550049010657775125237325770317524 GT 1 -5691819778933868701289621251548783.1991878392177267649936789463002046 1.1647570316271998936273946509736226 0.0327264565081775682818741904223429 1.0332739450496975382499824256479385 GT 1 -7374774479.9296259264747377115291972458808539 1.9742047697698558829508174468690560 0.0986821867525004730527310390566300 1.1038973496657822923610453742230379 GT 1 -6416140415975233680415.0591959521520610483467374171112254 1.2642569861440266055207077851385556 0.0686499042844879832159040015333017 1.0711200297324087513613173367609292 GT 1 -2697528556305738395031561662756.3301609506527064441714637302366004 0.0324709258232285295557191136182181 0.0716153361454588769174492521841747 1.0743091236168921172264358870699873 GT 1 -172414770322557051940659100.2003058554144569967713456234225452 1.0058276200374086423143293817470044 0.0035137493965207395967291100583400 1.0035199371129068667740362740036887 GT 1 -2322591963047237.9382011069614156201375651581643078 0.3937920401833124994913205633273699 0.0943065931553850999763500794337153 1.0990544332516516680766993681819751 GT 1 -703225831.3374522666192298293946594875092054 2.4609788484221938392639494284236157 0.0877959527167544389537879894667186 1.0961136089191376167552715310759945 LT 2 -26435519321965295157071992975675376509922.2120425392594720963593373811217173 0.5866642490691125945502021543235681 0.0338297638857111444048666450732023 1.0344152324343419031212748410336017 GT 1 -21807357588155686772804730176638550835.0199198751370560282430415037796662 2.0270420153477186051241635017285196 0.0925349008637617273044251566006881 1.0971001718347477831321863419868487 GT 1 -13167682842707111819697.3964834979801812198003541639795783 0.4720121629893746327216547183164861 0.0773225690299283570813880470376638 1.0804755844669338303723733187839868 GT 1 -26.4194120447988026493500739274858968 1.2862225696552496990535568893659739 0.0894926593156213721243428114179947 1.0937533175906550258135310806349840 GT 1 -138075557708625782200497.5633181539435646975351991624469057 1.9635907855102381766340926426573372 0.0983350151093698124411631714279324 1.1035122415573967071055013749111089 GT 1 -19122375249997616522172702313468004401559206.1255359202482148616338529356665185 0.4881946787977121101776854923848746 0.0457576632342217118042516133717325 1.0468376180248536830950876227778718 GT 1 -12174008239779554682029853869134.2174361125793012960238983232439861 0.7747361971451303891330275566803654 0.0468782058623139083952680581465780 1.0480125827196908884499720092794358 GT 1 -59638637115447623.0033680903801731255727298674348427 0.4803239392609642206588086419761311 0.0143208153248339105017321180313043 1.0144243478359733039606284455903399 GT 1 -29.6903920209749515249558877316190974 0.0803225671085113891919791986912570 0.0505566328965274128728412226252121 1.0518793954760083907647621908290827 GT 1 -68188370586651.3100836879255684996361582582066717 0.6770976115956717971871558382016401 0.0864557235288757998487422067951211 1.0904234352952855300292322072902792 GT 1 -18.7047906060561917464067635410313508 2.1107503577596364714959234151795135 0.0100169590614071481095476143811744 1.0100674663652855457055484354167390 GT 1 -82306020765663160120503049.6887143624416209757838204026267107 0.7752940795717492897866061478814902 0.0153270997670836985437429012290038 1.0154457739429583644602665892359801 GT 1 -140583037934702.7336983472609030557547692004999164 0.9673814640670017499707299622051221 0.0942352503431985338898928847278590 1.0989756648716397975027589001106715 GT 1 -29372075457267.3656646805828038768250647623672457 0.1654629048661160733997554509828039 0.0937746648500510034805229474288570 1.0984672895698882569208217536034073 GT 1 -33676687740.6345603120838223785188992971486177 0.4948160010600183626084066174958122 0.0298741805326794191489642075036297 1.0303295051053736725930399633764995 GT 1 -550625.5659884542761853617665860641392358 0.4239915252709704332454173962281816 0.0672436153654421207765257421170610 1.0696112219463142629607904521413263 GT 1 -1665336044201328441504213997998231428.3917217397811460609922747346891420 0.1865422101909935508130078632087482 0.0383919357100322640516223529319639 1.0391483289115172891810673729640080 GT 1 -23654641401717087953089552343618842612795318.7410603312281609554419323330807186 0.8616181705183470596114097472694209 0.0530978399437722134796732556702375 1.0545595068080126118596476090123273 GT 1 -66722.2225030094478874488164487008462521 0.0457510930706343427830950566565497 0.0494950984933945349859273427419868 1.0507619603003996010736014384588912 GT 1 -4092062174982053.3652959629758366868778628399515275 0.2475991484410023838816852294336440 0.0571644926524008822881366076097878 1.0588634470387605884003986870644337 GT 1 -74584328595.5882797043733580073588773885950811 0.0539003012697887593544105742152372 0.0522192758214145596855490006233151 1.0536321070910078592018523082645352 GT 1 -3829150160668650776383183926079296083645.8548473058310282450370708605095247 1.3559647676746137311362915076825119 0.0540768894281310481026407460808801 1.0555939916987870311197940679271892 GT 1 -1016836827773475440165801.5146258942477011779947599108419463 0.9141633389814562826326184294522722 0.0863856358905798910905465737508462 1.0903467176674083847969625760285185 GT 1 -1049809652447399589.8499052457984237063538529049981090 0.7791161225777954119240370313622857 0.0663840022902261339371939385529353 1.0686900626491320894757122937179164 GT 1 -47110334750096699816.4457402281905891275713182704541291 0.3899034435592970903736321076330732 0.0722889204692081826848188805449297 1.0750349313837812688095698325081961 GT 1 -7793959797416522855374700418078.6321477422055078859403472450239158 0.9919219256027090115143735266968697 0.0475790718280129480690315693189045 1.0487481904697536558288711137929667 GT 1 -6453228380841835392757535155.1118134622897788253699648870872453 1.8776077460460997972182744763691542 0.0796524362963413514075157919343285 1.0830038936480422300802421454037079 GT 1 -1313982223297241967991862602337938254.9882016413708578353957413943886053 0.5648023538407758507652518263740964 0.0694050557368867992787384858294043 1.0719311723575551497292621287343949 GT 1 -33150335693137712445173927.4464256137385012481044493680820723 0.7214878489450869248033159191302293 0.0362739050854142004991070797939067 1.0369481586513089142537264552928793 GT 1 -5536805.9933389340413967174813826394751585 1.8760155997802744663142916752075621 0.0091943246705739651409865252466874 1.0092368533560606621829527252648885 GT 1 -110831160906388380500374496491924373.3595380417548488804359268872945489 1.7198870285325749884452134766283739 0.0340846660438223078440149487637328 1.0346790946188524920079654938865324 GT 1 -3098206248564673012740178327.2070748229024906685087225585704335 0.2456799955668525818524451121514972 0.0979559131692853950841593821139556 1.1030918833614877241663589047709369 GT 1 -154518909549854112081494331536260227997.2074998560593215346481375760464891 1.2327702353152021639530517777195488 0.0525832082061497949733590085483149 1.0540161645690716584677716368937470 GT 1 -341243216767882198.5599032100296587955741375484539749 0.7440426937208477838245863024830640 0.0541302422495355087295256296076716 1.0556503962051280658334393147128383 GT 1 -1408084447569767844536946236042796846173183.6829574805909248352364124585188735 0.6443233849619601428603383091428232 0.0296900522085931864721829342267853 1.0301397247191885713264260549936336 GT 1 -19384354161.3535572020241301463148862878474876 1.9198446620240099418799299657059036 0.0695409239836644659205245804858024 1.0720771845050140962945783092939645 GT 1 -1450786434881.3613453237339954159837596515848432 0.6844054580009736569501558054973122 0.0935240841859229734713221118051281 1.0981908174644148377479441732243141 GT 1 -426803429582287272413885141527827859822.1096384215699688455972341857701510 0.4786352082594064112531336559481492 0.0787827409296529999461836038825594 1.0820593757895463035851991436073874 GT 1 -28549394493418.0998124930310089092724629453510620 2.4308451976096139919699656380176246 0.0567695993634210683086812161567076 1.0584446988994951338549188506072665 GT 1 -123423934489929853455046294343682634.2891206217365381734048560111662823 1.9196621655980835193177269812252328 0.0167977210245310376017333441646640 1.0169404028165327667539414591396144 GT 1 -1565435685560870589891255544652169691334.9338582547088746421272572756293494 2.4210500229979971400441226126836300 0.0298092909890969003553508877690437 1.0302626195816415190409479759732464 GT 1 -965347707127606842854534488661.0554350008734032561176194789342462 0.7370338162134943171525539434198329 0.0650140473537008511642631752748743 1.0672237737140115299485245216742718 GT 1 -66104206.3985348270706982319360014285357065 0.6877139467165594114356966693584857 0.0979211156756171661616267177701202 1.1030533078383899114118139837749488 GT 1 -4163239423820520364490887197.7587902802002676369360115238114796 1.1025946864016962296766382779960514 0.0767217274982337106758137213505409 1.0798246029165280839461330880859384 GT 1 -1467030776874337445024297087.1420645514306217857197650424866351 0.6688624001239484828450532526268629 0.0816634534134377007218815976681432 1.0851913470640223891308469602564039 GT 1 -481772405430971243080.4279789177314164397715282951216895 2.3075281082581745832328172506346163 0.0561683395330967610782818338299368 1.0578074545151537241675900037262712 GT 1 -252283105.7523465805202973568674099785860409 0.4039571413239836699287671030088234 0.0349789400382070744335543578329023 1.0356053540866825984396009028223839 GT 1 -630532233042266883731734446392804887972.5153804350577510398331309201516830 0.7969805616888386309552235936187432 0.0332669893143060847490568715602833 1.0338329222869104330402680432265296 GT 1 -59680366418858523955851678578948265282.3248142640619580629997856280498720 0.8955001977394277838886199299516480 0.0978523063359347156265266423669905 1.1029770321194139413367262584872337 GT 1 -9843767830858230527396869427478422.0048942858044806592881840516844073 0.3127796264271705826726053037457081 0.0492578526808757228701688480749639 1.0505123916671209985752922306692829 GT 1 -5.3473889351823066732443590460047925 0.6777489406920113314811433550810243 0.0766997495545783365495724812438140 1.0798007989532703129989078385294243 GT 1 -101055732370.8881147253378770924205811960932062 2.3032398987917621083169070127618558 0.0422282760677363048317052877101127 1.0431458134009678230521976238498587 GT 1 -6725204888393768006242733.6938574167734586824657166371998177 0.3079565599504604814795709069353085 0.0644862825535802659934234173599524 1.0666594701511036814849254315255633 GT 1 -116351589949478672297999.5671162903875075616316228206379552 1.3564615188370575219565080808038656 0.0351530187628673503172314465040149 1.0357857588826750320427218655762186 GT 1 -18961105875318721385.9089396278353257936499516716365337 0.2838529032554596131211008127123320 0.0076660194247357300731050979922571 1.0076955543922266330372577335156653 GT 1 -11178.5987523757701100371094333031958802 0.4152214431823448161485846925905350 0.0027309795073717544012614801048634 1.0027347154352852082094863165945483 GT 1 -11242930485687.0222905361281970997908667671588111 0.0553912462883148998519936460723542 0.0131694736562357498113472275016069 1.0132569601238419594454890251750367 GT 1 -141782664810136489164966.6742836329205726635582022624473059 0.1545102452973566142284962251585886 0.0992498140446300669758208426946685 1.1045273229089155783894337097722911 GT 1 -508024532975061914109675635361944728.9471017296333022218836494712669479 0.8302704016195675369269221226941595 0.0093928964665192287402579381460728 1.0094372879133910186134120992939073 GT 1 -10954882056180950543791006693662383785438.1507777196724981847959163767650334 1.1553920672398899088119455805793911 0.0619327417927507620266259145571925 1.0639336287008287498080193314659517 GT 1 -74739702362337736372352051195608.1454685826053509605565152267986023 1.2797136713579912731439975473406203 0.0808121254221752914933169031501081 1.0842647438119850543001172416895464 GT 1 -106813677367517065980524.6658541684222356429599298946353124 0.4011983062723441652972579498368751 0.0961034928653004963512817367516330 1.1010404084017447133733673663402436 GT 1 -187166199864870136.0798413547897220196800920176475589 1.8474946641200559185398685033342648 0.0334304555602731294040725826051216 1.0340020279925054790361374028431882 GT 1 -429412629937.4945892206033181680421493514572165 0.5357829128083970123304629418688710 0.0441622485837300738632331876053966 1.0451670964259092112773109207339714 GT 1 -108881158481455427030.9707736520483402791412370537125217 1.5641457189044981908818343089914037 0.0940553478524756192880542396778595 1.0987770651501446697065813177820673 GT 1 -10842117090572912822333475.5161390053933580415238435801586692 0.2640469985117812523894629418605088 0.0524677784764573232537727680175548 1.0538943357187711803965479963521847 GT 1 -1.3738121229682888448864889951957495 0.3662146879654625540424497220721722 0.0125070297861177765059163353776939 1.0125859010029508656009946299439131 GT 1 -18545201394576132987.5352072784975776718707201879720848 0.6274967712255834413175552959670727 0.0124434107076314940074624877403113 1.0125214782362389356014820709836157 GT 1 -169813848108389104359121967025.8803545927700303232519109240314268 0.2743704063718672708751518799324976 0.0972935600444989906790314530471485 1.1023578725996745898173487823383865 GT 1 -35894758824257.4417712847783216063657558322259090 1.2817339429134429557723358056664226 0.0210837165749402038003104087995884 1.0213091524419679658594800455230916 GT 1 -228694417617749.0303690324080713489362289252986658 4.0178898210394302720592233132185383 0.0866455798377642598450336895048737 1.0906312807657780198772747360790639 LT 1 -358.6349902860229405926867190559460536 0.2008051016965824581482040308463233 0.0389695038068804821782785367552804 1.0397491367035724183916578713617336 GT 1 -536839648585527337102299820169244161872.7117670524939357089318956540708694 1.3738224044103156259471056650156028 0.0342044386315806781912239711359029 1.0348031013614781575712135106914343 GT 1 -377133.3631329586806764874890551964598629 0.6891277680931003270046330202201280 0.0213098720893097018374272666563720 1.0215402055423930945933646875865069 GT 1 -464361513120849779983974782710092169352.4370824759770544972091547922902997 1.4485158918300029719155608728877173 0.0096537001071063582118088885855843 1.0097005991469040149763254534727665 GT 1 -35573206288082270965828435128.2371559864752016707254537541156884 0.2445580035213342555874735627200748 0.0972433760673744654508546281127793 1.1023022813465039197854917143355893 GT 1 -596903.4342606944882111224873601043979240 1.2753740904845473220586418846025952 0.0023363948145121049557471407878778 1.0023391284435980026937825965368919 GT 1 -1044151441944907027458800305199.9315956901217173566763303645234820 0.1451150984124007101503118207203100 0.0161382024473579930020486403576745 1.0162698414354821265884687362603323 GT 1 -306391149957.0266495214520941378516577988276269 0.2594074374823879233282347061152503 0.0764584265523878496598495359892441 1.0795394630874242054022498585469306 GT 1 -1231408331649712300111005937.0493733179452590570618534975743813 1.3391068329611481496173464474541357 0.0999108814510840632886568557450298 1.1052614999501366870119785079260422 GT 1 -15263348284854.1990040196002670392447553990198320 1.2953318894030114133749443837531770 0.0683188202288638678350045968392958 1.0707646046104949638579256745619821 GT 1 -1182547231003889.8625601794642219258916102128234588 0.9648263288563384285079322203594486 0.0100947328216275674377353634472591 1.0101460301508703920274292068964801 GT 1 -5433172369316348616469611603530957404.6896806207492182138410632523180833 0.4023926402470778971117138939099863 0.0813587750210775671040129676802385 1.0848596300450469351880283401753035 GT 1 -256418494220737176220.7735303029418189341566067576454482 0.3250317631898763163779700983311311 0.0505658135515601079737932143279174 1.0518890650358129120397469031234481 GT 1 -2380305595432024735236259681432537474.7896098713087885588209565998270031 0.0562634600949174437628212399117399 0.0090559821984584868685342026442465 1.0090972368617882356489323329228645 GT 1 -140317.3867993279293660161362016862733813 0.1339632407082839102935182962266650 0.0836854391058112647684927606401547 1.0873955661690000511554439533029324 GT 1 -971282148644764.4791698763386587215811013787098862 4.4004059038811265538596162047565807 0.0379012186257269584873972378886109 1.0386381502467638130179694679940606 LT 1 -395273.9839193606044496653573433509227431 3.2086610123992242848340113908000655 0.0815379451207681954013906217507739 1.0850546872334185553470809913590525 LT 1 -14865850360479537400122669562.8252438561537452047199645235026156 0.8487656031585172339810902419340589 0.0194530581933902585660812558529393 1.0196447591152748150949442401669524 GT 1 -205383503857439.9434293413354933873534288365051165 1.2182046223870259989457947270777166 0.0326462673488652754897034165032859 1.0331910462294988609792036607351881 GT 1 -2457886813668433886827203.4228793788748281910294442468964726 0.6493879351600718553348085595222353 0.0544605146673288396927138125407813 1.0559996304307277636075704716250990 GT 1 -9215390465.9041452430950957553483833600603773 1.0638569566923896093959770973257232 0.0543227497765592103291604707295831 1.0558539412683771617515311531667489 GT 1 -36313372556617196281.4764841213301260108580602491661505 0.4771021557642849589384519641850901 0.0369331655519554633854630101882014 1.0376324672578240806729157377557845 GT 1 -400587798567599884741923484053.0754037009001094834479116043354170 1.4376553250895080659821357924378977 0.0984796970387204094393482957817423 1.1036727152820170296491527144412627 GT 1 -2116198805033473383305805489566888.9055286896218164597345684245269422 1.0642671612352309390354044592931159 0.0448553690491980696455451960132564 1.0458925039464157167468562832573996 GT 1 -500340302103340890573912255.3143885548121858593622887640786943 5.2472384265916144232125835738167256 0.0328174725524859044574536907844573 1.0333680449320808079762931572324406 LT 1 -6423878262651698.3630230116499302748045488009361214 0.0445303975777145938903182475438700 0.0492991816194502012463686664518077 1.0505558627986001160403644493827911 GT 1 -1604227505765967520280895567.9633243831789170797775201564321989 0.8867367288058486869297086270688226 0.0142166817126563991953201109008416 1.0143187068591676335553791728653833 GT 1 -48005547405922784020028774610444297722.0598447630674621622890937300519982 0.7792257795490432115689105953606164 0.0585255449963331672833132066662839 1.0603080634849148869321137950998928 GT 1 -145873050912893691882473736941359577.1119757810201524162640795378374901 0.2684681967073180639412130682586783 0.0539011919494459760278498583728486 1.0554082671281985108694025553688530 GT 1 -4563405146530746.7689649015470297201679457556074598 0.4081821609845408599685848725189753 0.0373211692003931385660279718525843 1.0380354318451940630546327503606110 GT 1 -476996443441000499664992268370532318809.3556339138373960615128823731087329 0.7845747731334545935272517571180265 0.0296991007767903673600788253798602 1.0301490502036989424164492802167093 GT 1 -1751257418104.0526071306323509654361022065262541 2.6527798364657658707712125796861170 0.0363509373504257552000797491439676 1.0370280935459247876246324578105820 GT 1 -2082582373343549555469.2835439780296106960773215530659687 1.3602914880124113266119729894303052 0.0998929958330727482566486622565531 1.1052416292062924878300250559500169 GT 1 -99021418.2282783266841527268444924451903344 0.9574339769328641849117435281333964 0.0012201518286179479041490446073239 1.0012208968199237150891142538177494 GT 1 -1309551748093638.7930424563832412276187789807600776 0.8885190188085230550344606436770051 0.0281946906250701712901748580065420 1.0285997935812068928255828505445069 GT 1 -35052755055123189753854296989113773.8833440528453491090533464528200308 0.2314082927434279520265595834196809 0.0964869486573160667866632903489377 1.1014647237385429012358006606341332 GT 1 -1539583972307277164947121682410.4366490379857073763903133844920461 0.0984165919052123275323257642244258 0.0420521114392140904250281580500494 1.0429618985651328240486246456266261 GT 1 -937221232677721769.7742299042291587922974039865059397 1.4855871137476577642077162281256204 0.0889029087807089522151088014533848 1.0931058108705475824179218431837848 GT 1 -4047685465560.3753817808534315078846713368407588 1.3022272332069115294512607934339460 0.0696845537065133949300781623945074 1.0722315607837218326729736448638931 GT 1 -155232530451126792155820.2838596863088478517155040045455081 1.6233250330089216435897728562486567 0.0686781353687331898120207828921722 1.0711503421919811952423073431585627 GT 1 -839487600327667372543.2699780553137344571166632456738410 0.6330730146200371275887359422592593 0.0585980895322751305231006673554340 1.0603851206271767979585454514211477 GT 1 -78033023227337675989309580961.5755888381042186740886774887723263 1.2524689222160979464464784163302918 0.0174476789612203792471738131076506 1.0176016836909305871858207190601686 GT 1 -61358323682.8050741828913403344265334222867297 0.6478990293938568890600378664600834 0.0163768878331561560279585198862721 1.0165124713898873477059569170145233 GT 1 -201446068924835999053876752962249.9616430392344629432515149350209389 0.0091766531787796910062777247761407 0.0036094416122189730182161173265062 1.0036159713638350154884402511412763 GT 1 -4890478832966001736327.4877575190586242364129567161699333 1.4602839304798002848274601991750658 0.0124338120365674676171749596521706 1.0125117586672332678409905451812305 GT 1 -61433253767.1238255520294239504036982732881983 0.8746314833372157655045922868315458 0.0849824352845118780952896728271014 1.0888120174804949327690076674699478 GT 1 -1054925.6826024396781973616448821526830279 5.0038041110489219881972265772883498 0.0713375619412649944175337446800043 1.0740099667393101638728380677728914 LT 1 -71241031609467666.0719528729627664207241915278580263 1.4632184592606388043142403385128590 0.0811557358160060306289921915552249 1.0846386332457847049105728934366614 GT 1 -1367910893.8406989721303706499595579970065330 3.7671883936336812192117694543662228 0.0336669492888362783183387474060676 1.0342467311972469307706922704374246 LT 1 -1218042.2241984111373564773453353810113394 0.0169505141885441565345624780307534 0.0276799350433475290366883285064388 1.0280702437892561238412090003133235 GT 1 -232314.2378371265059051707441188158255392 0.6990421583188058482268160637599754 0.0036641512637848514678307260860012 1.0036708807095274672273809536103636 GT 1 -7844234590866617407.5475133790328130353032857349474839 0.7935955501986791692756572060224802 0.0985831377986937121584658697663429 1.1037874622206076197094971797770439 GT 1 -1137901619671024.2480027552709839799210566287351439 1.2963690525592317436790913473220640 0.0188440888239520668449966383521610 1.0190239011825113168889566515055268 GT 1 -1032497155861375336.8304053351589995411555220619040266 0.2872975623479382274574666378848718 0.0339369944598039812675638030167844 1.0345262237700577734520476898147619 GT 1 -556523116884879556136114212.8881761813865574425406722846606349 0.2631601356953355545682961903410243 0.0997863851570526056167602400612740 1.1051231939953427919998616333904773 GT 1 -87138971576.9852681214429113398348230883664258 0.8401013982225156143091561824321727 0.0010289952292517687700234924518047 1.0010295250083006035717618337340507 GT 1 -584448194948635743778903477441946277117.9061664282979648223024126480694948 2.0574012825899864629758996210286746 0.0140901915544607695298582997729596 1.0141904007281027517237538914168566 GT 1 -25793389533988663973187443.0532851725652813828949418193097557 0.2623922983187531557451919900140069 0.0744165129940762204388899609037134 1.0773309435752031494477021751655281 GT 1 -821555064.3603320664496222854616692544757854 0.2904180097510673507629997025190332 0.0971888435161313428375772241649164 1.1022418764679375501821651312366537 GT 1 -30865489960890677452382.0074178644169815107816276553913996 1.6126730433275708040623611387847392 0.0329968004279806976329211437276375 1.0335534747731798470179377587527079 GT 1 -1121264875260.1139865449847444758826748504792912 2.1000685378330177195434949725384256 0.0482675647784038452991150541690867 1.0494713391337535645497683788790766 GT 1 -117067242542436222811745.8560325854415064841316780741007667 0.2490039698783540770678317750833134 0.0854841320457971290342451024820617 1.0893604597936026735746931421420726 GT 1 -218753780633558.3490559874795106152631172026556975 0.4673405177194075470966864207904450 0.0693767254182218064906029183518964 1.0719007295879966579835348847231517 GT 1 -16560734521241646150.4828853760409475240921509949894010 0.2898562531734295381638291749946092 0.0930740655208482749313682487694732 1.0976944920920325154831596405954227 GT 1 -19.0985520437592366986542884909093672 0.3727880906945532037667655444528586 0.0396642614308959805582826780856652 1.0404723279845742478592826095237939 GT 1 -7821.0646543501919882902586718942009070 0.8058155411164607406033734989279248 0.0677832788984742521749854345221833 1.0701899579575039071335549132263610 GT 1 -1977248247757242530251323.4003428382515088652397400618501322 0.2127793280052275045763974113388825 0.0589801473600740670543421142731038 1.0607910422336230094697858505405585 GT 1 -17304700878569643385322342440236441.6451815559325274035087754671944056 0.2147671836819495368610155392787464 0.0370521997468121495152950444487180 1.0377560739977351795886400180511010 GT 1 -654506913928920556880767288.0312544461495862042943864284590610 2.0862688570877705904010425750390730 0.0824546183566979201001212841021138 1.0860532379951018744772735973470400 GT 1 -52478888479705.3786093411170003809492071082543195 0.2199713738890333915081616111489081 0.0704980928682012916983439260126224 1.0731064200402809475734760509307043 GT 1 -1030403030629706761514996958403922462595032.7323696677944896320811294069766644 1.9823354586598548716486359718089102 0.0989066287078184471809275902477370 1.1041463960081521236491822501515996 GT 1 -2817657378051415366376.9639229447964045609764179609981943 0.2664964320779513224824838197837826 0.0449782703248480762515388974928298 1.0460211851737192113155856786363948 GT 1 -7796380607707582275631.6560015645922559869879262140071722 2.5893018173099732447316361332860308 0.0102842054349537751285556516953139 1.0103374532646838102045066262968346 GT 1 -416147645036481205342447742793955601724.6626819736809320265441654684683420 0.3563394577279470594875543314005393 0.0974829930843333650140601315701909 1.1025677447247658304958047820038843 GT 1 -3590068650608774399881404174817769.1966445850773374571648118040028151 0.8313068499263128929411560117403800 0.0032687084662721254368389310314396 1.0032740623638613060970753867321721 GT 1 -2043939670734721766296.9817217669339988923675411602332559 1.7718820604390222870753941990902227 0.0588835749253748626586225942998648 1.0606884222098474515015707058574391 GT 1 -25918580880777052453963001094514253138322.1125318386329147822617545061782750 1.3246548328376129274184060003518922 0.0643491456749639163743920871532342 1.0665128909769030309259289173570742 GT 1 -64872537368076664859292.7671870563444326479891137942370790 1.8264480447503239422791113295249612 0.0029570233852740899953497654715500 1.0029614040168092529043129426084769 GT 1 -91814469556003879.4908010403932455612801221122963484 2.2447226982327680555941878527692562 0.0969069427704942550169189804105993 1.1019296774644841733704306977499182 GT 1 -1.9069655593710954158652266409324479 0.7413223433385187173371262332160486 0.0832281208681415207785808238020630 1.0868966063412778959481442935012624 GT 1 -2681939659850993190197203.3722870143327835519926087460101644 0.1477793484903785313998725153505594 0.0960563091937462318723369240169424 1.1009882094611318007173536043046144 GT 1 -408650604218.5745441725119908821128009218805061 2.7469343124431163717649964531067790 0.0863038924974207116884378727470610 1.0902572491348479657161106707361560 LT 1 -163.8824843443988395574585754355441803 0.1770478224347428600645533659721725 0.0258464443112430888556306659761900 1.0261863330545505307678872209698846 GT 1 -190659.0373331997414503776566761632689758 0.2838608000561641882377600260072957 0.0611172896709585838190027057420304 1.0630647167034203459415247696231936 GT 1 -126.1920502565393941980456815278031947 0.0107545919011986722806481772911777 0.0291979863609856737469604274532628 1.0296327309260174996384228632892241 GT 1 -1435628.0278643213684734954130128011506531 3.2734284445908886624106619787453001 0.0719902026943821830438810434018589 1.0747129888102673603355180367125146 LT 1 -89292515346875.3934310021571306255997601428718561 0.5684667963584660419107254089468078 0.0563413523647513397622740999429695 1.0579907803117381815729723456381621 GT 1 -53535.2214367889023290404626146834708114 0.4735832933711767438049497065294031 0.0273231864583709855057108274951912 1.0277034066051752831290152812119985 GT 1 -554171489953762651617682553841.7994677876133756087411607602080071 0.6666529362376293234802002932792613 0.0868414827408380894052674141693212 1.0908457910490740127358257729636498 GT 1 -5081470084406334329549089092933.4053071569891405158864961807295334 0.9583695230616480996338279258937204 0.0953121078208818784134122105162149 1.1001652652840362952885157995262975 GT 1 -293518855785979831749738044041275569626.4262031161668717660172648286059706 0.7604352986469021698662744667822125 0.0116993542604606156902807274211812 1.0117683302160785510692832819405994 GT 1 -906633910995452.1519495286592285479377648487271595 1.5277936807387629892755402806405219 0.0231076390828149778966639514951813 1.0233788060721222400551136972085240 GT 1 -35658996480963880849968315.3422684796218133747523137164929396 0.5539524463489333835796562521716799 0.0477873844285810297661323989386226 1.0489669334422094281488275873882807 GT 1 -121772372.2701281816778908084913510468838284 0.0791161729399273159886696782244292 0.0197363122010600601381479867945748 1.0199336743275481163598330021397594 GT 1 -13625641.1343667254448489748655255300415452 0.3950838022299886725374582069154974 0.0035675816886140095472720526548369 1.0035739606844113417133400069663860 GT 1 -18585860568280344.5690870985121345778489310790183936 0.0341691841871428335858510317121145 0.0511523984864005190992054205171871 1.0525070817678181298142988657551743 GT 1 -222093405063228130.2748973530269354756196197067436511 2.7867261981307619214353228481128101 0.0153885051094769372431943618685123 1.0155081370455810213749963511032982 GT 1 -2.3618528417789989988793065607171454 0.5748933617490525343761513331630659 0.0963077200169953017092811356410927 1.1012663747874838688062732289330634 GT 1 -86036411302.0352358886514558713627986718336152 0.0125466949290872813970589324865857 0.0089271937245131823265930088342993 1.0089672798679200983597499936776103 GT 1 -9537055960023313016737425706369359236.8798953143264241380184150592673667 0.6435356335249160667779996864237411 0.0465426370559723020745203713993800 1.0476605713085094867072709166664604 GT 1 -10826128876288.4043253181857875162585861414820411 0.8004855294941544309987560460924773 0.0502309897620164663703501467847702 1.0515364710705156131677965830763344 GT 1 -1.4995263723997075194330464945850503 1.5014735540219701421819150825749170 0.0746309230445402110369551927897102 1.0775626189358770330762071472635030 GT 1 -18227110254539494035634571982359520560743.1180044271023314046224169030558193 0.5694232667924871212548950662961939 0.0044856724180124906441370246190052 1.0044957632339034197946680647072248 GT 1 -661280120659896485799.4536505139061577698706789281955099 0.0622594645336859169555536341265700 0.0157420491008731823973901265951122 1.0158672710612489596499217212951612 GT 1 -529338526024337427755830727714319413551763.5123844213890814209621147099379436 0.2150652019603965467863030896921281 0.0798473087844959258444449418394541 1.0832156539978296814810534187915177 GT 1 -15933534534020251251369791237161850.9435820338875301152291282890608045 0.2306415668403063877783557471403783 0.0606406326768100175922671807073737 1.0625571601854903924390820011657097 GT 1 -2084987343.3571443390419158990595165640906378 1.8107191973616715904005424264293100 0.0851237660849302096932822133025295 1.0889664863363434195010463958829224 GT 1 -174594291004804685466453395.3996906571835508123393851277724988 1.7581522469895272519330752517123638 0.0634115553056841786290350104100956 1.0655113198122030135094956288582271 GT 1 -20015538051335939769548058379383551745737388.2593550438172708203424314153496656 0.0961653149006094505307368517327088 0.0746444705014232034691400684715546 1.0775772591009626328737348534284236 GT 1 -75869478069887235332082629849786559.6902163163442867061294075866760649 0.2675949794006968129704504890775061 0.0476985491609473295568038802321143 1.0488736442727935686188761150740120 GT 1 -7325458305231952642047621962305.0480768880954302069451444414283220 1.2046804051574839468165033220581013 0.0996229808721429139215687740003734 1.1049416932341198827813377582795994 GT 1 -1333473183963.5407390007231391592239234007949994 1.0665903106509271382286071989780708 0.0932024378630745525616611327211281 1.0978360487765879613928340227485454 GT 1 -16356631378811217966427.8798951995465855530585306762427500 0.2595580965011449049590650824697487 0.0850630387834624491924229711629047 1.0889001109252887536136681749995309 GT 1 -1151618940116425250385925852906104.8842542479716561808388812753435867 0.5414799394887425219002555694060599 0.0123329852344292438075052352215673 1.0124096676310087922994686610684410 GT 1 -4878951616331376347136.6439912362413413462802008883640989 0.5391335060487394340098178596051427 0.0725514730425424783810050210809217 1.0753179825823616757549952155843916 GT 1 -306099146625024881868488571920669843729.9314360736222295194860377183595118 0.0328761744478041368363983327411254 0.0751714121700167499646123249945477 1.0781468690958876944736006089788011 GT 1 -107406023.2436396449858260065499108251489615 1.4580502172710646483582918996694054 0.0074566068042736232524554236678347 1.0074845462725247593969914334119323 GT 1 -90389590278108185039247743223252448920.0893777238617996035883053732498671 0.7798709076483537400404977796604177 0.0205597855380341080134092698279425 1.0207740802526381762264798029589048 GT 1 -16.5162655511316524811334107237803720 0.0201133466828978892618326566799241 0.0335529628901874994451314732546156 1.0341287804800399469756489069686759 GT 1 -1732202.5457384097760588258414533456897656 1.6042753970757679271749249701029903 0.0499733269000266644568316497309083 1.0512652178343602885287166931242273 GT 1 -73228471814080092487.6907970913068636929299222258804998 1.1843994916866409673597574780989336 0.0140972899305164367934361028082466 1.0141976005769616520952731570885477 GT 1 -1253197013955972266221402807.2324194369045079416466562607403239 1.5259296512594894347964710168022869 0.0784678114250209528197293683812916 1.0817175718529334722597696177467605 GT 1 -12032703567129478871339022164853699368781.5295149038999778338397211396828912 0.0042718391916988728431171278666233 0.0811809914250267164345656627447635 1.0846661199016880560169654840261969 GT 1 -67062281072639914026703663647922718991343.4082471294389048997479332812948548 1.7543147865213487967777141570365364 0.0020620692801002124051671935523684 1.0020641982722144876275743159127608 GT 1 -26119108384287.4775956872219464617000471624200243 1.1049899030630496790580776813363382 0.0099288903790226393133075717371353 1.0099785105330243974289960703748297 GT 1 -68224823608290254777261102675676428.5962000921664270556822266298716156 0.3100977394210059009997821708894910 0.0872691882969562767896383554445483 1.0913142811784118375620851497057805 GT 1 -465811.1607157959573625762984736634763889 0.0034170831999708251677427807739353 0.0737249354034031301568782071042493 1.0765840424447415468086045090246884 GT 1 -14080569494113603820903524334789419220828.2809544971948034407706186660841494 0.1827679155925241514207382952763221 0.0207682477580029656066501554788453 1.0209869410320843329903153848785792 GT 1 -42419555014.1273835268300446356734291315534551 1.3113798007042379378788826077684151 0.0281021427487550836807108612088263 1.0285045651759914314359974390903761 GT 1 -14.9936737124214019720439122058786742 2.2489862368386172881003957649355351 0.0971599096081465219003489978085450 1.1022098282991260356718416158382267 GT 1 -127943528620969.5416769020737710150304174628255027 0.0297070080409429993268521248134754 0.0343225288398562626966470327178474 1.0349253813068192865825945019618637 GT 1 -6.9680676314129664743353533309459803 0.5589452921206415471961900743941273 0.0945688043478605432254493078029251 1.0993439894687623089642421116971540 GT 1 -14108805818626421617219511.0540058675005150621781836386252180 0.3185704619730332513521900480019907 0.0303816708988636555007925104987790 1.0308527600698367193575053463466284 GT 1 -72489.4519744595482167660828757154409953 0.2706184520496800668595026675124781 0.0481524089562630227429437245763890 1.0493503504485473825987302830414946 GT 1 -10907310465672529472900597031250.9020614773424449560147747352849878 0.9642972913061607134911417194512361 0.0120923897286188194433822312915950 1.0121660974778485221213632445386672 GT 1 -4796754307638834.5936822501590575205112573122567416 1.3806357481655976418399182304752255 0.0533713960403538912922842965638523 1.0548484443882023947003409016558656 GT 1 -16511462070841841029954943895890994787195.9443742965108577488611445350794657 0.7389759414651920479508882382773565 0.0048432100864615843093373884499855 1.0048549764350709339768951058850119 GT 1 -77089270613498137572947304683237.7753697798763535845346696194263226 0.8104094588263859830419110980247198 0.0391856849757708309886741153715848 1.0399741092596709575078624211935470 GT 1 -113201687.6799488921715481041365382239369552 1.5735147711290374515988776444990752 0.0648604000803177262154240730373813 1.0670594561113585777217595653584499 GT 1 -167569199093097822959608189898521146508768.8051243247782830599817946607607432 0.9990172864678818663231399725476843 0.0423446732615076902278517859876806 1.0432673499469552061147148586227238 GT 1 -292824697856085049.6627876337887587250240574858051262 1.0848678902273159935784998764957237 0.0712491571156898723790114268705044 1.0739147754035434754144976212444610 GT 1 -484.3647659225422176126718219983309184 1.2620241749246858318584402249285998 0.0355484102444632705532567740396931 1.0361956399587057316598873295908471 GT 1 -473.6735077732054446362974867306634164 0.3349065647272631928844560991960098 0.0931031288741395044680340032203570 1.0977265386108037055472299584982245 GT 1 -184424214450910642729608490501138439379.0972712886146770867548894069757987 0.2459249100127822707963912083041092 0.0152086516065016929741576229131694 1.0153254892911222835442933178221976 GT 1 -105065699372266943825469690406304918398851.7163703902913297353651165924689656 1.8806294628221358829226668742689012 0.0054738031872940298336804108113682 1.0054888393430344024608623453359206 GT 1 -12670661764872729.5768702642674519570449470694253906 0.9659612498853497537425398462031155 0.0883808194201341022526839231449769 1.0925329412660668318590618403461694 GT 1 -61555878419628211992264767628553228.7915834070753611183773243285569770 4.9634368674464193570544269843662571 0.0873935709644213242228267313160194 1.0914505657672336098630538397899575 LT 1 -332149380523168849302140984780053552841466.2566862682798421014398766460924478 0.0921768491431105874307311882790648 0.0502395565933152793937371048147262 1.0515454910215170927622537868888173 GT 1 -1225057780201001019858766371328931349.6662384255211706508563967501987288 0.3951108908815379767387056961792346 0.0736094511681328218112842497188258 1.0764593742535873201250399268720911 GT 1 -22743215.2168680745342415089078515580222628 2.9819926364752462923843296320588190 0.0192436350086631730658447127824901 1.0194312039911926534989720884239328 GT 1 -79575906198065585494.0773172250065042684015741917928801 0.3132280889356362587748030495728479 0.0452039258439456372739352360833126 1.0462574962183591637848199776789952 GT 1 -4501980496746273226351860952274.7180865094686031892506188948721204 0.0950382031468675097041696856477859 0.0757904569052802031039060199493522 1.0788164548097125050308229051147065 GT 1 -557.5349512567267152284283476258143738 0.1821386412615683272680913262438482 0.0393433506064184983160992308589325 1.0401382185633463228107328065873866 GT 1 -43.6382417643263279288005042749109167 0.9888934380319836309344583926828865 0.0732657304726624708365217693612693 1.0760884108991421353209401955008312 GT 1 -319558635300016430.7039460555674251892718020018130364 0.5260070334640221899939113787913134 0.0557295664972544703954405552774839 1.0573426776949359736107302082687101 GT 1 -1083532308.5845432196946962850699084269219833 0.0102156952274884543364947879055296 0.0500934952789123056102951382175968 1.0513917153137965884390552939285917 GT 1 -55338779296362935644549163886103.9175418556657420578524864292596163 1.1487952637381147051164208772803094 0.0272002699395385995496442348703908 1.0275770452574631631197468708910198 GT 1 -2115766803386687559737246.7776528176055401524097227876644917 0.3353304204259506803346972596592503 0.0578859527049991026583494968004415 1.0596289424187844870700754541250357 GT 1 -10472212881379.3009287729109026498836154033182980 0.5220316747886683857912190742808584 0.0063213390854739847857668220448275 1.0063414033494274224199298413260870 GT 1 -860779589514391954509.8333596765091453995038653933184945 1.1468902427301463603120061505531781 0.0234538783230043587801397466118010 1.0237332981607140532251890325014432 GT 1 -3170165223792087.4946508368614094704017848348032023 0.5915545038464838727867267118844431 0.0912276576946234655743029605880899 1.0956606646810601377396657131376787 GT 1 -6419755703589.9918684638027619275721574018564135 0.4597186764787615138321805773519855 0.0163659396058430688512316073610521 1.0165013409413970289118954706350247 GT 1 -1300798181287448177773113.9329349453159084958589763681536360 0.2390993679298422978199637570781876 0.0081293560016761570985968525644466 1.0081625793952165527586014049464458 GT 1 -159340196568584036485205.3679335209365736709060509164918418 2.7642138863532721531262721789089449 0.0252693244292374299520972395664566 1.0255940763267075641463135644384915 GT 1 -3393.6970222346695810662457161147954200 0.6687377679974292425740351546365864 0.0414319016971358739066442668549011 1.0423146722774525784267636490378242 GT 1 -62.8956539260420967820438325989499365 6.1680048796556940737806741954379375 0.0164578789617992560129375773420842 1.0165948143749317773308186423745462 LT 1 -2941055109.2160515317398279215435473613998519 0.5797701646441189250744276794367832 0.0904967414402956466161795696267794 1.0948566982269650799776657947491526 GT 1 -4748453742798425474947513740099582009496.7233378674719653240707791996110947 3.3908750228473397198742780322365689 0.0804044281360113784153564060533941 1.0838213013896229450480518974795566 LT 1 -1223911957013845223177336504975517547.2396512082558435554531652091541241 0.2344613073345007977180282430530512 0.0979389307919869612654237494520127 1.1030730569895968266269974640410170 GT 1 -88905472996425934453253769688528541.6915128752951179610829097847747643 0.3755492084167389441634452078297997 0.0843931500429493376482077696004266 1.0881682095456791079386501678496191 GT 1 -192113117967750478.6817865534690103723027757530541792 1.1612969083687672560729135804530501 0.0532788822884006505259901521734208 1.0547507194396966253783449644083796 GT 1 -15996095995165815197127872600414963572.9661154711725180336161340694238108 0.9735742796122936907521410295234511 0.0326393092975393162694996764067151 1.0331838533836276566163006712279859 GT 1 -286107670157325.1567632466072691581126254151125856 0.4138129074907811159426640502333601 0.0809340204466514432092281415744711 1.0843973642597875947670386535991814 GT 1 -35803550812664307224558234.7382974215138822854356504168057624 0.2765181968252922832588802266010559 0.0974816186858476242222974522384055 1.1025662218754137311811653059368686 GT 1 -1483536152099326257928846880350609876150980.0103368102683697277392756335281456 0.9313154511349221030858260027954074 0.0766494887021922631389710750686912 1.0797463643482656956889348238151481 GT 1 -1196508056.4261974852008698468772546550928382 1.4387858207668712239357353492024763 0.0424026521346585569775462980336401 1.0433278943063886895037028083639507 GT 1 -6032871249549601546817418770222881720.1902637196719560273083306500214985 0.1035912025062740572651553565493985 0.0698532311750681397214778899639553 1.0724128893456740413029794813736126 GT 1 -133218476069586586367741310761176428.2159253785408174020998005995199318 0.8609378502405310739020031724828543 0.0218567068411504866350374576549698 1.0220991031574760482592059772850626 GT 1 -129.0279843109707015856717888742944074 2.1603382021608355529575098481904420 0.0723283132573593676140829799108376 1.0750773946305820625805223453704756 GT 1 -1378668.7349814167257321253326209549487560 1.4896903549740178727141864306567029 0.0772057583554847459251450864797398 1.0803489927924768456045476595188740 GT 1 -460689416400846.6792881762839748501301864251524154 2.1574395837645165430104001238006751 0.0592960162852394574488694526367450 1.0611267651723769704122491627600671 GT 1 -13572323337299716043539501309067352675.7239356249233790140377803657155771 0.0335533688226617818639288928485615 0.0445042686238587598604237839070595 1.0455249827360256138184595573771729 GT 1 -1087074407185.7703419036057754086838034878378401 0.6510733477353333686403427783273664 0.0427949914914083330375491388425918 1.0437376905038231946355176601543467 GT 1 -1785597630974575386047360633209218616529.0871213947974828084541124695286272 0.9178091129962127857777309509784032 0.0752385656869848251726483102664383 1.0782194835847134683647064729332727 GT 1 -11000176.1989492455358541187514466416696991 0.6427539199587531505997171030198354 0.0749001354716712168760077113595413 1.0778535856449042804547806806518067 GT 1 -216472531092954903255946784804297068984.8263587282089632828821425682448170 0.0615235186304734955202104230568615 0.0332536792025021714568742650933609 1.0338191542454450885685274093517216 GT 1 -686569549035022.9849522424289641615650477843572426 0.4581817659891950423197302344528896 0.0993960388921061472138533681488725 1.1046896728255442950765355583224318 GT 1 -47264721902880631134888161744519.1377997020911770680719133722927706 0.8992530131959212169348198685873803 0.0309959751131634631274302091022319 1.0314865134500110944527638543811937 GT 1 -2948420970826.0190459758311023429665951519634906 0.7976094138852649837712540311749359 0.0482429462046895840151206921455725 1.0494454723518693644046936385317436 GT 1 -10790161525984652855087442331692965.9001107314772871474203176785704597 0.1266138856947035883067513004629369 0.0542155677968488032015635598579025 1.0557406088325991089436921167132437 GT 1 -20964230099.6046821199836894340994916290632010 3.3816873889246933764119911405290949 0.0437395915496788063353021173308414 1.0447250092466982143483738886923778 LT 1 -10682652985.9355724897687279956104471932091476 0.4726625349942688500435174716972901 0.0276789482784756557894348795135423 1.0280692289337504880072623382568110 GT 1 -299981559506.4046286976445485426676319888521868 1.1423060753086987307942847107252212 0.0870179562041951320134733936260036 1.0910390658359879430197641631430937 GT 1 -143076.5660646125922101320858136644569321 1.1096832437123654947734551304109612 0.0863772477752256683913571991794773 1.0903375364666990757937400327075429 GT 1 -4694919790.1929107399161162684621025049266584 0.8556096348826925532031068106999725 0.0946339071592758637733496423024231 1.0994158946034309789426588627213727 GT 1 -9855848930386787647446058214163154.4697587126808742749332926601127551 0.1546286557885413321696438138034453 0.0258733662946639896675234100758513 1.0262139697195119365382859102911172 GT 1 -12829.3444796108241281909460957632719954 0.7877136024962318925918267519742567 0.0876169887385746988221040998444677 1.0916954085814836865639465061884337 GT 1 -114070330.6374835585364690980005451113324752 0.4648955644400046376382646555048297 0.0497965830148116977320330560163070 1.0510791941663351937442743034338211 GT 1 -348746115317754287833761.3401353938549527001885821409802210 2.3291174062790436253463726293867521 0.0086038002643671805415034164674235 1.0086410266331568210773925844210213 GT 1 -1711737957010184263.8785307830110552310305757966747416 1.3404784749529421856645017016699251 0.0579910682185400178993583223015957 1.0597405227294301312614602992991275 GT 1 -34.8520801078230848203969606897736715 0.1434181289056548498258639181273355 0.0535538866025078012861955108063091 1.0550412424442389365550306532817423 GT 1 -56204069950610.9978833450555528284005145131698020 1.7199971175891122999336298426490942 0.0558386081119238217625176165120000 1.0574581614665229841428824962605564 GT 1 -4137295655.9256817679975775378902779818437483 0.0768161463676098869445505986623675 0.0574752243605377410262155458342482 1.0591930728548492263169210092921803 GT 1 -20643824374510325456402176459712.8704980308572007723592125326763402 1.2731224378224973957253478325350309 0.0873772741585734204223740391211561 1.0914327084962111830499757264089664 GT 1 -5.3207091254558110059669235229757424 0.5713233445252893508350224906686565 0.0706306280201934193668651813571720 1.0732490174903637206589377680909759 GT 1 -1140425830390755431338613919980105.5325662094974430914150350077577017 0.5699090779445117642217855685208805 0.0238732606999759500591323711067289 1.0241628451593957767607698203380199 GT 1 -12175720351291636704624616315048571670006.0708978185925046553602471056149453 0.6131844803986813060258060493379131 0.0278306700280689531641015349175695 1.0282252819040604400695741312803848 GT 1 -491937333973196209405133002418689964.6466628231546137380767375665165367 0.9670773667181439700148084070908760 0.0550692778169483312130236976416720 1.0566436640348979475674188578937408 GT 1 -3857350968338984726492504001775261872623.7015339883326857329902495709108696 0.9923316398314822083221902588839913 0.0717062490165441752455113031857007 1.0744070542767537374032972638789282 GT 1 -3138.6858062123806543128529694331232380 2.0638273804963103337673849143204175 0.0653495350853789729000093220651189 1.0675826539028308641665603118397243 GT 1 -1438739543100162226841411.1317857435747780748335618397011434 0.3700997772093660936601523916650686 0.0916116975955871789825216301177540 1.0960833459754183963128387072569247 GT 1 -34272134404581489029544838443543.4464816108396554844396334221004201 3.2845552141932550375135088014311088 0.0814106319710930633170619047359168 1.0849160812605085388597114955226576 LT 1 -76148.5667238708172454712237372312046860 0.7306501293878780832602040946984046 0.0382533892202388642887973059920885 1.0390042613697072900444862144462291 GT 1 -57122036814552075833618583666834874304214.2477542555730077960392794999358442 0.7749097428193366436333095818899733 0.0615442178084456016085236935765743 1.0635195394714481495488517679097501 GT 1 -17053560291239117759094427745257397545.9316655845322826570747356561702648 0.0238071144757147114696537618588279 0.0390377205002419830583426493419144 1.0398201220831772441046643876392186 GT 1 -6891187.0927888030055231564543374566289423 2.6785918543544365354891594812869495 0.0471525182893052633916900793606489 1.0483004283133857486415679205345949 GT 1 -6994248683428334926.9809055892555582554850679169382039 0.6806858000828628103452594683624120 0.0112750676991635276966059536314379 1.0113391131411721111428523633090774 GT 1 -21596481433.7482237778301920792589074109449943 1.6484702885466752431866180410555114 0.0150061825368085333516322683212003 1.0151199145168619159583081552552620 GT 1 -279281258398951884348087586321360.2400302678438533619995510014004810 0.3552831419744603578689228594294241 0.0651525809606072421761776535743889 1.0673719512032548384026269299385961 GT 1 -4961437545639.4253870970998895149516524045518049 3.1087242295212987342245537387423188 0.0334647981217581180576187092475831 1.0340375589812467924521125053037155 GT 1 -718.3952584061233868281967262580371140 0.7562999199224036229247998555122217 0.0895459379818172392604435526655219 1.0938118346642536176610459996138397 GT 1 -1061420489225018414764111248567567629652306.8487998438974857524989103428094012 0.3021868221781947619207651267702942 0.0802122240153698567459004640600961 1.0836123138269532238302018430590013 GT 1 -70374848074894860085346879653137.0984685462577436180750795464745821 1.7279345263711449957950111222834265 0.0558711604504186943250800147614032 1.0574926395758264606488105502098778 GT 1 -2998512267.7638719396067381158440901062882804 1.7236255296767628833624279984242320 0.0166515273392261616528034849566102 1.0167917225086866066504693737163549 GT 1 -22473508206320830643252417251703057.8235786862647117624791145173834230 1.2028319121617141262126214788952759 0.0051002534391729467927128849666438 1.0051133041251939399153492299895564 GT 1 -131210938128.6202712268313041441948818496208788 0.4970179006040345476127930302321062 0.0539417338052297730504268240698774 1.0554511196549171723772752789260795 GT 1 -353520807997388751834166.8194815198079829484035513524541085 0.0962534588001765721310994037971858 0.0106972001832990802792591042804900 1.0107548265582072592738309248531461 GT 1 -30717893718543529.5901682348884521899359165325382846 1.5745139649538184918524212142593349 0.0659383358332755883034502254599081 1.0682128213408417751174411036466724 GT 1 -3644655244340048969276649453.0955040709729512628445853359053830 0.4462558349443740242546328337932672 0.0193982675542764263334529580628675 1.0195888830464714380283634375628991 GT 1 -7794551884940818845865421.7727779069766912967540629751883459 0.1821027226376667372750222244408136 0.0080693050275616377886638769357619 1.0081020380769371560505611450405192 GT 1 -83409.6888864204149373888769696189695962 0.7401626681305317601274316017443472 0.0626120782129049054002505726920222 1.0646580783780184604193360686256966 GT 1 -198613408649140512089301519067043.3293723958138063042396695101972136 0.9443390096231826632803703629855046 0.0228931748684217259472180790208330 1.0231592929660926442200493277519411 GT 1 -12248944.4320717644034058683590934914032949 0.0900056637575887400246890693841647 0.0848983576808817557117637878384373 1.0887201353742735500250052174691944 GT 1 -36.8044397203944445246450311203317891 4.6355253493626758204710593711551806 0.0041824324844628182781278326627333 1.0041912033193656338654662889456654 GT 1 -68839458316988417263502047738.6892389815208456109020560893266616 0.0412291593228920772661657899898905 0.0042182392733221143142340610526336 1.0042271611431662244931885282714910 GT 1 -3119447610746365706467242273687893456.9055178280581721468343022529082780 2.3031249505703495811187597389321588 0.0459781968306229607441577369118266 1.0470687533197720791603944083557103 GT 1 -272313133191927476071.7804766621906532867968589325181354 0.7807246286651359518508929033223432 0.0234525357697158576414803600918628 1.0237319233640343767748648121789475 GT 1 -387237753286883306.8655897162589628491348215327017852 1.3491161500753010798215492367965772 0.0243135818001450868337786439120806 1.0246140370226609929502012916149050 GT 1 -2664434.4135007151755628353951196818344788 0.4047685335832489070219248257066357 0.0074568481274854190417712198158826 1.0074847894087370271543960658673966 GT 1 -4709399167512855646198198321205882.4101294606894550005179134706005937 0.6376765152268688875113659607072958 0.0371077534618463441088689784864895 1.0378137669667251662949857406769283 GT 1 -785358462006954451617.4532343349751933090230627453276649 1.1454527969790085012135404822827976 0.0564467801859052521674955569263625 1.0581025089661431339728183524847499 GT 1 -918197116296315452155.4351474808397898247212597829363831 0.9283801605279384473016594304597703 0.0650874025813463315050419284357840 1.0673022327594828068959365579643834 GT 1 -38415633363585717959534108530653.3456500449247672495460419147587363 0.0497236882251345544559940303735636 0.0390457030316735972076272797604227 1.0398284289280521965739346373997863 GT 1 -4237.6531755835047578820620205764090744 3.2239890721647971537921154086635488 0.0881824573694023778667147163033913 1.0923153718281047019833241220012187 LT 1 -23401264879604560.3572813126064745941931115561666497 1.4702534985671744064884155860311467 0.0545506392684057480898127200652641 1.0560949505076628807869903309106813 GT 1 -7305943821363602130694966183041.1896079586698011469430682926057695 0.2338533500679714264124483784646198 0.0551880110838178800046138835574813 1.0567693248101224467105823657567857 GT 1 -65466327305163386187856040591795705748354.1106877516781563272214657359793366 0.5754528242161033562548954071151322 0.0714150984631812282631438376486387 1.0740934629116381478297632886994156 GT 1 -34655867626731407283064530163.6129950739655601882414872947221137 0.9888543375637731702771005412573681 0.0316225468396904394818178123332912 1.0321333367581434666309724883809558 GT 1 -582932792806708.9412952129738441486606319505337017 0.2469946071019685234292773768563645 0.0889024826554524855143319048268979 1.0931053431650078293847648045323472 GT 1 -613807759066788.8964263238036699032994904652716740 0.0405950925339647418958534152493510 0.0359651091975945840582354666635744 1.0366277912481415774581727683571427 GT 1 -6206124205414040577357399546603967131726.4680647784611052956058296118729121 0.2615404053381924108063664177157818 0.0082919393600202794028165693127233 1.0083265087198539213787493799485176 GT 1 -2102510027587434088921870310223948717777.8405026444757886121748667118210612 0.1064560193365936817047262501258563 0.0194392813071259275288166874757830 1.0196307090082439254467502781265459 GT 1 -81131923619987414522.7155315897863249158087855569553848 1.2675113678853089598465426490041274 0.0327414227070793646913072932398421 1.0332894177303951572178674651469627 GT 1 -38.7653737028813159450161068167326556 0.3373260080301573256138973089152023 0.0717622747650320665325034979194166 1.0744674095674908680464492057779117 GT 1 -6805157725285550023089656717131.7958810679877182479357821278709419 0.6701024645084790127058208233975776 0.0978584331346522395405272527906680 1.1029838234902341054411954345872900 GT 1 -5163622863414426076235966457.2661984106010230805413685428096669 0.7795282441329129814541426094272789 0.0479997881145650475749860097144282 1.0491900216220623131406820287409057 GT 1 -10418233476636387220879.2955807469292985431412161415750651 0.6881725364417348197970716452698612 0.0933260791074906391427454552906819 1.0979724074078261218763044708877900 GT 1 -917505594353350887507897868136540532.4905047473641716165061140966609166 0.2359798672723694627817033982144288 0.0016355820397838245960442467396074 1.0016369210643437809716059468062222 GT 1 -1848.2663221613970809891859692998899841 0.1345486861489442757717709585076025 0.0456614722692443741865813027628416 1.0467368196077175496822693892548739 GT 1 -58010517801930511354630319.2441992420366275789516823730030930 0.3825953223426222604510527656237621 0.0255143645240284259317810105489331 1.0258455005475014503145651572403277 GT 1 -92224365.1666087444724090312731844517961758 0.0690732272210895922201658383139002 0.0249000304171714581345141931288102 1.0252152803349637740872991873934982 GT 1 -2866292263004638649003051434443.3621446940410264767546253012831951 0.0671959982205520805929654972638131 0.0596980057967266292537007276957095 1.0615541848853669139671233233464287 GT 1 -1896.7249231584176589637048388833538962 1.0668511181336334878799420427720797 0.0943577357572947038916489451474932 1.0991109027429111142233069365923828 GT 1 -2917150584325276013006267200180502054623.1168653409421601400802914377223619 0.0823582671098732174721763703057363 0.0434526395549413886387775722819813 1.0444249770097361791766431493007902 GT 1 -64732467401.3521667285564194124132774932389606 0.3395580429234268592055208403745938 0.0598227377039344091474525630601023 1.0616868445857699949924084449346609 GT 1 -3154931623674574540878.2616688561807615765963955399386614 0.2085646865460288553761242053526283 0.0353383267764502312732167789090767 1.0359778368126954131985916542649338 GT 1 -106393709875.0229148882925575845628463717451308 0.1668163286405023226610703373132534 0.0912654196726294952869238294798619 1.0957022182812596498195910210088596 GT 1 -195250177868676397734521377911572621659.9105930355151481171089830428796327 0.4247328083557360086770075755968527 0.0744466725658627471000179265912274 1.0773635284944310866930459544479831 GT 1 -2053163617670162894.1435687506344440084148007389705526 0.4959071171198274681210860425101225 0.0383222483776812846430898696070240 1.0390758619575108501728806259544632 GT 1 -1416625569069491883842233.7136057636759107281017602435368794 1.2369375253828088435977538317534250 0.0270446362319594410766481026765639 1.0274170727014054163681737063739195 GT 1 -29200010024265100784.1964021761538322552283752827548014 2.3543820491293673623240407946602567 0.0252786785495518157208605950530071 1.0256036729931848621582399922165021 GT 1 -1.5330273408950117645384256542050919 0.0652756045093102372940424788216562 0.0039351321640453106068741158278865 1.0039428951689455847125868252771643 GT 1 -38797164828543197883564921107.3226028085280893048413479435582419 0.1424460565001167433710902527229181 0.0532436424784714484054364658534466 1.0547134971221415331820602326859815 GT 1 -1560772856364119818490360.9024604123233434233817277436931626 0.8039812779830647920967226577468849 0.0684743441746905951271761262234990 1.0709315468342101767472933849331915 GT 1 -103219033056230.4130616028668883611054620180099903 0.7700506445068459486037314755735348 0.0109364244919297560232830119221147 1.0109966668086081567024036218508909 GT 1 -1695875049935694177511664005.9175610464235329825001275327708015 0.0060769702566469111758494748277491 0.0572704961563843637914488642236072 1.0589758838982334828303004392619206 GT 1 -7574372517156981053010.5680010894055665777023940988386865 0.2316072062092914715500719723635310 0.0788648072606739400882282631697083 1.0821484644229341312597065601158828 GT 1 -97.3558530608706598335850584047353578 0.0807627747612303945554746970606576 0.0350040202740568089187533120612547 1.0356313437389347920564766861332840 GT 1 -3.3797749401254616210820070713482684 0.2118066221955841930705836605814537 0.0918091659068594081895825963875830 1.0963007527573004639468631588403884 GT 1 -2942519637747932147304409349356694233.3898501875808147066887316672144900 0.7505828548800617826570044316360697 0.0860393804846317440584170762951500 1.0899677943256099343251834904847663 GT 1 -2919472889806004256958063.3961242592404092327290296003407390 1.4884336972811688723887624715958752 0.0429348889112327898753375692224152 1.0438838531781932474045148067328988 GT 1 -5169117.1487275783504652620307728346603375 0.5863409873385996832901349519490853 0.0094845673438199121514549395622756 1.0095298322923393517389446870147829 GT 1 -24179930064686249029097281015.2777516248066656178085275205412157 0.4619144722510471446923429187941755 0.0999554155899295772130244320697149 1.1053109786513924837499377974717836 GT 1 -46068180192794488655.0710721933007597781919494664293150 0.0310778940807495416286438374545121 0.0171912746903559294031731655515669 1.0173407603630814589410632024603464 GT 1 -36316455223834809461092797.0738361456126935466616238778590121 4.1606094490294033543941657989659959 0.0764768410393803937182215566374749 1.0795594022770693295910367196665289 LT 1 -12150349840456065.5832992763190260971276247496211737 0.8495808366714628138407465322332719 0.0337785057665123739295164135400271 1.0343621809557976770618390229024466 GT 1 -19902551002059534687226429284843651109850311.3713647089024478905126698640352970 2.5919391814545569910029206442926548 0.0614325965197311217976398154519152 1.0634006050973838190128666421668607 GT 1 -45624139080031954290725064285.0215545035832377750233388518267522 0.3315337329343475018535857808997961 0.0696647341231120070080319124731643 1.0722102568567972367327182689851640 GT 1 -30393436449424860975009762006496690014820.7326530216129057765871454971102175 1.5156848172733273712338972614210784 0.0788462343001915893894272976793679 1.0821283015050618820263087634464444 GT 1 -1371281453465027899755.1548439721443394858211305150249275 1.1638024383093673083644296446200399 0.0570184997096430760865419884299556 1.0587086144728666942008476146243382 GT 1 -1417265092181889026061810227689.1655625334029260601265174077542502 0.2126390046707221677131456041803862 0.0458282687297281886268506806552404 1.0469116119203308331875030098278792 GT 1 -131362521790046778008117210759668980246.5835208580264527987581380464173319 0.3531993714024755268748682378173480 0.0168313567382269220427228018027573 1.0169746137716672089589385299387813 GT 1 -233677257604576193688943981201.3147081632933940184693534246346329 0.0088207986780562834354283176869191 0.0663905392034123265009151319880924 1.0686970643886986100641132716752484 GT 1 -740588045324946.5207133988301789475531902713762709 2.3423745057469235137274825626701629 0.0609245742161709987858679540596143 1.0628594773514260959383911966299975 GT 1 -37713940.9546601263091910209568573601686109 1.1125007517631387051881097813443818 0.0897536090199257805753841253977691 1.0940399568011676300216501393617824 GT 1 -104830866906472645807.3444589626495885638021883006129745 1.6233003957804826399900260523486637 0.0416381920041732305569312277009099 1.0425299021689116986653204173284401 GT 1 -272844596139158859931107513071248704497855.0648720783179442684913869515689988 0.5292846638143922025162613552082994 0.0213996745817042965268310182591710 1.0216319675926344073877949290590431 GT 1 -177660.0634624569058469710565105401405919 0.0887686879424317266427794667511581 0.0963520258813724047808522764994745 1.1013154035902070188065108663643800 GT 1 -469246830.7756747234120527392568108309358468 0.1491788554797358895969823075455425 0.0732796248420915276510358615973792 1.0761034038416121968240038554835285 GT 1 -1766274813126943108862949735791560030236.7598498558349076581560910921325464 3.6448892420906689554964713713871714 0.0066202189225864331623158097552658 1.0066422297700804558135649949077103 GT 1 -42755384272235041525502616182935905.5325190889459222919392695822203343 0.1540677188495268407673320477032960 0.0430339718690173165106742066992861 1.0439873864549960736778022564835089 GT 1 -33505637391578235495095969.7163974786061205388244187674315557 0.1399524642582199396184347669676101 0.0752743693494330302852819620123626 1.0782582009816944336778852173940265 GT 1 -191139849780901972416597113796667863.7711489558797423193452772318131069 0.1036960185374690183248404356737059 0.0734382384089270673470821103602367 1.0762745742900589199486242289189780 GT 1 -51238155159691880876185434511710347511455.0908662392165700123269398820927290 3.3500144843411865167872677820435743 0.0201037666859866490790076768155291 1.0203085972971212228315004334921482 GT 1 -350840396939555512415867470333998212.8665058516252394935049208366485843 0.0503438770570999046110164042430282 0.0994486023854076915366205177577195 1.1047480392435902634660728672016385 GT 1 -3358.6749056364599941550252247981859058 3.4260653379827407087860886595992439 0.0480476373790975802973500077853993 1.0492402847065354261347173545976016 LT 1 -842335746785528379420692.2182717325341515407485367058251320 0.4498157225273393858790343468804836 0.0927005666995307970583170792303267 1.0972827474066946494154317718347512 GT 1 -3218.4888725831101759911546591193406662 1.0225609444983359890385042206532979 0.0596653038170413111262244423663360 1.0615194073232191734036985749063435 GT 1 -14942317246255.9157448649188078965616165637995222 0.0513173281809272489180791699209684 0.0037028700871606520489045651109011 1.0037097426813963898411391302691102 GT 1 -39473473396446164604678763495109.1964832917912817397554676238682016 0.7554233538048005924585665411318754 0.0252576284407983251399789841028342 1.0255820771985775660353194005669372 GT 1 -4.9796888554552238501192011351098732 0.0962460738270347774012153378882812 0.0781548539083083372057516466063313 1.0813780238788600910089778098531675 GT 1 -4897310555988492875074722169795407.3927914078102791143244047090749353 2.3514806346801217525977665448717491 0.0015586225819762597935203738534955 1.0015598384977528792995290671704400 GT 1 -195959216556055139515367771735091417658881.1891653183312561420222928487114115 1.1601368658074454833060382134526835 0.0169859635483839905816308452138862 1.0171318797389355787279652284485856 GT 1 -19201959519267837.4308173980990224159998043608965050 0.3310212601639715823961630750632295 0.0878271043341119989050980528832430 1.0919257282945364772801723556729456 GT 1 -65379749467035238.6991311169379713399360860358752051 0.7250375766915110675478550045311546 0.0508964532708212702980010035680499 1.0522373749132790033624992552366925 GT 1 -25842669808141907314033346931560865.8752636598514423996162137928970482 1.0839435543685296314138109323450721 0.0924177090466913101154971149507688 1.0969710382177709966268720038233368 GT 1 -3474831496787494821687250693433986518.5429671550934625883371740885871909 0.2234946303303545824594840106130805 0.0186520038859324556324615574277870 1.0188281462207815955975968284917719 GT 1 -17362869296349567.2179352660805394900509703618559165 0.4094375314676873759758082543885879 0.0389653406037955567371252371905976 1.0397448046932107244114504112058313 GT 1 -2666670058261169349364860176.8538193385618419311933548825527499 1.2690832182241562165859535725711222 0.0115235803467393046970746648277665 1.0115904913315003901262571967544425 GT 1 -7632.7059598619716179677292186062662749 0.1530652165842525870248637875014659 0.0824260415922529059540144962522232 1.0860220936833139238585347136227301 GT 1 -34935357333579.0324710609602274618122013011668874 0.1903763659443121554064687459041805 0.0385393762287149411479595991191619 1.0393016677078763671958235523662551 GT 1 -622450402574192867895747374016396.0383590309396419602961025116036419 0.6938674704883830575917253735604913 0.0157042331219816212576540157933527 1.0158288509982811947316873413441460 GT 1 -4431502492081085578.2456827262209832281046122548198763 0.1617764806697292045406718495965021 0.0708510612513569454330758935384173 1.0734862314375438088749012772787005 GT 1 -23186361205195132048597599926.5370523559623313995867792741799616 0.0637703845776527769133694893801420 0.0397713517743723184451483678785682 1.0405838476444446988129756337256132 GT 1 -40452670739.8062319688178302069470471994970872 0.1884544518442985353628872122587377 0.0508023110332963735732012447876774 1.0521381891404081708540940582695346 GT 1 -60162030319313.7531981878627605799690607351719633 0.9432539695813584153483707732166680 0.0903174899004385289201929393429940 1.0946596303479992726553289088368989 GT 1 -10448593702162538407109907442474174422379.0200257321210384476969007017514686 0.7552691622613597636802775152547438 0.0510439001924067480262931942186107 1.0523927408651879522559472520008986 GT 1 -3579072784652524345.7708365562324486470572350063873502 0.0816745235502917603974459332811703 0.0521592455375953739624142383843188 1.0535687713623134472125793856517048 GT 1 -2497321410207362888486.0527030680463443316780651508624582 1.0902118429989044344413033815590598 0.0652118920739228991604675525450507 1.0674353979151728760304892956953743 GT 1 -141474.9186666510678539432188728970541928 0.0261802818994020205769591035796297 0.0288028922766458068449876981934771 1.0292258367256599078109983055054292 GT 1 -878552876769773746.2442584818543280267845522243838748 1.4408343082972114747366609692694318 0.0876762541836426637809659936813225 1.0917603674521174720229128706444865 GT 1 -968695.9552395476067690082002476372113472 0.4887082291689565536346235152272491 0.0981220976434814243440126579840623 1.1032761313230539900279002471353575 GT 1 -63311637.6013927129802683897783540992095626 3.3680261306561362775923861646058177 0.0994827238134771476478420837976224 1.1047859294457462155233286727941010 LT 1 -844685.6392889383090267417162598594933161 3.6652597981238472630672932464316898 0.0020462595611671052700812539078512 1.0020483560106710449229617248390244 GT 1 -1432329413799226226770754479.9789892438728886218117328896397890 0.2944166816408824443507918407870998 0.0956735782762844558054385378407833 1.1005648977882517893042935720516864 GT 1 -4692700257054658172796109428908.9858891620621647429265943297721639 0.7709290971288896290488002896428745 0.0809042801852919134330466237133382 1.0843650055599274581332701601302481 GT 1 -1101850388930476132097427974289173.7277121955950345476906595162552708 1.2929474514841822099306359219496694 0.0976120356092834188338631845938277 1.1027107356602681297438190829998970 GT 1 -4953840046775253687377.9848848310649233465410891692163922 1.4381455625529814491409827730600207 0.0336225866553737163664586969044239 1.0342008240277092255707273343452560 GT 1 -1089947548230574534.5934231864257261820568903389571861 1.7004422348357534878051634882724985 0.0132299466561013808093778671446581 1.0133182420270871709881389422447804 GT 1 -29459456534926295876229.4605748363944857833049564574336317 0.2658352448425689825950467562889647 0.0818254630148650127769960350280662 1.0853677789987891396832329210322258 GT 1 -1051928407717372127207539351.0415346435448439664590901845321645 0.2895318730116532402015745441143915 0.0867720326216582383763629608266767 1.0907697391073875195072560954993271 GT 1 -86450620991202052941307363607.4802529342610356144278685173836335 1.4805090650996211700361947485129480 0.0132263395234283466501844289763169 1.0133145865390959216488348132383655 GT 1 -1157587526150272714552873549546505906131.9392868041523463480032695071592884 0.4116802917170178908992794002010536 0.0611794469570913154526601968383880 1.0631309223572826228582017660581200 GT 1 -2685600813829031259826074911119963.6268999049193793868438748109074902 0.4302858508621088906110081212817718 0.0194543914811272373859393580718434 1.0196461188550145410344832684693751 GT 1 -2122991057566078471060495942702175.1121839259569672066910654828241739 1.1223411471583586457407482366232708 0.0562926456514892265232014191409757 1.0579391668851725534981803401515219 GT 1 -713337375060815758506555517.3004258380345330049540474892796202 0.5086887342513629262865218064766166 0.0648962863302339604463887747058159 1.0670978321340502606057321301378399 GT 1 -4661480583522856.2795823279479377609453413202739455 0.7846481626549361216588554179962533 0.0883235860324441206972880402051699 1.0924701611136001265618179938456289 GT 1 -5861356215294420276816159938524858570478.7892273526395851060119706366347387 0.1749136758570547530012963241775903 0.0487336824231300185599131079286957 1.0499612161274849335695133687882599 GT 1 -6283610427999858675783071216335336517446427.4752042154198797943712992297344643 0.0538174461429360896388880810345061 0.0789061377539440925325773645491191 1.0821933345145931890532842100790262 GT 1 -120958256708652.4548172564507036525165572133183333 0.2529412877800866404511210517314620 0.0124511902526761913492192853325418 1.0125293558361366626115094744597237 GT 1 -4467226032874817911712820107929806.8249197194528583949152666004941874 6.7401074207646384619410540143971226 0.0725979834491072268812394313123972 1.0753681326138424056976442911992823 LT 1 -45442530010744450736366917697704058251.4046261543688216511149683745983051 0.9861592604005728813100105766330307 0.0263244059915327413913824070858214 1.0266770965180267690926543239028916 GT 1 -273272788672582.1455653218953022374149622997897718 1.3088395059538904767907951857265358 0.0908577647940875813350432857143083 1.0952537226715551122108950842179157 GT 1 -30417694563648601128.5852368023923538265597623681111440 2.2529705569581302630312458894087349 0.0054816678910085758885494853157518 1.0054967473648008640304581423586647 GT 1 -7158335.3932146221688937148924309143803905 0.8131000820929397455693214053813400 0.0608381476477418297957998958698146 1.0627674479049911545645890591657038 GT 1 -28325224620270982184199660578598252345069.2491175290083051497320074576476527 0.6038035046704942728014284794524341 0.0489641752769553292717957794455991 1.0502035465647251471864070628081488 GT 1 -3740021128998665900.2232299898929548189134888109278791 2.2264911560479147178489135338747607 0.0325089049597234581469440981444619 1.0330490582132955265189790050522600 GT 1 -51924801288142862213989443162868.6476614548239625011967959550157472 0.8063730974765258804352474719738607 0.0210227785158270715698645006955713 1.0212469038477722007107389244401511 GT 1 -34117696010925960133973727817.3796703858361395093971371139512279 1.1248200253440309705851579960627646 0.0894319624604011109828362974519883 1.0936866571372014927695203757097449 GT 1 -30913228550548777947175465.9898796271538208280094418736812348 1.3812646458308601759256623783866763 0.0557586798571244276578742253704078 1.0573735097613142342166731241833502 GT 1 -1865406322126762996132728167041045409627448.6917691285893462806119916213259101 0.4190969511886110179027899333721695 0.0139565290856017942128547518432261 1.0140548372028786064069630054032049 GT 1 -1239695170066546942158981800813020061546588.0020763605333451961605495493259646 0.4543775964702226409227409690926650 0.0015552826876563125827141756784614 1.0015564933952667995419641189026266 GT 1 -7854898331410318553374731.2081456336170348995517800108632566 2.4213843327879694989954074707201217 0.0317587264723313934871468347136407 1.0322739732510047159645369292205090 GT 1 -2357689516900636602952858404349.4338738227401581962899797174639948 0.8631013092376689018913845293545581 0.0557864157386590653787026068684164 1.0574028839141965158752338925693603 GT 1 -6719694014.6413107784617972987113344957633564 0.0045859137770129510513842698227165 0.0638042156918974985095867570192494 1.0659306531084645657778870471046615 GT 1 -2155963372953517958.9371843563217197820037284914656749 0.7175269707866150510845714299519022 0.0837082123679252495386283112040052 1.0874204195829735110867738480548891 GT 1 -31887891681805.0061645409793161509227414826293237 0.0502930707552763309940680222660920 0.0313978188472116282926064368281719 1.0319012971543127019859885654049989 GT 1 -160833019459944585812650951526683096819400.4932884841216496451882957343746720 0.7215167460241781766486568177209067 0.0041483681067276428328207011934879 1.0041569964563498193733114384065800 GT 1 -123148243293773061466002277983042785.8258988720001756967921106507111585 2.0779989252595560939884968808825007 0.0855615618597461267550962916298792 1.0894451309236984278584602948616863 GT 1 -167808823912065605377866.4438319214247850150904754405968102 2.7824219275325122664575828552547115 0.0612320462556825785181755188889143 1.0651832463099650616852947596800190 GT 2 -1038190537686776.1807895041459419551004602710882058 0.5155397699298038470063032560500475 0.0952216826852896305754005459618665 1.1000653185315707524368595732090001 GT 1 -373549.9694188460641707098427433851577011 0.9254160080374999888091648052835499 0.0821711544020075385015354685337956 1.0857443484479599938698869694221628 GT 1 -1118649623010937231705615.1970976254772176665656408038446539 0.1442515745771453021652060679681332 0.0878874413812545885706540646494599 1.0919918769852722164340767323388516 GT 1 -127734495344106345.0950933108146346971013189392716431 0.4269083577619129329800835513663612 0.0197570823109828249211175320382606 1.0199548628406246864917594147508497 GT 1 -148065602806.4040513343452740339924936250192104 0.8041966621553143680333968925049983 0.0729326762019382757584293891798787 1.0757290905970054112849092855771003 GT 1 -1.1496493388657961585575640799984680 0.1593650152416421206235125799980931 0.0339216169506090366348484122781019 1.0345103061883672383743199548612262 GT 1 -9.5805275863523755353418047840561514 1.8680915018441975263093813282799141 0.0764822969197020476262328672334661 1.0795653099756306285685565202135076 GT 1 -19494.9209451132564088256872868296916909 0.8982561065006765323464623189152044 0.0651763274750627680092623656753316 1.0673973530127644824765073517151609 GT 1 -62540613163100130454.2642570653120579381985618953267452 1.1524538877658480454616907869622679 0.0578850725376181783674004433054733 1.0596280081720525709693066958838080 GT 1 -1546165834454915603275270.3934264745100226058486585398503164 0.0227551298554398882563493799209675 0.0651446508069179234805139818056361 1.0673634684071397499851003766177718 GT 1 -284409874472076154918667.6740759778731387726482263310604195 0.1103747766911419545361960721362300 0.0511868605246551320029714341943067 1.0525434023150203045078508102723266 GT 1 -33.5120994277268811546833327362482962 6.0386560244202895309993951179668586 0.0330590768483405143235983743961903 1.0336178783096105018424553241819201 LT 1 -1137030540579846380720.3024576278800416142121406646061496 2.2493050545943145567355405140880261 0.0793689474874634104137311002259836 1.0826959174351502744915614998357454 GT 1 -5692849669397356823807232852078827.4955738299997237883145181988729741 0.1479705109098301401244062608994756 0.0006502248368250693282041046694005 1.0006504363246756861087423440538076 GT 1 -914258928418410202768464317584263.8416944334363926031890898211861944 1.4115891776082846924302266750049029 0.0007146241828853457668851842639158 1.0007148796484618980225064886151207 GT 1 -17901542106151251569042.3217544107759272784239807359357206 0.3100818540084534574648811065377140 0.0690474204284970329052175725355864 1.0715469379416074328695428146503182 GT 1 -5645643220406744007616509486.3170910154291368057192103250767425 0.0860892883472957989892702938111400 0.0577282349017546428794200051321008 1.0594615480321621059243102788975934 GT 1 -1363.7479922761396899276718906690567117 0.5246577702493532240162685153083321 0.0130060289210598548049659507247698 1.0130913478966526799700174100290143 GT 1 -2180591963037.9334202847494977980348102592511778 0.1477222988018529430771112329974918 0.0542748481572375158803421620110718 1.0558032893084561980514476985724802 GT 1 -4636164174498834276227993757476.7389754195135998342507136896948490 0.2669240460552747904159940413560430 0.0685751102427017909640548709816638 1.0710397258391208545508741276282163 GT 1 -1062.1277357403378365133582195618694113 1.0299586515453602859355179114937661 0.0002150581283081539834855133097590 1.0002150812566234439185491644401053 GT 1 -1297869972818932654011.2942972631731127860852925617421068 1.0915934929617136785579624769594550 0.0828105961423361635212278634147814 1.0864412807715491418147430792642205 GT 1 -1021404653726622293099182194.7635545205726841153167966474970718 1.7704970757020892624147794744802000 0.0758922641802866296621817428192243 1.0789266169298969564947831202032703 GT 1 -4160241426500319215956511.2077370194074107500246416178209934 1.0055312492104886550202031296508019 0.0621435785632816989226529135698043 1.0641584105229321897228429363963207 GT 1 -256032101496571378963822942.2275969499713635476185313346233561 7.4495140328576907189673378422872623 0.0801180353950861338414703227305023 1.0835099165126006618339859035842163 LT 1 -15597313368460511800155503543890889124116.7428659803478360811497384000647706 0.7990295017323624235344427687782561 0.0685854798775195393625296925471863 1.0710508589886160380638807754382818 GT 1 -2474834992492001522479.1225855244842298149446733733307571 0.2404071381471523374155065732674098 0.0001731732270472801535553156629786 1.0001731882232618833756722332219962 GT 1 -17604223656786029990540519844317531.8244712918094376872766883527658357 0.0910904208640074071338506651663325 0.0274489712456581781025320806297628 1.0278327331392989607573101567047236 GT 1 -981598197714500812501678295424.4472861761989249827696454990682845 1.5682011393297472983401026512332970 0.0626261725316522828859475206514086 1.0646731142285773280132731076123203 GT 1 -631925885855656.4286116135161529991749709270517141 1.9451459417611302075852529147972302 0.0339566176723993234211819270519967 1.0345465365361862187417071046070516 GT 1 -937082944257610572412799020841234.6079132479276428490726701642974744 0.4500635704216123511667894866845289 0.0271359062830206946892259734071361 1.0275108841295696267977869190777221 GT 1 -1661047.8754519401861676001174551118056548 3.0007191555953954099801232727997347 0.0266854880584607503094419920633013 1.0270480096212461873199204282699773 GT 1 -342660155388630810.5927300509946291909568165372759971 2.6292845643109470547428598475494029 0.0341756658658036923293043181480833 1.0347733100284668281250281859873023 GT 1 -328901951107444625330900.0717318494765859030413491267440649 0.3273824943986611671922016831133495 0.0126755921007527501349757677809223 1.0127566128033558124419974011582340 GT 1 -52109374616318453981363544987967.3946363240679994999466014953594481 0.4735252451982493208898529648181063 0.0207610212805639219316416329425355 1.0209795613175705205522432424744545 GT 1 -7749174619834378762431273641455554245639521.0717265344120622027296413261359303 0.8919524504825810230168048366186505 0.0537655619906189898509315345327647 1.0552649203267388512832033392782645 GT 1 -42540226994621764950765397.4760454774150824142185073054964242 1.2962226457393021213495585998686783 0.0958648617134916341446800781857995 1.1007764405073786806635799695302427 GT 1 -9806066.6286644697293488778930816915033363 2.1528779952596216486695530900568354 0.0421575455000175932833028824380875 1.0430719670403100199899417775822141 GT 1 -92981410310880829765591400995058801438452.2423386882146522049487610717756251 0.4242166194410848523144991238905924 0.0349385768219559238180670131971634 1.0355635287070839272616574635050738 GT 1 -31122928793058189650873919.6492917301070488653100014630164782 0.6802829709111834772651765299757779 0.0720341483587392195207424628248508 1.0747603446733576814226157862995406 GT 1 -11838.1340941652020310923760115692875840 0.9465484418000949110743098542646303 0.0122797933036185200632535844227506 1.0123558129434359796925934712151847 GT 1 -11794181882.4734484916131525169254927093810682 0.0355299603131473445590282733185565 0.0822051563810389148074078095946987 1.0857813952340033466427377356742288 GT 1 -800771831565961.7744347661441087924321040227387603 1.5879947651665919845765009010248511 0.0308927103440936726473239590422660 1.0313799511814843536176661598903276 GT 1 -37381.4787213955975569564674850223831758 0.7892846285211764539477719061334001 0.0936906914504983189690004825198926 1.0983746310379207002950756007413352 GT 1 -1131427644177979230985116.1014636906510852158493961841031492 0.7458434910430373489645955563494473 0.0608713253412535382879508154158539 1.0628027754467511143498936871317125 GT 1 -17561930860133694.3155104729266068812586923306385029 0.1421739668019264252960690093010775 0.0139572441838249799115913686589212 1.0140555624229156341559793550811001 GT 1 -4972574936571924.9360933802236425694798276125430621 0.9135617938105512130463290484572444 0.0681050748562777439192713988203776 1.0705352119144202513328041934697713 GT 1 -893854401440260286301491.5542895128528886260171413209451110 0.3296347013316368125290582606732962 0.0330648438844255207919117901203809 1.0336238425346679923456682498498015 GT 1 -209971131132522528127497427041648.4389897172780102327376723833750435 0.7982640841190094133691171840459240 0.0351287730263299386390646058253946 1.0357606300981348605558609027027521 GT 1 -3275897131287.4078698920247193388499867980428316 0.1396544450012514497518677548855892 0.0349880093325031091421778799494651 1.0356147521581748398870931776798782 GT 1 -973742132545985500380.4016577943007029433009305066045017 0.3312046544874372014848836345581152 0.0836471076458221764129153162712353 1.0873537348373782272783863477154338 GT 1 -209896.1758435127657782941922050098379060 0.5596792395809630334061420611972679 0.0271360126016122412133635537358607 1.0275109934136906490716585954771076 GT 1 -1236484753.5003758279653388836974094372546381 0.0809441447919780726656791480925779 0.0102498697749570539246750889280832 1.0103027614222326137287385898693588 GT 1 -4867382322926650306375001390695338641648.2575783091483589509932631937461151 0.5658060505370813069231183575418678 0.0602421180159493310987590967355749 1.0621330092529372098377464288139857 GT 1 -4718843360035691268149526.7296044917384972437356149206885420 0.1133493010316420806327692049135126 0.0283162955389705455489335947966516 1.0287249344111198475798452119274809 GT 1 -27637366741234572291285709931.1012235259449415083993665031607936 0.2844792066274514032619520712765160 0.0220508929661149427873879796771809 1.0222976480989964241405903203536971 GT 1 -5926897574261854557694764652993102987436288.5393241935284120324121918621248261 1.0749853606581263168346803373301437 0.0786208607137019560604033094098132 1.0818836669728874789787747829240648 GT 1 -2080697151487199473927586827826911.2123369656311468800586292116902495 3.7090932090232551530247453449451507 0.0272625331947578054137040888702844 1.0276410514921841129788757952818546 LT 1 -17814163076277379124.9673116147034408887521347495082538 2.4001121971346726820157255241096135 0.0543945988725827656574308037140176 1.0559299204944402795155755607534227 GT 1 -1857145998185572816.2850468614518178999930847954025169 0.5134468132215660213063462925900463 0.0478142494329328119735582099308630 1.0489951470815731689961026164406068 GT 1 -3773059986131793096523972727519288860951.8289829930605970385821169876596771 0.1133410698831040879859470109110762 0.0210586848921567630040006753776132 1.0212835819583908539195696172328494 GT 1 -1320.1882150325815104610396751986504622 1.0043445710447638910341757465785954 0.0057354918319612989127471256791654 1.0057520029283449793246870489105188 GT 1 -25870390327439.2093766703778842046399502440131318 0.2607328494120993815946815340131340 0.0406848965697619662988078124138411 1.0415356830621823900655096660563791 GT 1 -3441820440934102890532.2188386017464924924262001357684774 0.6591815706699248302143483757971497 0.0173936784506910906808761922648712 1.0175467257762130635194434302246221 GT 1 -8573.9014525283680001370785408710843813 1.4293372774255369871209466314752040 0.0533945741397899875464797037894256 1.0548729295802834388697469503173302 GT 1 -5446232432132761804078381.6740183794472267301386187029800484 0.2377612832799089087324992318589673 0.0487630622466171853719693664107973 1.0499921015658222280696776631462834 GT 1 -18304903164792581370529582903842480972662801.0989677490633483914916911435146238 2.4603755792451305427906266346283501 0.0878087498201699521069104377098501 1.0961289270239636215149609125451845 LT 2 -5502020292343253457570938905670272048.3706346076442039893194871769378490 0.0254186729299794926880989609706964 0.0529526573995077861589888307454954 1.0544061948592566975457101556127984 GT 1 -9827628439166134708.2758082881527783858495357011521905 1.5214732585228324784418750108935568 0.0846057757866537606444599883778547 1.0884004603593565619674164096947541 GT 1 -367.0677042198441591345624243118160649 2.3327538033831743377996609393075454 0.0984033363335883220067376125544171 1.1089532553263579084594107253031566 LT 2 -1385341369017685692583317658544719793936.6968620714380962099826853612426897 2.7228858126033671727774542333279865 0.0905762774774625994764535784804774 1.0949441520258749426023875990761927 LT 1 -597427953767505356821097.1738462149416721275210379051533221 0.3168592559679688558111995669580108 0.0433907381268359293826251009472370 1.0443602657075825134275337054345360 GT 1 -1848979603474475673311750799352679761438.9034657200403090739987016048697151 0.4832381033685311596659242014360470 0.0749235479944884777781780969478866 1.0778788940683332129967160886951922 GT 1 -51068242763182259383815267524901.5635321349688910298403289702201359 0.9154595332826025563508313165955459 0.0889845234133839698551563736280920 1.0931953932972006992291498799737012 GT 1 -248401429585623940796559966107661944064208.1295022014638382707253619077058023 0.8676117276429721906576707861808535 0.0304244900329149114791712818149878 1.0308969218583031983270353575176656 GT 1 -15210570877964123915396.4255296821508609195691830356656014 0.6093501771883842314851207783955613 0.0366426262614339122559999248932986 1.0373308314171927837812946655179085 GT 1 -66440737740117191.9205298901309216251380657823874809 1.0593918137824473147858230891096630 0.0634377410795333283926704044726150 1.0655392788800989629327783088311375 GT 1 -18586180450522.1773147633633157244463745485073963 0.9154337747879767821966312230301195 0.0797540740000600115151333422870748 1.0831143337907359151272018356488729 GT 1 -1069278350969238976140620785926930.3771838489764742085651003531211757 1.3051400849791067663908252210907885 0.0762129826762149949549308868287649 1.0792737346416639098166677581567116 GT 1 -2425164525764.5277533048823623206633677242686166 3.9495426190721453604644767453061860 0.0955991704355186306205313134469738 1.1004826213247830094240727791730338 LT 1 -92768499200641251829759124.9701461008322647631943673887938183 0.1947987988833925430604795203320024 0.0850270830083140996621722993033234 1.0888608130608625740018133190858179 GT 1 -321734580007534940629130655927459982481.5670074743100831601333676443568699 0.0871728326810972000109669604234191 0.0638903983922186794943373870957015 1.0660227136249063215057389237016864 GT 1 -36798342865463988873828318484079296.8183764743494664112651662584846632 1.9888806116750186930767344251026945 0.0640242491567562452374501075955854 1.0661657100588994653562903159241404 GT 1 -62401174328457014.4712243773435168328571101838139495 0.2663105317186571710701712655360923 0.0675598803355320508308751988284819 1.0699503443630590514511828202585195 GT 1 -10.3396383664851619834279799171959482 0.9185722290524039502592669406697318 0.0912685243080375898386693295723642 1.0957056347251572568367251583503725 GT 1 -25467555433577876001727.6034425577060184812008541781123783 0.2798713490595509423001715375005117 0.0959337150818195341445525495229261 1.1008525972534995292250576578587590 GT 1 -16977001.2424411977369604922530768124667688 0.0525287457954204982583159223553531 0.0933326503461794449184594304447855 1.0979796550658324438019293838580132 GT 1 -5757551872869009186134987231259214927860761.2625851361012738812744401698693677 0.0374581767911074262864315396477732 0.0335014895471056067825581083740989 1.0340755215114580708761392911307998 GT 1 -2.1940304777855142729587147997088949 0.6679134707837537544119968962872144 0.0196459975387494348810218786983163 1.0198415455430092803868706250785083 GT 1 -838509172730821448650661037951.2628402545099089503999948156545759 0.5382843209373223869744505335442922 0.0457497035539408186101705141499817 1.0468292766981517362789430228831569 GT 1 -72271070820031.5815546748485581774666334669464302 2.8362296505527022937847649621534334 0.0114846881592134808187303747906388 1.0115511465159290579067588902951778 GT 1 -570330812.1641490479966345841653448536125931 0.2158209321952334481400542516487695 0.0575341081200050434330752825373392 1.0592555493015511546639930332886386 GT 1 -135390356561.6156072520158350386678906306474546 0.0571538553954479254942527817147521 0.0696555790855944626862357802264931 1.0722004163263904090140607485820054 GT 1 -782637.1621813693667293080611421565872887 0.1679482793900705076922011849837979 0.0708612035793235053329319955683593 1.0734971472153049277481194232295656 GT 1 -13105011396.7181310882595384491760816447019247 2.4216863740760450411703747362267750 0.0184385672439635183063607719134340 1.0186106765406517598826517937930620 GT 1 -3882420313552767335879.7193380789247819476992992719746681 0.2468340811153050883071325719862986 0.0417374474416724798356002551162468 1.0426334753464531559202882932014989 GT 1 -364046897.6328321910659500775961201951419898 1.1209389930658229914321845385126719 0.0664367907153722165827451604581715 1.0687466061506475338624120883054688 GT 1 -30190518837581142400308.5928237087636314092608746572114924 1.8507977247359385505870754499621353 0.0465178313100484270647184743064215 1.0476345550185183519464684240726762 GT 1 -733520161837327958395126876959232.2949824709250014217887580830458715 3.1314189690939488933813842195041719 0.0001485335958143265494930910289334 1.0001485446280213184222231049925835 GT 1 -654805331827526151.7744904808506634934941741561317884 0.4766318423013800735168231859590762 0.0824350108297071083640943691658155 1.0860318686787889108093859370733575 GT 1 -18454670981824901.8929890315258864173492553968943975 0.8111835783550002342641976919745275 0.0929047304601983154990645206899141 1.0975077963017444517335021528290557 GT 1 -105.1240780638589741534437455245003647 0.0269030106251048019524310472112264 0.0603235337099308748733089534283394 1.0622196477610683767520140506505471 GT 1 -10904137733249759920.0766032865490549056850061648403906 1.6177189067237678849354478888409340 0.0466375666670621971681010768120383 1.0477601398271011967553680150965275 GT 1 -29.3350515256417516417379664078561232 0.2403656788272626868425300541138961 0.0837977314001894739326976187689045 1.0875181214358455581413095361774731 GT 1 -3163849660295051304.1906884896103731010615657563745231 3.6264380599343249761838275357287355 0.0908630985596363813112879262507012 1.0952595894996359239789670856311591 LT 1 -200463918691393482541265781.1092929275028932052147564891531373 3.5331801926401298609964754416368140 0.0974087803978234103362712058500926 1.1024855195313269553754596643489886 LT 1 -195874.5796699245778765750415498534999686 2.4617588823853203850117399400264837 0.0891339735229976072830105533367132 1.0977174484617760364641389878904139 LT 2 -21.6543677326575960739521608302247487 0.5689014844396291905350741839688299 0.0018843785737798480792516598405271 1.0018861562486438286087490339439278 GT 1 -2790100837012457.4447260371515541415592540326661910 0.3537111272978769848620500870867781 0.0980329952595963777027492744740752 1.1031773396989992204091369376862397 GT 1 -1169341855176889.7266950589135821941025894761710536 0.8625907660091269803031397632196839 0.0877564348661732737949533269591581 1.0918482575311526688339791239935905 GT 1 -199565571975213468408239.6093289864523158408356458181285331 2.4793753810998966042257603008560360 0.0817754205054416573346993001356944 1.0889524560367399964881364536479739 GT 2 -167915106839513500.6321574114985250197795344674527733 2.4749488406680256968489885790128456 0.0928810084236636020799224647351904 1.1022329805508107053136002242442804 LT 2 -15850180656209373183252.6859478362757536233794934517560263 1.0138000638653058936996885447304366 0.0540241262029846558817910585211486 1.0555382136412945237871565929052387 GT 1 -282897525805027461317940281.3489196432018473457769286889440676 1.1345385742266865120244485996058414 0.0104629830795414077844078871879763 1.0105181049166975357246902128717960 GT 1 -477018324949782.8483840012009980832507713518765180 0.0726907372006599098062735151884502 0.0541155928447046889988221602778885 1.0556349085639716449243269371119972 GT 1 -75.4878714388955719013969500388854694 2.7818638357165070073788140577461446 0.0791702526993013024618693240856015 1.0824801161659042884254169526442486 LT 1 -2072048432504063214393455685092188516486095.9755635560523910495422906652449154 0.1790197228270359237782975828310527 0.0961686138218696959451846529920125 1.1011124557013834091073234229197680 GT 1 -43875231331423644809686344284912063.6550221709419729458049639745116855 0.7868880641877851998016388534194368 0.0830020715480946832852644330480714 1.0866500657774001758828196527195581 GT 1 -115802876157391653792584107.3330625052625853905009984325828924 4.0628747529525209033595488816008094 0.0104018690258720160699912082206296 1.0104563465736618620938739936278072 GT 1 -198940.6213024708848123513842024002743978 0.6398402050918387309330832369806237 0.0628596783050665787019686834498609 1.0649222516114307168955263549177010 GT 1 -183170337586177250025.2131057956757722311681701716535179 0.1264469892710614217312885920255293 0.0491071500850536378964626548586152 1.0503538937467979368478616606381636 GT 1 -180956146806384607188899.4320572759102807645482409631186062 0.6261909723288720558427073635968993 0.0701905256929984916276856530213154 1.0727755801593674110757199806016692 GT 1 -62815721392218896428378092.0467456997449862433372652082613341 0.6776613625823088941359499007801514 0.0497798637610486926414486926816994 1.0510615988742382592474364734166729 GT 1 -195945304284520382670179138320423522757.3578126491753207646780133979729205 0.7271804215754334022850260206143531 0.0322465640428901071578699719444102 1.0327779390712560386050628780384759 GT 1 -127211993643161951313452244720498271.3347440566688090955295021813404938 0.7359224127317548816304546301885133 0.0244210812755651603876842436225832 1.0247242213973788671866824043694171 GT 1 -11758569191113405.3587308269008727893690029718366831 0.8517782576258357918908741967085504 0.0717333909027175237891728192255691 1.0744362931711725559294276787526601 GT 1 -853785724199850134757011.4911589508857960363959789987475802 0.6778893852407882096582320769276258 0.0254184167497671827879804062977586 1.0257470454779000499275610258577766 GT 1 -2414671845409228925136551395922.8322987573564999479962791395508862 0.4143450160071036376166067987456793 0.0184292242072141363878439707861747 1.0186011580408698639124662437589249 GT 1 -91936.9164936477246275587341136311958447 0.0136161747288808059808658908253085 0.0583693435268488770314540420380821 1.0601421657143756323989717732642128 GT 1 -3.1030124055849224767965238815010189 0.8518665705275107527857535756329540 0.0731490559945314589418153270951876 1.0759625202981238732466371494227442 GT 1 -86767296610.5739110781731031655173663168877547 2.5009968116765148894000048950011083 0.0945214718080609154537618857408117 1.1042211368871433364277086360942005 LT 2 -899043455400027196004206043603541330.9061554207981243956095459706383261 0.4411811416403756845887456129014689 0.0883510501734092293057509209750702 1.0925002864456034457082317315807743 GT 1 -3.4375148618920291924435635386486644 2.1997272027776389618285923438548434 0.0241165212104897513941184029623303 1.0244120861823358976054745938929979 GT 1 -16190571257143319089997108756723633819.5821197833991297615810250214244478 0.0523923628731982261751065982555778 0.0865997236049690881272012445111143 1.0905810756310752323651759238047147 GT 1 -4613904616906714.0694110037468364324929943997940389 1.0537569583051305185157260264713352 0.0975894341239546280951294564216764 1.1026856896676535063534568878817916 GT 1 -30551840091683173.5572231813855827459059128248463368 0.5877578992970498364236606492224742 0.0200983997499187925961292126358843 1.0203031202668113060455426623862656 GT 1 -46195085897291756656509041324305.3487739634271478190267103448072648 6.1776823879604785487010645944883435 0.0715269014957814070876018113700230 1.0742138716794125387433490364930931 LT 1 -1821830103074735319536857997832.7949161156565773028471190053648904 0.6428930113410360014151025726732923 0.0942992878717590700956543525925152 1.0990463673276768106112549444492571 GT 1 -374782.8299050864704751761939141903960727 2.4491972661226989879383275063897198 0.0557057442102171817859075853030992 1.0573174497668976959250688591171085 GT 1 -2025306408.3111686380123698521534908465311421 1.7446793033447514474352847952667031 0.0245833504229450243619949974129794 1.0248905663654459219594615126451089 GT 1 -835870.2159451201422086331058366147130095 1.0201526560920102018805711982396365 0.0336004065522305371400734242532491 1.0341778724889996849291596602046132 GT 1 -16848576077483244187384.1880610276609227992933420552415310 0.2029875111927058579069417270461116 0.0149749341899026875381723303007131 1.0150881906108894556622925732116644 GT 1 -332371354106182276610913444277234638123.1368128463949159395241267423816935 0.3695102365244687942768262406700600 0.0763415522205847039315967489857223 1.0794129209364756918570202005633597 GT 1 -17965720496021552181385266581.4237690737289254148114789739506263 0.1285484341246477119723329847387559 0.0631580070356894635747247668787610 1.0652406417379643496320502550504323 GT 1 -117439507065475470112787282.6835969756895369975934325784049046 1.5818774857508055222009657909300692 0.0221292102613538116090692263908975 1.0223777345071672035815816065411444 GT 1 -14081539638013955931523.5175957522209944625472919452869353 0.2793213782270407535230055619242282 0.0841540686573591969078205404623339 1.0879071256789374777062471451495892 GT 1 -590018852003001503414.5463895863364272179216697855351283 0.5781187330559045860623659103307506 0.0907112872448880200316185402859973 1.0950926194416737535959965435251873 GT 1 -6205341932748121594441021316251949779290.7698999557566653221561276394660219 0.8347183759108814557735377231576464 0.0608462222533518641634599397155462 1.0627760456140030940795843220004594 GT 1 -230180789723377804369829294217776.0622636623695705878800726731297462 0.1572427664731912603193143163025786 0.0108210075209348812544951543544760 1.0108799804396121961213310527922586 GT 1 -4131058954207598.6537881707942751490175006995953715 0.4689098916646551917935688945291480 0.0370301053524747224316388502072548 1.0377331297209398667991462656373077 GT 1 -80544586.8272941094425678340955312897580215 0.4493312623903427425257459863131205 0.0249190455313729134913347865228350 1.0252347812068752421715059136614828 GT 1 -7304916.7552200311498845025481528833592653 2.7871312786883227721186063285129834 0.0524129027511479937427943310588698 1.0538364230324499690389649175920788 GT 1 -83444.1578513386524510340402572389035148 0.4092731341697951521984082436476191 0.0890773969752181625834763869890627 1.0932973435917293087842617476471802 GT 1 -84235507950080.8948491005326306086281163614802998 0.9506568481682794295527815819113371 0.0236761805462515355730660836987191 1.0239609653693953073882133494752017 GT 1 -22187.9323205639718542326292620136910115 0.0525155111893213924808893007381563 0.0114685427840241244243485157916006 1.0115348136952366893870208613861600 GT 1 -326770152527592743.6721224968576950525905027605632287 0.4531663165572709353075838225495217 0.0278660797194415484313729868559489 1.0282617059458058949430743312050694 GT 1 -62729264207665693143270473324023036510.2623779497108278523396132019922646 0.4876252722072139575045606592311361 0.0507593060159458554462082387110705 1.0520928834641807116172910067632673 GT 1 -95824.9725001994920814838730335682235763 1.7107152436844518237692157733957789 0.0980146740957885152297583424699282 1.1031570274507238509536332378561073 GT 1 -33468584997378924465632.3029336551749372447210199227093615 1.9689762940322055431226261828847447 0.0806382026531349708668393345402536 1.0840755481952280198795212612090744 GT 1 -7082033971409548822.4295357087462220867300146288023452 0.2074670918022736139710516648322703 0.0766546770697578302114976793722099 1.0797519834301625794271482674715536 GT 1 -11760229807.3692124252854340082111887681566507 0.8282230826812605325432331735605523 0.0814965189206356892150919271087222 1.0850095843729362968826484306242097 GT 1 -5112615460.2531264202489688847735207455164346 1.2766657483916261108607570578627835 0.0457409242773251658799751116511820 1.0468200765582480602209471866542645 GT 1 -2151168701974675.6061121351221934604206265358617400 0.0141921517367309936924200717524117 0.0888382419184293518608056415883387 1.0930348364726660117534573459581707 GT 1 -1836563550735871833108.5338999352555719637367870138798249 1.6397282067590844791187837171904686 0.0616865236158208605373534512213222 1.0636711892355283420235230269137036 GT 1 -5929930722456.9131806056545568622338949399108585 0.5723561583556113315236014562502103 0.0127084630671301076170523986384005 1.0127899063321216692697376302772957 GT 1 -143315865493491664777751818552093646814.9934176266895002208876845807593182 1.4855591930830530101570428880027265 0.0255945458172429599723637856113787 1.0259277845639713646486765194893186 GT 1 -647497595152626192885791.6176582480229101875628404763974893 1.5849330861621496867902182192561400 0.0920345794614628044268870334611066 1.0965489842133615922609370865609739 GT 1 -181353.5920682839837021279317844182335143 1.4453658265248013726445137314124707 0.0926267407593985407846931061982792 1.0972013818353974829361001471603200 GT 1 -29426.9072598587498784868739239957072134 3.9932821822749126537866889764949853 0.0830410478119916845846095714774302 1.0866925708813252688768647062037710 LT 1 -11583111804.1455730654008891014591128719521639 2.2991783822391653869592314081968295 0.0178925350568713956220856917348811 1.0180545418462486015087407717006775 GT 1 -441533558879345110813478745772515959756.9424332789414972137743740630884864 0.2445176976893741859420127614738385 0.0483851534480297687174449133278006 1.0495948990020987203439852768466606 GT 1 -3439656295623664946708288076844737059180692.5656092683265672012985766747031404 2.1714113446924530450210635335705924 0.0802376921003151604498373517380365 1.0836400032986018060770659840135511 GT 1 -30627840324.7644946285036045055438055063282205 0.9488006759082680724754463689470509 0.0430345848400573913792741919580547 1.0439880269910426740841571055404810 GT 1 -210247701371100374477480956763094856.9365633938997954440922779982107351 0.6035408319004230917086892093157857 0.0265034247627890925983444826016879 1.0268609721655819527601007489349114 GT 1 -102464944870527284.4281714676498719447935282415150913 1.1480468835692805254781109730521509 0.0715558504211130170191989859674292 1.0742450512329051234534578385617208 GT 1 -1064691697805.8266395120566765399918859844962658 1.3052386163634847508633698839257065 0.0703712761316149038936567994138521 1.0729699941919102440807770003028161 GT 1 -19641548920936729152.0333506066236183797880918231893722 0.2631036249255368267910160955556909 0.0849526437113414856961627779669458 1.0887794595391551495191627679970335 GT 1 -833110.3596367504057732999215926800406919 0.0570281962611608463158975104845681 0.0523717192727696455933131791248230 1.0537929625594468313358792801245424 GT 1 -107.9571289094646485944144025611598542 1.2483702233495413389619709431707182 0.0022263395433762154117725391233683 1.0022288215217594277337139878910258 GT 1 -7.1863788397244438482377037740758494 0.1554627286887341663525230465804508 0.0786892804418208432832633679133982 1.0819579276823844474837388766382111 GT 1 -6252434746087623.1458984790984869536891165480475561 0.1459752831928729833641557211574222 0.0891990644890929128753362511085197 1.0934309176620884664965642815166417 GT 1 -2719.4067570411249056559579199237527374 1.3547809176093950527591237576298582 0.0158463198688530882805530940986003 1.0159732151294851947488696714812224 GT 1 -2003812486483613936023872785598958.2903304366880415631026496318542950 0.2094114593981316590967176044279697 0.0452675863957086279809236492880019 1.0463241729421625799966379880814303 GT 1 -102250167293426.6977666467533096629066685949559404 2.6553401358714529024118902845556455 0.0885898526167327462428346844161399 1.0927622663726994107282134403825929 LT 1 -238570575492330126703.2178556867306829778731228045135796 2.2291471387759469293702853567472436 0.0144703720336987703307590034327925 1.0145760889485258769385787146198459 GT 1 -233308128120.4231873881235929572607221659563535 2.8398464608645003035919734464678190 0.0729456913249050137703260613653994 1.0757431297223130549949915464437129 LT 1 -499678333358591471.2230205764626429407256194708474104 2.0457373880909852325086784810653994 0.0290448287165403848436716121852867 1.0294749793328191752957988350738788 GT 1 -857421466098382340123.1900354933388351149498079986707572 0.5244198420512083435681132151588488 0.0240057104354280619665262399158432 1.0242985434421322651617127133787040 GT 1 -80874021537232785517823845691566760053.9832953120842895968239408792014763 0.5311950864431652614359943165184924 0.0481097091480429333304905052092945 1.0493054915332173682540545054490443 GT 1 -6751429184919.9670582743453525932096298646937971 0.4451471679368847217885513125726326 0.0040452791537202990316202255673664 1.0040534834286324375853646164900671 GT 1 -2419934306395505568006525991085.1541710878615481412603825349213103 1.4496829518895467222458164072620236 0.0639037260455970705999846637513827 1.0660369510050497998182528490840820 GT 1 -268341512796558599223582138813099.6424968677513726652958506183486380 0.2001213666497189495647258493064097 0.0406899090697217156323229727345226 1.0415409081577085972247911197982079 GT 1 -1105649.4060938375542647205882912610356225 1.2117555805371594616658217755285503 0.0105771342336971022268968101283559 1.0106334697154294019671566692092511 GT 1 -7455999149395497151918.1516314678473519351678008179582526 2.3208267440010877832288183553652823 0.0851834657091859174775455828514676 1.0890317427830149905229677198122401 GT 1 -154596907093612606155.9045294209215995372434432734142970 1.1108441787515178473817572773203431 0.0335219663706681208913213047634610 1.0340967083423339752083646697180854 GT 1 -1874138114294908020092625481.0160585032903493891480597682139122 0.3674520227778206280164613814024348 0.0441479053197034318439866764354752 1.0451520905774906528684239305901491 GT 1 -15249387915.6529282778985481501807964871227217 0.3703863350291438638146864949893920 0.0625937927558340290012103316289374 1.0646385717486896128523244996095512 GT 1 -1852182465900041580588054617400719.2846380726782387416088491897916116 1.9545001405674396560079672629632345 0.0468961731652614829880404860069820 1.0480314339015766308087265961418830 GT 1 -6.9855660830010750100758319798323231 1.2035669179121963727065727827351961 0.0618635645359960497829723038961403 1.0638598869669014512433283754644358 GT 1 -452671425155240173746502.3423842867509700126163861119889343 3.2306176158819704231470451755960294 0.0337258792565050604586715237756422 1.0343077161387885583780250022191246 GT 1 -15445482419066251694341591551856674295616.2014291279772209931584668848125937 0.3802733458979048850519992828822779 0.0735045901933341117191395078832024 1.0763461876061071808100807572587337 GT 1 -593816832421352237044460599111321.5358622625385571272477449092426673 2.1746793376515229191852752542698102 0.0788450136671339029047592850433799 1.0821269763926925900689069322827980 GT 1 -4798268897458534330279354138840200328506.1699942022513104703642253234755588 2.4131430465437045176859727475661526 0.0911870166915803496513834951822201 1.1001871493666244496556424199534535 LT 2 -5906022411874707086643320512176691079362.6383680332404159188443661616307715 0.4736673552606392763870588011323829 0.0050310876375439918852390390739789 1.0050437861684718761057618563746911 GT 1 -5321510.3174417938115922522957633979566050 0.5805052712928845359634565482223200 0.0258419631890948018543820509130115 1.0261817330489194544028477308551306 GT 1 -269720698086442510.0120102350784974337079427700889667 0.4560177953810751632118880721216394 0.0436060331058938548309740092236213 1.0445853515586980177263249945123219 GT 1 -152.2012096312986582828212564109501661 2.9418993851848488253647908499150906 0.0847996232815874754143974606278217 1.0886122467325487574397317771192654 LT 1 -46846236715204469900201811197956.7184373508594703000685507241268830 0.8985745210229974802688217961571245 0.0945381748607826286455884912619992 1.0993101614217941336464569459237188 GT 1 -154600087755985.1061155558008287617620034118023968 2.0369364283216409853307803461668226 0.0696811138218378129595863066995684 1.0722278632440005093758625987338377 GT 1 -81696767808528.5181455236762641784794526870631344 0.7160075116764235210296590485519502 0.0037002713594015842079320877409824 1.0037071342985236436616048915285085 GT 1 -43331602319925203596310.8395910664112478186935939458004900 1.0919903642901532405648539361888826 0.0288310456161552742233797164831310 1.0292548254318164563213522888760401 GT 1 -33344527.5158876909694457864414192878918662 0.0403764683921600017443374793664562 0.0001007051842642819836270360105562 1.0001007102553718115712245170257086 GT 1 -355472476341172332876135689976008.0528226206827913925992134813075848 0.5370850776015248663631355651294234 0.0750764620559575746527760666772126 1.0780442065684932867091820480619502 GT 1 -2135481956243.7842585784879325565450352927009257 3.1655570601104421604664487014199132 0.0519522211211982780988491473039219 1.0533503783359522481796223450838294 LT 1 -943019823.6286005596102759781690494689847343 2.1493552815565832841190905157724511 0.0078221668321988322085748097742394 1.0078529204574765280395099219545207 GT 1 -387270.6720992094444251709021979466719611 3.3981489570459126886195245426692377 0.0926845244536765754980869660081055 1.0972650662493577084195985881051725 LT 1 -9224444947.9059026781089707974036567199677887 2.2272010249231863209026581903054983 0.0646565140728641211943277224457123 1.0668414525273606145155719973328312 GT 1 -295425439152247097138221827294.3100600636515983685512803792073935 0.7880025786760031688639452958455609 0.0734648413572702173722566116777622 1.0763032861702142451520346476661479 GT 1 -2396866570736822096540972.3115293890160143439957295582481215 2.9052123944991615885604777225736153 0.0957286762416048393736769215612654 1.1006258267211502890728484698372051 LT 1 -1024422492269.0096990740345687980844443822659882 0.9555135003848410848336945906592237 0.0216285485646304492842304951780408 1.0218658738621848471735806861799190 GT 1 -427735.6784290916562304104917414630516377 0.7512915227786662809553922069348820 0.0559032159468606166782933029487345 1.0575265926119936536224177114562385 GT 1 -3959188788108788685437.2999500884055455401665872283756405 0.0438847151050283018843630291742489 0.0468805359478202948521278799023569 1.0480150274107774723452533526433386 GT 1 -18570076869129746344070943488.7354658698303994289600914919020957 1.4381922291175153121536037755888477 0.0448216673296057462900235754373423 1.0458572201538449202467563989820914 GT 1 -8171371538058222486989.4976966832065015298417561221617637 0.2225967421805357309102093051043735 0.0972826215045361589208514032700585 1.1023457551789879050063192404390234 GT 1 -2694318077587273035210648152814123911509544.9987452705379639339118371714687701 0.8932506255499593722782584163436381 0.0456475841058763809628680708813611 1.0467222670543933717001560749884450 GT 1 -9012284242043131618577045478.0344765780639016477998501533240646 0.4590897587795168778379631246160088 0.0890491886010679801159514018011615 1.0932663772535313727650523720335882 GT 1 -352818405023814057.6987930755517487599893281643683143 0.0676133822420781493746359840728648 0.0075090770561178733566926306461302 1.0075374121110947563420527993417354 GT 1 -437386.2800762404814290600186241275833831 0.8167485959285914582862214292693006 0.0202757716988964585547396099302175 1.0204841466105936637136795524466289 GT 1 -58017349890845081711522472563137.7817530815804459638396141815450953 0.0589157266771959897591860615573041 0.0463295743724462874652559802208684 1.0474371330201166360440869327642154 GT 1 -68486957204289528160.9523128885275529374203898583982380 0.9116548850176476114530663209417520 0.0487811618016091666284997105018640 1.0500111291355784526137680482171050 GT 1 -5756553925442187886684184066.9461582129603933986242641554098825 2.6198184497249302323734264341382279 0.0729299989864887830971527722471552 1.0786658064467137665206068905872900 LT 3 -1280435290520525291931214.5592402469837491602682949933012720 1.3972747744867148783336304264621695 0.0178427464469763752259280228201895 1.0180038474470295375291719050349336 GT 1 -7977361134054945.3521812907141641194586685525384242 1.6303035213640866230632019345940829 0.0400652471330506111298252939963352 1.0408899625936266844042640003349185 GT 1 -3182040.9563124703803297421056942091897825 0.3226885215517846498323214623569559 0.0529889159122597328909813863933320 1.0544444814424428076271528580748783 GT 1 -251.6864589855267299120649038261557909 1.6753721841715581648280660238715943 0.0149978806229862555889537014477623 1.0151114861605723666040026706677509 GT 1 -1.3172525973069608345268196934473917 0.4254709842240288930192640615713565 0.0866052034150042093655062611150127 1.0905870750013562114270110198580167 GT 1 -61061652701372787622372941466650474.2577044988754731837544211213535233 2.4446428625967641676802029169204165 0.0315135957405450493249125835751988 1.0320208341691329551801450097495514 GT 1 -349845167460338555061298489912104842960032.5070346919743962260058697679918376 0.2195410713396374032212353669462038 0.0439594989728794091137069025929704 1.0449550017369805694719394876259275 GT 1 -1006946614.5472180728957681887846370583787515 0.2987885132285293565498350282273144 0.0040576287427959623804785495650895 1.0040658832550338910532550279394417 GT 1 -16368853.4036097294468670018046680581317516 2.3747622408658868405640333185678296 0.0725306274853153311343104961859230 1.0752955065932799413495322209464494 GT 1 -3104210697964126901242630320119206612272510.7472542009315083402617204046702536 1.2137780881748898303763734062283073 0.0135932343512565604902916484833805 1.0136864682253307848755952783216459 GT 1 -20395686442609913353922789757587914.1753228187689420599759977791539093 1.9992473761784538096925689119108151 0.0728009489437787560966380917763372 1.0755870104081312888393314117400389 GT 1 -2.9183558571666473313231384382564503 0.0271695447269787074775390568418209 0.0586238245304126582626416773780313 1.0604124578883562732524939227690150 GT 1 -29979775644088235881180595805973213668.9684813673232739847111762988605969 0.1671704396674098176799903273938695 0.0136957291598685004682911257166999 1.0137903808681946804172989146555184 GT 1 -817036355929.8204489267680299867681383109221052 0.3129349493734178407319504182535041 0.0374383338593069762484169063501710 1.0381571461549072503070279003617958 GT 1 -3816700.4362673979293509055391181242421252 1.2375616130470535088984381708592052 0.0438092019579442937166424201764763 1.0447978063021837771722182546472857 GT 1 -45111702423899196486491959987.9969399744706011278128087435900082 0.5912513666077759907881049984499144 0.0692792564065307468234730748395066 1.0717959998756722250308272243225087 GT 1 -185839962202223.6366261309680588804505573833417949 0.2316625107212741102438584885730189 0.0746350273046758029979902040463752 1.0775670542140158592616945372237821 GT 1 -1896.1164084824640830252929302567341350 0.0035786936600870562342104294815727 0.0179664006298408057224515727835126 1.0181297559684379950702950302484060 GT 1 -90781596180915339824815.7056262211908597022950217831884920 2.1881409714632751965544966022361283 0.0914300992593269271372206769263779 1.0958834532794272717878278755124632 GT 1 -46640467855742.8789607133144657530135550575698081 1.4538601988772727446540745645578948 0.0724234774540158050350748663454235 1.0751799838111169845374571361176091 GT 1 -117429457864854190.3613072482149099266515822366006590 0.3092542601854081190637790052841296 0.0984153945326058023766999830500165 1.1036013910835843344433819490709159 GT 1 -30074.8065916829179960474048933045217964 2.3898082172154517589376912903654332 0.0183031805361011011055147053769960 1.0184727561138062942109067590339870 GT 1 -1071.2368439275154027692664001255419401 4.4340157570694149837491891997547675 0.0335667110090419042851086955993709 1.0341430060051994595446011882468111 LT 1 -242119718581.6729187054209729236552908257660049 0.1171113840650386003769629045161181 0.0275063889279929092791001469625351 1.0278917731028820442155463759587712 GT 1 -13266714518977622343526264999505040407636.7979032777129450777155728691729024 0.4435999524500588030191025010143399 0.0878764516626598656874377993261008 1.0919798284148564129245505623532564 GT 1 -114072467824526164948023106439379.9544621666483521976032370628591138 0.3159773230719011721058817439664114 0.0855954339338024883574368801597169 1.0894821730032889960837801295689943 GT 1 -1719423091445481108944407289002.4002859247469860273871286968990818 0.9938718779972910144823069270900840 0.0004590817311155251530023188388744 1.0004591871413959710326408955664037 GT 1 -281241049184429160432059657723764007381.2463302862577045431079337911073094 0.4030085431819454538229512292696657 0.0837413461032260022776190774775705 1.0874565809180762116947073044460473 GT 1 -41566.0683642887656063996670041195624594 0.5585555655170083001470660543233608 0.0954470195245963809266866043353492 1.1003144015389193882143310274556315 GT 1 -14029128144027348451608.0511266093383346076447165228166927 0.0510040444648735824517787295309766 0.0369223288831895568204515928822140 1.0376212150711530261295810488242639 GT 1 -2714078.8816471907942688140414461774528201 2.0957502458086630983088700706315026 0.0798060164300167129827439408301848 1.0831707794586443345416812113336694 GT 1 -258391300040889660529337.5591378253658655100585703640070311 1.5957271953220413083524005391345732 0.0892902681412142913896372129003586 1.0935310583352466379026220955346718 GT 1 -187299704952768200449131087885.3391345762727014838315645966636979 0.0894635690209649584796864290176648 0.0785248354885367517442099565500099 1.0817794533895844237593726356382923 GT 1 -5202782906070680116.8445907406604526345656543723414283 2.6775664752480699731483349182122843 0.0535085053393424001597441826325520 1.0549932944685836276144861052637411 GT 1 -2282859.4365447206654693957337082108166375 1.0007882021812346300197639174400614 0.0591821729656976092551930134505878 1.0610057532138332092847874852808002 GT 1 -1807803358750600282900504.7780343658629031330893844317972904 0.3426807862778651822401004518219179 0.0704918412154959372205255918189196 1.0730996942534549395969990125444237 GT 1 -5937087312570908089616690979904033067.5393406270451649897285141044310145 1.7890900223425914280700073748779059 0.0543604347187024393979777703453609 1.0558937917490996727506829799153371 GT 1 -896040461579717317071084869861426572243723.0244099650018470536864137749206377 0.6519420976760981521592483193551065 0.0213260324741154956603297065155348 1.0215567179376534731330541045235079 GT 1 -127395.3260715807113919856546234669329850 2.7384779861800734942041683913880560 0.0785903688367747779218721303183844 1.0818505737856281243999888045051703 LT 1 -729979713707131432898516273745.6048715584480379237941842992911869 2.4144610527191096950599297468728744 0.0235035157679682949280422522720905 1.0237841290487084505592270988573459 GT 1 -712599552271707539839571507868.7309636850962827476999895635712747 0.4358802787511126295754629559564922 0.0920045808811523360432157079231351 1.0965159454168654553115661241954301 GT 1 -127.3318333623115682234082090448102308 0.9107509250804719539673304489388854 0.0933998180741909097187935044345384 1.0980537398071873752353417128034531 GT 1 -310561481155263811403675870016245822420.6370970462649066746381720539656923 2.4824182619032277249660958274629524 0.0769716331528930848882654775685655 1.0800953116394016197289798101857685 GT 1 -14843120406.6246457959983161059815394521607892 0.1377131750320541490504082312688040 0.0189900709237284766807262136793509 1.0191726980854550364049399638975480 GT 1 -426.2107029552233827221763042478563714 1.2327573943981862778816898288856083 0.0821326533493397632455812334961015 1.0857024013623409313329282300403691 GT 1 -29.5013449602647985740834435560151700 0.7568781579116860305141551401356865 0.0252554990435163391828048717066819 1.0255798926265119547844240799856488 GT 1 -26.9615447859615981890111174338562361 0.5211852012737734862747724169357338 0.0184436523096363477428860666690632 1.0186158571423695890583347811569544 GT 1 -924544225005252693181936057862427820137079.5347168835278590981210827505996910 3.7029579919263518523896317967075892 0.0963899903899682499147123742690999 1.1013574169706355314876704113152858 LT 1 -1857764410818276464877176.3443901310642728384567428540178286 1.0414723843647728826869147592969730 0.0397991481617931066189956679899962 1.0406127957390472919573394635248493 GT 1 -8877.0164937827783795476694401396554378 0.2361950723964506932894804029964968 0.0338342544392473632699948541078645 1.0344198802322184756226436695635662 GT 1 -1013830410896407295210710467635556294.6422627151293651730115503301158733 0.8331633507946694942111706942560237 0.0594971935139861304820374693323988 1.0613406462093384711902510678818750 GT 1 -251253522679297310.2131229102361712285361075159488369 0.1211996408202577120121448981307825 0.0647136388817562475747232799420830 1.0669025280084346614478821182499504 GT 1 -4142392.9394791042376125773502729997518258 1.0086039955373609457325992550843574 0.0169347344886596721845682025037556 1.0170797668260080436976061879320556 GT 1 -2131127392877113817261383395425.5859593187857995582651298045078412 1.7163909022468029939638726605761809 0.0024111792669797967057788777563629 1.0024140908408678970383121306029647 GT 1 -310897853549726625743185.6647956615595182848880892041135152 1.1432263456914508983108394353002338 0.0344899039564434736026954305968881 1.0350987203649705880307564827843699 GT 1 -10.3348220810643463584133430474868264 0.0870814889368747377773478444538553 0.0072060715877242157814116911049602 1.0072321607306296606365345605597894 GT 1 -1884486523464503132.2967965867469131610387193058966613 1.3988657445189845469918983332824273 0.0076794430761071955550724990156200 1.0077090818360391820862088268433945 GT 1 -1082196038134756422696796527691.0926651279564908087854519277982632 0.3936827889679439421832639109981159 0.0465881557665019589288278000577939 1.0477083131361785985558705304748890 GT 1 -159687236193735087008503100227762355725.3167742109558488381362882453232765 0.7520828326253452487097422298240990 0.0620437357404294603714671303506625 1.0640519576519095542593813989844948 GT 1 -626570452383888791905302716511550.2654889223606731841924572306972333 0.2304941454789644307920894868016860 0.0549076362783121504045934308111559 1.0564726168765476022921814416743469 GT 1 -3166049159547778892938019.3232564821938755717229218875167256 0.8960386225465185357227582377042137 0.0041948241003054729191561986934411 1.0042036470574016490765117655266398 GT 1 -29737275062938912142825679676994.8208032718684060259968370060308683 0.1610857480057572573459476902862444 0.0883095345351841097126367642401197 1.0924547484202812005462567431488859 GT 1 -2742439473218706857099225839991806334666680.2198243814537662089275763366206656 1.6407407891176659703528759060453761 0.0553665490533230537641947161853657 1.0569583093304158809187807199664522 GT 1 -19.9675178833797293164740763152791952 0.1650990215032029489688195657947429 0.0734356003422749214457008178845148 1.0762717271372775141493653902533210 GT 1 -105221785655877159786894913617.7127143622306966442071028093055966 2.2138583867964991387718584378762830 0.0781388022597664862759394610531064 1.0813606115088306046002232396015597 GT 1 -866946400342428740882294479.8653657700945360896058031520965017 0.2389452018915165125220939122891452 0.0752678852911097605167283810966493 1.0782511891336653930304426931120849 GT 1 -768781250818558173428882309462767832.6252423268271307914693836124946605 7.4266283656647217049834085432191696 0.0744107898354515675790762886669083 1.0773247602962109527994805612895133 LT 1 -2063312521444853380078140117.9747945971025242544512320762537704 0.6339830677834249656295543821500783 0.0772540266279785920137057851740749 1.0804013008073465397566804454779008 GT 1 -111584576310463655995720233344045292313.3043048366045605608164386902741868 0.2377858624131793554747348414347334 0.0801080516754308284716192487421139 1.0834990633098399962766015254710318 GT 1 -161912034.3627617803268001186737957982289094 0.6221628556399523475294596656780209 0.0285413679661288538507836398615162 1.0289565926112811937068863088563947 GT 1 -281833449981898634066.8261136528812843259138720667605634 0.6903295591642163932906593619852907 0.0873135961492050756976660667520461 1.0913629361947874621254188525007256 GT 1 -10.5763268057586531823033904725708742 0.1349414135720939601190499151352647 0.0344765537463553557555570110348248 1.0350848933549307221946452738798120 GT 1 -57174737707683321.8133255362117179901617372950544197 0.1705830351110435056090146724310025 0.0900797258285022083467581547028511 1.0943982941098435622646892264498256 GT 1 -14341427622504143.6510136978724538277978832663559328 0.8639869784070005452808762305497147 0.0567098671269150137599778187456134 1.0583813736025105415057237597998165 GT 1 -464672796198799405.8658962073623450844106452065500419 0.0860140705487350101424124661400030 0.0915669900256992570021168595429556 1.0960341308219056806666764663378942 GT 1 -803.3355115103667763914076625545304297 0.2853877470779052761639060188708820 0.0354735998050806447410808194609108 1.0361180751136842971594906724555266 GT 1 -203.1137300592206851028396495502693299 2.4938520297353192680464964635457795 0.0509882739149652815238589037933817 1.0523341241945589521866750836188787 GT 1 -27101.5017140758232198913413009636956912 0.3262735428499505205087208697619335 0.0442053224243137398261912339051373 1.0452121614080027295585766837342626 GT 1 -576587641716210.0515891701459265806831921274913459 1.2717456071733979370231996766751369 0.0655124250450738564295093329097160 1.0677569481032941048644360344734240 GT 1 -245249277879458743698.5849117038719684906350015081235005 0.7034513029808907815771470091464955 0.0956363652333091905437204942784424 1.1005237486230346988611543947837840 GT 1 -53517481277522246.8580355851092925122033831999395998 2.3736804908382054956736111677119284 0.0108605115342434891314683948962442 1.0109199173999088939894452657229857 GT 1 -5227986419665362529103969963433108.2161617434392896443622474027683579 2.0689344800255450157077893313839577 0.0240034103001283308684133755340366 1.0242961867351167089126375702772313 GT 1 -61303931999883287341.9881605559686100837150047146526610 1.1122599561115050781539297133346466 0.0772878116685014221685169684164525 1.0804379150652340422918867230167445 GT 1 -18.1735244392664385922311156961741913 0.4042556549796952443772487078829155 0.0878802277710042329067799187950258 1.0919839683322696232638516933085263 GT 1 -18.0926791630178725689042572849525902 2.4550626610216623615579826706376253 0.0851233850235912314874843068263726 1.0929235506091848300679643653795942 GT 2 -3490367064329619305578330298956112930410921.3592230192972055817922618205415563 0.3690466502398332227203949403773794 0.0882846757777669135897746909951150 1.0924274821282036671795538677364527 GT 1 -102251.5673537276975814198547401068205328 1.2029060265846354815989328276933941 0.0423507741438136585850728105418713 1.0432737206124430775618310224797414 GT 1 -87089759807844.6673506773222715814097416184694878 1.9641403398624647992057474263696040 0.0119359056274262324040217465917267 1.0120077104916867752275514358292895 GT 1 -3018721223833.7817543125089540323577898998839499 1.2509506288063160372882821598423236 0.0533756228856223562749651824987883 1.0548529095550984469731138597792914 GT 1 -71797086.4420188233311997841557181862061148 1.4867376033297061987797762378307727 0.0534759785469410559756580641462347 1.0549589294122724977182230300439173 GT 1 -1715460254.1895019982187956153714275077168170 0.1682582772108101115440281885586937 0.0476538434218801346449944569827179 1.0488267004298471783808140675417310 GT 1 -55688404249602785919830116.2019544830677453435928664605660823 1.5054803739828910554611522054580167 0.0258323771623833863327133692478871 1.0261718927774391494172175381362558 GT 1 -237793334073.5061459549525291465737563997141787 0.5927715472733022722476039366135284 0.0449025917602533817887210627366943 1.0459419455460623688320217117556715 GT 1 -186577529.4914527113476510975002061192279990 0.6877512693354404002759122247446442 0.0060443050601125404475803844329917 1.0060626458140292323328535676553618 GT 1 -4055620706251189411957389385522.9715167775336339575204091223977410 3.5587998700563989493360442793292226 0.0943364949544308780822916053179656 1.0990874491623782749474010385488611 LT 1 -3296151686155832686343050482220094018782031.6861440906511727985544965198982853 1.6722304044777101328648503333214047 0.0836470039904392550073962121734481 1.0873536217200651007839023052300902 GT 1 -36151859295692332745223254002048010.8870516419879323704084700874134370 0.0788396577252048562466936694651177 0.0353134904667752097431931143973958 1.0359520910091143242423451180562469 GT 1 -270556081633376117162859012915285.3824530099529301762127431366568912 0.6531053378552797746588947892529407 0.0335232279446214016045053336277142 1.0340980136744085489902820552057588 GT 1 -202655068.2201869794034411440452079097866839 2.5350674518023594422847985405885222 0.0844777243951318282541341402209361 1.0921555488392741242068433626530472 LT 2 -4763213066785790089.0602813863359946499936561813369983 1.6349401853783369854517446441108187 0.0697347502416439845159941357308161 1.0722855187069113890611242856232826 GT 1 -1585006921057387779998895.4668788969054009323247586651946676 0.2042249676144701604699985936850829 0.0276492244506331564317503540192596 1.0280386594284715147003323652368377 GT 1 -3139975056951548.8104334174499705798084847996338052 0.1186324865769215292027736910713031 0.0874967358190723306273395657283125 1.0915636163473103248672810350009034 GT 1 -1143303331852560889653.3639264211917660962811823242658637 0.5914482946159391276876697290635512 0.0514553611144644468569426537438566 1.0528264281045301705278149264767212 GT 1 -795780349.3578037766837450457160801834670958 0.7401094548382097470866857940510149 0.0408850427325983561738664773981641 1.0417443392625442216013079749174367 GT 1 -279.1919443691800046465709991888515066 0.0523683506842045891183984620526391 0.0542956406228883875936048045809669 1.0558252752884024443278570220911508 GT 1 -117217469732618467404860145492420766524773.5180727235464474330119890998133050 0.1081986578673599905441866862684128 0.0553729121213889259764334646047293 1.0569650453712478698472328933974841 GT 1 -7236832761804432116958836323.4020448703319953246726387209056107 0.3910855263939143744377097700600684 0.0947082776769284176022739863907347 1.0994980421158671136185284380417574 GT 1 -2701.5106853026049971377373491386434564 0.3493882869443743959861720600456996 0.0575364401870495573047652236296135 1.0592580237358515159008667799329821 GT 1 -13345812653.8459541605531243574735775340148568 0.6827965797635481830374044434024620 0.0684396383760639866719786422875738 1.0708942905848415742015601856728803 GT 1 -21946139868303566492388188035102021200552293.6598841821716206166153395949061204 1.9179253383697141726243418469461006 0.0945679236570225995078122329633005 1.0993430167936282294190827923123202 GT 1 -3760113655414694677832671535833089253.6725358143015729944002382403901730 0.0117462631680416524595834204558941 0.0439880597448272100272508658441238 1.0449848762020666537925755386933592 GT 1 -718570553999176199295050181.4503385302960892746225046550140598 0.7418218022054570485390140590151186 0.0040816229529992286522100217329015 1.0040899755117088163780791998875852 GT 1 -106277472447000.4278700221717400304170640089575661 2.5913591701389112278020919666223154 0.0512096945006565049480825047306901 1.0525674684349074125330392518720305 GT 1 -1939257906.3306638302571258860164077934693350 0.0177606746857067564597129520060721 0.0629464926876527417950443431443819 1.0650148934516764904201582948929068 GT 1 -2937527260028300491714315.6177833011116609247421351340092899 0.6270314348434193632355361129514218 0.0945353172755179972199727863341505 1.0993070054844855514082732269672063 GT 1 -7775233.9260820607641298297580567767175467 0.7750262273864111294991927195670971 0.0142133664635281071483064172856653 1.0143153438041309828134326168912166 GT 1 -1222985436621104.7420862043698194529417069154216524 0.9992156528275315522052615087632371 0.0589871579970566487236031677456974 1.0607984923029045576522506557558576 GT 1 -126154171561673245745958396924.0124421011745498022830063012275134 0.9926004447070014804688166849017247 0.0096292273671454135763858213226938 1.0096758881568270898679167151432839 GT 1 -511819473655385687487074.3543471853092392554338693711892087 1.1851340032504520506471488827453525 0.0684945098670745188037089865414806 1.0709531950953554182742466219332632 GT 1 -286.7295340016920381802600937844674410 1.3975594863698208951610756971121697 0.0667571886269088508443361396332681 1.0690898640051188657511419218427399 GT 1 -695940134447066623912303850131625991344.5904230722658504802283747255398582 0.1195198567901980737750232482456990 0.0846767662211406340295786085525181 1.0884780151280758299094597808710805 GT 1 -27561.2546446677623004363363563391645292 0.3473402826062573784131470313061593 0.0540488031104283487049335993320944 1.0555643001726703203050175855086196 GT 1 -21444466980306143513756.3780040871225648001084789354464565 0.6655039393460292740339861981461845 0.0143430394285644526069021604026794 1.0144468950852438777847233659291281 GT 1 -731.1649307155511977557049002621337028 4.4190313358468851843746633197272675 0.0261916787557328890420210829667322 1.0265407901434623071618436567194481 LT 1 -31229.1759474364921659123475292087027593 0.3367047141159441043827090627592860 0.0927492976603880392219068432446794 1.0973364587480478798865095977363864 GT 1 -314671.2277918987629265285889466596500745 1.3440132993027151752080835790492966 0.0909273333018215773686050531303115 1.0953302466376661485849803495038684 GT 1 -211688714389427796338718840632805866855.4946044657720796075574054685888711 0.7437006295471230031280436080742324 0.0274177918691365285473966766235150 1.0278006742798511129843117996947093 GT 1 -500745602070198734086730514181506436.5491840481519398805621223902260809 0.0059507783486566963049248315872430 0.0898678465129136315926855971882361 1.0941654664029864663144015936753288 GT 1 -8300.5391491858943744077088575893660383 0.1871988157666046301824273903356990 0.0581361175756579994979271550503938 1.0598945133346459743697401004130654 GT 1 -584365794058.4045970030415208691530381845116912 2.2022292138416982791564623339798569 0.0029034909598462852073403514111902 1.0029077142665929244219197669771256 GT 1 -2122923494146243.2026313921992017813705575210868954 0.7559999865179119419161457708228484 0.0216283736654278398578743567084650 1.0218656950965568028871460779811075 GT 1 -94002685166638324679615873443313107.8213884002561418438353911923676241 1.8926224806851555092728750071772564 0.0670497096097510424702238666906887 1.0694033588786788590061034939417731 GT 1 -10259963859801802965533023713829.8969870322584957824823591410830937 0.0659779805368842313931192557228661 0.0713391720251910158256415183871394 1.0740117005074220125645320495126477 GT 1 -126792562279016427000055609900.5948713401907801947213885860992059 4.6200865020187262154155678413908707 0.0395548427662937344836385666778411 1.0403583965466265882135247672357613 LT 1 -27114394317507719733322601518153070648201.9639801522760133120850217050261151 1.6060749492711362619525721866728874 0.0473903570062720392780747499625233 1.0485500678514455131823036605037912 GT 1 -7191860284029764697841810563675540791.5579113659911948908043895106399705 0.6374770891334973278533315881934261 0.0316164877323016641909741434683596 1.0321270798090444785206106069357349 GT 1 -279270210.0642655790447042953641438805141961 0.3987319617313869996394916288893553 0.0808040367494097505700350715545331 1.0842559440471055416100066324561010 GT 1 -86.4555350974470531593089307507464795 0.4454973823179010614519968545503447 0.0670077978830764733255073172235436 1.0693584360293950069060685642124545 GT 1 -1276793153446487761568364496864092348299.0835563484179499678208195307061488 0.5542403142074908588987854496399092 0.0333206945582015578571971903152640 1.0338884771661892142950374984328229 GT 1 -30079990339766289847.6592974744635842756857304919343789 2.4277567823084851618404892627522308 0.0700907053943067488172384080723382 1.0726682302735070187534445474777795 GT 1 -3845927074456952366973479792158.0933096290198433726558693665272826 1.0719203784145515281310203765448809 0.0787258044821218035641460906604340 1.0819975720320227232504433495728560 GT 1 -7462750.3644328300289212344909951108344054 0.6601409554388984157749826681280663 0.0679311502047799762201429622440237 1.0703485938541972433878080887991599 GT 1 -13525763907438000969949999539554899378064.2245489278829675879630302883735297 0.6819306444244945970008589822267833 0.0369040463766375086859903633576568 1.0376022318327597962951893384872743 GT 1 -1092064490216402691.6162481290260450244758485453927671 0.2806614508947669266068090791185519 0.0887465374413873339051606145087361 1.0929341958765155841179428963027740 GT 1 -57079554057791185628305.6466511509466874783220765249436065 0.1134254977691398276567740475709800 0.0794408996628618330177712284765931 1.0827740757669485275887029269396767 GT 1 -22281389068138136078185622847401676510182167.2272445619141490785608527192526458 0.2409051804175522018837981850491162 0.0194352004959968592878427503754962 1.0196265473050880497720880177468811 GT 1 -1713715239236457739909533597475940.4356659714409551880371986153776861 1.2584607680253453103712420729400903 0.0107910597999553667551017962870049 1.0108497055673415721560457196685724 GT 1 -418062798290151.8538020624486243784426170929787384 0.9447469034268114203653579347285483 0.0221945267311111163148884856809922 1.0224445313191110614645207215935659 GT 1 -501626.9046256671532153820536760651770927 0.3670767218021880521571379432110934 0.0979871825488389899824839844958489 1.1031265489859284048727185766193633 GT 1 -231229727940424777596292814985571.4091899831834670480993979471684795 0.0373941896076944909230403210215115 0.0199442143147084378791306608233365 1.0201457847689735958669570853564317 GT 1 -3781109820922313778845752524689327.0094201999089406798156282642579644 0.1905353753037096430320411244305263 0.0450695093798145873024824028469277 1.0461167258412462820621231548647991 GT 1 -31231586792459846.5500888428007481636105933853528927 0.4903347975948387297953149904225607 0.0560332409997224825356574812874573 1.0576643263800607398495058219569430 GT 1 -1303203312138039838355855.3116797103725467211502279937859859 3.8459535045108028880961908104378629 0.0627974638895838070716598771447216 1.0648558663017777474323783925108160 LT 1 -107530566.9018877961920335894557729435875318 2.2821184771425817765029116014091897 0.0964964479492165731138690532529684 1.1066238494386151647888432797292224 GT 2 -26816188051257679239957304.4195797679810864048201866340340077 1.0897759979437878465920249655692748 0.0276977778774061572670195215617885 1.0280885947401607627668634652147989 GT 1 -41381027906882094260826282102665.5469909987214730938749289626017182 1.4250142453141483048895013983495831 0.0224123079878270625982132835183719 1.0226672806479756930948215938941240 GT 1 -9096170188439976573330817328329773430656.9248494755509307849300661386108504 0.9812126994916918474024055573468760 0.0380691310165744661560054329697879 1.0388126926622017239988129868293568 GT 1 -2177329863311582802108.7968934127248635806477149662182476 1.8602284936797105143283830904884169 0.0576864015336672731424753726768530 1.0594171527302532389168225879018517 GT 1 -507029604136041265816509196358.4263573022892233086150854467982405 2.3540522606818101826493199138238291 0.0220440046627616856103181894604462 1.0222906045023056286235776494493033 GT 1 -666749622003588761128251773185345006044.9432994707906101358383089314468542 0.3656244516806579485273103448000643 0.0126208923642847252309511367040646 1.0127012123485010017570746530768940 GT 1 -13831077945.6822551092358845596114040203001709 0.2567172934461052117243916926671562 0.0779538707949393251155639674937292 1.0811600250013149730865232925594860 GT 1 -603195.4914658925438569959545090332706589 1.5504531932690416754113130205365162 0.0360459126645370606383326026682749 1.0367116127511750965039247652535544 GT 1 -1732800107135.8234150158048960026940022531273915 0.2734478302539272823795955800100563 0.0290797260404445171247438857741728 1.0295109212095171648750919451369651 GT 1 -2788909845749640184212934364930266068273.3072893915677993093134722398224852 0.3990716710635346198076866015870244 0.0488653074840534751150943475999948 1.0500995939568018650726847842708534 GT 1 -71913413084909433395482447440759187491.2503384424528865124298126492897774 1.7670354209589672818147028168741341 0.0449134812107236527175886049705917 1.0459533470140742221636562511679235 GT 1 -13551996123326736895447597220895321274850251.0354677032101892422293787662407745 1.2393835135029438994485998199958534 0.0557974420051210148003271935581723 1.0574145617072584846127740739572434 GT 1 -16136453536597287158498828558821.8092128227246830285650027987567394 0.8183139449816380761832887292704953 0.0075920823033220839109985485328771 1.0076210488643167081991121786270575 GT 1 -230750.6481179578800996516245712876583076 1.8556170184413123685527028926896800 0.0803679265006940064850195120760229 1.0837816090378749870298473409221749 GT 1 -455382.7350663772383049918053882734828924 0.4135958788820491934892744265823839 0.0629756478865192678879861045131079 1.0650460076326826206731706976124669 GT 1 -147278830349012244791691730910.1692868707651773394248843190617912 0.8204400874327882998555902650706050 0.0616050812700397036765190299684992 1.0635843964806770174146254940582666 GT 1 -53026439612517464722359504986044335333.8060195381900644960436539428091755 1.3368649021805858189324801089258041 0.0546136984366075925972999916201316 1.0561616502949396718392005419911211 GT 1 -3390137.7071764472048143435283573125259508 0.6578251734066505457050537662882903 0.0594766751016901577932173708827527 1.0613188300187450038269525006895925 GT 1 -876819271696659293.4942215592435821585474051623442127 1.9502000552967821491900733174528785 0.0599052489776848843490804115992124 1.0617746098380515726056030242517387 GT 1 -478907.2060315818518895157875302845435939 4.0432684657496428623253197227013732 0.0923681163018948962708446580306701 1.0969163970128913836104817610942046 LT 1 -1004396555690315393264260342669032.1371649834809117046793354830418860 2.2764828485536016835195748198953570 0.0927966667882408044654491572642179 1.0973886718401796211582086531462634 GT 1 -608684519036.8068644062717770681588578699268378 0.1007130180103192407438358510305509 0.0661992491842864917001079648952529 1.0684921924022380087665208643596305 GT 1 -4829875749097.4327393608269026902322718407736863 1.0524836517114900524115923013234618 0.0568324974900161697213402413627740 1.0585113848585003837252396299567935 GT 1 -4949579.4695161009587371985861243253296583 0.6277002491622745714526383982621157 0.0470566252452647001388830282509436 1.0481997949791495488581273926060477 GT 1 -42091941455724281089984811991511462636359.4663729118067359954483896915452496 2.4624354335036402762683082748686000 0.0705981854628740513659325358927728 1.0732141099583791572295883764013736 GT 1 -1001169084418248356.1280951681603975210048359391050179 0.2895316259198493051015696481535183 0.0086041868207280985897428621510632 1.0086414165443107900468409775299598 GT 1 -385154765838352517552064278608445.8535373563133281912346668540097718 1.8687346381160789058685263876851632 0.0647804057979516511166889602794988 1.0669739171596253902914460972045688 GT 1 -1714709557815242830632184096712895549699513.8502047174318596018766015010300544 0.1383018713962058174937587967304827 0.0335930439928563412213916788675410 1.0341702539724168350761938098349461 GT 1 -464.8850852348435657159850507767435992 0.3474276907786490987517223670052531 0.0733303661485705108044653021204230 1.0761581589727448853659393377507017 GT 1 -1225570399772343077.7852900301745666566807031926991447 0.3441745065266786912788191766665040 0.0750670400369276460372914926584490 1.0780340198118008946791325562002205 GT 1 -5646022680.2675942868036062136019627352635917 0.0263958254242798629588622297928977 0.0238863455696566705311042708755724 1.0241762501373103190006908930659666 GT 1 -749534208.2397883018571579006386001816586940 0.2675292014247596807673957354385534 0.0180227040079968572354734570557332 1.0181870910660226682049589421125178 GT 1 -301769526366112943713228050812411052051571.6405916758845456452400198957680181 0.0921228367648157791501604809664851 0.0569432857462764663584287763321791 1.0586288557884174886216555612292528 GT 1 -3659691184403008282400118706604701108.4429218700363313394882213808108244 1.7353689828869240442734714461562243 0.0037273492802964744202561638431946 1.0037343131565435969378061777624380 GT 1 -4967975286592007592489628421393436396146939.4816669184278395825387534258208184 0.0893460215906489256755666373516272 0.0231471647658230490964310212986314 1.0234192675233814158439407724536315 GT 1 -1982159.1308079278264568052165686012544771 3.0962035053652525101563017498231487 0.0011503866234435370059335161604473 1.0011510488260432938728434798187115 GT 1 -54455355508745591431635.8674158377040472496061505839497864 0.7303289274970624601693006108364106 0.0284721812899870284475810342471903 1.0288853757727442303287442134264357 GT 1 -326979369187293515912944050.7790181510918511015448778571403316 0.2554522419421033958365239218624198 0.0700797692478651042514066570899485 1.0726564698983837487707784627292411 GT 1 -1536095978447551891448851627149331450.3088876965034868889327759876381746 0.0116393461936440617714560512704671 0.0830949079330945799595951936043195 1.0867513103732599227632712291132415 GT 1 -18382062176018132590190259696493276058762.2345543453480039172854245512831485 0.2741267903447607487183556238847541 0.0537600841612869732237260733289827 1.0552591312608834609677214051638280 GT 1 -9036163660688842377083740944187249471099.0621926862313606908316165327216280 1.1715152512082385623687785764192309 0.0090472160876470526947767172357247 1.0090883906788750681946257276696004 GT 1 -379602788.9629222152505700399945451682595446 0.0381321183019851735130356223597978 0.0406015499542728531814581887690328 1.0414488054608952730609114766920684 GT 1 -7634091335592226095234423251.0121159305385660836278314773637716 1.5622216200719981919515259731303947 0.0997873341963053999031453615621693 1.1051242482337339951285734304447172 GT 1 -170522232829380641833151348.6699425634446906785692179961302968 0.8050817235212216599007020798879771 0.0794584536280021191689943200730456 1.0827931447571986747507052983907242 GT 1 -41865068277135098472738636572.6553446019687563473347188029738466 0.1346283387151370216845408380460718 0.0841468174333888745539824345928624 1.0878992081952030618347712072108285 GT 1 -8797127558150995597.8009382626266696404642939607572047 0.8272195243737240335052774396114355 0.0151499875565300805617423831094931 1.0152659210355450033319262431066960 GT 1 -19531298111963263771.6266503116807547435731507475655507 0.8365065012565319316953928061982302 0.0269565760898716533583189679284983 1.0273265689018085390085524049757209 GT 1 -4334746635595629304472611800.1822435347849383561947039803604987 0.0448959744526470574634968355140285 0.0809080891117082779443943205846205 1.0843691497793235088726726836975170 GT 1 -1597796222143327473184509940.2507844466919884462058946835762016 0.0075745419314001337367485462664863 0.0248010366988833360862207398680938 1.0251137638784821476221835771177230 GT 1 -53234204077664580827704.9042571517426603029999126746345340 0.2087541270701893889220180803931887 0.0910556041613938332489810281532064 1.0954713573702641350753099263081791 GT 1 -662564386828472335946349305528.2709671987095706132149486141896446 0.8480864827642286762223110500641883 0.0397012549932420445535743525320388 1.0405108502152922589818180149894100 GT 1 -474214198649317613862866183.1082316023948852868189824539617953 0.2603188285439529522671165794223850 0.0857132084057214447624241169341774 1.0896109803841391650836991705884600 GT 1 -2488837483365604318629352962123785.8777048507680125223374553663330985 0.4629241814764752576303868006617100 0.0740139340063679712029740430999050 1.0768960919722483425052994506305880 GT 1 -3507349413786553394131984698147883.0581200723173482245217144277498477 0.6781990472398243476426806725247424 0.0753184790285990641754369672169688 1.0783059024076737944965260585947605 GT 1 -943362.5547366269648755819276448480554705 0.7880875455827177499300337586355047 0.0651401385054546558219313027227024 1.0673586416811897408129668303668143 GT 1 -5184958380017856279998551592833023607301733.9508902288546405896937338846792955 1.0379783600090523870339839945688510 0.0526061582039450330773226102732209 1.0540403886233275492944081311219889 GT 1 -1.3730379731884379086434817579905950 0.1625483419671766003006913756811815 0.0667630735652838190672941389035159 1.0690961699277129139701164649978841 GT 1 -49525808828431.6513673250986120388911137395109696 0.3145020312454807528354424565319073 0.0458056996393757188865475736707911 1.0468879591304787372379302376582994 GT 1 -1939567519073828529970149394272939815686.3561988174051917333798333872157149 0.1627692732436172486084687816606063 0.0606915756651054397199452444717173 1.0626113932846408780560240686465046 GT 1 -28.4251015022137867150566424423228397 1.0493547906545690508026496172227560 0.0590111760111319548431416605403709 1.0608240162060026482565208791586510 GT 1 -11581175087.5898421190481925051431524778655403 1.5051099814993091358668252413987081 0.0335745062956970181072271669854895 1.0341510720747177779029792006996710 GT 1 -59985756832901421610679021784519.7619086522411286240245428971727744 1.3301976686926310111724528725581952 0.0259711385083923058632155585207810 1.0263143438570501927693559872100431 GT 1 -275496596987814552886950426977.9343406963519809159864802682276134 0.1896129855422522968223088897031248 0.0534783108730301055713266137394006 1.0549613935113441848477666928417777 GT 1 -3867808531103659510861488.0115709632663195490092253480175555 2.4150681308623445457369673240156984 0.0482731534459290640125741609282621 1.0494772112504610165843460905550810 GT 1 -673572930646681593051725946786455509217.1647136041113539277594818582809004 1.4358359265195553768282047650360992 0.0429109499616548241009742832558612 1.0438588406164410446834237922610504 GT 1 -352683394507891152721349096.6101433387705840130853292803299457 1.5357083248150395461011890829504367 0.0073219016943371388059305202670815 1.0073488383822768618748550226538076 GT 1 -868138338735.6256422505830731324608099346526910 0.0248965204929328933280674756582551 0.0311192619055818308316977287103941 1.0316137519679454975550234986572890 GT 1 -45042308.0548763950857077724115260950169894 0.7886993483976914140984805806173986 0.0549954777923732988312874370659220 1.0565655660949483315700307585248498 GT 1 -450504950648890692598922412.5285019754886144138115695883025817 3.0886347263661097279942006264204801 0.0068109866920561196990651777699234 1.0068342873223738813034177236003798 GT 1 -681367232272503543682665909505776.6111809297500601309294423429643676 0.3658791405116658368993727763210201 0.0949415630149322736894316017950913 1.0997557661126261463848119318813938 GT 1 -4213479186648.1256041724879413859909763512021149 2.3411972821800307932688668502247982 0.0860926401844671861224655083135387 1.0900260695407269588098945303836906 GT 1 -29483397382702352476610.2543669195594439861004747278064851 0.3865128883428923802604287567190498 0.0768399270852673911572909762392018 1.0799526327394447818632492483608737 GT 1 -6667.8816726729999973131575835752169192 2.4733747608801620739157879199882130 0.0481994940142346765752844450594759 1.0493998186859329879750628446600865 GT 1 -11199333442724778481287674592297.9620157801210418775080741214313429 0.0771879315820944566852595107183556 0.0760906424470465461795388538234164 1.0791413100387792579822898808132173 GT 1 -140657060170867.1936785628813707370666939992373851 0.1488624756663619697707278034007405 0.0025562304096697339190005390136858 1.0025595031450568894410109850091495 GT 1 -190.9667102805137236686398288168058104 0.1271093349661258224684111211039115 0.0923232014444489147947594170574740 1.0968669124729955172711727859579295 GT 1 -377782462826352702760934946997913723104257.9680209644475659090267410831338632 0.1891216567954109732209336870417951 0.0387653496775624203924146967079895 1.0395367267449819374575595133294772 GT 1 -42597412992.7791994633392518620187580844273447 3.1895794820440099365028825411217552 0.0188594441817138336169543659039510 1.0190395515778724216497236595122672 GT 1 -24259039797850922011384992642.9417627719956901672209657719608757 0.5872195670323792087349759004839040 0.0124120614917620259418902872356136 1.0124897345178113945188634650203529 GT 1 -150164678101261269799019858528.1652946513349947125381432796128620 0.7863706084570334239098748068062261 0.0638546229940157364176119923562967 1.0659844972509444953861856132087161 GT 1 -595830049629860095.6065950396567087154779702935248646 0.7004966521965184593851112729450169 0.0666041534331584429488511139329593 1.0689258952654355535594647567821332 GT 1 -996987427667645229425050317305897428608.9134074154519207038816112763246408 0.2806382818401405236282158091400548 0.0075716302479681762592486112652394 1.0076004405597588341880497087236811 GT 1 -75585407501334281364182718.7844598320232403879647481493799204 0.9702377641634687456622040871171262 0.0534819250689407491424395481784863 1.0549652119159855119414606147559527 GT 1 -781969387208686260098983251310397.0575219849800683468149169553759981 0.7914692869745340836304084462036511 0.0418939041546042303668689208465274 1.0427967599142837692973097104379339 GT 1 -1037049962527951123613207231031867143736.8486512846773205245655250793953464 0.5414071978363641292692242869998812 0.0036034494878209840994111568192811 1.0036099575509482845066476312937633 GT 1 -122068776860.0501588555242291663880141583518361 1.6489595619695238719863944781769892 0.0204892300110162116965122022593481 1.0207020462634179913924090525385205 GT 1 -411452795832444569.3394875838211399509028882205917995 0.8317296587193701197675601203874289 0.0393603121750513969629917485262159 1.0401558749428488150032025879810790 GT 1 -115042735443593761532.2152719745529945306461686817771324 5.2004094343645406952866998938326744 0.0101960981408645661429412603902006 1.0102484344038899020339484713531772 LT 1 -534684781.2390139640526632447822717779701306 2.7139810757100955198706229395771504 0.0562995349449128297551695520045414 1.0579464671552602452790502156800862 GT 1 -5333249492080269080527225803328994748141.1570965402229786634831784399051443 0.0983703524307470826903835827282855 0.0893099639293272812992730099583198 1.0935526854249833929457761826003776 GT 1 -11092059236648790430648065578284.7489297402699672402630634354547475 3.8910141961807196070640978357631855 0.0958326141473829645225489664238585 1.1007407743888154274430913695568215 LT 1 -50303.4117241755608808071228706715765663 2.2118582391715422745812042046537083 0.0936728372159188161509713388214170 1.0983549312968391974992044887520261 GT 1 -4158186592991464817412549858087987773.1915896448758431502124870711246044 0.0200869260906377913090369336179704 0.0009251292927650426570855638028805 1.0009255574889808200725487913043080 GT 1 -3166836019.4887587374804950061487141814904129 1.1959130665070621611128780292708825 0.0487754656404771430783190999265446 1.0500051408773057431896359726973681 GT 1 -31378414995986500017756345108115208.6994296151120570207134565857177839 0.6330607462174221341057868136361865 0.0667079930462185827288696050349189 1.0690371507310683364065285852331358 GT 1 -22494143996817651996836341777991.2158318319898721071256484145326275 1.1846413504335080946668572765723883 0.0813746674925261965304863050013539 1.0848769301710240483126599764249829 GT 1 -91875891421439731660192558523.7415959722222596608401805518465114 0.4482067703281630716941111686704915 0.0794749039005009202941554589472198 1.0828110151287753990172070190890985 GT 1 -18327045032153580608578611008432.0155026191603691825241472656479169 0.3844981122915384172127254830529408 0.0094773541333603913486626039117374 1.0095225500391229660343264200478732 GT 1 -1319486777388934360116428199113118.3429210335407285692862230281921297 2.2228954383632526919334535212092210 0.0337054556230947625169026175067629 1.0342865798823856989459987944012712 GT 1 -9111360184424184719884564228801351456184.0392486425605272880366712703254256 0.9882128330708945201031722287872511 0.0240765417962561786001073847574437 1.0243711196159389647798127087879421 GT 1 -159388.2478035588733635179445645405617139 0.3925957286921588124887511383833784 0.0134718037870542605017639142836782 1.0135633718570236918023969332914363 GT 1 -66108.7838291654892098321380015327110637 2.0600791484884778736470807733652143 0.0511267320540367210798835731291643 1.0524800320232762232372092244797711 GT 1 -3.8111300051210243873625412268207487 1.6547564117794483868695484236549592 0.0294992843990927468464788584578138 1.0299431390205286452339677865878360 GT 1 -433589.8844820972478194542736615465406285 0.4231485296014514170352853182253801 0.0548731223894431202919357341209554 1.0564360984789795614381082192490424 GT 1 -9556243616809218146.4408255154772788584426929788069698 0.3127411172515730389653069090041406 0.0813775678152062921702774638566781 1.0848800874182237299982842985130283 GT 1 -63671969777940743.7179725917092112917625748471210859 0.3680795451355140664975943268217867 0.0257433898995983712781554437238126 1.0260805499770956084182974945267502 GT 1 -9.7932716616475242047277680889974075 3.2693322289709525151604708535529883 0.0585611308578376404080345766064296 1.0603458622099569473054141585048543 LT 1 -587269969800910544971571.5577012401179600641247438471029156 0.9804650597487620277680989443055984 0.0729657886792618313521888287883984 1.0757648086811554837875319724970646 GT 1 -2004263785406121.8749303338002707812314443857757582 0.5624221621789884721378156034088342 0.0691996937776587712649389463853538 1.0717105185657205644677684787771126 GT 1 -57.7747187126757742072351812556181013 0.4029230117808783044148493094548547 0.0152510931578677278643157095935262 1.0153685872184276857392847912269530 GT 1 -2771.6992036206848939405213321029503177 0.5730024949001172409681380672220734 0.0028427437114206874348305964113743 1.0028467919812744630250414405706712 GT 1 -295915569610345653744491.8028754572211908828135778566787915 0.7651220404268321688322676609280059 0.0372413120910325706065673128897303 1.0379524822728185143427925417552353 GT 1 -4692.2787529105103615928625303353962258 1.9883522327251007021133207347284714 0.0217575721852715777739008375986882 1.0219977584636347700719086990436101 GT 1 -46895335948886837.3582314550922092231676447890283666 0.3202316748836346033502653220237084 0.0623077155377505462364594233439780 1.0643334387420039000390066936165048 GT 1 -79437196367018525399.0170434236043314471563157699472449 0.4013519663168891189955749183523084 0.0694470120840213812648504144920679 1.0719762588833667390674481083174777 GT 1 -3005.5636582254378914020873723526544480 0.8077469552551321977112466090610364 0.0962359610884915003461443863629867 1.1011869715645220065343940086751794 GT 1 -92925909977407654.8017479220054498147601595735295082 1.2887152468159508139615182125484865 0.0036398950757641800220709044942988 1.0036465356126477225280209894897769 GT 1 -272509327938847.0449262264878919353363620548035968 0.5317863859802159863751359262944038 0.0696428521042801010610963672508686 1.0721867365600830170112035983692701 GT 1 -37049680837.9891901539527257441084524629627817 1.7091801626696515267904393434050705 0.0633746991665546803143594774044790 1.0654719691089292978468668490268636 GT 1 -69804694571495048654.0010372210793836665696662097472461 1.2846263139333157338363887054261557 0.0439025548800556838610776331410394 1.0448954410834667360368387170826499 GT 1 -631925037243424244351160912678101275474829.9508116304619131507478791832804396 0.4237861786462409536506291310251553 0.0967294194742598551015045527320736 1.1017331242422032701704892480549744 GT 1 -2516414880488877799234704976502216128152044.1312000138941454184092330391430713 0.4922944562443416610938610256103326 0.0639542167959181231393716836281128 1.0660908900212053669467993049760419 GT 1 -381777.9461893059372105681327469854950581 0.1550553586512018949267910716241102 0.0697079745024798795418210599411669 1.0722567362130617750121928167870648 GT 1 -18074569891934110391540689955.6421369478175034386284559912238728 0.2255391890094397684809396521843212 0.0434421664171310988426486511798748 1.0444140281734222242072748893520939 GT 1 -3.7786090358826088177000797124564722 0.8408478249774091219064075393617986 0.0224539165043120359869487783654846 1.0227098439927580181726198086041725 GT 1 -678357267068525056513760384589.0935150770500613252051352196045709 0.1327264860379966638704808190417638 0.0357017711952460322615110732751981 1.0363546662353437639526476069205485 GT 1 -1444.6065922058137899127320169872541310 0.1145021887855439268635311054121521 0.0967416089409806502900528457243561 1.1017466191453160468102055185095936 GT 1 -15925289594.6653214460767300404771380753384845 2.5021501031854049088113396856498386 0.0676899169363074752120557551156818 1.0700898124814118056472184197046758 GT 1 -75695050331960202078047322582140778371510.5652396791866082681290633390954698 0.2936281569871368729823192019532017 0.0286034719994535753274568301092949 1.0290205232990888979038140783353963 GT 1 -6554590789857585200721476090910990316182.4309846248894306513961180596802769 4.2361077044807814565833174439676571 0.0860341424846077590963439262399571 1.0899620632416852594340476018305996 LT 1 -13504484550939816.1044118085292206866302569595732028 0.9505828110928484343385721532789207 0.0368174767706567102394756781895983 1.0375123490800017168786854059916406 GT 1 -275894559201341937497549992.0548656478053586278486086129823945 1.5616070154339086015308133741489357 0.0026511165348146022209381943164375 1.0026546369676836073853234672365080 GT 1 -2555629901.4115493431628793428670781956226656 1.2341146756043900226270757670584439 0.0768549040787180158425627045608966 1.0799688564858803673684632003668142 GT 1 -535266944585096034413.6502490023454360694743994791770449 0.3925629919698989365674028184544254 0.0017645840495163026017722515786033 1.0017661427618727378088647588541624 GT 1 -5309175193779312155912415779407417043699364.1970158659871377674463692336499832 0.8352316295845066226011827940920762 0.0290084185805639140392473373354457 1.0294374807392763194955155736494021 GT 1 -2530494457226805672774.8395474182914774141838655374352652 5.8714059373587027516527933627304172 0.0641941426431351273552283893979435 1.0663472413722761373891890628804641 LT 1 -44593316.3595714325548964260094204359792026 2.0093939603916288765891506339272775 0.0940745270346846067796912258140706 1.0987982357428310625925482870139260 GT 1 -38130037756838802878240183123.1226660559975913089653608000554201 2.0064666381495858472005203883132279 0.0286874113585282674389119523977043 1.0291069380468325194629601731506049 GT 1 -4133820711499828202906005492213337812.6007771037265750932936802091003951 0.8753311917098947569631247808433100 0.0373886851151692819843597702889359 1.0381055676789593345377386357791898 GT 1 -27602797686636395829.6063054652291388714550060246309257 1.2512336574779652890048180503377228 0.0920938102987961436845416596610694 1.0966142210252819302947884012093322 GT 1 -8022571827044820.0192462198058408595468599348891979 0.0698594264080649778624432331260530 0.0042813296586140059217474645480247 1.0042905207933362840653284807645052 GT 1 -138785804.9833133650024630626485179462202994 0.0774606693322062358963876715156375 0.0758343405117044883991122070235568 1.0788639382496236284317334768849291 GT 1 -1509376528173145855819229620604771452.8641921922041149351213660072827030 1.9274843692516150104519806916194230 0.0251455183711855152319486389847093 1.0254670687345937856816915149923423 GT 1 -1193636472.1026000862909334159270187411954396 0.0879085276848777579496109151898476 0.0765599814114871640814710148801179 1.0796494315458425723025065553345581 GT 1 -147556689585559821934768484942922632455667.5346935885484105586299915768177623 0.6884116271811887183373195555805053 0.0995383469638824147851097409248052 1.1048476993526789543695101004175793 GT 1 -147417124153450754.3748635622513007765978704735330455 0.4011638753142431388014218644778600 0.0618193617789759942806504250533149 1.0638127704558936181636390508862377 GT 1 -937725945935955036.9407314858353157373975248764691687 0.6671060569221896209273612734310258 0.0848599996543044233660577586218568 1.0886782195685255183253680220212479 GT 1 -17514277810789.3842225663340568999471362898745563 0.2570962331842091081931814523742103 0.0891680613721734260372326325641639 1.0933968788419039784001773511157359 GT 1 -130123659329889812616146971663512.5635801417600222793763039251856685 1.2030502087737584458010849224254642 0.0900496227637300674486970853235264 1.0943652114676770982765051366785302 GT 1 -7531335433342220083812677.1755310067514596428530236573623357 2.3416123183311120903635116025202837 0.0606391321800073241568305847859343 1.0625555628249311930569325881924573 GT 1 -227256777999300205775688160.9985079149756966470243688320129811 0.8380774289461102529684727215004922 0.0972660649449470569149194477342683 1.1023274145464099965493579147445557 GT 1 -336742.0312895544705746996230806080799851 0.8185811317834055971891359595695717 0.0476654457276326451503969317755095 1.0488388833702072698031177429926137 GT 1 -210340684600819403.1126145604632179478024223857152325 0.0731953612170747634991231128711908 0.0103510690872429804063395400446416 1.0104050139839933835322850328347206 GT 1 -1127862571487473830600842.1702742433745251848223086450330062 0.1993676826077231252046543747514096 0.0323865038640694940148862615796650 1.0329225522906954408579033711450512 GT 1 -684534422020772928432464663084770060714150.3110641609336955620494097932929624 5.0810681930355157891862375567443751 0.0644834373568856369372868652946089 1.0666564288356050407055836684801344 LT 1 -3802962138355414384225835478.1596698067447826054598359471314011 0.0054721725391098273917536978508230 0.0289318533861231514596169805906736 1.0293586312647980372230308067598614 GT 1 -9766896252994.5341188066865638928712561149207412 2.5909219645993012829840898495753081 0.0972983956463591544127755327616847 1.1023632293963006131496821779522179 LT 1 -1.3163512187006580745842519613879794 2.5914756906062451557058046785623128 0.0830673592850573359018756261535716 1.0904815545197354798895831208991383 LT 2 -289352297066307735174602784095558078.2782352289534142812549033909392560 0.5234915044829191656014042020955991 0.0309048601486379008087790989618359 1.0313924883699218648006908728993657 GT 1 -223732243874320210103423069679693.8506038513258490395587394465862732 2.5999031818895017325698928309982392 0.0893486973993078726529183337754682 1.0935952183309950534910145359414300 LT 1 -19613951998835743446810852194842649824370.4349461096942269452608083950441286 1.8439510397207288011660922180536865 0.0185926228584975326053079813738099 1.0187676383976853872964063891505123 GT 1 -26072806535151998283377440669750094.7714037347549396175039232596796575 1.0904226365648951959506078318482925 0.0308193997322215322090947112745068 1.0313043064722662770935250326219526 GT 1 -438232359951549660458192308610617033838231.2063124431733138932144697487801093 0.5925440917713260524499865999832948 0.0700781467084671365639248194583924 1.0726547250842278712193436101004859 GT 1 -571484194547435422347142400300187068.9594698053275369962869426855085679 0.5885414233511594454114606558310108 0.0768423765446170517804206050796340 1.0799552860849166665003518276803244 GT 1 -9605102187595351770404231268626240.1729062808373475258949072146691112 1.0726976759423609340436299485950520 0.0000653671363839600831857127700203 1.0000653692729083257630593049806967 GT 1 -192799523949791875.5515053274758650211299267625232899 2.9522659412649638786820983267985253 0.0319266363145775392219397332299438 1.0324474056461744318053187187711038 GT 1 -7.6818351706472409509943341740274233 0.5484524362822266906290532229451278 0.0361945123916429159107818450389116 1.0368657810710544162946562169971315 GT 1 -129865586550413116946426812772783677995425.4135361941918733511496177767064159 1.4452185894257579633227896061989706 0.0861888604650479109277429663756375 1.0901313595847942590985501583898054 GT 1 -26799167200783901802451583696242821.8774122982563204316163141707797550 0.8696793897825120922889583302955138 0.0476904626766492204764238012550472 1.0488651527914901244666524634836120 GT 1 -239958605225529795636305234243.6512319616562987910761631283744072 0.0309180630806463493105900265415296 0.0428724253160054620078992554631490 1.0438185895339282162680982009951417 GT 1 -7817.4340094394217986495265531009252307 0.8289160195759524662616662571895025 0.0433442202007189929225542658290599 1.0443116389620842108157429647786249 GT 1 -2852502886381931017727412184113048178752.8060140751748239186359619112429862 0.9656629391801933574272379180738800 0.0485633831590268655525403771179661 1.0497822083996075276438239388655499 GT 1 -1986822688652603264394245429858818738333067.2865400271786198721579208237235491 0.3454214272101661577350137209167827 0.0896066074645920013787365933427322 1.0938784733962852227391731554395044 GT 1 -4118420881491094557109432253550172.4311965867673130997557350144258766 0.0998926222564083566605890239527696 0.0464601106483573118951067686308058 1.0475740201532132097649600411660300 GT 1 -2152330206993231301347471610492.7267861434925735755047676362454423 0.0005162267331716076013755711600363 0.0285366727526388656167632448477594 1.0289517594645173017297697817279260 GT 1 -466754369926102197984562917267.0591797368201397095493466821183285 0.1313451913674750698012843768317060 0.0206144039930252966303767695131686 1.0208298467783939991757312836012119 GT 1 -415.3303694060215239083094219466522399 1.2852263543815621445989143340451293 0.0638460023216424562621661941767199 1.0659752886035562597662538920398514 GT 1 -681397485715027049026620731192.8353822698657960995117609422241812 2.5622937448825998115387498911291252 0.0560657197590224209490345784124920 1.0576987336489038099033455598076505 GT 1 -182265140728919946266064116974444.5512101684117817691309370524512788 0.8173877630742876949678930489605790 0.0265107559348583662708650287399762 1.0268685029570203159207483624825860 GT 1 -22146932273562556453213044979.5329009754121457054129046431817886 1.0199713813214854275057088928050677 0.0638298650899807287733470775216522 1.0659580509560984787191891233438271 GT 1 -49993913646387390042606872739803479900754.1829429503546977403202511866875078 3.7952459064851668016830541048514311 0.0989742290164702028266448636984094 1.1042214191374199226076191897478306 LT 1 -274.8857939923283060765614763176482159 0.5618767931072305960464745820297971 0.0481147708982512916244932642565150 1.0493108091246616508324850389883413 GT 1 -6.5879895570873563958702307747785580 0.8317692291352919932331600083051015 0.0933265426397582019944155221655976 1.0979729186526908642267359318598377 GT 1 -43523672807641914796.4069249840899774556859021790714936 0.0788579245865264718531767028041881 0.0583133174374430635860139030127826 1.0600826684769626034004159233266719 GT 1 -4888482189856664836014326752682251447.9254431116255055993244754548787253 0.9832694970764753699701074890116682 0.0771645690438383897389123208885139 1.0803043583652516324906996571987421 GT 1 -1723976705335834728409200476627108364.8489716084849020988749606731668281 1.8445058920453463501587565177222210 0.0473508355806167359223457429644676 1.0485085811772916405466004134371241 GT 1 -308530356527125439817423639633.8900753564776883579693919082305204 2.2545463182918003636676726797387687 0.0400149979832077053137007706167524 1.0408376175414685829688149336532425 GT 1 -10237009155725.5440950373761545142146123365249531 0.2605870453962561549673254383442681 0.0990719983715093850004600224118272 1.1043299339690666864359619086242257 GT 1 -59108121.2819522601324986974545052597834669 0.0786935417975572393481757738920610 0.0147792275524799809571508946135609 1.0148895284599373324064047058061625 GT 1 -4666961249413073104658754494937.9342826675063086779819631973868793 0.2878275262268994165567072176414290 0.0608272527011407095922266287793762 1.0627558472598204102072163298304449 GT 1 -2594869136.7797065950899884110256089638536629 2.3127840371599418473098520039589704 0.0243285889789191548247300274797468 1.0246294182905654606404185752106076 GT 1 -1414023159205961632766254987285345400432.0381902687319141805204450601812619 0.2526497690933086950002183934310996 0.0876600672654213200330348536808419 1.0917426250939919206017843144522985 GT 1 -175822784681.2244950324139806615921565850234173 0.8559933791065535729032441323844423 0.0989206306820862277899627206436047 1.1041619350005611667680060994528011 GT 1 -3.0368233874047396007414617174158708 0.0230727405088421416226136967775656 0.0972774543647630240327278305305073 1.1023400312114339727798428371166926 GT 1 -18276914278890106608867386622109264491.8646303306814465348566422560358348 2.5985423896932075217233800505223625 0.0138175638168663755620388557781637 1.0139139149399012310042497263114795 GT 1 -153362409032624065106235.9892138228213947449326017915969660 0.2036255241963892274523936564641499 0.0141574554417589081530753525889563 1.0142586282488882713998574187884169 GT 1 -3309202264165435171828853604681762666328848.4885700707838618752397373750825341 0.9108905607222503546176380687338254 0.0949839458046335087480315340222147 1.0998025959971590650812989960789928 GT 1 -5426983026561806078080638047310731579.7688222761098179245435921806680388 0.3149394770717529515795908119088346 0.0961884631641594425665308801212813 1.1011344172758048093743510465071317 GT 1 -125777294259072682290537.4343426452232495639252981003672709 1.7191875095065789172556000306818692 0.0659118888482360413044588527815215 1.0681845077812003325409927516291293 GT 1 -18759.3233467949709245823384056412590179 0.1514766931540896519787190032178054 0.0384569100586922957026086243269992 1.0392158996259063252830087458014001 GT 1 -3910309681577500633772.8695755656280080111467509258402990 2.2431985585373107692567415915459695 0.0537616561127300676140688350443071 1.0552607925232361628254023456644873 GT 1 -19696625690989601081094295802516191.3173123388803491228719750070278673 1.5927580905804902039717807632601904 0.0046575388631005822312184832047166 1.0046684189934627323639913962681090 GT 1 -1473998189178716094193249.8160896814913929869837998320179109 0.4094094062841674505613333538968760 0.0839043090873011595346717384171123 1.0876344537023075431521390736216174 GT 1 -108227477910.8877458250801674065777435539293592 0.1528993745081922661261625139022770 0.0670123548431680277978792325210009 1.0693633202837434355532115047173705 GT 1 -199590190024439822524704304066371498332.5868912404296595655681323617472745 0.5602051069028977170952934357511305 0.0377791972450741671802816360488942 1.0385113299599229949392162780116696 GT 1 -203931364541890070727.6007168700930289566387751973065032 0.5619362375342631194072302108328727 0.0154515340961026968365456422228166 1.0155721531619983554657389200530228 GT 1 -113776710851278093148.5375607421046184836505928590956667 0.5349517676711375042818215230796424 0.0162800338926096648620795530836037 1.0164140097217682318994873199125500 GT 1 -7126277589509816686854.8630580952789210699956020989904823 0.2223787048785100866424480048036539 0.0424852885351551865256574624732411 1.0434141935912219941888149468251477 GT 1 -332817113895.9929508741088361165626881923692635 2.3016497651865528127158729243079330 0.0984948133137266327604670231995178 1.1090652373977710469519978654518038 GT 2 -27512788339059421906676.9764980644025060613626900457612914 0.0100330315936184195466787683382356 0.0596730954410978103137734065055358 1.0615276933689952664776322248119966 GT 1 -71498941762646966853.3085240055693279336832891947381285 0.7908538279626907081739250683447872 0.0626699933880394992768248638718186 1.0647198638597442104264078734346103 GT 1 -1323042117068874247774284281139721033.7214902909879426019560510345032431 0.1237266669899673081168492913506122 0.0448025397009920972414004964937584 1.0458371951632805694437932479059085 GT 1 -1095400465752408047999620214990520256.7173637389124370718983486893976454 0.0893860306429103697698483879437264 0.0908171016761045267822559606311637 1.0952089967672159952658512158728471 GT 1 -1822153832937166845255457889.6646586064059874623744882526917710 0.2677837637833117619576684639224973 0.0586375456755466558102524924193667 1.0604270336185368788046628587995137 GT 1 -1022310170061827110153934787033240466834.4903102579867325083842859805213211 0.9698286286562831623862997176972251 0.0846721931828303742496333866490800 1.0884730190494034245030162444541605 GT 1 -538961596709900193462.0139838588570604553414682143414256 0.0998413753687679916569675369255575 0.0705569366258416440513998108498845 1.0731697288079891066905455549424438 GT 1 -64.6320343078474318398462660751443803 0.2209860306285449670682764524300019 0.0461585725998398983962015843884082 1.0472578400078157686833241059580546 GT 1 -1025462126980331486713066.0919679344558639151672857709928390 2.1923112283242170091905217964718964 0.0349754981110232554279735136633485 1.0356017874069607766365519173085825 GT 1 -2153586766330096852663.7146706206818329052340471343941600 0.0386916645872148787820713532861490 0.0657143467564570057520484151555717 1.0679730489218654519318633287648382 GT 1 -15582513386834809495.7364788363273504866000992918649220 3.2455521383764061832876605114274260 0.0967109547232915693351387786117209 1.1017126823473383531356163427812238 LT 1 -2929494940537338637949.7697326192985449209003307156979658 2.1502401140347607740244038282760503 0.0851219033038406252944353685753435 1.0889644502366786488969594108515911 GT 1 -13466777896955010296839616467372095.7224739599853278680482955506476591 1.6508422082782477976668988331538687 0.0823385537361612337386405724985891 1.0859267513027830715832182218693138 GT 1 -74507.4388020006208189154689558763490528 1.8764530172654877440366347641649610 0.0959001652978022852896256315027222 1.1008154880701595132355141251798980 GT 1 -459.3866691710515725421312612372248878 1.5740985782948761876294583570250692 0.0989698851311555431990665186073152 1.1042165981045665342911421642047008 GT 1 -813169363611256577593870439509327.6885946112803789259953840269986032 1.4600492649212087245761481481656563 0.0886922529550794151335981316355065 1.0928746264244303179240007587289839 GT 1 -78940916731529317876773312401508.2442174668147901836475063938171991 0.3463786135551702621883181033539639 0.0532053615182327983558729524390208 1.0546730641363654282666045954270638 GT 1 -5339164701565.5600631542073863625416053288689969 0.0059441073152901813637683962913591 0.0129159037593346495531889835556043 1.0130000392870492176057247510320902 GT 1 -34320482312333299874801630995852.4047486980188381088763672375101119 3.6100185776767663225137930425552292 0.0291626162344496461754490178035372 1.0295962976659721790395376867317949 LT 1 -12521953219.1619408408849994581061258788089195 2.1276990320143783741140748232933769 0.0381343894172176938253171982257190 1.0388805360139922139581205885204098 GT 1 -201450912031565003690297679141920472.3851441825898564544336705032900457 2.3084957457754636172165931835580339 0.0112974253502138728747110779602321 1.0113617260065972264821337943005259 GT 1 -818545.5033566888767912988384752856046229 0.6995726510768886714006130315383578 0.0663339971825798326296379744884377 1.0686365034035075539838721990981317 GT 1 -38035013.5415523389525654727856108507117782 0.5252508975322520804602489706181015 0.0172078021027588731472945186015520 1.0173575770141200316185279933917662 GT 1 -391531037154603533238616490.7363719471089685882530907884356870 0.9327599520286950463634057154171385 0.0437684007426368114806037899741628 1.0447551366332118081620905747746254 GT 1 -17210332392475753702498776534851.2718674230473848127585837404873641 0.3576758726183312164944173854915068 0.0001312134115118652839688131591372 1.0001312220207446516799092494008094 GT 1 -1117820277294707966025280238273997924718616.4844588963897929444202965576494900 0.4418555960238393907856155421218523 0.0249441341540926731157376776358891 1.0252605113222802702740087575580281 GT 1 -7059574347683356228790656.3204538907327629962530220285512263 0.4788694750283957541322224067881255 0.0030227408393724837553965442201457 1.0030273185476080177646300188154125 GT 1 -4318684984103839357475471.1088094724190519943724402197225609 1.9870868112853446589004770057246182 0.0581726589867488344793482964824619 1.0599333110002514161964235185688577 GT 1 -66593156101.5281470979882623255156802537658819 1.2157775981307613030449283122340380 0.0461851439585799735121742296715532 1.0472856976035183408724125827487657 GT 1 -6078701151597127845778701193027.4824060319820678440662699311910037 0.4207343162444205569418157322110875 0.0376151479360952094393348379706913 1.0383408541962614773510642210887860 GT 1 -123164111066646088843122419741826743778.0916483038075928062670119595290192 0.5304120267302928740426448620178718 0.0271457008981324008166440189324389 1.0275209519946295843959611108632667 GT 1 -1309581398152769833768.0479998181612522976371975142387079 0.2122991151439502386031721958438564 0.0995739756911315436604730979384345 1.1048872673143036394269224775910526 GT 1 -27629599755498235071341.8179509698088464970985018595528913 0.4116826744737333574793431587299974 0.0697357198129997654074284979069138 1.0722865609600336057834932251728500 GT 1 -116753697855716593750672836639443861874083.6042776530379228117904913382960605 0.9710597417073923860775558588802316 0.0842244559481378156931616180685367 1.0879839835797197421166023954668632 GT 1 -8099409.8299815840616858137333114277405151 0.6851482400347675016102397971131774 0.0362511217890741767860487023026049 1.0369245180887503868416970296321394 GT 1 -37864084137207000745992426578191272751481.9086758023840675237747363440986226 0.6843217422646907339741917454552362 0.0043791970348662379070692012880705 1.0043888138042898847548353338703535 GT 1 -560628355.5302399718881412511259035560332390 1.2853163383975042791145455667890231 0.0601807884136397907117237285190114 1.0620677503151249753961011784584223 GT 1 -498574.6078065733560995386562347312900880 0.2188847305246651469866668948763563 0.0635157536827016907878969833618825 1.0656225791110279005771718233951878 GT 1 -3522.2025800188739626095415137840560608 1.4542370772231867933692558231848671 0.0561588342914060459569605509357558 1.0577973836580020073958943867041068 GT 1 -721687324972788823823722554358285719.9988770081707870642337392917111675 0.0714495953780690617598621241311249 0.0252404912074908969323000689164347 1.0255644960579994631909769698833958 GT 1 -11816466100390749.5710425707933166597662245514101755 0.1695830573377317319534426181363993 0.0291386263540371075484686042799076 1.0295715874679332820996289955107265 GT 1 -3169161716721892.8898785356445636586755074573541114 0.8236706754057983915377270231891152 0.0802321705043003550058895180354072 1.0836340000308079550570398819558808 GT 1 -1144319425616.3742798528534933860233542622144968 0.0438860834197987120340729988227176 0.0584326759821935590822717346048346 1.0602094262531237116064331377149207 GT 1 -17216197325814658106461906033300043277220.8139239475544334760360741697217120 0.6460260215358915945777733891538166 0.0480784034867151041009760665989438 1.0492726041859553696371901868348351 GT 1 -2808686.5775124342354260917677893841832603 1.6014731586048163388711769412103576 0.0764277524556004034742166416874252 1.0795062500862093781891426904007810 GT 1 -100536002464613899900.0714831272325893300208624271883480 0.2717780063282813585394199448603709 0.0496239245874387500426067498485132 1.0508975038676251956004253939546589 GT 1 -11653718755310227276.7779305356504006168279922974572271 1.4088044116010437215947890022434980 0.0168706630485404160921774794686395 1.0170145937855961935501253993294099 GT 1 -22477198490860936792447915.9682596547085452324665987900205724 1.6784120368558980143079048496606201 0.0779872764649061692145514001895093 1.0811962555911585234378705074720428 GT 1 -42289600055754405524217921981.3838378554085079635918177468663082 0.8046998756087624402884984632930203 0.0175586069921841462335325590512747 1.0177145879005355785303448581033481 GT 1 -221084427332710940.9547519114132366117701351381795315 4.4757763573278767439233575909382083 0.0014348612299770422774317930363645 1.0014358916291228249194447798453841 GT 1 -627.7613611909182298511877996365408048 0.5018442604489919526362474713471636 0.0296625729431803505008352367529334 1.0301114050298201495100012637827090 GT 1 -158020324379.9548639115332986789659219688848413 3.3586797651772668663973656934740383 0.0513653383438361435070323421050718 1.0527315264042320871175946863675492 LT 1 -1044600900737991.1000773098492750743675008293739409 0.0614703272515754738825641391113852 0.0465568457865696700311195979319795 1.0476754737436074763124252359606358 GT 1 -46577912520.9454095751571477556599484216810627 2.0141637234853615753657887454800445 0.0257083876292784009224077092356940 1.0260446234653264044061926389699064 GT 1 -1985787452187117199909118812133029.8148145283212032869126537938844109 0.6607203499918837195355447931275302 0.0868280372731273281086368110759135 1.0908310670241964264826219398593357 GT 1 -28.9153844280242378337038712468987098 1.0467517606463300600043029982531826 0.0339924605575902798747675364409318 1.0345836399942692300068047966188799 GT 1 -419113425877195372163.1945344662750618518500846236794554 0.3324632957125109717866958383055564 0.0596451481075166853254348952793401 1.0614979729407651172947340680436066 GT 1 -83785879168091215904901413033854338220724.1329823067636581829300916264319439 0.8634793323077306806687000798346382 0.0930442250000995659159492632607116 1.0976615897030890035488523993215111 GT 1 -2601287137879877819751275481.1616182813819242829697409635102695 0.1023205281126466005038832743227689 0.0103514288080163039364237589458144 1.0104053774672726187306482035838141 GT 1 -129735.6973666263294691996703191621187245 0.0428281351497808300017444789007594 0.0593871038206137345809607539096765 1.0612235989768454424191904217639460 GT 1 -157215743217997416973295384482.1990102360902963555123633769137934 1.9249757518704305150884870716755963 0.0989137554499178091168609654426379 1.1041543050334643074661485677490685 GT 1 -7260747687206219360563118067054606.6962354768386693103981546679407784 0.6101392870991976223043065328305009 0.0325940150775375499832690675055119 1.0331370320065792731872686442954874 GT 1 -140624985020040770318905.6597577346146848958866331135969579 0.9835615549796920010074351888709395 0.0588373933799257794881561766436333 1.0606393523911003655461921044096811 GT 1 -6.0778190718528989769723704250554265 0.0403001638652726273642628934085303 0.0946936862977611491105533358466622 1.0994819243703738997958986193518886 GT 1 -78823387999758840037115993777239089925092.1037021212713242532410373225816706 1.3585606933591671097337015987370517 0.0193375186970045004435668998732793 1.0195269343739106518589372957812503 GT 1 -9815288971954750131391083515953110235984423.1377184666664038574617750446317718 0.1409967020502704613184623459535561 0.0615961750845671933953790837995446 1.0635749056543401687045264938409436 GT 1 -330158968650240451902774.7361793031317364264873446844187782 0.3741147993681574470036045015900367 0.0974592429651096777560462180877222 1.1025414296453269562573544747641995 GT 1 -14938276.0383362813433427944333626508418444 0.1616706467430459127090478129584178 0.0085914765328956282519090319980545 1.0086285960278354811149398231979172 GT 1 -344167577992498740445734151.5749966720637681713328886277376733 1.2435945094655289426879898123600856 0.0423471845104685992366022821526268 1.0432699722393222078891642196114829 GT 1 -1571742217238315893751400612595196550.5271360333947476882199514425740903 1.3086022048386914317755778236052819 0.0644323232161693340403891801487736 1.0666017929836728235460373520947374 GT 1 -10.2309487437553008531808032861101771 0.2890394099731822454812431130045017 0.0115014183006532488500233320039667 1.0115680711733579539818996572301296 GT 1 -66872363130491438076647592552909148437.5326133484205333322606732250291315 2.0299788074697444402113928207208853 0.0392664359606789073675570491075015 1.0400581571107138004931065599028647 GT 1 -163443665775900653201.6962488412340210382213376373491453 0.8918147642594099273794550852945688 0.0120670651918934849960258904732915 1.0121404632870836976246861950195199 GT 1 -15388965621.8565336211842973401064122687777929 0.2067892206118248987716952999948131 0.0297845982004486937678631163731649 1.0302371684263272059908529781634609 GT 1 -253021096987426.9504782693310670131146929503433877 1.3320114897429115583014988535649057 0.0353073499944501439949227072093992 1.0359457257777965418074278293446963 GT 1 -4311429588357014611.6456162719118250751046813063323334 0.4647983040948276126810776584387359 0.0224674081121824407713200693283180 1.0227236455937273218255990089214167 GT 1 -74138692503188.1890429786479160172157718565099891 0.1899316018521230908741976949458649 0.0327292478534825153777363358021295 1.0332768308407453239769036302583177 GT 1 -2800460.2626948884045297501580106579701079 0.7319268686336476183206202469660950 0.0949119368395725478808359643271439 1.0997230326566765977182710711712125 GT 1 -11101451075109085117894242010.5752020437707408996505375266132814 0.0162356625515048231675288224048145 0.0235924228888274079677623398648883 1.0238751802402957989244587245835045 GT 1 -404071869.0649266193195244585105826583936575 0.9070278274534003198106417960776366 0.0518062601909961681418363051174651 1.0531964307200479346856719313691393 GT 1 -400990707.8890401549110404524808911579162747 0.4309211618700049480746868307206663 0.0390023132959574801066630018711313 1.0397832771905560478281180105887893 GT 1 -5644374173378212200257366975341926.7269616281342735262303644369638543 0.6274759903147859651540972513051106 0.0280180759237315997522877452496560 1.0284180713239709294025122015604945 GT 1 -23274221661932211122643653163082181870764.6393029763428532852388877154106382 0.1047127975209877748051185892048832 0.0291835902868181847092164525306522 1.0296179019833224688809263267223438 GT 1 -26016778223.0687763516331684640479961332333211 0.8880607710928838962840835922835923 0.0954299801848767941421363160050224 1.1002955644120713471593746217646887 GT 1 -3831015404031191575167.7075611067815600123248714567312613 0.8149222545986931505399345379851789 0.0523351756955174406887381025886672 1.0537544001047428957242473749744248 GT 1 -23698143917482342195274178606768980.6075302486336814649702967922416124 1.1134262671690426290378314423600131 0.0522409646627393767671564971688410 1.0536549911705602747029908909123672 GT 1 -369522910546777411338936473697528258.4527047347162908773505947242113266 0.6511776608934639067636504185980768 0.0232231257698894122582484070278089 1.0234970314964994047522190370352014 GT 1 -694.6919756417197299028979820584367040 1.0819919217080777640681755380055119 0.0205515536233459775702107703207241 1.0207656755741561896745588164175042 GT 1 -246338321070852888202905923651637201.4888104487544446067962008846258486 0.7752506971469843827216689809981304 0.0312721247472604640036790948546889 1.0317715370241666385829484513155322 GT 1 -424856612200584698113749.1269892397004941435198474883151875 0.3569562215226445857052236004860169 0.0357511344207545236170901865970104 1.0364058583744032861664533048771724 GT 1 -119.6428211480658782597615219654850183 0.7244100834048686728359611479411404 0.0401835515836778620871103949949966 1.0410132123675535643121154148801141 GT 1 -2700895.4891100227819531115791858729769683 0.0713292997534126369395518663636667 0.0434311159236234608211263743742208 1.0444024758874123550333326303180115 GT 1 -26687176527088864140825014692314611173.3890436193295036376783157669432850 0.2823871760504895559054595856648130 0.0659570316560118859185651183588471 1.0682328371605250599994801256941736 GT 1 -3992748196907629357442279462355975956.6203235398366044209655646009828599 1.5276710417011586679066168952970777 0.0540365683536792619602282932199913 1.0555513664424007621219604354275284 GT 1 -24996155304898364199793651083.5368050127656572717063423944323386 0.4701846021364900509896597931211315 0.0347185914878867247847077133260975 1.0353356051160926591421117418757618 GT 1 -3789659149988828464.4474729906205098004462841282782589 1.5822563515041174439024933351348743 0.0236656373684516707280436825302637 1.0239501665742997848780202962986895 GT 1 -22017747856.3336044965518373555610191810363554 0.3873508814944341691033382938384262 0.0548774625851739040792482264360159 1.0564406906726829866898500242278923 GT 1 -34575955705.1565364529396980053899311672235202 0.0778132843121694720470596680483395 0.0173892244623626168634192000957436 1.0175421929555541311107926928425118 GT 1 -22276704387803487113.5894744828153120282495225734345494 4.3876991504423630241403396429590140 0.0105376085493285243732236050105455 1.0105935222912625036269854104732977 GT 1 -48750023787244461996984889379800333638499.2094483519991231435487109625586463 0.8064776091177269656281593741142651 0.0120732376069525320556207495134941 1.0121467111143639549135754769331371 GT 1 -4717334981321274634039061372772135675067.7535439018438829217798472781889846 0.4873682010493220300882307675731128 0.0656575812052695454429700754313432 1.0679122925283868898978794877820063 GT 1 -3895960464886220.1728402348926684408226388646074264 0.3136436601253623479432985198105190 0.0431928420214724029979452545656735 1.0441534146489044591734459966124532 GT 1 -4.4405207415756641943068397905604795 1.2060346738417787485755324784395788 0.0554256941160546173110966919522692 1.0570209229445480922462726690208671 GT 1 -877558836776323.7574049001071670791632914142185181 0.1075058751842633337765360112638528 0.0761014650479408798670862326722892 1.0791530240280292828824351901556933 GT 1 -599372900793491717590834738673553307239.1975656478557272770314940770922144 0.2341599385672386909546584031743012 0.0065888271431329465424377359173464 1.0066106292844894213610045371148113 GT 1 -616931973788571136371681479899040.5347475233461243705720881701728740 1.0430067542614296178132664602540253 0.0223083737620183271347383778462746 1.0225609692632681216137082128323702 GT 1 -4527171005223.8187565945661207914680665296289317 0.7836279937566622996796067631631509 0.0383444767929151857846575694695500 1.0390989764281289103173955213022753 GT 1 -7761299625994.6584622147057108264753636755667777 0.1819125485240507529235764888275862 0.0419632319839500496011319018316594 1.0428691217727689554812021168178732 GT 1 -33721773077604510088465889.6144023856252062223661158519660603 1.2533301266883608963780465740255975 0.0292030835004098712763132230381477 1.0296379813815519445102201669790451 GT 1 -18552494051762684302178453835451144.9123272405594865650307508727631791 0.0614560581849787846055476807135215 0.0852202476281800211358476577820444 1.0890719504717463148084333251525524 GT 1 -5263362085631953933221700006175.9716432959446829389331937141762032 0.4134793774632317872906929840342881 0.0425682963823019851283884435781817 1.0435008882857001276299630994185194 GT 1 -123489284906152447287217526034295193485.2725218407886049011967337454258094 3.9815518429435789449746067772610072 0.0096499652963646160432314966082780 1.0096968279370759245115549874483769 GT 1 -86864374927149395568201709184456123523.2980140335775850960360385980114668 1.7036928843469248220807154543601881 0.0467234703994689494296097768237208 1.0478502499466727716993173031775986 GT 1 -29197303120117499100531.0653163430257399839329249873398766 1.7419009177322349121490064814969049 0.0576272717810281436035547944246370 1.0593544051506466898976028842336263 GT 1 -635680365903.2517489168183105856473252303331421 0.0727192679638296707988724859595655 0.0438548843817486165796420627414300 1.0448455828706063969902892283960683 GT 1 -10548511453488392.4345486424758068583370005879623648 1.2033053100184501691416218159914839 0.0830897888385082875135253048744132 1.0867457273741680363843792804066460 GT 1 -12798797100638778007204204310108.9271247765285415586782441836582208 2.0625955856646828350877591168785424 0.0293592572705224631205280744448282 1.0297988660431912707246157787104385 GT 1 -164115510.0678663032597646978035991398391016 0.1432974130091890931717133370581197 0.0631978284219581128592756333881447 1.0652831486205712418113036666799114 GT 1 -19731.5531200561409295556300506670525841 1.3517562280305125334636027177316149 0.0398530730753541539100520031222961 1.0406689573512006501552108847372782 GT 1 -169115837315144116.4326527663175850597219628382966710 0.5181198343138653614662812850890668 0.0911644527797270129291791259736370 1.0955911173212735079216530537893497 GT 1 -589520609867.3081312857717485276805249500601767 0.9348225029968052074403678607335047 0.0516468769716163951287570382917319 1.0530283534393035642302820795711353 GT 1 -14586.1138477593738286278774245546130741 0.3607290808770581411330208671885725 0.0758564925727237463935415515749453 1.0788879083314874603821670142853367 GT 1 -108643672560567453120.0934576961799430241262821217460621 2.4239976931050908637127840642159947 0.0825389559350339803355023831472996 1.0898556529267241591824600413331743 GT 2 -1173.0030910173980999596355393467284098 1.5331387504974888753116593474357927 0.0901198258566059596714418078956769 1.0944423649068887807794280712491346 GT 1 -4559197501900685057965346522.1814611649836703376275465715126251 0.0537911559874608301440570212556702 0.0054407977550441689839425273127171 1.0054556528018546959244398254681801 GT 1 -42363.8745982365507166277571544496748073 2.3753490964209479739589890296981016 0.0393747897228254121720868918882019 1.0401709457930877284836888443891353 GT 1 -4832203043956080850069367685520058409.1267946792532342656548374869646930 0.2522014778801507284930555734018788 0.0334842331968980441484920487877469 1.0340576671682066415726241749867363 GT 1 -864812321344823619162672758402108222.4985881579660642668831906181349668 1.4873580723450973243631096826020781 0.0324303649637773887452014686731067 1.0329678824705723586035991683489607 GT 1 -155837164526598107730619193060.6879047048523922308898466129400688 0.4738489305741984725843912283300571 0.0606338213823816132671572854540845 1.0625499092121450299797600132342497 GT 1 -84407.0944761392976592504237500542432951 0.2207846089916835340395542831776562 0.0659256422234889411806157000862827 1.0681992317417571874983392163273410 GT 1 -12713808419720468575174.4676218209860476286997147104445507 0.0257496307620035062557290283705153 0.0569709768265427120146736194726486 1.0586582193318860998047953772118178 GT 1 -826151431842747774165780.0093231025764771528027729480941489 0.0130440562022135328757966138674957 0.0014386759245808243779789961547553 1.0014397118124459697988089589058989 GT 1 -213186.8902264910548822241370286086085317 0.0626361425562339467246986545630922 0.0335483247394047959300604461459199 1.0341239813141519171498879596516726 GT 1 -32021423616658359.0879299396089119201954122695539041 0.0382932311648338528069735059347011 0.0348714629920185526469831979095097 1.0354939875413450383475796713498183 GT 1 -467909584501.3663447124976382810007561300680614 0.6611937753332383813925252260283109 0.0870177333831075801922832552111171 1.0910388217774526461703439589146363 GT 1 -7456941092534447341509780847792353209.8032129420081832943180028747962647 5.5449392948001447888678601474354345 0.0764091998167647254086129824225849 1.0794861623751011192510323946854937 LT 1 -715226872215113035375616.7927119878554890031295450832594093 1.3372772019211451659557360862541318 0.0378830101453071230853006738843272 1.0386192246348936333789588334335187 GT 1 -453255728149587612962671338227083813.7605365787990355298515780781413537 2.0559468212359123861818443474995769 0.0960108698670401856013305690511476 1.1009379428514554428535898225230016 GT 1 -912178195213087525359413094.6298884081064488150738274223729200 0.8042745801564201725822806128862373 0.0884697576574531318818100266147070 1.0926305067604485449642388004634940 GT 1 -31483466511.5278965660438723417280560770468965 3.3443757351873750957807058442461059 0.0772229758294919574798574980207806 1.0803676509438326076689370164537353 LT 1 -10828917852804925.1838578316817725473022292068170309 4.7227746936245186197079730972542923 0.0458005842348044952274947771902426 1.0468825981774133283248088262338931 LT 1 -31.4030287964727320845792619008173031 2.7004954739959160300521146925907517 0.0374108477545935842080432372165736 1.0381285914001807588740043371904666 GT 1 -3994509557989534012269157025148399280.3659446607904641476901253087325158 1.1183764911037185990906866296365562 0.0989706701688542162577972488759737 1.1042174693718279800452050726508737 GT 1 -207645108745479797304989702.6118624758413087668816501620152346 0.0605278749464981659904148035972861 0.0165842343130238728309312349847838 1.0167232923176993228004480966186401 GT 1 -4.4039550183270089611292845080565520 0.0164436779491902756634423246790479 0.0326285099896934906075898007390375 1.0331726897632014338123751599677961 GT 1 -5717578051.3186015597424989604824926014638650 0.8913377393871798658935645496758062 0.0835199785345965451558065937851581 1.0872150106683926605132989039320503 GT 1 -7262196915438146099537469260535.7975321573783965999544095423130836 0.3053336934333340071069638909955421 0.0973579609126968267666709575869755 1.1024292171284154325334479687124790 GT 1 -6735094410179845589.9944014065732915598994656745010568 0.8866262246799088260924870613378367 0.0116893683112668352464217718903856 1.0117582261057682447243939161344095 GT 1 -15762438339531777539968604669032650181011.8266598795005939739078828776839749 0.0260923654325766636532659735867571 0.0896260677928868915472471472451282 1.0938998493601782293339525460312897 GT 1 -356368108428221179108.6460649981718312409226275754067438 1.7097428414226026617077141467186211 0.0788393381683064963830805335190336 1.0821208151262092067307147734343335 GT 1 -408799392051.4944840446965471329071012406027826 1.0575191990930197535958933648203768 0.0802462244249109190794118815089224 1.0836492800042228872379757650893721 GT 1 -440588643173143204.8356198747856743091117985248056921 0.0469352093666871457904481341462113 0.0229591672415068059367495571682190 1.0232268337917244390506546026293917 GT 1 -1178251761686483105169797.1923647109814466940411701074556014 1.2742653972949802834603611212505302 0.0515739528377795154717937273794672 1.0529514608468301011370210981560340 GT 1 -2755677688570.8938927491471214827462317489824736 3.5128572176413089140641720285021224 0.0288372878618068075445561502947548 1.0292612530113685440974350198221156 GT 1 -108026039881139953023578128332324433.5455220883086796892587463008318446 1.3642943096981691734522013210764861 0.0637287626620779849222109604947926 1.0658500610029822221700478676890061 GT 1 -966514.4585861747275753673736014932308929 0.2665029962968191214474045825661302 0.0962202627940030358267900554359382 1.1011696018114944165778860638246502 GT 1 -321331385588152952103941.0324288962053750127360328359728940 0.6258263852840961318498103256039319 0.0039996410361655305726011040432399 1.0040076609921474697738293363511880 GT 1 -1384203.2563425697759767605711969582924578 0.6484933351429230488044014294386094 0.0641502892843265443249850024522250 1.0663003808712687124352293345938809 GT 1 -296975176737490886815569.2827522082655746340189367466068803 1.1947920337062546730776617206324792 0.0210323520674701236576798665331625 1.0212566830318469601479775896199175 GT 1 -26.1262379042164195365252458833451851 0.9511250956123328681704215431571151 0.0282654529365437594922728724175548 1.0286726115491744042161485089527022 GT 1 -202798672527.6029604337475356529635391423380791 2.2194826357687940063956075516232816 0.0666500861866097492669274616295140 1.0689751068446826603867510056652586 GT 1 -315597673594279127152000972216771667394924.0078573241077726379614540772981107 0.5805752379036239518953126427106306 0.0564274705159908083321523369932715 1.0580820443310521234577288962576115 GT 1 -19096.4969197865172512464709435946407344 0.6062063034499751822900402690679699 0.0490926429492167652227107652232698 1.0503386375324132515142349064744376 GT 1 -1279.2151708984760777931720179801107289 0.6458782904187854548641345595884770 0.0018931482063694457774071628389850 1.0018949424763386896367300130685549 GT 1 -213534843312655401618506.1984074372429824262772550201925922 1.9403546375142756822592822191541634 0.0853978201441218610501839794277999 1.0892660843629489021937103410251753 GT 1 -515310493478535903369.0402448585747600087933382958038092 3.5081939497885407688314616063676760 0.0527061611334481805235927189546745 1.0541459500101636502967619720886792 LT 1 -213653112225563279563438378159097538.2172674124844671263962102787766662 0.9583671831486998707184922725217801 0.0436905750267288988734638495901383 1.0446737520093372158247020241874944 GT 1 -4038985961134999024526125779201.0055269355968436583554716339190225 0.9117636177825678546659561779907193 0.0294796790937660823478551589699968 1.0299229379975014956954944427432546 GT 1 -4023691087984878609089.3205113954802811351594520673310604 2.0222077618608229404113864824886781 0.0849261203217094090822115743439457 1.0887504741483376719106069191812490 GT 1 -86405471841434.9746875729105653531824005394347491 0.8938475333439292390282116417212209 0.0280206875120319877931112215657345 1.0284207581967863620207730737289455 GT 1 -82780461795140310095398390.6421255365758414311862984635373638 0.1334651974247698705672362706790444 0.0593734853822527535082544734369226 1.0612091208213453421430246829112784 GT 1 -357111850269.8370986645205342587264324621593047 0.1416798379031191187177027834585593 0.0798206977912203512270604790578769 1.0831867342231667256484183918925602 GT 1 -2543379947812388469166288427498612211.5426419446017092932943945907909522 0.7470507377046259619934091703548355 0.0106228095097327530005831951694274 1.0106796343351436035165669055517107 GT 1 -475413524888174254.3126381356423728649412994488925080 0.8300576263428451826671675920848700 0.0869999904662725324250674030616995 1.0910193879449698793704530324153074 GT 1 -1673.2463731168731629511088853300950332 0.9329241974819522130615950472955912 0.0929479462510557843497732542317404 1.0975554393903854561933128265605697 GT 1 -3117958303730505915261082359186351111.7011948293039162912459400350428441 0.3105919083228852554034837490563962 0.0947204556621060295885535522469667 1.0995114942073721932583978059390398 GT 1 -3921613181957985869433759251.7464080992639336213768898962422337 1.4571865183530934102089148980938982 0.0679587569278023851847608574469539 1.0703782130522586217621933790643896 GT 1 -2171.3358037416453780804471990552642783 1.0724101330391639901428491769218431 0.0343172348140061738724950492954025 1.0349198991334261782758241854759259 GT 1 -138759.2871249212501425503898183774019502 0.7663183853893939226167846619446994 0.0674086223859495158635081898741395 1.0697881401856659207495345739498461 GT 1 -5026217273877293742294449532023031761541.1107181023417016279931888098268192 2.5550505520305838724427237393968519 0.0236158014220254509443544545897948 1.0238991239433472003167524565478758 GT 1 -361.6508877864861025081969042165463315 0.5225533782831885734295583308146244 0.0291484026906813274774684802733580 1.0295816572741204373409618668824366 GT 1 -1088272828749612514684575579242797573.4224547381100195188845622036381827 2.4634047117042251398213426271129813 0.0075558692741770145021576321719772 1.0075845594653432497275033255307912 GT 1 -40255649227236170337393402412950315129.0963964643793474523817608137657436 7.6203882530689941830828352167178279 0.0192767248036549554283726069562505 1.0194649436174594397494210294900252 LT 1 -325092607406295437397448083369.5923099303342720276582941159834243 0.1739896692860863519037791049624026 0.0495044217733644096605373140438965 1.0507717691143050638650983441175206 GT 1 -93052391.6030308095522099444963750080052086 0.1427765789345622168768447987423962 0.0201263198829859462183203782073764 1.0203316134653415096770654595737277 GT 1 -365805116031967946125960102506328126197530.8380543208280362812449183162380907 1.0232068050502564446750037848575212 0.0358629015376718567369159018556919 1.0365217761617410850717933814744027 GT 1 -4705386241100481672711482193813748.7679887869302942930245999227290066 2.3171782511349861298256789711206318 0.0607878386035865300839794266278676 1.0627138813162297102125605178547737 GT 1 -231.9297744755988319860576636114777574 2.1025607632018117432653627442615609 0.0315369462294625172245719367377616 1.0320449447506680542833324918086277 GT 1 -53630637.2799079692563179346155771666830109 0.1493496426624591654235179396486455 0.0888116772123503570168992846053599 1.0930056821335960942052614697466185 GT 1 -37974467948436446001142412559.8360336954004716824546114263924855 2.6957792686075042221895586882354756 0.0278484957726412867065070444930120 1.0282436181212724250286695836831988 GT 1 -1660285275686931544036072260351984981.7659250730856798330730800166489014 2.6600213899641983834619449749123637 0.0819180394787078505340307421791949 1.0891210524437537599487427321315540 LT 2 -387.2269956330433098025532959384159182 0.0504620914102555016950435633968469 0.0755110915674194906461040230129146 1.0785142255956874604929811197504386 GT 1 -347501517072629402675076482152307843.1141155386665459092087009331319697 0.5633076636946999393796969823967015 0.0718485797940363293642867500455891 1.0745603911810479149142199687001007 GT 1 -4612240999905970117839170540459.2453601581370352460626684156099631 1.1495665676188149618731803980593696 0.0744620848452598011852643259965460 1.0773801805956812175109602823919672 GT 1 -219025215158697941.1311791055845891081731892664921021 2.0174506638284529528296943258154342 0.0876255891774390299684881033734990 1.0917048349729155653231675839462066 GT 1 -150088389014417875629649333955.6628547436994568656660338297101808 0.6223210444458010887983072729519711 0.0343986121995287736074228616419291 1.0350041719582665023100220706230783 GT 1 -4712955765477576571574.3894524123526916494194693392670700 0.5478844562393941299160775590882152 0.0072430627712950137304987866609291 1.0072694211042772891887473033463424 GT 1 -29314762530999206810446419479742075.0248241141909163288551481493389314 2.4127784924131758845992253203006429 0.0639485154966388268335970668880834 1.0660847992059708618489374509382901 GT 1 -5719606979709328480005.1974935347098744561643553873617352 1.6378874711721645794540790713170419 0.0225603061187824370641932559457359 1.0228186832649476840138034754741030 GT 1 -115764388262001998497431618330.6443601180778152337482035978549524 1.2615591726720554945553167464531019 0.0995683863462381835628338741439615 1.1048810598887131286127768093460916 GT 1 -11074.8578941850456554991604544379924161 1.1070177261766529528804259969435402 0.0545013853121259621013878702449655 1.0560428560482370481773291419333467 GT 1 -1287235795088439246590607470.7958763034467905491899651694948448 1.8072713874203172153420633444982057 0.0246457116515549954360574795615176 1.0249545013230760887613215666956223 GT 1 -14.3499010425323550854230967581839950 0.2534038643855488731469325157031506 0.0372745378647451245290422512834189 1.0379869938773051974764310520253776 GT 1 -9755470739715474253135216287945662717156.3432480461251298301827908858874171 0.4349161013924025874016557517471226 0.0367597558200196009762955619911475 1.0374524235520948738632865485221587 GT 1 -143354.0641034707295458143509610070720287 1.9546424176245684704158300314704555 0.0565705081512913735093813195320536 1.0582336473860117591216026705372960 GT 1 -30963732906396.7680911035299909963972993879708455 0.6967315935989037269345619039702072 0.0781260220851100012620554821456408 1.0813467481570592217085733140222670 GT 1 -20469800875971980348308.0316720561682861971933556577961800 0.1574951569930805146064640233077152 0.0332812112464799531940805386065411 1.0338476337290868037478241958943358 GT 1 -121833950359058675459440659211781.5392560737680894207613724325893537 0.5660551193427348778133196158709339 0.0338983805533894329370992596146133 1.0344862541878386054641285462701547 GT 1 -33398983799936514490758283401263.1091442632447198619744557992564445 1.3255954738646759902822675574457631 0.0530564614189916945686519762103024 1.0545158089240541898659324380408465 GT 1 -136901391241924791175608.6071771574623172665673909406747007 1.7711886835982496739297307899931828 0.0077599700831360169597046441742521 1.0077902353242289363394980837588222 GT 1 -25.0661696386009583277795468873989632 1.3045991350813225700715652600707379 0.0665188524268867987282174591213096 1.0688345116267718788517851744045075 GT 1 -3530833307.3038603273873638173308483974830300 0.4406305063824517603126583132327247 0.0036603788144465937162375073290632 1.0036670943936971124100445077843357 GT 1 -994326.2373023986194849710751155668451691 0.5328414645961315875029772518456039 0.0030323170295812038894689293418194 1.0030369238180510011319743907564593 GT 1 -6704448035662825770652551106.8271563844570061971167053459756306 1.2588803313470297545322422814003370 0.0751473284075700039373012991624143 1.0781208281092848162120300866882982 GT 1 -1151144568598415.3612558709850867993962835016074813 0.4041140358809544796974149265813441 0.0237229371312786470045496571943759 1.0240088569640978917696185730111601 GT 1 -626691.0868422610964930046218850224435831 0.2596583051197133590414267793471128 0.0504870632643918041293152276846781 1.0518061240352426541856999478641473 GT 1 -158.0283864932822123033729176660428909 0.1169043346695004266655246284107974 0.0338494292474670132483491070348740 1.0344355865719019435214199776074368 GT 1 -9.0197289566751952555851722106432054 2.2886354184429318329372721172640576 0.0987205615000617267344016045536958 1.1093416810344674819879989543834309 GT 2 -5536634576275916.7980984291263145485068825717489408 2.0985458682123398360142384251070772 0.0410843040977059847672328641995935 1.0419521163024942327462896818010958 GT 1 -21683958008914841353998601860299.9065037085914061696777254355892998 1.2461145187315458770991704572113048 0.0595231513372199868616237456305934 1.0613682465325683902732121001219625 GT 1 -1755085046569535895060110308213960522019.1285202597612049287137837998814739 0.3172872824707712630647215220341704 0.0669757124574623544227822403134802 1.0693240468095836252788647019029270 GT 1 -77975503949.3662625477252082251501771894613134 0.9258624698664051529522825342329763 0.0491281209888364553614168084201333 1.0503759478983601117630135247434451 GT 1 -802389193172831691914.3522966900763433287336557168610206 0.3128280911470291264073693856145880 0.0702614398818657817264652555222137 1.0728518505084940355817066229874557 GT 1 -59758.2838876025869216969754170552989950 2.1581711950287296191037496970379504 0.0901122447818476598295652832191952 1.0944340329930924941626485132247045 GT 1 -3213154128591591931479.8719599800526089497142863961422470 0.5004193629957915498236190261883836 0.0755778212835509738517537425742669 1.0785864083162349935228370036082690 GT 1 -279721325685.8545036604146091159503198963065777 0.2993300948179678460620844561081004 0.0547805228163501177308643868332282 1.0563381274664905298859547582685233 GT 1 -4272312198323621611479137752314.9440805263847037836006403742409336 0.6908390488002245770437817865685040 0.0994471867170017511607525501624042 1.1047464672430392957228190922576604 GT 1 -605471567817853714829.6876490326778419071117123848763443 0.8588767534519408253691038291333536 0.0804523646682037482430044506028560 1.0838734305898023220689057179095528 GT 1 -110.1218118736362863855700715183634746 1.9472432797219916584816743723203005 0.0314562321094794704823207288736432 1.0319616057359292758183430225797134 GT 1 -2748483089549868.6541948096849562713322781407098500 1.4448645710765136704567513380693395 0.0929851827655456442626934022735415 1.0975964924685169187597899873556234 GT 1 -340071598727270003747815767.5202035333512881985991486847295449 2.7256986509516876921644679996143197 0.0923324860687243969564006774229092 1.0968771415234425304669134654148388 LT 1 -314391077855387464.9560202350893677721908112062838186 1.3769752848252765291943219464051463 0.0407601120514234336814587837183778 1.0416140915331806038918618958209046 GT 1 -3969413995636207356.6072375885546133371183148835586692 2.3252726520349452697619711306552387 0.0827240137391629347483785034541113 1.0863468855284402744631067244308631 GT 1 -1787821531627546036579202661.2229120583725843997268080717589441 1.2769760631507545753945608414709900 0.0126764604193662100998814707005928 1.0127574922701129811831880790785304 GT 1 -246038128663306296017197925253.4090572553000478226199114855243128 0.9543360623117016049950905426604237 0.0271752543155828590456103170321313 1.0275513305069869266580524934194349 GT 1 -59365057814710.5389892623557574714099073201772244 0.3358820712534236988899587485344815 0.0595189567484793725338473303312099 1.0613637864765951517260825793381048 GT 1 -215473393978404.3953203220310266726674397442038829 0.3867970721753995678909035432107166 0.0956444048707130420279925019962079 1.1005326384908162967864033223419667 GT 1 -18789838398111649.5352575475838629279245656503696908 1.5906594707485208516656354844225684 0.0426221123878639192462187975840273 1.0435570985802616241505800049005879 GT 1 -111898803861152473090169175566.9403338562101546516188080612570750 0.2161675584039720637747050452229141 0.0885620160855042359535632936235264 1.0927317245730258898078300788541515 GT 1 -334343365930671448823248375060875.4183815131412288829996670308240486 1.0346622524361572018562460136559631 0.0648434973712323453094511938614833 1.0670413812096755665726757283933336 GT 1 -11251188359120570952959.1958158059998095300499381284894699 0.8005328194159810152439710655131705 0.0325116060982264218699560045365698 1.0330518501173114624448162136880602 GT 1 -365743118604151855036921060493250261976.4811931889107764048359297869860002 0.0701740434652869643437358030825716 0.0077827834083242386339920699165657 1.0078132273289489820829576936084544 GT 1 -51663413152971834861.2156526894849777493650297979913730 3.7316026440489491791297297927189136 0.0288504170176898575413121295945505 1.0292747721101419320424005496507718 LT 1 -4283495524840422676430095749448687045404.6944202075384445385281358192477876 0.1734462580030706108761205176230289 0.0622314536941478441821382602028973 1.0642521127634565355585726444970708 GT 1 -2583388891691294387715060268.3417490274196810324870730273420754 0.7790595824995627694453814663157738 0.0634458564995564541885151261852268 1.0655479440330095752108098640015385 GT 1 -9497430828441398129996570230067033434.5365446587573883444869235149838835 0.1127291641595444277789265127922578 0.0275907010977785820673565646903799 1.0279784737493833182085682709848953 GT 1 -46225574175089764644.8771275789179884774773216908194539 2.8655615779141909051641520778269869 0.0488102909831492527427020303256915 1.0500417526118922045099492157694790 GT 1 -22837531969.4003707081920002644062291597391968 3.9680961092184980284896721868365201 0.0581746605710838365456070838609214 1.0599354362161744843164849281116000 LT 1 -62495020843820715748562507916174176226463.3760761774509426823379398370403697 1.6841949785501022980916172529064235 0.0890206028029286083448935654199768 1.0932349975683965113996914419439863 GT 1 -880726065270844169.8743201359545134419395211614616744 0.2057395214972402778734290754992033 0.0416193413711751557016805158072730 1.0425102327210574146931261077847802 GT 1 -320285065475611250.4658517937199860517684361827658351 2.5018045684328285748221593269017680 0.0726473976759582635416500337084698 1.0754214164567398579124044215757881 GT 1 -626961921977790433798998128907684879.4805946276543472848479865014054501 2.8908072471982277688307139409034058 0.0791583063548736771510853884798617 1.0824671427938226128832763862469156 LT 1 -679023163370957932911838441124169232682907.2106336455480172103050943577213617 0.2029667062343157892047806519209149 0.0470969657297861894834363918055104 1.0482421283847550430910721182181943 GT 1 -55786781165884.9657566735528146691763624329596920 1.0453826183988434347552791188735309 0.0641052201197047775236248396381044 1.0662522234813504690819881943288790 GT 1 -1835881386594495565888716337041411255.4867562892468663867681153897189749 0.6657720036319364134872824659052309 0.0511823979560382917778318660756021 1.0525386990094517242159824942314266 GT 1 -7407418997510.8650702358985506012097364539262844 0.0344485429391404146617217110968676 0.0016461213955284454295850785618678 1.0016474777420312158533760043104984 GT 1 -42280852022496276816627391374241673.2193966317242278680069032751885341 0.3485706930258489210813130805830672 0.0466869132559804630638005581574040 1.0478119017429696000051749828945235 GT 1 -1498098578769370893560989.1323713363733400107884210051264691 0.3810808374452744187936892726310181 0.0028670079203152860500770777532843 1.0028711256598005942915394671538334 GT 1 -15452495975796424771710569927969955871514203.2253030386700316108335038771184783 0.7668844077022428745427647334713239 0.0654689336247236433847143429224484 1.0677104087918112514278068059097291 GT 1 -3.5104884434691083795836214058838669 0.8074697232371771190338798074094174 0.0753869986748806022698544494137579 1.0783800059595815818040352482861687 GT 1 -2765737657466.1270220646932777461958512274933310 0.2492690781851523663859768114487911 0.0729080045253343359662165539131575 1.0757024783459987685143761008215249 GT 1 -207402840123573900234739.9560807243652748533303622122274281 0.2673209010492045922291816141532459 0.0927276328022098918520976652869408 1.0973125793512599403012274620289759 GT 1 -15525159607513109260114276.8444002150970374524733498779549115 0.1018249330871673494194934254054801 0.0967195225439241745722901305589333 1.1017221675296408963502446630519638 GT 1 -2899572773481003040724674.0301836087877546884507594508201881 0.7178276111044473658921716579599793 0.0005177058388924385349018200054145 1.0005178398948299412248439210752328 GT 1 -10.4499017169623864584895759746429057 0.8329437001339567223281941382498973 0.0066518776256512466256201427349445 1.0066740999653019443363211048478233 GT 1 -1639344371087413121444940210654156163231.8509867397240684913368187563205996 0.5765922855596391049839541247375956 0.0249185575922727001491500052807050 1.0252342807981903091607334128179589 GT 1 -165220162828539202989321167.0858120102454864180511119713174811 1.2416671244484959899148738099895372 0.0358218402023042550449796778708571 1.0364791883792735452998746766706372 GT 1 -14048944015319050.4373191464575645690328878522718532 0.3129491334890916558863602560838129 0.0370091583873388875801236483325881 1.0377113774964606332072365943785345 GT 1 -17316390053707496088763105553287.1975103336422208477225305746495747 0.0261230022561904202870776563810187 0.0724301015184425712598335486417458 1.0751871250958713441337566372046169 GT 1 -20965544219288173.3355507143192316938644341809522693 0.5906876394415443730845127121336131 0.0600392756984316942153706814529171 1.0619171872489130956721226501736767 GT 1 -142475171121.5390230105151726741399224015565750 1.1516462788013749639738900851369202 0.0832870811436752769689174925412059 1.0869609213283656262301683543863117 GT 1 -1810731755.9318155965582287815858005474026162 0.6472036555409901305249790075884571 0.0840775255440787975333508824495404 1.0878235527631882499583052826155075 GT 1 -1024725141522416256014.6836139124324205602369001540519535 2.3899556824044106439590965188655916 0.0951239659482940818113977607785151 1.1049530568850196578405597227477590 LT 2 -73.4356967068828031085096200408084654 0.2029984591936704999682513554126202 0.0681551469738558960173081309286030 1.0705889448638123266720010877913261 GT 1 -387970851462296154064.0639087617812982684731750038861085 0.8524508113390771522893778567770625 0.0982990922210698412398541180283014 1.1034724017351501576474754936523387 GT 1 -12.3663522691787316234733087523062317 1.4256247966414600990651178871747946 0.0116548192142366920555438440702766 1.0117232689859544408164648302651756 GT 1 -63782928133510669810520980.1551504483488086916058051765105863 0.7721925922098220026791418611884177 0.0388582910565489011641919074649653 1.0396334210042625583093618253662443 GT 1 -1056757272694609734328315241844386145819669.6070091275400687469512535632460626 0.1995613224599691286379306081388488 0.0018154580295854992887653957429671 1.0018171079707491202223361769964636 GT 1 -165501948939752246672.0523852926914826110601959771205911 1.1677562937060929386666189799105755 0.0806176497677929758510635481637545 1.0840531928443001473695930286708142 GT 1 -2764451437534037910596610669774328253115285.5854674123718342230289910295857080 0.0379835263996024454893744159379737 0.0578684303111443936721632229900088 1.0596103435761524288535277831529909 GT 1 -16151735.1338044349443179323762312811073792 0.2884776302596109247743735711839659 0.0709103046269457717725303449500309 1.0735499943736070773346247179763767 GT 1 -14450445905031936.9233857084263977386521279341243211 1.1194100488121057790067831114358013 0.0760213827652952245077255888168021 1.0790663491291042956996834347205884 GT 1 -1107035454591926511964604.2292288476851483680535335721681952 0.4684438909809325129345295356919570 0.0645492370913481415117589496828602 1.0667267664984717373891365746942474 GT 1 -497616206760216.2988262228528786366651199292296268 0.3410499742974432169847876872954342 0.0718396121700137214463725265703437 1.0745507294162691132611364207395998 GT 1 -13144578118.8304775646348286943897409861559108 1.3333428926656550306254193670433687 0.0552852605170869066940668750877297 1.0568722600392390942908064312018615 GT 1 -19646447790115389565274522057822050792198.6630785526951329349580719801457501 0.0721597614313229186586368333511659 0.0252850639279485112322602525093893 1.0256102239931183848882081652913531 GT 1 -60216909041098476066.8595937101383588791157685300070231 0.3051345709114964419894215826094395 0.0355765901754989928357234702051688 1.0362248589916071510024187738243101 GT 1 -95739914042725138.0871643426707094914280640118399973 0.2213053201084183546219152793161000 0.0074487049675208773249339040625204 1.0074765851039219252018135970056888 GT 1 -1418888122826101078317710219219671.6699283912704813495220288157625234 1.9939356215754324136163804840767292 0.0578751509874242603344059266785968 1.0596174770811395333525593429007356 GT 1 -7516108698938966.7752797468912097157473229971882200 2.2765778107130796765642153044393332 0.0717727544052324169077682898198518 1.0744786994548468119376075718459191 GT 1 -337229018314.7755391550111749341952360259601790 0.1398789821379987748684864266763554 0.0344447435156272220058752147165139 1.0350519477989718601787665842021774 GT 1 -16244960699.2048438149053569682067000454521186 0.8097125710712357316206771455479689 0.0930032568120885106833074410876152 1.0976164196254742385169125076103324 GT 1 -23267188510363210012786223554184639540456561.0608619216835589667864979730919897 0.9086141389052768015576049252465740 0.0395094008608612559904881043568171 1.0403110842871819938131790202941658 GT 1 -15684.0157037358630985847556820866729550 2.1290017280710003829462712234185753 0.0561667807083861014669442637958446 1.0578058029246332082791115387395396 GT 1 -19340986346.4272621772412578109237243829377577 2.0535258963993100395168054646269132 0.0527997491890643978369059702728266 1.0542447500604802802484860057573197 GT 1 -591264994310.7893929352727249212260879682251276 0.1236017922992093991336935031561000 0.0216542140035684310968424272833218 1.0218921070229588991946023805134271 GT 1 -1060.4975297439660981518155614054464541 2.2000734233733462617055987441903306 0.0840565461812266794307887136139131 1.0878006478523765790458003563161199 GT 1 -162262359792894878709407820665.1895157312888205063769781440235860 0.1035899870105479876099813277744058 0.0204081689489130239589962380994421 1.0206192930047510766030317229034034 GT 1 -3.7922671493453771939534267193034292 0.4561309642074665359114965045711918 0.0591234052920589484450810749917232 1.0609432907087859173646097975323454 GT 1 -34002342312151841.1459606393968140838598374691555779 1.1972964736252199128655536208820948 0.0063804472930081093732491207123715 1.0064008893461906759145239239969926 GT 1 -66644880648901004984681.9363665143528162054283012370472215 1.0809454498113574156002848906650964 0.0044567953419864455400517989035269 1.0044667564618132308678134697677212 GT 1 -42705312201364.5168648505457373052263333239661183 0.8377270997802453663224438964188807 0.0456606499844847467104776332341181 1.0467359579801278817341387886885518 GT 1 -74552689236244736842931.7629190165621001664588054681894236 0.1410198986939448350995844290676261 0.0889400765060240658755019582571776 1.0931466061752553021980942725365587 GT 1 -515618907118641196349148475231107337856346.8397328392834684958478475265403722 0.1547610703581227974539533164019044 0.0258933757408296543665179153057184 1.0262345108390976620377444685228115 GT 1 -518695672149589176287442.9490480567089589117472497397256481 1.0781728925316628055461102143484406 0.0401241560865175432638903946733318 1.0409513321407936940390923643639615 GT 1 -217713690.8175614586262477562243779180747943 1.4199924658171304277260809906459192 0.0627383864826693810177289290492419 1.0647928323867831936685831820648393 GT 1 -6271242062441783360575412688409922811873251.3329532667462801328754575226051051 0.2279977340852215222789029206678492 0.0117755556978535803995451727726546 1.0118454366872431661756218279400868 GT 1 -74749570094894922685763.1152773954013598808598350601715723 1.9640062910809522668547763787930703 0.0142272959172231941609669982933851 1.0143294741966883169082490449410090 GT 1 -969853421047912775.5056180727322927863086415566731687 0.3092282117041011945242029364184415 0.0801893659025980732143864568745489 1.0835874626282919457628810726127361 GT 1 -340775164760554671246581260416548148.7082544586168854096793133984758220 1.0880323431434756957329597198261907 0.0693093778600592506771838419339078 1.0718283639775420607343850610589860 GT 1 -1367048061146855408868086028.8509538427147396755833802246602580 0.3165103384391508572864165788325505 0.0828020567065676443589808618757581 1.0864319703761390959938640481423460 GT 1 -4559547288.5874177553808638586001767092997980 0.0311669249271869884046131495131824 0.0750201745216712883420174490718318 1.0779833520012584625569247699748341 GT 1 -280878.6840568572859998030653319354088050 0.8352659248657305364936462673179143 0.0043817815602213785654047880161258 1.0043914097009425313125711070295944 GT 1 -19053453843011806443232931389492174599893269.7036386901472409760369402563108192 0.0902603392129438617893502676565673 0.0941595325785412963954536000113505 1.0988920729676338630453770562325566 GT 1 -339522456367989627665076.0468470055937042540952415061737105 1.0810726700592789466002112949541286 0.0475611143489662444503196469726181 1.0487293360859119438869435088115016 GT 1 -149207588895147.8419647479914093720892498717144870 1.6069008564903715168220231043495322 0.0873282626815866116385708337942417 1.0913790059534294096322201152127154 GT 1 -24694600065396121212205.3756283110710169103402963312460864 0.2717734067282717771298635490067662 0.0580903435289941971267499739711197 1.0598459150867911356105404355806260 GT 1 -2123251698671264881051824992323.2518710492710360303714182607548643 1.0491627869291408192986980705433147 0.0977415956875039523209352351305355 1.1028543206647210790130720850076519 GT 1 -5.8942393332164302929847139139162249 0.1818783883248339444924385472305307 0.0995188832235274863969122616825449 1.1048260842956300159052607780541986 GT 1 -8731819698548743772198227452135.3643985177846015776495103569420430 0.9378470593886992628072944857218913 0.0300572090727520568555234339043264 1.0305181876495218561914304958971310 GT 1 -104223892536599352582680263440178.7830517212227228296469794623635629 0.8992438607329327959559003346393353 0.0215258122339175494817780174111882 1.0217608718847685631574884993301947 GT 1 -76136.2314870983111633907904373671941643 0.7613886040456717292488855163424170 0.0362490855677636540200190896283736 1.0369224052778247563153827229524556 GT 1 -51657266056219973771062.2398921223528458238262410558072599 0.4249519043144534219029421017356791 0.0002332786304251787828922842691855 1.0002333058441172161293227107636360 GT 1 -72688497624.9917470044199493052350639597833027 0.5168685408450556464646847471237134 0.0963769192349008060739176315107709 1.1013429515924424412311324181366666 GT 1 -1971998024321113.1908833479976976519139468121745940 1.1270465491860957628133199896818304 0.0121313694324344710760053881088800 1.0122055550874856918831446788602611 GT 1 -24837275436107009212606585966.4352083499770993573836658316011893 0.3007455373424304260026166173016842 0.0169023621440658756629012931611749 1.0170468373626952322350523188897061 GT 1 -1113850379518348870164503719485.6291267101883325878127956987797015 1.5197355648303027794086109737203638 0.0877869569656098038881732815893455 1.0918817163695845920817148545134637 GT 1 -1916168971371588227877336719153719300.6320406827509372410915373873575947 0.1282165619803569771613724368578612 0.0543295766708276464947562275966491 1.0558611603475173205955898295930507 GT 1 -190.0080749280255075199867075696017271 0.1512410249012393752544554019523649 0.0240253229758337414954064802228139 1.0243186385776001352257967224649453 GT 1 -23466765444195202383978.5741909673460787515629577588487545 0.1222969549514390836488637448777422 0.0441312546137381238578499456623284 1.0451346709777072981819039108960250 GT 1 -172672606282723203023123375371070.0601430802124498983277428208264058 0.0396475735315661386718800433347018 0.0161353567949283225333829237730165 1.0162669491102373871060404939302229 GT 1 -6875553592515348658172740704697885161.1535675778971043538933964773791900 0.8464581259163838558267504631664343 0.0684495351370072450003471042258724 1.0709049144949199807448726920154737 GT 1 -205787118.5900571481001324511598594834969155 1.4004819654840768571586832916663338 0.0377360594085415907012085925283681 1.0384664994288533734966075194004722 GT 1 -1146523338.8219754178491316121425567226522052 0.9467255032676878986880815189375218 0.0854869357663014195069880786472043 1.0893635255958488292242907062456683 GT 1 -30057825569515528413844852987220966311.1812272265540469030378059229272111 0.2795680197185078641272355537931814 0.0004277802706025827896552992861306 1.0004278717946849363630177194469739 GT 1 -649023566608317.2815168395112396490053241415084986 0.1766743090653412297811874524783430 0.0226551158297984581048538957292057 1.0229156859855081999443550180771086 GT 1 -13208966745856264.0443702471372542795720000903530478 0.5200474976053832484282702583126916 0.0441321239154957262391406182903021 1.0451355804144443876841401587608793 GT 1 -17353419936715511922307343567340106991732.4963953707568535289177182179829228 0.6932003034704020988045641578129137 0.0790765214057360855218890924261902 1.0823783313096832898758881840864782 GT 1 -2424347214544.7250938472879777636887468817416844 0.1093120621636460772517286721358889 0.0587685110280910474704404047360367 1.0605661664923273298114687177576876 GT 1 -7.5652273363025071254929861064408733 0.2623239224818874294573894123089425 0.0061628205551108816205529444185684 1.0061818891181641789430264206937355 GT 1 -336023936.9530411665077909091254438437545690 0.8989278546752484133080276908723906 0.0431893595986465716112894682234658 1.0441497750267931017839629917804114 GT 1 -4.7737777379808679201031056199481356 0.2256523618880365250364879766006414 0.0283454658101438842550954030707256 1.0287549551976153371631883724420754 GT 1 -18840958258316761710.2086854824211969099483129373530422 0.4458516174747325092977730140637218 0.0379407667147532291377025711558304 1.0386792571503866297224855061136808 GT 1 -329786179.0255039011658175518385175375143617 0.6692492623620210345327074621272247 0.0981487428188132300288582031980983 1.1033056758643648074418420117742087 GT 1 -493835.9344769005501683001472498294934128 0.2162923544787838257057103166250410 0.0723898953449684655741198239677009 1.0751437803278030993622852331765414 GT 1 -222265928555078685401708970.5830277712638589301998573718895396 2.0215745873708526231776688520387025 0.0257949683364921798235556078095300 1.0261334927046303039736888788655349 GT 1 -180139127718872251.0301932231187180252780968530938193 0.3199444792845423730730854450977476 0.0690455822959613874401729393037659 1.0715449634793616432223115444045858 GT 1 -26.7558434410578975296913606543080474 6.4357683580814710407009829791881647 0.0780083065940235938832235138097436 1.0812190647871942057094163912154689 LT 1 -2949189801971251673029860870956007180.9440046535282448935342624751048255 0.2096677535201878530796684574240853 0.0742029450500956897895499442207663 1.0771002314767577033858521163382561 GT 1 -692420772531035536332050398225871180661553.0684722579946654580645897988705099 0.4974322735867864687430665048326409 0.0734281457460744332887688539304075 1.0762636817534750085302807684880287 GT 1 -5119814979510190947020842235435.1255914966120709788047113048362003 1.2563368703969715437364771657147198 0.0196087551084646481514757376586797 1.0198035575072463003205842946239310 GT 1 -1257226142781751.3680605921623142048273553610391376 3.1628980467148984881564952134334895 0.0298633972232093452074982341030703 1.0303183897950459974651186578188057 GT 1 -34877777488083090324877268.9163566555985985329233064744120218 1.7498989102101465611765438551095181 0.0374463499769756533493154776269170 1.0381654740899679900311221393362798 GT 1 -5258656419002837764975944628.2697387304444479508044665762062248 0.7323378816987090408161676304232979 0.0995629056805997767643706162962994 1.1048749731977576373741540749971457 GT 1 -22561421072171306574225.3229151495013572915319324717364590 1.6338492607537903671780050886652631 0.0468341440035100745060397102798686 1.0479663547972589518961358561937788 GT 1 -96612314631280361508235053401.8555191386174124745484907476798247 1.8113651547424955068010995428305298 0.0454744759990898595161164664795625 1.0465408954709692556606517430389905 GT 1 -2.8925617736287867854322965519585894 1.7709620597120630405633971228083824 0.0335160813394297293426467385167437 1.0340906192093001480574442735415743 GT 1 -357186666701885190187.6809153032054300245018934183739755 0.4706061616636784590075179085978155 0.0416657161315444241361857844006911 1.0425586225565515712834262971781465 GT 1 -332198423342214.7647178139760295382876151307413503 0.0458844631601569395704642326429824 0.0854284116770276528610495596090758 1.0892995328339917613917064558206423 GT 1 -9.1374391254684957913579089326555853 2.9830050178534945579097025154814503 0.0035744123192043740284203506905436 1.0035808157945796052801752302139114 GT 1 -8932954145.9278534810244635923478753247422432 0.0631626896941156326456362197007374 0.0138890079015336819602127457952671 1.0139863626636263993926566387289776 GT 1 -977612832386212777.6824625361695265466251873157251745 1.8507316596482340101389228286730049 0.0573889289754519770713491311331998 1.0591015193625120535475137260195000 GT 1 -77725423924664408502740.7150275249041277308048541199798184 0.1474816791440458305003286556137864 0.0587652062571524154157163922982760 1.0605626553846182774628776477545137 GT 1 -15858795215892151594244706726.7012374231237073322338886895045053 0.0712588306496332970901549473198510 0.0476576826959322644324869072558373 1.0488307318230170122643593022265041 GT 1 -9969572813938440635427021135702614504490.6425944393894483044604181551982436 3.1100060368966428425157028034210394 0.0910215889824664568965002352422045 1.0954339353424386843779406097306310 LT 1 -837270927953096650757112001697475434946.1657140663790400485423113116365625 1.0985334037831049827999450674192677 0.0372115113334113727564171844137876 1.0379215292450390801130381544227066 GT 1 -114773074379209795995432050502072748260806.2564209446588243096243082323647931 0.8257843341007577948423463236835791 0.0622288511377286075288998182443333 1.0642493375021000916681446556617640 GT 1 -680.7133876976856954100624608057797969 0.7864146121533851421123974413971324 0.0977970228015615574647370042862559 1.1029157540815211951074022327674608 GT 1 -188160285.2052954374843131940511992531726145 2.8996805359939953419062105266448196 0.0961083111147804295536012719297085 1.1010457389481998264386677065580640 LT 1 -5738468384394651247922265559722225784.2221767547358336339135164993365017 3.3293900635514799228128419238568792 0.0020372950696203697447559818910913 1.0020393731781806422318974293658904 GT 1 -27867428302.7481161863592671477212371646220753 3.3913851909899165895711475039822123 0.0511267439629093628433389704411921 1.0524800445738170792085484326319458 LT 1 -644282531636584825812150138278.9059333903023186358956051936347274 0.5015811823448367932881026909054238 0.0349596584169111808683022096594922 1.0355853737676304673451490208441254 GT 1 -7666428708812491779288343626037627355179.7261395195390795873273313245662103 0.0657523746741633869595197646364209 0.0519400851045670870466044114982464 1.0533375773577470494791192467690413 GT 1 -3107096642091.4780084222662072228601164202920762 1.0945543177808471013064912528989436 0.0785408037080942745411313183279859 1.0817967825141561329321141180341251 GT 1 -4429793785537700982194.4517087833780638163144025187850809 0.6814627235471707132573677587868697 0.0452279465580935587028604065532835 1.0462826544871865807698156982705418 GT 1 -5860333587017839878411358543590202648872.0867528529766599399986594246280035 0.8180617158170828899051120382615587 0.0081372228060261973097016720345361 1.0081705107072225310696375163316323 GT 1 -123658064265389782730651488991.9077813053818628891940254023826724 0.6423550099372635745651268974903296 0.0756928856525042324945043703801501 1.0787108877297797831728125434401885 GT 1 -13063358328693903780331168283971741580468687.7493531865617035464049634900809962 2.3379337341632781373020309876362684 0.0222427060983429743192427392718638 1.0224938054902605925775686365880781 GT 1 -1082419608536555655771364146208322088108.4411058492752258524685687940318421 1.2875370819839775478660125531730373 0.0643100079685484635652791908395287 1.0664710624596691336079102521642844 GT 1 -54694353715754711029156819742771293.3865777328277823000664139459014018 0.1471530747973413433591688466163185 0.0415887062394127202849073756040883 1.0424782677164810389260426387088578 GT 1 -17298103.2668780812920177359298076685021936 1.3269448965002960324799523334709487 0.0870767590168536443521005221237816 1.0911034753244417323225352590863405 GT 1 -33139540914.6071015179467207651696651248032322 0.2115191382751780675954816567763504 0.0678450085929023948317963807959494 1.0702561783298004160074991825963729 GT 1 -352129577384213693506007082.5466278755932360806674273735678159 0.5012976912253481603239434184115654 0.0953409019430803397011198607378460 1.1001970934765900472305241013093672 GT 1 -150733025274330747.7897651599952928885549925395774755 0.5664341875203063741323926167454797 0.0517806190215871089413986952712225 1.0531693889651375118363624600715513 GT 1 -90388322733.8325347789649825338344792584080983 0.6173022531907318347358061567055618 0.0213616561826808597344143973186622 1.0215931185757763190569191915280185 GT 1 -1109293398211722296593301.3869433874976457082582922353878988 0.0190846916503054167688867477502591 0.0522255230347103293892022437784681 1.0536386985247915046833281500688500 GT 1 -386904690247182590067775019342822.7072024199783206082680652887304594 0.0144821552927092960530701803077924 0.0266548303098151772478190409442387 1.0270165118212584566849560751976826 GT 1 -120955863093020352480573095837.1578936726622489696187814790101616 0.6500192616818783713637450144368572 0.0421020102141808522239734138130111 1.0430139891592061928633649962336694 GT 1 -55064.7130497279566342457363311681827867 0.4774141267135473548207340001020019 0.0893046322903750200926072794751712 1.0935468309375792328130120083756289 GT 1 -8310365602054179616882710.6916252419022514090244787728015493 1.5256370765221028676196668360269875 0.0994656813649805577829673337934611 1.1047670044482102208095002296423059 GT 1 -253404855846772473106836.2505954530233185709918285403811730 2.5821646050289517893878286078533139 0.0017540107002527155980001332816408 1.0017555507781599111575796190775347 GT 1 -2300644056770361461.1856738182128822596863386798326205 0.0883469881828462090174180298810737 0.0412301462264684243586167269344707 1.0421042185374704163865210443100157 GT 1 -933.7317417060325465089309351658914128 2.4280673870362136843844995836050171 0.0360590079906640478230279492006802 1.0367251978536710674698058304795004 GT 1 -10008487946421403794.1822639062413997821981308940319380 0.3724690638786146540621017176050523 0.0984808649997609579698891112873807 1.1036740108288763586585839914102255 GT 1 -5280952.2333106997047607171574238542994573 0.7757374771844934288727244721561266 0.0282359657221068084763367429286312 1.0286422670820136796957509222889737 GT 1 -12948358851892449128828703703331.7899886668873011765958553067983265 0.6814711241924487381273035319206040 0.0026751364041708429366768883230117 1.0026787209758005167593085603995558 GT 1 -897377222145.9358831473935495117073759428999376 1.5152568524918487545627784948902243 0.0767712395731963323294192638202188 1.0798782307382385286658665337374007 GT 1 -59229601025331858280365330838.5620283677520700052457519885471195 1.1018958315118547759631421305826099 0.0251730661799533934131947589354617 1.0254953275142604824169668396686336 GT 1 -161664837417959793276149055075282573695039.0930125458834847687212151438182686 0.1709312493771062883897555644462719 0.0220099017209251067632820225104795 1.0222557334575960249218399273984237 GT 1 -744504007748172506.2714229847468494204547005147310604 2.1848135964647585331053006469225947 0.0884400489899458053892088231347576 1.0925979152105424780625391759088221 GT 1 -813026.9735241668576205326238839363074327 0.2259011778847051432941157021763669 0.0596619506990446333330824657393184 1.0615158414524373127789512102826753 GT 1 -1.7629932065840224483603516700150236 0.2234700548443990163396215518299652 0.0868752468987782902179018498386267 1.0908827668660154721703926386300252 GT 1 -10440047.3958064768004278472947096761491037 2.8924214462047122418657888101025429 0.0554524328192171825775550419529650 1.0587074839458870933998136326730338 LT 3 -1479017728524.1280706989344099856148210586739564 0.2633294181234551054045517259065097 0.0270736804461877919108286065617991 1.0274469246851919390520508520503240 GT 1 -524009529576021491432742761.7254597904796100758118362265542531 0.2643289097068755210700143515190892 0.0961924908722891084225204127178793 1.1011388736441293924465613660877374 GT 1 -29316005692.0321517165317694548419444973066957 0.1871197265657828577324600586684327 0.0932429482480705220042593862162230 1.0978807238965898230280271274417838 GT 1 -384.9536731237138929521249283236707686 0.0514310783399043735020801810495600 0.0493854410663754596830759795792111 1.0506465993991805961604906172680479 GT 1 -12878323798700390560848962344054.0915986024680786132430333020729657 1.1894804580241403249765751474315024 0.0768006331107641472465294598288815 1.0799100690070944350189876976420288 GT 1 -944709.3700806709170183589562984726126132 0.7861392616450290771462408069587303 0.0534694210169391553167648354017209 1.0549520014240354799681779042136769 GT 1 -11.9763518689606187267998459569109265 0.2519200503293056730473064091541900 0.0686132092567902769559681519280291 1.0710806306868761163011354551053005 GT 1 -141772305373741286509.1262039500178517317773335424693340 2.2306304925305427874925923843990006 0.0514502569283350165747632079378960 1.0528210470479227742262738434891607 GT 1 -324866250768598613.0743915237920287696620377592226504 0.4340303428238924664376167700125038 0.0403151281605713130626566230914149 1.0411503069094651070649477960243538 GT 1 -120107349028174374606371.2791578615867516002019709125123890 0.3544798589677735725212697319864937 0.0981959975011904063547923908146197 1.1033580746607915394918739473851297 GT 1 -2305943.0521412747139877098631446495536854 0.8217884262180428691297303304942711 0.0228098469026818409000437243220583 1.0230740162996303141588058016812752 GT 1 -33593440146118191461877.8608202429095644500148484919925724 0.1999446931766780141921761578811125 0.0543593231577772106735733795262293 1.0558926162903807884491829135557196 GT 1 -23153858039123811988925833.6612154244847432443249713636516076 1.7083069065398914060830548686663322 0.0392879652161365757343944322336907 1.0400805665460595164691898318970265 GT 1 -109661963164376137045952532197668805226.0383247906734730183771665663771342 0.3677824786128837869515234162643405 0.0612022322082258929659751260619519 1.0631551927330910213978814553676040 GT 1 -595557858963901353.6598587242921786053272235713899676 0.6307667502145008019755304905532962 0.0801164915175831503727705271281322 1.0835082381709581338510566724723816 GT 1 -1674779784863.8197961938427744483427175271547945 0.0554573079060813758483639388821139 0.0531653957820452918212640227099135 1.0546308534065221755468223309719696 GT 1 -366631644741695156585319817201318689277.2074442855733137443304304785115864 0.2085957406655253720478980983337965 0.0814523178679842447342936746517439 1.0849614626291926925044088668234641 GT 1 -2285351.1818253709252365533197657521553828 0.0739463163847195563750672382124941 0.0928229769424351942081797403669003 1.0974176736468904610483660319155395 GT 1 -3940436.8782814365195252912817255318462152 2.4363984066179777953594496085758242 0.0251970384994764036702227804963682 1.0255199191760746101539652004973390 GT 1 -10174435.7928286081994833727919578265662658 0.1243122617551052193718660552001505 0.0000035898010831373433455915880613 1.0000035898075264886718302783204065 GT 1 -1714181519014557670046.6869914099313004243889280565113126 0.0289112234880138540511452513593983 0.0025994879608792689297234976961441 1.0026028724963538048647200456671255 GT 1 -10681823985787393825700842597659208171.2579780214685824432134479150005009 0.6078816535975779067872320395221136 0.0184271690014886921769716527404926 1.0185990642503612784122296489920947 GT 1 -233410955188507955086867353.8902286557094423453769016113404454 0.4565803014917633724723040025135979 0.0279018016534880988802156027803835 1.0282984525191273925028945301059445 GT 1 -7421816126467659484291690019581816.7145520474249199121172598455196049 0.7495255824226051269677737672389027 0.0113022255985262186353836671461360 1.0113665811168076179274989886749799 GT 1 -9919318112245489084966343064620924536.0740826774260075782072968274056354 0.5165881198206723475124402025672591 0.0427426284254778313241573092611141 1.0436829878713888232191637193594495 GT 1 -486128099830.1514506876898981960109880927762654 0.0714922684204113854555383054909762 0.0582968265530854954568803887116057 1.0600651565589649876883686729208369 GT 1 -50373499916255300279723236851317302.2550898623137466235771784343777009 0.7652914628193684181409475725557361 0.0231074921449774050027370556633783 1.0233786556585941987283365761130424 GT 1 -5746918061157.6333531398017783762389210374227231 1.0402411106838539627632566074057803 0.0142155094761578811459438454342196 1.0143175177177206294863918860233281 GT 1 -14155261871136877447249304336365404.4674566551353147721005873835521174 1.8610219149354391078049621558061089 0.0670374718917554379303008037515883 1.0693902417406491972113179606044971 GT 1 -16488690.6193491841325511467218525282551703 0.4896663678772616251591547859869996 0.0444231874685128074320194492417541 1.0454401286517020397250602487702496 GT 1 -8832628813441032591.7693659588764156242031676279497735 1.1354674979542231226249633008311696 0.0789011264302695282229961741353298 1.0821878939072374581837392567747383 GT 1 -1900213743436161939448198130243323010.7711204900278696220861990528264579 1.9235720011314935337240163702213369 0.0307900405237428561889025114035888 1.0312740141162358206009546977874731 GT 1 -55848.4928872817582338721910803649054734 3.3086405443140725245855309854043668 0.0607653697287853455341740941684827 1.0626899584934998644077684405064078 LT 1 -16958.0627721636627626570049884644169831 0.1517916820151722123550763231905970 0.0598672528348864737853999513253441 1.0617341933003291834724371773119280 GT 1 -560.1144290176872795067412901665238180 0.3997102747102383884050082500812383 0.0943212174033029287368956827772621 1.0990705804002094220948685719507564 GT 1 -258910430111.0866798159011814622732161454049243 0.3236279877989953737878468131519751 0.0637064857730233355166864736130719 1.0658262680857684557880826413466191 GT 1 -2445678671918051091599.5331134976434128148261063129140195 4.7528543425052375586451068516204078 0.0048281204036752629639796023136258 1.0048398134290631609656420461655029 GT 1 -433.0787626000284170871245088257670422 0.8895171471976136668913657268074852 0.0523311024879571386279840324251392 1.0537501019618739929448714377877690 GT 1 -5067377431817.9546923975449934226620567483435794 0.1924028616676316901190054532681664 0.0383117398007651014988774501454938 1.0390649346801734125642051698270060 GT 1 -367106577.5563670428502396215808109276152481 0.2038440487028517825952558969928721 0.0241806402725733700592717549912280 1.0244777919453663082351044865684808 GT 1 -634852109133700.3439707562146615319170752840597936 0.8585350893955595032186544042688615 0.0798446139893424796577223355350366 1.0832127253630138088118757797458786 GT 1 -31.9481663095432896025660155325177262 2.9887716573045669771195442616216070 0.0495151834307681273800458733716521 1.0520725525151389202522730139488277 GT 2 -2060264878422281310.8058494930891035481277118640381065 0.7440363882630006670766408444766323 0.0849231063793134214802477868121888 1.0887471804935853287681976044892638 GT 1 -15632783315407367116657079533458964242921.0080976816476559523054627465003375 1.1762847101610427525594401875811298 0.0106528681086228109574394430073553 1.0107100161306796191460216258863849 GT 1 -166.5959040153207306847689663738511868 2.6371125010935111424605272932189644 0.0126739093865480691057883322736742 1.0127549084873708329716741220757502 GT 1 -12931134802277298.2337591661082387239202991102643004 3.3662134033971249900135645378048271 0.0995169294250259074529300873702678 1.1048239145706401447554990566105851 LT 1 -26600081295774242016806569.1366765138760564237315157510419912 3.0358137689921567406615742914323730 0.0040585215865319894047626615333272 1.0040667797367601470318113631664136 GT 1 -1273465748686664949125407942.9614593368520987997269654144450215 0.6010291592005363020992632499397210 0.0549977281964990625282309184007011 1.0565679474664152444142745054044771 GT 1 -303345963.9302137462178387087427403906041131 5.1730212773792118768685801631005610 0.0910280153117858823905695860027711 1.0954410052045588303921387113507653 LT 1 -2308366131684543382803.1608286779578529568428789859771822 0.2016636562489011314759614044545985 0.0391116194503823434042393012980852 1.0398970260296835589668288785920523 GT 1 -1886081745274397.3389395841590825286047359916509150 0.3795101537219175298545441219079172 0.0522178257178034537177414877597253 1.0536305770931246090592831792316068 GT 1 -2118928925754292730825814199303707773914.3343580183041334584357406032874466 1.3730444413978593962789011466394896 0.0296252804082129259950324768589593 1.0300729732252514867619191906102934 GT 1 -6575127.7805210205636705586025423937572728 5.8458249103115919170548984974346012 0.0864277059306896414855292268563332 1.0903927666465084383762614241547350 LT 1 -2118199051538.5505122207001696888987139189709404 0.2766996563684479351690831011975477 0.0596773198504078761899741798895237 1.0615321858691871379748690324287851 GT 1 -2773933275440753110711717850599748563787710.4564773449421432436418132305131231 0.4003472913367298873003111242219946 0.0052630902200068396238368670960595 1.0052769890680487219746735596503166 GT 1 -10164086713481766265.9958070757927367334495983611171926 0.0964845300320191835632230646070816 0.0841199201665694023722808571990888 1.0878698400908250662608319292164680 GT 1 -3028049665296743463347.4785513331386086964823267268154257 0.0283011210119179377425051193333653 0.0811695270639986312520826967333500 1.0846536427006292256390241359820040 GT 1 -27557537.4811330728123973951937206290563978 0.7297574046932490253212599472682766 0.0858597562897185448945889932764918 1.0897712797906577264130902474957892 GT 1 -123514496.7263437203007992851004496577643297 0.2526124927925093519847853515653931 0.0768428823219383934354747450280915 1.0799558339625997869559870635802111 GT 1 -76521859567547894809213803109.6502205013364978337606581099331811 2.4291961714236728388489427493753069 0.0123404000861294874560118758251248 1.0124171751000472548498866402944681 GT 1 -1507577002043.2885892424530552556844810725596971 0.2642387427862181199364228473348900 0.0642805126118171754568022799122436 1.0664395403827980924387214789975031 GT 1 -6051.1803915537791238792323173772578234 0.3012370716911814481110775999467215 0.0326995850146245774696397670110385 1.0332461647795900352027843095891985 GT 1 -18401873737138720.0650088970140541058299281744822889 0.8519706399807571654563152696481396 0.0041838689497748577749940339452939 1.0041926458188705118854743412068082 GT 1 -2.0508275546586674550226050776698897 0.3117864188620769820407872164766334 0.0670925163835303333917817173793321 1.0694492431624470462746395618727198 GT 1 -1551340.1697881924986860617339164333604809 5.1534233915751368220021752627790997 0.0815594523131930213871062998045767 1.0850781040355895191831282542422858 LT 1 -14430807555412399019336237981465583341049.3882944090998099866903727862125402 1.7518186054893521747643852032815194 0.0572570427899097294822138761327141 1.0589616133461540913974921311207569 GT 1 -3214537636725919722340266709.9345126571513231299265127752356342 2.7490971817627134064309141785353226 0.0997153651833810142451899684554215 1.1050443047504108933348574418601822 LT 1 -34206240751873624.5681216881113699440580950609046048 0.6188902367174960150021550546193769 0.0784782468684063861864880602421041 1.0817288959310295069327957922647852 GT 1 -9368758.1433713818448012520612440585193006 3.4207924224396265401521580538502099 0.0782524055275101981444317151304876 1.0814838516109253106861126024702636 LT 1 -4403480207451662918008660684746.3661359636800474055869852421548235 0.4457593300047748667440025302435436 0.0525581910248273173098979031936780 1.0539897592411872684693504822027727 GT 1 -920416442471123116827521388680296937271.6275837774499684162853083489516078 0.8373919509633843539451933065937557 0.0917188197291256965226158788584422 1.0962012784168275194120970219064660 GT 1 -41963524847843231542435636443.1121794506592322897388950705480447 0.2969042003721093015707935228515356 0.0918111200217900882417577241740378 1.0963029044163567091049722720220643 GT 1 -2367523082037624757143154.1064736142041500764841269585603852 3.4334020398772386063160426997616873 0.0541092775285103240202188465839839 1.0556282319605048953188737294806021 LT 1 -12349028439034324337459114240811967645.1385124589316514171069775253802081 2.1424212576453949742996609747399594 0.0943807550647605748292886642187382 1.0991363207262895141531075516434003 GT 1 -1416115243912526.7215565735422001191728694475694856 2.4299845009543152824558544309948786 0.0713042191887462339665845734138668 1.0739740633231747155331046268938984 GT 1 -6178.7111780938551413780234832833352204 0.3090425807491374584052439604091082 0.0231641630712562436333375999643005 1.0234366687661442197161309004861753 GT 1 -14559699802110522067.0097634872689706466456205446018771 1.4295750510087425795122777174266036 0.0592095152598213696489133668307451 1.0610348158980853843136847987067866 GT 1 -506309414593562700542633.7174698286541851654555772491288318 0.4791473666603960583777838333572749 0.0803821948596690881239010939726730 1.0837971244489575976949839103393683 GT 1 -12124264496240498012559.6709783646016278107460670082335747 0.3280354693662297287575517491117686 0.0054104582746189633634470612777287 1.0054251478127034062222109389351618 GT 1 -27562793.4638361822024406057309834801299759 0.2395812883646206015770313300314163 0.0329067848308836794504005623187260 1.0334603919294540232680339174086407 GT 1 -7569890750665817568134102590673435868415.2661694811573902108337188749912901 2.1028494882260261722914811799131978 0.0999764732113860340505565565509967 1.1053343751232553122228970631887072 GT 1 -689483958670.6785335791606668806015830441172485 0.1818087397390788003182182707445416 0.0893788124884410130626607250488128 1.0936282887137075589992457473259625 GT 1 -3851842989871992322226740537162308541.2511742803333929791306522943802421 0.1972759713094117151151032426407484 0.0411384805082951147713474685004046 1.0420086154726467067177716493296880 GT 1 -109817608667186749745569679112313451093.6707765750347463300610978853530302 1.9112835144184220761397684010861460 0.0395792965244631916965241820869934 1.0403838577291807403145467864058606 GT 1 -132097678728.6874073968743282644923926769840761 0.8243129381393397554144537953843768 0.0656308945284130573365872896003477 1.0678837309483765350707221332880992 GT 1 -1992950035637212535177396263944091.0896556769651237519001702434614365 4.1910570305255872308455848515453571 0.0560733442852151025377314257466039 1.0577068110724549921778675056356787 LT 1 -95997098466832057210812848.8826008800994416734345615997186939 0.2682677304331767703454461036870967 0.0827315329849620198964920968728946 1.0863550829267488304950358240260177 GT 1 -5695698704.4722777269649033031462936476129588 0.7760476573309425469203494202732087 0.0270069877232661189473879870663521 1.0273783784491205311979825352303380 GT 1 -425237622644857412112627887509221.0893153730884204544333839090938315 0.2963766862378607976210021555212836 0.0400326741879868335636206418118174 1.0408560307119660160549584086272944 GT 1 -1400111576466304052558305542397.0210907902074196333139920046843866 2.4960459360729159700972931800441488 0.0818758937042179923608171286108490 1.0890712247596372533294229763909298 GT 2 -150921766203966327923.6165323527607134376899922013549037 3.2819346092304937786326903196164520 0.0151185902802648501149353288535280 1.0152340412818744157337447707815088 GT 1 -790415420341620735562856830238.2299322398328593906736188581174270 1.2315153408262085341247153772576162 0.0750351626371343353862045913937211 1.0779995558540162589361302194625828 GT 1 -32901316019.5817332715972460243779773484935763 1.3038682511497503869657195048857165 0.0915312302813135630493272548547465 1.0959947673903872703446057815937270 GT 1 -145822823191642.5178365525003545971140263225237865 0.1379657153227374725291431725651756 0.0108169978250942963611387135829204 1.0108759268883900986636581452175497 GT 1 -5151686910844368962569653327259.3714336477268548266847661780613057 0.0494166934881029845420194971918453 0.0952614295195019377628551734143961 1.1001092494111185291497181924740538 GT 1 -28647603721041441.1176808980062273183725264493102600 1.1679878699979802921927540085601781 0.0061811412972167028551917433546135 1.0062003236377739334050591099135835 GT 1 -144944287415463882587711316392774767.8994586810519361015094113221247581 1.4626385466318859681282153025847688 0.0499992625945935353406638962137987 1.0512925181716344578579740001852539 GT 1 -233709455004294952342858138.9419405426472317962870837053301940 0.6878858734024481362088162131385137 0.0231506528781917324405785217463540 1.0234228382952218615638193457783157 GT 1 -154972775192704238171.5100009370011595075279398649889547 0.5077936491950211731358006018643706 0.0866748578695678401957723844875022 1.0906633367786775572224448327351643 GT 1 -8607253524173.9005733029576775636318505884586307 0.8423038393696995617685031118827053 0.0410378056616006779517918306169791 1.0419036268378093022863035588015141 GT 1 -2389847790125744847445233212514271.8664921844467774647380435606470912 1.0366603776665615076728101303069916 0.0965409154346746008138859467912997 1.1015244554591401987945624110825370 GT 1 -360366169541965492602453553.5126120915524968029994308783736837 1.1827537759248581377825793982833138 0.0991900434527107444928784145326634 1.1044609686523674492735974822650721 GT 1 -80039057414755972929760628685991505.2505083575065322086323954992456699 0.0178465169639391240243473684053015 0.0183664082009864729022323283555846 1.0185371646968389980602992278437162 GT 1 -1323127833143162430620091150276.8400704851686783653066426378008520 0.2520515693148300725314945340772768 0.0974586957868986287807714539424254 1.1025408233812431276409819591215406 GT 1 -463275018258146203828622670939546.1586376882935083640276936891607013 1.1678300027981582062001009765245083 0.0415947457339233910065013115337267 1.0424845693049318568025062573740801 GT 1 -156429279198540502314506340838837703148.1395515103488722471895632398304638 1.2439939042066103425811962938773426 0.0983461898712154742235028322297909 1.1035246351085277310693171293047166 GT 1 -1551510088764322091549696768.3927117913488376788906315927801546 0.2679991502688084697845829340032279 0.0518808095321010491704104748406918 1.0532750562885952107101015825171853 GT 1 -214.7487070696024656726411488013957523 1.2087306093085212501995453395514050 0.0716882463712888279211352131480764 1.0743876612013683747150896558336801 GT 1 -391205934353080116380094899.9435366322841910077389117487333185 0.4235458162947585044999089606027331 0.0777321067703205371114289477244524 1.0809195409807089863290781724012202 GT 1 -5285168414810026460657870329317880904296229.8345825304243519394765923044163512 0.1155059179487825676651313352164674 0.0130728564202088942540924830904597 1.0131590583017730235648161596146215 GT 1 -540555887515.2594977747109609006456520752804156 1.1293698532568715516446198535217434 0.0917220033904895009969806991291693 1.0962047835725134190615739256394514 GT 1 -87641.4765313489032615638044129993198776 2.4711196552002750602439044848492937 0.0015982039036264324658093777518450 1.0015994823938588458308526753265780 GT 1 -1258423003928365804845622301122.9455167780692171669919098622781244 1.2145564575319341137311876873758894 0.0200104444826321224884914565044807 1.0202133650096513479347370271095327 GT 1 -19241025660379799127359323997090750.6491023518189408261968405327527956 0.7168606170147891141483501077353560 0.0926154995738185045391791849446481 1.0971889932005834964448084006248939 GT 1 -867527639855602150551194429545185.2029142657831773416082275623472422 1.6558621941699023026740047156633939 0.0882219811560265506680551245253824 1.0923587189248681995693287071772047 GT 1 -90992448748999374862.1903085991439683013855596930360717 0.4056055791462325969686829943485193 0.0394567855715039485969744667876219 1.0402563061890570577427384495517313 GT 1 -6005937.0914518828693744166003289901425432 1.3997304067079236079993764291033163 0.0629506009413134971625850960590665 1.0650192776865515294523372756389949 GT 1 -7444495135774067866865178436836330.0437030813889100777852503413430080 0.6734154129098314240959663055785008 0.0141681820539423060598032080795702 1.0142695089626486100538588729523879 GT 1 -13289742864702688621793.7066103554519565024281979121548278 0.4814723920104986764426877518359511 0.0190836862255927090750875018334938 1.0192681301153556688556278048913135 GT 1 -7432128532012337049653434679065.8586912107874065638160529100255824 0.9743316631289675314095276563395110 0.0500135892235765365361103831809491 1.0513075989357301333652430091926872 GT 1 -1175837738843574127018565997727.3337686787458406263595321274685341 0.9670888440484983550278790690601733 0.0901803595225162843913371115694543 1.0945088963924077432013112497327842 GT 1 -1366692847073671151228196444478529101837.7524807995767555465958621251521698 0.6848293954413996211205202612863829 0.0068200205525571796699396149210075 1.0068433831756962702706359990288384 GT 1 -1539.9205590895510999184808948717034797 0.3913485586910601305473607482947097 0.0677838433294686601837926532199278 1.0701905634295497364311233883745160 GT 1 -88158264324447003776791457736467.9615469917016007169499470272182083 0.5960886579157676566633788447607221 0.0546433680233467290801516957617481 1.0561930343463781413422415046111321 GT 1 -3219632679499869701368326895210362963565789.4202385645923634417211796154717769 0.0865767643730955739116349673865832 0.0958544836236985183417894891038067 1.1007649621013398072878093590290466 GT 1 -21011397486.8814108916842158195678845417642214 0.4707475079463977615922055910417063 0.0820308842877003572694074651790031 1.0855915319425096445499616384499367 GT 1 -3045601.2532161096492839915761291889783317 0.5485062034270745346509981416136017 0.0290919484155077934124976430283951 1.0295235097323053607028113971256061 GT 1 -491119673452.9410151112190290968508299419193433 0.6976735561082694518307875840924431 0.0691792505992585787611833115400939 1.0716885557947911478510647327378707 GT 1 -6.1643559725185267151590491676897156 0.7378142889929110453956931492476373 0.0853885234585129494124688658853814 1.0892559196830860790640285202719702 GT 1 -291496706030136654170654755.4096946390187036231597063237453718 1.0376982306809982082289907874496158 0.0777925107318783353898357055745542 1.0809850381536748761017058928770012 GT 1 -11615636154973.6460522648380797463314903356453077 0.4400092464788269148732500199903455 0.0269665504058736149237122142935753 1.0273368195924547809412014728117549 GT 1 -8154.9325610354682014825255028279629067 0.4377920920129641291076988713864896 0.0393963322413083267907460264644732 1.0401933715631040953651580617789032 GT 1 -175753587.9213370533418715517984845970655259 1.3919552290184241782418061364942661 0.0942743034000152925660784952677336 1.0990187819158433781093354095497418 GT 1 -190392550045517204135543866556021.1901328629722430109388864234008230 2.0220132728884642085845235463418248 0.0314793547325056295572358589463796 1.0319854796173244332360713343399252 GT 1 -23082864.3666694980794331086440034827716782 1.4935567556103764330517852093423632 0.0354135667127783051992211218761924 1.0360558360457772570870184381663718 GT 1 -932776414139212362408995647806713923241.7722810752602958864694836715320708 1.0012039055007104619785607224164597 0.0003998865272790872681603922986733 1.0003999665032180145668009682178642 GT 1 -219812813126150.9607105064281351844572865278738338 0.7231563410624695291733386942753284 0.0375411361691906721884272973280343 1.0382639526106108113194626550805037 GT 1 -388358.3634284848920578781059936756764904 0.8059077783765956023202165255230645 0.0942560536679436988341875188871471 1.0989986328262426579105866207737805 GT 1 -1275756589677.3313552705835188534716337591018845 0.1489527644194875736991632809583444 0.0279546929311498351303596619698515 1.0283528633972621164662466762160708 GT 1 -4821491775378.5847897812128416706725273391296661 0.2140649848963258839309601985740889 0.0360895350968876514884730885785244 1.0367568674162991403089683036673999 GT 1 -554856397847522950391841097331.0122152816782608501836813280454171 0.0271274875069179618736101657706595 0.0495048344882987535386449493081179 1.0507722033246616406386459860417270 GT 1 -5202900876319.7707793607740092970403740017223200 0.0827130669754683031128379086729356 0.0982697698176320078358136918159202 1.1034398832731770932987636890547670 GT 1 -3258460254995888297965097762560759811556.4360728673024201325802631037625221 0.9375922280376031750653528911215936 0.0189442552033258213840402359585943 1.0191259965697809497091708219712393 GT 1 -118861877671934993672026619147919.4082225176662390584692316590367611 0.0562928267876639004337799681188866 0.0734617092987774828583681822644089 1.0762999057769612455518124733965221 GT 1 -246957475262043006619985902.0663178399306820187589030271491283 2.8026745933208291192749589309408545 0.0678751648251063438615719668014913 1.0727587686663963856578631493533840 LT 2 -3973072372339591822680.7888490181931202278190515418726447 3.1216522343224635645714862619918134 0.0432360410508189002194015735215060 1.0451753213835500438486666377279673 GT 2 -67952.7613482623767273444765035936942696 2.0523239204004882313568050149058329 0.0147426751231656388079160848343222 1.0148524283984160517935489315979437 GT 1 -859.9202791193278473129323092776092874 1.1482774950204815675347204382142759 0.0393710620770652769597268620358934 1.0401670653634593713353849180463344 GT 1 -168981971749.0194198685781718755535855111968060 1.5102531288171827909952804340917209 0.0416001322393390839883798188471603 1.0424901896002386762345519204469676 GT 1 -405.8502707895881261002875494187105618 0.7023027466610694692499439469858351 0.0645381345726882583528968175407435 1.0667148979392543159495271880393044 GT 1 -6611038959567.1672378168336655178934560116562752 0.5535417085050936548100411640460741 0.0739059640998723552108233589908046 1.0767794988437896674865545251176214 GT 1 -3457404793923122208.5078138781652293860689784671491969 0.5542145122200420730565347463260314 0.0576974858523010062309349781709987 1.0594289156760963438452223428024679 GT 1 -37509013983569226693842683651.8578503650477641566432825680312126 1.5324170490412105253234218990282489 0.0990742597704574838860563140405905 1.1043324440495416623533563840579537 GT 1 -10247278456305024399819931916009775.4319381939187148287840095860769158 0.0793435957186475260952345976763934 0.0323636984341187360793776382045625 1.0328989838294261039852170239532135 GT 1 -34761.0558802169986836122915344057357562 0.5566250093434842416221570322687031 0.0469728944550760259090854216328652 1.0481119333977578219732724269991334 GT 1 -481197701715517686568508981491860414283029.1362193162035933552321253554266147 2.4015603800324543172120784358821397 0.0084632073336404418202002192118840 1.0084992236256915795756979799928255 GT 1 -655247263774688492487204225.7649450484248517669738407389807475 0.2804060102052474183999205994789525 0.0935532655602563807921191267728472 1.0982230100947312408859306434480344 GT 1 -114996344211779264419.2798171457172443247864433874170501 0.5570596236206353584971654772635853 0.0613215580048180263464041603357636 1.0632823057118129653622347050055653 GT 1 -623250163871556605184473849523106084.7578976563749845703153314697772208 1.1738407131584124754206577184475068 0.0772023416394180605669677498492698 1.0803452902230554260316289725258541 GT 1 -9508144625782228448406294.7898742174664524011808104959118615 1.7950754852652828981656861554809479 0.0399800189506557606139416164988538 1.0408011811437880362298545312203337 GT 1 -1525146926632455511556248499227086929856585.4341767543348416770274691619989739 0.6967028240649182530443896367632776 0.0648860846221939514883755247858478 1.0670869224860160845307691518680486 GT 1 -5207366634.2316796100622267177353606096971619 0.4509929769922386812977719854183655 0.0469191020305752844794179743788241 1.0480554912397942193456095557569602 GT 1 -42551596187231323513346.5786964441884621208065148730084650 0.3241947559353304293822376871250856 0.0504617948654254463740496807467317 1.0517795124307305559146574268016519 GT 1 -3798045010324597482.8464124209114692203550474225757308 1.4982790230225446778768698612518242 0.0988931623465764980886005768873323 1.1041314516516090974514578099106703 GT 1 -4466.5821804406476410313297937953920059 0.0662735142129094838455171563020727 0.0481771412959455833225241582064218 1.0493763342943198783358052768836301 GT 1 -33797683101164.7459535557037454724323424280122413 0.4797003146587001647628321768903178 0.0877017437686421682906253897558727 1.0917883070308056129093378585442717 GT 1 -5933758530.0823824513860801925887039703251572 3.8469382873074968450919264340195811 0.0111032973130962806613742279422966 1.0111653990358445107993670563376678 GT 1 -1739193150428861242020337671.1533707323987003392828235590470865 0.7607949563362330605672266284560213 0.0078479816417527190194405636658254 1.0078789391252252294566263834777805 GT 1 -5730958490191977522254081180660262938885517.1997101716513734771966956332536868 0.7894455868909554636217567644236769 0.0924718135514480730850095182185467 1.0970306538780257178041939153923040 GT 1 -534040538873203444.9354565591612050500012363897013792 0.5533515531509361392192893833912021 0.0499172546963543455602152976580674 1.0512061978609361215083760885911149 GT 1 -490276643862040831505901965080636533956.4760725705417337448485793854366446 6.2757726465631534974185521638686367 0.0219782078995495586241645809642219 1.0222233268842677081068174645906251 LT 1 -684137626.6330036688356196261441986955890903 0.0140880140784846011121077065360103 0.0183801377677563826147841667842896 1.0185511512422256284526348924769621 GT 1 -10105.1165944996532953134676458015851400 0.9653155539513931973482635932810367 0.0209752743003647045449167887015878 1.0211983806932983116644037633132338 GT 1 -241463880155602718377.4153929280662193341335443117702235 0.2774185347421374322649919425771760 0.0067549741254495025395680397269938 1.0067778922289384969195046743170989 GT 1 -58413881255641720395467477.1460544120274184176376325909948353 0.4616448078745094791379353873213632 0.0571366525948414064769017924935691 1.0588339194633565626029024277068467 GT 1 -157554516688936531434905734496706726.8708333076535509293309400066753975 0.1399174267678586571459637246505032 0.0563263930201394618047038014652061 1.0579749279417321998292550459938226 GT 1 -185624884342269.7394948895386573825110679574930105 0.5895237979442924019750785051836900 0.0018023838791214658958553753916291 1.0018040101273214667964093218209744 GT 1 -180658599777671034931280895614869.2875052148903372387812129349633463 0.3625558944776533738172682052585407 0.0804956182747412801868416622493385 1.0839204696144131909572389296346264 GT 1 -2553230756.4936388138802075192263971236705932 0.6103702162085570748218301650262463 0.0625285651880945779712118782305287 1.0645689911357444010531433563755941 GT 1 -1033700704686837640068164491352.0090145908695868274145606604412758 0.9245995708086085310372214734523804 0.0580092575570732728972773573627716 1.0597598320093442144953683011362128 GT 1 -1016013362304039267133117937496870821070975.5119575911908048192538272319484663 0.8607083399820051669739166053374807 0.0644679898523254025226058230910278 1.0666399166992711940093518971054941 GT 1 -802.2171119796756831076870430750531766 0.7807913226651528466005349350288130 0.0699871917427723309010984326995690 1.0725569206100733093424611988912206 GT 1 -61051906106732829362263102269.2511817986266273475174570308146500 0.8163312924514972021562910496964240 0.0325283946660465721970401737503259 1.0330692030009134002440061892975045 GT 1 -847579096910008565820628745.1622872133117088938745590632105959 1.0327074389294908196797612625946477 0.0969346774174260169344634614201238 1.1019603886659424058853098902055668 GT 1 -30855140351163468176472748703873565.6393816867967738500653210183966097 0.7153669776766107264628941039254233 0.0181560285083063618822610777641879 1.0183228717531166343469755715500231 GT 1 -756012261918629176846827044540767.2977752704376869337903827673072383 3.4469301407099851482918689697734989 0.0401577395995684706673313183804920 1.0409863201038481506607573869456556 LT 1 -421735.7691358564336363859000484355258010 0.2404870802388938326177767913757873 0.0648515998236613877952655410624082 1.0670500455214858398772365546331143 GT 1 -326840507673630045614520468309237716.7794314672931157247608156695834177 1.9304214819558852933270824128239809 0.0071482840724575195279239427348557 1.0071739554658103943438754789863319 GT 1 -54.9717117296471637512505337435099239 0.1884174008544540847451070581687525 0.0968302839900821804076338138983440 1.1018447963701120431918825536180954 GT 1 -374993555112657370232891591163395890.3270485290061541178804738110635031 3.9793912440495521073596621163009936 0.0771602331342251375846877409500298 1.0802996599116793280073969210163316 LT 1 -144519.8442845962717172957962051220441409 0.6382428459889267394750437483506665 0.0841136343686068850250169403831783 1.0878629769910253022637609532146531 GT 1 -479612668.9336254811744518837038888930503965 1.4281946031452671175613053629615797 0.0491880799744760455968931631477187 1.0504390067367325387813844547331424 GT 1 -5847966152369213168594.7740448213815964349041033636291064 3.4550940318754504280414378769655320 0.0782557773296753246675872020440583 1.0814875096712798786403692822126687 LT 1 -25.0774738418998388890512929712631448 1.9986069462897858178892828510322219 0.0895472133046989552318561666280891 1.0938132354200172825925360978920627 GT 1 -14500297690139172.2134608681565830438468402917259996 1.6071087893610682051500771811415586 0.0082212958391213829236921156621025 1.0082552770664016139155034291775245 GT 1 -90763750260459.3980558134457766912040785528670071 0.4157729385044573548436483808036133 0.0888462746292703682663141439600368 1.0930436524114142802994881484660687 GT 1 -87382637370.2394288228457412259051250416471058 2.1291543363372666880681584257417572 0.0945396574245318585794240694877534 1.0993117987795731277638951687344709 GT 1 -937688.0421866024192370168668938830084968 0.4135773907715788445300504911371582 0.0011010410049834658575557569436636 1.0011016475959260049630342398972705 GT 1 -1448.6981157548770567211532003349952667 0.0052982843699956079481306020560048 0.0530912442327298281349611968721589 1.0545525412646341231393709113347165 GT 1 -7531595203525.8063475164215009064035055461316747 3.9070284865031552460602978684261197 0.0197401888725606095539699895866658 1.0201363835847569457986826045831789 GT 2 -1049440371325652834740221857908354159299.0866393385025727952826044330171066 0.4681534907032740570610447777553161 0.0471188207046592973323231534645631 1.0482650637986581493105256517643471 GT 1 -93710560503239921566348169761410577222867.0187674888501453218660996849720486 0.1960414094477831272232361284843127 0.0587284808550474292021426427701456 1.0605236378239777419287531171102240 GT 1 -150849.5025913795175501560526530626593260 2.5848604996214691699438889026375272 0.0678815374507684549445877891195266 1.0702953666342771160842484076650181 GT 1 -612522367732639406145096425078990043648.1276999874538144348184309987891622 0.5726701627921182584909076007584617 0.0735648221246818574998121937026693 1.0764112002210096211781108383189034 GT 1 -75753113164501738983565640433882142302.0121942246712302629043111672367806 0.2492222281164492634627065655146884 0.0264237059291062295390905199152748 1.0267790863409844007618447033755219 GT 1 -30919156805274189118977762.9451855113659196117591383756042644 0.7984558695075262397216802344614551 0.0105212426547703206051217251551856 1.0105769822394590078002009115418427 GT 1 -54565055346524205354385.9673033639361324786674660995422191 0.0640017431398043330818131753693166 0.0940553125110522412020887960188609 1.0987770261395686869849372494327656 GT 1 -1.5660824732607851029948233287175861 1.9584099742180238827905389109500621 0.0451968643301914055496990661767263 1.0462501004111992856093724848427907 GT 1 -18381088421335.9798479408709480302835542789726249 0.4902036304922354462073559889374366 0.0191417349705913843411923727724958 1.0193273099473738939396089387151668 GT 1 -416389019691232573805846741284520926333058.9392660706157694850443791289767885 0.8621033283301185720507750881241342 0.0998848839649131106644285164587636 1.1052326171315394210128239652731304 GT 1 -149349402372173443961292.2901287039835869566797332495893593 0.2539324922438773878524957212795556 0.0285060046498920498488387035346693 1.0289201909865145388061865863230450 GT 1 -338951065630116974.2535487184840623107881693598761720 0.8867790428942037048129571879897780 0.0765363289465071522958703285112266 1.0796238184452635274686282301309296 GT 1 -43607126507026210.1284647533479372718876359478188033 1.2598291563055268651376368694247242 0.0918072532679888181950340474477143 1.0962986467716586846674422196458465 GT 1 -8213284211945662070080908269935.0573823407176180040095951936040415 0.9839577956333047748245175586513452 0.0259747360741000240377607219856367 1.0263180373537151801785323326562294 GT 1 -1960298044813268607578062057049045816655535.5678143666672689109711486915441105 0.7595849549894911675379152017035071 0.0988762672653967764728093910431628 1.1041127025731528608907165622786446 GT 1 -74649296.0109688429669868778821331869707693 0.3491879391051122211430491126236367 0.0665366756575514846301123105393550 1.0688536051037695530312837707511577 GT 1 -29794659605506504621729.0493636640954623286268346204799263 0.5138788390643437034555790892232625 0.0946197752123947963465362900311306 1.0994002856285637937629937351354993 GT 1 -2506245873801456548058164.6812464232223583142125847415493157 1.8847808038592462754587618107086616 0.0269715991134540696449760775004791 1.0273420082328664092048504709147071 GT 1 -25509704694005070980709166764793876690635988.0080855393283041053368367626340968 0.4326128025451638278431616368647797 0.0641425888250750428833283334404303 1.0662921525975591304496103491848174 GT 1 -960156065.1792912245754261573221222405452400 0.4612549709048975968271632433187887 0.0349499940570601119648619878936443 1.0355753593557522489437915801411319 GT 1 -203792907729343980991376525581596187775672.1848827930290772671420418318447069 2.2439859046950639744543931755924901 0.0445923040302161863054388595559818 1.0456171228255349862001396032149117 GT 1 -913405.6033127130444503045552587415546777 0.5806386876914716962782260082700062 0.0596906702571287838774421734252637 1.0615463836565808507302066537684910 GT 1 -5686988648500163705479521125130787.3546251014142921822387834170719051 1.5086261074677635270473194440400594 0.0121788950824521353130710182883709 1.0122536655262587735183120507016344 GT 1 -1074580326408920.8910370773692494923103325899811224 1.9496070534494592526550281575466089 0.0106882174295055494462571655773590 1.0107457467163082322597976801972793 GT 1 -2018.6341461813582464159644515466937292 1.5938425878890847341988255034225263 0.0540800713794555311514422401139751 1.0555973555627636582240927745882840 GT 1 -56686579.2774626453540031677890833587355955 0.1865140158292385841837243061651713 0.0368331973339887137757019280886206 1.0375286706922046808568080372659524 GT 1 -1229631928631560976.7379801539451806185815752388822982 0.2133965127201208497609075830735023 0.0409321247657044770934615223554984 1.0417934295080805884525223214904016 GT 1 -419206679691982130612380200591050803.6060292609738491250693914574322686 0.6704509188482882675152147285854295 0.0536043153463745329995657277718670 1.0550945260772721722865189788571320 GT 1 -550884418698649101787700108.1319580669559731921465017724553711 0.5650340280217462531557953125847774 0.0981079634304373988705466548860142 1.1032604594651975164759982892256341 GT 1 -80144610874393557415.6354782073414767953136854891122809 0.2246851466204927470363606209640777 0.0531675622771131565663724761340869 1.0546331415543537449489703259657273 GT 1 -1198019761208291612.0830817372733623073460227522592672 0.1301931649245037343897251680185297 0.0418704155394059060312175781310001 1.0427722445423585894019913400104749 GT 1 -4314289258562458.7961511961809540987239724249492060 1.6029115463968505494494346843082117 0.0948607706657151500653001549517078 1.0996665025468023725708620613413270 GT 1 -2117911080142642646992.4282333154531238212439118947176384 0.3349247636643987519585455524854603 0.0272807956543195094514154270416388 1.0276598259628089832681626366585133 GT 1 -897694084374705043781.6829493559966810507456574669282439 0.1030405484861300960552998708663397 0.0776167968869579223423054391956847 1.0807945201746157085451683817091815 GT 1 -40546437340653369909792011385083699084.7004856130334726475654040433664522 0.2355357194827970256045106419561064 0.0463518013408912214749340581148180 1.0474604400524739099353769719199827 GT 1 -943653201358253118071.1731856289413097136790912386950861 1.9171262610464413316630478648700858 0.0037996352182747715630230860070015 1.0038068721698377567768347185330959 GT 1 -109461188132629.8006673979893586906487797784451262 0.0693149535030194053377895715101113 0.0479407735517127379831906804565645 1.0491280334701348171805531099619913 GT 1 -39.3202145423111096027412659789600416 1.1266606463795568934787585062542927 0.0202570400783229785624863463705026 1.0204650275146612230150175665489849 GT 1 -2953237210378709925181985994283886.9941457933396923319952890491947154 0.5570843000040654830078466095517270 0.0254744010176272396586501571736218 1.0258044915418064232830380719825146 GT 1 -76011726388077697512614411982.7324052889143721003816747515678138 0.0755434266801956576372051938768086 0.0113806421521954528372348979981097 1.0114458972289591799506472164992976 GT 1 -14329225296.4288529669556943843821010809888902 1.5873080846227745522712778275161581 0.0820484241403329539197054074869757 1.0856106393611619308618737233697186 GT 1 -77109562808574914434671126216193629.7750157808943171833623668057044591 0.2370014406810922695459824224081850 0.0385623896499660756538059218841984 1.0393256038900870180030160349194930 GT 1 -2043931959926003686166.4055339563606550046401535394946197 0.6627113379953820564927031622835642 0.0438253885487270467430337305182961 1.0448147346472613302406832757651691 GT 1 -312444951.7156311278725594607095212000930814 1.2806643232905474799087611698763077 0.0924932870170987606537810761087030 1.0970543156441530973479511751904610 GT 1 -45369429403291717765.2068343059670864681570767038964826 1.0198655916564977113063669250919018 0.0128124631628394105574910618021604 1.0128952506704710295078201025404281 GT 1 -1974440822438449344647550514593255.1809977772388264481298798443389641 0.3685513622516051118193993731890047 0.0350713732908948388341967158584320 1.0357011423379482412733880987977524 GT 1 -6531548582301056639549365713.3986310132487952213569275837794884 0.2290956807870115140991383205393012 0.0863681438470729084107026345739807 1.0903275718694162504008457707263750 GT 1 -1820485614727371748259616065531969.1812123771435350626163184688120775 2.0828054499034642885086564052114482 0.0119263303736639728610017364614725 1.0119980196149303308703148325552881 GT 1 -339608832823740311511579079810.1840219082677734106957024939298759 0.2295706818891052355172987925608630 0.0274543594560400913204050407835969 1.0278382734401662393077398954523550 GT 1 -141734691584331014637.9406087788612133581670963801501004 0.2034425378564308895749552467996327 0.0373192480132430035044568750294334 1.0380334361793794152020534340587435 GT 1 -94641548536795844055.2010475900913360251592559031407390 0.9074608821602310729644241928829609 0.0906866763393062565179804997538908 1.0950655537009669298510894057359604 GT 1 -7643349348481137511132001217220331.8767900193801133187926328889760648 0.6887174094961065152826069127091281 0.0583960292079377513433876016057558 1.0601705059760767595624446268081784 GT 1 -17696467025.3768741426037955232191753367031044 1.7630444816029134634732202152956707 0.0873427734720650452263388876005654 1.0913949053236428335308808055093000 GT 1 -26628457106311.2628403314783677597450094636649375 1.5277257491537756236396584864876112 0.0589550631542077587256500109049460 1.0607643861843648455385205979020124 GT 1 -12675532922548449013749044326590242404023372.3750691157622759423874830228741547 0.5049199155854757163413552955237924 0.0654859533959733709791077541649130 1.0677286210555303096631895735767527 GT 1 -1901962817948496345251273926.9770076280402184488604817847609624 2.0647036291376179910606654127451295 0.0718459311366353295454297840586637 1.0745575374940695614330743042334315 GT 1 -80711660166311834370475183139115192203124.4713854067241094996409966844369569 0.9403251476778296432610261902077679 0.0200589022875419933861276148018631 1.0202628134989026281148047808894336 GT 1 -3806426952326770808191361521702716703975.1993593510485774781130860978006287 0.4225178155207714856082795599235089 0.0549605917976602291452259048640233 1.0565286505564724990208952829384751 GT 1 -386551676268414780975869448857477369.7842581616027733126122739000127302 2.9067668030526326413167156492706411 0.0587767083592657901155471450616408 1.0624095334676717728430642015763493 LT 2 -682451906083065917115752285110.3289282228189929199017791566878413 2.0392218737952106504093405388259323 0.0167905960865366711181553165086246 1.0169331561773306133794596539825635 GT 1 -12130246751880823893984.5546280271024331637866744805197150 0.6032279797663994491076742084484046 0.0590306059661717793892890500603742 1.0608446648631879594557613338881569 GT 1 -4.3441864253565522069502148022880403 0.7584006842530057127701348714187788 0.0809354212189342685987433559467845 1.0843988883868703792922283532449352 GT 1 -144244401065090301302441883973938559.6889992316013500455021527554199364 0.3219036476696393403649874046011729 0.0943499573018436496299983828852488 1.0991023138967913630574912568691139 GT 1 -1736535971026199167374757242607044848180.1643857396445580986124153395314211 0.4638665993241438343306785271480229 0.0439404431142896196094829576451014 1.0449350698735704287255647643141530 GT 1 -210661986.4313951935118602735177327126985917 0.9842442429266123887034638906337631 0.0568369469690119222882421995392517 1.0585161024611312595993470400108010 GT 1 -12487221165005.7585420524654805372132009498981065 0.7013743912498493191869790598017382 0.0708042064900586311913231374234597 1.0734358050979148889441228685715005 GT 1 -9277193293162007750215636439072808453.9057850990682074492881420291177947 0.8786837730932301430793039412787507 0.0706640423330680947099906891116717 1.0732849718854421762671605544283139 GT 1 -50630248032486405206485620775032.1903325800494222252803315070418548 0.5101517624364678343544565331901722 0.0320128606649756038435903869737402 1.0325364776047424139437286551134903 GT 1 -27.7174555594707198733836934458045786 0.7523696312307470208806403550844194 0.0698497578400610783075444093309726 1.0724091551731343277534242364782824 GT 1 -417464825851299.7847276617510698573124087124349372 2.2771651356422000833482434062061613 0.0007495557921014133428234739637384 1.0007498368494983924285816805716473 GT 1 -2252736192600106908630228363975725810046625.6177635051227971119115190527345352 0.3505747701701154363306213061329466 0.0425889912080908034375140321178228 1.0435225034561321491919769024615547 GT 1 -540597906806531688495731054176347616.4259471849913538313110114608302583 1.5416506773926959322084092056764261 0.0852740038185022237592257004790905 1.0891307162781726466994515433764439 GT 1 -2590635115777888623379339711065606525797.0755179670469418914562067479757524 1.8469954106670564083466863555401688 0.0134078234377933230523887796518650 1.0134985199096552964891949030666919 GT 1 -6714846067152587383548049982350024.4317784871161824698615062925565362 0.6145878369335096802405656826155744 0.0120177359027882316883191364224193 1.0120905327140076559346016710375088 GT 1 -1010417375309980393214032503.8825216479510848258063221176392861 0.0514165259775653087432908677712214 0.0187798975753563873851739366800064 1.0189584792163094447429073856181277 GT 1 -237280675411367642089452980869734.4607065698585927293291510303028467 2.2272410046232807992269859141828461 0.0863917666820502680544738868177117 1.0903534281705282912511759908322114 GT 1 -3421518370513030504189.7971158333087502914731117502606931 1.1068303804024699919374218550602748 0.0803168444927068183747602541336941 1.0837260644447625705958423407198380 GT 1 -39500565.6451250923565909902004161857850584 1.2107807299701955177102253164587470 0.0891692401005046319452427288713282 1.0933981729654891613061248157858187 GT 1 -35930205907540.0462595852699812448583439243295507 2.1645058618246387445239637570204000 0.0394585450114045083888275215553297 1.0402581379041590205780375427926161 GT 1 -7350443436309137589966398159639723421332824.1790327635677338862736034183698830 0.7119453964363119986453377926021766 0.0249052629146831812927551249450963 1.0252206464632727523164022522384468 GT 1 -24506004058048099539730.0097378860917368904219304627350187 1.0949960823246415131536794659976256 0.0027639787558436303017149861455398 1.0027678055982924189867590233277783 GT 1 -5835380191.1917893093343803382740236185027135 0.8099260934877531466740050767604343 0.0599691916966106344997424644951699 1.0618426294643294434316213077153575 GT 1 -458791896.2983768694385249657343115088614826 1.0501427578314386972445066971880593 0.0415781344599376302795339758121938 1.0424672372525891744146826254161915 GT 1 -181.6125514590143408679715372616758672 0.2348029067045451315741171860907719 0.0153331801334371071866860550869069 1.0154519489733925455372503875718192 GT 1 -73633843933958993699831730777081560.0180853726730492332851418783355474 0.6081977642092543250835918447133961 0.0373767193086096499606537231907910 1.0380931371870210731178351962967019 GT 1 -1439089039505059060906503454901991285019.1350145635376295555401607811612759 1.4693399005405386999097745043576475 0.0207051042997957517435862993757672 1.0209224604611455247361544242389615 GT 1 -49306411115580115674111.3569705581008124254544723669726425 1.5812565895469723363275164998658868 0.0197449727358869378300014959764468 1.0199425092698115014773551017178305 GT 1 -614333812878009000057351742834052609359859.7883770815530398559105093848641896 0.5891839422540226192386871714934028 0.0340044174519311816435373384327744 1.0345960177116807170398927401834094 GT 1 -632916038083099427416133109.5507491508997430059375459174922142 0.3224979313465990537718719896266149 0.0924750091779345243696044160258389 1.0970341751263576923014764874354462 GT 1 -2.0517050723586590901468432796519062 1.0394824867290110226574876779776984 0.0418512828019359104102897833450961 1.0427522759005865975102388292132837 GT 1 -990006823456490722626439871591.5577544924483965616198491258867315 0.1675717833604575579488726622563269 0.0253152457886172444027731546574859 1.0256411892803517654506750071732087 GT 1 -580627949613999992880.3072315658462984675456946907228226 2.3168197755485362810600736748876007 0.0693933832616846269878938737273227 1.0719186294117002742474831027739907 GT 1 -3201876635567747360.6084688640538776916625068695324805 0.2941001933153726376730438611739847 0.0571819382017076424495944400651653 1.0588819504898639211153023294489801 GT 1 -194910049513708180561120883066.4849784150069582783477025890901051 1.7396579799849028172840808281362938 0.0223447565417932453118430532091216 1.0225981828956348125231442568948079 GT 1 -26513409766306.5134167803958208780920132508992301 1.5805615251956718977756879158959580 0.0267193997680917553363127146746522 1.0270828516995215940263881539307033 GT 1 -2703621.6961498231299246040596684489494425 0.5256572823498099054289913714869276 0.0174252434652691859309725179488455 1.0175788500572096871833442392636666 GT 1 -4765093549159243703.3784582668075103211543038234717355 1.2272536200381564016457831360840134 0.0344204743430988224601019204705663 1.0350268131757916312377963595756131 GT 1 -3186200334643662224.4306045065636495101700311157660224 0.0177551269487063921977678487243198 0.0141586382064907078661130536854847 1.0142598279997489337970252341964813 GT 1 -179084362074574130713138512.0111609403276770168705549269942347 1.4588996046846278154490608806201160 0.0387591906316959909788238274243500 1.0395303193332925926602346700275299 GT 1 -79997055027367747095475241148591236.5025004838646557780076983874119134 0.3426165403944420219036710058893353 0.0777152397295993543993564581651792 1.0809012524914217358423536304139245 GT 1 -397194437114666610195933159866152973672508.8991778575562714418922195730623862 0.7598437300323909238988831335338274 0.0903332421130427376355879369221607 1.0946769466631035575715522660058886 GT 1 -37384976728663052456163894220.1556593797621764666936827767236110 1.6127133900424125376076875926543292 0.0276623107261921785682771775962384 1.0280521179086300932763953940524263 GT 1 -4.0510658609143092552889771005428696 3.2083664736185165526576364318614067 0.0452289571140703537733195695116388 1.0462837129141775594217250430132798 LT 1 -16624437643423933326973322.3236311271846300166243397856899026 0.1047138928494475156564806821807059 0.0695384000420992812554207898953856 1.0720744719320411888177485689759929 GT 1 -344073734459495132166702680046043067.0594064465251300204170201369752099 0.4217526764088381894821514736336270 0.0121950106422910192379918271464300 1.0122699799087079011051753451066992 GT 1 -306342540782071040023526093196573482.4608378997631554186422574086795505 1.1431985396465710187962177389307345 0.0297311507275610628986021802336591 1.0301820816892185483008009039315949 GT 1 -313310278604926227831922320158310327967.9811388528549819564009593324320275 3.7434057120846020205029814219347080 0.0940436391633333173481527187981866 1.0987641409461638123053122068198902 LT 1 -15994380811.3016508274834376221301578408357752 0.1543926115823079201585389154230432 0.0195989061765350788931787395874485 1.0197935116377932336514733549419740 GT 1 -670.0081486127347561090217595057525838 1.5267492411470924458452427705029882 0.0867843357534514895189104945853761 1.0907832113345949825515748787564045 GT 1 -2534442104288.4673649298436952760431344966021519 1.3451625722152005189449692051514485 0.0233389915408215432992023067812992 1.0236156590424221815385398075963355 GT 1 -718206170330300162838303523121485.1652266272704974509060537161208858 0.4180991854030079562739473649131865 0.0747979765576347573615702246955879 1.0777431615948566338139053872044907 GT 1 -20118.0419874749597297191647165684421958 0.3931729050051800890245416199365873 0.0073385169361043477611500358998201 1.0073655763166066001389248545542224 GT 1 -35652978546276.6206674461344384659040119535747310 0.3879187751472983008103509935716556 0.0768725202553254220246616432181338 1.0799879394499455044580481684314806 GT 1 -1536579006230934952743914741.0732473011346659614680036355310108 0.7366060682746586654244532774453704 0.0071516636599961640970866518201658 1.0071773593913275322952698340942341 GT 1 -525329.9920280268408767804499335484858596 0.0259110466338705281841431860399533 0.0367099973385670805487296734439929 1.0374007674916253692558897014826567 GT 1 -49794870651427707657.2030784357360796870674429784433502 4.4381829158183552654103742490800024 0.0875914660173284598411562258417570 1.0916674352808462275168640078769796 LT 1 -57120099041811823652519828320701.8096790699261220100339698306364568 2.0585934530681438482804583113996331 0.0937280165960042967746485668322651 1.0984158155582254714856279055209025 GT 1 -10008117115389192505797339845527.4116527425709197247398582881160143 0.6338883258112762591380453371395674 0.0169993799042725511890388216698202 1.0171455280155077689623806193167422 GT 1 -388427580162396706322757999877112415.8392515641545144605409975641260367 0.0734435150489783964992076514126481 0.0389280606785992720635977692930580 1.0397060139984325765037333134991689 GT 1 -259897501454764.8668950814289850898434216515498159 1.4984110654592530768606757740405537 0.0789930835532703939080473278557751 1.0822877330408807312906889556705692 GT 1 -534199.6726257160416805147777171241791087 0.9227079994624836918978695005119616 0.0430053537280050525709788956344798 1.0439574818269677851226504044521224 GT 1 -3077463.7935784204395914717124987564039459 0.5002334963667026727745562960138403 0.0869801072855620388062665900511265 1.0909976103283219999027573435744653 GT 1 -427137367766241661678.2136843400724438568109717404440240 1.9051934392478416102470306247561440 0.0980226885056061586592299416877575 1.1031659127897564301360113876055458 GT 1 -464946518117329021.0379026894177148843616072403252704 2.9106299398514256835343254064237214 0.0965323608979056408969527482645029 1.1015149868551763798777646706938803 LT 1 -63386310136961632156825073554366362501.0766344785438888658464191378931022 0.6928001303257945911797685314111695 0.0632528571047101542102484297272254 1.0653418913313638149931403642665932 GT 1 -933518123878506.5099794761883637194163057177163288 0.3134261226914158365425429950025887 0.0972898460040948385253775168033880 1.1023537582690357773124722507717002 GT 1 -1034680805679084293296744.9814109616167876084440713117267650 0.1306868511250467049287525027240686 0.0295695749194308049939684035380058 1.0300155687104805593522709868651657 GT 1 -83907329026240719216634148398478.9235353205911359663129689236029113 0.3978879501588025445669920069888219 0.0615800029411483655217642009620513 1.0635576721311614015167008448337252 GT 1 -3293916962711565709664276235656836343.3386405996577638836223861701489390 1.8334645431797002071759322493314085 0.0815475557119626212750704203631600 1.0850651510750386964539114814878659 GT 1 -6421482347303417495675.0684475630864693683848918174473406 0.7062750497562792150996150485751048 0.0929437202799186802558813540884372 1.0975507803840194685214932295381428 GT 1 -171259856286733983986654991109108498793.5301806294244411959323764116712471 0.1533430758796334296455507855562948 0.0373404432010795416465407026062652 1.0380554532614928232595805451570426 GT 1 -642178681678518239531679329968161114079552.9891265650190423771411287680465776 0.1498940761469819958878208165382853 0.0382198668331066092702237727988896 1.0389694062399399042815908281887235 GT 1 -1745.0470098659197033725498636481319148 0.7295549394989543386613182505374555 0.0315191947901888568484990313373815 1.0320266154230606943823292587280837 GT 1 -8430152940687861147992228114563.2646616676728494875388703770879829 0.1729467805544056072572761454970294 0.0495557688605370490833364210710573 1.0508257919580922639486326665832586 GT 1 -10976418961.9321656613850178910778556148382434 1.2761513046068111535284324312394657 0.0479917068675633856592163206597297 1.0491815329551467894738771056264965 GT 1 -1331429222191594368842399993351976043022915.6261776781332896372630463252934035 1.1541728146255540859758983808675901 0.0837750119167114845518519612123203 1.0874933242894417457449746971466224 GT 1 -323955590975141.8419340068522814023074254115171274 1.8348729114973924243365513381607687 0.0119660653081856941923277291212783 1.0120382349700458605601950641081575 GT 1 -17107821528798762614.0018739180146130734174999611776055 0.3910302967225170128431970991222999 0.0524264831000172370610564883163644 1.0538507546397745282249956452318637 GT 1 -571926940193462186230952138.3536272686896651520484735691815154 0.0469145068341034259402467331190183 0.0056129745025948111292850895128856 1.0056287864397370690628060706593550 GT 1 -2553708833254264499063.3293033578149766385355129792428944 0.6380524518303313212405698210680239 0.0946611231598110618464923505013395 1.0994459558237766034247501158028669 GT 1 -420389774771897217230705708830403647428671.5948488467225527633155726647370297 0.3970286889242183065395536516419474 0.0834114976395663352103747248553759 1.0870966507775900623706683106811883 GT 1 -836971889481711399524868168599.0846413114722961029704156455686854 0.2074916385020409838546532053657659 0.0076318139113226703856900487960657 1.0076610852270380425910793704186008 GT 1 -37.9944050015698737970472725221093541 0.1253817628098769248010845095814361 0.0289644943919204818127324058608791 1.0293922453365939058845603421119365 GT 1 -10541138103443465648657872347953252.4342345045222658009218412644558237 3.2229938203391652216329410968393654 0.0492034338283268193976302021535066 1.0504551550174775535588915648728276 LT 1 -27147196958624901366819829.6657530865120994223929828049640979 1.5200298668321428703437290407798378 0.0575021450096667263746879967980340 1.0592216355348864641082471621165043 GT 1 -999246865.4040379334772456416591424888705843 2.4544769707285416917017967587055290 0.0569246499801640394723064437988908 1.0586090949599304220565322859446815 GT 1 -9080383498831409.3168510440250411165463074349332362 0.4114324028659083385216478943561220 0.0850818533431165937420754666903480 1.0889206749137421050316904580620742 GT 1 -7204348229798813718097289693.1840344463968155568632223625120513 0.4203285467827818305800374194013703 0.0895181898191904047853005592112313 1.0937813578494984960263845358727210 GT 1 -183202389986455986996056.9058807337401773197427408198364705 0.3590335038519011322574338203622122 0.0425267374159708641453626729118684 1.0434574825114490122445944808969134 GT 1 -450069452205457062208.9636751613523976480270035421420328 3.3133770190376758604062939593766022 0.0379471096619521517809539610939019 1.0394341477717869899243324014294510 LT 2 -10310770156321863247165.2322743089020001407980657215913557 0.1813767817417785553589236157285869 0.0160815537167718784700344489500212 1.0162122651580708478641920945215230 GT 1 -199800454184127.0335622816351818952372634795737049 0.3477971876234079647543842967647399 0.0927756422029679410149813787807597 1.0973654969455525278979106862667702 GT 1 -477297280122251634839.3459462570612346732502487902019238 1.1912951140922051040813429244788015 0.0755600150965789688385346930794433 1.0785671465374794664185305269899567 GT 1 -21414398931167654684107133074203407.4928827807512387141574204012780638 0.4831751421039572911668540909654118 0.0608721721588626411556045199393017 1.0628036771527832519678074105811123 GT 1 -4600221032627853912313885669262793.6869505343916253210047965156664737 0.0623065373416312847126244590133973 0.0172684982777699118686834696316637 1.0174193378313944128831907705850894 GT 1 -210084790870429571272053.4314617715190028901438081331063638 1.6759267796838980849809614203846561 0.0516715903855662465037129079514247 1.0530544130740138938343789292479893 GT 1 -6938695997643291336056650057447267010559.1765382592400044071617611087882541 0.5990386012938730136242686471869738 0.0804849378800962459475218462746289 1.0839088542998705421500251919629625 GT 1 -27951188.7071796843638845343625785290572231 0.0418460598513367247366361881807107 0.0905931591166269097997512344287166 1.0949627152054304728678786562129672 GT 1 -112150612.9514987611879497732813485490679012 0.5236612715734790573558399873504415 0.0826500567290461472302297213208767 1.0862662619975434634194932600360904 GT 1 -8182062.2873519227321346410133842221615340 3.8684311451953964709275658383721386 0.0123245110634179841769024901550934 1.0124010876799416437197229440094535 GT 1 -7154396410365729726.5237501476614062880518408005752697 0.2672483896562760467529562480377656 0.0583148114451375873429853546841789 1.0600842550013420268478175417243491 GT 1 -41801902210977891.6424980597161867557937865732981942 0.2965182865958513750865715763957437 0.0255235411119739058549734238522037 1.0258549174448049787558763502854430 GT 1 -2007274888634.0387433264708982554874582489270702 1.1323362198970393496882020353000800 0.0835057128050425890353938796074519 1.0871994450060843106026196611449134 GT 1 -4805682728859038338635012133.5772189936852898209850779012131088 3.9083790151637618032104774289527420 0.0335450784111969638714989610184938 1.0341206223021715901486356805239390 LT 1 -5298601421443816035607172268317692.0752453252419722836990519259645776 0.0620895990953948061376789853922425 0.0528296472167239851374692950836115 1.0542763151909836187695828062417589 GT 1 -406197511422591668745.9860363400713064785282808461836002 0.3540968339009847742433469862280311 0.0554629295917874083035200598480438 1.0570603440990706982964721775003792 GT 1 -1819155360662228219186223671750196450440.4918906944791025428235883776604110 0.4945083410052180304951585105547810 0.0716657742694061217057776609469338 1.0743634539996361863335139742883298 GT 1 -254008761537.5980367694089560747149894148738723 2.8899220758737790448605469771907348 0.0964245366326727344021697786380709 1.1013956490649338296610476877138335 LT 1 -23773484.9462966562482095793925478040264841 1.5135061845560968978492370436916760 0.0657162226702510200511068543548554 1.0679750567828133208949179431286482 GT 1 -2936877485165187622675.0105771635188127728717872699264871 0.1779958580745961655954440082782458 0.0663019898839344130929375418646500 1.0686022226757791953117359726934859 GT 1 -2390936649536715.9748397280357813551984784732217606 0.7163550631868354357839833951689173 0.0452996572234760225100591360434618 1.0463577649371288736841796404062628 GT 1 -515794827549788608158526418.2820134979628080427056855035230689 0.4422323980801162259579187123188776 0.0862529454139662731045278112191419 1.0902014913586012783863753521192705 GT 1 -2957251153503885160203837.7114362023834383755139466351640077 0.4468920629308819093517243247183079 0.0146393491626079242733941434404014 1.0147475618419086141837868899046021 GT 1 -12784.0873386356993210488420518653759517 1.6776773747799370831082053746797525 0.0526181934990732429019978600182601 1.0540530922857787624151252539838707 GT 1 -184200489096069839718681754123040569535103.6819273326035294890310714969038441 0.4005017362233851319312107224152997 0.0552032976637684154950511907932376 1.0567855044350592236212683882364207 GT 1 -2403.5145359394428518175854415181737843 0.1899440063785190378775539200566554 0.0419578679726171833321591834106656 1.0428635228265744551474380885212627 GT 1 -1685330950133850903354863186.6104082068647728791067140083018413 0.5256900294748328806166837994750971 0.0883486833137828482483005424030306 1.0924976902088015840213162084253576 GT 1 -3432241124818974659.3729703143358368338814953230275774 0.3260038669852130155653894515138467 0.0581326937600777074125774849842232 1.0598908781922213021420813968723693 GT 1 -15877232674379431.5528857110896648239524252484039131 0.2169354148452868720563194702232852 0.0908089262929008590068485049377219 1.0952000047960049340579304325152684 GT 1 -2651144363486935369833542815744342575572.7035182290716917139299790966525738 1.5921148407694143227315276566984515 0.0622178047413895356300947218974599 1.0642375581556220768355361699648217 GT 1 -3553636651014.3131279658016719718488384023536545 0.5042612890950080010091907302640209 0.0295517317321427497309125288895896 1.0299971820000182226483313124946512 GT 1 -25123909075.9219220992389923798711934251209459 0.5580093671495178029275698032708978 0.0809979272200469134388264339103468 1.0844669011557040392970447969390788 GT 1 -132638269236558274158.6541226804640656344309608204160488 0.1671209170977211307860471000878349 0.0778780067240452026001580436694591 1.0810777504299110876365157623431902 GT 1 -5193723.1962378862045466589263940352333974 0.7766938086953650914446577471453179 0.0933871379573544266108767663368411 1.0980397534564065119856951597735167 GT 1 -220745640999636239991650824375246029377.5885090781545187872596492427554141 0.1556800007845875623553083105857285 0.0197284769086152877741929298812464 1.0199256813138023893543625360505640 GT 1 -1102012256447581480534476.8966900094373695408216887497955230 1.4752080054937414770515547474695089 0.0083016238072415702452174911593028 1.0083362741890401893269519285240771 GT 1 -36079877146423649204.4850358527558191423842110066443257 0.6188324272652977921898740699544315 0.0270920990054198672469461618233934 1.0274658559579983496043084754407706 GT 1 -145.6200843534418918470941293663973256 0.8558420484008742386400434288378634 0.0990025002043656681657057013300000 1.1042527962992537549053275092081356 GT 1 -492091489554139.0194701619506159557966409627276532 1.2054473739437551811227581274147713 0.0970714778997494612189229023062188 1.1021118847333158942946760611932891 GT 1 -223683.3011490284117473977104904455539961 2.0725071896496156166232632003299007 0.0922123148531485967890126323274215 1.0967447546534031761436294328419081 GT 1 -75826627419703274489919423.2710868686543890295384138794045140 0.2272567404081476895733811123800496 0.0851981971428493159948828799466096 1.0890478460690005042317879111293841 GT 1 -21678301473395954815280445961686666159967.5791236446887624340979319851944694 0.0680316349333151675611108738475349 0.0338371552375412697115405010154292 1.0344228826183638086148356773052713 GT 1 -2281482359817.6415464231151774070238406089654633 0.6358312838773446852826309920646482 0.0798266394285355712692714731040821 1.0831931912870060710698763043941517 GT 1 -76187143278295632502702.0398527735469537729221883928070468 0.8731733245072490525280108335837458 0.0331406449661762981289089858746111 1.0337022387462122537656878131462821 GT 1 -24973582558502589547550939700162916.4028212333523449713142587546772785 0.9995122149407154910437256380124094 0.0262643711232407503406274644568328 1.0266154404408659693497007057366339 GT 1 -57851.0128383188252398209918767929240590 1.4445741817686834282393442783042713 0.0088329084943178887891351325072776 1.0088721498784854827380435613116104 GT 1 -135194826146893266924663579346059137245595.5388547672408193579381844452205799 0.1168858822308199147302798530129551 0.0702715994428712738401508594334084 1.0728627778992145502145263478758497 GT 1 -59794733726860435502898629519138.1144763477677449949680367990055064 0.6782216428943671105150834678402587 0.0374334801020821414677819560310682 1.0381521036260408138596243128642495 GT 1 -489889282256107066288205377319473665097707.8770016999931808512523604087065357 1.9184670132074775407720771102847617 0.0247571810202583108135830066135074 1.0250687938834473499589301845849918 GT 1 -13419057908524.9413125959776182540240629051472187 0.3751662219463909652972629636027670 0.0110585012292303009958493116173708 1.0111201010090993254755821102419181 GT 1 -2087.1722265699678929083293515654717688 1.3214689659409482433411834656019814 0.0545121962737151352178777623306674 1.0560542902515544440976977217813772 GT 1 -13123874.3153216531363670217059330029255098 0.1385764232016877797416209421845187 0.0779257573172695167134082268347799 1.0811295351503263338832572852568302 GT 1 -3849700558694603573208478918541132347.8341968092722590417916326339386567 0.4635956488762304538339323587226596 0.0945916474431881337659313710795911 1.0993692187557539650158086332292255 GT 1 -263082.4227559916417708636369222512998729 0.0770142058631606580375976410275841 0.0469343024485501600500284012170220 1.0480714400844538234011612542487139 GT 1 -38.3899287774533165948659500742770686 0.0448987488478715791714781705612881 0.0442927891927340196434315587197852 1.0453036776853476806510458371985365 GT 1 -1774810089527079168750883334235.5470737094443434370014922353350263 0.5413371329361115658493390644236115 0.0755960621673113431423120110151673 1.0786061407113993457520872072316248 GT 1 -12412092230916061519948237.7993356293055147813557665545535875 0.3616543366684272635528113803099312 0.0951343601795496935855578259252436 1.0999688105909193194358127566194598 GT 1 -5625998709262509618163493418835801588663192.2704639761277385895045178137543426 0.5591990864834281805955872794301939 0.0597025535811700970319220890144524 1.0615590214117906081418953534358263 GT 1 -1168.9764388728637925830638742603161742 2.6024028145209585758923951144384854 0.0940321291298374121731112709355168 1.0987514361836857283676667094650274 LT 1 -117115256870699495.8862800105854640073729422492304519 0.0548535158406918599573467480434822 0.0500770417853715266570430282463044 1.0513743942922394582390988860276646 GT 1 -9101747724097432.4983592197722125512801028022072731 0.5849316440994998469062629538244108 0.0485820519065719116567494770951596 1.0498018302329201420205511829171924 GT 1 -71138326719289995780524775640427628.9458739077446796566943901897551831 0.1441787073135815191753717920331687 0.0780331501799412502959645619519852 1.0812460107139455689672427631148766 GT 1 -557188721831480162736105945340614802223.0527176338304700762314734641828819 1.7278922853598324840441577816413399 0.0287765344531641252187569299732868 1.0291986975737728123001681218719210 GT 1 -7067542151114706.7113687585199333879867036602439693 0.3485568544108229618393962035531153 0.0067503502105835599480526554722258 1.0067732368780607952786629618456742 GT 1 -9052814331846636.9759798087665444396681205728103835 0.3635868644581110803702601906111754 0.0185889870433817892850824345722805 1.0187639337094329344290364317700570 GT 1 -18375049218718456.8362218886708497366522264780399072 0.4085505327044291350553737804125553 0.0700168483325581472304813908613366 1.0725888094855626201700900058496142 GT 1 -249862040587464895482567094904845781597.2418958612409252694147551081455518 0.1139009638372712313483715128400684 0.0572281882155732377625713481672754 1.0589310067714263512329374050938012 GT 1 -2116867659577.1398423737358417881297841524642642 0.1125667901624874583416718039293399 0.0481962757482254308362218357558014 1.0493964374515796190332688818662506 GT 1 -65598209377488141442342.5316303062536224296209463460250163 2.0056403226103835301880351050770600 0.0750928997744838403863684622084994 1.0780619787019929932670721155750661 GT 1 -1.8966206002090873780190435941371208 0.4598504585970855895908748181571798 0.0418924377262122367088818980904012 1.0427952293663871080407572418333868 GT 1 -23384174693488179076.6464790806606316745665055370057310 0.6303352056945309961991507534255181 0.0395989347502812488350346325483329 1.0404043054626857330243895891888628 GT 1 -99953230894988959.7987066521333925121313975136035696 0.6681267025618384776233009359037473 0.0496504782001724659348704429461348 1.0509254443686363746892962715055140 GT 1 -639420254340681767876644584575328711776.6845653943262119097898722426260416 0.0964399355521246760446187981754232 0.0237885482309330685112393943208189 1.0240760646318380419470863757069355 GT 1 -85238290924.1451043484736033552440305419344033 0.8119768697951412370327655970364793 0.0208909042950114892528996251275477 1.0211122068021340143346947486481058 GT 1 -483905.3821472736423291759931172396743450 0.8908067974882128881315352061718671 0.0216970554524734219693298814357591 1.0219358976617619375613545947228136 GT 1 -53753281667849266.1495016741006826038951439439368553 1.5928583083550661215614117924170779 0.0304001136958760494324141372723999 1.0308717809276921575316062088558089 GT 1 -70274387400825207616483668789027.9498441065751613259787684281936306 0.0885551157047270918785967955731226 0.0328909180636860996064533991657040 1.0334439854064944748621511420321734 GT 1 -1624733074187300848.1419713427144411497981147881814324 0.5096720864383728010626814350740102 0.0622407776735598333790687735467800 1.0642620555428362996000760332572030 GT 1 -1066147914487700714486270.2677160015493025671427050560728636 0.4155572846582740108894056556830299 0.0015785879178277186382578912286391 1.0015798352005379728635401028563505 GT 1 -21250528281208607082247939450307542962.4102339704699543448148385040440949 4.0797097471997466737878596729000344 0.0115068934263448092537830505951008 1.0115736100187906904128158398822400 GT 1 -2098146459476320473153039269785.0405073537081534919641168143633269 0.0208849084008323551359284023363666 0.0571541763842103417757716940752646 1.0588525053509777721117196562442142 GT 1 -3251163050.2175422953786419386340021034126620 0.4625029826709377588880696940287336 0.0112244418157896073702786829510302 1.0112879112490577249885397708335891 GT 1 -3064409428.3591035899875271013512115026513709 0.2397590582050649561567239827232339 0.0378301110707924538003306632046410 1.0385642441898142327156367984457005 GT 1 -1592727788320874037.2760649147398813348965253755446853 0.2452165925659548907353820372447186 0.0040801315747256130579195385136157 1.0040884780223649843848541068723116 GT 1 -72635508392024981709654.3838449592278208183750112451800392 1.8605208036952653145233558861915988 0.0439561247640953919628220249550288 1.0449514723856340402963526887627513 GT 1 -1871641712687868269073307371624762949444.3421276241937110378788023577725323 1.2523713085920793767561256469410942 0.0991046492640597567245949770537073 1.1043661760263261838012175375916055 GT 1 -2284341578873686.9728983444117560481877898291241773 3.6939238541745996764117495355284269 0.0979594627483215338743713207959615 1.1030958184086454469187461727702442 LT 1 -24444456339991370704029447779112827031951532.9102547534507912675554725573563441 0.2433908629991129619186579292352869 0.0365271962201386741086017742384895 1.0372110180130016717381347869541867 GT 1 -3563011548568700569.4751222794955647097328134992417259 0.7905377320837635180231897745037376 0.0844803836776238699950858134820931 1.0882634882021203207210186765111293 GT 1 -25492076169244232572015584696172814469.7154232004478635745230834010794014 0.4174501979040718675226822398474094 0.0737161461928902813103032731539894 1.0765745537203338090119905762708381 GT 1 -53750168291032292.7391869097290714078006661531469521 0.8237176500686275838218513453205469 0.0284147723407189738658929940944832 1.0288262861079488369598092961302171 GT 1 -430060.4237577345651101942796101094347987 0.3165203762954134404226410135625773 0.0637062030203880073654058214397071 1.0658259660943647588745022324191365 GT 1 -240648720823768459042701182633034.9303505431352835815314322367367198 0.5826530180438655171250440971903477 0.0139344139158619458157140769374339 1.0140324092649688908708566768647570 GT 1 -1163882423008262849439117238022312570211241.0677413469363615757907669950157849 0.8178339729531010121433185161250364 0.0983834691385192624851999044765197 1.1035659813963933953555500647174979 GT 1 -181030119657895110915.1846312474470048064201113096957233 0.0094603284076085617126051890882326 0.0981717919340614470587870631693064 1.1033312337483387359029869673135957 GT 1 -12308314087977335992173044474316.7052363531887546488476376205650734 3.1518654614698854202961361021821710 0.0478382067713160426232983308686388 1.0490203077603185440982268908192315 LT 1 -4238648222942948598559589.4048491382829917249674762453004014 0.1068610635672756746821788094618733 0.0270722627272026107947996992192654 1.0274454675163151596190118974121352 GT 1 -86416537293450582072537369301103177125727.4933918857789190070164517767581211 0.1522158820368613318202839342644914 0.0877896276005484428338848590348378 1.0918846440177566648844881759083406 GT 1 -411451462665912655283727734137921785199943.8516604967246302876755591687983938 0.7977635441121466792346198259698004 0.0273045397091603457091325415295818 1.0276842362392129103391866664563669 GT 1 -420211789587.9686158963065176009837805347557403 0.1576753140850261495597979285813372 0.0851398625258157710074923785627291 1.0889840806096361945571714359649751 GT 1 -6390590847828438350853.9284331827948241997380016883106616 1.8654775691688338406485174321298808 0.0803060039482028114431582821948594 1.0837142772541965207811468499277865 GT 1 -2072788347064411.8844836291798865758812510594491937 2.7738682339028017007516865984754205 0.0168103072127330044302848961244575 1.0169532041179852498514303131383784 GT 1 -173415989565320656944856163451586.8575228171701964126880501547371354 2.5102273760577345141016686745063275 0.0123686825353184541157466032453835 1.0124458113368082010055885800083435 GT 1 -1475.3071452523422895117670935111728279 0.5997659421021840056335367781922518 0.0767414461676634504979667378915783 1.0798459603778570697232186804179247 GT 1 -79963064911714462286162722726842.4361210032209207270073168609269483 0.1310555786094165167859199552649769 0.0601559559523671659418426645508799 1.0620413280703961516567618426784541 GT 1 -81614.6387010443152707324196673974725124 2.6865195401777098554193571863823076 0.0257742966344464771519800504302538 1.0261122738830680687143130765703478 GT 1 -200154228903114319457232217609761361552.8837973281426001185452898511067390 3.0379292682316742669379684107524915 0.0471567719933657276192566071535553 1.0494715738467628385181231574347353 GT 2 -162181272.5955625112768269092785652361862262 0.6154021501169312046362420050500074 0.0435834374249058605660010840242354 1.0445617259244379266075942227503477 GT 1 -298210450646612724458136987476584110.7688760018033201522237727780311797 0.1819554640626675532091934181825410 0.0370791898972133480533955398572139 1.0377841030649912025641604971107229 GT 1 -4354869693034239045293.9500928945634749869957082601733515 0.4288360437424940339648853393692986 0.0110126868175678242764866954648649 1.0110737753664434318632394891363650 GT 1 -330596064349351.7505688613474018748869781055694302 1.7118678020807898912090475761172459 0.0681722768816612418733328591112835 1.0706073278223052462370631329588964 GT 1 -3477976883430440869622204701226438525.8093547482668778617486611739604310 1.5620841581527675655373288177636519 0.0927422356635392308541462723974651 1.0973286748253177968231297562914978 GT 1 -458126.7189681032287366334772823890730507 0.5399682991323723246429070781144833 0.0161000679272722313637885968128049 1.0162310821492165115883192967713887 GT 1 -1489492426014.1905241547098524142724751759514484 0.3444091055643748281933969143984135 0.0787754198823864587515152598993129 1.0820514286759811813226548592304048 GT 1 -348660325304431794860366750319021626.6527803136348454859228037102849083 0.0623079487392147309081327012845319 0.0558746203542074523420491174372685 1.0574963042346987561697731195091410 GT 1 -12638690913446.8244693861496159982015567082555062 0.5253100109992174011926722646972781 0.0101509815668213741281593825612886 1.0102028541169734043910210854885194 GT 1 -4058797279648776693726789433803603727564.5066786189939326041728070662576045 1.3802651044926449578442186643227353 0.0346828615232586810228489398888216 1.0352985907252055935910813621017922 GT 1 -25216065616990055538700427.1188455207041808024238040855495685 3.3643910082510493496217458680573152 0.0547707698034961496393014135296166 1.0563278092676248535263109700971518 LT 1 -139278518943.9993521053258195222870595658615443 0.3436024176677840413107716524238611 0.0131475242890751387130725210291563 1.0132347180848329942383794235425450 GT 1 -42427829534969488758289244811950970.0753844203902522839972297764052387 3.5039565924162277686342274024046347 0.0390116838552976310790548067584063 1.0397930281037534762033833957514447 LT 1 -123393997430.0506604858717322092929382691011954 0.0466651871513955802417881697021366 0.0324613054339890337901481704521576 1.0329998604944803447423715078592525 GT 1 -966504214548717160886001169553891410559.2942660086291255766830772063828531 0.8205558817592380844167207532641471 0.0699208431800378274212779791520677 1.0724855815967252366466754126268910 GT 1 -785255397415.3094748773948925882455756851539935 0.3910042557119794527681901589295929 0.0931415136118998311807384946984726 1.0977688648678780550258652430631763 GT 1 -327.3172697878040600880444622637866912 2.4605048665426115704575365760922944 0.0116622604647785789063933894660624 1.0117307980139694283196008782108393 GT 1 -87495302602.3146349177742733770207150969261673 0.7927601949843206184624856297864931 0.0646109113777174971013273001411803 1.0667926986907341894080944056592398 GT 1 -51379875147591318699638898345764273381.4180209400955484196487625630085546 0.1552417382348122558471134915758668 0.0140490052215505567855619242697664 1.0141486266506943843585259770793032 GT 1 -43521007301986041010800654573040633297.1841582830505373444800706931978814 0.5568117694349884050823574427513620 0.0160661128879870158750703732385951 1.0161965720813870515823088675610632 GT 1 -40836346517640797164846.8355425265508811899394708248524644 0.8761211193873317646521568585851354 0.0432684033753990877007055424039816 1.0442323901635463145584952927066558 GT 1 -412161.1449551184286595780187194342108640 0.6942698331461166973872560363880686 0.0716376192147610237098700763792352 1.0743331258840480502835190657409649 GT 1 -41993999345613125775541.6981391407309820523166127353997447 1.6967325822207163188457038338116234 0.0256415219560933395002870815876148 1.0259759957793809226614251596072204 GT 1 -801212747594557141843799.3720423063128952347305598004504310 2.0170567342054800596095763645816997 0.0825455164571303453569772204118447 1.0861523095015704064613209604120646 GT 1 -6446773077897381685810404.0954132202870512882686657034930878 4.2733665125244944222276697176925465 0.0979895220796184860805869987925075 1.1031291426672688839912932287798677 LT 1 -2032322721822327873364.8479445239016021096878166202048762 0.6881188994623771169415006029715061 0.0481722887640123770008097113142816 1.0493712361612802946387746658349691 GT 1 -337614821707240591757826274877690946241527.8630702952541078979469592055544816 1.0038647291615989091895480177424732 0.0396725181135202804598286945706792 1.0404809257257465833903076161551905 GT 1 -32.3640254219261338635636984816643899 1.5457967367342543058415438245079668 0.0525072982074312622836906410870806 1.0539360446488157652021542212583109 GT 1 -25495710.4439208466672681678232396402535923 1.3439824433484328451310252418954342 0.0147309962406307425608066395468034 1.0148405748318178161639562030040227 GT 1 -848734516083.6565791767315928761114511529364303 0.6386406652428677482165659592998127 0.0416622792064487533210066508525350 1.0425550362099181204762775585867447 GT 1 -111318763.3671898590267991201172082979531205 0.6018286467868473525444099504803646 0.0381278689719506214040585236023742 1.0388737570803298348744665637303094 GT 1 -10293854534614922.7292233245524858856249055805263409 0.1400290887040766122437920040736745 0.0746169701660246559087108707816094 1.0775475408727862131774530218085597 GT 1 -2241.0345297033654137400815082083733279 0.0898609065089072815566873045122321 0.0423519379063828399226288140076289 1.0432749358416155964767111492362672 GT 1 -33138254882479531.8792394222359956462220640499506796 0.8087959118114127917444762506568812 0.0527204127601367143160884669297622 1.0541609946914543527391903338211742 GT 1 -6457.8282247974464475337353901506497409 0.3644592706667741354520165167538884 0.0947447992525504682920707689403171 1.0995383852576676772895438263757343 GT 1 -3911701432941832251026.1396865588791898361971887973769036 0.9937177405827258800314392353628921 0.0206454580724727682528961353598564 1.0208615549961903834339526435358731 GT 1 -857662630292186324265503693690717785.4973509091275898118664404344109012 0.6569155763326409364693078723220557 0.0457995606722780022789823212248964 1.0468815254855204197385890716810988 GT 1 -10108.4614459477681868460445991430940696 1.9612116842626346481162443920272846 0.0040205691736257669654493838803520 1.0040286733915385404228653424937506 GT 1 -2044860.6651674012745412523325998774649815 1.6027945652676427900833422724992886 0.0482724540599587531540858796115045 1.0494764763907521958453469032005403 GT 1 -21037889353230797821468594899900.1709767542713860942833400128051313 0.5512302561581139450345011775482600 0.0852375512657885298634336273189928 1.0890908662831428094448054758746541 GT 1 -9936534595734262571736215.1952194343240443352968069627218743 0.9542321625667513523861804576769699 0.0261325890243302461856468917877730 1.0264801129676436995895331212528670 GT 1 -50301975806651100017.9489962513883829012407674254280127 2.0721476705063118306299808469867262 0.0996794414025370459347089740645025 1.1050044028541149923884155034928236 GT 1 -3.8040291004672377237793644753715412 0.0276284360037164641069438744534050 0.0472155848201155023120782635269193 1.0483666179389227366688785243339284 GT 1 -862642155986.0265094531655340304591618945147766 0.4348731037629225682234778446374700 0.0644332862095294219417672561748078 1.0666028222986861534201734296052569 GT 1 -1145676073997353357264001.1410942348068352859382522842916206 0.2612345006538616875368626545194349 0.0666409486873549259717851675492046 1.0689653168887488714946724441128143 GT 1 -4095011702229347060045845124091713.0173633020302106751215287300868085 2.9261642800081614000371698077665020 0.0225287184919486240622145399936193 1.0227863670856083438516854488377357 GT 1 -527048302882691764629052070708722.7296350614518423576970589103271046 0.0097805100101014161325814411084142 0.0627890659755724700611845134925237 1.0648469057238207515705819384169958 GT 1 -30095923060169843741253.2962772286296074205739252703538343 0.4813903780357368078906141632662580 0.0918281862702887603588091856200880 1.0963216961118148785596814165674761 GT 1 -2767104469454756322133594974774118.1096653600893261384172506066270919 0.1865032434904470268183371052628254 0.0631023662096592512894378313856388 1.0651812516015205388385260652470725 GT 1 -18136884923633450806288676.7340014119340616493840050613359862 0.9511542554171441275319211324743147 0.0251241075512152038916590141135329 1.0254451058824416759096328201513687 GT 1 -250.1042123158386586781209177955163115 1.3205483780420777280175299938319367 0.0247940460660788171316039127857766 1.0251065954871980864079874925469184 GT 1 -54652386866731457118432628198463527.4299881485142949290544660363993588 1.0268880223003749556239051266659427 0.0226392504959890076936010908190493 1.0228994530207727608609965132758593 GT 1 -183010.8700543489032448854634201854494450 1.1438394138514003569701271549555964 0.0510375251382537900295398323672783 1.0523860229224499792615572187097273 GT 1 -2051605825186414.8385445398689791084809865187475651 1.0937501952674811667803197369234175 0.0088035832845413645830570994608769 1.0088425637711373121813572811659811 GT 1 -21970690029434291350166551.3576792213796499080938313789420867 0.4431937878482221429787359463637470 0.0527615472116330060724404238824220 1.0542044194048998291057120333319791 GT 1 -266221951210.1326783794698005620226929200848600 0.3343731363466667857831358106196031 0.0195969387439590282240003094868220 1.0197915048768722567630178567866579 GT 1 -2140991750546694946669722289826956510814.9329602927914336699668127464580539 0.6742375307462705896882635527170530 0.0993363998849442778022859978782054 1.1046234538934238820183322578094932 GT 1 -4710284862608056.3906405813027121542837188556474960 0.7948088048084672529492524051519316 0.0058504650748812636447275939741360 1.0058676460897352950385352568905907 GT 1 -768837011820494967001824790129.2936319189912684764341423634056212 0.1496733911721473417812893661574550 0.0872673696532818776953676692530150 1.0913122886502324097759608473606747 GT 1 -131609.4049324534418161768840196316525230 1.2125727694553045519171035157015633 0.0368543080138558874785006786611492 1.0375505889219068984277817276076822 GT 1 -64702094619098916521445772725941388643.5898725335163315387489548755240967 2.4642631805229605737582417500343151 0.0673216186486669673803108953057921 1.0696948520841165724622030038442251 GT 1 -604466273.5102694607475464297688640336261000 2.4627974155403156238626690750792653 0.0644000268036773486355995659430143 1.0665672729207639387259902810768930 GT 1 -4598735469899005628.1793183745516713367686774320636264 0.1141638801220852962552722645951330 0.0087247864767771718908842864008848 1.0087630702675695457255027345585642 GT 1 -1241941559409759647585098127090.8807955051011957305669360749282018 4.2806963573376527304564956354574094 0.0591865173391892073519905873818301 1.0610103708809279492731894089685790 LT 1 -2805126434577738725874707446.9716025758432003665310536193933837 0.0587089914099827448137777246067077 0.0705602772610732814867144141092667 1.0731733230477729139135873513089173 GT 1 -19188193256.6779622185696564119172074751405403 0.5224051958812196837680644401821637 0.0962567843536581535036881943218651 1.1012100124293540186598664286973238 GT 1 -612512075697838880885996200711095643.2115782704033886473116229589406079 0.1698051560616759395456404459186722 0.0752474278421326511032151545218949 1.0782290668104872530348270169078847 GT 1 -40643782.1713342183525478296345663014940185 0.3027136234316999153348387131702940 0.0611481055741356334641994143438273 1.0630975391300846704949043469374646 GT 1 -26256675.9836560331996946092243912369617780 0.4552188095839555996813400459199247 0.0887512737166693072889593094691408 1.0929393934288817555694886957501241 GT 1 -35511375538.1492173805809601037166214060730156 0.0923386893044818095582280776956440 0.0676615472959018259938295340379830 1.0700593835401248550833806074243455 GT 1 -437553581445192066611993182370320929705.5980783073149202599266968664563559 1.0577580272923147059990369423641803 0.0611100161957901791614265047058145 1.0630569697858182680718112531855952 GT 1 -11261990098.8727389857435468125716227750974642 2.0138611683269575722998225106405896 0.0638009776306886331528471814056436 1.0659271943708123133005808744930973 GT 1 -308852914040083610.5923043192497701948719733342299176 3.5197346432883153861669501255415017 0.0870079574890032667212301739137325 1.0910281141852860554177367508809706 LT 1 -52068441331708470.5352881545174484731444012247839144 0.0988643861877253253448837120504134 0.0007162586560962142989342038692399 1.0007165152918798156146649828647821 GT 1 -16760997685536764345298708990274.8819604732551274852918926404467386 1.5536012665154712574274140674944189 0.0352314011208015345333077819737148 1.0358670003058735016188415879521908 GT 1 -2521330300806214595438348159.2675685115714817434109223126533067 0.3435088847970016087407106884420412 0.0873356031141826767841157270588664 1.0913870487817705083884830183082237 GT 1 -4453850435794503918845201638.5107434154296231428479578737876199 0.3054343766836062395008201173202366 0.0775726843396542418731860015360241 1.0807466967836894488185354425564751 GT 1 -128202104492131489302233324410.2064556237658010563105552036746794 0.7105877469190104013512125873607308 0.0434380581573914003584948141259881 1.0444097333458923680352162390453928 GT 1 -77359738893398815490.1403323856963868945391863094798616 2.1533348425808027933991461100149879 0.0967979146984976016259671592068411 1.1018089573567211748606175033207296 GT 1 -7796246241.6684154162901597894552874385641400 0.3161093821594981249073568156882613 0.0686161622533823194408983098006608 1.0710838012292358473988219663172438 GT 1 -2212770586694836843911671260936.8322232003005085822832421881198847 0.0037211016610857409780980721045797 0.0085893079050655526400709277554759 1.0086264086092215639914314012017534 GT 1 -22814336714418050570996039182522405991907228.7726779668664273247069099179957489 0.9882860953661759379528266817540560 0.0120810785482601515379482844091510 1.0121546479096023391154013572047147 GT 1 -17350707894220622179900802545.9624756483231771509983807976136881 0.0126476938795685620313688992074916 0.0466256792701492079490507893490628 1.0477476709879834589728087513534473 GT 1 -1405773876710604230321376142.7744137546743694751318138140133226 2.7201808950874251578744097458150456 0.0891404642288542809599008837982360 1.0933665804695296318390152696862476 LT 1 -6810297573619257236802747293129.6478067992831066431533425827464198 0.9943665715350008483109108967144455 0.0874998925577076339499234481801580 1.0915670757805194797196051954978178 GT 1 -1063229114818863.1857227935904882106752250559066652 0.8370704608406957753027879839569555 0.0545670662709288088706661973060918 1.0561123254680944178546490372222399 GT 1 -3622416603032490461699421123.1279811274396138852428654075618564 0.4978314488412349009954701826384984 0.0965813274068580963177557224958894 1.1015691867333286491614669384920985 GT 1 -2674394861481561373890948032213202.4077358013456381435963663818312838 0.4473634619552760947025189470618790 0.0348487552636343129211056301001330 1.0354704596273089012505452616483812 GT 1 -385.4901615085795684962066329005019256 0.0745397867096099803120038285192511 0.0561369411849691586903801719811000 1.0577741881741402347818103532585073 GT 1 -6198434448717685980636401796433753653049.5419509286992440588476893186492422 1.8561510300079543011897870002823853 0.0607018918913724127677293687396866 1.0626223761339910911927776522033074 GT 1 -2767829149379880951.2644576466752314584568461581841135 0.7435033796663638462393258822808732 0.0697221863423426640777990641084646 1.0722720130810018831427034297604353 GT 1 -2488539880197654873075.3103917430938470109259988292747654 0.1051230864962445090797992270326528 0.0286714737315455585488443758472404 1.0290905298416722931101359399128968 GT 1 -69743823194795144510018443697932427490.1382147372065272767031562740048589 1.1999674024544774831825556145210453 0.0540344989493073171655660229142652 1.0555491788291810672269275309702986 GT 1 -12548975537802735958036516989.5918155776459448437024762377103107 1.1001994495904384864216652362451211 0.0395677525476871404636313066960553 1.0403718380930387711891720345667266 GT 1 -1081089134.1737037955116762728510199377435761 2.1314368888026228484928850152290535 0.0503285017490630697434880907170180 1.0516391455019563141832030526961261 GT 1 -95704803460338339125606348235867.4604654038765395266593284834766163 0.8998456280797200029775226661132709 0.0299866353642386492656902397768081 1.0304454296046122700156099863728069 GT 1 -170866395272515380726965491456556949254.6569531186242554249628619122402459 2.2687788392949703975127804088354756 0.0870177609367696695892396153561179 1.0910388519572967818962562806806307 GT 1 -223419836462224699327314189661696.3581374475255841800328341500333637 2.6072327614605569782254387654417865 0.0427139294996797363793127664308363 1.0436530079553738147716481460598725 GT 1 -173.6069848852742560767251484830011277 2.3157656118240339686597980775840824 0.0815708033584897382320515726416551 1.0850904631539558702338757111817088 GT 1 -4274.3065831376045970038908851263565082 0.1125076474615700690061466948309315 0.0703550676159217589423113179256416 1.0729525588717904234140532266218327 GT 1 -44129768719689809252097723470925.6005059610924306960306925911547698 0.2074787956343163756089603047876949 0.0102326769505084286983157019610060 1.0102853906994631660260582190278633 GT 1 -14230805345671.3794077111510291098480676588299367 1.6324811430483755519387800321166846 0.0995260152452223023147085461593690 1.1048340045615919926878469721846170 GT 1 -184472.8775790536881427145174295077825699 1.6116082360409838874900837920016206 0.0320344082644797017187775843952182 1.0325587380650926749266709936307801 GT 1 -7023626278.2775167796970727620815259601157481 0.2870759638937188447096621290376151 0.0642529600281023285519637626087270 1.0664100954706780731889464956397391 GT 1 -6786540.0456622114590579096884347742572456 3.5533715509973244011584958169047364 0.0088149074630479801580625896220100 1.0088539885937094408815804569810088 GT 1 -23369805835607166906553834846420263202895596.5860305680828909074082969586609990 0.2926235831733093831470027940389637 0.0235745876573359078536426926311954 1.0238569142323081070376829820278770 GT 1 -1207562752313287964.9345060784238738781206182598100118 3.1628024557685029166618930198639173 0.0574847794239376311030409673355392 1.0592032106380465643119780513627047 LT 1 -9415835498242959088973.9118876810457118688683740213691994 0.4855387418654380734818265454258577 0.0635749348004884569425137195488469 1.0656857761034744104423669960936038 GT 1 -16426736679456462710680.3501954267788616740528655727435887 2.3799122685321757399572280108932422 0.0228714986080462079582139459133986 1.0231371090867182316069834153606686 GT 1 -5366849577908184762.7697084216615485435134030268859321 3.0742150875510685200106524865553097 0.0917362616415264565269006079058628 1.0962204818091823383556662187820059 LT 1 -135429600448860610789820994.5689357710280008588680328098464042 2.6043513201746485370289452845373184 0.0302186236824532232772737810249537 1.0306846181274212249029490345672006 GT 1 -7814480984997527456785747303.1796285611518072006300844052970559 1.1734715533606416399183236824434641 0.0261335771063726794177014319313558 1.0264811275642228126904524556250958 GT 1 -27674536333212058037053520592.0464660671376566241307905995198191 4.5428299665515004009770080884219005 0.0076192944344815564228481877078750 1.0076484695486578464877330769613928 GT 1 -39547061978928879886602803871912999366169.4388962128735288422018238273765601 0.8631344122258448563677977503139832 0.0990163848553308993898803085999801 1.1042682067281981958439342186753783 GT 1 -6615703809.9847636286570696211265589074566083 0.1656473723256849532617668731265830 0.0837957146400449959619654563988549 1.0875159202211204518181948898363322 GT 1 -9229593589807478455394842934331849350.2941370087445650091653899879307407 1.4705810555963781694501997938076214 0.0085267286574510384341424752979858 1.0085632891843947023625169722801167 GT 1 -51863551818591933173488685702.6974300695409084569894036157633304 2.3254179111075902078403934043014354 0.0844837838410857978447068639210749 1.0882672021255745920628408730418815 GT 1 -2.6257548280804250427959852570876567 0.5862486997579927624416689122071525 0.0512440048624169854937354413330646 1.0526036313066673301949805774042875 GT 1 -5923.8345044337448991896871128070909716 0.1964599310258762002656020717378623 0.0056868768529766917567396484695935 1.0057031087054303397941189336643235 GT 1 -22521692.7781615302276513348418664118624442 0.0264309926492829782837982720260418 0.0374292785947701904432841887184348 1.0381477387348301346186098593085807 GT 1 -5398101172625187068817700.5614790869908089639596520856226946 0.1287483585189877871817446001549462 0.0326400540600734602370657581398859 1.0331846232751768949633979721257284 GT 1 -2531760127060989277.5071932918044630458046178407166762 0.2244008739467800694753426762693405 0.0719382250744164640971684419194056 1.0746569806037337904907047379947512 GT 1 -313645760411416.9147724242601183565376542435876212 0.0415066851428623172542706013486411 0.0667023225881144197886209143714707 1.0690310749896757042004181261394198 GT 1 -524137793906392468612.1224504971993319438450617466363603 0.7996887248563513026912095561065288 0.0569799470414015931340248995459688 1.0586677315073352615395558002866998 GT 1 -17204.8780729414111908000096362623983174 2.5953739552374718695176436248088116 0.0828373217407742822412204765082902 1.0902089865261295206529572326171421 LT 2 -927655488353198812.3345518513208590139686901180198380 1.6197398722064177436678546190998262 0.0779331803819085909411014855160020 1.0811375855807308854904067044432804 GT 1 -3961977461.4404607010436861982265720171960579 1.4442858027874111199928605766589747 0.0867439567940683121678834042117447 1.0907389960760448511146922314569305 GT 1 -7138140171067547494524911322.8088926140612738742532582272466381 4.6348924890729070218209901293319839 0.0896685758254084197796288155622329 1.0939465433871719523502198644650292 LT 1 -58067224324370783128236170730740459.7397758049290655759027356806733332 0.2078637809550802848542304297070602 0.0599602382851479093409163516616660 1.0618331049160432522663839494114938 GT 1 -8762035403793873983072.3479024442622393601220225562444663 0.3820261102227635271870849695126225 0.0431158073892590573377437115743883 1.0440729057076572360879862277631488 GT 1 -630864791654140717019333195269.5117313410426258554111444858635405 0.0106041291037596331150536751599519 0.0815614301015850711582677962790892 1.0850802574580691111490529264120623 GT 1 -75215049784.9912006730329260621343342078629242 0.2402916723616424799791701457337861 0.0902052812630538930463422212635641 1.0945362887246488739750595020247510 GT 1 -539887864491767849717061704446.9927301231013668161261640660343836 0.4006546842915247702816271019471496 0.0711947190685030185825971014124240 1.0738561628571934770572241487138111 GT 1 -12130733739392360084945532296051106.1903548955176919529026031261109241 0.4947432514427192769817715531441098 0.0668605094013526937426034944425764 1.0692005817015310482016120607184654 GT 1 -31171386244760077847526714887938733344395.9934019751512734076468422374700445 1.7498228071484365379334191541773140 0.0574510749901498801511464627530076 1.0591674511824648906252494307424770 GT 1 -903972.0383787091899474493327027965282042 0.2262582432668887673937154622841414 0.0481939695844913796542830127994586 1.0493940145140753348254199837236913 GT 1 -123491224931374237598622.1916607935389896964163511677249414 0.3598097692536005394152658075214229 0.0454500144365159193290561440111090 1.0465152688653659388578192119916302 GT 1 -655866914194.6549012138992489892658922522629811 0.1951490570373435252553165063036122 0.0030134421772391514495752055482120 1.0030179917363046237073961978020815 GT 1 -28713.3978666776279749492541263012224775 1.2435266938237792751527935995082080 0.0217343381527239716119150926217386 1.0219740079535587170638294588541343 GT 1 -67701406637085671.6026628802642235394320569578143383 1.4177101699438413860663376918194810 0.0882657357086320444770568080931889 1.0924067082397947318988100808549822 GT 1 -26284964982377419466982.6874778659970830855707846958360243 2.1193363934209746223470470899120088 0.0934337123076874861017674234025959 1.0980911265933081918413411110366834 GT 1 -25971.3394392387568389134505273604058631 0.8941133391167706326636344230043688 0.0365216315772961195201216950535419 1.0372052424200101695228177387242771 GT 1 -47117779894942520647667853862368729.1745817951769853585599435625609818 1.8321391524686972678457035292320039 0.0964193204031240033913685765726107 1.1013898762051075729966550549143368 GT 1 -2408695964325346000557185257315553709321.9861646509947387926707287848709418 0.4926351739705923180881147619011390 0.0033098073158697460907483254246768 1.0033152968443049334666320384232260 GT 1 -1431663217367549690484855.6990280210521653375990590888404919 2.0246662135033890749084338461188048 0.0045324101117643387032874552911697 1.0045427126244029768282757826357493 GT 1 -106900759241880081573.3371790381615832594773250069309449 0.1684410354751041137354050660133325 0.0652675535365830212084065637701414 1.0674949441582413247119662796271717 GT 1 -922344612308586136534614122436.1682714455803524073590437806697152 1.5224665248516432107934282339642868 0.0977599938134039861342786624687249 1.1028747120663356503767209802324199 GT 1 -5.1165533652536222797975225136859087 0.0846508812920974038967661994062766 0.0259826712226884881601607503693946 1.0263261841453903013678527296040289 GT 1 -592000528387640738628760009720627363.9332983697111641005076133644655534 1.1323765640763263569556538565274111 0.0168247984042616539623406776526635 1.0169679431845443676429377046585489 GT 1 -93082759977969346425820666881.2800471250579614691489308099504554 0.7751568046564736698728496543428972 0.0752081909455804628097736113110223 1.0781866380945757628973144830222791 GT 1 -2587684475.2160648707904003935350564553112197 1.1543126429419822941983449451203959 0.0236588644853355610185009969549788 1.0239432295454667127594019369621027 GT 1 -11495057213784723901608249344932.4093993041763165695233396311667529 0.2734507480303463609425515922296829 0.0249138793599029369741890833930616 1.0252294830234160628273376995561434 GT 1 -54207128403757162030535.1489950073037684731560341141412343 0.1137272116095892820492122739252063 0.0339069670149566347554464557946312 1.0344951419689495327060447816845942 GT 1 -203898852.6002103464967795339427000022441957 2.1804289166601088059992751103546686 0.0643110856920767419956500560386198 1.0664722142558389287420893613504697 GT 1 -4221575606582053533375558657327900123526.7016228524817582546674032046496794 0.5237268109634259700275429263104944 0.0912325898293630235034323477734657 1.0956660919458369890245865701204162 GT 1 -81299517616100912907663090829237129561.8589582283097431019856898077555257 2.9876747163046102500217231341126154 0.0211456416561694036869252619353055 1.0213724132549852668239911611910290 GT 1 -497637098962288408247285410272302563298.2105683719051583555946462117658038 0.5433613485573231982896713972926888 0.0409790032362070208869795889901828 1.0418423099027236625067201573308121 GT 1 -41615780989202117889575760488739724256.9988401005800074171846971747970881 0.0317877515744531667552382904608866 0.0816643812034196033888218772135488 1.0851923573586186587948547960572749 GT 1 -28990.8210151644415242796405750773255341 0.4731710622817974981599643693590808 0.0368367794087535068596974639498376 1.0375323897587421376458225672580418 GT 1 -20369451828723207.6038764700565909752554390939908907 0.1464302840748974606179660675789153 0.0167031186463516742634256114647638 1.0168441888133327761643061356219724 GT 1 -70346125919460564666424082937870625.7821918415421462110519023477547399 3.2949771258548516278221709280806209 0.0849083615613805219988613552595289 1.0887310674223845824341317284908452 LT 1 -2572833936574.5016269100177463435019576448228106 0.8391070478468045838103439945386088 0.0538797725608808374544428331681105 1.0553856276893552054213174722364561 GT 1 -11338364676014.9967867786517213212133300475530733 1.4667119490916153151535435174594700 0.0408790130059593865728920022570344 1.0417380525211691286419274255930945 GT 1 -422510714.9342473942279640528685328287258464 0.1086715797904370287191616210395236 0.0766204118728059340312276954767233 1.0797148742789829290855334189957437 GT 1 -162044442295.9767130599181572135584736772951832 1.8718283765701914219969744421622191 0.0089156820034041810933715656956782 1.0089556645212170884598227307419336 GT 1 -205032931768026983069936493261.6962840723264369068945792636641775 0.7284657588839960577681441158811172 0.0535003163941437466038868821674525 1.0549846426108330768957571630546738 GT 1 -100614.7031377968234326337267906831005599 0.3423839041424019182623292496657236 0.0230471852961239532566074212221945 1.0233169242122240011217148176736574 GT 1 -9289450.3901632493859627018767391049279365 1.2339850729135956049878980313243713 0.0222611850713042429263000854604095 1.0225127050144052573706864312341494 GT 1 -8413206673.4208183458165117060126759923289766 1.6792249576846025604275196881372022 0.0994169212391136111746229032288764 1.1047128601420707574219771488670230 GT 1 -151551144049179966774971887349.7679082239793896216447714477876545 0.5326083459278080217649435858664583 0.0393409297849521670880889726619218 1.0401356986011749565881044746760508 GT 1 -26027978027834663740743216337355648531.5715453390101721975245726317730370 0.3212221622895851447938551207160993 0.0333045565312887661506136094105156 1.0338717830132090322953920480603906 GT 1 -91858406878739518542595537098248642131.4227062205212520730422486799768789 0.0410868840243401783290026253782247 0.0770621870011625783121708921174684 1.0801934216149047317479804062774472 GT 1 -733912376841970855293.5594377246236876276450773050053954 0.0011946795187117897506554185650583 0.0090025146326984127630250744242392 1.0090432821252962070953972819830838 GT 1 -19569215737416720858967.0387151279228296084368370279356664 0.4939791739557419873685539755676142 0.0262077481830592214662655076902604 1.0265572919124070958819560242884002 GT 1 -6649923893483086965000540525495012385990.5514011623547665833456371293685352 0.7435120490439052354991425166544995 0.0324857767934464455133062454785595 1.0330251531975728113041031619157787 GT 1 -45241475194279802197235.3835544347340924387752425070211684 0.3952727245304794249963387407241000 0.0967350650829496564121060563414692 1.1017393744472411001893127108167851 GT 1 -1307324872328762846125096619370324645619171.3715820701101630274158416023537072 0.8498513195891774685116504608850604 0.0508075184314074323649749838628099 1.0521436752603764421847603738462134 GT 1 -148614342749799498772722427956626.9206232853884116709537988631064049 1.6688675957160891957711629378446059 0.0706765401691614777545614423437757 1.0732984201115947617440080243617153 GT 1 -760818632352658592862158388635655281892.3342292750804999393929793115748149 0.1111379173214021779125352435750051 0.0122077370371901382569239771628473 1.0122828635011347955484290375991041 GT 1 -49362641714.6261260085269474242942674004899321 0.7603764563050844012299366392559153 0.0323295930295465827824700440132506 1.0328637383518744060526038558980105 GT 1 -29501644073642990611371046099006.2609733624619181714095149894427102 0.5550061781660894550768285478882850 0.0124022218202883862333846940354134 1.0124797712304196442789289584958462 GT 1 -2029445120144479098222487908938932.8534625299481879910349383858436200 0.6187732867447646357173025224393715 0.0719267991082956509431358712904607 1.0746446690355883473714659185476535 GT 1 -3994642050250382827735992593.6514090455428133871388153461608722 0.3987053362944950284913415434816942 0.0704961719251200386391376981018153 1.0731043534053643638672713506121206 GT 1 -586775826.9271395812191126313951807900816115 0.8716994957942193649517846748512579 0.0779891386964649049210909932491268 1.0811982753392507359396558739806002 GT 1 -211743944028166951325619668960.7710797682147959183358176756432866 0.3606786316623695419955265170325963 0.0064018441434404534079802426865225 1.0064224238266262769959796095246139 GT 1 -5010857532.6917490141691332285649115601908019 0.6658655725842176067462927913583094 0.0834852445995804093604399548884857 1.0871771121042956219342812259571932 GT 1 -6022726112080.4479333042060046709724741280967252 0.2571242629565325188135105421152544 0.0205447575215255868189404148136453 1.0207587368952828143673580013008049 GT 1 -211647969672646582164264560235884895426873.8261319844180445309812964529666994 0.8988661935284499240916499428769610 0.0788624570255319777554717511086737 1.0821459129710275784526869986567631 GT 1 -2286151709181411289.8776589410622872596276643539619809 0.1956477908889132195513107686596176 0.0377974880692746076086571209772471 1.0385303391083379100418284493805778 GT 1 -20571322528125305381972689056.7914135256119275307541803099416155 2.2531499413451651717479209748024009 0.0677237509819368611105353427979528 1.0701261036898701714410883475490180 GT 1 -6705805722849324948327782993280702183748.5211919953332037844059389381164191 0.8830084903225125629192229979515710 0.0522887896728530069432230681724671 1.0537054535929941494777493111383516 GT 1 -6320223350679800638.3301955800547480470971186660292757 0.4929535739385602605462432180712724 0.0069927680721676649359574278749508 1.0070173320552950442577388011749204 GT 1 -5054189980.6513464049641564062316667447291923 0.6916983539594801107766127661894266 0.0685095416527638997476688891752482 1.0709693323131544909214769761380639 GT 1 -448789809683219832845767.1863241355472799964265357973368678 1.4353129400729798040347494919331462 0.0186414400858699681635857574623802 1.0188173816976488388037658968108549 GT 1 -137851205674781.3326078493528951356184822102645204 0.6314333201633211336407792375074187 0.0649071278575888498553549663311921 1.0671094261316409498889727053175601 GT 1 -68750087604274.8680233329449039370196946367657417 0.0138400287113179304976789563488957 0.0573838377683495855985867093984484 1.0590961182023626637839327595500675 GT 1 -32892771915876703721925384808619881.6782760150164786899613520338647244 0.0129281514006027398002350803368506 0.0804376169104777308521004494600880 1.0838573926610448104397891267843111 GT 1 -20885367753441935757813611920929330.2387639827496286428648358007435611 0.7771974951849819519879576017643488 0.0956174898629896608901709182844968 1.1005028774019698768773291712409573 GT 1 -127308513359951074662710241254827947681391.3003564124838792696733506500505692 0.8922890782883662155446770430803329 0.0440786670304267964548294065155021 1.0450796570052843252429427353843347 GT 1 -10103325955948013.7263906384532537579279113212581758 0.1064708126795500847389633722032922 0.0480215181004521392763048039438424 1.0492128474929178713164264522440302 GT 1 -686657203246300319.7176651328266412526999983812059526 0.2142211634757601056944615029809444 0.0942584890707499202858450550251340 1.0990013216723456841880359163250380 GT 1 -1006385708.1112832580188954591838030743683242 1.7032548848106854094454960683383828 0.0338977026514578374129196944083122 1.0344855525000656917718035297556641 GT 1 -337069391717323270026.3288790210257597783186720631807321 0.4285424152947219480198677890801089 0.0964978561858623474130512527476684 1.1014767961644700849781432837109550 GT 1 -619569232368992739.2735835243032447392109723532981864 1.6485275997207578400735105949808622 0.0393458615220693623342029084524943 1.0401408323160683872280771745956862 GT 1 -17672910498304722641804951.3113688280245202534688202090517803 0.6949163823030124228003861425340571 0.0566854037989049929812675383962493 1.0583554398945807444317684420789953 GT 1 -32825412261.0447621523146232753786991820483663 0.8667905813942471085867931945398597 0.0935342845369494333543338099677091 1.0982020702823220330023384220414929 GT 1 -1.3306327150253582337352603179037097 1.4357533602949914415846094386113793 0.0613528082791920596013516241569067 1.0633155980440708088771089176321077 GT 1 -524292312253361998599179391057.9560099043424880839020690364893957 0.8063231445821846919684685500148081 0.0347370929702864635721835743442752 1.0353547722310367287677208619949771 GT 1 -13535174.8094678340202013937251809473624850 0.5210455491358134316408371068793529 0.0802216192979752465616820072431843 1.0836225284991152665092091154572251 GT 1 -5016501078622407266929329759.1822220017882627648937255431283400 1.5240992689169404509995817668551654 0.0423134456688181262127410662640030 1.0432347420945389146917600920626764 GT 1 -2920392284886793986531.9151986237706247779528213963843984 0.9943409196742160089168546595559931 0.0621696719974470249472572333781699 1.0641862333288189507295146363228690 GT 1 -3936061682321079091441708729.5095412800903430497776153303325387 0.1969953434906522450601258996748601 0.0803983964393213129953391912082425 1.0838147423357371708527249145084803 GT 1 -222504385277283573411715922958.4844397329093532083487808553804579 1.1599236234641888844443188944866778 0.0556674980131207616127291761017166 1.0572769481728753039865507627860261 GT 1 -417.4038591414084663055369553530345908 0.6380029912170162902872752579241828 0.0594239573386971583264300847420229 1.0612627800684702421512919897044221 GT 1 -1412317052779803058686.3443640544498438368964406007553462 1.4964079464868672177143380930324125 0.0368983348253540315846987531931508 1.0375963014430347191976388277481524 GT 1 -12159700130692170721527723848526390.5702233380988930918358810678491758 0.8661021519828770623025372550678578 0.0198619680703051474033990332382322 1.0200618683279436715633785587537046 GT 1 -417088933987111973610597717110196.2759101824652091132026683386841353 0.1176874479229734674009627040531876 0.0343397079386401289651228480506057 1.0349431711508449781976530557279669 GT 1 -13584.8561947351490875227319426833025762 1.2908141775798657423673100575867353 0.0679633156203476059396686517821216 1.0703831041487928331476262078564872 GT 1 -1363760905.0431563063182154609893371178978727 0.4580997267897559944563258319738052 0.0604360232055955074563668898643250 1.0623393658058911593095596444234114 GT 1 -417327360287451722188593234476357347.8297964411305918414677372524479135 0.0680539373977424502467732567666943 0.0808263785047398485889876271788681 1.0842802501012489326253761585954565 GT 1 -17170397831853138686.9095560768453847357719086709180458 0.8683054621377603703604146747422177 0.0678348436074005808009831067130600 1.0702452735659229117571315279817120 GT 1 -1847767419299996268203772574.8422157743745010290784906766623879 0.4285202792645427942789431897089303 0.0438269398425958583909089309394406 1.0448163570445814859751728889617967 GT 1 -315939107529698319523929119419741353724.0850885632897148027685230717525571 0.0829305153075088182663235385119872 0.0476651294813052010220588150413153 1.0488385512954405644755121245018800 GT 1 -3749993.3519228699894144347818516124017602 0.2416558745237697390234104879371936 0.0190945515965089408633443691060149 1.0192792069329604249488203332244270 GT 1 -19866929959453175290889276654377121982524117.0164309052738199959850972167023593 0.2012244316224852105401211776417058 0.0907040024928409986026218549543043 1.0950846079896847947680816608101158 GT 1 -3370237017082333032393185648493343845777872.5694659956160860416767710004601434 0.0047062805253905521737657476690421 0.0544427575575132668660565799391068 1.0559808507357969964948757122292175 GT 1 -54314198476.1628355414837329852620609803227362 0.0868381008801137811236332235868399 0.0088585369432944508401182652869158 1.0088980070528582661698995190431055 GT 1 -93.5734037824998083039068577506695712 1.0457900701958798749287491122098806 0.0325020707588153629878989069774079 1.0330419943996796726630226057424933 GT 1 -23352549382189423314.2781913374250594031156999491824219 0.1802269813534667081920951709601594 0.0345629985703834417215960334552621 1.0351744289269198334493826610627533 GT 1 -5094422571361230695.6810523408850834789443495793784818 0.0198712053019337136537430526698857 0.0410276371285158449939371269010490 1.0418930232089767096722729969452678 GT 1 -27.9415479504994134532270385029034967 1.9934475476213423670478987200911944 0.0198697255080429689151940600422559 1.0200697829972901578390054503383976 GT 1 -7170198447367.7054890787109973232113338329600639 0.1397154821847158610655174627946140 0.0621130399634142012290972864540448 1.0641258489261041530877287914355131 GT 1 -71662644877595877033538187979646091681.7614820774965098026829079676334289 0.0016743670668738364918873448582287 0.0410409034420727801997023464862099 1.0419068571898438815745909501363916 GT 1 -1364412405114192.7598636207890730255587078959584760 1.0847891734085097559281940533309117 0.0468460773919067947920630559812950 1.0479788746153197090944248892326399 GT 1 -188813638330084816975085933981786.9881729682387458166560412713648527 0.8641837750428867613134718524307229 0.0890111491029625471819157447784044 1.0932246201098694101106705370587350 GT 1 -791.9622160364628866486276579852811152 0.0276372451300479279343275152495042 0.0033888201838140992606620193470794 1.0033945752405131556625701061784909 GT 1 -23755728843397071960968230435.0542145042921793100073755387741535 0.5458326408838987612292238870238962 0.0849392935359210289285898504888434 1.0887648700450237340809617686417244 GT 1 -547492311306.0300106870550118713451859110568561 0.0106182878487229919898856105033316 0.0506327006189404009249037907288170 1.0519595169160195878138515905597318 GT 1 -1089086541433434717501011951606608.8012263053171650219848654637466809 0.9180979238661352007263656533138509 0.0262279331220600707305307379546424 1.0265780203051054161193547577808015 GT 1 -31841381880447464805.6175750883628954057720910253537848 3.5639159792964075309249451131337265 0.0611646507066771530728088441866094 1.0631151620144039742805243077664899 LT 1 -586915162605266690982130542960372.0923537901519727769305801970207782 4.6258555664882096434113124809409736 0.0718889776110838226178020710830540 1.0746039171568225459580438546732708 LT 1 -21159973478413414.4502276061171948450432254304235496 0.0081724523436800194699464240977409 0.0913579762212764619713349377644803 1.0958040755941774798429469900444825 GT 1 -5601877583542302564635280671748383192588882.6132284616402956202450248046331762 0.7371445097445977170317100174628167 0.0750814068414977019988557895310969 1.0780495527388037141483181823890148 GT 1 -2499060426795905096339957.7196515671134005750455703498017148 0.2599165465454422143336709464453766 0.0839292937241407646108017747277561 1.0876617270295331624698677570764624 GT 1 -343.6887948926229290805343954384486147 0.2264599621521264179829540746334686 0.0329851319127223736614653874037338 1.0335414081689907892383078766269442 GT 1 -1249783766086561.6333199143361984651601163806079114 0.1342147627894381754223282209079607 0.0780620267177721981479627234696418 1.0812773317859136167125395712895763 GT 1 -820220934956381251969355897240782850.0627887903304985768171771728428152 0.4005109885715332182478085675024603 0.0521088088270840119289961436438798 1.0535155605582866578961403867961829 GT 1 -75932101658961684501047.8234525169198300885874730829512698 3.1625654447176420702468982738546968 0.0371906758543702561367250863847681 1.0378998887145988208385085014316791 GT 1 -15851945426003739126146201314808316724525438.6434120533878640196394029640878314 2.1169162644464942831879110207401592 0.0665834802411769096385818658540560 1.0689037471456188113933931002256691 GT 1 -336.7277390679715145868052342743410176 1.4124430657878767137477498381081703 0.0773964625889688629591130377795015 1.0805556736894925302987833334474250 GT 1 -244.8884819485389552428493152693494693 0.1810853520015234879854263579983673 0.0440601450313574077364301556078335 1.0450602811225718960722287463047884 GT 1 -57357395890447362711981246891537924481442.6217451657410560292504082615596789 0.0467755661728689380561930890203779 0.0238787822476343323773399743776426 1.0241685017642737081218941384109242 GT 1 -14535209721036115475.3478700515217019576080770829512640 1.8975646646358987588672703430516555 0.0950861930446368791198446191371957 1.0999155807512170296790931407345598 GT 1 -8622637340962575300399624844129533402.1987921776334771881585358002925645 0.1474133816025399045874943616254233 0.0134807220154460033395544939876570 1.0135724119115671648588940205857912 GT 1 -52099748120644587229383178115901590893.7210763917459215980593553255124624 0.4703209571384907986513542167061333 0.0271136601115660682008301341001680 1.0274880177114808749200107700029149 GT 1 -37783425485378232336858172.4558551692647173059033808880600301 0.1052872087790237897075716786936401 0.0399205461540647678719950500623753 1.0407392335221918085539810291297803 GT 1 -1955101675225.7510737800276527415427845739557170 0.4723989779570841238773317120153834 0.0981342202246953257459815146265632 1.1032895729016265690195772582629637 GT 1 -31265463306816377519700670.4733408224026979191343160600308862 0.8889171973945125111198374627364394 0.0252596432382417040615191091341817 1.0255841442058037494986956973307414 GT 1 -3191721203263209382268918306840.0495021109786310880327314815971541 0.1763811207222589645322370299444214 0.0536025707357345227082381835859856 1.0550926826527296985269716183134107 GT 1 -1139206426907460.3083583778666141068654985771175504 0.3468179024181943316503765242951581 0.0027944630435053429305999971612912 1.0027983748446448555154149286014326 GT 1 -396051404567939571918.8949649290735994518933105764462757 0.5402741926999483634434883961306533 0.0500351838689828123776090992370326 1.0513303307249480654867840072398463 GT 1 -10887072281855418272.2363055649310629345245874718430327 0.7928312865891997900897861229467981 0.0169246344430286033755606173721030 1.0170694928451222819867066997742203 GT 1 -824647649791396414824618127445171357994.1450924843858518540591283229418883 2.4058586681455742047118033123267743 0.0667368586391249492644674575211008 1.0690680799998174873472525720835916 GT 1 -337875725.4067182754523826235268272413323522 4.0051556748261305063967888575428960 0.0441249406902110260561023505808875 1.0451280655701086324047444128845017 LT 1 -1118528148985093844.8402807406990844968086516243565025 0.6579405577612138654153035188118866 0.0023426093884219802723278566823765 1.0023453575906104240121537046151132 GT 1 -123285029252.2611127914020172901766872641450975 0.0830857126804891140069341149627623 0.0092866661364391695290675109306225 1.0093300560611607841845245045948248 GT 1 -9314632714542850752502401815.5088241070280837400530929589593674 2.1173606827911682534102997442389099 0.0938333872558690031025525628355007 1.0985320905704740090950580695931785 GT 1 -43.8472838693907445711028141596363289 2.1419447990561098938598962636806340 0.0404170092321639515536886724917910 1.0412564735094204994477922546581204 GT 1 -24338475218321612098020210273454647707.2769931473458505951833522329374571 0.3791263670140779049217907868459464 0.0623231515933504757122986733817029 1.0643499006271119953424553677837657 GT 1 -272772837199730.8996436071558069113064068187563465 0.6011539808626647036803304509874928 0.0061897944015620794296607368149081 1.0062090305987465265091872589853144 GT 1 -1721878439202996812382152.0299828812891463096261551856760981 0.0478922344749161456911880900866135 0.0745864559581470939330109094600725 1.0775145667379612002272485194244396 GT 1 -12913921101087817.6087662939044613304229681626552458 0.5421539156478844835018628591725921 0.0007403579315041172408247763457434 1.0007406321317834086498170212946971 GT 1 -2653130220261764446519755080388012509526.2308932329803033877689231553004791 0.8307261826982612288850764179367322 0.0044380577231595794288159060438353 1.0044479351365243436339980814364913 GT 1 -29928239817936469788905472715.9228586824082571179499662338781959 0.4935846589527197270484345210852915 0.0106436772228366566392356225283040 1.0107007263245042314212579196151038 GT 1 -1651470126180406434524337174625597.2239145852430141140397375955939067 3.1002417452520349764117128028036040 0.0862417446479216798661246620566165 1.0901892333739225769058738613989823 LT 1 -16525520667889878.1413772629266383887570565392167291 0.3027924663466689740605215765165963 0.0066267262429925803592862750710770 1.0066487804789270696641089408695532 GT 1 -96328258077871690402.1703517480382033445663786373601391 0.0992369424113182366545672049889885 0.0422916170501735503394210563354422 1.0432119492822361865385455706386652 GT 1 -55215614806.4403735498011634782572433681246021 1.6322982848650376576349100655415636 0.0185723435394223896534603389093400 1.0187469751032885585529243520031654 GT 1 -173893069847622988003217499465458770.0884181621567051451198477853358161 0.8869430711013855341319695226761557 0.0583239837146409589142481271387501 1.0600939953203842492722951974781608 GT 1 -14849619923229020094667926.0744585381613404858602934473851099 0.5904231065652944801129295091355497 0.0221564537945099438541470023207061 1.0224055949494180831616882377264104 GT 1 -6817826762422.3254560997887354764109705758786159 0.1021317413127940997415936794502577 0.0572926181874984725581611692488072 1.0589993501105298712329004942593488 GT 1 -23724829176.1665711938680385174976971367417260 0.9176520514684457312144007198914353 0.0656757210515470242518549561366293 1.0679317072761318530445443803281483 GT 1 -875195132597021746047847491550323644118211.5567370940873788390902124243738024 0.0764668672607464541839603482398107 0.0076039796842119757674304148088267 1.0076330373339707417321702910494348 GT 1 -9854917117022297416250585192.3490223089430184516621711126672373 1.4550349930093336460690836141133100 0.0914527247433522832018792378240631 1.0959083558936619398024387575774989 GT 1 -3510.0466914064575280007487563049109633 0.3014064043324685802933454030346742 0.0049096789949260092663929136208758 1.0049217710638629923462093636112673 GT 1 -8796191894431567159.3694398970706190560551642265784598 0.2985681746849241051533288750419061 0.0682253767376660935518532501727427 1.0706643140738222047544155624511147 GT 1 -1651702668716280738122806726643424868347.5954771094768589586702705162384432 0.6006070513104611597121449434565586 0.0564406774796614306091211445507076 1.0580960411947654995028082298946600 GT 1 -78974321330.5463106697631455718842360354815679 0.0787702255904847611280210512539906 0.0910541220675798372280023564940247 1.0954697268056086326304565986982356 GT 1 -18.0448493542354151487640780957808409 1.6549631108825279707116707113647885 0.0286546056818934701428864933192633 1.0290731640352198965456250537466983 GT 1 -487743214259624176204242.2520992474297415767010418669939546 1.3767037072469548058998790512148892 0.0049807991660475380435576714920092 1.0049932446891799388819857767942503 GT 1 -1653488073973000943602932550497034.9348831152917513224178809726298276 3.1346527985069604131209719606435821 0.0886082795467143226769461742595286 1.0927824846205598594321090873959275 LT 1 -596265639252.3909517232258940765458618265237532 0.4838025473289839497412432439404839 0.0697581277368682521974559957386833 1.0723106489468860662257775330799625 GT 1 -42219963274740711109604410756.3340209490080018348569961528550225 0.7808826437510971404391864734701207 0.0582787405650677524910253904554597 1.0600459511290018377161334723376701 GT 1 -271402997346747.9662889238469382797914706035976914 0.1380479893351917929413342296382330 0.0660348612680680737411274035734240 1.0683161661480239994135425735627742 GT 1 -2508446280400712931088246096731.8592973024188945268153778876224057 0.1993618003756743401553510052400915 0.0609672669447585081578377872717290 1.0629049408977015702390636608463927 GT 1 -154435514000119678765394.9974496961620825141306776088626468 4.2109293194398193200324923357805514 0.0212235548141574693427922223666268 1.0214520126951746265960158303383512 LT 1 -3269381522533007921145398291757066.4039688061890381325228430230858950 0.8333814364967164805285896328548098 0.0068691024305308103179594291987576 1.0068928033128475429358311067663709 GT 1 -17079207.2944204461583750465197601142747505 0.2964134052361683522363187814127836 0.0732360669738773111507344914246077 1.0760564027766127187588509068637126 GT 1 -875704880803418138.2468628597791260101649057952718585 1.8189661135861591843597592154399122 0.0009488463999298555339138886272362 1.0009492968396297850380022643550821 GT 1 -5601509756.3574227342219677960090382294846856 1.5421984942929104341788039256847720 0.0296290137138434990469003327063875 1.0300768205151043207323382660722493 GT 1 -296306678367164581692977921922712098902644.8779735010686352640867129142358893 0.0301633854251386611367831668592029 0.0981444676222603432409420195314811 1.1033009354081247549897535700871587 GT 1 -328026805987255107388242403518806324.0611734381814732226194629096637098 0.5601853498992735690518155052080218 0.0669456480933728288483048253326715 1.0692918248405234132411962150063967 GT 1 -6.9855532259075404609217702445291239 1.7710863209752358583152377900918402 0.0729318570531991436640702270475286 1.0757282070059692393133148588257545 GT 1 -1.7906301020705723027850514225418958 0.5730395290094447530691861091454638 0.0878378431111676014614642410337950 1.0919375011068175201364131678940041 GT 1 -106720199607433299771109626493.2739188569180623942732431310847837 1.0925441576983236793422815776249317 0.0069622163752694981183317636704952 1.0069865656862940107303120798162749 GT 1 -55962885129239715010.5405866464343062532746932358417999 0.6796441061005077600646987653801900 0.0995589154343470532203731156941476 1.1048705417528109275565194749602605 GT 1 -1691556652943141185244419033.5639076879336831837096678671744534 0.6174626604297591715707986734217789 0.0417403580341498558809409573489170 1.0426365127153766093812532094813150 GT 1 -5507296948446156450554767.5935000913190464343776257860961399 0.1087096589649573885739635813743228 0.0205168824523924353273625490097017 1.0207302775320850241414976190421023 GT 1 -2259453382604174.6165577957122053761430112189623621 2.8199892277749955933634687379303690 0.0000303930431091751591675761042364 1.0000303935049870684841096412600712 GT 1 -3721.9136991906161229677535656450992867 1.3746623021769284489638134666490578 0.0601135757999786660477872175504551 1.0619962363371806030601846777969060 GT 1 -525039153378931904037877.2711224032792079035395610353856738 3.4197506920828553233263179829022849 0.0218311634854955251120147577524834 1.0220729893740271074513754482338970 GT 1 -2.3628840231834885132193482012339684 0.0906155220821615876275730031643831 0.0937178243621658780224582148544297 1.0984045692914171857726180629003651 GT 1 -739790947645028203157339536488161488465942.8274464038303088319395990730403094 0.7895814782159447042875016748301553 0.0253028958345838731354951613693716 1.0256285186442929893732681485531583 GT 1 -257.6167869656007313659982054544780589 0.0511705725006206873826662100360889 0.0166098085032690873561086417027578 1.0167492981269183225609869166457994 GT 1 -273871585402305670493928.4912072006217208615200626837032249 0.3614466979747650682032937140402109 0.0171593663570209803469826412093031 1.0173082944167086492829496720558083 GT 1 -3549935425.8573801017451344641080534649222805 0.0807215878937489506482352993775807 0.0117004356451416032258749319782250 1.0117694244026272168706424652946201 GT 1 -1172904367234748570095056044268273307389.3068858056721652075528958672569982 3.4340481539031056901650924459278841 0.0462723574982173657334329268564323 1.0473771383339500523763007932199244 LT 1 -2124877954702924021792383808.8796108811216940885659615524099066 2.3471722946819728444868520160768994 0.0501851382762157252123556871231699 1.0514881957756087413227046723046275 GT 1 -1845177867.7847870011124874934982298169827420 1.2118559854762955158812014431906119 0.0879862768088669147148991637045320 1.0921002416623174707790999756821258 GT 1 -151556185398518535300960540631721163858.6419941187218826967714733508270976 2.5426885396643010283488644346711287 0.0640866957280055628622029110461978 1.0662324304354109236150461697332506 GT 1 -64300783419147537051669110295302590299581.0014195491772807971466013073074965 0.4048075561813508081994594643697223 0.0464056652825126597536873450564171 1.0475169236309314412545720414610999 GT 1 -63757973690708623007740963861397914305781.6816733725094333511482772516479235 0.4857959421927135592391077482693881 0.0439821058088913861244353470085163 1.0449786483327849305911976045211517 GT 1 -416554729609418231816.2516379301655931567922256175317862 1.0618964387040533535343644770719322 0.0806038240357368187339380670059847 1.0840381548918121810094113460581537 GT 1 -58264451894457290198533432.7196531101164099026882261733868553 3.5722274647668847438006842838233533 0.0831061160274593353957353066480081 1.0867635342805816530013906635754748 LT 1 -2231918583209988034630496874932.8949602834701440161114106762721952 0.1061891501014884882097454695314859 0.0437612042828690530354889972487528 1.0447476108071527978341528098463770 GT 1 -190459411766751677005061337509160.2262368851768005006340696272280081 0.0205971043335965856857926816465619 0.0203126693723172484871710607693858 1.0205218086048357751963990616043158 GT 1 -80236971525835723817373036095844689017.0049854838497972640110994111639300 1.2192373635713068437613633276236487 0.0416918847150703412729397291327583 1.0425859292503188617537081571169922 GT 1 -45008727863087447622.0263204669730968766276442631981450 1.1465625134614359118300523268551279 0.0188746256527915591604972928752065 1.0190550249862873025669351591809749 GT 1 -8650585408770389739.4255507883629810615656374030681276 4.5633459611708638348464949996769061 0.0129386062514864691551755213175408 1.0130230391036969205361022579363445 LT 1 -568.1799189308798479056071206615374144 0.3494220606090762539378179539384139 0.0730482994652823990783987951804306 1.0758538177567341289647433831658576 GT 1 -36000157076045016416555962374944217842.4734803818871836657035495245983624 0.0699790448406324886886314122876192 0.0544353968642825333257247315540231 1.0559730662630534962438923192939922 GT 1 -78373474175575162173090329707020987.9729411839866810169573213251609066 1.6417344645894446308392571674046931 0.0928747308757351764125052311273640 1.0974747247056220044578185101093233 GT 1 -2027921396767391208022094132922485126560080.7390028285313336143632981222130553 1.1937597482869569300361620027074724 0.0120365563411696544028684223692828 1.0121095822641123144751473501157141 GT 1 -514.8860051526183465408801959021355631 0.0471910685727073279467711608968533 0.0905760017942653511453030401799596 1.0949438488853820838061738225693563 GT 1 -2374133916859699879172950236195472890251.0227476402759076199842304732198303 1.6717482662337730913669869283657863 0.0702346892421440777039311413098837 1.0728230787052807973107914791938506 GT 1 -134683832397110470892729173621113651891.1159612066555779482566444128488925 2.4760837829639550927913592106422967 0.0793625386413399789168679568838160 1.0861076878275019175072308461516076 GT 2 -1829368.9443006527087542567771468914286326 0.0915253389229465375521065209122991 0.0336771713966318283019533396676958 1.0342573094982316573937558784674479 GT 1 -1.3187180251352145758518355998919699 0.6196433081343304283391417397040972 0.0059440991611260236264694912721412 1.0059618356383902650435759611698854 GT 1 -2010881.2215832731310229627741167638910362 0.4583043601591302027425986748700134 0.0411495566186663761991513463468753 1.0420201668532354691806645395147399 GT 1 -82916247143168039548593.8793200690277942238099160164496252 2.1991182886053995742671647765500712 0.0799617558496031321649436398013996 1.0833400400743560385175485141391949 GT 1 -572553558.7713865656357316291867747917985401 1.0846052854373099142546194473407315 0.0605856483768744453551754958530799 1.0624986280702103176422252191207413 GT 1 -88800021616367537861199.3577696943750671143320985257877572 1.5244090680790461668690974359907709 0.0033411029440211838617587108518185 1.0033466968919083258315094462308588 GT 1 -778773.5999480863437949209628882732943486 0.5235405980646571862721013585358309 0.0592044072427495950600606373709717 1.0610293864179963511647548174183575 GT 1 -6116942990701106387648948200976062060083.6871844732928109637493136136491628 2.2782642240546725765106429132970000 0.0688428144482744252084092521199452 1.0713271807770425492954885588433548 GT 1 -101073005645522741551993540390476964870011.6668013318021462716940496517346268 0.0714872175796343074115673163496007 0.0845718282322348584194972200095896 1.0883633758726282894786409067126117 GT 1 -62791551569.3479723488218801833448196377697446 0.6634682608270689725846607865288382 0.0410465281397119428083067911261372 1.0419127226268109250343482472912421 GT 1 -506645498517731562845749386900773819.3117375397867159781540209383499909 0.8677515216111180942985481938241127 0.0254894627804521739630254439330553 1.0258199471432141887943838672361327 GT 1 -2274627503240661133740219332053.0793280903742456032920104976476872 0.1145156428204571971040075370941773 0.0643712310261346380675203823342415 1.0665364955209773287162154879864142 GT 1 -359434316.8697820262015717291977179550973878 1.8291213242686565021392379252661224 0.0370245148940382659242709480776492 1.0377273243035118940868818653252256 GT 1 -6607417088470590848982264547800.6491423396241267887701894689445393 0.0577407778876641079725405985951226 0.0468952968815279665744227362855554 1.0480305145019204578459015429976892 GT 1 -580303.0539062039134482341409978016610505 0.4226626248951665285350250544132576 0.0543021847354532758954574830284594 1.0558321951414645296044288130608701 GT 1 -9680230637705.4569112511221296978026350649612110 0.1871057341415002078838149777777766 0.0983130065972820657018436487868632 1.1034878331087369310215928155320737 GT 1 -2821.1380149468898614576695909321253738 0.4592590056146761174369416632827021 0.0481435898207413521244569650119024 1.0493410852103422120100076445081889 GT 1 -417964281.1890452204792867261339637960282464 0.3859747845177031561199899632937221 0.0341725556090694120261435827896382 1.0347700897205740072318239129773421 GT 1 -35138006079252420914149563608064585.5036301107653847986274477111006192 1.1970007463896745539201973676543124 0.0308037469206971327225986905136946 1.0312881560405298360423470142575500 GT 1 -6330.4785376617135090130188357109894170 1.6863621934287327541482179558894714 0.0277093706144628557209458454450935 1.0281005177882660204090191256081459 GT 1 -6233543375679371042127150021419082.7254066812789800943028399339649265 0.7375907043220319031081439057697537 0.0248342200157304063207135966186202 1.0251477916847830089484795923449888 GT 1 -375110381901.7674970082011251237190320579303994 0.5567962955053187071971643717407375 0.0901115492404354749840554195223567 1.0944332685678737226229191955129161 GT 1 -876320.2632049556846564767032334512295408 0.1776672180866366707783400571678221 0.0373977760863326169888729151600660 1.0381150117961756264370401512722438 GT 1 -849901772986702840971967.5847656196531204107802709006730684 1.4872383932580918223638334896554314 0.0029080158504384065537265874586720 1.0029122523437181128486856314178721 GT 1 -1400.8778234361911555365986026632214774 0.2585852064883409277846587503556543 0.0059279340336074767447601718799338 1.0059455739814056002793549543707330 GT 1 -2179.1527076348340506025265045136412043 0.6836343948755530550924669384306074 0.0608117966532434698710613192891759 1.0627393903079312899413083962421230 GT 1 -3549676296771252193319.5933782482109139907813710128295467 2.4623524420079235098435001599863261 0.0763578630354579233895371298269713 1.0794305800169830518052452893469780 GT 1 -29298031000592.7648018635078793601281872864131587 0.3029250709721812695710297900494064 0.0038977641122367761613471618707991 1.0039053801916697634059343041856766 GT 1 -86840269541144670232055093776681.1136348927618168266483001046267530 2.4190007157274102058478419167797870 0.0794793174145247632914555693259392 1.0828158097015936848778600321099730 GT 1 -151281.8629596580534828809949158878154160 0.2153188457739694228382169856745354 0.0669693688748431741259376452651494 1.0693172478857623115364544266357375 GT 1 -1071013.2810428270148933636601447419641174 3.3006822111913518531472348359610506 0.0780177638151159964123426312976057 1.0812293222219016300280847254097849 LT 1 -22292149927285664762.3001392796197763457042073373838667 0.2307538869286335066589228195315856 0.0541970853869305335784495660756149 1.0557210671392694659734133261134093 GT 1 -1389129009.6463955934794145107029811614910856 0.1603513804569355757229071792432363 0.0109751837934355758803496277031459 1.0110358554532340757043452293649105 GT 1 -2114463543303600378094924838365.9817839203251170909680029081326247 0.3508127656554713599040675011993452 0.0659706261103204948209059615295866 1.0682473916871368012726808037498192 GT 1 -234.3521720129085471147337750606210959 0.4889399121007745879824691878947728 0.0657698666546507901736101980226553 1.0680324756589672873299030331304217 GT 1 -33277814492260996625714163.8952459198811908336356379984011707 4.4883358519836205775485611601840579 0.0290513702975768526778331095069017 1.0294817166192214898604927597993156 LT 1 -41770279936306040.5664391199077502956109066564182265 0.1202885871260140686757433153888677 0.0928646389643101477385981350452313 1.0974635996100790967046515198703548 GT 1 -121877821709.7364400563000226633778646782400903 0.5959016988347824117631149051762824 0.0253390579840474520886755537690025 1.0256656202424714931137520038211939 GT 1 -3276456364493158659454328615715162.2890727501377462821775537084074265 0.5091953663349872851995049822844774 0.0168304648344014204835399980641876 1.0169737065993046045336568233034274 GT 1 -369645718614770476490938.6831972842706645939939305624248043 0.5973303544875188366996052758214093 0.0101328665032831334474698953727487 1.0101845534494548946533188258349106 GT 1 -658577.5805172883487740202421232482535548 0.4708788388489963549700414872941408 0.0600614540399378831851635817451840 1.0619407824934648224344288715311045 GT 1 -41937855406048216234116765543907067309498.7869002237830829835744518833810427 1.7593247371790579868117680333091017 0.0566085351839035265224370694105992 1.0582739554316511495941817292470969 GT 1 -625604490626569363201566.2529177353657482201221772410037463 0.2616309213273963522286517380941967 0.0645053457225832024330493653978332 1.0666798475789032507737513062992767 GT 1 -66.1069522156279675413643970424673894 0.4661498410546971274281634133195808 0.0199457022579136062480151657619739 1.0201473029930955460900285654526008 GT 1 -2741.9488374837715703454798881090851187 1.2167245714473921338270556809334663 0.0914985129696809855827480669685812 1.0959587543499815868794284937886920 GT 1 -23702801.4119299369589146724913891421856522 0.2884913127200719288141221222390823 0.0379821999048078255895599950973358 1.0387223252701574959487362541976622 GT 1 -2577883017356742.5126721058829021076183622235089429 2.7465532891485984219571635185484039 0.0835642529439003547298212299918903 1.0872633210273003520561388839623179 LT 1 -830606704942309669137179.6932378353658574894658152877166853 0.5160408115883001385018133312866576 0.0402595287076069569293109555051936 1.0410923734731073395249735343331419 GT 1 -56766019920155352389555564497968789247.2061717183735844545589492121005005 1.5863993943428882364950042293682063 0.0912672016312948338692529736960737 1.0957041792063207836290787654516551 GT 1 -104925799.3873722936510906705730310672032493 0.0177392065938406830799173734129624 0.0099628229976947796063861381501839 1.0100127840309989227466830658695875 GT 1 -2854141986365.5362611734549625452913037545008007 0.8802404990637079357179288442193384 0.0417165190862027333701437944065391 1.0426116356879163209802062910487092 GT 1 -334569152523445.3304693268512879871221139577954477 1.0567056822905984179111037852143712 0.0944192273864261064914469733139230 1.0991788034132358011007319158175604 GT 1 -22465619852716984097151369093283022880930151.8954223472683970685050764238013218 3.6223508460567840046239341005020496 0.0932261123067094798667399601321838 1.0978621568669402752713878191731654 LT 1 -5504365515299.3227253091886677019292531777875775 0.2615019166621043272693338521970184 0.0232319887847189586311041900486822 1.0235061052729922202638544824160970 GT 1 -178488460.8861333056913332657174720749316597 0.0737345933390207539099859805566678 0.0397367104807471173112416018124393 1.0405477722067423824992066390873727 GT 1 -3097934654060870082294173844140467.8552809045450405196921810769162247 1.1922577654574603648335408632753553 0.0252844603970085855204790692931928 1.0256096048061840914328945271732220 GT 1 -30265400123373323822.4716706733854325816453700061785125 0.5579883173062112055874097178783651 0.0082770983278302599843825773867289 1.0083115437097554647921158159995462 GT 1 -140786.0373842109264410243317413148018450 0.0231405241949436479082155737585115 0.0038221553350654326222510763386157 1.0038294784367451574558532102949619 GT 1 -136342182445234062646.0068043091026240960765648934196960 1.1403140084133450118594655918728451 0.0427555161818871973814789458818733 1.0436964511713832937350030080743225 GT 1 -276351119358594825573190969014708676.9981740817851174412146181843733744 3.4736115409629760349658559640797598 0.0610944557999250324083032026280310 1.0630403967397826962944300152763217 LT 1 -2622950915917868319.6649913854152302418793266722968456 0.8863455052681271109402143491004275 0.0318673127820864756650577861473072 1.0323861275270590106415003800057530 GT 1 -7013735805785.9214094314541309165427950185708226 0.8145852299497428734820629740030310 0.0623039993084269381321421968626055 1.0643294755847707746790230632741887 GT 1 -20178.6540716804929465205554699529960511 0.1874652876055257448625779843429334 0.0610607259319343028391275137609684 1.0630044727191541283707581325114928 GT 1 -233728140720746187640962141865535.2895664065400790831547712170154023 0.1946615747545759894506468814565143 0.0557726444228507920303928544797147 1.0573882990621971779831873040275783 GT 1 -28939337626114668027553242618899.3832392784920922536854021902533781 1.8746579050127424625621908547534597 0.0198736037916955369431920777881299 1.0200737399114132330084885846451134 GT 1 -172409787857122734308950479692503327167718.0630117954648419736553363381461180 0.7734999537411105372381579764101630 0.0891218734539978278298040539909545 1.0933461705331906618625034681611935 GT 1 -9705043909362883620468602607930900970438188.7703387276525337065833047938948363 0.0887464549785521469576499761338234 0.0854293046302526928277318545071891 1.0893005091967744721173041287338565 GT 1 -1198162504286308701972618505.5478099530711612005773091881417267 1.6699009812282182641049250318975279 0.0333360940771780627393954367686651 1.0339044076216678988515205151005862 GT 1 -4432646865379899064095579289.3852614338211718190308594218599586 1.1165116755468556780806829499034582 0.0531692150577912946113852148773255 1.0546348871452891937362972676066926 GT 1 -218451369045856055.2150047280004470156941899900339849 1.6556413715215329960916154534881279 0.0764510848077804799457042643384982 1.0795315135639411250225770203828699 GT 1 -716430421065668335555974281188.6068356419025481910196115869443512 0.4465149088894486400882202772738945 0.0271304499072013609278037866847842 1.0275052755758637203796394790230300 GT 1 -128813274441554368657634.3563111367991608803243117607791272 0.0849365349395183645540713321144876 0.0163322427707225046540897904138559 1.0164670840370196757142166952404773 GT 1 -57710201789416436515026293015.1446775395875487607196779445462207 0.5303084055574790013031485039665783 0.0776212596334486197037335281052366 1.0807993584644627859694772422989874 GT 1 -161880049041419533049.8678801915612830836333445844372558 0.5570317574343223252686995680427527 0.0115870426456747030767720209913997 1.0116546955299702725412162969566099 GT 1 -36588322082164420030873621834897.6436851952119125443614376126648913 0.1199530448346386554661796417679510 0.0292401811038446198352239034884591 1.0296761956688431181673014210844261 GT 1 -19923347498349666372092280347.4888300558326731618347028973829276 1.1469672137183718185355318476022216 0.0635236298601874586627757048116012 1.0656309895147668888167285446442621 GT 1 -474615617922110243747705535798.6600961021856497682263387281672449 0.8791317293884014813439518369256574 0.0197332938059831904922653080481306 1.0199305951658211465974047149532147 GT 1 -10045979349228705130349475897356117999.1813942370353286791202936356000177 0.2340224250902271270314043396246256 0.0162383985476706846385111315806080 1.0163716862300195027301354528591393 GT 1 -644043952079283739845904477320849033.7406831201224250216828929639261471 0.4458828975667425897243524977373582 0.0930363486880766742586319105568704 1.0976529054011198077327757464420772 GT 1 -24070144069427327119657737977.5125589375549421340106891869210939 2.5576204574282651528587439862720556 0.0009503796790204980973805609269014 1.0009508315761262170727364900866288 GT 1 -8759061128729710117308648275664108587395774.3222364947145150634445578545756450 0.3462478766570884328289152806273533 0.0776064750481170909104246605952000 1.0807833298352278453683410004456579 GT 1 -577901349.6936979538349996322341207764699101 3.3974700290238272105122291919364411 0.0375646055020473224583911067086258 1.0382883376725499433500437878943531 LT 1 -14513193385921.0767437549264426640239734524836539 0.4268658119855043115794934955337010 0.0485464567919026109946228080961998 1.0497644182323345364477290996186759 GT 1 -2792084608487915031297932224376857644668432.2826204801771060576294343222980853 0.2305004039291609876980918353100038 0.0645357088843292676060905510339241 1.0667123049044084359930251068403416 GT 1 -100206618743745652.0955763848775320123069405092031639 0.7835364377694841519972097852495963 0.0529919065447871700833315882107030 1.0544476394173597451884834284138893 GT 1 -287807397811921303722084827262557.2079630874260236949212799551378223 2.1179329544073353541514189258445105 0.0894484657298806102934661382850423 1.0937047814490099163379165809516203 GT 1 -1485578887420543723923.4797643836896275958673357885264851 3.4707093551025852558164904534970589 0.0139570822660865007120359631709821 1.0140553982132764172952414864577568 GT 1 -35267.6135050476727008658243014818669598 1.2069722375837001927188691718737888 0.0820986316416855342066916921316209 1.0856653360094127900048050256100941 GT 1 -100116883521796620.8568251608555276083730291755381673 1.1971173920285416960742822533813356 0.0839792068193468069186339809708322 1.0877162145867683746338983287131721 GT 1 -24.7893629564039432512107710021645958 0.6096104988530752884910973531556285 0.0586431444896604233599108469353080 1.0604329812009348894197069885043375 GT 1 -4181918377689310809213813.8273546232512527553867629986241107 1.4213396257500148882848058699346652 0.0174495599513386004463223619160753 1.0176035980845749998358035695799650 GT 1 -10337919317830277454669726043353815869.1944471695304227192721059052554884 2.9702324613294258882529568237152784 0.0946907350843170449236054527802033 1.0994786644697313133455180422992388 LT 1 -97.3360522130779695008310716146476930 0.3457845531963171595310933899204139 0.0672890712300042879147511040910507 1.0696599559704856163920953377733294 GT 1 -7114913414708266930428.4135874077412280124433570004404798 2.0120499706289756702299675079985269 0.0515143732153998481010207212261631 1.0528886433490862081626398157151365 GT 1 -5971941447530878404.8514902167103238950162900016505380 1.2439202673866204736625897687903342 0.0488104367013642618369707824442503 1.0500419058076477824533557453817464 GT 1 -1085687472809239163565157499985722042570.8064123435138820832404831867103951 0.0783710677479946895240646880546963 0.0166583925050178596895388093003951 1.0167987039501053605605211446697874 GT 1 -2773668379367365.3010000705742456847567215603661885 1.2146465465358054722858744549879980 0.0515992908223714351818131346311663 1.0529781770290104067663033044795673 GT 1 -1221696383740259.1400628844009414533195570074219310 0.6198062356998349750044687552441116 0.0450199391957968699387179063612009 1.0460648174584250248039159127369343 GT 1 -4848.3540323214198967157672906061458446 1.6801555173878540824790849616533671 0.0551648838356211154349759156849495 1.0567448469611783356958456114613383 GT 1 -804586601162174439788043210458864740992.1821709161466953546629473489399513 0.5267320219212732292972365185164673 0.0904434454482431350154290235103196 1.0947981009321607932002464139231673 GT 1 -511296015801080956707928.2612994551453702219599941700189701 7.5670539297320546301351662869089857 0.0213807967864342480392874316463735 1.0216126771706919798324446355719891 LT 1 -1063808146109293506397623305420456852.0472144718680781487740780481479479 0.0630598420749723117046657196728873 0.0157636508209686250680503327005623 1.0158892185163118999860028416706873 GT 1 -182960497444552579755865205080570846.4121407039837768976701501342260160 0.8227930445910809992812700368985777 0.0567298725493185463026556731027958 1.0584025819602025975507132580052900 GT 1 -3460449634365597041223493732239105.7302415919546233574318549041940277 0.8103364983453948741790366948557464 0.0285371271113124507795611201153736 1.0289522271700570729837874561355175 GT 1 -3077958613636673350206132802.3765101028329341486343358946403150 1.6680068488997018594841182402015384 0.0548707764256704011246687631791568 1.0564336163139742483169119481892444 GT 1 -252682243749688245560929137645.8403531722599172344554298916760665 0.3510266774266806322179028863433032 0.0231660557891398024633970915989009 1.0234386063688054589890092225260413 GT 1 -272067544338.2324267440539988424856103441335630 0.3438000522058370723981392955686914 0.0937618468345331116083009385319720 1.0984531452678366672310902033054575 GT 1 -175303374127441670671756539092595392967940.9720152503535577498397647635548496 0.8077713541257466683443164567284195 0.0111184964216366578827809603281716 1.0111807689175557443702965634161125 GT 1 -35054444449258878948492789841142662255.6853393219345179893321377137878775 1.7715283759395020549348273376198699 0.0079711731337441088316464086521554 1.0080031127784949674891271524585156 GT 1 -1479918357412033795462379139914349859953451.6514438452051373878334366792936241 0.6897797505190733775106015482030807 0.0048418074875598176154110441454099 1.0048535670110208197484210559745412 GT 1 -6332393974747290783009231496911039270939.6457670561991455372083404990003066 1.0680266675645836098420532867672243 0.0125530904862450745545698198860614 1.0126325461698326055327935554286661 GT 1 -944889660050460968496619553937595.9800565882597041730471358277075378 1.0503918674618658436586284246001095 0.0849829030375305398047388102857477 1.0888125286762973476120128638433149 GT 1 -1217187387915596194601175475994233.5624850114717167159199898715983300 1.9583785123448736362680891680006075 0.0267314164940564665768553367240502 1.0270951983959886093969031527579770 GT 1 -7746774.3197198890662656633707831469993759 0.3127048989348802098607346052083564 0.0127635030008351713422751235207682 1.0128456562964407009309601048192385 GT 1 -40652050788591075970.5842226519726847648701064916356867 0.6948856498952277423771693971351938 0.0553207356247816382274190224535334 1.0569098118760994424365335793141836 GT 1 -4074877810222054179465793452.9740325691675386572109883026298724 1.8652652211610316646844270926875094 0.0427518114704523389325319683323073 1.0436925809957609236122944286949909 GT 1 -20181210385730621132824856907293.0059639615078571383057323288761638 1.1006693968151651894952991204345328 0.0453844928093847487139366664534736 1.0464466298422895520195952736900463 GT 1 -244451866652217262491010.8894400138989282776569142969999725 3.4280937534040589333724595557015586 0.0193759143762883951666973932776479 1.0195660879376338409294050549501825 GT 1 -1820455.4791186033511134178740857677691083 2.2781647019367927942351639114810593 0.0366656887757399958290962731722712 1.0373547714325955388090995141571045 GT 1 -41388735994660455.2742636407729310554764986425040345 1.9863974717046515202517732415781128 0.0977190321936788153231790824407799 1.1028293131817313122224553998348843 GT 1 -10.2548897928836682103078357977328821 0.3097775183673500470198363611923375 0.0540139596779700863166369115365432 1.0555274665697612141334162899962305 GT 1 -144003030394.5665684958229599269054466276899902 4.5880538496760238943468788724772981 0.0094443609956317656873196018273535 1.0094892417766644491664069665114323 GT 1 -9.0902142396011692028458053874666596 0.7962158201651141028992835271853845 0.0384097969654384959587594876943325 1.0391669034451056469209810919636431 GT 1 -9.4399346943164634578196551363469608 1.4499887871551601615835772009084375 0.0508315529586244481006467309156716 1.0521689966066558334920166924463532 GT 1 -88940695.8156307100243392258609715568418017 1.2966480375147649219022231524755518 0.0852307506515634727906947102572557 1.0890834320154204021770387376917922 GT 1 -143.8118672872085902774971907923709903 0.6800971706348608933163570142519955 0.0023890238486382392274593418933964 1.0023918821193382887623736544279887 GT 1 -163191.6818296232317179594961480417550993 0.0883156726002446271178062858658051 0.0404610262368656889551482233220585 1.0413023455337347160891350203648684 GT 1 -379522603737411348.8546873939833300498818507864247914 2.3908236906135114094097735498392690 0.0977209787003498639647710610340549 1.1081186261644972197075372911955694 LT 2 -63951656097079571678171450134079846363.0719516754299840279529407752280862 3.2555149550514309122246523826354778 0.0393883695883188066109133378546524 1.0409925028026241425207414839949239 LT 2 -627380422147222436004307903.4351773194309828718775821358914735 0.9377696342943268048003234672746822 0.0359364873978218340696603836903659 1.0365981020997824348181153078477281 GT 1 -221818836.7474788121521138132672733952669028 0.1073250357154503989731196763998545 0.0874618432083140014891450212303055 1.0915253787376192688208307823300288 GT 1 -1522005.3029936028373728518734607559106886 1.1472518818230406381185417288188355 0.0728834074201439658803922834451900 1.0756759472368773068787470028946597 GT 1 -2198045462399580717644234938140447.7238554048307083351261785701914292 0.2955286629976052768069098450521836 0.0901932083006008585164977312363795 1.0945230188274939561794660860484537 GT 1 -42014262496457158939128345703.3823098258123625305920313509963569 0.5644022140989884331819557237942549 0.0817881732693048571887061036318258 1.0853271669072357837033907169665580 GT 1 -45360610800.1300807918715039597124786637281342 1.5043470026853150322994486451017121 0.0115899103255302817116226652663693 1.0116575968314902956178290269152965 GT 1 -2045189602.1925947854597896045835456174160134 1.8169949645225111347524365265149224 0.0446108901198463085474545814431888 1.0456365765838559199212081402729195 GT 1 -58402942101324.2385625016593035242218385015384185 0.9623347248833437098480173384045571 0.0321423338326255385632372348508608 1.0326702416001566914582498772381092 GT 1 -38782.7671131432496034763381168205153888 1.4436011239818502544297478818120456 0.0434284505780179302758082701733115 1.0443996895309495851438385655886150 GT 1 -4656145924864523051186966.8771959721132253892421550623574125 2.3466466275070270654075451213983439 0.0530645836470455301452628902701954 1.0545243862705976162226705956688053 GT 1 -819301224575395909778464274576822.6451263498222899522933876444405662 1.9798185969599368516431874612656615 0.0839901914189664248145423578832356 1.0877282063074407113311759357719658 GT 1 -16071961299.7886214892156621105748581810593990 0.1148419761744765047064922908443013 0.0146408417646040036862900116318976 1.0147490766204065092840002935578401 GT 1 -112494748389840.8659524440028533839029338081453798 4.6428209026663177978436089629613770 0.0883478844068349026061047647742966 1.0924968138796796156073148557259895 LT 1 -1035145921621770799493652577668877402614.1234216831863824193752478062431317 1.1610858087915170247248023966547558 0.0532589519422171830008537193263888 1.0547296676895803454904472425727433 GT 1 -2182045386826493235169.2539247362302779798690272990794729 1.1379520621844445617045812370759020 0.0092629536243675036752391093944019 1.0093061215611508113242734799028276 GT 1 -36086299415729697.6252301399646110119403502144459153 0.3586176228069104552021636884283714 0.0109696656520431785466296766341891 1.0110302760927285157745411642832071 GT 1 -2115233553362916.9570440331060656464988885606352139 0.7555261718177307162071308673271818 0.0835454781003492990628268239181690 1.0872428344287628314439653896314378 GT 1 -20936165890.7502692854505678500611454180286377 1.3025317576899469168421937757461365 0.0141537478680124650587939009157737 1.0142548674386096197431855705695615 GT 1 -3766.1541532097185961228134318884292126 3.3537380737951859378241094648132688 0.0856421228467805690372035008922705 1.0895332336680148440255819993380534 LT 1 -3448207.0072395156693437152175649370549379 0.2477083140778272194737573694700676 0.0629695856648485488060972087304022 1.0650395380014004695681164204005073 GT 1 -14809767186802440993.6583554247080282448091122824413764 0.6150908447201397665539693211144277 0.0563398706564406252126334048397049 1.0579892101389313526695936172755665 GT 1 -16210877228387234.3430043636488370553384990261515471 0.0161856523793279209376366299796123 0.0704266672157451532485241777491398 1.0730295800598888604090802439926619 GT 1 -9535532455446.4585319548081144930424807020873339 0.5075269400468240595694921071171810 0.0473769496260966594732319237291697 1.0485359935809143869872194411704759 GT 1 -230889207217.7748506459993140103390110149360573 0.1525334275579625000845038430373253 0.0590751221402651080306180286733945 1.0608919748260976606158823719661753 GT 1 -92772500721165034689215644020.5777778358698296249114748874696622 0.0064442078011547773305225547079821 0.0435001330359065302213550682179166 1.0444746291879933981553919725387360 GT 1 -24767837458465710039514.7710179347726709015611086498944609 1.6370942018785417899955731708780344 0.0329606676158164168220313206689866 1.0335161097084809462305814857816161 GT 1 -634558808.6397428661752652628436743528651315 0.6532012541657490435183801463327989 0.0668393608751287516005932546494852 1.0691779181160894285876029232171224 GT 1 -12.3609753893574489274139109770023999 0.4698201595344772642168126467800565 0.0661756706090783165307874458277330 1.0684669426072343786637636489006204 GT 1 -1444679726150706116925329192058638.6436514890604814051395407990164417 0.8332700857620036839142289214764182 0.0872974846351533221134944893874210 1.0913452835029336132606278484728494 GT 1 -140198985323184649097.0968002950357024506818543864205735 0.4478496040583655507650626344023301 0.0392298361577900754317062250332164 1.0400200621516854257258407362779405 GT 1 -6910361746593659419852.7458494404090051917129610347677801 0.7553890943663835877662561966768824 0.0853215115468742967945369188008562 1.0891826541943434830368400197397872 GT 1 -154302347059.3777782416734928378495913673139311 1.4587965637034079762007849677111804 0.0741580772658563437487645818123643 1.0770517686988740294299785433828032 GT 1 -8639003262629519340.4803843600026352551687833759902114 0.3255520544195288786662125536862150 0.0999815237493999407566235172791699 1.1053399867012133738305956722766600 GT 1 -48.8263372451069030104104232445728669 0.9131714350406908936562073740255434 0.0577460619663414556599573530320215 1.0594804674499845507330062581837797 GT 1 -176687914745666046825462748951.3384610333532328852528398066103537 1.3640235392115486445964798352496350 0.0173051435442090591879495214217742 1.0174566277214896738391376970082864 GT 1 -15387.0533787194422927367581020677064226 1.9862911643635119649979704022194982 0.0876878127703109434335650120283757 1.0917730369238286186562430327312227 GT 1 -340051650835998753.2797418529024861978550352649277568 0.2819848194762888608908480677682318 0.0258752061360196907429347174830955 1.0262158584299008179683368373008686 GT 1 -3580666789574621065977284825170137.5147167829256372959626589275581353 0.4302258756527994035298003136371763 0.0926820419688357908391042487928164 1.0972623301762810737916769405423605 GT 1 -1131404674217293419918373690176308.4611083136325396242201039718347568 0.5692975238189029592834572795988961 0.0940503906855263621133984414326405 1.0987715933441406375967910408579715 GT 1 -4806596936939252388.6823797670871249625080217632159206 0.8300573302700707115530725580093711 0.0444340561270219775148154866796225 1.0454515026408746068656771380502793 GT 1 -13245694459367743100582064.4034367199582632494105190510466879 1.3315961925919838375247779595414455 0.0662225669335745772853145996172697 1.0685171635113359171481509963294839 GT 1 -565940454224184507353478443583.2845590061550105016166940348497178 2.0343581536275567589166613843545891 0.0568511643648202846331414702581172 1.0585311767400922906376746401410308 GT 1 -535363848583386603480227920241064869949.4253495413428140511282493273948308 0.9862134437151801974430241805765484 0.0260082853415486799893622003301567 1.0263524818866127872694960410765879 GT 1 -23656695746071557114869083404976895645526169.6518626939611842463473252276631778 5.6469247308352706330272798739077103 0.0825399109594005838224055141647231 1.0861461996828207665711071735479859 LT 1 -2479066693684895813903293104520255555796.3781430894792988745051487458616799 0.9270835109002449920128121137896272 0.0566422012097469264737623083264902 1.0583096422359301912594828722332140 GT 1 -60442.8668046934196371461816627952955440 1.1183972196948001889088355829941265 0.0522105644357170356648883163089089 1.0536229157818359876242467351879245 GT 1 -1082759649829758425860517853.7608078607096797177935767925385990 0.2984275772376085010771679003825426 0.0724369938752401265754243145280957 1.0751945556759451202210850218590985 GT 1 -41.4518959841447106744085068430381162 3.3894770807167725532448979911143316 0.0406983529080442345447823816358105 1.0415497101869626010654764821798716 LT 1 -217161266811258478379265854221.7608203801226669599525140661241910 0.8566266747710164277860953951976774 0.0486890643891131767640581926485059 1.0499143133970436187457198213125996 GT 1 -8335830641.7223622812902673616408875391982345 0.3898054088222588563804783622812403 0.0749318335715497866609140785569013 1.0778878507487773369003215367846442 GT 1 -90220664304826151450306586283507815407.2661565328528954359617964766283813 1.6478348980683189708393608239195249 0.0429555855489527290219903274851898 1.0439054785214085567631487960189539 GT 1 -92800709709725499111.6540413496529120342711359255492047 1.8907563780208052019934921939941020 0.0400439516023947121730125217355397 1.0408677784874861207797196563811314 GT 1 -504360990064870013311303093023389684325.4496807251838097319388078841952371 3.8213255839999881975221672019934420 0.0722813141198666196090823274448987 1.0750267323675927782737970672953391 LT 1 -2050123989254504327320083947143926993498.5453576442178362369299178798047965 0.6680312834932734057432591657435953 0.0328696797184601696237182376345256 1.0334220249964206949287698971000469 GT 1 -3638861866594341254439498540223930517.5974463095214343681565363663285836 0.1229099185317742717994131782257702 0.0042272262248217866904210079420360 1.0042361862050905079436563250556253 GT 1 -1360494958646537.3435979861044051197831964740806592 1.3848414991669542451138712275955955 0.0216790935743758397586269518571836 1.0219175375890385541485820534726191 GT 1 -44317264761674.5858340865462783226171777953191054 1.8906399017261640309675237191240622 0.0398839399799981328670643178006884 1.0407011059734013520909147537892194 GT 1 -3196877997643408961392865294448389652145147.5593561388869968983464526750687259 1.9680168964673271166621712526324595 0.0334251827822277422148236679974741 1.0339965728613212985360648180039191 GT 1 -4376167506850298146851829874424160135.7679634635396021761677942028470995 1.6381325085464890398488039955676205 0.0803186703364150767856459085787606 1.0837280497431881726195426770534533 GT 1 -8942576999967407845522082889526119578.1654970763064187684209585504002946 0.5524242374178979427760855625011472 0.0073415712488945856609255501388861 1.0073686532139590757139682826331898 GT 1 -7398579758722757898708047.5270634253362310434331846870687563 0.7703719198962972197552691774989510 0.0578505287631648954606870055037006 1.0595913426441351515269843192837715 GT 1 -141418000024654063245200784822465323122969.9897304825600893015118089745282624 0.2119415394059327013162565472070980 0.0756361375955051201762479881668845 1.0786494943745201688151477262491100 GT 1 -2884030261920.0967308903579217586454006074662068 0.5236633670511581506767433399621261 0.0145414064836075865523582168097722 1.0146481689834701091876485997164309 GT 1 -186724227933095974.5422785866073877284636897710047336 1.2884406240286874078107846240146259 0.0274694301926231415353857956020746 1.0278537697343506503036206871197206 GT 1 -373545571572481852733981.0511214403328441473836234605597098 6.5466067633396486342392368921021413 0.0413721490959045084061854473698493 1.0422523389502040736119852925320751 LT 1 -603493963.9170312039748447844044229116715931 1.5139568674453507872306301977998544 0.0046240351959220282886921796393484 1.0046347591179674014554733212033595 GT 1 -1194243052263730.2337225369300574861345312879722151 0.2502777305945729115136081269393507 0.0037341738047478291027562566185774 1.0037411632370117520815933363095630 GT 1 -3849802946014.2712551652631994792055785363390716 0.4370359274821981434456134772183048 0.0315090807577078659201441302971808 1.0320161722840582975061886800888774 GT 1 -18994889520.0053288114620712399528602811728732 0.1423105997112610758124118794315412 0.0928402062853023414298281346217207 1.0974366660883251406724711912404159 GT 1 -825933059171783011777.1842444933605625692170531524863602 1.5017323375950813471453458699461911 0.0099505925081900233275257044469490 1.0100004305414084293692286486586205 GT 1 -247917.9640887417778752065394795294772704 0.0195234480809180528209840976253322 0.0242493585891034761738597215022257 1.0245482155699541265822994348603318 GT 1 -2150231327376270041920891641.1319806019631533141831076984701150 1.8711644645839022114732661032051377 0.0056913602300418252226917102675358 1.0057076177348986331354434307292264 GT 1 -6.2541941967990417087267375142534737 0.2801908134904750875287020438383638 0.0599857155827421247474648265080153 1.0618602076449761679344215271621253 GT 1 -222045784967298254268880229725398797468195.6516631276205582935891815909967928 0.1108156729599999150524569096634059 0.0766816632505625838765024075904592 1.0797812103883747269071216656018575 GT 1 -120416992170143733853179743549250.1871986223489881484860219402053106 1.0063165147803724290269212266458475 0.0211292624425094109841788768800557 1.0213556803503556369829693939910146 GT 1 -308987195011425139.4759115782354165666471980989257361 2.1311585010447022681744302300735178 0.0503967510102631215356702619293387 1.0517110142627331136053928266799947 GT 1 -560346633369756.3859003769161464769070945439974752 1.5242700624623435001794962125748439 0.0786251563059156583197065234463320 1.0818883291168886684961887581470995 GT 1 -2217763.1178035813756394465653699784781575 1.3732369596600273792693563468888593 0.0865326551784757592645880026047030 1.0905076511248389263582479407904882 GT 1 -2785848363612080299509656.7964280979124513719124391505617591 1.2617977242338449290261267982636929 0.0075153279027954290841467885236758 1.0075437102708234627342952862035022 GT 1 -3875140669196941857055999858.4486247447290140140566013825777178 1.0235947473549001181267444890141533 0.0985925126644697577958411293021518 1.1037978624193608023314942117782470 GT 1 -70832705116491435440207552.7358337491387743317901068566229137 0.7553670243929948477344571539688927 0.0933299839586042653698988226382178 1.0979767142037230268896892459784061 GT 1 -606255494278513594712.4935047345922970057361523960931794 4.1555556216174068931726654086431992 0.0702004668028285597939074427840538 1.0727862717722710343727668486797046 LT 1 -52135635.4898470363650328540734124366379727 2.4545505172959531097337575318775579 0.0858138394604468616987973960507965 1.0938663588284429691413194609014222 GT 3 -299951766735326019.1322047972247761105785091445759092 0.1930263893765827767832379304586655 0.0007885609617004461076029089305603 1.0007888720394421982272477437067599 GT 1 -41973488863411007139879789153479.5249260296114131594003420864183530 1.5348186561586740054595323580407272 0.0823534600444906010605393077905203 1.0859429952339833072641057346465505 GT 1 -2938036119923499052943411.1756291641508828221432591397896665 1.3888558774707304999039126179829246 0.0510153878730507304591535780297984 1.0523626953330184038116502210283408 GT 1 -830475058097204.1565005958994147914881882312931384 0.1346376052650605086720513174043339 0.0997649647240227775775385409758502 1.1050993994449906630311407899480942 GT 1 -712600.9761513536979100439380795950221946 2.5240351663263555832312573295530264 0.0662776764789162562608450688078957 1.0685761831124504874481301103767347 GT 1 -231590978321765.9715073353750420294960138838908490 1.4949404309672029758273427630786566 0.0949263091818498852281550131609084 1.0997389122787557298255781191820547 GT 1 -2306420749892998429781777.8650314245108059178847907119901428 2.7880002385018179948699786042450670 0.0222669603866167189170169128380531 1.0225186118397058395795663948100207 GT 1 -36655026888058868493636075.3996533451994467975584685576279325 0.0937599832916993949902032216973672 0.0378412576720671110164471673812023 1.0385758291146485110928057737941000 GT 1 -3449723963430935322402978655685947600503.0037773264119086915195422722957004 5.6308337308593988483375200869147034 0.0995860489616044088746618172287298 1.1049006758021629984536600547616225 LT 1 -884035.2335384639121428305918352403779115 0.7977557548883634433330383669662625 0.0143219183758768558590461076975831 1.0144254669137394728134195053459915 GT 1 -1318160391669.1118598922431743327424504246153172 1.2958042559504185099993277658432870 0.0742716528231124655558667165283295 1.0771744489549185662189065455677053 GT 1 -407149504218915019360022.6264353288472803562232009122803305 0.0851733848283998537622664277942509 0.0235569029032411846067311544852442 1.0238388026656463217673656263382807 GT 1 -23060303466536997237773258.1585465851826099776268476349059535 2.9401687174184986937956104010550667 0.0694802700993622823108434984075865 1.0720119995774578965347465566278534 LT 1 -575979699.2218748741463673458440684853111365 2.8240580671738713739451853709016367 0.0485747647082158592124591369623550 1.0497941709592398759086615902560086 GT 1 -85.9501001235769194053239659230999926 0.4817717128045917916892537255448488 0.0408308646769816751639769959414143 1.0416878533063291281810140953858824 GT 1 -2438185829841.3766945735970166016934269400273546 0.7644402840660768497855159037896910 0.0641273205525829007351560770867759 1.0662758379883438624801039940749945 GT 1 -1218395733.5428302859648388526779764522684245 0.4789658153750105185278717065671864 0.0287981258203708661827677030726184 1.0292209289221454305789574050757102 GT 1 -2906557701377028165.1867452707307337716740289172732079 0.6037936077614851065966448428078081 0.0948258993035219748764554216125870 1.0996279773239925779803243829642194 GT 1 -78778970639154940064109440616439174066534.0700856401444185829878990847614555 0.8827313847876464252750703833359310 0.0732182733739065904329514268528178 1.0760372032496103939783036079520537 GT 1 -26212178281493809323947338742214025885.7604409843802895879751156734687801 2.7377177304524801668735489283370080 0.0932979528671606619302700704423523 1.0979413865485799718593797134953068 LT 1 -3770985810981466031192385633733777.6367783522979054553498733637223662 0.2514984338993181936455222894161204 0.0608639765212527713672051038101716 1.0627949503302932566432701849097535 GT 1 -287733366600760209665230209374535304896.6564975035385070361820282617783247 0.0797692999402901071734039648273296 0.0470029395363531261565268667589001 1.0481434598409324712801412326963237 GT 1 -17428781260699528048338.6757514130135395990160070665440794 0.7085697404835850610966482919581262 0.0880319106832268101909413781633149 1.0921502793042023665446925285749462 GT 1 -10808316149279558504151.4875700831303179824335386348954818 0.3333064062150161411902733415719587 0.0517783538858865992201839372382522 1.0531670001371506131077859977398417 GT 1 -127704536900661898958525041660288371.7061749104063815490621378802053465 1.1297178472166713713389485155812870 0.0312283627830205789060008760629024 1.0317263633722862890266134152433202 GT 1 -28196677777806.7508389877282985498204490368738988 0.3303310058347306108496438465845086 0.0657350072246406243586452946283906 1.0679951628187817376681384926682337 GT 1 -237080864459279523055.2176246508180423742233810070016026 0.8845282655008635201911658397784284 0.0452432707838201941653662757258221 1.0462987047566207318869996927468422 GT 1 -152570802.5733929923368192189411866849757866 1.4046880890160170107196737805348180 0.0398293416156736478204608307095262 1.0406442411689782227210189192055343 GT 1 -367994724432756823959.8155802846445968890804641867264598 0.0407905483885672781353581902873430 0.0631389960367843788457832652461716 1.0652203493021440397054788374244524 GT 1 -4523735500706538404152706669670661527747.4514814492076105105937370460687980 1.5242949376145940483123008088910004 0.0610747137075387310098051707932752 1.0630193702531935389544014550233701 GT 1 -109010485492176433947235798485.7406724170164755249565197298123542 2.2919300521178812669019798221467923 0.0638056365309216495351898898552445 1.0659321707825730714820640220762631 GT 1 -1549560620338.8543771112652150736456556103569405 0.0915800303055450831596973101616153 0.0899150196389124905375389191043915 1.0942172988191660570911044951265641 GT 1 -3064578623092381647241816866.0178840053537245701020657851858354 0.2152983732438245441155304774476879 0.0422194950025997020455085523597669 1.0431366452195901001261831032883808 GT 1 -10074363729634972.9092510030183329448654566821100647 0.3536865955354277289876270571288272 0.0174877995959206780362405018880193 1.0176425176017442787303853467235879 GT 1 -11969815377869711985.3425537153329939570827529565501769 2.7258287405276781608250973305568830 0.0043141331077926589536768213649537 1.0043234658314420922639247236853351 GT 1 -10.1353764421414966998834368251459850 0.3049649275763859488914163141712924 0.0541490838562553082919654605535708 1.0556703162778749964265906100013267 GT 1 -1375320716388231247.3051446537636605570966805628848881 0.2021398220404518843687959067443359 0.0228158585736693711017032994824247 1.0230801683156534418292034520190721 GT 1 -35407861.1545303658304130267538188293819019 0.8735472673926272742870070846274492 0.0043967010943330572551552994471444 1.0044063950091887454671235601043884 GT 1 -61262.0524469543101767600069802608168837 1.3544578020134769040983736363835781 0.0531863425582838242445841834769170 1.0546529766029610201638374203098413 GT 1 -2553873054445015360157493990563134541277.7097741948722765841356715223203100 1.1110587115236652324564612910834448 0.0888068379140667771689461850932559 1.0930003711728299109150857218859488 GT 1 -603010979916986010691790132523374491.1351627340638987759074032722476711 0.4317692675290305684777172657196387 0.0162092007282085755495235795704885 1.0163420068990359856945433148682814 GT 1 -507919086953617039.1330231387744040456458324222633209 0.6958427562659607775916078049495003 0.0521501038370575734261723858144377 1.0535591266446641242576760798554820 GT 1 -59716246188862369214490384753.3913851210939791735283014113207950 0.8334174967763376665852417633814534 0.0437135738479503209620734433681441 1.0446978018588744285348427364725664 GT 1 -1889729050.5640196707172809357148787884570070 2.2074339591802451839265369414729401 0.0892737067682323971293440564527057 1.0935128733726630332437744931579597 GT 1 -249033641.1740969429066375176950859680158419 1.4145944539648988190102602374646114 0.0566764583815946166366182225706161 1.0583459569766526862940946630377556 GT 1 -5272296110.4556654093629565716312489366623797 1.9183453942533687357995143952879600 0.0850510761352430963941166962144644 1.0888870361774948585173215772163317 GT 1 -13078135830889934905020262607328945956401325.7905022751007689624984139209346051 0.0091114691200031971165251653108549 0.0256164757355538443459457516720123 1.0259502907650576247224613677711783 GT 1 -974116789428692717032.4474180469802475773098967788314536 0.9062702156254980036371327142933161 0.0419787961237836883525032099412670 1.0428853677737379242804055890180956 GT 1 -1601016950314518096824769068562.8308905035735887927371291917660018 2.2659051200495373315303619658556317 0.0246272928739286887150599579983572 1.0249356173094036643547054033572174 GT 1 -271764917037.3735189869546021186079674786137885 0.2243603490091943323283142007535296 0.0196835919978806478329416673121887 1.0198798941190220488013744358474450 GT 1 -5964829479282380118084928.7044438476810078335675795194565843 1.2504906931325097607496883936916147 0.0526428270547801594810275648716914 1.0540790943430283632576470805642395 GT 1 -1264127932121125.6296150172346838278366193513978652 2.7045474063140823850576617638145066 0.0541644963472072289355467294968477 1.0556866112523390192607865319927544 GT 1 -54146961913886093026551442410191273.7608112311627072284018865169213715 0.9996827782104538581949352620215905 0.0706769534608552615954892939122047 1.0732988648348838513129884468930338 GT 1 -5141112.7941385450485203443665563833269595 2.3064818350942892004203728386065696 0.0772090798689675189539862729992027 1.0803525922075041978490902616310179 GT 1 -460502445073146499078.5930051741975821449292574696340665 0.6464559568188209903554699047026575 0.0313091482361734809263069800661489 1.0318097564223806077448125070043274 GT 1 -5924.3120889848132182014424951278400503 0.2528026861978482290206435397811056 0.0899697534228978807778901327364264 1.0942774420267957876554544931039800 GT 1 -1407134927358425717164838842.7729116243626306886804006327378570 0.8063840072460004772942088514354864 0.0192882163920561831306516697741739 1.0194766611488146349370711036407398 GT 1 -15073810461375468577251803366368.9515098335060018111640595588894610 0.2323574646323512400391614907625601 0.0296220506431899735409590552325174 1.0300696448619060377396884716933131 GT 1 -1571001180011602993267435781615148.9599330468905222103806008777140239 0.4516257124023536060386604359300374 0.0890956997677915075440067901303693 1.0933174363816000036528463726615484 GT 1 -7343893070317001850993192035435893.3091234994552237612399454928505519 2.0642418197971829849473082767119194 0.0901560124702393038616565454985791 1.0944821364441363185009469312416390 GT 1 -6373673655796800965831667574.8160065537950402018857872282444636 1.0827242974016689637484116523821264 0.0820756151024561874067216343416176 1.0856402611468451060414902641826554 GT 1 -17470724193705270072162261818952175721871.1117855539862096453610681658710690 0.0682894179047060360093512881773848 0.0954965829418575684837807183228226 1.1003691963118641819681095022016107 GT 1 -34624535.9013897532181732987031679450392112 0.2696951941966689174790675366302672 0.0744910964026789540579773885138665 1.0774115267044102094613568669526062 GT 1 -1460989796968017865.2270308451641326873307238079857220 0.6219797424824113497432471262574461 0.0779601746797104989028667513415149 1.0811668618678457643815779458860475 GT 1 -257.0624120755664330447308255269729830 0.5679508537220145039288659735974439 0.0543117820762867789478404643856064 1.0558423436152981947885404848242637 GT 1 -872639668985433279674961102185796.8143221381304618694075803031102942 1.8938302430820578218782605558791467 0.0484094726292009587974095749980056 1.0496204550261681443173265016016139 GT 1 -4120691429921532733708122.4282230239249981599022658732165683 0.0805767844179104824952100206562933 0.0234739482709063426078267101518564 1.0237538503432457299653546645460990 GT 1 -380136560315917099.0565890741291111391262203136426145 0.4540061123350175815007119842376962 0.0703277705983202729482223189948521 1.0729231964605090365485300454978640 GT 1 -101.3358469741361498546205214254841541 0.5962419427230162456489033253233703 0.0162460142290549334175813847818194 1.0163794276491307329605017721109375 GT 1 -5872284754175547059558486424916096.5331339683385578072883231741510913 0.4025325891080409348374506602485779 0.0846974103605720914295933928156163 1.0885005693160133562990731851308192 GT 1 -360075716845213068381436896919.0689508668300440831205795796782245 0.7647275574440425894753168017988193 0.0167292372200779453633170077709699 1.0168707514121894395683769928934164 GT 1 -6.9315387963146585583362369151170647 0.6699329119444273518716218831132838 0.0453447559672770250838138397755863 1.0464050046908143091032719222713254 GT 1 -44.8998617932957746003261123920763611 0.1750404848575617622094032888211393 0.0153268354810984391410700327062366 1.0154455055432189893390433249946259 GT 1 -215415172669496731470940191211711708.4506864892842088463888290772554852 0.5729575139671448350143239505546728 0.0242142187936458968034094289714890 1.0245122031286241817385317512255960 GT 1 -8577307620479965353970536486782236927794.8111472917985970613660414839579660 2.5592789099395954694397846006525871 0.0737389433038457944420812166427216 1.0795328814583704651710439354560797 GT 2 -601124.6466782815808868355701624640028611 1.8996195413356962546128565540660925 0.0186606239728755167961913718835002 1.0188369301841019612993891587740621 GT 1 -8358714698354693505300.9265863137377399537983737030851930 4.8674683795524461784930215281802873 0.0180694322801205429406171642774121 1.0182346780969582082081351993710931 LT 1 -154085098704107143464827.0214641080022769912974604209690062 0.1130569916080587084292009149962876 0.0865312770312322931622221792146542 1.0905061424270056921010150296100280 GT 1 -4861975864111939364769275038502812.9803117231164845725658167820094806 0.2337143418980992867277691820497194 0.0080401669133782565177402392565075 1.0080726633571395029369245096669406 GT 1 -480451758363542454040490.1682856750439102879061954030884343 0.5928479414005626449246324367957175 0.0935027492633299113646590833868045 1.0981672816250679846607082334634719 GT 1 -6940987287285021061888.7006992971597620824657567876488451 1.6665741135687107380913193324796888 0.0219541148356401864480705593554032 1.0221986927019327899717888488480718 GT 1 -3021.0023303246478732639799018538345848 0.2813395708138448815347256772860181 0.0777896746068519156828738573265510 1.0809819627929796175806703339391326 GT 1 -131173.0638357078946002028848637394846405 2.5534710766454395451310169770956873 0.0250499528834063469575241424786499 1.0253690430233526862596694456755082 GT 1 -189431840098722793481686830936702778.3925135437109567504550924938100972 1.2355883296752032986608718746149756 0.0813212501345628637128918582053300 1.0848187826292089838217499305055883 GT 1 -41462.0824861894680506478724248696916054 2.9687018402607456292478792047842461 0.0407029436497886379746865868402419 1.0415544957022828980293496349330012 GT 1 -68260911640298876252191531577368942025.2023907963044320125812606045294042 1.8422545411987985381371464702103135 0.0762497407818796238815778202125677 1.0793135261047496023121238048704591 GT 1 -1183127639622043719874184420883.7775246106043278578139986279989801 0.4743993479904433665203688080231966 0.0624637440966292769318043106396555 1.0644998489217555111826063431607518 GT 1 -46.7605825500830795670548517212380684 1.9016363129628716190983598170054979 0.0308891969464588458624608480958411 1.0313763257921145544409446687465729 GT 1 -86426243581.3394881286780689680073324016116664 0.0394466614789309294181531600595568 0.0170872948039037886119352087084817 1.0172349672583866914669262427381804 GT 1 -60060210711363895502476.6268535496591255403597103132938355 1.2820014360852834165644607529762126 0.0849576518284387839688209057879222 1.0887849326228899032812245400121751 GT 1 -3128579596434332304505687452441.6341212942336083200595083950336345 1.6025416278531952818912790779538818 0.0294415717763184950762439164541237 1.0298836739362473456205126817990960 GT 1 -186619.0111078482926712828845208794171304 4.0016250626204041384936747227716351 0.0995375084043993017865003830911915 1.1048467680980388156631234031691252 LT 1 -234732406283180513797036332755.0507412041131847473944606271040615 3.4613840559274509191443797979366220 0.0554403470472306084958950659446797 1.0570364358001693081958279436057124 LT 1 -205039396852007432270614487821782575038.4579849624118485787814035158728515 2.2318123712060005006786901779135236 0.0807860787600916512772921687867862 1.0842364076102421732583048679159765 GT 1 -9821.8848324619377456014556692698714861 0.6275015869362840450330770958792336 0.0776497708651966164692186786017442 1.0808302694895744843776863479643126 GT 1 -2.1560008573706874675939572544560597 0.4043303644167713318718721380606393 0.0291247365579301339525338970144106 1.0295572808973696853395586800130347 GT 1 -50961602954002678748965326711047769019261.9060789346537344423937348359521440 2.8076099377451541680437805654762633 0.0306089667296530783558679494874176 1.0310872053863384751185360762151094 GT 1 -146360654318291.5362294710591428253139270417181225 0.6760803880544753993162424919762100 0.0766957538013958312102280864108288 1.0797964712770518554348315147821619 GT 1 -2337024768767566829595028172692.6931945895410076501158661872737531 0.0536666668120377571352169482743639 0.0688012117615969003660455786693545 1.0712825032961850327561123172868471 GT 1 -204591177012155511733779053251687458162282.1942638720200222436595678399221365 1.2777090836970629749608941037465599 0.0485889282600818696847970054197158 1.0498090577383221672711907954817348 GT 1 -19.0256722203117536715875443273734107 0.0074103280032077151532378048693090 0.0316995572147411343109265301527462 1.0322128650836874357300583967101380 GT 1 -2024816451084444967768.4185201206208052403213077907166293 0.5238463594775110519419729977776672 0.0064220595755809624570566033643006 1.0064427697156283033432919835379527 GT 1 -2726311044011.3904831432885903859675928558575129 0.8433038413858314970652249705231685 0.0112302286702796458516262742543802 1.0112937638122366204879468392538914 GT 1 -18441.4420424879108334176255322801826607 1.4115945286544585685443139269082879 0.0582322115915671995815132581168957 1.0599965439147010222978542221772123 GT 1 -1509926085326289594453287934727425565.8942923522388980748864989543739917 0.8469838680282479675567131038172869 0.0186823794563802995297018035916682 1.0188590996039686889826959735894046 GT 1 -3209023074000258320348218.1565173623472584411624749273602899 3.4341088233861655726789474473491218 0.0738230133273719626474183230403876 1.0766899322830164714748436191159883 LT 1 -37490466365299148.1410099408300012010470337874339891 3.5357028752074316741097596881157944 0.0903855435670947490536537946047152 1.0947344434960887460067277004627273 LT 1 -3219173308596752100639657527.2031105758817824528862599613464427 0.3424214193261947360547713170349316 0.0614707836513961755443670122545800 1.0634412925412446504754107835816933 GT 1 -2900.9730714065483461636326583455062389 0.3135112041553567180347264264442151 0.0767131307161401400825712678495829 1.0798152918103026955200836937589840 GT 1 -189576.9413885299504336640742882115398777 0.0274181324674221571648050059701139 0.0307330207272010448006279132611619 1.0312151846347821463563137014767662 GT 1 -32110794.3356380447993495155265242429275299 1.5496160789758840208497335466964454 0.0682301770239403493244484796225280 1.0706694658546492796069015063888415 GT 1 -18.8116841454800504607039061039354433 2.2482749338266461102515028556224253 0.0372968331439565920106584247980055 1.0380101526471258623882350902290987 GT 1 -13281515130482203123.8381451994649991450367848617574538 1.0447193495931622134987244249640671 0.0231467396108908725961739144660056 1.0234188322942206644456298107975347 GT 1 -729049407066.4427751431930598285820860613543182 1.0219283310409722503250935690706352 0.0636286733818190691786791126738117 1.0657431647033031442076537117202293 GT 1 -47049651589119.7370637962865945832967023233422619 0.1971461658014295980549147191905157 0.0544621072625623185338511947187598 1.0560013147565538220847829770476091 GT 1 -9982075275922260349216937869764003986793.3859499076288879536369369509479253 0.2179681529249978391004923848773361 0.0411663328321377582795881840806049 1.0420376631795381422404248919331000 GT 1 -107349550952405679140485946058168635975.6340616668466454752367778880389951 0.4656980650246397854667691616320219 0.0924997088715384303110567609617445 1.0970613920404701910440361026116075 GT 1 -357033227827938873869039.6031158907276694895296723013796258 0.1682753185562207995026619298004000 0.0273000427978704257809992215776764 1.0276796131057877035434167595826339 GT 1 -112212864901907169144.0976259720374649357011566910358548 1.3775490619654983540068105158854715 0.0331981496703996209778598892006768 1.0337617162845532759649748019657355 GT 1 -3054.2536637078408075132070811143163249 3.1410413318283277739206374011931310 0.0197999180247772673053177878108633 1.0199985628755745377959555999064069 GT 1 -1076129558923356386492414063.1504201964811650199036589194106758 0.8838184362333625372263231551134334 0.0770316923401668361726425115883485 1.0801603812986532910151374598166904 GT 1 -431817135.8983194452774204642222009332130624 0.7162847338457992387725795641702819 0.0091482584654319998155527221597579 1.0091903607536983792227664582425781 GT 1 -8275141111542997023763782.8826929249355738303578583477616920 0.2677190868803837144918694650180664 0.0581012942489697410841403469479420 1.0598575412375135482052615439904292 GT 1 -208092216215383756581459219488628987.3106254391717456076383927699120925 1.2172527657352949054670568653419828 0.0081551583906609864482367689492168 1.0081885935985370259465015232745638 GT 1 -994625060940102619169369.0666827846221052819937474116535496 1.5838913622895107056247463728673091 0.0547456431045269563147669105773778 1.0563012269696961802861611457482614 GT 1 -11196716.0600224485747027993091570915345993 0.1541029214955964674640939428249213 0.0518909402061508813081267016046166 1.0532857413673018802516414128754906 GT 1 -1518829.3568934325496023840638806074202596 0.1321527669662083731909700674031121 0.0953781322204970729235716923460580 1.1002382482536810410794840028084937 GT 1 -4211751590310098680824184727309064453.9929485057800806349653963695266800 0.3830826536456511668635258244803442 0.0394518228202016103425165994665479 1.0402511395933146296947183323948935 GT 1 -19621468744972.4130128785287561753000324021243288 1.7303577867450485646735150887261445 0.0693425994316240009216748342207703 1.0718640602268871343206001420371571 GT 1 -7984398032563237874084831.8672797448887197675150076953656486 0.2167005739179303858888650853429018 0.0957743776237506294559984469069454 1.1006763674558230207086611446084869 GT 1 -601943893785144121987511804725900785.4745106388613785049695193145839386 0.7347748651405021385280999642974523 0.0523139913363862539065629984397329 1.0537320460806080663003966902071730 GT 1 -633161931841557002018202305727482.4119254864502617309252236903213560 0.9077672030446132659505549467789651 0.0011605556002405602327009364797536 1.0011612295663917747664311149923796 GT 1 -347758640628658913.5367856841368310674312431032824679 1.9949135726295205820302149247478858 0.0631444162526940425720168355071923 1.0652261348258942475862155828932145 GT 1 -80466.2547429437842564189466267861530140 1.8411731128765491271651537538278080 0.0714213123979176861343160179832493 1.0741001547666506211623110118729112 GT 1 -538845623494138307440059828336874.7496402922043654991298799856576076 0.0442169848729872347509183548465331 0.0252985713371503636822827358447469 1.0256240818938177108345414234108315 GT 1 -11265.6404076725767541781616309027234575 1.5201149138488207654566206437519793 0.0691144898945075887074054751131560 1.0716189844492081049902139830604669 GT 1 -75236211202404916381784816184245740.3618874290931352662778864670099550 0.8720638210971892350091465930643459 0.0353664932198170110339548851965797 1.0360070355000302630215029379310754 GT 1 -31100616306267092476651241425606488077.4224949153231357027453839178097873 2.0101604514992403752692644405355826 0.0966490472399354379120956487213847 1.1016441490662777818420380445584791 GT 1 -3070986247388623.4286623634975441763047173733704335 1.7379684658003040373523343187303898 0.0081268302770265515567469899025241 1.0081600329730100795249339015738164 GT 1 -95411983137579729304.4920546712653993196794377991299175 1.5902308808505089388401289915704422 0.0830808362788162281470694325656767 1.0867359635871824524567384016110451 GT 1 -9488126705512861051201790130.5312162059399026498068940273022790 2.5050714911975310603153552955944229 0.0664943878000351496382670917921141 1.0688083040206118620540695012158908 GT 1 -310998465759778918524712844348.1268471985814784614955584074932871 0.6878394302180944703771928756394203 0.0618770062562695390599535522313307 1.0638742151776642828139272912599702 GT 1 -1547859013855074183581437086819121951273166.5842132827642112889559874771173571 0.3816849140551749647618588951169803 0.0397881749148564928537688095440162 1.0406013677297776247936653270324564 GT 1 -142548956716.5356357363878950475821560603474846 1.1035304866663710594360608859143561 0.0613915066604797242131848890188716 1.0633568267180347421628774123035960 GT 1 -8728031143.5725786769936106188245565537952262 1.2454673038972386524164113795145928 0.0967211393733953208501849061661824 1.1017239574840996994215787517110944 GT 1 -34068005450625635826260705.2968586060867354680985963940559129 0.1287156741615169973212848633250744 0.0525023044084837293055810549892448 1.0539307741218997046634861421271050 GT 1 -25331006178317129451605757846539.2860274982299734979192321347487964 0.2608673807772854883952204200895380 0.0463323424417481050630957227676766 1.0474400355672069726097009901798711 GT 1 -12516020778.0378574798259227361482004882678153 1.9402833639230350256201243612722133 0.0104942822988491659318654849474799 1.0105497355821327134951882573290869 GT 1 -990488905518.1745626886975316466400366243219428 0.6841082736675159816801237035774382 0.0403898506106791313905893411156016 1.0412281713850346139428427848174773 GT 1 -3298452982851908624647302888851045995.6628287348565629355666717587417241 1.1689029344617538888602085104560331 0.0608218207194823376486548209545422 1.0627500634825916480109996821413336 GT 1 -481214894765520019047454455381978.6262135480562191075307504468293213 0.4011742842869907305082857732261488 0.0011713220473694402761129497635985 1.0011720085811925977016016214939924 GT 1 -132597618726.3987878573307565028927912714709720 0.5621031424611214469528720140917154 0.0954666297952975985679471403354633 1.1003360812897998406201563416783589 GT 1 -989859538122094080789158542508.1532854015694299480072494962371475 1.6720081073758390355603634675963267 0.0493399906834326425424016718897194 1.0505987889632651729943476967125827 GT 1 -52601050446.8628338221889339087974439227271028 2.4166268478562826055259744679974591 0.0547802018702877380507279872584106 1.0563377879199453741493832013311061 GT 1 -279447970069373.4573840809154836378184723272101152 1.6950374346725974960150426973475709 0.0590457900003353162289509148373613 1.0608608015800358938338527058515579 GT 1 -277.0686361434202391540310010211134023 0.8816360569114422182688409319785901 0.0919372297271033133087624707768337 1.0964417725137356727278954280237260 GT 1 -3618069996684872461304147460177885.0332713583124536175911369583767262 2.4346461406060744210389485016414904 0.0025473084582789559772973271418777 1.0025505583686590462615517585402825 GT 1 -137166948589081207783723853305017.5831945920776025056747715785273443 2.5030409822348962912770540631174750 0.0387732582782366580670927796922805 1.0395449543231346231417807227719083 GT 1 -98897621825879339484258778207813.3626023857780161708223911122456098 1.2297613050702394453834901274737217 0.0980424291943695437899184850584831 1.1031877990440307570099870295591037 GT 1 -10177151617.5273263826565916011426035402422123 0.2870938610499432992181872188905295 0.0697162885575862917005280085875144 1.0722656732909150437228973636360445 GT 1 -33398112963219.0111931090883466376451867157218639 0.5296403576657773489427714317706971 0.0601716551455361985395701248752418 1.0620580322506161605600938905737642 GT 1 -20189826814815072336054947563.5960916171819411059699431387134060 1.5146576347270353337016590014908785 0.0066206837569692869633377582913375 1.0066426977023863712462383624692586 GT 1 -779381714626.3443869789068734146435609005671095 5.6486913071912017468858371115275266 0.0643457403435017619279059534971832 1.0665092514512728008483330247277757 LT 1 -9208566097907869664651755394176376985005.3148401711280076626228736546027050 3.3368671785482106875903918306842807 0.0429545482075838465280502856817276 1.0439043946210262633745793325672870 LT 1 -76280297941515392362041.3636606415959457066009946929878613 0.4273378845508544805495646128775599 0.0148021644108333210852895761504251 1.0149128096634956263320696565691789 GT 1 -806743875853167305.1706467937711263304629696531320234 0.2402367759020122321691006534941947 0.0774967608709137285138559580759984 1.0806643918225771990121033619356328 GT 1 -1076093.7982475538505703677089890736079559 0.9780442847633376591096451820174875 0.0258819334740936860167829537158585 1.0262227644868517216373276688240083 GT 1 -13013259.7468227040844203578040724558987882 0.3544177024154040828246647937510473 0.0844260493874859448259950938157801 1.0882041419282487745313243468342785 GT 1 -10336748400351423402.3938088643431490940036093089243692 0.1362225841906603905904165195113671 0.0518574710909542029175068492743074 1.0532504410776150586826861094385487 GT 1 -1764678044956301445726212203294721254.5217797158074253573972965788261419 0.5710386878823153476551826875440031 0.0037626552649581190044892147651435 1.0037697518592310400298661078790170 GT 1 -3851466028954798.1816786961459280058821301555937897 2.5533565873371788045247050235176383 0.0829374325917714904679168160941645 1.0903275902174253118326158877696401 LT 2 -4927087599857061109567025392643.6849076249732340987244561711802379 0.8727128531550045978824967821234628 0.0851619701691853805462642216550446 1.0890082459542440958628950007258279 GT 1 -17405784949728975135456110801.9981341497883010409356046920478923 0.6435947214714702029163399038916156 0.0835435918437794939993296065261144 1.0872407762201080898498607777762231 GT 1 -14822.1734801605167325835514941006782561 0.8206207054392756284183448067179220 0.0591277848909546657306162066283146 1.0609479455265521112923712111101204 GT 1 -17.5569355828794191869918074477762578 0.3102333346493825379527474828813804 0.0821456753674830962483743089190377 1.0857165887180248123009475957372589 GT 1 -254842074162847123737378095880701709.8059080125488216761982591906996391 1.1154218012867070095763517801380132 0.0682257949923121162195172047846850 1.0706647629535506859778042127117261 GT 1 -772826037677861.4361181767815208172233168256509821 0.3030860426055463361295749618704179 0.0817048801051366683894333739453508 1.0852364586587553247637826719407850 GT 1 -100787204.7292450112149102063516385468656995 0.8450002940138564426031432785038201 0.0048885802049330927028305496171724 1.0049005683992675685449142834612177 GT 1 -191662663152909.0378199835079588071678579454341584 0.8718721840318622408627304566486515 0.0717484656351256121954170090022104 1.0744525329611918523332997629577693 GT 1 -5183.4110291310203579055243111969437007 0.6237058528306403381203440521045462 0.0623353122351110931195695797688722 1.0643628696159881373291395927673681 GT 1 -4348680851403810063048581761.5355435843212279170941645592127557 0.2902173737994934702328608499868091 0.0077002579754422264088657392499739 1.0077300580392422056830700229094411 GT 1 -900933634346332379806096164.4006597957276785531972388566091615 0.1401005588053038388502683610254307 0.0712207541119638605610061421314886 1.0738841939298974714871021591967265 GT 1 -374.7780612640771560495626409987234461 0.0602808782089789186131203652617551 0.0926189155173418196172009091258176 1.0971927578118938775637336128485792 GT 1 -11675483360526658918984211728648849.7195905928498976473835494998186001 0.1344461120422833519770984814693551 0.0841132699366301137787375190640770 1.0878625790902398526033424960872585 GT 1 -3946857949174216637.6132599801093913218536919120834557 0.5324384045832837959399639438764560 0.0730269377920230957808370762178519 1.0758307729453269538153749640529723 GT 1 -2700582332276806862198186022448281293812.5496639819446132574233880478159705 0.3972019605038095904340919932892976 0.0317912794880595811783763635575410 1.0323075945847148064045201743807156 GT 1 -20257323150419414563103347735.8836841720749733353482457677315733 1.3206714430669968990231132641948780 0.0471205893654296378248798756764080 1.0482669199192849338607255972616670 GT 1 -1709757427981.7078883308816721109180098041498261 0.7470351568691454255261856246085385 0.0248031043628235045231646185277629 1.0251158841290258446886745022848853 GT 1 -20885992447951358415232446857644764382004.3524143570497632731445790131346296 0.9753885293914397993660251758251314 0.0236718749493453538641749644896549 1.0239565553700420622016081321734907 GT 1 -692757274603670328449933100133487271.4346016042959990161685651171495965 1.7052240565577413764087332875195012 0.0964862058644184787701564353419866 1.1014639016224803239103520510649228 GT 1 -13820771284735812634638546264.1828873725267624066745059911061658 0.2683229807885837028165092979241482 0.0540748853624086381093643378633301 1.0555918730661232624835265964590113 GT 1 -3092730698914624.9827260506009172592321439917273554 0.6690303180243018159320826242332628 0.0556007645229965847288654024915598 1.0572062833041401032017341268229905 GT 1 -25058699994742476938021250153853949947778912.7970943779542998619267985192156420 0.4853431566379303838446166374465680 0.0705850886793462564594680460441232 1.0732000184308543358530521101026642 GT 1 -66194097442301087131451.9871652798611171151689892290714933 0.4562215050484224665973862575931621 0.0292130413041031453952645822973918 1.0296482387840989849600991812141561 GT 1 -275391536084.7728935782625168204544989639964950 0.7660934898171796468982440068439657 0.0436421666697903699602695398253918 1.0446231333178332864831798526360192 GT 1 -904517885323.9899264679062613637828966504193489 0.0300400929841062841520597154911142 0.0284937733268354824840457819588710 1.0289076008458464206218638925541375 GT 1 -1612979983991373811975353085870878550.2056351052180337615176261188448475 0.0960957285983993408687781118233789 0.0557171960665195337816054342430446 1.0573295772638865351472112631380300 GT 1 -20383496334789300110729.2019087107371990440125261787334745 2.7149141684603545625188442287785910 0.0887095277644942562542399267664743 1.0928935826696769292382603662618314 LT 1 -9324502443351909535660869765736015830587202.6801642352738206681967810441738074 1.0252244933178378883218308408372320 0.0788693174526970074078256650757014 1.0821533607759346172637164149676901 GT 1 -104836298929.6492263724449820935933151532755270 1.2438293585613000437933836358240678 0.0028472209144066972671602739139520 1.0028512819581653202590749041100378 GT 1 -2109252854871143.9455007894800682194794712275750737 1.2352906236773838071869799547517688 0.0641344946090339696504775785105757 1.0662835036506776396754276714919203 GT 1 -896.2530981372583754875911986957011889 0.7093054764368177366655482269821669 0.0123026890216064842885610384664730 1.0123789935802220091687337995637502 GT 1 -2440614715819.9068381038417818149613140449266120 0.2628280587730402109912069438183458 0.0123360358885173745883178749901515 1.0124127563833452412100989981500661 GT 1 -52821069204860801379027727.0544648094581796247774429005206902 1.0189914779735755398497769777756527 0.0522552163286882162291948590023062 1.0536700285087140561379903821162810 GT 1 -2755200165254273287112.5575559145576370629628715236641207 0.7059989652416123331369879050707476 0.0124418536825334752352849067537865 1.0125199015935559085329345209822642 GT 1 -4671273208461523004692385737303.6277167822279813205757977393515329 3.2685615836320243369816578876052198 0.0728630320864290964072560358688112 1.0756539703787498050894557557247083 LT 1 -14398871805739690044212906151537988400026195.4911871070752724918809613814022135 0.0819211980824222868363132322996466 0.0766731353264737551419864409424265 1.0797719742621472111697925062194882 GT 1 -2843195492481566.7769105496358775796702316462784506 2.2800600620340524961516134732736487 0.0492141142403110383917935826630810 1.0504663882006334915307349567341752 GT 1 -4228.3600376402365063800231732798418254 0.9756157943879732798852975711278715 0.0808832494409427017906915591207357 1.0843421238259722390853017032698021 GT 1 -38.0011469209253375598968419521157275 0.5668951477946316696302478305342066 0.0583444262544426328331099101638870 1.0601157042323046840369402554505051 GT 1 -645588374694878178329194018517468188196.0187884609588121107270925276239575 1.4702598146797643220008575669179113 0.0410246270457007889931210580839694 1.0418898843509579717801982043560846 GT 1 -6003970005040441275377745761.0243428246379335007770083504701049 2.5673985741968247460472715304613025 0.0845666841148850894698634924842069 1.0922613031014717405463205934577797 LT 2 -4538528784426505821090122.3017078663665638400188552754598370 3.8075723601326759310777037768602575 0.0911759791668247039555454026773780 1.0956037999900200975411545711523663 LT 1 -191.6178312798573667756764584489654369 0.9968013850607217308343921054835747 0.0895938159558415762746232993986788 1.0938644229660070426203732257964040 GT 1 -4457271552774547535653655274005828382114560.4249236525605673303118969671468499 0.3854355285913230513852918793861216 0.0923585466675822626416191796473828 1.0969058535491413165632574728821505 GT 1 -1941884518010119080.9382514417739068894116816633183158 0.4339504317546596991713572026075743 0.0822036588759018688062234912081602 1.0857797636014813633233655654492273 GT 1 -10909106414111104098158199753317386583044.3235057364379458855776365091524642 1.0919911735744581855681596588866859 0.0603822495980398989827178242344430 1.0622821349305670222305502362177976 GT 1 -7197312653410478980728574858548258.3378222785202079804901505275051142 1.1801841091606033595973605687507849 0.0232036127840710178387717763708500 1.0234770547838732299037111955397454 GT 1 -579667712587840308389212920483082035.1054359278531115454224396418468405 0.2682658195925034962810029799798906 0.0597941006447322034764046625862486 1.0616563858369485357911208609677874 GT 1 -222167507603885990343.9057288779409844884801979414815190 0.5903233507679424660759277770821737 0.0550412240980675654834229950363507 1.0566139758241202772863394504364079 GT 1 -320220018469145325455890136216531311.6946520137500244385392315619192715 0.3973736495757695895839144882439868 0.0880739717286521339460759434828446 1.0921964015489392492178414695814560 GT 1 -615102718997581941589719189126978504221.6025447477487600338233875904982815 1.4299598062033133333885454868033909 0.0574645577833702037624090734741765 1.0591817558931239586030351677808633 GT 1 -1598575040163383384822099.3385691451177054765009529869092675 0.2913207008536602190660716213603204 0.0659059302713369303998020343078969 1.0681781287706732939162708123543207 GT 1 -628387927153157134288997685732.0254970153144754142206440220299830 0.4653180513416898469120573770572231 0.0530901811221886287468190089717927 1.0545514185482816354295172328525702 GT 1 -118073229.6208680304949428768708936914848055 1.3075526691622147324523416987714424 0.0540328004648221058374253592741409 1.0555473833271690920456300864860463 GT 1 -869101147039414811268736383951287.6846834782749587613365741582344558 2.1722000479878010546293780645182956 0.0140020773481212341924144876805098 1.0141010312256573770016086334384872 GT 1 -34911215426345709720421737780466928.4675578511629269824424965301934408 1.8155159493381875680460490712798863 0.0421923031241965495888548591236881 1.0431082551111331900118375391446665 GT 1 -5784545951074471552533.1743886414566989569673775933818512 0.0318447637721499244744706124272754 0.0571404059857352600787223583004545 1.0588379003142137233077973877439568 GT 1 -28503809302889783152898483226.8159587586238315598616929109927872 1.2641327986805982939180163077260255 0.0691067133587470018901232131822367 1.0716106305719653082763503869322952 GT 1 -64261962537943622581064001215019.1394792547504604348864903895240147 0.5083702041802215324071369834819067 0.0944962680622332989521160183938807 1.0992638802560446865263162703940626 GT 1 -409140924968295310651473436334752138167.5122122313869361468543392287498611 3.2218192211957139019817412208005035 0.0432501925649427718778602245695919 1.0451907663682232061202382170198391 LT 2 -43070721103699811409015369173094.7471838769594243952554578018392911 0.5204417651712882567706103443214238 0.0310714045643782267804740960218606 1.0315643587274597024324279047040397 GT 1 -15740474.9150002150857636251608900508749086 0.3183169647527316735456883574307907 0.0483972122302142066364539257181744 1.0496075709971108899713478376439757 GT 1 -270202444810944888644968463449304091758849.4301299388926420259531191310602845 0.4368935927630941724963890551593931 0.0238766818546407669846993962129794 1.0241663499918344011236912862651064 GT 1 -69669799673360582113.6872309962062793941207960082736868 0.3968313648939841549140302564194881 0.0843451966132704843309694866014083 1.0881158375325347779254785302417241 GT 1 -614972719.4550581114380585453914999393001745 2.2836945644493379739460631601908261 0.0578483424925791441849461937652085 1.0595890221333076605509446220149686 GT 1 -190222084067052095657969770.3701160502902862033346611612925257 3.3895927419113935972176841587428371 0.0646010279956282741990369334455091 1.0667821326813637808392921483003126 LT 1 -9.6339093304755576817882282710021854 0.8616906406705637047565031491548360 0.0314077218988340247674772333709018 1.0319115212715407644386693519578409 GT 1 -28493978425.2905290521715731465540966289020817 3.0866159739983603688619860160433259 0.0170533449478276320748802950980409 1.0172004278027511223850984858905951 GT 1 -39746.0689979619181720122602523941148341 0.3390336666595719746069382023490639 0.0559168962626259750949936015080174 1.0575410830912684922633553924515149 GT 1 -180.1764539564583228777378579454036847 0.2047171830607937229869074390336162 0.0839705255765240505474951504010650 1.0877067375074803982448146590999020 GT 1 -85307248015954467526680521685.4555271442616012016290089370618179 0.1631312520052798951215489301611388 0.0554373102648666541679364265949834 1.0570332207809031275691293808585133 GT 1 -786264255724100.1644332394644652123166516686713295 1.5013061294730018741518850294019024 0.0635302654233984949484643491208203 1.0656380752106065656880342451747567 GT 1 -1710006296530526041530471613751026.2015063543925888637329560479872535 3.1431657525658513415066708545370911 0.0935032588147412809060936619148292 1.0981678437354926633291049830516458 LT 1 -118922947126091219497790.8839719914452138978103390399896177 0.0582071061512716040871277733181933 0.0833571124258384265400619464088250 1.0870373181542862429692415636494932 GT 1 -1420615966154045112169796257069998604.8179002075452966551487039543008151 0.6324646079760355167971838028137456 0.0732482103292429717716623527158672 1.0760695058274443196755297867451509 GT 1 -1375436718.4735187776573040089685650317303098 0.1590823126373297178878274134252467 0.0451900918503164356559853387383794 1.0462430073722227059514985495398687 GT 1 -1258490902934523686559586102.9353321909968013291954260926054501 0.4375299022044524314316414436208770 0.0823776254030314120594036258676713 1.0859693296401845915814634125184612 GT 1 -412798.4068757244838199621912580182730834 6.9900382967465946708172982414096975 0.0938194072551512643132728194563698 1.0985166630622397420312030695147604 LT 1 -18567222234948082.7729542915483334477807883883938123 0.0414541547453431911497017489898801 0.0344066157917536521465524960542359 1.0350124607050474388452301802437855 GT 1 -339309177664391666819549069389153809310.9247018879061277517695247755140083 1.1795754931745250556841929729037037 0.0701985937275684639705103852398416 1.0727842572806450721950776605559853 GT 1 -17852359449.1733752711056075460392320268520239 0.0926801176675818310797464244179437 0.0399920249374114894831684430697356 1.0408136871978979956893519247718203 GT 1 -2746145778.2352906820300002238546806002340821 1.0961566473483622377117241518953553 0.0780454244659073737772539036773068 1.0812593239558196876797507480929617 GT 1 -390075557.4187679147592876204782307022166324 0.3208164361809285696317241992555357 0.0738519988564198756612710937257989 1.0767212286583727757193723975939692 GT 1 -8.7299497618931210735036013605299532 1.0166888072744114212384569014076694 0.0783622494921570389166603063366342 1.0816030279568542430937043926229954 GT 1 -13356637364523960604918000452.9542755165231802845265021103609475 0.0393224858623665387492185337009354 0.0117012246607338834540087339730254 1.0117702227596595336831364690769499 GT 1 -1973597894881.6865724861571174332728206843734854 1.6755629899575223825292386901323414 0.0365646362939252165408722434757817 1.0372498782705095348137697652620069 GT 1 -113792.5886300062169532586247381688192863 0.8712170622761267813007860702519267 0.0444845837341253390414635180807036 1.0455043811924308460927876097357206 GT 1 -2809609565352562052404453568757142.6784606182604338177318636332314039 0.5461241978012431518429273693654436 0.0145414907016542004878294165661349 1.0146482544442401168766325072276411 GT 1 -196946891402178258636999.5385706448289876344749439871801560 1.4096441422974637758136476212136954 0.0702433986762740284402437308075626 1.0728324460959777586896122381252327 GT 1 -282878.2079157566306179023115716329118611 1.4419774649207586515388727749452285 0.0233600862107740656226569722400048 1.0236372580389854563550637352429952 GT 1 -3356528274985065878.6233858393907882228788615045748337 0.0431430362533046781401136966400503 0.0467307602295222920836400384686761 1.0478578971064425402241876061721613 GT 1 -13529044997147021534426388319642747.0918019316773308051548988121801779 1.9903364087595688127337284795379346 0.0862298092196005721410808743884913 1.0901761715489791284276077503351014 GT 1 -476084316.5976204960154435300444661075564281 0.2577601666143514493032424572323254 0.0786899847739593836054539261217780 1.0819586921719239867610468342684097 GT 1 -5944560905666004537402889168259725177260153.5687887357033000181627980133255611 0.5968653027613462857445943593615926 0.0719606128611446353064076989630710 1.0746811040590570512198879256054910 GT 1 -2966790.9173037830235181216451586145524244 0.4420642153110405951045408734063751 0.0708550536106992837306126614662705 1.0734905282383612404852877152120542 GT 1 -251184884994581162882.5392119647175747348213295865478942 0.5117026806918861008803294079938966 0.0405419836050753397418204241773151 1.0413867202030780080042683872613637 GT 1 -17926985770472248630397306734220301638.0144695557711264765859161736165289 1.0142373179646063909233254733418809 0.0944726638770768660055594492575726 1.0992378131326539810954771733872035 GT 1 -1606.8168191983858118923349739404766254 0.7488909594580360363015865207362215 0.0094572009449907605297742945332361 1.0095022042313436343607740478159456 GT 1 -1234930905237278588969160503790562962.8736226670979905523785945711342996 0.4300336122014696322669137688802438 0.0274940305767874519261152439189090 1.0278790652839914333668008134488785 GT 1 -34737617813175201364756045926974998.5489726030369305312844054777051628 0.1785860597426357449019986722555480 0.0390753581185425171726290623604196 1.0398592894430116056722827883766535 GT 1 -706416683706.3606574130510450451709160746524469 1.6964851158450151743663826255576418 0.0747222072119759356160326803961170 1.0776612700281001638206676159321827 GT 1 -37.4119145181575989889080217107930165 0.5037436614673260863465162703433935 0.0069668105072599531423888536043326 1.0069911920385771337847020554078602 GT 1 -151962686172713439183733418808999621.4296981451921332958172394297686720 0.0823093051837749465199261547481204 0.0761565072477570436406865221370124 1.0792126018251537344748437389034282 GT 1 -43501622.6789029366154627039767893723776003 0.9015650430760496332715878182739665 0.0780674247581816595690509624364340 1.0812831869045539114827430934812652 GT 1 -562466559225822515156539.2614887313919330129287003263701351 0.0235538751891377623827437654066399 0.0101913297264063995434901544919602 1.0102436168809813274674778442933116 GT 1 -33799162494.6961636086193310287919245577498711 1.2292269621169936180258078819472149 0.0522716621529751279641163827601059 1.0536873812467725634123478285991731 GT 1 -1176178290306310145952356159083352211.3117824501383188029095097429554933 0.6134584478419003221095591920305713 0.0367652279513454205547523366154891 1.0374581045303372461073325048516519 GT 1 -2.9640561763450328130492183397373884 0.3580463764634971358621291273371136 0.0058673745681008527687876880589530 1.0058846552381923334644622404473889 GT 1 -80393380217808617876808567756058.1808174516229031868089450337576036 0.6475528104106154020112875982713712 0.0526369844011272857127449863333183 1.0540729270432991279913655947251370 GT 1 -22522699226844561448662637552.6683802095780589909807559780939000 0.9959634050218112337293176082487687 0.0712876573741909623071355351742895 1.0739562300701090795580337118824691 GT 1 -224343617414426628390.4027669817897470407706430207820693 0.4051186038520953880578954719297526 0.0512644956063632266346264781778657 1.0526252290254999046169037516754141 GT 1 -404477708324738.6558229836668772062507334391960192 1.6285785614576220907809337971795828 0.0081366824985022564188978034199497 1.0081699659671746124595966586323534 GT 1 -908720853.7644014768089779055057264370258678 2.0126254147751706362511909493817045 0.0655242859403780450934314485702220 1.0677696405894162927571119207207664 GT 1 -1758918478498917278048698.1383546837057254268161897456036909 1.6029427942216636263863787190897565 0.0139686890689345831608226563874130 1.0140671693755171751837604786548565 GT 1 -94.7378132434212994751965085874896111 4.2197045541553125121414926173665263 0.0165019212354671785142341164934751 1.0166395946226152756590954076565950 LT 1 -18099611750085480576246029926.2122732003331978952287457486439149 0.4688259220780909435720696932729094 0.0776100907849605330894146739057236 1.0807872497932852307043436505063280 GT 1 -226688710840384995442128500095.6109626918331997311187142056037662 0.2193406680415419491461448950498216 0.0558550227690161154457367427741330 1.0574755470532700806620171923465741 GT 1 -1563569662763886917115698.3209529408074778329277394387021877 0.2096622153301064241813745471501626 0.0292955010761328287741926328293406 1.0297331835534984453450296795953584 GT 1 -120366536.7059997925539501765376289284401009 1.3843641705152742182587253366113934 0.0706249805237125274399839620186295 1.0732429408113896039466088321077423 GT 1 -278279010978586422100661032836116894718.7409373975564396018642650922543324 0.6232718932695145711415038141137125 0.0613974597877943789958676778371660 1.0633631692412868149863674700209639 GT 1 -4982651463493627466307671332424408.8396779081101712185359523759852395 1.2601524456608780785565036094618343 0.0918364748702429708602015802057143 1.0963308228405383010726148427082410 GT 1 -607152943210297376443400502126193577.7422247417870903493581846981347156 1.1928790157057889902471826434025735 0.0066542481986770726194713754206855 1.0066764864155312840006088631484547 GT 1 -28.1477328565467688815938073889504571 0.2706591432385591640803891750557905 0.0645460643794459204101735841422509 1.0667233748645689326760541000542362 GT 1 -257110298157.9150389713779722259985382267540800 0.3767994645525283032785392865641763 0.0288639712070564766970083326869349 1.0292887290578582368756470818456419 GT 1 -13644869087166451720601506695519514823665846.6879084246788579140098367445629254 0.1296633112418905698683636964560568 0.0813569345124425767001563766637178 1.0848576265351442584269822306970448 GT 1 -12438778089349324012494989581664217924415563.2282741232629620545314205326639424 1.2527528451908603630149871758186884 0.0078873861451108631833061438490168 1.0079186561092641723484506476915477 GT 1 -15438953505859945850018761814852.1404093780839082193129052990821044 0.1909287928026173707219422371166656 0.0207870679071201956059994777074924 1.0210061605170852085608296143081221 GT 1 -251831879285361.7223023974530261229283757052249842 3.2826898136423277537706898172482345 0.0479481476312561225698129039872957 1.0491357789001419812092041741822995 LT 1 -4572958617817744395043091063090847.7545359984281439869018251818014135 0.0389587263027106338144008859703515 0.0065136312755313001346150409019756 1.0065349375429034907226372191109157 GT 1 -156179820594645604532.7849332683377552628419040365058558 0.5014261856397473668694953246078014 0.0988764014950600087377992664676000 1.1041128515312463540243599153598874 GT 1 -100648324065484036037764.9345609905903851832540917138737927 1.7893957183522761623327715847143070 0.0426407167224166885999610131572824 1.0435765313617798415673486095868983 GT 1 -828024168953145878690928.2478777998282349191835495057471374 1.1214625558444794881802799231131053 0.0896559415504587833970418264248806 1.0939326647195341265828584787749693 GT 1 -50562217882741620192597.8720371228006723265198805199295448 1.1342934302581455498329632866490282 0.0643406489550407461986142948565541 1.0665038099384959875622195502493291 GT 1 -31716008668552634761234500567956453024773.9462140401579557766899840797122543 0.3699535903610277540997631920418783 0.0447361679764560388114563637885674 1.0457677127562519793371940140605689 GT 1 -591751089643485823409635110868767512344912.8072505590412525576165990288641432 0.0742264290796170106325900390295262 0.0159181779736999118423008174310387 1.0160462329211061507750945013835814 GT 1 -5645578598475717319004826626756776322400451.4711164699834695020656193326769866 1.5687824987436897413203144627412462 0.0954438305744910869308539705254527 1.1003108761019876564147115434801451 GT 1 -103565514845422564360928722.0731404285985061000599119813191312 0.3178042872061490420298657399525892 0.0619338363343275266807348908539123 1.0639347955065196500963711956777627 GT 1 -841629539102434724901720531618574558355564.8071882879307862062407431011629456 0.1103123942603108396296790599047433 0.0091395787963750148576596123247931 1.0091816009860386324182486522327222 GT 1 -4427957340071.6211005930320919905715942980558160 0.6236798078615590384612320562168206 0.0729713401178484690411801989190865 1.0757707970849716419573572128995075 GT 1 -48550005924801613891560654.1046296849850602183186548632021968 0.7181994047505577963740455701565001 0.0413680023946641444180815446651499 1.0422480132963355129200428090914277 GT 1 -3095417788655016840020321753369238963461.4844621750004530259155992884469949 0.8822364700552682815584729775336226 0.0072862449458009321590081464575844 1.0073129192779653390157324126455577 GT 1 -185038135731788769137636764393314020357.3462981119024334218936829592361207 0.3424507307522308397539231812508682 0.0664114941804575256430784141027193 1.0687195097613058382121036022242066 GT 1 -25753535.0483341954317661394546571124848377 0.5638705528972988526746268348810809 0.0590701337385082672480486324955655 1.0608866732460767415090419221791495 GT 1 -343450454437402733468844130697736512015847.3273750634952067243789008468872380 1.7281024970567541625924233277695383 0.0136411459080121174679870212170334 1.0137350412096585162709763113681954 GT 1 -448138342379876108500513922724196.8854260817544287352948345921146475 1.8998239360673632514945668952039266 0.0233013753481680780668079148394286 1.0235771446879525892668807271850337 GT 1 -600065258942660856.6210313753218289406030536641034902 1.7322507458908780559971885583296942 0.0814125678420196351418284050084463 1.0849181887015848420377853550565666 GT 1 -125550229.9474573769377676672851882809266062 1.0806866317325560901203547593026359 0.0556137110580547972480903990979820 1.0572199921502648087025369196584828 GT 1 -640517589069874349434988531238485684103.0737418846957493115653538562747659 1.3493932335028978699453328970024897 0.0626159973310711922681702465005696 1.0646622592792952167713686317194850 GT 1 -48369773717681242806591465469033596508.6407248976585883118736004446586800 0.3304802434116701069499157707740453 0.0048172549350159420700138657472566 1.0048288953057048395656335625085340 GT 1 -9465210387741.2959242415596846365993145568834114 0.3513370694390030773790001765715854 0.0440548566767040378296959053889299 1.0450547490381022674451081388942816 GT 1 -593025.2222415467085967665416592741124231 0.0604123693388395462300417889631609 0.0050881259961189073040365450556152 1.0051011145863161361103901947786105 GT 1 -1141620523218933755234062443312.3911230918541504986777661442824377 0.0170793109968773360128246102719242 0.0121948598580538108466295730325665 1.0122698272629657509782077378425248 GT 1 -158140561671574084419180947.8815374796194125943553499254885983 0.7803681326899516003776582531580814 0.0109431310247878469579277958075406 1.0110034475209523623025569584204882 GT 1 -55747601977336912717875050341227972469430.3894448481653252406590142127538581 1.6395153931546977180816853338676279 0.0034770377080791204301297351758266 1.0034830966525535125803093407196770 GT 1 -364127577462649116794399796905.2206068481199991670736353107736338 0.0412032684210182217576115069455082 0.0248469641748760643039902082345942 1.0251608604805537665297625536547946 GT 1 -144613.2119646768234618877360307548026790 0.4044667602606582923608982208869515 0.0284262176506207608459497577295405 1.0288380662143044854632931381186122 GT 1 -2.8457602883500393481232119600241464 0.0848983637314750191973381743020836 0.0827882524007564050563682155228304 1.0864169199695913827533696338241002 GT 1 -1825641110003582724285643.8350178163010955236690422273903458 0.0038124706247280026101400097426211 0.0613782946522851558460066094075068 1.0633427506519198609967074663481032 GT 1 -2066128155414053043095209559958629110146.9041932348289002335458874538747162 2.2414202492723033824395612202809267 0.0368103616758293804653235230151764 1.0375049620392529301086314436577691 GT 1 -1003800272013851987929603926.3670456740200706714505672771421559 0.5929659813319763125647894384203219 0.0448282311033250361296007327112719 1.0458640919557349836171614178929574 GT 1 -177297239839705250839112293949332058940752.6351513829177729082080064198843031 1.3656488395927529883762266940137991 0.0840185537086081942184994883943269 1.0877591696535468699560032503927842 GT 1 -355799.5044884128844750076635336485437674 1.0059028613569114354105808835651687 0.0942310518162564805174593062553839 1.0989710295430813878173743309311500 GT 1 -209746158077070596419502258154656213278.9576212321265619456350141764104040 0.6924725342737581756822867331575741 0.0113737061139191832362077203140747 1.0114388813700341994312997353301279 GT 1 -109901394742583882241.9821930631117513966436729171075364 0.3649082004463547493608703632622282 0.0873826319745657040066994264788554 1.0914385793030275599315936826283096 GT 1 -878351417132033336174648025901784910.0876317284983189800766270920485597 0.4469693532370864417329773631589400 0.0363526465269476976641850350873984 1.0370298671978733358066103448707474 GT 1 -9449872787692669464361982555750.3877486996437287008575486267512355 0.0860970977752473385447776419008836 0.0605092587866293400872474871266885 1.0624173151922172384679743534812546 GT 1 -492577315234522791344318746445697070.8517445875484862423166321896716546 0.7619447497960754057138527172115845 0.0445814536285525353706332974801937 1.0456057660611957303721854409410711 GT 1 -14126914.3732471459849878829041088106891679 0.5059149730374146138991881314316844 0.0581464975438758276572887591586820 1.0599055340623849094687998459482658 GT 1 -1284509468.8681868274523801274821014496213845 1.1591906665276953650756490576820812 0.0180358817401124522814365933306163 1.0182005107454694835794598133392797 GT 1 -1925412312209258595071878915463.2416280949439944715522014124974748 0.3137833039126865216034535857682642 0.0155699801260603089363201291116640 1.0156924653248340973310888436801558 GT 1 -3754788376185006923480300753.6590396417719215851974793610001226 2.1541267913316485644959856253190661 0.0884716827057501088310390187827121 1.0926326186490511372881072174921078 GT 1 -2576315998539.3196398921659635697506800872176020 0.4617007871814264522223818153478263 0.0867188194421021542739102265829357 1.0907114714774320224556552628080230 GT 1 -24874.1014334113401433388842639738591231 0.1454926452380565616003541779023546 0.0733181452440546200350989949947047 1.0761449710754774859799395894416718 GT 1 -193544891.6791911898315010478500445630757358 4.4233208598496431693061897479771981 0.0740602282193680081807964046926167 1.0769460877248485855471112025358596 LT 1 -868.6770075618574156072554155534588179 0.7804200452505412926070217943969903 0.0640314714756552163504241745760694 1.0661734264412497422711265409119223 GT 1 -125562463714.9522772659680020168514472210860248 0.1244304347350300712337299091975057 0.0912205508267825150324927987999350 1.0956528444165985619152280026929271 GT 1 -970255301920791530969299187486828892.4745297395384569465509151837883737 2.3678350445939203693518023725823335 0.0164172624158101668402051025808614 1.0165535190338487455547160503389818 GT 1 -4635915280842939528414862071967210857220.3894242048598739513725534582238600 0.8838522113871034564498092451429527 0.0715725626279269029150419004374947 1.0742630516233809980933104671082928 GT 1 -4182516734806491201595824238148290384532.4913220469642849564845125611851703 0.6917302501313261017568943516003726 0.0198739766168717810194037743391698 1.0200741202962784860120984088383431 GT 1 -1260218265042017861540273920432009.4486770723138849440374540356830030 0.9785167844972512975936303380447877 0.0489689653989066465694238157120625 1.0502085833192722817700396046335717 GT 1 -8577365214.7851107550377441484013053399553466 0.5291596930168850033825788145669572 0.0888084155144484867124651701169567 1.0930021025310238136368915736760629 GT 1 -51127566292918883169355365532.5972865646655804164273638763670042 0.0472335104860048621348804350775204 0.0006142675067617337206550051831598 1.0006144562463416839067364727871698 GT 1 -34113474080424294279193852155938883917.0267209021339464873566737903231069 0.1320937026972987137014692399254104 0.0200977834984994139342696060544669 1.0203024913758844579362877585917967 GT 1 -272850391890821623431268301400.5931623488167028854547952225961651 3.7015904195185692108550923591219142 0.0089709976044555289492932417431159 1.0090114792927507004579300950464036 GT 1 -2.5911623907976442142753580688486908 0.4585036150788048993054910094530257 0.0064078326000862598005758089248754 1.0064284508856107541768890015722160 GT 1 -4521235559559314254893242600867630669832379.0805908833933460754880591936392039 0.9434442879260311872183969571468904 0.0874593541972416008633119355130607 1.0915226511720271816076045958697532 GT 1 -4858763356455554548.4962447711874942683489594294048227 2.1031281147499087601856992717082815 0.0905874377606647503314810664627588 1.0949564239200479270090951656788691 GT 1 -629929052033299072211763232052450707264859.3380584351943517290761356800184350 0.8503130497273703058013767774644261 0.0476463316714941854929124061262768 1.0488188128348699946702439096848349 GT 1 -34706745245595542542175282043.4129503884705496125341990513021192 0.8767053476141759737639244881355217 0.0843999811992455160745560874323372 1.0881756703699177631949886665136334 GT 1 -2950925097.2254397570736510178260164092633064 0.2484724505786436412792773201644121 0.0437055330077483574301609556258315 1.0446893934927437895448126546872727 GT 1 -806524.7807018713731252653328979345731869 1.6517019173824023501965571906150740 0.0456262587703881459279560065877374 1.0466999219574714983630636132510900 GT 1 -302035423509229864356806902603.5347121661763030591197359760251435 0.4465607089274114046272295048143440 0.0469600424387772650582540190401278 1.0480984480209337643362048314195820 GT 1 -3956353315.4222612518587472817982531675842140 0.5141381604655770499516382173300190 0.0533930152964412465718879048354682 1.0548712828095988149210447452298829 GT 1 -7563716738876065574880.4952423471312005327047188725585877 1.6260101774116324964853700353462700 0.0114599541397198111252257927718747 1.0115261254466923108077825206801518 GT 1 -1495077260198510269132609962931770779968.6377550790579845673645265956441773 2.1341037404345342488232730066024222 0.0673490086237973116140571581786582 1.0697242195250980677507742496685942 GT 1 -6712359644667145607.2905958685035134980729505164023570 0.5311773787194549800818568274576605 0.0132668215936621079611932676145566 1.0133556120571654246082050638352984 GT 1 -124512381219918111178558600984438434099.3235097906317656046439288568386207 0.3677365770555649404652997164209592 0.0748179835388363630720319781910385 1.0777647862746754550344117681579903 GT 1 -1380530103864002396298695885033.3203441647240557324686354584618028 1.1807166002956927931512160500304398 0.0534008726714386302562669230087210 1.0548795834113637171998144989548503 GT 1 -28409634989202565088647237650782.5817602684712201785981942481575767 0.0841619904679824749200753855947029 0.0729887748779165823931519609697042 1.0757896044042851500803829992290353 GT 1 -2165872573786288843492116692.3078855546452063572474560683734833 1.9954654264302226657193080929179395 0.0126340327514102513101693602378774 1.0127145207874411418003422632015805 GT 1 -25531223818615685561130.8115947918177038663758213624593087 0.0886981339188523977324590655612294 0.0557438078856652233704724584795462 1.0573577597046019686806207566518303 GT 1 -17822979155196667859096338.9025070661179072808214782160838227 1.0976920049356898268161474265665521 0.0648571671392484213523293014603632 1.0670559989425239200936303699284717 GT 1 -1177716.9506057974783256220349601356395537 0.5332499239607233766313252418619548 0.0464661214964221468409338746819517 1.0475803238926554599887147799746876 GT 1 -490612573.2656146777806085219512362719965557 1.5943820298579755469487443470524061 0.0028284772733266870146319605443332 1.0028324849740805056030436271179065 GT 1 -50277856994723107771169099586269020159987.5015490437573758677951245428496570 0.0419089602106505121039838385760409 0.0895901166324263102964284760937122 1.0938603595974093241134501546421769 GT 1 -10.3570805375540499485401223451729159 1.2865270575838785935011850153495853 0.0730480889017380667344874884611436 1.0758535905997848559941900443002543 GT 1 -4901831561672719363263785833793857836.3684372956951096879481923188614752 0.9615429615176825829188084364278625 0.0760003388186100487822550668511556 1.0790435740273275343827767637934108 GT 1 -45945226956407819750598365207.2931058645614372643015358774654233 0.5699818970615199420183028638946123 0.0028776236036233697053584716017413 1.0028817719225370421805041288474285 GT 1 -2084396970547514025076071243471805126319.1068273605268514146949531501397162 0.2342241211688838333091883319864814 0.0485472036803112378713128819017332 1.0497652032298860315553671154196592 GT 1 -19567855346876610232849709.6852186435530321141016769427363305 1.6283817723472752595884106062923778 0.0981169541984742630506401600013536 1.1032704283001424145314153039003908 GT 1 -7287693472.0669958586487142542387928063017725 0.6104198267403738907546666668454796 0.0186546497341262239553825799368411 1.0188308423609592244854790478510070 GT 1 -1350524160496826774977849925928174922517.6239622431340296309534522899877207 1.1289477135856347501259334232856696 0.0063385672284185539523701912370473 1.0063587412404101842787360032424260 GT 1 -653094946813341773491258974659720456819439.0323138020677287776831306593164441 0.9301545584735686157361450694788329 0.0122846620907916101278275179367099 1.0123607422737665949717530144459762 GT 1 -755965345436505105982244691217083999607979.5242479379827803523411302504481444 5.9921450025683207876100166902482062 0.0868744119506233240764934625346085 1.0908818524808009674004632748665023 LT 1 -2074470142645031753362225.9557116774200885279791509634368917 0.3088607501795744024802479798175396 0.0592944737479698780832053402872593 1.0611251254046800303249228099996728 GT 1 -106603591679491447545555720.7169633653668284450026128141658048 0.0384350989896157144273696761102513 0.0390600593852428360788485673329917 1.0398433687236858626753404633037920 GT 1 -207718705907.3182388155261825467493674112502198 1.5347126742649086532040820070064997 0.0494293849867426160580311890122765 1.0506928273216125327143267703537048 GT 1 -7949769991715464562.4874108365306989823263153186326000 0.2750535346651821671960204712568456 0.0466693908468561057628243810849211 1.0477935213720984650981037644372243 GT 1 -9696868.6371027594933988205971682223816278 1.5690170166927250607335742506110836 0.0701581654192180743365741779462528 1.0727407776416814073153099807399406 GT 1 -55610700185512601145683670921451966652.3794750040273633251160575447565855 0.4143451026675470897615482714015654 0.0134930690232270874357135188718805 1.0135849277187319821852780967374243 GT 1 -7982642.5997869951199525902991874486143753 1.2966168378614222222065466128483670 0.0759134069738101369513583413952313 1.0789494963351569348754588197532418 GT 1 -2926251875899939042479657003171793046680762.5407100722763808051546127077170250 2.8504121788404319494921104247563957 0.0516344644829541949070107433936940 1.0530152650578438738370644199448199 GT 1 -1890198441504534089168970339.8348890527687158686993448699009966 1.9461386861539810335469727545244836 0.0796367603105863486708314884932650 1.0829868611128645308985321525052495 GT 1 -69.2813464429822795504016747006970918 2.0400376533670285509493936726672071 0.0605303701416159301336910885032914 1.0624397865070065296793542531026184 GT 1 -14555286247.5352504466195288279043394260320175 0.5699019929438480179247941603153686 0.0253330596766793285544162295570621 1.0256594660111361835793452291777054 GT 1 -803.9139174224783708185668601652176744 0.1005046901622294342792022826903456 0.0590460299815097347536297072704987 1.0608610566202944639526755648880400 GT 1 -18318138935720993257643643126795382.3651542753980491727481370839668733 0.7392108134956923202061595947892394 0.0068460445834854082539502068729576 1.0068695862531073199512526957178133 GT 1 -16825745547150252019331.3960507321348611169478132599934801 0.4759382435149952590162109050333477 0.0952948737594007008199283114370750 1.1001462157339316413031852793871306 GT 1 -23681377539198556058.9430813681914444122080023690167343 0.7690768092476009106292497935998226 0.0403085728142722199795893334598610 1.0411434762048216788786589018503788 GT 1 -90612709.4281202747599419182711879415633297 1.9883496675685857062021895900959484 0.0400836709299553703754437556695321 1.0409091555373697339954982088468848 GT 1 -905883913.7402619373437905422024067999690282 0.1969796827477936197476238730323130 0.0487744201608051744188302291579689 1.0500040417896984877379304217032928 GT 1 -2629364404.3780614084092125242588440541259093 1.1732530342277212048271182951141064 0.0760289488409965263976369540713859 1.0790745377457433200960666284936805 GT 1 -371248502142711822431.3224979005170122578537355754660896 1.3851195137947348601387491812937650 0.0371621514696266978317811788246892 1.0378702629501800926925864296500783 GT 1 -2793129126.3434003350861975811553186353939385 0.1926850441511052514368265606195392 0.0350775672337191244360049930549868 1.0357075614269177191997921013620489 GT 1 -65639989990854150.5656546179123080895836527702115968 1.2543449651036594129257707559363580 0.0394953141920765672133359881549970 1.0402964182763954764850094930157367 GT 1 -24.0716496040212722083662184436133673 0.4010439415253862548278306386687246 0.0957147046538216300947954474306761 1.1006103761816030067429097413651155 GT 1 -10811942222022804900502007211542419361538.9927821821806596253946630050903028 2.1230190882547409917871937273387743 0.0469499136742003226184869609079450 1.0480878202286009503593345420672218 GT 1 -2224072756185996236919388763398188.7446659210847837032322607942743987 0.3233247629303748810835586918889171 0.0020809656463819749926012464782487 1.0020831338639056799409626970851625 GT 1 -130321542.6747324442751273169817280523439158 0.1154333544368265051200403711733233 0.0181359552172892183120923306288688 1.0183024274804941430637634324483995 GT 1 -519308409334887946833703189354707283805915.6287260202942704110796281230407731 0.6503353475863386094257650686291756 0.0100706514244701533695011123932771 1.0101217034753319590471550359473261 GT 1 -588438712.0565277889307472507265498149125041 1.3606022074652441495291662562972896 0.0841347806517945162867016739922949 1.0878860655837820610088447074897517 GT 1 -801836309593954046595639326.2548891921356351099929813148015572 2.5966304141983859899796805928093044 0.0243421734883027137006573489689902 1.0246433416297155000426710180798738 GT 1 -147288662525517295797663722913396353094.0548443756763049760102612953300450 0.4478065432539170527224827072445422 0.0083180299905344870191961939994545 1.0083528178472696413996804679383345 GT 1 -90951008542389943770744834.5688853495921682938013659719516051 0.0129767498586688958223542788543053 0.0653490283922831999846163428697299 1.0675821117825651080096793888912037 GT 1 -312399182.4802129729507840776585963657342252 2.7278786081189981753354017823482891 0.0644092781060869220552862263544193 1.0687934202534973245422650499953345 GT 2 -174692041542854514986051909808290769926835.9507040837750155433409478100118295 0.4850766715516477878672234374459927 0.0783573888323692459271557416518069 1.0815977540333764427923640778101031 GT 1 -272187.0114148370987826420372070950889520 0.1933910435577123535057703631201378 0.0324337457047909126358428361948658 1.0329713765311519444012504200252925 GT 1 -215505437649462632.8424726138094095954646551035715081 1.1742635486762021462420036703382027 0.0218876536322086120341155666852540 1.0221307419580861721688228334199900 GT 1 -464687741306679506099342998795790384.8577176070154232634246546189100765 0.1913304967494352950545752185776031 0.0926748968006440044096429739563112 1.0972544551640051299212353107968441 GT 1 -2495582194277454092126550915.7363289088022147815060664453925536 0.4568934429183723381821896648135249 0.0806852678060521933823698102070584 1.0841267427932677912761605060391492 GT 1 -12312004251409583191004361400506353897.7408438421551759999752526315354797 0.1286327520183141230615413160118731 0.0913782666241006436725376413756000 1.0958264063128143765896858328044341 GT 1 -588636098482426501.3724708320551829817369109777996267 2.4531380798854008211446472499423224 0.0015205467415737145880724469974855 1.0015217039459747184766187242771530 GT 1 -2329298201168502133868711521897298081.6584073572168903888894202287700698 1.4159151459872285878472653537580366 0.0202080573728002452449244133581492 1.0204150332987182243585046374190429 GT 1 -1148826650654568772463957.1508297860235648882468260477047664 0.1739394666385607399017981561247643 0.0154519682053390593937633913727214 1.0155725940842557155724659785795113 GT 1 -50195298228980596467899238.8246643916915036523222464568050869 0.7456345879700501039647213288391572 0.0944830116946910590918215127735936 1.0992492405919102007034466987956700 GT 1 -99173693912777924386.0113283855728556959959434697985814 0.1214131939060863435972970110348508 0.0419742516494900615114247792853541 1.0428806241798626760563429810491557 GT 1 -746813633626053342420795433221361737895096.6661704135346939954837670661655460 0.6621698129500589895373285895765250 0.0175178497962896794294177282857404 1.0176731031353485348530615004604362 GT 1 -8112540637.4665470912882076666434716933919959 4.1115040681368686590398274933015785 0.0429590607891274793906701384620927 1.0439091097494184316148401846719601 LT 1 -859989320283071830404226054117545429762098.1767297515789013980109205310454239 1.4998141389105182278027205865666496 0.0223095773297155098787716456188179 1.0225622002939997935905268304587690 GT 1 -4420847141358439192016732254071.3444447244486175461843233014149329 0.8047358921769297067379272902864858 0.0286649794538823628679242418268794 1.0290838438896206692637569660857808 GT 1 -1024547821437328839425731461878.2190984642734566079920814099637468 1.5458703575632794029807104931468543 0.0087143056076527361919159922287684 1.0087524972061491500823792079487754 GT 1 -41.1748584314396217099134518937078230 0.0069206328885193774610001531921797 0.0449474400270577742810534215954558 1.0459889033949841450136960996982122 GT 1 -19094365840698703069223068727823583211684.5451659515987459837879951707544405 0.2816733548106304435073903842729957 0.0440413831947982747581937309532397 1.0450406547283498973047020402413505 GT 1 -124475023061047594735486608672972423886.4827515573070979971813140617379237 1.9517295551643050149913978497586657 0.0986792440368064693929742355328802 1.1038940847675999631355454166730389 GT 1 -158219067.3820355283968157977927681275932742 0.0504829869942359040589793049421752 0.0824790011665667945462732920150400 1.0860798123033990761368836755555511 GT 1 -1208751281701515851319820636997140495366257.8314344189178005374236549916709897 0.1113815880622081377802609688590081 0.0635700478598131796527072441717868 1.0656805573966017022192792032700811 GT 1 -1105416319686915913154211851630225899313394.1594705129758068564606114456230622 0.0654176995139712956981195800857489 0.0759700440953883139463323979967489 1.0790107880557777735409791123212216 GT 1 -551563584435.5635987292646680844731897266682170 0.3601415631529504469272922497572528 0.0118527837971211363474104947465254 1.0119235880803744849281054068792213 GT 1 -551474983.7248088873940899715442389105597863 0.9311855494041630824835770664457731 0.0455886620487186130240153534820182 1.0466605286050354780849180403845711 GT 1 -2575795260233141288488181385421.8380144707575904686015592240341410 0.0175019893372140699805328659288813 0.0663719957192416234368993464958193 1.0686772024434258436410011867297357 GT 1 -2180185905416905906778666964121715.4208339959474713353432697681359380 1.1889447023919359828649337348697711 0.0136297684515080815190116440718119 1.0137235064717292397698724290649189 GT 1 -1101590680358303092211064015886.7921669023926338180684932612174227 0.4020022733296302175152125893142301 0.0045447372552224132129536389621540 1.0045550959705903283674795043372925 GT 1 -101023296645242727932649445.2314393015038226828928297223327393 1.9784850451357302401351525334434611 0.0942198583987790099214767075838690 1.0989586717024457341244175214079010 GT 1 -1992735.7912650891584240412685577027689573 0.3494035040444917762085019074540342 0.0680315622072733703469668848300719 1.0704563298992421905774643917884027 GT 1 -5.4855888215306882644588443295123503 1.3958163323684617148478871616829865 0.0282582074321139867380102409533889 1.0286651553180054868512977326660986 GT 1 -86522201647055815687893922910396991.8344150429576220371398428056840120 0.2812147005645337978712719609534237 0.0344071029179486304918071668765481 1.0350129651889490673182458540555116 GT 1 -2039955860602532507177.2094968971552558852269338056172475 0.4996948395416521612718343588960109 0.0258037704051808013984122878438088 1.0261425278750171234264512782609133 GT 1 -1.2425538686297900287115329956769686 1.0257318368499846010366035904244290 0.0558960626521626588118998514715803 1.0575190157748312521572012811104401 GT 1 -22346407921067864954004227999439.4335718389125662093456145592460936 1.4219590457575729792019808877054983 0.0935000403161956012774052088281939 1.0981642932617999751771452988527841 GT 1 -193742810148641446236263.6901878651027495225753104520761989 0.2115143981717840697251938107405674 0.0419403319956164325397309582994175 1.0428452190214207314169010268296102 GT 1 -4670928308510976466.7906267052943574305632478014625962 0.4935093568516330089690920194964916 0.0122926282887037243083161329153262 1.0123688075834072720672304057089860 GT 1 -222906894925951.3405692211548934952404817795303946 3.2432949737792720811918499589827306 0.0356215955772255328296959063334142 1.0362715256853050426469818189272511 GT 1 -42527410951248066313.9175997836498541493570621886580876 0.0358823097684811609828470630026787 0.0922040975302280543660388214250268 1.0967357026626530441882157526415611 GT 1 -88091691138422401393117730285624990242.3405366435923404354277074136708763 0.1656103732884290149630733448583028 0.0880969184481727090644056416324908 1.0922215647831460008146864030362750 GT 1 -78740665449174656.2294262647422216484880343972777667 2.3546172328637632438088337397584265 0.0006391936774842618012488218652059 1.0006393980488561627022587491043797 GT 1 -49131547606133542994886359993385.4878735597906283781741151847247489 0.1698103801665194503039556626662937 0.0487393033699697333808589303367283 1.0499671250547146206182581879088861 GT 1 -690067.3045025221066340745888807266768982 0.1599414589403425974912244309605214 0.0795350764666583952502337764559220 1.0828763849195262505819009230256333 GT 1 -6334916205980401518.0817068897976305778257997957361907 1.1409517071865654189550261416728786 0.0600658432579001461199054101532041 1.0619454521904671372953030982464006 GT 1 -6204155624621163441873581.9158122845280030153941207506370017 3.4092067604995495464255709977038951 0.0875386501367223955760776479553486 1.0916095507367608147829070352565234 LT 1 -1807476626.8967618555593079296662966553468625 0.0998890246995175233742195452694484 0.0171048346877751017716970882895833 1.0172528122208928626607262727273179 GT 1 -15896996979895186355808700.5977202328941190282499881049076580 0.0386215916314592113941492314750028 0.0901691468898705648589578919587556 1.0944965724514252585043550712192689 GT 1 -284.6241793561828302959508047374724797 0.4522603478031743259039989126411007 0.0929457680731150144661248442107977 1.0975530380118576711252960964830957 GT 1 -26058037764805427524949900156451.1743893179983536742627846645102629 2.2797873696165929513354179216598644 0.0987769594755309765135065158961733 1.1094107647026211476040117466561396 GT 2 -137126391964469758463682181.5572317078072936552840656365465579 0.3723706748860799438394880658546481 0.0840863602188144094906035611688857 1.0878331984674813545587522703063386 GT 1 -99533825112313864211307280959073091754285.8552734334983560682763484781692746 1.7944429059143017697499108705339987 0.0556754764558412002339021612559502 1.0572853969728560657280885133007836 GT 1 -61191356969249753400471.7999246662677636147344576047167258 0.9826592963932316718716917470698732 0.0461189374498039049221561579682054 1.0472162876853469721820500812592015 GT 1 -56132573630569519.0318515073450506456086275154035358 4.2631002819890408135463329337335634 0.0466259870877112808974579170711257 1.0477479938597087327315615566124480 LT 1 -934936164579.6351733181858674223035014101376123 0.8155837155176392748817591785511576 0.0862958615790247480526777258131385 1.0902484596882952138627942603033079 GT 1 -71827565468179.1102398107219707011193313389484744 0.5380154410178364510886394567320337 0.0154960580387930889086590714519297 1.0156173768874006207635644625313442 GT 1 -35200343754476917050850866664930710809.0841950714975803698027700789938480 0.9417382168754723043989967162495606 0.0202673481362648895062016168362044 1.0204755487560382602689405949323725 GT 1 -54070369951278140059970.6786879191570473996194992294403117 1.3506669263266874746541286127746498 0.0173986061783845061830752601872757 1.0175517407450175145468542068694964 GT 1 -1602308169408699975572.4348358945504394965448418055204628 2.5256987792675952512856780542937553 0.0877764137568307560933523297310069 1.0960902216209683510051304064384536 LT 2 -4826.6250441653623247068471821129824362 1.2305383856910679885841506768370886 0.0669580072125342643287985134167364 1.0693050708009442212068969575774281 GT 1 -11930711476111845750424625541843668106.9927150131622447393385928275543525 0.7983632405756873920705796477407620 0.0767376252596431996106114545685961 1.0798418218837180297818822094364065 GT 1 -187327242781.1266812492383684959875292591440038 0.1969386505335671080470976458209722 0.0946324343996858042614555541833165 1.0994142679041279706608274330753103 GT 1 -25930219274688298470498.9176412367418953025898927420099247 0.1590435549768631816914026282623308 0.0451013663973967652558680908219536 1.0461500869594542755826433709990070 GT 1 -29320869668890748350967274953.4563275777001120645688501153855100 0.2520243167385523722226402679276776 0.0105922016826731054587661395652304 1.0106486983544936464665877074037805 GT 1 -4011366659708207276023348591944510942383.5083285162650620161998928797522466 0.1181187930995478647709415946560248 0.0253538293793816969302311698954077 1.0256807757767008309000896548908143 GT 1 -87971792017155.2849055481080572802398922825090181 0.7736402835925081757228312520746989 0.0542701967702303939916531058904842 1.0557983709920092140975942294543671 GT 1 -5217868238709986315282860.4551719832750298862036342677008793 0.0783871116340753327604468724972777 0.0896679690213012804719445611748594 1.0939458768124621433477276983767541 GT 1 -82476205380805443955630486.3578248595915092580640820717522006 2.0175923457790728435362903438273340 0.0601122927972456771826108701903466 1.0619948712766538560221607252318762 GT 1 -2778993860024216841116611310102889.5159712258664152911388218245205191 4.5952114206802282353182565755483508 0.0113205266421117526280771068077196 1.0113850915387382779662801170616049 LT 1 -287902924749755259492308516365938178564514.6956947899236968382164764787642797 0.0482190228269810757308175061978903 0.0221155575831333966456144991765543 1.0223637729663811517464170340907866 GT 1 -674.5520189868447707351234269434093451 0.5016088711631140155611718763058871 0.0059468110568426798117841833077394 1.0059645637539957876652663348766514 GT 1 -15458540289490.2783578333576101934621305247769116 0.1358877816284315433423988606901094 0.0636676955996220318852373763533636 1.0657848394426076078632910685827484 GT 1 -55573035376583457602299627866113485.4878171689666921247550084659340598 0.3433643697284241161298156804202205 0.0941367267831605068434323221804106 1.0988668968917993458385661610227151 GT 1 -21888075280898258975762815.2693893329341409683352626804177848 1.1479530004053938093595047168157255 0.0662738249366095685616240361079633 1.0685720581876564568452254255637687 GT 1 -4459840257976.5277772599046005099615084093622632 1.5398162426184046163023523981070627 0.0955373033285569599262140977833979 1.1004142169304343277445074824275828 GT 1 -2.8456052387949616526620177992175627 0.2792934364011752804879516198229302 0.0292999283031767313739879111816981 1.0297377444030100902427319364781048 GT 1 -55066076468846267440284159781778816281374.0087519113903035124614743548002297 1.0030840846649404555475589494270596 0.0147591129197138257170773580349119 1.0148691122973902528412192469256246 GT 1 -3279781.8141476995234275936586915637739261 0.5313789432650306431121049398074811 0.0560368629200366189029994229724552 1.0576681633025245036965650697757748 GT 1 -108456784849933790108511996.8426666529621506992170915933642421 1.5437287117149131297913897915294685 0.0550762275898800099239848946133800 1.0566510188581942311411732232416834 GT 1 -615287532430501598896.3682808414243318562602136847790877 0.3642928898192538776552456275069830 0.0452922229160340323306084912883709 1.0463499779089239544231341049638176 GT 1 -268532067035765.6185082064219263454067835449994393 2.6648214021606690443245483850704095 0.0322305784904592067076029146543929 1.0327614209998009828483538850331227 GT 1 -230718790.9674852627291697166470239388773312 0.0128341035360263097092990685097157 0.0934950555968071451572178010348847 1.0981587944135870091870370783633016 GT 1 -4082239948797349080781818995973497243615.3571618168088887679948009148038582 0.2728305317235305569255112732116371 0.0691397301413309555240007640903354 1.0716460990500269118195895137986803 GT 1 -195340204001144817069408391205175364269069.6860505852580844583184629855074377 1.7994121641106139601923049270713009 0.0462887537100139872636481294406009 1.0473943301946103026677735430053137 GT 1 -49732826163465597770394.0878340183874806155276550976489713 0.2599809789597157759141927923543793 0.0552316597084526025617542173579762 1.0568155240893674706661342781362650 GT 1 -3160868207210636889240051279625699956.1805286359444098700720500537213269 1.7962183373893286194702605394668393 0.0539366029554504108677140295196104 1.0554456962723947285259122049531088 GT 1 -5295799680.2472039382393734994680880163604459 1.3318030070215221831019092014635531 0.0140877307905507939619937065979496 1.0141879047991466226429053451135302 GT 1 -15283602057966889862054500531363638244357221.9371869577114107933546393562643842 1.1403784943186671446087175798277150 0.0849153049220395836233129972459788 1.0887386550635664063334076930466035 GT 1 -23361065801267527248913331183196898598973495.5641613909291052865985335877937374 2.9769389929335634241485589664963939 0.0229869030728471092065511117199162 1.0232552217813503219441691083043885 GT 1 -1704348634434067690562460155006816.0639772176178391618700383287151573 1.2340242836268983068945066601417176 0.0707394951601537433647481499873675 1.0733661652253082522155646086236637 GT 1 -142813769661357244769234460297058065847.0456071259097529640207286911002502 0.4763842090807288498613669112422932 0.0315408212489863093006522962609414 1.0320489459639937463673451928086884 GT 1 -320452538768707872721081757.5243540985236577651535928370202293 0.4875538396911330374783540209694668 0.0885698898169661787460552422022235 1.0927403634114448483757307863850033 GT 1 -22647273241656300935196818861724385.2642286668944057727264627067578131 4.4290908206149367433840966958671058 0.0760640048039882250835978518084300 1.0791124790080649847244071521836555 LT 1 -183064241492182.8718248924528980107978607011271134 1.4291434859550459121044642881581891 0.0641313754048959191170599300345863 1.0662801706942624284672283825226573 GT 1 -32676788289473.2926514558508924870112609713240566 4.3761385323925503593592144917174746 0.0576015688912514579979139164371386 1.0593271308689376606558794150059421 LT 1 -1067454388878895825902132563009046981883445.0953580955791412298755377245582211 1.2859997575703571602446971885212654 0.0617943911455930098633265806478116 1.0637861547914232798445562619720645 GT 1 -1.7668964640835945044203644545638240 1.4366409290955664899326397035634656 0.0561531138595292419288603701930139 1.0577913228770681892782516895496435 GT 1 -2453367524978552055547153739490.0604910423819281039780943631894040 0.0377574886345250650469075651201725 0.0785487091377044677127028590878376 1.0818053618018267447847705314108135 GT 1 -11546816637938021577877962129721049461.8589558554867665211810869735686636 1.0183365048022834874005210658241603 0.0747510503458709199189982425415653 1.0776924429187542653737323123629781 GT 1 -67398935515637077973662094.7988014644684138840726469940832242 0.6644919766871561900495112681052455 0.0829088152421881282232716934449428 1.0865483735473822794888413892783860 GT 1 -209576.7711062130698120602217935265953540 0.5971832877879702777174362373725581 0.0895464539838384522814300888415218 1.0938124014168103495811163123406689 GT 1 -4899781778618826.7820437951281525966297721227642116 0.4994344160568846841065418802722380 0.0991598685822593853985384556678726 1.1044274717256825754330433611282493 GT 1 -10785338814270.8542012253595060820137510975865032 0.2042089750258092448765592589213538 0.0335799788602079006425301859885101 1.0341567347771623015984805320473927 GT 1 -2159691308488989463771022.3849841531110523618903723375284545 0.2938995896180650262645803225534885 0.0085107258291890694483020439496573 1.0085471488611207965544310300371185 GT 1 -288204717566769186862592481895882602830.4151772946919016357636509462496594 1.5514381952817727134178074628264255 0.0533617578150547976239227656495671 1.0548382628067535841335134870521140 GT 1 -146983867424959583202850281307956825.4073356179363903828660972503776347 3.6391142243008639028128429710932086 0.0979927294530398374365345842944244 1.1031326984786505399171848878401709 LT 1 -1089110780339464682472568209888.6512019459217692473810944920702399 1.7670768645487350483575779717116789 0.0548706283648920765726171930671653 1.0564334596573361567996343310581625 GT 1 -248736570280786057139971832815.3754010576173018298327816737034636 1.4520336369962375865593327128383244 0.0089970085976112447625566049766110 1.0090377260871905492942279042027073 GT 1 -13693574882407028777831075816.2554958680769095003421082949036748 1.4496433959859814416849375372669286 0.0450957225175382253518149217345458 1.0461441765277277371278193669403332 GT 1 -2385187942515720508934565.5419512397290975476503118910460212 2.1791886533731814857726195283247707 0.0538930621458916089352706188694673 1.0553996741899601479339977116721371 GT 1 -10172833798983148085.6085473713209959826761713803098312 1.1880919492622751577652278922112722 0.0200498989182614669379908676033208 1.0202536258773794241593588328535109 GT 1 -1546430358947757469664.6891074712552195324376190555183565 0.6190793335629832169053528363191217 0.0151091013987455284786114266066084 1.0152244067860707020092677039082682 GT 1 -3186724652.7643811119960066232724504536292963 0.2363633146144999590428324930010985 0.0071404029688853283478776629845489 1.0071660176517678385540963849422230 GT 1 -307365582145291647144474.7921272294829246557826541503330394 0.1942827834893252319387287242395212 0.0572826461970590926076522734019311 1.0589887721327924381172529597913784 GT 1 -7998367661548.7233380301807941290661260109728912 2.8992818142886168950949809994225399 0.0399852725382757193173820052879855 1.0408066535319658997641387391875609 GT 1 -1767509998020340696250405682529.2370083663276026743607317334621766 1.0967937131394678943216169975329550 0.0356336658658940069161909785028363 1.0362840418969398314520863876458738 GT 1 -29456935261343663177599676934761280.6276668686214973127144049137997142 1.2636925336443913945887138422771768 0.0165346336365083835626733635139731 1.0166728564517816960142614368738081 GT 1 -1392295765387012701077483648909.3110261114781714488624101987565064 0.7284137956692445643181397477716190 0.0153832820413076768247700354720248 1.0155028323600852599968699953999979 GT 1 -3.1267148220507345108435444752206666 0.1603434354425499856075162445835779 0.0880643776152220255114526702952180 1.0921858808897360190939315245663280 GT 1 -17260781101233542548518233793721.2116528814164994024839374125472940 2.8659386605942954286685895156873293 0.0277951960574576452491638575491514 1.0281887930720023560898512511310459 GT 1 -170045681688968055208876193869518670031.6152736918230461574611584836995050 0.2096995630398069446405734582687659 0.0122271288077348631140374303650210 1.0123024951196626668448828140068930 GT 1 -76584879001.0910060149940768085659790246034776 0.1090587617224998793910895947787239 0.0774281367335490208454146190369343 1.0805900055417073814268233417054295 GT 1 -48174385682476678558603317339022562420048.0730239989598493133050798511605599 0.1617205499354545230903041446070912 0.0319201636288165470959800498592532 1.0324407195164189692708370481833588 GT 1 -40823144358695.6206089624518277405366417526541966 0.4228680068416089386935677606489700 0.0031460447844520856455466550117132 1.0031510039873260169451438946252553 GT 1 -943245699853568915623530539.9517189712419849385683240734554427 1.8500994721514267229198874192573712 0.0838411836232333429262906011862536 1.0875655490126570024491354388342204 GT 1 -19469792466406027.7506222099168284379007762740977307 0.0659917770810373386349758602157756 0.0382707593485621183376838480374079 1.0390223225565018127413440407664976 GT 1 -783809482797968980064645.0413904891239864216873365892439341 0.0430537033299048523707534792924096 0.0403855753422016429621150978681932 1.0412237161810576451306586319733910 GT 1 -3735556961728.3123792828775113439904802980416126 0.4032006014844696290711864416306247 0.0581628873248259256701301841300741 1.0599229358382592020740071106284657 GT 1 -4847.5806231553983584958773830710868491 4.4454638748570366015001799575755769 0.0380940172779086992649555320737756 1.0388385641505387512067601421524733 LT 1 -40141831194304561589839471158559119508.6580605143921040622503770764345269 2.4703790219188432379911236853734239 0.0907660449906724761441660791431001 1.0996798733115200348601388439031534 LT 2 -139019386246464833719344003919807906688416.6109496874285802277077595417974688 0.8718478490294137240192255797713749 0.0345242702736250592420034991108628 1.0351343149475165384977589906925450 GT 1 -2918279297183766867.8583585136001218698187917092589954 0.4004587634893369278102739443498211 0.0533540374364021640952538206227496 1.0548301072655693151774365042414570 GT 1 -1072586139122626730.6838571903506445742310827422984240 2.6105228653084946196960906428820755 0.0624725159520817424212709742488316 1.0645092052495065425783907699946852 GT 1 -805439818995912315091828222857.3020842306440968414770022051585307 2.2496864667685584536859420419245122 0.0484647396337286691385349799438191 1.0496785352696279969381338439055049 GT 1 -19173574493682289566002460599498966.3402796375718092733982455687183874 0.3557384803569227021064154482080800 0.0436880449355350078536327444240977 1.0446711063302495517760646008773957 GT 1 -100909094237536318362784.7384831881789054192191548558622264 0.3660747282338569231659933165049779 0.0914139587236019110484597945080580 1.0958656886667683006309885276136858 GT 1 -14313557195162516216952404709434.2917718937031458923031176926114624 0.2009549154199186709121484112956531 0.0325915420743307263202710098453534 1.0331344756857744887858061345009670 GT 1 -7.4944204203477804798861278709204324 1.1203881379626769939453026298462862 0.0151670087298501529199252102456125 1.0152832041956153339505426919531881 GT 1 -424718.2416043972382989489946466479444295 0.4207657437586864811789455941520541 0.0801529265456252366875591990053388 1.0835478472619898136668936466670793 GT 1 -2616446540868341285900960994.6283066050450610497730469221391337 1.2452910528885956136645380558063214 0.0090971602846230425905297386608423 1.0091387921272864729267318361377338 GT 1 -27645451342130.3546760018676437835576156745167435 0.0514406137406028159901761174785261 0.0074232704143522119074719028703592 1.0074509600028154613234653038760556 GT 1 -1480588986849524536713777049076938882199092.7239956677112433217991962420678051 0.6011054646332373493960405281522131 0.0846706554539069898667755177327828 1.0884713390746225217860909724048939 GT 1 -4549120678446383.2387807447621988122581302902293274 0.2142288600309290230419795503278278 0.0098562440330869564426921746232595 1.0099051383477825637859267201535324 GT 1 -2815097102041415.5341357633223088891553430087692378 3.0452361497319377931934908516590517 0.0605791111740581713792619261920081 1.0624916692877949549466047324408879 LT 1 -79089929698780154619078840595762.1334901921298392268790969835018330 2.1401414690355218391775452083093500 0.0746746211185296086390311237866161 1.0776098423701502578200658590526891 GT 1 -312031088029038067875048989236.6934579557937689057110359222660293 0.7116561219806925311054766868901520 0.0650789701917139385388237332531133 1.0672932133584947566363233294796730 GT 1 -1153977014931577.1494590003176980531826480814465095 0.6054293551823676924108546912143908 0.0805474338920219407479009482690465 1.0839768228828846744116967615621340 GT 1 -26819585126945.2231192308067114704115423709148275 0.1784357390375863833786827752641438 0.0461058637137573802166098166466155 1.0472025819446971271733938300961376 GT 1 -6141179982303670920571326261301135.0233026006264692413730043594337938 1.3275529465952716319037865354637021 0.0340340162806547563548492601047264 1.0346266589306808196411710781918220 GT 1 -2806672679701053822028961070208.1921910169549898567123403673496335 1.4141656904409860813605569513506420 0.0823207267857688599594572620157165 1.0859073249911410523316184388217593 GT 1 -110837523546975731713.4436741310316987121929598144696654 0.3339397193666051162739407205994450 0.0641350601437745231355016678582319 1.0662841079414738807062319756704907 GT 1 -3169327135.1950918327767461136485548921330207 0.3773724155250012173934446762266234 0.0039736342261421719906389341832074 1.0039815500874072126337810167553848 GT 1 -25643821139491836698451054678594781804.6169246066837555687569813035894411 0.9642386020066634811812224572250018 0.0778527545394871317761580538742668 1.0810503659417579918448545151463325 GT 1 -1307986375235391154.8921507069049436320822988272653683 0.3882539229580568476553604247799361 0.0339632195000869598266629251207091 1.0345533704427856225847892288187624 GT 1 -18856103940399513128181677325944989.3697679329202865808651852213607362 0.7484202411374977767175415290296237 0.0316378616171809992437643311460524 1.0321491517676137658048180694967472 GT 1 -358919691998294663818827570751343773699.6624042216643899190924417969701744 1.0274464224549112366256592249456492 0.0293360147045604499882401201238355 1.0297749207391618815039254317271993 GT 1 -7339751500910979651708232753725498225296800.3640602130734507837582156451824695 0.6129323712411919054484853828659884 0.0630477794214521237437000438529675 1.0651229899557485479867276591915722 GT 1 -606.9556979151963625763606915304020268 0.0215450453335724180990697497104107 0.0563870493298179479506896444753517 1.0580392067969526781279738903549967 GT 1 -18313283.8605544117544019230378526606589488 0.4323527156331547026228666646599669 0.0748306196002983037587795338567344 1.0777784442874005777179375327429718 GT 1 -49749844829336.0845365977264793194410746967756626 0.2364395488667876786999086869171048 0.0610739895002680558743546316991204 1.0630185989383701423565799179893116 GT 1 -1363084823480376225349460147306770.1180205595643586625159809337012086 0.4119653400558948228474123117775827 0.0380720409274178182845973241146546 1.0388157177395108472582761286006410 GT 1 -6670947729139292938692692161356315829.6701378522779785997989520953566522 0.5017482802621820371998949894887906 0.0156230121752436830498205000575987 1.0157463375926478819243765712843847 GT 1 -275285.0329453179780165984281012559766755 0.9427337799189190951146607047538183 0.0398769415314055789708874642127635 1.0406938168305803337361790026016422 GT 1 -328836968161640324095750.3386113051994836622009001592954431 0.0531012928897261594803807164202319 0.0784402216950880607479625093609223 1.0816876333252520147086171347056403 GT 1 -50418874017696848905288452.9738793982772338988894022694027016 0.2163099479360229264236502586397850 0.0636007299946639407826952374499153 1.0657133229413622186069623811293711 GT 1 -10752020059923136226435.1731138689282049551157880506638957 0.6023394317233277234656914142965363 0.0370277536774869965533239089870862 1.0377306876174750736354759609023940 GT 1 -365079832487213851445708253336807425571.6046932531870914304534110872033227 1.1155401289001338198582435074502210 0.0559043878997871632747056773631717 1.0575278339610520803624103159645169 GT 1 -86071374775596538813233242826.6070039308986050496105295218083376 0.3247580187636783672576880238353314 0.0573996669171728933275709628451903 1.0591129111265313431147766818773374 GT 1 -2727652933576.7539487252534636149013334682832329 0.1779197957472043425936104535965523 0.0719090033071496939952081466133689 1.0746254942220996915094629582160349 GT 1 -61029686152.2327050386036681501675232769734957 1.2919689102884352211476921816293961 0.0760659211891646363364751234283771 1.0791145531638223281261434197914493 GT 1 -3602374732.8684693767911331209957071930561967 2.0212392230874704796172950085971007 0.0359649578634960522377911127013769 1.0366276342682562045807195015014438 GT 1 -16737767546371433486333314400448766457548729.9086317349489333298628123926853265 2.4141580568490812838680646993287228 0.0422409922536605164243406803723810 1.0431590903332708146515764240311320 GT 1 -248881056127395423217424.7559731526601465453828379448526985 0.1258494589365269843136614390736554 0.0056658534337524226729283688213312 1.0056819652683359540166015443095896 GT 1 -849804833703839994190947246493040259.7683541302470295299641532820150893 1.4233206262369647931614911215125916 0.0693115788537689669823184858144982 1.0718307288840533445258031325736207 GT 1 -1370981.5379424624595871480402111584404903 3.1942665342376414703462326573541924 0.0321344872173143085889358743587270 1.0326621344333917318421355281296403 GT 1 -232601772791231098351429.1109057550259766925226329380319735 0.0294527118522429066382650271259617 0.0174972218613094249877644908733551 1.0176521076206415459626604680209317 GT 1 -177694727538229010421052787.9169770335921172207842897017241168 0.5583043543177374145178081154363420 0.0122879125791704768148528319560382 1.0123640331953536804159974898701126 GT 1 -13264901855378154284733294070546895196652581.8231069457773220809660881815827139 0.8704878898113896614107275394030713 0.0778231170251472322675482158512381 1.0810182267815252472478408929697669 GT 1 -8214.3596178290047007523993077575611316 1.6349037384813075946219841455008789 0.0955059848905220433602476303322158 1.1003795909630642046273836022151280 GT 1 -1753831145136560604087097.1865965139907360555134154122122405 2.0214571604392941177865245462456351 0.0751705634382889096823022936418660 1.0781459513784321994577170136958481 GT 1 -2760825424257517239095043564512429.6718280929586944455896600683326527 1.7039030061342470871377422646943283 0.0452458816280034716673524600543606 1.0463014393252005090352219434528887 GT 1 -6574446370389044990175586354985.1568636791586867625268271435407763 3.5810437439511719289669940864568761 0.0527082229943339116586069059412974 1.0541481265925977808566872286515115 LT 1 -3004047127572112.0496035343518774780993549262359308 0.0640359881222989126758329224425223 0.0341054030670141970912123002945308 1.0347005636286770155039783634409942 GT 1 -19984716563689649524003076711051159881.9359090605720419511905093983394583 2.1417385690076569198058946738042524 0.0683475927253998064108942400566453 1.0707954874290501141257906699254012 GT 1 -116588850845.8644741187984569102716729658902067 0.2853647092191308878738812000699428 0.0376944317148067797501046306211222 1.0384232402027778234958547597666207 GT 1 -6528284251274623646413826918069.6685338710531824484099829020930069 0.9321916402485909688407779216192813 0.0161360409864640662653931423272473 1.0162676445227398758495060123279852 GT 1 -335970333001.6578502209143110941397808848544434 1.0909377668213010889255134480436793 0.0209012858108876782775884272186241 1.0211228098809531593930206994204256 GT 1 -1686508780014277867.9293422521814175703212467850207420 0.5385648105602229425272878139717135 0.0585607153453337915128326400628965 1.0603454208510692136303166516960172 GT 1 -14064956481.9681203254202371899684930986972063 1.0256876779944214072173942731225024 0.0964142364598660688026192618699861 1.1013842497800737803982531645667859 GT 1 -2485407487442.3071503254891255692147657376095074 2.6236820325809799649310035602441396 0.0011516956223138713460927218745942 1.0011523593333614434239639938905649 GT 1 -19.8259451838290381465816350545714629 0.7227319039555213224153092869438811 0.0897947935202350192546045172072641 1.0940852032667959736156417029966967 GT 1 -1815412962898983896902911252561235.7226724351674880640255048260637988 1.0313941038465233827038459787028837 0.0827989624127503976037726413629727 1.0864285967438491738293363895207340 GT 1 -3706736501183.9904040136463718194741079902290297 0.2103602267783409240539161028251332 0.0462684262276118633002866475856789 1.0473730163369270314301995294813219 GT 1 -1701912680294641.5901558350812036180316574360277312 1.9230838867952372172975682577438017 0.0426500791479684134421991772608342 1.0435863108369415076064039224101535 GT 1 -11054672002145529618066767382159.6095137744308756262021349960582603 1.9711327323848115591047017735292153 0.0600945746663491410862739131076500 1.0619760201269285096794358821660700 GT 1 -496701960374.0094310645106886281141116604728668 0.2392584489214575902441377632814989 0.0864157876039844021155533794001572 1.0903797208820506748033914495230879 GT 1 -220443.6076929259222297118200368560161416 0.2601920764763335152318641502857780 0.0903191261931384793751952378963008 1.0946614291010295084855043645265420 GT 1 -2290283671099380041913.2185841750293803943156396561096098 0.0411649364729750682098303190713853 0.0206369780986501843057099451788520 1.0208528962962540226456428594053936 GT 1 -9408191964315139177401670437.5669079389613609100486524074695801 0.5670155568922456108474883178876781 0.0876728155011847650273068397501237 1.0917565983120581086028381521243646 GT 1 -2.8479621083125679206551105247823579 0.3087919619912063772123583327803583 0.0884187304323597155620361293535111 1.0925745285882156499524042347915833 GT 1 -610356895888844324151307983710090.4924559836686336002740324131108147 2.1028107012915003539992515947569819 0.0876452173658464898518420405528674 1.0917263485087088233402772862035792 GT 1 -665027793.2444014352942779363365709343738012 0.1419727103871060230151836590878080 0.0634016527523765797224048193148204 1.0655007468641657009641365829280929 GT 1 -172068008578331842772141394.3289889100791598653607719505129053 0.2170566858007042256576381412010722 0.0033290279985918911451045119055586 1.0033345815409903661671693356111640 GT 1 -70381266641090323886.6068659107547952116797010445023020 0.8071170975464221439789517531029189 0.0245266259291214230605754213961394 1.0248324139394741917175763549893020 GT 1 -1953244612752295778.4185772035087917895231942775958514 0.0963742713932195772713253129604067 0.0038798733866824202853401917403742 1.0038874196207098265924071529598216 GT 1 -5286696408370578305813597558773494.2657077739253236395547903227928695 0.1927763625932682943209697358024441 0.0870081277292932032919637602329566 1.0910283006494586677197045635360316 GT 1 -4341930119001368.2025195077565597325032765142384859 1.4480974767328591741016536313227745 0.0281149113353096091783249142679817 1.0285177030487992334775026277139002 GT 1 -4623.9756261801518596162791389739041392 0.0210372815639331091473556796001570 0.0654095966026167988318035631871826 1.0676469169074298740431548245697807 GT 1 -55.3090441704009206415929951568921222 2.3054687858575448061498141772313965 0.0134143798640037544817584020190230 1.0135051654600171814528555281235492 GT 1 -3720135183721253015328612583902.9195210744866614299355408053270880 1.8333133775960761135506981051033176 0.0367630034702290720307574214465629 1.0374557951467764467782875676799900 GT 1 -74578381056844246092949.6696773422404129284233145886657693 3.2879307162470494405946158473755492 0.0658919920641576014456473535412940 1.0681632072508374824370298233508046 LT 1 -7362249254920424028145419.0850141327085372873400852413570292 0.6373096196414010311359422952112643 0.0597337186527649517994333582974884 1.0615921658047591240374592148349393 GT 1 -862617612887724.7168642065145668833564711139507425 0.9642550042826928611768927272483808 0.0360329081637141605943849758997193 1.0366981220535640208051823513707548 GT 1 -779468362.9785124276566937726418513931408955 1.2897961572243203657879908898644557 0.0860169048556650219470837556476479 1.0899432031647469327100836880600248 GT 1 -46803954034082940901344041379491903.9086938069708069593332554185978152 1.4668414388374436908843787953886426 0.0038133410718473811373687365963319 1.0038206303939274771625150828690268 GT 1 -431227108911275042917806.2934463983476538224906237532200276 0.0212469857031298764014217003221695 0.0669976186978461437525630594619293 1.0693475258313474014962616106148906 GT 1 -58119674865784.1807210912638386456679168802411091 0.3423886290519550514204779366258915 0.0504709685441760085926470120882175 1.0517891736776562878072054717187135 GT 1 -27652521984886318300075581.5343755854394965160165304256355556 0.3707845974770097313698291490371033 0.0993728056015666332467548465174538 1.1046638757028709738529870822913075 GT 1 -1790449449760222085526577332762119.4916618554000025448590344687789922 0.2337524644109914035371504723394882 0.0906395744059877641625496250537581 1.0950137555889104643650570980646535 GT 1 -84343807.0836798488359267162507236478966321 2.1066891409486612617782552058031486 0.0791487558193470537796634008672990 1.0824567713194790299412983318349039 GT 1 -71017149078857286594955177467.6212526881383039030293720671801662 0.0722292527087754944206133195419512 0.0807992191324339455017193932935138 1.0842507029401559891999957307181547 GT 1 -74500906706861694.0211665652826963470694645276531287 0.1261157948854147927822893888932662 0.0130065193569987392276040029993661 1.0130918447953927977123784594095945 GT 1 -4511772657431889183361.1927093404294678438705638866696114 2.6421674289470522855681985767630790 0.0155015068352200870186473888995417 1.0156229114630108976263584665713018 GT 1 -61512058811.1740783910079832742261887648350147 1.0924871317229984663875830792589385 0.0334863938276133135486342078027247 1.0340599026548945075384807309047546 GT 1 -2371854917.0275768896367039013475195511723191 1.8289641316313344400844824321872524 0.0970814484450776383577057525388897 1.1021229272467975008027171480716022 GT 1 -146763194641866897688.9124691143591601017832889135713981 0.0307562111062327244992186941797172 0.0291981027078292962997124287862796 1.0296328507721333500679131610569663 GT 1 -3141414661565408.0899096741660709525295164344072572 2.7887424228266789911062705512563765 0.0420207869360501613762772006529610 1.0429291995097876008680840339237322 GT 1 -54613.3782445708446299845501744000220412 2.4482462506805884209652000380562454 0.0966925227879840655309014467932622 1.1068629368196009511304821889314117 LT 2 -148515533159726653317877.2567007681490643891833409078263592 1.8928701378890541964084189815562918 0.0065016311293235907404431722039829 1.0065228587926435575608189392780439 GT 1 -4655180692429404153909193490780088852398.1217031261536109287661006110198987 0.4903896135552137371307360667764673 0.0988763554255776022455974456744424 1.1041128004067598737156965573439647 GT 1 -197967085718419583259.0686588870618149067365578722384072 1.3719038934243922480960532915014503 0.0268294261764191967839005557784892 1.0271959050449239202294684487751133 GT 1 -36307507.5257649065603552228011431901255544 0.9786839005627729380877402775253075 0.0671434186349940799970164501091434 1.0695038076729677065657181560806673 GT 1 -4534439926966782945900.2536383238425100669412210775899334 0.9833715388073443481565660942108821 0.0622177519445036223922047342302041 1.0642375018558920393581315823657926 GT 1 -2075974600822.9929678311782853117222386736552056 2.6091087834323619721421898233905851 0.0923402877826783515087666131302912 1.0968857369037592293146159709391198 LT 1 -1507481231923371915014668626968147777380.5511880980099568091616022954989950 0.6071479894267147100121041877868648 0.0524853347140245222948110222091171 1.0539128642709562493486109027159522 GT 1 -4218328673549370398886449638999765.8182184138401928379673425840172596 0.2873150078252449918473538752063037 0.0935296540057087537325654222774919 1.0981969619595972178700506801103367 GT 1 -1650455720548526200.4394243442463490100682608759442933 3.1044248396133811548580752861196762 0.0798088066321677536768173722206189 1.0831738116523242308339048980303791 LT 1 -1160971716986634064716304846598392973965778.3272166208714522760650020840684346 1.8523742246775587693406244809454998 0.0231511968718818351677404086974876 1.0234233951813406646664789190627796 GT 1 -788610213973037809330761.9540376484374858762609381236654769 0.3018223655407819903029910359421105 0.0276603602927927139719914916035643 1.0280501119888094644718409427058074 GT 1 -9361.8996122184733523679351639222766450 2.0419230411545888865640636576249031 0.0303944988298428223772250108652232 1.0308659900340926344498694400787079 GT 1 -365360390.3059380817667116948889907055461051 0.0186410620069995666832480235718345 0.0357680716302227150722876182833672 1.0364234237134222389856673506501996 GT 1 -477863570234798.3519603654665829637049385351080364 0.1467709587129135606395299997671104 0.0388526479430228583862779465425877 1.0396275497608158291170441625800653 GT 1 -1645149925331029587384605434538803861634439.2313480856634021480602250621915414 0.4837734506833437194812932519757727 0.0402960375977470829108216743142641 1.0411304145744840066535122202678843 GT 1 -344683641769259988.4641749112674370987899043144519818 0.6034897608590435731483843706359589 0.0769459710239301304102297900747787 1.0800675099237006641979927352292902 GT 1 -2163281863259033698703041225237714.3112406327610273258546336691169679 1.3082502969680164244486713170756108 0.0343270813575338790501143429278646 1.0349300956431734372831906778158791 GT 1 -4465956674.5571013066517509067892085961579747 1.0622183541817543034240103059121419 0.0304185832871669533386775335496717 1.0308908297822399273627793768657793 GT 1 -268801479182029.9779590860782323290879411569349033 0.6968078741159047051599762947075628 0.0974541287155372755558600008729814 1.1025357631587526497750468300104823 GT 1 -2187.1114169876576430934980392381243020 0.5190515042165971760313643980480046 0.0179289691674322682329262980214620 1.0180916404201749622069138817728883 GT 1 -42040391784913083083.2841104865857052620161117769791445 0.0023664885469802567219732241518707 0.0902159855234472832265283592324517 1.0945480543714968223647337166404213 GT 1 -600933614816345176265540480338157074737.6069885250540882272368415812618438 4.0942624416881847442574388738931392 0.0535547944353329768107556871096192 1.0550422016465091158527846629446135 LT 1 -3.3874566457297581312273658473066295 1.3951498580725424196794675013349593 0.0429236625017722665227671062598758 1.0438721232096802732696697931909464 GT 1 -4159091708914296188844330783034.6336416998031449900360334454094545 2.2361548980794152245080025408682575 0.0682856730044702069883335814202243 1.0707290273814238541051229615780983 GT 1 -6530806517553057235731884604.5475513936140532857045699682831501 0.8019892931487698118642050490841248 0.0387445752963616394247108328558335 1.0395151147934078230437354611262172 GT 1 -7055851365625140097757474708487872548.1246375346781500313483980093496571 0.4184334716605444268060620308375747 0.0670898550142382365583066707237453 1.0694463903977917006278387274635309 GT 1 -243170450762254362142372192312314.3261595564852574900071386519536594 1.0930017634126248325603815177219322 0.0215371159727113773012275188696262 1.0217724243653841964373097640082276 GT 1 -34621213193174746989032800724.5196347830398371593997733261631467 0.6532904591550347342294604920333139 0.0588082338943234462624313481041400 1.0606083704612074929483160427273320 GT 1 -339619379804247331.6567313004732744704610545192897990 2.1494869448974488492114717091213063 0.0390702949717223679264388239258753 1.0398540204205923965396938941834951 GT 1 -3229977900962263655053205249036406.6009574498389455992076782249880228 0.7931689804351916933560853732752009 0.0627701329981331820395346183857381 1.0648267045230897754912463216492213 GT 1 -4153836326218867.8794092053071951856688042746224126 1.3443669533785310040565954249690124 0.0357044658054827019738660531556577 1.0363574606135983953650909496682472 GT 1 -55384280757295153227055276418413342455597.1874175197330845373750570421814721 0.2630235177096284043069892363625272 0.0005389012465344316615288236602610 1.0005390465060005390584716344186997 GT 1 -23591596214828073396487268717.7127185505587194584617700160648816 0.7974196151468193502198138964943876 0.0557169694399630612504898322967661 1.0573293372653094844194515386799683 GT 1 -22.9046242291008047554495672674654619 1.0504930163202656621967482004161402 0.0743549698898279417331006329868727 1.0772644546423653764766891013517265 GT 1 -5021723041998035778844215500898719523835310.9533898779213234564747955363320564 0.1730815954072448279123007901527027 0.0803343794791506627171844187042993 1.0837451309607740040503779423028333 GT 1 -331662.2415675990513675388068038580062821 0.0050804979067645507153436444464923 0.0379835211298227855355583839442816 1.0387236986604649395661125472671636 GT 1 -4585789444605540.5254426979956965098357360315606586 0.5130925519429113063474699371972420 0.0936986925225362505371283854163794 1.0983834592682832929689879658390473 GT 1 -265805427360738.0652657147991217839856569971120239 0.6531148581115878902757732030210481 0.0898063241033167340044890708657592 1.0940978714607764228911812176672588 GT 1 -382793511448782155401014047.4571503285473142924929501074585286 0.5577896552490494753876829896160921 0.0408621256434452610885293310861916 1.0417204455517920427951498005574431 GT 1 -12578246147.7931395778231031566660939788245028 2.0860102556241104168317656130979949 0.0879142228121500407150712933719891 1.0920212393965535911523594896253844 GT 1 -2286.9569202409659107676178984403536378 0.0896229601933369002265735375870405 0.0137652068910809548743585295642459 1.0138608258418948117891552858049284 GT 1 -8727609629179920363390283274495350.4886362068942787843044192476298919 0.0260701599642407254871143967114206 0.0879518788150184398567235713513420 1.0920625258425840476736830726308981 GT 1 -14325931321692456473.7637494115739913551011554179670678 0.5330870124251409177119566857175505 0.0489591788312719345503647172434956 1.0501982928903327951664200082785524 GT 1 -9707807644.5368705271693679362541995573166976 0.9336151920996588664439379106800530 0.0947737809845278679676023882459427 1.0995704007554944048014715174193572 GT 1 -2946625143.0819607983690504221847883461708966 0.5167025039121492747869205737165490 0.0589940685444802246371085127070828 1.0608058360632549476846899605186591 GT 1 -6784861234891426582860306627.2918489766629939597103999872790944 0.6965361576637963936961603409163795 0.0572675127686672990298708433147141 1.0589727192757365144893185624422427 GT 1 -217.6781183961220205460276759216026333 0.0592741913838060074325735878665060 0.0487396730310059510184603601534802 1.0499675136559775053243165076830865 GT 1 -4454910652728984086250190474592471145267.9178160557649846195500343748350742 1.0182168476734805854694736033421264 0.0946124982854097928687251072551238 1.0993922482343927597244488595105862 GT 1 -65.8587448369484421503356429187531558 2.4389703390631260675476713092533983 0.0377878373134944612647884194730917 1.0385203092993705191676833282527777 GT 1 -39603257732911083.3358325141657410888813779250687502 1.3524780905180926476129426211276143 0.0846147433188613489651034748251376 1.0884102567682646175332672720839147 GT 1 -158573456928720815699476474.1411891904369644867305953856359980 1.9322655292088960930166746793924972 0.0229939075610284982672348331672226 1.0232623910949574122503807646481862 GT 1 -14870294232712217767111403858366887825.6591907863682422188101432376316653 8.1247501228552660874995427939745766 0.0338046516936423566847629125814222 1.0343892412944948017369568174241295 LT 1 -71375566613028350753533402918.8417470989648978954065985372469934 0.5885402005825710363829130370626480 0.0554028274369215963281160049137542 1.0569967147883325060879426255401135 GT 1 -3038490138051937819909.4489733139770143311625260897864238 0.5368648800512781701675111932231991 0.0794167035088308133469834750696087 1.0827477919183183566801478990351586 GT 1 -68780529.5122210504884033898998571999476795 1.0180695671749792027910699196735824 0.0724774991278899837092431846794786 1.0752382250944204622309984369663126 GT 1 -106243905616940.7257011363016157095325164060133412 0.2208974950615413564160704025794533 0.0814034947887498790800127541925148 1.0849083115705199775673718962537485 GT 1 -238424669155.3229885421039493350753987358351582 0.2081270358001577813172401539696383 0.0123154528786403657679628871969671 1.0123919165064721646569971041707148 GT 1 -993751096.9291172629178714629447229339940747 0.2810738329529533709043720796231401 0.0758359706606713162883525130471048 1.0788657021654192593486515200250645 GT 1 -158059740268721744274832598309634484544.1451937020201518441985473079852709 0.6253825382804689402323547802843794 0.0272659271311798795133441934669032 1.0276445405552239620750278783795550 GT 1 -491947739506909703535451017036329.6600876843585841805334232853639647 0.0051738492815724753303997755025798 0.0821286408928916401891151345883818 1.0856980298726125245252078869278421 GT 1 -259844732250331474148434762516833896429.4128855340102305600533282387811468 1.2597527183686102041259465301058393 0.0769834062126232188234161483249257 1.0801080665397224084033651955806636 GT 1 -10792700494039627181558.6388215986412460816333441053054995 0.6499054947742560371180405741685134 0.0670297494983175881501684625660637 1.0693819644934445611907065254042283 GT 1 -1563658934865070607415755.2503355741571029675102760020438648 1.5715442980484524964085320991092934 0.0048260612974826348451175007277937 1.0048377443351663136517557956665132 GT 1 -6950816453284155976298102926047379388.7048454191254503995619064505358635 1.5255995974828490385753849172175552 0.0576275188605608134483976398483898 1.0593546673394363926234947604798674 GT 1 -1290313988.9795340810248884694022091646394996 0.0448228682918884548678896656963590 0.0556578364450855403884308668032729 1.0572667171169803132628323399871053 GT 1 -4441024149.9329834024890142212552774004956837 1.2071905657847130634653199350040892 0.0597169125538133035965999679857722 1.0615742921990660402453749441396241 GT 1 -254907896325172792095.4411419792251956076397445596451232 0.1684698192511074842009557384361961 0.0434816092176220981098056179211814 1.0444552631226565915523332000183874 GT 1 -127554391049798176.4043774128741240898055161126387751 0.0203341671268174562522757049731532 0.0878037691249255441449287279219915 1.0919001466193718998820683154484345 GT 1 -1.8926493378037995014127504881210724 0.2209959830675695387718787668177858 0.0561555549029236267634477318754085 1.0577939091509509917990592551005925 GT 1 -20513712698054439139598919.1634111247228261826023382890483847 1.4024210991715327599603954352570075 0.0991443635850960649798043203766420 1.1044102601659503183423017502247726 GT 1 -88784964384209140601907.6235631834472538495215555231787710 0.2711371476744501926616618593683612 0.0262048998880052690374961813093115 1.0265543669652398908349380102834492 GT 1 -19.1572738534970911655836384123106816 2.0361803355087319526151663314063657 0.0635946146905406409469745118644688 1.0657067923038972090352513132613169 GT 1 -9040662157699666685054482094.1531209060056241678946543265675387 2.4404799251399585403291804761524905 0.0923606928296450517782707082090549 1.1016038194679272285084776197077598 LT 2 -254859726474809195823398653074290120732.5205811041623219632436332605424422 1.2342518825121788263810270844638977 0.0565139850315963615618243463387873 1.0581737367864033402522620431291439 GT 1 -112118054576120692897006149495886847.8049882304750847651997724282521542 0.1512095189652795635922354439255827 0.0869326693115462335697624227372443 1.0909456544596005963769998919539673 GT 1 -4557810328303064527894616475368286046464296.8872622728746911156172873228873302 1.5700251076465145572577838416061650 0.0246520494669208675337096109245693 1.0249609993064582458628434369702707 GT 1 -2545428426100.6333120965558163935435358250223329 0.2541484036355204021289620511192132 0.0973464944032377000907290632232338 1.1024165139347549312977390247017662 GT 1 -58849787721061882156590105129757617.6689156722364715689779075108608163 1.7229646544721134821111664383111489 0.0430885189556291424038931400167736 1.0440443881036022046679423664005337 GT 1 -219710255508658214009469769446624091300700.3603206187173283429801965886527937 1.4946772372686963733507629797173995 0.0129365537418248649363916905714069 1.0130209596914733268102698119437126 GT 1 -16840.7768688921997704290358691150053374 0.3057725047356287787810506269594878 0.0585606645348800406213410179492614 1.0603453668800344289674452452448986 GT 1 -338703872558254743952151.4900167026462807704552232143290345 0.1703083672030228623118686179392863 0.0112264577936033924017966715853334 1.0112899501140481189387202793358204 GT 1 -155001400395326484581129.8846868909785445024700063740379558 0.0939264032145668345054845819542166 0.0664799456203056749219598103891746 1.0687928332319791375163977243792233 GT 1 -25769502434251628226184466180097818289267248.4847886179793798447037557220754920 0.2043075162056487256360412198350668 0.0437883247106963633047661792253371 1.0447759727733739214721126916878774 GT 1 -26176819666.0084287070417496084069430589315620 0.0981355601486122701992095475619678 0.0352056953437044301465919058341080 1.0358403561606616248649440320978676 GT 1 -96351839087699825259231762581.2497014590294312359058750930353777 0.6942802713761823342839591968471951 0.0146395078766098410231665230018460 1.0147477229139126200885000624492607 GT 1 -30788137428521518814038496971971698958094.9840117966033151694286925984580353 0.0670050684405451519397654806839365 0.0368175350172604096171456628705593 1.0375124095530730775018947421220022 GT 1 -64219520601484402299177940652.6596665771051587022196190420918763 1.3214014771910587239676361465975876 0.0791776499730879063311008053676312 1.0824881494679566985471322404582788 GT 1 -12140019704480007406947512.1004900144673358363363645625033307 0.1830336197004160767144198816849555 0.0691361526087061480693476442242316 1.0716422558032303924794343973050806 GT 1 -1157.5143622258620815662632258546957142 1.3244018594752016670205862617292060 0.0514094809496916225829957820982530 1.0527780602646429079033880951463016 GT 1 -322366097050695.7461482285984110233174666117627988 0.6203510539024192385448725793463251 0.0589977858378167787492121214886670 1.0608097864110206730826363133090039 GT 1 -112244257224772434927210110183.2852864099062784105700103882866430 0.4604803837016319838040169421296930 0.0509696715078034745190521492762201 1.0523145225138506223376927161354811 GT 1 -730168062.0072642304974173860474779226971517 0.4937214216299602831302817965296814 0.0333858246478506506835464194430071 1.0339558545098990633246616827346906 GT 1 -1392157919333377761870951.7994706988113917057386007868846823 1.4622890747167569259931946297368539 0.0787215227988934746546993420108388 1.0819929244761707450275154338844946 GT 1 -2798609546002860629109550914320427661457356.2772552114292406479144671880076043 0.0348691498450227168792342684477659 0.0332400001506103857684666626671347 1.0338050047681499356364344175519475 GT 1 -43640.4533455591691016363291717654042865 0.1605373034125169100326491901242319 0.0614785824309434304148175905109670 1.0634496021514452262907745568131611 GT 1 -6959812775201813514047.6446778216995305963522746409039040 0.1683358942237813404623303543887363 0.0667794706023067722367766072279192 1.0691137401508885203930651986698879 GT 1 -929179027535235207181771245417613.6273805005061434641033682314553729 0.0262957890440039579067945429543570 0.0339466610741179275287991691198838 1.0345362300146006694375222637793114 GT 1 -576557082830185790772252812.3169536471899394147369520496961392 5.4319723488707071767420733751746072 0.0518003503452812209466580623980241 1.0531901979987699538965890530945963 LT 1 -25.1992365532241349837544085008352700 2.1794741727272965719494527157256476 0.0472537356884395372610696161613647 1.0484066601893464499487610305585320 GT 1 -3043255089552572881634306495574070603.4714916051403368927727325935742850 0.0486482370228636546536086536659168 0.0179653953350458495218407165127567 1.0181287322822005304614772573647400 GT 1 -12339480661566622907497012470205513138132738.9760668915968951645203338061414269 0.9751854344697303420711529203044926 0.0338283151484603326491794675160854 1.0344137329717104782280638511253615 GT 1 -67199624555038373828379617602157078.3858124228660702651820050638883314 0.1434169620052039816006703797647875 0.0095364269192265188032107843078641 1.0095821898138156190271881190062609 GT 1 -102.5865914349601290440460785726870018 0.6171863017571217416376240603619097 0.0372852377075715304290585495326429 1.0379981080554456239922548750496034 GT 1 -12214912700870051501.1612213454278937314472072041803539 0.5464461405636596242546981173122766 0.0630250541174954506368517655655160 1.0650987357538088810084873154816691 GT 1 -2563766088348415983831806403261.9578731126508225294172005113024055 0.0073082660632516587729372126765182 0.0983205871856762254100407377080887 1.1034962402614576100233098302260138 GT 1 -25041397510622308843326877633269537190647678.6241888384159865691774873320028108 0.6117375258413860844847900794486556 0.0669392317494686723156443322979686 1.0692849481544766901934362962778362 GT 1 -1667101446015879560.9209253690689328931557654989960974 0.1620985487627693598483093383578144 0.0963208092298790574077103099151800 1.1012808590405505948217271466134970 GT 1 -1142328305825012410636180034465760381142873.5605237057137883971761309812402295 1.9795726111011172979355950412987173 0.0448031867780789388801783235872629 1.0458378725910721101669105770466700 GT 1 -1624946035127194141340726018958389547845553.7664657811979422975491290796103064 0.6994390318587733982277632530099360 0.0076759628100012198044768322745732 1.0077055746427449255951800187482310 GT 1 -9009949239291754275122405958626.5870649577646709562350033848570020 2.6608691243028169255919122072791563 0.0162371760983910933583785582192087 1.0163704436032303877427825188127638 GT 1 -17794865580.0661829352774703783270175928992669 0.0515908264748600730389426942763026 0.0134552850455915378679415560942991 1.0135466276795839079030417642944597 GT 1 -9832214286354063.5969673933827435335686405834991862 1.7382915766644534539715821277308085 0.0240602049644129166931988280102955 1.0243543798860254776182773621840678 GT 1 -1176546917283869.5252587627456407066972411838053204 0.7747036303275502329672375483430785 0.0795810436217575381339947292317196 1.0829263252287552110554503439073540 GT 1 -4180705737.3374682316262822281882474181191374 0.7892195344407031352638809881251198 0.0278278251752775114346865324080036 1.0282223556148417760008070418595675 GT 1 -79850088806.8764809156649256603020885017161096 1.6446817171922109705235219065268780 0.0727556160080837800759439544000603 1.0755381192585311077112598824509131 GT 1 -13.9522659617754805531418901837645650 0.4894997668295772627773118788282025 0.0122204825993992064800509914613691 1.0122957666639921840918701060679686 GT 1 -14.9344654063989445295275938081406594 1.8392561191474466438931933886606304 0.0496285198198769298196294222734390 1.0509023390519974368270685605469082 GT 1 -404682615087920200127804554877866.2349191933202652037118538358456197 2.0231619883042650391827123728591372 0.0028638347228707384813440718837754 1.0028679433436795788380071000468455 GT 1 -397.2900405059139221024007039438357793 3.1953808428897367381769497203364055 0.0303940639856675271452817430870762 1.0308655415588341277420113883444451 GT 1 -145131064159566050212291053728440475.6642276882524223555701350640219518 0.7750609639770978144257770450999607 0.0846783202095008134550896512801476 1.0884797128777034732738917552543086 GT 1 -1858614694782876087608567222328604181.5697924559397135471798472206167653 0.1794497627061502735693777644708096 0.0403646824157891289571314545328233 1.0412019442084440833056740469165678 GT 1 -154735914340614661047722887778946615432605.7784433714793908766626631648970563 0.4668317585644598744468491366719866 0.0022372182596966753593911038768108 1.0022397245712758686499458117055615 GT 1 -211410263810781005.1339758310186398944208002985537667 0.2776841316850320233273610951325903 0.0652016359943118899243055152841483 1.0674244264198555025153987978388681 GT 1 -75127.2461636842475741017244195561787988 0.2268275775192849839425046436730918 0.0758139262214910033542277506690944 1.0788418490662210359084834992364458 GT 1 -1231615895544986201612795882304098927370175.3338641576789988297632677422238224 0.7495729947557776653379318107182691 0.0908631736380326182625456609323763 1.0952596720816972373713334128292503 GT 1 -5083689963068247939113045488726323981168332.3659851093698393499193713124236852 0.0646623725101503610726870742275268 0.0494180183810609559271954824863113 1.0506808697273595190613383318265185 GT 1 -18071740952350053622850308412.5364540870134780455911301238019482 1.7519888212421508946787029364396050 0.0067046350265990287502795954597384 1.0067272120624609744502417385631678 GT 1 -2269720953.6169215012272677883963602248288451 2.9647686068179323711691831897988365 0.0975263651641440842161534478302082 1.1026158026800990276435177227943137 LT 1 -8765438748811327312875728129271885798.5567198601585892140944104297309668 0.6151632338289978996119978247590355 0.0908410431232652373988524166916317 1.0952353300412300309711114112112897 GT 1 -20304882.8470691505364723155226807746446984 0.0328530638533231452776187019023911 0.0976759495149129827452779324942567 1.1027815656931259573133683733591151 GT 1 -53067128047937.2335125466281653977206368111114051 0.0339993630864218638301916047270079 0.0237287408860772938003194314293854 1.0240148017642683384367423405649674 GT 1 -8138485698775841369.4757926492176564481499869310325186 0.0521882972227679014977249231175015 0.0570319244070280883433091126445037 1.0587228510119098456871312349135494 GT 1 -587532890587137088.9981720422108132614178216428213422 0.3664676598895353099940601695977139 0.0502388768860049796681854224744528 1.0515447753599291648478653260858361 GT 1 -8092.2204931509359416086048618940704704 1.0667329647006579781786184008658625 0.0777337199678145186988354083487443 1.0809212901459100074935598345657830 GT 1 -5339873060407970373035452.6402109816197041776028037518419502 0.3777254821746855829834098404678393 0.0470899154734911425488952725266926 1.0482347296988864827662474689063068 GT 1 -5476376.5443651255948248599359908488945597 0.0056529863084223452778371920945632 0.0152232056014563604152586005402394 1.0153402681602954015971094539423276 GT 1 -282358118785291335626485429061.5358272866087032107485845087225631 0.0452243877740259452593859275377650 0.0484051723279282039311723886479231 1.0496159359694600126842775096662371 GT 1 -477763267575573626224159750441872.2614071162535155394442054218412403 2.1406131642150443348350248178893976 0.0119142229973959922725288855674049 1.0119857661742590473659000645121276 GT 1 -12436825433824341069347229243464866548.8763485017131105489458504718499180 4.9439157841525745340920292892261324 0.0778768908170616688519195349899284 1.0810765402795009864312493291295915 LT 1 -8465831000911961358631725579.2092690458551722327008449162045997 0.9269218582884467471017167162655819 0.0087305111977219032181127887871997 1.0087688453917703087245206503030741 GT 1 -1.9486905995504941727139313003705465 0.3273079275096039298210952061186545 0.0275226423403455516890088504301704 1.0279084863727604319580678159997493 GT 1 -43886765998505862737123891663967087.0844540797835693379527675141867987 0.4404256590068529370552912491255427 0.0204038405911997556220547026855954 1.0206148744826548285875281393826315 GT 1 -17544034044853177501211290892211.2328292165402393411671079410632185 0.5060871848609430164187892306825209 0.0119502433089110024518659919702104 1.0120222214789735696988191749953507 GT 1 -599095970806380160388876308841555763.2238058541575394346137296805621240 0.1510541144759611684695137661473498 0.0435167872329228891868039743127543 1.0444920409436887178598249871377508 GT 1 -534784405473928954601705576587405736562860.5013107247984445849798915568478189 0.6164401673966261714360613301507096 0.0753697356842530283610978697584437 1.0783613356299945301205671140914045 GT 1 -6178999732182149857434.5617272447301285595550628162355649 0.3824064810352455761883928317839618 0.0344630897600638559010988140228132 1.0350709486988287597101409400309098 GT 1 -88623924158160.5127956957896475332573928546589982 0.0760958288619408970877882127142687 0.0670906726259816487248788845617326 1.0694472668081363500499546051271948 GT 1 -410570725107934565.6878815824345398265369324828397059 1.5969397765327992411675241852378504 0.0487737027896630350108497856595629 1.0500032876353876286415727598382953 GT 1 -2940843363.7307569751487174921777579714331882 0.0623744427442803504320359356107925 0.0914157996705222056243668569968735 1.0958677148356743777168962392436006 GT 1 -788914151064315105714090698272577368355790.4326810212814184893417235343908056 1.8898300748553152399456651151148478 0.0896010667391763363889549290972421 1.0938723873365658539907493452200628 GT 1 -4310551351962779288712444269675819.8109593408997775117603119511866076 1.2969300332076404642761080700285966 0.0002517735840348392492537721538592 1.0002518052843246234920697153791393 GT 1 -362227392870031699062879859120256510337.0929361315505640136886083248218583 1.5365209720552387869944178470970862 0.0723370209488412317726586938115387 1.0750867812837206784479122588531094 GT 1 -3862.4086255905435609859497896396810529 0.4662790885712739791292123975168229 0.0263140792060881018174659766032109 1.0266664905926593014592596889392220 GT 1 -959983043237827859.3341788855069535758206479303576810 0.7028640875686047594086245369410016 0.0846886897955217864758182453623758 1.0884910418399561554770324057525919 GT 1 -6797648750.2870394487315372894860105918621815 0.3042283729242671927893929493803969 0.0266909383974382136288348379857864 1.0270536094085410205535349735784902 GT 1 -120605563372756719666813820.3544935619779644112962674867818709 0.5734330983556666324613942373069898 0.0468816073559239039602190528379245 1.0480161515182437526579025830587496 GT 1 -21023288077328097076.9119180419333480734090487702910281 0.1873191185787248427857543819498902 0.0237481177292639854882241871186890 1.0240346497678864532489095594656818 GT 1 -22411532352725283658340013407.8703761591802159987704172101975037 0.7255270704627909086873631015404048 0.0846322696138996850953833451950116 1.0884294033108759696645879060326530 GT 1 -12182.3064532933069874010602410954773553 0.1051908324656477386777734344017125 0.0831835827826787628842428530490279 1.0868480260950359275902590208497865 GT 1 -630364.8215091833656696910610046632192836 0.0322710214888688389986290250859103 0.0048536320148928177657231176565201 1.0048654491395832778577531824322671 GT 1 -161086854562123829.5247238131750112158174052284923032 0.6426709408734661608555205137343450 0.0760216674782046509136382398847614 1.0790666572671369094182570155622100 GT 1 -339308132610387628037415446.8947736597474186891987427882049155 0.0525529542034695249490774925834850 0.0708054956818375415657783551389183 1.0734371925263581145211412458479026 GT 1 -268797723334701456891206123.5395126964307959400844858277871473 0.5405808132294271708153395997918105 0.0654432921783879214502497683236879 1.0676829714004898639950334187142467 GT 1 -1035231079052879.3854369954576504137636527115860224 0.2474250199183343842472252681574517 0.0889709414081496919973337482103390 1.0931804847645361021055680176079135 GT 1 -1914389670568422793799121457057.6124295498483532885067465431843058 0.1473221998871490009085046182889032 0.0396771486804282176054740359115326 1.0404857475997003046066351587102226 GT 1 -4680918860981307878400576.4487663114205368328442010372548836 1.0552441626069543122017483816514469 0.0828413186244994352977946985285203 1.0864747776660736500073685161979921 GT 1 -14885555992913158602512437612268389980027131.0720010318616653176943611810171973 0.1294050358754182804871162340739627 0.0394386195038238060947643080195272 1.0402373940822111561463022327536392 GT 1 -8.9761754992262788830850737297798962 0.7700052053112188380618803420886698 0.0982573483290733340402827748860384 1.1034261081965636810968578828937009 GT 1 -13016253097161691466.3107882166783583948916141355668958 0.5621544270252931598720790003575792 0.0679279292064247331276533860011488 1.0703451381086367318631627056680617 GT 1 -20896791664243553887107079393080427089334.4763728554227515025273707593399253 3.6909745090779903168477340161885426 0.0757494096472482882868410545824550 1.0787720424285137754563656519954817 LT 1 -1180064456994454228234232567948573307776.8919927684076175888801585453462077 0.3195642784341227487477035430279768 0.0280952740555420842129784000723458 1.0284974979014930761534103760992309 GT 1 -315564475837203029.9287170910207164837305908466098645 0.0726212838357461295901274618014346 0.0569158283826420698941177428982696 1.0585997409287142535328715083807355 GT 1 -1038010100895329067687543456629802815594.2279961025178715527177711664595588 1.3350374554436010559163916281606673 0.0963263491931494000899358858225978 1.1012869895128556332143439446123485 GT 1 -2.8912922083016432198965758987788475 0.1648009544643490413205777818147465 0.0044433360502648742810893914045688 1.0044532370076321731386678113162046 GT 1 -5794597.1292117671740946921608053187009583 1.7243413497582785766717589029381395 0.0717904053069036694767676330161574 1.0744977153473229033526187976543913 GT 1 -136677089712762996715585971.7973388994443802038430871748842762 0.3593280841102297953715686727783997 0.0070172597407991529858259874929844 1.0070419964986967988660599523835973 GT 1 -17462480754531556.4200145332483888032596945073919051 1.3453636996277411676560270235505888 0.0961894732101422147176599364615056 1.1011355348169137581363241311623255 GT 1 -2382869994848167423928881941239.2138280044818888857138345311100168 1.1650192773529440752642267599487548 0.0104286595117296875885255512894112 1.0104834190262694828376060248364316 GT 1 -1274374666006.1302454637042835079883523178819892 1.2234218748104072717259425149611972 0.0650430115045732148371526349573112 1.0672547523607257398078726164358713 GT 1 -3722277538733384641551489157194362452748457.2174124636966843438766548953617954 0.4826880201534274338346288472092428 0.0879511208632453987189611091020922 1.0920616947993084899669953923569191 GT 1 -102524874471736.8902424508038253194331854831347034 0.6690282171509115750889081392365633 0.0539902799311377689282809758290881 1.0555024350688146565047924064539011 GT 1 -65393206683848251216394835115043702503238.8116239655660922048335526695233583 0.4617727056119120459611633282426002 0.0564124313012232968357012068037781 1.0580661058690400115348287649725576 GT 1 -122187858908138439567641664.9818890839774539426528968297663870 5.3166221700789736497236647390327376 0.0185324018171945392559234252659143 1.0187062783599051530255897553570617 LT 1 -245586286119621479.6578234915043160013327643969615420 1.3651839421453171342638998292104586 0.0900781751679455087451952830728389 1.0943965899394020178744136354329323 GT 1 -469911416686622330.8606835912608988705297534316994357 1.5647229859846641541285505482869216 0.0007133992026723921975892308532545 1.0007136537929737921350587868274452 GT 1 -61.7233191454999363057836334475410249 1.0220935240796007607350000313079584 0.0984622882732794740047285881198923 1.1036534050154591465488403949534153 GT 1 -760191744.5821365752821414396055543788616397 0.4853085989279670882325840700412759 0.0948941243323531976739092977764804 1.0997033524369632812544267592955158 GT 1 -3149476551425.6126648224675469359500421691641702 3.4287525311864601427553019454112936 0.0793869037999841936209773317870277 1.0827154219778084635224808005455836 LT 1 -10614722906.6775614642453520905888928641589417 0.1667014062966167762654386847881707 0.0586667289927095737914165682462066 1.0604580352475017642754279935186682 GT 1 -94956173091371363.0970099131042356813491249242508761 0.5100622606646704769557460387569811 0.0440172851925435533548069603921588 1.0450154468395328574907423584906468 GT 1 -865572020640939582475646.1523608409924555358697763489667640 0.7849407303882493563544724861545419 0.0073378065261568968498768717443132 1.0073648606550186722245363937512412 GT 1 -5728299479193461723237694.2274643039748431229805565817048226 1.0527031795272629001201704029700314 0.0809822619486538817539309386601460 1.0844498553422681918265680761251725 GT 1 -14.8325289601504408734276126097132551 2.1762796357083869880046807457965013 0.0353412673842844371127327215731413 1.0359808851480836754043260023581732 GT 1 -879351820797637764759929626457318163.7016912972195854129358108620559224 1.4367392426165693300485017809308034 0.0064625666422203727546603334547594 1.0064835394335616123825968631748673 GT 1 -3123066984968019887.0923762376107499878962627060899765 2.8428019423997809076163957555318788 0.0605558574984525364603908520502759 1.0644179742132647017464009599225612 LT 2 -2012383963324130067.6200448054709264459446896925525132 0.8873867240718843489271590444325965 0.0678517059984271594335230224384520 1.0702633632182005083641708982475292 GT 1 -117267025946257434540598.8674220206234253483229598591682065 1.7977967891248057069484362102991055 0.0218905052057515363342676417824086 1.0221336573468042864916432764281040 GT 1 -423.0681719550826156026109988248447522 0.3092479471534089110160607124808721 0.0919834715003590271045918176545955 1.0964926973530826784901658123945408 GT 1 -467415.4986969234061010322751544159829685 0.0465567300762511796574476124781093 0.0571089175188186766029881536396478 1.0588045040998445687360812658230088 GT 1 -423650400.8057117038065630765111810223925005 0.3227081346282020465727879538930650 0.0363193459659384931631637208022623 1.0369953110030971382670559381418484 GT 1 -25518468991913.4929970176333859458635273505245626 0.7049422693404836887658277695757353 0.0424629742051911398328240609426347 1.0433908894375733963732818522263454 GT 1 -24435740459842234743159567002264452982578788.7010823188972318553753606674810898 0.8787995767426804217560191841656466 0.0353172948626156800862082681942326 1.0359560346771396532127114801628736 GT 1 -288861574202546603652332613273509599918.4799017922549611927286740005997807 1.2848889728475364038520106227761744 0.0495146295222919985449214761348611 1.0507825085685164743641795436971393 GT 1 -5.0794069394511754936080885877060470 0.4637432769845066984271670555196717 0.0047409016291592634422251830997572 1.0047521753491324521476661209566192 GT 1 -12887100885258179.3813541669334242095060741325232244 3.6418238824920819156735486950976267 0.0487127089588757832665667543279525 1.0499391684288970131808933816822588 LT 1 -326576139753263329.7888320352864764342175299960439363 1.2287055255331837855502773006891194 0.0693353558854659406611604342745722 1.0718562769997139657794787123150547 GT 1 -1548625626484568150.5061526712365949754538617853212302 0.6010372320408864697770915338441723 0.0280693209203141769890314699269555 1.0284707948841878357151304170114909 GT 1 -31481148157597240091430099704376.4176244459664921003682397838930739 0.2248933663841625950416909015793126 0.0307787358467577646882671475995583 1.0312623503782115713880733333272483 GT 1 -18093756327.5064610893143165821196880109374881 0.2682019900846717840870830653854069 0.0779978939825346043757160006170027 1.0812077712443500205802292034970042 GT 1 -867191356706894430070161.7871526263621169816664946722489651 0.6676031430736551885946546893903625 0.0181193702523363045943412871888293 1.0182855363182484460243078569358712 GT 1 -522350.3510057801903535437045179516327864 0.7886626860664879721039553204736871 0.0834834106934753208253828743905869 1.0871751111498543520360568351487185 GT 1 -33291951809200277843301047859.5765133878003444254294662574439676 1.6804412739407822305663591163490503 0.0172933241617763895335975070023586 1.0174446002734200505636551540738894 GT 1 -644563.4223045601431094475619742670860795 0.1143308039325782945972458964699829 0.0906922720788487774264854508811509 1.0950717075278322587963453699343823 GT 1 -6890821442716156125.9577749106494040749950124347026077 0.6356015060740035830928617614360364 0.0415587049251461926319636827112673 1.0424469650336939349742953600330203 GT 1 -1749865723559368228274202.4690494099968997028770268182582090 0.2655725192862721139259030614274995 0.0753538180776546625595617446475783 1.0783441206737005271935330555875234 GT 1 -25376253863608001620280132741.8835113523882373029317202858500928 0.0175750194050270027544439647903701 0.0159418360505540676218424453202496 1.0160702739720719094687231049226282 GT 1 -141584892007374944521293160821502247959854.2818934616605558055610173021664087 0.2007797783190705438906246320966404 0.0374146667802209238473403617416789 1.0381325588593967185604691482260636 GT 1 -5910893726366544556403071621495286.2766545949884273640862505239755221 0.6379432199746133530552246447999394 0.0354642552585327834494407886730325 1.0361083869379327144843891646527331 GT 1 -343807901005813222227717202277.2867909498721926913026456115928875 0.2021275896076080263595351000566028 0.0293838501169086606437933695762872 1.0298242030776467319960461075007966 GT 1 -23644076517794423563994941239452.9970079662848019308901100120574034 0.3291639755636213308257112864009668 0.0843498814361660955529608172277394 1.0881209539092118323758846582316696 GT 1 -1688775799163995706472.1747420581820547527373892155522718 0.0281273782905912082364962379284808 0.0518522680425654475758900805662260 1.0532449534700518674373371297258618 GT 1 -304840760690724.3284086186533164902080140706256504 0.6020591721065621867792174431551240 0.0463850787596482806270080450085028 1.0474953355196102850642727027854908 GT 1 -601781948639995.8982214951590788676300171811109804 0.3894799994388413506387887414101375 0.0105360130244767582990317660859060 1.0105919097756387184584639650184445 GT 1 -275834047283240953724865432176969659.9207750972060369108448810969025668 0.7958623155723341011251398818627767 0.0810923469133612261442535449948874 1.0845696479795208161959402509557487 GT 1 -1095932125698563.1488149117611087321678662492775960 0.0024802370094545894405702761831230 0.0519248486157781810486191876180390 1.0533215062570536490241891205599032 GT 1 -74978.4148601157917815159657371938710668 0.5038082464869696033703466423100093 0.0423266949839601670641775669877554 1.0432485768996044940761522533823809 GT 1 -52516660.3577286984924597209123284543111248 0.1894457095638057188958943417512193 0.0823204399029225831177917694571096 1.0859070123734217595248407686075099 GT 1 -14308441885207.9258603392603195375159555861859208 1.6222378260498889533841428391115702 0.0434057315552146292011329577481139 1.0443759393441208226063652930018331 GT 1 -2453479714239407071071.7966927839545963782933245377048063 0.1953730697995438577266698150988011 0.0328137478686037171542753600733771 1.0333641938733566253755999317655009 GT 1 -4739086935082755520874965.7173936091543836994358718477307139 2.0276732795659109758435092608045282 0.0727043655253959548864959071660532 1.0754828489681188794429256243240024 GT 1 -4387942865308217400916.9745878788078892902234609790186605 0.5753340308203148538228413871433082 0.0599342480227746540948472253756604 1.0618054572524566781769073559925047 GT 1 -468049142.4786030516149139452505399287369938 0.3545549077592855693324953765218700 0.0330175293400337116017225132945872 1.0335749112423045859574753815966239 GT 1 -11500088.6939006199831684391784011295411565 0.0898826674882019687446333338962742 0.0783233146927519621565933291438280 1.0815607836184447188693078269235794 GT 1 -1233038.7975146240850740612705537906808303 0.5045950196833844004535549273627088 0.0815766607021490211520781549748028 1.0850968407412087384606329904827656 GT 1 -343416717010708451176119775055.8777546207211125700492728958023404 0.1932944482685400261242433600675853 0.0205461937976348716033241169593437 1.0207602032993614031644188772112138 GT 1 -2266026102938975.1508791707989042968025983204544200 0.6121686263002260138953740038264817 0.0033475917685629093386053960382275 1.0033532074901520986703226364327747 GT 1 -248959626373340.6119425580884786094247252483556825 0.0795025273688225542591301565287964 0.0693573696594262171646850479752884 1.0718799310994571125875303922664238 GT 1 -88916472740720262169770022663088228052777.7823874322059357072757185267579506 0.2427773552825807240465390958026345 0.0758788138924947136835027631890191 1.0789120621443586712308843727478281 GT 1 -2070221297216309214294779869619.9559530065850352329764445122107274 0.3910239645725723405238158583641901 0.0408324949973550132872657187046413 1.0416895530292443530573940693144811 GT 1 -1499278818361.7060080623439302291568402765412412 0.0610621015792319904149165105809448 0.0261080855510013943533443701905022 1.0264549522888983396714593766710372 GT 1 -44776627395529718479435728611529612.6454408822246298212890589459056312 2.1193420218910217311407793940804853 0.0941146419781188156859128176662043 1.0988425173452529959755388521560645 GT 1 -1413518.7847803228592655355963882199790914 0.7334869840152227939738225189844791 0.0653606000687896242501866794073492 1.0675944926054514373140532383720077 GT 1 -1319270376646294143683287440.7948222675407411692699568278421135 0.0330413602596184898276417260944525 0.0773029016322988946711448020504057 1.0804542691216556392201166411239870 GT 1 -9383866487990970496862243847509533.4108547287153382200006117979596356 0.8364455117806380062029496658086529 0.0977724136894449344464163290031647 1.1028884777622038226897723359947139 GT 1 -5494050433084476.9208603437597381469762578325571590 1.9787092631929600155855794375207806 0.0945339858657107363237841150581506 1.0993055350695110075552568643727745 GT 1 -1384814533039198570424486398440696100967307.7504537299151623192795400250005993 0.3337428317350839924819173344171196 0.0932475539048594447441244209618434 1.0978858031716577510465000301404136 GT 1 -3176771407598215000015495561753069.0450830983650712628931300582601364 0.4746917970138169486839881545617979 0.0679986127353079442060516229558142 1.0704209758162244108864999548235353 GT 1 -424274114280259881338713.5868637303895154621287783183958159 1.3632912660301457777132694235987711 0.0389621512989932515412018903926597 1.0397414860829201423665366927670744 GT 1 -2229061208073.7045609151274363667184942742402998 0.3181196068151195858645503039479433 0.0504852726105897988502851287849898 1.0518042381714020862202873871676687 GT 1 -1.1248616729992655886541063259352503 1.2177356597757508560060937272585814 0.0974961639617814157162757197573701 1.1025823383262743100809877444898059 GT 1 -378269361866408837436451073177272641.8563791105195539206943282354542144 0.9785104256585785668497282468878718 0.0671759792380299471294622869701978 1.0695387124717870244441431323398567 GT 1 -674158044661764856100.4202529349229628754280290877596723 0.6800272074686480832478939940434647 0.0508463276935878258691871066244965 1.0521845627055945660814967013939156 GT 1 -12720470784688462538.4881798780644678371937526926073793 2.1362027359251522473715434473984423 0.0477592188781873897226037104725742 1.0489373548235416273452633426539386 GT 1 -257643652091928036443460394136384997.1763743912075501020164716781649353 0.9389231615116240322082366412722202 0.0304910004090332925981766792381021 1.0309655216287790324596551623032165 GT 1 -200032366984832835851258993775007659135.9772622650159598394475835178941306 0.0458223134401691256085437974194945 0.0818932544992082082620444741354485 1.0854416146197482759017674491708849 GT 1 -9363405181321061888702577.4509842072535200010191571071612686 0.1701357695564420173194892499906458 0.0436445357253662988445300635477970 1.0446256104852988932709780147107757 GT 1 -683118421782275920775962715.6644556266870598418099374345286890 1.5344814687574562721597521336428681 0.0536812700324722245236657134239199 1.0551758428206177334765513186230638 GT 1 -9593699967293344800173439804594.0213040222840122342488089348418190 0.5929523929650804708193872041212069 0.0882370023846408797049190040693457 1.0923751937159248160730815591804623 GT 1 -403.6223332892990571515231075484722816 0.4636683341165951015051309900115441 0.0576024061278915887563202451200276 1.0593280192798097488617309493314440 GT 1 -12415307327872443381810702154057054905.8796018680730218450450467394092343 0.6675515446139638935748051656508062 0.0531495362921834214192021753788542 1.0546141035359857692734055882874858 GT 1 -336042344937706907199970633622524531738.1340578346435488260607159677489336 0.4205513596649060973900178784457603 0.0146604531029419932594589293892876 1.0147689795495428217198438106418713 GT 1 -58675776286719307670073669055291.1035243331274431374242613178653160 0.2561222301223803500010963671182227 0.0182886694399945592910010593725341 1.0184579745757887104919852712392902 GT 1 -13490451947.5106700284161224657379932294439546 0.8176436005578824793898196749392110 0.0085441368049975475378677964621081 1.0085808471971786702209138272656408 GT 1 -4125669061.4630179042364871280100512846057887 0.3869807545962971262008533218583105 0.0981712558500055775791130418699508 1.1033306393070784830877665638972741 GT 1 -1.6078495170946007469307851365496372 3.2761374879787022975253982527494453 0.0568738885663244310770966551564883 1.0585552710022151669183881282867948 LT 1 -16139799786788501548.0757809993790598467800671290356020 1.8355652827661358011627948623904189 0.0012348037620512693061162950047519 1.0012355667603834724908116823955770 GT 1 -878.7071603600952892914956881567939084 4.4864621105003912764613050668238860 0.0613459854945050638464893137549813 1.0633083293280390957126897592446092 LT 1 -18988.4686620482734597543380767560066539 0.6691337581519674761822695232866677 0.0098745247614697039396408060198113 1.0099236012194923250036295289259090 GT 1 -21659286993286084971596804009495555131078843.1425982719149554302578658520525160 0.0284202082815570433410830476238601 0.0228432800052886115603263882502052 1.0231082303923999733934477804778447 GT 1 -7140785970170295313116373036223.0378909966129878585329347191267124 2.5932827485221724221959722841660413 0.0912975897177055326104653538644378 1.0957376198332756078449878751520130 LT 1 -454882757114526811751785765096.5858965232867687418805221291283459 0.4795117766897504356914321549163644 0.0594418175662650004231848959903573 1.0612817688544166319484066320290976 GT 1 -4313.5184296579878814974449216005466491 0.8696649148922638356420876857908133 0.0006905190982930566783688641560115 1.0006907576164128090198923823353523 GT 1 -17103904440762261318349.7052186061940718924019979851959744 1.0473243662546156821914520218027795 0.0987245222118010955282073112238399 1.1039443213920379493792758823326079 GT 1 -312372716777398.1692009417012779384510254859783725 0.1351313680413670127137003804434646 0.0800060193588349778017516516550027 1.0833881517417975127791560634932540 GT 1 -41240062596680.8471349159659990692538287849510462 0.4079644976883568527101221141556475 0.0235633602037336949631794317805544 1.0238454157717895677072987526434893 GT 1 -2682228643154659570670424.1505333994646803805992439942075167 0.6849037073812188611127983159658849 0.0200473545102223078842430015920148 1.0202510294138114114609648781355796 GT 1 -22964648152617868.6674337095955409776208641889024463 1.1557910413973579224785721930095107 0.0617934047090347597483467502723016 1.0637851033843219286926597141958550 GT 1 -6.9177376489845864762428743161284537 0.0978910343928923776554451698252343 0.0035955912674950423134585459936921 1.0036020709426148953480641056587511 GT 1 -176699397876443316177356348794969562615461.0574789897879254177141676433502286 0.5807233152513484384985892242485634 0.0171475788257024575049104023427345 1.0172963011593791016052844077746337 GT 1 -56830500231241200372885495192929307309834.7247754953209409774418981525976954 1.0318364926681863248499328927844791 0.0767153563858556501323345186438278 1.0798177024071303463134854004692026 GT 1 -20394.9914287661766723036055452947210597 1.2429345196100096411977772947645898 0.0649052406706301432599269936092755 1.0671074079523663686780855875028964 GT 1 -16385172777376552893970.2524549278464735939214172058531530 0.8841173097026059194928692660584837 0.0686252528789090797613290064513271 1.0710935616196596854901703975124404 GT 1 -1489116824209165932487490080427.6601154191202728615331458245601540 0.9291720103930095277704386638942002 0.0616001855976469570715091862883146 1.0635791794238446093433100510554975 GT 1 -89146516167164906084450338594.5856222891029958510125391108103915 1.4178277263568142528138982121323837 0.0299908219942476896824223298221827 1.0304497456678713561145655788574122 GT 1 -101510985692458134.4275806578930330313742381846611896 4.2549461308337540683851451313888160 0.0926353956888268389427214233903625 1.0972109203253383105282318417121872 LT 1 -4623058.1945842487013944628283986475598556 0.0592330214399722128312955928676443 0.0992399040249084398880704038996173 1.1045163210069879272473827764653527 GT 1 -133917677088700629.4882505913535570816141705380406784 1.0373333375677326946763426457315204 0.0026044460362270025263094145123435 1.0026078435061048704296353251463851 GT 1 -236734242344.2022979850711864276979045631986325 0.0244263301260507755200724519354786 0.0126975165153358836335010010715140 1.0127788189372636402355589463170575 GT 1 -70339307.8927936792810683105272845841744915 0.3317553674834611870800693320785322 0.0548489535374792195244549264457834 1.0564105267345737018526643001008195 GT 1 -1582767240565756476593165882.5574723189144905935798773256725843 0.3621478587387786280585555184906643 0.0092403219133348700456326753353340 1.0092832785145242678248875410125150 GT 1 -23606307469171.1643598052761696559982443435969041 0.8970549063844630596435437760307741 0.0249952555244583268278362750642977 1.0253129418673687511199906278726834 GT 1 -1178584138676514154266392937733.2973606266168617724583622212591013 8.2410960976230429955305169519770680 0.0209672604182577210227803775771419 1.0211901951499737426337070495378522 LT 1 -3954189197041925452408099605792.0415435622779089379209948787022568 0.5625976584118022580842135409367144 0.0917777527044525432884066950980746 1.0962661645870963817839309156420354 GT 1 -80398291694159813161312128079679014.8290213735601612766441106972129903 0.7603829017531609786737959762477661 0.0136959772769799016449499592014644 1.0137906324306688024340440594117875 GT 1 -52922228202626557939538451425902283.8090218558462844422124508481910291 0.3722615207020127950493292760362858 0.0192890546748518098242192765158301 1.0194775159189600616958988048439969 GT 1 -11258278122655427.8904710672688054517732271835046772 0.9282087350031265134728138250960817 0.0992735289323727403143403498724546 1.1045536511853898713195745246133845 GT 1 -113048937486511867165652980782428191446052.2622153801541881664197891637753292 0.1552215323382729910296583704503893 0.0164812540756143833006888238345814 1.0166185809133331253018844871183328 GT 1 -14452.2749343326806923650326024182628206 0.5732636613707091032839907125378278 0.0015319328916968956288035379306390 1.0015331075006572305341461636181723 GT 1 -16446646.1093819407691882510706914823590443 1.2280388482532928974279820981815408 0.0883031313643304190939392740947084 1.0924477250405154572945675887311471 GT 1 -3172.7039204828653596047370728879374579 0.6730479471753077373107227345496254 0.0099762939749199687451132693135331 1.0100263906603110484621383566730805 GT 1 -143721561.3522035649047791725231290250830126 0.3705275543952483171066281481372058 0.0240874301663052745108678815360909 1.0243822766700078529962519683285557 GT 1 -133470373652601906893174470.7573535481974597298903558876859943 0.7609938204914456276107383813405099 0.0770938442610715182963318169698596 1.0802277227372619935207832697668129 GT 1 -8.0727338233066433562973896973001317 0.1052069688382248643639332401915693 0.0902379901602105677994375140176741 1.0945722413241435685385763498211936 GT 1 -7266183991647331328857898408356799406420.7603690820239999001198050401959650 1.6434902408571472264709770223805705 0.0902690845431344187197120283334085 1.0946064204984558932628846957542162 GT 1 -59575881521583860787.1961053392003058465039376973882613 0.1160750532413013509400945143027441 0.0389593506149926969870668825254189 1.0397385718585496544509828403329155 GT 1 -646279634.1909699498946284243030951095833979 0.1899750362948594052667780605252503 0.0763620234680327765698851763510151 1.0794350844043192911356936967833857 GT 1 -30197007674413566067830628508762738.7611252467363544172486039302094060 0.8982879285022762716001326902324278 0.0691352784352404812007593401709153 1.0716413167045022066437202711240815 GT 1 -18526544327742.6164964801286710222024066771277710 1.4114610117255492626891809137304493 0.0415858896797037659909001144944287 1.0424753289410422744762745572168401 GT 1 -104751966.3608881304020711928772284970417810 0.5429452817317048669110511928216669 0.0441310774914104665123771352708954 1.0451344856778822940663420530587655 GT 1 -13294792673327458680428586149510959140808.4177121491218727444184740366338335 0.4469438315488817746517158285471705 0.0152178696872062700843525729433203 1.0153348497753126974840556545073471 GT 1 -5151921766448062492761812245051942.4566544282544342337235992555056364 2.3659137074676049601185262717160611 0.0844426315238171061979289702461745 1.0882222532850463493919901096414767 GT 1 -384541022367859265212961055.7972385786549694766708221680885839 0.5641421659446150945849314668474945 0.0299948555190310417631571334803677 1.0304539039101447303625971755556983 GT 1 -224898601589986054770238406278469.4422445897893363106365667137442633 0.8041348415541485305253645564572713 0.0602233327605819621992170041296991 1.0621130199897701607970387434102011 GT 1 -23291625415902170232823065988.5045124078045217169236817863702432 0.1007161034482545392189853452810220 0.0619700585160780447291126572931211 1.0639734099268103746220361281808336 GT 1 -34288623433646178269721.1569517501108911474086485561489521 0.5716653713565960695958898904360178 0.0489975193926122396858767216600224 1.0502386080201825687293500800358560 GT 1 -564868279096625412.8095976350212969508339082278250972 0.3420214328319201117745109583581267 0.0347778523761104559215789658428642 1.0353969993446129720475557602817939 GT 1 -6321437782381699902768.0941113580140781159005865948708256 0.0352194447318321038069726609673305 0.0252823995552066228521110521962848 1.0256074905076635349182773444388122 GT 1 -428563241472534584718585146901478614144123.2373460293923711381626018429416649 0.6860242040283573608291038020044248 0.0261718314431693258349728976798426 1.0265204092226198586512180102238691 GT 1 -207676.1292886226109137615405847524116119 1.1348588608275577741631460645348077 0.0318494233105471834214156495856040 1.0323676493716431539751541595695067 GT 1 -416382062391873224216768376.1423530848011709413957792608795203 0.8684843231919779135809899968306884 0.0680688234882399419015748267268322 1.0704963119676814710936249512416464 GT 1 -59592816444249.8078300476148082034153991895113164 1.3953819696804169671250204364020279 0.0380333242920026362616760914999730 1.0387754695526086324837242146124548 GT 1 -293758312246200076168206642562667927896602.3621321781747456415894652870268824 0.8477027707120285417936860902836755 0.0208420347737322673470135782606355 1.0210622958147469039381398700029248 GT 1 -635967.8470235187115464958026754520285101 4.9520021670665739845583285798496098 0.0696118907107786973984521004968532 1.0721534580729986522432355501943981 LT 1 -1000793635337008.4347235645229118559442041130983176 0.0786302560191219971199306963052798 0.0588784224124182379936924784325112 1.0606829473305289488420434191388380 GT 1 -2092311590138516043282749754.9714102039337239534977653054497276 0.6978112729869673662176662900649189 0.0976915046379829386994023124752507 1.1027988047960182744063264862319424 GT 1 -3.3286049625179355624101675936913549 0.2475306051632682055803717203582450 0.0367271806410405498447240214310858 1.0374186057912930694398860496713978 GT 1 -1670402829737583796170.6209691861897742643963274096510802 0.1492164505139163973183810958568612 0.0930356309584388940500674331214469 1.0976521140470751854104929658445568 GT 1 -3326.1544598740900204604100654692969717 0.6743036086768807429018465564129411 0.0429144080424863955984902695358103 1.0438624537463568914538126169367602 GT 1 -15731818419199511181045581.4806743025344968272488525837758865 3.0874418687556463472162544036986866 0.0104877685782139039252352696637280 1.0105431528013770641741010415100146 GT 1 -33688578629361854206209263.3958622548868249515857190549014382 0.6950700129980246758853037154307330 0.0207853731388840211057475036525907 1.0210044297732254968378261658454727 GT 1 -777061796.1946303752083766637225764639719582 0.3631624449447450796840007180059758 0.0475210468942248592998378791075351 1.0486872687022882566005030255315541 GT 1 -1782306.7293915380230814266197352663809009 0.3076219622032045785258306424789655 0.0136121666181019814527073038754841 1.0137056615735438272032207211161146 GT 1 -1079180033259805896787458022862570303468.8495665974587158238096159227292282 0.1035331197746564925445241491811451 0.0439860382781721375067211604472410 1.0449827617258422646634758711170384 GT 1 -151333165761503134697949053.2491998620096386356764517214149451 0.5571141597009485159825297360863014 0.0347621637394617160984276335647230 1.0353807455638767177829832871487186 GT 1 -347036491090175831287438351.8289702400766387193432614676444482 0.3849437881111354569871010951921595 0.0703273680828950319960022007135124 1.0729227634957227671903635191119086 GT 1 -5925328203.0104371639360809639537684660629709 0.0372204067136203256075140491707203 0.0847613378681185924434903661143870 1.0885704147865927607847324039604560 GT 1 -38695376458443231418716258593651350.9980590659323280823258807575867254 5.5680624260210021293228797431580197 0.0990982433022637305438301242175360 1.1043590653902066961103193847966329 LT 1 -18474966462172822883998573.7898365143307817253812500093823111 0.1493651829222284445953490678550633 0.0232864355872242328552512447410166 1.0235618486218916004589998114975395 GT 1 -847245.9751961038549622907743129723478866 0.2976565498284027753116160365096128 0.0350232595563466850838904166816508 1.0356512811008357652581480768340639 GT 1 -482894311892058433962660984321885771689.7712744582340462234351068125864587 5.3858928512733583639188556529778500 0.0146007659700818119261771915639587 1.0147084061915147665772268624293626 LT 1 -1198524417233719168.6123065233544566778067961963984855 0.3717568344743308074084864866592817 0.0578515726781635664759989005379009 1.0595924506589553873599289409826154 GT 1 -87033940946580554444790006.9765566116900765660966596346213636 0.0370879839651950074839608020603383 0.0731262731475936508557420134404595 1.0759379396823537743693796594830377 GT 1 -2082149220215770525050698139421181.4618770894247990553418662286087742 0.3613881583222175123042554771577928 0.0650475471229147885121232506003541 1.0672596035243609727845569706586227 GT 1 -37699974.5523975525200081652178537935930882 3.6942277509954852140651824365510083 0.0125848629653896328456191107068565 1.0126647230798125518010065895436040 GT 1 -50515.2046143820165284682013318371409785 2.5721532074958867519667059245276881 0.0391269804425118937006229169062448 1.0399130123973242258293419812970997 GT 1 -5026980740156424.7233293711196989025063706469725260 1.1212194632612278212966380074696663 0.0742613791480403046987883627056717 1.0771633510792884067396793479798807 GT 1 -841977864909646278622548872933212156.8109369346214406807531277321036301 0.3324533974954077666998776539540797 0.0882867331311616142728338378613451 1.0924297387050773143266142009496692 GT 1 -628.3355024736781589597580684239357525 0.7885840082654972211457350378902576 0.0228650143382735300475958112832474 1.0231304730626450626091613592195202 GT 1 -12.2600472220223268351514606315982738 0.9030479862354575104184026281149381 0.0157404882666623730777018480252288 1.0158656852645868133358970928639624 GT 1 -172651117721088592.1193310607369347862456211273175540 1.1490906814809175002222029638374721 0.0603688026454154350655536895370240 1.0622678239446375141198544712658881 GT 1 -48819175828356472335946.9088906458297513441618302553922942 0.4304115697045072973313579093157176 0.0018700723853116062056550127585690 1.0018718231537243582388646968012918 GT 1 -4225127298219257589470111034794654.1039987291102192802046495183709191 1.6404771830222541902906670909449260 0.0024861433241800263946527842368957 1.0024892389102723933575688027269183 GT 1 -438835.4241484611587812657162847658888035 1.1882499316038077306576336328862707 0.0056104390566216757397939512262631 1.0056262366852896131752096006656928 GT 1 -197812860509862029185486155.7621357237956749714116441754180425 0.0622856766834707677949577922831894 0.0860398664114568460321477580221207 1.0899683259972639454242102727445850 GT 1 -48.7621809894678089540623144070206171 0.4825531042441634855465640374264161 0.0287849563736478257525730338733187 1.0292073690662746142278277091181015 GT 1 -3.2097369276209406898296869705721030 0.1944679044187773336492230323069865 0.0005976211473496063596925163315967 1.0005977997940463944815254371330431 GT 1 -34976687608459.8146304093526175703267980891421018 0.0089686986774135503818306804717292 0.0437676838798033080724075345579825 1.0447543869585876342275572142009737 GT 1 -486487967686934840027689981136585656.6521397339543209350406962052843691 0.6438163811603279315201029135188934 0.0316117057178843511976447894351126 1.0321221416801424046697237960198796 GT 1 -5680552100766154770568886145243047092370.8285636387535710671991087407377763 0.6247551906504335287175024279699310 0.0570554030076180535362653972975711 1.0587477499384958703740633396127688 GT 1 -30775064890351.4409621366447496431159198269971597 0.2224822996008116130682790450544398 0.0413137011258027786786542789849275 1.0421913703602350344750552388667387 GT 1 -2997377896.9265609087154494624844233659922183 1.3860969517621642750505114333510833 0.0512368249199473328436168171614501 1.0525960635913236549960215876510544 GT 1 -5537704517069334289331544543478570.4836528533277595956385491363854468 0.8801144167745469107888654632192692 0.0266646977908014038546887114993580 1.0270266495722954138480339032683609 GT 1 -108341460842851.9843559530870978979504413529388635 0.9193076193055166413935845813451655 0.0947624826963512689090108241372622 1.0995579196569227024653391633707962 GT 1 -14562521404184855866660477202864011181951.4639492586089921197816878191000898 1.5442411194794855373064990230040777 0.0897804650731705534708253052093350 1.0940694613943209923549697825992502 GT 1 -1236876320.9980059278110439373465956682873495 1.7812273021282455453818496770211309 0.0682148722838976496681164317048434 1.0706530405380388311127992387433171 GT 1 -3548258.7819384698359163972059851048586068 0.0821158773014454242320232857002911 0.0114777558722436490570035577715415 1.0115441337134165997432963153419996 GT 1 -12232542192927330833460646954225.7737320285816931523829885867252192 1.6574576970179784505029566349625421 0.0424950566402245624486143982842433 1.0434243951628297333407783999872705 GT 1 -139.0892719836942096333682922841612207 0.3846709851043841410671292049974927 0.0399253157559180174066112701643878 1.0407442014586284153367984594070506 GT 1 -191908991629128905146949.6267215933090918613476479271942353 0.4803562276340576845122026556977207 0.0361673112075247860258719003009008 1.0368375587786626732133723500408450 GT 1 -1219.5917245167592000876034194666241560 0.6081484741482334217477522659678741 0.0317085552051736379580993756089001 1.0322221576873488215592746285334473 GT 1 -405791264075478756.6878101756729793672412957673731120 1.5119702395278614761607401051250778 0.0027184165740546049537420197593998 1.0027221181782463204088144471044941 GT 1 -36483043048657357116010129973.6709559007310907452514070499232452 0.0637471046433889142016058124994054 0.0172490686263510819534148038108879 1.0173995669587655909597944829349596 GT 1 -8546106531.3931916227526859806638615569877349 2.2175737073223493641980588236826540 0.0656407668629410980200855972952805 1.0678942967800430928041812700489615 GT 1 -6499.2664326377168412922946869259071350 0.4872870790353555971422218232251074 0.0516444753132344144189240559728970 1.0530258209909121097738931794260349 GT 1 -13344186479336329125267.6283595984666110217752065643542102 0.5918398267155996290189743237536382 0.0742660080174518673321085510010779 1.0771683512822398138581215802481707 GT 1 -5854836552190034885406.6977606084687262375107716068931558 3.0931892623790940680460385881310780 0.0107669628155028763117682761674111 1.0108253460109541387309140255228570 GT 1 -2443016605706382381524923.4539159796984992733983997648861050 0.3842257182363557684476019394271937 0.0552164319893071129809324685062215 1.0567994062795535012531662433654220 GT 1 -14622922074572451576.2774516748198033470291607021973213 0.2224736748299286704221370410741653 0.0721969664314461007956358042499643 1.0749358170335446498832660350079118 GT 1 -1174988698442154748080122884.2676409656172535838556571602030181 0.2771971726890872919835573681054889 0.0027732294066607926392042529540876 1.0027770819316039129173388950407345 GT 1 -229984322870998965175.5914323059510010358496707479571556 0.2215397030390260143688420379341023 0.0863565646690784868661145249742715 1.0903148981600430189577524321086142 GT 1 -147080474.8007062178577598072342865193676631 0.6165528430767978984629268845475660 0.0015562230542920597800697446086921 1.0015574352271602189711628682990628 GT 1 -3760054008906001180367059820694.2178450823416091753276580992259539 0.2289338572470524577507450920901523 0.0677470284165463649769386393409640 1.0701510723890501217055899257317933 GT 1 -37432777192509273111588197702734194523.0249374269903669897022306214115517 0.3265959792173449819156098737455070 0.0789840562414738467977967023300390 1.0822779315210498498519542321044047 GT 1 -2316341153891870024770633037305435061047.8632962995668581153401891215412407 0.4307274706050184304098470957783894 0.0420604112846555505844407009440574 1.0429705627957204284923113707395469 GT 1 -53466118380193020906650540.1555833435411135997109604183668702 0.7684815105571655979403509917447845 0.0431974813794318545042449281584063 1.0441582634516840372459472139719353 GT 1 -1267564403613111139389609154045808.2402094178103792305971846297915286 1.4555589603325010766492287812375246 0.0061576010609451543025943776166996 1.0061766372715159551340790418877652 GT 1 -35635036961939774271444490938538183556.8657067665265707692967413620518863 0.4120605377189348575779662937949076 0.0158762517629563607759102076545201 1.0160036294335606065107951596281989 GT 1 -867248698801862842990854859.5766798929979863586129662672361831 0.6317842389975647676154445485805197 0.0872791830437507449932149435345380 1.0913252316157037955439005544701397 GT 1 -4849044907323098544794192194606.2041197491516944192510358495982331 0.8848322738004721224161210755311130 0.0334047749144283181927923463882472 1.0339754594906879874035685379408774 GT 1 -784426.9224704618336132773179874315450115 0.4879705295150091609900305122402668 0.0348179860513226636073634856203195 1.0354385799379590783531323232822451 GT 1 -4045195194729403031479188.9088817512305934397918532191781211 0.3508356583782779147729418395588672 0.0480340056061285598777923022616541 1.0492259650032571541260543237420396 GT 1 -155950757998316804648894819554588104321.9426020143746469371928581649874791 1.0757513149089830396527637364109162 0.0753494824093056775079149776887383 1.0783394316820961679016801424430526 GT 1 -252543302.8867596718803302142527583286018972 0.8830489140967296633881940822393558 0.0579117694588901153883870226562969 1.0596563457970696224090837296311296 GT 1 -151963895657764689070955654161002117.5208572933415168257360732221683387 0.8820129340202664137398143451801129 0.0188892475262734639739266129859454 1.0190699282624856311455602074057707 GT 1 -654682686033198327646395220.6561844056103850994292747715302395 0.7096822486086795163113563375170170 0.0616513855390735400962194297575908 1.0636337418155342575976081165915224 GT 1 -8897627411627249.6336073663606967160506916623836737 0.1181618234341759007303843058256849 0.0687422904201017309876454652562912 1.0712192305791214689087143525095586 GT 1 -1802194169851311857387999.9062444676047166277240002850332721 0.3249807894196007660796852508714611 0.0950262903549598619891535730566061 1.0998493858201514698938803058704256 GT 1 -40776706140946647672467289861134056069402.2489454202155276705713793273436595 0.4364977813785265257027934995196171 0.0183380056566625175397095748337267 1.0185082311582252384152523495386662 GT 1 -4732936902705173560544182111325812223231.6240665595730473696107617271566132 3.3551125601729850174177720669385069 0.0179882195962540084442080498266691 1.0181519743617997737517841888955949 GT 1 -28901191895061227372393620955894526753.8554896675977114989283954225124402 0.1398162620630322021515157078040466 0.0986839017182555867610801320489734 1.1038992523990484821156748445670117 GT 1 -112483667634234750322738890321.0421137381810723394934277682830640 1.6439506614620220318051989668787846 0.0137303736224634858738547938306996 1.0138255070174836007177673939457774 GT 1 -515720277832727968065862518875963.5906474808691984006483338707110174 1.2267363540542544900839695049544449 0.0199856635284932537193354754949421 1.0201880783719650898385930663686188 GT 1 -1000903958706940.6022973212176912002021858235631768 0.4020615891408188271528322939912629 0.0589589998297926312669527149739599 1.0607685694955595721549221386203147 GT 1 -2664076272087954805507891.9574954960486779925492046043995225 0.8988134496777547398156412910046224 0.0206297709909964783837843969469019 1.0208455373486787069917887386124913 GT 1 -17.8330451857420688267873148489784348 0.3331980157452048111573239286300162 0.0754536766531451781754788478908834 1.0784521230318141788210799306743773 GT 1 -69093515188187148071685265801719.3320150302147346310169615514996898 1.2819863594777041288205840585439780 0.0590976179979361814887565205412911 1.0609158833517652047648151433827156 GT 1 -2275289974.6460779801720755138214644646782932 1.1065013389251805992150227016388526 0.0212898728853546413828517300396108 1.0215197710871462319514279769627989 GT 1 -289357696064376433.9152504118688413192514205557554495 0.7875181741906055382651871754475259 0.0603655527019935660850028906088096 1.0622643652069852616425482986543239 GT 1 -6993599336313216459985.3037835539463577964512950455324334 1.6508266696200321008705835520057209 0.0054645325328266088868917688878049 1.0054795177069745727847937555591736 GT 1 -6899038193163170390635062884265739014.5541901827656624283440789502556105 1.9051362955381423608778764401834178 0.0737998960981669467444440301802339 1.0766649727547175689104055342057409 GT 1 -1112359353831501805989888422662702912159.4227917535438414679482106576042806 3.4990994892488666616767210414290945 0.0366478372079501332712998968552540 1.0373362405838756009112927466046316 LT 1 -4050009531219029564.9343088038773544856031782338776175 0.6468149981931474366510920892662383 0.0878129797390133371125592551034959 1.0919102438553360381014734200285583 GT 1 -1294207.5743343794869975254718671237679871 1.2305892118908417586893772431361320 0.0456903838185320552301056423838364 1.0467671149236793814795718293667681 GT 1 -396357907387581.8115719080284381524142635682210284 0.3320523652214553863679324768734827 0.0490584978992180960443884874983050 1.0503027303152460888962986313874095 GT 1 -7243441687215270598896528106.9034338052228634089795207437739812 0.3413624164498151250445135785860712 0.0590064519167078316433500372206334 1.0608189958673488577336292315305660 GT 1 -3390498765758429888844.2383985045564815613940351268669394 0.9452210094049719920694520725055828 0.0111514226188478173783072612276348 1.0112140658750437217926882422167066 GT 1 -4045758905.1506494587237925234322872557057582 0.1287941204974010554394200652009206 0.0463125633496174105166582832401641 1.0474192957561550510866807429874811 GT 1 -194.9547777461119372531838435718036509 0.3211753945112946124421227616286261 0.0805480043641328475051502531912365 1.0839774433306477337334045262943995 GT 1 -45236948850398828905844592384279992496.0282691254810494125505697005138745 0.9550413051345327631834794316059559 0.0637131898503770100405601371554100 1.0658334283418775602343245433820309 GT 1 -33406967866270628.3040341596221546553790809205434601 1.1203052666411053093668300991514678 0.0400056884601484002493136067736201 1.0408279200171321017583068119798563 GT 1 -37847682992805750833653187561005859780826.7034527945611962632744114573474382 1.0175665925028482455080194860308557 0.0181994789689620735733509770088548 1.0183671266687373142626636926073917 GT 1 -247571873043890596782033929559557085.1186241596043922550888157716272599 1.1068758257611895263288513396203336 0.0865747902314767664965789304226376 1.0905537786903628149458312762628103 GT 1 -2897801136726.3433325841789120389592493995041505 0.2246736345864936993829350543080186 0.0995483055748645985555600009912153 1.1048587588642277181419253767802079 GT 1 -33365386882864737.7737550621518450257008601823495742 0.4080009447896771096851727488859138 0.0950102911040744593942939455653980 1.0998317067325832620163630815638325 GT 1 -140711108708116245025333086738338.3799542427512531874996106177448529 2.1506474226344171571936727832970051 0.0653477135203824142005771460231264 1.0675807049782971569935678002213310 GT 1 -758234492608552656743.0395037810975510579612536612405735 0.3126922089117861011014775002067752 0.0204584865478129311683594319574049 1.0206706602065315443613903465764981 GT 1 -93304993.4402055429672496019231035521881114 1.4629517389944050858359459523400361 0.0030938240603903374770647092965759 1.0030986198281108020597522781872554 GT 1 -80743696135169710018372207976067416.4165232415228436639368344047175335 1.6053665313563383501569041971225767 0.0587982924278847866721444270971666 1.0605978078805592201582157648467322 GT 1 -1580949507469985867319761735003019.3538744377967478462544628841693553 0.2378863581902886304851771522445450 0.0879722618869686083410496423122869 1.0920848747726980191577676885354932 GT 1 -81093472769828085975861029450.8002990902703480623571703785942541 1.0397738025501615898658222562584598 0.0984775852191365139881272004228771 1.1036703727755826386336194471907952 GT 1 -6774787543525340.5026141006476174925543091896133694 0.4528999186206180112475455183670506 0.0010809939830668201325826411836159 1.0010815786784686542745705962168174 GT 1 -285248697195691429628874.1780919912980845461170939653864075 1.8435638038833202620892723562564277 0.0272887090559945853799620707447752 1.0276679613361304970982413079876062 GT 1 -491801617835260778894118089665.4116232330353291274165417833029434 0.1153934049496265975710268998065022 0.0925959762602029013524038928841694 1.0971674774004157290562633094631492 GT 1 -50633852.5609001453388855489869151966157197 0.2717120626161764741290317496173917 0.0528172936845694976116063019371698 1.0542632727097045057880003746934255 GT 1 -326785.2220126932465470914515522888405737 0.8119596923416072357437581977698488 0.0539393393353909962816896757256605 1.0554485886619602418195392991203462 GT 1 -1488403714222269659356210664143955148256.3733363140405195240771750293948382 0.6464959657446605447990189054608941 0.0666376278708549735671630310552152 1.0689617589754381289497765652639101 GT 1 -12463694818336867810614473830505363.1151429591872326798784273798773465 1.5862816469866673064576317135607351 0.0528185298569409085233194310783300 1.0542645778150129498161100703340971 GT 1 -12783014.1609213875867323806205633796115193 0.0038610133283329530068480578481432 0.0062588020902750977037352766515481 1.0062784705021562637827729706375635 GT 1 -42311313741350801.7057069351028805645748727134405986 1.2392436586085525296554632321475896 0.0661372778768102224307074728752710 1.0684258300105149471772113019918905 GT 1 -10671100992516194536.6279296199647676422636147329648109 0.2750578284339458838676937687023958 0.0305510521196685519975588262735105 1.0310274638805259327872882172479950 GT 1 -14430573389.0961763797983225096547499401812492 0.1778500498573838997999986242302922 0.0613374039953802720365041112669615 1.0632991870245226741861063797558448 GT 1 -2267279768.5234500788861710187885870083040166 1.6717427408891141374356152414386447 0.0021520438744747541723524210916145 1.0021543628485135137664767680382712 GT 1 -102169723557486289206518753854.8065605246968921432313048264602877 1.0131945038651656783527253122752278 0.0665005802655171813261102881152675 1.0688149376026066981764040014888331 GT 1 -12736522989994721727304.9856794458694017912822026107910158 1.5556701360433664352793462473916369 0.0433823807097088850476630139860681 1.0443515292454207281498237480458905 GT 1 -14488639841.3458944024276614278512816075282641 0.3494275512707023632234724456169174 0.0120199056922589660606899231747953 1.0120927288990326447242379348001723 GT 1 -13583117334745436823808108737.0269485680779295679349978178795447 0.6817360826294644271666726109422776 0.0463054983433889508683180690214851 1.0474118876895412265785207956019497 GT 1 -1996656394395253494113213165176399.1119500035859576127472552281871644 0.2666690544727261574237923894769187 0.0505794850955296714704607623446111 1.0519034648147534059381403832685620 GT 1 -117.6350573174217153230755400052427954 1.2027753324542295681289858481054887 0.0401134188973343101376491214956150 1.0409401461846113765649617483516043 GT 1 -14446558774.4986179334137925817624229145620879 1.1878109417191248109110968967903094 0.0016082196028101088850526141997880 1.0016095141761138231517622181837069 GT 1 -5960506547.9647323041056519344087081217593505 0.7147467098558711734870453402938966 0.0785725155388701008871918378277789 1.0818311979029156830820343915881882 GT 1 -170379394140.5870501023417253246476182008881437 1.9329836007584286266948312800096816 0.0988650900220063627958825521865691 1.1041002989778800603109570538039657 GT 1 -15084359957569445175554826237347.2755568569325813754412065988139578 0.0105973450403356843569810253643725 0.0928343445693648448808000819627888 1.0974302044957368008026233486049519 GT 1 -1090969658322262288815295171381.3940343714951539614728122805980172 2.4880791656436568569139962975765597 0.0742403166323822449356513437000831 1.0771405992186888407304069387351828 GT 1 -1973536365503.4010648322696459128149740578440255 2.8667288570938603904121459213011795 0.0060879262066130142818298697003549 1.0061065331864124286509104587237219 GT 1 -905183599289686827.4076235305655165172538777142880463 0.5463117624113950422746210287338117 0.0195769328415548836663854616556607 1.0197710992915784546940337124722832 GT 1 -1146844097170399574716499699713919.1622286974738343815579977824586450 0.8773675644365374359427400462489853 0.0249592546077448816566339698961421 1.0252760187115710103057657310788424 GT 1 -28099364328518012.2513305593222344111114631326701651 0.7766787103061965425400764409391493 0.0566543138658752309431392693009836 1.0583224822568717504767991469377909 GT 1 -64671289976847321800689755969456.0625287922776811409720604433802464 1.6389762936954382197129882913443049 0.0103391217912351623627914453428653 1.0103929418000907879947631106807840 GT 1 -2008892174213669901573846960.4520043303983529979083415970945147 1.2549580960733191628263350796264628 0.0664875877130363534169931301947108 1.0688010195842436646885859530853791 GT 1 -54359859744568445577415045854176907682.7275268375682165663227686082164801 1.0740449707190945306558186425008875 0.0082860775993445729597420801209421 1.0083205979648800985269396202058679 GT 1 -468593203744766421416663585210488155493.6285617698677180297633569082911643 3.7143569138731205086445894255080488 0.0082206551156180187708467313611540 1.0082546310318641597961811710160342 GT 1 -11769927426.9953397219126766175321990023273614 1.8650213211629228533660550976466760 0.0640773949458682181033245991695676 1.0662224928312747045950435867187888 GT 1 -524597259191041973891087057479271090132108.7980463090343370820814344712896605 2.4903122266447456829306586736988050 0.0278215017852049112543366776384034 1.0282158512428061108526611927885359 GT 1 -506498773998329749198963391192860101249.9827857695707983960054208614114255 0.5636384616408481351293642214034387 0.0652804039099956173394027928977743 1.0675086919015589298366486601323110 GT 1 -629453009212624499601553163457857468734.1969918852966778539682109053594631 0.5592469700737009826167970087742974 0.0543113460895196564904456843287700 1.0558418825894988260357230130191082 GT 1 -2050459878376108911420943062750.6504849217894546756910701982934910 1.5361661264722180035542907429369322 0.0915673340224200426965022067664689 1.0960345094924098779281757246293960 GT 1 -906445250342.0618554045470054286891222050601849 0.4886713446205339253153944803234498 0.0280265268694978648472157324322629 1.0284267659121065021865937332813206 GT 1 -109965824583635296182720.0313121495591369482950555534446681 3.1615016350464064000886150350940356 0.0364354628338061872220011815146333 1.0371158113613685039623616088026815 GT 1 -21729614174548725980909932793472093515328.5590174609594528400595432797795958 0.0537173558440644837563198761370910 0.0850581387493079266081653135915139 1.0888947553420726720487872107208994 GT 1 -8289258697.2602519460334150047924393499695346 0.2330224039893011275056343904137994 0.0761699553167934925428554057393362 1.0792271585839795951770702739855230 GT 1 -19388811174002.5969565644736792332777654337253643 0.8177462108670976776944194460871732 0.0753070241937165405734044596241386 1.0782935146139601591259454648273906 GT 1 -20.1130114243652090271221220035755666 0.8574227123132550808694348982007522 0.0428228781341896974630387580025922 1.0437668243348811381325228424389602 GT 1 -481653854440596634965008093840872.5287904020581923768157425625213918 0.2104976390849925171617642330261950 0.0566700067090505140962193646147647 1.0583391177002039368819114559241161 GT 1 -14335220123907049218211850856440005340.8637158906944330294666016219386152 1.1442596214783580637518999304558561 0.0936311996467495003612690645864116 1.0983089913598355597680959803461560 GT 1 -87993119760.8193649457479359526458272103596570 0.2216000392551475132579505502600984 0.0616584784113463327855246685409509 1.0636413007323064818168651035580892 GT 1 -510186.0903904284481009662931251465917769 1.6241585620942656047696392978237219 0.0290574252912201239801140865110662 1.0294879528013819902970669375113911 GT 1 -345471716740584620415238934733779964915.8800329058353339542366716636354688 0.0124440617390666984469393670527345 0.0401874878640052028847018317991405 1.0410173134520946245442549623279933 GT 1 -101193565908473475.5629527266238600052908329647388143 0.7018192880214630963335721079919596 0.0228940932896117631153449614429847 1.0231602329059211720660442888229196 GT 1 -13461986.8490727508124536595015389157315732 0.3104003243576888213125314015297914 0.0673869497572111709956268382058787 1.0697649013080226561528309784160861 GT 1 -32577357340422431274512896059566.3770209742570920183697252315354021 0.1552495987138516868412465273108168 0.0019615424427122982618683962610427 1.0019634687865719423372598799223779 GT 1 -18340282464263768203345506958639994703910608.7352751397928349118989748955160894 0.0450882523841901616540969311197591 0.0535103814358121892325482264667807 1.0549952766293740156453516395593126 GT 1 -362934477250136233.8116731100044511312440605913929748 1.2324771150159972040155134908206394 0.0758918701421159263028612154391587 1.0789261905314680490553937991711218 GT 1 -14536393216781491.2832646847325410864324868456693843 1.4373616651140458155722886181216875 0.0646807838591360977462050681808754 1.0668674003224885210565956638592336 GT 1 -68115038130876980787512371.2517412600543002003412987909107708 0.5367879079431597376848583320806918 0.0557961638614875206680422311313199 1.0574132080329249671388227389704331 GT 1 -92457349994211840933.9554429571660997050835910396251533 0.1919053672837597625761342449636693 0.0778679210352387014281635207262835 1.0810668130119507218055285922570466 GT 1 -4064861544692481292815920.3292343207728614235638196125322532 3.1085755049148137431230335863628893 0.0590878970665450266143333771944643 1.0609055519068017822060545830112550 LT 1 -80108464188.8236083543979397058249037642206815 0.3520658404610884272728844325363269 0.0225740172602052750985714054105324 1.0228327109719017112542136928439322 GT 1 -3752692207563753651.4481150596466386435798540884559814 0.3648062990483942356175971908395418 0.0933537562518099440352851265619071 1.0980029338916331756264955246305925 GT 1 -24143852405440195.2535283912711450876658192281692902 0.0155410580971143308907679113175030 0.0984199149344204072349129071404757 1.1036064049371034804973321878217974 GT 1 -875394886363352.2673024282644829533807822710203889 0.0784168756035760878587197727177089 0.0281957626527146695931843952621408 1.0286008967118704629075523605069384 GT 1 -4592568186896.9846445116808099441419426869317020 2.4891361337973238675325206966008492 0.0043492344157318312321453834978766 1.0043587198486387275536428847209975 GT 1 -3849799993158.5887304909703569493257244158591408 0.6137010569100366198956887165864311 0.0967197931209412936918039674633031 1.1017224670789662694987678339893171 GT 1 -67055433024657667809850303980210.8768307154493594513573328697271548 5.2000398163561369802176718580258839 0.0971228605310648061727287125443448 1.1021687929958412894583903097022628 LT 1 -27451085.4451422258946081211946199876957516 0.4010894103129659518951269501811592 0.0632073412742870078317713120300521 1.0652933032731942258900584660728029 GT 1 -1.1230771204561415109105855058560912 0.0930037319283100328218683041130273 0.0254449333115376046033931211666045 1.0257742539979110934636199784891330 GT 1 -172108822223574528850324799741240.4009297100191637841875599914085912 0.3242300831556845719737149001144003 0.0604154457376617928918192841209557 1.0623174649634676332883383667726161 GT 1 -47698413311902484945895044307507009.4754940442746100139133302267176584 0.5789779447599590105344801919285449 0.0835122273266804499347546767862127 1.0872065531189027813731056271480250 GT 1 -2655312478157032446567083854645.9705617119741250487401251353780570 0.2325174106227272147881168685716782 0.0915977324498786465750733211123186 1.0960679725516019605678983227969722 GT 1 -6.4246099947752998231530195817230306 1.1651698429075728770610345593477282 0.0041758988769090744084954949938380 1.0041846422921922736029761474901802 GT 1 -56426339778.0409962655140193940164716514842516 1.9942389271995546715652690951154396 0.0853831986980285006811887245725218 1.0892500978176043784222339058033451 GT 1 -69941873544348960473006471301724595791358.4384072431179208992580990019728106 0.5911959048962963197016661996628154 0.0427542041739641057450888482862225 1.0436950805633033867342561235216069 GT 1 -48934266.9763597989000627254936572053297141 1.7097034338963985311723529309551995 0.0764170169990851601166757448137777 1.0794946263132445094746597562252612 GT 1 -42286331637415308013384856068.5637523355377752412571071712834918 0.1846223196168711270006002639437931 0.0896634312847633179397252629387742 1.0939408921199829796525972033754895 GT 1 -1745922582759247918835.8480785038435631412980781290617003 0.3035107567174610846751419263836974 0.0567023892454043746131516205704354 1.0583734461880174321160685484596392 GT 1 -29453579089583763251013470672575882.9143839272187662017584164023692606 1.9202835802699253594840971831791580 0.0927713588788040757641862097124495 1.0973607756062106690414578104108300 GT 1 -131676494319836279568.9160961779307224450923491747851992 0.0587076684291644877553313198858695 0.0088361581104960848338807568158731 1.0088754284593959195837903155066112 GT 1 -480445770441631008366945339160530900020244.3066901973492240457812546766398496 1.6887381833541520626485454367570404 0.0651270728124529647613975120030120 1.0673446656808960161952835841779624 GT 1 -41779638270551587913020002365909344940.1485560233139773926761474480270322 1.0208460562304768976350952318078178 0.0373384928593110235065822446003005 1.0380534272702905787881553183690389 GT 1 -32207627206.6963653785820661419145865830516895 1.0154165469888280859223100489387200 0.0680816782616318500309759892601952 1.0705101057567231084492559366261916 GT 1 -33.3368231966785948264298623770969391 1.2958010896651939362507762627758653 0.0537428236383530017415859447449747 1.0552408902574963628221672845878834 GT 1 -9879.6147144762708545675718781203791444 0.9127998354718043535433515362469464 0.0606162439723399709444334110753313 1.0625311973977433183089023123344391 GT 1 -121.7222174981787144621480105269639338 0.3758210249316682388764167349422115 0.0023341190456752811362429444240623 1.0023368473478164457992405082036273 GT 1 -1807207472062819379585895770383210836973573.8425188488572037930841454240704306 0.9527237081263340922105274187194757 0.0872045102667185648205151260233058 1.0912434215800440834862865766641865 GT 1 -379699.4948926412585737936422006306567344 1.8325518126355828472202874904511211 0.0010660738604910205684778062347601 1.0010666425214213260102905512853001 GT 1 -8360970146.6001469241657790199855369032505202 0.9641931498195173763095837130287816 0.0083506361547346814475015508422962 1.0083856980460004907070201865663105 GT 1 -292764617840024152705001.3808341029421427026567708691804327 0.7693405845036185886689618777640018 0.0959377461482691953114434593385528 1.1008570560808043736273419481502514 GT 1 -83061013944582.1261909919250089966314696631750389 2.6198161582287650619613840820527945 0.0943688590977139805316532560063033 1.0991231850856958315406282200463253 LT 1 -1433577045.2970405288213365737805783642651203 0.1582717210171500557316556202163132 0.0888668125283174022970493855339128 1.0930661932077105874498107679681406 GT 1 -9337651460861048272445326458914864810590.6104566888066345524563044955865256 0.4059436917067600817983732738499020 0.0807838478275300299786891142723471 1.0842339806127796247079348542468676 GT 1 -35258832006101.8040552739280310222823197737049325 0.7177509022128006337358309171792331 0.0526259821798330375710439003527446 1.0540613135886610261872970712689324 GT 1 -210898138001413164824609390.3347022173946110089166422856111495 1.5420592712870307445403676589016027 0.0322215760841866520750844998380534 1.0327521188207885687299233494922189 GT 1 -909642104443178344393415070984755.2414948318569607834514978963563419 0.9652568729694033084414359037678245 0.0502043894333220448385532836886284 1.0515084643068553252881727364845465 GT 1 -3242014350319376216262663300395512078.7328876262447301267439534755949447 0.0802947534249384456017348281702359 0.0861719713206827692844174231571278 1.0901128776605070659491702117860111 GT 1 -89404.8335507783387984374148043466557886 0.6190793355616162769124375326158546 0.0886854342343951606786047308787668 1.0928671441055358766028268246498328 GT 1 -12341184190939.4009457927882719033631928907905959 1.0453310408168871059882576932982068 0.0721043287900730465349450050742486 1.0748359757810703525922953836027224 GT 1 -142720294086679197544671457337.4385306917195835994328103459093178 0.2425910899777269619695646753840394 0.0503898066295138548000376721080412 1.0517037013608818423297277346039342 GT 1 -21176543309.1939934932650157247655460353985364 3.2272513379696681682874890854411620 0.0263677256012720233218511562824796 1.0267215883114912111610436762635999 GT 1 -109828000467117.3830825989419617977849853132657979 0.7485180670601216772576708671476480 0.0301458524339386128338730155735379 1.0306095821243653007602376609316139 GT 1 -1298152111897612690251.9229413455076706202869140931464063 0.1275750334379729305615071402117629 0.0646015874846274470961148808607483 1.0667827308102726648349509052450146 GT 1 -105959262564738552843514583.5429927829457594937703202858564740 0.1909116854076279220567558874758555 0.0646479214645469594501639473147593 1.0668322659889623255911770553129782 GT 1 -1513303963283.0367497862901961869917453874997937 0.1201914972052781163791069050306680 0.0380554574494005313767716497827933 1.0387984780544447048144442966034002 GT 1 -8510562708353447860158913.3584705230478377560341776750208671 1.2464788158618863669759404143706982 0.0407353208470722270477060732908232 1.0415882472325959653835460608645986 GT 1 -14548751278194275782956973934218238182866.3080183022859720844595964121249719 1.3431807298119049805049110844101993 0.0792589479652503593405811877467231 1.0825764418309828664268328685110722 GT 1 -58172211533956120941.4984798455204166821006025481909067 0.2541840223449266467791227021680955 0.0765484429192214884319517850326527 1.0796369365056162456867202888754295 GT 1 -9992584799423.7940861081535909404997644134009196 0.1476586875581976179468381218304174 0.0132330533190922175552451386381500 1.0133213903470738753293342995874162 GT 1 -16276046.1610274979777198251703032128386145 0.1200446813723974131502233310430068 0.0210859965491997838907426204823520 1.0213114815246007810982241616909180 GT 1 -1147448081799923435531285871147.4881768843401563052884570405946961 2.8637648215367595764037674732405620 0.0301634901641895375616536532252314 1.0306277682512965257527316419635633 GT 1 -257722.4512918245701866964514664955612991 0.5811980902467995496446088110004809 0.0116563323224720309723725472424315 1.0117247999383210872173832682538278 GT 1 -21614.8445353475729584384235773863346390 1.7108311927196952695349392229812610 0.0787610035222189149221696151917160 1.0820357796717338600542530852788521 GT 1 -263371732082.2128484841064914218623120640722998 0.0240725034840093270915765311395599 0.0890980143617800053151351590369747 1.0933199773696363833190998419496724 GT 1 -106391424067.3165786221453809549747395143830928 2.5783790994688073968060163737103449 0.0012603715331070592180184919725553 1.0012611664693213111816428047912742 GT 1 -24319981451238372625654396171396.1111605890727596135851249063247337 3.9929458484746937948778792366778999 0.0910571995224227016956233102070239 1.0954731125518090645292439708239044 LT 1 -39647530943985744980.1509726943883742204713486368196371 0.4514517568678022345072837293598324 0.0661317313679050283977519216379197 1.0684198907088353542230549435426014 GT 1 -24561969100197026744138239119243634606322206.3062526434102881481554955942625707 0.8936537071564460744731307393678473 0.0972676092547561394758442005230590 1.1023291252510484764742799077250252 GT 1 -29334612332158570078362655.6085772057885315042149165717901744 0.4248667287319931151077848157860217 0.0138580340255975683238243864771879 1.0139549530254135350920011826797420 GT 1 -225.1544363626263814590168724516625738 0.2215012701013074666259798804045513 0.0113996005933397570128614306717188 1.0114650740969581226271935490154543 GT 1 -4.3549742113752714080831531284554815 0.9024129138434707383219267913917353 0.0743060093711375211292222649242178 1.0772115626348471745671900526650800 GT 1 -746787928057491058920114760.7646538629916448142363891147272784 0.9234466383818327459122071850618807 0.0096827665752526511145912677835927 1.0097299493799541410724658639507425 GT 1 -33446972693068740944680672.8006468939519129670759093447683893 0.1732584995953386370916839733346972 0.0404900060073497777102429390038738 1.0413325477547027216986383526715593 GT 1 -846092043022719251555153754.7782646710790899854548192004201154 2.6939274265331201876257136413823337 0.0849452463735245685804954069161762 1.0887713754680239486122299395257744 LT 1 -51982636241669158530328.4701205167787521124349059333509849 0.3514311779444228867546748925785272 0.0399008581683343918357150373044786 1.0407187271111992223392550406760299 GT 1 -890641034327726191599671442034840627.8459808325137899669666566704180850 5.5688015092282469510211116543385156 0.0276483127320219599476496347700075 1.0280377217851778709841317951513595 LT 1 -231285022865737270688933.0452941116886717005088837714527139 0.4692631791679888545722421904871814 0.0351926730156891253113658489734800 1.0358268587342478313048155748513874 GT 1 -2797173000247160692361992857793.6204373625736430255130661429306977 0.4500587195774287662087090599853661 0.0938248747345594646694746904928248 1.0985226966232607754331847025057722 GT 1 -3860814586476233992238.1423893945435133640629472076452954 0.9763941220912833000770980581288639 0.0286779648704789515947924175951325 1.0290972126070263936771144828594425 GT 1 -3334025586463594592064241466.1232072175279761930783385978044338 3.3333521197097323444615420720592056 0.0960084823508354177666361031724363 1.1009353017654375166964401215903136 LT 1 -149348632461486762328858598301562035.5436347643376041494248032353115480 0.1599800379505492859315912436568955 0.0091471817721040315502812330808593 1.0091892741201508463568927912792162 GT 1 -887799641172.6046416456079989041209456849605615 0.5412833824397189812788105456835697 0.0063082237311008499071892033387787 1.0063282046481405975630604528477383 GT 1 -64516643430100.9431804515681572047205314513063131 0.3315879127096491518842254171623897 0.0046158203857395081079555570725195 1.0046265061798064689483059439348592 GT 1 -7564782728614397170726859017307826481.8444943675746354798011596761538200 0.9031446592715387139352212363536645 0.0036744464435748334755721161121564 1.0036812138045311929747239697619368 GT 1 -135383280874196823169654096665165.3758439030861236070153412155835424 1.5364178069411630943151484393185622 0.0206722760988870106120344595156923 1.0208889387397242766744605918829308 GT 1 -25563266701997738302820975678665.2715348719923844813685650824028528 0.1289360992996107636296643837171448 0.0983008187946147853339833264145025 1.1034743165332645539234192605765607 GT 1 -387248780091996640509337320290.2801087397013335503368391206243058 0.8262056573165032760514839986290736 0.0662304941808978449910119166052584 1.0685256529871913898460171164965904 GT 1 -152976353642324.8488936319982718050581588413982453 0.4210736498976085463406946907612879 0.0165442569951397336229828681092752 1.0166826416522003515937120605673012 GT 1 -63145821826.6050345969659669021014112904490089 0.0426617324501816335431795029299648 0.0475166682175218643168289608162462 1.0486826715753658623848406918924831 GT 1 -104868472.7322643306233404215579777166085489 0.3908492902875847922041094606634189 0.0879036272306007296093393082988885 1.0920096225944160649458045712487380 GT 1 -259856004312984987090175019223104946028739.2751207917627983100918544016029238 2.1893510570663410905987072965514087 0.0644483497283132486682897254160758 1.0666189233846179376423772957738747 GT 1 -10773047009.1375218163674683055548152348998967 1.6376082409075384761183100541450696 0.0024683583136769701054080241939226 1.0024714097324234387994943206216560 GT 1 -2166658375615843504198528.6637115763100493940032084164091239 0.2690390445412624988438568192212278 0.0733472218092164650295729799581046 1.0761763486417813110140391431844793 GT 1 -64396766880137995972776.2792992471754233788529218420523427 0.8900984701443579735252030606270018 0.0983991326146382749626959584438993 1.1035833542058334940022974389669032 GT 1 -146400954705191228994554167.9600372166674354636600384727893350 0.4678491885602927833359296893823994 0.0780930793275136966851906661608021 1.0813110142391896426433238758668142 GT 1 -218537470892168266840113812740.2972749646354192907720723397523933 0.0068773730204259867129633609653464 0.0254175784101228771067869794695367 1.0257461852735845341565344495090525 GT 1 -28045747940804559652.8523373029382879582108656843033078 1.9104759763442737615115318246992870 0.0172481032716969736138220589724180 1.0173985846608616590264791645535966 GT 1 -13629527646596132756461692.5348235316108452251111233873630314 4.1394522876722470385787479527649836 0.0655591861198287885814109859350394 1.0678069886238876584849248961670556 LT 1 -17693611637355671580892053485489812002.0222105776534706335217823537682872 1.6444014229325352393321978741173855 0.0758502273215624088997740772398431 1.0788811288325531752917953673354264 GT 1 -21219662647771.2559621504678444835332817729881918 0.1097731257955306824065531858028091 0.0611940890564277581463819465539541 1.0631465187494485621241181536138957 GT 1 -122684095.5413249714937671796688409910817373 0.7295825887894285628491577917766830 0.0907786531247764136256677651964532 1.0951667085340738286424556820064348 GT 1 -125815289427163530.7026473144650452329819100230636379 0.0882690187230205314373655484229169 0.0312173223772200001218241033695226 1.0317149671438387666749189572513025 GT 1 -8243508090701877809339433022810.0075368296126122468327376249110952 0.7634781770624084744060166292081013 0.0813718719502559542224070076012381 1.0848738869956209151927549064325561 GT 1 -3510824918162211407926210346437426.8440421036769916045390653738097292 0.0544141850474659496175349759374186 0.0417256912374778211945980371623515 1.0426212071720892108572892477612797 GT 1 -6144041550973583543460938425124721.3004938793321191182766278244035460 0.7245641463663340637484666448047720 0.0261060907789977413285100687989714 1.0264529040431626815379435700951620 GT 1 -3797093204349523.4244521491066412454071833486281197 0.9303818148903797441363824833089113 0.0837370617970375424590808722845414 1.0874519050591865397986875304968827 GT 1 -873901401170813251186609443995597007996.7341287890775089085642886346096746 0.0820653343784068177288732378529217 0.0049243143994707854144242856385649 1.0049364787862303358572974189540522 GT 1 -24544117105746.8984588777907565613910628803103598 3.1275009689233887770041227660690609 0.0392189111029106601974130608012269 1.0400086910733819367506307472702348 GT 1 -97593876940.4738519803081374216212990664833004 3.0779810989463631210773167812010400 0.0119137941525125579592472951348243 1.0119853321585082362166364812115512 GT 1 -1207467.9080048127372174468009389910078760 1.1104535886788749716401580273567301 0.0649705275214597263200011712080671 1.0671772288228151630484841007572758 GT 1 -36777436070849108659228565097774.0792305299012584967292905167380816 1.7854612362225720134987819276435895 0.0814712187559995181254340078711594 1.0849820397672626081470789026148916 GT 1 -2438564.6818779938482169071028261209476587 0.7694856088628297230694038853127046 0.0166161202681404915566996117854835 1.0167557165203309254436638849589764 GT 1 -20659681621053423999.0168886559496011266244333758209102 0.2671266743123764210422138223667129 0.0636295159858397829496119959680124 1.0657440645646891932734352320300531 GT 1 -3736135887095309263033736890146878816719292.4420505032672622738541390731307757 0.9628836391474600726743085337822152 0.0692287313112685992016230192174546 1.0717417153609483494665950452229433 GT 1 -37405894599141175066284673199.1541622474450777356444881498919446 0.0605482017058191313878567512831202 0.0547175402873418285936272537396807 1.0562714969830169282318249941455985 GT 1 -20359428247264201763691008328461894062480267.1928772359178614549582460019395221 0.9450942687255024250725627650855326 0.0127054285893957090790562809557300 1.0127868327991705571806023828192070 GT 1 -2718548481356957960743807.0283363667452119753252254923570521 0.4617002118500574752756954890687213 0.0340594948774219676339367045648509 1.0346530355663159756075019394966560 GT 1 -81388797862923887.6337771599711402228749144272117244 0.8351661519187649593599604977027960 0.0571284537135451619108291308079526 1.0588252237751941129282723095743216 GT 1 -55368793259102.3943525450374494973155406174194531 0.4504391861086190299103678419306482 0.0673704745046250817725508413344436 1.0697472357745410416780740126331874 GT 1 -3563824781563233995317857356490.0382704768976963552434853374194213 0.7872368759381050899261642024160653 0.0709191524677156730794487775197998 1.0735595175476814377565641047426051 GT 1 -83722010088.9982401386110107282808891800594802 0.3666833208819352948949366258982895 0.0397905526788903951994443352009452 1.0406038440239825148128236521361055 GT 1 -12018863090.1328594213131760327328753017054272 1.1358270483496129668328781712381913 0.0913664317512030401846367323581783 1.0958133813152951067642237738246504 GT 1 -376049623476358747176933499644455782451.1941542308387727344386216559647376 2.2288671825962285470152507284028601 0.0951142916782927006818878304335191 1.0999466324046415003471124113017842 GT 1 -16444842263789168605379.7153126091372880777423582342656278 0.0971918280771116642217416457966039 0.0057490934791700037268156871618173 1.0057656831312827524879399123040001 GT 1 -51721214305960499.9992339657150754179260539154960160 0.5749707299119276591590686905738932 0.0454036565376769781154790766833981 1.0464667048573134940934327725330170 GT 1 -37442469429034595.1439997242055218579646937744412570 0.2990418403992098184330252767364295 0.0604494814444344166516972669683604 1.0623536898280541971361003767742940 GT 1 -40471599747778796320854871350121818938818.6125105925535647400758269900989893 2.0138351396372797442090824878083108 0.0030683274923039570046710843062264 1.0030730444603770361365058987531168 GT 1 -99228948788571365.2193440380341267880471328139804305 0.3796563116662414179311777108845945 0.0879359966954250654359480901444605 1.0920451123082069105631810641304633 GT 1 -394994.5381739910508821364290348725386136 1.3040968838325948112632120191534101 0.0951811808003468270266531596689252 1.1000205551042505909057149364067916 GT 1 -184238747653663517196111839565782808.8487351870345618044317596862176420 0.4344012878871945871978124723145249 0.0052914608522182574940996014885311 1.0053055102142089563279308248842791 GT 1 -7724198995043633268233566559.5791858475511679186008228259020724 0.3624568501705561001600595766634146 0.0293752782106536434235701962205317 1.0298153717096489131820585165276050 GT 1 -70676484370009454502915.0866298363804319036047533430208738 1.1399706594519603091299481748756265 0.0539078450151783655120414661753625 1.0554152992574733958142280837307314 GT 1 -73589402024159349943260904773668645.9841247353751984990480903107487065 0.8053835547002591007019678069173398 0.0000145715640666319510115991004459 1.0000145716702329029653235740662702 GT 1 -71864217508.3122709788224457519202973477722136 0.0792793905643883280737371178094777 0.0763853982914036861112720191170580 1.0794603920678705535650324770230108 GT 1 -206221738494588698286227.3553236067890245977575034403117475 0.6370201690046406584878758659993107 0.0750213827344652883226267215063415 1.0779846582065937652547224162710508 GT 1 -272.0533709118999536279551388889062057 2.5741141133975003418165336462287261 0.0404698967042724186953305637120742 1.0413115900862240800121844801293244 GT 1 -821579495657863583.5510859000745179182018583402017962 1.4160860948651911496438687605857498 0.0372884509504849894965584709422673 1.0380014457504740279112552631977010 GT 1 -289899953542961547063233695535343870032545.6232551882383602890465448525768898 0.6024318878826031428815351345650367 0.0424104995708557405091164511526413 1.0433360892626189035497140342128222 GT 1 -43735192346299059283631972259414238983.6442327941186545645289533073082025 1.8942625463536665881408232302289012 0.0883661125947312420514826662891435 1.0925168087547205802010836891984342 GT 1 -66828926218385964896508458365514805733148.1110598372479923010432772265294833 3.0670093199196669725909175265852603 0.0377474823462796358062663075403304 1.0384783703979887530533454598424932 GT 1 -1811512762216782998762649889175.5877503712809035076982276158129347 0.0020227607809652336970483951024747 0.0568991631771589452040547955284898 1.0585820701218644633162420553296771 GT 1 -33725986728235193434334065206986747734073.3798413009108118178751457543864585 1.4059525227517801549971191137009600 0.0444146439811988756022155415905391 1.0454311880317435885796105132755955 GT 1 -18060796151275.1337941031278953980451873613993736 0.6778025494738817643227254859872117 0.0854262234593460705235929156571885 1.0892971402218750677290832562455014 GT 1 -68050678664958.7438497224185072210426333111760984 2.8191451449999809871545344183689866 0.0053953027775645668465200553952698 1.0054099099874996631637286612906185 GT 1 -29.0153800572882301469148771095646472 0.2609305939596287849564988791142173 0.0764199281492039032324004455476625 1.0794977783361383186313570079689556 GT 1 -8703807637349697562.8845971107830731637626847807948238 1.3175380409057614095508172091073082 0.0150053728372407075178703371460144 1.0151190924820220317882144944877833 GT 1 -1276649371559377745420586236887261401.5761124696023440876287558613276412 4.0165748542297431724059656225466196 0.0979375971217401816482409955781899 1.1030715785206700434558627153877958 LT 1 -4648842782935713767941903591115710411718.6333573134921051950917486698257210 1.3273222891386343904314639209480667 0.0514910069009342563953612159420229 1.0528640082613301802797517251641937 GT 1 -140624654750926987152524717115395728.0838110608587894596326132478228623 1.0710145198930027289106951736568103 0.0911646889344264118330541522269208 1.0955913771644660445624758638417946 GT 1 -14.7816798230184081578172080205390714 0.1480310312981593122877781230218508 0.0341830578518870289899612129303068 1.0347809636090504855285016817780942 GT 1 -68.9726382453919428377707623047321735 0.2673075202514795530854220426725848 0.0101956080053126831691783185023681 1.0102479392195108461073181997930428 GT 1 -40717679954833125273507372.0125510906547918643343253948769731 0.0937713276348278390799252598698822 0.0607565488605117410323520595099719 1.0626805669883649788054331590840026 GT 1 -656188.1578637087425563529190647591600623 2.9776084062869357957003290230815118 0.0431339817585269508582615253590801 1.0440918991678960690791839651044027 GT 1 -6429842117078054035570746930222507.1847762363162179985424665827943145 0.2792202552273716791745728918434978 0.0268537491033994238717102207742729 1.0272208988451855915470787611403150 GT 1 -238135389779050980816.2969590016284858995982480995597827 0.6684328440991764351552841808953682 0.0039922490886881410063241762242285 1.0040002393883489924647359691220786 GT 1 -878181177617167449864080.4974067493592501097393966378504605 0.0242650395345067339279179887362772 0.0897114941343282302092405761881886 1.0939936903047900752041100483310953 GT 1 -2321583171104032.4438979118721383185092984292565637 1.4143200779053354372560234266601835 0.0619087546685060050032682427507265 1.0639080582341535511386447882215952 GT 1 -847287321015556.3922228804412288128860888594401849 1.7852177291759529118263267964678510 0.0784298039455399577705607921292527 1.0816763289140676272605513490213698 GT 1 -27135.6260108130464095089270091884199718 0.3750727877487634227675125529242343 0.0469624535247780676314873135710202 1.0481009779138638240770124367323343 GT 1 -923088963192390999415612921639994048176633.8431754346113058951283634133031976 0.1142124684173002486285569100317944 0.0158082839803764318643147998609617 1.0159345675541604855574967710620640 GT 1 -12289657.7524840241983530442176462961863904 0.4527264645496720179056047154209605 0.0822489084454560909012527273815424 1.0858290672247577773234296599181273 GT 1 -427434548389521306189705167.4831589993253583307584600903127084 2.2180606592962308176189839755937560 0.0631112792086433543745577197155898 1.0651907649582192645455698116166673 GT 1 -4762336.1766256356715608348435333571869176 3.7798885533410135755148949469576529 0.0088751153729162500311512467859915 1.0089147337956005389757757390092513 GT 1 -468732070322166089174776258424678419359958.4071040579245058201584974404009105 3.7469126544863133482556901998105166 0.0643291106700606872917976141458008 1.0664914782989689166288695315234105 LT 1 -8766477979306734027.1397254988910855536304247256249507 0.2049255652831943523967142899860401 0.0922619321874100801369569552992806 1.0967994135688087620699477379865918 GT 1 -23.6749801356278654745427715013481994 0.4978463933144260567735588529842775 0.0928451355221844853675701243068940 1.0974420998060762464839239252224338 GT 1 -2410467314714238606.7645246205774325946073545783017154 1.6955154786646488913787985368688441 0.0046001026571503543198806654622075 1.0046107156892440723095181162856384 GT 1 -1155.1849268207428987483971869656272972 1.8735060528072513632721342694855129 0.0121074118449142520536571527635021 1.0121813035865508956974697484996428 GT 1 -64897385247798697279226.1329694791746822496739258362582481 0.0201452011505188190070574550245643 0.0648128280512993446947758776656715 1.0670085858252201637523736708070134 GT 1 -27673244982454762342545158919101124166.4850917865851426423271244815752895 0.6533378355658868776074571772241150 0.0371541861812054961429294207309567 1.0378619902638848471363946683803229 GT 1 -3408863021036163072600973837803807490.4725048218802278176941666728725933 2.6023763773957727499347883894958392 0.0328218515235519109883273570732577 1.0333725724962734809504173983516359 GT 1 -35075610512860684030061368984054384755234.8088972978774143087286800000773112 2.2263587175914690610658166827585899 0.0484606932359765586984137523102266 1.0496742827849150955128128577113818 GT 1 -863696685386712706661705747.8608439683032065337649765042833359 0.2986469883717401283322576335685395 0.0921475888083604905220642571315647 1.0966734563328317641164291727881209 GT 1 -85895652303.5435444859206341625291281288697339 1.3783166214058160725571780697117451 0.0977609865912375030713269218011258 1.1028758124147716656212004459219118 GT 1 -2128179.1256032581807421549442236515454931 0.6462792646112900828505208346963210 0.0069818411011641390896774119404346 1.0070063281969817446135414421043305 GT 1 -286931772377482454.1487755619872109548422937191397072 0.4868867595697598896276787774237083 0.0643639979822046934230186898991745 1.0665287648737251522351699127821657 GT 1 -163.1137754619186286815841919187148027 0.5506625701647531591479811612805208 0.0409661116176890109809880154692037 1.0418288675152111466312223729879444 GT 1 -2439490566066960.9068522286205618468049714950358976 1.3717329362572505648093969964899264 0.0059827609736379725161012804269489 1.0060007293910813188036683395118918 GT 1 -184229137669673444080767927076.7595416229424570080116921350342441 0.1563775412811636775241764263488945 0.0555165127735605577742912229824817 1.0571170752781687331943134875905001 GT 1 -25661.3821273178582845200762285735869515 0.8518737302909812854083195621637116 0.0966392952852240248178495664220710 1.1016333538132874539138306038650772 GT 1 -806553284651751406926771789490766799087430.6441738368922312700318942626555956 0.0739694229025249522789021445067521 0.0279156121451910170377237840919900 1.0283126595095625186062243289212295 GT 1 -52759913.4083463685027387238974463281889864 0.2340885062142706769824015586093903 0.0125082980286569148180054784514580 1.0125871853091604274576919310344777 GT 1 -5644853925544071752125088990738.6510427146502191547700240195958659 0.4805712211679259052845761715427961 0.0821369233359566752325601957902040 1.0857070534469419040042460758626029 GT 1 -48359180470696.1442995189665541230140320293783511 1.5325345658671923301756042606745700 0.0744075168876767211367940102774754 1.0773212242329636372539042398646959 GT 1 -19983467511149.1278008371046888886872081429944754 1.4291327533627587618155923430827453 0.0728260815872438637808457355136370 1.0756141167603920679502287031006405 GT 1 -409.7859750712467374540232346662763786 0.4045420097509496031894980932664925 0.0901150945017159360542679277993022 1.0944371649446046755052345656895782 GT 1 -349114417142597306569.7788688647928826065313876366384304 0.7880119618927915603982083574383430 0.0456483132506452477386398520217416 1.0467230310751421687243547941738847 GT 1 -177793063324915558669491500291567851668427.3351428608547836876424942031909336 0.3123671375683217411142785450085346 0.0530803792263531875574790028166961 1.0545410671453196742280301658006614 GT 1 -569012616901144453296240881137.2640737152692680265645388284572679 0.0279907764798141839129805429823931 0.0436176856222639836897020285713929 1.0445975354366395875812269349340042 GT 1 -1335235823952954706796.5351309335909602766467223307776146 0.0690536355177520659501910219600029 0.0074082676929951972072970473785291 1.0074358451935231589640721810981058 GT 1 -101675286767648737153850108.0315657335293305049555659722736961 1.0011323872612739084516972440812411 0.0216077658900061280534897695889807 1.0218446319771492401106227891660862 GT 1 -23262245751932046851141134389853916.4840536878943354408458580649522253 1.4786747670632039911000088807829205 0.0427424753996480197359237625436098 1.0436828280127947560450928721906318 GT 1 -31522610618742018991322347.2686310476950342083309734572685610 1.6595553875630427469920281029140867 0.0983013698953134040753452200595351 1.1034749277136654200123157840774012 GT 1 -29867792420779007.9991392245315338122988882452692892 1.2004774135114800076865564375880368 0.0456962538483465136420565702741486 1.0467732660173794709475235900534951 GT 1 -1134415179721595182768472746.7606248627650656067795530648935014 2.8061142178553219152737142658449331 0.0049923184041822606842225048820818 1.0050048216565430999385057928577256 GT 1 -138830498079093685671427210834387197086677.9653892398165168596767131881465341 0.0374484780168752950855286701310325 0.0378341716144179833741052595758621 1.0385684643927538753543199715729204 GT 1 -1924834505639016404455225420759027302838.0236041037787027235986608305643083 0.7114482526999050153620979116313209 0.0261127255750633526165055583991880 1.0264597167140328433068883282915326 GT 1 -6281823695661075255.0829381299105554580914154762879265 0.4550413737400515497268363012627288 0.0067957944020001459777733302436245 1.0068189909652259874121252132490763 GT 1 -1342163335889481737608899289892.6606369354971081937862071211869850 0.6785417193610146425065243354951372 0.0172804086018956473201633120459379 1.0174314575164555888447950656326708 GT 1 -10822470610515937615688304874692134049702.9927149821578207092870233432561518 1.8755325438973657924974176488877316 0.0346264650800628847744357999769290 1.0352401697217906677607308792001559 GT 1 -1342872247523918647416885792475018607.9906625120481209734100825616554461 0.0711254024340912723562505431117717 0.0676213918842262389971300165792637 1.0700163149025009373174549920530786 GT 1 -1161474896330164539.9724684346780552976297535247630172 1.5669705278460503903939143427378580 0.0574099571742716927548262625991236 1.0591238280686401126897422660770294 GT 1 -9.8982927149042975831042981732510546 0.0048476275221893955695057100490350 0.0764417550476821836576910121301187 1.0795214115403014726585647639439488 GT 1 -29450490210668706436597736937847570.5566299771790299896106154275773330 0.4149233182162150599131629914660456 0.0132579083417328977616826466374687 1.0133465790056096490787293056851118 GT 1 -21733685618157926396023244540444033791443.2832669778530881470348440811590644 0.2460149041724682111971402921148250 0.0297297586314893629182922028078224 1.0301806469373205688405624266847410 GT 1 -325775509.3429955277117459500365445387672951 1.3500960111143660952408051566423346 0.0706036716982582511233512298126536 1.0732200129504876352178559738912869 GT 1 -22992881469802934986475.4985277313307341469412970224050614 0.3596986266373883948889440792868702 0.0387884419342909682893595451290177 1.0395607505711143939489557077404118 GT 1 -46.0599313079331819253862973987523323 0.4082888544994400674779846750955369 0.0746038196473213141752371285205826 1.0775333300813193727959203887852395 GT 1 -846193284115897976045340.0246709708945981020238769278020607 1.2754792448008776237703451274037122 0.0552357313438032017358392813445392 1.0568198337639730578288962097025642 GT 1 -86867833864.7220246960820276801284304505185115 0.7937115180530513794633164841693724 0.0125775744356415483278412887031050 1.0126573416830980538239677243798413 GT 1 -29823210739043637.7673292750962719827901006134339801 0.4737334965450271415493559217141681 0.0196334852771268685437139052638663 1.0198287826208966423367763855027468 GT 1 -4193347015467640486277922577887068204.4988781930272886216125731390237997 0.3363391964582369130257962061977857 0.0061564888414287270652999569424915 1.0061755181615894046901062416424278 GT 1 -1576245730460823176806.5711291345015065701654332834296052 0.1592595316114217356085758512111492 0.0703986483696119738075670075382298 1.0729994388941660468472801788594640 GT 1 -12441750203283263530870527716590.9446432306419553596716572494530978 1.6783273952959004037485573454893937 0.0980389010937382663079601697073924 1.1031838874479144581957462518808282 GT 1 -124393.5397724786016841324127244161251057 0.0498486252578249597310402358923074 0.0737215217841059525328954898055706 1.0765803571323138163435176570783446 GT 1 -141110171747306804477.3929854447477148135834484816641052 1.1138212989306704575566392356312584 0.0083840855952419635007522868863466 1.0084194297316980979610394275580760 GT 1 -91050885091119.5096745317305550388538952836532205 0.2075539278125911331598285866407295 0.0321091670164385370420620891813798 1.0326359739086618564283384063137185 GT 1 -1603676.8261778704669389975199270207970277 0.3923261659457146768484210403831533 0.0731355568606389758131993208835606 1.0759479558898157416682026148894908 GT 1 -258378320309989975784.6672110537026608044282284110159420 3.2586320168047596946390603276914860 0.0606840982959500282400180913348702 1.0626034328115949264965985313897781 LT 1 -1445859916858607382944586321171276.7564260916162579465198140047624708 0.8008242398489189813317568835609142 0.0011997689944967102985775296650711 1.0012004892935027028501297428348534 GT 1 -1610.5307330940237792922363930106247621 0.8434104914927546660801880915607908 0.0980002685599632493515818944280489 1.1031410566578761770311498765803415 GT 1 -479295048774968.5102736310072999402926362692571458 1.0536696002221515076120356390793620 0.0212277139826908188394853270831296 1.0214562620591542394462783233777521 GT 1 -100091263847645980.7803551421804294869709874218275691 0.5427406572264803545306178943443539 0.0351385446289663212991571381657891 1.0357707575139431405747985409675883 GT 1 -67115843554087.9399885943305842343116978135318165 0.8442251339514572572289532639864262 0.0898222048031076904843558599149126 1.0941153192180540285787201426581981 GT 1 -111078333002529492234555158756559.5758823015254689950118607484582345 3.6636677493986024378459768540165752 0.0766227842866026644908235585605476 1.0797174435547985621947263712249413 LT 1 -3927816589823073387156.7284771949002645356801916564965587 1.2542120634911828926256102136336421 0.0332257244493971400646022226036187 1.0337902383361346026044334327417734 GT 1 -10586943941717776680936750584856019.9194693042050870302773026699633079 0.6059962776139390042305804215934038 0.0807396966154620362283872932985889 1.0841859503952122152265961495574317 GT 1 -984559874753606109401313.3141104276000624741945247748980172 0.6537343049259973168016408290956902 0.0364302876267223311473162354790521 1.0371104404775443954574407120581407 GT 1 -1495665504166900506556.1518862176792062815499995698962164 0.6582468044908835549872055658686359 0.0394072920220721376896734541269398 1.0402047808921059030230357032508682 GT 1 -2494044916072025926498234257450568359412.5600558264628811145328935654008384 0.0399711230741631135790750438120556 0.0251453792761860666065593638090588 1.0254669260517707114232874481091100 GT 1 -1795196226678570923302779866365.0133564600689881423935330686160660 1.8247310252327578685725702294408536 0.0023842600804138554166385294148191 1.0023871069545051175240208581886679 GT 1 -143153482206255611147183911224122231.2799935217703586937048321615432396 0.8784363453954870400090051020172292 0.0545419896340819537858655197914448 1.0560858018476533381193823985440977 GT 1 -20548903826879099046497660624101188355.1748252446560236011841484077298677 1.1993896169474498870344354901002566 0.0228443411048918090609662127919305 1.0231093162982302382363747753528051 GT 1 -40.3376949057854536812502009055321921 0.9724801144084610222534048635955931 0.0138464398440590684373288215650567 1.0139431959825312432080489056131978 GT 1 -16908730716474393286011578360014305826351459.8147899221671429627810204108731290 1.7318800015173165978271452001445790 0.0831746927201639485835471485533008 1.0868383294761205591644204799441486 GT 1 -437038613382.8730837520793143095172422225569370 1.2965595332733877639989171366716886 0.0403095531723896815911983437092043 1.0411444977400677232874259784280453 GT 1 -26447209479214220353587001456709490853757.2264348117875037728351979571880118 0.3691553834414875848239440148173381 0.0349340079736433116410877444204944 1.0355587944617935593521408336505728 GT 1 -6646716146890400188010145562433739582.4230119963961205243326521688448754 2.7807224915857271951712826554020665 0.0252655469985503750689596319176649 1.0255902009758416307812435435573356 GT 1 -73.6074211027357480218862085330720398 1.6241233230827057579647015998737751 0.0036229919143293632978157614172104 1.0036295708446159865799532565296578 GT 1 -329773950.6959223719731443879226305057099719 0.6070833574468771744117259778451590 0.0978821475662499287571007545234861 1.1030101106542033168834475374530448 GT 1 -270712215909409136.1491368083165881960935059756795664 2.6386773992599944067365300018231483 0.0835680952391428901806381740055786 1.0910753231596422831651210266265679 LT 2 -79925.6588194838055099161090848862247238 0.6089851822758878957771554451523358 0.0560312110627361887967972747049341 1.0576621759496728888362419392676324 GT 1 -110863045881.5403933315695590367436273238669665 0.9517007969408307564222754995469488 0.0646582486540477643232586312898518 1.0668433070148490304053961138114371 GT 1 -423697164644902751216439.5575313145255542171253246797419617 0.6685742566088860747049626866867084 0.0946298952021598408421941205747572 1.0994114633040277178707174275671935 GT 1 -4011420458423.3523013424731111971653328899265433 0.5502285992487924294457184927543149 0.0861538850021798772623720019696606 1.0900930860378416665857119994892627 GT 1 -28.2999052141479782146993910660736691 0.0075058216025865730887729364321078 0.0191558393872793852685728823607941 1.0193416897192535429455203892966648 GT 1 -2816645177887156175870615428.6339426610717316213611375186647675 2.2373717093927734150688103995374724 0.0192642493876592417241420904312185 1.0194522230703241372780436680266879 GT 1 -1821529272922429.5332015835391029123417741239553395 0.2407968857389016336829048205846130 0.0060723880562539613149677902760878 1.0060908999837242475380042253147668 GT 1 -1754766697.4322441054830172895856835312796172 1.2004935994804156058502726629046518 0.0034204924789312262654887457236080 1.0034263557373025566213955542603274 GT 1 -24492011464243.5010912368222126470992097041402118 0.1375237465709468834210289222344779 0.0419858650754608340649550856574178 1.0428927465016079459625037316495350 GT 1 -91779141547768.4859574984679745294700091066080756 0.2353088423814873437868837240024541 0.0616054457186232344586135037047146 1.0635847848551737541460154882293114 GT 1 -209323.2531679906648127476944098015715280 0.0649522871790919992203670053042204 0.0821849857042002368472111894924130 1.0857594181491097150996387986572756 GT 1 -78.0183578301526967133643488339701500 0.6034145500248330506356546767876480 0.0292737838933805861674277788192783 1.0297108112045034337915878933289366 GT 1 -5599.8109460690731400422490393536681613 1.3903985615325769761208158793455341 0.0538280644653553748977052417025137 1.0553309764081734744355356388980732 GT 1 -105520028752.3172390727526390931155341046985285 0.6726955572309916405621584748881973 0.0265243304818101023311136427172479 1.0268824472729730594800603138861138 GT 1 -19933331010897094213940539374148188468511.7804895632669772480490405743273324 0.6440710628463788701230424949511398 0.0562100773928519660118241730107121 1.0578516772133218978501684218383520 GT 1 -1166198628541022315375162198191886671.5563454099425184821248857633909047 0.4568378910767329204649960089763905 0.0954567793321552038515030068526035 1.1003251912443565561798155361613475 GT 1 -43.4660559647179080916290164496833270 0.9942869547019114307546381499970881 0.0436302910957820845707564533574977 1.0446107158942889325742904885929915 GT 1 -15795967571424821990241195766386.7612211291085479608474105882110877 0.0885389494460259413055385445468955 0.0807471764191383069577946414482846 1.0841940871918079055282596927789942 GT 1 -4874791649556220305131679.0631358873902923473070597649087462 0.2108705355120572860596416792447819 0.0863797126673962227215877662337778 1.0903402344024604323214170250547248 GT 1 -1204617653561790548915.5480047993188194279023383917719005 0.5178863705065396993696336673258721 0.0522392726602820837665079496067805 1.0536532059056523489822720606708266 GT 1 -1118861590726537919231918.1688591467954601533646679986481314 0.4795190825099566166808776851178058 0.0957325438494253865615455890096663 1.1006301037738333924501599939725087 GT 1 -2138231834.8905796176833697737825261666705599 0.4026962160131565841055424937084007 0.0201871617866261414650006636907361 1.0203937069717167842313261526258902 GT 1 -2880353094341250939322230659208122571.5443502611809473135744832280401755 1.3484075679353776377877593708305095 0.0195766383318081220500784559049515 1.0197707989011527364984196006855916 GT 1 -2819200062147736.2802047675093414940121084979744941 2.2914624623961969384757536774813914 0.0565798474167075858268680938772136 1.0582435467072892634429078572908575 GT 1 -904564455898398914766689203176.1501479773260826956760373306855165 1.0926425545511634308373320250876033 0.0174522287791838209847873410651319 1.0176063143130361698083328732639067 GT 1 -122.9893088362524259535616890348177504 0.1744784759610586683284671861783483 0.0964510945350063051647864236327737 1.1014250415105159156540304495585265 GT 1 -2349197788619850.6743376756769661618293244613004779 1.7385788954275998469494575921567683 0.0603045285226988050479466605944902 1.0621994227200844242282930845989680 GT 1 -1085865031223538406653.0812729076454608342909813021216842 0.9268015160490171033519515421916874 0.0700174734403556058367956800530630 1.0725894816568879044954909446868197 GT 1 -216186192494470676980614232630537710524936.8967770366141572315025632909942438 0.9184087808782351612112697258062915 0.0311322071152356585600125972046693 1.0316271130511274095431860270556754 GT 1 -50443469252631909749101334941492.2010908055947855453387753809414091 1.6808691777756587407959238004245034 0.0486271254301663740126730248951323 1.0498492064584789823395262496297331 GT 1 -12806540.1237748314239524035642228193280309 3.6037008204909832502999070219901909 0.0214760556625773666426509033033906 1.0217100219932590371047187120666831 GT 1 -211464245974416981896676176051229.5728769092312235491399745821471558 0.8733811720001640912068959463497049 0.0398691262699104230454844300539466 1.0406856770097325246866855618591265 GT 1 -12093674045116007.0706635599774326465188179595545795 1.5041918157056715624229850855038952 0.0705726045703305000277994618417969 1.0731865862973477887822890369671120 GT 1 -8103098939069592120172.4586178451742194278004362194979763 0.2529510982302264561435519019744048 0.0303216274843675924916394895096119 1.0307908371939145444689655027953204 GT 1 -14288573520214761990246514562057.8983050638501205058865979291838933 3.0396135541047811728924515711555608 0.0174860763941116982784679585632215 1.0176407637300904365766514815019596 GT 1 -6971879006.1300675622074982078527634252221394 1.4247196264831722258801627745204444 0.0699272518817053751327989775029661 1.0724924721110435130235651869238003 GT 1 -926063072352444581534838596224796012516955.6878062420784616037460285802176045 1.0921180188777436453588855470165049 0.0444864419106042035814461884440976 1.0455063258793024745296371567418072 GT 1 -151199295867418881630182.7463392412702953068021002420713877 2.3594799177216146460885106138880492 0.0025568088124530782328247686438696 1.0025600830303283023036929617676471 GT 1 -1862353419801514092073906911053.9273247361978349931053475688450408 0.4056452456481456753172859237809851 0.0806410005027590000723297101835015 1.0840785914518538583020217038406688 GT 1 -94373778548225911567.0667702147003225415625178957462307 0.0376780549161690555547414537948914 0.0369509447944324811061079431914876 1.0376509284963954732302427175094471 GT 1 -9960736126018133671341400635451480552.9279336765915906863432200785070416 0.5660314453461463703577807038575862 0.0172934138191036377647388894214673 1.0174446915085093631532202132165820 GT 1 -56175011072693528580902263252.6856856021410471716678622318847483 0.6490191288371942108344568864437938 0.0950054451045913935708640773731575 1.0998263519904675194249528462158213 GT 1 -17816147877417829910.8533538276978403830956852755898444 2.0898121027539022454305954902487794 0.0998017215571379831146914756313180 1.1051402305414164340902866891355227 GT 1 -866675800899757982775290967254286706.4308106014336123501564159838255825 0.7351652117167363213163401763347273 0.0057266965728223270914797915831244 1.0057431569721979613634538222400897 GT 1 -4705704427509022820223846127480845480503.0154360958573406529259132224079038 0.3666519801396608330533686478382367 0.0841178076233748533245731064145682 1.0878675335216521995644461443582328 GT 1 -12220619536182134309557.1190122190033486369221309230595761 0.7908846327973934551963830882604302 0.0880915699431457904794771010291257 1.0922156995882035516333700187230277 GT 1 -3696972480111144509993966695646.0616187757697836602304507401090256 0.2679983447141769413420894567045649 0.0543244380898745189702108963580924 1.0558557265654454591937988795300586 GT 1 -6107064602965475121407682143388595436.7641633079304244907865934980047885 0.0185922079854286388269034642815507 0.0850899856393099461011632606308474 1.0889295635037929691574274666917752 GT 1 -1519335936.3470905794343863519310424939257755 0.1712849754363120345912326002491850 0.0520088811039118913779514424461717 1.0534101450240692199033844168318967 GT 1 -5722541417222637566428003676747882.0699778041031480664908608601081122 2.5820919171523527891826258761468780 0.0570144567128373357054412112944567 1.0587043270206341489786273667241414 GT 1 -59896376592287967605917681411314938141.2952470425542290952280442265004145 1.2353967246929812580471052137299342 0.0041922974722666597836143017418005 1.0042011097891742920515112346244986 GT 1 -61742790863.6518314139270414357533560360849542 0.2749018796598643704649868348980196 0.0415904122489106852797075821966731 1.0424800477570830799705939747686115 GT 1 -1696782058122631135581.4220081743105701809687913015580538 0.5965236506953112124973198077350944 0.0926614039627984775301173895910450 1.0972395842677046726287591214052868 GT 1 -605726.3896047916832891194840346311598473 0.9105288135582580255901472519235605 0.0624666674916576129807333211897277 1.0645029670940584545562483808185213 GT 1 -10679791757345288660592140945488830053439.1773945836756404213423249568449776 0.4178538219482031049808733274701137 0.0258820026541680810656591418194347 1.0262228355050159758879489995613280 GT 1 -4534064651319948896837.7050316430545396483420658975390127 0.9987956954191898427326738564194697 0.0682663145804925440717831352380191 1.0707082503875400583322326330241995 GT 1 -600336642514172785409971925124887.1917903419498149278501258445833140 0.9854564761907628017298461691966695 0.0105747887372796303167639827707390 1.0106310991479819054833522446208656 GT 1 -23330866198321462499502337815767962934.2427762880676321576003556476712937 3.1913069832740308537318204076984680 0.0182748372448923681730919617133644 1.0184438847947853378367792086795905 GT 1 -2942.2427279393761340413054495603031738 0.1768149816724588204035250039153956 0.0170637802849499993062797317215045 1.0172110442410510906666854776239409 GT 1 -33258583.7209450470356711077218346180059041 0.4485474966634174590239626544956979 0.0480713769804517219861808324474583 1.0492652228214012418632951648131620 GT 1 -844377211947653498697465.4237089659055843269090213536452639 1.5772045705596728362010084873005575 0.0791808946306417430905280161347951 1.0824916731262066068670625186136273 GT 1 -979025033474900201157836260.1814553931347604779880093625016139 2.4625789679623393569182858132411563 0.0340426991327713185386939676330609 1.0346356477473547475121009625467533 GT 1 -689817.1927148671247000736875677941835487 0.0945871305662178983172171050749947 0.0985546817051202818143204330031889 1.1037558945346428925464392963789745 GT 1 -14535562926642.3407668378548042653327221525148097 0.5014679528704483127152785600315160 0.0473997302657012667439799383895577 1.0485599074595293087721355031745977 GT 1 -1281924142456.4504296708401877263229416292740677 0.4351274310447201336274389608385431 0.0458616019001811339995688831988458 1.0469465466722281448907921941686254 GT 1 -8702955955.5768470547020869906413521935072111 2.6560780563360189596037383185616113 0.0838094761327672516238609487643907 1.0875309404478240171855365585511476 LT 1 -769356944652135932033462021.2902629788241801880543370867921129 2.0168066271035729763227329940859163 0.0573281527244469277926857486152566 1.0590370449534605962548781006950329 GT 1 -29046941504539792.0765138914774289665455747712520821 0.5292216501915747361469718549207060 0.0086448279853138943726753068721378 1.0086824112682019617262813440943950 GT 1 -217289.8526065149783654003031202756075645 1.8851952049917778965658362960521442 0.0278609999618608023085246878702096 1.0282564805913531620139554438195978 GT 1 -5703431689371329980815756.8249032577230222315700870659417507 0.6153854067492384851937280801161078 0.0478363818928966577930137651498376 1.0490183911987807706463665053133192 GT 1 -20894869826830.1775164709721882332735452047812886 0.4330205042410733089849795807974751 0.0060708588921114937274912828093241 1.0060893614783564735160179563643339 GT 1 -37307963163180622255.8399232100794549079154711975897363 0.0510736086151517254247202413206522 0.0914592309738521287254765428423722 1.0959155170551921631069704522993770 GT 1 -218691032202217029089.0082125609073243674414171401427740 0.2591817699048285933688098692735116 0.0561530147724598288777001858275470 1.0577912178949300195517218295996928 GT 1 -1238836379.1265781329240362862854063238524347 0.7948164691521609290922610142691536 0.0212409071017013950754224567825650 1.0214697414027324603393071217634604 GT 1 -4303.1934972703781572603738990474411374 2.1337036683219200839547166330667665 0.0194434712750998046748352137395056 1.0196349820500311010993972692120573 GT 1 -322921089605040691181851599.8664560604714995327544171716799400 0.0448706796140395797519662451190176 0.0359335013287063997278194201108823 1.0365950047265783690606705058010271 GT 1 -3035.8759504274252449092473410767479920 0.1546030392706279644706013137284789 0.0765916177539844347488358392945295 1.0796836913610889884815417012046346 GT 1 -70440558868477573531811102595925.5021649811579588517455151167484147 1.5127900772126399551852986102790564 0.0456295623790413942480016446622680 1.0467033835095116895466491500947988 GT 1 -338182620.2839193895000968978543710135428924 1.4219934884314094486728952434668749 0.0907496171014601155482652614473329 1.0951347740004285043135315002180727 GT 1 -3549456852722500132145721909583329126.0838724067202058156057314270408276 0.0827340191519350463509065060849187 0.0436403871907724121599338742230017 1.0446212726362971296894208689643397 GT 1 -3852197455551433605497971326520.9274142849729328183750288496439044 0.4092420881860675643670100537018386 0.0257116375582377145048711284794575 1.0260479591549068429444557076134285 GT 1 -417297337876593140049728967946862838306.7716675378916221470342832333787637 0.3852236093313971202705472386206363 0.0689639656885483312670997857287236 1.0714572975008632228387996243596450 GT 1 -8296136536854315.9953948843413538266661888847441155 1.6799762635025062225044835217156864 0.0931430001783136446647844081089894 1.0977705041177219435735167285362851 GT 1 -21031940349935699271905869607127117243332103.9092332480752272392429302110047982 0.6859736614419410260189118462853316 0.0976902652993156067782868584169364 1.1027974312770692953137929133256207 GT 1 -676902808878950826096.6714373315313238358266773930080233 0.8876231101969032378084866637661273 0.0386150444149256074550117327496043 1.0393803720896136201295858045448443 GT 1 -11554727715843971869480257647705891495033359.2565995498272861857827339141668233 1.6141093643022613980329226241868108 0.0358069452760397046630879956651235 1.0364637401853234594231060739859336 GT 1 -493493413.2072915678660470080862583040882302 3.7766836584786720274298440179845162 0.0902649247353824066270564270432510 1.0946018479395037252936937477311975 LT 1 -329584536451.0255441835502874269652148467445484 1.8530185189669198704538272096784699 0.0612557492449321060329091118478898 1.0632122002846579654324690431187007 GT 1 -892011538620923042655662819026.1763098574420069629124293692547518 0.9577092874175681600205886172140753 0.0679096958721560685682370672152994 1.0703255761493197334146149816577636 GT 1 -5535634098986446683164527295116.3847771875868954230934094402290954 0.1290298951534980458065139334866503 0.0225736670091242385147932701843972 1.0228323526317056584662327495968169 GT 1 -215712902286744509426422123901.3692360544765134929693090136948623 0.3371979135977630472148269344304818 0.0664152837607759300074639237306035 1.0687235689244018375571921810504601 GT 1 -160064391650598507715010784685351105913785.1719375588808061368152945394325551 0.0124095520670710660229501655301985 0.0173553619564549877568731267520383 1.0175077317799970319844197646216599 GT 1 -994587873272290582453023264131225644.1916843768901945732661551868604415 0.0056491347765040594864070108755778 0.0046152085965299085450419090026629 1.0046258915537815446997412380317287 GT 1 -2011.7237941744513167266275167115970282 0.1108304035095250919716619151800614 0.0139372583111649620422955023135764 1.0140352938595086693585320769013350 GT 1 -135183124080962268064037078.6094753529390942181388983302314761 1.1480872922343628149323472580799786 0.0482500375268715820074158364832151 1.0494529231488681927573455396728801 GT 1 -5336322960131514596252833736.5944360806268095193224458933304442 1.1248282715207661472880055477965463 0.0559948598005549741099285860055773 1.0576236677249302636573188742122761 GT 1 -1422505659034493.3674698138354395896092889853974053 1.4441810932949385036390041046877050 0.0076014547882874190237794110078646 1.0076304930949160695305326979826509 GT 1 -1842300420056337408667.2506787174455134745366221932488482 4.3049884074140813357234414265264097 0.0355708874733403461255064530540425 1.0362189459400984622416752588523140 LT 1 -263584053.9495238155146212865761587125738074 0.9935167081410767281797478518150839 0.0683448083184679670635713004963628 1.0707924987577932574385842489911081 GT 1 -2311933980794697245116502685.6116532900070061312008032919280319 2.5388908788474606032211291680088936 0.0478969633709549527885619918118379 1.0490820182942067809908869329678933 GT 1 -78690220793011363704341339535.8642206482171895260400422488354343 0.5517627250106562395503527067550668 0.0910513417803502915859974129067702 1.0954666680063501972839561584340006 GT 1 -18065441776205.2746381460097180283260043680723299 0.4329015623463464818501982836353781 0.0275823329731890186859928289356782 1.0279698682284437032857944753393638 GT 1 -29115917555263055656047384583031.0074463918996881217716351098771914 0.1938132128084181708670996673696960 0.0035417722054770969495065527349491 1.0035480591296132527668146926788529 GT 1 -8724702262919315.0588228371570384061667885638804719 0.1222112741557761470298776808813453 0.0940252587838464037881211474783671 1.0987438527801659771309134976028579 GT 1 -11061809313432538142734529056743773106180902.7958532890476181992465073492429088 0.2591817052535389786798395674486148 0.0635368829770881792383893657531872 1.0656451417252272690788853161182953 GT 1 -2352015033901.8660231384635089276971123630706004 0.1274958615143079022413257405680153 0.0849211418093439444445417784272272 1.0887450336053026966314001819579353 GT 1 -14470.7589190309728817769063032716630744 0.3624777684665042742465568876531516 0.0890841182092500777538406344023958 1.0933047221097351200567082973962215 GT 1 -3430499031259.4945595931084589212692159444559247 0.2486831220728115043631785772340718 0.0512617970777050546440334532712069 1.0526223846871064193030636414857479 GT 1 -3240628487359196444435630.4205588237125450805156059493130444 0.8831941564863007153790910832065660 0.0144007872988077721900207421158959 1.0145054850047508566491144503079680 GT 1 -3289491377659144082422942381887.9730091898219384986446219743948262 1.3955850383993971526916110981607026 0.0998541868770334530292648332774732 1.1051985141996972139576337025437016 GT 1 -878536232209.5806415395879994393405001647850374 1.0152969260244636229937056334204694 0.0845902342413195398333013270526366 1.0883834825229309033242840714983800 GT 1 -32255620500908000592504649225864728392451.9921625115133138320779789111752831 2.9285110989561183653181810057396631 0.0034272573570599539866373705579202 1.0034331438571044403377210304191597 GT 1 -846299612196001871233.3804972563092822633158392333967165 1.1153022350695896835939706857670914 0.0946023395158535583781064510121747 1.0993810279419269148699976940029417 GT 1 -2.1064793094235996880618454678398647 2.3504064163831320063672132752995393 0.0507655456265983377009741772471353 1.0520994567508080379517592915039128 GT 1 -1133577441503482684.1211437184512084128980911279804678 0.4053229470531861626299240560344845 0.0916081496150408044799941224234994 1.0960794401857817893047785071286957 GT 1 -724642.7781243964799828737934614372073115 1.0241405986159253378799475806026832 0.0695401809794750370246391801952510 1.0720763859702779392755765557713263 GT 1 -12823413273682012.1748158382994013873088997081938483 0.6638935990015507858493153841631805 0.0159115191499468944778936045255559 1.0160394664093431073716729347056304 GT 1 -725330704871648723944351035246.8481729263290653870850093485087234 0.5832992858678891348563033319032521 0.0767546986373464953911874468670069 1.0798603144986415865620380572453777 GT 1 -456271137865987089492900330.6020764774005145109261174002708675 0.3745251252736764044134512212917343 0.0269227739665304300025582163332482 1.0272918309493125288986116469333137 GT 1 -238533646376581782915952785710751378695.5058185927439409607853904052731882 1.4524763868262414790101562154041588 0.0388813132904226776372144152483073 1.0396573742979234373314525542460165 GT 1 -310386935786774316916804777.9703828670132530520081098843360724 0.1011494822699267973824891467427214 0.0719898620157915902946948790693804 1.0747126217036602434734345165972971 GT 1 -5759856.6597046667630034422842930307800946 0.0554005406186608938241485484289428 0.0308862948990557649668440983118333 1.0313733312500572503572194541812590 GT 1 -3820770227216948810698108925943131540.9295626223967028438012811572928620 1.3842193959703123337220989555202123 0.0990174010086536418870856001334870 1.1042693345554735033530515464158105 GT 1 -5.4795783282500203114410342681218269 1.2154462576134953079836699435925613 0.0274737337958878158752216060151278 1.0278581949040269321355856830805183 GT 1 -59761515257964423076289891.1387224259729754193196991211899015 0.0512050746698057297809915790814048 0.0437740683347449431160020077250998 1.0447610636585355172185177459538300 GT 1 -392662407603272570.1710574072537682898890773744675917 0.1674877514897506675114675266122234 0.0811890545494567978532580490093782 1.0846748954709069513282066219668874 GT 1 -13223535862198246437342633.7385666967106777466502831786852195 2.4358607360037497801890015088789217 0.0385791546224418995667818532959911 1.0393430414424209520251454537082076 GT 1 -284014.4637292602949734724464446019977021 2.2005739741718712792509542714510226 0.0024744397871840692389707530828388 1.0024775062729149383725679077136040 GT 1 -11949896453349719077466464.8964640502089723234544421410575309 2.4286432212714551694058798924698293 0.0818462049338020476402128621616301 1.0853903696418412419316686749714822 GT 1 -34327641530421117045096494882705352249668.5562724575122145540608110010061350 1.2568188103601121184481505902791628 0.0188835815847041589957418915255732 1.0190641532516679451706865604221976 GT 1 -4448076542806321444420845.3923210201811681896708270923410171 0.3537193193357970551025666593220474 0.0368194677830431221306646738780906 1.0375144162006109743293958655570225 GT 1 -1885163417105498707836038.5227546307393665295432623163183937 2.8619560571001366786296218160514153 0.0222571727749588354661125153046901 1.0225086013744027933125352710758451 GT 1 -1970600.8600985599271330160422703830648541 0.2585322357446781257908638454028850 0.0817621543241635337792792362778788 1.0852988307698136582519165592739623 GT 1 -1081.5554076154850640555700308090254376 5.5546553058342762871877434766374387 0.0368891487284672568180912031540761 1.0375867634540450177274056916002490 LT 1 -78092802.4786979326483587849274653862050879 0.6130592413871005136263385601723240 0.0442732827614080164062856573202154 1.0452832674257614414615988097863013 GT 1 -284.8896650197205430914414060983735164 0.0871512235438831763279563499053243 0.0200096166911384876473326497704129 1.0202125203158080725502120820684749 GT 1 -32896.3352495034523634032025004187031847 0.0954526137348912552597586201802622 0.0107029139134835434044634178352459 1.0107606020868779998251895450833636 GT 1 -217891715424924984119244511573823.3365369938393334795362286612487099 0.5389885779046641225533951195281206 0.0089072212626168429310087429696329 1.0089471277050049243137197778836179 GT 1 -11636536883.2483676166777353063454645103945389 0.2004720355541317096810289261723321 0.0849318192350400671264795780713536 1.0887567019854590112431955333942515 GT 1 -292710059770869.9407748754754807116357979620980454 2.5148537024159484386960486243343489 0.0302950623570288418911844017472481 1.0307634417561985835711717684245149 GT 1 -12934415709092212213239280578.3531433079785136082960034131585107 0.0128927924809454416197221375922483 0.0747095528940550506371970867253545 1.0776475938851206352606701793294177 GT 1 -238689884433372696081483558950943.3207242416619097517492110982275881 0.8643140646636999291957027594817689 0.0975508483411636852431708727199820 1.1026429320146105066603129017873422 GT 1 -49382392949806002826831105.2587446019680792586564959854535880 1.0742593052559911201037046778972375 0.0922570888535567115311242111166870 1.0967940779757515908693421765101776 GT 1 -15420107.5646461843011558998830920079129180 0.0540956499947845893177958106943454 0.0899279580209297901169138630401026 1.0942315155948164158196799786231239 GT 1 -943984261.0245919405232532570711205445275666 0.9253865954146788129311513474102366 0.0994197303254630540170031938503493 1.1047159793331778663099521883786059 GT 1 -69196937250683.5363384228769971456882074287377923 0.3176481365517446505646486082996082 0.0933536838571053553553855209597645 1.0980028540427370956378131890254783 GT 1 -7294327749550624.3222771526406675680579674008826590 0.2733657862671771744457786372211080 0.0746885604670022654591196630651605 1.0776249067505129731353832938219895 GT 1 -1190636281262261364202884345982685224.2357386964937528511954140149387279 1.7190451235098562573974585698112842 0.0188916435288686474270376143018119 1.0190723703981108142516400440186075 GT 1 -73.5496034556143269659172079462669058 1.3441277436372723917851123550522820 0.0529565847677744203986489911460854 1.0544103418287199071065729796563659 GT 1 -214421382184710613363452.7141634482500035834041068339545920 1.8192914032511846322481817519581429 0.0151916286362685601718780751177157 1.0153082035755905460628551503059216 GT 1 -1743229790431373273.6364466023041712146665082807587707 2.5337017861554640239308254467130278 0.0138746517184983585650271130308128 1.0139718043850452318701480135923108 GT 1 -1838.0867322002492526587439046275344887 0.8100712131070403561760639120461237 0.0595397653987507594408938740212986 1.0613859122606557688538480715488118 GT 1 -87092694018821.6058554914175358171589753007848695 0.6828546729763820551498542265377236 0.0647458387780588305507079431318109 1.0669369564486862301327614298724598 GT 1 -27.1756730422645821543567449966010481 0.7696993454487178351963864696184415 0.0180592216057708623124880893775291 1.0182242795804057096066998371498486 GT 1 -765929129328361575918216809607568.5965482990879545410625196983675727 1.2348126896142653106838978814257133 0.0567254697519868460197395940741630 1.0583979143820313190211004076367883 GT 1 -28163336222379197942072086045989892.8196548235085606944338565162457333 1.1849622293722099197032409654134658 0.0386022467965422704754977031855817 1.0393670605299402036585001251028717 GT 1 -8632425.2963166068616985695563704668460077 1.4053776223933652284944873527418925 0.0351530526252919170690479149485152 1.0357857939788362052411581952003947 GT 1 -1358864484699595150191839467.6493756942845318527016364391973238 1.9216050505546056678472938600468042 0.0854530765203540243910008033998720 1.0893265019375995522195884494841198 GT 1 -9145481.0042098766140831618203750630548536 0.1050188374134435785036676390093187 0.0931541477955719214743482450826879 1.0977827967788333974331513631159532 GT 1 -230.0993760641162413648165544621630667 1.5537509247776462046350129068013087 0.0649835422468789118937121455604282 1.0671911479733654208539187840193261 GT 1 -108647425126130427.1174820194287181987708824100447153 0.5342703775717425146001592475848340 0.0192639237100095858732655853364964 1.0194518909955574349872481554953132 GT 1 -32474.5670422968872709521734803956402277 0.4433096641346815265293209843885376 0.0148536724279669176173139840706882 1.0149650929326912889545395257044732 GT 1 -30909640903403520615468874092.0399693430097400861577620430907901 1.2055545479157292868545764529806618 0.0634837556009843403860450369390586 1.0655884113872295731545147349587949 GT 1 -120583977962607.6307202050297066590084657316161533 0.1501194610130552146036455053301920 0.0317037241106091294419517152833312 1.0322171684017998956781755634799001 GT 1 -31882630578271196707123142392537862632472.5159344840405992765175063067038846 0.3388217366997399981707195553384458 0.0422075374911018010152927118630751 1.0431241606922962923794498293550821 GT 1 -48778907668844927119703069950939042851.2410421494059860194388692629874975 1.5437656473765033790550214840150390 0.0163038135399027772041585438150737 1.0164381832015510808627347493307187 GT 1 -1384074043509724653254.6682409797004292461489426355679944 1.1805424064921532805974355484798899 0.0801314414335201701633295687732570 1.0835244902694937040950674758254983 GT 1 -2398060629028451987396424604780.8054618117587426415293951436686381 0.4512170755841199433081218650789952 0.0637113948982225656200921976704275 1.0658315112472283132334975510252573 GT 1 -320535065656817149011088.8760391629066929124478317423539101 0.5581351111536680648088305847753567 0.0570269046296972743455890610921977 1.0587175276461462551713094437834109 GT 1 -7286952628092.8697646549930977751286954550345839 1.4415339775659791413311712850266646 0.0980623520867136858154466037491255 1.1032098877908029790016766648845974 GT 1 -3205365787874598781187526159655109308603.1768959990795725593406323261962273 1.2189659783523036191694724589825678 0.0055517579206396874345542999351559 1.0055672262059937850847409834976419 GT 1 -3291623791658183810.2938548335510285546424128055222117 1.8640632134302457630058159490195996 0.0197374798384126221828549451754130 1.0199348654744430888463677144457491 GT 1 -5218856926062277374749328968.4430006139109298865849257672912671 0.2465063189640510907094886392300306 0.0928644770929022079341730005055364 1.0974634211676983337783925613961602 GT 1 -9776362430703634973848937467198953971.9006684615165698407016992650594842 0.8197639265399448831286525341254781 0.0894162852429070462500123671404879 1.0936694403210029732074421625839942 GT 1 -148426554280315067609407393426439.4566534515170086506289199445981402 2.0962507043074628784768424312746872 0.0045995441952888671578568304424300 1.0046101546466858828668680007007598 GT 1 -79742418931229870425546370540764670.1379838414302919068392726155205977 3.4842888495587101379806766561509358 0.0103098096919387588604692041864463 1.0103633239119204893285527348112539 GT 1 -17.9317675736972941714556766709373122 0.1838046016965346315006025098496812 0.0603059010688667208262312431405331 1.0622008833498437111615829148372533 GT 1 -3422286302417793227782.7649595038768775175235075219498386 0.1405327619971402714869120671127302 0.0334486076930304128410036123960075 1.0340208081240665863122914449684695 GT 1 -6895486570734977401.2565695145906900835510977642862111 1.9564544252192833686016709473547384 0.0851808415973443586788817715005291 1.0890288743301835992064737228877046 GT 1 -2448445343217950208570274559150156767219073.4582666414329250489799079353967904 0.1157837200797703586664105938396432 0.0667654822629362474052069494561027 1.0690987509451294418723470044891232 GT 1 -241532.1139460990676544628614662557193874 0.0643865605474310738160356459103516 0.0240382366108886791441876381338165 1.0243318701918963383226927421803424 GT 1 -71871381404312200364771863208847362394215.6838175235891839957055736781705185 1.4314423946115992889938002843410902 0.0544444837818200618986459539821477 1.0559826763533323761062281100733619 GT 1 -2204089551070083937197871059946864.8258116831032681409421053367545405 1.2439812820897658369268316959080870 0.0568753963129645014705960465565590 1.0585568696726654778952185682290160 GT 1 -125531856367909746987277732.0934011414740627272689705257608424 1.2943643389917703396315288743850771 0.0805252403283335038475932823487861 1.0839526853725237305995760285360436 GT 1 -88643603956804481006265011481923723486.5087905650556600498461915577357677 0.0209431407863524675424249612737472 0.0792207165366779330619044485335501 1.0825349202383716410599353528247041 GT 1 -2341334942515175267555598468.7742519415738105294003054746287908 0.2319927658259400243796816021583901 0.0942528880736761600082177175938941 1.0989951378111796682625607952433275 GT 1 -202.2554474681272797263325445272846460 0.7747648821478423756226734306989193 0.0505673568276954033169331209480472 1.0518906905064475261767331022771451 GT 1 -543440874579108056917262256502.0719089340836876467534633714220412 3.7230287627658427859813222498532910 0.0212834821181351564502720474757193 1.0215132413229419452219769579845701 GT 1 -2179338471867372637886810117426959758749.9016209666305429421510525291695292 1.3852359858930009306158441738114567 0.0098442919481532598598321475052064 1.0098930673603879739692455495937176 GT 1 -16393102083989154912683562576116.6637678617139484379555518464947929 0.0205317900651585548742194993280049 0.0420391440885990906360577945667494 1.0429483620638222982501341158685879 GT 1 -368653912710440639626738944.0987989912410299626499598852028438 0.1979983701586713809415131015205559 0.0175803581317372888253297582357550 1.0177367280307208187477757089258431 GT 1 -49832078560874848468839679911015995.9781299316494281738825319737158470 0.2702825676288543627410288029119599 0.0643055843764130766783245576839656 1.0664663348450568710602686199071287 GT 1 -180992206976234533890581087629959690348717.7317169236462773207595591315832712 0.2292876029156484371601662773438439 0.0725588605017517803314520734318805 1.0753259479717246526397043368618638 GT 1 -14394261640252193969.1747767267653040808982809715399425 1.6475212630323471192252061820067369 0.0435372803023788824313438915353701 1.0445134666087940282916828638529891 GT 1 -2603203147176892947545249665579922804860.7570210673362460138537753657771226 0.8476414342446180626690408790328467 0.0882887220457549966620437107197290 1.0924319202207304077768397742540047 GT 1 -1009388616933445455432750566643847.2759122045036282364027297492666910 0.1347278389190868494058214853040511 0.0021888192068432426734364197581946 1.0021912181728445342383161358331193 GT 1 -720.0725598619327164431740988702102497 0.5271964976797310252083254818794367 0.0493307803697776123152370238010439 1.0505891006741305193687221320675704 GT 1 -343375337748367534094606701.5942952771691416959391007585468180 0.0983614232145028910463407653296134 0.0888512171826509107946237210443479 1.0930490769261239363212274334601998 GT 1 -73548532747470257615666880.3463332967275961590802331889952971 1.1643553206731234796402725855861651 0.0948713187324243784984506755330291 1.0996781561442036996350519237615835 GT 1 -811711.2189989239775117720749249194246901 3.0655721467411948910966957519058676 0.0771675680326536635537680942405429 1.0803076081252713210868695798862952 LT 1 -7126973213908578014705.7252119839898101112311603313894711 0.2654097710917976159366012174214757 0.0671782572122551856913552535417205 1.0695411544940291305260787001917566 GT 1 -7104410618856669863411904982.1539257972821287318401871003038496 1.0264695975760979119257601171331066 0.0971351213803521377438285570810576 1.1021823728418710101001751965433708 GT 1 -92478576152.6088262448570542638681270841641336 0.6495035371025587225227061847426473 0.0899861006617834401324811790715633 1.0942954055898474714952626457290189 GT 1 -249275754895137143126737082.7773319467598789454918175575490790 0.3732809645158498194617840918288946 0.0476534488795295650323512499654977 1.0488262861453287624548238242574856 GT 1 -347564776997274516001170267544115311021.1615769868197751341730372830759922 0.9670665117059389886776532716151559 0.0369185329668869654272301035129939 1.0376172736353418165882405437440863 GT 1 -19303617181685052843161962342462730752036.3577168771148289947708826151004314 5.1193777007956344268306965240427925 0.0497360615315068046050902126317532 1.0510155030083137980219970199681225 LT 1 -276898867731.1502528592836824834889955598961158 0.3364904204735740392294816587881508 0.0056793423202510509924253068772082 1.0056955311083902811227488258420403 GT 1 -3679806282692.7773268714694906221656548217272758 0.0837188351164545637424837774358887 0.0346495732533047674112465592627443 1.0352641070361885671800208442868620 GT 1 -55598338545348506526070783.7736748662412354253329236965587405 0.7009575728459895213658657459890745 0.0976940576351368193394428022464322 1.1028016342061133173532477306041250 GT 1 -35270350887055140806616053167986735.6242637617558791338028323632561250 2.0111524295932431389975558580488093 0.0741686522844551823388346454177964 1.0770631908204412812640160939298281 GT 1 -610737297634737404003427825.4698744024262687079183801822877399 0.5096736951220928086670650383162544 0.0680608597407044436815658128609846 1.0704877665796639796480074735249481 GT 1 -12189308739022606281683199030635933165.0523390672354501255090052372947057 1.1404949861330696198650358946981036 0.0383049625643802350722608461637317 1.0390578874770566668748686703585277 GT 1 -14636770543746844.2317004677273278070566995866730912 1.4786713816214376915613266017089802 0.0385087341606225515125558831102161 1.0392697978849644822262516713205613 GT 1 -5925339248899031291662419.0562273157924590427850785790016229 5.1858314438721875042204815906474761 0.0867165718447627761442056083013888 1.0907090104669332339587605612869617 LT 1 -15709900.4519121903294669928634079061194818 0.0263655677959054694603817609906075 0.0740222002641698036426016273594992 1.0769050189907014065171482919162029 GT 1 -409774606221295.3824934200266349571320678058021624 0.2029317635443297626718335326366036 0.0813266297899677696086506236546582 1.0848246385077269244100692328261658 GT 1 -23889844097496138723128998898466515685893.8500277473654452861469058344353440 0.3616647889165028581894153911242317 0.0500210471479752385952131429155375 1.0513154495255793058085266301235751 GT 1 -30778235785224430262.8218219140384490228847157771152728 1.0112948314603386696931750096987032 0.0222213917682571166435057522442609 1.0224720065245004152692620546864718 GT 1 -3601.9960360606831383427041503387844826 0.6567488759289714781165900717178557 0.0449881824700558573975283458582438 1.0460315642010639135274037726219499 GT 1 -425.3689909476559441606260466398269623 0.5222564102135862424872287890814543 0.0489212288808104314226608314758259 1.0501583900886157996561691248995992 GT 1 -5757023332010032.5114939098111937218763025045634137 2.1804969414094228627395528284565082 0.0481299757096693463559562416158013 1.0493267826185141682162428599791611 GT 1 -6921622876747975432.5788931527782594538304280413106311 0.7941185108537953647487533283087699 0.0579871884059121294904444651346872 1.0597364040799065407914656423996848 GT 1 -1360965221091604330114526994885599662.5266514577488629254487746636992180 0.5731139640113920431362106182795785 0.0568572831931057447539254600752552 1.0585376644204061423166052167316064 GT 1 -45474741796423578075113138582.7356978945519308398101022598516224 0.6644992404003893730793856654217022 0.0103933871856147885232746898401981 1.0104477756157719331549244439384751 GT 1 -17478746908281375785759504563120400337059322.3411057668724300238393113559262898 1.6931989941383324839811355152149453 0.0333750459462173418028574359913172 1.0339447035855571452377685445093815 GT 1 -25531584427140560021776.2782516759304756466786380028719276 0.2599740648233052910516683502855151 0.0528532628013904655834673974148699 1.0543012482761493442959731875130727 GT 1 -15968125490729685131614290060695955238626.6405253255166888259763508034679163 3.5183118253333209251691367992668232 0.0855083059380090151838837242878582 1.0893868936834512708688031649000569 LT 1 -49529031587536665485635.1649797471848636535337202768982956 2.7799011075749784843660223731745178 0.0953181367178833160003814596343427 1.1001719293691225667177989070460049 LT 1 -131455120726566414350808.8513540330508907593921804974072223 0.7847539869463792689243380637527102 0.0124612512389629157891010617621687 1.0125395437250162926248210779971652 GT 1 -21303778990876384363005789001404413353.4630686941231578510988661893869478 0.4806574789249934841733422010149834 0.0029767414045140604435775580691521 1.0029811807111762125580611318021808 GT 1 -1012396331779334534766.3799880169362636372829411254357127 1.5040222866756417342352372885601651 0.0106570118548144828785307504517913 1.0107142045037348213518049684878183 GT 1 -11058571409339.3569482572960730878564482113677001 0.5539422702370808640694970872557953 0.0460884907531193322839802264507832 1.0471843694389534685859499376687929 GT 1 -15813589733347065.5238085671833401415701928663499895 0.1834978362985463958795467931715060 0.0053772170347648296918654109547476 1.0053917263026467581402792857995997 GT 1 -1562198501515426853810918259779200997870729.7557155963225426361579148446238926 3.7363742210838322929381849985391624 0.0234332359807854384078640772328254 1.0239932935435357279132133144122031 GT 2 -147002709492026738020381807924861398879.3694113233993326757704712921768814 0.4339747499762825514126313159488250 0.0971524153005563867076655765596262 1.1022015275196572947049691653526303 GT 1 -12322615895792237385526865.7553177284986829693296526789577653 0.8829528870506868492104573161111861 0.0852498605570082438420362623636199 1.0891043226444703516896071283434483 GT 1 -10647558189853882932001574.5597400841042714600226190817477922 0.2040268116664473406135288916711114 0.0419068736723159437185665937915669 1.0428102966254585115790720449970882 GT 1 -3711153266276717.6817666957854668579550804202101718 1.2687685888553151133560455349099419 0.0851240426808409398626078161064089 1.0889667886678963535606798230119333 GT 1 -1271840.8829433690913757897693733611021440 0.9822276529216743486720895482905583 0.0854984579875490918059984592708975 1.0893761249717187385517746855306419 GT 1 -11152546.9977773442106451791167016613365102 0.7216729327155664548945850366737733 0.0392448541990795240948079364892499 1.0400356935266294733132896085343913 GT 1 -2122154245632563175329374408606911940.2092270103389374371991786728131205 0.2512743135681404707804321343752033 0.0904764337795377827142208580151859 1.0948343701771726731915131513386397 GT 1 -54895889839100527632732963.9139410446459888297526438785707060 1.6438153016762860780197069265177249 0.0357683348585695533268657756658564 1.0364236967062313580719985491876826 GT 1 -2043733094.7022593507630031047316490873110067 0.2321518139605832791090596897707931 0.0676691554832260611074162822247918 1.0700675439011450281264742739717228 GT 1 -44657929.6187145872132350359204278642279533 1.3954325557702515684694906011068357 0.0435962197976240516909615913486118 1.0445750908729723206115382252751793 GT 1 -1326402730140819224741917599414561.5079963392939128903550779710388657 0.2246753872432123468971335775982736 0.0605320238814734757497789980640478 1.0624415467994742364172104634456041 GT 1 -275082592998109770225369089227.4744104323803707536268208106563583 0.7472567559730261688587499310538635 0.0290890606626293779096609048635052 1.0295205354562354303182157517269098 GT 1 -223.2799534354800760415875598781587796 0.2866235244468227755115122934885856 0.0728249936666458640858788306206565 1.0756129433883438178903400573724586 GT 1 -608973880.8114346251852606682743418080033534 0.5264008428421378178699761856439938 0.0278851020057734076953683709182774 1.0282812736947006537064061119633744 GT 1 -208590540319449347635252089945214.5945774467467714015570243227868194 1.0804326465901499976883589202332262 0.0085505653767009533393926769434191 1.0085873311898438785721656264904001 GT 1 -243911.5617750035404067761756148569006331 0.8630129486473599396913143648031354 0.0420600877703915745975723605083244 1.0429702250769194115956148603835122 GT 1 -5874.3221868026225329166758058326320543 2.1523691034516053197188982432591295 0.0109057220493846949748772881461837 1.0109656253601273440341483806687757 GT 1 -76344240672230745223.7944873874066700978638340034579488 0.2139679235700414672116506767814532 0.0408965367802873299401004940204470 1.0417563233489927215789097459260833 GT 1 -62295123647213251323852656711211239543.9999425882413916521275487059128923 1.5791353956541744551605804752470268 0.0164656566770235962435753464188801 1.0166027222680567216461177953166239 GT 1 -601078082425023065296.3773347139170457872227323260568489 0.2378886178744243712371942047804070 0.0751956796398213561741338821251835 1.0781731094051929003593620622375809 GT 1 -198858513797743.7148903020565589257139045967333374 0.1807464736031925655294359772946980 0.0338067435222174328159917356907588 1.0343914063130318579710865477293954 GT 1 -13788144.8133011064260732042626168550277387 0.1413808614407843388379207040229201 0.0781126884771934904161939426796650 1.0813322846709310258822485835060044 GT 1 -9463950760705274973.7372804870271470319779134110916015 0.3387084805659463412635613592955831 0.0603734089769822033621285316727221 1.0622727262327592031107213358296904 GT 1 -6114417208615758643868038858656317.0359780609507380614080339338000946 0.0289930547544293193066684022732445 0.0432527160004761239128975510132133 1.0442159934579624008675081577268220 GT 1 -47476560228803091412204233748671507696359.8685317479809474624620735541325999 0.3452406958756418032543870152029846 0.0112647454510302981341010211576372 1.0113286732362860692370791757277736 GT 1 -9149502714116368761650714.9815387701778740624802270520343073 0.0533246320272878298042380133672278 0.0266288203853774650546571342437587 1.0269897899781419201424268800442446 GT 1 -856179593717312770501.1812837579758279258257240991720502 1.3129194365231559528788855686888706 0.0071872935136546489191888845934801 1.0072132465371130929119808105569926 GT 1 -1191177562300628510691299408521524.4407473031674417918720833308968227 1.6098455468219310402163377051643506 0.0251143885897108174026856305717255 1.0254351364974833302985111943926856 GT 1 -2726040918503996579879507758876246993.4051189055104995424979531936770085 0.7392282500585090535710906866648122 0.0177051345253343091421660138950866 1.0178637453589875326983182380481762 GT 1 -6139176106455246067647410528475701301.2355984067781400665818488852624708 0.4603696980861196676672598186612405 0.0856028702489094048223425107240320 1.0894903054488395063306755917424416 GT 1 -931150.6810313679256726610385237137393502 1.2082883028718130020744937878258270 0.0250892336924245309071480481274134 1.0254093339084795240467340994194534 GT 1 -1759196.0230035170899737446562423914175486 0.7065328717787216378772783425805757 0.0259009163957307611724928581194189 1.0262422519671219856662941401311208 GT 1 -6598075808420166703879163425613.3090880846942863722831621677119560 0.4834024598562545542434442296115177 0.0988667226870824641744343239800942 1.1041021107671438501514583245674537 GT 1 -2174962.9806586305491889310360219370371922 3.8382950706613849433132333283328489 0.0661490522726380109669652861710696 1.0684384383626601522461201927428774 LT 1 -120800021640111844889787302565326829.1385820018243029887722402158418276 0.8619666722615744256554480708900002 0.0749996082756718500678739341100782 1.0779611179840413664647897112590421 GT 1 -562221338004338023908698894545985820969456.9300681891373944812238416042082655 0.1916155945904263744959793718587339 0.0348407089118198010299044572227372 1.0354621227802936395962249630450120 GT 1 -1406775221134288596157652798038459.8601891262394002634683486103777723 0.3260020388698712463618697807620170 0.0358520243988122674861003204280866 1.0365104944907827728830835109873661 GT 1 -141753792.0530089173475182019809989313380284 1.0926818738872723283069063436638661 0.0814314015644736815929902285140740 1.0849386918293987837348440123457212 GT 1 -867178521789372728982380568632402715.7523848223214938310087407989862326 1.4718817129310499732707731215658565 0.0599783068636290458302234443859985 1.0618523261797259573902075965798926 GT 1 -87375712537749783205.4741840517426877988686321689598297 0.8660462005574391350187513745814407 0.0726248910620011211543750250858609 1.0753971470032544915015504099986562 GT 1 -1041164558111719606798585.1554122149780929588736876792642072 0.8454285238802288146043463640324064 0.0123399415703305959393052774865026 1.0124167108553899865409046825479347 GT 1 -118823764468888510560855243840.4613433513762389539570682903261838 3.8999979410276378902397453305323741 0.0845809893093009803899167454376183 1.0883733833458395674617202873320907 LT 1 -108300031552597855951365446758.1842932617178447073603421488333987 0.3919750838078103572872361805937460 0.0610453721933344811600776936875315 1.0629881206360201068808560020309028 GT 1 -100395055821.2850358196838511765567159608359926 0.9079651294595286410655145759189289 0.0208057700883699093911139352572797 1.0210252598970437048952060063669212 GT 1 -485384593110063084624929.7754151086992955892577331293263713 0.7159378713830095034875709473080269 0.0874962041035762362820814461880642 1.0915630336476509911395790665214950 GT 1 -730892165446526.7687224490787707676084897754792319 0.4707105775018488437552574706954349 0.0148592243623070331641850216216224 1.0149707285929268818065330194461672 GT 1 -2.1745432839683837008105355867086671 2.7452926285771810767982495898185896 0.0815473522037863041369284246659183 1.0850649294978029490940097588129997 LT 1 -547161460819075247555.0910588920350590872797906179138985 1.4719254695171501558520412104625213 0.0111259416147449753333713732382661 1.0111882978490895893774949693622379 GT 1 -364183.7305446128025101863268854993924206 0.2424317534181343169744806387490823 0.0688304924043568355145058984362891 1.0713139478206948689559828279559376 GT 1 -1859435203841123521158694354763657823.4763612677073156919240472589731516 0.3082575718264368717938466098361640 0.0617400035003310317670894601492105 1.0637281866143119861142500045843448 GT 1 -2165739877.3074912124763795368865099712951683 4.1010975467255709922295295054444885 0.0465832679167819285833823883261295 1.0477031864564332356460630028415116 LT 1 -27846.0305567830568044963492508946367822 0.2968592016559225481916861870461312 0.0910110268667066436054383503546611 1.0954223156446905141625109544826723 GT 1 -1968786.3364921601105377732268386892324193 0.0732531411366518316949701293372919 0.0168228421334380417125775662928267 1.0169659534385924795102529167895878 GT 1 -8.2841713194217211652392594652439545 0.8077025976994033867587538615509605 0.0645499722044256996813551935207689 1.0667275523371235896911059551820049 GT 1 -61346204.7881004750240243859821515366904877 0.0941058738670681483322800902971065 0.0785906578244428584236233144877046 1.0818508874221515827210994765732331 GT 1 -274959547873549267304786952.6555878159988569301791980531226228 1.4283299973248087483730018538203545 0.0033468146053767800393193352714135 1.0033524277169064764712129542210622 GT 1 -119605650048248702514610202807.4616738863413426370637693541340250 1.9777597488331885731532732839402252 0.0557961017386720072446586427112967 1.0574131422390665945275587964555413 GT 1 -893.4644117200777541883517672328735042 0.2541724265377314123461003481021486 0.0151771713517478414833327582474322 1.0152935233811248101765907977753218 GT 1 -1244062888.8539715174043937865867016709990880 0.4756337235591049798378912490973739 0.0042803709547281987405800887456990 1.0042895579677382200670440157761510 GT 1 -415582982555831367486976569572069846711.8330360548490865991326695689823584 0.9800973695681291430413371624860045 0.0898388198678118254515677845785207 1.0941335741309353975032399152790950 GT 1 -24610912230492169838007016351285468.1045554621283833688608813584628807 0.3118055783545727517697709958456607 0.0223801663326085716304375576355092 1.0226344026492985808661234653130716 GT 1 -1732512930444093075427013111545354.9954717059456286196698618510784603 2.5351398203092442179155679824202964 0.0698020163488581497392246337807500 1.0723578298453800633782637205949299 GT 1 -18841571334.7599312871444969522352888731135535 1.2921993573256747128617788889513290 0.0114561209861323552505274808962526 1.0115222478636122656057119076709442 GT 1 -103868114896221568177539146419165611089652.8852088239254299283001875295582077 1.8089615139374131103160219525767494 0.0454448891900270223308351422972575 1.0465098995994217587831217689460738 GT 1 -53.8707912610560722507438499759602759 2.6653560206504507666268876803668549 0.0586062718885754353408861357065555 1.0603938123366036703723891909101371 GT 1 -8864523280423945862192.6764960842055088606505595641127438 1.0017955886159596589871709496711575 0.0331160321497157196110922371332659 1.0336767826102601476527305913973408 GT 1 -256696069650023001728278539538691140212.1348480517838793010809454926642319 0.0915563201501981399302476678840833 0.0415664216268170991627550798206007 1.0424550163695195932924941480685010 GT 1 -8214293049756873272.3542214094062935804508022113239872 2.4302366534828830677774958170224511 0.0829517934288157208015508950159807 1.0903446058796499294173985527319818 GT 2 -1109.6029286189197612865271357525763621 0.1916763841852153598817793952486614 0.0469937145801926626739616845208123 1.0481337799458992758978264365554752 GT 1 -11420145293732989.6062740984537725743235054389056605 0.3029721765318723066090274034361929 0.0676738681164268505535717231147356 1.0700725985929842714474627799784168 GT 1 -15116121014671837766862839216479479737.7020075656822040542232292785211196 0.3892464372635909779444327471184933 0.0704368127934639591857533703975270 1.0730404943500550897357167854011087 GT 1 -55938947621129624905546650027021246.5049443358564085050786071764086450 0.6266485069005512744190990090681952 0.0477495450888050441616682829795049 1.0489271959010961988824368944456892 GT 1 -252113073164620170620.5208867509627643648015130038563931 0.1790279821293192499092453584452270 0.0398350925134201339957558125813188 1.0406502306406608921334640618166249 GT 1 -433450536257505330352.2325980682286030334020603639025454 0.6743543343538810460643058506549255 0.0940566385149700217019402056574999 1.0987784898104820545255545575876333 GT 1 -53.2307550589899132532419662078104888 0.5245559408956632947948456321415975 0.0442353162366697068231868524605572 1.0452435429208817419110530842426829 GT 1 -387986702.4763670495386551912863568357374421 0.9916250140436858045563483718557958 0.0425455732214908464652023886751520 1.0434771551138404477746403251993745 GT 1 -44080736005542.6353554199520731005613355544059056 0.8245310672097556158951779999723891 0.0662978818872310733211660937863537 1.0685978229794942403636715192790529 GT 1 -6409207797991400899575002.4364632238604265097688914317893518 0.5459359963595087432227813084710161 0.0058826766772440782218615257238088 1.0059000477789069574906205053095730 GT 1 -178117799920420297096031084493010.4804973973146744361009460974619522 2.0999390734871753783449242153708424 0.0685051367242526505146891892610299 1.0709646034208115067215638487898623 GT 1 -892055924841.9186705221815397618518084329450573 1.4061892865480582020339143516434466 0.0805845429577031646980379783290758 1.0840171836539885056900448396724948 GT 1 -167404933107748071432532310308246535826223.0652159970357991515097781058046604 1.8511673893425399551749265393833875 0.0701121019152517383635698942079249 1.0726912397941472565984976313225383 GT 1 -5417.9214063823756301597838370965417618 0.1825767559454971016639291184448688 0.0584084088605987663570514086568220 1.0601836534716544322129664501843855 GT 1 -911994596.4195263051501286095258429019042652 0.9181069018196143812696522227334155 0.0685860007539142635897495161763999 1.0710514182203320102884195208759009 GT 1 -1019494823525294552224133337116173.5911845176627979081077365076090382 0.7329044856206145082030986977098749 0.0709465466799741248831777478162980 1.0735890032659611886254486711531303 GT 1 -1704790431556759755393.6317790686700038092296332994158684 0.6114509008809435119006358400244983 0.0584837113324550746716026191768743 1.0602636302724569080199104102478304 GT 1 -193972107237174940126775119057865.9287216346568461537264828436089246 0.3130362598276903791438696306295510 0.0369915295394924629870766297259484 1.0376930713135493413019805107777269 GT 1 -1164240253.3709550411948513856710507031988426 0.0218961381728891381305634414656624 0.0456078004081049693920648876125970 1.0466805813333656347751160633179012 GT 1 -1310021830990558209980457733788.2679020151345566151925453020475517 5.1294356703693770605591032599249375 0.0444458449417741353168240024423905 1.0454638397145717546639856080842289 LT 1 -227117971561532312959463390818.4260211735112271422520653118795279 2.9901774064318534775375528336531498 0.0483562680837257554908850772233845 1.0507928674941238380196925667970362 GT 2 -1325987154865441275518165019922936759482345.3025324820593354500054483243511814 1.5980085824231787020163195346981595 0.0451197532274905087353568576866721 1.0461693424138770411202337670238334 GT 1 -4594038615287.9827525446474849691408784640399645 1.6373136874725707151680711613915045 0.0013611042000024028608898194271235 1.0013620313437123266015233308772322 GT 1 -138174856914005276293245419758127180715540.1601108802291157165391368309495034 0.2113874455976722807620126337903233 0.0600014139257259415350198533315263 1.0618769078955229392316338848500160 GT 1 -2192896815697519878045097792188998300.2156010333841636913883665183537649 0.1095817630515029516121696867961081 0.0843847551844583350297352305265075 1.0881590409598314104971050487617925 GT 1 -1548389.9187141634021494616853922504046410 0.4926148592960759741143329747301105 0.0313942144922410055661263038785273 1.0318975759689442149393328709848331 GT 1 -331531035663455.7572250712264189466011098906373579 0.3451577085221467097101178893328926 0.0867232513699435012043784575749232 1.0907163242420452159294452784154116 GT 1 -3723527817233049569002027651.7867570114652401998128685785934621 0.8969908550886315968522489044932642 0.0203137694733388367210570750862920 1.0205229315157940513066125934052844 GT 1 -27783960110866919.7953884790698445085262370294820976 0.8650636871479840504379070097842981 0.0733553621318168685242420831026691 1.0761851333328189386651579336364531 GT 1 -2103094124248690619073655064.8010190881918639614263977289069334 0.4556487949820482389849013613292196 0.0066537219442334346152803966540687 1.0066759566359421688502003965306722 GT 1 -734019813182469644712661597550.1140573070770608647010362312552863 1.3518853052582808230225317548860675 0.0323372744373593083630015166464314 1.0328716764248434891306254365654417 GT 1 -180648752266805358712361702735563121640.6398309933937085670580014785577863 0.1367786372947254052644724127414702 0.0632356698518429691429124853643673 1.0653235436957982348220436100825085 GT 1 -501777776854330146396091221677.4233774578503974639231542818777653 1.7389574091197073770140503509514761 0.0691768831785936376198730029725550 1.0716860124289971878628518177031557 GT 1 -10322256775.9158387690749236930999702820160281 0.6655921134546657406358237299965815 0.0231070441892906364124655856329834 1.0233781971070335497566060860946572 GT 1 -73499928474322739610123184730512384047919.3897424709898185018302940930095502 0.2116640514072603405487122933128091 0.0753298426599757778329181442823705 1.0783181917212858300272945101727047 GT 1 -125238.3097115547830932042482421061706523 0.6622142456479511368035463102749055 0.0201483060393209015618361895536396 1.0203540514626514390224578115536174 GT 1 -253.3522599903092584417989662970680338 3.3574510842538547923708017179132999 0.0497194971808882286906291204464192 1.0509980718446333811569218978538679 LT 1 -43077546594740838383453180429435.6273832234513697590553397167943418 0.2963835926403340782692338350190694 0.0924378064836517632827098080443505 1.0969931823910125514745668136141881 GT 1 -8598799.6639861383472248319778644347306039 0.4789029978721540035053095491792126 0.0971063334598205118808538746442208 1.1021504882683645153781669345221044 GT 1 -206593577265926206459706216.3184249751293925714330121407699732 0.8365078930919999192198195645754749 0.0921837138931663968446208950231635 1.0967132489281047052239827020353366 GT 1 -528356468044688288443455335428.1626749403775955944040192611602764 0.9064625865446333478363490115552698 0.0682516166254785226118153365526798 1.0706924756663764270905813438364480 GT 1 -462024515.3875921254394417617129756994525441 1.0548282212972282341408878306080144 0.0480603462626037115746973959342006 1.0492536351312413705081337255874521 GT 1 -2430468447159844297427509.0886133696560681557720215286928044 0.1714485426638934670564300858982456 0.0357416000217481858606570524635698 1.0363959705205417045645756845035621 GT 1 -54910780835286.8746035299779762502120966140774117 0.6675322452932321961504526292247395 0.0012351661507379595195100133642641 1.0012359295971681333909850247253805 GT 1 -18454000907219649390076867464918859.2750481836649354571005818772921998 0.3161007712797331867193407961541040 0.0812266226538623381461921260804307 1.0847157840483123116898000082106218 GT 1 -14271036272705.3782774731207992520233858465330354 0.5689535971658714434686154701815924 0.0186061400447312814709253078014145 1.0187814117599377528666319472879276 GT 1 -41424399648146929583488491110.8730119406435266795424927330169843 2.2546566350859008943707828943787555 0.0154114520992819556430941141422477 1.0155314429457510527278091196443154 GT 1 -2.5810233176349955733319784117371244 0.2757771141544287661945212900348769 0.0499709179454515010309287673131836 1.0512626821671109147768976183019156 GT 1 -92389192462248.8415352349551656454769432043252157 1.0503600692112024315291091788933524 0.0891329653299477579693452410457760 1.0933583477313918231425849940617218 GT 1 -225906073162718750406379.8636227304801297580120207051264906 0.8694767446709218301035869628502129 0.0309768718950131332561765222423646 1.0314667993628049807144678076175324 GT 1 -19431391.5190261221164367531405708985028238 3.4951128487495739363130003867843623 0.0948577456436528333548001404803099 1.0996631605007287946707138040638321 LT 1 -237406163916051968.2196966156640297469563280432947303 0.9526810348956133368405661915205594 0.0209208827301024720431478391712009 1.0211428253452287881565250696621817 GT 1 -9940661435255983097558390.6913365001606995809531476042334247 0.7104872601842296297670318835767759 0.0169656325236722004331571288373257 1.0171111976187274538802339552355407 GT 1 -221021385149535997200905509285208273976.9569625838428831971998480261993793 0.3969348436921240076670999353749565 0.0068678570945902269336788612422024 1.0068915493641859539747437712227502 GT 1 -113034586603303.1021803893666413435888016777069608 0.5737506810195651996082532524999166 0.0575913470592305609984492805638045 1.0593162843137570258781463433734244 GT 1 -8201384335998480106272599807705803910840682.2176908367487852583620086121733150 1.2688352963270604267261933401290574 0.0774743140432070286334405885391359 1.0806400595994856151795365768768698 GT 1 -2306701344525416213435743698.4993540065439052073570333785943823 1.9923905152147593450983154223240112 0.0548308071245709742720304082123104 1.0563913274343375068259246910361624 GT 1 -130962636840302044022413273.4425760847144521186822270610228989 0.8363146110618654786470684684633946 0.0889827655043540144234293130545688 1.0931934636841709619049123636678041 GT 1 -7179115329579935444636185.9402328315603937560298558517119959 0.3421174681573331147791789281606976 0.0640693971960000665138005733512787 1.0662139475566403205416714373566171 GT 1 -1143916461029070525588667966194257.2554262470361440690129287422521151 2.6296081354752124411786316463323282 0.0719202151151074053384520934294976 1.0774229585861242861071602434626358 GT 2 -83654518598392530947202291446.8558774584442605900071223674148471 1.4352211451785890294291791910455329 0.0858929865750244962985219854751008 1.0898076318597555140751642249509560 GT 1 -241054408283208395.6000322250784334912392683564744763 0.4627249167761630872673242509633629 0.0732019632520213000552522421657412 1.0760196047386555462596558151764122 GT 1 -20310345516599043758736397848.3097557880687706628120119941564209 0.4488727288361531794376462398157448 0.0929866295110963288987183420065303 1.0975980875325412552698157510588883 GT 1 -38.5411928089066624199697350336160738 1.4273689360315832227313932480976361 0.0514755280330607051475605699274326 1.0528476892367489705915188610065633 GT 1 -1830830618787039981574552329225148950329843.6336467904648718187098487995489225 2.9359439450108650173790488348772915 0.0147087478335066624599811782073455 1.0148179940383017385728256213393228 GT 1 -292224128566211258.5663475052574324911757429076861231 1.7106829838180897980047248099153251 0.0099874172718351665740325156483811 1.0100376261078414760661514487029669 GT 1 -86560253608996832698779544135861.2750252282434114106575809592817348 0.0549516701629467672537847104812172 0.0555019307730587735564784998974838 1.0571016362703581413213809654167719 GT 1 -38711942270873794088417887148.3674731709955416756543247600346340 0.0571514526357468292683542339731147 0.0680507225822669219617300278159716 1.0704768891490823189165845160785216 GT 1 -964631.5431294022090284405032346186895082 0.1821065380424723599796632635391615 0.0813511729523108563591879260405595 1.0848513547389695211050564322360719 GT 1 -10591274016117419651154300728671978489618721.5354470443922046427503828752636147 1.5859515108084573418446137148675686 0.0658507098110696288647406376504684 1.0681190139235734833020621061145851 GT 1 -33599154908349697757262112859495.8122896111637217411446197775559279 1.2223685831855481304509790447329796 0.0132778535803999350109686501874326 1.0133667924336342103980638517382005 GT 1 -2998524840977471169993745969579651531.8666670577003021470418282239758906 1.0699887605145776743374248609767129 0.0388838977579776018571185423048018 1.0396600633217302901497641227204671 GT 1 -676.8385538150167240885029143548653718 2.8322790605098619351677915591627767 0.0655184600994761522606382347394875 1.0700593458816244324444905567693763 LT 2 -181.9041772183422004069841103100240463 0.6366917289499781904944244814976673 0.0990235289001395377440005713591920 1.1042761359213731287132786358356934 GT 1 -4264273935801715942106492012600.1789959713553686687383552851130499 0.5303214602094657285621160953132562 0.0923371709687283128571298231741055 1.0968823030082621812310114167444162 GT 1 -7411121621941453098454689.8318514537466591278028641391520662 0.4745428739591758174260043334467129 0.0571209638093853632815306790766760 1.0588172800903511264444300046756663 GT 1 -28.3758675041442683597552715528657957 0.5200539911990284431373886838138128 0.0981136826043955654000625150383448 1.1032668007919415850970526483285597 GT 1 -13994301467491945518056777275081.6558266857508127269526620804460720 1.1137702539515142576496887962302614 0.0993709193505983960153053375717918 1.1046617813301885660386868743594228 GT 1 -363748135807011214663662788860.8237357613650941582108514919971716 0.0675016459643357752384822941816613 0.0973458103052473645839321268128671 1.1024157560606350571521536893491833 GT 1 -89966716161909865267159944030571782.3168133959381484091764540206612454 0.0499277935233051937467902687109049 0.0939608121025852804403015943234428 1.0986727201246683180103444503492170 GT 1 -8130816398431641268932752781419075494.8931076596584792299782179218724083 2.4251539188145236090180397091745248 0.0187313049479512785068501480692800 1.0189089577846686441604561423167811 GT 1 -15.5212794123616600997789060025247841 0.0747585451515188837429297672449369 0.0663070819862723287642938457765384 1.0686076763836892236347045333151570 GT 1 -631415663998141749806136516260579736655653.8858194813866495959711799312420893 0.5472404113305392138453267557910083 0.0734622511851412809611073174234622 1.0763004906276119934059449262632119 GT 1 -236842325023207878424472.8132435636547884119477811657525098 1.7706625902750600316694473305659136 0.0672366880241453236469107627791804 1.0696037952315929810364839654507258 GT 1 -3345275110210634627254988.8645251925839973742629238763226284 0.5388755611580723450377987652389945 0.0868814949586059294206889695761875 1.0908896093934825065259347046239273 GT 1 -1417784177.7623799737626987463631300858702178 1.8660048762233182479334476298852363 0.0907881376860741733250043757638895 1.0951771401091791633400411582255106 GT 1 -767168657948856339701885335998909431.2612840436577257374154764446766368 0.4339973309501637472420642197816582 0.0192256353020998725219096350075563 1.0194128512768646373974010049407671 GT 1 -68963120691.1910944760365656870087010272524665 0.0673321058167011940937598447726968 0.0607817271076479148744609101074219 1.0627073742922515230369462617486507 GT 1 -97777488616841879677.7996059531425119476407044043233227 1.3003129992308078783762726696156470 0.0193216985435956506193492260199323 1.0195108023956759101916470229966841 GT 1 -5474845242171252609193826178417.3185022006900238133725692576789118 0.8870594442537127354500216552284273 0.0738485569753000285443957509895538 1.0767175123250005584076620711135748 GT 1 -4037653820903349661.2112439680582302728908852927109554 0.0097997477219005405170964550581159 0.0283563147704152183681426581269406 1.0287661207101064543973271463646219 GT 1 -410642035214121450705322210026.6640537380384918803982276306296353 0.2501913441612481292808407837479168 0.0885275807365572555518612303281116 1.0926939439460778575158322794264865 GT 1 -709347574936313335251588.2106024660481938849556835833915287 0.0134316029138761360176514391319601 0.0248704519776006900090413164266306 1.0251849470441320808685630492630270 GT 1 -5.7863249906023169714353996922766899 0.8078875528410619009903908780460424 0.0670500397739616525898332461282907 1.0694037127713486317587201975722605 GT 1 -3596266503212417286462.3833279305356091873468098116517760 1.7172846206119906636392231250282457 0.0057856582077279667003597499640061 1.0058024599656710865210526466709988 GT 1 -93362112826729.5553569921439037128154982689723672 0.0515982189831463500814805418093423 0.0936569630436602699813259744310855 1.0983374166135159705883041387127269 GT 1 -10982711416206.7583429468338615941931787025976055 0.0745422565868033457958075309977852 0.0988439731525825155811451029235797 1.1040768656142722854476150960845348 GT 1 -4263351188518736474949091649726209183561840.2502348852787592552622567618814028 1.5132250893563385049270513965902565 0.0556409819935053001392881541931241 1.0572488694534692925341376383641958 GT 1 -27123957477117741541994541305179810816734.6802912775408079574840137475366151 0.9450873060319740755564371528756813 0.0500614088508650776019750497912479 1.0513579373725107157683600604798299 GT 1 -6340142926546326719052839811750328.4749836338235377009262752938297232 6.1933390535664264214415725831099129 0.0220650544671694553223905731003604 1.0223121290198221507996596886366237 LT 1 -418526442095109633039588728241890744458.5057772210116897883163781477863723 0.2713619915622538742900874058862694 0.0469946320505429685518353853717664 1.0481347426581142659087767387422516 GT 1 -357746831594602293.4881941111988192721880367184218457 0.9901842116866866423028776153354501 0.0086262357969744945164433876502207 1.0086636571278852207264622879653280 GT 1 -279675417176128303243561.7385443260930405393851457685357505 1.5070102948504833287040067538942698 0.0692659680603935189396577109342087 1.0717817224983089762775053367774852 GT 1 -38549382.1999436463303484160026155578577940 1.1661203481718894496199564971919867 0.0531329893292061880544245414764028 1.0545966278953989028793184146379754 GT 1 -128.6415400662739412177022103860062715 0.3707094814542463224855208418724310 0.0423507161394268455921263636916714 1.0432736600428905835531143622279185 GT 1 -68922194794595845968410101593558227161.2710987549383122322752687877099177 0.3462106015460835874163218704122639 0.0710369092596116642720556898484613 1.0736862710540200712104086107219061 GT 1 -399434738229488467706625556652859481889.1058457190665558228041604637153656 0.0613371656397021124953256721038000 0.0043525953343368160871511500111730 1.0043620954542162350261311753371787 GT 1 -1050297082158222363621.2494410949202557893089748429847828 3.0710952014525110820152221888555969 0.0015126121485174906571414494683808 1.0015137573012003308751584134465317 GT 1 -56364105498131948198955641147.3097392686673147791694691480443503 0.3844341735100100216282545753369479 0.0386744206478674236311735727762734 1.0394421351391021177864643328052576 GT 1 -1935610881244693563852627912641126036.4322759377495468404012362407128342 0.4588781808772623065886427109124795 0.0288673761109938464960937949803414 1.0292922351680275707435996190263383 GT 1 -129983293239500739194240489754852477430125.1445254089000468686081959461254458 0.0681518261788868813893366348791734 0.0070108532506371021752827203094966 1.0070355447556444608774414873274976 GT 1 -10.6550867876472489432507462469351387 1.1729687638367510085655842733008133 0.0620444391450373812812204915239783 1.0640527075854602721846128289579431 GT 1 -31201324114148.7280709576827271631199961812635031 1.3416746557986518743892573105246873 0.0338821415108349646309039684130856 1.0344694454942711447928950291947809 GT 1 -3.2855701242639979757322578485445797 1.6654904860380910414848512139198026 0.0330662156038607742702450420299647 1.0336252611617595373837925865021654 GT 1 -8863252.6621631049546711254677165703284719 1.1435859976834754190491203398339471 0.0557328178756067911148635739393560 1.0573461209711783101721509082119295 GT 1 -51383202553270909794019834051.4350295715877251297601174665142713 0.6640839822918277948715764220106562 0.0272705789602053376386229631119511 1.0276493227873655902267528522932171 GT 1 -822423.5071272529816758674258151716004563 0.0008518762909112480212346291959922 0.0435030946938929231357431209459020 1.0444777255423932862512633488941877 GT 1 -37216792967525165592925700458730778385.6158780953164115504826198566675721 0.5035683249947972764445569565233025 0.0839622166996179874121606551572150 1.0876976670141662576189476044771920 GT 1 -2566625349037967.2833629496948267016822885130304900 0.0110204287716170666601157995980255 0.0025069777976261477002955505427831 1.0025101255284264060350423424507053 GT 1 -61956364335988055295581418673592924589.5408757818273044876008874987538136 5.4454121230376164323299415953727565 0.0495525499077609245136376256728442 1.0508224051761857411177359837204548 LT 1 -52316079.3333381627653354098105726236000826 0.4147539650920053864939021757301357 0.0724831605545134165238697309706873 1.0752443289289865594796885256822799 GT 1 -57777926365769544658936783239793364183681.7245479246803903916492738375765192 0.7663385809959227201548122519209996 0.0531395719925507068732764925755373 1.0546035799659134852785695906749057 GT 1 -445246201503906316784066947536983045.0538965676159949755658485487826584 0.0457425572724668315656100840156526 0.0719262423798179047373797111401929 1.0746440691601580176912870638233008 GT 1 -110103547616084.9329380141314606041228345556143952 0.2796802800645903369962856090992655 0.0493033372047003886534219769032328 1.0505602338838585483325541939689694 GT 1 -23835475888200813414106375605536.8572330539250065965226728414114464 0.0745064588553413516107202029341135 0.0872697145345200282186896075121030 1.0913148577314422666320343701084858 GT 1 -587651588550460405907534811197817149843839.2566411695880459438171921026520921 2.9386128510713451513167222343748811 0.0938375823644990175460684169500771 1.0985367200925527269742620612226535 LT 1 -86335785529031809714240780169285423622840.3613692774648248495296418564776691 1.0674783768108907787553403932443724 0.0392862153149470931828920846939148 1.0400787450849635406594860856196110 GT 1 -187117341457783725243596.5443485613565187600823564021452235 1.1837778024184440965024349824645777 0.0749685430900923288738572535405790 1.0779275345777823072736782569197598 GT 1 -1477158744782234395083625.5377188990651261968311799559825484 2.8400663550283142670379512492527517 0.0472882495237108751113817782042775 1.0484428864772071720472472766965258 GT 1 -23336575821495516657271258953749866.4560770578613639809069282333363136 0.1907068022123754677023469610120656 0.0733807914107759269646062437348243 1.0762125760296688917822133399780182 GT 1 -12227208763835993.3710807336782899448498532041032767 0.9814242770558127985870274662110094 0.0363590045893641721614305198987068 1.0370364651336935572484241163543052 GT 1 -5352211063794453879810148103961296132635.9261642086536795272759306103858019 1.6753309280005823452883288085293251 0.0233032344062043384557797173860298 1.0235790480998737438315114526936003 GT 1 -713658976582066678256975.5631233041149589486321909776328010 0.0331391466071926748589732011712181 0.0559601603148304715736449190404584 1.0575869106708366371708552146634941 GT 1 -2082755104412430120.6958059703651811659413130596192566 0.3784045465172040962209326878242562 0.0828323411058378478423157156894869 1.0864649893111178580541168875424927 GT 1 -4825294.0744822099962362292464885347754451 0.6770804685832954153240128075982420 0.0283082446556517245304815834262822 1.0287166489475175920040257049836772 GT 1 -2967.4870200250859019532065844541803322 0.2840522739396673729777956763667924 0.0270302911244659009200711684045413 1.0274023289605538614562034317558886 GT 1 -16.3019036944758776902504967322614906 1.9392772560486086945113112449963392 0.0825683307223575345484025877778021 1.0861771767285569916388687592500764 GT 1 -9444804884339022.5020265077052129640707968748874142 0.9817628596989231720218812038110834 0.0232681204882237580052021990097249 1.0235430970370362632851923680788976 GT 1 -124263085401098728.6724612638021328483276812274422440 0.4122855376452625247495217068394943 0.0143680595401806086481184635253720 1.0144722796055994792500836922934014 GT 1 -37275067467332028413161756509987956.4680402807899354159269729825699944 0.9682364380211774441591894942460759 0.0210781967907983231220731943900937 1.0213035137896406077603449146260599 GT 1 -301421315476739462046146817897653765830773.8615353843951877463650199488364687 1.2886988283589223542621778406089239 0.0330346790276810885765966879809677 1.0335926466617631969603258777052973 GT 1 -2904937915879751456167.1972578749215532615752593193357641 0.8371857657377443385256189008347390 0.0897444761232318061242544818600864 1.0940299234179346667703502977103849 GT 1 -36423071206709302595213965.0121394787232826810873964825952361 0.1400464086543692899386438675136878 0.0605847323071120261409695051468477 1.0624976529208375365368395537052910 GT 1 -4347.9866353661525768084652226281093672 2.4335189094602063089588705183041034 0.0999029689520867532158737354492266 1.1107917755899988584767075679717138 LT 2 -7.8911306178720942046574392469497032 0.4518971973971591785193679672036147 0.0671194529197862109140128932453605 1.0694781173280163161134054785403892 GT 1 -1122115228164184814310726609765728.1506114399810360499622697738252113 0.2466435590358511484395154382568466 0.0679447858881413672907099237032968 1.0703632234420295626523243744385583 GT 1 -73863936167937779.7505451216532907115116928005621776 0.4516494218179717522390417748011267 0.0496066699452236366651432382225213 1.0508793484383911639471388138947073 GT 1 -3.4847433627774860556761889340955943 1.5061270414129237266334604998579347 0.0546640071989837185553547789044245 1.0562148667430007666511102207932261 GT 1 -18092328621317848.7168233636229986364747781631015817 4.1851344948428064742398314592325350 0.0271843248882238514737894341364913 1.0275606545039023960542536902626564 LT 1 -2288628606036.7575571700873564418071600927581889 0.8665994383525595552679025925359318 0.0475132368093456886583330904214882 1.0486790689905428940578133320269366 GT 1 -3519076573837480428897.2320124147385440412356164402213841 0.7853828845564089607887557558931239 0.0923046005674480113491350639412111 1.0968464198412121629517706003925653 GT 1 -81870699350888919323665853.2822359265639537592138006639971004 0.6026972272425873493368234753149225 0.0420268268059713997173212180332528 1.0429355043323547782701302025858954 GT 1 -3817798560668774850173690316.4616825929526377032612629255088649 0.1756063814403157130114626920514495 0.0763041593472937708344037600820623 1.0793724383138080326212040813432453 GT 1 -283281961292905362.6914270831724409311796932085752967 0.3138652093567635488952759680513939 0.0712583282558658505267974997063853 1.0739246501568507717101920581381240 GT 1 -150495971851218167462578628071.9522899891117361996929330495165759 0.2292462919943832453986363725952310 0.0269166511119529198176237825017364 1.0272855387094465791894535825450943 GT 1 -12076482.4292937651440000803051637695222447 1.0368468472843675493986011141826284 0.0866983883562347236876757145993746 1.0906891006481922964648248248806605 GT 1 -1380925250.1350223754738544785323458499824130 0.6163833629067965411525468467150718 0.0572350509031142649637101156070511 1.0589382860647113570776084078442578 GT 1 -1831627454081.4023212122374302663059035572812809 0.1094679577136910609557869894096697 0.0005676960381597545825018708419290 1.0005678572385670678446790558721745 GT 1 -142311008878826.8393974292667503297900329043065459 0.4305382589280531090092562538989759 0.0522352832868440102547328437205102 1.0536489966522755653761011627988366 GT 1 -257567454532660618.1711677291091411914571450670774603 1.6625074845227593974174205527629786 0.0583542791568079155979783800673942 1.0601261676694548445546199351342520 GT 1 -1500418620141324508534542212807.2375295855620224465535403645372181 0.4680841837600831019404435923354723 0.0397860924643929353403726617982370 1.0405991989914315535103079232396051 GT 1 -1008610789479343482702298789109624.4932636448672437310648933919107217 1.8246975317944374198371995812562756 0.0739771899598144126213814310235123 1.0768564117665712841637641394551862 GT 1 -1186968510982509285069008737506.3906574800150475178204711199403377 2.0952927882006494928787746959036471 0.0695481000020096652115824438453305 1.0720848968764684303006994714351594 GT 1 -5566721600743696.6850292379947242100311196595025168 4.4330902244198811620776453958690790 0.0230409635860813841479959080331843 1.0233105557467898713084554028026018 LT 1 -19.1495956251216909763519135141379941 0.4013646805008337346695035512992933 0.0448427913404256844493579078862934 1.0458793356517391725537574361888419 GT 1 -75545758320699387105197839975544554970.7913420853590080932212463114033225 1.1716547817022861134196745947052790 0.0682648790679942818896942426079129 1.0707067096990204870742290862171198 GT 1 -1680.8475453549255032515787305341413171 0.9592608456991801938423091457705868 0.0131433875737636066210617453123148 1.0132305262661537353913329515185010 GT 1 -318874514177723472832.1349660175792256708253573971520287 0.1277119405324349171200952510764766 0.0945523131043708055820553566984247 1.0993257759442145030833258531721498 GT 1 -747145790414420713.3242921519389966469361516822315545 0.4113370660268802787591522906222641 0.0430055600024271996222621291021266 1.0439576973709576927017032239737865 GT 1 -310525.8313850237494419036405525356260938 0.0887561068217257303411802437167827 0.0971834125123209300593775460345980 1.1022358608273066818789025177874377 GT 1 -458654074578306965.8180692122752484849245581738009499 1.6640069785844570873751574651646481 0.0305736118235568528039304672805638 1.0310507347979178679658089249257729 GT 1 -57057414077905.4788820749083436775551231294038194 0.5850267864225801360014016881771232 0.0798001167178026314854566091037557 1.0831643681003798206468401570222632 GT 1 -9864628588767305295756132.7267648871397967935508058516696041 1.7177379258320296864747954452676781 0.0960211392706801087521677573459686 1.1009493030123564505914566443159645 GT 1 -118220377942908933809750234257.7498574734497424829955277493146565 2.9787037323697021028765227902194625 0.0003090998304641801370498234587921 1.0003091476116631372885071756178467 GT 1 -18824455689373231370812639560.8503722905877256393378594093245703 0.8288162884580983930302477222055250 0.0559108146672560478860141123966817 1.0575346413111352362169206796950752 GT 1 -320297069917743744.3528733140056397678800279440159062 0.0306071979554720310009977990266853 0.0932610937832724316033572983719318 1.0979007355598337162556579217599920 GT 1 -6090.4591316556164253998960911574932342 0.6131750363561761197692495848106154 0.0219337572135522134677714315789659 1.0221778783306114135425414465165339 GT 1 -12411.8554505499077509068936555824550676 0.4356340587294734557422191349300453 0.0872545987604756754365767062100214 1.0912982968162191421539295784240267 GT 1 -19738225513854043142985.9557066995091613470459812528545295 1.8353447530422671436484776125388243 0.0494004531399734301847236779926976 1.0506623914907209813868775864259763 GT 1 -2106889008426886349976181145379527282.6358162725900132157131618015358155 0.3688305001120592156061604983875717 0.0907952033500707713391254586022200 1.0951849113358249416863886266355186 GT 1 -574189995985524866783372359602172.2781593442508621635860102222203426 0.6244423514040528477450708471877453 0.0233831000959500049155214007742714 1.0236608226670626920439478223082338 GT 1 -14.3247755018899588843518076612432303 0.4842855870281656079675957620825417 0.0564427540117193322495885320165078 1.0580982419406998574991934258723241 GT 1 -13663036996514215802583.1526914959757776293726940167084873 2.0056720534894781717556155122813294 0.0552453500766767502753873576448177 1.0568300149087915100114037058207620 GT 1 -103106279.5780188186601018920868357310105457 0.2540675228867440188112323622932218 0.0225755622622963722295213261281755 1.0228342916576410529530252018136399 GT 1 -36429463428724.5264924402554754121376321599753659 0.7250890534785724177827223286096722 0.0369387051239672481988142419377636 1.0376382192863910940731824507411616 GT 1 -60.4168293098011990423771535103462026 0.0830550293010560810897412649737995 0.0553090900049648874555619912886049 1.0568974843608513732151822564396350 GT 1 -153156046.5637186244867041862986076963406472 0.2164065655851110014874216738050016 0.0302580926147905256756086628559711 1.0307253177495133095428506817296284 GT 1 -230135649314075373174952048752679242.4209782333034116193413221730421871 0.6420198419626244876174566089871452 0.0851195327364568615845158402336863 1.0889618591107995766412064773608707 GT 1 -174595257118725181497090374598438934233.2660115060820151733487239795510855 0.6882174361246769279307076140518842 0.0927684527105523100255510586041004 1.0973575722642246276174586188446982 GT 1 -9529773353.7766623678572121074382088303093553 1.5268493168063113543384142212912116 0.0021054239085318516059123062108889 1.0021076434293511691689042796973345 GT 1 -744520458.4611054391138699850249648263537727 1.8912464135210958831596196219018722 0.0437737945333825800390295130466057 1.0447607773231475124739422391760787 GT 1 -750959838435193355943562490.5661536383805482042247210077642058 0.3496043717393043903963704318344725 0.0748974030264602715194891929686384 1.0778506319733274635805032652202283 GT 1 -95.7882173948059023780775180628271050 1.2549546580598732789950082811102628 0.0553113923747366276774489300976502 1.0568999215310972338566533040266353 GT 1 -174964895658323.4454293088954276981954112287101198 1.3834540739370247275886078488987522 0.0093543052194373337895874410894348 1.0093983315044768054756880539852130 GT 1 -1645439660800086824.9533186140979307206710826838547719 0.9267595589634255332608449560294865 0.0859175512063254571092936875258955 1.0898345050387231119260557950947918 GT 1 -77816546562.2555286084555527791036771847586921 1.0228328291967714079492787221911566 0.0343182348962338674445204953970551 1.0349209347558703200044191870217378 GT 1 -659645879873219914409614529.4125627135544769243727717146666081 0.4281625274639240708058831804519997 0.0465951415791379577571613802178031 1.0477156403350921654137747165640570 GT 1 -96875936864750679.1668296850063662471118084717725295 0.5528013674599932382037796254412324 0.0070984782396111044347431338182677 1.0071237923016149785237983171558146 GT 1 -103695817230887559777609233309562889.7550073947879092657570380176235981 0.6838200788958293802875674032021433 0.0783203178501087617852026946297344 1.0815575321119035967358582302938114 GT 1 -90419654741385877781311693338084.3642921800142423180845420944228560 0.7265859361328428623925451192478185 0.0735923297995941626493374265669378 1.0764408926203870366142867338711446 GT 1 -1322809264071.4027779228450301791784171365070970 0.0812680222264933309366982557931666 0.0919815637080276804588977635040527 1.0964905963006598621010451899415022 GT 1 -6128456.5794003305003325443735801203264502 0.3267543213574838552649803246136096 0.0856567182672126018780484639655113 1.0895491962766252458199253373171817 GT 1 -3376632301405062359038.5588287208319629509542663391729697 0.8310092666094727026783566314363704 0.0870507869860410073558440777932757 1.0910750264251141456055420285922233 GT 1 -25294800066594680106881830616115433.8960753848927161390876702234398646 0.4892961955339328076835069998569100 0.0754633939882941177505762060163288 1.0784626334691717936409434248478051 GT 1 -600391660770537599494513.5528698239600344418281512429202893 2.8026851177422682450927753988793411 0.0340510303477766434360988231003096 1.0346442726119586979315584377078323 GT 1 -743876873441499295676039533619.4522222698116986787109735676395387 0.1612963647803032971238113218598019 0.0707039555728606084685198304148707 1.0733279209358767754470535175941993 GT 1 -12269703602352688777564211249.5083848762276292028508507764734708 4.7571593190623185868468005556490520 0.0752586080247395019658357220836963 1.0782411568013969852358853851924238 LT 1 -6613854814093653083223004416833988233.4555348070175244150230385098296724 0.2705374156712461812484843966688263 0.0750561942783985466407100588977165 1.0780222938863442230273110777891883 GT 1 -1213100311758453854436872579331.7380495115672505796834702286506683 0.5235397831416896740763846171481564 0.0984748548467140440622717186471871 1.1036673441561683268657909048551187 GT 1 -203213250764709112150956.2662326414960425011659062826945301 1.8131580420858295001906651253987297 0.0671451318571245736308867042653186 1.0695056442079055674144137211395544 GT 1 -4133198716.5989128875725343449260034751700973 0.5695393425624295374240578063513927 0.0701146818413986948020029384994132 1.0726940142465637393106239992677119 GT 1 -595224243690819428168571.9006518973259019605668503512536221 0.6969926345156450224651266393208832 0.0723895996715693593367494045022239 1.0751434615803568394627715476063465 GT 1 -1.8683600816114894731988642649038973 1.2639364013795820551958058389439452 0.0681777162345939022415583792139780 1.0706131651339384225645908447761366 GT 1 -200147581494181059533120784344795380.0294307978896348031438617381644458 3.6327098633699099999783822100842423 0.0032482221727195837224020129953680 1.0032535090982046987622069556297319 GT 1 -1351901024264541409.9218630955134245213279136442381196 0.6172105928453728757910557971046568 0.0765387635440493492752373826014874 1.0796264548248286083420448803316802 GT 1 -3812318356590847867770236.6975281059068415526615905561688029 0.1642364056779853603738919170172551 0.0697142906632577860240366884754635 1.0722635256749151314159128451788786 GT 1 -11084575130664457510800.5086091810709768750684172211702556 2.3372592528531189482742509174646226 0.0092855978778052017852162273701677 1.0093289777895543393588177629935371 GT 1 -4791296390575061372306692503628.7348840294380097331823316660555813 0.0967868911420748759101721036531761 0.0662108793685546008249991569160301 1.0685046471541576553028724150532834 GT 1 -150510934405040894336765736771815093746593.4937771474053654081362459932391671 0.8279153074855198167926898562307888 0.0670326418008503156479545712792368 1.0693850645998138664254555309626243 GT 1 -35.9881246925173621275819489958387426 0.0686964936931919741129745792365275 0.0432888861228563335470632474394094 1.0442537994770790486671909151429663 GT 1 -774831793332.7785821132040198159476272602164704 0.4193007438060705105885991849791146 0.0929221298671158028307280251637232 1.0975269779405169892104995402394059 GT 1 -14077724877011395614559929451501.8242291395461637028923568353044871 2.1014164072026459215332804014727619 0.0970388182637587683655817482555704 1.1020757145996417609279012377716185 GT 1 -9198175297114065966962772273925701.1861424326844674845172542211011025 0.9003874974288598274840316549862593 0.0078926019141082629159666702432973 1.0079239133579221073744277936024979 GT 1 -32957333431327887448836.2137644030201087413097820353579368 3.7974655305506043633314604254983741 0.0565026624435740326414881453382639 1.0581617360572953543128712642387217 LT 1 -270737603330117582.4808767531798058400470002811171990 2.1194403503025586648877232554163872 0.0008731767534364549554687750948823 1.0008735581943175304461483500236079 GT 1 -50078919616848.4937732752928492901092656446797527 0.7845893614631847079530438711806693 0.0955769666548871045017167476478575 1.1004580708076343409701322383601541 GT 1 -130983438714531921328316395695646004237.6136491033767294828884573177302023 3.0182534429805576613406007520588982 0.0981313681686072536026503166615285 1.1032864105113436958131403907948632 LT 1 -280.5194017589040981726928097444721452 1.6117041644253713128057358244137262 0.0799184095858341692865065922385899 1.0832929276385648796424316208136862 GT 1 -161280.5252805881006183896727437563411220 1.0838080998522525727089527088782892 0.0514968489669214582032154663288291 1.0528701674902052204420374564675956 GT 1 -28700532854740072893933821216639979078808.7414275591931460289488833668616788 0.1965354050074052857049585004285359 0.0832103902156383449926569792244418 1.0868772662181231402612346662158837 GT 1 -11.7366057843188270529585281772646367 1.2951095211158544752002219659615067 0.0353965886110519372205925007271967 1.0360382347694967920958973338385481 GT 1 -185254712.2775065078838514803810134305643532 0.2256357155256987155530482080568984 0.0533001294753774479260757750700092 1.0547731626122501118924785459713757 GT 1 -907288024110914147668159778740462793635.4816228184004487339932902699854857 0.4004358262027656589573290293635647 0.0673744360996341899602267749975232 1.0697514835528011160405225838515270 GT 1 -46557825439.1389683384484484185156587655035485 0.9583570126385753915840084027468466 0.0192535656302469092489990861166830 1.0194413295149360360508863580670534 GT 1 -3743116747270940.4766330023248390256788849703691458 0.9064403191791657613433456176346252 0.0467954211645535686912757322763332 1.0479257301230043439289247001792953 GT 1 -1177119142979335542283.8451909300738688284789054976281055 0.2693244651096807213290850946675790 0.0431200900869541873868800727145828 1.0440773813874857890089515426562507 GT 1 -8063.6992607122611615292798960387152686 0.1175607688816725282855157774293187 0.0146763899321405455513395042951450 1.0147851536269264417046170070931793 GT 1 -1.7529210032004716381271126495687505 1.5552444544229719794483567723865289 0.0142674038797035376607210050700148 1.0143701618504133618172548851975986 GT 1 -2111348085113403957434.5751554070712100044744390044479579 3.2109535832889365819567053096672715 0.0962298825728488829332707436418265 1.1011802458098563763530860783293860 LT 1 -272649104383012849.3665287779027481084046214148096488 0.2696590569002958641523213895484791 0.0804070015637992901456066332468228 1.0838240998278358286557759319163690 GT 1 -1011671214362605399323.9949963958133246200121989319818672 1.2829384960138016459580805977314750 0.0973751371183440660556883985536215 1.1024482461214457971074019541634626 GT 1 -465596737195188776876717643770464432195.7317308636728373388336346473645173 0.3562313421084967693627468470116213 0.0319152644157360539144449889799273 1.0324356587760754398652270517850151 GT 1 -97267228108330.7117220552987741132617460282645847 1.0421166516642724746294132379599596 0.0621292140852636238407946358591851 1.0641430943533292135265423491456724 GT 1 -374741179830408236.0571771989874634985207712097125441 0.6545071624556258801183342766867424 0.0564743971836702202495077212797541 1.0581317785413572143467596475284401 GT 1 -7550415476693.6866657255378456154348335981024736 0.1155273189295685205226634427367931 0.0321504421581524348332429643799296 1.0326786192364297532402832380922000 GT 1 -3005984632283877340815362566451218073.9877265335086081863897537329411357 3.2351913251699568298939573152072450 0.0805693378979719929645137599528646 1.0840006460442633442571529495889255 LT 1 -82342.4757231656011059226479536621705302 0.5427706704296956712793269409319511 0.0473217075594830732735846265976293 1.0484780058333726097855611786640530 GT 1 -150729.6184287028241948047949522596658236 2.3580213644927397309069171662900396 0.0348260109562887952549469199439516 1.0354468943679955461082723564129972 GT 1 -175809353395278959359706152076482381222.5254852594154486864839466193847924 0.2665651086448706579547591407468197 0.0831208070045049840630890694736566 1.0867795569577934409034127391586160 GT 1 -112.5343630963789056307826298720840877 0.0597098415421988380929649022368282 0.0689291513677144952065517547335207 1.0714199051028684785324986542203188 GT 1 -12.7992112175487355289782856802825545 2.1525790188408895374256374442547183 0.0161707067558819604744264900189655 1.0163028794551986892651375036543069 GT 1 -6432632581458674.9965557705102125953774698681584233 0.3213154990841433236879418985659587 0.0475558990150026715390481095047960 1.0487238603333327305323965970405110 GT 1 -32707350389255597570769435095.9184593107893073677394857223831309 1.7339566539686781312089339370486073 0.0280906271605947782098027991420219 1.0284927166881556256632588278768181 GT 1 -9178571287195445228744180095058024.2300842262426457528711792957380726 0.5846574201402314992315337385711987 0.0558593925229225219266048107355782 1.0574801753297784668313592207629263 GT 1 -38715003.2845114203528814809429129681213998 0.5602730900402750522259714319732349 0.0805478078918530909244725405067475 1.0839772296465623245685352256384512 GT 1 -383469296646207137362377401639719441046.0657562479626213895507319131419546 0.6835501954008547451317590623686941 0.0845667772134960901218937934647430 1.0883578582307644051794525581979184 GT 1 -47802497171.0034222885823146564322959167101226 0.2182486889019681701402597547676549 0.0817815037620165994556591675546754 1.0853199033511891753303199890050003 GT 1 -518859325499968.0546078217472923070520839872054156 0.0126483385736333277656297002437263 0.0653087054147664797834668750076736 1.0675389704293178026319880798048520 GT 1 -17549528031256566938886497558.4367010257005914468076495175076876 0.2894768437350236624762316831282433 0.0883658640646116099834755964977272 1.0925165361342210699823544049842487 GT 1 -5703376961380665316008271841857837303017507.8923594597640495221712926798488791 1.1154214898625764828989161309579469 0.0621501618670054184287198405097706 1.0641654300695058166066793008906655 GT 1 -47961982885.0952641152189692611497836438506455 0.0947981164136484258401797890171140 0.0166372158906650128734877160773830 1.0167771688231751861298787888351757 GT 1 -276906773188533340708482407218614172.8642939228231819912279334601009705 0.3550204745227838022251905957679403 0.0664257176806989844513977189646008 1.0687347451765916277086724850207102 GT 1 -28347639562071253766810735241925474119.3508201251633406839039191802160176 2.1913219791093340060414257789204243 0.0424735869584824018089410922477900 1.0434019728858562578283493781568041 GT 1 -41611655.8387210419993982353487514560387329 1.4610893570471412141781207967525605 0.0548298851982463729173923205351622 1.0563903520260382060243218038957873 GT 1 -4555505553040338973354.6152050015795392259130893123111306 4.6020042421919446924070949985510468 0.0766539648201581529313999043436126 1.0797512120510184150917480905190850 LT 1 -567.1115969148661045119607119578600957 2.5157713037583264495302439421945499 0.0116850193794419614743849139936589 1.0117538257460867773437210067125492 GT 1 -6639970806005375367.3659358948985685082706636606402347 2.2772778744507981792125951516368134 0.0672501177323475373291060888770866 1.0696181931015666550868878740501614 GT 1 -4701241697398387691560577047404737.1267785659237279408475128750040027 0.6737990234629281551377870862067071 0.0851268327825763570295239772155883 1.0889698383774964343624717188053722 GT 1 -95001795155991657587488.8561097695820351518141543451725119 2.7079052957889645554079828641660835 0.0363376285684548164425560751746811 1.0370142828231367546685857109414135 GT 1 -115050999811721015.7931927384253044645199116292522902 0.0036563612920355275267899722257080 0.0312848507003372236635880980293569 1.0317846738781702629628802142478070 GT 1 -2694550443369837190623173579100424935.5257639652513591036841135522015419 0.0599339994647571761701716766721902 0.0432209739035585640815103439104220 1.0441828169118621495132233392601901 GT 1 -9681924763490803386881.7484923851438238077969451139510623 0.0150713151290052970976982647647044 0.0288876926684000381873212822500854 1.0293131558635385789579360626830521 GT 1 -45717.5742563380020673531166126234942280 0.9275482390951356098311432556539908 0.0683909392536880591133644210181386 1.0708420150141905008522942627093483 GT 1 -431572826342382296.1531493568219071286503568859125852 0.4433259815518823576509373506134015 0.0475678761265352960269656042051747 1.0487364355457024184970408488293707 GT 1 -23989257401.7082832644179707252386464224722023 1.3841056620510640984675531039728754 0.0922325649484869824601537331938149 1.0967670619853193923953195775243662 GT 1 -1068480491125.0654911925586443098958243746811033 0.4649790936763521525110148826334801 0.0686775983065388572109830013690784 1.0711497655255677073690744897510745 GT 1 -62419622073741326.5829765908792317220053746977728157 0.5846389837400543859054921788682694 0.0930370268257574731622990668632388 1.0976536531024563940817408955516405 GT 1 -3839298531795.9717954413120784210962156889623961 0.0992686390071495861052249351582353 0.0949625522489890365949288845033804 1.0997789574078881252548377818823414 GT 1 -338416736500122591309915921022808682995.7533483419159585377972254858360142 0.8508043679368584463427696920251726 0.0683777410309946344224485250412424 1.0708278479888147552473628941787682 GT 1 -3240.4294116429094899423431086545892156 0.4088645220954123012497552922913874 0.0695076337031857436016934515738089 1.0720414068057949336336135359762985 GT 1 -3003906736016497131893254683371363996397651.6280830619608340621037138979306293 2.6781882748143531411475838125287066 0.0336121169708509926655435125409861 1.0341899901364525177148575277071319 GT 1 -15092082669112632.4266993202135188028406956830476460 0.6556172249727679463283254742714026 0.0786853736003714577467150504462375 1.0819536871660386131206046509841570 GT 1 -3810108459828.7401311462178162605571773611087820 0.2033695331047512651371809319254038 0.0814516176529518158089525146720919 1.0849607003228049451487005016210342 GT 1 -18252863932222575816.5564146267498305076252427596830177 0.1259920506746940647465936621718127 0.0957927678812648934053876126894766 1.1006967057918239262677284260686027 GT 1 -2359658528288229906144453550.0492497314841876261888405233509750 0.2692514926163904872591794343113962 0.0073525389741366741805329435738909 1.0073797021160941841950131363891681 GT 1 -4.3143660986590083151041229957813447 0.0712809984897197418306522035386053 0.0405929692578733628101042289630749 1.0414398616711412179802174072814476 GT 1 -523614593157990835922885721091617966284629.8772592032895131983298644977077456 0.5380756188812061451682155368977851 0.0840131616686842494154414485785764 1.0877532830451713643069276509784396 GT 1 -496853114673326161229834896547591949464107.1634558988765524126827751151907893 0.5015589305044550342719111902225182 0.0787262732133089777523483810520891 1.0819980808179072042708008398340169 GT 1 -410204852995483.8106589512862604296005104691003833 1.7299308801434116149974403831769947 0.0506583281493409982985445947346522 1.0519865116064017886233986074492288 GT 1 -4983584937167273332.4017494014595452013558280600268448 1.5815132561318638519290923431869365 0.0233332679721063073438046883221165 1.0236097987163779457308057358623352 GT 1 -610864523015617601329637917394853905279406.6392158791772416014001532271209663 1.2873940103769521425855655589506615 0.0730485777479337010758701223488644 1.0758541179694560145458750101106382 GT 1 -217810647280027171931358215553193.2051913490856052777528770815267170 0.8853479418975133327354413972885625 0.0354440536837056964404050197254076 1.0360874428066387286356788179134351 GT 1 -5389308026366332885880253211740278.0521918591256935689743829874305509 0.5456342344299552392779286536487995 0.0243462316688637821707112060341561 1.0246475010684968815299484193519613 GT 1 -43862318859851215227227.3972399481963042585392175776758927 0.6188514767629147787340676382866510 0.0229267533335684230524539924058803 1.0231936587501210391024489691008075 GT 1 -1105.7929991759706952360184611948577799 1.1515952657300013069780300151608478 0.0251794899469403048649313775123001 1.0255019171846207537593361688506170 GT 1 -103671443.1425899882415421342076161967069510 0.6576863077436974615978746653915519 0.0287045000404989015566708901512540 1.0291245315924080264961385411442561 GT 1 -2230416612019177234697684789208310.4449164844573006182476379651212516 0.6550209072738262936068384023121749 0.0260012711160312924492849975325810 1.0263452803877135806725842136654253 GT 1 -801285043000881927614722137.4882461256840847432303097566552436 0.8678235649216976822101748778579416 0.0563355573227847855441715925646389 1.0579846392943402404425132351542756 GT 1 -14130608663433578196551198387404645.8482591159100186762471515314061582 1.1938438927544949800805020232984232 0.0592303202120456549010065040087089 1.0610569304736566105654803700999031 GT 1 -522578643242745068038678.3067539569845076000193730378667442 0.1357910327253897445953201347341604 0.0566768683639029523956190492356866 1.0583463915914792436567931154070287 GT 1 -54790668383132446.2282601732541529411987033642376016 0.1395858922089899241729822294466988 0.0396629680645177290542414119686421 1.0404709811998453615170437057779716 GT 1 -23773584895968637.8577492772378231899721027710857345 0.6919435886668981149416979688011968 0.0246123165556800123981177221611368 1.0249202629703250535206617945659646 GT 1 -24582622833370568389556230562845.3130212912965822436439306140888967 0.7167415133490126894273178328528058 0.0610190346821129375511457434821056 1.0629600712062955768206986296832021 GT 1 -11111978912659782160991214442665160.9304940729581328772397733071643207 0.6228337639064122438626291184006655 0.0045349143027701810551285212352429 1.0045452282202707349132240820166760 GT 1 -44726663519149004774754333828381890.9687974874670550154394729436497453 1.5455471167279407744210387635744859 0.0346770972367829930283148724362044 1.0352926193516169644071792073054340 GT 1 -182855.6901800791395411044075782739370886 0.3187921199353684496277874299857027 0.0012689703220773254541828271169893 1.0012697761467003076993913521757221 GT 1 -2673554094949879483605759443.0858795110918258918296244583240235 1.4403456289359026803930024643702764 0.0961008593038762769080297717107005 1.1010374948407707378904219699135120 GT 1 -14.1971330016849691557539842442179884 1.5161874966917260453226942750520425 0.0444391309169760910686555871666511 1.0454568134239369575413704010690380 GT 1 -301756195520758455624799300425913748270.7363500337761377176859359177355128 0.1653635649704225104074365268309022 0.0892626012132229413902419777689413 1.0935006792728758602320665257320132 GT 1 -168363160750740545.9197674610960719156666501427071752 0.0374054404747228677799734758012111 0.0789655007457857198034266581767561 1.0822577849547501708680984777951761 GT 1 -3473259.3828797720139528047634103576769104 0.2608273512770925612701068087404681 0.0553346735436039415666061167811684 1.0569245661129815786525401137372869 GT 1 -449177705443767.9062018699009382428258553395045312 0.3343854774239850231000011694433387 0.0919998222610886263246867493162397 1.0965107046331631660408702364259470 GT 1 -40049176961358.2314626775941265392866972090356454 0.1580815641957807172410939192858245 0.0932733046398879432595337994837639 1.0979142024340937834431327786733341 GT 1 -19184118528.1582725383920510054003441758937418 2.0948439190745075187245550286986585 0.0231962537209874468342336609899023 1.0234695209360223489423938347151178 GT 1 -959028358809.5884207775600598251434266800508865 0.1906803401104752590765574171929969 0.0875321985620024431762031909445077 1.0916024802434045341312695856694489 GT 1 -52.4615887077154567663768860086479258 0.0865103176061628371525957258982068 0.0530632984498599235967572265343082 1.0545230290541589163139740720363206 GT 1 -17.7369042922393826915760341654573554 0.6941579154322661629884967471630587 0.0774066401881188977188289824738975 1.0805667051400281946765476643908535 GT 1 -54175429980674563527015443891311815.2276480433032561950407557889756659 0.7299634573484366438344480720822999 0.0538009168597996355997205842087380 1.0553022847771035671453774208406094 GT 1 -287317045416471741507938105475056811245358.0967373864781280313481525535960607 0.0908197880227472743640375906429662 0.0926671547544848512749124749070249 1.0972459223755908341016237296684370 GT 1 -3547814258792950137893486157525612674.0143619987901636052898845558548142 2.1235694058717108234244416619591934 0.0861157853949618160241426926019770 1.0900513954157553567127812029551387 GT 1 -445.9426953432920813495341656914404233 0.0405922402071255395249732539319382 0.0055593607465878844104021326486450 1.0055748715058590438073898702788927 GT 1 -1783169069025725234351357057867.1526953518811591476539860100000017 0.3742589979644823008092205183492356 0.0168503687876883598024237782313840 1.0169939514849040095655297093964410 GT 1 -2543836730510946350747653955050297.7214678570599299806941303323150325 2.2432310168700194831746558913285252 0.0552540366402357563683914437864800 1.0568392094689816483115075020214814 GT 1 -5535399.0682800482569074088979953442750269 0.5757861491538009782578740472788880 0.0495156593076118302039807884467132 1.0507835920001080254996397687040474 GT 1 -3118746001561539976063561119.8024810956075815061826653403528798 0.6140807148685866070336989464727256 0.0106742690250433506698934650684568 1.0107316477170049832503712701470786 GT 1 -489.6662970021449145113058429437667159 0.0891234183385197916869252746805256 0.0235622895568890344632718840170362 1.0238443192887060253681704432023657 GT 1 -622948442316629441138166587349005711.7178316960160058395116064161566748 2.0223777765951128861332675809943364 0.0684865861560010228797664277488575 1.0709446887822346772878518524842768 GT 1 -4328527541405071044.1177214413348018741541458270721699 0.1470196303919854578546340777088651 0.0176379056400455807476473047837068 1.0177953070649856850595624162523505 GT 1 -8590907624216953.3546797544152856012941025426068767 0.4507864986561439370677009621554754 0.0988067370917005690273983504488051 1.1040355461418493888461711428778308 GT 1 -11434.0949787254498046739900659936958965 0.1322236935151062232366854601242710 0.0845974811551733365382542419244653 1.0883913991334046024271201724660333 GT 1 -241518779983797875115622354.7675999329866986844728895240733959 0.0817921070150626716610729954646940 0.0855643269929465531931230849807173 1.0894481547875976154240912172164885 GT 1 -80077724763905772442753897526384.6003646752237079587028735818496465 0.6849421213496343115155223181442957 0.0933579533169855100971092022151649 1.0980075631226249838670727626572197 GT 1 -2726773409529607093559.3021688126661254388173684954757137 0.7784293203493846921306253732737262 0.0670197769024242024754610875562561 1.0693712754681627225516504840364641 GT 1 -109318691397936211031745577929108159405193.0771303900363043322876764668977867 0.0639173670939153122094486364400375 0.0294615096233677153700801410587415 1.0299042168023545137676812318510821 GT 1 -24888815371625.3677672105020291451684034314965194 0.8794199727243275438449087352182522 0.0408675168556185060124020592770439 1.0417260664614330410787574431203594 GT 1 -207664.0784131376194704501718785293996512 1.2247005636004377348211899685675416 0.0382833760188224019084096949259241 1.0390354413767321646303114558024501 GT 1 -6204524028689176104056100.4837128974270035155530268429407743 0.1332056269078962187710690821005780 0.0112159838014169189930301604723565 1.0112793572570745709635801436490469 GT 1 -182388430651487797452090711.7628316430771903148811351078520893 1.9927754374420230813209249468890775 0.0839166120793903546583004192852869 1.0876478836035999586466358658932846 GT 1 -2831885827987735.4913972470885884535774112604137921 2.5753424966218203060706136949444019 0.0802850587604604015070991713386503 1.0871936373033498996621178975440364 LT 2 -143219480883631109758640436909339272433.8177188786249189910393902632434001 0.0759272969820577591291511409718568 0.0257785146960156098614796470879225 1.0261166035478325723149706228575822 GT 1 -497746527883452139814085899157583706819785.4803185087403020815863017822335703 0.7691082201327687425889004572466454 0.0400259042510370708654638960757492 1.0408489784791491558689536325396977 GT 1 -90004119764414.0571357965456814075364156779989326 1.3712189590120751223690593294207074 0.0411031976682424328315774339358766 1.0419718195535205523289772982330281 GT 1 -3066617122640701983740487199806034.1311521016543263124988746751253101 1.0613162121213786609232652421865679 0.0726484593776091129481909692348799 1.0754225613311446380460817795617804 GT 1 -179133523422.8310892590796129060726921457275365 0.4210461633158802255994585812996288 0.0203694243189038605970416412437385 1.0205797419768727901828452131739124 GT 1 -654717238305.1073541523903371729520936853159906 0.1334945952762234506584527495076650 0.0040921234718982697781076792342134 1.0041005191210023390038193913909029 GT 1 -298.4056923065936306537341991213687096 0.0991920709366511163904639251954932 0.0276357669629430168210515418785199 1.0280248193669396849918440255322950 GT 1 -101843172334574656899181519.0161558642834941379946716970689553 1.0353006673524225706507200251517283 0.0243797437577689653065155274187489 1.0246818500000015739672872480179361 GT 1 -62314080.7503825411353672957433757869334141 1.8010628330200133961307505001835722 0.0309257788508181958192509108582040 1.0314140744114743000199146759894251 GT 1 -809425930619007750977943303194.1178351217066972039829523720262167 1.2374489529100148249750857583982341 0.0807815935486054652730063492541233 1.0842315282231484667235000945079975 GT 1 -150289160506364929.7895652277724204967703029088900215 0.1496560730535523761699317844971398 0.0845238833316461195287261492177600 1.0883110029540628406071794764182504 GT 1 -1071860802442293295453783.5310601576191777141147357299286787 0.5284186704484301241213417151649047 0.0294279947241408392997304961415587 1.0298696851264862210407921580582729 GT 1 -153704122193008599200177791211.0674141560084168438508703594659187 1.1497324724798320135723720770594360 0.0706127897930148955458154979967770 1.0732298237698410633900901990544918 GT 1 -59050505878714116558594290760742.8896850280789465308407153819820590 0.5296399157672808369348538479108377 0.0987752034226437593758403620250308 1.1040005557367166023858286703872894 GT 1 -13431706650253930249176082.4713504253329607081441020623268509 0.9185196548010772908969002860107850 0.0875456473572042205454173321295020 1.0916172192778032862748482929865682 GT 1 -1345052914387629973157609898233403562.7774968392080147110784245110890502 0.1769069573010612274141723554881606 0.0926202268931817360125676128480548 1.0971942030445639920242357626620581 GT 1 -2664944171456085270326.2834329296948132187738817865300072 1.1052259451911285383798777692595760 0.0725334159871156850478842313203854 1.0752985131680250620121622002140884 GT 1 -246307615396305871175781361165393.3308116599310307713380172787525101 0.1793573262764506341150154578024454 0.0175239919535104478000371678843368 1.0176793548279812756761373094801780 GT 1 -9876711986682.5579759660628087053715451024150920 2.9799902728842617026623101468901498 0.0075687333501480204363118453985417 1.0075975215646147651376902782124441 GT 1 -1209728245585927163343875534.0444568769534227522648999895115281 0.6334754846829380267077154631547231 0.0337579574750925623222020909200048 1.0343409145349522367316293781098434 GT 1 -9.9086492066900748677336861966790625 0.0359986857731351787600632565585766 0.0218539749271531816388982026938702 1.0220963102024955690238666587549619 GT 1 -17994379115594933877135194479014513380492463.0207183683414562330377632215762773 0.6176202816343181277139583452623090 0.0024178448482893608194446911759788 1.0024207725552574451853582457771329 GT 1 -600228223996358814.8001977705437275624669975108917094 0.0377483598813483102110829090821148 0.0949409243161726859885055070981082 1.0997550604139572837101516406015982 GT 1 -81087865276.4615367476518043321264997085974291 0.1361464786342888242498194716725432 0.0357496269945113148119963963916787 1.0364042950590406984523774758776417 GT 1 -37744010409960413628664145102761.9499121874527925513459058168665957 2.8681000247508360834446878977794477 0.0486895173850685067898243801428001 1.0499147895779075474720234249448046 GT 1 -68339676746419916142964797121347976.3166372263723031920605256832705356 0.1315688010819551735175771076448810 0.0748249381611001012238482199501727 1.0777723033343233800305762145026236 GT 1 -139989712806.3521333086218324982729585396617541 0.9492756189986893772566845050454419 0.0364692846769456101444632983330707 1.0371509127328229845698970036351311 GT 1 -4260752091419238676945532465686390667281652.4133699934593451200186118447684910 0.1150361712417314522184378520619843 0.0103537829334224011950547484489744 1.0104077562189573736769471746517217 GT 1 -71911314598357146803116290.0151207729264764264601358550746756 1.8899973343313937530637888024475457 0.0610891436740039773973957854907009 1.0630347389705571415628492125888211 GT 1 -342213508587493951045457678954449.9130914693931701633747128173025815 0.2278469832464649906965475173735622 0.0384293675969908139674939802066329 1.0391872560138480742510886155997384 GT 1 -1935716657257274864930817338096016328097918.6428402813714033127058809394672178 0.6397033764201181824770195685604946 0.0566363807501020931766474745347730 1.0583034723164188117609020873995070 GT 1 -36446414209792.8268071747018083781538186913199635 0.1483110795738549336355858082478129 0.0864868173735337558313450956980557 1.0904574723689485724410990399115343 GT 1 -2882367506502326732622632787.2666499887389370415562014103725168 0.5665688296624495808089231260817679 0.0482116696473235094331836572407816 1.0494126109789498127200082089491451 GT 1 -1942328229994963.9872804186310756814098621804210453 0.6414791451791337159924165393695956 0.0304556078624388192911295742543596 1.0309290166550125764928014088386300 GT 1 -37588339142700088783939892373667512.8640625861218318134734920207921402 0.0527642310007815749533147349148339 0.0584345922064460740902868832306172 1.0602114613983050844337657608108487 GT 1 -48935401428.6571124792374347044784160345112484 0.2354099525860127517378051221761035 0.0119044075793401523586625033790359 1.0119758324523772494451007413245480 GT 1 -791382.6847686510805433807745690457609922 1.6214303714157024984805487492758528 0.0676804129315152633803716062115386 1.0700796184949655635602641141565836 GT 1 -526298147184992258057051.7550582166328033168492987281602836 1.3635816891159025186767918339831425 0.0819509452475684036726495419863894 1.0855044532398383825151035242159293 GT 1 -202667.5658831775726805694815791920935941 1.3343974899358876525117132796960331 0.0610347743876440171232148515042267 1.0629768338862993648352920141635033 GT 1 -118608.8674847096808222241857785814957425 0.9184298045272847767094107916663098 0.0864048002196582308370187351748906 1.0903676942750813935381897414786702 GT 1 -162437476898318044.2635380787966903406224553656536699 1.1309849673753151387806270570560230 0.0663952725685484122213656862756560 1.0687021343642439306128845535896584 GT 1 -548.8138552045234356240771244520109760 0.4703528858043168475186473804461193 0.0189981833995296500523318980442913 1.0191809676341150740419171350479777 GT 1 -5.9650523378954531901366765939066726 0.3732055630936925337866309349731662 0.0829807656137318336991878481831635 1.0866268316062097201281278364054277 GT 1 -52.4373438680212550831902405632540654 0.1910088130098967502822258984202787 0.0915332996005698089390026994039774 1.0959970452029901717130439046597196 GT 1 -10898997969.0624995640876039116836912135213578 0.4767408861257317456908631036243947 0.0731873719819846729246148058035735 1.0760038611196590828727425254870073 GT 1 -4194961218323437.9348783104797212117516420289240562 0.0630843370221895449566458972608391 0.0898985084575660349246482909779391 1.0941991565226466885391702065870470 GT 1 -79592736178050653764.0677252550077059698799900084464984 0.3540098692481172574269052188545817 0.0475650223607651546081941277729724 1.0487334392571236748024157484031240 GT 1 -13217.9206782522493681103082663334600404 3.5634430380705043392760544844199404 0.0868156835684472274099494104694901 1.0908175387714439223289894375601912 LT 1 -210305957913600.5411157416629731798028594104152885 0.0017012111729378264151595433930257 0.0410704420542236558415769670729804 1.0419376604505898554187801515788264 GT 1 -29.1306244834991423595181619288370893 1.4405400070781322658009040762581466 0.0799543472116536710147925806277714 1.0833319875741827294976022878548872 GT 1 -18996967.2105449099988599184625325595529760 4.6904171267173355751322479434681113 0.0270070301805996173407522227806373 1.0273784220849266356799036459162556 LT 1 -403902877314693478707728365302301503.4677518751500503061391742494083762 0.0596176161220151146503101414533088 0.0271705076257960013019456532965228 1.0275464512332762971473919887723926 GT 1 -235540495673008107398295410748243794502.9308292387664674499612133684147749 0.0417728646848953267220353007352546 0.0095771539481353370609187638330267 1.0096233098179927286299126055042258 GT 1 -14598904779.0711967305755008427143123927725346 0.7534756962805600033345806543340321 0.0996182875752383930017171635370300 1.1049364806569741537982264046494581 GT 1 -56657570.1578745513238274148420882630266104 0.6547652971370470808331954860795475 0.0836179230656831994980632134483793 1.0873218867189863205624408592111210 GT 1 -1171232512.7983044559333998621931651226057584 1.3495534359203843122695698694943729 0.0972208376681617698206516272865030 1.1022773154617119082272695003849588 GT 1 -417181927412775694940527525887.7225362236784270472217307803848974 2.1667809125551898504970989502673494 0.0241151402035742311898590467689077 1.0244106710482872317891500289624997 GT 1 -4173582660697199688936044476330733470147.7157986000497098893338438647385734 2.2710729560721763448340898869022091 0.0432779172609772634827459355057408 1.0442423343662002489979633414405398 GT 1 -37390891532324924853389451636537542138.4037256731609528573102845228546096 6.5515555578279595709552807428123745 0.0461242468461531373247798352731081 1.0472218537997547843943323211611363 LT 1 -2491486512.4810083411397119646317228747554334 0.8845615426476541963065180490387812 0.0160859412906750150871201943503110 1.0162167244541664375563957292171331 GT 1 -47111119040279104806177479634909732.1257624658433521560443522457271899 0.8753104655170036668798874915141309 0.0130382634381358706525473033016381 1.0131240077146557967487264754543227 GT 1 -1955388268748000682096.5707488201495423808205363064746723 0.6140780307644091955820190938475188 0.0512922582707574236792631164175294 1.0526544922611227953412170146433247 GT 1 -153.8599948112580696898098166662497477 2.6971990605963832426466692965267357 0.0295024930371798791996016976328618 1.0299464451936614544053067775540729 GT 1 -795.6200667107717662691808548570661653 0.3404905249734484207803531954825055 0.0551408616299721930641343393379831 1.0567194225248256569450322717361687 GT 1 -12156.5010331440723283051374835734892601 0.1259964125190876434675114229734492 0.0727293584630177630552850437850371 1.0755098018335371709717896324694889 GT 1 -18081.6152862626226463804322334837436689 0.5125096981861374620127857002942752 0.0005488291615604686853333215078736 1.0005489798234123587626280424419619 GT 1 -82011120613805.3914392229751889792383677010983001 0.5262783170104322693231443719748349 0.0901632290369050310988649784463869 1.0944900681284519147900152748281999 GT 1 -1805405521044747486558605728418.7696760594223437487959070318277793 4.4023085496911092236288770072694259 0.0856333239714487390424471282057680 1.0895236107039477964636302910883023 LT 1 -48332750959199692061308718.0236334366718853974883720488875522 2.7966782437244453024150384882656125 0.0413105701616535862083316405406225 1.0421881044754089053831509636659776 GT 1 -774040850315.4948985759580333362288154348430645 0.2938775699172497656855217866530098 0.0272273210756729517634245140747831 1.0276048531519534132508962258021241 GT 1 -222945003948141169135.6261488026616174457044916925523730 0.4347534664132001505505323495767773 0.0795054688880663691311028589204324 1.0828442195412829978075042011684157 GT 1 -16937142491531545136610424145034472849992278.0646664053795435868319720499263102 0.9788964149335271284959122751279214 0.0520623581102018189046404985333120 1.0534665574878813544760205136361559 GT 1 -8404397602126371319205.3225540321126595358992073321250298 0.6909439652872201674997349556047989 0.0470215956378781568766789962316126 1.0481630362750156161462711713177942 GT 1 -101420803913804136857852036732.9414163167900171649162602547150717 0.9193280424968356830991908080898562 0.0226526454618385086112965170569549 1.0229131583569526343909322718719336 GT 1 -218912199522303333025099829909.3502892181547688529268267388347867 0.9204349421407599805520962315871747 0.0875948708443516210068311428330145 1.0916711669791472030644716352293858 GT 1 -3348867284461947283281.0870358948140087165197088444639749 2.8705550654307195953698451155649450 0.0971315907529082981878921119227109 1.1021784623779419598980319013985634 LT 1 -14252076.6369013595976048768517411841191238 1.3012542259439595269065353758529983 0.0973401858722546476820371298252207 1.1024095250858785038267302730981372 GT 1 -18649840748153072.8655975241417912890491852140776098 0.0769958439954109986104092525688367 0.0905538379456521901916431965343092 1.0949194778784806470057706590082933 GT 1 -2032038835322305.6709911200463032401820496715849630 1.8579818361982370679268696087695161 0.0789726082044885552519048907920310 1.0822655018058911718151833054715629 GT 1 -336817745430445.4755960205932493204638581484198100 0.7471520162897952934048805578711819 0.0975144163265390144450565418551411 1.1026025626717013723769311464934707 GT 1 -28512871171310309717652548636673274295943.6487235262657493832766002998097558 0.2779936134328222148816001574588710 0.0371096905665215641216965443546693 1.0378157787251858647008898776140808 GT 1 -299.3542512119155830814690200292354752 0.2130827700667202574943814603789055 0.0763624123912520106852751927551520 1.0794355054819611805134081995122859 GT 1 -19439519294885261792059141909.8618037724430904336927769502018386 0.6112013625014498319267052892580243 0.0796419958403385936436599279012337 1.0829925496762684184284478922049272 GT 1 -101242734180510.3617355095013792262193693399939922 0.2507462603931712708810023588895084 0.0036228643326178575622848303084142 1.0036294427990044336618034045134652 GT 1 -198246657824893371019404516223837132955.7959855868332008012417636177739949 0.7590869552514175831483928919980857 0.0507383400431201783155673427380223 1.0520707966094733597613337864252585 GT 1 -3223213923543379590981989.8842212878390958000362530699421305 0.6481789599896061627534438664462213 0.0158399829799188184732336235947779 1.0159667762280606269254323271191837 GT 1 -148155447995781076607729403650293256255.0132084284726598695458798597890751 3.6344690654471548860667533594198671 0.0468099586915016661079234600890988 1.0479409814532323756588167664440448 LT 1 -35448646550141649428904183555593086.6860095913929590327791399156846761 0.0950751984497033637125466138348566 0.0203535815031528023048795490451223 1.0205635698727767577836402281866927 GT 1 -199836794320.9231080729790883757237372255377915 0.2434137821543697150891961997114465 0.0843218290659437608846727369009994 1.0880903178180364810652664902835825 GT 1 -236199876583499182658726737549844447170114.5592195876920058613489696407814488 0.3646536057904220522650940656070748 0.0171061787669449034079383948825366 1.0172541796913375556686383552419898 GT 1 -63045325873143599268136060614019504.1458839763451422273239319355757346 0.7795950448289708186778993921985627 0.0737691563825190699067129853880365 1.0766317842402502808620350147926299 GT 1 -16768627807638007.7975351003919365094254711682216558 0.9248669522133158359175549063414332 0.0103785421648699204372597845440535 1.0104327747970534770954653065763353 GT 1 -62422987059892.2193083092903121112060033126938849 0.0986115679902464224125352533593359 0.0563963865500050737953080136266782 1.0580491020261115585324494892976754 GT 1 -2003458906379802322530643892.0253895146427906708177712983362982 0.8719445340128293856541194753767648 0.0961633458868894881705048640057987 1.1011066272695443708412324507722079 GT 1 -7242949349336698524378.5712140533115580900501134197048199 1.6320045311912688449514522729670959 0.0133911201520747029293549442855417 1.0134815897689940021152896321437464 GT 1 -12083502589601138236778.4245952859236044107858751540097750 1.1866555469473534583207736194686313 0.0992876762283429183150489123986567 1.1045693578483206327257669062193079 GT 1 -367.0984291182061592638974365253081251 0.3099153404112293787234183664532216 0.0099347210042535915795379189300432 1.0099843996477990036911378655757906 GT 1 -135411726440744359227012553817053543.3271980751110708006196938859319221 1.0691197828083132574757893095256927 0.0426468965433351497411095405478809 1.0435829864523316115504787344618372 GT 1 -2720121233592381420488026037162864969943909.8299276112165092578915526354526403 0.0794111218769449289394605140645203 0.0363752110389547634617470280844261 1.0370532832080062881766131434220409 GT 1 -521492793574652304584408971262271.9399791687756844154998797951151764 0.1439070411971824982441846979899788 0.0253059178410146487117500727581243 1.0256316191060699568001720178360173 GT 1 -26803957460670571086757724.2622050142898700139563366754587798 1.0636211944895060407566907644410928 0.0295559650028406794756212214826791 1.0300015441902240523544510944165480 GT 1 -151538690157095293.3278186351488402242216113165277069 0.4873911852496874667757942739679461 0.0693261234288506613111008174607646 1.0718463567659544946705915973520520 GT 1 -1.5907746429876110574841977035506834 1.1203417971718189900527548784679078 0.0611195281089726783352348720175995 1.0630671008571147954023979250196068 GT 1 -15834740784185992852761879623548589508776859.3679732867518181493835826598487080 0.4560001842713247932387758192810673 0.0396459888828862683594326324830364 1.0404533009157691494370907828569362 GT 1 -610326686470118046205866704878854816471.3539251386043837565624330856735743 0.6842633668919569434479302158632049 0.0237670039047122891253278474183114 1.0240539955519774398490661755809652 GT 1 -67094422296376.4713389001470935492412309568094171 0.2013966164360770157518968383295951 0.0648197995599921944078802316056219 1.0670160405197318397687357302776463 GT 1 -27678554695.5741534403326630077647936059424828 0.4216689514058590763791807146422784 0.0898888147519981809827161520566028 1.0941885053435932183617320668320652 GT 1 -246683540592.0662009949420608911353400828622126 2.9665984388489941852791120188798666 0.0531125658175976826351062191581899 1.0560642770692855543628680566962373 LT 2 -416225967498504785345350023299363512462996.9994949524839087568164348717381196 0.1345641501714101447785312643042307 0.0172006243444197020662750883478263 1.0173502736063971045871525741096455 GT 1 -894494546259311599618395031482046639058.8688489982313651766831822607582084 0.3081186333577716277715959020479406 0.0167478928302831256100540027173053 1.0168897246064408927868249491493348 GT 1 -6869680504465070526671820934615992282441.9577953475219544706215651087808381 1.1557861598588050527174858721142575 0.0691485981548865399968016311567913 1.0716556257814649070536668883677485 GT 1 -3193245381184260069417859.1818075407079191535654781112674995 0.7506437063347548575707867872106488 0.0298629028776915955540003150200414 1.0303178802323819512824892904641525 GT 1 -9353416694067462292.0144131352099160113284028858400469 0.4564615717452808816176907533543858 0.0262145838808607069450753357288096 1.0265643116045241836587259775028869 GT 1 -164483453865688615682032855295779899403587.6474166894970923048894895571476463 0.2739548323453872176048052486161478 0.0348785820607158499310619441481274 1.0355013638592971079861694721128976 GT 1 -31081004500746561812.8724292029411171939027832044131697 0.3161242626950352908855523821278000 0.0515063265733058123892157523292355 1.0528801597118707807716425334636919 GT 1 -19461402444493102001.7593850411603222359294122192829432 1.0728267126740500402791680483897843 0.0931749304261669822777287628815109 1.0978057145312728461028626750077991 GT 1 -176081837575121.1586588163045803429185421915085485 0.5659389044369185926017805345243762 0.0767620699079888580233475476399747 1.0798682986173347140182486666296506 GT 1 -2290192280311.0230491983772916752277937202392822 0.4182705037813676700530918276683500 0.0375501690244750311556758468297884 1.0382733378404752689361283324268216 GT 1 -120386724165.6757515391579211166082795796882604 0.6019944407790976256765171047460211 0.0084236147781200082650496495574339 1.0084592939273091050044425298499095 GT 1 -100257168609707801708400390338.7933350607714826633367540674446360 2.0020352291586510774528257875232436 0.0478869942423412924263641702123010 1.0490715477085254878661382360743875 GT 1 -45340116475479305980431643397.5608723902095568021251276649314921 1.5293364796334138373981256760148904 0.0952752711932999722773235924137426 1.1001245486148147380240541221183096 GT 1 -1187.8698695962741731652022369482751113 2.3133425322301054565718057812513270 0.0552904846211607231607732390854395 1.0568777898762361450378881705100357 GT 1 -965049759197889753096926.8955478312635590714087118242225685 0.9499733336006289681322743268483327 0.0139114164095654019236818494047479 1.0140090870453866549164305501665813 GT 1 -8611192091942.1230325940297760942871993191042601 0.0270365387976857830043985628929779 0.0772547442801271620394893675367183 1.0804020785429838130858647514707525 GT 1 -4.0386437545165877461433783835639879 1.1703357817135661483425243570877815 0.0743740580933796075560276965059110 1.0772850763707248368933760931955005 GT 1 -954423296406472894874278.9873256371624625853315117915224754 1.2428222568908351592960434533801680 0.0066328394646376275794059463787056 1.0066549345003981672704590696509642 GT 1 -11466841945986276413485.7866402096776377089063933412935884 1.1748168455487335748551974546744757 0.0903518173885935295165158032546896 1.0946973667400654375495151457334753 GT 1 -211278143902761753251843563.8010012444913724913992781410107654 0.5195242817476042107011649612372809 0.0624766410980941952896509179271438 1.0645136052859407225252678177732106 GT 1 -215369260425.8432495493407371306521559334991957 0.2658378246938802585130975291995810 0.0176750683832396046606565624140640 1.0178331377654556300562406161267660 GT 1 -83142243756462369226333066082147.4572024523357674012892928946303163 0.1875959257616729092451134940316638 0.0733527441219679725650901891719468 1.0761823080791632873726449169935635 GT 1 -13.7431114657057971879843344354039797 1.3235462071875453762280758462659800 0.0309727794192188982113695782155475 1.0314625760712924394431356732135134 GT 1 -274637911430.9061622563452379537253780145818928 0.0321728174654056186035733410459187 0.0730738323825414564638622672218367 1.0758813631713477910258549559027449 GT 1 -107.1943925283747828509074954181818841 2.4472633684873134329231701211941999 0.0331479634813056158530723666011918 1.0337098081437566069115882607607559 GT 1 -8266297749752294120809364.2865903740961528739638653532199199 0.9967900503107013291461975842193358 0.0508006929922974947193723914219664 1.0521364845011759024315698645640364 GT 1 -40.9030256385457133634230918847437608 0.5267430868463731292760844651999543 0.0168724526340468839191992463044268 1.0170164140823445399157524490735113 GT 1 -2051718533885103686314899632111703.7057281793742673069638610996649404 0.5705496933489926206965284144570453 0.0387827465018609877290973201213099 1.0395548253244725022985975304626271 GT 1 -3391051205.2907118031282500934209379718866446 0.7167138474950278999618375975275962 0.0036759114865533594723118938609683 1.0036826842516660986796563841102211 GT 1 -387.0685008162825973648330346754789385 0.8716656320477462967565977957312616 0.0636338076716947595945216721206572 1.0657486478955004058815166062225445 GT 1 -2794402848812820920098951139029963878875603.1528530370536174479273491314602028 0.5801500208938340422437995460466821 0.0422967358233231034591797659880158 1.0432172941104951610295528414685815 GT 1 -3640754471656590490156220932657199963.5834845764627601817618030603234053 2.4985829727570052717158270696990659 0.0385100245091242305313347038051031 1.0392711399141782322190525312480734 GT 1 -27902151697209318940071548465.7291446543745812894625329457101940 0.0819653113888013943067786411890343 0.0280999915380758491058719396896539 1.0285023517661331525913691900370363 GT 1 -1169660374248223446598359148681076479.2637175367688687743077858814230129 0.5736686335182803409919850205748650 0.0852166337309111111710334244422144 1.0890679999141163607799747437236556 GT 1 -9.2925593880028278075905413748057345 1.4463737924253799269710031572860418 0.0393751653997379103763209700818095 1.0401713368685893268972139340313880 GT 1 -287005873370976.2046698609499666920306385991410311 0.3896561538060825953563914215876017 0.0658891362763553086348829908745220 1.0681601500203966419397063602681555 GT 1 -361.6115132739578616446330880775269995 0.4109163309661853933066551339950021 0.0593594027519565290811573071781605 1.0611941493904329921225727672270394 GT 1 -52837198842.7199906869711605042916083813840707 0.1475232514194781976215895206829542 0.0958101627098309981612186549589018 1.1007159436338453435421422292816489 GT 1 -4096637959309049883549324121620868153828.7705118322485687894325373043970673 2.7003855518778422220666952573181072 0.0163634121207040892002671435746458 1.0164987714066548730696751907215433 GT 1 -38124742776811805068476824641.0566938606335888210129335060481362 1.0143790124279988967086136573618274 0.0756835364978217768710830555709133 1.0787007730100558139445274901289509 GT 1 -24.0573575780015679595381818169927982 1.1187759797171892602649935439450971 0.0380996611274431265702120610640571 1.0388444315286329923096761188934892 GT 1 -266919292113253726366.3715895153264843187431681121128812 2.9219330632867846848317523358115974 0.0241688715784220293442596673647739 1.0244657316976703746333092632798952 GT 1 -30040149373786798.7753352673382668016989806254684717 1.0741040781771744369801885859354123 0.0349245290841226615727202632944557 1.0355489724982714898206546918320336 GT 1 -1713666711376914009528086061170433419761.4139250071759914204945388430264969 0.6613897283016341188480767766109042 0.0153161467824903290956932566523979 1.0154346505296161225068006330208164 GT 1 -2614.3487898293562926248749945039217285 1.5043245928784358912207934682205966 0.0525828363461459072873199648692105 1.0540157720702959018035223111151784 GT 1 -26136.4933188219790431185080202291944859 1.2941397145865462687504841991785131 0.0861159653798202432905019318315269 1.0900515923607001040150126881768246 GT 1 -214.6659213313647422900664875210780319 0.0183165991630776889329963669049673 0.0957309860909471549291397215678253 1.1006283811008278758311523000455600 GT 1 -44132700655676646475976337609.8522789898923088733579149719888271 0.6068170985798977380096498965404568 0.0103359025204493088732691941725319 1.0103896889024358823689482799958282 GT 1 -341249917352135574159816.9082394049736681228825948433513550 1.1310596438972232384147260273673313 0.0452997743113575695122779067600421 1.0463578875807307252549325696853922 GT 1 -92186008995030903848.4818569991556460114218578845297311 1.3170292000964958923737505868076430 0.0264156966339215061799257392313772 1.0267708597004131904734116529445314 GT 1 -30931883074347252323665160178753.7789238246620711775184547598643442 0.9892572178462412821490123438817078 0.0692273613355724153241057066148819 1.0717402434905393060094066099640162 GT 1 -59517704310000808596434.5644646259321942078330885977853113 0.8271571005542358753635363327811147 0.0768056164139164164462547207754135 1.0799154668840651498968002733532758 GT 1 -288.7795526499742050805224667964588647 0.5078887612023016861629701809465163 0.0642418875915299747388557311203185 1.0663982628165617861260750594991054 GT 1 -223210019681534392.1113627711126605351918741876049459 0.4709461746172152053838720484735334 0.0395814379531099003817532137479690 1.0403860874093889144742227647738322 GT 1 -209435.4545266816691533608502562962536227 1.3766150231228168065183357739540638 0.0476594991217826409988694026749381 1.0488326391493529642049573426227605 GT 1 -47090902681356134906.8472201344301934967329697235168201 2.6812250863611690806835854690085600 0.0946887400620829137730848278360260 1.0994764607807675054621770499274815 LT 1 -1268889029823798880918059204143385.1465270096375687961186095650381240 0.6545240894194338221475063570145647 0.0682936153166405275381703467116435 1.0707375518247989766735085553699965 GT 1 -45766518161237899448427306163319198247034.4677976406387993429104835297545661 0.6294077738489725773525195420006248 0.0882408665404839772604640421989550 1.0923794318392546663258252352805036 GT 1 -1507200804624134931841176.5263636174290249868337896371673203 0.2948168783761412527898815997748431 0.0706606019368359277599056613097457 1.0732812698981945759714953746409896 GT 1 -536872805784858704735226.9612287343370381086178137479295463 1.8662664296865753097624328553364217 0.0753367812161366759266480153542176 1.0783256955669964109139921400326077 GT 1 -6984074714517.5982449656406018464437724148495120 1.5196642654415684882367489176922842 0.0130730030635412861391888335036151 1.0131592068875569290885283400880796 GT 1 -1996795480897610451699860414300.4060183636292866708956917135710099 0.5542787241037003212606707639807533 0.0146916646380059163358278871819173 1.0148006559696151418219293951115536 GT 1 -139330659989859376.2029007937541805469042102801061714 1.3120332177820401292206177765377613 0.0339040151761188855669686645580826 1.0344920865340924411061868333054046 GT 1 -803536189312269390.7392284624560917780455602435895652 0.2761129082357150280435831424602313 0.0522813207812257942030361202100355 1.0536975726455969965468304597621224 GT 1 -119859186075.5036366575076601798760755424073530 0.3245832921737458843144317637704474 0.0223551023083085209890027680607231 1.0226087651753550890757032899341362 GT 1 -719025065564440282784952248024418154.7979384461694885338197747331422945 0.0927029926926500280157285632807888 0.0791771003197913434067489333909698 1.0824875525524577441716854910113408 GT 1 -7086787.2673384023991465162065550862249713 0.8287720858971288736621531901388434 0.0616109021411224494541067907440849 1.0635905995078035422959220217323315 GT 1 -109584555542501.1652155785502957327543987612514510 0.1537375024034679141113893766103269 0.0771395664064299877885658944759990 1.0802772654536943636847981436821801 GT 1 -1501049209194441875471834106398.4957053462478412238263840530434025 0.3922972146604265410020740064515799 0.0917436887806837848935407028399544 1.0962286591361092787207245429357757 GT 1 -227752616083126067.3553883094516540800879675349167927 0.4043819405972770021842549306893602 0.0881355475507523836053365951499107 1.0922639266542345871786733083501241 GT 1 -482.6732429411917715656786790419181130 0.9719712685347435702201355489804261 0.0939412693030359167534048061181285 1.0986511508713188296458432438610750 GT 1 -550762391649963940125666652365926275477.7435700497931073792080626437388119 0.3133869693076310486589267804569875 0.0159270260049210070644877221955415 1.0160552241155376468207434076476678 GT 1 -57198344524081556569598588237654.1848054458124916971172879030275525 0.1163933144017099452643895278381758 0.0643718029399202266424558733647617 1.0665371067826009001077073841264223 GT 1 -14.1167118252366280879656258212350919 0.7286744343405533536322830251071562 0.0382921744588517640989142421214210 1.0390445901010624689618778161687258 GT 1 -572002633565332862631166223121.4805509265231938212404059049208879 1.2634216484751525057830879827009343 0.0870541145690056385958666830160088 1.0910786713036917472455009998903853 GT 1 -40340506857210194460649249287312527530.7551194057399798402463671563345511 1.6606867855449676101812525549414922 0.0454631909025678565264637020235936 1.0465290728119324298535382202181835 GT 1 -5802.7515146563696949536116247625117217 1.1069085896929884751745645659347198 0.0301449779102091772271118940175808 1.0306086804183331631423239374822141 GT 1 -4955.8613539181495819569472446363640705 0.2130659044172779079031859287489174 0.0614498193592717077689218744823894 1.0634189554017939012917900195378202 GT 1 -2507989253552052718.5484465685645685820661137587365804 3.2147854521397742228574491976297285 0.0808565404423434867411306017588101 1.0843130648293687073840831672096319 LT 1 -4741697610094703262583564118529882602308.2137704631076574347422318125653582 2.8717905277238311460911751112417061 0.0896025185143759922956667726919108 1.0938739819961202099116242984782611 LT 1 -2628444.5485460594579057670958835988659972 0.2502480185073896888750506014504703 0.0840071113155958906449943313517490 1.0877466777831161594227017416870581 GT 1 -17.4717159802577455778114018268580494 0.6192928061913883377122136148351144 0.0314207113316419363260339249438266 1.0319249319916142246735721503987061 GT 1 -6923038633127204456967549607796062.0223920310607373538282232030384953 0.7492601743617059273717152615119379 0.0480369595072054191023055243931620 1.0492290679561747637150113777356315 GT 1 -7130633761387706812082461442747481774841272.4780795411049228254850103315128584 0.4025170653572323491163957265155727 0.0825054549001097171502633821310058 1.0861086444663005980068638867185811 GT 1 -11710094939871352406807984394366444627523656.4653921784792548016177692741544830 2.7222914631321303298779691841848462 0.0057427723804269795624481998883932 1.0057593255020284191078965072341927 GT 1 -114393906428142.0854588777807284825056734390228002 1.1950913523171420790862568215210733 0.0055458968671728125233093342526627 1.0055613324490871164604953072799487 GT 1 -253.0653700268879182596722123700785633 0.8393443148994698836047074853687147 0.0063091253569910179521169488587218 1.0063291119982070323252170648554840 GT 1 -2742245349606383742464764847251732795712294.0410306962596557976298217215353109 0.0066995482742486744309921664102382 0.0488249011142973859639687490645902 1.0500571125797466654252605993907903 GT 1 -3842901946701603494018415765811636.3274056941862074931764295095309854 0.4849781099312471360556857981922740 0.0127014317536214486704239527405083 1.0127827845365750939158149735885413 GT 1 -121687.4201557961491351138868882678710196 0.7122770481900362619899404469092227 0.0581406067566912254896499935314529 1.0598992796196849946402132066554304 GT 1 -1705610912638823078922878886092549942036.2816342827443438679004676887924508 2.9267188606677329987619731776917723 0.0487775993336512857996762461039318 1.0500073839813154900892909961886219 GT 1 -3097200522834418783229366768928.4304270013087563103472327138867807 4.1999914644017644365131158968396210 0.0482377197646917657827505581834957 1.0494399810075952144714800406919959 LT 1 -1297335488602748556.4458927000173417443624575802559678 0.7655925698179826581789797384874090 0.0535247754498874704934548674416660 1.0550104845336601593765943999392605 GT 1 -16197505484291.7522747843766501541175361014377336 0.6318416144239346439590507031986103 0.0756917940847089591154931284719160 1.0787097067725700178270541143418221 GT 1 -274678893826775480199831067717223.1261088120974849821985906640885082 0.0734298214882698417920108084869632 0.0658887919984848006135733733721314 1.0681597814583549890317294959761349 GT 1 -123283328023509939723792617971716839869614.7403338279252395679554315197882371 1.2614204498023488778615158595781370 0.0768935554315823694852364572948511 1.0800107265691516299764668049038180 GT 1 -500848119345369747705381945.2627138197414308599003295602353372 0.7989343024299098270170329673877545 0.0104943328549966729878316165165851 1.0105497866744588053798471364467661 GT 1 -988922433.4070263563298895527369070865607987 0.0415229970597396931836452292452490 0.0339494769907456405426510296984989 1.0345391448854657322206678395001400 GT 1 -264922918774256195985196.2626724553300805523470218726116103 1.1208201821973087316305569677446741 0.0319319975253480145117665958307534 1.0324529436826672131315534924517989 GT 1 -169705255474266287311513716468894.4476416884702742857151406369127331 2.4368639283569655630571346782494642 0.0026237836086496430662879921774883 1.0026272317616543297900287759447527 GT 1 -2550196338938321637480768467135165737.8901971452201532934986472048094353 0.6923423859447092517273217664414317 0.0549782198274145984695807165278467 1.0565473039523131247358465960550263 GT 1 -5347107024.5607890541374965936644555786354526 0.0860926958982461325243901712478886 0.0432516417663425031196973770502514 1.0442148706603872078550591066055081 GT 1 -1461647855511360108689278461406.5140733157873407951058340415567925 0.6935855966174555062951278049665045 0.0235861684874026630007660879353582 1.0238687747375732800487436647459536 GT 1 -649069892279469180181652974380776.7201493826677517834767321039413234 0.6908526519045796456073333163226707 0.0425294315534548021933048976624288 1.0434602963145906844563168757993272 GT 1 -10087767715507.8181803334353928889286273857583618 2.5243669773482678187867396393126078 0.0900333192282121532144759320595097 1.0987980006846016793097072272610961 LT 2 -2364.0929936747035715924356116911811527 0.9004269304907564940218753839994056 0.0210815282496564394367867505892107 1.0213069169874404776887925976455605 GT 1 -1745.7075650180181564013017162665793253 0.6124338164769457088714698947043276 0.0435682904225648874206249363112227 1.0445458888059776685909714386481088 GT 1 -108129427741940999822281458660326864435311.5726072424597115053372396707909709 0.9022544422352334543154324365424782 0.0217907319565465051231492449421932 1.0220316563322591802538289671431279 GT 1 -456083625560609383689291799430.4594871379967893037506681457987069 0.6477368470173827188399832655170384 0.0590678239876260980330974303762694 1.0608842184955899529149048732518817 GT 1 -69741315307140239923853349.7561311945716773597115568650454138 2.5649832593331277614018005704832062 0.0736817460591290069574238407958024 1.0794664046930725093285595429715433 GT 2 -7717330230433286200.8535157865220340492977627173704357 0.3212533998741476121564306051116736 0.0754935531354669101199949363063562 1.0784952548266123934745736687638920 GT 1 -1908470323223083379338165109.4948107798886967600334920742994053 1.8488854986413022027674739669633745 0.0647078976744869455131101874535903 1.0668963895786585049754138344763350 GT 1 -63444104533890933052311847758910311.8893509769113879454816567752820284 1.0399504860366548775158765364566547 0.0087601048259761085416687769851779 1.0087987001087220617752716816130967 GT 1 -267929553983233583444117.2510653630005126132835308803207597 2.5505600834838030706992178127056910 0.0253311816087680079836542100596088 1.0256575391312716705483613865867085 GT 1 -178.0114562995315847585401731349529868 0.1288569527850605149877197536083607 0.0182238348397167227509634911186567 1.0183919343280736455280515241640724 GT 1 -292.2063446040102713069751103920656862 1.0535564712948516679565488021185916 0.0519765838582195242861882028797832 1.0533760764606709483917848712318322 GT 1 -35561574162216361426763601833206.7876632773714703146956533636803336 1.7377895701567327740056224878765838 0.0624402648849309865480636970205292 1.0644748057113684365561139803968681 GT 1 -2209514480245.6825997891914151499837100313934501 1.8842993967226542759643245111750456 0.0440531749368538457201406830030112 1.0450529897965990857958934026894426 GT 1 -18897923090624727457196173.5988280922902178752539274112861518 2.0907380723198124104132615420511249 0.0836256728461870230618279516056661 1.0873303436863024168671019003017584 GT 1 -6234788083065019013235572534.9788961906927839849884041363017275 0.3568235792902085531169497660212339 0.0416323035538949534741526855538341 1.0425237579004954725915024479642910 GT 1 -195040317376633335505710381703352679878808.7394558666745670372006078283368935 0.0015964041103421081068301657494603 0.0074080513050258070898039292010713 1.0074356271905529946101605498045933 GT 1 -48003944.6671342996151233720697342539097150 0.5362682957851602823271431407032839 0.0384022619915540959469100031126633 1.0391590675246283667802980555317243 GT 1 -73404601897401030227940890.1180871201518166776922572821753610 0.9482900519092147500426892407497840 0.0659618857910371343860275900267334 1.0682380340816550846663461533371476 GT 1 -4834872640976994056537974093554331939424052.2783723446408499269739699533754267 0.3116134246683714478307832369720219 0.0788039397777828547878934759476894 1.0820823878334875947923856857563149 GT 1 -218909276073507979.6515915270340342125496252443209392 0.0305731988024154715810782137048241 0.0527738427800930804164692287960809 1.0542173999255126615494024646139428 GT 1 -606653299158551690495.8781321466533896553468545133951934 0.3588345639558597251251093067480781 0.0669482719813729083166067569200050 1.0692946369936247913747664720067749 GT 1 -6267278461828729963962.0847884925097125877515017992095635 2.5458083797946305352075963392213096 0.0022516647911238564044569538337552 1.0022542036000367004992006540812115 GT 1 -34275085.7830156856706162194513917336531830 1.2336809068882213109424422567776021 0.0789156711118096998118008740257343 1.0822036846076640690281913097555559 GT 1 -720136124802.3227863253804517008254846979027595 0.3695521022513756221435391094329244 0.0322308219448986304619369677979239 1.0327616725622750957546687119113149 GT 1 -14944442089507501008206387569316.7910744194397814067653498097771426 0.0564387139297853704799202082378777 0.0764027363233552150499132759727582 1.0794791641776398053918574530487079 GT 1 -495066.6656180219183416180430167867486945 0.1434176276690019741656420115565570 0.0257052745297754273913844541590819 1.0260414282263549298077380980612445 GT 1 -20125659582.1148012199795763067973406871819119 0.7593136750217721050620483874067648 0.0929678898830623263654362463091392 1.0975774269391492851716587034233903 GT 1 -3867588372589.4536829971194423052181512472905320 0.6133471424482403376068850712893143 0.0825361433101235122412680288544347 1.0861420930828869180977935902341899 GT 1 -27416924704530897454791022579274653678492.5436466746423710777376149732022125 0.7714031550307443772107467238812146 0.0241078001930302964321916683592487 1.0244031496866564512088336602090727 GT 1 -4501756933329708223081653387438059.4261594738449813120808771072155991 0.4124487419862223564890958815534446 0.0331301246957695567860937521011786 1.0336913579359707847629891408202088 GT 1 -47096078831170771509314504731029786550.2521266380370070051982834603540279 0.2530855262446025448694168965082997 0.0372302072782050721069578165431846 1.0379409479715195962260085779375126 GT 1 -1091645705.8767241310841032300150175522412704 0.2431469030639783911083540553461307 0.0998933918221127941900008228729310 1.1052420691419060511071579027851023 GT 1 -457484312855271447527428790926.5002547707765087365281969189516581 2.3064965646703259313588061677206425 0.0431466462862001508346798339461738 1.0441051346797051441342709908241680 GT 1 -39826508096045286718651612042696.8005440087869810694084058420452168 0.2200704301074042556718098267097618 0.0883620573669965376836241435848340 1.0925123604572501740120084883973755 GT 1 -78850424058025331533585670634456334.8659958948899779588273917335538133 0.4860531922100757877181099396493367 0.0993037126549358313693393301101813 1.1045871621671124646847874626778655 GT 1 -1103.2476386752424512883438475974054091 1.6236229645669836621750520364315638 0.0644004591225853857709662668004725 1.0665677349975278386410694389389130 GT 1 -48460355164346819.7770852794839619674522666832331967 0.0858800191912139916691516255796225 0.0472848463533933958452542360170668 1.0484393143954756511744089479151804 GT 1 -8563864589522478457593445587628828459863.1778932229392905724797332256423977 0.1207901727136408650804254181087302 0.0963772094110002090867538297525444 1.1013432727176462693053651256160165 GT 1 -397587554726.3238127383635146765487260839046363 1.6654678351157220659037650080476114 0.0212353459220793535135798746768403 1.0214640595512293591793809046254238 GT 1 -565137001944047270863992884772091582.9957658450685136661495643280710434 1.1865584797686438229437135716160209 0.0751949189094822664166560946725609 1.0781722868203395868544244261423297 GT 1 -900951037247118784681779651828013638910010.0830088315091451454511182310384477 2.2392806931540709386332098387329771 0.0266834194588571340249566650449758 1.0270458843088419979615921184432095 GT 1 -67261061629661.3363359687884284646697193974439549 0.2143507507777354423465337764480774 0.0246662582945901281416279256715037 1.0249755673702546581578381706256481 GT 1 -58662678033593545944512759280949922.4976204492168448812071713583495941 0.2754258545550978171760449558734943 0.0536382043406277706042986234546427 1.0551303352019057780887771894790435 GT 1 -26061.8876937953240867110228984377239959 0.6159495467863776507705741486314785 0.0731896860767265908121568019760266 1.0760063579540363004437798048832103 GT 1 -32291711480497482178.5954294543556299808135941553581397 2.2756705075193117310064960525916092 0.0948664573492671019093492333708291 1.1046401172857945570866190062593805 GT 2 -2668712738670975387149259.0195226669784638016829395689303865 1.8449364428305519883476541696429700 0.0085115507457000541084439857190189 1.0085479808588797626667084431042571 GT 1 -7551902240738734888114.9439366895758400655598326400871757 7.0354787224017360278184890062693487 0.0642579806723554060282924465759036 1.0664154608712698016159635241524400 LT 1 -20803795104472918391577454599394635461904133.5000891291786017217682613534270197 0.6007412631539938605607595881851800 0.0251433849443493493806276414906058 1.0254648802802737639604283054419281 GT 1 -828604661273660377092672455337356247545293.5353998264097394085025987836796545 0.1903010662532098211568768584055163 0.0085463844414018371242347193499385 1.0085831142057621415632671512232761 GT 1 -146349691.6514964823380949310471249951055170 0.6429295570226513452692991319355588 0.0440782281038517768142408708861889 1.0450791978393894852724098420384847 GT 1 -20305925201665.6314006339889576431883766040535755 0.9354312087771421779615854279039675 0.0237426671271922822843352354570001 1.0240290665910907251451048080390983 GT 1 -5644967424017439349097548276267962806756.4169172683709241748282135788794617 4.1131153583839963084359906144717473 0.0732310993723125229489393712773285 1.0760510426324872892448917520855933 LT 1 -11912989312470516480892046968.2798854880301711125764711911185623 0.3313129342918542956701731087629932 0.0290685324275393227304589965341725 1.0294993924067090913608450725456837 GT 1 -797365896633096707330874023127534738607.0191645585644909754418991606403922 1.9265970222663900603467960285660382 0.0008409078072023035551680990632053 1.0008412615685067426435870709488240 GT 1 -217987463197052325359475456759017993285.7719546456071899805794736406246251 1.8032366626404272575609063177908486 0.0941218855456149696189385322684871 1.0988505134966339400106542262426626 GT 1 -24887567.1582657723500127244892438924353643 1.2775031295534600648667337530217881 0.0622226620954549283100957449191534 1.0642427377875980467466416783580684 GT 1 -17403421398955234629026829512633582209174484.3268817834903604385553970148877416 1.5339641858500031473711202354867961 0.0253730317848966449929022903628040 1.0257004778955398957970595768705605 GT 1 -986731527454065.3969564663638479807440414790367227 0.0296785545832993654789814493995768 0.0639189834769626672780446757936635 1.0660532501359532021596165749673667 GT 1 -30075517850774.5452645094018012748309042529989930 1.0358964607840315689358272218406257 0.0495600472532473231869764194866901 1.0508302934345594251136741737473423 GT 1 -534170117474929673967074960357538305.5078982554572425939409969134093627 0.8469666027990351458235261191757405 0.0973541599372178902974825090468741 1.1024250061928379649067154010605303 GT 1 -121876516625101358461852342056977674.3204119006938797702387218544060451 0.9454085021624337767391877625168993 0.0293314526614327588338296573862110 1.0297702208301550409747293513679858 GT 1 -133697771182882.6634406461345444075268539671528496 1.8814284809433157321020376339562740 0.0435730797395149255325124375618930 1.0445508963030036813566567006837354 GT 1 -3048059530.9446814430892664886742870442129918 2.6211561674147720098670743760550150 0.0062494173907892606600127004932838 1.0062690267403476424268541102572097 GT 1 -255405149526391.4063385134511463759780076308070959 3.9654296677272425641149465708439958 0.0301399283355057308376094867141790 1.0306034739065936638824710188831980 LT 1 -12471214.8921432495309007989601429341012372 0.9226785176978433867574647615810970 0.0447079392584961566887525977656688 1.0457381624896841875669074683482747 GT 1 -918144109420380922450239842.6744922702482161905595246702477721 0.7024829973052405084532645320326978 0.0823253967949788244117598247410858 1.0859124139380411298775725455220090 GT 1 -6284.1097626259450071434417405292412017 0.2978932619700046997182523173459261 0.0954140091680388117499639624521319 1.1002779086469030520393274556171790 GT 1 -9247310847490811267379872811783701.8862983645212115012914360931107607 0.2592899805863954525346365273025535 0.0982503215640113662608075040214261 1.1034183157985094162667112645493270 GT 1 -370752133935459190243155526778068766.9138074885745719073033703000001767 5.4902321700893914431346981673855541 0.0266049730279115950693299053183898 1.0269652905211589733700013752069545 LT 1 -2370240414149280640659918.0246859016467520144129698020006957 0.7111951073824636405315846935536526 0.0926623985058641430585160473332348 1.0972406803784786152107158344011899 GT 1 -173800531811701031792049849621932511625211.9744009044676838741576632637156107 0.5734835070181146784160679135273593 0.0610966837082997492240050835684444 1.0630427696206669992889950337741701 GT 1 -133258.8423073520978006780684959396135417 0.5671498266785588334599108768179210 0.0051987804389032014389638667702127 1.0052123411176750997573531348799466 GT 1 -2810657074071334266553697558195562719218.7331216922173627172045805740604180 0.0725252727695437768589236541138106 0.0675667359955395391725593066051206 1.0699576967764374133495299033316916 GT 1 -1911082.2225842840892925565188123288696095 1.3894659548286963386808864674740724 0.0917187888357244705187810385393709 1.0962012444037912794655723340545134 GT 1 -7382864687435850546375.7680358273251035346328303017452256 0.1069464654963257977601430469585617 0.0183018418568345989338213359512206 1.0184713924765537084604171485646321 GT 1 -51242.9040233353226679317540142240260894 1.2375293825479096880381946062816552 0.0585291992132327445022329060369800 1.0603119448690266600780327191342509 GT 1 -782242743486044354774087534382266771664.2249219586750306220123592152822392 3.3485195385537743660342509611143940 0.0618609358019727854613285508986141 1.0638570848901022396681114044230518 LT 1 -15.6708264553498148582530121867385707 1.8672471145638797535114071083105140 0.0913881963894690777030016793828665 1.0958373347544994223847672437496927 GT 1 -14583984682123619643844536186943562273180.4891194552836264223810900118235568 0.5650906351829064346703368647651870 0.0308443719494974132920884806582117 1.0313300731240085590261546452029526 GT 1 -22146892787.7064140100697041940558300989614710 1.0598648452613083721280049744109934 0.0118326730576837141703536790322500 1.0119032363205720081474641332755028 GT 1 -2259692614403514.8531834486650348249534614619913314 0.8218618520446813751187002914365213 0.0893156694027019693381335225068065 1.0935589504449365883073742424187352 GT 1 -6367195069608968242.9659846601973215765771419774107738 1.0526243729110717334263440164615732 0.0951939482286950204634746242382429 1.1000346656843528138458272809433290 GT 1 -108562211494690639957448245186371.9070590423854373327010241304132964 0.3301107014880680793303134755946804 0.0815250534786767578169840051220490 1.0850406512135857356874240006525605 GT 1 -95647588940983615831359.6366393143593241861287985230813050 3.0725829680383296893354749916923576 0.0030164332858930901852514044868934 1.0030209918902358524546128783141323 GT 1 -5034139560449388048294239938.1986555675235232005250274245366265 0.2958048864706548514636931962811172 0.0575734884577424965917006179259790 1.0592973345383866188026757693980507 GT 1 -764308010108676565304917996857802544061578.7901826161386261283571153469591914 0.3384773618668558235149575854683169 0.0196340150728370399953549293049351 1.0198293230268013397147366365901807 GT 1 -122567433550226520575393005.2098337802712347496531323130739906 1.2485039118974948111245815978557125 0.0686573097467727666599453939699749 1.0711279810836359705808652215063724 GT 1 -7788166879430456758587.0800018630058415882073739788238960 0.5792277765347638720974615992073726 0.0557816719424938108151218964607513 1.0573978598557337042294943595349719 GT 1 -2688910174386642725686.1873388740991324351851843235269037 1.1887054119232640570614662685547774 0.0776484172224659684464359749690455 1.0808288018889878670837089257645896 GT 1 -61592921781650.8986624398515134270564893876230488 2.7176859983021362418553773472306663 0.0567380442324692429067497056627179 1.0584112451398256100959361778741666 GT 1 -327.7825417441532718654355007997779884 0.5246663317673560315126834572045892 0.0993471706101505380647066587276343 1.1046354126198641321361777550327118 GT 1 -26125654.3235616331201170953122009827172888 0.5332017859423738770681110156225841 0.0494679428967585225315650140925683 1.0507333910540050256579789279556321 GT 1 -58163699742.6671787916061446453015390288436304 0.6624179375941645874023676844901859 0.0542798159415823290421730105947389 1.0558085422060689727619224521711485 GT 1 -26329042141094209275772594358497195240517.2791120892858936404421939214936411 0.5095668407977578395682452576189373 0.0768057894080605693076774380340413 1.0799156542705608186220746114155606 GT 1 -215701996481743967.1287946801868826985812206815024485 1.6786887301074707183318154473997015 0.0842493229196381890631871107537262 1.0880111379509921653384973508458310 GT 1 -5029156419611325631875863993621711535518992.9200331506542242462133191123749743 1.5297916641785212556523245600090211 0.0036218550384950469290672401802782 1.0036284298355636922580700051193094 GT 1 -4584044.8790239103095540191127509375700455 1.7289540894622203093705832935916165 0.0869008435437130530879782526731715 1.0909107991842897861628921884886276 GT 1 -25649307481538677237225656310386.0285834945838598154781500008866855 0.1584475639709289953799072924101811 0.0291852704098302149562530641396060 1.0296196326137991035797855064240564 GT 1 -32516.7232665555354523917972145523736537 0.1788798680030813580735489030951126 0.0531406978659542558896505091384450 1.0546047690261377931553918227558702 GT 1 -2965328537079083608003882190980126.4759725669521402095744266303442279 0.2232871128378881858070814007078187 0.0416020955547479615025055678857046 1.0424922381370612318594540567882547 GT 1 -3430463993740.5775460823755340324912383454210741 0.0273183297968276407710873554439095 0.0057855941288151137825151362756953 1.0058023955138641729315377795719732 GT 1 -389472360491040832128128268.0252973057498626075743226337814587 0.2982885896686644778606310596026983 0.0452934954522420959657558900035772 1.0463513108163189660024371004613286 GT 1 -185700914255916983933435475455137818334791.7552527821542543280657103357066746 0.3909767513354023029006797592296354 0.0994422658109596409972791785358138 1.1047410029409740735963032260645814 GT 1 -37255255588222422163395175.8707287215315917072533168067990010 0.3231782434829851861196348462441788 0.0448621403196184679401778758344558 1.0458995932334228853394728012760952 GT 1 -19615597.4147275723902882108662693431192301 0.4214812204912076136832014497006090 0.0831872656404763374446603901875555 1.0868520431099207666625900008010023 GT 1 -9666266971028576006702269844629379748218.4785899604495251041932985611769628 0.9003054411617206133028224518820824 0.0561539694648063278224576292418246 1.0577922293860342691236845163401343 GT 1 -243724.8798843786117064013869411420916919 0.8177267887779763856185744930857194 0.0498481051804476516377226410375891 1.0511334178847404091042608609222541 GT 1 -20393730231.6378224709457692025179357759818261 0.3829696592537334417850231173593652 0.0994026818487316932655904841919781 1.1046970489657925503215035099997539 GT 1 -46694575822721743.1360815003827924773508593562967542 0.2420625028211074132487354428604212 0.0063892572587623158656064261181408 1.0064097559237327388774719014365791 GT 1 -17033732.5255086287527698959345213798068539 3.0004243787499082904454973651321186 0.0578418665452939288936290259226666 1.0595821485848961393487790814870159 LT 1 -2657747596492948916.5908848103525779794806385619565984 2.6950323540502607516594849817158076 0.0894853986853505090861449164932819 1.0937453433536582643680734800534470 LT 1 -6470711396614991606.0746840608029630373684022199643052 0.2019794079327731863072522538983967 0.0113129136701240877277372180626455 1.0113773914267378963664916213884549 GT 1 -727556973767059576934639108378319.0454778227656086704226669789755413 2.2258988533468164271204760360581886 0.0674466043815144969077062448273735 1.0698288683866241806182428814936311 GT 1 -7298437977774548972923428220.6232322482364441755278093699721111 1.4740237487753228182725182353954233 0.0264165818738415344694118996996339 1.0267717689594464595084058398049105 GT 1 -46234292339395143.4745399717314543137938049982039175 2.5757385557462404259248355989402256 0.0445501617354248262347011284677023 1.0455730145714729395827812919281574 GT 1 -46455830670.0022396781843504888122939436251299 1.7955369779170075012647210719841214 0.0595472238749682181829407127362007 1.0613938429583275531292716736471745 GT 1 -258347383956916097982588803949705.2054146302520569631166470936292562 5.1589738663290071421268850387235180 0.0303977207860809085197079433555849 1.0308693129954283722550703918907083 LT 1 -164295.8927870242916874460532725199973344 0.1094615228071045984409312381112028 0.0241918933925754920598260669994864 1.0244893239822907321645035912786262 GT 1 -17164999.4874817408947721799078672568234448 0.3876631480408848732298771255214408 0.0931063216176496639068540825535721 1.0977300591314184241688062822904011 GT 1 -10444364226997571501469.0638602310527875684782358587814478 0.3844173140889886009980342314454658 0.0789756812058919878232792899289802 1.0822688383044115654581277830865003 GT 1 -2445036806569886314400691.6175330548643244087836050752965343 0.0243590709316732959081904426654152 0.0304286137100290365369704933772513 1.0309011749420918383737659478820879 GT 1 -340690.6457290770588627819888168469796635 0.6020456378700014772696136327297664 0.0279748794682185746604722131242946 1.0283736306871533363275249973781191 GT 1 -616388.0604812030533509587646304133143152 2.6630241684695447014070040247937358 0.0279536650506793877874557094600212 1.0283518059569149316071214372053771 GT 1 -162300323130.5946433555183350806831627876380253 0.6520002943529035855316238178582414 0.0127222779638877320170549011107143 1.0128038991527787306845530049459879 GT 1 -91250.5959672897385486591214994985352150 0.6212899840691460602120907024177059 0.0513989654731608008929962889398195 1.0527669749564555480341370503501271 GT 1 -9099112.4366389361938856074753704222689354 1.2298093398431166071393308895774987 0.0065909723514710969618770912899075 1.0066127887233129299676093830239876 GT 1 -190444023034.9179774336223774234729158094447875 0.9694278157551194921488610478383352 0.0496918834276888794246477725295979 1.0509690137381925098629801434042807 GT 1 -3887298383034861456698178816307125039.4647729146898410841779680838612872 3.5109719736912538233906194735150606 0.0965129433255787778801305493152698 1.1014934948140388836310095561767726 LT 1 -244922201634062311911740907929460580799856.9468559426598535907958267184034646 2.8475933978944598590670635803028004 0.0244401139812988710962454948509956 1.0247437307277125642885886450193346 GT 1 -18971420809916377676016949.1097099824386211520591654683785487 0.1056782086451363514383057844299280 0.0526331382333835356553535170751193 1.0540688671846462384184994518509690 GT 1 -27.2011248325135528996461316827088054 0.6356315949650562787735309333088610 0.0050681770938467703344409856039409 1.0050810638634339485969421237990547 GT 1 -10422.7115315727723386774256191738787092 0.2685966931856635506631623056166921 0.0325526875953570932403961860265853 1.0330943130239630372905763441049652 GT 1 -90259105590540388690244.0629829137249436416240456595715986 3.3549824559631057646610896026972148 0.0063364680327984147128989390870614 1.0063566286562506873022420188589427 GT 1 -2463.0049199823895380534028115864842276 0.9716389684486420553137834297959966 0.0956002776072634720950228559617006 1.1004838455302308058595171816394189 GT 1 -44277754632565279123685244300902.8850746013055342101726507720042103 2.7953746251336904350317179545220851 0.0324415223849110988361489233886870 1.0329794139253229662925548718127696 GT 1 -8201031470514476731722596305979927555841.5408536079527809674492499816576050 0.9844138225779853896702198115344397 0.0108926812810211226007076310619139 1.0109524408915820591691798701225604 GT 1 -12306001747381089114.6541947921484137643452587371983480 1.5321406991804710020902002810909595 0.0723830037936124198608069443282582 1.0751363509932996549848188117351827 GT 1 -15110651649.5900206349335920465312332574804974 2.1293044520729314831796996736715154 0.0919353577903923475837479992344405 1.0964397110540626340431915334508128 GT 1 -168732313369506757559598037870482395287749.0948687693117803755757235122754771 0.0150773714541728994684730741359281 0.0016923385634539479486196329382786 1.0016937721860387939904259301117484 GT 1 -183222901739018144460042485017999285429.5652753053764840316083649611084894 2.4032122397215906248650264499260980 0.0060529792738049461160227398397182 1.0060713728142230564758606457194328 GT 1 -179238.3094380918692165234665148079159128 0.1285847999277087219661528372389637 0.0537811768474281847017468608010575 1.0552814225644743944036653691294113 GT 1 -17948488125964484010456258706321.1997783403091284372591913495374002 0.4758027523987328003562141380497046 0.0548774065775306837901664866218754 1.0564406314130215739077133313514485 GT 1 -953710682114270.2158607172822389218343667291506131 0.1326428907804995907498401311573477 0.0675486352460400541193469208664097 1.0699382845841538570656867294553337 GT 1 -23579009177792496.8425764967623676523533138890949716 0.1015776814190156776323872653685694 0.0657557622017813590064324449441714 1.0680173783655951907377488611647139 GT 1 -37991897.5857818377062642525594276883624449 0.5645882019276190173416945612003110 0.0823702995765819783599761639243999 1.0859613461848879765578612591416155 GT 1 -21516112.9501844839147173998344503448289747 0.0072217177464050012156468998701694 0.0688725313848776490298890254218762 1.0713590952714666478999514970682550 GT 1 -963018383347034837646345855027769259.3147249606386114273894005814328365 0.2273110601098763604579245640541588 0.0393302964650369912167255234747540 1.0401246298865847612468363850816892 GT 1 -1363533858443.6699580392849168642904567161873414 0.0384814878915989327476824379705338 0.0036024145832981649281322307072147 1.0036089189042520096053747289200432 GT 1 -113727661965801628974246867.6529871488838394573613179363085089 0.5639504025241331586192302277118904 0.0837841454629807097598331826056457 1.0875032930110035728498676549791602 GT 1 -2763236811761157163053191212405572486.2357147288828444499865169514472309 0.0134007352723404778521015272354676 0.0348359054173616734360999568719642 1.0354571458997421270143921531796516 GT 1 -5818045873331354581284755.0053660831932917227616778296046903 1.3766553617486767226386601735648845 0.0132571528385255701558099451274762 1.0133458133517224909861800223793555 GT 1 -3560380.4743143833933264333256491261998613 2.4309666437399054260701415262406753 0.0218197997820260752853692963539889 1.0220613721183572731482434548135035 GT 1 -1444536054098951146412510341231230721.2935972418670852656557253972346883 0.8167139411557733809937697031514049 0.0694374285695558311841424919588580 1.0719659602058692490398311202597185 GT 1 -4474722176391386367033949148800481690416400.6289995247730850261894215046555908 1.6262309805725509484576591762747631 0.0247214597185620090118529031037821 1.0250321664437828841462363045612640 GT 1 -948616372500164254942420095088059902680.8692995773011246427460503120816250 0.1167161626655602332848345413603986 0.0355899144752451288466341027316335 1.0362386749065406847658436949160605 GT 1 -11458857190576.1950364043472865006591869818268593 1.5142575209716727193785882375105113 0.0768423175234982540507560764659716 1.0799552221509627983768916159498663 GT 1 -79392573470309943.7280912930151814259355387678319300 0.3271680948968723157490876566092511 0.0707851304526992384876503748698348 1.0734152756877696834793428955207195 GT 1 -2205222989168357217006009394530816598.0320144130114258606448721695580077 1.9147557134905984126758654666218570 0.0521592089451540219429290255582619 1.0535687327562074390064659158287518 GT 1 -1630731766206619889681139995913613464457393.3139261279486278652310838915997613 0.9715617887560078179053361432723265 0.0330682387823124915418068606498242 1.0336273535289939676701150510920386 GT 1 -9395680789164954500666417023557726547.7999685382187534112854092234257024 0.9919566806880339101452082137758699 0.0509872046369920118477923883235994 1.0523329974673105033472457065339916 GT 1 -810189776.0245237256415953352259680446767041 1.0142398477793761348111117939976789 0.0820383543869077266562788586228394 1.0855996696123660151785437471302990 GT 1 -135072345720518025471300.1136052698583834559798879703826193 2.0931863647623892579911467998784312 0.0737072883892665010170575129456459 1.0765649910347323640409894104262160 GT 1 -1328156044513040381924.2378113049899823482366409618913821 0.9157052625590623817312563165850601 0.0164623956788804833799495533666815 1.0165994066820182735330845041956149 GT 1 -2759256356656.5518133496608507849707904627107256 0.3989485379245532927619497502669587 0.0710107477058483601194525700791815 1.0736581093480827657764783486569180 GT 1 -226408147676909.9646253605828558432293003059941580 1.4986474843927530316036623175401874 0.0698651577150144963158555418365628 1.0724257116408311752329748945054726 GT 1 -250421095206080338923507628235782451.5695309179370707327319165581182128 1.3517259804469394712025076402166553 0.0549298067251859963832032810418150 1.0564960756492259605963261496966043 GT 1 -18527029594220.0835436412011485381698964922081965 1.2054352998297829699980226860272180 0.0635481748718339267993130198650351 1.0656571998219317733701995252228046 GT 1 -81073999053188703146.6728204179776657223958049050993156 0.2460667710832868853640621003689512 0.0672226123844638397229976251238132 1.0695887050867520413458796583696487 GT 1 -2851999450708073.7269108624193542689760308710195043 2.2664647762200667077276495409058907 0.0379044684029199319729150445305796 1.0386415280523950522546816632282871 GT 1 -66115.1791522235720415025275180372377601 0.3201457334541106426943778412362968 0.0503540602807828200789472766855192 1.0516660588880078928845541778849880 GT 1 -28750051961074467868.4702821517244239150668957074460154 1.4707648443986669615852461601181452 0.0458455621708022237527257091167171 1.0469297361187561675845145224713819 GT 1 -24345625793055793662886.2204718054586976847590477575506042 0.5709804543151151618296810642850210 0.0323431151563467082501674315703010 1.0328777123467201774367902064197228 GT 1 -32417678594289972960.0362751373299124082088861480047596 0.2701129395694775083801239366318869 0.0303844338043954495950328369820970 1.0308556095513133961921580019163497 GT 1 -1455108532620971634920617730698.2682487894912671678266678183315583 0.3510912637714571382878006720008766 0.0411652301251819283381026611808845 1.0420365131298897988643860924452834 GT 1 -4587840804932002952520.1320486614957964822714037753256262 0.8917094393662232620845525852161023 0.0310060809635083578107318646293532 1.0314969426151984710332207768131914 GT 1 -856472107197.1311776548285743877108299262017901 0.3439739774821684120275950149518129 0.0635845484455977632161106948753841 1.0656960424822967284128102860385741 GT 1 -305.8596030015508365693496081546602778 0.5979025606269050192172368847348002 0.0873242779560800767779427152339897 1.0913746399621918474270368633266297 GT 1 -10989567749.1645594511447021449272070712078698 0.9061243161566983264935329743121909 0.0835355136300383184407836891409899 1.0872319616403132361114564191611026 GT 1 -264096043108103326715799381667384962784.8328584675888656127061361814497802 0.1066871040499451117169769472874317 0.0158971520307897079139307889316794 1.0160248670978360693658167187911236 GT 1 -21602821916428857157307.7002153409624985994629887642769148 0.1359363248993049926538952801548634 0.0951254846090478095175774748046154 1.0999590019225572932427685920061005 GT 1 -1343069116477628405381765.0424648177206602431623742225668815 0.1492634033426662025078819157503982 0.0619380596600592091764908933917704 1.0639392976785436954155700549710429 GT 1 -224334886911344415.5659555896965053002689525605101860 0.7630115411113164310445611640816863 0.0669706921948356908971313901870959 1.0693186661896065873616435374009203 GT 1 -3012723760326590065236787820.3824231125792657086509581520342924 0.3640281162701878260634610439996849 0.0456146509627528602563301973297583 1.0466877592830987927871299308042607 GT 1 -822.3496449707801092741164325868764952 0.1096243738021784998989771832042472 0.0825120776742620491405294731910736 1.0861158628177234888279758910564814 GT 1 -903211020896670629633768762.3135491215843253265528684347118900 0.8555876488396432704618369802285220 0.0655926189940683477753750314726304 1.0678427677463809793966139056210375 GT 1 -1878471588106614916980466974537254096674777.9847793432904135305454346967536935 0.0729100048997968653399692074486429 0.0716795349622435708731808138223260 1.0743782771036911535632810371833944 GT 1 -15912005933782216668711.3703271602662960111430118054262976 2.2765440079474415414394615010920532 0.0675108843694385983408532900393906 1.0698977997783343937610305939700147 GT 1 -1190885238.8851479803175243678713333339217872 2.1593371195407707921376057730010099 0.0880518725228061198910761419468746 1.0921721682916419268223521621214812 GT 1 -1812603569485066038671201069093.7129156084166876296532175465337419 2.3334788709753871642501224714672318 0.0501888032359072058147722294965119 1.0514920543873340431932379373451107 GT 1 -347145103833.7613372318584754161652899027225273 0.2816075906484721275315929283961077 0.0369425880153677514018108039962650 1.0376422511161912802674273919927704 GT 1 -1023668790600468828683755.3282912353547753006292255395096199 0.1382950550541620380180361507496893 0.0175490448506384093916805367448659 1.0177048549077283334746591282386422 GT 1 -31248128055750044853667380159594886864271.4544381224088976032035099579772254 0.0017911939593145914852719821449995 0.0895320948121980240040447146129049 1.0937966300922084763229978945907577 GT 1 -183849285642339749333564948796592562691.0275196646061894600081458704001217 1.4752726976668492296895439354121766 0.0479024671034657261951108837994808 1.0490877989168983916292520458982034 GT 1 -3690681186659021853923557780505087872.6691107339919993134729372962681291 2.2033977251627629776845179079748805 0.0346095577821937141117920114932564 1.0352226561384943116667589036538377 GT 1 -87822295.6570027295812174221514631609270875 0.0307656731188119500865440636634349 0.0473778037735184451266590925130034 1.0485368902081840886746588353207948 GT 1 -97511.6965561182894561304615481772542509 0.3715114683193568466186628229445993 0.0059948173370909479092689160852083 1.0060128583925670048766747695318225 GT 1 -8532956717893164302983045444999544899828.2851821164086468588291061638256584 0.6807249962861673115431573083023126 0.0765938098599506065268795046086714 1.0796860652929378590800896772716553 GT 1 -88612125466915.2410728036987248943487922092797975 0.7644762163859254518177546346451388 0.0002593463022672639132435079442749 1.0002593799383352327035354479578643 GT 1 -205565324240656820983459689418753.9730479943030336595095198533042249 1.2320443632118937440492991335944396 0.0396027681615593923128171295895988 1.0404082969398584896224818105127395 GT 1 -13783119260598336919110539314.5015290220273763744729184654552931 0.0058664830739842031505507376917520 0.0912287907513920454351203931462060 1.0956619114811905789096335016747456 GT 1 -31594554421944428950001003149182909997446.7658721869666970465909064338583744 0.1641511974368196189937559471436147 0.0359466606285518717000322119584274 1.0366086546041285471234825116880516 GT 1 -37316823221198523246464032480127774876.1938671876787800145164347634788276 1.5935237636999439737245990301636202 0.0499483326438182227886193408451028 1.0512389091757353153161100025182075 GT 1 -3354.1497342478197381888437608118611882 0.2177348808991572455807793505599724 0.0875137023987523671373874284593232 1.0915822099656365105549016356285971 GT 1 -220162485825394366133712111786.6012345469213876644441656144406437 0.2477931400534970376033957052489371 0.0665678650847968118710571320234248 1.0688870182518851214242762899128828 GT 1 -2666836795791777.4815888159983382785720745517250166 0.9396480241694408477576289360552965 0.0820814558063915975737302995261741 1.0856466241137883851785923759085518 GT 1 -283528867.1193852593687983392194217122083789 0.3171117000927955039697669754335668 0.0989050942121986347814073889214745 1.1041446930832809231160090461852651 GT 1 -301841614375946981489173971813349394.5094122110154914897682033488746221 3.9130398392888991205797454729588998 0.0375683291372842175915261056812161 1.0382922066516643031966964567405244 LT 1 -60786.8556443698426464133253591766311869 0.1225582976840089874486205856251550 0.0162853796275222761692273582730247 1.0164194439404704547224082944204548 GT 1 -510400108419619108639902823586306226295.8065876103074379377410003163162752 0.2150213552550748763893774203626657 0.0778705168330643615162963148227828 1.0810696280116004042933068976926207 GT 1 -297871255037589319300752352065.6616651442864884017819992854760629 0.5894472482615071543843045434919653 0.0593133783952183326190962933721990 1.0611452218500389907260171043393702 GT 1 -26223173014394887925883593264801642.4589260149815477849852579689025956 0.4418729215774910712678568484655323 0.0260449042062226610399843149819647 1.0263900792835045364170075182525432 GT 1 -42.4966896507934812536740365906000307 0.2579628572249049011527943748963410 0.0633639076473143689926184019843949 1.0654604474715543066519461502035344 GT 1 -29267677231819803205255.4051972941535948659828846268427115 1.3636585889785707247381270648449894 0.0718489373222578950025238248972964 1.0745607763857490477103656289551788 GT 1 -610723285431510245.9362130586651460372708199382130853 1.7205942450770977401377210852488372 0.0791864783857837653368389669315607 1.0824977370447756268302995939686984 GT 1 -16860553.9355478333942678612054429991130832 0.8991383989693678809798841597592353 0.0816400441041221870903845840886880 1.0851658563971809793844497595307888 GT 1 -18077.6743647083432040651163763604221185 1.5468614713454546773984419014645286 0.0779912246657816678186629528766061 1.0812005377547644526880658927843503 GT 1 -1146158823428.3185621893440156876491144525057704 0.8422589596304588364940869101273063 0.0929475165160443985916045870170044 1.0975549656194394430687962932844172 GT 1 -7983254304848905870047721964232.1249581980055027685748994655178330 4.9145393182423447764277775068401719 0.0686073646367819658343470478592459 1.0710743555263000230853267409218463 LT 1 -30666663793497230404047.8735918537100748836973772459201691 0.1763942984356453915141027488010628 0.0191465657450006424007010213247081 1.0193322350078820511690513563134850 GT 1 -61113734229.8570298716227359948183041822674751 0.5849818518449712785544391961868986 0.0997862825701314327793622141405615 1.1051230800369293265319068619745134 GT 1 -853218007678414461483885252973.5205463554416247070783482038955732 0.0126696284658595549589482178959251 0.0379882247373473556280102806314398 1.0387285879935757980701096051524426 GT 1 -444617070845294380466102311003759932659.5922166053518386242735097689162587 0.1789013954921479749883291050401382 0.0543556086321342063011920698956648 1.0558886882462107738526523455583371 GT 1 -827757594034.9022177501138371441219986676356199 1.2885867389469413797354273883810600 0.0857672363373571409344426369025962 1.0896700751107950446708512606255661 GT 1 -24571005550458186399487804129348173998542.2131637832916761346123568572789353 0.9809891645899542108500915007379471 0.0579327579897610426260685597895637 1.0596786247768858417747365991289759 GT 1 -120050896326898195220.0612709777148873647334443782297877 1.9268605557617074230178348825272009 0.0465783513759889481214874050214013 1.0476980297102268079608672102843586 GT 1 -1022153264822608644562174470257.6115495367328121204152120285312226 0.1480561471523320503088202914892602 0.0982379694345934111895425320541227 1.1034046179341079840353111265218593 GT 1 -84481150018733538.1714926021815279483449594109766804 2.3243729077444794081497448812463444 0.0396332200853620838193545407837901 1.0404400050764321746517280097269511 GT 1 -2298003080552.6237145807815898086049356439382626 0.2518509776288341523533622354848650 0.0520926329149314712223879856878336 1.0534984955467299479691539990243067 GT 1 -40149317326950304194668512079.5468805617298799961827770338330388 0.0227763936982508192201390709696402 0.0330158100096789770431856291821512 1.0335731332071504981464209412040099 GT 1 -13240930868.5684605160400307420403484910729842 0.8364229949355901045229771586987187 0.0704324470026329402258941032299375 1.0730357977563872897402177800031319 GT 1 -4010.9981022680536078121476106030400978 1.0990089570592026868140897910470260 0.0165453532472960934141864238787363 1.0166837563467609868910467789092221 GT 1 -14646642053451221864090594160235200.5062011092013935593652621181324209 0.7149168783735081987539329882586523 0.0223743226207867484367714833981762 1.0226284251781433472006038734044601 GT 1 -10132334066856241651426736841215278552607457.3295963262836081287907770388840269 0.1063856222631903930603789614075893 0.0013957997756853274267858647687285 1.0013967748116011171708122282646988 GT 1 -6059927737047036056.3900176127351072240610348137244906 0.1049361891770790424331560387602982 0.0548171737314569419252879680984081 1.0563769032498721790653899347971776 GT 1 -300464129948539407809683481059029807649.5398551310870623394173003707055104 0.3997772418542297738147671911936176 0.0553678408411448100352398610908918 1.0569596768330209638691023343590472 GT 1 -40323925932533269.0112365958795746882340922861618534 0.2194792097085387670765190055283239 0.0782457137369874571359259445797920 1.0814765917425273456407206518745221 GT 1 -72368568708984417210350871530.8006638777792548721818064471518585 0.2176999502286227663245135682526947 0.0477868051958594904557955023072459 1.0489663251405172502829284322818412 GT 1 -65666114224.8288442451251152711424033621428248 2.1124039774390489486821971813169058 0.0325667722990843225708194984053545 1.0331088717560765037992317264073023 GT 1 -8922380325925409006720353106620931709628.2785264400122968872335935338240670 0.8760925758869399506551575398379129 0.0798963408870531489556097302136345 1.0832689423373157260545535235865370 GT 1 -10910674387597237300259380211785.5783339263011734776211977978204062 1.5431314539970068012020634325814430 0.0051017223392331013440225223289443 1.0051147805565123692817421802399585 GT 1 -1061271765757160977853299313.1216249926381565334471690160412353 0.2655787387048895150315702354436176 0.0676756829310868786046763203071435 1.0700745451397604225929766935250910 GT 1 -695802891260560866082734091.3919178933697681116871955783857153 0.4755367740642664112839227518266418 0.0903678602890300660344702341197185 1.0947150032749524559761622653702205 GT 1 -812752841546099286640864083442311.5595323552712117261603270091056653 0.7443852646497836478290186322816533 0.0320260919853796349890480860895435 1.0325501465991907795285560149129067 GT 1 -141503.3275586481117709124480924700592650 0.3692492758836444810207730331709730 0.0819332018622258421586786960747955 1.0854851261529171686912792881669594 GT 1 -14190251606237545112.8900775497735321676957305881703022 1.5285578293054250615362959972597462 0.0005747723365180812427306207737600 1.0005749375814593422161187232728360 GT 1 -55089869034528199873731755667632802705423.0394708804659591109101422144690737 0.1903771377032481489043124575272704 0.0173637810114193860584830638166785 1.0175162995680913645801502452934227 GT 1 -379720282051679932.0145652158663551060829712102644910 0.6433009736513553854121914742815729 0.0110615937595920441819941301393773 1.0111232281255171731298344745080982 GT 1 -1174255847884327644797935161705369014130.3591390700384585744953387621609547 1.3854883569399948170637518420502149 0.0345461521199258757970790900452948 1.0351569795196019458309320220072143 GT 1 -702736980850996552316159309742413057501158.3123240928648442298248129796117034 0.9372455194017341359768355927036428 0.0819299726935423540336004148267831 1.0854816088020980540049472982907495 GT 1 -7469965063316475.4046060607891012107085699892654863 2.0383729222705985781137858929832933 0.0614998994140749339391407390612598 1.0634723157782483686670545628833315 GT 1 -29095798086177425423.6548748936063044045516146747331736 0.2767494899496829528034247468593886 0.0698370000576600651092404217659114 1.0723954394374050093417696481579559 GT 1 -748808384674129457330259895290948638706.6488250470916744293496353230482805 0.2369961515683981510019105078626063 0.0223881210254206047220963965674724 1.0226425394780546246684752689002495 GT 1 -4368087758549824264894352593583692737980.2401815517027166088900846506561410 0.1891289793358947210343202618257271 0.0423728383368851855450026022692634 1.0432967608307805269669521430526519 GT 1 -4308927720893502294103817252734037468921.3120515450068599006850644942203796 1.2469529310583787890817179018326672 0.0766035835823683581797779386227879 1.0796966497727118620824549295001507 GT 1 -1473331848525985003479639186.4450902273808195761294554529168929 1.0447258906034302591602992020408964 0.0169778700938622542141918116724293 1.0171236464676862752248976042576857 GT 1 -1239748410732782209509943020.7011681501857724617304432824491537 1.3333170502772744051433089084181381 0.0686043935058307370789530066372878 1.0710711655437947988109683783980225 GT 1 -532.8712182438470751340444635084284661 0.1446098444999631758870917698266408 0.0687612428548751684064496270785539 1.0712395822255408762572366222507378 GT 1 -1696196.4194676766231456167065405647913840 0.2748121849616705739998765285441042 0.0067885116371663470879801651272720 1.0068116583964630916875755270344539 GT 1 -4976447192359890427468581334153209419.7095059493575333819344649373923696 0.8902823165993649503424690684616343 0.0846235208766498225433234204105943 1.0884198457361973384192301775275990 GT 1 -95072101886371261527735784741245869067.9153902332879575575427711137824081 0.5776719083012886214346957402189735 0.0493156407444319378123301296394528 1.0505731755715992306690830417435424 GT 1 -527502888681368574256905284523078961399.6968779089696283927285747270498767 2.1315741096531594292025473996499248 0.0146233590461342298992015324251221 1.0147313342944413295844206334874213 GT 1 -10397306838858470597146099.1146098621630603483130826224517651 1.2739544517064288714276488534640798 0.0110304679090867742296567609096575 1.0110917546176712023696772347280967 GT 1 -579637033737097966.9452179472240628857015919574134330 1.6577215844230955800962093361813533 0.0016478713614358210752337208552139 1.0016492305948808873681598138718951 GT 1 -61376061202.3766136325615337576993572323380918 0.1065175687765023828896885419536725 0.0217429052170358347734071331488092 1.0219827653925232125722191366957592 GT 1 -3069283031606706.0278171198976452389783581296640026 0.7847890213793128575751416311912880 0.0224983268867617167695666844958112 1.0227552754992848461859560083514216 GT 1 -4456376.6524271781111602049972340771861622 2.7604204490717451631623511767166968 0.0687222506932445286946432053991158 1.0737322689031545889231742129364421 LT 2 -4966.5255165197278030310565390715768577 0.2553057423985384126657858941386470 0.0461620411149274518899295623082137 1.0472614763789088289822078280723981 GT 1 -62834457287865789711266028284602548301.3424775240374988440855161238644723 1.0725461287653828390592110925549834 0.0161854753277628054212777826691116 1.0163178908833308006159670636230970 GT 1 -28741887569663540621507131.7660061618170676976221995978138231 0.6346733146239333777865937462176876 0.0757658951389663510891692883103121 1.0787898791915242403654934952869701 GT 1 -16892273056797868614923166626440353519.7368643282494607818751979502939280 1.0275668485753958166712827922449080 0.0552609716848119046984308731774936 1.0568465501407591275640574216700480 GT 1 -5085067163883710943860462040307.0545115478181531155605630360665239 1.0896002381522069264101709891520145 0.0939582247296440848030741374090794 1.0986698644322419991484614663779723 GT 1 -1259834673323756954146592965336.9468649822522905710041262358825703 1.0285195095847305655238882815984337 0.0671780975313803941012931919117599 1.0695409833135625954518936634444116 GT 1 -4536753464392679655160303170136.5828851210345574692831731041690704 2.0560431509355010965560326560813734 0.0022347710631595958262670403760752 1.0022372718905577960920678761798852 GT 1 -1257184221200779304642287879684.1443354194183532736563061467768105 0.9707704664649572307716590178803357 0.0663155209523262776439475196097789 1.0686167146917112510066815228298611 GT 1 -6202015980954719459502181351591752228584388.8737946206824588653009885885834683 0.5718198150784817373571591571749183 0.0616995776472999762883426869402170 1.0636851015607947303612037069344581 GT 1 -208263340656429050088470666555.4407583755831280842119660880432467 1.4687925309809420679873740247490403 0.0067312495810376751713849446521548 1.0067540066212008841796886241247355 GT 1 -368532941494032204498.6627972122320343204663394820491637 0.7283179183312723386834785131812178 0.0031784508057988511614326162288588 1.0031835128096272807118475966477840 GT 1 -265323374908111044833776173509265917664195.1815193119368045744118058187617552 2.2019762548389811034679201601124309 0.0851663649980425720627749307002168 1.0890130499078076459068833118203463 GT 1 -33496493.0267113152866843730924974778631481 1.3740984668472846470151742173549982 0.0225781914778436940574190194041137 1.0228369816037709379001624480204425 GT 1 -711563.8942970339015929706346495966383555 0.1108596001293223758471761623892813 0.0242029855794610578323516822922810 1.0245006912274021229927214261190918 GT 1 -6406723.0627541023426947398352103504605097 1.1156376505921464651437098756954580 0.0594238960021469430936485645060358 1.0612627148567856645228007067203541 GT 1 -170553481691016904476257156183.9601135900475476018454680627853544 0.3887440316946975420582082371222330 0.0372271898379861235149583204733519 1.0379378138521140510447348845271641 GT 1 -8344829599926842902413448.3318113424286269660258195456651197 1.5430462339495037381879602504981482 0.0891299321701687495571790122739388 1.0933550177670683771815273422477966 GT 1 -88826818372372755907720903352057955.7273049590393346570033027582080628 0.0861932564149396848618799370910610 0.0105603804633108940052817149933789 1.0106165369871463214168555185963551 GT 1 -231229859131.3990796092227215014829921223175775 0.5903883958779181992563900363505212 0.0123472663096818226644174814334758 1.0124241271384014473067282844534754 GT 1 -10247019242360718414407062412538183133172.9743182633282604538684580075824201 0.5548062436559471756122932684014254 0.0720155443679307519714632282755867 1.0747402967327030388770249152250078 GT 1 -20141068858716765685688383323009777274.9589489089667581830600813596209136 0.1579747224500422074389492330719767 0.0589459164215919960837990845156798 1.0607546664698157426979813840340365 GT 1 -34729122.4159168006004355684560550060994343 0.1226551130337843340658617443307196 0.0863743120962449061059831579851992 1.0903343232430166319172665608263675 GT 1 -1444502575802429119.7099717196373901245018635505769361 2.9577827515838116272824515652154178 0.0661513856777458778687108814273286 1.0684409370569419107466824744358218 LT 1 -795375480220369839040006019260759398866.4636759794392915253604563325386461 4.2064337803554818807861103264378223 0.0117671307356459215136421357142673 1.0118369113706073040625206024818889 GT 1 -28964559792503575242499843154963775985.9649878737770650390166884713454244 0.2229916225479273838214401813966135 0.0704121707516982086589296428752449 1.0730139854311463043927006869372945 GT 1 -1352188888552544226333.2092986825737630433091988246656287 0.1948597330535206280868309510670931 0.0420212104457345013932338339660076 1.0429296415963925904188877889835349 GT 1 -154694574758470256.4647942704091108471178449639463203 0.0173661025464549284918551595100858 0.0006753369343467740724510456045046 1.0006755650770554682225956699167309 GT 1 -10392060667679217666817274555956657.1726561955773832893078035251853117 0.4029819586806458224845681105728957 0.0535967618442788126711495481552280 1.0550865447729669592421068860301320 GT 1 -17604158438460677210.5508717734096276186716760994399530 0.2999842397976559065989553476898864 0.0368657390194725005845064085173978 1.0375624573999016388592765892983293 GT 1 -9564058329763885474187787296513723.7862370052013639490967804824162501 0.2711072529962719388151904995197566 0.0434253324924091077608521145302038 1.0443964298892335123160549983421721 GT 1 -196856570293556.2892227926321338787899163752843722 0.1748598894246511917350689114186024 0.0092416712507016142442367460523755 1.0092846404374157978332665855801421 GT 1 -76179929516518827673956270126.9462113922190474329667720264177498 2.5667997168193183191649034186079062 0.0339988758132359828291899586302992 1.0345902810158821205220754915418647 GT 1 -9187397415408.3305231383357739769326032318034466 1.9635303586178021831218345159467322 0.0691577828413951065852301829724500 1.0716654928040672150233175293336494 GT 1 -106318946937502520.7502250818370986413413991093538690 0.6589506557325257672550852497769454 0.0620144055752476305698970592484926 1.0640206878499714598629219613832956 GT 1 -1174732560863.1191149330584879876951434736749245 0.5255843227845795697963371646626261 0.0123084465620325096995176454154322 1.0123848228531613833714853946825717 GT 1 -260064890836894570295841968092619786.1255351624664784434344052220126965 0.1915862139880734382311966876760594 0.0547664763114105014416056234326437 1.0563232670018998800863159768449105 GT 1 -5986092119.3756143223906302296259519743911081 0.0380164490629724436376768985331209 0.0459264343115671057782883459429902 1.0470144976259389791770300143978232 GT 1 -1937141.5294487874318822931339936455098966 1.2296799279704240619838473298840031 0.0780333212885937901456790102917334 1.0812461963048574887950515864737019 GT 1 -5187177340323948612880.9324708361652322014925069486868450 1.3818740046203929101935566658464772 0.0612332168777825370770540515990870 1.0631881979041189614248618076055043 GT 1 -14123938387556180971593.3336402382490019284326027398851380 0.4324286766636305340482388673215724 0.0017287159943247454528924450801594 1.0017302119481206941558610371751594 GT 1 -4841016.0049865594423964845983278706229308 0.5960028197656578166713268555296026 0.0311476365933407554377581797596867 1.0316430384447456018078316590638333 GT 1 -23536187143.4943813318946132948814798657876866 0.3205031784489868267084543354111853 0.0543321054196519105899129434048586 1.0558638343787049936775049519251973 GT 1 -135654430389.8558672992145929986380047654133326 0.4037954490448338328129218532327898 0.0170629717045597093638338132205673 1.0172102216240373963297686275288435 GT 1 -295910098873408635223531493716.9258417613247883519524995837923567 0.7945311213187268116217782618363941 0.0186734969666291508459874155451546 1.0188500480498489123747921059152524 GT 1 -14.5063129272050630131814701697587904 1.5570093638515847462702797642644578 0.0738966992625893138984520078962708 1.0767694946859174421844126432968151 GT 1 -191927389887668524801363755725003048544483.4005795266273366070885594542991866 0.5073761629580575441601479838733839 0.0263293476711636601066930798740171 1.0266821718143591228871509539173445 GT 1 -90029537305505055.0782452463863507452760230981256300 0.2335976103350397787759131461873809 0.0368200205842160149258819948119276 1.0375149901338592470198053631276875 GT 1 -3309181653218.2015233581587567390605655525163779 1.0601608440197936998124328117548844 0.0610811421195907483651920180874802 1.0630262168406187951371231531127961 GT 1 -7763310898564852903334.7840571128805215905211192575337751 0.2111151160417946844581963744039179 0.0945129705393945381710091084020644 1.0992823259350815203001456721194553 GT 1 -2841433434883887084843.6150359656986454816001260489613428 0.8284377490746836706787612677111384 0.0422908514809278218602747956201806 1.0432111499063996905460730881854067 GT 1 -27744.9250645097616843097056478385616818 0.8943326827943415350127105881803323 0.0687375172620892579141208956342651 1.0712141050958841102013425234906236 GT 1 -1027.4530190469859033325321862056835176 0.7753133216963512286639903343771966 0.0729965292389365898578006326526763 1.0757979693444738889245233512920916 GT 1 -7520650722958.3573152176024461670819957136661351 1.9048646655484736888180095156510532 0.0794875930495341893304992058027346 1.0828247999093813871307248326420152 GT 1 -16050895435.0689819218016141577846415142154274 1.1548395138733655713137169927002101 0.0960244824491561569728002119872777 1.1009530013119553954122026229000366 GT 1 -7759751446812555860427344489659548285337948.3143770579068774577413921219144607 2.3247989280174887704282512729520918 0.0153063853841438440754329133694278 1.0154247373479066718771459528616241 GT 1 -369422262631867263078.8969566956173288963009156950573775 0.5326252375507328008286883781448383 0.0159080334873471032476453724644496 1.0160359243940726421637925529699836 GT 1 -30755856808960686206.3726382533548913891003482587510180 0.2608063949898928913743603884179552 0.0227556454817866682651295316921957 1.0230185512321666872428771694813586 GT 1 -26424980778426218620640346078.4396443852406608646039227931547436 0.7578218595832761044502340447463615 0.0526618986840045149723955429529791 1.0540992259488692403002754967716512 GT 1 -5778549052826605894865115469213008247954305.5073135124955135672541255583868007 2.8433119890682004934961533081238869 0.0625979993893838053603227512968161 1.0667324218402673300037829829136881 LT 2 -1.2351222779618076095157118734630488 3.3638505295574576066234978127731884 0.0785856832476428052764785896363445 1.0818454885585370801241230070486598 LT 1 -387.2747895242385530714992429643154906 0.0827927444062657942469371845580107 0.0557040815927490431984280473070644 1.0573156890699599964508214144916203 GT 1 -14024208775763357512638868770528.5859033250037829821627178620393353 0.5151404699064696744497442970030911 0.0460970154492667152978749009275661 1.0471933060480159889699250341542959 GT 1 -14747299021007362363029041016246.2319787145011136542683901838561081 3.3081642805186297646266773755625050 0.0030555561807679641586823271133893 1.0030602339237227383605774380532545 GT 1 -507313016075323093150739016617910679.1635291917230577824235491724287604 0.7647501334508126625244873871559459 0.0883948570507914111907401503005279 1.0925483399534103780046309625513706 GT 1 -169104.3205895942797312080927184439092187 0.7365887937634390696700632459820274 0.0187075487007333536022166311623539 1.0188847483507223424234748156636996 GT 1 -785162630277528331862926201314874.5273979980706175051858845883242700 0.3716856855539802664107434438618477 0.0992743529514718306406722383296982 1.1045545660241366841860809634206545 GT 1 -105742739850814410056378899.0244496143213364178813725376654061 0.1665442916091112180663001436400748 0.0876571185915209898673704606223312 1.0917393931088189605058806702612711 GT 1 -995274044.2801028820151721136787278265508891 0.1655582770279664736894005761740045 0.0054873046513152823788877072355766 1.0055024152103285693771391747185249 GT 1 -41448691565605096488356262854137683.4529181671326531572085686270633281 2.4928828047296683470777775562477453 0.0430670327257979249337462615247733 1.0440219346279804036207871732753877 GT 1 -1854933519547343061.8657023227547280007785960742924258 2.6017196301136155069504245893803421 0.0014785247555334092731045183283566 1.0014796188518250522066299666629361 GT 1 -12675306634915.6292632940278366312891218127729068 0.4104660151190605479019039528130206 0.0643445142369402396802921395435412 1.0665079410251773630530293584587277 GT 1 -529518195801112999360619.9387770811559583981850498103665100 0.7122801047001965637329878731522889 0.0017726468966390720658259454022225 1.0017742198943370055099435288953844 GT 1 -160.3894734732073423291927243078736656 5.2998080162994395624375513600174924 0.0543347772443634204318619620522484 1.0558666597135833624198537650446904 LT 1 -10570817318593696142661045527640498288849446.4086526920134029849650301085379390 0.7046578826655105626349120664500808 0.0153738519723296231681541257289695 1.0154932550051119287968884569751246 GT 1 -9232634943817903969398587869803590.9382948939632600475831278459372134 0.3902336923525073566321932810526755 0.0301039111790368645516027677699357 1.0305663381498354623393389930024270 GT 1 -772976290687479224469268302004736157976.4530754554203708652115292291411367 0.6422661532842659102882573363506896 0.0038264597578493595503334105126011 1.0038337993841609009545561231277424 GT 1 -380484.6602465547620514266812817699043235 2.3487626354236939342539667994912830 0.0381554704104587306117013507752867 1.0389024530302844836880216356082219 GT 1 -67877.7327557185017187808567433830381903 0.9968414118601101519194786951144081 0.0123175700820074725333954269233558 1.0123940601115761446841019306390501 GT 1 -5709649237.8730577850128092892502827332155561 0.4495949754157698055020310817275907 0.0305360555734639392721923452653757 1.0310119948553165854255330589930179 GT 1 -7745876.9631920270750425655216031256863295 1.5976414634336087255456897678009351 0.0087164561022329080811036364062582 1.0087546666078917368351551737084130 GT 1 -37031053044.6256472309118698685400420849796825 2.0715803768824614888977004945700680 0.0161809169233491384752618965618742 1.0163132574958996007209815978671768 GT 1 -3675351843274.5411724565435174605669879707768645 2.6549846165386475007793194367241127 0.0474320197587171219462179269368485 1.0485938041959664824891987125780833 GT 1 -988807434156326136456358.4679571420322407528900157378983807 0.1103988371562956351822611854728601 0.0389202536411228314999972459228914 1.0396978907711819441294632517959021 GT 1 -431493556849810221406634119774478.8463907854295700469898640694335614 0.0204144153913526475067351775641804 0.0930979423432967914055075814048540 1.0977208196407895282431133595106788 GT 1 -62647767.8651413754306158339486972965432074 1.4724917372486987574172351939427494 0.0175348201778017865288805258301851 1.0176903762512770979661645131039339 GT 1 -2892.2819637261610149510344057680697847 0.3929259374811838620286462777303874 0.0293447401785630317507531372097671 1.0297839099603057899640061265271973 GT 1 -335283665584840907727.7843530151870176642962856555920581 0.1305859714837691868251198475586083 0.0552243153638079536287424321134006 1.0568077504206433807019699955735637 GT 1 -395099969245108.5136528547102143052364842569719087 1.0619740451429670183733817706147452 0.0551043285001454011090152568221278 1.0566807581122356885755610399132073 GT 1 -7399994311389964679128.6738343828202261173044770828467447 0.1647526072197686917598588206909513 0.0216341548860214764193387219347502 1.0218716041371695669600351658626704 GT 1 -2676851919.5505460055445971565973919857920276 0.0278183618813376780448930657072306 0.0108063860821145159339195069869935 1.0108651991605211351354368926818455 GT 1 -73229884.6754789158749584020225050501143453 1.0540063208038374685743537121675946 0.0219150180774199310475278937970852 1.0221587191409780629439439624160826 GT 1 -176047969074776759686550.7287277500896768500429020238038183 2.2912769636176580381365212734190100 0.0565595049055257775045659532024491 1.0582219844247670932918538189267172 GT 1 -680529933049899059.9936641925674108669028470411969481 2.2428981063207447582492480365174943 0.0241703921530172073146831082555732 1.0244672899342705385641511868177808 GT 1 -3734273.2676323703322313863482679445404459 0.6378190279155188370846674080002714 0.0711100604565346726967657626231201 1.0737650191527861339286873462255806 GT 1 -147444386702030.4143134408348517625874534317120813 1.2133448281014140344170706262600998 0.0341599690660046805708923684627837 1.0347570579299312700282578064716215 GT 1 -229701.6004824450856932694424645122143154 3.5062974307050717195571396102000899 0.0015547450923093997128140808284317 1.0015559549626496882311670262996017 GT 1 -2450.4817844830584755205180103591584147 0.1482090089751490146807393189744874 0.0461258135866133948952975350556002 1.0472234963006169396644820297583539 GT 1 -2430314214407414451292198779166141824.8912304104003836480496156032465650 2.2826677302969532666355089140912746 0.0482688658891517741503478706647085 1.0494727062318886608373189709078870 GT 1 -1271994820920306203690453880839567244.7234355737503309489635700056099873 2.7256604791967640149135131760387130 0.0152511232440672699264375797564245 1.0153686177705814303327990273162449 GT 1 -737248206408371075740778718387423301400.8655819702596492221452377179675499 0.1693515665205912884051544715468802 0.0228749990041270841265139005645891 1.0231406914224557425422271970648424 GT 1 -30540598722081074995858084194592100.9623155812639194686481126760426758 0.1692966463735595703065985046838953 0.0450186769827204703635043563611945 1.0460634957426174786828065291736923 GT 1 -34005454446486271934467622.6113723843900816672727732631035104 0.4935734549836480028540753400207543 0.0997209285283740395830175261809286 1.1050504843095940688602311703298938 GT 1 -452805431469512853891446650544226087891856.8851374495484766104636285919679303 0.1069084745841456316916487908962586 0.0354022566961087862007111486063342 1.0360441108649397970967805764832166 GT 1 -1097712490.6296646325610276075341124087561646 0.8989200836950282387744160123022670 0.0831254789331983094859893010029828 1.0867846524388905025729749431721855 GT 1 -18211626.8281276118683536745905443089688619 0.0317084329919148423367036562136294 0.0127796929607955050993533798473019 1.0128620557030294732672722293109212 GT 1 -129154524787113032511247094088793936303.9735724711531575906775797553841530 0.6611101758112850118298958097704777 0.0188779995209656117494004736795166 1.0190584637659410194383249310714499 GT 1 -8265402267787037986317421010345613517630.9546717109003499325777008243134961 0.2254291276277378081035024784876524 0.0974336491508882171294272723361722 1.1025130725311021084279601727811885 GT 1 -1002618322568493957643252436381.0386936259846314280895287008993584 1.1081416486936689754912607107045904 0.0625902991804645248318354567886881 1.0646348449023848827451813925220447 GT 1 -11.9813457261226981460302343362216203 0.4797078108296919840325202800949228 0.0101808881048157726674421031206221 1.0102330678053573387935721960938795 GT 1 -4987876851176664097946506284142995.2611868529800856237853541435420915 2.3745835912881825368661033860295661 0.0228169593879722347565137418305788 1.0230812948330376681117408123841252 GT 1 -841434533334424647.8809607474613518192637895774746955 0.7274340280073658977759528045812651 0.0576623736943531505357672261641074 1.0593916542836445497786765981621016 GT 1 -49588247406391399997600.5428904724559712802571018349322302 0.2988496805753887563535910244263087 0.0845106945715967897685492282866012 1.0882965966087650090844896385942014 GT 1 -14921991120835487451487857318178.5295661093428694845155740697141018 0.2544415041403472509240252653011907 0.0652804798007622320234330497066376 1.0675087730925064749207002830720093 GT 1 -36977368434385074080338243.6599084534140221904548132347024089 0.4500320798309789211669455915413768 0.0911821269949042918184399004539372 1.0956105646097182374039325572898837 GT 1 -3424248693.2525086881108774700351422073907460 2.0253521392156782547522045285099777 0.0558617302454802112642926249925532 1.0574826513650568128598194764667788 GT 1 -2318957056220808332639.2031459310080232097218822509025051 1.3195300403761282601698804792254781 0.0010849313448452193804336852300869 1.0010855203088856353240147402168831 GT 1 -5295540.2342217512882802453015080743525864 0.4289368706432270672745113105996602 0.0233937039138783463796928876967134 1.0236716804307327268080811326364190 GT 1 -17759108794372916569768949420190170984308160.7403312140503614659208230099571739 1.6950909314626255869581137012728217 0.0325575973519703176573256375547950 1.0330993879970481066880872184354423 GT 1 -81468895278214698765197452136.1110683883187929825776997063318838 1.0615881811303929820401623158893556 0.0980641432254120591500888529323770 1.1032118736714023881553900845864723 GT 1 -15328230.2633082213554671772451850989704706 2.5649183149750851741565607831936117 0.0869941804392942208327857354736543 1.0951547095954306545606634385441078 LT 2 -1519836523811506352914962196681341759.7026050716929438703177945828385107 0.3293511205537510322448544325839224 0.0618230464103703480883771095117857 1.0638166978857294235405065798000016 GT 1 -4.1219489720358958133302441247587750 0.7847098803043765634903812839953438 0.0537654214544853518945685816824290 1.0552647718052757165338799046825755 GT 1 -2986129984529981985.1436710823012553415050550613011179 0.0622862787125217887935578284209406 0.0174448870744454317509362108571545 1.0175988422312457931317880832242624 GT 1 -20446254252.2605076052389548521339322945903804 0.2222022617234848638266119266199908 0.0141694556724432600359277052163766 1.0142708008861800665100001184333035 GT 1 -5985370508571.1145140362149103310555769645428966 1.3791324263837734682736878216566769 0.0036946488026322966644107050412691 1.0037014908754227051868667090442383 GT 1 -129615144695.0074663828897768433647296801526167 0.4377713719836581253616158013828307 0.0288958573163400734601140046820890 1.0293215634207292506960443116594946 GT 1 -3100.8976948905307539786274033657973328 0.0249288468600023868800536115634994 0.0625783227363731629208496187698671 1.0646220688797179593889039694663360 GT 1 -351.2878505225518895185157135086136782 1.2378370267483195488018825058829637 0.0259108413821332521759571999786904 1.0262524409069661726547533303799781 GT 1 -779113142215378047686355272300.2029743711391418790719809180741832 1.1264605127392687498513455707948017 0.0123678237055058111720732141595285 1.0124449417517474164960115466469370 GT 1 -1787717150546686802256680740804.4228745858570700187648232471314936 0.8347063822304767631058192931927202 0.0928807533042423657449358373064754 1.0974813637539472952402805697307838 GT 1 -200432473198872777817231.3375035741630699171222505487490162 0.9668438639026714692997013738658298 0.0466142014081051282002955775932604 1.0477356318626336995314369431973420 GT 1 -3120200810108114.1737710787051845640016154747062347 0.4126544866635626971459108432901311 0.0813358764162342479608597598247325 1.0848347037530047134814632779422343 GT 1 -26207480.0080842711974076718663501816243427 0.3734140232584388898735523024469637 0.0414745158623520338254544226912138 1.0423591293301635155624917474175375 GT 1 -1594528825560874798009529952884448133738.1538549438575729619521172505469507 0.7324375667167409534740270672659297 0.0533983785281555620884350804376244 1.0548769485684558533804057178951986 GT 1 -761532089967397883776795205.0678101990524724434194279817963554 0.5575722314841902406532350100937885 0.0745362836166319524941436856700947 1.0774603520770539676904216102850335 GT 1 -141056894813029516780696258683621422713.5482362343540584088718337681778191 0.9450329644916996775324486674874944 0.0396338016530822393845020035066454 1.0404406106449591251875633851591315 GT 1 -13528674604399780067497557506338673450.5148652079426685102174376834382317 0.1098830552952494707262489319484378 0.0126680070006893290840927060488307 1.0127489303528190944655713390581088 GT 1 -289064595670825918066416152950075465187.4389238152145290505358891364532402 0.1144061626149362203002778388669531 0.0488075969965524236489045364363633 1.0500389203874092167831283952464338 GT 1 -326826059887357189616121278824408816771992.6988002810809852830018017951996061 0.6486636954813832762187692778751849 0.0722633291396093955761598613124333 1.0750073463120970734537033158102092 GT 1 -116680.0394198241255892409739364271699903 1.7791011115787854976481611328892091 0.0549085856582521531088579728114128 1.0564736214137264955101945406864159 GT 1 -110134913018275011657408561997.3458451028590160897303194668644161 0.2095064224605658235110225747528855 0.0010823752415137193639211388696744 1.0010829614326194412127210374156796 GT 1 -60240261533485263960551744361548940.5206362821111512003778726160885976 0.2829326089522515187452864241871158 0.0421075530070155763186197074704742 1.0430197755883774953079106867140260 GT 1 -108664864828361175008420550235790766.1242687494776616690018167876926197 1.2888238214605166034746516474256790 0.0160187529013819599725083828032934 1.0161484399380939962487302621173474 GT 1 -1610207494433320896509077.2037576931225818324844353246069658 0.1835351523333981931398817766746897 0.0493861244443477696283212464868428 1.0506473182796264312230688289108045 GT 1 -2.3895821412734478667115124559813700 0.8071845574169089847745074122839754 0.0950977612682262575401575670999300 1.0999283646179720001646979927228136 GT 1 -29257665847047314490390635561507192372.1927534679373211812861741879878016 0.5518009580277382690022719474169085 0.0010788530969256371049424873263378 1.0010794354778346548366165801935488 GT 1 -9227427333748943577870820.6200188891285457458114440461236017 0.0570576367777873744688698394671546 0.0481595564663332121029854444313565 1.0493578595676261392273004001695573 GT 1 -2047985046069908545828336733977116549.6044590121867082034779900945728293 0.3549019995366225653293099723446718 0.0266996767557341540511250783114098 1.0270625874380974605186119504848602 GT 1 -671991501834503587107594463561504624890175.7107630598236078231157562224438010 0.1409552252374377859587734777946820 0.0244717973336251128196670839038498 1.0247762083513655070757813346862221 GT 1 -150593841754.9399087392992500883439396391067764 1.8865553791606744822702032873273691 0.0279313765161952627824213215891939 1.0283288767218011139142099716951324 GT 1 -1483.8158211102838363440969099741500037 0.9627322596472914138555587259777102 0.0558829808351319829398748159848530 1.0575051595394306605191725362127269 GT 1 -773765811855606661959455297484.7986779849207011226392870348978326 0.2078449249933319340679777747250944 0.0269539692438006034839359962741391 1.0273238898409207666140195358212509 GT 1 -238104278933838274987283965344189460444.8067770513825847608384819625443912 0.0976204105207188187945527079361676 0.0326884707766535717541275625328981 1.0332346748908767988774337573883215 GT 1 -275855634387730104041566.2776389390436635080077910481842161 1.8827022382235378933440828480058199 0.0988563694934607605519423597107872 1.1040906217516913427419880331751200 GT 1 -292045927932284459798380522952.0245705754074104880901525990739652 5.8648319385825957880781225896304598 0.0552052642853978592006949810357411 1.0567875859661138658256026344132829 LT 1 -2374746774666587798861686356596.0503397316063240817053280311454981 0.6587410708174452159771857009045332 0.0970809744780914565644071937359175 1.1021224023192046781633298440887835 GT 1 -1451484.2083355267790279592035665887721854 0.1370226225871694999318603926770236 0.0649038761432245225862095861909326 1.0671059487137208500531104615230039 GT 1 -92270294.2516846524014157723666470576391052 0.2456386367535641533081198726956249 0.0179262811451087180780664796935656 1.0180889033282941529542289144781859 GT 1 -4359755895.3802518799901811102898841251797101 0.1934918358588198941027873729920002 0.0614860410741898819790888302817269 1.0634575494105538094462524299102856 GT 1 -75247968700870078.5427860961583498409464168649389457 0.9959042076765941244717438727386929 0.0333420582661846797834679771515480 1.0339105775090189005549321918938060 GT 1 -14436184958557.3413136408723808333471439133891494 1.0983819624431495262852200870936131 0.0952450934463300050176978561826152 1.1000911934486298972026480722542901 GT 1 -7029410386495076084661309322455.6268178323681284775449384008123811 0.8421311363398878820274719951464869 0.0493292409881902038121462518997890 1.0505874814144455594062066851528326 GT 1 -483559080627635.2675592476322947202220211773304616 0.4822911690508177412664746734676040 0.0366272632751262909842642293337739 1.0373148842056715483861187960448688 GT 1 -936852610187882.1439863357056967742848539251905985 0.3456132276493021798203724231053445 0.0134084774851695020941278481317510 1.0134991828457787653769537087129594 GT 1 -135280.9026648725642957030009106652188699 0.1966886831792997373021861293265750 0.0702444474457582182316560523161642 1.0728335741009569170340726864637298 GT 1 -15753401993665282978.8600851919505941315680334680056588 0.6533633764154526622229286109917124 0.0547049177579509747088381271731249 1.0562581438894664878242022118875913 GT 1 -238803761890953386155495906045112156915.0105542609152532414827008718759261 0.8750579702606544583860402040901985 0.0881124049119033434030255923076257 1.0922385475037283191351736410503436 GT 1 -102378594074659390304709939985.5695882723337296528262812663709658 5.6565335761216920380433444995620438 0.0859117918892559209171814053353270 1.0898282044047557039735869622024086 LT 1 -39.2493810319487051635092345851698186 2.9762602779317974075552770437861472 0.0386157587968497971413693510724539 1.0393811151657200847182739113177917 GT 1 -552291.4562896447123691177079816025032687 0.7867638831507673437670401629571458 0.0496121979955581820616679098218912 1.0508851650474066081912170380597763 GT 1 -206038120981569332179434435.1191308577784490037675873509206404 0.0546594491718260262715675610475647 0.0471938793252769657056149536097994 1.0483438370797286171268377523741027 GT 1 -20696567034656353247613998255153738284.1549105238000898854825251372734536 0.7631591710640261602334153494129839 0.0197152681426702787325343100877379 1.0199122068053185158153129026806646 GT 1 -4.9502084102977447677813034384124141 0.5860886678447029615850606007580065 0.0134151865787476329331381369222638 1.0135059831438119098626619555177843 GT 1 -89.0127385706017279892891747358354372 0.7305755550178476702158912569774571 0.0758094784824184939958403204040213 1.0788370364765314272691232948774424 GT 1 -15035406.0894569972331337414651499199843700 0.5730066345720795931733790285058965 0.0769155187295485860427984222392887 1.0800345196640692350465347280068339 GT 1 -13308183599149952279028802009357012.7087261848721332988221683028860077 3.1740155584712568872876055925198218 0.0895330420856197341208407252416098 1.0937976705175865663527322113963785 LT 1 -331467961529208068.9246369198323068661776694712860271 0.1959369684116607938053208253284085 0.0936593910275287119527854296324679 1.0983400954966999134051646289846449 GT 1 -72330434707694139548503.6359316282660414417760477523394890 1.9472102444997692755027585040328907 0.0609933608806317333600603328865156 1.0629327293842067171359506963235394 GT 1 -2247391884207790.6785963228464344371721555057203679 1.1341270407300713385921584223365702 0.0726735810665289217996331490001070 1.0754496514130555279155515535264681 GT 1 -4946610722381587852257015477.0293647987756124902897722818997084 2.5433565472621572658016972606294975 0.0831371385940254540124650807134336 1.0905642609219847511813930863017123 LT 2 -4442583052191574775402.5183052408177376454966818013583120 1.7976771359329536190449089929232869 0.0909708160948448278376504364169013 1.0953780798138076409368589733378495 GT 1 -119271475306.2257189240660952888577613081267307 3.0896050904296622353106397477133966 0.0871741038840030117859972999671637 1.0912101108586052901042426226200640 LT 1 -73724684383649551402264072533340558369257.9349169219744498910545775650583813 3.5444081285840319786981021481375010 0.0339113242408837853555397991812467 1.0344996521306050739002642347931254 LT 1 -713.9216411236720023249947877279544349 0.8126733729606888922312790256114484 0.0897027813252654693881748174324580 1.0939841188696795128344533562172054 GT 1 -3074926657026518619674227102667680916351.9551241531170274555324313131822543 2.2428629213753041691548969805493070 0.0307894859233397004770755294082800 1.0312734418973486157998961899559718 GT 1 -5013001745166092710975479769576404512297275.5540526610653274084612009029338217 0.2230470222566481609451973755585638 0.0879738178033079041922337922162532 1.0920865807708836780934374784588972 GT 1 -4157223914243277232761.5133247699952664402946850447854746 0.6237668668980086341337115431932996 0.0644966987387532976965454771252950 1.0666706044006257236676200299911740 GT 1 -6712839887102991161296835828763181670.9745731216941858435104646425960406 0.2521097828030019093151555500204029 0.0163387001845627041414001933127585 1.0164736486875209221956423450011250 GT 1 -390112144650124418268903887583.2174928075786147842147061655138302 0.1127487528166612514860884455195903 0.0946678082458650697831348511816776 1.0994533399214959403078482817426452 GT 1 -10713724273415447980677361508091813387689.4611319461252659540800349412478383 1.0447784541965900864090452438509099 0.0063051185864717577676428047344519 1.0063250797960972456145980006688149 GT 1 -443421705168927884153891.9933013810762078283689318034842397 0.1836455752625787316678118311020164 0.0325801386665610010669198805802269 1.0331226881719611454636945701468626 GT 1 -1077461766578.4391881813262899549985646338279797 0.1277677170944660418111665762372864 0.0892002442377898364238126584583685 1.0934322129500213001042591844355515 GT 1 -117263472247564869796478691025361086.7598183513539481866292349241219029 2.5240210639101529570236862996468663 0.0898043892872046827523342144792923 1.0985227504274528024183134702752672 LT 2 -404274068969245436153.1309731553156483883181154459259599 0.4490923118621675397497326925220343 0.0564316860500204011859663296117543 1.0580865119721868772907282004116537 GT 1 -451.9710354494694392112556206166831256 0.3782208653656474883046623767750691 0.0125887841916404181554319858645260 1.0126686942909979255895389238227863 GT 1 -27848184.8734621396554189861866355631441276 0.5208772966805623881897252917172869 0.0604919985994810000190245898671206 1.0623989435065344532219800213748132 GT 1 -5579575277487596236587679112694.9049232878435620107902574733096886 1.7547048154066672566265328675280164 0.0858346806945275331433987889104589 1.0897438493701636571937640284243086 GT 1 -404543565.9891881446791329621505731686711748 1.4274863505927968281958114423971962 0.0991990996592020967249026067737154 1.1044710221069820281917680993578545 GT 1 -436402919218927908510.2788639604776050719100334926143588 0.1074243248878368559545775447650882 0.0553790161720254449102130364612374 1.0569715072549231315029479134732317 GT 1 -3927060731.2000560448818947065793862440985804 0.5658140104847145565166035319344057 0.0633215959942817119011111850020467 1.0654152744340081784625145770523769 GT 1 -12360536762156875841273111114455979389885889.9366100301260715111539696215962669 1.4394510212539788666861953603681234 0.0860450704246379381904478511885348 1.0899740199305171663759866715087555 GT 1 -31678960903186106188065488200.1310201160920251705317556905315213 1.3537653552400781613169842292543951 0.0598325847484078858165379748301042 1.0616973182447657586668941516226720 GT 1 -30070216436432777624580724434.7552680941149565392289281724829792 0.4987142406011309749188324320163068 0.0878508175288374745944962801792105 1.0919517250140971224960026312293088 GT 1 -12500371705680461462597993.1521187591549259421065609489285810 1.0584048166929333267290729733199194 0.0844848414381534259320723970662030 1.0882683573183061087388315821535994 GT 1 -406239872.8591484269307098863870954399161408 0.0699752386926111352920443703085699 0.0117595562221687723993963549141258 1.0118292466949173221783860837766867 GT 1 -3759994866202288182461209605.8143690994558916937086118963352952 2.2969800811099292199562856746320101 0.0241500049988537523404063438494659 1.0244463980274898916937921487499506 GT 1 -736887679.6083611986183982071722752463433768 1.2219076153341683055601667454875268 0.0635870616093741426837917788041339 1.0656987262986996341199710930519953 GT 1 -9462026211205436054.4591802300999447637994592050478840 0.4628605302394070315750667632720682 0.0385035799171360235042166647256729 1.0392644372229859647308963777428488 GT 1 -1672574692746575705623.6859103872792373858095354391334994 0.0254398020134285197616315424336517 0.0945141329049914547714675695386563 1.0992836096269568957132557288215936 GT 1 -135.9142917693490877149302557017133279 0.5819946432367340711261422825887107 0.0268453521926007151397933939645952 1.0272122702607726139311531886542146 GT 1 -7341613803815264971652775433603039570459.9834966694696803430744200407877093 0.3371387995848224823523584196225435 0.0697141439044752315520273827576208 1.0722633679182501569344664297173798 GT 1 -440676082552946545807105928.8333083473577474184428207770207428 0.6228418018027982889955054185897912 0.0140979939562625703281080726575653 1.0141983146697319760500543228318661 GT 1 -6536334.7322526343349928671480439079285859 0.1391597907044398788715881821131029 0.0736937511073700927311720132067523 1.0765503766662853785611581084509951 GT 1 -49946139578511480889624642617617320.6553692536764067323896892531339033 0.7966478918350697274453979474820087 0.0913180197340942723251978955605965 1.0957601027119619794557835129496611 GT 1 -978333.7796346357018743064145419647919454 0.0415099863562073306749173697079882 0.0070020809327245388421342915687961 1.0070267105410983422644610068581485 GT 1 -389946405.3058456370786387036600747993399759 1.1775170859308749691745475026509846 0.0610507942710332208117092663122451 1.0629938952423678092297687326100503 GT 1 -79502747361.1843759843399010668139400882551528 0.6465087906830399294938843997433801 0.0706858096858416205224127786728186 1.0733083946396363049495624074191715 GT 1 -11225999032068568509364150060553200926822.0341546929078618276009339014207673 0.1712798257857238601981063634195123 0.0183764509007194874972085747504492 1.0185473953482640142684870521162882 GT 1 -669092771696740845927.8466997038024324952924911124018679 1.0867414402622963125030279031287914 0.0227693789815294623270295529763691 1.0230326046223762487400294163205917 GT 1 -517109903015815.7235272560906761927983424642210947 1.5489340823621471869882308391343915 0.0190755697605163693854271733654703 1.0192598557790201110004232699633687 GT 1 -14927105919706414438209913886533751904631538.6252799811279377353175772970771285 0.7106071798963952011494688021328810 0.0248828660789426573265981189947364 1.0251976778452733642919155457711158 GT 1 -2156574990104543382274141150545746866.7644031075282759554448416913323368 1.0272762301184776797426523492844714 0.0852077535730809116800268363341621 1.0890582925724042752226720412472256 GT 1 -1557042635210045.6858727267549660195792013391703940 2.3405938103266310668053829016509837 0.0782683762170587092967803123945078 1.0815011782934186717993159992010954 GT 1 -350759329.2619632611319195894135554851074380 1.9311763546008242064969811191496006 0.0494952812170058117011225275990785 1.0507621525388915334602009325422295 GT 1 -28195482322767902475877400285767.0311823797120976760706696626643635 0.2589136273784181475879426585738241 0.0453787393294789275166372506459427 1.0464406028476258319474291507030979 GT 1 -70.2506209082665532684706386266936684 2.5997403618865565392435601436068647 0.0595152587482047493491739248916273 1.0613598544536895841632464803720582 GT 1 -7480030254184253.4596210307787885098313241963540895 0.4731188086477131170224768241516116 0.0700356604136499404654372031262443 1.0726090381008121329237252685873548 GT 1 -13902634229934370895.1524066500394377808216656274750970 1.7353476148767673031940547712737686 0.0318982342431012662468450626190996 1.0324180673171705974417611640163891 GT 1 -10367595776872801048573500846198638294824.3393019963113582204158965745290735 0.6668837979231018781918354046328981 0.0920665149324980932781192718659645 1.0965841573950183355483281705033241 GT 1 -217941809191290624901684706543137.2567699247439567304042944959341218 0.4414753250475345419574357004432027 0.0744073477408519834387245814749782 1.0773210414886000339275438887785024 GT 1 -175326168791420.4767559033269039914343105225234594 0.2642583781696088208497165836392833 0.0099281612303047653814117457448951 1.0099777740723375903800053209811005 GT 1 -3506742274301.6542325841568874311573254762173128 0.0658781160987011469399785015017510 0.0073834662726196130455386746579634 1.0074108589784229998955215461437296 GT 1 -1095617664649483318255831152481.4923185599920184808250171015351192 1.1346713319479802104596704166852607 0.0777019552833198550080581098077277 1.0808868487506476022481905043460323 GT 1 -630099760432477548106630464945253297355931.7866067705790183887019959347719692 0.6864510564852209866900653894034012 0.0653767679480033464260696336121708 1.0676117912759940265400319542823199 GT 1 -102714735071200699929597143277935631563.5218971848762836390158626002114755 2.0853568282003025867176496133782866 0.0501486019223533773401310418224779 1.0514497296990773067846402657178987 GT 1 -9596137752804.1739023131814654258223217590669555 2.0560136483679783744250290817220257 0.0410748159963520745011693091640498 1.0419422217367318708480427507845624 GT 1 -1261298502369809753877982635700055898142122.6752420927389076274135314944083338 0.7320654845730433003710545293099592 0.0216267179191355084208466730741773 1.0218640027489388677029337647435003 GT 1 -315566621687917977998045.1438588293464220722428648746258698 0.7486058164067228655109735140136006 0.0886015900612558548758433215630217 1.0927751447898827434475107443528531 GT 1 -277708579596443671597056346063325012389699.0068230738111355706101656436385158 0.4472267709561120201718362132004190 0.0956392394407833965454745675207047 1.1005269267827163351871202212438347 GT 1 -1235930.3063387975145936395405628236021970 0.6322721601525712192224135368791534 0.0848745286272250272557592876359262 1.0886940959243279009646829881572262 GT 1 -924390913083.5055464716282060524875902506592791 0.4113822364899340903584219058326571 0.0985148024679736376087132159112720 1.1037116562938420733508991852845095 GT 1 -1020363569102759635247231418372748501618504.9063318097928660330816903759046621 1.3945730211140381449198813590453208 0.0449544423256625628763826057724531 1.0459962352681901611393035927226765 GT 1 -38655875532773553191935215275532680119104.6118461322763397830396373882275167 0.8434243004983293526973979662152116 0.0699521014535592143540962488244026 1.0725191903477340993937705535131538 GT 1 -1906345347213034882.9382427941481414954826567603485803 0.4332511736640026611969633015158971 0.0581610766140931162023112918290541 1.0599210133094398660609812431262252 GT 1 -9813866420053984680182551500.3254985192979395436027796386481861 1.0565242175832791116161684028389609 0.0243477809547458011968330094378176 1.0246490890161504450072136381298006 GT 1 -82448867400897475252036616555071861413.2893262557470184321179073041573737 1.5667019025392694827715635514848983 0.0055853978189943071421742037746795 1.0056010544797281038219793159351943 GT 1 -830377834.8061013016079789149552284295602745 0.5337495928076465577265129474921538 0.0683875467042416930741063148941323 1.0708383734187915619508632583319359 GT 1 -2091887.8706115904087826075852768788423566 0.2300346907122791615217240594591906 0.0448902250674183188764330216444781 1.0459289975339889370760172072250485 GT 1 -101124504.8149002042978041353409882610299607 0.5024615964083643020512638252603906 0.0767221420140320809955420455964665 1.0798250518774792583248766871482816 GT 1 -349534497.0323112692717943246845537651969292 1.8263625417954984749286112829723343 0.0295941584512362931889274293843992 1.0300409016375589443294789286874755 GT 1 -7177.6120460538138591530021721259159274 0.6171036395084957250365155435107782 0.0217248146918573879071377229415236 1.0219642729553035005537861975661349 GT 1 -84726381512524038263490.5802864698014339588997996625749832 0.8569804970982793384463885076677761 0.0785399056541142783067342126079865 1.0817958079147967811615724279464474 GT 1 -5322924229098875015444.0841354775479958742076935228168351 0.8651085877709817907690991543187885 0.0822895025959007187444696130244370 1.0858733004036980981535121744342689 GT 1 -468933236724.8847537568722045861567931669207015 0.2653880420033084323567890952044621 0.0877146081481848615183946714537168 1.0918024081980022181654266446415498 GT 1 -716364516446698130028400210771477519096.4305163249677218448800354704367663 3.4510757799432106853263912582167702 0.0830193092942362144184619522347794 1.0866688639748949273714869388629308 LT 1 -31191596.9398147343981650384613837249883365 1.0311522359494778024094284960681994 0.0097012156856364525144581591692197 1.0097485790489249038088973680567335 GT 1 -86559114869882710765.8701456464395738050644436875559296 1.7386158164146842572696589253357051 0.0492887686655497494474948961456773 1.0505449099344882927445048177041861 GT 1 -90929677415606109955634509503861.1532246402825003119873377566376270 0.0195936717891171940081395994108932 0.0031840331499404573330432497112042 1.0031891129692317178782476340956360 GT 1 -1401.3555335014572945056302434972042695 0.2075254784101147901978686996323019 0.0516412589710578236497491554264843 1.0530224295025527598801240815874476 GT 1 -910374052275685020846422329423895545.4855989411723091220411426910363095 0.1006062616983086821687974421287030 0.0961711929675679886841728162066278 1.1011153092749786916379450305442184 GT 1 -9669260088246.0754079690381670548949492009682801 0.7673702864341518305744079523123259 0.0930138755638782611631729689337402 1.0976281272903914714822406767657329 GT 1 -48894363650635419676083583505676.9128607507286499088845882551415402 0.4693427053080777637787694489999085 0.0406900864416851523844647750956256 1.0415410930530636146775819552716829 GT 1 -1879270437869123592473670021132975833470.8052729448930301226596042493492299 0.0512707166644962274415766501103981 0.0370264926755655185955319842495664 1.0377293781289610899782897119292738 GT 1 -2004653.5197764382162207665832627676548598 0.0452932532299051588426877002102510 0.0538447886980281380056958807054600 1.0553486522447233609279727328120961 GT 1 -2014304727359732626097596363233748.3013260466983018633436090973619638 0.2622618515114327963338332288352382 0.0349936766190805964234304175272596 1.0356206249382787922070389215258740 GT 1 -1465777159824255371712052.1226005877428162922675453135029830 1.9743651217065440638401278740736697 0.0253492280960808464146466424034377 1.0256760548096685839480487993175306 GT 1 -8858304051.3594285215872884435722737860289820 1.1678452310963244045914772940846478 0.0413542875602399984812325993445388 1.0422337067257719222335927055124539 GT 1 -2046440727486990405734.1340727495454817193838880179693475 3.3413988633344799086957580565579932 0.0583547242452510684651353900078109 1.0601266403403739504204868224051158 LT 1 -23666732167111300913967722356240634130192.9511708602239928994731731253352888 1.3410466330841930115589807570633957 0.0845198111302634668348359512100427 1.0883065547852339698932615554540118 GT 1 -85031867394806039881088446720688758126132.3883311202342682855764349822696629 0.0074014138159087455733228421450605 0.0795536581065521249089560280618277 1.0828965723563064289224449003060333 GT 1 -1028558399366702288773897428881869.3175228488205306577871707324092440 1.3676814355370162643407266739948725 0.0855187959070815093841488041696486 1.0893983645686493966962826319494787 GT 1 -84806765760099.9156157948864477792388896503880122 0.9670878092028424872759367840482020 0.0048805570914919281079188332930213 1.0048925059040148225636909915319552 GT 1 -104260453984071941648.2311961542285403051189623930107921 0.6449501744912531728704126449726786 0.0716499094430716085964135483329174 1.0743463645825546425443863104225826 GT 1 -370398736803913040243386315971559966382.7409924679855396994952374566355322 0.5396043953821531916254209618390194 0.0885130627639688531548957926172964 1.0926780160291586483307744606264676 GT 1 -279313778812127.6816894229557706869643118151409778 2.8836583413559231934352876153997941 0.0015824461471595951057285363672275 1.0015836995375202739543008915125283 GT 1 -13581659191276.3653531166110176986642711440992557 1.9958124654520765816427219335855613 0.0220063514372757092011534449758318 1.0222521032805507055268910724771538 GT 1 -48384753207662194647840376130554071.2859593507996698836021904988616983 2.0357113658312666943091755491727204 0.0875602985314310880718234011326418 1.0916332762912985894099504942275609 GT 1 -140695775910.2095929643720253462483702526447951 0.0664246933786615724048786414314219 0.0460118525600543261285657297290104 1.0471040316781727866482954174855514 GT 1 -3518161160205940983313046025195962854364351.2240567023323126864908732654327797 0.2840436622652180460986092155662673 0.0276462943956344547318198550430713 1.0280356460606029266595983384432618 GT 1 -9849336006632674006.8491555780018935776508065384953454 2.8881066858896006421592220558411196 0.0627208440419676144570260371665996 1.0668719589090350365533483651765191 LT 2 -5322050128078.2826814311568690139090818787901100 0.4299382780945368628723792442001681 0.0480356857929827380725676537354198 1.0492277299700173222788542648577575 GT 1 -404366948014882518420098493522343312.3209286523622451170106616340650528 0.1973695188304375667251856127978760 0.0594088198423302246027604723533087 1.0612466863409338070194289455466792 GT 1 -157878444735565157961072381863.1903422387358150536796165808139395 2.8867204763069185539852545905833448 0.0053359587973026057996934347510350 1.0053502458716029372134815877482123 GT 1 -10972203839697117900978.2579864387005876499081840068013199 0.1640449641251705769184934557741255 0.0121003572532386182792294309129565 1.0121741625607230497237672572188418 GT 1 -511663072.2470116408990446401781776896129583 0.7910800172377410144855662526937880 0.0132317032571807329415926362556340 1.0133200221810722966488598119638683 GT 1 -30806.0087844444036982906315313280719568 0.0311790628068670148252882911614959 0.0317671545101099632877421503678508 1.0322826777698989822667977343427517 GT 1 -63734138020384754824950079873134438290.2693916005893800349904777282716123 1.5560992835988840285878499271727898 0.0852531931359127731269972852315857 1.0891079658086868975874555337398825 GT 1 -107.7710462772602641041080583004124128 1.0798790120100638033512427559522107 0.0452664798968590491738919898197860 1.0463230139805597086167529170460106 GT 1 -903340.5510298233572646640643726171946981 0.1781001161202173830423211306280330 0.0638797047615520002763348708791551 1.0660112902087064104544131453428582 GT 1 -159209916625820.2445008860459034419318021043772560 0.2331531525452783872975538435203468 0.0497965780972775732549960508837955 1.0510791889910916365755330738507147 GT 1 -103579056762343685664471946.9337516343945479511418811156170575 0.7329953288800162176713187227747978 0.0878129468540826503430927539711702 1.0919102078046914185373210331192354 GT 1 -96300778282738526765.8687296326794438385155478760860802 1.6913345256745222665936778607538928 0.0522033868563433923039183513619013 1.0536153428421864581172213108464942 GT 1 -12359552183202352.0023347431826357520345553703844562 0.3310472477254323278837805036720781 0.0717245433995401264195508784832536 1.0744267620074667239269485458460525 GT 1 -11218391008.5880461366882235621997399986212743 0.9645382645226979554571727173716721 0.0922939726452653035364222610247100 1.0968347112218115079152072216268897 GT 1 -8541481267239224.2355911906673599918077896311724513 0.4932311618228475283858182906824318 0.0245185698837009512743040381262242 1.0248241553725374000187108850126662 GT 1 -19771252007602743230303262695018208477969.5400107765009321941662298078134065 1.3914369348362646595051028942252300 0.0078688221775231344910211490624619 1.0078999447314928175435078122976114 GT 1 -2107164789720720795229647542023171232.6883571539990912096910197219890501 0.1756894556422671620609009956748150 0.0557932627310616222369320355082950 1.0574101354697157219062902353813876 GT 1 -2074275985415900115295118208595407725984.3740357978109101733477104567542243 0.1498079778113007168296620912038801 0.0463439375565750999254073808503722 1.0474521940851402865312264448974073 GT 1 -66388638848153897663948406652.1019883907958280437454350064450648 0.1030784099168107086256651937720907 0.0133714295192307729056000420330486 1.0134616320767848829216948734189005 GT 1 -31715348.2454834802071815726255065075595871 1.4756669041810451577102926656085066 0.0123346440574675496370745359830175 1.0124113471691593381504790676118333 GT 1 -6107551784161239228.6570780789785675955468973166970706 0.5920003322086361084051046258047385 0.0356646907667471335880680573185894 1.0363162136959969791787065142180386 GT 1 -121281070543435547912.8407658796261536585241359735127279 1.1725868220777119311353161397566874 0.0926089969859691683891593429485686 1.0971818269281304715618736924008837 GT 1 -1072333074785813190490347742022.9445902107437083298967661005475735 0.7778166411813777296606705093027264 0.0615608317736064081625292734108104 1.0635372431422450056821321173959713 GT 1 -4953.5411740202802769908409770110205640 0.2893802752669500585221968090222801 0.0837052045216058166464691558307767 1.0874171369590067565739530289321732 GT 1 -33602340579729026.2152197659536508488997402477355740 0.5311576702490687678795935908708161 0.0189457403960805036829439764061864 1.0191275104428577411351449627348058 GT 1 -229310883885653018276.8933988407986050709353193416742148 2.9237293042194350585977715968394324 0.0932262304683944349235676525727299 1.0978622871769263231361250567867750 LT 1 -35405225583230107575654998770.7084247805731609774197244402770842 0.0569463073298850841894565542767186 0.0787688440675318168799321672392444 1.0820442905779243267848951532678134 GT 1 -114331268806.2787676844883125832502437235522009 0.7481318672760255756658868852102301 0.0956972432557345609458259757201360 1.1005910667561454747633085746453243 GT 1 -68320168600068944784484025.2679116243760817442058409805729981 1.6753177234101569217836081578563996 0.0700651074350944475346730785343383 1.0726407032802346843546718241989595 GT 1 -4026709753486133958262162272768626864428405.4509465457417867911149359014383031 0.4452199515301943634040826013430633 0.0329716588597607911151109484991749 1.0335274756437012619058395651654205 GT 1 -6795377474004094157180765212.1103627538912950637454862885564143 0.2409396794875931085189466564744812 0.0411235482846379089504437798951019 1.0419930427261279433486403339014587 GT 1 -25233619914512061509464541636241981536.7017929167093638406130164103478826 0.9532996438427396541093308076006252 0.0213505438376680752455242544167188 1.0215817637356623415279676118757397 GT 1 -3805169713812742173619212960176346934.9863714812234128747592261359703483 0.9928632373344654260967871222049197 0.0261902462854157393504965609172121 1.0265393191463139774364849524722695 GT 1 -445088223341331.7938277442567346174393221902041112 0.7638607827989875591372403466188380 0.0093872623284148959538470996998116 1.0094316003687913026714495733667610 GT 1 -364521966304043427.6740594001146087650842074385990094 1.2093512045075762064056245661392006 0.0772566118562176372338990430871005 1.0804041024796757950372274537490900 GT 1 -712997149383145.5380540932573593919794861498084972 5.4834473942303799073294105203167046 0.0469932131804857530494398316054069 1.0481332538217984369087630101207782 LT 1 -840268782157319552767714948823200.8446102161579813348419783480163387 1.7452295737702267508090837537229966 0.0559790830500497480361231660248540 1.0576069552961522270355085869393543 GT 1 -7564188742178347338923748275214.0354195000480566725520956578823626 3.4753434594098685119773027538188951 0.0485208275279018144042472101687960 1.0497374816372661341602926088691034 LT 1 -141.6516077169407218577341127911362355 3.5231465107337036682101909483725310 0.0913323399380915700657405181171947 1.0957758621494194970279307547173890 LT 1 -23872148305778255034923907447.0989476581835640333594133251069480 0.1215857132564390117341669521423591 0.0397370134874498044218130904759364 1.0405480877522326667419270946198317 GT 1 -998096056552490348656053824635.8915535342863124608720967844952920 0.1249584413604762863406588766853527 0.0381921456433639280743596314590692 1.0389405838622536211104765136256862 GT 1 -7805195485.0906358081492866093983829256025178 0.5406439592026821439200649903098523 0.0458611390091399975775878337339029 1.0469460615319908640617006237098827 GT 1 -40423884891660897301.7825428776266676892517592297823281 0.7359116802953383315858123466620327 0.0556429965640010533271798952045218 1.0572510027233445756778365862908557 GT 1 -146552474412675.5663396077315034156625827725266821 0.0460106382230631628665238002663064 0.0054459831480921655440516971834041 1.0054608665755084275915818247330842 GT 1 -3259787848080231669417.1908958481234661921588579525197414 0.9574997889209505551615433565769527 0.0957268878795268341316951514920018 1.1006238490400466044246678725891331 GT 1 -162851.5067560181842088321814658199077529 0.4209134848104961347252258486067808 0.0189611121403680295898170099561207 1.0191431791630790128414525424439214 GT 1 -3094156771237554951606834348588890.9707750299800936856510574279824698 0.0663381171703036793274321013485687 0.0404050404845238945233766964537942 1.0412440007237275986413369918242992 GT 1 -23710136616973253584765949187187529556298.8868665602745846129033477787801271 1.3020593257086898445587995616652305 0.0156314440984504102935290177811003 1.0157549033752942461025596264922130 GT 1 -22634822392624.0006572805491157667406594489698747 2.1533557763894251082749700339162964 0.0483710040852617666615671347702996 1.0495800303211104509891384236795129 GT 1 -132724332701261169927869.7315738630753657421633684780052588 0.0191968231103980961962703762604191 0.0691108728940825970320024661086277 1.0716150989086569523371272551342518 GT 1 -202621990515091424518990.1085371416027077982651109616416277 1.8186786186807324421291149090121543 0.0661948944674179640157185354755447 1.0684875289805061340385566655578577 GT 1 -2721832455905116758604.3974290712503590416514522067385290 1.6328076286197493911315382292163902 0.0276086255258419919882821078949889 1.0279969069269416113712443053193578 GT 1 -46189477295870719.1330530869037452720335599613510514 3.2348536130267923735857204845068075 0.0424691239061578931110739238678034 1.0443389752129887640596772925471784 LT 2 -492236876740401594588430583005523636.5574918373562771660208516845883706 0.5939347465237960889771555265820937 0.0975876420135178013928902608652841 1.1026837037548937194045743601394296 GT 1 -12546483197600438795651665292457699254543696.8632997068112947045573108207127187 1.1534966353787256408536805041264862 0.0170019918292349016647033291841910 1.0171481851129490373334496622861885 GT 1 -8570191236722154477560590380.7800335035720536829639272537446171 0.6870988297954729538974995279927622 0.0777754866012899114439045192861950 1.0809665781285134253118313444585384 GT 1 -2999270657773.4716061108335870388715243728913675 1.1352451177266986031158078943958614 0.0344654721531305191208187295341144 1.0350734161301414249383984105107645 GT 1 -1544648661915505948379.1158007085796328268616617675058588 0.1047918359235054585949111293750735 0.0347390299891800061065834277829333 1.0353567789597973308978173580691651 GT 1 -202323699.5562884217223280425379143524640883 0.1708534791052240173908621533155458 0.0456383899435338461168602586071826 1.0467126331729238550481016233613870 GT 1 -231215811918561238979873774937642317401.5145141683833886310115933588616576 2.3864664038472215097077919442191667 0.0062372453228681590284817956887790 1.0062567782007349493319882363439435 GT 1 -86279931080650111400612.9564229553119686799068068278417330 0.4500836696177296757132887372050142 0.0485860394691728212919951499793705 1.0498060214203632814142088367710910 GT 1 -757429265513691182426892.1709223620084859125051580459701553 0.6696206837467431551420485342373774 0.0591381636081986458707705474709795 1.0609589765404574051385751997305594 GT 1 -41038640626472387857835641.2933706045014639967784833885211056 1.3744167403265796425651219152349812 0.0943050674521043063842215637800710 1.0990527486838010153210459499178619 GT 1 -22030258587769716392412985750768.1036299816526727173795388457637232 0.1341925927936534141925943011659678 0.0700741757820250839258343909117222 1.0726504549211493807528838814500165 GT 1 -5971799038201916364.1628688277522769997355919715609989 0.0609136894780898959821991254847239 0.0658072667709852203376492267709732 1.0680725095474499262352640908100666 GT 1 -24485823244034099816209627789423568.0890281255452380672148714182952378 1.0616453763221087286186582300757604 0.0609309333655719381884648714775884 1.0628662490874950027603095157742226 GT 1 -988352213536392352.9541980403519226758673406346995475 0.5176919499892694081779094263058160 0.0307389841715703914609657222336176 1.0312213371839167840173992301777320 GT 1 -422949807946248504.6374561030833169444516819152660604 1.1557444729702219756110923283834322 0.0817614342817508328697114276927412 1.0852980466133624960441290604848814 GT 1 -2714642521139781827865471168793.6267505550704744980496024693559653 0.9192679850760291742393609931307103 0.0742316063089836657019348251198606 1.0771311904243998760778302903881784 GT 1 -308848689283519357766053299937546275763.7161323210545665264448496031902220 1.0638186339944761809936936472413333 0.0610537369086907344417310920808291 1.0629970292162299056653492611376929 GT 1 -1915853531919127040473.8375061444394808621582141793885333 0.3308005808272256295662776847724952 0.0158593819469072448562277603937207 1.0159864876142618850552134903303551 GT 1 -1494110139632775243520305664955542.0675862241976404001495854549466967 1.5109519854668287136593591616867141 0.0938759791609309537183660925132420 1.0985790939641687399747441993609048 GT 1 -3645658089775579253911524727923964005.6125100877597463221099256046162517 0.0034423855590187468577876021182458 0.0957845192503280983773957880229090 1.1006875833329229663597272844993496 GT 1 -7.9384121003500520675050762993281223 1.6449522229502502192154215573191739 0.0686260910923049213956828357145841 1.0710944615944288298009568223393549 GT 1 -1260602454882806551968072091.5461007363810733607145293799404196 0.1359336632860289301461271031344261 0.0198977440014059799653451261133547 1.0200983699051483877675600765366046 GT 1 -1107336222956969697809519285052502.5148163206817006712724012623978034 1.3914162751708856025408647884916263 0.0476046220230920800183553807393872 1.0487750174083914512693148614947280 GT 1 -19247346985482812024073251.8516523798399969412751912190259015 0.1808741293032304772532205574194088 0.0144530677965397532067545510310619 1.0145585307901984588160836417719365 GT 1 -22212371263220.6869906960590058440242046179864327 2.2914209982906039115941664942366661 0.0922908307740138866493231714474384 1.0968312498965374464854293746301827 GT 1 -21087484865884441.5186589202580283142290156096999726 0.1697889456199384824027362244452498 0.0676681268042525144421472079327435 1.0700664405606172476348531711268932 GT 1 -9.9554392924880243975945772954019002 0.4081050420115193117394643831176517 0.0259891451373677848258591628412656 1.0263328307788771165466148904737507 GT 1 -4135330147719272940417917626493277.6807839120432464160855620995255378 0.7128629531609668500101334240178754 0.0450847073889187792960163501931306 1.0461326412719454030134204054310534 GT 1 -121657832.2851679910822852295979231195455769 3.0787610392420971304129430494308896 0.0162683464879150928179196487324150 1.0164021289674176166806935888298954 GT 1 -2531762118061845553930458131918941862.7475112333246321489881647932216162 0.0841796922084945343254800675481492 0.0137416289919668268567912488438877 1.0138369191439714186273379848072064 GT 1 -24575.3770230939263929576343222114131712 0.4989231898397896909423861714502636 0.0201442341536842462705281683985280 1.0203498958570621617557927763674880 GT 1 -161394432212579616738550760777.4796217027295010340841663886445863 0.0943108314755929694322381482799213 0.0434874616304969485606699265144813 1.0444613815944342154556951890302726 GT 1 -1139945939.8472106494575993990306875300630538 1.1378009706617757298566506765885909 0.0841644175502415885602621508754785 1.0879184255613729071476442722122949 GT 1 -43376794489293073684533151497668693575.9816363826708881072960888672993217 0.7269379331742303136431555195272791 0.0929042093781720598123995910994774 1.0975072218506431335770379998898231 GT 1 -1.2426245072422099888185608675337355 2.3257401969741516600634931258459151 0.0017250461841646450978671838696637 1.0017265357896720836954537901485027 GT 1 -4091673142956.6615209789168205648174842201139450 0.2058870975882674923862046599386622 0.0132311435092442000001975614920990 1.0133194549275644355700808348737162 GT 1 -271928381671.9666927697082561918283871621248283 2.8739272549560127710294414116569357 0.0711266569266771937623763723153900 1.0737828863055049510469993160841794 LT 1 -2165091951072581292607415746874488395.0873284510990918799632388849110756 1.2320483074987383114744526914754818 0.0365750661537175766009954391988202 1.0372607040265912919753056012834561 GT 1 -115246151708210.0961765916089414124280783580526999 0.0555113630116785814859734274778573 0.0446195625908702981985581610318293 1.0456456540479973726869021511009134 GT 1 -21559355285433.3521219350088449266843908925130270 0.9922048464419054163974305885407408 0.0923605367990067853244052945572329 1.0969080461920610955868575943649089 GT 1 -2399063244768315447687055263992914384775084.1906996205471620349971373747157044 1.7093125989351973898645225306213119 0.0330668399015267440599685015057798 1.0336259068087289393685504490612696 GT 1 -722.1743184935924147556880697813269631 0.3627502379707156674256080128083918 0.0835625261813918873880781004833753 1.0872614368135000720952582492491570 GT 1 -3592655377738492734312499173144926949.1369707277658372013327443986524222 1.9764337028207406512421117033118125 0.0272746827929410777156358555339593 1.0276535416804141577124762699637758 GT 1 -1172.4062995254482252401830242174301852 1.1270346544687833108615294992674929 0.0733055997802687133025744112367174 1.0761314331187324180619355035881126 GT 1 -16542653045721201322.5976830013575683049509127605841007 0.1666543275282948821399485103270256 0.0459231270093254330386304663520826 1.0470110311254213727257513616554457 GT 1 -1420415870.6469073650593587768914374050508207 0.0957788288025951829013993401040005 0.0991325504441811086592618785945554 1.1043971470066561852193409001812888 GT 1 -3574115895489990064307662211.2224875912781379868849453067440712 0.5278837218673041568858764442473596 0.0727164714255278406346450717771486 1.0754959041133219071991308970292934 GT 1 -9829728279661266326636011882131727.6064298868888384505303746572266071 1.8834087761920075021493003348361119 0.0097900001759351779068525588919404 1.0098382373135781698473331014426129 GT 1 -1378451919894624.6314338065543950011335161726943252 0.0637439757575983435417981370763962 0.0391812785008081311037712098082025 1.0399695230823114344719527866471418 GT 1 -1853027553318320179634295.2232296735740755143100731569042382 0.8496055512682893011828373329003636 0.0216327850510458500275011856062324 1.0218702040126420214819338857545928 GT 1 -100672001476501648.3242893510086369190997439365541337 4.1930490091184596537187337574629989 0.0458902023251910558579330900889702 1.0469765222540999290694170548969984 LT 1 -127318472252491025070541180398903.4239624631573872919376652601043849 2.4928473213977035292059738410270668 0.0110943328653675032153076521840496 1.0111563339767004591856988768604248 GT 1 -6032072217023669403496738667421212314119.8381872681163717538530392290940524 0.6596740449286202695834091640557362 0.0867955051888319215712190666668843 1.0907954422939667120112560063069354 GT 1 -42331514859816201277275374762344706783.0498327209525740557854118503118763 0.0136070783871520837743210059129953 0.0448515453579084785261760623995948 1.0458885006954816754133169427935583 GT 1 -35415030418678368511460527154.9032644143911036321904053851633528 0.0109622618175533167721746643415279 0.0128690640938490981472008631147392 1.0129525878547263611785762827108471 GT 1 -15518465550816801025819966724777.6620833947936626874433950577206370 0.2811576188106296182731465649797698 0.0189455542436156049203145661182654 1.0191273206955064448369784414434825 GT 1 -355731240389886415147244767532.3470322572460514442537475830578692 0.0049897808376113214642405737498542 0.0994972838383151958815791543433959 1.1048020980889597556063333119780190 GT 1 -129507227969903015954730994752487107.1621099377846974829261457213982504 0.5932596945136271400731698030321402 0.0687634722407995256089241917423112 1.0712419762287713382281745260842716 GT 1 -98319199157287433865471.9571289583439378324490855030675144 0.5227261546713003485848586873533511 0.0185946933683688706574672714798081 1.0187697481352965776410847456292805 GT 1 -143.0726458284936749651352660565094507 0.2871525237785813445136884574674280 0.0770577012490341476327528520838104 1.0801885613294507785786588233808485 GT 1 -437508561466792814785893456420626422.4185548820532426586235299822823864 1.2653619105413633722147137514263653 0.0118348735077191132029479477290712 1.0119054631220714986393579021881120 GT 1 -86138789935466557692.4210069112400193733644974894781847 1.6442881452547128480364915512059852 0.0797271236480857053329470662100585 1.0830850481871965276430335122134361 GT 1 -753.5915376169342709857940167286720610 1.3645772837012964008220532505256274 0.0711306208201092272322957232812857 1.0737871537354182081097750531416718 GT 1 -27042934608740983081139663283509298535.9062346707611102093690871510395698 1.5072466664821368384517673760678250 0.0213381629267511357353001310920609 1.0215691127986755752866397203331358 GT 1 -8762650141889.2918232024822192076526589300943186 0.5118306094059245828654215693921342 0.0759651975555354228270131996715448 1.0790055430665737894029295798986368 GT 1 -2505407110613156.6911454534484077279595223780446984 1.8086548577453457041965262161810947 0.0513481067561186763093049428315216 1.0527133619496604382890771421616219 GT 1 -6056934925026899258766356730375277685.6199911663218440617932270768302316 0.0153790873594083212346582569707377 0.0764680786584463364509093031765001 1.0795499143294411630303148759248888 GT 1 -76532132281127824496702149158964858.5178838658209176044824211708515969 0.0908200990078756937467623693863180 0.0696224158452751942803169275523053 1.0721647707649014452049486832967675 GT 1 -719.8232850513219861394019158756757988 0.5896879479054382312596964321520461 0.0757082706477528204182542744052131 1.0787275327637214380972915314638377 GT 1 -950265475841197353509857779252554876762.3064867317268395211395885375800505 2.1521530817252838798254194144870485 0.0965726905364380148485049266751966 1.1015596265710282454053588071142092 GT 1 -14788074460858204393729079.3724856814860067110211710677970080 0.0081277796578840474609913195905937 0.0400078769773926213867635808033021 1.0408301997387018229747345065915272 GT 1 -2419593672391882059556246241493265895.9175865726080681856838894476205135 0.6164578312457586017574637829288952 0.0118267333748947871338799065111835 1.0118972255319374202079822586238147 GT 1 -309749793621.4307072892824462379917889535045545 0.1791265920706733323158515450849150 0.0554252862483669699936706927920942 1.0570204911441094735898535808837388 GT 1 -329451834347383586118477166698.8903416217894831700790718096628540 1.1448860310098398436971938266887629 0.0702621217259489848629353366549285 1.0728525838806079546268837819621422 GT 1 -816443904.4146617428531917571612167804018396 0.5815019092877867731080600706487753 0.0690655205855049508507109261179667 1.0715663807503654954108586526156602 GT 1 -1297531781678969656829.8048587723343042087722882189905697 0.7743746249692533473592091114958832 0.0475504158310249884801417777049228 1.0487181033884486857332260881156703 GT 1 -3.7274765594487943801102318792629167 1.7713426460902247572197476229507613 0.0612108396468863906098270577876722 1.0631643613510990966345956824959177 GT 1 -37627172970166126597854735317155564.6939533048055111153136965443329593 0.3668882789245534475925306068242310 0.0237831342158918903242644354005987 1.0240705187021949224258191800073224 GT 1 -943335337201035305558.7192660249808506710344849275364525 0.5971696860637313977657676481625730 0.0505043777695498565091509931894906 1.0518243593455331557700783954071360 GT 1 -890740292568201264547029872.3799769648880581119041028139836444 0.5196087308913411007440467879817985 0.0433201366214664082023470827852026 1.0442864645193880440484472628313436 GT 1 -2339394463520820751.3870735689278460240629266754232244 0.0482564976613169456671416745738609 0.0110475225959224728004519565286454 1.0111089996725866645697242489727148 GT 1 -8.3043733162579124171982171332765830 0.6903653360606486194920612840292997 0.0649054331963910086522992266656442 1.0671076138414260217793324523126725 GT 1 -19429277384760377876.1747110785867140709665342824976532 0.0953747798156024184358417148616628 0.0440433718595639318301569343298058 1.0450427350138342199464147470425258 GT 1 -1546559613.7130440881968401686940277689185063 1.0043793255470988656182579009550428 0.0078229475830959025867809029886237 1.0078537073639948551423779331386183 GT 1 -56466399872327440548454965494758.3993576430280510569716436028444492 0.1458921693305302013423181673774048 0.0603288959733778492764192920208383 1.0622253542770228314702987656073794 GT 1 -25071707315367385682418046172371194208.1093847660172397438265652877938875 0.3389824957606194601109133930720496 0.0035949833316493398676086378230000 1.0036014608131785794014924304607688 GT 1 -2332210.4104790370011169854054768897821348 0.2402224054534162063822280533849919 0.0195841602240350853152920234722198 1.0197784710164607742938953670205158 GT 1 -11624488952270211250792095.7318154263535474924852428804030020 0.6626218529785709696281824799033165 0.0306609429329926152569355815910202 1.0311408241996132463016755023600714 GT 1 -9251250.9722057400030186559234248965514793 0.0651446318770639388093554265147997 0.0906866113645071516688216832395150 1.0950654822461723141793380505537280 GT 1 -231788755289.8490604804222115799576345410922805 0.3458371456435534051432669703023719 0.0775854663220517251425223451440000 1.0807605537789676862746799675830769 GT 1 -127900111908967484818008379352043197.6749457592525395623795148918867860 1.3522200079523260743649204205373037 0.0609837728464950656698353762729052 1.0629225186095575464151344299296837 GT 1 -1550898128287299630255715240573425894500583.3187458964836335091112486267346838 0.0268089827052962927219147300958269 0.0380477727519594753605570096785285 1.0387904893748422111882948609634857 GT 1 -131748801238094792516677429675.3922396462273541318950427192517491 0.4117577976692917143804716364170404 0.0930789344034941090957172910320630 1.0976998606624198114036997315117827 GT 1 -1745368506013194327.8509125379185261683333669008946540 3.8705560550025113101218067220994653 0.0783257548348428786832887412897263 1.0815634311252765217578202968150606 LT 1 -82901030.0076630556832444929748415210992385 1.2652495014474171336695884290818518 0.0294060911572825853975928276351637 1.0298471176924509605993024054358809 GT 1 -12706066323356742823069335.8908035671264985272994586069311982 0.3253285571557873200618516909016188 0.0946082408546163353297256915273495 1.0993875459154679853726050730391664 GT 1 -33811159658015468599022113500030424169047.3707967651560248419674158364268420 1.4960798852097240775964758519781418 0.0454363001539093394453120343893816 1.0465009016930894763674833401203464 GT 1 -673886414929.1984876401800719509572081594368128 0.5929759577490972101316779689097849 0.0901182387392192563663922320500862 1.0944406205936840414971322008617792 GT 1 -1711.3826324466714093618210195384263159 0.5807301283471840529891916921938087 0.0408470979781948757562173578046867 1.0417047777860541870864572185398847 GT 1 -4251898428294923180.9798045681328968591114157664892925 0.0445240051820390160984250898445279 0.0583864665691209886025139568272888 1.0601603503368100242062472051142684 GT 1 -3255934523479239312222683396311.7401352422298163344062058279141612 1.0609856030427241325395055182162827 0.0641860706223998349013235506009208 1.0663386156665718540698810707074826 GT 1 -57179843476933452.2408844380311757305769797280644341 0.9270324470039593395689694160293017 0.0517372560606882565537116771293865 1.0531236590736329553026303157170579 GT 1 -3819929414558323486442308109260048.7189741888974807828840854379021504 0.1722904092701449318737752892916750 0.0171794451479033590921323848725996 1.0173287239708969268297551739785002 GT 1 -617578366439109154784768048515.2054174883843884530638955585550396 1.2172825442353470577526460805801163 0.0938966380192305367008777528084113 1.0986018933749891774738039745856203 GT 1 -5867390308188121632684812268427839559.5920104925186645732377104374022263 2.4211574472674234978069202464045302 0.0949042113635017252919008205568643 1.1046859875505951697718453709792851 LT 2 -2059905036031465808184.6961554838990033328692797845809625 0.2409967564413032553195197783574011 0.0022229906348909277563716747332039 1.0022254651464631893626004788872118 GT 1 -69000051804949036.8946318997165714034828896720656844 1.9530276598424738219326724266175643 0.0573928364982099018544291222220596 1.0591056647953180460543686809219687 GT 1 -723649451303350199631278.6380095604314099145803035307561618 0.5302210806621744032776330990914540 0.0097865688549983339253078193483750 1.0098347720738893338176637342534083 GT 1 -856870156255662708381240802790010891492362.4332518821912547969494154033092367 0.0639226460878937114374385550544162 0.0524144016602199382310343234216856 1.0538380048503765714971143329326905 GT 1 -10.2134196729820477621949075772599626 5.7971638417587744486060413680753387 0.0360656271458427909769478695036665 1.0367320646411194747945555838471316 LT 1 -90787074124876583857685753.0512295726125027072817714113862444 0.1982739967579140671126271919754901 0.0740951830085319511730474133279765 1.0769838390452131867345960933312017 GT 1 -122408169830701766092252645101573.6444977262337537934605180653443361 4.3604278417239739970428567208821878 0.0317976620552743145470584171957866 1.0323141867462157259825629001921498 LT 1 -138854606929265589641.5887162184206336432190016047897484 0.1339524796210876012095125261214114 0.0484401416586545095798121774078949 1.0496526847749956175258831417561254 GT 1 -17647479033587024174427986.0879615735504405102697265259293346 0.4855698831392222924009445962229895 0.0593171187238818037516835405932413 1.0611491980266037203840693931973377 GT 1 -1421650.0422428936661926391940860395936565 0.7254164286135364950132322551736422 0.0591575641293502779236124242919162 1.0609795966999992585588447905553115 GT 1 -158980857165768664042218713726981394638573.3625816762426097367064082111477254 3.7430164930192278941293605816274399 0.0210329294615651157468292484863829 1.0212572728309751384538536881820709 GT 1 -30518727983537199.9111670572879814432124661107552454 1.2794432848865405338670518223012815 0.0612077928109249671121600568834745 1.0631611158609018706433580443798764 GT 1 -6718694061236891549433969.7259016501989256215115566577040475 0.0134294577485241494914276330016216 0.0082140187953268680929247380491015 1.0082479397268651355377431119061445 GT 1 -18577096051581926535514516.7359431583877768676408004147274093 0.4856442524206657042160101937338915 0.0103623186371038822539064628265311 1.0104163812612651567108871346547118 GT 1 -214362733189292615792133917853.3262952118337406680454238729652174 0.0758404516004774363473504826636449 0.0193354852506191792705297223001936 1.0195248608324875085664337493789982 GT 1 -130494574117301334000589260814093507.2700205157088421156699948578102262 0.0640408368292900325893905311887061 0.0741577185306728517924973895238928 1.0770513812297983872623974942233529 GT 1 -410393322471294820256508256075.6024091701204541021218423370426654 0.2717604438367286633837380120104620 0.0884634245343191363067467911275510 1.0926235589919167968914688051198447 GT 1 -83.1649380067138290166975369263533738 2.0291255159649437244805484749237643 0.0743664795143473801255274007332430 1.0772768888862730611090903819558766 GT 1 -35884201287603867290615141411.4250034050179641063478055316163158 1.5455086413492666705112399159923823 0.0385482273429256009211195313610926 1.0393108736542597411336201780639119 GT 1 -36174790579.5397447416769252436828224685365104 0.3665898818841242207669413548311456 0.0222989178285204694167750821046036 1.0225512976167929509130615501097743 GT 1 -54850095291.6214781331746882086398233335802267 0.2793966770393874617455700376843005 0.0949312750670922999454515787810261 1.0997443990130581982286670500049162 GT 1 -1490567023850663258792939036512.2267698045785336074413007363802271 0.1946807037123161062923949347507757 0.0863811946553571870416687579382834 1.0903418565086937148590011561608123 GT 1 -69867215059134953.4720987826475189077821438307341917 0.7206414558293833093097372003395481 0.0747955661011820369825726758447882 1.0777405562683964297295217434157138 GT 1 -61758183.0437540622850178444636325233317741 0.8310156386370651819634267962546308 0.0903903669041080552783179925686138 1.0947397461270742084230702601440536 GT 1 -21530990757.3967538723540129092808995824968569 0.4840097391279330753250202873086936 0.0721736284812563577917825290106534 1.0749106633577869890106186725499298 GT 1 -5915324584681349774549837098946355.0933973341841997174966710475034634 1.0815502523630995327084940311336315 0.0289715957359560365772804017280757 1.0293995585295320867988521877908447 GT 1 -199929142416763947678367906255.2972430901157552721977632005074750 0.0306138616137749649860107622509923 0.0327698243197019322672847845185747 1.0333187811604807095977236481247447 GT 1 -820873222445020209183.0218802648650817387540507909853045 0.4990923972896498682348353401658888 0.0256975526418094307955215132826948 1.0260335026396059471107175094650138 GT 1 -2142802279636373939688.1450502694272387256391649564495347 0.4049255601044437846903746968682026 0.0042276219767029133482615608022381 1.0042365836370852274982059675756970 GT 1 -83438054368026656113845134016625830.4583701660444503831624586797522197 1.1506467234457987570429801536783816 0.0786458515025294481738811454778817 1.0819107905821419471975039093313426 GT 1 -141865.9830433770489456456132015551796067 1.8113565059305178058130856864042277 0.0670688091896338831204644792449496 1.0694238313256975388553512710609695 GT 1 -3.9624648827823808938438969120578928 0.3406614146436479628297357015319271 0.0689404494539805582358057852946414 1.0714320396840677190658527070448967 GT 1 -370980129701.2007923450959737612681161995769595 2.9315796316777057049209039901787834 0.0342008589193093131987017054037027 1.0347993948776419466959477207294425 GT 1 -1959811315531033531199099730449035322745143.2255751031700159182793210092759546 1.1421020209285995227506830009905679 0.0724432809916760760696403986322765 1.0752013338006675259791970019216298 GT 1 -23483239419047167.3950889292922726797125853359832599 0.0775271177946138751336470724985864 0.0273116182205239333699184907497634 1.0276915134779876354429345089410033 GT 1 -78304284513009418236600664997154814151.2547557378722502129854833763586302 2.9518135955699325648920593321348013 0.0416520643783666658702081643094262 1.0425443773644804297103742628224109 GT 1 -233174902665568761045.2295323054145556403249499962530971 1.0555571982992746864966621047320259 0.0277157462810353780057022110930744 1.0281070751768530481488011715200210 GT 1 -217614879093546.4559496157471566427778244409952724 0.1020361512430914174184576635123826 0.0010291328861145315806242671250717 1.0010296628069670211896211067589475 GT 1 -82728595659.0981116028295472971217986299060922 4.0538136484738584329833436577091019 0.0973485505497429076040552228848772 1.1024187918285805258215320965694905 LT 1 -2239788109309069307328701687032780401.7212869581225189949177826814604245 0.9496898057244344560393427092113810 0.0265233688065100282715391543179354 1.0268814593953555928256630614359368 GT 1 -2088562133517.2050557125584743866231450129586731 1.9235068332391000116186884489535500 0.0599637528366785135200595302284792 1.0618368436494923380594982324811836 GT 1 -1479426823.4294238030215240696878845016552935 0.4198729119404651494565084572558346 0.0984948894385935774976926224195008 1.1036895674015263661717951135640022 GT 1 -596787229156440806706428007734185057316.3690768550378257344014627323821804 1.1181187964537744768621290489583547 0.0425537774592296819255789499290020 1.0434857239528993327903032336435148 GT 1 -10135676558115016603542317494450485.0812467802650185575739623030200673 2.8145552163978797077845855163571649 0.0542953257524349850179668099882472 1.0558249423403750161579913547105917 GT 1 -233302871296535.4768989451491364834076687848401495 0.6978501011868095766335255272736459 0.0694947407933777308133916878705728 1.0720275508936416537238615003967919 GT 1 -37964362132144903928923711783991251587.9545580832846232752169482472928360 0.1621302333801593299758234543893120 0.0192881961684108654995871622915748 1.0194766405274195960089765647903002 GT 1 -324233853282886132145.4906218868941301322146303339749232 1.8350387558867082087670059068886698 0.0334119842337215334203219069412056 1.0339829179862314019926142792944172 GT 1 -7109509918264056810427503793.8033753311988117302372756922006760 2.7245440057878180686508624805149499 0.0741097694209802115889050633221217 1.0799640615037276648708075993016791 LT 2 -196232030716.6493634318607023889311591213391310 0.4264334994941479695651838545364326 0.0675204318176450082869709843103471 1.0699080385006136050732141727782875 GT 1 -4028239716242943692296166.8768468626011297467680809003597562 0.1119013775837708458751517676509128 0.0031036155074286380737966125332803 1.0031084417104101776766809447142231 GT 1 -615018916081034522558671177.9151630525075820368080982261168413 1.2447046801722041279792300598862450 0.0465646943227011067743555204163011 1.0476837055594222407327894100153737 GT 1 -156.7612542892737050577133290397858755 0.1881185811067596524793628701087111 0.0881987246222058174487398828661617 1.0923332124564676367609930155817164 GT 1 -32360013564948994435438985241015.9140602215917891690701441239966186 2.3576877964092651850843094439990080 0.0104028030936521454587302616527142 1.0104572904600655651110053776269626 GT 1 -10755283704080839416403710730.8831899788138973162087667390120002 3.2541240017973381970465052759119957 0.0955339177837494100288367968312055 1.1004104737816193306007677499036753 LT 1 -172912465927955436845.0653589611514771781426571386726729 0.6868610356876879555826105061419843 0.0010620813154343889540282528551850 1.0010626457234615564751405654645934 GT 1 -3317298239880139799045419951.5124036260292040901509150128909068 0.0976748944917248095567955303754045 0.0797132470004686713265455139724574 1.0830699694607092074589113545885014 GT 1 -8614116701373348165751.8145825173344116499126153628134832 0.4443459201328102718549056822797078 0.0231106336104787931683864069189820 1.0233818714377380251731509189891301 GT 1 -51770384786485605746057606275628530883629.6533703181035894980415157795491615 0.5511852378330538645680863425540930 0.0823587386845590580270650090458472 1.0859487476179579798197172053970315 GT 1 -2003202704841885352149049263323395271120173.6170104175064634093904791801581292 0.5085314757489385084341370193208266 0.0812894526528937602838724157822983 1.0847841710401238433685998811892547 GT 1 -298338441.8718305240106099224187528847024440 0.2082512774326386031534014889582378 0.0009370100210650197196774034285692 1.0009374492893754506752385480813060 GT 1 -327442257714158559044366600.2360352730300287043673697584609073 0.1758979588134961132363060222157687 0.0249808435215083722406478046371965 1.0252981605070549969787415189605386 GT 1 -41028591226921912.5043811249527738877843322747169353 1.3300346607146734580741666903420363 0.0841536307277458878710135219600607 1.0879066475095275150906027428148483 GT 1 -30437905367440633.5273329444320461706218252411690174 2.3215964873459853431548639133652784 0.0718179500852181115196635129574130 1.0745273909584973780076923085234331 GT 1 -9.7389870238683264557416696071407453 0.0178178461090927040255666978807766 0.0851278316485977719450435106936011 1.0889709301862875243970866153518404 GT 1 -2981464907956433751051660670903862.1448481178932421642942360169111941 0.1430483611957234436955881565069887 0.0072480435560621386587106283799964 1.0072744382409750979812255090179736 GT 1 -6596019823089206431812594935274690026.1533618703255595435929157906659664 0.4276239384527738806101958315043168 0.0406237460274669967058430514608834 1.0414719411350821914107744180960156 GT 1 -999022397.6490605306391541207690617179722359 0.1166134001428210687613799805111586 0.0744964493542850833429215108372703 1.0774173105137993615999830465196405 GT 1 -4.0116637725799437845683381156631122 0.8557071478826729414306632827053009 0.0220858643756877566921004582688691 1.0223334086867653434026063175480339 GT 1 -32002061667635165.3642268135062765376424540872268318 0.3451568925428726909113270701978069 0.0969477496909236622829342299963037 1.1019748642169187960857084934646416 GT 1 -4900978146640519.2493012118786684710775239575742566 0.0864450178632165520395924649508753 0.0987699133796269975753508228015122 1.1039946859165440253706150318187084 GT 1 -188979097806352383.8137476581236980370781037757576800 0.6985093262807653608260658060818306 0.0605182136244313350846107925692254 1.0624268468247138066499425129139030 GT 1 -74278759460432248355.3378391898696935629701202854934367 1.7159803679285190001915436020696006 0.0950305678480017761742332810113970 1.0998541124802803346647675761921780 GT 1 -2701558292633.9539767068659519684493670837593559 12.1223600232519663035055547606277588 0.0714580570610379075508512439177530 1.0741397264159239495474021664122008 LT 1 -145102274724483686766304888696461.7938481960256805686888421878821307 1.0541159578832182517986334247390435 0.0755474739374442410761858451378736 1.0785535804063382160081110150375428 GT 1 -283657625695061203491721.7063410890226514832136456776255399 1.6812352851605108836677546644128978 0.0641620033212920675827750849404274 1.0663128979561642301562141641210470 GT 1 -75752937256.6020193447220384097368459180834753 0.1320193758408185204793420522232085 0.0395621837651237249350104167750554 1.0403660399053646485338124479410069 GT 1 -1386.5017981618022201470465796007718375 0.1671461510720033445391607885394642 0.0898422441449552482220205625477386 1.0941373364135505258076319463548699 GT 1 -8035011939309378947200.7474971902004767114392834554338939 0.9158154926619914381694843217409176 0.0673829398571088503551302119725184 1.0697606016775588334587723770934223 GT 1 -2972559.4349363844495379840141101369363315 2.0055216506885572989517807715464629 0.0096905270561854824668849129699244 1.0097377857692221619478530858477406 GT 1 -207297086773548.4102832968618415809191260056045741 1.2924705594691479909409306934373124 0.0442309807013566718995873076459389 1.0452390067358214444980891132600143 GT 1 -256090779306069693648925574.6013091049182673680186539086365355 0.0452838944845719426584392467790181 0.0108102385057868591512315801890360 1.0108690936773475774563283201553559 GT 1 -34107605193924096247363.7543972034523268445071643435065910 0.6210860093321082608982408933025439 0.0972996091415223349392033322246963 1.1023645736898888542930577910279484 GT 1 -985432.9963739831079955868576823108072150 2.4244802478811221191867356522118084 0.0316033160467753263875591787014922 1.0321134781772720743226039549140783 GT 1 -6755082716036405207946542530395.6502037142776658120479620509676929 1.7271118461620859849080827445001925 0.0317820154280972538923826725741834 1.0322980263837205974868258203450486 GT 1 -8.5272347255150580521214772496804159 0.1513135294512925096129460240796142 0.0826368088818969089003311225111298 1.0862518206694675296488911494300842 GT 1 -412136020370920879.0405035560878341680176293562378321 0.3140125666290745761154243600484499 0.0144432151303167505758949088633919 1.0145485336843762296986933470800688 GT 1 -6973651286403489247954397735.5625797748313823130494451364815930 0.3345760544185009849035745252477341 0.0923249765577223870633635837893933 1.0968688681415904007565643520158869 GT 1 -118411605.8071528677794411725377000069944258 2.5183260200115783362082331847596040 0.0318667155976410090863968983595848 1.0323855106857219014921164438375719 GT 1 -285370563756024907237.7410983471178788863515661717134829 0.1806657857077724092764037044862192 0.0648839916894687233939701408564228 1.0670846843304837407515668204380275 GT 1 -64258743070461911146601643103051.9889006771719249606454076385175583 0.0669122889152262393295545652215802 0.0977159524851804544948017849579277 1.1028258999397896626412538567749535 GT 1 -1193.5171416294437706084938109558071365 0.1024953240643167732607906386079994 0.0765034933070084255220670582392974 1.0795882620321932146761788497227180 GT 1 -60779140596579.0922026897890855210474513656603992 1.0213875896798586498306647174649279 0.0820413206115707242192859563958897 1.0856029009341424628418389353138992 GT 1 -91206154700724457757324412960436601344.1822046659870678377042288332891127 0.3034288811412769776271294678822879 0.0824425231694731046120310847514145 1.0860400559686349224877926426690309 GT 1 -90419054890456762708287255622912421330.8999579893835027634328207303786187 1.9397024804019143421200201293108511 0.0960700535471226673181850475642385 1.1010034144545488602095692524935205 GT 1 -861123643221.5739236143306186935276213483353718 0.2418694499209873571441460306325597 0.0727650579433257823766137476886266 1.0755483021008086780708612117500812 GT 1 -1328708818232736116499147245768.2903456334728793061693708659428240 0.8033781182483859864858043416830824 0.0100452969969234924155638590823620 1.0100960914426194057166309242165120 GT 1 -205675285616090805.0297392352973435822916955159122988 0.4012418432118413880561606584146290 0.0363211114952281546329203794609586 1.0369971430736067602576997891478373 GT 1 -238647783.9261859197149728437052569236121009 0.8980496525477359162275298436072448 0.0794546058348804543150202368721459 1.0827889648425656939705962052728262 GT 1 -16415304.1139233547350028781214827900070088 0.3321198350134328395794700270468755 0.0399981650444119922746040518669992 1.0408200831100110338984598817346112 GT 1 -126710391632699590822948038919596307953.9620322120047553469359351316653338 1.0749910119853796022539283954648105 0.0950229429136093355143847381799205 1.0998456868893163782884545554819773 GT 1 -49.7123283697306153477379360459546530 2.3481060421227135122826630138211006 0.0417421235047686705063682020735778 1.0426383550889545276840580362932999 GT 1 -107555362414517463037716461980166971951512.9787687099731452560131570920740726 0.4033253937054200331898666714487050 0.0344931318855136182885943714028342 1.0351020636075521519124798029201534 GT 1 -301429697316386958.5586738764683262469524709269873753 0.3389163380638954585210755937586271 0.0617022058473428365184582752826146 1.0636879025866293986269185680815416 GT 1 -9988970693740.4652061339209791373393774946799756 3.6934931834878585289522869779842816 0.0674710859065581708656604200384708 1.0698551208741606275341214166625702 LT 1 -257312851043338086867664.0536706790536066476551135637621329 3.3569190829632076521720194463884002 0.0031887151007209988755651851737036 1.0031938098861467950583083935241111 GT 1 -7133423628751706494769511102068.0558666974816494553621323845630254 1.4946723259489145281824066982718131 0.0353909672644620690660973414794143 1.0360324071618561673855007817382867 GT 1 -273933260073.6721069943047027928657836120614418 0.2306856521937083618032158053834772 0.0776005347243559120082419459227939 1.0807768897372952672688477455504589 GT 1 -13.0691377324493908058624133702784749 0.2452089476316567565008944313812377 0.0909243097342056344478619104090804 1.0953269206520782677374686524960432 GT 1 -85720360915661709820093551874460996.4738832847441459192528899181983678 2.0853925436439397898155740544030993 0.0809948207601449939983660073221688 1.0844635209079944520007945160398513 GT 1 -1804471460636787439433453651085333702851.7522817768616860407048735700396382 1.4785931432798106119301594390896279 0.0144829940240616586632232671344361 1.0145888963475449614808748997715043 GT 1 -779472285462857346.7985939541040761763695032864643240 0.0796142987132585196250669421569192 0.0711698087175825792573579847606577 1.0738293434393964595331726040574138 GT 1 -1108568327738516534352737383986875851773120.6250255609737831065413195087662315 2.2865857749799081444689111250013832 0.0815293117040236495282086365565787 1.0850452874154048742886888306406254 GT 1 -119975928858511.3777606761975956795985730768591592 0.4320642849793422492239228701309152 0.0804410145093227310457997581830400 1.0838610874676008638914949098090817 GT 1 -5179626481490449284417175305.7608760684720618248454137456788163 0.7260270693482201581778143546460100 0.0344054002703474668782662975559940 1.0350112018722291993172182627605472 GT 1 -478066975781138200687240374141441839725.4997112121454506751718984054281753 1.3381736909282315635451735626277893 0.0648143426331790169052951769547025 1.0670102053759920029854148117310092 GT 1 -14085314480708212896064920744404035549001.6495646149123100703698728761697567 0.5777474778558315645969172483807749 0.0210679713932915186527528808025553 1.0212930682728806427094853140776986 GT 1 -16475649.5340071929020019432693666192583325 1.2496946557853114814028174566233885 0.0261182058512011846769735050452872 1.0264653439480065910099716276104988 GT 1 -8646273.0890439551593237521752397297658035 0.6707935372549340788337371010739146 0.0601310477874611832952859315538812 1.0620148259767712236342593236184999 GT 1 -4036.3114893006400724475262691631041356 2.2158914376526334370107424698310576 0.0638513361570318918459674288248531 1.0659809862244581240457090681698381 GT 1 -26148860.7323534112641764449238594824252064 2.1460267708296397450362071889206606 0.0288592573226746927786038515157666 1.0292838750798350894871642110656176 GT 1 -14196974908313.5009554001787249627924218518516341 1.1159946550528039284410331741161182 0.0082161236487305908906785019634202 1.0082500620150171818537606765370874 GT 1 -17233331649403639534466.8615664897105473209099164718506716 0.8118017331883414742889431701783404 0.0628790011943161611462604200195161 1.0649428708164891725390415838070498 GT 1 -155570266492311.6966122059371817291041289838725379 0.0644704669889019258626738619239223 0.0592121283562273225229192254046633 1.0610375934559767032234768606495167 GT 1 -6395206412674.8139364956631543515354607649335657 1.7190865299209943129109342023192894 0.0742007295699624425247721728744457 1.0770978384280106513389089982775615 GT 1 -2240.1110752905162224061993705237616484 0.7148707022832217053831632952829296 0.0779786801927030579583562817751890 1.0811869322576395907687586143111203 GT 1 -286988109058153781.3347173536612396617477656732221707 0.3509732529241400565943261727097600 0.0141225720551002096686215541233685 1.0142232445360397853178246353853275 GT 1 -354.3559098911385809333748550853459215 0.9527658032689261474543816103612311 0.0809334235017792262523137589806483 1.0843967147474656986192588930761960 GT 1 -4548730535888.8219895227018070231419714664001531 1.9107226469911960081215221984297933 0.0404368043649691389984544050074385 1.0412771026130772586670772250709628 GT 1 -9548783.4602042242779618935733369781683906 0.0731315266378782271387082895573139 0.0733423767402280495190543062516484 1.0761711200853725902808866019238360 GT 1 -385688464095190096438086.5233177586979795672487816944852167 2.7172488563912418274320038560133716 0.0515811009766588242887106407887763 1.0529589977189331342510795220545633 GT 1 -9147123686100027270818872344585847645490241.5884662406488476734333828354303563 0.9052826362701859636166619571062640 0.0581854832109271048278598977366359 1.0599469274147787836475548119317023 GT 1 -145303492325892.7945819336227770173820154116306533 0.1701450007258200209793395959697320 0.0855340711721504583456801785541070 1.0894150684577824959609879262419410 GT 1 -1203.3428068640459154313946129615126975 0.2483925634417316127918982063073551 0.0560914989477029402614155464488162 1.0577260443857274150038913787148524 GT 1 -6594392620436752746489496614317680.5287046948297900928353086042476077 0.1368289537070641023944850772668473 0.0771387766620105169377387520076184 1.0802764096969051370595661248281608 GT 1 -865295857786610585.5965153911968515498816433955533302 0.1054690706488503173762278025459729 0.0834642226755664455680503411695373 1.0871541755582052792499706337150082 GT 1 -6916545077294966244244284414.7517017482693316448664579908613883 0.2824979731155463253312667446057903 0.0224324522446648284773041116772480 1.0226878869470856032435517972726043 GT 1 -245.8774054887623987163169557046494597 1.0568054583092763333230642145388268 0.0676229320320424589882808512764633 1.0700179667519479971966315264396068 GT 1 -21.3257992727545497703484451572641800 3.1864569407187760861358582891519126 0.0492196212924631991684726359532002 1.0504721803229014148309371679223595 LT 1 -55.6669041152539040616923045552197480 1.4456850310161494505121245803472621 0.0478289289164744161885994592519365 1.0490105638179484157155480380244240 GT 1 -2153410113408258640506169460517048.4287004989749879446851320713059126 0.5000503413313183064836290015072351 0.0320534281863087325536021056826030 1.0325783876361711194851139572144415 GT 1 -17145536011577309.4781095442007675027263997884632593 3.0880597799786758088017162471546717 0.0231552179809274836715097941594402 1.0234275115986501387442578248951322 GT 1 -1573377354840855862254122264055574028.7932210796225777382618520205307642 0.9092206601777706190037213192349401 0.0392340725377785177310580084321944 1.0400244715198025484222470294501472 GT 1 -430787122.7801486090372498308999717061928469 0.3104266083738113842751789263119074 0.0377676023896682458369058928520529 1.0384992799340726796782776115241432 GT 1 -39573401841071500889395498580976737961.3010396118118568472490674580151346 0.1197380285087512158402073550500532 0.0248587765003026921999130795901714 1.0251729738581841367105281365858015 GT 1 -175483753450884421366763.0572900421099341609660843687263472 0.7601330670955189657048794293781704 0.0865197909594299803018569443906311 1.0904935683789836366172575803138414 GT 1 -1749802257141852.7014882190297411199295671586407775 0.3212696849426607244761548019609486 0.0694950863311090311735768091503686 1.0720279222379108432484677732055983 GT 1 -853169956155677.3473925685952690718763531783438181 0.0893462617923789409438498625957723 0.0278395645687576917811931504771479 1.0282344311140834181456462508934588 GT 1 -176469.7763291279508706383318187834220419 0.0883463078814708001309420557046001 0.0276002621320556335232565703218517 1.0279883061124548174377227127308918 GT 1 -2032534659585.5458005198221117011547038771789476 0.1783622943423570341873670363750008 0.0991170779787070433952938090744814 1.1043799720797423062338030642056511 GT 1 -203152.5184611261040954418669481283147320 1.9056871003288813382752495832413797 0.0215637007910952302300109447317963 1.0217995947159196022988155891396206 GT 1 -6269982976122855.8046608965080284725714914913506326 0.2839037362750424798080386184474549 0.0651998134307371184372934723377626 1.0674224767354441495242905060915861 GT 1 -27877896678778897461085984609941793952033.7921854867977530411989235464127780 0.6942163617197774619627845130885892 0.0542308634872301085223965936704182 1.0557567814545481898457618630283898 GT 1 -3310151720177551722619531.8464073418611188814544470594614580 0.3402723386682990646552370657683999 0.0824711200478605819407863772090032 1.0860712227617224468905308556218037 GT 1 -222058.5118005948879408466125361592794303 1.7070455047513736672157395919577301 0.0575732281644375762972202239502194 1.0592970583436215240595513408228319 GT 1 -483989488440886998.2748521927669478324232333547290736 0.6682356880490350214937133290079957 0.0461033819918443681969977559882109 1.0471999802737251643270390079578180 GT 1 -53191579080125138723082752.1336484940156466312947351568381673 0.0346643172022767905257573437353193 0.0373124437595088054411294530047795 1.0380263681771637858228994870604788 GT 1 -29361973944911934927027298126572738983.6248500937916216689553002509688214 1.0548564234916707845367351134624201 0.0212629095492494718650856597879372 1.0214922215973158896121237610545043 GT 1 -29381615.1010416351659514178179668312959005 0.2558672141106286994956385760820607 0.0422476786763205652279015394632970 1.0431660716782084321393107649037443 GT 1 -5658371178729126962215061760079.7039124192097053534236747528619069 0.6886182058969811024008174102168984 0.0857931274239125432686876748358757 1.0896983955278807223629823000874563 GT 1 -204473936195825128691097187450935471166.3173472031178989280794249643156364 1.0036459696926376523102422101525521 0.0036204422415012368989043571415465 1.0036270119040290336517106000656612 GT 1 -14467417513637464296442520.3318327908713923626045891452498687 0.3147008662986173548159976213384263 0.0733866515159545398138492692307892 1.0762189002280607946233527200336519 GT 1 -12154543901364714716352886357871921844.7538037510745918137787509848642161 1.2238962010109633586998214557910793 0.0640798609215581501641448811201326 1.0662251276420222027665236835753894 GT 1 -38432843560640158052129692096220690673453.6952626479475561992320232459601489 0.0295124707784983356104920200152832 0.0034694184139808140332142021788282 1.0034754508026748199676013196716152 GT 1 -666190414045752136297821595828713370497971.7019952820014136916162265417141059 0.9630542269826795449328946514729815 0.0864499733060371324462254064736531 1.0904171409044281722672638704334963 GT 1 -37569329394011668108306.0642143592364348451135264716614768 2.7948827350923150934927449377427848 0.0948364442625304543892677148728233 1.0996396270391394976109564623747090 LT 1 -159154196048297.7264331157607507384555315713011813 0.0302772805214302035225466683727473 0.0149080767831719841815550746269714 1.0150203191016047298860165960205910 GT 1 -26592642920843294822672001354700185793502.2807318122619826891885466690507247 3.7518942495660594771869126005149133 0.0319605676037426590971207843672104 1.0324824565886993344792087434729809 LT 1 -9600196789013261781886871497351890182.5706108625822071160328367016834675 3.5355843529107412293912099529168783 0.0528068657083231776365951895908771 1.0542522633038380507362952425741883 LT 1 -15096080814856880967.2381039049843371635671065900520131 0.3142534398032826283982169652152906 0.0751744451731303648973923645068450 1.0781501486312815503537724668247180 GT 1 -1740978216887063139946293813287.3386477507853803286776338471025916 1.4183721226998727980236172860405308 0.0186712656222146565634782610560633 1.0188477742481419569518791516552058 GT 1 -2475630155448172669652258322804257454431.8988302495813154812698148146731690 2.6535412733588520935947914574983807 0.0068403044497691533220294432817408 1.0068638065679971892638909007379823 GT 1 -833239619219303564982059783204599447528174.8525012776966272095850439600385702 1.3478013264491338402759944182764475 0.0906095189255719322445892137173439 1.0949807049052699838769553835543623 GT 1 -2229127.7147710625365796735490182098857982 0.1788633060238756362478902020133414 0.0596384347039959024075542213157804 1.0614908337426813919400459875880343 GT 1 -1109606149728403091605.0836386377954437246708741202826814 0.1449728915939150151909908948066536 0.0531987240319462669449992868801083 1.0546660536794501923691980469158228 GT 1 -9270326180881848657945270559406622144992559.8183145767760390567188366297697655 0.0668097765541061611224031851277240 0.0274535189669405196316837257018461 1.0278374092249547867016184681757617 GT 1 -3139164116554420284.8057089323907353690442202719636306 0.3655092003101427599493674806446622 0.0407548603923355948228662957446546 1.0416086167350847943876895579040351 GT 1 -163170822617.9787718963045074226618419559148076 0.2380217070524032073391139346507491 0.0395390335757904031542371231460270 1.0403419364080399264473557670107153 GT 1 -26047308796816405498606229361303089.9959318733944870935540897930072112 0.1823445177430474781355253140082867 0.0969168708031633721059950084698902 1.1019406708910876548929552779948072 GT 1 -141533333395134493003242285090287994.7833079611312346418690514736739486 0.4001885889377840710101733276861358 0.0237971265145905138386666874755788 1.0240848519917201534851711535896301 GT 1 -82252486858323216192.4712257349722996634750761818547874 0.8335414059133803041687775726982898 0.0109401041102804001592418898236093 1.0110003871207159224252043203609108 GT 1 -91847090307720852482953308547145889607.2813847254588860721798481746511787 0.6613676454100211523170778699273780 0.0805369167279612281857959603100267 1.0839653844419052058288054290205146 GT 1 -74605913688165007160.5716815054050338710239556228206426 0.3766283387793060631539986309987137 0.0088478321013690765136912928778008 1.0088872065924639911305413168886742 GT 1 -14334061017319281016442587.3119587158135245265342355705276009 3.5518097149689143308192979273508243 0.0080014502883814741990823824444943 1.0080336336825884774078059542544273 GT 1 -62231373261515836052311.7917069998813575260811164700607111 0.8907350282525847126948555538760741 0.0055197197768668249055489047266376 1.0055350097201659842522799509163808 GT 1 -33993429170509008696602679756531750.3725664846668774206363399284180884 0.1753485138930687246141073426582014 0.0744491519820203245546472064241052 1.0773662073454546638619777605168499 GT 1 -26554254827714786748732.6165903180323758584748626382239113 1.0082104304613813806461790053808194 0.0770891059385431869363425657435094 1.0802225886178985883652799713208288 GT 1 -63968206419.7446477786016492454640899648126898 0.7828901255219196517571589426487057 0.0917652454300799066168451177916467 1.0962523935213789003434997484901204 GT 1 -168419.1330451717531980721923282567520929 1.3656745874073487858737617878334938 0.0584539493074914096563566867376323 1.0602320200338110035532228460173490 GT 1 -32891720491518947981809631344.1129791974804214788894159637384149 0.8826702036610648340753589598205691 0.0808795443800273382417282887372503 1.0843380927238893148403832221878768 GT 1 -3700757211483521096807.8439054751563831535055420864254883 0.7001822406920732899553062279429599 0.0236274581772986358958837687451962 1.0239110627117889178654916590093642 GT 1 -274560691949533.3802305036699819030816791263251434 2.8567259450064595871027861558571980 0.0602906132137484517933295817707471 1.0641180776531809528823118942869955 LT 2 -9752.9332695375970552180922351950860031 1.1402161215019190838392081807002453 0.0344308647296165185967218662965288 1.0350375740112757386303283019719959 GT 1 -279319209441785186939657524.8465914369758334345359041701815289 0.3343037177441947705047377964920697 0.0466755807421365521461290818041295 1.0478000143088785671011305194126380 GT 1 -1.4121832754727908763694297443841219 0.8548225390368002839764333152982706 0.0969677922225083297657420672835799 1.1019970586735465044158363561782311 GT 1 -8525907931284007691437.1421712080594994827222696175531163 0.1586270035285453353024727699575738 0.0219892217535353176462949326754183 1.0222345883061405780877942867130837 GT 1 -178290098486476892733.8169023586083405836883682639707091 1.1185858117582131051857281109671596 0.0548074991831223844004724086108790 1.0563666676652281938932815818643843 GT 1 -126490408916737668984381670928246166696402.6393488852208477308768966216881630 1.4050818097846087317591595095737552 0.0412006423691707421202832463902637 1.0420734463941500688480828534418109 GT 1 -3043409321381568279584694841803298591222.6382573492073280058824970003363247 0.8388342320912818472606532255947006 0.0054748813947342959284148895430931 1.0054899234854412962014929335479086 GT 1 -11049.0545681085304491067419612327632503 0.4600811794782324604318885186918095 0.0451345088910978178186855168702468 1.0461847954276630250103988415265393 GT 1 -2369221130421800.1137666709710860047533689906730945 0.1618093376951339715203295678021669 0.0934301708713015769641043207206573 1.0980872201724354744903224106163860 GT 1 -25996933268741118358926584889937035297858.6501704073487740523983391862364207 1.4836153753903693558528562188692429 0.0616302902230886457092588742785751 1.0636112607476900994089112164919352 GT 1 -3538577357787208045402563772103515799994.6048886176098037147240505778112473 0.0232654733295025413307688396743705 0.0524508343695730129554708393122033 1.0538764535243708560344133157526013 GT 1 -30630884048.3668665838239003917047124267134168 1.0443496875568834220140664259524464 0.0098739824377760750053148407355525 1.0099230534873526441832571400306513 GT 1 -14758585005972168427330.3483951604417164284116781808441153 0.5076522423293646276595236346753216 0.0768516975098194516901428971677373 1.0799653829654731273435515387391903 GT 1 -35338409379478614660529447351548527037.6762755430171987239765893592384738 1.8122649443773973398023999419971555 0.0150874112407125532791273424870974 1.0152023841242437440466081289443602 GT 1 -18254209755790390999610396971200.0684473662844525805963228812238908 3.0763529995995314241939988352681559 0.0651176997521450291002655461331105 1.0673346397051207052472699814612487 LT 1 -15258765155297634809663822227384904920.8374710847273155057484491187512108 1.2429521758384741013825604083127277 0.0625967542541981113032121163241186 1.0646417310013372477714457173647363 GT 1 -144969083852575847579073190920733801363.7979453654942682581280523675536816 0.0004198844908185301002529414192174 0.0899653538812144137043235057517334 1.0942726075379804366565888905596451 GT 1 -5398355.0455809219682540484694121672700557 0.0204373178592850284678507333709698 0.0397070679917166203475801461882265 1.0405169035566080227065245174938306 GT 1 -260610990285483940840620248886795.7085662955701376874158459797218901 3.7262695789783622288199476312788162 0.0036731462779662822898801616411146 1.0036799088447662060435352303922083 GT 1 -18787.9001624554052048851997333541520555 3.2456939051459206667786744903070065 0.0333390829695090114758526051393138 1.0339074995928622533919355500423073 GT 1 -1430659725442.1994181410851209503199911641030379 0.0862292467378014591471731401291007 0.0558470895315602900669290340654317 1.0574671445257795294941974319079678 GT 1 -587824.3469883456913327444624148037192362 0.7508512517184770998271038604145947 0.0898956552915921704670718691625581 1.0941960215299804265892566762055910 GT 1 -67925008799052827036.4532084868256462968561957632934576 0.1326878672532875150488814262665882 0.0421218493650185530238350725586657 1.0430347005047750465498239113992285 GT 1 -18591000309612146422325406642309634980387572.9765666716231663577812148796669391 3.8315380753701384759670754467757907 0.0202971813166016462395224845910234 1.0205059995473886196112373288806359 GT 1 -29765266553.4568166851371975897488303758575441 1.5355068995999134303402613582473949 0.0512504410894361004771465984172147 1.0526104151888071306199479300117746 GT 1 -141203850602946062852464567548667034353274.0120145235947786894088480924538471 0.1814913733946377804128193576698559 0.0769307762268717157383438204748977 1.0800510486207663881717975682677248 GT 1 -323675407545926126339.4173751680476758971879206980216849 0.1105630443000298629384887235484653 0.0596015497258232220758142689720971 1.0614516102608208133622650602560454 GT 1 -425162293439453176136580047384704109590.8289036708728404566794210592135964 2.9072118986175443967031189370719409 0.0760634349413260785762878775336680 1.0791118622310486433126018559338845 LT 1 -1931368658519322996919523442036018.2876504763600528714017229335477661 0.6001932798782414123561812925495760 0.0097661675181324809605179973481660 1.0098141693168846228061343022970767 GT 1 -14181316801972.3415390635343099244699924933328626 0.0118914772261283333742685433429636 0.0980895074735523933409354419121583 1.1032399960756768255235303723741827 GT 1 -5449535033370120.7131255751321488602842966152718910 0.8788896491243505936726350633590931 0.0838803379988038401861035898184830 1.0876082874675791153912889102958282 GT 1 -56955146043003613687824143822921.4529768955208030348676539852594106 0.2009444469272509584042628709949044 0.0032960307471869307006966921938610 1.0033014746219405935427671419699814 GT 1 -281766744224625636272146543408.8706337952612342861997730773636963 0.6020798454599281908223793268782076 0.0114675616147513251025597394778600 1.0115338211433267765017304079600456 GT 1 -249553761679.7905438772065856728063066536215149 0.3786379921907381167651405729011087 0.0518102960734140055964032350353594 1.0532006871191756274133400205322342 GT 1 -859930039641975083565238230264210.9098652876202432436128555633723159 0.1718503732828663975282543718738560 0.0189724444915826055175641505316636 1.0191547306079885430419240725473834 GT 1 -605775713476165960756998039968.8058832151868775636310930212362026 0.2031876121139892938815236066911438 0.0246695798616852976676536787328561 1.0249789729458120962610048755543038 GT 1 -14005292142.9893624086708217806281576680117658 3.1977033809448953164148574488990120 0.0143571769972387143608692263575364 1.0144612384832316471239775215921991 GT 1 -1008291.8042942503682327213079038659585387 0.9725602933346256346732099931851262 0.0971533850332839448431914594447933 1.1022026016026639715995036241638174 GT 1 -679423840.5591937190874879294078763017468389 1.7023869968651865549050853729092811 0.0311358846675789974960956507503925 1.0316309087798634108942420379348728 GT 1 -1942317098995.3177161426876945449218044347383404 2.1864171927950550123935669372441074 0.0482671518032710307123220929849193 1.0494709052144838913412272786390000 GT 1 -1500735929.8561148718060789474806377336015052 0.7385418060869604942234109168789528 0.0385469941610077542243023996041216 1.0393095910302508587422693878142674 GT 1 -36774089583085806489.0847229708871355498046169832174947 1.5960530791253690850908311475713293 0.0965828056757788675989070642832863 1.1015708230401430513804413560588065 GT 1 -655103172465274353544896698567.8827141450954504067729158283571622 2.5274641566855381995156756086550561 0.0851315337743100680651235748005599 1.0929332500470200029667194714631320 LT 2 -109613732569681515167917582571851870977.8277134536982159073387489255653415 0.1381786697976089587712607457091889 0.0616326520844596358852474335311386 1.0636137777346716379494146439686907 GT 1 -26276397256803792070778530084656554534715.3741498436315718393644920059793406 1.6743984678741671852078397081701413 0.0348399270062406414006540040226044 1.0354613126495000426034989990617563 GT 1 -335492400969344184143562912251.5675176553324036842123264828442372 3.4365573251229870945982771884047244 0.0684996978669284781124863485787642 1.0709587645894230266105641528774090 LT 1 -12990.1228154522757152425083431116958365 0.2856503501907064948585058725571360 0.0694938134859836979880451852479038 1.0720265543308358040034761960428085 GT 1 -55287477691396498584531116530345773790045.2863650496419060253094262151945434 1.2371825458793045633925267900007875 0.0480029811316684579649238203188711 1.0491933756365029216612957750461619 GT 1 -1257302620447301076691176510214.5342038591775256583164667733578844 0.2973122004297926950012072877590744 0.0430621581500145991874087223504571 1.0440168406835405832997136860777888 GT 1 -26860802829009490.8028284903915467454695080901035124 1.3259563453618840871841309127930854 0.0369722917750004999328089794999878 1.0376730947786269990679551541241819 GT 1 -2685433821922619353772.3880728165861967499342491258971569 1.4324342257141984206176053051016280 0.0717826748300524141522393515004509 1.0744893870077921769657535363161228 GT 1 -533.7282472113978171440115803070519946 0.1764373929472197739868805755873693 0.0754879132240002309671138832250205 1.0784891543886080299149356038108931 GT 1 -7034.3469591337457750786655510280701371 1.9564524434041918240637065767633216 0.0032336727728971245757742947822561 1.0032389123912213723505229282884973 GT 1 -4588.1445212603911224223275584912759945 0.3508377203938865419790815062053614 0.0344147635709895889554808192931108 1.0350208988465522329720217733500070 GT 1 -128159166861817293915296609442295844.0749825636721610944707899773781679 0.4679282506057429900479358654183634 0.0045569331771058931608976942116446 1.0045673476478382377327877597581217 GT 1 -425845179195824547330667296431724707.7312844793746851003360369496197837 0.1355080963464410995259669500343401 0.0779600096415798539254104601997590 1.0811666828754515721204750120840803 GT 1 -840232668.0264372661542984337439231327239137 0.8891518111190919069784324949150410 0.0776227870968074375490605590440242 1.0808010144703492132085811567399368 GT 1 -205808221594.7926689892512782557350766136753781 0.9395340731044105558982176461165914 0.0652108210720801043539961895505181 1.0674342521996677447761007849413258 GT 1 -28149145817507271955.9823712456646591947553007632904606 0.5511637528392409634181583669978300 0.0148985884542026003939265241092987 1.0150106872255831816515095698574676 GT 1 -3167891477364855169963543.7434099158163103204471895311050731 1.2440167676550292274352388197078514 0.0472897831956773022687313896778087 1.0484444962749241746710724767358879 GT 1 -139586826803101709058513018974330695.2091693911243330584431478319173808 2.9094900705261645776625803687856317 0.0221065648846451558315483932814149 1.0223545769338545428722132669518657 GT 1 -1390270508720.4712992404200471793531898130069424 0.6576284210116062207418189184303768 0.0454535210677533404781561188681659 1.0465189424683531523250375847164196 GT 1 -6809787488070.5238730207493397784730595973452687 0.3425045091903592216679349108180435 0.0824478107508206622036151075683043 1.0860458186556778913555650892255079 GT 1 -5292974131824814741716884303552904.7678686038049993058436891685027494 1.0394704276752106536880653099382919 0.0030334747657439008697565752288488 1.0030380850761887403187995332458248 GT 1 -2.5257397401384179153946808261332162 2.6044431902297844957266639073623476 0.0297289491402258328080634761774020 1.0301798126430267322641360994492174 GT 1 -153578827886490512.2286614874417382628510287640300075 0.0902288961167838971120029974923441 0.0304995022187996115632314096517260 1.0309742908584067320476480562494095 GT 1 -1824591998891414129.2446692928627072437339147376785332 1.4057171904542472970160620230429282 0.0711054305601352480113942261724410 1.0737600348326165487330577059540236 GT 1 -1139232.5423325714114271159274496035287722 2.1803748968414728032483985122361525 0.0835636716255218915441615748654411 1.0872626867022034118978749990630230 GT 1 -1035144190827661585539565575498578129458.2625408579307035898634225644162876 0.3434437284685897583800343099394163 0.0479820735180914829189469861013982 1.0491714140299211314518586195808751 GT 1 -861303214329194501718340403939390993.2506851625909417666985333234023464 0.5794443290177853301854771460674585 0.0386461675701285426852240734430895 1.0394127458633156478759663287139671 GT 1 -583960970.3869617796173170692378383976303185 0.7161751481493422933421891063461617 0.0578097686032406846940711112975137 1.0595480806358320831304627868892879 GT 1 -4320.9627094384416234329081652236902374 2.0380304603708470084905224235292591 0.0799614993139704248307813905183541 1.0833397612429068316090069942550245 GT 1 -151979036083748949556525234935.2064216701023496447327501259920304 0.1871305420173658072734323288160463 0.0258045812966257375228167897773560 1.0261433602450856817038750228748750 GT 1 -289052753086827912562275.7708927804861790517003140967166954 1.0271606681257009589004734576694886 0.0196667870506138795305673604860152 1.0198627518952533528302621680232524 GT 1 -55290207103940652003745519062.3552492594455743378039463268068422 1.1834495612427220228860062104596575 0.0837781650818610840930407818537886 1.0874967657701003091144490347115104 GT 1 -191.4722391252556762279787757190540320 1.7536688650351670590121277927870960 0.0006722415838420863466382934460504 1.0006724676395306430788000193398570 GT 1 -548511027059389949.6130188861971081206324369233153545 0.3431307488213223731264865846644209 0.0973912230120069210432554200469395 1.1024660675195274794861516489080675 GT 1 -245790996368130999724903880070.1472800489239281318511013041246631 0.2558856926658259107098064886418273 0.0044883528383151370898694536813202 1.0044984557354947093270194501142922 GT 1 -1471852.7547522997053583062491556823011285 1.6082941731691959138887951881445455 0.0424583070332726081027890467579437 1.0433860153069459523098136810406404 GT 1 -26355905012739770.9292839047812217918249647177885406 0.2009844006652926881722958190996784 0.0847863607530588481713353936689162 1.0885977554443339819149733229087276 GT 1 -1225.1423064982906273925547819565065869 1.5562097078466054651091668469882847 0.0065639165399436917069990938668776 1.0065855537754271519012626815429464 GT 1 -33223578327582296677.4706966716125446582385872443398447 0.5740883165574560252370020812933655 0.0279230966926854149299363409120158 1.0283203590224871494373627965866444 GT 1 -20692373087807728408449809009788994946604.6778516482084863652402239450480154 0.5257784401076386609757745504393476 0.0270644683840425700286029835035161 1.0274374563232527265609344483407064 GT 1 -66065929026838184106874857001.4301668569480172742654494017025843 0.3377668225946026687032523781950588 0.0906972640188808524629546257714822 1.0950771973676095755443404185922362 GT 1 -12453555581145496369196057595751696085.2654911882178186540304624791180986 1.6813185278539016447513751372340805 0.0847985880433865214307263263100860 1.0886111155730324596846602178594030 GT 1 -300808.7401093147873447890317612520697756 1.4768401188688454185676839936994635 0.0845580910119569010935339805726444 1.0883483696519001161285317903267741 GT 1 -24094.2285421565781236683833182578343323 0.2411652733918355676111064873802360 0.0554131955459001540474722866915860 1.0570076910713253694531594275805452 GT 1 -203557695085.8279218437435986438415458679988169 1.3833301541058941542437326684959132 0.0566493972470493515956289860222640 1.0583172703752829117214653573555641 GT 1 -366067251541556089672.9025641642852347282556378394061249 0.2348815543628543230349841205504127 0.0067494908807153917729504706809804 1.0067723717083659281933315898572033 GT 1 -1069202132538138107192668373216486896.2490219361066232734129421765232329 0.1522751063480342297040186270818059 0.0054429074319616174637861448819633 1.0054577740221402575699259150348663 GT 1 -808208789695.9125591974020982663405216316142612 1.2375783089264813462093399807532173 0.0311803358995591678427925537708312 1.0316767895705886946464974864690820 GT 1 -26989879868.5274635672856103450797059083789663 1.8379894787447669218411916486781870 0.0817545590091955146049441160197253 1.0852905591835452652917925367410341 GT 1 -32683742323222695542958992.8423662987723600249002523451028145 1.0684869468311614008035561531226519 0.0158545299213370151451974025209487 1.0159815574106705514890090571487765 GT 1 -63297686298849128188772077791.8775547882580129580240034081930262 0.0751623064837730056113213885880850 0.0948611750755488248462791632847790 1.0996669493398601831109180194581953 GT 1 -419112399364031218.1043272457789503281256488095284812 0.4429437373600578399867381225621025 0.0335439624219169846276089545083559 1.0341194675782308035785137860195440 GT 1 -1650530514268301638731542349850380471758.0149687737763223506171547930444981 1.8951637178159936089789825380124052 0.0096191180506341115375389276445441 1.0096656806010358293321003055485626 GT 1 -10529646964351115601045114986002.5466972949031308013991191097535622 0.2616139612791674083415781975223890 0.0570803855909216092311274643501306 1.0587742445112800387010342913835128 GT 1 -2283037941.0237326808432531767295168403209546 0.5342301427787250173938854165970303 0.0534422682040427179028671126302165 1.0549233151628149182471207690581419 GT 1 -596.0360329173487245684294466903622810 1.7543340573290945605192906700843778 0.0217826234778156165535293080339654 1.0220233672622309653952553137571627 GT 1 -17356188935511495.2850261247090869096642257944648295 0.5388134594643697512516442286632518 0.0436227628298084456034901060684635 1.0446028442142539668025626665294694 GT 1 -269336090955336887.3923756543217248741003630941179903 0.3394649371290016818039863870608815 0.0342093994870809333012544279403633 1.0348082379229199047126346828837015 GT 1 -508728461763677929244.9122567698814051621505508227637563 0.1305923144480984457899272041849978 0.0142741642232321883551544140058597 1.0143770200660564600633507494630011 GT 1 -2837799207780372838223376748.0183115901564972521344745666603208 0.0968863013087224358328060989446654 0.0401712852511716776666274788033974 1.0410004325760152923255638418194215 GT 1 -108238349.9622020031056500240474000559296636 0.2946505731363237608451714961148946 0.0935840786730448499585691313529415 1.0982570039692185554210569196250795 GT 1 -72594922.4205142805010646311018486772324575 0.0529293292195969119864908055833180 0.0074544346340995213741942449218987 1.0074823577860443583621540628413514 GT 1 -5066102854572649018668.7354396056414112282872299343168811 0.0935630310965575056574295128568268 0.0314920870485762814789368679515571 1.0319986258520733339465788191832798 GT 1 -34130680386719367749035473.5056650614718231091744801005673361 2.6769696442618170494499802783465470 0.0246850337818641402635585586383418 1.0249948178762000145013556626705238 GT 1 -7.5461818580782701561782584390705077 0.9308683095362388170292966885274759 0.0106137020344329505674772575950449 1.0106704291164775021569321108814938 GT 1 -554941111370311746311554337105147128662.8345425724833514607674268154269297 2.1010960352948383885349204525964621 0.0088601855561079210416358558660582 1.0088996704018816189716474629516746 GT 1 -11730216876018365005.1706983791118012011732637654716045 0.6769067009261552085778625002431244 0.0481071456855290617155123373135171 1.0493027985137730249044206732851722 GT 1 -62939915871236.9879528589092161622544365083315132 0.2311267973962465230879212275017466 0.0600416924619185575899843139335042 1.0619197583846332332691193331873080 GT 1 -2953917078832412211057.9937645285564003970635157956319530 0.1320703185603554172539073843957220 0.0394004515518865916746856857926946 1.0401976598242765956920597186505153 GT 1 -143658.8296668353938924269747122262543516 2.2564707130063566543799796609703479 0.0855218148533597776643126844186167 1.0894016658407235964780095665398278 GT 1 -16869705793.6454781575621346810102480260636953 3.4977476799650667195860474166601118 0.0384527269529745162026663880972126 1.0392115492263636996564921799840714 LT 1 -3172633206976082095854655701034887452630.3349805160872021346811164140127262 1.9641807930694974241226331701687369 0.0202821668277578077031923900949106 1.0204906741104234501821255003985625 GT 1 -48454863.4612911254415058262079875426811308 3.0040069705644208302485406419519383 0.0880859707801507928913105423223926 1.0922095595574494225165556497273392 LT 1 -3.8309926682411411995059848603730890 0.4809447194974497108912539974080951 0.0235187476659353478863802950694933 1.0237997276883469585947520366373772 GT 1 -2635264312922.9424050892969466877091469589918066 3.3513118747016116929756478687320138 0.0927566325409936226590469045341017 1.0973445435147359710212199902555600 LT 1 -16341644091598094242666755.2123585241681799934498113683272330 0.0803580160507393236648928158818529 0.0098883439704708388471494767135266 1.0099375583449124609329534929830106 GT 1 -190721760472657192683382213.7137655572963940101381486791023642 0.1693549880955817759075306367351753 0.0301674387703872455339477083467110 1.0306318396738465017986337349327335 GT 1 -15531987691460305124471204632888679.1829961309042167244934429712289627 0.4456222816218091580659923364188877 0.0452361130184041594757955191390271 1.0462912078326751599271836021684142 GT 1 -739087955972177951855379334485.6558724434253324072928885409990715 0.3994554462319290403154697240106532 0.0559288973171095588742444685548942 1.0575537950344381108977198627314955 GT 1 -9356950348.9723002270975625426527735260428818 1.9189645391119813503704301989686614 0.0730246569490029098960477299221156 1.0758283124205208512102264456161451 GT 1 -6636733.9516547334565387260657085929654876 0.0949348721214923316434166851478532 0.0295287359006268082604009808567104 1.0299734861886942253628802568040545 GT 1 -2485243159253790746740730357049925537258.9201550363936633639960643347488145 0.7266384698649912254639553935047781 0.0216391244845045623368441177606610 1.0218766836390036277691258643676610 GT 1 -61064226391180083224.5762569875489430738228091838112944 0.7352759195352094243244212477661638 0.0174044332755135557706584575174735 1.0175576710382614521852771815684390 GT 1 -26508636935667916159067540069869.6005589932624733316569529399960422 3.2506699394018981083838924595055426 0.0911121118664848643377461750964506 1.0955335277977644738878293219723743 LT 1 -415183151105068628129018565686154238.6495062984394379751079025802338369 0.7095745465908299306296142016676176 0.0566506144121456481253415921441212 1.0583185606335156126116313478992017 GT 1 -25450487159109303274981880178.2137369812704324768345548498209653 0.9893082517405975586884459482273719 0.0262999799751628055130775947137397 1.0266520104317112206183061007851840 GT 1 -469618986496844204316082663.7733872421224912368309408629022510 0.8854476773181601740027723530281076 0.0675244503267961626408595194408970 1.0699123479975153656951138314213936 GT 1 -40048188431193696000.7510873855382059050554738000954181 1.0619809024443473954221925694383359 0.0757405968192724911633688841157779 1.0787625073672950714956955130845060 GT 1 -315.2096249100969580310505324288865053 0.0965916197031259151472723522516377 0.0441379805416901070926776590387050 1.0451417074580273267397762487937111 GT 1 -1046664860200410844031777451140626.3095725232377997564838079662272433 2.2595405911530958684803931303894270 0.0065044896697867887615403602075527 1.0065257360440464150410654687860406 GT 1 -133378077389564851606227074056526479408417.2687620130782305773175788987227481 1.9012993506014024782021406344638679 0.0856286460695264965544407720238967 1.0895184947148387850373582408226659 GT 1 -1665770341808183812084.9838332696345272661713862228159026 1.1441137247365982278185938658199849 0.0444211694560660827846527973824497 1.0454380168274201847706694120664562 GT 1 -27988220239399574231171968336.9839477053556543916252541164933457 0.4406102602616085936527125451180684 0.0125435290712305702748666525018444 1.0126228632505472716633831730310312 GT 1 -112739804283561485605.3157645914505257376450749256603092 1.8340560842512877158863532099340664 0.0060844931973717786437195581362426 1.0061030791552129926076413302301848 GT 1 -9.0592813424326899916326597787074134 1.8895214293064940551876660889196565 0.0251723880518222401706564126503864 1.0254946318749918487356431016270747 GT 1 -2.0230181162711473154933582261082352 2.2895789509866264085055579131265196 0.0815976941179623870224384262457902 1.0851197426599286562732367034642513 GT 1 -201096045499248909232.9030519724510831522415300942737890 3.3071592996407279892721310685299102 0.0606208661681519738128908480678898 1.0625361178651817163891862658398338 LT 1 -1612810318223433606254184947377244130180249.2448062801133099146144624401454069 0.3446675622540709072848883540844557 0.0451975110626002453795172086358209 1.0462507777577681331771348651818205 GT 1 -53547145130901.3990793670069669756284090010444196 0.3062222270434947063937986188500419 0.0140156046900727107416686676003472 1.0141147507624184066546559500074898 GT 1 -7251022452987485.5302938563921160335421173055629780 0.2326961223842486209700802108249858 0.0064292933959563837618959616654578 1.0064500503188043873777328477044294 GT 1 -1999806839528551540441992971191818793.9930052544437941271696728568039725 0.2025895466386781931692592680883858 0.0568625327118245308916901883581332 1.0585432304214308714311229759538864 GT 1 -7784163313.3488159135538805062246121796222635 0.0039603925604852188271995187360241 0.0374196312761742024322653904126914 1.0381377163333204203422318247903361 GT 1 -10923883.6721898247113624933903461539574043 1.2416885537710819664379377733699980 0.0564343444646709117167559274027416 1.0580893293817545057483946357968700 GT 1 -695227816511074912950546764.5610036118519827692017195150846405 0.4021134149259857644114601232962966 0.0858093986683318821829384423006172 1.0897161938946494016228886902758256 GT 1 -2690384614056230804325007547029688227890095.5095492379070628442114166167196252 1.0979666732161271379562223437049216 0.0081225999896665332351106631884310 1.0081557680342374661426164022067363 GT 1 -3.3569226213169911714215100323617597 1.5771616353813979411655387835479241 0.0923936426568192662224729664715545 1.0969445215359968573098834252287094 GT 1 -429932900055959570437657195.1290032817243010942283187229054748 1.8145050856904806511013717003826364 0.0318554244651348926331124380253372 1.0323738479665018299408085050685963 GT 1 -4495624161824131.2015106986501236616685593832019058 1.6370429571937953024043420158959671 0.0423401504882378365710941230765774 1.0432626272012411387197949031886612 GT 1 -17553903193588679774.8352777398132030335215212158575340 1.5251089625445676969342405196765656 0.0484443273155742549182711053775184 1.0496570835167971686235730213164371 GT 1 -35106273826433390329217669509968083926.7174111409282052059775353941376750 0.2104441780391975753854683413221150 0.0812356182672039016072113736326599 1.0847255749908898883010424635763923 GT 1 -105025.9782721487864393786882788424138459 1.4061122818416689583475399960932707 0.0897427999305117720004470619449201 1.0940280819666797684491307247933162 GT 1 -16705614759875786810719990.7633838451389435734398672740881501 1.0386945308392960720004605442655696 0.0410703401893286905293014350054304 1.0419375542228813539823883284157529 GT 1 -109434075594.9111887327156465151775649006058392 1.3499075197823474888079710715911144 0.0754222587517515849905027369278322 1.0784181416435469768141950704059687 GT 1 -2933708903306279283.1131228401719768451045893269980479 0.9186356216863832136557722561961249 0.0733865219417866733396703219869035 1.0762187603917860216823465956262566 GT 1 -1493080370121468050685723295461118878034255.7536989505668914418678370574370073 1.9575344198996946265495119627922298 0.0607527067941838164338488060450992 1.0626764763998544998773298714411958 GT 1 -26215668.3675082379364541961119832804031515 2.3416863013201520516172288770534213 0.0707386482224281308413711170904225 1.0733652538152835629805197254572851 GT 1 -6407144058645596168.6010561824132267938905488904997455 0.3062884721977675560925008999769595 0.0922230762068089938213324304594704 1.0967566092066452177132466910053092 GT 1 -7.3361916170733724137206284777589582 0.2758960488066432342417319657426883 0.0210261546394276624827214986973226 1.0212503524769619331290035507271057 GT 1 -15058490545497218699097219.6444401521017275582478396410796055 1.2002001526882592427777978550838657 0.0759172864868776813380006041143636 1.0789536945577481480729018578121164 GT 1 -89728341543761175603996548975.4450718759688231545188854461669927 0.2882033108552589954862825799839875 0.0847721659669727502513886898043326 1.0885822457585083577534219584024131 GT 1 -3802.2156793698401007638866889635042712 0.2058807212307306017261763715941922 0.0256477441086280059622335278369502 1.0259823816964145117620156270876206 GT 1 -24919060932697484.6087944526106806869628536197413641 0.5523987590864494984763374178114507 0.0338075049032700729812380797728030 1.0343921943348354961210353087262036 GT 1 -12907665528646392816674973859851106138950.7636485422419536403646920960040428 0.3473223097211468811695556810772306 0.0705494381851052047809216436608928 1.0731616611696531934829905653079980 GT 1 -5317327825379325.4858471105508799934105142720226505 0.2877023614948753325134883163717882 0.0469901026455616976061406673906381 1.0481299899102599014760471583028235 GT 1 -1978.6355564769400077594077344981070763 4.1396415538173256333393317726009534 0.0071316632538272608317849947582854 1.0071572151215627070731074111769160 GT 1 -1551020230936229706882231.6734346055741763014202896672844334 0.4286991772531487184569736403004904 0.0787495019784930585192453103686781 1.0820232948855135386849228015393467 GT 1 -37245.9350985099095025882024909003408181 1.6376078256405450927285347587193358 0.0788458595630280003860195507038419 1.0821278946923219043620440347714466 GT 1 -2332742723092155025568013201519340450385.0681203392185092979677820042403758 0.4399747931921206422728716749109992 0.0174001758256522471974295019445788 1.0175533381867994222684090984412753 GT 1 -7485719840.4576393868005653005541237464535562 1.3106390431884297640350084142272641 0.0965900873394902953527569028279223 1.1015788832067005688416123145150304 GT 1 -29214257655.6314490913540987606048375763250184 0.0427674359681508473245478012497762 0.0347256990385803746430418432374191 1.0353429683334904313272779353214579 GT 1 -1475835047871986813055.8240043395428499575365471722638900 0.0422190013016369073041168859582982 0.0415756415471403909815024114418144 1.0424646361959514147143706304427725 GT 1 -10009916430088053984800345.3501474501121619042455905014664340 0.7896960560008329496704788315670934 0.0026720211489057856408618092935069 1.0026755973693274843734676475963194 GT 1 -20164504115980845308082599209235313.4744356231907964402128304203846959 0.2225778418650714435784634603975007 0.0515750695282756025957650285238663 1.0529526382619346658271737028525722 GT 1 -495.1751465575833377607391938371727339 1.7468187321215181626400777843133625 0.0083137753056747497840288303683051 1.0083485274841680195304583727454933 GT 1 -181489046137723549307617962652399621734.7413490169837413545610136350571388 0.0509032192063484871188827527797687 0.0103254690029167318913570921477236 1.0103791464743919214378838323177040 GT 1 -1532399852230965750294854369043532350.8813603255047223901587323939624233 3.1943403309782498142125709412294998 0.0719781232153327308389422897497655 1.0746999723523930157199205468757545 LT 1 -756042316305434845846309529656.7951273602143290122989703746062123 0.9335813094222887449324000433634136 0.0596237160530306366611389383014265 1.0614751817463423054245025764811439 GT 1 -1890369669291794296110162576610300132888.2601761514397350477341069635664999 0.0790333285497365225201909223061817 0.0515513325822600977404376480903185 1.0529276108209463421729698752432026 GT 1 -117920928878301152998106.2892755592611923803356598957305215 0.9072532350253364357008357010815377 0.0508112795322610819542068834336798 1.0521476376898923055954175440188459 GT 1 -354565.9569176032551918110847895995226518 1.9033735533450213440900960452879242 0.0509624958896162371971634809060418 1.0523069615425681234511327808218121 GT 1 -112.7518168299005396685176266156450594 0.6988228592585351808558514408911731 0.0751058766420017081698716005519701 1.0780760092554953218248802754207322 GT 1 -122143922512030738.7902058024036211456487308042982396 0.4397386967899938400417869687297390 0.0042611564113288814496499951191707 1.0042702610115988334417689991404887 GT 1 -35843.1240264172982863600982138395619030 0.9197038365234508281803743173521027 0.0963010908448408933240862018852615 1.1012590391623084476890285305430906 GT 1 -114074.0659908530873531379940841213578785 0.0042521391376440470096575510275384 0.0966225001675362113931222857142145 1.1016147621682488679590186385389078 GT 1 -38.1923527228477562607484712768345675 3.0426348415213173240182814332868912 0.0880353542952830864908710873764046 1.0921540553338663550228594664173381 LT 1 -80184049.6166922766278440871887175992879563 1.3268790883527256139194241323623879 0.0492590580090754250810247030102853 1.0505136594440541499759397396593293 GT 1 -227399230659198067133426891743539203583437.8981378294971965856686589263125037 3.6057300655586589032644045562289274 0.0674486205844379101843740191593603 1.0698310304130694533843703388874055 LT 1 -130731.0361357585713669196894426859180390 0.5720529182880614441966639096531879 0.0134538990676367175330175265784977 1.0135452227995412245570973873883924 GT 1 -5292842186398496548845294470072296465355.2304803299004890420802665242950477 1.6716164258339020516972710699902734 0.0566801449034040345128116663222077 1.0583498649985033884366998725175619 GT 1 -77847903113179570890947855911453.6281832850731791658827000374005796 0.7668842087434566811396530444441285 0.0826405969337342711725498898137534 1.0862559499605651319477545952611515 GT 1 -2085944500543.2452619857358400959759334221861169 3.9705431607410776863255927266766122 0.0845066527840367611543895682944040 1.0882921817252551102941497333935138 LT 1 -4077760681175.8911774521576870998470793431699669 1.9433155959818418014516123912332635 0.0610972866730790042646259414908204 1.0630434118220123400772746079716254 GT 1 -131755092629016869758896154525024852234831.4835993848494957062219196701989329 1.2127900247261617200927655885258040 0.0234500227984634643537558665245918 1.0237293500451624290354079009813937 GT 1 -59825816958.4362800696359801462474109143789266 2.8125759545394215410511140781273409 0.0831836321897418890029441094988150 1.0868480799848480312450159023366093 LT 1 -1250339689744875743463800577946.9318170877665944990830747924709587 3.6993696965424804826051030742838701 0.0693668295367187638288335247403314 1.0718900960382464554134294347445537 LT 1 -221260311912984611672.7924445550900014479351308106514463 0.2831874216401763800418340056482291 0.0601741832599801426038684788869793 1.0620607222289064233024002448210539 GT 1 -200814314340984634264987697.2480998635771745881336599350057681 2.4155684623560715673359509647743853 0.0164382158264022218608742273008639 1.0165748224107598878656466032150665 GT 1 -964.8211521165333365660048663233156189 1.0624131549003352155135246791152864 0.0200364903745366139035559867542456 1.0202399430868198708933303016887969 GT 1 -13330484131163299632.3012708371173348348656239025596461 0.8261111227065651849806935843574663 0.0506027558305713684336173873984903 1.0519279755767068982297138747604168 GT 1 -2197174315904597.6023291264567636396018212415242314 3.6299906226203734756128985766886351 0.0119052861010932480895572241415959 1.0119767215588062066210590979824516 GT 1 -29825597280129682767843636836544215694.6675294531899820940397797120629365 0.1562953364302599347673251895043442 0.0655537388115539806868632825422951 1.0678011591563425171394841894449245 GT 1 -30587918173352024906302559119490690647942.0453178854303417572608866816421777 0.2739062204882305587682829610943833 0.0686519027624412383418230422193353 1.0711221755206645369756672324741484 GT 1 -4838689785820466617157985868.9078870189180689376852830355966220 0.7129001960984154647972072115876315 0.0109245239985151672689511498097828 1.0109846347996291611833620407421343 GT 1 -5520029157627967382.0951615155647093865807194307368526 2.3619245444112965524562069145684570 0.0237212796558516931642638342599303 1.0240071592144702453683764926685729 GT 1 -226038219266796686.8680235103697435800749982740081909 0.4429333326253309566298947232010891 0.0640268417503698379668557247483475 1.0661684799994688911850434864561990 GT 1 -532694237367374078986703506.4777446126975386651809815046693030 0.2527021811025542231588399168781636 0.0455717006054456003193683505354332 1.0466427571349322657387757931227287 GT 1 -758754944573514205578906118202.8786572417253725761007504938561959 1.0330645412923468205004943315313337 0.0611093785256139202428667594390567 1.0630562906115052877377940381839009 GT 1 -2301489062469620.4981607352690268364875410304622429 3.2265022672533306927813774211850906 0.0586560831468087975128940367669471 1.0604467259843210827979359922197544 LT 1 -134753200685181553688753708178850998653.6469958939909822859981745244896690 2.5790136313734287419251639477766295 0.0595895227772587437310909553261757 1.0614388211375996168470448775578253 GT 1 -73083075453362729160416485559081574.4384731781053038458125749307341688 1.3239236557902783510140553292962201 0.0453818404254009162021928356606252 1.0464438513620752070545977459336820 GT 1 -2160604823564306291.7009544417707552674281333637553724 1.5286518786713899209905228501344270 0.0319327166537579264840647777868831 1.0324536865320075236719530617028728 GT 1 -2934397243943694.2952058695821469080991922886954205 0.6751460256053586391538598192145975 0.0296811606781670788169273533183521 1.0301305611630409823079290006062074 GT 1 -96900943710675923785083.8218699840163987175865833589769833 0.3775484307885478248076195628246880 0.0021042002785796019858584494094786 1.0021064172184553967238871868686174 GT 1 -335942858733833417584977406135.6461220414919550094013558925117438 2.2243612845756609358971459175657816 0.0979010402172248899390776671790422 1.1030310534265439000717718641370011 GT 1 -495496113697526197883178608270673.4948949686019146111043967993097500 0.0775090054393465847528976070155666 0.0967236026989279985529315110215655 1.1017266845809010504553159116453291 GT 1 -5385985842450239646775708263112720203173428.9628193164367122867799164198565419 0.7171187183348810865875430544323446 0.0145676508665518583542025431848170 1.0146748009826111044857375459449281 GT 1 -130663825416266540460460117540538.7077436378589561515289363134807242 0.3006848359691620613811614824320244 0.0701082075201694265149985094969169 1.0726870517764997089928438875471705 GT 1 -368982312410708788621369079204369474391.0995028091690782864600367569720399 0.0007907356240070722088886450813888 0.0996312696275965011264114934207954 1.1049508991483428607031046401806152 GT 1 -3701718402188157313657489808.6107179626203462130121053323388071 2.5385126823724511889928533913796074 0.0782570059285472490935882307104440 1.0848090583110809453597927845273413 GT 2 -17342098671634526155513743211.4581216563394819431757226307780149 0.2979909728852329688077229034431033 0.0586425048397564539314642207848549 1.0604323017033746337991343356967442 GT 1 -2341431615325695001956105969302711.5265073986739850237047085452076734 0.0650044554565524948363640483143173 0.0595121900726157443965094886130591 1.0613565915931155859664125265296860 GT 1 -10608016473391296314727132.9090436035554881535778988910112979 0.5893592111016744694683350265441100 0.0028849113867877823907991066576547 1.0028890807644300612608885292343753 GT 1 -4324066031.7000247469175129418563038403190911 1.0216866844718495187780265648626898 0.0043397382671178622281820687243826 1.0043491822641190104685731914673595 GT 1 -111772217077447791293653115978005.6699717217532985493208129597365086 1.1036808411987262520794972720002236 0.0958681315944003212210885797375287 1.1007800570981770410078398817247670 GT 1 -227345791550232262197.7727158068854184275382225639545958 0.6721215056915170498907777162298387 0.0985979495221917542507270046663222 1.1038038939580319449349622163813616 GT 1 -66408225554498698308.9913140603804202014084429281394389 0.6141393197786282767396399719243790 0.0120858523826838450571108117388155 1.0121594801340431944084770476617929 GT 1 -1169.6121450187245126400441184413453595 1.0321917254322419690687759586544343 0.0189271461298138445533359392459977 1.0191085572709255791129516232809508 GT 1 -10661286563816850.2367924261742893921405378094123797 0.1760574059046915705618727513321061 0.0253269949665301761648211076457452 1.0256532436894076233775003329525427 GT 1 -13930164272554812121588267417950802.8332041613963463538255189342747863 0.5084955417197721542623432117592141 0.0082721884691551790636665809499555 1.0083065928847690831873865260894513 GT 1 -3120461707282870583422323992797083.7375534809560751635691105354739792 2.9766573531879848464754738499018459 0.0087917316422993313227443642536402 1.0088306069367619564937250466051193 GT 1 -1725308296506341682899654138640729354773.9638534003820205335024637997551408 0.9306885885509337456350521112207365 0.0640292075097607870466150607055132 1.0661710075958640880537274424989638 GT 1 -63121300.2717358146345109358740238296924097 0.6651515502378455924010935217447336 0.0790946654004318276117322357636210 1.0823980334606827264944070021879936 GT 1 -13846860266185144337.3624685902181258294320657524502676 0.1455719877002631190486689249229413 0.0896177369624766071468737680202380 1.0938906984036337994997401167198469 GT 1 -12381673083766545563.6179589524288641869807728224077072 2.0080042940856617273485489465585498 0.0176349344545837294644705894219146 1.0177922825376900002453735676869159 GT 1 -68812504713299414826.0208317253335002223358764647014157 1.4591052112904758524892027320614755 0.0818467789663851672785279064918774 1.0853909948451194376028144835220580 GT 1 -166308.0224086569591482876633150947535920 0.1471216996987329307722575050025336 0.0390287984966334607860259685250633 1.0398108376790115706337405544322764 GT 1 -635803457728172.3093341706567274316587422208189491 0.7059387008685104618933264547211777 0.0289561649140756753597718203180263 1.0293836674400370319721175734000513 GT 1 -71772.8406952261115906909967708847706506 3.6223235116075735687539373335031426 0.0322994129672232720164148405387766 1.0328325504686011004686618656500394 LT 1 -5361464121510001784580296985939623382193.0158284275369606091046487307260365 1.1493023492989752974839297289779763 0.0374063356654223996344604428397797 1.0381239039604920872344127281004140 GT 1 -24156161481352655403537426538935.2108414304737623823332061372029359 0.1129380677297552172420427073350141 0.0640731503114270084722230895007685 1.0662179576006978414005552491838312 GT 1 -64932893030830989725398935960819350396.6694308591711635415862416186926196 0.9623625661857691797761639291117583 0.0124114644773283383228217795873358 1.0124891300002490024765807292792678 GT 1 -15361950995612459602188643349198278736693001.3072458281979012403665363757023288 0.8504572532663187088417500695949444 0.0837480021163341389246344914040647 1.0874638452830627933933200771351741 GT 1 -125529.4942829430867413334677564177941000 1.9298646373452958531212881238042212 0.0928667488504639831237268538270993 1.0974659254907559332497923000410863 GT 1 -40281784249093041691990338767716294224491.7343902020063155846319345272155082 1.1418766078034029507906426534164338 0.0231994167814600604131306081377765 1.0234727591152430408318020282211419 GT 1 -27.7373442233247019031882924958259074 0.4270913950954496016538901719650701 0.0626072699207179791356830021795842 1.0646529489329474863106754413588550 GT 1 -215922513706745952944.7269497649429393063850377056182120 0.6584675848592333319011412920674786 0.0038780910834832448249661831183196 1.0038856303770663433501676328105786 GT 1 -15543516605722783158632498662644068119.1900726860861187965419253014316388 0.2592172078856837958076614503076034 0.0866610913477551668594042922865380 1.0906482639229906722876010449038145 GT 1 -44131882813423880999692.1662320651919063482349119090780746 0.1572530325437126147617090733434150 0.0202749138821187133809263147463754 1.0204832710413493532650344037135854 GT 1 -24850805720629.7489192503273621276831430381744573 0.1363560509269172489874494593969739 0.0909078547835367475447108408248310 1.0953088200671397253684528920208818 GT 1 -9534281308769296005.5913591440040493691127736733102989 0.1364640498683092279576207396147111 0.0971594012213952037550917173328696 1.1022092652020575814315213962741624 GT 1 -78200820568678573300549458969.6959611456432418124130022315247659 3.1427062531903510649972930099488628 0.0348736741556175425489384212375436 1.0354962786000456737678941427784641 GT 1 -787628277212352377382719616217.0188748181230590708775528091035691 2.2882372460013461219672844030453967 0.0613776529293963419801629635284821 1.0633420669657598359265574777707298 GT 1 -32808649570839074938591091638852748.4824006889398736005050529926387510 1.0270297721251625883464167966858330 0.0943638137111906394322104795463214 1.0991176139737482887004670234844772 GT 1 -644976369066345932494538616797446970291035.6139638361120100690534973701273308 0.3967713609772263449020558890831546 0.0855424431433160457887292131288861 1.0894242235386059153599586275673179 GT 1 -4709575.9342043017241640797187032309509448 1.0403791080495196340852918094569267 0.0564025302287038499764575730227339 1.0580556129154422398710856433676795 GT 1 -459076482534322629123011161.1372292481669805970822876501711071 0.6907603502137937762591644058434728 0.0388781252455009721406570581903470 1.0396540572886108461517455567854865 GT 1 -157656636368145506959296553.3608399292532269096889807817346357 0.7222076959792323761857216334512852 0.0327911068597273999263028230914589 1.0333407849964963896769946227791086 GT 1 -247315779385494509352.1071977968109585691254111028905097 1.4749186000843964146409910149905272 0.0608330727006713063967643396783479 1.0627620442215407235861150582295385 GT 1 -2202293259548536581892.0389493169069571101154237247454978 1.2735076941583573825889504139257062 0.0543773355625553128888889488382697 1.0559116643038282010860247168789159 GT 1 -122461108231247433932531714702599681054158.7638946852459767364414833562687008 0.0335150399217090489602158053645607 0.0325289663751460270224160647968938 1.0330697939322288241251696644337670 GT 1 -12483467110634378713930793878626907007465916.3282468252885342789759853537030599 0.2270502831723752380340052763252035 0.0342862491714557283351945612560242 1.0348878128763617374671631271354210 GT 1 -18101142215861934376871442081523.7759678178032852052548444965699355 0.1450902485217313784673213764859229 0.0557152334429456961530183687665368 1.0573274988383067412877831347961603 GT 1 -57692258.4990269839551592820624198781809399 1.3068476604156546264498206897082196 0.0119041868338395546596608150446190 1.0119756090473973738741593429260557 GT 1 -40144460183.8884658462417954131856582117564422 0.0371151379695978439525295320258225 0.0753912686535025212863864401756206 1.0783846240954670579719261984999884 GT 1 -206824953851727186489310661872.3632551870680794600225640425606653 0.5125138416504277665038160326752558 0.0913102967081470356515047163670776 1.0957516035964346985838840253091141 GT 1 -11029001452293366862642159095067.8946893872027905872123787144853877 0.6192714057782556283431914361578740 0.0560909606575238267321454078492076 1.0577254741079674139196117623882345 GT 1 -10599501822290964981754378446056454.9826640963818655464382468810098555 0.6482007594122422745039050419821474 0.0593130280576859131221036209778417 1.0611448494226448558022587659209044 GT 1 -3804885560336.2859371783707761372198006099457967 3.5172855952086495626552165775843583 0.0137376188053010456170824072768747 1.0138328530912707729664864449431700 GT 1 -4409450049244503991609450675988409.7088162334433259764516569248231407 0.6561388325380654807959296150480953 0.0741877149368576808247517124268771 1.0770837808001390111056137868260217 GT 1 -3246.5831554906896398542047224757763650 1.1987999758658169159436678516149316 0.0281224357355561848345391114762248 1.0285254451465654133338196723334963 GT 1 -2.8601168533728456352979521500464613 0.1195718617816692641685213309921522 0.0846582860946953256356926313859043 1.0884578256046250051800639591218091 GT 1 -71793283297.0074665924067390133192862467125053 0.6771216758076279149389867140532144 0.0074030732497983484867563778914157 1.0074306119949823940896763945768840 GT 1 -92923245998.9385056592139935610677431631931586 0.0945397034966187415199733742950539 0.0151281453189483176739359295617053 1.0152437430438729665699655391891249 GT 1 -7538137344526505.7659258705172650965959525840800118 1.9318016400899538532775663345365570 0.0399233836169419598685535641606943 1.0407421889724504489079476503814966 GT 1 -7421662151724766652123437276455291970948664.7078693478777204183059475993473807 1.3910993461964403221278849682127984 0.0868926567076329339780817827846886 1.0909018332364834447319946514928786 GT 1 -16147716517190156818357541819141.2952101183123190150395015980471194 0.9769455184554559238874557208956903 0.0377936151138713005201365336950921 1.0385263140225988880127421387310971 GT 1 -4878129177604.5162170873191090758667442937173060 0.8024158877576631311168208003306866 0.0264000914764962278261550943728925 1.0267548312657840200517746286538703 GT 1 -14580404555749188114014982250413233797.7561542545191949462780935846682386 1.5685170531487367405056162046212730 0.0603260525707631677065255962466073 1.0622223283264529975158159987837058 GT 1 -913568.5651311453310088134593377855810416 4.9678043734899679852129568573643184 0.0520566998879684609086000323422205 1.0534605885242106712620064887894398 LT 1 -1279297178742450000131.5701073306393501220070770440091358 0.4043613921448565151727498785259960 0.0675249024066757983012046048931244 1.0699128328145053469431691163993655 GT 1 -23622386159289.7747595542790140992508347936624889 0.3196904351144087196088018863717868 0.0515397429040548850464585141062153 1.0529153912799282322197708971488143 GT 1 -94660020906917071658889706.8654779723705302665175739398045262 0.6104168926930219698299770891150921 0.0312198683206688377756709088699885 1.0317175951293023771577844151104534 GT 1 -295185519424274726.3714228379437441909218249549129902 0.5079813828640191685928159928854265 0.0141659254298300886152171362886391 1.0142672199093959430510918269876766 GT 1 -891665833352305167358.5805694278101532060115782146780357 0.1775514116023193795357911711111822 0.0435970969488721700982526992172646 1.0445760080082539963501683133524368 GT 1 -100436435464652338650997559.5380662253077186782698671226492100 1.0622084783212107631474594949881101 0.0609348007043480387891203498196280 1.0628703673647090025835628941065217 GT 1 -1686647433662768624257292899182.9981219309895804789092588153072697 0.3740129966472404593587252212226703 0.0740716073732449294845412374240693 1.0769583771027813888154582940322139 GT 1 -29903276679097.9343787353988906893336819126291467 0.8289477846117871151881030645302011 0.0632212418002209618743890892265345 1.0653081418064987312405418935957253 GT 1 -494668236928710827861727914894.3185187409345936538693302248827213 0.8369265086349282461563456404169922 0.0921734706236176819177551788740557 1.0967019655749457333091920094432131 GT 1 -1251204103647676047788929831.1079707902467296672046466788826556 3.0659211818979613090189094339160509 0.0450274680321403401592945179768039 1.0471340481527155787368508690048351 GT 2 -507900782827324483714255023457130173656.4752186772920993191924621137798477 0.3914974523291418335942079666692300 0.0094615268856304689159797995660023 1.0095065714834099548403261614177684 GT 1 -96719600369159714406096741842.1844587455513123624968750323237514 0.9365434509965355645881682082837939 0.0920546282880999313114308616568002 1.0965710655036138465891546421905393 GT 1 -54338815430415430521911289788789956678901.1056583959911616394195321594843832 0.6451492513538610846130407251647634 0.0235994544930015993005141551501905 1.0238823817713553833165396600351542 GT 1 -6074724812970245017122402872146.7161049270853515899343363848095286 0.8073545033154667025478635173166179 0.0991600237062596881782672493614201 1.1044276439249532881688018235668437 GT 1 -19975560506951715263082155654823698903378380.3430503794943597655492919617173273 0.3897073730459726780730082964936137 0.0876777123925846678329481991852646 1.0917619657993204834187070251059370 GT 1 -20642174570374038.5972021824467885846563110126431652 0.6589079301139763662228014221492791 0.0242078539552384082911044617991139 1.0245056803674075940545071143712151 GT 1 -15021054681.5458044938713290306070404319135405 0.7773518551516342392107683100724780 0.0554174826634767999576177939714638 1.0570122296984639784839402127159072 GT 1 -3296439176764673380.4902563130290562934370329670759737 0.5133354478439443256386518947620782 0.0818938824491087642220050905377627 1.0854422985817367703803918160313764 GT 1 -1630000482.7909881278977090111383772903580213 0.8524025163728489631930237749440443 0.0725269761017290441220863093219836 1.0752915696693157765443244894419509 GT 1 -11681842179011080447623228570284865246130042.2540644034075025351185718181796399 0.1808783711814475383977561522977591 0.0196038821642040758083324539857129 1.0197985871118294261340726817170559 GT 1 -14841318709566794412435135515.2665585449648594983979659490715656 0.5561923071733075783899790296775893 0.0197646413437084560654462901510875 1.0199625742575956105738857911192055 GT 1 -3029622654998398240260055779740186177.9197608910595166682824949263510830 1.4246924893583470045119988778556694 0.0854544505846665670941308845326906 1.0893280043923227605808017123038515 GT 1 -32007389598.7063517284247963136853710438592571 1.9428327087852990480298747367541405 0.0120684483882864773118015425529935 1.0121418633794508607524032081480720 GT 1 -19545324791541117599524649043858931235548.6684200414798703718251122007974590 1.1647337101327993075733560914636130 0.0735699249630721054454796515611523 1.0764167082722640126634516601214009 GT 1 -12466.2291092094701158334312559183891673 0.5189968066664074638709332199525196 0.0929726271754220266544788044111675 1.0975826498024613850491547239762059 GT 1 -3.9796011918618867559850475715129306 0.3817304923451918372836141313418861 0.0903538657668683720494251668372165 1.0946996185783258859121541678491392 GT 1 -36494593303558182043430492122162041.4602120390143655511069943691910062 1.3474262873156069235121798041003113 0.0190020085687416754043219108275883 1.0191848668895547242576601914971176 GT 1 -98838.1949917877560934362489032098874111 1.0040066363355477101668684783063778 0.0830090365953921280962624236303148 1.0866576612948304125593517304109126 GT 1 -2189976778012687822714.3873024182880690887166444052557748 0.7366329271952266116606644324116222 0.0049098970541762506072221437423614 1.0049219901990204053122184774382479 GT 1 -234908432770099396491748858237542867007.4944694234322281951790800407488546 2.6122555163208684872338399664409428 0.0555469613477529306241096028426804 1.0571493141319130072513512594542553 GT 1 -9268701988378501183042751332931.2783557344086586181955064056979386 0.1199645798325051139971941723341377 0.0275261697994498189860549588547156 1.0279121136710970570563990906079002 GT 1 -16236277732711937244633396355.3595093657790496738351724137664602 0.5703709355259650476526247283403141 0.0297065262083800692009447494812270 1.0301567029431822608464520470768809 GT 1 -507809252623364535238049.5441983242650641549684299833155196 1.1456016786251950987900737754984117 0.0617861635721996226753734390778109 1.0637773853519313516260511393873195 GT 1 -137613065815976817539773639539577520.7682083612856219257695285407360140 0.4238916010234753449899717077523612 0.0577504782871551902751219544110903 1.0594851544361409324968814279862390 GT 1 -157200380689729364013840598372244.5500602160185715791564153370482529 3.9103704682068704652947567387806854 0.0783778440371896002733017494526952 1.0816199485712268442778468893254243 LT 1 -241116113190508161.4527222434918058182177703662667189 1.5189650177036582096463796345411558 0.0765526084976413782461570590581694 1.0796414473949890427566459902349263 GT 1 -2373505.5298974677534883099134202183553858 2.6151771323564490978397629473357255 0.0683485730244919133710459801134859 1.0707965396450914143087484147543081 GT 1 -1028683184429069.7571166336195600130879691981072633 0.8648388748774326009250589160279788 0.0394842257773069341328016832740775 1.0402848739800171031860878277969054 GT 1 -91815858248773.8709955638552335617984463867691032 0.2847142401572412928570911374267831 0.0081145905657001817193126388512320 1.0081476930527646182619870652265939 GT 1 -68127347787670359090038215899646.1851737605039972190799743502229215 0.2034048861689229191149845639841822 0.0314691161268825075592680817102067 1.0319749082871670369736953182713395 GT 1 -5759655324918633317291071599472869891453019.1527064647653476627580038348622055 0.2257128459547676409432129924012227 0.0656264306054450816758893290943851 1.0678789534870085017194482142686307 GT 1 -887870726224.9094265750859652864832745889764555 0.0423499969682161406696344885534201 0.0409592792388831244483200826679448 1.0418217433097466192337913744308300 GT 1 -2400134.7232593328874774955141867002687563 3.1244573780786028991630087395347534 0.0662298009082608150689852172269931 1.0685249105423210538211481457718652 LT 1 -1644331902941087109467627832856697.3768418290241227850453245561426137 0.1010416743153533312029523858757162 0.0660907599594753757982871392912143 1.0683760188790847738090612123528754 GT 1 -8248883540377839601935300513615650996995683.0080604044995708646672634308458158 1.3837328348739693199517333055157655 0.0140294514483053201403659055921164 1.0141287944486354165346770371297440 GT 1 -1.6675093863239564180552615461257827 0.3237150529462251634985091987591415 0.0389050953524509711286682129531262 1.0396821187510231745699470580793586 GT 1 -4996490490537457204.8987924676906996176230431497915415 1.7118403159415964484645419786907784 0.0348652546609813734932511952684031 1.0354875549151908985098119310638670 GT 1 -2884193568.1275739652491257711390099414231798 0.8237387096121229021433724219104575 0.0910605036237209733119458106474613 1.0954767476620733468144931424866775 GT 1 -2865663417.9896548761573379903935602082686848 0.7264403325588075767132511154360569 0.0567448526529928069484143546422345 1.0584184631189389224175473274823592 GT 1 -1684789181579807028698265889025508.6462833598095640823391181755221826 0.3004144846981044530804308057659238 0.0052176260013315728217811660909058 1.0052312853454923552213285682558717 GT 1 -1008.9800447832092352264169162882610192 0.3991630351306440570201319750199857 0.0511931632188957049938985412643919 1.0525500450509942689860927068531930 GT 1 -115749884921076995535.1876168809077811990400974821889895 0.7374201107658167562015750467221802 0.0083044461972271181719900623233784 1.0083391202096343495509233906156251 GT 1 -1393437307982106635378744307677.1552178782344573252994775306751524 0.0883662842525987545353162033772203 0.0657160965566208969174489174342188 1.0679749217985348055416167628235884 GT 1 -3327974024351984418164281919.1376505671779401544565784774632147 2.4031463828694470018979421820376967 0.0305417339997328537278034981789848 1.0310178521571086781909563855311934 GT 1 -40335287347551472624795690927109917.3671292691892980016834286962792756 1.9080263015199540451408566458466213 0.0538673115464968945300207572504723 1.0553724571303041761512640839383981 GT 1 -10768722218589285784397.3019085580977617327789585639396994 0.8269793867254416837791700104795255 0.0689830969111178751177672150762772 1.0714778460279066340464555870789716 GT 1 -352574888036355594925316584496.4057800179745952578852482343106955 1.1151038142400945238428546320204646 0.0522333726414234463428842479204019 1.0536469807052150853733792662544681 GT 1 -19164552221053011895116.3463951753240523169949812773612469 1.3635858739806889938874046838970916 0.0550779385820244962814115952711615 1.0566528295795915644016364990649851 GT 1 -1824481.8736746213422701085100593529392265 2.3527569478910568946541842153850776 0.0579510875460507500191413690663667 1.0596980817050023551365686224280786 GT 1 -228838441.7985144100268056466420743475102939 0.2480482737367312852507062673541257 0.0423779504494284984665317040809687 1.0433020991570029254976214842033252 GT 1 -2083887.2302572900941545585538150912620399 0.4584176892426547120447695786825538 0.0051079956365800732667322429190088 1.0051210860424760568387892254400297 GT 1 -19409543903376647561132750542690761303.5530493471300153698933837821739880 0.7303987474606808174451714464248907 0.0310852472352635281652899853112531 1.0315786454043455222137301415209755 GT 1 -34741605389502.1480082215237068051100437667028087 1.0425978556462972820515291072621264 0.0302048038267656611712314224917052 1.0306703677432045825225188259888832 GT 1 -829560172884013131457679910965317873509422.1397465568004679130327607364262921 0.6090383004792133751005229778466599 0.0691224204894077101399956390842831 1.0716275038950435090779610440298877 GT 1 -432868079046621886182941225402.6310861602898207232209104535983510 0.3281629482810216339735169631991697 0.0522818333316419148143554652252790 1.0536981134712301299281444264111473 GT 1 -168840369643981.6683332484524873171743153834729424 0.1256960852386227968695471514239951 0.0021738426699034275922827450289041 1.0021762088957038484019549575992069 GT 1 -2403241639639487099150068964.8591487445594303901232847077160136 0.0346442172555550647412579526008243 0.0836374202883830537482149829859998 1.0873431632482943052461728980032055 GT 1 -1529701172125.8162535499152398113904576433537153 0.1607365506628450901849966495077679 0.0481486131502306399532888235240411 1.0493463626268628976067679429616648 GT 1 -223176917.9021738525109663634877376145955839 0.1744984640978815385427125710909900 0.0898776166027614975898437198676087 1.0941762012641281207011344351213829 GT 1 -1681693762286197720685595.3389556888082315497757181116018801 0.7378439702612183048838150305639125 0.0845490950301164545269434145968160 1.0883385427720610151981418525687713 GT 1 -63168352249368067091039811640293306189.4141677407976976242681790889180230 0.0875333862821089168965413325592997 0.0341517559494816437065957193452952 1.0347485543668777000105637613363697 GT 1 -52173789256373918011263114309063.3607044604578945845490003170746238 0.1371463996744702763879418881123791 0.0583547133099626638592444674825596 1.0601266287274145668081256673050227 GT 1 -325159962759595979111574159522789281240.8607021043316943899645017038818064 3.9050165375472293843301471695273792 0.0171067858513984357577834694639546 1.0172547973416146259963239123003042 GT 1 -53526729439777071363235884514337.8425505854046016530456323504218440 0.9036152395768013265686835500264203 0.0213184372991122554626290205732264 1.0215489572882609753197180566390221 GT 1 -129738047000892555797607716.0300889216352535342468367426995067 1.4046572129100224259835612935637365 0.0033372700156671658506863941263180 1.0033428511218107888117396164555583 GT 1 -501588891446577445208024.1709888793640160844310297784358764 1.1978963304932026915825347495841506 0.0476536496860061760901088208944964 1.0488264969997677744624007496054059 GT 1 -40529.7650489839068856294625189669363271 1.6103704404667826426714272989339689 0.0233920953023348271087490844626161 1.0236700332877385031022073311037511 GT 1 -2.7781370203239059606435547445865974 0.9640282481502458837969094119076665 0.0429186383769056150014964078644460 1.0438668737729499878385852794362208 GT 1 -380645263974261934316844106730446637.8578884210799166923384729666030278 0.1791224947819387147532639530049915 0.0139322312827326990009866347371431 1.0140301957907898412518396819336482 GT 1 -14395944371418516629620.0352510288548144691485739425275550 0.0181285157836476911667717999761228 0.0433185895341242955830758335673488 1.0442848473785341325644336161008362 GT 1 -96478534091382449400467903971343490.1337478681243867640650112849751824 0.9522002991394245616604471137259553 0.0992123676534440017702381110608158 1.1044857513240051334732107424409043 GT 1 -507089399795157165555864578094989932879930.5476598615967682277382626620485110 2.4208085070107094351418513946624316 0.0160835544131879150116024759909487 1.0162142985567307689333844079190822 GT 1 -4187559323866698177991238667234491710193.7441977333433932730861975619986218 0.7744447384395639167173261401258084 0.0698834242371490264525955714177469 1.0724453504078901852101179000417383 GT 1 -11.9282895809344355269870873465969188 0.4293995881779000911545669426987476 0.0959360207522338828522609271946438 1.1008551475901207831322368933426039 GT 1 -2738863481728638496946163246.1600296391038508771740693347360121 3.1860563768178831813802114055827370 0.0659371681476098815060370100269643 1.0682115712253722812665358163109328 LT 1 -188.1340335963730183301721483976767307 1.4496235784056361670836436476582017 0.0110909520478002848525155894374731 1.0111529152362679680387703485334117 GT 1 -23486.5992919226026495081681005923094084 0.1525369828496759608901595340512122 0.0359748055670369516672793293766836 1.0366378494092089652183551646695547 GT 1 -2364029493.2747472046386279955348745595248879 0.3339213100517285205217395897958526 0.0477014489947956588382204936717708 1.0488766893571635398076313923682709 GT 1 -163971846681095121364276407.5273606538946507214248370542008313 0.8669635128775405920096352150513563 0.0708951338603178637114757013696355 1.0735336658717995004456502912172308 GT 1 -6.1115842575452176865443623161598984 2.8341810398745502970095507844845036 0.0518878671402769513442532847513162 1.0532825001147667451437871632091919 GT 1 -9562404396.0428655304867113214068870173471410 0.4879366883206329593706877572829637 0.0643894899075781448622535578729257 1.0665560108033341602963752591503662 GT 1 -132458247454257.4897562979089460986949483109137567 2.0380761132835311553364124073841138 0.0670600827529042158338816240199777 1.0694144775855682799703172470998713 GT 1 -324675650146797.7156172341017266437251986238770527 2.7543795658427084255605349459310662 0.0114294217439553948033261538207517 1.0114952395717246518496780959178566 GT 1 -5422701706975400696429319200587.9169388110914975819065507377777179 0.1593455719720223598257531687554958 0.0611561463111743265751285290661394 1.0631061036028399777409882824447856 GT 1 -61941798157428168673666960235923567.1294122939409119238146420205989812 0.0229737743865041854246231972247355 0.0057310744728302903509951577343918 1.0057475600972050399429798312954141 GT 1 -1791783877259110793505170102672291259903.8058983336150478825118425422721117 0.3456072740329829618198863384237316 0.0558145630720408963662691258195833 1.0574326947042552699894875893874124 GT 1 -1357047531726817874909402849706881708594.2462588309098514658570552971802312 0.9110977577894091607789710057945709 0.0429808567662935103180869735484915 1.0439318843502440607362280852764560 GT 1 -844350144010991572.9561182134965823950017425264801553 1.4335532594406152632975921195238949 0.0424353547619275850147595896064242 1.0433620455973917170797416341260944 GT 1 -133646908034573045364810340720.2054424624673569643671071332497333 2.4601391272623797399827334669012828 0.0806116980412752594517244794361221 1.0875786447596280976385754254663978 GT 2 -530085372572092831932689420084104609937551.7731181201270857330504303143076093 0.7901606370745704885181501617653817 0.0570979865391402844952513018195859 1.0587929111210580449671736924971019 GT 1 -1.3967600000390575623160999536045084 0.1913265428289823087378741575313979 0.0276403026603016026364758992259781 1.0280294839851795760694843467859461 GT 1 -590845306547014930046690590030.1223875324859800862702189018739293 0.0252538652846007599949217187876332 0.0997970752874658292682644270844832 1.1051350691699798664239532184856000 GT 1 -9533334052467972257569234255748859036850.6220018407845425364143519307995931 3.6157120294066466738028810310271369 0.0340848393096629069088657912025140 1.0346792739988147394404429292502445 LT 1 -89709628356644590202899376551.7219981481663261186209020850480931 2.7225813652188925578702882159903102 0.0722927470945630230641911081067415 1.0778544861725248109258057967414521 LT 2 -1560840791378143044325.1511661913220681168760780498747575 0.7691550979979231658899415844154408 0.0019317121212684565956419988719294 1.0019335802833500904818297479550007 GT 1 -1577920121674215641467379690296907049.6596945502686968762250558482043473 0.5296754869865653143778136365773818 0.0691836881396850661116438249779057 1.0716933231476966489960566815952937 GT 1 -874875860083011748.0421476332299792052798767763664359 2.9407374213276223739413633311411756 0.0897315468081144183047854004783638 1.0940157194686536212743479768116822 LT 1 -2271806944.9151922594937765716083045470146508 0.6381385535240668496152560888127777 0.0941116048806449659622660680484761 1.0988391647219261739841004458653550 GT 1 -5056220486643083566574019965.2484288008409264511440543861206767 2.4996144803510507903067286689695844 0.0295318815003953632650564879345424 1.0299767275055501342819333583074812 GT 1 -4208.1761466547715613878034767589133863 0.4107581082084324831231138947299539 0.0966978969767650742929142624411588 1.1016982266731377902017286616447115 GT 1 -264610922521307.7179474764892515161807280830135544 0.1050978846648299380728923274751415 0.0932117215304091597528421478179517 1.0978462866899271872322351329918132 GT 1 -1601628013470374184520209420381498.7830039378082849247462266454941989 1.5524853368505786361306034500718624 0.0508268126995353184943066938665506 1.0521640025012710217447615794122396 GT 1 -385747679171918667524879957492669441.4704205775678673248552244409398890 0.2010540523753520131709223254605237 0.0780186938122447557580283935427411 1.0812303309155199027532656283137109 GT 1 -53694919713065673227135094401434.1427089291850814368057725194807902 1.7037647795571974866400986084384290 0.0116032275204647189058719931087392 1.0116710702721076837271446587310995 GT 1 -9363386987263681886546602261904941175670547.8259004271371848172547614403892374 1.5940958958234662826723820490207737 0.0794709662810503262533899188079651 1.0828067375582392319529802038290735 GT 1 -182190639324344447409.6276957467217087933116875813480160 0.2102392290747272059013983413130594 0.0918808950949736443693448211122313 1.0963797361803511463460589476229820 GT 1 -289662787379.3404694999633656606307545454734462 0.0268886862822763097759726973491009 0.0502772545320289487135894016785104 1.0515851838589577366722045265304332 GT 1 -12811535485279913543151878305621.8881287149976936836867927567020415 0.0712970579312784174085852373976055 0.0060135971469829105439716702112886 1.0060317516414412424433254865916461 GT 1 -795542771564642844.9622969880397807780536108851449373 0.3430512615324560153710984221416915 0.0096988893185393041636817480658461 1.0097462298949104789769026883662402 GT 1 -9106726196826.8803548032295498656471189137288399 0.6000268608748841153327965246715761 0.0508100375162326025876016874291075 1.0521463291880221218046356126964879 GT 1 -4.5219928935730090485167154798402350 0.0512443549073980081416409417449940 0.0861408048003866927836987375993058 1.0900787727875376612508212694704169 GT 1 -29369255130050473631277406755221.8841196818686681935958261161052470 1.4370174734535479689893190441741213 0.0910799137046229359941838051504693 1.0954981025357805600808283319458286 GT 1 -2691886057702670.8894349968709843777459178149835216 0.6160963599257746399720276485704042 0.0740203628634689499330661316856349 1.0769030347110799943022618051112728 GT 1 -2140759866004144599.9205159569066320828664291234478180 1.7696158744318675064580839142927737 0.0228877808888393220515290798164715 1.0231537726232239073491562016441169 GT 1 -15074613797634855950622352072524593657035.5798261773549113767331930285210272 0.0232354871810445820077721771128789 0.0220161138798449195839859194570730 1.0222620854428160550840202319911673 GT 1 -2074458512.7495866310469614440899234029579514 1.7770968818645630962330627736983692 0.0873806947370056331046986442767666 1.0914364565782451552312561995118130 GT 1 -10004310223382601960899879337401.0823717597430030970882777389104150 0.3813252698599746058013123852024407 0.0869439868946510873839942220107734 1.0909580496607719326398284200057645 GT 1 -224711412435279176221064779516742907642537.0615202637232147031882141793750868 0.7038656932540428147150372977095236 0.0536789296511887857425552862770374 1.0551733696809500071624849521156519 GT 1 -13.0820980332347699636927729147189363 0.7804648354944446868626706565489580 0.0375368940525892379195713595230374 1.0382595450380774375205218766117565 GT 1 -20549955.9992769139138633141692796568001312 0.3641590990323211435461305291269645 0.0314400189848096896677387946387497 1.0319448661837196243081002667771091 GT 1 -56082.9743344059704478955085679642393190 0.1555816639861636866439046387419831 0.0473588801132359251742084011197605 1.0485170255940668687326818225381509 GT 1 -9715247862853093458.6628838695639558674660242258050475 2.0323498092020713747690700558198342 0.0776240106466555667495581258760893 1.0808023409890907258516904913191416 GT 1 -6583802628975680742408756355280735.3189071891498676258523897332156067 0.9859709073038679245676609394005098 0.0864831074643776645756221139842117 1.0904534112325649612159614019463204 GT 1 -50858819592663875899123469.9283678099156499484139675798198196 0.2196506311016240851232415633325631 0.0128068518267909687850374932422688 1.0128895665224330563653399182543271 GT 1 -131691097768086.9142145451855435612033727637996920 1.1330436327589540255520843742916284 0.0615914994067494229675419207419472 1.0635699230806920413406573751864733 GT 1 -8414.8706126912207351976723842641594702 4.1930394227980922184123169869835716 0.0366224784886717016765139996368391 1.0373099175148052611659229051432855 LT 1 -31204168678502264.3811110378049680229918643824164465 1.7204746215603717488865012140941742 0.0242310210191367652381761233736034 1.0245294224512217928032458422598861 GT 1 -203564252377587042346484925.6708623477581693170745735030544480 2.8911642562685868150636421537739846 0.0626122645400041300439377780584913 1.0667486235527561884327037057606837 LT 2 -160595637590062151691737154.9498753545327007881876864484189674 0.9659511728443141200442258838925417 0.0232702862320308140598275129838983 1.0235453143765677979568009430958106 GT 1 -39900588325.1890619295715298102430602257086680 1.0360672580289631469347316604797007 0.0997900067524680635690419336779760 1.1051272170434734526321808807387415 GT 1 -6389.6271457787037951625615972542895131 0.1921486324751541471023695041979145 0.0234409130951732904517158919020546 1.0237200216328810513253913606433134 GT 1 -15921514211071113488.2209067953480995464392900849133564 2.5787738220538296665382813239305376 0.0248011155923403647810399505254431 1.0251138447783427800307983404952146 GT 1 -4362912949898053665.3692850523837016672669672351418619 2.0741571149664598061459419261462906 0.0971353610946732969371702512475458 1.1021826383459997655070045715882845 GT 1 -738912.6409839882114200146733304597187621 0.3054130242452470450047375560024732 0.0906681627886587326622665452593250 1.0950451939836933456194320172152344 GT 1 -1214082687043897770998865381.0408189281741794253338183065470141 1.4006992114734228854301664713165295 0.0557867382829609157720362574757103 1.0574032255152519523527286097725977 GT 1 -11602629534097644640636966119280753248431827.7994003919124971485787197605821475 2.1401003550267953110792394434744814 0.0020647914759428475975226919335532 1.0020669260967331021290429889963585 GT 1 -280126056538384242295874351767.2263232172812328393754214786913976 0.1985740700697200729529783564355721 0.0006855469831278956964593210285785 1.0006857820779127544159051739623284 GT 1 -1.2554490860130512859459762537722119 0.3233829146931680800856484172807295 0.0902330617945872380558709349261932 1.0945668241356688959592492026348863 GT 1 -17820665955575.6335794465264197609589119142619729 0.2261004314257380329866636847695317 0.0748422017771016311967651806562645 1.0777909633455836830244905737342263 GT 1 -2814589218290.0532197682983956143035510711655719 0.3439054193128934394602006957772705 0.0550936208481190838567593121780168 1.0566694260766685358226833796204187 GT 1 -368428826320744192765453387254479608274578.0145489410651008151310084616852741 0.6736723139942615833511748825558587 0.0775745191375024372930294028974343 1.0807486858831467651204386130981254 GT 1 -444550267917276206167.2383419606495508131689637566524379 2.4650597806245079492741717164593188 0.0477952818038040247756723876012383 1.0489752271865300770910540179127473 GT 1 -10678332551319505369997501726647380429151422.8078894770362149299278467229900376 0.8312981834150911675488507025094305 0.0151453713440064249102214188880541 1.0152612338226224735933827477010811 GT 1 -7941441584441622986231612732534096122.1035992499277258441012186826256642 0.1812606363525059863231709828096670 0.0783646829724693399213435214342764 1.0816056683473152790230765295077690 GT 1 -612350215863950085858540218.0618543170930895684969322778826412 1.9981172057549031760673203414998242 0.0845301639157071899921782649809104 1.0883178634340804542983309415067429 GT 1 -229029317592962008986175087863951.0531155539402865037192792256873544 0.5891771429760370614199089211600586 0.0793259911970987442120923690096004 1.0826492589087877052628813214712486 GT 1 -465370379848660446837234843913.6191397805925001367542732984438189 1.2250374893902882787845510153123100 0.0735593420411350074583333731293944 1.0764052850016075625050594704827145 GT 1 -7.1216362998844353300287594100808432 0.4680033950224782263120990472286140 0.0452870612458438637507552972867043 1.0463445713789252312376924794298923 GT 1 -255619080987.9491264659260077910436787942133790 1.6043298983152810937934078870711168 0.0677146867951000901999741435933624 1.0701163810966123378622102818556156 GT 1 -441746311056563.2693823566856826149648413995081183 0.4554005185836468321643479080109033 0.0813851537243888692555669791447109 1.0848883453708263215879170472841224 GT 1 -24043406.4009183318834522023170665416818028 0.9441326858776951728161520686350796 0.0375220148640432614511381920489316 1.0382440856677983203420918253937956 GT 1 -938635.7272628941262549616497128791273154 0.1360349853790456915731936555333925 0.0145820596439194168546143868893620 1.0146894228718988466242903092500003 GT 1 -947047499708246288953518.0734580976764186234756128455415210 0.1471345776268808299086134737154899 0.0452313453708698184824329087243217 1.0462862143094641553099415725025603 GT 1 -1646920941160400148224923212702305181744.9459420612651403379490849481939934 0.3300216990003658472545574597095222 0.0104005169795403762951793420173455 1.0104549803166271123718193954280146 GT 1 -322.0713137745837875390301644659540728 3.2570221072124324598706255153481720 0.0042863995906564212039536618514014 1.0042956125377223635117477454659819 GT 1 -15632391831051896111.0748613660164618971803188521052729 0.5915753691637711849983566052578402 0.0780007756053099908166849479741723 1.0812108966464068018635356310037002 GT 1 -3096430973121012105677166395097982.6174903454228847166126232581879362 0.8127411149386833600039969423861632 0.0323013029629818043201034842967764 1.0328345035495741992960626049977257 GT 1 -28961241.0153683071478443836033040356883220 1.3420502975893468431620594017956504 0.0700340240797392106961094335097639 1.0726072785360616820615753064953347 GT 1 -1213808406359319839606913379641047583298398.1119250297657606438535501734850553 1.9104917295264237495471616368362271 0.0568408517919528266023771765560421 1.0585202426053105996924558608130727 GT 1 -133165.4698881710629683591120798017977416 0.3750053084845013849226834774496509 0.0580826973467721173294005662547809 1.0598377973749332732565837739871221 GT 1 -8507422891818240993817284238511116623.4761495112779640939514152360351268 0.7436972016345370952971518871654909 0.0658101791506556421183518444673541 1.0680756270885167349714667805008959 GT 1 -18398.6623617241299491521522785409181103 1.0463452036162867059828291089461537 0.0924063045225011133377757155197868 1.0969584724673692720745382108285707 GT 1 -23123618745479354355174.7421808605926606078348695978438877 0.2400594667870283845573803220107940 0.0583729470720987870011193597141131 1.0601459926417599471375135316006539 GT 1 -4233913696.7308207079297944837854403246828265 2.9149236708912306779679037963084792 0.0976670568140211358626877875449705 1.1027717104121245198422744719803840 LT 1 -320.6811530563953316904978629322766123 0.0027313335061143430695805084868547 0.0471348130157362638321680560805365 1.0482818470509946730402681581712791 GT 1 -46502786662751022733474.9983028662586035130763614553918576 1.1464692796940686724400683765004899 0.0363935504168357138719850453406719 1.0370723150475849753256358130643742 GT 1 -2944551974328697058951235922832309680.3092954775694465143696179037983268 0.2797893912725120472299929931345800 0.0145552426539977229067165485264320 1.0146622094186688310875007219990637 GT 1 -2828630660577382.6586571817629051095397269795183329 0.0662961245819659581894455353726375 0.0134447746041237194681957492873899 1.0135359739450690187155414820322580 GT 1 -267423940677682.5437748264723348441387097732312292 0.3921189572347489543017570344424672 0.0905363443198672379574655335222457 1.0949002425919206122996977267901593 GT 1 -3244069202886541606211839198067544375317.7640616032405591316932039642859448 0.3530166764278988024781717628965811 0.0084066538546089621902003559385578 1.0084421890640760764191514507574702 GT 1 -10587879004606012647862725467158522910380536.9356367399908771428486011064176375 0.4364651938470418183716143128402665 0.0642046993262561288387870420017869 1.0663585222833568098334033651573300 GT 1 -42850190735495681019697482842.0264243390241198609198499332910735 0.5817792363026148486874433384185880 0.0232656109599914272395721057816422 1.0235405277290602493440202018498539 GT 1 -10.0675577325867643989576891938975911 2.6307195437960868372271468370062046 0.0694026327656196017796475754171268 1.0745154281773936148311564781409748 GT 2 -2.5423427621548284079849146033765108 0.9618700271812351212107032320954612 0.0418364016451737897325959363323249 1.0427367448656486663976462537681282 GT 1 -974197579313027961700.8801997398531499795595944913525026 0.0662417143059449202248316729439683 0.0188089082209448802426953034682847 1.0189880455433629123081597498845788 GT 1 -22712.9653812567713445016576112567660230 0.6548378926985719762501012615258794 0.0802626091361158954507235424646293 1.0836670943993168614608687598320522 GT 1 -41125461509176412.4117903733878008445509525886286355 0.8184831641438631566633869817597526 0.0656141256320206501217182503725277 1.0678657843512316307001190621068886 GT 1 -7621067473349.6908760652231054592405061242871022 0.7634114150652160913677196045038554 0.0030531872743933256086027370955415 1.0030578577596597646558579244913392 GT 1 -53107637363621.1119691105031439276594630744791483 0.5431576628906833598231147999400281 0.0479165679519358565377861728772104 1.0491026093248690419947463119209515 GT 1 -10.3575571953127765083504317988063027 1.0021184869984893538617162868559985 0.0336547717374130175778370516560393 1.0342341294605213665390251542891816 GT 1 -156391146400054866.0042603655787543241244484634280050 0.2490929231384816309316260071032189 0.0168711686414662968738157719418207 1.0170151080547130667956271816598466 GT 1 -5855546669348516.6165255091921736099332210323808891 0.2779258355075644743232011876558507 0.0905481795616421203490916313844029 1.0949132561067655191755798440702622 GT 1 -35526429126186825375227.6113021085097152661165449943713075 0.1074099689831763517534615188619939 0.0701724938936784404591184688277913 1.0727561873429085680837295942813459 GT 1 -11020769569994976732396501630855764.6268837217186254403233601456441909 1.1122815218846546493680993804677078 0.0716869216497974831127607029458715 1.0743862341801753714336545506771525 GT 1 -3795973589476076376756643693141.4998203370078134941923490112675930 1.0300641697789922173678534150705187 0.0126814087225435988531540639117726 1.0127625041181841542643757334264390 GT 1 -63410137003359617509641.3716366245560628769016034193628431 0.8834751883609524625237408869985041 0.0392762266630846374340584781521942 1.0400683480238455841775642794938874 GT 1 -4280507724611865973776065371660.8133790008626288235556585466442143 0.7691354648642724304686817509482548 0.0003852060324440696051286205707526 1.0003852802433460552206990241973171 GT 1 -64423380024777188526214146060530809059814.4036706864073987889151988309154929 0.4887730964146458659076713796164028 0.0351169117902154068115631114511426 1.0357483370968741756237934618402737 GT 1 -17174673515847296973.0513171964085373977182596560036240 0.8918317500077536952422706789533985 0.0374445791917967667940261097644293 1.0381636344173949212632119841580669 GT 1 -4051369411338311678879.8375294379282099668757545544931034 0.0667414168638330520085278197717532 0.0906342514777117123982556572308395 1.0950079021203104940411067733685899 GT 1 -74738341558939631180022824380060797.6170228666854254280303769149827122 0.0509242646999522490797724134155989 0.0431830029322960851611802660313841 1.0441431314497188104794907901063605 GT 1 -1911100367966153.7331998793243487708101808857347859 0.6443921006071750419183328401560264 0.0799172604481820372311642323207080 1.0832916786874430486405141955642095 GT 1 -1300103662511104662046389242634.3009917946991973382275717094538396 0.0612941595936484183861593607512056 0.0688205663464409440189181988565117 1.0713032881019964735686801190579321 GT 1 -434825481389580256725115108955235.3893904100561587765446525426583338 1.2757797280834837284585634809890722 0.0574344540318092503682539150319959 1.0591498172842619479222981309023758 GT 1 -331656542888724317121960780285927176778920.8754629646322518243391290341438654 1.4883433504221548009048053176911013 0.0389442724488056372244523936818623 1.0397228825659956531031463506158871 GT 1 -25058606395709008207812525307.4268918749399076958528829045139965 1.1652557382880260030571148144050987 0.0340141841620276028181838145412370 1.0346061282749652946137695657653541 GT 1 -204061160316914975.9366648500122750547180211255295953 0.6754572011758896579384002989594744 0.0161209878518569820963002002724673 1.0162523446234867828210127305545329 GT 1 -60819755194557560616712732347364.9068963723424075488092056141374983 2.0646589525890189525012783223261940 0.0665914331380799297062451250826155 1.0689122673834922633889058970393374 GT 1 -34078939.1667258183028553930065177781078141 1.0707316613992096550784090409739365 0.0666628538363002486830086023390246 1.0689887863199031670454622499500179 GT 1 -382.3878650294154508389711271002734460 0.7506512655513178079906911894400853 0.0325096433289554971822622394698238 1.0330498213929439784960867833883614 GT 1 -58233946895069147038924385830008747.6443459840964527588044332986582915 0.2886471751713454879277313633510126 0.0117104516919648336042979336556815 1.0117795590803497125944136014488700 GT 1 -191303059462889102.2488262110852438692326295887225923 0.7492789791528463976472341793610020 0.0423656936838889201444516518625700 1.0432893000708626273009518604696117 GT 1 -2990550703470419.3988723230431978305921703562370470 0.3041259687722810904104296748440860 0.0300752284035965980066699933219165 1.0305367655475115698252271306192475 GT 1 -3982300482887938341532992156859.4525554526620608486497953870725265 0.8984969824151171456963036864673159 0.0076694543219920132548022098279745 1.0076990158308837456782939486187579 GT 1 -1174079878295633.6673344970069499907357233178935221 1.0662374581522417190604032896583704 0.0036251490546428062948886949762766 1.0036317358309926574268886138960391 GT 1 -3042919282559739849823240.0250850117808698725640881813386627 0.9180189031286530575401270496341990 0.0990234314135826378960058754770690 1.1042760277203770396913186012085314 GT 1 -72227721200047866386353061844.7557674633354325663574705586804582 1.3284976565302948856604106683855478 0.0119939632232689844930677592333757 1.0120664711550299231897823735715234 GT 1 -224713697681896135700940747864.6835942114372973028347268489689807 0.4710700346921859337076278257223111 0.0254981478406888968504063459591749 1.0258288594110726278697457977493800 GT 1 -62365364688698426715461783499714723.5356605516729679332192383532790869 0.5015980854411518990430462972458394 0.0005927397509807730522833267807177 1.0005929154906356536059070776374714 GT 1 -223748448073777.5029309786107976955786051681484760 0.0055272223633930872898572615293770 0.0393369291259654710895384008588835 1.0401315341157915382231925938608823 GT 1 -71757247352845691087918865033920458.8260692869795475711455259774446746 3.1369661042147416878892677842826795 0.0853540411405276645139211865160664 1.0892182187916510679574294234446363 LT 1 -7894405.9552190786417080439253410201486857 1.2308460576760345537619635886402250 0.0187919835083734081455466370920645 1.0189707965418722764553813656914632 GT 1 -783887823873200657410068903252486226851566.2997500417227131677895584673632949 0.6603014527335557740655739680657067 0.0667906976185225031324787909473678 1.0691257706232102836740483808407508 GT 1 -121814125784019862917454280653987341714.7646043750424187828476661213470639 0.4222111133336226618049207223887787 0.0877756562196492187017510533421697 1.0918693281714009761219834503010272 GT 1 -219807991367613283485339299386.2459335019659619668145316773200759 1.7147855513440016582285222246166970 0.0567587079891885468588863401226250 1.0584331520798157375619647866778562 GT 1 -86491941257099779.8151839834136419936046699381512826 0.1766079319920036093056564999422985 0.0121768703256062690264442790319611 1.0122516158081866478475063791469166 GT 1 -10082.9219870868386763248493916171884155 2.1561617111811547910334588365512494 0.0656076121323099508662162121467438 1.0678588134870661482126483938009013 GT 1 -1935049.2049398985704797931022209804285782 0.6198413421606049618183256130069906 0.0875794493026552413576343815588885 1.0916542650450424735333660573848207 GT 1 -19801155434730352254155722843045800164.1987514202818655295769893049283929 0.6072081046388616668652093884974271 0.0758881336312937225536990002860614 1.0789221471699311784777628635398696 GT 1 -145993535269806535397233039142218792244748.2192255149420157110580032740663218 0.6847198468571269995492943972848731 0.0564235837141132509181813061961013 1.0580779250993547258577211559899092 GT 1 -59673221091358.8977145358868566566998555489301166 0.3024709824793107864431236329689840 0.0888800966793477088885756727308596 1.0930807731264909867460378874432911 GT 1 -461581109730.5083792407118040979840113726023917 0.4410638264492364436432861645649770 0.0350668403574313895377557676672912 1.0356964446611555140995976635462700 GT 1 -903457351057590039684944846529663304953.4981365441425842433219577048053283 3.0984126336081113789036562154567251 0.0528375858628453479246675217824350 1.0542846966604487908458487451005257 LT 1 -245557099276303814689.9251156218609329637014040918979687 1.2737020757411121252534242877148242 0.0996443718030959000425878548659396 1.1049654512650366560064171882866187 GT 1 -251759288533054097.8081127854651328125672526968091400 6.5981105808200467046242468696001242 0.0170156918467398311530431599691230 1.0171621221838894997161347425617012 LT 1 -78229867094388.8164142390724971904005787144718071 1.1125837278664865542937262348239451 0.0069938695432111862400591212895464 1.0070184412835252097108954303715282 GT 1 -19.9710968489394491473799924855604507 0.4111198700560757269491457759129913 0.0907424267596942549522429342562805 1.0951268660429828135183244490730977 GT 1 -66978016588624.7138496485125148076777602762431421 0.2548505858553432324463419962178828 0.0150511380140906412655381368595766 1.0151655559233443460552264945775921 GT 1 -27749848494503394975256869229456636955065.0385323647734015800463403119118268 0.0062194058002126455135951192397052 0.0688979704380248660604797334325815 1.0713864163435189392550678236593759 GT 1 -1523276451277174322703.9747411131955310494921653671766803 0.6092908006329931447633768818613725 0.0875079446820845861526863226273636 1.0915759000643068972223811376673530 GT 1 -123507905860906186476474497.6790369665126055655093841028817842 0.2394575149874761160820796115888430 0.0324265747684946215629466171262822 1.0329639652456802127449007217999856 GT 1 -3043802014327003206848452.2392789888053461438971525088363304 0.6209783422295729010002747718983905 0.0684794869381962491797227094379860 1.0709370676458696528344856435264156 GT 1 -98315433741223479820239094058903690654.2561254041253884676572453583034415 0.0137089699366863994629138613479995 0.0928343525066189943580899824975044 1.0974302132452459303485192987116557 GT 1 -20353139644.5601468008278554919991618890885728 1.7068137771018889030571950993871174 0.0929415032008553865454694273034992 1.0975483361295632551577722284972296 GT 1 -52054624822672669393372946801900792.4109184800233727062271836596274836 1.0026303135286918460869076035702212 0.0035222070570818208958408977721250 1.0035284246323766932473635478766630 GT 1 -135207368756247623875523334.6134398441906544391935454488141560 0.9278162094756906962692733911143034 0.0578537627201041970250674176437945 1.0595947751806788455391645487728770 GT 1 -33931530912496528223710834703599.1859970974662449292925387102557133 1.0550019401337850002595467788343840 0.0796742057936420414147734658226287 1.0830275474888588571920766036301522 GT 1 -2203538042077415496345539791331.6421619345385501689965251240767353 0.6705537583494065068044195761013976 0.0069995638205079077346416403680616 1.0070241756827889357645637648446880 GT 1 -16995099.2807582706382192916088278166187312 0.3705903492957894868386654160704695 0.0859107131135522643841329855883532 1.0898270242395839865355942689482897 GT 1 -14.5171642754527519996898564016454884 0.3846191222674039128913125821295643 0.0542614532231967370998826414824617 1.0557891257439629660203874175607146 GT 1 -18092786858056919320669023477190.9968425256305981987076527967588403 1.0429971578008619048822283000602222 0.0454562428792792973808367022727052 1.0465217938909570268028489198723064 GT 1 -2.4478138354538660135680290144657775 0.6192332865792535794122014457264969 0.0297522218730535284686348679467214 1.0302037987363139216125395086831782 GT 1 -39.9337607700544069909985610639292972 0.1798826923381257895334165659334503 0.0482679199833766066420924825802026 1.0494717123531857291604318173856360 GT 1 -583497227624.3623298745745092956561534418417093 1.6618868653082915330644186181422061 0.0700827921780391281285682002032786 1.0726597206450472250861122792301205 GT 1 -606393.7062888956950307452283638637109414 0.2610804137897612314551673796138709 0.0414891156415897341372605813180675 1.0423743609444175907808577960060061 GT 1 -193690612847669933142.7047495060201935347037907341590512 0.3460995897859716291079255943755792 0.0508208783275240341074780021306685 1.0521577503720079195005557459475850 GT 1 -3347789021844267556535729.5733348174770966135419052496505078 0.4221940270023650723930662503990522 0.0151594801542094279514878582588328 1.0152755597046900371653979525519102 GT 1 -658741359589330223371498331455551608094973.2264965236829497429251880164733938 0.7717821895093783569499150311800996 0.0335842390893587604636788900133692 1.0341611430452525656251988745640543 GT 1 -5437372949356593.4152321616363221781775720130135457 0.0851714896348080603288869423969972 0.0791835045444177691751897051458747 1.0824945074695206248515245035647490 GT 1 -2003424873171915935555020.7127069635559637262373664866494227 1.1929137870091013926080346824370009 0.0613514643450436750961172041610010 1.0633141662673626570989953448198341 GT 1 -2993820.4435386616803644032112597176346808 2.1341345795052474296477658262110791 0.0680185920483259583195476436673600 1.0704424130452267956441533577963399 GT 1 -150320112589863496900486.4642519208424661870594460315724398 0.9524104480636454041098546309076202 0.0193143532500466268739069010715107 1.0195033124103972725764887805830528 GT 1 -578459834243360227744547149730442.3625498631055258208371991116671056 0.6796876545612481332309958644452863 0.0771348203627466906816289046678548 1.0802721227134633280168349034540048 GT 1 -1762401144034090804085494881353207565293.6911693967600447099624089975217102 0.0318260189195019259300172733592791 0.0623881015675181607367470287419459 1.0644191699322290137822994439350063 GT 1 -53489044211830596222042053378331629.3870584280016497061233943741169758 1.8449282991391711652376992525246212 0.0663470751964870447392879553115551 1.0686505106667703840211006803375093 GT 1 -1783161193.3601253058211523825504897500534597 1.5892867775249639750260575989047287 0.0013099608533099112944439321774788 1.0013108196020619366679750445977802 GT 1 -1744981481305616752404.3144569993047437404666836556592342 1.5359209032209285639407208560790993 0.0807376443399476825448866020044777 1.0841837178684557367127121227542641 GT 1 -312.5817942177789336171756789086705505 2.2585979761399077852789146074224823 0.0840636234491845128987548659899840 1.0878083746342762856583048812313591 GT 1 -3701346020797971701.9106883842078900680128814990965026 1.3774480896359443958446759544790156 0.0865297420854317532188669163037495 1.0905044620799151744428676313187460 GT 1 -112433198921460682531278115992935.0358602675504627584191531030046906 0.7272839452668762030130426514756735 0.0946213730452147491539024388836231 1.0994020504497805070964802994497934 GT 1 -49216.3046564657011829233593375553752652 1.3635245254129091847473600554627780 0.0453407612581012646479532539890493 1.0464008202474323460220133228569909 GT 1 -16943345421784451877.1644488139759077189863294567273361 0.7195495789177020999564313493304754 0.0568492562363653729975382541488109 1.0585291535954383322995968260320691 GT 1 -53342740376485690668068355306604456.4037109147568003261303624670549637 0.7420299953216999749582678589552282 0.0259048976070804328616824481475116 1.0262463390456876569180112412093813 GT 1 -317750738208862.5178431441119459436782473233125099 4.9238154344721512712729113486119860 0.0171425096654582710717234993596494 1.0172911435720723288729976743681424 LT 1 -4875699285876.7258562002224380325411745923093300 0.3878210843131542422854084402581191 0.0116293051430581537543575553919814 1.0116974543795212733999858757061427 GT 1 -74007387964026931408188139843878564.9048164836229081327878472705978158 0.5669793570790368269669982305074706 0.0031191046526208846969557924270882 1.0031239791983223697690268723222969 GT 1 -144034498.6927902401052319517708184853483141 0.3015718763864293781182602203453745 0.0431188276688206471988956199664618 1.0440760620815961949313505009613688 GT 1 -48.8094075945777634062547620408888590 0.2394774007810622014278648834647156 0.0339484723396181178803915531524308 1.0345381049288783722968023373018421 GT 1 -291146678012089.2135901601351488859664695808803048 1.1420442053338771518538318741808814 0.0031711049997959233042071862675623 1.0031761436080459780323981288914124 GT 1 -5857642087331263121741670950565411600.2817290946363426498031176061636157 0.9110063050892971235951740030359995 0.0958272701119867517666488717374066 1.1007348639570888829146471535794297 GT 1 -4.0920713630539945051913940143161258 0.8087725697791859529015797943360453 0.0370419129796077590561469761557583 1.0377453914744899229835421182812977 GT 1 -10545169440765740.3920080538445363656881988830896535 0.9255200108112220630745307345208822 0.0959394341816019909632446857898048 1.1008589232474751688164221287804164 GT 1 -55668882604911072.3443528273482197463809119592041563 0.9688032140101310385080847062453469 0.0093868426082607808660091466151996 1.0094311766713672371749296590699871 GT 1 -19163835508637754149.4656124760646915896583390800149019 0.9267160858453858011762160950942895 0.0838890592421114013624458843094033 1.0876178072772520834776241098272675 GT 1 -83829337595239825435978418077.5853275594126571521183479755356311 0.0037012041396740774307902229487820 0.0786090339103794018866955415757636 1.0818708310762249336206976279082937 GT 1 -264432811.2386675686761349645222089879971225 0.3801844866112104513725291622887805 0.0068485027973912748816597282481064 1.0068720614151249507294781674302378 GT 1 -112514431208844424686.2398865226600036954531084914114693 2.7837345013165792702495604378910492 0.0231701708399271836417535350144410 1.0234428190187439762842321441609998 GT 1 -2368963634169405187452.3813116602179889871658017154372295 0.2416283041095322527491488871777979 0.0439976163538890311284669445127165 1.0449948725801716057765888434187484 GT 1 -33738632284766.2788376645486783929260978660579939 0.0181896627670744751783579160350720 0.0763754566095791692171199485462844 1.0794496282402946930725993213087262 GT 1 -218121870170362.4508049449952081286456442451659702 0.2011702517726836001295367906794570 0.0068587266831020048659961907354655 1.0068823558549603696129774557740877 GT 1 -52132918582.3764466465319014008539601904097173 0.1426148508069320059834551879219004 0.0120238951078388680624824156345724 1.0120967668585598071216492092858036 GT 1 -145311527372982590292034505.2189333716979515723148627275596048 0.2388335963117225600980570994325547 0.0460957056142449783257167252491415 1.0471919329166350589751457508910014 GT 1 -11669372963770858.6564664500730945720365669740117651 0.2289841651792607677445881320467688 0.0019259868133162980691992112433781 1.0019278439107987764629919387728325 GT 1 -8360249997697209249.8289650409685528419841734197540831 1.5353907393059207640887272121059524 0.0973782498733687818994958250852949 1.1024516946863147617880879405320071 GT 1 -792519186073619529375337.8913911114649887841893195938160448 0.2751827061551935146741007597012508 0.0740396893917989387194610002950603 1.0769239063687751868176473709770891 GT 1 -85.1718165454390185957705722677337910 0.0184999558913927836438350052898021 0.0872200010354917406558086204611676 1.0912603924134820339735622148586359 GT 1 -18583222254667683663.7072085448267693159720061722700424 0.4835550987862763829479169040757927 0.0661478522417165404297519734451162 1.0684371533287333238848812725435907 GT 1 -5850179851109646475341810.1932387569194232394613121377336729 0.7807216103079769883954856529639125 0.0770431670699094768657568192144911 1.0801728137960395299630186426411897 GT 1 -935427.6769314366716821122326543717393558 1.0518421649472657680540343777811040 0.0791823414875500578685934996371035 1.0824932443990403065873696214692040 GT 1 -80055532680.4574757931112693149486833339952992 0.2053774551975079616661569894174188 0.0726273261923337070507447091970781 1.0753997728377266939316055953892435 GT 1 -60809772654800161904.6951343907620950573419393191262776 0.9559835073194219102953966396614499 0.0821405399880385961588558271452694 1.0857109937505658649334890984093124 GT 1 -13116441647270815215211.0865069038481365446080179397449087 0.2433045419672991948580091294561502 0.0003164992253334148126938742764288 1.0003165493217838371443308851100503 GT 1 -1053098222359133740290061653990620380687851.0417319425488099130113053919080271 1.4693792838086877161290742840580779 0.0617303047700241905941284071156685 1.0637178497351784745432905690674171 GT 1 -16088832829501740821661698428.8986460674721761392563510338983187 0.7362432654720206513923148146088009 0.0167944182077924028616146590959785 1.0169370435777862857044006424900073 GT 1 -3852583568992557590989647227410774.6004663679775231513038847387299797 1.4627618315518795850066583405390439 0.0602363314555590481068052799820598 1.0621268517705836032127403714527988 GT 1 -76268860.0127296904770902348281061219691342 0.0776027435398358214755050041051781 0.0247509650260874739798074122627453 1.0250624201124846483877685386491356 GT 1 -16134.4157515751700505997513784235386501 0.0101647480166102442746797209741022 0.0903417141079747584030302855012000 1.0946862600015430532793870935218563 GT 1 -3713.3164889810180677141121282932013003 0.9730235078111113154859606867678540 0.0643908821205945032929049252262071 1.0665574988307100463389480026378602 GT 1 -39707974043486951240059982365371132322.2676341470040474960080149586997587 0.0112830644717093172970682009855763 0.0702121132149676991144979716184063 1.0727987975745152795499976725982155 GT 1 -11850878813532.2230273658303054784336448778811652 1.2067019164269299469258244807625806 0.0008076504638977285036887359849107 1.0008079767892500244721731098145430 GT 1 -1478671994971.9744021739846344663803351372473457 0.4161740033684086473029089757566061 0.0089095837764437300508296166618815 1.0089495114542294098878977056114388 GT 1 -322994.5226371921107909722381956198897050 0.2311076723105130030766857993069671 0.0201742853693461112005566342184820 1.0203805653469395741613736526774988 GT 1 -25069932170258869714717514030.0614158579832358987294879971829538 2.6604475373890822193865412951661220 0.0667659129155049312494851062344323 1.0714865629852316455278616550573985 GT 2 -9728554021512700.0649802376035429424276538069692065 7.1519366947180572388554816380852720 0.0770536530231115584692513319194486 1.0801841751212881519609116311706719 LT 1 -778375700365454.2318586136097806608085248845814395 0.0404645447243720296643284112314604 0.0168965975469388030343351021997261 1.0170409736722496374966252254738654 GT 1 -240672946452215908184470534150906665109537.1124256034646946070468681531513514 0.4334743828512714624725665872113325 0.0966669962208646284828902502607824 1.1016640185967120514037794890367404 GT 1 -73727951359827.0776079314165112309204736506897635 2.8437928045706231754640658667416863 0.0495641900769764698915283290602431 1.0508346522925242767210801479872449 GT 1 -17135734.0462453893454342999020663771974067 0.2997087347683495305573197717790697 0.0190020849645542162326920188390687 1.0191849447651632196975844215975023 GT 1 -35877394872559034648079347969989166298.0063129382430909805665812516664018 1.4098996120404190496882768476880835 0.0322071122265533822024289044722612 1.0327371735097621143873434877222965 GT 1 -7689463239466999084489011335212678527.3832325638463822701955084194712849 0.1787093382874316014101805856392831 0.0372699931700487365876378258894118 1.0379822732335202349213759521360698 GT 1 -358544630311245258507234394221212.5578890086298607400169793849030087 0.3459106651772295233046720907241969 0.0768973277247170625966589064700367 1.0800148130977038749301500366136649 GT 1 -23905754295111203466425869000628106.0580737793444474195007459459254115 0.2291033148962454722689016487037921 0.0873608405267111337173041728992782 1.0914147016206006760884221128226268 GT 1 -280728551875434199804734042537241604138.6047156152502710101726725210643247 1.0944941629719981891857917938738633 0.0079437900807437934379334453166739 1.0079755100775074954154976281060679 GT 1 -5139477.5872891607013244898180284720183384 0.4397215759258264087845149826602299 0.0526194201094281807164005573456214 1.0540543870236981423934953339001361 GT 1 -13306657195.3012906574748099791246389252690792 0.8052743920835939686389565850635327 0.0877697792468969325509382201711468 1.0918628857278712197901807053745961 GT 1 -61405163775274.8654702114814313632622175479951184 0.9874395389318937631224425152558437 0.0813069446824509016476022390138799 1.0848032109827170791223065657329041 GT 1 -5737754161956120521084097149849569405186289.4412047080037984054100499735034456 0.9695611655625354249727808124643365 0.0034761287735085303758710473611113 1.0034821845469719437463222643631404 GT 1 -122623097336824201.8869035493067410802285934477505657 0.4251349116825692523426774734917078 0.0796257809047892606791744142997946 1.0829749317573284431810569323204562 GT 1 -10.8337729128029671234082852349635116 0.3196585483062033026462530817614448 0.0334947083936981705835859571045699 1.0340685053292858059598060542776543 GT 1 -46103649097172.4912851873869331989063902693404921 0.2331793132273683560770517890271414 0.0721664693658772111300014167594149 1.0749029473799066926849332580072145 GT 1 -546386935695342642632840156216560567999940.7191325400363196036525662270309375 0.1148812432772991192250391863113377 0.0795510741780517067451384393446369 1.0828937651042636480312462758441070 GT 1 -10575486342154.9455586371231694577294896809453742 0.2839579770448454381998047720990148 0.0232027123319801335417930100414559 1.0234761329421387271022086924867044 GT 1 -4505030535560802.0711840235317484329178934442012677 1.6746392096353796453651201642629898 0.0573985509861351505365464864742120 1.0591117272415506045539361032169151 GT 1 -1378967220910.0819043574948182426412344123057638 0.4954014573364399325286551232540952 0.0232339802179642254032319459248011 1.0235081440736618464764563509999182 GT 1 -34817460213.5242419772739735085742800630294338 2.0013679281653591814066558206511336 0.0243360405184721309685408896082150 1.0246370556651199874296128756458188 GT 1 -15121010076723785444421661336561951546651111.2523632130690379246224476493160562 0.7617986820699613951034730096997936 0.0603103911705507842275179172734520 1.0622056616201517178383988785842909 GT 1 -10909.9272652971811703989024009998076751 1.3322102189431299628262920974827899 0.0978177906488058173154077337751151 1.1029387733873767141666626966432378 GT 1 -279369186438219560125806689065460.8428122316293421548630636587944305 0.2018869514459112393762204656170579 0.0336508146825007841243389738254878 1.0342300346021884250059895820748630 GT 1 -8464234756245862741557407678176417268471956.3468363462056585426522853792504401 0.0809964765863199552632844398278489 0.0402461833627682686633301583910655 1.0410784684097551608185061402830832 GT 1 -312974195690760985299284863031090323668159.4443909179504987303311511801998780 0.8701899549592785489769278032400998 0.0383951519313872531250342825851672 1.0391516735452126274447256092769023 GT 1 -503.4218153145520861324909449924047770 2.8031099341511751564877632948471229 0.0192541416468689197539469004889433 1.0194419168398255067229158986798724 GT 1 -19539169450659616189630066702631861781712139.2432291728863321380076708351630060 0.1001641616509149326425179134887309 0.0627709862277463218498583629878462 1.0648276148974083494997010464035931 GT 1 -39863333.4051740008095220100320997489627911 0.0278310499735133987439487102172288 0.0363810283360945271583140291739345 1.0370593201165267702755620190083662 GT 1 -217358495459792841269691003456716623967215.0532681336783627552253598058502415 0.0724622077961564308212254902976280 0.0306355979944250066318223084976419 1.0311146779228833571835518457147304 GT 1 -35568624.7152212759479825170692687250201200 0.5669067998452588368606861849996517 0.0404265578042047238684484615089513 1.0412664243105921432331055571927087 GT 1 -2762251133029489.6745545620382358319507951905147681 2.2612912629158989233646765606963265 0.0917056688689786991088202393258524 1.0961867996791535998586777758481029 GT 1 -185526683998023855788506992434.0258497453478193184558082689693797 0.0394339977652049833622462811239302 0.0091781527679143150184168038639479 1.0092205315170915456749466094483826 GT 1 -369850414233617270959.4449279270662428550162294188033961 0.2924283245182081090179993713508885 0.0085851419970489404254354117851841 1.0086222066177590143109546369753308 GT 1 -41810658047736.4049452378089862694444692400947983 0.1947804044029737224177701270338693 0.0143193114769955463874343815954994 1.0144228221400729154758314508849232 GT 1 -150212695622809591235014959.4938081478482186092842082819431056 1.2741585169419735201087166252326402 0.0531721851826154788362272681465386 1.0546380240621807218379729567722745 GT 1 -56773081071995880988328913835.4315191064205600985148433828142476 1.0130647298329773590991380429886494 0.0580204582989700181031441008547658 1.0597717225810704735394879904935778 GT 1 -63101590237400317465740876165041443519148.1968591406304165576984494102472413 3.3745101289170874079131384051825585 0.0715929938004792520033363059149288 1.0742850580791788284785009526759790 LT 1 -1.5307855022173574998750404938438007 0.1170597484591080314711967561750117 0.0375158919369271182623231439677279 1.0382377240598084317181353098858050 GT 1 -2015863648935175026.9638943093832206603722529105690981 0.7719601685230998343512060241519359 0.0016301271129209864633796901906540 1.0016314572158108477718033617884368 GT 1 -21137184375.6068304982390152403295193458956866 0.1701734044719463198853579711106866 0.0842022071407329490481526517712987 1.0879596888305468996571909619414313 GT 1 -2108730.5587578890239537031101452770525938 0.3959512236068513244650319538420991 0.0925362782894461355251847722147690 1.0971016897187205174668755455970023 GT 1 -13.3217877318351454444177295351223361 1.0743274457583689609807030534064874 0.0926801200449853643606921436180405 1.0972602119311853360323031229610558 GT 1 -325685589907271948101620020832015.0526146494535213622219620985301585 0.2167550223715430737778491506785873 0.0606216973346184647583969931796423 1.0625370026696278301282331239263794 GT 1 -273331.9632573781568092705132662131676259 5.3114150177633064198643938425520664 0.0155701829526878584913696378930325 1.0156926713594372173988895091287917 LT 1 -587887087127587830278181347506195728618023.0932040095465265458644679870080707 0.0121653083875263595891040386990350 0.0299718960271728970216185945059726 1.0304302347365596742210728291479858 GT 1 -2518432382604750016832422916449037143.4352831147051618740515130091908562 0.9021883050860583486775837979885289 0.0895382714600011274110269150830245 1.0938034141520521093624477320401558 GT 1 -498048713220.9655808008120055026905052219295905 2.5808706095937081691466718019412640 0.0049808726948522760848523825769189 1.0049933185860528768003893169869325 GT 1 -23961185092675432856013271639643920456.2517264331480231576898810085892793 0.2605682805584938648890554493433721 0.0645329947562524133458505198484726 1.0667094035385676512524539488819627 GT 1 -6913587070187081942509446726.3742033592866404766868751986975729 1.3320478969152896939842420130277650 0.0930867411573822421069701151528795 1.0977084686745000715253368178274061 GT 1 -29619219574059325501100689555109.9122572743828137444138600841907045 1.6793629496007901424433002801899081 0.0170662685156296152032264709901024 1.0172135756706383826455514818745868 GT 1 -18184714474978150503816046858763929834088449.8520458879700898803822589675357133 1.8920548095758177273251459709178629 0.0891022705224449336004656398378621 1.0933246498488662590910843248566261 GT 1 -120588150302.0956608208874555355808857361695874 0.4760850344067037234072889022553815 0.0602779411732059006235292681277190 1.0621711295398134323751185705089792 GT 1 -362505275851191350.8966605782329630203892724380434830 0.7003929240693049546370442236301382 0.0537474923263968897936950191576010 1.0552458241165759558472611751760731 GT 1 -16004267640097381700874621155893253419363.7320860257465788131348213036969029 0.4547361067442257493963746615908326 0.0794918249157535653740823866177941 1.0828293972140076139608696511229972 GT 1 -18341741430580240793744710617048.6971480121029427460543277949312776 1.5682013190527363585678808958809138 0.0095215163555157991562987344832008 1.0095671358008419632063951410223281 GT 1 -14558010390165365165480086004.1047511068768958107932920498686314 0.4680352465954194114195148041163115 0.0019695094800333156839262546779971 1.0019714515141513018647570482931778 GT 1 -5186848663556923366305255511531075549166033.3035755533284059356484860030965113 2.4736361696183220210996062247893311 0.0508511085508581007806759771037594 1.0521895996869078364925571449850581 GT 1 -1961493208327641357659650729429739.6038258295559963769725959769981810 0.8349495301735241233064354309588249 0.0913619915085850960986609598525825 1.0958084946019664167870068626088476 GT 1 -114602162658351416781.8508255056380737833916923612115517 0.4506552695426799216977998297572113 0.0183455828724309423233425235251137 1.0185159499504934552263564925573724 GT 1 -8218881458.4825663888324004069906617306860633 0.4691073437783442493193848730745807 0.0151853108667266557894844218286102 1.0153017883688754786068190367107509 GT 1 -32907002882728260615181301809974128337558.2809485768387871660444836417445916 1.0104234860544248852631508708760272 0.0697548343350581487483954115445408 1.0723071085816559224273402428805821 GT 1 -1087841775621333036824432896007404.7199076731035241233976309239967684 0.2158801772120558482527634115569114 0.0266184344547468841410375031981848 1.0269791199732771508239293982642059 GT 1 -4579582268073301953279708086629214.3524772810008633976754656327976520 0.6991795322601193250394868381468359 0.0045809888844253244784105457239620 1.0045915137692257239400488903483000 GT 1 -78683011899575160939638089422810511757117.9267272692494304366135665521640460 2.0906871403520877028685363903893301 0.0092528374604742720138299120874895 1.0092959108677243337588121623107036 GT 1 -521349.5632763549167817990849733896473883 0.2117883504340711028784837942902161 0.0976937403587807178950870758210773 1.1028012825778180539720664158780098 GT 1 -657.6818343294673582470145330046698031 0.0117296679700829991972959206597624 0.0463998133275031675391893767926404 1.0475107869155163344505941116704943 GT 1 -260072817.7671990099943206777417262025337313 0.4205183203915124300819359168310998 0.0012505210492429466806112203380566 1.0012513036031583741781315447065333 GT 1 -2079.4093199827147635033750400334933502 0.0425160096774514091548526702912412 0.0206253210586483153580979614215221 1.0208409936918399743539093589799341 GT 1 -43185044740012.5122540394758487021967010123285919 2.0564217794113055949782058733659052 0.0937542103606920799741143427922843 1.0984447187392912506430395533806111 GT 1 -1388.8607191852933348313260635098042054 0.9986063691023029192678779738990858 0.0440875219581184708952571809047489 1.0450889202871038397374936832555914 GT 1 -2334522073911863813263.2014874311783818042235533763904770 0.2283957872940691563493743640489016 0.0285813325225123495743797813124128 1.0289977321689868537711612266913437 GT 1 -1576538.6386546843422580433458809863041102 0.8345244669271153843020454043020422 0.0873176610158939706140481059557739 1.0913673899433298948917096611680089 GT 1 -2029254586186420090041221471.7819617712871634885129201979082545 0.2786658863043812674714470261641935 0.0799672826548239843164873080263840 1.0833460472396627250540443506889256 GT 1 -753829529207841897871741813601.6638225767258631076461472747858301 0.7761204080171514816789899415545339 0.0958144497906966160683838347646270 1.1007206849955064905580396159802935 GT 1 -28130754211316218311804571691032.1374223114392443589186667677905545 4.1396334875576741351053891822271971 0.0384724556915337306784661640890817 1.0392320671369326046066754786144140 LT 1 -1954905.7990639852624835852547532845556174 2.4758525381435409324066390681271818 0.0151780951138488950338485391416742 1.0152944613798261251953765494633399 GT 1 -3139.1337131428343161668840693212390911 0.5917404901294864759567389193696982 0.0332955888813362476797532672926338 1.0338625064531313998801754318672755 GT 1 -34664.5906357510910482364001968633798539 0.2629867934125460266960539653363334 0.0627479700008838306521431171928444 1.0648030574584946538980183305530845 GT 1 -5067711206288637481114052069299449.5561718217701922219479748834152718 2.6575439410744800300487480210072785 0.0409098537229747103522896392509835 1.0417702082275802258152227315299742 GT 1 -23001650994472027004495839688633.4616025846758822793754936827936100 0.7200287580514019428564030373461723 0.0713044805414133062808320579104166 1.0739743447422456828051561258134681 GT 1 -32852453043808567342780250.3761326530828731090569154669436370 0.5954648680965245960420491256511147 0.0179934945994815430884600044419276 1.0181573460055015402220612896064602 GT 1 -596337491121335603.0014808503744220808195356598941715 0.4496337049270650880250521292533220 0.0953992642924509847184047708648587 1.1002616086427389086348430450879150 GT 1 -9211084223355884033679308079241422950.1297462252759543842818530702228630 0.0205903511737054293026364970297015 0.0954495899034229225020799328281492 1.1003172431441476340508669341336027 GT 1 -5558956098871000607294753565315502797111.7572162736604637065869352237078876 3.0238114463543259030728098195803335 0.0037044497526037063580417631229468 1.0037113282191320073485162190973073 GT 1 -3534799059840519974884288419.2161046745449796779182292914374790 0.4062778682852732442153518332591121 0.0358825532107902905276906642700360 1.0365421590237107433728181313935831 GT 1 -308185512615197784168826378586671839360.2081306356340801440380293091551587 0.9713843600994992807977208244193027 0.0761028362620423709089126841372925 1.0791545081900526747619860356793063 GT 1 -76.4698268566209268896366074561744818 0.8761664060773495714420608206633989 0.0805518828156243802039112401328851 1.0839816615602997948601396998762490 GT 1 -10134.0354457682874965909958212661215357 0.2914376049134085425485647625900093 0.0082683090466776357971037120290052 1.0083026811109489578322834754879827 GT 1 -567265.8794772036925228118883226517057953 0.8739630426711323302933101003133252 0.0258862496166809953161317503172022 1.0262271953174642343825396536147107 GT 1 -663424140388201.3739439334520866738133794845678478 0.9288799936201722733266420856568221 0.0043400836513295902081628446377725 1.0043495291538010712693205626467233 GT 1 -6927257743386445139730532595783.4400895116574190072246386178002399 0.0119908138740420595741286811038896 0.0998077885707671470250135746071801 1.1051469702055763107560794238513966 GT 1 -71.5556112445737622911880569742732617 0.2364840945615775967079345942166385 0.0269169776473460708562884029508955 1.0272858742772561728492892906357706 GT 1 -179280217441298652018003633427554968187.5883053232964166041259435248030341 0.6510972156021164782256245467120006 0.0554641699649152263211834763973208 1.0570616573073937091501265237985207 GT 1 -9965146691038779441504509825.8222178132517632419165928468402506 0.1751849888584668622371851758393569 0.0379679191396943247781066934954099 1.0387074807848298378991386604045514 GT 1 -623251676676498476573315933931504.2245641693649688355839227436548009 3.0871176596574583374133676067555230 0.0672718998330921643413680918418138 1.0696415459376233851515462409998853 LT 1 -74078196978654255265183.0799459860380602958922922299934376 1.7400501869781235035903155032893708 0.0705910481784542027911337871244708 1.0732064305489964955660089445429590 GT 1 -59895472909999767485669719.8391373338803748912919576796544294 0.0046458438798722178171414167800436 0.0725003775917065236657954349126120 1.0752628916075909271815597529027830 GT 1 -441963.5341947399859676983296108985258202 1.2606328764895567176876192051925474 0.0520603385225915805904687238387900 1.0534644269833316643103140295868064 GT 1 -249499809264292276216703982.0889153688557351502855985619326255 2.5539458015340016882050911754775468 0.0385797030700597504841753060659082 1.0393436118978847796502873429580186 GT 1 -11880468348519676804507732373.6413496173992599595540849352781462 1.2225659760197596723626463925470302 0.0084909088805296131424610919416242 1.0085271620078717117044721103391299 GT 1 -1227666081608329046.2983894006307855518577804707106166 0.3607541665036480880443274666671271 0.0596790748734080772998716658994195 1.0615340522759802994930738567674973 GT 1 -53818761752356668199744408942809214945184.1470742343354222277705969479357491 0.4487809568383598342687684819339883 0.0706530228352309554728837207270409 1.0732731145668745356459306204688846 GT 1 -134133926514427165667017901779225121.9113681310491918969669440942798865 0.7028514637019570354749179500141190 0.0484756016753372856315608397522795 1.0496899506149737189590840796473504 GT 1 -662522069216583356665160950429.1871863045652949345062735966386669 0.1901314220732419185567357650361096 0.0669655316699914929816710638797631 1.0693131352694845547736884609707790 GT 1 -4864388035777257645255912799140455065396822.9961062905973831192509621636732804 0.3717167478984722806291020696920148 0.0530315106460730297344928597691187 1.0544894605271359719823552189158415 GT 1 -324752867743500126704840912.9871523151833245045361109970281329 1.8205750824561422112735040069813866 0.0464537644072904293964368594001082 1.0475673647211549527169261953877188 GT 1 -679021155.4455333380168664919219380529099101 0.3104211983340007886031485280566383 0.0812487245601301309564786523024526 1.0847398402221822495249355295768719 GT 1 -13539523595089273578058161490.9468460612231168436433446230876352 0.0186712705729041047212552917918199 0.0816644795580491883197201312219776 1.0851924644595878891471268800288917 GT 1 -69125328657.6327637084900283538083003125105235 0.1551794880337290631626595583219838 0.0356084774165608891718289666944681 1.0362579230668888507298112730922682 GT 1 -442887722802063.4962110111249002887916897593451313 1.2093948491098219867132277943808880 0.0048151617970566127011813325520154 1.0048267920379698481453265541583614 GT 1 -780633943133.1114058883024130742652599317584431 0.9872741269708265394469093812987890 0.0659268921672019455364988633808445 1.0682005699056184615489788140471259 GT 1 -619745181.4885732324616659175967819617414971 0.4201819588436701662329924707486917 0.0680147335186894691925812640414410 1.0704382729179493931160612697148257 GT 1 -27681543711002181465475365.6990506351839173130919508469138327 0.3068276045342765009638213827408840 0.0099815179763024869178879874144425 1.0100316673169540852039727690383089 GT 1 -2221.5415919422050415441732173413541608 0.6693166099367362139160727696798292 0.0302873521129128255271270838861074 1.0307554906638979022687017411601502 GT 1 -6306139247003078789347.0219664861338022213393829797994915 0.3737334489954455121955872528985748 0.0992671830560490043749540728544045 1.1045466059234003354206371285685076 GT 1 -80713064826.3272438188255112758480975959451120 1.8583391181850456906423501239013810 0.0844615528989288336484959921538360 1.0882429200081652987301235964703561 GT 1 -58849859018199343322403823423296085.9789008490975264696983945735450323 0.5132977490878058999352303092710126 0.0354871991750956016491860164363556 1.0361321747442236792879513774929879 GT 1 -10463796231567546008373190501.2242337043922543268576987237258600 0.1337558355383696012363715158266551 0.0438509297852554590936728996447736 1.0448414468997683739693649442064112 GT 1 -134504952331834333091807310.0016796127481769622884376507119486 0.4534548602607847612370948848662581 0.0356922292270969526417908300259627 1.0363447710383452613433411160183569 GT 1 -163551716874355715796878934331830.3276214416724698517663346341698991 0.5424833610723537021317348854473348 0.0965080592109287003310257333579881 1.1014880889795970385261050708533259 GT 1 -31059965213637321664022106006378.6494929711593566872287502810654560 0.4934803012563561650049423049514631 0.0666661172163909067937835406169912 1.0689922827904007048866218434947097 GT 1 -11100051538.5407116294167869781446330479289692 0.4582953618086356062029986276457936 0.0670824787933611464754773285679562 1.0694384837502370728383510079377812 GT 1 -3890007257087365630698525514329909.3153127880365071289580447515041865 0.5565229540201965379626133295785890 0.0846005525929256274228074775051235 1.0883947544255759143791447781061815 GT 1 -1995014996.3517269296046963109178771617445229 2.4454688232634554197790869472040547 0.0031355403047447864334320288395701 1.0031404664112783318226450268056205 GT 1 -39072748273082540136544205328932771077270.9582380829543187021397676234949512 1.2662489690690839627688801809554254 0.0786100321287139551893661897552813 1.0818719144587541936904528598288290 GT 1 -162361225276577859869459011414141246.6643303757220597436017324033944723 0.5176012082753347596015229256310384 0.0127693054045868926617549162983071 1.0128515337339351695088075818188116 GT 1 -4275168.0782904186482741552419805662733998 0.0509402804568647880200964298807254 0.0976100051222738071698459283754202 1.1027084855363687492705310506233968 GT 1 -4518830453827841267386209090876909612264.8447365491788917112850077285295455 0.4699760117377086912139067705507932 0.0431257385556132502535396049567150 1.0440832844117546508660084601053690 GT 1 -94302067947475.9218688411445352535692838717832736 1.2139924512128892508857238273130970 0.0664624953891749732639182628817201 1.0687741404701548638508373732295484 GT 1 -1447792961481771629038340443545692217608171.1688578268664324928261865967448507 0.4211392956481141467479365465962957 0.0765656329142925333949116623482458 1.0796555516185981688502146295685164 GT 1 -32944.6650988034073423765017392602811826 0.0217552842801452995404047945863272 0.0190957167296827562000648064543395 1.0192803947476144193366412378484225 GT 1 -40470263612841314623485579096.3565927412768792902304220927715521 1.6292688263240662970319536918461133 0.0129099777240539882167725591917492 1.0129940357281684721311224251683671 GT 1 -1788946591174743374947168911063294465067854.2740878358819244588565677884573108 0.1684087111900787196236392919432380 0.0126792284890473445826313649932260 1.0127602958835694280332735550171671 GT 1 -684745295841.7649169114411634572029637172355101 0.7170171059797339977605891225718714 0.0478358705107564987704109600974728 1.0490178541251170544039301678672385 GT 1 -5526113369129797.0000228082624427687705421577711826 0.2162262461852058355965031890784654 0.0116875790103389501579064571104391 1.0117564156432974554546287097109043 GT 1 -7482520268292200041899496561939054189051.7314776003999262629667762752722458 0.1426276555989726837493669334963809 0.0865617419969572059168672415381433 1.0905394938412211340044040860272570 GT 1 -2.2053507714937277352645554198630711 1.9402620216429899904024930622399313 0.0287083292589030136585636462866708 1.0291284739827026520350940439159908 GT 1 -1430375880279822122856.2084719124874327596076570423758486 1.0475905844760931297532885714719966 0.0726107485103925374941250482429934 1.0753818970319798685056645757079663 GT 1 -29309564845134575801876352731125992.4023608799490390752286561046993100 0.4041893896877070846345962022449112 0.0262961270888645401672798619378719 1.0266480534854277646168437524786221 GT 1 -932894909185641607126525283761394850.3882976226493175639215049735406869 1.0158636895721399121188538872056151 0.0174680076917617649326568037875237 1.0176223736230663601100395714497587 GT 1 -25331425039370413194194171466.7781184857256304754101056187998917 0.7045584934040171699145091578572933 0.0787311682987446638164255957403113 1.0820033942207517113260338256848159 GT 1 -276122574853006651213907426905770.2453287602065036424128921681568417 0.6387843019824345191283866318499715 0.0567322379267427997355604409437900 1.0584050895985992497030504954488887 GT 1 -56125379689296583435888329368633891.9440524663633295870599667309209736 0.6702099873661913300251193647282017 0.0510932208597982851986126346325559 1.0524447158186471655085509494933014 GT 1 -6654.1458627008033723685146733636544963 1.2829183392683918772098682629565640 0.0438727512853197572239036231726859 1.0448642694383829418991551361901056 GT 1 -1146805534054673663317330373684.0433210066131484907118224656180267 1.5580486188453452307111850339320178 0.0695758150486953671861244400918759 1.0721146839718176688635014076895487 GT 1 -4403235578299593518512254124.2510611734191333407460614676147533 1.0521902170729817020418816258050042 0.0487266343063531130985781843931011 1.0499538069608442443180452588284654 GT 1 -106855148328754749186873995847555740.3597652386486000593821507264860019 0.1076602022667593872690198772849801 0.0670368480855393371178569819777785 1.0693895731114290953206622104129661 GT 1 -5043797597191605503562510.6270702511482082471541902379656659 2.0492385434440791302608216004354899 0.0468574172976607134150014170455799 1.0479907719311071140828425734359794 GT 1 -47115829514513858024199496349427749201.9584496691367087793954760954108242 1.1193681781599482270357075594091364 0.0181393250985863800241304251124532 1.0183058596125678352291221097769256 GT 1 -670402038828073845838820082712.9976342655673575439127616174218722 0.9368775835589301538497329226608226 0.0398478963007160980100203749569024 1.0406635657173399733206583812241956 GT 1 -90576812.8013652563259864260197490708810780 0.3594762907155379556066851947911225 0.0618977435710069911469888659087378 1.0638963205349356311930974621829062 GT 1 -73053.1372310270919762199394307013900885 1.3801173467143766029164664638514379 0.0770017285308482509600057777138149 1.0801279172121849919184478721153039 GT 1 -878168247674663699027129080372056953.4280681923275846270550105441515733 0.1934373392610565409015986563130702 0.0773668513704835914321592894510582 1.0805235789249435420754268140043836 GT 1 -1227383959453812888585612804790043778224.8102942817348626234431568351916063 0.1186543758006073221823688834085650 0.0442408224165180489838958634251450 1.0452493039578844167006733928971243 GT 1 -909115951126515669663381995358311.6728915799559990526926572134443123 0.8087506175103761917350727910130844 0.0267335682781056720868259496680196 1.0270974092825458743579293209788147 GT 1 -10793719817369685294607909084.3654369262295643917135219405800338 0.1251544591014331868374501091172504 0.0083656765325356167308614322606229 1.0084008651931892045136937278376264 GT 1 -572135.4392996627684096785519287921199392 0.5707502682048274115763644699226507 0.0000124464259147644710947886750875 1.0000124465033721662094965763879763 GT 1 -1862583128175448122550168.3359186748708058563154256343159479 3.3619556431128517303917361331734443 0.0329558153817813133206027436233562 1.0335110921029923951849940416652261 GT 1 -1423326013277373047290770584535442780.2037695612032610406689556883485528 0.9905148431458698912300358070697166 0.0711567457830653470010509349517762 1.0738152796817978400599009534124925 GT 1 -104616845309453465357581.0878114912399344421419189670322903 0.5401740895991377730814787284991803 0.0940504341591944539721722713334757 1.0987716413309918796181387491609788 GT 1 -1716.0934131744101551680418974349108448 0.0041553117618768146195878274067048 0.0586324026712092275804825241077133 1.0604215702709550787493822022167098 GT 1 -11796091422201495215253.0745418367862088566840997536274676 0.9321465949365827669608277123060022 0.0651605931619475468338174454356697 1.0673805218378974540948947173300420 GT 1 -3763150775712121953645.9114650088144165814140358329668382 1.7284834889502807468219683871025846 0.0088486711645962871748040624927983 1.0088880531462117831501104165516016 GT 1 -294831077362.9133173370158546268493115502381669 3.3050046179885969117036823964034559 0.0226047846850082569375202237371153 1.0228641894772874096054397833244881 GT 1 -380700284484506.7536241701543475631686393005237981 0.6231110255740612882853220089687568 0.0594809790821190222241697912959025 1.0613234061841231462629481249515675 GT 1 -447194026932679.7245224282183035583154868625846874 0.2033403017719082232257265121540894 0.0579406824631058771220518940552049 1.0596870366038989761177771326769302 GT 1 -146199341827803037086871973889244394485.7825537438264720526556653957020960 0.4651782681630389759143792121641323 0.0456149550623860179476623344524679 1.0466880779171619756624993476135188 GT 1 -377282737846153106.7450752623954307050608746258917370 0.1878035074034083294762440422775385 0.0959380575350121487077026464732724 1.1008574005115061890412684049053631 GT 1 -5964990735533951731326856204655392388.3940056726920608488846461624638476 1.3649537683290709061887366850937031 0.0263294417951799753170827434002861 1.0266822684836185275257249941648632 GT 1 -37186552243458414138609.4083363581921937482049169274149655 1.1012952695796438111100102367245550 0.0716520935960140481043034448990849 1.0743487173108346488639660285147503 GT 1 -19507487513731090918743055793.1428717403539958491590463200883727 0.3690293850814797008781027036805558 0.0855138893653353376164105297494768 1.0893929992002180703589155591521366 GT 1 -342654197292464862276046294.5502334715571185468634118221326886 1.1423707013355473803530037788205615 0.0112870844343696402572270733201534 1.0113512669848129879439149349287532 GT 1 -34327796.3814771353163454539330599731466175 0.9702866566325027863371041301673295 0.0382354663079064138276186487822586 1.0389856257487133806825607559887677 GT 1 -3972966.1423137834647694333813127412890061 0.4632487517713929271752794828672383 0.0022500628281020742999969597876776 1.0022525980230798523325458995055942 GT 1 -102883805471032956123633876.6718251955224249099617055735764385 0.0349523178951000076519322713931072 0.0352740062745628937126232705907666 1.0359111622889457325470101809297427 GT 1 -2872000501868531490.8967353340605252106160419739732398 0.1438425246256183645859429362585373 0.0422954700109433865116898829432708 1.0432159723946876209820636698240574 GT 1 -1049849117170101.8312512445442436316397833316842003 0.6806308140338783927579349810979382 0.0838514704256540821311271724593425 1.0875767772625939775306785139540648 GT 1 -15702779315406451032948844187802.3242221678750099315759491215589110 1.4723745347807556784895820719738768 0.0723575184312946820530076924452116 1.0751088773567279081764948796612987 GT 1 -2511169074662889809102.5019936829668173931128554082556297 0.0305145922270090931529524324311837 0.0477040869707596357105088563227463 1.0488794594754367921772468358235226 GT 1 -3869363572187641.3561585295230157960312534102473952 1.3268029797123473456758814596680761 0.0364627917323012961046992078290701 1.0371441740553068956232681627325835 GT 1 -202601696563341815.9417856525118424267179130132635759 0.2818798062828118796799329067804755 0.0284048094285757636621474251983074 1.0288160318751973882979341919736370 GT 1 -863721463.3006656754030457774297375543471770 4.1039322840974726291783249492178699 0.0289666633516399126470026616260174 1.0293944789955376451577822752860081 LT 1 -17211259254169.6876540071188926787384404984896159 5.4280393522899055930100163654824735 0.0035503391044332990339717230194984 1.0035566565153779162360519912178697 GT 1 -194248851747.0324896333888543734004385355379170 0.0179818559284533995158435322970835 0.0032878160997575951054948919342561 1.0032932328432067464210166891257437 GT 1 -28736054.9551549951274386634688512623575767 0.2922122028399359310356433999251895 0.0033233878068557687060791627334197 1.0033289225261944930117707832827361 GT 1 -2808644175211558382179.7051871750416328053710702127856884 1.0106674775440973300568939237679757 0.0833736106947695027725733967735725 1.0870553168947218053100814185378758 GT 1 -377585.8017018543022141624426998589079694 0.4693197598668084880633298947993311 0.0994586671476559352705747415951130 1.1047592155279404192654818553749399 GT 1 -302894.2908413496939690324932557833656929 0.4856997362437440088614979230938724 0.0935361956787509767565587742646297 1.0982041786288194428914616504244322 GT 1 -10006781426617404936837108.5512606350257180178018703161327903 0.2106528955467982481025494532903591 0.0937251649263141917880943611645221 1.0984126689695017634883699527601109 GT 1 -230444577007308829905448.6500739738148255240021033667439545 5.4458848752228900941649227472689984 0.0224305046963957481118833780002142 1.0226858947099930729488138246929104 LT 1 -1211159509915381114912011847132805013.5703880227637668105255212840321983 0.9155223672835473256783414216237572 0.0620343154435212808374617958281427 1.0640419142735971418995640678507066 GT 1 -146.7413372857390654049770841991976143 0.1036004754805087512054333877794753 0.0060753594426555667057345982218268 1.0060938895282418232714580626896866 GT 1 -792648150.1486213849657721166167945107279536 1.4717038032775298696251191892964286 0.0878399225397887590103512878498859 1.0919397807793249381398954455818662 GT 1 -6822597825490012636177833.5871230179239086595936262073086190 0.6660340532002088233741741412747075 0.0005165311013493938646908272764749 1.0005166645494941144929233821744086 GT 1 -1703054639608583561842665491234673316448.8003439868522862225468814552338225 4.4057279519682486657339311125607557 0.0688521943016222894815683902007834 1.0713372541574952829875963626573803 LT 1 -7.9066245497637930107287827100792748 2.8337080523700896798799480979501877 0.0105740353240399391048217911296190 1.0106303376826945183587853500645689 GT 1 -134762388588996996.7038227680283950454877712875563566 0.2343680060230376012732704764003499 0.0931928425159109545744671223444935 1.0978254672567453215479604519600288 GT 1 -20834.9750327841434522958468883647701514 0.9058707061112231071070616378786523 0.0828904127292951414365974971709006 1.0865283075729543523050457464700950 GT 1 -445037334016766746182733413.4062676238397679507578015554619350 0.3688134324659045896872426694338739 0.0992161384846733122180057203833941 1.1044899374817481522965799077569666 GT 1 -8705016.7592895851598855724762747438973192 0.7051066960107774862731062864009183 0.0421316079320555783657008106614000 1.0430448882481112202254170851555666 GT 1 -671457680092062008319302084513.0457792883591031687368229108610891 1.3359053897837588770864760634633487 0.0857316222966172692564573913191122 1.0896311207563911213844806934607689 GT 1 -416813821080961921077019612285115206.9888383338277185288846702385767257 1.3451688421844764630831341364948079 0.0798242771664406319254582603391751 1.0831906240978610964967756204712614 GT 1 -180763391193723301493491092577646121.1205842735104912509796295689317519 0.5987987489544234379695818351079807 0.0291161538685807754191102249593898 1.0295484407798627309060549270144214 GT 1 -335705270.6501111486165702929736071942704566 0.5757574174180062520267547420838887 0.0799565019159546949681544359138381 1.0833343295306037033255320036150180 GT 1 -241798.4052689725916842885113368406352341 0.3956679260803992828376716080319502 0.0287236018715383759657722649806497 1.0291441981293932383765461623343100 GT 1 -3688411057078997081.4147112338950013684247047638769895 0.6782340298005893972771147224245841 0.0614544450887455777768004772947568 1.0634238840044072561400281555786077 GT 1 -97423636.1863602340910428147944117696974235 1.6204156876967592857831314832525045 0.0577176147896673956202549378538065 1.0594502773429270730786232751372994 GT 1 -141566253091139018212938198708815511961721.8319281361365735618485050957378949 0.5688924592409652771150249673230972 0.0394537191048379292980387198299461 1.0402531137644735218505632728752140 GT 1 -237476.4948102579166035626387275331324748 1.0752005140853811796630348964700709 0.0169046282450922336443098466059082 1.0170491424273712657462195545660475 GT 1 -59971283968716166685250304317836.9242751157193252653585785955300303 0.0223295702409555437344054810377512 0.0240980610612264702455394909185662 1.0243931700155317438137576854057921 GT 1 -46142559276519060706933054188371280126808.5257816617567171649369519281823910 0.5869998536686894097863496135717109 0.0280055110768511333839919301529681 1.0284051443699229071061625782033007 GT 1 -2281959345079761.9478021351289886977811240205136541 0.2694179552115465156372847489256457 0.0918746676286186199852937422526773 1.0963728786602649322541204354867760 GT 1 -698337460790303828741057680237121952208169.0929007187287090289881512975097450 0.6401176500729591464781626371618094 0.0132100445621974622489542683924426 1.0132980733027352026172696143910647 GT 1 -9861869921414924769.5144579959379456421076605143699803 3.3316584548525870808416163541178804 0.0200354810808388065266904457745874 1.0202389131574723560940120327695307 GT 1 -455014499.3151672879684731251565154339284649 0.7892639016251917572850049629907927 0.0106496770446221762230687223566001 1.0107067907118640027480345512930105 GT 1 -1370690633612932560603091733.7997712616418535700971333682209233 0.0478834893982561216018173077939953 0.0538313253134041022734439791740220 1.0553344227729886853351244524432198 GT 1 -292958.2824225823899193707852831080526745 0.9445666073616487108673619123028893 0.0045402750799028277690682946979630 1.0045506134333175274243885516725679 GT 1 -7586282650165027160414594938318864.9451032100636003763651978280448285 3.5890156446032204183306622809873160 0.0954501443709312586781119945160196 1.1003178561201322611844693961753386 LT 1 -1414316130827295.6793327757281625022261447270646736 0.8595233734144645171274336805076628 0.0722034746933661595817740051761233 1.0749428317602823848273261396029723 GT 1 -12150321335690694.9404733873776834755971695519694637 0.3296617771355373825525805491973098 0.0938135705088008733035616031259932 1.0985102220419841318028841368872093 GT 1 -1140195836234958598292272192175266534.9947774304122131244760350606197097 0.7923618577804440181311422784274390 0.0935680824099465921945661579384544 1.0982393563070648149793139802976037 GT 1 -24538659.1225615023800512420682833884996469 0.0464164633077142633997151942232076 0.0682217468637036521891629174593899 1.0706604184248085198950468643628541 GT 1 -281257155971942455504069.0217542277326776232961547559479600 0.2098527725927635535751903731069786 0.0763769699281821985714468323325856 1.0794512666981005337124850709375876 GT 1 -32.7576216769007112541697132479079405 0.8234181216269831866265948019718621 0.0216095336228639470754414825224346 1.0218464387519713799790890063050572 GT 1 -34107032609925061851327518207365587874747.0737727883006517694327933905340438 0.0657681762242971424181522765503690 0.0025841309428523587629117589685071 1.0025874755724336453850991231666114 GT 1 -1035573.0135793340709340152409327177463606 2.0754307984739561387891441220198787 0.0541947554130157957484982845266295 1.0557186036545319880635327023991675 GT 1 -3920593071005169454299728.0221948411709039316630744118015579 0.5619954062662036248103970133214822 0.0947732367021238932662055489477080 1.0995697994889502946657375345991756 GT 1 -4576115120.1269045743222161689127376494433525 0.1754045450973586835764659789116617 0.0241774597927116840066696943231200 1.0244745326590578975994757830465009 GT 1 -4988669.0166651841935290025755236538203241 0.1780881802894788960863683491550483 0.0117397158185472955308725606095387 1.0118091704021626736363276196394650 GT 1 -14745104686449909.5799344423975304272516954163924774 0.7623279272699675471849368989657800 0.0139132217801507308696067513354277 1.0140109178872278918726594885582818 GT 1 -1176566678745489672488033597832125.1426014919869806369027881363285070 0.0391062466687652288887313258629092 0.0457139025068811730901262778488246 1.0467917599421940968070189814004094 GT 1 -96304046062494700651284.1219733750127698697879087759406761 1.1699976474132139783137149303703006 0.0285450972561433833265677021254819 1.0289604314748721673443446600988279 GT 1 -10215982147928741982520730956.8380297318780949078504193333308217 0.5430335280673046468231552398007572 0.0340371530268389884372449916595293 1.0346299061995598812593383459654371 GT 1 -26402776526600034243450011729362927.8034271784034870216092630489935981 0.0840231288541895357039189597584355 0.0070375356270898391963050095338299 1.0070624158801017825426250561445517 GT 1 -740777397797971922343.6315768798358731944755662597421379 1.4490187067345672600656079884608181 0.0250244785664628536654037157137222 1.0253429145214695256418120675266929 GT 1 -17043580872573099430.3811761110115429002923530288995414 0.0488153670487376468221277922273594 0.0570606306671438685803997552507599 1.0587532939270117861785516438074985 GT 1 -155289950737399398146804755178904708662667.9572283989045190594802541655565380 0.2146963366282517922065661125793276 0.0582424357483283711138801780824858 1.0600074003194176695856520422468506 GT 1 -90782274378.5585467292565764652992139395025811 0.4900467168557035817441589617675775 0.0031377814357300354013964872815273 1.0031427145940505123751668001264361 GT 1 -98343774937213555.9159914454325093366733060772907481 4.9788261853596069760346727169189064 0.0150428299315891468058592692598909 1.0151571209194747659212697035094142 LT 1 -4301284253545322330.1176670111672609851351852512963245 3.5571816870753975789206656666361991 0.0350252742387857831350153999542593 1.0356533689071608233009115032495775 LT 1 -1635331477202273.8417747703303902079101880014083347 0.9105705751388823009877676318260751 0.0739142101571167699644646014502246 1.0767884030086335549204223347701937 GT 1 -676924707656728806648400491588627501.0367680902355354257300429476538099 0.4926325330194025549470489009516807 0.0817923414827981674382027631207476 1.0853317064076351216500517629104633 GT 1 -6579848732524330442986072286536555.8378485612162397961400159131334991 0.1916224335887820761243673314992619 0.0320688423516003336302476884563399 1.0325943123663928053907713451338900 GT 1 -30577885.9108721537687727826409111162186933 0.4736738737909343429160092518935228 0.0445933335702604593182076565866140 1.0456182004184864859551107783874400 GT 1 -26175.7858393608198358724930038758328971 0.1138539097608620213330812872394444 0.0597510349400960661304398884571215 1.0616105823396579373119664532063443 GT 1 -464411782788876586217941634911.2588796966611008535452591560388148 0.1263716653217190673119561392231399 0.0061008613926043448285431384399960 1.0061195476879011194499438373679524 GT 1 -23023931573046754063379146274.5101271398401840559664038574372015 0.0537423864289020253824057184227723 0.0185022668297467487428558800457155 1.0186755748248311168046948712358934 GT 1 -546250.0686122058298100250958057997278448 0.2329097265171812899033884633504315 0.0715308367710679712327767991172529 1.0742181101259896521354077265615974 GT 1 -102087.5751225824956509796007001085583678 0.1601500897077552636431008997008942 0.0617756280275671172369887877786450 1.0637661560510298332350059543731747 GT 1 -6890963936902669202667778.4368438387235080259399062315583772 1.3058198062152981227226055452137648 0.0417713132325258454709422337257043 1.0426688167977073804109383612937420 GT 1 -32348044943273588344562121086164603237.3782732727525496611160055167806759 0.8103485505274866733458137379228104 0.0285431119377129372947486573137319 1.0289583878222062653231772116565172 GT 1 -5677322998038438725469891.6543674718475614815855756761788077 0.0321224366610218711933395627215336 0.0810984981407557112485670492356757 1.0845763420667473968102734073182576 GT 1 -5319871751706511.7297929782560466712027374845682841 1.5072312445352646616525970092875713 0.0308554171221641799248725458357251 1.0313414698855675913685369815581392 GT 1 -946653893840727374.5305640704652181419142015405463714 2.2735370965240648624980880896832377 0.0593078211160548338845192176660264 1.0611393141836380816909068356703144 GT 1 -342164324.7731276058748050700158404159791294 2.1054054211250388871112497075227655 0.0162904123512059010960879790926956 1.0164245599939002308494488786451423 GT 1 -157877511921.5264113433935359278168099579005978 0.7628600308559740364737051258010215 0.0184266205829873276064676469513091 1.0185985055364983425433152410449662 GT 1 -27306945259858344960708815081.8593757433241254224517569116284677 0.6429412638640162588478809226875407 0.0770854706505182261365721415518484 1.0802186496884864581793349203117548 GT 1 -51843960791078333845975717322361767582.3230811009722256563314916592617775 1.6613012076253335627067964683126866 0.0994534204856817134177043386482582 1.1047533894247966338139240643752901 GT 1 -2061198.7503495713719119651760666863353300 0.9922252916302214768841964450142029 0.0757511075271936275574255161723044 1.0787738794644027381324789277834609 GT 1 -1085.2785663719708321586647774451886927 0.0373331768752060264222253304696719 0.0768828777934816491805761039949884 1.0799991595647075349188774848533680 GT 1 -714508.4175313204136197329847082071461430 0.4524691970692753705686465110986600 0.0066578541004499027443563967459487 1.0066801164791935301674260817579865 GT 1 -40627380745745886.3536195330115408338811978633656675 0.1893614376127487636623869062409717 0.0213181935210184115534817881500352 1.0215487082000255639736295757914463 GT 1 -10902000657819759295997618432481212.4744674554748985063637007531052217 0.3875298051152046869589405324471523 0.0388349157010044415931113866018537 1.0396091008950814599165739061366664 GT 1 -166352977852001591109987919712309649044539.2176356637168511009841860096575626 0.1438752195136012105971745088212737 0.0399040599172824859884972969612416 1.0407220619275189319616378485110086 GT 1 -20894698038015164816062034.0219674060905469124407982947065201 0.0921898319203154147399958790574954 0.0147425140197051316451328295573702 1.0148522648843337221237785210631558 GT 1 -19762750385858047321772244829.5336067874268918676935993687659927 0.4520962133783633757594742406461720 0.0602964082089168096092037412502789 1.0621907813262040587975706583983322 GT 1 -140680812780331410016249643.1108123422635949223869967684421159 0.1171723393456659418263446062165395 0.0196661593024308162514036018174806 1.0198621115538125195665964305695898 GT 1 -1163423086341797062110851773913300556.2468546047864719139317610240489957 5.3604645464364260195526233558027356 0.0976406422712584905252010974863316 1.1027424372304844771487689245351734 LT 1 -13821534218436771638171.7033999334035798995414935707401666 0.5772152102401307884956575186464649 0.0596653020378670646255347709812698 1.0615194054311543032679661599188586 GT 1 -34306383.2859679888937741262076417547714904 2.7706382652214238935215087558016502 0.0508969755811149906055828158272046 1.0522379252330404658040523648828623 GT 1 -90476706831.6194185407195197079254978395167204 4.0870471892152876896257688874755861 0.0986303244249631995322628685147005 1.1038398107658086125139864420180214 LT 1 -93613076950197326624998863140.9118303857109849083530315057107033 1.3865625813409462573117223678695088 0.0485286603896861719984363395360148 1.0497457139709339501203316502111267 GT 1 -22975813.5312905502048742750356235595177045 1.1676656963817319353463507106404035 0.0738132880537649195176750974530183 1.0766794318898006211236834551861958 GT 1 -263153736689285447.8830041121466215230347224318632118 0.2099759397702897812456313924116202 0.0823984432556608583223412919275893 1.0859920166292487806665762854683116 GT 1 -15244347628308150738920631996.2141484289450987546984544235327335 0.1426311087489439976866206805835308 0.0074895630135440751842394117897075 1.0075177506207115843760897636541215 GT 1 -322154515770073505006689690811539609398.7096636101256868502768738311628104 1.4435074091245102655785094297261753 0.0184072603609717358455899637215621 1.0185787820685469615848737902483020 GT 1 -771926980802749942.8528526743420742145469190558932470 0.6861526707206755905558365337033165 0.0429635485217802294881725146268164 1.0439137989356285489389518915416635 GT 1 -469103618481537846395604396739676936.6155284299740142447503823085148278 1.7827183595694403827801328103141828 0.0470426090995173976646311611272980 1.0481850868201518408890992068589912 GT 1 -159388323206485891692334581734072170283.1216318673677328296444792416200206 0.4224661168270783348150312760511278 0.0016020888465129490402824030812315 1.0016033735631858607124476019202877 GT 1 -292410677809562557722334223372600493773075.6243344785234776128992808754477251 0.1757776199084044735148733280690374 0.0851735581099302430556712803947128 1.0890209126927900090925411712195870 GT 1 -797497753220303749300064.0453230035184958090590211588324993 0.0183067240564377555962577982005412 0.0842085833038011660114840661359863 1.0879666512684505278853211179466138 GT 1 -162485268909862738316998210217.9731742049236967336650376324554543 0.3379081747208617805802539797138010 0.0432609496608088727564457029146606 1.0442245993833719963794327638174201 GT 1 -14009411492480817812341847564914.5289509729229193236339441249667858 0.4936566302119057402360494056187467 0.0311626723331626427550547177533812 1.0316585576890203227672008064857027 GT 1 -118877861621693918091286535903841455812.3969196090421060476640942378340997 0.5805984842836381496957768735722042 0.0045368026893942288950729102335460 1.0045471252113780142648970915461288 GT 1 -4832301274886942221685204141227.5942523883440991535271631754297438 0.0827882878480263361432866103822937 0.0404508894393260031666576111807321 1.0412917813521084706546886572621955 GT 1 -2907415277485844932.8041977174291756521342261722996287 0.4654568296216173714503234870416697 0.0255936614690258952662421485187434 1.0259268769871387826710541083682571 GT 1 -5510850133183552.0886211169716695585322689936816230 2.3557623998016959804132674748479066 0.0621828475055931240297916061622998 1.0642002823527248980153666387129751 GT 1 -790260415195971247565.7648287360825478583894361173940913 1.2501188879050468697469414859870519 0.0768069719356743785539085743752833 1.0799169351802086452713148357634773 GT 1 -32755106865749110074936860.6144205792119227934299588321683624 0.4711838763447018768230350202272098 0.0434649918784564340710373831477147 1.0444378905399826287330137275347018 GT 1 -10604888842890949733055006729012515.9338650716545730435084342417571753 1.7220020492335696373416365083142118 0.0959209353696466789400693913016277 1.1008384615401551801053765174650774 GT 1 -1171263652858292309461504843453564.4974829403618969741540425713209920 0.5274335668059104957514388069199570 0.0853839392576143069810636519441587 1.0892509075117676231042601632197651 GT 1 -3098771459528600351203865968025621659.5819419644342608841501660468917201 2.1589868453198077680691161863507087 0.0122651293351071871896658619971296 1.0123409667759076452144594725405127 GT 1 -9215332.5679161753614650861220057595208803 1.0427782855844658381939976096965686 0.0210894752543926961300635089241762 1.0213150351680890671118079678870284 GT 1 -20997404440.5917423237448459938788164655694255 5.6813250770693099286325523353999132 0.0945290454203058041282840380468946 1.0993000788382999866063569646341142 LT 1 -23432979115577336135777346734.3527942002456113025459019324773643 1.4478857827877744468976354215713929 0.0491095883585711936241184338969016 1.0503564579438511401002004954869982 GT 1 -7071915185.4633470555753339839978829072292778 0.8553857411011668976942544181027874 0.0386024406637232878518038192805019 1.0393672621813377840972242372190590 GT 1 -7061262998456297230919103480065846.3179964449216011877670354085186138 1.2129576356358224972438368863906077 0.0272173721829600043228754235058190 1.0275946258480278335924352202874297 GT 1 -883709512770542667760764395512392.4349107572814582700946349237826720 0.3090090083217830104409220333343424 0.0661040313029280072460623500569387 1.0683902295081062278798839477727321 GT 1 -84250455483.5811343440713282742846496635810751 0.0324176493585420139446035603471331 0.0580519048834153649913573846016784 1.0598051066493687527290157147074177 GT 1 -4667687426196618880017022099588058.6847774529491942843906849728212760 0.1656991094369645439847283421549848 0.0741974850029022637953036144186407 1.0770943338223381810242760698723486 GT 1 -1082.1928774291138059351330039238433261 1.6449002766076192775088124231321227 0.0081808255066754841776952974327373 1.0082144720898617400526346368840922 GT 1 -103707676522425495772499497383371.8680711885075475261520667009845929 0.3270332898508358602002227655763641 0.0192726241393320048689577337494579 1.0194607623607750090579931788343380 GT 1 -7182122873479700440403.6369301173455200265655491507392031 0.1726137884284545515702379761940825 0.0908689046108781567969009968268797 1.0952659758532998714638774715971130 GT 1 -590078476842105672658732954.6020587674095048275471218561844830 0.5115190629240748214719053977701420 0.0465146781257317181828087878253932 1.0476312480042852159488991280132548 GT 1 -22725158442443306742591815.1257911719261837284307985123529332 1.6598703195081333223114342109088934 0.0287031930445985641307209434101450 1.0291231859720267604875460160536710 GT 1 -1789626429.2052793266029103706714015893548272 0.5431541546950530083245175400823645 0.0079131983108367961623285468363122 1.0079446738225294608047622174826094 GT 1 -2059.3555423636892999880965367804187748 0.6301718362785493257363621128687186 0.0038828501189959883148023613698932 1.0038904079518174628360161384690607 GT 1 -371945305346270444195319882.9265490243330157073659581791670699 0.2936307914268734539985926481538855 0.0462103471903293056536644490075292 1.0473121215626082446483433321053335 GT 1 -240553736071086.3615515024774066864157406224962269 0.8105446326900455772902313441894985 0.0415183693954274796907205223858588 1.0424048814118807423152166793163640 GT 1 -2093192771320595717092641052299233787.3810531034020794714781781692317327 0.7169106908442471253526091049225811 0.0543978412050588151477332401473251 1.0559333493433353059055961652018402 GT 1 -310142732163184.0095911872566894298835743309005055 0.3026614219481210070224039741665883 0.0088778493286565734195981871484538 1.0089174922365936551795019172427947 GT 1 -586073143185849622.6537882101714578377932160567407235 0.3425500324355627354460054258589223 0.0181055284300652132693101958019320 1.0182714391619477745665038158071032 GT 1 -55188359673.3636501793837310508368380007476918 2.9300112478693778238624552619329063 0.0068701839119915609775796581448186 1.0068938922750903286162379548776433 GT 1 -6562373233398341750321124894326297.6897929754539602658559102655614927 0.0599536571449775258346905351627257 0.0750017196496654715487695003726719 1.0779634005521593798881850304684730 GT 1 -2935723572208859096709.2104092993802397570919730366077736 0.5013512206002942795962859450889317 0.0976076674385249587558532623391357 1.1027058949926634962920316243383720 GT 1 -30100145762548903478642716.7698818235798426631712147274888677 0.8223415443567613794258647975871045 0.0161367761130896460895243164128725 1.0162683917062234076219861881909040 GT 1 -27045946463725784612958232.4823776703272254252463151821851648 0.5492017524680310230906975468787112 0.0951403581670853854590663379214368 1.0999754392075348027254374082729758 GT 1 -96325394861341915569650.2166579454517266830932200482454225 0.0445890959436718982988423836737486 0.0294892010391486207276504617826565 1.0299327492213249105304996902702441 GT 1 -1920629811924115003925547354676847.5343138328281063945475326254705783 0.3674552596193985903631737570872833 0.0214329336429680935646196913110005 1.0216659545284547815046431451525734 GT 1 -5142038654612.2333345197042684561929867715853658 0.4765135029589085663711229297679056 0.0571710473188691602611304330140515 1.0588703991414355303739583353856973 GT 1 -5404415.8494695841067781470693787906726863 0.3986581455067274965598863263762249 0.0027079801068723288517345217658586 1.0027116533178220126488471653871076 GT 1 -71.4106873209963917101602058992192937 1.4227369169453418476843461604121048 0.0835006595798279728335677938604336 1.0871939313751163692121463754768071 GT 1 -1918560482473624548.3444031859952034006607169194804083 0.0852883648007100929865969620840937 0.0701667864061648349912294386601391 1.0727500491398985656595498480296040 GT 1 -466591578456440003301320481537996542387294.9962700292295530231623715650835014 1.8828696898431316383214621019044257 0.0516420493528501912601926982544900 1.0530232629235858918351509956892996 GT 1 -215589438405.6073420132809644372782231673125881 0.0059375927541056195490419246501996 0.0432267254397788150854765378039022 1.0441888282826705612851738800566123 GT 1 -36288903.9595388358402534032148126922931377 2.3810266503686190423859567031340213 0.0262550827175923690138572602141151 1.0266059015464551672420384126584180 GT 1 -1.9812415839201704217115967277866443 0.4422368807319161144350439845038019 0.0170649249541227450900888114586768 1.0172122087823674998044625886875335 GT 1 -2355822100214946.2685881629008755292905266824927737 1.8446140889281443087818254824436177 0.0694167365700232313439788037179579 1.0719437244421307194104163876017116 GT 1 -4589.6219070522365423219911531488774236 2.5622662891650136734988085970629427 0.0661874013410385141312232043053494 1.0684795047190497631013640814533790 GT 1 -6212230523.7721439255672051972061137246682430 3.0158553059911914201271343745319882 0.0055562357793082565595352116081883 1.0055717290735747221501224598185159 GT 1 -2843023952710127263902541439818.5425098616198557962552504090708237 1.9183500710641590897850279600044872 0.0832912991743779878785802196468216 1.0869655225948254927560828187900720 GT 1 -1085091718788455111188.0520720171202299849031435977749412 3.6446681291631069399065518143529980 0.0924625522663101775574593249699227 1.0970204489741769944798964426294691 LT 1 -165307223758116201519358656521825472.0635303390002561197419292280434293 1.3284800646664891513918282568075865 0.0425980471894339121147564974277206 1.0435319623239430265492339512553096 GT 1 -70928830645434136.0256380438581185737844837194767094 0.2891345437159160754797072895347329 0.0656377460709411768797623518823753 1.0678910637760659550467042001666847 GT 1 -756603491692.5108176112987296364706918074141861 0.9033808485769523034645701560219429 0.0970306665074798232114707236087255 1.1020666868367126119992857130670776 GT 1 -57.6292672031109123282968516103806252 3.4986744131736953396437490835311178 0.0281661390607331641930323943285243 1.0285704140906356616139507430532091 GT 1 -458234777893572.6539853018520948926218606321760942 0.0818425173452008827563461641140431 0.0830650832746306604991499643236035 1.0867187833716419453519352792100821 GT 1 -15024966144242848914254727254835973444909.1516030133688024409636117354511676 2.2412643051685490976830164358527306 0.0509007198107663590130818117601808 1.0522418702600191852875643232073948 GT 1 -81891428650886190648494452683747749414191.1352308361835663620692525748912417 1.8540832604552855302407828300483873 0.0058640600043478209716265182172076 1.0058813211174295057186292052720874 GT 1 -456522920136949768675875045532998010.4417324193082082021473154197540768 3.3156685975134438363956329432613907 0.0714694311604222992456391640487381 1.0741519759100200533254653525881459 LT 1 -80.5481807562953087165852715193446087 0.8113948874239191481652512296339983 0.0733991355623325072287645575117243 1.0762323730865043680106300035827978 GT 1 -183.0740257044237951174068016069474388 0.1852948944791083353366882084267992 0.0365941249197714239018471288643677 1.0372804865274379407780255253127674 GT 1 -53468236748233080221163928217816892197916.5389042908738492860754032308315844 1.6982997729130860357583363133461118 0.0417401711698432433245827371558688 1.0426363177115590536485601919270767 GT 1 -4983075427387222365070272990820.4716489246005214510778582709770120 0.2708689846986386442660598614823971 0.0841197157031562710574838175492425 1.0878696168482905785190054814011186 GT 1 -39829418086928094237113222572479674878.6127610344197337776499583768127791 0.4225931277491436015566246379021931 0.0331746772671684029730536942202828 1.0337374381780399133937321644033612 GT 1 -35897764770253239096366996143.1175518852121917343936777006375794 0.3643378192505189739486006913767847 0.0988737130365971546940016305221781 1.1041098680842953698660805647699452 GT 1 -6719893047007248070737403282246197854.0886838114222799966907053084605234 2.1965241983767735695729890054331189 0.0734864828989815813586666208206355 1.0763266439394899624014741790322468 GT 1 -177407593737132436131.3439486240356631717680283928061126 0.5352998984315423259629884974692501 0.0712320465171242826419753273895698 1.0738963523344477144581035570720439 GT 1 -7666546261.1845622614496088859063567642434031 0.2451427807609058414840776296080680 0.0525350631503245719007955579486484 1.0539653486736964378333199107207893 GT 1 -112781750929723.2417953897789366851976025399560273 0.3162181011922806661748752008438103 0.0534716127185346270225130990802556 1.0549543169373232646108194924974382 GT 1 -177801177601243753510835775077670513792565.4138516320855774580076097541811274 0.2609972886702881734625549365174263 0.0466514985532557256361943697415801 1.0477747533544478432617285881411281 GT 1 -1078634396297914583600.9478093187365203469556889514764794 0.0632757629531924675129111096448921 0.0369167196372668415686285766913894 1.0376153907957533795178983044059967 GT 1 -31.0236132334510384092184956171214586 0.1642651014302572207686243964783815 0.0717308053930266751154776078590069 1.0744335078656743354230559358362820 GT 1 -3688394.2104419779734983750326908502707352 0.0621966249575130212962392120033143 0.0934679495329127356952126455429917 1.0981288931330581268135109854962031 GT 1 -751570828066831915132241.7530620337855656265358785461009054 1.9305363207544007015115445746345997 0.0913395666905214898014350419843141 1.0957838153114889296695773771608931 GT 1 -58952577105522419738.8706391632986694045111801234348210 0.0981637315868488223836376405207190 0.0557832246838492986781473642417185 1.0573995043298834531588324915149959 GT 1 -23916928245053344.6953732152751040616641021714427154 1.0795829890496387101802905627290544 0.0848124425855545516173326765271914 1.0886262539314908318866220422776687 GT 1 -8469930933904266935890.7168734838009433367092846230643068 2.2777606822028407292169712224906631 0.0364434479222664070217554043611214 1.0371240984259487564770080486434301 GT 1 -5055885387722629917298881758498123028.5893597981898806209364986535053235 2.4909288882188404267234335290616110 0.0022020627299766023156543096847651 1.0022044908353250579183449660140027 GT 1 -36099864621071519031413427.8930477953244590764834752538397153 0.1809269748062974115195887652873419 0.0858513803190282077060777060921545 1.0897621171568331573761784470032792 GT 1 -5530623534540079863997297788449009148.2652159743765849587040102394323424 0.5596982308579340023260114199175552 0.0037895554961462383526424428978880 1.0037967540535520561371052209284090 GT 1 -2446108551417.7238854904831862662009234323386310 0.6610165456173431869960998699362370 0.0526440190668035945991355348938894 1.0540803525936727895820257027605002 GT 1 -1746321105623106546846129047424120.6674592660309907685228247873388844 0.4972779675326249735895524862703347 0.0958015124561842110409069064978245 1.1007063768239648968591423675856569 GT 1 -744430093446210375054184069900915767239198.4329729899270559719327599696912920 0.6891442874467432425708548900803669 0.0659925422475688350300359274023709 1.0682708560395286973347175518002496 GT 1 -20873828255558293589039340208363974.2089031241371238114268121887460753 0.2347489371644413860559361796631389 0.0198533132136658952795531614457606 1.0200530381242934821934676643138272 GT 1 -8004747681698939444034627348200.4748277179320320434420729840863036 0.6994059073531116427088803116241040 0.0286870877416031443072430302499269 1.0291066048720389493920463920856081 GT 1 -2976421021674277968020611090208.1371066986123708526553157125917157 1.7019468056434384121883259536589382 0.0641031183403524052452250089225291 1.0662499777406566100169160795286736 GT 1 -320543934698278439680050110847677843482211.4882606111868193765395343125487963 0.3265779671843466817225794222801217 0.0083746789145314358385137821174668 1.0084099435627517639904371075146507 GT 1 -963341636948220457315667957.2594925706785218922071279328736834 1.3159769959544865792418467645617561 0.0779276532280265437072672051347038 1.0811315912892123302118055138516233 GT 1 -185680113955572.0016734364801420242468157080375579 0.3028004547114917892389010618789979 0.0088859960875532681580015063947178 1.0089257120028186851952102826102833 GT 1 -6964634405700849610038967148881792349940014.8602037256342651533980145719820316 3.3309312458237133495576481897897509 0.0164653662428250832512603782526430 1.0166024269716518705007000702706659 GT 1 -237633491924640150148415261819705248242.3470404940679054746396581720186007 0.4591878161192217168119997163113895 0.0047902931855961420903497367086327 1.0048018034129517385516726303153046 GT 1 -9747115555924029228632499220992789850509.8975678927275704225534533056117371 0.1592312046869197505786810126434856 0.0491842294931528278068676470062882 1.0504349570677648502756743831478798 GT 1 -56880.0763991959680132532203309885625572 2.0219645780280777976246493834973182 0.0457286979453716205268456836359533 1.0468072642581703936203298987609491 GT 1 -69799784.6508185246444813262453570446052199 0.3361622093774412353804160296631708 0.0233469682707228303417180541194730 1.0236238264233319729712159532321643 GT 1 -19802173792942389840935966769020.4209987292536253465474312552198043 0.3752636529444724366794068838314328 0.0666509123201004935646433222942869 1.0689759919723760737068341492325750 GT 1 -19.5222004953345474065839375812059439 2.7089543835372122046802841668633948 0.0802477987580830283156203151677878 1.0836509916955051670293020757206038 LT 1 -3665041731117082691376.3479133097333068228693449776323531 1.0789515514598133102156288058354003 0.0278973727038963467183541242724987 1.0282938964572912435289387893258415 GT 1 -14037775563902613864910897097097476.7847960502504510989486597439649493 0.1679573404009695965868477140613698 0.0905596788902087877045783564601218 1.0949259004283326385060457490914043 GT 1 -10614084362770245235.5809331919980792249257834092835995 1.5599018756466360177766804887604262 0.0858603787466441414304676934712655 1.0897719607114921402843871364396985 GT 1 -48493452597198997947677928148040553.1184720229464323877337893717406589 0.9624661124687463668426568951071380 0.0704546442500426756695061266547087 1.0730596771531752414727403395479783 GT 1 -1977389300302486410747628372.2397858513384875906676786555127243 0.3698898914793569440564448899459005 0.0102390557867373478539364645433864 1.0102918355038485681516137829394868 GT 1 -43962.5624211293542900825348702938685463 0.7407137185034551190468421117632291 0.0486861592391125229522595002475215 1.0499112595631645119374483819929190 GT 1 -19961615027653628082223488965034005.9267725333139623433753420368285386 0.7800628674794847670915942578550587 0.0850520872189301980478211767777713 1.0888881412492856323160699786836466 GT 1 -746315250281928967169465435.4334755686333280069604176049725797 1.7846772528576070908486965196580516 0.0870161940570182368432694808428780 1.0910371357372655076565400399155266 GT 1 -1062709035492576312897674.4653046356474248609643608214994715 0.7090253113324651729852594060248823 0.0231168185535492502814293545771720 1.0233882027203403202150716299703434 GT 1 -6093312753260471.0676097693932500758860990034973185 0.6139837765225207419806553451343128 0.0635235547808666419753299503264059 1.0656309093426235213942503473958130 GT 1 -392855540861089307281505988393094.7305941392730115689157348780764093 0.0193585235405607642296346335254548 0.0422634692434311385543056217988655 1.0431825589233247712288955009377153 GT 1 -32135201598165843487824251.5388316034365887340218188332458409 0.6868627643311877435540913688009287 0.0441969339104930709628744170661433 1.0452033849655231114050754969037467 GT 1 -326449930520983.0032211101218523366136831955607679 2.2059772694907117716708262769625262 0.0360023455865081349336692189395503 1.0366664175555766637434290887611149 GT 1 -6717050636096739063.9606888078078613225866003140168274 0.1155490062346734638787899750912833 0.0687260684889355122546394887472840 1.0712018113516476987953153994638602 GT 1 -7448356245373506147808840756724939981629564.5700959109417929546059615160195782 1.5908480971536246822124305415943793 0.0022417847255272786266220563730580 1.0022443012866674305511525669273924 GT 1 -2646083843144148270268575863155901.4635355806641428597746157564503616 0.7414084189568483389413081540563551 0.0030169266541871945106096034872439 1.0030214867513676209474472882309319 GT 1 -181114074815147.8889338519128583781073122791332613 0.3722772507009817563201613013608148 0.0985914617858392341602659231547988 1.1037966966003136776150658175423264 GT 1 -14609844187203843550827197610490484058369058.0507670245238137257698578612237915 3.6728732021083074429850925335236592 0.0022871989914809087436878120782013 1.0022898186262738610758278484471138 GT 1 -6692113765684.7690006348023060942860955733646068 0.1706889986469503912087800590166112 0.0330512141759912347757031613870840 1.0336097468507037914619641796592350 GT 1 -200492217528582418268125123282.0663905747200057151976983396692799 1.0500856793349309959763345297463538 0.0930761256346264080530475510775167 1.0976967636293649767186877357478920 GT 1 -17122.2020238593981426235511796172789143 0.3129737521343256848254325252662738 0.0976737650760689000089918597405091 1.1027791447932300102078056908429006 GT 1 -5745337541802985869879275961384805451.8391256126443680873335682098984271 0.2317900484736519278521978424486894 0.0130627991110993400465032074351937 1.0131488678252716119303238353262679 GT 1 -1953453905.5211391979868355338766275715806629 0.9223447230419226868773742722311104 0.0995546550342756010963305060233889 1.1048658103050065607882654766171467 GT 1 -29506511951842068271638.8871206108928472506518301129705276 0.3616317562513676817138595147107466 0.0649731582645221634063415359990552 1.0671800423670303216376094858534828 GT 1 -585613428075332303805733159817286664250.1727107631880950001207706502010769 0.0853564193235596888309873661637678 0.0249779767045108543869782968914571 1.0252952202440213186879109852512307 GT 1 -106022016117028.2159006501896366297313502445305249 1.0159400264845567485160914175453899 0.0622782645469772787148263801170138 1.0643020312869428367703811478731147 GT 1 -5.7117270317360118090278959565252933 0.0482840532985798594824660550036433 0.0088298182606255879948149891023075 1.0088690321106525199535523340989076 GT 1 -110018.5691570693420746246260452833412788 3.0006769503286608162011718096977418 0.0505310579492799054298704260446876 1.0531967978138579815337416976470626 LT 2 -5657515935733581056713104214485532722176.6920706818312043487966069576103617 0.5480769382329706972657131808386514 0.0010440268693764354554957171554634 1.0010445722450527090809992816871310 GT 1 -2.0129873983142582691580244788670243 1.2425542142141364606252809320785790 0.0043413395963072476925002425867780 1.0043507905742410954553233068402327 GT 1 -285290245421114867544489519182.2071575852599391934418430398709051 1.0740484459387961559070959588455468 0.0669406158227802731518008322341450 1.0692864315244620584597022536320734 GT 1 -294100162787562.4328765711379838264587455139842695 0.3879504311553582270100087022512329 0.0974663832562999977230743216614444 1.1025493409993343928888539735095789 GT 1 -1586815364899210049686503814907896.4401107536537195527726110472903396 0.4413864207222530408015790472858521 0.0482783008030927696456399008243477 1.0494826197046850180687902987105681 GT 1 -6452272647.8344846652076087670410602117381794 0.7929470840933281107981991656457166 0.0827781139195717169973996576896959 1.0864058664422261494752376317721471 GT 1 -938171440342379455093288141.5779723833189823516359951191877159 0.0449210485166251017157932067230643 0.0973749568548706454934996805984427 1.1024480464111754143118365216334408 GT 1 -247915332667122725.2547162042583647025556186577354318 0.6243237346620428232691273838500748 0.0928606116844278153091746230019801 1.0974591600621178200614722691759998 GT 1 -65253188272388706121698110576.3462413373451721591014464790142883 1.5235907415884511450807774973451273 0.0067984186927084232420137196001434 1.0068216332155915255516935014487643 GT 1 -52632035236831325473264696920.6618179564053289730443643728124668 2.2053580397952937570726264429077238 0.0221326605400452340976580149444014 1.0223812628718699359275741937129175 GT 1 -79336177.6658614550386169022568114344953437 3.2394813346085380183743576920248181 0.0516354988119918477890232673040791 1.0530163557022873496116531497547688 LT 1 -9239296273810934654464000132228.6599943689840098354082437362470409 0.0669337531484142809014431814133498 0.0260330694357067844267607850383203 1.0263779281087081313556705102261523 GT 1 -789972246.6367288600594768199466828735756939 1.0410023334345188593804278510826360 0.0227666366720593423847388993296297 1.0230297984212980141951430077123249 GT 1 -3202119383003617255677123435366794.9267759602868644065598050049580952 0.2220457692437200965874607153073464 0.0386607578143758705978433908143761 1.0394279227466572865397249788037106 GT 1 -1202771052299659044558208992289727665392115.4913078516504072372176479491037786 0.1487591551385602764744041289861681 0.0188816661766895305376232992276200 1.0190622009796348014479672300459266 GT 1 -1169492203249971409.2131413929913792348125012922917367 2.3431727447729376608962882123485452 0.0545213191688603926397506962794480 1.0560639391747054679935748841494197 GT 1 -38003000.3896645815557552810263284493240782 0.2778088773714182338215509133240146 0.0609981409569181292007642942743659 1.0629378199642451815631412677986569 GT 1 -39426916641761003691.3281937996534627275703553072795304 0.0596534635811796006526668552186433 0.0496524520457070001554960048582720 1.0509275213387816385764512675892987 GT 1 -2018252526806.3809740237369917474794902335547719 0.0575240825844949293972270720923637 0.0440670924099015916050420976164128 1.0450675487385767566405801659554598 GT 1 -2629600188901346370463381226.2812169494395626253459255294284727 0.2252164839903741678461960808760640 0.0665518768289105747317921960733406 1.0688698899376106780112690383774887 GT 1 -145653070059496258996684863930.9626724363718871220302471920926714 1.5672934594461306800897449064457684 0.0100130776095341309763688423212357 1.0100635456473505160698350582068597 GT 1 -6.0740423639789156365469244480073152 1.0424893073235835080100305107454700 0.0474247598032971009940907184694978 1.0485861827685145483972057500173743 GT 1 -1288212624.8991802860531002541322912623148433 1.3216921105102317309625028948426064 0.0826584356820634430782326158998829 1.0862753959069584206291456591019731 GT 1 -682680759657155812906517.8532845852122913426169395164399524 0.0877920730881780400083582988836758 0.0759224624542433614420635459690171 1.0789592957683171213363800035007913 GT 1 -285420860616406927580336609581.5818889918534766931271898256194308 0.6126364952570493114930220120900556 0.0327723652600008692106691874460468 1.0333214081914609162302145321297744 GT 1 -156746334526327693721995755280.9277908294112002201335506952182182 3.5615337638082408908113135275606327 0.0429560952179531028077841592605751 1.0439060110663232846308154152498800 LT 1 -13883835081896.6756522125091180729332408802120058 0.2254717419074673756500602867241567 0.0198042494473895978225601044727284 1.0200029818021407633637998879128865 GT 1 -1051578257693926350970027086058733921458651.0969778106408176848991611660107915 2.1778556562093866424781462778212732 0.0977987255892877639225328770244832 1.1029176414498586266261344022394229 GT 1 -121651438.8616017785003655438713892714977683 0.8957147957170793002247656283447416 0.0886474612935266943433606643528142 1.0928254766603059821527112260423427 GT 1 -1030228047875917165.6101400347339405207362006632409457 0.2204771156960494423189534035649619 0.0931807723710142989290837706467611 1.0978121567480364605336173062497925 GT 1 -9374527.0833694347310260878386535954657936 0.6148920996473875128619585622144682 0.0644120691449611770951451872820841 1.0665801442537368822813163600809325 GT 1 -1858794366820628019103021081177267405505545.8898752764367198621672402504747401 0.9721431788598977103476737618883696 0.0381145336259487572694814388548892 1.0388598932276073440817787155032067 GT 1 -240894316851665257037344851657643971.1541363417857740449027398815144706 0.1154058965408239729170628464090194 0.0910446917486898786552191597995927 1.0954593518534806349913119955589597 GT 1 -44973162180380147720670.5041194564268365492708063256766814 1.6114296715406516509033114623857631 0.0301499226462401904448062718717551 1.0306137788593615879693778229357625 GT 1 -16985.9286216610583154642048734151977830 1.0388483659244553340054183758475548 0.0191674912648880605762203721822179 1.0193535692280338416385026869629915 GT 1 -2.4249604371908035825285020626108905 0.6504106686562174229882401446990066 0.0991813085125857135669672867912679 1.1044512719369709353150111934005371 GT 1 -420268648700789965676084.7201850332208340632247885470150497 0.0925668089184308575330696103931505 0.0869528626171686225576526272276199 1.0909677706039894417724532882035415 GT 1 -230796006.0793618192608443471699658058719647 1.9764661544376472272107694465054949 0.0002155225640422658615992139515176 1.0002155457923676169787916115111432 GT 1 -287086682915643011974759545509823492189.0895316360318801191449199432790471 0.1801676223239210128689778369074721 0.0929564719683461774113583673877381 1.0975648388039291323680733291590584 GT 1 -85459.1097111815520170270248672113954817 0.1712782276630827352519457703386742 0.0596084754272387300819149109875316 1.0614589749336531458878054455534163 GT 1 -761983717420108811594066103944070436461.8464819667358740465780033589135640 0.5669009954498331060599437519467373 0.0508536768734702417630530485641675 1.0521923056123007071161153669036449 GT 1 -271799723424638621587.2554282379384584892537610270032429 1.0088931090304061120508944606850190 0.0172697831335118323637696277120263 1.0174206452653981066890235414143124 GT 1 -338764761411934633741085680618571501389.9008752840293693513840198376411052 0.2816996100438346071819829708892519 0.0559937308474535353758690315976298 1.0576224718072617085175735308495287 GT 1 -4986613476438573939167544996448672990629113.3429479178401157594425666959586630 1.7130031305425822353957961231521316 0.0733755507914642677123635009478041 1.0762069204114347511770630216777991 GT 1 -978055026570375596471.4815049652241571651553480875460326 0.0624398299030917197339876729946975 0.0052831540887743750661585936430771 1.0052971592968975394740144929725606 GT 1 -139729177661746809862.2281028556079724182970761541877107 0.9204003617189355172891052257481438 0.0022017365992076937658272173131850 1.0022041639848642292952803135617386 GT 1 -2166956607607.3293931559067974196815436515114679 1.1798741191873775776631501718851560 0.0152496570647720287777223763442218 1.0153671288852032768621691400554499 GT 1 -71193016561.4184080367331332089745494349202816 0.4349319651190264162819747176104581 0.0695472558158808128043559608142902 1.0720839895907227670721341317950225 GT 1 -826010578139127817568489899254651314297242.8296992171331851813875357154791116 0.4252012921837710067130412907640691 0.0237330883747349745072225486430192 1.0240192549306369549625897479859141 GT 1 -124954726708392933166.2692074345095481572511208625578863 1.1136015919450764059000705809987833 0.0400453189332980592774522486519484 1.0408692028567365898864459306651317 GT 1 -3454642714116528793203053.8802026137438829861387912430969225 2.3657525790829344455395521782977766 0.0327695896829817611621201216879940 1.0333185385742818802855933088751298 GT 1 -15.8965129064585959770250812327540882 0.5409772544151159647592249544156191 0.0507081232703397925840611471349111 1.0520389652471240281785619984010939 GT 1 -8655764607799506823960.3382677512906369984481207134273614 0.4932214326405007172753380739070205 0.0539369108605757950433042024370053 1.0554460217317417990898962607598165 GT 1 -4970905596065391595826851649665796305.2107809966414091499717031383112938 0.0523717521677484518414322529661470 0.0720669648404933998335509331142128 1.0747957091880852807536580550697884 GT 1 -21490896442958462804755682.1702617320488405092817112979378382 2.6259680372044938692421972634965539 0.0662362377610844222777496329971970 1.0685318039675084022898246084223805 GT 1 -1688522758287924.7480102157277739404983166134905458 2.5006564133381221091480179764155566 0.0301423231207313253178020911266005 1.0306059431165881525904176951831906 GT 1 -365114102.2561447343235326486706481163877100 1.0750154788014300092659062523661490 0.0220929967438990206690680863975171 1.0223407021637295799526125693880972 GT 1 -59550070890847852095802.4164697093611647624866792517420942 0.3293089411897735494766821057704622 0.0002725508225794677247218952888459 1.0002725879713050092305637680855113 GT 1 -26.2883059821484706467892099263676735 0.7058054646071306099124736396863986 0.0398609029096255037840476777293468 1.0406771122137299543012866123833425 GT 1 -341621448506179750435057858152289639.2739423193596713499167366881665071 0.4024692189130525330460584959804390 0.0990012112984651917431996328513078 1.1042513657681159226898354757715489 GT 1 -9186.8244044694304509772944821468584325 0.8263095828119451080603413337261967 0.0785232668503194625786585899249641 1.0817777510790474202986220469181404 GT 1 -145814726901712380653.2838552336340929817136862210061033 1.2549052531636761379884256721625112 0.0306099843082337035327449183360524 1.0310882550959806959460983669729127 GT 1 -11332642062896926385788335.9388669531928143265638742551491152 1.1141956814615708374646652769954570 0.0401726291770479911543696428258849 1.0410018327496051501270408567293848 GT 1 -2.8780398781773864019950954719766879 0.3534563813744380655565980036548635 0.0602540261978134488566076183968323 1.0621456808756397827447474991254393 GT 1 -1015598239347046864127069258.9398902198867026213247192988983204 1.5403251978336610474055832404037202 0.0183149479048570623687457039225953 1.0184847429503219621203991483970093 GT 1 -147855.8423346441482316800205504277398347 0.7036056533960491576615748481876514 0.0994825024617497832404477985930760 1.1047856836406894851366287946234286 GT 1 -548691.6713337407628189007193428888646382 1.6689937529877459510397123840670344 0.0035672293805170539892694198551320 1.0035736071149888715785696947760284 GT 1 -19353721438110093832521.4703951029838595104570058194269424 0.0687528829489150243881745549667247 0.0689877653781248627839844881942131 1.0714828604145372718702330684368683 GT 1 -5272618710516187892894.3265781370755949334829440062981172 0.4085481433091053220187201076571798 0.0242310065632018273177038306533978 1.0245294076363064365709015630814162 GT 1 -184232743135666910715960620196254363561.8999013360320701173655400121880231 0.6103297943648403826444725859653260 0.0501176755826686695966014383899172 1.0514171710943410353966677579124290 GT 1 -28966924763195543568945195.2469964744359358412997648044372181 2.2694751585733448886632434201066555 0.0371920138626431474040091678715345 1.0379012784074165436397218437750175 GT 1 -73016735900625250386072996889762874.0435545502286785298836420553100681 0.9535018636168951887796312938489616 0.0684455326528539691800431662273816 1.0709006179208686910355343677665577 GT 1 -1277206318912537108415888284208906641083.2115686425942414992340018707025983 0.8679171375325193897421589682883048 0.0242820522370002136737369557931513 1.0245817222818542512689598764345831 GT 1 -28427238766037.7407196791208493275944901815772190 0.5236738776961886870011871168778657 0.0491954685055433117693094266203565 1.0504467775267479465961715808201607 GT 1 -46246605731.4168696081111401267498703971924179 0.2339780806572014097300477697119601 0.0849985576533508519550483224063522 1.0888296373727224713074859911436354 GT 1 -2186502329039116582382959611948.6146166492404179166077180885752846 0.9050036018664677182912288130737459 0.0179493312215816226053416602734365 1.0181123744247472010341838692933086 GT 1 -64145.9336124993821270159428348108275497 1.2198042955971103252917491280791525 0.0375515048212735560009084837512589 1.0382747257546111743312726808687400 GT 1 -330124163.9874959263467573298656849535555003 0.1712035850565571451682643312750774 0.0997867982133562390631046649727189 1.1051236528379903445365986650929923 GT 1 -118786253417085792.5353373811164685369706713855306909 0.3178657173572262318901386517007280 0.0726709070168896906379224171216645 1.0754467678051595584047107890187292 GT 1 -4066838862446326314648461132.5240943686127562745231272175730073 0.9788353591510388824465002604938181 0.0727211084842936604584476856198266 1.0755009048172244525867121115389831 GT 1 -1677440944527156561914929177815382316339.4872914178412506906184016300404517 0.6435625219012346431589503860152757 0.0737763118203168732574267384889577 1.0766395095988758413710557274089891 GT 1 -42324039258637.0162349157759124529292062267274348 0.8066365418389089454127960260415668 0.0425302079732750562328858655098341 1.0434611072221638709057955645509471 GT 1 -2869549602077388.1482401736648368709758983067792387 0.4315687040884834169265708616861164 0.0859429297343764370743486538190053 1.0898622693617280313864828911571066 GT 1 -2238507337276617.6162186001158052691968985867853364 4.5487681316459721799265224315523562 0.0121501646353706384345959263684451 1.0122245812830300720182916155763319 LT 1 -864264667456239094579.0444445238801691455877182241223181 0.8513800037714393300594290623384689 0.0670196247543742769968285228326404 1.0693711123907107543030100979465889 GT 1 -9775851439844857050436356652992.4294624144125030183862665515411025 0.9543976688473375272568424475315846 0.0476605822690295150410302220703686 1.0488337765029169846431031333195426 GT 1 -1200666087542260990869398495827443.4894478891816852124742564894970456 0.7015071083712115569792637250661848 0.0862421866187963000467301563586637 1.0901897170587253338363125115183579 GT 1 -773090983.1805474902117732506818148870169448 0.5614120988380904598584410601057296 0.0790621670283054510034606924831983 1.0823627444928683788991861002482970 GT 1 -67165054893937722.1633241993144695125819814413431667 3.1514694304401299739653239819783248 0.0347967310329616231327234746660662 1.0354165584083193629289500189330873 GT 1 -12011.7053347847236218431421080246985715 0.6739606630842709286843114295600262 0.0078029049987077882607820541046115 1.0078335069553018950843019396418221 GT 1 -137091440683425246629041775239424058.5843920112779588829553771631102923 1.1904507048056060776543392576240892 0.0753718932748705936337584177437497 1.0783636690958328940988181014697563 GT 1 -5934095820930973280367342.3707788468699544477678238882516125 0.6140733737162755067764072048750227 0.0260708664117432660275968484409463 1.0264167361095422715841648599032995 GT 1 -95730069245212219947221993229180777.9219217937563946590912689522729862 0.1560092964443864710370954629489660 0.0633551947138673703075278033803331 1.0654511451469984498614426616986427 GT 1 -873922681353892946965881965491.2691238631193835526620328421630751 1.2967808520692304084106336813140434 0.0620531583396134793578940706958038 1.0640620035856833856292608726255029 GT 1 -12533903757025.9491214969980856391544967989165989 0.6226820110021451925730709387775768 0.0412712596342840730850736901588391 1.0421471008717236047527041753099392 GT 1 -5937740933.9678350840287215162496673066271265 1.6561974066927797250026269639925791 0.0225859311014043382419352565191262 1.0228449000419887758428735955694783 GT 1 -217680386436482157411376775547.8116639581043572189574246782619747 0.3104647144369775782761516558272686 0.0157232919284913447664915065594737 1.0158482140715262451980347945872338 GT 1 -79787740631854296588112.1581669311252438625165158230966843 2.4344422312652651340912210556943810 0.0795573599821643509011741305075102 1.0829005941910271599345521401565335 GT 1 -11746964174199200868.3663891063025606662854518443744982 0.4453327152931160263631110060879708 0.0816895573631652368114413455495207 1.0852197727221727683929655052306055 GT 1 -11176132701347770090211220.6492363773128752371871607305562387 0.1102162157876647513528561057562718 0.0695428088726607431304741828054431 1.0720792102694502049385756343162485 GT 1 -430226187659312732937.5097449483877269178067634073181972 1.7817865215812900661806978747651686 0.0766362460422377828852749186845061 1.0797320224869351616245491730493297 GT 1 -2033288424.5781711070898054545317119603755293 2.4157327952350384651464090953185554 0.0494002949976201711424590987643386 1.0506622251300903382524688095779156 GT 1 -24372911794435131853169411326985966.7303931883703578400595644808828050 0.8941739601474966044928882482953895 0.0425626146437295371963602669124610 1.0434949539493998753612761657512205 GT 1 -27952195908556485143309683812201.9513188994082775948027840376342109 0.0080827126460413177453802266934457 0.0888995055490813718203868131533436 1.0931020755658206445507499634298583 GT 1 -24468960216173088612985541452204373.7154579840597536090223737441404110 0.9093607579995873308009295994237682 0.0459916536915376850195246133881832 1.0470828588211119086853739070241924 GT 1 -6292622835922611269016457236963023418.2863021966967553655173534449300239 1.2437459985132176397147488351430465 0.0442168024667348481812885153749228 1.0452241724723394017525379703086037 GT 1 -10439153129843748.3354395891688000715006620162139071 1.0893405900750183120970096549262825 0.0492573777207989804748204301518753 1.0505118920995364075748005647157384 GT 1 -2127492691033376846693424172924.2807047984121389573381054334229723 0.6308947878921250668295142017665750 0.0326409978024363660080685367615444 1.0331855988611800344531035560267324 GT 1 -201.1955640470968024241013349098940482 2.8670212286428427534527857783132466 0.0722725891907363876708329183754988 1.0750173276975828396276999624745765 LT 1 -1793638564108753219549457.7457398306864225090198990304104022 1.1160269323218265528281032419503947 0.0259703720548935743255483130197846 1.0263135569674338001946946027873440 GT 1 -90252359909493123012165501354706964618392.5981273128669106565963950296218741 0.6202437667413543981864061692671826 0.0647406913294069371274453151685571 1.0669314526672542769578720449666023 GT 1 -121899723152.4772304228736980027248822418107993 0.5978310814530444943248359376614058 0.0563417731000333882480737879333299 1.0579912261672145197540502507029487 GT 1 -110942970716653692.7853402936004665662924712641178205 0.9767960708069490725513403245920955 0.0947757454695943530293060678324435 1.0995725709171146100410723096736526 GT 1 -91545378055806456413361.5599729501626487883784510844744467 2.6916418203565852524925530778576737 0.0807186795746889320175927748270484 1.0841630876647721309709796255233125 LT 1 -32176923136172990441696137759137284025.9832719742104475463499684150616178 0.2624373776187781534690811709036688 0.0908610828537677746598171107371517 1.0952573723378082158482207835374391 GT 1 -1725774566073.3054285339768819012052376427865232 1.7655064183884721826446899454183960 0.0988731049354062830326012366246731 1.1041091932610275452923505831414944 GT 1 -516195350659142808751166.9222939206950380145885661425005408 0.9712107232853783981055263986032005 0.0943712477655921281353687290666431 1.0991258226617689287637209926989541 GT 1 -409751026517829483092990276435.5287151166666472735942080326173031 0.1224953607072511001279592517134775 0.0135171097806033467554886688303884 1.0136092975934461597447484069072627 GT 1 -739698063211900106597979771708.8226406685204146163306596936370916 0.2791406991354329444289391684096699 0.0635954062112205803294508908719686 1.0657076375799142885129792357112754 GT 1 -2716781726942151684786544105041970621081.4928034111764363050695447773791716 1.7705346792961243084799347617213819 0.0379899485604566968865927319589568 1.0387303798891618230790832210726104 GT 1 -93.5455349701160102603180200172966108 2.1632007256948095640196239916495509 0.0589635830892580353758025686561039 1.0607734399216364353256947997194460 GT 1 -35990941251035777921.6641498737012464448863709745790663 2.7442184424253061278009306933671284 0.0508403617123624300701275881184030 1.0521782771454690370943994753642861 GT 1 -242718825258442309305943696.3259607593105798970249963645078419 0.4859684425862308861973617007226298 0.0737641595198437122867107999222224 1.0766263894196920868217022923176948 GT 1 -153404713329329690473820380135092.7882826524237242985715652104929791 1.9284170585496467076971219980678848 0.0793615986088307844884445678183545 1.0826879350308182149247018801906362 GT 1 -7347168615496271112061152807692.2040954263221919150744305259951280 0.0569484819321888091195977430822701 0.0578428261735223133198868230410282 1.0595831671280504367312651566654985 GT 1 -2957183.0248984508387512458688733988775170 0.4396235289655369102485924718755268 0.0495624925429805263808539885153392 1.0508328662355783213134562176576107 GT 1 -71742740439421637245733918835.7083298946259759683985349280161547 3.1788985446274030556862019553461968 0.0200125041400193104423060644436073 1.0202154667254706646092256817325627 GT 1 -383932578648497893187.2012231901875279301791335653323131 0.3798208065230572909146720634313736 0.0490256992261730269037277304872960 1.0502682401732547897378456008170450 GT 1 -2849205562611.9818891053074936334409814158193381 0.4612250171374073603323490885725598 0.0121190577725164447224746422161143 1.0121930923137741747134135322702291 GT 1 -2898209397598105463.0475734956330969470954760493102701 0.8352755962393262493374293775132615 0.0156056159648261051461670933082987 1.0157286654437466144651374070613063 GT 1 -503957917462038498131.3983658131697152344691231598533274 0.6361189646337187836493646264793053 0.0735649582667721530317375227538734 1.0764113471736551489310168718955706 GT 1 -904349724394431290080533365063466325.4228767418383848844425043978983649 0.8288481051860174729438909644328928 0.0038833298150037035678474790294356 1.0038908895177891712879529884042060 GT 1 -14451951830918281368376278456484573.2876851928721499082016286920486754 0.1563653541613767707475647164405545 0.0762147584424790307137601912853275 1.0792756569115567382807168277714632 GT 1 -851.0207435145309344645130944359037698 0.9413972722543063136503773845687472 0.0993912434843167970635736307244808 1.1046843481820500072029231197761192 GT 1 -352113424.7798380063429461593814931791752031 3.6747364620760484249959108556895617 0.0100919627412634708447291049125449 1.0101432318260405808886342822815660 GT 1 -70072464856906922521.4362034642462140709646409111941971 2.3046498026537172239785375579719573 0.0259213516336213628563286993067526 1.0262632307901071762715304298869641 GT 1 -162301988212738789420930497837976.2385626371643566369931081044170691 0.5473313851360632049747595175371842 0.0063324033239010801834572846439598 1.0063525380355798229869443582772514 GT 1 -4700192699686350641227599360725150148331855.3192807479876230495533316501287914 0.0355619026348516764276777827643132 0.0013261515861643825574996101552022 1.0013270317033777368507791490331888 GT 1 -3779472654535014771608166016197.0915934720274530243276906243434375 2.2424309722292442652397925842313449 0.0466652210346631705530634567898574 1.0477891474402917345253261833345681 GT 1 -7990407906793188941.1208033606458881319277672425320464 2.4041895561737530560984172232366195 0.0270197247781122781250380575328258 1.0273914691271151026841844798827947 GT 1 -265641368988172254.2559761441638725850652920940383736 0.1573477855049247958198580503382515 0.0652027349308072193984941202856032 1.0674256020072159344392965678727416 GT 1 -8.0368666024880278350680120085582297 0.0288940918021931924619232558428629 0.0461378319611680346990774535026262 1.0472360959185114675648877695598025 GT 1 -15721160273269506311577838991217778090621.1288261963425440562441395547277702 0.5382981735747350667887230297521747 0.0166374563497077380918680552013603 1.0167774133505012252324082315083920 GT 1 -256054289543241270.2737975503439155484811851125120754 0.4887109758828645512310982825805894 0.0947658285534442232537375103336648 1.0995616157733698675117259733645356 GT 1 -125876123661661.7160004648438225855418965331060551 0.4761629366438882852379358286848592 0.0191103538539218817450986443144785 1.0192953169308467341380603649812890 GT 1 -903707945843646405532.2195353794190353112973020033786244 1.3557767702672912886183468730884398 0.0907523169597021828696301420910437 1.0951377433280210255040542416368182 GT 1 -6409838212749423014233902616.2806078258247521960303420085659025 0.1219076512639300949566261870012110 0.0055084186853140663881425334957595 1.0055236459680974734050644142876207 GT 1 -991021711386.0497370191221754378446794986759830 1.5468920144510616813999551224662607 0.0852278866543750127990720638595051 1.0890803011791935075870525873647574 GT 1 -8498159869.6530274759275239210383120885554126 0.4069171582325638722827118022230316 0.0592937422341336040893165796434029 1.0611243477824258400935029846864758 GT 1 -31399561717371305977435399725563.0996621542728635735689561880282070 1.0280517720820524813724566257173963 0.0880742085984082463119123359460753 1.0921966612956506403259165316750037 GT 1 -116807199596.9784977679331585322428305717167479 1.0992616673586650428491723319853193 0.0741896985972251944304785472667443 1.0770859234185991806374789247858384 GT 1 -195342058262226555541.4959857864401516019307558606167430 4.4682733852307223078434058622375517 0.0450356419218877039147205730571087 1.0460812605820425978143142026756253 LT 1 -7450196048268798521787785570600.3894142550487083984052932756076433 0.1499408669538518446002377447077959 0.0282469515561435362636100796315732 1.0286535721887549695188346958585945 GT 1 -131.7725523814172433107144357067426301 3.0962060717224693121540678604866342 0.0268184807439612175645431508294864 1.0271846579201133458307307206657623 GT 1 -77691853994542.8939031437948143550901644968527020 0.0398712931833760331267223622274908 0.0246451258818912606485963518781011 1.0249539007520888749269853598420731 GT 1 -72213004654960689869266559470715696322.9589251998288231056430459217491904 0.8212317595033768829867925171658464 0.0085128411978556177739583419923408 1.0085492823899226267256381533229339 GT 1 -53314569625111943847300620295039792229444.2153057221433484322892221237206504 2.6369429000397631231389431563721858 0.0187509129559036251337088641415083 1.0189289402868725793237480405602442 GT 1 -9693718230672037318799653124356501506308.9544854430117227273044370487700444 2.5065574570473271770976557113920221 0.0330729634669031269990414006847081 1.0336322398056922871157716199848518 GT 1 -13392.8227036232841368432970679047412016 0.3376583437207270477523921500538887 0.0310064471565382254215543325661343 1.0314973205258250164029840430570867 GT 1 -27975654215924456.0557049865737191477561694791081392 1.4598829893502460709784518931532227 0.0049594966624303202846266597243132 1.0049718357801171830848333853334871 GT 1 -163474287868563917060711559970.8764741681436133963645433319672391 0.5894207353629720174259949329517347 0.0424954668081728613980038805402718 1.0434248235345462405129763563209433 GT 1 -8828755049254371282793.7684397818292764344024244094877617 1.8644825935972651150918146829401472 0.0124979259683522681364129020900548 1.0125766819238528209698204478274244 GT 1 -3673955403593224923838389022469.3203879811405068885104139435701688 0.8621874157084019184892300952224722 0.0386363277501670939761232325799831 1.0394025105375981824000751975060987 GT 1 -8416925969597099337291388268986630568826.9297929568613539992231989348183179 1.0307316883263334719315142278855578 0.0531831440943226339798972941996740 1.0546495984740824995669495753509979 GT 1 -1.7198467398263423938945721925877239 0.8369557041654083859542531660253627 0.0678503847120121736425533581916532 1.0702619457554565958069333640878385 GT 1 -733314012427.4702853546069341962021478406511718 1.1884207744455304186332703563742151 0.0270448134989135366657220471229946 1.0274172548957555842860698702136225 GT 1 -3298634854255421892108337004752952162935039.1374109019310924072072670190252745 0.6509652259185413261280617395679099 0.0470519285851306288242276041934478 1.0481948664086965778786785765244653 GT 1 -22685192871739.5487939433851997847886181027185145 0.9513357905248192548843392329701592 0.0156620881752426899288969240436032 1.0157860345543675245095159008180116 GT 1 -391.4714811945316774721989915658011822 1.7501240913210693494100465827475709 0.0115604048901745432909804423237151 1.0116277458665079490771202539504618 GT 1 -134790628372653883573640358851278048.3479237994937977554745477438959887 2.1086864440231651068206419767641683 0.0325794938709579818854397715939368 1.0331220216615721102724012558957157 GT 1 -396827135087266.4690485407207253485572012896427051 2.1369384817580768972099898997644187 0.0337887362894471223601903894961755 1.0343727691875410972030819043338863 GT 1 -5068535549369982888.1092095336674632975022962345112706 1.2832131199530738218889841136912900 0.0634003627257492528512157156387518 1.0654993695120246176509906439358132 GT 1 -184449786787687549034524560448889420.0749604257799773170205996127409799 0.4138793231685002221995913445430919 0.0972889023768130013810517270380233 1.1023527129425990900403663014276275 GT 1 -2.5577520454016815015536095966760390 0.1303572855060127256480558642063544 0.0146900246260838055340946244767462 1.0147989915053064764546956484105944 GT 1 -4210614341393480682698691398722620625.0807079452581852796313379316812047 2.2547823120952918079199287480996357 0.0921923024997769247047859657858402 1.0967227097048824267237101700496415 GT 1 -59294927398.2154218923903848514622263102304883 1.0009242905964107379990273553452883 0.0798471703063356035864041322414432 1.0832155035030789469989213488943043 GT 1 -5042861837188667.3945052711343645001058497892867076 2.1709481576861580922520660194579496 0.0048264069795221136221206936700950 1.0048380916936391121503972463515974 GT 1 -853562.2909683043304760308877841511750165 0.7756061079264510063811556353080319 0.0802901847523872819543673974460172 1.0836970769029536424191347360044644 GT 1 -6682100896605241195872034.4967244851503478004795555171777559 0.5415080599811706348099046442441183 0.0012051603807109777661708870637503 1.0012058871704734287363789526487766 GT 1 -11974461594145449940235383581385779674699549.0463526138610578089036775609422880 0.5509446773636749916426291409791530 0.0091843660202630696316486041353012 1.0092268023435244161402696640403123 GT 1 -8932891955821241602371383824274.4935778031212871451178824190175933 1.6308644480234485464757074309629592 0.0916470227345671302664620908131809 1.0961222344394828257496784316228046 GT 1 -147.8614549070080861693608272955095178 0.3200341304825558443353729175450879 0.0312825991491382960701442290498841 1.0317823496153733427007224639386240 GT 1 -9728760056584406.2223330484996806289697270026556371 0.1619579679860468892309792798871431 0.0459898397014866681338769414874581 1.0470809573824783356326911810609963 GT 1 -1173500866836731658642599411822858018887218.5372301755036418246665745676711348 0.1698523559352671408310640445593694 0.0460050687649818728332646439131084 1.0470969207188060054499811911285261 GT 1 -3205027301835.4986023341305439766038346073021492 0.9713722749794983545071841435008629 0.0979593143329759863688253877957982 1.1030956538757589426242124425035660 GT 1 -474993067109497859420450872117944744.9258997399257125364057136281430209 0.7520004324184117716418995795788299 0.0965862214118774042205898015802456 1.1015746039539637116832036175563288 GT 1 -22829172638486304353217.9586915147283366178302014830592310 0.7059734297505497251920291700141669 0.0725863323629011314409493290154609 1.0753555695475436113360490728736845 GT 1 -2316893653845490506738972916875154178656.9984404826240101272163912475068808 3.1173158901682870370208980052276833 0.0911446339796368285247968366566137 1.0955693107534498990201306975123143 LT 1 -343791498.8343710279544206473035555132504968 5.7699009322969788552409908618466384 0.0602297604045847936826207307458138 1.0621198595573058077006082802892525 LT 1 -149348508800531803670887182536432256.3755906517505962735799795284514317 0.7246778630562276181621077440234268 0.0838808586490412592662993026793526 1.0876088557889534543077766240416793 GT 1 -313745431493884.0377558883607596771066937884842732 1.0149075387922984675931374442768362 0.0245163813803856978176594273367908 1.0248219118640576634194747331982688 GT 1 -1077722718075344583195812481256690434577558.1158375248171591963900027356217797 2.3487854685922154100490270738639536 0.0522465870967083541439382784188969 1.0536609235335729393861096131155775 GT 1 -7360558224763291615538246890477.8643391224412962230969916367046914 1.5988300282031610886548937824932987 0.0684550450693116699120816533490953 1.0709108293098520588287732494065960 GT 1 -11777417987855317592986533301778234792829295.8634157017871195375083197587937764 0.3141185412867958102558854588916990 0.0440644872319778558406963842328188 1.0450648234695195383730978406838897 GT 1 -27939.0961057642686172975003695777653329 1.8359281856602233541112776099808342 0.0133682159312355670674576455619606 1.0134583749414678940045219191825995 GT 1 -3716459185902706773889653637090865.4096216899208573439170580685570933 0.1956278506067884311981918703070042 0.0077973156245449941823227649713845 1.0078278736406634865382381478500781 GT 1 -6485587019749239920599341100.3911829354589462531816178278864932 2.3440663657232210839817112005892891 0.0856626420818004434527978287903220 1.0895556750618865070600263750809117 GT 1 -116434959958888.8190514248573892278438695550528817 2.2746764559813596741176091392667319 0.0869038945816850762556866886114978 1.0909141405991272051311202501243106 GT 1 -18310440222.2680778899783359173274201759497314 0.3866151498233821163041641803324089 0.0726111657115369439441560282486840 1.0753823468983521374482171197819040 GT 1 -31852286091251026727863258831941063070.6424811265548555770823298392413136 3.4874975648086947883606670557858777 0.0894800453509665286080256601627153 1.0937394639107158288910836305696189 LT 1 -544799110446364.0354179194117735397418832217425068 0.5775844862205964644649676030744252 0.0707041316793944154982827697220859 1.0733281104412034683563488081658426 GT 1 -11034428111637441771057638894.9515718866192599478051300248380453 1.1539153015810616515986252320771611 0.0375218793722962174998050049597843 1.0382439448939420871893480717717545 GT 1 -1207477369994080092488635365.7593767895042758693466317144007630 0.6034281008337916480050110576942028 0.0736936748807231274360742308288569 1.0765502943753109626601781110183157 GT 1 -1411711619.7040119842789815382384064905538193 1.2222506479200404727699268047561377 0.0724992147345641990523568731833915 1.0752616378535351175104019527999077 GT 1 -386218356482358870782565747664.0044700755357375558963797368772009 0.7353174546217876754178672278490289 0.0005725872231436320666680013208451 1.0005727512138099804544525191971786 GT 1 -3717537493.6695175919061777474173228752043756 7.1081468749062601575139181421139786 0.0699261373492060646957283155928650 1.0724912737834570119139317136114107 LT 1 -6358282.0526955995922608865675396340877994 0.2156307127967441402458344800520914 0.0365887654856584603056790716383078 1.0372749235354068962548055002104288 GT 1 -271983115479.7036119738285886755390604363652089 1.5119211340363300451700920842183815 0.0290097386240913425769200640611370 1.0294388402200895166284070623488230 GT 1 -763982225630.1226805212621722784880687167535241 0.3020185171663465002194075338543642 0.0779055439831171277795080819625628 1.0811076137998908216636048898416603 GT 1 -2454094036991216832718990658146295620.4442010692722609109136947623400015 0.6170688870871373236787882632998318 0.0459007570792358084628304580918805 1.0469875847255800620729442246183238 GT 1 -610303963389090521857044070.4444787045528256682343242223403917 0.5156370686696308736063244444686541 0.0598047697507674815235514065125126 1.0616677335285313807130034234103074 GT 1 -2109552380861775189884512618249460271711343.8541498442275149987345703963275943 1.6004247620174309796407276850102429 0.0833967401470209668803325201875695 1.0870805504515359361138206484788949 GT 1 -126413.3682558748667318823296483025609228 0.3192719459889999398267687640263820 0.0215908808467486281127392689436628 1.0218273741770871532781424021863043 GT 1 -72740.3647775460502030253508036801771005 2.0656552169185020651715133234471262 0.0086957387713418459836374680163578 1.0087337673258137911621981570715144 GT 1 -3539931500091481117637826.3492193151491622765352209927452773 2.3571409816944775230386413899896179 0.0243936115450982065411606997603004 1.0246960644300547544635532414832637 GT 1 -5767228130776719531282604.1239078544136276786256638733077693 1.6162388777392342584480582630050320 0.0604224169452763564516179080034078 1.0623248844484350651557400397768542 GT 1 -62444130397209500186188899124238.9910505215107637857242498271667445 0.9536781062050206224042186793641411 0.0156392320422989789935860290024115 1.0157628150203885984463060907591581 GT 1 -1723415170238903396470466420641.4741220962319059095069572576121024 0.4148830714017358974451228086548650 0.0179675627354330005318880866253201 1.0181309393355656972755112714183376 GT 1 -3725995281.6501376965384055734818762992360310 0.2832824416412246041640625144263238 0.0214317953108715365882434779056901 1.0216647912648690727614667874645138 GT 1 -120855072355125557242431.6428115197345675151097037645085687 3.6375538962964476371458291620761968 0.0038324133557925108074568327648317 1.0038397758686723393088865563246302 GT 1 -681304938524.2037250724407024563844026210104310 2.2763583951863369500059374737493462 0.0675246061025934361398192805274809 1.0699125150537028869100597484799328 GT 1 -461203731438130.9670326459139418997665555744686746 3.0064011119063734576860621951471756 0.0314794141476929472597063389025144 1.0319855409636565227751609312788301 GT 1 -48127477126252233962501285.9399633195246382290892995927558696 0.6213152185403838770066797031367106 0.0043311137733479680222499811595845 1.0043405202166832207225618534773996 GT 1 -611684182073259732385.5745605535342126434023993114811440 0.3098503267320647088853915926601192 0.0284828015653508283980145110748797 1.0288963073520645204847614860033277 GT 1 -474286993937586827308880.1410694524623264782421004458273538 0.4935425218837252768956075095901806 0.0986624008944942881991321984805980 1.1038753977631930416214989546372941 GT 1 -374015193395726808824941382063.9227681650932662468332064543123479 0.0914875202764502330437095436197483 0.0985989573422692442231363608762630 1.1038050120169939330893697444864049 GT 1 -60633226331872556821631023095873232325817.9620908636914500787689022772550283 1.3458717326891879515491533223069302 0.0766938446509687185733245375129042 1.0797944035421084009116984399705972 GT 1 -53.7482011552233046663015301013750167 1.9809505673063364451733817938209153 0.0653700465472336053957158690257286 1.0676045997400138912564685083130609 GT 1 -416726212.8237592337383450520169074912874188 0.4360652046583234501691062192756080 0.0681328288170359219789165632815858 1.0705649946434659060524069448686234 GT 1 -7254030211074623741036886266453453463423460.9731881077354320244164306403355162 0.2510686653809369610394695979444776 0.0871727765469532661179152392691309 1.0912086567630429751473204658576626 GT 1 -2745113369135144822.6064139121780447296543527562785709 0.5864911233255380017592479935855186 0.0822930732732481920446234850344767 1.0858771912650362688682737206637322 GT 1 -77409028110199704573951347643047618819.1954602206787218701367362318404596 4.1591718596048060424119115948997580 0.0442526622298187700342380974974509 1.0452616918971415129641875753846361 LT 1 -231475420583.1325670086867292059794350811219463 0.1603752394873455631238575690720227 0.0144325076262843331076075850773200 1.0145376693221884764782844650731024 GT 1 -4496306026604610953879053614612353575509.0885794764972053839759411119949723 1.4678155880889883721399121278054586 0.0609809861147823737735220156898777 1.0629195508998449718756957779660764 GT 1 -42134176704537514.5771470322243194770273860455770286 0.3772898782731214971033483129209518 0.0755842802636384033027182486177782 1.0785933953864295853669161255543242 GT 1 -525477617313139420075082545378022349.9640072600565174533348867677789117 3.7337869930013064422346012019947397 0.0952806789088510595110205855986388 1.1001305258270434428829261744239195 LT 1 -144294537.8753674195034286016030478966066215 0.0142489111608588225065769859249962 0.0124128973939419249959318546420844 1.0124905809260157302007141349021769 GT 1 -568967853220432103031144145794483327306574.7699542414711339233193729677691461 2.4353063963136857830984826026196293 0.0115390037827963829129742532699331 1.0116060946944936491240258054138994 GT 1 -94193668.4929376946108358252408239591811677 0.2006735217232881018296244725553802 0.0637725940568317336497545385557997 1.0658968769458605044396405956386017 GT 1 -414908183552092.2806273664901527560893481276221466 1.9446525671408159760460055218613019 0.0886684716065020613554175165570710 1.0928485309167792135174744308221539 GT 1 -830220669093465528114711201745847.6539807928068153783688513237265875 0.5415828824570661600388546050044818 0.0424893560538227392130143859873347 1.0434184415962482104523116317279250 GT 1 -292338323174511.3842138931900838159754219780657617 0.1472061397956823160401992294692179 0.0358316767056573754223640301175216 1.0364893903875116428361580483183136 GT 1 -555675722066554.8665313871097141319255837205061768 0.8216187753371381643158733968666456 0.0741401960232375059413066484005829 1.0770324553911620414278578983035016 GT 1 -6999090011212220266442514317150257307.7467117024927453112078291514945019 4.1998926444661612748678267438630580 0.0160972355154611506523581307723194 1.0162282033933168087756137942440623 LT 1 -11296323699327.6227895299572749235197732212037933 0.8863719167586637601985061318370458 0.0360532697261829096557872388302142 1.0367192449504860630875677301463002 GT 1 -5503453986573824977.7038951610967671890824993232271100 0.1816128068674991560349635675369188 0.0798725987502836881777976637005540 1.0832431389072115747556854877639665 GT 1 -9735845929991225728762748193161145.7357649536168800327755641192364811 0.8381080681312969364305826576923097 0.0418503022366834608500022198011472 1.0427512525054360364664275980137476 GT 1 -96454865230329684375802214814016695190802.7070701414985751965894177873749041 0.1477878310262646587015572223031982 0.0975025242428483372976438602280191 1.1025893857239968320234436734396706 GT 1 -51.5029539670002878462678912003485629 1.0803691551780260709164544724504252 0.0184233261119521192443153956754276 1.0185951492255228620401475275916457 GT 1 -2795088445961.4464248717935304781959241918103881 0.3162611992895505377375327779882718 0.0983291098865515803141023360538111 1.1035056923361450200024628314938317 GT 1 -817738426522303157.3913666819146263046019816542348274 0.2438906479681024732619275724287903 0.0249325996150754503732505042296687 1.0252486817736388133351828034962331 GT 1 -26695.2761713308372271353416111389336147 2.2052326460579027953859504834187245 0.0128174707212772250583325884690472 1.0129003232336381529354428469212629 GT 1 -84900690993033706075.7573098710208479707334240716610793 0.6370027067974394308855356643559218 0.0542230857214951246481685304907616 1.0557485577417479922509423396311217 GT 1 -137731175916995858995.6916920796566299246410336686133357 0.3656237772630995791485617571061689 0.0327485426569306358430227334726600 1.0332967787155788221212482254036456 GT 1 -48356150.7932661355407170323768493468817130 0.1892626218352975223725764804958806 0.0030873692328190022120893403735481 1.0030921449894247137131800838821831 GT 1 -4735634322505488429850.8221674642844447297810961886795709 1.4889663396347068168017913561910549 0.0097933638368794049118788483635095 1.0098416342361076087533010744266672 GT 1 -2329195823716621498648275890.1029724569681422204970994855437149 0.6983021126686267929980187493083116 0.0469630920016909896636377800176457 1.0481016478529749889733875185430907 GT 1 -105177.4277153637205937575299906431443303 0.2749372157005897235217476527422709 0.0040930558603533895505726253681893 1.0041014553410218358573336226876613 GT 1 -448.2635794586248865831915646358014459 0.1422710485509556775744799209904081 0.0458217119362806263531390276017504 1.0469047402318238407676220477592320 GT 1 -1569879609954954721953801477780.5072714289706696445620972839363448 1.8020526530881232167747089541537587 0.0747585095924114831930821664532097 1.0777005048318332163721829447614168 GT 1 -241155480862676011697679226414071081710.4935224337701144268536282188413510 0.1006908594682682210544667190778747 0.0203302362158438978736246356472787 1.0205397398370519152574846199947966 GT 1 -31813397.2695580007188286626633856714237332 1.2482010924950169723240413353021407 0.0401215597556053948073346189991640 1.0409486272832673164372934088978686 GT 1 -76398895951.7078385064249833827089766604861299 0.0590680345303174280487978254603592 0.0959230601826250373678089771122471 1.1008408117941964605702490418517569 GT 1 -275657416911703300762559972804911642.5855639825707910723091321988122862 1.1796475637111417560923452695742534 0.0660937972761958524307585324347900 1.0683792711455035417606265891115321 GT 1 -3885855748160018074445.0699015663382558795742669353994477 0.3435665550296353418499720887636342 0.0730147638904812659515025246752567 1.0758176400700588824017487320893615 GT 1 -438514129127.7347367173253345393255020140191581 0.5432878993342224129207873335331903 0.0970099504966455938967169515986645 1.1020437450019956290484694105621315 GT 1 -75805353.9094130210143978124945053144083758 0.7409743978046448147067334065742065 0.0653932624577490352454215829090167 1.0676294397301857784478193579417356 GT 1 -219759.6296946352356393579457691604198873 0.0887025358706280547971618408695663 0.0623459544451516288079067296593492 1.0643742193773397032220976907954378 GT 1 -49715906126847203074624976203437618.2215946726136157885603121230396097 2.1394522092447019878776066215750130 0.0786792690568119485537992280856776 1.0819470612825883632346639909236180 GT 1 -70096.9227617634324176052945871929330150 2.1570970289325109458166536599178917 0.0380577147134872619446557971990653 1.0388008246208373540988784674616993 GT 1 -1394087747943734237406517411688413.0649552287557311816360341862164017 0.5008339634613056891922645956543497 0.0783791988600839853992089931826695 1.0816214186138917731896411256778407 GT 1 -90215047009832108067252653429.9296499571589768329065344664716632 0.2839009768541969064733791314772011 0.0442935271781691744190787856568141 1.0453044498734317940175072112037024 GT 1 -1271384035384478660960789182107911333315927.7793355484796038581674633483303470 1.2859210046331571040249276134072181 0.0947410839637964145021842664097979 1.0995342811319725303764565890925548 GT 1 -9680840678.3273295089777224122963635974016977 0.1887272676040187155546531542454962 0.0045313840935166868703092747652323 1.0045416819351778116556265746485560 GT 1 -105628.8420081127884660802840254943607961 0.6481553867903907931693947035393729 0.0755916589797962616837247048826615 1.0786013774506124563766844223476487 GT 1 -23353.8380751488396708686054878633672770 1.6617044769604777214403239152920827 0.0081073506946919391905909611551774 1.0081403939791849109442871995766386 GT 1 -29791466501537156206911664274374.9684038550508241627634351742696123 0.0230931816542514492446562369963437 0.0539489962226544338768977989592496 1.0554587961855911154497562827965034 GT 1 -142076685307755117017051955.3904450643809946395000338473386850 0.5089520644787466754540897249783101 0.0564171028265713023852744004468874 1.0580710566940264083236085846794475 GT 1 -134087262584912406364651480111637139155105.8286642458190110897441191716511160 0.0714191281351669032396780806717501 0.0136116618698489077651655339050278 1.0137051498598883577837305514961030 GT 1 -472048263850771829834688914923163023451536.7744479556019373946976545577597503 1.7105286784878068654668431339094651 0.0693965511372742287739195749355953 1.0719220335149212417765498367644449 GT 1 -84.5828950513793142234765754914733197 0.3202669740222430469184790703494540 0.0830630196252875494689484481195983 1.0867165327789518286991582203075411 GT 1 -11.6919816748307670464139256301199628 0.0970921251630991675768759115661651 0.0412729213658856828947395098673580 1.0421488341388843333961198105644496 GT 1 -430.6190304143170633754209124700378631 0.0789632993899967041850598594527162 0.0400557122299819831158664975028649 1.0408800297771659734552483572605361 GT 1 -22463734136943766874336457611037672280186.4061943142514814694438773078792140 0.4635586924223016821433618029505068 0.0585451616991600954869119218771516 1.0603288998518431542904244495350184 GT 1 -14917857919970751966991403001789433902.6086537901821582615048930775954703 0.2152044353909427630493155550881047 0.0750684060397622883277863513426368 1.0780354966797496809114403719564968 GT 1 -4322041221030747798247240011708973.6209951398960962288976007855104878 1.3462253221005327777346091623857505 0.0350755967481600596627651865212242 1.0357055193109090403062527339795551 GT 1 -85484274297034242.2115043826350591363846501925051438 0.1156111024056845746828446029497420 0.0656259888181348311680548838658037 1.0678784806705459228134073144401891 GT 1 -10369070222537372650137110816.9373267601786420081264780086369726 0.0542314047243322309216353140307283 0.0298125171492257837875075134648710 1.0302659448716725218079225327705932 GT 1 -17894591464467999235043927736916184434544.8238432789560941680743547950235651 0.8952080431437859585782416820102086 0.0036606186595626153917765284206306 1.0036673351199914304015483778409592 GT 1 -60028988833865763013526560.6220212078249927988331951291045312 1.6975470290705200002521375477186473 0.0474658280659857532281621302020420 1.0486292965786017937726805571343755 GT 1 -1080210655652951851522154598815293234.7311887594936738032471030715321843 0.1960000605257579246610496625363379 0.0530742408256676787043306946207038 1.0545345846724097696602503506711152 GT 1 -11485213346527765946464203404602125670376049.3487397312682483866082233437786346 0.0982561601981614672605328062761408 0.0003026674902591730704595136078253 1.0003027133033083165618881873225257 GT 1 -374997.0334668094404807751931035840094886 0.2678602976699438929149617054174359 0.0150141291903167248677025952285295 1.0151279822685809213740579434474394 GT 1 -880233819137054736568702218871.3463132845026976827568736738744764 0.4004502539337605837584853834270737 0.0072521664322861096639394746369086 1.0072785912267822158315407154127037 GT 1 -350427.7648163254966564617601818506526819 4.6280800351138390607249489520878863 0.0644059175872655933722822740133614 1.0665735692036861787709314567585967 LT 1 -997.2426722466587645722271591422883718 0.1749584790343126033512847561906144 0.0781601402850932068096339673259765 1.0813837584558276694163943179040716 GT 1 -11520317495856809806.2740744187727191941234692969583049 0.0436929861034628590297161412684057 0.0847322264779730092170954073621208 1.0885386078619286165647901523957776 GT 1 -19187053761856188.3682451646760847332026131790838118 0.0430197967884849937721532705860674 0.0638113985087568549154930293780578 1.0659383254826991171959598232457925 GT 1 -12513400099821.9198160939436787416689072043630653 1.6317464716330833609128968612416743 0.0678909319169533147040889359115259 1.0703054453033564778956214979043687 GT 1 -41832824.0487938148033720381682623165065036 1.4871410161212225363555729041548817 0.0647195069825745749607250034961975 1.0669088021502065770021174067421554 GT 1 -393833466776078.7358572710074628616416814406990505 6.0975861503874187858488376122014833 0.0887230750223480701494107847649590 1.0929084487952037856566652888404772 LT 1 -87187385299329606425861752.5723740547183484621776166800337551 0.4432613854437900496999778544446603 0.0521149058842337118055754503469463 1.0535219928121312010135466365962727 GT 1 -33750103554080190488787780775.9931705858451006718559562897922606 0.0951761836662146824092248357513890 0.0793684938830965632494189130679434 1.0826954247250099186067525213265479 GT 1 -97013403670543382498756206536592846565.3320359469956192476620749935513554 2.3245058866970014218550085142950158 0.0227093273631353060555203420489892 1.0229711556951038892223875312937575 GT 1 -110045494539103431457380075.7338669878997593861738306270153221 2.8525922843626800811648300687307041 0.0029012863129529705039535769874397 1.0029055032023318230503984814651782 GT 1 -551187160028465.8588774590674019872822849153227146 0.7255764689188657646157090686338690 0.0386265988943048453422356005096397 1.0393923907391117954621764506519340 GT 1 -607871829458921310.6941156972827053306935992002942776 1.0615050192224949232936917609597820 0.0126763027944045835504868410600297 1.0127573326213831320107940896905082 GT 1 -22457418200022220941067729051.1613856966683118418116064000408929 0.0644975175181211497972314833268998 0.0777591370399954709710882068892184 1.0809488498897463247112189736001111 GT 1 -4515047529785.3809340243779050287110248214771338 1.4960021189767828438686059247560019 0.0414242921427393378294632693953921 1.0423067338490758179725366748491352 GT 1 -1344193712583233703121203100299036010.2484570263317531129975126965114322 3.3581435679004281846190847692935955 0.0908774421216309990933941417453507 1.0952753667441005721410305616107715 LT 1 -58288499068896285268286405073117921750.6874554622324178431334854775884929 0.8088158601793453417458326620194630 0.0782208364456666740369634326696257 1.0814496030363286510309760616208288 GT 1 -75.6252423609199364245495486515241618 0.0478287917601951943912425941846924 0.0214645491475106635768043521257131 1.0216982630092495415039875434952555 GT 1 -1499013926138231698853153.1523419601528546933096350697145789 0.0989160221262341270694836558505291 0.0575068232735037699130781085256706 1.0592265992336609800076812039440319 GT 1 -2781787.4471183481236174189135921157671128 0.4508991661312900097986375765751545 0.0099667388651709491545508455176346 1.0100167393119836322926004771169483 GT 1 -221793736951610043431.5263087402777293331334457644666680 0.8858380530950986268511953219653863 0.0246777720390839870823210767218220 1.0249873723678278203415892598734304 GT 1 -13321478963120453.0671039944698114862222987190608596 0.7240372240213049090762495474761678 0.0741268218374391508236510687802550 1.0770180103432770743871674784537562 GT 1 -19811.4590969951676068572994654153737512 0.1424788567547576473240395710253536 0.0546601668449032392778965783229350 1.0562108043288864459209415115744023 GT 1 -4664036143115726092939731899074938481419.4678730416690820346288487605012446 1.1219420266381729966238085143206344 0.0231183121863545008581204148167356 1.0233897316994193805488269094745866 GT 1 -226451871165005531321972214.4575145035065416203250221597475268 0.0900320995772910086051931699239183 0.0277392819942223562810101638009245 1.0281312820874983208181298875438056 GT 1 -467582684190038369654491663176946299366.5900693569494801864345194225361590 0.2873664568614644309692327178239735 0.0514840458387859005312583668982449 1.0528566693360741467117219032952780 GT 1 -12282100269357446084775633829063714223344915.9210392466333501664911052777017726 2.5260136955884991963755726934580007 0.0347117132264353840031349042464641 1.0353284794873539856411969310197673 GT 1 -412557314124562299.6231263511361850625090525397323568 0.3639141754684941709917413636486683 0.0484066711428075772683682024841010 1.0496175110264234891177707140090913 GT 1 -7411333667935052436202897930.4913471268217889027791344907685190 0.4757513252105853907490469745525861 0.0592276026957099517695176358795719 1.0610540418682208982795202250948150 GT 1 -352734.9358772744387682499794145457944704 0.9471161871963688444695020640394530 0.0118064385935084440961068030053680 1.0118766880678399587226283167377701 GT 1 -525779788803260739079995.3712224350028485898049931533977335 0.1156612692914612316635415867476288 0.0235093532192649085870064300703939 1.0237901070208148042730250372512033 GT 1 -2990227113735804441492472233223888537948.7435857879101214322450455324284874 0.1369436567998602206466188019804597 0.0998209887221961773990982314499738 1.1051616340163090985976326259812996 GT 1 -76044203328659.7549464600537239066550512429322701 2.8451081152197271958135629958910001 0.0227587571320203843357142464790093 1.0230217353438714550102864204960848 GT 1 -139388531615564.7409776882850641786379759611900301 0.9073362426106586678242776073720548 0.0755603122563325157424283664164035 1.0785674679859305940737995199500775 GT 1 -1575868675632793335177137669.5024420695370496416712994170739195 0.3674670486367254508042217053213603 0.0225701161005689877460619062115350 1.0228287197214951026307897971232110 GT 1 -1829768158889388969877879951627.5718812384457100404764008811926478 3.0480992912503497682390173816883817 0.0393878699357348424163362212846296 1.0401845622397754737299892457924670 GT 1 -220.7363265856025364793791152575874291 0.2448762570404594235706162482137600 0.0944897579947725761898494645393845 1.0992566908388955997212546246090339 GT 1 -48611361657773225485966421490006567519.1456987829232709502097708694583446 1.2582498346823990040405071478204414 0.0017170579659852078913359310584611 1.0017185337996510734754000996756498 GT 1 -263820108308726011637690566.9570227021925173659797766989820361 0.8299791406159786683483309718926326 0.0106982978650732963454717266585070 1.0107559361096847106423783627134093 GT 1 -44302.6430691466225620505622612884356980 0.5450002488485238252365934662063015 0.0422197324900392852838603419754862 1.0431368931756382628601741016024885 GT 1 -9508529.2369169129574207158074609296195365 0.3286961498372087751355881200633810 0.0795911890688176331212324475825039 1.0829373479297817458873187247440788 GT 1 -2038196660665650661.1072911527621494843959061021559584 5.6875186260520137063170929393965688 0.0178945783413579365729207091662438 1.0180566223584990599778813802675724 LT 1 -368851849092639421730158219298658.3511978733173801270827134853681443 0.1720627470296802787218356517540159 0.0447986592547458687853844363589658 1.0458331327170058830656958544840335 GT 1 -22799253852.0852805962851108725841490858439500 0.2662220508171927726693644843357485 0.0657100231279813552449790845595623 1.0679684211953704950973652756762586 GT 1 -634962805914.4017493579819381801986438506746043 1.1273096251684671391676597746632884 0.0865382587819922237017384004726567 1.0905137855758795298644106935954396 GT 1 -176623053633.1660373805156206421029448398262432 1.9397528607055948289277136633690445 0.0427322859884637189107178166414915 1.0436721836911855149097172079612791 GT 1 -101784910876496325695312072165827869.4593552625335708152224567811406281 0.2865466037275846145261205566063786 0.0702987218965418358560797048142208 1.0728919507730088663755851303876879 GT 1 -2337738995223.2249639066461761636851790128170776 5.5697036684929992717888989498961466 0.0478051833300930935392377036721608 1.0489856257674033434300680200524019 LT 1 -22.9012191234733165995504218503630390 0.0460498428932697186008258685842760 0.0892699674347715000848688567350543 1.0935087675004464527934075819325653 GT 1 -186837999.1640948939122304828575509873647969 1.6637152701737640670992135419800327 0.0529493562721217364949130855491203 1.0544027091606182104170612001562972 GT 1 -1400.8464585930752329252126577841011409 0.6882250349340099281015289341902822 0.0458753971689070565132182964256721 1.0469610051286562505149294957406413 GT 1 -738198770416390718282825812713212.7266182341132724650769938625248554 0.0295830195408825325798902227533279 0.0008625838135882256188594409934909 1.0008629560530798586958036104156694 GT 1 -33373992119562107845771805506.6965552367137720268235262437009767 0.7851549247722076397938576423797544 0.0969700335051576272802897540253476 1.1019995406286876132010012462743490 GT 1 -229069446892995083465615457.2299003651357310966006509215006834 0.5318140235690145696163254908719528 0.0710388137002555790755539295902656 1.0736883211274998681837994638791639 GT 1 -325288223.1993735292376537153290457973122873 0.4521346331129457215021214477840757 0.0260991092178752545423843789095882 1.0264457353607917197955510497995865 GT 1 -5438544700276315037001407555601227911.2366735294310869624575912234722572 1.6658642007212529067595526900600915 0.0834907466665788754815699035388476 1.0871831153720894608070669041774275 GT 1 -161198953326.5435049597118887550383848560302802 1.5925106324259417605626655236843070 0.0045270594678478034270728638439027 1.0045373376332017897515249194536409 GT 1 -2584688028454002801419841829452115101.1227674376635988819048516307435888 0.8444859882754718108247033309344655 0.0579851883888325657379422357250630 1.0597342809506541555019773488381215 GT 1 -83402117816364079014236031759.4939174021955971329308292194845605 0.0640497907966108931906899133872805 0.0327218089462520080728766804939493 1.0332691402550336613797638094602355 GT 1 -217853463154058939058.2994193300393422124455804410765739 0.4875125373511124607108012655390474 0.0880759710478157897310084253887937 1.0921985939650929106348743250546485 GT 1 -11302178637151798792467113742455844281497.4310804962271834830328076408663580 0.0642571691993435966573657360745075 0.0199089501663457626673754539015861 1.0201098036396750414348194179398764 GT 1 -5697857227263273009116419460063200286652628.9041893359863517429174722000458751 0.9977261516424223964692479407418696 0.0814643435085382391526482807083575 1.0849745547304614100940946237748008 GT 1 -313825372347175188984702456.9913584767984842595168932033843723 1.0774137947597148433016657799519612 0.0539724293781400272446137346049497 1.0554835659343783530312890562530173 GT 1 -14587972.7066342743947521916664834559072179 2.4927962004530356008662062182887459 0.0945646649624377335604304519754350 1.1042735777104554340497183102311267 LT 2 -1372982922078073999691538007.4325330242568204754259603591845269 0.2349695203424880258985002792627738 0.0247568193743918184877241237303825 1.0250684230570311998267583552260350 GT 1 -1183135.5378436484707316588722740969503532 1.5631367091866078909520140462900777 0.0220901654681286433709995099959424 1.0223378069276157714152077446637408 GT 1 -2594110035.3790059434610755118582139545753482 0.1533427394563081928317292984834902 0.0791941716252837494002712168402726 1.0825060919086622112633270839101964 GT 1 -45848603594458047620460248782727504724.0631704251592089840588498189853910 0.9249897399460318434732509042920431 0.0599855247659810115430535879234728 1.0618600046515271224003281277113538 GT 1 -15294721837828049180637154515.4506138929030756517811094097486114 7.0611092335869707725880927225335493 0.0715002752511057566016859967471992 1.0741851946364918670421577256451744 LT 1 -81520208804262277098487871.9747326111634917899487134407892353 0.5002819941805701189352447564820511 0.0864090419828801581018685018158988 1.0903723372209616841573727782314274 GT 1 -818651242652668.2304230688041222754343290752333824 1.5173160851211821038963809850746089 0.0647845309534269493774610712436634 1.0669783280643997482627208952740282 GT 1 -250499419533360649772595831232352.6107092677927359045407744936805545 1.0432829312194567422397408522498794 0.0643211982732906742600312756272227 1.0664830219459870295438715295163916 GT 1 -10479488448798353517995324627088.6863261133878680432205125362455884 1.0888012853956604724841871674002976 0.0344104142533903838560942807561640 1.0350163945235367613791520058320095 GT 1 -32242305525702048849874055.8069035450329723359438357241094944 0.1335464432015798706776857826497041 0.0845424027873512439877377028857075 1.0883312324747334722191045318424574 GT 1 -272029260768127713594758147.1329986582753757099777413426428862 0.5312297850072799887668596577052542 0.0200346703643766291864383434564443 1.0202380858661662155262019816984960 GT 1 -1213156160.1872722224928305234982161520661466 0.3629021505383245538322479601294499 0.0012446554995898305390240523889897 1.0012454307265732765152386845241002 GT 1 -254467267985941382497108347.1280852564061167857604644095698266 1.8224239204768923926505701390216644 0.0132215327687825289893706699242976 1.0133097153683998528900987473300752 GT 1 -26443126.9211168784298823711473024948653287 0.5375323605915597271652157819946054 0.0245970298415085169681474284414741 1.0249045906436778286052202803334056 GT 1 -645696354853933172106287718590.2318876701190175302641766958985686 0.4062408774267523277424211304739772 0.0935254303489637899788697721440293 1.0981923025166008839611515884397920 GT 1 -957854255342.8819212732388343572538364113624950 3.1743438243521352468535767850650856 0.0245066412776923767572046955623239 1.0248119270176893867084171049744460 GT 1 -134887127.2532251469343431652862799319063426 0.9874194740274536718028474157080518 0.0259409739017025901430936191500733 1.0262833754321815951772442373307848 GT 1 -20064411286.6427927219948085208350770566038249 2.1882893069614499963130239551710885 0.0176985718842922904091590736557314 1.0178570644535379457295737437641412 GT 1 -4516.1694084557534676873197181381412922 1.1230504081845784122453603317060748 0.0749124181774415846540692930473638 1.0778668629004545473407149186389790 GT 1 -2923997279426309604610821194261421.1258484829193383650942082717921212 1.2117291891172366145114243469046861 0.0285531328060899548298882642316611 1.0289687031745236373286129513926929 GT 1 -87659499965475716.9114675011088286026268800233529905 1.8412128984443402771034377859947300 0.0973084954039500954458443190391331 1.1023744178267216443312795638326273 GT 1 -107976363878621175594887850985.6765656168568140160973158032257631 0.9090817036649132615325790761486897 0.0602399362310943803067575759445204 1.0621306876099224338078879774994071 GT 1 -503415256.4578392863940658199741620884464728 0.5645849066174087241227977898800016 0.0129732494360580572938790150927083 1.0130581370142689027538170950467745 GT 1 -5213635998656633699205201972916011.8635428615620305722926289102573442 2.4701747398991587189713089807088496 0.0441838745658025132366998190909778 1.0451897218418751932167669307353510 GT 1 -28.6824609217134868373976417598831750 0.0745574692722835790140614288320437 0.0512171943188140083726772490247119 1.0525753730770140627945492280557688 GT 1 -26107773452053167815767292565040033.9871512572068302203691724584630187 0.0621405118861518776634857056114172 0.0007811351143393975820541155016169 1.0007814403593415693540509886929913 GT 1 -35249548.5581762878379873840330662260185165 0.4378667254023706841196170412804870 0.0200171169551757368422691002353986 1.0202201737508482751343722010578429 GT 1 -1270790140.8685023508860869055027513859921877 0.5488032303610610630737828539539562 0.0434320819833703930851531497118194 1.0444034858096990158297385517955849 GT 1 -4399804441705262518677269.6561713572716099591371575665560121 2.7038488147797470289839348455503127 0.0926175331096387255666358320480096 1.0971912342991452901109665284490081 LT 1 -758187737405.5525826780768835119981886008019699 0.1389132781861020767260711099302612 0.0723960600741653623151065021068590 1.0751504261692518818173321879988106 GT 1 -88263766931872.9924694537086644817968027125383719 0.6864363353796837023068857267674381 0.0810799491136237007294688331336261 1.0845561561818828636066492506612502 GT 1 -19909905380366279.9964201761953425804927158246647471 0.8632363135309592398481252030589343 0.0272843594034093702657325986600299 1.0276634896671978810123708440223733 GT 1 -829.5531344254983212213507768197006556 0.5096733243171311133259756444297916 0.0557122238134793773672780017357802 1.0573243116380290657772946046265581 GT 1 -7680.5941784390692551458977608730218789 0.0180093797392206075719336303451693 0.0873997385780301595419341197970819 1.0914573240304386528792881207245276 GT 1 -5748323.5259372528948925444578363937756423 0.6753737051798134648662383176274524 0.0902936874173419680966263970016446 1.0946334649865315373686377348073454 GT 1 -2024948604892283978009116032886031.4254570161635496547619912981151684 0.3778572976096704110224456227187560 0.0819497013342638951308552123640235 1.0855030982877741676833615418129449 GT 1 -16965556032058856580.6905741121039081644988262492904839 0.3248670102856134435179220100659048 0.0614453599460870554356438805033171 1.0634142040281513676023584106360274 GT 1 -3049206122131519906983848429939414690329.1252030720177921773904246523866829 0.0146689775089898047494220220658925 0.0142011426444794393545664175090446 1.0143029438152841445532373608180581 GT 1 -697275994782359376302239390.2247856993171422146528954488776912 0.5234450835152284113222536745801580 0.0053860739403764421656755508561839 1.0054006311308871466187176541120032 GT 1 -3289.8974650956687465718246930886564840 3.7816751147291507310505559639221112 0.0328859903843940421648831615624139 1.0334388901521635854617381112966312 LT 1 -675028630324888345849525087699209476.7359360511845232067468415793366479 0.8951608589630366766300333035183101 0.0043679174267238025085767471223746 1.0043774846474314316129929393195620 GT 1 -1160921605067557695.3724039302938366892306836063264908 0.0013506686237035251822381399303352 0.0069826340922768623643107710005594 1.0070071267638782763909021977080968 GT 1 -16530250409078966465.5711883263139948293742990227521173 2.7688527159350233760121215098304113 0.0642334565804905878567723265504826 1.0685930194978382014137599179525379 LT 2 -27253345516961491246532238684389176221502.5317993340677141299535959483183320 0.5571577432843880979623216167422882 0.0940343663865755390662392030116169 1.0987539056526067367718306074899447 GT 1 -4826.3551834601318355495267413381001661 1.6943755914605960590289526927695413 0.0372530576470601713058176016317290 1.0379646822434061347510193028122026 GT 1 -75722795324978617834899039236.2373088490669409869875753766561742 0.7881716658777650675176363415275760 0.0267077254768383734124022002549025 1.0270708569867575103028295454727258 GT 1 -9404888860834061899289177441838435570902.5104779108494255524550468344840590 1.3258988109373210403801298659910113 0.0253731884071400125764244685513919 1.0257006385952343019446011529699986 GT 1 -267673934023.8954272216031917582025502228589981 0.6761136588618495942947166518824730 0.0940272306521350056398662548641942 1.0987460292982793399532601142472801 GT 1 -599821180467.5412530180621697748488342269910160 0.8944431883871775717868636815419355 0.0094873561048344701218996593676576 1.0095326477607797734430221249357569 GT 1 -3510.8301323054905677173885725987396033 0.3194523991158118048481180194424650 0.0199636629121745123127658551924505 1.0201656293438695931212829605349726 GT 1 -10201170259095767842127552295828899.9512113673011460840451418080697510 1.3628649082881384923524904379473836 0.0405118544289204745318944131988414 1.0413553184089531817225100422665963 GT 1 -410750379537958089837465.2057862277939265258912178710355889 0.9393219750233501278576563402002783 0.0536357716029603028603182048433666 1.0551277645840386920314553737526976 GT 1 -60581139.4347947611904574032091981667371809 0.5683388428006491025519465346493915 0.0366944234293755412355615266233249 1.0373846002073652379068912942727984 GT 1 -275330892074745.0815793893041696096801583970565989 0.1410508084138390689624627536471502 0.0131047216873058693636885670403143 1.0131913461780746730906524339495446 GT 1 -6656490.1773517235542641884505635121614087 0.6608628355632440629437361044849719 0.0744846893306107089047616267251169 1.0774046039726394541826483433446398 GT 1 -17487569003847.7013233773498631570167350131491910 0.6076743772428567320271697811296108 0.0423005375244305911121735885805592 1.0432212637207025530633087726476138 GT 1 -3303011110840502241336885.8943935614024841919826814989531173 0.7670621653112151151128369177382719 0.0372698638552964329114074012476552 1.0379821389126382623687842874320271 GT 1 -106294813047513051170292846.0295539410022543235589549921753657 0.0795687900236757865829806293454165 0.0259127319134992723908816664050735 1.0262543817284853190758214032596195 GT 1 -434.0275995170405269005791806050928335 0.5007147737326177727304766229735245 0.0716472339733800005460757824883114 1.0743434826246989488908370480607256 GT 1 -7607747303.0260962617762222826013533790499363 4.1617980300160117296130569839059910 0.0998163525396026288922064430511136 1.1051564837399788751512258669816204 LT 1 -1263295.1391897226664757466821356422299317 1.3450398788618202014024466781633738 0.0979038005739758165917952989753014 1.1030341133579896083248506346095760 GT 1 -6240370567480060708987.9525428108102498801676880244261871 4.0836128557488235199817854245906574 0.0012680955728038012723509248534728 1.0012689002863690959633472412280679 GT 1 -1597661092116399095.5344171571577189539702266542959867 0.8802221295356146759209803279500463 0.0104364237670211712862181907983954 1.0104912651364319837847108212930891 GT 1 -32103359953705595464961051139611227526878.0614455101368537799881724839605457 2.5014143636445595853396387210798625 0.0818372675706016678434928082925356 1.0891292974801610495105405864323087 GT 3 -4102301094910668388671024717503.1949328115291031731028408034362703 0.4467026951235405180968996653916059 0.0472514354690438060322398425889269 1.0484042458879682304099042375991756 GT 1 -412191.7756593473385056140350474352946742 0.3612217772025106516041072866520726 0.0640666099183527599424027881125474 1.0662109694795386698052527458311678 GT 1 -1395955713501256140.7085004886798588587613921652549299 4.6995952399448703583447260909353741 0.0891048344304755647194358897737333 1.0933274645574290197929954528519165 LT 1 -12328226019077669841298629.6734067868380670822205049391153365 0.9694829229440816134210980633843724 0.0289267719419581559067514949128067 1.0293533984385668721058066166838602 GT 1 -79245051338440221287887733092610155718.5705692193981560524347716408803567 0.1889470401000742254097133400602350 0.0454630054895592665246803248408725 1.0465288785679925260125811947115516 GT 1 -181372118366707.7781625186709580321340771987405545 0.6260362430709603120812253641015284 0.0444043365477225901483137353814643 1.0454204015773246994838646515314240 GT 1 -88493388195918747412.3432719660975716687900895725886714 1.0246338917216683102117101421356186 0.0241993719378604947782691421689742 1.0244969879624238253392655989155934 GT 1 -992539500174646525584765.6902998569382883318302479203655413 0.0438489291908147823040823616915003 0.0334705778700372736551291883167304 1.0340435388623199751243303331213282 GT 1 -2578482214012.6764338743417236237259805722732601 2.0920870736102279375668652943113253 0.0303883882700351926747856174437289 1.0308596879446906783042668391720858 GT 1 -40.0432243927849666753115114796980820 0.0905420650822560714892044347342209 0.0826971782415056141832249502905538 1.0863176303146092513353629513999727 GT 1 -1292513598744176581353.8350676424974220284465442017779249 0.4679014651009261088466899524301668 0.0831267336652643978436268614758393 1.0867860209281393610952200275406709 GT 1 -3511964.1067919125012201746068237092178195 2.3338822986358565220628394971695080 0.0563669562676959889951379388382541 1.0580179132695775361798676620785968 GT 1 -40647903464943329927.3892542168865076720224898318313956 0.0995724825329025643632390831560597 0.0272017404309647442952886709887711 1.0275785568661654573215260465876502 GT 1 -25675507421.9222744813345970893135565134892537 0.3206649777252541984946657226560783 0.0709497512060547521484451471920230 1.0735924525094850938216550650113958 GT 1 -196855.4649985041206977168183907146954567 0.7309781564494356070179399654154695 0.0289279453899141108345043970655965 1.0293546068424555276265529521178081 GT 1 -14738088901364171401674429445.0288047405389255310407387010128900 0.9660598686734375088999529265695476 0.0419122384961234897655490534665179 1.0428158961216664412476800486214712 GT 1 -1822324614415312186985083614698317.6111917343998990982223304255560300 3.8759766891454412344733582439167459 0.0668153886008535718866710124231300 1.0691522291131894910834191091739925 LT 1 -1320494813204438464727973722817460316445254.1799352210427547656935463781921504 0.1338860921021618821518123000570067 0.0845869072720300024740874316665090 1.0883798481251254366845887727668429 GT 1 -116753820129238544930405618578099266262.0410820892990574638272412710873544 1.7778330426249039305642172401772989 0.0975292743944303498190697798942906 1.1026190263033308890704190707655106 GT 1 -322967163666388478084599.5927794473183767910664669686210864 1.9141258910755089202172694220926297 0.0629629354896676628961122621529517 1.0650324409515279530751476341697163 GT 1 -1933552898556352431538516021099928390485013.4944347060627381695155226560123282 0.0362402893103360910364584433206258 0.0237616077703085533408342484409798 1.0240484680605775491134332905478692 GT 1 -110573882607347291810255382663350902051.2599368866912876293691101883455493 0.0858027909484240293576656993039105 0.0039174923158089288339808279757327 1.0039251857881501633258104839538002 GT 1 -17232699999532.3489611826422936310668347907495457 1.0492058180081989950644621842211595 0.0892436034484349140416461674090564 1.0934798197290911531564598256953820 GT 1 -310765807350.6951074494957118727154598632522183 0.8241756520774827242897330825696030 0.0226276229155259702435950492189704 1.0228875561737760890152577496392017 GT 1 -35345496452155.6672648221272951753399398328164923 12.3966175706028025198170948409737648 0.0410532806272592130956993494885674 1.0419197641689914458840579698485336 LT 1 -39877132941246303173101.6955818291474242321788993558444127 1.3364431920053527056956590409818925 0.0927990317692435604695011187626266 1.0973912787354574565334905456289339 GT 1 -236613012834692415.4471239239014237008717720524932325 0.1980825879347600933865844201977357 0.0834913903032573852759981831324544 1.0871838176420361877030252159788958 GT 1 -8206.3485852085739566654025649937441451 1.1350606619676621985510581659962451 0.0234127202084450621085004254804610 1.0236911524326911312825251866357112 GT 1 -52650.8513558095700910031714286601509646 0.4717800712641879004884648297905651 0.0506068725053914500701392219238314 1.0519323116791872161267509227272020 GT 1 -118116830942109812569910.9258623435278795243899641643964038 2.7101670013707381480917063631981420 0.0520762670332417264046255762469566 1.0534812304204328807310715801960601 GT 1 -60818484877.7290131657052342571034972363814476 2.5413893330468747834362100642198065 0.0149601407227575231057563429058910 1.0150731723574734809173292219202965 GT 1 -36358293029912165.9877173525162368223541192324684004 2.0114827501210809581180519969049467 0.0034745850424538612936298419079399 1.0034806354321905174697756787654162 GT 1 -6716.9924784419399923397115252457815823 0.2539042128240326202002780616814722 0.0158068987930377041471291411555237 1.0159331601186564059775660463439691 GT 1 -58057673604510915202220366131006938124.9354465686927803687827856359050372 0.2253864488173914549141901788881798 0.0761155598953224840049835662606284 1.0791682799834874120781234510821869 GT 1 -2476407671502085825908700358053.8050023890193191121675989772239988 0.6764730011085644232997330124460178 0.0652755684414998958566225620883259 1.0675035187394591641643321852965381 GT 1 -1414837123568637021.5128177179356384768134670964668939 3.1447144676724376441363705024431996 0.0264519980061378660732486426939322 1.0268081467117997692799814228920454 GT 1 -54470528669671951138588.5669313311073002319147047985196509 1.3410774596238131910004310843288351 0.0135824557273596102540307182542832 1.0136755411256971768445922010767407 GT 1 -355368716470099713334345811878208278709858.9921280001333946684545845069803995 0.7024796901385333580718774990497944 0.0578264871277592513628453819940334 1.0595658251127886708828527194282704 GT 1 -697171564881237939957947397.5517276717526075064087712480496932 3.1991203118570412893371829312804181 0.0206281385026428508816199638052299 1.0208438704744520895810466500431720 GT 1 -25.6738265483437010601132023249009862 2.5459801204853233980456739549613784 0.0618776642222272825012782000112972 1.0638749165421899029988362342124080 GT 1 -17275822214808.5006029919023579176441703698041318 2.4493930669432651788167919104938082 0.0419677544457761275307825207918541 1.0428738423353312188072820559867313 GT 1 -1801832703503303444139916030.7271842483845395219378899752537421 0.2657308616418150918096007568967203 0.0670152792348543904876654570099571 1.0693664547263962560210406359336180 GT 1 -9529964383326438461.0941484053222007310535560212270288 1.0439249472386048262358306547680104 0.0011642411844748185893423197883598 1.0011649194397288723504599513066646 GT 1 -18360.4678035031025868373087068062743329 1.2202813720629266801357302249645076 0.0106434788378681835602320265165068 1.0107005258052938965578211840730256 GT 1 -25455790.9799276980823253890106200390717851 0.6125831153415985594575104706173221 0.0971328319544731773935935911702758 1.1021798371103008807580179056400849 GT 1 -10944583234490498055163324240017683342.5197221087004745001785361579868908 0.4324971751962030056358388878236251 0.0217170457349668826553654983054609 1.0219563315026746092044889020190569 GT 1 -13556034.6220729909105429321363480936345053 3.8709788052521009187342621392113405 0.0950219515430266666111663581720354 1.0998445914250370348685704134476158 LT 1 -561.4149287332126611437409702641514413 1.0344990622098540067485768960995598 0.0497138645043527665574984212386443 1.0509921444791604471016821323105708 GT 1 -108296701200.8691896373157390910815852863077000 0.1682836267231100832179058692554887 0.0812604692777925772141320448541413 1.0847526236523068737734608869170079 GT 1 -485415010312132090739.4979029743287592056956748258788998 0.5680570900215311736910120225059428 0.0729925199334197004629373036227777 1.0757936443370998970265523792193960 GT 1 -5138986287718652258977916581120656981.0070166666509824709466074909215939 0.2694973056899603531214859344390301 0.0882564758572046106113327765570897 1.0923965519861937873229496200774536 GT 1 -759981394176.5544985626608226195844331416417845 1.1018608649396247878581262979164450 0.0853473449885010787293391890871025 1.0892108977867852237825994687923881 GT 1 -2130466527349917.4245846680363508491096113358641007 0.8286003437756578154624643945641712 0.0541302709029825656753606457777609 1.0556504264983552846571161171584875 GT 1 -449751.7328264509889064216541742442411662 0.6691395767969172426456888022205318 0.0396388581966496754761182387918182 1.0404458758832485454597257540275764 GT 1 -15596.6251033779816420378632370156551636 0.1599967793755728441461237952722355 0.0171309135319957019944470726364813 1.0172793452542395752640669996415141 GT 1 -332687958428977220844124097.7205086181641875397098892184389403 1.1104542005406054081701333707481933 0.0693086698484675399605540972355784 1.0718276032399719568168153683878856 GT 1 -535671.1545821081079099008142031223490743 1.0261279057915084299391149301183008 0.0864491885297144477745820738010322 1.0904162818644602707562634608212915 GT 1 -2801616769441767904.1868918928780027287764919645642408 0.5870549834656086058351156978444192 0.0197480282884190438371165216230363 1.0199456263742479609396681908011830 GT 1 -4877.3760631093345705935790647140279901 0.8387246490462534020445510256689199 0.0692665961710952440779570595590502 1.0717823973537371786464044264464231 GT 1 -255544559338219804355328085.2142706527260490500760286412378194 0.6875864007105877984972404009880541 0.0533890576482603409737669053783695 1.0548671019404824242169408663391457 GT 1 -15815055849897671802145.7028612134993753523375715290510314 1.1217140821773523208068977993596545 0.0515499716081843383873906607355754 1.0529261758744425925332321804336802 GT 1 -22586586987418948028.2226427917087378570783698405485161 1.3347536287343140215852649249951795 0.0608265199490021589543053554443809 1.0627550670499444231705652539695408 GT 1 -13171902159845687.6302076851397428323194205649876097 1.6823457019718537484302254431094009 0.0131693015219067596278412029505781 1.0132567856923571379095400765677496 GT 1 -5964125786081560057755028095097008495261.6348372330155299906721169912454699 1.0339045541808090486405911031749391 0.0604862956627994516202405435292503 1.0623928733939177105756687145828224 GT 1 -81358581125834532551.7167834133875633836200603550514142 0.5063584094577643431798719073967611 0.0577288267254911991687162868287760 1.0594621761141489958920736677612881 GT 1 -6.6838660334707392680287504437812387 1.4664345733792367662328532511633910 0.0249444572986396437970526330760779 1.0252608427336504662058160260006935 GT 1 -62226.8457861710770579742487634319279888 0.2217389376227706080365931477150331 0.0102760236032690079345904334062646 1.0103291864491890014159982878003435 GT 1 -9366133388845.2963811850859146530258944269094394 0.0124711362068633522073123938235035 0.0235748340163624563119709038025288 1.0238571665394014224951511077558692 GT 1 -10420346101593493234403996935218984.1315553588269241572477660392307313 0.8644448566246962759314857200022030 0.0463105382988380616297673988680781 1.0474171723679761339537348038635572 GT 1 -8487464585.3497260109182727402235336842502514 0.2153781402644354707832096401876232 0.0475533375120918891990663819048177 1.0487211709372162688464831142427630 GT 1 -1689495805878.1310262969059188569251076582238076 0.2095453922503043983069984167646180 0.0811895126214188970299331821773177 1.0846753940196873646671248622291827 GT 1 -683530.2663516662102298714995503803761055 0.8404579771424290374975687433273580 0.0226765289501428664303512347163331 1.0229375957077258640270130353975840 GT 1 -1097.8966937634456260693488428239686695 0.6438709762596168843305317118609964 0.0821182112922074909265960349565203 1.0856866671240897442765906622620440 GT 1 -34552744332761449293131976184277573531.5324310006458264914175715893382857 0.9893431563814107595115195558929159 0.0033374033080442396733873327520810 1.0033429848605189565119257772608607 GT 1 -135389.9694822172838552435735705776732091 0.5411334419097796822120902778803493 0.0358150310563970454460155634229732 1.0364721262800187411124086313438803 GT 1 -995545607185501194627616218068.9818027186934096089232650484574360 1.7565009237646906064923539477477578 0.0160622288317473710636693957452582 1.0161926246123300052969295652870424 GT 1 -102666632385.3164483094577947077759450397640093 1.0668792514391019106124331598955354 0.0414306796713366162291441420404098 1.0423133974332109693535414358835968 GT 1 -24.5308014256406448301075865091088286 0.0218189291604733763178722861319242 0.0516213445835014116310999319174804 1.0530014309314332531890533018709902 GT 1 -7130633791772463955277857509465155972374.2289843086521310324981892568545872 0.5707064866688827203381024282277379 0.0871916445257659450874543569698598 1.0912293268015009650191510276477787 GT 1 -1653706330249847480220066.7108555005663940609415463222366112 0.2559826755970021187169636083475429 0.0767766732277836098810921918255201 1.0798841162465871756452541824962002 GT 1 -41664905718791031459854758990055155756546.7698031858766105607135011769177004 6.1820678011063589290257141024358625 0.0598712954457400254584103435852298 1.0617384933521649121734228979629800 LT 1 -2240525510668357921707888.3762456161684458099080579617798082 0.5063745756266174472515582736821161 0.0411904360187743203770747512036346 1.0420628015225274044514834258034035 GT 1 -400433095463274728267379417694.2535407364537916478894326676329724 0.0537265803587203950381849748240668 0.0365380785513554511672538335481219 1.0372223129791200515597674823212750 GT 1 -109510895185815756989814.3379003753852750234292905328103038 2.9493888653916921230525694912715159 0.0755668169303018922052898378562005 1.0785745043528675395339073771681088 LT 1 -36838533561650856.5485209189542842985042590825023768 0.0850610504456809400064494698203663 0.0697563303510971081809348384650514 1.0723087167783949341859587219417173 GT 1 -10708211028368870113.2111210808956220358948447978616225 0.1070217036788239220593753750640779 0.0532372114734297571067960849364058 1.0547067044735906717198004091697512 GT 1 -1787221107399.5379764793864502894414126346945512 0.2288737531452270168324577027514524 0.0993207143656147298244099650127387 1.1046060385313026182151956265651118 GT 1 -77316870.9269072456136337843313996376311080 1.7943257106252384749759782388465728 0.0439995361500933464490836808254265 1.0449968807322063479365489398730985 GT 1 -4557878.2278948929055646057340229274420442 0.6313479130446685774206142505783660 0.0763264490592485804299134548071933 1.0793965696132193161852338502116584 GT 1 -266577520712.6944799983355661518845365703996884 0.2256416060493389440063094720481236 0.0786455838410676449874604966177066 1.0819105000734126375279842897784126 GT 1 -1995274809490.8451784553079311368833478836915533 0.7011769914976113126169590121137365 0.0210140776048729470457905163865508 1.0212380161309820442432114349034806 GT 1 -59577367999565206952.5366191412007260444948340315522572 0.9297234551371173065060279725058980 0.0222576032348074095048417192565091 1.0225090416332636561707044033917012 GT 1 -3323024785103941964662749.3717114105177338750419143894302405 0.3588658856930369276504347951458594 0.0759135090377535878427212620591684 1.0789496067836255714093566628891466 GT 1 -574997472.1594753837549346294783709161424665 0.0640932065184439128804302548711703 0.0611871292224651646216754149491468 1.0631391052808250263989284391233844 GT 1 -5550300946941302014.0223556231588319789512907970505927 2.6418951539214188588540263058789515 0.0526468112801956169855717503508847 1.0540832999730772348319965694765157 GT 1 -991048876471715643714541932715377367711.9457937039309742432962869531408541 4.2091356820004815033714547178182691 0.0932369827505125847855837397758744 1.0978741449811866496491011738304387 LT 1 -1264819403785884188300950118752166.1842526937594815107423245753490203 1.7274947832373599140523581557158859 0.0599259791256843058618134638419175 1.0617966612073861987568850560027985 GT 1 -6741558671957841446362757051464.7199035695748612996411250064795202 0.6350972254513663643363537100317395 0.0670636484527789624381660749107169 1.0694182995966355572363349975781309 GT 1 -185206720075.6063134283535471108917380878710812 1.0008266328052948809305118384101889 0.0258605795400952741878261019041792 1.0262008434275031403139727687271990 GT 1 -144629216923954941330322348893374667640213.1613463151071200824783969859299158 1.0106334864430057508266359078705984 0.0665612290034254781298124548967319 1.0688799089425586464513546252953289 GT 1 -1.4762793877115768299386343057617045 1.8835516827015488859343298749799081 0.0760719222776569699644109307089096 1.0791210483328165495581960317933121 GT 1 -3983796474935915056308829455510015363001947.1494482312923873915965563111865513 0.0112065640272577353720962430582855 0.0491634793528880216705661497567585 1.0504131337929609816011641671519408 GT 1 -68925292.6058329035301088902986516787658780 1.0695449600816778279295952434080541 0.0871519548642602213280225151851323 1.0911858469205127180081828588275667 GT 1 -295471409219953847.5468230075360262387725357739742007 0.2593635924163580522231536719046871 0.0194071641961786134138074751114687 1.0195979557229373827230705084508137 GT 1 -80880626373666437411566058501148728.3727615676875940567774480411563852 1.0989785668495266544578029450119810 0.0460598561733003852225479087490267 1.0471543518222535890114713229888830 GT 1 -691538.9755930503710944952251137713239350 0.2787362322136142372631494187660546 0.0133997420266547923285022973687411 1.0134903287053944935084410945020467 GT 1 -345075549301440585686256884930415141725.9367187330575283558794691118387687 0.4974348583280287185673722902371886 0.0792637220109581097506566070012066 1.0825816268480666221371918351259772 GT 1 -1350207625665541954610636807410998.6392207972826493173590594930971536 1.2125389355739480991910562134293306 0.0020566815347726620368849770094396 1.0020587994085999683281422636117132 GT 1 -894803206005836485776593706462648.0629085858037165393741781944670520 4.4189198752446285202606887847122939 0.0619403806171082967743633738645866 1.0639417718860779147513956879309487 LT 1 -7999615148501215066146378907572380013.0130522822854883629569116999668605 1.6481109237375452896656041843472930 0.0778934010141371963500454546951925 1.0810944449873612259308311754858173 GT 1 -7688561944144273309269368003416941.0324184451238189394312065679786207 1.3562931191777498491984432775129355 0.0623239508314616790259876842141205 1.0643507529873394882786353628748166 GT 1 -236066916937907977284104.1820309291300539686022715662170346 0.3902013106569108653970791816893652 0.0038776696090233072042874200534906 1.0038852072618160925756860667804618 GT 1 -419838072063441505848.5441847417940220044425662049165401 0.9863975618905434600995984798875684 0.0569314025100970176038740402948540 1.0586162551026564555522501311378744 GT 1 -11634794785223011909226655579588828373773341.8651798085273367336831422976179183 2.7653633037381957362885280489159944 0.0757470375907147184449863818391594 1.0787694759670860689062116401609929 LT 1 -7808945.6216032317651728324722318574187708 0.3037239394434503096186100988666219 0.0528586580588723605155139034643159 1.0543069446193205051440175043081674 GT 1 -8952754985995012099718472636181039737162661.4531958409486672755567892709200994 1.9340171464895356849980449480551342 0.0891018214193408612709907428511133 1.0933241568154786157724794847040937 GT 1 -5630135304944701396.7941538710172605212128611347045767 0.4369016637296649971732459181014287 0.0279662910160491895082963373298019 1.0283647950983953763424111745133782 GT 1 -2496030058839071119447.5788278546853595954717378686412200 0.2646442755529634334583608355897482 0.0913512495889593668694921196300372 1.0957966726706468468555995880390061 GT 1 -15596271426285213102231.0088503962842280638792492569106368 0.3895338008241647195985029958663981 0.0439998948036948560262394714683649 1.0449972558927657284112316937219771 GT 1 -9.8948483712472829863952808513739680 0.1870126837601489284587198065882931 0.0140677590757006811324286491268752 1.0141676479130197940113473321554734 GT 1 -322397154785406044615823.4759556123301485974791961497978284 0.9299351200257123306545824374591311 0.0764098936580356303815189842531029 1.0794869136185429001819831562781673 GT 1 -30193686917610005875681893153.3909901681191088337192211569010522 2.1770137569076049700339886317490671 0.0073067592042045318185357915837428 1.0073335843188836088885193886335170 GT 1 -91518087597941589921398369.5084247307931835908531444515710602 1.9269315833286298799523398389586051 0.0271770687888829816533197756393754 1.0275531956682097625400155664637422 GT 1 -8568800013094260041120530309383067865438818.6835179397651749982066984653451276 1.5289058528450751310008154053009969 0.0763491721871011253799591661394048 1.0794211707370014012609224579157394 GT 1 -48445038628320412940437424749831.2241673751477383280178850709735400 0.1064122931965587540373736597098891 0.0618918447173795357779793925484660 1.0638900324836694691543773693206208 GT 1 -3171927611379499657577195165289.1086787334717082514582195740618318 0.2032904394311804988791183390979056 0.0079080350392114677621961336791228 1.0079394693805586825159848344691430 GT 1 -151763642765884610232128067498709150.7640739648635507173108125583036577 0.1698325326711668586115174711564988 0.0295156902208959769198018163987942 1.0299600436556382425208286718223270 GT 1 -26836502179745774155167207871106668665103111.1982792526926956190707951929940246 0.9351267874749077971228079419901110 0.0807499723161007017483216425129099 1.0841971286850103485539828810727444 GT 1 -10027903742058630302478307456705625666077542.9169012149471246660364924173315307 0.0970537341020989160932933213431795 0.0802794981487909169111016786684537 1.0836854574319716262519936182783794 GT 1 -1056451055335775.5795398924384703645915002725426201 4.3839058120526512930725635567332862 0.0699611528066684558533902936236187 1.0725289225316013771975344505690085 LT 1 -9496791509307513060064609511815697.9252506004510885040823880393793384 1.1295876896459457362938716214799463 0.0196914334523818941398088744838997 1.0198878930526305416003596422882647 GT 1 -804637816498036294653964019703458852400832.5638703037019717892747465563515032 0.2623099937718935733057110440105416 0.0753145998278192941098967537383286 1.0783017072414951142838032976096337 GT 1 -86033995513251256060859060211596.0624879118790925627222232283424489 0.4187278638333165825923915756696395 0.0100814053403336959094555613169245 1.0101325668508759169563747592425687 GT 1 -9557470822176.0034514079117513135935514325607436 0.5643727705663885594637706261218208 0.0786215267704634920065661477273846 1.0818843898642292508764478454946905 GT 1 -4924490320382461221019982583845171642.0960787716836950478464234865755750 0.2541912182109267484410528875934470 0.0419751799640011529032659472728557 1.0428815931673480879793426753933016 GT 1 -1950375890431773385091274551345232294.3721823389529894259816750303572378 0.1556758463476109128680565577767675 0.0624130649357651329954290595343191 1.0644457947016161590234835764771411 GT 1 -98432202076629586418770695205330791.7483446600243669735819343328462361 1.6040626543281296100699470819514982 0.0895181691885797492897047078751954 1.0937813351904951078487633575585008 GT 1 -1666630611526447955879645688578694.2640820297041650820667359092582097 0.2206591339294124641352116628942451 0.0263369500354996466865687842302429 1.0266899797872063776205172077316411 GT 1 -2934393733301671057436201424858248448.3254646211683379423862463038569429 1.5688952803508367759002068599376362 0.0409464109480695426654499325779943 1.0418083255223646952526936599070658 GT 1 -163843898886766820047530.6590308002337807885361837249900590 2.1836321072942966319081489432776191 0.0609937261738542783791994795591073 1.0629331184051980287349324137812539 GT 1 -28747378957210463447.8313591316283126125454865264174502 0.8740721484726549171272454075080967 0.0065588914799574160685489437027863 1.0065804955262242623800982903858163 GT 1 -34.7874338613943399569553980380071174 1.6436829601711512336901320642586752 0.0804118903660981933852956908196708 1.0838294161093890300076264980802869 GT 1 -28323448573737077601141192827.0320719170478442787272371078817065 0.3736518838036485556123258303821732 0.0954246162137476106198033516066667 1.1002896345723597115439085101907752 GT 1 -43038917591179.9495942792496034800669042194231880 1.8764749268923734702348333837160818 0.0236432353678910506857394822356978 1.0239272218287137328722274113994964 GT 1 -1367486711836881522818.3479331136005051637248315718414609 0.5004517120131284188844023126304899 0.0778129972814298020901789719337894 1.0810072530861541442461340699647346 GT 1 -7114800581483.4347510672156579185077950899657684 0.1776157445376254055687021461904166 0.0798103804043813393445839792922441 1.0831755219203323523745069725252949 GT 1 -43933534738.9546486463623434709379144282787889 1.4195905285006075638136172700971467 0.0924386727183685293092288846504036 1.0969941368546695319878995121795067 GT 1 -14567.8721244563112555308983606268641420 1.6138023761583388736937752101356895 0.0614122801792821530816300389467603 1.0633789592139961578078728509133800 GT 1 -27835306738.0626676032231899075381256446939289 0.0525378883347669982122219074713112 0.0656042698666852343146401606548407 1.0678552365533383211631434255674768 GT 1 -76979497736.4458229842462281224988022455975579 1.6528059462094213863948657745531732 0.0444423338826209844498477311145437 1.0454601653517069014522716671492689 GT 1 -633222153160275986386702.0510016398004827207442838110991140 0.1928586708712001429932999523575897 0.0186875186975608482282120513134224 1.0188643367000223227784726601556356 GT 1 -7101221099261082911.4857420142894581947353427393041698 1.7040993212031517866778299811845431 0.0318553409910789691937879071904145 1.0323737617458541764337088174284976 GT 1 -123385.4513354140613607032877456349986387 0.1192086519688986527950415067449774 0.0493521400726236168523502809031824 1.0506115689968280392593401826148785 GT 1 -22883723922194287285638608379637358198994526.4626815827921316260578775170713917 3.5940682380224844435409741183880567 0.0349165077144013490317892485707441 1.0355406608826229486245535990959903 LT 1 -6324.5203591948585137740063066891452944 0.5153618989706854881348723781590387 0.0281220799906514068047749559044349 1.0285250791078247834198752067520547 GT 1 -218203997216699861383841464.6255087303208924691442417739467312 0.1068438803708572004322570058667341 0.0193116016417249995875405310374967 1.0195005066137890307679936062572885 GT 1 -27371456217.7143231087355802247615779002791675 0.2686893332609388761673631930040413 0.0715849375353744749932554936289574 1.0742763806024934899829378792004050 GT 1 -28979993065217.0530314665418344245161763924740032 0.2025457275663397901525928177034624 0.0719312313703704895269114808239882 1.0746494448147557027757983797058813 GT 1 -28977938402567855561245726176.9734292842073341223706719958870609 2.0123063386255470990406302935661923 0.0412690884651665069635113128478899 1.0421448362408976939930446083630615 GT 1 -6900118924090710924213026.3243512785307618070785015352694218 1.0232527422238217750347115405110467 0.0290438803977257330248990392717851 1.0294740026467891771364053005173297 GT 1 -435746611343328778429700872960106139422532.1934964701501913476823925700109984 1.4117251629897878315600389939015138 0.0422882308055488319587398128980321 1.0432084135100757745579757908979777 GT 1 -9323381031224041189513896751569.9677906988054988871328181866618634 0.4209507001892953089609250250332612 0.0459290050353590734625236988404970 1.0470171921008178524989369788197804 GT 1 -956.2780587502020856756409048902167104 0.1064930994907711432146924032419016 0.0799308151249276275312950007452092 1.0833064108153352138665031031634294 GT 1 -1315.4146245505397211777607010892231934 0.4303834423546392541008932804555291 0.0440393641139371223602319493858652 1.0450385426298830702767011826554668 GT 1 -44428424.0072610984797646462075584609905152 1.3710160351976607014752364073378086 0.0801664194478582890324093936108072 1.0835625160059415522515067417010495 GT 1 -536.9898355898735880652893108522223009 0.8636986345743644294011183556580230 0.0945009967131562543499694064531099 1.0992691023916395062336251950210409 GT 1 -6205768757523795151908385797.3978373622216447244179102069872120 1.1997343415438929596226175140377780 0.0225495087163046241630254676886431 1.0228076367084097659123085355867927 GT 1 -660722952599752803.6256070787044174595313016932633222 0.9904513627823448827244943625619846 0.0471907465914220200769161545301480 1.0483405491823936625776635983083553 GT 1 -6477457774710935067309415932668042538478378.0634153676392551113987470116437869 0.7210311460729676267442263545239749 0.0864412583717991196793690603368748 1.0904076013144604860054442252260840 GT 1 -9657934042201107113873780.4327365387456199170143844809425649 3.0624895737463113469916081579499220 0.0961447869983969691793846507391907 1.1010860940262070611558401116354689 LT 1 -9075390461.0091167230454406876618999186515523 1.8781311384911541898678190054307100 0.0868194978606367856172059813748742 1.0908217156939851135674760458478797 GT 1 -49733263839721973170065438735031368.2925226881223143960405976702234478 1.7300162039383237989783171785885769 0.0501532940277940031612394986209485 1.0514546695423404363776376425354818 GT 1 -74334177.4894896018833260040213022932941160 1.1504453932400971898765253381095060 0.0314974254310081888747443500520450 1.0320041378330009691116595431119146 GT 1 -140691678977499542243.0206606658564324118471022130016774 3.3483456549004709175650431031256689 0.0656937228389318610829678105037017 1.0679509746346009057595024731371976 LT 1 -7154031070617541498.5525359445261388866657014473636072 1.0876974871879425618651153270163529 0.0973817106313319536831592580491931 1.1024555288112925609356058283517594 GT 1 -807513260551615749871597444563162012102499.0307136638558129560682513662944646 1.0499852493888573418288377267286825 0.0954936025276128007005254854191247 1.1003659012338377048694567990481814 GT 1 -693149104385666184321321247467049056726929.0630918789938607891891817588830925 1.0158290592996884480111026972224507 0.0225850005502425029537582703752177 1.0228439479882497534466694507912378 GT 1 -110885803.0546900356836836165929004976503942 0.4663364134522574168838275732582590 0.0257302443139728127182999108677340 1.0260670571284931185931245962566691 GT 1 -7185365.2898435920827917653415838345220602 0.9888590376531190254858683867239327 0.0525281599981600509472574921298459 1.0539580627818937347900440780070644 GT 1 -4283567678542305002790566.8713894888199493244819314817325607 0.2127484796296860547769013391432550 0.0438445035011606920145296391751905 1.0448347259158763203676474329986575 GT 1 -7149146265321700045722.5217866433009635438595789178291570 2.6428650747482106296185338229206372 0.0576862228995936712610710171127897 1.0594169631606057661227082335743625 GT 1 -2174280999881590144.3107554383903405103286192809928683 0.1382582818873726996527159484265030 0.0160188227019997009232891677251358 1.0161485108750355512703764321342174 GT 1 -1101748605044850295615094630081016.7439130799696906625114887021275883 3.2085944127715518443449912587966336 0.0100311231990723784004264268718754 1.0100817739224929377768079096261545 GT 1 -11888150339546278924013876892.8532277136744493152754057286036019 4.4195346505945491360421135212826365 0.0025797126494846697392211617496177 1.0025830458418479989016003539298515 GT 1 -12233727518579620994080300019385841096.7639419545714995096847263934367272 0.6493384596268741445320818701785322 0.0148313986843332206080563777006451 1.0149424836093713666788386542164555 GT 1 -8873899414.0769340441687193369871613659821582 4.0239773939794473835836656121820446 0.0885140396828138825633627072871861 1.0926790878156304502059448463302315 LT 1 -4627188194382390621298124679432723.5284373275762787163365141513248079 1.3165383031626041464942417902259731 0.0186266171952533404685283647970034 1.0188022773522267369164298198381315 GT 1 -27827.1162729517529315832502301134782577 0.6887269236894964498109593566820802 0.0868039535201493284589000023193579 1.0908046936395795372387893016786104 GT 1 -15.1373401165797615338899974890190134 0.8409259626291508151771713915790443 0.0038476684549981974802317524888279 1.0038550897739008228362073374473808 GT 1 -2928017531087154733.0339925362181826497585330197091632 0.7222981823871567802034280478216809 0.0839568255279759370165958288196896 1.0876917817156818271228317605195086 GT 1 -124921043884581501344149780714683.9380035197775862130129446031458559 0.4902631604961608506180187163498689 0.0783734894121965782003265675130838 1.0816152236254590231018297610679638 GT 1 -23575627043798897727365975259.8075395849581868339326189614599548 0.0855758848845742348805332198339895 0.0896482264540971087326901035618723 1.0939241898318278530322379943051002 GT 1 -3073.9972070940434887462713678833153198 0.7469462476805548708119749006016087 0.0288893279750079638806869561168285 1.0293148398170550467884072895384186 GT 1 -135675812199860233927480924719085795076.0625719676368585635068083062310082 0.4400561537178661171920534468995010 0.0008982794187762289168699480051113 1.0008986831135052106169968892700924 GT 1 -3000.5535325330034118415205379531526852 2.2427579407281455156687635597161452 0.0403292956075677953926581903350160 1.0411650696216714129004806835095065 GT 1 -16459734954688589487119684900193636990.0747062468728783972527091852162665 1.8952309919840965761913211176051921 0.0149829868151647651701457754542988 1.0150963656903438302945524531005375 GT 1 -6904648168687519111166.2000629381786240439846744449713115 0.3175166140751021149762112697055205 0.0049508934052106173564833066873007 1.0049631896797839936280486501164269 GT 1 -12463585.2171511907032724403702377724907453 4.0257514361650047155793949454739227 0.0896645591356706296893861976560188 1.0939421310591234482754612540966898 LT 1 -1808188958.0578454195085652287178151109487958 3.5064442219847656134880862707385787 0.0933728700195723662159083846208903 1.0980240159502351024209820003941716 LT 1 -14658948.5928788223949001903557643579737804 0.0552309452574150840609089652819733 0.0755618004316583136386957388630347 1.0785690778005495160417808169540432 GT 1 -18510850823795064295754.5618022987104760136366774754421403 0.7722668300863924689384543258037955 0.0499698742411097399130531893018631 1.0512615835651963330696978265546386 GT 1 -17821713058169698583825798792199574470283.5706692770808391603528668568329583 1.3623523119273690834882526423737315 0.0954354203175773947318359775518277 1.1003015784838846084662198341948829 GT 1 -216046208054676152.5802996846962786104348868813585715 0.2538026260819555905965813743862535 0.0540370359842280017786309760252127 1.0555518607856794562990441833618502 GT 1 -18.6599073811563276892711914479023301 0.0165195360355953528713317737418165 0.0581031115798528350021197770933841 1.0598594706728394589886367873731332 GT 1 -107086621954546159265317569883.8990316597300401955723001762503756 1.7653296155974585248432019217032140 0.0872689208375541614648966538594005 1.0913139881463814745304320718486819 GT 1 -29276389260368380124378713.4783043548512554088613355785835246 0.0640043691053734687291647433187056 0.0107533723921776994699995378434985 1.0108116077617648884793566886694138 GT 1 -216406110036609956921499187614089.8138140394423275278561743568153400 0.1660700600493888599814490965535292 0.0254437588543360257746564075010574 1.0257730488772010976445915040165758 GT 1 -7153663726191038468708111064994998.2506209066930751278292354460129919 0.1054789468344209679293271545437428 0.0308049998001851450145389944328907 1.0312894487408408728448106666287528 GT 1 -4704423435053979415285195932788537660.4588900549226675886669360849103826 0.3582935218723058937080646111573038 0.0416067774555744052837688505790443 1.0424971232815723148402535669850356 GT 1 -9433004482358782327312.1574518742814825664086653607319823 0.2656765674052684264121554463313366 0.0828899460127791697884367968701806 1.0865277986736868124814046232041511 GT 1 -31224297.5529582427401613251737181590405571 2.1738755003174427072857136713164510 0.0738441131240079104369090044069276 1.0767127141457563345219256533660516 GT 1 -7127440881807.1161867652912859489172697523692381 0.0783440324574069250409305052583020 0.0515686630532134825598877852063455 1.0529458834274517525160211894776114 GT 1 -1200.6863204738883110758238488815849352 0.3815319689365957313416233621085923 0.0997556287550854872732923138281902 1.1050890289082285524481407885881642 GT 1 -173103727344074442083.6196735290700821799639429674131122 1.0019836897240449717134768069871731 0.0384178083988844807885859012100523 1.0391752349222715812270609434212374 GT 1 -3442348557431764731682915301567107612525514.8061095884353182407193235807360814 0.8027938314115854133178926553539562 0.0837746351841197227844197183485018 1.0874929131103981599430299359412156 GT 1 -5654130894835302964632817899002911245300.4055340637656145083937963681828896 1.5470353999036543063105221250971128 0.0018228582703926308801439022084047 1.0018245216982991801989582721509382 GT 1 -125250528656831290282780041292112490881.2651756322508144786257834461185642 4.1865398689110687639484777899714182 0.0293252530751201888888242332079263 1.0297638339264776641549749900742593 LT 1 -45017124025083055719643825548590163784.9368016864915723683298419085726876 0.6220391109728653057847606441927342 0.0548012144290956212161335919686513 1.0563600185084403466100567044060067 GT 1 -3326855333714.4653095412474667327376773107456711 0.3765598317039671441742813593224282 0.0957800534486877130552118082649619 1.1006826444763036184122735895763748 GT 1 -2380252094163552841777787283249543.0579572364015914190022317164528668 1.7288313722805565262026486623411111 0.0155016163996269636345091171129745 1.0156230227525798852809674624752629 GT 1 -5171443507034764382637013103981.8559558918943949765657501024925346 4.3795774815360888641735061672218408 0.0148149402006538324092097403631384 1.0149257774880241388746771850194671 LT 1 -2003206475107949497043249.9968891325780634083284030812676715 0.0214680881730736043175999086341838 0.0538142070928937732730333727038725 1.0553163307920158359135519010294921 GT 1 -2723724409871649556347008113628252828254.3948016096239168760340822142873772 0.1514618998585443810519112685093480 0.0758266826070683616362399524390520 1.0788556519939833431690088698530318 GT 1 -9.2132154994270708810528054992663886 1.0533057548750770826610918644439496 0.0580750844202392402088251518672590 1.0598297150350650656567782441383483 GT 1 -6752927432947812142020856669756.8031345992715689471417182027156360 0.1880533360721124689371909170574119 0.0968313499079424476908543085790498 1.1018459765674441384250443549127014 GT 1 -516268668229935499343030117101931331291291.7061721486890309909534483445046953 0.1653223420624881091914427050073702 0.0832874302475936201085597735054616 1.0869613021498612497653385209025309 GT 1 -1252644128.7211123744539983303246063543910884 0.5694587195975601783949563214318689 0.0407387377940456536642449132332773 1.0415918092870876654263180040417842 GT 1 -1276456662325167923734751982073345111.6168526485184578296808803306650526 1.7265784442854825002438496797693739 0.0670373675796144682095445034642147 1.0693901299332271458697936735758147 GT 1 -98983482407043126.3206231950039508165601142355834189 1.0521672537279461463020615027618151 0.0436188542028665348288574141381896 1.0445987573133921312021381562524789 GT 1 -15460028867260.2474307212712931446393508614550004 1.8568610737212163874085275380601341 0.0031717442298401086588031677552458 1.0031767848718098487393072295063053 GT 1 -102.5165735703140083158148247830872026 0.0415059729335895174921174565849498 0.0762380587946009933598476075901307 1.0793008799232779906410945929023191 GT 1 -4629760971873917847640500495761475.6116670635100946192494602562084560 0.1260685879398220647887164379541934 0.0136276859194986050343887791591414 1.0137213951653004393919665656077699 GT 1 -6916358477.6212555104138528111088435565956856 0.5484372162786598580859691378312348 0.0585425046030511212492325888582519 1.0603260775259584883602340062916205 GT 1 -4.0545106224238239870258988084608137 0.6953745734559703495122127432293583 0.0899401628514837797414175360650918 1.0942449265247541107587152176212590 GT 1 -322845231942785010.9216170382168985848971757677805090 2.1482450034441697482392348688409743 0.0405277180427847474056010359416762 1.0413718519587200909601212406610518 GT 1 -65468515362043301503629532.0957880326733141906898583198348102 1.0286204881204650254450693752741329 0.0806779221193836867041327964433161 1.0841187524314646379239302482941478 GT 1 -615970728764328285127.6847316661278796226173797365809264 0.4152705626842878775633929574342679 0.0997595951395359203970581946727378 1.1050934348154631797915366299977103 GT 1 -504997147587989555610844619512255942.0546697146026302447368879861469966 2.7136046702663732563542982949006946 0.0356632926002678527571794306541811 1.0363147638211948114665308012659043 GT 1 -81080454856691708.3723645920581998018428231002660521 0.3017584884325466331138073850448191 0.0472558169210156834786427628029964 1.0484088446480289872123221883382427 GT 1 -2167673577925275552712034.5559312239185041497304488667968746 1.0508511619602455062062038953379882 0.0341546911761513084780924977163778 1.0347515933858414475496808155182215 GT 1 -19718365421364122996.1335308556124096754764824362947579 0.5476379916554365329572574074642015 0.0352489905856525605937880870437119 1.0358852322686645605798730048185839 GT 1 -291494.6945102802504418775283282142328580 0.2646155115810761260890144913265915 0.0859222265210648897816901389383006 1.0898396198144221815848754140252283 GT 1 -351667282.4535292996193893103755739598994504 2.3593879214656166380062317286468288 0.0047904231290368595301187100326011 1.0048019339818643114270447750827172 GT 1 -88251516028370128186361633843522776874030.4787926975700050086966185707704316 1.1369367378688351259640473244012518 0.0135083076508753658778688390365560 1.0136003748938778964740934856495966 GT 1 -4673534823075271919861818.6135067544284117985718084036149219 1.0492759656032342886827762164423637 0.0623690921271526926426958799535835 1.0643988958212688738380787039707605 GT 1 -48647658.5859622836739926381001865758221263 1.3994944564886965959785392780224482 0.0719877531634821683231473413970335 1.0747103492609066755268570525957973 GT 1 -34260276686402918223582760.3636423822063098024751779661271641 1.6644450004758090445953194631649183 0.0559212455141983915983995801631972 1.0575456899543437976704573580918980 GT 1 -132689219.9963704305160744807045376692369234 1.9312623055134603235421002116765060 0.0673837835778687855613026196107979 1.0697615063587807866115705811399664 GT 1 -4276076175325767443045767166764.8474573131147000285884936068091532 0.4415751949921893281080140308903748 0.0710806242433682092880602621240124 1.0737333299875671816021431241223370 GT 1 -67660270476035973820598325.9695577395789357159925827048022684 4.4573798201848409883456750804734045 0.0480400064248647834804111011990876 1.0492322686293163212520445818710425 LT 1 -137093.0297524636821642544950613939233859 0.4663443834852414762953940818302421 0.0060624006478607851951802818473518 1.0060808516078720946806750931531487 GT 1 -8206.6946690252556489756026556523926694 0.4681230469305756832697382484188840 0.0229670530825422849502114749741778 1.0232349049721655680978659464624606 GT 1 -3790457383599454927483951498377.0917481119960081544871179918450448 1.0379248667240471214289244534708633 0.0269560814438471650702669174016162 1.0273260605525544285197552570375496 GT 1 -7463655322820552050287898758.5095325243564889259584795294717222 0.8593671992768451283985453919584681 0.0948341349391555850858076262122171 1.0996370757649367591975587500013466 GT 1 -10331088174.8742073387696108572529685758553369 0.3500308737517618837030624831233866 0.0048257285078166376871922151872713 1.0048374099317043539912119430481896 GT 1 -3006147466440.4442087843402652977284807337764918 2.8440173405388201149408225900714635 0.0143861987362703718759995635669125 1.0144906833953516542265120811125273 GT 1 -899.0377355850997429970053673167636072 2.4147677021424784961720844841180172 0.0210104023885111759461863138809375 1.0212342620326041819933392152056253 GT 1 -13012672108299639420634258.9425831621371376558658797024825848 0.1478987382975721782074238225665814 0.0118953248779819670244341863694787 1.0119666403664258157420333971138040 GT 1 -80233979122070956794305913674265684707.1254517513924946348415852532635433 0.2204605095237148883696905797667960 0.0579688506847908122218348510329653 1.0597169377388843854511292129864510 GT 1 -6014107937672962464981398572713183598.7984959569361876640036894405187311 0.1413053616142531721562649726016892 0.0570121859459689905195353708936693 1.0587019189623659796302710698003853 GT 1 -32305855719699753341777857881384803106.8388615207088245994981371149622602 1.2602099867516521512177260804115522 0.0315271325906317672222721957681909 1.0320348115927008501957929159121550 GT 1 -392381745241471248742107863743274588444.1797730096238273020317538051735215 2.3266628035625003530225234096769049 0.0931686599429660900117598680843964 1.1025811024092310912050563603778184 GT 2 -27685778352641029944769590033.5047168649646626088310965567226835 1.0920327795052734637424677783359808 0.0092544513503011592430655422388145 1.0092975398314018423016486629830612 GT 1 -31502694964740322473.0749871025171350606232722358748829 0.0934143176511802078833735617918508 0.0864928139085147691018547782926215 1.0904640366471402191653530932269615 GT 1 -53382435377823149329690947710408.9227648955974171195568166348775284 0.4126862928058765214228687928573387 0.0118685451083552216499483326759621 1.0119395385750743952090496671104465 GT 1 -302.3315015267720165655905860905016804 0.2711193790227254673051819640002602 0.0619571287091661487159458334009323 1.0639596260194651397188794231113320 GT 1 -14417963521342840.7612404809614678222419510864640687 1.6821649878013461830717449826998229 0.0563315189374533320661531667581346 1.0579803598317391668008327333944580 GT 1 -322516163309416531.3093221689019510998776634716975801 0.6064245095605284997185222588640485 0.0870569557945620884097567202171271 1.0910817834596507823296906551969922 GT 1 -6395720905506010020758121.5413098031121525182402342878092445 1.2546466123781490860739699185431540 0.0473828747777585114520039499152444 1.0485422134284042365184076734869452 GT 1 -1448301163183230494478006256240176333.8288486377791904873494368384673694 0.2609042750088342336935502700390739 0.0914086256327358792607697683645515 1.0958598190242995623038775858057337 GT 1 -556.6922378809342088015556642220768950 0.2866605756899680475076709804140124 0.0917382894207809112343779868554512 1.0962227144002595967543693093410195 GT 1 -4547525847088542.2765829786724976678717557078082971 0.8992998943236759590688472951902338 0.0257876586546394166680390599066372 1.0261259895054143070650132901703785 GT 1 -430.3403534580777639152356954343766279 0.8114487666686849640888349051676669 0.0820693170855170840034479461835493 1.0856334000203329417772279234823648 GT 1 -613737304747861966525263899003023162255.4335279097378333313477668525725465 0.6021350342431661672859094871833219 0.0398790669852529454676286670230215 1.0406960305636859121618435371357527 GT 1 -37422736740801067094477358326.0736451838772965457517608933491532 0.3554093574934036918002633507318941 0.0445721227773399907557149264999542 1.0455959998642921944010362202771100 GT 1 -12135109461762214498936562401.7965014125168360779111672592703989 2.4811933513265040359638165866553926 0.0218645703205408524135796069247627 1.0221071423793912150640056875726402 GT 1 -8247746177017202377.4105992113027694692525063234163956 1.8974353365304243603003387426693362 0.0718780295291251218756757246705958 1.0745921211355246370003761934604761 GT 1 -116881855811002844940420693932396481563.3188208742880936648631839559993253 1.6129810405771454700755473755439860 0.0780296670844174365956316659887514 1.0812422328243770638540316706506150 GT 1 -3610036020.4095740520726462190395236663703055 1.6084379151244885954524972600646619 0.0982787783838429226995635905953893 1.1034498736349381552141852471851475 GT 1 -2583179161814768372.5781448199399624140547274378215081 0.7270503413413582482987676460375026 0.0966563924792177899695315803655210 1.1016522802019372047887333274378293 GT 1 -47716066391.0595035923226694816745571956563959 0.3272671318897006686862932967746875 0.0415066444219714235565527650917531 1.0423926486247648800892807171031685 GT 1 -74608217144095082.7277758015042234217787055265386321 0.2329215707372497148748610831555100 0.0227057352980721584123027625286087 1.0229674801678914035297867878661243 GT 1 -47787079425359.3628287103459691166629420206783135 0.1930856146837774812801951317234481 0.0494330869316475518570022996480661 1.0506967217741182133712597698275231 GT 1 -14279583216209352004243.5736553449465860584044609877116213 3.4720550901794894746205421849496156 0.0785991190545339496388575872340284 1.0818600703862842871210992742320528 LT 1 -398281771023736909.0853095562941095208411981235642345 1.1200886146164260892920882504209518 0.0416486680760697057508964218634917 1.0425408334571450731090907243837664 GT 1 -22700.2455234815831780198066413715111267 0.3959813569877240934547060625474575 0.0195988892892895200699783825914102 1.0197934944129599284124308398545029 GT 1 -702636089263899353621096185642415189479.4558524091166614055712357006837328 1.4651453242486294675793025932542593 0.0007340061524692112079865532266824 1.0007342756668767014872395751763850 GT 1 -1.5489605587035503648823249340334874 1.6966808810595322325837294837147676 0.0913289821839081471611989542822972 1.0957721669062330730446646293696288 GT 1 -1017057370388603294244085273.1963302177070530644817602812592059 0.3098880485886525383963856616404092 0.0037662935441042911195326403600827 1.0037734038863397917385522056532520 GT 1 -4586881915335689745377434610.5322560689802455452463414048157149 0.4817685598636971679572852119135798 0.0499862517059255634211204868040481 1.0512788226037678945723177233464916 GT 1 -4311061816040894.3319822913929780742343646354969432 1.8778947619190978607706373259664542 0.0653340412789059838635804789373569 1.0675660769271220547830593837230314 GT 1 -13377.2959347344397215898117497272632318 0.2000477650645680877303105896965945 0.0864248914269023943784431699970967 1.0903896858838034929326769457867583 GT 1 -2570076261440892215226953095.9579492285569136182922197304550648 0.3003643683854649544050430627138634 0.0492983416800826562028183717776809 1.0505549793040450835278975586716246 GT 1 -13.5640854251184240998012544384674749 0.6950039480581333101747388695580673 0.0349683154213320884714346383670132 1.0355943444218896054708179132220681 GT 1 -850754734588829674195808.0176397461361595988116677861566609 0.8124176605255853362131850275770409 0.0454800489878637290415799421353568 1.0465467339791104483378555773081090 GT 1 -544218899060.8578752024100162356696935833995969 0.7914915859995689285356165178551007 0.0909132096480877605251810472221012 1.0953147104274846542300263325568886 GT 1 -61868435896824749121175505183778.7916292574851968558574814489770120 0.0527403603762984064650086859288243 0.0991501755243276411963214657900242 1.1044167117634591848091512557029740 GT 1 -1102010013578406900170.7364049717777234093724152833288968 1.0860132454567811440086449795596807 0.0949714162731527549910122879764968 1.0997887515524216835964936792045657 GT 1 -37808245448248483.5054389462596551397458752342754794 0.9756248107373040970235778097830115 0.0844807302540285490504005699370886 1.0882638667592414348847534541229764 GT 1 -110929723643597475852496607473643289.2842896091331907653530570356337420 0.5056022595796236252197804815185203 0.0224872453133619787537555265398493 1.0227439389349687172055490536809143 GT 1 -8778945559955305943183.8507334254949932082339412188162440 0.6364220989361312178543655330875298 0.0094713963688951776080826937702588 1.0095165352886547566199355352295606 GT 1 -344901951916850022670808432940917915208.0961808212276905302895301439406515 0.1105160743297764195582089090821332 0.0025226871804027853689506369418866 1.0025258745172721869005632349179684 GT 1 -5482729048208628584449.4275736357199920226498757645756521 0.3614527845486080222948476298961450 0.0393653443987590252213660881299500 1.0401611133656954615169557627247287 GT 1 -423826063370750903277995194987004.1792595761733237988633051709925285 2.5244822598936694734199248021226032 0.0381922167798183108754066503322504 1.0389406578234473161376233228790221 GT 1 -29328705889765055054685213.3641899175587087339968036721508666 1.4838099612718223443239992902994548 0.0648162883865992457015173110102685 1.0670122859847236252081638040129552 GT 1 -63876169.6468280547820471725139979092652311 0.0040526190845921644524501766373592 0.0830847760443781435100011831136752 1.0867402603389375687069389987831541 GT 1 -102787759800495446844.2160321344344793593171390761807162 0.2971624004945195491519418328644976 0.0672435730490178021053654803651546 1.0696111765792451590981218309142055 GT 1 -5666299921975.0562405042568803591636343026674871 3.2940942003007512931003393265434910 0.0055975982003023338768452405296366 1.0056133234630320077856724027960275 GT 1 -41340458159566446577638727045869.6449747546467992044387977614581642 0.2662571818387647353266989398599062 0.0589927711380050371029957543393548 1.0608044573200000717687484695931147 GT 1 -16848018.8805631449691386383695163773934043 0.6688428058145326706528644437272578 0.0380984294701602588372317023177525 1.0388431510877759079135451329903313 GT 1 -84712166633502711040280250.3235349509786241312264835072241358 1.5960943709717594913104860427975175 0.0842523793815687218225079902451250 1.0880144756138601853887084190347235 GT 1 -9636808194794036.5085199292123638117560235193280514 0.3196470112556557067432558390827103 0.0621419239589067901871493211243300 1.0641566462838892713721290316128504 GT 1 -6698582354016846175633295519.3028734950311044756988009978643631 0.9150717521237164806052045980781857 0.0248903871623750183734033311562321 1.0252053908801242076938350579603790 GT 1 -2164887496148451609765014860.8413140394919850492571238303582589 0.1888386113643357431743095186398458 0.0981999753952488543141175593346873 1.1033624857111093219143610626624233 GT 1 -44480285478643.2380010124966203672139901202662761 1.2138362199165697035420462757361373 0.0190514104591552358683401454440255 1.0192352269665345202136351013665902 GT 1 -1204771528.5957130669874459214843309988444463 1.3744788887973495053273636920567380 0.0709272810320529319040875719161503 1.0735682666247048406695716982831174 GT 1 -19255282280801351141218458982473522692.9412570309317207510016502196761149 0.0656543868969916840103677291725821 0.0514407588334416438164220139464507 1.0528110338172941015763390903247261 GT 1 -108884477962810515809.4182049162942849326880063691962877 1.0037078003892813907958436152873974 0.0365447987256580482066695151628507 1.0372292880318852974231952744783244 GT 1 -15207434342337905907729821903885344903900756.6312395751349403206251610523832741 0.8572509054325555210437094913846640 0.0745534991836877216225496378519964 1.0774789543484081252439499892230979 GT 1 -3837886060.4982112416352963394407183508733787 1.0844540139235707642240682657080016 0.0076704104043188662120268880380167 1.0076999793029763830257650839141024 GT 1 -1270513829111506176635.2882504241069386572988986555406810 1.1533042632133278706666473870865841 0.0957199778802758891716860842619234 1.1006162075733734324609732426275263 GT 1 -57028.9645638500489332672108672593381733 0.1071400818298732803504412640926229 0.0299311627409090814356759443407315 1.0303882437562080057268363931115035 GT 1 -49676023693194234318179543.1183213507122556201668601155225753 0.6591871815241743750561460812318504 0.0302464006516310580614317103459432 1.0307132610439225857070916007209479 GT 1 -118493298323035.5993250599627925377305697974990469 0.7617275935315333528057178254919383 0.0164087414249709728847850681440015 1.0165448558542257087150122827952333 GT 1 -2012164314318111332189462328.4387988355559478935724890401569571 1.3237186247120001845480054936790799 0.0987209716196204109081488446101401 1.1039403818804519877688369002804023 GT 1 -20258837677169274.8690892229741719070181377519852459 2.2768372793114000506412540778043858 0.0254450225401743479514674317464686 1.0257743455562476904501707933158016 GT 1 -225086645.3074599801391031317020419781218272 0.5722932686296748009484691816566464 0.0176804807002657255071118459204945 1.0178386474820087801443667988259004 GT 1 -2155829158743222242842669.3486825381028762643541293828040484 0.3603750206867855861861018454313062 0.0061600266287183927322562454887928 1.0061790778704839082797080590322275 GT 1 -1708332757.1316071585288367104270377222602080 1.5460091613302542412746340839108731 0.0287239950348108821890857065916029 1.0291446029197833252422972626214106 GT 1 -237779218292014683958195496514776.8777003925835142079109088803376049 0.1866296790972439412249588933840495 0.0243751820578278078607132633120927 1.0246771743188157316489398529513235 GT 1 -3621551922220357081810.2738235584034034946007875986482522 1.0529674661733779419025818458058648 0.0279176567444621717256345521108648 1.0283147628263598261459197045224865 GT 1 -639715590.2237969628180774880761322785718498 2.1000742481843531546834797418112873 0.0904468828527604820615492073391213 1.0948018801485223231786744184022835 GT 1 -5401479275202095874359806978.3871038300513636697725938102685849 0.1021667171350668577294786332462929 0.0201638303462344130974068918850180 1.0203698951153086568682078452943044 GT 1 -1994391314282363310.7785362750715611489390159939899994 0.7694326855898514307955065989496379 0.0764768243253712744923985155273030 1.0795593841789753015097341556892324 GT 1 -1422524245245352304718056071222705633.2995577039132185022442499842674176 1.6836473322669245593719001898381671 0.0543304403227938271808742007849309 1.0558620736174465143184384435438631 GT 1 -3622594344440284597123.6419587123812253607588401850992663 1.7533307910985642108998198249169649 0.0940164876824038149118510572672819 1.0987341714296982699971862049600781 GT 1 -1574988971673314266341532496703032238690.5016049124151559351019133770476418 1.3530507026919595419140683501297111 0.0851557870326487967818359811038687 1.0890014872544087066095812251431399 GT 1 -436895285416.1309534914022648169847653667093928 0.2224852091196676869664592581861815 0.0461481933736983611252029319671381 1.0472469585663381650431860856650411 GT 1 -154.7501067719771254256815370312742863 4.1227845289198227231493767047808437 0.0825645067004453051695774761753971 1.0861730085555249299462781010690917 LT 1 -18123209365140217990.7195505892189129406270099849367315 1.2240313989686740359126994912471989 0.0338477271632982011346203929182032 1.0344338248561600663855991072906993 GT 1 -1284451098941226984197540384685787.5326161273783331937038653773019389 0.1137650281542179646650573441503978 0.0612649680991150355934908073348215 1.0632220207436831774842557880804744 GT 1 -751792455869466084772228746608.9220451678481262935625950629700436 1.7712089906431190347233340004915653 0.0203448305336848874320348300177116 1.0205546371290667194154466058276349 GT 1 -20700479935828.4600748375855463332025281280561551 0.2069283650094641603484300405002456 0.0163007785457834943271386836137992 1.0164350979100971348971401289101516 GT 1 -66447222831340656075923052571551.5581668501298111903108066396062694 2.3690870605194081215645365794948530 0.0557360474184296787346279822082914 1.0573495411348849504593733547971815 GT 1 -4903442838199.7672323546818899472070576197108124 0.7463552696356717691983724807645885 0.0132151396540183830405808107355506 1.0133032366152989664083567116474734 GT 1 -390493785209654917961.2976384202505994734804856489137240 0.9791841617641164234170074068012444 0.0469950004622509719202442443532981 1.0481351292370272537427012182098369 GT 1 -10413084237894012364069386998366275304866.6107388538475792514901126388654591 0.6263341128670849661630249849384399 0.0493773140174861713639165999307043 1.0506380501779710187151214092215454 GT 1 -13885403088276781236508958921648498421449611.5547836887719239353504554468616417 0.5081767414484171099747432550319953 0.0693651918905079528348566653661202 1.0718883363279525436583458839323918 GT 1 -146303168342736009467409902.2331422256789840213196073922979980 1.0524058122126284301132071184982029 0.0187754427765128548558261963367110 1.0189539391658966713877821524277318 GT 1 -1621259340724194658390510049942440.4022951159627179614516856222647842 0.7782305807520957223205472453807504 0.0260268703164333711958628071173066 1.0263715633140207164155034578782323 GT 1 -1191.4218700873100888898441348370857578 0.5296917845069659129614467380863166 0.0085247307317396262332141498379134 1.0085612740784345674068860165850866 GT 1 -2.7908064163147332066797376462961967 0.0399118917254374495741835711223457 0.0540219362706206073987583136388979 1.0555358986458597906841898719087628 GT 1 -22337187335639692692808840724962089648751684.8472437233490075823905108528468495 0.0887266719744696799539658917873144 0.0523778941366899927847892861496263 1.0537994787052437751458520364168205 GT 1 -42412.5401333229050093302643395154861297 0.8083484076928226934325936425235907 0.0872541038097178657206213443269536 1.0912977545504099251041150667553642 GT 1 -789499291224958127954527980928292.7806955769838155763367994431566810 1.8432603708005982248136444534744467 0.0556965978458153693840303381860813 1.0573077638876810064901920601778922 GT 1 -11.4098610462368268509235238128609579 0.7643066567809684837869691262270072 0.0325090124594575767161711620578079 1.0330491693251606815591055161143100 GT 1 -64926589040996317689525132103.3539775612071778593451924730677116 1.2412481121744247200531569931694785 0.0150798264941756326241003713244667 1.0151946832202053357967246391424755 GT 1 -2622439263776.7727737505404464452375319127336930 0.9060429004109335049038018720648347 0.0379580140290133035037296903810184 1.0386971848083371852591759201431283 GT 1 -573991473063892169876899166917559345865.1517242461790575191654759216773739 3.8077305390554175524348745020115791 0.0981904936049638537121721967516199 1.1033519714727200049635351581183963 LT 1 -13739948735336951.5647259132626768847001909087928430 1.6203273388781912062284044567880727 0.0584919115248063549049146769463575 1.0602723398701136041790253327504360 GT 1 -133708612380857569342.4632362872294430929282373806192591 0.2727375263876169710182710228517091 0.0220341515028650538425026006517411 1.0222805292941087621652150109726133 GT 1 -208615681602535464982105124720333587711560.2038769174112275157185197178149623 0.5176452348705319558968530873628991 0.0766447413929569195558296535181130 1.0797412229669880505341171798048785 GT 1 -1190953138551947348101039235891358786654700.8308574834768810111524642194066134 0.0899893131323218550575190784328043 0.0022334383255189585556081142366561 1.0022359361687748530189095181037071 GT 1 -11333845968433022743043643.2880482548435670897773471177609401 0.4637043683843944587579230170528580 0.0500573150846286332039412379435901 1.0513536278756089612200806137554418 GT 1 -637722117874324630050807958830802584250.9893901081792326690771171758553051 0.5971004831825718228076836719776867 0.0506887706405606619288804412112113 1.0520185790698153171965997496832409 GT 1 -33573231301038083628.5066607072279323892472428703074887 1.9488363112194128642413723213966003 0.0494140934505168007452728241732286 1.0506767407595091920490303238013502 GT 1 -1303243791180764329345452880449.0210897264536887766705544945866141 2.3473077289201272116913103445270448 0.0901460014446299359040356343217295 1.0989335310228043443537890758453610 GT 2 -67854484723036.7732481748891063349909421848171240 1.7907451050083614259944737744411730 0.0934245625672348080549274059327544 1.0980810339013515004477187357475975 GT 1 -248899593814857.5203221566580896091905628430049364 3.4520081248750055110523970533363491 0.0041997254774227892114828839982974 1.0042085690936576625044409114392934 GT 1 -19330852840426705165429334326143762338.1502283452256415520558697498642126 0.5982845523418950140486075691591801 0.0312158453428649774723118201294894 1.0317134425158048681750711230390207 GT 1 -83.3772521954274058727576584145281604 0.7884628203575031146053547932098877 0.0442822457413659728551690191232067 1.0452926456526382091432684228868483 GT 1 -15615074971913964.1311438023525087985553051860092571 0.8425628789211081633993671290555199 0.0022468071586417770116866939131580 1.0022493350169624141208478354136731 GT 1 -1105032414550565388.7927067438029483101095312351905425 0.6513765934361238269676840905370899 0.0023400201824763941899507668820706 1.0023427623082919718696317039876158 GT 1 -23083689.5193269397779787876792587544174068 1.4040764173230012903542280181441346 0.0598258813959733320506852798677304 1.0616901883140442508394981600733965 GT 1 -358.0502479775746468810932285261780548 0.3071512112328859221547725203318676 0.0854648927742432616500143434722163 1.0893394223574506450549118827964552 GT 1 -32678881116.1726891695839666123027157302231008 3.3077287088580243147005846573610140 0.0180539926785260276831694799144634 1.0182189545002810512015270562805464 GT 1 -60.2898698951949828419572238805371191 0.2465136821356767961206714627799291 0.0393535051324543256098936903828969 1.0401487890202429901572285618474288 GT 1 -11550971181131730870323762762164284373.8198495339766450942865758600469063 0.6108098794058528252289442037504567 0.0492019611031316548183702686426417 1.0504536060803999667296502025255722 GT 1 -99984194324112522864414831802003978.8136856373463171295795263865385162 1.7407409355447639608590595081536840 0.0809901835914873233614524009699074 1.0844584750637889810933140654997861 GT 1 -2419055125043598864224684795559768.1600077687565613466097668631968860 0.1092677292969526419977004132023960 0.0065099476581271137830481726231128 1.0065312297813365832487833082225897 GT 1 -487501527651801468442179530775649654448.8100871632953795642478415196880416 0.6973629912062842491610749093129234 0.0812723779780850322069626710841493 1.0847655857346764409897957360201469 GT 1 -7428055361435862.1399374531701310367893301281169150 0.5878343739209419474075066490660682 0.0083437484498158011032197370383575 1.0083787523641394178727980423054428 GT 1 -44475635534990592493223799570498973285.9413716813446691478003766721957178 0.1950515813458139109476625345917199 0.0130012975254147746971240384215477 1.0130865541649347482668856557355550 GT 1 -191046.7951788210460907426205965675579603 0.6269273203390318520701770960177028 0.0695725193008472347323783406717075 1.0721111417788433740779486470713499 GT 1 -67542739917844088884008310498069245551.8860230215275515063670584786745424 0.3189009648569240240567611421120891 0.0061748052801918951924159641307811 1.0061939482336728631735216349590133 GT 1 -563216.3607231695454028902351784986235347 0.0616291315980930593405622359582213 0.0842520283049652462129325216761860 1.0880140922369031792851973815235920 GT 1 -122248026545450667120627.9706061722871434118578348961834296 0.1811927278027113197680670663868300 0.0673563746071455698197500378944194 1.0697321174553039194950542794532554 GT 1 -11452962283481279032587324977894963266175100.4198694663519568115489450164801840 0.3422100556719050147132332136084629 0.0532836103625199403015659546817275 1.0547557136094021987895585054421854 GT 1 -956341651832060615781.7106992667121927491709717157193438 0.2868698797947052832699135229151606 0.0834844636947832466331748762812773 1.0871762600673154407263779401843490 GT 1 -2.5400774244180562260695123599658057 0.1565589189441271541004003711370514 0.0761537470015118816780158254828025 1.0792096140440595199740534638235642 GT 1 -15174080109323713158254362387281079.8906780934028129650360595265450413 0.6345010147775484483361556394570139 0.0607597728726542906716584264867978 1.0626839995570690384655420727761593 GT 1 -80.1729928791295866762648020484039763 3.0211660401022653188939329839248369 0.0690405938287351005535496589600523 1.0715396050495972451559821078533225 LT 1 -57350819807002905195245524304192499733.1736022078314397796242745949283085 0.4940588199174264674650955793757967 0.0716281094924566877388473032533701 1.0743228823909952745389854916320883 GT 1 -685319718662.5107284094360755822751464717322825 0.7834272365379192177410019333961781 0.0646033160397955243210220090945847 1.0667845787466622076251118870392867 GT 1 -27110.7106887834799777952873269480801662 1.0727264979181547939031018732160214 0.0953446443398965390988788704355007 1.1002012302885284213721595382670806 GT 1 -207940866136191726.8125147562280680201455156021451451 3.5278115926607694558031364093386245 0.0716183592341485870497447441856399 1.0743123799111087777989734832334244 LT 1 -2034486526081909654276575988029039.8664719750797627058633808574371379 0.0253202965526366303269569366786480 0.0366720512384922736340595051358200 1.0373613760803165648417634439584572 GT 1 -184961400326062196778620558.3765881483913763848467414742226158 1.4188262228964019237184217505781768 0.0617304524691588104866190634361826 1.0637180071516942118786839663273876 GT 1 -564595232763866822918457328333007.6453722970847954796099105245869987 1.2476355697197753993577229809331067 0.0809096254917977832611363290236612 1.0843708214090652504856123922477106 GT 1 -77535941223.4450979943152598787100485538855891 0.4138519247237372496570993630242400 0.0409449559436574116642985448001423 1.0418068083982696188833606602632367 GT 1 -230004.3050003692339444291195364128192980 0.3102653527537006922703834617120239 0.0944215683797666164587143617849254 1.0991813884906105994191037827540670 GT 1 -57455649827818074816939217.0697148506055573531119166451691942 0.1701708325038483527173601201010639 0.0680986466958102464246005343105696 1.0705283139926442983581473325633065 GT 1 -17538343061285556716748290039157506595475542.5567742543035680714573373403490125 0.2182945444968328954507671778671353 0.0762056790970773738364876713457840 1.0792658285441227113620240139587344 GT 1 -952077767444572105680566692939630.4208441094739024426250937390860358 1.1959886353999510710009668219504997 0.0994860156527699854095756755074998 1.1047895849506394130564849053790298 GT 1 -1026795227365827500801214820.5159013032326019358384043131613207 0.3990208052326632427776463934489860 0.0012148213421536540664166275853007 1.0012155598357527740617889351032628 GT 1 -48058371745314406806449971050986168.0995565298764996489276626826762548 0.0958900841920668657624487158964062 0.0115349815219725992434351471262090 1.0116020254872558564605378897301003 GT 1 -6043611721879662951847871.7951463160379017183262024348134244 0.1804578065353101986904986425572661 0.0381813314945330742771005071957515 1.0389293403607709344490793468011772 GT 1 -2250934768409986038801812950023796745090496.0460347088498155185169486567685645 0.4324142856130931691900998359978213 0.0007123031782012648436676411185656 1.0007125569866429660632469323809554 GT 1 -39275139136343766.0921818836482465392220449865700321 0.2516825223657324492974016553315797 0.0935505466041543286361638230971638 1.0982200105229738526736382118571920 GT 1 -8196641896527354288520.3705375638817883140006271469441253 0.4762220125281039258187495910520801 0.0879621441546353447284336125550116 1.0920737811668903344307131993566162 GT 1 -123791177101448933.3385609240838352989494126336865868 2.9021478235951373984328998982525220 0.0695721896230707798823363847556339 1.0721107874495432550882524487927448 LT 1 -2036024035306969897603574217294314579789.1661749548112991707233882719216110 1.0336822535508302812496722694629368 0.0745705186261533853068443743543128 1.0774973450376060088405749826435585 GT 1 -13200028423503754.7236694777673531781322888753449565 0.5307952985940673078156735827147750 0.0622799786963290413281823378595736 1.0643038592822357724092121437889782 GT 1 -9554678071072341376716782167356574996.4819996128389388362276908639431198 1.0803452854928647271480972641793138 0.0068817673058948149672071013012539 1.0069055558675711245282109955161237 GT 1 -153405459092.7518392238193511695303923464332557 0.1771306446469289275737349961598687 0.0911699310300417294109098695732924 1.0955971451079752394598636411082379 GT 1 -1.4835491884191572648715259513334596 1.9114645835078285392549469392999991 0.0836318982634906903418760877143020 1.0873371372402743850404110926670193 GT 1 -1021044736060989110.6295438449775337969499279958721252 2.7126135130855054406417773080862130 0.0254023953929187951886853893192479 1.0257306063973388006578570127655187 GT 1 -10206468954979724333689363037337689327155690.0363652627843037584640430767369171 2.9128627320647328172039138465276265 0.0629178542478182139467772211149115 1.0649843316940044369306686386027352 LT 1 -23166893212729.8277285940233814130755356751113958 2.1955467572885950294242872144918415 0.0335724982912671513727151173371548 1.0341489943125344843289191045277927 GT 1 -44418.2797826637057151208006896403320104 0.8408632047528672573281799031410772 0.0339897413834742019708651019548798 1.0345808251401630084119600799034476 GT 1 -755181858076628045725057178541820.1645371614615321505666468367571362 0.5393345919957669123044576923936898 0.0247941925455750809293405657601135 1.0251067456908619112514928088412840 GT 1 -9904635643557928480.3247571049639862883781714446838995 1.2511569864955418152149518568239181 0.0464478102047444295745858165062367 1.0475611204681402632499764750586605 GT 1 -298535.5764189585538307905534164481131005 0.8829818508839959430382098993575387 0.0443667970679021531786175098840880 1.0453811184956535013459950727150528 GT 1 -53645524.6924178835647851818205696868878316 0.2913557769434137944671771194297344 0.0660024717286377428700729292068543 1.0682814871472005639925253399512824 GT 1 -146165049.5195876983950775372632151575224970 0.1586964537563741381386259501072649 0.0593365372197033243235358860938951 1.0611698412174585647759418647408895 GT 1 -220965361.1823681144279352886226537058810002 1.0168565293603402464880490710098671 0.0545352537745457344007123272471680 1.0560786774323246124595402309420210 GT 1 -14362802124814285204616523860915085274163616.4957325415627205985290687594014910 0.2251189458646806655005689546694230 0.0728554098707218993898382024178318 1.0756457491723486747027912625611079 GT 1 -68270107962404875037074337884160.7404068992363695980103628197892743 0.2832403854739445124731549601958061 0.0654160318543884590747086980913285 1.0676538025697518685378588070894826 GT 1 -7070924345824628933380017033406.1378176764534989250652331589058300 1.0427703527710831343087138942951521 0.0957404631006579749401637377206261 1.1006388614548224761633703727370188 GT 1 -1690050584218777544118883887611729946112867.8745114433493301049556960830720774 0.4551327473754874087627007806511488 0.0853009646995091727040197555414494 1.0891601909825687707982451946133292 GT 1 -731255646537658647742211.7092518479586066497364028169173045 0.2095308241150991066605707478906665 0.0051384507493303140011569117950228 1.0051516979870531144819515542448437 GT 1 -538718183554171657621399.7674707966257720117690876304849930 0.4384597149178845030723477302743207 0.0705537403351757739320314646719259 1.0731662898827919380366525122099039 GT 1 -12460780.2767678706561960641813204607509394 0.4493684551143923798560169631158265 0.0945107554509504232821609399711138 1.0992798796430169516132778196960435 GT 1 -365270100086358763459404495479024334789.9309413463837870661713975840853492 0.3819880603355082535372139445812561 0.0891379873389289155563224408500335 1.0933638611846559379921960068066350 GT 1 -8415960904.8854272111835911361167586322275995 0.3763007691069374968507187730545633 0.0059017927080282921368447725316829 1.0059192771134438349423641123184802 GT 1 -488466909702.2332835684854191847081281288681197 2.5355319134756009482822431836292248 0.0885634856149376402042506516803176 1.0970330727797960253595762550031581 LT 2 -447524522058352665575.7609045139866982442097690002137733 0.0256955420364867918216382921864280 0.0303014235462987190000407218429280 1.0307700017002470121001553210874560 GT 1 -51.4538865387475742470913767704758451 1.3404459677539155733747400989313048 0.0898862955319888906363080126615336 1.0941857373119906123809684678456849 GT 1 -24.7170701466034911312459702141613533 0.7556927446037320468403781679730834 0.0062651024062452759135631182872500 1.0062848105190092496588423093854305 GT 1 -8714.9359728854857042683424480952305212 0.8310292401833842725249773239444402 0.0221279277888765317052443118219087 1.0223764230132052606172782499821667 GT 1 -16652347937218827.3930341752152142812849300291653151 0.5453819397838118550089518354406410 0.0843460970658666960733537311146231 1.0881168209304655624548615873599142 GT 1 -232234425719456328795634431226134.9219118532832727906298734202297055 1.2547354264075396072365429788698454 0.0396006708320891321832345377472140 1.0404061131276705272265123760196987 GT 1 -2577909475528535208806134106458374.8808149522364532535656032330480957 4.0102619573257843136368460795214315 0.0823439596560922993855641943748178 1.0859326422943641229349905865348249 LT 1 -6041897865556105834398001540256027719727321.6272083024089031916525320561529933 0.3104424940275280435031473463415427 0.0617860093417071689825882481701745 1.0637772209645883082244509978407832 GT 1 -14.5161226551786801277675658895523300 0.3314211659485416355932078533542668 0.0839617733887697211143102140128570 1.0876971830704369931395321564703275 GT 1 -38976340758999310636574275441128999205.2078207529169915120302310636522654 0.1460218973850813233269619212621573 0.0219250041296696283826747741322897 1.0221689289933042015359345510775862 GT 1 -692732916507906727584188.5752749112238280553497417327558820 1.6420101711850258306840976501543971 0.0961297512510886938927673171874466 1.1010694590364071585528240300180191 GT 1 -7609590.1991691791339809030599097973507010 0.3598288985263308324618486240314731 0.0788223496317029813192262583963057 1.0821023727625114013433420228327417 GT 1 -231708001431304493028608789.3965493768756867651517323371142318 1.9756096917464257895855274349112810 0.0703807080964223139023478918318041 1.0729801401915052198519027498730292 GT 1 -325303991.8824947379189492143287059012012131 0.3586143285278953849423077908190402 0.0171762391312773575357901622286929 1.0173254619192629019584632648636971 GT 1 -1.2438892879683289199446130823578119 0.5690513006700955936860404397644059 0.0786495765354688328373999655799018 1.0819148335882711646934102991162088 GT 1 -1848550413396600714345.7702127063299986179959666859918214 1.4803701617745561548111267292207081 0.0991145046459335119381721599230828 1.1043771156274383172593234524306459 GT 1 -22163725897385595688855553309977214239.1085850278133930396653245863714636 2.5333865609608521778373035306005277 0.0192117783015738742884556691793073 1.0193987227442118138640085195941264 GT 1 -74383080.8425731794182051563967491979531025 0.0022580060207068530786301706233450 0.0710320909493409163762379260153503 1.0736810843056733343401627693219517 GT 1 -55616.5176023961146479937941996828543615 0.1929665803697433615512920385625070 0.0344869371895113083850173023050086 1.0350956476240574980365010705159775 GT 1 -83877038330548987038390042277344665158672.7545380921423276392051054766812487 2.1414006455161032162345490248227787 0.0879495405098123346052965852587946 1.0920599620500008189368748363084121 GT 1 -68131500492581937748768522635203206.1562258257775472722640678991121348 1.0064973493630648970709992198898949 0.0558241060330777597189595747701219 1.0574428018388177239319028593284656 GT 1 -428659119865900432727.4626564465760901473359971627410478 2.5113375147816612690156241475686698 0.0334696799257753630764420243160622 1.0340426098229920061347123363411298 GT 1 -652709782392944696592464234.8535955030170404384909970181234337 0.5392571789748847239357508482582917 0.0311856014469046374511536157197340 1.0316822245982308816845301878264790 GT 1 -66776949997930068664204518821659.7513222006858084869016083299704352 0.6862683553169303577182947164239282 0.0681825713074912883362503291485167 1.0706183754467096543235072333393417 GT 1 -29630968217122382992755209115954118201.6927953295897534748663724305261021 0.2834849817142792664193154123143654 0.0061498118651837865138920625885364 1.0061687998465418304201395589263565 GT 1 -2475480264628564280233.2801875226012926886369288576222791 2.8893886022708526893793256181562128 0.0745791696489630456570875467218723 1.0775066931980217056732361189016120 LT 1 -257.4330930762126016891570933356391901 0.0516373476940058133235082091551151 0.0226912107044194096513012100747705 1.0229526182309643013769086712604638 GT 1 -7.4086412800624444652686074793874226 0.0150128611214274516056392621385776 0.0596173679909371963563514202574513 1.0614684312138422507343120914743359 GT 1 -1722960884188523070718.1984403143320764811941489415411267 0.2310400858991291626330283351997770 0.0700153921734698560972546709233622 1.0725872436959613126749271950633133 GT 1 -14481918319349251544025643978508358537.6803897807317178476448282904140310 2.6120222508189219662950292512914272 0.0490045153446128652981008132558695 1.0502459644444568613891718021181793 GT 1 -54751025760758.8860044709230742801596190624992289 1.7733477299905663953695856479376358 0.0306357697315148434347397171519379 1.0311148550875334045311595210165971 GT 1 -6478358.2409801121120478432836385572357197 0.2838178067558719519946954016138650 0.0055989927701972497129980847704571 1.0056147258840944260055301765420093 GT 1 -88986215982575191052520460844572.7529835480449397025855204556829097 1.2720265805320946941718821350276441 0.0538570943678664503615407442010486 1.0553616583030482758459019227213988 GT 1 -20985497591112873674086.3028215697316922775721783017876868 0.3442784768688603110629950316180065 0.0890926334832504547277263586968116 1.0933140701889281480284953325274150 GT 1 -3195689732061930864612563053662563488.1719125739819252446666510990130038 0.3816805974246582241381510049127320 0.0893184525685293612652355374403295 1.0935620065753505458405289071709674 GT 1 -215.2450596414870169440046033401672801 2.0843477201657480924678450684238051 0.0142400215267476329743004228948260 1.0143423835535934402820047686842291 GT 1 -1168468806660252439347144062994515663945.9809880397582968745588281876790914 0.3944877770673825628378987658799086 0.0781543966791613258860545810125045 1.0813775278855410845328812882606562 GT 1 -443.8605015291552925181239008640591334 0.5090863934836646500533206839525900 0.0569364021132218357503190593255650 1.0586215565371339380606378398796301 GT 1 -23801869108002.1059161914883713873212316136403038 0.6872481887992190500315809899772461 0.0394988558716445831880196642292428 1.0403001055942711723308336644666560 GT 1 -271276803248653820763746340863737193615.0602322506510599193356645524457319 0.0212895474436261235533777698867209 0.0054137872036213992270433866169931 1.0054284948563166934925674111570572 GT 1 -299496240047726040056303974617.6363592810827302655781135941736426 0.1065199450737743539506372377627579 0.0723962506526286885593479164173456 1.0751506316216812008287399819979047 GT 1 -1105.8554051707636637380914122080416226 0.1375749049540892646703842596176193 0.0597406015004965595497273964426232 1.0615994859363642392964089086786442 GT 1 -8679652748791393283430345794778119.2446314501518686812186226389066952 0.0192336714709435575223412412479537 0.0061875822976581519855687565804644 1.0062068047195700711829292737644163 GT 1 -404606206820898190871216742980745484.5481445840285700933048312478845755 0.7865763314480065198878850377368509 0.0785439126215127797362319713338645 1.0818001564222744880633948834265475 GT 1 -366367816954792919748664412398412706842905.8082935013174615404277952067369598 0.6941507376234256812746952960472634 0.0618177810899262061873584863689559 1.0638110856122144959995112543390062 GT 1 -436914959601336358.4801577696769217763035815832128572 0.7600109051255446270423992073512447 0.0792060585004098930175162779245026 1.0825190012012465820835546975318012 GT 1 -8758.2327599619803995256178718984050052 0.8692945915817241341559917278134093 0.0134199036082106531757275321935334 1.0135107643249889825576443956997100 GT 1 -146178325467326371377187.6246987743808327986940496834272505 0.9272561908616252299006029043745536 0.0552991375376250579661303241723073 1.0568869492590424169842006882848473 GT 1 -1419711491.1497158190251298298888584317221219 1.1355979218478247792414819985129400 0.0417229079840120945519919661725379 1.0426183027329339677142215038458314 GT 1 -77188521552933187775526938892275725633.5365094314741640913383239197776739 0.1562141716715176285241223518254005 0.0090408479692442164170566901023535 1.0090819644413744318482668072409937 GT 1 -50581960870.5063910296159218211223877848924511 0.6740187181095930385747164128228285 0.0904880611687954721413535472694883 1.0948471543028541755205756488892542 GT 1 -262195566297.7361420839807848925023814312064044 1.6121088694405627430021798206858247 0.0333496861257282073601129641649584 1.0339184685005578240281745854323886 GT 1 -46430100228856.2762521689066002332728099037495380 0.2407626634427077229913595238516820 0.0482812540540431048692601475911083 1.0494857227709856986082714095463788 GT 1 -76498908828332793964987852.0149753500106190246402401704001815 0.3603918317807396249307521681196658 0.0343500384713128444450497873394928 1.0349538691033397789970875320443459 GT 1 -5928487815824477892620221631413991.2101318443283508652731705731667604 0.7388507973283984633052255957945329 0.0512808469015836159537592718002595 1.0526424640041132078506227448594355 GT 1 -4538131615876104362294573621659256291815532.3738442631671084471675289751011368 0.7261841430019122323046767044602717 0.0820136281984667077148140757134329 1.0855727340039414006102711501940528 GT 1 -15916249468.2443959900264498029078849791006177 0.6317386370346490070237417453978537 0.0394209752239041442496312947554405 1.0402190255341636152612437622788312 GT 1 -144786612733369.0583843715931643224292248597766439 0.6485188564933095639893193825581280 0.0426768114304354731464657390900386 1.0436142344363666567427877226794366 GT 1 -9545246556886800105442385536562356964919.3397771294647674617784367549061444 3.6015031499148823422270590546703624 0.0345062100796300649676629468704451 1.0351156091172983330267037164285381 LT 1 -489477541968886493.8504067005157715223717569257249491 0.6730219765164473347435765128227940 0.0620812506206643961805062140871163 1.0640919548585114632576315694627484 GT 1 -2745131254959592339531328223776.1823604887070335552985329097997433 0.6594427431733843717124977878130133 0.0301274183846245146941561479571882 1.0305905752724852606769895626701291 GT 1 -1041787652631354484031.2028158489083197856052964263649520 0.1033403810887901112811107925099599 0.0419902315573431526154909705206060 1.0428973043590278377603047752143795 GT 1 -160.0648941705211437316487928064685564 0.0737194361355098216237721629801662 0.0704078673296529532594112088869213 1.0730093560546110474064302840279614 GT 1 -2205519030381653877319741835844741466394604.3456629690077388113826212173697046 0.0279343753742484331350056777353702 0.0079242489480124350467051671992488 1.0079558126651212499893748562037077 GT 1 -778626030642189903844345052896404.3580313738031499801817269304995093 1.8005891543391530528744570975113194 0.0448771861788230116997063961513931 1.0459153459099173194023053154770912 GT 1 -60661667256310392445164225229.1425714084749160353807379381931397 0.2914469767600269115886325701400189 0.0151697065345700921984752694490408 1.0152859435518706373906125183554677 GT 1 -651082977006645776.7406927443343738951746132193264851 0.0747130967783297407743620627952717 0.0167350939212756660775563720478275 1.0168767077762569544876760747860721 GT 1 -6551805192373029.1080879436985636658715742012168578 0.0714862545078234696658513741143098 0.0188333669111049877304016822291517 1.0190129734042227561951927429334647 GT 1 -265187525403366524362919128.6189545130744216880898508659118587 1.4677008260969917137140808135158766 0.0896283073902782153771766920543408 1.0939023094483539735547811459825631 GT 1 -62.9931500615148752866513830596300504 0.2035526921822676830980044117449943 0.0838260951152792821044844632620364 1.0875490798334742893512033110621869 GT 1 -1398680918028965383005546406857378891063.5330716124605404052688827499489224 0.3305831288186700057818369250649059 0.0381990743163691915084617975977595 1.0389477876898480744483013102660413 GT 1 -9499124656968226416906276551850220397088.9938367689545364782621692768382637 1.7079142496579768079074212608624212 0.0232116500990368963381638747050621 1.0234852830575828058157099690300909 GT 1 -7371208.3791521757348808115396477249427423 0.8278690088964495795917616574290680 0.0462347524004498296525929753260934 1.0473377095130432439584967644872141 GT 1 -692766879860907926013703.5337634142765673842697966287283871 0.1810193601571742502203579626778672 0.0388929333380680708997308951229803 1.0396694644986973617213018796567999 GT 1 -71096777189436799713724007756371195203883.6069910333057433401543667012612677 1.5086550599460042497065319792443428 0.0948233172120106785272958148102687 1.0996251247370410831688666691530953 GT 1 -1403.3962646080526912088762595623696549 0.5487330633515962706240961724343648 0.0996846018845613921390156036307360 1.1050101346979173130976671722758789 GT 1 -28408470339806.5159217908405982010462752357212890 1.8947089555840963979144410756746388 0.0024076008994562372014240993544681 1.0024105038308379391129726214330139 GT 1 -398211500459327795375978718858.1919075817727426107444345321216787 0.0523530316940476556568689104089313 0.0008486451586932127531668549476632 1.0008490054618566789893948951702770 GT 1 -444774564065736094448580.3672231595929470642141588064894423 0.5373625170744658354371307991420353 0.0019224309998095020063944249561694 1.0019242812419728907358352776970604 GT 1 -364220325233467014359842416008058409.3872989674374992943573634260548300 1.0905194266042178613412716053002324 0.0261067215548588406691049496461470 1.0264535517277404358090381780774058 GT 1 -17792870523629677873149665774271525.6953070178435050240963400031173722 3.3582926796382018508059496255881194 0.0321590190159117041917995107134957 1.0326874810431982335500205844750289 GT 1 -42411255600806770848584307.9460362107688205072612429920923673 0.2204832369352003757733074533151535 0.0868552745302975463799474352834888 1.0908608945533957938705517567619067 GT 1 -1431044668868064130716390192644.3776391233453077994743543758171293 0.4843794209830883499596967042456072 0.0003673799585214446145851072614390 1.0003674474590711452233331860047071 GT 1 -4634802675498113310731811803.0118157810733099624467115289809300 2.0202069971064460359231519047833715 0.0814072447592405955174392235367858 1.0849123938614101377112919514325707 GT 1 -322754.8264609568000934561381815874551304 0.3373895118053122273118690580852337 0.0057394403879945785588229457730920 1.0057559742698153616287601727526775 GT 1 -7262375200739039287168.7989163021035790730470625606427076 0.2920045474247754990232331170892348 0.0834065629064778462824671553563799 1.0870912669878174326654432361006507 GT 1 -44596493354126613778349.4891872170328187384265891779488388 1.2071660701583838850256747924939400 0.0813528688467430900596064863438872 1.0848532008154545472601732594084744 GT 1 -3168167295235551976068.3065557574912091307707160584723890 1.2312861358011779910692196331196210 0.0654828477947980253569804807068905 1.0677252978352680400145309762023916 GT 1 -123.5355737165281355542510481708334998 0.0846648463280498613611710660834877 0.0736506882880088979511192022706595 1.0765038889971420691201075290279443 GT 1 -17517252734999858516616878987997.1950196970779268244307318675596731 0.1032658351715027946785215207216459 0.0046013483250463635615694599612827 1.0046119671146046382765730531186802 GT 1 -779993615.8745249471193649431201276485266651 0.0592201934213723113942952769231028 0.0112708056635233127293838529063524 1.0113348025120831125376905929902597 GT 1 -172285996329952.2395828714747767597053039672941915 1.6515465682001414972720259836005205 0.0401967168585756210067989062830684 1.0410269289122228378284514121718558 GT 1 -1265182910581052852297520352625.5542770420063124788000365678199921 0.5393321367363404708415654274439281 0.0727598363521523767552447897250287 1.0755426707594578479999353135443488 GT 1 -13941603571273698716599933084056992.4479081629868088711307892666627739 0.5349962864894752955814217004057029 0.0962387734313403852343971957585046 1.1011900833803318287670114934551298 GT 1 -20554082361067.2726673780639375975239173727051829 0.4798244282175077434209547884915587 0.0750011557144448246035739599488121 1.0779627908915138175827604910628456 GT 1 -1.8674049300290760772883096519260602 0.8694730462768531246217199409248380 0.0196082532379586853816508531708089 1.0198030455989850607215949074412508 GT 1 -4.1648857601426382812581088137489250 0.0560661291528273241788295212682870 0.0891793010581618913065387876720294 1.0934092189398532813880369901829463 GT 1 -12252973267060189210208010961645526526233383.1391258139313252142994615014854481 0.6485406879976950871507637068080497 0.0302178753931228713240787144153323 1.0306838465215109308137411677677303 GT 1 -136322594694690923423121493045438568261676.6845315981263595312947734630042920 2.1314374528413162373405795815395035 0.0691599204515836704301000709075507 1.0716677892326171838654926598267880 GT 1 -3271082.8387134845578138976747319209016212 2.3489559661708494846269952218178401 0.0220177028344165559370117379798587 1.0222637101688314788170935561325002 GT 1 -3555073963.9208068152590015964689225494208284 0.1900748817094403067293569441231420 0.0924066645242022343799851380565627 1.0969588691225843900250947047428425 GT 1 -20904818034811352082821212096961552705229871.3170222145778645292154454605816653 0.0274763560432706772325124663999244 0.0862296533319527822341994305822089 1.0901760009506864004834357969560160 GT 1 -3799212359986676324091759422869474316.5589355961301661424548982550175273 3.0732214903532949710888971968652140 0.0469885810680953613665023133520857 1.0492865644308590617547316357081662 LT 2 -7450008971254399106341902.6414516914799645632073104008064251 0.4726703699173887546851902909987598 0.0709112768803612045802291477417123 1.0735510408322310253660685736913534 GT 1 -73704606724586507730434839166785228656334.7530266181370286101642187330053959 0.1333758204819601163281720260213396 0.0934257666224737808591128179329440 1.0980823620379729354474313121070687 GT 1 -390.6381711418119703509808347614435995 0.3699728000029210245951442921693869 0.0275464882597749317561170018389556 1.0279330074699425983569713913380871 GT 1 -35837218064473661142091981425804.6291800654162275665833562334663676 0.3762262304918062947321383207837157 0.0906773787917642324596283089346706 1.0950553289525027449082096950536141 GT 1 -3452337489610158279567850577811706769417.6005862104555978918291119573601307 0.8237649802750868897342486994248765 0.0827477733736932457546527766890429 1.0863727882475859746328480994955566 GT 1 -24452462408686827291672149077234870.8694063315919380198930044519067722 0.9998649762414631231433272773490404 0.0940311228272910801319324877537556 1.0987503254357002712782785200106423 GT 1 -24837504030525766.2999651195525767199967802220531443 2.2289903043722257038911812430945210 0.0261632343988692100343249058368056 1.0265115811699611107390285538055039 GT 1 -59436507072873202452885645334076296694.7796714078036986449046912904599462 2.2074581671158720603720083491599057 0.0891264223607177533961484718524210 1.0933511645251924087328547362718062 GT 1 -8629.6423434987288979064284004566181095 0.7910777811195753604613662248638596 0.0497349228338934799483240361771005 1.0510143047128876747075326546962200 GT 1 -23547245361920285651162583.5977027041597293407110908190778464 0.4409099796384907588332070417527574 0.0203243990270113690043563709200122 1.0205337815318571905477864346785395 GT 1 -1879552565551932820947210218895.1988771998023979555838079567227262 0.0197952950006393694987207068582695 0.0114423578900966263402325532014296 1.0115083253655625666953352467119778 GT 1 -721155998.6194116731181952798823635957767931 2.3168057620126289576835398849818083 0.0957430673657033896560914769214408 1.1057061215179701206282931909184784 GT 2 -29953628077.6896948438771600088799532001637840 0.9235478546717492296915597552616955 0.0760253106921486674313136470164547 1.0790706002396053481608458136209223 GT 1 -2719261825829932077468636967439391865150.0226093447529141869532601564035293 1.2589346865099863356650219782972953 0.0798587567983452964755052711293972 1.0832280955036515696710477734476455 GT 1 -22046818692265541614859957709958451378135.1191058683388725608058258039468036 3.0709309540624824653144946698557386 0.0590779810766872105181983273503667 1.0608950132628875949513661308610494 LT 1 -68243923437984452268169614803482628.8454938001524919800159142609609982 1.6283836027317922252309392410522878 0.0577446287001190571999169662982785 1.0594789463471539092501273037338507 GT 1 -240847648423048116409344908.9213853064736200156585480030943594 0.3207699628267721122116100943674197 0.0783154996630340641175894589388739 1.0815523045099782859267004748060072 GT 1 -101554007311.8708812028531642468592890044325564 0.1585849192343724637797924560368664 0.0417991585029355676673743329732512 1.0426978763274224099556043518796451 GT 1 -3239690015262745103044006.5111326892704133435287092786868205 0.7782886752599257351482699497687328 0.0594729902450485970648367253123411 1.0613149121473582770270421189352296 GT 1 -128552270963085986365.8832885135209750785786266281550055 0.4526182512822674756990147886324283 0.0613082949423894082722164806698654 1.0632681763058994220233922767284582 GT 1 -75048183435762056.5498863775799621500149284408535720 2.1512839429708567729243064002923827 0.0929042919314351492044551612182363 1.0975073128589662890815044155512832 GT 1 -1.6106962494354897020437449175144703 0.1123786295218926563821112601867860 0.0193729694145435352883244298202770 1.0195630847916108530086669492015119 GT 1 -23418047179910377641584780.7717134342833773900949837119058487 0.4016021757491761523858522581229440 0.0655805433505809342048780267788596 1.0678298445121419721494919557514291 GT 1 -134747747340924518.2312551448591803700458289776930823 0.4302671580514265873550616092804760 0.0981419094082949475817354658027555 1.1032980988004362397810966200691008 GT 1 -1008321865498522359590069749517084286.5316867131965205218511868439723762 1.3661940769888053916033866358457412 0.0324754067401591410174445845953196 1.0330144350112510085270880125545513 GT 1 -5133241516575187232608572578610515.8364047591578777511148036028152255 0.0349265543475357180968151558086016 0.0148275880839148670914270011955668 1.0149386156490611784201391991428155 GT 1 -103022325.5124036315553432106915013670040851 0.8736354149558907418722221017354405 0.0802783344683492369964310760455756 1.0836841921783395039189987199176298 GT 1 -135219.0095280782342216696987076811123748 0.1230444485065297737226347375793781 0.0952397708583786781152560537872168 1.1000853105600634005291799344088130 GT 1 -295261594217019151996423.9177703308013209807284032618593296 0.6385206416703726378815513209560868 0.0961934125935929475174189840544379 1.1011398934650143993340785125198299 GT 1 -54304714344641175.0624600298373556448887601154908625 1.1056773984718998670730070291119933 0.0223622976525252037271925098334769 1.0226161250774138207271724084185956 GT 1 -71135493028910203440459912099508111194088.3356502035445386689190204369680876 0.7414887513256653161718626437346251 0.0072861784754665963062375972331354 1.0073128523197593384787968265770312 GT 1 -278503517122193.5941285105200695934479094953334553 0.4267939199301405501742412775593324 0.0782098158922698746287383215205096 1.0814376473663009338978508414713581 GT 1 -38129066286595527451052.3860815016214388329878864781210568 0.3379941174449701536234070687137823 0.0587381776405515115671345216761345 1.0605339396712708358916144390839499 GT 1 -1787037979114929840156959167492349.3400947651307496414187859056327259 1.9888170534014485151014844952837974 0.0634663887904675753460001690931394 1.0655698675022760994672427880886309 GT 1 -17937830731162588671900.8183237712744488022052312243201706 0.3497807870267173381921958229154156 0.0185753325565349603499127928233903 1.0187500206886096467531478698233113 GT 1 -3927259.7308516346483034316270850260909817 0.5490428556549086230970344015861954 0.0692188668237722516502276848096859 1.0717311172306066439704430580241639 GT 1 -13072670164863894519011936562645152.3151898908786359240234342870912414 0.5972894822219841292094628144633714 0.0516533821102702432089215303745696 1.0530352128683566042438303751717376 GT 1 -125871613846755103.1523225535136456291068229708779361 0.5584203864132448398382903231363314 0.0445541449948513047446121744222321 1.0455771835687034148310663701564408 GT 1 -216859057577066680600851.2701327270756842198715575978376331 0.6884615099475915361094855291364292 0.0433472466756894150648868644743200 1.0443148025657770075687716278257715 GT 1 -83921966453136159044653947.2935936318022132566370705135102295 0.5110135232978853378622914188189853 0.0187642314594317109651907153312060 1.0189425133888411266899439789211471 GT 1 -8127920155514381232018958774549459030.3283317816902703477264727224107323 0.4454357255250107327963108726164966 0.0390546392545179179148300119694735 1.0398377282926766902069464444646993 GT 1 -6.7009150824312592575272195797030394 0.6869642806632936907669254168242770 0.0845336590986691299139672290830639 1.0883216813530291076475191041741196 GT 1 -489244696933093894558945328524579.0914065494724412795729645864427225 0.2347738929318051615402693270120607 0.0760182548657764313203328724601502 1.0790629638838550020700350448363194 GT 1 -12364890349592801368741390.9656505515878050663588117549634225 1.4893330818462174204435143919810218 0.0680025394652093976337309665589773 1.0704251890483367535325965955829073 GT 1 -1898025312888477.2974394183396560529023059779080253 0.1792506527416846226379422544193640 0.0510489055611131607111889737403701 1.0523980154842226427850651308617054 GT 1 -23397850634548597353546772672794155.7106742804577336025672564347384704 0.7340635844795107241325963500004721 0.0385004764753729747250055895346310 1.0392612095076354793871654419607691 GT 1 -169992138428577955099529142717571508452.9045748386912893109538655798633999 1.2039658610466244159661559133078901 0.0058170989073805054727744647241546 1.0058340841290696868128077084693672 GT 1 -841198120128900092369649569037923185058.2227306947110316934727000331985930 0.0176096162514120199302679332846489 0.0898915098208877196175072696458802 1.0941914666003315383746388417963921 GT 1 -1619881479602728843404.4343984231977874743118734507517393 0.2262852025987497929470266306369617 0.0247222139209358070145780925407762 1.0250329397640542400511749491811800 GT 1 -352259043.2422478230598850131924021161745863 2.0157751246372995396105983573313860 0.0591450078274943359994220350415309 1.0609662509817461533955412583786804 GT 1 -3849344889242603569231583.0595943992787202805804240574396170 0.1632282774158192168253590757576096 0.0808076618206504255363514216764316 1.0842598877963535758829683672018953 GT 1 -47003067359320.4499763332752267093756855509992396 0.1561745197142807039650918322006526 0.0037450378211469504650750189831623 1.0037520680330496333679275724748713 GT 1 -373589485895315096.3222836598686519043924298777060901 2.8324226894928163446707235526850465 0.0050930320837403748976944164274816 1.0051060457765512665061888396515922 GT 1 -2573233191932617501.1789004485733200025672269925669851 0.8003422514647085028321904906334006 0.0498476747271768257621710925440798 1.0511329648485725423000841948510677 GT 1 -629466920417401962546883473.6928891198088258772722591412325001 0.6802005411877025166711658150989703 0.0130396642542876036291527684406649 1.0131254270373042289778182701952420 GT 1 -267461333558024071584845155219816.5333763679277482585687204336729182 0.1853589729305818625614327773997975 0.0779294823980814131438597009494694 1.0811335750509806908870171333692679 GT 1 -17937857214798268803323931082641290781657.7004182330789419573501440006915670 0.2254202812354003907132126732583793 0.0493611830049953452237735697096449 1.0506210814312037267639380393334033 GT 1 -670817800.1648887992339121888589224283794669 0.8957181563393401911133587695186146 0.0248837666225396043883703620353842 1.0251986013692085480771696126447564 GT 1 -3530077598469356086244413601375821.9915000421030255441000810476701811 0.6359847599600274591949735649209564 0.0325456323286645115069291783947081 1.0330870203880991457876610331142403 GT 1 -853228256468704165363506866.5407091422150007623711954596084828 0.1976576564018231572751464978859350 0.0757761174078418235669526724274708 1.0788009395120129531689699687022960 GT 1 -132072952878439031462650777307842003270453.4792421934453713143251845579015845 0.3685787983945042156003876013831560 0.0397272000373990807239815437642233 1.0405378682602347381967637742410415 GT 1 -772930180588508989940362330681798012097.0388888764861388285693598314000016 0.1113177222610926646538512324624880 0.0049311395438309317790206906396205 1.0049433377295907028855424817976959 GT 1 -2237926810492898929.4468212674245124344545164253606048 0.2345581801813446749511628952339320 0.0097443358941505983033185587674607 1.0097921226218424307385050476845183 GT 1 -3361802347.8989348715386334802991888594945113 3.0449737510185491465073497968591287 0.0044139926207645848206543865895253 1.0044237630478552690526855681954334 GT 1 -2734865537141612.5967065519199226162790505624822240 0.0553668853593608196910950416852508 0.0858294515311164602511883271714384 1.0897381292358018534823808388628077 GT 1 -520601413726091.3545320305454940420539580769806677 0.3861325991128244547235721114795304 0.0768530247004113659441706216017124 1.0799668206451421164605934370604078 GT 1 -58115240906774.8051036255241745533351753082291840 0.0119717343695397903305700118871949 0.0316573940698824205373633699816497 1.0321693225786363957485897716161291 GT 1 -2535069296719467053636.2012376200875905062263191040641361 1.0439623820795025334230887518625089 0.0101719587754264871124514146170890 1.0102240466731062967452367219663634 GT 1 -11777865962872145335064891949126733410879.9157963810156549529935093136040341 2.3719730643531573304140908902757835 0.0201787322636664449546760180878722 1.0203851038116328120654950700061922 GT 1 -1565701013532649470201686.2063037197540192733078093535795431 0.6924064483565395662472813820906035 0.0488513647682395073717089433078026 1.0500849350302257429821066938773629 GT 1 -317861541948390698752983333133178.8470568637969333867754579940302399 0.2651089697731275465609631896021176 0.0384910632823117039786345760834442 1.0392514194383186134709426116473880 GT 1 -8506448998633404218.9579618106976974427182021316873132 0.1315588455833989903651838531669647 0.0293211598089679099074869306279709 1.0297596170067166781811995719490710 GT 1 -287952131.1868015980660896053141171018451124 0.5833787428785339651495901726149207 0.0993227483884202010064703015566991 1.1046082968546976988995356337205432 GT 1 -38120171124098142659913449785591293004.9569201892550813555777904366135979 0.1841488918926473363235468062512757 0.0123994927945010559321539487035411 1.0124770079374302522666372004038134 GT 1 -7234055208689.3304030912179121519027369286964309 0.8077176368394236527502776839698059 0.0502342576463651274454546345590864 1.0515399117912965367927753524310518 GT 1 -624044618650951585597625593.9180805751664974077088405010827675 0.1076929361367142114219655610032898 0.0130776881608179865756456482222357 1.0131639540556977588001759864586937 GT 1 -23.7191220963961700181570461506895007 0.4401324492620774943063901114870992 0.0201733126187875128191441476087968 1.0203795725682635193750350855669467 GT 1 -6926117958432304483881438033343237099271088.8198373552989273138510034814633676 1.2570309760373296355759126896874434 0.0017580353047791497144726622162764 1.0017595824624166444305174997523191 GT 1 -295221601823695652075039.9555035411680493162358812091125240 0.7132805375701444599241128036379130 0.0383100200225362918952364151936554 1.0390631463910133438011755943896406 GT 1 -4923086578627954186895465575833859.4788477327974826207730767357009533 0.7403832933005015976324168514585866 0.0401508050107647029479679081556697 1.0409790954128340519691567147758219 GT 1 -252934354519859703.4858253953325604495210382552769958 0.2201252555699059321000145116280156 0.0595216931211913445032938451775100 1.0613666960266731843003129129182493 GT 1 -5416881738665866356934475063516549662764.0350891306577503980919447459429374 4.8280173772277552974575604082271103 0.0895857898060289026612298673607392 1.0938556069950984084264137390854547 LT 1 -7563.6286714189582795339166406899554475 1.2153737077356895263221819584543703 0.0374753389581756378883350652877339 1.0381955912867963524095816945360323 GT 1 -1051952328955419250534354814409793338540.3351718626280761222873623234759262 0.4842394218591839178240006748782082 0.0418414805451612556740057935823665 1.0427420455402484909406777585435594 GT 1 -1403267796482712298182062070508.7558262881853333677164047244939996 3.2832145670099812362345344721245722 0.0323127118487182789433456795349085 1.0328462933277620337687489225000483 GT 1 -778938158854261894001373549346236271547131.9779632937891203966079881322098588 0.2165269571548831760949914983726855 0.0020550265773905855755936893162818 1.0020571410418578983320956361449303 GT 1 -33529296431314413798702.9221755962845657644194667690765758 0.3281042001380152753785480864646384 0.0360490826335895291788417169458836 1.0367149012628442299046608988093306 GT 1 -35231870748334149010897482289048211453.6941131492908699752769511195738810 0.3521929224351734271207838788968277 0.0470568030430936972478163514114027 1.0481999815567052503314798978594813 GT 1 -37418841.3896869351344254323595941593334029 1.1035881329300532187526397591751600 0.0409327559128423955963311969202502 1.0417940875922077815317155472781797 GT 1 -915543.6323952362072250699487219512423662 0.9527022069086209685085099519772966 0.0435366150575674153481581066513167 1.0445127710829084716345033945723670 GT 1 -8446837734.9443203099239708657764301301149138 0.5039260449620953404893007340249017 0.0916038611461542199429933517433318 1.0960747192509099231847168655552580 GT 1 -37156265.4385296876486761825738663581463800 0.4042744995861349787054855254702215 0.0783422926064679438604536834844979 1.0815813744714031411850645091160086 GT 1 -1428062008410521826201497821585470093155378.6400476223632522365936261812455643 0.5792530816864668873574075687993519 0.0362720239705912460560958981088362 1.0369462067346834418335923065191482 GT 1 -270.5659602053490756783814026169753147 1.5308538550371624982299967691545267 0.0016212515519958381266445199949095 1.0016225672024858130583010615625241 GT 1 -11090106226445794993056156984629427715.1172947291078949647898174701639703 1.0302596701407647418999250280596157 0.0874150162687510634030832613904823 1.0914740650059224626402551126634478 GT 1 -2545983534.8073653226622312206905857276150189 1.6624124234926308712680371439155323 0.0724506263329947745513460664288811 1.0752092528532195488470903408794124 GT 1 -1879482015019963926008788920.8235242234684774912726799551374715 0.3203493116015089851644887840713953 0.0028588810656149948921528360182093 1.0028629754715637287843316755853091 GT 1 -1049.5027746195618257129490922050831212 0.0375015898533926242144871235907441 0.0373798077569333953203098241434227 1.0380963455587072168912622406445162 GT 1 -507046655953900788320201462672.0627776271016896931418261596173860 1.6255453889553077390734472110449249 0.0823444139313575585648026830868883 1.0859331373331997316343327461919329 GT 1 -600876673.9279600300291837090244689810840152 0.6675699064252426752672856419236261 0.0908040836029864615745190492813735 1.0951946784381495782949670042297922 GT 1 -3048875102182553134106887195064983.3600456341880179177739057263128211 0.2623746346745638766283439527225515 0.0753505206635560691545758565262144 1.0783405545439921468725684692389305 GT 1 -2127033044633755332344629870800.2716240216107850594417648821382364 0.6178736134519625748416016161705618 0.0890393253872696161918700142460262 1.0932555499286320146807193469118351 GT 1 -7100719712864950178364457817787612334728819.9566922834298470779129955596534908 0.3143570837631142524940623096643721 0.0066685259478615337117616932703566 1.0066908599121405012248380772046667 GT 1 -55551161012604289028395351851012337594.9552751372270830598830145705344027 0.3009357758205888537048008393798821 0.0800927038657124454056577606624072 1.0834823790876185077951353485000160 GT 1 -116306642.5268512023825258959824712750112930 2.8892115907572576005917654554671673 0.0588840777715935644496836024715366 1.0625305312398186586781945540088536 LT 2 -25119361008063044.9256288256994639704642903254470098 0.0347660274481109345406110881376761 0.0101499542636039049016279572344879 1.0102018162792170883904422245354134 GT 1 -5370536851792300.9799191048514752271360347399279881 0.0339486297356138360954630054566765 0.0485538790845633444024420824860955 1.0497722192665148537996273993088168 GT 1 -171540437601201466907282598729147665143.6795178215033659785787012848313898 0.6142207783903452119016841417721733 0.0809002161731218193238122921496625 1.0843605838189732999327667198103418 GT 1 -7029782098105167675161769811940568123909.3659727706278059098872791026391410 0.8409026179270762759047616497329353 0.0288840986369762926296533886464254 1.0293094549272555401926336285461821 GT 1 -291962975414764624573871924296629458.2345984090530741601505748754730422 3.2158587049005582840334237863892413 0.0927715768472663858707775573917127 1.0973610158637142516126751804312524 LT 1 -164949013821986598877262388.8619604541977278518178622420667866 0.0484778702362604610434348388505124 0.0339042259595690043009310576105772 1.0344923047147664365561758964611486 GT 1 -4704667503307714.2023371408324780115633350635167757 0.9785281084058606712099910211271187 0.0230318551229485419939333004934683 1.0233012325097520507671800920476278 GT 1 -17159031.2582692533675184570478770477556224 1.1968755569032702458090799966258692 0.0062170287339740289961920564297140 1.0062364349315150839194307441016835 GT 1 -4685609805138787046947429.7425705946003744428851093370854341 0.7169810997556577438834191333893982 0.0017623614012867739416037042552528 1.0017639161871393949120380522997889 GT 1 -385001703358427458.3828843433650167348639589854611644 0.6639051018418678908694588192163954 0.0264727652632488751000135169455625 1.0268294784577128521155861955922175 GT 1 -9658520861145257282946516.2371544397087516057568377528853339 0.1801769476620405904324535096530918 0.0958659364917239133861456922350949 1.1007776292443556889593659161304364 GT 1 -178928526.6194809372964221454437373965071813 0.2874210768985595819266767640346243 0.0583801083733005667305982346157203 1.0601535979122450750858434574451037 GT 1 -6813359.7831409261943781050231078538285523 1.1133466491703254133244740649535964 0.0287446951016109269797236647917330 1.0291659153863528160243161480495735 GT 1 -16095691009.5586587240000377543418980021192228 0.4902749557955613864130240273535051 0.0238306601637731920215049529504645 1.0241192036885504662317933997671459 GT 1 -455896369041508040508018660.6654718597578501162756104946698273 1.5890179687200068600852396028321183 0.0674801337148636702129218694100813 1.0698648233638764555037191750366647 GT 1 -166474131.8770522314726873870556855118468285 0.2644456633593323802127051203658592 0.0963021430049540736209343690650921 1.1012602034446983310569682079630405 GT 1 -5740367573577245567131488391.9669594291035056632812262106939869 1.5049087062590615552549011105085412 0.0089051123140234129155443965528904 1.0089449998049789533342107473059380 GT 1 -39364538.7927029704604867659064495535194695 1.4072214528215793310319295685134688 0.0151175984295925257978353124361258 1.0152330342061360562547367917797723 GT 1 -391587979531022820129052629.5786072723321526207165479160413690 0.5437070097173433908645193924328395 0.0172439085797048401759148313252346 1.0173943163576876882318736964843558 GT 1 -121821476.5260303302759190137102003341720597 0.1858421898611123486236537895178610 0.0857826111479286382104079973192120 1.0896868924252301297809245075644132 GT 1 -69304338920943470475897267967.2634912437218442965687134815561060 0.3351092129285053296653646928613997 0.0086605774853422141504455402472105 1.0086982982334179935833465209183057 GT 1 -4451254999145329079872345331.3370565780883538811007216976190652 0.5650744732276783227634326459148905 0.0885710855492261244908907556086220 1.0927416753420371618715944852669707 GT 1 -74518.0599266480694600801573337537454809 1.1505806736261752675171613922326780 0.0730064093282161538539240043754540 1.0758086274943546894626490830085111 GT 1 -26950468.0895720006381935764151359018311792 0.0752070254099374383845424806121439 0.0830459251171833325627585049119177 1.0866978898960437036323992639606660 GT 1 -2484583247261295150654098618114861.4507375418424117995635703731199070 1.6309496343756354099540421818285757 0.0425390078848639561707919084683163 1.0434702980625449820094312634266452 GT 1 -210568493415763.1577827005244264872407480327261308 0.5469664766661766545275693473306151 0.0490427868504037414393821766001821 1.0502862088793896650984662988221391 GT 1 -3337.3714237218221933729364214507720817 3.4809933115312643690410521636363079 0.0397526764752489560165147042934275 1.0405643990292069566127196420476605 LT 1 -101749290676545584010203628142534864305.4108225905872920042461803666809380 1.8076268099054503622890535444626439 0.0769168971259734905241081951900900 1.0800360129157509814707941180012430 GT 1 -552250595924.2150749566750533083775647130829309 0.6592280134926553527752219389565412 0.0138164734881276580154788643798651 1.0139128093349989563252437643590727 GT 1 -215055166096862.6233136283709180169183847795661943 2.0021479351973365846914599749563201 0.0895151440266145067000316649114897 1.0937780126014689606903036843136440 GT 1 -1352763691087771309955713667211021.4821182548435865131815488471580739 2.3252818806306910024476695241694740 0.0904007247994043265162606469328603 1.0947511333792464532542004424262119 GT 1 -1428058873499933803803658207964889.3184834689548237888211137031765199 0.0661651907695136446235255684935516 0.0494420080404167149554785389370130 1.0507061068584392222422322822911350 GT 1 -33524217813.2189118744223764191629787246091247 0.2795305161220436546662436915370175 0.0270983575422778363842837537271705 1.0274722887940167059253480205278380 GT 1 -808841707215434700058637516329961.6485052999687527122960836753389765 0.2286304419218475893240398613104505 0.0044322513891607719296940902081062 1.0044421029358139666072658036518639 GT 1 -6752942595567606.3256430832412816286657753814713243 0.7066334476641887423748852141218722 0.0775553648842408525506443572447000 1.0807279210031735033762888457231552 GT 1 -3000.9793339553883991711221310633698793 1.2159808147931954644813281095445624 0.0284160514235723819727047323515352 1.0288276025994505044783713974303903 GT 1 -442951886706808339211663697500.4539232662949604906203552329032639 0.3744461119223895242464932975780901 0.0958766781491870964439654050083120 1.1007895099174836201332350162894362 GT 1 -24056765886684264760706293340450.7703676948323164068866141430591927 1.7550899204854674784331388571695050 0.0644879191323312283402389501984630 1.0666612195430708445504552073745638 GT 1 -7904023118579827552835281576.5755387389118574779292893117162590 0.1202774015699530584092155188312125 0.0561419790569129675895720128361133 1.0577795256914226782077982854377654 GT 1 -86.7779631982375476229090805063084886 1.8153861034686631106592588524221183 0.0395702424813815277034998965080042 1.0403744306100316056796194603971220 GT 1 -35996718543620093208580348067056318.8535154550680938897672208082412209 0.4303405098159153278889667628486602 0.0525636380245813390193575119216903 1.0539955084232059775154091467529538 GT 1 -1699573332878279860834631793.8969991425338582389982983926703661 0.6656354484999952671732458761209847 0.0778735246686241939493606757178676 1.0810728898533702248285674258437436 GT 1 -4319507579199344041091402616038.6368899295185995294607874013090267 0.0086831480089268956875153842740491 0.0655942688405132405599548756728948 1.0678445334086980438508116227033878 GT 1 -648886123710879070325896461684530.7608101966887144447544211643083789 0.1855682364848230329852131929908826 0.0621630043748573352961809735271776 1.0641791237284055661179662181024674 GT 1 -3039814689521392116738.6216531856165872406587590887499691 0.1856341209454540577526077345222213 0.0432678057496970966307132577230730 1.0442317655102815482221934594838526 GT 1 -85836238511796837.7392346272434064125000010865494393 0.0346335369268122670339639562384891 0.0921095802681228300803044708508232 1.0966315907783095081040559222224256 GT 1 -2320049708.2558429887131266924790315562509608 0.3955193039290883797605255923488988 0.0039216854414932725419578683984131 1.0039293954138365368195201339030942 GT 1 -27322885038853592.2541837927229819683150579831246594 0.0098635474579786880006305965785412 0.0812583288750726252536340123487049 1.0847502939384379087132268929854465 GT 1 -188305026862899895749559.7638039321804317767190251558864823 3.7397089228136426436176050637391561 0.0673099626400019106462432152100899 1.0696823548116761385646313041960833 LT 1 -3189186041483103193745582125.6883040814589845268710145841611872 0.2153087198813570702153509146948786 0.0914199303070204265637197569528761 1.0958722610801349041231967634645059 GT 1 -18903429233381926587295132761.8890457969745756702600589444218076 3.0309055792953303761355513433253173 0.0317308676325437391213627671677908 1.0322452010433214849572305511444014 GT 1 -1175429013436086190.3736475740573894505328887505590712 0.3268577740775519790317752683007140 0.0693030976953781656719003043210219 1.0718216161460468616527094596046680 GT 1 -18747055401397698165.0948886692325911522063979275065477 0.1934109115329271938817931592987876 0.0052221196189424107272799785167270 1.0052358025422959740153460380185776 GT 1 -247466607338248145690061502747499957765.6553010735243909357356427318859335 3.0538352589381081489199933382222671 0.0300933496148604569164327790086720 1.0305554488321094398483246476550992 GT 1 -2302605066.3454472660530999820905641368454127 0.5310817781591694764284077872140594 0.0274258611728777232568997354457240 1.0278089710974862203290348161762454 GT 1 -9914286991229639091307114223110283.1767665944540824504260068104535697 0.0598284881144526845740102757920106 0.0437771429706070776484145543917200 1.0447642790501112945655777991868907 GT 1 -37374550340350548401244921571960308766.3803745832859527278212389829280618 0.0609899322784554648240972963767272 0.0526055683110541403525382671568348 1.0540397659755107483388436174037613 GT 1 -32294687359652146061164137476.3171785942752937955444427986562430 2.1107195688075096858047009589528785 0.0851596939128517022127842923899335 1.0890057578050552522474154553553544 GT 1 -3957000579539851190635318755114879293.2080333289174840254531935297761491 0.6113644644095782684801968107515493 0.0544945046983175169787054540648820 1.0560355788416227130159908313266333 GT 1 -3517561.9889548949907379464653414553335464 0.8565285583791826865659267084844511 0.0901393812258727480064017136868820 1.0944638573846566597049839519266678 GT 1 -111672299553524220625905352140901.6935428968640245306617556684133464 0.6584153003364436304145419296251901 0.0420499642245191128016514342365013 1.0429596570942614336621050273166504 GT 1 -2938061319497155198131372278319183859592085.9811597994942812581758196751961021 1.0893284889791123003817669383465830 0.0527450938781568346221187509483887 1.0541870497652553283205887810798225 GT 1 -238705307223440552246168918062.7753441184177004581064489055774950 0.1139735862065302352587220036041490 0.0641423859710339988615197460715736 1.0662919358401592993239657340841073 GT 1 -1482.0766720940634092567493417900987627 1.1576967128934456212151195800459663 0.0977183310849306572328690053746255 1.1028285361416509169738082340525111 GT 1 -37746380731375945346849704353569.8908232616886563823671261199037849 0.4575680737358778445477469622295180 0.0663326359630750438914566140657990 1.0686350454747531591008185239246440 GT 1 -181578182860722970.7440727229513357662807949989676932 1.0668615440670064072030705122127819 0.0586412469899938007265288321934095 1.0604309654958989976218057928828543 GT 1 -223033523871733706473.3776110652766705600688116175895102 2.8239580679487958681663663262035383 0.0460916306901073768021078181046042 1.0471876610882578281267612971000487 GT 1 -18823885022194626.8265778263751621104908623079068531 2.0529589016541028406673217874674534 0.0251691842381954505717334014200920 1.0254913453366102968468549676166690 GT 1 -536753961111476205194032264390.2131084859470190713457803297299112 0.6833514097894344803837254115946924 0.0401441408656522149534878136423885 1.0409721525284589757209820430873030 GT 1 -3138456167660730.9887003716788413109659230533629949 0.2697116260494522577671931927418747 0.0462081972949318634815089810469466 1.0473098675090356144216951856839780 GT 1 -8760.0645393196205696542796733575489005 0.3833051304763420010762448126027848 0.0770080337752359950248585326244817 1.0801347484990022454556104854136924 GT 1 -598042408927041375456427450246129.8433340577731841010285593658711073 0.1136838362763791480236400930908891 0.0985284401560396160748632073122587 1.1037267844304548302488145588610750 GT 1 -7005747872224166035154825447188080547714872.2455731505613561431412419753283141 0.3245302858472360151309291405974660 0.0419620673615162150169642039262199 1.0428679061391264499035509676975629 GT 1 -476825033344214390885.2939546532709066077276004145480546 1.1672114612144461896350400173383996 0.0135557877498305329550816813680172 1.0136485063094536868215355249642698 GT 1 -1747164832000463197544944.4481933134248809741147388104901101 2.9093428346307557615975984785810307 0.0276317837668118099382614308283173 1.0280207229719495081839399484207238 GT 1 -96701.7844964449701173258978771434835647 1.2741989090331623399852675075238654 0.0686401753939843801468719978910174 1.0711095837790184218525176058082961 GT 1 -37893405789343611609579687736123.0142711768647172882755878415324856 0.1611522062400313918174717399044282 0.0678634640392883580540765044826088 1.0702759772143800432230313166199709 GT 1 -8856110.7404218480788504954568593983627530 3.4457368886746025429345866789618679 0.0057569914316814547961208307898150 1.0057736267839653793974737449183221 GT 1 -198190876730335990423306.9628520136018726031117571884196237 1.9177926481858215116654895306626304 0.0908434730192851882394060964317646 1.0952380027303662389576572462088520 GT 1 -816791143889278607886424300002.2443524642318309297261429573844086 0.0686887035521048512974764304983383 0.0786229779336372151211254088318444 1.0818859648568719838668432575940064 GT 1 -294606964502103311842.6550412916444649382259214477157712 1.0158942497494820959607684476536933 0.0447771006526097546034789876293891 1.0458105632775226572434687823570660 GT 1 -405900992767791895042757279839400.1725553909261545646168871895433953 1.0018974774295277257651651613665822 0.0920037408423790039344950699071267 1.0965150202597919059027463342624345 GT 1 -6114754549985448431924314777.3604695577838333027257083180071448 0.4514812071396567397866784799708218 0.0018182563718956769830213993740803 1.0018199114065017336987366416033495 GT 1 -166626748354933355714087.7635352473535739208613299143467780 0.5454132702534959265095332200755623 0.0131538275513859118976703821295747 1.0132411053439180347686937015404140 GT 1 -23419953525326.0253022891207732394185418858214275 1.1558086806590519253343296260775336 0.0018184414479578476381677362341079 1.0018200968197098091444238195277478 GT 1 -561162295565634912311551573.7040993052259918852572991621594652 0.2003420671826493793166420707836934 0.0585297315146507621298785948967700 1.0603125102626300014849574356431743 GT 1 -103604916930674737555652917507929.4790175498138675131846369666849307 0.6553570681733098324000882823548179 0.0896760116427680998497783807082178 1.0939547116735028413835150610718115 GT 1 -300231639572.7866731407771089898604065904934831 0.5879202374831607279500772153502832 0.0675570188341940357152568702470384 1.0699472755365607649065149347965348 GT 1 -333283389371431.3190551367625061141428093973748949 0.1823176010657843520384144434149411 0.0011855047841181102786499059934590 1.0011862080507869724606276444083045 GT 1 -84116097118535993832778.5344514032990243318480767985060056 0.3351372943488400686082000205587286 0.0476253930739204178628867892313196 1.0487968269192445100577930141658565 GT 1 -355944445941218027687311726147.6671766870949615411113504192167974 1.6008056225998680221050824187595390 0.0421165237487788810775732655940085 1.0430291407146999716097769044159077 GT 1 -1.4356293393652952551630244919436224 1.1084306733190774202743679669654664 0.0533808073167247659851841365803030 1.0548583863264818319156139853228134 GT 1 -387377771387453632432278389.7562476925850591362157675632447001 0.1259197554195717102166957962691337 0.0727252292387037885326744325253277 1.0755053487483912384908668559721970 GT 1 -599693145.3156375867458499470068116433283526 0.3879938641703537228299038850741869 0.0406240718890812048542957465370614 1.0414722807950103998770093961194978 GT 1 -3960400764223499226475501395479063067.2842331386521581143671594488824376 2.0811030903422528931429382690656098 0.0601939605817193659961891133646371 1.0620817660537119629056155889224133 GT 1 -29059413149539002666713510764753955.6469450270320594256566994890958579 1.1910527703533632238214449254926251 0.0137609452696529147154837564917088 1.0138565047489356172671516286199227 GT 1 -23685664263114989470947511643961.6121899950285910372236337628650262 0.1953487960024669757445855636709610 0.0272688697225007347629305277682391 1.0276475656325330792608708082321212 GT 1 -61967.4314895192649966063382461109110384 0.8104146414714394497978264020794284 0.0411563145064569003799286322025917 1.0420272147840694828929477110716197 GT 1 -141079261974218.5862314062619571602570526527736216 0.5476588871307684067559439104870361 0.0938145281896861250006566847956989 1.0985112788679971195895867606517204 GT 1 -5322896.0191560062187549154969359991210925 0.2528095491488429407654706997093604 0.0324690546330019196479082495904588 1.0330078697142551902148807454665928 GT 1 -5700056024969046613432172729150204479862.5677358993890596930472057931232328 1.4286889657870512405292458067449097 0.0904011110177625471731880185208330 1.0947515579820916239433646725923368 GT 1 -5093883841.7761813099676977355759837122024531 0.5926359423738184486996421972010464 0.0585873778036518444618158499667087 1.0603737422057363758286661680474249 GT 1 -271853408256764621411813447091482317.1436734385963634687214225296829697 0.6478812746466240437946269769862217 0.0817481962202665333842590700984733 1.0852836299175775380367163396571837 GT 1 -3333697285921299754783611367192192536094394.6258799177772568774561182828940562 1.0475509231668867492174613368927016 0.0681539024988672461723947549395310 1.0705876093687955182874668417461081 GT 1 -235169642961335611229723994545083008692.5201911887333983225598232916192617 0.6711359883721814781173738911798503 0.0705176031783961107873894767566568 1.0731274103306820487508994832290629 GT 1 -13971789822466711126326896513.9752263273729045746889518017801591 0.0355879698402220775484808748802791 0.0082057697221475572374472403639751 1.0082396223690576657178249225994263 GT 1 -10277079485713409914508.3753206749029688568701565165837651 0.7071726694322099045494177553951610 0.0831400040506638598304612570357657 1.0868004945548904669229958362594660 GT 1 -61175863620810653630.2281755343226895326036871673361485 1.7198845342093731443069696118878452 0.0617958798130635398171460779061040 1.0637877415104084673978368860136923 GT 1 -48523788898043650581669773309929951525464.1919345339789695527883709806922145 0.0171549499714850105800845834118186 0.0699815369665620338739086358773400 1.0725508403077713048927917016231450 GT 1 -110538243.1770736794747373540848706078619127 0.0712799518712644529516742869943839 0.0712847733809193186534904489843866 1.0739531247072735118519481041017991 GT 1 -5685362509498347031198083160524540852843.2436895087104947792477879717692955 0.1445082797392629634748971220033995 0.0707790223315905496197246684918446 1.0734087022877592801207303420191373 GT 1 -718915970051.7993052414007632042073229725550948 0.2956435539903635667639113809966456 0.0144022946568769574752012979979263 1.0145070143882998945352104342979189 GT 1 -22721656419195405517350228663985892378342440.3718919382719186417013170283726763 1.2392532214291186064836349005185642 0.0406843159486482023767831558462406 1.0415350778169027330370903641862515 GT 1 -5190272443660327652945849640785030610.7298870911107088193807746668770971 0.4955313362056418308601383480540985 0.0090218854214722108061888264454732 1.0090628290750921019081773039474357 GT 1 -506346869352710349344935251.1474665931699984954838922249726383 0.1416750404623654474294649624052253 0.0000469162501597475407532515213297 1.0000469173507614362707860112155582 GT 1 -6971.4266159937187621772740012654138885 0.8994191416142671692240773921830091 0.0522818651830901849998854607647579 1.0536981470797963953591385157367512 GT 1 -5163385538210562763.0201626631936330917911776767583442 2.8607960387044734868002330627537286 0.0008106854241022206028541142303424 1.0008110142072357855114979703347464 GT 1 -22369331585061832875515077575.3588745299149440861473590083286381 1.4671455117779045583349459751917203 0.0641440356080289803785463250085509 1.0662936985425449641789504982141711 GT 1 -587958547615371704479606295043811905980832.4200478984051555810548592814815732 0.3621918372087799564275890808781172 0.0751622104454095188138969463782295 1.0781369194912240488171027931399372 GT 1 -3094041713816760437194373344402581384429201.8121200015398540884577696677615507 1.2758766555086214712293584116361559 0.0252618307520303973174741913057121 1.0255863884098403763257094131930532 GT 1 -7800595869921333806955.0116538338361187954880411419898470 0.8851970118246919588260555470930040 0.0160943747384601093915053501060146 1.0162252958165263546765213542499293 GT 1 -2424064273290154218679458676147131594636918.8973042373365304935088325625733854 0.8454125696486412110743184022095281 0.0177778229356939129775575458508639 1.0179377466619223563516906057483800 GT 1 -69633035112890450921538754047983157661.6495907568548415475531892166220040 2.0492458474468328910136726349841259 0.0630008364934664451635905829802936 1.0650728894799366670618436928987106 GT 1 -42367589901920168525359225203821786863569.7423436136038537933670844097371168 0.2107575236532142551254528168216398 0.0196286108547031917901559155991102 1.0198238105923414025266990495365168 GT 1 -159978946898229103208714484447.0069465991352425802669544441022342 0.4286904989015287190121773597762120 0.0528858300029758827473734612887122 1.0543356334038420655646261904994096 GT 1 -40255528753076165488368176220.5780010972815717183953381781418574 1.9660595137822592092833752343148609 0.0531433065018084504099761581430181 1.0546075240705691787068760831858040 GT 1 -1849710.1110675755663505987394883754798031 0.1750760427975443199499567734624598 0.0844537596046670613489425349602004 1.0882344077920837204048005015124259 GT 1 -159911741700.8122723909589471071547394604141677 0.3313830654198732140403172939318624 0.0374252507636582310039476909879402 1.0381435542914481776109714718129640 GT 1 -2037019472589678004066107211311912953203902.6274726214295163563037316038131005 0.6410412001409415181097842884500431 0.0734323983063341546669301796376912 1.0762682713273962591816222148786844 GT 1 -626933662470286555.9765781899053070393997104744556585 0.3406809992643842699304124760307141 0.0735462156914608666817139644619738 1.0763911165207972930014751816127673 GT 1 -282614061181700278250923420285583.8101473350926543944300463694736461 0.1173726485370794439103234933474852 0.0096759371186557608166615963324401 1.0097230531725392453583246219256850 GT 1 -4251261635485015988611172900.6246608614765590909463963383549892 0.0218601522651554338598034896799785 0.0502231870748564496562795644537812 1.0515282557518168859635282520206661 GT 1 -152330607320355514.5861229455395912411736000782767546 0.4554517475140958925150479737929866 0.0688731139052543397485022873336344 1.0713597208792148241602481160638974 GT 1 -867.1467542825257391530203353463248485 3.1121518042658386144669570910477938 0.0341121079040948273053367989952395 1.0347075052353213822471219638759032 GT 1 -967434299391682451133.3652221516114287633178960070823669 1.4637558812024679967054656764806364 0.0117740587873622105937905461984049 1.0118439219409056503889825853070153 GT 1 -4325607642835290280.2881590286485746586683065928162547 0.2534452635723971964023615191139374 0.0990593736762339209123976570307162 1.1043159210770280275751363942703024 GT 1 -2014716.2413012223025055557533729009868295 3.6673542807243579615740026519435570 0.0344030428571781385345465373628062 1.0350087604643212781604648863173940 LT 1 -11868535749880400042.2477033005463609907830958247988548 0.9858828713948712706027632554674943 0.0008359847590383203236537622690423 1.0008363343891675462358738026668123 GT 1 -50716022997973635635171052311361904270503.3093986407444481622620188284843949 1.1777656964640830281104174965211593 0.0537132353857868013843319772776045 1.0552096220243758632748848241682701 GT 1 -537629432189726675571945630407818166.3809725635110885793627129627939835 0.1332208786586579032403948088038643 0.0189665113266592647938935876121624 1.0191486827177448089312432838685463 GT 1 -10.2592621295468900496025651954411066 4.2431062021057924883838041003679404 0.0144534895465608455529623610642139 1.0146649403648668749261102204123213 LT 2 -14897418588197721117369963.2689421930905468527102589709909425 0.8039149530183712916829400693690545 0.0692437829365411962823950128298763 1.0717578866239440641500000429950554 GT 1 -6966904191413219974.3571293905696010301810358780921928 1.4469735016014201175635695319766104 0.0015384790017948359196415318869889 1.0015396636758343140390675671028684 GT 1 -2175120559061555882914417.0213428357043642538491269855248030 0.3424969276289159398050806251493989 0.0406127770376927092272898156255838 1.0414605077407047566687074591381183 GT 1 -3384923477856952391783679255488722.1421732806878718757839626124917957 0.6504021763339703900001234631079451 0.0715838175260734242759820900875590 1.0742751742362131897853383951489557 GT 1 -368.4311523997276709662804239710153340 0.6401650444371981683750841604819296 0.0942964220327046198614241840997509 1.0990432031096498107121834542372099 GT 1 -48691746815322452750809829714449.0427160182835364261100670201173183 0.1000915162105529117518141032087767 0.0990749458518221900569398144894939 1.1043332055791498263259322364107375 GT 1 -18912712777662081409814.8848044041582031433313404034730962 2.3961246583137154851892568842903826 0.0996909833058391654688206850716355 1.1105315312397599465173651725223738 LT 2 -16271755107579302470.8800313603467658167854900977191158 0.1320799440323365729084261602370240 0.0844649437738687499754927611328249 1.0882466237097739547678993421594082 GT 1 -35952021566900004380119027.9580668386569109978159388621714194 2.3332767243288388368080772139924907 0.0584776519062392615814902911176457 1.0602571944765071703205185479646303 GT 1 -1648885.3654784530979080432838897330576313 0.1725476285214317704131475798261756 0.0174959230648059693431510422822629 1.0176507856949697833582792796565736 GT 1 -36401902179250238795.0312851867040644460214818394263891 0.3523643787887238210348144135846623 0.0494190189520548030585541946177385 1.0506819223157104341855182028974407 GT 1 -58198589539454362999108617047.2070543297861269026051019364970523 2.9307132347959233218203070273082236 0.0626662776093783006802230371387649 1.0647158996515465296096817093605579 LT 1 -13573050608699731976554844.3682360808513774790303959069554993 0.0481803382171971903371913734114006 0.0545890952566022688944670427668001 1.0561356261608605142435514681396636 GT 1 -2308868069700807700456366.9584329644125536740967635772641313 0.3167670160409018879334492574070360 0.0063840417182762503047478320760031 1.0064045068593120638323943549848304 GT 1 -569009615.2687575706135172871387512878395702 0.0106043086009329453256902012027473 0.0573030074213246786754316267656221 1.0590103708061084163895507079166262 GT 1 -102.4129021651827883319734381291362448 1.9380164300044946842521603405403017 0.0583812882470864630980662990182388 1.0601548509385836167340545854595775 GT 1 -2795483743383265912012204786.4402333280423075318295933287529620 1.3750489829898970620394383777225551 0.0507606947146287081086346416223308 1.0520943464226352513651140181494631 GT 1 -12449501129108257058.4302881023590229340405594307220519 0.4019408739731986941093575287773902 0.0128823184096511898597414887189399 1.0129660150550139301749885093081013 GT 1 -26987731238102618371087889.5302346832784363781578748069523569 0.2916047535510617908650415595720572 0.0285357298298405768385001901710072 1.0289507888438935150727740464463482 GT 1 -577597430450996.7874258716680398557159267230108648 0.0590018287286777989178487097017807 0.0320482964167500048494200437612612 1.0325730859427671233541292386664789 GT 1 -244790179006701791.4299356555710249477935044999986292 1.1636799858371111578236502243516470 0.0505848672774343913646389514624266 1.0519091337434060361855052660124085 GT 1 -8588176947021746699730579345613.9407610871685330062373773352000281 0.7164103135993352797567685274872720 0.0256591311661628075892424479716078 1.0259940685622328914056274083068244 GT 1 -407471139909674.7930799699655422788676897440465539 1.1079285592894896452503861197719421 0.0512570496531398836865586808618310 1.0526173807643459728409128880550008 GT 1 -636987658837322215495758049010948604433.1991422814130926425899708847738525 1.4790452060455328946012823220061373 0.0281798446219235348281802615020546 1.0285845169721933226121500950522150 GT 1 -358369882373290345673192696.2559465123488357912243597648764878 0.0155825941832125055696931938056144 0.0211877719493015086676045169709941 1.0214154545914737249397613993532665 GT 1 -10699414252.4727009557613252810198440953482520 0.3426644193026186868602098694567868 0.0704283742727874066545620045354107 1.0730314164492832846593230680062790 GT 1 -1601118631332133499079174159.5572461721071917572377564227667404 0.8728236598435352398842337056685155 0.0889377598162280713197299932788621 1.0931440633273143937495562247891292 GT 1 -1710754539713205387097.9269367888361010391778936504302441 0.7361958937361589496304331308247307 0.0821238409661423589737534299753913 1.0856928004751034891130654644114503 GT 1 -88472433624698847478525120052.8151687867112411259159590943924788 1.9511337976817026350014866340397807 0.0570496750772058354204755004149029 1.0587416754426735698778148437321756 GT 1 -2344457175358364.2499519153527937969312089105369293 0.8906340231417334764382078065602325 0.0637950969381204672421695591323156 1.0659209129349657920991025562335558 GT 1 -801354939857603046155599382.2015590769813588999449860356881243 2.9333749166503716892203665706442778 0.0532480805300854604778811667815684 1.0562425297454977717981496122019351 LT 3 -363296491245870.4548095194155126882580042780522519 1.7464138425309417739226176878735420 0.0134667914420215817116940205582900 1.0135582910774589305987054814109127 GT 1 -42339639121322621500.5155034292046502207880868878805081 0.3627903391530845541796697002649140 0.0751647651271758544640827834529635 1.0781396817975696561470407633780027 GT 1 -373714798320679293036724622388555342.0911239628358755129479405929617378 1.6148843930487737200338032532924445 0.0087020685926692910811922083879274 1.0087401526928339402991092783663857 GT 1 -109120366705995811106445892315470263358576.0757152713979891707498495307143227 0.7091543502196680799386165843384132 0.0346372250028550923126868509642691 1.0352513156485928430725046369281159 GT 1 -60116407829213654133.1546117718023652347222272674464773 0.4948451136178152749127697270024537 0.0606195831742981644623231445878033 1.0625347520769377013282156411864025 GT 1 -5173492059.2436214766223810159607719325625241 0.2155681341333883601504430802930697 0.0055839865035950336150092218870027 1.0055996352383023647482424699960067 GT 1 -3091.3536571844809370906172040921734324 0.2805266777922446891929104385543015 0.0633343993285576641726873983365745 1.0654289433962961358840717692177165 GT 1 -123922355240629114733111332963230321609512.3053461749657638065248956131733328 0.0015889977642440204298808697599837 0.0768655032079840943926074711494148 1.0799803380938751981801664051495924 GT 1 -3792.3096450518263870416138890950296996 0.8258865150826417603118086620674010 0.0067733986004874041902231233804100 1.0067964421792981836275794734419136 GT 1 -23256893529229957685016400.6553603108604047217475689674025616 1.6095631027282001728365141320196662 0.0630585040583861005635891534980049 1.0651344363220387447070609456300324 GT 1 -11053.3469855601910716322283023444004053 0.0286429239708924693848582248699367 0.0174363129617973575570923103613192 1.0175901159266088554205459367589070 GT 1 -61633377253774919821514042997.3642036171405968492438012973222913 0.9915822795946771300769256183714385 0.0629048171956546309624004982320504 1.0649704194008983899464357951101602 GT 1 -335.8965400665541110269398119305521483 0.1009933063752667707160504559947285 0.0612955009424504823181307805093021 1.0632545467908177571188373760482305 GT 1 -201650022.2522048625948944832068405061609807 2.2101302545216696991697656494667314 0.0066682260341419002933423093174169 1.0066905579850575568647857783987993 GT 1 -58272067570964504.7526812093824466389510552266159356 1.5740058671896665535179757589063144 0.0329003758055831188387754677048177 1.0334537648494957570324171348962235 GT 1 -42597479709237372193.0278872380834856364651370908743326 0.0454802993939573347608393840500470 0.0091932395661652190080562168579189 1.0092357581828682025888094361788235 GT 1 -897157388837057946283427706.0608188457596738210257805158540490 1.6563116039830436742259485532277008 0.0732674673141438509693077049696254 1.0760902850535422105829651246506271 GT 1 -4.6713509965195288563758466991065054 0.5667801293515154407934972488942938 0.0579116712117241656733326167839396 1.0596562415104883429103314337290933 GT 1 -10222743.2243852211513242113927404204797763 1.1277269839458060146026035501279373 0.0685273173232860816242671209407460 1.0709884155361461720017600136025268 GT 1 -1813482702179939.7018039684630972205434857642852783 1.0945096981551641334706893752773928 0.0336375871588795233155612517860999 1.0342163465551626092686244486878751 GT 1 -42556400171740145382905846970171993970.0464644526286302638844555687532437 0.2931084728484196242341319721616295 0.0320947220952352771400344009832471 1.0326210498976854118974745504775464 GT 1 -42754681687707195108.2497279578880949078577500284939964 0.4404374395490876555297386996128323 0.0846710191606564385317908309308899 1.0884717364253945421116654542045160 GT 1 -547890468575991728877376080155.3235743587107461436458891748649222 0.8804842925123824489125946901517042 0.0457491900482166061854979959404653 1.0468287385735234706533843636240578 GT 1 -771933914119453999551.8129138656928160469361971862712094 2.0766510503502000298332113624773005 0.0358307389609605771150972396982342 1.0364884177936002685935941015726474 GT 1 -75410719242116035276583806730342.9315052410438825413102405172793479 1.8356861459377972409662208399032313 0.0088344534792315290319116305953706 1.0088737086329386997269654051164610 GT 1 -33.2993685522849933114739913739998760 0.4109379723576786640670139005889853 0.0253665284745322730378583759815078 1.0256938053029690830267012201670345 GT 1 -84649747263237431219006470843140071944314.2876422152596239075579892619204017 0.4533185215753780643098899548845563 0.0749723969322490248750594393295291 1.0779317007606248681101648185907704 GT 1 -1767429156599845.9927514182754512162926142828532269 1.3796193575389769445021093786021446 0.0824794864491011716881153655321105 1.0860803412097274638898169343444698 GT 1 -125867003897132575719864914367420433670971.9630217589425890658644687519829083 1.9447746386363243617141927531207733 0.0003599879407247717421841117335960 1.0003600527519381422302285949780621 GT 1 -468557.9946784074401156575160735040096746 0.0767791326987523633338849672334847 0.0061341407514215688865402262338579 1.0061530318863413062230813184903689 GT 1 -365628508435064303407628137298601456526510.9105775954969773250446250672572424 0.1442610690430200341510109179504400 0.0104407871393088918194038223535563 1.0104956745367094933867165403838598 GT 1 -1019091930573989028659410807411003.4376293934517280942293180456537554 0.2182487116195568987718405463549690 0.0561300754653567680631346261504926 1.0577669141373214914084759527303247 GT 1 -12282222698915456642416261606768342567143400.3767004292046994040107224858587036 1.4737544415755134816462365832069123 0.0499602260449256926386261169837217 1.0512514279428315109840362899066143 GT 1 -264739553323.9883022032355409100037626089531487 0.0283992214413330684578450052780461 0.0508378548968026297311631999480819 1.0521756360594511291581104101877520 GT 1 -39739740343760014642248855045814336.2118837326921758429943165998250003 3.9195690785663922056477228303219109 0.0938456946953815013807746385190467 1.0985456725353347782153447566185168 LT 1 -4325846691567486177503031409861622.7160034291122472559467269969459225 0.3680295195594367247906776720295672 0.0086111981362997783661885253388171 1.0086484887351261873571672073183251 GT 1 -43773040319446092245252963104.1514870815979497463623272025799806 0.4253587166820009677019230093283971 0.0171778246322781485943035647110652 1.0173270751304435758363572213867852 GT 1 -712365939532543191336342734542115058745474.8762591292392046682229697008115222 0.0177568745191911050609629548587964 0.0162519767348408503985641673147963 1.0163854886399287614877960621477988 GT 1 -2431529437742370946703263.0499159963509666006258285913273007 0.0726008265472647161031739906361207 0.0413674641263941607088537087398506 1.0422474518002450313240686747494365 GT 1 -47266082802882293800328671.5658145203616401509606412036185716 0.4752227182245039098549895448541280 0.0311628573742167506388478524207192 1.0316587486819419355911787611933540 GT 1 -250536477725415239327911867678561266071478.9073538883614306752709366983298130 2.4706848130792075865017795337572645 0.0464334448991892514562307507768576 1.0475460555377641185998150649615875 GT 1 -77542890080709734349611.1772302777188410432431879700072287 0.3856773122939258519549831595731989 0.0493000842000179662152796033542449 1.0505568121834946727704632424864646 GT 1 -4.3819850542609018738858227879457882 0.2867480102839262483505865588137383 0.0224098845181779579552221544170740 1.0226648016206055818192197010349337 GT 1 -14081135116642923199831312.9595894439457586834705184169290705 0.3552610765832852164264380516371323 0.0806995567998555350599995977705513 1.0841422860064369816397307991506179 GT 1 -238251619223628069893903149022777744.4321586919795504757285301658865037 0.0070337119480467240830726359293923 0.0506661310693724700904270803874211 1.0519947309359964648100022132702021 GT 1 -625746762448867459916896568522081440.8440140486407192362761432238402001 0.9072947067757669912402931572316912 0.0247241674718456432526923576195222 1.0250349428373265675383314580519620 GT 1 -1866219841051361493800.0916137720888335083287788652137013 0.8160989810520269022014575752579266 0.0026667383826302903110998163485434 1.0026703004635990039054951338868335 GT 1 -10241844550337841984468984.7339256060989981728324314595024426 0.5865197478667518373694953060156519 0.0012584429930040569333761474632068 1.0012592354973381679704085308482166 GT 1 -20166459153759515373962185946788321.3628915477167434802928822251038924 0.0777419050310760803470553771583513 0.0341165376892459935979051352995130 1.0347120914770016608733698145032827 GT 1 -15324785133193100.1793688244951695431103204551549695 0.0742951906133137376447718694601230 0.0980286116211214924088865145855907 1.1031724796234094837230871595907570 GT 1 -981227697191056.0865096382389735394853473577188439 0.0013519306123763304220793757505040 0.0994037065389464282935303626521973 1.1046981867559869291439692191820897 GT 1 -112678589032722937789666632884957376631.9471166287833473828920067662155535 1.0781729597625621194480884497439094 0.0946098938104147932289990297612111 1.0993893715973240962798148392894132 GT 1 -14627127720777191587264308469397.6052445993299273280788677039472850 0.6680337628188799901804435378242079 0.0362646489235031161914203539554070 1.0369385541407435721492827045416826 GT 1 -123204158.9762953273646734284362202849849390 1.0650116684691857923873101337632023 0.0431247332485723710996787844814012 1.0440822337966913233273968004985352 GT 1 -6494604834986414443031606.3512085869775561226781394576558821 0.2703870231186702569701478243266185 0.0866968705896892159954275473707932 1.0906874388036657874771308010117416 GT 1 -1233072464013267421329105870116896.8060008670284820343657446021871625 1.9475364837048952654499888910567686 0.0975156876537757239134151709153306 1.1026039713680342178232559978257001 GT 1 -5116704320092934778545867627893491.6836157045365390079812261769453845 0.0216940473661084701024706513768345 0.0345819867007426309266762873037443 1.0351940970327226583998278951905470 GT 1 -10053180022779.2822071136525806793547349559201814 0.4381788175690762543269623285197439 0.0765853521842267510695788348464032 1.0796769061199958036170489642979597 GT 1 -84786897207069.0614181369803103725155118740373970 0.1931604066743016842477653828842294 0.0833214635645451993238645083547876 1.0869984282347872896337489189442461 GT 1 -2941648962837876524848638.6957383779717507303742734753137562 2.4875924321784263615374947534642038 0.0669315805271332438278974735439317 1.0692767480551633028474731608050633 GT 1 -34779119427313257985016721.6742884529039074737670467807052249 0.8136030393472155249010857014507773 0.0788710649618173443619051755346729 1.0821552579125853438426775364001694 GT 1 -1495553709100640117247657.8905797029238075266498458328710676 0.9899927178156493088119088804755685 0.0750905168479879981374432892280830 1.0780594023098065931987388303391608 GT 1 -1297781986983630137324337772361.9277671090160097184463950604055861 0.0043589951834055393256287923278797 0.0434263595455469955121383541632783 1.0443975035677702086214386467082926 GT 1 -1420423192743871744766062059210385216534.1359886752697258585613236963726388 0.0628741379564700144402505695078596 0.0799576260950295396720329333246452 1.0833355514073562590936836487709286 GT 1 -68096457429020715536348201148395094367739.6106243668609564798859810208151989 0.1096858090269456359428122017257999 0.0245780552550880154595477799053869 1.0248851377586176238000320040839411 GT 1 -90455869767531519862341753340392467694.0219631699883487018470239077742617 2.3086739566002962618760925045579615 0.0153998075949837071756016411279772 1.0155196162436579092536215318957931 GT 1 -19389707.8280237552993306571478473737085227 0.1608364972957771850247610659024557 0.0290582910745515938288917768303282 1.0294888444954327290942060149202068 GT 1 -31060971472377886844714612.9281748085683752521356179952236521 0.0473214513906190168448645265161828 0.0973900601939591689838015151905989 1.1024647792345823540343134459910824 GT 1 -784105879937775235885730491382021.2766985584238336191662559311544606 0.6179164910622047703160228336444946 0.0624833890376935308632014665078721 1.0645208029347458873365505463776576 GT 1 -17067333484424285092178.7889218005079556347235071344632831 3.3764872744715835337978870788619455 0.0589511240573404656170413044972041 1.0607602003177087485010186100262337 LT 1 -21759518928742131596131485.0321122228014770197377876573229603 0.0510316486184378940548352526638385 0.0712869165758380419999586531740605 1.0739554324086336514549122191683743 GT 1 -17762060479214970169110205157316218907550.9413380224678529155599751307100117 0.0692933831483959716549749469312073 0.0672761298547445465765955030022480 1.0696460810548171895427509455300600 GT 1 -2308074266702734.0818864111092396210166547756026250 0.0417536071023161641961032141583987 0.0418911125105613563701735976927841 1.0427938462077663329214307252910605 GT 1 -595758.2639790524955694025589167225939983 1.3171634619725847692183234968659513 0.0499268527905048628817023091055237 1.0512163002890457483879189435563846 GT 1 -2216723305865957043998386292020738102.3237818194218597379244374584070499 0.4299437376081669542061626880311867 0.0101661857872866916206732166061778 1.0102182143759147779817693286720376 GT 1 -20126842924.2294123047329995723195876050466163 0.5104691319570256645243042355906456 0.0209801297084414623791241450477990 1.0212033401391523116343525711680840 GT 1 -1788320562150979510081689778786245849.1397453335988916331533876130433438 0.0537461510539960348572438412781256 0.0346517917639954216013443302709473 1.0352664051790995917643065406817284 GT 1 -269526016288726881545979354687048148601507.7324222182540430816314489041571903 2.0640451483981215696598415535519233 0.0252735179406325438294223899841219 1.0255983785616950908425190894360301 GT 1 -4238148023672309650697.6728022444743957739930352866864048 2.4796431422628024837045802646976491 0.0724389157583876722190715070994427 1.0751966276485506474067408493642519 GT 1 -2.6127619691365544573740907423718802 1.2467148085367320689213012910974769 0.0269968459403913971005927453669366 1.0273679552190543515307624105916173 GT 1 -170264050462721035949469519068529575.9741736140620143271164124756542336 0.8203434077979567135333754485577713 0.0949179646705277427484831668019008 1.0997296926174838674355554828395500 GT 1 -36563546472.6532650742599451736249440389552083 0.8073166622991375886328581238662354 0.0848299260486673505357842043494369 1.0886453578080379357637889385517762 GT 1 -810244209762570375943669880243.5389690650561665015985710044093426 1.2348380640293863529887986455748688 0.0691707681593851004429040316058749 1.0716794429755619596753756871297504 GT 1 -165534378.1688080164959617404844820810885967 0.2198310091285309521473109334230311 0.0380183804304929415762157426180826 1.0387599349755655007155258147654711 GT 1 -1092194314832.2934730448929486714989627856701734 0.7016287654942649748823475284851231 0.0384054689089158835979311761568501 1.0391624025186519150907835601273319 GT 1 -115787171159686697528435934514482374366.8237212790728855366287249954578310 2.0392951592133424907573865320231265 0.0411020978973498170836100192144048 1.0419706726415074229457733007832552 GT 1 -186628515990963207404074642285815705.2044671643994731679631443128838981 0.7300889490432435399694713574114938 0.0112054169904962288248109134175340 1.0112686706417106889232476030886812 GT 1 -11004356116616064499.6224667066610151290056497868629626 1.0772479634233107206360685769964365 0.0807173763633824814450930419403141 1.0841616700243243675783989707655570 GT 1 -2992.6422877621320099911182299085888928 2.6089390463058695340333759632010213 0.0082283192466734795049257731247407 1.0082623587191849685645199058412655 GT 1 -1224605208132893411892.8181499634822870157982704310842266 1.5147101477509098321910161713505838 0.0465120449667440625527645369053499 1.0476284863934964927731185099043858 GT 1 -25065045960987096490412434.6633098728630831274530779571318608 0.3688372748652340990658789789637159 0.0514900635073309445613578007098728 1.0528630136549099745062976876348233 GT 1 -950907521800.1537494670880196151901775803698643 0.5324130434854389175444960958643228 0.0174054636341326012880884015646379 1.0175587196478768021959110978332613 GT 1 -3408.0895380622148480461881020950177705 0.2639423161043971745069908524647677 0.0731922333455812607198567306608886 1.0760091063830480390844020787916824 GT 1 -337080087.5413478536608047414245333562518499 0.3810871440264596943262912116452088 0.0041672137254153193939207341397935 1.0041759207583289200633496850612620 GT 1 -3081290911345700080775195.9991047234299140394812950525113963 0.4245470605460011809992076197706406 0.0795055836719894702372558788776583 1.0828443442393951301191802907133653 GT 1 -14055759442.6607533283343399944042006691143087 0.2160304930927465917547193473942594 0.0888133924636342748151546333755857 1.0930075645687145506864528986396415 GT 1 -5226734763623083353012.7639058164301262621404005750680874 0.5874341930257566563472523562961627 0.0305141720891897926105913380771736 1.0309894223425189012008094009089809 GT 1 -25110862128978441234753.7122013018413174167611964318138800 1.0024528782065735922542127056683949 0.0787556906724615512310551754450771 1.0820300126183872830488006061919661 GT 1 -46160396405230534279181.4981761954563638131726870874378303 0.7178336914470567255040706025894726 0.0114398993273763909605742899777656 1.0115058383485609625815228659968955 GT 1 -2067126970836030245.4595699285230293786962114037489040 0.4083432481468872003824971654225830 0.0706185110027127394797390132404475 1.0732359796833770630186788553966569 GT 1 -3061658584144199675716545877484356000196.2274492505559071293450179038315979 0.1283795180695467012467475275596099 0.0015959999713264728850543731843796 1.0015972749360236999460729038075933 GT 1 -921878475546809152.5001813336682183129505773674610537 1.3804871945006650678976293977315732 0.0574121136062321961204602217408552 1.0591261158441620732242883467474897 GT 1 -2155387013817936827472783486.7417671705399568893461345844452727 0.1615597501557936673085331994033333 0.0829246640927004565106345001059843 1.0865656553484991983366415001914594 GT 1 -130756263829.8575809420914292929683706336463997 0.9412787501602693231594196281873964 0.0525258578026013073680917588754282 1.0539556329547848133768625367047992 GT 1 -15.2003762378457903163489338010318611 0.3539275932754610378547655298303138 0.0262911671454317998200931423702321 1.0266429596053087059597286932807154 GT 1 -144.0145822595366930923196661271795208 0.7533373208133780887469272249785736 0.0951220037411094930465177134357988 1.0999551551336555914678682868668264 GT 1 -731396311.0576786222364867520930231030798202 0.0628347843344435544969287999198034 0.0897866698321325960404517354947001 1.0940762781894701436886728128095550 GT 1 -278249056087535.5989904944829721967876224677015668 0.0671434976392643528297942631590149 0.0308943839043651965529005946771129 1.0313816780921519671936774541857368 GT 1 -1553260697345202702651419933597980329242077.6313591198801751072160966733995789 3.8390969302629291688507860797425641 0.0865430133894136883139382101580029 1.0905189906321844991519904799363706 LT 1 -15251216760.6644478282986156731003105011965436 0.2295573760018207671656957339511197 0.0014254701876533962560214476614847 1.0014264871368167046527827881820372 GT 1 -36927776957.9206812256029906065314236915079535 1.3669807026376353174249331505193140 0.0098719813655045501909353510543904 1.0099210324615297464709215499433558 GT 1 -1770.5126542580835120331037113438201229 0.8509180339146138815157382798568851 0.0180836456081820086229665847878164 1.0182491530826627258067273460233068 GT 1 -93549422052753756.1954496315378382823601148442240413 1.0249305123405909514390951877202536 0.0833169475809587004318762402720972 1.0869935017831653489119412672907401 GT 1 -46428124303901896868058796.5799329464351229772611950476005485 2.2437208842320280331060055817789154 0.0540817226745185610373972597904725 1.0555991012670821779619437730714682 GT 1 -2680235209012462223.2671875075855841805548617461562566 2.8102341198642215243283987152431350 0.0149537943202339341083360945855802 1.0150667295906964371517306153505305 GT 1 -27827.6834135322086509721318953732113940 2.1561824071886765161261530596086452 0.0760378359993794239028836172887718 1.0790841562301236642753333996959319 GT 1 -25490218430239362231587730844806345621105.0457496046860691848328960347696592 0.2561098300607989621880102690281646 0.0445032855813288727142394078752434 1.0455239539067049637624494510321697 GT 1 -22347135173390017692495458468136587997600.3142645937396384914152386064713421 0.4648659600717242659018027000499729 0.0847946422456108161769369637283325 1.0886068041840658046325472965539402 GT 1 -69467.2112678508690788027525497899205105 0.1172472959367973518126363327385850 0.0593860574538525518531476728516633 1.0612224865466593073828607744483203 GT 1 -107754012.2858851049059859553692657039604552 0.3385711506134831758603688603750077 0.0319261536203951624257265900588286 1.0324469070330732507288218385903984 GT 1 -573129738.0095623140304334945491786561351501 1.1502657623047588545097675895772139 0.0071065493754754553394816034463498 1.0071319211728999148751340058259849 GT 1 -10134845577404286204302722197.8086274159668806292166873587298592 0.0494075955731845996290890105310863 0.0028267580200626268164143105618003 1.0028307608456404426889084814013183 GT 1 -9270655194245408151.4781482268427406732822171940678545 2.5767453213748889939966840898700152 0.0236458034581357627822315725985787 1.0239298521107122214112670483254296 GT 1 -3964038692460886.0310885660083626846390818209969284 1.2090547214850642194860627813909076 0.0402372016247361797089431206800811 1.0410691100765561579683641820258562 GT 1 -3913174229825399939328205653540747406985.6978726463367117553183906242526614 0.4183856674526517654789529623628134 0.0229704101759794077985985612190976 1.0232383409864936707335925127601125 GT 1 -928298490611597591605491060782.2528418383013699249876351490674722 0.0011227260425275275391516475131603 0.0640302050231207324972255177527852 1.0661720733490900440744287131308076 GT 1 -8990539388080495670729630.3740132969280346856999039171779807 0.2600521603241262100728636149457788 0.0241948747327190268177560837429838 1.0244923792394439881130689488565458 GT 1 -1575680355500200102.4695279959136141252594429248422096 1.6179431046054785954781137929045371 0.0180609989589416783790062489551840 1.0182260896231480689467315399304806 GT 1 -33479071463417095523.7399876197038179362070354955759047 0.2088016844678304473868474497058707 0.0409219048233510847039807250232751 1.0417827734448704464504888580802894 GT 1 -276595040719037369121.6842343337070552876799477529951882 0.0039329463474697991389187501980755 0.0693781048820512023476975439841771 1.0719022118901155332280415756248950 GT 1 -60082678843893165925165061.1437082179050295967035231786513067 0.0567746695705336442073933372011593 0.0353040724410668090332549525006588 1.0359423282730932896978265610736644 GT 1 -4966302059232850984674570.6997618486361095395878134127489964 0.5704407410958835898755409187343410 0.0524136716775750714297337947598793 1.0538372344900365969705280055089071 GT 1 -582513780457670133861704511.0668782803119956781150324525151037 1.2777460410332920039994857178009845 0.0261489877163152167750877923241256 1.0264969518410553050971092779723123 GT 1 -629.8684156183601157880268928276152912 1.3008764324253554454277675774549455 0.0861252904550404476416453497208559 1.0900617961966823464647913183246015 GT 1 -346897137581072240970595336799961775667.1845100457178167129353616437653441 0.4150047054345095276505685249635666 0.0442720435981594150077870108749766 1.0452819708600979287169738952073713 GT 1 -2347779877741661080655559895430553695628.4348550092420302873733304132013482 1.7748897156579075358169129387044967 0.0767014375353148014859014337210811 1.0798026271584274529737702154089681 GT 1 -237955368763058142256063770891230.5635285408624643145131891848079949 0.2487172834317368544080033573202515 0.0498829442374613955547389703510379 1.0511700853859454100585312370676611 GT 1 -49452.9283428068803266157317324647785725 1.6279650520602924376765438560117690 0.0656951416562414638799333232918107 1.0679524932141305303219692407952655 GT 1 -23453001545048924944425482304522133.8239152485697192863753874368469224 0.7426004355738737143175092399175272 0.0205589552004353599728637279643916 1.0207732324854804454762683779201365 GT 1 -125066636.2248547905518326093295779500005685 0.0361889188111694913067125792523180 0.0931603643761429330618682008308065 1.0977896519702243587105566941042488 GT 1 -56.3156129400093682188201354674270204 0.4424099236050426632753944021161412 0.0504243530817042974032659927232904 1.0517400816365361720585256104422891 GT 1 -5583.0211259973523312054554836851401034 0.4840389455216712409846277868506988 0.0123340388978708781060568542856334 1.0124107344521012428603342511324581 GT 1 -33790908382131270601050343741.0701874564641795689088137885956903 0.7513655296431235685483393332362519 0.0772832525589678910137518980063051 1.0804329740897836580131716517469753 GT 1 -186072.2804166211927284964036222141838777 0.0725839077983837123561613941338243 0.0934622596197829646108184374136004 1.0981226165813682652893875670543560 GT 1 -9159961602066311927160453158686309612129.2130708101438465267269278559409143 3.3904531095465035021597361347794092 0.0473501098631292952353861305133814 1.0485078193887569690250477631968514 LT 1 -4882563612460.4276748531581432755501921839689091 0.4395555006906695436863256084080006 0.0620814300295053039028172408754964 1.0640921461425200039410969135294014 GT 1 -4146865992724670895201768.7873804522374102907756515236868066 0.2306670275726827852561927298745093 0.0012855638903292601805146536934092 1.0012863909364770825058570680775389 GT 1 -25033189170665312.9825748321570789828185277840192176 1.3114792058061195783196133489181375 0.0624044900076480381081597303568337 1.0644366490015380038078481732254082 GT 1 -5863488715185213844182377442990207367.7243561090813025554254479453039959 1.4697364249461984275297302918924036 0.0718981405719614473210655732920527 1.0746137899046818647257605482249224 GT 1 -58213343653833245234059051.5816479145822010252509877877927401 0.3577359711130799455522784380386897 0.0854131551044218586648559538284540 1.0892828513127751406659955862395524 GT 1 -98757591123.1657542661690532032042007160064716 0.2291169394335962354322667188268173 0.0390355800661661800634710353213994 1.0398178946995039388907322704599523 GT 1 -351860757415922530320.9159977718525910234010274712320179 0.2090920170673427458834108836994322 0.0933692691059647562374644521134998 1.0980200441890363084080360086652936 GT 1 -26354524316633057885383590751.1459486806868989726051677785971897 0.9584499322981514669601456602190500 0.0129533708679824880309399108951973 1.0130379973697342068839569793644697 GT 1 -2111892436786313353278420172031.5266112708159555612888913151949748 1.0988122346007517708970219124390611 0.0665411836637876674712890153798435 1.0688584344495017246565772517528734 GT 1 -48290030.7467980592157353303555749320759218 0.0980467864379892804728656187080303 0.0762726822015096955489898525935405 1.0793383615018517394647465082842870 GT 1 -95206170396.6147098690237494820900482486048573 0.2514292375345509559259525252201754 0.0972706929898962940694679221437398 1.1023325412583157494015749742558561 GT 1 -40.4283892495774035613855653868806000 0.4653071205236118172132199243709384 0.0397274976110613657657593805462765 1.0405381781447887975998574528623138 GT 1 -781471580619391635076058111339.7512486784849388127714943361037992 0.3162356325300467829886595019980908 0.0993491895550194270955253279384113 1.1046376542684393551371798581845986 GT 1 -560340.7888256917720994848659917960452867 1.1671556875857482839037806652353001 0.0737121575130846419907014058200952 1.0765702476199938063736237890655722 GT 1 -10836987137003959883414339.4397645181030194071023285179933818 0.4556768827672673547290896944336935 0.0675418828644246167475406306117077 1.0699310430727764519450549883992494 GT 1 -113321760614953299484601.2995626433286069960150115688029279 0.5065195270524484736979869585129137 0.0501790632938624624356440870567148 1.0514817998313353131711871834639136 GT 1 -1910149721292883513.1975389595080059434057194431049049 0.1841076211931517997461745965168362 0.0491930424626083967301242222741395 1.0504442259614582863969066910065146 GT 1 -4188137725022570.6563824823330901579123905006524382 0.2562244663253217778177008006478016 0.0445657474667848779331795362030664 1.0455893271583383106801538067313652 GT 1 -4014842108781530864354449525917487224682807.4856720838695949796320290015240425 0.1850036702492127799138401270204188 0.0889949178857566367910235666633429 1.0932068031271536512297867156057838 GT 1 -146220.4992797280116720537574093097463959 1.7297250084376248482246481093363612 0.0003901391426979914064071147250801 1.0003902152667732887932065612327272 GT 1 -27547799829448426883592711764535772944768.1126099029120618884482136530391200 0.1575919422077825108948303989793714 0.0795711951841480911028667111573819 1.0829156253351332065392369760860916 GT 1 -534978685585579333.2880408537669112697511931129378904 1.0099746221616227476180216679442022 0.0901642390767609912629270013404259 1.0944911782621031748069808490364022 GT 1 -1.3377863387176496084904240685791804 0.1179009727738240490419394635637902 0.0248870503712670335679916986706099 1.0252019689208338093987167787935905 GT 1 -282745965836.7490567129965344762934917943683268 1.0295466463282258472134492687158552 0.0244215300172139341648587870353094 1.0247246813722136713723270245647593 GT 1 -202103412296813068978253.1095424465767277258138618528668213 1.3032690204680218661650774251090604 0.0461915900686436912917640468220073 1.0472924558667233717414064398458999 GT 1 -2558805590890517133245323995473143559286.5097986124142113760593698161688037 1.3720489515499376677319016625849263 0.0782016863545728645520183378411988 1.0814288281122136248181229640022233 GT 1 -203583046373769074057406233289366573.0932227014698259883971526577547733 0.5106832148340431142108050076150167 0.0359042620038526896983583234754070 1.0365646760288164137334220900479667 GT 1 -976896951930766397706555310634762.0448672133907806335374503324629248 0.7326065924656317301809054480716606 0.0425767824522727367985771821664911 1.0435097516934465927312869548608571 GT 1 -1058716749223238913112081275873873510396192.9224072608999847119514936055773766 0.0867683941308101339867367653322361 0.0395294982150135612231768636011803 1.0403320085569585865519106083119129 GT 1 -18083053594487380034841577472799364968.7006382123127949756387541219453646 2.7835408764255176875658671902840399 0.0144625576913562843126842253087950 1.0145681599008943958517375683015957 GT 1 -47792930.3767157979233103428055263592081684 0.3662719558986711769973980343653103 0.0297729761166977198772903986062586 1.0302251896285053402061367054988574 GT 1 -24080398157901386802957782668766.5312661897477203279319218089698355 0.6143618172050800492770288457419215 0.0373240296665208326067249423616589 1.0380384032103949213474417074057013 GT 1 -2036701652.6233449162841635333748327535860166 0.3794269954247949271157520925821203 0.0116636454907628863658166248711580 1.0117321993840672918419186447149244 GT 1 -7606199340768533.0138567663958926299386835558224304 0.1320331420856617649588741837163215 0.0774559161025364463918707564678003 1.0806201167865125911061687306349936 GT 1 -1734620994174.9453291564778097698044082434081129 0.7145854840126592741087818552657046 0.0233371058554304467424644747992798 1.0236137282972051864917744908788935 GT 1 -1646268084055624.8198501669584915972827693964737882 0.9171527322171166325492243779137902 0.0038926398413109217186510328981855 1.0039002358826211222599587159181589 GT 1 -85442866349672769556533775862158.7110914532076588224927529521734713 0.3490213323269544271396424011104849 0.0490568915579830429636567534040091 1.0503010411052633707417312261472049 GT 1 -34626303269038201329161882470018073.8729781199994116413648944903737906 0.9499531809793710327258030674359805 0.0820398881645611215622180127610900 1.0856013404653282098500722143431542 GT 1 -96620983.7064277854337532254199371650283435 0.0919108843392967345426043267540045 0.0613332774347619083710939062040597 1.0632947908212805984598416980632775 GT 1 -1608572082790857035416292832727336362368.8952284199165891088158585579534602 1.1989905143599826469219350970540754 0.0414215862294861073483450478838150 1.0423039110053381065762915762371698 GT 1 -184383441595678599605590180673.0707492261106028330114887504660853 1.9603476875059639694813985748918911 0.0874471707053511651126163790699444 1.0915093000839247308751999807911934 GT 1 -6436447630207482201557670737329.8943337053614781570922397144763721 0.0461232074399688791113734353549491 0.0644856050531474113102042169022182 1.0666587459498708222870521896608406 GT 1 -1410488140340878212944240608090135144078.8650718530822452321153453303820074 2.0957884015636784351740394090346933 0.0293872307811797067370710053641612 1.0298276860921823010811969121255653 GT 1 -21650053873031877364811105991664.9129434509046245605277146809865524 0.2862958334082139243715231791498850 0.0969578432361531396061420350464545 1.1019860414235919961611835832077309 GT 1 -3958998684638209985661344219225228.0158339604172154409946419857935199 0.2801898775917992683606714961349684 0.0405640809221464704740015408419488 1.0414097515094609354791634482053890 GT 1 -7538240674541403431272989202.9343118790774476305169683798441336 0.7050016522744581518750867484845709 0.0955060924854633603554710822860812 1.1003797099190173885759769064535693 GT 1 -218168782058711643717921.6712712015380669094676127181244365 1.0243431460119289029363584161821972 0.0728316545416386542715759997825697 1.0756201274678039490687101521334816 GT 1 -5.8707621654135198290623684116297237 0.2079538071734832466056591057911615 0.0025422188457157204409323220001244 1.0025454557711912328168997513168001 GT 1 -577970174355916577436181.0674749774703439173662311798806168 0.5963554511749859282770191093809287 0.0189963865932706242718588684064743 1.0191791360323961943043825224867476 GT 1 -30739878638651427774.7560848272007500047602717659729125 1.0166672528587068619080302735055752 0.0649957953076518444675980488404181 1.0672042527063977118647795455994410 GT 1 -52803090268263401373204584398.1771361662693963720633845293451389 0.1381890285920637428764206434426130 0.0062103066300494437520470573510104 1.0062296707975096064131206198633682 GT 1 -24815697033787594470013942.2909241264993244654333751995015647 0.1587779602230216713747550660685928 0.0344443415335256678501921477388854 1.0350515314768451071504901252915873 GT 1 -1.7629654403166205369349617015471314 1.0789083509252419417920851495375884 0.0845879842637644098613775571102305 1.0883810246348088885900717966956327 GT 1 -4599610.9637569841131270348495377399572875 0.5122140882181633276852001231126284 0.0627684984772319904784828289201834 1.0648249605331322993482654652303290 GT 1 -13842506142748790616244638061297.1627944196316178041197183951666300 2.4875259616112044344345136598177071 0.0231020880517562872570651674050035 1.0233731237518283996788883475850876 GT 1 -3.9950529708784307456927271996399502 1.7427138781731396863732075205665932 0.0838074617103050580066508718055456 1.0875287417563999399300745228393036 GT 1 -502240166772264606776670274928748.0922725249112602481779910051941364 0.3182545348650841150001491640573616 0.0908888180267736000739588470135750 1.0952878798824209268381193920471966 GT 1 -302.2555445759912785164746690054774426 1.1180039985138198511839443016137458 0.0450683423406180087545760281297259 1.0461155037224691441627710207047213 GT 1 -3763178525245413263745784072123046.3570177181110853674105241785236534 0.4499890879313943143577672290520033 0.0284533430707784601001179157225744 1.0288659856572902550925091344960382 GT 1 -35.4867103303259357963531022447469492 0.1968325740087748947908292105825690 0.0956020634984083030208191920180469 1.1004858202023408119900202566862673 GT 1 -13151229358225503624155183590089875957180319.5528275925570447092059064675078413 1.3084012706716427546860644643007837 0.0209863026630221287471554027166446 1.0212096453983498474207186583158010 GT 1 -486441156833430583930610.3660671809682854792725298824161035 0.1887096186842080932950605899415624 0.0098040340440419301071607305448340 1.0098524100320505256790856198232643 GT 1 -29790051704225125604429238536392049737126.1410761627753062371295849205371215 2.1273370597406014280951252407543549 0.0570399696356687680348989381885754 1.0587313828627426691477647629898748 GT 1 -4327933584674792847794526.3773446922614369442348654495275647 3.3867095178321712570199059437338072 0.0056530905348838555874718075126933 1.0056691297270810761650969384471597 GT 1 -20073100494545.5200650909598276103064201964718312 0.5632611681982808605414563484437167 0.0245905327433117335184537101179220 1.0248979297283871550375612948109469 GT 1 -42981280799231421889001325.8098015115312604559737659797368297 0.7140864194105557431413573803774873 0.0164047371191330996481546129794507 1.0165407847549230201029060514693980 GT 1 -296411649784727250778541923798139047608.6977520457361339435399830954775483 0.9276120088638233018663846609524262 0.0199390467825958021333845922510790 1.0201405120910661151282383099192263 GT 1 -251916651521370143101328.7430167546562273398863021623722045 1.8611813352380648187149936434685506 0.0118256262371434212533678169982966 1.0118961051442801670918011255334251 GT 1 -200174260107636737454.5752203526379484210978954916082674 2.2868352013807784599584105755797815 0.0401784589590831657115708835782810 1.0410079065498705664691320004807816 GT 1 -283581.4275091559087727747057353147074769 0.3985563048234943115941405990878314 0.0310308904947225067414323240746777 1.0315225463350322516837638039431759 GT 1 -12430922178874075223836743723768.6907502935617285561884916167857374 1.1225677039881506505176362168283946 0.0888821910618156181410078671860792 1.0930830718194154285179271353284941 GT 1 -2257.6663947487972997776046954628185476 1.1415223381273309064740040537940000 0.0015371556044560839718250236188257 1.0015383382402177365458761905204865 GT 1 -857.3036701132683219589742903799779115 1.2848886560450182919871731840337122 0.0219952814966219739557355808771091 1.0222407843133774785058881233799792 GT 1 -33174661189.4514612243058098066053830423714364 0.2316142981324442473119076124509713 0.0683215862688448762044917602369736 1.0707675734845551890991117647744164 GT 1 -11489.8640473317836824865903316969557119 0.3908487665608106800193892751515401 0.0974874908500695708931441628766337 1.1025727283172181233740069025121679 GT 1 -6849233213788587081350743179207459879229361.1445083154275194459323906860925340 0.3011994270396822992616442325278570 0.0258263487877516000245967847360960 1.0261657045652279746946450777219429 GT 1 -127138618935904474292316.8599775590599778329870338058302197 0.7543766336604362085888068709136193 0.0344596984947467163055062575184360 1.0350674363946116970854939594945756 GT 1 -56824007986412562653860787416.2336084964728714047179943773711333 0.4741190827494500423543088678353476 0.0602650093658253842170249269982013 1.0621573683236319512975117279567489 GT 1 -8532198.0716430495289871273679997382476943 0.7491086064836103540628830704063298 0.0977148981475623552159695688578642 1.1028247314197376944635510028239789 GT 1 -16361375615.8548600443432998200409814854834578 1.4593367806634324291652305998803997 0.0812646435717448403939101554503631 1.0847571671636021424815965718700644 GT 1 -36925064890566528602118700089274615.3025725716219677799746063227388778 0.2492407566210732165983044946892144 0.0878516211056926358647331138303795 1.0919526059853511320144371232298964 GT 1 -271620648787377943272.7998037131220711071684350392237183 0.1406679633171909738912908236722909 0.0482054728078018876563700153529858 1.0494061002673229639958545397210520 GT 1 -569930361085168888453627080701909480119.1675764510041966407510222995777825 1.2799312330572745479564217327319532 0.0762369522872803475490303520818543 1.0792996820966425913588788303190216 GT 1 -780098454607738766.2449430943087138433644715756612111 0.9232307551413121001761180420829893 0.0473761384796396868406467331900388 1.0485351420939476229669197068879684 GT 1 -2389731447914062718.7313059018432099782978333799672269 0.0146156260777744601083961587070098 0.0554318929552673224761871492853262 1.0570274855405390610235852644750537 GT 1 -1277576685649733033206567465273892067923515.4011512765949001224090786375824466 0.9203804379661805283868089550539099 0.0953398063344504602464137884310404 1.1001958824038569017491915665259806 GT 1 -27429616592091915456842.6351682523246872201844831211698854 1.3955805557215031543207758381998651 0.0726714090956379742566834046288881 1.0754473092298684364810545717567714 GT 1 -5780092.6265068229487807773566282678155531 0.5448060897147204109655113499254560 0.0934539930718065447401430249973081 1.0981134978101159730035460505257909 GT 1 -44275281.9541164713342965787991024053082457 0.1490523852676857916468830582937821 0.0500232526574150906533207953511332 1.0513177711685940636175244456819999 GT 1 -288504698554931399388338430891291914.9087539103415550533934090495916586 0.3739805393254485695615001059498971 0.0374206781192663897675151601190072 1.0381388038722890538455346486840105 GT 1 -464427521601108989799472991615689365338450.0071067061045634880049262406687928 1.6800195296101298463255098952110117 0.0228738255112083185664823724499012 1.0231394904581851444512271622402960 GT 1 -3.6137495945376388105444458606308576 5.0625818136769025356939100763721535 0.0763912095791833329266376034488740 1.0794666839844892219140148916866132 LT 1 -458814386066177.4494578655574846938343897079848865 1.6208312279977429655705299115576202 0.0733565300456970370718302576142840 1.0761863937022944013207979321795082 GT 1 -3497999938222740368856708091597.5195893382022660938254384092325220 0.1083923779056267752419948728891080 0.0910326925232123717468879288463700 1.0954461508234985360622386842171877 GT 1 -81.7712195273070118238868845830706029 0.5369030400722436035689498975388289 0.0611779479739741252885093176857038 1.0631293256922803015565894932953462 GT 1 -1.6032889352449944451688891640026469 1.0775461772442126825641767495606559 0.0391150910879109148248953399777321 1.0399006389818955731227352184258511 GT 1 -30434726937501995813886333855549712.9497749443229384968709848002513678 0.3857928997029100826203986988678460 0.0675192732585387589113959559247258 1.0699067960515283318107740414519000 GT 1 -7483388459025469834989.4097033120058382797670638301628895 3.2651395558802578365443169891940548 0.0112173857966608392549615126999744 1.0112807751564488494971628611926887 GT 1 -113.4891094456488212283260645670777887 2.0784088789059252420457393917416489 0.0762096525120013882608698617918324 1.0792701297434041289052595924629842 GT 1 -511910591676322595460678.9075049894111287263160510926691137 0.3555035797437881683388363726634963 0.0930976953671585030499284852826030 1.0977205473113769155157704050619052 GT 1 -3.8323052955266182709903076212210097 1.3376147659116645313145880341664324 0.0735867197336677066231707872748258 1.0764348369182156422798779421783264 GT 1 -2789100210144737898962662255522.7150778071915713975568134686411026 1.6357132242471110491580533556341932 0.0002532903893120770681857129972060 1.0002533224727404664127274073010039 GT 1 -2750798290823737851368566.0381440446973873649226368942760162 0.6698060384284265286648839397877310 0.0814673398594556914174804871996777 1.0849778168311577503255723736508485 GT 1 -6405892661201.7544833154357800782440175940924795 2.6529052420196975146123767329913326 0.0696278631949744772653936883078938 1.0747749253821868143138758902635228 GT 2 -46302945840545605512997.8949311358899461877449095746521138 0.0576886785000076287235593481571376 0.0903331079793976414902467194209951 1.0946767992095069036967476740252576 GT 1 -127605550107.7714417526215147642524484353443479 0.6990658327362922177645149802505548 0.0078640805012251762726195154127320 1.0078951654592825707701351555800820 GT 1 -1097513204330236.7205796800981719074988787304505119 1.0396528847307830221488483571777627 0.0077323378416619760474584049700145 1.0077623873681981571403924446447567 GT 1 -33753035692433125380440159308.5539492071778238046758105416983481 0.4751352000927780576738128055044362 0.0556375321540204953057979830900794 1.0572452163584940409708695357289092 GT 1 -468379677060899293661368244921659289813.6316038476034268674529526257787264 1.5272918087123007282751835454262284 0.0233608571826333638867451194502711 1.0236380474519028688869474124169142 GT 1 -55767807312375621168125521216690311709.5874674890175502659940966138515081 0.4487948822695061608491690002427026 0.0520698467879683403148907053040835 1.0534744574878559393386165028438029 GT 1 -17265422691608251436985525267630.0741124040089656143111955739045255 1.0632109676230054163475826429754275 0.0275659792092037932953516583441611 1.0279530507363047916348589554773236 GT 1 -153528571266940343041.5653288019474992037659753538898586 0.4324900473986049809865005952783114 0.0653753650180282553313596958893446 1.0676102902123846107816142433958529 GT 1 -520883305338027273687.0100035736967552810573989922071122 0.3236871117906929698124034372242144 0.0444969576568456034579521050662051 1.0455173312742730109671080736893292 GT 1 -6241326976929063566.2992806597713405876428157555202000 1.6153968786302460903586330527795569 0.0860658834758695159062487728296155 1.0899967927035986505838793136131509 GT 1 -18516517192.7438359589953995836762611692171755 1.1923751428090222585572467808787507 0.0692868288137345309841172335004750 1.0718041359767110008102323558212851 GT 1 -6906806966880953472007.8282593943969900626527866756229737 0.4126545274817997903322446301447573 0.0183718815482097522179698062390261 1.0185427404661770495663368926607441 GT 1 -4997405253503578329865907.2843794916378124346654868636128326 0.0113164288016646963962390795621560 0.0029338033367795587864893200473180 1.0029381153736329004100979015012993 GT 1 -992296306832015674539878278550.4847147051875063048828969496576273 1.0368039295715401488711325144002150 0.0528813725912846065185269876258673 1.0543309271061817260992364492218898 GT 1 -825055767982976653277826702169306070278.6618069428914315644443631400819688 2.0706585331255367963195965330032809 0.0864667662684862390119088361507062 1.0904355231673642016045483515531522 GT 1 -103.9361385568268367955762583651101085 0.8595558672082757386235243925782642 0.0829582769142523906521685248327351 1.0866023082124926787098601879596664 GT 1 -19294206721501451428000974738840892884671.9157619216476377161873155377698332 1.4833145262960767998576080640629185 0.0917617839527859838944594472932323 1.0962485823143310455115415322218207 GT 1 -622082.5967349658679672883872852583217122 0.1574605538234525930827115486278653 0.0615683702052765848951149760177923 1.0635452761210501162228111197292307 GT 1 -1934043245291522103893656226292345.3844936828088193164244549254750248 0.6258114718713636965033808703276468 0.0018182282166254764924725940442181 1.0018198831999451791051710561378057 GT 1 -1233467366087124308457834823296814461364.4686389952133352971752888810793683 0.1557462157022389027829403733390358 0.0233390608221639621331480019219633 1.0236157299793637365601859776132056 GT 1 -491416571486338393156524814907886041884852.1277773970556105415818237383575674 0.1434227876591888714289143419024038 0.0364950149440958579756919663870163 1.0371776172377231449228596268588792 GT 1 -100087083659298961610114892204323.5716743541352147391337404793438130 1.4236242427378648152583571690398447 0.0152630933117347408521385019004019 1.0153807732964229881176131627565203 GT 1 -14907847640379.6708604557412745741275043582924280 0.4700884133083692063207364897610465 0.0895815842165162924551387243007594 1.0938509875814822227534917176180251 GT 1 -1477708402957.5132918701311545670919219648370084 0.5940658808572695732449690339806015 0.0492447285659171044500332854331188 1.0504985876883941358580243263209605 GT 1 -1186.9230890781082675849962406322872319 0.6138901701737838905709532522058392 0.0287199686358139865642203894093372 1.0291404574548169610138934115971727 GT 1 -50154258370937565329659989.1770171001793517341784374033659961 0.4377235411323743595909489381579198 0.0509894892827786994604550227495944 1.0523354048621821784838541832064743 GT 1 -5741578517504524752744.5233100193722995567631542939746984 0.8980794793970714804005911213176655 0.0712744682551192978825872644659017 1.0739420286593874912125959530953570 GT 1 -811.9462713474440256114886647061180830 0.4552148438456511750518270879663411 0.0462294501450642029043843309738513 1.0473321502408212327053650486286147 GT 1 -62709902717315820459555187372578105964.9336344124414684126704474028822784 0.3156415534452051730190724690467312 0.0897148234885881072831134606043045 1.0939973477829708360283536447052408 GT 1 -25733.4584298474978950291167887793859626 1.4504048670907928792742854087893846 0.0369180116398400912057371386834382 1.0376167323240160155360410297669810 GT 1 -144791807471259276965147012860.3711885415960208347486276049643559 0.3297906831522867846572787511282267 0.0718317099486308517381021138660728 1.0745422155992095865859480882344684 GT 1 -1429697794758766.8574900080109856035126234998180784 1.3961353845211236810064244203372980 0.0344995465645449463406777221073553 1.0351087074757133589291989701157700 GT 1 -13127148620967268648651366211797343883.2938431072691286987254912490505396 0.3045478543231679830348221201012977 0.0413301997180985249338107852624691 1.0422085800922231770204026508637047 GT 1 -216767.7848671204642892788261364717269428 1.1002900714555865244010086561116736 0.0482999847042394315191638784772459 1.0495054038317993601192066622714139 GT 1 -195009764.1212641443885587753177716224871803 0.8076082965898310741788768237054149 0.0508763346910154174358836615809000 1.0522161776828536693326055767219496 GT 1 -2668723425787.1404526550455580778341676889333413 0.0782731368624575980232303358561195 0.0271037429433820579327195277642024 1.0274778242107273308720430713764929 GT 1 -24863108469819499.5762833450807788981169843793216412 0.6196985242947662535546393831819162 0.0898346632157613957522738924839448 1.0941290072007590705048864242080580 GT 1 -85202096418994822852092697.0397379210009205554545922655113312 1.2566925177105469544403670887455529 0.0411643128114777444603788559299964 1.0420355564340187171428881726096695 GT 1 -8674014201797354785693285635.3074634423557063912248784454056175 1.6553143985830176867146179520009696 0.0821664778482106544883077853607449 1.0857392532257894518965419871335181 GT 1 -9730.0805242733739472206047184650093611 2.0236706516921870801088617662772305 0.0536823262046607572922460004366582 1.0551769589062921218981502114265828 GT 1 -39493986419637954244742992471715646882302.7169847043855963305285656101193882 0.0769954122690874382062127858559903 0.0769834658964167186697716288065460 1.0801081312013935324025316555620873 GT 1 -88578612991363581447563641013539251394.0386989472396120368256626201505177 3.7736102350426650239297566786504919 0.0256603336974347744282243760239078 1.0259953027627601551704499360117541 LT 1 -11862275177994.7120198815264070793575660155394176 2.0176994519583930167308165098970662 0.0648819114267308259349274908174520 1.0670824597290380025223651713691368 GT 1 -1033503145267515564.5496538875901137924365205598262315 1.0151573039955356043540657763060794 0.0720332419673254711513709095646080 1.0747593679230069155256436118245814 GT 1 -23201765477963.3882217049969406185607089205415707 2.0988141841361361834876061366003370 0.0865136932353246430733752225143558 1.0904868931344702775249499689003521 GT 1 -9976886494341029071952698785475.2165715949493382436751332039803361 1.8064963277445321392608386404333311 0.0763311489304777593407100805815364 1.0794016578645625156506508167014296 GT 1 -113.4500722694359418139643084162954089 0.9083577044412863549889106718494907 0.0036435392985303207911359369866749 1.0036501931551492579226659641908901 GT 1 -783244170524102.7107174256085881012953091271800599 0.7006972223473159461524115879828730 0.0879265147608341278073081688684661 1.0920347162337327296531827279806301 GT 1 -20987160264366406122102207747873628367405.7796223305611422686508238197981751 0.5079736497827417736294384147134150 0.0605205124456134286605878875097216 1.0624292937311125602619925567460616 GT 1 -3676897461631018296041469362748186.3471364290807535918574232615761374 0.1092938778840145147316957383499464 0.0329695940169025815628872155747385 1.0335253404005383729557117700185183 GT 1 -5670606925944115473557349517968864816047564.1355992458687405458954000383439677 0.1352499090381941532769460108834871 0.0079563072451755614128596712504422 1.0079881275514714464899296481854534 GT 1 -9636117983750442125213660367101852645320789.3560685891754439933262029239175033 0.4846012120336323346455151296856601 0.0696201321173299172612295258230559 1.0721623161430561556442476426940123 GT 1 -9827786359.6643664573759207597807999227335243 1.2434063172063705467234839005209917 0.0228230111100295761447355042561045 1.0230874878803431871514823318548880 GT 1 -7392529082610.8975892468360994471498984372093273 0.8424602615309015537349171371153720 0.0575760918014262939481103485703573 1.0593000969259549192879686884378479 GT 1 -47009267735774034813837671893818988339520.7861131695773581451646435558532758 2.3943429569620746816006349257984003 0.0257162955440134155033204480191583 1.0260527400771573868327906081923524 GT 1 -20015743755088672188680854832096.7950725440885821705877061702054290 1.2004659249572341578490428918828566 0.0387487541163695214050605443463859 1.0395194620553152286037970129867842 GT 1 -6.1070344869820882044645701088669930 1.3081627100319254644768897023308121 0.0976979519049347276195178991764987 1.1028059501238289668537505820434602 GT 1 -3859953716026279015812007592706393102254.4079339060126854895427095037053973 0.4025103875381535169738614420739702 0.0139283905871886335849775520268550 1.0140263008373330405466283359745840 GT 1 -7943398098633924996316599951548961137430309.1018606020560976874800520082128186 0.4074245089757030080258740283358180 0.0699655633344505216897967172722538 1.0725336648477459584319074707153640 GT 1 -12229.0390042849251856317931996224772597 0.0138270923037821975557839834617335 0.0577668492513747135197160661587510 1.0595025289277817090905702600968850 GT 1 -1617279120500800.5186586500325826916112582692159916 1.3866893938560212578394808932542317 0.0010832111851337224652928181122743 1.0010837982823746799069532927594888 GT 1 -14561016752668201701.7171133103161690578888199699072103 0.0524826449721367966258217066684333 0.0203513130847213313225267394011189 1.0205612543273285953458295318624443 GT 1 -642958861.8669285670106333301525823478398114 1.1016545002031319770254094096970850 0.0845381091523524844623168064533912 1.0883265423340399388973778272811969 GT 1 -109335067829.7640409284131866970367090833534125 0.0741629975079950980218529151562183 0.0797357066855857616625235492397510 1.0830943748529564748525804845686605 GT 1 -858420.5338109642189621762482390439295993 0.3170874896734661674280053603442884 0.0416454719439547498020688540621732 1.0425374984309611470034361117476716 GT 1 -687402672891029505545964151887.4008483089945562276166366581408859 0.7515146709488619133317944453306181 0.0227289192946354541343587086568228 1.0229912030857450933227041091624409 GT 1 -64106216254340514.7028282484059251266354510606518468 0.6037637306296868144506043287968865 0.0166813160066417700822560562117999 1.0168220160612250703822855131246357 GT 1 -23703496727181693024715577191538130069699.7723827551465077739166260080478447 1.2624895681819553633014035121441147 0.0629482903796053485806776496556940 1.0650168119052791643758521549798938 GT 1 -259544976689635465394664718215231529023996.8719946933847872754575024255409256 0.3980422446664622238956681039070603 0.0695946512490545999606821692785398 1.0721349289217378264489024039041775 GT 1 -323041.7104437269197718979017192815366391 0.1956393140224172272027967527149885 0.0366969787384421557032118038584914 1.0373872528572802140953556737881809 GT 1 -122398081.0623309932270812711323673794963318 0.3493760869609918992743568979222042 0.0604214172883311414972153711363749 1.0623238205060513225571375068430713 GT 1 -374993641501408.3832822710737469118263176800320578 0.5848123687191266065452138798518936 0.0020684916390834427431822451463216 1.0020706339226207689892477484148575 GT 1 -23270426059672430894085.8127915477984175318788079825656929 0.1684553134394007335571866975801646 0.0640304671968156886346685848400875 1.0661723534582699361935204565937161 GT 1 -56387968243539645572210.0457071154409520826100281635875234 1.5866274644239875233008284743343899 0.0280933569823110321003405303594430 1.0284955254125348740917473173175869 GT 1 -331.6937327213903382404296506255713969 1.0215148645033394135483531510976515 0.0534189946536996660865070823680635 1.0548987278994647885902119726377685 GT 1 -470044024895364804330741062186280275.5322238386011727953758499064996815 0.1393081437428893607219731736062938 0.0357489574248962303285141593894311 1.0364036006653423843336752772117698 GT 1 -1544.1858438670664399630294753578349168 0.2465533815921374927583698999690398 0.0557431134398582610169266605363188 1.0573570242627193529588489097664658 GT 1 -1083487818372545713678625057297173088.6143422723050311400329435663560794 1.7828232983104784930241842134621098 0.0451234582572412087358856509696190 1.0461732225202581108347418317232994 GT 1 -359924652968604550198100964826349212532000.4934358097499926530323512664285534 0.6158436054803949686491926119777195 0.0412864744763356868963852665672653 1.0421629708067121045870361605684063 GT 1 -692466412170283767036709553671299724970223.7340262294917072225406943504348588 0.0028682447158800013662581658475271 0.0643278373868543433811637629920271 1.0664901174761042665478491793268413 GT 1 -1636047353593962123938309858634890178452648.3025788221586804517081608305230062 1.4439285772595541678110473133664952 0.0659747970758346798142519151374057 1.0682518572585028219873641484808757 GT 1 -4606783759911888.2781131049598492236852746612078123 3.4742977334801834213317882481086738 0.0878698762704643834353274849430424 1.0919726195575618450900574890937829 LT 1 -3675754020494016848442.9962764583249352144293704494833233 0.1173857802898609697484237807112196 0.0532309203208149955448693612700646 1.0547000595866252931151280282016032 GT 1 -843.9765426850520215402050164867723303 1.9742782505738618029074421191680951 0.0611172883044762495104966261572197 1.0630647152479857977483910016089547 GT 1 -27420.7112626234405096159503310103640867 1.4705499429010360863191115422633664 0.0723184451305489393795670178243281 1.0750667571664170747816900043416237 GT 1 -4637838646261482275677053272450950.6853416161372374973657126099651448 0.0029147740596842081877218101690475 0.0132528172848663288868314301846780 1.0133414195583983673034236825551483 GT 1 -2179951045680.7588364716617050548084806305073148 0.3924688718631853989268461147813501 0.0330980978506475056043855479945166 1.0336582342287180573122378224337915 GT 1 -31631.5144122050648130594261310181964169 3.9329740446501872368965334722445649 0.0361887274047636935945665076513051 1.0368597788542251450258534963460694 LT 1 -120140508545010489278800924162587565867.8667080217989860162520141275891395 0.1099763747600242685679140631837769 0.0833985653613345046600592181176013 1.0870825417341450443373234114483138 GT 1 -3328644296538169317164091776287274754.4877589446943821463613546227328221 0.0412572117954325061289914676405142 0.0108626570849209049581065183550721 1.0109220865105645741404045838391344 GT 1 -269688676.5651504264904692032993599535352059 0.6786472649630405048300449240994793 0.0647333989262494326496187808249172 1.0669236554984264598426158551590605 GT 1 -191668948094345093666237457557321.2345905934726987902946681262513449 3.3121580988198658862577274549196866 0.0692054946066347491354405685219563 1.0717167506726643542580489537241909 LT 1 -3514066804940725068124.7521168299495845930064091469558373 1.4158426537516237013136395385387558 0.0226605685524060237819890072610164 1.0229212651192476103810857045759769 GT 1 -196384380.9929292122024425678554027540983486 0.0057726438266899693254922198011437 0.0384628164018820950299042542608722 1.0392220422121218734098852573043084 GT 1 -17.6784855100799382256718001083228856 2.2765728600976192803544755149209948 0.0223588005587106495247544734342337 1.0226125479981425631528349110586189 GT 1 -21432191108738216898345010739.1423987289748644261770712149514554 0.2824481491119682691278130092629684 0.0975399228875040502754942978558248 1.1026308256399678264145433831021061 GT 1 -5598098118299049211860773694773653628509180.0723620801218242983416370224992052 2.0537903612273972126128934279507748 0.0656675275454391357166014163495737 1.0679229378688003147684487896213263 GT 1 -1427038349994131568284353841412054000164.5827995998134908273013044524803348 0.2208915763243593978042381711974955 0.0318773756775359294389789802587015 1.0323965217094682910476652415745115 GT 1 -7371613542267497.5012319769218079078518690681267950 1.4908919083977060320547686086279291 0.0440870281971812329170138697734175 1.0450884037536124814150373596956544 GT 1 -56369197670936734104579033462.2970382421221556002589787238037749 2.0618347672317773114762854854405180 0.0076524303111050462004737836263952 1.0076818603931776797848289636552839 GT 1 -246.0653625850790895274015989365249483 0.0128093023867575699757495292831539 0.0464688957695083430576211260701751 1.0475832333615108115548305885905363 GT 1 -24221075945865459637957446031.3151510082493917183341626679343058 2.6151435945779501796357961677316080 0.0754483081539931901979665396261951 1.0815232286976451354699506022594262 LT 2 -1733665597029334853933970327470897054865487.9059834539978484041260090449014229 2.1449647589892632988414259906797448 0.0332089383192111082204245291990157 1.0337728754574532035494855438125025 GT 1 -3079368875.5411513877534610577255732033775413 0.5850219979205017767913504505106088 0.0247416089806762932677882486328463 1.0250528266648652544872217557515414 GT 1 -25899278969049827055432018052644.7331632354757659662682628124176412 0.9736789983104182465667341748417926 0.0508398451890055910737284234129453 1.0521777329554345478192025929927798 GT 1 -43772680033775877489408195.7586204633673254257772741269758495 1.3173732468313243704029906504153453 0.0033641045714181172113172462348206 1.0033697758940556035303848343862775 GT 1 -3967427723539716494893000100829259.2623895601155359912603272489594703 0.6315322423750007154223604155742721 0.0431263752386768542528585069272353 1.0440839497899564435188245037417658 GT 1 -20307491982.4654402523368128600856379834221621 0.6731519042579384942152258256968962 0.0185003608047352948775295053054923 1.0186736328711247217715293158227839 GT 1 -77769490746890529310245996260797.3574466742325743245657692862456298 0.0394131697127930011492295198337048 0.0084839401241585136700017490062460 1.0085201335984058706585702620787471 GT 1 -1354743012190193348554668816913268717119085.0919541546160667646126010162368166 0.2581211129195960791095572757286885 0.0598536811869276958590446541766988 1.0617197575198064096645579986936076 GT 1 -34672072.9051234767122332022825769762676991 1.5721521562237813605704457897966693 0.0713987887329778085850783189566124 1.0740758989958933593348936909814221 GT 1 -78417290.8059569840138956296547241726177985 1.2242602205840188469248983143683087 0.0679565414740754171807265580811809 1.0703758360639972303261655497610570 GT 1 -617230301.1653001793561603574075208375023418 1.5997784294557583429360651906160855 0.0978937723444218605394281492096258 1.1030229968342519914294768977166824 GT 1 -61565358547277552104896952396521877.7013463037693442303598595187343234 0.6375130442144753765782923049907693 0.0471660023211974660863892599598914 1.0483145797149061616518028591997769 GT 1 -24405083358586485519651710258100279490059.2486725722829334474821879211074731 0.4572510350432799926526897481730485 0.0267561913485449532950606621273081 1.0271206540309895924247719220623134 GT 1 -746981197438364344152066052.8944455380203922184897013349942663 1.9528913981391525449200513510602019 0.0575962121741420944369521915189058 1.0593214467530600744189986566384052 GT 1 -36254554077115109957842637627.8114252392069831440470150654123900 1.0069264489095451303728293846996620 0.0093203661965573606536643844627788 1.0093640725946514838604618531267310 GT 1 -646367.8204029534868958099685394965574405 0.9358157885770613018350620286583524 0.0577641322627322141203940911213935 1.0594996453689480549399153363503907 GT 1 -1329640424081928.8078400607269138761736855206641779 0.6032194736278776106039244897643789 0.0907615059633320798770119391527757 1.0951478495402604230231629861706476 GT 1 -5497982909474679870673241228261626372.1259339316169345052911371261065426 1.1756939078485185610780354774752620 0.0018210240324635971865653392289027 1.0018226841123967711059441750137922 GT 1 -228156950699.8788471678225954264262142371119807 0.3103944255664659590569247984570252 0.0397652936766492011684588283171234 1.0405775386485361982651247165321174 GT 1 -103509224603870139196851996025.3666265976758015853451537102608507 0.5994308905314455942912801256121640 0.0325547804759042974751764890268909 1.0330964763281390256353550846710675 GT 1 -2691584836089695828.5842410482380009272998290966808820 1.2201804977977772898532048979226864 0.0639987588609143264019733038793463 1.0661384765021274867255619047849216 GT 1 -193207158660.8790303018588016667318963108944942 0.2327861917811881026409274790087889 0.0592603708371741869860178330718124 1.0610888735791072500466786529092118 GT 1 -125013.4964007898024944492239159224948086 2.0271017918683426444468474954661982 0.0758951387231758232043239689152532 1.0789297275491987745249649063687783 GT 1 -281457277.6418494268813129393004920051814626 1.4152524108001032769846008206429849 0.0847297705379885918016956215768745 1.0885359245633787745445446365070777 GT 1 -29890757898132.2766327154545808727105469823428647 0.7659818460735252443361486450568620 0.0321358176315729446667874954775591 1.0326635090202072039564283674884559 GT 1 -1352792749298145587668493564143387368.8066508838677568691198591258500357 0.0286846058071588934253470442209013 0.0756929775011418624781398312496470 1.0787109871000440251990408314840432 GT 1 -3337778984532067.5374313884267993722469600514196116 0.1472895719323343401346073104375957 0.0618376347417325743889356927580276 1.0638322476652559515283732305904055 GT 1 -115935728813651965578300581.0977505668729512069397851941696507 3.5382595291727791540958283885216026 0.0462098638896187510711706979401158 1.0473116148464925028199220131858762 LT 1 -128161334643452526738195670574382451.0272206622242579000877913330448636 0.6811131950170128474778099771083493 0.0992408689804154171752006063506008 1.1045173922756066775828782948818311 GT 1 -46033293658924501136515.3395701477222504320884329578598683 0.0201730824888774926228307197975451 0.0998658223771893993716467518113450 1.1052114405225091319846450375275449 GT 1 -717025119969.7193550086014378501263779621650052 0.0047588587848732297962402643227920 0.0590584155761062021120009114163950 1.0608742195129612847815042210141818 GT 1 -535.9145471196094851469376725925238559 0.3265832206362643924465274255887883 0.0637586725328637298555343698727502 1.0658820072460680756440809525363585 GT 1 -329248.6014073212063042581336178184975429 0.9719255020745992044522275271754755 0.0176454439957279597058285142703613 1.0178029807981736421748313184081822 GT 1 -42270969786177923837347240525568349.8477620848644745914868306361156876 0.3170276651085639981561710258738481 0.0747007710062818643456317018846590 1.0776381029775610933952162303103629 GT 1 -2918527039445.0188597460832246005195084714414762 0.9469551090223488913367958577224838 0.0203819644052792646267605362807894 1.0205925428907572302561999894483673 GT 1 -18639605230321502874994883476786716090831.6742333624212685725321977416223068 0.3016424301439162691007360056148086 0.0903891268935916314420270640433784 1.0947383828942916002249213541604063 GT 1 -191426050708663.2988962053506224254307249260565679 0.5731593329305449688457504111783320 0.0721783880190561605711816294070696 1.0749157931430071759708514703434279 GT 1 -3900103400084234043907885280455094392.9143879079833314661582504643078327 0.0384676190443689395666747100399054 0.0784798375821720826015554148545824 1.0817306221139798524858604144717930 GT 1 -235.9252920039915231328422228661436263 0.3281180499232815168889504150108238 0.0427253771525732106963607469643314 1.0436649664719498484062218384819751 GT 1 -684071093.2333956686537966081296237593149473 0.0613481488838351261461678196525438 0.0145017658113324832257481160485481 1.0146079441832885597240948540089434 GT 1 -61315704141.5421214641603620709085197753624270 0.1338285495096690304251490671290073 0.0767917762691456127383831698412452 1.0799004754139315862991275379430108 GT 1 -11484969337035656.8205527768130734344387434037756573 0.7604539489486661238870610347415349 0.0474331890243611785926666971056668 1.0485950316845929538104115058026539 GT 1 -3648305611447966183064.4828567079124203540436976200959237 0.1471928495781431864911474111771492 0.0529808920722299465971470495172585 1.0544360086735675704077937499518036 GT 1 -448109321375.0268400188513460091993779354764227 2.7910608245018574631446307880864847 0.0214397739267482481780053722300687 1.0216729446550619154438728620504534 GT 1 -1110592.1856933786622692798566195737040646 0.2250324128848563583098068786643230 0.0778097237756761986379851645561565 1.0810037033723391019122901658947615 GT 1 -400405715606281673.9672467088328642547534962736693128 3.1803935872015305694491345716658317 0.0879097361522292579247486209477086 1.0920163202880685957324615561753314 LT 1 -3559037127689246398126736694425.2167080641734655361901638059586228 1.2869965154840636778731901447854041 0.0638924845851997253341805844419928 1.0660249422050876248484865275766771 GT 1 -2356236019646678322895698305371156.2550068244023879938806634210311884 0.1503102103618650561009313723044231 0.0642293227134734338066661228317512 1.0663848354216684621342141451359776 GT 1 -972060.4035961379408435463846563832517967 1.3613817654077883063043234212099995 0.0645374598027308763253133753064773 1.0667141766167301631955119503251365 GT 1 -3333285017090628060.4747680299961204032380347108664898 0.6918070827712425454878171893575865 0.0603466388964644086244285844558765 1.0622442365120134323972257231256465 GT 1 -788130791058779173187500563624100.4285701676876082409240050744646705 0.3291052989257541908141139945041735 0.0109550841301148512099361110049125 1.0110155329509527055576007057541934 GT 1 -28980460019196568.5569807024318144342956580033713183 0.5731080099371742633509699845992734 0.0819477490450044398022575442799755 1.0855009717297996587624116926104902 GT 1 -1018.5934679363778034682271796701554503 0.0087326600289890654083786529997293 0.0036709656506794188567737950319778 1.0036777201805819701166077955101972 GT 1 -380933207.8289520225122443864319826427602478 0.4207466358383343252043453500879212 0.0565519246201745532629026514046856 1.0582139497316009148618238268542942 GT 1 -269065.2356992693208784194257716583668275 1.3193986971160670735060374608847763 0.0393549624114774168115689898156692 1.0401503059987946299281088204459879 GT 1 -62317496326054496901445657434790760270.7540149884073924353592658344337145 0.6045138972170494167819688784430699 0.0491100023826937578284912695373294 1.0503568933507157271498040479443649 GT 1 -1292773309514608235700603718.2246311927517738532575939232359270 0.0565280303043483010517787551925107 0.0648550710414788213585644312042659 1.0670537574716525479279713873746498 GT 1 -3691982571753913615277908703759.2117260873437923176141577699115523 0.3613026374731099119674690941506996 0.0086241595205534415559153783438065 1.0086615627873631998177615059520074 GT 1 -28933033600931929665132448.2235705997872069991570077755484439 0.1943253070183472465724532560364097 0.0971992251251993278362895701393242 1.1022533757373960628380914053486105 GT 1 -480025902378668067092.8241442614382419874575884638767798 2.5780175728861836769450994762512373 0.0199758235659374649207628080063040 1.0201780377911386603991777309900640 GT 1 -465691599578.0289349076487066841315970976414445 0.9726189355396865004123042213040145 0.0806639143167790341916767341830105 1.0841035154473612171364631168037505 GT 1 -11406269177407077492402380.0484830926247314703134414421658414 0.8196383456978917112348741097041683 0.0163767587183817139501100641967772 1.0165123401254178868804147876687156 GT 1 -167007909952806903417085661527421453119.6736643164727236965348110501088365 2.2851143191440134342511016710643982 0.0330001721675680643770640370240181 1.0335569615718451988898948767834721 GT 1 -194773961704054658227381.9185102830316296062687141139417523 0.0739978357852063173372670953013153 0.0691345900588107516192027768587430 1.0716405772026613326530475206308853 GT 1 -2147667790133837136761348124142042.6794235845295139303292368710394156 0.7571557151296177452825609507380324 0.0260256461682534325969975888632426 1.0263703064544900583994395399403645 GT 1 -372308238989446.9448185986669058555725683383690034 0.1168633087562700515802063649635356 0.0793627706411265577427756016702648 1.0826892080963779822973742517685719 GT 1 -11214703037961028982040050858233043774.6257941793187982345394733507576610 0.0017356211427960706847956605040246 0.0124059270527405810763711109452682 1.0124835230001022552326730500254706 GT 1 -225402829708779.5301380221522571750109078744650406 2.8906013874963455379083254036768957 0.0309595205042049309361668283221438 1.0314488934584367066443492030532745 GT 1 -159176818554405074955306764591914.9507236084227428892720922157066377 0.3534684526466084737969254207496960 0.0947127908226700764601015483174104 1.0995030274226804743860815482892047 GT 1 -812089495164464327504249752801346553163.4081294871043178880976395461980206 2.7754039850015026509405317381080664 0.0456295665929360878139008432316692 1.0467033879248776069708948114677345 GT 1 -32.9618157148685344498742115911785246 0.6544179035086771613660229830216852 0.0621762158332406732842795879388841 1.0641932109861079127423297759922291 GT 1 -62284253780444467745126467843556102865740.2924014963967502786357813309675735 3.1475647451472771313251440295441086 0.0178536497875812430193754530830594 1.0180149489290856502175330371462017 GT 1 -264736296196779247985677877105944820.2680242113767086148055374749242091 1.0871655658360831083411773076537051 0.0942985905510385334933287153323070 1.0990455974039671823217481116735915 GT 1 -2023039903528440779376925703129899515409.9404489676493532348180113436368291 0.7136711420734521965863476644156010 0.0430347318917024693623996268150697 1.0439881806555890064279132974349431 GT 1 -19804269766481763191251084730612851.1469542232599917054157460254838710 3.2420163523122701317843053380332100 0.0036929008614036166182050251682216 1.0036997364537554253470610771066003 GT 1 -74824750193188556145605269.1137940562125671264512853374372967 0.2543686591655579293547414448704709 0.0529898051413718660216278702827630 1.0544454204277879225123429274136586 GT 1 -1475056557406239650173553.1418159740895951759937935971648866 1.2306133242963296062276137591709894 0.0811527903287169468953583746262178 1.0846354276072637763199692049256703 GT 1 -29745350952181707814046654644029579.7414845819774867081295447794151915 0.3000281675507473601660523223595074 0.0971247970213322587924854174229805 1.1021709377974532630590954639272840 GT 1 -515654308593084378112.0980365331517380261007280552309601 3.9761693198250870410460678507183025 0.0651585508296676555626447147544559 1.0673783371524487810039056577846116 LT 1 -78576430242.1625977439270415667904713436874324 0.0556934354706856044084467841500890 0.0053328263071217145702740819162910 1.0053470965818743705708986454755718 GT 1 -16791.4182238898955330041957343632390201 2.3357728281955065804957847402584653 0.0131229476275020384098714027891325 1.0132098143062506922244766860051567 GT 1 -87808072287456382570007275234167690730.3373218174011652714480150654160868 0.6609424489410914891902981203786803 0.0798164817094142723995898725401905 1.0831821524290127422415853106786036 GT 1 -7968913193482387514298175691375010759081.4601552465063887436531880267244134 0.6657425279481614239721613891478087 0.0166986872597938214637176944832839 1.0168396821616220517569031869560644 GT 1 -429322672663.8394342877762573305717289887389683 1.3072949072466074564712510637688604 0.0133069291063504710214242526315740 1.0133962596493499434860647258482857 GT 1 -1581256571133672745392.0844544868987767593328831778535626 1.2678123644789340052010926751925262 0.0016217191935869665105804484159288 1.0016230356035824682766754564768521 GT 1 -9742844821505233634658652014.5679667509563705114872932273582185 2.4110198683193657502327381952187852 0.0282054943377523259113904149396415 1.0286109108005013999487341514853150 GT 1 -473338489839869.0589337251132184223824310171318790 0.3527421387562666911230141583891611 0.0594708496778746774707492595882376 1.0613126362268202822360576823690297 GT 1 -749137747488123899908325793452.2150819000300889184199942338594730 0.2566470792467777589167316545415092 0.0534888945993972926445308719406178 1.0549725752789267571668008207592266 GT 1 -1653146992.2376107198616142142966023325030354 0.5408076397283100416133780725635225 0.0248458053994970494102567571561439 1.0251596721802070953606257838246418 GT 1 -750089287263.1127347888021595691608345291075069 1.8254979972403653347451727423344070 0.0086248695870604369391888345882347 1.0086622790311249424541883150216457 GT 1 -2250384064576830336045675728535917791660.0239187753769532995879937013540764 0.4205798273219149391827717432914092 0.0568649054594860985816375200379990 1.0585457462271628581465835039733651 GT 1 -4584411685.1988400443457898379261147734432183 0.4192919449221900009495730088574932 0.0157970368188912233110026024324638 1.0159231398038173502372802801320318 GT 1 -6756806882554776618375034534054559900466356.9956000496643141074627872475074944 0.7524428438880756003553881586848125 0.0192064069879521795687322941933661 1.0193932462317549516545357217348882 GT 1 -472009814031097242.7058205985746226495256857078852976 0.4534710986093631188132928914352582 0.0611714583951778716780398886775871 1.0631224132466758928777847889351823 GT 1 -20407310905753052405315.1398435033534835334038738305813845 0.4084299545748383798622078503026703 0.0999985638883315396973357094664005 1.1053589199794677740580714628465539 GT 1 -37273477083018372976810883870708628230.0531872708889039351061405524043023 0.1472139192191793445222169994922069 0.0584289914667492474558704461046772 1.0602055130881898057957749590176233 GT 1 -176341140017741790821551962.6669085490675810663111252217554910 3.0313092899311988339334285637665665 0.0515080803100195693698936888889189 1.0542802621051919769204271655055390 LT 2 -11565315132636539497968659.4318317080920183935769416691447868 3.4766118942868411436752761349268357 0.0636492652548926106122344525493687 1.0657651560852590774066119546690079 LT 1 -11.0716515627288657525025206335847494 0.9055902189403032556815664580949486 0.0496605707321277202480948192739702 1.0509360642356584666023448188797512 GT 1 -22453003.2004066086325156544077598373495552 0.0622263243724181190360237420731164 0.0490256268293649367975730445845956 1.0502681640441677308720111506182342 GT 1 -629776767377.5956539686913663154185781640699939 1.3312147890415219904238039176441484 0.0523186433471986849681890486407317 1.0537369549029267029731503805719875 GT 1 -9306091014267510863945.7973173599097612744087047017745523 0.3214824984316662613181934759573773 0.0547579677255161505027727934350657 1.0563142654722397160069571986530590 GT 1 -13514357688602113210335699123443841829.4935580600254949574556725691598570 0.0363082615249983300779998873391169 0.0794140444822271912691786090069985 1.0827449035074884206473071835114570 GT 1 -6130066.2273289721065904201791546750316917 1.3780286657332015362139887198814293 0.0933306782565616194359712221053614 1.0979774799709932635247878510247787 GT 1 -39452615870574574315672.3781336370535273151342955453464220 0.4669105937851226649861266901927312 0.0214509214384374683673724553351768 1.0216843364681435264449418705882534 GT 1 -947980461181208024943463431207186163157.2189525166121545221350956569602829 0.2579658164029760550291888222232033 0.0906875752031331114250321318814639 1.0950665422098205159588754763562827 GT 1 -1.5408885707348643822903036097328996 0.9543099077713760965674582459021355 0.0167969571315168720078960447025242 1.0169396258729335200748521472754973 GT 1 -1.2860115133723109836904391591678456 1.0106308375395310477551734481104719 0.0071926493204715195640474675502961 1.0072186411309051480880755253068489 GT 1 -47103189021083855308651389977085337819.8343562820017822950909990066849709 0.4836580264082695660969861489700595 0.0691176661726179423367964085685500 1.0716223965589625059593180435869296 GT 1 -51270059426045694569266640307233.3469419357679022665139645664898069 0.3564427596916772275889420583287721 0.0081137091067014837226962235350171 1.0081468043829660194703486270542440 GT 1 -171083691.7117678475376189453944648162386865 1.2513849428176245908957041577647603 0.0306787661177843028586670120244825 1.0311592113145455514475255633382166 GT 1 -5742512363045490838767104605176.1870569868742982206814552641295202 0.3488158700373391332673220364860679 0.0468590111527121104612847755147442 1.0479924441430226810466560011105865 GT 1 -1174.6874320482109175969580184085311110 0.6952847483259826284957194224954166 0.0961697440803333070418043656974384 1.1011137062213228592528986730257024 GT 1 -6494990739397619322.5530854070572280321872037800566333 0.6352145632518451015688751174380765 0.0666007271580560998432655670069738 1.0689222245089966444464544324925397 GT 1 -7842897125380635665631.4642872731968209850881435211498487 0.7555945698839982609644935603401243 0.0984563360582753890282273428053358 1.1036468027454957069117561228173715 GT 1 -7012243065968.7088026853659180203266420304648225 0.6426358016346804903421792945821757 0.0834991823915749077046060672863788 1.0871923196041117729291327520546386 GT 1 -1446186.3263116255540861021069588613617595 1.0667837153251798021884400587235007 0.0456321188529386886304716921811206 1.0467060622149918058226473674435238 GT 1 -805708217463276866317637952413823338711.2398704056691505079803731150343035 0.4762061859047433550496257815172011 0.0648726374224975090776304489961627 1.0670725423096664579725169968008429 GT 1 -4141870263525255693802.8925822104142061683995924200248979 1.2611480912309954809116846043509693 0.0531732784458291913247248831884803 1.0546391787218007467441364232769774 GT 1 -702875279482.7038961779586469187723235613996713 1.4468551309709854211419210169312146 0.0565793803566374216680570648154638 1.0582430516362933012428774372681342 GT 1 -734358027021737.3789779578075539997750856142530523 2.3346129878268263578762631147637396 0.0661876021208840369461753434248142 1.0684797197299281728369694464493102 GT 1 -1220052549750335082069610251.9233623647022738544073989245726466 0.1579622760256977495404630634744837 0.0545135227344186122510750301366204 1.0560556931904699130980278363248047 GT 1 -1361445301788432536873.6950791425753545781016796495000561 0.0293061963744652579859071804571028 0.0912290826099114186788075389734091 1.0956622326385547969262757410320186 GT 1 -3243691071505677892363634504438716612644301.5830608171277147110400351561857325 1.7580697470937624816197809309111100 0.0666143428584508321660256210110526 1.0689368118352346960459677909023739 GT 1 -9912267565156950894801414551178.5954012608538344745921441723465755 0.3525333615974223150191125317898497 0.0598631411296252521743839868593889 1.0617298197729924334888104066543383 GT 1 -85783347795854556.4698632201214979663950530343064367 1.5059601301827814071575183073056318 0.0271812199505271099996742067014584 1.0275574628070361038905443379996689 GT 1 -6138918018.3754287580777411659106099710844469 0.9296381708881278455693018674275072 0.0302065599016688642630270110418645 1.0306721785136642189959275187359936 GT 1 -2459854115650227807106650509.2487546339880768772948540516304942 0.0573192459386929477182152267005335 0.0814653106899405832729836658453090 1.0849756076911219037177753495754307 GT 1 -368882767703386602794409.6841889453644123808030779393003808 0.8417489684281661621354088524938790 0.0622189614695156944468110002935636 1.0642387916284320786510322375000678 GT 1 -1524991841409.9071938002960702009364505400330152 0.6407098772035803190695152421472674 0.0143944116603347246492212979276604 1.0144990162314709790457375287880273 GT 1 -11426526784332697584770579.6636225970683678798781892365107550 0.3762304672952882165203544498544828 0.0461756172073577030538268755807790 1.0472757096026129156403135257255007 GT 1 -6617342416621197227979714452.7769818181569004333327975580444056 3.2530031820820729782311755484779665 0.0320960290828224559728212511353764 1.0326224002245194988953192786251969 GT 1 -3722665629138431627485225554.9499599740026640212845844846400763 0.4899034391901076121657193248627409 0.0036210932854907222601393385034414 1.0036276653138637850552257838165404 GT 1 -230301128310543101.5330294602722126145217324139610865 3.4276183471798800945143232358513939 0.0829478700891679356299246175595584 1.0865909600199587319605599147880545 LT 1 -2013929640006076286014596621381020926886062.2253786722439544753261015999246736 0.6272278591876938086964021652843312 0.0224803239896662036068927010174526 1.0227368584143726096502250065709620 GT 1 -8203971040075924.2354851303417715255003689544265025 0.6575993446739837648252693033487915 0.0570397377140548000027303677267051 1.0587311369121424535736504484241889 GT 1 -21291733.0225040950381869486533381785735250 0.1975873537063357931530474237435072 0.0424199307511118386311420192338259 1.0433459381871272016589227469575805 GT 1 -7009088.5517209543488244895635229255307028 0.0472363372447170474783251141280021 0.0414743854999225155534613686698845 1.0423589933270808529157182010148181 GT 1 -1527721414680.9496300825941182390403925705229936 2.2772093667368350843075013331578553 0.0578892553366768161366408423020819 1.0596324479789403794559435921405236 GT 1 -98874372788591876894162933987717798.1596030795342299915434083027728043 0.5043632764531269343606319320546016 0.0917133021269535589888303305718661 1.0961952036620786992196313043009480 GT 1 -93.3706895343321684226793535469343008 2.8179069233386742558442148781000813 0.0046732293803801630248360558484528 1.0046841830561503952316940015574848 GT 1 -4934546051737534622830347.1287653844044089620291838370189678 1.8202809191904846411528585016842837 0.0953453552527622685806352103283596 1.1002020161271802493796480710799664 GT 1 -25634981721.0259253023581133558324964651930053 1.4760784442033750892424308607290548 0.0783710141887490806452145808441870 1.0816125379169912229644556913921859 GT 1 -1749678.3130261440658540600757592382579422 0.0501236018929484581676935391126948 0.0853392609132882368313497035519132 1.0892020594157997211072360254921434 GT 1 -1126026838390487.4943514659425801405833744517842313 0.7985198043245191360266346315756905 0.0911006576254772060668575011468440 1.0955209253976424215180345974915758 GT 1 -8377144485397619.8420366896997091798342063279523665 1.1217266890481218495377316800764068 0.0614690879230433641924038712892234 1.0634394857495205791155480456406827 GT 1 -1007.5169587618891428787911086315172317 0.7316427643480877075388123178915063 0.0378835456856367712879583898341951 1.0386197812620859016013506551962630 GT 1 -67366745506.5795859057666970949378368829537272 0.0280205176799724360958550075192607 0.0279392435443372558023606891171199 1.0283369698335283600792857157946610 GT 1 -7.7347919735191532665501248472140273 0.7486393506199241624644515277199209 0.0185105530023492511780980875977518 1.0186840172361583704996086429542678 GT 1 -3704429592692108457983.1724223400543159643660501513421315 4.2921263867022362998937705189719069 0.0111485835905045964037943600920141 1.0112111948345905321525579417647846 GT 1 -1104258822394307655808962232117179.2159397585729445386279281176656993 2.0243102443232323151795676095815800 0.0185217379940052806670556890636985 1.0186954132378397509502549872618478 GT 1 -4583763294109283717869592.9666452738143669822196015665110138 0.8399816032311617248344871528901804 0.0073869565232335458070465606197751 1.0074143751970548538225156296490356 GT 1 -165068854912036178140373893970786.9056718509733467427383566821594101 0.1517739578689007562485748949028457 0.0140898308801173164006075831209158 1.0141900348992263261458408067990952 GT 1 -2769958747430410020380555380624805299.0530761185097915392830122869124477 2.6060499466533532949534433324133860 0.0181938298617553408936790533065015 1.0183613728614884864931380916799538 GT 1 -40177341708725835003916329.0015376577866963701053978330228468 0.3890229492362879886131644410164994 0.0210507401391248189260376182012331 1.0212754663332036652857557537424476 GT 1 -304213346459928783269270295364100.5775175753716333563729760846219496 0.2814183800369661940524923355103864 0.0924572449113637876509374593134180 1.0970146009075867110784950373635136 GT 1 -1363341110054180877033116921950057095296.4302117642942907454563574492583046 0.6067774365497152341236100984892140 0.0141270162475539769606753106930859 1.0142277524011604514926800153864354 GT 1 -372788406751566824398719249561628.0469426505624797507536269707897439 1.8338699300382045165350631491438298 0.0780276963341243967321486933824408 1.0812400952846793059581600143150074 GT 1 -37213083982639060.1628377908423546126420880642667927 0.3129965179741892213712076910525808 0.0380342523796725943213060297474650 1.0387764343345923495393702643034990 GT 1 -11079556169810330639746538247.7371139972406690324585026876446886 0.2443133006982587970686008566974181 0.0033979967122030279809833719352788 1.0034037830146406608482165135591328 GT 1 -2.3190534669515404351624794347957524 0.2972370187935949756388163101711731 0.0008194925605145914207683027961188 1.0008198285281041278100125828019493 GT 1 -891901810.5151875781206548947716451963667720 0.7367154807886315701333527100341621 0.0962739700105411293151921987340044 1.1012290286941397007216189330729396 GT 1 -3725.2422970202992408859226957937299488 0.1243599188345914737320257256413776 0.0009851680182124019843944102220062 1.0009856536151803883749107594384362 GT 1 -763.7460682550531757853649410530841318 2.3318086407565011246226153682648524 0.0278609501202638974620821911464166 1.0282564293213232329595989209209692 GT 1 -84961.0465673499053372959040451210550539 1.3821242328013622231439220205725114 0.0664766680309377624991194485413567 1.0687893222376531561183307112182683 GT 1 -575887095842123665744904512016550289122.1499685299766238337073886750198036 0.1115228687767350777276931262660223 0.0278095965713232530991937054463701 1.0282036054041982786807278878566379 GT 1 -105842565530396.7950542341455505351440685733625135 0.8830815892896862405590797871487882 0.0871794380165128486620759805346366 1.0912159544133485287695112543103404 GT 1 -694604429441595076455732982.9527184102461561377427033753644793 2.3623528848690398643920016385939292 0.0252131689096602566736027169608160 1.0255364666674961618920909470585160 GT 1 -4865627299057690217936052.8334738832314565900600535309916217 2.2410336621778492964313705322904945 0.0472702524454002412355774238060599 1.0484239962847454591140890453222128 GT 1 -28778209719178752720037975.9762260797398528429166887639355070 0.6578164282272514358486969227697528 0.0189509312859364137003870724492681 1.0191328015911688466755277926351693 GT 1 -10730106.6410767193450170232354609117564478 1.7304186165174847661940158424425049 0.0595055706827734778493732488765068 1.0613495533662741117240200908523492 GT 1 -530529822147211785716895623645551951.0749214351844489570273356199011582 0.1053521524593086771928504898586424 0.0246968361434848524411462530283706 1.0250069190265368100709576871739730 GT 1 -480883889337020066287489849716.2904879860484932798437099960961616 0.0094444067609030655767045639811527 0.0172988611230836087573363933651113 1.0174502346880853208162170024805374 GT 1 -337358140.7370677766814415281922068972343581 1.6585588586129801219099914249598163 0.0625665256980457678650928381346460 1.0646094843999860721178282645273332 GT 1 -532699473819422035657399856.4651287101442960248034717367260284 0.6326685248501688706129759515189812 0.0226939077980625675705388752251784 1.0229553779496881179752356028695402 GT 1 -375104908145765648651249503762685892789.7197768444629586351017316186276913 0.5168942809078027489107625919604218 0.0826413639578272615031141029683839 1.0862567860826031134376761809967755 GT 1 -180779726098584588847960050960738249435927.8248912225759131128428009792331478 1.0953832351000790536058066499141434 0.0352346962100564483407716803963537 1.0358704157309669491952629353586082 GT 1 -6763352153466866196635.0514954170086594317368766968896251 1.7172408616567804543984910893545847 0.0505339184608818643405744082142013 1.0518554718121782181337398083875323 GT 1 -283433.7198255483448923143292131544793495 0.8028252721228566153490603220372496 0.0430557398444156519191014398796784 1.0440101335769824044609320831183465 GT 1 -16519883204080387.4086520237824388031983054866133227 3.2036386496507634607733213830132089 0.0334627113368006516020250276270433 1.0340353999468932667122660493091250 GT 1 -432535922108933477827352701.8539601832895557464518222888335992 2.1919868108409559087351080022568582 0.0384800651652067498167214432417093 1.0392399811107222158385753359479875 GT 1 -6135803027762171914995602148361988111.5234518966065011874962761950791455 0.4406449543933840166421216807744726 0.0368860511511738729293345405356574 1.0375835472382708328982714302386076 GT 1 -2227889497680712.5207200109491633746534662496049419 1.6557800227086619180195096110035730 0.0788263445688967578032221822436492 1.0821067095436466901240005378828376 GT 1 -845016023701677842454829539617216.7648864183316010234723722933168988 2.8397892969159268573141339916630746 0.0383333231122074186829175043814082 1.0390873780794930531266272889118757 GT 1 -1399997047999940370566813918013922.8642562439827740448457304581445675 0.0592325800503248122798541022670400 0.0468314396565157292514849515800813 1.0479635175752362396150562909295383 GT 1 -1135135184186865954881512400179782248174927.3751507155350431176090722661063200 0.1222220137095645313400838137356396 0.0260931013327714682315743297161259 1.0264395664922448866432824808195390 GT 1 -81200170777479142902919928097575871496473.5322421024823498000636004615181831 0.2049478083787250304443948443887202 0.0994480760614289561216371056819473 1.1047474547974094840538508009425794 GT 1 -650908019.8864221115084223255145026123745953 0.5240068630128515333234260122626836 0.0234811354747722744487563645312516 1.0237612103417855980391412131113787 GT 1 -4965749290146675802587740628655188393370.4902046102665429756635794951180436 0.5517010643521880978899872023384951 0.0647650095432119297852563103370234 1.0669574545789604047602198589893934 GT 1 -154105769074.8052868840277610712117670560854866 0.5604192244012507589512014493125401 0.0888464913742613488359315786327628 1.0930438902911602825487460727399001 GT 1 -2655.4239138828134203815778241510153266 2.1765911525198669099969854238233694 0.0687155327320116759793822913742882 1.0711904981418918542939273990742055 GT 1 -214876243367582682488082256026463873314957.2199227437674353225923274626163264 0.0129507272328521799047440441851299 0.0672189092671921073867758893366691 1.0695847351042350465181420247860368 GT 1 -8612771518652255177697923050983.2331186158214894517153924302634809 0.6714772607393135802823981868177708 0.0853044405185036634102245500389203 1.0891639909489668448118239581861154 GT 1 -992794186644181372.3595782211776920873595382948183628 1.7093556195946689970689946428000432 0.0881449646187469265696074890674856 1.0922742539749190080254351728702148 GT 1 -2452208512590754062180374326689923482196651.0033908137398985239271296273304294 0.7356255586481711010237973088467549 0.0544387942967362462354379017742419 1.0559766592894273495522412604878300 GT 1 -3624006600288080887283263209467424685.6512960125838842823110753933020825 0.0228540101007655108211476528684886 0.0190141984807130481860423314298828 1.0191972929982874551589173955252338 GT 1 -240907381352669028297471380320402242274514.4201364368549994006054724246065072 0.5064668915639132483899024036131169 0.0056237335491433226053313782769161 1.0056396062759560657452448517580580 GT 1 -5765947593804224554463561029853697501475.5802293983710622054987695944728375 4.0249775134533592601771465685503928 0.0681675938810357855685392291220389 1.0706023022271851932428348831085374 LT 1 -24.4163375716082478891557646395999299 1.2015249498932489639251192461551377 0.0288075973241131203727638156542384 1.0292306813229377788689054543743737 GT 1 -3621847616810647372214733163089173759920703.8011336341961833683234933704206465 1.6854725569408714269447835265972201 0.0785855952184125071016929272851164 1.0818453930214648937295453897410196 GT 1 -287542818402558792574683072675109980539402.1971188265787952351225058313830624 0.0739317693421363495999171625450924 0.0239889759489431283522674546261598 1.0242813974985545328837020303514132 GT 1 -1024648897723487885956988246035994903255746.2796497695169253017732437150092612 0.2872178166815319285360678714327724 0.0150828984202848828123164693232830 1.0151978021845463058204616709289797 GT 1 -433159732537351444.9126549507172560320018364862783824 0.3420582255750253494497539896399606 0.0042765584999183362745040789239490 1.0042857291313870778884874209956341 GT 1 -356087880933741802551983029466.7442292243463433554338149632095153 1.1426292221893495712519827158879181 0.0330047577252089692386115554102709 1.0335617036290632239863294036925952 GT 1 -178180578.6689033749479513858045001545436126 1.2089028283099212401156905947664246 0.0963087050973161914955038219768235 1.1012674648497535253036084515373167 GT 1 -818540123528264652530222797513527.9439869643644882120094722340177927 1.2867648712151885152193526930787217 0.0924118442044594262103937394427969 1.0969645761885522983727042427023192 GT 1 -48496660653389921762264599981932687734.5805152760372365985699224730397332 0.6307482903986543668032239794637634 0.0852115761497331462373717840427476 1.0890624712093065343505096392740777 GT 1 -2385256619578568123.1249224651104478071338915830770074 1.1147222344958361269720758971537129 0.0540560010614505465228648824293077 1.0555719094218910012196530423217334 GT 1 -35538.9574104330564281858653785731731662 0.0630198523615648367675157191107698 0.0181867963752736929919675727387452 1.0183542090632741722808600473646368 GT 1 -11113334962.8343569052804677057606170014850418 1.0866163898918084401373514995210135 0.0099903714938081988791361576814594 1.0100406101369662734280640945798866 GT 1 -16201501920930933086955866384443726273201632.9112689682918758960028640276173299 0.6808143263124865048458784117408745 0.0864949050469144937274442289401423 1.0904663257816155823602851939527634 GT 1 -405148074929658504751600515892679945239.9111420772851865687178409257989881 0.1041667443135700291070846531771420 0.0096544075624134695670075961083414 1.0097013134986008647009440528597276 GT 1 -6352470630679579222376605725568943413.1214387777254852065025015558161314 0.3161208171900029893676882817692266 0.0017607667092934383903305036784399 1.0017623186810367304613411549122761 GT 1 -317814143018883980.5391045393946053560122007868120960 0.8967544302157053856495641282258022 0.0735006770097228482601159559494199 1.0763419639744454084663158165719044 GT 1 -481.3970485999075165811955699146455394 1.2048475348820699103097321968855083 0.0249707203440431417883864650599865 1.0252877780188277933402927612936049 GT 1 -1446823799543356259804.8421891412682541202739248860115851 1.7026470788559564077161456201144278 0.0914529591041162030264263309566601 1.0959086138447895577185674572927153 GT 1 -4914885862739979239946714418676.2844051825134047964600676008020892 1.1326736989874581323270596209589666 0.0345901606215471976630357230859544 1.0352025637852539934033548328811771 GT 1 -2318900630244702923869098705583380411602.0515414113205275458390711239280109 1.0296650522308340148929438238786108 0.0771440081472973909751801448688439 1.0802820784800143064139974188518654 GT 1 -478438375570067934600833921911.4578608811445469472509862680911722 0.3395437574227593777117080559790527 0.0029946466093975765297844316975659 1.0029991395356147078626820809425036 GT 1 -5041353480387537948013575756153.5864505372235582502322007193777957 0.0251395047576407758274335917497321 0.0147682031578914997108738626718114 1.0148783387517855947565863546315021 GT 1 -831242563261189417686640278.6476468384426541325005776849567204 0.6991594734971373105347403022776501 0.0142357311541660649621347367056586 1.0143380312129236170123295232807350 GT 1 -89487842.0357601653661296884639162746100261 0.1974486692050277864753084332653269 0.0907503608897401459612791878332968 1.0951355920243724455749100981389643 GT 1 -1480679311393901847102067864052358919718530.1875014261827391293135052211667801 0.0057710853665204935027346149213579 0.0136059895235411462095169033991447 1.0136993992545954995973779686876829 GT 1 -1162946580771231320.3363599580584920163197083897787137 0.2246353502442985834365891379727232 0.0489547018322006148459669051453416 1.0501935854283248292937636764270775 GT 1 -30989356257599.9055499216058393601172413291986962 0.9898781368284635609107104972941484 0.0031637803891700730844102967194437 1.0031687957234166056476245537681544 GT 1 -800959468276209984110949644413121668.6091077256802856562036896521602428 0.2906042222428982421310860918120775 0.0100258834962994040597125819003587 1.0100764811410434666128593566664360 GT 1 -821065606958668800777.6492201952065250740122118871253313 1.2226186846181429490187536872142695 0.0929989856235712330472049667496335 1.0976117104812655704028338702227450 GT 1 -240037028996003740580272704.9433350317529294600833459878661555 0.2389299470469748047906187379306760 0.0024224710554625952874322156512474 1.0024254099857449585718038807666497 GT 1 -1253443587753077926644492224.8353943467837201694572617442083495 0.7118715999024479188839952619255976 0.0419760665350878713998491207832076 1.0428825185833481753052403228073758 GT 1 -1390532119671325177392945842974943257715.0425452632306717181647222136564012 0.0892412341521283268736762016477497 0.0632200369764781547903111648157369 1.0653068556725450320623745989034576 GT 1 -967501711840247753216968.0701071525588522313628388365350640 0.9715889244698968570061282599966499 0.0127414937950609376783719486982130 1.0128233627927960425636149746441676 GT 1 -33381796002418358671542571925113817478.4038228853670304151785854510183973 4.9566170957513784664341806578185833 0.0469596206189500075082646065355620 1.0480980054164757232457262090724938 LT 1 -704931810216399057359085718.1245864683654833695437781200183237 2.1612966217819943101721417662849352 0.0300899878030334887995376485561259 1.0305519827191598824948002845557487 GT 1 -159795070269354713930.4894714466488849046245815736260386 1.1023234330464845001261109004220898 0.0467382608393880181114400636045961 1.0478657654389780755198088213965237 GT 1 -16.2743548710167214818889067795836630 0.3668601527188491182771870469678850 0.0225451702327359521951230374313428 1.0228031981470922830619133906244819 GT 1 -33779953401936274586.7698708944009124091956436589942568 1.5545986417929259928095597144099914 0.0670909416375661774938811976314055 1.0694475551658742577402841641302792 GT 1 -47613987667879780533.2617863200015113643215075908084792 0.3720197506565188806734522422465913 0.0308821181531151727016077953876248 1.0313690213977478305799750377730489 GT 1 -2067733481100836498816149640526241471988.5040435498238962039551500913548251 2.0426818210833719871678868258602526 0.0533057295340422425017695043768377 1.0547790779771956071639826548528347 GT 1 -2153927.9979661189920481443514315914026692 1.6137787563813577467495007101276307 0.0139364175431137516818878874271707 1.0140344412081942819677758580042312 GT 1 -217922246823809869289121295.0720636670909061850508862931886519 0.8287371828348272543062601904469179 0.0185452266504092202204744110089320 1.0187193454413148487911419388464217 GT 1 -14615502765010990161235332532.4938628557075304846242760730187406 1.2144620620792482257502498257392668 0.0622272832271425060208721825839663 1.0642476655491110626214090854682356 GT 1 -38432157962205286117067.9493552432578251929048823079884051 0.5511629475914601263641807234849907 0.0296472907070706709510274496438280 1.0300956557498874552098409852633994 GT 1 -2491237924037934189036972531293765172.1213412907170679819657254979026159 0.5267298794481782013623425040433715 0.0298799159624970978572841459330239 1.0303354171702385797082397964538873 GT 1 -2094438789396134724801141935681.5146187206537342850238176743715702 0.0914286085189361764442626606719100 0.0691943997644137569041344214070467 1.0717048309889604525097762090533253 GT 1 -91827266357610921.6139681442791042029248044302243385 1.6441836376428129619666973338185808 0.0087310691218421341211152781509380 1.0087694082299122508606489130406110 GT 1 -2.2649777745735419867864149098670523 1.0351441986034431151890222045127622 0.0172001990330604748052445972562340 1.0173498408514750577858780644435241 GT 1 -73622907665476630716740543327543.1913084690553987477995764531913635 0.8194712983614838679408349086091561 0.0943192969743930572732209284663498 1.0990684599719618924138951619416831 GT 1 -238726252018732.0359670326291688246110422390695167 1.1286558583075823661222770153947241 0.0440622268709338125200416401256563 1.0450624589184159501787457984466667 GT 1 -5177895729307183633899271548.5784125527493735773537256645119407 0.6609561778688035412703260556967346 0.0402326827907977551880489396611493 1.0410644018056082369910264412029660 GT 1 -361612131926422099696139975193598425447.0999487387833109531068478149422804 1.2099964612583593744429220963585237 0.0810511989972582454387202610238777 1.0845248698185079703301355420612892 GT 1 -10241496279950610685.1470583458935689186450587345924314 1.6341459462109416518759877716039077 0.0843048089423706633360764447434782 1.0880717305393014911008941336503863 GT 1 -26515609793837218634189071307301395921.2523685713930662717370094915324909 2.3864237721079119253302616981022682 0.0489170654413525305847130865973024 1.0501540125013207974772616625528959 GT 1 -1681330883632641699586977772049472913162.6809117065023567817501731299738104 2.9010677595583250594503636171384253 0.0841951058232615548807961468461519 1.0879519346188702161402344157364963 LT 1 -46423593731713443556079634550383.0717780571039959946012904956583901 0.7374352710144215099705325170805120 0.0653231178535740748715077872731879 1.0675543900122413537056415498238650 GT 1 -818093.8963831176285026030758306689093743 2.7486093909118708322937055953722470 0.0696221634239325206228412023087518 1.0747683569450373382182660080284694 LT 2 -52079007034993203211799031670.3371278698712541633944208976518124 1.5174479925964850576064547657873286 0.0907472071311051895931045180383787 1.0951321235015049483251178170086896 GT 1 -4895208686371349704091798269165192.5225462100659743316917153138745150 1.3298419141403840819721645030877832 0.0604073791142064580361036718065057 1.0623088796916134787941582552478164 GT 1 -157329499509899111.3972255873688808301783520876428209 0.2879007389689924962801239776119535 0.0824360932616570600025293533864762 1.0860330483582679545028728710806781 GT 1 -527190518.7099473977285862435166263492015549 0.3757791979097331264530440543498571 0.0807470429379890298107726366547995 1.0841939419856837991653929093071061 GT 1 -1346977426957913.9650954006950636226235463005023407 0.4092644935771634373302527127880524 0.0959329997184560211793827815553000 1.1008518059806775879108894022255345 GT 1 -29056574286796500183384389826972.8853002230223463290436944538071882 0.1749495359405274277722610047904560 0.0569164634249735234730504483780542 1.0586004142965475542079485696698192 GT 1 -120719605896.6799211122787324553142503321446649 1.4430384076257128132582881438746048 0.0183901208713583959987904730271811 1.0185613213240981445784858445789933 GT 1 -4044062583264148598.7608087292926052794338767454067962 0.6771571497527359434101530154711880 0.0033630547662102455400274648887947 1.0033687225458270460045005523907455 GT 1 -35663090211277097124220897351.8367117736281108959721857293506786 1.1601346599987931084989732475487199 0.0376940854341927853189585129301291 1.0384228803580849284122249494595347 GT 1 -3.3524336368602834325790616458434555 0.4252254471762528404418626775333017 0.0319023375131553428339023978291892 1.0324223057959080947026091740440986 GT 1 -295831240711382481575.0471697204772492227983675098122602 1.2099824300244408116912205196779502 0.0809121782854168023114215993681763 1.0843735989347961794529949223125177 GT 1 -46779914581098256513159776687072163368.1967502189946225931633720839574635 0.2713268355866602478755901372477246 0.0119657043199567118173893351068416 1.0120378696099601772353912179351549 GT 1 -3.6402525432555763209122493056409095 0.5665544210244289123701841735874595 0.0147468644124057870514676938414846 1.0148566803821778301337814653474619 GT 1 -18920263490689414447790697898112749.3073592297072011075744817922248651 1.4659187188060982752052518511617339 0.0492271337809722471409179806834360 1.0504800817461501518706371813476044 GT 1 -1033.5227731889457921868415754345377377 0.9657941071261129962553747075514502 0.0635483763094917040935955407347343 1.0656574149292913164913122143401970 GT 1 -86436393892.0695575196229414526720437953641678 0.0380149988243812593736421215983775 0.0804962088110742480683400298924815 1.0839211118479189095406876118725688 GT 1 -52849831.1125983326492348482252534839005100 0.3119382093192307890459277201130855 0.0007948210859633823458723424077214 1.0007951371237161381707473855034154 GT 1 -6247595930946806897059653950682.2523418762224439096862328695228639 0.7735094493810340122778480334247445 0.0256801842965912731647584523153452 1.0260156763573676141650432327807914 GT 1 -864122940137726183859928.5958753419689271659414732186666865 0.3173259470859544516269649453411714 0.0422225675261317397259417132628723 1.0431398531868062693840795491098464 GT 1 -19098.0537795552105423238080589825182493 0.0003791524939046350482567068604715 0.0034505211169849281654133857340234 1.0034564878945897277739051859704545 GT 1 -714797830512398892277826328750.5492813338797278552498254580324137 0.1107238822485131347208290841209666 0.0612535740949071425569211356028354 1.0632098832025525737934100538159176 GT 1 -1224683760764392024063993.4668144404386204272040970074204898 0.3368854255373155964712923028699024 0.0887392275753986859690536600076794 1.0929261741383602665428837705024640 GT 1 -709091554998040634540825953904096912371834.3909813106771892950518903050027378 1.9837598599508810358488780966976332 0.0749759274693731261444081126328202 1.0779355174509051151672673269283458 GT 1 -55160416830401103671670083257762709275537.6803667217908554447053081064396443 0.5749430390890159363415614227800903 0.0094408052930543120000269961964565 1.0094856521790127103790892630804090 GT 1 -200655680.9536587240156267262702010252843864 0.2577602554095455708055395096120639 0.0454848646707567045778149223711796 1.0465517791277590411647988876376957 GT 1 -3047208676027872520882486.1380258901953612463799452433141184 1.0118816160706545191761360405402602 0.0919708388357422986221313274715288 1.0964787850768785812181901254601592 GT 1 -323711896645382299290686752585198.7241082022770968483552232617646462 1.2430544111297077074481365676823820 0.0627829722917545954037130351106823 1.0648404038107653538261302719755689 GT 1 -164750059009630578721219251.0042534918401946602953968464373281 0.7596275899130090024674363254086028 0.0579901827561146923893538990918045 1.0597395827574412286571063361470209 GT 1 -1514732780328766596943984598283216566236.4470544425611280045131989390069565 0.5301542091663137866007804446030184 0.0496517890405299601946332182026005 1.0509268236940650334407699981244463 GT 1 -132297709605205900078864403627802993525362.4170946635462996260345086109974620 0.9216215806142741701074030492816515 0.0049476390649610784509291426956084 1.0049599191528258067292556528379719 GT 1 -11945944451541780701723352085684741320.6623513131604547471074256599729857 0.9161507698746038215739765688698916 0.0075849604124427445139666671558387 1.0076138725155615380154949261595659 GT 1 -9183.3746990655850885649211815322890388 0.9123983293491826673872161388132786 0.0647155001344047652778552638663901 1.0669045180454734501087633418436824 GT 1 -33362483871856806427256566.4955330791643031199858293952191672 2.0296700326319210016669386581249603 0.0597375622410822857893306355926819 1.0615962535788816764065235620830373 GT 1 -134611463770155766917577293482762392.7028818970152776360311510774120085 1.6452789240867784330537836684332919 0.0602498740211807148551378450547965 1.0621412624821850428731102418072568 GT 1 -12987856805581136129502537474938934656.3237664505153437856252787876369679 4.0156684178371429265800575951722873 0.0599688677381483779992015034541462 1.0618422848390218760590562691537312 LT 1 -1176844609685.1226290715968537433393314465895603 0.2340008211776310437399908646848753 0.0446707136338290907914260967013539 1.0456991954544543876464164796308905 GT 1 -4400735418025184747688643892036.8777970427556029720174394771781826 0.6776172112500257747681673993864769 0.0775411635012025998804025124885536 1.0807125257445520808621812791588454 GT 1 -1115000484936033359713418431098646527027251.0063678775427666522070059373965937 0.0723846750530186081573038580752560 0.0300404059697833077083440669873112 1.0305008639912806320469176324434061 GT 1 -295422667186266702.9704538381933872114513944774664216 1.0830962203323931923586714615475206 0.0820572438545741360742899193941384 1.0856202474459928453434721946445127 GT 1 -19200983376139038.3333806432450037257665725013028838 2.5392541098697044713794663213998227 0.0027927189098933074488095650637467 1.0027966258249872861334365372789347 GT 1 -2127960324278.2093326908069893826466752562639629 1.8076721068372615028533131354177366 0.0819134554791159754943444914388406 1.0854636177280466879580917517368472 GT 1 -41584636932154201494370300.1964194019174327459256931778765829 0.5352647523921121391317920149438276 0.0500927277733324643863781606326194 1.0513909073339944055727598143326174 GT 1 -8091266940288338874.4730452846870949111487509222289102 0.2131983987376267846279609267802178 0.0232112574534821352789360168208928 1.0234848810815806515826180210564171 GT 1 -446094223619883.5573544365029253577667890750561427 1.3555769556594103192144874623911328 0.0308810547160429316094759453412986 1.0313679240735639583778063172793819 GT 1 -27300609260513063683757542076123701266586.6029455367393303954258088684254588 0.0399579253337868365525060012886428 0.0289430747554177207538563170292183 1.0293701870285923393150002502773620 GT 1 -34332220217823540658165299619.4202494282150417674171529905250695 0.1533573773611540891285478934226115 0.0872636340687465978628777063286548 1.0913081959107305045741866514931505 GT 1 -8576113400156486.2855839415594503196372057605205138 1.8196889897985043444226180022064464 0.0000038621294810612659256677849129 1.0000038621369391025327871614830131 GT 1 -28022205330899219626660476329.5573577572857586555722855876024614 0.0635949514889913866036428915989957 0.0480273061533187636699738364573180 1.0492189275362933257017776681935913 GT 1 -11076994201.0032168529451712736795374199728929 3.6981841449724667924763419817674523 0.0469897803639265572330901066605999 1.0481296517379266007772544205779134 LT 1 -28449516238366532390615.6406522637560188476082411788052483 0.0007809606407919433864049191347794 0.0001283779165252804988602492670452 1.0001283861576753348467917025384329 GT 1 -457759671976790438449706438024003149.5786933791776772525933825162452520 0.2904632451813959366306971854647491 0.0962813809598183342544966794774600 1.1012372291657626908615637709502920 GT 1 -1585274894955119469541063059237986180.5605755860488423992149346816287570 0.6917238622951989606585457982126277 0.0734046353562419252147813583389176 1.0762383085549918688914144197835647 GT 1 -10197776946.8395445652090459407322996624781435 0.9001244468016827573242349616548912 0.0610895673946567450304297108373556 1.0630351902602035687561259927990747 GT 1 -3361094495276541638949272198.2407251440831148475701639841853554 0.7761820642611730498438974066595383 0.0370704122238992070933838525741496 1.0377749874313741060502931468640477 GT 1 -29974585.4661826832015414329703089542398648 0.1830749782704356227499708508509058 0.0151779221832115061457434290968521 1.0152942857839936726969458513430592 GT 1 -20566817659375.2239938064251525295742527806154467 3.1113413874439503291674844810901874 0.0678108033705476731585345239101159 1.0702194842230168577780914171272868 LT 1 -26855142314448960858.0105144325854493709083121591150070 0.6874087222605547612335344077517168 0.0636169926509684502972967138929021 1.0657306903166322282415108802333093 GT 1 -75.4294581165416108695399177451876023 1.2978136922131043180216787521946467 0.0851470171535190995500778335296605 1.0889919011008639244298976839316003 GT 1 -2843002670604693060601.6865554884780782809427144323414196 0.6401739304049861500618782886333514 0.0681469930707972853629540066301760 1.0705801946224412730572460560019868 GT 1 -6390594488623774131903534366493.7529716040137003206266569059193418 1.7410274558221364286907563597619809 0.0623664927280474739185867944686748 1.0643961235198438295468636680877402 GT 1 -6603310974345381391281.3189274366195931964815428097492302 0.2713269559977919394759747915617231 0.0209867544094719539737505327183946 1.0212101068286191876522566226879461 GT 1 -38477139748990451835843809467.6867426760594207777499685962970562 0.8381321316919230558087871588409289 0.0417389680571232684597481001859342 1.0426350621940798546542453494050751 GT 1 -27636683963429613667575770384.5546521291368293302756884843512369 0.0988920409682079496759426861096802 0.0680016354213723220118871988522459 1.0704242190420471518007830517100763 GT 1 -14946255228049953810573735950753.6044030180022249011654905998836126 0.1460226909045768959993980747384667 0.0468330373780607162109295528774966 1.0479651937980477434139645695320144 GT 1 -360988093602311738622989253668678435794003.2269750658191673404867366195404424 0.4054015502702841447863378262044385 0.0991978719192588197164033642761997 1.1044696591652863174850055231396191 GT 1 -2781067923182308.1535191169926965118425151227253076 0.5150350482498358275648676132811402 0.0860999226663691108738493452844511 1.0900340380846270993996956102573999 GT 1 -3877164020378433.5107329905508031187111000038800356 0.2240834330226891462873784931956231 0.0243585590771005084159031944840823 1.0246601361717641138773586060248461 GT 1 -14575153740238238159519866.1256323751279318702738945326027630 1.7976547416344395320931972409989781 0.0998435653268144996326687429677736 1.1051867144585903203188394274369113 GT 1 -6632962020133011486988389585427890.3631265209203087623424011089706066 0.3392328179610489090102800851586453 0.0062764989969611919914561074651329 1.0062962790264497951643623306882613 GT 1 -8804827937436817442296069.6777440974755926452402032697708632 0.3030822463982820057369350099366588 0.0806421613453860960393280839500890 1.0840798541178642081242661993285831 GT 1 -12707036024274764735331254380198.5974276074716277758935884292734814 0.2448549044658888348667792079166482 0.0504139546179897184526371504807293 1.0517291310537007653310170407952240 GT 1 -98795.8914496575175942863703554320071610 0.1934098256282057666224042519353872 0.0871382874114215576900388806564866 1.0911708747128207846045984302936816 GT 1 -644427888010801554.2457282269670520705601321809805366 0.1202104978896654441220699875717583 0.0071383206905307695047943148729677 1.0071639204003767501088240735143348 GT 1 -1501372131758481481288666995953.0622682797520196443214317795589874 0.0984558651664851063982530008126298 0.0722267902847633995112554644135908 1.0749679621458005471793938234546657 GT 1 -42734367946377355179551062726839457555.5669471258148042652177509826917978 0.3040283221312496414421584799038310 0.0900503006475461070572901930021328 1.0943659564358484390745458703576805 GT 1 -3813663759167124164190123785737935210.2605828078779952481799975125480374 1.4280518834257648843408841672656351 0.0280479482215095220294361691724456 1.0284488051844325622422529961677991 GT 1 -1701895387041206105924.8413016739080989987223731724486090 0.2113715121368237104719643338019836 0.0798073105601455128516916790922436 1.0831721858262819393207133053554242 GT 1 -1124.8497137038708828790203699344708883 0.8945473089695382039619701212459860 0.0364888316898559905012016370649870 1.0371711997987939610746077621966183 GT 1 -248807256067551.6671133201179548558809157845611230 0.1207181520811774556237914306740254 0.0853253575842479122587036933104241 1.0891868590001939471291153005234827 GT 1 -13505078870274510442.3225835027472866293411100847771409 0.0782078852595459736844630245094853 0.0198670951259359027578656983184571 1.0200670992942703230823687001671952 GT 1 -60099521.9980317611574328401380710620138983 0.3461739783972890349276554280785256 0.0554199497622041961571415264849727 1.0570148415422192412741556449346823 GT 1 -1560787750857400153726454497351993770227075.5460993124512207155421050704081634 1.2142956686687008715066195340611181 0.0333769246328491716426540452574707 1.0339466471402415311361408209007179 GT 1 -108972303189.9664519858625058134276260253958587 0.3046280489750991368187994373755278 0.0376851945039683824377593670096046 1.0384136412076052635589648329626227 GT 1 -350581882639950115032.5580543418340764196327394028595242 0.0470609507040626592666415289446061 0.0009008387881514720515255301716796 1.0009012447872573990367304851741253 GT 1 -524.0204769248161529081822246278450253 0.5016950642749375932590714785351699 0.0911094942796236203071464103207509 1.0955306478131963921143291187494775 GT 1 -1891342948188542184.7296046018383278496916167994838812 1.3076333758463241464510912742501073 0.0443260671743901041746109014086774 1.0453384985600542261153554108437685 GT 1 -586267344699601846697889016.4140337654064343716751373871093152 0.0365092292125726478608527419990313 0.0992888558311056600842749485267777 1.1045706674823780712022665319938519 GT 1 -362923506.4721784101417280589408995568352286 0.7308895794211906980055908399700647 0.0781497983900946744487940553351952 1.0813725397643397850590488137810643 GT 1 -223905277639346300715949543769714.6801606589747547743045637666912225 2.2947962997792621374578042073143084 0.0203228219777029234196042083173248 1.0205321717663005717927505545983825 GT 1 -160010365836404897550045948096353537.8805861074200351439263343572174992 1.5562725492127260356290629266409471 0.0846382871463946743563285336949388 1.0884359772287394002683944791466489 GT 1 -1800920664567880915352153888157677724112681.9293879824557434594260075651400782 0.1165570947303433684853530054157420 0.0397145790429077779929851129650532 1.0405247252121833850601375679531290 GT 1 -744381134839192885307348922490990608869.1340475037605795121323459400607187 0.9061816548665826179534090097134160 0.0172641514055117237756389037338947 1.0174149145859434063134182512864944 GT 1 -291246400139099019141176369697866.2500519316715436498737668391504981 0.5370137114974686341321944653160849 0.0247750909434517706894658416905671 1.0250871586304631796025959268111237 GT 1 -54314855204799817983358582328327684912.4440593833609488800975372711460959 1.1669790202472435447990046250707736 0.0821281333203480108828633804798665 1.0856974768840066024911696375258233 GT 1 -103270455047452.4308621505489234553429545038371207 0.1766330443862788966051556006477741 0.0877162718013356733760022249229319 1.0918042318100896202488012991436828 GT 1 -10.5824508042797204278376778403594176 0.5133872921203884906838497935771770 0.0328059077605196071984692211868390 1.0333560878066185426500341690687310 GT 1 -703774314179787761591625237800922771805.5679309903576841957813430074790136 0.0441137961350574806760419152239592 0.0290351876783032124871648363707654 1.0294650499450806001254851714778237 GT 1 -254008949048373035165.5435907404564388997899038345336798 0.5070833079611378077641177119164549 0.0626053694954943430712856774908050 1.0646509215827918452524844064342275 GT 1 -310706491.0322788899570936660339310388477128 0.4532758987618238030549657322498244 0.0437240900420320005334788150824720 1.0447087988275830924921125053631298 GT 1 -1526145056397680987050.4168913661814895323928668073536193 1.1193185187706190383668665175523355 0.0059302150295541085095075998553674 1.0059478685822114310408575647723288 GT 1 -970836676819820934348183764097622596192558.7600666120268098769141091053451236 2.1821476669429137418883842448447073 0.0102366304255407149510931290315170 1.0102893850553446108471478087461411 GT 1 -81617963136746.1924607163207681178461169693272747 0.3047814866495422707092099159561299 0.0350053931130188018115369486580245 1.0356327663769222678560756617947990 GT 1 -1819747433.0014701758234899365542134602980680 1.2482851446197581678355929956308575 0.0077180358072730290382975304809875 1.0077479739877522457402970106970138 GT 1 -163163016837535076949746027362712291621.0885601790706105457930477375355705 0.2718154058390831424190076416411432 0.0382784213128232072223739068067377 1.0390302894503616349585121350632994 GT 1 -169.6254635808029061996858975520730971 0.0595036715963751622336905589085878 0.0652879855860152303388758232627676 1.0675168031113801980094067562904181 GT 1 -28025996278701422.2469382406655271210592713166120159 0.1001523152655628258308886359437721 0.0959597211490010272169435133097173 1.1008813633314557688451471729040493 GT 1 -2.2173453630322195157663816340263905 1.1449934371707998169017560470087732 0.0436088033879284617514625071027815 1.0445882481537652137400653094952251 GT 1 -2961973735000305888350242803425799734884.4390714961961313856329470062272523 1.2109838564862082847892708801419056 0.0973828486572649783402593495026788 1.1024567896173983576810848977054964 GT 1 -5226148486.1670576702532844582860647718204085 0.2997100120633454529965904400493521 0.0775124724254750030950790940530257 1.0806814234032714761225781452238161 GT 1 -4474483193303231157.2541514738484129985893473888892276 2.3011662170640073742391272551035983 0.0186565808064382454431490509528299 1.0188328101434646025210797976162265 GT 1 -756114682073204116363494027.0258448041723032242064201868571312 0.1474975588377987129533555844637911 0.0079124466737497977321884215072962 1.0079439161904341779008076890122706 GT 1 -54887565333052966592541178396666891079.3233148649791529683890519328430744 2.8618462016556205851727036310560660 0.0875081645498114832170934637072331 1.0915761410173673700213760717356898 LT 1 -20611610259788629672603918.7579813661179436945498771650699321 1.5239366543209114581794966269996477 0.0633770073437620348177851415248269 1.0654744334669275168198681573870847 GT 1 -221541411019929927812.1130610519968105575532206054349771 0.2055119471916708871396095588028378 0.0540198565225822771835525189697232 1.0555337001321395521168305329575477 GT 1 -40308541665981693075190483315.1302458054027222902572559185029168 1.0670146772802133016842520722024333 0.0740808962329897493983695481930039 1.0769684090949005959056838552626544 GT 1 -4849310822750126177406.3272068164164747796482569444342139 0.0809569494254639647296858058128750 0.0310605994905866405397933218026110 1.0315532072209439772155216831104709 GT 1 -561866693819123951794620.2844715792816354629781580183978527 0.2705799194329030136343309095992491 0.0593287928913555461127720108987926 1.0611616084150000004891733730353894 GT 1 -687547789146464380963274768021321.1821461185826279372743600384626764 0.7059425070885462123158327757705109 0.0537037622152341453785426828229987 1.0551996111867632172506821039888740 GT 1 -79188167539455502938.2660976769789418992703504079136019 0.6416868978684816340514687918134641 0.0096973054951879377380411168517089 1.0097446305610636798619446400914635 GT 1 -4475398576106101242.2532430517983082120994582973866553 0.7512076279501308843836498560374896 0.0869510516131447826339446949362483 1.0909657871333079664413875746138729 GT 1 -41651323558255921.8191900178091025878244462228779266 0.1850958640752559280099407294793713 0.0923878081180846204953254411211597 1.0969380930662821152001441245907689 GT 1 -183500404465236990615317115637509.0334916825239485161485355735580893 2.6488413961695761280713138428132523 0.0962865765586538244298699929977573 1.1012429783156210403333139632161398 LT 1 -5748561441001818640.4247294621810079820515518489146772 2.0941820075858867132267122396177567 0.0373258240588890080116496448192797 1.0380402671751097530269690818355663 GT 1 -89918531635401378259956419.5032961254110683177917820383700801 0.3284132198490390688312601387807509 0.0816818301071179346315408429769434 1.0852113581129320852860551393284295 GT 1 -29134579557079227380295685560555743.2393428971536458124105634967108958 0.3163359887140039709397406172128496 0.0444945335643946172262599740615239 1.0455147942971325620623292434103563 GT 1 -225926767080164671820283982425721.0483978357976398434181876553700050 0.1518232486449667673274030378323060 0.0704730638748310889624638355808781 1.0730794930848843170183516561422645 GT 1 -417268972332413487678816762515546433.5993338491663483114195389443024828 1.3147429315373102869843822337689935 0.0188198616619138060982563276858693 1.0189992090182456802927718843433447 GT 1 -209366487566176476535700003869016668.7893681801430048125019160758505143 0.9298985480024726553347242011070245 0.0115730012597894666289764524813846 1.0116404896395620142180047666749468 GT 1 -5239554429.2599246075692117935618818234878314 0.4176937052791365277497465882375483 0.0091433176313456149621220648820425 1.0091853743146977683247108124819832 GT 1 -53104525770056025960187451809531.0910314779097603422802227368999169 0.1520275170800164618429856112926533 0.0663118111384173484004568106540537 1.0686127413938551913507659666101407 GT 1 -195619549132639597.1763601060182221470466837158482238 0.2439032982563783922312700187022629 0.0203093247122788193708194648024123 1.0205183946030164889075120562935732 GT 1 -270330213087629067781369104438181525.6297239321590242073714398891706837 2.0712709093661509044340374665141097 0.0135215781134340796982557246278483 1.0136138271630868041732301794497515 GT 1 -18753768992967112928255609152.5037463165985370148705172276694919 0.3388869010479946758643127915258666 0.0605279219664061975420329548068023 1.0624371805983724820232362544332741 GT 1 -86967255279206271399809082156791.3017861470288197595784213741258425 0.1954385472467021765281698781419915 0.0458351595539964013903368220022879 1.0469188337326362436561063136033119 GT 1 -5266213913163687976952798270703387007.2577893620126050470253801252736396 0.4685552875714280745138206436764614 0.0307523750246725661195142448467160 1.0312351528077634081421973976666346 GT 1 -70623656981233939023585.8198396302866915698703611071072575 0.0187529499333874657516442875218457 0.0191725893542630780006180513562623 1.0193587669581038305204804414554577 GT 1 -101436757569.8874109278691407647577950831582611 0.9796099026336061671818343317262133 0.0756409265239998883950869358430011 1.0786546751708437651335198252163120 GT 1 -3728284.4846579123507541307426327300386021 1.5526929302110847566821572974336458 0.0365363831669881145599130662751141 1.0372205533009865115262328276308822 GT 1 -36873000937626345626752213920491404.1957078702137729121510907284863833 2.2373580326664801235768689061254260 0.0568570093854147685475293978098830 1.0585373741062825724584837551477551 GT 1 -3471992355.5333313437480514675491898385466571 1.5003575412102241827092722879290356 0.0309808637373174568240042418331412 1.0314709188212685262891438734883904 GT 1 -418101673310238139208.4113856592120085967388211221997208 0.3984318803942622744433370907191455 0.0428920757410818807125312169110490 1.0438391203673475739099821982635206 GT 1 -7229352419505118702027782641511621407220.1396148773252636906731196157369701 5.2348871106765649327667053666667279 0.0959627509978339270029010499379790 1.1008847147904349644293189886208036 LT 1 -2348341795444888.5635148617533925409661111496481896 0.3442697822070001909265743904958359 0.0538336926799906349191208050502640 1.0553369248316717875823292260212097 GT 1 -7592875.8828003526536307996221242297872100 1.7741606913807245530958572337911013 0.0316053482221417895110374014808533 1.0321155766742334899225230706160509 GT 1 -4521316165567701871246534029042757321.5785529707837311131309368147178569 0.5776070048384014091848430526944879 0.0641102310065318732529852000618292 1.0662575776091320267482162382681434 GT 1 -2278587344256762388.2895583323007560323072669245771966 0.6085793405263095850706151898041715 0.0306749110548909787756727421538789 1.0311552342478181796030571286258201 GT 1 -247569.5262185834382972281732394822349000 2.7003919133594748033226818479314811 0.0417637195454552371733192531999199 1.0426608921163794922777267177091059 GT 1 -645864851080268259866283554.0694602225007744692892933283158594 1.0269583654943338786795012969978548 0.0562173664502397649692932740920649 1.0578594004209560199382778023925579 GT 1 -4801015773342464751769721709785359860455494.2634627257489394787000883582845678 0.6882594372551729657806743359365202 0.0643683742815488426314333554873068 1.0665334422371116512427880239945061 GT 1 -868438712.5797076814700321507444134784547251 0.0131920438481489575061080111684239 0.0876875638483912557129751172399435 1.0917727640765629422419847871577278 GT 1 -10498505169252298796790524389203636642078.0094163339516867716567936634963391 1.6049404991400138932205379967283066 0.0629183143051082614526387919234250 1.0649848226407213974187003627740886 GT 1 -209858483618317776895856045.5218527728407944155396827238790493 0.1945951495378670604141124268777669 0.0461745139674965737235172251539830 1.0472745529544468568448092605182618 GT 1 -9293984681137805153026.9656667997029684473672594446971428 0.1018691624233779606209854034166164 0.0133799768861947500075552066546775 1.0134702953207286783885469630029821 GT 1 -18947129412531066988663451721452.6528853189131608843661932332161582 1.2276821575158525435613228635403725 0.0284604711256297728191019802005848 1.0288733224958756179772062642212108 GT 1 -171841274088037.1865480125545869487782322990156639 0.1975902141354977652002616147902878 0.0341120317319971971045512710867360 1.0347074263730690960512237340028333 GT 1 -27910.1895605419056057293047901830063222 1.7114503849781335244811798058450276 0.0254830988369749347314656800761377 1.0258134167646757080293203389710802 GT 1 -2692194419648997460874.3278172283973561058463342890637369 0.3220824393300096842140921962503934 0.0298855828090445117320613406883217 1.0303412585739903860262173080007284 GT 1 -32185726919314497084971252.7671840148701623287162249378844625 0.2264825275310778571006623033062963 0.0963219124487918677457129172377218 1.1012820798494366332736386776420419 GT 1 -11.1830677673946852606681627212992565 0.3155865933257786510326147837692228 0.0804939747365210123137694189199907 1.0839186821985138328892289792496505 GT 1 -12609448.3154995269349706088269565857019285 0.7761079084294493943100655301020815 0.0721470167616164495374539868805249 1.0748819819807230991141568610495251 GT 1 -1382856360572285083772033183857701184047054.6175678675494384719890327197031711 0.5111619908541700707240522251437284 0.0720122477166536406132652970943074 1.0747367442535623974915683353590064 GT 1 -290534398959232126808.6699666487614095797813343229869243 0.0887011102089379181227208487437181 0.0187729947544911004729314177672369 1.0189514443048070292550726606581814 GT 1 -46712524614245699778311196181488285232166.6600990028114745066390040172361851 0.4441652883242659733563984857209500 0.0958860906230656958896545933572281 1.1007999205801070123377194119739427 GT 1 -180977.3872313980264305641414418942728559 0.6532825828246895901345487298632588 0.0248997333742870694704999378345153 1.0252149757068759771555421109944999 GT 1 -4860555643078021591488143157893647615590940.9536365316368658541666749443048552 1.7353253977521591919262095554553979 0.0069962670202572478433606979102528 1.0070208556492241939505207572899357 GT 1 -1.5718969776968849452713123975426516 0.1792469879747346971617148132738873 0.0889740841476915222433170452899181 1.0931839344294319618976632261443108 GT 1 -80685350012.5571912803695134950180812098944912 4.3867145697794853376408779159744521 0.0635917920586030122437371884309358 1.0657037779815452110705225006949018 LT 1 -6217282455.6867180711565337833040280641247710 0.6156049791850712596880817258617697 0.0518450848053533255053359846853093 1.0532373774249274835117853756307212 GT 1 -30265864058835485747862736988188544.2378889159217532359821492486616246 0.4637645566119681532538175999690215 0.0661006752703966316351155262124695 1.0683866359317189330894506074136859 GT 1 -1805841017550146172874810939494814.8872079626909736646809867434032863 1.9719194189517616271041632512346667 0.0906610654727163343690764923314370 1.0950373890350982248179461907186858 GT 1 -204561240106213.7945008146939887831220491243535315 1.3237404768189770897641143811489727 0.0083461193637956815747224531461247 1.0083811432297346719245213560196509 GT 1 -1810397804037767201926157024482960552.0211853309267276747093542710293829 1.1961006122184637448162234270130143 0.0233569875012608500353807692164172 1.0236340852169927847662197776850272 GT 1 -126891143058525084998163432675545552905.5407436004920398368474701791325745 2.9235438267616931048388022263861353 0.0375896487351506153649228099644702 1.0383143587011542708216473796669720 GT 1 -185349138556799425026296874.1338898648042481818887341957211664 0.6031804243047588279576698478348099 0.0207588263109642791768584554879518 1.0209773198145387493337444101646327 GT 1 -1961347097781605386.1280869955180588795250163256499334 2.7923415226994331543843246188331726 0.0939284677712294280311693585685373 1.0986370221609621765347783796318823 LT 1 -8835227898326.9772302296959907079580373331869345 0.0416282146036385330937954823148405 0.0393170476151947297882901303690183 1.0401108387173252802707451225291843 GT 1 -72020359333637776616493539057.6824098207862121933092375449881696 0.3518061083562964250350222033292746 0.0712717261224883787383869179818041 1.0739390760878375330080064883193237 GT 1 -216381.3562261424291492898283162384639228 2.6682644233019632564406822140001700 0.0498569249054171307539555733533272 1.0511427003646808164234225353450705 GT 1 -24240558755765165135146782025350877.2406074099287539775221728230071615 0.0933846172905633881989824683919377 0.0427702314973222003897536716468331 1.0437118238674824493097562966084375 GT 1 -893429377752968140657990.8067940659249673126072858792215862 0.1314302557395245732600699897322520 0.0084124905580577177286968716936004 1.0084480752679816136263166635641841 GT 1 -40794.1134695654674874054036498647460970 0.3048358579734544144571190814750743 0.0041262280113639236990828142913660 1.0041347643802599330715754831143893 GT 1 -4414088526949543138205685368236383.2954357182995104009493244923978410 0.9053491461682730778593495673211558 0.0694576227172853711296670589482729 1.0719876614514054510687705983852749 GT 1 -5405481057019811758104076196152743.6255521621389952071917316902139811 1.1300354342111579019927024683701899 0.0275223196881757722084602629952325 1.0279081545890806241218485272744275 GT 1 -560825429210832.5161584852795361000551659855453903 1.3800329119796513917504206002158154 0.0606305892196686132580277927587284 1.0625464684270433446908228158798402 GT 1 -19025421636.7884269130084883710861147055602955 1.5630914097229116653993358655917287 0.0828264727980246993131040291590694 1.0864585910381491770880662175538683 GT 1 -121.1770023624134754639046264313158213 3.6084490043702108226426286440000296 0.0379443406716754171752929397555262 1.0386829720604846827098513845390414 LT 1 -1919029101461584720714794661628294401613592.8095190262789217458504431914885197 0.5399423296419137147672294497967473 0.0138287231626372134419493478949664 1.0139252307051184823684594453709183 GT 1 -605771348578240446.6389592712569220251670120504784242 0.1253425856566081422570361074453391 0.0887472542024328257843669782803500 1.0929349824428846922956185250414971 GT 1 -477364804127253.7820288307810126702260112288580635 0.0287228765476180360087444175128602 0.0145697811398935708747323793009056 1.0146769627501298636292679935324956 GT 1 -1662716363138732767094064.6005365548228483276877213153195435 0.2453586562964010566258509462441256 0.0482689145765240488193967987215336 1.0494727573885355067939110131268610 GT 1 -13.5388283721474005709327282682835530 0.8264716883375649448571475580013451 0.0533434250868242696137798301836404 1.0548188968547998363337383475365484 GT 1 -196281281068453601913383159092093241294117.1295537591453284370148132294437165 0.3162152726318545900342808525802582 0.0972372769507515589918829274307452 1.1022955252664506929853378735036596 GT 1 -10767781703397683844489895381505046626.2909113172636163998899186857776062 1.1345709138077959424599853881569875 0.0479530123925889842377448371936733 1.0491408886783013263137650483715407 GT 1 -16966993434686.9239329185493947141637983590986838 0.0895089295816118066935008597170674 0.0455339582006067583661912692199731 1.0466032134011285880026424191199332 GT 1 -531033385010235832031377.2982280954748765544430671234150356 0.0660483618401893935397910162185176 0.0695205444930836001119171906252060 1.0720552821259333653665895863395062 GT 1 -70758124.8285764892864898544745092034455379 0.0915707493622334718811880616301438 0.0179577805276549875266791698548180 1.0181209781991653672356274611998304 GT 1 -30873.1398071292136812710452435821885829 4.0732149310980286759896461033306340 0.0925756202668075087156992148418580 1.0971450444328059081339190221836598 LT 1 -1864234664180577967771341827.7290497928887612168673696869419395 1.1157978007375393542620208199726411 0.0933781764633045022691876369426461 1.0980298689178839830647550381985791 GT 1 -16396.0676797802218571678840263455703656 2.6254864586452303290596817176385870 0.0711774482758215893185304022356576 1.0765635616512144349592705522894810 GT 2 -3581184452321233.0760978020840222491734193125650892 0.5349836904081456427720971632342723 0.0790945949358332627083374183505118 1.0823979569440276246044384742648736 GT 1 -32338839038.3276860696435829103370390762700698 0.9933827817736999303734884330435527 0.0326241683035340917691255555561978 1.0331682016462151019442149056834562 GT 1 -686109394313511685.8599311837020907870176026052361973 4.3170874896003762004696484295318017 0.0884844904821905474454741521201126 1.0926466696293427588889915463004167 LT 1 -58418767395528438117154.0756441914091218166204712922944551 0.1052021199868597419831231013063414 0.0809592237340614222498579527356776 1.0844247873540466926911931587002742 GT 1 -5295565339813657745979106348440035080.0058365828008186866768174595906614 0.6976419900607892906523350829600175 0.0901723868534997177732423181808588 1.0945001335192731404598620609895384 GT 1 -261510738175082.0345645520000186594493374055318836 0.9674161844227188531640097422736074 0.0434437973271242118694863624028227 1.0444157331528036994077510416655306 GT 1 -3983.6934563234358938321172548680287151 0.0180833876828704819969214215085874 0.0276601985024727824336166299589578 1.0280499455960184435422630578172596 GT 1 -5173060495359636198128426412045176468481.0331701083565486069232325641693098 0.9453812466391172847763256858659239 0.0596159239131889493995591875327704 1.0614668955871831535472852935707079 GT 1 -1523572729835892168276.1946507450912183018540140654220705 0.6867107858273031135595844775710162 0.0498531237563857057463807826998851 1.0511386997656893274854526615099104 GT 1 -1061.3695381194341342746536512633238394 2.1166373134885599664905339328432693 0.0274181881566578574497170887580463 1.0278010817390856655161682516563769 GT 1 -39215036069.3111716890681118145965121896437418 2.4839569038174720987222785819848414 0.0361829831628932690316361233933136 1.0368538189480524324877586960109444 GT 1 -480.2407596005303321269135571256436867 0.7901435843670096226457372988192190 0.0333002302622213907773711673547834 1.0338673077056900821684084355718682 GT 1 -107842503902017247.7075335762629785149998359344521994 1.3068841803355950278880201219792877 0.0962974980821106123942522655998338 1.1012550635510155997432130161700612 GT 1 -550496029730144040632.6171836003271710795262990894200073 2.1462910042113049494428263335763177 0.0495780013378933100947270957027782 1.0508491839012061101204424260037456 GT 1 -158103249555085336558322410839357807275160.1924901853839515519014242740104766 0.0537615615384407987496617730541942 0.0048987647501656390581925353605533 1.0049108030294281384786101651922935 GT 1 -2427788773697643341471565743779002.2901315106790796906293604322595696 2.0484250127093465636257534106516543 0.0698946532791217866775135240253718 1.0724574232061269717464422255231397 GT 1 -42615858879448771019643496296.7675501154195405994599246828507006 1.9138435781160943237211153767935622 0.0476290049732726904087305843512454 1.0488006194460245418256760069260360 GT 1 -902825758596319909172012.9555525191980184572750067882648718 0.1543971608816064132051625943879907 0.0955800598662584689399018851315508 1.1004614909070202135197760450269961 GT 1 -48205261932.7297320135852273978378185684982666 2.3976347385793064081634961309144014 0.0418979845676360305794080197870121 1.0428010187554897857900350375911581 GT 1 -40.1814504487246248250233123784054021 0.3472475189046890057147031224218884 0.0795189759921278176075234406792213 1.0828588933961575258232798858670822 GT 1 -45136.7077866143697032096179001059384826 1.5650288940134879193946424856179818 0.0140882001829167185450565175844734 1.0141883808987878612506641059033624 GT 1 -10116494560917746726.0613570212637352804679399247564194 2.8038205125647881698922422543816850 0.0634510176935571803122926315272805 1.0677020826052167821822861735816868 LT 2 -3105018363393026129040437328687.7526428871641373467914958231681284 1.1685710434822853131213031617240936 0.0649312237408138618986378693982771 1.0671351949022142742264839061640724 GT 1 -101748592509.0311499706976435651491179127359465 0.6895640127567384573611526908414196 0.0412213633914545596802987178013699 1.0420950580546372796969003639609410 GT 1 -25633461919653608668802.4031934691848928698005448002626630 2.7578880422700454239496283434831585 0.0270145974016641534989414955009363 1.0273861993769786255286489136012349 GT 1 -17904313462599623629794563308747756631709.5151966920712911286786501743493031 1.4116656718753873511653081976542526 0.0243270020270048224406585643507352 1.0246277917689662819362595244470973 GT 1 -10283801.5846197784531173963701924215401314 0.4982938976948668682419202948632762 0.0938920570848357317266993904849032 1.0985968377455684374993565678519729 GT 1 -181526738312039555628959.9560305696080370605484036536848270 0.7215987076572667002090982650649668 0.0308133851487357018725330035427379 1.0312981006476537510709658734365006 GT 1 -106739244834891937766576130605291292475.3795480323310421836530434064550099 1.0317522230294043237180402345017738 0.0770552932467315543090362126213407 1.0801859522831815169297060226734605 GT 1 -1835740164388534849845695859151534879944.3331526627425049029480421834564481 1.6851223525526388027268939286316800 0.0312553996445981489649436769293832 1.0317542721567960910410832542122103 GT 1 -22034567724029649617160407324361765.4760186384573394845966143554537211 2.3609595370233823171553850637941207 0.0275082100663543735513509977581152 1.0278936457527852498506314844143657 GT 1 -42140729156356668447264989.2910101890604154868850089110706718 0.1524434167351232843612441070420439 0.0337830680682505568002076611742146 1.0343669027639302599505405014469917 GT 1 -142942498249860.7660103480565470929408715498296842 3.8067108158939362744247594673192415 0.0465871936186229671846659549735118 1.0477073039737695835775803891262042 LT 1 -1375619366192.1565629091162505930792877961145093 0.6995271237184844906234376861353107 0.0843549212563983681842771425359935 1.0881264580138910729845699047808619 GT 1 -137416041.6369310722047614470861858520863061 2.3437771835639404647906649491659438 0.0672378684470839721008530126244595 1.0696050607441516473601769332112719 GT 1 -36789969642641649992.9850073201182586071847001606962294 5.3171498079499345896675627833855179 0.0706974956950432149319200953368117 1.0733209695930794549971288017269526 LT 1 -5849388702518042978831040642025503830.6962100116843072720463801819852884 0.4727296865819050612063535304809796 0.0739564288983427934882398571610106 1.0768339924173688122345183267803655 GT 1 -14769513114033576635202288.6156902720575549165207387276847914 0.3082918394552165048523017265196841 0.0761022353724518313886605602495128 1.0791538578044700375510855905103417 GT 1 -26381136813235270.7421096970339497968645804814701191 0.5974238217202080252199884006256283 0.0284677891462930727302267185522467 1.0288808549204523437246094948688815 GT 1 -472.5024302703494429978382853465437364 0.7805367215134503715866653038151229 0.0706454917555231042540598463418732 1.0732650109743751362597305680465772 GT 1 -4457529018718737927985312662059793423.6716018759170663682949164492154185 0.3403353629738637229789965940893357 0.0210343962451479528324453917005775 1.0212587711292589308661778755976379 GT 1 -1542539271109.3075126241662566901939845516869990 0.6237688716555948870806495402748395 0.0182803436366623309595541437938854 1.0184494937038989125207017243774635 GT 1 -171517162260698986102601421181701.5160201229660053721532191078776839 0.4489209499834212899328996225578347 0.0016268360120199575263507279381433 1.0016281607466705997076271116621755 GT 1 -980211304914581.8900683985375127240153907768724534 0.5111511282206394884303112151870863 0.0194139994033059705867702139870798 1.0196049262316951969447661011136200 GT 1 -1713876434856507211783044342987046783260.8758491185765726640451060062663832 0.5241571699751512414684823490287407 0.0861440001801313250663587460826535 1.0900822693714182821897453436947635 GT 1 -9088599.2034170617376421288145371133136900 1.1544293446051622937237541897231254 0.0700882174153835978154317901282542 1.0726655547699828720606193482480725 GT 1 -596055588498681088691288356090.1656080489797454925761982964964256 1.4551884064458394784246182169643251 0.0509076311050996225469786187297013 1.0522491522374071152493536887083018 GT 1 -22319510637070.4805014753632896630167653256695603 0.1698669882692883212975864750526141 0.0860575041906928506851921493889834 1.0899876243766774728385514162502491 GT 1 -5109605364102822703278546743.9590407139489070760537197740942629 0.1112702928692784816037915944216363 0.0572354795493021792699667380853616 1.0589387407340176046894013267715941 GT 1 -18361914491321943.8357944964613760459644449484200491 0.4068657633438397186297594309663850 0.0330645594630030876025095988678338 1.0336235483873523182669344221799922 GT 1 -84.5049348864906831991203262786141194 0.9573246604454719901089742364145545 0.0473232478652745483261932265679699 1.0484796226509792399093991756699435 GT 1 -243557930772091507179708968166316450.1978414349595449621961670719865703 0.7961668005484027023620222412126939 0.0921391130902035222653280018876578 1.0966641203675492580261422749984202 GT 1 -164701188.1142247480971315446383074477422987 0.4530301575135309143422979184365078 0.0682330801171028520282844410956802 1.0706725815358115960025408891326729 GT 1 -401953604157698.5816297334811810409403193968612155 0.3824192151553308100706731810778673 0.0376140329576143992782356231710925 1.0383396956391286047811905962545867 GT 1 -202236931965259950789451009271916.1149193647470003154751437270933336 3.7235844406452723305731521358488895 0.0768528971341981816156134959542373 1.0799666824589076558186000863112019 LT 1 -4338011263351843157027063433784178.2170451397966906007969693670400039 0.0297604685916507182731673099474682 0.0510466166531981698517837656528414 1.0523956034472189022495426672131313 GT 1 -503811.1732697695699556687428404732751182 1.1326788249280431535059499948019427 0.0905746095822432352070195993123547 1.0949423180142381351158254923214742 GT 1 -146669472837299898332626.8770079168425710429733198809780969 0.0748832140603349485656989081482451 0.0520849332770967181710314002417103 1.0534903728051719954130099084865562 GT 1 -259370972553.8156958771665846818698137076178726 0.1489179797276804752688467792419325 0.0448740510650839013032715715398137 1.0459120634958147813727563011554913 GT 1 -89979593134632115.3970787485779965826557572147140766 0.3894851362012513766002924186401773 0.0124221057538471190903250784603135 1.0124999050684746498610135496077839 GT 1 -119073809226511.0581210045621930965995938678965152 1.7767177595973462035762966164311675 0.0658612858494502094413778065990410 1.0681303355595911942100310426424805 GT 1 -59529369611675902.2447212081908756169453842106415614 0.9188580942920861226234344507450075 0.0155454597333770212393206875039547 1.0156675574219727890499722513523591 GT 1 -57147357559655918566871100146.1358548016530871208220987646799264 2.5812456132855598089649839675349776 0.0903180002123865175095023458842404 1.0991404672371965585576357835968789 LT 2 -14198315532372388475252483413182193496126.8321058997904510184711088209666014 0.3923131723322657528353891487387495 0.0080389285488501294834019489177193 1.0080714149560310769753702120703647 GT 1 -3907677395705111420359090.3997204169984357231425851592994499 1.6087179369408875155163143644514246 0.0528379071318874842942837470923923 1.0542850358515862631325946965979671 GT 1 -20198807212553428465447419825076673.8736064821076172132041474130940042 0.0745555960814907324732668174067772 0.0672838987079770111469976061992537 1.0696544102997690104934251518799231 GT 1 -110837557990352823.5613898130847283164363752587589669 0.6285725717930273265030916998925770 0.0893426195452634685848160198148646 1.0935885441696066276506185663001642 GT 1 -57971940450624.1887634210525177355114035650411910 1.9231553450787962978374964862562807 0.0294970237688096413994922330825066 1.0299408096789693072621963427357259 GT 1 -61392.5541235431122566596890658720046990 1.1311313121833054059718731137210656 0.0010907517559031965497331360877847 1.0010913470585239891899427793395647 GT 1 -2521598558025431293973190819857023364185266.7899562054345805112724449008532655 1.1494257122633676460796459555855411 0.0487663629818324586693081572928527 1.0499955715119638896438143923315920 GT 1 -2.0572676031243348105077134907237981 2.1543103100599332935228393897329389 0.0770248454696257067897276809049686 1.0801529630101938633501714854268946 GT 1 -1078399069467029678154122.0882527684898596862492834010779219 2.0404741227331590103204843233300549 0.0248971480171358935634399981307983 1.0252123243346917074352986967733684 GT 1 -748368976597994017296244.9951771529868698582996858828723349 1.3296738505976618560594812125947204 0.0304243479122005339508722181345842 1.0308967752779672672944908144268600 GT 1 -465047631655890717451.5711736485708003517756021971930952 2.3319121760918089734278121921446198 0.0109254453671194192039006610029178 1.0109855663453562125651855975527951 GT 1 -60439647335614643671414018095225972054710.8587052469180214676040264834756696 0.7250641250893269384516827447673822 0.0618457471846002292309562395555139 1.0638408948656160209125166581785236 GT 1 -1.5479948427126483878432037642904198 0.4213426246179761943231252843486284 0.0795426434841829378851007839268070 1.0828846058179385216176815060281926 GT 1 -39.0242035944822610327379757390123773 1.6385062445090624569054890502415179 0.0620661695127858259958071881466005 1.0640758756548034959771567925961405 GT 1 -473044005437061167620449155956520243.7914035706493358264110048931402183 2.2127063529826489444770116463883389 0.0804664426784221660895244370594501 1.0838887404198141025419580611657037 GT 1 -3480427.1318134451819557941480735903279658 0.0009671961130303252258651853124864 0.0083443120928834634758231117844744 1.0083793207498345260452694489493835 GT 1 -63528484067311779217285593549707.6647692555111423550441046204441030 1.2567740807767514307164321675787696 0.0775723155597347497877072683415877 1.0807462969908390925806632989292878 GT 1 -2422216658233182509600797629341736.3044159337072328375589998942551541 0.0497888726052713330097841413272989 0.0128854291523686208464352160263186 1.0129691663992527775584946118465619 GT 1 -81883996109253557.4235689508849494958713120980316177 1.1917566382750958570855609139719398 0.0252032196610406111702915807398987 1.0255262601305090790178479631550440 GT 1 -4867426342122026282574.6935510858154907079916160182671694 1.5989717735158767851788214149601209 0.0944979081737699416495911720176382 1.0992656915274554369743830977077010 GT 1 -1.2240727892122281437281642770525630 0.7226732419220877154589561041352277 0.0957112980538881964513148932234250 1.1006066090148312430556436581465180 GT 1 -289.8515559484450202115333521975976267 0.5334286396292519854100810897743815 0.0118568348743869451749776834432130 1.0119276877585433290297526098505806 GT 1 -4489703659282274875663.2364590020801934126157759805941123 1.6138991081221437777498096137447476 0.0684005318428286151895701859481812 1.0708523118639438520400362041857250 GT 1 -4197508458413343347754180823.3453604040588421720081915325237131 0.0822571366435168359627571339191767 0.0087987597313924098572745687249292 1.0088376973881167606040384730758470 GT 1 -434279311776799868788314353.7278064904946415072647099747084856 2.9431860632793337944472680826176239 0.0403278646099877082569308320283467 1.0411635784888207028074826698618918 GT 1 -19.6342672603768433493478651978453847 0.9242622516958002996636498766780526 0.0328204658326053154441951010264813 1.0333711397819838446660853486498447 GT 1 -2097465755665843826152211291015599.8419146642833657459836584509413150 0.4996083453043793120546193329033031 0.0438217512445468511240287148244015 1.0448109306378069173023597055491550 GT 1 -861809951688812907.6748450732012757257123615611552657 0.1745034336880099355345792253969428 0.0924443355455754330240198827971227 1.0970003764824540814737115544157952 GT 1 -241511341926596169914700440748.4203267313528200670202040348759137 0.0545019751365922629350495660432769 0.0181639894807289328572964018645290 1.0183309799708461463830223484308694 GT 1 -3121181898.8141481189023849792190479093616201 0.9486965814369325940056121474797154 0.0473080641740562708598300434616679 1.0484636848523636343454872884735990 GT 1 -16.7622615413411564621203605255845744 0.1358202173390750991227504691546714 0.0476814609786789580806426288654088 1.0488557003444931177671379717299325 GT 1 -827701713787846.7737420475765468228385620226230064 0.6580921005175577916068797314756899 0.0312297565834492884095646921618388 1.0317278021029198214531574234588381 GT 1 -27926996911260466835086593213.6170809495902512907876978376466329 0.4560147947809775304244251394779854 0.0635806544287805925291551052117079 1.0656918840623195336975366283358129 GT 1 -49941708.4902152249386487459304919875998652 1.2655561386383081697264199734910337 0.0336159236065817528669608797620251 1.0341939291792477188513266355584249 GT 1 -4.8285536865330626574388350166805627 0.3515265698540536301699047489502565 0.0141306923031225389575112509621816 1.0142314811395300729932262791769396 GT 1 -1031964651561060043894283403.9780337260361195946009500761405424 0.5624344758541269756290754514935595 0.0680818395968029727951386910785220 1.0705102788783168411665996529597021 GT 1 -22737.8870268740467013554984962834396739 0.9381684080292815916362952798273214 0.0012964518295539671008310663656744 1.0012972929502874155977233667560053 GT 1 -317066.8220108376173374981284461221483925 0.0020664556668926190116584701732359 0.0099027959146704526631545873975725 1.0099521547286484999108416586809103 GT 1 -6.3299669776554772758046605785950467 0.7571369128397272103994973076344690 0.0189288969207977987187701996198416 1.0191103418402766237163232073526539 GT 1 -26430107256738163262333106193262021.7806610144239163469347321762072779 1.1400022733119747813204817190553996 0.0459002899783649694890235953295621 1.0469870951530749323282104719846059 GT 1 -608891.3340624878312853578780647925055395 1.6814510490936012561340485782813546 0.0818541395330996541035613650844086 1.0853990115857350366972350764998905 GT 1 -267336223125.5893869080989733315126534288928065 0.1790129391811614285553965761777566 0.0094313996326827949154196149794130 1.0094761569204080173085632396271492 GT 1 -6527144.2926408428299856148366764801070279 0.9724674923842849436389999439285524 0.0407295761480766912039774746019575 1.0415822586020136470918120710215642 GT 1 -8932798.4292400209890877991385082199218669 0.6760712249147514100746769049086950 0.0195663801395306792176929672381270 1.0197603359327933212706592654059625 GT 1 -58460134922178175437681309879642451931.5802738582754232411999111801465705 1.2334539991582743179771785261515542 0.0764309650829488245457146424376522 1.0795097285719959588995237768103952 GT 1 -3642474390985985.1622464198705372749212119925610065 0.5146217414361423930465959208611490 0.0483565568118377087767501586130649 1.0495648488125386723442420954969998 GT 1 -469683824151.6133222593535996724381956257106244 3.3224418006572018784279591923827681 0.0273143068892047528441406700587334 1.0276942776442377411870559980447845 GT 1 -8089873478414170712021498370141.7161427097972482718356735374013430 0.9145985740877453464595701742343354 0.0577275508152045024555106999517404 1.0594608220353455221234523700042829 GT 1 -5011769125563826436633723596957.7494557304497282482289388908315791 0.0557709082853237360641830831452955 0.0193208138795770459598163167074467 1.0195099003020757295495992218229752 GT 1 -220838.9504833235860820718679660405405470 1.5516907943405687416950182300855137 0.0735988151932654966333953401155064 1.0764478932277662964433498054575727 GT 1 -1649272.0616550495061854773175823401300933 0.2332311995526328471240218352453536 0.0773595881318260408424138310697650 1.0805157066627347570264454847351659 GT 1 -1.6746968086284819501797846894586867 1.7081708588450415498547410601948771 0.0344999915445384577093584833029140 1.0351091683559692607154626412820656 GT 1 -42310800778159431214076.2227897225357942769315212786838476 1.2147101584542546275506054314856976 0.0314411975259308819629259841264137 1.0319460829817097502193977945526567 GT 1 -25465297181882908.1620194579759081236272598794587908 0.1769293093480448598016055324156339 0.0873251442446751088055401687669319 1.0913755891372221876738638516291872 GT 1 -518702483181259207670589197733760303296588.6086308233541377239736280659973253 0.7995315562699397042664161515243956 0.0820297609050337860256585350035948 1.0855903081736921943515967306316694 GT 1 -603917619.3897330419993689847466890414703083 0.7602025016280635937164471407907291 0.0790142844876291568137518454420019 1.0823107526056627578989262174338350 GT 1 -1116452105475006.7154870895847128747792791624889988 0.7922197853289383286315974171608881 0.0883417102549893719185559955227410 1.0924900414158934407624498644933629 GT 1 -582257528440050851457757930747.7417555958302087247096822107009498 1.7943496391120924878582788240417393 0.0838590426918259030580021127125865 1.0875850426226542457180783493347144 GT 1 -6232920780841772.6287612997471141715275935627813609 1.7009789007377283878239342209287667 0.0896198014084848344008145242803305 1.0938929660756137908667271615833069 GT 1 -114908.3340802248990565638380934106074325 0.0583138324750216568874281693073035 0.0475572663828329167375368474243220 1.0487252959753933582526714320605119 GT 1 -22748949180494760603462681.4929550602056781458481905170596429 0.3036833393050606892749650021294823 0.0244744028621323043247073277923365 1.0247788792449179600912414430616070 GT 1 -75.5020629744540979374328864420884096 0.5006692542644327130635431698324205 0.0196149742733620563412884928156852 1.0198099010814629225271966741543173 GT 1 -17771419294491772946176786434347426.3702089236981180637789414698140373 2.0525248770254141113165575047404356 0.0056390783118487289775795228577946 1.0056550379406297373699510298930447 GT 1 -942845025169881584965812643821266.3022764824084337093773531070560689 1.8253702007236000625878972046324124 0.0352796417052202806446926696115891 1.0359170037891786904713556523541989 GT 1 -5827509553317779532107138058596.4660603673084104614224371101965559 2.0660806695979611501864447416892900 0.0359784828247058142928537788049859 1.0366416638994355010097019836147578 GT 1 -4.9475555103430322822883265950779161 0.1665660315275105960391211546023640 0.0107640827483708178204914314138614 1.0108224346009715834480193254021249 GT 1 -2763423116757545850723558878462527175917294.5049844303044503591108116684043502 0.0795853117426483298209251177399051 0.0292766438261426618626795350776262 1.0297137573873998748391230614305098 GT 1 -23642630614595828297819155685376860014214.7464773914211772228683462043546720 1.6639043637252894626069371469885210 0.0025567293128835162174272663857639 1.0025600033269756740975138970045978 GT 1 -3054.3927280571088330715322974626553876 0.1999980591288361004173565202179723 0.0217064845812075034485412026916151 1.0219455359585973686008446017634483 GT 1 -4967077752227824957752706466502908000219171.8839275412951327517221646389242689 3.8276853713502296858089820799028689 0.0832677342980537900563019532514095 1.0869398169661680007815065176672062 LT 1 -5042604134850627351763231799543.8168724761936058174394388139133900 1.0946394700854488695022539046369432 0.0675405075101747843640967768174792 1.0699295680968925479957200114678939 GT 1 -64477.7723073844773425313958547236500378 1.5912384615447243460699318325421385 0.0922487247240759271349132821457385 1.0967848638129705730818566313941141 GT 1 -7307035159565794961161980458367.2881687155274796267783887980913092 1.8368681071256422270950463659819728 0.0274712281210329888311001042944270 1.0278556184475197704032939698449209 GT 1 -6.4836894895886837001574115173258129 0.9236779900466517123629983639797665 0.0002240071827749047567697227992109 1.0002240322761313368140073078884227 GT 1 -7195469349511629648919.1583124437715615092077874004340214 0.9595909515537107217216201313192498 0.0179903931884041889324700420039447 1.0181541877716580677804629677457295 GT 1 -370.4793894652568982832850125446708719 0.8877771889503585791273762993875338 0.0116126121106011025241365967990874 1.0116805650771800823667390839577276 GT 1 -1548718289435212914385854686230944383691691.1000431789225153537260371303532054 0.0741604721898151057483525409847902 0.0085428521823356620201093896843579 1.0085795515047758757633338026374977 GT 1 -12520906741809406693.8665801608683341110365599245175008 1.6725364152388443856326684111263877 0.0500746893249371690757174896174851 1.0513719178203307477526984999195405 GT 1 -39051744026525395077500706391177597524.2079076089515971030454833528703573 0.3104936538381453952205816339762858 0.0299689330120537494313144829190614 1.0304271801749633054634749296586216 GT 1 -3654952064296048867.7319969870948106729425882619897521 1.1805248298478394218926064320388561 0.0721084895932162415313840936109751 1.0748404599193211375677703188371162 GT 1 -1154873357803701312976883344564449197.4329661525629191548734243845125206 3.4835029501118263699799673045271964 0.0714392285346098859767758144118098 1.0741194491030078400200084083289371 LT 1 -8693163349299361359.9239138644278374696029493867968808 1.7941021146573018544589974442450963 0.0363851088812502239463151217207747 1.0370635547299117915942487668283484 GT 1 -64203.0409505918710304234189788619999891 0.7305638522683389526513252211026205 0.0887070208737213982277337725164011 1.0928908317495245636196354374394213 GT 1 -83569732106662965249924244303.2521918977048755032232138233410012 0.1674499149726564521893796056598579 0.0748253447150017912068694399885241 1.0777727427689858414802913506086168 GT 1 -26354304633346.9418219332427611537558811345287161 2.8541844714329956976777219927609791 0.0363142291135337164829249979566232 1.0369900013200616462610506257786348 GT 1 -674615635961005805888124245463744907935.5523223710128610456663411451369425 7.0021223667599938280906963469405183 0.0992231057419322021521882076020294 1.1044976721720566494815096538482893 LT 1 -5122364801.0643892103799458503118302347578246 1.9241231701612597425431958342832627 0.0556281145077186755093771605413898 1.0572352439171231805958882686526321 GT 1 -75055280116851443.0674689209163918014174116906199582 0.6298757305912592850222904887060278 0.0373393247747099471306417501926953 1.0380542914533416475254874256864270 GT 1 -2855748.3075076507696397143552283961225865 3.6622296264432164114578370391099534 0.0429171057636858446735169629574552 1.0438652724336552233428899116568685 LT 1 -1656322740855407158976708.6464896764687607731299667170212129 0.0467272739538164238577368213960611 0.0537405908912260323935485175225345 1.0552385307039324870348335632544200 GT 1 -91.6884448811928569442694100433484899 0.6150678683717955987286145012219746 0.0197522641983974195118293202256214 1.0199499476296525387355716396302932 GT 1 -466012831485732082.9885077791951448806701382725267937 0.6905889621761189852401958490386325 0.0740880612874716680201932853040994 1.0769761474406973707703636945167420 GT 1 -8051247028729.3805963330106423873899889449355753 0.6649659888343299494450405278970177 0.0649260089698604261636411197827761 1.0671296180328493670875683966508583 GT 1 -1087980667625563495007.1877889695738127212554318924526938 1.6096919904091037090550331020353931 0.0540896364302774453404725928966638 1.0556074675171619798118034567537498 GT 1 -7889775683705126021916507676.9145881844847103419569904253352157 0.7838667751315494396840050845695092 0.0730860460898939462443528119235194 1.0758945398279654095934752515162612 GT 1 -3403887.7869801988884909046427867826435123 0.2844064501997415411856385906865051 0.0196768694353719036546546762906559 1.0198730365989358377462460296705979 GT 1 -591223794323.2762189566195304120206996477974633 0.1742045397741530751712469059682779 0.0156679442128584861466960940213499 1.0157919837868058261659020624655121 GT 1 -973.0812707758097013960906158978615206 1.7634685306700156250316108233821430 0.0675071292189173659151444941112987 1.0698937727683701177274225483738441 GT 1 -30969614262509127484740022.1775337634478088473037385926333867 2.1841505642033055628976560330281817 0.0715691961248043706557772424428489 1.0742594256027750582055294160788800 GT 1 -773809929162985916870.0430117479161558289802176402438059 0.6850618896430957583456740460186318 0.0801463391103886679433780672325395 1.0835406858415330828133851540577123 GT 1 -29833748583706703807193071.8038589492214697621369872304568732 0.0380126355567415869193001789223392 0.0503313196795560024537429217404443 1.0516421127750385424855622100116156 GT 1 -1530290.9731899458396104249111774747380096 0.5680819991987159410146415919599826 0.0943453219143691250480397628222401 1.0990971956111474887590955573334901 GT 1 -739308305007554554336048933.2303360742616075280022576697583966 1.1093145969821423691272673575132013 0.0173639368869174075679150391094868 1.0175164581980170406461859679292341 GT 1 -85554496441836098156780994313.1124321549325298123609642952077774 1.0746090151170519557813300342712412 0.0000655764726196096356453136007872 1.0000655786228504938023692970957181 GT 1 -118825531998071877615801358564.3602815688130455443480971160970458 2.1862772873490340328088424200519686 0.0619332697726347974046113809661692 1.0639341915389706843521223293050912 GT 1 -86870519500624678405566878506927.8907287438101506225256156480886675 0.0916435272426914564176490840783360 0.0710553278480829605020824982743381 1.0737060982906997074592184437675519 GT 1 -179186898996081912797.0513148475287333257542939781219948 0.7626698097213884971549012002482128 0.0714522552976632423429224471744281 1.0741334781841737071141469151144785 GT 1 -2.5468193509027780178651567190401561 0.1298245189243391232699585742348399 0.0648443242570744978863387840384168 1.0670422654319478853289499269490555 GT 1 -3711.3483164827637411070247019211425942 1.4197802423458894854941313046773684 0.0408803603461980905959360214859688 1.0417394572878287304085123747991865 GT 1 -73623590071227097.2296585629578447044293884856529831 0.0329342242547851707822421348067746 0.0996219959532691172706547169634720 1.1049405993386581220633901695893879 GT 1 -17970464718755712425836.2180953375015061886560015027019796 1.2699747928339905961337818096273574 0.0015334249040570666671773521206277 1.0015346018033035348825562984362970 GT 1 -411034246376308872991421.5709757252077334322316591031654667 0.1524701817861443238040798069187541 0.0939430918670567645692060763991453 1.0986531624030133800770790551950719 GT 1 -75944572982358307781910536255231665503424.3775286539225782259938294085527433 0.9509446599215389905577437318608025 0.0492176673386757322445243469681544 1.0504701252197215033608780381459834 GT 1 -110210056.4247797168488182614144816404250648 1.2077846295639735500952056596572057 0.0713696755416298505416228552331177 1.0740445478253038811662799336798956 GT 1 -905364014218993460489.6207855660954246510404001812340328 1.6582345514934072248516763962925257 0.0996410665487278034605090772281818 1.1049617802175108615492609580690493 GT 1 -2763028951.8660829801058578433094932942907834 0.0367761262143330103895458079848259 0.0770231105201111086249957986827039 1.0801510832760802624774949400863616 GT 1 -117885758569418035236253860809062091547755.2685828664513582451431616382866297 0.1421827728310136186661727251495882 0.0266107594453541114120171577241127 1.0269712351114652065906634439190047 GT 1 -899037410.5504577857890790935233012220333200 0.9791204374793271310024670096411713 0.0898716624379285002357346252546813 1.0941696591270868227620671166703262 GT 1 -5037531159798696149082784320281739933534.5112256976695646709957580219255020 0.3658560641376074566273785057261339 0.0170952941373386662810467947758452 1.0172431056881207261344847673035852 GT 1 -3.7830237988335466027281759702188821 1.8240873616498551078514925545043789 0.0801078055207760563175763177798902 1.0834987957190405701864394582823749 GT 1 -8570380024133276487454283097342417.4757139982404412550311568980859273 2.8308504416349587873541392693056366 0.0074977787796739865506909283267610 1.0075260284179296436579249622634449 GT 1 -83368119903952541419730444565662908853705.1702933324179648073619376431302862 0.3763583456263919189504004147151979 0.0971747949336742767498027480866046 1.1022263156576254578591908325518524 GT 1 -188412541863394611599.8993179364253839698415305558003144 0.1177563038161630788454988864588020 0.0359090828064722366476513367343239 1.0365696763773112878184181229551164 GT 1 -896944701132570625705603047144535885.7607602503456968201005006138694895 1.6884818810586853893007576167362584 0.0306352485158625076787965174044230 1.0311143173995355033635409921617696 GT 1 -6548929703741564200185.9442727996799654878496648875679278 0.0539727492574797889727706504468606 0.0270843010605106130396694764252848 1.0274578408995834345304495522428966 GT 1 -28030686071430783.2038190635217782488668499830234076 3.0764314277925364164560501342453450 0.0732501012731923992001020548863785 1.0760715462290919306797181643884811 LT 1 -163036059885532034628126464.3984954682763079775305507908657067 1.6367444574948404516136143714666550 0.0526694745558642569721059438102376 1.0541072229904128447426676524688322 GT 1 -73579936950.2950398898236290958227212760245701 0.4249757980654551705245147519016546 0.0315257064493982290700602802042771 1.0320333390267348982899662808491597 GT 1 -4686398595162792370613264600555648443588.3113468646574725150007509269349750 1.7570019653412934396025990280226730 0.0091465752682093861919667039037812 1.0091886620174269435839554311069852 GT 1 -1285057100.8866766931590740244730418943450013 0.7701254947851331745928126792125336 0.0336883755957659890758277060200336 1.0342689042404415461913396465376092 GT 1 -63022521796050130689483913072897585.7162685080892369478140463384141882 0.7149567018593416425718103718007898 0.0813424876486930458635753777816595 1.0848419003508453106887630489775091 GT 1 -83876969811169315597703.5169966809173350879671701451151907 0.1442386881517042935377454067125965 0.0992760130053893936612309026732228 1.1045564090442091773564775135193092 GT 1 -275118521664001183342547181417465503.4793154817592787672976152980445208 3.2495664090781481248907207447015920 0.0076151124288064227224437023447936 1.0076442554432847977018319700886697 GT 1 -986913947329395884673072243181254.4466148212753008887852377063374337 0.5343390886257125041208091545449036 0.0931697392169392833682832173080061 1.0977999899493847410984445041141574 GT 1 -4565557534357580389643.3776895757379166941193374241445578 1.3077274503889143243652564910784542 0.0612780977278051936697891987157735 1.0632360073533905847246004105102073 GT 1 -1488810337131863.0676958109405456126557651139489495 0.3694913129792346342727715259216641 0.0867193164992269511297836222940516 1.0907120157317872430267095135856318 GT 1 -35764290475887755.7961847762775879381673482108419577 2.0467048221505915590035004333424348 0.0862336497676357817006507968054288 1.0901803745270854779744888322122861 GT 1 -24806604281773759430038.2133792946822362779392586206944325 0.7032340779107372595734984797866920 0.0141795054830919298773049283241955 1.0142809951958735778098896498685767 GT 1 -314206024792197511944577397.0565415378836983933214346143558874 0.0490239123908261010409004421992887 0.0033390277531340198907612131828963 1.0033446147465194971835879556655703 GT 1 -73279867916385110458764023654279279.1267543418487757675982655121878556 0.0624387405379747686350792141230822 0.0177864871912688472202874812479108 1.0179465677759141820664626378393844 GT 1 -11155061266960348114207333.8244192581616915424907701398302913 0.3995062913765705964715410996410671 0.0172930465765475493506705453344722 1.0174443178033845247980510154632243 GT 1 -119083069894430259476892812278368.9447014389068331678031461019804316 0.0156181029160007432487200322013978 0.0141595291539493545712342980994845 1.0142607317433894115540352792315848 GT 1 -110915231133560970194211.7347092806719165145931298309867882 0.5657711983841556869028389774200082 0.0615961421343338986651791240193011 1.0635748705412770700883138553334459 GT 1 -2345911146244374935255.9863159703605037219233008671255237 0.2836188562512545203778943268670111 0.0430270323207966182646271399894339 1.0439801348673165080724374413871483 GT 1 -5184640405794620204861261470442420.0931845760362970583384917927584538 0.6064178043053420162448998128932459 0.0710190137128551295389910906243670 1.0736670072376562130774361303959671 GT 1 -531716665552845387435557765607233111102.2334325711397933568931235751365289 0.5929260669235528878371050180600167 0.0910883506825708670116832337212724 1.0955073849988190298349732736478874 GT 1 -66.9861181669547227522582230180974974 1.4796905765311754559862088763158285 0.0382372327132445546389258601869132 1.0389874623801323809903838570878341 GT 1 -478167781063.1864921102969510332522915876444025 1.6249341431727168365300816740458395 0.0768080184978601518670612858074462 1.0799180688139636324393723172165201 GT 1 -1141511006522094214006707196604038759074.7348685619285537241709447868616696 1.6388100629076504743047423303257264 0.0703864359815614676460948171886654 1.0729863017490755128287216623243414 GT 1 -2736847743991112879798141946.4904270887814499965272409009801863 1.6463010014429694049546987575187281 0.0604455710626642745030012510079708 1.0623495278659718078388411065884224 GT 1 -24968504754384688876518266.3581750773382569962002164519801010 0.1710437182021142088422376052391843 0.0731894467947609385708439140020695 1.0760060997761425406266029914835563 GT 1 -8342678456213.6220154747853313132370403273568707 0.3772657374538582417167524499825598 0.0791645259310049673457966050871284 1.0824738970461317008435551804974628 GT 1 -22408939078120133.7143322306335712238942901891162912 0.2181349598958798543935198869293047 0.0916339621571143968107902902194401 1.0961078562364207746297540641822515 GT 1 -26084185026353963503317392.3183173188741189509009744256485186 0.3306413948420128968074370541384036 0.0128245626935345430593158555931919 1.0129075073130982871506230476416449 GT 1 -818478066473.4351103152841108123586864525552700 0.2871588336628307781644515240959097 0.0295668296724468882433393176125171 1.0300127398182385557977841859428327 GT 1 -381630497898.3166090517768331173721567937198017 0.0996760523982177851967751863673740 0.0429394161821256647565715217383537 1.0438885835581311272246297505422367 GT 1 -6094267102387415582504.0756066857775965686682234168834609 0.2646443937599425418010530404246505 0.0269561904415802274607393723835719 1.0273261725698406872341210309892712 GT 1 -1750.0923840269947332030322468632470128 0.0198647464147266765604109539832595 0.0050926677963744877257843787370549 1.0051056796244275580496950523295343 GT 1 -757105116193514777945400139469691.6067071616810781768465409539018357 0.6102028478379011671153295811325635 0.0405517084090050578772465815560257 1.0413968559808273745449678979085946 GT 1 -72398751079.9595779200693404243339050502873946 0.1126839348965868420276679326633472 0.0730723442351491817687034823895294 1.0758797577077740126709204684345867 GT 1 -83433877095028078911629223538099.7028273917138025004196372482713780 0.3882199644574761612158100102828471 0.0329998142199255553024401517686694 1.0335565914088255611903315034319426 GT 1 -4492.8107163637173772762477393121318222 0.8832710781963144132528783822253064 0.0645075672313612036848851853518972 1.0666822222706297550431746386577501 GT 1 -69873713142058323888017323035751.5455995861162706674699757831076647 1.5554298459503332165054060306490196 0.0263819489125629297696587743602350 1.0267361969225208262685004533687368 GT 1 -1688297662810809099700.7161432419860645750975800730678328 1.1981627629043091154175908804599324 0.0712946698816494652784531420210136 1.0739637808838667369517460481915661 GT 1 -91859710537148080952829.0072494874352767855330021078091093 1.2101547937073506990459772588728026 0.0976387335799179697686206489605431 1.1027403220096408945789462759871295 GT 1 -21849688912749420090351927825.0660241301675755397410309670573710 1.4398122117714209415145918450758591 0.0823292231491501898177133245504875 1.0859165835665077397632969717172326 GT 1 -366584136856799349556380197097378451557715.8945486118781471049879779795485267 0.5404394466149855725339518264315117 0.0430012126208787936320727818764540 1.0439531546364419891558394161142224 GT 1 -6735736206865800557573932118796342.7862050724297556525664692467537176 0.5411926203727689122936114171416352 0.0106228034451206832296358265535870 1.0106796282054166303502106782770472 GT 1 -752960944762229989845605350981849526229127.2540398678064905994525346183688342 2.2561055168963287010690351831890020 0.0507154783720419346231903288715771 1.0520467132647529647179634654942373 GT 1 -2401523281.1315518301059910665351315151683860 0.5855677590161161038940513959548542 0.0998932007647336639803352396983844 1.1052418568810948123402532621029057 GT 1 -35048209414158627690746.7215821562465537372668041279788954 0.6529869387515406182434637619560053 0.0983117155239253629284792943297414 1.1034864012677080115059006028013900 GT 1 -1511100838584.7484557554679249884248173243638998 0.9511370171721466688642081199460241 0.0375656475959180970624300786206967 1.0382894204407449881265157688125518 GT 1 -1400349582.9399821003302847034646809336419639 0.5069788168648388955458295542379506 0.0693946135135057244745840770506924 1.0719199514016927802949620833818871 GT 1 -4052816562893451201830672406153097780.1122386899626500492996852037334787 0.6317574258142418277923036644349643 0.0645273477128605814011241080231091 1.0667033669532944505136807230202544 GT 1 -6054286613396714.2332731855574056835529620005339811 0.8907339460229641460958631253643297 0.0420808967636298432987427817152159 1.0429919479626548484350829388069112 GT 1 -390187214758921900649570236070852210156.0562053953886831623280252937800065 0.6787136860715561871511817429409138 0.0703517463010940919854277283935628 1.0729489862078850954112018144722276 GT 1 -1295900749474.6568326300240132537155966276434510 0.9978426601394440393290313060053489 0.0719426986941149187694175576317450 1.0746618010053510684642232632458126 GT 1 -206.3654184647931500892773533510358132 0.2313590403369814345322137838279927 0.0626635327700314779463146190714097 1.0647129713078175665791308239177666 GT 1 -474478966641354655010421423.0317610055381803124328559466790436 0.0395853291836539723407805204539643 0.0744979744334584905166621479750354 1.0774189583523504785704445180595816 GT 1 -3416392413994356043034693251882641154.9213358943191907183358600667450653 0.4333811497455820967066901172019020 0.0182901815215616224792241517402433 1.0184595148276779233656688995608161 GT 1 -50910022669671551469964787928225.1221575256586790529088504971059871 1.1916743543457493698984291397795818 0.0090345176026819343384708621002005 1.0090755763411890477892666413734658 GT 1 -5209330583881166490657.6717219810396043332948843251291883 0.8489140599575000046098449899630077 0.0551390784381994631469451943610531 1.0567175352698712963768241591064255 GT 1 -4875522810556912.6893066068837490945454496472439564 0.8082361043017839949110235413876342 0.0242109508023373375736981101563542 1.0245088540474025452186486395399200 GT 1 -333853377717911973739484222581892837635.4295499311191036139844736953626808 0.3537433225416228318816314496721337 0.0141274081283546624469096207742423 1.0142281498974759296743779799468404 GT 1 -243732114327654082280.5533142877910938567746461419271418 1.9437726818598266471799590051565074 0.0787392237773318864929896811477968 1.0820121381546919105709884500078372 GT 1 -394872521134685899973996.1267041266700576783251594516466418 0.4892347741095375331659317443214623 0.0690880646351153244365393067860172 1.0715905976239298454671559620000664 GT 1 -333943469361368541339914179909118.0641623335713460725882559376052920 0.8813855507294321150723861663871224 0.0415725586241648576609911660772782 1.0424614195435468715009164505955773 GT 1 -3017333765792309545062083.4601558040357558267558741212219603 0.0249245904970682585109228758628160 0.0416988482818208819864865345159415 1.0425931957984572414475407341526056 GT 1 -42435909157271865.0532826922715559828007305781808461 0.6346591886593195881344973927594745 0.0007354968204801673226613995930522 1.0007357674309635381511500928363926 GT 1 -667148180835575493.4653932721496678783650196620697543 0.8197267646126758080171238180583534 0.0375293233934537993212918608585876 1.0382516791476202259899578993775234 GT 1 -7507410378394330438138.6639170321995383661235398718896311 2.6446508188305073779141396020994740 0.0895668524112645384961476587622367 1.0938348063555674731984596099163171 LT 1 -66237487973159387075801669825968029.5831632103213645373711525377017052 1.8834251312720360497008835454228502 0.0563062620967287721962122129208752 1.0579535956627076312974432426053534 GT 1 -2037573938326055834719946499232.5376264375997777721947246199576192 0.7397546212281706043990563990798559 0.0575836825295226348603758262716697 1.0593081514315761450996905388769876 GT 1 -6578721101248635.7023041146057301797719166107761499 1.4928095708470861167498771637856677 0.0570896493377162592365166915043518 1.0587840690945842646120601560340923 GT 1 -261645673964.0140270168476617167228378670581135 0.1063747849285538448414029988946179 0.0454487343127930630667117390425838 1.0465139277906355987890131378369572 GT 1 -635289512406838898566214337917.1496405944208155771397117526906951 0.4758512692538244764199406374869409 0.0788256823253052928145835089923212 1.0821059906310404590453925824434400 GT 1 -367690673550420.8143697259048398311785801508864076 0.7807662250508384628016193364992208 0.0963922751085095041912422684579282 1.1013599454081310673298250962886710 GT 1 -3872283144814248.0246051613989924111555871531038814 0.1193655532826595585069740763467801 0.0460176480641727781762609847987694 1.0471101067240085225530081006126351 GT 1 -46595638360268800.3540403236921628064818276644366280 1.6712126052272313687168260896653281 0.0462476693897558915320347314906761 1.0473512527584149399957661367660984 GT 1 -7076247005707591794118.6962662031350131832538199312798568 0.6271055085767027572908748219207681 0.0319530061423857974234601441917456 1.0324746455103772465849869016204868 GT 1 -105326.4320568102868785320656768344992852 0.3318588729737047109267849284929834 0.0691135939602560565995246675745001 1.0716180219959196407491011145173332 GT 1 -3380716159214513328.1240219454133215139158442509825813 2.5452956163405154146000654260296970 0.0020411235547146829263908959146948 1.0020432094863102222925782755107350 GT 1 -8864754478422851171645294.6581416050121955527794417918453575 1.3339770658641127376209129793363132 0.0586603492582566999537943968463402 1.0604512579317192954011367866713983 GT 1 -5790114.6294872875177201715737870381727858 3.0536859533345050168613506867810561 0.0065246467432115997983157311360529 1.0065460252931691865041859257346554 GT 1 -2431594372.6392596748344703766571851397522947 0.2438819139487554567686647038398963 0.0463573899218826031914628820935172 1.0474663002820370123576037195325218 GT 1 -204377261390263067129441574207162897062.1256552670657064787112429846196735 1.8747954230930784828340281560121025 0.0409839548869002532744491464085414 1.0418474731509666661522538795672081 GT 1 -6354933599851722241854578011.2790596153098936417948792968464593 0.9382921790070295821257807626920633 0.0647573530464771919925168236504228 1.0669492679034486023014761924773387 GT 1 -200151447178236856829.9155694697221474664049012650777745 0.1815140744204436207576199481690368 0.0707451135102599482926296140190024 1.0733722112878078505231804566804774 GT 1 -206398208360137985296612925723.2562957234617291578652722819024385 0.7924545973644954419585699385933667 0.0312763828198773803894446841652264 1.0317759325640122079502248889193901 GT 1 -2288928.5482022923089453313812854572638932 0.4719699014244002228507414510492343 0.0123554084158498129129544638541074 1.0124323710681267153877319600935522 GT 1 -2532621761.5129853751073271570428372827343533 0.5872557268478537162525233549783912 0.0434333018138340261941109939875025 1.0444047610262502216233222554356740 GT 1 -4117466948864235015295.9487086253515003969292968475734585 1.2000594629062556954976054540276874 0.0114846974322237689489942828372349 1.0115511558966743236084992413485012 GT 1 -132965247022870.0377638482367210917931821166998464 0.8963538160780588912996118581868707 0.0396116763861810558100904353804846 1.0404175725454527121137036409330154 GT 1 -8007554984916880764772830746956842928998.2505474658605450536442254226801802 0.7533391637047351502583305115924334 0.0898728240490726160751478361198453 1.0941709354436648993725791948033963 GT 1 -116729052844773320536675575423934.6635902192138506387862314765422688 4.0099399179810451403657574588303076 0.0175377180326408453136797207850825 1.0176933258307352848499921288059115 GT 1 -24477064886222249871883187442455689059038520.9136579411357034884404970509548907 1.3380382460722950659109306369461279 0.0895094507000414082275206946473227 1.0937717595498828384645125969540733 GT 1 -1310681.6636473983720233395744526293510800 0.3859682487690776658245492514025807 0.0343797854767585558166029613048749 1.0349846747418433210159957553959357 GT 1 -5217720619427029594781870984918159.9308589539898200556610207774525576 0.9372700615828165210748741311130405 0.0357196798452251239494895218253769 1.0363732381000876378055953384894628 GT 1 -11543036806322237575894374081274381570360214.8524983604532628359861678814312965 0.0652877153719234286975248537613290 0.0124819768235467205987597264497466 1.0125605310554860230527275639571475 GT 1 -13639392376997082357700387835.3945196540519803507637676751581875 0.0761691483500014642347202354338641 0.0981463072718655639429709623036987 1.1033029752597589488063383962401522 GT 1 -1584385163664099432343310421037328.2162456664379500777288699198942408 0.1419804929125957337967981801981920 0.0335356736330692760289342547915688 1.0341108911371084778592047853218977 GT 1 -51718922.7945965402241174503210384344337850 0.1090533422310222628059251555631075 0.0506422403857399439338085764087287 1.0519695655186378848498364158753069 GT 1 -643722210397030839.2798222384242935176153105011774457 0.0956880957794724267468579551675433 0.0943008410213267701346232548930037 1.0990480821887546700433447413215837 GT 1 -2260666895573212550465723783921831.3640637187823886981411607214168016 1.2572891775902192758443244084461319 0.0831988914643072801029808169410152 1.0868647238866024497046378316642263 GT 1 -7213610619272911439326854.1804045132215958235858596375368173 0.7022024033836633812082912114406918 0.0409345571979652026264324556250061 1.0417959657575037693343544796809730 GT 1 -170710714952158862686401.7611541667028292542141503850490115 0.0290194795638997333048569683847188 0.0411768011131041706520559602506381 1.0420485809627472447152409931446944 GT 1 -6852514197045331761341631538719141343.7870046019154268447890388436521989 0.5397335054188761277642442249000802 0.0701196378586679758910192918748812 1.0726993439688204631147107671131053 GT 1 -2037369166375409749653372340.8640818774327731380713788770273863 2.1155916225532778749187057119526695 0.0481702739122103082043715425969938 1.0493691193394587151301250843899803 GT 1 -878323283135476798918028144109470.0365414327590516056306919619069920 0.0981437373579753721106271034625037 0.0402698921953427901837662299952732 1.0411031717503498165691119321410866 GT 1 -1186975412771980619.7488286738159281885961903495902506 0.1186184379481037187956997134084044 0.0303526261808020269377005324512288 1.0308228057236941954738784873897493 GT 1 -1465913653781333130600154.9898008836102303898602372976504108 1.0614219680443770243016573850965128 0.0002750694484420863844287999179654 1.0002751072869817960778353756767539 GT 1 -8046971811293252.2350120605945885545509387980048726 0.3294282646081112031099105629071247 0.0731839307788732028714529796873653 1.0760001481828485992500842227695813 GT 1 -3889032609026219424040130197036984046.1314829150127014208506165409249027 1.5409357584137038455562235086551538 0.0513928766523556930117631993662350 1.0527605562397956425336136905968203 GT 1 -330471898175003.4327307722350204681788519753229175 4.3513786988436484745126125705770315 0.0073830905104911081635134623738760 1.0074104804213018826949766625725235 GT 1 -251777143602626382542802354906962.8929539669462879851340137612047344 0.9752187310146474981952246133561737 0.0289302186063546312512918533220952 1.0293569477800723177192890302679717 GT 1 -3857862875682016673091986226651344680.9844937901292229538090754509293806 0.8843701166847333856089959669487396 0.0832509809811847624049779272840834 1.0869215420952880992878804502845791 GT 1 -128075.6523567984181367562905058680619798 0.0433554110215230567422162216723070 0.0093453636752521012252905948520186 1.0093893055692917999421627348010931 GT 1 -421195058552651334968767.6834132940540659933819423677843280 0.0103387740156640082308770238906353 0.0156891404426909872415202811838697 1.0158135176360053002019436649245907 GT 1 -142403468.3133427719331073961420706517301599 0.1717359297773569687015842849493684 0.0828546619534151335004371195694888 1.0864893263218849560312908244600529 GT 1 -1947820797103010608.4817881145433398735895596735026362 1.4403797210502273092735503711126934 0.0234541504726068470991021332023115 1.0237335768466197870935565398280359 GT 1 -2200038391898786515349.7026904383211278666233303143626866 0.3765634500448406564600275104170578 0.0608752684603214545913083010871994 1.0628069741550350012918424844373854 GT 1 -50965930250.9583076521814145156740998088132406 0.3752605781661377941297189852665770 0.0454625360904770485973356598349920 1.0465283868123355921990074258126292 GT 1 -14097852728269146390261528236660580277078.1367949486932681286124233882357098 0.7247724575400604179952560309777433 0.0811408760507610739243377062323833 1.0846224611416886512536971667339289 GT 1 -417522137.2908867053432007412243400059285137 0.0703883089203424917390979877632622 0.0127934729638503389163614792657753 1.0128760141874030012281468425656081 GT 1 -39.6384044348725136522118770763272665 0.2586920560761468825072840260170090 0.0171508251369473492624951164625508 1.0172996041136539914811932240636594 GT 1 -143812555065519.0855847750186842326986867568108152 0.5099372317082203080430013225077771 0.0541022618208557777204996218940040 1.0556208149497761528644579786695446 GT 1 -2110872032549961055551842213.3859969882264212095320003469827929 0.3802700060024022165788180320474189 0.0794704370208409165695836852095235 1.0828061626061867998218579163233131 GT 1 -2134474207838627305999683216286715260381191.5708571055079029898126497143394991 0.1171021316407980761662997732973420 0.0935342123913678611691257715181361 1.0982019906923524727098733081613035 GT 1 -13763903660942370230866540321.5877823031107669850250395966128840 1.1795336700506294620847928857993129 0.0462196242489368263390135040488672 1.0473218481346016129726662930112461 GT 1 -3760627068503368170860179.2914699780358161789682556208944898 0.9818443285371526470992125085416999 0.0849120504855107585303877688798979 1.0887350986378505654823338425775534 GT 1 -6850.4606295851867965276511916957649901 0.8670585646374152296619691742560888 0.0318507881261080593905942396029867 1.0323690590867801770830524365929854 GT 1 -3633330673.0223275823402611688473388922764131 1.3001984500686797601549815825985635 0.0252115056085787535758802499067507 1.0255347603460632185594354014511361 GT 1 -260035998106753040057779177695501622.3404027964234509170426528407833355 0.3376984930546330290210764727250975 0.0288717225323169253879633951645462 1.0292967107987938083043790931581956 GT 1 -1661443465329624.5615558531605945360955549220937441 0.1818178154563829436796340716595226 0.0412270188041422751473145561558480 1.0421009566313798524081627239153545 GT 1 -6039950388889648320165164848150741.2989155737570714454557333617842265 0.3089925934402699469200420373112971 0.0853804535634973418108888974732752 1.0892470964181028270755855799562484 GT 1 -122019.5160034296280502664971631021237737 0.4591122107206335615897185557714357 0.0599230340943565763553123864542858 1.0617935284469340440887569588103558 GT 1 -1796166152646479613049610913.1553643109718098603736636661053735 1.0699949220583584267293649415258705 0.0471033034214060042415926982101154 1.0482487793371266392717625103800315 GT 1 -6996730861979189564505905546290.1640451905063210978017042446625023 0.8625344517148580963370216037879902 0.0957296611190897747674031620567214 1.1006269158610968891468771670342346 GT 1 -1088071256548421001.1997070461797576637694484294229484 0.8733670408532643261692144508571146 0.0106340218236982054458486094376919 1.0106909670984280151819609200548239 GT 1 -15755954524747735494818962773803734910482.1308437269657209461988460847485130 0.4245764300734270769690351447691330 0.0602163135344755980180367593419444 1.0621055509812942577070410691244211 GT 1 -21264473941759764402871835007871253726188518.3732206258818802362324059275621160 1.1994619057374706893149006221804756 0.0367583249836054411764245843180491 1.0374509381123407785523248436636537 GT 1 -674914471921152399837979.9557210595850332976186055347705981 0.5249738048897409470431625754178498 0.0131278055228163532408818337672492 1.0132147368112974486647175968524088 GT 1 -113098333660476.6922818025743682254281838757411999 0.2213943304347432457849806874637401 0.0415293550355984415328168560947114 1.0424163429806543534760788524543981 GT 1 -3986304498079230128918042809396751.9686737488239550671028908747408358 2.1076160045789228587194617500749787 0.0253055173508725648154055930118930 1.0256312082181132776000439042740994 GT 1 -335325207815670351420057716843216813842445.4908372955567487478050237337338521 1.8947984404473464326389720145245982 0.0514731972458749530046150802794682 1.0528452319629611590033494133687166 GT 1 -1661335712423669682338458052788421715055.6619438069799343058532638350953642 0.5776365827001766268925010467974282 0.0582672503503237050652086077384916 1.0600337499128438977452851719050159 GT 1 -125118994951986589928.9346312526456883389359863068026305 2.4412828346304460094567733371246112 0.0132162150231368072286380168560027 1.0133043263864817147854702336285585 GT 1 -213091519.4739904975763390885009612652785011 0.0917341103890281019488867603180796 0.0979407056609213132353777138898195 1.1030750245622380033633769388019152 GT 1 -35361271349836011629725872288821294668.3975528351475494948649559618463819 0.0691867007109952441217756479563825 0.0766672832673357812235992354524413 1.0797656362676441449419328024734287 GT 1 -3061561536486635937457250142985363547326.4787827455167108587640897040062676 1.1963823631578210183641490133927784 0.0685914468957153827604785240173580 1.0710572654136615769211810891707489 GT 1 -13800438099982.1465100430598634426484022811380839 0.0570108419243448420596876304796705 0.0037140956761933327935761783799202 1.0037210100552924041700023272735200 GT 1 -2349649799680251269709763561449457206506.2707869668405542648594196724330461 1.1802288556416866526273290304514642 0.0100409072713082501415136374027321 1.0100916571832847693399573837849181 GT 1 -3.9525713182475646926357205488518407 0.1386129800739500245959565164731728 0.0827578703556648759248333648843010 1.0863837961658575340643514151536575 GT 1 -225874181315607534.8303729696182302941496426825129548 0.1468444723861233097233820374179538 0.0937255908481206443178060356118493 1.0984131389394160258929623803159207 GT 1 -241585987788787955751307.1267734054715375790285458070728624 0.8820639198382879377889671508956203 0.0637647845853817375345193382003548 1.0658885355548378324012588392565023 GT 1 -231046701478040078576437193616.8491494043528678147877929877228859 0.1941216877142190341217077984198618 0.0101954594452824515480204344847304 1.0102477891292300952511470463002550 GT 1 -2395172300.1566548826503636047221397569786370 0.1056523487552685893715077694077678 0.0807141911359248061816806446327509 1.0841582051247847337714664032452525 GT 1 -1333414294938727685976.6077733808174359968018450067894237 0.1919528623351030673973313577345273 0.0536930030922913253401285669171264 1.0551882415317338743789559272800483 GT 1 -10.1072832814848259862369901735142244 0.9076237067332756931795234566488134 0.0720381536444726942864019237158575 1.0747646608821602162672645436668519 GT 1 -22587139700370096348025904049035850953814359.0666816109322499061401081524293161 0.3933626054119461165024445110938375 0.0839980996228610455949549112881707 1.0877368396626272533794515035586700 GT 1 -229704075865862496661502920470.5527130175422324747926703505658153 0.4495403304658989497606166426830899 0.0952545154367337342848587516337387 1.1001016073622715500560104791441873 GT 1 -19526220912699251788214530499731561.7123417099812054533510496664191466 3.0130125539823958801944141300771900 0.0551141022478747552395320020004993 1.0566911018978757506223890036357266 LT 1 -1037785514842240508745.4874181330679954309014227093068695 0.5162288928943996017760059813266025 0.0160824250877328669687430933908761 1.0162131507714569258183506794575608 GT 1 -28451157884156139726457518.8249651841445555328362763413000689 1.0755112416520375458084962120968636 0.0143754445434346679179168245960580 1.0144797722918829664001366063408047 GT 1 -5308082680481988548249173153009451264607071.8999401774752789790186271263534025 0.6721702439024445485061427463960466 0.0220078332125668726948991748029302 1.0222536183991978195522968585757663 GT 1 -305181324521312638951826632881478577.0816753271222476867592651475841440 0.3491157550689757645346911733930124 0.0561366533063172391012112446218607 1.0577738831737428472033119982923654 GT 1 -1183970414510.7120986127666889574786227033837154 1.6763636638326762691754621792299730 0.0557105214073083421067250242213622 1.0573225087928801817358087134511604 GT 1 -131217388357521104850310180.9681851838508614002903075696338872 0.8570690680837190567512967964701600 0.0994100854504721151627916731106182 1.1047052697677236879717767688808518 GT 1 -52987757241576606071869926.8333117407204341027992018869334156 1.2594434439298714029095300033888824 0.0437077737962223538769872190040204 1.0446917366947350707881234859856546 GT 1 -33562490185935237.5433825509846058735481028989639885 1.1331292101668561468491325656784320 0.0937177064547367220278443982558565 1.0984044391912953300966717824129998 GT 1 -161895535148.5870864275663527805253039996884839 0.5576813228790046944905550380876551 0.0791320200751525959576129147305710 1.0824385972742979065197938966729346 GT 1 -51588121526154953.2636195558504644718203406647716015 2.5351547622299338818559363442780966 0.0194237366871600257963238335754893 1.0196148563471510431748365427574355 GT 1 -392465496916426528856939998688751319568.3564086220644388206909584214160639 0.7733703101668361031808700325491793 0.0766003389382934213347990122732784 1.0796931359639979419781085521070510 GT 1 -8.4393581995721555563296558123508390 1.2448294912709398573237276997729147 0.0537682624422405602712173107681180 1.0552677742235814333948612323834856 GT 1 -3.4218538277895537794043716962384093 0.7070695605963485988446953239064945 0.0606067023471786787608265528635089 1.0625210401253381839242280020282254 GT 1 -72.3772151548263150427008021822505976 1.3197077602170955584772689839334030 0.0351633711177021607869362798042774 1.0357964884704485106875822197541130 GT 1 -1140950563608234421419174583082081297548078.1633990701714211963613445195776465 0.2422903757495767265472857482268450 0.0139500331483395593871051171854774 1.0140482493433605333026418841224876 GT 1 -67982110897577373499934917924521.8419908491029238482601265587924357 0.9457737348334261367216975949667949 0.0280494746359146955737561455207023 1.0284503756483263007842584781332425 GT 1 -4.0285879696383198565272292733180381 1.6084576372749147438405282394486864 0.0684481367595365035817500354832251 1.0709034133669898093961167650480324 GT 1 -97890996120393418790363.1148320720193309305499878001475719 0.0743015665205418112916980708058159 0.0876716411666365717410281327177497 1.0917553111271398539679283237003606 GT 1 -5471749387968768637094452889855776731287059.7578556356948467830160690891494360 0.5285274138614909866399348849323981 0.0275787104095250796083097557674074 1.0279661429187962206007602969865459 GT 1 -441.3737670064951959471876811275660646 0.6552835037518699119724462144468159 0.0475768286812025158364577716213333 1.0487458352672349479490650496701826 GT 1 -22511768.1519617351077685122196065697638574 0.4256077272148044980989501238133195 0.0663954187480849949549462901845878 1.0687022909396593411220476457564444 GT 1 -26630417050345739180912197545447894879831.0526349918318595292466667120835881 0.4525522307929691959899778710809124 0.0104571350791881540684313435370360 1.0105121950993051928238837710796254 GT 1 -246930272015767221743021899090714957517116.0697877929427669310241714838279081 1.4773245972826661995260180910935132 0.0807616419960009775285419818398197 1.0842098235488901289158586369041137 GT 1 -121888328774621044.0054650807284170905113620986605428 0.4633976035311921405657195987792205 0.0496900220947178810037035272831215 1.0509670550775058550568267282722676 GT 1 -47279092551572607408304200.1406205591710849165497509752714337 0.2240174057290693865349960330334860 0.0686150386326950222504481985847250 1.0710825948307951694060533742253073 GT 1 -55245068052222.7826690215071319531413397551749811 1.3935528514947664975761897939766647 0.0099011715193128548429240576263447 1.0099505140876908536837108398071649 GT 1 -135007648528348983.4879286403832266112304335777415359 1.5673568952700133081140516465210219 0.0194258783646491599367418212803820 1.0196170404504259091358125189346062 GT 1 -1504070581776863914700218.8322149073381639536692863958481169 1.6640100863744680611654590521805247 0.0169735880605298161161110028755108 1.0171192904884301118404889984121841 GT 1 -66.0841473640221774948333919247704155 4.4534275551428557067262408271423571 0.0395693695591292113811810949958617 1.0403735217233079394386069759413224 LT 1 -361.3883457891314673612229506907015254 1.8541004368537707506972926001810442 0.0304558588205277713537564942765688 1.0309292754963028426689664663269934 GT 1 -38063914267850048336073212298.8189359873127823829742204757449206 1.1145906659297430661864224022401447 0.0593971586863995435599197645460332 1.0612342887298445369339527113826758 GT 1 -152552826878.7999561679281600780187549691035891 1.2198552409458945102520215019585848 0.0036837598402042794376416257316818 1.0036905615926372976422387744731671 GT 1 -7233803293995256680241.5152506253584673547284872716332694 1.0047513152095691819316262613822569 0.0283612107952495175413430737550930 1.0287711596325469345987866933793658 GT 1 -1133890.9332941906002090210874348053132768 0.0183667974785522346017936777043991 0.0870159799034881248710716187402596 1.0910369011728585580882196144403678 GT 1 -137657859817843724619179919948.2963737393580951490149448354361886 0.3771066790503886584190194451763962 0.0390550517044945184679283213591994 1.0398381575054935302789949178102745 GT 1 -7482013320820565300895990541157.2901500641141451774956049564587761 0.2555956024517394976214939655143041 0.0304237866260236973190286049110775 1.0308961963793396417713714682367688 GT 1 -110757811295031735573.1865854257028668807868068301713970 0.7252503913097390213162148841123454 0.0617369013388279120305544501126839 1.0637248803277961181396273806133250 GT 1 -4.5517436798375478086485021641953435 3.1508829669286298509304893772891468 0.0012797373127757430754527521510099 1.0012805568758621916910901100079409 GT 1 -6603.6795550684881043070768367403126775 0.3235385225676864794415306953510555 0.0957967983764818906577568323855941 1.1007011632923357579520362281826764 GT 1 -6934532088416741.8605900037039221830797604493605111 0.0376635745940102706025306433313030 0.0400512235774868366408274685379003 1.0408753538370536084038736345096397 GT 1 -38131663526103478049403924.5624396906505709450307168409896778 0.6547575864497801297899211985928100 0.0461433109975409323026475584361100 1.0472418399896073628853029967704156 GT 1 -2235654133953197439544090667819777405383558.2402297926874810615666072367118535 0.0353826117368401189852797202856424 0.0253696380693563119180750667996009 1.0256969958354877396727136639779899 GT 1 -4915217916112193623529000455493447244.0388062701466765130503778576905092 0.4252679088901769688713483494511943 0.0667381865454099321070200639949926 1.0690695028645711111215198733482621 GT 1 -12231624005733294132298267563504477993210.6823525247505423876016973136526948 1.1065516280040122609843560552678819 0.0476797445407119612140830294334905 1.0488538979681349638315208951618577 GT 1 -28018336.3151033310914169484207522729910497 0.6040525749448462238427324422698572 0.0628868481252482588488146832704669 1.0649512442963228365930465050131297 GT 1 -174140856612000197038840697933224484163.0481079697862598414534768918744800 0.2802707012391347834567855045295896 0.0355596996109208485888495746164166 1.0362073455047919465148147581556071 GT 1 -826734.2937292733374600105373751507392738 1.5334958390926023980852945299813456 0.0537099202879824623036824323417740 1.0552061187607548580556211830976414 GT 1 -4609666921811312291811.6361182588840867472021302617450085 0.8645243353418653959568662470295867 0.0632360244103304526413081801168499 1.0653239221885985812481997477759455 GT 1 -8420778773239793.8498360607605864727735880841173480 1.5954307257538403379129309006730175 0.0741810740760049896388941515824813 1.0770766078157851998526895560403704 GT 1 -12370863712331733225314713853452487122461544.6670264570144228962209991681919512 0.3079277776247626249970937212379038 0.0999793073218969603118850408899189 1.1053375240575762348941857774930384 GT 1 -2424051613141838504882204743.8924511787207717163817356841751302 0.0871627686791675623381518958262969 0.0133066042273627253056878377594483 1.0133959303889711647174980477522609 GT 1 -109984642828074804688435034480380.6541004908559700410515320389299032 1.2714977776744799338170399379523351 0.0593096413073014434638786083107942 1.0611412491343567746418359030002171 GT 1 -10336111430411798984760921987384670.1722143332548177451807727794037870 1.0059444617883571680699543272944704 0.0481408191572123247551292828152664 1.0493381744146938537995355596336394 GT 1 -123690084997635.1692790628170196160325308309824790 0.1224378263181814162717448006882034 0.0923250015579604848817520130371706 1.0968688956847504486115404301478015 GT 1 -61141.5683321835809020880048762045977023 0.1720126187789982169412829611858709 0.0374670184875352759222940858718508 1.0381869469008242278053378430987768 GT 1 -12637104445419143731357166903601598018578357.9764400787478298651303424668848251 2.0240310255473419583748889475371712 0.0561736444055772738655258321215377 1.0578130751015474350174017846458526 GT 1 -11411470.4636484564698685718765772227663051 0.4671502860500506125417542773371387 0.0313510543397393244095065193788519 1.0318530179128306549697602317051152 GT 1 -4023197940663423720718733785.6832827522796741552070068251940192 0.1405885593382948988082671796716587 0.0672440414073984900378258759822019 1.0696116787022911569614352155375341 GT 1 -39473877237047841508.7798928572523113192800709660393843 0.1478601418656429093486937319826095 0.0887015203932000137461129285734548 1.0928847958598082531086397756256274 GT 1 -9749542709.5065841483505044238353071071913867 0.8834869651566748432143907121078091 0.0295057624721641299453715830831680 1.0299498140230174100478344851597221 GT 1 -2580506405397382211892692758962549066090103.6069022777929336970769171822714833 0.7676990630130028140883449630699490 0.0158775629832567886609676729542272 1.0160049618078441202466507005999769 GT 1 -47992011616208040627269963410.6317230186816682006899108066705398 0.4547211782015160105375780209388288 0.0926164235778551604433318742621375 1.0971900115169716276317655144440671 GT 1 -349190786335060252389276392438824429542973.0291910539030557026506221859163438 0.0692798004231128892219368468111677 0.0606133778135188750707655117487791 1.0625281462970294327570744407702997 GT 1 -2233254280172436152873921415629288520397059.3119111124513041880437966297327466 1.8817640056326715111503366541093667 0.0400859267568599132805388274920813 1.0409115055646448786329428314678445 GT 1 -77126309112257920936847271162826.7299928473396622375957065365302614 0.3511526215810139205205902442167185 0.0413356927561833176082106645573747 1.0422143099627379162177063201013895 GT 1 -7298856.3639829420251009282237578626917187 1.8055646194402834220372146811009169 0.0285911314548486852012761848827151 1.0290078194589338339477538348754497 GT 1 -17674711667980238914.3692269949422581781902201547951729 1.0220556478390765177688436408024975 0.0099443423316555805822415326984961 1.0099941175667643712998570415574223 GT 1 -615984447241512110958888138451022176121.4816773844410425542658183277443430 0.5962182283958860519472161503114021 0.0328038009224335120700967799084263 1.0333539095098233684952387704416068 GT 1 -317671235180701025401461953784583.2568578546539523394356780608137709 1.0508575263166057206529772508552379 0.0721493682241496453375946483358205 1.0748845162890190702055899158164951 GT 1 -1292905138408249653585846.5183029334687266366274291744326846 1.7581541902877359483310209624297917 0.0048466827285175120075241789149558 1.0048584659838034606135655806787094 GT 1 -8283586971.8823721485340985193669622086296175 0.7409541891784362854818935458919822 0.0644756103163962409011920224654482 1.0666480623265986948650259153980563 GT 1 -917792056399891062173468092884374.5605869636347784543682180099677728 1.1879481204731128648100741049910716 0.0619045616466119180100212679192100 1.0639035885063481509167936395986816 GT 1 -15140727490268817160458189600158450609.4639963417291533847323626424815979 0.2681514965633915836298677409662552 0.0939542670169742740069038723943986 1.0986654963069149482346240389879267 GT 1 -1795817623521583880619.2751353416231163011461921173725593 1.0207062579841138468330837957160288 0.0070125918854523295052566635721155 1.0070372956673669277264432472717112 GT 1 -863749960283076.7809183316363775614275918347131519 0.4855559651771124933002437822926307 0.0830953144560215043943664552847922 1.0867517537375956218191060554266542 GT 1 -3563852944210440571691277154.5193817557871004817756192819171428 0.5421823637111176909893632793812585 0.0268828597044871248428630845428431 1.0272508131941083662475683996500788 GT 1 -433258475008971297626771801087506167.4967398177384037053506974282654763 2.0433207777552901836504050317840863 0.0054652650815937332202266936082608 1.0054802542810444530619161412646408 GT 1 -1430903177796682228345689370.1956808271303142408180276985776895 0.1470707202911436067696241075741697 0.0963807444350938429843054441418821 1.1013471847825533042990949298203329 GT 1 -1567660086561360401961864160000.7371764269627676705390295657836620 0.5539569689555321929317307060053397 0.0364441935114986533526466249265817 1.0371248722150108546350559317081049 GT 1 -90481421792757096052.6526519307083964253439069088068783 0.0913330456042423440898960273400912 0.0458244057532461744893691036572208 1.0469075634157107710890595288165718 GT 1 -8203386904531513058667558965.1356699682933390734810748685952593 0.2096708738094822837425419277456825 0.0091216003067966966843578334865271 1.0091634568296147548232954739697329 GT 1 -134450.9954529292734124875913116006858214 5.8672153016240023031065253854739454 0.0464895656417858836280608571414772 1.0476049107836960111461227216653532 LT 1 -41457543719113333817285.4850222494226682740120835159831022 1.2189323138952324419449126708154808 0.0369844437966634669539490624692573 1.0376857134169385689576284998791252 GT 1 -1329061878839683247569.1366252622931187379285192265134851 1.5229974890498328610447101108015157 0.0140068669847493210489794397372887 1.0141058888913291677177702815843277 GT 1 -1981996882033447.4163586241364651176895379821360413 2.1864420289197788548590938899190245 0.0571150536764769215668653212531524 1.0588110119327627292372375666567009 GT 1 -844348227434604503342702810288046133205.4083838551111720740138332590173536 0.0918038873560938115799687979720159 0.0974781250153389916382866578714537 1.1025623508586910342322264214643526 GT 1 -6158934520476864014970887981.2819407366014081707379292901423096 0.1068880423649661247730934170871531 0.0882692500287784852261507925746095 1.0924105627915617876476828661250696 GT 1 -9429944577586302373024102327421581.8121216431430781159941909042896556 0.0328064188204341115762054507671644 0.0472577655999194208282072510962788 1.0484108899828955732540513065605119 GT 1 -49621.3644438822678509529177295020479842 0.5863762956390374879347110943987472 0.0311541317588628100850260686616229 1.0316497424458289444489475680257190 GT 1 -332856845389746106897176828778976878561694.1343481049680343071165058887941188 2.8866956056063295403343746878726022 0.0779544224907239540110207660777832 1.0811606233400880614182134304678681 LT 1 -9338570861881331.7367900648174332091730692069119577 0.0952333630927281581130828032950047 0.0783779888474546851533534331141431 1.0816201056966556598273731091451112 GT 1 -11804619639846825758165357317356.1660136935446943306481160105873895 1.2898542090886012367857931918539338 0.0086199418403547402030603441273418 1.0086573084258438593764301622120521 GT 1 -775909358774177985651954.7063961153626805121696661532146468 0.1114897855195851325836655347127970 0.0374816831056131447722027020914281 1.0382021824616534781948403146154223 GT 1 -3104.5090818432346379480453994507683430 2.9790983369436350925431492874922528 0.0041681066158472679882810931585095 1.0041768173855986285836118176201386 GT 1 -1301325029302347034.2007464164431461582544663416974510 0.7231387218654251331346440220719907 0.0275778204861113804228609782114856 1.0279652277568021203004579965359409 GT 1 -1292809740046235157968.1801605576257667652047530632172047 1.1444969162452462403455223100957761 0.0225992090598770031145814436393404 1.0228584849177186079445166530703457 GT 1 -18699738216270.5178744485746577817165194028964608 0.1902110676925255566455986228148264 0.0979571083027277954190183020786601 1.1030932082792512520178817302906327 GT 1 -334.4420229229435181464434038376212353 1.9783548327449362507694081248132264 0.0518669054078164260843276717999653 1.0532603914421563501572997054063012 GT 1 -2116145.4715501421188998059454216094815284 0.1544995635857486473886546155697103 0.0379614989372331301433336820933500 1.0387008072225171689010129306897387 GT 1 -45207220946586170330827214.5219490785395173699859376206787775 2.5416208525219637283517768835646291 0.0183292880926440038193376524244235 1.0184993507845719938447234126525001 GT 1 -33504087313360.4662925965838045791274815508334758 0.8125456962442647074883832470425794 0.0127343452439203391909035511660573 1.0128161220091358918002844288593694 GT 1 -10883638317421197683406225816186595727354405.3504138097376524756921584411703613 0.5344919716387908320553892612511199 0.0596711943299278282166605107545268 1.0615256716154551128895903864737355 GT 1 -126.4379039562900288205708087852488304 0.9192421987366539526943454421486216 0.0754063219517462928468721969419142 1.0784009049505726178383655113202195 GT 1 -40364100.9083206183780381304888172957670840 2.8342020155481160908897451536480032 0.0336819651858293880943018625812861 1.0342622703673598125776188164992551 GT 1 -88266818.6407270696560062687310003634175801 3.5430307695075472740152546754428596 0.0688241952728298052869885077284380 1.0713071852386050844163516932009187 LT 1 -246024727.2013801594924138172226877900990683 1.4475646360707168592429231577847450 0.0153117824356507020373827286861729 1.0154302183078898323428436260936441 GT 1 -2889395447.2514924434026000150339187401536462 0.3760768112890982929351559671742620 0.0185485045211899337364750463626344 1.0187226852551742981518340212193906 GT 1 -417637579601773155029945800662796476.2856694336488130626820384970980739 0.0127812393894705971113803860222735 0.0826217887754287411910177672751956 1.0862354476738515535186475145774890 GT 1 -129213842144120651804333622194440227444.2740461329962426310942797408014652 0.0771136648543529215749267100485465 0.0529485731985450120883254627965112 1.0544018823059424160863306437333804 GT 1 -353485615097.7120380962847615800767088995896255 0.1372023115954112827431233686445274 0.0338203498139865859858671647533191 1.0344054887830586904508429537603599 GT 1 -7941258300678664247328057921352617279.9873503557765938654664780046292649 0.5251358894049783639269828636738246 0.0294865108482796055951361316424132 1.0299299772922094508124057210356494 GT 1 -3.9121235250168166776808589742366674 0.8706226613439923810141553342342287 0.0240000716267159263054041172360878 1.0242927659570758715529925084457965 GT 1 -100951.9817143943521282278089285697983828 0.8989008590384999939383125568805766 0.0055838981424375023732667816364014 1.0055995463809706180557888532929499 GT 1 -35564990608503926362944657957269627284.0363962453839127898639007076739633 1.9661351539510189107671919940062627 0.0090111144661492821415440502309261 1.0090519601198345986490402757256226 GT 1 -49817297637661592798056.7378216811948759127726403197125523 1.3108985637822179837642601253886468 0.0100700220146262014328207879359306 1.0101210676626401096030438577697795 GT 1 -312933766855130513488.6153929184658563931543529999964020 1.8918238166358160419199582379060195 0.0128852292690531953292233858642851 1.0129689639067548535910846118607158 GT 1 -138417086543914965851658.2777485414298625993847990949576684 0.7883530325844234439445230674343071 0.0610334220559660438653658456714001 1.0629753936511689810026688210099377 GT 1 -632930938290810110558338269183032642.2328325370158984858452557203973837 0.3222422239349629505388936428089971 0.0322141867727451443844289511042727 1.0327444835160027659486146906019165 GT 1 -102417527264293.4478681740047330945928456132478293 0.8849013415834360152556898497375469 0.0192476920937098564701922041578296 1.0194353406897479506164632566207094 GT 1 -423361261.9267162910814547474407273046789844 1.2887815226412026976954768431718833 0.0210367559912006738626738778521954 1.0212611815805431207666459935877146 GT 1 -30569629401830298734914120946653708274.8381088261461180642126026621802462 0.7432783281079252719769164777023927 0.0865195223945901503390789596522963 1.0904932743772114112842169175267381 GT 1 -92.9852983871078337459669027944199088 3.3527780178569506018750477293535174 0.0474334993233626858825817177010494 1.0485953574350269097185414675373377 LT 1 -2454607637628567480699602029934803726715.9413070642602165410120527058193487 1.2039612088369323697257348899301478 0.0418401897234835476495011648638334 1.0427406983510496179356678324339525 GT 1 -22949887746108927967296305173146437127979.1901656232781739299778177729833084 0.8623113446186786127980166097702410 0.0136464389020949210117190825262282 1.0137404074191901846186242190555167 GT 1 -1951035076805416477175359503830.2048694022524558672660771253703367 4.8569598897489789218210939687168062 0.0890077910227087856479766906773106 1.0932209339241809628769438481412838 LT 1 -21551716793.4387752835947069380707298819015722 1.5493811478975737180942533977727691 0.0973098263256454672014468387271921 1.1023758922204317290033610335582872 GT 1 -15185860909173948911851.3908903913472367905144095666316260 1.2106333963268021174779683543953047 0.0545302048033432256481196356190836 1.0560733372461976790729660994133242 GT 1 -1427490864768523441062369427648315.7131465864532762707483663497970257 3.6964264180367093491278262669240213 0.0110367599013006001299066564817148 1.0110981168078349072340771514824239 GT 1 -3372753659820969669454518348866.6609745967547931976963885503787157 2.2530333643618110030870611729843748 0.0776421418916297945855980565043175 1.0808219982908741344416964031556934 GT 1 -6166257699169186762354200458617.9320644812816255720298304367626116 2.0029748670142866598416442673694153 0.0048461379405887120151362997266453 1.0048579185427506848766047864472611 GT 1 -98406699840792030939768.0132163388884107639441225914450389 0.1525838881877471998650941044478700 0.0499133616068433869057628748032019 1.0512021002372775505556267809871783 GT 1 -6801336632444377599231578868842743007507850.2688041935095715105029647283336041 6.4935137291653472575383075454594976 0.0960698437538449651793197500629963 1.1010031823643806122014751730489780 LT 1 -24961.4022189948534108828489997982025732 0.9941585607793948208036645042387356 0.0042154506066731796310606032904024 1.0042243606673449916359378543708980 GT 1 -65620970757371501139779501608.0181381463916009157003903017800081 1.0486347198403978236576167204465232 0.0266512060699427252750851883268478 1.0270127883393551006925565195888113 GT 1 -74913976814186107468139009839764589528.0121890464633546212294675914069759 1.6735836850345610485792697077570273 0.0941710547060029532622974168277195 1.0989047928682746119068334361247370 GT 1 -18.7001463279422665020254074886503855 0.0279531534976654772751925454281810 0.0828796877364471246946664391209435 1.0865166132996782899900466667226178 GT 1 -25891898444496232177197345291080782.6924362045209139281053450217875421 0.3846193863389653358233142465830186 0.0765551485553834954304600540134192 1.0796441980240545108838845892919245 GT 1 -369470715420016736297991928849.8518607404620697251918848592988956 0.1813408549632644997808847070939972 0.0412450435439146309907070602821606 1.0421197566075564273765192158788651 GT 1 -2732705081.9023591729932750470564229580463995 3.1318400910074082157731101040197527 0.0944677227017011680320849954662160 1.0992323564648125774677765074881176 LT 1 -6987652312973115144073322.1164637056440290471117242530726638 0.1463349254560582296587204538809923 0.0680047221301171963633166072479069 1.0704275309725973252708763556276792 GT 1 -47442789.3332073445159045624499529231830864 3.1870480692295600451394937635916595 0.0306156877627764764277506729689476 1.0310941386632021392087071242268288 GT 1 -18302893419430112711172222576286.6584297189280536596508958529480757 2.2013875037713150648029061729379888 0.0202057373535917816538508486031375 1.0204126654322755834832150963831474 GT 1 -2223726.3109432712377149695180443005857444 4.7071205808942155828473182047383646 0.0533728371986862696495949483024974 1.0548499668009240991889391877250199 LT 1 -422182681409162341737828.6208404457801859813995840190208441 0.9385456898308977162616755367018297 0.0361671066235946636263142555660218 1.0368373465178514465937081331960843 GT 1 -2272599252867863271209036025042477604448.5401165358543161243475923147140372 0.0353816157027805448014067474089829 0.0875330599603511624459174927764087 1.0916034242753516950045244524293872 GT 1 -374492127368418255688598343403757217741592.2864250048994138742752123485630786 0.2177650103330125847842588215890951 0.0524349536386718745596310766213391 1.0538596938686192171357508883868429 GT 1 -647.9231371028764551462653234954970636 0.0774150041129506210566003137250237 0.0861536893581643484698756628570445 1.0900928719492863011261727360631195 GT 1 -1.2907242826375630423768166270283523 0.8134035070403821297002784182547094 0.0657674871934239470689894047117731 1.0680299286867473771693662895316223 GT 1 -811.9713862305078473716021079832155370 2.2354799592633381057538842518089135 0.0464643390209189482644097881988858 1.0475784545580913070345671703177657 GT 1 -607988501380681886017.5438108023814234799760298635434555 1.7466472423060848793044537724047287 0.0476037147366196380262261033797626 1.0487740647724786095958572095107920 GT 1 -19083310412721609372053.7582316607663758383509411947169782 1.4919712019430060879909642064962016 0.0620166563769471821722300954411027 1.0640230874650758495341614371229254 GT 1 -21698432449457261238432231537829614.2611990545947899332085540449959585 1.7768973697608100651877435042040155 0.0424143313618006878769137969935913 1.0433400907670314931251130649782948 GT 1 -7701.0499665112113658476494648461923092 0.4228316794724785840764196958292073 0.0197507229933929300916724368925381 1.0199483753701750482592905370020313 GT 1 -2453685.7340662222439735054950589343911698 0.5122380744076740928638582667137579 0.0966286277353041739665553497060989 1.1016215451449675677465568342160824 GT 1 -199590385894966661.5087588262289207023831800292665932 1.0620459626018069076580516719458038 0.0432949515289717467805729668889168 1.0442601393483885812423519300690888 GT 1 -29398898077924988643958847.9958361648566820006969769455838340 0.8496756832786724833984402557980975 0.0838994304952295241905861724631570 1.0876291282989355973131704311089803 GT 1 -567706951686950061637828749.0642007923179599600999048801308069 1.9783547949978018604352391836551859 0.0954771002296937443457002296957467 1.1003476568660492265355389150748836 GT 1 -192525044.6377693664067918285689248893160841 1.3265363157093804006874778562105453 0.0842007526045923832144361641560860 1.0879581005596460426725096696015392 GT 1 -74758214413406558339091566692419930597.0466094395738050931908719828534149 0.2327914861839700293064743615914637 0.0568851768940205174903602766640986 1.0585672401282048710283827731123425 GT 1 -1014829.3065784454079639661676088256450805 0.6378883046464572354838263735085961 0.0863283167851071515216864313666420 1.0902839807953401369735355062862275 GT 1 -510852610858946756469453.8494224448324648650821982696116788 0.1975143722947068661555591672696881 0.0392633476763160236957792035334272 1.0400549426093006774797030763616690 GT 1 -30205775645.0491798427697723113780002492351842 2.1899915635724150634342644355533100 0.0134266745509091107550072427193175 1.0135176273926283626859260517423198 GT 1 -1812401386965558258282413683059.5208960171805378929732815572615223 0.4014603049010582249558709076739711 0.0657693591775368297810675118950052 1.0680319324555765857738700445722417 GT 1 -573082401.6710298457246243237473330492147354 0.1779566848528240785169698474237580 0.0965518980456327672822678264523845 1.1015366117126990276391333245705729 GT 1 -12023769363061412014546033641090602154034853.4286922351521074552145196661804410 0.0336388314230048236772035470092010 0.0949580600209953937312203923518700 1.0997739938377551205360801722167622 GT 1 -336035917332296936664.3714602279349432612378900539706035 0.3417513709123441773733530152933185 0.0009773055161657581473941800738225 1.0009777833905799599776807029089366 GT 1 -1457704014254801698846435087072.7077751345817550332299677859064424 0.4254009684236884485572377121435922 0.0380541025625746077232091337689519 1.0387970695679760758513912500722869 GT 1 -66756704064918750.8348389367377264706437422994892475 1.0229627935335965745416335804603215 0.0527551606699572237865058116474877 1.0541976771531181677819284719058340 GT 1 -2284.6483364248171622626130211507877246 2.3293658994919316180771739737565088 0.0390985052791700319606956541187172 1.0398833781575813402111339802908854 GT 1 -421505782291514746557372730429517551498320.7166534980416115008502926542421818 1.9491236752801587526450522909892374 0.0765941949365807999034251490647448 1.0796864823106215144833841240675957 GT 1 -108778662838472806.5676626164879377675218822980902514 0.0083355655290841330477879600840616 0.0162548081601173016997133001815198 1.0163883668458150288920373774286347 GT 1 -13064.3882064098536342866180842239161528 1.7075407573082645905326265586359335 0.0435573846442639770421842255239515 1.0445344863022597000327467408238499 GT 1 -15589685503755208501242.3271719193843363229995679775240113 0.8078982284750558698081208219928298 0.0354458094911807866724428835159471 1.0360892631355474558332850816573825 GT 1 -10298.8987675936803568830201097723153171 0.8754636935142806769431856719969936 0.0060573037330835886348363982772710 1.0060757236182356558587052835732704 GT 1 -998687654749521310058817348970006.6651359116358263129498237481263460 0.6647777631927063485325376191238638 0.0618896865173565355789166903243896 1.0638877318986801086577940110981893 GT 1 -1488910211221984153870270680885998.7024072147711844080909279489500534 1.3755317911195240364744738998952079 0.0866405358590330046089119462643428 1.0906257583040782314910697038276503 GT 1 -15071393.0034239402438919985057207859871263 1.8374523503654312938307043902431357 0.0342991519264605046444912417494218 1.0349011738140001946360122787323835 GT 1 -153527959822721040361589761706861303342.6496582410997020773884912124687399 1.5106319654538818268223995227481186 0.0831053479240278151022290374236123 1.0867626965575656988671229926177777 GT 1 -1030846550456169876327331729370.1276833005839146296043485900232355 0.8023998278274101513478882505391255 0.0707657737788572772234332723831878 1.0733944446906907373956524763126508 GT 1 -394132.8454747252404772041981982815093492 2.3185582158140855686976047066410517 0.0167395899477451340431385043045452 1.0168812803352091285304872347278087 GT 1 -1184307954051323878747112.3555768744029266043821922792403944 0.4084883609071777559103881775855572 0.0959764433913451982093710647135373 1.1008998607340548276226697487343818 GT 1 -192133.4977063904127216533749580898206246 0.3950245185535056533229479943753878 0.0978836875244489264813760511552978 1.1030118177033535312758598611081852 GT 1 -343629.0408340610255108416082025553377798 1.0666897017778217565604747678453901 0.0305220305231373569279871193190010 1.0309975281503304703037781537995440 GT 1 -120125981123676673870226.0597622196823499789409004062560822 1.3922161955367741580772056194002694 0.0126192487301718582349055553488131 1.0126995477064885007385483155746648 GT 1 -6216573.0695224678623198839737130641850849 0.2553946746010192766273993096351803 0.0498277898794244508223574781262445 1.0511120370045303832578180982284411 GT 1 -98531954577.6246074098728404433470999344253969 2.4986908065313688918437132886636694 0.0563940895409186305962107603416516 1.0580466677345744043348364458612299 GT 1 -72940591567.3826287990421397417179536752059409 3.4054415400435292675514672536072599 0.0084599200274917527213537130102028 1.0084959082664192809557380674546516 GT 1 -202241432465631287554899408097504400768963.0980669066932337114109825303575116 0.7490569659365561778483784177227133 0.0774614409366390185009387903134193 1.0806261054983176329213587288733494 GT 1 -59145943.7041238237660299544028627241770817 0.3560352855923424079360516889955750 0.0041304175196427319188464933676761 1.0041389712558791378741919882194679 GT 1 -465150662558810953613364036.9553071043757393091722913489816798 0.2001443548581949768456668267565587 0.0570607501712366329629943239729708 1.0587534206627322616661341608975107 GT 1 -7411453312590427835320212709025.1852431593774794832971561140970328 0.6929928875422111792692866036488072 0.0147586747283628117194280989685353 1.0148686675419407824402596103944600 GT 1 -953164846327946501613980715999391.8223573159531128734550523773589664 0.0786666651819526914881546637488495 0.0693660864234383544185107658070601 1.0718892975356706761895967892624026 GT 1 -995874512061443245423406592768.7046920462035338120914213193686122 1.5029112323387622507372388212353519 0.0029745910523626177031145730528911 1.0029790239411971798667957451804080 GT 1 -3984.0189019408093064350750563362230982 0.0382886280406893135370449185242870 0.0667682698500774578814852362944636 1.0691017379663459984077810756026628 GT 1 -487549959229176886.3891253440209828670393806421284964 0.7444947143299337072859358696398355 0.0908622677871918645847990306575871 1.0952586756965952384862912290733317 GT 1 -20465141007025643762953904.9532112862486062963713570002987640 1.5518547932551112779730475308776378 0.0650999934671733276517852434910041 1.0673157002971393379270581755354092 GT 1 -31657349073120142889996759.8051265534430983283774632835297767 0.7023796296673781662542531569568965 0.0246354794591620476919184515217750 1.0249440106338527991377228803608856 GT 1 -8571.1035513289870295500203616066043327 0.9933176890854451172792800693964131 0.0643685631192200755991745276351968 1.0665336440662130825168552567087582 GT 1 -1963693706935622.6588009253327486610184065235677905 0.1352044226751800767898696554601550 0.0680719728872668428001872015082124 1.0704996914064510729170927635758689 GT 1 -3084280850827110819231784173876012.6101145424549511101405942162278451 0.6396530328994690740879199770100327 0.0508908072003039177044971125468755 1.0522314260853106792584537980748997 GT 1 -1932311713043670762553863166527270982.0371868321184360204521512974783369 4.6291318941679091872873872434866274 0.0124628890827519753747459040906530 1.0125412022373018174401810822653719 LT 1 -3086340300235054169873.2888776674077675666777755268682859 1.2514615534626427784170222969764349 0.0946349167606823476804413505791984 1.0994170097346219817347438174269243 GT 1 -8895256189604279111507.6347586033418496077545912165459104 0.6624594054608454044937585960618515 0.0973551316575845486067749387957582 1.1024260827179229655663070978618468 GT 1 -2.9530702878233340675448327962873084 2.4111118288301647142810544809630095 0.0696312717672903289212783677371953 1.0721742894423871889736672479696104 GT 1 -2043818214655783769069313891747677617102247.8346301992896751599498693067738725 1.6933902112503177531751701819831324 0.0469967240840877432825991116201094 1.0481369378564954578688187908135120 GT 1 -50363031424577508782166343474156510.7602975385729495560496674143288266 0.2818843787387508927850193065534186 0.0974458479445280882469200653406004 1.1025265882976345122005916830091324 GT 1 -5142935638846475249244386499268178998825776.1036053050839001984636329948226939 1.6830064001385522736110416492820439 0.0931497029277776883714612926145571 1.0977778953318120595629956513202071 GT 1 -32.3168739667310781662627477516978233 0.3749497861410795359570605020056479 0.0960213426422143729854988219718399 1.1009495279861539316404103907537992 GT 1 -2781047676642043592596934076217432.2291266253232390645988513865916832 0.0390385989322322500931739053227319 0.0934145023889085442384066459888679 1.0980699370614274440478412727343437 GT 1 -49151135064.0429568370992978245678993396294289 5.6568118889901249213402733158117015 0.0073627436557028653417790576329261 1.0073899824365711370739457096024625 LT 1 -5862469104730175819735540775973623572614.7517444905494317920664717444931602 0.4381284416205767810745082586088840 0.0234665707120370117370357015983648 1.0237462954695298264499818484666063 GT 1 -1770342342559681377561073.3913683489978960183727738667625837 0.9300990822923547686846391096677658 0.0272088423156744974280553029285748 1.0275858573630193213715450953942418 GT 1 -530.6412063602178348076999244521193085 0.1446830169182617182005114826314642 0.0832911879467028901146714131149115 1.0869654012611147406327704926424756 GT 1 -211606432.7498020498870360923799633363263511 0.2428950420719493293658444543494811 0.0447747438887018661900871605033173 1.0458080960408157561210903175211619 GT 1 -3074993557075184747906616102634760738328758.9715283366878361015550719328079015 0.2622120139857550539372662780779186 0.0901303675713127844873247790039179 1.0944539508014649153843644196088208 GT 1 -480169685483515505959036702973103772995.1279432538793001239194922010123041 0.2227269888819714240710978726175194 0.0619274434825521823647061674068881 1.0639279806034353567511601566175070 GT 1 -1629508247012170556251952887169838644465437.2043768516864337620996853449684363 4.1178325162898457493294058886713086 0.0999323002902771619078219794739952 1.1052852965871594866640320435121684 LT 1 -107340022445363639767769774367602226931506.9097278629880025436947744259524801 0.1180589395456889110670707909410647 0.0236154093173453266710674717918883 1.0238987223549130951814147982172290 GT 1 -2071415317184509844.3012340576504795292041378397350066 0.6130897248566438907095794884830840 0.0104625977603809933030111928377111 1.0105177155233966228501318459891814 GT 1 -102171024689517.2575362613144905904902285873063354 0.4719394396871720945199525807663635 0.0660916861269046227256486064622222 1.0683770105898943295000203010922156 GT 1 -614037540583180932735200051913149654627.0529523943571655116604541871394839 0.9053312494341649572958499247671997 0.0182786599479351082207602821044213 1.0184477786651172052900789128664311 GT 1 -10286453782903778105782213.6579598979179354673124182247765375 0.5014449142850707018998284001084257 0.0865469560813683563848446563891542 1.0905233068731474239390487691816049 GT 1 -609206682456.5851304465434647953540278951806329 0.6157393401901692745377499369006142 0.0950514309466908361530625318357375 1.0998771666724327861447117172161432 GT 1 -8396003795688448.4448624128541255170874780879513925 0.1480410207787819880710199641875165 0.0759297863116255709794562991050574 1.0789672213872264939758101239749449 GT 1 -1365069296857822458147483.0926835854244405955646720512129035 0.2212311413425780499788761995885623 0.0434013783325046728425809587024865 1.0443713886030716977677045824436963 GT 1 -2063055042846977589530418705051335877.5593632421976237929822648738915905 1.6702962117119208179671088551190513 0.0977496886824815180014458225257834 1.1028632904135591104276916085365641 GT 1 -3488007.2911144459324670201378284268707455 0.4671734572862519526839591623187681 0.0779482239105864645688227177403204 1.0811539007230576573769807259975543 GT 1 -39017371631305041439788709120621659.6934699847137812655681057374408486 0.2866368456275393123801023295384379 0.0562063358986778403053461616827039 1.0578477128917411460829182009220807 GT 1 -46139664957079.5081713299352754211815775819934871 0.2416597811628731915543489934470893 0.0624491819232706507645170271003814 1.0644843166581492041460291729793848 GT 1 -672263090731947109.3950322459591084143135602476434443 1.1564235459394222432937726400055348 0.0554770594368381044861523434391067 1.0570753037562217635814769740446538 GT 1 -4933877183.9843521697308398108898818485375947 2.5226634429543224126144699796920438 0.0779494722766549726184617746015330 1.0844483423007132205237317587745290 GT 2 -18823902965491978152373873.7755824577595112657886900775589584 1.6035813096502951033680223684239618 0.0738143327666119066429211636348792 1.0766805598626194016729747954842057 GT 1 -28779512964874768361393684.8278327063104128731787999725543307 0.4528919903215252504472778199284818 0.0911209479093732558895266249802732 1.0955432496633050272965202917399393 GT 1 -3819639482530108446.5899643029115373908362119621848852 0.9379116865764030725388504500511833 0.0974515805276194038093024423088928 1.1025329398293222464134353363955647 GT 1 -77100999993481066301917894878004.0028799998772080712136180580903764 0.5564452532185638078712931736022759 0.0172688837441503752511398721357332 1.0174197300712436346671723448419383 GT 1 -80113664.8989901649424717959489323711543966 2.3545165441460758493495123751759234 0.0086280317308801605682142408908180 1.0086654686903828762579407099427757 GT 1 -14587950524455621931.8793342091034237766953516402645157 0.8697827797035368910415927097998846 0.0543396958169728701433685873145039 1.0558718609045358496916520772591763 GT 1 -9448844307402421528850102.1312900610493886386071724608114882 0.0920460864486927183390625181449851 0.0461360909885641367545265508580093 1.0472342707376064706323361378760836 GT 1 -36665574263307108821791336.8187934018284912197340763764108364 1.0782711339569825039849208003519506 0.0670324976821187823064277703758652 1.0693849101263275911242583539341828 GT 1 -269012720869145007398037745473722637128032.2172492255349652012020131336365611 2.2730777642766851362827570007816172 0.0142792087827910937420967716155555 1.0143821376883038431868087347067105 GT 1 -1047481467.6884362401921742758700152966123931 1.4094810981479377651192358951526382 0.0811157394054692879690310506344846 1.0845951051511790253882472072792609 GT 1 -247643337764435258853768197822932932606.6114479348359733240377275397710418 0.4682859311437297315423918138384780 0.0745108989210157335162565283129709 1.0774329232896982610578510083135489 GT 1 -5877328427690334.0053228023972865120985864103741199 0.8076299890070891167502186825291512 0.0064191765003367803307392576291168 1.0064398680096382989183259166443597 GT 1 -262419152077515093128490792077090.3707222346360443235861410545685750 0.7225054984609982406802543718806543 0.0212677742309659580706732107233012 1.0214971919758308292704287471999807 GT 1 -1.2674111434652122048923447664316967 0.3540930350066774046644883034960757 0.0737318801601231995891415073772761 1.0765915399830212976199825790931452 GT 1 -760449.3231390674629530085293467421538053 0.9937886069011268952032513688543931 0.0890450572197257178640795300111326 1.0932618420229544974233236106611947 GT 1 -43670681368116.8128751135357804664148882463198430 1.4536014914063300748976078178511224 0.0925993601222936158581600342170686 1.0971712065754157241251800215360020 GT 1 -13265791070.3581319458076270158662297472650134 1.2041360571561838370108723185753621 0.0396325429455513241174155886931524 1.0404392999920975211967307575307741 GT 1 -281422706163745766829363213504393909302481.5945659478809501313670869295591959 0.6610388125191657211627270320122136 0.0852103912345592563379785305251713 1.0890611759213737250372955840300397 GT 1 -1345443035199498509490802886838.2561631396131503621987401619013816 0.6814687114724119906402507912186689 0.0794738723462231357361748763331857 1.0828098945143519918527373484768353 GT 1 -176151309425325235.6335251558361417905404177599145883 2.1912306778594476971684052194344174 0.0065701913185606463275517412435163 1.0065918700332498803011875204632917 GT 1 -2514188454593422365161.6174976743357754731186485264873484 0.3249661599828308585532556263772490 0.0861914398156840618689587456183517 1.0901341822186677600851436641193727 GT 1 -5706324948650.6172608110791950260587836273698899 3.9207823041015289565726609040532395 0.0417470260215414037647103303558209 1.0426434711745446846430778345178335 LT 1 -16941135959227708542.8507264153990788387865017993756760 0.2400972265701080263707796562671201 0.0961222044184681031935298482643844 1.1010611096066906631319954152219881 GT 1 -322.5886800211490108142021409476421435 0.4807087618397099630359161795600542 0.0316162086011807011875602555549993 1.0321267915646896357071848928561514 GT 1 -624424485843891710.2747173065845401039017903542831168 2.2862637487646707747293231778404757 0.0427292384935762384990421528380173 1.0436690001616545573091311462741715 GT 1 -9913906641675053956209930020720.0063759777665210180394051564800661 1.1402409579239263824673593171486339 0.0091360058780463864746495385066529 1.0091779951180370059079084843854645 GT 1 -19221744161427229247528416226596573.4971786235540406491218557560554945 0.5346527530755373420577006122984116 0.0099383621557890870654239360515779 1.0099880773429048410751858261114628 GT 1 -375444792763592599648093845314800.2591546987342957862458908390757321 1.2088197908774767945896861138698357 0.0387706074250078482865759879459044 1.0395421965455380163338528945864333 GT 1 -20693476995994671368807396433232664463497325.6234908128741384204558395736753253 0.5648473069876656189911149526069102 0.0294295248269248039457013863367957 1.0298712616236257932900263312582005 GT 1 -42317548121.6295426543292866682194396372853721 0.4113416598963854797168256244332915 0.0302575591500227667875976110609066 1.0307247676396160635845693768845746 GT 1 -3.8040979374076108204356326719586835 1.9593548450675488466330680197443147 0.0879685773487387965532149799779385 1.0920808348398832600643578847076965 GT 1 -34177582649908752585.7529956794488711830333544401753034 0.3205887133849816091106073173169841 0.0237029081759040548226141990519520 1.0239883415277676944532818323301518 GT 1 -227595857507446431071786024.7311127315844515592504026648832511 1.5202770351986139963371263895700004 0.0718750921740297557939796977802099 1.0745889563031634764706033595145540 GT 1 -2386323145142172418809972032583586.0381343296362021715075082162242612 2.8962011622849688331438107209518079 0.0383200094188486020918581226528285 1.0390735337802991386083757726763083 GT 1 -1287828504895277300611383388122.3753437440289317822106308147364655 0.0350453317050551494609224914155254 0.0990467643228181320517729188016813 1.1043019254098226435852523354102604 GT 1 -1592755133536.8510048280981967024199245520708136 2.1807119107991006357335769177005585 0.0390341556564196475870002447515566 1.0398164124295454414413946875986961 GT 1 -49385799047038332476.7360071876215912223731237641555369 2.6099950859962380635759425517211166 0.0745557116645493896227263801376057 1.0804830244852688170941550452929750 LT 2 -28777950288817893009103046592067561.2105625845120456357467582861815597 0.8170910998473994990717641145560656 0.0529459076284129697490139253488380 1.0543990677107627263349435725803087 GT 1 -896556574.6287328100612958092971083902115579 3.4729410232300520876455659815157844 0.0079700789082018518592785492558122 1.0080020097612144729128968582773415 GT 1 -120416896136585933654953744707504.9737293345820893484912613425767684 2.0446873256802968772544527405929675 0.0418379499051474948320010115857875 1.0427383607287718865974894650011795 GT 1 -345120140341676567010053687488.7304961239922060516984584002476006 0.5481822511657672046030642681596607 0.0613606302338002229918477647614855 1.0633239312999185605892577629911220 GT 1 -13203276839191045054430.2314362723355539630290462679940685 0.4619496128066275454355131123913973 0.0781490392847537038433098433840903 1.0813717163062257669327117645521415 GT 1 -4.6561083152793049332168909491816064 2.1458572990066940760225205940462799 0.0191884741438665659385403053967829 1.0193749623845997604931049548049658 GT 1 -232465749353281885841831633476978.1709998342811766544911466387206833 1.1228373593177602711412138212418456 0.0957205443943590133712675366114849 1.1006168340543823254899096985942761 GT 1 -11187981703610207470315861976218.3688751905867270601244551576504636 0.9114665242756629052607711059230649 0.0186075088158920971657535022807012 1.0187828064824555871277034602910253 GT 1 -4.8655354684055513224525014831266497 0.4928876750325665381325975750478418 0.0729717188341021414308465969922265 1.0757712056120727118054537789885407 GT 1 -4496836203463135723652325265341572.5619018598384796034082660522566689 1.5672030738157274242640445900311226 0.0468252383167574673624367985255710 1.0479570115700622179537750366772286 GT 1 -956697.7211352992315100756526357016794125 0.4051033204964427831317799783761612 0.0740416927929733323657150755775962 1.0769260699640380908746730770647571 GT 1 -44281120625432667171893471160425.6034253426139056383660610651354219 0.0061812548277517439812863245546228 0.0757189857455298635917549426577755 1.0787391255969645131205059399070386 GT 1 -2182870393003911394753264023551.1559693970285593815669162458732688 0.4484682982817637803631570122317808 0.0404746032862470032721913707204850 1.0413164951887336955620902850878356 GT 1 -16505091.8664569983799066053903704614837483 0.3468643295071599654708092437161707 0.0253034828801919371286888319555019 1.0256291209296412680601452391865122 GT 1 -196193409560060503029151597824548781.9951337304170056665793893099168233 1.0813538205805932581583259254466263 0.0106832559053489312544083978167226 1.0107407316019603248946684737713016 GT 1 -1989784325209.0961574498347050405286176422907325 0.0134315014746864679684822137175479 0.0532797953614132677015607231290032 1.0547516838984330428529547286186530 GT 1 -1652944809045147197550049471.4972453814851773924235693690127217 0.6500419852129406302123270742622737 0.0627064909672912620275627689062409 1.0647588024294909182158566824502920 GT 1 -59681194411061395492.9138568095166878452117808799812383 0.1577385662220552088236559648933558 0.0501241239982444297530967082365762 1.0514239597641563438926220504599953 GT 1 -1009892023.8964916207750060131479450846471763 0.5028237233636943636384288935463075 0.0315652720644423657820819910802174 1.0320741934134001860905524943990305 GT 1 -321895606760515808302703613582092213646077.9061749060730872035710601931617478 0.0283844351925285441574677594098172 0.0288146475410356462111146138430136 1.0292379406903846299396392704035872 GT 1 -8980170738235115560917982.7013619859601018625549373571112573 0.0241118919899745225883040504476575 0.0428772955178043269560096494955881 1.0438236778986544806104190124084138 GT 1 -862675.3026313838178950261210048727860446 0.0418597654641403675902475168373071 0.0121166328318576293428086841217307 1.0121906376276081325991843815458587 GT 1 -152601115291034.1251760823425637630629154107848525 1.3848772461368051399967350847133282 0.0191245901883989157176610724872371 1.0193098307325214551683670445420590 GT 1 -28767703879991264665606.0346535939383621719092298121761653 0.0259609590227103773382653876164828 0.0296130597398716960337506044597842 1.0300603795424781739956108843582757 GT 1 -118221.6565863113452647434896141503145971 0.7413318089248442319226882631328557 0.0886714288180013275027078897064836 1.0928517758569630223211085174478586 GT 1 -189460482971144371076498.8062234199839395318004027591382256 1.4150978477304777116378932981275159 0.0160654233642419769381471743816021 1.0161958712990352415642231139362440 GT 1 -1879807431811362617523105601342255.5242559804199200164189554431716472 0.6605625390264885382854304702903592 0.0027105218242752169163469870551375 1.0027142019400822214427512058269812 GT 1 -1778416169207560790130292517998121798304.4115045245582447747911139217774396 1.2700902922030007404840764584504815 0.0886899738832499612793908917610662 1.0928721255469967553545984607708350 GT 1 -38403170303844060018251932531746.6397490230837587677273922731772334 0.7435566595739758708993321229161149 0.0304347817234875694430472487495021 1.0309075365500817330713426753087964 GT 1 -3858467965841289550645687235070939544.8168799234877539492975940787017468 0.0424943964096673306812328487766321 0.0405850394584745869506396855107201 1.0414315963923036368745523087838118 GT 1 -27617149056163498615.8681392366611678639576234439591906 2.4146762342296072357305955609540974 0.0879302824456004887873968038488711 1.0962744218343898593457358266854524 GT 2 -5.2113744841094438730321007775363001 0.5676231865887452928424044068368311 0.0310261998226388158164570283501200 1.0315177054575634017487045404805348 GT 1 -2206100.2560239813757284231658961631780208 1.4514668691945014110872902435862879 0.0630851643004649497966723713097560 1.0651628912698706296559160903532353 GT 1 -10622939373818925573336866345180563036.2642663875436040030500615762385280 3.2021212227609243413797533589438357 0.0249696523756201911213227257542622 1.0252866827000918834820512543451545 GT 1 -2157438027164812015895917880288936734241.1008845144465846122191670907584675 0.2008863468374438267359873295843374 0.0658430796529486824065593253742170 1.0681108459283294917601532392732146 GT 1 -191.5010345265361455109287150789443251 1.1931356153289806099777564724819737 0.0375854758653865438452157458779603 1.0383100228576004908416881891812654 GT 1 -4853.2117267459689517720887306002630316 0.2227556868714839594659882805616429 0.0904643413201921096531891222191233 1.0948210748878491338146145654551451 GT 1 -5072472264378788649.0758883604648687660587279002441647 0.6708150327711854712199778827018647 0.0035465264328903146852067043893045 1.0035528302666485549194735906984252 GT 1 -9.6577645034439130391547629682588388 1.4509799274561796586036382804597619 0.0064265482990193429897581189003933 1.0064472874624453560273685875674696 GT 1 -674655854213768414662734.0633712224528741089540466026851040 0.1604805977525988104017140703448368 0.0318268336206147863975640779235563 1.0323443168168322317661575251874119 GT 1 -70464960792266.9283849920227137808337726222044161 0.4541329204777059579440692903418510 0.0480940543212161510818943642149963 1.0492890456273722525534065950748495 GT 1 -13948245306995.7082048214472530567518897818433137 1.2661719974888711685533029746594958 0.0045599620457133769283928038533752 1.0045703903866110147459804907345139 GT 1 -117748231271050248628835.1890399818683967901202603053575518 0.8274703816168967106348514859748161 0.0189090688773094072161251760282815 1.0190901314365042039208943535157106 GT 1 -43.2528115372773012689111179815685199 1.6346292023512406132870294023399161 0.0934775174255172257346151694730841 1.0981394475785314549828975046788459 GT 1 -2264124954431431.4072271696719531458142132574370950 1.0864856889731366938748034465444188 0.0069449349451772636594510654515850 1.0069691632470231981004710942302503 GT 1 -56681016987871401889202108878941184378.3005465874086130938164483852318404 0.1668176296371512568238127537343137 0.0955321770617302691305336406258058 1.1004085491982896895523378744607428 GT 1 -3099534679018561936631113695.6588599009425523901088061804192019 3.3688847828774626856830121691277916 0.0902837699973040713818031072338641 1.0946225632638081258728379819467027 LT 1 -114595163913546358453061222165483520.9408243330490431562200681373581828 0.3443023195065786225722155116422957 0.0654447000849325716896325375768606 1.0676844778982693687656500047461808 GT 1 -967504514042477.9545572570211367058490591442248593 2.3885831146307345621937143367028282 0.0255006726107218656705397637064994 1.0258314502458647904868719776372526 GT 1 -6711008952808071748168224959110330495869.0608216671945021116937028793170298 0.6105011672112519977928213188619748 0.0596143380522884418174490559153395 1.0614652091915883740989972525626480 GT 1 -1168229.2593622797062480075236829861027323 1.1324463436862461783913273191317398 0.0209813134401081824049303165776755 1.0212045492385978543460663646905874 GT 1 -44308810058430413276.2340226675911007833905817798228899 0.0817267146756500290537190678349820 0.0377173097253979785809189571486837 1.0384470146495879650761559316458496 GT 1 -827543937805257970324841508256609255537.6969507612254636768715287676640096 0.3585810352716277410088609530279317 0.0750080754786165460439174871330652 1.0779702717549737107108006571277577 GT 1 -2595556886129244219916.9688394793998967154235241047960931 4.1774435614722503895722458962776693 0.0440734125443649486076662510818483 1.0450741602437420238625469951198774 LT 1 -503343409216.6767540451785262625058243386784094 2.1700581342067424406028005196775187 0.0939805483616180906324536593135734 1.0986945033700920384488775961420409 GT 1 -19932084477239060839.5012924856005721792482372721010979 0.4793474251896252494920104523339107 0.0091835807484736197230808401274224 1.0092260097929717850603360258893111 GT 1 -9183479175838919686561578260159583298.3129190044672853808214860695854831 1.8230694409389026116679405572173312 0.0852414382086928439379237610811321 1.0890951154203562743203996433108994 GT 1 -110047576550769301498138636056.0027064165163767639826083084081075 0.3608504702253985985819753283742357 0.0661504842333958127022016107180814 1.0684399717571051300041211336200563 GT 1 -437571792717542014557117706123869567686.0170342280726511255310983310664437 2.6097379749258141816743150763631052 0.0094747566581255033398023363973084 1.0095199277145955895015180569779859 GT 1 -482759116.1129111687973676036684655461448380 0.3321301940545250928036972505220037 0.0183592862163102412075215048609352 1.0185299094858315386439736395437956 GT 1 -1519156464539.5332803726834480266891567373395624 0.0287635191706443926620409763412549 0.0948306513986673355371959485837751 1.0996332272616739773860670312854729 GT 1 -868482818324.7278127679571909078832942275407187 0.3151654698388619509255577620993788 0.0679983262741497163126186672947523 1.0704206684549713926982993106689958 GT 1 -93905371881414611168.8536073500301182047264731374164949 0.2073428837180285022279302903289391 0.0610511788137568957460110146018637 1.0629943047882730324449578767154610 GT 1 -358066311.2960565222989449720836922560920297 0.1317926784954142262965120369245785 0.0360130511342150036125137463008992 1.0366775229842079607133569616786368 GT 1 -450818800337520046.9504122288377326001947601572464321 0.3227040020475515366111236461641486 0.0754428257538686118787930774712051 1.0784403866424873340284923600923495 GT 1 -207.6327708784215939987620632543002914 0.2946024550352286135199806252187330 0.0488514291476108626543386698834247 1.0500850027161490039499636871358935 GT 1 -589015093888.3754547262438630274177377032370886 0.3505446207119807789126891139659792 0.0549302328736245696359312878503347 1.0564965265665627728483808036648425 GT 1 -498541735107.6638032858055650614763564782204602 0.2837908789051142403675867630198324 0.0080850163925887139128922856798755 1.0081178773785492166176188924282832 GT 1 -1746803926266330107158652884645901956564.9542841351392404876425826349396483 0.6082976887387876715181967750570783 0.0628760706128585035301623768335315 1.0649397436035901778336364186022929 GT 1 -50937.5509164354076126937818173496802978 0.5479132767476316799539165646303324 0.0126453133434180381506726575508444 1.0127259457877171061518580298178781 GT 1 -75070283343810576456.0402702052991758230908516720905459 0.1577742901704379221491538992351208 0.0138317993580469473828576885196795 1.0139283500417690551861781795620020 GT 1 -36520711922501898993.6294483870107557042128932185450450 0.9189638410234418754702419459300009 0.0092470455873899709490070234985977 1.0092900649199650912438872923305810 GT 1 -125918200110423100735414009501990331746.5341254488020687659355130297012123 0.2090967636789156301210539955226389 0.0118166145090887654787234248209220 1.0118869856131502153221983520588560 GT 1 -681266559482744047739735261.9065590684097477772904976886748204 0.5259123196456598575797236795700899 0.0916681344722150055606977176948539 1.0961454764869216821343859372350954 GT 1 -16542138973135414873728217638301207.8948042431526477746231019949098145 0.2746083212318291715158283146841666 0.0752188981995934854985395108891351 1.0781982161772242524625733581647791 GT 1 -1394959221783299960169046.5849935863272166766551817010913062 1.4163144106719600772956508206971508 0.0969332548902820180795850872138333 1.1019588134465335431411067882592491 GT 1 -7670824164473650642269768646.9002257610432222707958830260242158 2.6900567465354042120948745315710395 0.0280741915424344263730479989524054 1.0284758061822455749062589370925885 GT 1 -330609.3974235033914218247196720112207692 0.2462507728268088926978484630271928 0.0007339491990155565666508605372970 1.0007342186715897786219735299021699 GT 1 -6792250.2540120284954289942794162030634005 1.4617182182038497066384976908003217 0.0491572802058985962103860925648413 1.0504066141372192392252355421731934 GT 1 -8210246877006495401443015954779438.7312754094712366677953256721753165 0.4774166575087619891942177175017974 0.0487133260313647703458092236805182 1.0499398171001185642815822013559058 GT 1 -146130816807937756739.2373922239395105165220107903603716 2.2436998868271899194055095081924760 0.0554464017920239152750040886207736 1.0570428459450238924704569904193546 GT 1 -836504125634559781691909513915.6599565256652715142308282203957917 2.0954089881700371629833808110356622 0.0487221323956684186511704504042959 1.0499490744620753160194285148348973 GT 1 -75277001073482799248264632483032767.0623678013250059372072597184249255 0.0357749023909754084462630661482545 0.0078121296241843962677934036747032 1.0078428041689349578884276795429792 GT 1 -353581918706094091150997480267867293071818.3936623591032341673381779612383382 0.5330995038030449166916835038270815 0.0075214683046645573626982891680766 1.0075498971884020010156553135012040 GT 1 -2216.8807762578299366392205694491258378 0.0247670936187815124853525715693998 0.0626828970271184083341461394724345 1.0647336303323919296808704705342427 GT 1 -3962293.8571601364157530345984032617635788 0.0173619874289689065066209505896882 0.0424901542023595863611889220469390 1.0434192751628247790057912868750470 GT 1 -9141052.3251340871049295657396951952909627 1.1121310081439632568263588914661469 0.0476016222948006725451233278870599 1.0487718677463532787959401108581491 GT 1 -80700554532.3636298951368598198927974715361908 0.1369414215037811853040141336355804 0.0627710138612753827332029421032157 1.0648276443816956071450762279591090 GT 1 -8965178339.8569622915202230107263124808992092 0.4759702717386817378665547251078521 0.0948848352282490925043475113972741 1.0996930894868630747682046011540010 GT 1 -172649298039317963035198455065812712144971.5269708089988501779636643154487603 0.3848813785992501411741373114851489 0.0477673090910688289801250744130095 1.0489458508335940659458769243782111 GT 1 -198783196346612059261955823849369382275586.4461414532793500265814536899444958 0.0865457127402875436720157343546704 0.0019239989281221609886645017881494 1.0019258521915593022631439924194624 GT 1 -81596942305060237818514.1909259691895332534281853057482014 0.1571030843268765034094172528008297 0.0110293487307305704390562900598669 1.0110906229572037936767576468610653 GT 1 -3688918024497191.3156414767232036388054961090627037 0.0339397484845571157823805415042812 0.0516226479658411771250841553379245 1.0530028052593221813126480718300092 GT 1 -1211271943137589513348193.2023834643587981809481267359089116 1.2996709545003347742901456051643106 0.0362659867850222786755702049808373 1.0369399423459663871830538065864488 GT 1 -5890196072806005592098220308666632991608.6867475105144150238116180205256135 0.9376255223953165152652920611973127 0.0661537585728879100850046048682716 1.0684434780449782904129359437239458 GT 1 -11522652794455718.2330770749735714215589157427704645 0.0367865480388029532153524950084804 0.0236913053772973682748870239600784 1.0239764571026703613245856327650026 GT 1 -110519870910790290935833292002989318607702.5903405252231703862713928155478023 0.7341874828539972808631011820688468 0.0795078780904883762899773162211664 1.0828468368361102628804543935785436 GT 1 -3.0686164011630684800647194993834969 0.6430947584334016729236043824589688 0.0109202721940495729917375893773264 1.0109803360424260689235887532076933 GT 1 -4511651657.2253298349108335383500757671816175 0.4646902798823821151493167242955863 0.0252684347413835911096883727236946 1.0255931635746314219631398177749646 GT 1 -208657905518084619978053097386508243333131.5231551226054896296435285025304267 0.2416887342566101600913851475038244 0.0890207431566173982356679810107614 1.0932351516374128182589782323647970 GT 1 -15419035880174994188.0279596785600517928090112693363691 0.0248468118071725933866386945157920 0.0938457228342857306515532864548004 1.0985457035884396428571373391930546 GT 1 -47.7301558278178759270887968870218713 4.0381386278730809399893263454270918 0.0694575073276456727248316332549427 1.0719875374488502089848720728882397 LT 1 -35676078336403885.9858737708896455893439503222818005 1.1579215002918882299458416528798351 0.0957245423194944022953640804571536 1.1006212551810022866179905236679998 GT 1 -6702823161004704618911957340927992246.6857098576059109075989204959351799 1.2636441475657753271339915733042039 0.0029951379080522657087087323177462 1.0029996323100758159214179063283965 GT 1 -76709122007421370594437155251520523499.0262127199763581978710589846421500 0.4199207394123130398898312996038028 0.0379577640489198542301896730870864 1.0386969249651446668392137458468373 GT 1 -941156.5740951258094447013817802628923670 0.5933928868486134366338683200770232 0.0161077063524783382136428903531113 1.0162388455960950044692977642485437 GT 1 -2905680594716005836.2537641736628100471787720739932306 2.0435793000177558446943009623717620 0.0232766143443495970942281642955238 1.0235517932752121240738058257830415 GT 1 -356763828241649.3679247580372326213039833258645847 0.0625474547476725795526300421195649 0.0447145867352023174124994377860459 1.0457451210943957237216656821049350 GT 1 -372921754868526848649077387314330770168.3182988884232425033891240315837491 0.2732996239833592424492577980373479 0.0244278630880860412705790083503100 1.0247311729991026982223940240835117 GT 1 -844467169690677606147377059565104567.2382526476314267056124819258139865 2.2519142706483726696232478988325877 0.0822508711077569495381964620141011 1.0858312057832597007336343181075483 GT 1 -2016271625.0109451037035904013593446462977677 1.5634117809737667985382353861329200 0.0838034236047344012494388198383675 1.0875243342803477177375017042481715 GT 1 -144269247.8139119993849472575188746809435164 1.0456411615917052009228074356419376 0.0928460170812201861831751421571398 1.0974430715910476595481862510779668 GT 1 -12506354761357023524263621321948236448276.3010929808506283696814146547802186 2.0769027543181555802788945537528836 0.0195430739887459969878681719483978 1.0197365649468656811169887572081121 GT 1 -9.8547867795893136400892839803300254 0.5969882008078913912543232790446450 0.0725762645752080908292110870422074 1.0753447138383838542760288168519606 GT 1 -211065700137704.3829311343892019268588752636967453 1.2676727785676469181927338893154074 0.0127369615559386778786467174716893 1.0128187720714290863675680876238398 GT 1 -83382527372518256371517940855279090333.3569387257857833436787746444242745 2.1698686513285159129052485336406238 0.0458479330056028182274621774298263 1.0469322208713832775109420440788870 GT 1 -53425936523.4818158052968449121169662771007005 0.1043582379827949304101922421668246 0.0513208239518707090232939422531503 1.0526846028103711330136454752811283 GT 1 -1011479750766939710218072.8767087222920254717780648128370596 1.2552373046350594344152560553381649 0.0141251525588096904100081269723458 1.0142258620085708890788775245560843 GT 1 -104994043246191423090357907.9856493655753319508442554026774144 0.9936822533365098947195226241144945 0.0284170095634905424558509888042172 1.0288285887627069123538479780194805 GT 1 -26830640009280690471381134838298.8977457867410327011436288287018910 4.2707100976049996512453923455856584 0.0265317858301131509078850663643425 1.0268901057867756888842644442964858 LT 1 -19635446909271582874946475.4114492839722401183058580810222748 0.8328852196098604282727039305383661 0.0434066860217476679738554172390488 1.0443769371203366080205828167722984 GT 1 -10816784533283102801314103.1609156538143150290423850105619444 0.9409403839358924214326633354139602 0.0300556179159401180837640975958386 1.0305165471862680380235670029262582 GT 1 -6144821236135843045710413019.6282158467797140560107973892234582 0.0191153320212325244916251174557158 0.0091436066056545185406630109146863 1.0091856659556143448271885503245352 GT 1 -47607186896029175950122788.8633346548171620875715803983450608 2.5856273259382880110315070121620430 0.0151219735443790958099359912170392 1.0152374764872625602279798221483864 GT 1 -5603686696593312558321137.2185791227233212141878820882604106 0.5139356639018279412099229423400900 0.0618192686580872365317807377195458 1.0638126711990124349406943958471659 GT 1 -39125177679783.0358800525815569188239088692749624 0.4095112368119652655939054383438340 0.0892429324467971625101915051889502 1.0934790829773174501344877995159204 GT 1 -542033981769561698579549237811101761334135.6737640321971559597274956096152802 0.1170223565616098149104951913865612 0.0112237866886676845231341229942712 1.0112872486852438558579525616325421 GT 1 -55518050385057409339963005485583602.0192173039763604404826513018608953 0.3329782424744676557177583871347173 0.0333784803867588392186779551166547 1.0339482566147112463261701592967451 GT 1 -1785811372660528.2557325609860056198655079669742302 0.2810701822223479497186051065176945 0.0332246278558086703917210459201267 1.0337891040558850344951640160833428 GT 1 -2280309700701838665853811776.8062396305525256362302692817921711 0.5897234855895654643144276112269834 0.0475750304130727050121994749305327 1.0487439471711802605546266319472549 GT 1 -513267398.2879852057658878445617018981286837 0.8666776160525207860802825715298413 0.0458737784137774193761892269362146 1.0469593085433762396313843238500863 GT 1 -70282841.5330894741880747829334275776141025 0.1633565014613508780453277576724056 0.0412207329307514736689673213366985 1.0420944004883631381573820054604484 GT 1 -23255641827611256277573.7242782137528677006293138305605103 0.2539798797513317286574789579346324 0.0562966884306722264344593546779541 1.0579434508274602697863436597716596 GT 1 -32474.8633432515771508778512431517872886 0.5890526699161898716043961439306115 0.0509281023133009504960876414103804 1.0522707217175227515885232207995994 GT 1 -22154314820243013103316928428920177.6591793655825055805369954523123250 3.3277125252581220975464575007238648 0.0766615745040483010791032686893260 1.0797594535065049755389052082098275 LT 1 -15235027705673036245555374041.2525621862304490443598704706783492 0.3985228578865198243680227658413204 0.0668526752488013365169183503208189 1.0691921862582508740505231014086439 GT 1 -33749391827080063608.9724882612660871231531278439880749 0.1272309837768206947404307238061458 0.0714432577583228104359604944327959 1.0741237883262214404184837375317264 GT 1 -13932133.7112441630546131578747681000432425 3.9875809457519188232669340830275234 0.0979165757324150165367090791366473 1.1030482750947387015160358690399592 LT 1 -951968483450149871642328302.0605224941045690923694268677135899 0.7762550625968077780757264589450989 0.0149804641565144873809525050032299 1.0150938046630862157934074223708746 GT 1 -5267085778557943.3926534987948175930382414420826858 0.4312163726528919610664010375098902 0.0609172886619449938613292511205204 1.0628517191610138594551291194563985 GT 1 -33145.9685692060879418102005664671052873 0.0167649589833700474000647909428467 0.0882049717072728452721049649493351 1.0923400638468268716129550885245410 GT 1 -21258713487322373741845538.9803621733783334061577603154600899 1.5624994208261235765978287918866666 0.0097241381506601383347983485671271 1.0097717263360711966606911466826968 GT 1 -824.4644446031129515338286693576899047 2.3283739728277649853452269500127091 0.0896168551226955082176050862132195 1.0938897297562976125755530167397935 GT 1 -3398287786678482.2164347577172964407249183855829490 0.6050417153541705494183352970446739 0.0040686923181264370626938974907462 1.0040769919668438500025083412878735 GT 1 -206564091773883749453576391352945816278840.4761792488663147658209816906502848 0.4217367034927457234419166205636454 0.0466689731851225647680902925298916 1.0477930832642290224399853284273677 GT 1 -85752015985423529932552.6092953635999357713950153458798476 0.7709536825863396468869257477149015 0.0397384342925832875254158558801216 1.0405495673533466863779189019690851 GT 1 -240669707552837044857628649.7459825043153568734967027849941946 0.1587470797090669468570401715332076 0.0750764752201551351662786139273756 1.0780442208012348206274627140753656 GT 1 -4592580683253726323.6758580211415984698448841575417415 2.9812597000854912827725234944497689 0.0004765687083921353477763945700524 1.0004766823033510135095207617166899 GT 1 -2331.6005258389527159513694845484438252 1.7287897160563332691943264592371840 0.0716150769824836578764537521058939 1.0743088444621956471785793532173538 GT 1 -5155080.1844427843209617367701855973862381 0.4361957393665403287148512413442758 0.0162644137327954905737264705753120 1.0163981311828140482281424434707262 GT 1 -432483338500648643814481150.4348099047881533461424947256151001 1.3022605916088200406947584212397534 0.0474095326033614510687070549881922 1.0485701975973818918107485578454872 GT 1 -1580185902812792338342.6189989286574553902859544076321211 2.3941381841239757395970426993095313 0.0072941153223523580105720791216872 1.0073208474523361033339337219927005 GT 1 -100843520949813358503914972.5676293706283911681820113523057221 0.1991266070305971193670904498949384 0.0149523336729639342738257390801937 1.0150652467707245012571187392834248 GT 1 -3871109378851972379711402594.2530477147793876828982144207408667 1.1001261212668393964920518810616430 0.0153807963505399305725278025049159 1.0155003078370045336779230491517384 GT 1 -144910142862652368019852970.5493321428170414471306243012725861 0.5966324002333819419586904423593201 0.0116336572137554851524733726251905 1.0117018576669737382902217823649305 GT 1 -300.4133041133634112611204581301456150 0.6945959555681835053778853932994540 0.0186522979908473547578769736320245 1.0188284459156504235654333762305491 GT 1 -53018115542512705066767754956828357398862.8645907370994734087532481729061098 0.5839707507019373669804495977622531 0.0998953102583722759651070917813754 1.1052442004875560863199553276837901 GT 1 -271076024587986105821469504535511796.3004426308367022507688576682063647 1.1394639598901107748398317217469641 0.0233887361357401248053362304227740 1.0236665936669844442205367243232968 GT 1 -4020456598081.8674722966648481752023392902871021 0.2274592956252689833758753464066819 0.0851501463025941651272480873662051 1.0889953214913367066181682442012900 GT 1 -18241518706558988359115028540.3612700174079013189465393970078905 1.1358539408443125008055520016875489 0.0422343966980577849067114912351895 1.0431522039110711561178960256263877 GT 1 -1370733292489192954408498482503016.4201860494324741281162362676264050 1.2358740521029992080779051246143624 0.0734028698036579302231770513858394 1.0762364031376227489460463747704225 GT 1 -1846660738217205478523312294400.3414153443397644036383044587685349 0.2090612292502831957197905447558339 0.0885835445767560926418497537443588 1.0927553452097462624459223177936484 GT 1 -3407644694378417934776416.8042219079114415585589073138243838 0.2329920545422633876017866154130680 0.0793692866630694361463401415341226 1.0826962858516484786538451992450600 GT 1 -3075980264739867455277.2668289424841974875203572831681128 0.1435272875540706882301374838042107 0.0178246441934964428780135248402441 1.0179854165016853607587116217675612 GT 1 -2492461281327197.3015677671934428777985600133352868 0.1593343302814321118665011299718673 0.0315550341163284304425375465988638 1.0320636218243162579847188327680843 GT 1 -96449.1402012170201445502466736595478632 1.3777760398143522215327523931365171 0.0497909917517630778754963063944181 1.0510733099035568663275081940507086 GT 1 -1620858503852152809688201.1393744320883033524919852348843619 0.1122627040358604795545249294836900 0.0220889871418029640254639956229313 1.0223366019846096142842819669518125 GT 1 -7249658674838834943653272815755907.4115096253904946050426348968986356 0.1401293986626569483285436752429167 0.0376683826588855221387663818604437 1.0383961711467319470700101231787211 GT 1 -2042780458870287811373661546.6665936135015651703517266611401613 1.2957077680477089955463051814247313 0.0250152515171018898432326495527959 1.0253334506882792954518451701135119 GT 1 -54307638411335013459539693.7046877784657617515327403040998828 2.3664869332394616185227448992533467 0.0656361543310612238641484907628277 1.0678893602199586198760916482334100 GT 1 -6.4858470657857061695282842053984639 1.8622884795861564556524865712315708 0.0278283604636760875922293994615111 1.0282229062256901480809869051085851 GT 1 -4873943333981790645674.0676803906347172689723907483480191 0.4723991645750923055927727771560351 0.0100529054155164136818369968874353 1.0101037770951120993498502163543731 GT 1 -13690373434704851810943117326811363202325.7493387474476901232379266160337638 0.3985330841401899731431323053908554 0.0539762913764046854606430180602548 1.0554876482743307920936736806807764 GT 1 -19.7476989945183556348946441338879339 0.0159206514642701034377860691193983 0.0885362684119394528670343086551561 1.0927034754651913547472763820169161 GT 1 -10033817943952476388483185543753388521133.7132094045535441199732000733306326 0.2454051440295508982521795357858325 0.0327458432128310301377534281911582 1.0332939878794293792171702832203392 GT 1 -8119563617459874039882991163545263.7760499655472286471588075269135884 0.0268936057488894756385657408761814 0.0764648951076590652462629863419267 1.0795464671878463444531127018552243 GT 1 -406346284677040864964925427483955969765384.1762222142434687214390015375032181 1.8648913734090046957162721498804072 0.0624951613004004976518854135671300 1.0645333598713177267526501731847458 GT 1 -21.7973768415149297349205637440392479 3.4536021918680920149382349691581290 0.0565914329239756316867747472890350 1.0582558271089467952643108849960704 LT 1 -24824325301412715723439503279704157485.4371724068734199117652030794546968 0.9658752261290666079470213790965401 0.0093710131129164820827179639306791 1.0094151973067142632842227265700696 GT 1 -40664393631.0638664464331495525861348696643191 1.0754778286267680983735287198035314 0.0923254551349598816507803432280514 1.0968693953978785005049656848214879 GT 1 -493550806851315842724986553478481214.3225797174452374187817557584697011 1.6421564308534456248935347870278530 0.0474861101692445796890421694723364 1.0486505895881238781074917062047720 GT 1 -10098244294.6757615160476538017668528907520749 0.0209509853158560138598464748586088 0.0812663050341030981531106455051705 1.0847589755884645885754553507485068 GT 1 -1352542484497.9940842698553223500186659944735065 0.4727995260872213430258358482275414 0.0719152135912227041339905597421910 1.0746321857048025377535481313100793 GT 1 -2599805584726040599.6867398599400558114112312156560587 0.4324425870014608720614742698272865 0.0163432208849035349505298680733706 1.0164782444876503006565180845034183 GT 1 -3982526814.5590446745427397608808363787497879 3.6051725261335379322891516309318514 0.0520954814244148426686481802803925 1.0535015006017197587746917822780147 LT 1 -2669621210.5810835207766857796157731162273517 0.1750545739065429764018927952117835 0.0361896542642716179403877481166597 1.0368607405154755795800612648011094 GT 1 -6.2489979476826456168610022258569020 0.8245300277099885847489220722119350 0.0439488062634365860707230776353117 1.0449438174308385400023407975968881 GT 1 -40601420507737579515329990.5599635394844994435127812480173849 0.0615108716239078088500289205551748 0.0676229750697344179066287118381181 1.0700180129110551125253446119986675 GT 1 -110251922143764703179888720223479156.4322928285565895527224023593058076 0.4603033981059305486729096413198967 0.0532774630973188028080935526914597 1.0547492203815351750006645730264881 GT 1 -9161500206469461956101892505303752100.7237481203284139799674588368538598 0.2464125375712891172832675525810834 0.0245560497144338182382391357871444 1.0248625779909665657261467717147474 GT 1 -11064089090476.1322412178301209799153303972485533 2.9117210558522972996397425556951551 0.0566195579071510086587005444551991 1.0599842475399710834599387623949882 LT 2 -679899055011.8220004668755543421283578862454223 1.2082731855568105220569118983475832 0.0772531206783489979150033696022895 1.0804003190103937400188838974192195 GT 1 -179551705405507127526213119712.2457950060173449624862594994703789 0.3003194918629737854342904503945138 0.0208754165918254891867300108919770 1.0210963887684115660449182104177717 GT 1 -3480903192617114768.1150578405598402211804115409339683 0.9232108027367330777877390637937849 0.0243335970749068232076282850708773 1.0246345512777416293310648149605595 GT 1 -14152968130661126906944016087.7484648320387889841670510405883260 0.3992216875806044747615888577287147 0.0826470984950755871280150684973853 1.0862630372421243655277348533688613 GT 1 -17612161476798051137.0777819064471058420111455470194252 0.1450025872942965213125984981160988 0.0380612898069379727096402664533112 1.0388045411640737757466201749057739 GT 1 -4.2428603092291853302922248344647620 1.3063063837072712438476230672378813 0.0383315731680014919287220789266030 1.0390855583818204605664603731348684 GT 1 -15.4747771065579368663687427434001600 0.4957818528858466384979508922601029 0.0269205849862461592743140717866452 1.0272895814075869525185265919657141 GT 1 -111791170022717352852177277121520731645.4494406445517471672814297152869639 2.0759163262052916652757431485348405 0.0102413178938236436285713040826712 1.0102941210149960405723952164210878 GT 1 -60216718013825414233808419071.9511093444885585650613947516967691 1.4502185264333118783627173536551037 0.0481583881229090679564464844553915 1.0493566321111600517748769269041917 GT 1 -11.6206246865755191125002892508912705 1.6490018396387202346173841112163570 0.0347750753879029694905678229209424 1.0353941223030743280137709296155543 GT 1 -310566.0062312862283663038910247909803892 0.3262045580842890527971882354322791 0.0489508586963983553494556207078721 1.0501895444767059046860208707454674 GT 1 -268599026022058.3373574447836945959223676302563181 2.1878624480226761648664705525215364 0.0687124147582177892310863933500726 1.0711871501116347823412171389983427 GT 1 -207089309250390820164696462700549009.6124417760489772884406990465646825 0.3536362568040241157451020669966581 0.0890834769678332843697033106494350 1.0933040181575877152138085277335126 GT 1 -5297015723692901938495275231948482712405127.9632416594900658807171332064062223 2.6921639607872677258072664048563408 0.0878807133242000163577027267802016 1.0919845006673201346482465077383364 LT 1 -1922981345.7646047301630317181330670462047985 0.8214597917238909681766832883525344 0.0564571742543710493641839180334095 1.0581135249062065549272709461611531 GT 1 -56733654273224727417329509167.6045646093158326215531702172981843 2.2135297620302948535815562695062266 0.0557926990122005801085093053180178 1.0574095384408336844330790052547949 GT 1 -4669761233.5033366779275998080091066249105555 0.6025427997866046740532848123712827 0.0939146281041023517356334909251930 1.0986217479128042551519085490841417 GT 1 -1896098002137894251723810.9700026688551809940026367388539963 0.4712755797097821309833155497699263 0.0361979995874272147492273093260201 1.0368693992306703897089537421293955 GT 1 -147714309254420631693.4565736695240471728383639632946682 1.1809938248198983733385318308798181 0.0451567137542990179042257601063427 1.0462080501390258326114504598080954 GT 1 -19.6394465097650944381430279169970220 1.5320934305466260410175041005840680 0.0869129988424615482814578800321313 1.0909241114073597029193459001005916 GT 1 -369282306920.8654326045319471945759086033077456 0.2617376906197961421091150710995925 0.0140222770283134218557542027140714 1.0141215179697383433226651866927142 GT 1 -7518779376972851931961.8183765736204133304067279526717181 0.1464827157171407963336060630637536 0.0332295581879217627918146788277486 1.0337942038389649244175871888714754 GT 1 -138712434458937.3537410060867678967889747181456730 0.0592794477128722564593343426207385 0.0182962976543181157513391852710113 1.0184657449291737568856423728813958 GT 1 -27417670831725913460953644841762032.0008960113524540240881326294752928 2.6116358401634891619690480370324532 0.0188374464027879079870313391594153 1.0190171312098657690220943151868382 GT 1 -6207790385593116707353788752368561.5389571701061555588999591358397432 0.6238364671121475931532126783665785 0.0600217717514499022751521854779792 1.0618985654240303739913983630815128 GT 1 -5476968973859694976.2834279124049959916795425110335372 1.0070535347927261622088770054136262 0.0780598362187039555952670179597731 1.0812749558164564029380851676774929 GT 1 -11337431049019952304072428588600.1750499985478035291177761319888252 1.8239388043514648334162734803767016 0.0762176511960535273684144969908233 1.0792787883299574400007160614667577 GT 1 -179971005960422428009.4382890063593123683459648583979808 0.3082216832925830225073887449816304 0.0066837327319826487869870391469290 1.0067061689010519495572424299387549 GT 1 -99809943147921281925021603624934.7910057842712128909595956835750553 0.2238444085328033851136411862980616 0.0852990150244928734987245151669434 1.0891580594913752746925141809944995 GT 1 -9.3465535450047202602982595753693760 1.5388240138443902176311480632741040 0.0598744006427355263841475704965362 1.0617417963064398141965721380894415 GT 1 -137906259489738231408359476549819617175303.8187019580863724515688183311008554 0.1662223289433981831638550042985740 0.0177072648319752365557818120327341 1.0178659140651732292233166397598993 GT 1 -1703921491.7474720529712026069193528235879656 1.0705155749751530356446517131278498 0.0515451266840121192381241479467933 1.0529210676329404827035398111416917 GT 1 -14265836271684201672607676034548342774804971.6688086331096794350476125028787104 0.6371687947495855884815567737358406 0.0003223657476752069106900914342571 1.0003224177186822591354310251241344 GT 1 -340498503742050.2140474457638833432477961964650966 0.1851281991752050166756735659536113 0.0545094498523019709960284135807509 1.0560513854891519135208341162225941 GT 1 -451723613065190.8958112969458051283272533665514289 3.4774505031862464378213494032428923 0.0076024954583144604247638737217993 1.0076315417366918034099559342066783 GT 1 -2933619318452267730249903481565635906995672.9346221012381616722703237691315663 1.6023591556112797880771459433917593 0.0389839581630542726980857295047494 1.0397641772927444969172566452833458 GT 1 -60764486808.7374897550268144479190197624857552 0.7007155511919491545885323364538393 0.0688881187543446225518027219423595 1.0713758357290974061212436217198898 GT 1 -8850305949188915246684673.6682982854722244430495722742260304 0.1155385064518647825057836141916663 0.0007246585071385934706843577132175 1.0007249211990301870112002503980111 GT 1 -1870888957195784.9949678737785070193451152777307946 0.4217657008569006419547469321314905 0.0058549148493266711782759619040812 1.0058721220606507575981273253865404 GT 1 -171331808949466332184559378382830725898.4004287118875314537949666046518731 0.6684067384441536732901881518134976 0.0526385559048013356537794210194017 1.0540745858635735060839892972356669 GT 1 -111715213696135937142758338419635559154818.5953242065786739442663523287580753 1.1076699220963818804268227797191001 0.0722744111687225831180641236684265 1.0750192916147357386843293440727097 GT 1 -252843649048688176717701780136214711388.0186253393236414639724204526856213 0.4561646805168162396437579685810332 0.0968669951811516951558917444460178 1.1018854442533834868924194990307254 GT 1 -3413504752.8604881854977654893024617303556539 1.0223600105537543294461006807590250 0.0365313316986677431102247101500475 1.0372153102850701210473717185911038 GT 1 -1527272.0509025288109379397925298339068044 0.0844231630948770878128276037351397 0.0712062875765398299121261269818845 1.0738686181912869428708292066131595 GT 1 -7.9849869169424738506595530167498343 1.6023700691895934629174589876283964 0.0400062911047782803724516565869760 1.0408285477758717042922743392002160 GT 1 -508212171283431738899264745213227585886491.2059945151800550438114527675837535 0.2358344362397298609702759247827416 0.0766713894417133392719129112754392 1.0797700834007669125765009888630964 GT 1 -404144884452074137020081123012311401730.5535409503417249179192371835368483 0.3199384484556722068713501005057637 0.0800536270229763911268665579733002 1.0834399008803588999357150736984837 GT 1 -4506768232395223093171995234.2526810030286740935269690554116236 1.1623492349453160156587696929308969 0.0506698093121691687896741629122633 1.0519986054948243624145469221445464 GT 1 -1640104603093347072772522868.5733102153858522860623025333906920 0.0813913044258625403502915704492206 0.0887864620286786920545840894948672 1.0929780096600146935172523659512560 GT 1 -30099370363176518905221200436284473.0703745261699692299544641674016901 4.6531656240107785360174793794819168 0.0387478824061323397099462632776975 1.0395185552061999116123111679947652 LT 1 -85764238576201787916517146371076178.8156808430867671731772183965534261 3.2206797359034253262093002918184944 0.0955429797783203480430790595104229 1.1004204929964315033768847177851957 LT 1 -60003963611832271736.0635769664106150058696037694059798 0.3013163051526151877285833826469951 0.0769832493895653884050529797638224 1.0801078966369865706869708062494926 GT 1 -11474017706429408019542200534950377085635753.5447560529435731457195322022650065 1.5292955285421893300752108060451060 0.0415570683988661662834484042255758 1.0424452575479133621975631178923262 GT 1 -14565755031941047993980075392.3074101147552006066741612755281460 1.0045060059687956267352513737662526 0.0318301543994279591840679806269565 1.0323477467657541228994862922100925 GT 1 -291375.6562028737151926236478508855413691 0.1441924875265429254576929297187939 0.0909013722610083597879108519491453 1.0953016893274782563627552795814731 GT 1 -79934923576270180945758909955066.3531293406359178998104303982396329 0.4120911168821987692426134300585802 0.0454965916924938616329087570828489 1.0465640650448093430065153154526714 GT 1 -201820120854905562777.4599658123589628890606669204100041 0.2514532889545417374063012421061277 0.0373601145947896728352487931623331 1.0380758878944435245896199525413796 GT 1 -2848800909547294560571047571684263662714702.4914213206687161532573521192874408 0.7437127508906327952514148931641106 0.0756682651269014222936440520625732 1.0786842513474332300247864081230889 GT 1 -97530678494930120157544286879254388960283.6926981255640932252647750631979950 0.2081878783225384232651515332653948 0.0311754430177320913481874614127464 1.0316717392297946010121760019169135 GT 1 -729014.0735682510488519312909447050109188 2.4023253308643514717645778733507391 0.0815839732276503481500629204262686 1.0851048028152326748116450367990011 GT 1 -4102544986151.7096512691950419158100284587578490 0.1497787381937989202985041519922895 0.0989176817346779279214871998677745 1.1041586623226115460035169290512313 GT 1 -4747533764704765473909396514772492170748.0895199988828421293845260463818348 1.7215345219208246405312690506166037 0.0530909276600213075044409965736572 1.0545522069423948642262072724165220 GT 1 -40344202727866783002785307680263701128.9685503790818996491360179443532049 1.1411511252770990366132487579316778 0.0983274158730568642136746631545121 1.1035038135886752068489501799666249 GT 1 -8536087616606374307.3925326580923889700121739447750087 0.3651801962581509954280384313369605 0.0647660672304936309980807670490528 1.0669585855117105484670028807273822 GT 1 -356943401155844.9219935312430225090992927059385105 0.0886556913389738155656202667248363 0.0116585767555837822800852695957437 1.0117270708444174198890922273580748 GT 1 -37717029665095092545778034.5869035666183960292981161319707049 0.3293768622497742244099785827535092 0.0752462512139512009078253770793971 1.0782277944404843758899322093778633 GT 1 -86282122996135613298190062527901226942.5857065934995061718607376910844766 2.2415902698964936823747343558048925 0.0116617282477889592966167256252858 1.0117302595170315583816554635674811 GT 1 -2560427726878348748895.7916325506071904284782888502114892 1.1752368961573908510640171473504006 0.0349765873340811106374065342703216 1.0356029161074968009143090820201222 GT 1 -15977651097820394096463016307.4407755554742720624946249329804528 0.4049917287407181240021399742531894 0.0021247505463576790875820564284901 1.0021270110313452045936100819512979 GT 1 -338784503090022943.8774106639573286892947770605151796 0.5383491624052639157915524699660901 0.0670212763664474484235774712965006 1.0693728826460975566486955374063500 GT 1 -22130033373937976207077347860346165539.7966838301977824043862145141768031 0.9185330916632700288316204957003301 0.0951369487159036491468344941705157 1.0999716712808853689255746972506178 GT 1 -1818251168073762990856132.7992987316939640160687219213430301 2.4661775805450304617146584375596742 0.0450537615554507328487128790496467 1.0461002349084812935712394295462939 GT 1 -3827553347458051536469058736.6011487186957568200905433395832050 1.5475014521694714739299082942859398 0.0560703405751618469335666555458955 1.0577036289340378150328365720443999 GT 1 -165947587.4573594939112786403889111228269577 1.7384276554542238522187516919787704 0.0357727842454109172101473915978192 1.0364283111544681848385905101169680 GT 1 -106373367663928344490002124962067.3576544184290898357857137668011566 1.5432591058906940711842739039329703 0.0446341866720001169764109556820802 1.0456609612413250713626384626417023 GT 1 -11742924083336430908.1427637276376290205212285893654701 0.0848307226918061712542176847630068 0.0095539047536825598253468589402510 1.0095998360848555850869961421566258 GT 1 -17099940750726695.5138152280912496925374468235624021 0.3695297548540427607884913173760203 0.0642373177347986322211082212282799 1.0663933792408683101416929503213463 GT 1 -96866065393453946.9651627503671566177213819701762474 0.6781013585081426005958722302309319 0.0636130495640321594903567629455532 1.0657264793488944071140900522157453 GT 1 -2680503561651.2265503995763320169099355337313425 0.2345136644891265030010006058277088 0.0805082828840374898578180736640390 1.0839342430088259252122032779344518 GT 1 -2065662818.6213723644622406768662310319474889 0.2605404092495772412517034553225693 0.0693442003002997230917074927532764 1.0718657803765916461664360730096807 GT 1 -1728700035590430720.1163110418838817878333293844187820 0.6209262634639450098201982007279617 0.0888919346569648419668830298248291 1.0930937659877804343833148744014417 GT 1 -5193529463024028156656.4951278803722048967543283943580126 0.2913715289124686676427354330730746 0.0776717167825406476670863681900661 1.0808540632478885897331223032373199 GT 1 -364548385874844819358991854474213753887.4365859511667643936418070524121229 1.5055171521689134827645500103227639 0.0921073224877416060188948158179418 1.0966291039390117396415361323086132 GT 1 -447135344230362209320827983582487831562548.7493343986373375861436743280467627 2.6024277192208697671638548446745248 0.0664887314743827240337769699944303 1.0688022448084956387856037812430135 GT 1 -1261615309260466246980701192231591.8266687830635994925630498553169645 1.5541527676991307614751340186587576 0.0153409546229326129054918650083138 1.0154598445580012251228411392439663 GT 1 -63807171.4903418049263832125150530582621729 2.2067165313054160354471431574262816 0.0476519522822261209677209752239774 1.0488247146626308462512449166007929 GT 1 -124146208617445246268435472.5626533573551319351768738509778183 1.0277222317554049116709945516137203 0.0881008863492909383934566809746010 1.0922259160237889532674332739467881 GT 1 -1707139132.2836680996131014414437971696295293 0.1533494941614390255039792484865579 0.0061326690193326395815446404944264 1.0061515510718173410236244473567170 GT 1 -236169920386209502048235636834038096512.0123706131894817755286205151201997 0.1194819698987215392552603862895686 0.0486597174073336076153966612118080 1.0498834648826116302102466912414167 GT 1 -344464374113.7604142901589315823918500448306240 0.1020989681391265388908365298590694 0.0536464402760799574031007865702039 1.0551390379742786169273785325777892 GT 1 -213575380432296713326379.0762405121860208757561030859139463 0.2011024747836047741616295048657176 0.0146196293826374047620927631378963 1.0147275492885020575120692080164520 GT 1 -1117296341436395520937127713630398839.9461650648609446318164717225816354 0.2256519677292929989358873195380191 0.0063987035840527618448275456605623 1.0064192630373214060427873603823364 GT 1 -27.3190897248591266017038303154652132 0.8261540414068057736234620679087178 0.0613384599117405282307486919755302 1.0633003119409289096034370191426710 GT 1 -88668.5563005555984937601934294234092442 2.1358508349390339518880712662714187 0.0328142277271716113256693421090678 1.0333646900122190988182502539968719 GT 1 -283850649154821007212841984039.7366349841949896348236225320947670 6.3336911489529046836146744919594135 0.0839003108949499068684903727825372 1.0876300893289499154507994873532340 LT 1 -57473986.4180392686279958446515420181215515 1.7311497581066738438031846630114761 0.0928565169555155697326021429100044 1.0974546461806532577444049306611653 GT 1 -25473101433280696279491137307867092.3263569069514281413311058942971467 3.5118852559172194797482250814559957 0.0169987464254798678535249340073346 1.0171448835819483026714549761741198 GT 1 -1258.3712392612801857418275364063778755 0.5803439638894719646434590002372882 0.0359959533185860435586151809179414 1.0366597865781055498441021479192013 GT 1 -18689761268418193495.0565855981197618934172749444367107 3.4327871703262551425324297859013981 0.0256846442590465372656397862449420 1.0260202538816991349669440294232363 GT 1 -15.3607312151172977868449438611769498 0.2415597758046149833913671024218928 0.0312704527639504882894997530672771 1.0317698110679824470781723666303980 GT 1 -46637465.7785494861606168764470524499622584 0.1662763341962844405210413424107162 0.0593111368530076299478992072735512 1.0611428389740752386229345963591311 GT 1 -347916114220.0231975293488619379006582038821086 0.0798833196712035062764036282436697 0.0847681916639262831942999143952252 1.0885779033485972280019259864003355 GT 1 -40523353530200035665910976667159149425447.9740516022377589378248346733766767 0.4974917911609752403990674373166495 0.0619458649343833529737071382613785 1.0639476183516902133612105841373952 GT 1 -1596247690884472434.0550787936396984002679295889499688 0.2526578772517530094669891240390769 0.0829779147286628922202192495448733 1.0866237227503312974947233045777638 GT 1 -5.0209509264786873421500847253576358 6.2840407399056247671689189709963037 0.0355268190097347665130850227624179 1.0361732531502030260662561278704184 LT 1 -3706813808357.1797383051779144467191299875257919 0.1383898263338313534990478645758885 0.0396040763963156838183545188047547 1.0404096591216765423638881827646504 GT 1 -62610328203157915512163257747.6741441964408430303217951048445471 0.0445650184108743399009616353424100 0.0095208699195649879075251493690614 1.0095664831508848591394007903800170 GT 1 -31591813645028773756242578028096279940310.3693831358857181019635446560496110 0.4122229836875468289774181701840156 0.0436509229981140315251218207618542 1.0446322892719174408716510266886573 GT 1 -31709476296267603026539733691066.8386603103215139014012032286599901 0.2239237955599406227358445532719643 0.0227852609322442180384365930140658 1.0230488567530721967792093277141955 GT 1 -377038976664099152244633189059445095075.8135458060799051846578717309044392 1.0163192791041217491696061480245257 0.0521226535089438887873298956236586 1.0535301664361510335262929603896248 GT 1 -152349066056552.1236293419246126991088875616506037 1.6788380965250771888460511085684399 0.0522644010684336273747458280089143 1.0536797197087177940026430589523352 GT 1 -8.9389200923593559839361708914820689 1.6320725014997158275661056876008380 0.0912284999801313140789150632208448 1.0956615915203343650954269609319150 GT 1 -41365049.0301520729631420887302809397555715 0.0089363792191800793599963857570434 0.0527755843834259991302876145236104 1.0542192385623796150907224613801489 GT 1 -8246144409503001806036504633821748545959702.3841595045076712045341637064722009 2.6474181422882457773942670503078589 0.0384519249101074960251277760780603 1.0392107151097736956945483375904589 GT 1 -4134450501331840968218648184.1825489939641210189137827033611009 0.4630233760339896963329256087217824 0.0680942194020753016222612163975411 1.0705235631859171194213360078726079 GT 1 -42249501723678563927920509457563041.8957171357737282315667180813602424 1.0916443736990312751670554648078885 0.0288081049305272802277414025149430 1.0292312039861561225049584290464100 GT 1 -94707721369.1927997297591834921290667185030403 1.6862530849633735559823733814747146 0.0361054938552528328441942700795551 1.0367734238196752261245605336948979 GT 1 -1283600066135457938809620078778736220638.2180463478035702337404496080692459 1.5504357026065264728982409101160703 0.0585924561310732687080419052754298 1.0603791365896642357791598197116780 GT 1 -313981360820.6724754032818729116764442818579513 0.4361699039704152792494373889576373 0.0159933521376746873398388664988387 1.0161226259950573321544294456876649 GT 1 -488795499611085196004.1089710808519957634276661238942937 0.1053476022347933243506616984214247 0.0981637634463618301066624160481909 1.1033223313300162820063988316032383 GT 1 -207.3712847782472314359168823019928089 0.6583890625732266748989923528724236 0.0106834144244521460300442151214932 1.0107408918328639872706957584463014 GT 1 -272421364403885471978336350653389889827.7877515187853394506822063520899337 0.0640168859975450456415137571488392 0.0652432711130949069664283695339122 1.0674689665555788973862524175767902 GT 1 -48733200228631904168071873535029521.2389625268249508837615660035859795 1.4739372018960434599225235601527359 0.0029994596269937659479336554460685 1.0030039670214423594365200381180709 GT 1 -9552655815661461.2492934031012262576803748549387790 0.1567655487062253632792390637503903 0.0642568475562156113889111199918831 1.0664142499440801170275645780891952 GT 1 -20551236633054848684414.1521023800520419599701934812739815 0.5033553122859679120334117389068386 0.0115243235886393033521386125063060 1.0115912432383386774161962024358254 GT 1 -2050427180095152219538980701030016342374.0602606567782265764587820616957158 0.3984713916203741914632832542547497 0.0378264050998166088409392931073153 1.0385603925167558712633815934887320 GT 1 -4491218446220348416919522952479715160826.8428325287501174140925486002155084 0.0047329360790217600907781629238725 0.0441855981393123958221288450539018 1.0451915250914940639210238442745332 GT 1 -7589748663522024005187807.1493080524963901889460097999301439 1.8636668591649740318824250289339173 0.0130773568060240653399226865071892 1.0131636183101843370810729524651449 GT 1 -14058547142793348278937464893943730.9414570625031462391999800390157333 0.4424690252606832132120530627399839 0.0648879529427229792828977475818551 1.0670889204483656134763327531960573 GT 1 -2124629802245678280704646807003027903.9879005114691050413696139404348833 1.4011333789000638283454774942221085 0.0137126253452381930072654052454866 1.0138075118191532268852929396217872 GT 1 -21113276394464506769291449843053217024746.3973063925913441951812925574165343 1.5054797936159167332932545336472260 0.0695673946853947642825092202777661 1.0721056339865155144360654708312132 GT 1 -23752606413877.9891606902487804424188239206771985 1.5872475473326100196626306632512529 0.0494729404514640208196056832227968 1.0507386487071329427915119372913284 GT 1 -23076.7700560310647093124839099437075770 0.9648501074558977821692029071875645 0.0646180295941329534566621829548863 1.0668003086186097986910098461246387 GT 1 -5776424641493549507.8756739814941850908366739392152087 1.8271552374120717348330360870628377 0.0468844989637876739440253718000091 1.0480191853619639369546581957387770 GT 1 -2359835584.0448055855516084985785317761794250 0.0847556982424424139821324237728813 0.0797063126320303476792590959931161 1.0830624344806710930695470410272006 GT 1 -27492637087856737373495500467296638386771.5827431853165435893549855887827126 1.8709146315835680918622104101809802 0.0483219938514710253122878548812234 1.0495285302386240791626381505252180 GT 1 -690372672214512317276391510454659457186.7379645577019913477424813098864624 0.8180126863142150732777192272223899 0.0855994109444902613511276066927361 1.0894865223028047387461278970559061 GT 1 -85587348951311499.2447588076121221981815051222040784 1.4037023866333841579825759216467633 0.0530410391274633637141252306626689 1.0544995226669389248560835700343534 GT 1 -3098662742007078620173108.2222141483443123928624375317879306 1.3515503919222929622234597722403932 0.0584898390148645715825089048557026 1.0602701386063261946429652694854864 GT 1 -390055244160151197537680365085393379148.6717787265107432814853531271294578 0.0361727116575031832971542865661954 0.0401178329738113123119374403287949 1.0409447447348079168841078942895554 GT 1 -2.2189843993053707686229994992343046 0.4087913250622432012580051730367626 0.0634224063214926262214747520074843 1.0655229055612356993687388123352074 GT 1 -15965067845148488845266417318148449551.2864540982816813695602050963349985 0.9543385144063526983572171703906488 0.0646557434178833747800959371790706 1.0668406286004558359152650739029958 GT 1 -3100521273335760621054051873.9081984305144822402816366110022741 0.1228043355294632248533978176452368 0.0536762900281976753143202373367530 1.0551705803323954780994694621496356 GT 1 -5147692666184349121419177066557.1463327066070885379539190357282580 0.1957196312348318635526710520493416 0.0882135698625725115420873060557639 1.0923494938125242984548500391310395 GT 1 -154986070542678221086668269954.8469511640052430246456308613808330 0.5115463441708287374001152329689363 0.0927830136112142041737271803129344 1.0973736222104115155953275993525355 GT 1 -16533416228532203998414575.5366413098300633660250462819861806 0.2097024240544073580308430771142674 0.0803984823764563624614853482591001 1.0838148357861386622694889919975056 GT 1 -126744227299.2180455350739334116248900023190673 3.1698133510239020550850535966374270 0.0672615632439197535643551568798812 1.0696304638957127686766670661598568 LT 1 -8230674511988.9433796976949868514274786608475257 2.1344195033530612047183655251282605 0.0073112289352443044870572835307836 1.0073380869596984025344476982902739 GT 1 -1175637592513758.5353743693847703928887683947545993 1.1946781329067595232141158367085174 0.0023025866410542211108132258594557 1.0023052416700799139557132453924253 GT 1 -162143.3843470063579915629511059820169976 0.3248928279989882277536276539261114 0.0683474392266601403396545262512981 1.0707953226693974557829684021368495 GT 1 -819556491899566437479862.4358570253546794377883799307888563 0.5031930939365713887039832627233808 0.0104531965688956852549751296974428 1.0105082149761652910315051652528400 GT 1 -3806.8009308847123099626725909544565282 0.3639220433123681601334836270332556 0.0956486799395499952716652296298647 1.1005373657009585908921345679914917 GT 1 -30550397.9552328701798698862676118357917866 0.5064151480731156351098459435944889 0.0362016892284027815184854460737324 1.0368732274526873332966826686840502 GT 1 -658943834620439459357978345068509061442141.5226107773429903236177089247247602 0.9142500656900031815989662626340197 0.0174415695238978248901979501395501 1.0175954657845679413714113782485827 GT 1 -103628692576290172388261361123698750.7055908156115677121430302325673289 0.6958018723657406948591157461999051 0.0376498953212538443417338438265907 1.0383769603469194515286738396936257 GT 1 -602161119548733153614669579649717682.5127769315528562320107862649429754 0.3758602927834489931260797174773288 0.0808731944068914529934152606337494 1.0843311839980939394316668270714522 GT 1 -1.4168698651166429943658741767130878 0.3883602138292775699933375697209388 0.0502288221090539214152966524632639 1.0515341887782260448583947944751499 GT 1 -19308568183437955496244194127861807218437701.8563192538450236940487130118651047 1.2826024571527936183195474174052208 0.0975098093238631432008725382702413 1.1025974578910817639738694408828607 GT 1 -384828298986882283579888877250961972.2369325885327631489744935235390084 0.5326871574815120560243869591819100 0.0323847520968004619031330662885985 1.0329207418925454253993370165586741 GT 1 -3464199695.6694131563267264162293189702009544 0.2029178595096768411478516059058452 0.0040665721550438444985429416271027 1.0040748631444948438573635270184826 GT 1 -78011162798194017817696.4130056968787965649972964840298946 0.1903345078423285419263339361685896 0.0822389751498863233801997558691404 1.0858182437652108891076376850853835 GT 1 -34165595662212157313958636.4462138383402458310331688376230346 1.9818297305323897232432286731783695 0.0912797756108754148719549835623241 1.0957180161302173932711120911994362 GT 1 -55256705699990300763597.3268272762641689494403254680538802 1.8212501995114651095752286318819628 0.0727054251672231309611816013419642 1.0754839916915322333029320740852773 GT 1 -2044879.2603095778269494433592702641085825 0.0174111287745980539939451489344636 0.0377283529235587634750704699886376 1.0384584907590919512853220452021865 GT 1 -4770887470880545054464285463.1635000729828756927604113027971971 0.4561402403132745174905499073136280 0.0047707663458304152183134454121766 1.0047821827761471185077482405101878 GT 1 -36591493767964674.3148688827310017014737110117975239 1.8248526927528924167268368662775636 0.0076164916824337535916149835988656 1.0076456452816459768407637422131115 GT 1 -600235898250367116724106321031772027742179.6354878693099604500321802716307529 1.4828333641642304158653299507661505 0.0616622342439471755546855893920362 1.0636453033689063260779818287757478 GT 1 -27550641101669385.9024378256732495568860588876533794 1.3831387655581110713107302087878286 0.0639435277548378781826126466606398 1.0660794707292844819019530701434554 GT 1 -5463166185993144688082668414712.4023551531967987066219628510230396 3.2658996794652767957564072758082084 0.0938330938153228395610276751657006 1.0985317667442653132650700547239027 LT 1 -351572219013782087189866131471021900432.6327271478200872843634136947202371 3.6285163048126546424851405019668467 0.0271187544581648891173253700007448 1.0278711935567213693758999235338415 LT 2 -2420382137796381.5117308642683685544677483316475080 0.3405964632208554476133604417304659 0.0475814439936633857387729710760149 1.0487506811422435345856234817114550 GT 1 -6352158.9879926147203760506707707520977770 0.6407394320601670322842238353855915 0.0260888437577154723024148120150776 1.0264351948569730280530588668649472 GT 1 -222693452522248765.0565463161799683176702309479887663 1.3730428404978947046589184993759439 0.0861297448182867885849466498226653 1.0900666703594701683234285975507937 GT 1 -6733338815215404413333572741.4414523787781288991419079681678646 0.3335958410686105834011019123279600 0.0155871460580439621784516388695098 1.0157099029093284030747671585906396 GT 1 -265680947743998141.6670699388808411279144561101283389 1.7722964344469810963483449573507530 0.0707384523590035801409151157299182 1.0733650430420672502019179608298146 GT 1 -1150292643329763.3203365920078276495202133476860037 0.9802761268605364421269755696633112 0.0280131336180101873343768947662449 1.0284129865656706091588950067925889 GT 1 -595078531544110410695583842.1018496061646322767872479854492817 1.1450410585361781411578552519429937 0.0797638513025109320459707394034192 1.0831249585097542949960563867190354 GT 1 -346.3605353526417383517019090916573645 0.3437539723876493940526922460602175 0.0689386572496032763734006229903150 1.0714301147774907784363865461211934 GT 1 -18219354919540267943164.3994746290553464789713776318520205 0.9834008970660681047139823194486978 0.0696852029012633641229235969281634 1.0722322586061422461286565514957847 GT 1 -159224426630565043.2852457644136134452810818223911683 0.5480635634157268150656866374346076 0.0935107133627025736464242287751950 1.0981760672384286322934122778103619 GT 1 -2030464350092326476962181663558975055161516.5365371458294954012013926636122036 0.4034422299019867750636905158496395 0.0241666920754694501587658759701697 1.0244634982164304740481900268664525 GT 1 -50858314095649205.7675852451672434137873644577878643 1.5528302066832203624070128848707964 0.0670144504965067260579455760506517 1.0693655664610676287081226903282579 GT 1 -108189711624322642613903421041603522063875.7354581590931689024122801310935311 0.7104324419465818205887650179858664 0.0764643981602415908610790790068719 1.0795459290953784566227231506366123 GT 1 -90864471995.7995408053519244280920239205099151 0.3852712334243515928528307199212531 0.0071540552482043381426149638675842 1.0071797682094733550537671760452763 GT 1 -33645660796.9023458407433604130631880645647829 1.1395942675057915987806375451942368 0.0606808392644237343046613453997047 1.0625999632377628859373041403652029 GT 1 -193050954136401927394830892475.6135400894738755510589672657982439 0.4637362710084013293654086595812785 0.0667481574414630303026880332904828 1.0690801868432509037725111172948684 GT 1 -143641.2900810046729220272277073642101679 0.2008617170385310638832577613962195 0.0896942093005203339945275108401291 1.0939747021822401735451230143389754 GT 1 -198865544513683251036.0507333891900365926556376062989805 4.5675185232741022661635780137126682 0.0811547324048500917011186778318994 1.0846375412102274608276694593683196 LT 1 -15767937977055562433.9260053135619572983670121386188679 0.9455120055836380436009000831792499 0.0741735494548161882624895519863881 1.0770684803187120927262467859281559 GT 1 -1143922182627227743107388066610299032906974.4026532462972355426600336966228223 0.5298139556754095003209661631256107 0.0101482560061014617627977331215005 1.0102001006091992571512154359151972 GT 1 -626905340984389349177277559.5961215002558761784761124788597686 0.8436028639804055338157655557270555 0.0699831394291371912804673206602578 1.0725525633530864364530215217921091 GT 1 -47545941864659630223216873091.1322434036581725303990727388947996 1.3273306624233982542202027480409216 0.0341277316385450755678898147188194 1.0347236808815226061915024553868742 GT 1 -838878209015569227343295185075362890978269.1579417759714456126465102301429429 1.0634566754850254004772518231772459 0.0084256917631839000540561387645726 1.0084613885589180325149599595067189 GT 1 -694644629604668486.3328849980626618524344618020456591 1.2547668095570576500603084831872055 0.0503457380951069032838514611706094 1.0516572954648598790291216495701235 GT 1 -5452358155195414093.5295899615586524601099016685894535 2.8053467747027105782839332180565049 0.0406093511390635325629363517819914 1.0414569368233208439822750851745743 GT 1 -327.8907076453493811773593266565403395 0.5288469025438551248277360832660634 0.0206972534356203236032391985256207 1.0209144436393072294495687765000383 GT 1 -60236237836.5329497920020428357305466724296400 0.2559765233136631327336784813760617 0.0268407461932796635164887579058198 1.0272075372119902562976924693328739 GT 1 -210749594315609956799.3923433654083649374951129856567262 0.3070917592295755679485399365095803 0.0704288846166450427029878682805412 1.0730319654591536415798153626021980 GT 1 -160832002604355402992006.0387311486040706826177555165239328 0.3386295111293044875725798832578202 0.0039270579141565600066507963960507 1.0039347890531451805532150099004318 GT 1 -5761541658374387043005188596585810463284147.2001266335481027929221152660295465 0.3675366589993561993197895613175698 0.0086579998663411137136959658608232 1.0086956980991032644934551506975593 GT 1 -90349916832936477819232.7533220368379315231734233701087012 0.7189240195742434057994742862937817 0.0711211996488219050433423895954368 1.0737770111645453559701108592123502 GT 1 -68520205803202.3737052631646913044615482793522781 0.9237011607074536243427426264654721 0.0218874701733321439647268548103480 1.0221305543938866769026862224345121 GT 1 -225054901106996852740488921844874707863201.9045633046530482399232208832366527 0.9004044503773084552019752685209018 0.0849014225292325718657155916153200 1.0887234845688782483849820681190124 GT 1 -245186927288081.3190550534735418138198001445714862 1.1963134403156179069625818510192582 0.0073141293465954758747012035911039 1.0073410087370700157934618022166941 GT 1 -562788415166592831399930691790.3719300016450835139309152138721215 0.1797755531953547909676834990453066 0.0492497857415491555071899352276055 1.0505039068164956476377031528387923 GT 1 -66016538814874619075116771225834374421.1868762440819165977175033304390690 0.5906919316727820913902220389459897 0.0957916949609986105030400300227010 1.1006955192058383078038921161808187 GT 1 -79285434532730398.4139938771188973454878455277481846 1.1695374508207799350348010381908911 0.0555175303579590809956728369286904 1.0571181526765144506225450213629240 GT 1 -135466537508547251278387688497.6429626778138577202405716548674676 0.9583847318130231735561278620048720 0.0319665089822353617500284225092240 1.0324885941452147620357967664380530 GT 1 -1702077948894832772579747784119027602.6702431318110624916051501214573374 0.2424602341367239881338315339345046 0.0664134853669363820811627626955044 1.0687216425945507629714826316653127 GT 1 -35760697177035350.2773382774441044848740891969738054 4.8878755468693074243329910499874971 0.0179212288352924125784080034532261 1.0180837588093812998801966803485907 LT 1 -3047409947716168924774040.6157837895527663894612480439151061 1.9160074565699271150811330917306492 0.0207370015441313145283316820324012 1.0209550326352268297570395658878553 GT 1 -134271429240678387957372210625.0036313181370935800394068861309581 1.2859075566062983610501012128664872 0.0884841837075348726126666416614096 1.0926463330748893805468020503557731 GT 1 -41209550.1008578475682936490285157964586759 0.5793943492092937467952844146068699 0.0751292100187589689441915220063937 1.0781012377335470288453855999001063 GT 1 -1603668566968771103121410591715134159.9437358164572383945361141802499058 0.6842043185048889151066275596178165 0.0711579343299070596890331056963754 1.0738165592815545794089409984663121 GT 1 -18739467.4835677566989643914296247026873105 0.4513977864006159404575032044762960 0.0624459437545082521442945756313495 1.0644808628046535991988374763480792 GT 1 -452376583004466959628079.5091215754896278319026450179953883 0.3267384841178817527303834263522501 0.0485012745851567483564412159233180 1.0497169318003316477996768906931155 GT 1 -95630312.4335348073006199976674409973629129 0.6842864602809068898533910790573584 0.0428750566530597546172057723735760 1.0438213387397195200709923519971060 GT 1 -134648537577803947115510937672055632.6554553358659678719002248581929503 0.1090734641928691578444205682966751 0.0806961084292817476073248894642634 1.0841385349323112685057895365673054 GT 1 -11749.2661678806659787819708282587789262 0.1085269017714205076886609740233925 0.0970463885496598454894745995793129 1.1020840984790248668268148827425916 GT 1 -4798791205.2359317101838320399138349493634641 0.7803284150061236633731780559161144 0.0269076945858138054834007514762713 1.0272763344774242761778180525459601 GT 1 -1346103397639.9496353831855576935399465745884713 1.5423789640925030631726957491187096 0.0473620719056066687394479621784590 1.0485203760664022765976897444415789 GT 1 -4429967.1827244972851526232301958667641959 1.0540128285978606912681865442879472 0.0502913491171531234874400347743799 1.0516000247056990424598283360441005 GT 1 -36882275854909414033.0602654849373489562320796608418311 0.5961282309417492003684169793831750 0.0810819508371297116011250954773581 1.0845583345277403774161113377244908 GT 1 -44108746567756271574860.5759547902629480972071841107239071 3.5403877310081354401558789289507220 0.0838769039751256783772673575706678 1.0876045390301374901282838913465955 LT 1 -3964106621769478251125206205280956699136292.6137974318068306255169509351391485 3.4874530709938981254758296883296685 0.0116874168637419658767955795704661 1.0117562515792016903763941119296259 GT 1 -288.0890216190314190808687791047455733 1.9587421740144447260832073852009219 0.0671567144130557763326631961211528 1.0695180605314230626536151345270370 GT 1 -232493858453708008278909701870336369234.0896872782557389137551925775198086 0.6337048565928000599613470795205165 0.0360132652146650002709987799311220 1.0366777450623948281215370308387490 GT 1 -129841473969338508163483644388565670470.8072523403530215405565218792250738 3.4011354348978365914844755679097348 0.0974105704255650205716179829465122 1.1024875027430818867158273085388606 LT 1 -771066119789.8273398302850886381500136230761994 2.3069189251625716260773272213415522 0.0879036747903057408858158878618083 1.0920096747377066986215605072810382 GT 1 -6424063986784644115118794687906275.8826963786287691775199872970879230 0.4199500581797878627436147376859163 0.0398441651951797605416596051591835 1.0406596797723188340048006309341959 GT 1 -31923218117600405578303378952123141045.9333833142454081205790954262712146 0.2574853682011072284118302503102248 0.0170333708603336193039355566732021 1.0171801073871404092560411776065058 GT 1 -31328897069301.1724115627190509008248177570579512 0.1798219603822157505107007045198490 0.0910593141123897044957936803234018 1.0954754389824993304092287263224085 GT 1 -13221264845209685685784797.4288297123034547050328219307234551 0.7984886818681620170171106682885132 0.0039040226075697099882502270281841 1.0039116631963338923630325499540797 GT 1 -39939545371927075068052759310015.1453441690534334779064601126237502 0.2981299275758551079088416458559508 0.0143663081663053868548716734452354 1.0144705027026326430879368403936145 GT 1 -541129485996773247269447865553571445737.2245763192891031067379121350409341 0.8031310497597913310149323048064914 0.0164413053094954010030131520143933 1.0165779635331531290555365727899039 GT 1 -17362344611318752794373.0139829338458193716442095404278789 0.6871315073271478523897466470563611 0.0628494680193814444266052419582571 1.0649113565193854107616015996544035 GT 1 -160619459046514809.8918297747327730156828394455045509 1.2693111140813404621762719692259991 0.0091504589955598002825263901127094 1.0091925816031747261259763787630758 GT 1 -1381054323050162850497362310272346.4824646877005882444815490012209041 3.8169705830172230205999632896834045 0.0975929407036472180601752336263307 1.1026895754671311787027608375329315 LT 1 -15968484140032.9688577204291059844253534571984392 2.2569426787591225483790065412202192 0.0980271784757164392680964041217525 1.1084930070673828807041402470396106 GT 2 -2783652615610846590357.2663221782595794924894048167626373 0.4875541153923593202709645357121938 0.0000489339282623173437410307660658 1.0000489351255660442769531426464872 GT 1 -3828017204598810175582665862618753313.0049496450328584966997754326330127 1.1686651739870406764278309620341452 0.0656129374567264489148531016134543 1.0678645127411063629316187631934482 GT 1 -22977.4228317765274671617418502513049198 1.7605250875304827486632129406080362 0.0047123375798109167890368006340455 1.0047234756472083877136384728554419 GT 1 -5245910263191804571953.1154115434450208444874596836928530 1.5585830360798118026643874363254374 0.0242000039486735876338717547244658 1.0244976356470015856839804188165552 GT 1 -4650959527663530851502108615689115518223084.1271808716016987006789461694402113 0.5150176349195466875415991921641573 0.0811566521406756151325704109518082 1.0846396305041474205642549141636874 GT 1 -3043698265541910437297315217735589304530315.5107747441319754148758779622774094 5.4379068786426259543290905259271656 0.0113585865754886757166532086130055 1.0114235880049780662319337031951237 LT 1 -2334720069362976584.8505184654225765678100427726291381 0.7221885760889657153058917468728180 0.0456037971214541361805521029774811 1.0466763867493607677660265976197520 GT 1 -61382390713210146967693190271039213575.1928039036254336433854910243540879 0.3384265973254615944014338748766477 0.0529018678906978274168760459852563 1.0543525669732254911620182819616439 GT 1 -938744.1364199786042806484058368037326310 0.7315968753741525418512571254142979 0.0969317746975264431804771079837395 1.1019571743743935054287984233842051 GT 1 -8026669172.4939061017845137836742987835857597 0.7251131123762247248609998640537310 0.0292514306091022325044578529238034 1.0296877840867202757662701681546913 GT 1 -469553916127323858315727096.9026955276301474519574645226505074 0.5772172859369518902147271348828137 0.0356774270937872563990831524938131 1.0363294211467929487655223825998859 GT 1 -30187834.3304712786689762615873694530465598 4.8563733114782005589997820741128384 0.0308499610432525569363835190622750 1.0313358401130343804412689082088644 LT 1 -11853027913370398638843258732492.5065094292186067538652291017638143 0.0859834159572203400207235951073220 0.0464639721001055786649216856289053 1.0475780697578601366067116847516004 GT 1 -853398099230432346284421047291531259.6640701170220346086591476905033701 0.0188028021035887083732351173131801 0.0173405902535084102242395678121741 1.0174926992938395172475555353981586 GT 1 -50589707.7062222403883438029113570000625780 0.8473572552016262881684970124623515 0.0832567342441413299623111255265390 1.0869278178380379996337022478362929 GT 1 -7399187213316341448132268795.0812084650353582526738660734471146 0.3139632789911625190728736838480434 0.0036258147437841705664796642939045 1.0036324039423596895570088610441309 GT 1 -5020500939671604457284698184053872500.6785942227563319899091533758477190 1.2146770176262854032753736682512192 0.0784975912543971575896870856119934 1.0817498879357917002940510619771793 GT 1 -20016353709816301573.7332843237125687068942126510958455 0.0913131787365809590982601760953909 0.0539797608098591379993119284487796 1.0554913156663683453128010892478885 GT 1 -637726271463174489310.6779272455698066974233611472817737 2.5063343128398111966985149828710411 0.0082938736462189267884289250916096 1.0083284591810448638266103964641636 GT 1 -384.3723878897577464590623352615811726 2.5723084446148012801996306754470712 0.0701007400654286180186998933438846 1.0726790213531560174622270277211309 GT 1 -107.6893892423375539152057140369928869 2.7659450774558653432178308851360590 0.0202750341502089503448403818727651 1.0204833937983342697126911779162156 GT 1 -1151676204295993241.3339161154737933066025393869181097 0.8790865123018269731027119464207221 0.0750517546358853119571313746301427 1.0780174939927389312522236703025015 GT 1 -330568934103952284357341127403482920678489.1561439213148142638212396126864817 0.7464143638391597041175645680783159 0.0562867023948211001866125245924148 1.0579328691299138155478482398973859 GT 1 -14964473.9800833951723164304288132215990467 1.0411468730984672048540603284355571 0.0610385199756081957246311639354668 1.0629808229535541633162556817003020 GT 1 -18951905402763865465048099194293857616515.7411354575326734324363751313190140 0.8995037917211852551641172864099461 0.0566296445539830042920220701807693 1.0582963317272213302451397265229777 GT 1 -27195773.6741432130482035106649260938871939 0.7693532890306436399607497854462662 0.0331140692305161394865632883797807 1.0336747524626185054532769249613262 GT 1 -4522379099207000788919278304423906328874446.1914179723020950409505413557681591 0.8469954297901758014666145326205633 0.0095189169611351709276163777470043 1.0095645114218043013774484587475822 GT 1 -1147100112142632325464604997676.5255185000405249836582506590046709 0.8424018455759856606364990398664552 0.0896846251957676776595184159357825 1.0939641737923320036841309687458288 GT 1 -14545113872151175225335.9042284218884945895978274473647747 1.0181186664749154203204660225972425 0.0917698717250694551090827290824844 1.0962574872559545041813014308866033 GT 1 -8262564230562015735807.6041746821203988828209982936846026 0.2606443976561578487302543281186297 0.0139525441564760333456280888821787 1.0140507958789500820420486032763744 GT 1 -1210.3199664018881438962647146530417949 1.8028630451660417729077094831625608 0.0133577763548654849130580378577453 1.0134477939716386971601378005389708 GT 1 -116176987565114527655692712529675752.5173257558071568844886955224988573 0.6926131949411220016526885381278310 0.0473438225638114454858949063800739 1.0485012196099341563659661459747457 GT 1 -481411394813804798351248222705605024656419.4264159775358172652815291314017807 0.7190260735403151579059911083683769 0.0450517038075271502684615821134719 1.0460980800796294748459870420422410 GT 1 -6560472165806113.6043345229503378553329277573746123 0.1739549675942483654009458833382854 0.0653311465371970844309873162582256 1.0675629798450048925906211233604602 GT 1 -3191975865961953842717170225947907.6841913195183055261347341638902055 0.6365514088186845273227342018156573 0.0062254250847306386330563684286729 1.0062448838448789173706950779484995 GT 1 -7322896066393.3103105771125897509352161516291392 1.3803438035156794486120692605661727 0.0332900041980977478865968256443995 1.0338567294368657454877543594197679 GT 1 -50722579153712591266065688790.2792122428110182718251044569427704 1.7465861524331145376764821654945548 0.0402405595744334459262244447076355 1.0410726088114281930337187406374843 GT 1 -742441.4009497092819551387926753209925549 0.0873938935881043116245816728236897 0.0650160117001268925845496973590892 1.0672258746530512753871210872850916 GT 1 -472931198593417396333273901466225467033.3169352313549336750215840165939412 0.2000702537567074307072381442576781 0.0258298611767877672526906746888465 1.0261693100778219374944253288650581 GT 1 -3832816918570026185246129169922753771810246.0297195510264474269905822551897995 0.2860853673278520697842754638799177 0.0214206966136847140058651977988154 1.0216534495574697613706776052920283 GT 1 -1480.3694137923587424011429744200956428 1.0967040308266830087836200622105493 0.0473402154837154071296161772156212 1.0484974332772018715756382323263577 GT 1 -31073889411867550666246938688787955.8130384160107791149305777325857110 2.5183109788668668881754135468849961 0.0711218489225855689137994612309550 1.0737777101513134201275412040930688 GT 1 -451244573658777.9943188281679829677905740439006973 0.2414649968829325032769147976020946 0.0732073044883361467848877702356010 1.0760253678623288613645077563810071 GT 1 -112524433803897799280561105267562.9196737447243239607701692673287306 0.0241966675241620163631510156359587 0.0968793439020193306899798904613409 1.1018991175498146868037280395234228 GT 1 -159327418888266705527909419205641856148.3086088240939411888981529891283281 0.0608535028498074487049869991571465 0.0755635111705157575275967357705761 1.0785709283736231588501184662198311 GT 1 -6684452354107096710511641076243717956657024.6021073285466358483287658676261338 1.2507475302863810609928091315082132 0.0420847373566440079122209868873618 1.0429959572789951012710200785457238 GT 1 -13.4229538078266383000026090698329824 0.0646454789682765043695281345262713 0.0825872623737155477362810817520152 1.0861978124307314662776191953823410 GT 1 -2742560230833441263.7132270523747132559200895055887445 0.6209431255657032182905491281187703 0.0900016454691142736124011948598309 1.0943124876806940196947377479495064 GT 1 -82811916699.7033559175003287134777544954810069 1.0118282939459180911366603823519744 0.0713218230505208767224332543827105 1.0739930189693456064468152660126006 GT 1 -723350079117907630971266675504435963777.6212883635438751071515675705766952 1.0774302589330193684895084341753595 0.0078409144769619171196024621197679 1.0078718160841083315032720814539802 GT 1 -36201796014958805313120827093931440142530.7357203402910391140221794725784722 1.3783522223841916386222333663935911 0.0778647808781876962815983291480618 1.0810634076953198125090094269313926 GT 1 -23966324188047250705344400509949408.4848134893639649785504391085152096 2.8769188060002630899952119625995294 0.0061826891777117027901168549226399 1.0062018811466568293129543613630677 GT 1 -265600244792382746765166028.7629781245938786037616770761756059 0.6185735084842318521065180078654953 0.0578071675968498109491394259277991 1.0595453200438475315426353825529502 GT 1 -5636693367559943636510584364412081619.5960896946075644373734104065853424 1.3344151693099584006992017796863147 0.0626886039728870423003598058344343 1.0647397189475726931448755755860325 GT 1 -10492551670428513694507444703215945046170957.7887174454420194662273697267264716 0.7675268990405543260170962715863954 0.0257012004135182096938604235737309 1.0260372466295212801911178649601827 GT 1 -620310247728.3833184761244926304284084634607466 0.3323396456980914190294745945706280 0.0036470502249770256517572502355604 1.0036537169267822417483354581274960 GT 1 -16378475108722110308528665376.4549118404155137605043127628366909 0.4064442870691691587693376115910153 0.0962182853210627431276610258260174 1.1011674138107066908059595054805472 GT 1 -1704505741316207.6258965358351023066802724915862425 2.1638159134058187867190217913019145 0.0120646813001814280935902413838832 1.0121380502803381054166115172986976 GT 1 -165751122554381793199953620234646010.5790433184193371877004313481736721 3.7400614077798466195390884822023749 0.0226374698744719489131207457586804 1.0228976311552068105357621684720951 GT 1 -40866258498678513672152706880874.0963238329728538760162691891552593 1.3346710900137659066481817121353933 0.0891000151340344016439038139856586 1.0933221738457482665633123295183889 GT 1 -1025.1612745783377741116350211230208465 0.9580167634453986558148614198056521 0.0608424001939581927228544876797241 1.0627719759379745576445821148922220 GT 1 -306445478594150749710499890571202877.7045935942957208827687768538952074 1.2563063863314951119434304621161398 0.0669509087944577300595000632195697 1.0692974630071581006326356926159890 GT 1 -1362107657.8048113954269683920481740899358554 0.2425066057037028329525360149029505 0.0300400351765364619383822244891759 1.0305004817143504846130945455878197 GT 1 -92793369501717402905.1640160151424546459905495417355276 0.6222829438240557726149998672316820 0.0693997784092482310544859202069323 1.0719255014556149318963290345264599 GT 1 -49796465230557877708994351658.2057778294809714370638661772555782 0.0493162213364901459479535362060973 0.0744367112579700613575972045485463 1.0773527660089066912959820860682827 GT 1 -937472340497732802418574836812825052460.8703373161626065751288646070318235 0.3009306724072341541825043549482315 0.0834340531549061587659777942825172 1.0871212591954467652408403719900418 GT 1 -616598002333895181932400643252232.2060195608144669476324465382638740 1.3761874478348818852754288039986001 0.0539713081504502723241728019603816 1.0554823807395065150230078744610621 GT 1 -211596912911205212772959899.1925733577466256697217076111851729 0.7519600809664186727745519728783019 0.0558823926006809639708924854654212 1.0575045364871438911216976358868685 GT 1 -4025784453238.8808661656180505045420143570900089 0.8811463367305835347783773862967866 0.0707684147574407429875575716411619 1.0733972867968701215013273652320217 GT 1 -3832629129064402368734225872851429155581145.7627238227622008005582711295842272 1.4191995662493359669015682708553386 0.0256810284931215412773693131288086 1.0260165428047931801265703051651159 GT 1 -12180569025176415632629.6490694929592581788942652348459202 0.7145277966001178093902037205618824 0.0238059505494516076326804891497478 1.0240938911730029067362182979535186 GT 1 -7236790829316725082727258767147961570.7607972921885912048164115858337989 0.3913207610605704811341636824154160 0.0929495442467010573915667601202619 1.0975572011382876868298219572429225 GT 1 -11149288666.9530447600802458456950072667905524 0.9147913806504278080870225886010746 0.0562920516129078051134043527983833 1.0579385374120718952221022470294344 GT 1 -8200682064059518908994627840578145861023955.8861892877829235185451590463889101 2.1195061039420190777855492700942480 0.0403063436025064416664662520392758 1.0411411533652989107936051757587937 GT 1 -71916971318731946139048.5245079441667737357651490177135754 1.0600880999871959909770410163125847 0.0774965217907573929721427619902352 1.0806641326580396514757626547226525 GT 1 -2911400622863872.7520866361597461802151188816284795 0.2407361485660709833826083345010413 0.0717307043831021738368040749912117 1.0744333990503440493286732859629374 GT 1 -238792892991851887.3653432746719402997629947764563509 0.4250983436052669621429703883880394 0.0290585606418584301530620956940711 1.0294891221303739196530714123524990 GT 1 -870560400586421994108420780077611391.3108449849179810191376017910394434 0.0037799578942819524285652037838900 0.0850458331818654281374036138933720 1.0888813058703497670093182014118111 GT 1 -4103893195453035519095813998766864.4479301646255153249120923642377472 3.4586681137617357165933972246030712 0.0483348425698649062468437447700223 1.0495420314491676555095729211776938 LT 1 -185477.6331785528123950797761156978026287 2.5528281085662539980141542474903684 0.0139179366036534810436240000837884 1.0140156992461088032557446255008364 GT 1 -5341120789743598684478718720239876.0721235673506904839304789110019531 0.3421310331570485750608330095961040 0.0116908923637882759271076310648331 1.0117597681854015903643323791186000 GT 1 -4107925494322.8054361158445207411273687638297961 0.2149998205143972378934873360759492 0.0997543479013090893411584357507469 1.1050876061246976339764688599626613 GT 1 -59224171580072597522296678647718742859.0753470351809653435682694478452956 0.6668468345690827375361628780909528 0.0568397319655073868444681259933603 1.0585190552916077375001537265117590 GT 1 -1604271982223321381498332917887605445687.5608760749770564864501325303949717 1.0381954544469369357970047839659930 0.0765263414083564799178810035219614 1.0796130032021142770289049627978745 GT 1 -126567376237228.7338225864714539032272775606209562 0.0973136252872609582771942478266551 0.0779158889163763135644001017634083 1.0811188328146259934547462556080026 GT 1 -46087079303492158036.8691848004740187297740698708483574 0.4999840571363828086105653049127389 0.0636449606917133493055404307223566 1.0657605589261763114694007249081678 GT 1 -31116640594804436098207099620755902288647.5016859586202389458844402220346233 0.1199757326422354649081912423714297 0.0008095289367948427791220868459590 1.0008098567822901482676776144618197 GT 1 -463121252615751408475142.0007106055415674910681299800805126 1.5356274934809871051591416808126706 0.0170316423782846808950901437815263 1.0171783489545771978955583801698769 GT 1 -34487648427809245852092856632401401129.0162327024133120111444662011594973 1.0327103202913721600065507984005157 0.0198175333781953771468917718702289 1.0200165342183935101379428594236577 GT 1 -73141528772471402.8816528313892818223383503294652985 2.1043480219665335095121804156815038 0.0647085597204495216701174284228421 1.0668970974283187817765046101434121 GT 1 -2021181127604887453345897880.0140027224117755282936862243631572 0.2776319769970869341087990746900602 0.0235971682919270505894441441067284 1.0238800403158855447209388205570642 GT 1 -481537720.9079844920781992580290420111330351 0.1897806098292868924191263404561468 0.0395434181538211079399535613534746 1.0403465014952136683020616242619222 GT 1 -17274173293186447617826542212680975527.9778512069122073355964898225387120 0.9327017883512939220629333282786540 0.0253795676177963938216201490117314 1.0257071839020712068557229112963808 GT 1 -64795751739342278813.0804594241490750411607444203494092 2.2500936596232106576202668656612910 0.0851188950816388500452421216436856 1.0889611621294794900117538758221636 GT 1 -123102046292.2822250251403296951277933474024537 0.0847990767440543205968720293707766 0.0402417814103449862045422249008314 1.0410738818769879725536315360528559 GT 1 -1133260972103.4074552758461868572936109177208608 0.0305218451156083674758951487756018 0.0199250498774960254523960419472785 1.0201262305251030969253390866044226 GT 1 -1482.0414892243345703777427228703400434 1.4699494479430445770489497460573974 0.0067623688783970868055263546733113 1.0067853373006803266213309467099206 GT 1 -349.6239466366106453406806181814596327 0.8871807047198124632413669018784658 0.0960136427619597367917722595871431 1.1009410102546795711475334718486703 GT 1 -3131259280302412929489.6706030784342053205390160371598443 0.3392415680677571350339404973526993 0.0439380636744303886754782841900986 1.0449325810778870163161137075757277 GT 1 -359486825881022017127970.3404754538565744012196421361710444 0.0306351504568363862891934805255271 0.0202102911656816164519178400377369 1.0204173131658313973574356028727787 GT 1 -9697515840678658670336747892681757313.8052694038528428796465119520075885 0.9296850780055665082446148825200656 0.0753237949065295576744340383658005 1.0783116512986055878303377576233758 GT 1 -2430.2293958963668714821291125650522140 0.2434461187091366560912388598239418 0.0189902219872713343216882075912993 1.0191728520732486470720616995572681 GT 1 -356417105515832376296711611420434138054636.0589933688685126729890411309175923 0.0057647544240903815953632562792581 0.0132195477504748392867762328029478 1.0133077037554826032298877752756287 GT 1 -9160056662984290824405186730123223836439542.1806726151576856484574769960599976 0.7547480529515768356308596540454960 0.0701951489914167738669039844087916 1.0727805524790095574876139642113881 GT 1 -1180193573308606256112086.2803993476250295414056900455573494 1.1309602342009615489368336415598826 0.0353200441564314661826943206720052 1.0359588846274070540796127384211999 GT 1 -11489000895384389950244036696489253.1475040731225559758520072530372943 0.2179139959050284417484567649167582 0.0614734820736199675493501185231742 1.0634441677059768646036155745801775 GT 1 -35153172015505727422558759.7976757476276989496226009076692164 5.3910250356811498471146484222573894 0.0435628592750931285542629202589271 1.0445402102698136079647422964713089 LT 1 -2298176313338726910183326914.4971667223234847151579027331223580 0.2475192995793244641878423393427927 0.0665777566109975180321104960078124 1.0688976152500396147500520660905017 GT 1 -605210909.6293486017125992509843765010690689 1.4577495624653105173485032806544486 0.0815643830282077505999088626904605 1.0850834726228787526686850778794032 GT 1 -106477439.9804050705487223584959929981688264 3.0609395152009154004550619427909904 0.0740944651304354052034737300817839 1.0769830637194938715225403411254280 LT 1 -119.9983297287914069124349043209127331 0.0358985761840994591293300670897187 0.0099258974943264554911806328424849 1.0099754876388670827935881038077885 GT 1 -6951988324864166.4939668711255653731705025369695572 0.0803459239030582969548382306219760 0.0140541049434779352279619645248075 1.0141537990529165072495367777455465 GT 1 -23044083427.9733270848424210880894137810427012 0.2702467602836946859070301460765043 0.0929502018380992958924062910752863 1.0975579261163001415580681357947273 GT 1 -1517558515765178422689243696489015082.3652523963749564499865201885928024 0.8795984742630377033315253522600152 0.0895896571387301754245915695984752 1.0938598548867415537393863671460132 GT 1 -623199612310964628177967644760835113004.2369114835381747349667712475756957 1.9496677632601302932549849743997769 0.0297647477895172866248382246720537 1.0302167088378382353902081074387625 GT 1 -6409540984012157.0323429382737097725532403668699691 1.6271844081459749936679495790678140 0.0527150841883992607558268529242623 1.0541553695763116535146088346864384 GT 1 -5.6489966372929635697615871225728344 0.6168403577228297265212114190201187 0.0843242657226194889314122139266487 1.0880929788620529276442820621405648 GT 1 -10539725041221.9710033374586383511255393209067924 0.0405174339868997295504271895600589 0.0075688949044133454893408162785111 1.0075976843509798298213241226181894 GT 1 -775.9290043229547234739030106090548606 1.1029766350430504539874648945101296 0.0839776083241825666294102354877411 1.0877144695458463551814153623999793 GT 1 -3336308505187119889587.1399418486345568891379720635975864 1.2885497179110822366520161156940728 0.0645418422802690906247326487426046 1.0667188614518951186857162119028784 GT 1 -4837157648776686574760943576917.8370221480565877114739654304782561 2.4713871991403333195989422242721405 0.0578468857328740410141576018487071 1.0595874759293952949781468274232543 GT 1 -220683608.7305284452014931734345385504431514 0.3933169358629688310565993374491527 0.0141320164521278824109767933194463 1.0142328242687706907661454076380738 GT 1 -120324422205735088161520661.2788659491744176998861919658492852 0.5519398544170823288435228128138077 0.0900757445215912510093735139766913 1.0943939186735399681385920365716859 GT 1 -2567890869463239189412665469371.7582067526305107712865750838309462 0.6086897931320333945795796449102895 0.0567897770905519529134246480642695 1.0584660912792814905840593473151076 GT 1 -7170646300466855300369642.6435127830420823701105907631874341 2.6531583867093325258555783889654252 0.0846998510954870399438253539588578 1.0885032359075829628408116889754872 LT 1 -480272241277927452679282685731459204587.4963034586552751861228632261059608 0.5819978390082373059096709722673944 0.0818850188154299405586013279848164 1.0854326443699591183652493672380088 GT 1 -15682356999109281946245117806042412935743896.5370716978781477177692775845102879 5.2343687887549002964886181672428429 0.0249364638109244637379537735536186 1.0252526447853284869126631629964842 LT 1 -795.9087841192922710442382652320455906 0.5540271906627740872758695238269684 0.0563723854296981286092265719034751 1.0580236667535790916996479311594947 GT 1 -686231115415815301066473266410117.4991661327779336065837388601627492 1.0568615135621513449934952086738547 0.0399115039768946699249400303951924 1.0407298154114783353084072987901062 GT 1 -13.9907750371479254192940259528748507 1.4833322326570216844459301331098597 0.0143326157783266196769606123968273 1.0144363198085112972407806090542886 GT 1 -3708806918504237.5594393012624588333467982214284404 0.1127096100819593904573191930923637 0.0039127764607514759717083442701722 1.0039204513973163405969804772978754 GT 1 -27872579.8119989158000208967205130664674453 0.6352832135774611662971526039778741 0.0773093274723591982481210073309065 1.0804612333382410909279360029493074 GT 1 -49934081.7685908372723317186146584535362467 0.8130035854491878844561110833994952 0.0588986258809184997908071947135994 1.0607044149983020133163072132774336 GT 1 -31263953.3694008762798426756920158913800481 0.0092953920925881941865974861473368 0.0551368955339013821674288616135551 1.0567152249808893964103500650044510 GT 1 -26894735398990506.4692072596890881239175201975040357 2.6652594464455878046865395925901073 0.0675185923744624420536328913078336 1.0723494948885505327167127878488617 GT 2 -779974482803883514794890531282475872.1627011090527801493404224387377169 0.0531073722397988868156684070437869 0.0349341928562351229151659794761452 1.0355589860368889914533722955639197 GT 1 -7196990388241025615484.0905157107387951743210835693328866 2.3995491557245637710454006721153201 0.0289170798026998120958835716016929 1.0293434176352549130618230533877525 GT 1 -2.6485465657170087748858071708066340 1.7553714514384386979596570145841366 0.0367508995985060100417255772342781 1.0374432293963747161523335627665059 GT 1 -496289403.3301751053229128292513146514953042 3.7216954102474068356887000076090013 0.0041120602455573619735453024451949 1.0041205380140000838067600523751530 GT 1 -1795275160293200743.8015707325557320529776027254366852 0.0845807159172937066627778556251712 0.0190742946431088777299918222265522 1.0192585558658571677796917485452789 GT 1 -2523139342814299046823419461556161.3110793087013665261736971915170453 2.3284124879771214113821879905148357 0.0707611583375321369063173468778198 1.0733894777730582900535478359704760 GT 1 -4748964677084014316764248288.9073424552477026822825755594463376 0.3078713879432040939353794252443249 0.0401645587028593786908623950088591 1.0409934245290179659563241517455150 GT 1 -162187655649617.2421422388281242030944564832783486 1.8329074753221119656862051542957052 0.0810666537418843496062302931854116 1.0845416878115980081029696203272932 GT 1 -1959645.5559355702438508310316098183164042 0.8790169857147183746554906878433301 0.0648559044959644640925209302058348 1.0670546487290729161935501224604759 GT 1 -3507296342.7838466679458308337427755708826186 0.6253677545667398869669531347865453 0.0705880316207569551239662483947446 1.0732031848810954430339090335037246 GT 1 -3868942356216394902758594129470926179.8949899053906933225516485643113089 0.7884744928970148439478497926759523 0.0699549165404417001625817294077340 1.0725222171715646501168931573079348 GT 1 -19266599589128987500128.5830713449678127490802802539925375 0.4948924070525348445164014336033070 0.0038660803696266509769238819776437 1.0038735729759187209354031963657465 GT 1 -60073574673447931454201.0698968873453710147531771848519424 1.2337989348787232314943948244783571 0.0112736395921751144314406712406469 1.0113376687496023371742259954058984 GT 1 -1664363884138853208107276315809597.4695980782543599632478942852737946 0.6302473359785910948549445858847910 0.0985822981162662583183823944635620 1.1037865307070409491596528369662291 GT 1 -1287193661885498653019943598583158515083534.0693466732918609277913930101908222 1.0725982808629338881807441486188597 0.0022572668806204987200406149645887 1.0022598183477903451640741186145381 GT 1 -1760028958753794001115.9707539522298066796569877571767517 0.3990366568761597680252096832942044 0.0699678046685501603023540107586822 1.0725360747980790100632366064640410 GT 1 -9875398943.3277645826265235904292621169521291 0.1269835704270232465928634864718073 0.0846979513157188725529181623260811 1.0885011603285514611883511852313775 GT 1 -111027612.1958787212069593165823083064090169 1.0079952640232245890599188676677336 0.0752467595559660677829684464414337 1.0782283441459116351854424918591325 GT 1 -1154637017859138558317038139.2620397133599901854397567739499791 0.1955680108752734307709494525157781 0.0341773878200634973031197556624834 1.0347750929156171856710279943196878 GT 1 -2635109704562547194154.6082681496409244203056500845914838 0.4976594274098455767661245961041248 0.0884477788809508831755585019466028 1.0926063950957884822410386170386045 GT 1 -16288460295197151275074477436245101256792937.5519444686662115989661050007457622 0.8487525236853348872612133232601677 0.0281147479067785285957090102501979 1.0285175348925848353720081242436621 GT 1 -16215902001879.5292281324853858725097042676131202 1.6864250304775981401982702624516800 0.0279359530474490874841966152630937 1.0283335847659828990641198107523029 GT 1 -5808729794278362253814308.2525504067612711299815396890579894 0.0974390211697859873643601341671020 0.0092574190402491173583854385628076 1.0093005352467198692276339264382005 GT 1 -6382956988.3074891836914327245997884154401189 0.1308830428720942785563684785340315 0.0975137933971485271595742231046028 1.1026018724344424377653967517194558 GT 1 -80773030684102830483.9131577998802142909132595782620152 0.7608999094037606682612188481641457 0.0043193468400669434166561218945276 1.0043287021676180764455729976734788 GT 1 -15792149846566843951806519903907597.4987906905731993241849093728743775 0.6006971725970830274410694688410846 0.0616964459115949174686115513050630 1.0636817638979267224582330625830014 GT 1 -4468440675326.6198914687257911173610862302100005 0.3279782876768339727871865471113925 0.0502783201866971544879507937029989 1.0515863059288156616617069055633456 GT 1 -6134243842827982816356555135566208862048958.3732896878444956522788366748495911 1.3482192119190116556504845054701195 0.0665696413213561085275684521853113 1.0688889211628551498670084570174855 GT 1 -129.2400276157778738570817842357176929 1.9941302641031827472252449759437502 0.0151541985928613594298241743290844 1.0152701968595597307852531725057881 GT 1 -595603596557107767834551627500260617892928.3724994245941897713397107054980296 0.2329180794261946577474390715765033 0.0565449185306725289588264344543251 1.0582065237124365231652949042116081 GT 1 -1751386527216776918511412628438.0821472003921698464186309666611450 0.8164947683208524696439684451673165 0.0940626980202266931308185108453422 1.0987851784466366085626721060839176 GT 1 -27762443614037894749573180.2488130491995700885579402098834925 1.0097687036699899250403525560291494 0.0141529682248086726716749794974502 1.0142540766024180519973877632186855 GT 1 -610058185950564115817320797151065182.5203408594268816646697584849757395 2.9285040517920253635930846779609709 0.0459696900824890342968214808641185 1.0470598366365477196239767105101683 GT 1 -101900323955498569393516.0393368099121707883092885243161862 0.7640033743730626528414060517666692 0.0151407591400064062337951609776993 1.0152565507018185768820991579844259 GT 1 -35450373.4289132039972826850341744907810201 1.1934437179125216984525037976300634 0.0476437965814363934357626664495325 1.0488161509175928313225885008567452 GT 1 -86832998802349136627633082521207065143517.3269450377501821569915438597229759 0.1113851916874273187308484696726647 0.0987931579813630486143237933745912 1.1040204783327645377521517286302030 GT 1 -71407210596129066046517580093831.3941494554663426599574333507961541 2.4982450152916882527977178855196700 0.0971007301693600411786441014852727 1.1073610095722073797063298842523601 LT 2 -98817884834176423.4539149996641466610937096130927448 0.2509853863405058925913043507825076 0.0779675154630434376438588122475641 1.0811748233596958814553364849965874 GT 1 -5977.1849020599877771553959018995154226 2.3071647180666668400737867339956558 0.0705162928563580714429217505151483 1.0731260005986431002252248973222626 GT 1 -33521337.0546957990491497853104406174307214 0.5607211591420639760101485521712255 0.0734347660825501936469728711738483 1.0762708267580384013966685788187757 GT 1 -668755700762133868565147808669.4330819062340414642064208145288394 0.0386814352629649191523578361528514 0.0446186648684227511405893387671800 1.0456447143992557575163440495921417 GT 1 -14060.8694391781102886817433385315809243 1.1925986496414569510048346526901143 0.0426250486763311976745382987259808 1.0435601655959177154940097884206655 GT 1 -4058588976346586.4919704356854055399626409056559710 0.0590632929272486486812977448936820 0.0469881634994446430915114255382139 1.0481279551526465838200890367686405 GT 1 -65882431979137303714174099537000893235824.5715412126852998668922404170115516 0.1304989307597735466375756011377469 0.0405161837591423552007455348872820 1.0413598305438963105022977068392159 GT 1 -318975774204046074295452753665.3334226830627714011721360019116377 2.6945115014064296140575364428217407 0.0555770183534571167136461958804236 1.0571811394135976871015728728837190 GT 1 -224742272128969.1688452926387984586929057064259576 0.7592300700839229039568387451943205 0.0533451407017172626114983968037493 1.0548207091450147401488977528665643 GT 1 -694537199148307056504083873270794924.5751376105037471251357053955620830 0.2155156665095464724258234119033826 0.0109282408376787106600276693803742 1.0109883926990387468218674125261016 GT 1 -9415454493997354793.0377271464395599602906554814564118 0.0592795980537877172436748843056649 0.0195896380872071069861779102384115 1.0197840583175355132201291321765461 GT 1 -6275624058819076.9920595226145112987399012637567896 0.6736942068966020879814364580195753 0.0813781641000464424808540708453126 1.0848807365260756455569132485909470 GT 1 -2696468570719113984688054810.2293644077087480934043125644837129 0.4567992301118209949569656557058610 0.0081396548039575550039139656528530 1.0081729626602233397801826754630257 GT 1 -306529989412233154.6900832266504237053861998229571252 3.6870765871417954702947116913095676 0.0464423122515967654521477661878813 1.0475553547246847674711039633471536 LT 1 -44357358227957405635355346707417283336111.5019388683486445634368361591471825 1.1754034195885014847537470370601914 0.0579011053843190941813929642693145 1.0596450262477225821844474852469774 GT 1 -202798424584262835440377601523.7119562700517872119407383860625137 0.5571982268006641290613245275794285 0.0367573627146843776198746017912992 1.0374499391227150452970346766392706 GT 1 -23843317203046.5025553908629474871586545527852185 4.1206002335628179838661989964224023 0.0902212225997853092571744565564886 1.0945538107832693875413174067956827 LT 1 -421953283613769253407482244098431430912241.1238149987043927992793070850959194 0.6551842774784336606428343809568917 0.0578740143784907652934313322492158 1.0596162706505384654173812189308761 GT 1 -8963301672382415591146698945468242815.4566138865560674177772287571243922 0.1099366978464359780598163608118902 0.0513668805499609809981094141038344 1.0527331521168913076802622222002853 GT 1 -4157915365382573934591754103009373550169420.3283771358564737011666932148348230 0.2598694350467687314809335086483735 0.0889421474102855381270018749892802 1.0931488792492449804876302368301269 GT 1 -44537.2554850948528404669102727727778838 2.1436017869495912325560458293568529 0.0640347733632536027882419768884883 1.0661769542237786765975363625935126 GT 1 -1376915066231448.9418647572649293179547059225032056 0.4123605637843628227301315939783463 0.0951696288627641607489724038371030 1.1000077880578589389963815771422243 GT 1 -6775806886880257406959293339928430309197.4833263655748398075001125104102379 1.3796244304422189991067993984272688 0.0282441757859449807002124291356417 1.0286507157364509866179752960023073 GT 1 -14376246742614217576705860928057584.9065497938768180749864448717028349 0.0244056849048669737961638875765242 0.0244791895131001089948899429832711 1.0247837859974678818665398097595896 GT 1 -921686.6263421606143423752158075561446071 1.5807603901402067721887616727630909 0.0307304267099867276835692733966239 1.0312125083713803659926131459556064 GT 1 -144.0652388805132417871060919355864747 0.2679666175979735447429803094229353 0.0890330527980801648233393344332127 1.0932486642663100080387749405546973 GT 1 -55542104685703.7696842754409344204121899556779297 0.7392048952774518576548407197455762 0.0246097967405908889588143808815182 1.0249176795751509544069021272062115 GT 1 -122279084497765925054430551.8303578696306092245545769272823684 1.3255963695526724579064153066162441 0.0312783694150850731303938567777001 1.0317779833008884991353635623279213 GT 1 -11861735.5597583590035466775730815449056811 1.2658963532826514241531330626953001 0.0181727966125949770257936501521853 1.0183399500750918551738472654810395 GT 1 -343287104676289478.9157819516665530155226672348931366 0.1630895229010731790142609516997572 0.0987640751845720203513542249613551 1.1039882079080623596608869307420604 GT 1 -371784075805910872048395.8352406326500531560306017414922904 0.3426912782226352630579827354765746 0.0883972613428558208843002081075840 1.0925509773839400143347901464838576 GT 1 -366058826.1946729810967038359896671709275285 2.0107663087261831096895382664319411 0.0777509068421802810364148992684612 1.0809399257990642946506544010637315 GT 1 -1607318472141923413620.9564884216012416278296605429330779 0.0247251203241534891837787078705636 0.0268439293878557752193317988574546 1.0272108082077391748207593341983313 GT 1 -10596.9265660917221380043561362021330168 0.0620047335412736645821768416100691 0.0713052792737979288160188668139771 1.0739752048010177619777299611169222 GT 1 -21421805019023095653.8696339814637355732309315715400262 0.3737937239390697299751347490896402 0.0539988333560540708132671611199065 1.0555114766921757365577068947672779 GT 1 -2528398344969033392555246293410728688141.0743452528674285667994430203143098 0.2177486335014810208016732665217486 0.0332152180826563105843851398712367 1.0337793709496947063417138055389822 GT 1 -1242961907029167544251167898308107334495.5458370829209696694450771836404227 0.4715899300168887195246125594070752 0.0905955825417145628120093331933593 1.0949653800504786215778566384405486 GT 1 -45347684791213855680910936008.4488392305079245427757932700083887 1.7471882007159310537976774374017550 0.0599707286730653110234272939575404 1.0618442644934131725872859255407634 GT 1 -1641914009129590805124229824134.6282822779887759448962418369328064 0.1444084536138530258178336477621647 0.0227017090821710012426798836008814 1.0229633604183409543901041803111364 GT 1 -3098457629.1789325638343091242734354208621508 0.8405250591432307831731547207717463 0.0708298108838891271892887750664067 1.0734633609120779685556623173984091 GT 1 -7616893674381325909144286142165378418898.8079687942941785168970455623538696 0.2190595358934157445511576494303111 0.0908129067152211935341183914610903 1.0952043827877698986051280695508845 GT 1 -1687201639840203040.8831579580185094848868505602797505 0.0718003200726009350141144490521716 0.0995036005676801720610781124756965 1.1048091127835371249024647323700282 GT 1 -2629947732658368853.2837010368874023851479759570350125 2.8979697540425338217312187058187184 0.0378115445488713056470917875199594 1.0385449478649109799685986032871386 GT 1 -1716651851.9496997597329510138636247628964502 1.1721539685814542866134588187991610 0.0744144781136111035128738172234593 1.0773287450936432886755119442548002 GT 1 -18362210556074263903944033225222862178467262.8218323357460568225738947929821724 0.4532812519365354210468868534054306 0.0422034986880248109125237345408674 1.0431199439180787794458484237874716 GT 1 -41198127277980929978671184.6581175522672174625969658695837804 0.4931708711990097816204499847244167 0.0281316287738748850305419411477463 1.0285349042411424508129854705678426 GT 1 -25231.0901232225540421758187390000034916 1.3595173380360894475531892658830932 0.0526969898675300743892903948409681 1.0541362685141524822701010907257576 GT 1 -230386878131581.2729120566544231120020872251509020 0.7045398213374849932472503146047357 0.0989383996520413759116164689919636 1.1041816548451846630259170949239822 GT 1 -19388094197002604213323387059.2816332582855258246480861589923986 0.6578455769618738570503227375350623 0.0343636489977518470962128085307759 1.0349679638818828853169826572233178 GT 1 -1361211351719022.4628223843529341752431852931961392 0.1467476049922006935774955200176024 0.0761314745937740884623962640707569 1.0791855059858254438648983804750668 GT 1 -910674878704.2173388261533459740282506095420231 0.1473684359480956727383325726866190 0.0317064065741712473514563571304877 1.0322199386977769867358937036957807 GT 1 -2079741860.0366791135727665019637017834823512 0.9357066890245958481247243867015260 0.0942693201990357718543428315693930 1.0990132800433782690769164438644346 GT 1 -730490267783849607382699274900830789969086.6729533968482565516599316269592333 0.4339500266360461024547333175414473 0.0001545788875167944487877629267000 1.0001545908360643720711040668125859 GT 1 -124954206328071244272097833.0616931250983817956141407879257386 0.1881037005654410169134336860795275 0.0483969523721687863316283479499161 1.0496072979230790777296616903047611 GT 1 -124070369537223946059784372716313543588258.3276063941660144563443246784739775 1.3545785976538590906170236094824873 0.0731997518668576947340448988572111 1.0760172186928961780740885494427705 GT 1 -9038869050513284941782246.8684156628236976203927906668889485 2.2397839833129575969124554691569311 0.0295012694272260314070536398752335 1.0299451843875556151444862247693103 GT 1 -122934468053871444339053390721263923.3185004613150950740577321807662767 1.1384001367732521229530568803852017 0.0735580592476957969897754472465785 1.0764039003553918735446705017230981 GT 1 -1883182356388905337095491630.1660561476758546488081113286110235 1.9408759907070670125983062591014522 0.0764413192102461209544099363711551 1.0795209396292600126108136568019736 GT 1 -64497705058629457478503910879.8062048535959765489091563354935485 1.0121903690820639288393119375476200 0.0184988766203792334568981417086746 1.0186721207124089860876657409609451 GT 1 -261135787000188816087474453.0149871456675924061472443963087722 0.0991162599620476273715890932942832 0.0552850053058980209108303319302255 1.0568719898929782734850630691808565 GT 1 -375204861695534160040451124272.5681905261267825756672048718629834 0.5062430160198842233976066829401763 0.0665649573467685746105701815639271 1.0688839031528966364531308382121828 GT 1 -1559698876826827810147849361.9345260759644281247612949777614934 1.1458953132209555329017120869361706 0.0450261943381133275614510014669741 1.0460713675038751315362690881202282 GT 1 -41.7524982153717359498038911403832464 1.3011908797629845902885929882752104 0.0696044592674523714812294558578513 1.0721454706389664599588470181740167 GT 1 -50652423834998563869782878972749.0092833851239338572769972298734306 0.2670898944620808988573379267718466 0.0595274208660731328774887172965261 1.0613727862918942479160903677907926 GT 1 -14733.3796075513789613754910329792248635 0.4702781864400934645556001041868568 0.0953874157353029670269023879937694 1.1002485106216074161412122299068771 GT 1 -149541765452928688391030030.7364543028302856401281795147591072 0.6351594910429296876427093395561654 0.0078747391966206675809859840643796 1.0079059086976237762032630924031321 GT 1 -11365308713703769256.2345299333903938051878048612122037 0.1162361810599111958206561502548752 0.0004869812907425005327466421605992 1.0004870999046413299992295295756164 GT 1 -9.3054347099843065101270408236773770 1.6367529037772811055270596749862092 0.0193186141116952218227972396939371 1.0195076571980659735395138804536444 GT 1 -2237367643.6042409133814469764658697957422943 0.3176494842153993926118356390341002 0.0915769210340021170031693077648085 1.0960450629021771030182125092374679 GT 1 -28596274321398484803.5934606899072030193407834646056335 0.4576513786143487892048692812422088 0.0050090492546774419762413721899763 1.0050216365932206115594423324585394 GT 1 -9499256237011336.1917065379064954648578967635112854 1.2435537611737976694794221273079380 0.0384516956793276899296405173228388 1.0392104767121746358319953341106240 GT 1 -2823048907779691546192.3628902305012450501116261552784246 3.0285260823439406904840506308551991 0.0756545071988033354410711803477959 1.0786693672693557942707720864498526 LT 1 -272552055.6232570654255789038247109988948114 0.4111572180716425204921187812652875 0.0446250927013380988791514493860944 1.0456514424504562566433958411266405 GT 1 -387950872221.0848169229841807152487476404641001 0.9889345873328604672776495123615491 0.0946300562314597204265073508848111 1.0994116411642346615197228788356925 GT 1 -97335.6129060607362899706584338644416081 1.6952891035327524018349557690502321 0.0594918640154759184523001269608142 1.0613349795772207159622502582454519 GT 1 -6776391607583820450593004951145335868362.9818114486098750419920473499772134 1.3693583420251633559458882443280804 0.0071310664196397767514566682296361 1.0071566140005620563119019640971968 GT 1 -318047764022281606989675479110203946061139.8160844033313655069956742117424591 1.3095573590115661527979895385625156 0.0094950686161975794523281207117481 1.0095404341746504956316450451320194 GT 1 -25776021968938993470932601156.6449898560922617678261016485728923 1.0874244133613047966880295144242697 0.0895185565181983265490062128591276 1.0937817606022802275689887847773230 GT 1 -205361895512561.8843265641938421682181700704922662 0.2780170456266412627549711630760132 0.0855116155229831815959670472914694 1.0893905127332298925431370478054679 GT 1 -990984478139.8471464520472447115512204879701730 0.0721666408293530597472194961545241 0.0266296619182849569707634233349868 1.0269906545335026007841710076442892 GT 1 -27708557552379.7142504414192912465937878708913918 1.9448539658797701690609905842145057 0.0360303488010123311015020041269286 1.0366954670258914825156191618649351 GT 1 -42.5349661661367680921054027697760508 0.8593484979466525617541090595037656 0.0882897681699044726409884827315068 1.0924330676505965826260984270723451 GT 1 -32.8633532453636097058556241532639963 1.1251954225981519874058748044462894 0.0826999072618198563963837631762709 1.0863206053674587590294708977295971 GT 1 -192863196360856476152418500851.7628881590494067094456909891092890 1.3743072597388911984451288194306983 0.0074365731940114728264586836936726 1.0074643623609478365550112829142056 GT 1 -3084690.8881529029644705254992137709380120 5.3511258773224677147980171778005880 0.0924422568082485725192027851569364 1.0969980860059272653306505901928450 LT 1 -1792960500751517861743504063883921065.5600528037108485022913768671984908 0.1443926869220607329081392024890288 0.0067590751618192377161951890412146 1.0067820211646284468958461007916198 GT 1 -1590704345153395582.3787443861680911307864245283213596 1.3887035009130613376018755945686115 0.0519811196316118197038004442194132 1.0533808609250266777516750664157896 GT 1 -18.5604048064733260773224199451602847 0.1990929538640458689284878019307544 0.0077535051715340253135938833219731 1.0077837198739888857941129974738175 GT 1 -206747113629525173111678146450057577.4660149846800820788724365575280528 0.6278055568677214415944556510445891 0.0879128062272094718696841191202820 1.0920196862708762348735407915083488 GT 1 -5810430311076127553527959251665383608338143.8150100421388307328058514271464983 0.8508552590736505118169755805104435 0.0553656181311444216552770206377665 1.0569573238458144257060649707045189 GT 1 -543932499501215796959555235336825082352779.8458140380309890627188569155011326 0.9131458475009127461604124435685326 0.0720466903542519214371762532899759 1.0747738603434089518097399724060232 GT 1 -11185995410540453414595304355053113348418375.7831608558106460114663505676845511 0.1418281970008959016882129756451839 0.0784059273794584022314201451977575 1.0816504206795291449232561500094775 GT 1 -822085631.7897150827848365900251211949550708 1.4723983587247682693838770369036042 0.0122443453459535159725440429779682 1.0123199249243896962336224458626007 GT 1 -14124164975.0947218046746445940194876319848705 0.7258879209064605169437861112593546 0.0987164264311456103852659910667265 1.1039353388506344434203953901350460 GT 1 -105957758629272253218667940688556.1643438976294535620025255895067716 0.0897081705966162267006991416806430 0.0660764530073085808011832670411358 1.0683606995718465714726853992267476 GT 1 -8478555209078834.0326293494717737838180496318066323 0.8767115229020505163761546842206482 0.0885336598284500413667905247730520 1.0927006134974945957524833701321481 GT 1 -18648490508341190326813325647859569930676.5936549787140995749467021546037591 1.0664103696561367462365688996306998 0.0779030379888035042789003622095606 1.0811048960838347469604434518185054 GT 1 -3618961896202885894010698.1836406742730650421698302354808390 0.6296731804768652877071494190509130 0.0651840192623443192259960758595724 1.0674055811087702257740236403635955 GT 1 -287697903769.5103860285351700546064422577533647 1.8738253158674575635091790734666745 0.0567191705487529100878079509849710 1.0583912363874508011073324957470003 GT 1 -10672583387959638961831200184705880412579.7450720853159654977924948514082269 0.6558487685858146135686388123656624 0.0413565638443940478559771289050034 1.0422360812076342100197442330698112 GT 1 -63177313813176885716358.4229680123441564449941500072299919 1.1214036899650587230534533390152349 0.0551487638959556500010324216022501 1.0567277859926779221782625469016645 GT 1 -113605023231424876784689418970115827110100.2565438750674133113308316232556819 0.5214542346078837471211625363636192 0.0033969458784563994732553209861450 1.0034027285985456159945919137849049 GT 1 -428703.6350439465547669615347476104373798 0.1133000043848082379593827292090902 0.0368042618104361804026216328617194 1.0374986290744499480093389569372382 GT 1 -27562472532662702082614333200930.0284501116317378886795282232476431 0.0063632850672506893117046476473441 0.0191515781835869279096592475073225 1.0193373453038944478132870977900117 GT 1 -10927.9098213258577146521086017451340584 2.3412532968031264001378516281303490 0.0580530635203882638383005027711454 1.0598063366934566309130502266017724 GT 1 -1962451909356866486171798.4831988201627639607403547746597176 0.4083313210281999872195040164417131 0.0267635434882469053519618622667959 1.0271282083225316857733215488141875 GT 1 -312189481799576901366900014387642506960.3044141958154458303022374177650901 0.1293960187823842179448794903833919 0.0378106168993313316113125751146482 1.0385439837615822155757133849232514 GT 1 -3087640063900154052823.8251089224018064998411489904569345 0.1807945096526722233572935561524216 0.0193993500621925956108610711360360 1.0195899869691730347604279416540653 GT 1 -17964003722110.7013322489189197779918846241877398 0.0832358319564615891729475463589322 0.0883135020126004321739830284134892 1.0924591002109376066283284370620433 GT 1 -59990122839.3302736394185251752814500873897812 6.2723034872934225743167309990697867 0.0001550838922914691039059838445367 1.0001550959190417461407025569200138 GT 1 -18436041182234581885571430789.1771584615696047698714783658848407 1.7545399668753622569787112279827871 0.0449682737404744099141808215416231 1.0460107178390561970605756287044336 GT 1 -68194345.4573117804158551136230968700614424 0.0133620433189355123697781286055960 0.0606293959536053873309725587748292 1.0625451981437111017875394289812544 GT 1 -95496634309292603715.0307884565890784807330695789060603 0.1740299919763450979741136621241898 0.0542453391013768093650900905004736 1.0557720872246017241971537265141449 GT 1 -199496852154378618336593162762584877336.9290569012747376769622312660184006 0.0422478673144366456456108388992408 0.0650541742172313940858018640914280 1.0672666917113412644866249022656194 GT 1 -1451882211049981071882620690123792485.2817539130343069958429311133046519 0.5355008578877423399393957857845322 0.0818724350456503961116962989079145 1.0854189383703827536603758943500200 GT 1 -50112204175847972132801025006972.6207937548252340867879727827800473 0.0375708421184392266937522566727489 0.0021412657917376446561734625463592 1.0021435615791792794468232612183061 GT 1 -18626.9904821116781227521802957906095676 0.3539445863143791321028856160419851 0.0916578870745983601464791357448944 1.0961341949936672025601585515899699 GT 1 -33506947864459425238465389373025.6251228120120958017740310557745952 0.1848427950359737371811687141747656 0.0836355499013744746315973460617620 1.0873411221510898040142069563119609 GT 1 -96.8696758154420157401260029115721499 2.4221787156353108812275190719526585 0.0339972085672499365715867897418867 1.0345885550918582946652280910597817 GT 1 -513.5538491467089272791914448155868995 0.2930012424495902909167146656492905 0.0140125084485691738230533616407049 1.0141116105132858822334058174037598 GT 1 -3609251513479.2917109348856139496425649737819063 0.1157469711358407999162769940453752 0.0591305081428613127153944639831188 1.0609508399215655899667356247819334 GT 1 -22912.0567175464099483959733824311456366 0.2258864828493134409357461461030232 0.0322108640714720853737094986498943 1.0327410502195814504127995286587941 GT 1 -12356570120659000762.6330732379305944527435799516502489 0.6251651791763737856815425669834578 0.0651646914363747441584870754636131 1.0673849057816855834884469444732824 GT 1 -13305096854554577017596351564356524776519.6648808516441451375160514354676895 0.9126938188836512729267224043028275 0.0965316382486092856259004804165055 1.1015141869936472344352672766686953 GT 1 -336532768503116491192361.4017102771005434036712960006365846 0.5349084011114302169466458151047579 0.0154224981190815098970279315413213 1.0155426619283258285029207416140167 GT 1 -2315249035578582945927.9149357195907328535245702612043404 1.0014436116336993449367427924812075 0.0458801663218022848065550499181853 1.0469660036003446703998646413051640 GT 1 -403505187973702461485859003591046724630372.1781442327838698469327116361795286 0.3496414974537686069594053288049364 0.0797731009037048098020810735630272 1.0831350098946001286486706205513962 GT 1 -1568.5055926995497120653487467639362860 0.1020544418533592716340206486307169 0.0639758754264436109260903721620278 1.0661140287196444283389729915758139 GT 1 -6673534702903166336404075651252334407.5469910253410070176173256792651921 0.0274376183138282004481733425252505 0.0998389320696596170877883847889091 1.1051815673029933854474911615919541 GT 1 -3285025.4768846354613503297350500190025124 0.3188611254428123418359649931535244 0.0054136459042510490480559976111708 1.0054283527878278132697758535606486 GT 1 -117843592202029398147888907475079684847.1612105033724038840933795654757053 2.2365614323510527248453583382136234 0.0833896010952772864062816780321695 1.0870727618866737755042863962204791 GT 1 -683088089020974863860447126877630.8814530127235017190373877396502991 0.0666363769108503898094581817441645 0.0879971764813258759928892726878713 1.0921121929491396786512497020927377 GT 1 -1570454567797827371331049691858.7674771281666400642355630005740625 0.6953688266097460883981363558686933 0.0781824588164726767921694516478613 1.0814079696041350329691064223775989 GT 1 -35883132317025.7579557109458012229484689394662686 1.3927190017012290294200453938698365 0.0169992936387836513287591577742877 1.0171454402582028892908427446574677 GT 1 -4549145123177723206870.3761832724555241153805154502568202 0.9060864287549211780212432293580615 0.0670646090692502511000863565104352 1.0694193292670565401921956209350364 GT 1 -3854707844176114283971247790268944350.0644761232111257661864045755923563 2.8491390512929613341895927866205334 0.0558160598983848151879936630213205 1.0590836282756583743198655722425081 GT 2 -1807385068535.3968124279154070720830111392034798 0.2694552810286590553658972986313193 0.0657151144995406196271673246570545 1.0679738706656184386105706597669050 GT 1 -4755768890700967472133684.6268460293556395526460495037584078 0.0304523612845928960101294965159031 0.0324185330280085038792619320630374 1.0329556540345016521379504395090089 GT 1 -50783799363008736878864577871345653.4596477765482766984799009682101576 1.2455926694873179471121129732868770 0.0562214121777206527498996659462812 1.0578636871454713214320322258792250 GT 1 -1674584365399848530028295963379363760.1194437827524170974584388105009705 1.9630717601664586912393432367585949 0.0762194167789316099434029541153916 1.0792806995859666174001933682329976 GT 1 -21293736612167235637747717666.4600706401938204791180345124425528 0.0950894141530858036931978863260204 0.0844788411099987526311745159010087 1.0882618032941204551137930877203595 GT 1 -45806203795539355573839698.4245781169375292124058343286868891 0.3625582426438783636852062169614432 0.0239837369719242410791030649515806 1.0242760297692675728998225624063146 GT 1 -197227256580112897607464239230603563.1321978855451876666151162624895682 1.5354213695465895940268002300138130 0.0489695988249260259580463964839706 1.0502092493608705868554641042773958 GT 1 -11753913498530059990706826323756350574.5401902475097464609881558289926813 0.2683492973754644980097451436073937 0.0263715673704361986716515031271252 1.0267255341305079603314607346762260 GT 1 -71890997002.5447643290188154263426617442290848 0.8917761085888713319579765164629211 0.0087154411622371251752412664563957 1.0087536427439504350566397570437976 GT 1 -74861983.8530363411972189488039520607584066 0.5862976396972011281064330348663445 0.0706649582386682214254234834041284 1.0732859574343643992174549436086574 GT 1 -481.9378294875291552185353314795116455 0.0363999826180154080951539762853246 0.0770439388335001846248059748994840 1.0801736499823982427487975967829161 GT 1 -864.2518474703927813612850837249620417 0.5410405258909318461559044163196299 0.0733791308240927194589707312824324 1.0762107839394770905201202945764639 GT 1 -440136660841335308897504283924619446.8294992266457960337445001610939695 0.3284231022478992514907768076674423 0.0660228173063329447305697638693627 1.0683032707158715718648543473874411 GT 1 -3181036945465251399642419962825.3611329898667561092228292975740609 0.5199856662422197377473185556493218 0.0022508942604111298493531106586762 1.0022534313307298951161881210090735 GT 1 -2285448837918130702072411329856170.2471637988787667457706371768470698 1.9794718427903605974990371511827741 0.0374852530390764704695140629754576 1.0382058914197283906303324506080304 GT 1 -79091162152329593468814931195926814486321.6870283227464693569666533469434905 0.4702249824333944123201737023713640 0.0708293123462690111438995677444121 1.0734628243715257501566734344780614 GT 1 -1034979674631553602430209.8291619935082112065642671594292164 0.7676955055308152557034021853514884 0.0597652710912032684653100123697615 1.0616257232857380698774382566600093 GT 1 -31.1955465754004119662013203203505910 2.7504420245366662792350822413127831 0.0184488981171461217665470769182662 1.0186212015339982051650221335013170 GT 1 -26481870064142230.9078963019408753537557780455448559 0.2439575114048059725608997045764838 0.0194240956159948554374564346607405 1.0196152223858916791624012202575951 GT 1 -5144255817565.3307778713062929149540040117663228 0.7983088758978547389955007723262141 0.0423663057816055640920216750269213 1.0432899392479558311205409013899601 GT 1 -22.1358056088621616783968085404152204 3.4518606664038461815404605809118375 0.0895192491846572239888353149784502 1.0937825213720107214289680093263464 LT 1 -266874028275555169903330243095386295527739.9447452856530811907794778840033709 0.5340438976936539983816270965106474 0.0031104907232345037011761652713069 1.0031153383544554367099585274087927 GT 1 -457949081448106546037788702807524.0756390708970711070282321677625142 1.2786234273938457760399731512453624 0.0338090961400593726277982434862480 1.0343938412510635688154306786963568 GT 1 -50453661569533556.5624914508402709848363480459867346 0.3942196344189397779419605840655033 0.0726980886074871286681815410869532 1.0754760799330548160822817648948314 GT 1 -2519252763963237197250.0431962022474602894953793832502788 0.6517831404801325806393076288604595 0.0234880353560047399317636378094379 1.0237682761608494263862652498037978 GT 1 -51268602214662189887072673.8318790542642486766099974609596477 0.0080135877128951172061823434442991 0.0493801681190111118635637591718285 1.0506410525319559799857645208414813 GT 1 -61363390606778.8383914092952519402355154950795329 1.4364751823973442972341079161712342 0.0682318194853486684300885788198595 1.0706712285891953344042958023968283 GT 1 -156.2377288797807506873125826442614138 0.0553318809135929141554379497798260 0.0357340964158089005659318929636269 1.0363881888131237972915847554456471 GT 1 -12709165979195011.1638190108855694112446693141887761 0.0695121554129433348218487841568269 0.0344874242441341956244979722022563 1.0350961520757987487143476362872165 GT 1 -990301203429458335.5908452618741258355813838378810641 0.0427544824405113985391094588417374 0.0221007003845423821320940017384287 1.0223485798770103794315690826861035 GT 1 -406208470415440118719223107626982066781.0397877638095609634897298893928509 0.1302761113009696019157150173863760 0.0192347586614613071335912776493048 1.0194221535201978071061697565626451 GT 1 -110318911926592670889713275031421059443222.7695566395976649479493721386038131 0.7796914231753079540493947072164368 0.0489004040101648856756350153707191 1.0501364942758923820579959119492043 GT 1 -408111112082653781642755518015022042490.9961897682452809026800918419893521 0.0199886675136008239146183005497744 0.0051222977826298180643724870128990 1.0051354617222370758542508762919270 GT 1 -491672805709185881813220516.1071715204083465826118845814699040 2.3205288659413332539981700373039146 0.0323326216565062099170732370008957 1.0328668681692970926129155209402063 GT 1 -10267211861327344029717236168196840.7580497031418533312212378795901471 0.2442594617815050402507125969474251 0.0964715594084269727091529752111869 1.1014476912033652020540906677356748 GT 1 -1974462879171692751357514710040103156323.9345081827704890409091159042058347 0.7596661079559727827596495733921157 0.0329165725239856028942682363838169 1.0334705127145841979250965580761317 GT 1 -411.5048319620999847002711809215006246 1.1844261450457577377832100627042811 0.0785595420502877450648061655130375 1.0818171182303748517435406170686109 GT 1 -587701796.7401464101900176241345677647678161 3.7676176096364966874920035287944770 0.0183252608357574494335267030256630 1.0184952483410775370258180570679971 GT 1 -25656783136549958494042.4019463363803751152253546343228647 0.7018933374985797142318942855334570 0.0424150429513628628226145976571162 1.0433408338752983294353500678730114 GT 1 -4559091170784705.0403969056438557788838298809945264 0.9940171179595502737677440980131724 0.0558209441345408075686285165365442 1.0574394529996206908008909783624696 GT 1 -11959244916.7227842859532232842553621626601893 0.7814210690059255714556898319116653 0.0047178312823593671255054448849447 1.0047289953757429290305140366967630 GT 1 -16.2929068818631795776740151953666088 1.6880702004157137703187156319701874 0.0017696630187182742022120233832057 1.0017712307221290299132625512106050 GT 1 -3152255457118904581050882118287699488656807.4156389210608337529820567998857355 1.2480814984397045367062028039733444 0.0232067714449861063916557682517700 1.0234802884834072487785355115918596 GT 1 -663362362074556937517.4698946227647344451361761588726872 0.9291238375689295649558213573761475 0.0193200407175749525528841962087920 1.0195091119079624886056687584215875 GT 1 -15720440881907766600.6437161910191955177603953013707799 1.8144988717147165257713785164761412 0.0280894086080856512164644256939623 1.0284914629171978723534640831344673 GT 1 -167920516393941216153.2335937995398983708987748944214521 1.5519921003787223272239142780974773 0.0272791676758670861915419151338521 1.0276581523276192702008653966850262 GT 1 -163795438914183170775.8545624584953791369370393819819445 0.8467874731560642815903048362979387 0.0643280574069382339674013486334212 1.0664903526226850353934231120076957 GT 1 -6489078633742938018.3754932544889185411526112118069273 0.6049877700429250268713830764736720 0.0124776888618805935348821903218345 1.0125561889045014236262841845377511 GT 1 -8412611.8282106756849245782840800275477015 4.2662844900763869529540463153136001 0.0448581776849748872489978418616422 1.0458954444852778522989207714123897 LT 1 -535230714.6915602094066467692976829851875878 0.2980439310370741652390856314539583 0.0429414958803324930210803650303725 1.0438907565662996732601598627440357 GT 1 -15464564339840532574.5430442133945007018668939872426441 0.1737918264209790369726252151747079 0.0188565304694041359430932037014327 1.0190365818627118635086870522879304 GT 1 -141938007264091096483215887710.5122624893938424542779688323273366 0.7691962331240572711922625618810077 0.0532133650347206335822521564337246 1.0546815174481932468915155433549362 GT 1 -10073250582033338104226011847716896369835419.9707278137267486998775451701798774 0.7042007056919853846292137039397894 0.0365367579435011817439450514706915 1.0372209422898174453300454370481097 GT 1 -926247408976265159741349506141416.8907962596691697318145090665457739 0.2962033993118083298994605507088901 0.0694310271183077585109524241238222 1.0719590811099045800221830715815158 GT 1 -50873732254911012089830967160008635617021.0189085630461531696061826304183236 0.9087633559053835130995652000345769 0.0760871264904066847927759804509629 1.0791375045248280118587477614153094 GT 1 -84303628678401594164687016.7601584448310767454617211583686553 0.4091644917718665666332918985682878 0.0468086325844985018579515817053700 1.0479395902237574175827349192034538 GT 1 -3284018440173922308014235685667894271377.4487516900672519780793989169357679 0.8529316589559126322747834810640134 0.0401047091703593214617537700524504 1.0409310725215016380774705717316456 GT 1 -14579694878933970.5386505384276987357089657345266800 0.4585656686597943953750163916344843 0.0275792746164773811369650493167114 1.0279667231273149152032191867145803 GT 1 -1571081806493476511765843083.0677116758501692325915703764562221 0.6621235365822950207880274375092147 0.0879719821545583203674253293059625 1.0920845680579395758371587676676234 GT 1 -2391142709025659365.7959675972049241167382360487707829 1.1039465252784735230767011148827166 0.0280552013928912012092919297677934 1.0284562676908719075927733765304900 GT 1 -8088930139798106214143959135399912.3563362547926754577928447576357741 0.1386998871995263736285828906094676 0.0144889393858969509912710592161529 1.0145949290996260579990357595472546 GT 1 -4691968667735133435.5819903292388683586126380447556672 6.0559386289566284469550350940906996 0.0147710199709081086697691864533733 1.0148811977917113562418163692793425 LT 1 -10753372465336875133440000167475081855.9724067644462289763891093905648214 0.1337707587659996582214597016711224 0.0773126445093781454570933662841777 1.0804648283057421540266840475667466 GT 1 -1005680401784722.4292682258832912100248940754022524 2.1659556289735039523155660256252537 0.0384986563431567750228888931333826 1.0392593164952637605938232282983778 GT 1 -1620359732170608210704899433.4064796511964410974313636157262310 0.2966394721726269191475699171294962 0.0744323288651157533435685285727124 1.0773480311814425041092119490080861 GT 1 -16021108680848784218062189.6798488604488933993949787623058068 0.2333863981904695536955606323556231 0.0742923705406591525221569765405620 1.0771968291158412167384055931325954 GT 1 -1709788730627628721831990.7315608087790195032607336213789973 0.1681453409893839556486485369924040 0.0219627394678003800588623762264054 1.0222075109693763022219225146258034 GT 1 -5925200.1083078576587695195376420090740236 0.3640112364230699033976138308340169 0.0629327554035872320628590338752485 1.0650002334741358067992174588489620 GT 1 -524379278731624222983961.8958356380494400478643307302418207 3.2149851789192257170990878610997554 0.0064936041973650658736126976074328 1.0065147793636444144607748328844787 GT 1 -78259513809176755508690881770.6742614357342894864956084119879042 0.7244046553785965512636505156393450 0.0459270065446361720676464631426913 1.0470150974048881633244611211632787 GT 1 -532.2737831113061387592348587706889433 0.1844051905264166938772688030122520 0.0339902556244571369854935449567399 1.0345813574752135137227346824145398 GT 1 -80264543059469296399383411169607904373020.1716931126601050686280008856889074 0.0649999433067758209381633806744943 0.0948138958109127829200174291672050 1.0996147164352733337213249864944223 GT 1 -160993.4399700053120936193770680255672487 0.3508427496600419454124097549409945 0.0124648390157791085083833458654764 1.0125431767807703017611723542925155 GT 1 -13633921686.1110550421481904987301639060247206 0.4145377103988721379271577380353581 0.0958220998918962768523184975696300 1.1007291457960146667888321754820172 GT 1 -1167957945333639670.2100730752359597175192630780086725 1.4645634634328922698560429729403262 0.0889369513464640446545706076919584 1.0931431759352464832052781161548766 GT 1 -7152256775636874.4376809975512850947589058236290792 0.1346791767041969163935375560126376 0.0511693827383085769853607875909811 1.0525249818013859625615188886071294 GT 1 -60.4430849008978955445120899398953005 1.0449654483174066208822802019616426 0.0879348539424875411794582326169925 1.0920438593783494780059964125625790 GT 1 -127.1154312215436873067276699122950922 0.3243479695475661861636368781198048 0.0401138225560769828574092594067422 1.0409405667122398426814524876714500 GT 1 -9217500244947334526978149203.1585134911864761756860133628766704 0.9284425996941686916095857597466671 0.0725126409326101728872175853031447 1.0752761136312776617590890935808560 GT 1 -4124695838650739678773063251028362.2339053982384302881999383344828189 0.2982346978898757205010758280639108 0.0705503673724868396750606099275960 1.0731626608869961826139869805833467 GT 1 -10210621113314353012625544.9708585237715921799864257023730828 1.5843899706845013077670756987020361 0.0970739985522058910738290930846620 1.1021146763784053105242960481041646 GT 1 -1119306239317565086233250044.6698571006401441511766729961948417 1.1445214175635722269919209724421805 0.0706996891832403834772669855839804 1.0733233299555832919627641439505493 GT 1 -21772759138181682708777891506640676113538214.5967866153211236933883900464925263 0.1954125837472763156843911595035166 0.0648867406438648301706600025721802 1.0670876240282455434037807915811153 GT 1 -3907.7723789901787973726315770080322727 0.1332666396928571452784094636173956 0.0365609588410905944946398010057535 1.0372460612569819881756309714436607 GT 1 -242973755987810880933413213.5019091346522594971144096144043872 0.1088906761110740377669655792427523 0.0638429390407681352681663649185931 1.0659720164112993248935109047225157 GT 1 -4144957176886788420536638593631045.6979317779347943531414976382819307 0.8999770467235026316652321387614479 0.0067935717111924833863387324392730 1.0068167530686201739579754744017364 GT 1 -23313388478949639667233837634100984320.6170621610238811689822391590409388 2.3137583131343888723508604398634756 0.0789027112590410389083934991096746 1.0821896144935723284138951062328156 GT 1 -38937642509364844000985834700762251936.0922526446364466724676005631912109 5.0814702444225408636949869993881012 0.0203865817712963891083309461627069 1.0205972563369487175127092777324408 LT 1 -679141593686044361692163637110110218488.9786323448287059361029373248022121 0.3334796263156865216059969227844502 0.0540288323799359452421600993064253 1.0555431885976207580699868201490374 GT 1 -308413042803411389874892.0885999102758024140317871799438732 0.8097989678189201855558183157688126 0.0574264407830874298834261571564995 1.0591413157909770988756796213526737 GT 1 -3728946890.1437477495833809950608882415688785 0.2363088787510464538667826526054788 0.0360187832772657043534171548262454 1.0366834692888752557497498082111328 GT 1 -26942964967041668503091699401.5427822362222540102161141500237601 0.4132042210632100970973921678402989 0.0391366611715745432976847611646559 1.0399230873787549382394160822519161 GT 1 -5812166047043338186251007127866863.7663792089649500504451121045501836 0.5291206902120192253764964204446965 0.0229380739308122139045016257615737 1.0232052450491671482229159159868424 GT 1 -21645566710707484.8072223265751051388807279450214482 0.1766937013119430984595496430350364 0.0561711535077862762175292872440670 1.0578104359566567307978916109742019 GT 1 -813778500276887444359.1531900687079219447712874195016968 0.0845894464143344977650410115632603 0.0052303920922741242932314327002118 1.0052441184768292848253374646991402 GT 1 -2034949.4093225565636642224545859309344407 0.1408860661059901488636684043205069 0.0224198685223513146364072663434641 1.0226750145462461697032765577754299 GT 1 -304285264221564773187536193328704.8001460990041654373428492432211325 1.4707554389375047436580638431838242 0.0789684745461510464746764135786464 1.0822610137210652116685719473089922 GT 1 -20581506117638313540085727262.8249591568345873821152626432259216 0.6243755051596977924815367647698977 0.0254148237184265394935345620538127 1.0257433587421981642485600437344760 GT 1 -2677588920134456889.8070849189397725122918568630580512 0.1563501380119736564716707277238737 0.0718271713329264995313815317885606 1.0745373257482456704686559511431860 GT 1 -7442182328545428206468.7288657710347040987849347741890646 0.8591934338021542302501858265242091 0.0559989325289462401782695044105018 1.0576279820416679162189947927546666 GT 1 -256194.7501811266655043705265785090497603 0.4536738512963853120493157697092162 0.0258394825996082742810210389021141 1.0261791866588733635195644944620267 GT 1 -82241831494028232060.4807125120807100930731642567321517 1.4554060999639204010381563332526296 0.0231638769691977936846938514772709 1.0234363758796573236510316232679364 GT 1 -4967571357200.3482635049416268817596551165004876 0.5855973267943256923125200639738227 0.0624370151612078473104400662029867 1.0644713395662585074810407211757485 GT 1 -301120143506194169.0305277256209399031614128130356442 0.8268720983721998487524456718174882 0.0411686994140274461440920477660295 1.0420401313707284532867981425418433 GT 1 -2657282.7645664202978021343054552124637950 0.0619993983531903580916274338322586 0.0105868466284427665272030392046780 1.0106432859858548551982014492590011 GT 1 -178220859.5469128564375915201901716140868111 0.8195333717404980776235214831668896 0.0555197116955671342498108868286426 1.0571204622377790947133128672139328 GT 1 -362000613794414689214210038964.1485984650415189244607584591187948 0.1280356359458954624686098555211885 0.0605762778418957252078077703821835 1.0624886532510818769452845062978732 GT 1 -8396190565468128939122481055497.8791173891100103275628090749975766 0.6576285626384695480885609596603755 0.0670328424889736817084030086106489 1.0693852797071733973993277962425809 GT 1 -933239308657154744562199225151671637.1847794005553242182313751604449618 2.1677179130507666261189011144609295 0.0569030639901830089834668292414849 1.0585862062873082504430453451632849 GT 1 -14358.2535799947215826539550461858653051 1.2522701532580186800312872191615188 0.0579346065452170070033457183490376 1.0596805870118380628844245228658684 GT 1 -54692206543167.2794463423052868650862403196147497 0.1535814846156786796696476805928233 0.0735779142732815312631602808280683 1.0764253320690014518402892330738322 GT 1 -276463997087928769162696204321178035664.1865693072631311410052861852217198 0.1000901541277341497269281337565548 0.0041254970852707122676750283163229 1.0041340304259722137292079791800008 GT 1 -25853.5529812411340307752273920746775522 0.7829029251013439989138631624801524 0.0283314314790246316333967249587339 1.0287405115561025908082054560078883 GT 1 -5969664081146804045658400982.0501906267593966379826207324447210 1.3783601958349282655820885053774481 0.0326818513973721303015369188822703 1.0332278318455567190558370360258520 GT 1 -42148635.8140652045080847170196799763217911 0.7627584444074140657187942189308419 0.0449458286259734082073134596354971 1.0459872161582890205183171178408140 GT 1 -832322430712233.7759265276351254569231967918585658 0.2529801986190519708439287845747512 0.0433947595923012205012023107037480 1.0443644695911099514646035204045973 GT 1 -18066633717352621601258813173067.9397864515408486726388795131358776 2.9311285989072394740491702818696112 0.0267190937556753428247575855003793 1.0270825372862185523221449690129944 GT 1 -105806236937.3323754350016764989400861652568464 0.5778181619301454395378442537518457 0.0080150137652234419308186386370635 1.0080473066557724096245843218396231 GT 1 -327184546538.7686892525333018353172455902144324 0.2471554957350313124008026850876410 0.0916487079232594759904860074398206 1.0961240896546884975152087963523761 GT 1 -349911362909630865063655559350688720626.8403785920849721529554733292223371 0.4101319686302830198353079330128472 0.0813533930430988161828950645750291 1.0848537714333637611960250462617489 GT 1 -1412811941773.2491354975387880982617543478593770 0.9340699459308902146883506760196996 0.0144483496339754735776529948202908 1.0145537434471340260491455483967833 GT 1 -42069182947.9077262274923937465852686589870190 0.9233154212246758371439850334875059 0.0551593684921223674223886880646075 1.0567390096173847694259083677661751 GT 1 -27456690997113008470158435269263814.7232389295371355127002231604681283 1.1547520159644530913926090231088217 0.0586526681338232329037727100279790 1.0604430981850333437249465830450755 GT 1 -14842073278504737615889011.2598414287120700111670422522588973 2.2150874786507682123072814365109783 0.0088127811326014850966131543068559 1.0088518433554670952309099074533185 GT 1 -13145170331783173589032.5580157087364223798859663422536954 1.3119862586060189499524229336910234 0.0245594234505767119255752488176659 1.0248660366642980626131147282453374 GT 1 -297.8540233775505181161345381114194539 0.5184680886080432608727162806750159 0.0085022888127832879081480648238808 1.0085386394594271599721974052706920 GT 1 -3055332663021101328802683386165662194.0495746978202806043690852365508776 0.7456791272858187405412355654115308 0.0021308736872441824224727315733499 1.0021331472289072507474828265765411 GT 1 -1723345674348511490119352145147486052.9432554856549517036019378781005687 0.0452999897757061161340403596918163 0.0889201465746013730186219854753991 1.0931247308705438465038713296756666 GT 1 -269434550325774714611.5508722108820459750309336092870124 0.8218914665704128849453758180602605 0.0366621779533694670250920344762995 1.0373511269906483016270806732632142 GT 1 -2456189104050591841698.4939129830858290802773076149966654 0.3738367614697519808065685384357117 0.0259651559694906523662622659350662 1.0263082018208480770141335569942662 GT 1 -61483020914723307625888618.1465747991899851183600298345706229 0.1324875077967869477102801471911018 0.0249770518051459233457408987821892 1.0252942716511647916447172922356508 GT 1 -28070549.3399478028594772224109438004117567 0.1979494616521600854168108149034157 0.0263447308851120752870244405139883 1.0266979711356533520968225248429175 GT 1 -5600794887850474878660761078719060438.5873283322873829998446933617950606 0.5101375858021313798616357917660931 0.0699270824875129845082347923099939 1.0724922899810141067696274510837895 GT 1 -2125647333609150747419926668818.9059391908314449496489204696340492 0.1908997223944485223381591953033333 0.0667241269752931248149614843106607 1.0690544379985157220616966793321633 GT 1 -33869839532337813179773529.9077501397131436806636188384860984 0.6646771060942181223808070953350868 0.0953153936012862360967049827931506 1.1001688972397634260159134364302693 GT 1 -7586398722739557.2108790206514154055697134099183490 0.8688611933956559481606671288970665 0.0231537381655773561138167193102881 1.0234259967067691696567102584403164 GT 1 -689554357191743.2691647811916042089158890208221518 0.4114107746216829888591690093429081 0.0589904211850002471184653224688546 1.0608019600489924958133912717113580 GT 1 -562489931308710433097930956554758609052.6497761051936291986890700070391949 1.5114668990875554217485616068820150 0.0358068859859985774831020745059870 1.0364636786934479332855637360017586 GT 1 -43600743301659869.7942681578272937257563326836467622 1.0957667272927642543731647037748675 0.0555081352530834052749328467100787 1.0571082053683856799854112786314834 GT 1 -12988010340970942090757291809.3516107036083057254684224102049296 0.0135264255340532171859013690697244 0.0780450892462399637269257119760134 1.0812589603591573754572433085829314 GT 1 -13078066554293327.7268577673341769850650850240460535 0.4013305570608170188397807163843401 0.0022782771664294182861165451153287 1.0022808763884354864349710814374336 GT 1 -278916264120452330391888222648139094606674.5783951326764118076544654784292493 1.0420265863054717116964307323027460 0.0392237368526333839053660280445445 1.0400137138219536610961701010105261 GT 1 -6997538978055367685.5416618311253859269065745855042889 1.0404156448272488484389047749787555 0.0063494090312688302758086699126606 1.0063696522626561812273641086819361 GT 1 -5283654162229180954997947018316623504915.8478994899848927526747762817502208 0.6643042596295605875466507560935944 0.0893824186622983901440797980572803 1.0936322488466885413169186324724537 GT 1 -113.5201813443743334879873820876298090 1.4915998910872485763519905185037303 0.0912717174110054878526305634747435 1.0957091485338711526465906880686004 GT 1 -182793.0394619779624601197177974228059873 0.1988422281907610492372080711035455 0.0607827557439645837373271997120771 1.0627084694976043589078536058955232 GT 1 -6150820692365357399855238679343222.1236140198813038135055099590256924 0.3294191637632932101007973980771453 0.0011685814537058832137282466654770 1.0011692647774110015095252367702692 GT 1 -1.7427676580663172741759346348015290 0.5773551510562913193124017861392110 0.0671572318938510881265055663385165 1.0695186152665504303721734817087066 GT 1 -79336079.1301202795498725898848422298270348 0.7181287708811598066514726112081660 0.0125258448961732574584107687698178 1.0126049545961118387718042679904746 GT 1 -61380806765586290719478412341659982.8694179919613089678641887784136373 0.5010241465604790939775522275865904 0.0014371973204801960303086239075722 1.0014382310791446990833114579311983 GT 1 -70120656.1464805518795626248699478505888372 0.8683256804125802245825981703750723 0.0920640335763081064209306837707840 1.0965814244274165614125530646129404 GT 1 -3073328118457175934628265.0344587039656523807787745416813031 0.0038691808267363334988610053672944 0.0838654973888276526925139907853700 1.0875920881757307034028829228198750 GT 1 -6257504305643492224253489525216469406.8114169314974114214630938458739577 0.4546033848639265294888566363047458 0.0538233824327372528474123131019135 1.0553260280252654135590534810187485 GT 1 -1027803456140964016961.4977498889063618256013523421646645 0.6603403996411921444992190908107725 0.0260550948977649978600911312648354 1.0264005425429508552097743952163021 GT 1 -35729491061322.7828809598099995304780739184111504 1.0955416549457219725636439039344408 0.0743431326737952957518377637964429 1.0772516666513313921318451296746668 GT 1 -10883792750431189115772287741878334362734.6525865797041351615997650026945305 0.5083563393769547598976777184244382 0.0533980066356760842749279955002746 1.0548765556973704999957949016307684 GT 1 -159802530494852669.4424383579100844927861010943951679 1.8264055698275258056072532498510282 0.0542097848636583457524599232660224 1.0557344944207797190147501836343183 GT 1 -1230158651.5397135180470222892289606252497289 1.1951816923589304680132278159848170 0.0429780737685126557964448438751874 1.0439289763689836230111747288778975 GT 1 -40.0794754730651999259450640887446694 0.5335981785138024408102654917315393 0.0494783657405554842957804164507413 1.0507443563874350299906834547408339 GT 1 -340670070486873252976600706905.4300181111017178472095855049982515 0.1022677950006218346057227247794929 0.0483050422101521342473227695917760 1.0495107180266819029349649601290245 GT 1 -2309064299663664114764451132790223410.1296470088856007254357029418357487 0.5215281442821918447301488516810908 0.0289494868723048978186220550376696 1.0293767902851995788184888400641679 GT 1 -355410845.7227890872259793594161220523866212 2.1166986868459178359340212595595094 0.0376814075860534391278613855445485 1.0384097059980021666431080911972878 GT 1 -8546.5105313964291419802645364199064212 0.6083503812133396259698159784481876 0.0740431108538091721146157234705459 1.0769276014173558588422749145183347 GT 1 -368262834670232886598191856086.4595965264381686604855142735901976 0.2774600949486574471260816669304317 0.0571292967383597920540012318375509 1.0588261178791628098425399407702154 GT 1 -104496396329212968725.0023385249729703264039871591310718 2.5593843413381997234343792774166030 0.0975500211982099787829022042263955 1.1026420154615026380516958970783443 LT 1 -335065763389899.5285927024066128568753119908922412 1.2091991556907979837487657604982423 0.0555188442418072054291872222579139 1.0571195437926063195272421760051424 GT 1 -5639287198422.3296191054936844027693784202970287 0.0519751916798878630849187516201308 0.0688568942230061130149801733004378 1.0713423016195806883989204788151478 GT 1 -7038020679401005.5037016222404947510877415386631595 2.7020712584187159200415917394989926 0.0192064436309255180737288701628585 1.0193932835922906281507872283447184 GT 1 -5377672854657230898080928449.2318695209236912287987910591102571 2.0649924854386766636815161469374853 0.0459046990932189894884443077639798 1.0469917163944352507673873281147000 GT 1 -127333043739531986870920474532963065.1387566405497437757870557470852339 0.1046055380449995585983411348602801 0.0803747627605150557015689829235186 1.0837890427555839406682892561023924 GT 1 -1282109621.9031938477466020461031894074554500 0.7038914074145787133567224620724782 0.0450431179518114065176759610368085 1.0460890892084452723077542093402075 GT 1 -236345818930632939076494.3203981853250023227067602988291428 0.9967981078619879018769333196539860 0.0507691816798218513192000671226105 1.0521032872693598565588522911659908 GT 1 -16830.2300722642587168883316810334359084 1.1483449949303364630680926850438296 0.0934738299831845860121814117804777 1.0981353799079508839286326170751841 GT 1 -340431281733790255840645638552738224.4539804757793635505837027665693164 0.5581572451170439816895334930092031 0.0610544313817114230871067458880297 1.0629977688467123029839388676302734 GT 1 -1111202979919156314256908.8781315599059787027755704935756568 1.1155429527812337220820933409475912 0.0188300624906459418585888556716674 1.0190096055615105943454491410598597 GT 1 -189904492792790.8097853524050024070762325881599907 0.4295544723336864806351512089607742 0.0668667294713124830144573027133864 1.0692072474688179854305962022619776 GT 1 -177.5971183996490393556261878075768956 0.2788171443616459976150235427742367 0.0014217223056134466082910469884756 1.0014227339116995610695567216798887 GT 1 -72246669463775135742243606370505.7932193414024530454839550648706981 0.0218026275306730128547053821374003 0.0938503720196283769509143232187315 1.0985508342790809365284195058355831 GT 1 -143539295729609631206968019.0774521298205915612119773656605841 1.0351414057337239721415080913885308 0.0352047974668197622015641288222939 1.0358394255203556710837395262581603 GT 1 -40138383345860474862024089079.8200915532014498292256073701639790 0.1939107100500365623561721241839089 0.0925854192009544855315196771197979 1.0971558431145183596935880185179531 GT 1 -7245070719.4606075370482669167544981709088242 0.3851622299586536810592716334938789 0.0069603501281718539958226812566690 1.0069846863566503934835964508801675 GT 1 -1137026866126645104641028454325609516650.7643701586375482183358627144105161 0.0904784723531225675738727284461223 0.0773133965880039324156616379349524 1.0804656434019151099257400720881465 GT 1 -10086801557381947042712681291871.1180863396646931104397628037440148 2.0562555883415672583113646639374528 0.0167723834163549763786768762114400 1.0169146326548456558872549182785554 GT 1 -2450247309086.2174881309631072599080306316409974 0.3132253971078844399211382003918656 0.0329223586471188642097531103833260 1.0334764957976133501804874040127623 GT 1 -545365736822784792462809107492158926380869.3207082924974306401270594618721327 1.4659454753921864596436356811360091 0.0642573957033821558739335331345011 1.0664148357323123493879155078454026 GT 1 -1882.0783495523137432195012883848568183 0.1198267191022813328944868730346301 0.0495859064737422369984494033251626 1.0508575014367174140732481531320543 GT 1 -790012426079429489648185.2387248701446440187072225036875928 0.1003475240333082609159838245169678 0.0205903638215503299787771151882195 1.0208053009033773930838946238050646 GT 1 -3843024604547376045351731047964.3580818469740525614674606578783218 0.4851795342258884776516070566440322 0.0357237108672541403138598828640582 1.0363774184513509708964041381741965 GT 1 -114549697289604423193819973919.8612770575190231333819185178642455 1.5082883138763858131513497851483583 0.0549765148904613174649079393900913 1.0565454998294335311893296336260187 GT 1 -54871544150543.5333666485735992068450647072085277 0.8327355342604240656292450971325692 0.0858996651901019991832470471793432 1.0898149380497059929072195825466574 GT 1 -808397798832032625687.0455293574256450602965254777877500 0.0277707585399483606245243834082137 0.0257612369937474177398809966262378 1.0260988688239308363558471610000283 GT 1 -262511461562385349399.7307632724082408799061244081271836 1.0061080574760896228861049397964181 0.0346585737142465508475761915509960 1.0352734305964736660446616988070939 GT 1 -22647304746368417.6736714352978930893304398967752062 2.6046353960139829665489486739333760 0.0889988077818344641882665205570550 1.0932110730313056098527887986938926 LT 1 -9940800138725184917964522670052187463.5240777334812201834669604063438350 0.6965239424371798988427531318158345 0.0022826343949964322519313858576296 1.0022852435761810471485710832641636 GT 1 -84244932158602242191752.0602534084975491683595878035871051 1.7319897860534947307499654591099903 0.0606493201339399641916509004167281 1.0625664085068511110660258228538675 GT 1 -3302170659.0697739436661543766161493375040022 1.7599458414314982326139942257512214 0.0875863447268385220919163347266115 1.0916618223608367008137961114544427 GT 1 -1868481565247.1710197400347539263659930586614986 0.3313681696818123975198945616012089 0.0133263446985597207997704397756653 1.0134159372814414828839434759121088 GT 1 -96056106618552800966147233759524351100.6123275798319890904860417355087635 0.0785479646300209638131824187011670 0.0858658082145550320519259293595064 1.0897779001587151819842366597716936 GT 1 -2781838979563185214252527404.2544040463455601056157504221158212 2.2231242802034651926730440863203774 0.0685073450743095914983559990386969 1.0709669741828647855321079147783522 GT 1 -37641760059971.8944258274157892287845323301628142 0.3884603748298343289173496600373939 0.0130076285240733008431741325198131 1.0130929685796117890728267752019910 GT 1 -13994142755593022.2008381288322624417117356848751298 0.7930150895235306804625353619447179 0.0421209896376787303978570512066800 1.0430338029720842381513351483998792 GT 1 -9650932105678331536895856916.9476865401106499282299099703279698 0.7419953763641253510461824238647833 0.0568253208800077210475221235562810 1.0585037758360458447116522868281174 GT 1 -8255.8898430278303310375694816271406416 0.0581502621095412281793247901059024 0.0307285541670185979552644672521405 1.0312105764618157415017711327048502 GT 1 -1251016378207108734945.4312030521599598033882651413734726 0.6957734934062582543993358485781097 0.0932578570171795451062154321595185 1.0978971658880201413527077229282887 GT 1 -46915504534836249581709220516.0059522247789674467219869996057654 2.5858773493837122609197899353935804 0.0185810918178339659675246586574997 1.0187558889721249915303031094539986 GT 1 -119111262053.3873655814794231460887213644648201 1.3427310492405998037481322963921988 0.0177656440791193722238556868673236 1.0179253474498550984378177565655087 GT 1 -110727.7899539911689686857335678297478843 1.4571812940651858562245483082003103 0.0388629545402692126186592189121690 1.0396382730411584959074455927226672 GT 1 -95870948508132547601422.6625126250081683324446232865804175 0.7286983152833739666299110805356444 0.0213608936361237482136903920677602 1.0215923393847045157554617532770817 GT 1 -273806029757034741714.2242793150664630019718651572348856 0.3571020930601466193111084201842965 0.0999335740347703569578831286509100 1.1052867117533685242019055045644357 GT 1 -8.7176019877631402566930267870540591 1.6448118873433211342380377476078048 0.0890862992366538159856448995492104 1.0933071164362128816086824867105261 GT 1 -72578388175511777470347081.0022479070011296773547228688189422 0.1941125917181115402349407395894824 0.0152298472787315828422460529939414 1.0153470125309081053257746036339850 GT 1 -39614375453772766346535.1987616620042087063684926040009630 1.2168289310886202473833041969028114 0.0706543023014693886806206421634934 1.0732744913046814218866539442149816 GT 1 -478284009283579863478000903464106150878.1902619423831911173479107107607199 0.3907884945142062717243845459709195 0.0696630026875565096401519342156532 1.0722083957707911175706691106245717 GT 1 -28632786371070.8354952751141118854754270910033947 1.4097535668297153004371150954207072 0.0000719505972828321982153474549422 1.0000719531858512236487938454276222 GT 1 -71472.3920628494893522985298386527311087 0.4997625306387074626242160052680681 0.0549057139462086808267312154776069 1.0564705828635534902241867249493229 GT 1 -577402155400.8074890742904804453883093593600126 0.3695949811629378403593023228779538 0.0442891352879651269145341884389738 1.0452998544456120153138030681466296 GT 1 -1868859193105556.2347883885090774000294131541717246 1.0408930718328104041524177632939753 0.0917654861443531749372560633267001 1.0962526585567169074235996731715573 GT 1 -679159016252615546968938496969.2216927680300875131145329493454021 0.1241797041098444434839722742719560 0.0401769284001401562807503534335943 1.0410063119224765883434261552630704 GT 1 -236816922293116867800844253321367360705.7892833204995622123906018102394622 0.4704826128601389956543446592175604 0.0698950430902408935977137995652198 1.0724578423104812978330693644628233 GT 1 -123694074624.4401015520552183300850903225703105 0.0651368754249479392678387985763488 0.0820481880807110729052583550071871 1.0856103822020723487062703356613138 GT 1 -968693145458786300.8861414811957934720055460515624926 5.6133733460728304857993445587399151 0.0816230589609820818861705777257929 1.0851473614857225840266511101267019 LT 1 -2230013308761240378827442.2734099907478355283455911001758881 0.2357422728922384622259233091829858 0.0171452531648187572971090855559094 1.0172939349260748233167504838387343 GT 1 -1.3994153313128329191655408197106124 2.1274611655389000414088153197030121 0.0587807261115716783692298132336554 1.0605791443440956722945729496902125 GT 1 -583443.7971000831631708362389670862078392 0.0152578824164502686860474333277425 0.0715604070015328705579789116955140 1.0742499590042592289639498428696707 GT 1 -631992.4343596584884340988568953661276916 0.6882506457697349373882440341166591 0.0411616042106053204781118742014291 1.0420327315526726443498760106964876 GT 1 -503214443712017979607100029158326206272094.5406431599836640586241541904071514 3.3891868716312224372059906952217664 0.0594518268039784451747800043832937 1.0612924107170455935328476897914097 LT 1 -1547944903125519643.6056718151666544132726388288636589 0.9555333882073034512735019630969114 0.0580719813079851772760867651379258 1.0598264206035331634257172642715887 GT 1 -740443153859032.8420130820113245907092465056188813 0.1646833298600964204666090025023873 0.0527308280680673842354991426272305 1.0541719897190358312005418469630081 GT 1 -11974013017.0252141646523585694908346579608278 3.7407330180896259698680381719381338 0.0587077022403584680738703044568051 1.0605015630188601442167173941952979 LT 1 -34953066007597257875933943152309643.8686887648096466848939124832009342 0.2395908782988969229199495133589855 0.0497809258393776922535652144713077 1.0510627165930510345502718309950597 GT 1 -10261668866488745621588589.8536616042861186623516982185482656 0.7972303627762580483738263821860079 0.0651371654619292129927184117448978 1.0673554614838997856055754240365728 GT 1 -3903921787471301311660744739596.6778493610737517995804713117266418 0.4267622631146232745294747590335676 0.0591259073595034879262691555036331 1.0609459500062809182591052716096769 GT 1 -11187601997574520227273215338387041916026690.4114972894826908715770301883206516 2.8742208200985494881232071972893859 0.0090795488857350638353410134829050 1.0091210192017487275715063506584473 GT 1 -1769540873090217.1597659949577993183770976209064865 0.5733743182832365985570751932771632 0.0461645192136161740808011703795478 1.0472640744112944456402090778499922 GT 1 -207589243.6555843207234038412323097727836919 1.4164565957629265316480577295056883 0.0711639068607216056024461345569889 1.0738229893844076962526763400416846 GT 1 -13585572920740385336805.6743031536443000664575252997692458 1.1300181506228831820065902655967261 0.0415676685607329902494739647633267 1.0424563173827094134037742558982897 GT 1 -1203286543236446077454341.5173435796247128069055563155003583 0.5582416250277482515658264371542224 0.0189513429392441712321834423706896 1.0191332211964742806631928542226628 GT 1 -764316638.4359101688605862863967546448288111 4.4406263573396539831227790392360741 0.0352091623521718043710201272253326 1.0358439496879866103688117436143872 LT 1 -4495238.8546713236767375100330602440253575 1.1136857997107345186414122571621444 0.0813737727647728808497619031015282 1.0848759561859988936145409015834878 GT 1 -28883051318523685.5389046419230100270488091540690197 0.6609633856144752028710025757472820 0.0008647103611327434218405096283098 1.0008650844387985039892202951075274 GT 1 -933719650637310314749401645446747077666.2054807207258446818195287120552209 1.8488250925944104937397035829725301 0.0648688913697971484817833588093435 1.0670685363898879509728723046624346 GT 1 -9921994602155875466.5620632952217669754531622606896946 0.6930331809437406869618267119923392 0.0514195351487983585026288540245671 1.0527886594137888153555943557112020 GT 1 -1090956489137554412967546345860465438372632.4211169850153153877258236437384020 0.5791837433517864279296957520221578 0.0214723163752373253386918858440520 1.0217062006455882661976892056771329 GT 1 -96985024093063392349249.4809241773546913215125184621354150 2.5762046344489032529436068262389974 0.0097561096486701214983268515792190 1.0098040123034060187465125845735441 GT 1 -288704341042639256311685923504374731184320.1844409460792511900095188395851371 0.1485954208212713396138681768955891 0.0404845579074254092899372631616278 1.0413268697685521086281138215786858 GT 1 -441315007016488218581277284697181.0522103727262812937861914809287054 0.7177527004965405208800000829263852 0.0706984234715317472821035662727242 1.0733219679514690657622200446218314 GT 1 -13249515471325322047972.9689788296173360905529247900843960 0.3640836852304480223091074811019255 0.0341441041761796137018383950304851 1.0347406320633073739784509277421708 GT 1 -42941653805131047625569941908641846.6224699378302267038726449989888120 0.2225932378275161429160998013182780 0.0367143658215147405131435223054100 1.0374053024632757249014012411301255 GT 1 -285798479243646644598396863663725246773.3398877063020522225289444515598740 0.8687835986884533292183014375568985 0.0928127572167916119428589180755600 1.0974064082953443595348897315043794 GT 1 -14682179227.1835674962007741197250563399175026 0.5173739088187855567601291121910405 0.0154315045279799255653635091811756 1.0155518094561481286320514033658501 GT 1 -65285986112213.1263381288529853460970529340309570 1.1760480848144657268792630347235898 0.0739495614164491765185357257435336 1.0768265765066669405970309504622889 GT 1 -62511480143.2011189347090813805709566320683666 0.9382545637522844421209708340555416 0.0426186504949062610446616780498417 1.0435534825716370891571938118304771 GT 1 -60315083635696899102557318467244459942145.9718664759277214044510314749339937 0.0889108323736766193270031708446003 0.0934549919807875666215881253461406 1.0981145996952092053020333853563816 GT 1 -43156499528474638.8894443672660138512825217165099634 0.3785746423974132146969625112132054 0.0095872878326856571364224011711017 1.0096335417471484421958910771929719 GT 1 -12290599710993444754.0151800297708199946419985597853481 0.0452691232418166599824430486056013 0.0937469034205992009710839771119339 1.0984366559038892796630036670872562 GT 1 -1054032214912560820.9703781556887919805620969345966285 0.3243288353211306936442847176648200 0.0118545256853012289676527992905037 1.0119253508639828550856855436484527 GT 1 -4580195921.0483813670353586736503364832697366 1.4495490039513543585248716102491125 0.0440393852800050605194365865978335 1.0450385647710334251355081294385554 GT 1 -2464794804592390970034053250.7275813618019341400028244346872239 0.5732179369799229359850472044169525 0.0772108608698732930502822401894643 1.0803545222250039400569594360568534 GT 1 -2961446377855083278205804466812773847019.3007294189743085300010029699513630 0.1022666214116352758230963032481243 0.0728959142456422200675720707969632 1.0756894373523145693738561214904816 GT 1 -391015591010.3255157670081727287448669509435595 0.3205336581573891884632384674607904 0.0707118820201258166587985783475004 1.0733364504901746995938421248882296 GT 1 -1116479274808019040794750746.6532432868253106725677603496469813 0.2323419774439345486135524225118899 0.0016955480234687920256759754408388 1.0016969870919219006297903300573697 GT 1 -7575789.6762946883419690388865542033153584 2.8538584645117156840816239278491673 0.0804684425404233645657060824469540 1.0838909152878871530652919041519364 LT 1 -7554.2404365476433032927212796562658577 0.6916856372785468193190143927844663 0.0332858289151010137618475179301420 1.0338524103815148819944167059423890 GT 1 -325475.7621563240536503262566748596305771 1.2519218366778769591802928688177730 0.0976013913818905030832921480812120 1.1026989401077610055546021436628867 GT 1 -54218297703677.9840624117475322712035060970902132 3.4641170461874581167292471612721614 0.0388400836977455743430720977647653 1.0396144777140267774819720245119201 LT 1 -11556980131529213901.0551864999898881744182180525489130 1.3812926696515372648478859635691890 0.0574588995502769739812291723988955 1.0591757527065528250328448621997965 GT 1 -30413392600964274821169973719787.2995135316650468077877442554379072 0.2538811916704851634738087467106853 0.0021064434698220101353211600565583 1.0021086651423010496085652103211909 GT 1 -600692749192594760821.8959047517975795024571968996075474 0.6164066563993325911704355728983303 0.0259849382588391895777924268631348 1.0263285116592055096101794447528334 GT 1 -2489111810743405922919742100870253842797745.5790294020212939483173500498983653 0.3790302473533789598902972267965526 0.0597595767753289669807990110331000 1.0616196670335532340609450658019826 GT 1 -2.6802040836634124752792100599574270 1.2323209123171214326949996835202357 0.0861234751339286896416767057750378 1.0900598097982298857714030313354412 GT 1 -61883780084072.8029015094108494031266109226767976 1.2294752838154546565063599974097478 0.0442139537938142319572340059528885 1.0452211920174801828414002568739993 GT 1 -7516724058836777580897170797267.9011394131472044696128424440523633 1.3539271359377249761517188994102514 0.0153446573818740256422199371798524 1.0154636050128722085137379118196408 GT 1 -12.4018701325461121029190181946437515 0.2131030707667064352925353268011132 0.0817245565818567666953591724735394 1.0852578860703820869537808583543919 GT 1 -39363495139819961790936575453335677157.3813589464462404615636202769636241 0.1869040231955595391579995169218876 0.0065728316138926018413459380588263 1.0065945277940876573088523869909666 GT 1 -14.5128609127518604409852840955074010 1.3515133762957931893924575693731674 0.0098097373180131552367396705476983 1.0098581697913224970372950691428137 GT 1 -1723.7991632713486440965784319926984168 1.3141910634020666617856201658360819 0.0719816370978251416068081349566525 1.0747037587816064338957557846456038 GT 1 -63584450800.8422403021430656516372560770123860 1.7388376094505202492205005695862806 0.0978770951252413710060451946911964 1.1030045100258081264555016274577577 GT 1 -1063516795591838138186199159054552573413217.5867034219794853061418593459915350 0.2446912220374291417588536881436698 0.0981279654802117515824745632836782 1.1032826375871545556798795707874637 GT 1 -105740741606461061438881885492.6445253936281497374149121285308646 0.6055902196442505891400638353752297 0.0622643326780260744547451995747265 1.0642871742510743106022039220903933 GT 1 -198684443149228816654426502614196.2371085564112145584212107514677023 0.6540918158970228138289455371915471 0.0869508240798407568746260130407136 1.0909655379316895023656356726802321 GT 1 -13497886307734.7629362716897270027732771504013004 1.0584173137226029357853888043711152 0.0833825205909119495887859783617072 1.0870650372557654951654527795299572 GT 1 -18359623452490559598955672300143218.8444218744032236790752806608791117 0.2672069470764296045535291102138385 0.0851975194466903174760631229895850 1.0890471052572685429409149813420909 GT 1 -2964344854027102515638779548672869903.7933481047461466644329231022285889 0.2537458017660916252488323547941910 0.0272229201103361688142891434176017 1.0276003290164828578346133284051023 GT 1 -41676.0979651051445278768487869677770818 0.5083963532354619217427764334006451 0.0127512486374406690861583443430489 1.0128332435793491680113229438332763 GT 1 -49597328012267948206228.5940370614923457597292018258808249 0.7456938505707281906824892947146589 0.0089116740256069468684616881470911 1.0089516204962837100047984980422926 GT 1 -323598925284275111360544.1271962756804546989751923001543801 0.2396858738262453267845023462148215 0.0604659594762302091971893940597111 1.0623712281891849898861953308190627 GT 1 -3.3672963172480723141903812818595454 0.3376643207820332045323481239505561 0.0815523770868416139800259368273220 1.0850704005439293475329246794456427 GT 1 -35728460512201242836324.0314302647683829791936010148277338 1.5006093180831121351231472561781879 0.0694307181454377549021107811838800 1.0719587490842001839811430819333088 GT 1 -906986482931106111435192407798.2732935761419165354816993861211348 1.3511996358115716596089400539341947 0.0842498353028804472115822404085065 1.0880116974737950714961436975611696 GT 1 -61.0523073684063405742852008985142887 0.4114551529518896880875293046140845 0.0047299087990772563862492741745730 1.0047411302158686854640726787970670 GT 1 -16168537557515651424211984498111374224371.3405538611219950272010209551317353 0.8788619122131733643431213122336239 0.0298023782004878619388706169249958 1.0302554944216935817195221916432928 GT 1 -5064756740256068159328478489863354449678389.7674933756413373553456042021327885 0.5897380514557264382137270940466852 0.0074779985070159855899909488247509 1.0075060989153751426316828460181448 GT 1 -15052015343081048.2668015058384391819599336141867586 0.2329185367180244594386132222276606 0.0225062031833573298573237248381416 1.0227633331103809355266345064223486 GT 1 -42419741326711714221623152284311563839.9112531199417199104779942364013723 2.3888925571439136677988712607139454 0.0789767021160683617277167860490157 1.0822699467558621475281518994334620 GT 1 -142416109013672844.5102400216706703321464432766928823 1.3533790129872645329327167606567638 0.0247831904532685771882267411869006 1.0250954639386809028706178835931567 GT 1 -14252654237825492746120289912268.3487586465503859955463763259621605 2.7443806603948422185926839693449023 0.0456418685775902818457598784823420 1.0467162781648845337122048634204858 GT 1 -3931069627.0015852531510776180602186332606955 0.5340856733914284230114505372938108 0.0202545864193476575329990615186675 1.0204625231272828618796593999043666 GT 1 -2764171835367701364.9191838088578999683712288462357677 0.2524527299923179468330331535846633 0.0486391704055126839203052872408222 1.0498618671637790557883235169702901 GT 1 -5.0449011103733386672772275765948946 0.6379657448283782980784673937170419 0.0513090392931351609827631235554794 1.0526721807125343298370528043028043 GT 1 -5293241438651292636806.0776403162889396101824781958153182 0.4183884935621079420085543262655412 0.0864947564736832237246230408740627 1.0904661631407939724959647263484419 GT 1 -3428969997532097771883476724521216497.3722176592647652356408970306800259 0.7425733571989474517571290234687740 0.0252134128212026196337986979756994 1.0255367168879188218502769104395599 GT 1 -730071549100312682.9348162307541827460491422020928575 1.5049818271466424673383107325719564 0.0158305408424491331421012553978384 1.0159571821661070420260831408941248 GT 1 -37373051742995385697575168016800744.7970514421532037644137144601770478 0.7946253579765659363420303077359237 0.0213767238019415656337355092125628 1.0216085152086095783879449415486816 GT 1 -656304641264911772172.9247170841294062160526238607204026 0.4335618187353112296289682119327224 0.0849918199333408713805199594514196 1.0888222737830150841810976714559239 GT 1 -15382412279919226796218013420316.5589614199061997877888757958299641 0.8190719988139926582368908389597868 0.0476582873141741380503239268326011 1.0488313666981273756838469505348536 GT 1 -8.0713094076359644600954039453407701 0.0229536553196555710130666637456758 0.0247286396025399741490506082606692 1.0250395283512895811784427425502989 GT 1 -435771752706887562.8575049403003519312851446717861287 1.3492563990059032590345676838434504 0.0620284054337509756231113851610858 1.0640356134128635798988066974364499 GT 1 -26774928303778.6710492374713723529782582652419657 0.2765533443003007813999187783378706 0.0233588325845723132207566371442003 1.0236359744283327801709288392613065 GT 1 -1.4690779897045478894395646160054132 1.2229080487428563777978166199783385 0.0832554615565027966618666236657336 1.0869264295684944350832131416292705 GT 1 -14517656159654562903143494620.6908669179186619056190988372587342 0.2660341574711224774943312649418152 0.0377609532283337606237501216953159 1.0384923698171635177403858763931718 GT 1 -853672639653363792840506351688.7795794130661651716738012809611113 1.4844704356248240157324276332699825 0.0382578658250548138793100640785686 1.0390089160419300413001746750600161 GT 1 -223378171.8217772475532909613167494926080777 0.6615299040469529657549695092015824 0.0709811785701843622624107723196375 1.0736262804921325014018615908664210 GT 1 -69282.9111381472507849736405974584611394 1.8269862883703438938264221491647968 0.0461040816448000113438901944661451 1.0472007137423202106841032791352479 GT 1 -3945.0743073065961719217715662099917841 0.2415597648630157839001471898163464 0.0809067330414424499144697186928255 1.0843676743346488687438486802401207 GT 1 -458824058675986909478815507172042220051.1585701210638495821755665345451298 4.9566105513096691984718614482666861 0.0491902902932543734555209318997538 1.0504413314039994335590728035686741 LT 1 -12.3766669982196076013416029493712127 0.2330232810740033271491594214056492 0.0510750437153470607759786161496382 1.0524255601220566971685633430740747 GT 1 -24979616005843221677118660491570959903365888.0596910336729761865681017734701920 0.2819393763925385785519750648068049 0.0882552635801298637422931583037620 1.0923952223619774263349341676632564 GT 1 -206632326268120760335.9313134085889538382744015759604007 0.7873985774716071746547274240546080 0.0841025116785984715297857461590720 1.0878508328835373488013784374337253 GT 1 -13074582305838054486.5290887652429535861240762049684721 1.1255093722945628465197608968855895 0.0832605914690846689005263342054876 1.0869320253770537092769019440504014 GT 1 -203991171.7439795786328389662103926466625088 2.2329706310367332139770788771945214 0.0764982811028446709214316884051561 1.0795826180590788354785587945630791 GT 1 -180190832695231678973653760.4684813221720699172409186618669055 0.4702134890838129288780555898150499 0.0417288367470574001151270017340810 1.0426244896505125105507966900825717 GT 1 -44157816241010.4610357623967233606151738506573891 0.7515985638856545540482902007404590 0.0726073644880157506086815042909081 1.0753782480612836308016355927614856 GT 1 -68821998032065818016014352883730753.9161162882910011700576464894175229 3.7895393153284525973629694762646610 0.0394888758937203688889687395481247 1.0402897152619559337102979017046131 LT 1 -96157820990167603955781284677620752366379.9816403576755466935977042034297604 0.6681680554113399418471594275708662 0.0098551807437293298594699894612691 1.0099040644746401033746640661434613 GT 1 -71868981255582582.2372683560211084969663764535437734 0.5583581649768911047104687041205625 0.0242923882968196443161783784051896 1.0245923156245204760254158773275140 GT 1 -2286455478875815551.7815876598338863217880564454295199 0.7047649206976133404541362513731560 0.0280953449485925981707621078048374 1.0284975708438825995926039715800355 GT 1 -24385613098961622842369525603907187278882764.8407996450541721389003986018528458 0.0590081119406377694793692463609768 0.0155235674171187302753047800283573 1.0156453196527862849293898813116997 GT 1 -12623531375830776.7795461820583219995340449213945295 1.8872714219430253366711352322948942 0.0345257917327093293852392571724287 1.0351358908134199821831740278442503 GT 1 -1563824629441244522.2123622841419869805713307771937758 0.6689425321982864560510076310656203 0.0502635602806443962484564123929038 1.0515707647532548266212834638343754 GT 1 -749516157419034589022539.7457475585754922173861122382917924 0.8932733639399727935136639553514553 0.0276513609011333681411386022941519 1.0280408566323006720411117368126736 GT 1 -2052524.6837709428282789903740879822232353 2.5817409319987270986708852888747553 0.0747369049610847187977037018192536 1.0806940250345240284079338206975553 GT 2 -1250040217321851736901993544681150.9058295519534686124074707683898713 0.1741428729058347490421235158702400 0.0046454815732480551058387462377455 1.0046563053569058341357808002239401 GT 1 -862942876094659037073.5344681342933173262314208980663547 0.5612070217390167563134893789334732 0.0158640227949752366793420190730499 1.0159912032605071139455795276003906 GT 1 -33376072435303313048604.9822015823977051547924760726748994 0.9725182920005907882041912959546215 0.0206277417291120519832619718293502 1.0208434653439127868269132732700559 GT 1 -13514123447893687294190018198417269183839.1694970674847425269265949061197847 5.4592176904764327439996153419003216 0.0671997778045775451235060328519291 1.0695642251832976374429793199709452 LT 1 -7548803356064702700122465187124273808071.4647386938696270741753395099826292 1.1174765241341814187417422391726251 0.0598680517033662927423819822083938 1.0617350430407745018082168138147847 GT 1 -16405561.9066205419291820791098536629212692 3.4373719282597561554188761556038303 0.0099018300210671650920760123593017 1.0099511791748057442899253947391113 GT 1 -40560802911096373686637.5980586802046287847496912926489930 0.4007997835901057408803289953917199 0.0409572692831121548914985508289512 1.0418196475137900653160073542000653 GT 1 -53953794805.0846558317187259562352561591323913 0.1207275329367829038645686671973064 0.0383166825144699680320552926599274 1.0390700743149296120345027160576247 GT 1 -2719516497966663992125811949537.1061835615038984948085987476151872 0.4660762177940935389414221983369921 0.0749859711671135369796019083756563 1.0779463752788959085585489592968641 GT 1 -29972658.5976798243773948082063389819042190 3.0473939655707324216561761778562758 0.0301618758881980993641253720513262 1.0306261037700859288941013744605645 GT 1 -3965993232469464806938036989550.6367698399967687064932710220322228 0.1584068584400120269841128726689129 0.0924667513436969387234874239863969 1.0970250758764735499059404995081859 GT 1 -452899207610227236630422820.1359443785186798620399442513481126 0.3226590596309432223893494282398438 0.0591007120243695901474691850565959 1.0609191717178908954934783239745039 GT 1 -350365357132779868.0473545810022684647180852458808069 0.1085254822984125661282988578488840 0.0735177474316582396511742470709895 1.0763603887900626151072299785239723 GT 1 -2440254673814156958196482583.9524839557867969892428665598662667 1.1659383845260502885601505933446385 0.0956166599684492762819660578394301 1.1005019597657370750168005247597360 GT 1 -68509367449331398615592260324.4351240728144398438456206747323539 0.2013217522445351011649633933160552 0.0016043987415621325580372160002650 1.0016056871675068146884636161781543 GT 1 -208661573419746730990506705905253444755.3671989097925842627553675212452748 0.9086311168887495171953969223972015 0.0314472722987598874426650473012802 1.0319523549724902455735823867388621 GT 1 -3948945114148410646792057124116284.7066314955040583305259204539922204 1.2216151605189775113352351005850681 0.0955101444319095431610653540224582 1.1003841897231249553561813410354771 GT 1 -9223215158462655287676413760018298280125907.9341033616857785810980894044208011 0.2417176287678328135655097891174368 0.0456135209713921967606613511476983 1.0466865752847349772021450833829017 GT 1 -38997630120773725913687085557308183.0786196945314080715216297936235650 0.2861004965983322729653516681689402 0.0899172256131996326181124820683160 1.0942197227433141350917374990011676 GT 1 -155449472888.0842945818362223789812995525944176 0.8769053607114681416772164993311630 0.0092309629512094344248612241216059 1.0092738323106373204263038631725127 GT 1 -324253982070419093809932574222.0373086437599885539299606950314398 1.5866059137800431062117623121574401 0.0936539884996464754528794566471651 1.0983341347003645343861728351202190 GT 1 -399789017775115957802.8742053652683002586993939963914969 0.1014308816270245430010190083227568 0.0382256899187418223921324813336753 1.0389754607456032822663234974296635 GT 1 -6157319383049750.4630017575516175595482205100878972 0.2970546611814538668212623155560545 0.0753362749579171080891075730735028 1.0783251480616228932523386065373006 GT 1 -319972901181501.2229265512989538754920218949054182 0.3808021603251125365736906772158769 0.0553440151117788629334260129944314 1.0569344549213265701784125198837364 GT 1 -4464035458164560760418627.8106092538253872672063884692596298 0.9118810305342565305553374572711374 0.0466839676547356707378177330491784 1.0478088118906062817960213242995968 GT 1 -5588499376125266944559766.1584747571200381717256941198361260 0.2044268187851562175882592081809059 0.0428443881131426157991805566087732 1.0437892968952407549801444933547289 GT 1 -46531677019084065984.2278544677810486702699564395437464 0.9801433123561086760000270219368282 0.0845427016053234012294424817039049 1.0883315588885639284126025257471325 GT 1 -47882987954064446552631871380314.1736121226664442947249148101003277 0.0128732620809933131531592211519744 0.0931037562553604238226525381869786 1.0977272303999783095901650215705036 GT 1 -1626409443687235740964297724261.5874303992088046805202026158834592 1.5726663794731835244664939260812546 0.0700156286345615844746458845812572 1.0725874979594402994106175412501493 GT 1 -580262724310641334421853249.0460954686998952603430163265288407 1.3586023558170098682314189892790631 0.0354282410096259806724774276462357 1.0360710492065296511423573769311578 GT 1 -71373309785772238496986501178870044790.0150463526723648640591760637869564 0.3811969143851475953107412785628613 0.0443317739517901811324452542567467 1.0453444700470259323234018344010635 GT 1 -861881735160468.0227417233722285294902484500197783 1.6659772478661172413743821656616201 0.0955312194847883596920642370040020 1.1004074904802118073354219880338750 GT 1 -62670939.9675046205146236562440914730642048 0.1945181520240251952437586277927768 0.0978926174835905556352205612952188 1.1030217166523214328031833454571672 GT 1 -27503516063063495033172495.7487679950754898612362450292999917 0.0297242913978137435498428356436928 0.0163553313109859562135424753549763 1.0164905562013392137791208105487348 GT 1 -41287928478736.5996933068523588086292072381595063 0.3691992963424298027574211350682644 0.0131889186705041810380004456467668 1.0132766648303028090004497738650541 GT 1 -92277838697569286928317.7022995295816963358393556987804769 0.3934595630171849722142725306687571 0.0705363795894321438495933499128005 1.0731476114670922692398968839158632 GT 1 -390398772231626261196104.9576865715351995052548233494385622 0.9039755640711222454197890440504533 0.0218229105516428832376823084999763 1.0220645522834868657445162829000528 GT 1 -3767659162360905050834009008835916311996484.8176769464233672045135020757517992 0.3786540599809460415340936738761728 0.0411213460117329248203551258364068 1.0419907460064910770150788736429083 GT 1 -47042783943153.0332186237823398984598362854971608 2.8915268922787217124306883017055129 0.0298274535562677254578633009620242 1.0302813403723185203796103764203523 GT 1 -839683041422532413748768041199551896.1072560916992248474272498894594740 0.6411820270026838670617555489144978 0.0344442867824629292836818347707671 1.0350514747726450890839347272474916 GT 1 -134779172037617382288990269884310898283232.6432038107848190923695880810620137 1.9631604804705650294832750632333224 0.0732513307740324225692577882397328 1.0760728729102788296335373965711494 GT 1 -55600776953877043.4595423534611341652262524633356669 2.3625496435465644743701466731716538 0.0177458267612054998839382029101743 1.0179051719002192636360045314298562 GT 1 -440672949759430361621596940316732.2274532564709796437558475148369000 0.2880930263219657249328888615322246 0.0334320293933673867688201967083116 1.0340036562606260943143862335082724 GT 1 -194768092856759459189926965493931.4683134416668649800045560545584318 1.3250517019876286382528547946090431 0.0256028028603459511283148099153080 1.0259362585293546091072814321861947 GT 1 -1188998573502953323890354490.1639085643579388696190773985783043 0.2267786576694133565166035052666508 0.0339751796941935027889055449571067 1.0345657512013511962988248622185922 GT 1 -307095884861816797290501336880713272818222.5110356460913073673009800427768917 0.7809868548459805645179439033914948 0.0998982531090228563971670209340223 1.1052474699466477756417738995707128 GT 1 -5816343678658906.0668413934492199726615782052131243 1.1837397133986326805151621731097761 0.0458879928216738409722112868667096 1.0469742064818856125833178210508764 GT 1 -6092497.4116395174898235985069765453599606 0.2275941345514983294577114655484071 0.0241773918969401717411647113415375 1.0244744630810697361277853152068956 GT 1 -6180921602928377177201.1500634864815385049879505305256484 4.3956043915142787404372181384019402 0.0421769691845131707627310742556622 1.0430922458255625970546254006443203 LT 1 -576.6682800197024662859494804354162918 1.9851525402142716842613814288166046 0.0085134291355128377329931181923820 1.0085498753757483328661298417046961 GT 1 -3646087068300650987779239875793.3640127538417320286864677350457379 1.1486194979948571182997833386221606 0.0533520457099511006244717902669053 1.0548280032853755012787528845514907 GT 1 -338122886558150774505027805586.5980336463137808298219790472543230 0.2486038926429485603205074302040997 0.0986224610677000975724862760678509 1.1038310870166330512974649546288603 GT 1 -32155589665513158547832594476108287350304.5723429043824741272886284198983621 0.4005139165185932195591057958260582 0.0351099182793046331120774069580304 1.0357410890834601884692035791862285 GT 1 -14725517264.1455936073106148524817061199529850 0.5669286428047148097991562623016710 0.0313857556984148895841853223652965 1.0318888430488876303172287379980159 GT 1 -687573.0058853701773420565357660186269507 0.1993942813487304304986733143475570 0.0001768930334951472196166122406027 1.0001769086809131034670098084300978 GT 1 -5175740333776665386.2893871800766207932107978589468494 0.2093774331631175079956429522361293 0.0165324895571924309537414571893073 1.0166706763272423830195909916653014 GT 1 -374140612545383245618224113193.5173089415791706573368802335208185 0.0993653531027867256325912387862748 0.0489886399478850847131816394988526 1.0502292711325770183629970806763673 GT 1 -2941115134514199583315507165776429190014662.7365201973222942905830092742934449 0.1763468535975236782826920998891290 0.0093382066836531853503808066364435 1.0093820810881419177338338674323755 GT 1 -355579398206284174258.8625838455836945576932415372971194 1.2068481777607587246313254845971477 0.0199169013958256829033708533466624 1.0201179164183139196408050210763644 GT 1 -302736285616696538977179193956.6218076502420094469379245177854182 0.9713242725424214446660216487583167 0.0250399655752344071730439750593860 1.0253587991579903077211541691620521 GT 1 -8469759926134982818071440145.1935264832034780598533474028705680 1.0393937928544725550650847156226947 0.0671401574668632569141820775822536 1.0695003117846440001490524935791069 GT 1 -1952069828189831416685129233346354359259.9603990978541014456521967600745350 0.3319157406683458469482182262702032 0.0896841406767959617359565624762865 1.0939636415385041733078506792803145 GT 1 -69686058441632568594.0806264661682713132997257653344990 0.7635852236113813697298543687270158 0.0438296288215143525315486733938639 1.0448191692789055451168576709264707 GT 1 -5934221520789129592693.6702561849936948280967006470743608 1.2471349657858465827738497981497487 0.0985896767819244123633371195003258 1.1037947163637485861040635016244705 GT 1 -20381704041608153317309138794295209509351813.6284306889826599111951953354110089 0.8042378291772746117327769311448852 0.0622495098005845361817606607160530 1.0642713672802977983690839278762259 GT 1 -4238820069835480790709393331.2596129237365838069103217442296691 0.3522409812986188744801952899184314 0.0161779915486660555696812007225856 1.0163102840118677000232910525565741 GT 1 -29392726339487.3695878181902738085207641140016537 2.1168978110446686986546792634179240 0.0229917926382530423122137462496590 1.0232602263996676464868570019456142 GT 1 -1155133981834.6852782836532174801300096704103326 0.1077795228792662836214776423198050 0.0640383028814345209281490665894472 1.0661807252237425445054148118980682 GT 1 -400592214623120720460.9017135386140789856442070426935745 0.0305877960236813510650685579075746 0.0383565734254741512483710385459711 1.0391115554736907025026521391770931 GT 1 -1079920.8482698014635858072237956651335757 0.3822155395369077197364117158293085 0.0139883430320163301755304892497932 1.0140871019666445748426515561769556 GT 1 -30.7199332335742298332637291491909895 1.3376959892017215506401931554841175 0.0929095739767541487317883715576372 1.0975131359056975536955823533146210 GT 1 -2058705535808098562137735178291.8263714121349177160965708295490366 1.4136109813110878386582256975258928 0.0588497466655989134493365638049125 1.0606524780366145869029135226869295 GT 1 -98432670013880.0204367380277223559783988233529383 0.4615679999271040926303409056300207 0.0099930507023937802068885441643075 1.0100433163856064284486080721824492 GT 1 -819417634715753343640228678.2030919929345705903164387689174456 0.4346650481335366398981184946240742 0.0659315254864419633065128425233081 1.0682055302568935591195466728729297 GT 1 -860.7321185501824100710207178179079499 0.5776509681018516584270616552821793 0.0103932235940625458900954259956469 1.0104476103061058469956632538018303 GT 1 -5006572868989415197261550060851801718.5271416102045472890530845610622461 0.0083994360023594702169883827651402 0.0660618325265423590869167835324398 1.0683450447932799483405125796030714 GT 1 -1885290119483296527.4118953823429688246364232072312921 0.2348301253374154789452560933198782 0.0614205806928888837298580511027175 1.0633878028736083128969824283138216 GT 1 -45979188327168155749.6954897101211136189994208735044869 0.7556651302912705216470710035322982 0.0917316257297538118035626409488285 1.0962153776750572926729558126206299 GT 1 -243509171062461.1136103048665061409544974704809209 1.1246174091275249305766513922243741 0.0321548497584515332093886994248942 1.0326831732606575408174719155710865 GT 1 -27634575745492.0490675058689228451102992204196092 0.9082036661742660223606664354473618 0.0815989100185507008567510678815938 1.0851210665910483964055956351706209 GT 1 -4.5580610495157950040677199335954546 0.3418848481434591604905420957307177 0.0215928157465930149198195943658674 1.0218293517769681629918286863887983 GT 1 -898590.5234727516929796692924764650035272 0.9257029007285404231470921796570044 0.0894872030137812127111373221014230 1.0937473250134975262770404559450547 GT 1 -41918859650.6649823987579450485914421326934780 0.3624916255036593171738399694913381 0.0875419755430814466151266326628031 1.0916131951787080580385460880691317 GT 1 -30457.4144245198801979882076309297907843 1.0383527907511554180275249869705710 0.0895114210284966687395467657740364 1.0937739235817760887586177976898591 GT 1 -2.6514956035821928168827454064039126 0.1986814667736976116188450077263130 0.0191828729864481018654006276213573 1.0193692516631436017970362773169549 GT 1 -1460133.3181794213635467132414704925328496 0.1912212335057035705772853902887588 0.0772014358483037474520386575247567 1.0803443086528687681948805381516105 GT 1 -1028690957118223838804390103218869039427.5204780281013976058115326063854081 0.0482185306976868409573428100853132 0.0682373067746980463960290475538756 1.0706771177208718934155048601153415 GT 1 -14812132522573721565834046875628815173662.8674662639209846665172880786735140 2.3283517506432906330966992510220333 0.0684894443080636155830139248881352 1.0709477570756214842099329191766823 GT 1 -261371408454075376222260.1362469562687122152611707637423226 0.0777158856941103308656404582375218 0.0451489618853094274448216871051836 1.0461999316994507143817875499636259 GT 1 -1159976431.3181633367577264741509918574076312 0.7733746333905908954321929271976450 0.0258423918662671560088500130070573 1.0261821730979161007777450583698707 GT 1 -13284477.1418805026269713776247254284286545 1.3211218678706401815233442543606229 0.0278531243918973073643687010041891 1.0282483793444509590809255171846764 GT 1 -15343470239709192113082120415596806.7664917783961040703802028392220424 1.1604373589315934365015700119528501 0.0499643186619689917781585715997712 1.0512557357896929653805433868102489 GT 1 -105353519625353146877496935903470283.9461389172005656734832627389759509 1.2441573204952809775677886219525058 0.0988240609811964807157418790696156 1.1040547696055858113093706913573198 GT 1 -1700338001894325052657116092793261074.2527401456911355973279311724936372 0.2295580360764881373111545290385617 0.0779678684122008936264679616352976 1.0811752061544790682815940153020233 GT 1 -917094822331246.2117411785731261440541276029986931 0.7177014819715136692326383333853231 0.0014346972238281664578968020423024 1.0014357273873232268471264339772748 GT 1 -212670442837665257857891989631.0446017942983629420319362518368875 3.1061855187030896781447514133512316 0.0219278868206098413177805155989530 1.0221718763083878972691874136313455 GT 1 -1516124712393203644.5432910325790401488638467066505720 0.3813108771893045230629028858069193 0.0507640884167821775314390066727248 1.0520979216098416145092382528470830 GT 1 -94869957104721261303776171.0111130107856780084133603631023000 0.6849140406865475820385435241207328 0.0690379265738307369605720274692699 1.0715367399933275875285401346917554 GT 1 -74852577325248808959.7503821274287416459531563685451500 0.2004151106511573903460998191273203 0.0152453116636378626713406846789732 1.0153627162017471014848253480845706 GT 1 -290121631541650330467534273.5323763098807440745296961541608301 1.6306953695011288756765217654158843 0.0286594915471243846172567073702805 1.0290781940457058487432383292138391 GT 1 -278405933.0646655629949859706031699212043608 0.8212433462868640857753153025390217 0.0412737276917917222654767755208392 1.0421496751772393402113249803208193 GT 1 -3.6700577555336319843337972892399021 0.5739688493080521418763777356755597 0.0005616921838871177048124272457811 1.0005618499920376742973821620811367 GT 1 -5162966274548366305918241650774.2132107753642090604595529888418773 2.6684996300368975032196323949495356 0.0930952062389738011900683156287027 1.0977178026664949900300555041530183 LT 1 -69647273519464019728899.8408317103284157117162551387759571 0.7835295076403940278209239128026682 0.0721408505123555045071770916139065 1.0748753362848177654048030711099619 GT 1 -18903907263284491839924906860.0594438857287218613599873990785759 0.5028100768772167098340669080260843 0.0819680078455685231834177671087791 1.0855230391274595798766803289158609 GT 1 -101721066873027466916395.4036097934257184456206835296116172 3.7468355934213168722495733834352820 0.0161578556363774817134612630482821 1.0162898171936248915129817919829492 GT 1 -1.9580678322668819867047455298934206 0.4598610294252333189081697303776330 0.0215322121640461950410649530701622 1.0217674126306960958250512194822174 GT 1 -1432.0861760197077483503774718859182975 0.8931728974999536023251558841736889 0.0899271779835214140619672595252369 1.0942306584790738108285427873886347 GT 1 -15612915181446326.9359252834689665932358446302421671 1.4387522055289145920603632821610770 0.0996070182676946769746802489882773 1.1049239645908827894443341531386695 GT 1 -10800457737.2847340421043049167773700712648212 0.5487704071381816287404897808649782 0.0255408305794021576610192953300907 1.0258726599163136041643390692792088 GT 1 -2867616512023142779.8817961395512406182077449409103012 0.8483118795850244996687542985729544 0.0267287232707497107186197732335103 1.0270924312054863484632304946209350 GT 1 -13653885.9351248780914827969049142290489041 0.0547466287618771633861409883917828 0.0398425125257846951119959573696332 1.0406579585225874574156565373874093 GT 1 -244819.4695273503408648409747395492293952 0.0508568988166349277398684016804291 0.0430775506904798695396371419752679 1.0440329260169755298201649021377782 GT 1 -2393857996473684928335934864260.5805025984228523617548660801489734 5.3924866250570391275731033216924258 0.0230771578936291003290586078121120 1.0233476043605773811420418513922040 LT 1 -560059548264614723828148535784.4744624797153687992116965845467714 0.0221170088328299889836078218826667 0.0963570406944835783365500903543818 1.1013209531262761067209625263842314 GT 1 -2909852651926619087478716901338.0935122862228875085752125511043976 0.3636461040345284653761753741626008 0.0645965134786659034371468120756247 1.0667773063920441300514785205349089 GT 1 -16622368093183466896674568744.8289787134440821427877496631458375 4.7138738554162405597164122234978567 0.0298594793405721816117462305687327 1.0303143513176657865648426220052479 LT 1 -67648399559624.0509909184355674542402540476622739 1.1858627975132706088417691718009824 0.0182415046690384070767453117981147 1.0184099323086315650875857048829253 GT 1 -54685194703.9883363039828177236442709555190635 2.2591417466179695703608396531964578 0.0286154835467368399921764764531312 1.0290328886115029837848761905491750 GT 1 -7731083272378492329593343002750009.2958895333342059739321640328027674 0.0169805132526325268109638724660727 0.0802969872886758252067931800904676 1.0837044733244476933725239964119798 GT 1 -428173875394345862014638940244.6795562884756463431350183285852849 0.1729753525031679144248180107242947 0.0435425452072002049978168911590193 1.0445189711822639990062369250095043 GT 1 -10208552795649143916302545063159648905080.3005981425238457936704124386212188 1.9759792876189857797307046584506294 0.0231351892285911964148935739718840 1.0234070082931323705063368946827845 GT 1 -82405633065356599015748164740.6246426513535407094321699344625387 0.3884506100939969845713154964786753 0.0473179313222320775494542852388215 1.0484740420296449156316060369537851 GT 1 -6990527577146955563551717779219901617806.0212583421736610643450913423664645 0.1825429343635970917291193776189815 0.0193910436705370227670474843457730 1.0195815162869684621507813137560158 GT 1 -75.6230783215425812215707809317385824 2.8549747062989002789976956648926771 0.0142384791005184524820445785766849 1.0143408188471170751491839175482286 GT 1 -853902660892360795827760579706916598684.5882020968862960990424673159369796 0.9062960966908039723135279322372917 0.0736396018732552390358697489205239 1.0764919212132038543999630192118525 GT 1 -4944501700262195244603761640440.9234413317456389923875157436289626 0.9802771357597270825945914414556108 0.0341157275457277204766583475252440 1.0347112527182795915125119851335788 GT 1 -74122057849446077341846084819795.3004707384910013880113520314669880 1.1894377274172580304567801932142973 0.0877747370384459078694130487158151 1.0918683205456491721240809661747232 GT 1 -4437371.3970231885407066714195499934652344 0.8589824882202696455879623532869949 0.0583703918469208635118424142584949 1.0601432790178225084984221052258177 GT 1 -40553240944974519918541946599897738452.5482354939121747225751085617455841 2.1592514254964323504604734240522405 0.0354765077557062695202402754591858 1.0361210900182101204750932041463552 GT 1 -151.7444275173692564192153203701662838 2.0159192477136625042710122314520119 0.0551784934173622147088637900893801 1.0567592512519658864776122890195672 GT 1 -511728378394744.1014174991364145168455527379341685 0.5107200735416538715295729266968827 0.0578095889258177568942293646823663 1.0595478899339973495770105261908946 GT 1 -35745074065913280184916096766449509.6116034283323852113736911982472016 1.0293970758767886168279426219101605 0.0707692930333926059070961290313121 1.0733982319610045188394392906879922 GT 1 -14182236406321713044841401591022937777915.0293305200639406143965091012072531 0.3885358049621852574653724502605098 0.0287318044064268771788982005371728 1.0291526432738857345855742435237384 GT 1 -7879015.2260832937657449006290909063181032 0.8834108278478621801902691193447542 0.0276032088546323819034972678098412 1.0279913364783905748900713528462191 GT 1 -5436765032351156146276161493021652785.1176948073357112778568439577718609 0.1976127011183771839516529604236872 0.0233034622251089921468661560118006 1.0235792813543896273573024405901749 GT 1 -158071525649837655529393054554515471758.1400859155363558154706337585404430 0.9412724344885158389826982852302973 0.0491694611184291033208958101018306 1.0504194248684793049030556409662049 GT 1 -212041776800564109688331760609025.8167361573789276572729970258854699 1.5372072466813499428466840788524857 0.0131971755496155629756676793057709 1.0132850320991868082511485719744182 GT 1 -13208475218808641904076.3932693388733281673431934940318434 0.3526582312599913882512386590084120 0.0875623747261599401750906040080233 1.0916355517261439104564291715469625 GT 1 -6204805278490656767271727051470386257.0952702657701294220390382473394357 0.4001763324358073013822063076615981 0.0568159014712739261292950290702191 1.0584937889673276741652709242570384 GT 1 -113.3188498333127323545709360799196796 0.1340405305917156808179918954293137 0.0288667186313365694506578677324624 1.0292915581447059984623926764932075 GT 1 -16285844616691419850799650486679188454.9078162433750221534075450460841079 3.8657012774112479490176712724886851 0.0660899557450045029864584236326164 1.0683751577524462016147281105969274 LT 1 -10696079124698236.0730444625777330735563954185376100 0.7294464715617635335209063836234297 0.0189330094159054954622505084963168 1.0191145336911162603585387874171850 GT 1 -73622763131.7428529586438601028399712375766821 0.0742498408348045284618291648090592 0.0104688165931807184322713983969842 1.0105240001290387403948292332662922 GT 1 -28553925166756212494672953174.7791909801641926136894122306202672 0.8856644824931782729655087917137434 0.0235254932839664640666421109630074 1.0238066357998081460414761343856960 GT 1 -1081.6613140787027927908775448045670517 0.1155080012519591400389718243474159 0.0823116906358527251656363229652325 1.0858974782988468432833345235098604 GT 1 -8877.0250690083301780173232134900175598 0.5943518528615822199902821025850963 0.0960408809134901445054919166888897 1.1009711418619533061323763898224671 GT 1 -3723798707526228278.9058402375458262039780305532136486 0.3698598508636159153487131313339555 0.0219598616250291747411827636522708 1.0222045685062888853340453378898924 GT 1 -24973734982805.7402954588839035635306318105362205 0.4912331339140245300018092329801028 0.0768246198895100703029258455564962 1.0799360515751362151774114083118365 GT 1 -42767904732973.1068446079405165720462380031113262 0.2634256212299405763138814925387584 0.0597089434527612604431438160434672 1.0615658170202728570561277060669073 GT 1 -21620898502.4874772837352470389340319376287986 1.4056080270114645530615902631644015 0.0764860812446489654330778082074826 1.0795694077126722522509692489035092 GT 1 -364393247868.2383640174501901824381329592590363 1.1240911209893364337814504295556966 0.0341597229569019329414304531192102 1.0347568031164388600313436968757309 GT 1 -5681886827968449162124675321864495668866.1404835917146115890453609864389154 0.2216164620416729774592555689480821 0.0750783397102661570360668244195975 1.0780462366349122236060403418587973 GT 1 -238.0385169828857485549607589083362581 2.6978618602379791007083376512108545 0.0612172883225738890824609098669361 1.0631712305163050599868240339352680 GT 1 -578457039896.4552509219291187083821788219022041 0.1752972594279710767447459142424272 0.0498339534432278075689102107019671 1.0511185238115835181681088378479092 GT 1 -22726763230774798933353633408.3779795769996985175519649583335090 0.0324871128982839284019003415826488 0.0471809563344127317786643019367642 1.0483302740862225928564934662971683 GT 1 -16.0501267111111031840113365285151052 0.9438626843285195571750067981599890 0.0245262088215563868901004207970467 1.0248319863445372648917008055459163 GT 1 -50774564159559780238958078264531278335558.8270134425741861931926942566775972 1.1597191922183475302143877216607267 0.0601342037793517542479974586566028 1.0620181838887247101866842878468422 GT 1 -23961738948167046333437220376331449.8777705116371071488967712841803139 3.1848281128107890866103654668727198 0.0643079618255243167453820970544897 1.0664688756875497898335885004751108 LT 1 -19.8580829293837507806209832542953340 0.9993140378456422381908415246989228 0.0180908943048723492301197480942880 1.0182565353035756297474353663359708 GT 1 -1419346075379187991900.5504690168117568227402710310414937 2.6849951693201397812503433600515192 0.0959670037116447023738621693909113 1.1008894189371038897682782455110418 LT 1 -186885058902057.9499946597096333906617013519282939 0.6124216604762759347556822268833309 0.0563966299839364467770034373049362 1.0580493600093995663909877208908147 GT 1 -58730427768474637.7634959511338617393024689820709030 0.7783098080886264946505240041965156 0.0479108056652211374383954716035717 1.0490965570514197773654192877877427 GT 1 -22290585356097924849562264877.3672636280832035328670596845262278 0.2937310321462053099678077297696490 0.0748739967542832599453405966520445 1.0778253310216769632266731598673724 GT 1 -110670840625765.7336595417878791507329068493873494 0.0014438707516266878254937818351390 0.0490402498947041486517734439795793 1.0502835410913120482806718844443107 GT 1 -18614969622187491915265907.2834971885380216119033038258210541 0.7524655250837412942965966745296311 0.0270516491118059687455525470127822 1.0274242805398958186883337777795795 GT 1 -18636049386044723789180101444496030915317.3919905823188451007492592458166701 1.1935826302107532734265242843803429 0.0976254997497475427725612794890203 1.1027256563390036022495893430727928 GT 1 -24037027840097008.0567868266149436089725516787672806 0.6170426209200648657302672518509057 0.0548560566776466457208591866431406 1.0564180421120209731963681362590839 GT 1 -12616213173665682357736095444855.7900159689827784719290273282289087 1.7035420781953956318304721128807082 0.0488376715396319201556423830086601 1.0500705386156866110512163413734483 GT 1 -1040903637916015280349.2919365614952671466066430986038359 0.5103891814621303347153158249267701 0.0961552589532882572424035317228880 1.1010976799698454989737218769189638 GT 1 -955810224103199617598.6267853658974577951287501750779175 5.1887692386760690435899506370710865 0.0429824296140059024804584107796945 1.0439335278377500219464023234431537 LT 1 -78648250799520606557280991123.0314616709713006988918629916069850 2.2968090440397204632134009301784231 0.0111459233738458656265386268945980 1.0112085046295341168803681029753008 GT 1 -1651220407668.7634739580860606637766592309271995 0.8485122506282562564734561873251153 0.0216083148095340844144147275000580 1.0218451930197074318308804842204841 GT 1 -336.9874656023013593483568309684693553 1.0474015193887909932373687405559991 0.0444811691889013599720942860807833 1.0455008076874251608956048328993413 GT 1 -4690.3744261729730272711774958582120661 1.0841724975805794401297173157666344 0.0029178492611398483120301707195226 1.0029221144821637823986521142815913 GT 1 -241516537106023541945790693583709.2328978125637024845803190120027766 0.0487056626196592558476479794691983 0.0493548770896863773751334803408989 1.0506144481081354164114409727041038 GT 1 -23.0567409591173751252729251729223082 0.0068454308240514139241081142588944 0.0532394184278609038349011011017810 1.0547090355295110775809228427610249 GT 1 -1988839363483097987647324937807227403671.6269009661415404862114078441646862 1.7120417071489509802405384207624816 0.0189619137169554303406701550221487 1.0191439962325395532892666724700508 GT 1 -282983428245938754.1952437436574674128548098753498405 1.2204022020072550868407817760489539 0.0940773056498837119504285090145402 1.0988013029040305844608105996605557 GT 1 -182607956129366062930378513189618.9489004277093906799992091153735023 0.4346980509973021912384290003840732 0.0522951141396515652959388069993324 1.0537121270266653133688188206099338 GT 1 -1295.9382073774609385977118132813727339 0.2969061875861723830560155497191031 0.0687629651999525665767606103168022 1.0712414317476499393143508901099175 GT 1 -24737232154661257221298368602543.2240388780757759841530962245905005 0.7057504413266153896611682563790861 0.0176584782068274452453761172773857 1.0178162492229920893963247634462780 GT 1 -2.4710294064048410710354680332681548 0.6374511731839055541330541244700618 0.0288848826196410954987509359343637 1.0293102622284027643225480648962815 GT 1 -1210167.3284204612896415948597135722452245 0.4013861349756322665693911769891430 0.0689943522113450064594410815089832 1.0714899353554198416676650755186476 GT 1 -9016093035299792163483821893.2777609536177393389202716411197423 0.9426649135140984114830622780399902 0.0812560341987404087279699933938356 1.0847477963120226553816643015824319 GT 1 -1390657850.0831570660932946791931623000338501 2.7670829578325164795415458053390927 0.0892316467476458813947386182317435 1.0934666914959551592889880045452984 LT 1 -8043439128274812093092842225434960868127090.5688407812576808116387315173877661 0.7757770566264068799938044399502603 0.0474381493629343262339532092365882 1.0486002390374327981173553652510083 GT 1 -25502345522087716874056337295.5125616784637213339351780717623311 2.6474783145253190060126290693916159 0.0419533779723811911257492700483243 1.0428588361958257507597683122400613 GT 1 -352068557288003552069816440.0010639799620268842305935297189883 0.7012893196456509955460297637184057 0.0021682063179390642199128036999698 1.0021705602804574132954524965864735 GT 1 -1087206293985236330295176.0449195118095239881534261830327229 2.1403765853191934905303874720286050 0.0845945705228597147033572307393054 1.0883882195182884543497418495040514 GT 1 -2272476128151551478788245697240972214906.4709388406369968266975765464403173 0.3233592555392431600635474848135867 0.0555079436952425893529907446495532 1.0571080025526404731394205759413409 GT 1 -60151360210579116352688475635458904012.8837914894677791508934846780553334 0.0758888007083797542552025676079826 0.0606630642002766319844380959231434 1.0625810400679710179161103199573545 GT 1 -97282092430769023889200824164686831536747.0475998271605481641569976734544123 0.4323273071671420587457423885395621 0.0764038862054319894397804024288384 1.0794804091821864855171193030448794 GT 1 -30.3667609911755628964355808438150854 0.5583718185113075931756051676440551 0.0568456850257433352382089785737893 1.0585253671340645484758329040591686 GT 1 -51209.5330724185119328358658632797509845 1.4485319470872265540098150521891367 0.0648121620401745880484545975544567 1.0670078736566751089861647698071799 GT 1 -48380500163562248600643425.8585482116141348318558624857362155 1.5434567924983337883939409943933259 0.0174171918787870575743830687848604 1.0175706557153136641361354167422598 GT 1 -171964.6654520733923198785646511448962091 5.0037533428499756461468530361715766 0.0988714427252140296686745822139580 1.1041073486721374451255366320238179 LT 1 -166260.7169811149992583181147021397610578 0.6741008675430707636051780333252458 0.0742538012037380608253879570159302 1.0771551652770372967550946707640616 GT 1 -402718186892658983.0478975089431365546185869882304628 1.4443416905137622502936258093541245 0.0644023416693163048375980695946238 1.0665697471282981459145754901993630 GT 1 -163987477489962509369710208126080366732.9322560309100173619646655873147311 0.4808386866132289466886288960174783 0.0203293635052622427203040392254976 1.0205388490162618871553651676383704 GT 1 -3169472334726773764362469598338963406.8190754711714026299106457405969873 0.5506492935779740877719277267447543 0.0756582020922733800950028609311557 1.0786733645851686083229735695268272 GT 1 -33106.4274107434584235394775877949257945 0.3233354514405641308638619867510248 0.0918113732533763196344505545298740 1.0963031832478058917190329442313629 GT 1 -8919.2154459190083428066465800996696143 0.6143791294099025422422061283297556 0.0878798004002494608869051422838097 1.0919834997856295191099835018890325 GT 1 -3793750205122320129764570249229406699.8383611338037022305396256862912678 0.0231683793603598292156842560472004 0.0792992974923235427498066947165906 1.0826202656738821683777576198854832 GT 1 -485154835337140499152937053414511565.7825705113385914137914495062966442 0.9828662038968940442352989366993795 0.0463959007508874333802894069739476 1.0475066839710707697306508334381814 GT 1 -197390620202043885135080357389510559190710.3711504058203285843105357345999112 0.4102658333838626978571994454636617 0.0898004173303003115887078415266728 1.0940913819036561170121897537340561 GT 1 -2682886118416149562726489428049173947521291.0785026094612955488210351709679822 0.7746319325735733655927701367801460 0.0458478408152375925657351825322397 1.0469321242511861821589336326738950 GT 1 -129345.4771991779265018819359698294128991 1.0212551803897927954508989208180817 0.0157259116383603245194409407945737 1.0158508756333957463535353396908604 GT 1 -171583871.6535691847539749871546112056091829 0.0618719960585652173040626080654941 0.0890065715965716865145584051855282 1.0932195953558497082371534399764323 GT 1 -2378787146511530084823.9150006221057383026095322014802852 0.1498581258105295756355390941125675 0.0113344081150411961907873807289607 1.0113991320551596915030821351662899 GT 1 -91.3069489544294390262226264684485086 2.6348670043493933285603590030602889 0.0306365208498139907795979269129757 1.0311156299444619957109666705337658 GT 1 -137122739935718551949304.7122130001634226716039316725672625 1.5397380186073837487811438532024713 0.0079461892752664961043665776540328 1.0079779284862627973221970199521906 GT 1 -108.0222283207785454239048882836976626 0.1219770713242743756975117133941640 0.0679821892587917265033148452110936 1.0704033542417961944010801732886070 GT 1 -16090893522451818206407.5033989653234708608979719185563379 1.3322423414291376590084095591659750 0.0476231707070881774568705642736433 1.0487944934212457865052335545031714 GT 1 -727855081150200771415.0069074078528033393322099232179880 0.1231179291203447945141060629637592 0.0282082053842069410002489864378512 1.0286137005366239781095039310943583 GT 1 -2769141249147651515848741208480938678.4347945393338126662858745316675963 0.7623690453997175226889139520287150 0.0041200204726522607160393236309721 1.0041285311411288825219571017964070 GT 1 -5755770015716.5489844926287874558259600140699652 1.2690797116463038405120397589676198 0.0588338127245449909884709967975144 1.0606355478959532849369829868655866 GT 1 -177.1315993128104997992685767820299813 0.9297022261651472469626567421517239 0.0974418344779145644911821136887219 1.1025221415199194097949884663032868 GT 1 -297.7056153687206116034849142860835730 0.8413975196596347997124551142747894 0.0575113957716257064916164568884527 1.0592314507374454136886973048560040 GT 1 -491204.0222989635728546201383927455452373 0.2272768388029405893164041560617527 0.0667084910168397769165302090234368 1.0690376842947872297885282063178754 GT 1 -163640637876478.8401972750157193162265995361375379 0.5366723674291131250523228436846348 0.0214391074305817028355460266752857 1.0216722635565236628844732763459153 GT 1 -24889902082437079310096379651727310411559655.6354309982985063497177409319078801 1.0252442404924663303179910869298396 0.0960504835372032235309759271307009 1.1009817647701294725791322031945687 GT 1 -34300505017115281495832099960246.0081977880569820516917424804498316 0.3565393178369494765648919328915735 0.0823679484009433842107359021687762 1.0859587839611223426702300000007155 GT 1 -122107987558496416981515164784548.2839268985846521208504290479568887 0.8022597811872065901284267957256990 0.0762454522230935209583479525848164 1.0793088835633392922820915785627685 GT 1 -43632259373761934648093778170428070.2349351453702342787052631665975200 0.9291852187520204692662096155686172 0.0392680586693095745150381197596501 1.0400598461429926860331914803011583 GT 1 -12368639717172417095303942911354008.2964619747445145461122645646971174 0.1060799051427145461805014510263081 0.0004399264323851182057799126587256 1.0004400232284078673839927927394675 GT 1 -1195386799787534997913401186254516163.7563266587583714840313312102307102 0.5963350476946794135164928675019486 0.0725664055211377819709446170544669 1.0753340833128857947482341120691875 GT 1 -15486383782339741718070.7089129378086137997908166664738410 0.3246205634237257508415919640074239 0.0371106460353453338275363541242980 1.0378167710181692518163428973965524 GT 1 -278469574430018495598983.0111008891644143380072766645770309 0.7643048242317562355030941480696026 0.0435327939295128955996503081990174 1.0445087760314701426592564527248928 GT 1 -11055087423625616.4741136835190253263735268780795536 0.4443954575603913465491340828097859 0.0516407092161886242976241255775112 1.0530218498118871168173400591466986 GT 1 -12325890067549286075824887.5756135230851760490598191904595288 0.7045515464149548511212480418162592 0.0748062213158197136836880924387181 1.0777520729403920437972517459447450 GT 1 -1497815083004787428697091296440060038.1643953523132939075777212871635239 2.0176029697542544892340996882946768 0.0515923177626748639058877858940469 1.0529708246156320570151966452438310 GT 1 -6609814711.1984348665694064415959666913675520 0.3740699843682527758781586826395078 0.0445465244831282152052966428209063 1.0455692077307286868148828962715487 GT 1 -16724.6360738381190827122896998073993088 3.1315016651042714132596240472263314 0.0332018426015169676366405420552894 1.0337655360312460681540380112144947 GT 1 -266563094978555495487532964943552710337262.3096515116489472317541629223887661 1.3892641660281621060143118752830182 0.0267412435627341831282049242033981 1.0271052954220885220226061346589078 GT 1 -3763299173849523111380583456.8712279306476977940715001902298571 0.0740604225789857335704699649191124 0.0926178917069197077611180151482377 1.0971916294989258963101105258613487 GT 1 -148940931847503941976690066001384288.7621920010053036649983720166771510 1.2136321634637147909866689411220519 0.0442452581360025583458373466235610 1.0452539450116998128896431669875248 GT 1 -10519351592535187060304251.3518282714518939748466288988425149 0.7882416618533362379277810088338695 0.0712370926853660403571199279435853 1.0739017855343457808771218476042122 GT 1 -11292347627532911531859926448463249672.8480757090411387513380549518729411 1.8524517919725964492892767837264151 0.0281950247163306133490726045721671 1.0286001373654141272982973720942309 GT 1 -776855500050593080523.3255920094260606885422661178192255 0.5889856680627156779411809349245486 0.0218871383747178248282566969236138 1.0221302151705888207471509509778657 GT 1 -5372968584133623187719.4053996768994925341093731078932083 1.2059977303049077556247894157555011 0.0960352138899793834194054974300464 1.1009648727667834365662058987514201 GT 1 -47706470076920290187980843973.3967946748322941005552780382732929 0.1795764116129833525298038406853639 0.0832400708459495372067842814266207 1.0869096412695558592917856258824626 GT 1 -24018930828591664833161854066.9794124673415637435649919926976172 0.7167823303186189101209837388360380 0.0264153011819047313819293903140250 1.0267704535189093444097761662771148 GT 1 -27034627382868916460149026106633.7287681157323167236533266981454023 1.5730548758467362569286282356106953 0.0921714767788109157828995553226814 1.0966997692934396020236181036810113 GT 1 -704898620.1600358227308152338182318284330407 2.1645184986848282319467845387479377 0.0523507646822048197756203611632526 1.0537708501348670192105141931187074 GT 1 -1559780229087137442676202750581907060.6962059938164580674510985791568931 1.5424145787564526361021474528480832 0.0901719340251964340304445709992899 1.0944996358115930782416549734952994 GT 1 -3.6588039646819730718180293533586841 0.1825709230135826127169026014635230 0.0310702948702912683076040011807790 1.0315632134485849417095997362729808 GT 1 -296410344619328521966483959319.4900017305164278176236661952843072 0.7823222538690146271480562351239240 0.0317822466405276448344234665545045 1.0322982651857896379385296342699501 GT 1 -2321113645.9428450094894197909269284109946076 2.2093659688352590013075988172413759 0.0506162674436436514139738293606822 1.0519422074583595258660704969976532 GT 1 -13037636283549245866.5563769988339543753912406403873909 0.1268856483198667073172348240140633 0.0143895139145565969328966506818721 1.0144940469682413595449436103333384 GT 1 -1700743198180948146371481940489623645429.5539603563183222924459264846249263 0.2659435719085866212425218426951603 0.0399014367321555285544296097282019 1.0407193297197947854231178869933597 GT 1 -10178459230318645246400.9635876204380969335559746710745921 0.5051990393067191439176264427711463 0.0751800500066575736130964521820909 1.0781562090720661434726025696150888 GT 1 -29.3747471374576832771326418925694847 0.7802230087462226708508895650418075 0.0343076977634429451702838381270454 1.0349100232157712677201035818457436 GT 1 -1691851003234566.6982461025097833659542540532939010 0.0565010975305992710252374398816637 0.0505089293248485713444303967661414 1.0518291530129303288460618276602621 GT 1 -39208827889746953696004.7533781925461921651890756441266469 5.1340254475617222012656333760043686 0.0835060584754684580719387620802634 1.0871998221720916564580397344983677 LT 1 -1178274303992724478263930359316229441995.6461108750354735365270601274586036 2.1013825726989672278262436154983232 0.0693419285335901554078667988254771 1.0718633393409933399509048228085429 GT 1 -381008486641239206123805219809658941056.0899017418068469323216510920864327 0.1522393911586493921721894416478470 0.0796920611592994814947082772406463 1.0830469488128022597460028748904479 GT 1 -326895422264.8677916623243982508356074322477098 3.2997235332272554775952871027807755 0.0735640732683412314393063820318163 1.0764103919010582072393825524401188 LT 1 -15452564188330906659570904623646942.3630804902394163351107944003626161 0.6568474422203802637992639097631598 0.0906180052026012685789471786109746 1.0949900367784338660504126935331802 GT 1 -4353488760562.0515245844128901555921974158053786 0.9556484415134854952788617552807071 0.0726295453027207250737057258052733 1.0754021657409302850856151247297963 GT 1 -142354454501506848410212885926316965045414.3068773237756460949691146919962872 2.0610660704838773451039425285614197 0.0115120087913156432378536755450762 1.0115787849443138362978590392590622 GT 1 -6046887486603646463523819867114152.4812996715947428523188643658600572 0.5786648242383049626943128405423264 0.0510887110725302957073331233007369 1.0524399632163362498215145339365792 GT 1 -4859427.8964164635998787480999238938637900 1.2120124235095956693085395810894582 0.0071803672192943834508868051748484 1.0072062701253944459065720513242810 GT 1 -246108965824113657826092341711864.9025692444751057695661046156610141 0.8110085398456724171535659232022959 0.0351794518822371052904299015717935 1.0358131554356763100612165616784527 GT 1 -134484458650250080512134582087.8864634299102590795434589967672393 0.1970568326525168674915520939275656 0.0768082581595456654040588639908619 1.0799183284151315626545137905899260 GT 1 -39931718228046973257124215054210990737.7682732852372818985328424511024766 0.0920505859710925402937022522826666 0.0214481565003269656544905811036568 1.0216815109234009564033717824644391 GT 1 -8642489520589251958015.6761139462187294812076482013551949 0.4263710638898248443072626140043549 0.0831356636671584724732273019599424 1.0867957606006870086521059600078128 GT 1 -9364696046472418732562.3550622974746919109845269955564738 0.7205026246542779811754342811739065 0.0465563929626577530081907722697158 1.0476749988083138671487431717041178 GT 1 -451795672697443512642436437451467922292602.1018927762047565426426382799160928 0.9159034975220414159049106404078847 0.0732754622156699382456880888804260 1.0760989120691375690552328722802698 GT 1 -3088435244192091.2629449719286333639136103559845742 0.3721563828624602391988356859353577 0.0915799064641971255022469999811900 1.0960483492950151818668266306902959 GT 1 -19854085953022140.1335708925608921160769795131999819 0.1587556725279103692792981104928215 0.0817823124184792166166609306787028 1.0853207840313562752101277274027401 GT 1 -15729053082816098471.9674435052660736961915841585639548 0.2779966726132655502803051348331793 0.0960487328299027848182462011650549 1.1009798280407289561485139300445281 GT 1 -675984766737.0735458598737824694877730141994834 0.7212642532471205098126405809939286 0.0414678182750976168145251991299078 1.0423521419688819958589252361124806 GT 1 -1184177614735324291889722.9798776506338896775281091052063450 0.8068816342476113497178795204216350 0.0800055714398763180334688089389402 1.0833876648702972143484563467371542 GT 1 -619.0611079963039300950369569291175731 0.7345038781852368319588480938384939 0.0507484137143330463702960456114802 1.0520814087779508775852289174245284 GT 1 -150218336.4973932046183304070537979019494621 0.6041617756306945837219834645457735 0.0024778467231149532291519968357271 1.0024809216658480005617948821811368 GT 1 -62949962492961.1754118219407143298548476971420052 2.3046878300875742674991346891274508 0.0225314287914472645977107882900984 1.0227891398558241395064400410435917 GT 1 -187129075611183978510326779238670.9468407166740846852000219855570831 2.7948678823010402162342694933132151 0.0324247979727582036203650248751895 1.0329621289053481160020841623850490 GT 1 -18127496818.5340026405477124892265392899567842 0.3262418523718879539841890046251853 0.0259854118640649553072608773951639 1.0263289978994696612561993897045571 GT 1 -13268982794918122299828236796.2199505554978274490279276432990968 1.0051700332045922215514601828917569 0.0700545845261778033144331956840863 1.0726293875962401018513362062663807 GT 1 -21342372815.9529078840799516207672028351691465 3.4140805588587726574331450039369724 0.0799077018314099210907842817040441 1.0832812898748830834353493573037900 LT 1 -549927079121117622811617263755054872546645.7540753453288948216351361691222890 1.8900640484143038592109232041943578 0.0736323909628130123220189110750931 1.0764841371127699205012400571688990 GT 1 -107064950.3358936359598146977124999478778577 0.1478315649253283682408414471108707 0.0713789252578616508010574344790174 1.0740545084760115435352781965703225 GT 1 -1154502805942954939.2447243210422319986717856828209646 0.2245092485398714401756396336319657 0.0320508105412227984625943107752572 1.0325756833117562397267624562740817 GT 1 -3.0911936772376773366897167978349003 1.3850203590264178579711032889288112 0.0200265282620777717330430087505283 1.0202297773390905759995599561986106 GT 1 -155076875930673896675199742715694443.5092165114848283172657132109411557 2.0370428758587417439698409534655282 0.0156230913180768717234515411318715 1.0157464179915573942847129881766304 GT 1 -22361221289328679961589398.0769650382209212628734697584405766 0.4178249364043407078381879192999172 0.0043504577562750872524008254010028 1.0043599485337732068733040090092092 GT 1 -46439226458348697200560.1518751184168646438426803170504906 0.0250639893233137627012841910456420 0.0592132733479168484214967684371276 1.0610388105128933549046118220687071 GT 1 -4087504620.1619796196331319500281593436030564 0.7887723781130968329759180654149300 0.0242839180133138764660203075730952 1.0245836344923468628869128166485340 GT 1 -15341380044508392384603990193170805825619174.0275720940821728337808982370443360 0.7314056392335635620950358195002651 0.0425896929429429170873606135041320 1.0435232364068741379357460944329813 GT 1 -20235537542097712038271804796854123211646729.8359632015861820984673372080514385 0.8052001393720566984211678944592656 0.0100848140417198978007208801150594 1.0101360102726617007450835710888145 GT 1 -2460403.6063777813683469492363583490670945 0.7559258297372277969038298774594083 0.0217504129099002182244288009136702 1.0219904399820699580015414609800177 GT 1 -2832055474971.5234579844920922239304848961172457 1.3403570205596894165971002962650817 0.0131519201100548323103433621438744 1.0132391724798699988354518495371391 GT 1 -44587120223.7017273027959758267135077525588381 1.0959988980343136060433250601013610 0.0905795713391851753856639821636076 1.0949477739543622585733390622947227 GT 1 -497.1623044381262039425517835481723605 0.4198851966296705258753757356237388 0.0657043200112741510352181190189180 1.0679623169884947950546934845557118 GT 1 -77807466972997217689767820336886.2444547417357714293941815796729755 0.7975304243685299378322622883343952 0.0626433723315128092285493666474050 1.0646914633195774563775036298106439 GT 1 -131598069992492173857205642058574000672972.7645068580550368868569997965107413 0.7815299718820641724723476716319614 0.0195859103336724033960683303492467 1.0197802560867629359087351916181057 GT 1 -29076092431409815187.5807306528345023578350653401346984 3.1725194841185314162563519853126940 0.0910996574159031731898028508223839 1.0955198249358233231757906511224293 LT 1 -1889218582911622439442726365465961184554950.8955543482898280215985684477211031 0.2190795030838731047292218814295162 0.0359576329488463922051597836426841 1.0366200361141418618123905444198556 GT 1 -627104.4643974144974489351286935577410255 1.1411168716248397620588522049876597 0.0863685691182324316162679839917451 1.0903280373427418961522173761887994 GT 1 -38453129768010463806552289445925995.7614394933849522228159356581865341 0.2268605658523446189282969326331437 0.0611246635838548949871208846201642 1.0630725706576708742786913062765629 GT 1 -316258669893419860102191904470970.4587900578501992225725545473467306 1.8259071038674467635585042404976672 0.0499921306660715178862590201039942 1.0512850109124602057172076138416249 GT 1 -1064655911417700232445.3846815709043869042254895947513101 0.4920832783679659753308244331802519 0.0414073202885854121788393205669523 1.0422890287228444257933629811861110 GT 1 -41341773220880223278639635100.1138803543181146179932123197378945 0.6870807076449211516193301744778491 0.0889088921526130575486793558237040 1.0931123781086706165941484256140626 GT 1 -1587677713344.0458380529630277418624281860387792 0.1217902023745050282024935160002578 0.0480577917517204697760618197406942 1.0492509516549876715789248771819695 GT 1 -1369725707638992691114728866764558635078505.3066238624227988457916087499348855 0.6639225479329113122003926963400005 0.0160724951701560740442743038414733 1.0162030585973532829275930654964014 GT 1 -540258.6186631069644805371332040070400323 0.5972253169090496412334338371204903 0.0014575322373424265380848675533386 1.0014585954707107289764601525604818 GT 1 -1473146638461265304969600353281478948.5066281475569170079128469123190152 1.3975117402272156509463813908751138 0.0754007606894007155177060473847371 1.0783948901510420885085736268016238 GT 1 -10550812201542.1396678951877229425428735048090311 0.1674224073268049369389385820927120 0.0024984386470058221602885828482198 1.0025015649531839813759847838055089 GT 1 -1291902636854064299127031798822306.3531337133283325242759994544981178 1.0403028280066030974892554899553165 0.0834119817913584568031399857746097 1.0870971789883615720430644292596284 GT 1 -654199372027326036207288819470782722.3249750718869428865093432720542216 0.4463803504621039603702805597979670 0.0399860893102117389289401647054207 1.0408075043233757674830406975034361 GT 1 -1281860357477619010301248455792.6401685902791927508201611862246114 0.2409540184496567402980711053083793 0.0327080724939700655004577847581760 1.0332549392166216758283077530777029 GT 1 -6999784538886865492475062670858373805736324.6729316191371190118950754259150798 0.2330460876755459084122617685296827 0.0369712887876257292518360215510073 1.0376720532853824099428413589473493 GT 1 -1259367661.8472864129115976916355389672790594 4.2884177075584169947025600173278408 0.0653442136409646260506340839474895 1.0675769604062080015991038315611076 LT 1 -209596.5409359088266874409891771760049484 1.7290313162095084283297649784268978 0.0587055161014106285655720044187624 1.0604992405347450535078690616249707 GT 1 -211981314.0789386574453282327846959581966424 0.4069839213907310193322320839991061 0.0626081470407159578203164882805083 1.0646538846351139263100971199394498 GT 1 -6730287.2104223636085465870363249480918266 0.1132134733213919750186230664868450 0.0027861662492004466245739095303497 1.0027900548348948481043765392179081 GT 1 -14562060.9544723279476184263614522067970986 1.4500149631778712844767655909778134 0.0176908596681181072703472542859797 1.0178492133136753348410158296274038 GT 1 -171001938686609065539759489274657430371.1953110753386999053042896687476945 1.2154547823884883123432445202847192 0.0014969662155710460518217586214644 1.0014980877889410304309488917616222 GT 1 -237468.7489934852470007787521643833878248 6.3759215835549797381251942281706055 0.0197600313033055256247417920208186 1.0199578712752743146790032307622814 LT 1 -10.0490012567217980498365665244454854 0.8797499346916428486902184974045285 0.0080912302752886994546496462646114 1.0081241419297116560604622369847666 GT 1 -20806041171481.8660482570821113413627282720253221 1.2504662178006385638034865847858277 0.0432930371569025149571458922921676 1.0442581383448849838367012746619336 GT 1 -162508917031891412153453071461821424636519.2518477234052740196750648080110238 0.1736712309877288080924998171299008 0.0808583114901020277540861029103021 1.0843149916770728335094675838820648 GT 1 -42052761923384089132145135059798622.7414611656783890651941850389516374 0.4728420116458896635766915922278763 0.0078817109032164849464030746633065 1.0079129357650381536722007063086102 GT 1 -580300817.5362337853815871692388847497046543 0.0276693561105544990580527735998334 0.0877805806794395772095513519211402 1.0918747264850020493841159444978279 GT 1 -6359184577348831854926402602971362.1274810755370380450101392295218919 0.7896187541048102492463917537524852 0.0646039506261934306510266731361509 1.0667852571610975421410133219120925 GT 1 -93408910367904262266292395780957502030.6219793980506514446997379079387921 2.3284293525125307097806898821350452 0.0512868590773780042050632117460443 1.0526488011744178908908890881517860 GT 1 -470.5018579681472990925705940670740875 3.5740771823911359764664957004002953 0.0686966006648069078729890504723705 1.0711701693643400637535385362857984 LT 1 -35325765442902336727132135384089716.0408232983159075706388649964128265 1.9691831459460828613618003328243002 0.0805845559392594985942963457242770 1.0840171977733469808050418726811272 GT 1 -1388440430660567877449149722974262946.6115408910841884380377963863245120 1.3931509731016151804838470550318061 0.0759958849523291881728254518278113 1.0790387538355745093342513148557731 GT 1 -98294418897419065194152324.7197067404800997966444993605032442 3.7019758418259764870120750160064207 0.0170407592474795522092068963014310 1.0171876238324541614742638563798282 GT 1 -12142849.5915194643413603078987018833313385 0.0482139643034245905757536533373664 0.0896469877582417748043675891329939 1.0939228291545066274024299593163652 GT 1 -3.1142843455384179359831589498796450 1.3054428129131245567948981109185191 0.0675840279317841255399822956791142 1.0699762419069612065994233895775425 GT 1 -42001652668.7220385693917165747477532907149299 0.1378558904468395612596071819657442 0.0528015181672750056288007197061140 1.0542466176485229935917337295533087 GT 1 -144638960293.6646686500537836121549665654666452 0.9137855087862502622355441502495476 0.0894328830352554884482054745308743 1.0936876681273546405140653517210943 GT 1 -247.8213133703454996371290858749374975 1.6302581013903293533751410932567362 0.0430384221973362554519135800523341 1.0439920369217171239925168605254763 GT 1 -46025637335745210598081134300.1571912100930036565544095328367940 0.0624562210285530080246322141197744 0.0236495970038869054189433478945788 1.0239337375378803091874499313281438 GT 1 -5676443976114441.8031549864665050001597642779588784 0.4509434928918570361136264425562423 0.0655618381481319605591806441063165 1.0678098267191710996818847222398395 GT 1 -13489034513767570786073588433258832910177.2383423382648070004179331411521547 0.3184031609252269392945749225764868 0.0886189068300934998102179474736590 1.0927941451887885168569865417776216 GT 1 -61734791104112774792207426.1971830374972513432181992630719111 2.5771681493233199200843670010174822 0.0288871768418561766476350679740138 1.0293126246928356939808078388271972 GT 1 -2761.7056398223020296274683608384704619 3.0119826983400009221806561989206861 0.0229360100246490711112139095214560 1.0232031326917738014986978366760339 GT 1 -5.4886014236206173431674606647395061 0.4206704191438392667112719007707203 0.0271166772282277234487490772636611 1.0274911189178770448980679381355740 GT 1 -523723142923624247795195388955079993902582.4229510965545742951647632343931686 0.3337194101287509642431671295695680 0.0590686266087549029567533832067776 1.0608850715023119964241957439547306 GT 1 -8040810683627677840199182359.9049655258817327698212290781016169 0.4671848501157024579942032702021186 0.0779051487747477269732230978463255 1.0811071852014081725903588198235499 GT 1 -13986219877431243285842850274382082877.0665554955578131408697509515597266 1.4669788495894659107227391956696040 0.0844561409442770622303285952774160 1.0882370087996591708185468676433182 GT 1 -70569094384941651127433072616125.8737129321251712449844870530848056 2.9063665687732484242796977607521421 0.0496452147003125261143481295531955 1.0509199058955132349787415793392652 GT 1 -7438495540102478903663083498194494026783138.0436056614091300606717126520559517 1.3070322818997706637211275406710496 0.0595612621392790835342195067637906 1.0614087702034203632593382913990055 GT 1 -74908598886.0127159119493924534066030803495620 0.2652222772496880296802508476652457 0.0851224515545273953654103326678251 1.0889650494977747693574752264923253 GT 1 -76779758251053039.6388209752818095216233987240943486 1.9337871251323276369567584423818618 0.0191016229527277424786608031277209 1.0192864159679588223609857853664525 GT 1 -1704316199040392628663250812295004.0006193210340898274501822074523620 0.7089446610099275938280958316874638 0.0113592916299911558062104450458477 1.0114243011601669071989014450286040 GT 1 -127522597478492.1812210700497175577786884850575236 0.0352587129645388059483396737329768 0.0015569851912888197233960843448287 1.0015581985523521196939638115178702 GT 1 -22891779.6507577254635705607616129948353855 0.7462661294897850033011484106487586 0.0242337022956486821409547542077217 1.0245321703149616406212010238053433 GT 1 -8122108320839860211455816581.1942626240150036094516598528652081 0.3953412542288349775616948516239562 0.0867065062837749112938739652192419 1.0906979892382431727378022573477974 GT 1 -7083502088943432561272901102167070.2527994902247569230939921533783935 0.3206958129046415040078471865876196 0.0183957669918888392119965873931748 1.0185670732392820809546082888034335 GT 1 -57213030723442011889382.8289418908186194261629171047116962 1.2961773259948490374080628503636876 0.0156903059760523249930424710347022 1.0158147017477521958478828870662455 GT 1 -18939107596094565383253367007045.3338084826998354344850043072520497 0.1003891328104328312367122207394361 0.0189817893390037814757553398427932 1.0191642562241412090080600615475872 GT 1 -1542361.3597615323540738886513883878231997 2.1611858374362938178519298268435725 0.0827671840790807482311423199790620 1.0863939502684670766610218153813405 GT 1 -12742130165443689437487006642542345034.2383868772508938714931230367165623 0.7535735787280382631795251797997690 0.0396651817480520857366070183545872 1.0404732863135837043147765702968397 GT 1 -1280003464237799173.9605801223631194232965995749149626 1.3480344271673670075082489157014536 0.0608614239393637444815260099766666 1.0627922323231502601542415694463149 GT 1 -591965114233396702269486760979786483.0179021888447840666393012746609484 1.8038063026202410242823604928774380 0.0348811795554758738400559293026777 1.0355040552287011572576511663747341 GT 1 -5486.6658481521879958364924846847130596 0.8196050128078793439312354323692850 0.0737392238809919294213882482738562 1.0765994683029355380151680069572247 GT 1 -54721733522.2528234559109178742574683724426663 0.1560223948328139877144848309097139 0.0034500565076266330249312455587105 1.0034560216766448733977600697395121 GT 1 -254017166602587811903835517721094130.5290876697380258222560229424450454 0.2211051864733175720127582113125873 0.0052280262459188287916681411557861 1.0052417401939352721321477320759913 GT 1 -4303534634064716491496002585338593793304689.4313034216933030975742921303114654 1.3390543101072238097961981014330684 0.0400166812839299401476606891118607 1.0408393710086524506070182003485222 GT 1 -94563145462627877644.9277748430821000105831920537114735 0.0765419866386248447150244712779895 0.0604222781881077817108420903704582 1.0623247367680722815271277579492214 GT 1 -77104384844853945545535566334418318.0593968541007866909868946420156002 0.1643746825499333879342458236409824 0.0086501375129039553731559099419980 1.0086877671103445705794047949963487 GT 1 -42493111232426.5378303825571928359139814088058623 1.4490181418784869464552104390704564 0.0739131456807942278860628251188708 1.0767872535733194146904263624472777 GT 1 -7568733.7039354002930611864791093307431141 1.0335971679853883059118104240000608 0.0035847555480383602240496888552117 1.0035911961808777018011515528665710 GT 1 -413177923979716.5680429560725000459174077863153112 0.1738149208148460564017491849309028 0.0435481494773170653194025690231669 1.0445248306028871341765418398131921 GT 1 -2631406783.6063378452684628788838605311469524 0.2149511443196994305362291392950109 0.0083794070846287746195516585864828 1.0084147116755349231007852603383983 GT 1 -194177.0404025637233094321242895906381035 1.7076951958033408385678080725677119 0.0330067586678326570122992597171964 1.0335637728685035299155416634422074 GT 1 -35654391356225106709808119856065723.2243756109318985331847070416004824 0.1417496367367450996832048642779013 0.0577751533395489807847751590565726 1.0595113421655251220280861790522930 GT 1 -124394829011586782107082076160834493902.8942599561139416795936562001954208 0.0522947783911157312430938872483975 0.0317061685003989287971976507029677 1.0322196928283994886116151856066982 GT 1 -126724201732610369277951363493533566812673.7295005708410431842369246927617048 0.4496563233972249076691978749957879 0.0529460571238691685139730388730131 1.0543992255639088159810366764071150 GT 1 -2977694261504975745769.3271542176472995815106088813355297 0.0334014909952806147763212410994841 0.0697869483551257139893931529365419 1.0723416312812489194128044052073782 GT 1 -140430663113410.3737816792973597526164506868554025 0.0292642638490822493610577898907964 0.0892711318021277960551105894349956 1.0935100460001763213255192524934039 GT 1 -32875708994854537174276009710446660535604.0749452601467497379718079204407902 1.8758696063539763530304727048298622 0.0386167515037172977652291172215228 1.0393821477470101458395414349470212 GT 1 -243449907201991292463180094.3655202101493441189275635094957877 0.4085060338743347457303957065800067 0.0920909448379190761093082910298079 1.0966110649102694850740211378173190 GT 1 -145959486588931314204725850417.8311433647043522560541149854533924 0.8481920036771820907750259933027484 0.0627642443901501426286584023541136 1.0648204215505860129412792865737091 GT 1 -4599052530216507281572.3133791354758362208786439902078976 2.7156725002478428117955208525787850 0.0221626236975705299308157963964960 1.0224119046730438517324858270083077 GT 1 -4396524613639574301519775825706908330.4188800415678476737838292008560749 2.7842283665309882482530966928043246 0.0026403002090475992362840519335288 1.0026437919491601972536235296434867 GT 1 -46014005847072.0130672143645706226379695413045205 0.6654712973947701148448347595983064 0.0717539004017284901779508636025216 1.0744583878209056152600456395870976 GT 1 -2525198.6378601857500309940424216265254004 0.5988417436872773270109554790974286 0.0110417648869349666167653541329151 1.0111031776615615106270213106823454 GT 1 -367050993366529538398430628847961059796136.0762702010153840585026246606268693 1.1244285877952161777389878207335181 0.0638403151259223000466267285136813 1.0659692135577205420824018446689215 GT 1 -2115203849680.6254044538005839391647333924532296 0.4434123798328847812834975902048851 0.0376558297351269976564351417412244 1.0383831269510917904935575495660959 GT 1 -253692486341815894173315069145.8303007599613514537034925242603382 0.0375673074739983221201667227092598 0.0574515670769487042744067091984578 1.0591679732635094089104286862900998 GT 1 -1119064620735276011621725296209739230.5846709080607453173680483955065665 1.2256530642233879440813961105408284 0.0426323183167659623703662075449872 1.0435677589301961541753220617655335 GT 1 -245847227006334.3287886515676351212737730909065371 0.2679908699974225559055934783041564 0.0564108030603256551448396163048318 1.0580643802851654228240343826920030 GT 1 -4895628.3854139496560202826542317118991311 1.0148155059372398253765105306833077 0.0947737013390364060084432320254255 1.0995703127714233680448349992788501 GT 1 -12484168093328210.8582804675979471673563472810748304 1.4405491980572318153280572574747216 0.0984150923544478424608271771565111 1.1036010559202447122622667335472293 GT 1 -9158376246799933133.4690251757235385611830404779912494 0.5209669441468046450742254596861836 0.0256029313313371403795045014901293 1.0259363903759978831364568568189800 GT 1 -736.8462825018544332406368744413652223 1.6607224053497788322612227887780135 0.0682954891705074155839062502546478 1.0707395630332462396709485050606585 GT 1 -710.8430642060324409191092173700121955 0.0224856708618998450839961261095759 0.0682281394534419690265004024499722 1.0706672790825299358325797546996679 GT 1 -166127406755.2468854743087120002925493641916678 0.4933930540596796953830027668581481 0.0136937953763104456611611569696986 1.0137884202342204532096278178562117 GT 1 -1089776496573149106447123612685222.5761662776978451655511346359381009 1.8661023314312554214879961294887426 0.0326595487123561075874574658188093 1.0332047759068828097441323733848001 GT 1 -4111355728590362.0239255067562442919146653253898507 2.3796484198706022811433775636779203 0.0521285113223713836753352466040274 1.0535363463829022520758007665836455 GT 1 -7847.2420753985522362661493656964428523 0.3937717539327356729765800175960707 0.0048887891107571610229816210348960 1.0049007783313835514604756370361448 GT 1 -60689720.2860785308391189212427158356944016 0.0180800342697706465825965412869818 0.0645182158946904830578480486856683 1.0666936052851399029173012205714478 GT 1 -131438051790004957701889511867299888075963.8393220105629129067459584287511055 2.4435000781719574118948704944345863 0.0201848022743565130235804470056022 1.0203912988491278471453912157837240 GT 1 -5991348195183971730737082.3796889595383073912399174808334832 1.0929437456030764333325508785528429 0.0014641221975844362644416184887756 1.0014651950718297016188346516647391 GT 1 -5404960303597017595157703484.4855202439545333065690861458078811 0.5626330707937337015451812868665338 0.0041019091402774781393631501799163 1.0041103450463580307694170698659062 GT 1 -14763104964136922956252274038000793.9364764810323624214370015938875091 2.8011573267053370619135207675424353 0.0328509083888483138163316811402387 1.0334026158774516031210435210994764 GT 1 -10136813038.4107291661060565166154515427811291 0.0254674175487712147358507510281476 0.0360193806445623829433965889310544 1.0366840889767606692533417928145098 GT 1 -54086.6756174417375111489211391116218379 0.1377190096560874160325862194038985 0.0055058233644441301137745396721130 1.0055210362753336475173552611513194 GT 1 -31212758152876121500480.6023430508575826875160336968178800 0.3637119432512776302236096451316610 0.0970025218334312718071461379768525 1.1020355182971036540592678261720898 GT 1 -292.4668913791710798965556629567251107 0.7315170775230591483358164838960071 0.0793297995468477316128015615070661 1.0826533953974787919707208967856271 GT 1 -1758904753095688301621530151470315.7404157774004314746760686528415339 0.6069340983241419075069523086925441 0.0405750861898869726896961260581985 1.0414212221357325233895650577737323 GT 1 -9169691066876153267024039256922165.5428148963822201345941692972834947 0.6558493444535512477550727385236855 0.0955905176368157020685904036344312 1.1004730539327287556110598341087820 GT 1 -1348.9761675476038592473252782058142469 0.2823304210650268127511513964783884 0.0718093223101795973513817622724942 1.0745180956538311547908218289037877 GT 1 -78558809720802112300391408290469559751.0421524765460752058612316029114454 2.0530275937621206356817912758031437 0.0844102325253751829603791765999648 1.0881868667256495468085088539657556 GT 1 -504.1437311753944148290555315053488209 0.0506122597631717841080080299596787 0.0456214325480950230832467714916731 1.0466948650181596953828968748982172 GT 1 -268103867424114518664635062782616035.1878229005729843335146628883924197 0.4255239957496743898698091766280829 0.0900130645058214463768191820019821 1.0943250361741020794337205535724682 GT 1 -1053662313930.6622460552491892298979269322338100 0.0705884076243667329268879935040781 0.0246092312052380103791545047043962 1.0249170997711022373567839419638847 GT 1 -6384.8204498507649388365339082976594214 0.0635945207680462408218338354127303 0.0653993536057256522936163463396668 1.0676359570893926640252445455692135 GT 1 -554315814865067.9170098258484256766168013218611561 2.5090903981658511142477917197705464 0.0722117258859469255389952876051159 1.0749517251211068498271344150455848 GT 1 -1129052804491015545307233681559481014.6785150118692448171070327173998719 0.1594292379965770291662384749826360 0.0010331031047853093300391519100889 1.0010336371236272321248222931479861 GT 1 -127538064974912664588811304.3510741283376109261614066934052990 0.8441034529494793825952185186990040 0.0980945876797560633835101481555213 1.1032456288081414117555305510008721 GT 1 -224205721485999838143277036211896925749210.3164003136359948627721033875556906 2.1236894854711700196511145941236348 0.0102486009534607219533931462962847 1.0103014794616202376963760437084236 GT 1 -1294512106245830062013140619182261531.3802408270546386265532809881797358 3.2200003473361661894627968301844018 0.0194248170577514505332095559850158 1.0196159581188612166700402445832433 GT 1 -1475314019621160688226706708073861226.9839585022915005884844804144952209 1.0011195775757611380027320245562585 0.0926528136013710990973108008966405 1.0972301166656431059557584978245579 GT 1 -2638107088227.2247958197155902573762744603658935 0.3763615271051678450769585719277344 0.0060950221418407497872257900720408 1.0061136726112622860370138084958153 GT 1 -188939902875792773.6940309181061117203974070516825068 0.0301203244108351370960844435234149 0.0484706348581534382968639996412473 1.0496847307759137742711392281277955 GT 1 -145375.3358433159599603355159673538829108 2.1036124360297870183202123055835809 0.0158991160808221979312556736318098 1.0160268628770337912057301978945689 GT 1 -1160718523.0887580619432496240256972278919130 0.1708303207994636986172264771703708 0.0779739518260706080399903445475254 1.0811818040090766087152932618212852 GT 1 -1020047900939985583.8106621625677030163035105119415791 1.2074345055935986401232597339853843 0.0438957494986195628203747133077779 1.0448883232344953297804322714033545 GT 1 -26393980977747542297772295727528.2521027054291491553795116749433443 0.4931090979755851661802810413661139 0.0812925659623038703417225936369008 1.0847875598274783315802338835566341 GT 1 -7069351707609479251323842649.2752808195707154023589319175609353 1.4470424960063990300241173835640372 0.0748933881022350463839150001179542 1.0778462920054946575940645312082800 GT 1 -448638563734068193931.6028277973656975509192839520018104 4.4465361728537855796154848861007310 0.0855039449662708220533312205060778 1.0893821249563339268332728206675625 LT 1 -38614352464625.7986990348244106802306268573798954 1.6792063669214640880618692474759450 0.0568739092502928244176602296233163 1.0585552929335013113675434821874852 GT 1 -26152504366.4374880510128453907851164683181060 1.7365200310966491195738500590012268 0.0891712143174571063515789826039767 1.0934003404582649251741011040404189 GT 1 -37779095881477708406931.8795919031554314489191124195536384 0.1996896357462196532344888007573980 0.0788941568326793797900050511888006 1.0821803273240810255232575376362553 GT 1 -920822636463091612346469.0212778282041192492364061615203401 1.2443141717329655687420642848378339 0.0548361597947968798528883160317152 1.0563969906377331505697043688691300 GT 1 -115713112053268861102331051562011255584.8983624518671412858825930152103286 0.0414656683510056580835287348184400 0.0130253287650788161086176753704445 1.0131109022539062513805645186029217 GT 1 -59308434850.0184933608775727515688191954044648 0.9767035893552663764121748558251240 0.0352762303869860565679902850771525 1.0359134677259313688521591190106637 GT 1 -56440239680933355.7663884719217378871949663325397399 0.1794578240591743784096116009561210 0.0313524704925292149040085975905411 1.0318544799015433202689552343238704 GT 1 -441939031.6708797672722750802870359231470269 0.3209248457347165880631963545183931 0.0215254838099481965209187560113603 1.0217605362357362824159180543565046 GT 1 -244972468422.3051685465756296190611584080249936 0.1726108752437917246816733241139168 0.0463706412367182560118785034488314 1.0474801958512608559302117586667178 GT 1 -613195996130217169.7787657583561301460851639197218234 0.8682148750229130341570629629809070 0.0686299920412619775630064964545939 1.0710986499843859680533518446818663 GT 1 -164328129335914967729106691347395.1149797884544316989571230600944298 0.0862524898893281935985548921207974 0.0309685175981044947688985141898748 1.0314581780403062248769959449395636 GT 1 -4769.0951887781121376551490931311892591 2.1904761577880897830391331780416714 0.0999796310143592881935803593676251 1.1053378837076633597983163702374559 GT 1 -35750152283454574194788937225743034002195.2054712546896907079881442069766912 1.2706646390664832173725390367080719 0.0328414405274627317003540086322673 1.0333928264715312435638089348748046 GT 1 -3227858112193879234818.6551147834776788730138056116750651 0.6654708177970802904926309652570532 0.0434608505166207894461996734898628 1.0444335610038596423866528253281338 GT 1 -11788204652.5484603709009575692175705139006456 0.5144715571266459847502048068271796 0.0908202604268363219447184855644745 1.0952124710475008689616382337919237 GT 1 -953423935148826.5191129529047338926110405612346844 0.4852955943905933411063794792476840 0.0951840171328828585191182859691645 1.1000236898058299310697612893479639 GT 1 -12.3828051272177768890777312133789930 0.3258947500010909018100347366303374 0.0799316918240982907999015661042013 1.0833073636780141974410088688318031 GT 1 -89203847001867836129452505184.8632334568558353555518594581290428 2.3594539581502378787354526322636775 0.0841041275392812963291214169236633 1.0878525971225802671520923422171956 GT 1 -499734488779018386.6760630637299147322308028387253563 0.0784146430227691906100449590020040 0.0390914494929882132775994001083785 1.0398760353026520811842248920519861 GT 1 -1469690403664347668960.9320175484583678950512160108180438 0.3160066338449001547403342104184053 0.0461711167995592256464227599357867 1.0472709913365855273335976596640659 GT 1 -10025622644654242976373051829315090.5171391346546510717087926706998455 2.1704960737854133030211524757497304 0.0232870238473163905204558412850866 1.0235624509072398761090667961715345 GT 1 -645237752429370733839893271818173786472.5513568573146438341224189593685202 2.0281720235818539643603753065558522 0.0292076784599921482647575157216842 1.0296427145758777691102346869392456 GT 1 -3508416456649200963580945575.0490317912272215316375748560928690 1.2222341377263457129176258895732271 0.0508152262349486297518425961513726 1.0521517956732391479999914951547714 GT 1 -558064974193767583410030870718506800.0565623739864364118526416692428598 1.2409989825673363786680509374317738 0.0071953019472977164999627184519305 1.0072213129789410140643405254144320 GT 1 -4428570.5951252622322750920091463951482353 0.2415515837685486656626399635295633 0.0768695862400823699252312882564252 1.0799847611125600537384604928856728 GT 1 -989584312550413.5433368043072310487053186767648276 1.5804147232148930772131490442035988 0.0467190388119937801226968147334372 1.0478456011621524114787845808343077 GT 1 -6576848983111266688076301802591090326079.4559865740004726758690413860688570 0.3577656450964740406001555743480729 0.0536690576584874966190292649331940 1.0551629377656954474660868815324837 GT 1 -72803427716600451337476688832468581.6635215598740965367921919711043566 0.0264540902299964860019299675700505 0.0173519502875216034481532639716140 1.0175042598605677858615249299316218 GT 1 -1640427586599892764356329.7705855499120854608203690835950206 0.4816208829160112654916094271290041 0.0409739732769786138164305084517240 1.0418370650269027614664351055878820 GT 1 -2015226641.8630828880102440559827636858959755 1.0432458324698246541912748759491529 0.0645811864982948821183989941722094 1.0667609211048138297933533230924996 GT 1 -43393.5068514867804441318826965932106210 2.4881725421826243158129268452673704 0.0718047906553644894295951143061112 1.0745132134201891439018090070606128 GT 1 -605068132963349554828453.0431520411116540372943812044786563 0.1581543103834893824044844575816002 0.0217146932925802868836607089217429 1.0219539268409681705083745228989103 GT 1 -14655804594.9056861486911109382783017249932991 0.4146489536240771793395076973851279 0.0331540317087026229298433101165190 1.0337160844365199365922540336402424 GT 1 -481838331939748238771942.7334373784096615628697421426988510 1.6756390413381101088093886646689576 0.0855429082437920252272494359040772 1.0894247321467865455449729972304139 GT 1 -93648034830103594929164267852367532.3750444463709687549725614942667408 1.7190387370317525112572851281317198 0.0514069908415841125461925667074771 1.0527754352069502949300856345240783 GT 1 -374431189883830954.3294229670331810462150960884354421 0.7712231951492682427714573008508397 0.0173268810324748939342684237865186 1.0174787482490840436796171167935143 GT 1 -3.6274811260047773146278619486477345 0.1192530761470058142240171462691088 0.0129320210250466666539107140690374 1.0130163675789925977506930617259535 GT 1 -2370151383075495471.1943350909358368311830300424840002 6.4980381802697917900029357980843428 0.0443775765081582009932024005609468 1.0453923984522507577925943773003616 LT 1 -11301499.9559123435902645305332846900101414 0.7814748522533820827624414043338214 0.0782700135362966441300029901843527 1.0815029546463720877370491936511866 GT 1 -23947136335915034992341576836.8057620611290343641523852864070903 3.4528915875019570239137695444590966 0.0123654649625166100489315723011913 1.0124425534737739455838740066633205 GT 1 -2548388805931388471133521517587.0783141187190705678152122600379083 1.3360571549542813564338913517418081 0.0442885500778395296934242386346043 1.0452992421161219630477923293915635 GT 1 -978586064280957635547889781563308.9437310452529470770080018246932577 0.9175596419861479642389480197718985 0.0314108462914978110646838397078695 1.0319147469814432904752831801540631 GT 1 -60378682404303733465.1416291959557270517529209951895620 0.0878701818517085624185829228550182 0.0076489115588479265558816837580596 1.0076783145125547355979772137525509 GT 1 -2627084582156922886.4144299087345835553261420266832820 0.0342934724374785130649738269611429 0.0626777905560356307699838810325692 1.0647281823818993020983774943762453 GT 1 -631.2907056234378030324753426433584922 4.3058843294875004478536099365452528 0.0966838589879465138283615528845878 1.1016826860475903723489087714060781 LT 1 -793449619126928.1924043521610799574557187084388709 2.3538862760836046508739738978086068 0.0952018252518788635964211305378411 1.1052145931877576777350608798105290 LT 3 -200869356871553.6377620616120061581096395866898321 0.8373566925331343537048118742284212 0.0809305713208377271743430896299566 1.0843936114069800460061677613582950 GT 1 -25566930730349298008037384961706532283245109.7802596958856363374512623063722414 0.3674055547482674185961211535692527 0.0359402896484037584907229413109340 1.0366020460910550512222775315976897 GT 1 -86440793433.1626371177216129502283554882807092 0.1449809984635384196442347223032047 0.0572709938113968061093015478501558 1.0589764117857577050689006961970259 GT 1 -16220269409316161469030787534355.3974552545449971004074243441923792 0.8915322365628723808757897914081489 0.0574514317683771868745612670006003 1.0591678297074256269938151003138370 GT 1 -187895136401525898036308947412247483969324.7817758992771145512840742656743970 1.2613197806360580717129676679956870 0.0749007617402547438841295163084544 1.0778542626191635191549411466675390 GT 1 -1727746589115430643554256072774442943619746.0088780284630768158194905697040649 0.1584082819917376991154090962995782 0.0748876199982970886731963603417856 1.0778400569555214057695878360296726 GT 1 -16635493324638535515213023251344431961611031.8400096417170542655662676249409620 0.7771733487975152363936573011159911 0.0433018318060818340463205054025310 1.0442673310130102277065918082002963 GT 1 -20030786348164077129209260463906647.3828645911656146696747052913009253 0.3013195653735546142188989990404822 0.0539236063608013065938982400744363 1.0554319588152435185900953390455156 GT 1 -8251885203649344203304633645.7403570307084878388446365946557463 1.4825309775865837561369265735484541 0.0575421646725634526158214518934855 1.0592640977138207527101999846888540 GT 1 -88415779158943281208387867787621862976.9878964059632135202979140458840097 1.1749495393021045545094848558304063 0.0268229511255449050314752321507757 1.0271892515049305454644074418217230 GT 1 -121347999256060987529072090740981521.5794501054694710899459336542262333 0.0031903797619949822528127255172864 0.0738913382138681547031793237272543 1.0767637058789885958596287785821752 GT 1 -57386164865820281172668600363262349124823.3246247584689781516294780760687922 0.0707897694400858942862580096279882 0.0490962073592769688395079994490752 1.0503423859698548828508601373423883 GT 1 -447043728217342839961278719329958717.3122867207866595590503551177707293 1.1660954498538798197870869636919538 0.0940767425018786865069227545935031 1.0988006812750179733140599354710133 GT 1 -8586437.5074614745108337110601431247298092 0.5973122891340822874788167578798605 0.0307976302401884604404988185077736 1.0312818449748526084498003495597865 GT 1 -13453657396151696952670924625695409780.9248797343212007375018134224687119 1.6921558746859875259862253830675382 0.0682296423857188209327771085561079 1.0706688920669444617358053856196003 GT 1 -1415008037486899137920632840627.3594263752408457841689726716760684 1.6487591740246602128458210146971456 0.0645255970937329249692803024397551 1.0667014955811219483100064738995518 GT 1 -130458.9317993018246054636835100990586081 2.1339187803948063891390857426457428 0.0659756327048280940834693927497843 1.0682527519124849603837161788419779 GT 1 -213366241846421673543924737179510819134940.8126656539552365359480683750172662 0.6613787650164205451111383095886107 0.0606358162625295683522168547982626 1.0625520328592504668089231740830984 GT 1 -66380356475022245253528916.0846140060066842414096682357056121 4.2545446184950918085839048648001324 0.0080501592199408826347834862387758 1.0080827367054318527602429935217610 GT 1 -1795244152761097528301.5605952567772649638709516904240280 1.5055871891197180466838607536982807 0.0976250034758021576018067703926060 1.1027251063746497989633809911917271 GT 1 -1276057230468574692252130276096908210682828.9949608906757533838033855144235850 0.6344840713145182469972300131578005 0.0231141397066603432566525777629985 1.0233854604853763315888145411330218 GT 1 -95567979941016.9725624465510905126002973896341277 1.5636666385828906362602403775310495 0.0348953352683212088785277505973172 1.0355187226627618267629247178707611 GT 1 -785834380737896029714009019972286699258635.0566511846211889439444809285806337 1.6565566252081139584155655523295853 0.0682136527692869415169652173574954 1.0706517317450817559042511895742652 GT 1 -63133697198.3764140609122806133746090946703694 0.0302056105535971310989649331703420 0.0161270872329523646421732651938551 1.0162585439629646643746304808627816 GT 1 -87481928533287.8579173805295171788009814128739315 1.1303170093128704261900444891121110 0.0474114158590859346485056959832813 1.0485721745829286983783920148830806 GT 1 -74613908622661627638739379264146377.8031943517431947585992684254224598 0.9205067507076789046648666554726199 0.0031449943463532787320412666464129 1.0031499502346274795893113286744964 GT 1 -45619024055122206440.8833379375795450901682425050931852 1.3104892669754667010270519435707721 0.0027041102909381970861118595245210 1.0027077730015767302470799283357242 GT 1 -15749945774379039410748025827052.1063578330575506980075316147361696 0.5072992739295622636913152548732830 0.0357505417061038484218372470651329 1.0364052436840576032907402769337087 GT 1 -2.9845261755916400825868653147240325 2.8628199054348055359338342122145221 0.0052143446995458601333448280303231 1.0052279868387437605648345213802689 GT 1 -19789191911673913486403080745.9817548128673445715530750177269343 1.8087308548629477864636055147920935 0.0665566675746163616477351751054676 1.0688750222613903342693068221200133 GT 1 -5572318322392728436064269691027.4168487125210208951153369354324136 1.9642616573256016574051736502160732 0.0205460129382108565864130802776764 1.0207600186460309739164487426606240 GT 1 -23243350391522957.7044645236545939463951783365372306 0.4435916872969799966381485774046531 0.0092714526850629614239047391832641 1.0093147001211041840036792278050247 GT 1 -1386578518572002815189085480335138.3217064953294606963809973189204395 0.3942162243894752039660202908527853 0.0123993069810298645482951437416683 1.0124768197910569407600571881719990 GT 1 -6819228937444501740001967905662974180.6329805647826957765088043858522999 0.6489032832740250850631213688967949 0.0789626177737291089604818709059883 1.0822546548140802029476111630283633 GT 1 -27342804.9880420397079207679673193721036355 1.0479743059842222978871153744217081 0.0170432011143615148542059883568831 1.0171901080350678329554170847814838 GT 1 -26410640511249974948.2324320021523532390594277912099951 1.4117775816079456695480827236350027 0.0682442507808102956196704809897131 1.0706845702965525209533651194017442 GT 1 -12304752351182520826959541327.1289954293655602482817778323180802 0.6711008934549669008532225641612649 0.0801308465266481180299097003175854 1.0835238435393993445639171238192988 GT 1 -2334241659908242483660077230177561.4210982382561731467009143715042160 0.3413450959810726136006091305469445 0.0316064939059746209348016289841773 1.0321167597502742794523024522237758 GT 1 -258894282674244841874319222969371.6094848681765724955555653253275449 0.7973505728661696407377731168074541 0.0623157717004369522365317690683249 1.0643420302569681047236873011769048 GT 1 -3942926215956578713219846.4358411393028753317871564872397974 0.3166083644492461265555491296270699 0.0515263096915668442087478270703389 1.0529012282011276800068365873025649 GT 1 -34962542981606382902436914767513288.5430235076757053263382304220100660 1.3561871134115766627769199984816416 0.0040970907979177548209754632392233 1.0041055068698940334060625839963961 GT 1 -39420325594397525086.6396973965599761743601943398655390 1.6333190147875276896313634971342836 0.0099374443028413067318655643071222 1.0099871502768644642263511997343914 GT 1 -866617124032894.7754041451707284536770056010602173 2.2604194070789152090049148057529654 0.0147956559274153914711646260360892 1.0149062034147966215814394296270353 GT 1 -7226023746615434230293184307906952137.8789696802034368814365507463467067 0.6048101001910491828861028552306727 0.0915366795353853095775026229376293 1.0960007656928017685319220350319711 GT 1 -1.6317106133642343321708803518223968 0.0226471349241549592413277015433664 0.0841580355401969538310177356844940 1.0879114570749649928348926258154627 GT 1 -18.6658448977956823459121487542314512 0.5611557432271562985541999900474154 0.0287008508510522263048331449194675 1.0291207745662591545894629003720372 GT 1 -481555.9852801634911070103282314283087096 0.0758782723213085645328024781465342 0.0240852753891932527037198166134951 1.0243800687112215855447887973446456 GT 1 -96907863624528762425896276260192657468.8470891970357849255102813570644225 0.9763996161381411304971879151119231 0.0732721373352961890323889337668327 1.0760953242992299660709801094712701 GT 1 -114513579419688093.3822150148713645686848052585028181 0.0191325844368079931807243287562645 0.0087274298312600867661372062801482 1.0087657368912995361360305583624374 GT 1 -34.6798311356223139825028654112850177 0.5695087348671971271187401960666454 0.0461810457361440359280382936487850 1.0472814009482443519340990977794001 GT 1 -3046028328237.8017233500744898475894438569890067 0.9908490964074203713183039347532093 0.0013854636397589721966691527340161 1.0013864242818998753951738408983366 GT 1 -10754707671160.2764900227272750786745347396387517 0.1531506193297756501028640143157127 0.0384788744904824925761836209541133 1.0392387427859159382145136885542520 GT 1 -1549984412445883811840619018472747447.9700654307355761061199508725452529 1.1574345925868644878926312772886223 0.0834305455758273530298473102557911 1.0871174323323832060926368297345749 GT 1 -117177846615966701430709360284831662.6630722708256281114568824939128685 0.6120290307971690759843187765556304 0.0720825419412871644329632796374522 1.0748124962092931348928140757255504 GT 1 -7802415.9772082744897731311484475711462957 0.8543535642365982327008183528374986 0.0072191421592874580390953922449359 1.0072453262599805814835398841574470 GT 1 -77811665123907235103378574060.0646469342530203492728998327963194 0.2241095668610613685333065122766832 0.0247748506604576549844170258937611 1.0250869122432326208282122235566789 GT 1 -2823314858556.6700967427122659260845442162607736 0.0301051958248179789898070988637339 0.0208867128632304612296142744365618 1.0211079259484191754215096485892543 GT 1 -622.2997920708719377147643938519513675 0.2102719298518214134291961781567000 0.0374541395794092097878721153415180 1.0381735667650648778118779649502547 GT 1 -289636786619871266.8703110935447942151192126759476684 0.8117189440817855620310925435167941 0.0668114301096934981013461873727939 1.0691479872057298641174893315866737 GT 1 -1864037891.1957047859258145285112211446139930 0.0158412204155429842104367421017265 0.0639837550161246021599941389951942 1.0661224469031506959702785018390232 GT 1 -14184696605.8554363500146100817304207107014173 0.4760684931068483518879676639194983 0.0243992754729805534872551492341470 1.0247018699930261880687512305154877 GT 1 -9282706084167449483.1219106358882676094441280914537965 1.3139553780964790939949251902533488 0.0033718961443218820161936475740298 1.0033775937976615506431265718672309 GT 1 -30417713488832126660414355792361771.3561233285064083321280370027830268 0.5180217203474138896225028420459331 0.0700128012773893922680825856310913 1.0725844577439685537426850003725731 GT 1 -469611626397329265139546122.8135970357581508016844791428198322 2.4734345373772569155105622711182030 0.0103200831809789363627690795703337 1.0103737044759224192232140687956642 GT 1 -55765921474896135338396269809.5685922373271880779191519821941609 0.5649991857513034447189651462519576 0.0765673829419170442724842926781769 1.0796574467498009421956788553338559 GT 1 -4.1613143560781627132669548944078671 1.3581911352325764221236880443588535 0.0923327134790459577527467137494459 1.0968773920671124960797559261953714 GT 1 -17218076.9935947426958701217392413833484687 0.5472054305537512227595099242749657 0.0631895682774854667311836124616229 1.0652743312754507525795653607564550 GT 1 -90113276856658473.3423540053897898193505002825245052 0.5544704234170070715715619026137589 0.0492102976792088501347957660658792 1.0504623740966177306238108770552833 GT 1 -142046476.8387460416934023986977220388844389 0.7813956068323882825882995269184962 0.0448699853811501848773373673967920 1.0459078068056001790064614583895486 GT 1 -58.5367073193203887457947101081224284 0.3101870934553270434507182790632387 0.0000710481315826310268040375819023 1.0000710506556206845512508889099371 GT 1 -740919747738475.3496510260190940909259480596735612 1.2770890033254227037032649094702686 0.0575714014888435141123013643556009 1.0592951200775637662804443508568207 GT 1 -99000384628010906988741973378441335757.8774335324260634053766854782593926 2.5194928795591280178931007795819362 0.0256237065985914636940023010600154 1.0259577117545219019223220137947460 GT 1 -5868836614373026.4712598883968745072617779773151266 0.0116854402547404475943595749678676 0.0308812438078001621711962993879447 1.0313681191907645850610233916758391 GT 1 -321.6595858096801724894312427580264899 4.3896940314810545412503247408535424 0.0083352210936468565156746226324898 1.0083701532961740726606066534559865 GT 1 -6455906610656667203844.3727298459893410146975248035546958 2.0289746349715289476271607514812575 0.0598281386203324261902932075677415 1.0616925891747189600733591751887133 GT 1 -21622237527333065010728720826776739962.7687516760020719775505869805224729 0.2487882787782842052771116476287110 0.0628134425890247611976592056197265 1.0648729158028622017888126191782310 GT 1 -1381556907305388206184.8362801667626639331957254914755979 1.4547356495864659604641352409943473 0.0821004298980320931247142184991452 1.0856672951067298092688985711463789 GT 1 -779068785873636818162560671838882635.3138942074742096432812160229049495 0.4147861269728046578744976107822976 0.0096258149348422466983727269509234 1.0096724425518895050471779929911926 GT 1 -6368300246125643147016507427719031.6375765453367701947221845931875682 0.2671080311812655100571201447859030 0.0401299907585138506787903764046253 1.0409574107287346305994108718928734 GT 1 -763.1579058660368480303035166010678407 0.3569457029904701418266633471951858 0.0576280101694613032511140907074941 1.0593551886927636550329677677765246 GT 1 -23546097280422321595022366053348820349778.3773662326695004679134796984955729 0.5577973001256191907417569559936910 0.0212482236872676155404323929601249 1.0214772167998618805863590927237004 GT 1 -2478326808999881492864314036954912543.2765757645545560616811258002101413 1.0620436747603944366026370777439206 0.0907342532055547420166435365763624 1.0951178768218389111318639661918177 GT 1 -1466227035122023027053136610148346106.5951419850755009178282925740964892 0.8227750162731437633162212906090720 0.0232072666546489073267844859229539 1.0234807954584495133399841581956006 GT 1 -42629538736053662569943591095.9575653828781138460618603422769048 0.4672670244995722491928846314230321 0.0701619659888432561522924630434234 1.0727448649791736013000544095024849 GT 1 -3769758.8506790410800864803770198354673468 1.0653323942342207925399446189691583 0.0412474096524511504472045983115049 1.0421222245076598348578859248034786 GT 1 -2295420001659020696630953786449.4497401906649252545719449385207248 0.5043080625530411183181915972023276 0.0815955105336737062736511991781215 1.0851173650725915322894194819093374 GT 1 -2329336.1673594116663262505183064015687687 0.1610763905357206408389775696340816 0.0838673096089416658387026651220508 1.0875940662934647707298642862283724 GT 1 -153164971.9073423156484016505892980382553446 0.7118845552377678065932597165171809 0.0534718489008739382362238194878517 1.0549545664621890282676076799118498 GT 1 -200255992957812868734570260041440998865610.7983599453651073606407429423331526 0.7660319643756093868245645706688581 0.0083790457811147717060859244751617 1.0084143473189949696153771996385179 GT 1 -188458225.7347258033306727552126230058396857 0.2398404996472714046417844287366375 0.0113857252005761824756524794406934 1.0114510388048425876929388131738381 GT 1 -46234403655949114825026378155880604884.3277564559107649221339196262110803 0.1012574424956201741744076513791070 0.0865722887698956106273699266688894 1.0905510401430474787576832826693819 GT 1 -65299.6324621372032252362110439486905397 0.1442016422246176189686668640673116 0.0137464076910079909518446597963968 1.0138417644368061829498328036834243 GT 1 -13497027541734332257662.0517827398378236270390955200154165 0.0233580622569434620287911518830024 0.0171792381868947029127014212471418 1.0173285133922863720834122030762623 GT 1 -14639921933731806822305197544060976274667790.0864808053785202068251741956843791 1.1679071090680131558774931742480695 0.0946803825099448031443482149303331 1.0994672291342266688130519799177401 GT 1 -757189077667938647720.9642515471283775659889752585057214 0.7935942735160158986555012990417506 0.0096387332287821628358118508642680 1.0096854864886031358537931329601751 GT 1 -1497.7277583973199190031378133858815020 0.2447321838583333255122139652023760 0.0974179291072177860689650578687127 1.1024956556323236032763348247208364 GT 1 -7022770700206685990.0747251024059501347475403605557430 0.1904467135643952350886948890722656 0.0205537688274393532846926191656711 1.0207679372619526444736423750515708 GT 1 -19655729232303819790.3398985230961912446065474554265419 1.1571855799414428318469274610035467 0.0887525865553366620959718571197066 1.0929408341328028634343604915922946 GT 1 -7800775378113587951005598465381107429.8925226225979042422985099573571572 1.7549249844974565470810602977537568 0.0414155126987354453529360898591291 1.0422975750484433774507180881174550 GT 1 -469445603589963845757084298113425.0772526270654051317705931077351960 0.5039779080691733881458145113311534 0.0270479099655945491247997836511734 1.0274204374386427541674920380874038 GT 1 -14581138565654386060.1941950201896784201071647975412182 0.2489106824670485121813998117143818 0.0694298620382131208997827307679559 1.0719578291023702160355453692582913 GT 1 -6029225061.3780958941993260466267740471754539 2.2044991614831365445845078244518664 0.0137734692529521875936836118285829 1.0138692035593905636897334895013920 GT 1 -14162028316667293501376027607.5983093355218915639854888531680884 1.4431040939736573035257993971103304 0.0481736054303382781972915821341047 1.0493726194654445185037943472600013 GT 1 -71937865343227435058837046050.4097549800786670430435446419873328 4.9718937052506426014430244283357896 0.0941466843469412284083317054440775 1.0988778892995986618467577394137907 LT 1 -1373539563227612852698824565.6282579989570473245960552212224837 0.1285801982641664884534444351514784 0.0469616870957993954409316111341101 1.0481001737181914422183839062985094 GT 1 -25604515822378978835078766998327961888579.4919483657477382338277131793252216 1.8467054789179867614149770484511693 0.0199449681378821964433465338682241 1.0201465539328055692279178201251317 GT 1 -493214352601806618123777562613096133962.3299402209102199229559430193936115 2.4694111397207670102823615169048824 0.0063925774315521541205892987323380 1.0064130974519532439802745497112758 GT 1 -76692627379498950927489902281584957448570.1345495523009539464986133935941699 0.2319938665735380285852652319897052 0.0450761240229512992818601547148952 1.0461236526972960694209314339177252 GT 1 -354800914401628654035020.6269953557955077901003024792318408 2.0302938472705122619986472658358893 0.0311165572716663708593433219069271 1.0316109604683995482919573123852733 GT 1 -1188.5243619091794125036795761469789010 0.4496060024719974340732294224059552 0.0428885469913211299807316414049089 1.0438354334861022364484779452981550 GT 1 -60713091454.9877981052877851835952130644885476 0.1937500848557137456479977965242753 0.0838836696259571143548600553107314 1.0876119241466610046729554829776232 GT 1 -4912439246148282267593316323865.1673982280376125387040858078625004 1.0738618284327663524807306311966231 0.0945885901696863946593155721511725 1.0993658420823099865384343443659030 GT 1 -19831443.0564677549708734056011089366725091 0.2367390518059493328902076634027739 0.0817260423632833313618887784568624 1.0852595040844967212800545539747248 GT 1 -8549601805636122347667807641779781133.8919278480692794071549319736695894 0.4273671396328359095225338400029828 0.0123135395043045126205655535863387 1.0123899792761205236228853255963898 GT 1 -19410698010854.5178282791274450191898980314773175 0.7014546679642041100050593343786717 0.0929651684818457777718912366747485 1.0975744266075142268467696440287874 GT 1 -7980214936.5037802261416646521807341597023669 1.3808389103299339882195569903302460 0.0600237509800555122527591550684021 1.0619006710373625504768375998714751 GT 1 -5375946412809180080525503942.6583116461468865126851922911115897 1.3743441325619262141898608394902978 0.0849692969068344572518240359400296 1.0887976589765048945219723730662000 GT 1 -965893852307157033848489.8003256179756164377677896909644010 0.9770924803327225943674948677649552 0.0557932896083621434349349202865467 1.0574101639351988018900919912456543 GT 1 -394429650.0511325155951362208828569746368705 0.1301658822178432015935206016102170 0.0459749191475989517162756032092645 1.0470653176777535732450293325439200 GT 1 -405845214363395821.6534955758198323984099468938975413 3.7323764473748801961446000820160346 0.0401833135133959491597933711814978 1.0410129643302827084227694677642747 LT 1 -5619673910.7620299764953293244153962978328049 0.7880331047418731603864752546951190 0.0595516115853072264383260829672004 1.0613985084988904884829780964706136 GT 1 -551958785.6074951088867850379752056405852765 0.1262519821074481316290351986885600 0.0997963104503745661542670795886949 1.1051342195429176190386976388249621 GT 1 -3469.8732296884302796787248700954089101 0.5403175185457639272189923578737755 0.0625365092549220305385609887552174 1.0645774651011276424749381631131112 GT 1 -1898182591723629569658639542880541.2029469505075892341806070685246069 0.0112369787036980570062530946604185 0.0979967129118086302991872419227608 1.1031371147042119038028940803754426 GT 1 -70734041347526889344215744451840709.8865596085659916660320872504992160 0.4382624342976019880069363328964745 0.0719651609403857090410678650681669 1.0746860048105214988622660733533227 GT 1 -158561359743702.4815380946391660433844822098746316 0.2933835433536304159639925908905208 0.0323052247573391558145940631132345 1.0328385562596959684091001544995706 GT 1 -32112146219447888544578153.8500872029008839946271933338254714 1.9793672424678773210991531764613748 0.0387195914071359237177792859469882 1.0394891242357345409366709447224405 GT 1 -11865054976.9720993043115820762656538279016106 0.5356461377327972789315530684266690 0.0910432225447970509755360212693634 1.0954577354894062886695702259219445 GT 1 -125822208456395512557353467278529325525.5803209195080048570581681448399480 0.6687361788753183678751817099592798 0.0474315008872835432423878924249403 1.0485932594880789356007067510005735 GT 1 -3700161823.7256580292481808356200978025556252 0.0390399368483389100085906571032183 0.0505062170373620106109651176129248 1.0518262964472432810682985828804740 GT 1 -16496907183242019065648754844659725381321710.2263700245594255073440753853073998 3.9496307574802312533931658151585716 0.0379218981577042021868017808335978 1.0386596446656588895866840282577593 LT 1 -4216948542794070.3441590162494374765636720824424987 0.6975430736022844038725488634462815 0.0713566385928061771729560481127557 1.0740305090232435248899935344566178 GT 1 -18492886934266010091835107374058296041256331.3841230845827416518446310466924973 2.0840431744389267336850466484313767 0.0589543658798569784067155081062810 1.0607636452270894233547140793945773 GT 1 -13127042419837848314326.7659380534084523460594255022343532 2.6698646316610202335137306154054355 0.0924962900572613438553481932281375 1.0970576247603153564062459625507911 LT 1 -897836857317499962.8771663666192468648119217077226521 0.9295244544470242422259030286326873 0.0494748814282335898233718386221185 1.0507406907097585507345272478316034 GT 1 -1662165153445648018821779074153654990.6678418014902361831452972031076731 0.1529401333646558169660088149719924 0.0937494413277850178248223057655476 1.0984394563475501407987054448660801 GT 1 -98398393056124148420.1709834516838443059280586805683356 4.2764054970067363599205528613162256 0.0088720718540347446543502083709955 1.0089116630279750411223036971439858 GT 1 -1426169.7113778468503082537546244156966120 0.5612710168864718891414361356824373 0.0202915329018900437832754744205059 1.0205002341271804112661606788124638 GT 1 -1614236651973088174311328494801493390138989.5540507557768914535029951530936338 1.1361773544263992787904304506913355 0.0174861720563947142763372193446598 1.0176408610949067253693828738786747 GT 1 -383642254.0160033909509429174162189721141875 1.5973233854015433335803609440875811 0.0108005264641104742073757138220171 1.0108592755470176121454545444227747 GT 1 -1668232086394453267692562958751741313.7699409402397612521471216680970348 0.2662981064548741226190424755196663 0.0956268017844514682828218857218345 1.1005131738963155628361061430335120 GT 1 -273897.0787700371649028051891419427737157 3.9295293912791979110910130280325148 0.0308585746295526466068023586480809 1.0313447279263056794047340397450731 LT 1 -36847816683343.5224845634523159472312427195319888 1.4978611673822935430452618652962408 0.0792844393182731297587048211475448 1.0826041279060696906901641380277817 GT 1 -307211142233695277278352706100827177631.6797655968158814741763500812094836 1.0839873591999708990843936407239394 0.0532630696096462782340966204594933 1.0547340170059980378650521666178485 GT 1 -213.2994004339172599770298440013012202 0.3046662742541607931314347462841421 0.0394764747567768727034903411213700 1.0402768043683935841721039909422173 GT 1 -34058017737174099.3393104404666013036310723232529741 1.0371010747031367114032655400741080 0.0338907661959711695527045332888315 1.0344783726904280171247455076474349 GT 1 -25809.5555494192022832064982090030605362 1.1011089571677349427244851636166208 0.0266991952487730284077208368281686 1.0270620927225091453266858643898050 GT 1 -101396018297822136019984893565.0180283381998581404930831130843025 1.2064825689032879827178879037917744 0.0482813320175688512522497288925638 1.0494858046896505056416494926557607 GT 1 -304862893485.1026130550034384951493123245593499 0.4414187840192277452657842291129617 0.0993925473161139945398732894137159 1.1046857959058607729359087721784078 GT 1 -859073796324020714030.6342337359031085589361010747789421 0.8799618097837718124743136466554669 0.0928583332363895663222432842860532 1.0974566483806648593524912846827628 GT 1 -15066174130756690102746898365247.1477766184278516128184072704772557 2.4880202757203785607206410963235645 0.0679769766096809687629860673495205 1.0703977613931682833648830523074550 GT 1 -24253356812687751418756682936251733060.4628794479651331837307050563921322 0.8162276292907609889617575316546186 0.0219521741486503699559798949060310 1.0221967084544717525152613641242699 GT 1 -8036647823780.3743063611490624556434907706553175 0.5665381188072362117711884900189559 0.0414952392906332924745213583329609 1.0423807496758390942932467800436792 GT 1 -23502544608008221211556972253278050.1631274198300539749463988151722905 1.2275124550323100088219650411175397 0.0497609132024662560588059824911852 1.0510416557380179659611334012876156 GT 1 -403701387362485245105999923.3018478276878198741508973255503613 0.4688128943832244284558673958903640 0.0480414660153602625105399854534456 1.0492338018782178381171119340280796 GT 1 -91477357332969597214689914799830643.7201741746212942160725576310287945 0.1025157235331322953005111341980261 0.0761002735173511498813858242986406 1.0791517343519703769750418591428795 GT 1 -4429306049935.8035829346167581010559045554355708 0.3370578849435123145211309565753250 0.0514737290725160872613226919702499 1.0528457926501116794210219268205746 GT 1 -129488.3558134796064333228561555165877233 4.2043273468981523787720545029245062 0.0842533529135220157142287429953122 1.0880155387151436133083210707127578 LT 1 -91226792245414197470876.8209335217599279193844879720197262 0.2777793700842539518377294072384000 0.0017447532099905545103337372407753 1.0017462770646305785413558923805771 GT 1 -1724805125464.1062312101367855832328935163676974 1.1203760044836272871576010941354390 0.0955493423703102813347509319258268 1.1004275277302300983974773817406669 GT 1 -110261509561414818383869112401253.5152790893443458242037843676249714 0.9896431842622397248538675369951948 0.0794125763850945315199221340680772 1.0827433087667113715710772814515270 GT 1 -19742321778386637676598350741.4312907323778432429691161938518278 1.2441458852317619266898596356604881 0.0886000639896652955064265185037193 1.0927734703626550128405488281287082 GT 1 -2880608174399127662519802109546.6782789846960827605796498194874002 0.9968326830295893194261331814296241 0.0100691719130003433451845853248674 1.0101202089137591268411005196384994 GT 1 -16726867.5019803681463950465275671109833367 0.9224660688902778989341692371534003 0.0691832756441829366899732277193963 1.0716928799932251664234936600829971 GT 1 -6351946743357449.2976538806069215949691792399081305 0.6446709197630566315759489255731426 0.0262992591194166951709317381616833 1.0266512701056719361087490362040481 GT 1 -6077694378750655158094442315339.8266237770699402304176478126701991 0.9622332960573813217100013852325502 0.0582313585555773808594176061607086 1.0599956381334521983281276436376872 GT 1 -42391258820930922.1606819672843621281054033246546216 0.1863651844554983936432538603759748 0.0764167047735387126696911106161125 1.0794942882542942918736314991800058 GT 1 -6481749078579296.6856259732353984930833305763382546 0.3119620844301070063097324740400291 0.0273109758131501929742520108710181 1.0276908530330048056804187820461097 GT 1 -70223.4581644242675738629660837249647253 0.3507370144425224464014897138712752 0.0784320982288288871683348620377940 1.0816788184543702634788264463251080 GT 1 -51527310983850317459123745.8204030161112253925330374884283932 0.6689750664889939189953752523784001 0.0888915640065209824292215626721966 1.0930933591750404688662905695638798 GT 1 -8834924054305902309262755341967657415245.7444330758062991779726973981609555 2.5383804872158000661130341049065694 0.0389211149514092374331850753875407 1.0396987869618212935062029393793852 GT 1 -1925473999185955110.4841356796641916908688862532678440 0.3811107064872741717372241169235412 0.0448967789934169964185584032319553 1.0459358595185033718051467976579990 GT 1 -99440289172911.7014489389874244352480877406954257 1.1092975542557579709475487457487946 0.0834792756083220017664379455291749 1.0871705994193811916981795571837296 GT 1 -7967981606019963084931625.9427202165723063662125110285297979 1.7214303492908752745659046304693452 0.0902522648946455860310294458832515 1.0945879320721321059323061837150251 GT 1 -862428793295444471.5930680311932499482159609932847706 0.7594044700998539423244624334061812 0.0897184669927850455320839196185139 1.0940013503874103146415416857198482 GT 1 -2728979844.4259142560255711715164423528841023 0.1868864602736822945487430004513138 0.0498530265276649909703007462436651 1.0511385974354936797863912085950512 GT 1 -196136003300464835586304959212120677.4238781285597171847443738558154984 0.1804302941363343682913972887232462 0.0744162801817420605005690890043395 1.0773306920448894082629362444091051 GT 1 -157094016828000450497973000628983718.9385891745440857941489576333539695 1.3914095022844038350517372387428085 0.0378939966210567486969013578359176 1.0386306437643691442603355945000777 GT 1 -2971163837855490325040579327183130430618411.8519921059164614756507927249545652 3.5447260998274725983260241113684718 0.0281206489767002842253524137047483 1.0289304047566310965484949009927848 GT 2 -14.1474178940412322917215911748471532 1.0510891932063410149593522009428998 0.0000993222604498478608296413368631 1.0000993271932321843927412621522400 GT 1 -1195795353032865637292394544407134521.2581522695086537283942567845712799 0.3625771764071162541190290139210755 0.0513398364577342718895883068282539 1.0527046440391249770420063999565842 GT 1 -1832673263542167455227593541856763.3646370361451870033034710004972247 0.0159800463909871163793936170982871 0.0689670060989710128432789719214825 1.0714605631267628200872462539980454 GT 1 -22822727808693905681410613183.1899906574389586750421585138516071 0.9217823917428936317097650324395916 0.0073860387777041312367999466936647 1.0074134506221551145805190290436586 GT 1 -4072686325165585607313071882869255402091.6842368914543894573715912294445441 0.5150907522962764402022919374503345 0.0855491193053744253058896336579450 1.0894315242453240141141101169311794 GT 1 -3332486827333714993801273077.7510584544446761066956395591872769 0.2405420578011348873167635355444072 0.0781901470561763953361771452463512 1.0814163099441931738452264927028337 GT 1 -2602.4241848292165218056390234934150312 0.7390334032244088475892110847789952 0.0135630649105625232928443710785582 1.0136558835006664838576005335562129 GT 1 -42739.3305823723643918852630308852319716 0.6482730954293170860978531970078003 0.0851857721488068968143135237422254 1.0890342639907566884554580149366987 GT 1 -20611694524593207440735806731779072158459.8142280047061319873782741854906021 0.8158569861514460688350242739655591 0.0206748448918068833008740843745345 1.0208915617598085434350465190007324 GT 1 -382690.6609476943822460415300649115364235 0.3695674713583575164206137153276656 0.0205499743257036886326882091865675 1.0207640631397550991797973727440623 GT 1 -709750915457194472248735706964454664.0976932919064718491802332836215762 0.0790403562394790762852672090327054 0.0216654688051858754149968467665473 1.0219036109988702267661606457637314 GT 1 -28026358097481225101460103963.9482225258845270759900721603973621 4.0297914190632561077957372938664062 0.0736851107447829209598803716264448 1.0765410489495608758948686023640343 LT 1 -1770815658006273815459614948621018371.5961651020323813813025356127516786 0.1190578929831344230402289507633494 0.0400935617934633635932432559860316 1.0409194594713335047153124348830718 GT 1 -25374035071540744.9461323003998759278649780420498223 1.9243987944686746742335692076168254 0.0638310517318395190720206712521464 1.0659593185062654882187885186494359 GT 1 -1299995395315598.7968064101862497856594513986467530 0.3463205189654041177970810753134035 0.0019710942668536303182097695870516 1.0019730394296444879264544222754498 GT 1 -787185302.0082599721423718542264978369482067 1.2180799937122555921710294322497360 0.0114611573923632478656324430750507 1.0115273426491524203450409648601250 GT 1 -5187419817.5810072253915850717148623576330513 0.2620487580087787880774000661887393 0.0827901363701457626931489778177652 1.0864189739896463427506564860720990 GT 1 -73135096430297698.9718242967958656124652416825627283 0.9571966823604275033768145798421247 0.0339206748794204303822799402929627 1.0345093310389944694161747132832118 GT 1 -11409939385810125889568359.7049651109198673741376631427722879 3.7133370315469287231964263583433128 0.0732864850764257042871347078499833 1.0761108065705370535582318280076184 LT 1 -4804721862229922460736367787716209319197870.9440645372686668503773809624430594 0.7956682362316502612417653593125335 0.0730411305925082385506669129565917 1.0758460839718467384908630059235654 GT 1 -11472687873724.2492455653878713359363510106473075 0.0051954719476525074359933906230162 0.0569764760891167403555145921516055 1.0586640508370395964733829353164474 GT 1 -1.1299346295186888926911190887425704 0.3811565622178230103990297982077771 0.0294374633817546398103454665725326 1.0298794409238403151670326549573407 GT 1 -15783897635980.0058812996706702368024399961570579 0.5071593389331694169744776338957977 0.0646603432713236021052147685339326 1.0668455464312101461246127837743106 GT 1 -29107886803542338359057840.2959365464141561625896431428785389 0.5146490756153318396133527024902408 0.0347407739347356981807902795178739 1.0353585856702987151759453591271618 GT 1 -1144.0293487179857230570527080770395693 0.4556224881693889240656831860013195 0.0627811794819178583176460079590623 1.0648384909047158519803997677137037 GT 1 -2291.5015302945928992192235714090631090 1.8461286896938794816143177669818810 0.0580183947307335592964440808106382 1.0597695319114382699542156566374720 GT 1 -11328331990117502025822034414.1050988912579237283528407812835005 0.1658251283118555412965290178511740 0.0960492364617322066464207707432902 1.1009803851857742819842008310132758 GT 1 -4.8420565364746354201147416217734536 0.0866092148831498425997570717359055 0.0907063422660391560584204036381251 1.0950871811630132755409847713688098 GT 1 -165213923520306702150627487006211.1115002638811170797914693157699737 0.1999474654851624011627554574222453 0.0294558302852385589242503194514851 1.0298983650802759648337701572597975 GT 1 -72750279628416869485372121133.1063904369615449721624576091125256 0.2808535395069508402948187161628899 0.0918959524224441429597627230947435 1.0963963171026351309006962986678519 GT 1 -63005098072.4259297797445932986953596596487463 0.6209122580944855351535119831657482 0.0063415912225127519733711262345317 1.0063617845291963951819878684856293 GT 1 -182201.4646447776271132470995249883072767 5.6476443277346444357050899997829237 0.0939763375758287210923272747230919 1.0986898558142400845204305281285513 LT 1 -307310467755.2407798984529493682915305962441346 2.6861818690950204663136389099712424 0.0750752872592412002248308696593755 1.0810882863758469693876451314496030 LT 2 -29.6302077476542866465521826382327105 0.6781100107106927706291870169339011 0.0095362092334822731770198997497146 1.0095819700321636327119923348722900 GT 1 -701341849331870312365865938640729.2859028379063714747290368050198121 0.2396932891778693545099698777642876 0.0436387072433922808366754384460206 1.0446195160314780541320030121497344 GT 1 -292852.8016691924477627382501219109157544 1.8654272676155917618457291194779301 0.0644704979820805341387063466407159 1.0666425976691258196567855033585912 GT 1 -303843041902387592494423139337246296.9781228584300350865628236641545592 0.0662976856410685958525850724042528 0.0507599484280324864918012023640006 1.0520935602285757520550403037340374 GT 1 -543337891496866264529171.0507923871490971566967335088209021 0.2223236025423010073029576436008196 0.0313284344411487360822424228247299 1.0318296661768007896484100273296543 GT 1 -6322052016743348339745894634427260.9978407227832961422065557576907541 1.2261969424347686341359170622710542 0.0639673020140102401983752852394284 1.0661048693689985341878295818414894 GT 1 -94970283523681.0519089070000266025050204145486464 0.6989502877721830946099039678236993 0.0948385962336398822944555238129381 1.0996420044809331728490805190469170 GT 1 -104060675498.8780821436138616534485486005426055 0.2489498126669438931910155350748499 0.0257759080968486556343208744493324 1.0261139279799876730686173135062598 GT 1 -297503507234882977216293812253.7332742530492272643977890771681612 0.8275204252041097586104684572671231 0.0679061471248522515755578066544829 1.0703217688566866638113836564397178 GT 1 -81206.7663091638383757267779531078793064 0.3405061307567135792080655701671324 0.0558964368610225966377913594351267 1.0575194121389594969108522929341718 GT 1 -1158757738851148996.3697216160214532505741984232178215 0.3920700809915251435572807233144114 0.0907515506438149933098158171192300 1.0951369005262426354393122413800403 GT 1 -4773.1972906003266822736357963178747154 1.6436984938559158473582198448356713 0.0780719577161409761506822453723822 1.0812881037165040561777578014987666 GT 1 -108594828833183687076313968747420.1152902946035037416862964405553873 2.8414297415381234059957120589881046 0.0322403249906847264713862755247960 1.0327714921480396031850560437394170 GT 1 -1406137350648632.5608332214334981704389220945359057 0.7428034491921256256781699642487968 0.0352598974800188096565266614937090 1.0358965377308135217055419599907447 GT 1 -13410607148173330921958.9593923838581135701577474644556210 0.0242412171023492479373843703515542 0.0844055455676800665510832964255801 1.0881817476801280145447569504638072 GT 1 -151125360538652013327294292871.3204689636255426365058776216496642 1.1609689536830433257398031057969163 0.0691004213625993009045167086740266 1.0716038714998203162290549089450278 GT 1 -4419263337947774697.5155445330533353955113115678049014 0.4063895932939550317792486022582448 0.0031380746600325883334837700653129 1.0031430087413661773434703099181685 GT 1 -10046.2881086200483547164361319258831592 2.6162942981556886955436864567297866 0.0024351584968132880810544084161314 1.0024381283175680822159822238836544 GT 1 -1407164552940701812605504519518791708673.6848683189012250092970810991618811 0.8049212218719226609212604254104605 0.0768508975906251662949532213318100 1.0799645164537267936444458264364558 GT 1 -9668365191169552529710661961.9532736722794231912794414366973480 0.7243203403849988022751530439852673 0.0892342559260608240971473905371020 1.0934695563102002226379890648652623 GT 1 -353483352310960209510862656.2663459667347667471040705910691124 0.6927491207369438053888471385474520 0.0717953144867367892480722700805978 1.0745030042312595055951864505691006 GT 1 -40229462232.8461249452136544889556928737441822 0.3233555667545112850354420442996730 0.0660112698864344920092320140978973 1.0682909070856581639307336930349031 GT 1 -34309330317425.1554531878071697945700454446282599 1.5144255389090658150595153391019234 0.0538513681726565747148963890863525 1.0553556061751424660358882753896139 GT 1 -245170083573301934005099.3154863460958291262702826031719472 0.7699029922222055520766377365132766 0.0958443140470266842488431326596150 1.1007537144434177289720039644752446 GT 1 -87510499026096756389997791022956297.6540732704156715296755970482707517 0.3483647100042979655807630029516513 0.0771488625042676403528668054213984 1.0802873386395413211237865180148191 GT 1 -21630510787420164.6836823913921648758173544126189791 0.8501772553197546329518325388077182 0.0531808526317367950261669937535020 1.0546471783019038144107133530044669 GT 1 -12631541465857884626546.8315771358215133322716715692367089 1.9709871400684237224778919610663660 0.0854830316146239764080611908912575 1.0893592565006368074851093963728209 GT 1 -15272920281.2067317030913049698474525393939785 0.2567893918903460495793547078926723 0.0502587890137179655297444459829284 1.0515657409858789185405504724841169 GT 1 -214978347447745939233297840.8806882212764371075912373898981263 0.7541606341113918370095899042760872 0.0731804628355554914519159086735235 1.0759964064082454692913637332956168 GT 1 -87806.5334034520014820462426012351306735 1.3399092032719380940025810508593080 0.0591224677094905117310843213542756 1.0609422942103008232345627092593362 GT 1 -12839892676923612422115196006144.7029951187250361651286515918425063 0.4167584843003095200778505637947835 0.0789647133386057284535749236226220 1.0822569300390612953635776117092130 GT 1 -35219.6828888257530055225249444365585707 0.2333641632519897818658539994861337 0.0184203498881473393653861974339881 1.0185921171452260488456883215745906 GT 1 -161307.1845294849622127837142047322193732 0.3680738885515174981278206880891470 0.0089909670016938699063864062649871 1.0090316296600821210512796371978980 GT 1 -643791187604354829969068398424008376259.2777042307245179439258407237793696 0.1888492852259049329555553925153036 0.0797127791732653176352390480278544 1.0830694611114551091173546304877660 GT 1 -14831962136298931199245.9038568521992572705098399869552212 2.2202996170057796804995357852761263 0.0379124242948708650898737656140245 1.0386497974233512633507965614555237 GT 1 -334738812536994273311698.7090817651315593358074507978176567 1.2431341860843659659126683361655144 0.0635624030716024895880997669615885 1.0656723936711801854295430448376584 GT 1 -113121306878967509891890813795634.4986856575132639048069288386759547 0.1649044430122894032864055191579963 0.0037962729810168165214888535991836 1.0038034971142736824352030356938860 GT 1 -9846407646212726039028724.2512811905228477634723777165512988 0.7483269788088775999644640725975897 0.0833424997927761425131254881311080 1.0870213768135654488969642758887563 GT 1 -8985177470796627162078525.6023043060939721475850441726379527 0.0721232439062218579100953867948260 0.0516335836287225286265133170400279 1.0530143362452820467484945368490592 GT 1 -1322660540879233549185.0464114585198402432056376580263218 0.8274170044331961314704520335102504 0.0682842436098115294456412633311542 1.0707274932271012183817658167345949 GT 1 -52192359005118781048.6461411268489923223173175000773866 0.7791174428057249671946451556110315 0.0534423556189998358788334911986704 1.0549234075131895631414373197290579 GT 1 -333515792066764930498328476597430.0629628110665088801241371268487406 0.2092149573570306309573500963330161 0.0522334857977229499007337385596116 1.0536471000977986520007733366533350 GT 1 -225628129030051546294709524622.4513532130511907686226573453244488 0.4940288595145130357915054352097432 0.0497525449988460474071050961601441 1.0510328493577188002865405936139905 GT 1 -5468111719832213469360.6887896481604488999339880072725948 1.9832930498699849598246380989323240 0.0833539120903295228356071110689846 1.0870338267947115067064849836069335 GT 1 -635464591100513.3813605686508040403436072912055420 2.6508264029166718061800584764731240 0.0155113132869048102172688850487123 1.0156328723726450705811436333085765 GT 1 -2685571808576892094298788202245004425.0886061409965026149321781154127141 1.4394200365580454825534266761019891 0.0741305802645783908329849905403604 1.0770220696840769367148396017155105 GT 1 -340376316868207149.4414631143158670663654134287826629 2.1163453591117445007202978091722181 0.0997749343985874761596603134983729 1.1051104740303812996953074612547586 GT 1 -6101463825178646234006.1369597716355106820561359115592037 0.1265115023973559086041033733927004 0.0222130331355691928608021634711094 1.0224634579666873502565013026473966 GT 1 -1016.0547567976785694204432358658834974 0.2507740229926641340637087488525973 0.0215971392150736682229549028078195 1.0218337706713740077276937603954318 GT 1 -1724399655060095.8101594359414893744629948907930128 0.4499112490241463992868883836362477 0.0892027210616901811564913534557913 1.0934349323482780649016025041573830 GT 1 -1011598683379658316925806.9768919424980980867402505913245777 0.3841946697427853510612178635167784 0.0150474568678078238826269600906684 1.0151618185319467283942916048018454 GT 1 -2916913318511928480264205724422972027488.6047467588461701314718422527998646 0.1492537796407525404607032453975545 0.0252331244096550387363554834995562 1.0255569385323410194272751110126578 GT 1 -3657502464418.3571490184992442235006288888113167 0.9736678592297893807431894877655996 0.0815704231052192610865105227952887 1.0850900491283639679304824777036702 GT 1 -37.5510956490786112545609446997284406 1.0638422027204921044899382910098465 0.0900682551628345370850006233547750 1.0943856879577520623879158131724931 GT 1 -18892191651921437208078251928492598.0299964468953978895934746660318127 0.0626399213685333061270772908535626 0.0752832465809533419490314856454107 1.0782678008822880881785840892096190 GT 1 -667455756241532087657168.6758552089459030889708046917049994 2.8911472055744491976824980680501377 0.0031568052915878265453615403149646 1.0031617985125990814056198221692942 GT 1 -52.9411049079044528800950540036063620 0.6450300117857858386668555852304589 0.0367571109424356752372167477195311 1.0374496777428653037494444212831627 GT 1 -405777211359510203840.6891465942075638205529731735105685 1.1137303561270635139679312894578312 0.0293652677383813539580034864580040 1.0298050583306191409094314120929537 GT 1 -1015227829847730554551605161185096454742916.0166979706148517750264019048259444 0.7431848898134224452949405662953361 0.0120850754661187095703184495903938 1.0121586937132175410501147957244936 GT 1 -18466087036996685645206277378.4889728461769831719628496008208777 0.4257789107758715029179534195047842 0.0497727504413854031914825151036662 1.0510541129320159362625421899713978 GT 1 -5528511481193399156281277557595056220.0839913777527511077387518306027732 0.4367378303149132272436998239599423 0.0531593312244050171823464873921702 1.0546244483404300272026676134574082 GT 1 -2291573383973344149431274484.5413564083457987279711376218349640 3.2968181973704025115792813634570397 0.0695911557009895520486540175224411 1.0721311719124908981808637077714341 LT 1 -3331480021336577.8241558821422214165779018647170591 0.2598639760155502184318049974726917 0.0122764107718772503578879793659036 1.0123523883643634174259102043179585 GT 1 -1268025568091531638837205454760062.9172917333064686281445091555539724 0.3185050155152021682486222240622622 0.0253808782976234731793346919663570 1.0257085287135125025755834976187557 GT 1 -2337720333259704850336020479195921052901.8679914852855368106564323735602233 0.3488408883520323821001982788213970 0.0528794253966179414267438480161451 1.0543288711940618655981161223928164 GT 1 -47285703610138577304723899014381535537240.1168551364460661636101612988914846 0.1613730078287084177286672530775229 0.0605273855527645255919006220542877 1.0624366096250555785639386502213059 GT 1 -1049278371083976269448612517314879742802.7183703278639504378649355835428596 2.9519343691944277313422071442425952 0.0206769208452006123996749775976351 1.0208936815415615043220484176418539 GT 1 -3115455371.4900565764871003885794592343665229 0.4005030740520207016876950307118420 0.0340413783233317493667824576333014 1.0346342803902931315283331487930181 GT 1 -45102240.9804295846128020326317542622093458 1.1069315249431169573601754326423792 0.0604924957543405329870202369087810 1.0623994726717893849656113495635284 GT 1 -817828135788571.3041741000118294662435289070082580 0.3359888363521307811290398968084828 0.0338257644343079712367020534543973 1.0344110929535590572399138404826034 GT 1 -534997748514698096648858206625088.2983089628766248569865709434024876 0.1022609466554221720090685275163877 0.0901923893200212764734342123844405 1.0945221186581190477628006555775886 GT 1 -375875945292510.9773396019525294830872624543471570 0.3358509805225607864959225321518842 0.0578577601383385891030950484162651 1.0595990180747822602242582201735221 GT 1 -94368.9787682448539281121191975449113462 0.8877020807236096141327128462265453 0.0390908640224380937513358844690369 1.0398754260143161095255416312135023 GT 1 -8299574159408009376930991699345351722312.1480539219345043299098933616875953 0.2836020656650335220058146872842356 0.0202865968013948123578053962737610 1.0204951958038156787965410538460960 GT 1 -589837239028481416269964970130396257401134.5267247087003154061186011257156401 1.8137210618580226866875153569782669 0.0604394876400385851424482222166100 1.0623430530916064773602147078338436 GT 1 -379720424441203043020348.6626261472887980862675619507924602 0.2422310772406863506785529033401445 0.0689005917871981218379466203889465 1.0713892316664158970294015669008491 GT 1 -40742665117213462209683.2324261130996552340377412921465031 1.3308350058255129866397415723718684 0.0416882228807045215206617047796516 1.0425821081125123134035706674472760 GT 1 -706755488312551676337483999918039006150.3599424867855413168359062831356372 1.3111776754584132169523741050051376 0.0983434751276525847666960486131808 1.1035216242639601599489952893030017 GT 1 -1089060995745791505.2427716140075829274458067688762984 1.1282083039639262311679165983594143 0.0431151085160792468107847606030574 1.0440721753445370259285876505832754 GT 1 -977945421760882689950.5067982358813432312334662429719818 2.7343230529083799924641571648153260 0.0169348233036149701097276509422072 1.0170798571709346989167045714235244 GT 1 -10558649963403554615160291386735382393475167.6412053398502111572511642847245330 4.3232608233646867025798543359837404 0.0357712313937249658290917229841728 1.0364267006933546880030174898263325 LT 1 -2.7946801650425520095573058106753609 3.7677858580101923991423331668293721 0.0102812879138363554757990590017921 1.0103345054317470614131738434761104 GT 1 -3945369457899684525177526147893.2033406261995497747449038134943082 0.4710305193731967762649514032441910 0.0258629432979966629915856750278855 1.0262032699392730029725965993120736 GT 1 -425689790188075377582422.7568484034210454812964066790165748 1.2650931929912776870005589006346598 0.0940245053074325957351053332539710 1.0987430211056543090812673170368105 GT 1 -6334903146669.4639187355598073924141105757390793 1.6435297061469749720059356526969096 0.0048228145168850845864231279726562 1.0048344818147415503233672805561501 GT 1 -7065673009896880508091415163247105062.4295750702297665536791555150129770 0.1042300814184183887824573037097633 0.0224365815794642907985487057814388 1.0226921110475381117668057644854745 GT 1 -600.9518014002371928199635943220377851 0.2903889846819098132259697041296774 0.0406239424971820162636616484373468 1.0414721459241149858423333322502466 GT 1 -47842774790.6619149654109083355806961693818381 1.2188163557309186336410634744901784 0.0681996473316990652772175498780246 1.0706367011188287365447603732571207 GT 1 -66809941129418227130257554.5951758290699886285672130305609522 0.1825653270640438929315040007157626 0.0266023880357564064646200764934615 1.0269626348791522288975852525768753 GT 1 -494384932171820959947655410582.6415287876937248342387198698720203 0.3905032545784484164367236059391959 0.0104906749758234095483711844215450 1.0105460900079982261826668809220490 GT 1 -4661909299465590.7126855311726312574337013989891333 0.6802558933427158680789913362078291 0.0641201162593742710206060054705298 1.0662681400763972164405520354690885 GT 1 -45915256997793174617200682764891342.5681599144912970209000241414294027 0.0459656818476987304144600638246279 0.0374272103486381520029404963349951 1.0381455900678656607812625952009604 GT 1 -72355854011354257309396044184916640857.9490954224581466018504318964756617 1.2151429855620793868361761995127758 0.0997531735382153377368075017535832 1.1050863016337233748735413557307365 GT 1 -396098214513530240239142.5255960040836607904646872894287141 0.0794577460798876373659669622964698 0.0874506498218384199600128063125445 1.0915131126008636608601179525161543 GT 1 -60735143702.1915149997370653061168010024972367 0.3019489510774472417928335015622732 0.0526275997147127378537966218068436 1.0540630209779604534312815654507293 GT 1 -191885.2688589874639851498054228549787798 1.4332559020706648818279946277571186 0.0094941773623661773328980631638994 1.0095395343775851915273663700454134 GT 1 -84168876477.5634007945451616537230324863127869 0.3657674576362061932620116929178762 0.0186441566564476286270690148510019 1.0188201498747948904934125547205822 GT 1 -181658851748809433008845649866557881443901.5049317990674513370742801299517598 0.7142230077431315603033888505777588 0.0761893170052463695479770959903261 1.0792481168667924217887063379365047 GT 1 -5223889380.2659151498496921939954019817687426 1.4747755712918558280902167825398267 0.0074986118908663433519281299300027 1.0075268678231462802943492500214211 GT 1 -2296268294954212650.8188363385697436981665332895902725 0.3127080737221437426298875105983353 0.0149506632510212221140449410728058 1.0150635509943844485150650823236440 GT 1 -12731776.9479162850951680253768885844829444 0.5984384500583903726792638467131624 0.0043944500404557369177218973354337 1.0044041340169491778590074595588772 GT 1 -102284553822689.3224808650912214797059495113713165 0.1918779167850928663467430646287675 0.0003772003022731204609776524434353 1.0003772714602015619165390194399676 GT 1 -42504.9107784523188352647965917596114707 0.0599690297725422084981444694723588 0.0103344334094112401569395077108641 1.0103882044493255823691757338490470 GT 1 -153417141091230139323293161.8398476040542461480116095693164932 0.0558832544513440078054653515530371 0.0404491513250840123351013592345550 1.0412899699673146492560977731063383 GT 1 -154.0820670648145771898971730842583218 1.3281099618180385403386356427762387 0.0283453480883532734229421006572903 1.0287548340416084055071181072989541 GT 1 -247041082480248951326405404593.2947063446906317235282159470411072 1.4562746390768063451463439986428990 0.0766487048108246971280796040199935 1.0797455153845999728835281239993733 GT 1 -2771.2642440772477700467588524801454906 0.2805968281309908366864488311040648 0.0554531823525481432559035924521570 1.0570500245581535568414591019944235 GT 1 -3341485473704330458137674294377316.8017418488476003074514930909512317 0.0245771269266609616432105657163733 0.0717229418512083046528266273321306 1.0744250367146790448547809171683456 GT 1 -7836400585878342297932097.2530052478076568840798013996205165 0.7120855160433428492217332885133844 0.0000351146965842609177990942580487 1.0000351153131196520311820607450242 GT 1 -650186104628632964.3065394836740315406338041068784079 1.6080816407798704942118441316506000 0.0452473098325131765915315741527336 1.0463029352135663615512782128375315 GT 1 -15830523.9717564352597856766441436346613785 0.2086012640673435972351991841999749 0.0372766526369823044948747060514920 1.0379891905311209194087462363547231 GT 1 -259847663441.4136986422538667549593710637292408 0.2361330729390032977246639065820772 0.0822968700175495360758952463229773 1.0858813284814446357463003919039481 GT 1 -19847775551101776452104307544986778154843.6659378044009585311880673499597255 1.9197401326116424769615339882332740 0.0394419619464370639511516208563921 1.0402408737645057471327392296964137 GT 1 -1063245494.1338629108702556341842378548838347 0.2679223254145694166285134478085228 0.0455993036938676240817711427206438 1.0466716786239562894607618097608498 GT 1 -30792266537.4535640967630579876978705777773705 0.3161755604956277827297275828994381 0.0764104707455560565145199464922653 1.0794875384495114809119068385867276 GT 1 -9748017378168764295028988331984018900127.3956532571249870157805567137652831 0.7309325785388953671764631665280383 0.0744005808495355553377663149939153 1.0773137306412590494664221688869801 GT 1 -748324480109543038269261374.6847183750206911939737797420235003 0.9306002251472618158040258824722841 0.0561449486801472894817099420327537 1.0577826719568990987712603765552220 GT 1 -10325414403618.3972526401805434908606680826616221 0.7372348441586438136374769859399349 0.0806308271044733226934947966115808 1.0840675257615157999294441475234142 GT 1 -27.1509661918483346078058558831306508 0.4520560217503464228728888726423568 0.0657580556113457723145222840530029 1.0680198331973047089289621304060210 GT 1 -95272133699700265099814510646.9382624112441801029322163577085350 2.0561545290595165425048614554199946 0.0451763579732333209103072610217580 1.0462286235894471231473023539898606 GT 1 -14585704.0060688265599290940383642916684951 1.0445426710247346721337634801647942 0.0686936136114236665606505954776135 1.0711669619792977016256551738325925 GT 1 -9574010581373024873250574731.9729149283467056853689787049220366 1.0617603735136214987528782894704022 0.0572531780227306779593498204356271 1.0589575138625910220305593046511046 GT 1 -52135015641890692565595830385157.9595311797451041219310052994080857 0.4542681241290642046585658527127025 0.0437165979325613658680447606511490 1.0447009641848365218564605401848209 GT 1 -812268507315386052613.6221658159742737942906847743491389 0.9057573230753981219781500058104716 0.0906500724778700345406819548291363 1.0950253001120550099331279365615123 GT 1 -1486774597863686731.3377770425170190409383128921331177 0.1350960248133489405243287986124042 0.0549118110497730057271725630835498 1.0564770342021358491420594325400355 GT 1 -5091415699671113975808123.5208838823183042491655525209463193 0.0275652979814026352771789924758528 0.0031809052158382835660691708492184 1.0031859750487944515859483680686947 GT 1 -28754047390480.1988269135451043734838371060013973 0.0767675407349327102163851583794420 0.0543671379010867637140143199617263 1.0559008802914876539761967288810275 GT 1 -263686550084185860600296102733.3217630196714187262611653404883053 0.2866914585405213717497267479203685 0.0658769685897030778047398041215522 1.0681471241496166553456044643172643 GT 1 -25790576.0358875913919465549203410669976402 0.8463749939972206341652472270969379 0.0586562232003131385996631554535747 1.0604468747647107493907170723778041 GT 1 -2702191623301092405745762999045.7506612554055825735097594095721914 0.3523290095149266162133392182131487 0.0480508427680059183494257629594520 1.0492436518858510755518525004637793 GT 1 -184845.7835749948742839758376078921868675 1.3666890042643004755040824750141883 0.0322614823384535914995670107888442 1.0327933545789628911796630691299277 GT 1 -43610677302.0114362049539308898459736533262977 1.3174626708110204574626663818753662 0.0660862116685476903282741797915675 1.0683711487271928584174177244609626 GT 1 -9.1625784828342071144288368679019286 0.2182232338249029743289532562485332 0.0381753375680941635390089603826841 1.0389231085127536522077756697415877 GT 1 -52092679.2723949555824077147731536874980793 1.0001243738303937784526957773738984 0.0031426787284909342985807000604292 1.0031476273138820210061114964956187 GT 1 -71102897406651984260280876097.9885379868180361400607669851835477 3.8852823969239103870409330684425072 0.0192062609223402642685202851832390 1.0193930973058218302424412647754146 GT 1 -178267076.2317569654095179850740656859305026 0.4584414014629083371815511986094177 0.0060900043869235256424508200549871 1.0061086240982123289649597910555101 GT 1 -8572347.6885852560299456197502816043004241 0.1372481777119699720329712826118652 0.0584162697583420601392202486519636 1.0601920020281102108651552280093090 GT 1 -58417598550227269313720201140254356781464.2719159765943316183788936633788809 1.5004823944345697029861463127564213 0.0216177105190410669316357413420528 1.0218547962847024422254622717585580 GT 1 -112667616284710629271357373256883.6920350903912100918406764734670447 0.3666236882660140327165911100421809 0.0639414038271585083312390541113885 1.0660772017152530254395967379454112 GT 1 -1363647315792579.0913826545695036488857568489775923 0.9496888157163128332014989386451781 0.0523893515461646338363295196324140 1.0538115694729330542883216460386981 GT 1 -468200061063602179871559400625056.3086705367209183081521267332594683 1.0512400313907331482704713207708532 0.0303549849511876610442933313026416 1.0308252383330306474300692252900824 GT 1 -130125517399891057887.7828548776518033899006889737787837 1.9892020913385219346673976352863580 0.0449974242292828391216852222061013 1.0460412413629318755060345771698214 GT 1 -2060907087250349332719808471851056672.7158567398619698400327252627611662 0.4117325730056804666484285608209813 0.0436790524090666370923210133090297 1.0446617030344514377996452556755505 GT 1 -19406901065353098761503622889405838831200016.0217005178022979458111937314905541 0.2117505357366179347855199356117900 0.0200498163119703578165361301610497 1.0202535415809570489512617278349739 GT 1 -9413438424639970320423.8436380952335123746168339078687301 0.5490238264385118571345106789219730 0.0973995874792844947284028306687330 1.1024753345533164111195802259822685 GT 1 -21158490498856681154656676240550555590892.6473404130458883468503320434450409 0.0129853854404813435517381778853322 0.0721436504807125932339605357889996 1.0748783539546691938456384905155367 GT 1 -2265315.9158456049556142028526802620177936 0.2250292404508891704252297475641972 0.0346182606144635937730189358803871 1.0352316710107333674779822020046756 GT 1 -115678826292869991258.6525775521560697429821622723126925 1.7173410146491982968922953920232654 0.0902189104918799710462123956375096 1.0945512693907630029914322793876204 GT 1 -6442828022225791621.4434835810339996691887230947443158 0.1040692968097564418425248720478191 0.0709944202957629334233357558515922 1.0736405340461447234230552856858333 GT 1 -473248924723922.6510607321997511038301756455658445 0.3030339709131168181868529366125775 0.0261856009762627489391405482625337 1.0265345489146997637740147875455737 GT 1 -75401808.5407447531501961504926737579077807 0.1853208142594659527988100126037093 0.0131616086346716726557180806258069 1.0132489901735696027251956008248075 GT 1 -234278905181751095788752555990980.8983297659090020968038967893643325 0.0227526117306238495530135198253952 0.0950660578621882867427167661127416 1.0998933300591800759036201780152231 GT 1 -750815365603753250901427713558070231145439.2742452710553490063394345416226795 1.1591352347267259388822596210870621 0.0978728950809382363455063262728482 1.1029998543026208258166908450309523 GT 1 -451568931944984393917873142323882699.4868014072486166090571940069215892 0.4504716057511437690671475308496745 0.0070605543076988727978172349711160 1.0070855979723223480646587286699202 GT 1 -705460023140452949646.5329223535793265118781958639258421 0.2255404101969729240312340058550567 0.0118302311120882354769031242043652 1.0119007651372899333723542984911013 GT 1 -348.0050444842052141397212393584098273 1.8986699940864833822532946613342726 0.0363763110566535772157296223888728 1.0370544247501700780643362698886030 GT 1 -19274787777701310.6381350486367992479248726052100722 0.3048447269876900722710781325378100 0.0986356622294670368187834454465876 1.1038457326649510676146178005379285 GT 1 -634350315622320269.9250395694036311189555411503981000 0.2490945769388282682432803935064697 0.0068142144085827611752211251023081 1.0068375371788747116363227617976314 GT 1 -371927088410748270341689121049107235.8904441408942540572004746562247905 0.3881284127238265750995467498513869 0.0811540349206008929313170424073473 1.0846367821226976327673912688431010 GT 1 -3754442816930.0844867809784817950553281852330571 1.8731463549960726660015734767669127 0.0995203596711049343777108611189628 1.1048277239177834950996535420944511 GT 1 -8419460553293208767525830.2632370249754666959855332138723933 3.9006632872646322428811937550346235 0.0697959971784207181301265249569860 1.0723513590175899202180141686059639 LT 1 -14095369490371894566629494514104.6538945055138320781605848229840747 0.0956669325875560105856694135906783 0.0595048959944477357137152613841215 1.0613488359903251341411412760663581 GT 1 -540980606345783458756.9247198743136529063161445708877458 0.6582076526398309646302880827571609 0.0628529882901214135141122074189756 1.0649151128821377641620485725004771 GT 1 -116907892245919.7512079483607151975881809658841179 0.0931293940440651768264369865006121 0.0269636649553815569630880157066409 1.0273338541792770662370763641587761 GT 1 -436236666712774503299615899575.3058366490790139987405677827481177 0.0897209557975643492888616841604431 0.0052902430598797917022526102018256 1.0053042859444403906365027295198044 GT 1 -62411768125.0824866511997137775367412433873481 0.6151268381391846906115984851106347 0.0387852840985949662796028839030878 1.0395574653104635515651986449836160 GT 1 -836465.9666779700796056416499359288216631 0.0067194264213805295463966591812023 0.0010330842984228467499373689249327 1.0010336182978159424737945322459259 GT 1 -9049.3068621843048668423429862268511863 1.1767079223166498790416572751450544 0.0904290523335263130058003535631263 1.0947822767365510060961849642151185 GT 1 -470310995831.7667347988454965156916200720763806 1.6219278462333968563903457008027540 0.0653933365409587981828972698949498 1.0676295189969080513064886101785901 GT 1 -1415778789337794031115740.7677721745966686954921714443138376 0.4540030375132142208180054303378846 0.0239494642478901255239464803564713 1.0242409154749626304901561510577518 GT 1 -16301300.0821495044780059094957917377596609 0.4358012474565092053282239891481446 0.0647364894409885364828349115230327 1.0669269599250378111821943245082107 GT 1 -106619873134628905067370064231384984225449.7811339274085536793409519287277645 0.5421913767509026045323575987284022 0.0809150283536111253730177794470500 1.0843766999144261893091433410045853 GT 1 -9643975620229627496994052312117.9922271484927134032477620819865079 0.2957740462836830168035803720160612 0.0442564090208947847490543275815853 1.0452656121784461918076062990073591 GT 1 -33141253752465112552502214138.5795481496732525343557816625612788 0.1839645431370707353892314570485228 0.0859334812174825267368590364225524 1.0898519325147548854634521398432301 GT 1 -8467938838486816942925094434185319822149.3224482725753873697654970322522728 0.0708672600199109115419899887752660 0.0045178548231173598709769789274879 1.0045280911717455976292580967552693 GT 1 -1395899376093273689858198416553190864.8354964369546959485911406107510517 0.1625594910767681848722019596744011 0.0868011515330916574914256590194602 1.0908016253140323889632603984580255 GT 1 -11974282896884693912754711697206934.9650164098613875675615461710771792 0.0935301046856125025738814921746380 0.0561059252454206814805662111243211 1.0577413280789513804549155710920829 GT 1 -1857569086264138762937722510819917230800.0065982928022440693498449481474554 0.3193576188376887036696309862824235 0.0054437908301666117791377587471195 1.0054586622553084964588393817419829 GT 1 -3400530712855905836457437986.6226293923525877994937378998148757 0.3680620914959098428803348711683440 0.0349608831361163933912622903073747 1.0355866428544546938987562852908330 GT 1 -467166836018094353.2302792185719801322967970052673675 0.1751570836291629695452525247253422 0.0335109789901942633572099185220217 1.0340853399328749458256398204662287 GT 1 -782065376289797170107.1232225115584774005277775855750916 3.3290244533231844215682470467144999 0.0532785291058513393737277371108674 1.0547503463810663436699068541855378 LT 1 -4517483271929057974647756657174054.1874954608328973384352868695539785 1.3440877488503890869457915468548435 0.0581152338433349669662584319390577 1.0598723408093044226360080154376022 GT 1 -13239171760450597274105293458850065354947.5394072532138462398775390232847967 1.6552892361114003701170279153191123 0.0689777192387564797022938256990673 1.0714720699170620802914636715617765 GT 1 -96744945595054900538137963708964.5912831520632871427031730447717334 0.8032971673679802239528957358289110 0.0457197353345876502733743134453543 1.0467978722030220604622900062546174 GT 1 -2676907407285611894366731691755956.3578852772949664341009401118090081 0.1495412012573169549968769953809831 0.0660168659476850723570312112081109 1.0682968986761718636008200000740702 GT 1 -1183469276329134332957356768867759205676191.7060878998847164746132628159265376 0.7106082455566326447033731305957758 0.0269342840340475133763001709734914 1.0273036595434705637662023913848337 GT 1 -13829718097910479571504301146041238668.6659082300048118673004264933384519 3.5440496126796401665232649130464724 0.0128201422155435646299645613180172 1.0129030294179575523656486084428514 GT 1 -402789488300733618434669376311397013.6116730085094948821164224663440226 0.2838867783916273754370169208240356 0.0885412786003008091065169368977959 1.0927089723401167331518163910423101 GT 1 -2147085412727.9890771892167399880616176362316178 0.7246005610005314170279017341915831 0.0295075322279581025447245005773603 1.0299516375860424846237828750631746 GT 1 -38120.3723220403745204110717885422024432 3.4791657985341482905517485562614355 0.0657887619102754444958583295432377 1.0680527013464458147212157224686707 LT 1 -44519060809037784.6359448537082341344632365205910873 1.4487055897992424024207073481891585 0.0114795678247714103974864039343008 1.0115459667062492584179810030193790 GT 1 -1024705310211133356078016143393158107902312.8598621586665419488829429627155226 1.0228974519075658422720304694067223 0.0737713550242138336035837259334076 1.0766341579943953006252398702615857 GT 1 -7631024908215554449.6802472452365234357532483147446398 0.2141009329862894449008300263380067 0.0791252002837517728722021552835431 1.0824311914720585913830693381917752 GT 1 -3453275.8206762457656901751480238038641364 1.5242423269387944229461524573425175 0.0956151270225004205413661655447101 1.1005002647492746772032929658069208 GT 1 -7783610604502.5171659700931539984829981044633889 0.9864674716576290256719608495376688 0.0426080506215324470587986011398585 1.0435424108971155124375734050399829 GT 1 -149191770550398176159.0559299555437482390102544556850745 0.4574323460856955223330809350035396 0.0519606530436093648747505453806758 1.0533592723601732377592795003713051 GT 1 -22925672512919028.7544053487712098472520262339855842 1.5489339357026732349279345771058003 0.0996046245800759203344196953173900 1.1049213061023277618753807237889072 GT 1 -27581020831339758255112343349673.0624577545624536350045790206244040 1.8225614834103681961974055834403225 0.0733556347770741330487914649365603 1.0761854275613572937520062862705582 GT 1 -109400268577564173685.0705558401670221356124402687905938 1.8396210607573814150222194705653738 0.0168824832052709780694312399233733 1.0170266168504602863069617068094353 GT 1 -2803322654877381270454401850376038054.3636984358602766330351171362770035 0.4909430466666486736569707624247260 0.0261989773423817097887844687120739 1.0265482850619599076673022158745826 GT 1 -1388384275.7722689609520045021427123205441810 0.7252103535885769125770887346723970 0.0794792917769658146046565303018755 1.0828157818504447898192404676544531 GT 1 -208141462032885359333878.5289237831653275140974279968172769 0.2854718261530809151094510958233326 0.0521206601269019623553718627789539 1.0535280634426010012731530225942669 GT 1 -4586113552.4430581982754805818416818050573534 2.7183124408055825940862059505061035 0.0272148943878931821016118947965431 1.0275920787302644686125850998872064 GT 1 -3972019646507165479912764634343783397.1381794736666591349632404591612170 0.7898228117041614825971881275762426 0.0171296002623192747653547483841389 1.0172780090958262726677849333450227 GT 1 -31690254705989.6461864105176450002203665897632604 0.7947004950981891203051968820727177 0.0560279041317393824485229345640954 1.0576586727351141868299237151208124 GT 1 -23120227275431321032659665035838520747594.5521291024286015259333900690490410 0.0703538478511524336510969215322642 0.0076287827207724825786870527306623 1.0076580307297624339790348459492493 GT 1 -347769658799156580756373967446118671342.0909935506719172277226860636009368 0.3553944723047726446396865893673900 0.0549983417118418857172473359778638 1.0565685966876502430706679361620506 GT 1 -3331096444578015505932497431544.6923067707716387939394648760593439 0.1459359767127429406254074482533221 0.0181455580796369255501213331758926 1.0183122077645957672443102602024290 GT 1 -9846616086.7644462578435115848220287144012512 0.3948681235393341881000648752894296 0.0307163218556651315947138566207417 1.0311979564323903911565426588540781 GT 1 -142423238368447980791476512554378496.3802858413013006219433604714441370 0.3898555405478475807080266847403161 0.0383771610198711641909731895487060 1.0391329644639761552511721118887867 GT 1 -5562172870922097.9418747418589663794241480937092210 0.4622505993050779736743730629595817 0.0828776724259991403315939675633006 1.0865144158690829968218393933810621 GT 1 -589112078451308130094.8886920123976273684373275796525388 0.4176372588359723936355520381715055 0.0012512648269362358834493111264188 1.0012520483124031986963664258650376 GT 1 -748039335587629432989394778355.6155732372446555812856905814203991 0.2122931451506858050922321200400416 0.0788266153362935683782396697942143 1.0821070034810981234249817130766591 GT 1 -61325025726606421096030703212089133.9040148981257199851707187454963990 0.1846703152942121376858824314528293 0.0162472042258118491989171196350067 1.0163806372985897110806797528799313 GT 1 -3570618319552218224531745584198823796.7649390252384062109600328466927892 0.3745085631332290471484236010969500 0.0289388267339291635781873875184322 1.0293658124012287185144451051267913 GT 1 -8730.6160509537139229789466865394842666 1.1431595067491078063496785312599960 0.0383120867298520252028600976579257 1.0390652954302874143588843489831224 GT 1 -134057985147843222.2284463318419058423142569780596181 1.3092978138099379238146737376670056 0.0248894899996352109552718220510230 1.0252044708170715283720217607274759 GT 1 -28.2614908958106810392334228866161730 1.5111943847626262656317199405038927 0.0061314643604214765509213137492706 1.0061503389802800368607816491280747 GT 1 -36337378967.7666970299377574355039212943451130 0.0662778052665613106890489661755303 0.0090990898107018302142300193626815 1.0091407393696195051895929958542454 GT 1 -4123481134880161802014047010140557831345.1347419838468895312270072233376402 1.1553541897640863872400630388429657 0.0353780932476289847197632279281348 1.0360190608935896085928724265590112 GT 1 -6573760736000239655.6470572203692898885787487586827236 0.5541641932279205948613731010639832 0.0958268102713012216356166080773109 1.1007343553810686183775614681193849 GT 1 -2548860346464791068793.8309156055188686848082778932266689 2.5492926674760839683337821702735251 0.0639582716711391070322982481478667 1.0660952219503443738452720282489304 GT 1 -150933336138.3816840394734193980769374426947103 0.9948850421076503130785202455063021 0.0698409569526088140233358096673869 1.0723996934266147439523091835339727 GT 1 -3.1451911815481280282966470817100456 0.6785879245541150623701405679680896 0.0301042417119204258904654868826407 1.0305666789419509194176714535593773 GT 1 -1588461722874322438819526.9170312072783078188325927944085204 1.1714565949984929824256871473893471 0.0930411563848628296970241259223609 1.0976582062855838487590790560186245 GT 1 -48804308271371863984674.3528572350972637486604914853768411 0.7500510340909205799432028605734608 0.0244919118215373055582014122523095 1.0247968276376466406906009825805078 GT 1 -65129779335.9753586052446565978392399697599278 0.4055858698122062579274023804362642 0.0601943958477393606899399736046787 1.0620822291983423801369348609117990 GT 1 -14890131997043985119098.5423106439996591868710670356413676 0.0396284205555484191012573728159380 0.0111304717339300811237496797435155 1.0111928789476866871117656454673187 GT 1 -872482994.7415302113585137984020808381844995 1.1286013342110785488961793728821912 0.0565956602985336852633269661339218 1.0582603080774019884517819101519334 GT 1 -277022344937237727943.2484345556855134859741739125261721 0.2051824079542005621001002976798909 0.0073237829797177705805486648301104 1.0073507335456400054234630915612368 GT 1 -55838701181680.8162304983662486948119518563094129 0.3386851907078470069255047418699512 0.0265607758281237076942132807310055 1.0269198863479279858387997666685809 GT 1 -5441348884909480.7964999694413687045992861012036613 0.2592632386520807806119083396041562 0.0565494461799385437716356822139124 1.0582113227327810981717424747271875 GT 1 -717.5253153887972636344367761798330505 1.1886499009810171301048344095022825 0.0443346221651973829735430340644609 1.0453474503885020802840154909934491 GT 1 -112279696992580443795639150400420.4006823216021708114861392752840932 1.0500516249710462457494623166274792 0.0854439036103116479995150052123038 1.0893164719830887247469905873110497 GT 1 -3243330305642804085529.2184707145768237810951626291168856 0.3887731137586847841181027800961699 0.0457771042745118242266915677457673 1.0468579915060780772127770746234083 GT 1 -3420103451826118767360810334587.8979348638692931250971498971166174 1.9757486474240643043052554153492615 0.0799168074565304092971898200067391 1.0832911863496122834024464956221556 GT 1 -8086635277316914967239265921784.9737245072961046680386504192471796 0.9506941094675605542232123687644199 0.0434197036922058423154752237175940 1.0443905455773928695391030481978149 GT 1 -914925305214535.1015525904134609739206572765520036 0.4525529309763645496803359001967381 0.0227181816681542871447538939680389 1.0229802157888685910401559681109333 GT 1 -13.2648426634792398588260650134109550 0.3793497859204386838032753556403881 0.0131585881739306844966059091149155 1.0132459294331839469594606862792147 GT 1 -538499735166706195780945723981964025042.5649256017050890864397955322246150 0.6020743941259898481504855149450270 0.0410896594300246308377735354374351 1.0419577010971698862435077809673047 GT 1 -102731544737413807990901124922.1229089701751465256781467390322611 0.8390125699164688036715616957665177 0.0717478656523262725929722399435043 1.0744518866034071077433715371935851 GT 1 -1841.5739088030641304772961592140228736 0.1978822070080955813088776154498362 0.0831167864557525708581416483776543 1.0867751719308803782579488702431522 GT 1 -61400519501720411637158095.8032962586698607098459529891528081 1.7766920864248145606702476222695829 0.0772111645437416199252557133558485 1.0803548513076788619165627816360955 GT 1 -633242.9895674797938632156443555208812624 2.6704130459745295086483582540705480 0.0288293975197625751809325187558077 1.0292531284099060749062467746624955 GT 1 -815886162671121981.1953230381002996036730447765210098 0.3410621739472829755383366340309146 0.0434539154869123421018559387955528 1.0444263109037749845487302505303454 GT 1 -4274670538920815758906.6247338080673471702498928890479517 0.7095373708076596396046737857416278 0.0659795107351303132277445704384510 1.0682569038794879005724579595454588 GT 1 -233119562893545756977.2620145163067586620464774092508420 1.4179775643200902749584909164163131 0.0243320983256558027688690449258654 1.0246330151501314212061899884497624 GT 1 -509968881.5833682829347302771419940382530958 1.0929937696073157407736651054576414 0.0215341019833346478549417317064031 1.0217693440393095972308047802883688 GT 1 -163452850.0953282665655234035410551217174967 0.4613243668778563380019995185228400 0.0454707649521441146857075255411381 1.0465370076338832219145807300866341 GT 1 -2340611074968696139651817.2080358720871879302794468605084526 1.0278784096936885187369886012112485 0.0352657350385345250050285576805026 1.0359025886622113333867401206268052 GT 1 -351101686.2321909032759896471273585211357491 0.2804145556561649684368774954205369 0.0303337726234316436280530481992102 1.0308033621872188649096159773360058 GT 1 -94021499782415550352253817812839.6071203071746687248343283165010505 0.0804166039369488275249793099326427 0.0827872461590625331915574914390547 1.0864158229043340423946585588927939 GT 1 -33929633258.3220407623310687206509265278930436 2.1153187243317642577554249459564096 0.0467914919112861433510865875079491 1.0479216079804378863843706953954228 GT 1 -173675930790807676272520010518016396.3822514477592702717687590578665438 0.8244837686505258401429763998173926 0.0697733880515614136032886540512794 1.0723270537554845528159295306359841 GT 1 -1248439322147037010619646.7192062950947764540370707848244305 0.0761659339695749631237550691506372 0.0307222117699991611101368404782363 1.0312040330148833501888834230409785 GT 1 -4420431017350.9824796902240516702759907414135564 1.1068644364729050912609613471044886 0.0354409235808719126538914614310037 1.0360841976887510993648026702832553 GT 1 -351240130920892253622.0549425839758658117685485721376755 2.4793421836776738364951949844623014 0.0628875337251233903641024506143221 1.0649519759050133723886868334874080 GT 1 -15099789314298573.6352640277664917054686515011973357 1.9217787279488925034056451502048035 0.0476150544240436649325436451227718 1.0487859713234678421691574507425053 GT 1 -8408057482238309.5536487272039151922884573565336034 1.0321385907939577114819727012308349 0.0063973567864729408112554350574736 1.0064179075674041389121679842022269 GT 1 -47.4525319063556959636893888501710687 1.1694590051604690621500790096672138 0.0428184380115485822982009334067425 1.0437621855776006230365373533747010 GT 1 -138541.0307940122167682338218622535359594 1.0285979046747250477039851303924733 0.0413251047894911877368092177411040 1.0422032655250310314106626506015146 GT 1 -1219961160500372409121160.1571857772658463889741130412199077 0.0257956677147283934480424156949074 0.0160869379591405276681570261662037 1.0162177374176071819969392345706479 GT 1 -83764818400004398866321.4586054508205526042427652969837603 0.3462207657890691097649132212397898 0.0765554467095677549604236303620750 1.0796445208957797967898778183883611 GT 1 -245723397853692.0693565213028665292709671224738827 1.5574662718803089074030078009969314 0.0382508641566573448007335786928638 1.0390016358753843065396234115010162 GT 1 -701029969515976715635429502611977719.0414337958253961347848386303519355 1.3564031367599663050292670206856295 0.0230137078316306056558541383213725 1.0232826575716937215485458804810030 GT 1 -9511.1398890091196383947627386952750845 0.1974262665127103329923433103358736 0.0341925137826814575627187749613178 1.0347907542605411646483578073784529 GT 1 -708.1596545118077606814826468033907002 0.3674273566446443894092583116560395 0.0510860969753096803192779407530543 1.0524372083817690807533020783077613 GT 1 -10965798682967599499.0234041631482470726910066560247636 0.5954028489065560074089379208720270 0.0739364002002294257856937849709702 1.0768123644053090129152981381448717 GT 1 -27842716.0417410444876477911842666244720916 0.9861890487872166560647311608364536 0.0642255927297903578059542003071497 1.0663808494277280977612662158813765 GT 1 -812614793212776718334.3531917504625020185305458195753074 0.3783533924319347161317986199130133 0.0526216987880298449078716010067312 1.0540567922675783973300531142666194 GT 1 -153809982123197824197757232689809.8430689145202581720423913644189308 1.1678572871604026252754142409279064 0.0132959804449709840994976263010948 1.0133851633915997002898205581220096 GT 1 -3902152847370261186795169167767755547318528.3847662384209801668002906656664296 0.2783128728432219647107122335114100 0.0684628902522817912458861612584255 1.0709192510354635088948239483154797 GT 1 -6625418985410666300055099385626915943.5174411267751554097504580296811796 0.9124792740254360330374338423472979 0.0441864261935083547265534898835676 1.0451923914255365650056470717353568 GT 1 -412588907978.4217010690748475237423286353734192 0.0008680256874575093641838435270782 0.0519413071650144633169050527040177 1.0533388663704094368802839098557099 GT 1 -66072792.3863068577336794116160750899963115 0.7993863857557022217450236062762895 0.0504220725891149529609217305580832 1.0517376800481441948017179232385708 GT 1 -33147800617875.9682660349747354584452481460940926 0.3676903239571176854031833638989516 0.0068901495427656114790079309074811 1.0069139962243880990006066599483574 GT 1 -9211402275.1697800781481545402749860483068863 1.3685893890670513371248544796618041 0.0343744089295612867707256830196262 1.0349791067844329175864456697554529 GT 1 -269894614122091154926012991058816386.8508644641431129078648347401885721 2.2488173035121118754563857034913155 0.0110111034317411522556928923157622 1.0110721743503959517645298770409887 GT 1 -12771115231727271906037443727080731434803681.9907459563783064437994231430762914 0.6744758584278081246602056715611960 0.0606641546021615168612164500962328 1.0625822008894784120046597575333617 GT 1 -387229.7491254422063039146173798463830034 1.1675822798273625151955555147025630 0.0340406728225211918351512321978277 1.0346335500271729213689345716131448 GT 1 -1700572731886926551467388961088912294253374.3974155379914473339239780867916976 0.9012597320062464901324428660918405 0.0949450221225775975950052789098619 1.0997595880915330215611797266442944 GT 1 -4720.0536001128238409507834517817212032 0.0602923883987872409872486696332224 0.0784166177622611339420407853376509 1.0816620206291429747583704676219502 GT 1 -2769.3669268227287849446784370635463914 1.3625162775765493125033991185586088 0.0305248741252452351406806407136965 1.0310004612817349353316957672636967 GT 1 -122248951001.2521326060274387854996953916863230 0.3155868877704208171389635174727012 0.0164646574493584986317435825868796 1.0166017063125242119584326528077714 GT 1 -31346216960365121207991262399873.8339908952082023556689933905912635 0.6539096434400013520792888832419187 0.0763767198474271705439362638907450 1.0794509959375055401287999413452717 GT 1 -2391.2337394661029464488312749520125845 1.9048115543470422934584101677537596 0.0780794023424746761001615331800927 1.0812961788113599734905061423414484 GT 1 -1387493196188.2535352983551147823806930434750655 1.0044248958721673565248959801218032 0.0377874389329518112128147642985896 1.0385198952737786290115305186121751 GT 1 -347926778348218.8626115883682587612276327513006144 0.3422997170971951868463330014152403 0.0044728370828766362521100581158515 1.0044828701473481871807449113395981 GT 1 -67886150916272384796976811972.0450651726573119872635440983068974 1.3039003705574432496406427430985408 0.0872057696477224513195959126466968 1.0912448012777823328845015818502624 GT 1 -28674.3646656334547274911982799940397298 0.1503990678533543729841470596793779 0.0373617154721305672452987728234071 1.0380775509033176660582007789029717 GT 1 -20483776443063169425124258.5862348964830088415039255576100639 0.1275862745886600036467409932145693 0.0600115156325989026865970651301718 1.0618876544661051349107160531924962 GT 1 -175543231674401422283722962505549.6017658662335296261272129990421380 1.8173526094150209115337174281046901 0.0450943649287741978936834846017112 1.0461427548273217397608186562496178 GT 1 -10289176405450132545557909068980265069363366.0667284492833139661669496268884899 0.2128708242015088260455408488541065 0.0755376282877391302838455972623512 1.0785429302139285456970771929333231 GT 1 -2041937963448376610212916459866224916339887.5853428166412803412351640625890057 0.3442430967903781948365090225085193 0.0067222980965293088232693905441951 1.0067449945142874395673184254073618 GT 1 -1091565286871309999840051546681.8864505813330255203505767992410827 0.8772198859475652888080786890451479 0.0077827108573060794983518237814294 1.0078131542088556260292816132857389 GT 1 -241853573005299.9413108714524512975385230333332202 1.7338242965099466985581671558904249 0.0817734184215679294220051317838536 1.0853110979253734074324815432667784 GT 1 -32055841471022523267369814335985.3235734341475593317827152731021975 1.5433951213640444407337478929283202 0.0167184884589909402423004305135383 1.0168598198328691554859799322352423 GT 1 -4778.6893001212180295552641407050386971 0.3917855346570293754354875689012087 0.0150713498464299517288442672361494 1.0151860768260050071421211124851955 GT 1 -184405602.6369980245781587355852567788435965 0.0885269317243313645053385383086573 0.0985514590969989003738448029860803 1.1037523196063630673193929191624332 GT 1 -65307016255323540801904271056263573.0869576711954643573326440229896809 2.7523414492082067638355695130793345 0.0999792375673215057429992362285729 1.1053374465542773452850533557565922 LT 1 -59286031174144687997928087462220034.2241776514950197044253866833275180 1.3890202242641070839013476020358793 0.0179204407351160820111832662217685 1.0180829563280699707268686098571346 GT 1 -547574.3674658915894705927910347656088276 0.7643516528363896532870927020190323 0.0907009552256968937287474491658210 1.0950812567574717289377175349403633 GT 1 -8796653.2575931330513451802468985645438528 0.8223596546436618165646313919048406 0.0316389440518086629070184630920756 1.0321502695676492403366285877955836 GT 1 -9571530040319270144623234488710.2072840477637286131400272726142940 0.2435052220061696550480982981772476 0.0837097483797262234673507080753753 1.0874220959191680979834466073370200 GT 1 -2629498864435563831957073.2658980704668999750271177133439561 0.4307704299168339302102219819276162 0.0494458795086809187716370383873205 1.0507101797042633626124788233153391 GT 1 -18259369381833304052073321587732.5709827693168334383502074201090801 1.9791246734368672422385683665926294 0.0941626671614548817928864576838272 1.0988955333874868177641055343802332 GT 1 -30.1506372335789588197155441813560366 0.9372944240916128127363196301495953 0.0878640448700536780941836176456329 1.0919662264107744302270430556018920 GT 1 -310799482057464.6010549497698460412755436659077010 3.6828314770028489034470972038101017 0.0831007823983709485440652601338494 1.0867577172349358564466127328435700 LT 1 -9701314700286483268715948994230717253136.0003008192308398789209461116653593 3.0712528273909254889894522264395344 0.0541892632262615854549040959797920 1.0557127967816694793053749579102823 LT 1 -2873261.0734447973338215215634645697570960 2.1506682594148631434125229253608582 0.0605296719834944163544974358391270 1.0624390433665793034267077183299788 GT 1 -1174384289814144563576355160748856758.0105257426974634668897396629027883 0.9364102226024330299332011123440037 0.0680342848306358252794218110944360 1.0704592512721438353945681091071923 GT 1 -14128828826494.3698881996332562435113052426050153 2.1974501124153645538879931494935686 0.0978979514859201298871244948553979 1.1030276294939659233015156913842011 GT 1 -291781.2605260398182768856707547798768613 2.2195117679273739910933927210362505 0.0473878250862946276346501902008054 1.0485474099772246583912919987253398 GT 1 -197.5447013924118076073922029149372700 2.5898975544046758896518135175313635 0.0641160419687508101747987396879645 1.0662637866526024599189651482933709 GT 1 -278.8935814361652242594127567095252337 0.5925441700623911709636738533676609 0.0469655419696538519333422586791642 1.0481042185520647803333047069086042 GT 1 -23040502.2204010508158010935695197388066146 1.6506137478357152603782524160234070 0.0636752109587246080799997779156770 1.0657928658550553929269141370745085 GT 1 -14928181972398102410972286256288643974.2285935578597628122762428461533449 3.3142355082022773187607278986287457 0.0794202463698336616100612839422301 1.0827516404215811384916396177510322 LT 1 -818182.8127307929088261096834543221414616 1.0897816211860499829663354776711241 0.0096085070234266075605950088844626 1.0096549665711534182094933839166283 GT 1 -3401134.8492478677135736749144967655679631 3.0523162042906820824735384355325180 0.0357500079876528892634700229410195 1.0364046901775986054225463125695326 GT 1 -598639.8829008974276319100845540219875440 3.6901095375046547499608749428182798 0.0972495960068617203370813851822165 1.1023091713108087668275375133047261 LT 1 -28684156853974271.3403284394881763998170751344237613 0.1128296052028652659190204056319995 0.0123154917765071001778168910202871 1.0123919558893577365069773981074806 GT 1 -2511105348338457830790448514721.3535042913419079642933726135042340 0.5236096690715488864841212931362703 0.0365902606924624530925744078718999 1.0372764755288970099951469277127142 GT 1 -206511851818673.9888619242081414466256378565604827 1.8403663502163113332343944722955697 0.0841506768976202173408522424462459 1.0879034222684157191598577292259490 GT 1 -692268997878960224449.8073574326418998760361969659063353 0.2053103047671967709973410076704070 0.0987972336089935600743570163694594 1.1040250007538740374263240601254970 GT 1 -2424346996846576601950.8963442442265795939764440704593498 2.5844243938325348719017105593751067 0.0971880708999894352578219031256627 1.1022410206789879336145235805047114 LT 1 -34941.5306460017091065158283343908964618 0.0355205730454657851888755540679016 0.0014083457278997866938227332112292 1.0014093383788510479035401126070970 GT 1 -2916859251494478517497012210178481947.0775585570365589059650303428071428 1.2936636228255934121546888859432724 0.0300685094587472594708376285688056 1.0305298382869918018772680411212547 GT 1 -1886055870979930289053.1286456780471972451855147325958002 1.5182063421800229273162624234294114 0.0581565345959640591218731942075230 1.0599161908211519295513704495688565 GT 1 -259356305553181700.3167880852501692891818929902361126 1.3853150065670346063487083712265872 0.0082521791805970441072437503778025 1.0082864168985028900012533824682450 GT 1 -5394735290.2643405692426236524815923659321920 0.8211811251607413133972534311448429 0.0062704049102995859124368795267958 1.0062901464674740830516027345863077 GT 1 -2.4868821962939607832600163316574277 0.2674892202909487722763228185693190 0.0994807286314843205303452221569003 1.1047837138527361386834806193942747 GT 1 -8.6775704605252504363737170834107484 0.1692592535238238759818356203985188 0.0043677426787320318773937898266219 1.0043773091328216737883222429806925 GT 1 -3873121495783501163520748213838280.2061150177943280766775406999283383 0.0528964511774329366370351950841208 0.0642751012539525002610846824587166 1.0664337573011262204702823953563062 GT 1 -149499381742954027264.0830824032038683032662854497290188 0.3125866169595551344468618770897664 0.0165439672049445943677091231160682 1.0166823469870316290121134715695654 GT 1 -12826116632.6097441626818484085372981660166493 1.1856642891798055502666396534186216 0.0405798310489497132104120367126211 1.0414261676720922616909785314617072 GT 1 -11525900300596763960779206157588908398607.5210911659809550255630046887543704 0.0932682775255167950848684324400397 0.0268735879164652803642161341082914 1.0272412853135812030572374455829388 GT 1 -44007141557571.3574197968450361497009039535938312 0.3111168967131547373319793938788368 0.0409642452302925797728636937374160 1.0418269214050653599436485898455419 GT 1 -5015832099961259215664724095685287.0073084248748010147086345025128805 0.8266006016551706211659951575726918 0.0829493555673914997756629429875020 1.0865925798618174808322278093148980 GT 1 -734746688247009470430425253540063513.8974185743811645569958014194513689 1.1183278085868200337332922328696915 0.0384659849547508048486173391198127 1.0392253375169144863359658622234575 GT 1 -1444191787071825293588858485353874.6763537553014895486243853170002175 1.0825047472823670116125604521537064 0.0620871288358865034168748081913630 1.0640982221749995214913532785510934 GT 1 -127564813793899146712861444.1812015660005985024629293860225087 0.9105780834653625249815362914703442 0.0587561093774826883028081075001738 1.0605529905955873570619642022730598 GT 1 -8.2299349153817849341086318802229349 0.8170491264441827858749677835763302 0.0704470972503402831852313910092838 1.0730515581635866817609930305383003 GT 1 -4759052057592955.9299435645275850541352098944015644 0.1153779647665603230960679484837108 0.0078344133775369607761852593230151 1.0078652636287402788010307761210442 GT 1 -200266485943625722420790.3995874153768882228359119517992025 0.3677726735702408286242547188001701 0.0899133553147771664548960395203491 1.0942154700639954756341577190818120 GT 1 -1289921645947749271604091677649.1454084007082591920851685649078752 2.5098121058534361547270808117905185 0.0928321085158918759496724003525713 1.1021738218436056366370417757795557 LT 2 -7132662996968442.0736585277525038744594240937984315 0.0417686150864602974632070410729155 0.0454610631440714820014450979516217 1.0465268437138980688974955371371894 GT 1 -45737405562923871861169037946969175.0614844988890127029202850256372767 3.8880365112575605995061367658594928 0.0103600200407773754069854075900895 1.0104140585994462257955310523440761 GT 1 -470301705298875315916282.8702767008634237401910331958582443 0.0293580589665103110851215017201779 0.0451470538183264269409626757658538 1.0461979334138538980024280869922822 GT 1 -189458880408000652016023479444.2708142385701842319744903180216652 0.4438214565460040509361116862178936 0.0042938535941803682228579628057912 1.0043030986576485145559093548141295 GT 1 -1.5315708492885022289594942310418861 1.4908369460916884777019105433939782 0.0452277826721656450035536157960073 1.0462824828379292973689012111597200 GT 1 -77651309104866250884818731799.5133190546113743492335222788745726 0.4708446802871882202412583912444938 0.0942309749358564248768950714611260 1.0989709446644851994056439306256354 GT 1 -102169052077915.7209205285433011594259558932391861 3.3351509925504167752309558426374378 0.0320501559998389242615715086216873 1.0325750070973746407710975584685200 GT 1 -13.3790892849732704106263258829903117 0.3922275084954862339896198196925250 0.0288183686668643682737334714336399 1.0292417722277406262083056957569145 GT 1 -6.4831641271558011838610081332009109 1.3539083407624373494808867447923243 0.0035334901214455805155708283312098 1.0035397476426062379354405619015528 GT 1 -2164.9886658044413948903269698821278070 0.2222530037721105708148250103859005 0.0940329813148740150109306251916102 1.0987523768190711555518695524619972 GT 1 -17147454882.0551096263882150119451200374378021 1.6768978197476996121280285036841575 0.0385500334173691032962993956145038 1.0393127521428030163700549721100401 GT 1 -2461929477856818883345626.7738104723416426344870496794805203 0.7146876755380786297959730394463524 0.0733822603594070539421607591372573 1.0762141613084779835197529951625725 GT 1 -777858811885522802840615727.4902520806135357884821458483724350 1.2807111559665063491978626234388289 0.0372955296762761200654563658593958 1.0380087986817054474228974254768765 GT 1 -106168105431171653.9563160762678174693853740530234100 0.0160279187775144869849444079079712 0.0618141313984626372037013153188390 1.0638071954464332033652868483200214 GT 1 -8576513466173613181143533349.1023764773272221807354513183196715 0.4462074423439801384397212759882534 0.0301295699859395834808341455140397 1.0305927937120436661655265121800231 GT 1 -8282869912.3547147863299580827076068244519410 0.3785771392106140382877542068501403 0.0088818303040891366242137603145678 1.0089215088791688914578511947894310 GT 1 -1012306503441.0266485201210420832886725135959163 0.0644232863175952163232703371249182 0.0149581639812789038330982224535630 1.0150711655965525101024939356836983 GT 1 -4776608339.0124732707213981477808912564428244 0.8530947893647219283934872621404475 0.0171717338791359707014971223901250 1.0173208779419571175196002733438949 GT 1 -12483594.6893092842007449080815890063265613 0.0336226233187496670654991636377966 0.0983651494356936359865463167226351 1.1035456628728475857671363369738422 GT 1 -62150521857552586026173949260218906.6528069020363488586914160219628404 7.0132294850017844532020020151589630 0.0885671952859952950446861116839524 1.0927374070388631637456980635634990 LT 1 -16200311154508003517981984735831.6957150759988516096976545376620533 2.0331228821826004453519120029301363 0.0930686595039495155754049412456814 1.0976885312956971486114082705684328 GT 1 -2567609591985948354382813157504163031862423.6761090080673413754251431868324876 0.7992117763653254205165748333888121 0.0163794334032792149899889116645692 1.0165150593459708160264655165892771 GT 1 -21427.8584749468975355680847535149291524 0.1415358894055202733184255489093829 0.0704600146846420183724155090095659 1.0730654546551335756832873831610022 GT 1 -127898857156.5447361786128300059737741055349471 0.8841976866524077516014222235355023 0.0304547461161253158245875887176992 1.0309281278396705198450394879054974 GT 1 -17388262864402590626243985884715382978.6062324050091335984052049279696198 3.1508968639999804130062233558761991 0.0911246489646826588217667583169451 1.0955473217814118996438201606757419 LT 1 -30667110227071153903541379279326201711683.3058558082504121733934052722397695 0.1123359481405637492282245323541237 0.0378957093782516310582549073857888 1.0386324239826750361402300511578962 GT 1 -805636610193074239869672599887255789.2990595833963698342724099428691847 1.9043905300853789549120476904054427 0.0213466755768279501012036918963199 1.0215778110913617259266066561811767 GT 1 -2841312755084486702104906965.9841742791232145348842711343250347 0.3837730616910805165412510905347540 0.0025257966747864610377399201781124 1.0025289918806351694755049149305245 GT 1 -1490332967215.9554685734752046993508842593389367 0.1422599209001943166360994919683318 0.0836301608238325018042424319630435 1.0873352412358108949263070299305723 GT 1 -902443.1850648112436282043103168896987542 0.6310836748322826261658053806363441 0.0579363497370463108883548792002001 1.0596824374072078670046594753710273 GT 1 -293738666541.8514598849243075673546793944617412 0.1656339280497109741666794187054105 0.0780290931556106085761524376493689 1.0812416103221037237914007456525292 GT 1 -460939728932.9960059245589508327891353060172295 0.1656694695760833026257742745341733 0.0835134655353301177630580094650170 1.0872079041565521866816398708258836 GT 1 -7986630147190276464494971116772735533240274.7203090448183925457762859826982856 2.3038973712474073916289978285925827 0.0622358482794558846621509841818386 1.0642567989897352593570916103332057 GT 1 -66536346673913407025333781.7909794701816945588998005036095823 0.1223505798901770006715275364105521 0.0738123020749538243571087201035996 1.0766783673330826693054178831687944 GT 1 -6040418807796.9357502265151825489005400995412570 3.9099614509223042891303252833713113 0.0846748268816029902617554265156495 1.0884758963820289781754278287232479 LT 1 -7863333135890778005050639601.3862884917522738604737578182615974 0.1046743715154363406895935865839105 0.0784010016791067984986778791796192 1.0816450759324928514403634041438571 GT 1 -154421335931219589133077447005185.0890087586239982036688042886646498 0.2215158447088566480543539371884131 0.0147554681448888682327298048010839 1.0148654129299248180355241078484175 GT 1 -1027.6043694988959797506348902765524902 0.0951937983115097879099945342133669 0.0813889183598525087374272791383345 1.0848924435444983158018901182971136 GT 1 -42533838385618650527850.9066039674479794862263745551653761 0.8334755862987867385327693361477192 0.0025062335995267264680392542846789 1.0025093794602281875872504958700163 GT 1 -4941411568310898283368018260803.5716630700100622268262695680657256 0.2608323949545907179772595286468654 0.0989543709474649853374319993433512 1.1041993799784769152816233479474171 GT 1 -4605524096492818.9089394272618013651008721475147041 0.3280498763207411751784796678101710 0.0481937085321018059958148949200422 1.0493937402435355062340577139325985 GT 1 -17343932658.7945638709300421440375931023404036 0.1701104887823729912609852721526412 0.0472734918557386334728849899664552 1.0484273964261328112418669810647605 GT 1 -1449675014773840338.4923152463838530877935350040463807 0.1171815444355094545442761447472448 0.0504291542944235212065388933428396 1.0517451378159703352941967805849912 GT 1 -4428587717608181873771152563947294822.6609697535539371580550820387775433 1.3307283386950255915960367712533453 0.0183414741548193247253141051327287 1.0185117644561469427619755713300194 GT 1 -125257110486817214405009437886749.2330259536454360341622877730797710 1.6993295788692948208000292264981180 0.0747170103799559128616844747985619 1.0776556535338250890349258466609201 GT 1 -5372139086021354707207983848007790509252321.5814571723290911113342788027836461 0.3381167063105098664666829030902353 0.0286179493377066116759078590299383 1.0290354270440779626619281530862329 GT 1 -982885389807906196.9190336466954304076690215463455657 2.4969173340557960266919811090425493 0.0536925348784856051689283144341975 1.0551877467518247975230714131853010 GT 1 -143056775530189493604.2487948942578454450856721924654149 0.0867553052611568991417521057134533 0.0519375957603866486192272684922167 1.0533349516366579422940689658955445 GT 1 -13794395285886123303852493695.2253897130148996337279205241191311 1.2142640475436502666411349602884860 0.0531757652649263908089198656435921 1.0546418052027675179681631200355165 GT 1 -5.4690003194809997529082068949295674 0.4918868792638998853116999331654140 0.0325295631199737497390337772342152 1.0330704107414055554793844925614610 GT 1 -602524216507976697243408956077.6492815543073117086823735729499193 0.0551541558043132183132152637730440 0.0090220065577692302106949010876775 1.0090629513142239668161592108627804 GT 1 -486908512904092881.3998546420895093453618549296547942 0.1935459175823945228007708392872138 0.0658708839992650138891466512580401 1.0681406104780584373903389017304744 GT 1 -357316977476553845952969167794707872.4997856523615107310223493989686292 0.4132414061310700976611363199011057 0.0900131016388929322098159530797929 1.0943250769802618110528301366252294 GT 1 -24062519312254880754936925.1387014760386599169829587665718366 2.6577614233805742586859137858391624 0.0199823623071364906299970655284250 1.0201847098336960407978820064064584 GT 1 -5380205695.3748263062698577919474967916413679 0.4031947695819145742101746411984954 0.0287582926921291148375527573970723 1.0291799155010844891599947644043203 GT 1 -1010.4976007991870562726261674984212969 1.3386368154634735246626650489040303 0.0113744576232457771688286713488611 1.0114396415254305038108816095313661 GT 1 -22443787958476579.3233458155201148226071683424028743 0.5784724899281444328057573278004753 0.0211133903402978361208902524520809 1.0213394657748011295459199948511916 GT 1 -637504525349292047663.3652031978029748132403851513580399 0.1784088374523258369227531931694806 0.0680899344593038886891017243971277 1.0705189651535736367154849411406603 GT 1 -545008969527217.5860568825060426252817581806182638 0.5751855282761720520961062015794747 0.0866661703109302164079178912586433 1.0906538248130926119709562144613983 GT 1 -581779769418335671.7352175816847505849033248483282819 0.4519430393367789746369859411783151 0.0696748989103307884254154993849035 1.0722211828564039830572232896151651 GT 1 -70448938085378626519710406451716403654.7886079841200233157201900493279746 0.2620968076147541566194901658576707 0.0119867676481870264013991198417655 1.0120591882553189671727875422569823 GT 1 -92045773618795620801706819274173764669030.1613905327429383819982854519423444 0.3835311193346655696539967099109755 0.0518773281681296978828594521351949 1.0532713844321294611482639433282006 GT 1 -1659478723561458677403503085315426.6765683422828368661162665402602903 0.0804479838966298728807219852915221 0.0808847209604318995054399016834586 1.0843437248420197282944416332432553 GT 1 -23926783632191170.5068092761054229327472635810895362 1.4338516280215286159295044009112191 0.0658710901952932721914766220599052 1.0681408312141938214822890477998485 GT 1 -238393777451290884691830087.2882788646433468498012117475503376 2.0522459499952331580667492624136174 0.0993017734817107216346020455075863 1.1045850091981651443737185940395284 GT 1 -39341207604585219841310668625574355.9583434352330178687800876896710596 1.3726130997104258238426881253632289 0.0048176085072441037157947451129814 1.0048292505894883699977295995396578 GT 1 -1432209212515930787432031451764918.1051951701854493906758954932700976 0.2365432274991535984972679414547240 0.0915298137007986990330999280436019 1.0959932080859206316128652273595013 GT 1 -24124479403967542795468324535981019.9746211818659777640267643145620484 2.9443594312362847398430330246251344 0.0148878143278568602417709527580019 1.0149997502120928055201035280944675 GT 1 -18.9455528598249673905502878429713689 0.6121836915517165210751739762588435 0.0865320616334658932563902633224752 1.0905070013535905105142509585425781 GT 1 -251440727570334966582464058.4791725217966469568570309990178089 0.9690390568110258541106355406362838 0.0407728381115317342324486058952264 1.0416273584382437564403136746418642 GT 1 -4729614152443620704.7688238252257593933701218067093296 1.5083260716329087078810741962112535 0.0366261854349558879222791886341506 1.0373137653868319022663550639735010 GT 1 -722476369251990194334010702385047.7877086808662139643240576173824666 0.4305094095717648937666065392204067 0.0983712178045800854539736710751316 1.1035523933018056469952869384987782 GT 1 -2906185478265.2430120574461270879120850576069066 2.4692622054404887046098907258307845 0.0924136299775157441174066586170538 1.1016677991009680448856975555859257 LT 2 -403.8251575174993879776792985873613685 1.4393404559198969151135099638414617 0.0985309339089090893893259421577884 1.1037295507476963440457463204334198 GT 1 -443751346825569882564387811.5071705309885860456912115972726747 1.3787025072953046007961571890677319 0.0210198540007603099438541581785117 1.0212439165354687436471084176018407 GT 1 -23580257839674844447748807.8055005082714413251484495286673769 3.3388327241038229740724694414136476 0.0906843235734492815425696348871830 1.0950629662948969030126652053264151 LT 1 -72499765284101279061885543440042095643.4149826230787400108133458684814175 0.4001603759102331187258453414589622 0.0332024574134789474842753500799784 1.0337661719573209809566479813358627 GT 1 -129972274550437879475605215015284594002015.2584831464461647841384046320310695 1.3009660457460807644593036527253059 0.0418981457400562421904482823981040 1.0428011869760249394858677571423705 GT 1 -2970.9950167794810499124542217481314271 0.8724347024891248082456168558977435 0.0610105314275020968789894052381304 1.0629510154145137184398416914373842 GT 1 -34651301045748710994534226321194924952863.6648871175388984882841432034723918 1.3055547155446368655575832576123419 0.0222335577269811119378098171693344 1.0224844490491264902312601529119259 GT 1 -5894667888454156218186305052580100864779346.6000077274122394757882241593093593 0.9099580088729948191973739151111591 0.0020274892106832729643134356887635 1.0020295473493060914438323399107457 GT 1 -1809038892331431152531994939914417553029.9318582210979146104342101044942150 1.3686845538385135865585556104831115 0.0108909501596975885663495187420919 1.0109506907075768633799348882261073 GT 1 -10298.2299275134674034597940432501429337 0.2358280092559257560207804007349761 0.0790969824548831129762928731174420 1.0824005495253412329060847519323971 GT 1 -11479.1296505276551755336861615426273045 0.1993744344848481400198262785390924 0.0784183222043107529192007026788516 1.0816638701021897224552988947198853 GT 1 -40388289825392095245109116602.0014305083875147128785475486995276 0.0100110662279221913140155872663912 0.0411350637292209335130813089979296 1.0420050521082639315220399506958413 GT 1 -1476462556368544201.0452516220131072331433092460499890 0.1655128451473006742546642463732026 0.0609181520077964964956420772944882 1.0628526385116077292050087556767835 GT 1 -9705015332636208651111264948656890681016968.4271902134090627038077891208767554 0.4649016196679769808347847641624876 0.0954952798774776777264021127289192 1.1003677556722638296935759224404144 GT 1 -994109752522035395420329599159646572.6720002940206966131021877718861614 0.8680041612118669282315686753109566 0.0449123141505647331130661834863742 1.0459521250730009047315461780123208 GT 1 -4513870085193459175096469306249467763135.1142122931711604895126147983641026 1.9012820418305102273939446970504165 0.0154142813098516657235195621795532 1.0155343164451845082532285497461626 GT 1 -4828069239315766027607528921151027337300.2540218764064383867109923079126856 0.0202960064764311674403735888032710 0.0501335456514136193932645326228954 1.0514338786389624123411231453676563 GT 1 -1159.6943312040762527895689596992518340 0.8134155290718700712656983696903796 0.0067375565722473925747724261316328 1.0067603563742068017456658100995876 GT 1 -3289153230582012.8104535257459355659516636989336185 0.1052559885289788898669772770906432 0.0173407243272671329268664904580189 1.0174928357335525443522692122051496 GT 1 -4997354004480263333445687638570724209178856.8815236705401931621655924625137329 0.0676763949448842819233024885602919 0.0760322976484091758987890153490862 1.0790781621163089476848349058649038 GT 1 -3302265486829119117886929.2116427699576496728357259402757772 2.1938251745324242455628390813725217 0.0544507288222821698365393718340000 1.0559892810010533839180314041185607 GT 1 -9849817347950999530388524885005011012704243.7370679264824990484570001055756141 0.9338349178822488734599069405421422 0.0192577182752100046889975498857524 1.0194455636916906898748228695234049 GT 1 -284145902834876.8952992769030159538355759852102178 0.1891710904430143495570044890718040 0.0074079493801174847098408556475655 1.0074355245049496877557543391246301 GT 1 -47728615483972775939728093307564408760.2285396607683602977736136776021239 0.4617167118034942364300862033451977 0.0094470646397589696416170106353261 1.0094919712021610530146773075935775 GT 1 -59241408065903893578228110064083.2256106792841514410692607664421528 2.5879805542320482108640508837389374 0.0522353880124993616856242616595172 1.0536491071498065354910454824521399 GT 1 -1231016796386736606096657272.4706126091049083995382129227152438 2.6626959590107245573799062657846583 0.0678392567711683659624522435174022 1.0727175396968796440586057769099926 GT 2 -4405767513780293447456.8061424135644629815657979717667295 0.5895037027772571889506653650827406 0.0116275097385074302787990820395576 1.0116956378516442680726077110686277 GT 1 -593176069107294107581168830.2392138519889182864527229495327317 3.0769031619937660553063517671658929 0.0069062956988122255358275361373850 1.0069302545338733355663286393778693 GT 1 -4240608740.5251906959174250890141168844564673 0.3076365770795868057396884188521977 0.0028574859587925361489520580386580 1.0028615763658403594493987681888012 GT 1 -1.9192497421703289627188205925169566 0.4503879599477905854393929368129841 0.0313653716502417494776288549351350 1.0318677987231309767393552593301285 GT 1 -4709271854648483682742.8917836046262686755662979846219037 0.5807282538613203127405090345924429 0.0631298554843208823977608148490427 1.0652105927770726714826714565182651 GT 1 -26697650323990.8879988640681644179630554081132967 2.9461757299853824835090584004587261 0.0386727553608535032772247572375557 1.0394404028585851768622125913640735 GT 1 -2548641092326248732075102267.2621390705890776605588284865709311 2.6340879872774588880372422744672810 0.0499190603584505311737273369910175 1.0512080983941485939236296576239984 GT 1 -576380227474.3336071229161574647928085210873384 0.3119178597762259012948180862388433 0.0034632275892135911534738649474216 1.0034692384438653417079401757461125 GT 1 -56847507105966045.0309667311903639728893174596558172 1.6889096908308458317098149592396522 0.0816158414229805673847003819399762 1.0851395025017719108247152372606246 GT 1 -34894936907854.3183262906129362396060286489257042 0.9748412910518095704530847978378680 0.0418579926018438422158404429594176 1.0427592788045007445059063977445709 GT 1 -99922909728446712239306318373457.6246407126583235706810668187950439 1.3008655700709469155534979102727243 0.0395322020442349113141983391652146 1.0403348236699913339165927586709879 GT 1 -14126602780.1151379627506076052433574326937648 0.7152113559205474482232496998607515 0.0591270226451890540028163039910486 1.0609471353788565949554891501622610 GT 1 -2132.1003312681514906348769353083136450 0.6885626700944821991669551112185598 0.0371657456662901891419176532740824 1.0378739958771494866795201351697216 GT 1 -272626635859511354.7454961775151140126785766195026579 0.3876066961260807021011994445481281 0.0070928129695573381430707567388123 1.0071180865455381696236293823278708 GT 1 -1557923910086732524614.5435472899163657722112058051180653 1.1118701940916025297444071191940619 0.0707603361425098028096462414194068 1.0733885929686121884617414017213662 GT 1 -1152054619349987606461.2436869134695068088563248196771551 0.8243253780354124091564097651580169 0.0690516963162760006927112926552690 1.0715515309764111970947553485597884 GT 1 -359317987796178912623362783100.6227463064303554612718928855821900 0.0962219003919425369634055303712911 0.0659508358266937362857687648032987 1.0682262038374567557206032709835920 GT 1 -137235113000691269394337113915.3046799360367634990612046755619876 0.2207660754014168619229870364485195 0.0815444784573015098889232359163880 1.0850618006027032764416631357470021 GT 1 -14082789551231500663365424105361689.8940055044803416880275593723542245 1.2874634387877564341559977678320138 0.0211653827035761718776494985189825 1.0213925809605330605700971693128544 GT 1 -1256886044.4188602999578014721975656714939696 0.3857042913535263981471661047069553 0.0429987008114559816628045011670765 1.0439505299663174252802912451350261 GT 1 -30.4423869307846192666425783439227935 0.4547662421903703718162775284896701 0.0672470922016693954755830897748025 1.0696149494391135557882848586780667 GT 1 -1410058088998897518.9846581391588660276902972847773405 0.2567049647802415249922794341092380 0.0804218870292440655000339958130580 1.0838402869736133774092339455226500 GT 1 -246238619376692299701945731844270.3876763484492643325655920268770090 0.3351273526733331927446655306084998 0.0184454110116885322636992430051442 1.0186176488924121622848051262350573 GT 1 -35832785474881811389035718835302.8949647910245905799693339037622038 0.0752966116044735445414736588502244 0.0363558681354544943081190435099100 1.0370332103439737663028263408850696 GT 1 -2087402321642659416109878858482.1076515719534616326363148054039794 1.0862063533206648698730189153914858 0.0484510025800556209343074809960512 1.0496640986480048780831637244378462 GT 1 -67472624394000583546777473547.4429057471920335554424764840372478 0.8194198972212854387253781942338795 0.0477563959488212910459215717333712 1.0489343903157850102417572849719133 GT 1 -2584537956280506840737915296048597128716.7434124448739913500765498069139274 0.9831586453980977011359813965250158 0.0128741856606875712721054289844932 1.0129577762040510858772187391296695 GT 1 -2784377833719046279298018286486888040.8720463808089145405994298818852823 5.0576888110543012074371129496438371 0.0120949614538994383990486307891883 1.0121687006854777065769410947571241 LT 1 -1297808521577407435226450203.4002521964162329607500666293881604 0.2629655386308998228568962923598939 0.0286654823906876828201674349876043 1.0290843616686823592960752528588407 GT 1 -138725304562790053117741190436382197.4467658024394738272248467527166604 1.0556433706332917153836386961259012 0.0768902171506873085628229879597227 1.0800071102203778639106478055508968 GT 1 -15484.6313921984931043876041400826310130 0.2141415377556184323940932333551166 0.0844550126816924338643471725034532 1.0882357764590364176151482826415402 GT 1 -2073411376043957481458003434845377.0352805009989576014249011218163863 0.3846918187220748300542966279561068 0.0678089605198723954521459977646545 1.0702175073186927443658029088914251 GT 1 -289612147801.3288480061835010099629243781670068 0.4239421310425545355459365094106755 0.0887802936768641312025703723646729 1.0929712403017033305755722210413141 GT 1 -47345678258622602011537134440997270311.0904117020653116462783477218991707 0.2776271345934034123266905123106040 0.0494503055686236342639532129000228 1.0507148360096244703813026891104042 GT 1 -22094282370476967932.0164277378208717648920835908539127 0.2387516345723453875047488071807844 0.0492330873901312153472732286773456 1.0504863436284681271657802272092003 GT 1 -10133616139758827.9672101850485076043693568064789886 1.0337567241953644902069625536006343 0.0615641204301314729115249940981151 1.0635407475380532716607336648375040 GT 1 -7284415333282998906.2217070142737803569563911050067885 0.2854175387463944508541524368811072 0.0440420317307035097391397366294244 1.0450413331427852318206034751141563 GT 1 -17632376740830286860680577503.5570606241286401538263398762216297 0.1082510011155711069393379406807139 0.0547838577215375157708482027441420 1.0563416556534894083597941188828726 GT 1 -8707612556209692876782452296228630651.4647357100125084488405913258372902 0.0518805429492131737129778246898357 0.0795914226932559002921912589204399 1.0829376017566303620914487286079252 GT 1 -20988127334537103573649210288224435855152642.9810859264929149934213696037502681 2.8273311388665868300290365929418130 0.0069515885266113708330849192584027 1.0069758633827540541705903701266524 GT 1 -341156206.5469142054182050617517710630474640 0.0587208724246476911597110351135322 0.0900189780963618803433707783612358 1.0943315347396580467020656131747353 GT 1 -96025.6461105216232223149690086085828414 0.8322500105590176245302856675567277 0.0488665556133867638278121666171753 1.0501009062106414538551039209587198 GT 1 -86366.1119629397389715609002507664672468 0.3769982700476708983603056167566713 0.0940548805317369712158964563596218 1.0987765493122101894646621344326088 GT 1 -34876561242677829847500397.2315191642308636130704348997096860 0.6530606809737189399003506674037303 0.0387031837716954791060846362502500 1.0394720558597764629685612173906471 GT 1 -1593775571714609785.2534547074054388993648068976604883 1.1018795953103946444203619455913848 0.0976946816510424093984525632708394 1.1028023257854236927656705650378522 GT 1 -220971246734624107592608261635846646972113.0378238215086566260084343051871868 1.3239058592275191124978594701351356 0.0187980071376224743749033897093260 1.0189769355538222491682930507114152 GT 1 -639597134156661307790499554117074085335.6187491077889356303171379146969896 3.4497763453579767493817341952926336 0.0374421625058644231719122267452960 1.0381611237225857482733948934781562 LT 1 -89323491.5690248351604767210719871791480542 0.0267691092526308744908099611257123 0.0889654959778457412250670114684768 1.0931745075523073972466959653023036 GT 1 -15759749757810057600792654.6289796197876997881838892176762682 0.0241966245905641755921034276596013 0.0813710171711964304731514443468754 1.0848729565008584101572435654755547 GT 1 -7939499.2251144405954356825633976079422472 0.4349641882657357264843523041715458 0.0850425980772497173420305538558230 1.0888777700660289711599591017119186 GT 1 -55948.4248685562641147333584994932691253 3.3883544567233018242687029824020406 0.0532711912752221372604396030150873 1.0547425956302721737268213954994172 LT 1 -2125169834703317108615422263593.4592620032031041057829984316411319 0.4616601467905453813396269329608337 0.0841133381804534286457486494216288 1.0878626536014469891125737045058028 GT 1 -14963509883.9671432448610276627972823739255609 1.2847424180734802334054137253088500 0.0330240272184646158536392411427215 1.0335816310127866917181202495504598 GT 1 -33699.1483499067931032203489537754113280 0.7535190590135852011410634784942687 0.0311248340256214104041761868705924 1.0316195030741894727528443219915960 GT 1 -18446761.7249279075758927604758941563052352 0.1260739287397227438797669032867071 0.0158516663850563373528353916301123 1.0159786477472094297433940309702593 GT 1 -236183202765620865031000951670160350.6221809658123866127377002712861604 0.3834308559616066569428092821854948 0.0584282025839555542262627924695193 1.0602046752517907807109832312177074 GT 1 -314099633189320.8678688563101006186685465521288239 0.3857366546325456287744063870455121 0.0347706495132250321886931357535529 1.0353895369837170815163487567205269 GT 1 -175614542782061164518337491.6587664807414153683355323565550372 1.2717949837366644586042665691721602 0.0563813716706478721158769286291545 1.0580331898785911246141610533270425 GT 1 -3975839136439540073750406237.1432835170645202803836310358255565 0.3367300258435315786348350546117951 0.0022647418998354736342192467589417 1.0022673103063565646707816238184598 GT 1 -3694557363129705066707414150698.8528745318282237645099124883790727 0.0811436671005400117122745086206699 0.0425894040141429364754001597502440 1.0435229346253346514318172783878968 GT 1 -2802753259043486112484427096349075773060.6038154396787921379514208082951848 1.2377467967825675485178158080491771 0.0288907987876578228115402577876616 1.0293163543856887284421589943498995 GT 1 -34870664874102369053.6895785464363329130623279845506768 1.7511585514805768329012305698552336 0.0289279935432681455534171693495359 1.0293546564302847726603478052364781 GT 1 -3197426018584148574841835534.8597855853386070900224072268173751 2.5788262508135449846518650581281441 0.0783234181454723266293441641091441 1.0848869857294436792102533732819538 LT 2 -19439.7161346427251325121677078620397926 0.0047594344050014462030768790371919 0.0795053181358950265892902163512249 1.0828440557682741393310862510306261 GT 1 -11369061454396218640641580984012057970194.2167741746740897931476513807704979 0.9123356768121876366684808301993229 0.0634033183584350933111762611879267 1.0655025252225670701353666730453239 GT 1 -54546972637146475405.0938650218286902830675837078032912 0.7007436169225496041721863208008178 0.0657270271149021810717354246717963 1.0679866212639563625903738048749294 GT 1 -378223875714.1358539922146768398918613250256951 1.3488384123777267656893488235236084 0.0534062586852113695211698563150268 1.0548852732846586798826899941111892 GT 1 -1446983728768689945174975.3738251817919285012003619051548585 0.0502076868498987857826943505796021 0.0076672473572801253043746748254445 1.0076967918116118054686750650400499 GT 1 -235977062760230718893674485.2459791238122224496879899596764481 1.2903614289637782112327813235322949 0.0408233376134930153885702434337188 1.0416800058541151575833248526556023 GT 1 -132641930615015332133782369277193368061484.4689777039418514826971234731424819 0.1795532701225669192012957177385304 0.0337790757214183063760485890491558 1.0343627708361485454862599643069727 GT 1 -486721441538264304644.9492716926078049168377767902041262 0.8546999435234672202537639231290340 0.0154772239352037265330255554836240 1.0155982465186580184145438099383405 GT 1 -17645461528196382931100669142.5627723464502892261781543991813545 0.6339167760758543260627997121601437 0.0640648288886429649237970334422615 1.0662090665364082392728706230112062 GT 1 -56567902095087413989841258.1710143907364831402306867383249187 0.2168109238406928149098865760296797 0.0346588562618032012064652389402776 1.0352737232883548040775021823001002 GT 1 -502715.1776717467473107864341621028333717 0.9659612833512822603180442464047632 0.0203555614548726663643064725720158 1.0205655909629204171599342462736804 GT 1 -431939607183173572893144589007427716617942.0107787305836183813693792379904611 0.1322389145300333604396253471418615 0.0866036164599497837846487750596455 1.0905853375777560850555669449554954 GT 1 -12159695467356515623745018881760134.7322004716867921023270950892842745 0.9988969885038643000740125588373669 0.0534344122747859987373218181691089 1.0549150157253976545228580297445655 GT 1 -24781482144791414634634192361262768189301484.6408121732717817942541449484021805 0.7807635597957006674373147521602240 0.0860592114856228869000766197233959 1.0899894924335109466557690142471508 GT 1 -60239470214024035986465787509247677099473.5707483178715633412312383764922236 0.0015313005598627706175402362269500 0.0443363731797744398600318150797928 1.0453492826367155409627620387600669 GT 1 -2902612.2096317940778312285782641061631566 2.3253779171293965590890251035067358 0.0102195490761441060460275664212411 1.0102721271909617623507089937666670 GT 1 -23940127613515607.1076061252630751272776921636109606 0.3302001403117044367328059465497932 0.0581459152895870262900122359523061 1.0599049158620944098062703135621789 GT 1 -1499500631305171353328418419305319246.8747378130623478460635073323514809 1.1329622635553173942127069247395076 0.0297855878182846774985772508071122 1.0302381884249160272719919736813106 GT 1 -1.2956105791198227301504875264207294 0.5105115208084817987168623635269555 0.0515818031926390922143247466161946 1.0529597381261951088791814294780720 GT 1 -14.7969941750380013806713970974818585 0.1125323720750006634790330238077078 0.0887457120447142080401931822966362 1.0929332900952667601482163177632489 GT 1 -1602.5116546842615712601087955936100126 1.2240560073892192436607494472226214 0.0373339889792558815937598246150673 1.0380487487103960512836206608673843 GT 1 -45005090250672537687764231706911531.7525933833494121471368331042956731 0.7222232556992032613052538579326180 0.0731726564840712208126901998795681 1.0759879837128921326294446017818567 GT 1 -3209963013947654601520.8893849992798145766229531295897738 0.0417373940163619272005153575906309 0.0980124811699618331699265081332964 1.1031545962325011551585167803767313 GT 1 -6691671977009.9906342614434450804099854353578189 1.6556789519108239027029589864960008 0.0507628319998253011970454503655674 1.0520965980019691739579156066214843 GT 1 -1527706564961469352888233509606576308630495.0923163814272638038093244435222877 3.1972481045836882922329863929821267 0.0610659571868753992318797428128991 1.0630100441865093364398842987571629 LT 1 -96.5555033045445839144696428090674318 0.3953500363545782315729826265234472 0.0342656278495710071150943388664333 1.0348664596526948243526002874970235 GT 1 -11709291587649909986691813230139979194761.0011159164999697614177845374260344 0.0576528607520844323657158346810231 0.0606976493277138400136074326980411 1.0626178594059782245215022652532769 GT 1 -13228624676272288122333921137573502209341.9167990777273720924562914776503124 0.3773875123817133045504072223461033 0.0088422652852593575938620160634902 1.0088815900981889087527742827190142 GT 1 -84622879909713963269620.8751645857490435884857583102552575 1.9839822612465836378682887278031127 0.0296300308299636928566879654268228 1.0300778686880893184322724757702358 GT 1 -402508.7283394510286554994374405562658195 0.5591314515453381324127818302037394 0.0832043431307587179008410162264237 1.0868706703046528217651749469576590 GT 1 -4595.9912137119622890374940827470325187 1.0494448240183629704684161448882992 0.0482167722647394661152388899065879 1.0494179720775586764524429971749754 GT 1 -651238486212775484536248583.0837714462799485649538971443902870 0.3782218987843714376940166804473114 0.0190759674799603403739823059257988 1.0192602612328067011883525083798196 GT 1 -10.3506156817083570899960647231277699 0.2535563845341188677391448295802342 0.0728458360267950981509026537943738 1.0756354230650742077707222532136529 GT 1 -2098512388675603904281270659628878575754093.4460130499302071322218380659190409 0.4154052282915014549693843209299411 0.0313354095196519314665792013171825 1.0318368668667600229197798100132478 GT 1 -222.1410221981610619341254188990467036 0.6186555251757339310812767212217666 0.0403949949439199147607807550346500 1.0412335322568773357742294593588699 GT 1 -16448411269674764275125377.6505006659853665218957218899424053 0.4546461603176284303473232558534803 0.0621480822570043315665993077452272 1.0641632126487516130741966247468925 GT 1 -293331713303.1385090093158094231658231455825886 0.2768158205506279947539114559617689 0.0083778032850537596156043555405397 1.0084130943248167951334998088067748 GT 1 -5689042214832259033541981868253489239.1140129862778413289267794876752076 1.1362077904250202231273370845407931 0.0115253291620452416784869135285920 1.0115922605359226430888203144011851 GT 1 -697816925850071.1713288392376180014527135928785752 0.2461167779884196935678547878009851 0.0497875519543182370309013404497888 1.0510696898671344690812508411694071 GT 1 -34878413.8296397347714906506167659065680456 0.1596107162869426136693163631165605 0.0540512471483820306937442702037284 1.0555668838589313381678343243492974 GT 1 -3090140451757383410.8361830349133315872136868804583897 0.7161872746570413283777766323633025 0.0756702364357224100361855594201030 1.0786863840351347424801935441937968 GT 1 -1025669730455403359255145969031188.2155313607923138115882102278079308 0.1339440090297167401598625598275770 0.0247099666330111039487933760587517 1.0250203820997651386857488622044083 GT 1 -4065808811222845197349028715424.5524989634829325478898988288922656 1.3625743142927747057118766163167372 0.0329522250826600449321423671347754 1.0335073794572688333482029163880838 GT 1 -38885.3616440378531668539075109336446441 0.9197905359809069596533529972367585 0.0633392109655838309805047267235232 1.0654340803943682474834330718142554 GT 1 -650446730771220452111.7657638884266397995103923033098018 0.6895034737684939238515527583620081 0.0673478677868693250936393326206147 1.0697229963062940468872533171780994 GT 1 -32664160505430144237797764098766466968805.6503317616161484564409049799549957 0.6485118239122784491090589624228635 0.0038201729983973323514316068732159 1.0038274884961875036988843638023707 GT 1 -2235249418324014430.5712484632658217318140563234512824 0.0736272415981010965753181369735424 0.0661028108985438787721471859174520 1.0683889227205970937575923704333840 GT 1 -169302394379198389785155863734698.3538185834105679590803398061697897 0.1962115103255603153133708392391394 0.0602398913782957293314756228132570 1.0621306398819977114827574909213246 GT 1 -1984765094.0915868913834108439142676630229845 1.1972694653374016802845636880419197 0.0080432958028139560893923882774691 1.0080758176122474178570021416199687 GT 1 -30873721403.9209375825828661747976490078976938 0.4646064923598349863605366568429222 0.0038672035140003088959973593149033 1.0038747004799467432883322419323631 GT 1 -136322233589538548.6133228491891506495106548900205635 0.6351311027408393179085426720603783 0.0009129882508583395576979501807698 1.0009134052784783083256500478766074 GT 1 -616481018030794127219083347110963.5177989996264891597446832844169503 0.3426287630626983644677556326399704 0.0703843097432731757738882403006608 1.0729840145235669816290195569816537 GT 1 -308444686842510037500.4912091449849516427539831304084179 0.9616504097963260132420871057308811 0.0936687605775140428337761312861993 1.0983504333303168591945996979492835 GT 1 -44410252961490036276342875.1760027334834177350512398277871096 0.9297081899090485363498475181141393 0.0052060977551036389621979720699946 1.0052196967008490557213117075011688 GT 1 -15487253423859982462338983.8700457789869814430815707238578257 0.5235381999330197703016580800021698 0.0905666065526967601157530210847319 1.0949335179582717006398477056477451 GT 1 -165622289362.7276106031143398297955080192595087 1.9177350892260951725724642962404019 0.0898187423683850574552862555292443 1.0941115150952165507634927275186831 GT 1 -1181586384101865780683755176612.5098163076119004150291798264231496 0.3999413562120898720607001528926018 0.0329684900628455905034344192947519 1.0335241988093122555605623789532757 GT 1 -6307677608233458.2433867564181400704468884024886448 6.1066534207192487984490853436452175 0.0345244776114002338886603437770125 1.0351345296994684042426662862886795 LT 1 -16739909.5173126434532986426477594697459291 1.7057284238683331895439068158702877 0.0909237665634340759995303611174745 1.0953263231544055183792492435182814 GT 1 -97395790791302786946345533961905551.3514969799301035069797924875684364 1.4947635352590872616475602372656132 0.0102442293217807289102672103913409 1.0102970625726623583412482892063657 GT 1 -3.1322483357780137984615181385849345 0.5055420992936987794924044366911714 0.0173865526031239586766114801593614 1.0175394738162238920832868067643231 GT 1 -3634891197141916.5697558013014303779399207276688377 0.3498159022903097649576064804879132 0.0947238083803305762624930791544145 1.0995151977312769984608304310300270 GT 1 -866677710834221932158447436239407811207.5474069887414077890128922075603240 0.1089793213442820087239972467982743 0.0022221489801984676318426723194272 1.0022246216169675403853421244201092 GT 1 -18422725305725620909174971612682019088.4461910628973404223585312351393797 0.5618982305626906407762799255796720 0.0995916332749290535585112363093389 1.1049068777614230303131973159831935 GT 1 -913864222499877277573081900665161467.5624793475055625173687737203829077 0.8830616246927324643244180479928568 0.0776965167072134766631166875499106 1.0808809520016491744504234028917193 GT 1 -4491840383142653618726837.4873944636605916779934567017572852 0.2198321038345552197879825471014496 0.0163094585190666922630224994593095 1.0164439217572541970524062585534920 GT 1 -81555826845789422150118226949703040.3539556533154490496168151571187626 1.1400828066432394305869979258370102 0.0366084320615782585504950058312515 1.0372953372237152651493342951822734 GT 1 -71104.2596282877461364855304829868248026 0.0086106645472566884509427586597424 0.0167972312161675902695543686173936 1.0169399046400619470985746034038217 GT 1 -454458429298.5247870137024085501563301201553392 0.0456369572200741219413012453611415 0.0976881789781859181865377267084202 1.1027951190791205633520888238405320 GT 1 -4365463351153445031220.5982835061361023166006707769908779 0.4994475326656041135338359082096450 0.0497354919062611453344126256682349 1.0510149035695138267261380837293234 GT 1 -722327.8497937078708420704683073676301590 0.0758439091931773457986909107698645 0.0818713632340471940715373532174810 1.0854177709825180340947705229325135 GT 1 -8661639263572979091533471246035967514903.1863846146706759020707525294212507 0.1721092418200033798549308846869073 0.0110503932168275407688849970241990 1.0111119023652204605098668421288329 GT 1 -200386334.5717328840786946692223691421939310 0.4794111887139562138297495799063111 0.0923125508086718695449994081269452 1.0968551785900677396867402456095693 GT 1 -129365.4114079677506222027154737086463420 1.9321619753529196260603928388679519 0.0670112335129207069828696746223468 1.0693621184140517034198711474095629 GT 1 -125938363462410597888659662.9729948971563271452708660075803222 3.9733566454406235785265223777235896 0.0535462540172630431095298827427022 1.0550331780078589807834082579288785 LT 1 -70195110444885.0978786909010723100032807984689667 0.9207198382537664664088710974924358 0.0005195248837778157956748498041529 1.0005196598835894471247499070930565 GT 1 -677644390112800583533645.5508075866910825786830376131592022 0.6538083826961439629269951904613738 0.0586172153772160814098638514189694 1.0604054371774350199613909677007149 GT 1 -1024.8033353014668857368566902911388055 0.0731327689191952517978994233197641 0.0522400633103583302844063494882129 1.0536540401356254117474995360692221 GT 1 -9152.9599135567952495359384904848342503 3.0517918236416079799859152063968082 0.0922048397615328639288411056047817 1.0967365202821270048604435401173862 LT 1 -197717569043807911503818349464567403282386.4316113735717610013300271257453643 1.3790215347054727924453915211003744 0.0837476861898315956155198600815756 1.0874635004800513873326523418129188 GT 1 -116483429429435134522664639489.6551220425459459055412900034878802 0.2849648474243629726804182423481167 0.0083839297066122117764044115417542 1.0084192725250465771089178350992215 GT 1 -88833388003888187124246842692050651665.4588239223682227689687466286968326 1.2121839653349162737822812645309573 0.0773916524646924914775280543691080 1.0805504600613822580061698699229833 GT 1 -420.2207847204377909353569467558373697 0.0839848737878806313211383709989946 0.0523938685620865206345467737802307 1.0538163362267628228855242026445399 GT 1 -2707687650444521310227590902425.1409571119968673681704137532357233 0.1289459185337682878799138859700137 0.0932607936463881147277363281913302 1.0979004045529335100234317816404701 GT 1 -128422043004534255289849307.5831371374560716330295403962086904 3.5339853357586934828491095325878017 0.0897834284363906855852956028640307 1.0940727170573014939955871831208753 LT 1 -28407487093907877261372286039313507.3587009902010158920958914920927948 1.2950452133291963579932992823186691 0.0376525100426635330672120629199873 1.0383796773674186481512981375063021 GT 1 -126015927951.6230870748554420386411324330449701 1.3006523995729968164097985142915501 0.0554244403859770516622538006218633 1.0570195956490270083672712454294521 GT 1 -9835677553700695898746028676845915538.2457386637928786710654628055762863 3.3227840499331916592341608491128885 0.0258311375181498413496973955631108 1.0261706202618927992321487180486567 GT 1 -3823169301301073242783038.3020301697939860548233219984199098 0.6082154539517837115577402228614070 0.0302589707061497191973897176633885 1.0307262232396752360211909305037416 GT 1 -470172914937563618435.8153509825259217216339304129556971 0.9860073551480769322352349537322315 0.0957322557036818427260604980952376 1.1006297851228682659361536325237751 GT 1 -2.3732599471231953513314775346830470 1.6370226899816995408507263795036510 0.0283132712991115026161936301163597 1.0287218220452965960123837518197579 GT 1 -5091477004054.4520275087990810577526420494739238 1.0106366532564015881458551300015181 0.0102439291107996481053660876404989 1.0102967592544656426360711801827464 GT 1 -4502884891159417379107289733021525799.8854341965699813927258590721018881 1.4781335779090053269681892345515557 0.0573725952605448632714038760714573 1.0590841913532256918635742649486854 GT 1 -586113401172398370439969356.6637775792817049631078529028276158 0.8362438848024604004097378195837338 0.0916653252708990854835743503927165 1.0961423837880100534974040182862549 GT 1 -31061545.8025222769217410347218548268937635 1.2373442798097309340758076832748558 0.0443874342867302895154452132589546 1.0454027140634946434206271268427441 GT 1 -5974426123388544945932561306.9238919413295253125259814804658383 0.0605805047576788513639188435258129 0.0039205574446702534677860875988095 1.0039282629765895455026705596762565 GT 1 -2563260786196822.0717610960026548496767222307678535 0.1204854196982942172629703477463935 0.0007798040065226175237323514874812 1.0007801082118242017897577729109995 GT 1 -42828416684676950980801543332.4272154619900296453727017985985974 0.9754310272548843964199806624742142 0.0012726787668745265988714116505472 1.0012734893102769239228668190770489 GT 1 -193900584683802526329596258087.7752098833833625594541291682723789 0.2279926462410679324206265747039426 0.0237471659901669033226238047134669 1.0240336748774402009501714336532332 GT 1 -37570883030201183980253253495886737240.7153951925027235972517569031526051 0.4349486392004396806285662529804812 0.0905930981212629240766622452082836 1.0949626481338413907515836424444654 GT 1 -15833902451828429.2910916402741754445665147359114639 0.4818859656240913804591901660334170 0.0514730664020855796864085802996097 1.0528450940187512865661767635423959 GT 1 -3654484.9277457568188855191542923975626144 1.2184018438201917529338764479914771 0.0079253437059492976923192430369708 1.0079569161680944213469210155910392 GT 1 -37234902.5701715567612560565459286262614983 0.4074892244096126600089606564768367 0.0049242318535898494143921775617028 1.0049363958318594204301519158412212 GT 1 -2.6516532116666335898928294664255807 0.0778488604603135003125956844386964 0.0350570388594423062884991517068368 1.0356862870164407951418022865916306 GT 1 -1471810311692797500850878776041233732092607.8070268279747618811826937560098009 0.8793370149356132559552860009771899 0.0311226840370274454946346571310001 1.0316172840202968762655049691542372 GT 1 -8868368515258163755905601476568.1910789190698651996532958644444361 1.9944919420199765016642480925124106 0.0639912965860083292620127586693563 1.0661305040285540963824007108663570 GT 1 -1426646713085209497579409597174430.4787291833522241498382840688740833 0.6504023078297242462956312912783451 0.0381225826156507113307443604914585 1.0388682611920482381154702365995238 GT 1 -4593645977410139244530444439.4651413617313876596264736530996038 1.0782068605073894229523168861728083 0.0153611634224979244414687656456360 1.0154803684205932706248981803070614 GT 1 -218428001564455.2677257486712664856943011831962045 0.5968412772525071679983038571719179 0.0912480289346938112121890408670523 1.0956830811515539153722939454993805 GT 1 -12404689662036157774135619227.5129656266120491466360564803381555 0.0414088067561143430676864114788443 0.0178483663922440868324792903076866 1.0180095695056166165027475712586373 GT 1 -1374874857217413258474.2890499001478784655233509719054139 2.2817416889419151909051553043779394 0.0391487169448954108712268922005336 1.0399356342711850010395719549779331 GT 1 -121699980825058946990.9328608959317496236081033047487586 3.8185292693913233040352602648738101 0.0541912613593489592543396325598679 1.0557149093979893517994304708647335 LT 1 -15950280.1458350560480855475033620112855060 0.5257921213710001694113764608290998 0.0976439551899699790882550391194199 1.1027461086334179611293709721114367 GT 1 -234069653708416715449588412204584.2471799120391554439758057573986569 1.3162764997434309386481332113678012 0.0747831633285851107741694281446115 1.0777271509181722725483785444457517 GT 1 -2748589535977027222604714814279236957784487.5156627074173541635449897840705007 6.5634094353005730210331167533253112 0.0474863898408112455970931507402493 1.0486508832023280482691578674301304 LT 1 -2007847940723088.9852948185520782465990732413037678 0.6131234428676278799988486937698283 0.0059076616807125959415864747503633 1.0059251809466526549409125446983727 GT 1 -197332958718413543954550245.8422074734164139841710914586848271 0.1917123344602841497376770122820432 0.0900764605466373429537520229924154 1.0943947055800582891678398358370655 GT 1 -15393355201528.1610130102473118503981139776324283 0.9811519021923001303256181667661940 0.0231541119549852758871794803098330 1.0234263793560089107740847298224053 GT 1 -801278010.9832741161393515541095890366557452 0.3929040491247234130334798966513170 0.0249467988046299616375085547438415 1.0252632441443386108481412283625007 GT 1 -3791467397617108.1030050269309454171787878594753119 0.1159928327005095245509935192707254 0.0284939951423717974171410344236453 1.0289078291671433382205444577498499 GT 1 -3.1269620082357627453270393121823141 0.7633743290720367918037878822447023 0.0592973264952293494854280695264513 1.0611281579706695294111281991009621 GT 1 -174824952036333124553553657389823744342902.5768104962989187705644876541414383 2.0639750109206417295900357031731296 0.0255311829126448120657957332609927 1.0258627594306884673621470800329741 GT 1 -371866684743566318662187313002609613206.1971955491585199351335457525003414 0.5388552954447409268445908547065709 0.0619610221493784506196603892355260 1.0639637766275146650999947599220353 GT 1 -451966750946267.5981827787399512027727483318046796 0.6377474659302904894745894175089703 0.0289174617994905694473181673437214 1.0293438110072913743474717922999927 GT 1 -309744636418238648681833831324.9852758295833864860042259945136003 0.4626693267805333112629575903729335 0.0971638893420267145223936146589982 1.1022142363251917114937392574320031 GT 1 -449395647929200.2091181397027321721706371521654828 0.9369206486010862692549942288318895 0.0730126307102285585980063793095124 1.0758153388707353369799831824581831 GT 1 -786781429323875622666864920.2317863422400695773351858140933698 2.8995562232509566200341033041306341 0.0911230650551156538707538515361209 1.0955455790691851330058703755104596 LT 1 -6994999410987656964311705276458.7829504263790105211683846721244987 0.4446352882150986623761418020905830 0.0939460988145778674956091511547365 1.0986564811266870573669976781509194 GT 1 -968561454730799850309162.6554520005259330507731516634976006 0.1540262061503069358364051793851847 0.0548349247728551307375709034706352 1.0563956839636071116924176960468724 GT 1 -2478885932949265637123546490.0562864556550395650131369583094914 0.3141372728637016005876406568246691 0.0597182749019647009631120107081390 1.0615757410703224948206104543951105 GT 1 -83.5948911857643844070801408999651463 0.3557429099188656129812768997704970 0.0735052550487172061876667869624542 1.0763469052088223245884885334040342 GT 1 -1609776652102865612913018152.6885989040019649130445470028572444 1.1072269826247333789046734554259836 0.0287164919744564856801848381972650 1.0291368779977881352648368923280410 GT 1 -8916082300988618513560819163295241882706761.6484780022574590593948736077131136 0.0966987211798906463793191586606896 0.0896400437263895244363822564121181 1.0939152013384012186687241835122218 GT 1 -4565086901944973997597338.8939335167586614076601692066292492 4.0318160288948773217101031894057367 0.0653595079232713482811998877127651 1.0675933240853994691363503844210331 LT 1 -18085268672145962116542004933660043.4874817413861939536807896382690450 1.2129916117305770281148843814415034 0.0820599304919926327330289158092978 1.0856231742530645791727747871087693 GT 1 -234384975934.1126225199882261964711751156306332 0.1595291194053570716768079688576027 0.0038701586636557866754410925538480 1.0038776671065344005191123084103815 GT 1 -397969729861400157366267198238708790275438.6450794315085335876920703427655865 1.3140001193315400329118825486849810 0.0607481072591946774396914331632610 1.0626715793681990612105591852622315 GT 1 -8728777886555109621772564994307872552275184.6713011649659223364559068589581124 0.1618748279312819166258162384249959 0.0733525242605991032662527221550522 1.0761820708137514579013287602910429 GT 1 -2877861367780075212547476598370064530903.8650582093520784399736328771230009 1.4517861635977356157624002609630625 0.0424791816957250024848977514655057 1.0434078158093633557825584499614224 GT 1 -763072525385.9344393378457271429600425146966801 0.2313087311908011453974501595362287 0.0830229920701421669505992055256257 1.0866728801808398052655162979240135 GT 1 -13846080834606906511490072054081047873.4038603519619414926904735655654574 0.7843964087519268122254944265348439 0.0095961223218452204837120427287142 1.0096424617947741652182169556593927 GT 1 -129288962595404.0367461402099675868867730282196335 1.9934456049055240678276696820432185 0.0908459095402485680481895977367806 1.0952406827135770404442056871363152 GT 1 -133194726956227228621282401511451506.4362585472280934627632079860921035 1.4337069726153991631800166782673169 0.0212427374404522007026103663129825 1.0214716114650138843532115094681427 GT 1 -5729669422365001501522721840765400.9594745628203462979456820431692050 3.6183699956800087580594046722819728 0.0036499695927210613475405844090798 1.0036566469848722544473766975532971 GT 1 -3035101422.9507487577138778103864308340496305 0.3417260935818580062010998508248306 0.0434649087238931171268916540400714 1.0444378036068761595803601669633671 GT 1 -1112513594033098112312475399824997805.3988919932749391389391975715020969 0.0950534040259336434577823525118312 0.0188235307400781181662438344872323 1.0190029484794120249984025216233591 GT 1 -2398127628171691689714.0002205376928690437748522662530346 1.3903071466394664567997638831036941 0.0962661684467159847321772130290011 1.1012203960666704145490496135372010 GT 1 -430080849316009165410129637.3227243109892711844341358659392073 4.1104967515143300670831522152436807 0.0496803557166642568160490952215123 1.0509568833134326670576545302277136 LT 1 -9286548213601419404732257205644683.8755684469254913653907846508315630 2.5510405995866389862844385944656557 0.0411951021285922897870238246794859 1.0420676681001537231714913454968471 GT 1 -109.9736377554717436998152902479241883 0.0910995687165565806229550211370206 0.0140124946705622702693733071883374 1.0141115965394708740849625850339871 GT 1 -57459385927061088766756555078354291.4462734499043610677860781889673993 1.7406122618571493732417982255165640 0.0182825768701326992255051723481921 1.0184517685244100395315678924100414 GT 1 -1188669629591563896935024188.7163764983332480375066600834838515 0.8907854779520202669232332115542632 0.0287719515900733823302897800509322 1.0291939789354358211994705534059067 GT 1 -29336500441532947090232662.1997045454785057506170239520349372 0.5610354323022932361553818368949924 0.0458617953837663118757578171396836 1.0469467494558129800152340007369987 GT 1 -89759779453435334161803239303329286054.9175346458541077714255482390014844 0.3986608100634265271131967167578112 0.0797769640790196707507583591353705 1.0831392079716478809531800698901290 GT 1 -8859718770283731.8729323449693324648545067235417558 1.5195118177412083206307167646292563 0.0319504945981058433386983474063096 1.0324720510691591398691571050872476 GT 1 -346905178947.3819384113036018604407750867467611 0.1743982180181641172085768795164428 0.0903725772060403004575498411257822 1.0947201888098892632261960992724110 GT 1 -37377942964694301.0251415204396079435944464515535306 0.5388486080995708897629451722895215 0.0771679497058819408455146496172128 1.0803080217142328528587024710413442 GT 1 -8571531909953482.3292796065696065347937076223136709 1.6739564345628587917700297069438895 0.0499134390218324374631508934952374 1.0512021817193120052783051575297244 GT 1 -286387369802872688561.3339340208033280168845743771014429 0.1992044568649451041463441378456930 0.0661773581354797890359690145507760 1.0684687497222057253101818246475299 GT 1 -1518276110442985214868247125660.1667362498822123673691258879223911 0.1110043752267831010585205252616207 0.0799316627766599836622126367555069 1.0833073321070562691123009951325440 GT 1 -6896.8759154253541139090323491844599347 1.7013505464425690068366929358064039 0.0045277705045231103240975866335261 1.0045380519036759455615860435490305 GT 1 -906414495057698391863227135896902115165.3756243293961024512254724321519111 0.0865944971934919904626691637744851 0.0406364481709602825236294539164706 1.0414851812247025398327159431985904 GT 1 -156389962987.9023273359063037235425908150024326 2.0262397990101219678374157504395048 0.0511893242793277759379882123209255 1.0525459989884525367263266757507329 GT 1 -77263950264313152682600235436799016.9040000020468169125422483042045826 0.6553371877394893175683101045372682 0.0955293700388349391907268306494106 1.1004054456953586384812964213019424 GT 1 -2762.2580858379914315613349267950269479 0.4129685975549731998769430941402047 0.0428624823102604567504715221705448 1.0438082012070609430282997577376743 GT 1 -312954401517269119730578.0180106912953469572049133972920157 0.2550354797091409859909109638218998 0.0453383855037014224555616650818607 1.0463983316616131379485936470822457 GT 1 -40698830388264422319.5425775005216834632466420637013709 0.9772888719569724367119367376371502 0.0299601370731072420707838279824171 1.0304181125281974691918159234711075 GT 1 -218464898732544251721906381929088.9792657316655956627212583560962940 3.0285540195652546964726628185168180 0.0897454906470659604655083800548543 1.0940310379669518502851817452102409 LT 1 -63983379936652660237356003770766.6569656791868671616733862937679898 3.7146160068552948337124785925341720 0.0700225717518438288977602277040486 1.0725949638302810006550208373353215 LT 1 -10856210358899985536484828899989491169.2096314046947740713940969310841640 0.6807351867458100636706601046218003 0.0593488796938615593203538411705516 1.0611829623342238038315137767217013 GT 1 -141596971804216307.3216034769597332312227538251909601 0.1794717174123151581497954981694874 0.0552196785486197891362177487330489 1.0568028425849685074538993513472037 GT 1 -2566948024.8131466495518020421953717290471964 1.6239128363412147657642282592162563 0.0406302448514790588362854075844752 1.0414787151676859793256770222663820 GT 1 -2119419165486325550693213169.6060320207756362241088286349774759 0.3373712591345161871365814936039967 0.0442579408804573344823397506140242 1.0452672149731754862755747990447964 GT 1 -35050779496571844095401855492865545108.2545578469143744641789878847435548 0.7483954241522882490970595028595517 0.0032044261931180071212939017905706 1.0032095713612126763048302780625747 GT 1 -411556607996043373661304376746498.6424409604474336602128771532467995 0.8823651836031727050625087770935084 0.0862831614904835361849772638003281 1.0902345602215584922583750032460258 GT 1 -486672143066.0162413142582546594225845271096126 0.4690735180467874603592478030375023 0.0365967964376513538416118098819286 1.0372832595244198874442585490811380 GT 1 -52477329998138314321.6005257276050770388931078249181741 2.4253098883784626148587863685241202 0.0979002270956330817650329458738512 1.1083377581774824636110018232122029 LT 2 -1355878.3306555171959726468831400051778936 0.5022045707196548622317576785452195 0.0257231685387608500293472391312993 1.0260597945100279856158420273065521 GT 1 -190897810205216085093883242174534389369.9573783636132482672623347283769557 1.1703042589026275666794021221536671 0.0434573617052602743962048119109025 1.0444299136832037169816366160398426 GT 1 -16819833289304723987051321.1664065741827683668609290489581537 2.4263460702654412538102379542543087 0.0269001187899174620406322504297519 1.0272685492279011834332718288830118 GT 1 -28632383604377556106154985103132334751.9927313039379079457222561050240141 0.4927596511526211484035251542502118 0.0017717618036388610500122328325088 1.0017733332299863751358525161869691 GT 1 -1106436976675669135371650781998692122097.4095263849799902255145880798792317 1.2736500824064059471761364926516927 0.0512994622670100792002786437455862 1.0526620857731050787842521966675396 GT 1 -626642337389003547719143.4624203320491614988784745401651582 0.3226017924360482656160441911282623 0.0264450069581608725023228612507519 1.0268009657378144712624669161692200 GT 1 -15800657673897309352220145110313225424397500.3109870586359343577460793567764702 0.0672037048301470594465481637111231 0.0175956218061278298092927169154917 1.0177522649686195780888662920018655 GT 1 -11566826241409644910132619250430268518289.3362169859321214191150678857111515 1.7740704119227280571612252971560916 0.0196185438617079761189068364418481 1.0198135420946880451881842772853931 GT 1 -293389950614829928427.2490192619873435626639049288431293 0.7507750710347233620460168000525519 0.0465880380040549624703285190154881 1.0477081896193160423637181880620881 GT 1 -99747656297635331547767787419.3861020626501872501564801912925595 0.5270371005951674255800571737874887 0.0279134022712428781769905898238029 1.0283103861766463023996105071465828 GT 1 -17840405246724688.5137207831603741072548926480930842 1.4378862041160691637906510532174062 0.0657558846229926179866509554906174 1.0680175094032985309199136185415968 GT 1 -16577831714557415211766.2152668857981890823210747976234443 0.4730536964082082334785719996014435 0.0667687575100369113080790688274950 1.0691022605161812771669302053511982 GT 1 -1195889937807108338.8044581788284934341917356698673833 0.5842401247171640679816755819695184 0.0040392211742999783617583200367193 1.0040474008619559526139557369315296 GT 1 -27560433.3041831254507502379062018493648538 0.4685817148546845095291799458358680 0.0945488954475351980193509380711143 1.0993220014021453920045000960347403 GT 1 -236009580214459094179692975846258964.9027093891353475109827034590704799 1.1021257576264675490833734778621199 0.0239550757553388763818982575211529 1.0242466646891417112577637117297021 GT 1 -15.3277612238080705436409709241838563 1.6792955727148808273643309682919491 0.0721342514099876024151744631094718 1.0748682241289429739304329342197763 GT 1 -128120623318602743276043460178.2251161813043646562607158414643942 0.2686578292069865303892120924526514 0.0052698553323672356874790477528439 1.0052837899973179935057958895236842 GT 1 -83575041619864060386587033913747127273878.8498001641808362582380018740557932 2.6309376557674092997286124711900894 0.0531623047340326471981232620352607 1.0546275887994267559599491270248184 GT 1 -6480399968033224.0669364034461574664725657090250355 1.4612544461666313221719436600014318 0.0272402368203910405103401311486869 1.0276181304887263854394258364284641 GT 1 -1533461433416186879727.1217526059490067569269251840219886 0.7691093241724110246429084397419614 0.0961242938923619670025876748053003 1.1010634212867863314067842135823555 GT 1 -25244873257189016700586688871455.9913328638661098354198558876800444 0.1783962935338736098590593219652024 0.0005166301293443627331912254535187 1.0005167636286714657656877630501792 GT 1 -607077887601755123080.8573807452126768886026533553452224 3.6184742943484648070194055893294612 0.0765312285426533430005587464264833 1.0796182953370691763620718984302822 LT 1 -13755694091738118338179091693.1624422355836036336767756267335588 1.5908549455297814463647398438270429 0.0810808090233409280785487683410009 1.0845570919652720089086663018810126 GT 1 -316013627.2096077953245220370786753725979244 1.3635119152435506962601709513304554 0.0484257559796825789171169788994713 1.0496375668923888658744237508991830 GT 1 -220.6760063712738702971053055356029305 0.0017053959735340460991653593705747 0.0384908886605652712946480706224228 1.0392512378261422648302999550133806 GT 1 -941000012479241094569.7924584488382634014912668753261613 0.0471552344601204897042311902807467 0.0706624195203046636446469562472784 1.0732832256801725304074109975411659 GT 1 -43.6340727998242158107267087868333126 1.1242100334163573467900332476706039 0.0118821129085246753753474714147760 1.0119532694337079033910465441157328 GT 1 -155092491018818489751454119031396785764.2322347098328749620554482125012597 0.1259077065180361370715020256456492 0.0632096592272175444980691105149204 1.0652957776262718939715772639154147 GT 1 -5287917731145077128632700984722985515.4387446403523898497314313945899527 4.3204880262081594149921629762291692 0.0013974980288409589412031590188819 1.0013984754399374481888396761749481 GT 1 -16996654458684227478492202365259724504894.1557586330052138381628467990689897 2.4090035317426698182966994189134170 0.0328845083227566287766874190488438 1.0334373576953000922099556473089698 GT 1 -17795184984952484.5716755058017488287478747079329233 0.0722251840440521872473085045798340 0.0073817721149011414403917065138171 1.0074091522203596905865208171523986 GT 1 -618676960989407872265589591219301.4090241193913683242228543847323980 0.2222209431112200268140052761596708 0.0627954519245438515088657583704474 1.0648537195268781740988646029842705 GT 1 -627780160164953597810954007.4017481423804268243700648574194154 0.8991993578494226446937344321943771 0.0192995499455104440411721837692895 1.0194882176724865858839664332464879 GT 1 -75253583.8649280904887188293972405360552121 0.0899936063924757397134707877320913 0.0695133116621309712601294536112089 1.0720475089259999994346739064654098 GT 1 -10367794156375661198576885095688949966983113.8890963339633592685869975028536567 0.3873617711110681257784037837415075 0.0385680935098270673590702019399677 1.0393315365441865862511412988068332 GT 1 -29182515.2228547040261953763020583020751610 0.0533436166552429342881348503277770 0.0197282186398540230585470083853015 1.0199254178472819831970598004694309 GT 1 -326108073.6095118820116063415849059482362519 1.2818524911912976758561068831045812 0.0278714805868730339796059281114869 1.0282672616437623398926715384587894 GT 1 -125066175610244868181047581207134645148492.7949500734412628830448062151273965 1.4366546535665557416720997549560310 0.0995036012229869405434807577685287 1.1048091135112543807781709806209938 GT 1 -178411875163352111.2686665979085674293505172328811513 0.0673295878448141557326984939382347 0.0662141900597137413821589227020321 1.0685081925981502350317840345517446 GT 1 -148954882796582496.8972504969546527386528565043877709 1.1083821205181538738986754628265602 0.0538311825532697409300781190759766 1.0553342718906699078288583048216973 GT 1 -23828667105745170282612.3086156573472987492488202562785658 0.5429317851521989147205197416880802 0.0537857133834561120770750493796638 1.0552862169595888294289752615522210 GT 1 -53596604169251095878430186.3347947591515044486377097608020695 0.0918109530408232723031012566465736 0.0236720338194408438423022733074911 1.0239567180920863621844734426201849 GT 1 -1.7136154593342548567810846340448535 2.7246503978158028004491577654222558 0.0033320715805730306373848752325038 1.0033376352936467752648706671900744 GT 1 -1403873910913028109637392992608869.3113161386680189307752490190742722 1.5784058743083885101506398414608583 0.0916477057603384762444387340246332 1.0961229863784814726139259095885208 GT 1 -20226547457765672738831817190889946725788444.9446508722231156678182031617560260 0.0019557990147341729194676605160477 0.0073630600881665466153915231026215 1.0073903012161777808422487151318624 GT 1 -14600746588766927790188447205.9795043134472711927388181557311876 0.0473011261561766365458562334579295 0.0023335488882708440526924627164450 1.0023362758566465044659135135214890 GT 1 -452430932223229022533836734768918879.5939284076072002745725734848620954 3.5421007130097419281631338065927439 0.0442345802621279532879351663440961 1.0452427728837890426710221946247985 LT 1 -8076807190168122922398909515856.4241495757595046539131683603739088 0.1541390500214724864221599073705685 0.0854920300294973035268705846242714 1.0893690960765602374270125548405762 GT 1 -130035217315420526251098.5874937764140782469969920725817845 0.8360047802580127491628229710771266 0.0423908360529215584474842094569840 1.0433155550817001032844830062678477 GT 1 -573876330010698026218050148929532814094365.7702781237630695765483884427829574 0.0674602120984018551013230980256116 0.0242466366718906661941633502581313 1.0245454260115353871096323520119175 GT 1 -24712441486163075949083990168.8227677620097552028783706732762335 1.4927960112694344458956261581238527 0.0485896518488035336243486383524913 1.0498098182812865253037421182650385 GT 1 -367724.6133274482644555268010277622890652 0.0131236011677491977496016490736681 0.0623514786868443019666686416771178 1.0643801109510945617038831388292086 GT 1 -85157744298.6935276475269174729278734752864411 1.6019109379270125298222422416180700 0.0056470755452108174191012803911842 1.0056630805591066409006128699029497 GT 1 -4966714818.0086511313801909345315277986640906 0.1711636516056021749410101539709209 0.0457504293181426967663767734371069 1.0468300372580180258028908664685001 GT 1 -2743129021566.9289344247142403212027536901915195 0.5203015246243807010073899721093389 0.0204370141359599179873574754324303 1.0206487395669113838573386322444851 GT 1 -2054692055269.8973688661427243696623930042466681 0.7330121851791565594459345206887857 0.0037428612661717322607818334717158 1.0037498832985386388431324602494784 GT 1 -7800731.3358587239570756946135628088222924 0.1897744956943787327647230486952775 0.0015638650987916142703224988939171 1.0015650892122138556351827531777018 GT 1 -146552511016.8429758290704343780592373143915508 0.6748911247983044754083737837902942 0.0406301244600168820511014526904815 1.0414785896775358294743362564707747 GT 1 -5969052.3986219264624665700333418303777299 0.7202997306763503979410442560691056 0.0343793012570628307714334510821778 1.0349841732821938295116706148613165 GT 1 -195950034914039.8917131169332347077209102884324031 0.6373392364706291025444549759204232 0.0375625679627125473217455342483380 1.0382862206087037634893330816890432 GT 1 -52675536736616.4476963853027570069979083339272620 0.8193716607256007212166832957475938 0.0171799751254467829367411108727432 1.0173292632124539947636387285326199 GT 1 -2811512290755.0142729772291610776832553270469533 0.1496800872579527562900644863537140 0.0308392151014733305066223602695752 1.0313247521681629144802209840224563 GT 1 -5765809164610781662765159.6845076810791618250346708813421966 1.0113018090602530249145631461253107 0.0344097075693826044819134538192072 1.0350156626559196998136742437140885 GT 1 -10860532908819102119.3878005925500940112840703798786328 1.6556445434208761097065145445213324 0.0636489865432565675054838652399814 1.0657648584279985865410616225565755 GT 1 -5071941445755851259830823160760978271293550.3702862477426066563168564423149634 0.2562443791445891233313326205344473 0.0060987708736885652356111333710079 1.0061174443389434333558768272363686 GT 1 -3729028486407655777853.3278223862637382999329445770371683 1.8459800822098226426626076508523914 0.0185770228003412208798774284644286 1.0187517429249848171350760691021421 GT 1 -48900456865195112619988.3889990196844893376433589991034771 0.5567243584347582824422513448588610 0.0813309044622096499876833019533555 1.0848292916111320625957200805022131 GT 1 -1904206205869969356154813898306283205508440.5272641696395179304144889011868749 2.5899015195423017585806588374882350 0.0589103860489077470686296056637955 1.0607169112519382695523054872343262 GT 1 -2964089631446231483040393860257027909087791.9035184471914153553049959458660292 0.4494190167327565719624484515226626 0.0673731520578895719451215747721263 1.0697501067506734620622206201870198 GT 1 -1224791991868956294570863673149436629353.9531007997333508845463320343327786 1.2557212087085469315094378102730847 0.0545971012660516460246930460246567 1.0561440944822094501698755949305975 GT 1 -26128482278215593.6863909338197804259465699711003741 2.1436955383286076959585772749682729 0.0076852746069777485186869810100911 1.0077149585136560002907253647750405 GT 1 -3294572652818.5387949937648626341640431444996085 0.2390572638586249189445131933246892 0.0396659528795675490063183629296453 1.0404740892958461504795728813141827 GT 1 -7187399395843.0458618518189307554755292831702916 0.0136329996723641822358865623793443 0.0312136316275078323480235939478271 1.0317111574734481288969686101241017 GT 1 -71354754769979513460063671540225400.3983027039152611799072171838898736 1.2612532133688893946834062683386668 0.0637032101669560819578806093517574 1.0658227696098229647134261521347876 GT 1 -18144808081750732868106962122274932904032.8825060631154298157881498799620282 3.1310945949292822232635268070623939 0.0733696419535340877853381858956238 1.0762005436974426240134264270227216 LT 1 -109040290592.1633553119028083424166656578536290 1.3298261886658859369176258415218694 0.0500075124832277754517775054281539 1.0513012022958998271331883801414947 GT 1 -375.6488893920921209363229081641879307 0.7066614882859067414105363930019457 0.0449191560425098724238927699064568 1.0459592887256717610877007395668549 GT 1 -123589910192518371334755648372924817533.6657811506528054249706371154233857 2.1734071074884211053263023667944344 0.0609820933089184781958852078964945 1.0629207299971502205864100524425731 GT 1 -2342728543613860308402345722.3916531064229430709115294677064697 0.8572254737151918742106549353744424 0.0992479511367739615170473933355240 1.1045252547373417654819807164751727 GT 1 -3002716493790442210711771635684316537154027.2603230098134514294305378453279008 0.6966125924190486525780280154587989 0.0088144634861230678213396977252527 1.0088535406684643771742118573916340 GT 1 -385.0774807995018913770213178895978827 1.3071189302974251667834714506181921 0.0135058040476353153803092705584348 1.0135978370113163469318854984403112 GT 1 -37089913259518695.0757859676212310361915510821280619 1.2168315526867385690232887059790471 0.0301368074197238239099531373335530 1.0306002560086187950327750877415979 GT 1 -27967465093527331363460479892570690639.7620284063175678454544018604745159 0.7927455866935000333661807345769831 0.0350866936715134255962533116479895 1.0357170196803944116318669587470570 GT 1 -32918665044.1572778534611692299447341129372624 0.1535068993326244602236898138908718 0.0346193761752084170460810830450910 1.0352328265757744930215748254396909 GT 1 -6532359783671084548827206.1498898603017295851316301318060209 0.2664424272819737952112457726033269 0.0045331172007436809599594518839429 1.0045434229330435096450228435848349 GT 1 -71487226921792303313507578998224.6655234371776266257716815445388123 0.3244277448138113943062712896969501 0.0525902510394246550292994662045201 1.0540235983189410141958635077893234 GT 1 -489230551269803716582145639.9297028176441057394779179294269760 0.2649717431665751981781469926688040 0.0580123647912806312668988614856865 1.0597631305973155205280779325697011 GT 1 -26378790626918766353635.2602204665725528547094385325470915 0.9453799424326680751049868206011290 0.0707566185144510896590764256350736 1.0733845922562376164260070472065515 GT 1 -4731664200637631123816.0601967082747512744438767478008480 0.3135835696721090328429150637331256 0.0094564868445460740857905589966240 1.0095014833132894485302641437297289 GT 1 -4.7579012392845762488617389247147644 1.4046671243836279869953441593236176 0.0883877187698892635357596954033144 1.0925405095314239303192445935084571 GT 1 -1615973731474547612702074.9548421799426743644181162309245878 0.7786198569476706360597891403738967 0.0077812267543076720064775517792150 1.0078116584660332328877538796415584 GT 1 -545256002916.7249587978679401268039010516029583 0.2630728469217898510651131114602898 0.0632309232403299429253176966477730 1.0653184766801842774307640096080774 GT 1 -14340675703329932397190020694581987079.2709307977638365853536472383470073 1.7955938063110452282534281748402105 0.0241988662311495676919916009333111 1.0244964697145714021642683915758517 GT 1 -152101.5590584173849377239878385196666721 1.4449620269492710035258658895235804 0.0470319914079526246915286013401246 1.0481739450497890450844932530228883 GT 1 -10135689525050103831.5608834096000142810802362431545730 0.0383568702705178279288364632294605 0.0708788511376250010874242367587685 1.0735161408532475872801794334940125 GT 1 -8980596815172222727829306074779050585.0977036272946095976362094426613936 0.3706381059073060876618529701288347 0.0516483712487647925833505583302792 1.0530299290953428035796657357591605 GT 1 -5552835836712514228.4560526382201798354490807865269167 1.4017956051114024131447262257826184 0.0635328335762229552303111803861395 1.0656408175911139818023137571792714 GT 1 -591865252.3115411358652912139579709105974054 0.2864561767927165046755464857188872 0.0880120239119420106910267149656746 1.0921284731086883604371518747024903 GT 1 -2300604834903871.9159034183446024128774321201968552 0.6207036609387300915749470423368626 0.0129405856091301979595470887554902 1.0130250444091833613786644119148576 GT 1 -939758911630.7222469181527148056911960692321885 0.4257380479787304589625729618255765 0.0020849093313701115575864199617088 1.0020870857804890260009719277116445 GT 1 -2572732083151305077.3718549624746281146101982177454324 0.3560233682615628774089871340678906 0.0122735677521804192832846543027499 1.0123495100129336921655454062763397 GT 1 -1787374807902826442495761347182841530.2981115380329082839179674260392335 2.3031264680177412198108919604966314 0.0578332956771213479662863432821248 1.0595730515672261406767497982610764 GT 1 -183159851972599862686983006891128332326381.6491367913798340016015484633575025 2.5590370809000734294916599307743240 0.0919369438235555504027372700384265 1.1010919350419617423741595011896476 LT 2 -1496072271610795720870517197215.3832423473102859038488987003354939 0.0728586939081243839953542663936744 0.0964950469871616304877532472503459 1.1014736869362820474035166256412757 GT 1 -162535153788574234439.4649980043026666329896665274140431 1.8481869326155289429144888890907503 0.0291181552255561956356732693836185 1.0295505021583130703617836608668848 GT 1 -343838656982582151757167833146822823081.4571893669396893867034253189415804 1.5788033639821579806416338356305437 0.0592910284464104602720593519977607 1.0611214629458614764378169896863716 GT 1 -15506170352085.8269578089340184476633029487069657 0.3147846229001397546791324798270417 0.0078607442724349341897032682261500 1.0078918027918139676075378362692629 GT 1 -2.6462407311378685295586174789833071 0.9394682074605623074065361393034180 0.0051453768397931068695181482732055 1.0051586598749433141344402614120934 GT 1 -1691464592643676003508918918.4301949435984708135645641943874162 0.4461324411916397709656387828376242 0.0792848426613068582836283900026881 1.0826045659817787373322528302409974 GT 1 -68221802869001038.5695543047319778950948814012349030 0.4695684010010636761705517328991777 0.0618595188702475151220450740760057 1.0638555745269702650289537681021084 GT 1 -4221900423409129947768227237.8026970901719560988714409107331960 0.4939074330380572291880366490114812 0.0261052591736675698883855034674067 1.0264520501462779745845658118223712 GT 1 -1872.2464911731932686491166247518642650 3.0468761689944734840091034539662149 0.0067566565661552825834656060260823 1.0067795861132136575089526480840421 GT 1 -40777395869170760536111632273459234638676.7614546235489585499949698939577402 0.6423574628716771022368449903589252 0.0130123576862016036954637023824123 1.0130977600791156089389579373673987 GT 1 -511624141719349278066562044.5867860893654448206077902482380002 1.9543086499118259864291775242872476 0.0413188412510965810622834130260935 1.0421967320088573457631946381764954 GT 1 -24663264562777003375314318037747815632390.5006864124731285017604975178430116 0.7901731569193796241224546345205299 0.0805434200671251774350306412491484 1.0839724574416605536885979088412567 GT 1 -292901957595083819556.9582192464921950289491371063204820 0.6466650840486316363634882240874874 0.0121982527662291505347441744827966 1.0122732620638839133648869257846563 GT 1 -6032161021675235985.8382435284470070749156639964792604 2.3504829290266031129050950081391482 0.0227183342283083739202293920845339 1.0229803718954932441121592920361657 GT 1 -13355628278201302940638216.4702310773427199063142522943913446 2.2161689809042098301651322001292856 0.0860342456781552963498726777395404 1.0899621761491341694452598395148271 GT 1 -55.7013782267583962816798053949269608 0.3004711748027256925909442256115601 0.0189025660084850805756729931131795 1.0190835032565190759787795143883893 GT 1 -239090824578192043830306826933.2586860512933767877115956510367938 0.0638430716098491937820677955570707 0.0210855719219327636067254591233523 1.0213110477508745627089964382522653 GT 1 -1942248383701211902390675638300903.3442116587716050896921507932678087 2.0307487260087687440043158437496296 0.0485668553630499031956736627664383 1.0497858578390944893801015245006356 GT 1 -1676536925761.2308737550818669549686392086106764 0.0625831573549078419472735908658459 0.0953546659084242566666795287923194 1.1002123081249373551269254922914433 GT 1 -27028437591059704839.8572260461461019491079246130918339 2.2896072240213059658015663468493797 0.0729516145466803420044955378749171 1.0757495190359083656373936138496457 GT 1 -31150902826033.2409959877938253508585197615903301 1.5202146352303412577206268111514387 0.0901483245241026329033700663432550 1.0944736867387344621956002357152870 GT 1 -231843285868229725737904340340.7519881809002250748255452317823923 0.2505773889915992305334977982178497 0.0794697472952549282764036712240838 1.0828054133360326064764753661947280 GT 1 -461045.4989487052675636514626354324122214 0.9553444792761487682418453472669448 0.0988009289565111690992572019572890 1.1040291012240809188069016280833474 GT 1 -14.2740228296041545490316145401321546 0.3893232068526568922986074475075534 0.0926026557705963838816936606134474 1.0971748385480447802703539673232955 GT 1 -16377613187359592279648242.0887467909621369757541008591065233 0.2315955116530251809775230814031665 0.0286100681639114056346728934638407 1.0290273137154256581579086805813314 GT 1 -753803793412.3106689310365811715066037286383123 3.6000442750532083045819029146365788 0.0692442170670230521735903412652804 1.0717583530517531319726068580677549 LT 1 -671219736723608938562895400590708378390982.8843280046465959945582029118809511 0.4746777579476064242946137779554182 0.0671357199613196258475831694773843 1.0694955549125105975626029457760011 GT 1 -79398522978322901667099.6967967868961028174968587759658268 0.1798960882732960261825756796207503 0.0498122172650403790822035171572082 1.0510956478841079727054603227813558 GT 1 -32979318679102686418.6366803121595178272215845849873348 0.9634507340462267946064266500877997 0.0896638747219101193118533435354652 1.0939413792335078480672569852983207 GT 1 -83367673348163155981467.0590873578488029168290081095169510 0.3924770948963257813330763332776129 0.0612394655451267906994759382369181 1.0631948541772775756672270180705897 GT 1 -32377340802.9591960397474001126496808798177560 0.3392151291943320258760072157899952 0.0218034732206888577134984469785328 1.0220446815074822857305836169241815 GT 1 -48000967551137521865710180815857.3587958864474955775596887689349810 1.0900430576650644884356069186317625 0.0532667468702202739899470790620510 1.0547379011554354100625837664482348 GT 1 -4462503834556276938775859118.3952067573819222814502921851982671 1.8903858584893212771145331332311206 0.0945920312523063138552082024680312 1.0993696426630422576244357231848718 GT 1 -171331739478058650141325403849881.0678554484923869907169445496790019 2.1064703477088624367178643264986744 0.0495744844495022032079362887678396 1.0508454835639988221237900198746108 GT 1 -41883.1655934964997111743350811302144570 0.4503451581745749005025741163070358 0.0717692770234181043958691552701648 1.0744749532005569907434425691618909 GT 1 -7327691828606510231.3317235304801298488191412270688221 0.3266444493526215830785657462551189 0.0276465833679013203538767521795592 1.0280359432490726570511787963547816 GT 1 -10851086.1960086193778646310783988845121463 2.3072901873512879461104906991629290 0.0857189308378809399459532672413928 1.0896172393065257225587686277416156 GT 1 -47371333.8841371498875625117448262933259475 2.4601754796759215732975468647466521 0.0585056776703867850777466678097569 1.0602869613549313444707565438949288 GT 1 -5214191804.1293860608406459815796345362154987 1.5373113409437831060664395903338707 0.0218023184074174764660751383635751 1.0220435009547425161580265280676766 GT 1 -187589805828561783964914.7284788668425730644013977501728029 0.1766446487312596997746435351600901 0.0715512237978569189480705224192239 1.0742400680449227990171661046610679 GT 1 -103722.6154408576254057719888986631489139 0.4527792185793339199323704210566708 0.0236308561432500371371749464225560 1.0239145429119365603916035232394241 GT 1 -1567369089383490777396480048839032560.7324736209619906727781659522539821 0.0556031717054400342172475593493559 0.0250856728596988155453135983234781 1.0254056814447404071209053447511069 GT 1 -379622366540423467671094393923.1251679880075500774458145325605398 0.1916078494294186502163876296152979 0.0625924732495468448294920232559490 1.0646371641354816885106708662121094 GT 1 -130136718733884855609422149882613209306880.7691751496495385221976645976486372 0.7564057255542312715569746674739805 0.0529965580309076797520543594841631 1.0544525511996097693132096478935544 GT 1 -89590304870353428.7242709011490060067702042819722613 0.0398461701712058262062526351415687 0.0563403941377174831728549359050423 1.0579897648740587325353923882946720 GT 1 -134550255677250717144086035170.6100641545732025042356825998317283 0.0608267094454352846179812396911023 0.0477777252789798964256247120898812 1.0489567895936058847249929579615029 GT 1 -4507794444.7315641057661075503520515973149952 1.7455046229386547401862342689758160 0.0514750996670824389881909890041223 1.0528472376238552620380664310716927 GT 1 -20997035.5222767260157776969683909658763725 1.7225157103937483501560065970314042 0.0633669770402088978390083242439273 1.0654637245158075234068749292980774 GT 1 -44383171723147005850.4610702366920331406862344644734761 1.1007089716625751768963963011912294 0.0873538460515215057372260131083873 1.0914070376404675646927994694295058 GT 1 -4854925620809508352506.6233509638309456759866271853190275 2.8779271600485770791611831702909169 0.0691545598342352779387275815005865 1.0716620303466059414231634713157819 LT 1 -20817896499896274.3082098628536660536775987923005078 1.6013023944594460383327980740120173 0.0001030163699902773046735088921452 1.0001030216765409644796230025485184 GT 1 -812503665933093631051858386485849.4536918564173415876041276388888496 0.6743949596519962286914124446965140 0.0357902551137529940363457249934339 1.0364464303553538068285837018567113 GT 1 -393684888378344297203868556383643455459825.0130594932764195059280232975800592 1.2245014254886688745796817961611892 0.0260456264007574528738216219179734 1.0263908207907933909724681180471097 GT 1 -1007038526551669384519657848331635740514312.8968913757333012709934457275458605 1.0439318275118722868009009972722236 0.0761232401209977497256102799269560 1.0791765929902497337297796719140590 GT 1 -489613648.5416806690727860003663519560672147 1.3113359530315815490868006489540527 0.0659266158107251809004226434971127 1.0682002740439417195808939966381530 GT 1 -936515920633430847681231728863406272175.2431751480335967661092795432533388 0.6199308368597066353686310808206854 0.0131557246945571113058600644464003 1.0132430277762562556170728806773471 GT 1 -2131016717659866.0744530000503916448099647401004641 0.5059674180637295838259699270082297 0.0508240854927675223384524143049644 1.0521611292607640980627997948727530 GT 1 -7060354084165746359817773.4937696232739571317035046986733653 0.1163176716703523432034724247793964 0.0870250928069716910082716236256656 1.0910468826717273952127403179469539 GT 1 -22559138226467237.3359701819497128578967234910215954 0.2718978727321362866906012085964033 0.0542881916156462543865021704315201 1.0558173986429881378706597752456383 GT 1 -835582227332381.9561103364216365135629820732376035 0.9924437073094503874315940888567198 0.0959188234926601648875839732805589 1.1008361256000781145668991840561092 GT 1 -5450062254065035863252422217711212612364358.2048129242439894102602007022788885 1.0787026500728897208585341408460078 0.0771776199639340962466266724896553 1.0803185006618552567996938879921164 GT 1 -71325421097178669352761934705086.5496403521813837081094754334703827 0.6591700214271591057107054641354322 0.0676492504098143779545708982056119 1.0700461943329663683971806798212185 GT 1 -81508.9845977008244486724576160349725788 1.3209974778996500843009458470249536 0.0687723472129891245767489788571586 1.0712515065835372090523520381007459 GT 1 -216610290025712328125204977478354.7676060346064497594029400659606930 0.9648820737983048856388173393946686 0.0000097005015489796439282306912506 1.0000097005485991490685466909102671 GT 1 -39929185833184146845160.1577112067849769073957090818716443 0.1679054429321623903820554092861054 0.0403955017086832011890970640880789 1.0412340603542657684224813091763733 GT 1 -49581689189222858350.8364219735463191722285408422115143 0.6075338184609258059758373333846015 0.0498831730022068004737116111523865 1.0511703261613020441694234743753690 GT 1 -2985548716329283116609182.6920103752688711265916969441885393 0.2325299219240422340151626449347112 0.0081509496560319280601263247304278 1.0081843502678032498402778274290060 GT 1 -3778712586218384521902075709166411925927901.5195165087660942749538357042896597 4.2747731604647765435024297896122011 0.0974647260272548889998348985411936 1.1025475048045457813334518504896559 LT 1 -1247816337546489857879963911513240529.9903471584064237119038002295664727 1.5930392732254083135899486032247226 0.0714058547694245491467618855440690 1.0740835083584970869055723569618830 GT 1 -33.6979242503459410738307261446882524 0.4522646758438228724685367576714564 0.0149490762126127595651949141648899 1.0150619398698744392468836060255812 GT 1 -31097982565736209003420922584830.4148341593307972697297989738565032 0.9247332694010601423234133021958734 0.0866300289321263122443894483029206 1.0906142547647972683774515689816177 GT 1 -1312819104913373911181890134779060.4555552284747405765270401324110314 0.9673453027151278982808282534357840 0.0421524204681893961348839223117928 1.0430666164546336690529397699634958 GT 1 -815183603501222389877933106680292874.6895594531908044639229299132840830 0.4356486411860596594410206392571954 0.0316810411425491029038457064461481 1.0321937430278236045426137757382843 GT 1 -4866531555829243487923725360.9303883062515684120547019383674675 0.3519418256715017223214316434876376 0.0728854781153482632358911273885256 1.0756781807181172074638662393081023 GT 1 -1298305146824299559551814920410138.8607188447995802437907271586639013 0.1345677733355188383697149201257175 0.0589005173670445745557617622901193 1.0607064248646978233656182994709473 GT 1 -665483269733066141896428291.9280861924971258785794453922412214 0.5218833345230536645662283301571424 0.0209924145707736648806642749761545 1.0212158883414734495874681993507622 GT 1 -1305.1135977186090568695179858008918451 0.2691043589680119913984678252401799 0.0568157238469822710965988549840872 1.0584936006432505330810185331426720 GT 1 -1588.7363513559582670706895400466508092 2.1481644824339604322426817752555161 0.0704811624562996388892462233729163 1.0730882057067931562197773238406950 GT 1 -1579590962520603323573574356047.2381242759746377734863767548576061 0.3079926626686828469130047086558180 0.0621998720194404655141687471050812 1.0642184358577336574432708480700828 GT 1 -11915712053532293043561731836.9360825643086812380168050388047757 0.0375631429698366594872203667067270 0.0640331239423331618763248804599066 1.0661751919580233458323906692741308 GT 1 -7989867807040898185275806962.6110119218189403155827901418238066 0.8964955796407222712540649582539177 0.0161134985536424877078111898958344 1.0162447326411008836867438119452369 GT 1 -4789979936166470851835657216391383.7381409416141689969401426630425700 4.0430570892972261083460708940526546 0.0367387204818937276626855665847738 1.0374305856891417938942902729915464 LT 1 -10570548874128380244655457081765223120507058.3951241733403158414640329611937497 0.3935681777671886786058846048651428 0.0734518080027022173837408655789330 1.0762892195017465657342167325050565 GT 1 -10680127320.5181934500279510728345787020027613 4.0885657373446786476339421367051194 0.0950356401244483097895068078574347 1.0998597174106583290510936072871563 LT 1 -6287160679754.5048593951575578083472653505271644 0.4312037688865064904520171909454746 0.0827766309828793738674411466078428 1.0864042496736818468588258993649371 GT 1 -14122035355988789131731444830007703873462.5370440596035617119505309171266845 0.5114498908854572764431399211023044 0.0403923926871917155850435291801760 1.0412308204606840116805322318905445 GT 1 -10880.0244012835405322223568788872487641 0.4065696740086801969020235472449604 0.0081720455743990891917274816677922 1.0082056197772216009503768573358441 GT 1 -18268839752362169.8885351211294256480683185571317714 0.7386534821499056156482646970357550 0.0391162477019158034443152028616900 1.0399018426793314137278495627214514 GT 1 -81019892818231687982044420746260948270052.6830864146954236044918797598322894 1.5982609548427004713116930946471218 0.0620681390969481041512600863981470 1.0640779755750390637541799325157110 GT 1 -2861462810814331806665569519624129.2680302787814962837621835524932836 0.2310489450107874889031117876027834 0.0481469473722362069102665228691015 1.0493446125884011596736464438259946 GT 1 -24660262776.3022468054851873307707303711444436 0.2361370587490740942993191700978029 0.0632031623895917151045673859815870 1.0652888424404414039597964324392990 GT 1 -49436439910740471130.9089694114216563202215896127950776 0.0176086383847948799799798258705475 0.0266578370897238138351484682528186 1.0270196009459045007975428497854898 GT 1 -477964288793581618555214017049.8890496131358030061894229234014032 0.6727721336114310213234142572374890 0.0745665798601524063965068176236124 1.0774930888974048479563645390428243 GT 1 -210741844402534319910.7728938908186381410542338449033716 0.3722343953905640245067223876129071 0.0905544529260183264850124177100102 1.0949201540928622398878153448951370 GT 1 -469495753100678.4020523252877182223454859833141828 0.3136764554072131724911385416760673 0.0706348003922621655271487033127546 1.0732535069663034612611042543493754 GT 1 -331235.0068173550359505169175193369963985 1.0616098569446525577657240660706381 0.0094042183984254151442823843900908 1.0094487172647121356884049933240895 GT 1 -12107711994912804199.5543227614753947908300669934023838 0.4860250552602477362405046262950289 0.0476130494833346880661106316862259 1.0487838661467660119207977086006608 GT 1 -810719760199077.7991691959021116064844452940072912 0.5168710043735778562976130334435639 0.0962129981755920472680635217892475 1.1011615638029892097613994206284263 GT 1 -32275141083383.2517131752765658664245190188881179 0.6777545285158271164049490195724709 0.0308753357689839975122738336661783 1.0313620229091996070821733425334153 GT 1 -1996767585679747586558191020741.8721171237931349105684925949246393 0.0185589120081246054829782443501289 0.0091022024273352656001560035623995 1.0091438805732354395348379142308145 GT 1 -1553487524813679820595.9245861695108445625615155781728965 0.0715043436794069379179133035123049 0.0985584971616546471369523136101333 1.1037601271425799484843887246943811 GT 1 -924.6656223290722502143585623217436541 1.0426422746828985303598148256208860 0.0073373716329429757005791763382770 1.0073644225471492326032280637007435 GT 1 -50656892125935434274711413872722497660567.0857322809032338098282059839091197 0.5053158208911364466019510294154311 0.0509166406220611984347744390210077 1.0522586450539334769627972092730349 GT 1 -1561338375876704320746520530554377.8756427798040300843686941377571523 1.1844901038864712626623560761626962 0.0955607840069314551581649639891524 1.1004401781815241969679197259551904 GT 1 -20799.5526329627108853577960510369161936 4.2013664084086429746519294925281027 0.0328205638811144777202467195774400 1.0333712411576960763675318038731468 LT 1 -60526076343032061454405.0563524793163085465601040617463044 1.7263043092549392887970999380699836 0.0803485099263298546656162606559882 1.0837604958449455024382133337823262 GT 1 -133492736005807387733391206015183734148094.2277353731596083162350891099704729 0.0883974451282433110303326958020141 0.0036678900364942456919983100284481 1.0036746332390877239992408252688766 GT 1 -30096.0992312245140577657916346938663551 1.1790978721611907774744909329754725 0.0082300148951131458509661496239355 1.0082640684371796577334678990490497 GT 1 -45930139660829.3564645682186080368361668388274190 1.3483468638780186366028373420118482 0.0751780798811658696578047651748565 1.0781540787942826012815644111688949 GT 1 -58632922531681475366337342450.0929199364121497202657427443284078 0.1397499127492415656418573399786549 0.0129244469473458665629334094981097 1.0130086942993369305111405988577151 GT 1 -89.5285839717771350601482205291080400 0.5455487260504177155903223220978656 0.0446008164000877685830645985953509 1.0456260325379320396703505567738879 GT 1 -219775401743230691.3599088065884224877073233723479208 0.8592060651677393085598320171826045 0.0585245880280328516587815952060962 1.0603070470284312602329604120651534 GT 1 -309982862118353446276171415.7953569923915888559446727525520809 0.7960295524078997023350197631568012 0.0135483874950425795208867965924804 1.0136410043879683933442707956040054 GT 1 -6948741920528537744349427259.0686329553036444838165271002329975 0.3603392855128634606395976301341599 0.0097095923528247973827131386014608 1.0097570378118247444558087649117920 GT 1 -1519957932276349022652693033.3924826668191578523171888667431628 2.0580074654723412010564712853360905 0.0803620720081052371577140905855215 1.0837752429332964938999104271582348 GT 1 -19705154640522938335.5340314389484143391752782961007883 0.6666992262413747528537615089316857 0.0581035651046504616295281322480024 1.0598599521744904239974758450647401 GT 1 -16046516026786293806204787.5658380580305331044250505975903468 1.0119070255376185939454841500782917 0.0742381121570278195464566940411121 1.0771382179606049988366872486977743 GT 1 -759990859374912588669302249905163036766916.0129528967401282998609606315039564 4.2628817555590749391528664765241445 0.0666729807460542196603684197822642 1.0689996365948928350932836308262748 LT 1 -36.4124926961488361184255948181049023 1.1249020041166184896019165023183424 0.0803124418815233541054147419478399 1.0837212773606246544883113631102507 GT 1 -2561398611927334351773789784601264.1514800461944360251103309333515747 0.1195805609786772821255490747919143 0.0613322356015255217206235979520844 1.0632936809143954681966838137020769 GT 1 -246714.5536118319673040299418600110714317 1.3487523160533622636095061852982300 0.0893017338261519298022543664281634 1.0935436482491486020386562517817057 GT 1 -14238364406043785868603748236561.5046369121026235175404613998732594 0.5388400803163616318985158996268222 0.0117257940990764451875695292354849 1.0117950834033868512633964424136665 GT 1 -24638905139666618973130033.1847420820262511539690027671578129 0.6024832700102110609588391219216764 0.0489755268981180918331562453744695 1.0502154826964827768642100216355574 GT 1 -48933261961252362231604772575589.3042148309096254462820718628863769 1.3321792707361128523771342844879178 0.0019242366085878454404189216045387 1.0019260903302318378742646152353340 GT 1 -3.4903466166526253161819528723149562 1.9494221197606734777876273864784553 0.0936389898020695714127977077998961 1.0983175863035219002314785673848834 GT 1 -4458006531961771059011171.7200691166313199680088832556845967 0.0346466836567471407703134699557042 0.0759917046981316120742616247992597 1.0790342297813266349260829424230471 GT 1 -9356622535833952.9481006079430278436004517019739392 0.8269987801628887647367078259197759 0.0728193128075696525531501742705824 1.0756068163447609031291848150144985 GT 1 -10096622028744530.4847328248958088913538881556246165 0.0137924066223776678089075384277495 0.0988953406415779178125874629944245 1.1041338690093998256805540322689027 GT 1 -3791.4468801857835985036050712466925434 2.4473235735714322414550439955184807 0.0814835994365316400677328356711157 1.0886076377715595109622562122503094 GT 2 -26943747946616711472596321930.6760483537288483537871570418761901 0.1362267236774200107592041529249017 0.0037072085902631965255507426642180 1.0037140973186010904077860282495469 GT 1 -1715423905239712057824054282.1201234071433130044552083523634684 0.1283212109806388663892545221679978 0.0416023821620403245296369058970816 1.0424925371854354910333190931590801 GT 1 -3.2326686999339446692436429312509798 0.8083212153987065033182026565545485 0.0623778153554757940286052435486610 1.0644081993423327469782583149275305 GT 1 -5326531624576.8915985578764567941745799698259031 0.3634292614141879702120656610017875 0.0293480768809893949243704173716134 1.0297873475434515056697703057625889 GT 1 -97985901226502388518545052599.1691624898518451989769234878596002 1.6140773623260144110670902699126556 0.0918621026736117160993672235123663 1.0963590426096290393807269467101024 GT 1 -11877966877685869056851316424268142728719308.8757024847206498163300173926922524 0.5049650643043664726729708595899548 0.0459117139398015928707258722563002 1.0469990687756532287969450912286671 GT 1 -46218324702050870165921911421093454.7107080987554925064429637857131094 1.2304895508317576052209836054163820 0.0593790151178115295943428439609834 1.0612149996177931906051823852710009 GT 1 -31837886220601483157742.4514966868243726767406084075231496 0.3528870645384827287736106947342016 0.0142400606991659420952865872769400 1.0143424232918866788793550852844964 GT 1 -22561837399859363117.9041540734074723716972823031359994 1.7112931355377997021551571019118453 0.0135320989053258948481649917390177 1.0136244922194741642976547572498396 GT 1 -70015455738948569974649976940542164504471.4934242438873237930612343682892224 0.3534086293042519042040672942145989 0.0294435132837539087080637859571694 1.0298856743406752044047537330359520 GT 1 -33460842921804.9512335437085423188175483815177372 0.5796134909328956355176848983219841 0.0630410010082323548041737303034393 1.0651157554473588145802313466251049 GT 1 -16.4976965143345143366776781804980193 1.3286577773582705048264074438605084 0.0715957161098007917292107911676462 1.0742879903204206513200024202857026 GT 1 -2154084656069759279473.7444227709155808021363370735892084 0.5563172193737765357711830372882990 0.0689086145132756320861118572156344 1.0713978481047579871158983178424054 GT 1 -35340020933156972502.6933837383321027806044975991419963 1.1465685043993762608287633584863669 0.0467455875578325325575514401732075 1.0478734514147180565868239751777197 GT 1 -395389211746694611115.2330352303466301760154369588948869 0.0995182781388492556785442416615144 0.0928257742300596465186237287421686 1.0974207571596626017551320822721225 GT 1 -48.8636310309195779300528180748362251 1.1057382363054428247210201248077287 0.0401726368457149530494282116898888 1.0410018407392366460020614505446359 GT 1 -37805651352214115990.8274280940849190157166643130836149 0.7716967286545303785733111307086094 0.0290890458859615490045256021618568 1.0295205202368500904599105561440143 GT 1 -1087242059641.2784368110527332568606571003836182 0.5634295391866201553392046645764557 0.0847295159978866515816681090781950 1.0885356464596468356589497887113088 GT 1 -538246401048701515496923812642063.9195198707413231518875007327549236 0.1792109672105420105307086621357705 0.0259293927543052544211676338818005 1.0262714859283218413021242382633495 GT 1 -15.7090195850376261868995871443136874 2.0220129957732550686299418802236678 0.0706153410331617051412303473506199 1.0732325688513533472601250184489323 GT 1 -307517162636420534.1599589292850151156886013456644944 0.6494208559500950725401171817377475 0.0973910718605349928083820263985860 1.1024659000588699655348144975670257 GT 1 -114833140186954889109717694832566.0598383479950208779120667461918817 0.9129707264361033394152266668640364 0.0745167368212564721670566889121439 1.0774392312177402868048032948107046 GT 1 -47237244.9748675659008274080299311600531448 2.3711312883470000039342439210940731 0.0655727000239963276610198612120807 1.0678214507510624759453444543028482 GT 1 -45142793096234945.1015815548736073986524186065722346 0.0500673746136388416124958447316569 0.0579891676524284697800196518499981 1.0597385051644897471229957967306464 GT 1 -52856690437666256184881929866202362205824.7943500288290460822001726439571305 1.3638803489851587812625842303629331 0.0495907760250928059674038670099371 1.0508626250600502561455758275291198 GT 1 -66.6058959391045691445467927653368075 0.3040827844287346659211373937659896 0.0110327251043753682938045236276525 1.0110940369911834623160289191513334 GT 1 -557544954790794512485165.0948676602007896671015007312169250 0.5196817763909904027265236822492715 0.0997155950831922657553721771585068 1.1050445601139167387402357387025634 GT 1 -33.9366067116636918439944222700166345 0.2076659231519217356744772091103693 0.0471366391613601462756490310608423 1.0482837635313097411895331710380238 GT 1 -18525320017114456533779127145.4533945655195076602068959800581705 2.2144836056673400615135031303483177 0.0347409501899154114394371057273208 1.0353587682691188515357519095744955 GT 1 -24020232194977235607521243172.2545224948245355751398146069677240 0.3149242288361829346467779234189256 0.0594268685799048358614938828948164 1.0612658752416205602012598308464432 GT 1 -168312987200624771423529329552114525.7482218683135480829586037309718914 2.4673919156328412279585375258690759 0.0842193637772255684390142838379775 1.0918485245591489555166365259995449 GT 2 -114192086469100.4157508913908514213110500383358719 0.9382450621789134556361627913684814 0.0623544809865383955954073905131444 1.0643833129019668348195676261369475 GT 1 -66297693647530564496360811461456099.6027796920591102279209302702558629 2.4642714900045064361301000754086463 0.0987784853859403730552721740525204 1.1094126339531345636012451630024936 LT 2 -1411067641026802494976929103483206581424199.7461863960676494992804247858794804 0.3493426881945899012550869116578283 0.0120604767073404109336021917435045 1.0121337943500011579788627725397205 GT 1 -3724931991734311409714887.5286893085287937846634454700870870 0.8721328394803896462485892180533793 0.0615274519317029861658754747527869 1.0635016742429545925086817449165592 GT 1 -257579277422190288609573708.3798313858069581028553190602398876 1.1147832637861491158209042698394910 0.0117879178775171643665783592291622 1.0118579462512979333115054080561196 GT 1 -69955.0046910989831555595723429423494093 0.6154787077519534652029538928619954 0.0824420021769588548543215457082907 1.0860394881651136229637393723730293 GT 1 -32522765012787902051529051.1606144429530553019908820150699387 1.6832461420352586181029449448657967 0.0946724559804070650388297122076942 1.0994584736685497669638507254589216 GT 1 -3704324774483396370458375458986141.1475856788469785641175569453736032 0.5373853139088045397833455602217124 0.0524526687941034051308608140300135 1.0538783894938937327205360206924713 GT 1 -44993062169579092649526101.5332889174897504346007652197262546 1.4807097895728417045710766595408808 0.0004966745462704253202341663506386 1.0004967979299289215781837849887918 GT 1 -1502383648650228636924488888530639017.1683818274244759061917272014132322 0.4324951773749087304756994522413667 0.0422371686142300494000649296131443 1.0431550980640600344401993145378795 GT 1 -102.6036084962272996999256497801941987 0.5054854066228648441273972961865618 0.0911397884034828017948456089411203 1.0955639792525113517363547238467829 GT 1 -59795005128.5535189779879256097206162339903992 0.8901742326532183937778330299789494 0.0742963928342462650201668106797388 1.0772011742267572020984164486871630 GT 1 -58710149292481494485708100561563243104018.0707644074038934279523951841072456 1.2842270077105588613524963561197653 0.0898150924201958931265886611766359 1.0941075049699363488964943907271731 GT 1 -40878418929663564726.7553009771911810413613712194291299 0.1033330234228092081573620272822371 0.0700300366157900221355687665825122 1.0726029907927422150534878811548543 GT 1 -2942347312428804.5356214932538779966074995166016612 0.1296779452849412285481544775339143 0.0843424658089119644691363247654412 1.0881128551856106767313679779821988 GT 1 -1016661019946483053.3862437345214843049443852987177042 1.9926198131966776654414692079362676 0.0704632335775917679932152806024250 1.0730689175492252198150017835018593 GT 1 -61820176702402795543.8841136864424806991828121038426071 0.1547178449959769155872212562652368 0.0876682898351820993128395463850840 1.0917516377509188066962389123348807 GT 1 -1456778009137678596273.8355548073665362040786233558421822 0.6221389941546515804681269989242150 0.0365328895597556482847666476891703 1.0372169272160598221217337724392131 GT 1 -26308.9312788783298709250634165054479648 1.6461540882197330720434276660262839 0.0730583255634710082865976823850236 1.0758646340186875570660400761901620 GT 1 -603119891953585449136861101702.6263139091863934275683297118863797 0.0613466051645223103741846922542127 0.0284018737150683233927073592980552 1.0288130103399934778413172984416170 GT 1 -74612146537936.8724211529313823346816029808723038 0.5285094020243365334800262672518237 0.0471635859095269311123296421921729 1.0483120436922491348182592385310791 GT 1 -165665747078244970729138779178590.5112317309936831936120668642409781 4.8662381030214549596856716887231215 0.0267211934317678267364580947561665 1.0270846946062110132094505412277801 LT 1 -27127.7206371643846524372419007665016720 0.1437871016204993241800291488405494 0.0934104237523512967062354942114209 1.0980654381725820614671703803618132 GT 1 -1425450411460827772072489319.9743623077334427465088174774568975 1.8180213998928546857925776500532854 0.0177136695618402564336023291403505 1.0178724342709284161181397698632142 GT 1 -351.0456600931166916530308762962196194 2.2003551377430871009726020195602750 0.0313498077905843273485521036717031 1.0318517310189993099734771568839589 GT 1 -227788373243470217.9945878567922045606741914684044326 0.7425761832264082550078049778189724 0.0373454883093349082418789706907859 1.0380606940773554903254455409670129 GT 1 -1039681282426562210352861946648410227.6760935381974563733790272767000467 0.1416889022412731000676831979706316 0.0602849579479192448733917873046039 1.0621785964294583112810952922854007 GT 1 -329785421242815622.1179721145427357769271570553692884 0.9747996930517572830731048108303664 0.0373042600506129501286364973996019 1.0380178673151150714137203254777169 GT 1 -4125489129747091715078797122752.9467947944139816625170923175722859 0.8774680722741498232109257863188367 0.0810904745273744374543991308733538 1.0845676103601007418083812818292044 GT 1 -70837324093123.6038944305055423558102054123758400 1.0780928849990876862567402693824055 0.0704285992328351414962270070916072 1.0730316584533082886205796881314804 GT 1 -6616147265133465126784.0793916658931322391285045464732220 0.0630771686210588224183319929337965 0.0010232747768282621873078769726928 1.0010237986798910614238519880714553 GT 1 -188871458114006.6565444181650027682726191061807199 1.1426016685538712205759818284588582 0.0098855482032525429108605468732822 1.0099347346600744029712124005420274 GT 1 -1487242526.9418129233637359325280189469019340 1.8762292228917002835853236312439329 0.0545778563743792460587858300024299 1.0561237384035221817584707191770073 GT 1 -5962.9609017789455327949448032396571242 1.3463602698136746969423098746020696 0.0482028894377736114182853692999131 1.0494033860612116939322691823030844 GT 1 -436830335602092527678548824207716828032625.7675234080375172406620032202718819 0.1797750192493980912652944274649500 0.0505712350757088278765036733379588 1.0518947753206386971674451323291104 GT 1 -164623064533.8344422922109723356120340526312917 1.1493445950307197988998984267168678 0.0319426219087059552645074976868108 1.0324639185745463142620758021525557 GT 1 -640580292078480589330390572830913596.8515642211075241097656223296369258 0.0927789130654992312374910143729633 0.0673917440612345547637643722909852 1.0697700420428057142928164753022499 GT 1 -245675.0819183868157578294553622446836006 0.2765782805180165392940648838784717 0.0355158064543255251971041361771363 1.0361618350073713211249038963733396 GT 1 -1313405513026851844817018429150253.8872686292255022989940170918298703 1.9459118483782932759335341883138635 0.0463079634980159774768864453553861 1.0474144725401498587013637011791469 GT 1 -1847279767758998270000474206421441950.1106721850693518405226962722805136 0.2901826677667374799986082142992139 0.0369515206815754125353190381591764 1.0376515264797609145538285214901611 GT 1 -34.1119237556037809555582859057326858 0.5182160328222900713671291781747610 0.0847124434099969666681734126499512 1.0885169935816592493364329190446072 GT 1 -77097755955315460478040772262.7974731323194950309367997757492098 0.5805798304039066354647782693470208 0.0606874372264996625907308892696728 1.0626069874586289438679831760386903 GT 1 -120681084682919190657800169099436423.4976320972056116338677999459322658 2.2103090821986864716906095442019752 0.0830975024968464293750861094252045 1.0867541400744418874960596509257078 GT 1 -5739973614322823771511.1867724860841662782606765309881922 0.1447431585941892440209650553575057 0.0223471212249583283729750259733561 1.0226006016276374018636395103842655 GT 1 -203398.4162818677649221486681908748877849 0.4195184500315751414640533916972243 0.0947633454529629507194800204294748 1.0995588727294659025231167338402859 GT 1 -57151115.5706631622774397723065891404712869 0.0503079317325108737602531474345043 0.0406609760813736372795821234209487 1.0415107484081990575427018837660434 GT 1 -1784576311386570656808754696979229630.7584171516129842969838568442740050 0.6682051338122394357208359139635477 0.0859549432844592498522202726676275 1.0898754125553228271951820504090071 GT 1 -306906624498238190670728315554685.5146873275819103801544330040772876 0.1311103953091776395013617727900583 0.0666378180923168386641902457849751 1.0689619627778271356621715856048148 GT 1 -256984292.7119540532605479076206574735042459 0.8270596728444376146652663931316197 0.0075046736604694279882193021215677 1.0075329754096817946819169679403327 GT 1 -19127001.0336960439967335358552089080385083 0.3418761746980666228373189733092851 0.0725847218013314132733456461659051 1.0753538329328834461429066188612965 GT 1 -15938147009224916379450478170229363246076105.3827302431526585005194716483465236 0.4091625030494425720607056069584418 0.0639963230093417291136354151418015 1.0661358741034382437090199867207646 GT 1 -24668.2108124216712710886937704894938292 0.4887782218310658273483337818210608 0.0339361388863550024858013290693857 1.0345253381414132522309266235996355 GT 1 -15072.2415494643125415115572496688604863 1.5304542806227574535438758932323980 0.0358506773554616615324079680773968 1.0365090973583469896153137620752672 GT 1 -57494535193193016.9127335511362370979652930843270527 1.0342040743180472398752996747132155 0.0518585843347141470358159884551254 1.0532516152095409545606905352956193 GT 1 -41020551209199483439567886027187040.3492535192650149969847299121899114 0.0203093135218702600790845555803507 0.0174440840039315975067319571698953 1.0175980249028587299509466255138492 GT 1 -158821432306939212322174904912326311006916.5068418650269023680039094606131986 1.9091542853312773321441902075282389 0.0507530246507649854606164802917439 1.0520862662337584578917389726879708 GT 1 -6058.6377566592034285190744232560583195 1.5953208673451916477842366810490042 0.0081624351445553683938548363037835 1.0081959302103562363013151684575423 GT 1 -71633696554890.0009941281265711666008150126046544 0.9943804738456208857401459436727258 0.0035982484125684734933435267033096 1.0036047376797279582275210392845226 GT 1 -1279418930029491862605533.9522974855389004888916844265210594 3.5486273027641810362758494266471298 0.0484914788650140729951994044567764 1.0497066368104827950261184680824546 LT 1 -204559145927583645646256556395545412609092.7936761110560822012415494034788263 0.4246205743601747705850006642245859 0.0120490632016432058761236255754686 1.0121222415782986150604147542588398 GT 1 -11428271221.9934915053689752575871344335075794 0.4896435585115034895447279090015252 0.0067355220119803488639756838185874 1.0067583080150880696248158407221345 GT 1 -26163801054663460286745058791.5506748043139847543374018192809205 1.3583435490671764719831142262654773 0.0632355666904580565423593695855975 1.0653234335705768614274607809150667 GT 1 -38320068644842485.0436064260344338294568835686871704 0.6809077412825027432818712356671347 0.0122530231715828571218996393427461 1.0123287103600465294727046411237335 GT 1 -61451589.9657579232360404385005569996775025 2.0524668737428121768332163460140647 0.0138250767801434877006691376963891 1.0139215331975575641978084609155808 GT 1 -162342343359904.9721098024598495823134731748083403 0.4583873976805475403503549885609383 0.0474011780810371646481415916130765 1.0485614273167896246187727063301218 GT 1 -287.6467293039257210999215572478957874 0.3411265696450029661348131130982490 0.0375495016237884714721017247507853 1.0382726444012603829622815552899427 GT 1 -22465.2128761145791477113975930755249763 0.0133349679000013880416397672711270 0.0322513347989224519362681088633425 1.0327828688060566359917782846940136 GT 1 -62306327740284239154026462.2297016681776798476502093540749144 1.6837903135784737408393969198175433 0.0036541767033615537752734993910236 1.0036608695165071536966056842776262 GT 1 -6.2164015276072813915921642470589222 0.8343725718724160694921646222969736 0.0150719670603565982901539898387648 1.0151867034847177388591602652125742 GT 1 -100003543217400.5401974445498062081105649858368723 1.3727326642624703499510163133159868 0.0760201156794727976269399512330772 1.0790649777933071328232303019169072 GT 1 -70283844804837382615249886994955693805021.6778646319027732100087650739808606 0.1096606313777364213243097400992759 0.0518264760060978390256057718033801 1.0532177512896320105140961032109260 GT 1 -92455303020095627.0528505734047020412060258983185026 2.2082851317821272007865598196109018 0.0513728563861466469232482101765814 1.0527394515543507053566751445595082 GT 1 -2521433186415175568058021265319410465321.9096756158466111877510656711191078 0.4885901613643869632532093030998062 0.0380087823788416423938777082625089 1.0387499576500379806631896478714995 GT 1 -906256966444450710343449552.8553461752656665014156638701607396 0.0551966320694708199805613532056765 0.0625058048804595111351683024815103 1.0645447130292310384819007188132198 GT 1 -499503267716.1074005583406115196376191763731233 3.0342866261041281313081475739454083 0.0377785156079300324420623104877313 1.0385106215602492948769017389355379 GT 1 -260842550.1105030125869544119342859026829710 2.1132110097895129904842270937449338 0.0608745220296697472909395086661998 1.0628061793401078653956886163210506 GT 1 -329582584060714.0917861732667398680832252862268528 0.5888357263652524358229746162361934 0.0313988836597055537623691763236777 1.0319023964839445517161350292406774 GT 1 -56561844011826.9533485240952037600251202811356970 0.7775716272727751286933051793027097 0.0268110383263623524221994190216475 1.0271770104370962929088746619872236 GT 1 -459370.6402838292681083422134649884814984 0.2371159578131709561914222372199939 0.0424387547341364085129278470121998 1.0433655962487882499934242270043030 GT 1 -226769164.1286912965146513506951352471564609 2.9165422772346067280251283111839151 0.0097485697390612652334963321270160 1.0097963981378683170618087026787231 GT 1 -2994.2886026503129554189479897938395219 2.1773275678836712297411309196904377 0.0249982075554976705306215031010089 1.0253159695813619652872001192374064 GT 1 -8.6143761502897823290292723146412596 0.2763403357010606994792966144763837 0.0404062921887302489643338370920146 1.0412453051334791402944286995796205 GT 1 -286226.9083045743798208597348626063629334 0.9087477834210281054505096575636685 0.0629809901965108669439507085572648 1.0650517090055538960178832910266799 GT 1 -2105608778010.0645279423008390568985282119463150 0.2280074898858667670876450546518815 0.0201972820018057157544085260624983 1.0204040357478357380871712553634250 GT 1 -2768754439607649826243488214425.7124092843551652419455967954836168 2.1200430253636322367302300119735138 0.0363458331189204410123942508890639 1.0370227967857397604575682679228406 GT 1 -139667594972925571654049160260.6015440724105955194989205235013496 0.9458649735242892511589982063942350 0.0172462207832496993997520801666374 1.0173966691350299977643988315003321 GT 1 -156053840822677796460776922347185844625386.5924794572554503445403041440718874 0.0631199137691613650190433176341631 0.0827744534210304453246601970550958 1.0864018755962895396618251822526464 GT 1 -85020591260605178039836518335301435022252.5669738888814310064709810061831800 0.0218449601664755907489727783444684 0.0182964161965418474671470438635668 1.0184658656807107079525618275794505 GT 1 -11250597081013342438985.8672330388903007347253218013014577 0.2090076665343408676546357323749105 0.0041062283488003153613870145890450 1.0041146820542594477854782217833245 GT 1 -148828681974300634315.1189241119243330971985034654617896 0.2044426389604729202103582249703250 0.0877018878225401835846482980223305 1.0917884649330140239892370150510405 GT 1 -19707532577683275779465.0524727113268388779484175275101779 0.0434613923092002852000405966074544 0.0727249248685229981252247108198676 1.0755050205068166434574938154861393 GT 1 -2028253967.9480984111655864108566703416001340 1.1743041768793962438821791884006924 0.0569638145549683155882935886988407 1.0586506243966296702582763828887229 GT 1 -22444675130.1314446475277613390095041767834464 3.5295319768077129292619698108821165 0.0704817802313464064753104626112850 1.0730888703251172909072371635107673 LT 1 -9846958540236712072620.1548136911172580506544184099431103 0.4949395695293812549792859380621756 0.0642861326030804267172509807507569 1.0664455464649798578705460976124462 GT 1 -631875758813058548104236.7638000763241985929803131479169361 1.1612262159327461611173694020319821 0.0654300350701440081773077101291416 1.0676687860502539484077513725219325 GT 1 -329208966021967952914322347393818213362038.8871286354028834618415630115808695 0.3190821092705248646862510868580674 0.0446779187615145567938075094846527 1.0457067375187029094206126539145657 GT 1 -3970992714.1800363618257942288787838401328765 3.2013946908410365160560206368622161 0.0050465891240154270381757046964081 1.0050593661600029236883301488902945 GT 1 -2283555417202969633308163441756460.0345878307569978417029404144015116 0.4141396932207118914970226981747591 0.0054501681343982783413846665110658 1.0054650744868337385103581703720927 GT 1 -797853810729166539571779150125450588310633.3063209937398911371608771481190445 0.0293608998242357920746728667819345 0.0217402836433121799467459133747675 1.0219800855548558537577436487322841 GT 1 -2485213818579949416836631381.9780137717659953309977761766523206 0.6398715619731415791769992690728046 0.0459298440780308941512440506832491 1.0470180715354146388897433897605512 GT 1 -215669426543077245456916743877687002145.4271383073753457784732665096127091 1.5965415357761247892520830013724406 0.0646257170644787385489097623444356 1.0668085271883268290594976718167234 GT 1 -20996082667778634128255203909446.9436181522276389380010619099937734 3.8912674488636932478470370567266990 0.0967644868267187336417350428068411 1.1017719476401265828717712781569281 LT 1 -173112045136319016165058789163692936743.7905674136425026898783430481793083 2.0416492215827396046149070692969700 0.0791955871123635387857939555793118 1.0825076291362992810946999670358975 GT 1 -1295315885.2250999793053454678610759198003873 0.1954445927203383434305040871678187 0.0017214815336013014601347847728109 1.0017229649856712544863871601095333 GT 1 -2499780400035493830929100571831689193.9546596221199537496200563834482288 0.2248031222826467595490047714788316 0.0060794746660057777018829273315094 1.0060980299144457675126406407014781 GT 1 -147370975680865743372043110553644638.1939321186453486135258557365456103 1.7555207583111705957945109302418194 0.0060204623413553983657958926456125 1.0060386583939490325440812497135015 GT 1 -9368718776950656547289558173.2324516894713252993126904143754841 1.7041697858914903535136901374988495 0.0075529655247004091645840743486953 1.0075816336127549410062460486361687 GT 1 -618418100060600453921.8629946660436698856217819246630128 0.0605752228302583497626438537170707 0.0346506694019712083893051968901795 1.0352652425298480770567426922804924 GT 1 -1657314650190616989266171775989350005880.5782159814748330618573914825888388 0.7036759116933526769393498261735152 0.0580020778043060914634825459375846 1.0597522101452619341662958439273859 GT 1 -13985741960380739796.5813416678302073898062927433170094 0.4061383254369635149760322699348467 0.0108913178429535872746299320633245 1.0109510624394141141495358745153766 GT 1 -532758674030487721314074175270528.2268023527973241585528436115301780 0.0181984877730431641007651940600289 0.0842978984490310344751544006129848 1.0880641838498228597136613408675311 GT 1 -8805686583591481734457888809605166778.8166189764040350653030656629550427 0.0127655066998966821160552912036101 0.0405551769852567229160900391684491 1.0414004711652535081299000947688426 GT 1 -364728644998464888731788840.5579336649176367229775006643894418 0.6378945563950802866516573446188351 0.0738186259017491464732575598556671 1.0766851951590174214159498327858043 GT 1 -192504948974845741138890397826917428582.9715816233171845732021245375337264 0.6456902230714962390813947712769029 0.0527019355585242905027773509127442 1.0541414893398562146772098360586388 GT 1 -100260521243657744622369.3668812147304772495006193321250796 0.9883931403179345079182475587455623 0.0879481199372664047956058149992864 1.0920584044920556015951735321789654 GT 1 -1.5286280477988756555376439747598493 2.8402868915587466320458755801546357 0.0479997674518572109508887383030535 1.0491899999175423409606758481182426 GT 1 -17773131766.1255643660852114989221484097274860 1.1379195651613281062247641888878967 0.0934292866979248445378313618202157 1.0980862448775192324920031564807939 GT 1 -9640.3858232064642178780895661986801396 0.3273329852522310617872599118554601 0.0918160335664192293893923863891040 1.0963083146983248190611904671653441 GT 1 -926578455813408951968641745262432.9815728379996551144874898941963933 1.5282051140930814365759603805598235 0.0035016246630116937215347190455238 1.0035077696999209548216560155609095 GT 1 -4323571238647477989469278350477779446498323.9805161733265743809375603041266233 0.8169493841064408807808379065845461 0.0065045944835488908633265706071514 1.0065258415440376492137131463505524 GT 1 -523365431172555295411579945814591.5477060227135453762285792030916287 1.3977273126687302664075025062948310 0.0624349115918850698532503216515787 1.0644690959122353069520608746818503 GT 1 -124.3110806196992868185905251978604929 0.0962550409629803474182561105435799 0.0184203838776689117249453705468054 1.0185921517725964889014457306320848 GT 1 -5834374160964437396717227758530841375887189.0105929599341880328062675272852607 0.6950305888197755812065939086490590 0.0682465899066893250729465709229702 1.0706870807493370875175008734026158 GT 1 -32011303.9634372679705246087706851932292845 0.3269832653671106824921662846759588 0.0509557344205835079177884359178143 1.0522998370138563146935261325400807 GT 1 -7392493307083324342372733215523994571913.8368776599563863481863163032785752 2.5650794942243005460484281229957942 0.0810036575386286456138046096634039 1.0880409919447714286245806301693811 LT 2 -62364210604992096552794746846057.5862587305935579416796291922766261 1.8970294517347414506690288222662419 0.0524631298179725183051853637913322 1.0538894296617781549226474056208344 GT 1 -364667731187553876048407317591701.7296165155471251593493918212221137 0.6640504016758972866510057378489872 0.0080443552781348221802134868924640 1.0080768856789101849436791651003139 GT 1 -699084475310223042327416886475.7689805552116445153475217075693468 0.0170401914909996666897537907018879 0.0572257619461672556254134467827165 1.0589284332257882676660525921305277 GT 1 -118309505514303249126392291.5065698869155159509090845670557888 0.1513837996640180208310697330958659 0.0191658239141381253813085942093756 1.0193518692952543972420408022739178 GT 1 -2801580564905672.8151150048246984836093800142953969 0.2831451565480443775346617607465934 0.0285096018085872757301148137496187 1.0289238937014794010511782262800529 GT 1 -2168464481294985794552516.9853769378480488270803364969028024 0.3045748176052957002562822055068066 0.0618053590575940080529422709069935 1.0637978451671864580541239118777377 GT 1 -15016699524165.6424725926101345958035011083207631 0.5859818322215246699844510381151954 0.0277998752935067669217058659215755 1.0281936060983223231135313739756030 GT 1 -54199675281554100323336778533824041590.6064249451247361538392441499228758 0.1655592706122390472632805854594245 0.0241374098154478240332387814900246 1.0244334912260461691092379317577966 GT 1 -1695222882341325554879787.1882390567544055176078948399543394 1.5873711039056811083747943874643315 0.0031992889726474517310939397878582 1.0032044176392583901435401777215671 GT 1 -3410923439724614675335.2497740244025079435082036927999729 0.0311344181351702247338332206083689 0.0520827936491275485981891704193104 1.0534881156139641451199067481084391 GT 1 -161333655169165614106208512.5019117332245179927776564303388909 0.2943437030138225168212560404016383 0.0789411730863115743174895567025659 1.0822313718961608229117345867700294 GT 1 -24417565577884663383466284808617827499.4866539765450489446964871604406635 1.3419253604971395714600075999586666 0.0341317502413671335883481368050205 1.0347278414846516171228565531922759 GT 1 -1603937936167654170850556307953741.9270148596283941165925488563631063 1.3767488784941908358953784291171381 0.0489335241061963417109600082693404 1.0501713178347018455658036364261687 GT 1 -42464402.6884336856139001348069053316921111 3.0619404001597066367413653544647338 0.0569861942939951960341517760264674 1.0586743562585982628133989778137707 LT 1 -74169363522.6759704471646060072803839269326952 1.4873034941264367501021239375621815 0.0231970578561211297799156417367939 1.0234703441673702433885434060157567 GT 1 -685912832313972951062.7429257051675199519247581241315675 0.0246919655149404855056575125589213 0.0004809627578439115717288668716870 1.0004810784575307755838052872501520 GT 1 -79935098182353095.7523052592017407770686764681342497 2.7501234047579048704897624539390139 0.0335824543691829946054916021108897 1.0341592963053710391847140152216604 GT 1 -2856509.7185604115276376062840798290525513 0.1407124846017517691045952273664010 0.0943155152391318862521350089820840 1.0990642844083740795413137260344646 GT 1 -855803433830697424.4709837483537496858828680492891300 0.6385832216651947733787965741770773 0.0259211082618786992176830463715315 1.0262629809419941221441362748698587 GT 1 -394807235431803094414473457331537139.6675824514915821163666081805665707 0.3954608620708143565041336892034114 0.0905783272618300961232100660739386 1.0949464059660645140257521124927653 GT 1 -63268635983229148812718.2345210529426545525818238238383416 0.5548751026440755219633321633907266 0.0637302117659347274448091104914227 1.0658516087435518047968535314218193 GT 1 -1952330947782851687612201312.1156093315545245093984628494855322 1.0696885472038651240569083853640315 0.0256590849151767525061762185898530 1.0259940210932346827030939315349488 GT 1 -2.2613383808630660631671660426569670 1.0302586620072375924037719744488546 0.0559940497630993543461115304635180 1.0576228096394457842175536742103464 GT 1 -483848864209047433025701297969543.9399455184021394829892573694296543 0.8093847062159215243156678667174304 0.0489402105518761346783559706507370 1.0501783483308383557766331238506152 GT 1 -2213065.1927066936915290353448201981041456 1.4492297428840980060712520638312625 0.0761166194791655197777668124575551 1.0791694268633401818870189762476265 GT 1 -79910294226284691902583.2289182893907228568861507814024936 0.0900441594276219457799639714307989 0.0032220390100437167491588793955123 1.0032272409546525418360641457998275 GT 1 -1972877486998227161006193.7302253719136384872573701511414331 0.8575154994209315911321914618979157 0.0137651395627060568092308900744812 1.0138607575737977315440447853407022 GT 1 -376889731333634418681623331362.6350137448324161912318615406183858 0.6287028604774732820821588657873171 0.0086648585169221299725696857007760 1.0087026166744346478570211353120660 GT 1 -109011324423025943062.9191616914037161894734286163589582 0.7046539490367883230934545560065860 0.0461905875968470112425736641610166 1.0472914048471900636136439697939995 GT 1 -38981.7427653161789517950955458691921131 2.9865589631571086993819424869734639 0.0238562512574588521048216460361327 1.0241454198665158103290235978141451 GT 1 -34931627.9998529615046264286085163202091317 0.4961527864537482593428707131199068 0.0422297420129142895877910258294726 1.0431473439810248742511596243323288 GT 1 -6244035.0942060476193399568942080495139766 1.4142295016214252050314226272033604 0.0515581274669114943282092793279872 1.0529347750557910178063779440034322 GT 1 -1658.8176205390174455068115372353013518 0.1371433464312064026066127808729521 0.0585069733727680112310534828333464 1.0602883375748851791718050003537404 GT 1 -9383444442637894102099151360654595798129951.6845497977689862476208803428487455 0.2109570346451436069384285125132842 0.0242866647605063435479434521417343 1.0245864496053796193620252848856859 GT 1 -11984789010060930.3073048014841696816600408578642033 0.0959586523517634365717466335751982 0.0859794387957358056943381818170013 1.0899022119338986311420127753393783 GT 1 -902731762978790659844628159987218130841.3859126282160354061973031993558245 1.3626491313951587945976290127023390 0.0176276000735298773356268749673636 1.0177848165213058472184670007596787 GT 1 -677531853696596087979939884629923739.3324626987577018352925070793508824 0.4987836681879583800841464919006441 0.0919271197633745343301068342162558 1.0964306390240912763633166096870040 GT 1 -2166309892991573582776962.0811339192740630649360567678012095 0.0982282093626495568676361911679603 0.0721596207085877333043172940802006 1.0748955660644149167129453482590937 GT 1 -6753280202945317.8430535513692078773984112999649729 0.1093413323000056210377701200732543 0.0822949057762900254760237328467705 1.0858791880951985613489802632957087 GT 1 -102984658394249336551.3984211558406189455278242387176916 2.5771565135359455708025694544949951 0.0071883163929239667979950469711870 1.0072142768218682774954792080991193 GT 1 -266.6657384124035527084855386015337136 0.1593605309558865082723413044166354 0.0396836449391009433389470967657051 1.0404925122837192182806119966848681 GT 1 -21690141237242528980004633855911547246188888.5423543643789793601621997353534735 3.5649985132934569910179381062205552 0.0917470061924290469907490631609074 1.0962323116489107110067391383653667 LT 1 -25671107128769890949516950403141759681.8510193200537920567280348619715181 1.0932954196409725564096185091218421 0.0524437854421453216848087214628782 1.0538690144368125446796298938330192 GT 1 -595236337037527298525678514800595852.9605629532296530849144070456087046 0.6430859948250022770318492303071123 0.0420313200724413540636883132539612 1.0429401947319748312880741288720807 GT 1 -13370730401142795484171821735.6253899882941507084432992096559892 0.2337495647818388313642614164248180 0.0261557518312344323242845999557409 1.0265038976041390756419015299739501 GT 1 -51353017078551906491771436049383533660.9723594200677131283751741137237674 0.9902886665071659812467809831739031 0.0911192987556816644967957690187285 1.0955414351730363697002637135865256 GT 1 -1760665156301013412043577421504153.7996690431822410757509044841014386 2.0127888850868237715393630043903266 0.0214265932692690102629187650079724 1.0216594753065631588434120829439308 GT 1 -1575600002792.8761503010118266399768472758463199 0.1913147534733028875676240928928240 0.0602350059255662326763807627799011 1.0621254412786670088689500054171099 GT 1 -128842072306601021770366753.4168946149315179062114413640096339 1.6466763351260226859684732419740730 0.0392689049372292426455607118120942 1.0400607270008636306747221273782450 GT 1 -1036477563986186534.2519404361741571480677997302860792 0.6855335671805261655079844364832636 0.0205841694249738710374908888683893 1.0207989763005155096536044333043643 GT 1 -20800464.4964514845730171747388393542065690 3.6089444762917677334346802034202702 0.0328025005376883780095696378619420 1.0333525650216293510987437278844899 LT 1 -3213806450.8602973163798038755229182219385871 0.0407462697673541930747872494774480 0.0585022732429209367614627183119990 1.0602833453784671811989192469465871 GT 1 -1431160749718991543726934398.4389561350698296578627449155545651 0.2447052772653625700685133104783085 0.0492422957749284680105777390205225 1.0504960288933506316754748347396699 GT 1 -6875433390702992885790079777692225805.6332659176311620569069152229096317 2.2802277701529154343919716126324085 0.0690579098657498884893675039734286 1.0715582054288865325737780718039019 GT 1 -3582.5674107659113222724910398789601626 0.3971855053629253451232928500178272 0.0861697378675582913283181724192907 1.0901104336006565923968473687141767 GT 1 -3588124942319725258.2660180360681299729307196204812780 0.8592772500230256051122560030371375 0.0219442026999316206359242281300025 1.0221885581206914276335250368152832 GT 1 -2445651555746575240428612297287992055334196.3916458214917076037398947601852378 0.3706706770800986350527859368472420 0.0477410203601236363194273800911267 1.0489182437494010572799809526526737 GT 1 -3606633322149962050.5364789830967028673077303476859663 1.4281123036388416527674418556062168 0.0997996128344086447438296539428510 1.1051378880349820309275129980476193 GT 1 -2774571276689463747.1044752747256864376331783933632137 0.2610694458452906981456531754687187 0.0641431454396817895391813847081205 1.0662927473620666585513861904070380 GT 1 -2682766337501189764680355324426938380.5070716305573489659006735567159263 0.1671872113628368190677399916366899 0.0788822953094149415555078599143835 1.0821674499257018826127740831946804 GT 1 -935590653046196371904673335301308989.4290385027891793079225057024891598 0.9467177071035384797634991162417356 0.0329129805930879832504419260118637 1.0334667985322034129606773517391726 GT 1 -116686671631.6321109026430290716368062799614021 2.1629563545695368989910180958700029 0.0913545386600824713955332200203931 1.0958002924159823466104706111548957 GT 1 -41572.2486838838549150953888496623183752 0.0337577966550232470249341920627595 0.0806331833704715973675049156773779 1.0840700886808383118976125468747927 GT 1 -15502419649539.9714244893099216897185379230740333 0.5076474489817409965465354378091953 0.0647707914214647571878384475680756 1.0669636368713088258365180028895179 GT 1 -642581119.5485725260614127118977780489648554 0.4854126345566974263487427081010957 0.0721947916186059536358244840521439 1.0749334729904530296664844747789096 GT 1 -1605161.2977315472474607423104623477105095 0.1856645736453127295757306625793157 0.0821222303852455604138515641736825 1.0856910457945096857810299782996887 GT 1 -1491738774946523.7355714490493105418541802137420165 0.0214333183752894329070958605736494 0.0712148008889138107051008293741099 1.0738777842216732455967930308686380 GT 1 -8694270045969087661.7762832529421371972481959945064009 2.9249934690077484175887143236721020 0.0227623568893432480655650234539803 1.0230254189419381236596424946219828 GT 1 -88273620.7509496099892520771184574325759494 0.1560660378270405335113840833033318 0.0209971659281073319767896857353142 1.0212207415917793259161942920830260 GT 1 -18490354290100725681908088249637910.0971242755929124312484627744947339 0.8321486329353564271357464718782141 0.0997996420407063456228527237791487 1.1051379204792006638776202848805500 GT 1 -13215626882641675.0038051513048571052650323848316357 0.0640430386962278916334966904172827 0.0373433417551215926883963630035872 1.0380584642516038552728359738788994 GT 1 -4966407540381842761026671.7953173049094414367143186146230169 0.3885409950582486607132851665133339 0.0119487695311729425592214526318826 1.0120207298773321188711169758826567 GT 1 -360675249367970964195108357608.6699563842869221172297982728461118 0.6542336287831086367536725628436986 0.0418886907641173633869060068484876 1.0427913185792107704048180850452445 GT 1 -9873501422218208326.3288988354509193118900775310470928 2.6346015320436971193285163899050041 0.0931261168250014275612420134200806 1.0977518868537485698418706319436090 LT 1 -427783813495602769.4867642894889884643222037995371272 1.5738790932751673881461453367804201 0.0295722694949361881978658297635263 1.0300183453951111493461827879993525 GT 1 -118320.2249636754652477082631788702993661 0.0243403381554011519332272977224647 0.0611003727573735367472388360010083 1.0630466987327034826128040205491747 GT 1 -181250724.9481264336972663771412294080242066 2.2604403832153041412568563186158519 0.0184707635915979638521925083971665 1.0186434782325379897414633052114694 GT 1 -67010.6326014324269498885989717462224398 0.1324796410763955200779508525140353 0.0617267915116679617260367382040935 1.0637141053407931699841697210052586 GT 1 -299025958158158416384031990051965981.6238976533564150182807274779237110 0.2751062654853204075639280208105707 0.0427433287014622783136566260445971 1.0436837194157585852036051959965997 GT 1 -3954010611959755082346.8120746249987551779539700577057551 0.9051765881344680580468991827805655 0.0261563158716431758538779480514098 1.0265044767938535986564072059294532 GT 1 -154552466344061276944381907838.8802657979102882418001105141746111 0.3061491423586725833870704286686308 0.0730535872261040290135246287981752 1.0758595222350802526543620944150632 GT 1 -1439299339025225605157212148492456.5762851177154625581113336260888640 1.6968924931872242914097466836375320 0.0919847697845692478614961989099001 1.0964941271565032305354707499052902 GT 1 -369068438350248528.0266050176611714280076906462372519 0.0654403434792332983683160953598816 0.0479858615812713814062750410941306 1.0491753930208737876689498488335514 GT 1 -182173843310167370141473227958.0554867005557698119694124915270282 0.6077795450890563308466265323485578 0.0191009874654613296667598453278487 1.0192857681056772354754086925422976 GT 1 -131574096347869935012301389148062564.6264480225167741585575760352970156 4.0645174443851468542791071953102669 0.0762101143812439655930726061719406 1.0792706297154587126421424926990312 LT 1 -5816682602754573495114916171098184607246.2145022570767660041116142311280229 1.0622859477813661003929469427267423 0.0127297056370966384645594751722574 1.0128114225689197950426026399245941 GT 1 -9554491820225481536407559346.8429554560812175590050591046212242 0.2445196322983213890722218544252601 0.0591100294224967748779003704010571 1.0609290744188282202332996494451481 GT 1 -10447312520167171416799474593199144848760894.1772645563761977196590239523427282 0.1746112041674359499828154338091429 0.0459964769615390755703211018544686 1.0470879146282364752006835866810329 GT 1 -562239135008741131913424366255.1050441845604596552224625801486901 0.3205540951686853900013345555543005 0.0956679412151739904924271695623227 1.1005586643714169000665724939730751 GT 1 -2213605337641388446496324617044.0974825694401784721387439615269212 0.6838464118130759436234842005298767 0.0824927494187629344843558891731712 1.0860947965437787896776515972794538 GT 1 -79926580710293.1389740599681755583605250636274695 0.4986690605506956791856114104868149 0.0617898653899967142119633924644990 1.0637813309610839025340570287549835 GT 1 -2630.9729222554153978461189334074031393 1.2103124972586469981464602547058562 0.0272629372070594790922843661317177 1.0276414668276670782879883603791184 GT 1 -70.6738788651884253315700714046095402 3.7843055054974033495717420126656081 0.0248990964550947079526739563501956 1.0252143225238073752451003058264558 LT 1 -844045547934386747790944736973.4639662051703303134791353771084374 0.3446244426481966393262148263230941 0.0850880126530484438021420312048077 1.0889274070249008563540229412856867 GT 1 -104239016115445912346419556.7588554243173622250763420662669300 1.0945718811844600849860916793141346 0.0387248203156572552085625079698462 1.0394945637752237787844566315742345 GT 1 -377796593203965160404409658268403359061133.9126378519763222699362206068094846 0.5377387652221432448001195682243322 0.0135991164323164799512402622903845 1.0136924313825217793202388315776744 GT 1 -3184516314135.0160372285792557214921373457832360 0.1643776552550161513823864795303192 0.0685302770396162804844259155656773 1.0709915930002709302471886998520990 GT 1 -314366324287.5564305707741215145445224573591456 1.0445572572925087430593380292388188 0.0997627444434527246728870725379756 1.1050969331137048564725712701237847 GT 1 -24623565972553535254633538095450746439.0604692272959088011432780498962476 1.6263097781596626214003356566058706 0.0800136571697805841649134940681340 1.0833964537989969511038191613950245 GT 1 -712857911792117525397.8400536898606318920236437602732203 1.9168064061509820994485299312300448 0.0417771121191628957590986553902185 1.0426748684889828379102523020586911 GT 1 -29255673286234464295607007962.7396663767843744102991746568339419 0.5753189915773033733264212401572632 0.0243124723038508124150999974269546 1.0246128998789611829217070938005210 GT 1 -3577869757148102618161.3854143028541565999100931046300335 0.6291895372820652108744477403728336 0.0264044240770464470802458622381638 1.0267592813588381933591759799145424 GT 1 -40763381975826135908549025256912.7011285819460906128673726204119485 1.8886903898459191406046413565061550 0.0852435527611093367434788541341944 1.0890974270192292615870739167069710 GT 1 -695320201.7994035908042362455361740456036557 0.7837309004992726040148277651377134 0.0136660509524530051147830759442844 1.0137602910046621524473537387459234 GT 1 -1498223012500.4733935270076496098586181813428031 2.7482635909937019641198567195037364 0.0916302428574540574515830351827546 1.0961037617503974237434597705350766 LT 1 -21184.6803255093263758832808881964111782 2.6352213590455471025451358805987905 0.0888957207515628517535595222178695 1.0930979214799866558835063825421471 LT 1 -764743347502165890771977929.0438121369385526832515984825581270 0.0462934039076242988573465661056337 0.0404121867444503493057205008648435 1.0412514479143004586008044286451974 GT 1 -170.8626729924183674740756419709014999 0.2542527134275932167760963127093715 0.0966203868609803197037016267130617 1.1016124228316100687314892813669711 GT 1 -88659833.4724194415616415600156816495014163 1.8920078968373982611519121344538653 0.0693047034942396451028060440265332 1.0718233415200572460274724609215425 GT 1 -13666205012.7293095668159381113576067574563650 1.7525429499563686792450477528643661 0.0195508888009777233293704407370318 1.0197445355605345396410552667080122 GT 1 -37951652874533104032894.8369992551247405407597972137698460 0.9358579520227486534288781336179888 0.0618098630100110247023557478668302 1.0638026458375713332123438322140707 GT 1 -3.7384003452849352374271409863445129 0.5893862794798886256180467558974359 0.0986767573707241920375689077089175 1.1038913258578160894946594701979419 GT 1 -2625675233961945758.6933153602946153173269215763075200 0.3887530567807140591258258026972299 0.0089237837943446529388413572319186 1.0089638392283618633349110141855862 GT 1 -11669540649472558.2284343722026636137977856815956209 1.1744791324918794280859604738792814 0.0293296592234049503078978138079597 1.0297683732001108602005879223337269 GT 1 -97120516727367218872205991982893453937.2345623721505963118275887948734332 1.1851369307204922304002742948086669 0.0864147988766230772885943340398650 1.0903786386317086876402145478108925 GT 1 -110106943419380169170958.1344614498340262486419059858835613 0.8973625071855195000793065259747245 0.0883338252627212332808919459447406 1.0924813923877892446856718141612981 GT 1 -1067340548089536262.6043166529133324802299113379529308 0.5637355347113397444049398709005169 0.0404770297712690919434152340784512 1.0413190240306992119933957805062873 GT 1 -6.3941553722866219006903003999928716 0.0935955968427584269311136274486800 0.0059448816304719892399751864461944 1.0059626227869331841472773057260669 GT 1 -210159396319743995977779.4749440912266109383884080653178549 1.5367844536240484378458159347706760 0.0392469317325643330783024223175805 1.0400378559253843670942594040888990 GT 1 -13874379721.3363594963692929132763677639916938 1.1278659167078498327233145652309798 0.0318559222895909701996444205587243 1.0323743621712979415223518593993408 GT 1 -109858113325786858737331449494991074207.0505803049301923468040384536662547 0.1649488718411975967644510629074306 0.0107817775307922821953754287668686 1.0108403220839985420030395043457514 GT 1 -108206790303906302256856655714461905914730.7377301642836876596319751995823795 0.2242106132104798089190254021151963 0.0957118731879188930423736971233678 1.1006072450221288611608490009070535 GT 1 -71965985.5764965369227295096705457740426762 2.6845714788302966007793939203812213 0.0494297697379440909003104264109206 1.0506932320798422357112885506816004 GT 1 -1006440717962748702321198251.7362384108167571088543123174080381 0.4730164365585008386015963896853642 0.0872905399676369418659715573874398 1.0913376746260225229927336702268792 GT 1 -30877582552328223372955406744358704.4559915624956976271444284668317276 0.8565104667478178254885598562140873 0.0881135489022922080770033949660528 1.0922398020345637121894639540028650 GT 1 -7947.6608825445431329045330360451766910 0.3748856241794329711614839954980722 0.0651064525787871624719358612686367 1.0673226092006385520238772674124628 GT 1 -228570506468306723483603099.0701411336874415953387420350060198 1.9082999322643606355886522913507073 0.0857027080824023402516963043858023 1.0895994957349902415174280640516636 GT 1 -1339173.6780166685579733442898730148863232 0.1173662419674820705057973661233977 0.0337219759569217518392909569104734 1.0343036766104437798737660088363946 GT 1 -1209889457985340117837104930230397.2255678655823942426686953656692133 0.3214973009851797017124681561605500 0.0730548300300485145025787967934099 1.0758608629865632992157520950076833 GT 1 -4071058426821632326.3417544863049872642901758384925073 1.7483707154976253379480271751070582 0.0644676843154409335415904145418855 1.0666395901077368991277512064401900 GT 1 -1648698659735327676.7835460229237569819694813173540670 1.4955951040214600859748479352463814 0.0081165619982827442973101779862845 1.0081496806155647008074267838506710 GT 1 -100807526527869726536.8187109048988450400579181382656825 1.6531695587841891509988032818068878 0.0572034578367489019650778069469893 1.0589047755517795241863653439806893 GT 1 -371879759564714020602.3996292669791538446916699442872704 1.9529522589854867004682263609936308 0.0731418219125193930908975389435259 1.0759547153173683867972226387231444 GT 1 -698311133440938516878578727147219848.3793743180759285523029505940290134 0.4415072345726468767088041260574675 0.0268333913000737863987358283625374 1.0271999794917260453913014988588264 GT 1 -12016547034013962499102300460416876384761703.0499268996325741802174888832354827 0.1128202508905067228613286512610565 0.0576150807621406880616860292913120 1.0593414687193722761060308506000452 GT 1 -49246588.8768997820397072173889872797933437 0.2045953237439447274906551909486159 0.0593927276592571087130197182659256 1.0612295779034352151674134638087195 GT 1 -123713273387049636.8250420376597902657455707708276129 2.4585839906440917534707417606016743 0.0240274501516718348702168580153821 1.0243208181199656350168338723864744 GT 1 -169971487224181503776083867684196589954980.0940556798367300987511286643344766 0.0425462659664527893200633773283208 0.0484413416673639266452322818178825 1.0496539458721883603517102362250178 GT 1 -1991225396006131702919570425.2077930802511304781007782575625798 0.2766268977516335192698044870642533 0.0718130588146967917003128574352748 1.0745221212405212847209460622010783 GT 1 -334254062640293221030897183393.1686403112432527657273517963818978 0.1859438846781922066255113927279654 0.0668998786720219838130063202902923 1.0692427727154003626307289432534326 GT 1 -44536410644083112460881777.0303710021044561209413618891490107 0.8267881932797037935321934393915965 0.0079687212125118080512537682693993 1.0080006411585825312928872932292014 GT 1 -2408153653099334246614.5434296492992660533976149835683525 2.4770498525063039137646689731949658 0.0552205012151676101172812868071541 1.0568037133343769259627682401809629 GT 1 -330815503110921737268374217962873.3534500454438065910279554815622930 1.1404746851842502200981828381161116 0.0494479902672642562798731264237262 1.0507124002626527983586569372533096 GT 1 -174789.5489703948154685081665124510103773 0.4413601952626979738064497386140884 0.0033041800085227435704363335455413 1.0033096508657425934434898226980501 GT 1 -37581498968748254457.7667426471721330839936723295061188 0.5239844533822465016958759120134634 0.0669660529991446501439753033157250 1.0693136940155078775482022948364715 GT 1 -870.4794237346855078757913322750061105 1.3629606911613542297670877139060952 0.0253130302241899631568189297026234 1.0256389161742016972187295110017176 GT 1 -542729731.9943119577661342967180149407548422 0.9693633188498857341585354936133360 0.0088669875357217667355710981139399 1.0089065332105944657380664204522443 GT 1 -103321686311947010999499059300362332103670.1661584255864316024900528212777482 0.7161292802143351243738886485922674 0.0492080722445647760235411662759741 1.0504600334822482218912504486297367 GT 1 -4817608026283033337822128506760958434142.0438590752576076138733864272472226 0.4526777430853031156488934244635730 0.0562832536477021391249776959168910 1.0579292146928871231836916976023869 GT 1 -14559787998472387068.5606862206495652287982285235982581 1.0808025381915111317099983426176636 0.0212448297131707899817452723296875 1.0214737491502550940315864366458152 GT 1 -3.0173765344829039670405448988837336 0.1372819541149014634233641101305083 0.0316663088831134410398177438634761 1.0321785288804274349153513669976079 GT 1 -27.3829277780902446062924359803664191 1.5384584396828751550392294817340781 0.0916660665914814898833067902225542 1.0961431999198891246230502012196616 GT 1 -29749464.6292589161357068387150884761948515 0.7413963184326117850977263421975763 0.0610649985787904084495105106884932 1.0630090232334370930875100936290381 GT 1 -100553600387826445574104929585670666293.5105084937982017873075794010902991 0.4734510476270867997134876625493348 0.0009706357384471577758811989690346 1.0009711071103605014122353577476152 GT 1 -3578442528574059671.4659654583403635866226877707445058 0.0839187642863109574976160222082761 0.0062005092422818305677111428362693 1.0062198122333295115179164369927657 GT 1 -19399025807157907453402.3651696669732271788157662178425640 1.8686801738646175906459430091494170 0.0897714666331426024701918008294518 1.0940595754325242808888245772131249 GT 1 -247252246945323795943030436.9034272443619641926167916974532265 2.4751663244145222318091629600727773 0.0839717653440890389056072758130417 1.0916668976694105934859186266614434 GT 3 -434858376710.7542067243689019148938781624682243 1.7601507779800011229741187332506868 0.0759233202701338104688678687010143 1.0789602240630258968852750193092665 GT 1 -8463578636667742890787.7013979416231597052220663974353746 0.4139010849800385309854286859947611 0.0252802445627844429681672154806119 1.0256052796211062638836309642992565 GT 1 -307584666786763324044.8445546222718673380004623423762094 1.0421960308043655995374165065822061 0.0304906889029226651313770776413750 1.0309652003258713596236995461445196 GT 1 -14756052458056647496.5887676311711046611294166650141856 1.3645418374977158249646057617269063 0.0853968418232426454793393848295088 1.0892650146953081245025609078307700 GT 1 -910942486205801180917300569461.3456266502526840397974069928577862 0.6166033303499309624561609537837461 0.0775091306688512505154205025886709 1.0806778008604499873736849144339752 GT 1 -844961136.7464404544798256254627055459002600 1.5654148614449622130560718835522761 0.0113420086087142747388332724582097 1.0114068197131003535538488527680855 GT 1 -686407345789645802742362888815240344201305.2668790228253904348698649459830467 0.1298810825614163647453954723815770 0.0461198631832779457697839225671445 1.0472172581773292476583693843788309 GT 1 -674643433.0259642270347516472813044872086435 2.1742971352641406515086718313633927 0.0479013820141800462306919073557819 1.0490866592346391062293326502160749 GT 1 -3511466650.1503546829845623679485130468660867 0.4036726097760929319538712952182338 0.0916556558935911296010850092215406 1.0961317386743627948223636778062444 GT 1 -5701718.3329113661625182234036482456497005 2.9237825085792580367975906963881791 0.0431203973182142367963666014134257 1.0440777024636273077966186212930740 GT 1 -1.6257757013822604924983189868848676 0.2820977996606655332728007419756477 0.0237569120817263894733006391215388 1.0240436580906701090008532328583420 GT 1 -39885231.2467887314577080202734797317683748 0.2534201778526189435190341239384293 0.0727161999119895094532252644439994 1.0754956113080576982157663566940683 GT 1 -1707788839731930318352569903442115.2963278101624251080277923557446508 0.0746335424538707484768551516262508 0.0356918846902530537097630373794532 1.0363444137491137609752926005436191 GT 1 -232783810207760031513209815072295863032.2082383116157342887435621723811956 0.3695543756013039038830657564052951 0.0515616668507384561007899753071606 1.0529385068505731692548343789083253 GT 1 -12841343939.0277095550704272138256606808717090 1.7325679636929039227337866760402865 0.0275138323510708579352295873871635 1.0278994270879356882817908941133477 GT 1 -517085744272450671531.5656743204895985104087537146533797 1.0340814992696731523780522368468102 0.0613450622568330066062835740637675 1.0633073457524044603479635815283542 GT 1 -18.1900619925411277106264895215947115 0.7045980285552443655184729797007829 0.0413108676324149772469572984518174 1.0421884147644329453753954527323165 GT 1 -145453.9759430846099434084485722312258918 1.3910977803019568807483582825766396 0.0961893157620699428720418261494816 1.1011353606121950800198283492191556 GT 1 -277082452719205547568470440.6406977327657727863144391642913723 0.4380427605494671516854975804427743 0.0588263142193260212372859722633441 1.0606275806788461692123988190067319 GT 1 -2242475162317308723031195538.5784214501336079089506496998810655 1.6106978721808581832532385867170324 0.0199013025732882859445042067067925 1.0201020007286882820301006547445443 GT 1 -2269936627.5591780821506734805553750123948408 0.4281160292463561151148548809073355 0.0550594356116617167264293318497008 1.0566332482935121315797005567475894 GT 1 -826701464766367819221659825551554348777961.2973964975044574506621438039550522 0.2455112320289563631613031102730763 0.0559823407904954932665024028204326 1.0576104062218768223258968624962964 GT 1 -270268799103283094763844312828804628.9759676035780059244550502641060232 0.5728243795999376080862544967758424 0.0635630112991628671067663017668098 1.0656730431835020937245632291980796 GT 1 -36.6067793021919973025088672480210341 0.7799670132149285820212109267298265 0.0630193203968324649167855139196953 1.0650926163766101625413163814581893 GT 1 -62893988752081144.2557608103341531736661784659381614 0.0643103246945227369575101979551801 0.0866139227087129053309711134766346 1.0905966210764585421577720739426325 GT 1 -27874408319.6072752066709221747096653436254402 2.2869520189262003026558500150986914 0.0424556426475224454416709001091209 1.0433832327836752927145521943159199 GT 1 -872344249822452.2425652651378321831191564422314799 0.0679113661242989817271137087494154 0.0798268822355595123072081614059554 1.0831934551579964517427096385016334 GT 1 -47851477905253258116390663089769406268321.6126089471802049379776820244193097 3.2692834154950694067014829729506832 0.0887773027008459954391773907838336 1.0929679579197611703411923147602014 LT 1 -35761106594717080663705492934727.3016541813309329932642127429411396 1.9210486670332677468508424989365759 0.0685366644245251685458111087682170 1.0709984503426533056510245152276761 GT 1 -47.1713568073054698621979500197961948 0.0371970725034178594276011075467957 0.0498215144442706020701768282396883 1.0511054325023528120444675452285124 GT 1 -2911259974672575547.2532208650589518442344572447374882 1.0403420851392225653355476428277969 0.0591827969112165406076419334322179 1.0610064164088831978687635126519925 GT 1 -1246970966492163421044838.8618793268290435088946683175580576 1.2598450474681108497177701060163122 0.0377393972391798494358145890822439 1.0384699681615850933032918172505810 GT 1 -488.1560279698753987573707001100910103 0.8891946656447404935202144317180832 0.0494759295966015822051205980110655 1.0507417934359521402273459473489682 GT 1 -1171706491374.4456032386285506620981245133559426 0.7370025044111410195935342438223122 0.0271226533085811716178932098640552 1.0274972615853152922539196103589320 GT 1 -1205692650152031364738231150.4242629559446158929927723797687183 1.7636288185678263277318959199258856 0.0500125260065987174154045535479105 1.0513064797445808844514975747167399 GT 1 -102139366.5626058604237435698955585383440922 2.1889983172578802428152825171159893 0.0228103560480128169591329946651574 1.0230745373297102860976728413752385 GT 1 -69051226670974.5084615900961117913823440661322983 1.4937596215203166603771938306568580 0.0669874041663329927303657427832789 1.0693365778682941450746725518811479 GT 1 -30388722753581988025.5289636734853313477448713502860751 0.3782864123184323824318468776008167 0.0066019710559013343766798414947869 1.0066238604621552637959730588751355 GT 1 -19964126000050460135472711080602728356296009.4464833319865349536210668500779114 0.5471079819311043247924200336341661 0.0358449248298671201687752866690520 1.0365031309501377071905012439796172 GT 1 -997261810.6286367353984206017701002715703644 0.9898938167294864149315583981061252 0.0102443340609361863608861022633587 1.0102971683959008807068943549040521 GT 1 -109114728975656776391652295098114.6350865141212168231423177434059393 0.0926493535443947253204258329147446 0.0474542377948152433059614546133058 1.0486171288254666583398927573071833 GT 1 -115338019903413084973735033564.7939583366748905551263339256641359 0.1774601394580866551615047786466237 0.0337272237673936746399796522817526 1.0343091075781277207901382304233958 GT 1 -234682933369351079913.7763762447614947292648476356032412 0.7763853546571683192821047170040110 0.0638377122498670370771934944853738 1.0659664331854412844663304184940467 GT 1 -42.9231112761810782707121386448965807 0.0630821232020742437119458814609232 0.0949806081897280383698633683928561 1.0997989080971095499582213174223780 GT 1 -937298388018401774.4770895467342374349984009889008163 0.0869568810298654469738090279571606 0.0245349826906436649178634273594260 1.0248409808543078075446669986899574 GT 1 -2024960608966817430157332082.8026577144055613186293289689169473 1.6949434259033260737087808752030985 0.0164364910067953113778142394103621 1.0165730687658721906497709576372348 GT 1 -37784439398047889.4549786300464000772108260965115207 1.0347778723893887861635140058453727 0.0725598777700095570139617814645126 1.0753270448271177886623840308294900 GT 1 -22621.4746348819768557228964162000089486 0.2550524935763066183820343888503919 0.0487200268255280451972987508572626 1.0499468610522170250275598419441216 GT 1 -241432231264428508425886829.3623949792113814786392718823264218 0.8608421621978440231100061047599865 0.0952182200107673114304164893698203 1.1000614914417410392403674934316597 GT 1 -25680713720837407475720256001.3211113148711999180467858138380616 0.1607840394217114019766712907072006 0.0127143338978910775070485037132110 1.0127958527501720382934646396113694 GT 1 -91310509169123833.0460850889762290738543818823498779 2.5131213079754592199666824278921545 0.0329932380888206915027046861373957 1.0335497908840262687299549310239621 GT 1 -2470116499786151983577568314.8578148826143374951364538964800012 0.0848583159212589182183851798607624 0.0711060154391640538885597621374766 1.0737606644834210456972384958367401 GT 1 -6662867302473.0223568365796995441402743791476262 0.8467827067716497536242299080842607 0.0952869532102270282428854036178634 1.1001374609316512397393520570983035 GT 1 -30310035774122541991.5774802428879891147631153646782487 0.5834861076881592170474066649246485 0.0668229373305565154361597479111722 1.0691603183595642613063335910657939 GT 1 -71255498246175003839592.9316578437191037605854282835821399 0.3113044488692131441128416680831955 0.0180205547871074269076670347802121 1.0181849024018384330372340337203465 GT 1 -251.5516724504714222218643525063440739 0.6356181482049446587158766431363112 0.0795893095445326494036466259106599 1.0829353058780938225841175734425592 GT 1 -688280867500618021899588681934.0823690519628170680613205519673320 0.6419842075309666691382545711312166 0.0876923318178093908180344077214228 1.0917779903364367879557732553109478 GT 1 -21653249041820191226315617780916.2404390068944069654018293990386366 0.0111576254221408307265744403617477 0.0814332049164133443061279554947098 1.0849406550509947804164554060585042 GT 1 -37725166998422.8222676404444244143815776410152578 2.1669869830307981321491071880853732 0.0248559797754648610306571405096177 1.0251701058419830885943035283500249 GT 1 -10814276807.5264617225115300887605868632118412 1.8525141136463685650916987020778610 0.0168965634248022102353585165346164 1.0170409389636565073223229735739985 GT 1 -317837054085110744405354357244312806934488.8561163741375613417644151284564262 0.9607400558202111616186865099010462 0.0167962579432971351272546868579116 1.0169389147400945805352334046876706 GT 1 -5221995399176067.6868614569912642749949186656986889 1.4682549853686263659361433406953402 0.0265202927598393497450666029910460 1.0268782995436322041010817097136576 GT 1 -26447396801617841355097280665358.3751284687712681358507776334250989 1.4147047879575389735570115817994533 0.0749532816746384933238041251974044 1.0779110364474238525946790378740973 GT 1 -242422521082766817526056548.0782892631013001652829617010430175 0.3626065660006349209914356756212304 0.0505281385380818508769843887885065 1.0518493842801223818480261331892481 GT 1 -32824738594827.1679897441852165543854662182995358 0.6623413634590289553439730076891916 0.0631120594095553798225400815513737 1.0651915977158558658471276339549382 GT 1 -104850781139459077890134761704948839458.6499505958996438238224783310179970 1.8960238920334965263701296226654759 0.0708869237785986254515094381724401 1.0735248293607185022580905787014199 GT 1 -2.7629302638614273234213591637461682 0.6915361489666902875271828901602836 0.0213245113761555483705273122359700 1.0215551636950473115091004051520928 GT 1 -273666401165.3014003738455184002890654522732238 0.0557351151740594511502308713884903 0.0600479597325947960479942539429328 1.0619264260118246871331476293526899 GT 1 -350137747530201536274271642.9086265154089215114558710398302717 0.1189435677838062785200341353546375 0.0160848574478912803680860083655658 1.0162156228923204805444638321924415 GT 1 -17641128859317194432069.8771622848868851721575594869972208 0.2181924868550843999464162659974807 0.0055592650169645450226273874091670 1.0055747752410696205171691669662804 GT 1 -802380597124843430067152419.3006395793663066177587531765885935 0.2030469521553956254360581723433597 0.0576296519632097703864793446975513 1.0593569308871373701312426856545215 GT 1 -2141970202090426058422607275765325557.8343722258020180694425359243306847 1.4327436004346773666598479466931228 0.0457581984043720691127082067527707 1.0468381788575476522584533011124357 GT 1 -125288075982172.4667957831979402934778645198657693 1.2362090226659286311572980408557410 0.0390595264887174300984022321724104 1.0398428141662623214976443890453154 GT 1 -1682679388343779553225.5994051999868472271685549890799087 2.3743338075331932810638683647021878 0.0598197936873097569004988344004485 1.0616837132485920350167258553908417 GT 1 -7596761597.2792889507730022984192110114234519 0.0771741307629992522823985947964296 0.0503532002471229072118754449120840 1.0516651532523025176605207642281688 GT 1 -106576656667029752.0835781405584468928569896375686512 4.9669265501115406552339971934026892 0.0689230642956920010958771717325142 1.0714133674133534818864663171014029 LT 1 -1902894998938252.1680182013251260987118411481274729 2.6764778951628988691651929232077015 0.0417974064346940146749385012239360 1.0426960478311783542684950094785357 GT 1 -1919472965441.2263098174494582612962960296612989 3.5963181611830420509375264686972246 0.0200299207076010543073252016179855 1.0202332391178969121210037126861161 GT 1 -11674660083758392901048612176821944434.1700674474635238204972430089068515 0.5684158144423504305225334893735298 0.0484859625937583186481942810739567 1.0497008394317486214018200785094323 GT 1 -9062654453478315415453476514529717073604.7265184845774555477649962307921415 0.3287411963524435393061003137926072 0.0022901877926823615788191432958439 1.0022928142836164811414502350090966 GT 1 -23639766976654444255184816845602674039.2448223651673408728839934225329476 0.5771633689122453704743210556927554 0.0757798551192238094868363369106788 1.0788049836824897849249025252236815 GT 1 -454270494687515985127.6360743645286800973766595191378124 0.2699194078346611935803876343660873 0.0972956979977232477928924637044936 1.1023602409839702761586929787428496 GT 1 -36.7431279871152468300269666077136583 0.3633055084977690950998766136206238 0.0020052629498458478674783488504079 1.0020072761814175376163251588557588 GT 1 -18393327.0557400763922137499775936554753008 0.8026124636416343709700480913164902 0.0658701725561419387223852613541554 1.0681398488672275924096485244133948 GT 1 -380195890211903221461639459015667552663834.6876406360281374862691427763123773 3.3380895024017166754700995722771810 0.0992231317473185039280554472866440 1.1044977010420097343489430678324943 LT 1 -4403328377097640545985609.7256581709418847201931922491699994 0.1835848032202402378800186311854257 0.0302185657425197719553121797659676 1.0306845583820671323026863705252405 GT 1 -2277471001432398078493931.1825052384296411706841030464444553 2.0243413981780462410915481819207582 0.0787016700259864435886224136479725 1.0819713755531293920261022245626623 GT 1 -505511989511909566534.5178518713333399960966209090577421 0.7145978412608509430706222622728856 0.0945661996153938044616490102383443 1.0993411126861501967739149265932751 GT 1 -23731929391285440843576272839722503368.0850388482397920407743493671777230 0.2526978775120134143794809475290659 0.0633284222791692713819232176719526 1.0654225622178757698623834605097407 GT 1 -141746886257587888939085380091578378409.1804910607101895956420888194796707 3.1021147408259832008149989677472529 0.0502584921382843052785490619707933 1.0515654284003200035289419103103547 LT 1 -14131920793542044036371927.1241692351239262007366415407636478 0.8905869065409544410678695420703818 0.0742563241829620576568942294018474 1.0771578906273171899570713090812096 GT 1 -793.5253323258372866897496206519235643 1.0983241136809243546025435802692352 0.0389130536023336748790001916855098 1.0396903991849253277963387122414798 GT 1 -75027342310749993594.5820298205520038101710564468299846 0.0626753352177846831712625228573005 0.0745734363904861992713741004176780 1.0775004979185020945357596960386308 GT 1 -93855935729.5399238613628132863877814902254850 1.0135874475515939760271118011360605 0.0377826873915622210889778858766123 1.0385149571448765612342639196150377 GT 1 -290.9611799922559628614528870334797685 0.5545037103520049392215150429259260 0.0808768780276880390020366789587544 1.0843351917456165731239461419538070 GT 1 -24165031160234154178230990839411086299848.3715801137314954308569158098473793 0.8405006433672456996455724705771366 0.0620679140247733435966160227695395 1.0640777356086223786743488922607005 GT 1 -1637319905962449874.5815849567376353923534990211791385 0.6237976645044602717379968208355435 0.0552029508689468725784946892478949 1.0567851373775144221193707088824478 GT 1 -3771048638346390798220181384923936442172.0430927663459628289122828062926307 1.5763978567169419862187307217105936 0.0161148180663540288084176089779277 1.0162460737648935330421155149424366 GT 1 -4945130439869982.1650194741130105268682295346311688 1.5191407983545307424572124335849905 0.0617164677393098438916271437810754 1.0637031024522217311229548938849939 GT 1 -825466614535669959769471716931549.9619705532656327820092099663860594 0.6832842546356341300333871196989505 0.0972086340808820784878856450728204 1.1022637977540522703697580390585417 GT 1 -186726955550.9054420642614264235464707734042246 0.9900770120274458169316984252872848 0.0390143507054694570670697052234915 1.0397958032195664713481182197040456 GT 1 -3546636640712735270.5904415824256398902099718864798849 0.5415960869768628928882068638615819 0.0312838179278293401497702497898576 1.0317836077526347041481972412113838 GT 1 -51830889100888605382965.7059110773664589792727845579013849 0.7455779728387096700716862415927658 0.0449211890212119030815504492963673 1.0459614173212546253317974401518081 GT 1 -4867178969043389269876073928776175.7343260014385211892518625958874083 2.2218082479822292722626769417831817 0.0372653727797578748141529498406424 1.0379774739864095240875004798547707 GT 1 -13016200256100232825479031211043365172.1429046796259808661865089899207271 4.5735673161891146856641138193917919 0.0403377986512300505458946378216306 1.0411739300373261188282831137152245 LT 1 -13084761761338926516425452751244731547243.2137536187336148521314935340528124 2.6470727154428760216049136691644951 0.0081361512063875475279560865626545 1.0081694303167850468758592924241912 GT 1 -2172.0156561807461104064706534818203870 0.5250986330547061587509955612069114 0.0049208683581439412396123847504865 1.0049330156975329223052863275403663 GT 1 -9354052125539685722731832355102.7742344561115830764276653703341603 1.4949252421202804286593049284957023 0.0152197296853610186009537040581477 1.0153367385178619627828959014763035 GT 1 -30103076567394675676652020.5661649413911122660348656174242635 0.2903627896814036650746562102482632 0.0114324589924965839424913457385059 1.0114983119403281390499518057816695 GT 1 -44525266404487611563022706325817177051.8998037519809889051530482169795386 0.8181143260048657984153047306637132 0.0271367624506496277540993642105214 1.0275117641785006102610159452646755 GT 1 -98007947463735309357727405683.0074748096370492285140630558651533 1.1525900686327439340263196372435588 0.0949223889560683801210462448981410 1.0997345808996301522619493712369388 GT 1 -143171253616531497507113454707660044713.7561302594378041323970271103057071 0.5220594296121035680400126632350465 0.0633267753101207214127982292665002 1.0654208038986956264156146139559716 GT 1 -1663470681376480406508290374460.4454483740565316234115884439206192 0.7279953222317626262784111113509272 0.0220002154266590378256881934897205 1.0222458292200014800912006268273217 GT 1 -259148171573734919670182038043414.1788934463198064399834330248132816 0.0494873642640125103328710741207289 0.0381283402979665195467058818260310 1.0388742470894653230035202348495811 GT 1 -40.1472126547606103597072083752540826 0.8959968854351382035383467985748510 0.0494572165100289626320308581954295 1.0507221065043380313198919009929125 GT 1 -1024718498610160547045691032445195940747.0745259499376023419694874169680841 0.3681547613377612862715922459540889 0.0829658278487573366107978095744528 1.0866105422605215504120097952034176 GT 1 -20272884077748963875637947433.2080759586427967073577499987323715 0.5776336062455898347679555162274128 0.0408481495021049219522570118503509 1.0417058740914338877006727252610204 GT 1 -6622798748743706722653929833.3312784552871438610021169751515321 0.7059275643374762692420285902167903 0.0222962760179257223803466728107990 1.0225485955567525592684746963582738 GT 1 -38238617664530384682177392787724963421220.3295101483558701725576618373669567 2.8323504761389260821619527901528538 0.0989058538163955564902995800491333 1.1041455360627631154271324716903643 LT 1 -1120474074843431529410656924472511938971.5512400958578001962011633993706899 0.6041361030156033495394047183553390 0.0533315569834593836355002186125715 1.0548063600708323178871048688100128 GT 1 -6095306865766846.9040946929375424139720865433767294 0.2510385424623870441307264666797759 0.0777243485409119048593854957793486 1.0809111288947693322898204171283411 GT 1 -3083137268863770965646299161520281827400.2674447507329249008682377185225733 2.1606854310154519683672241965457207 0.0041725325621205736809385476169788 1.0041812618667788703946989645255160 GT 1 -11417191.1917330933435144032767444524213905 0.3807077865564780013543149879062781 0.0352083891555132307007437020087653 1.0358431482745417712004328336160660 GT 1 -955316565413937173547.3114616163788109723579872363669267 1.2785471552125954737419201555432125 0.0112381693099746622824976679593462 1.0113017946722106901421493063013180 GT 1 -245866.0062383297577696519185898948920625 1.1779852469190677696136979526012102 0.0353687521443651191489902025349620 1.0360093772465870082189204250526543 GT 1 -11562011.9139977786178047877183740458902935 0.6836645152107794487264423947473958 0.0891911032995558634075997221811052 1.0934221768336230913020349273537411 GT 1 -5317758236889713376352669.2473556481520204156848068423994783 2.6911843182338627082098711935631621 0.0828544806883325236502429304485192 1.0864891286813833063540413513530167 LT 1 -30373109246720766503339489.2455285156515672902318591511733736 0.2305377938377682670271153100661737 0.0267818233436348798759972255826800 1.0271469910417145716338462057310220 GT 1 -11.9593705178031870669761217246047076 0.2967487492621007132122688706381342 0.0399512082575691878488704413365507 1.0407711710800892819988361680326853 GT 1 -9256953455113479225418583274626988887258526.2133181862257091113782047310345406 2.9053166881443486498621700743139760 0.0446280334465964262247471308102559 1.0456545205612186739858917005408077 GT 1 -516887074340140194997771202621.1564578706708171619560146880353135 1.8081974485151277925148996315506104 0.0005234799610084735391531601642954 1.0005236170244786695096988405130882 GT 1 -45041993562203432116438050625229.4041305379988635729960684081448356 0.0550353467489172852276497652881742 0.0736877092828269593604223176886727 1.0765438541961556914053299073213850 GT 1 -1524955018529366499695892244520425716385.3650827831542295053236396871397336 0.5361442467068870444333667490047585 0.0038625733084732294548250072876599 1.0038700523097605695113867639774985 GT 1 -8033717870676373540690.5414923292448205744859558091742619 4.1124521782477160144579340604179410 0.0823198712868661781252482995621579 1.0859063927498571016115870000851071 LT 1 -75985.4724118715857147157496617580402471 0.0998863367112181923680974767073219 0.0193667870641452813326950530110414 1.0195567803244513347619655383044527 GT 1 -62262.3489037877153757986328479480133347 0.5345295146369160887373105076136718 0.0619817504157268504724380582850882 1.0639858743184018293324210463479270 GT 1 -350654496781334795942570791557442389028448.9355745770291170858654525481169104 0.6016628029407791086092788051923952 0.0509198809575009700096109993648334 1.0522620592334565928293565934663295 GT 1 -1281037935720170.3625241115459472739341680736471340 1.1714006217327951913683525896821969 0.0109099104723849673348977933732277 1.0109698599735123623160250225293990 GT 1 -548496728946666842788751747.7197418598131164927923354167873344 1.0246815928987465382151923014347776 0.0983532606289392976697435126308870 1.1035324771265716126548074968895297 GT 1 -6017515344684681.8030924692696881226067704486496096 0.7242358408871747483517560054006610 0.0517233938788319268554532296542403 1.0531090406773880954226874300932105 GT 1 -5734813696030600026.9518510132057128094779209580677328 0.2988408486324883150566774048958159 0.0187973943692104292694498902323505 1.0189763110461009406881147002493949 GT 1 -723093087533199483406748.2151052623591475465525666407976206 0.1344192335064409077330523840643902 0.0240149704007666227500127496800504 1.0243080312120565869607116484409971 GT 1 -4644821338450621562170110424088614944102.2571064710864710087253916899123088 1.3178376141552165315672433682561775 0.0242850613285216772140761268029417 1.0245848062634171160079745294797711 GT 1 -16988957877429066902451.8779777168292989600094975941022727 0.8619616417840750861052459736397052 0.0823178549543582765101991489099646 1.0859041955460279381971874165905533 GT 1 -116243414196799.1789358600988187350940730173809336 0.3320768154992058254032935623775670 0.0328901989432932410905413860316879 1.0334432418294369023724251126114160 GT 1 -1385102033179613965198652019564770774.4343175044738185800762009635455269 1.2063319521674850155047642341904985 0.0067724442878967065230301458428277 1.0067954813591480872876399074276542 GT 1 -323363171192020292746344653175.9377863950645593581833756771412483 0.7886860717534149057860869282103639 0.0750496284019609792568500108594817 1.0780151952354937095955153586614525 GT 1 -260644417334389976530891902194533564309.8292123138013366235731604739029420 0.1269449176371215840675754387330059 0.0449118794375311912167046065807498 1.0459516699180019955224879236756220 GT 1 -4757496775254587935743767569.9784871409147663182655753328193030 1.3779170085843025830279141601049792 0.0869213863363616999871045420934019 1.0909332973145218329118206464786327 GT 1 -5768.8288014432435283895573733970948183 0.1816262854600837839987744885954108 0.0868654516533430971056791466295451 1.0908720397524806950857586304827473 GT 1 -944354150514892.3666355940387932734556543014035189 0.8803261262657267818515390362862564 0.0660040300648034554776707839647921 1.0682831556071467138174611384229452 GT 1 -237920952863.3101001919127857364108465622453721 0.3429953506640375751014462319132866 0.0519828387277511893499741761206961 1.0533826742831080806622139501170173 GT 1 -77675915021345219481947452152.2785894052594938940512320455713966 0.6379970795899872071939460937483601 0.0813570468220933725085325964437784 1.0848577487911780548263606584144291 GT 1 -23489621244786848638668947379.6376830670779882989739596468817725 0.2443725507213011765376423985837199 0.0515656404373202521170805983420808 1.0529426964691986773575937840683303 GT 1 -2786843024482862231430116101946052.8377540348283552943868586779704165 1.9228125285361454762166756344084954 0.0068833142397010630776666684052444 1.0069071135219974722186095178076728 GT 1 -37116841744046905019.4016919082383570638864888366055089 0.6525643617659376829668974365408611 0.0654577013177911273482626608848042 1.0676983896735223277684867094391627 GT 1 -1384600758431.8089432745510725528766172045490596 0.3388113173726068895140680820039956 0.0788302203755879574885247618372510 1.0821109170183416441768620180159718 GT 1 -89.8442758042465562823050309434909690 0.6581636288340979471533084785336190 0.0665783832753709825496683595552044 1.0688982866124249257499109602001381 GT 1 -15158521.1363033373333750535140306479566397 0.9133831196700463257524329998177007 0.0047354336644177072249557313288679 1.0047466813529157566517057948967479 GT 1 -2504827028658191895220662330230984.1412387646607073828812842249848232 0.9559890912147884599193322984250796 0.0437198157702094757782366354968996 1.0447043291319380639918102528619854 GT 1 -570944.6546600687259373993245786183900971 0.9618538073778311293704922552306981 0.0449644258176080315732127541662409 1.0460066887424212321227742552083659 GT 1 -30.8367357221038513170685325927955676 0.3276807747490648804787523371690958 0.0236671145924445036643957393634107 1.0239516796062762434041439200503537 GT 1 -58734764155435020518322285314090.2572651398967153113548730506455567 0.0097763898674387208346457775162076 0.0018987169077150601302450416167623 1.0019005217556215556519766028586868 GT 1 -419188810104114450801705796995698.6956784382551671530259288557469271 0.0840828687485010322851241365975128 0.0461043440726345549172224885697530 1.0472009888539603721753160659382432 GT 1 -494108399504109595254259456.6040598609179639264925767373046041 0.8285281502883079212106733516926684 0.0518073512892738521049088149724812 1.0531975814330927965679393987831012 GT 1 -2454714187575.6488339357279286608311707461611184 0.1862039486086623739829432980494156 0.0853114606119658992321398720562168 1.0891716657652797321421943961548115 GT 1 -61592498351528685914592718240971495724.2313446661733232474440875159721721 0.1970870379047137711754808890447681 0.0673042653829971309625500794928676 1.0696762464162006447779013296308846 GT 1 -11083527878921302786939652026919617.1642556901735404885473297275696234 0.7155612744241080864873857087376004 0.0841563322776024312006000793867121 1.0879095972988499245313223752366599 GT 1 -362593013346421234245456316584723464703723.4128278081617717871042067400853269 0.0215826548011790834858548938972632 0.0422250767871301880670089065151562 1.0431424730692553191150205682302454 GT 1 -4883.4756685463264833130769145782044445 0.7808522544126716006263028636326018 0.0243937355838723567429728756902926 1.0246961915702452075034764630589836 GT 1 -51158281607387115.3586398043495522402844687500719285 0.5777915580748921862110800904306819 0.0918837303017943524055026919156574 1.0963828582501669373834111436102479 GT 1 -133796501727929078054553849791.7999961431007079396225123802832151 1.7451743382951570215545477238708722 0.0959541038563418533744737571903760 1.1008751498082986565861941735061940 GT 1 -716801280810.8475254091306857122719647473445999 2.1749095563096912875501106023075181 0.0123644455802794597387996909048569 1.0124415213291142443653314544993242 GT 1 -547159743143004961.0158981074073087486585336066059748 1.7070247317781678164466405066880102 0.0968256826247556963095035654415409 1.1018397016979549669951028181695309 GT 1 -80045662438920026692569847616661251.6111603077380886116268458142162337 1.1076087719457391760957880041316732 0.0828918650007880346401829921000767 1.0865298911052419983580653038749986 GT 1 -352866.9039766134802916517651200923018608 2.4863591327816529457941708085987705 0.0124008483556254667187628099023918 1.0124783805187977483713573494002970 GT 1 -372524773.4239430319401064114688764263139221 0.4432211140436738507065229102394376 0.0095809598036550581102899819401910 1.0096271524826154302112192677718094 GT 1 -197148262888689213175535.8915359359696732634575522256014920 0.1434546273755442176220754486338094 0.0328850796970063034803381449443871 1.0334379484979739988368224783645660 GT 1 -3898106618.1873720293127116208255421645754553 0.6225771315718653035598543405073919 0.0570848665367673309720454912243289 1.0587789967260229113639366292159259 GT 1 -803432338908543267955080940869418576962221.3298382024965480322436886806835213 0.8257682432582997753703740195032959 0.0912411129746320435785912916152118 1.0956754707870479598522990103858638 GT 1 -1165816236754995428673725021113280599256.8641882634494973864386643221937081 0.6407003653669544543395544368438886 0.0884361909419248285642122831815219 1.0925936828615319661152878169932120 GT 1 -17.9902864271792148305550088561988832 1.0666295496894211045194531535261216 0.0073116974597760427110071762961710 1.0073385589350606318381824983303387 GT 1 -139194994951901521374846650224627.3773137444532365925242316950055947 0.6595760424916738932674670821775668 0.0422025999191319319788369593812461 1.0431190055470678616330809696948739 GT 1 -44732394555063844835738003478971906.0774849079873928530613213565965958 0.7587235882568498901372935841537795 0.0470524538433133382878684738770351 1.0481954176017187631624917350604605 GT 1 -711412.2437500963835040447353323924635012 1.1380074175646382038189537916723058 0.0163316628904987622563870358131411 1.0164664945289784100837774562405306 GT 1 -35411.9584041080845646339743797839714188 0.8019842296352919889747681361243465 0.0763002954118179513882630278323564 1.0793682551972190822579219701063294 GT 1 -7316823596.1824023282629866455703478531137764 1.1937933103021482104053422859520924 0.0811718552004500980034980849488015 1.0846561765079740706085586323450102 GT 1 -25536249528379.2173719460443987332674137085859488 4.6629086532710634183826248181031534 0.0789199848597618033816681552840278 1.0822083679552341106773331191160077 LT 1 -445941780889100619445.5340958989784382698865211181321382 2.8702139948024331551123897984734835 0.0511165348656968828972172215294687 1.0524692854526940336317472680560088 GT 1 -47608.8697509026362726317131469001704135 0.0780780573749746282160708341250453 0.0694313472741182950711880124027427 1.0719594251530383402647350267748825 GT 1 -1587075714551.1658665596739321522182727139140355 0.7814378659593379123609466180622750 0.0097429709368368672396824209700661 1.0097907442339952443460093741176677 GT 1 -37738759610203225882340191800251245.0802860619342307330591288312328780 0.3136273534220309342621200169929833 0.0615173418965663480595175483036001 1.0634909014391034484220641015736973 GT 1 -217196664705840.3543421451380043539120524531857055 0.3799152070485247273573385336818413 0.0380476168283328986148711777633953 1.0387903272840340367324385806056547 GT 1 -1125.0438263987738057987080712426717282 1.2642578546452779585098504287188916 0.0499302705094309263153469571295714 1.0512198976174024481699894892809393 GT 1 -38529140592127931224.5656828967764389059139100971286251 0.2287610676422393581713257655826236 0.0634767636354440753498731196250926 1.0655809454842284819677019069956996 GT 1 -307860412866074940269568843835335623309374.6387277819584921297415564615044905 1.8790829278566787600897580844664063 0.0855167416553233550151902029803437 1.0893961182136213527060283257405265 GT 1 -56597688458281862887122359053846.5465762654115114205566379174191601 0.4696063285458015125020576368225149 0.0790046826172618892088142096575256 1.0823003270147409415483835916879988 GT 1 -517984113518954814628535105350537550308292.0550669309215725755562355661308139 0.3919244911179403322748076368405923 0.0718443867963769464468987320485742 1.0745558736119346971222334289820140 GT 1 -1253166737055692307629115270247023218364208.7393735917988155016602009766088481 0.3148110344006920477172310454587847 0.0423258772763450089501268579756178 1.0432477230517820933725300179927579 GT 1 -629836218156708072780296498275273038348.2136684138575220556056952276271512 0.7328830143098823422239924261591870 0.0052210162954138642674115866847722 1.0052346934274488810311185186438681 GT 1 -667650802596382.9484945058900678104158898846343697 0.2202784375036840898466350337629859 0.0511809952492026384573097077391325 1.0525372206370060926512157054558206 GT 1 -51142986631596116149565116773731563.6700087318416763806781765631645167 0.0829871914236510219685893603569982 0.0349276774548876744326091336131383 1.0355522348088320404617840345904794 GT 1 -49238396822.2239500374369100205762188413382748 0.6173803037889133002976177607497857 0.0412351702210159246316104625121779 1.0421094585934554315606500480723794 GT 1 -1064406802486239048293457923524012011.6270516286308260156577317369633824 0.2785279787007646988558592252901571 0.0068777299006005385575240297859200 1.0069014904935254300117152339995647 GT 1 -1867246667493945965442152758840694364216.3172456302239455021625351399790114 0.4634824884178621724602119373426794 0.0740488125640057468517170412076286 1.0769337590774132798609028209652788 GT 1 -62984141351057904917685507.4544133067189044971760486890425293 0.5801522716053724023966074222242428 0.0482060698893649600902136374859502 1.0494067275894321959982617246184221 GT 1 -80860760362422418476565361821987.7587518338128323956970660716469687 0.5470692360511649520288518271124785 0.0377069793568869348921539566306540 1.0384362794330386333132176966785377 GT 1 -21976659448502954.6110347087280729876098230515881443 0.9660034316598161221226586797620452 0.0728964835280306324494721765552582 1.0756900513961656773819774261472755 GT 1 -117660213263793056931.8255477173653367313624953289430154 0.3117525946338518133473347964870580 0.0971763914842765428582823419935601 1.1022280840531077435698321173897439 GT 1 -498649297252620493508541409.1611143638748231667373106282760744 0.7459833498869207980334827344529200 0.0525156797566786212735076869847651 1.0539448907183458419666710809335229 GT 1 -884028131471857780361971767080781507.4825190665655002402889341117066451 1.3643718242502000137309258107090532 0.0145412694779162508228663761798547 1.0146480299561353095721845200366047 GT 1 -792360424914773919191113880.1191759115875660983118002806532102 0.7738660389815381371748649507430730 0.0744230591292654964122255480339349 1.0773380160418470176849078362166911 GT 1 -6277863818073502424927170916.8285089449198422747900535458865455 2.5038707746522054539217741799078363 0.0387426672572242520523565334027681 1.0395131298503898923226203063951419 GT 1 -5792670454.9590687246788502322363928166431877 3.0019579854519953154962446468313032 0.0236670225325461060248509348954398 1.0239515853147744069402889017119901 GT 1 -5861747230580452877622893418712181090714.2198507334655774968106744649361158 0.7663251837143854539646108056512588 0.0186292610806826273083061866157652 1.0188049714226356357228061857337400 GT 1 -1797715786944393926982066692613745772777964.7184250694739563186825733298082671 0.8218694269495257623874662989942228 0.0135752157867246945373898246834365 1.0136682015217861997242318657587449 GT 1 -18810267.0096315543365240236100083964101704 1.0415139692460149319947207245134926 0.0719783330010784068905346931452863 1.0747001984093154178735455112483769 GT 1 -224247509008368384038707666923896194.2280029124150078568522927751244722 0.1590530343618565491164379463215645 0.0560432137328865551594600288914043 1.0576748911438608045612056922653114 GT 1 -87401.0320920769367920218141090371768780 0.0111887376236265244576157491070436 0.0974351597454568126668802241939433 1.1025147461984522053640467327138806 GT 1 -2798099413465874551669156263109012304.7340809058096060040178779606348200 1.3389441993827152575497411978025088 0.0969782732927721987073751536811351 1.1020086652707403771778424041088066 GT 1 -873964.6070288818563950791768196933835635 0.2259932961208413949648554842434278 0.0950388784333120342002605941151398 1.0998632957998206799992514958599479 GT 1 -727318.7101968411214590226352605694809120 0.2800466666652614504329480954516647 0.0834735232378802878632280055308302 1.0871643231266178498702733604668072 GT 1 -136696696908180385617144612.1824316349324089932476017066278603 1.0197533364140149433690722602662009 0.0556889683060037031804233513484840 1.0572996843774591535323374222061209 GT 1 -9162179079022031808923180082.2743595379056407240047613451867422 0.1287067196782233707602299402006971 0.0565786988080604962109244286076166 1.0582423292137422655246934012235493 GT 1 -14953611442318272608485982.7410068835326833067072681817492307 0.0700947112685349222109708683848808 0.0705987101588466340775754776786763 1.0732146745108821596630423639796767 GT 1 -7.5382012032282534042037985199090547 0.8308422927711997159302715104055878 0.0657367317816604038233319403854182 1.0679970087175629129879121992425714 GT 1 -25654962807447985189.6170774130710076675471791153897392 0.4072581159189748070326136887169586 0.0572808749000273384933431879234063 1.0589868932076187984228780353409786 GT 1 -30203744386321331406570828466364994.7556509721264333166340023709927663 2.0328596910368895274220165310656716 0.0911711276870471060763573098666117 1.0955984618093411538297986068031168 GT 1 -2150874085.2189974216633287685626631409477531 0.9160301886636817331403789056147665 0.0265685898715331555623490886950778 1.0269279136336364664133919304159357 GT 1 -13092689491290505817970262356341369.6325789646269276670001398731388262 1.0375988511954061353919074020066453 0.0352707179041200257465861155424213 1.0359077536891361605119630486833391 GT 1 -2190512795504109415515855181117213207.8850423415116385616894720503086990 1.9098085927413324446508942612273856 0.0229850257620139013913774115321575 1.0232533003034955140565948208996536 GT 1 -3512523710.5769791594289093641201579570456805 0.3321885915817498005327562502338471 0.0391206968234135504062796887047499 1.0399064729291273814091395906831741 GT 1 -444936169179790840339977125557741615.7767438300406626291049022484076791 1.1762013384751799741607801487339513 0.0886821059054714168748517178194158 1.0928634918838213539554389828230896 GT 1 -1908891725892857894724557559.4864266617485124102602930487670381 0.8306750452454556478275803911099119 0.0401015422455079802632819530387836 1.0409277732870357693244096408489233 GT 1 -4215191192225121758456835220616091708376227.4535815831340479079412870494332504 1.4047906050577265834883083806373646 0.0142262918646724370580334584360020 1.0143284556535340347098134995593212 GT 1 -871648990623097325380025901797.3828201931084811992335813131215307 1.8497625338483451319200671823180964 0.0209175525770224760181537283851019 1.0211394240394938126582906493050378 GT 1 -30735621873287461603459496.8632120220007237167791270460914528 2.1860564267775922774178165770262707 0.0610474078849379543461717746643768 1.0629902886788093122309166894507115 GT 1 -2590572822954233583598197448321175327753.4894744700313595546555584085507542 1.8794513987215330283143438810350965 0.0006318832093590213210049593281922 1.0006320829316927141177996916616661 GT 1 -11679597666528692720159002.2694443590073758394202895801911459 0.5659769598632001497501521203762180 0.0884073356487967914798543980000490 1.0925620286469307503887271834688745 GT 1 -4480.7758187652554778192276211019404893 2.5756834364657798990217837596605394 0.0336563462208536211733002619694491 1.0342357587796065372740165186860022 GT 1 -1756384716983474633914905684292349.2366456904903058265834765358380690 0.5971304990867967090323262833436479 0.0804534112622472995229736826437697 1.0838745687523062915381127056590323 GT 1 -96992055209652717074.0411216568038922969882290605639928 0.0960405448379272880010031234213713 0.0729129006869246619200635368245741 1.0757077595635511623157190215643180 GT 1 -41258163858860353665984800589.7863742335904053701861064718907465 1.4205627068484680104940500376951855 0.0359312533626030631483852106759557 1.0365926729751010729717705081618389 GT 1 -498087503385101947757865483.8725123205329105519938041112939153 2.9840920054462810114776633367144113 0.0515172022004642662329967792084888 1.0542903880368767015333400843445734 LT 2 -2.5892985184587119261205045725244783 5.1634373878043503922223090291261252 0.0672512540873913432458291211989236 1.0696194113871516887656276421242812 LT 1 -205667.5492417134070726753376698259034650 0.3427097750926231808465339188346315 0.0040951048369084216335325242635801 1.0041035127407366101995164017340249 GT 1 -18329.0995030149019305448091284529404779 1.0197964946957368792318387664655535 0.0511829495421725571361825641107558 1.0525392803501576795777792903303651 GT 1 -332448674405745836758112922940408538953.4049708511014092081946966651153926 0.6703075737756926949757501747979029 0.0476147447692666340113027662917353 1.0487856461873680651125894684978504 GT 1 -79524018214890879978687520829.1116232333083101487765164378579656 0.1257672932137271916498412717642601 0.0019352819616452348443680125407748 1.0019371570393740628999789631411617 GT 1 -589926840.9540912081113013239068791092493752 2.2954754883909931519167594766530528 0.0252836873179085769422102715415198 1.0256088116734576486677326467149227 GT 1 -2.4898260962117180017315641160924922 3.3718336363855233819845641093618228 0.0397197771463518032188617915031320 1.0405301383085394397962553392472715 LT 1 -46729061927239323293463281.7395453742173809620202260534713607 0.3122898629800054570355390786672909 0.0158121275889479760965863326269655 1.0159384729071667250708067348266624 GT 1 -6141397897070884957520385.7456038136761693784158897074704751 1.6798970979156487950109014267466366 0.0967563316445523628571273594134670 1.1017629188262328906336536435580868 GT 1 -43803034101.6061041617147844277640298044172971 0.4104723734655689529064529212141448 0.0169190687252550571150745845028649 1.0170638313239273192266785857618524 GT 1 -11873.3026455198239369922445739292959144 1.8438022169932749673620600638049887 0.0866487124878418248807905689879241 1.0906347106013168339864592343408077 GT 1 -139107198108337228833288305.5942729728589060498248672333215912 2.0287913108622293716879446448331706 0.0388477701646140373003333963112666 1.0396224748198911375147023962900753 GT 1 -928123234683991263569530825733596571812359.5290646958684344815748974555138957 0.2690475183162318593289193335629208 0.0701252116050659109457723847722338 1.0727053380335728521977829963454529 GT 1 -15726471805818080096158579780693386200197268.0335217539189185981677882167957875 0.2444573023606547759547560083026433 0.0381567585260503679923013407786997 1.0389037922451103131954037670597432 GT 1 -1992728234523821262941118791352.0986509605375974739935696398327165 1.9540828505808733372834132670662883 0.0048918920661386303741619765399421 1.0049038965358468733884893092242411 GT 1 -290188494.5238606870325512925180203983248271 0.0514333507128958789764601362985203 0.0811292125521235938532033865284588 1.0846097677654038090273647107947215 GT 1 -80497383858191652291739672212022477452.6757472962384795515415923268214802 0.8473461581440635615023157046327297 0.0229623028791884674483743512084366 1.0232300431178940048953168565874811 GT 1 -1893558788510292701808167065429267115.3077755150503800182760117559960997 0.0400766234072724578077959279416347 0.0290525796975430906826219938233761 1.0294829622059419892630081170011828 GT 1 -32018038437902537698725532438892872228.7542175351861422660222214137483009 2.3411825670697361941181048752155101 0.0867100093170638315661778031658001 1.0907018248508158735791421735474039 GT 1 -695381907870.9194368054956152414946273077977315 0.6267835900918687055569227953465012 0.0194529949638312967949934864795324 1.0196446946313075237102602650274397 GT 1 -1682560098975675757866.5145063154552724155644935065689054 0.4628495282151540009270513847257786 0.0615219422641342711076721842593648 1.0634958033718174478894851487788058 GT 1 -146362225768639431030798.8341633267941157703458262043244548 1.0909413839732779286268454089233337 0.0019359146552564954742419776392854 1.0019377909600010167750730889215919 GT 1 -61947346728123733931917649935741751.5119249911227397491787904311977359 1.1423507933517574949626212037393711 0.0427527679518762033848011457728692 1.0436935801952508612036159766830542 GT 1 -804109612029418969627280347.6171751970234245895806767458293178 1.6032814591924838972679926137263613 0.0773043324424468523618918433945133 1.0804558198052546838811185250883292 GT 1 -8404572477924.3063058390145434603295761306206169 0.0121055081468221978879606335464913 0.0631902069589602028960985711458231 1.0652750130373855297188138263058564 GT 1 -25586667287.3195779383417730315037106399683936 0.0236683328859991121750204812640584 0.0142063753318186971381786997692495 1.0143082518973416487308460581624038 GT 1 -1055760901544421808535498560979.3106049328408905040148097413737140 0.0510315421600308800521056810417307 0.0255474296210152474577665576985159 1.0258794319434694297353144599043586 GT 1 -53866381002244587433.6163519378198084830970858852595121 0.8047575611652642216490693316831468 0.0975948834245931218538187376703750 1.1026917282905350502681365412885627 GT 1 -82490686.9496318969632296114157697513507106 0.3968144227651722191007011027698277 0.0912637825829936711635154422191642 1.0957004167781622065789935694931743 GT 1 -2434.0003636707202861316442396480204087 0.0635784216126974421475495243894054 0.0991339117067397795579511601542484 1.1043986580653450257917952528752748 GT 1 -42987976669080488368049471161756328083.1059854433630229401025319034244934 0.5883097103090989826154641745008853 0.0453535962636575874247242833804724 1.0464142649314797429904953922259999 GT 1 -961991.2428436367630257986425221090551241 0.2763163372931962366180145885360583 0.0610835580411837626602186601648136 1.0630287899327246070491521625446302 GT 1 -747364.1044764334951736956740321319114271 1.7458321911589144480191401692005087 0.0488944056308479958654009971771249 1.0501301875121980009391708517821577 GT 1 -13403599244.8003690470657483992403740913370824 1.0777762266424474364475207039512724 0.0731684851925705326586439201034433 1.0759834831096857064539035673450342 GT 1 -590827345937.9791627783289883733976775530882467 2.7299888598233618127302241119261520 0.0427807480020718249590367829109917 1.0437228103232586186924539206480427 GT 1 -245459441061962250750833090887.8364114401223212024230219718109786 0.0595038418481803970474119528454346 0.0404416258439420640023535291456852 1.0412821272858742613116191614328159 GT 1 -151849980990863742758476620.6505791621098847229511760950475648 0.5400150006443147727519449943161390 0.0440951598281301611923461781338832 1.0450969104543012654255662068689500 GT 1 -353397793626917116340.6233894997512957955934265402411501 0.4478601907603323679048543106310297 0.0543495307441379927002010599054410 1.0558822610220663270110537366212118 GT 1 -1155066107541239982246518796605.8880612898340724898515720462467827 0.4312014898888877421696370880779020 0.0979789579634593526771842165865513 1.1031174309914556959700095729404443 GT 1 -1844194545148201023671985816575607253680691.2780899445659364439039518675718721 0.3991666448959867420063321659980222 0.0515431478722782978842353076077603 1.0529189812820499485594293050655452 GT 1 -797036201013440312587.2133604403677344608386117741532995 0.1158851506441438769589132929729417 0.0983505096539693364406730062742936 1.1035294260749200546104058899240707 GT 1 -4539068989760.3316852450303911013861909810194300 0.0509872823582065279468686670099605 0.0876063050010573633084481527275666 1.0916836989432788538658097017315088 GT 1 -244745011.6595624612305126982159792346991753 2.8156687562805447838530095748133048 0.0725419504653491332213615955546632 1.0753077151356728647627926591869274 LT 1 -13899813955947593574600080.8193127475434832741276112128567118 0.1294251415788741311841509157870576 0.0509076841709044106216737689584030 1.0522492081495691036290039866643038 GT 1 -403688.0711395905807065508508026976962174 1.4012971331844832504744844644100512 0.0258531588651801838130430042959221 1.0261932257841810011560265434099214 GT 1 -35745213696061353519803162089866082658.4764231033274622088885020120690213 0.6735301345071809815304311540649344 0.0182327833902554435512113637158973 1.0184010490241092544988902915618711 GT 1 -444579077666408690668175790894443.3645608515690578139029587072181975 0.0057628141596583853850684237953079 0.0091623406268214810189928293957149 1.0092045730327601410373868083815858 GT 1 -51358059.6466445034541549698814234222537046 0.4812053275632870360579510586139347 0.0236637855218906654876199031809666 1.0239482698421190328145897733925589 GT 1 -6977343672299803563561917324692068274504263.0964496469597019031339159130286954 1.3289591145388374598755992042786613 0.0586396574605430139189415233235805 1.0604292769493127918998468436500770 GT 1 -278936943581416.5316426439390184745211466582326233 0.3598513042966894379616398643986118 0.0542660108130208952805845158389832 1.0557939448356891323992249158428071 GT 1 -341548592569744374056240080683041701109.0110513486588486217018528276891438 0.2194566595774714769973875131263753 0.0501832038035668660969498671689014 1.0514861590937701392941237562301648 GT 1 -277011684456858131629070066336661927.2917327173047095094045101991513190 0.2065717047165660113443181357085748 0.0453408098173767682327803470693386 1.0464008711129922944872190353105529 GT 1 -6119652521976630459820542752385976764.1348092823605277721639586905512656 2.2334475990804517551278130198033049 0.0628594721564229513220199155847765 1.0649220316351729664744515651397796 GT 1 -9483998288187487020917634342042396.1673666837666678858970713780057296 0.2841158398169462582246011049404102 0.0889220854952847215702011881348105 1.0931268590294963523636481117750661 GT 1 -112113483.8497532387012366288392266227507581 1.1829558053308400365515733919770110 0.0153824893566579469282535514001615 1.0155020272911521522591713101169886 GT 1 -235505226941157077491814069.6999571334377385343002680120425345 0.1486897587771337492483750375134818 0.0974996310261849027900508401333370 1.1025861799399324546871468200459736 GT 1 -8481849745.6562753155661494750399937169993609 0.3838990727208733068902211039508265 0.0171614333255778093480891376671326 1.0173103974745794310528076140134225 GT 1 -30578582867522828006113892.1539926634237532252185439519244285 0.0404518799391083915611019622740589 0.0805654072504909149316591940077913 1.0839963709648678163181692130802745 GT 1 -8749680122709533873.5728280388232263511683331738760535 0.4412364375731350893992536823662441 0.0241941563430036751790036843553752 1.0244916430376837083523206860861389 GT 1 -2772900394958506368888765.1324162877707106978576247491358395 0.3646689077523895294589039937527676 0.0484575042162808246017043670603945 1.0496709313580962716501899381163968 GT 1 -415273493454360871.7504599301118837050588998158480618 0.2107708157955481039788917433831240 0.0036273220795435260853816951422921 1.0036339167644719300814556270149996 GT 1 -391169213007412711360485958248.5796479462409610476552261041580270 1.1552664859698228038246975273795125 0.0170745203276522720756997442185919 1.0172219707906712663260344735817145 GT 1 -1891864470887470301395277.7607256099444642804098811106269957 1.4546363417807991539974391955194054 0.0219957455898964476753130260100867 1.0222412588442011101172294831507896 GT 1 -447583862814455661370.5756801337470729518422506623912556 0.1539347185160482782994929662753866 0.0457953320986907553298232208266069 1.0468770939593510167655995228424819 GT 1 -1488.3470509070004486298748348451211025 3.6430653511325237265335526672781538 0.0777968046080199596687273158292066 1.0809896942491717673872579538709503 LT 1 -9985070740648882.2922069914307070714924339395150560 8.5165290958840001443882231532111316 0.0716072347427142240564457043611474 1.0743003973122551855888139525233499 LT 1 -21.3677057423953599779113876265753762 0.0661636855195962930713430687996593 0.0527758847617933536751298127442332 1.0542195556766875124034805298503477 GT 1 -130342.9091410081568319064156311067168328 1.1189074031632118915405112456777933 0.0518541833361970896174584205243578 1.0532469735092309652832684021623952 GT 1 -1094050.4789616139811277741612734512856397 0.5986293406747170517286715531504599 0.0669164874504365858254510840193269 1.0692605724411224566982617773345795 GT 1 -20424059813.4537724575119659606806831303286381 0.2382399207442086648247827185285125 0.0032416627837052815534732490703856 1.0032469283550573960334375365600010 GT 1 -108718902009.6373777618835726369874814878460499 0.2265842310074722434678882302832535 0.0769607205136937472497310195382225 1.0800834890615874870772212361666931 GT 1 -15162732940384459616.8228002229988192000144373662121360 0.7125158382956176029828957102599777 0.0380188393786206154283866399296538 1.0387604120618505361528787872467065 GT 1 -1679134884990600.0171283293199175162105189163426288 0.8924278183477854377784921523289157 0.0543929675162300749256799512392192 1.0559281952981337216816748323597413 GT 1 -7042326.7721619895165261591252020216567197 2.4788388378537474298110556478811410 0.0211770586768001360348283760609481 1.0214045094749687880564309188515145 GT 1 -11114059270840054088806778377149569066471650.4961343593864918651944062243966810 1.2498557867829869148357121602688615 0.0965908944240910236179542998141165 1.1015797765829519612912120021102149 GT 1 -812745306355062694.8652288074876053874966501684809691 0.6570343968137296058917725270891455 0.0375512907550568951192418587448726 1.0382745033362751001451406531006893 GT 1 -38895356377719555858798023168828834981638.2964506835929231831118121663888824 0.2464096245709921399945046374448823 0.0468844516234431799970776486905478 1.0480191356929120048391286057370932 GT 1 -21360.9945147195875672019225145333326825 0.2681367337689007024308790793797543 0.0210236381315032982903491229230779 1.0212477819234156026620199510817340 GT 1 -9076426132813002470222538132856347748092.7304600793884480416136572746980301 1.4074278377591340549860056897875582 0.0828380762590855183067718513883543 1.0864712424439266855825033475412310 GT 1 -2536001142999498737665495223309366487747.7763214558193445793463045065069865 0.9552598986226627630225632927423343 0.0061731122098078659617679988938466 1.0061922446454051502077399749852515 GT 1 -230617076818780668579180462740668.3616708105459614958805677671189789 1.4623086294665806658010596363014275 0.0919548477924181574118084075795151 1.0964611745163339915028612590988709 GT 1 -36411778427872.9246610421220209766996092264428346 0.7075528422729209722380842402377316 0.0968801583090848702127241655235570 1.1019000193201675678647395552163610 GT 1 -444918109482608840348990.9935765756462131974089945220708676 0.0721559070416879305918888142432239 0.0224574842147533585134782363177098 1.0227134936590111369939960377204907 GT 1 -38487194214151045405567.5396234085500563517824532664198852 0.0600493078484703999761073915037916 0.0291726145553050791186098840081496 1.0296065963756300650831844185861950 GT 1 -104172157373995657266.0371468716290876098218163606107674 0.1900071358313299400984587935033573 0.0322141816233629394012076358725513 1.0327444781952157478869398722986683 GT 1 -5603415003057838322024400803586330801725720.6833313580011003960647611722056238 0.8677612845603770939104297770418352 0.0329407984297653608785108035532440 1.0334955635101327878374587042101999 GT 1 -615501513.7954046985929688964058735624954577 0.9311994625434838728659625109248476 0.0598154588985493824298854149572023 1.0616791026657076841922951566692835 GT 1 -14099.5984905687534131752000787477036035 0.3034981331370982077773810076471054 0.0020828514734250719078066454459087 1.0020850236252591153093511048469708 GT 1 -900617004056303436401164816379746.2146536210246721433338749909150722 1.7329546089252812591148285013371712 0.0045885721011792893500129237420927 1.0045991319134989808686658826813043 GT 1 -321212158589618074882.5363336497523358429750261158403163 3.7793912945215868275603661431273998 0.0977105569620180854712038807519360 1.1028199201077787953292218697185854 LT 1 -8088104249506162945532859102613138759.9332934332615631498996681832155222 1.3920985957656500012491133259326850 0.0364972076931395033587551925762525 1.0371798930448780566160795827454244 GT 1 -66236018475.6835503444791746033668159252343588 1.6827671022748401191858455412625071 0.0795545896807845818100406866555345 1.0828975844464864596311586746477996 GT 1 -204168.0274589909275669849135142861457230 1.2391920402902387517768580133385720 0.0551666106668030937982806540560696 1.0567466746163220341886235891756736 GT 1 -77199719895859920777408119583017849304317.7430775259390141868618408585570811 1.4905618016308115913944532617191469 0.0580256402202308232633908686305408 1.0597772236936579367537911760499965 GT 1 -476100059607923685907787694.7634875481761431537922461169579484 1.7132618213938763621183520499906388 0.0516987466001298676339247550370478 1.0530830493598371553502667097231093 GT 1 -6790172738367497757774644586770.5408404575349294299034242343814177 1.1071806671187399181379866174283342 0.0927300778468378584231830160266183 1.0973152742949295558762436648956918 GT 1 -369359789714989011828145500855715519.1002512357047456501968842597798866 2.3404523039762923926219108541059825 0.0182291643591541222370932857460490 1.0183973627893584919049777618831753 GT 1 -12098357952109304000749979836939178466540.5631816955023736019035235372656305 1.4528960045201145344708290485623767 0.0028213866922010902359016341001276 1.0028253743058006363209637338332481 GT 1 -32.8306639421751938310427722166829048 1.0886007251329794680582287660900126 0.0920965628164160210937150791500199 1.0966172527501710661130422137051294 GT 1 -747939837492028233113.4198718350103287472355982249834512 1.2035500785859274340456743268450317 0.0193776686165726389533149223291482 1.0195678768411281006912370337150126 GT 1 -863829972671.6396643188797081980216278615628332 0.9073748616751936145945953660206585 0.0046664850814893050915294314890996 1.0046774071145797715255487695548054 GT 1 -2719339.9381083166993937793730383385826961 0.0947936996974473659831099327916949 0.0938853460470975939125831215164808 1.0985894313289949252902093941246309 GT 1 -46445904658067900919416181.9976986262542730596722967889138025 0.4123997887197513244929776320050811 0.0227365919250249864954670348242065 1.0229990541934473264160929152586911 GT 1 -80869945931697769294.7953698435170046018235878113653113 2.1472003911787022365765694269123137 0.0677191219536412078489334848772981 1.0701211384053760988329797481442751 GT 1 -1027887521067761092242072529592886522070.3721316397538163439899624895927057 0.4396903652463123736894123090558039 0.0191165825581944904123125569396768 1.0193016670070999353418207801502772 GT 1 -2943904663659.6335828532299060697300933968249294 0.1214089083376407004070423177862278 0.0584366098937857728856535963634227 1.0602136043078521636042576523735132 GT 1 -2110470408503530432.7908927240827821782336629902475973 1.3780927266677068694347897413545691 0.0606705871461795244535419120356263 1.0625890488832759010203293828757820 GT 1 -3086877980409196961654501906406353521838.7920025807035799118452761505204899 0.2494466639322094032672022321126974 0.0222973352444852913145152823260350 1.0225496789392818071909895044413732 GT 1 -965273535995065954356924.9915543339679929758119431702766403 0.0293387607666932178950883053325516 0.0047531604839949579210017709394988 1.0047644926746952823417350480502752 GT 1 -42574227553363848071081018.1108133138800223132384446461326206 0.8322378880268686822648862620072883 0.0283032520265145607299874315009733 1.0287115108815789995301455597720803 GT 1 -11626880468678422818898028406973736.8440334655122457091246180409667757 0.4818145241150132681185617605157717 0.0768832296049650340024259648038954 1.0799995406772900680926744049724350 GT 1 -8617605413455381142958622483675477626855.0198738993771750007045995331881675 0.8433180845273788201213420630365780 0.0941361767995713270098692122803488 1.0988662897544548004535538084089487 GT 1 -75782076622654843556490684785334032.6125139596219635212629565763581454 0.6502734628625068685790380576663065 0.0032505338697513417312368084621489 1.0032558283313015087033103250139151 GT 1 -603698875235051.2271313357174591232397291195381318 0.9420362432081184913953231613007974 0.0183156150685346723738621382030993 1.0184854225612653008387362818842574 GT 1 -68475380.2109699311373294054723790807008256 0.3334811306799968956759120071724254 0.0018098403183879940862799573214216 1.0018114800581204225137008890647796 GT 1 -1772487850451242832987110214484739.6492797311310763351581718734989745 0.5898126343520555018770801579585486 0.0990041512872043480693449141167979 1.1042546288063937474275317025371141 GT 1 -435550364897813243.6224381600459633885000889773871008 1.0769425005972622710154315691479581 0.0325149323203875659467034296075470 1.0330552881201855989698835786882481 GT 1 -211786989927639014.4117280034631151228328340604980182 0.1740842654311613345277644500732645 0.0651227259631670532781030608505448 1.0673400160231149149116301771886924 GT 1 -1050655438911963391426710003995438291172.9399562158890173774420091707324222 0.4642005504571274475431951976489649 0.0392588609281847422851027390249934 1.0400502725078283820296780392013063 GT 1 -1098562410982762404695826.5417969501962294742289656228778741 0.5416108375189479483931107294128398 0.0063257488881952238874634733476552 1.0063458412151880135241423692608039 GT 1 -126379494030496800045690761.5677434425553966336326797740955882 2.8707579337110877340814860678533956 0.0961512241790552288756037133024661 1.1010932159672970731082155093694933 LT 1 -58022705690920654.6385896586299065063633735458225819 1.3292500448590357310636847898453278 0.0204859163392096289518559553618440 1.0206986632825431828397152038837518 GT 1 -730599957655045231335.5510255724547833603745539081003622 2.0192936158176414000091185306093887 0.0501518685534348886201322366680511 1.0514531688019783141266360052110676 GT 1 -3346592539503778588040958374393.7124508338061187681212552399120737 2.0694080570379298578669137623508894 0.0789111657203065684212253119376160 1.0821987932200429480041317273606106 GT 1 -1599618620508573.9098015101831905484292375907127655 0.4325669583424907952899898955164036 0.0747074493984336178898122366733641 1.0776453205522044251276765694734888 GT 1 -80711361895582277449914660390891398762952.1011933328935291367562126301377190 0.1421653662899569331500289706389524 0.0513475171234477808720548658805305 1.0527127404018705142240612148550932 GT 1 -145026434495115822.0584375214174612482190531211609369 1.0606888741561391354060835608606461 0.0770583692417583771168438339305684 1.0801892850940532550977312990851457 GT 1 -381328884295.1723156700637877966709839311630960 1.2417324653983486627611090719525874 0.0207396059293125569335942926846709 1.0209576921747464310035961647255078 GT 1 -1301.9068908521568530382497821942624263 0.2449407332484305114548617953657183 0.0227994221516659970471239688129077 1.0230633482680531293890664254059659 GT 1 -1638.4781413827117578051837364470750353 0.9346055982830905401394973947894125 0.0274291510839207309629275540858514 1.0278123537872741192431019112281664 GT 1 -7789596787837510053859100933945923984730.1274886599218366968385231098074280 0.7081150483532367702870262426715883 0.0004095002783622373432393464403421 1.0004095841464980248497639063902986 GT 1 -857992165453359736393670.2860457463498491951605896282991595 1.5515032871477187772528334952969469 0.0724194194786680840599547147036060 1.0751756090060495129015588703689736 GT 1 -10802767789936.9251511673431742833627449807495010 1.0205944774214184813242913240130958 0.0624080024119635413914398758703772 1.0644403951915070694116749598284622 GT 1 -1040667343796781344.1709554446701329546451068848030876 0.7747713976869731695649386013515128 0.0348680863666726121953099159528708 1.0354904889198560863799895934178450 GT 1 -26291300608402.3833655850095087755558857202443183 1.7411011264732268062569572097231074 0.0889801508907150936841764070103525 1.0931905936946823292399296499272980 GT 1 -1.9947457818539097661500078438258419 2.9281177438771615905867657629587125 0.0180548699253772953161492180130178 1.0182198478765324770560379094286797 GT 1 -1677273794.0384198869961013147466572250708919 1.0736089076191573839188461385976236 0.0421655501394087132471016686237802 1.0430803240230276650487114915453782 GT 1 -12515830512350.3930775738273184513042893033357407 1.0055231595758296487992995792793722 0.0544685282191560685811539685504263 1.0560081055773605568544081778198928 GT 1 -213364601136560.4455673875378559513510771402683937 0.7211129233140581083983609516558241 0.0979006849627662528145656720908037 1.1030306596178770864754234186579252 GT 1 -1088862638395325216010633677631194067048.7306014159196121320948000598092588 1.0764309027334299381456014592279601 0.0392584396003500900918115589467887 1.0400498339633285870608598966246139 GT 1 -102647369596161081411527686096517.2882902011867388593339932638927712 0.3449143263049561301834261823422417 0.0792892039996201831202554087635325 1.0826093028959135952023556594449371 GT 1 -9438786804.8105446729658500582755116939328072 0.1780994974058870024960466757041868 0.0901365815999351979476317720331842 1.0944607804060814909745855750459686 GT 1 -1056797926586346.8723714576873508492431678220781255 1.2922669716973846084048107187682429 0.0394858847804046901815252390700132 1.0402866011817716142534854518577265 GT 1 -2734591616782890314469832549902639663124790.0731178458883091619225907188028274 2.6384297383345433214274575306194277 0.0327994912148445634328053212885911 1.0333494536424498993976865854275291 GT 1 -1375144085377144089947.1375843866075787717613515720318486 0.2948322281407525426918814702888478 0.0844528822391693220195470792052926 1.0882334494952346478180958606985852 GT 1 -497.5492192296488043602834980045084903 1.0118291607988251970590263713432683 0.0663101224202268308729674746043664 1.0686109327422266155030994978846964 GT 1 -79428954868013101.3985739201494769233119706346790747 2.2528413230190864742900688310327706 0.0496459878396131575711700755630681 1.0509207194228685717341397790042073 GT 1 -2570423.3938785249867092895688985011011698 0.4990460261813344868994899482305519 0.0376324253534686798245134029856565 1.0383588070686768279281975321022377 GT 1 -110394631.4587307521820138240916830880458768 0.1688495996392294673404432436718746 0.0814794697837252382341811695985461 1.0849910226809757047527006733795971 GT 1 -63823591893507810759688624500.3147753571900713428932664964720075 0.4569603790164804323009071388855400 0.0841569048658868139356566281927388 1.0879102225021281202024681837872356 GT 1 -1756663.8516485179760055507233218922921033 0.5846880388834544482015507799964198 0.0618910238845138093502256372047249 1.0638891574965989536885048801184010 GT 1 -16978465011227524395395782457697854861.6335241709358658825757547198698369 1.3879418246919940476814042585189950 0.0164289903659551636622244178206057 1.0165654428096712712198183828207303 GT 1 -47374631261179140381011076706944988346724.9580788042705885659594408161516921 0.6335585670478226452770200413254782 0.0013453858424525888349642805356428 1.0013462916865494966469588435694277 GT 1 -14966172002265737136.7055892422068510914341522099103257 0.3294932305098436780950014646825165 0.0522838325208049296321154134566254 1.0537002229499147762821247134901190 GT 1 -16009505724243943329664375107170564407019.0472007962616521228566444330011018 5.8242554479229660940565611161028186 0.0402406619465341636644469434600695 1.0410727154757670528544304822861116 LT 1 -18704.6307590227798200165967277648822160 3.8303096392333692916829523624813441 0.0667158453041005946636640773484700 1.0690455642724425264916796846828179 LT 1 -177455196524600991898041036936774.5212315577142846033498175748574006 0.1731291226660600720542140139301594 0.0472671123200277983736460293911556 1.0484207003656186491155858251568811 GT 1 -1346508.7727679555060275463615149705167430 1.1412521972505848318285143251571986 0.0944236651826771309222634472862160 1.0991837039226756787591499983986607 GT 1 -68868899036575903.6182213005535445726421032764237352 0.9732667248841075527423614484921593 0.0238634395792664808786875759836779 1.0241527838928535467293015181093334 GT 1 -469930984247230.1361250195928832855501125219784708 0.3560756128242437959421114148511680 0.0092907670711731712834193420813061 1.0093341954454624845331377571869259 GT 1 -2875504109270396.7087612240420362266277178750164082 0.0270330235346996545559218976138024 0.0313977105502927119762129393489081 1.0319011853468906567180844902950345 GT 1 -39694744.6654087604033017179417926911813085 1.5034401293253578436458809936490301 0.0033101345030282160354346040008572 1.0033156251180399165444082945626073 GT 1 -215550265391475691890721977102.6949663149849029387486767990357282 0.0407484468345620708497484680793456 0.0103797763123289336298275361584948 1.0104340218882708203120345838178526 GT 1 -220203989735063954647277359397377.0054193857944185961056996518368742 0.1333624628594468438815686069768887 0.0058362038345975491677125487966022 1.0058533010264487784845336376784788 GT 1 -3.5383876918207743669919254085036611 0.8160683200358813833619693922190002 0.0498132694256934523933955421777915 1.0510967552033713122370071685135674 GT 1 -152352632049.8197448081843500210390790969932784 2.1623761754790118077578461959800581 0.0808778347230638459949029507837525 1.0843362326245269591030171099657390 GT 1 -8097589607221115153133.4138206150555893625437317714208000 0.3652210722518213759566270467882347 0.0834752646211333251864037924269125 1.0871662231098169050979233780093542 GT 1 -159276985321792766665936.6240178116521730399779420557103237 3.0858153320029734749067255343618764 0.0959412777155997623130451543367109 1.1008609624204544099702461236062530 LT 1 -3963576778595787.4559127004263535848144925766731406 0.2277541716930555789526474949261971 0.0484352212884314140141953761278573 1.0496475139415911107417200599869809 GT 1 -1635153700064033041.8032854358808987020749477493889639 2.2828548882159165430181696188755128 0.0822714589804566989439354277704878 1.0858536390419564434418457828273213 GT 1 -954761939206947906956372.6885816972648004827540178078518871 0.9269952397123326880361319741250315 0.0739389697558392539038940156858126 1.0768151391166520274708821516524060 GT 1 -4305717070357.6554296300291388081431509961018167 1.1050135808752347488219803125644583 0.0872820801508256258042294617543798 1.0913284057644894768139108942461674 GT 1 -213542081780966497639885544569.9143701617891376549758740997333567 1.4199821904271488849990140278832584 0.0111047580697171392881110698504272 1.0111668761948802066703016256967919 GT 1 -954291436075972982961691582552296987643236.7299339992526568933502161148675801 0.6822730162296607293868967025461595 0.0511130466133181045225889752152276 1.0524656092942454254489476004988713 GT 1 -40239471314.2086653596629298758473668728571317 1.6723379445377007631000086447475065 0.0522228153444270470350998074762576 1.0536358416358571573245286198082911 GT 1 -18336484495878.5290291857551771524555921144100948 0.2376985834742347063770703280230409 0.0273294014111158932759859467198244 1.0277097961607951941234784733782524 GT 1 -24763453015870889.7837169897637115366620186094420961 1.0364685751194707720764259408541659 0.0801469811681342068096324025691601 1.0835413838416573592516516051251046 GT 1 -2057493915211197498373038735334760665140796.4817097837202168317161118978141718 1.7252548446994944092340540954469572 0.0634814348124768572845834115195324 1.0655859332821825061549789436693926 GT 1 -1672045797352579.6033140678023387904490801836212136 0.8154465563731112024813867094564434 0.0688719297386056805458569210002003 1.0713584491235461197932950761051869 GT 1 -481608387428202992400.8818097595615008904004107381191625 0.9823357247687019271446352754221610 0.0699572074785856580997965877459790 1.0725246804295359982729660911751750 GT 1 -2469510342540412858407225081.1437534924756357533307785133010921 2.8680433249177795732731717409618197 0.0332178073576626169976677577296614 1.0337820491863840742909825725242305 GT 1 -2526241608796.7944839354505076545435383423607591 0.8736844458909876429636460761941219 0.0458435734587747266843341415081846 1.0469276518545362980501164966202606 GT 1 -78225369810549455506541.1341322968500419998790864243558038 1.6603793392683392137120105370459776 0.0501060961627733421791454222402414 1.0514049807955855766631626246945175 GT 1 -7295860703630435324993977595314636924611.4086315400284619137336385070952149 1.9683444517807590227488302103016688 0.0459580199166233639224411504965621 1.0470476042217414541184022387828344 GT 1 -1.3256865452923343145590817355237207 0.0198902619966609283828311791205644 0.0376891342911971824096403220632749 1.0384177352891586277824881042460131 GT 1 -2322501663783815466362908765989280399021.4830532059493700682819285602556769 0.0708647690464075847805828416628961 0.0508943467261145739606633021283611 1.0522351554058541169994434631117405 GT 1 -2748232159249.2954972814254210682563897700300442 0.0794859496779646297286600857773402 0.0656705641687905627625680789649810 1.0679261879199069008560050420742913 GT 1 -4228596647875211.9581881832964149429226462076410339 1.8171227267239508721828179555644301 0.0828520661530550466289630091970098 1.0864864960216272344562321627211336 GT 1 -254180194619069672.5238780507186410582044984659664926 2.4455604668250866308477695229495137 0.0132582815292121250276560957005363 1.0133469572073230980134991136131369 GT 1 -508847109492004442581484011732234574.9028117250864451103572542550017002 2.8624707730995604235329577795893010 0.0025106841776935680853447826780492 1.0025138412305624906073196371887589 GT 1 -260732267344046782061690553539784502405.0635431088340674713487975362262793 0.1369001644707360803569566667738555 0.0368484534302734446489555215187184 1.0375445103339659740147036439162062 GT 1 -18458213843916742464200329031654928037667397.6787751300113385989370965064940477 0.4668456668516108178606582977104881 0.0723794276236092247125225764661832 1.0751324957781360989505779942951039 GT 1 -160992885499.2337695100726615486977400211806501 1.1748875803870057940241974073627923 0.0553449955572649367421963560948136 1.0569354928081452152048226984152024 GT 1 -138703.8554057984620532592696281808776523 0.3759182222010160349038729104709381 0.0327856888815651616254176788677696 1.0333351833492970337347157109300081 GT 1 -821497070542.0354934589662530585045086853670976 1.1755955323352102918908852981346272 0.0156330377589412795537226434790111 1.0157565223438922964264483198041030 GT 1 -22423827497549882576812759876942400.3404727377236767577229717789126558 0.4259528640399982139401314337004922 0.0697080543066636500736193432099934 1.0722568219970790579877321621041739 GT 1 -6958318080071555625069996415254.2870525229839892585053937905187820 0.0230982037630397342290950555376927 0.0393635473131607468647780841658180 1.0401592426400175220336328130532601 GT 1 -1216673916772453.0427910582120306919875643061559504 1.5643705549156397910344054188938394 0.0686266426002891266717598282493689 1.0710950537391541833023323049733814 GT 1 -4900955.1353505383896872970665768745826663 1.1352470619709076581312407591173015 0.0817222721145982351900682822660714 1.0852553982935028461322830153884980 GT 1 -3266284588234572638003466161573325344884475.9497862743398348799444467510286616 2.8597355910653514675467733024780402 0.0310249195844277429347784399842409 1.0315163842274485172248604923266552 GT 1 -1464432099581929938887189945333463641.5970676534205816160941228359232431 0.2405774448757226933886780100496264 0.0050013082018763936070487612250026 1.0050138566001637698981948136702689 GT 1 -14.2425677834555860823161608957770589 0.2731375013441872301686262723610888 0.0369254166558534905741663355778233 1.0376244212275269941126191807851045 GT 1 -146308864654912858945684632217320767547.5538454164352750359232879483516951 0.0082349347385377905261250421520330 0.0346089912678061466543785706379184 1.0352220693145559640798178154856235 GT 1 -10042514018059965935405947446515879377415287.9030389840916739193161539957533614 0.6652889123430459263702830270170949 0.0719597318239968218445432279497661 1.0746801547063228722849582405423046 GT 1 -553073654832833147975656756170292642358.3420211587433008226499031750800139 0.2709486683900533441193482747833272 0.0844351540989359350365888429954916 1.0882140862442857677740760285729454 GT 1 -9996911897507253823.8674778037756698858725365740839039 1.2312153995646249482573227343784449 0.0697281972637529927183117529688316 1.0722784745280467621196176836757574 GT 1 -347050529775708208932829591178694658722.3710630007082621539415391356649137 0.4095666615848173958647114292100036 0.0982901044208883152369279011761580 1.1034624341779359448026087025563202 GT 1 -226409218973597310070087402831.9133170346230644494815565407906864 0.8653444611947344027106438939434635 0.0150589097281829800377508471270025 1.0151734464291905957839631288693763 GT 1 -943013832481173663706864223163642.4880335686339504160061021479862717 1.1439232583335765952127697728281123 0.0235923464241610135290656308003851 1.0238751019280569420634044700382071 GT 1 -286082667905.7189598279859536842359535913837420 0.9210223449382770380664209776731275 0.0048388141452000421687052340295733 1.0048505591094826924414348004482015 GT 1 -47937240805495287793934153378696.2977888508025922998327319539825794 0.1277785719559645429457226986766558 0.0401629814416660942751128080715276 1.0409917812682781587944384511006909 GT 1 -117072552549319119099309056.0654759073705357373181460232498922 2.0217070970142285041088414117993581 0.0984261532186692835315125091188078 1.1036133242401521242918195796263083 GT 1 -71651370989.2705673570465185580853525049335387 0.2090752165110234920063366427391877 0.0315694767222740752861430127345263 1.0320785351277544316878911142719117 GT 1 -226710024274.0417100966788849305542252929623168 0.2786707278614363838167790564596924 0.0858308214515056401245714057039546 1.0897396277761102401731459391199778 GT 1 -18.8608841685313102040742418984398379 0.3720643781175186422129200704867056 0.0660315301676798400483324946983266 1.0683125995326229332008318041299470 GT 1 -2221579066918288849658752.7599201765276486347320516743923398 1.3946763592378930949110614065110134 0.0371174694692437327237067245838320 1.0378238574586281282019917908174880 GT 1 -133662362007277651506.1372252674137294686309569602015695 0.6640503107168482535455587881297494 0.0239867344019586257226909195055557 1.0242791008601403597054955188945945 GT 1 -972723704730191469655610.2735318015480984698644740247757091 0.1289444381660819617888999123293716 0.0458811471920592078563120341169804 1.0469670316376272907689696475620734 GT 1 -1115.8556307477484221521710933098392690 0.2217008928798241314577770120555889 0.0652945831749224856247587433880086 1.0675238615551467245171227084544099 GT 1 -140172023950923.6047019753126272530516690433631484 0.6477359786063079985539212391111386 0.0960796772928613240538285979733359 1.1010140610726929824379292017490145 GT 1 -21589177648.2686847026092914721486842657453543 0.2470696030277829671767774108352402 0.0309502118584323470574793617005613 1.0314392874602764628460834239222235 GT 1 -1511442595427602792178947809368.1620912500578006319563880137582948 0.3921265780096588472810322679625738 0.0500560209813861553198377754378799 1.0513522655804078375281501846613120 GT 1 -541416023060496586002320971.0664872674141855168334872729333511 0.3992212704304283302084809644588368 0.0878717755594382476523159914433292 1.0919747018163337674645788311964825 GT 1 -10129.1936127488957071479672476511822751 0.7776358409025640318847007284603429 0.0378276324369536387126441637200681 1.0385616681056166798509469995334005 GT 1 -1534082709152103831821139720470276.6994451848816724234519002532939619 0.8208484605552800026471274256665969 0.0155562325898376943506948560719962 1.0156785004518070643604003575884448 GT 1 -23267855592331524.5590643120882406716191211710850292 1.4451767518540148740080220442730225 0.0444145171867257350977967604196130 1.0454310553439999664665340418341128 GT 1 -1656772199849611938440540166.3371796177201336882087793515287818 1.1464124457697063864211027362595845 0.0790792496100091405714970131110266 1.0823812937798315516562473903860049 GT 1 -102212559487568699927420661639.0681826294137034341483422930486830 0.4306809285324367306539936253276784 0.0562492050777633070504743010847565 1.0578931361175495746562272651699489 GT 1 -783014430168691495010841.9505482122339969365981690716241682 0.7743320629085248476402115213875318 0.0941622943627980704505045792111919 1.0988951218361336291681790707702469 GT 1 -1441746899373054945181042134594.4056909686065422518754830264992063 1.4508134022947387705904480437187030 0.0252999139224932633460174781906991 1.0256254593271814873030423112048430 GT 1 -5.3515403455366187542898129397257375 0.1970610437176228996250300335620933 0.0960950081018664691843913905803524 1.1010310215709022466706343322595449 GT 1 -24168189433472116544986321344966436907614.6167891865682911614280600121835350 0.0821417920635497421881480212211910 0.0958558151391485439426027941985224 1.1007664347806888240705398390155428 GT 1 -456169660937612272598.9520131094087812657691863379671007 0.7616507520800514936344673733680218 0.0095738201962525488121547090196137 1.0096199438351850773415929463337725 GT 1 -217502012769384166060232881278749354255823.7365666266544539703822128941633148 1.1401318398240134273511721941178092 0.0086063349402079940389742351653699 1.0086435833093692813366554347571201 GT 1 -5969672556196907031253807674160179115589635.0148304659447365427045859915314389 0.0214840632944268134896739533430311 0.0758980351378321650970114568722709 1.0789328618463081462471008727023199 GT 1 -2475600136213072.5401317403547305993909751557477432 0.4340311057485410959338362202457349 0.0836355033489236859942923908080012 1.0873410713498506232865798837768090 GT 1 -1691534651576519402975220101253971847597.4031418319955894661091582134492654 0.9523284788181090835323681488513071 0.0716393429517407287367271170499817 1.0743349826359109633975381472865070 GT 1 -9574713122647044713.3117062834955274661286575961345040 1.0821271734603501367435340218074730 0.0551064885869720777399601613248602 1.0566830441733965933679965546819398 GT 1 -10226766318509888901606.1958382975736901326088013923353848 0.4292449215970369061728791072824616 0.0623346149327426353612455464959589 1.0643621259577078595368181907074431 GT 1 -7280418714352628652244104762757052066231.6276543508605093286339375438957067 0.0120205902567507008658319211341046 0.0320301576568605445302046445328062 1.0325543467950695742379470525171519 GT 1 -962.3400273361992233134105456099112788 0.3160170182810956346954549387948029 0.0911666882834213515651854182269270 1.0955935770693000514381499070514025 GT 1 -145.3806491970775698831349952800344241 1.2885519831707481153970849026370260 0.0250793706590586465443201301538855 1.0253992171020848993191668837612674 GT 1 -33327214191517998668386399840.9021682637048222136010177696613043 0.7760968430079293022963091041078015 0.0216737759630533044014058156134865 1.0219121021569263865213985416701555 GT 1 -2344106347258251884163334145905206.4085402944818191213277252925055095 1.9844230614282885000615202518364568 0.0783014846789944199487806428766876 1.0815370987888439705587785783661356 GT 1 -710406746329.8153501147470960400337071473679486 1.3760906474103752683727305988780348 0.0270704249738489473677935906998180 1.0274435786282224425376683796011138 GT 1 -112008871998613907070044632381505.5519008365640721274160437874602983 0.1878683423303512375103767988462392 0.0946191788687547355495554044747408 1.0993996269622627874801672140607436 GT 1 -91829084149686685917740794293.8523583496548605349884683003909334 0.2563885021296986842753104785755412 0.0742670500341214616237658644250747 1.0771694768942029395032297836829113 GT 1 -30503873844.6260829114691976731993904467599065 0.9246161525146981197779816448997947 0.0477515154742452315485571550031368 1.0489292650914741894514633134340568 GT 1 -2074.0979684330678299830927248380139800 0.9028899872507955298702008231856770 0.0990041466533077419528920291807686 1.1042546236633105680539595809944949 GT 1 -65872159217215353477877462.1417184578690894189507297753463788 1.7017090469623384380239311659467919 0.0334609778065192954382776561373709 1.0340336064012669294042796597307677 GT 1 -139094.6273741660477116444898974777130819 0.3602928827134291109806488858539971 0.0105245228070599903379542815297852 1.0105802972754840205047700154163612 GT 1 -484352823097.1803131521877298687587402028431768 4.5935214969214256458744856638797389 0.0584679376499906541354401704553329 1.0602468769241360688284664830799285 LT 1 -174183134195386703497107.4549224784536638906530576181586892 0.7535863874886011026724618986627768 0.0376654697370925224336416785675542 1.0383931442095183132491230387042853 GT 1 -779500347595.6288211201761442058651891895946802 0.9284520625639434862060080107399655 0.0346278317740695913162666993484179 1.0352415854380131407070685274989138 GT 1 -2676465681422096.9084467353416544862951796914973474 1.2697503409568190627244011468639091 0.0742113800159500778030837028798380 1.0771093425494654215825402164918539 GT 1 -321.3739194519000177403984562313233298 0.2585262277805538405103575405144958 0.0332117424854452439981480661807607 1.0337757759500332593741764409623380 GT 1 -121197587797920934948107757.1432816181969715516611933076478862 0.7047284068732604459510055324259724 0.0891170050278203159868980310996033 1.0933408257861543805268511461330089 GT 1 -74949543124989219485080.3311288931604606719367176845520229 0.7194786702619064711585634423219697 0.0877543728486438575215049655249504 1.0918459971532472952614755327349030 GT 1 -87172376345462678626.5402491053340850728543590320087880 0.4884646626741741154451107836265892 0.0147516250783920941386006191338926 1.0148615123155317773066354551813718 GT 1 -1779364605590089786.1908324833153813582650343490174862 0.1651595821621167604980414241705257 0.0898483843460844140838131274459686 1.0941440827405488856304687867085762 GT 1 -127316287470368647601049305836653.2892485547597169042833048968703266 0.6065468096114074963958545302134041 0.0870099348994760123060034422136890 1.0910302800449234566989574220355748 GT 1 -176933.2168043073568819296465314474202668 4.1389670535638288423011347200374749 0.0962067364360363035250396334332655 1.1011546354915048802830775854799792 LT 1 -617339674.0698535995881871698418806745454906 1.4723914160729620306265519345078723 0.0977371695104297637837442375497246 1.1028494150121980341283223047213682 GT 1 -290794741760438285385378304722542817.6398733703257633660329346086950696 1.1260493871177526513093762655822259 0.0714706233770872570043985865494541 1.0741532598929823383772021628931321 GT 1 -67172117958740992.1191237520081699088588532771352173 1.1451053062712352377090665151235208 0.0890715223195148917132961470196903 1.0932908944853610571481744732454809 GT 1 -72541031344339782954606236634213038138107.4417710635669499381825699975735770 0.2957868228221385716913536474372594 0.0493450046856509098586276014480849 1.0506040632099902728767242970062459 GT 1 -942132537776961879268789588702.5598460489706444670727831781730123 0.8276985832943173414263728617173402 0.0872230091397554560540223527028385 1.0912636879602992351044635207006702 GT 1 -1088147425161164944073305715996895760092066.4708537312166230958140249718707260 0.5031900304035569445012555883973387 0.0369208821199005240790054604352575 1.0376197128431959900375169592825596 GT 1 -52141382128922953415169726.7905579061263554303813541043630641 0.3360483122709534618110738652667386 0.0491217925963320214063814219213455 1.0503692925627829881004870030865953 GT 1 -33424299046035197.1822150629805623224386286234787843 0.1731871437473674218007945242189590 0.0883401900585435913371414623893572 1.0924883739104306887142684279571034 GT 1 -67079.1599926604176806141028861234810315 3.7213262825835073536925583685546297 0.0068693315768028834360784139234999 1.0068930340440624004307795899930076 GT 1 -16904946359857562362237155954921780.2855837454980130611096680669352003 0.2548271655944089820840619528485813 0.0500085528118025584624739449859595 1.0513022973878695859799514555274305 GT 1 -91132.7359929360924502668567404195187666 3.7773626057835878136124709449270313 0.0831752718834003496920478927140325 1.0868389611814353368695244300926853 LT 1 -288677873508069075735276186105084814.9596913432433110458097656393228667 0.9316085553370633257241345331620366 0.0503201916119761698322899058262823 1.0516303950016587590930914349380158 GT 1 -46043799746279.5060268083434525954910840273798344 0.1480903231732949512700486642106882 0.0830862967737784095481810711370939 1.0867419188681250250136955238534004 GT 1 -711289472098025677711294441497406360402828.5986585442202838245063928440571534 0.0492082148916653240087738031445959 0.0369181125750978181714315774808879 1.0376168371284503587217086167937386 GT 1 -4264703811304410506244127874.1932650349086599580128850543395062 0.9269573678123625303987500138380760 0.0417046258929742267168884570927008 1.0425992248307293046956132846846167 GT 1 -349143362328491246.8466831351876820314261958917766109 0.2855808946915918042350708022746396 0.0814723693991225035170666903656732 1.0849832924703538866559750166609023 GT 1 -2741208563539406906640385393490.0861601660839561479240233695618388 1.7312118350307829152858745454634133 0.0850790486470293090070100506700098 1.0889176094025828590207196475613263 GT 1 -914109768954786782682798463895886003458.1595917851179323001901688615244360 1.2755112571827659206295717405991670 0.0887619421903494560592957665992639 1.0929511010294782450917190726619863 GT 1 -7000019639733309374596671735863.6265476151682866808052859904174202 1.5286565017056344707472225530559923 0.0248364580551337699389557203355235 1.0251500867222192003719097007016576 GT 1 -650262288887341.3705578140986762746629437883323518 1.1746952770966969215229577372278005 0.0381426335696565565524282692281658 1.0388891070531048345340200340317942 GT 1 -1167.5711582248777427661795557169383271 0.1036871284827722852183601891721646 0.0633156502835629773235208957404781 1.0654089267998332797661406581580051 GT 1 -1667468238366104338843455588950994.3668652167794332410602590915834434 0.6131541864746724338107638826375061 0.0139563050188605172505046914117865 1.0140546099647066311706243998577930 GT 1 -331488123470795845140090210866492715.1204999713720767638636304941371774 0.4682738686694610359706225107507747 0.0015561363054550856464055571714834 1.0015573483431160608132806211723941 GT 1 -394451206531109400372289907323472.8981977630949254715246796162081399 0.6424588118316815171612496763195383 0.0894223266855516647150785013149007 1.0936760750351850457946337215529686 GT 1 -76642502279896009785897907.4187649220786560651470811993244178 0.9669094556128293610517631876911654 0.0899424321294521764649247696170109 1.0942474200759526655912245300967124 GT 1 -321486736740360239569098754856.2476619607513230214774235175520535 0.5960320051122580618869451395185496 0.0783469975297210784268478063884181 1.0815864793332454427434811635283503 GT 1 -2215150296.8845096455464839531335465490597781 1.6647228887293899759462904036802442 0.0628490367569466977649976559822220 1.0649108963346863688350144329424325 GT 1 -6638852385259365979063915.2549643446030196589700882469003597 1.9463963143114510782742236296831564 0.0260045732503874431090247254643027 1.0263486706795649233271075069302113 GT 1 -3.5924598753177101403808003623816792 0.5064511964258861559784499864925167 0.0855746609560579963890904503198424 1.0894594557700598792406954472598676 GT 1 -5.9930654102855504446761040470615825 0.6599899632083069431054003617575620 0.0779464237832801581702184143429113 1.0811519484188641297854720756620782 GT 1 -20145688964678999323835.4185585399218083580943834114803241 0.3767541892097132239694356560569391 0.0519306098541071984559448720661503 1.0533275830494108245398016895479198 GT 1 -79675488993.5959502467119952876546909726549335 0.5961744920056359757654950511620660 0.0489489698394042113225708389325904 1.0501875584015007375000486573183599 GT 1 -425389907481484495537183150980.3745165635123184889610342110951963 0.0462366570096556688068528071807493 0.0216549990279988794102317682229877 1.0218929094230475351925755022031515 GT 1 -11590348314679991.3634142229416379822964123454590660 1.0975050083254291363626768545081155 0.0915044475724276378717635604979252 1.0959652866696472743980810195179868 GT 1 -8722612141671029215171.1216347387781857643178312343685794 0.2182704449537971847615548467535070 0.0260442228572485411761239159017767 1.0263893797145626651295640900035649 GT 1 -12559951437246868869.1964788845610362399235535804541691 0.1273870705766146676065196698867906 0.0495420402711779630716017563802477 1.0508113476700849427260580268624018 GT 1 -26105492179875839651823179.0271059500273512553267697831448609 0.7556179612542046686410179617171272 0.0361663058386912374453415378980259 1.0368365156844401053702922577232214 GT 1 -22893658502835015053.2982499487985579680119639765953830 1.6933468093554525221034300740867617 0.0015336217734005548141122548875172 1.0015347989750144434455003228333340 GT 1 -546.9493027495543009960002988151036670 0.3357321218229604913402851258883835 0.0725016391240895169370039821903844 1.0752642517518006367470596976096312 GT 1 -849097996413008331419068021.1390942541574158461122830496047983 0.0177244054064972779297759046540000 0.0507174009519028987112682051061119 1.0520487385603983250352313401530447 GT 1 -14777.1096639319764529666279150468877532 0.4553350213823688404817340476967008 0.0646248174305155787745745710503056 1.0668075653984348651037528354435811 GT 1 -246.8282239559651953623739722854422840 0.4412479112304139951697048482224286 0.0503217736093748229741496429538278 1.0516320608249208149734707778568808 GT 1 -1291640325642316696.1510767791763184062437763780060000 0.8909095329028853332428815916279585 0.0151134546330879347422801262831617 1.0152288268126638014308504723670878 GT 1 -77105622143744630369.2581489486927572652415918677322252 0.5449362138436620214830161845974872 0.0105965177537257151205601053456283 1.0106530606411806186686451313252156 GT 1 -131344752676398455022.8515452915860426001214118112282653 1.1827974948353111443833560815354557 0.0789760048848095843519412860046881 1.0822691897381010647334300921686649 GT 1 -993062316136388953434440583882109869521.3596744435861936274215147479103397 0.2937265483123814679406497406442190 0.0920855620501715538131822149772924 1.0966051361536827827104666680156290 GT 1 -20674984947913415178745.1771366907760113907198517242417320 0.3745529006124944529167876299723674 0.0380498789491387741205742302307825 1.0387926788801267822926803923269183 GT 1 -114302205717484441620070861826194790.5045780428926845239179906513298842 0.1720678348930128066094479011606791 0.0431756485063442827295400905461069 1.0441354451338296104872832538797901 GT 1 -109742.6792618521084123128846709308452690 0.5785444397136289688203485738194477 0.0777853140111070373218548512292524 1.0809772343863293314197438135126012 GT 1 -24.6764973245111927543647057102130928 1.5478873476650686269769188208666536 0.0837579373359911908165093375920729 1.0874746886684478242358088148517251 GT 1 -548043992063455891111284.2124906432236864897787634300529283 1.1143621302999805852414336393474904 0.0545854866802917516949385638922523 1.0561318092285556607607676231230491 GT 1 -103211162.4870666671102766794326816228876127 0.4071609192812158343533206392924449 0.0487152074323710991689267698221169 1.0499417948455430288145818623598237 GT 1 -238358709051246415892216838868753715382.5298988575771655573231027510486797 0.2856397403817471503910689889799590 0.0005441824000576815065008404114565 1.0005443305210389394103951879129882 GT 1 -383316219575324625.3588698086295122549914190639849063 0.6379997606915186958260729775393721 0.0679073918707638357079563627675541 1.0703231042873827044583392625665257 GT 1 -12566864396741228603.0350237232459634191034967389993582 0.3434048258500592785512953829452190 0.0408665878865819584424004540256470 1.0417250979105779753928372434243314 GT 1 -7525667977333723667.5186005857062973367486941791129132 2.5060317259265211895180346736541727 0.0901987493069083987895562532822951 1.0989969853960471678262350493134974 LT 2 -29631.3649638156297550937434440878441770 2.2747138964554000089705747914593042 0.0319764470199948887482608282375004 1.0324988604106540212029564233782404 GT 1 -122221.7116378464542809488598127740546446 1.1245458776764828410191017941188071 0.0868178105218734339350653017412048 1.0908198679352993973181773369768006 GT 1 -537316282332653454282947314804644966.9783636657243760451143960041750705 0.7011530689906251679177241679241399 0.0049913025475142678588766623518525 1.0050038007034708656965619056076778 GT 1 -5944108290467809556861299014111201.9743728690242193517725136738218399 0.0914040836620161165754840341875648 0.0046622099007671812329379268513469 1.0046731118994818753661661474831542 GT 1 -588243072083906941.7200486567607511905271347585527650 0.7625807448781591865999762378244562 0.0726481106620011664844046506781542 1.0754221852973245529499996125792301 GT 1 -9.2119372172319249411802041616073838 2.2720693933713206701734817533624602 0.0878920925179992445304283379711441 1.0919969762995613580297704547635074 GT 1 -3921550541890822740128437655835465.6649501473311202195055472293469274 0.7896915358565535751983312631395267 0.0723137348941975255617020702687495 1.0750616797512536633982612562648635 GT 1 -480.7067394283840126599121662145257242 0.2829110141758128096187373462662771 0.0269596456744934536335480141248970 1.0273297235292260552042066863536491 GT 1 -101669521628.8862534925873922465357196545759072 1.4176638849377696858307812458644762 0.0451524860388735012492171902252619 1.0462036224951108431456389058979633 GT 1 -548573003458.8063970207623656054545290318298121 0.1320727129178596559464362144602820 0.0683785973525252744010258835453546 1.0708287671617047863091398336385243 GT 1 -14111211452323994262.0107847689838764480129711695612415 0.7452285239514113473209732878270214 0.0889440824234005391337689805133204 1.0931510031705353893904034185610658 GT 1 -12784152677515257711145.0417535058032016242071971796896102 0.6160140500609999652702883822967351 0.0602933369453666039151770420028546 1.0621875129992996059406091452074418 GT 1 -3398.7763430797484554926511498628304872 0.7935341228444813593847390357352327 0.0003538717661550049216016972642513 1.0003539343935435912702972948442250 GT 1 -13594911935578051978532292.4003544391949171055023037150044502 0.6876767131288718297752979188175230 0.0547199616215258288711383736925027 1.0562740584790652698020287335232252 GT 1 -52882098274577485509.3133255295170224237587256728862791 2.9303093243730159448906796127799934 0.0770999287247354557538852901766247 1.0802343154809367202288390789465068 LT 1 -691498814612721730.7925410165831933236385756872570004 4.4554221335534351689575862214114955 0.0551341247490130120493101714754887 1.0567122925128814316678004837102898 LT 1 -6914070986960648.6052183698726570631795956275126616 0.5956643917006115110683857121623896 0.0486068038419608346395781395281088 1.0498278464095282058308296186687577 GT 1 -4049.1409448488078137086323129770538773 1.0387753513078054564079560123036275 0.0828595276715140555483545513482827 1.0864946316217149084082195834908179 GT 1 -384935.8081789701117278323167128047879530 0.0940873855308194069791826688552090 0.0165003626565063255290586043152274 1.0166380098938196193300199397185312 GT 1 -6982122043281388268674460312997315605.3551204313579024086643543119552717 0.2641931219805283863512681106838819 0.0173473219555390490101910915410075 1.0174995498109380322940676654105168 GT 1 -90246370155812685574455212820.4968623287398804317977016267769532 1.2454328031272085332183273016368830 0.0882874876486965669135480627348109 1.0924305662874703584594307937048338 GT 1 -4108712877457616505739626816392368963.9948981242054738230595448505494462 0.0357171545412659012238324033235510 0.0635407153201834021284085136016933 1.0656492340924195714866778095812400 GT 1 -98889.1527207332928005743539903071558911 0.2167874722608695738381128492974710 0.0677597387977192511302836567324503 1.0701647065293619022968016568299189 GT 1 -1911347975965617622844255.6992098832175853379254997757838605 1.2046863874627757858021319070033659 0.0457030197744621936679841973732353 1.0467803559508812265549722551962963 GT 1 -5.9249375667304272168885708158170278 2.0222787798117948190497602572745143 0.0632908137232040500291686959778614 1.0653824117511975273303885443382455 GT 1 -2.6245980198133786977000178024270455 0.6952623003786347635694585134612292 0.0717413772245139854237311603130552 1.0744448966866641872506035191374622 GT 1 -291927224789087860931709553154153797363.2550311964471327067858419811022955 0.0659567430788098488408976020983796 0.0719128286174365956284209860373029 1.0746296159280357906696970445143537 GT 1 -106304333729597242424240273423668.7471715417568230779877593955773863 0.7501150246347575285240480853030883 0.0525290830968909302797437206315559 1.0539590370580057869795494826139713 GT 1 -9766771575273090089287406998.7469918396623336998310442761127767 0.3817302710812846031398960771484185 0.0530202240556331949443798083390466 1.0544775419434589349773906368192389 GT 1 -210125676920702747.2507814205547064694561030406218446 1.5961037092337010630797968534454431 0.0140457161026068136090740439495930 1.0141452906700270422552563667516514 GT 1 -288934341124949261695415424438001422890403.0641281470037245617094578227435069 0.4195949946666341553229484393148463 0.0025097857682616942301389521593200 1.0025129405602364651791859661920069 GT 1 -95049.7469493182172564146716897637323961 0.0274375574107706905547497273220364 0.0714506300615484832030463468894030 1.0741317278867854373375677704164476 GT 1 -199922008430734756.4612433331671496806346415733437878 0.6258752157052181199706387913446945 0.0277741624786310013441970775796695 1.0281671583802021603430510718118341 GT 1 -20688086305734043824355405.9575012846029727421741203944982688 2.6213526622532378420816424022679377 0.0226125930355449969888870330855232 1.0228721784479768219806462904453273 GT 1 -17.6271349328425790424593447281799721 0.0907949212246620976565598120307254 0.0375461805839846858523715592682395 1.0382691937987830629584487175388996 GT 1 -5581920074972076779626892633197117682294.7526043861424022209690138538167310 0.4089834295383289045981054139650012 0.0703753357452161275110447458327534 1.0729743611207292664976978814035475 GT 1 -4214632766591072.7176396097997366791429780138670505 1.2052920634988635020607696135501251 0.0963782334222289059957454406315950 1.1013444059469313001787526442988646 GT 1 -74549557842333693721306.5531841619723412956933415188559557 2.4096210511810966502760779861291295 0.0733471580983239825393019084793478 1.0761762798879915509508026715547368 GT 1 -29382809474.3996665855805554697232740717955539 0.1722359963764914033266298242895543 0.0230478468265095056570000517540129 1.0233176013489286291693952872522121 GT 1 -19225124350023909969086.9961141669081023685259728245150534 2.1070120283587721180292950458631434 0.0072857270701546066947558737917840 1.0073123976013907906908685966852451 GT 1 -27781127521.3340855806408698546907450802499857 0.1242315030552550415177797508851112 0.0472301988275828493415214129357923 1.0483819562665779931417623672509869 GT 1 -64211467627797216491998324714332888.3384183890709230967869858655318807 0.0207743977219140104450061491253748 0.0635913572757640258934568478640352 1.0657033136725671795791770619689967 GT 1 -1889829016804570.4215643312633714765690623050913447 0.1329996547677450803435166798399228 0.0286145376525807363261467026365380 1.0290319148532439770614254413108356 GT 1 -6.7184157001780925659764184642297122 0.3633479788798838503035674126313881 0.0897510576411739304183564184738605 1.0940371538511076895305529075118550 GT 1 -9854561562957654159116033.8153046610422173804336210566167526 2.8724583350140763210394909207712758 0.0048753941956423464404899031217278 1.0048873177002335504067543324450375 GT 1 -76726087620122954440633326064059.7587467108574460289892022667403307 0.4320326576110972436099847341819701 0.0441491830143991475405609534049615 1.0451534272859173847995499722144131 GT 1 -3928759007369088547257363801624934961768803.0518329440496798520239289398182134 0.4888818566824916202355566653525775 0.0163568851407177675849591776138308 1.0164921358682743778163588938271932 GT 1 -8242697821277139383.9139307024577446070437521652099645 0.1630070896869638906444048294130016 0.0957164768057986372427970663024885 1.1006123359101561484972022110309046 GT 1 -43226095197732858297047886843785981544937.6460265632605507658117896951943659 0.0182768000859977509918111130529128 0.0355129277302518546120964463134312 1.0361588502826896335352136864485055 GT 1 -52672797220601663256274962668.2907224629135012327484106538061111 1.8196569897979993127491551707303246 0.0071306464980002931511516531365315 1.0071561910630156381519028829089911 GT 1 -23747.0627174243721408286003802034944243 0.3484200578000722229934701631865070 0.0674075930723059770361661075646151 1.0697870364728285374639317687004370 GT 1 -3069836416342294952280855298949912452.7374163435686674928566211321339567 1.2576529632475265174747026711690415 0.0534110412997887867560221932671354 1.0548903257442838280691334907663059 GT 1 -64499555107649.1567191288271330319243666911245482 0.2989218507763096117245887063012602 0.0503226434400351466854923312476128 1.0516329767467925610918888584363744 GT 1 -15233.1985341634953892645248010815583306 0.0517193883636500305953245888445873 0.0898529277408298641958652991669140 1.0941490746627818993825040953962032 GT 1 -94026706.8402965777074630863294043199535695 1.0173463879374122172336487360618067 0.0089533250731880901692540179076281 1.0089936469451061529730479131278509 GT 1 -429131972473294076898180006842014080064.4017547652344353016384713123951414 1.2753624624301852484669035832349760 0.0511441146037025673355836280562239 1.0524983513389021843174378115197310 GT 1 -4923397636306838953067058487972811.6041744636920307730185098492564599 2.2514417544921331506088492107129400 0.0245400775876204274497569336763345 1.0248462039122256593808016010492877 GT 1 -275117818253193580410223493315372.7816503490525050596738595582912655 0.3556700327666716344745134171326839 0.0900262741791989600341094861855572 1.0943395526124609187030645363609077 GT 1 -1946243967779.8530663052263650598224203138538936 0.0440266362200163604370128303216660 0.0232901592857232915146343296258273 1.0235656611066701587223688871007313 GT 1 -381874936892201697600755.2457107674534401804159940761636504 2.6830010355061776202118737156720757 0.0999873129801315732901888791448765 1.1053464190684409878985259789189686 LT 1 -5627373282936044629.4605046345733849553437735255209455 1.6849935796124426410386740895318314 0.0440548990243106829690777109394800 1.0450547933373048722123972817501906 GT 1 -3584362660439879214601992008716241529886.4307232378927727939365221448016790 2.2784254472127507627890096580395399 0.0777841663858051467492657824567152 1.0809759899639564705717354707221252 GT 1 -5027375191339423158638369281087.6876938711025462514792279626694403 4.5327799957865696933591872300997493 0.0156217310571562383894877517134391 1.0157450361428277064655866509284012 LT 1 -482961773950765451509090098900023524.6071514440452380781361214360907704 0.2516563680944817444132988873516259 0.0058721655175559222657933548914246 1.0058894744754619668098535393683412 GT 1 -8238561596395.2708079793143308771241843579460619 1.0502984358479988732152882100170730 0.0226258428897788800242838181784178 1.0228857349394462642170324349243008 GT 1 -4055046936376737037077.4672843718716284302609710559451670 0.8019424717059684814024698026266993 0.0426729505746209508875896952091000 1.0436102014743792280100655108130776 GT 1 -44680724353098918.2046678370716537224391876913972880 0.6390597532420662706459259053210831 0.0680804641195042660970921127578245 1.0705088029157891494981007822150204 GT 1 -135.4828162516317605317850703765577732 0.1991520277734937107503184249987373 0.0066273058678811031493752216395469 1.0066493639706244391523362213557732 GT 1 -2650576837270210641887697189183744446.5922233635754442686947442042331911 0.4595827711152032868497195878949472 0.0504904429716324688119917485290733 1.0518096834530502542102952235698171 GT 1 -5811864893521192077833478886020955836785468.5446901462562941625878026317329851 0.6969720589676153893378872031417849 0.0609474760224531021544624485392250 1.0628838652599135323231803778790428 GT 1 -2799984787858468264356683488433520851864112.1496818786338725290610173058433548 1.9928063077489533778896005618888178 0.0130727000393978114775770337191140 1.0131588998495511846684780807597596 GT 1 -161311501827381632676057.6446180441870328884492697535141152 1.0730588812425389436457226966781740 0.0898815548964651966350972275278875 1.0941805284868143066103549553372059 GT 1 -391.2512511392652809614649465782069538 0.0396464218281639985104268202817711 0.0827412367880765703170063516617921 1.0863656620045131222803713091495333 GT 1 -418.3244481057486496902922324523942807 0.1110238910163098836103357001195652 0.0346197511827603375228114944953720 1.0352332150314939289819399803311854 GT 1 -319385217109914511143303333015072167445417.4979655352693561193207947104436776 0.1062558641500551324684467115177738 0.0556050712565362580128084755415141 1.0572108436036383369854530441341181 GT 1 -19205538889430.0726198799097925925273782513722396 0.3760061572025796638886334482041995 0.0742412027066396905491984492864396 1.0771415563511902990570854128125042 GT 1 -98792296473758.1023691110821764578565921230572110 0.9071866413458412881774289610409710 0.0526916030196762642291384606846188 1.0541305820205173217848810985303476 GT 1 -4616969320467600654802324625454.0843202046055323987584176158481364 0.5654654222189341557145566663907349 0.0964121236310219025569915962552140 1.1013819115113014741924830738473431 GT 1 -280550886.3032231768906515154669683966050559 0.2141245675249558993131383384200920 0.0428951106584312770409055167239141 1.0438422912972753601790432110372088 GT 1 -439051413214055.8919858702782592215604477977706894 3.8165414722133848096963101483885719 0.0521849778118999975965197413431748 1.0535959200404892617260582441602808 LT 1 -392.8885198286471513179421897697497770 0.1680693056174420102236937217274806 0.0928368754951720555511122332336747 1.0974329944264651248484114981017920 GT 1 -34647350623276074913976058.5046697062669909423160967064472418 1.5013856085900448828133633489963505 0.0853057774221432452443842611877524 1.0891654525332095173746277265223681 GT 1 -14271846134543485829451835545098691989724.7033928124923250504489885302715589 0.9985523813850790061829000723258290 0.0681532607057096771189392182233179 1.0705869206360334472292520557475768 GT 1 -3065913989342908.9972201760985881472363506834701200 0.0196154597917519985359928426373000 0.0947705425175419338160017154786302 1.0995668232395927706219534658176729 GT 1 -228157192124064659972764645829549.9917588471247598958125557590598505 0.2928090344240824862767536776551031 0.0524328274597720341909128835236702 1.0538574500368921900659087689697517 GT 1 -96762817.7781010458224400978785887351710179 0.5767479173601450917817017994649528 0.0766314209032507115180228599692355 1.0797267968904578404906095847409729 GT 1 -257915.9113352731942987337027051846826941 1.3327509072941629609695671485727556 0.0144252760446793388451112599489785 1.0145303318692689256315950379798241 GT 1 -3549109415209457709357736058567767852535.9015196543643875487272456585101980 1.3145371821945161070449242947697583 0.0387430133313307726391257604769388 1.0395134898727866321679730253815748 GT 1 -31181909278201037632.4318098817730453659771421122920186 0.4710317796637522873572820290055482 0.0952309264664456921730799630542330 1.1000755352091807362021233174369278 GT 1 -3007302194039803879.8436779999800225404740634198519393 1.4221781521013224378886800199439728 0.0667643838953643165387984854695162 1.0690975739988156315825440620747798 GT 1 -64779135010344265775361396106.9709929862574059718779021343383616 0.9685640803240655172409473149505440 0.0631387551905249503751190133332672 1.0652200922242771507052303985177794 GT 1 -28938507876574144836228677788.0052862725386589167036482278775811 0.1153174000730783115748287844262754 0.0262009053656276195797175778187137 1.0265502649583758015107828910625769 GT 1 -1388442362125597882.1588339799762538197586073951327143 1.1702270813629171922488823936696811 0.0889316415859098730404637814041499 1.0931373478588151223153925375285743 GT 1 -219446.1263106804579161948771275977627015 1.2606306026571587986825035143940578 0.0568719470628660986796854915087778 1.0585532124212508346775422378644364 GT 1 -31305816562738104.6352192515792994624268241614205501 2.1431223522235559349285045571559418 0.0925911028912917910600130481191437 1.0971621067433577624523905264030460 GT 1 -234329632865.9410450631647036970442658606356858 1.7913643890158691366559515211136816 0.0932168201484288063452030038604655 1.0978519094273123243557178221361119 GT 1 -44416473554550706183674.6965343966764046278137696224288902 1.0457160621502933240797794494529126 0.0098226713577580502861061634026600 1.0098712320528962993446659397532099 GT 1 -5663014569170056403.1044795420404744411667956367294016 1.0146904604652719301520857121562453 0.0966635526072935806103243864223188 1.1016602064842430898607719039194102 GT 1 -1452202351000784125676369604889590313.6997940346943295363128450990386349 0.0587377386207461842755576183564319 0.0365807158143766463520692697270320 1.0372665681858276380772722510221324 GT 1 -25704945989799032.7334881663508258198563763336690281 2.2728377265717042859360221050754414 0.0543084765702521534703738190343410 1.0558388482769879055594783738130400 GT 1 -379035153711002369611437533.9880810582515372746215854412209635 0.6177695192525399019979469463126860 0.0168870167665145993966642890268256 1.0170312282744449761048631344616139 GT 1 -1092331922.1765915170111108113831236882918683 0.5165108403661036499610004965062389 0.0457889916650313952838335616102985 1.0468704492500894707754096267162450 GT 1 -47256339704738829.1975571300524704933691717527643169 1.5886305237049421011070251919746304 0.0260219060245565806495390746610193 1.0263664663774891369209085454440136 GT 1 -1.5997374132240776834912087300209082 0.2199844424724706350604662340743029 0.0071668288769827561116016757524066 1.0071926339627327547775810031024249 GT 1 -21731803125586923517842395954452236.3965059768619108231110799083914445 0.6539389840497170162089581671580018 0.0922345609496925480235794144042300 1.0967692607901265527485460939158650 GT 1 -424409328813231806.0658722034899222380511118032666713 0.0501248712777826557184190670397638 0.0778415690456192891874781727703663 1.0810382361803946553985171460584748 GT 1 -817.4936953236641306402401356223882625 0.3727688988812840625455189828332818 0.0622876110526455871437792208508711 1.0643119985852305056245498695693367 GT 1 -5390732157140234390844116307952.1149978309532920527694511037226606 0.7359208185924380483057797717823742 0.0958785878180875540994728009252214 1.1007916220971731463902110345957696 GT 1 -1411044502477962863947930.2581076042914359545315037355528948 0.6544628969100033031740141016101563 0.0046908886677372866666990994868266 1.0047019254142759519672402431785510 GT 1 -27186890538265442892.1373914337093458322147044550820999 1.0482873422533820948785637680143601 0.0945436538189532019947019095252508 1.0993162124496730969340230664373945 GT 1 -534437647863296864.8511210257622446876847630386381390 1.2524688894501425678143321116065550 0.0806224703590707446079759051405672 1.0840584361513034657079415270695943 GT 1 -1966840792087028416.2780146513687927881788018770663248 0.1027777875298297479078431403135163 0.0744216563651850615855401806409735 1.0773365004865695361647518137544479 GT 1 -10516536428499495786.1773524607575939733632192289929182 0.9697105879276076816597829283654537 0.0736162184046421205384457529446004 1.0764666792301278450424024292951568 GT 1 -11879.4279619755457155845714249488997490 0.9515706391889515302117243752371496 0.0468680194069630229400864444845747 1.0480018953122889843147596335293739 GT 1 -4975483303245523342383729021486166415142161.9259125971680396672642084694761324 3.6594929828441510195958918069092483 0.0393989528446970648584480126116921 1.0401960996465492341180591155264642 LT 1 -2653293535.0319469548514483565242712964725630 3.4892337361334547449557716335076235 0.0949035820065719997413477317408038 1.0997138017378530290920926732498727 LT 1 -449404138505398.9587106694471941168702272909538463 0.2279368257298886157200981000324898 0.0934842508370995998850651716106243 1.0981468753442172923639465251011828 GT 1 -27908398940050591788912.5243660703131637679878907907136227 0.3943431484741847746879143479281667 0.0404762211611977065495477126859107 1.0413181813101435211576289409699590 GT 1 -58974627884781805364977208.9523710790895014074623476625633289 0.3895894331234141220731503040146633 0.0994924528649409705714703106068547 1.1047967333517645396119247394727453 GT 1 -268839667620769792663554281243.1431307749608301359957443973252335 0.0048135787524074678053316333729602 0.0377250166570859840436752360680279 1.0384550236916589779341826844112789 GT 1 -72587636611590092.5300205175859253820062135947289769 0.4102227254276439644760076741028261 0.0079260587977379253386757906777641 1.0079576369727655331900967568756781 GT 1 -37271388265431615891935049803601.6942985658254232626287852959258028 1.8769459245969018490074257489742689 0.0995464313278859952064379916896034 1.1048566774143957812401865032425133 GT 1 -418259022529820943621478197736727333846.0672364451306455496898903685197162 0.8367141366901197855574731986296957 0.0616595850194373798737435984005499 1.0636424800563778481341466440441519 GT 1 -1907303685468591719281682930369451337160.1874081081176766285894119762800586 0.2609772050592588093367727396016445 0.0414541740897817704188487409175337 1.0423379076129906484414816320884740 GT 1 -891796317700445538008500179166125.1466522246608158572163897163506458 1.6055814837915628097622402347442788 0.0613228854939386142315257689702089 1.0632837199235385929761133802849935 GT 1 -269920643827687954.8248052058398268081390297394528409 0.1062165587172215341537489030068053 0.0271368249328287181776978702386968 1.0275118284035413819494826986792635 GT 1 -8499048503905206277858491543488349908.5759213282078613105121658909910287 0.3727456638557210217635589601473264 0.0577098862871905973183084655873603 1.0594420754801902903358828853266824 GT 1 -18743827060472120868286.6719804930406986692138210505953422 2.2415067289746797681675821384664648 0.0550032500010409508537037398834079 1.0565737906488488924328018585276099 GT 1 -190455606533265953602007875941281114579092.9542539743813964201014875801452035 0.1503240523107503073343528574577732 0.0298948059879502098822507638975981 1.0303507659296036497475812592576081 GT 1 -37000417708.5451657504246601861380639797488931 0.0648610655737402915562003305275434 0.0321683561691321245186225381266543 1.0326971284940127899086078818642288 GT 1 -13588910474043249741894779832495589.1551453488007292353405547476702619 0.9464352568865545214395109553661155 0.0351786677071551054101752669935086 1.0358123426681986130503139302236812 GT 1 -552727869838632372076760778.9661940743967463172236177840961729 0.1947279743494346946442296193926239 0.0493798076549703624478368078050747 1.0506406733435987433318308191001299 GT 1 -27446869500651109705144592671514928.5246748130578901430699327472730135 0.2362986323651948269419646560911908 0.0567152134275721156772794495182863 1.0583870413346551918451337916040924 GT 1 -10376338761687559050162274047189563.7559531951972204452203818896037686 0.4471136174668308149889719214833572 0.0306691704167997194089617282820015 1.0311493119611076693310512685441680 GT 1 -386024446.3749186736254641905393867543358502 0.8921965917401729340494331584243243 0.0848462776230235422824232743435236 1.0886632252196832725783181301352999 GT 1 -16747500429829450619070110514768618673.3019120503680432898955346639379192 0.5470998487603706402952989665474410 0.0807258036422478315858931956119520 1.0841708373002809898669843343967224 GT 1 -10653223693322567584767972845261868.3558853517638984595752386947402787 0.9362068305745012149686235575554512 0.0395928511779564419659720955345270 1.0403979710746086108952335020881698 GT 1 -303679422902956811173315552301.9375714976560311030557254537898186 0.4265066051526707154682993182959613 0.0887175417123918095073177408257469 1.0929023767736201988678835628279363 GT 1 -1486325077138233.6126525952694742911983947966225534 0.4416690109108159023864203523960929 0.0904798760896239119315930033555665 1.0948381549241854134204069312472483 GT 1 -362916182386856344499790612992.3332047068840745115755709982619021 0.9630726422873984183419308109806888 0.0306295512119092502022034286913258 1.0311084400585221727264159982226963 GT 1 -338052121.0623977618782595877162321473044074 0.1367314568812578568141933672452228 0.0495960037189279869755216819918668 1.0508681255414015907960598770373162 GT 1 -978130.4946421037314541567245335175262122 0.9674784550568161489503306966378686 0.0287173310581115562402658333061848 1.0291377418897523004371624579612993 GT 1 -45345.0181162747682987835447340045233305 0.1992410280274158090754543320177295 0.0336343212501096539828092296185238 1.0342129669708495526258432595522286 GT 1 -6.2273323557473218590057025387956502 2.4051295031682476135808127958880162 0.0538145098048320819991755181042627 1.0553166507207116597853489098943998 GT 1 -167966296966240488333541.1416213616464705503724805868184028 1.3535918947394816578440644726168538 0.0374559187997441857974639766036239 1.0381754152193074660680936021130943 GT 1 -3571464823.0229275693644891628921244552025567 0.6042861428535058439787107938338990 0.0169860151719548091474526816734571 1.0171319322545358243081331847635422 GT 1 -173264.8630613617553510979633893304758261 0.7469044380087363044413063497801136 0.0165938033635880870572135457191196 1.0167330227872055570093418516102029 GT 1 -3386717244518770581627627927755102.0757127409231567458124455334243510 0.5013621661139125383548156444032496 0.0281811376253282577927973723943948 1.0285858474696703882215649606000838 GT 1 -11806351059724447631570620787889925.5590704707313812143612867097081241 2.1416079022797434651529408866657966 0.0164503966822529947555095659427888 1.0165872069212948635345093360210457 GT 1 -5854016469963289.5307092218944009590102649992875015 0.4361489620482886290296816335683931 0.0755652035157995504643238847555217 1.0785727590530190003852071891299912 GT 1 -144809971.6993324599550143095382757372595531 1.0291422984765084335617536571004446 0.0663063092781331081392598287641487 1.0686068488012961552074070928851206 GT 1 -96560867.1963287053274404774989651607540445 2.6865010387523006165828645639002009 0.0332174983850974207175332838093210 1.0337817295978374754179981580234152 GT 1 -29363160762012141129.7849818146841606981656876339105845 0.2607786555177153092320637523041614 0.0151882511230469648933786602559963 1.0153047739668178799283389776473335 GT 1 -302177046840779281.1543497613190853291533573314572430 0.5099215188121828372211775743625608 0.0010160451565766323718378920926195 1.0010165616803606999005492308562905 GT 1 -11681988385775235123109513381787.4737111479210666218703555025854896 0.3965620484201374505908192544598974 0.0311704170160164207387470491523748 1.0316665515117059957669223636682365 GT 1 -50774901653227689754800634.4304197454467961037376780417911982 1.0704391233029883485464241614446619 0.0514470908152341668248978047924052 1.0528177092073509033407196547022033 GT 1 -2521521916818425547808.6884382803900611031940668980125873 1.1924809293737925308547850914967354 0.0943157202389888977983632761195565 1.0990645107563834156280462916848065 GT 1 -181945974711917.8313014978508843118714655399108662 0.3014447388636098765767956395209758 0.0540069828294640386040058128590548 1.0555200913839963931069239717666193 GT 1 -27334.0471342613887343998810278583084359 1.0601856171540762457075311824997884 0.0501463315827399185230524270062734 1.0514473394968785530182849841736820 GT 1 -61.6764536339556578176550022109059374 0.4929267452177897449274291225488603 0.0151034117149188446230125336337424 1.0152186298341258062439949535010938 GT 1 -49.7099033941939745616726789309516029 2.1856006305969511868945520147757079 0.0291418176871696779393975197528342 1.0295748745884886471920504248081098 GT 1 -149266202682.6424365593731041328295902558154335 0.6180273231289826105285157487678199 0.0847297265427104406174288913481815 1.0885358764953048029261207078900311 GT 1 -164411716544304277784713.8172311819061297909848830096001921 0.8065440884421906405431381573345000 0.0951483798227438763244448577316695 1.0999843043296423296424920415357593 GT 1 -5349713519.3545432337540576307635645529164143 0.0971964152662969112524681378740882 0.0248087290374281124747432434839630 1.0251216518779293149587146513790447 GT 1 -15875610782090724435536.3784109410336293427863237288816493 1.2498256534014115457676774779652529 0.0072771629355512946894010332050104 1.0073037706501161771801036942788203 GT 1 -10895715.0590339189752881231310933339470856 0.3877551580388216710300916238599194 0.0564719209205748349436138360041178 1.0581291540658384267243309060306303 GT 1 -109593822977632689708413927908614311797153.2968343116573452318446981522976325 1.1413446944966722310404717111562610 0.0539523896805823436824837093531946 1.0554623831634606948207241574361274 GT 1 -217834065664886.1091793154960572134904737202222155 0.6689032290405030429921639758587740 0.0669076663998615366335237430194955 1.0692511188297778296651009069256627 GT 1 -266889817477145443326676731820089.3223507773739359820870080070760461 1.1126286429088655162632144864811745 0.0672775169578549200696916420627253 1.0696475682089323466694434282090107 GT 1 -77244760377094740188735.0898018627214463091425714988207782 0.5764226039811271279384106808002303 0.0510189783364272899958044946948744 1.0523664788192023903213902981602508 GT 1 -157522519865558997263595726971119189768.5555403888154975246833987522303324 0.3871991379475204107244075647828090 0.0036992368774940519929344066967426 1.0037060959750746546757227978184439 GT 1 -14735134851385270029787943305800993.6320918811249179300471358997571678 0.0803361745662773936205623627139392 0.0457433421054095780772233986640546 1.0468226102843702241823671580529749 GT 1 -3914625609054297.6746825837494327689499319667412750 2.9064217971071966465446830673207233 0.0604951256182716873266195077334488 1.0643492936371411045198530092527915 LT 2 -23352.2551588702327014449826714167350344 0.6175614473229821747627934803450508 0.0831571354481693993772198264567377 1.0868191795860098008514740868311223 GT 1 -2838079032727843323362115713491.6041938994720043718994802337287673 0.1377930920503071803231276097161313 0.0690233397163398806771892466291962 1.0715210715320328476656902005450005 GT 1 -189930125200913527963707507417212839.9074550077674871908560301906285264 1.4715901890714546950275192498933677 0.0786992519186105844984148685385269 1.0819687508830048281505540535834660 GT 1 -55570439782595529824499378583971.7267001016761812596263760767993465 0.6126156554744298873308175646126882 0.0515402426789705607517541658020446 1.0529159182129690323871359444736445 GT 1 -44442407912135.4450258035131516400237308093027759 0.8084654332029936162473462499643914 0.0926401281285841714160977379258278 1.0972161359267361582591730928632816 GT 1 -597536104813751853.3492452358371783631496293652439594 1.5925248584228202502033780583309761 0.0678874745914473769123766604006860 1.0703017361675777571401277247447214 GT 1 -14448271995932437099180457096403715.6087178580284335391221898478791128 0.2016335960264491338108259340245238 0.0106476083027411497055262573018491 1.0107046997035829629748576829210431 GT 1 -1096158892036977146793.1857572636320515429782763567235000 1.2565923600363733571242859067483596 0.0497831691130972946458303409053548 1.0510650773921852177529866678667742 GT 1 -3615020123675727904713804403389796709654.9464138336862421124814286738960401 0.2515133708013972331915494112391276 0.0530556355507993270869222964964179 1.0545149367835319909015084211112585 GT 1 -59853243606365.0209590659850777429700836758299362 1.5828662586939650032937598803907544 0.0861875103242818509664097886724097 1.0901298821025112757938197273873464 GT 1 -133813595519333012652796.2686001546675387053767310787112065 1.7698237270002162184077572993651758 0.0521053811611739700949771450489077 1.0535119444684394358210194568430584 GT 1 -80375732924287059505154655653.0553150072724607565892063172833931 0.3667342927989994161557442748266699 0.0200101956238257487622900403233196 1.0202131110694196638168930723628264 GT 1 -175273995877724017387630974237443246984779.3864043002095890398542706296196475 0.6632002534473907964496677966270973 0.0602397097325575554909448583733614 1.0621304465925412297130356750249679 GT 1 -282960688266868352978712488625648552258396.9516582825312037581794000905441764 1.5118667518116084305016455106004127 0.0389884765350612018660940198394095 1.0397688789651747024751289203868138 GT 1 -21609577890471107172555.6516468171312122502551340556934476 0.0636084760291902872097545287295909 0.0549350762039012375758298301466117 1.0565016514185639969183132847168374 GT 1 -69975907.3912877320408425708806213316655613 0.6711816469155640084576828036761689 0.0689245913153466188716120150110563 1.0714150074721373073179385757897732 GT 1 -173653710922268758.1407349373522069134968437722362981 0.1918689838170100674562240189113023 0.0782074335424642255898774776300694 1.0814350628880019045689896382987404 GT 1 -15042314966121019.8099625976184344465925522937974478 0.0602278042349121891822060588272784 0.0252287160933919071283022107285895 1.0255524161112315227899128854767227 GT 1 -107728823090216969725574.8447382333772530611608286228863283 0.9558508829476713030689421585477214 0.0814815714765554695614374581318307 1.0849933108119053548106925714087512 GT 1 -106197971411745.9530163051535534857306325884096021 1.8447927605909998080287115847625885 0.0664779142782142505857274919516016 1.0687906572317188383809663988595225 GT 1 -38.7136001337161117390397740367310865 0.2684540249432419809317657759256701 0.0153838877537332264267078858418765 1.0155034475361236226907089945089779 GT 1 -11862855537.5801925682593252766948368418769559 0.8984379485708362317797740087951471 0.0193272217610058526894434267517913 1.0195164344494855467976964762555756 GT 1 -136509754934598.0473920353782607745101006445600479 1.4419805550331017679613375933198744 0.0720783468488271541278881494294163 1.0748079752436181712645350884070594 GT 1 -1057620083902265.6556038563524499538047020314306230 1.6510318290594975999297248883316853 0.0648750081070611994163129504623467 1.0670750774590627680374207804984332 GT 1 -68118426933790.3371253904101474069203094198072112 0.4262619179726403266943198476566061 0.0590482827164413548557806984613182 1.0608634507200060714563612166804710 GT 1 -5764048277165625070538970.0379932082978099005000124077592965 0.3759623318207569041988568318552013 0.0842726709603187592888347595590990 1.0880366343430905858829606041571969 GT 1 -455307490826049611226744630486323.9340106765517440671740438030373006 0.2675684200688217047629148627660711 0.0443579210177517780460077775410052 1.0453718304038391724001520383048585 GT 1 -3444919992712363699164.2665251189480492470566181956402873 0.2568618210103382090546094983220006 0.0048969888254068118985013580471699 1.0049090183635959574529211510397701 GT 1 -180400409701259001044078425160666986539818.2903935376669563708340407608103961 1.3029133355898858887150272739191498 0.0835750741733143063386595434060563 1.0872751290491256633558209303246429 GT 1 -1035844156796.5075514078073510390502778917219051 0.2761098533942636169933343654333772 0.0180857553855691826860193477326485 1.0182513017174668097016650782530040 GT 1 -333369829633913394010455140398097492109838.7413660150892344084448705654384657 0.7283623109093802612328381162736931 0.0927912366836612821098320483740674 1.0973826863150721451377605692195035 GT 1 -25420391091253773289297745348300350.8943194282175382771798548050641520 3.0629848042980433968039189106746686 0.0854997228873658597227895106864188 1.0893775081303395136711012020729682 LT 1 -437749877830536964936.9563271249399030704449359527425647 0.2870718334030477989001076952217470 0.0288008158779999027339739588748598 1.0292236987493317793835663068468320 GT 1 -95689066206295388.4874401985655558238746571208034651 0.4463943859526088264688058067360626 0.0297301831495587974460246476535332 1.0301810844630161982950475674076200 GT 1 -71702087307.7803349362025656744203437824144755 0.6909658312542970567135768126039403 0.0385343319037057976202143119031857 1.0392964211989170914215424596858930 GT 1 -2369366823985324799123731295.4490249555138006615582288667806399 1.2408698071565874265907120235214214 0.0543789253612869637653695601237089 1.0559133455241794476600523759787412 GT 1 -1950190818592092.2360626798226096065856524516414558 0.6327842640794413768312024854425169 0.0400869868934347723106655833913672 1.0409126099730391521463232007651680 GT 1 -16823031937540694685986888382.7974367226072537708510408190844124 0.0851811448143491142487497823303872 0.0179535792718499178247570592779934 1.0181167001276780770863121934952006 GT 1 -304187644318232931.3938421859174027392235823308780973 2.2879995284216992002503156459033724 0.0349704589210067795130417066494328 1.0355965655946132443630388543249392 GT 1 -51823597289280801437698899210.3712060022763171495251718021955812 0.0929858209072596590183363740496340 0.0393501594767915999220946166860387 1.0401453063136962682757212435462654 GT 1 -17756928029213512802945.6135755110058195928200187253178023 0.2173525012283600144070308038907528 0.0455082382795342032216319225001032 1.0465762668431410961809969111723033 GT 1 -5470769589029533696299865715954758099296.8726590138088120093820268648722202 2.7260236055088489990672642629313606 0.0524182006546381991218760761140234 1.0538420139890129856449487759108741 GT 1 -3091576417085361188233516842.7539464472848936834590413636275310 0.5132180188823227372470429085127165 0.0611154857937325834684996292538906 1.0630627954032693676316228611010107 GT 1 -17.4862475183151961548228530486970586 1.3857468727145213403722276501520674 0.0846526331032796439967560554946694 1.0884516497974112285727072240988881 GT 1 -49145231875674520729595248730172194.0294717399791734478301903298610330 0.7677170650009150317340775171697099 0.0376238485777128775847509967812053 1.0383498949463618467089590843497732 GT 1 -531639923123923701218.3243430773919870662124410391158828 0.6795950970643487723424298445099824 0.0093782767168105864464077856138061 1.0094225296487110140709141931408953 GT 1 -3967484479561874135265495.9546597623210523042440235579309087 0.5052567054530593842217390675909454 0.0382136205572960839590761892406541 1.0389629117665025670036955683160573 GT 1 -5113206.5210231427716145548121078685307028 3.0605792157899648235302220650441376 0.0248214610381903679665053737800216 1.0251347078642326816883906530149561 GT 1 -25.7199890081940338895758401361851416 0.3957708966600937938127516914545599 0.0309500311965135301635882826427111 1.0314391010282642101184240835514959 GT 1 -9229631237619297980527304233617717286.8867418759080339922914117209184358 0.2167673210320759282311768441288538 0.0455506776637329352793564959881296 1.0466207306399132157027442759102985 GT 1 -22910470921318338412913872890702988823571.2795778591295784070798313219019251 0.1769309053504481740761032192848145 0.0095146924349392505481451365715043 1.0095602463053278538622434215589117 GT 1 -14600061827921420835207566742582.2166352374281147859699900423223730 0.5129005006599089788534008907645961 0.0118236651332805616991689814638212 1.0118941205735718437198828321459677 GT 1 -1458962874751290054419557280264458.8817069342697313876446210907487383 0.3513304595509028959141808366550007 0.0503294607513645647017639931219224 1.0516401553277618415941016500522382 GT 1 -119.4982783128334032662218198238905199 1.0681383431635228327913647710916577 0.0911319765768362613761954344205835 1.0955553840989607947897003320069396 GT 1 -838468948108.1020267358455573173120842313029416 0.0485363906739586293763325632059768 0.0505007104345117815580077873963273 1.0518204969496780650391186050419393 GT 1 -24956992911787.7472760675171308886965815600050163 1.0130287027952134522271278579679301 0.0864711341295251609501694666248918 1.0904403044619243391764346366585788 GT 1 -44258766562615368861486234188727691.7799144672719615325498975419160106 1.3678400932617434696647000209896765 0.0054162895948965164087589451749111 1.0054310108719128784704391082214982 GT 1 -248284155637568.1158085743486220320301182954623129 0.1582075916162007106373494233357529 0.0609849792098954606820698603346310 1.0629238033202371116370583361605073 GT 1 -3607235163545.1365518318165506876026698308485227 0.3184827763648943380894238959994649 0.0822334793433817452991273052346305 1.0858122555069381675362651857282107 GT 1 -186233335630854004098033439386105.2030103306876132017026740686083113 0.5175734689951321805144211146902952 0.0851809237140267006760612504660949 1.0890289640929364594427994468483495 GT 1 -970726364703739229125989557002.9097610729902025996582171236286356 1.5122692083770575369437736359223913 0.0363205483548903193543623602843893 1.0369965587086486679272124597717920 GT 1 -23551035295117502774.6385253430699415105945973253084145 0.8541565549349471583682681431017343 0.0772339497519589145899033219920304 1.0803795432942406780455054877938024 GT 1 -1129710258.3437070999619916306409080718768832 0.5270942487913911904326436094436553 0.0631393874821726846788776879704228 1.0652207671287676562870749051105261 GT 1 -7886.9046193164643871945290406634531315 2.4974083785930464953764259159096025 0.0264642571293381412814806995471947 1.0268207390034593046275447070075933 GT 1 -170693646003206222924753324762570592196.5471308525381590178961177351402323 0.0557526613097696582442733351727611 0.0976834370105988296192618475062115 1.1027898637394294527293164084142986 GT 1 -1749194943395529161490078134003.0023374584133486992297360358440396 0.1751456903938977113796802377578170 0.0465058682743425061332314827708555 1.0476220084171751987849393049495070 GT 1 -25109985534560867721854730469398665036.7179457784984860802919157167658847 1.0141260575246738717856097146755664 0.0006960389270645179290097099893769 1.0006962812746205929726043743792811 GT 1 -1330643900244812599468604235620.3887299487534239971639540732590677 0.7423838342327032025619698345235929 0.0519713065313332978431334522043394 1.0533705098131516201151945410480106 GT 1 -64112811426256.4459870364831189773483139698063716 1.2972194385555508355089789362673602 0.0294489471107877619803381966892962 1.0298912730279431668214399038514839 GT 1 -475637538629922314493907009.4338710946991704095074225152587143 0.0395008603793802735081093269770459 0.0930144984449785909947457836285276 1.0976288140498659913966085228124834 GT 1 -16909709607075990754892722473874768811714972.8355855752175101851476340991652788 0.2107705652468138824518229449395062 0.0397486538940187184512213741294048 1.0405602099284344818287744684187871 GT 1 -22595399407987804389323700816.6036278550130344257268947494304968 0.2469511814628118437042155557483699 0.0155215862332344033251635408508705 1.0156433072309290740908772883671199 GT 1 -5204.3901618504640245012990696462793901 0.3580709475581177768774177644124858 0.0295340433541099853046725556369919 1.0299789551481499591920826972116723 GT 1 -2821771480439439101.3911236006255049939863769513822809 1.5430081757158662010969833040710506 0.0600854941008811678462581406475348 1.0619663590255462204589607902129964 GT 1 -9007910614253284320176.4636082397876799437331498573814524 0.3617108944031177987508424269697067 0.0522795834496737659597782935342005 1.0536957394750605158864986581005883 GT 1 -517611652732633641534.3103962053952075706848956047616041 0.3294777196776298589799675470887582 0.0024778319769892713236555589640785 1.0024809068830930266798348699821924 GT 1 -29010934870333582418563569738034.8836879041731711405091059452408761 3.0769371657798667505434452415838982 0.0320914667990407819519583551169906 1.0326176866649449255042354037021097 GT 1 -394029285691859541.0004191733284626516327296319294497 0.3305043006597827700382967296662719 0.0970102437703312113873378876938796 1.1020440697826877348024522112042465 GT 1 -1048883384249571108082082363161947412.3918850280893635415341257735489401 1.2663006345660623764961048767213190 0.0935994834583953189239739737522588 1.0982739993858851784585765306740287 GT 1 -86620955351633302439598.7444004004184848499052157954108640 0.4347971467595718336652215714186354 0.0640206283036162453845074427133265 1.0661618415333174075325945102029982 GT 1 -2769075761434386688128654120.4840924669559020712229111522320693 1.5930774929617084555274864011118679 0.0742319017696933698860981444613937 1.0771315095763161287137352102408758 GT 1 -280755392786359718374347.9537121826335592330988036258363698 0.1459007124278036247226298622325971 0.0930918150877026252152133606740595 1.0977140634151928405500259299586072 GT 1 -8559037587062836381964.0124415860794926850204414420423542 0.1102206377333998764887739725508004 0.0957448328220277552120052014054484 1.1006436938417087283959913316553168 GT 1 -29541072813573232376520890244.9330878051406058710451722280122434 0.0828845364217250798056893718431988 0.0012990226810616012910001540792901 1.0012998671424200840916333789963252 GT 1 -18383123577514775892649497664.1941765880335597161235044469982683 0.7917363683517349518875399935666701 0.0458079474516800854774049660156322 1.0468903148508504966574111690683689 GT 1 -1101651599372343309718119958672.8097591744433895380819421332354094 0.0662770564871126801463872369530346 0.0923427888767612976026398457195275 1.0968884924491417349143785778542996 GT 1 -23076736585369063481609647531931.3858065820325571853881223458069565 0.4627306150752853777961699671181686 0.0366511385213032909996120297942337 1.0373396674916434114372940357107298 GT 1 -1552846721.4656341363231767046216790020459865 0.2526034316814913041884141838045985 0.0954889626947187844606354351883169 1.1003607715620005767125076342594662 GT 1 -11207590.4283843586413055663431263924231171 0.4212759785730365805911876690966388 0.0165143086747081165256605226940065 1.0166521899875892694091552777292125 GT 1 -12806035.7954781378441741876254641707186973 0.2926892268839726221583431250747570 0.0196173356970693479350733278141028 1.0198123097540652919847856922836151 GT 1 -8620176672574232140057.4154375282038679641298909793055620 2.3229212434524645550426501704405880 0.0648102144026946097496168880512676 1.0670057910424955456771593056955301 GT 1 -94461132958532527892048443139708821234858.8377742297493754561789919630973032 0.0261475969154018604036523194336438 0.0581157193524293848254077845668303 1.0598728562749293000839454963824811 GT 1 -11275956814967052043472067639006023662723389.4147051704259392257378283241932945 1.4785284608522654192797103899415221 0.0293286135342798981615185475879113 1.0297672959151482197965006573222398 GT 1 -4770466895637184027864710.7010475430153814208100649088718295 1.3238547626868842745769326353594055 0.0954359718239260325680204245174383 1.1003021881766905728612943293158692 GT 1 -7.1105875670022619970954111226124328 0.8650409023472840701422252217789050 0.0546157753959423580420933842971026 1.0561638472398423155573829037607502 GT 1 -1574322022788.4266891059334008753345497325109019 0.8861640824833776250098451683945661 0.0367522393704660429938966683663260 1.0374446202857004492296028156430045 GT 1 -7473811662807.7383578829625065641978855272596803 0.2804642556870817598544031225499973 0.0545139546677144721783564912015460 1.0560561500276695002540275485227442 GT 1 -16432703752.5069543059527681356960317923047551 0.7711143328441946551336485010232926 0.0649056415409582129384147035816044 1.0671078366473301632840794054799041 GT 1 -379616173275130375429674520137323949035.5428514035101289752147350436489893 2.3234882535828409894153878440350929 0.0943053819210403307837235882281673 1.1039588538000937851698654096367473 GT 2 -498350529599732340959812302.5291011032543761993217684449782504 0.2992078895630835537107021697202046 0.0274014833316168960446679188369554 1.0277839061335168460151100081910181 GT 1 -799186796447691548010810747244806.6872336429784728388415150317105948 0.2711147134005704987477571187141385 0.0568734259836716723545483348488940 1.0585547805242889304626050068040464 GT 1 -85867751426130863529.6417703102394935971424189558603742 3.3768620614907168112119455342363037 0.0080529048521781860834809351054844 1.0080855046236513756432421118284865 GT 1 -69097894683713661223.6660528418426102088672231974104232 0.1206098744644142912122286589649494 0.0995638742658403855383525688721553 1.1048760488817422990602750428678418 GT 1 -755893194370313809032.9435365857770567007095900301251617 2.3094157570728345144846005774071107 0.0141665693597457466013731898581924 1.0142678730924645449615336321557207 GT 1 -5134783790574879686865498250946904.1768028399960765678507864094598283 1.1868719328917879727750513049836089 0.0657675279293665793956370821039525 1.0680299722903931099297385040957707 GT 1 -1.5145549900276779794180400585009359 0.1661631256663325686024438080231674 0.0111367444737497137674205491625822 1.0111992223120391004271314850949864 GT 1 -8761525356095853399199901641837058129384336.9531232712803507230900671918852746 2.1512208532577097288826098200071926 0.0233326910339466070510438733830931 1.0236092079949267322592938536084708 GT 1 -58381584666.5610581124220547429073042251420539 2.0525993328061738502353607241658800 0.0464409500996369215124177203708967 1.0475539262311552905787587812930654 GT 1 -1957998354.2908794149838271868203305049131066 0.3423445865983759722216987696170759 0.0582276200172518990973010159995201 1.0599916684420221131390167636569231 GT 1 -91760701687666254709057.1577207416654866750433289414550405 0.0109129408232943333755785203248807 0.0560797869553427086023479483749794 1.0577136364884717740240304776281746 GT 1 -145746876435553905639442997376521.2723576491692913492674489787153265 0.2292800735801391512045688056602229 0.0774127816788625831143724782495870 1.0805733619310398604585877421432244 GT 1 -5985196457540694936406989455980918052.3667499742306977325625234237218263 2.0262726025258132236006263698973071 0.0911654829627506639794133029539972 1.0955922508416454484336673260750455 GT 1 -79231556331961.9125016298819756720241008964861759 3.0943706885506856352548835249008639 0.0348169042512732103761156225117945 1.0354374591136714668526312717063017 GT 1 -27621481743623702623455373.5955112315556414952623260662001992 0.1721704546299293531489641472919593 0.0356563232163668091642810515067445 1.0363075367202627668050419991464285 GT 1 -2316593544.5002165065414131601683138611724261 1.2664382349206376974956812825305658 0.0687971870675581965048972643621563 1.0712781812487424404573542981664381 GT 1 -121729746933844119.7752588638225617704550803863398211 0.8852682957698245315031414169282945 0.0712106109618215644610809078446027 1.0738732730412135388882405759062934 GT 1 -51066229894084626607466724952768427.1091457273139045010406561092095179 2.3932218163671127448404527268248438 0.0371458998880900104541597296818035 1.0378533842572525645427353254067110 GT 1 -22686524055926616753053833406482820470063.7871860511554902794423630253884986 0.3381241843456108075742692624036253 0.0909303371869328080447704589030522 1.0953335509830548189164442938887229 GT 1 -231250757014521209419182548840029054129324.3375802636330940677160046760305612 0.5767222205265708117823172576997378 0.0172406206138309728091334119526566 1.0173909707051881723066420344802122 GT 1 -4839782776846304.0096506426194596394129662743258059 0.5787324658711935236081730860384913 0.0599139229828989386033150258635401 1.0617838366156941898075255697635152 GT 1 -44301870117718811794630.8720738687743612463048667607297389 1.9855871920309219684111554887135123 0.0043433433115623332049123562895863 1.0043528030282586863666125872948188 GT 1 -14487.0554099223943842945780696558562741 1.3754180873573464638880035606193636 0.0929094688453843293745583816799774 1.0975130200061568784372284784750557 GT 1 -1.9027425731131814570753728642459136 0.0924972989624176453519240153968054 0.0406690914885991780031564976850175 1.0415192078175934715387999509280922 GT 1 -4174741229826929135202563247730021364.6920748951775586382901811244137783 0.1214059398567000432333161349250290 0.0243377636360424082195167699767920 1.0246388217640674072313204052543638 GT 1 -494349837484831835723371765764787017558279.1148808005920342780626074212463082 0.7019359922437004034339477066613320 0.0477354098091131066863066731805392 1.0489123519336215923725141679398639 GT 1 -120772355.0443018973697382261905476440669129 0.9061707706127099851976126046978939 0.0420923955981053560991590179379645 1.0430039520071018809817910045772880 GT 1 -26150296648.9944210384575586040284701591063192 0.8323016894337478293169425607090118 0.0449477432741312885292767323731390 1.0459892209137620289892251905321956 GT 1 -56095.8231919367257727760115596505684619 0.3863630474810671624594411868413049 0.0323773615748946864306218852175029 1.0329131040492001472466031598006272 GT 1 -163495837398302667512689918350873878.1816703623272290949966277892490065 0.6166346722981757919299568178339715 0.0135437765867367879753313912906435 1.0136363301622170885902217976938753 GT 1 -1858523110771973776450474273694248786683.1013299388877337658689087923273186 0.4451609000616702256761851211262757 0.0644158782809172223419297031755674 1.0665842156441264623111887092534618 GT 1 -9044538781093305645423.0085053913053802507625155495882925 7.1074255654901684749237422399707027 0.0491097694183083118968747011510930 1.0503566483545989397205451549076720 LT 1 -29009030800566133648167692342466.9316702012097464506168539134376214 0.8068061036265477402288705774132759 0.0161200490294014898189460971651244 1.0162513904187563371879477835109340 GT 1 -50532680655776559501.4648936637913205834933433631573453 0.1738228495675028970696893775675304 0.0122355583152545377150035006608094 1.0123110290081038319630177166486016 GT 1 -32444216049051823581101752868567360972438.5587951305090246720276140933733950 0.6918989794825741947969540050091352 0.0538887682936416180644306315288577 1.0553951357574272908618555083432898 GT 1 -82944432469835169288823344822.1907077941623871207722458907851932 1.0996162686011556861101283549867897 0.0604343228424749433399189763831883 1.0623375560711376380627411100883078 GT 1 -13439341815424359235681216590712348.5499556871763827350588127997980232 0.3470162780040448970032973861659089 0.0055074019081416403561569761267101 1.0055226235595907053948347623302891 GT 1 -9220017.3798681927601321367323742291155025 0.9092915063543111330637026025173905 0.0957224802944320627731521063616262 1.1006189748772587704187901695255051 GT 1 -8390001319519316.8575803098573700936850446824216288 0.5100911854387415606121187386677560 0.0475476953695846181124567964600347 1.0487152471138485415204693850200121 GT 1 -1124140244567.4925573183388706884606308853985670 0.0668085535912172487437920845403061 0.0465626723518702043042363621461794 1.0476815848400878014131892464034527 GT 1 -201651965570199.5430711799411294595552935440142666 0.3907281369276344547875440952419165 0.0377798440839797377633627063496004 1.0385120021955690470021958567672852 GT 1 -45752368779981019229667089822131160.7257684682160929766743879433520822 0.0058050643894351255476351392706790 0.0338223558350868804767239975225138 1.0344075650254866923886714896744610 GT 1 -369489241871.5524198391388505825218919978369523 0.2906762569721146747541301967432767 0.0207401195424044683390533386314216 1.0209582166657089104427140800195677 GT 1 -1390897192.1318965752776026951519921097660886 0.2841401001666358458038242455468436 0.0897581288766818477975627147199873 1.0940449223445882223259759604914500 GT 1 -962676.8546044179423538265842028169760806 1.3478495648947893123893633133410266 0.0832508846644466745862649339076879 1.0869214370319272121115147938580248 GT 1 -3089126780973709439840.5502602286772882866327633103333463 0.0124384879275885922002447655400924 0.0308584003142797903296322550483718 1.0313445480606507643013710570532806 GT 1 -13446.0050840660707743378494509782336550 0.2079787727346003494101465014683569 0.0083554928265880099003557407929118 1.0083905956276693571902297950933678 GT 1 -21578323.8177998506639691938380124834597558 0.2822467196917690147687327016109190 0.0350942710746987463685444548545397 1.0357248726480011522498696015871000 GT 1 -35519864179967.7157259384339490466273352523191940 0.1549469099141799553774082138866764 0.0167915374339616369444664576164357 1.0169341136009189691975244578252968 GT 1 -435245697349328.0167200427113283388472407536295984 0.4373934962522483950534805299250057 0.0359051518696719450010887443680408 1.0365655990348985490158113955936808 GT 1 -33180105405120696.8048907834820535320606572480895756 2.7243875202591142590158076133648498 0.0703280515920161488898633952634018 1.0755824170429541533000463952661045 LT 2 -35260109940935427211.6669420912462763164555410150766007 1.2230171272790219718676787066376062 0.0170279376487934355151572991940197 1.0171745800412839854869620932122696 GT 1 -280282071135.3735138590918603562270319798657150 1.1661747692577547302886719166250868 0.0966033306855083593828488823772217 1.1015935426020674210380592195158438 GT 1 -318535200083586135769007489786.5900000453547124372275214419774459 0.0530296822130998238958007505835405 0.0601362794948266382726041586922607 1.0620203924144263232803374251637696 GT 1 -1590504383068594968993914443246806797.8768486583378821823645762301886579 0.3306956874029115278431044807317647 0.0865957914080291332756178164317885 1.0905767706307620883964970872549940 GT 1 -23033600497766365937.0697734879192477527651232964382416 0.4554701385827464344644615180403813 0.0189773330925769870001007224766407 1.0191597137638104896830466984075492 GT 1 -12211283715985256143587551004990.9878325302717898253870630214299366 0.0073022836615014760588621314189662 0.0496878519462400798239061787185761 1.0509647714584232801030686634123823 GT 1 -15034121.8632755241960967446846388710705443 0.0737425134451077913909753799177966 0.0228440708557723362614434860552305 1.0231090397311555437360787503323658 GT 1 -1702195780291291210062868.0296769118578514886091977168819668 0.0331945101776648956265706644865218 0.0865688862283802477779852778376518 1.0905473151244868753431747983258220 GT 1 -17258078467.7161373577411810986410584753934771 1.1612422000250342410261994475930444 0.0879832671190276427462751051912011 1.0920969416189116651422182715841421 GT 1 -52149018787483591.6101434519526292525001934881556157 1.0399249380231974611096142674089188 0.0996050522826488695929638762347542 1.1049217811188440702680379487658748 GT 1 -1447935.4941621175677096298486706738101463 1.0397631524250903963293410645689317 0.0480100412462500963110254336463293 1.0492007917739709291262110531299581 GT 1 -821166516083727108090654.7063303281606002648570313499069523 0.0825089215452644936982985494421676 0.0643701231522765680163421521006306 1.0665353114261323493776222568500041 GT 1 -129091727463650014765327.1436294072833125455359556494857229 0.4468800764981349287770337368189955 0.0787121414725019054502278327779888 1.0819827415848308350132474161492100 GT 1 -29387134467075.8972888919147770547439173697708995 2.0336955345768192590794007863436322 0.0353642210127797537387133069002111 1.0360046799895227140116735994034040 GT 1 -77075364629173411071224887982494.9595943067124974097675164397229213 1.0754812854279458283314520274643661 0.0744385921125893556356365410420260 1.0773547981298358967865231162935140 GT 1 -485.2169196593085982139256350170372477 0.5622185375072873206387593469868528 0.0902206981809583519875974553653112 1.0945532343588804696520446185549259 GT 1 -22488377537930687182133783259.3482624205751539210267465624771649 1.2120166924344285971888398894145848 0.0242820192397500723001418950958282 1.0245816884634237723915040882672222 GT 1 -660374748287705275509623.0946555583792065176185383892854458 2.0894972759736866385452181970827078 0.0409616583065839302729332172124423 1.0418242239871570306611656171107737 GT 1 -942133931180963641881525657802611291.6321762186240298515122042469973827 0.1586664033013643061813367463452954 0.0458842172278824001700154514007754 1.0469702493088360116439972531005179 GT 1 -4378218326658457667309060709945593461.0257300114222571395268006490993755 0.0927656900377860980962674075588489 0.0866415867695189278218273385792428 1.0906269089037399981283322667245216 GT 1 -8654398969892239263293818026157806071155668.0319726605119743018243939186747338 0.8624741221696673931097532195543490 0.0374317024122774476090594300154349 1.0381502568049366003374047166388418 GT 1 -505409705448153188801929427.5617792838251337559581845509042389 0.4485302118185340325591703756900967 0.0183975778209160796044419145963218 1.0185689180058760167727148307223800 GT 1 -491025886546861634290.6918178820956227544611178980019143 0.0230782241969252775180729491636723 0.0244008213609490142626376205863919 1.0247034545441180087465341076522816 GT 1 -8705052766932543615978381715231.2594510526378457655115107584731843 1.2307766544350967213931706913688833 0.0766502587494634200729287957635249 1.0797471983193122630524259251634906 GT 1 -6953.6825908636452342337460452457305799 0.9884366737689341066849742507759298 0.0290172369378380321758814942054501 1.0294465625866233118902861378098445 GT 1 -178799101.5078662494409298089268401174653347 0.2089460724557630787973841048322299 0.0737154759912323854194163565261207 1.0765738301824974500994853665761067 GT 1 -170471474184166417698.7908529761937359362499861487875753 1.3218119043124571807903542141306276 0.0066698098823643280155858264666261 1.0066921524669080801711782468150866 GT 1 -12854092142.0185299144797742377764754129077760 0.1302785992949620361760143802845561 0.0282629406414450444139471433254892 1.0286700261807127144800105241695016 GT 1 -110627691228144966203714489070138450722.8508535733935341836631854973174890 0.6162535341995320046894052686307807 0.0612926865929506288287505712763007 1.0632515486744948806579574409593192 GT 1 -66145984.1453886672982527359677154173667260 0.0861846829083447125297024709431186 0.0909984893334220138942666192220059 1.0954085229066134444108629266672994 GT 1 -87143053705343.7601531804724347632856184115478138 0.0062914536821618325484311316826871 0.0829477520267975988391937002340672 1.0865908312787902789449996543560308 GT 1 -373627954769443206355775801624545165.6414948214567162563008885648581137 3.3207950031301139411700951737290715 0.0678527359671977136674453515184696 1.0702644681597062857946189339893036 LT 1 -13.1416966788903717240103673256563332 0.1233721351895528605164525791537452 0.0621364874310042130533169062226966 1.0641508495516496847626627891639337 GT 1 -39536217440441810938.4314477108080764604442831662664727 0.1194581621427702485209485240949538 0.0220234194503195087865717245249501 1.0222695555022565318516210757648375 GT 1 -1368463310818496904069932746672607.7668664119668422373279858480922913 0.1481929741318814212073209655630055 0.0939753005556656255750233933093690 1.0986887112309222018781394999079709 GT 1 -770954156470935616567210361.5101856936349171009469130652801449 1.5177115502486982385117544230240013 0.0653911902810694857726132509439701 1.0676272225683580946115539035228874 GT 1 -46016601964247927837216045717021332.6147911807770581170540097801730843 2.8645988411670897227890040552466681 0.0638671633787760839411732877949726 1.0681757540543244644069257250247656 LT 2 -5386573721.1784690382773081081877035605695150 0.8890188885195044469388668637428605 0.0839766554924437563082736477176331 1.0877134293624928594301219584359617 GT 1 -1326396953636521813518452137691799.3161105123724560969158929954731570 0.8341961681779503352951759167315907 0.0492688567906205449826284369886326 1.0505239659656396871328841566496336 GT 1 -15195.1828404533635064247135466055358045 0.4149386970836031553926973929569083 0.0431912172140968537596650689666670 1.0441517164948068291462429998654405 GT 1 -8617344790.1995630974774939433914771450178987 0.6911173579146946093384145064015617 0.0929403710621775401711005093677759 1.0975470879873813488924351526255785 GT 1 -595955998649293737194.1615304553798065965962892438380872 1.1790950331881835046715078670729733 0.0722513579497795155347748567615494 1.0749944427447697012843013309369191 GT 1 -2074992289043.1560579700947463051754801571014383 0.2130155878351760801106647403651877 0.0625565376588521428042326980334810 1.0645988297922104783089285691314599 GT 1 -1617527837.8026049896414695703674707971815744 0.2545396596664904852677302736698837 0.0948816345019804225567214339856732 1.0996895532290099829695088502477972 GT 1 -12663910102.6532585808889200343105576610575259 4.2960073249852568174792728741193660 0.0771699821749152372029733227882654 1.0803102241423678888020291248802490 LT 1 -18865.0544761685001205526888729540679755 0.0081069790094823840293849282707803 0.0576768860212029015327763327515144 1.0594070547496699072566945023500048 GT 1 -5565751875332918209873002183864.7072358582034225077420441607601444 1.6956434443684469491515330502608185 0.0260777527512589895249205746610539 1.0264238068127627535350235844946952 GT 1 -4642645933101248402798184886.9982582872530707213338894262614741 1.9905984215934232744083102931929943 0.0374494325037314472873515160933202 1.0381686765417913710478445492918287 GT 1 -4130683797830482880580695935.3931610058932318570765318409515489 0.8928309990981264219677359609788965 0.0349160705586502281282736486529986 1.0355402079107758434843353610244960 GT 1 -50618086726568432096472734705067.9000316673636675594601989524378660 1.0809693989736299568220484679196112 0.0846541239032329810625825477217325 1.0884532784700018365873472890464748 GT 1 -170331290417416.6532573881479273055885578526793058 0.2059784242239768945128735748566506 0.0936373378439258456414028443543223 1.0983157636780782980145082305335126 GT 1 -1184.7653536425963286422639836119181358 0.5582740099687971271531470712842223 0.0647463314280499052618084463316145 1.0669374832040231794647833565992251 GT 1 -4615579958.5915907103604734930562223285411938 0.6330523433038420271717835114566922 0.0922667535322161512370788490456703 1.0968047249662053037444434043328152 GT 1 -141.1061159301709555209523494579548223 1.8719717722343726657179189932113824 0.0008886439320978856331796687579993 1.0008890390101900866325225149446516 GT 1 -456575867238242892414580846786628623704072.8788675313167625289305101613840975 1.7895616412266411607308774993971381 0.0022488801861643154758539722522732 1.0022514127148249467901520300756990 GT 1 -5755188015251287730062326117060561.3772796527293192463345821918602510 0.8275605156154122748494421411895425 0.0519020802144908390079157072328134 1.0532974911482699442835197682151852 GT 1 -61792071021459595328977810390893.2454215263964281441834356735816797 0.4774697028716670119047557757298574 0.0837384299033008329077480174442653 1.0874533981974852031251824398116371 GT 1 -139854.9867503777856147677864985713743122 0.7353728096630219454647749831728087 0.0857336543729993835732458949652678 1.0896333433845492720281141310655712 GT 1 -116847270830156166179515294607781313186.8534980216197652285933832485571611 0.7186244890663360332517984902490846 0.0308686946090197860520282985125310 1.0313551701920473595122347814131720 GT 1 -1825706528110758334.7382209476695372201845099343719231 0.0600301919069423408455802358867247 0.0413043021557722714485719911778574 1.0421815663983258596393643369040346 GT 1 -1215922131707338440.3203112734869002104058650911746556 0.5618777357236695627994365765830145 0.0554929972608224187449694927077953 1.0570921778391776223484438351085708 GT 1 -1148067638706.2598929885797865024632842464158128 0.6209785524641919417736895319005165 0.0848089021367596526427182362184471 1.0886223853890068000561882323234614 GT 1 -191391615790691509407793472255173759160.2259054122853331947638725884865443 0.0017400342834213856436683251244161 0.0651553529691620036975197066974273 1.0673749164065683335866701278310999 GT 1 -65.8900409047523330035931746709259582 0.7283994022197801579838318999759735 0.0572356262791186032438116252040779 1.0589388963718515063978650943739908 GT 1 -383609628659883193974351002.8777292684517921993307136369558780 0.6852742314107994798849918455560337 0.0864016979402212027266651793403986 1.0903642985981222681212230959515849 GT 1 -314296248001392438.1398868594152685935173592486138501 1.4706131479662300618378167409951376 0.0051350056751796293420506849327426 1.0051482351251218489046087884343134 GT 1 -567543299626431738735.3626721219152519945255746422552253 0.4154125758128290120271490078983673 0.0347927490098534618454069910310104 1.0354124328370307696056940346708874 GT 1 -1736307494.7165102259197545353878421273775689 2.5415713600767719268542044528059909 0.0016139158759094147269339098829517 1.0016152196411037277277220848376811 GT 1 -553491889905040068009328063528834.4366959907958167295413933251872037 0.0908470005000288674995267493084505 0.0553518378515465594780449808210777 1.0569427360017232982723958973325274 GT 1 -8930130986871444795.0414372690758763006687581267907992 0.5419985930724968659082891614462846 0.0921856183831840439969439545373639 1.0967153468107319419723398382472803 GT 1 -55573.4988697687352359099074017609732048 0.1924427375877249757449384244996099 0.0153485635241093513492547294917064 1.0154675720354578189263131222477610 GT 1 -4716348312282632895059341516853939.1089058390455623356417476478129668 0.1258015976425847648915390694367488 0.0200394467836839363246726891779606 1.0202429599477313472662944180823154 GT 1 -1124771433698266730458729823121002869.6289139084385536233104134741354307 1.2275470571057189386870300992292860 0.0525339991395544699283777350454834 1.0539642256662570344112192667170774 GT 1 -2466700268889882076.0017986609880437880590620875842871 1.4811294379588542496386890665147206 0.0558844070380497291805641539539161 1.0575066701614891791490282419334668 GT 1 -98332747465841785360639338323761.6719207965442643679585328535709195 0.4309445869158556271380438122746225 0.0013355143761952474936503299853670 1.0013364069703231286583147619889412 GT 1 -402136.2862024244615460962829416045127041 2.2900722960075877979142893825396474 0.0152165393835727820562497298916347 1.0153334989153671187163836837526815 GT 1 -4.7348514478761721415821060842289396 0.4762130800998752665654692902054774 0.0015897416206824914389123186292641 1.0015910066007314714530024023039365 GT 1 -407983262009754369725440423329249.5386137083308312628766808969992082 0.3083596134695949698117766848309290 0.0690070464750635325815566150719082 1.0715035704502150443301120162270483 GT 1 -2099841496613775218349163639485362479.6089556553845175291494661802275247 0.3822102033101552975510027273928567 0.0639922858139341253885835286316117 1.0661315608867274498170320188339193 GT 1 -3391453885.5661809467608669485334326073958540 1.1896506623179711148953513014561879 0.0970308979256942537308933002476743 1.1020669431225414895334896876418108 GT 1 -512.1363925658151028920669297892389562 0.5800390983585765706836077727645526 0.0899879927921293200453942596189003 1.0942974848243672386802328187984578 GT 1 -125.0834932191679258782045505698728180 0.1955131201038704069849146828132206 0.0744958302361942322894883390364083 1.0774166415613319844227718585222104 GT 1 -3362080745430598880967.2863004737900368043568504263049178 0.3141166982005477462999968307872303 0.0714374315432470977177415298042034 1.0741175138612022374304525873961866 GT 1 -401.4842014584868755350418999028701247 1.7691778002208777379329709549438639 0.0736035970264462970716686906859440 1.0764530549715124547564245546746390 GT 1 -1331100209006602206945304853456685586190470.7825299256952374895701418734902432 0.7873483031535983755533181167270040 0.0023433776854927967511908564057673 1.0023461276920238750465101778647731 GT 1 -1.5356397911194923395854312126110800 1.0458498335518774573733295770983288 0.0095317032568501610806917478656138 1.0095774206822282852920766464506230 GT 1 -10466693581893487388706950890321548.6252500621979324403451305952044603 0.0052774693447587382503645111560962 0.0222930350632289877228273224444999 1.0225452806984313852520082892443843 GT 1 -11908031195190661447109570030364.6572052792819165918529409778822817 0.1967925185517412559400173895628301 0.0239419970003877202675021884309759 1.0242332650320141901163275632643625 GT 1 -4550.9643149602176404034855471327813864 0.0452850258755671805473711896719365 0.0683948307456640317740670211226331 1.0708461921956582239342385165593974 GT 1 -143659852515480908961298.0369718599077344197761646137157031 2.1704181069541137911451094171990209 0.0659648362108941426922926062188726 1.0682411928655119712587379207288560 GT 1 -7852102917760355576541722188673354.2368504043113199613488336718528490 5.5972151427900519280313680169927918 0.0029830909734355832064305235972407 1.0029875492578330397022893911690867 GT 1 -250081703741844172780796760341772.9132898860805602243824513662050289 1.1953144206035800226845418025222354 0.0103631553463370405575615593458143 1.0104172267318880139601395395657362 GT 1 -349693744633823.9236001496022317105943964400875175 0.9518210363998735198046398337573187 0.0300938657412794303245138037587055 1.0305559809725541871268404564409588 GT 1 -1.8534838757193197863396541693091178 0.5692503432198371291282174520263079 0.0325659129613087339155933933529799 1.0331079834907478764863137808019422 GT 1 -4164440437309615061.5646557254936946598996137327964468 0.5874037245912694941762970940713444 0.0547344978437698475581955125614191 1.0562894362860872512496658832343442 GT 1 -53996046176881523965540615001693679544.5641638988702041838741235829555848 0.5127778312972268656376963100733045 0.0015927531808678993293490645793774 1.0015940229606918283470900670795889 GT 1 -1402713821469969941121379747453.4604254890209020664081867229654101 0.6074067662046179250394560518536190 0.0300343992590709095048624399609566 1.0304946712672223974041618686566193 GT 1 -12273232262093771730.6092532966043840901067363495785034 0.5081724005536629214387306739587060 0.0358210250649551984939266947407693 1.0364783429577130110028333774192548 GT 1 -8612021873018128978514219598554.1132114991137510577031891409064867 1.3011674746017314554744534339746582 0.0263274835700729052582695093134444 1.0266802573073316392866440465553293 GT 1 -50123595822216005767147.5911035098407589680478963187219548 1.0606450556954829945509521619225389 0.0136756342482411112761624129854065 1.0137700071280437696402023470444161 GT 1 -2066092546909160884653136261.2027239155766169113046690838040515 0.2741544028107923108488576852847953 0.0935789175574448971268894329866082 1.0982513100038049688213518366578577 GT 1 -5337479962511446540.2343703888896317964217948331253978 0.1640064706945417411619556164129364 0.0556734693620143534411836425959497 1.0572832715470688054192361466317970 GT 1 -46322109.1951757059830240338104284061104755 1.6505239748248308372038055355794218 0.0921169925929100483488811259417675 1.0966397551502255997613838039415181 GT 1 -3020330472409.6171175993553328162332959159342862 1.6975396945965991478219006123537391 0.0824335515721188534624039107221285 1.0860302783212173952886123764271581 GT 1 -11376227391517625270419879.0870838768799720981516777251937517 1.2029548071194507590487454983648313 0.0375686796654182956571642476368241 1.0382925708626608064180062995780194 GT 1 -11537411630564767274869507053.8262616615007255659600739611447191 0.1017739217115907447905933764160075 0.0719630548087161604591326988057675 1.0746837353598597083100706703445966 GT 1 -10171477374462678472846512682836536.0229497320653422454411197734531028 0.0339874027872041506358926030279562 0.0920564128110364515058982172497946 1.0965730309574239748470323167672073 GT 1 -738010814400983.9383302820469512536161829025556159 3.0186100911380804385332781060662512 0.0741933760618164927573094165114595 1.0770898955842679795340565746346547 LT 1 -20.1944566020352177430053419543847757 1.4128523857088210726019561345280763 0.0818996052653043861757893898803461 1.0854485318851885886675888372677689 GT 1 -324135969993688508446978598891903928047358.1002179195803657838680224118049317 0.7614259454927194392031880863611661 0.0270498905661825678884109100616073 1.0274224731016771663872591046331813 GT 1 -1997.4137798698881623339717917724088524 0.4584336328005227924615486619253805 0.0531707931665035077471029946209426 1.0546365538739723441804855555371522 GT 1 -1.1491768409700432088379238435842089 0.7913086985470545423727028729499051 0.0245923196664860848306618432087694 1.0248997617024156375690776097767565 GT 1 -3044.2429636432202475416361111216240749 3.6150669891483970162992478049140674 0.0879773170082706016112879142831860 1.0920904175156436275468748771919718 LT 1 -5.1456967716866374354180564932906614 0.1125657870458789911759741184118377 0.0690480940234033971552281437947842 1.0715476614963457050525839093909353 GT 1 -3495752014601831402.9369614893914053592934831463712433 0.4604370879313503061047880320311438 0.0568463091321694335506870116506038 1.0585260288567780877433797022076722 GT 1 -3908441466264.5263330147525893596518012860580929 0.6774819514652580235495973861929927 0.0959601399818819663743995705869507 1.1008818266216296226749191859387051 GT 1 -150019.5585416305126158787572921140499583 1.0457681828984439799387026956277266 0.0057564328785511377624693231609610 1.0057730649967879896812779099531627 GT 1 -4222086364799735949.7712109411005860288741986118242514 0.5059700817332025419364248276832928 0.0828886917870434390539707164347081 1.0865264310898590606702089076846962 GT 1 -738536133568926558604073502640.0872691553879036698554980368304476 0.3567338827806690782346595054311084 0.0472837815770669837342301314826174 1.0484381967731440153307011263769729 GT 1 -887709211325485121451288749.5557861417081984823125358059584484 1.2212383032595821933028369279615627 0.0301503242988739275606597444373581 1.0306141929983365551496749013373019 GT 1 -501342173866563896.7301704949596421130186886825436103 0.1989077101333884413751349879424270 0.0431032147278423190905346498782947 1.0440597457258594752037038361531771 GT 1 -18776294660402.6712409574120569118661793470188475 1.3296642693967836351362817161592337 0.0397487400888191024659309381715056 1.0405602996911873299178597685419961 GT 1 -8958317157089339.9908547548874485490208157154036831 2.1989438173317905469246123968916383 0.0850644292816754237649494252766803 1.0889016307013263823785706412720412 GT 1 -507463684181786844.0731492848047501431612416852173361 1.6765234035915137766697866833079848 0.0824302023835765675310421157749550 1.0860266282504942989148954428251323 GT 1 -1078826739913759115807866202204.6327442327588878816759249851452236 0.5707685380617376508556958696952021 0.0687285256047782167051397635448706 1.0712044498009815127870480090875965 GT 1 -784007402276137064744228996820340883.5884872993148381308203741533271272 0.7122335404414535904351527597051086 0.0217202518595498504318890154306387 1.0219596088058543426188247968791657 GT 1 -703829504997329206889752152304556.4865576820602301186955683629110291 0.9390469054163587031204259446046659 0.0210924610071220359658904257905759 1.0213180852499987628548219899224827 GT 1 -572469709629839222396851.7563569804255533523460510456292723 0.0985390310106727252951644389762972 0.0979319249625403787154859003066065 1.1030652905506265745724975713272421 GT 1 -4225824312669722818856165464.3796518337284209779975131627487210 1.2436541333473132620987839496140213 0.0037382086822561293002697533424636 1.0037452132461286564756856843808410 GT 1 -283707007707787958622.2936093344739513939941755236814472 1.2138943932695983514416295291156307 0.0949398004842813484225301612055420 1.0997538186925892663234177575261763 GT 1 -10219166.8602817892974147653408333221484726 0.1092280530954215604665606695015054 0.0718295358409817400042946921380070 1.0745398732383186321688675620292710 GT 1 -604346895959535.7637936549998662134183850930785873 0.0895928267334017204991583754104125 0.0577708175814916533260067444386897 1.0595067405589160669450803917967480 GT 1 -289603024336900104884496877027798130.4070503463363898003512995287508930 0.3645259193402495622044803511617655 0.0909233921379465299340255203129745 1.0953259112798050544967673421023961 GT 1 -524597369402036043738409.4317123442514001324172084779536785 0.1549661809172490725755456531944360 0.0938498634546383313436155690409731 1.0985502730419169746286625932185167 GT 1 -75042253984915976331786771885282742692035.9251698554347911200762196118434977 0.1551145495205562296424147366749865 0.0677674732116544371627646578525379 1.0701730031523912637565063034236583 GT 1 -286603.3687977672347967444311393864937804 0.1373159340034164769136789089179069 0.0329748019491277260730801517793517 1.0335307259046720644766676224195016 GT 1 -689412168766279658593222325293612.0956450230508526613719658105607618 0.8213699588147330548720452383749272 0.0007099974409810876952893457731403 1.0007102496085301286036276296983602 GT 1 -4588496205754.1292276157264441893472759981085851 0.0829063881081031589463239714751857 0.0513820754372589616986108405402317 1.0527491699099464298313091860470141 GT 1 -44630516.2791637416744667006671606538824806 0.0524282872765431860943564968673180 0.0251061876709672759237611920096765 1.0254267243472229054848646932420374 GT 1 -6132880347044500817078.8601465202132886424490193756065877 0.2426923811620723451643425378854315 0.0658396355209698151113063799284133 1.0681071590470841664458894101452849 GT 1 -39117655484697418.1170928784090093697911427852033973 2.1053323472116448102094351115474975 0.0247264002428617819473981984503970 1.0250372322138265250117044716193671 GT 1 -10152315903323390651.7776505472463511524924274497149489 0.8364193774537481084644347303803420 0.0329349118465524675616120723206420 1.0334894764316092535747018921369449 GT 1 -13248529508404164808.8034171768962932128467624671214186 2.0336033031748007818264974803863512 0.0551194463449723300864591041102390 1.0566967577259740955635707028996258 GT 1 -18.2623895282409734909956581671317006 1.1229312579755680324635495437448416 0.0562936251731045739618005336050426 1.0579402048363119419676883109265263 GT 1 -5747219249859349319.6284358690934006265786365241963251 0.2188098591271734680970963008711765 0.0940430668074326239761989473912770 1.0987635091765282790098700405903793 GT 1 -2271384290318978267.6040386225743277320917242067580695 0.1994432187874216835083233440860807 0.0662334556374895216550451340819518 1.0685288244992930075395720603134100 GT 1 -116100170488774.0097542620198610367373701046831718 1.7326247791432612479169268326168529 0.0348856130719583001618452462625127 1.0355086489912221834321901604538878 GT 1 -23689.2145483555917096780536156125126659 1.1676158731793680182823557715044018 0.0099173487069233874130069710105499 1.0099668531836536547443336317313085 GT 1 -19.6446702166592755488483490911513636 2.4524797464434474143008314026561162 0.0520296003189420055798150154821472 1.0534320011797220920595622619837560 GT 1 -2128884581275940842927493744330496021.8006496292542435949987372984105850 1.8298694001738834706930109658825705 0.0845667428048305984329978038217099 1.0883578206434625807085327259849326 GT 1 -1517826808381632301246.6069663565458263144021233787293061 0.7383026425864688765288683398221966 0.0091300546495949719905476107786386 1.0091719890358552404760838657705214 GT 1 -184077707901918.4920930167634880165788921256121590 4.3682796241030801788832124170344314 0.0777380376701516768612901726808760 1.0809259717791189812533506541870711 LT 1 -20986329.0030833905532106401039761438982249 0.0016944005151811929710742187425777 0.0982235434879579616857887429914307 1.1033886205525836964763273205618899 GT 1 -10687189301381642950235368040967389.1662630909512680341588717698138967 1.3475374979069248932912035507112252 0.0899549167141711902627878201614359 1.0942611386260699105619180588117476 GT 1 -699253649442385894403145829.4935234439285462333356900397168792 4.8754814849731607622818242295900385 0.0049649153899335720927856877532562 1.0049772815305560933279504601803943 GT 1 -1673546498251053404551574370585676112172570.4847139480977997939905899456787987 1.0690294471596996820634111212609310 0.0234231642570704734340571570410424 1.0237018469243034276185188933113527 GT 1 -44207514435605767366.1474417314334336831519851273840407 1.3380867706411589785292735223388174 0.0787414685076157163959616406871334 1.0820145747427639397879655665517060 GT 1 -36097.8318569127297343902520033828210776 0.5895134005871707665084624015273490 0.0856202615035897282580987476516178 1.0895093249968038389837156392013712 GT 1 -1064812172.4666364621731639784271384226422407 2.6956318887436703754942186405641941 0.0186100911197825491525672955598127 1.0187854377510978664227170969896438 GT 1 -32758710275952547921238.5943200635243283002067522229564676 0.7421587297647418732821603840774668 0.0729836310262041697795943046265429 1.0757840555637729523937089032570982 GT 1 -1131768782161165643746774224846947147730798.6817472096352769020379227521390934 0.3238896100526868675313469517131512 0.0285196240436227405440014871527311 1.0289342101047613285133564997479649 GT 1 -829033704485.2198922685458127163652151856898234 4.0186810325907259007299511313318750 0.0604231868028825713823669789870327 1.0623257038144304836597283488697659 LT 1 -462319403449229081487984.8286891080351970605693786356778916 1.2000657290434447563239732819522831 0.0987644657524298113946269148681409 1.1039886412773185853137234198982106 GT 1 -1181762670631775390.8245677991947025906202285708743629 0.0341023244970289442211098228488683 0.0947613757873754363795948945630076 1.0995566968747490521333785732032910 GT 1 -275742579699629064992396912.6047965918386944775523789094391768 1.2865001304037298061353416941520137 0.0782186043416025532317496896428443 1.0814471815220985190002311876958675 GT 1 -31295507023224733586908381433378411668.1209081463032127330116784720956111 0.2016441153026584925432127323914020 0.0266469248651324806294752621862181 1.0270083899208008431022827135905524 GT 1 -13745123263917876615870.9918780295801952139488962854034844 1.5933346803308929307361287041071369 0.0257574230695826531106083298879241 1.0260949540580189457536024732432220 GT 1 -107628510733514323177040330424293569.4271797314214573827819227213426063 0.2819481089525555238049359152370688 0.0149943511798835621994955993014853 1.0151079029837345136584780540735979 GT 1 -320074571793434654.3545562220843877748158421122973871 2.8408302742871765990766709834995121 0.0625965477447043056556212823940017 1.0667307731547397539785036776726077 LT 2 -845483438722.1879221977621892505428565758516112 0.4147765240638373741725678084979905 0.0777311642379895208381541645811440 1.0809185190088325774623709654192820 GT 1 -191.3279224012721194039242443366587679 1.5670139987427593744226226436331159 0.0213718898607421484960887893376091 1.0216035756885937331919333204150744 GT 1 -30924398201448185474436.7102556741648031999493016737442762 0.4001575703874932557409015272815136 0.0483204383830234817023385376471277 1.0495268957917141692842270399055078 GT 1 -2410690694762379516841836361318293128734900.9340338306100603442687649251900124 0.8452196074649062767286941441414345 0.0673680960581099969678816449837606 1.0697446855191424687790093021136383 GT 1 -11248843709452713.6281603591055416156631510565210922 0.1969360160919600940396904379077054 0.0208170097553393813555861434852259 1.0210367384486260179062394638727463 GT 1 -29910847674506188614961906253446019766.6354305468422095298982521594893502 1.0319876123946640273632581900575073 0.0128091667094329370261810669597496 1.0128919114387853994243815273731547 GT 1 -35500309.4307526917151958383525536520319174 0.6829853126830366802050061639423566 0.0767250137958166362953412906330267 1.0798281623021753001019390438324032 GT 1 -4356120673513497393.6037840968333378763643051833341102 0.4123963573973118625632652129540273 0.0865895823883781214377533835557046 1.0905699729846714841591178832414144 GT 1 -526704176133937696777606463829715.0905392474395799789031247576094494 1.6108307138339335320354934123768123 0.0175059256327877131311382772241362 1.0176609664353182670988763891671407 GT 1 -232467053054505.6192706552031365356898019899058095 1.0291828298332772503409530454205211 0.0833436956223917285463773979440403 1.0870226813688604514429895723642194 GT 1 -14322073.4176639454080874635450490442258179 0.8268521546699075119916502974425189 0.0640185157831508633215841087109040 1.0661595845198134020012142585042280 GT 1 -4761277303358412795140.9974377467008100046923761924484017 0.0819911384389822348905317886536537 0.0954963270808645538261510252790196 1.1003689134373586786501646591052380 GT 1 -34417516877015987181546168717789.2154140456421484021582967799886947 1.6769058320268850362502289983983746 0.0225072069596810647864384071229120 1.0227643599985743818658657212624683 GT 1 -4737.6441151460250400278143092579855833 2.3264423860228085446785496879752568 0.0823406315720638610301914046730422 1.0859290155782012928194319714574977 GT 1 -8390624272683583374434639032110.1810477447665284508013782720733018 1.1540065054258449313746547062151550 0.0148778928436517819780102613716614 1.0149896788370880402455431497443766 GT 1 -1124546688445222.5563131292561192912391340844024498 1.5185246433038120685281162964025898 0.0586974268962921896422754659558532 1.0604906468687893982550366981649815 GT 1 -6965845872955.9219520978245301308902380234335065 0.8536741066360070980007223892741999 0.0167666818891673613317227271597782 1.0169088338849977139546418244471401 GT 1 -6116388292654418732551199.7101625808872670851361526096747008 0.0463656519436788313373853511687746 0.0098114353234535252353013050223327 1.0098598846202399877846460758527301 GT 1 -20419383698376801869830709.1033713984084868871830196907382552 4.8155729901507172380257823603770074 0.0779735609568419377252761200424006 1.0811813800848864028361302868197531 LT 1 -19399668190663636214893836944256630249945.1809065785803280290423987750198822 0.5765675943768353084975624807470386 0.0631048780006052825034415130994225 1.0651839325713751523387192476627337 GT 1 -282423797711962.8685835897009467305538937181858927 0.1460624850657537182535795856810213 0.0049693571871722967118018205302154 1.0049817455009441307694523488316214 GT 1 -54139035427428826448984034657503093719125.7819194646681201643884518879324594 0.4690526544254105831774842377987268 0.0235844928870991320628715299906395 1.0238670586630854697387711186603503 GT 1 -407649525332900924351181211489057219538920.3758820081418507706444001448192518 1.2191395905580227707964744646812715 0.0882636762726642994976524135370545 1.0924044494307069653227238906153166 GT 1 -13701112620428580464197826291.5488231490615855287880777031172854 1.1187506548130771095423095996825944 0.0279466993285365632320727555570637 1.0283446399433884385676443745437275 GT 1 -6868635768331386050773584977272242906.6500802009972658081586549259416864 2.4921266227114232968975740283364295 0.0945567601182201933242146857412981 1.1042639800792793609232659078336056 LT 2 -637201.1742741185848372614104054026733231 1.2280270423304761041567191077439909 0.0558555851372557804834942747843985 1.0574761426910383376796732943773380 GT 1 -1608862633492915100050755.1352676545241241821337870940458011 1.2654590021950893539396362019314059 0.0677338734521166754383482349447764 1.0701369615500213426275390879580234 GT 1 -1855451551626.8029348330281385704566690769635409 1.0302082224319194471534041316968275 0.0932745338117816741537334248602961 1.0979155580495544985602427932463098 GT 1 -1458315583542401645471251663.6230383911524713294254785020176988 0.4680303783730664368534146683354111 0.0068326405311576880787559541531644 1.0068560898945600148576683459847885 GT 1 -23751835672560.4464639085508728106104549678220658 0.9387624485355823193439358741971585 0.0355726792528408615959922386990915 1.0362208038072466924763953021292847 GT 1 -385854921206.6927533346462941860208399532005789 0.6283563101013003093691944283972427 0.0227454514837724199363446899464692 1.0230081199159878813519392328652845 GT 1 -148375416402485623187665870205659917713.7318476763216370089980016280328095 3.5220977593172167625448026675132901 0.0735443382978245172719389994503945 1.0763890900929646840721098244204918 LT 1 -3642718724127060762689762806338917752.6582068134565987769161035011105616 1.3361530420076546052109120273656996 0.0433884836764207853954091449616558 1.0443579090005669541416484563737043 GT 1 -1401559088147800784153.5787325587378107498257886523108749 1.0280718026140323065547975137559397 0.0036441458675897769436149612699597 1.0036508019425341110514759315238075 GT 1 -137465702817423645047.2134919410207847147673524448100664 0.8507930614703454628163139371129838 0.0729663021280183841518114963522120 1.0757653625430221468846909065450626 GT 1 -1857177427193.0334061304195402675031696699789905 1.3050224001661396285464601333737545 0.0524030645565849207973102003497401 1.0538260407219266101622390686044920 GT 1 -197846664122378760826064394315102.9356750770305403390748375917735586 0.8759508635947052318973173899337437 0.0844381930298297306764958775247396 1.0882174054367501812434836780548338 GT 1 -6144505859255830.2893569483243860652438996858204917 1.0517881749544899421992101439806773 0.0935138521114901670671728596879321 1.0981795297771126354906425561422688 GT 1 -217095.7752875880724043829742751130535918 0.8154798394118870453303641260654967 0.0060717932059884182174667279115025 1.0060903014994076929989628132573646 GT 1 -20879158017710307695215529.7544570768876821956541013174493007 1.4780314528164542482456212915100709 0.0951896685954425995674846850042809 1.1000299358053660662212311074566730 GT 1 -2259774986011982538508227701523760528.6950548581057385376647797296907965 0.5926214044858396434332381489432290 0.0049168171391109950099249071950765 1.0049289444526867811514742988826263 GT 1 -10435872357408064229595672.0907808067580155364826316128312664 0.0225848992540603868530756524391933 0.0704446651905027131992017276949661 1.0730489417910824488168685158605245 GT 1 -9673390634515255493387351490943.3833375872320105789790553320690010 0.0032110609885653900671854974758466 0.0432021783114886439478815404509916 1.0441631724517065186804238130160967 GT 1 -51.5000404283906113551204095245299106 0.9428405721823530567914161929299992 0.0471023403291178411496420237794297 1.0482477686380603890186038641340940 GT 1 -25.7198848802441687118621066109967532 1.4724043276845465611090477992387790 0.0408475739127999821979144042995000 1.0417052739892374161194457568522300 GT 1 -66035882509956525656647717648685703.3594983939862232483534838285667722 0.2958662533430568063501517507575987 0.0130011261919156559213575804707742 1.0130863805745502641860023830792088 GT 1 -141365015609883600966364410936217.1131846580314692250696137538154986 0.1862524045504185519603262303720088 0.0007184686517017417099766304597936 1.0007187268739939702340668202661544 GT 1 -127.9107472498241787072951625900014834 0.2440075737958346868554550229258644 0.0375910369796530779022700502088799 1.0383158011684987740832964298469866 GT 1 -263754616201982810463397872901145238.8998258004068301870013307546901696 0.1497217469242516352599501874793331 0.0611783454469034015802268657120255 1.0631297490664570781009084929691057 GT 1 -83.5536097140441205482733409565839502 3.4290345618311543800733025196052825 0.0786547015247269610068230543758300 1.0819203960793510770211115538958656 LT 1 -14807903369322715837316611788178.5432303167353868938963981575122712 1.9316397005103693456549686136425522 0.0718198555369315915866845327832754 1.0745294438463651136873625259128355 GT 1 -752623108051962950073610272190153060.1004260260896538180492080261608827 0.1970374332976652783834284556022365 0.0547804731471819747784160399115641 1.0563380749187298913265671641162847 GT 1 -929816153781554283445537653474809741.2767771231428447771364035538088234 1.2487466647571152890477309898821701 0.0502049022470310389756561177598513 1.0515090042270673458848171223658231 GT 1 -1001242982492939334.2382022558873107254578712243004274 1.0009064938699453299757889199253873 0.0514293261306230478211290059168379 1.0527989811869200580187726524874530 GT 1 -7.6234016479176886007177055850626056 0.1818099742147046553950914428423602 0.0061548174554215173051281834493286 1.0061738364233851225196567715419517 GT 1 -2053781890382663628589057259558676.3745193115856378572587299208093814 0.3535326460072346875983928334273019 0.0441756588659040053448051292627960 1.0451811263972377327051059972113778 GT 1 -561114591894.2708740029108648497816540323924405 0.3308793812704855095344474379952578 0.0947080679628738287714389799670362 1.0994978104623292239947542770827687 GT 1 -7411.3938236220714422754617770806079499 0.8726411922508092485930670947350136 0.0862519862891996917743293686688942 1.0902004416980213729189989021227118 GT 1 -38192787813583.7377855172326746627375772832610451 0.1984016225008211087549910382326185 0.0521340601329839957976174810531830 1.0535422003693553103811472300793022 GT 1 -10380929872748018769629816930960188.6696125510144375393625016456661586 0.8386384890484862843522939696679197 0.0612348285532824168289197137466523 1.0631899147063240670890719794137399 GT 1 -1525586996219.7336153366402115510269544024415453 0.3087730641625804230722775148910913 0.0843396859027085627518461553651888 1.0881098192230594439561105651179411 GT 1 -7522583825566647126803931365059242692744130.0616571341233972791054398821924072 1.1244702838265692686291635860195144 0.0728604820377863907633558993843289 1.0756512199273881756503198534283390 GT 1 -6219314073162158599396414164299485542161715.8887473240071781785593326701187191 0.0050638688574311450519100862512110 0.0909606103183383500468775693110044 1.0953668527603786822049920206698834 GT 1 -483491348.8978016854801687707248614019534722 1.5208245582392069209631529856977370 0.0997315634507107363911018078896052 1.1050622972967987329926230653116450 GT 1 -1350709900381401152979403891452785716991285.5202232707253072491213158279310200 0.9567956337244974885002345264626323 0.0249890968876882204711340346758730 1.0253066253675214345152450880294529 GT 1 -21728125785253012194115583779069043582.6667288730061845893627679404067303 2.4187918728006779474087834719134790 0.0311829488943789767260614724052064 1.0316794866652497364951845975605153 GT 1 -393680105946.4563000892282189038482657248386481 0.6295354359621403868445100110378969 0.0664734134249610408766988736436404 1.0687858358756181626306935116730578 GT 1 -313764947100563135222796901783011199.1078364026818786997871082354078796 1.5320304181469560781924869480667053 0.0029358928367770543295997846428895 1.0029402110240460021657773876450792 GT 1 -334312138.6905932851073796691815205417991104 1.9927419026790139001003801938657427 0.0144710776577144445417745614588532 1.0145768049333610953235731430255210 GT 1 -12891592892971735384385311053434939149832.5505666440196124738883630077031549 0.5133957102344923812736150439277871 0.0218064767455633348622796014696581 1.0220477519840208754638339581662787 GT 1 -904894159986603928958498120481195.8257883422407482606571782274086324 3.2858658169093891560346355573087940 0.0654327997412856082933397387983308 1.0676717442827401375255878261278705 LT 1 -16.1840618471651036818480372678093574 3.3098899469106102239809086688051691 0.0590764307709425410311489003872721 1.0608933656189422785285049364773664 LT 1 -10580924068957473.8154847468968451565340850623987569 1.0530669680016124869153514080874656 0.0268346596844978627438478329180711 1.0272012828505130376612708848011292 GT 1 -5858569485739.2351541236713458647544742981390156 0.0682084322360731619217266532911886 0.0222956700357296050376911769178751 1.0225479757554840778511687608720370 GT 1 -3020206449.4971803993923905896142757492060347 0.0706824552499335078336787702070801 0.0882671701778636846994417902040108 1.0924082815823971525901927192961086 GT 1 -62943628150501401278875617210391263.9312322644837996918990902843745149 0.5600299397182642987527991916874036 0.0743371139336194198584473689550262 1.0772451645436702302815144575892894 GT 1 -451227272883900700352780413.1102314133264612501012708679634282 2.5842853311255796682788168058581304 0.0529903536702336222441186665325010 1.0544459996496628233220177114096488 GT 1 -2260578499066575375378.5571217754283494014619369416047471 2.1578715127168560814654862416553209 0.0842603388630345241996208193156596 1.0880231674366701409003166392033676 GT 1 -283865122408658274802.4759382575726320108250661526307074 0.3214086997878050266381981507878971 0.0207913514784122811419580891670196 1.0210105350310657462636202787790380 GT 1 -3819142101339051600998769365.1883055012425136241052561941013684 0.4166678188658117847375983295231264 0.0537413886754462715747001691942611 1.0552393737967977867382023171140457 GT 1 -88254974312113399.6509291729689886322282299892750603 0.0156506580748517657462009286052338 0.0792837751851613226715096829916852 1.0826034065835455136416680526387420 GT 1 -6.3682621725639534781946166753808842 1.3317887752545224478369356341808653 0.0394015032165446270854738797852368 1.0401987546251594570474364642710392 GT 1 -48622548714030751.6219221872483292927031980453944047 0.1250947493879826635295663070445713 0.0926472067549847083808722802752643 1.0972239373010657066835041988362328 GT 1 -26314.1274756519060759808007351035360548 0.3534823401625168995902290648509245 0.0155251235954076292548217951144733 1.0156469003706860074601806042812535 GT 1 -62401012615176189.8462391343182922164182359652152348 0.9160781929532395021616605596039386 0.0980546467469690837385129631660546 1.1032013447314807646650732159906814 GT 1 -1111160398796481131971871378891680.3684766948812715164306521585929211 0.9605971835076685528911004243767310 0.0578472108642973838850819844347822 1.0595878210234936106774413163483574 GT 1 -4146268038909319359.2463515679517946437089252630186201 0.1986426763203320131183447035215084 0.0305015106965962833715217194386651 1.0309763625230234241769008212683935 GT 1 -81702482567925311547856831827286.6569332842532439455405614658452340 1.5815224778849608527097141935036645 0.0483809973891522951229593360233853 1.0495905316366493213218838415042215 GT 1 -169371886786868784986947860455132007568.6213060300199118551120064401518712 0.7869675248736816321234292904009115 0.0714854363750711600293561872374644 1.0741692132020701569963247277629123 GT 1 -143670994168285750293064781534434.7318410760428831932298625235754116 0.1867065587345460895523163658661668 0.0543412427468071938069754864622636 1.0558734967256575903133611594165219 GT 1 -24455307599527.3718799057544707798793570002311218 1.4927145209555539289962262738368390 0.0986241351521161918698313556155734 1.1038329442694470905333825945783663 GT 1 -7397208745366.3783084368560355588530296580644862 0.1384352735889603645111447937614981 0.0041242428972294858563438642619996 1.0041327710431405372743268214705926 GT 1 -36102767106284012643596625325.1552514177185720890693787471209680 1.0028270951978335175827637142252760 0.0817465398469752660488340363332359 1.0852818260857848419815857069935880 GT 1 -24521180281618268223802158102644682507.4954804466169690338077287976362881 0.4779623743187038482257815024105325 0.0429355673442679987634208534471198 1.0438845620466576897199385842537893 GT 1 -194765775113800847601762465187385.5600711658079255938291194126371103 0.5240536421607073320930300243495432 0.0839018947825587592914051219257889 1.0876318182772258722027172091937059 GT 1 -5646590398980987744795679.2154038859731128202144569550831067 4.8626884044575081240754875181998165 0.0049071861440163863225618957646447 1.0049192659166069853927354168377604 GT 1 -5796990634848920324870019032169340109363828.1948985976102990904136759504281229 0.4984137055989748746420100522514946 0.0408317651827197190773685857209576 1.0416887921461307821732705760045209 GT 1 -108221316321848699.7740645154502019721544165114633594 1.6372257128727917650557667590595445 0.0644220582050621859994177149745340 1.0665908210838855180307577391429081 GT 1 -710990660205669992907511801577756438694726.4266067025563123629022371208443809 0.1023867384826773376932176275322853 0.0836417541171743058838453077857992 1.0873478926415884034207441599179350 GT 1 -18886396793112516540693534163356898215516064.9910452144382633890394830752679745 0.1169459618807890407911608869070325 0.0268253436181735040557614497833225 1.0271917099430659956070839038709608 GT 1 -35.2997005490608724756817615708862380 0.7006245540271079141077265588396304 0.0567435088497819672182082624973860 1.0584170384755034751635908203975508 GT 1 -27706221.6922334126411602925396358269063464 0.7809288182361894817464828120008910 0.0916930810527738994108122124736109 1.0961729410338350865452417486756192 GT 1 -306037396.3286238687067936710954517639061275 2.8375499889628618112152055099624810 0.0697420166478260116147876382288533 1.0722933298495542203984439197193151 LT 1 -1540128763696614867560549.5827856895256072810183791032928180 3.1205624571538290252237670286277670 0.0552285251799614480323330064586736 1.0568122063201772275946912886281284 LT 1 -46476950689852422543976727836895.8521309074711379407289699675812879 0.8930528719015693520263857385421475 0.0642448959609549208291427139949298 1.0664014777224449079494899892415215 GT 1 -224481512591751591874655358463.7070277490964010736315281084291254 0.5249148553009083661519623048540494 0.0127629677997779793230413035929442 1.0128451141761749417372690759113589 GT 1 -8826.9398678894537048451097586810005928 0.1348764126506676264224688194639768 0.0270315539962740602230761248248838 1.0274036269173311546563834744306474 GT 1 -20770481210828727617274368881009587889.9757849080660775873337475084341562 0.3105442540036993884971116324543369 0.0395700726376209263765631774053295 1.0403742537686288336185672229011543 GT 1 -72136135687818940115964788779846.3493160473029682973916103670932123 0.3927283034196763959470985216707282 0.0396080004056525190581290048542686 1.0404137449546718970897938504265830 GT 1 -22431932448495857582620818151512006818080372.0788934047854035956215210487641029 0.1269816133184730397538296230644445 0.0801436902395666671146716316994641 1.0835378061802122641791999648032786 GT 1 -49605.0894738086030520421070801050512562 0.0493397707219437188221385180915480 0.0904352627044305752228772081047703 1.0947891045624857339122360661572567 GT 1 -14988562405314669092553401258162776380.4885970963244275605053652215701508 0.3541398640875683914209332031643463 0.0327469304787321157919221800034312 1.0332951119547352756610301936765451 GT 1 -18051723986719006349.7132515426189611715251987366766915 2.2383218741485724448637675053083501 0.0340606621851092635225755706854140 1.0346542440345253867185864910115781 GT 1 -3924962602873021793.3287319171232443003257481089256520 0.1010897185106876591586308620498952 0.0962943200373002517323024489810416 1.1012515468635929974894894823012785 GT 1 -75815.3977031028161021479201314053627221 0.0072653382572743295510229947779972 0.0929616080365506604398363424960656 1.0975705012474471302937372268631374 GT 1 -2185827787412.8169000764005621113654356293745769 3.4978363627947402747738019278091199 0.0331423785081095098006585145513800 1.0337040317096647717964206955189439 LT 1 -6214412886109119940292941497316.3507262375635071007566333960184332 1.2784092457127498707252901016811958 0.0901912240703454450140121098867823 1.0945208378940146941537344437872496 GT 1 -326830464129378066968286.9535954279874004705905252251047480 0.4261234118396778624155599274822034 0.0648241646524524441945647985745084 1.0670207081791258114537035294478797 GT 1 -1731780262673221.9532915714539125873764114748574513 1.3721865216073270949465308741630087 0.0014817102750329318993698843092139 1.0014828090932567986446137620036640 GT 1 -1026806719704680124.6380910405628998020822956776501005 0.0730877707423905037299320985739730 0.0242885112281392968038848194083085 1.0245883420355775279885443092204586 GT 1 -100.6132593939248027879058932043006936 0.0393749887055352042627364551374123 0.0560045932208233477901839293755224 1.0576339785484986533616051076520152 GT 1 -869.0558313469253644614172116269858428 1.4680947072015971848892445456493996 0.0101786694516219902825265295343194 1.0102308263344859468886475248042243 GT 1 -642858923158703.5044811229059343534747076114357303 1.5939279419883419510641437162855742 0.0856328107653382845688675168167004 1.0895230494346234810631851181056206 GT 1 -49622155958829746005118455192889014.3727679407388643456517174118101769 2.2681528416599234304243546450008496 0.0520485862319961891457060406005728 1.0534520293400820164296686873823158 GT 1 -473.4419034300300477971626087362923984 0.1524076585314858252690920604763314 0.0145080046056333724905953200573603 1.0146142748024943484070273209014474 GT 1 -670946370020741832476487616169048879874803.1062547024659393549313041846334449 0.1310060071855421022122221207390418 0.0729601237959226528478657634003261 1.0757586979400828239157329317380697 GT 1 -86044127083554.4520625259586043190973510924685207 0.3625548952182389734157265019799133 0.0325381929327438935007807529690157 1.0330793307568708991881362100077152 GT 1 -12446921734977467451.1714066879860264452649695976357198 0.4032064759228391885668252495391514 0.0843836564954371582074167197959482 1.0881578410143649991781087575065723 GT 1 -216692.1460949208694214050821904762931830 0.9044854316228642730037350100203486 0.0226992989280365483842714214277152 1.0229608942816609180110338780494954 GT 1 -581211457252577.3177687923132127727285263695591376 0.0790944582454296454894990341061139 0.0507965068155335702303502214999994 1.0521320742919584407616928424612094 GT 1 -37300.5259034888137620974849202598598233 0.6345641121786953388685403616898031 0.0924056522030005489756565489916232 1.0969577537324668675367925283123662 GT 1 -676514714879161753908893932.7005083353076427054995079748035113 3.8728726156666379786915203719478364 0.0039682453471778154918843561875700 1.0039761397242163882645371310948604 GT 1 -128674893816116972199772.1444560442835024852744545891637618 0.3038446098572254918702484777718300 0.0047294405365640140124244900890433 1.0047406597281013684829952779946129 GT 1 -320018297192464635121379431.3193652008881890193728372472985283 0.8695497466678903946125251207679864 0.0698764691897794377991445750789140 1.0724378728276089669678461247350117 GT 1 -1613612669212518.5011974558265847824330059563277926 0.2429721798883690820263149567474097 0.0400201980005276818765026231511201 1.0408430343254732810326114823132012 GT 1 -22457776765324953179569468823263148627.3815159145602692266191708169091213 0.6990360525049082881005746864177304 0.0410810132767102869354743204164690 1.0419486844936678371251571839939815 GT 1 -6130789917963358853841018991913055720509.0590103232663650706784509818331222 0.4649088058447662675869185900269121 0.0832802211930729220143417605228726 1.0869534381514689448122282301680904 GT 1 -199319580498030966497553041972.8023123664270699782694591407388159 0.1870089904365312981493599627653857 0.0534709027471130245739687162456145 1.0549535668582290979398948976412840 GT 1 -1.1117571303110747998046758262140308 0.0757303431194485804089485200572471 0.0005688045548941109734144934852227 1.0005689663855745402373810520782806 GT 1 -26860040970844470052059627540039266916006846.2837172035935674773845693035940883 1.0393303847095073502388393254030552 0.0532657778497134017629252464735055 1.0547368776147413941994591584472748 GT 1 -3292772453817916794048.9263941464291536356995191071813314 0.2332426998460879526083534259090793 0.0017468375488265813150247573440215 1.0017483650486594760314245420465594 GT 1 -392733111019.2690759492658622939771912761470055 0.5825516316807928590090410369272654 0.0431083423175897362934128015511982 1.0440651043011673220157264375871463 GT 1 -28132640932620250426211147358704261431.4409872699751702004533187685615600 3.4428087989625263935882998916611289 0.0112412641884403599902077733605269 1.0113049247316579861649524139819118 GT 1 -1491799430890158476928105634962522167137418.1046580984614914058065895430719712 1.3129884893430179573240366241346534 0.0513109383765698968974640699524182 1.0526741825080759569296085597980531 GT 1 -16844343500184790.0851063621149662069477917795602983 3.1667788312842954540315588935270138 0.0624848247392167658343840927387091 1.0645223343237428997138141677502610 LT 1 -547397833.7748814734175882483547412402460611 0.1269985027402145580938287214422247 0.0952244731905160732186411778868462 1.1000684027229978336591460310553042 GT 1 -7643380661316816122233566985459200162327599.8956007564863600730962835295518258 0.6546775247701975874924091837611399 0.0254982838590637847428708924964183 1.0258289989884208689672942765944147 GT 1 -14.8283977037747895679652546872335380 0.7653147966664961092464986186126289 0.0947230266117938204162264170774205 1.0995143341625601389431613627962574 GT 1 -2557238191847256522177246599127.2908634579823791622071455638564842 1.6307791442197829551417239747567856 0.0126131727484996601403402831226090 1.0126933940894873882765641561773590 GT 1 -9706210.7207014077665243826976614190485394 3.2073339052648779754074031100216541 0.0757968074194652314402370348801125 1.0788233261259098946567221647787742 LT 1 -127817223190959.0575004487138076762218665779341426 1.8300094505622654551071236591115512 0.0282393885286008053829672218937652 1.0286457893491498197073664961859293 GT 1 -2418.9058091106022781699852609106961468 0.0875824937350318778274632782431127 0.0556377478791339856134448117216632 1.0572454447931740234464539458481225 GT 1 -235447215192906.7150097629900077554491980895021028 0.3679711956568688163829929750184744 0.0709344043146970277859128861925775 1.0735759337424731539107887198768462 GT 1 -65184669938573075532004093999.6033016981387977067916443691904836 0.5647178500234661478732681795699853 0.0914411243368899399780634714545376 1.0958955878927868901163510363775283 GT 1 -688384820632630428907325582440.6395662012789205606490609891891161 0.4629163162069868280434388591387898 0.0113210652788613396801156858194229 1.0113856363431069612770895087199349 GT 1 -417658334571741516892542800570.1527284178881195505629343480520636 1.3369707717715269465658523197360137 0.0763705589861755132747132214572557 1.0794443256414696084514258696678870 GT 1 -16606591419422770469686190194314302252.2483747061531718616720378674818854 0.9938063250900566478357134795943430 0.0183128813137529950083478862390860 1.0184826378057805218144489381330878 GT 1 -7259630227.8244740610557003173377207092038695 1.6420252927495436902430011648751600 0.0118076967717220111212744055150675 1.0118779612789431960986645949139245 GT 1 -4356.6806770255905201226454380418673031 1.1383397224645410261494166336167902 0.0448619760460107385518722163223951 1.0458994212440163951606063555573348 GT 1 -362611.0878142597696486610079361939903628 2.4376958194521705724420380832547804 0.0384748529487199613764708301095668 1.0392345603158215687924435125227238 GT 1 -5333431120840302889071.8348660349523228828273467164056165 1.1781581451114029650554314650230466 0.0994436596106592217884329716172437 1.1047425506493832784279397817569075 GT 1 -147785452698169609939347580814464874058538.4341976396027329764913218800307775 0.1716708600367899791155362897191799 0.0516340949501388585696574414731196 1.0530148754056164336742635664388831 GT 1 -287616718753782971333590017222831679624169.5420787604254351167659457836194853 0.6097683284872121309725268428363822 0.0821682783466413719559910471373129 1.0857412149107282436713859355426381 GT 1 -4393429177119116641282.2251443853696742553208711225632812 0.2243389489882369157622074561408196 0.0400356321120870827849699777087512 1.0408591119925240251854581781199924 GT 1 -55612716141665757144529630842.7005820426713031352548513424670219 0.3759372782624591964232492781133153 0.0109544510110308648652571115925328 1.0110148928193760827035865611829289 GT 1 -858382183.7883298046707750189184277366263762 0.5878879234767950962042369816018648 0.0053594622715202859000540099318258 1.0053738757113647315507937955515254 GT 1 -9431521464108726783994507337739410673990.4370721216917738089098861177157589 2.9357286711677069233169495907813245 0.0218311689748556942928765310507272 1.0220729949859010290780568082212750 GT 1 -752955.9497325790326720440592479425841720 0.4183467444222219257830353118660181 0.0119690262334996914927894804387262 1.0120412317595757243030985110196501 GT 1 -31.3271767421868730165227588874408423 0.0579280850161524139687319254320585 0.0977335713376732727348914358902184 1.1028454270771304842594561197180376 GT 1 -22.9464898847707651253797715464964181 0.1442875168588916438915153209780040 0.0046526849593758344442034231526052 1.0046635423885965761114615081940312 GT 1 -7104484240.0138668421223381402952175881311504 0.3922582286310588708056901672546738 0.0171797549863621732693281012219278 1.0173290392253003105442791937861884 GT 1 -277590920905280910329249045913585484.7241195879366207235134789616781634 2.0945053056004412928185653508604486 0.0758449989793581347924247854760747 1.0788754713865749079940104262912607 GT 1 -1010492998088890254374179.9565610067841509077209255988534276 0.7119729288129969357558846289851107 0.0205011202962784391429790734541054 1.0207141853412058303581232917003300 GT 1 -591899873195679596579182702.2494940079595020499320074894240334 2.2110424269694844228724875120281128 0.0495127016013795536400219931978223 1.0507804802164585932094318158020200 GT 1 -7179921246838858361655141705591141054.9027460922332169450021317908247484 0.4208007774927426287610585753036855 0.0627878056027379963104826298108059 1.0648455609123794467402910342165440 GT 1 -834.1835981098293509569638792089128314 4.0281285593190902755454252754907034 0.0252687347303023513423873156776669 1.0255934713403544328877316962120066 LT 1 -7203.7888090419811464953204707109822090 0.1080551067098199202999058851176051 0.0428723624514093679490978056597968 1.0438185238534529146073583153224687 GT 1 -476453686680356475169440640610607660582387.4457997995585006655328636981009334 1.1907421630774225188633130807569457 0.0243756508914580002946166770819598 1.0246776548659832685129234891139374 GT 1 -2893867190230630315619102220696871123319.9304733638997627313340679053883178 0.1900194492247776191140857863981891 0.0975284998947433113730849736907309 1.1026181681044633508273702377587979 GT 1 -423654851158036364711203858512.3757023638346548097558708126431827 0.8224291534196615590010249812244982 0.0595915629636616288077766476985618 1.0614409906036629561533489534390781 GT 1 -700702825174.0788932332141894476346209576945799 1.1511503627309773192678068090980465 0.0609696803957685780240832424989020 1.0629075110467779322641368738841337 GT 1 -1378557.7006685634529769060144815051607760 0.9113196383126724127477331553792005 0.0393049767687807358397399742041785 1.0400982739366654180197989144644228 GT 1 -23304.5584482757915986470505516030639242 1.1334175338164569934454200664930715 0.0703220588309807855297235266479583 1.0729170526287231688590319946192687 GT 1 -6855858992.1019850870361804748045395384117475 2.4291934430345991669046723080735382 0.0991796642960692697547867540449884 1.1099042901488510555631958172491915 LT 2 -91942803751752753066675113661881805607948.8821651318276890496920744580891056 0.2867087347750549958816482331675232 0.0928395674239302078406960949409272 1.0974359618450908140437042441374233 GT 1 -73149800292965022.9478855196579527621669741059949311 0.2760825029032075517351520395893973 0.0161729361321194419104255089739712 1.0163051454771383683331117748595774 GT 1 -2389591088807966442160630143961.1408814570948546173834197852787677 0.9192010502800749929169008134808345 0.0543492286930764119315137141255510 1.0558819416112235668261720188810255 GT 1 -37112462748823360.5675000481816000905689009909184913 0.1774902514841274199360478813309973 0.0567393679823024399980185567215117 1.0584126485153714617750670585780196 GT 1 -3218204888860818799337196.9283532930379709066335626410265062 0.1982969034249913819203823201353985 0.0106562536084396924861040084895996 1.0107134380899700189595449580328528 GT 1 -1275566880132089901.4412322752744195641236400533916382 0.6119010970683838727385329085768653 0.0873407724712967891089192077956748 1.0913927128262664911057334250718116 GT 1 -2845971.5797543598291208377064890202208682 2.8145231895491211932605324807835500 0.0738940978204405441964269558734590 1.0767666856704512901909176121719164 LT 1 -304627517255537608705877251409566026758.9491576973917514307232942099265991 3.0487089924406215595140425209383764 0.0965791115194190674877783443242435 1.1015667339561294238584172533540474 LT 1 -120446878571973266483364019849.5962454387456233580270682244109051 0.1226014908462558841249613754460511 0.0702265319565340733928764011421319 1.0728143052548929383308117175999545 GT 1 -822383147443847504283220490146899339249.6745512136538896028484352927823263 0.1148152058542252039761649772356273 0.0853012854016162042921627793494261 1.0891605415920598443706126598107592 GT 1 -33157429889935291220683.0958916029146303957183710365056635 1.1245229914083346966217959178521577 0.0741508585160114012923086684512667 1.0770439717720707701514419949045568 GT 1 -9736426775322564923528617574392.2348376808811355498801181799567247 0.0403392167356983328112955596501077 0.0456858810130648973664295505714186 1.0467623965442689222223319064631145 GT 1 -2315865773.9565853824482921739058251188406601 0.1328315886247675644213665843930083 0.0955823211512341998305552874243345 1.1004639911701195668695153039015265 GT 1 -378751884874069507210123.3605817039886709264473546643492867 1.0208023588561074606960236536141648 0.0794119305243079579151033667048833 1.0827426071923215349028965336979731 GT 1 -51663780080699165063252164039.0379476589270563977731270476419091 0.5254310277800354606963095664220494 0.0773573192329135448866901702904645 1.0805132475290424227296116705567316 GT 1 -43213763985022475385886294661207003996828.2700660068613659591909819758854315 1.3446361390848319481107148254876352 0.0454948533472329717431032010138746 1.0465622438426398990402692147376166 GT 1 -11790363797729965960483820937828435.2057800084768338465714684538081886 0.3786681979105618308492174238695913 0.0609025063087010455801563923659640 1.0628359780162561097756825996350458 GT 1 -37262926519555357935918.8992194467755854972977064325586666 0.3929707809902125301952550904088525 0.0011665557116301544704881513782297 1.0011672366673777150128196849616730 GT 1 -1765765666693775253186478736.8929124011927029773755426779625656 1.0762310674356932593934862502670423 0.0556976576177804700899474748948601 1.0573088861674031418893460320932027 GT 1 -187044494213361169485806852358995948515885.0452959321551929903777265529048866 2.4369805450396195777331126127510453 0.0005334290438677117944881189382063 1.0005335713677555133812160725821249 GT 1 -1352964834758872122595765989443.4868892990969884608372945336793922 0.9441299063120279228182211619589316 0.0802261945928525501935108799287801 1.0836275028563657560970095266120066 GT 1 -222850.1196159801892200433659055806341541 1.2172514097835986695166634208788624 0.0476406088291157632817985852001739 1.0488128036962757084009394378335798 GT 1 -2890890628548874382970066511896123718516.7227604538481349085335751202875577 0.0534073724895689038462217601258288 0.0726387980841190728291073832399190 1.0754121432289032035959016130646672 GT 1 -44485810108666694642716962266556047119.2233704147488868019325844823245389 0.5207134878163143852959306958418015 0.0318185684853170085172626922311909 1.0323357800175220051850713050498537 GT 1 -191025419150291173692288897001007.1759536371074236807082249253707090 0.6693454173983632872341604779123014 0.0582274163990850143181438362635301 1.0599914522346356992009757000465496 GT 1 -3475979393469600095057211398032953369.2375455789167285643375366867326261 0.3312648152329019349103831251067372 0.0607291975536616058676936048231359 1.0626514468400351398918646674850319 GT 1 -5185193343381952056731751621568321742222474.5807782343746553902773965608337056 0.5049870306345458839103080926839526 0.0707838850412575339900555612209977 1.0734139354050773609502014976167043 GT 1 -1544785700971385990557.0008526768241972050616445145631360 0.2969597153018248801316776511893121 0.0982326926026129550065240153989016 1.1033987662610917504615858926918193 GT 1 -246939314286903361173034859614343.8539698628663097217466246420097422 0.8256273749094214228191626842549010 0.0907273235701430134849762178887423 1.0951102557176342766209072891118795 GT 1 -697212106048062274.2419644310488855532855475727641515 3.8647189649148772203839720082092980 0.0206094991401113892637729163035897 1.0210416756526179008384164577873975 GT 2 -1179021102.6560748347069132348863907019719336 2.2469446222310970642146192932557045 0.0155017083064063659553554845006715 1.0156231161065002402754141098834679 GT 1 -542646901313652872085778771407060899241.2894575781798343694516828035048359 1.0076344693422170856606553952769958 0.0614609835019399518632024273211677 1.0634308505665898982273974312725960 GT 1 -1020775352825222854826109059326391.7343957379884070493682852422501179 0.2683386481185193600773332576415038 0.0468040081004442048845299025376948 1.0479347386556522161641401783730716 GT 1 -71724202328423550697323227212.1014428594363919204595405141741788 1.0520579079032875118348917213571699 0.0402969234407970379541356422790168 1.0411313376127265197310706338540856 GT 1 -5961432.4051802298408893784064725638722995 0.5268165321341566653091754555189139 0.0268240629764252416973529313901009 1.0271903940015777543865556719392013 GT 1 -20457583458374705233175499821599298299310.5496107385771465963177423011280318 0.5405345876232877207833810294481858 0.0643358152677464718456282597281858 1.0664986438758650512840266756995064 GT 1 -53235712287453798340147386839.2773023788609477446196615613622379 2.0784379810889104603217700482157876 0.0132778429682455166016708282460084 1.0133667816786771033241901582894853 GT 1 -1423128135893573292132598873847879465094.3552665295282236134386473298449734 0.8210183949282994870899273410908543 0.0214087127312409095910538938942674 1.0216412034277750134864973348385645 GT 1 -10497453078045301373490914863773.5859529430333214004244309160954906 0.8522803050047508470707371838901797 0.0383909412461817955029319375740071 1.0391472947445076956456061394324350 GT 1 -22899228733885650366.1184658288020381534169032089893089 0.0050153502709920261486592118111459 0.0307163451047058173396295751359072 1.0311979804181867981257605372644348 GT 1 -26063990142863936735511235715267649970779783.8923221760315502398311828743045952 0.6963140543539731472199374008851220 0.0232732468032886297565928834177013 1.0235483454871227397394422463047841 GT 1 -14218624962164116889977661339.6321313966802812796235715969823828 0.2744398779267989747763121244597889 0.0307378026911222071122316429666409 1.0312201182349352318324307941774670 GT 1 -1519295055752812.8545410187646749773852877087227225 1.8819329985824391954628542995064225 0.0777877883166726909335011654746106 1.0809799173937922759486029996358891 GT 1 -22098763601231.9485276544539800115786081070893939 0.0472895096003877948296042927638216 0.0839571208334756452879340702786901 1.0876921040864559747596860073745455 GT 1 -82343482851900737696244972626264947300581.0141357844418490728976077601196281 0.0578071655169175274690777090027560 0.0348308940030934625000214574798927 1.0354519536207441616728199005940508 GT 1 -31486736117840363376873851875821621.7843772658229012507485586471715097 0.1621545129219658473877943169642213 0.0470109258316274066803024920267468 1.0481518400648272994993047845045318 GT 1 -3222663155.7713268279719883469036070444027898 0.5040462223648740102881340271693962 0.0861754142263978320917384635057297 1.0901166452317488223728275292871112 GT 1 -25.4835019799606946117686444181646847 0.3001319637598735806037454369181802 0.0977498484560448363489852565689717 1.1028634674969864706935645469554170 GT 1 -1.2475970136638936337204149994399887 1.0391715966209674069701050450150517 0.0221828108011652504010703543834217 1.0224325495291974365062830236923426 GT 1 -4426701575002373245296.3065617108300809784100620638973744 0.0078923865389422748587410128790180 0.0654191233178390213404135115551396 1.0676571104250853556561392559169602 GT 1 -165059.7157941630806360150084034209912761 5.8020834799016478494859192571875700 0.0415196856860545240630653927088889 1.0424062547209654988508582355028516 LT 1 -7312387658468995623116968072280.1328593872277252169079028679729953 0.5725220033170072955922359785430605 0.0430305730660328623671645785019516 1.0439838348169557591185759817106920 GT 1 -8501810850197528071.3915925965112842053437472606212358 0.3178671024410306568562089834547277 0.0071711768959828274428721879341417 1.0071970133777718897227433001117928 GT 1 -124991.8482133963328092443034329957732158 0.6013536455339909647623663701456728 0.0665213025637934207872703958691219 1.0688371363612172104649119853021138 GT 1 -8328498849.6048263402457163964182624084604188 0.6765101067139124122329589587279943 0.0917463547947421444095809469072041 1.0962315944506655599647225965025687 GT 1 -72.3604916390540184915919688853245740 0.2389149105646034936494185788609053 0.0775252767862147074138666864052644 1.0806953037531100041313618364499884 GT 1 -65371150.4258349073360065774013939263034029 1.6878598441187195614238596244302746 0.0591830544019043370395691209045414 1.0610066900972492132564924871561078 GT 1 -710480711529.4236662299757485533785511549115203 0.4554952240058388516121854390509209 0.0730017065132589976550277639596626 1.0758035543168533750362239353002114 GT 1 -2395656006992988761859152891599996.1294761431951657585262621080371906 2.0560363213214286757706055096759928 0.0794891905812962983499329586718780 1.0828265353918542915645293802834992 GT 1 -185055.5457002300403081886844051302934238 1.9226112682218956077521763191247161 0.0210027903397601028812583336789293 1.0212264866495190241398239429037602 GT 1 -251089084943736277433.5777240617019414865900798614156867 0.0104431172908911481247738655723529 0.0474836247052936259859236003395107 1.0486479802186073350983632557727671 GT 1 -116086756977042187.7366093817150315088339452679176926 0.3974960260761051522216568814045072 0.0473243035833057036676271572125621 1.0484807308113429123407965384140575 GT 1 -19791972869196009317267563183584678633.2173764219903114336536004978620461 0.0185872861837147237391414960392609 0.0561622553900852981254611239377451 1.0578010083196545324760489938407420 GT 1 -4601328683192616835429341516282.1525696945616598053561303024801820 0.6085494882111545294191165060032738 0.0738702312849316873866625181569145 1.0767409151533565080216458897083175 GT 1 -2565399641.8673932379643217471282493684918160 3.8885085650391803657867837220653435 0.0252594086552755124392701400888158 1.0255839035438301924119477287839703 LT 1 -13708650004837113647189.6605481793992242197795398544465615 1.8363300773088554023752548386789122 0.0541200450288881340633100337305408 1.0556396154759661693148988697982637 GT 1 -23437588460778925915764.7030503096704109187394904398996507 3.2628418851407466373461657213723072 0.0300163431341561520213241997599400 1.0304760562185612237573855321257886 GT 1 -965280620389297446367895254028514981305.1074131424549053087593397940167927 0.9084709368268154583020307358056124 0.0737940344714572843891345205573965 1.0766586440918974515056952877720807 GT 1 -11480847007979178044949564.3447188727458002977526971389753850 0.1834331504002718205289668940858084 0.0383350184918595616577192109214775 1.0390891410408052558986899105230181 GT 1 -32141813295363.5812853112095718603096698954449131 0.4817880818006841848314772169782443 0.0327126284140089557768825433323612 1.0332596492019306646949964836397569 GT 1 -490693273461846535388489955.1731088951003153276889811562722136 1.5858106634420453905901135074301864 0.0452442803815736130107231011979157 1.0462997621969679106725047198388180 GT 1 -4532454745.5066359947980355591379362569741621 0.6316063713861828601005349028487947 0.0625550187079962127375001574491021 1.0645972094815609689632908004037037 GT 1 -91.9957403630973572543985626571944873 0.9262996504946824817597273830261349 0.0612683071509012561133528448907740 1.0632255777194124476701736138772969 GT 1 -106.3469311925812104848206031614814593 0.1671868655409572242768033272682375 0.0530281854257666966922265938495492 1.0544859490961796321999682872693328 GT 1 -76682204976435.6725917987071319886520359800163968 2.1773568938409191377786435096795227 0.0335146649116769917635781939524219 1.0340891536632238297252506473638253 GT 1 -47380897.1556662742724244909333303871662141 0.1888837846966926094990765028198674 0.0666954486774555826535452665002310 1.0690237098311507100776124054326864 GT 1 -3090044897733.2489035576841792138608469863706299 0.2119999146006173010566325176286145 0.0848629508559825666644572639848464 1.0886814444373277236093717570430035 GT 1 -2109814367840.6467207605588938846165986184627404 0.1666862808717015125601708885702466 0.0077420896678410654844958707952455 1.0077722152346810564187816470738423 GT 1 -29902513692482084308749.3987514417549658427843113660527294 0.4089806345021996896006671007669757 0.0139959632464668524425472947239569 1.0140948303173618854147633761518577 GT 1 -20339305465698687383946843127981407897153332.3151305692163242343703264016689339 1.2382869483727707826189072580407106 0.0608152512256456377332783012068756 1.0627430685683089968903527074252974 GT 1 -2574858.2918255203554227893340738677020703 5.8345389802651189383229099183938371 0.0574946932865083690049667962751412 1.0592137292105791237525553042340895 LT 1 -5834454.1874684688935128944896589606240703 0.6265191261025285946946029771317763 0.0731819056300181349440106126716613 1.0759979631250903355123538846570073 GT 1 -222481760345753192234732482005.0134489479346011387176620149948685 0.2588934773850331326524425139554710 0.0937617709403389728395640063256578 1.0984530615214277395786977093708470 GT 1 -1076666145381258750.8066508701932232153321324609881545 0.6347360000886005506389394761733493 0.0354719168842956930265722283177507 1.0361163302995284378289164555829253 GT 1 -75.5657736581767383448020826513308245 0.4318612137676781677149951038232439 0.0445168019886603122255745670012316 1.0455380999552779991367010991097703 GT 1 -344444994033531200973316213496619817532763.5536409327369201325745584289691433 1.1925169069721810319221855387336763 0.0909715754185114899820595583472617 1.0953789151269056612484789381833403 GT 1 -299230584791524231847837673834397868.0898451398432653001762425137589166 3.7868867959251871905687437931381710 0.0870881592993609942066970927818153 1.0911159630705934654383189196155684 LT 1 -4962989164376.9712724701174539772455548135923145 2.2060756098307468069188251616643311 0.0914821324340969866958866425340184 1.0959407242331938846102406185198727 GT 1 -910400307159393218175691877351.0927556809050676025559198986019573 2.1272704658086636988541315211026438 0.0963268507265130895709482018031700 1.1012875445069095327763599373563788 GT 1 -821627029752629129275404322917165772906449.0064326682754887643764090653417800 2.3191738509972662870832755419991767 0.0912894937274702355864498840922636 1.1003107034810125417656491379223697 GT 2 -351376599599270225456.2723704222240796507487800030806282 0.8572454106078246316053653913186725 0.0357043074588479324406561571745116 1.0363572964039591785043530810449039 GT 1 -392808843088027929779648767615.1505000720428503638564001495483513 0.4053667069932357209187385914603223 0.0155470477852073251432599742400024 1.0156691705519307667357011531143564 GT 1 -2642395771086949490968.5268551726369724051675084543794563 3.4001822270964473262635271262683859 0.0060428616331279847881814219421966 1.0060611936105318034549168821670799 GT 1 -65773012282082.5460012800832799720855033995251830 0.8136931393579270493354482711403660 0.0969133802483433351282341123286471 1.1019368057451653810460543394784401 GT 1 -263559885997.1595358159876554638443063099577842 1.5473991678827572332728390177478581 0.0636200701347191806618119280890839 1.0657339768871741579254681222842022 GT 1 -3521155529269098872110.3047006079726179046764844533418359 1.1142370067804512869772081470030166 0.0495774732753119238737315189238100 1.0508486282928180134860038180135327 GT 1 -2126587771427.9683335074379242713596385915096556 0.3080017874028286163187325670328488 0.0345605629544256530372566425048938 1.0351719061182001689461664926349396 GT 1 -1529483225292014700274522510.3714431141839456227578638010485101 0.3121232875652093863757620881278348 0.0308377473185539088597588409601909 1.0313232376807519259818242280127070 GT 1 -469661.1618321168735203382106055596693328 1.2281876324217905385624137479407557 0.0291946964826023778586348204142576 1.0296293421065026275579995409626397 GT 1 -2893938880918298971406173.8003873454757562061915373676647367 1.8581292292909464292778772025344249 0.0769713537938848769722435806409784 1.0800950089846014346772717929257304 GT 1 -5582575689895586817060046783142353.9152385062978195786547390978307984 0.7793921364202118350163801886739396 0.0435639539187781883283001509084145 1.0445413547719087913780581639714396 GT 1 -1799000.1489114798949726557801112829053514 1.7660176747222243824788554120011970 0.0546912414980500840179779596851061 1.0562436762790592781386383616825229 GT 1 -811945912349579665274840956274472.6948433955476846843152827966622161 0.2895023887077078701091849737742873 0.0762391751011569670594914958309519 1.0793020883593270118097696125393182 GT 1 -438458520933927937943082769315.4918434270870048713430377810351131 0.1132204493414151114186547120895985 0.0325369688785181436796922693414580 1.0330780655353991485766902077687348 GT 1 -811243578736032.6730009499092037172384787683249955 0.0014289387828137548159312945738700 0.0328709767901767920920197785159014 1.0334233661523737342265511319751696 GT 1 -1912980625388469347565057.5892000776172307155120009034619941 0.6081636258756409846429230198377144 0.0521683300466101095519271888224968 1.0535783558336575453717012570832858 GT 1 -30167287036088303664500315681295577.8118021270699941484305499585244989 4.1755382661752100822044702684065824 0.0975284317891057985974916889634428 1.1026180926387728165413846674048502 LT 1 -24499080642906559.9949766392293805446488415984408553 3.3393449492470975016979264422535786 0.0831476119733833059409448385499750 1.0868087923913297822973933380258411 LT 1 -58896300.4993871884873736534986976480874313 0.2762822651672282900572867503563583 0.0744870918852322169278704613945881 1.0774071998861940162885275810192857 GT 1 -1167151276365316322846501313211010264758889.1508595187083824710481473379302665 0.3242132322510090909689424383810092 0.0553831973403929176660916498557357 1.0569759335567866497997699681300617 GT 1 -7921566249960.3459742566769561479006459436272018 2.7257119532068589089616262254722408 0.0692117161320207973304072474936738 1.0742955603465096007324491650374046 LT 2 -142410627895382625109608887771450617.8052630576383019634739109332111436 1.0195871231125638188746224592691558 0.0573167219749843493514410413993126 1.0590249191217705095619008456520305 GT 1 -454747656665797492406426485828.1459992456701002898585543682653121 0.2872711222865566839313856146914921 0.0105377178021069310966745285948804 1.0105936327075707760313596223858308 GT 1 -18.8117031927376847564876003624538389 0.1417078679624937724396315121257519 0.0992805213272165040691660590890728 1.1045614142768607050452082343254355 GT 1 -48.7829999429087143756328917713251415 0.4976633115876093261451655673406753 0.0857427301708808580186820569867741 1.0896432702980491395645812367122920 GT 1 -72465004.0098120608975996726674985929858413 2.4544016803735452704163450724356266 0.0757537035590145230266243361254294 1.0787766882700046857899425779446794 GT 1 -485761502175615894365.4355357558037896826049186962299994 1.4927327920371182534507162849511040 0.0956034605646650077551738201163239 1.1004873649508186415169247071011787 GT 1 -101271016038854744229.1055506131260256185443212990605196 0.1396582598119871230118191216690155 0.0137372353988756133652339715213879 1.0138324643444644273674945364488278 GT 1 -125820906327876077297946283.2572550251432793155916689914523077 0.4559340910150166427618940848418772 0.0921893658161557015144489893711432 1.0967194747919384691182435286216864 GT 1 -8070110268083726514.8121578809567534695915735179077264 0.3150651498494519605496046850153527 0.0937985883757924737248664499004916 1.0984936890100702558840871700238854 GT 1 -14174.1443173309474295161080576533578242 2.6218479995069595675583039775452406 0.0853592053305453937272474427782512 1.0932043139510094621177667489071659 LT 2 -39709009780089506145944147391.1067271141140544226198336078833842 1.5708074277866110219876107623569280 0.0231369136453419272244420140507045 1.0234087735509794513345736953607092 GT 1 -153155269476999072.7878550342330996050815163670132808 0.0944718810969122146920108715481631 0.0624064108870687272143436420476558 1.0644386977329663235386293152106459 GT 1 -269046402640192374981.6764818260956157152622328245291100 2.4823719874148955062541177001996452 0.0795662437649145938663562186363336 1.0863473003154036830403534510306067 GT 2 -132710100718536483412976464261741636704010.1061188783378387329511815979283222 0.3997114777840785222399790576059111 0.0122360851430865437072133862391369 1.0123115623619585225273910097493405 GT 1 -167676815831425747748567913714240385765.7712486587736957277281898778895138 0.7211174671566027295025392821154895 0.0838390650585149232386612739494284 1.0875632365726836883562308603449644 GT 1 -175177550346822905890790610.1408160877193849960357575085674876 0.9689781189195773129604389065889169 0.0174454871802836472076505729055630 1.0175994529919182292909511030822297 GT 1 -795893401925814405480674617.3632903576246722635070164560753883 2.5562449558776698706712527161903145 0.0749462482130287868022367568512980 1.0809379055638564336502457609958143 GT 2 -65614021908435110591061668780752058.4676489068597801517897434320998089 1.1745253931570163963322536723820061 0.0740425510071010355761731217748581 1.0769269968033123182304343248589934 GT 1 -285320939043965170965241418.2851958615101852629690155875921434 1.0399284417164602894120858596224532 0.0110351684131970144656854486234813 1.0110965075601313445739312976285907 GT 1 -568918.6658229121301921579976030143441352 0.0810985928447435460083789846415334 0.0698083427033379971794063437616185 1.0723646309523531690422735882898881 GT 1 -428262821540.8186520806115681024616166113394175 1.2973552637446245581833338525103040 0.0681268770521668125388495635069972 1.0705586077397885292326525835748968 GT 1 -100418603247598198737844.5092246445007161617792718240923412 1.8174140279080893473220909331572632 0.0978890652629330972998465163884156 1.1030177789684796343271002576612159 GT 1 -2996199700511630355296.9045362158813484141560414212035995 1.7732807410223037779105518222678151 0.0721918414750914277096705523976644 1.0749302932941141884337512030151960 GT 1 -29659659373159.1334664141849855546310571106611773 1.7478250166958750049105047638479177 0.0298273569463561016731844723452688 1.0302812407921900497228698597379456 GT 1 -95986006724472157759553819531934054.8779453424745203501771260184178215 0.7616365064095804498038536645293952 0.0852329168335456681883746470471205 1.0890858000274064978716416555291116 GT 1 -9810038809972366895642065452063207686.7237712530455119982237770077009007 0.3371031783255607237978799244211673 0.0318066479068359831029504648525996 1.0323234677538196596908144977174057 GT 1 -750818821.1969316692135127897450915595696241 0.2196654548786437059950526435104973 0.0555675733877863336916901419741352 1.0571711386844475732836521228663683 GT 1 -523.5401521886861353509913843422873622 0.5090176660860431040436867776733365 0.0549731366003905650463509601289726 1.0565419250145367526183264655768244 GT 1 -2628.1992973870487314270467867422415241 0.2103559737273088666669838449934182 0.0836631731275361988881450710666554 1.0873712669723008952557571146079238 GT 1 -5095095600407150.7124087931936043334419049634347520 0.8116281328021844631577197706059504 0.0013258367176687594492050248486115 1.0013267164168139740124815998277939 GT 1 -16512661563197556961.3295203625639971372959066890690085 0.1978995279826072886491526897502342 0.0434726690667788342243086179125352 1.0444459166122811766505837778249337 GT 1 -163.3966984046826909151068662365266005 0.2826423069616066593474039132922335 0.0503538182981535428014778592253722 1.0516658040745154889612602802078153 GT 1 -29238051690.5357350457057512921828109008993345 6.9439164028339345978103149716980281 0.0178974065314511993629674741503511 1.0180595020841406250919744677249035 LT 1 -2364921337304208064687.1166054581884395099908690258823988 0.2612742203318419899360890823477644 0.0476526493052952148703513503508716 1.0488254465624082856118917867592010 GT 1 -187676267803654755865416602851491944462.4581002888753898539224260666044269 0.6921694573945821211737621139867658 0.0319789316625629943668045072562579 1.0325014271310082413757074450189360 GT 1 -25998461700046850267319.4386598698330359041305601354530856 0.5001305077656271942590389164868671 0.0722548153849076935075710011393794 1.0749981694455309704985108493042837 GT 1 -2429359811859979209894854770.2573513630248359956895063998401042 0.0461861669771131532157440552916327 0.0326435503461478841260503774829137 1.0331882375372800024931247031723423 GT 1 -1423907839970166760.3467942874409674490524693272950331 1.7244942897121547464626692165220619 0.0784062130264599567603377723752538 1.0816507306284039356222071970368523 GT 1 -215522129646.7764307791498589342988943075942872 0.0192764070705965556634000443597101 0.0514236822636706099541748171296140 1.0527930313401475866212548292280006 GT 1 -11722630211372.7386446246051449312276134962472156 0.1351197704454010760805649831762835 0.0670879852087530658869389421291067 1.0694443861280113537541959901815118 GT 1 -14039215.7262252058687013903266447398898481 0.5797838031122419979385369197269518 0.0296802606420230641452501934176752 1.0301296335960494747819806568861336 GT 1 -221685008396228266216247635552.5974250324359038937260271926872190 0.8071093524576095921084950020190485 0.0390047285986731889119543828945970 1.0397857905220493026152511329840619 GT 1 -610.7337227509074566302214506169957804 0.2178503249989175559786057428847172 0.0896966569108561268111419534680733 1.0939773909640224563794745176466945 GT 1 -604998.4683640718717591343954511279302815 0.8829442192239123187100266667634106 0.0436496180180971628914304582380104 1.0446309247292437453733019414109130 GT 1 -332549948094.3111716125707505493730699612002518 1.0126450885695578034627646834720304 0.0318192224001035114794188539803998 1.0323364554229636368888143700465642 GT 1 -1277653947216637382953834684.1341188807653621480756801245325213 0.2898045454356642674135611800378898 0.0981500051282195360019914491251007 1.1033070755522619793515728435999378 GT 1 -3374639289155497409756554556844486.0220203565217339943059141175708544 0.4539516821358575637545039295398251 0.0412516176445851253402649972508659 1.0421266135454688221912042208093756 GT 1 -53661781364867427884278034071140261772978.2940827472377462028543013821844682 0.0140228137605178002060895864126757 0.0689149616265076507272570670679770 1.0714046649811298680466775683667496 GT 1 -4048323141918265965632212273055.3925428684441624478112289637958626 0.6106367263635413665006144313945874 0.0311754454935258418054012988545688 1.0316717417852559957277572967492616 GT 1 -2020563222511122366814946457761365548665996.4048571941622072789159546244684100 0.0615413003274580200024651688069550 0.0201938759216758793305912491881855 1.0204005594621028868634064941023369 GT 1 -46853118469856967010548420.1333193009348299509312945158320215 0.7658705126002717299428823109189119 0.0998335004545530619422566664799075 1.1051755332731815915715396544000297 GT 1 -7973239573382198580552816380868.7420143322021274940110937140639560 0.3240672136176480061503261606375062 0.0921976680193375361941475395621298 1.0967286201366089591049139621895974 GT 1 -728906434281113.4501102748821494474768872436902205 3.4535820668299155510292034945058177 0.0377341620519294116652910417934465 1.0384645276676124333842709207885119 LT 1 -1988508634166024094619164301202194766.5680229270266766591604481482978997 0.3597401942367735395099685807169264 0.0102127338709472849789456430121815 1.0102652416420228312145038031907865 GT 1 -1181046656603380995145161160881168280115830.0800352613946713146099371997064736 0.9588973140524147632002604028701694 0.0187328432005724686688938331282878 1.0189105254020140692378232579689517 GT 1 -10941115356799325115075123400311555653239.4444548702546921180369948599899405 0.3327035118408627751534781125886393 0.0842260701864513604082770359888142 1.0879857462821054312660680072717987 GT 1 -132.1023883656242974729722924164075674 0.1210888321302254180862415368721113 0.0121583836652156386239843968626311 1.0122329014383235293138269595773220 GT 1 -127602605.5910743241053445185268316742171661 1.8918166695100264999145177292318028 0.0645248270718180314818447474183240 1.0667006724462552054702248624765281 GT 1 -24084585305407.5807035422402688694724226824157521 1.0638943094045450317683392949303157 0.0177034992748868251839292731239815 1.0178620806357523415612470577035742 GT 1 -5418812711978832292558856672.0782269715185823453021179232202882 1.7520157595443010850773975179630387 0.0357191269118857140486420394248648 1.0363726646846924227284809201248012 GT 1 -13029279324644755168549385.0889793940070828227638758547917241 1.4521949973424809635415021009147386 0.0927878269206480637291859860001307 1.0973789278013283654636426881487124 GT 1 -2342.0103880603006254205973077279306129 1.4435350161573052543983007326386407 0.0044064173005602528920537011284507 1.0044161541709442023200697111344953 GT 1 -602329868493302342898202367235.9268148193626928888984119317873662 0.3122774337210045632608812751018243 0.0359357655674882071560771744697317 1.0365973533627397393161802122448760 GT 1 -14563395734450531474336793468662525422744.4270137464718085474600732188623470 0.1084536100204842113958013745488079 0.0564508060219638940229645612671035 1.0581067756514371854476306847330833 GT 1 -86087025250999699889592930526.6884343034062552218169131707970168 0.1010187717996824875836301068548829 0.0437319800384910186187855576928558 1.0447170496147526139096595042037075 GT 1 -392973334.1890679267876400066964281190740869 0.6554896296902180072516026129106412 0.0435705509771312062043433511178990 1.0445482523382770791237500551940824 GT 1 -11998843568494452591575621469.2655372459281272661208108274458224 0.8744067777980675838307490178456713 0.0360978555177711287990099040846562 1.0367654993972738698348065356726225 GT 1 -36075247784775.5068609579023993208811559955774143 0.8703674416838488485579951036776089 0.0944999056086865975626704329553607 1.0992678974164729743443404152279844 GT 1 -1400.2482803872594328838915142798755019 0.1577840416992752038330302133811131 0.0591660149131487237636316466894188 1.0609885788859950871415198892316155 GT 1 -2521717276980542072422.0784088791261703846457764235789763 1.1587295374169181129280212296149105 0.0605385882304877344652473890814949 1.0624485341285953843992280786288918 GT 1 -727407396841235307030292213708253613210.4226575719140215942069144945814228 3.0057363445739661353466424313549885 0.0799255442446366840227944765960731 1.0833006820448473272652671726625718 LT 1 -23528044837756273928799726563913149301556.2965687326910128220596551940744445 0.0954591008133734940592493938441345 0.0452119591039761156106830223096429 1.0462659098409560470253260259304090 GT 1 -18085220334123469362286107957895260118.7266542421432572543082853956435981 0.1018539128253160913608164701419266 0.0633352745713741383044334295659157 1.0654298778207318906729432242195731 GT 1 -2320155343.2942163245533230617332462749771068 0.8011224952972487252758966915826111 0.0058591364140495599677174923005344 1.0058763684968593699020167152296548 GT 1 -126113893038633622671957625908208.8261003188442314478232545219433321 0.5129232360312438854524971733632004 0.0874658135330461733632323620325380 1.0915297296059526184795959508359623 GT 1 -90.4061873795921201709139581066672163 0.1394261894976913681315632033057959 0.0247496253601967332405982214027801 1.0250610464479922235863519068194670 GT 1 -24849317.8130584251306117929558220306555093 1.4071380337708428120551169737129530 0.0270660363904538398254546893691347 1.0274390679487138558773942711240151 GT 1 -663782742847621156376191.4322893821274258453059774978958319 0.0926141394785840123555721821587989 0.0505878030058521103884462607669290 1.0519122258923042294140229977147585 GT 1 -186370846956877464525885238374389606430.4924808092695743563436296241859206 0.0909458420800893820416871338004676 0.0156211259691518483438172306370194 1.0157444214524820235898736229849375 GT 1 -12047626780568832037235280670120803.6069755545899893418684402433035707 1.0497964077755157868065612923445168 0.0726875958677920179163434792363839 1.0754647646535302384625778050821909 GT 1 -60363116447960145825516631771418354.9980392601713309668805203831868025 0.5403572748844760308901011366553759 0.0462543729137118962513273567178012 1.0473582813624865557763823615281882 GT 1 -846699210298316.0693077262150645985570380245061253 0.1806413213997949222564390865803456 0.0965169221407536499942406299580175 1.1014978986667632180862418134830627 GT 1 -6326532953108933735981431405696004637396.1776959572303418309894017122544798 0.0486911273002426864632573059087825 0.0239799371626323906667762954290657 1.0242721365944925896006802103486704 GT 1 -7515458.2918333677133178500642960972420687 0.1407037192447367025097512981646650 0.0852926439828852340780304234798577 1.0891510943524668030031095652742629 GT 1 -196090591581.0882195358573950660550901123503076 0.0527102482949326839818899699111620 0.0047423751965052943624566019563229 1.0047536559368902693724546664871155 GT 1 -7217481526144573819341959661252396227662.0984069270113301798642550487993770 1.7726294670734453173830467222996396 0.0233562036524461332733898906523576 1.0236332826222983785887474384326343 GT 1 -87930930.7915197538082936192250618769134255 0.7877108805240392742354600560852415 0.0641511281500052281355464697123330 1.0663012772396118822792110831818391 GT 1 -89101962607628392497095147814013.4692625433171485954345136231631842 0.1735475754997990750354232248855088 0.0598824271391390830438316116857996 1.0617503340280730607592436121219159 GT 1 -455664805012402263397289513613119535267.4443318687588961629444605095911266 1.4893686623667320787680680573290482 0.0009747195364832320453975856332081 1.0009751948844830573875117058224520 GT 1 -558415869538918600732298183548302512918.3721829437676086989870475227929047 0.3130716130303296587526010098000104 0.0311669303851677700949559693076657 1.0316629527110128223739417410461213 GT 1 -13289240.3898158486583057084146277385059288 0.1086646225925122500008697239775528 0.0638304325499920610928500370422052 1.0659586571067992485322780059817031 GT 1 -6216.9424270092238654738005406766937531 0.4387262385353439235046950140613640 0.0239350428010105866711621523868374 1.0242261402765362303472424834201165 GT 1 -4437793034504463804.5894380351745067610358642783036258 0.3554366005722618812448616884614841 0.0863659987793703961616676838720148 1.0903252240252929037586209524519019 GT 1 -6675551.5121800071791490517893814749695825 0.1265079393122505732567337032019600 0.0043076652142368728170601296665434 1.0043169699347305997721153336357119 GT 1 -3286046845832.3861216672224604396167036703764535 6.8758394093310169098585716728242233 0.0118507916305979843451897564646721 1.0119215720199309370116695594519930 LT 1 -158.2455908838650953801572451851370562 0.6108941921399914271196727204732659 0.0973391709222950211910872957776249 1.1024084006873253199490745009985964 GT 1 -22982712487973581895149623268127059.7646668620969432700119660828963115 0.5409922969579433652940254566747842 0.0802787529798867995386365793539758 1.0836846472199553178830520697372380 GT 1 -494773.4814638110296453122843634570167019 0.1459534289379992488919149100607834 0.0804837291895765226222363599096447 1.0839075398138168460858206220860829 GT 1 -3.0649128587648382119782157043971681 0.2173069831602376498787133686828686 0.0559822352423087685091402630954319 1.0576102944144547952788534231424858 GT 1 -66.7042812940728183733543465709513536 1.2030406388531155660890502065858054 0.0627747885092038521412143551361682 1.0648316718451921791280209247615909 GT 1 -1558477813941490459789307695742849223360.0944490223911772207632192244934337 1.2265208324877133113694306667607013 0.0873857747906823835403389482951279 1.0914420230480606083780225614226980 GT 1 -82531460090668786734692399.2809149522477141773751143258242423 0.2863851168900480509222379650936756 0.0327158417128399557057257087225037 1.0332629711766226147810335416384310 GT 1 -2310748868536615776781932832070143745563.2113923331108437644979995731754037 0.0549165646192729996701407064841958 0.0949591382634826100990768520991641 1.0997751852114162531445236339633434 GT 1 -355786232664155791093.6948200175852237134229591409929864 0.4261349578679976191882888163003902 0.0785302592246926865638012298019169 1.0817853393345634534175610505575172 GT 1 -346383373493492863212424053350372168528.5694159501670146433286253838363873 0.1434005821411962227423178371281375 0.0843694304812081648969261642573350 1.0881423040443058468577985365932680 GT 1 -44591879701984357412460379342815252586.6819519406293303191636666196564989 0.6168850548948909130416773743366254 0.0454774720062560771763604909601061 1.0465440342156049286758226907046729 GT 1 -1262732.8083805713947804546845154056740172 1.1636021123144432307251237690524096 0.0247133545381233708184493490523583 1.0250238558469385175748985315571109 GT 1 -4140703915970288201191737693376805320.1442297126518982898410288760616239 0.5064330434566702473229186105076719 0.0069648656667524951157106642925736 1.0069892335555943207034614429958350 GT 1 -5109.0864531938351195605587965313099546 0.6443171542949257821555193171507454 0.0350893738324235708857595936378172 1.0357197973026064861319972367707613 GT 1 -107815863862.4672022071454759250908067043961769 1.0938824152582952922826120470110387 0.0719529491996074295100868130956165 1.0746728461876771406383697017986927 GT 1 -4000738572099485237166.0595254633047537924400037591164408 0.9053413980124165671140512930971222 0.0809333596887377508775300048420006 1.0843966453150209858932615901192967 GT 1 -30.5944623338448595566557712681056649 0.3575515965330796464087903360236013 0.0357537979678358779272558879604893 1.0364086206807488813491508512778019 GT 1 -351495312876557605263894676722322178083.6058329350440170042138084418702635 0.9055043189712705662346935537788799 0.0238772935506311180725430154649302 1.0241669766505471298039203330331261 GT 1 -37782076026101688247820640.9684667821025064393559165131617983 4.5485561951805739096367916451156631 0.0614587733834460946411642824879188 1.0634284957194788434293159129961981 LT 1 -661837726660252.1474931767409132906303452893604432 0.0679931634047758149698781090168968 0.0074415007705694649791985151468661 1.0074693268686623257799873694693024 GT 1 -296647289.0025892774357354169479889380790143 0.1117230714154278831634685898296549 0.0964633703815387176745157749816255 1.1014386278585822061825330541601595 GT 1 -44361570124607084076942077862535240.5066380181600235899684712540893491 0.5615887908969492121711984535230163 0.0777516557744687249373810487472273 1.0809407378709850953601592565518707 GT 1 -2935533059387963941537993443759.5081854132671688104706356401929569 0.5931902882847130601409090718342662 0.0483851270990480690124810323707496 1.0495948713133952176696958219133221 GT 1 -50451015397161133735327950735.0512564707778892569551136892574956 0.0235838759188408849133712187336992 0.0085924805362743942765718697944476 1.0086296087323496952304307359687508 GT 1 -434732638970020450009110748501.5817420324101308254816400551665259 1.2527467380938709555858100196704701 0.0949840735441705744216730445993714 1.0998027371433249131752648759430494 GT 1 -1539800271538.7401282546838356245256445187874831 1.3232722839938725931362225097196097 0.0909912869928809019604589894918575 1.0954005995842389467907968793005691 GT 1 -1475012147829910508244513833.4565985636255141284588762300102206 1.2355552591036120402324049812965967 0.0008484990578473396706170856554573 1.0008488592369284102439055316151644 GT 1 -2527438855838810225114166.9291529238804116841516470127338727 0.2145627990247298708877801511310418 0.0533025532001784678078412230000053 1.0547757227984073904569629537297772 GT 1 -67614187249054296538444699472779235.8049532719255452630037559975932936 0.0500183220281693680336048495241707 0.0402869250568565162517673510650282 1.0411209194614227638470844146770099 GT 1 -1480455164868911671333057397623337.7496593883666016073749764382860625 0.6382453013551892866994019061524314 0.0381977704523485219709665567733564 1.0389464320422269693887817638151426 GT 1 -245399105280440756.3489600063726979407095284793093544 1.5166388358828879383242621208148311 0.0168848863664089582358738215904421 1.0170290612826203383587854046109774 GT 1 -25494962441678720517.1645685370361166711256693935480981 0.0644619868451610381052555067196662 0.0468599309416623950484530149972954 1.0479934091517725400033501644860683 GT 1 -2978916286464.2858629780894110857098583719819746 0.3734183935577145592088136540837057 0.0679541673409243020707502088531028 1.0703732888328508004694115844373328 GT 1 -10.6990995348228246325793335132421423 5.4279578778847020341223354023124615 0.0057548479441315083932273113088484 1.0057714708872470661320570379820959 LT 1 -6986086839249538613508.9417419476021697685690263925288857 1.9460724941755328427083007229546365 0.0412037694588946690457605564530576 1.0420767078636102805157414672696363 GT 1 -4.9711787676693632663927979316105063 0.4179671822046912610793269502076198 0.0595743592898338943848589839432653 1.0614226969391321363506427580312402 GT 1 -15640144749289.7232257854100074728275504481038127 1.2866917250692451284559767887896626 0.0168303100988857488040198057713092 1.0169735492149492510670527460026620 GT 1 -5363817058222958088567116.7978089501675364818609716254943088 1.6061656946350052024667233186167614 0.0687066351973232536339057648075626 1.0711809441414787832784839672553129 GT 1 -382009821531112.4070902655863544252619497622310798 2.0429703371938928032646308106655715 0.0311314067857962174767546060889599 1.0316262870053915885379975153603277 GT 1 -18.0777759129920463470742348952593341 0.1121156587307596092893069058351842 0.0863672446438802274419387039881893 1.0903265876625454803986802450431799 GT 1 -139552.9170268485297243907451434541451199 0.5059478170551742559415538688831290 0.0801167753998667510833165938508512 1.0835085467777814837491192798400440 GT 1 -24738942441484285204881334414.1627142450463095440328756512507436 0.1562068805676370623901013451962351 0.0780983910636842123114660442721747 1.0813167759395888237919324286099650 GT 1 -133968625338614309199195189907454648634463.7445242417136760605891048958144814 3.5052659526249068534789989517469225 0.0938504264507675304651887990590212 1.0985508943476823104888578196021601 LT 1 -179765332308556366380125164.6573893588156196414245014651855522 0.2971431841583033587929431992500042 0.0358189891358858909592623182879173 1.0364762313923576818182799743591041 GT 1 -38412837267688120654422946.2701431337478447936409442355858481 0.1189681439344155525566655247409521 0.0699002966097030944952468395337743 1.0724634906346408206437362291582698 GT 1 -381458656174528264732222.8749284093707491498352845570103467 3.3998913142776674409244175072578747 0.0502038771417367949860929224669059 1.0515079249366567340263723259310425 LT 1 -10591640791093942502545967665522.6233431575907346053005647481868907 0.6476119687052711080996797023630461 0.0630369273381374830573633099432668 1.0651114076997587413492842474364575 GT 1 -201396827315719057560477678884.0688477155520410224158705119636525 0.6448486450030049387468546533796518 0.0430676569115790579123140726770875 1.0440225869056278988201796095944014 GT 1 -2341897954.6029075276953926782652555055230487 0.1891650547718743332363893632167728 0.0080199105216762377705180692504333 1.0080522429890907224307651942145830 GT 1 -118605657394936538196515694026581566.5763018376828417635413784309998800 0.9028993371027650169373311908266370 0.0282419188958586961031445801107650 1.0286483932523358898355067515132621 GT 1 -87188221.9247947552991843137882384507775150 0.1571277641057953883054296017515424 0.0376479645019762470440352168641252 1.0383749539904684521925590460240172 GT 1 -14703395856130905123703700338710.4245202072447706331929120457037298 0.4335507651790135194614722145700851 0.0694761924150642669734270895206249 1.0720076174292535281859002680255084 GT 1 -13070725749316227080971.4122145084121455870675975970604621 1.0587723172854289452177518839406912 0.0489150825002096617771477556621312 1.0501519275737044215838753926130653 GT 1 -848958261.1372012354492058764892285149432145 0.3318312445538685220779905962822022 0.0171460525058415687223117573719759 1.0172947482114055718673279825807912 GT 1 -16409601872063079.5341268556329400167150332560923307 0.3513659918046629275176186293454279 0.0044617966428626789813468950559226 1.0044717801648683757661829801386081 GT 1 -13966418587795408292764012770524325225744235.4165178635638768873922920585578242 0.7889952076741921564936122770349544 0.0563515796964127274399046134561430 1.0580016183272738911408408481276562 GT 1 -525737511.6191322106906211510687930927689636 0.2071976222541592551941232201349782 0.0004294209357858920647190051286548 1.0004295131633598501385936313529709 GT 1 -50211008075469388202895811864555838180537.7921327653269360229229293576239118 0.0220245846377898353579081365524342 0.0510244381297291887462908865043802 1.0523722321576604788746167666022889 GT 1 -20140584644745256892308766497058469.0986765256851125196824066206685028 0.2939335573977973303205438453188162 0.0516284393252230097492855510680148 1.0530089118761158394724484167376340 GT 1 -207492481928050727107716.6677866209451194824984382064740685 0.4781302127705208154203401122654894 0.0336310467491450061624486858240894 1.0342095785067423397007646949907483 GT 1 -2333126376032129382407.2226690484698118013045246701784666 0.1306297255007297606893166868768958 0.0339453393208110428038293970160155 1.0345348618164387084066635091762379 GT 1 -2143028216938541327.9694125757570577077401245754010672 0.4649834353321065219471299138448095 0.0402589221548908827037867601818134 1.0410917414767056582548630425004754 GT 1 -119896877798491114067203.3884615929816581715773823958025630 1.1016813382440737164635128193909207 0.0508238497549163179383162456653540 1.0521608809002459608132781980322966 GT 1 -40247783682818072171657138581463.8716171675640473558982099859660190 1.5934435434804487262132798936232380 0.0505912546626757034815154172455740 1.0519158614713592600260016197410083 GT 1 -649198776715845722598751771850105479643135.2137736444189380561196492908029998 1.0598931858731654275268341123368960 0.0253905870201682281963205026140918 1.0257184903187035718317664403226628 GT 1 -559018234128059.5631630489144118833196784083377342 3.5652075917215340460395734275917878 0.0989410806162219015259574058359239 1.1041846301891210682114113710190186 LT 1 -2073653760388469741984003527.1921934696531621121102115269748038 0.1091829038283979760273720606185495 0.0897756961217382989688380657107782 1.0940642220660532269829268151691342 GT 1 -1790342573628083350.9171678269495042202437906635442937 0.9689182554695980482507753424430046 0.0247675994758763952258565597380288 1.0250794768754833457803272168401949 GT 1 -40139629920679621164780378613830946313.9571655568358343897076341151371405 6.5019004302323259993626345028870785 0.0161579491202853168568713677979120 1.0162899122128439929629733764503553 LT 1 -32373620974156100639478341238646372.2314430254906508674686608771132779 3.3056076814319817684596468791507100 0.0342267543699726558785305310228661 1.0348262076969212609477742235038535 GT 1 -28.9754599897314361691165523957771728 0.0948665629886993758140041892811328 0.0004083734942328443448460116008697 1.0004084569013965298325275053526192 GT 1 -532213692308514.2476983198600294686923514392205684 1.3223882742938452812133126832755432 0.0911612748806284193893513990293649 1.0955876206561702424163357261130150 GT 1 -3741054443112740302994279837553.3261412981542880567335588851127637 0.1550136326793911784731958770580376 0.0514219909966217100341426777056025 1.0527912483886764674112965928959230 GT 1 -5642.7515166055849725627459360354088619 2.6712308021448151940747551589155213 0.0476434756764613636385052373948662 1.0488158139586694663176279825483171 GT 1 -329565309706252492733037.0922052783730371530637538233181016 0.1216163257171760988295143130038465 0.0183301434213951069013436032646313 1.0185002220839938386516261708546729 GT 1 -4356517001405.8147013968195165276060928487898978 0.4919713848103696955236158610311455 0.0630215128831202248714875505398304 1.0650949563275831588412683538763086 GT 1 -172405911929989759111007027389785217819271.4637874815172813254444901755747420 0.2267677163900393994606963959666228 0.0904008527886868281613135115537725 1.0947512740887819551110868276421506 GT 1 -4.2811683298301775455476977982945935 1.0655027305515480720136501203238063 0.0469295422486909522408840731438932 1.0480664454781178855320075828106364 GT 1 -6784666429.9246529228075452689978293971721361 0.7866577158348319810602137524629866 0.0949507736637485192724797952552722 1.0997659430197825137575562514685669 GT 1 -3449934997961391710662077484269482130271.4469050894617131647667479100590411 0.0245212090568341774323561653930602 0.0126218303581640455428738656374819 1.0127021623324712986269881033305463 GT 1 -927.1555187981165315845237058057372748 1.8487033349832725205587443390563080 0.0268244126645964868477534374269383 1.0271907533284176070409409328370787 GT 1 -33984724583390.2548604564165595225716006163293356 0.3065210664234420044844553993783859 0.0299119962625735530607371909830653 1.0303684860975165491705776636616168 GT 1 -89375371415964935560720905124.2723076402463283757934845754779151 0.2034691441721863717862365997295218 0.0344132377045744503647736152071787 1.0350193185974432496575301828658531 GT 1 -51370.1484456696784175677970211698997710 0.0364572254324760739870489432737739 0.0599647514294560575008759854047253 1.0618379059418358048008092632690847 GT 1 -405419947686.8403479055577481248719404455367566 1.0504316402778186365558780344524957 0.0893592591242746052110614433245588 1.0936068163885440131903964385664178 GT 1 -151699983747738390443869980898.4143531940084962215576106074635668 1.2124180926725356668561290509287992 0.0823840740793638419087427973336264 1.0859763572576124074956753196297888 GT 1 -517251291159272.7910288709705012556173651039185853 2.0516904923151050635475104170597852 0.0219831768891707370567315695992691 1.0222284075504493953231747536695709 GT 1 -100201076247788864355242203.6971211511455355185014508434131387 0.6923033565897423245400298885780131 0.0507781274476610547682317623636000 1.0521127115419606746923311449020976 GT 1 -18392315840219389160083186988668029190066.3865212470811761742237410902679315 0.6857701574318672131703957903761598 0.0375853856162607406411905962709270 1.0383099290839517059175080381301873 GT 1 -23342737006315496596044013.1443116799230327616774239000727906 0.1493610352038042478772817020709319 0.0259966201795600764427415222509363 1.0263405053041031033487888927176760 GT 1 -14715435403723955467.0567988103876675152797298735411980 0.9716061843035225397866438023622207 0.0913885722104249546550255982769423 1.0958377483756213440990096667826646 GT 1 -8931624648392110271451116336917834527641.9434087245788676102432052591489044 0.8039203583201452454442061731983974 0.0354183096409767866217676921274746 1.0360607531166539275518705798275159 GT 1 -253498814863547753337397076454418.3660004599362082369921212571959412 0.2979906018903890288387314791676547 0.0323797670800395671197298696131675 1.0329155900473975828092724327025372 GT 1 -1173019475848654893129716902255110211.0668171599382666418372026168069908 1.0731129540971292693520279981847329 0.0800003246460229976978811992116181 1.0833819618152252732040427192991363 GT 1 -3403751681858512926834485696660426486816013.1923123356240272474744085133482604 0.6353340417138970162363430583739541 0.0472637627597442595956049961002557 1.0484171846326794628594772889796555 GT 1 -845848982755.5671326486437909524577981116398133 0.0947335229136462100435380916443060 0.0558080963726707678485675171266327 1.0574258457559743589025827544347171 GT 1 -907784276313649805945237720.8793671704190377065285911194169699 1.5158725519745593226061072933067141 0.0383785560750768431502061701108649 1.0391344151951371203878315648474247 GT 1 -37949124919958026906413073866541602916363.0626418262427543332923242943545844 0.0896343194907963250818941091429879 0.0457296124508050668519459977716374 1.0468082225871798440022036476152769 GT 1 -11423504357096229248350.3739245393872913209856126561914051 0.6395418519112374690386481720614426 0.0160951667067923535363405925055176 1.0162261007399160045580965567721557 GT 1 -5928540376609475793295789021808835510474303.2417232602460503649742993724075045 3.1362708200773077164971770221163224 0.0427483883177129760456530335114694 1.0446433695449773413153821113188072 GT 2 -150553870685477.2466564423523395515047395111496082 0.3559854228124860633792749166490570 0.0169879202898355046024852683844291 1.0171338702938274280389516372076799 GT 1 -306425.2381295804433770968108600636924783 2.6402658859211310709291915698853430 0.0497756799054720940433867138872281 1.0510571958457123140534177884828098 GT 1 -2793559795495.4248327338169584055968805765292789 0.1690336553743113626967127688029544 0.0266983463933307702184348241290583 1.0270612205819869615463123772570119 GT 1 -44330306133781069870.8996272383815375106498165085952014 1.0951095993807910076667225421716030 0.0261178083252790621465753329131065 1.0264649357610547674183583976010708 GT 1 -1627484394538156933103200394974753.8280905014326527663676416358867798 0.6121109798786270668965475247279270 0.0854866642945939063173383430106193 1.0893632287475282995370419950233690 GT 1 -19555917826185371043890270720062003512656.3474605025595612167069595227479185 0.7675215923422487431007169918980259 0.0086049133204676127128120224680626 1.0086421493495093270081068986593214 GT 1 -109187476516422218281002.2488707361858022308381231761494067 4.4794764621835957863582671951991491 0.0238419492745681543983335443667656 1.0241307684607804357867366508724288 LT 1 -42083916.2557980779171931376210991425736184 0.9712157725396837262475852954195388 0.0853422020929491110168009969680661 1.0892052750172397088639476716076022 GT 1 -150865991869046170109.2310257509756239938837618105714394 0.1763900478862192128545884198180252 0.0721391876439036861781331344049850 1.0748735441303052206996122334648693 GT 1 -2624278525713529073698036519986026786.7427660607731381711269579178869325 3.4170294136808803070405402012107938 0.0682125415480226206804323834380518 1.0706505391749126190933720292132416 LT 1 -443618045944816634909717700524217076038013.1975713142116952157152413709666091 0.5771624596080007600706037180089501 0.0917478840597644474114981309232095 1.0962332781943178113119220185568192 GT 1 -6272143.9647607273479460039375132892595622 0.2974506503472114741304121774798537 0.0007639316798667483318940469875275 1.0007642236243657372533087756951742 GT 1 -86183031133756516795.7077584153001944837877774535836376 0.0245819299394417703124239587414604 0.0914333100307413025388402617813173 1.0958869871595227954118046045095120 GT 1 -15425069948529648941243990075327.1437987925703199706361279833569469 0.1217510784635203100824152141318693 0.0910252376352038007790737816728534 1.0954379493652317582031299525265091 GT 1 -48944800268036000245062765431.2259135976038158060459158018071516 0.2307940588586694822764105968089949 0.0518913688287947955096401746515844 1.0532861934489863371318232931738378 GT 1 -262404383396.4181250307008125459915131109829102 1.0871597096104830745027176691737980 0.0672033122693916496357282787282688 1.0695680142813555334321603332527973 GT 1 -18758692760593578027532099.9051871007614938792472565723372564 0.1314847547278301125712168995151172 0.0812116000842411128243687972300678 1.0846994335018355072539057468711306 GT 1 -349405549445738843043812785420621987649.7725203874143443771954249402633068 1.0092216637709536360231840741022542 0.0633208844880537701387237255529831 1.0654145148286252988625615192398728 GT 1 -61068498304094242724382.6757117491199720753411666904107755 0.8777543302002457112004462400451352 0.0931314494270162168975980130844585 1.0977577670734706008492334181145192 GT 1 -344680431803361065868.2559971991956467408950065664726916 1.0704593047535765355119178194842952 0.0982260380842671891372167643062987 1.1033913868698252224204995059716706 GT 1 -676937670718991854.5201889436296836988405086531174671 0.2370931473204342152936612599548891 0.0700618021552294094249734161002130 1.0726371489733498919820997739141398 GT 1 -34579939032355427463449810743201.4607322784957398833950296834541131 0.3121439772990635506882708477828948 0.0827651581815993067762203848837775 1.0863917415650616005847851336289124 GT 1 -2855102616687.4955673567777707216751104897625905 0.0418197872346819994866195604003712 0.0290179489816197987148147171699438 1.0294472959096748973544168202671326 GT 1 -2442831805804.2630423851851261641935664288653000 1.3666452635365999714210827379354346 0.0522894761441644623969036400796492 1.0537061779397704634949359298044983 GT 1 -68839568997212911178.3171666210238150838721007616892437 2.1089334330719437295107770776117267 0.0788978743364395971305310885273746 1.0821843632459998538551927024549009 GT 1 -4166290172604756658491872988941480962158264.5962661905003289358005257920446797 1.1820788729177175669428450067707660 0.0348736562672669291232726682326143 1.0354962600653212873022716603156139 GT 1 -974321884707974461356449736701899048703996.5611244358686843679627106504925383 0.3123911624306795435773600404561367 0.0841806188389853351561396060202832 1.0879361158895908715490601015395298 GT 1 -103056600.2966055846573356310976675647062609 3.1200657929591931843361269780713716 0.0613939704522695383637970465835836 1.0633594516623442781120356041648825 LT 1 -704872397404058823983602488383120998892.5750849267640756605171629142473116 0.8078519197932830649438287878775725 0.0941809256903861843363811305128845 1.0989156901113113564616695234501877 GT 1 -318016571441739795249444213119199139012.3129432047663419252574817421137432 0.2833774335879816569028006431523300 0.0852802009211901000383105988766965 1.0891374911197164140135164041930974 GT 1 -7805607380662476447.3518352402116915512599841306281367 1.1399747679563208703286749184906842 0.0337969999518811294039523212175866 1.0343813218696331700014615641430494 GT 1 -2443326765614769089597.9376048425518503604043910350304224 0.6086357180977304677846733243521819 0.0253708106926586441628828591229200 1.0256981989829101418325537150677408 GT 1 -533179479814055240109540.4700337192477400240240555824827297 2.0342401621068150688104939265761844 0.0199929692087578824586513436161152 1.0201955330664767780021955496766876 GT 1 -24349749073047047017671433845546.9398415017177746006725174743711566 0.2174292565703551558938446071681882 0.0116659873354858305248952667819306 1.0117345688683898535554063745514069 GT 1 -4689170667828404744854830120848573042444381.7831767042148182754462907666209474 0.9559852514842992082408180656733432 0.0411762665215453302655632327386450 1.0420480234132319322167830698121622 GT 1 -211.6164587686510306242070540308590266 0.7281436889909226055633687284586262 0.0450803840778278702309088138110634 1.0461281138532961787849893291945640 GT 1 -2.9419478506332587920559194705050383 1.3075110183759717018196192404897358 0.0828577261403792518595935359190693 1.0864926673322523944103680756506693 GT 1 -181970970144040945200001709573622120383.8254331157478990048725252957756960 0.9326194921019736051614408998290732 0.0912271447185911146916233691055131 1.0956601002097798284615666743611073 GT 1 -434169340048276895054645004460154297.5137058835572451467574753833150874 0.9087111443682431491443571810295543 0.0820165503633255733857166420219732 1.0855759172423854607194708821157485 GT 1 -227977721968227670852792.8045439152096250140055400962712288 1.5564852470794142269674037694352148 0.0684222083085729376986709005899194 1.0708755801446516811267600324732692 GT 1 -286023280766047577061308669611438.1757702217681140357572667149606478 1.1008113722777971523561605251055896 0.0679207810634092491976563932567610 1.0703374690497412452732678521630392 GT 1 -14172322108473959701677571773519736749082820.3753117650559323217306898592303322 0.6821548969090711051816382522030932 0.0807670170489074303105754331877829 1.0842156708556027543519038382037447 GT 1 -427830615.6565243194510799491372229259817272 4.5549332835499251717633551298924194 0.0268707484628125904589140251831507 1.0272383674506243811005704446254904 LT 1 -8880520782575517.8386297762645992478997925588659676 0.8362503037284256941724996934894782 0.0246920967946154853080421258776701 1.0250020596786643353342343692481739 GT 1 -27374435453668782748423212278.8610258204961513048830515298472948 0.8053447375369499740425238214134957 0.0584835027138553194749927619973885 1.0602634086952211728072491114104000 GT 1 -16527969059762913009390403660734.5001106163349914617047360482040466 0.7609387064776254360387507399417481 0.0551141046928820851156770540655500 1.0566911044854975352803798303459977 GT 1 -60217998714091824772.5698008290983304571100747190587564 0.0995731023409926896646581556897027 0.0768274118153895645545324615368262 1.0799390758435053833321931411117054 GT 1 -3793182146715554306408106.1166112650997705280012652299255614 0.1280074782755517877948140381932431 0.0678137265863034723845959328438036 1.0702226200889438364966447844798502 GT 1 -281871173144952543714800404427295396.4245861827277017132521369799663415 0.5366401418530145458904366282151902 0.0631584517624668382829790365377519 1.0652411164464917986738235698663588 GT 1 -4379929888825036.8697266377677308515414731126259998 2.2608172702238695824925468227315317 0.0867684957213840976324938905637838 1.0907658661495376127679181076032097 GT 1 -824010133.5840670529713745135171009532784171 0.1687051657348834312553864593687742 0.0717989932356541103441391143389346 1.0745069675340360797008632457941226 GT 1 -20911191196993844149843244471911557639209116.8619993874827515784195901146893257 0.0618505235922258318542916328352858 0.0402775356405730938505899901710463 1.0411111359432047892513853548041164 GT 1 -415260303827486981867884332639.1684306231267361986557062176834247 0.4357776943607529373038208871250527 0.0512511645261179741077635583755517 1.0526111777050590701644472523404488 GT 1 -24885961737730.5433884723146711224508689777336626 1.7465425739031926450445687388909718 0.0831026597641180649213272213808302 1.0867597647529542465571818673310438 GT 1 -69332256001585249.6709739783797499056899151626304920 0.1139320407423820456881063829895255 0.0364589282093600577548518312138539 1.0371401643344966682718004244674222 GT 1 -1302748201.9193261299660639809453437331663374 0.4230702110197460155870594061586489 0.0408722628899129333279206900227268 1.0417310147309580249310953322387472 GT 1 -1999876145141910561459796336.8369421232239883771142630441725438 0.9937089651711578171181792392043331 0.0940204602747817440232216090222358 1.0987385562789074818073069532774771 GT 1 -1044252668141722115481358314570456647.0699495547335575376194247709678611 1.6261213346176172927347384985684298 0.0889417523205388784645966664088475 1.0931484455889018209016861463962571 GT 1 -19547763873555690680.5956335664518039521075921619579273 2.2190184511070865709846304550834646 0.0257758162357915739625462215383022 1.0261138336884858366047622951678963 GT 1 -29690940019901346364937101243583097928.8410012865729488352112765602514549 0.0925777994092696448027230566646105 0.0835302502525078076517908548271377 1.0872262185237007446414157658046108 GT 1 -348259961837223.0799243485535303746743048199912643 1.4624665131495041198101090788111992 0.0237012321447628373018787353853270 1.0239866248067853062389074569985197 GT 1 -1072961487081279226187559638784975383068135.9547928004182706954627744869774610 0.5244426307613237774993464170260387 0.0112156323267173708805368950737896 1.0112790017955872063985965687963326 GT 1 -436049788541677884266284660.1408917314826098013422642303455853 1.5319641472646563894118882686659294 0.0485720608831017883330963132428168 1.0497913290950851043022882499343947 GT 1 -3748147282239118544020161567551160635319053.0610135166764075851671337477893874 1.4867926992637145854599659533148674 0.0635039658661022972995141477855919 1.0656099918812288666318762418173222 GT 1 -354987341493038788.9820214910971019537863484415960355 1.3903711475804982724909043701027723 0.0487663955052139400125079202197524 1.0499956057027039682784417769441735 GT 1 -786215527092075089163072289204.5394303046748626332066167934422097 0.2292558103559623139674836437723788 0.0387704710825652008921543007734212 1.0395420547038152901593498745118982 GT 1 -22507801771790736591707077968861.7449130541725737415995203209284027 0.4927965501126940415317507169994002 0.0283032291602897825517862297646670 1.0287114873493148885102643325680348 GT 1 -11808424405280460218161621396.7655375812303119623880529968403434 0.7644320567705533792833036621136493 0.0670655618835896567370657707270876 1.0694203505755364487735347957469832 GT 1 -687.9544220052429932630242978088724776 0.2514267853845385678870310167139462 0.0630879115266270058479101025506760 1.0651658234789520747022484499224717 GT 1 -1206905935.0681844647315005181459256363286409 1.3249726276458696973935486903606265 0.0347586969509889184650058539862833 1.0353771539286166327829490502132737 GT 1 -133200738962.7673401586463276177438358783825301 0.3025503274882285540511289394833869 0.0578839939640327506476156159658391 1.0596268633298081807780388697757387 GT 1 -113292862851.9949485647364351811661145807872372 0.1799361878363791418486068131219407 0.0458744441467178080001932613630850 1.0469600062845739781525729174364000 GT 1 -3443452258802853309311806342186616207760.7544384996459460407064955832773745 0.2594645229544558069713535474999704 0.0450062401099734348431485531042692 1.0460504726693234750091066289780345 GT 1 -198094340901693.7369939325206491366683947471734132 0.0221704790105024001667640887935238 0.0700796738638774905512943184112774 1.0726563673261635007196558850540608 GT 1 -16281836470409971068060803791232097.3752185716507061897091624814826514 0.0502388220995282210344987372540001 0.0980746470760246941497310727802175 1.1032235196345799088680051705501715 GT 1 -2021778058352618730.0870803777812081696961247056910801 1.1476231394790325929183345152294670 0.0437746216141195610723242326207690 1.0447616422660762270293901266223555 GT 1 -2300146476921199080193570604.4821132930376259197592520348437177 0.3470177961438200442753534325424891 0.0989897959163513917870780621796752 1.1042386961508613394580525726395426 GT 1 -4820853606266054623.4799783571526729284531583360028240 0.0824644085063390581491774255396144 0.0857297433045767872769774943314866 1.0896290655719885228326868268013790 GT 1 -1620560699410055534514611812480205448.3391504980359438225238345861426608 0.1448875386712877590916124010633894 0.0816300329081361848137072261295454 1.0851549552887917649610726219163287 GT 1 -6510110776569016756397105679670561334.9765945611340470413127181188110490 1.6156912877959319354145076868979149 0.0461089873017788610089189783102178 1.0472058565147116241472356274039103 GT 1 -1.7109853700448863741825333386775425 0.0503671854130293248728892343354672 0.0333185905608937633669686982898320 1.0338863006480758575463110937071187 GT 1 -22806744.6761094069364623333419429012045214 0.7961058007110796391574132322668969 0.0231480839434987824941913518615390 1.0234202084820141122410788413377823 GT 1 -2576506967733229691934132333312909288175.4101480823785485359273190329077696 0.7009763155219945044476677233990590 0.0442094315474807501844713397469648 1.0452164605865777414909225674142072 GT 1 -257489194765870013121.7939815735419280874654485388642075 0.0441590641629055628570554151021749 0.0167948491175178460686782776378209 1.0169374818481011116364188701439684 GT 1 -112964277802264269625536464270.4063604954859330396363591698673167 0.1114075368167376170011000073132888 0.0344880999675567965362267665791918 1.0350968519358275296404178181390426 GT 1 -58417116196195531103706817112584575.5123053444112268254722174561819754 0.5070353314905818043673084391815305 0.0676575356053765744820917535987871 1.0700550807229635151835417871398293 GT 1 -681952870468753891212658744076566632452.2249038461965467696602600446502116 1.3019031844612910297929225391658223 0.0670659140720172459985612399959124 1.0694207280816930196277674634645298 GT 1 -120903.2295255692563046956015261172085223 0.4591738236898475213773440154036594 0.0301418214508474282525698840807305 1.0306054258553795140977742756974162 GT 1 -129955850496159550.1202803344238982099942155148867253 0.2319930881500398629383478652344846 0.0735749212697197743083430941304213 1.0764221013615592255438975078112865 GT 1 -107116316655.8356746684408474297203264756772668 1.3774582371547684253071324087837226 0.0804247684076030851310059680067941 1.0838434203483997048553038102864037 GT 1 -241793559982549166618344.0690438949177342582369281326450229 0.1455202119010511139419006031343331 0.0233345470472837659576424769451295 1.0236111083504353720600649377994434 GT 1 -24828.9717029750741414300842829735654988 3.7313484666579840771106621058960004 0.0410168190634335321606698527809034 1.0418817423791187364570338553888516 LT 1 -360153119693748416381996176255.5660905978400496551078235257355225 1.7717101293182636844681620421703370 0.0129520193543224432306006605513373 1.0130366281206076949515708499686984 GT 1 -317024527530011081836375784.9710350345263036501280813879073924 0.1430221852351375217783148297779058 0.0732117783161695854003895129739784 1.0760301950892299845112994371984925 GT 1 -151473917576316271058419068988932.1993560072129694422097157139317480 0.5752331793819443929069754911991204 0.0373705850878688865558687510669336 1.0380867648071721398549882546192386 GT 1 -30709325249140284.0053934781967981207102560251789303 0.9808487317358465308414295838391446 0.0128322432008060283532297771823070 1.0129152876294024170048689545630901 GT 1 -199249023373585740452575.4362315228713930012432663193470100 0.7167987822413616125668666845641797 0.0839880322047801155732832354111549 1.0877258491147324661535445036268999 GT 1 -3130957663044822734238923358.6515690978349424207214764607955823 0.6840509141052035642695832502451850 0.0477956905634321388851678307127105 1.0489756564636676909743013430954506 GT 1 -127107427977875132761342940705796644156438.2969964792543388363510072068507737 0.4713839226902215907455243650960226 0.0039671644106657540819529813109174 1.0039750544817826275029908008390901 GT 1 -5959413351091112419542353089944571029709.3086220373629377908679065889208893 0.9236744626135236834623297375035577 0.0679408705827810703111357866054952 1.0703590227282977103296382576283098 GT 1 -225361.5748369373172734723569017225311300 4.3996193030887173132493326064788760 0.0205806676812191801511562082162143 1.0207954009677656916901668218053204 LT 1 -502819610587643702593069216.3518551942497819794736969957471097 0.2033203862209283304945824271549094 0.0108738451319183176012805305915324 1.0109333974881063113600071510397760 GT 1 -29943656251064.7189719558044459407560171973277912 2.4690316966432030624434737339486007 0.0149412581941239243063050582006231 1.0150540032370814398373625703777876 GT 1 -90135290058.6908750686889385732919277631417048 0.0610817401625304095099842011705354 0.0502511200088450869939547018717069 1.0515576661821098987191884614068470 GT 1 -12060349306289858245959882242550160384.7200387856787314945182667884727797 0.0894947493349554669098836212948978 0.0981484979324573263049283348902304 1.1033054043269902061805435216573749 GT 1 -531392860.5504833211835402519691555548680426 0.4530761724074409024300847154795424 0.0993425439753842443806286515893938 1.1046302756539524104792259843140959 GT 1 -2534580355645559944422278079888147.1004012893159381823057528834885977 0.6125619455571216070225708324760800 0.0806242626899844587284227823177231 1.0840603856580110043054279697311191 GT 1 -1917.4393568947726824293730510293751330 1.0069831365881176916169594975180354 0.0081098929128350360023111055909046 1.0081429569797301130310004417703899 GT 1 -356113.3576756652804874736581867148736486 0.9127645214901156960612844156330298 0.0745472971236444993978731537906260 1.0774722526760200536382278971652764 GT 1 -272096032563452096672105806596089385.1682453407349254487512334877801164 3.7586050677465685302782504619928090 0.0354960654090270595879016860451932 1.0361413672346450844697392142707216 LT 1 -466578842220908220304309884223074262391556.5369614336731597477748753297768941 0.0624381072141193127454520536851867 0.0286227008736017545945931028676290 1.0290403185772425506525415361200380 GT 1 -58425691193416391339382037972502.6767468904807493939832593568969179 0.6921652674071402003109996616614046 0.0764340392152772175427741410160493 1.0795130571130452587570976163254404 GT 1 -1025009736303.0751848008387688610522387662928907 0.2248616138429118106807016824224990 0.0330014417574758990656267347276632 1.0335582744890813001049224694787658 GT 1 -1488530985963298965999.0489039615251794448824400654859320 0.9008998441933625488423743607129539 0.0029229228620760654936140996686169 1.0029272029433711956901320428580395 GT 1 -144681867.2191471302739908212343572357346414 0.1614678658707252943704364349696959 0.0839665570226486502461504434528956 1.0877024051738714229044315492193827 GT 1 -1160974778899819547922.4500249767949462658594834102692205 0.4051444865276176408822747538686718 0.0796986172561546206344904292120098 1.0830540726459571661285915352868291 GT 1 -910299939439245712225707.8438471148051357846467765492589998 3.3228858482023676936714945727557485 0.0611688854824982989301146710981842 1.0631196726939125791616590519997425 LT 1 -99037984989301308384613642795342504032767.8001005440261148727698178254791749 0.0758298501998246219451337375276905 0.0165916199365406897693267431746176 1.0167308025199030217913601733970033 GT 1 -10425992.6231713117356678451339411691178300 0.1594237675351834762189141835130252 0.0505463977023048382601371167208081 1.0518686153290203195970954650389216 GT 1 -14183619916563638492.1125697047568997262493265507031473 0.6440657986612169138212525183101115 0.0502096977025801963219879330936150 1.0515140531767476712108239026595987 GT 1 -2088589701632136510681832848683514384.7625413632117310579679250764066395 0.5209227242845936973641679190676177 0.0384392694721896887735272960949922 1.0391975536725414169852332375598380 GT 1 -26738566356242.4479862941699803629763314212441965 1.9311033647884223194648310982616547 0.0689456559014954145387666182450084 1.0714376316594349011861695672175054 GT 1 -668341213060710518374492.3268538526585132472671826689969741 0.4790056321322231540190469520799663 0.0653521881468451371086794299486942 1.0675854924669050293957687406011132 GT 1 -52861224157310329691774610006502427891150.0087832369325614354254395192733013 0.2090580819188109850443839973249142 0.0243109534020803594490893324444079 1.0246113431299559297951175165205665 GT 1 -67448883428613445526556835528114389.8756778229726508868668510571550950 0.5721024645102668559362437977614700 0.0690403815119019911348964416253044 1.0715393769872268654743794001386887 GT 1 -1712037214764779.6683657066333874437999039189906986 1.0622372131588313201748214769242557 0.0773562143051706449896894738115224 1.0805120499613335795853344012106666 GT 1 -10249410866.9801504329436829897330531995217330 2.6655022577252743945342213178304453 0.0873143288577165552743767290654264 1.0913637389993460696021124667574397 LT 1 -21483769327613306.2639499383217570000244659104850760 0.2667353098389214258921238791470517 0.0169405898227666288435786776937361 1.0170857230445321037975918930232875 GT 1 -15255902199246875542215096643.7306982459729611232920174421283195 1.5004518866868860967639604311494093 0.0111114239083646202825295474744570 1.0111736169100046463848621590427996 GT 1 -1950.8889113718623715377873042244683386 0.0990009512313416111285220868933183 0.0532669441042157370658957709750540 1.0547381094865734112233687169230120 GT 1 -2325413.0537532536026348565789002056938416 0.5456350442467255610611346343462352 0.0655860922112146354850923552372609 1.0678357828271777652372439965499561 GT 1 -613062798.4725652163546761736012356642726259 0.1891011073495459715244398009415608 0.0928123506880886093648554950733159 1.0974059601754935241296168613726566 GT 1 -1083972415912589912292534371703407237152.7758731410099470852993270492703642 0.2951377864357122948478474348023579 0.0405972173787309911612296428922038 1.0414442895418223554206972867947353 GT 1 -51819303310.8985997964166315416259493244689609 0.2767067180904250542282990340724780 0.0904149047705989853947645101141394 1.0947667227515227710937242449341771 GT 1 -5873747950962068345767.0196155987280043727091920116812851 0.4471554222062830375736064107970872 0.0110895243142018426048004764052099 1.0111514714911927689377357039169024 GT 1 -241135491947601401386.9128091089446836943811686640725445 0.4784469123427722762546328306484893 0.0264806151717609381290315916997933 1.0268375418583866987342386444517925 GT 1 -80985809280225711557209072309447768337573.4994379544688335077745981203424545 0.8142889549879370327042737667270916 0.0123280019272348427436474060777516 1.0124046221100505936417335423749158 GT 1 -2387317088512.6665754723768911937336642388219779 0.7714622049112245197008964129446741 0.0178653423588865228127216865369471 1.0180268541211214831672573642819323 GT 1 -137589.7989140992397852120625295739841570 2.4658959389814065818782253536132356 0.0494579578253467365992619119097646 1.0507228863909667248491269032917637 GT 1 -553074573082817127124340505072534932.2806697671808584223540903633188001 0.9301180601402211359056182890797643 0.0409922482749295056624261291467017 1.0418561209978213043303688185232781 GT 1 -274952509892619411179966148138525115891.2811249412948181870832949720893032 0.8221204040700691127087272217294933 0.0040471233666090139739675137710933 1.0040553351338933130625466920026885 GT 1 -452991129.7099809797759436481498326067057274 0.4977058572311904342223070773765654 0.0597135915859506183934159669982323 1.0615707603244184941493759584845869 GT 1 -87049037059143402354.8702450348423354495637462594508686 0.0020921958150791726135154788839084 0.0215723363670181240307972858025038 1.0218084206497473260269840930486273 GT 1 -442578582150350196138521542807874439640156.2397581130277109647315690957352917 1.4172853185546899221365633326967479 0.0657853494894792721089188083523222 1.0680490486237801780991697460753995 GT 1 -280594277379.0441055190607349562468919455957202 1.2949838699329912593946089298574509 0.0391655282125451144424911973424153 1.0399531306465499833858979362388198 GT 1 -157561854701127843250089890722130129.8886236126906816537684228877850829 0.6184925838133558833907225459254248 0.0670804055338656074987844336232302 1.0694362614131658196861039000983907 GT 1 -9946283483850046583782.7137746998873952132572979139310333 2.3210250242368133797036163529493784 0.0656714104364421221742144588900022 1.0679270936689953470305625125733293 GT 1 -295784009408145132075896721592.2348699976293885161038290958158633 1.1954160063924029636089899587538483 0.0027777893875009949569031589021766 1.0027816546039391594290791648043694 GT 1 -10779627944304425372751845083011644307936.7917573756044367615230693965869969 0.7935654736972825388454993405666416 0.0075911006085473493593057270684793 1.0076200596599062227531182260807439 GT 1 -353.2327376796120164162209020585851369 0.1597033703192829040151187267013417 0.0146500102906560661552184762515909 1.0147583814192010858555907638495021 GT 1 -20506100511720782589291040385889310482.1248389560727632551572819187871858 0.9594587819404820355144993413842625 0.0151064261113987281217951095439890 1.0152216904611283895408007582247882 GT 1 -2028651678276622623463563814.3013896673337058092211445202118691 0.4700998813942059969679461263479432 0.0405270905553747295702106340078001 1.0413711979667115339449980265215925 GT 1 -329105296.6975741771248745170397908586665225 0.5955827141529121234731299929780828 0.0076028416689945756851906691621677 1.0076318905996614510370689903602908 GT 1 -1657892769.7104892380850893845997064981989622 1.5903279270213381825344364577085291 0.0184993083860177549191156002428160 1.0186725606158621806800597976336202 GT 1 -2369258859934427305710832189597360750618772.1861302442043466056979472138821518 1.8157228857742749950713704951427971 0.0738199039158004449941529453532193 1.0766865750344595216495079585699450 GT 1 -40186547673205422.0150713021771758317811280813782524 2.8258058976222650151044738782139127 0.0751007748443862616197783172651298 1.0780704931824490445221093279250607 LT 1 -110962543227817840823658560.9726694938340032730829314427690959 0.4945052312187027119562137198664051 0.0472309275178310209305646560270637 1.0483827210793648077056257626870844 GT 1 -916119853892344.5454628377341466097227680386647279 0.1319937660253456602560104935803991 0.0979456934208570428046508060630665 1.1030805538813819904235433869853681 GT 1 -36041500.0552555795438091225063363620483940 0.2193753895956296676430425418595615 0.0470463409149427156920449176395478 1.0481890028637944349227547539506895 GT 1 -647210726703817111934226490136028886228558.5345368250247068428127260163896938 1.6520410361723511111987258006639108 0.0904245212446801026401769102524880 1.0947772951817070320994084235770258 GT 1 -14177242971732252170458488.8316927190453787487995494366356020 1.8555130139476052943459147952767460 0.0633247602394274393916188620065720 1.0654186525950470829281917419704254 GT 1 -15.7982982607293122503130526586425887 0.5244320189238567137662766051683443 0.0299635030845437149307318774062028 1.0304215825064995085611217606969031 GT 1 -304105829955314007871495662551094364348.5044056135070973443866462026182044 0.6206107837347045852688224247118419 0.0999887781789234409553867790170412 1.1053480470454747056853884798186410 GT 1 -146400.6672963194275084131389130839868973 2.1704775341922262779945459861100251 0.0934662968963607211713541380300617 1.0981270701031445561546302620372016 GT 1 -26139154143846124275726313968648465172425297.8398946558600861320403765043281603 2.4995920294646981508304275874995704 0.0044802955031936348962181486779144 1.0044903621059144070670536797884397 GT 1 -142502927281288637587140656527015110813.6011326612030836677092477811015132 0.6490039968140084181542363642928096 0.0603348223448357167714149967290711 1.0622316611541002896132680945353628 GT 1 -8138118720956107565400897445235582.4097080349165797942514368669080133 1.3106177897237381990553275536116112 0.0808015701942456061462195290409591 1.0842532606673329942871657439282335 GT 1 -6433381055426630294852713065161253954.6269816827142216247393160654065737 0.3727457746172669042929516686781765 0.0129296512412524389662269497834835 1.0130139667504782663120011546511238 GT 1 -486115128625927713464141390514841.2697660596128429740169094191805750 0.8771881752500137474743671981881589 0.0887413997313563808150247648582623 1.0929285578232639676770274755354005 GT 1 -75905252914098270246880981.9397683688827542066150536341255955 1.6318856888270439381173824050040419 0.0664685171210533991902681769180391 1.0687805909354764938528298200117176 GT 1 -1425237183363647885796372366175113814811.7334666245035092622552636250724215 0.3821490848791046788648328021648495 0.0427876156140347266136930877583764 1.0437299848933319623595718613360375 GT 1 -3671801855849799025959961664978517148.4800711925350209445554620436679951 0.3188652869376232075660977847258927 0.0463572853795016722744905652492425 1.0474661906577667711585396606877618 GT 1 -15.7478146225440817144452038743349633 0.6367826768941379303627828377201010 0.0252120514504387892877181411797581 1.0255353203054964709541612428145925 GT 1 -298.7652957699260673935121900401108637 1.2469986294879162295951067765711015 0.0269455669812559667903004468345876 1.0273152548678542779146598785794085 GT 1 -13960861135.6498179786386444886483647459258490 0.7261361916006522576411984151420200 0.0511811469420995041995124815207280 1.0525373805125020852430628615079600 GT 1 -1548865441858414.7251103442644922679440709655362850 1.5970512358613139769635196480504234 0.0717306370782297511654322267997398 1.0744333265445848903474198208864044 GT 1 -7113516191423964950105329388176735456165821.4879255734624680676523431845676771 0.2629107488007286365546616246749178 0.0669993552597036767574726320406567 1.0693493870950573714936538895735477 GT 1 -170539264123222623611.3592026574696940811466474331580640 0.6536823118520835247917613511258963 0.0152850807192428866668967163422766 1.0154031017506853724561065106527408 GT 1 -239671349032267674671277831162.9537778082891049701644575723937349 2.0055526113485345237672941855036079 0.0096771397238059237091234562326345 1.0097242675284510459861598587314238 GT 1 -180593003783376.7035126915499720333113172038024203 3.5829967736445835814395453483774926 0.0950448119952418532474282104013583 1.0998698525250111892328048738456778 LT 1 -2360599827155601172876708636991172311090434.4987864519919375947379903178625586 1.5231278683541577806107492747159398 0.0761654252739370988629638644298380 1.0792222550502875866235818700460337 GT 1 -1151696366062274075131503515546874.8032166855348199503188045242005196 0.4246627212179183846678600679615361 0.0873210642960403433923039841732144 1.0913711188272429803219996196380140 GT 1 -741723079423969586319059724696682429215.0472818415859348349654563697846276 0.6110709227531512814942912570054019 0.0358078451495238077758687959917466 1.0364646734775719534526396226168862 GT 1 -17823873639997086887.4305398909032327320831029571316374 0.0786557444851750518027189206245750 0.0165597964916299558050623510453461 1.0166984426878556365454941973946019 GT 1 -25447698460580.1227551187056593130596950246670988 0.1987891162092436053623281651728158 0.0470698696177498620484804891827358 1.0482136934592424584489019081751318 GT 1 -2674682610840034.1973652810244627336157658206497987 0.1386314571204093151511540035023179 0.0115302456005003462307955058633714 1.0115972343109993240282025892080275 GT 1 -60336438821.3280857416272096913413990124900912 1.0321087305882922801093850080512926 0.0914391956851816597388414677197664 1.0958934651358440954736040213831087 GT 1 -15397463558041069720.6686141951580184158615409792534396 1.5409040758338648065097064840154755 0.0413643142832425638680047753064811 1.0422441660386430506711726297512410 GT 1 -34977035343.0540734210845359843386024349245708 0.0996972600740739790981239488800125 0.0173226113425246456619625880206365 1.0174744032837115161757297439997296 GT 1 -13.9488132543312122212855342038123615 0.1840430312870413725467616107927194 0.0102722086854444589221198075733482 1.0103253319295823280175097695097817 GT 1 -13294117.8738001826958938877529836368983475 0.5130917354819779614499379694743437 0.0920873050294919230640474248660987 1.0966070559171765318191202835592772 GT 1 -63668757121310388982.5916815708525929609212694611722003 1.5672951909106006602900056406275681 0.0023354021278663491330084488117903 1.0023381334327078296172219621346503 GT 1 -37988.4465057718116817683274583490478285 0.8204186007130864406759036504615190 0.0673837857196544604527045654883009 1.0697615086553156737781750780848256 GT 1 -346160287607393536907854769490872806682.2795146695271909132902786722311298 1.6115454459360451812421699768189481 0.0991367908691202850942059598564472 1.1044018540641941583556059977502613 GT 1 -6024048313766055185307.4626986523515961642285836513585270 0.0595814325203790296266926615057803 0.0885338321581864393225989283380052 1.0927008025661909302774587422182376 GT 1 -177202443054008990750681654588588.0001801712569798779398415226361638 0.6477908957894804100575023906213935 0.0432391750417819551509099669037224 1.0442018404385620594270497653626555 GT 1 -11402099609.4301723843441572109114587632934360 0.1003796621501170578743721723490927 0.0953456742183544333718351456938244 1.1002023687099589348320645954163566 GT 1 -257803376598840527530.9647243046965018447130387685013267 2.4261080327339422099634419671802073 0.0224303791275063092539842211573529 1.0226857662599115417191207417011704 GT 1 -161058376189017985554.0284914134862213559760090929246337 0.4242472610288548388815800660486925 0.0385054760674418703194476442086815 1.0392664093074741922770288379981441 GT 1 -8561454846817072369157948703548043.4086672372447394320459313248375243 0.1328643492305749493525729948604781 0.0235072137328671265062597274176903 1.0237879160279353162907669477111215 GT 1 -1470760613236278076788095529649.0385169639058169559802562350017678 0.7456455805673381337489718821844894 0.0729334333505403876164513523647801 1.0757299073110582773933281280413307 GT 1 -13759861205659878008953580.4070816750996650575167525050865130 0.6110492510088266450076764185320611 0.0127884259098976560852642062530385 1.0128709017403991828654553518034025 GT 1 -361567083621284894.8860802852232117529349465209905647 2.9495375004231460672263256745188278 0.0962086762356814731502599169038172 1.1011567817807117798720856157597264 LT 1 -27175501219786815038070358.1950893868139457259444276133994182 0.2272801574891230569878457114069143 0.0792530861743599698251012872066884 1.0825700754674778293061978853473355 GT 1 -73521.4627974281066356960760496328376111 1.0953256453746697299808508830839836 0.0624293207875217694626454476694048 1.0644631328193650650609454315474370 GT 1 -206446050544728773644599792843945917.2822308607378029096158910260657135 2.1843733337678014461351709534150201 0.0669783510041138408982284870869799 1.0693268747642441443271330259357425 GT 1 -7381.3138399612372798867666234980459915 0.0102588039967255106663230353539361 0.0296457262169483026077033351988615 1.0300940434610298256080131303100993 GT 1 -38964872672.7199598227328769809886261572344657 0.8442080958936318914710677672933781 0.0857730639906699015686367635913493 1.0896764494960919433144355218076050 GT 1 -5346461762377777457694626265524671475.2170470470295922298638084427893600 3.3615903928386553408586757956678086 0.0632107299915488048775198319844411 1.0652969206407721574702104672795374 LT 1 -1766356251252.7881414189036845550717423890026784 1.6851489327168529262612994486598416 0.0110474338566267720561499419881719 1.0111089099419941973126181628493519 GT 1 -10665995526346212021.6545393062204576689827441676114455 0.4615568903515422095109939495851447 0.0167766215936834825268482683215056 1.0169189431383912011915083647756288 GT 1 -56579469587751221578019417629868705.6019906109249308881184828722657936 1.0335958906578578498726242294515399 0.0427790522241795677574774884894510 1.0437210387579807290465683018941846 GT 1 -3111012939652338517071242909736695703021596.4441655958283128477627945617790497 0.6076701157848346467712603037999256 0.0994838834113226932812450584430486 1.1047872171485175216979133685053905 GT 1 -515362201678978515820.7431217554662877324238207877978309 0.2784448886196118030280486131433075 0.0829857234923294774652138388778240 1.0866322381362084433135694619393530 GT 1 -55086.2959225206251056751976124002122650 0.3642566469030800874086720023025372 0.0569557616144242260686583492040975 1.0586420850571164770445208194011102 GT 1 -5692.4159596104973237201232246736359246 0.0264904347656636500537038815662419 0.0854053434473063404080514673119037 1.0892743101624197704718625565661865 GT 1 -29282.7418713728058706784316816703367272 1.1677397417662028636851103614282291 0.0219951541951746485644356149105661 1.0222406541489348824236541566084345 GT 1 -681003319207.7974101165953821528334247809087319 0.0055634171554860711422003069386649 0.0782104604202169920842865347261847 1.0814383465798351642508101477113861 GT 1 -694.1199375284804870674670946079213843 0.0658946140165697057046601943719669 0.0963804406100506306761065805536529 1.1013468485513472255379417193564601 GT 1 -403631668324.9850206586925715345477671298134196 0.8089682683243508988976790586991025 0.0832572463077436702992826066214468 1.0869283764063574837201133849413565 GT 1 -478993146.0120331490281368411427147556819238 0.7715460010670955255021798418267144 0.0890108391168505028454366820375320 1.0932242798356069984983927318703522 GT 1 -18573107064619797573005016948616.8378070581247719707153213518102679 0.2543425319463372107407196629211820 0.0343039869246669712341193093238922 1.0349061805511485615835817606391215 GT 1 -125.2822182386795592949906073918460536 0.5988685528033211422257548465354157 0.0178067222402882867564731932326723 1.0179671694650524076482580682416196 GT 1 -569886135645087456461.7709167549520189311064730403304424 0.0111651847766803217811606998222922 0.0103284875381411706373825890482082 1.0103821965072393018207120135919137 GT 1 -1717671.9270547001933742332297201291646633 0.0578994417459027989902266425713978 0.0754657520588781064926133278356113 1.0784651840156572883258753128076378 GT 1 -136342117913930248117633727543.8454093820128681554101440463830960 0.8065282818847418585315790916270285 0.0147540140398304112824685288876131 1.0148639370486198225591902918648264 GT 1 -3117891.4990135765882597319215265211411602 0.2282463041222601966228225191421671 0.0079221050305117698017185854488650 1.0079536516253197558319809747451827 GT 1 -4150904647554534545253752083360449239629.6731810357504043645754031218584863 5.8637054712795694985923256515858070 0.0943414180089886450229141515149396 1.0990928850311207948852842569181605 LT 1 -5897834252027452707044718231866.3893644107971888228812624696801192 1.1111076574551985462243040250662656 0.0424941732750064163464189232621109 1.0434234725933779625163292248458280 GT 1 -387573775904189032507143998.9541831142445021269012412054731623 1.4979239866793454415979045000891776 0.0082024728042013300780433060623283 1.0082362981790535398413989522137785 GT 1 -13727650.2446668241347086050202979095125303 0.4256457772226712753647243781139155 0.0253981011922882722687407835023235 1.0257262002802399537943792605954976 GT 1 -2485461577970382009187657988699652333837670.0563121856733741186479862350568281 2.7818740269077712679727539691085354 0.0562151524251350870747044625449895 1.0578570545179598952336925113791220 GT 1 -7667893109733969026626.0116148182460835689274715063342486 1.9214677722045406210340837150473765 0.0102710982851477748175329861311970 1.0103242100052678487368904494002163 GT 1 -3666084970248.9593160443149088384240173337953438 0.4368394062825901399125114010423761 0.0978358985348335356769098627118170 1.1029588447959746939209359430846881 GT 1 -15165871487504051717706831120391273122.8512896910891876761317798920432582 0.5341672871090917893251198057349900 0.0541124456329773364380921740792977 1.0556315813006530545717841688505619 GT 1 -446595108209466493301872.8596900736946150849645111104561757 0.2408922144673244911719065935742510 0.0639951011828205268225059756433384 1.0661345687392032799846930693551682 GT 1 -448002905231575877.6090774043202161944409318247816786 0.2640106117959233908175703402136187 0.0710568232001414128716898880266827 1.0737077080240959362718447919697860 GT 1 -4133440279.9368594428611775596077106465881451 0.2519959059789341066479889212291346 0.0764189223001114008489293210173559 1.0794966892605124620004261030154644 GT 1 -2124872815142606000052205.7364117878846700588382325091884869 1.8827875095656345294596203809602524 0.0698722203776068517072494657735282 1.0724333048295661590949737910489167 GT 1 -114883675139321102.6003107513909158282627692498823185 0.3494007966593227192050114000976603 0.0974977160523720274497205139318867 1.1025840580884107667554491739005844 GT 1 -865344169587692617413.4448689103579410099391752257654230 0.0199019867573738987185329323322871 0.0629796393040714984784696823357002 1.0650502673149889761393667536963114 GT 1 -100.3794484791837962597554579635136478 1.0161339224759178352404205112066800 0.0081812015928876398845602895704537 1.0082148512782189842985936035238411 GT 1 -231860856234.1170676445900143514656994420151394 1.7762056024207031955356346410157861 0.0312463684407800848303689187365954 1.0317449496153151576907754015457918 GT 1 -2630349080991517636846645514180596.3957990551821142991416626423442547 1.9094465465981885010423736271931972 0.0956192762910237455103923207932493 1.1005048527053160054980311704173100 GT 1 -19427280767739830276651256512617835.1623778420410363862889180766080306 2.0981908182784263037736512312646361 0.0946418707360929454572462475760646 1.0994246906163410805675120546705918 GT 1 -1343767.7967508905950431401769643920505680 0.5626721223785221437371815499901185 0.0700843950374260634736938336926862 1.0726614443046965415715242908078313 GT 1 -68238635474828.8291638427197568035142624146584781 2.7082444926359296176673234733494205 0.0881952228595783556794371742859212 1.0923293719749967286196909987215809 LT 1 -748110822036683.1039388984890494951031185835823882 1.0839338777688869520896131994936190 0.0643230875621302780176519327027003 1.0664850411119054106211629649818175 GT 1 -4198797.5375523150393281116176925330344959 2.4913384206732540904278689275676109 0.0610283050651300997110867367783577 1.0629699440675379786861798039145084 GT 1 -325898214463.9269972343273335436543396198226539 1.8256103496896511313660289575606700 0.0432023094606652186857400397197984 1.0441633095226556682753364139525920 GT 1 -2613721572766905374.5000085550173945730086198548763796 0.9179464376720810238109950702175163 0.0011517355413448770521829066446661 1.0011523992984208307551851625838276 GT 1 -25739.1985745876970365803012056311947934 0.1903960324203688352432201446312926 0.0131628647200598561139384551634119 1.0132502630123632403440602825557415 GT 1 -5318598168508185.5366916339158217995694000247703690 1.6269559700601003604448185348599922 0.0637526648172115818171829825324233 1.0658755904214730827946314912015623 GT 1 -5208377566237192934.6960815704892778423726010294608201 0.0138457317399437362153460554805765 0.0726581448835061773711601272571899 1.0754330056513966049681258934144173 GT 1 -1002399826342800011060908498729156.0085125154981813418674060205284132 1.7195686728416935252740531886384043 0.0797674040498760546062454500628429 1.0831288192081502432554414962283900 GT 1 -3747546757745574426919314624.7341449866172206318765900924279042 0.8455194334528879465816492639889350 0.0369528435242233985192389738754353 1.0376529000799325807280968312794965 GT 1 -2077599628932778396749225483823.6469744554867739147171110049906436 0.8596137498599736164621679580842686 0.0042552848528655463204881095026137 1.0042643643438230980401543199980677 GT 1 -3164758556085479185426621148534006732.7884681380370598660122948056668046 1.8541788302931327735816524386318360 0.0705486586456138432406525222021685 1.0731608224599934394823185766995387 GT 1 -25718551826449899532293845133993.1222429915937163470430516335564060 2.0716356697427242227353733407145497 0.0361560073160666934392861486384038 1.0368258307834372866640955479629810 GT 1 -217640919742192844724404292826929711869.3949010209510698238642314697024122 0.8189996699452368631484843976781309 0.0657047928598626451556616943921736 1.0679628230902763580315528239851402 GT 1 -558215138737595982398260.7516916028925492700825343089574799 0.8520238624170547589632302478674114 0.0185802323744067707574656234955465 1.0187550132573372323359647958382491 GT 1 -9398344115823819205.1755061183260455435181267102104324 0.2046569501130392391998360409553233 0.0969240240172406783880819610336331 1.1019485918035441822486523477370236 GT 1 -398.3476086824599413457726128532855080 0.1060361254721721112266122889677260 0.0324798179774180467938493116451482 1.0330189943241054302971621883774809 GT 1 -41199985123035962923.1919624670425029218291402485313453 0.1464303963918516019355538799533246 0.0808350427909134687273560761558999 1.0842896763149769726964945395926005 GT 1 -336009051048682879.6417425225239729322929689413415677 0.7061146215509817739743895485956207 0.0650405839196633695872763059706233 1.0672521558971577362199089795960170 GT 1 -55276202698258019086259977682337477168.5420601315969758962225913709772961 0.9326975852423208651126462362981286 0.0346474191732018089130929982037025 1.0352618756416193251309938761797266 GT 1 -222560.8615025172228487883249468224996941 0.4628929627052965671125674665893604 0.0506127365386952344009322671531076 1.0519384883105993941425616539599859 GT 1 -1545587819547199.0475699591836912102355074209021048 1.0044826243468076611430638125569512 0.0162403155682012898715945594155114 1.0163736348956266902069107427526079 GT 1 -35693524016.6304515471255448973228424068700171 1.1835217646545461511406457056537294 0.0560832707192287673978508578459441 1.0577173272350695935013162047199854 GT 1 -68926229527040801469011550655447785.4357122275892661954673210345457409 1.5609816735991101973782838413764726 0.0196635405666110745353838307715411 1.0198594402879504637571546197896254 GT 1 -261384.2900607943723951435149419663006452 1.0799396554360615147302975239833396 0.0536420123111386467937785334109767 1.0551343590099141088336930646310680 GT 1 -66.0155947253390291654985049891724792 1.3017791674711757537259847582789759 0.0453106088969492658259293577888908 1.0463692363232781134863172420222126 GT 1 -21674010153778046758205069272625125921.6308503887267260381849888872010302 5.1335326275531778445342227127799323 0.0372554981329782441796632266867647 1.0379672171660363029148749728253553 LT 1 -450515504233536839544778982314284903861353.6750328252511323084256935617058212 0.0103619449281688610416973080462299 0.0453180528198311697586166045732825 1.0463770335733286298305485925502041 GT 1 -7019257206066677829070.7335104664256982686006560802927656 0.0221314735627501953295829013132321 0.0462096069208348149185494365286159 1.0473113454279489561107455351719907 GT 1 -166042047614230333956665.3845642324632398847247168187139487 2.8442316605152542840587805874625025 0.0698354755875310383491319011631033 1.0723938005108084082279140243281819 LT 1 -103458664374958773725663414438855641899.2514936814639447344757383562831383 0.5424239308362570448662831847089704 0.0888643365888794324234037511051327 1.0930634757827414102380356597103975 GT 1 -9870004554984464590.5926521615162091512110781878274021 0.8879685124937872152286914482772701 0.0318312345054514911980988001264647 1.0323488623826378055096972180811603 GT 1 -24.8889986315481751434382627088857740 0.4270655766707433677462690901177596 0.0611120446860160643251784594017416 1.0630591303077667137263403733161937 GT 1 -1066177183217409273417716119022062.3643068360232125521303553721751617 0.3434318332176205450191535251734748 0.0934731905125254846162141518500980 1.0981346745003689430398395032356722 GT 1 -4696035571511845810270884.8427144418357782534852235412544451 2.2959487924298620201281109304843460 0.0415456991487279442931932739139894 1.0424333954095098235629367121148945 GT 1 -2130163555200497837976673961525888242.7725457762384704121026915605063607 1.1606596831702807712721814587818662 0.0012453001804999220592388650276763 1.0012460762110972965547011767963195 GT 1 -79961134800.7484962783909802712701505348553862 0.4757493744462217337915231272601876 0.0973733275453674697812517278675302 1.1024462413338124108413247734315939 GT 1 -13566569279004229293353772668809442365163501.7838734914967722311142029785652225 1.0828769385289525881354510106829552 0.0206021858584273966042776894757413 1.0208173715506227654937884648991845 GT 1 -920700751580912043329571.3069056465375640756865110123169423 0.0708588269606054938305105664305033 0.0226039393878628858383961390357216 1.0228633246308398314723093259590316 GT 1 -16411461275498760602058305338753.9194398083076868802667778272282201 0.0938733413321722145546958970368384 0.0989047403291439623049045820112283 1.1041443003577390184770913948035409 GT 1 -8363294916868489369228250154928898482386176.7130421427709197484060834145211088 0.0158004127915671886481473215408283 0.0821995689323085238930936889431805 1.0857753073465398512016793027108405 GT 1 -498964623160460912932.5653288906547471335641241440078816 0.5063104664727953760085296206934164 0.0757061370881853699247571914213783 1.0787252244480271257163856488259517 GT 1 -47798716.3661760593430175453542986017260517 2.4513547308821320694405645614290240 0.0160082764066659948603100656557041 1.0161377929476402803368189283353508 GT 1 -175963823019461404031594617234.5273409823080717113592054255921926 0.4686540744379333870350728692717877 0.0378926836763761333523949568718163 1.0386292791083123838850826642988325 GT 1 -120169022067.8006648307767606446892378984275677 0.3923656614287764338407596677857806 0.0924734122538338645932601688163002 1.0970324154803845239894907288668226 GT 1 -351776668695181700.7935077307212163579507195295251952 0.1431129060784274463678824591436590 0.0447524891549542336236365127722019 1.0457847984213641120610642606420897 GT 1 -1089264063.7547927910383489437289839491172948 2.4650688678910458793343414284712216 0.0387582762868544392878893349757358 1.0395293681206539153111214660986277 GT 1 -716818449567103329498221.0841430667213829528453819054298007 0.9134132520405322162350067973085430 0.0599875227250950027593096757900633 1.0618621301094747605043496024208275 GT 1 -422985.5420251659238989053945506504182474 0.4433647921144740626525999335778581 0.0467054819410677358190622423429846 1.0478313799880380485964993210106981 GT 1 -17686599242767709.0273494383787237134604986711281781 0.9888678927611423774349919319021987 0.0014544551524463970873030173411000 1.0014555138990658117257386824446155 GT 1 -2127.3005524719404373831637705267453059 0.1153262919719233127302180270168230 0.0142818193109533821344910990928968 1.0143847860362359789751717216100941 GT 1 -1238819582271859668596.9932467892235113492605999536797640 0.3288637171435567670699713068460127 0.0000874128918402320154054987471773 1.0000874167125697175822825420117711 GT 1 -108349281596108.6868784295066386383954874357160407 0.8821200719172937773600553312637112 0.0322647342770193004888661443951289 1.0327967149329946832762846355922455 GT 1 -113773833253860375750591.6913935014872530622083204515178997 2.0200436590515331703115133212586968 0.0614095073488947628246260304053671 1.0633760049602455338035823521135419 GT 1 -583109695375244084084562519148056595.8021361841972632815873844922787155 0.2360075228311755599152680216676276 0.0245156886755314830735695643454634 1.0248212017500228985046193103423324 GT 1 -8748.6984506006562568888236788180608854 0.5217591755355027667814478828628239 0.0305057275154058090355131921289933 1.0309807120171449430923680182366917 GT 1 -536988376613201587416145515749602901.9812614545699251650167686121195658 0.7827283541523511740987725044750660 0.0652529395323178575363559335985901 1.0674793098555262856885746220525112 GT 1 -72212339250349829940341045.6590735288941487884919560297832089 0.1627141207460482062677805759163125 0.0004395732772574151349151380865829 1.0004396699179119250119665462285820 GT 1 -1752169943590126614777100034.8016902174503879800976045224619101 0.2092077150227491489485968623236792 0.0990428765010631526392378411223658 1.1042976101876639086070078956937113 GT 1 -1.9388865262578075722222542731445502 0.0007423861255118466580076470558842 0.0043767725632024263379599236569615 1.0043863786716524014533844058712043 GT 1 -28223063677008110668098276.1471903152858097855686413161137738 2.3584644066232584004862418983263683 0.0988427537024270026646614383054954 1.1094913685502993220623988894929267 LT 2 -48.4012276299037572586293358452145156 1.6559526905309385760964026978381446 0.0442984629363258661702258135836377 1.0453096143994055010944517927749904 GT 1 -13288599.8790308615939394003694637308015370 0.4717929176974910648096585939910330 0.0477608521146238930686886806401455 1.0489390699757064024896001050478309 GT 1 -45797787402.8234199140612932240054677784134949 1.0758416688086824887693612797672862 0.0893259112180386077481919573637963 1.0935701967929675671757390338410042 GT 1 -43862407540860.0659383473117089336991512489782253 0.1231162521405092512303546074752081 0.0092180628615773047327360795733403 1.0092608121160520125676265962696533 GT 1 -78562338.2684748666904473150326224718640050 0.4579026081004133223031986242655429 0.0557485938087086490947153207664601 1.0573628281756504621177937013030644 GT 1 -2869956988073931.9668409173698596693467345645702932 2.2747865660661466230741113171379898 0.0664973856513528845338825753403987 1.0688115154165501427961870788408120 GT 1 -601765068734252618506301926.2740642424702087947114883302120350 0.0990514462676716481876387734102333 0.0807122974308762630160482502083954 1.0841561451527066332223058085645013 GT 1 -145727195742125153836719851763541.5747869817664724517947853799293045 0.0609111510661777009735070777250095 0.0314615360238875637083903598626181 1.0319670819251388536308300647549757 GT 1 -1186665605.5714575601549219759862454726877952 0.9479029093122818177023924715202666 0.0506978181465774038251222889319095 1.0520281097156681037330242272212809 GT 1 -53017687067704261588.5306835124479775274825350923912296 0.3820416139944926615414745568769978 0.0629082607960948284735965082459369 1.0649740941682332419681611822463407 GT 1 -22391838003.7972618021045543982398419259944238 0.2246194527684534188882933442487575 0.0655441955144904891354179284200168 1.0677909464253076963981164443077379 GT 1 -7684059.7843005282670659267229637416900638 0.4982511337493509491413677243233672 0.0361811244894451699791139240171834 1.0368518904993703154971675583602847 GT 1 -2167509431390830051643747785857695839.3201967991593085154782851052750054 0.2854256180267126020031501834257325 0.0915845144416016671006666183688971 1.0960534218260219214256600551119258 GT 1 -40778833532536759472927245757243941241869.2940136159054052391569199269348590 1.4623367584529139080038337847239290 0.0790030428342279231406569924486688 1.0822985465696689138410612332644606 GT 1 -28411886431615798428534166.9127538474241500594688660239312522 0.3269528160009740952305602885237131 0.0902482999544755902953789435576988 1.0945835737963410796757739285995360 GT 1 -13812552155040431359273377756.0904093116572471336053802050143877 0.4163855260536098187227422417777298 0.0321084010095545170075879072047936 1.0326351824902964785157174096352239 GT 1 -20787270658417.6401676736412126261844481448927810 1.6596491580824442585142061922847275 0.0701390986631006084990970638520112 1.0727202724762591224423448959057233 GT 1 -3405181575448525117224220727818.0002654238272722336192373106403991 0.6785807332752205531284319280247253 0.0893824957924168633609566317693138 1.0936323335475809031877867598547753 GT 1 -3466.1228345982983590210760653977481031 0.1564899961317714186833213215398023 0.0839230647119145738318820716279934 1.0876549273458342029093417016803843 GT 1 -3323863779657622657934821061161966165.2286146953110535596635718779190020 2.3064164363516419004203839320855234 0.0112975825394097850801276699550836 1.0113618849919305692955395395998388 GT 1 -34277620330185051722.3276489187565593738164358777766178 0.0182911391777106822082643931365901 0.0309267192504129340549628384696797 1.0314150448222338701936386064698868 GT 1 -19104493657935317.1792041639090517271565414159414642 0.0714071684894547911999038786074551 0.0605874452498265437819598031116087 1.0625005408307163585950221346624647 GT 1 -48352136167150899340398457358.8363616300812454013763973402183646 1.8852384427306956594209895682226673 0.0386995781182241680261687588366870 1.0394683050445772695308371765322593 GT 1 -2690957069010087.0587772889735863034264316380481621 0.6355191177713912337379013763361200 0.0558959777534251101941597425024832 1.0575189258496330056101656595463317 GT 1 -217369908314997614295689711158880.1876819200616192509729524540307739 0.0058176215183015890534506142028977 0.0806856696579468803907368526062957 1.0841271799144934644359756839918335 GT 1 -14579859218322061279324817138176397258.7341770946595302286901133909287977 0.7941344634609493518310289546308133 0.0843001325671616031509890489830432 1.0880666236398508342193306278555460 GT 1 -12220.2720341041596581439830069260327242 1.6108086144876192381062586639729758 0.0015074098165876441457346378824321 1.0015085471018121751913831355319638 GT 1 -98720883169419218087591304496501388474.6114706031057995467407902920074101 0.1376243063315691754017546192240780 0.0793415421858223962264477137454788 1.0826661499254899657038841559385068 GT 1 -144059.0766814096660348771836534999283999 0.0148954918717841435081501111547940 0.0348805807021258795113786078388601 1.0355034347318757765021373489625059 GT 1 -79119953670906620526494.9848282927013644751952041851646515 0.1138551396866112909239419564665091 0.0563204421616600448759486956264939 1.0579686219057550806597564459964596 GT 1 -10059458728761761464094019432.3782136019719741938071718436972529 0.2300610889322269709689286096301605 0.0975258901172150286497342090426958 1.1026152762970716568109966507972560 GT 1 -18837164795903086800888681.3440775042353112301854631938945132 0.3808399440478966751921058023217995 0.0701964377347562701171363171900642 1.0727819385163390269035580610668332 GT 1 -1926685432693734115782029827.7830961021667144011102072334362305 0.4344817676182817059923001470359993 0.0164331778615268237633692834546749 1.0165697002597635133306087937968436 GT 1 -103423773689556042.4584706604375136290534826091872781 0.2067808694462722929395877739268118 0.0646252647741814419336678672716862 1.0668080436490675208747521865800537 GT 1 -2436390449259.4106722395076263512307868466166545 0.5714266419062636977463528918159425 0.0908697829884602877470959751268172 1.0952669420263973689750786493839860 GT 1 -9607538370486706998862597934204214043947533.8427568761471209154211610630328773 0.2273623763413348319618933990032099 0.0428162685659524920337768019756764 1.0437599190868702017154538437246717 GT 1 -188222549633190230830.8956015868218985744303874323150439 2.3293048945406682454596595260340123 0.0149567082316019671982459709389930 1.0150696877419599300774020141953778 GT 1 -65.3447568943635105316581695945485264 0.0337425097345352853919821676029579 0.0687254353735838182528757889195320 1.0712011315139382303231705761296104 GT 1 -239199749503039898.4285535648363200397831776316978273 1.9137589469230866446803656463779551 0.0128565332715513790799435366655252 1.0129398937507242372636516778661229 GT 1 -1813241427526568505.3717565901406297612417491086251534 0.9897320834143168338018210594850539 0.0995661899305596927425479485672094 1.1048786205996362680817656569246046 GT 1 -8051806976316.6436962760198254824879290108359124 1.8122624690464263312968848659467523 0.0330605614570935019752637973772736 1.0336194136773430611124042646044696 GT 1 -913478642545024004843356951105156254.3549752986440950413247460712945801 2.2759343100319666256771595768910357 0.0898598798049012782614554721072690 1.0941567130883009785916308236037918 GT 1 -24896598.4461818551413542377224255585040109 1.9523359136001579907321598353116100 0.0634449555184357979683530760887473 1.0655469820163514572067764901065226 GT 1 -40390356703769848209253372010.0744640004649957902673775829595008 0.3833037427114861221122720898467244 0.0917912329778199894047455322671967 1.0962810071803591454033152467727894 GT 1 -763490352167.7870747232376846930784421756581252 0.5130822809061622641306798588829931 0.0768288097538532142374547995609620 1.0799405901210521553473180923203385 GT 1 -1360111685570387.7414750887458512165699012008137188 0.4192824018352588145277718701780273 0.0635144550584170619907187269153948 1.0656211924103019308758596943697512 GT 1 -8246734460247.5164801140927386601738629579985829 0.0552486702413244343421441874179553 0.0891368648752710464320874310763651 1.0933626288761935625839665298453441 GT 1 -125914453989309395.5667865522352468793712562878819513 0.2600249687662413825095128507046548 0.0471392765136341281772826887326642 1.0482865313530481306870249652232880 GT 1 -5400129569.5837539761665817204602251105479177 0.9219260189901152668060252537449941 0.0710136821318888476804452360860236 1.0736612680828773613031651229622535 GT 1 -367699.4465603579368807638478680768912143 0.7034484994703184088137172476862248 0.0939777264708176722885596961004836 1.0986913887720546674523902790078688 GT 1 -11761694.7195725143867961324402741923960784 0.5250723591576718267689430721694001 0.0126156494730521941922649733520609 1.0126959024556013008598228008109618 GT 1 -10679553.4858719812228395091202723951144902 0.0129747389392304184128056637611160 0.0265594689392712946562346650933531 1.0269185438008611721590836156163474 GT 1 -583190148183141187224299739847153053411652.8053058387369944163108629062120944 1.3115211840146131454815536750703224 0.0955628703612356013315741770911712 1.1004424849774632177125940483352992 GT 1 -346519390641431313153187323.3881231586711337952189117378327482 0.9990536589149682091261568144625923 0.0126466304175122147728226492513969 1.0127272797308182299209410777680369 GT 1 -4957338124755499073803557419248.4849164920407166757157283449350536 0.4559756654979480766487588271718142 0.0202897450883192593671385839809577 1.0204984092864246271851812176554014 GT 1 -2698534680133208023.1809076815965671901970823589590407 0.1870683769911292403444513748315651 0.0981488177183254506697808299475451 1.1033057589152168570136973654983408 GT 1 -603554108316254131452667670101685638.0804006455488845012343988618825976 1.2033958981354609008007399055378416 0.0423899473407541924351174583006441 1.0433146270290159402348895390571295 GT 1 -13871930159605352373687909870520959309344.6974586752885131965289449147949969 0.5664800282511247427304246472828271 0.0632313719022022876577205541467997 1.0653189556263738112823005009550286 GT 1 -18858075972194628731091941158560085901620.8377232857774251904351620996176799 0.6760606490873506358559672765189396 0.0722796539790888293689877805724483 1.0750249428819246992347115813248134 GT 1 -345731835.1940905796712579668191131278978525 0.3455863595319195037366854355556128 0.0999861284401696241933648273353260 1.1053451029323469916825490592213354 GT 1 -24699388524582175869030204727688140607759.5646108156771646482007726847139447 0.1101980015193295119741774603290511 0.0854178238577061285188491795984474 1.0892879560933947369218168680127265 GT 1 -7317191797736762.0437851444922759364709132627810049 0.0350969834029898423811404894393561 0.0437280419927638017254432380983430 1.0447129314830820749793397145915502 GT 1 -30405583632714.5886717040163732379945369413543082 0.2193202045766231294380298621469256 0.0657583709863890426056315252485114 1.0680201707705622527854846282044780 GT 1 -6567256089824304926787673005432429.4094981780935480724235464811025190 2.3075695005000166269646095051585277 0.0101603347681619272378066671392848 1.0102123032807917346863621335043339 GT 1 -6258159721925884304.8472836370311255998879592278726999 0.0266831866058604001752641433138768 0.0788481459871376217983175291960564 1.0821303768251668396880711977907575 GT 1 -173252043901994370814570.2305505681526770534691538751042579 1.5470417109917855268744753829672324 0.0543901034296267048641332398700196 1.0559251664688552055778149090603846 GT 1 -150067461541811529238461133100.0512883158269076322316515727389829 1.1458730068428476263190301057040459 0.0767367065139913137040296383854865 1.0798408267763467161073902492592261 GT 1 -1255465813766.8232206558883526582721864543507599 3.8817261100312737660098969545513455 0.0802900926617083638695652035034446 1.0836969767728117424275502439942852 LT 1 -31125.3286480834474694699611708262986326 0.7403418552895345773577562243082322 0.0121210047248050749542626853868644 1.0121950631526920766233042412311195 GT 1 -4537582018911979245.6554449256109694892758382884351382 0.1413280839700175175368552969468725 0.0960807628972908809905238696312899 1.1010152620691239613609084505734069 GT 1 -3819774.9191223750053351064120218468297199 2.5553418222877478226595842671661078 0.0208845843051984870941519759165152 1.0211057519857672164251746446552572 GT 1 -1307741228366856897965747502.2390258082808726541621856672576489 3.7714646177581227350721419467987932 0.0291485580785736029781630730230389 1.0295818173273202686209117196952049 LT 1 -2215996995354981428918581930378834280543.5571757896617018162699209966430259 1.6001070856954721587825437204744682 0.0328326589193392635288157351167955 1.0333837467108549097051306390206695 GT 1 -108014376296858.1364489416979603692970126854228146 0.0317828555108216043272349854570389 0.0534086012723185880282294296972806 1.0548877480422063407006000262363035 GT 1 -52060554268967967829.8344781329756258775176387911466155 0.3252645455419508200362467658025997 0.0606035832814880283938713943511119 1.0625177198328469117851324018907919 GT 1 -4755720059.9750255377931418098811272192127372 2.1241422016035810337257307497694008 0.0287444377158347355838524132919520 1.0291656503831751867393853314086237 GT 1 -49436679144194012382001196739798815.4101684521584325264795433197623450 0.8139700614422817658877313838000816 0.0642571419626436598694886845652599 1.0664145645672473752150795678080201 GT 1 -739.1942388863120925152067824876984347 0.0749444807184670070919359418858580 0.0306315818560259791106433512486825 1.0311105348678349328514159127214167 GT 1 -157483366328606662854.4789642253114465313777047499081232 0.1544490438212359957018356026437697 0.0395678780900577132766066014101264 1.0403719688074947996430600826254029 GT 1 -1292440013571764402343307268.5867215698067412043881985941459390 0.0380985139315014318200793201581004 0.0805811761204410010469349689985772 1.0840135217282814435727662619662086 GT 1 -12510503621.2402860868204246645423566112821626 0.8474477051467436646417686055475194 0.0014928448412840807380891998145642 1.0014939602443648535079379601069925 GT 1 -3764464576887779891035319977396048839004302.0018636402756257391857813128938094 1.4927511993832034501242694899859011 0.0384398079688889201327970824697836 1.0391981136962954249702972950042687 GT 1 -193756126735833318625800424247125137.7988561388732458149861969417609035 0.4521730755554670946523386418042019 0.0101827665332278742618075870405010 1.0102349655563422639633609857522209 GT 1 -18615761566889949624659353817687903.1641368866625416488884685112304516 1.9746768475431494478834819081828639 0.0788324655545003422193288508513512 1.0821133543341309292695453828108063 GT 1 -13552206800407469591749945.9183881875081298283479374056372296 1.0815928532013611802843354281000385 0.0113547852485521703282290668114180 1.0114197430116601103176888067999502 GT 1 -102011272753072544663307887895695921.4113463877656792914367909515788032 2.5922787114281830360261174946395046 0.0624045772629387663748009964229381 1.0644367420643714522004781729901244 GT 1 -35290350376.1613317450404175956798978087537213 0.1855633383796077439593922956459534 0.0861249849851311983485080278910598 1.0900614619387638309947254716499454 GT 1 -19809705076918281356908087424596.7753087281094319846279992512014400 0.1312615378631615447559762485882821 0.0672582813238151275732481968660226 1.0696269453162252598454898457912815 GT 1 -63301557952528389784723767656887493.1874246552036668263382982567853971 2.2367777178967833952372156483158440 0.0975009007247121694387753093138038 1.1025875868085211734408370486342564 GT 1 -906147330.2157423376129891323839276103283250 0.0700113768976349650292517056011876 0.0039877160701283232936095709840536 1.0039956882106695100009578665682278 GT 1 -7802301916658202855740171979032.8149957281921535074126912103248464 1.5425301329273829162586604899417701 0.0593897643145739077811178393957760 1.0612264274493590008598931892466110 GT 1 -717236190211839200511406776397515484.9880721060468923858302475330671494 1.1209048898724287520460553229718249 0.0986376131731048794467858180000945 1.1038478971013142984978738117187809 GT 1 -238512772251698.1443030712737649673904986098961901 0.5297940904934994666521057590784780 0.0679966041883445645455767111410938 1.0704188207284460785386505575132756 GT 1 -516623813533668637307667699.8147391590958552224867707318208272 0.5274250390500765945916217718078166 0.0388387486483274069928692664233523 1.0396130887167659327612958223790602 GT 1 -334256773399763060447.4087489963266580639349451563183197 0.8980366791559891598313415678916459 0.0620629788377831355303134729457690 1.0640724738481174034674541317131096 GT 1 -59598682630782655.1652489188012718400834321761684343 0.3780343176627251061906866575801022 0.0830686582012729781660674389284471 1.0867226821582908684986196270112581 GT 1 -5165750046848198931249187419611.7060702091632215370268903720682250 1.6209670066498992526051699453466214 0.0317812186422084865577348817419167 1.0322972034434596126793030026472575 GT 1 -207862624061203148158694287.4522956882847037078023101025743416 0.7716163774112596320580505847499453 0.0997385949222380436508177107583334 1.1050701077438846741021651353597631 GT 1 -405035.8960001482113833444634888037123276 1.6509198323605672275094660240668947 0.0460905997102425012896808228127973 1.0471865802933503648622373157272205 GT 1 -43269287017190736963031556798402.7220503323136827208491455677269252 0.6451222403952938700250315672357149 0.0798676845499036709944046125240640 1.0832377981389108463863386967044459 GT 1 -1883362961982919958858639015555318883753550.2653393679771619490949044424212690 1.8635738517981157526510989556418497 0.0172979757784822657852512572639255 1.0174493337588327726550560037995017 GT 1 -2125103864090369056594722262167008.4087995473001373692474165484034473 0.0019612371776300113512786096703881 0.0871730476216403752839586237541813 1.0912089537247465636378528100847448 GT 1 -1094060981573690817270144115.8292974939896371876911425480152803 0.2671943205688107149733947744512085 0.0182726958479420093856380147419739 1.0184417035380587792668213868969746 GT 1 -62.7070595373815590332961283373446390 0.3400712392645534384502393873806193 0.0469977814896939359277070397557183 1.0481380474079729168293914935721727 GT 1 -72635689983404256632215.5652197276239889798969202179523493 2.0628255693602482605653948490490012 0.0745273140300759404250567844868654 1.0774506601324310424586661643959741 GT 1 -13417388094936242447622.8209535145950756447446426214885407 1.3255522714315857562174309569014833 0.0542394350048562924553143439847741 1.0557658445082442639314522991636213 GT 1 -205543174881721337426233086694910402762.3538313215095660821347050472069968 0.1540886048693356029375704139915277 0.0055282591839210038669134037926157 1.0055435965608377563717128343179588 GT 1 -505621037604663581.2205601021916955050589396759322451 1.1190080165225878391997430398627416 0.0761864296615053033073420909721222 1.0792449914004148727678212705113986 GT 1 -137234840893100777165526664120598.5469061734733761218359203925727456 0.9654126329674513366881397741301578 0.0508601358430474298171736785328813 1.0521991106658489879512616575267799 GT 1 -12.4942855321675424212238560136340098 2.8964228363603734169530307734978747 0.0252165601428692159895946062013455 1.0255399456220734848555812719128889 GT 1 -8495802635458171175670385734822961.3608003229585792881110989675709406 0.6376120449082639214855544309065231 0.0648673028573893272808542679745136 1.0670668376857768855372051206689314 GT 1 -784597514.5252108800118690225938184443694121 0.4207725446036701698935986442708928 0.0490270638836093085313911678867963 1.0502696751840792888943012997888237 GT 1 -3857144891672449633972061433.4721723167927643540529226109607801 0.3736475753832509548009511780022237 0.0466040350911625165138999694233541 1.0477249685375093357509497699790982 GT 1 -258603396863038697410636.9143374142467789957637900294989031 1.3232508421895157204755780568582126 0.0571709342638310212309658281142055 1.0588702792309989243541298215369809 GT 1 -231676655251077417466943161833.3526938862654544904436369601743893 0.3143030183700227725177416057506517 0.0894592750892127574076068745774401 1.0937166527413925833284503830369762 GT 1 -856726232595099327056239587356557870121.7232926929329720918582340826756176 0.1606199208196620113898736775460026 0.0386348722574825063271720129726390 1.0394009965511383200235769999003133 GT 1 -16825559578465570324843765228204567922643.0531134193184814926229455515913652 1.1057126035793653602520805322332067 0.0881761251111362508873019572353229 1.0923084271972081679033889286956131 GT 1 -88025279940822625355206755.1953074529681314933156051059736176 0.3861863846710047993714944176434575 0.0529607568231327978602437818971133 1.0544147471859411051151248457381395 GT 1 -25489362371085093836.5201399750834981910427291100839932 0.2031740978115427418066564197460517 0.0720367042372309661327140778810429 1.0747630989579114029351236308444321 GT 1 -5199424376622356.3745996799801472948298236662543004 2.4170524226823970680674753447614503 0.0050522791844690853192286410405949 1.0050650850978567224380751133475133 GT 1 -542755470651152.2264426862456953391438030556992431 0.2811883423491771747451987858959106 0.0818468299900062731316378173944745 1.0853910504171322070572723990326855 GT 1 -4196503.0555731626754086368426408102698573 0.6659437902322069539339056301236872 0.0471707417381143130582383651948749 1.0483195537489093698794276206299415 GT 1 -2970328136675931068176.6304688972514197701891008358925441 0.6917560036372686415680062601523541 0.0786655562428838187828216933715285 1.0819321775277582027672051070562808 GT 1 -1739056932174.3075349487842904503852195768198912 1.7313820236602573471928433847898275 0.0035407825394680604055167656703200 1.0035470659464672143545152091638752 GT 1 -12968762216845956975760194738.9128080718911254988622899503020510 0.8431777033291905672411184406629193 0.0559423378476716254063322153861817 1.0575680319136304752355756535473632 GT 1 -67627146693967019031427907547659.1077509781364099931982337790954720 0.2441242891276320066116719761383867 0.0081251720865892927099095570432970 1.0081583611977248770190606043034810 GT 1 -14890813230310154491.3883706491069746097365182225189853 1.8370704316824457969060284070990136 0.0008336130186341518098871747139491 1.0008339606671829014208285809014445 GT 1 -2.3331465913134087184063503377929679 1.0330114426173070058251643807441748 0.0062611747584124482916208696805494 1.0062808581167332290951247930223104 GT 1 -113452715834157554633757410199.7944918875957223895929732206369360 0.6966067007397326410845174733715662 0.0309349097938797455343953742321793 1.0314234967920102297968004789818930 GT 1 -83495236042600389.0293354362715251398198641269284499 0.5288043435515376647269165044306531 0.0703380559611017470010520957515795 1.0729342599507933532872508528291566 GT 1 -574513422572545001050404446249.5782319105636604841942950167274618 0.3610034584262693875076980420625569 0.0242520337549048232860077657147310 1.0245509572227442989681131224513168 GT 1 -10970.6828088824319874792934203719219437 0.0181982793941581974995484084277626 0.0723172956538305761041950644742455 1.0750655180817331331186519410628457 GT 1 -33915167923875635908529681096.5422089556160193716304247490204790 1.1106111563458518939874398323009785 0.0097941291829393525268582376223077 1.0098424071519089886243040675405551 GT 1 -113189850861525726198788486514260705815.1211508694143488812076879240166389 2.6365556349537147882571419394924987 0.0942509816511704076221180966942757 1.0989930330067874408081827555060625 LT 1 -173133817103807508599527461515870835031372.6777275338738574663641955023874467 0.0926609798478126841373904441814219 0.0928077464010796695236566664533610 1.0974008848470007834295208054396396 GT 1 -6461430196182712309417607797534.4568954432495756927426158712097940 0.2688839716386358980744476038336198 0.0732888600006758260245112880490217 1.0761133693121557268382975305983680 GT 1 -40801739131978926173668046629133.9038471875617527289019932177697097 0.5408202271216169364832232740499781 0.0841217080491345270664766374729891 1.0878717921851543895163091985882639 GT 1 -171290.8395281522548881171504709614699996 0.2963265627361361035771496923371210 0.0761319534615682886038790554215956 1.0791860243149005632320606425758992 GT 1 -3026066269833540728033043037812779068.1868495718537539306446510200929735 3.1472622386851770707937006333716554 0.0403236485584008749473121437107263 1.0411591852776703923283596253246623 GT 1 -150230329050090062941770789727039.2442423986750622371120550820991426 0.7173143760762320391905318397990961 0.0057059471672526826330691939911242 1.0057222882744341373199776232431305 GT 1 -102987498.2637384916756241664313465304248248 0.9143250972904096115463407115344299 0.0336733712852503081671280541871096 1.0342533769574730261440044883766800 GT 1 -23104135653868944898181920176899.1175923725263173025059012166115202 0.1104153137227215339480405668097249 0.0614538542231478301520126929822039 1.0634232544500839047085951136547884 GT 1 -2199471739053256032.7617390523090110886808136187228451 1.3548974732899622474518625335829107 0.0103698047681060203581397176780649 1.0104239458068132340482220024106962 GT 1 -7691834004078286595.8642408650508881375206113717698540 0.6508460027848111723112403542978958 0.0760354965133515647349739124014149 1.0790816242183625682032644180363852 GT 1 -90739632201742898742477.0937756410873302930729337736749982 0.2770077213971466661772340744467991 0.0398927101899997017077926534584966 1.0407102405462127974386947611876576 GT 1 -2869.0420501511736909675325308881156640 0.0027582084651958955440950847498341 0.0809168850731541198806236566120279 1.0843787200991487480480082021612605 GT 1 -4570074086159538466898662313665092123440.5045180163869705008370606578793567 2.1054768327621637686525690340950700 0.0304073962029590568376115929290605 1.0308792917932923659183166356822404 GT 1 -43525759592731989984778004.8749556526395860925805152026970201 0.2921606710510269323226278045925742 0.0353248343047463279224199571292763 1.0359638501708276463839385595508676 GT 1 -105505139572905412360.2428085609044911256292727657133947 0.1430089501545646529754610035991813 0.0024721261129426140066276891079380 1.0024751868621142946781782637527501 GT 1 -398001.6707161963707014731870175697332751 0.9083977656450815357722253782002054 0.0528073652900473798192542939761724 1.0542527907378299830991790602217003 GT 1 -173934936352635068027516256.2667267786050433017311015616522025 0.3887522230180142892386509504210722 0.0781136456939094104946798116574336 1.0813333229943800049984978328481524 GT 1 -27830634.3901348599190094974180445703220871 2.0759908822749815020992464904852563 0.0437204012509161505262131867892302 1.0447049413802054231024660428153198 GT 1 -52082207529685517353863868.7970593173171523701668988750517365 0.1310430546684127728606559895030824 0.0835749078432810392828098522795136 1.0872749475503323795920821186141364 GT 1 -29712393351595545644301370.4697812201339465375292386282947928 0.2833694378831106086209917030584194 0.0025504423002050699092322656505593 1.0025537002187695547151858737136816 GT 1 -6884444.6293727606052999180164471742607921 2.1287673213683940100029709867662029 0.0087803226647618361631683374102991 1.0088190968311236572742156070598309 GT 1 -103397639196276182514855027511182030930.5949645898083758137222736838701854 1.8576902338424284378398988872756289 0.0377278150706886860481542153514966 1.0384579318184628704785494176112614 GT 1 -8301322.3747447137019137904485304473171265 0.3690048092225633648381378374601911 0.0674050266313994335162035799677705 1.0697842845338719941837334141867777 GT 1 -565815750312048791123057168142198.8559113617519627077340240751099919 1.9677510815707742512604116998611094 0.0886694255420166257086449808924570 1.0928495776664900590403046163025425 GT 1 -124788.6445158339277898669197633410508127 0.1251198440692301149579231397548309 0.0910742356310759152064121195771646 1.0954918555005383097027683554251127 GT 1 -3757220446204935752633508987967779853294.8773408019263235925124188207035629 0.6235260957738955053404477943686918 0.0099204100729111558966195844474800 1.0099699452191687694303020416930422 GT 1 -39988820176823905454821739686802147276051.3209352189179469856580470754856084 0.5219808165474959521233928969535420 0.0973348051535292298220779910161038 1.1024035641439996882092857381884413 GT 1 -18988945221378717412167552350478484332163.7449367961519948706769210219062717 1.1685561182310113601574352382780052 0.0017517148422108134991603715082132 1.0017532508887274439255839308623766 GT 1 -143870048283557.9298045917495060730357537291946366 0.2572058940113522800249906326331777 0.0259801383122041812507457317193583 1.0263235836709263579079841358769465 GT 1 -16764108900468662677171692520935141832932.6950279077514868943529198622257901 0.7147301868781740334255044976297819 0.0678918158971668623268251655494166 1.0703063936694468691113872891542289 GT 1 -57158041019484414999651251207190517.1742101763485848637326619757967869 0.0692772031745344029653715288492318 0.0121597169497969229591806218435912 1.0122342511339214892662576046564298 GT 1 -21624998565378866849500399022455900.8386035780702701938497873122242876 0.4846271129912722399018442568328851 0.0208812190953290009465626042611939 1.0211023150016972484512503874682417 GT 1 -109815146565871313339444015026935093500.0608050792483461574259777289227041 0.2921231722495758859100329711329726 0.0325346555511747879031635437110549 1.0330756744108773687551294604108840 GT 1 -14158376645735104355395293117322.9259446356633423735255626277856045 1.4883596010760257848432916053510519 0.0128053911251945326764555127739079 1.0128880868722567198507572171641496 GT 1 -546144227358106227.1643725456739107243563778929095741 1.0459069163052705877726720584725320 0.0241694126220257047372045172712422 1.0244662861417108509341014926148708 GT 1 -347850950844083197594257306976822778985.4244413282568297198546503358871504 0.6037736140518979554679041835315416 0.0803657999929950425429591504180044 1.0837792966943828063224500865543802 GT 1 -540999047710531394831632212940038.3140569364465484667362740110818141 0.7328227957732772285847392722395599 0.0074437378397771841991242667000885 1.0074715807123707410417687640692213 GT 1 -5787076790373245441536212022584699.7835187038935721402019774775551627 1.0104580772187549851438496212548130 0.0523035349498643877218649908923030 1.0537210125434017373129198790387192 GT 1 -1210469133999604500331.3679232016009326552811804302069632 0.7081471555421469552090034184930764 0.0728120339233438974653100912305397 1.0755989658192324862762394101645848 GT 1 -100018804622750572728965843065506841048.5015317010596705836029901959612853 0.0833347951637269005444154710308693 0.0115221388176838680146050403154176 1.0115890329982759842859516515422984 GT 1 -196051346805.2551220558842237595768561077907213 0.0602252054491945592667280401336610 0.0486742829846066745915716788162270 1.0498987755858841456727995072248288 GT 1 -97517595125544010043339834826726.3621851926554507851857467606442070 4.1991047565603921280907184139657624 0.0250493653221173540551618092102418 1.0253684403656948078156207585969338 LT 1 -681482.7615138276715158949018498585651774 0.3694804558640096162861623384691895 0.0341051439306374506792428824282018 1.0347002953423207113332791560418589 GT 1 -326455872147788441920838452.2050370953979869027349617088960164 1.5208360376607474087055809191556417 0.0415820582475392218785872208330789 1.0424713312698217769742474686998897 GT 1 -4639920679.5927528270434515740604943182623486 0.1613607373094311109756538472171903 0.0204348732412052302633017318324597 1.0206465540082019818504693118905114 GT 1 -116500209444012629915984577385.5220964122836792750087640282586614 0.0069916030063936419399749698865805 0.0063768205854546160457190604140649 1.0063972393566902734553644656865382 GT 1 -3218260367400611192704849696224963.8500253710166799845431597632044178 2.7692317776341269520890260391989810 0.0586575537434737241487660433127285 1.0604482882165587433337203913657795 GT 1 -33877570.5546631599325174615890066874900331 0.0463587979122825182171235239056814 0.0475691835548452128272242971890749 1.0487378082726133618290491097288807 GT 1 -163114653453592499148149.6002641764761306335831560390465159 0.1952987651003219021785293026927801 0.0185289342477721327392308460057276 1.0187027453209099774855140731687103 GT 1 -13062262793.7871754160127552248044788680489387 0.9145827771376370354505356730434922 0.0438884216589966751774336849900088 1.0448806589954357047622126182040267 GT 1 -324276095650389935600381053759.3804621413488196256926394676123053 3.2437745776896326015975813633823898 0.0325831647411693242202334012184065 1.0331258161616397114049918243638298 GT 1 -223237435044761659656.9708819544215156810663298038398521 2.1267968550520673815864090292417718 0.0641935327523990258861095268398700 1.0663465896446420715246406018892230 GT 1 -866805740599066044680225099813578991.0201751451238893577822475685930362 0.8539794602866722528115521865422234 0.0294673603697603853846783218160312 1.0299102451712300706567655382943839 GT 1 -782707964939628742764354120.3660136926284109261035473517437479 0.3944758147930999039775580489576222 0.0361206392417823177683728087856504 1.0367891366444933445658984625346898 GT 1 -32596018897638977014401071.1181426486294330811362869888834795 0.1285657792876319502123600114683510 0.0103725968148442821230293951460975 1.0104267671138937238352440729425243 GT 1 -23928506925105922141261.3803348256838879739930514162750520 1.6223176554371553457785707076604635 0.0998663838627152294085632565444862 1.1052120643025131694050666099418048 GT 1 -9349104835188291653492513160.5285786460387883040574576867874291 1.2981746218404235864753609426631967 0.0437769404809671970022728674594953 1.0447640672902511819205717169086580 GT 1 -2888939.6380335900831545731641733057002170 0.8992779477446335569877167146695252 0.0498217363848099540445155858455454 1.0511056660801159860408645007277808 GT 1 -235359509175376558229139633441.1336035559717291124400953361428974 0.0134785503015474210282035228256790 0.0045948798023345411708422051926347 1.0046054687114940588373429440995561 GT 1 -2219254686988449380065853950.4980038728685558810341519082270987 1.0312091199581367430079532668818425 0.0317745361792253603648084165592295 1.0322903016563311776888646676143475 GT 1 -42219319061572480792267583011.3119576408739713963421237724874376 1.1596144474331328238550391813234394 0.0138805391073050449185799674694029 1.0139777746264466215523830037332778 GT 1 -20103395372165701543767.4437978600146216773273805081321440 1.5924345131383791583726345551476991 0.0072575300291285349914373215144285 1.0072839940200699788107126698398886 GT 1 -256223059477929.9456669351278438377420822679781850 0.7348003943066170526401971406626232 0.0861816022807421229487532803389426 1.0901234168544346582442217915891175 GT 1 -2.5755325499956709519277649882249985 2.4015365043849312318762271670321896 0.0944982400179241624892202646334791 1.1041929331385366686911742186918279 LT 2 -36934890675226151037005905.4083659799673421003341759842301147 0.5076004045674692990747258590634771 0.0592795452272725785439243767111422 1.0611092560366069034640717447084538 GT 1 -44053969.8719590769028494811279601731129175 0.2977014473763255142597188483625098 0.0160435566469857201692654770211702 1.0161736477947506582675208358275640 GT 1 -454736573482933970664227352659457.4797811306247132237867387807213000 2.8208724625819296430706790726731103 0.0185717535193439461410604360915675 1.0187463739179671506829756358627925 GT 1 -137516645480842093776180412615790024378786.5964656349567140936343283543834257 2.1786306620866462935682585705073532 0.0457526312222429411173280601154737 1.0468323447326120052839462320944838 GT 1 -3100247908772829271944149455894277.6624521296128278855484008018856857 0.1895323691111775496634619916686016 0.0295234338955203452677549614805689 1.0299680228732727909555282844243018 GT 1 -14602434939282448391413812842.3299736529534212263232724555329448 0.0442220764888788611736359804201111 0.0235715851559171748584066941017016 1.0238538392439224573842493374133058 GT 1 -4977361.9026653060424025313845442624497574 0.3759472135381548887978472129487410 0.0079700416204730926221479786357773 1.0080019721739126529971921850033941 GT 1 -3823482118191180165740116419607964861610174.0130361937851404772658927398451313 0.2188781645077206531433318418907293 0.0694234718078347933153064349773983 1.0719509621203160203104357625718378 GT 1 -122439592511260931704724474686.3803739332013234105380247872195723 0.5054381238337087998939464646904851 0.0738424631794964758237711562203575 1.0767109326497197270633799135359052 GT 1 -15.7889331304280113544742852491218897 0.1281675282392485961930946810780278 0.0881171952462575278232797499625416 1.0922438007245883691322038324549108 GT 1 -212213624141439005579825428082357360.1529451852839731453432235165337888 3.0145064262561999415576473788898706 0.0482669288376307693763680359998750 1.0506943445828483017894510387786985 GT 2 -139340.6474419200957132077534534869407231 0.8593665644829660321944533076374555 0.0849869456972300054713813774700709 1.0888169468108255434929520517617009 GT 1 -67617008377854510216556752715304074038.4998243024570502293199752047212857 3.1209135994069909362954224803292717 0.0760621060479495607809185693438006 1.0791104239370454571231373423664844 LT 1 -184556183396292508635576641.6857720573480156454457538893224607 0.2725463913604404640582849760030087 0.0089827040350318156767838961511884 1.0090232917621023054586218578424720 GT 1 -3900975011388648179234865691289.1045253798157982701527326206602741 0.6325384735426802772306680198981963 0.0778763784026876550552359426641454 1.0810759845898901966414557723376468 GT 1 -5439136132274287779247544403612156458.6631624749510206431604016838297985 0.3224448101702417664320645756778946 0.0158336050473320148358055387869920 1.0159602956641175422056420835353159 GT 1 -105161828.2359975605700575293131236726250482 0.9438615635634558416289391142114212 0.0367177731922968061299036861635292 1.0374088397077726044192608858496555 GT 1 -15296804938.6908889122654918551896988209066950 1.3494895426754721668979699999872635 0.0006323122472915775691110238223587 1.0006325122409907023798047556805776 GT 1 -70793977916212601548866087920.7051086710645943148272064572737113 1.5366075460346393138647098658487241 0.0990860240035071126920649369235310 1.1043455020734533965534196609137996 GT 1 -954761117087763239845902866738657151.2835994973781030565051255692988996 0.5557634160316128077800172946498849 0.0747720043032829147322569129193626 1.0777150900070798295507849711090978 GT 1 -20438352052467.8278936253983088404361343697394061 0.0441811830541089884825828410859795 0.0170167426605756158860108984283188 1.0171631911881337497906251899518844 GT 1 -169151506095835608.6599901509474735791444211643062035 0.1549791315872645574713879278020828 0.0969913685659865095029470186541344 1.1020231669906649723426786901247247 GT 1 -192911365390476121345723734941158598.4161547375585412186957432573750330 0.3762697917114509730295993368028911 0.0479323576453971392735504008448004 1.0491191938214186110737788073268546 GT 1 -303627009470659640874860173.9208707652195269525453790344257703 0.8854103028972099506616802242469766 0.0885218422868688719437818833991004 1.0926876481641067192983088144738748 GT 1 -3300422401561669.2866419597439077825121034930513751 2.4718382065813805226070686156189409 0.0960397798221639677586944484385623 1.1060673865409312876140471855661767 LT 2 -119817143796532599034300296067011.1416717140210343047142733630123129 0.2433387585548531909339520588048640 0.0116299696093391372699334391086360 1.0116981266642296286759108713855670 GT 1 -682630.7578823002278336050596656467397800 0.0086937950629809460586739537371273 0.0217200388449384907495252601577743 1.0219593910618107055531556522089755 GT 1 -11377155945937287338730167310131206203873895.6917010581343789041708737427981488 0.1034569486975554422743541847949512 0.0474572289743881495457216502094522 1.0486202690255368734745772610683865 GT 1 -231715237599655103092454377323870.4459177432499610243550943781321855 0.3023380982558550820655509926340871 0.0816427783194316490859501186493448 1.0851688336822446186548239867242983 GT 1 -842144659.8634961182881426237435061172933572 0.7363247021345737678568587030568977 0.0876837771150908273830899372385073 1.0917686133872907115582740777078569 GT 1 -657694117453181818529949685868317665.3867895555334583161299578365624690 0.9169389805616960002771018994463295 0.0681204572712680447545894073195241 1.0705517186487443989592466215768676 GT 1 -18717836035373996134924446024.2755516079745407002115397117659534 0.2179430272091762423847124636234440 0.0831181315393225942618126047886700 1.0867766389492931762746727852371796 GT 1 -4183274481575156148639505150868.6303035619406181299707055576022446 1.3212876198077708089660311197828547 0.0867509017658475472076217871688172 1.0907466007321957698433591182177617 GT 1 -43906583199092128190570989744800602045.4429326859944827293582502408799494 1.1347417058823291827363703604920953 0.0358581127052174647646537375308010 1.0365168092119482660081398450104587 GT 1 -4577537.1975042143771841126288600529546742 1.2855603188014644908668379750528849 0.0617664489982988396439593323424758 1.0637563726936137476151524347027168 GT 1 -2720765.3895203729706586987487292912320901 0.3816353206654136894944213251103383 0.0641698762887574653301660040613408 1.0663213107376607744232494834418405 GT 1 -17299803.2131400742123768434236632009479433 2.6159944860592413932496483222368217 0.0546853352161658345836054126374621 1.0562374283062355796960811797845972 GT 1 -487928000666917934971456010042.1343642587702100797500080165903758 0.5592531735622458739414375425154666 0.0748306911395684001492780362865762 1.0777785216129956286389672577187890 GT 1 -735861701126831151041563668.9054780879342359453202761642840256 0.4747484446085449803642739005319506 0.0689231668764207779395004977914047 1.0714134775876371463467541393552175 GT 1 -24917241954966150611645616611.5713664198517024566919396561125521 0.3033356392089337096364016052820017 0.0970186236267367606655038174624385 1.1020533499491913173899926559614460 GT 1 -322421158423292.0703845473047950968082241417472428 0.8843660490726688782803635651898116 0.0292534875655300984788673583694772 1.0296899030273728916061811259464745 GT 1 -217310438508621864109.4987155044048018618396098977148708 0.2965800980954982024975258417510022 0.0763828229910562367076520172213704 1.0794576037871825296710166773469243 GT 1 -3945783012375609387879130530373689630938612.4190912643007779870043550546489319 0.6451791905427439639100889263046637 0.0858263504912255922945435357380286 1.0897347370518856072872139650575880 GT 1 -266598324422429585730361264386301497.0076601578300960556685548550583731 0.4950191935486310443849618364063672 0.0924623142617604432803384757256286 1.0970201867210665361636663503022538 GT 1 -314074976190023686437635401.0072220155702195762643452154922103 1.1354600260140984486318256593877513 0.0863722244204646391791821997390789 1.0903320382006599047864044717488843 GT 1 -50824711.0300038416878864492464028517468199 0.1270498859561246401011614144863880 0.0851279513393387912180165350067379 1.0889710610141266359487391440901714 GT 1 -37998085987880710285.8366700655786622044000885449545711 0.4652726616355759281523634343907468 0.0822113283177014510905009314767112 1.0857881200020251891048817722066959 GT 1 -2858109972146037950026123061051.9934825153868159125990611190662839 0.6100620406082220165484451020763724 0.0164746928020377833827808567500242 1.0166119097118760869134610465919176 GT 1 -22004640005114393.9965820760890107180904792251007488 2.6500935412428638091475043838142728 0.0268321870215072222226389321086049 1.0271987420080201097775206863550702 GT 1 -2195307588.6070438598720702624299446583147244 1.0187839390174518521056160773555389 0.0765303910360369419483233478806327 1.0796173884236331037802478373572889 GT 1 -30629344.4378250989689551963339524546077629 2.8812839340050017717223182582267995 0.0353908921139215691948467304099402 1.0360323292540872971872175495567739 GT 1 -36046781091274048.0672394805722911270823119472483495 0.7818045940657648770926049656288381 0.0062476110564403499426030784312255 1.0062672090481230114514118815355793 GT 1 -7755157103272201713334041251770579936039678.8889295525218559913002934248247689 0.7128964049490617156326363261061134 0.0075123013164352163825238496611855 1.0075406607710875801949145594550255 GT 1 -1776205306527409207663059760204711545869.7141950620057199459285246145736632 0.0404561052462040507512481894436601 0.0589762843296731034650021255275826 1.0607869370891236848951251875661297 GT 1 -880740416634741692599613104037342.1845622098288669978815918083314868 0.4574571637633273513174840229242818 0.0617849303484166994675743867414510 1.0637760709149399709220324102716845 GT 1 -15089592065343872918813238155.9892916456742439046772367795935718 0.6928265691114567215368212737138525 0.0218896017239907806865454837207665 1.0221327336451652670550966187531935 GT 1 -93498716922731531510217815.1583246245921438514386287197175295 0.3175022650715741960825928479139700 0.0584100142231969756808071842704937 1.0601853584188755478391341302134890 GT 1 -1888188.2662422922377159462674775187493405 0.7105812112318010222664641998092442 0.0519251906339354163523309553503674 1.0533218670071676325980076639598658 GT 1 -27380210108556.2819613224144646717475239705519891 2.8362484076999184883220785476131712 0.0430223631933722691232003824725241 1.0439752558203720204628250504245438 GT 1 -56864125538674416136996369302772396914.5941161222508012172558821910357461 0.4711539076963941231001020005489274 0.0088056273470628180134070838867677 1.0088446259906879845369365320303470 GT 1 -16274213367474308744169.7501282514867494715283077493117676 2.4891806725804536977439037280048080 0.0027298545333882537352741238723203 1.0027335873812437527257006632509605 GT 1 -4910474096041712922560404042968118350225403.6217699990162681444329797594478576 0.4120642432379644408479232003796920 0.0824026398050724186637300864003052 1.0859965900293013119037188100968224 GT 1 -1992.8392142193833463181867731767815675 0.9218782086146256724126367950511194 0.0583735872557431068837832161165438 1.0601466725116298176993083106502626 GT 1 -67134024921216529610131495873734030694335.5004904149829286900087554263099009 0.5637233058820217108569162562712630 0.0097375352264232413275405830002051 1.0097852550576144461042429933859590 GT 1 -5463.1107723741193857761138298721888811 3.3041220842994001403200771679854633 0.0011500282592849006063164199531257 1.0011506900492168819413400915962028 GT 1 -33073795561289209670843440.1174836468062891513516651182875926 0.9852771384063525390455882503813197 0.0026965249444237036155571047315201 1.0027001671167574245859918127360052 GT 1 -1538.0350313237125734707851582221495134 1.0067130683124342231883613572044726 0.0206112083261689264589473455782222 1.0208265838534992575357995375153014 GT 1 -2.2715516205758293693819400437661007 1.2347266648336883072184365784826404 0.0539657839423971791208826941885898 1.0554765413902649833723333112613232 GT 1 -63935.1695678688357699621523627381586184 0.9380502981923706167873674394467724 0.0252150638849517120850427760877766 1.0255384106588109031379730359760471 GT 1 -1965472444617983181349.1944678060816668945500523553962324 1.6068127504831630105669712511711820 0.0290130328824692732843949201353561 1.0294422329049568767982320707205706 GT 1 -36611945533.3125692625283990946376806027040813 0.1571252509782106341295874459804902 0.0017373703114921399326993961624763 1.0017388812896310876511090887078565 GT 1 -3.5859860302669969615502682420716401 0.7174998538439243661635772387757299 0.0620025379050290775912042729311758 1.0640080356352539901901832105057996 GT 1 -39523094803443.6256085859735693974256364359082312 0.1107199776579217025661648768495895 0.0926283619065115346431071931108165 1.0972031684745172576209775846956498 GT 1 -87833858.5286378072251650701975807226328158 1.5066863128697327796142673367897780 0.0453555726876031547538399774544763 1.0464163352540449882452395056665536 GT 1 -2427108624238545654542883346627092.8547725911580695011066319028472287 0.1314309330730248318640310313614777 0.0247604080647534050605874189696267 1.0250721028540661450874812772658210 GT 1 -48918378003757591919406868775661832170.8743648960167213283278102955509481 1.0632761612125921332698969257821031 0.0815952656241151432426199186164606 1.0851170984041151504753235162904685 GT 1 -45406.0612977378026994207169895652773910 0.4634493050484355486270530971510577 0.0582121004558583961451172849779071 1.0599751894776241674158389512036150 GT 1 -152129672828746406845923082468799586063.1424146520919452108906362182436190 0.6928748083071719238188320946087896 0.0975490032295663342045244040719207 1.1026408874565235040017162964147191 GT 1 -6.0166561305153867229891139952348767 4.2265282790825279130776506896934877 0.0242010015037413499199397549757710 1.0244986579421252759108632755231103 LT 1 -1927933727931827141024578687228665336.7061590041311564835615764073642161 0.7127603749627515505750118476387915 0.0266014305460495818738429764816995 1.0269616512222949125247445498963245 GT 1 -930054800542748948721.3692062435134172556896573289126437 1.6083320504667115716976438060005773 0.0195476681928968320967212605699202 1.0197412507365140556416181224367701 GT 1 -65229706035629669967777036177820675.5467940754773391865522260867949455 0.1641477241553042040741856745097219 0.0856750937977479451412360410879794 1.0895692934497014742439663037452805 GT 1 -56347388653240120396876227029.4798173090521648446958771301985327 0.0041098725258343232443684717043498 0.0022219937202918429442482997422930 1.0022244660112940066024146204902830 GT 1 -449038193478781952452114376530654.4081989869944868671586244703935396 1.6578014167333850232605016984993393 0.0687577024101951188539924959504641 1.0712357803670778835189637483407231 GT 1 -2868422.5750741513996835151637812367938298 0.6884742840825006429140912082968688 0.0709361388085364761414673367970776 1.0735778006671193669686684115028438 GT 1 -60950015832857058271435944788517916628569.7698173317132705302861563719369108 2.0928065917459925569378833116533997 0.0755041288400983185274824195602790 1.0785066941899148941862906790378634 GT 1 -6145308166619848531230224666410883613.5740424821750241250435206222080436 0.5735495348390441392195312138287480 0.0942785334846912992954614070889232 1.0990234523084025953452276241503882 GT 1 -3752339385.1398913880515436031431166102410039 0.8809311874304774815224947217253698 0.0696688369219060445147487559025544 1.0722146668883108900825936539209518 GT 1 -495697225883054.6945175458271793286332509298353359 0.8087470973897189736617327872330461 0.0151528882404897681752204479605871 1.0152688663451807306476316801965208 GT 1 -9206065644066531369179634470586000684714.2023938038731579494377208813815258 2.1375710366656246899273027993105121 0.0825015827747342457608792958934476 1.0861044241499778904912768686678603 GT 1 -37368586368.7440389198459719988392478202762776 0.8209213380644499859982103091381447 0.0417142778938122255440471500556857 1.0426092969334513349563102291637501 GT 1 -399.0342947738234873707196587420453038 0.0466091565628131463631626189125506 0.0388284519271564191538472085919124 1.0396023759815161687087367047214933 GT 1 -352986095.9853532284278991118773519162299483 1.8900570855780338067999856704430567 0.0875679488149592646838880302701503 1.0916416607528555145861176464042295 GT 1 -917283963095.4843888916222757909817469585043342 0.7105409680461711571526279963383312 0.0268438621651155196396452548467085 1.0272107391307021364341573188033309 GT 1 -322210801016360624973007573858237455310.8451073946504983502392797067812288 1.8295068869953469289546031151016332 0.0420339248414060195996473624312751 1.0429429137900823710866048542298197 GT 1 -160921367240897426617565223.6507060062150557626176582913527703 0.4454728175027437028164516295715266 0.0196769169375574141852921085855070 1.0198730850545778402415636121745178 GT 1 -10172924102.2007858595060168517194839720381041 0.0136371833475026672618276360783673 0.0494718940782606800659874514357741 1.0507375478730042477289065004363203 GT 1 -14258484812303402044217794647375919.1331244659686850757604932966846419 0.4338177558276723086872243921677083 0.0853504759228507180837551260719541 1.0892143208782628737266253364520036 GT 1 -205673833372020427189477199357098.0541146274837966641864310898353162 0.7844638146295680981630663286134442 0.0321974122087248299486788661247357 1.0327271507359428033906039627181904 GT 1 -42632836028334972374309.6695599444935895162457681460122148 3.3382551252983566966852044323032985 0.0067371286290489854069347740891403 1.0067599255282515861804187693267407 GT 1 -231558884.0065257238246311230133820113229645 3.3628753223931040749931927162490216 0.0276833303224472298212891769210018 1.0280737357310046611603584518054249 GT 1 -266830192.6688849491952065416910795562011610 0.7731633695924029538907726007657863 0.0245552913605556915251727538696545 1.0248618005464161989987791133653845 GT 1 -219114546684928734320494518169187579999213.8097831259802358824495724476760350 1.2574031308070997547748006140586036 0.0929493868651231377599462133577572 1.0975570276291259110883441631851029 GT 1 -4200976895292921848834027861925872542204345.9643171684685722678649914703731685 1.8637910998469152048793120845751480 0.0095696915360968140961701571272739 1.0096157752745849589592227336113633 GT 1 -4409767383529544352811102872254517539.5331755788611314485729211621143503 2.1953644547458060826830276975610632 0.0223743639368055925101000884115736 1.0226284674397376087919865887153063 GT 1 -43780797366.5069230231224644116485034644076178 0.2270995376472832337704266993220978 0.0550193938963940706297545899858053 1.0565908743406734375711038936450422 GT 1 -38447018966809972675062647990195329749769.8514642886822017825026990312809168 0.3990377383412771599889558086137382 0.0762302538878935011509284965458013 1.0792924309134330002690446137490097 GT 1 -22435665994834132496673273938.9775079680261289458716545509970802 0.2979535188884169876512204867493633 0.0176230052614734017480057634130125 1.0177801392713024009405123106334032 GT 1 -32997654578347441046162800214902518761540.6909943231770330479065173854786076 2.1694345874419694873195189377939941 0.0884656933958107762444850277713517 1.0926260480465267472179977193393487 GT 1 -1668584424902995.4036381411569823650228954977905865 0.1880258419772729295388351616290547 0.0198041798041608469975062205580360 1.0200029107518161343548195550944387 GT 1 -5927056180499402129789.4648157903722363783676717904494346 0.0121807188386663106544550490983545 0.0927560307294402573260056639904941 1.0973438801741425336915507980016617 GT 1 -179426985.9303838631236004503489184412960250 0.0273688225328294386555142595695462 0.0775469897317964662790046920001043 1.0807188417434482834922686844355480 GT 1 -2464459901293726.2973584262403403177284971462699435 0.2278344791186474255247059859109677 0.0790291917223769284917782048465544 1.0823269389103399433844326544346240 GT 1 -15448217051109216.8278220850212521803381690518348548 2.3664653204377924881474179714311256 0.0372075449559982108669829986929288 1.0379174095767113241287104956694505 GT 1 -3789448876962332308048800220774656684379692.0617991311994451864697963169300996 0.6859450650226261931685237471045473 0.0047139679127512025453233651522827 1.0047251137005442523195885709782751 GT 1 -4238822.3455242169822017200199812916123087 1.8177632610686306826356212109468377 0.0635185149132866509014508810903094 1.0656255276226196126601008084008253 GT 1 -25202913825.4907617020885423715603529475383750 1.6649145030171396060403921916956699 0.0570712797331779775197017370883471 1.0587645874698560077494601030382709 GT 1 -21712626040.7581891530477438191476133146204457 2.2566231441512007916566283592018315 0.0133713779613021325300330584857742 1.0134615798201111600745542447882276 GT 1 -4947.5534409676026636368365132318402565 0.2662654459642993927348438925627244 0.0929809274375288917655423225951393 1.0975918009045492393345794704954828 GT 1 -15123833380233999456.1518066465145952369479029299401363 2.2510807403621100369205046010373732 0.0173635633929924611130320801974284 1.0175160781042386972812028973388522 GT 1 -8389689554144984675942807680.1215888033866492119461750551590187 1.7211563034573034013116696835341662 0.0734252595431887184958147083171985 1.0762605668321903622472380135479576 GT 1 -8277202922070738499924.5285416523661019413321589652135141 3.0689632792531330650097212990364673 0.0699406819466822884107775958743208 1.0725069120158453128379239090683624 LT 1 -2034278637025891102526230137907648311182.0622676954528311997175272563446587 1.1238298546438275594245539152339187 0.0064809506814010946187099758869980 1.0065020432248141738923257323727047 GT 1 -5849986315693660357393459194.5661590320560532211262251420334024 3.2644786354076856669007461378690078 0.0624548789648504833849590748815752 1.0644903931915798599654245202424766 LT 1 -507506713226100567575516734708983493922.0771523929936598558335784682966242 0.0324729820405578655622618680085291 0.0525930351988963074998215833289757 1.0540265370300590169816731612816490 GT 1 -311564510536863.9970351307975488035850714159082809 0.6270234514248129776271490642217907 0.0578519156211954836864808746907646 1.0595928146600876801715871909377122 GT 1 -482483689010328170707.8930535653009394429221187861932652 0.3726299930727927832367639429268863 0.0186773428924312635223855226443841 1.0188539671668059557005139210859432 GT 1 -323485409208.0521892712847049182347884593620258 1.6966120416435177333636502780583216 0.0196583579666337530420509657557968 1.0198541537496110427837065628655072 GT 1 -71889053686019669628907883252.7663447539356696562279347860326071 0.1385714969195935244796268006201235 0.0242549758528366489371957487705517 1.0245539724505174066807014098261213 GT 1 -2.9915411173882564875680533564088994 1.4141839715779082336831880591437250 0.0298040166429946003657206969893309 1.0302571831950459414897696783979436 GT 1 -11194577682915196298096928595.4053949207309437026839315484332024 0.2867978682215375600774743442368831 0.0871451809726213091886724530894905 1.0911784263355184031766123874929118 GT 1 -9115138363496715179218565.6750712699381218679533986767396753 0.1550302318393089381748783772926251 0.0049391572765968780861734632706166 1.0049513952273037212756969230264040 GT 1 -82154269127732580125197436629495817082.6442506209115272677507769990238374 0.1030454144314666779250326261796625 0.0769626391144917425599655387735202 1.0800855676327107418295829532287047 GT 1 -29081894.5494993384332674816204050464054077 0.4126439287488478754833709463159196 0.0801335921378835604466261086985552 1.0835268283284017938175657617438250 GT 1 -620499.4121268730430833736777126265970237 0.4961186473138896804441498245224865 0.0130676974952509933577614660814094 1.0131538310552553992422941155261522 GT 1 -2744621099359347096882715652534769933.4738271389204022781866650881598018 1.0154721576582737205233282447119830 0.0356470861402748425129172218574740 1.0362979581518794877639878174676374 GT 1 -1065420027637295937211014158198559130.4793741231418585001644004575152927 2.3098314605729331041427398772085718 0.0843765373037459785992982630963662 1.0881500657446629001278771182094902 GT 1 -1084192520323.6712855002663623314920791260244534 0.8004136473020986345329159569928111 0.0004209353925800698814734797073458 1.0004210240107516555742924233286625 GT 1 -2787497203.5725101695030034401084045073180437 0.4106941539805526023271787244740901 0.0439903819900292022862463530158531 1.0449873053014582950355699840697870 GT 1 -122722815.1490667317945412663259279390122500 0.3525020034681314965070676549403754 0.0930600268370978474419872387775885 1.0976790127959152435307924026562188 GT 1 -60801793871722299611923580.3642929725165134408804069279451298 0.4232894152919906442298192479994342 0.0334514508865912521167425799011001 1.0340237497138932894683388906926320 GT 1 -4442461872158066548074213069944572768983.1240826133447239958880794722429345 0.0318330020999017119445222470348528 0.0771433532170200601552868649158000 1.0802813688026099029202720204408417 GT 1 -8940687511540508602081059345466132079187831.7480290731358392605161230554835152 1.0848961938731269188213956356680434 0.0792670924665706828983262476169397 1.0825852874638825969542702335381663 GT 1 -21312030319465329717747873113222257574537.5456919032456498612439604170502884 0.4424910715102789579610800265663896 0.0792240567990346036460913989834839 1.0825385478921159435344720209541130 GT 1 -160992346966113067869037.4417461977042577880070983406315297 0.9578779174251242687830966750104439 0.0790717564731492512892017088203083 1.0823731572421624174925223404016748 GT 1 -29058707716937.9743576692144173253004073873097438 0.4253546322528278952425460675289786 0.0145442854348184800318821405934556 1.0146510904206925095950905331161947 GT 1 -124705455497992620536413875639684192582436.5431532712594678060951235879895737 2.8742957978630025904533386144662668 0.0420838527763671097241172270356712 1.0429950338362826136779310664331739 GT 1 -4175700602.0663633491594553491053714654872459 1.4933600234917067786114846609974314 0.0581207729253488544325246036731986 1.0598782216755210042164816772203103 GT 1 -1421113592217668005263610471519915894.9745035274465086352667737434318639 0.2906866762618254765662151791166861 0.0453191545492601012620359465490469 1.0463781876017125322465131349254027 GT 1 -169142659292185429833178.4602231228837875654416945054766109 1.0598299388354089981382274875574325 0.0815137900930768066037211027451151 1.0850283881501445982764481806331914 GT 1 -20960728603302312552638396479097116.4789786643696974285379452242486446 0.1003981027226254157333079563665477 0.0411684147086450724932651179672778 1.0420398344411852365178146944365302 GT 1 -3395.1383025862285733799775887691463808 1.6645011925066573780277946697298627 0.0962011247560194196758440052427683 1.1011484264801948370547382073326747 GT 1 -2568338690334879466415232233563.9079305979551423131733415877287960 0.3867940229777603166703350826974216 0.0036030612075655181945817747862410 1.0036095678665604642710700902778201 GT 1 -36476266093097170567.5319906833057834266668415052921265 2.0080369439201772966161917467926162 0.0003866725168247990428105096970404 1.0003867472939192189802519392056257 GT 1 -91890370.8733862206329179844964201359055676 1.7741753990920781102901717450102875 0.0668690547142830992770737555296842 1.0692097393378158623161640568761904 GT 1 -13901648482977728266860422555272843286.9270922584232267355495218620589756 0.5160414601954519108614796036415701 0.0953012757305814938205619017942434 1.1001532920659279672616915668898669 GT 1 -718704545908.5471150306572379893625897857618950 3.4861617944762792196337254019364446 0.0097407813002113806347581476306608 1.0097885330563510712647615052736617 GT 1 -37787702002425552492775.0550931569178134584354171756160647 0.1887473827776521891565177123291667 0.0342770542015461943589153539967718 1.0348782914978711441635498908288060 GT 1 -10305943724720264954927938.6930922174928562507070969168828240 4.6261649219633453249580028173046375 0.0800292278046380299970135678887970 1.0834133787965750615489371518363122 LT 1 -59911433803423331583053523620164879446161.1823414590508018725015216478512085 1.4941673002730419285976401755643251 0.0549664762912784008677565578188212 1.0565348772935669675365555226584966 GT 1 -52885848285468078949914955901539322592667.3630238436043933196097332361490209 0.4523284228160486374306816462967795 0.0789010182006677768860443489933985 1.0821877764067187859865584490382282 GT 1 -70299284780020119856359821593986718.1053591594968950693754147066342503 0.3871072602545709026077380315559693 0.0894680843022530685622599893943642 1.0937263274933425507482313622854619 GT 1 -8129843584.1570697315475033327097771940262434 0.8050175693573773191471486891364463 0.0605465373695905887723792776486910 1.0624569955434377577024432533767982 GT 1 -7901295312362.9684285456835176381357167557197675 1.4819060885164177998096544051153179 0.0155529975388140347830774182849044 1.0156752142857351152655939259826186 GT 1 -2253303618730292817714293121796797103061552.3707609329341901201659036261297646 0.1626740243556584035977143438160698 0.0557936249322119777025998826938431 1.0574105190734388577636089627395209 GT 1 -452004660288.9293285075611459365730028918316407 0.5317009306844651983492813678650062 0.0283841982746307872981774385966484 1.0287948183744221711002332079816981 GT 1 -17.5409020886044049173561846983358088 1.1052843809846005682608120553964649 0.0928565665751306569078441215085033 1.0974547008794052982829825853632495 GT 1 -71759052537972543011.7526045451387774573183631736177560 0.8562834798964354281262799076652393 0.0313402968149852931186559890531284 1.0318419122743351536638009778239131 GT 1 -1.7508271874399602418436086885024475 0.2980222971897624711581567788635810 0.0510368914321754031586574602249407 1.0523853551343302345652328332049704 GT 1 -11039360438741756220510762645107743454712394.8392533155273811802022979293229067 0.4338454974060483261596992610305705 0.0837772411609776093796339347999948 1.0874957573675689338806544615729963 GT 1 -1385894719435222574266101.8126725628691831842731528751341279 0.6218016250117323549403532881125578 0.0748319345090905798783244927072632 1.0777798655511762167006183249481334 GT 1 -2963894550594373222098121003442.3926882770910669045557366555524135 0.0341203738036603114028131466334348 0.0420593924482343281927898222104454 1.0429694992256462583195894806167538 GT 1 -117192.2156752842953562101169006521808661 0.1670505388217602703077667323001360 0.0829498657261408487044722035746039 1.0865931361657624676944439813530254 GT 1 -299193431615750.8963272142581180125515564552709911 0.0401225163088969046351706630092838 0.0157327530198694100867868145056773 1.0158578263449569291292106016318080 GT 1 -700529204571442051.3830360684703899502792212254083089 0.1966317869303453018596405664676036 0.0281093275004153364063924076741222 1.0285119576999726347256765411683951 GT 1 -475057338394124156477371588.9771893395248555147939246305338514 0.3963312099876275917008981624106520 0.0870548310667752057768330434012133 1.0910794561235394097386565308494576 GT 1 -102275353735724971514890276439264806442955.4486379014914641080099738575746120 0.2777070714976579572336277364540087 0.0916895928869457614772523434744582 1.0961691007469699303625783136219984 GT 1 -934188665.9412870431813826186343793692501976 0.3883973803486645823776433017628862 0.0880494603284383009148457976285943 1.0921695231947280820509682460170780 GT 1 -23266.6899533040244610728101640379172626 0.1138458956700617859514971478634360 0.0752104597299669910412564837296979 1.0781890913896280275927986116101797 GT 1 -2769057672402702064778219583.4200751082598930221963912252740392 0.4208769596899251599391821037163510 0.0065533131412462727850791775943718 1.0065748803740006367464727521625033 GT 1 -88656605815358842068027938948.8471392573304043433392536031912596 1.9357331117131800997147730750062971 0.0141985554361168179847698853565748 1.0143003193397653447835681954828124 GT 1 -416103297964.4269565254401251416511543103868423 3.8647140600915294777338361495548486 0.0277909202299358126714063555806503 1.0281843950088557637285424148166090 LT 1 -5798827455580171671616346.6757083529280106246354461253757598 0.7017804803813651870087891001745325 0.0185157996897999982786109736937348 1.0186893628886157585463103338314828 GT 1 -89952143150830841847.7806748847996109199896173917570647 1.8572597494729017528362356817434387 0.0252234824463044999794925337570916 1.0255470470229911631824575034356414 GT 1 -594940212380708045790876548756403026.8959657504804924394849265081129636 0.7636813612828295585914544917562390 0.0236427367787910202574841496283622 1.0239267111660228128358595635925032 GT 1 -14810854190404798417.3680014484191564204373202088702908 0.0246168381817724894251216305698684 0.0848582500824678136821095762755946 1.0886763077625029115910467399272354 GT 1 -146713486397755208427798041447.2719968331863786881986203682385996 0.5913072159837383461310236249862083 0.0714737348191490831204744613061346 1.0741566108341084824216991113226009 GT 1 -1476135845978717141.1239979635527353300624256435027755 2.1020898492633031893406443331288802 0.0806276542608938439018122075377051 1.0840640746580873659509531752058431 GT 1 -274894935726499382.9966065458751374572974480387893275 1.3140155173213390508960688902511108 0.0630882420321290896288937205601706 1.0651661762394345624010463995071833 GT 1 -816080103200205806527448062385794977615774.0648360656929203358930459534008083 0.0405524843071927026308687106631839 0.0664203479910664054728539761447984 1.0687289934391115300206527375568989 GT 1 -5538916662125.6705103618394481595402461559370216 1.7100701068897407020858201138337685 0.0177152951203085228304322875813855 1.0178740891446276038555765196487724 GT 1 -860966612709216109476846323119309178.6665779216549445544149524113841281 0.9683380122817872308671482124353467 0.0804141304558544832609463635053785 1.0838318520831268621521809993779730 GT 1 -9896818004345136706563.9844010790278551441993031611625164 0.4045658390004556790982442177880584 0.0286067589955698652302719356537148 1.0290239070889036615611893359615803 GT 1 -127515671814306752572872461032861954917783.2372683129935195606806077464014750 0.4224906100930154946173708723834530 0.0259933532900316274728904716256430 1.0263371512253417422746470362908046 GT 1 -11437845747884671002534389492657110506618192.1398135632197396974686151891523974 1.5102451217908979693071979048949087 0.0984628332974884205512449136539257 1.1036540095651819194231023446943464 GT 1 -3.7839510306436357780834086952578621 2.2785484722385022077407695790784120 0.0963323745611306552916996612665136 1.1064238596638678400234667618958240 GT 2 -174515322405.8794107823759433842423521891852666 1.1447887479003181611845758216471651 0.0035345914649433900026319041175326 1.0035408528921008481446840806599774 GT 1 -8306840599.9159765964284028349677578056328971 0.2079660702662732153833812042698848 0.0443817841931517925350908958610766 1.0453968015450974464297108544777630 GT 1 -8.4507665101569981566557338259777837 4.2816458313152352580359454347476645 0.0276101386488886029576643960888357 1.0279984630125503551020355325512440 LT 1 -9365222042899053.2749100743639550578931650632428450 3.0878435490911796589962760758082493 0.0146843941457020517279194637917715 1.0147932770962016683573279816380493 GT 1 -18407541996724602.4359859803731490208913931927553015 1.5763369055381083134772464584378506 0.0314880681613659198700443516811228 1.0319944762949883336541049565107232 GT 1 -26959191873708325863585.6790666233547596194265028393896054 0.2026505363045788749936723804747711 0.0337775091887791393026216783626515 1.0343611495388552484214583017658903 GT 1 -289890400425795492626430397920.3268838713479677096663333369652440 0.1356464538104314479843449725862848 0.0435662865530839326368184669972413 1.0445437936565156773935387178665780 GT 1 -323821720932046918864652198744031398988.2840964680972428206784516698572406 0.4018657272633322730884984313091399 0.0995232446328594397261518100404368 1.1048309277285602605559013363491879 GT 1 -230505.8059815744969475902840854468445634 1.1011358013442998797036602534602269 0.0943430078664476444070287192901596 1.0990946405037526339778450550367336 GT 1 -252969128817.7255773080269142897638872234762057 1.2393772855384016149935199801792509 0.0991260345587361859450168183097074 1.1043899141314048143996002047148176 GT 1 -1235.8712919484667002771641926526457080 0.7548023494209872021339760614119645 0.0326827461773990223742832238620248 1.0332287568570868197189636610761417 GT 1 -161680422.5994940163403830749258478005587866 0.1555252572887753089777520049606790 0.0704104052551370889293355681650452 1.0730120862078249192776472971985080 GT 1 -40088514284989438615503749423.2571073695098543883615181535737398 0.7416164125824544219167975086075873 0.0510519855362217645629469206349138 1.0524012611521237013907852538196577 GT 1 -362224401348879178555045.8872026888232750203691169182028459 3.8736704851881346114416286886169784 0.0411320258824593768288473607948295 1.0420018839436617564518320375556172 LT 1 -3899511298951672990079.1920578466334022329391999401386044 0.0265081033552257468595409937481232 0.0539169642390422438884685476975173 1.0554249381364826430941614920177027 GT 1 -3493695383810830305416954538391401310035434.7228304573005314263898143352658208 0.2624895243811285012770437342021066 0.0166959457422709673326053580308403 1.0168368940907982230884884503655812 GT 1 -11562947096750802.2653306808457197258187009385934133 0.5807043890676629428711516577384889 0.0345240499754478455493398907530544 1.0351340867717630757183918022982564 GT 1 -8171791895321502899648963820.8960630281679400086026898063880022 0.7169297113371553617054423301441661 0.0147698095290187336462981152399384 1.0148799692030580141036752015617908 GT 1 -4.8392933572080388177881820562686430 0.2023156109608953498484003592354244 0.0814848935250537320323355760103975 1.0849969275651490771711815335318671 GT 1 -638425476540319734636751049670151441441.3720583929331685027204663589513399 0.7553778082265945688109157227988791 0.0678871370350118670366019730215444 1.0703013740263499688162732055740583 GT 1 -2229276792841892575184634451478676847431.3943684405314550772079637934308706 0.6524455588841107136441669423549140 0.0965652155804557157020164403128386 1.1015513526070022721232753388346900 GT 1 -10840813657014429958132067125417471.5897049835085656701441597546822537 1.1508829229679739294319902867863173 0.0683958930212985799626601525226229 1.0708473324600913164641709956097855 GT 1 -77575968545551193369308556230819.4401951506431549333917505594474160 2.8051771538568042660247861326997407 0.0708145273084082724166493835022745 1.0734469124186110803442640041513791 LT 1 -271195837584323414931036375961467654087502.1643589228644105773328033285639445 1.9951325043122313057582700854044637 0.0314889285663660023904093765960167 1.0319953646737000258439267470395842 GT 1 -615763685182.3672457491421101494102883121133477 0.5200307133036608750957718259061970 0.0021172010283842724374655315569587 1.0021194454669929530111131577083431 GT 1 -194168767910280138965766703692519529317.4261573603392521827816272981798618 1.0288490967654443437401379589306943 0.0508192066482697658338193995670046 1.0521559891893775462818025420752985 GT 1 -244937891915085433767736096716995819486.3880430926640315073195208543415920 0.0507973147424475197251209742838185 0.0398564319497851724891581087214199 1.0406724556494423086153848891071987 GT 1 -8246056048641501512.8443342696383399056502007855299072 0.3202108642889076068180671811615379 0.0366247656187508656800444270795778 1.0373122915921975683629236222555762 GT 1 -5183054678852044.9301413891825967346664421510408706 0.2228750579958612324751640957031441 0.0461934226804748104153064912438104 1.0472943772311950995680263525303391 GT 1 -196859243.7493753687410355189008048093951321 0.0942521908848342643309035463211761 0.0664392260742294429433006494782508 1.0687492148246071927173831866082772 GT 1 -19713242965948696026817.8089328400646803921882762353379472 3.1401504577882072916791407707976023 0.0741279305573940730109323407044435 1.0770192078297632486705706466729613 LT 1 -164035818607058437992746733032.1511110155398513976323484050244850 0.5114493566059464932460670993360545 0.0894442686810445400826224216924665 1.0937001721116958729288669977683131 GT 1 -9014492633342580705441734580.5087705344245459272050248915554138 1.1716640995231295286875031628859726 0.0143106253095919422635110863846662 1.0144140098246525407407614215805851 GT 1 -17493179204654688963.6736487738170055220715044069817336 0.1788626176289413250486376465682515 0.0171647941050068651063111144925210 1.0173138169427291902226828144288371 GT 1 -21903909009273277.2392560938865702008718717996412642 0.6959510198049271917275485504791427 0.0608280468804629926122871090758528 1.0627566928759867146837568466444958 GT 1 -558929293349.3899891583447767642835614280760671 0.0682692152034449614354605509123099 0.0995579745431864974821912312068868 1.1048694968308442330208047598986903 GT 1 -777190.3293415805007806372536450755575183 1.5663716593535430569477612572518882 0.0012553377860156131411494916021562 1.0012561263825332034341128774678154 GT 1 -56398.8464198523616915895095216066234287 0.2135731622979301849201029449764273 0.0678495654897042165677541054546927 1.0702610669030336226197602484340453 GT 1 -40.6329338662869204485077077719102337 0.6834168087668733048732106596091380 0.0046585400889163470616454663208325 1.0046694249048534646765302582060506 GT 1 -463400657447348743168.9476307336324395251335549233794867 1.0004956688070065984892115582701950 0.0158826088238162212950145983881125 1.0160100890697632902864713116016140 GT 1 -5.8134096640213140630906984007612139 0.1431067469338346611515462273227167 0.0262239597355558189907618042808419 1.0265739399062801595160782831424129 GT 1 -10245032674669270653241689971980.7533316716953867472296940608759617 4.2576261039486486633431341041984799 0.0209993003534004548342593042101617 1.0212229217975413351030297920526234 LT 1 -35038283828696513566349393325366653835754.6176502904332255017807867196450418 0.7528426969896136125236879683688351 0.0892448008600483561061825379344148 1.0934811344740713932113624649720582 GT 1 -3989.3426404365946633444935844306671397 0.1208334369860861561729248834937409 0.0678184854819051940383029720732947 1.0702277251928107201862619278963592 GT 1 -7622763780347491303772039586319655519.6664797462674669902672027610300147 0.0350712084923673429928202373731991 0.0206857443521892962057153767248358 1.0209026913841004577838438632110093 GT 1 -160929635923927957058660772109641512583117.1141552455908235325112911381460527 0.4480707792878495481376391073066370 0.0221566227477157756769289684129126 1.0224057677308626030274597835332644 GT 1 -6487613229725605157247857.6529783015626550257407632518677707 1.3142519618346196307848354641332459 0.0744423585705815746455902582860159 1.0773588675147775235828985697989036 GT 1 -508469456.6226231413097668720617784647378756 0.9471743942563203598649595589132836 0.0030736174833179163088998546476065 1.0030783507468507811674149737811664 GT 1 -45546925511633464347363220063645.4893270419627802310967473941523759 0.6340021783272917169383200408323640 0.0193503537549196877216672043447901 1.0195400226098268965432718964842187 GT 1 -573.6307914737348893973927409103547534 3.0600547023570098608542492674207790 0.0911975273458116329981474163695015 1.0956275102286914049980057223377648 LT 1 -13379402850634239686090244533513505315189.3468851267389638667793125252752223 0.1715450964558374423998864665578383 0.0652062732132379037246234738324132 1.0674293870943778875197625183080067 GT 1 -926315498545297095838625514494150851221.8412988412831580446432416376784308 0.0922282548730513838802199437301624 0.0722363260460518158455755272540087 1.0749782403152860753030605414229221 GT 1 -3893974453491745059043898816555105469468737.7256387701954678230210676284380057 1.3046152966362744605374779474956414 0.0098039338063321036646716150866657 1.0098523088018817518337626473607450 GT 1 -5604123344893876248920484.2134458114081709714806653431764751 0.0791167873430364038524670100484652 0.0851459878572374877644012337659299 1.0889907760067538503244643477841451 GT 1 -1081.2072910809989469731778308380031541 0.2713161259832648768870506921896035 0.0510999164926353959340231935134025 1.0524517719980392008656921485090749 GT 1 -5091907170349402276059994890726019873919790.1538356195732736333109777772425209 0.2258341192570604870941802627226056 0.0367074237890692990724404184543550 1.0373980958703556603647233448563062 GT 1 -1464051597468301358493708878330.9703722058334356533557935397060488 0.3892960844407130778644522726474820 0.0678142356064222255418176061460467 1.0702231661388828302596453976357903 GT 1 -1336881950916317732388425613032319134.0339421763565290914477814236987591 1.0197702272670927564058496782233005 0.0647111759830925997971261905694716 1.0668998947021840268297216301688334 GT 1 -260212.4505555013900692427184289594820151 1.4430888275042593528483061966287655 0.0967416428920257824473041141912276 1.1017466567326178712811253507225794 GT 1 -12199287491571474603207278350478923782143266.6360465396906951254939614632182454 0.8967093289825972861309051865030874 0.0400530064433975698277181326128481 1.0408772110898676537134114863778636 GT 1 -213361428749721850594270004767622425903486.0379753981448434025639556662939235 0.3280708835173901968279307796361990 0.0155119527875529485742772221435618 1.0156335219492877192824515039531771 GT 1 -225349077877081837.1587221902890026626468679084884104 0.2681253907067484909133830960632828 0.0760432158395293127529373667420486 1.0790899788233226329400746862529584 GT 1 -7206868325350475119542687.5839505824880536326580877203205971 0.7887480100688168807742505489925907 0.0073892051132019380008397457078447 1.0074166405234376426627123368063918 GT 1 -18923676010.1146806062445115257269394751427800 2.1917257835290944003839595839151281 0.0143505591493799332941567767478511 1.0144545242603027043628656915854080 GT 1 -422.8572454509682405790280276698672512 0.4324614629266230983067353423410438 0.0194496065797295341119044723702305 1.0196412390312904791521686825352013 GT 1 -343234733015615957539991167735724492045.0092307399866908052330543784420691 0.6448417417399707105496716839049980 0.0662196657764345985204165109225251 1.0685140566118431202408170955702792 GT 1 -251.6182713822214073739590478198788707 2.1967816743195511291791951721457930 0.0966805504769814750713788950660793 1.1016790234263264321510930534893134 GT 1 -10826023452690820628838698215691062.1880066849666080331612775468469189 0.0561990961506877036099468500615815 0.0217132974001019379067867497653091 1.0219524999653186068622022647470116 GT 1 -18777175575859923924012579333033.5353122388141101596348695262393236 0.3027477903332395116062900205045845 0.0341705430675443769984679254323834 1.0347680059742071892371007544135063 GT 1 -223705.0018766471404927067979546561746045 0.6661238751739988689322689651689624 0.0674112157407555910000720323515213 1.0697909209945755246026854947728388 GT 1 -963769741227236.2271154253435513027732272724563094 0.0959432265006717498202493470134437 0.0626979613358521864598120259541681 1.0647497021929629759539163768722694 GT 1 -5672085817713525810.7802095571738047575646707181790775 2.9631977407029290284450131516594398 0.0292049097517047967876658708035803 1.0296398625711000875024102684150991 GT 1 -781040804353399.8880359057341929203077616026523558 0.0383224040487536905553428052164463 0.0410142020671215829453113204598491 1.0418790134545732587306620727106702 GT 1 -1356211843519411930.3208102994188014247778207490534978 0.5258475025071508723450405249980339 0.0407461858545814430782927284483863 1.0415995736884495682312912572917784 GT 1 -466957444552868016453.9376124161918225263422151704758833 1.1610100153667395124893679271054604 0.0273897425803731854941617931770934 1.0277718346773315245741549700442009 GT 1 -96566253610499119868412828891996384.4554419284275748692091633648765914 2.2245119128048685703968521692123363 0.0188559368111238864610303679973876 1.0190359767951360360579401293003549 GT 1 -591678330733735972800783.6675642206109327035839807719428316 0.9417149752338281442406265254500451 0.0325733938264164600184925129551150 1.0331157162077688043065359511853302 GT 1 -11048761172.8559781291168603376673637424045983 0.1488354147337471753520718651975795 0.0914799496783450231909810364480004 1.0959383216903184974294381455433152 GT 1 -1185052101527315033.3206237993946960696644544822526732 0.7321958565222136345882248347452950 0.0758764148615074044156017516488358 1.0789094661343229514450169632768491 GT 1 -5713931020974316008811339291.4550355153383670395614923194575097 2.1042796153420893624845166067762579 0.0620760785860025214671315538527371 1.0640864404998262538442116117062406 GT 1 -16154996702680083557054.7485503643078485831819732229196035 0.6244388075460427673859569220677295 0.0384961956971595246689040114488856 1.0392567573279106596909122462312256 GT 1 -1057261292117218891106.9969249689392295889755017715298775 2.3667963151570724180248363796094845 0.0616560617681013964983221024430368 1.0636387252946034916725266040950231 GT 1 -65465355057366.2856491987431913734695130037040629 1.2884333418470686978333606627274405 0.0468391122717375889786824916113670 1.0479715671967008421911445130632911 GT 1 -33818555298.0085118715782020512029099549642347 1.8744038054933321900569739911072018 0.0677338739348935451176993479278890 1.0701369620678744063144543790827448 GT 1 -89421160094115133534101943.6274223931111685108979447196205062 0.0582289211272099691887327361281903 0.0124523584853498089125352906280680 1.0125305387987943811907647992252298 GT 1 -986492121597402761.1222878964545751232925083385574283 0.0272032161916564654763523483301148 0.0269436450120082298812310029467843 1.0273132796778912172076718302859156 GT 1 -23722450339733723685057769930.9245380053644545743456927562311897 0.3738014983522016708413329429973839 0.0433633660617243606489980375542960 1.0443316524852326206784179137187027 GT 1 -38601995098306411422550589849561697467483.1246730405792016927414146395035588 0.9133075354190079682262408271358643 0.0535869409157605832396374932453206 1.0550761677189098506894772154273832 GT 1 -2942169.5319134950240016734570304842010576 0.5643546946556874101995464889974954 0.0747057709119903122945261089840136 1.0776435065476284412759257505668734 GT 1 -144763823637577723486.3565737008656895239006313934868489 0.3044891161705723001857810576399556 0.0714264014214279987556075379163810 1.0741056352256826494324899147822494 GT 1 -171.7341459757391412238863085009875424 4.5023688560421327979131563957241443 0.0866409476791833111770651983088066 1.0906262091892546780951956735928373 LT 1 -19371664476740811613300014357605313265517597.4509999549729483042131141441395616 1.8712253008699766757349521754751809 0.0579083482715759795333660532292662 1.0596527143101332278611751192531986 GT 1 -11649645194809352162405469235.1835112940261899105878967266651692 3.0265191513989415855193610047651353 0.0270161141874227535020380272404781 1.0273877582769752836712386573903940 GT 1 -582286112411296594.7795599198647128119371194717182800 0.9338726555011681038738106195991666 0.0455955805207924297701864228820828 1.0466677775729328933843633445676093 GT 1 -563366379812450817.3772635359438000230529842701672258 0.6168493776135118238691112328437047 0.0877428208746799159230455411017834 1.0918333340058688919740008154854988 GT 1 -20.7025288834172597181690386054799066 1.7152555617793060025804383489663706 0.0903932380415982350018576500910922 1.0947429025822358786426501179001592 GT 1 -20632456936849138102102246099380.0498578111419548875853901268437351 0.1363416288168078590307123392679034 0.0463305572484310512356131008398228 1.0474381636450210471448029776501139 GT 1 -267303258996786796356378.3663821093563081428718754476302038 0.2150143977413527949737194531586046 0.0934652415664601293085699984320410 1.0981259059662981215323837494999576 GT 1 -68586967605564848292098262525714996474.0158642074773058488725585577933545 1.4619311941476983329488893519865903 0.0591848203750600977067179793829688 1.0610085671625183363158232569846380 GT 1 -5350194103205405453369172680245991.8496685598038950962471559794988476 2.0438341857030109768803876057542294 0.0884506832764388097533255596149272 1.0926095813094223821796036772323163 GT 1 -52677043657371795632.3729717208878566369464518463319800 0.6097882065595058860748060692481485 0.0143415092154639841839592751930823 1.0144453426060610902998761791800443 GT 1 -247480703360756038282831905848432645.7758091675477210976092467483804058 0.0555957561876645385280650454606967 0.0736756911069691448493638537651227 1.0765308800641963943395544084700351 GT 1 -14466522134590051914424335804272212.8522458890359484468570698788078123 1.4836275271836879953385106564360579 0.0033218136786428735582842345519072 1.0033273431503462310211341887087280 GT 1 -10084105.0465113051509315556212908174726966 0.0433468408297882179097315453510092 0.0322457006013694200030754170422179 1.0327770468593522421946287214236568 GT 1 -29358564788948049762682216813886919.8406586320882290285945669793180724 0.0764337001381824639482037043751686 0.0474967641951345075145108852327221 1.0486617748165889336322958620474456 GT 1 -2243316568.7133317332007024824490218867313892 3.3147572610256552409048290935936689 0.0125392534825638038015459702203094 1.0126185333590166261616775130593591 GT 1 -16400186724394803269377417105033722451.7802238304682392247666493257561253 0.0946716291814811203818083485778272 0.0262891595358063671740449386573470 1.0266408977902280233037305707394930 GT 1 -36135908.0829761783269038989862809135150264 0.3581064550626584133615585804363665 0.0197049314929198009596728587817993 1.0199016623227642711065151887773612 GT 1 -4787368815456636673450052408044326605618.3063059003543509968426790494176256 0.7547105032453362265919365433355944 0.0432727610098069507961540545655916 1.0442369448833309923634615342334566 GT 1 -12277997813871392391.9789414237499240066147769532768892 1.2572466471985597818460778287618580 0.0790477946717802052433540463079606 1.0823471383967098880161385529755425 GT 1 -17278156787404373583228559727927519793409.3815585809940938265242751419176928 0.9206098690994653946739427653591952 0.0275799399981216608645806356188269 1.0279674073803903132468500952592017 GT 1 -196.0377093157195148728989608857606852 0.1619370391531522419204855709257347 0.0491960723164450732887937624720143 1.0504474125795621547773821378078571 GT 1 -61230788096901476504415638475721066317.1570606579119330780051369200607329 0.5821662866080698800149034365636348 0.0053390223286551645678162261147889 1.0053533258422698673950089693350504 GT 1 -12504170294891458918092210898663050413002.1885136774775970694345569325873942 2.6680775712483882375226261877939418 0.0510596467076475611063488187077833 1.0524093345157166253964062960398542 GT 1 -363798684774090562778204874.0528486216987403704850844177341012 0.3084421037885779327932254971343471 0.0009052921178365683004930406528529 1.0009057021422257863407596497220716 GT 1 -283682254392479525.9655009313475382227752375067457615 0.8471406748458429684709746202503759 0.0580634290623591796714304025399448 1.0598173411339437513529061458577373 GT 1 -431980869405539847364374190977783193641402.9057475803150955391762453221560024 2.9050053959641644087292029393735337 0.0930641670140226122065590364064045 1.0976835778018662983037635230244119 LT 1 -79186265506579171795188.8227774157421401033259995828778353 0.2791665813207112401204679988456139 0.0392885023205629778240520874281991 1.0400811256153301145302591035686180 GT 1 -174217960308661479087624592788752200565.7468363913450686176892633620690547 0.7567876563765852792112419179731938 0.0864632756290195653352864282738064 1.0904317021429406999104540710507831 GT 1 -423195380203673384401808782395819.0226940512854149265474027999463330 1.2295445458737725261184099954094209 0.0064661853241330421513398384751935 1.0064871816601966707374166857224250 GT 1 -331032624111.5507278007412698160994644258785453 0.8929266620271000310078390960091802 0.0256928157137788303353941764090676 1.0260286407853343839081684195900343 GT 1 -1070457068702903085095319041.8043895434528809159377983869183674 1.2962585159200790766687241932458175 0.0063730904512422846154073883358960 1.0063934852904727882414588275393302 GT 1 -14.7159584416578886645604612964523942 0.0108426623636573901075039427668108 0.0703764313968104550209692367192094 1.0729755397170833890865135974760805 GT 1 -9548949.3730788342441468137425256072895169 0.0069505509865394292876898992850493 0.0807812146486786105857316123267885 1.0842311160253007032599819076113414 GT 1 -2217817116.3560335954184219337488545475949362 1.2637382826669948329666551401536125 0.0149635603291080711470675131852494 1.0150766439045931303198625661244729 GT 1 -60395101144196442099227775140020.1654103466375382479129933680281213 1.2045570092030735948241594578075375 0.0153833720795335777348512463236815 1.0155029238050387890697068593438066 GT 1 -383576261.2266153106223243384643747896373886 0.2539931857110165536875065958435507 0.0015665295831483193564287229810028 1.0015677578735521930176296369758363 GT 1 -235350.3932506525429992319191980255022936 1.1255076422723896996177914859508796 0.0472763492376308436887650245069815 1.0484303955934202431594894498854081 GT 1 -109428376071253.2875203514323994464702996591706873 1.7603294744523916166626562939733874 0.0479307178198924313041520922332585 1.0491174714394999797989170193278820 GT 1 -4491930405413555758671188459726974838.4474360989462231463620248653789621 3.1938524065379804312257795230746702 0.0103268238248951870547524153734854 1.0103805154324315282868583670496661 GT 1 -585524.8969339626351978630736498196048667 0.2802105620737821578332656148177568 0.0338834604288289127122400338987213 1.0344708106681809688550632505207474 GT 1 -160.9595440697828130434499612107287695 2.0477982713041481471047091824192276 0.0864822426816222556765352758036922 1.0904524645808356378895466004356240 GT 1 -5864947743846016730709375.9216476782242186933019520350884072 1.9071450074414103060138551651466917 0.0316075395535765513578648604892753 1.0321178395263775711288732198240727 GT 1 -2316266031101006718069066190.2701687318838338991350904030868770 0.8612714889704527062583591738780820 0.0477574025345671221623517453684657 1.0489354473838226044541412454154634 GT 1 -8.6484510126430848942905288413717263 0.7987968118115438874715030933223311 0.0825380821658337094448480973533953 1.0861442063626033151716979830335043 GT 1 -39818667001034596948155917344.1706620727008322692554554826333460 0.1059204681747597237406621828389266 0.0473751972953726637338516130813733 1.0485341541029470823251882916362136 GT 1 -23487321554334488793255.3761587254386823155232489992379779 0.3723195580976691649968117968892986 0.0147632845149202477698126403357285 1.0148733463929222165466109155396034 GT 1 -11892434731112571548836751431648520533834895.8943885485960407625397665715793760 0.5927065441109806793158068465460257 0.0946818233156979217278739233906435 1.0994688206239854207986825992599717 GT 1 -15487374342786.4303898415840610439244922448723360 1.9296720071220778468901753233046175 0.0701203850771567551535298688580144 1.0727001475332567285567605853361439 GT 1 -5877.6558038583492182005900693876780382 1.0467619100293101600572779745581531 0.0809390590456634890442320033736988 1.0844028465787241639667425588052610 GT 1 -237399188535445891464871229531981752987.3327023259060993631002162495387657 1.4210464484694605640744124436149455 0.0915091963872209692558065081575612 1.0959705138027818247332689008048784 GT 1 -161146782798542372806577741491.2952763287769657734512689264578428 0.1653308137189562159936720988536879 0.0393612964541948506493039466094466 1.0401568995514093178144662505158150 GT 1 -7581229189246118.7710669876923230074840574459430452 0.0037879008394993903023784394513031 0.0634289028955529206303948670054720 1.0655298420891176423286485073084714 GT 1 -30308166344312214581446205405878586104205.1431568335486197248357247599920850 1.3547244659952536981185335586181647 0.0535211811499404138631148529100614 1.0550066869771800191856633424786807 GT 1 -250433164440838882806843437218217076421.4675069995535548405426320900212405 0.4534209189707756724293671648017060 0.0661084681274926764204854511061660 1.0683949803960560878248097974277266 GT 1 -17809026138218343308680293.1356461191908614583454434349030408 0.1109574316891174672837280868885178 0.0271728589854423055632138174835442 1.0275488682678197561635529852434440 GT 1 -547781553824038853598819938458266480517356.5807902050770499537384775364092471 0.1062646183003259945729932211985349 0.0901503892974633001435652159712586 1.0944759560929151193622883146025518 GT 1 -665769317891051216307662492400247121.3699429027825507842685079147227231 1.7062063971825067120570769856607159 0.0537254177280368653839061579566412 1.0552224959449705914882017298825808 GT 1 -518413002609683.2641749631024536650350678465952063 0.4006440657872074562877200176450092 0.0075820254164970281265153016170784 1.0076109150920153115943651464234407 GT 1 -265304.8885245389907985168307802501707172 0.8433707581584387277287029857238594 0.0994510773235631284618453367419841 1.1047507874948981512713520205120458 GT 1 -12683087509968.2246701256498140431391285149153364 0.2506375103411214493278646105802009 0.0696420184776716493630086428900697 1.0721858405318890478715535964705325 GT 1 -2152895829515662859889520336427714176.4902512182471964783543353984404373 0.9288576547643373645150585969824121 0.0563837583420288716824298998814081 1.0580357191571869751353056195561763 GT 1 -145775251845957250240929824209.9978364005529331875317077246996651 3.0856018362273540544447481755843013 0.0813657029408291472760705791857901 1.0848671715592820215537603272124883 LT 1 -229324436143329720304782.1131328596092209033454968358009590 1.5595400128736574876532070312467319 0.0378176294293289256938887954318982 1.0385512718855990501952554985008614 GT 1 -25379893.0901742401271143637662475944829195 0.9303799988271853835574986457227111 0.0141379042497990060434442621829561 1.0142387964834596680339486092431293 GT 1 -12000031831565.4029194989340592764323852121093062 0.3850151277327517503967916525980103 0.0147239967326576069999128625505794 1.0148334706977349044333959798882931 GT 1 -38476908527269100839954604302673154917.1706447709533131649847127783551595 0.0984870511885650882650033908044831 0.0564640338405833723836028116988922 1.0581207949642897453342998157206717 GT 1 -27801979422798258206563359165086522456222.0479940344530540058090392195425654 0.1211934975148806577915399144866491 0.0921062234331650202213194308127591 1.0966278933841316578471188886499479 GT 1 -161221241348608399.6167221356238806327680389660855565 1.0766402454258568283539636867264953 0.0056789592712077554099841666622951 1.0056951458715287568657885807293597 GT 1 -54574721151575913351.9478534138767530201335905449180930 0.5127375484237092134351074849022859 0.0070519155941451717851428852875130 1.0070768978687939991866435849206132 GT 1 -2543587.9952962299613370253898682178232096 1.2465634196146145557126954657469760 0.0531500404410954484432447539291367 1.0546146359844193576819446714782327 GT 1 -380758232476238.1013183396060951693792827248539302 0.0748137616112556994535541284863191 0.0296085577438025515966496709724148 1.0300557401708634557535825681291159 GT 1 -3161436228651534050550492059649749.5490590840427583498666494009455003 2.7910932721017440525906286549038072 0.0887080713960003505193649964702539 1.0928919845323381343257380166014971 LT 1 -615947456583250924.5757813706625696974178100619809267 0.2903940337629219856051783590175638 0.0634487599727611443173217557110512 1.0655510442036996238886566618034728 GT 1 -56679398646059902085391275.1120816307269150822372401810875117 0.6225420347880654750999623969955907 0.0081400080132805566761703910387564 1.0081733187682052776943529206227302 GT 1 -17080865483.4202052350704462174124356176502835 1.0041586261789468683555542571667995 0.0881734570675422321135281043683570 1.0923055011500140920394425401976810 GT 1 -249102852799689490855570712965587441.4896578913298520590096034817622001 1.4088424467602575908748703183688984 0.0010055817615759036311235021587774 1.0010060876981176541066853479538227 GT 1 -3358012740712970038697750814.9414440573931510897925597522400663 0.4056924446593093371719341900428528 0.0246180344428928104739934752578701 1.0249261251562738059634400209218346 GT 1 -24721482981366902096125.7403138928954378797728690592932445 1.2061291539625687039567385740688421 0.0939056100250178713217347207519791 1.0986117951705053955025759312072341 GT 1 -38357296502080095552327257715898670924239.4009743995398540073811887219514095 1.1485580361680226094414535474563144 0.0521515787714926851555579084741862 1.0535606827302728740620875190060861 GT 1 -12107863909018888433111350362.7052912332173286184869107763206674 0.8191734390832769859893987088750066 0.0159649543646629477043595345416416 1.0160937670810337769323277266840191 GT 1 -1718857823975690826702719677035977.0304302735455093258832074467911427 0.2684507691400548139035370929142811 0.0225651567957025464148562112042919 1.0228236459127576566037354074073302 GT 1 -13015524123185811060842538885686.7151996160510652420822877754262598 0.2956387599476937919968372415381355 0.0727749044331952588251804753089861 1.0755589213534965789851073557968537 GT 1 -178337680969.6350305903846784439550384145401247 0.6597749250740528124067025827320020 0.0511117584607470017965631969625543 1.0524642517545594320328350033043338 GT 1 -58052028399055858481654515.5722988534475939551706261478600891 1.0827670493595352709577145264253199 0.0912704941516556412517365240019969 1.0957078024125387848105804522489233 GT 1 -145366.1154174658819884221404836768889137 0.1791151570168421849130303266981120 0.0012619167724328873820322846324947 1.0012627136598774627653988085941754 GT 1 -2001781620401792634253991725382890.6781015781857003662118678129055078 0.5971908401364418920935944969906777 0.0792925142914586913966718169496865 1.0826128982678846388902545145074429 GT 1 -35331971192347675074.7258107630015879773263595101748880 1.7306080991054866749823375001134707 0.0457712656705352578459460390535009 1.0468518728244362307525230688916890 GT 1 -11177525745.1564994812848651055260074787611214 0.6836823161407177959240537465879778 0.0743741346979620085325424430596786 1.0772851591304899889738451171542206 GT 1 -66906588660857685230.2103672663601810183239628587272427 3.4628215186472915483277953345425156 0.0460355724037457685419497397957693 1.0471288958640053033657561622444168 LT 1 -477923989798685162076524981246443.4692142723096377933727163186960169 1.9966383508710011246027097138795629 0.0161167133519245503445864254376535 1.0162480000947446137014452762463019 GT 1 -22134336239925879850301030446468598848721.4170562907261172131337558549906202 1.6143017447777857800374570686733550 0.0611758353690212212014430571906222 1.0631270754228374601903678721987041 GT 1 -11.0762571436787746758334781446594310 1.0437571616707769371069510970685366 0.0823458081605926093247554683585232 1.0859346566726069898676748701414536 GT 1 -68047240749194586636857430176.8200673970184483051808189652227574 0.0098089558412177352426503332861821 0.0643794497309943295666194478633787 1.0665452797110638423926761438718600 GT 1 -11634327962769311312140106541270945364.4993957665223828037195135224172394 1.0822736312020135485774128004064271 0.0031303832689959783903525036442676 1.0031352931679558688193597074739973 GT 1 -172471026276895.4176646737949726563571188602376838 1.2218763355162558276182930081172734 0.0293298073608710710251515369012033 1.0297685258136926310139813685777347 GT 1 -369465654937579784051791625124274532309554.3684053688114923474888935431976295 0.3458556860397651307379862244595032 0.0828530970368283385213991713085893 1.0864876200326123874569942809338011 GT 1 -53008385526096319416304921867575233.0361490348268048819338706871845799 1.1955094667012036264553778323550004 0.0272964740245392616345639455530255 1.0276759441770929332702814818744230 GT 1 -36065287487765659566880601150786861388691.5697150770220965113633598241706392 0.0654129880184113253184558883925254 0.0345303289887882013787104992069797 1.0351405903348587675409956066417189 GT 1 -907100697979313692060456976579973839607.9933080240893802004800527589339868 0.2564594135501322666879181467843188 0.0724763764751450484211622477329124 1.0752370147172442069774434662308404 GT 1 -2575674894220.2571753410921634010288709024548835 0.1019836535960348907430784663503538 0.0086814051212156020152601749356213 1.0087193080451872826112018063099561 GT 1 -113325492557281779382798873760.9280360352967639258908070194594004 0.0636205387477530919040743264927333 0.0121178262572114321112458739892605 1.0121918456913475707131433875141116 GT 1 -39594952363749.5351130875871143870288024922672798 2.9719569044172795162946255245814539 0.0841475086764191950848416591388587 1.0878999629485896716997788970835611 LT 1 -193024039626190461617436341617569351905.5480454912634736478050076110351223 0.1598838441215320907607130846450518 0.0406678303989652768983994572994096 1.0415178932672190077370167411328025 GT 1 -1765409752140263973.0384640441263672710884457675967231 0.2057462663751569614890869081825793 0.0454427046850642775495389330671163 1.0465076110961825180783885923497762 GT 1 -88701410842459889987.0521911118864892814205936062117760 1.0961024114373976525686128859697048 0.0231149830614235526379998463565699 1.0233863237951666835575068114793025 GT 1 -23009802581362706411450900000871648356.6820895635967722876057074811174193 0.4827431307310864162371042090108482 0.0149493343385207252430441511806415 1.0150622019131206841166519995110394 GT 1 -478063944769.3089106945519453117655043634172661 3.0577820950479618740448148680914782 0.0332607136239297035871837532843958 1.0338264306600214001165808317890593 GT 1 -14283096055461247847908245.5407466396995549109984993849794047 0.5536497150960297534680512292941439 0.0624060212886405060582320777289674 1.0644382822028775941236377444694315 GT 1 -513606903367305578245.8623414884690817650073058175994547 0.2541472837793951579749698920052020 0.0434448996103782897674676051445240 1.0444168854989869178031539142607706 GT 1 -7545875133236888385766442738.5180619797741089299870076746475514 0.2792143538510349027670555460725911 0.0187444985637273074964201377887154 1.0189224033419767639711982605756155 GT 1 -7893.6695959423651231207086768394425296 0.7868618295571596822300673832693892 0.0647290449219225300549418914672551 1.0669190001475487498505463512993986 GT 1 -29704299097757450856780.5378611019986324675995593424629284 2.2889817114058583190162439370498428 0.0311512469897510796450996689330932 1.0316467649187407291209930637467602 GT 1 -409.8336998242669375700630896144971672 3.2727023277487803424330447887665239 0.0368394347539522566538314509847592 1.0382395902805874164834994607102010 GT 2 -264344957564645096982129102517653.4718993001079680385749244252321776 1.1026233459887997122284843575584852 0.0918530178405904689610986538672469 1.0963490388562267703732550276594909 GT 1 -5038472440933566913512898.0629767912744313990815897925172410 1.2030478985962164028641990534980922 0.0892155624786107117021377909573099 1.0934490315421870825721230787905727 GT 1 -550640956206631045132453775234515899905160.3772957808190569361333362633718703 1.0631676905751310102765244388390618 0.0107055804735826339166027745544611 1.0107632974993383561349099334151588 GT 1 -10271318050706.3598379763752078798763163080257176 1.0135296026330635624563912522920275 0.0496817354965480956165576725585934 1.0509583352258431900929770945623464 GT 1 -32844168500791320.3065589189147232202333264311665936 0.0928233604062261245960005878666060 0.0061419709299977440943260530609016 1.0061609104238205124249095134271163 GT 1 -918475284877179862423292364158.8483192413617512022983274427991777 1.2736931411746406461446459502229968 0.0231839523399373386540739045070830 1.0234569275121755649827330680661017 GT 1 -590376435564816788089103154822540330918.4889936963221374041307712347182272 0.5221657864348036138991309636487666 0.0988190757751156539327200593302148 1.1040492377309803930919016768292111 GT 1 -601899167392985927648966876848.3396474821763429834902406817726910 2.5874683895725217061194088532861062 0.0695580281761065957779130454345097 1.0720955672045804840161827088991741 GT 1 -9239428734421503263736260958152674772186655.6213107136054246350796404724671364 0.0055461197197012474540797318663061 0.0787827101029383303684665114797076 1.0820593423265234929735184310832075 GT 1 -123265481063064241069254511.7569866010959670239013069842523112 1.2428089814406435251542126275431910 0.0233806717986577740676417985945175 1.0236583362322349011337687368801292 GT 1 -513119296836572142494687563845369473.2777086571190078708108505105726964 0.3767297498775951563442565388802171 0.0922690748668980663648178942543485 1.0968072822567519625945339228947762 GT 1 -128746021838385.6066588091939700074946895005514821 0.1823658270496238595618810670666280 0.0038977014423135321288706181589145 1.0039053172765200782584652035753459 GT 1 -34902.9871043159383101920914143250153533 2.3071817045582319475956614460254217 0.0084296004635683413596428883942068 1.0084653304804219203560213827727333 GT 1 -224830357464148383316655899866903444.9167904562697154441016179173899506 0.6348938902234305381027705672028651 0.0775465966380459381293358358179278 1.0807184156039458957490965851283243 GT 1 -294825202827837775771871688305345964.9464443715439588995638756600522009 0.0395622062620182531537817106627874 0.0906485964434221287643075238172627 1.0950236769379552465210249628403668 GT 1 -527178098344849331427186200152209.9955328237418951236948778260953528 1.0460646404887346985340659909383171 0.0720055750561657818988802614004275 1.0747295538176091208776928400452925 GT 1 -709902784064957918869569413348.7491484379234718265933926064527167 0.6391614942512741644232450006571072 0.0186209396739199447971980584619738 1.0187964920874030639159608258910891 GT 1 -2202102745389386280376192.4990700685645821302282044688925200 0.1571112213430266884508612806063804 0.0858052513962663944074200419776219 1.0897116573541814511282001734467709 GT 1 -392811249196582.2586665117398130182635359588059983 1.3898996276111657543375066457487357 0.0017100518686254516322004666981824 1.0017115156763515983890664961539831 GT 1 -12727922487565353678013578970924887.0434604213748569014233584727833646 0.1888177401145618276489742353889948 0.0089447602098093694414800827395780 1.0089850047422858233272137600777230 GT 1 -1609430804336317063227044626444194745213.0311680313369124071888344504858409 0.8334631747727441379240878659457890 0.0507647317927170968587211027442135 1.0520985993930408204613205516716666 GT 1 -26156735335809661761111504675146107.8778915701592537101211831526605410 0.2801027540879638373609589142560631 0.0612724814267362188393659870975487 1.0632300244480652711573122613342056 GT 1 -1837168561270434024822273731042343541025070.6927435143376553656197397245573365 0.5095790969892851841145227004560704 0.0888360161460599600591012570149711 1.0930323936905462477061655741399462 GT 1 -5045009896.5318223519458631601348506073687918 5.5304251055036264038993651779026378 0.0638700693164017070753180607224845 1.0660009973055282222905672029572225 LT 1 -805231119005089775782785832.5253858412114904146436193061675810 1.5852056707785141092143362408358381 0.0392690400903483779780870192455514 1.0400608676782387425891989807162607 GT 1 -148420508619323402611289.7024825240672337552407143482412216 0.7902098631660239589617322873912797 0.0955698280184374467290777791454540 1.1004501778106474399689121014795601 GT 1 -360598817481250811482.9606000947963414914366244035597901 0.2336825434492007058388515436218599 0.0496455345463939853278428359703918 1.0509202424499666133209310752839087 GT 1 -433531702017218.6421961129235794421958882342239986 0.4934327761032071755564637309085248 0.0654894099405961912467131934969272 1.0677323198239200028106650025243016 GT 1 -247359952103.1823990100686513710199138948064799 0.2740400947327933968194797104011230 0.0042789272208359083539670407918462 1.0042881080286152846172896629056066 GT 1 -1071467497178896213749494.1070720081355536554476017194620946 0.1188670714944507062441290980057950 0.0992988847800833706539906773077188 1.1045818020229870230235878840623103 GT 1 -15008455036231.7672718249205410941068037644955024 0.2837297389116078385946445550455497 0.0907342111900480748421576648792406 1.0951178306136694682957246160340766 GT 1 -283.6092362954455045092056707709934930 0.1631814972259806121474567086922786 0.0190205379843717999044217798311419 1.0192037553998157592438769650101900 GT 1 -6300280261384375638321548871630684689.7986908295173510231781511201726171 2.5170459514399018445414186527774445 0.0923467447623128735650199401340896 1.1015869630748274174881469894256522 LT 2 -733710364023596911321468448.0857026680887974545832676563398547 0.1089989489764410164531622545937931 0.0162809809946548566168354393522167 1.0164149724983039805375859441396596 GT 1 -57885366967387497821158351026803004.4569376548635164349672529092027434 1.0475362341005460836858252019281439 0.0277521892747242531324985300437587 1.0281445577099102311909287203496998 GT 1 -20411528641613.7426227833666953477124162221474553 0.6665373449618836715826145253326313 0.0011609589031456723013392455721388 1.0011616333379776832114062630983911 GT 1 -461050996674980870508289929741080237212024.1527965970021919766620772564845361 0.1904208993995352169682851809388532 0.0665046479952312008236976465991378 1.0688192951185200786148204764754335 GT 1 -23020917.9009482303616751746258566815993245 0.3839509791329007909616935488006337 0.0513210106818560832332545647682042 1.0526847996419328093653529036605953 GT 1 -1877756847970.7253888305311650530404967281464372 0.9433087444256253818727442578031402 0.0611880311761024130738622460625231 1.0631400660197524470451711656022262 GT 1 -783928974.9939836366051367636325770229148183 1.0269165229184770685760348449611621 0.0179694766722603312490968918821769 1.0181328882922597883172931029959360 GT 1 -3600160711917066580.6513291752366348899887297612961945 1.7652294088844711791695501361579015 0.0146778290123580125667879548737906 1.0147866141433026485769524626111689 GT 1 -518226634634399643819609377701859.9485804385597431603573564761842586 0.2653793155523131534943305655913395 0.0344165012309501238077431853022446 1.0350226984406828381437690175638602 GT 1 -494150955505500160859442545.7113271291224538466393677030660247 0.0908689046573437791108730566354081 0.0479426966387613390675088981184106 1.0491300533959308440759603255563058 GT 1 -13237228210402313678559030.6598996641787973379053825067249314 0.8947856276461414617380518716497605 0.0964749778159451569670266790703980 1.1014514746083264893348555841471351 GT 1 -30237461150285.5546370026855031973244305454825678 0.2056772932468719620176686494296333 0.0142653440254338279055849601389166 1.0143680721841837841026371982008564 GT 1 -29.9671413989220505209424591901434307 1.5422501018615711483451999148493482 0.0053233490472094650964575681214966 1.0053375685558037548388618940765271 GT 1 -314180612.0517161807535579293758491442009061 1.1275801471082785433879604110564668 0.0821378276968179976461315089323176 1.0857080387369375951110828194805857 GT 1 -7954129870227181169295469469304935872371751.5093029458492105333436913264008381 1.2497132743431152537623313958064336 0.0095641029679511718028033644140634 1.0096101327247447410491370205473993 GT 1 -118153381259946880648124632165897456546805.4316665365127810138024451750141592 0.3901641686461604288065094243615555 0.0163714005939646228051163692831331 1.0165068928061613635672600998840686 GT 1 -13670788441690539.9319067442747875378093933869445358 0.4521399784903862315101289100361173 0.0512165166615407406266498595982643 1.0525746588387002931308850033891034 GT 1 -37909850270305892869242398036283847308.3477185520235991662729598038043341 0.0930693735991230598281200282589787 0.0412262865604979016143332594748548 1.0421001929017179650225907583327625 GT 1 -219452404137.9776290037743310461400987068185786 0.9513152741907728057449980590709314 0.0541481149128814145235626499010816 1.0556692918639202637948261650292593 GT 1 -2755664817011603032010902053351637006945.0559308923648587892563604217233058 1.5983687714278293188437884999038498 0.0363313032205708964299441766319608 1.0370077189815754663286515761115400 GT 1 -587937422409056190743.5359326394925870050718111900167149 3.5132198960996167531437551603250958 0.0640222648036030910491726032760020 1.0661635899708011728213699241165954 LT 1 -41241105651.0835396723315621994348277103206588 2.1366440295304654675129741825298445 0.0789527454683955096752198022264659 1.0822439361911280357126558832628643 GT 1 -32779948646.4612465677281050075546892479352385 0.6636346886799920568259612955060395 0.0380992664850256719374331858204725 1.0388440212550105071451605146183949 GT 1 -873618854615620278602842.9891252095903031169931423829984614 0.1967129528971222644400802915779716 0.0306537062279405447241818224120300 1.0311333586198594486222787479590289 GT 1 -8620898891073008975682394663614.8149869439052703439361563567106268 0.8218722878640008070083582545808854 0.0978829229441121749927394022772276 1.1030109701629619302794561259164187 GT 1 -174953747540894815439159016796669801.5731140619831758987828009644966422 1.8132882699467870350980951289770291 0.0783377954863519145381780358730070 1.0815764951012113600680360445913512 GT 1 -1764250.2186428276903652356605525450054020 0.8468893537011803837382229202520063 0.0211308355662532346834465175133182 1.0213572874318093316208869113207213 GT 1 -11522429398282542440705938794342677173373.8481937471112716730915123554791974 1.5907591861250581008254906304432799 0.0512116318394331777758100334214984 1.0525695103410518749433068144534083 GT 1 -1057869043606233912219722.1958702594896885265611750569215241 2.4818731768948144204777898036932137 0.0270718884546259478108878846881748 1.0274450828294670662153006806069066 GT 1 -1293112446737408879626849.8534324464706127173581143588461781 0.5393649419791750048114192575023995 0.0013811137503114644094566128408926 1.0013820683669644740543249262974470 GT 1 -3615621763546433431743901768102922218537603.7832919790135190233497319230813984 0.6475279032753361148022485460884228 0.0532123113562569466482144870048949 1.0546804045492163756756968695132697 GT 1 -143257172.0592315544573779723494845075113196 0.7446276109785894476895943622411572 0.0496249316743551877361391717612420 1.0508985635401864938149562780730838 GT 1 -108082778274708255.8879069698562189901468004931543047 1.7720472255537471577033314847366475 0.0251744826772850025228646605679838 1.0254967805910186288227458886178627 GT 1 -3671012644383278627762868185504.4221988946672821618850562354798722 0.3800361375474776528215067788068262 0.0131310892763768850249789496255438 1.0132180642523198625213125320776782 GT 1 -1285355326152971.7054576161134100104970646830533883 0.0921177213778683224477435365408715 0.0446523619770964521048739607915863 1.0456799858680518399461528393997128 GT 1 -342.4237578495775629416077073764258661 0.0742678902923954940272133935067563 0.0593826197132019003409139568101661 1.0612188317694833900198916377892289 GT 1 -146264908088902249503630049699.2266556701628417586202625223645541 0.0542863791531496169428159673110901 0.0612846129870155326486723637705506 1.0632429479412307738061705852538670 GT 1 -1482174438.2089541000129074390027661745252587 1.7524529548965131032446565994674903 0.0714214660360863042758119260018528 1.0741003202218601575856704198719415 GT 1 -10212173456871.8279202095331412561799703202195975 0.6443738144548051694108282799648454 0.0586428789190839778489236446686547 1.0604326990863070197726375016994175 GT 1 -5903777037.3680829916679486203261745144172069 5.7661257910806409519448843310225155 0.0158621781955898760883495849443266 1.0159893289284032273267428553241964 LT 1 -33957797107538364.7717621546421571501351921817898562 0.5671495749523199030452976186786796 0.0311173766059820357225954285716599 1.0316118061167262366372871491585292 GT 1 -130361828491.0332505254349471206569388872163604 0.0709019160941186721698320750502197 0.0409237037088158216191312953768059 1.0417846490868654173327156036912217 GT 1 -9475247.3698795934352282885412840830967924 1.6574827490366495706016775564216145 0.0505300545718563881547133236785490 1.0518514022816931365180509780807188 GT 1 -49823988635505400241147676.2821951858390484682572222223448748 1.3695601350337475947145139728128717 0.0641275272395906913001759472918869 1.0662760588378623418170590446614592 GT 1 -210781029730.9767939099633197480013958870900072 5.6082597050627971413517583953609856 0.0820571697562520533675058183635150 1.0856201667238360485861500220682911 LT 1 -15752209030683874232392442284200295608741224.5549673924619807967756680334335874 0.5117289756888869345588771722580898 0.0845723592675102771280842765499561 1.0883639559677639009833353157609915 GT 1 -861968922320758592854388.6672691642574944818134848771103307 0.5205027510653915212833487155146301 0.0383571449877274146636181549371419 1.0391121498337282439416569580355292 GT 1 -16234695665799667408590279479152.2904240312269479340787939295138992 1.4753607201073367123763159791151932 0.0831789762904869616866696599632973 1.0868430016642635252977782092482545 GT 1 -691084126000448030787.9518918973498202062978385735765099 2.7047957688207146810026681683238953 0.0666705757189968879766511585793334 1.0713773568942578266778931014353553 GT 2 -263258214957306270550892.7405529282328833451614159963704989 0.5778462769187468069647606298504100 0.0846215638801918956943431994108272 1.0884177078241899655821363949499760 GT 1 -110390.2235947887787274941826725144800893 0.1258979548546130358915703602381584 0.0345231920952172730293745932663352 1.0351331982153475448404673150087665 GT 1 -5321160001774792.7585836635109255994264304882304897 0.1327205709120369987679797509401893 0.0584271692671260725464641687275161 1.0602035778142238132638096062069498 GT 1 -15993.4928218121021785033853935388277663 0.5212149055946057106826365092236560 0.0668616986464460173757774462198282 1.0692018561582045960298395603922299 GT 1 -844452565716581968789878983934614.7308192861808838021126078858149741 2.6645370650592073615115711994787140 0.0255236127285878617668725085132422 1.0258549909372079345667240270533791 GT 1 -156503943916302.9309717703758127567820042948224273 0.9671181298966845509856718379976721 0.0835888607236496094737034805244242 1.0872901730026990977753026199687365 GT 1 -11225709720970340062391245.8862308337591513516745298113009453 1.6605673676150528168902977375870717 0.0422348624799367658212058052109794 1.0431526902325579948456507074611252 GT 1 -3720892567036446175798890.7583327172766130678452842935617865 0.8423706668048832924869862523235705 0.0049430037589948534531508798637601 1.0049552608098563421188798826807287 GT 1 -171664516639694546898528931.4511204581532264167042437577478788 0.7188135190259745709000191365043641 0.0347250408105916079698741247213457 1.0353422864260122297368171525642224 GT 1 -39364981107.5457196314201903091053388730165674 1.7121563360623145371316683854466268 0.0093656664136701328418665515214008 1.0094098000440777302947822363082105 GT 1 -34.8033313101772577904905395033062705 1.8488246879234047258094726813792809 0.0669038914497030123254006011071173 1.0692470732038664618632750062274743 GT 1 -693201221947.3678959734665452585993653417520273 0.6982290112174637478430506885477337 0.0518657963601859824263449944870866 1.0532592217255963717035409409221663 GT 1 -8.8729773398885893385453489936717258 0.3279506825156641681532733905967610 0.0945212655660309066052556445182069 1.0992914868223846436525373748323145 GT 1 -19237.1688982404258082896989656638311836 2.0347462151350596195066220452090523 0.0260412616755716527617184023247779 1.0263863393535474585686979604058469 GT 1 -76.9837876314901158034707940427326972 1.1034714669798140389864670657150236 0.0594265723035761301380971387672021 1.0612655602461437113670035625604746 GT 1 -527096829536500.2590820790882243337638894342477931 0.5960952402164171441499283730075689 0.0122563491991662692240933845475073 1.0123320776527452619876042676695659 GT 1 -3.4967076989506101418744204642057007 0.4110979054014997613437405251080896 0.0960054629192532585654183353238173 1.1009319616604911728811718154112918 GT 1 -7291696033223593439612395467085002285.9530759182385976935057900190241944 0.8920138568366565795917162443680770 0.0577688069554468309454103118424097 1.0595046066578046370167016720657121 GT 1 -4289141979608165989502274093676533650.3436234410189984468211500073827065 0.4710632501122809310475119943124707 0.0723568714765508417805633322846706 1.0751081799387774631627223596370378 GT 1 -455027652540443685409190451859.5857959275758954102139333238494117 1.3535523349585016591889576556668300 0.0961125613020880917030140666337205 1.1010504410572604086017205359032395 GT 1 -7940784254948.5004879848156814106984954263110750 0.5011915892728961323939855140073030 0.0855491412686158903090204198691384 1.0894315482632807928048768914633054 GT 1 -310548497291222808164100574038545846833419.1233204403704645183791857113563538 2.7163431532229591821514387690104626 0.0850641667256657283983983764732367 1.0889013437347022551437962103647856 LT 1 -77.6622171171747962206540127366156359 0.6117489051396536979907868931811500 0.0130022929121296487569868806139975 1.0130875626639472614414027119345689 GT 1 -3.4851234464014035796298007028785151 0.6045089911714794701105093427419193 0.0621944949962754624997730143143937 1.0642127022183475756893132407461321 GT 1 -483699675836434010843337738.9904014808655097784992204330876397 1.2942020864651978074520072710430218 0.0189652681969264696875303207839637 1.0191474155551458515662082841653235 GT 1 -37340590780408513642964037901465240.7060319271067031803066883804825118 0.7821844883818826505647590248158482 0.0083178798178095859911510069328256 1.0083526664149374300033551860500011 GT 1 -301446234466708243340176.7969130299585595841043808679081694 2.0087979152641873111580340603426862 0.0725093505772709958432767192803913 1.0752725660362936557565065658576774 GT 1 -279484338999921386918642.4707331205065284009551835343567877 0.4028864011103938883294359746329233 0.0201868337374611754984095502605429 1.0203933721637848455000365425421795 GT 1 -6702416284.6729728193120404798954755514591724 0.8412918776122000766510458327750493 0.0010700511222386569755006931447409 1.0010706240356750008559996519319768 GT 1 -9625476383722091879463018256027283.3257987011530383569677257824912475 0.2786607908206458712347354791680903 0.0058282890655192646525480024348314 1.0058453398256855626981740607825495 GT 1 -2653096026784960350951190960107400.3713289318513422993632529097460141 0.4136839747791828791812478161379476 0.0646836823546675205275212701641973 1.0668704992645101755895972311688026 GT 1 -5938989741894300044559227183843310057821.1015713795467653321448092055127900 1.1943334666241358964711017087954177 0.0675690465403047700634554801382736 1.0699601747528429813156296862965814 GT 1 -49858108200188063136044764.9955494407625075865026614109411868 0.1829962442203891182894803926716605 0.0677384477643668162062084466994113 1.0701418682213485651738622939355564 GT 1 -44480858671.9387056878339415672640387123220322 0.6972030676712188984995632249433684 0.0826337741051202676041101849194163 1.0862485125230471328919839469997588 GT 1 -1012674804.4670782899558533848250668009220662 1.1145446005058730383035438160577234 0.0389450959356036337633787192096229 1.0397237394228117505453067439628874 GT 1 -1076345521804988195892971672587992491.4463430119034454459091569897296675 1.7273951419942297617333927917853575 0.0241148705585985423880656645588481 1.0244103947401390630586914375857032 GT 1 -10192.3575204566008542275956347235946696 0.0144454368986562888776944169888290 0.0251519692971065937843932337223775 1.0254736860783991103577676059098577 GT 1 -4895281665548446382029.2455561541030674012077395510531609 0.2094404264176718175881173355479156 0.0099786821536235779584326633109980 1.0100288029071789918152871483056552 GT 1 -9395416892922993368285.0506922117344422009253883735116533 1.9561179245836657042391092997046825 0.0806141922429412668594082902909674 1.0840494321474045757738755551722546 GT 1 -815803629776186.4934056103824527915112530718321963 0.6678369946397074395113768838271555 0.0910637205082643136182620473523083 1.0954802868307954864104947340716155 GT 1 -827425191470125673373521776999213448.0144619639163252504933391449979656 0.4011585262067573038305900181615859 0.0406953242433788523651396501308135 1.0415465530362440649125999080507234 GT 1 -1701060333037845.2929098347562501804365200596355852 0.2913517121396651282194385155717737 0.0680659430944988312668491702392418 1.0704932211929951146820254029956497 GT 1 -603653905902039290691691797830492069187186.3875251573043174122773751553680843 2.0872500285794599333301167265361830 0.0822974434717305828962938951319160 1.0858819533614755318364099149737530 GT 1 -263446980.3355610256365350335727067667979029 0.6641220306144920623185799061737426 0.0048487112431900507303997611108395 1.0048605043800031130698393772260217 GT 1 -8693938974.5055793141799547027908547893149551 4.2910970091714927056727044619963743 0.0740186221613299604791386411124288 1.0769011548635832981845803552536491 LT 1 -902501439991592558051972.2674878601647630655455104284606298 0.0094507337682229351303392748392996 0.0806918415538184651174524142830820 1.0841338935230882070878547927930829 GT 1 -5463265130.2601781584817203910435522905952290 1.5199427671988552769742807771439627 0.0782152396340169932364003540862593 1.0814435313058319981753019368860075 GT 1 -22476702488597137943877099.9997343471699871348998445078490555 0.3478273447917936662210109468402738 0.0916012330749980601992082081915437 1.0960718261657875439577930550149780 GT 1 -24137145411543724905131096832.8895588222362789441477853713200385 0.0136105889418114676649887535617239 0.0197169558210183013840969924701555 1.0199139284273594891248184867133127 GT 1 -235598241409481764286256924190.3291632735917350832543392810089559 0.5282619526470893566733123397722901 0.0418780554737915123508168470969657 1.0427802183748853520374374943907914 GT 1 -495319268849211823.1713509875850607725362401734329860 0.1562442228147280467977603043958358 0.0072179548744086141544773575748965 1.0072441303423120248253894878150201 GT 1 -11214440992146.0991557216900528155772356434559858 0.2962361614251684404040798560361591 0.0894107299721179875394198648420375 1.0936633395597513100667678121502245 GT 1 -1498863665493.0549597506284891134608228799126874 0.1094667138176902351664280680479635 0.0911240429542848621476464624206014 1.0955466550120963143882085651060805 GT 1 -329888841537396.5449958773125482414427313977943437 0.1761989988943007851730360098000198 0.0722061800872449207763740167854706 1.0749457476990139406322309817762948 GT 1 -271.4741656923714675471446976167749914 0.3968163103825222529367667101819695 0.0348126948200574804042786121229922 1.0354330978457886692753371675167570 GT 1 -41019478035322031368612514325765827.7020726811344487888555244207547189 2.8885187729953818456708098964855142 0.0418392987652093027991592694601884 1.0427397684875232475375958394438913 GT 1 -648570325003809885287828593632170164307.5473573618972122383434494492932338 0.4680299089627610612654756877357079 0.0205374309249020200381590481808532 1.0207512566461571092013101326039985 GT 1 -39837933.9981266665280032367651198484666087 0.2570658151996949451100743104788020 0.0398816659446456035692804413399490 1.0406987374757225826518060767051016 GT 1 -12044231323616289878659177013346782680781030.8421729779853808085391579171957804 0.2173912726025586868589729326216823 0.0071335778669733010107120313068634 1.0071591434890221369819638119445620 GT 1 -16414712547653610206132909346.8134459267035120751379943191663478 0.1111650028304110503005179914127921 0.0970860681780152365543557970790993 1.1021280437046972605557186487007154 GT 1 -205226872475791107618804013744735330932.5239379126999742085169977265288710 1.2082499850962420785134139422148593 0.0453002968143608475380639941079635 1.0463584348762400385805547222170192 GT 1 -1429468901602072732513636156725267.9194114709367562946210896015974525 0.6730471582027255575165556394994857 0.0753762483088861100362759929582176 1.0783683791454626446294652600315024 GT 1 -107865329867290961592.3196500358821924454296003704730651 0.1379904457184151506588179135524987 0.0779757465911554107214470514896335 1.0811837505558527598608071753679594 GT 1 -46953336.1784273974393018525057799255567174 1.4149105352056962259002965460499539 0.0643958720182322555332935650109090 1.0665628321593927081681181752099023 GT 1 -383485620550852389478021082000.6314186612791927461284664114227532 0.5953472138352982227910071250552037 0.0661229714713176321616113591064508 1.0684105105255729182999732159425696 GT 1 -3967810253898.3429143793362215312724246273104322 2.4031169510462720169718959449905471 0.0171715312876589570818900740502762 1.0173206718108728610294821778144388 GT 1 -14687475425951170660.2682578092362915761233936525417371 0.3297798908437667944511798143705084 0.0920255943917080019692252609118602 1.0965390884341892825216175122905227 GT 1 -1643005841.3728026508489906817661218012078432 0.8642886971575319576661387001095132 0.0303577108596553059323964783482163 1.0308280495807109249262103253601481 GT 1 -25595300743551641941.7716903799642560409463265611345890 1.1065024701054491047299065168136633 0.0592204260818001878590983860084444 1.0610464134699416459740800944101042 GT 1 -41375.8274846649741142545429954598374257 0.4608521336571753619399004649725760 0.0475707794852887280495326320473128 1.0487394839132510463507038811256613 GT 1 -100963515296343748895920319962124169001911.7612324229538203343594042499380964 2.2971554421460716539070638185159858 0.0301540513810611217383714895511101 1.0306180359540461709248234761467718 GT 1 -4852815746553586082478.9999744345753238682358879356142717 0.0333925436528951064000791388925022 0.0056028596681840062649885151894319 1.0056186145622807994842744449148258 GT 1 -1934437289353994800.9590179807244404269245232694230582 0.1168492337237685916078134542522658 0.0239990541972777579297830488995833 1.0242917235093478725038839274961248 GT 1 -252459255062086.8977932740665948947959589809997445 0.7600056063236307683465027681140646 0.0834753307332217071892459861794498 1.0871662952432664612851951406813076 GT 1 -14.6488068189982247786600034183493261 0.3284529240098649337415060095086800 0.0048617866638899279187048615034765 1.0048736435948623741330936412654120 GT 1 -1157428634100185476761446118012630546713047.2873142076230339985809064654768012 0.3153000652873515742830918863097531 0.0545794531911433630890834514620680 1.0561254274036406955770067434535317 GT 1 -886165508261.8162069555205365624629364981426944 1.2345110214057377826144332539877360 0.0145267468922284247492349381607458 1.0146332931861110668000412016238576 GT 1 -119501807032584976547975454882916406548.4163353986301135135893154946041118 0.4487887994714734002588993418748160 0.0413849700925646593340624852863453 1.0422657133607064249546195419322823 GT 1 -318667470337512051.1340735812740746194098377590692076 1.4024240444928868134375598028480513 0.0329681807602112344929105370867119 1.0335238789618391248441203188900998 GT 1 -52084853572067808576569734608692975355.1005551648011253710453665472328243 2.7803308445559618669910423239898747 0.0941525994971569055156349214240247 1.0988844192415067811906912432339305 LT 1 -12261830344931848402837237830.3295387946774162785300404325083930 0.0848485659423983715352244638786352 0.0836799419867667389890045119568264 1.0873895670254852139946569709340680 GT 1 -4934569175407583507.8611864649304654693805805486401719 2.2187837397145753029442877500018429 0.0917368242170039752075290866637763 1.0962211012059808543678718736199710 GT 1 -379290159850.7640774306239893211668412596493183 0.6313625236562100868248961030166769 0.0662865454215175471750551121934091 1.0685856816373318981001421031315893 GT 1 -28024976543520.3989453701986366458422370771249064 0.2143044723730682401626444446413185 0.0888402925115075315231222272443766 1.0930370870010353728158961887797375 GT 1 -374205.9476586315672618273439057275662393 0.7432115451451765383929147663179735 0.0272468411404131505373271155247260 1.0276249197728758970814229561409310 GT 1 -340203613981324151967177980516838153.7700591982574968733599279727637364 0.0754443384302283460234073407457776 0.0760157707914454953341122108555571 1.0790602754422219563817365597301285 GT 1 -2913281437264353831400007453682.2839999603408979071965491213644559 0.5547008828438726373643295281983398 0.0374109435001989416761728319327836 1.0381286908669261464329803731932185 GT 1 -134762492180786445032402659.1444263429979687639994661814776543 0.7565610361669153176551272211165651 0.0040356731794729482330329075614895 1.0040438384842169734886157234992464 GT 1 -860632690007328.9638694866154124167885666533180664 0.6962309325425166111373185116671232 0.0548212911640060957886228424444070 1.0563812594880548742932561862050398 GT 1 -326209.1351789838886878532896137785417134 1.5339461705842123288031829812367475 0.0930292412663385082674981966833436 1.0976450689306290982572487346823859 GT 1 -7626782513474463433404866401032216.5539444053033485902848546982973949 1.6864948011662109715778320953046962 0.0762697946102601477796134240541088 1.0793352354854607732562578893688443 GT 1 -101916354845813.7036236371786885559483763365621084 0.1226954742987131181484546216956578 0.0987383237308684782327727257923558 1.1039596348284756800246520541528432 GT 1 -27855730.3307786603384687613234644773109308 0.4003621230474152708843811266059136 0.0779832807818019306995719609368052 1.0811919219476584729445276421348624 GT 1 -16512772729954831569661750553217782954486.2033715092286846491462873754420811 0.1266189605769299017273666037938212 0.0516369715715785696832170927943726 1.0530179086502608732759893630298934 GT 1 -1315538571240.9068929477564965490753925994825327 0.5312274495681430882349071295053823 0.0967210426022989003176282733116975 1.1017238503509701034213779835364263 GT 1 -28058798432931.4177559661955603298525883854718331 1.6748525781313369219350531741223772 0.0316247269340154062194499635367253 1.0321355880463904856587675351688472 GT 1 -4102.9931976511963008666269659142765451 0.9135486306210929418439536846949621 0.0047202797932510003746665672264993 1.0047314554960790593977395360767607 GT 1 -35670795674110054586538682618776.7906573080167021803030945230869454 1.2785491244878199276889338337788106 0.0298156250177476861102470905110313 1.0302691482458189349534706204584942 GT 1 -5176421511259.2398261156386291596108702038919031 0.5226685663858219011566315528153296 0.0329497044782390017615339185557696 1.0335047729664609785620718343504799 GT 1 -18.5921059521710672559204645881133583 1.8858902070173950256133885918152010 0.0203683507402765083922739871197905 1.0205786460759630640841603049791254 GT 1 -78123.8956711005508447693643841020473645 4.9567973483280863411643316992631295 0.0154282115015076147887880816051351 1.0155484648224527842947729551342378 LT 1 -126120453306.2203897394033752623646173244878671 0.3999521415281289268993429124462052 0.0065620260218757609260921069429754 1.0065836507679759710929600280708887 GT 1 -5192098816727894.3466172334061916433968999516675040 0.8166692580724016983035505224138609 0.0290573040439662876073668161580465 1.0294878279255660314445285750432485 GT 1 -254551.5722749855595398053869274058033078 0.3242806369510438803263855003849229 0.0144527525400978464852513807344244 1.0145582109105649442308522617495555 GT 1 -360193556109208551641547151638.1592102121264249616477607632256814 0.3534479787982071343394990867521571 0.0316396232568059642594962550591497 1.0321509709643352443903268507072265 GT 1 -54398839.7023766977985827456984841069407888 0.4367060227236435714785106396416943 0.0073763676560908580463092723898702 1.0074037075852060944272945980775610 GT 1 -388009171565537084286828727.6305564241450682492031997105599023 3.9297549947217000712397055345772808 0.0060667911034243631624873280477155 1.0060852688522376407831728703187081 GT 1 -630386664700000249214580685595347508596590.6837554075679111440545195748530701 0.3117643147819912882356541184639318 0.0992324951490481457106112691790710 1.1045080959030739613442485488096918 GT 1 -313957491639584011677643689.2821707555035012112197264434074527 0.7044466892130416815968231148318359 0.0405611832051217453584187181727624 1.0414067312841480941018860982113123 GT 1 -22696363033886.6755665202781375506247394087933489 0.7970938471169611530016121365589844 0.0046434756006914687176564018550868 1.0046542900241795542422916248851133 GT 1 -16798266609871.6008398816524045641676032279845109 0.5124085450776087348528250409127314 0.0967015945043260052002407753785856 1.1017023200269739046231658965958542 GT 1 -25840308330582733669945180251317877.3862795159133153922690285208948585 0.0019588808444322382329761446144982 0.0137608783232218532662583840363098 1.0138564368684065830829853118393646 GT 1 -96804221745767153237825408976804233.6902211606634277489162967147262271 0.6744917671677474257296935905362227 0.0454869996631631235355228268199924 1.0465540158600172327668971948501188 GT 1 -27323464759.5072357922085186505029635563434235 0.2686659483250205998341667587517957 0.0048397899193934847776158322040536 1.0048515396287047993766558600297471 GT 1 -17894493143831843858722.8572871592579573289890078013749964 5.8311450882027060951532357115803075 0.0299290460946853205890109402163600 1.0303860618039245660395313251590502 LT 1 -7947106763737079609501960443725.1914398285004015315421387651815164 0.0305060330953813488256360686290354 0.0532750506694811547651681337756482 1.0547466721959053230726753980924888 GT 1 -34816583.1052923582775830599409559389547842 0.1396092413022721747307858929529436 0.0159614712944310137642014328215331 1.0160902275078416476367450067759376 GT 1 -32029.3130146075922647480092625798437181 0.0949201216921507817890158199472375 0.0637374737556934423368167035978688 1.0658593650740595367923118778109846 GT 1 -2597063497633734817876946376669.3344534157243200118905598465856389 1.3479532385487518126923890659654709 0.0945215033386121258049446764889602 1.0992917494156443148203396376861863 GT 1 -7257.4918765220198728699249455690524404 0.1908945528568368111691255399040826 0.0125640691585759730940650924594479 1.0126436644722520413526413392026592 GT 1 -160877827178188.4863035793855154337523963158046741 0.2130736589523433487605571410643534 0.0511076071735075180003379852264490 1.0524598768682692915360626364288384 GT 1 -10487559546102059.4400708472321211462387591085986956 0.6804411789976979238178668065189472 0.0329229948935016973703614282057315 1.0334771537040367045715779330399115 GT 1 -430877371544753684893092680921381.1596862758404497797571872527429352 1.3075623790920909855614945457668653 0.0665939700857467866367058829412890 1.0689149853263144799931154487469300 GT 1 -1553806859366896986415032318357955192744841.3077612177992732388192863065125220 1.6921903362715040365094990712197683 0.0348665387073927043390768206096305 1.0354888853483472024552683686120436 GT 1 -366443.2141233342455358810820830972343278 0.4240128831271743847674439007330284 0.0435331940929623123578616029772505 1.0445091944081071946493167076574569 GT 1 -11504875766736369700898045900935137280038078.8509495227056237853749223204971838 0.5962260992084262167161451309219500 0.0581114917516410358958246007577130 1.0598683678346956625611287446986525 GT 1 -152415114697.5535502244211996755541582008543546 0.4769816858974065981797067072326382 0.0809662354527125038066159757684822 1.0844324167711300862164854435639266 GT 1 -2195218015520978968043423358.6519558762386497714861353239473972 0.1204488916663011361980475244129030 0.0151810558433871650503067163570923 1.0152974677447070233011145120111449 GT 1 -176949966.1729753602580133414967882928704350 0.2245857609984626802036480139114249 0.0274829240514720974579684348648706 1.0278676448277229036938273522861830 GT 1 -3183086697.9609372018921473358395998272491064 4.5427852852950463353316749283220741 0.0385043437087211851557805763031729 1.0392652316012827300954899035361941 LT 1 -2732822884.0132157211079267740783914314955110 0.0210530323652640720240190349403351 0.0115757203397994556276451169396450 1.0116432405597143798366296954973569 GT 1 -584616425661787052220870.0497223486931582569540762967120837 1.7634002619640459246347071659683562 0.0134743889459047376681842448356685 1.0135659923216465592921864066378514 GT 1 -211247536810455496221146586255.8501969268609928103378589696380511 2.4119531205931453815586221588395378 0.0338865629755076188321960943713888 1.0344740220319588718020117201051815 GT 1 -14876585364812428998326899373188154955.9403244412680200532085819477112802 2.6117808733556351981338286130652602 0.0839320554523680198281417017105315 1.0915072952649390815736609087061348 LT 2 -47299304209952041874512363693.2826700837581436325062175417612545 0.7507602643077385786385199451271156 0.0714379688761216152380983609286289 1.0741180925330637149789036079831221 GT 1 -609826815392981492225933.0377582641495684328422046658365405 0.0525792458040421101709999490166600 0.0361269130002008289611379745121913 1.0367956455283760544501770851814004 GT 1 -66133919.3349320887939430437658105785940412 1.8466964051574661260994308750038942 0.0551447991170692085161752402943801 1.0567235898076950643039663602252885 GT 1 -8760052063476253499579381742861263.7469850196629478922119293787831934 1.8007591132586697444780772383779958 0.0896053019667957157017836212199701 1.0938770394042649012442908821589750 GT 1 -147928584.5036261647158279090453170517822893 0.7363079004946609288412263209522151 0.0723147645845133878136238684725380 1.0750627897072011090216049813873087 GT 1 -3134194678561578119503191529746051343.0796186047093772708132425371147684 0.2287575960359524570855571560527595 0.0782216650841716783542071158870272 1.0814505019922936176801890607564941 GT 1 -1316596249.4559464550181441009298418050481748 0.2235633660803960203115605016920512 0.0203474622167279908385797296882764 1.0205573234687706541902600234703530 GT 1 -143304314379774315.0899343491655579721990742123143102 1.2596578443197660631872070637404124 0.0835722344584889899690602223487527 1.0872720303660305163717961609025628 GT 1 -406751882085976515082500704.5818920959298851980532032558774809 1.0975202186544865563583900766835457 0.0155696039760394936998750653498130 1.0156920832256077855485583476258394 GT 1 -3260195247.5589082935470868891017811370321658 1.9053065849219388994540854707922742 0.0637342933089120863014128507593407 1.0658559681193697018703141610302893 GT 1 -3018333637503.8905432498666927794328401441666782 1.4190767128792260495552069202176275 0.0658235797646686272979389180443898 1.0680899718285559633324700115798331 GT 1 -10952853738312205513769377521339525698.2906659927775486046897391878467895 0.5807286327659654898174505484564309 0.0778496064262957073503903785742919 1.0810469520533217673960612487997319 GT 1 -1142681477074971577589216576.6361115125083335370066597606454793 0.8530566435424325854564122719492328 0.0504058289134276403519981194350891 1.0517205739884031529035608276536123 GT 1 -1070732366216291.4471202881465998231420034058435001 0.3047127859091823244768983999331021 0.0765353379507698111646566321244976 1.0796227453167402604980885570925816 GT 1 -148313694952.9188663983747862769844688502981644 1.4724322441813344413021556683476554 0.0632069495544757990569993596153466 1.0652928851233233218746665367433943 GT 1 -1764868481697785211952452461376336011505.9691144893489455131655211861507674 0.1789882589818690330253243552899754 0.0058287778102667610826009213284691 1.0058458314357990439700420323495673 GT 1 -6287622430091995120320151581389699.8349187436871920677045330080944696 1.0920386931574205020781514051641773 0.0618261415646316949009172860644469 1.0638199970068122334902838776779410 GT 1 -1337367.1209799707654317154756458199839148 0.0771801053576007336955743813116763 0.0225065948004804839766972933811901 1.0227637337443316337747874849395152 GT 1 -1.6237155520052028868988596409699169 0.8469780737655079525086879287216389 0.0809847368328706159432414503569631 1.0844525483126502198160160675277999 GT 1 -1.5910535020590604153480877528034992 0.0402450610531786337662527347203460 0.0800860315352153685166855181991848 1.0834751258498986359643779716641839 GT 1 -29.6175534879832431237566180224568587 0.5174024038324752288236018421565839 0.0318060310324258674635425672652088 1.0323228306143347990471318843421199 GT 1 -239.8380456810278233705661151076615068 0.2585451539308537563792572779817924 0.0145000062275265028901540862228332 1.0146061587085164175201042189662868 GT 1 -131892705249206.1232256976164156778070986852856326 0.3869293592849994647816515852318346 0.0408283999937037384384312539940066 1.0416852837072662015644050695946319 GT 1 -275589.0231681822036181410328276298447458 2.0908252932661522364037870733624414 0.0866852598902299431863097023273400 1.0906747260193958298692956018011407 GT 1 -1349813541962704.6005327026936593712718614494769367 4.2909688515350259430614246401550240 0.0376526724585636351588275602238200 1.0383798461379672311819748323852870 LT 1 -228661675231620202161248792016944.9900637291776183089241756240218280 3.5471067320052312162428378485416512 0.0770284486927401003359438464975068 1.0801568669399259658704279547706899 LT 1 -2451522.3276948903693218929929936105839257 0.9685993917056480844175267630928446 0.0042801531602654278356349070325451 1.0042893392370507869309831859043973 GT 1 -2892295325886856493772.6037868715691570822341948610977197 0.3382928736022857377188642781565382 0.0782532473907735869249667918391980 1.0814847649451752599992994325020501 GT 1 -895007844964759101.2140883285126716363707669584624359 0.1378908804485137702117291007572919 0.0668451127234381961758645395594867 1.0691840819701945844365454849384221 GT 1 -8418714782775515864861528121.9582384366022008175042627574613147 0.3918747516658228107521060385332851 0.0380559758115926199243149848751241 1.0387990169236921760279663606716584 GT 1 -106149594644.3055672987676410346620455714129929 0.4433004319176562796942478871934394 0.0232695571462317668036586090929101 1.0235445679208015250968371214432164 GT 1 -817849566083627644280067411604361347269.0057501308916776631652598970533798 0.0069337331439279138143130489542858 0.0546857172592397447477747460559833 1.0562378324501310916942405567850280 GT 1 -9707241.6892753759954550214083320019889534 0.7491410409313287329869661977798773 0.0316272756597113980375658170867757 1.0321382200105896551815587359153800 GT 1 -3680210374411588970.4600386905303689588222445618311155 0.3748019949488305920351724395316476 0.0115704390303962719299746857980622 1.0116378974136560817741588295490018 GT 1 -2743459872108802995.1648793043999614240843238823511173 0.1291481705691596874729050980062723 0.0391014209192708393324446599315643 1.0398864124379318889658297233751845 GT 1 -4477899864762135606215461245819014005947.0826705298385924432484972414761318 1.0221858068669574162465461906928616 0.0298063565687779905739008674824122 1.0302595950052835219033833926059261 GT 1 -7732360728642700915090599555210635.7595546951552730045023080672197228 2.6057390526362838805764859769846573 0.0474181294752391185013624130994408 1.0485792223682192694186022334759723 GT 1 -961480542.1407693864583116116039165884929300 0.7138235799825289403863643096299680 0.0530156827469192233340093287353172 1.0544727463839968613975737299850381 GT 1 -10959818106300127.2003539621168552966766878896926457 0.1007157915732690001265483507734219 0.0195661640874034622351699221427831 1.0197601155689675247886402919443730 GT 1 -1.3148845893665561538967536642940339 3.3554936739234428815860090568015897 0.0198173375775803747733159774227389 1.0200163344590608210926219040104682 GT 1 -947275434557400313417003858937295759251.8115887952724086024672746656394549 0.0437031396452081494200197447679201 0.0262104661260252637975392184064249 1.0265600830074830645558714001153493 GT 1 -1355939870161727835954226886579011771749305.4630611638755765269819514629861505 0.4735359403737439957655827531990454 0.0693938164341405842973568972362016 1.0719190948850259321460951320738510 GT 1 -67631505846681759547.1636334564993212274071705510378905 0.8731031073871058842171295392423772 0.0045854404445310502865245628181952 1.0045959858257263914012812234260791 GT 1 -181508803806815710310501461955886.6412584828202163396837846334000806 0.6129005628583273358094047955149046 0.0450009376820681431935591981537224 1.0460449203679287758958018693247189 GT 1 -199158419232909.8760767967844939524014905456613585 6.6501449849407292435741448311227962 0.0308524847850624373656921658271416 1.0313384441939242831838916483781082 LT 1 -1181008886326650.2140965669464181009309501691423765 0.3701053730291125851721743797971294 0.0155042270026717796728542800963574 1.0156256744649133830368335770198458 GT 1 -24075141718018428350515957279759917361612.0067407070442592325286932635757579 0.3912505370140027397000889306458276 0.0238189999135616627123987405376662 1.0241072588547025311070361861119683 GT 1 -10139145.4272533542111560828793250701844747 1.1217551571230818219270478339366214 0.0434560065676029824147558759877936 1.0444284969803374502425148620090405 GT 1 -3633401108875668422.4269297371996148268735987456257703 0.5695149524339875943859467269239761 0.0820249288372657770258875492742638 1.0855850443265165484613692779403354 GT 1 -9297233334349328377633657363.6988080011212439233034300076673010 1.0396800204747222494009860326319463 0.0875002993560176626667676834139877 1.0915675215869335146877376836387957 GT 1 -2203368051624149053219953675.5613309630092055768076111489295582 1.6781136253371865210082310363004451 0.0223670382500524435211617622243859 1.0226209741222179961149246445790398 GT 1 -598398668977533162167.1472668321024791052844329156062305 1.8189695643118493464767474393663477 0.0905238307470578419845110750611154 1.0948864833980890584623257841381340 GT 1 -16934823282290726183653600945989496741811.8579707056561135164410897591120494 3.6901467816557055043497334738406097 0.0301002532393447535052382759645964 1.0305625666810808461047310933343946 LT 1 -55129000567743479338.9372406116834462197465422381785669 0.4591701019592241866940781028700815 0.0437678259315682537914455302663399 1.0447545355122111649929103925933036 GT 1 -145092.6390040214619835482253395430265417 1.1460707108597244001014134090733372 0.0324700292288555109702805211795982 1.0330088770167596885581267321934080 GT 1 -31804620070836498537959.1396383313850333231583147247806976 0.2414585128944836052986289034252769 0.0362413485004321716237274384371552 1.0369143772322386025913838254419814 GT 1 -15116466975716744967316680161516289337760863.4526358951667685161900451585265919 0.3109990184070534249613235516486719 0.0721307895040347040534325139009283 1.0748644930940384986681933390373615 GT 1 -571721848712522329828264923.7987396025629468217366872249661113 0.2258692813474723216036437301911427 0.0867134553209351827375260357686892 1.0907055980339315455558606391171641 GT 1 -63160951073426.2356456682321049610347968268901643 0.7311537733172029734416741651608089 0.0474743052663955833716457192258507 1.0486381962468570645533275446935624 GT 1 -175193933895.2941836081019694516823805174479019 2.1091375723761842501456281616413338 0.0845223111353561696802641540807006 1.0883092856018443420498466007945499 GT 1 -404357590535729.6164785355071033690451331886185435 0.7787731145233767234515621754588631 0.0057886252572556244171991400024725 1.0058054442858827866887693077422086 GT 1 -12525478082165645.5419602924021625608907541189916027 1.3421440003863540795470734987857424 0.0576692877223478255594856148098865 1.0593989914133168223020004814901220 GT 1 -172118441730366622063609079.7321431651643981116239864385422706 0.7073482514879719804516912810117328 0.0540594957060681124776595108786702 1.0555756037749147708692625979776286 GT 1 -1153429271710890023882859620752690558267.0818961316478829598916841336723199 1.2246563445807254564394878688204539 0.0809243647431864077538687581390746 1.0843868583190185844531555576817030 GT 1 -204498206321352216606281487138834.4869906560212299861093508270875534 0.3390871056429756583306779562736731 0.0154842732335603658751521716137215 1.0156054066613840579838818670502514 GT 1 -929541527049.9334432790631535895604801149455157 0.0717508714215422600863056602447088 0.0545155785973010822503205448080645 1.0560578675897522274418726527849966 GT 1 -61315.1470887535587051565747169169179260 0.1206819794354177623757982358997083 0.0962114273581332582252595485116237 1.1011598257650548863175327304797223 GT 1 -24566741808165356009024393.4549297146449540074552547290169698 0.1901531718005851738405000420367072 0.0680091344596533015803925646522367 1.0704322652669500085405788262434248 GT 1 -5403340099976012682745581849197510958129.6668818202173775119385992467130504 0.7220127296834667059293196210621643 0.0771275847911155266018353289570184 1.0802642824097805021734551017709195 GT 1 -2943617686428801399671126745983806.6900236560808144560812619228292322 1.1985099685413081843075064078333817 0.0287184632246866300915709910588060 1.0291389075310955743182477315991550 GT 1 -79530334.3783205548648125178439794143352149 0.8458634427990743506640525218377059 0.0369223638521261106184619295241849 1.0376212513807241410954698097836398 GT 1 -1248824262269782970638.5066843676330507501554974776992485 0.6461193894959332030524864465426385 0.0826904538409440508875934157268398 1.0863102997191339507884067415478362 GT 1 -1062901724779144513899525832288570732854.1884080861951703229614718886830968 0.1329555305980628926854325330638010 0.0265953102194740285063895726000643 1.0269553636567214090464796864840425 GT 1 -157131736236.8531645361167202519003988360460044 0.1136563359101776097153221445571502 0.0485985418505407497229800230628882 1.0498191623495836042931938786309270 GT 1 -653219222469296440419485873429828893825.5812339063751785398218120647105180 1.2710483924533861837119687236840033 0.0047257693151637032502165763282347 1.0047369710681742120970169781481479 GT 1 -1599.9876563402875606819397986494971715 1.3181808883581074166699742973768149 0.0473160379435672371205735113552576 1.0484720546123882833502645361920935 GT 1 -25646170612007864105004317.6596151276843126319767849706907638 0.1819957090894814693675925303537454 0.0599860913331947279513009380309346 1.0618606073735057564347150308709024 GT 1 -45323434542874909453494160.5445746343376201124142837156905360 0.6583042935490155131920693523419938 0.0630098150766034573750677618371766 1.0650824718002893450209148680242921 GT 1 -34320043972926773938.9078036149270687686426852712450029 1.1757538030636606461250446303434162 0.0893047312847294184382129834223300 1.0935469396395264358096301775693188 GT 1 -495.0330288442932503019725719008208018 0.5341372369274404109420094747579023 0.0216687395779185253620190928022772 1.0219069542092914098159047518996688 GT 1 -1605272536207402225871996315551978414014.7263929715055872511111054958687913 1.0354471814804218255288340443101610 0.0045562111167060124868530386646033 1.0045666222822577566828630862584821 GT 1 -33.0570208970107404242898021028772255 0.3132438698608644738823915085226151 0.0471897675608984950102374826056619 1.0483395216629641058954738831761671 GT 1 -190808993.3721482741841701293614503427240986 0.0237418918666279273963133969681329 0.0204223116043581109357961775331545 1.0206337304031537697307040373426313 GT 1 -73105.6674938039621693577931175860204741 0.2568924145879241943252613874129165 0.0829958228086455494364662911188670 1.0866432514564897139621025447024338 GT 1 -115193704.8824899894189274838150321932218114 0.4435930414561732423573349311817619 0.0650987110263090375550561854484057 1.0673143285568722066086946561240973 GT 1 -10813835378368320289825965058915674285309.6361610999179108930947060328514836 2.3395959045495982343799654590739764 0.0369007455714066174813598696186458 1.0375988045526823708279659231391607 GT 1 -7803472307720611482652397971949.6971478051634065679914145667334094 1.2321379168442975803928971934480528 0.0279583390280985324196211559211156 1.0283566143580047586496638819571645 GT 1 -377054961698263998766146173015381.5472398588764076829620256132018283 0.0142694612684576163882815879813457 0.0448517453181612876027372626552478 1.0458887100454238420884348951221488 GT 1 -21826868365729651069730740351989028774285.8740680399020147765234589902978108 3.0116478203066534450393295807963188 0.0434664106173405942803316215964141 1.0444393737475226106885697872854756 GT 1 -7215018828133111672.5397750099571649501544438808071785 2.4135578033069059739939034886868870 0.0544302639967216055164231036806017 1.0559676379151516995598193967015953 GT 1 -490833503.3162636071068009079526481708330945 1.4883376813125268706992860961306599 0.0849752973948301415209160945315033 1.0888042166883392157691704925401280 GT 1 -12.3075285065528134391855504892958218 4.4492840582719709607868687387191841 0.0855377476940476594205993856330046 1.0894190888692290808696113537935612 LT 1 -36987287358743400243378888840959434704330.7502967779996240446045663077809403 0.1448938388556067102466529181392543 0.0165520992730421327124267414998486 1.0166906158891970978551191313520433 GT 1 -1347439876585934.0828018793531601505240399336876716 1.2677036269163206154942118304795577 0.0348357703903206075256958620493105 1.0354570059991465924094276007725640 GT 1 -2756257392596390561.9216000264455588634482716633202856 1.7024024909821545968353513585530756 0.0666904671049730056092570099295928 1.0690183722817078888564553652129413 GT 1 -17.8204088402586367604518520199726787 1.0676586810955780713183191277226257 0.0841106670778083211950471712881821 1.0878597371939246971281798358064395 GT 1 -13896391159.2048811202806986805551061439775228 0.3052624694530607265416570427937438 0.0738168324367008874652112730532415 1.0766832587528641802718869974416627 GT 1 -1384733318074155.8877697498268158081416439695063409 0.6522091389026998863150241396759561 0.0644885567924825022827368876584690 1.0666619011594621607967700842038233 GT 1 -16996.9230473697072220112021341010728695 0.0910662225923628995106059842851340 0.0561395581593453976625764802758678 1.0577769607988125786540616746222984 GT 1 -16667484231252721552812.1066803936959260775959673662774194 0.1611335898767358162361547920370385 0.0647011327688429581331036313909379 1.0668891566712467685077444548068126 GT 1 -43081.9091770883704867378150763769947770 0.2547972437537068288113496832578451 0.0476497629547548214254290495959653 1.0488224157920025536440125481175251 GT 1 -377500857015.0783344755815035923899653130643636 0.1657716706801516153154930008588178 0.0335303774819798521944977052637042 1.0341054112280898667766294339028961 GT 1 -163730669987068.0839676861495068713607741826941378 0.1193493948994123174104481381832639 0.0295666818536340239521547597096662 1.0300125874957436885493972813829548 GT 1 -1748983253825889959997426276660257181324484.5006580717524966856617240197474770 1.3660169659342530548388853498037342 0.0776559816852178910802032052595471 1.0808370032017112083443649164099981 GT 1 -18955735038721.4362261251431345958634665212998617 0.7324498684211757964517497142089398 0.0991404669470854790835454075975491 1.1044059346897855781176013277886003 GT 1 -1258840721439807887377836131013794.2549719918875253421914784339025792 0.2345443627270957463896045091985441 0.0160209005353057572007795734031662 1.0161506225368720138404371593158295 GT 1 -1340896624598.0047593159756230725725559459875825 0.2222171112979607419862620228678709 0.0329523406817328778131064308779429 1.0335074989953958426476699397509387 GT 1 -60448223369393122319914131989.1386405266411415553499596595215440 2.0481442690145646324961130716487040 0.0233847800696919317457793044714109 1.0236625428658295131763493821232841 GT 1 -75436937435215444031364691348163055665.5412645896702293532110815296276093 1.0543679151160629281819542475699906 0.0492609414522100952915930578003222 1.0505156404726572772474673675839969 GT 1 -117883719.6097724795143920051362824896665461 0.9108197026929510835493747240442934 0.0805246396385393821880230495806027 1.0839520320760720455913697426883448 GT 1 -59364320410743.0408077470489981071322955009779235 0.5206774084396683136666640313993651 0.0128582672592523097569843342791390 1.0129416503233829365443054796199206 GT 1 -46839672023344281156651541154321433826.4163890743404032258213963800778205 0.8619220822223051422784774731730596 0.0403765674837030112280786135608629 1.0412143292689924974198110729283965 GT 1 -947264174076121831790568752770.9755414506788297770886022843426869 0.0273324897549624981874328382108678 0.0984300891379283662760680648925621 1.1036176898590800715557807052703786 GT 1 -441121335094054853716630443.0936502855119227025702402367340231 0.0421532048018042827729368006588863 0.0524977339977041656036988817365827 1.0539259504692641356729885460770631 GT 1 -104265999893233.7463269464990644865708397571972186 0.4074228792358556667853901210287086 0.0041994325974273442855187237006729 1.0042082749785023768497115626677277 GT 1 -3961634842784.0307193079712514210412083488519944 0.0595238931611182807674455601239292 0.0652742309859912700937280991033824 1.0675020878850740445150442902166165 GT 1 -72366601896.1037109856415636095406745108117451 0.0298080710627322055841942727781116 0.0541842297697599166666965506352484 1.0557074749525631058435610359212427 GT 1 -83510.8831753215274833961552282683609289 0.1301696503363102155078226764142594 0.0876574736895312101910030907062557 1.0917397823244160362107413933629362 GT 1 -1680989409390001653418844519226.4177704946322283601835307388178510 1.1428243205911249638958795506985727 0.0058251851064340141063285521879254 1.0058422176746470655990239656662762 GT 1 -11279763452.7526776011927361411416324667514116 6.5607699303016390419004793676612869 0.0950462090003406020051333033984582 1.0998713962546848410981358985693399 LT 1 -373833005387310580412021845003.8528418688427903712378551246788932 1.6831937543976764455698120890462046 0.0087856072269272754781053218208377 1.0088244282186791214602271000457076 GT 1 -2292656337776141921740799.8888303907589144138604288296373899 0.1848027835441011372429530730609833 0.0792786382082618500264988295318487 1.0825978272721022705904548812979627 GT 1 -154952226891026266980785660181.8138301375323529631022314310593924 3.5182125125036666925389480855613860 0.0574762842403022396706573389943130 1.0591941973667854811451008382339399 LT 1 -4343760662273487042341260.2944401357607485929825608116602313 0.6143733475765475382561051737251670 0.0425160581977193151422458732600827 1.0434463290316457055157402597579741 GT 1 -72435428301675716935357400.2767975922773015686658826876842128 0.3202706757480713711979603820088661 0.0729042396652195668160994584370009 1.0756984174194793494780294199825554 GT 1 -5151308.7603577953779315979770880732100871 1.2241479566998761455128061810197411 0.0683306324852869034568576414145759 1.0707772831228021618230189641957057 GT 1 -135020683685684394259640246390264885359336.6458336202605294045356966723008884 0.9883491006337152143275749199104299 0.0878140443195879361953346091320912 1.0919114109199534580860425059652940 GT 1 -20.5144322577121196929247535508651122 1.5954932477868085052405277071466154 0.0833524539233675810717081304975076 1.0870322360326699984493201886782316 GT 1 -2107630725811069856398.8368515016546566794154300363392949 1.3572580374617848992116461515990958 0.0841859817503235067355760127298940 1.0879419717681088242846198276975432 GT 1 -2.4412893329644467750995419389600367 0.3720785167252720013338330749554796 0.0705110922754338225941606300031402 1.0731204054856407162593136589490461 GT 1 -317820672541246329707.8221441636245438166798805913098746 0.4290880490795174736312589942142962 0.0412013366238846308250218291744999 1.0420741704819998510218118265455969 GT 1 -968191713290.3754638332116662216885559976600682 0.4315352768185638474614123045367307 0.0682299352709877053207925948215614 1.0706692063990248102846936217355775 GT 1 -71005602457792543003.2997685909620709183995417297540970 0.2696017236045031476206401904322616 0.0517749270341483551793684491912947 1.0531633861661344273639264441335116 GT 1 -162754837124561950358276031.9787788162754328618754131269232360 0.3627551040064963946290223788671389 0.0561518788029510481291863840628170 1.0577900143430376459131612859429523 GT 1 -61446126165443792444.6757003585499860207349202853453450 1.1865327450195875897825173782956651 0.0919969308627327696536838502847466 1.0965075202794338070318301785289766 GT 1 -10592398930847820143421507497532706332.7532522064776135439715647991911385 1.7899552028177169836169560168909727 0.0395838120502705045109399720977711 1.0403885593525486365858534326668019 GT 1 -46977685400840524531507.5279404692057805475382247098958694 0.1270627422360141468867913933883750 0.0516290413150019244291564439154927 1.0530095466378431380150322201224826 GT 1 -15757476400236412.7921467495173565371566825762004306 0.4535819374894883598317498678100231 0.0227730699905510052974488789492911 1.0230363816386840279741703539356689 GT 1 -8910338103131011685001491257.9467400074618573415307027583971966 0.0680322670469786350522795659293187 0.0549878628701509930495192122648289 1.0565575080472218990290828717651639 GT 1 -12163049322409265575880827979032.8857741616104738118908950060562841 0.1173803757225009871344996975426386 0.0989699989304320219254392756296176 1.1042167244036566392471643389717234 GT 1 -410063672051814.0300666961312946431310028125397894 0.2260673143923281249222525627114993 0.0495598158435576540985300896144772 1.0508300499581979475415074767245804 GT 1 -588067.0392442363472967241585556274917415 0.4996239055856807022918056793773336 0.0509823846039661740466961143713103 1.0523279184833295031882601931943634 GT 1 -1711649852954.8978341101081477666176306348578856 0.8156060022147122277316034717436594 0.0941510369075026330122640585684118 1.0988826942398059753154290966467637 GT 1 -6139432969287972804334222930986276.4251834985241441373529345442107937 0.2484447435445295870652935440728295 0.0233699639684286040180131291433632 1.0236473721122148416053267473894862 GT 1 -562474382685482417329181.3697553512986134208881412696596241 1.1824722510232016496637054178482664 0.0243132326298129842144787947906391 1.0246136791512556824153295868125485 GT 1 -7381232612857880573329242965028.5142254213702288515955497755007170 1.2980309079196922290609287947361855 0.0983613389210494464209972262009607 1.1035414366535640530598614172516135 GT 1 -868314.3642852010577647193236185415774266 0.1294983793154303763623245640574513 0.0746033284186241406625249244158278 1.0775327992507656885231239116186052 GT 1 -36639596792718.2402154735147228906309308210514937 0.3785267170731364374815319894016973 0.0413587411880569021001464748761765 1.0422383524860401454854348945786378 GT 1 -40237813343282014049244037400120221127286.2686197889796274951198745034866000 2.5898754517446823041605485053123635 0.0036795526605900777193977889500680 1.0036863388663966320095232026353682 GT 1 -26748412485570.7576826220808083628572845980049595 1.3220760588513945857741399675495830 0.0898754467285320641125316683778292 1.0941738171104336712402612797249697 GT 1 -325976816234654588769109565.5111197640358636880273400257500296 0.1819620104501628534448762672928896 0.0745896079977533506105795645659283 1.0775179728313716807596597737623038 GT 1 -148586.4124162870410491200961310951852617 0.7993904538425855509422328161479496 0.0818619768289196908424957886604998 1.0854075476251676296074459403459960 GT 1 -69435412340244482792941846849951.0270939359474166579664691895272856 0.4769917495637112180345592186539616 0.0498176529272764659290434880959542 1.0511013685194208964651218588281027 GT 1 -628916892524609649154950057302808.3293296989704871647748998447592019 0.0131296415094467191982274637350414 0.0545839788200099017853980061503496 1.0561302143100747729964350243024901 GT 1 -4943743.9812470568061249391204757029483440 0.1426603447847665060887727710117833 0.0561798874894910034562206519542250 1.0578196897765082818801321000513651 GT 1 -1583899266560553.3977737960876537788890475378384206 0.2812069883275973574819820631639920 0.0825505929920337270361042903056316 1.0861578427994499707822737872390533 GT 1 -164591058667622543299753.8489150553198146221541487978059952 3.3678617123678626586994619888948492 0.0427637976404232394557106140761058 1.0437051025603431143478631356760669 LT 1 -130103286766284732572708.2096864051146438332092803020435385 2.2826101842034512197182413406189432 0.0775791712884034214079592516078230 1.0807537292852739244101022494854971 GT 1 -31.0234781251374855124829522365573152 0.7257427646580175177878875480868853 0.0606018991291363649516339666118769 1.0625159270318397800651094171215936 GT 1 -4955630472117709816606273.3626239058771841202940177136147167 2.0681873895335925069449921462243571 0.0073722491812306414935383802613707 1.0073995585138137739529467065705206 GT 1 -29006387989860675426831746705343.7592454298761572592788268566262011 0.1106053747160500764420902046050090 0.0122814045309785007391766864107758 1.0123574442036483586995788860559271 GT 1 -57692362626549983677052463788226.3363582138107943669926343258974396 0.4726789776865526124573771715289613 0.0988762409587107134735071164907803 1.1041126733799525007367277104885406 GT 1 -5786901113277233738142491129108197769791.4952245043507509597925834533055787 0.2126586139306230846391176380937926 0.0385158865646209112800650790168146 1.0392772367779170173279156637587570 GT 1 -56169330269359958178942981.3136882715703029367739052915948150 0.7854866619854231430339437358235947 0.0895747005137162721800087524044231 1.0938434265780393399981424623451510 GT 1 -10899517595967602978644154527149652072336993.3498565002258163612255884240070389 0.0199503830234167754290331563513588 0.0690494234889510845975942232055839 1.0715490895685032880852423959540711 GT 1 -8920462194.1643293842759056338530941970309694 3.9608033079834172959639213082395277 0.0020502282555901074489298917784910 1.0020523328506322775235908885814224 GT 1 -494133031719325516594761643610.1678914484366322222134709400164476 0.6001864282814093821706758016168987 0.0135255352997343528393155282729995 1.0136178385982580963772388014947175 GT 1 -18893412104375394341.0002206725155190859340667118760600 0.1454312187368463063188229986270181 0.0139773171549544187167285943483923 1.0140759197302712754545587196115429 GT 1 -1491.3620312319083769362096664812644432 1.6980953774361239382286845942123753 0.0968396606959996804472940251087043 1.1018551784217088702251507570433216 GT 1 -112358271192383229679068.3121241375200494370884415299377699 0.0272547193288551663262214511176498 0.0726199785903410354178390238532908 1.0753918498385994715980949858284122 GT 1 -375685168617372891035588672336.5472546485561836850675963126407046 0.1143678359588899958684927692934053 0.0545517029569085140648078657135678 1.0560960755696125770972545590176493 GT 1 -1.5510468772991608833559750841274033 2.3263347593105763877090146886741334 0.0505079243878758571367498695935452 1.0518280946180997279893215909580113 GT 1 -7038176578741794968153754814030827076590139.0950906231999550526845629873886896 5.2501104329967759767821429251871834 0.0453070549553559352931204944402512 1.0463655137146354621153170995470129 LT 1 -4943515623036418646.5048680956578205566605928098737373 0.0756550086812597100329838949239567 0.0839366051045743552426448507167968 1.0876697083016779855718703180255394 GT 1 -21120.7652358623808470687304207835030634 1.7944909288148231733513338038791388 0.0733411140585949584986215371827123 1.0761697574669241791551603111863714 GT 1 -897115635854991.5140241987018203875375000710192334 0.0243517869436849000458393149313429 0.0361196078990973606072802781478570 1.0367880666536052915881935915343855 GT 1 -157869663985680649194222837871884940892.6307156212523544182153462811461297 1.7224464985364791009450184063639759 0.0825820031794992510734373725532091 1.0861920798101495500379945899122037 GT 1 -5413467.2614492554798798460720157945942885 0.7338171118237516721179211995609721 0.0049326357472214215524836396709862 1.0049448413486615118411364345368316 GT 1 -50287026974090677483415641348.3325613079200685626539246113929881 3.1817420404947041457379536973311077 0.0548208505813981964528618554892851 1.0563807933513326918147952770603164 LT 1 -59030560235209538.5650509263907318996771328435243854 0.5433841813341550541166057599517167 0.0608185478720306685181487145121594 1.0627465786893742615197798836151450 GT 1 -312868101730517813097216991689759798193.2664785247227545830499637708008896 0.4035223421435319989982530231997069 0.0787044649176099236629531205631326 1.0819744092022438122169788315987392 GT 1 -10452699705642868456839889303157360788.4210006883169715148839243694797762 1.5945684779074224428034444339517834 0.0853007342549765263751613581616219 1.0891599390477850611715688772492754 GT 1 -30930.3365351073243703522357438732353710 0.4423305420623901982819157107974247 0.0704593969250238304846609761611698 1.0730647900689698066437562276939811 GT 1 -10447445611271487536204913.5655453616890546106167842472661650 0.0029959543173082314399533821295261 0.0504533986488834080136474751030628 1.0517706700488491164041991325735382 GT 1 -3827922037848645493204017127.7297183927145580769603351833624814 0.4659507440182209937237761227239182 0.0424900714896939236096692532487245 1.0434191887797317452616019135502028 GT 1 -23533527305948494971730573303.3770231598172736397385898296590686 2.2573705451819770045363608556099893 0.0099318541269004097888073737454473 1.0099815040072152145645822304063676 GT 1 -31737564302794476865.2988571877404645811024600578901150 0.2076092721201587478687921742905858 0.0455497739157667282221746803208832 1.0466197837614177444016611487964464 GT 1 -39294167250472038.3870657338486996830807583518318514 1.0528504723210460365782369301440874 0.0410059647215825319587541823117518 1.0418704238485758799675912486146666 GT 1 -23370869127271.5207667817447756104765843370335587 0.0402413269302266727061647660979929 0.0901152034739779029469462686740329 1.0944372847094978327793699146555886 GT 1 -1500203580514596806146774.3514987368697233950731445318586438 3.9261230135933282182902215833235592 0.0926528027127262379043678310084329 1.0972301046651156793192632650001557 LT 1 -382.9670886889290772814755887057361548 1.1486269343111563218274600717647151 0.0425833268419819395885399244486952 1.0435165871367032257756173720511027 GT 1 -2052.5284076534739436490540040923731308 0.0298725068597500131830342887851683 0.0223523038893178767228085151302441 1.0226059027710279656229701476450965 GT 1 -14119904543205459325770965441.7693107546758832906192791754982695 1.0628567250143530155127693785303136 0.0276428476402486340896872286676790 1.0280321013121672310848440710739969 GT 1 -1325854775970796047114267496304932955.9697297320874921536870429658659649 0.5384536772513176238811324621554846 0.0821474300957129624714799974300853 1.0857185004918870655345806174656560 GT 1 -59743736871398.4374607484852150018330322373241981 2.4211713291395198224947703406694021 0.0646508324215623250377510249956207 1.0668353781449213971170879821318927 GT 1 -5835701983269394332204838402118539601940039.8484829689411424657608637869149015 0.0182466845712870292939224359636293 0.0399900390858584767109288465591751 1.0408116186218541961191279091109174 GT 1 -87330192929541.4844477842502692363081966819756805 0.3184289775583916785394846131410582 0.0014777771421140361302060043229715 1.0014788701316842925615059191787021 GT 1 -1634262281731904992409932357463430890679.5309146341712895266955316392006343 1.5912161050882751946841970149988381 0.0099696553113372830560024880588968 1.0100196851225704826933943666513779 GT 1 -105478775540326381.6945096346391423451368943371861156 1.9502428731450634343790048016336521 0.0212214489611442782051041488165601 1.0214498611816618484044605177955350 GT 1 -22058441382156875412.4651538192300075657104738240690591 1.3849270380974519314350222742777677 0.0050679228477327178477121307755032 1.0050808083222242758914990275436407 GT 1 -3800429106651846091592723725346288415554.6324957335549732345236815914093118 0.4217251194365158497739220402394579 0.0765340494352953447945942129433799 1.0796213500120486099965736428431473 GT 1 -101044864302777.6581022772750520282762393352881951 1.5158791440264248110290971641431676 0.0433319721663028118225490309090536 1.0442988360749121740463896591620046 GT 1 -10987982491987701246463801496616246359772620.9259564424914928175311327429646618 1.7710445602275652062070074146119626 0.0860353551581336316730760372485769 1.0899633900684156071335599988959737 GT 1 -608104272590364265213729.4417333701129991330770403898816884 0.4124394251325670642529725660599641 0.0680902058654404077048896669670691 1.0705192563900202387024320804568636 GT 1 -2628789.6871881213295548647166354510593604 2.2092443250986997168513444485021806 0.0614717939248669588347251047607959 1.0634423689851069579796475315812780 GT 1 -3357494.1632659904737707820885497923085460 0.0269388930295240873274028337023347 0.0943928783996086732869839418454845 1.0991497076061100283117260603940505 GT 1 -10206.2519758310974759023337616621242726 2.6623480903180413047562137422711945 0.0818878839978718596178053375249263 1.0890854000766401604049289027457006 LT 2 -16780049382572708194482331762830.3083292712381906386145855919891200 1.0098559672694044451646091519010043 0.0589466319358887323363816740560214 1.0607554268029158660264002662600703 GT 1 -476859610140957553045064941.5059006999949515889817429574004742 0.5350105625604429061378438028983290 0.0071277811358680816920013582893599 1.0071533051264244036792885134159058 GT 1 -11519805271755939406990891589279032.2339363809960938598439238355133875 0.0123334092526099398828785850528132 0.0047411204176537238179529239963145 1.0047523951798467523046426928721552 GT 1 -45849524561953108393522457500.6303374190079469711967621713326339 0.2500067535706504687789654497452697 0.0423929479342298327922330266188186 1.0433177604528645891147654565008457 GT 1 -13621515705283538907825396347658.1512454200473206869236573749763326 0.3328956364904000255200574755435331 0.0678974284446927913483694812713863 1.0703124150353347239182351075143238 GT 1 -13066989587354.0239278408884631281670390575405765 0.5023469569229732740428990719963696 0.0767668488518730828239293276871710 1.0798734749170696936833999435034672 GT 1 -59651362.8154644541708702715094656239270082 0.6155331183099192681865171523464957 0.0664097415004969929978265022255262 1.0687176324049497933669056549553927 GT 1 -116051688334539682601298675543569237265.1418214517925009105326281893420350 1.1341221936568140221384998733557108 0.0109627118703365205671808375741008 1.0110232452090239670947927580734900 GT 1 -428844063.2600123699375933406889433625791279 1.8710757585898673609984036793710604 0.0674587757545996481444925092532799 1.0698419201352654503909152827610819 GT 1 -8156694426063876818649168268589938532.5986772973071399261549161810281482 1.7620240717185425028763265562967309 0.0664556033302321210045165802066874 1.0687667577635492709815730638732912 GT 1 -1008253020677734814045328103750.5429417422239329260417179948174303 0.1996133672578276960217388193213199 0.0665368489756633967125735699314106 1.0688537907759041538672071190742788 GT 1 -141243396074.5309245483392348204105153673518448 2.0381455769950664848425418141037535 0.0498153293000984716526551795926439 1.0510989230684566728253449472540292 GT 1 -58469538204912276.0009893813368730860725862244045721 3.5138986681922506522402451644731067 0.0741332564541779954280547435331783 1.0770249601494171656358439013424681 LT 1 -431324958381418678846242054849022661.4968153533482423950897254936808228 3.3713500334448439284023767017024958 0.0768673532526608248710628090013995 1.0799823421859516942184660218335467 LT 1 -976940.2115636347521941770908209958892565 0.9717097049108430123955163845013968 0.0114550232819448687281241137551570 1.0115211374388740913949044209208556 GT 1 -8040158183136133668116330156614792504.9879330747883943363489108547453339 0.6247628990765649938967877629745314 0.0748266377095772765847087005413413 1.0777741403380519892060012299249874 GT 1 -6149636373234.9500128921175090017036408417182237 1.8002307482700686676025675688053980 0.0634786143388079872116654644716906 1.0655829216286749617091150589401086 GT 1 -33.9756820808690118497206268379263811 0.4113669108376027320502540000063263 0.0090811853668538012241242606415033 1.0091226706788861740278658117826396 GT 1 -89.0160338181853009619899128560636915 1.6835632185250889056688439520646158 0.0840979831294958506809471368776865 1.0878458885115252429808517662384236 GT 1 -66784245801994302130.4638536773945105160892717061670285 0.0617240412348785419189141340206904 0.0784261524903411968580783202712298 1.0816723667113179118245625044518929 GT 1 -31440433818.3477867003630559221325285198857684 0.5776151235582535017208154069890395 0.0544708224220019197842413786801697 1.0560105319435869707673388435220615 GT 1 -115684586040479358672702.9158626707750473357915882285163791 3.5583736598976626149751803279694294 0.0616993072938485269549013871370290 1.0636848134298229645719222616158114 LT 1 -4964222.8581010149019829748083618278700208 0.5482186182683454664994470145042460 0.0122309546420864971559236764141151 1.0123063683195371800099021385820495 GT 1 -5759244269078769052828.8039782349793237267267328658907931 3.4627827621553314577725637879671731 0.0511030038224833046911120398742438 1.0524550255912509936824744372825861 LT 1 -3993376387071094217588832165997811699374.9766190453316688178285527958451989 1.7073322475692265489526417766329229 0.0645567705652516690214151209638335 1.0667348198397453732353131060717395 GT 1 -263818283723334902873692427.8445703964462854815318852470625892 0.1780172946469125216570557547174309 0.0772647942764843050848883846646861 1.0804129700117012679241702169615157 GT 1 -831210881261998894528.4296953157415788561596485087029971 0.8463010976036724145003165131889094 0.0146609367403181292353155381560197 1.0147694703828767234045919018084417 GT 1 -2049819729211034720538487538989953.4511722812152240133739920362893823 0.5645477512711533103829184975356331 0.0868039989070987983246332313754333 1.0908047433407918592967284235582172 GT 1 -851551249437.2445103575054644311484351349338239 3.1259639935860212628561008306684440 0.0849159821613438942626369376542768 1.0887393951475810996013339507454952 LT 1 -103536.5706508492330478661874439020358760 1.1100621397958536422733277863757958 0.0001145240916075047444308179340008 1.0001145306499920174714053943174916 GT 1 -1075266174847759644326832058570579.9834838371698095860119652288598862 1.6156519583661770392468434372611675 0.0585745069787261719418542483037501 1.0603600704781227829137750285737494 GT 1 -6950242261333412.7274480383095524012025360478694669 0.4800683484860721271898473100215904 0.0436518811642474810928944477042153 1.0446332911724122340714874582292106 GT 1 -19009807330636512994928592605914883964.0878275250797408766214096914740694 0.1123626882427742823602386133668648 0.0597060706173959930106040335148810 1.0615627617631196162916128782857825 GT 1 -5728859543061324114309836782020407287710338.0951008396188118893913542907939291 0.3208216478073235353084990040062184 0.0522958102166927770635754647802255 1.0537128615140645313138363055598951 GT 1 -113678649352818.8149206878762124235428749691534832 1.6386672183101313574339292227976039 0.0724818054950083526645197081989632 1.0752428679759799972598432576380956 GT 1 -2.0649751465955728412717484097262248 0.2470738044428923875989746834159978 0.0363674215261402795749130115755317 1.0370451996868885105309040783598363 GT 1 -32830456365126016406522465.3796453824451513939602043960995657 0.4001305576910709255697661924188423 0.0540849687419698130780861083479172 1.0556025329303651187637628940771586 GT 1 -1746268341340405518552888948083441189.4129635168762047175135856298450264 1.0680783758942525604766405261748479 0.0253073566564473150311443562054989 1.0256330952784618619151325874224562 GT 1 -6332143787515.6317493743505528604153405960495244 1.5588740470446508409781425332377833 0.0340442192108529315934351271553148 1.0346372213979460154071270873114850 GT 1 -2325.2215723526601024091310040580185263 0.4245259517838447924964385728741078 0.0887132623094453951864429703239938 1.0928976807621262424441189123105268 GT 1 -1331816955.6628140310863095138521060659335166 0.0559511135349584083348193546976669 0.0230785230362164827154291984931729 1.0233490017519396901796490339479457 GT 1 -1943695.8325883946412425552323700662099407 1.3815726363727264917263228457471995 0.0369358573291362145501123964263991 1.0376352622673148467227984284704234 GT 1 -324406.6064272379535382298962121840679611 0.4809443105278561883401550516018238 0.0662811887343368830135505866981752 1.0685799446826067879597278446838377 GT 1 -289005228942435.1180065273762537051187428716373158 0.0727034605279778943432467384350664 0.0560486559177011137408077440602384 1.0576806564506859480293784974099826 GT 1 -151173.6179570360550424696390090614287114 0.0347198711285370202358689299503141 0.0872972210517689217686471661417986 1.0913449947085653471859783709842113 GT 1 -12773460176.2618476116921653748396970614580736 3.7162803331055376065596099137872001 0.0598806885522476604357882775491896 1.0617484847005697739552487737441227 LT 1 -4125469263313934103748557797939.6403078653429023590053290290002409 0.1422063236836054809745144318330577 0.0574624903446718492411618849301277 1.0591795624091038284587238935300486 GT 1 -1789183824385125623984213383031615.1182160010689989206691312353765880 0.8742424000151070530220815720727750 0.0432655763555617542768428367924817 1.0442294352954614995554023905793530 GT 1 -1.3568372705209472831270912695299502 0.9730102079383198694990233250328276 0.0463658311944111559944714588401003 1.0474751519312806511744934669107785 GT 1 -182321967755846932845125.4975712912132267622702472794835051 0.8341634854958161814396839278642804 0.0368849978849700035952075361092332 1.0375824536338959818189505951512439 GT 1 -21520659274321909.7247691973146140579598043357550689 0.1283988903504289444105975517511837 0.0186858769249671633371903788147677 1.0188626636639083483325850243524478 GT 1 -31797875236411834327766852291912853378.0981037473186903552145042755676385 0.2826448376739727866359962604097547 0.0592847073506220114098292526010688 1.0611147434664662742421786634166655 GT 1 -3792920.4928802932863609270927765522428392 0.0777690202828844672851566554033900 0.0868822939251421241225653925850558 1.0908904843805529976973263461512753 GT 1 -264.8713401033382236367752739464150411 0.3268479948215905993598144408361988 0.0829113767959733713693481980813823 1.0865511666800665731178025568942439 GT 1 -2457608788641729447808030328462.1738430117982912401463627667253724 0.0397598567781373407889188257730689 0.0468915690377803833234783464648460 1.0480266032459533901040935716022241 GT 1 -123660809088056996980097135751763223.9767155573797066132626258912701402 0.4973623155142907947179902832373436 0.0889926193261104142702819589879084 1.0932042800273470710143235816564043 GT 1 -61245069428825797976808.2736190909452989557759025805094331 1.7316126572258268677347514906777911 0.0602332233045922769962195081555792 1.0621235444009428019862061057095554 GT 1 -309223228059002012274696791340978965714025.3465962100592509443772329507905906 0.9097155858803890562270421162453743 0.0770690619109500694240925913027357 1.0802008705841594212607572608372013 GT 1 -216081329209094162820.9814861431221596525789005076277343 0.7499597301562577927591294728583530 0.0002332861816643270218343105423884 1.0002333133971183466448501739679306 GT 1 -10088715464327562729971.1976537199763677641739724560467795 1.4761950054079768657253677493915450 0.0692940988541392401193783938055756 1.0718119472648973173349664263123312 GT 1 -886147548939230789214735537534785083564.3521728915654076650539060180418692 1.3216507029637931220639117192783027 0.0111026357076648700253648191524871 1.0111647300021544450220160784775444 GT 1 -2862401198636288589099307960515524886110698.0763515143002329364829978733221570 1.1580569513973510709759763473890381 0.0359319460535925689886638285322189 1.0365933914832373173876074412374519 GT 1 -6158843714165139487831088370231947983277535.2397565582096671746475813681501524 0.0184008283534746120770143090861262 0.0166428200227724490050370964328343 1.0167828677861285155047032522997466 GT 1 -4587287699464836283891292586157021932584219.8285339618417881931744945183602231 0.5392541608732158748918091879001863 0.0526693300877598708351487739670648 1.0541070704902141388061780511483253 GT 1 -5015314954523634420.5076868016658858660616850363368644 1.7768181134198727572607636888886831 0.0787866905665534940902325840742176 1.0820636632096184831594907073045330 GT 1 -1.3266199293081499110231325511143655 1.9170448394700101031463200595823551 0.0751146991267967598850858972242420 1.0780855482142268855965009964986402 GT 1 -924798812341165748242797256759848.4119392198902068607403847817779927 1.8659180005348834403991204030184629 0.0411968659361667570781281834974213 1.0420695076915040866368061280358924 GT 1 -280.3242176322565290408850735029536730 0.0003767940526943310523312504134003 0.0009086018207164487350485263618233 1.0009090148495555426245835716219409 GT 1 -1485817239217945741735452619355861658.0557080344844879034663115714753515 0.7224806906632855985603596720229312 0.0703150659091475194217863847193411 1.0729095307813997175710199725784023 GT 1 -1900482719258321005740306484645002855067.5955998236212173459216167244963500 0.6556926027973378780473593717948181 0.0924373019993521928901542779357102 1.0969926265236979351439109838990504 GT 1 -1998541402932744959774469918581255594.2716920266877836137734212728809163 2.1762354949256273819105197600150063 0.0169185733007181470547189873087988 1.0170633273731371916339204724352182 GT 1 -1014.6592095966306423012003907778689114 1.0141524098727947463015846685616877 0.0933789538205481848879911188348580 1.0980307263399719622191522060305174 GT 1 -4481547563661576241596379923593026213035039.7161012655033816464796359099671273 0.1045162576620314515196415562597713 0.0463568880018054087416544507009969 1.0474657739633303971154208636164383 GT 1 -113887574029793127383967781938070286457.8405108173990171734539907846825250 1.5444876013266248154411483288366175 0.0634322231472933680073552161796459 1.0655333872098629467710046890010336 GT 1 -82178559925733542794.0642842542354422412677899573029988 0.0612364899429622824166370626832172 0.0862418568475099661105715365608346 1.0901893561630678650750795317233817 GT 1 -389983304992051347844943257.8806583590951504242012153910345723 0.3010610390176088971440944033624196 0.0123502095919729610599805729233436 1.0124271072209510649422893484631798 GT 1 -38989383168239030374396885690.4635495199255450337253086464310911 0.8167923702357535162433335129980749 0.0522471618842881482003939785749162 1.0536615300075209784121337216406346 GT 1 -8126004386768098045393038755435451.3282940941424426531590346985134916 3.3505886729671762665070744858214394 0.0459532497788827863799940820871121 1.0470426043098769505649665481986743 LT 1 -136651.2633197264158218954668614241406098 0.9063105569104952234072154496827494 0.0465983573947591789618691900401824 1.0477190133208875187843308638177171 GT 1 -894479165070263046506.2084739224910360140034706980700474 1.1607363546604697482692393954841096 0.0303698181918892718948847224180536 1.0308405360491319424633427027170481 GT 1 -2302.4425910954723611770543094993152038 0.3473069561049201214814854402742282 0.0136288401739271371054001120907890 1.0137225653675530885534209833793442 GT 1 -156114548906713988742126.3941164676793046810723433142960231 0.1717987134080936017073974807043481 0.0969720352431779022571494866896711 1.1020017573217245730050180980045922 GT 1 -552113819197522749815909843.2665242495528657653332717146758019 0.1518133478070755776754915079686640 0.0507557629005138103540122990116038 1.0520891508926190010801829066835999 GT 1 -4438221644310156363198113599719215105360395.3451752663339068298340571001749887 0.0040080173964331296743905337256906 0.0002221528670149940347274951630331 1.0002221775466183196231189085371961 GT 1 -6999460321146693673872770355419677332.4286590054546310145260767729265568 0.5560630711478455130822534330940704 0.0651312419805457157432508176185309 1.0673491253002388842108527626388306 GT 1 -147829357757.8641294768189655628929399372609220 1.2682218349720190285983509958440864 0.0098897633493546349326411240054071 1.0099389919003024331539461656560632 GT 1 -2.3065898332733748473352102365960159 1.9490181152282568064538443615377484 0.0062178153124751327947910778750051 1.0062372264311031580242167955412688 GT 1 -184071464270177331210704.7046781826333588364740746427911911 0.8389776184052117568539285554648230 0.0276711924648005390461187630679972 1.0280612523680584798208917684460815 GT 1 -8294988548019154467905144379003444193.6490164013083519260455187105473706 0.0195557421014880771265636694275444 0.0492713178525235315364564975401543 1.0505265545682177363946046914297751 GT 1 -5237455681270.2187474112222924986912410686391296 0.0422383011586892379248119943136102 0.0150203284517576743000854385926721 1.0151342760451040881372238769767576 GT 1 -1675107590023528165491.7047476101498062098077853616208663 0.2644974949927576481074538836292013 0.0384829747197737063892897500665983 1.0392430071103543651532439435329057 GT 1 -6923017170092754886060293.8269798029015651275936662693699139 1.0522316200392613002487443371561468 0.0888838888505536547741755164215936 1.0930849352341168247889903225118686 GT 1 -4.0615326977479778628058205347602918 1.1712052257706118636687209769026615 0.0314666361126039017272703125433617 1.0319723476965397778200601000678715 GT 1 -17.0960699615034208318499822188319532 0.1653911471652105781092001204352071 0.0171638054277724076868160723934380 1.0173128109991780732821521060418507 GT 1 -136823591705418.9935804213584207312015330577817000 1.0897662738642672750673664570643660 0.0059332175163970530049194901389693 1.0059508889852281027550098201387974 GT 1 -891343084652522478502042434398129347.5887000755465991596645072205379546 0.0091713087080147927970775556580482 0.0887453569430756764522534414296442 1.0929329004108789482638665681355429 GT 1 -478858255461.7426294537208810778162781255928409 1.4437655691734804943107609554188701 0.0175771374219438473941619443699105 1.0177334496918349731436597616130865 GT 1 -10051054400924868004577031.0818420213545509370008358513582043 1.5141330719066784358655966606466969 0.0997131534589516764066495336154954 1.1050418480587968828030808656718773 GT 1 -387888703195347432263428605655790121157.4175963527896697091939230147344188 0.5969538320303597397391361739162564 0.0839633810968854616056828211709640 1.0876989381385988394957017203063981 GT 1 -8994711392737855.7226885937169180184408205787677439 1.8623445350835140596028108888421090 0.0039309175398336092447880935048493 1.0039386639030599938700066842963418 GT 1 -10824267739516062317809952.4817404033295714127982100668436882 0.0381620019072492866713033814337707 0.0043262648965940175922616734302818 1.0043356502593970944904807453941489 GT 1 -2182083577405126274452994311616123057099.7901878700939015351616027397340419 0.4112640571918252048852237370999968 0.0173861499715122774197444987052374 1.0175390640604544614952561757358732 GT 1 -573355695261889267519389363067239.4723527337320857908046522139728087 2.8316424381360106598567046971751789 0.0205830226284518378496406297193865 1.0207978054027059763379926634035936 GT 1 -6.9172175303313331941064653431840728 1.0738746144804786130811753728765922 0.0862002368230830401806438420693737 1.0901438090159268875732268907802100 GT 1 -77231.4821655793610561643027298107695060 0.6653159459533961195576285349026034 0.0711416758026325096290192879304481 1.0737990553531884717191547657131640 GT 1 -2536560657858122396313574.7151445216131650740511250026157625 0.7178061095852790465524132754537878 0.0771517939607454475786732212196663 1.0802905151660845827157563035374378 GT 1 -39266916171596856803650841560.6617704266633874873401077760472839 1.3038652277345993748829664511289655 0.0820173349237532710968321478720344 1.0855767718991478165277745264767868 GT 1 -15971959726719573393775532388234399457354.9643144276531261728402280147233889 0.1096206285224672960130613054246553 0.0944567878522291835840838548908193 1.0992202809334105575277681904137392 GT 1 -6209196894819868345539426.8015425343150062640348003217618140 0.3814824053838567525450152418500610 0.0905431186705824937016978161634646 1.0949076913513110853292027765487973 GT 1 -27897058896.1290158305031039383582187404980366 0.1245497239989469070443678614589395 0.0906316013487785598341500720273872 1.0950049878637796283303838128939440 GT 1 -42554058747017933665143219.7981824609925206036617487086115521 0.5256609218504031022658563776610557 0.0475372924395688790914223103482389 1.0487043249152735216214076224354819 GT 1 -180680357792962332224.4750239544483602816774848140552473 0.3543126054215587976609604683324980 0.0978596712652073388312332340093923 1.1029851959260581512818173657213881 GT 1 -2013840.1829231294667454246955915498449017 1.2773947109494690410610477331592314 0.0424992931174872009805620603139274 1.0434288196691095027401349399406410 GT 1 -85054420631672689.9553834015797974600810576100775831 0.4051576474838272074030235082465311 0.0576975530774900696974575031264469 1.0594289870175078885664496411424815 GT 1 -4770073882858101328711700074565933124207.3727294971714944957405675466478837 2.3718843799766335174085594776837520 0.0369048734648283505410409988909924 1.0376030906138011598891118906184005 GT 1 -10403681332328480611027736431361736659.0821695193237276514943348781549170 0.0333570298198695179065999170261540 0.0556703163065588193357587057191741 1.0572799326064700758639940071892945 GT 1 -14520513958659560.9608102074220179098336399301252886 0.2780997891889969163597674285308091 0.0661726056476922889242814693841131 1.0684636604520583724776722801413812 GT 1 -3016387.9686643618762228727586470475181550 0.4183979555830685958563081330117837 0.0938468915081512840340026628616817 1.0985469932966589022652189305714838 GT 1 -3288934240812124634749420167435941.4377428978867022661951546561568312 0.5912259381803271829155293474602661 0.0476493925929612942694514443391318 1.0488220268996527592993274747404769 GT 1 -1984276793426049210510605498681.2516437383018700546765761732330859 0.5339338466230074147282404857617551 0.0859707104442456710963120263877153 1.0898926625756176498199641781714489 GT 1 -10517401883681856723459769582.5754268167911285423043002745640795 0.6702035458945099088097437308658675 0.0403277092264805375834836187747068 1.0411634165757163609661088743459719 GT 1 -274195300150905790751291728954858686222823.7448381198215803036143090966690168 0.1608864739057590194657173305027036 0.0761169530390704938626518875083732 1.0791697879045410750994642732504369 GT 1 -20916554920579537166864.9374754976770299776584542208495903 2.1185013230541228993645553865191853 0.0363347742422547542479121070703868 1.0370113208708415383542811600104542 GT 1 -131513887014632.2932655576853319385305670923517038 0.1872505267294326733914963681356174 0.0529782329189221706095684492128393 1.0544332007581282953048473052386039 GT 1 -17610.8622451565509056485325708978799814 0.5158283686100462495876217908095563 0.0743761067459786104173533149042660 1.0772872896350396730659313892848522 GT 1 -2253747507727012.2757386157076530826261440202616079 0.7881837242979323242929282483348493 0.0544119976123710657074488085686545 1.0559483202411361520089804144416283 GT 1 -4079926108825906728608233322021342.4850247151640180721932545468917803 1.4266817294340473373589697163932473 0.0301695304738843392136420504760253 1.0306339964438255424615256496978236 GT 1 -162269705.5261631710328367476452754649363365 0.1051105668377132983932316840305786 0.0890471961886003841798929871987734 1.0932641900769420484015798098993480 GT 1 -16763937283110850399824304.6894030830853291936825278399423332 0.2608574519082297026133789577656291 0.0094347001081031576150377211855302 1.0094794888258586624311846240069193 GT 1 -7.2301953375152152839502452083423251 0.2649323403171724841333509175937131 0.0138081195818636119323141881332205 1.0139043384260282357409288108578676 GT 1 -327503601463427780013272.4503718582787721590340870631422322 0.8258388596356266793140346715481906 0.0283325238484739898402516821581382 1.0287416357769519420713787432655181 GT 1 -1752422103041100365131582901604.4288506667430092996823541536587246 0.2729717022171108272058237122835360 0.0559201853972243126600391521585237 1.0575445670433855397811044620470833 GT 1 -383191637338623096782947864376.9049094203419679001862593683750226 3.9427007723030057969964871817150754 0.0355162571276974905419359582520926 1.0361623022762807279209814403766594 LT 1 -91513145147041357923942.8904085779315465361705872741577288 1.1186721322303549430498120142886728 0.0825088990503720284836282749110529 1.0861123983379123244293082046507167 GT 1 -797391212092465.8143928366722638230175485971056945 0.2701462776246438529856821635703093 0.0289561298284480727327635170736782 1.0293836313081697556943315092013043 GT 1 -10487815796438.6360061193110175739534010930936707 0.7760432044632695897204299528206526 0.0164739216755360903151001698470955 1.0166111256688080017298178165637735 GT 1 -588791143274.6984042717818237432355572828596331 0.9600171069112835146900561297934827 0.0074937396727957231003240572631248 1.0075219588062218688868811831548997 GT 1 -1183224888688.4708925525262335202212528711113097 3.3854121829857455682466699949226329 0.0964488777577805592229210464017827 1.1014225881020805678607818402909712 LT 1 -205928187217747423735131118855.7748856242116863778263764689724366 0.0863500896373980636555553773564892 0.0328759092858985866128912680574901 1.0334284663077632208693357952491637 GT 1 -42473686.6178709785462457726398649070072552 1.9458671385910330100601922129978900 0.0763547478969616205835562085049445 1.0794272073544349919421052156553707 GT 1 -1158169.0324397161492384910573806539623905 1.5545437556973355066148944899273946 0.0356641859949427704322088206817242 1.0363156902559990643067614505337920 GT 1 -2810880647.5098522323815531283733007449270092 0.8440683180477975691775245736260525 0.0069060783661198025435515904587532 1.0069300356898028307205412261740570 GT 1 -2768407122797796941553674.3792047819691298230071498078744236 1.8605047607335625187395061076852065 0.0482320056481262224847893202660973 1.0494339773031710232879946559049258 GT 1 -512145614093.3395581060648020925727234542946676 0.0975412447225962686599580892080031 0.0716310410225919256436901692500718 1.0743260401069856924040988402461745 GT 1 -22889199712453.4071814551149478762990724653683398 2.3368816370571465367413784739033812 0.0295832010155238628353097775467340 1.0300296101001626820656875770425608 GT 1 -238362056.7640664543984107978932626273549982 3.0738425281218397372480782173374358 0.0639826033256799361687954772523972 1.0661212164867532149922622875400891 LT 1 -92434680791076219327975.4381360091262552197552309725637649 0.5222025038519102952356531093406940 0.0183701157603384307378890764805692 1.0185409416319240871758953226164206 GT 1 -44772587072748367035307446979217647641.9944996115687557564893350494762398 3.2111428126386823464105349953393265 0.0113434791504107809329047309815279 1.0114083071261420349319737161109994 GT 1 -32336063830315260126696658297993208.8481105854661629754264861170133776 0.2558612596038643902145646688431852 0.0645968246169932156747190472341867 1.0667776390168242829347887501095690 GT 1 -940716027938499.8688329000356735113097782282608732 1.6184066560374054894703555874590816 0.0624501110198191884905536608947492 1.0644853076412415161085224373051953 GT 1 -737670436788712.1144762722022122241943948246733736 0.5299675347373459013825104385731009 0.0309422227175248160269050159324732 1.0314310431904019697662671539180543 GT 1 -350762542046663611635991533.9422666929930377964363031947132163 0.0596961825636567960422179946364546 0.0474668793428657086962873308164843 1.0486304002423768677717177335412579 GT 1 -1768619796144770857388788182940020388269.8109732769523330217683700445625625 0.4855154225342957658474385708388406 0.0232683996717906254440844969778513 1.0235433828714731479814895283714030 GT 1 -64397926408275855424771478665788.2095947847459922675828501126641474 0.2773308046002924681792851962559217 0.0802118521548107824989824731752688 1.0836119095375142752335897250133004 GT 1 -26790111181732056032121812992912290709.5618019831360928332974173739006145 0.1047341388786711773511491196450855 0.0333550165364974148126884018662696 1.0339239828270826556464254351484093 GT 1 -15493691254343665.5420512299980956922372619162381018 1.1745578258860377216842373319016663 0.0175932865598838857987426473958027 1.0177498878991355056447239377342370 GT 1 -6457040523730978008006598787527107027254.1272810263874584422913615448904538 0.5608050771000344076787228985167378 0.0627891421748770092790420730559785 1.0648469870281513676051576181989129 GT 1 -458439724664361671824.6218670839303410930999891853694098 0.5088405228951124961502976863532819 0.0739890024558798066484059337661783 1.0768691680089435136390379645097937 GT 1 -15317768602027598696344773844.7024006948822045240543857940916012 0.4845335682904151119375035060092305 0.0302537420623448027519860650258466 1.0307208314602711104409452621079531 GT 1 -46388068645516560926992335089429079508.7552113863449290540872835408808138 2.3074444897539059151571030266936505 0.0997533932511103982321863956223799 1.1108015517114941071309983360398645 LT 3 -184854251310769470586353618710622805.3132395350682417154178379332872005 1.3888045783398573847437320884844317 0.0972995306089073594140602959935903 1.1023644866924616295500660143756394 GT 1 -9697129144644928652518047242403848201462.9389094705897980584614600070749005 0.1033179165920683227308547337904935 0.0094542005945062281548131092884167 1.0094991752396197243541789620147281 GT 1 -4172.4618231779280493832488569896182388 0.0332541692412042260639600124413596 0.0393797188312877458858763302481674 1.0401760769525197644080802494764226 GT 1 -28793540670584054539284601823409.6433254141991906134963380855589399 0.3550543005745880329923592687004734 0.0177260634558497245329137933499275 1.0178850517448923687109768429222792 GT 1 -658183090309472667059779119389425338709.1583487236439222913372626493599671 2.4950681130288893579099826282742780 0.0487322022619308557300905506562575 1.0499596601383573292978496775965530 GT 1 -168235751067728944.2822522928375482826923911862203079 1.1478405829948215596218584171409828 0.0719278598035876627771149703469883 1.0746458119367055520668154889069932 GT 1 -125166576301505538216633837452862352.2786226975605249750612273009003339 0.0768685132250258881590719986729641 0.0360110839620472944329505989463596 1.0366754823236338117920907265542281 GT 1 -2701923213327972.1393294239649599386239665371906432 2.4163016612720338475909138243478577 0.0587894591290455824542757943743615 1.0605884227962382112872432523831202 GT 1 -27.6857386752320400419202340401974986 2.7613439591598325001338168940540362 0.0402784998404457664653333562092046 1.0411121406090251997236950978968518 GT 1 -39931239530689.9566609427992475093665954406990036 0.1231138251398940569070765579731015 0.0357537660129326640153489022818270 1.0364085875409733581712660003969569 GT 1 -22773.6791162128568483507428508447496598 0.2039552422811195237782068807926085 0.0444877241285139235556168390940992 1.0455076677951331596455341717458185 GT 1 -2745821840267287.4878131745669420222553585868845277 2.3764715695373869873227473405286497 0.0996170896188446770403134504523434 1.1104408430289951890751873668493002 LT 2 -1.7197834157497306740113027960625811 0.9502706679242515095865640291421620 0.0880317785253276709478099171949732 1.0921501343891651941149333463807776 GT 1 -2140.6674353671760674842639932168131270 1.1309979856313646675441010857732560 0.0922043427678635589799564547404936 1.0967359728089138528467186908251302 GT 1 -189640.7946385533981517677957656155396026 1.7429538726127271853023033053332005 0.0477692466357205330205361881443644 1.0489478855743054521104385251103545 GT 1 -3040022378.4446442089213976164095512208812145 0.6655030526804988690268797908522976 0.0916753363858873067265475726305811 1.0961534052434662566194104359098569 GT 1 -4631.8259211062626179278602631594050986 0.9859374503730710220343937349345621 0.0866706734580424831417866544625314 1.0906587552756104713069980812866195 GT 1 -19330334.6252253018613932365990037763835255 1.5017144933004328986132391973598607 0.0779179570511114451303015776881032 1.0811210757087715238711294742981404 GT 1 -3231703795808971900461086298761.4614549435091829103803353528636528 0.2264976575897175727057405815628389 0.0355291220469388085924649229669245 1.0361756410237065270180782282667247 GT 1 -13990882777.3046477838992164897305703749590221 0.9870354183962662495603848941832637 0.0133057593631435443184950497738991 1.0133950741312308271544180002910726 GT 1 -2.5835098287533056207585004962462246 0.7772706872312728318940305522183859 0.0089810435571515468499568476005476 1.0090216162348476934058961962675897 GT 1 -1634193849253826251550619.1329493049044873502898731462185358 1.7685143763981823739349907830554795 0.0098902504174910801923375602528024 1.0099394838336632026188125253562556 GT 1 -48530019871657662147210256979709881503563.0481080638574737011652226650165222 3.6013583283944880356793862205601956 0.0575889851168367010578858390292851 1.0593137780343137642389547021477315 LT 1 -17624259263964992173767.7264579017772483681246990234212587 0.5144660405112541750776164202697113 0.0467376284713132451091328124223555 1.0478651020662242482477300972647025 GT 1 -8535198266242318774408.9206044529043829333958348272291261 1.2571176277672414310529100547543547 0.0680860796758253472598524287882798 1.0705148287292033298924644295821278 GT 1 -37390560353765484576010.3699179875896362359164557981703320 1.4756584099525810269815722708497530 0.0642591191745738802464465750209222 1.0664166775558768383558763593296149 GT 1 -1.4977511012572388259859703945917716 0.4893470449731867740006161712447793 0.0219398798000943004638985821595191 1.0221841382396417891048758570766055 GT 1 -548702.7616891373284445346969079836685370 1.2879464790894364718198972620101149 0.0092367204347227813221458406454471 1.0092796434533222917893938922329096 GT 1 -326602125163272077717777.2533409046966126151650960065147845 0.5783116491148280329857053773450650 0.0346980928835731218349947285697880 1.0353143694572651616678275022174127 GT 1 -17182177754139405243693120120054949840215.8867863856839232736388424128611121 0.4021050936842321184227194104258655 0.0128443178858120011130180861231625 1.0129275193486517907642608092628301 GT 1 -4726465140.3899496314652841232582257219595954 0.5929348761671047946318674165206395 0.0560396091492857323273983452706394 1.0576710725615156509266494974279433 GT 1 -156389208553925738.7787676624353766737115839682717186 0.2351454244532105453596664735946768 0.0167743043100381377602945518946758 1.0169165863179925739919091648319372 GT 1 -165400.2853153999662989190431679489646864 1.7184813064822766092674934374502181 0.0283058229623031970618944264540453 1.0287141567062101123244761479648849 GT 1 -2526325665762892.9267707516423074854104156179207737 0.3538560914677384661840029796317549 0.0798934021365262482906703559887271 1.0832657484082353266090587381345362 GT 1 -93742852713769154663226710730854.5245994231203868499782946515935331 0.6000708715421032132927621134356921 0.0025753496202733996372654544498866 1.0025786715377316685716511763819747 GT 1 -1135506569.6102061461583400930174576148563064 1.6402620616985283768553757613123538 0.0186505227559042478726221384985670 1.0188266369407745511735407279836930 GT 1 -2.4248464974053234305132403735034388 0.4024714808769138393703006882877950 0.0764399632563173512666146743852013 1.0795194714464995881868231512339909 GT 1 -147446201727713753.8594264268493311271758303055311506 1.3539268113576750694842036984094797 0.0831136935201005822264494182870027 1.0867717986218377556744574971023110 GT 1 -18219224363514771566119890.2953004775136393473327820732159258 1.5108314306266975480285283274630602 0.0005109231825917933272357216826470 1.0005110537483156456634885512478688 GT 1 -67074.3510901327173759397645951002530471 1.1255612121186527625404691121378577 0.0296396721923049704712010783127093 1.0300878044966417703339489083250842 GT 1 -14956341228653775.2081561149851854418232550618412800 0.4392467141202345302670854993253651 0.0131012734728715774451869118567965 1.0131878521818158535121747692119435 GT 1 -1248130537825569193988298859560.7891025436804279293160324128129003 0.2913412376402356397882394328358940 0.0569184880411947354420963354448664 1.0586025611036075053366314672368519 GT 1 -256107233191495445759129617816335665586321.6799766661295812107333717830563883 0.9415276647491608202856769188358660 0.0180918201778744060106198890888501 1.0182574782354959106933315407248511 GT 1 -16823110771588582144486.5843991674160887789532733627216242 0.1449021257239286508024681039695519 0.0140363441055583537912917111595819 1.0141357852064786760009157841164873 GT 1 -4500700702410024084.1769932491170726616177477451911631 0.9043529315291434001473857480793453 0.0223169188479897262009241783496069 1.0225697093640162378957212127849462 GT 1 -830069783468373456913089427959485114.9091299581903507291294096892013348 0.2650114448905458695626225944292125 0.0430272227417020320491239410411679 1.0439803338498696106978157779913328 GT 1 -5901056577102.3139102598795282816744891937323582 0.1860454859255566588672002729255309 0.0806062347200947827433123000682310 1.0840407769252526448667828495658342 GT 1 -9134242942967956.9872902982484906244187188173429801 0.4048249244437321513178371954248323 0.0671051670076618114127565654756119 1.0694628036817143446902766542441660 GT 1 -367528735231.4908118329086711604993653105431185 0.3686140706797901026983500269977458 0.0606542953928222991197745341788607 1.0625717050081096063896323671792483 GT 1 -34980022810039026.3920536640328045028409664562488857 0.2916285452911431502749382750919174 0.0621436798276011375462582503647503 1.0641585184971621368437548573390450 GT 1 -224818.3864127286382421430328860593655668 0.7143256943880339029764066901355075 0.0732274799302579509916434292825927 1.0760471371982583474657965216411863 GT 1 -46815.7904501688864156443343880241508852 0.3441406633928208716423927177947062 0.0914055225338967419799456186562154 1.0958564037447495816940100390381761 GT 1 -27402219520634376692472031.3815338738135814584041224235309738 0.4209343565680252246757330953195981 0.0948030494692216895184377065344597 1.0996027340631858955594539933062214 GT 1 -2765246148807224791732429189847478387919.5606484821151525352586603970679704 0.6937972638426126567225964797918307 0.0161870109680123860331477294603797 1.0163194517887754393233446567136265 GT 1 -105569618425329981740.5709540735336335723747665177219827 0.7255551236125804073119886973735437 0.0937508294126537059945245195816603 1.0984409880276340385201149721666594 GT 1 -55021325913059699387424097385081318503575.9246233998569112560888905134305798 0.4904332559146549613897683320786633 0.0780619665076922976509166143259457 1.0812772664777479056985409641840469 GT 1 -750164319003254250852252725.6479194860816920266635218204764695 0.2903497803743541020757942206123231 0.0860767022161508206060391411096560 1.0900086303230942904794605983732108 GT 1 -1346621365252.7406843410032456061633968355578877 3.4615957944710035347253586864807936 0.0510276563486481324137668004500913 1.0523756234192536807937175388377206 LT 1 -106797058159186980864312541635302300777106.2129014001926040119505145735777277 0.5802742709774181400073125090502121 0.0412681510001574296702061021505973 1.0421438584226804411479333793543264 GT 1 -11.4343648887817503916291925041159210 0.7715527364168168290872117265033220 0.0436051584845524629304572971447048 1.0445844370601004237850109381504263 GT 1 -116632862.2381080077685074005402939121858720 0.2054186217568209535596467913956329 0.0454820549603794267522530940524985 1.0465488355324843726280141224089577 GT 1 -1018631823689054996235602408593.3455711591507178203053169661023131 0.3125633362865026305215620229847751 0.0022521119981226712191007502487535 1.0022546518163686715675884278039149 GT 1 -1490982122984227092036702255006945428075.2421467466104650747988754463460300 0.6561907472726738474568715306911417 0.0199578001912907940082463833303010 1.0201596472153238477530767944118222 GT 1 -35108922692257487.0836976224559102857688541280389991 3.0935415184244457015471164718797403 0.0709929403940323039099028912091944 1.0736389410518891200313454814055541 LT 1 -5027625266295579763841122.1421736626697782796167068244254458 1.2514463326096522758729286364574514 0.0089139471972203386916343542231388 1.0089539141104457446959094232423249 GT 1 -62070350552314584199896423190065835.7880147339489025398426790027744533 1.5055631983966393683899950988172641 0.0725633100851278307534254687534210 1.0753307456821781403459517280833461 GT 1 -169197580451.6196887363446197585144497631333679 0.3980520465935874578245749311627534 0.0003581432376623979963443533481528 1.0003582073862684564975748673524502 GT 1 -54110436181498435035287218544006.6724234110424243759879302875925661 1.7297289496937912518249938828151757 0.0578395082172288950543265745759081 1.0595796454752484937920721980147255 GT 1 -4141414555216412986774.3105302502035881359021913947005448 1.6272984971395666761541862581214988 0.0819015015431642799830051965256355 1.0854505973235971681713578389719102 GT 1 -7157742287613902151.6179179268522229911856203710140241 0.3281517003816736128175454449637381 0.0004317592972759875894599975064530 1.0004318525321590305777034657696736 GT 1 -11014109412237643829458812804773002911258.2496199123603204794278404143122277 1.0971936179529613985188680950158139 0.0913293745775906902749727906242995 1.0957725987388320816434932493846801 GT 1 -1379528603055760341.5279884928699419377831445375325975 0.2587833438223384274209808908077411 0.0326002691857182549950104701805988 1.0331434968501859040740955577299318 GT 1 -1.6161739840739361681037460323344295 0.2426321325559871797055285007571293 0.0402179465347737942987202965330320 1.0410490479353203653732819648971130 GT 1 -64811151466229757022087613966.9842893897460920534200609072579667 0.5551025053506876126526242045754852 0.0413411740880249880845874018742664 1.0422200276550213900904120597540432 GT 1 -12906214892348287784.4442647454506981186342468442703245 0.2330602543999531284976886683933187 0.0572885683921138222480933568801895 1.0589950541998750818089302021804242 GT 1 -38523054760826738457789386471.1480024271245845705379549895182311 0.6250129559220790042484637150115314 0.0371627352653862962452773178529596 1.0378708692785846890465375852111474 GT 1 -568032602664439397713782907894115089692.3410411891603690943620684602049456 1.2668340400629968464200618753223569 0.0468575334395678790986245408792828 1.0479908937826709298930701907082971 GT 1 -478714236786808996979.4824002814718290852218923219705208 1.8658566401825665849828545688763267 0.0856059824877593697052684600869572 1.0894937090511093720323246150038037 GT 1 -24379514515196.4331326634271276738123113890020688 1.4511099758502409381088852582116216 0.0101469358556149701658822724324346 1.0101987669250246621887799275680401 GT 1 -13.3631075170851267708657168983464173 0.0580297730288398116831355085998544 0.0731562224138844934921238917760623 1.0759702523364898423304782765602574 GT 1 -3393.4101715062288757804481913606604718 0.6768923600904302804838258618615935 0.0036103066720951011330185575097885 1.0036168395577820233384747888560527 GT 1 -227396423.9633587026327695920607343615414030 0.6833852581320208170836379037023026 0.0828183063643688465380045620473397 1.0864496871643921871455847376667078 GT 1 -10790354536275889470.2195388010760709940356516194994972 0.2977293947801141925751157883267455 0.0448029095630715280445785399168738 1.0458375823734296858415368634217160 GT 1 -16381373564991877095559615821299478838329.3504588120425668124004779118744380 0.5424304646902838866626563850577966 0.0932945886797145507021796768695630 1.0979376761993912850419526613255878 GT 1 -8340046726.6351884045819399551305282961415319 1.0177478629409161352072985645324616 0.0815632831977861613990773777543358 1.0850822751194906651147460246143124 GT 1 -159277730617091381818535125430078.7447115474410202330376893650798731 0.2573807512679089609441668946836213 0.0606464459477851790265616445746879 1.0625633487531092536482901729793574 GT 1 -17629222711179135005014932196641619643745616.9047883438589498520208380343440220 0.0885832577092724589975114025022551 0.0710284698759577198131556527555740 1.0736771863601247866086704219637037 GT 1 -2845525325833425372125470.1529751108663092665493252117261401 0.6345418343542261600888394654058691 0.0254528223543808760401361487623921 1.0257823490507655524559049319716219 GT 1 -390764237707012818211850950047423518.2408658925030522680788465181379706 0.3543910349372803908761284832449142 0.0771869913193411087491405327903211 1.0803286558154293427058663981140998 GT 1 -4096.0527068584955334909501094182397243 1.5378772461405436582663592498220464 0.0935293623874639209538513856353384 1.0981966402522195705185644654252912 GT 1 -15933227741886367009073951473818816139024.9406219315359206710709116656683068 0.3916579386902498155412659931137625 0.0077701601130455881668621723132108 1.0078005050996129971094237153448379 GT 1 -22754842812194233946390548470.7911779790474635717145855686145396 0.9793753536413472628774778431975826 0.0421938151643335885935556986884370 1.0431098337592641885347426205693115 GT 1 -23749365778900143974044589623498939657.0854923569457128491019109178534364 0.7025881871266248927849436640367288 0.0797895872850871106077555857654471 1.0831529256163440192128242297561338 GT 1 -102761388180707644097178215957886487.8797342914747992819116188339197605 0.0396727041728392142476915492095873 0.0433732923533618224995096138147954 1.0443420287794121016337924399487167 GT 1 -274891.2898071518442311358026161322221283 1.4486132075570779713948320725549161 0.0651065718495261456892198842042305 1.0673227367774593786321709372705312 GT 1 -191892828603511153108933119.6961950639857017316071129575294934 0.4483590149615765291752920400494577 0.0150878184462555816982203858929308 1.0152027975676618240359377492573443 GT 1 -166269857.0232341127615568470646347357238026 2.3992182999097941005757672882066494 0.0816229329600330442428100062635027 1.0851472242861319111038216531908223 GT 1 -15895371682252384078931429023.3236540229147592579447969571609870 0.0559723731650176472417404263310966 0.0745463310698998753964218273438787 1.0774712088050178902647748681605708 GT 1 -3095476691.2799729837872529051743071179510332 0.2444828236582513956947985768065189 0.0776691492005684300898155416046227 1.0808512794468872327800701690964254 GT 1 -7247644501274421750.8072669712110669941992977223351073 0.8832980981368007362489726567186607 0.0180514937667219356941745589296934 1.0182164096468921895194921128659772 GT 1 -43080138.4369323721091771849420788639043286 0.5121968984049461308366252384122648 0.0969667961327870734582052956231737 1.1019959556241056214156015830988135 GT 1 -1362352.0998685217186810954484378701472458 3.7987591650475826217548896797076474 0.0363717863571270661075244898692536 1.0370497292565291610330060628210431 LT 1 -832359614315860869531330.2816379632426221212837900075024087 0.4678266329705098153390097751362933 0.0509863301037535432176589189479094 1.0523320759488233001267794889617214 GT 1 -55900024327048104672055839272.9416156580769636978229191934601145 0.0041081973510242695405948043389386 0.0332559944377664423083622846054375 1.0338215491219362794553455739937987 GT 1 -14655.7287585696859523074241461159562570 0.3266695145249127067985567863348547 0.0050859567363507332641385931247085 1.0050989342350106774186590034364674 GT 1 -4562693.9730695674176046338213793120788605 0.5600105540767074110591075283737047 0.0583090818133146484944801866798387 1.0600781705747610085389089247674677 GT 1 -13538021486979773517265479548179364725.1235427046371950598217805115802300 0.3482226541184350001181374590532007 0.0250579908061817564656436333048129 1.0253772875030913897491373085620756 GT 1 -1148993007700937663484307.3437055877046562773961321085736649 1.1473333531144607782837301593978648 0.0929234163782337047248727241370991 1.0975283962443612285939673794922811 GT 1 -1628089095.1290501744602585009544020170524203 0.2480809877246142126246137980281931 0.0653042013429666190135059650696485 1.0675341516608389236869464431660943 GT 1 -339317498155781841.1552695030163057405592821478988439 0.6759990476278827026249547154317922 0.0375938355336926141224806329575940 1.0383187090363761347842055174846084 GT 1 -21428843507405115142201324006873791652869.5795255086720944472310353689895349 0.5181583170888869525834084960630905 0.0095621220137719277872636489902056 1.0096081326435641757723120428725961 GT 1 -240521004629435201066318231878.7529629340999020383092597921402781 1.0622772525207976570958411760179633 0.0069799696711715926210114615485157 1.0070044436108718724875144758443465 GT 1 -3400250397750941169713602341298587.8364069373239209519687803276240166 0.0558624789819377838520940069213974 0.0972624363350984492987968009248348 1.1023233949760637627614456399609917 GT 1 -4687394472369370214345.0588116355199050812330906475325549 1.8769985330480779427152509321203082 0.0588157408246687004455335535144593 1.0606163464768860535789820014541351 GT 1 -12173020946165106.9149413031634427698785172278085863 0.8919869771648177116062551686082633 0.0366335234060156796999336396486430 1.0373213823667575289916928332833513 GT 1 -459375.9660695950019687348994449976657399 0.6128416437641949373209975711892090 0.0627889653566988961772801942703667 1.0648467983639250015220926327204541 GT 1 -8966955491503591529987195711527.2598117227542434147885453632325622 2.3921269644280815357714842672851404 0.0838804544449619813899176409758725 1.0876084145756091815256127059529840 GT 1 -992158009735986061.1582660541243494333278370894246248 0.3260078073583455183237786485712117 0.0141881811191764660387589876626668 1.0142897956563099776909677171905776 GT 1 -51715921588683738347960676670041992971437.4696160068278454769919995503793942 0.9106271359879221525574315060691039 0.0410536785092783000104967781345141 1.0419201790847459843002471372622833 GT 1 -79844589310693996919952037557980830.6331259055469007825425519436806682 0.4970966215603339645262385903204727 0.0456265091046612885772395718047759 1.0467001842596442841867199701769857 GT 1 -158970440569930153892684958965043023789.3606566275584772078752572980458098 0.5388304935884406108053254376957250 0.0012975296237789251444255396064071 1.0012983721442168925522557860896451 GT 1 -5521320408834701917.7810641004443009900451180760351699 0.7630601908243449570584604673198073 0.0332267368416834480505788135372864 1.0337912855224758125852037486264337 GT 1 -150605862006627.3434832589376795846626673585860750 0.0263989768884815468275422011938218 0.0274216996980846710689555687662686 1.0278046922813797337021864615405335 GT 1 -30145868338.5021997564014854775285590836582271 0.5020791606529641713057449644453244 0.0784356974039043998368586299984922 1.0816827239529199487010194690130533 GT 1 -139781281279199562.7344781200394639935785928967785688 0.8239740828447028274493772694076358 0.0702835701494990456456385845742677 1.0728756534698495907268560272483498 GT 1 -35035788816575064739774610.3791210822477947750411514304666709 0.8264733227103317642305906035026011 0.0491407867201613826026032089932639 1.0503892681110615365417282540080961 GT 1 -151749701280976418779.8317081472135853799131009845056925 0.8974878180260855161546658451919671 0.0244253287693895514202284089192054 1.0247285752256436073342302079495603 GT 1 -14792548.7494813818199828642300117974037734 0.6971299564961464481731867800103351 0.0375891645061040456434437213926119 1.0383138555593041074440009931898300 GT 1 -547163098328743697572729135469.7610446553342706378841761490266811 2.4083225752149490325568590301933314 0.0781808580325187290577394927849511 1.0814062330537956112190617606087492 GT 1 -64006485847115196438639902216.9605660007693406156623470302783823 0.2412697298111222642976584463374903 0.0332847643315557599381505282678785 1.0338513091429162184899008824797501 GT 1 -1082002427764231920396401263185797.1310447799227336390350041549369507 0.1235882036486440970661257662276431 0.0448780456258583329395724281374222 1.0459162457391430088937783635025818 GT 1 -388920546.7959348459603951109158741322648377 0.1634002132037145810928050400112659 0.0079251206595113798338800600577827 1.0079566913398403890436604340359104 GT 1 -208995513878749504959.9350021778085346690902228276666137 2.0370401426839824172605620972352429 0.0784931611701207288688443114768208 1.0817450804891852710282629791607952 GT 1 -39298874172948253462.2183415193768724624610270487355214 1.8185858927856153499601474816590615 0.0385260861164306267147019357370434 1.0392878449676589761118850518706448 GT 1 -2541926202014596371497426.2734588794734154005447448696760427 1.1123903639200244909865710959737437 0.0028404213601292928978187000199485 1.0028444630120247210144289607145830 GT 1 -15292984363649443592.7062989755153716071195016360516306 1.0685252602722964822080890905750754 0.0379941859889941387220610353076913 1.0387347846642092018103815799486884 GT 1 -21644131116402520.6700816068204640608616360480793800 1.3274575303371705253530517480733721 0.0526754524053675278434328062284713 1.0541135332149897151408829524798215 GT 1 -47873570746.3661362593594100041158076846335852 0.1533805693890542331882151903477993 0.0185487448616857201522925512043611 1.0187229301379080055201385395357878 GT 1 -71777254009016878703.2794754334324352840793080054725869 0.5642990905038489983665430660336024 0.0868896214483825755649553326754435 1.0908985091429604704619366409848460 GT 1 -2848002849176640359462601207296122.1885767780144916650666631225754608 0.0913248611592539723194626838654087 0.0455890910508519580103262584658864 1.0466609780990981563807293058913652 GT 1 -7669282385697968202831096716973808992.5649637892562417450860585487093443 2.0013036893976963052413595145379277 0.0765527116115061359049421708234223 1.0796415590568676332052366885434669 GT 1 -72833237909792857284241.2619419157464401154355904219643205 0.0399316747933745029638103991875167 0.0024260050648073104382948356370067 1.0024289525831892335669061885849952 GT 1 -15187518233598979586.5771560946555260600126510545369654 0.2457080229479899171950750543772227 0.0586860571756552058089998562272321 1.0604785682319125542646031109304824 GT 1 -2.2134443659684552071158081017267540 1.0501958758769236135239816406106312 0.0611016774622756167784052073249256 1.0630480883442985244059028379282173 GT 1 -39878371639522502080577099120388662028.7615244880867085977365157259207324 0.0936063773154502390461804376213259 0.0978109688263032954502669256385805 1.1029312119473034730269935228848099 GT 1 -895134957263.1328911813183297327776861416495887 2.1412710392707581741986667926574725 0.0567035652109647092418855410402782 1.0583746928426044245403431721140002 GT 1 -45.1346640173118507561284859288472348 0.0123079974915976138345478765513662 0.0471131673573730535078785210412220 1.0482591309177924330877320622738513 GT 1 -97617677762460528762116373366164.7906246047840403134288528335059958 0.5891920168821315221154700844560662 0.0937996487696449562878628167709076 1.0984948591632605866485456410748561 GT 1 -319935737330065630.8065805561910892517603646445622858 1.0877763490046072881280229960737188 0.0252156666389696051737453781963772 1.0255390290046448576198159451635579 GT 1 -222310753070.7436844181691143772037393677797113 0.5653903098262974097583292043463263 0.0829685526881362218169520734084050 1.0866135136257224147784389641672258 GT 1 -2105457960347108559621108633165115831817043.1579413702931421384090770762752484 0.2367804180285010502129239622024416 0.0230199270135819295304585114818572 1.0232890232718022310525218778405175 GT 1 -28764660530535306925113865155283.2126115881867712883448962705110137 1.2056163755266924149366403299882597 0.0640007640497446163846088408275513 1.0661406187973403688236311811014034 GT 1 -31849644863089958520045062178640.5089083850498337523082155501860032 1.2320867702859325634913109164988653 0.0222660054479495173982354617752485 1.0225176351536758353465526483347537 GT 1 -765.8689569232076466627417769099226525 0.5756751775454976524916159469837608 0.0558646078022692963000554694839663 1.0574856991825920235258789572727327 GT 1 -397693707522519468025174928928781.3625120801811287802642412516433782 2.6296167617073396136078918926090542 0.0975232730483817511281995871951712 1.1026123764188258102059687927310391 LT 1 -3045627681976672319267141350509663317094.5273266772603201431654393505980970 0.3444785126126541275275713499008548 0.0894244385542643792661527043419926 1.0936783943004422536497731509583922 GT 1 -17427942147932270845321079643.2742539992792455841029016824797944 0.3720892669043280325753788069472966 0.0546273027168596347182083737710738 1.0561760405797518306037346672203722 GT 1 -1639629398360537316080826066523262150225344.2644889650719772012572711352648013 1.0396722133724609826600441570191098 0.0637384525613084729178227937054266 1.0658604105138792828677014601598402 GT 1 -11199887142251578634590.6842954974936573968862598140749653 1.7328355001165723286484762329681634 0.0537865645389115643216332843774314 1.0552871164977276153554417678935818 GT 1 -479398770141876.2618964756135769879445275270162635 1.3377083598818576159563949939833267 0.0850909161825770057684656273537624 1.0889305805915127183467797738560189 GT 1 -8934777504045710813353173518321090369362646.5670097128919017164842825194113498 0.4157939719529176503955101895447197 0.0543962760459576831208152538409977 1.0559316941463888398447938716510241 GT 1 -8426938035800903795616944190.7585092027842179805499603855296498 1.3495825228616341783462986978622803 0.0061518325801592347167176188619535 1.0061708330674979196340519139718445 GT 1 -771649701413743689655795.8827478773358803917840693015548373 0.0245721965035166674583698697955779 0.0635587111857712861190539906719238 1.0656684511996628728088528051829099 GT 1 -346401099728197830276894120169052049151.7427167163804611306825567030835685 0.5834431105791994922108860754815719 0.0363795089901151395737054853782689 1.0370577434095229815430560410073225 GT 1 -23058810256067671488160998524591.2260924306375339813586624600523952 1.2350807705822117293790358060373980 0.0616497378063883353660092844587930 1.0636319858250493669653724511856638 GT 1 -4304359861227101356830.0630208605922067398927283969985826 1.0738789548522125538497419932993980 0.0912068861583013659728843348281381 1.0956378082427923947402546782255326 GT 1 -34349611799266.1540186918311415280900631041439086 2.0471477206975634659821582432354863 0.0529465418211024462741859273081879 1.0543997373587869815926919007882173 GT 1 -3466478773128819537281914.9848573638912218232954766131519579 1.9195273483784973390040858312152547 0.0661804047159201682321112643332177 1.0684720122104701085657936522478867 GT 1 -2933135321099350476108608.4166293814476451751866054383716365 0.2840123518806921940930790115542166 0.0923534475984101023660148978811214 1.0969002356315920713795510436371361 GT 1 -1268497499049002568661536.7350451459357429406214101758454520 0.7853976860174999118348163168694657 0.0685075200301554692406909187061430 1.0709671620059908004944617474887548 GT 1 -2661015377587446576396238071687364914.1090926642610393768529007062971317 0.9395463235298984733899130226436191 0.0311172615861126372380955656080052 1.0316116874027976408935145458429731 GT 1 -751.1601120379218332886981490980501319 0.7833254550097196113132595983736868 0.0744506945931148271457833223807086 1.0773678740419774304373767284881044 GT 1 -6672430072394034565532938105955787406203591.5018965184361419974985044133522153 1.7808021431265075057812085388802619 0.0025180084249651587533194850798499 1.0025211839399483001293330340551125 GT 1 -566330102771100566619573979797515210616943.0020681657396950422743851609106750 0.0949140710532198333780205010620792 0.0007507609456581615264981163191153 1.0007510429077898614606910503973559 GT 1 -5175443211100308268288978.6664711995760321083391892120108477 0.3559948230203261525769171087497772 0.0090993450306345753870552428275166 1.0091409969331790785631825648654732 GT 1 -2508164728090585.8405443469209374933899962839147237 0.2620293576737107001802835767141689 0.0670409874610730975687139905235328 1.0693940099262251507073978933517799 GT 1 -29907341772173574796828550422383559.9238421740190707543215201019803529 0.2515905210783717221284505680921809 0.0384996896655387894312249631207301 1.0392603911926046284871600904370297 GT 1 -568516176322534796215829582166340053687980.2566146718762310344103357766418879 0.7455953910454801354105736162655608 0.0036917252308188500680015145165019 1.0036985564662875367275382362451937 GT 1 -76503.1451316972778953055690305654525694 1.4282289346962045532707972907145792 0.0561344288943252141885399952190295 1.0577715264667272879174267492315337 GT 1 -21829254491211884990394817775637013420.7260836005770217066920587809792943 0.0747602000351666111132107046959644 0.0846556377512389398353834638357235 1.0884549323248968375527802952627068 GT 1 -353211497722372.7336179397282925454887874027740881 0.7959606244019873556130691603013215 0.0835751749024817779693968769706969 1.0872752389644827959726511070160968 GT 1 -9635929321168924532805116087017029803753.6111404380176137479745236336012622 2.0022947015620863130276268283133984 0.0653852395984882722373120790772720 1.0676208555583584826233271970724809 GT 1 -436553439387842599999924358.0311397759825015665266055327366225 1.6358549862887191212974077576540265 0.0429795295269446279819184835640270 1.0439304975039746544364632152057494 GT 1 -14972261663.8466153199902708006289574470075805 0.5530704622675914356206357453768311 0.0096712620282022659516386413737872 1.0097183324153712148895555711535173 GT 1 -602574760.7565161280255115291396109191935492 2.1092122748065500081837584116024881 0.0468198320310307333189717897794218 1.0479513397136385719759865209403006 GT 1 -7663438372236692192001945578886.5719003743013951217725060709292871 0.8713008948385744077110159137964111 0.0955690676790951984965090371371970 1.1004493371277000983826719014070124 GT 1 -7863817219318975173698146.1306137127963168920853791557996407 0.1964984919153566384286512938292947 0.0630024515295899282363363360889424 1.0650746131074256178993270202733702 GT 1 -9362858589539305755220271530659716907978875.6069917147747785296690015867883315 0.4342426719257506342263132861808246 0.0456350837263079886072793124831152 1.0467091688555580587392831988029319 GT 1 -52929968555573187277643071688936156786.1169016156508914118948810546946493 1.0570228667922082238389536656831673 0.0138402777099519319988214983421079 1.0139369473463110232224529498297679 GT 1 -1596783865.1714232723821110818240548914439155 3.2834269918172162980607590922253903 0.0965105298972805616860848895193251 1.1014908235803372238375974891934492 LT 1 -28020178867120511.7469677191340292386481402143845482 0.1606957395920099921138294491374343 0.0002052842008189998488375712427070 1.0002053052745046652864458620573005 GT 1 -25729271413047502837140365527297013.3528236473869326822863330411404021 0.6069793503067225819625671863453881 0.0893937339957894748431835070495080 1.0936446749232608913861966225007239 GT 1 -543372222383801034502218244810129.0209327776544788562106463546184261 5.9620005446901643373297662711589837 0.0924276181463833304540096378863410 1.0969819564054500614699782797238441 LT 1 -41226100121213807049432388919979844357.2406985778523534805787131293583304 0.8577222586974060650248969852193131 0.0710151096534028240406583640543392 1.0736628047283406118572844988822591 GT 1 -491798851046969216404489920410564692219.7286226613725529327605213028335819 0.8746507800559532325504029920995393 0.0748506201451927704852171163434780 1.0778000627731716398136484107472439 GT 1 -857298706.2789287264830652793432691839786040 1.7543860675184507694966597173158869 0.0251002421867842513792104536263411 1.0254206257691230615970808888702671 GT 1 -470287787952810835785951557880967694733675.0176049331967732785744463672951564 1.6237177518566650198020691477872285 0.0374914812860985549818953587865503 1.0382123622475185398642022145157143 GT 1 -105722788938602887016.1689008311642463811239318290892331 0.0092818904102404352737611922702512 0.0233590883332078776867759713668164 1.0236362362938751954630248538642126 GT 1 -8.1698411424711117943160155523071564 2.2061215281406454721441014522593894 0.0422998156891410989048251408755784 1.0432205100030220644985114531056060 GT 1 -349639818064534581453773335494562.4677312311596449798163534177304941 1.5032840835665844568494201338329691 0.0503684005890638654216928299844731 1.0516811596913248062635248542933190 GT 1 -538123364.4142255887774025856509816669737352 1.4415781334907789364976318096100536 0.0468545074638671423622714352017260 1.0479877190517114232721861318078559 GT 1 -21158033001032308100456717495228991696889.8809991548760966519336093369773599 0.1959819473945332090404885503034015 0.0451370821349234538665213579436402 1.0461874903070118849950768283122810 GT 1 -217378831186385.9530488819215342461510957120525226 2.0683075464606700894519852645296476 0.0713130995964294109188823539576520 1.0739836256043061799149549822934539 GT 1 -32723414249539390960960001777812719645466.0401650180427859245754241089033693 2.2680723610799556689820795976125294 0.0599548352544445621753465486199144 1.0618273572706817906424342135960013 GT 1 -11119971877373898323649703844919644571.6989745143094608363112951161240807 0.1990335459139691128351671353188419 0.0361666963480736999219021244486339 1.0368369208471397889564048484961835 GT 1 -538688405408518474773571797292.3696435098652718309509281537553540 0.3331085003192842838569609555958602 0.0187373743867296633675353546528972 1.0189151431012691930950145016159356 GT 1 -355422.5929610453117590922821269469781013 0.8946534101472776853760583326178857 0.0057519062653787709588025409777362 1.0057685121859701400755290313602773 GT 1 -121229.5970713068398691258194767215581585 1.3998728971051685538476843982311158 0.0068907325316463706099874091832299 1.0069145832581906615524144999380082 GT 1 -2757.9906474767194705572073525789975712 5.7156154864576056976166164803436513 0.0186475331423743041829589680203813 1.0188235905143531270366565871922858 LT 1 -6103773260930573671.1958398171464263282943607060125108 0.3481062095135157718161620512066093 0.0925713285869957783669477791214800 1.0971403149261287390088237034267115 GT 1 -14163642049224265931075660584.3013384559236561940816232807860974 0.9882255634512710499151179831916000 0.0713702959997632107743290196469655 1.0740452159688312850179490769497566 GT 1 -760642860411190719952428528615944150561.1765931718216192721165758436280622 0.6039984479134005576489282198579228 0.0001447670136543721520957266173728 1.0001447774934099208336622060803795 GT 1 -217422163700013888964500571008.7660069476947463033594973380666768 0.6043276203840426916423203299068533 0.0703446834753865402137446139956180 1.0729413889270314511906520586055929 GT 1 -10578213721028765718012026906698238.4248672226987327985622241687559924 0.1573608142996695446107038752831877 0.0102292414968634311562408068039976 1.0102819197345173374191834350090619 GT 1 -107059152311376157005713.0077127090558040554943196422647940 0.6288380772468040606656352530392938 0.0521566211140532290507545434969924 1.0535660025217708922007545896126272 GT 1 -7243587.2059365628341840979807504998624279 0.8771897938998516080620345900118770 0.0689783691977594252746601297556326 1.0714727680305694033857733317965159 GT 1 -71128253501654776.5163024798432990492692985006285013 0.5437327913371736729804637652747291 0.0015193272390627877130338949582607 1.0015204825870752216503665796844654 GT 1 -398606783521430.7236267291337836355658000536469307 0.5003485330841420206676583524014412 0.0436674685104498291779575576308347 1.0446495901256118098719889111893023 GT 1 -770757802916134953580636353171271161666.1922366719301768777851901560473760 0.5185281892912235013351408017465216 0.0805081068661331880137281354887231 1.0839340515792739479302851928225288 GT 1 -251894378221530631995617708823272614324198.5457766485527974249399390863843176 2.1385951279023098759247543950308413 0.0314556515888890247710734130587553 1.0319610063614500661864425143406065 GT 1 -1859123059833535717159.0702218595442433428813812109074513 1.0057603214197376124496188726821950 0.0126562341416477483846770776741964 1.0127370065126758086549156315563476 GT 1 -109089427474808024617262791.3747771143503522216027825202920937 0.1542198011461468227472614125774987 0.0739401140181828258202283127964846 1.0768163747404534191183278559000618 GT 1 -1132.8410175936365985724372328131894395 0.8329177076656333741748366632734007 0.0366031029969032272951577094744310 1.0372898056723571282920409303787816 GT 1 -223455325979311916346674496873873173459.8932419432359792231921480449603009 0.7291835783954221112439234866512955 0.0619831060233454148788217874235997 1.0639873195020096284327373554001612 GT 1 -80037338503712580333835815883.6312571570234330504175671174253646 5.3316885395809592672156666218856721 0.0389203521902924930990041036429665 1.0396979933112417961645560856744415 LT 1 -79944452838859107912195821172.8769282572309243779941732939110183 0.5823784334556668729134854814715520 0.0565189107947761339639407179497265 1.0581789576121070726593707884620250 GT 1 -2.0059911348366285535853712642492017 0.3044813251527641935482289373183483 0.0757959552857638586792806044301968 1.0788224041064715592407371768838222 GT 1 -359354403672098.1351917032112442700309857382464425 0.2897070351282320489189736293538808 0.0384253091144411128461874906435954 1.0391830353421176954329164159464776 GT 1 -33235274.3434295093207030629782649176993826 1.4586505558787532058283407322596555 0.0158301028411426585822967488881320 1.0159567371195706619864967507601125 GT 1 -622982661004218664246163881.3776090063817624492917475030582240 3.3130829361077446368661220046376201 0.0027684092651792547811647992648591 1.0027722483972719779160882901879567 GT 1 -4024429572902812958733.2991496894892789731882427250883589 3.0172186364922910968286117253133154 0.0226162940104539753261180097368389 1.0228759650548940788445842249758055 GT 1 -99675.9323402333154601336843347702264261 0.6341486856032276498596640265310956 0.0645397431912399762489418047793005 1.0667166175389453984605191436840554 GT 1 -1418646906818411326969628486427.2074694503892323501269319052450464 1.3392811907144984314178943065173574 0.0258127526275115624438163845541318 1.0261517480541420312825285699719855 GT 1 -3777427609100492771213418437.5024935115599604548799961799459135 0.5788794884339415102826922544339986 0.0113033973973638257854090835398529 1.0113677663116794498621599585482171 GT 1 -683860364024233085.1515528240463725821397934956420222 1.5712306002950905049881426557057449 0.0819632616149651332296072223056040 1.0855178691351554181396081879960546 GT 1 -165792676374432538981489625.5291369079667834210230254382434582 1.1799610157467874229007830221055466 0.0116676911731659373013779241311829 1.0117362928191260827162552456913245 GT 1 -378232263680952636845193690139159916328962.0145431998090799698075580422179569 0.8375518254912265951600373974458434 0.0195071443241565694596730637645378 1.0196999197814167869801639096523083 GT 1 -1.2239278628227995557675072260767923 0.3260321762273923467736744374888031 0.0701478821120368791145043028076105 1.0727297185024422341896359829444556 GT 1 -89680495901077196685277451029705966.0344503521487427073925955008049412 0.1325194693404467467979044865717348 0.0331317560638212023576431766637991 1.0336930452048262870535372307180941 GT 1 -22619374565164554302965036.0633815102594714533288521055336013 1.5460479160319826437761677068067417 0.0598226825064566888125811241253900 1.0616867858761220236923561512234255 GT 1 -87.8021737755286333308747447179279230 0.2137619326283680027934921351030867 0.0257219677866371952719760638134044 1.0260585620560221584251092795031963 GT 1 -21630671956995297897639369280.4082105616643605553902947902150065 3.9654972746393156771680768001641901 0.0174344397966559284698813151986768 1.0175882095225959295351533621762847 GT 1 -4805252475461602375996.6717103623750737558315481296119733 0.5061481334963986903651723937095850 0.0532683376020077308632226555511223 1.0547395813891428446229666840598621 GT 1 -744209011869340028.6938646160194931191257329118683454 0.6123389006735996210147854444470619 0.0650492882067613305359803242762807 1.0672614657425543405587036115526831 GT 1 -504571461624634527767990508927262517.5447041694287329906266948226431060 0.5991579882718991460634645177522772 0.0938228905544167379396415004782517 1.0985205070045931394518953262188386 GT 1 -17162.0482195568218371753793586352829052 1.2732183644150271043981318496511639 0.0358634283324822228048742032861596 1.0365223225518293038336065889944352 GT 1 -15996484836636782371941175.4514694611948983687568034514561105 0.4677335988123171628422877939321617 0.0928342140024601177997719002868572 1.0974300605673434039447876363866737 GT 1 -501863021824221992453118836833834006035.9509718326773368716374456525762490 0.1482303872039926486800383801628307 0.0537988015042675493162579980267828 1.0553000491448722524338277000398853 GT 1 -32619216.4403778484106902570013277874080661 0.5064669588132061449772069125282901 0.0622223780599429205204103110861522 1.0642424349060316954994046997387209 GT 1 -4.0024093650775352150839051482426803 0.0320949615291303509143757951000543 0.0621366652214428165183427135836696 1.0641510391212971575567771434914230 GT 1 -9219614520365678292089835511752.8510168828661220853738682015037160 2.1936330633194388699783969663821449 0.0280118336467742807425760167586596 1.0284116491295266092048222930799234 GT 1 -828158430186387509849627858639096337469.2578328935929369959389576566708366 0.6623956545421663867735217692272429 0.0963454708998230300558458064970213 1.1013081497059925842554021900793140 GT 1 -896954254.9631173693353551226934282459878068 0.0194274788285627853810241023255995 0.0400208236148156277102117758237341 1.0408436860209469751756110471826731 GT 1 -2268.8919222710870453676579157894192702 0.2920026515344596749842539301871251 0.0840257465569043124506402797767315 1.0877670222979063352874504554269282 GT 1 -1051832467961.7717862177971673379340759675281090 1.8712627051688337210636665849736297 0.0242464773272375798322913713152045 1.0245452627073172678495135343595277 GT 1 -799449081361092035472700759793083948494.7823157439259777397407018711851071 0.1778065443561009445744105165266110 0.0785633791882994689990674795501185 1.0818212825211525181498139160772647 GT 1 -39268798065674440504658665102295171595.6152768413059738524975120363094944 1.1116840129039546887245893976108148 0.0993701126523144621216769320131893 1.1046608856252418964800731579414560 GT 1 -317181907.9990376818281764781304841020129580 1.0236876101588013521175661919161837 0.0447154685304866358963570636346549 1.0457460441647986145943932037316234 GT 1 -3284343819652596551126318344072109.5254975673472429942323654633973139 1.3352327978257623318775495250264001 0.0954197233775225204332983545909456 1.1002842256002826524461692228292848 GT 1 -93227185739467238288550754365.9779497949184705197625055303498081 1.0440252966752372183552028462199051 0.0645852032714224126798780240115059 1.0667652152046264179424653013107992 GT 1 -759947891580356458014802933753.7964624316439503057238054360711129 0.6567034817603511740516467613666605 0.0683623906028128739482642413273955 1.0708113710298647749049224012300357 GT 1 -606742891641019175205444787526801905.7927098240481927235403855454846226 0.0201522357453591455965001906524758 0.0091768979725176973652750758698564 1.0092192650991117893426598556152804 GT 1 -7373.0656610614143449180988020759737042 0.4933239997103672676783998856894926 0.0092663069297909801092329834239146 1.0093095062242262978239087864188370 GT 1 -6288394530879827673560330466605640.8560917173700401415865684271463531 0.5187024853475918860665439312763934 0.0455094794211955152836417385791061 1.0465775671607740260644994549541776 GT 1 -247316341.1812864004005660002529431922693074 2.0512378864983310593717380006043892 0.0813470996540063256560055341733668 1.0848469207385614165718405373668387 GT 1 -286504712229.9621623861027038277262019800937226 0.3579896729539351709291368009844904 0.0218897639845109150586895503066557 1.0221328995370051648995860511971364 GT 1 -167706235618938.0456080451759961203721119526078304 0.8578778134099269510232494136562235 0.0878034705007346364172476277842147 1.0918998192510580216173351119334843 GT 1 -57338044855667990.8488878459660852473302235363459721 0.3739087286935963260597191959667941 0.0664716436944234305038030546810069 1.0687839401300812043600470944989715 GT 1 -390360155.3462731423631627292542824524988909 0.0253189019246715909012954188213838 0.0457979049197711602016135210293975 1.0468797902619740350010017457645395 GT 1 -30018358624264455281450682419189934823.6016654735156337136433451583561315 0.5061333498970901192719920377801182 0.0894832070535244013826178369478878 1.0937429363310961980990669177042618 GT 1 -333.2693300240698306380897855510386444 0.0171568835760369675856259202925062 0.0761098375296164459915248460092270 1.0791620861915627026344690565990599 GT 1 -2115795722990406674989648592224369729362795.9538200209250407413235090551377781 1.9675240473083468695396691915046064 0.0588958676800599474076603235766805 1.0607014841803343487255299818040259 GT 1 -4883897560688092030824.4794620775869016893178585293014290 0.4978814867975369881325143066342396 0.0586233347762230506540443485453203 1.0604119376350558695127088661279029 GT 1 -40.6789129206023764196010177922462282 1.1392577943657090928140100119505172 0.0298549319959322885580560640776019 1.0303096640235205636709441777979013 GT 1 -54016298294298649269998378.5779091638601582538684118139194646 1.3950165873853609147856372511793506 0.0484084486330699472386402314549330 1.0496193789377134959684345113671332 GT 1 -661739894494625385487795.7199357919894199461319795761383599 1.0519942428480534093891550834222949 0.0802157443121067433727146548813812 1.0836161411266471535099657276374578 GT 1 -35048045796974679033789808020805617457.4849502233694781830031886176884046 4.1482403377045561083471083427633361 0.0344605977987420050927240714247141 1.0350683677947952966848142454631716 LT 1 -4712046410610478709342985860095302.2719223300555618753050776797933557 0.4517118492686480399747980924652863 0.0322506349398393297630824823634595 1.0327821456236279483818582566018221 GT 1 -36727622489374106680505998345656.8244100996818980330113267137235344 0.3816640937451640000806310879533150 0.0589165325220699760269573958831205 1.0607234425037374761964391703485630 GT 1 -922265386670520452627074.6411681333331366420808177543187938 2.7991688813315364840375385089451451 0.0949427079236363894456084086677637 1.0997570311242336744393659174005401 LT 1 -45926733739058308336875884511761.1621745706190599515546021454509578 0.7495826030725779885624604969352503 0.0289839490207741505035867141953269 1.0294122804677811606153543594719339 GT 1 -633283910333810728547971849062.6723508853305205919177675904723027 0.1434570479047880143040890863372137 0.0877004001274911724685994148768061 1.0917868342228150727986905225583911 GT 1 -98872012651475818722.2345088018088695636967453253140190 1.0659960856442700083707285379010109 0.0953606216290414381184242054943249 1.1002188916334102663973391682801992 GT 1 -53909.4013875147324943504840870186168798 0.0135324958573664759209576602074877 0.0203657483933979166223991419120733 1.0205759896250163675438728793369898 GT 1 -471714.3995408069722068195866852739013476 0.1574815668951042784929768822786683 0.0829029777260790784234670881956638 1.0865420083160644788330634648106815 GT 1 -81231767801374261443283238317342061.5611707508594732490555260955637691 0.4182550915507439845667433584154411 0.0791315007624038555206860733956668 1.0824380333361291011587625243408141 GT 1 -1792520665331699669405.4869371800872731305040297200050692 1.0366714730967956398519835432965604 0.0482412774202923460222469388010712 1.0494437189811666362256179078766432 GT 1 -6.3410795077970424345969809286806429 2.2895775251478541221998568088624565 0.0597356771522068886327466775908812 1.0615942487269275466973485891076303 GT 1 -15126563221902834434971429390.1943578052867659223612159185265665 0.0899599215765640803678960944427582 0.0043740754175130366362682211148040 1.0043836696729450762233422304447469 GT 1 -37088007639650799659481338193963.6906168244186354844273674959868147 0.3180984316365610594390138595994365 0.0163361707366401944213103029201114 1.0164710772285534910912295884254408 GT 1 -51551640464195164501970.9032734067097992928409721667404548 2.0983331267478499007710655203225375 0.0861506513765037446208860848885251 1.0900895475646764172174879719522390 GT 1 -317596640638.5499671271256536748481430648200753 1.4796925187143006511878818035085298 0.0421912845982578950106495140691345 1.0431071917187628524535981338637844 GT 1 -852497594712921678087306.3814045987164962824992829201878274 1.6836355632178111812805696853656461 0.0844138964916091642924550418560037 1.0881908684889886621537453183748708 GT 1 -73925923006028628998859780387996077144178.8363089646830913133322045903360750 0.2894736239556151614692961594840683 0.0855885965077726272235608775579764 1.0894746955685512144399610953075378 GT 1 -1262664490122720093.3636387687673430170992271108511396 0.1284190931235188689460743429623345 0.0096095624402387583872636124251977 1.0096560322278982423630923834066902 GT 1 -3668857.3807133864791482869074040741272218 0.0745999159118001643792075856998374 0.0145437955561818194111975537235637 1.0146505933120881768878627319141780 GT 1 -1760.3860988542750662409795299664245582 0.5893835556682946919174683351488629 0.0705736056627855326507664492112836 1.0731876634046066208663746648115599 GT 1 -2453564403816.8154365689532597542165806543698344 0.0186711244963698856923899535296764 0.0333793846844135237752440448481526 1.0339491921391738537111093530354289 GT 1 -20136604475133824529784.2911546251360523924635286690125647 1.2184407493359736536374809816870013 0.0447435428213928899970873703588757 1.0457754330039547321941915012560781 GT 1 -4729054605.5748886582307043912770138720097429 1.2779050512483833214921928963132477 0.0705130729296206621688581022382968 1.0731225363946603687933103176873084 GT 1 -1989790288586590318.6979357677869587161157118645960434 0.2962085905453642559444331787148796 0.0244265097553538665598135887480990 1.0247297857805236860918373456488666 GT 1 -41026056055074555551370041092064.3244600084257987633823142464075148 1.4637472692776910329540627993093159 0.0964474017545427739056967866153961 1.1014209545453333244632677232005618 GT 1 -12648884445907869615080715582366879679863236.3857431272192253488578970161393156 0.3531376024998134246535111521163281 0.0858761192549185609770630813411518 1.0897891797920651570706603146323854 GT 1 -1605634570729816743531467709281.5266789284659862739292155971437935 0.4972514349624518022036503681785282 0.0276713241697129037376137173711264 1.0280613878211277131328213395210283 GT 1 -14.5041943827903361001464668586509060 1.1594824392321435180384323712165483 0.0027221939772795453271492265305057 1.0027259058851904480896807561279533 GT 1 -5108155882214602433775697773.2175916396170029497028368215030881 0.4373784639841230496644648746415409 0.0262267191012556918645870662478884 1.0265767735861976741783621299641842 GT 1 -80134195451698571255091374143252641743262.5799196546471563402509436437435052 1.3099803065580089976579475626201904 0.0639416841325255382465703051269544 1.0660775011680972652026125847613032 GT 1 -238835.6690213593152113126131181382377700 0.6374920268257251668098558409126086 0.0826384083071386709936962329181660 1.0862535641737323077528853989273064 GT 1 -31783685443401301429151318233633743175.4160459079290768244616723194384845 0.2481434461575563029819872654326265 0.0301627711330450050648035521417671 1.0306270268573907512582254168892924 GT 1 -68593335191103227838.2908607933951798372325991606374982 0.1086052581290324536883247868372005 0.0431876229164444147500756416746785 1.0441479599543506309840731183400200 GT 1 -4282947818903170215920701643652879.3504152300353492676293646406686332 3.3141496354320625642040155952422558 0.0883395938694377435413871923797449 1.0924877199505825034206941099394132 LT 1 -4176473226082331428680196660992957405.1159472591564797713441435467239079 0.3906847174899545652478552989156930 0.0571389354746353696240197335381174 1.0588363406864997971422609718663962 GT 1 -531164133.1110287664674750829067013774928071 1.3726264102774633465821061502056363 0.0194164251769585489435524538510080 1.0196074000347594326546308176691003 GT 1 -13518989469711.2170005805830848819442664650060031 0.4323133182446621013723882064024278 0.0224065019726088891242325965024742 1.0226613415409018642465442410887854 GT 1 -113657107299015454743368543038081782413.0763719722566426213945945609215428 0.9152000626085425811680839800945281 0.0712937558430328518865139114133981 1.0739627966769959790968209463458068 GT 1 -171275601817235649139355763941868069972.2924618237222513154347744534667014 0.2529525326596867693751000593936636 0.0665709596524921060135102663027022 1.0688903335146762729930834015124800 GT 1 -1591649478101132147172986127.4919502968068803248689278142841010 1.2124093511980187280647649555432783 0.0334619095088854892702166996245670 1.0340345703590522450514717132119490 GT 1 -14245636012684749367.4730858220821798910993592634595767 0.2273851355197005250303681171592099 0.0991987309151075153516650556377308 1.1044706127556825690824579608963944 GT 1 -12794082725421172599081633692915280166593.5141529697899931600101436192710788 0.0818135803292915634106878329649725 0.0558316780713781521825590910883689 1.0574508216036854782158746213395589 GT 1 -3784121976031800597362325955862161.1210118664019457794508452934647655 0.7125870084039398570441556141333889 0.0623135847054068031325496799546942 1.0643396979233170257992550678443287 GT 1 -51766369088170183212126.6382598618172299102217216337498954 0.8707327519128843297887207000831247 0.0632650207938788696453862511562858 1.0653548764450463974755589417634036 GT 1 -13940651649615183065555618943299199177834.9000779107465459321701777307576767 0.1902480544856907238939711605812592 0.0024698519603780794859751754768761 1.0024729070762238178714123530601050 GT 1 -583980850121713189218683529554581020772540.0294837303047173041750283572430084 1.1793140385117779717809060956873709 0.0144775638028690590577357858045421 1.0145833863399049047909320694288810 GT 1 -41939299614586806736906868566391129.7632969365639068104503951214050734 1.1936709338752420168919634714176814 0.0054000240645606312592778207878514 1.0054146568967139655871338210379104 GT 1 -5955607551035179070403780818922.8144609387408516955703527894236895 0.6041324610250958338301383059389519 0.0723390297294239204748840703270142 1.0750889467067277213448130115221599 GT 1 -3373044261708279004230181855.0182063342511755603126647413127836 0.4950265040041679998544789495772758 0.0245323201965494654461584159532902 1.0248382513966508198276073376486071 GT 1 -14841682053961962316698409709111620.7587859903602331233343266334558548 2.2944153644941081047322474542465162 0.0809196495354192857136972681645017 1.0843817279516245660684288288450735 GT 1 -24819.8637057577460958422415309743285340 0.5354164837639362693190786533131330 0.0025168840176425846711008669055723 1.0025200566948468046850452118668983 GT 1 -351295339536576728215228576643440.1531911035234711658206772853484258 0.0366432312285559606165195856003093 0.0209406885775043810900529843230756 1.0211630546069728727409419497272332 GT 1 -1792282875754690934443039798245206439791865.2867982664240620211982546578774352 1.6270973787385275605988416864902848 0.0977398319262440944544078322319155 1.1028523658372265345011512478803148 GT 1 -13.5998799867046076587849247935198725 0.9732676105538697298122327135895915 0.0793905061402255077434075536756293 1.0827193349650385427922767063196879 GT 1 -15.4130459036846033983865022629498774 0.7180058660365985703460244697727333 0.0675414093770084214453863453162196 1.0699305352887942231684946149460161 GT 1 -51047669745.1415764891812616695091150626231797 3.4304011044484817273142478952003860 0.0493161059576584310745251964002253 1.0505736649173382124391484687741047 LT 1 -7863709511976318894209377303887752254.4214419339093186988947416492418301 0.3637482105931108178919827725568730 0.0040736409478340848518720259115785 1.0040819608256034942285691347263741 GT 1 -7466920277634599421885867.8505042296496045313138102727792870 0.0979796063454735268152058230824476 0.0773573420190613396113862867539680 1.0805132722256541783776201240908862 GT 1 -11231582832.8364155140442927081727314669947211 0.8667841226580706603567415577671903 0.0805784184916300922064164753897986 1.0840105224154505629094506282628550 GT 1 -30530324607311598378319478448215297139060.4252477983355439795380348383811591 0.2613747149137348868294946441003717 0.0394729972318328965994856088593406 1.0402731839275011941894554037784133 GT 1 -95909348185148650172460026185704191215468.0909439878927106772752238410732074 0.4401405433186133999320833024657688 0.0896011362087947085180989399344230 1.0938724636433567393974460683420667 GT 1 -53908219303878.0972833231759673839244288484904971 0.7458627844558166692331902895982479 0.0497085518042352571383681052784586 1.0509865538627466676417512921933038 GT 1 -50960871225839147271711.9037517314104818429725832062608556 0.4116118207367986113018115882654781 0.0417859168441813042355724257597807 1.0426840571293102134536514638671451 GT 1 -3501553726812367802879159666459034708.7355338643258374147310096844665628 1.1675354018093394545021840071087576 0.0233015013737862809798261006400133 1.0235772737202079367370172114231103 GT 1 -2318410412099333.0113433180688457809630419191735588 0.8515972334681667595618650785896136 0.0680237802871920613709355769227759 1.0704479799516726436169609097050863 GT 1 -117365163251271933930280010.2873824644606870135412633633067066 0.5418369546125710781282050350758152 0.0620649667685852011521410070864300 1.0640745933218815232244327559493437 GT 1 -344686561069158785083362616704766381.5912108654005326498318406293161109 0.9918064061257520140693177062548090 0.0866217139539986454295587245782255 1.0906051511807699199338855042393072 GT 1 -62246345176564480661537837027.7577290427103977001117943363406167 0.0716978844514571447360417677308105 0.0098355240670279936450354285266519 1.0098842123467429777400678335133000 GT 1 -191929.0011748259452069795901549530706565 0.6721347985076736034706932571038218 0.0571845563506146752165300085316300 1.0588847274334210550999121999829634 GT 1 -9410182005440788537176372823819.1198685357650166927153944704787206 0.2574150291580020112392052147201234 0.0315660122502841639730303361145768 1.0320749577252358866797577552686001 GT 1 -187.1384908796266100770485082269170901 0.1938642521131306094036409978742522 0.0232944279583554801349951912026353 1.0235700315775943878685158045220089 GT 1 -21687240381048592059587891756412936498098.9670848669320244662495747315817621 0.4746392476967078905803738511590078 0.0889505617515587949885404973031373 1.0931581150843855622918517949347766 GT 1 -2631586200731517373375096319250.4823922750635274188428142298199321 0.4642346513051706822402021651939055 0.0040008206842802453516545059829936 1.0040088453780793397709861588444522 GT 1 -67193406499190309581152206.2190414464768379972138219068819827 0.2285736655295211798393587384211100 0.0536117336939713536338143919964427 1.0551023646344335402981382589231306 GT 1 -4.1107863382819504169702950099000295 0.3230083342490516567488744657449332 0.0445346994059775674727800553683627 1.0455568314044309620164894450466942 GT 1 -4780929098782744288358555403.1836142573963629179620576362286724 0.1293419495389124936630037283795851 0.0119446077518941988057596540016546 1.0120165177774070369843582414941887 GT 1 -1016544298502731856457725010037225283331.8175584409714081864471472702786168 0.7159769908169899115056994398621026 0.0333649168689941524291660677615932 1.0339342248325405236235167689587137 GT 1 -405130258936337593907225.5853041853827444452574585845335382 0.2018160562774960103670135285665830 0.0993748935770610758941068097026211 1.1046661940627070628498367190102647 GT 1 -89260242054637.2986737368905797575348812029309185 0.9512924348605825612470459035160833 0.0392692017050109934155669138696540 1.0400610358987738902114114883487552 GT 1 -10974133252322178545888145.7951649629389956772681382337910424 1.8014951556203575111992818136016498 0.0773841237354640843271691795451292 1.0805422998290036204382334832124262 GT 1 -11381386774821.5862351215857157602531864622170787 0.1583473367749428713114963877971272 0.0574971262568837191564846681128201 1.0592163106003052544487675461299081 GT 1 -252609762031448890835579731377542606499.6117428865704221260366199168724588 0.0486757368957911298179179891579133 0.0041995693337551223330575774075065 1.0042084122914761207230650764458261 GT 1 -144116298382904090421.0933105872528906536538675218657496 0.3510731284884736802480414393869740 0.0520600471321385425939509938273296 1.0534641195899182501060836416356259 GT 1 -108445909409766919.1628611836384884409457467297532737 1.7370011743598008828224608004909040 0.0387557863938240630055528986234491 1.0395267778358751881024594734572456 GT 1 -163476920532904646835171263792146556827.1238135122526821637137973471425628 0.6757246006816881672008498434671292 0.0430795216272552014150870228680089 1.0440349856810648074601628581697959 GT 1 -15560979267751327311869511274667056.0610838377094404642384319378910589 0.5179527579863226474143792445988082 0.0359200149202107162096016247087555 1.0365810157391134057928472852995750 GT 1 -37188.6022459487221616881735830330550873 1.1375913860223254638611464203559889 0.0593166046834334224712236695297281 1.0611486515721947338846775457588951 GT 1 -1612.7294363238743972646933689319164402 3.2453850915618633249746172414223315 0.0819327441315037873215557496308745 1.0854846275719763532627110921893053 LT 1 -539112000648021961745315385312117.6614395803797373095884222776145356 0.8813880582159450065199959934981737 0.0945029379333923688394972941518515 1.0992712462066076921151664554327358 GT 1 -50189558585562.0710414485283806438292618773198266 0.7393193693367622082382781699648483 0.0863449569137395952514876180056171 1.0903021933332441672825282948353413 GT 1 -4153.3561921841428191550093555954892515 0.3394104877510033331700563096991845 0.0882227188569317257413130826729358 1.0923595280046972350316919255100061 GT 1 -15409298443008818240544547080.2391979670772201599551549687246091 1.3246403393218231698857299767358897 0.0247664062059306920912057428301826 1.0250782533012716657614615265845961 GT 1 -43207793891740.1346878894911260715460192958207940 1.3197188630865039200975008223519809 0.0323894506682128387878312487427874 1.0329255977304730712020034062044142 GT 1 -2847859443312793157303662807768100714415.3409733955538746234104615479021418 0.2283418478385362151648180319561099 0.0090434521601993197041306684826719 1.0090845923946776675727732630190164 GT 1 -86516001511766874051278868610946229.3586698654334655207580664918361809 1.6783994962410871996750109516201255 0.0011701492410367765710572248582138 1.0011708344002043982310505154681932 GT 1 -5704265293428.9934111039017886075486276515533799 1.8639960245651214774409424979381912 0.0828716124074742758743350609754709 1.0865078082461721491806707710638472 GT 1 -24004.3823376831004332784609672046100185 2.1414550973410311278820807789220136 0.0815723078228038571438489059638849 1.0850921012394521080797797584059907 GT 1 -42776941923588662119630277276184436101.1987305209666559678833109228088784 1.1900857661343836054586625637266272 0.0312896110312046775015295524730718 1.0317895879569551621069705068348955 GT 1 -67901159361042857953524102517.1686758875451463728216627432754199 1.0816367575719386234901603144477539 0.0383803920186796238576794726592314 1.0391363244135379667586428679060378 GT 1 -78073787643086447525469610.7625584771224054547194785063569535 0.1917670791038132398327140107643798 0.0023198704055690234888089739086018 1.0023225654738645879847230634636157 GT 1 -7553105327021022832489031395672606112.2429492540976044534430869189023258 1.7904401506819078555722470081972234 0.0733180844842179775469075862777055 1.0761449055083852431224833367737817 GT 1 -125753855066288.0199471567603622613256081327201757 0.2271917929359463558745733668956828 0.0982801630456862401327768409592089 1.1034514092125349248937857804900950 GT 1 -2921236751944953895.3708023504017095028270674748518246 0.2564268101678613553674095901827196 0.0175838755754311719215307436494210 1.0177403084253311259662405991251334 GT 1 -26.7673493266131860593545387862012203 0.3947608102162060929160055436146166 0.0627802801501305306886272305027650 1.0648375313301360941831449033211248 GT 1 -104166080623448300824.4759670552796076982097520004642336 0.1294632201139708609915074545854184 0.0170809540617393392863084525873062 1.0172285163073723816468078247904949 GT 1 -644638785065149226.7450077399524444686193276690120004 2.0912262276258806820705668646419250 0.0221941440506439433071165636687200 1.0224441399525225625227991962265424 GT 1 -11782794633304234934699741639630186872.5711728510910183096376434497531956 3.2026546014334694786811776641324493 0.0353275497828243760464423586310471 1.0359666650892546357163619161847100 GT 1 -15182927205669409502.0733457141978939374482434191002209 0.0854866281483102081161475987472410 0.0814929692394419482896197041467587 1.0850057197448670867226627832325640 GT 1 -11160229558746967674720226082291913022883298.6102133056772374468636380671672245 0.8963060526783662861255635021382050 0.0030794310477042801268385145789042 1.0030841822520042706235785302323185 GT 1 -62294936.2722048574397654953276103080654853 1.4850331922354459665534821956499577 0.0468469134084707408545440368380477 1.0479797517212212365970779071067823 GT 1 -42470388798.4981157815854059144344190327264235 0.3427667396502548536565526488303121 0.0227263359270380649396828484995095 1.0229885596388715517399026488381502 GT 1 -500020.7295884845376605231608011130759198 0.7388939826613336149940678437388452 0.0650796918241035552753167177204092 1.0672939852233315825689888418415041 GT 1 -2264822523214111000320812160203.2506164832487773368894955641637263 3.5160886163514112954508874414952523 0.0476073763790740950053792405462759 1.0487779094425492750394961383032716 LT 1 -1196609694.6831784094082959619578030183731042 0.8551562267149002086089119131663359 0.0910781790374508154561683335102661 1.0954961940450969695857232771381811 GT 1 -88762562245329828712187235196.4664663835096183994779587851152877 0.6761587197082453199673743762377552 0.0449498443266113437481625107073981 1.0459914208507564197336885537010086 GT 1 -280940455815.6394302802316264774773190283769525 0.5952236392955208546740228730395962 0.0455318554222366254593972036512867 1.0466010103095970517739477331110370 GT 1 -37916.5394746067995472090751032013845830 1.7766038969034597340071943538490729 0.0769080881299271862699451667699477 1.0800264699461234869376987579141838 GT 1 -139088.0257747039925392368246054912074647 0.9228362965692010370062010235799877 0.0826368195942038184340620119505261 1.0862518323467476688515905206111515 GT 1 -7778282149118057681699361633802.1380790849262788248551766814691361 0.1173867126405916328150350485648595 0.0260341923178294092757787758530752 1.0263790810049047790859173581491648 GT 1 -1509761683.0942257716030988804208907947220809 1.7570644679630308525051725032081706 0.0553562488173447630268380675808148 1.0569474054397991055842933261603346 GT 1 -938530379384543273.2614146053514816914834529242670565 1.9021967097512176236932932537648458 0.0145951215283021841530975048133920 1.0147026781318422316915916130116618 GT 1 -30445905985389003.4748990983801661724221615985250968 1.2495985851087522025773366219133226 0.0084562427924877866115423051154474 1.0084921996637520337492109011458655 GT 1 -1475447.9817660881587792030247546701209916 0.5656510095461146517670133869736292 0.0865592859868845811362282931097506 1.0905368050915992411124621145974609 GT 1 -369133846778555247593.1430718362878545145468824055010084 1.6137640945250490260516240158443792 0.0880815787387007909273320873450791 1.0922047432801111705495166680025196 GT 1 -791747641910588.6805954501757202790682835507293257 1.1689320909983598627783867110019004 0.0671206337026327058201318116195416 1.0694793830673411121909061361479370 GT 1 -34113011.5581109674719825887889559204364193 3.2828136051793565718165036097475514 0.0389344663015739437289786059074660 1.0405012275430650612547516358285704 LT 2 -137665752612693976811044117265094.2497280870988882150015257370467031 0.1697132382909415437320645370806205 0.0399011937320123994336704596057703 1.0407190766206634311683143432991968 GT 1 -1630984521359785243915880738619443791692.9333103179020319479003819630173990 0.8501405270381203004039714171813959 0.0137443687450761267197845984449694 1.0138396970741723281838713253170802 GT 1 -2755785197723061018633458681064181.6798880985213001247914122014948348 0.9737778125362852530521480532756410 0.0673988520060393024686856217473343 1.0697776636479614627784312869487161 GT 1 -12679118439256572640185074807411220532523610.8816050543058617757770592138294330 1.5061233492376301919276464487448541 0.0786017640276288024340108700441180 1.0818629409901071047112641793813057 GT 1 -375014945716452677548911269443.3776676984528045792461693879497223 0.0560734122646862592425412457228399 0.0716615208987356895366781338167160 1.0743588722867049082292762657135407 GT 1 -405263522199794641848.2312004112323555385611152073839229 0.5899396479638616458394586036493260 0.0249483489503465352305288542523389 1.0252648339518966909604506017622096 GT 1 -6095965285672459048677532531659.9353417674418268467053897347141626 0.0107005942809249630596691080007739 0.0440769925218095484731750518427099 1.0450779052846219032892595664687058 GT 1 -87755534029528156640272001487553897159485.8173913664474531757416854748664895 1.3677038701734830810002157265312947 0.0758135292204348914422242189757737 1.0788414194979965123866094204508947 GT 1 -5934745916.8176936355081675764730097518400122 0.6310870210095510408927598005416110 0.0708531230208751754022420704398766 1.0734884504271156315510417782789312 GT 1 -4524034180037815719805318041985731131.0052856920455317503449488070352107 0.2660679645256058058805388197640683 0.0484406333401591917339999559074580 1.0496532014861908206100623739954093 GT 1 -49140840837526959581972846282539504270786.9785932912960351718356841194445978 2.1325399267816303549487667594503200 0.0670308697800199856909885611272074 1.0693831652631093982126376605441831 GT 1 -100082625217398692401951015564951052467951.5818030549643517969277054005761772 0.4009209889018095136727049813771279 0.0075574115149608040087891305453257 1.0075861134490228855816195912585636 GT 1 -547.3361171569696387181056229722092862 0.1910167345119770924159467547660631 0.0289733286643962418672180912506220 1.0294013431632038900293720939028810 GT 1 -5283826126128498.1159455654466772226812633727565218 0.9985894698593646601887090996029195 0.0958788736649093581800976595895074 1.1007919382569976337789743172931292 GT 1 -118936608.3126612108658343456159136183789813 2.7940780362844193732912511314958681 0.0018551207032421784316674075808591 1.0018568435707351404575302930052934 GT 1 -183.5327175942439201099140751803852339 0.6702922971179180478231249590165918 0.0064831961820746702371459727700202 1.0065043033759534017677685774977558 GT 1 -199185540.6904426711577653267899096404580643 0.3947563930301643095988732550404525 0.0417662645227071874890432538313100 1.0426635480173127655567903799421868 GT 1 -4358677.9610267391199144336612471218800709 0.7642438847299322606818697234744221 0.0479914121319695469182952762613026 1.0491812233616796518566506044455079 GT 1 -943913211903546621418690695772804104160530.3771219361659840564415844316364003 1.4567776909426515509158002527957666 0.0206404181040702188213173122524307 1.0208564087950768463393587396263193 GT 1 -1937439442141182678102558421436.3425861232252384277376877810341425 1.3965047024419984032225372066717904 0.0609578752024163331954810358687493 1.0628949394408342005454366625780764 GT 1 -5303172637093.3508505589383898600154329426689834 1.3162470946862012096798176781952875 0.0938681915117729521759250116510984 1.0985704995383354510510364796094630 GT 1 -3467964571595586692065564744083164469.9746715830879786986005119090190059 0.8714273773176383221463269109139326 0.0999186679434061406358871481970531 1.1052701507890830843636148721187319 GT 1 -7122033159116590407034272.1505139751057664052566572152737749 1.2050792626767776467441621213649776 0.0444161727279489777160900917516446 1.0454327878343811238740575880764130 GT 1 -1771161371374858714122.0405385179903872560639676152699372 1.7647286648112181660729116956122282 0.0680286254606180313854351641773547 1.0704531787817695002790569327311746 GT 1 -121561037077382342311502036038581.3706319188347861937034017596676512 0.6432000527453180654176025848303913 0.0188282707564487142371680154605495 1.0190077794430241098698689265272643 GT 1 -4638168432020000.5270782257800382707503897998242185 1.4514147858720525001342640132062239 0.0786025106300873552744234679502117 1.0818637512833461062355606767241788 GT 1 -16.7638484109084110181132245412923457 0.5934856819115482947931255912311999 0.0824515627206471118230977881245749 1.0860499077718519209672391476456260 GT 1 -14659355227216424008134984832710478308212.6197834339084175403068163763441141 4.8879040798071954209740231035896644 0.0413875545879188205823688920045900 1.0422684094365632891417332273324663 LT 1 -95590934251098938538078480087.2086172907219069299558288493567200 0.0120225990960259741590347928212086 0.0576316259404746153053510735359589 1.0593590255830670532320983313923052 GT 1 -3848243642716481885966080432026238496.0473249962798258935374772937186025 1.1840534322058317839351908216895128 0.0911391094793982232808258749966084 1.0955632322467316556151671387851341 GT 1 -49942170203779656910.2338667304092976720597031208425466 5.6060545868016813986561454667452136 0.0866418125188191542615107622603814 1.0906271560677501554698990126254074 LT 1 -464359251827558446193700.1321412389754887349809867315515407 0.4418735438840333634277297069236389 0.0269721133919292782215036918617196 1.0273425367668851972006121332584052 GT 1 -299.2083902971339104865449258775950422 0.3758827049802472163783775225489817 0.0489656619674627761317346568388143 1.0502051097988650417451279430059478 GT 1 -566279024744050229200251046.2492161588709631248447693379727116 2.5631726252482300716710992257947648 0.0010772475383486436556715284612564 1.0010778281865167452338323110424056 GT 1 -175788767325654568.9634066867377405732345349098395823 0.5687764419912590545103152776567931 0.0377794717206965859373135420026147 1.0385116152121860725055003549359154 GT 1 -8457094942.6718236559359452973100063051307800 1.8203371062222407375130088626629997 0.0184251241422583727848905650016318 1.0185969810049455835025949428728637 GT 1 -36467957694055275.8271424502700305326254049437125651 0.1163152566212624041062749484981558 0.0044758046369012384690646717178377 1.0044858510388377644762025432597562 GT 1 -8922932402383648041490.5559128845226634507926139214356969 0.7391153908126795529631516158567123 0.0176802536993395409650306936975573 1.0178384163953862543836432399560828 GT 1 -285035021768814983035794639588625370992.4175557884993106394244823572001629 0.0033624055548029836623209462308101 0.0554975445775715598398363568829594 1.0570969923378340508357936110132525 GT 1 -3307.1271213308596450453976512193075654 0.1336869056235536192594304247667990 0.0317352262323070642755717685696329 1.0322497024876282683271029502679980 GT 1 -112334815325924083827328344512508781520.1622988880978807488297805368654183 0.8863918138363564608580866318364088 0.0969663274514521190866561420621028 1.1019954366163755372384380658333883 GT 1 -146999686765777414018206243.1558765633028825580815249181630410 0.0380623371313437191517165628075402 0.0983309685115819725676811179357604 1.1035077536502745734997522896717312 GT 1 -3230048620151764427096564940890075900.1645232808875179495942411774022951 0.6729212182077018095291058922682487 0.0603586558124020131173392998681280 1.0622570252629250747074258987690307 GT 1 -12561698725414060755390173308219752557710.6264992650339860004670360394524902 1.2121564090687987928836104852402140 0.0887308726677977940604511068434434 1.0929170056658956279046222844194203 GT 1 -1481929407371755235321168121177948453908225.7759244283086790953888947114992379 1.0418595431658338776511350650371941 0.0962673283858768272493695371248993 1.1012216795639400015617998169205171 GT 1 -3789602637355953922415731785598601.6561345131595269428238935010539653 0.2711516218459169732235304953619352 0.0686401541547453957146964827726540 1.0711095609744715849292032626113700 GT 1 -2610772484890655520842686.5172306911680268827420743787771224 0.5467098901165850209890071048528591 0.0857580544093963804729137353541072 1.0896600318458656789670771386591250 GT 1 -1492132468296272754540.0081054867378082798111653618524152 0.9170794223324857779472455504527784 0.0539304598534504360520998834495366 1.0554392029633050237289037475731157 GT 1 -99628623335542360609.0469657554366764595569106399433255 0.1787188157819096799767576765350677 0.0335880492891144429583167810188773 1.0341650856623133391388227029389446 GT 1 -234453708704884322080044228.6902127500839940483804857574943894 0.5373304287198938268064276640845336 0.0130034192284564330484422872007652 1.0130887038185430083049917606768220 GT 1 -33104610704513899814.8093560344817478657050919770135219 1.2386987387475040703396562659984924 0.0393647132297257667644395293848695 1.0401604563325328238945050706686870 GT 1 -197552501842340.3469929634740715439250317334926604 1.2167771445787487807971158066605793 0.0297991777881965042270393439777793 1.0302521957050807766533765518852918 GT 1 -2901344857174561498172241889959066471247.0207216383802855114499570250567014 0.2820943739665506355119954213656084 0.0137479497071254097530797244548947 1.0138433279467745347697876383269055 GT 1 -5649103982.4305782660798272559245739068328571 0.2476070698507621635426624907570942 0.0746987275320517841931984836098546 1.0776358945330821613096776179577313 GT 1 -22389692436827347.4323365665425754806452274094523261 1.7747128009070651983039838529551308 0.0193643554736567000159227572335211 1.0195543007149074102827303501582849 GT 1 -187599113.5517140700569426970120676328375367 0.8958082071863137128174039261539839 0.0422808104869195495694688693532003 1.0432006655736695190266888487691300 GT 1 -703516.4416595617573238387180567153701451 1.7782177009952120565343633503404890 0.0200865325807870791654489688069850 1.0202910097678896180141542359309416 GT 1 -1583.3336920779926117055810264568820203 1.3387950115804463319810631060173045 0.0039732654850793587359179923922359 1.0039811798753252557780191701934120 GT 1 -591520721846191371.2318821905964837616887618300242311 0.1438380062489315060883905212376993 0.0732690668125093991336871529554258 1.0760920110097264020877412093357613 GT 1 -42554935729246851.8832716800501126549829210000993831 0.8666908305596046120198770088609991 0.0343166184932348748424006541571620 1.0349192609108163904538501422471346 GT 1 -85506339633430482893037133109336547450713.8648481511283003272823823113120663 0.1219928990192934400840614765597552 0.0231515186201938951093010356546307 1.0234237245551025174223797599603823 GT 1 -2939913692002637668073501.6218622941505765627427126646676010 0.4188467278566696665863039813031505 0.0145641063667138008450368936885862 1.0146712040908847600511768127465682 GT 1 -29251523364220.2143324755037389024209031104269352 0.3240841938824184709248316448791540 0.0141293941267288372570439775663997 1.0142301643569414897624172123552008 GT 1 -1397818746484.9352371279262186782033538756116346 0.1520684711440973953720159474754154 0.0024862381392436503499354650301703 1.0024893339616518760191408644390903 GT 1 -151.8963733685134244925834067449395738 1.7795751671221930464895827989512450 0.0408949650184159236957700683043351 1.0417546845679395874316079227351691 GT 1 -46723384220.8462929705503916719867659026550412 0.9823056614839605464096495846393224 0.0495997822094080417735956403963452 1.0508721012170151943322136074913199 GT 1 -52.5571004993267765298377703808333010 1.7362475358182288181158851524717760 0.0204697020165844481484366683406865 1.0206821099846419453690290916912462 GT 1 -883161003461323085776976.3417362540091575518681197677734940 0.2372562233651832599499571245965101 0.0199847453373662024054264325848472 1.0201871414563887080717189564528241 GT 1 -5001385832758194935063.0523852947359156768852119262808100 1.2516923706001372469445485918165118 0.0343898103720155789743655605494339 1.0349950566157363215084016858979688 GT 1 -565557844550874883438003649632264433159373.5481645577444266756778549936044347 0.6703852588537047489957633863522637 0.0435696713266568843909188883555869 1.0445473326153736248007493523252717 GT 1 -2730893690497458640530347252045391666.8794860503762722190914673274226205 0.5767226706035983242403805718435090 0.0750089983082198711941458993427307 1.0779712694178064312481143359747222 GT 1 -44131061137229.6787832095348873163469120380089605 0.4068105161927381419822389786760387 0.0964715887517585798661437053936343 1.1014477236797442127993670626090926 GT 1 -4788966513070687042616267000045703886953658.9686400629340597122495304519413119 2.3622296207089634619250057228395759 0.0279090241727466700553447088618609 1.0283058823714838884200358188345886 GT 1 -216307615455687219929.7339247163134333419919717996438646 2.6225314872501953002795523256632630 0.0642401210309549084768333039967722 1.0663963749794336305750942873385383 GT 1 -7163.6394163488229925576553981040313655 0.3788693766614540266126947709511399 0.0282248740987780128535186167179167 1.0286308532411648090808798714851758 GT 1 -1724529877932431380783590993647434.7830551744979845747935865322592483 1.9719759222319731403465417286185240 0.0372516128127811121765822959274618 1.0379631815030440125000176654877884 GT 1 -140159388.4153055794105887779881317021079256 1.3301406716633570690138702778255363 0.0743559489731552989126896792874293 1.0772655123737994709744410939652680 GT 1 -106930526772727532973211613168252259.1521180807332438555657516085665624 0.1286710832200523525524016479563962 0.0347759076612542774712349037144970 1.0353949845619001245257206662300986 GT 1 -3019881594130182712499774447549578.8908477330446932151748234746467725 3.2422474809222040704023746632946353 0.0478219562097079775080058718785814 1.0490032408888573053889559245880498 LT 1 -2620221866345246413979930179327.4631890160028354072291023158481896 0.9035978865204869902387467275443798 0.0903692648081080408507536706855719 1.0947165473278733952752891517372174 GT 1 -46978764992817886.2107285149549249007448243254964581 0.4256759964638124258548829843577303 0.0181133191598172578641349869887555 1.0182793735794285860383955152304872 GT 1 -119771634322948213817523399026.3393072651198234823296546441159185 0.8882349275728985915909017628456632 0.0376254986685178792673280076878869 1.0383516095485131864448316594971750 GT 1 -93663368707067401913.8893541298508244163809054935553294 0.8876240137804777746241361078450492 0.0285661038334510436536794072275429 1.0289820555403567793451880019687088 GT 1 -110165792303461076994581.7791785408699194533532434941472832 1.3835859839219250943787536787586622 0.0936411540013095005250201765314308 1.0983199740958026898070850832233040 GT 1 -33043352384983412.9342119076542135592874011407062299 4.6866815438807715700348106095951923 0.0285349557470080258186415276649998 1.0289499920235184198695030707441558 LT 1 -33.0723187760416855180230288946359327 5.1306905628213745226742623246154238 0.0201305912575866371064772889976390 1.0203359725822328809806886555385550 LT 1 -401770125781819564630407424052814417996257.4251431081923403573540361112178647 0.0356150514846428130920489329410240 0.0663279052857298707186363552786604 1.0686299787180657092585157213377018 GT 1 -7304791371.8859267145166206552872249832060417 0.4657523151554228458787794679746181 0.0229614507960714573405177933421047 1.0232291710095322019469225834545340 GT 1 -421560165844879970765749608501308.9598677438963530344905376758127123 0.7882914303890406742918644305516997 0.0290999450846040177827556979042854 1.0295317460447087357027761813550115 GT 1 -82.0364440090418386678925552497998719 0.0725831186330443197125138355177620 0.0244410779358224808390903497550833 1.0247447188320961789176542230726672 GT 1 -500515292468808315341033401891164.6564698945061931455637126580229683 2.1770891268159180052582363777286352 0.0363255956133053862060049808099154 1.0370017962091722823121399567830896 GT 1 -9686323974323180.8890101673315975384522528639753395 1.4084371632564891099411274731237204 0.0098507242451125478797809306236232 1.0098995636294090677366315890682408 GT 1 -18455045682621766.5577566542868853227669425105106048 0.0765082497904779536049239703713107 0.0367705641574078111512376697871585 1.0374636444267345379949912212354988 GT 1 -56009127975057903579438667199081.9062176904623315922879388655429691 0.4504568411677502550405503913536152 0.0053941851686451163895010633051992 1.0054087863166637427538044023404408 GT 1 -2425666332096062780.2569289528231680478991756973822446 1.1829848002872505860349437557528222 0.0935561501557223917954039540022964 1.0982261924108522688663046976373781 GT 1 -183889204019062504.5119013746617824263270558935764197 0.0036084466182316867559161304226654 0.0952776454864097553744543591242864 1.1001271729447900890480301225708494 GT 1 -15.0754251705600015810036952041168999 1.2225217538158561225778982320660052 0.0678351323352691324289709982566392 1.0702455833049335224145320417202783 GT 1 -14.1487279305252945724422602402821482 2.2095027421755254327144101530193779 0.0725363857899576152026938957816382 1.0753017152322803939311303205266103 GT 1 -2044255794281494361870588.9926974826277656854870722066588528 0.4515082493483368422215883713286414 0.0552162952598116692024080388430745 1.0567992615591220929292860668152039 GT 1 -382409049939245687.0415787952669257292526512045059333 0.2450736342258782965091258797707353 0.0790534068940144018237569328325089 1.0823532323495795949595947852139020 GT 1 -1642299645907872098031322694230550765615703.8570238861489745792910900366075503 0.8822226490312582047131240088053732 0.0757900540944750807105287157537767 1.0788160189662175413760387984156322 GT 1 -783819006025611573909.3775213649165554218338643142950657 1.6835486682210763111007857881356602 0.0154256660973366375429504005538279 1.0155458795352137907508000251121279 GT 1 -1.4403447906342100408137883973052187 0.5792819373144522029360853253058247 0.0236456992845554124020738073272406 1.0239297454142129777217659867175973 GT 1 -308993954701.1639383925765307179489933861606410 0.3086437634037263616563608339868821 0.0160495783387284829164703885973905 1.0161797676898024373847969550164062 GT 1 -36728321715806428.1573546974493684462593474685130939 0.3551622358039989357929425103335161 0.0503117342553201314750649606665768 1.0516214895590841743014329778692694 GT 1 -3435828808414962220808.5777782481692839524875335318889870 0.1042973029686920428216346009605323 0.0889807486498158192940211885658207 1.0931912498376823064551035603727568 GT 1 -243284338.8518518246100855997652492186956799 3.2098669242025483495037827482576855 0.0546180709694293358425482226965075 1.0561662754338128561629481922068655 LT 1 -1433797530800369.0829869324481829112757902460677424 0.0784338959862381704724884751248076 0.0087532667938155318411245046378518 1.0087918016690930481505096355412696 GT 1 -109081654879138089545450015926.9767441085684128435197317087802294 0.5512330346336491178505565471394136 0.0500291970869182495593926110849263 1.0513240286355461154148016182519422 GT 1 -1193214945927.1024863328805244316075195832741551 0.9559000536480977012711482218781559 0.0647708499893155957912778143521150 1.0669636994953716066597780353258790 GT 1 -91.7024335373095909000501445230598248 0.1589822195810079476391169465246031 0.0108072133441325110562005792068337 1.0108660354602629401294106453813036 GT 1 -17543665574365248.6118687327526730991511415706205748 0.6957759165695134494479055845287088 0.0601317416815790585887884358559999 1.0620155642652021680047200666139321 GT 1 -131905946781638687130.2261726441066599778512194479692363 0.1321136111374504193542580099095456 0.0537201416118182976053877407342254 1.0552169202890156261167386517045665 GT 1 -35590577166021039839460149117568.6819603506573405126369035306162082 0.9791080300825905841899375306756258 0.0468589814466545177170155567766924 1.0479924129765347454543393616938298 GT 1 -410580864959571252328820.8413565736246519963293095772252771 1.3621928063389315106469306872380064 0.0924402435023912164324529035005021 1.0969958676306896275796922806013611 GT 1 -2404098257632082.6530129753091804602821665010981123 0.0001671405049199903302926654094991 0.0832285937737320703944561378433009 1.0868971221792123761900634768507209 GT 1 -833737696203065257782428.1736497233162912246813053129181497 2.2062892567141184296313697675415973 0.0099996413820845868956024303476531 1.0100499736132484510965630154406943 GT 1 -8567834840936987668100041518315520578.3312104783201544602940035553137731 0.8551202194115831976252908210267256 0.0000408235190725980292776028643309 1.0000408243523751317364058064482648 GT 1 -334539257945415477588581.9090563860936766345519284963600733 2.2483578658590691903418349756407682 0.0195374958995264548086558466466536 1.0197308756879049094329156653792379 GT 1 -1231240103127985058038141022540216670702.9251446304181546935962024002847476 0.7315363140842181904435280450403838 0.0216628653310085070703165859975512 1.0219009498736310870317901251050175 GT 1 -50710438.4372760904749295985211562429468804 1.2266525830882327733802287209396485 0.0611766014967843694285705364187046 1.0631278914734938138661782586555073 GT 1 -506718682811790508102173387900031754154.0286893280972292422986889424721509 2.5285642886861381472678750993739921 0.0773186279047476360286102808331995 1.0837091291892093225097478532306706 GT 2 -4033430945.1733892701975058253434006031967335 0.3049270105281781609675051219169809 0.0088229939191142520266733360079496 1.0088621469983439472016670620085808 GT 1 -513684335718027655382544588049883190717.2807985093208624341806091488562624 0.1718089705119088804924246109139304 0.0077338510171221358337592843264289 1.0077639123363812791206478202414514 GT 1 -98343.4614710890212550770338279411249667 0.9539888928253377077534641324350920 0.0242250888514551008372995956994020 1.0245233429900201394742874977598668 GT 1 -6483259033504417.6478420351780821096177201943717016 1.0737796422112077553911025538701524 0.0734471881444465374364639390383714 1.0762842334181536215835311094079631 GT 1 -12738589683682576175.1642742710782030793115182062492038 0.2487097551952582511796521344660928 0.0791435411343517398165976585571206 1.0824511084393306736313145156452712 GT 1 -29337014720269.9187634485598938734549045078131021 0.4864733539622946995119807526051270 0.0096920135088843285243557669417800 1.0097392867685108084502871038361181 GT 1 -157646241942688645488.2350631195387060701692540492074638 0.2769696768533167899298544329105522 0.0050194597742323664936343055612761 1.0050320995768384715725702019969366 GT 1 -118783.8983753141905516806526714129652334 4.1674550709949046372718435163374071 0.0620734148139686630700183951914229 1.0640836004312552372089239980068041 LT 1 -95542930.2785635448760605965059408914901107 0.4225473143020394049617116792708152 0.0495334130067407982074459293987788 1.0508022707559569192952079913621805 GT 1 -71.3515981127525875509513692499467291 0.6422385711898258110948443651337634 0.0155221307817137898437648353957422 1.0156438603650784630914693384079985 GT 1 -71.0872549450024232017672307738357413 0.6527525721141738272069332725858114 0.0837735679345044537686347917163152 1.0874917482779948350930058593560572 GT 1 -111362818580842367941555815305177706019908.2204900560016167485111428961110593 0.0603382752565942155925532553126170 0.0501480368460416359964563257379256 1.0514491347890263238635510476942542 GT 1 -632661467385.0144890793941255165604693629611165 0.6227570194134920735803130537032554 0.0310106796603805858268324836923295 1.0315016884734482225550985617677854 GT 1 -291.8957565508402206275318738089172417 0.9292278993571611534100240779123338 0.0773980810889066716341947368051183 1.0805574279656163773361488567889917 GT 1 -78143842356134.4806125523747863151208756387857537 1.1132756866654158889994819146836989 0.0545440503744171676319892560292591 1.0560879814712415249921542853486406 GT 1 -3115972838374784434.7164102416533179506791251886294031 0.1821350006999473110031331376678376 0.0494345338701512035191243931557284 1.0506982439600737881060503660496756 GT 1 -132082536157889281822646124.9872196097589253219138162440249386 2.2068549542272944269772439691889481 0.0213329921080140196285407819991644 1.0215638292524279134867130886456373 GT 1 -25991197148854500326940958231428406628.4128856200403816034819163618713280 2.2252505781658367093674800573547780 0.0823940901155579700799578310672264 1.0859872725987431801318139709325360 GT 1 -75133810450048735058450543915257.5595147177036956400298173439560536 1.8890350277583910031922657922447072 0.0033437897503280691906963602600145 1.0033493927088386642487856979874001 GT 1 -165960301260683001087365681820005.0201324040846183816534065906851802 3.1888775729358884819751816227587758 0.0739960556716418088892980842396538 1.0768767848111653198971336728151689 LT 1 -3523344528665153941363.4819569408156305879431646203922097 0.3959874177157834767642590282089190 0.0050841726814363581485503869665308 1.0050971410616939520150846341407665 GT 1 -13026151509864125207773406.7609871383096175471959243607682334 1.0009466176708257788035057113257674 0.0838228525116342216003782586346147 1.0875455405513690788046776626350301 GT 1 -18.6815626976170822104543118741493818 0.4856649309440587284815460054225865 0.0096336879700913422084273907258283 1.0096803921396933425355941002159070 GT 1 -2838268574290131502335337183649711844851387.3521564342896734544472064766481727 1.1870630901826365484619565728394944 0.0577573288824180088919831493027902 1.0594924249308544812882302160313113 GT 1 -299750231.7347117705516724885281100171681468 0.0785750456242085644107700371531399 0.0123072698683233996600673683510838 1.0123836314964021974384889835348249 GT 1 -482366703511703669786624221531.7339208023609536823621162628988574 0.8568551882183514218590772278791582 0.0561675084259209049552190280989293 1.0578065739483696830910658983333144 GT 1 -2157928774560500.5516398403151238347605227541136943 0.2044383716495341075131060795087386 0.0471557329489509763630835802269081 1.0483038020590587356829994240797077 GT 1 -2230863346756197874241732267.7731260034269957873361961384637443 0.5402692137997985358545008212166077 0.0843203974672504438882834437330206 1.0880887543892908163270463925231151 GT 1 -11814638392436466.2667806915820812632534729334801041 1.0517288400409285990725963918580376 0.0818338991876211713262407587134777 1.0853769670247823303014498914319331 GT 1 -19785.3321918702720395583130537599493634 0.6259192188552318845833009540329401 0.0005495070579687001499461564559920 1.0005496580923042355173063103652147 GT 1 -2140017460158996219475272373304.6531044872643467768728764185493719 0.0302289635067861404789011819258924 0.0797309410552017327391782615653687 1.0830891963210073636111629268309589 GT 1 -105565437712515.3414477397394862120696261311500488 1.5757975669944695919561462648107799 0.0271875652051265562910121304256830 1.0275639853736469365791202870881762 GT 1 -26548473796513264954438.6614401048203072415464307755408469 0.4517943329405292914330621689501737 0.0827825212682961103398378092992324 1.0864106715601373137792521096031849 GT 1 -11591891617218.3691177034325345520012233526794555 0.3691185997243834370217495697013657 0.0628513270406558762551372303163847 1.0649133402168330036992345792536380 GT 1 -59841357779857417231767264759329.2827629921026476223805421207629581 0.8600070992920585314680624635632224 0.0047373884565138365510465090077841 1.0047486454477724898412227143164717 GT 1 -976067545278467760898056960.1696983853828833598594065690622638 0.6440465693646827586672337838855674 0.0018321157948196582108552194147151 1.0018337961717061593925003054666242 GT 1 -237272.7196775108843640464417071340823452 0.0588089045157439310125746206416749 0.0241763762146213554696570742499666 1.0244734222343197249070733492760917 GT 1 -386.1597763411185892923681446245006011 1.5681385874831096084871828110649693 0.0421589287197698917208411286256968 1.0430734111407928858383464448622248 GT 1 -1683231780451780233834724981.7789219467179427066128901264690428 0.5757817061129112968460375238840151 0.0190168806697975460973789475394267 1.0192000271792991892830055685069712 GT 1 -4509510102126.1556480229244989184680305197625435 1.3580071370712558700599311908340449 0.0219922141731122133481423983029086 1.0222376480108201353293946256231441 GT 1 -812292263603274306028643015675.4623631758229198329353493175102616 0.5385928968135690651123459085215616 0.0716544945847096961257509678405952 1.0743513036168778170327022782687505 GT 1 -83058476090799745897016910968.7312025578257887857398131992748983 0.8367648403221882411569966930688784 0.0292701178615579631429797414906017 1.0297070346248260038313365563213362 GT 1 -748118777637855460644059784959928988762880.5083013379889115024557343965330420 0.4230112776779841445311507691790658 0.0148281321242728269192628079262975 1.0149391678777894667833020922533816 GT 1 -7503978313906699179094922523.3760329827372971589240685100048063 0.6449933134904778253130468640947930 0.0187766106218399206247001632777904 1.0189551293583082339503220789608824 GT 1 -136141495803790351887381957865878.1877809639144807822757984407091364 0.1592675468653332632145673422840778 0.0982154843657972753589163907961518 1.1033796836524342664537254704735391 GT 1 -15988015450116864189772112875.9598158020558832229782887303962293 1.1915534341643064267403348885550742 0.0615589425231119533579869291324667 1.0635352299605101429518835324037849 GT 1 -1437957128987236151558600934733.8849327672856563071337493763173348 0.0430492500402827039766640503095276 0.0288043170396401984596441191928307 1.0292273037440726876068615847433028 GT 1 -59856624340166940650803.4889783497991243341307148461487680 1.0956422627909547938979736115411721 0.0971078039187152464787122872380888 1.1021521168766343799497092072261528 GT 1 -67165571945492738962524116490153068667.8232901973234400378641660225336258 0.1442170753761048989297306557338141 0.0051659069884397187617533504930497 1.0051792964182181247098513205156194 GT 1 -8639818592682904565796659250322110972848.9188382372808333064364270737876736 0.5109281286020075096867334693162312 0.0185806860565621191437938611051643 1.0187554755287069115409734891410146 GT 1 -13076825834376010557957817400943161.4425197406572799212899417978928799 1.5303041794682654987727909755591187 0.0001127565113505887938914906410850 1.0001127628688439184416021433961013 GT 1 -106293168567900.2908378328307951487314939829262681 0.5518946783100596875922818177333118 0.0264526293768112824404401630623720 1.0268087952374778594877366538455506 GT 1 -184593378.2755265878613017672602482146992780 0.3580938693560495418127459374519809 0.0344077809935291066314927787257557 1.0350136674267354164190350578164927 GT 1 -203942420.4635663973466176102907975990524704 1.3240559934638906042127176320964737 0.0219814970036792106476710358905464 1.0222266899071439749799747006055868 GT 1 -52736668800626140799140258.9514544796654729151719207553287595 0.4813419342648994037872749925180939 0.0954806536388474058356648880744593 1.1003515853637515492286465581160133 GT 1 -1000912740956557543744313.9468801181671745174337299849252706 0.1742246357201222428623897293814110 0.0121306065799845010267519313907107 1.0122047828672411976847040908552491 GT 1 -68089189498.7490600466997258723067504899559867 0.5324074387635063218574987792443982 0.0754143242116633897938372384127054 1.0784095598816376269595910394863562 GT 1 -5029461111967472.3433021733125093372984735713550984 1.8800162840077865350293078946329067 0.0268551636938142481454148788853228 1.0272223524719571733613219973360345 GT 1 -132704575680628332903804340904.9516396904717553484079360539277438 0.9197472950574168703481084445790811 0.0372944906999342686624356285962349 1.0380077194556155790075504212856342 GT 1 -291219019029501019126232134843952155566343.4772750759398545187138006741451865 2.8621122106923288027617534492677706 0.0167564345301287448751835023250929 1.0168984118361811012965151290624911 GT 1 -30878184676796746989403088849.8820025805433888967343550641659644 1.6073452322995440795211402345394334 0.0699649283844543853938524011639540 1.0725329821313277713686642193931234 GT 1 -229670774784991014607968878131011.0367738509184178678929776031544535 0.1396272513701040789011730035900277 0.0757524306049708400025105468660275 1.0787753109821843580671348550333739 GT 1 -135021524332877560803056400465772190196925.0026972264973686657835300046096974 0.0017472807452128575665556542106630 0.0343209733404353636357675573452964 1.0349237705224584962396054081091753 GT 1 -12199511905838754.6437831730294971940861374153728570 1.7679617184855140206618893103944793 0.0078594317264189978808733271751677 1.0078904798473380318967983811526939 GT 1 -11148.4718665120044080132135242647823539 0.1165020099725898873003971549936397 0.0822373003806360135985379587166555 1.0858164189244551050266582239283211 GT 1 -57.1149467831917826787734928007936708 0.4367082107155375592580499016938369 0.0732045522633490679558976698779371 1.0760223982436494305353582613594137 GT 1 -3574011.8120957555293871880563176691136526 1.3487720347281953347408442817054052 0.0025755051476106074649404485383827 1.0025788274666524890291720154652962 GT 1 -17003882442.4891311084549262575267160439523291 0.2432844399372871272049767794039004 0.0032589505440430384781522323280800 1.0032642724891502073235416680221005 GT 1 -13504869487531289391.8033704365815054475503979384971768 2.0981049607582373735389239577029045 0.0473068379438534509296297472532874 1.0484623977317661413745358880492871 GT 1 -343326819417.7301461293147361259914493642697976 0.4378250555434628289619846201471154 0.0299295878830408197945827896545903 1.0303866203079232823883638223457037 GT 1 -1.9840492204677666067376091261499429 0.2428281979711599681870596524580790 0.0935317212504630266421642664615775 1.0981992425053653526421727947693063 GT 1 -945119042441833132793982777745.2602948225909044983134740301825737 0.7361955995049157338129216808439612 0.0680867964700316815244394332721768 1.0705155978930352759221342107165971 GT 1 -4877287857722974908516597729.8440931202369497265493852115729292 0.7200122150532145210075328219779481 0.0263594115786971263419500879592599 1.0267130491665837972372176482167326 GT 1 -3677894046154870629962075.5105008700747601198555154468304010 0.2312309073901438908956414158740696 0.0105870233574881320071763400988200 1.0106434646059394446653226806563887 GT 1 -149385.9321632730220399157537612787501725 0.9525202835314531630951930848576839 0.0781707366092290981520321878671468 1.0813952532777598807792856106838877 GT 1 -3609899897226739085.2032957690627294556469786675588100 2.3365954936917448014818597858101396 0.0796811391688885987929938564304251 1.0830350811268455429277929013691765 GT 1 -38901246045445943637613170.7553836184373697841031445726076479 1.8548117193123579682300759501741130 0.0698885383270170301032828709985478 1.0724508487551520250783275621272569 GT 1 -561089804.3289511027373659233265782812060223 0.4248250341114967052325337091158783 0.0285923931490469834817925762055855 1.0290091182889718499901939264400339 GT 1 -8293183673519812853349896879.0029421269228890208031203326664484 1.5857367434129933522753539174846790 0.0613976742575124046361278218437117 1.0633633977402875530522900962211514 GT 1 -649468232541718847841.9144685924091633017753121100101664 0.3916727306481493931105664776437388 0.0833664445405239564653128565950133 1.0870474989589554701529364654035987 GT 1 -2352425790714898136258679918158022751011555.6021916504884861392507715013591210 2.2744257333799675806472585529798149 0.0517992663702142074424582361263326 1.0531890548065658517098531529698446 GT 1 -1121.9925572194325790436551663742162343 2.2407655280527035406134348344258207 0.0504604824088826933550170648234047 1.0517781302265932028665661198696007 GT 1 -441355510654390339108532159.3075794935727137222633248828056774 0.3954932720464985657260691836712500 0.0261171608920511054611911259781335 1.0264642709650267818955554373329337 GT 1 -3882894281819744685.5825507384228335235412398770431346 0.1828206653580169058777015963776586 0.0953598355388521399232017165195138 1.1002180226795856210804166418247713 GT 1 -33562528943375.4665970307133053348113733305481104 0.9797044760938783926279789069035783 0.0990686299044331795878506198907832 1.1043261950900741640443948845092659 GT 1 -2651.2813544834319735409793912371511404 0.5556144047594272945697526839945702 0.0922487937274255294663789629953295 1.0967849398286745488499266009132702 GT 1 -127490098478927927400.3386120003725043465624487747860584 0.4969721037418456992620684630345043 0.0445118965503441170040232272553396 1.0455329659814580305796505417090563 GT 1 -14816564265143761956875321.9816068246818114156129067275185404 1.4424339203504449171873256784759961 0.0590897394747725102955810850450775 1.0609075100174749894565033870593417 GT 1 -268.3895027203625350383162323147249683 0.1180529289986988846196237571023441 0.0101466337104221402875366541210607 1.0101984616826026697030052889025386 GT 1 -86616006995168142510528428.8622632921725309459120003850711567 1.5028235715834307282652121535421749 0.0369144016424359297214918996995914 1.0376129839508951519369944388174404 GT 1 -107433437.8212352581254480462203745725165016 0.1637016516355231470488367342586425 0.0234953652455207443366778772193011 1.0237757823843175693740616896541380 GT 1 -4845.4838233324849534030328875885583467 0.3420651435811961008844025983996659 0.0926113179736941773839228808125627 1.0971843848008509375419772943311043 GT 1 -502679864872230084720123.8359876903089832793717763619475721 0.4420991178039900760812964017446834 0.0269383205428010352771176011488494 1.0273078077906644737216659688039342 GT 1 -20652954763851496.8333271120369887849493997662404735 0.1080862273700618150701058347369384 0.0127373510988019241333798420827940 1.0128191666399735655212980019676376 GT 1 -1310749786443502581924493005164848968.4405967073726607386531612349387338 3.2913477216099193444388189917455111 0.0547269518023019335775631733028581 1.0562814533317417380534814405865906 LT 1 -2839622745488746.1598459117263026673934918540648208 0.4527697039373486591107234595924180 0.0173296877811333303713464232713405 1.0174816044915238131340148178080444 GT 1 -574536209125392784914061887.6518079862576865592141506510171042 0.4099804851232206576297620514459352 0.0054147782259990320127088940096966 1.0054294912735790868752342857299373 GT 1 -1557535132.2782609325157891043764779752995864 2.4872716507655325110916580847609359 0.0783460523611962278677551461090008 1.0849135469567114687240480173087645 GT 2 -179250805715869931823828139257147003.8093540555433149509683229348054718 0.7252869159021221322268857256878036 0.0934496111371812363772509629855032 1.0981086641624009488309107530746404 GT 1 -72674877436947678557921357273094491577787.6566013782753673838671212131978753 1.6509020292313817375708205673255528 0.0421844424363936199217904246589784 1.0431000481865359271245001885118799 GT 1 -58983734797929530.9306926927981330230499536194797477 0.2117223791016343072025181012367571 0.0944443522259082698850338887672751 1.0992065482470329120243013198067499 GT 1 -175269236475777591010550088687824563993.4772317127340000682071347648315185 0.5215112407303215318707907653372180 0.0795370344816748091760235024006030 1.0828785121239953222232020716773219 GT 1 -14056713129014089715456605503.5895817918544230814151316984704302 0.7509145883078722215094839744719365 0.0229476171381577810516087570331857 1.0232150123460975550109935111437845 GT 1 -15175947165715591906387367705190952.4625388277565839410941637912532000 0.8037444442449832438931904679313250 0.0734975699921951599677203236391076 1.0763386104778578697062375733100875 GT 1 -192242032.4605566587891329074238756201673283 0.4370789034213437104785981261004416 0.0944554841542054491732147260465259 1.0992188412482936151772293964253821 GT 1 -33430853194626079453840880816135.5403640314861449724337394069295483 2.9303708749310959868950426733232752 0.0771878901843108421612943440363634 1.0803296298647752529943236890365691 LT 1 -3378515368291737125962042837.8527396567829665426545294135152674 1.3682349339972176485900597429909898 0.0154404006617954566958563378442158 1.0155608450631653034323236152874232 GT 1 -42620.3366096216424283443382956254672055 2.6781328050618943368050087546924526 0.0579589919973915135075743810691210 1.0597064724418297082984053786808346 GT 1 -124.3808782122605038318143070558352529 3.1422832506875569023845131929317629 0.0258889076437541853497099992374428 1.0262299239830831924126942145679673 GT 1 -125159822691055190139912838373020315565908.4610176150967861118076682732808759 0.3845852448069719530508995945830774 0.0686865254454595720481271966924448 1.0711593510157159649689091511177509 GT 1 -36664559679192254909.8126932602218580435568429558694218 0.1413545604144358864968573014121859 0.0865224487425991711225121016608911 1.0904964778969012913963188058534988 GT 1 -86386076593944994893950259121067173.9821395896161602820139520347923253 0.5186041878539572415303457574919560 0.0413998520584472955212008334679838 1.0422812379257681639756635076573999 GT 1 -29418743952458646.1401629145772685057969922249503387 2.6221853720451074741188301084637475 0.0708707880292748276036489461880337 1.0762091362159050823849426397367497 GT 2 -52468022695318.3368973398377285058346628412621911 1.6280655464999617789648551577440231 0.0792328133295247023154834293457171 1.0825480578844133012003924277637905 GT 1 -10739084.2587222524145389352001764149446873 0.1838895918518670180846167939910299 0.0745860527275121516939812604982810 1.0775141310078493075229884695675842 GT 1 -193.5463418380385614228233718197746543 0.1613165132462251068399698953823508 0.0220410651036732966364041104502545 1.0222875986874381689631139801073478 GT 1 -11934245077.6337738457778465610186369886896119 0.7063722401290249304673762952246632 0.0598738618942168844017548658631440 1.0617412232464522522011822655711660 GT 1 -28931642205685377570968204.7422956455534843235358278441448793 0.2066342502521380031756835883640753 0.0736660773560610696802813836776645 1.0765205017324085762818936666136764 GT 1 -1452.2731073312093876347990819811824590 2.0417055660401644076616240035053654 0.0729618073535844423085028051816654 1.0757605139991690885084069109105053 GT 1 -222752192.0441115925669900696573996914968967 0.4611957201391196061635457520734485 0.0092544702584200154613546893982173 1.0092975589161396565837100677940045 GT 1 -624968567835026829248691568.7480888312605905475959509772522903 1.1217252280584364718718044052546450 0.0035483111017094099709463529675109 1.0035546212889738601229972636881267 GT 1 -134205894912518689541491588729335370.8572497721063377923073042906142272 1.3570991043706601020392313138726852 0.0173677628342413632251250364114930 1.0175203517603600730430826096299053 GT 1 -8736254934823157451917.8384146786867654649742782373154213 0.2034626603479715608695260512808396 0.0614227301811627783125698842453862 1.0633900930268878416062475308934369 GT 1 -16968375305599480.2311310342647766858772870791038983 1.0771756349156251085205448118733386 0.0503267326684578594159759102355371 1.0516372826694287311157731607997292 GT 1 -27332374190803041.7784574145480885890055785377610075 0.0836279147985787061957354496987626 0.0639872887835084959836577307347871 1.0661262222372577820734274517960649 GT 1 -789.9039793033473724491516434592455664 0.2891866159214572398076712997772601 0.0150406791427989271114998930927537 1.0151549372849906361397827538582843 GT 1 -2223.8388246586773987082568942111955733 0.1198003017744562243335854843048753 0.0127600860554690479563678139503533 1.0128421951810308757237197513594808 GT 1 -141273.2805612777096353857570564471876434 3.6661407323237626515694263912651348 0.0067564017715397406548711860935515 1.0067793295853601910107254460965840 GT 1 -263191.1493120824886953408412867803347136 1.4084950305736342049610690976593112 0.0194815377084226492122511618108943 1.0196738040568406363819342771775413 GT 1 -1251670623791788552792925403972741537.2718030553003896576106884794981003 0.4580600280291718053163437660999823 0.0384652373060584691031623422009571 1.0392245599589810516948842529912347 GT 1 -4534816.7928623971354903900797201597169156 0.4285465471608912217310617066482380 0.0556234499201864034519406114116344 1.0572303045748111710511692383202949 GT 1 -237783014782629514700273501413381673001219.0692133838463158413642200476939962 0.9434648035073380108083072786557632 0.0870165491093668211630118061387686 1.0910375246296153080748453252112927 GT 1 -202176.2150246452743359687873828417055828 0.2835980813785157917580187570269111 0.0703633490949765063103319254325237 1.0729614671287529347647506240852879 GT 1 -94.8582350057374904149226870173599302 0.0865564114536412728846237127806948 0.0530226277895220942254272551367918 1.0544800802626508368302983305953601 GT 1 -2505869946569461325992961078350154.4973364459740426059315119190626843 0.9556553943012732555099699584772659 0.0438588918651633942014145247650060 1.0448497741714326073344709390921858 GT 1 -29122691056135426.2102424360376049354327903148565359 0.1465642129267038514727035174159968 0.0072113555674088328601667690649419 1.0072374830775890810828081908970761 GT 1 -3124753258096224902048525158461551.3205271817258958184519854228957490 2.6333414984008945545008900385770530 0.0985442794669884071235698005722288 1.1037443550902607950560832110186325 LT 1 -511438337363492603875125819.3246604158065797066220887394363780 2.3579650500616664788517594277516884 0.0270494504135008715133664637259476 1.0274220207120038744506741618486646 GT 1 -8213343373634.7419792598463436218754410501113610 0.1300438720358978716879897976022134 0.0725524533883915909406401502075036 1.0753190396182388678777292203125828 GT 1 -48925511218861189990202226654451341419.0365709002353310602763437942160608 0.5365697391622249591285129594652652 0.0226428449870888461342213963536592 1.0229031307801993629458130077705827 GT 1 -131573547531024.7088778398379273174300465960349836 1.6547879971929914541073887893884293 0.0901581980095388122033815910019364 1.0944845385503813594446699095700786 GT 1 -51736260789248121333354843938847.6199392728762747244998779631199899 0.1635422788050446018513255338495255 0.0057354691582094872685392437822010 1.0057519801237981340501449143253555 GT 1 -1782413.1094400792451749901927158030568785 0.6968030875026839452343726892286277 0.0591012445504246336511302894115096 1.0609197376936680561776565476891229 GT 1 -579899256060899189590226780174863686.3778763120558970113227351225052308 0.1220796133550785122231485496962705 0.0650033213591668244185843343182114 1.0672123019555527237941264891660502 GT 1 -4.3100167496219600873952888192380190 0.0737782283129550498179057040184758 0.0944026775707836574895795820751363 1.0991605282191086121733099867915984 GT 1 -1563299751393287552376.1432970232526121798864475314224766 0.8230745090943369196852128736294439 0.0829152189805140404830741319493440 1.0865553562343713377774641698107106 GT 1 -2056898641512602428227245160361275040094459.7318263401145442860177482689300360 4.3362581353801694087604748071532405 0.0826401840224710822079165642638325 1.0862554998521682687267611383456106 LT 1 -2677839900139260491.3682785005163634609344603726589146 0.1010334602958585204602376567883448 0.0892655217052639016779446691419333 1.0935038860114236353451177410611135 GT 1 -4663039047129895470569404762598.8963174136560233367978642318165053 1.0909179131732904089847290471725894 0.0955460403681450238574258041453958 1.1004238768996293562056446680097524 GT 1 -302691194630554378711149348681466.7203912791798429724197884369794017 1.2103510645851557058538666816722409 0.0607018111318109522416505548405449 1.0626222901553680198168784535673759 GT 1 -1324399176914562396265295708344373953134628.0860329722205828268743571183722299 0.0829314936351336316613491951711324 0.0072911300148637838147692285163303 1.0073178402141944854227458165144291 GT 1 -199722.8884111470508334829786302422646689 1.1448865480738724989506954767689102 0.0268805318347344418603324239089111 1.0272484210186220309692651185604916 GT 1 -12555269097121.3678474881223350673326713064318611 1.3225112232147684425428794185118980 0.0042063207095728704100901688543374 1.0042151921627199865905451575949634 GT 1 -269318948120263194690935.2699397961589102102293220141946710 2.2348082843436100647837099671910340 0.0268619223685804427283913753259719 1.0272292976850275054608399561318229 GT 1 -18.1255687449057484664569956181518801 0.7926477592338652397708473623306376 0.0004421113993671908247120455698218 1.0004422091594268690531333937274318 GT 1 -7695136701418469.6338352007111486214272875116830689 1.3910881862753283855771549860750660 0.0231803751320073284453509316979122 1.0234532654087646611405416876398276 GT 1 -15960648037075403980052083624.0276205256945472760274469439816201 3.5036519087794729645345112883233888 0.0448948718433095952688438477304902 1.0459338627205014814140902107413813 LT 1 -38061193715001265550300792090506301978.0621974642577029205414036001745477 0.3173561762021305105189018813462418 0.0420188250360584105799839574780568 1.0429271515551388402259545571132688 GT 1 -80742945082378815374.5415546532472365353766821982655768 2.1835734059069864503569209738353319 0.0178375437047336471396308895376703 1.0179985502011518366176019559003938 GT 1 -5652791442098441.4964230590755677366077553748165906 1.6105561801226271588299566502101434 0.0596467481675736611302723985349831 1.0614996744914244749373688766348698 GT 1 -86542126473818592593939761276826836.3280657696740741612249033399678274 0.1428113971333321704249396063563115 0.0662380376894573422446294698192898 1.0685337315750901985278056528985737 GT 1 -517303209881117.3794685419763938880441668703141000 0.0130201196565206407539788516911187 0.0979075864247218756738810999348868 1.1030383100929859198284716442885964 GT 1 -81653.3656267639877845279432633537065862 0.7123685489036548388805796604526936 0.0574819931770822755070695444068993 1.0592002544600706437878243341851510 GT 1 -889342714590413637787677542002942680.4991433092998284045983189545361086 2.2044002455445129651732565651373067 0.0469713101773522566655138229438345 1.0481102710353782735931439596803649 GT 1 -366549414.2677898668997514804137737578562949 2.2367348154826664348452487923697189 0.0316768477750309764611392221990275 1.0321894124728964587555400835966209 GT 1 -111249366332858.2830141578644997765198857878936535 0.7117660802718475560586551421992212 0.0070068809803590494304555291571550 1.0070315444477398785412882611358264 GT 1 -8133.6719101460672187976332326173069383 1.3058559531858968358288545901398678 0.0779901447594048589396498298436347 1.0811993665015472632539194710778345 GT 1 -2050.7580737654859789798568537146296192 2.5752209494802676015044906293035843 0.0723952037248529559079153735186058 1.0779732268849472086652786543526016 GT 2 -38650015.6615551970251250589419380144841542 2.4789130135665830122728311903945227 0.0659490703472571112201654445566901 1.0682243137037937251502584257156017 GT 1 -54406835.4547666308450055959380340485959707 1.1855702007007174233055329942754441 0.0417418238276797462287334332869518 1.0426380423578521639267563092368317 GT 1 -53547069693030731579408.9977831952523156154727839283139170 1.4603552379608300771974034125371937 0.0698552921804760518024896823552066 1.0724151051332898943959469642548254 GT 1 -70395599875185.2148976191563223077391345883998731 0.0201788988154364787341266227683397 0.0851353136706274613941579583505498 1.0889791084355375090382110410753981 GT 1 -44911646050839403063587265705210232314745.4782215377245640648058914999253743 0.3342809934403450168465202378183206 0.0607423353292199888158228803946526 1.0626654341452994130655060062878074 GT 1 -1367987292221875364886.3222160266227477006952164375782535 0.6059170936344367761495038148858064 0.0441023097903578107628930900339307 1.0451043902667966030968638392021257 GT 1 -815.5913543966929103840642521106309281 1.9320123431325894149070575547165602 0.0955457833945809402643249980251043 1.1004235927795535454723187093751286 GT 1 -3.7836353710116294274212164392460543 1.3657914212418393179193804597600668 0.0614291171215929231734582311300169 1.0633968979670530514908697646743531 GT 1 -73167721499568267850453891236.1008625708626370230865024679324604 2.1728400599459459693318887184683280 0.0135249817335722639166017517022416 1.0136172774423168337064570495981007 GT 1 -5029750018991887226718217511463511765697.4192574332771880424584228250451205 0.1930504022350240716926256869674594 0.0689843110967884183858628280201104 1.0714791501787316681505704969468041 GT 1 -3023721726.4722827102176273022761959812809458 1.7976486101614745198631770908727810 0.0887664409878476739179549900811820 1.0929560380583534299048168733287068 GT 1 -13898.5282503662029172040860642823823318 1.3382588777426203628160776574808879 0.0675395096807553416118921293629508 1.0699284979926214362147315074628066 GT 1 -1204321.0560004192105315091906464629525795 0.5350400542243287179612425440419518 0.0208303430221042847490179823918796 1.0210503552676233720201417795993754 GT 1 -12130088453903892277573051551547669904805685.9451839702748359752483518944225072 0.5576338337859168582024071902616679 0.0284450728001874094216031797356042 1.0288574732144425409397581377723884 GT 1 -848465944719753475477571978895325650570853.4703988067209660773962067644885154 2.2430043020727191947095544852423328 0.0101665562376083763740483950119106 1.0102185886310530517454027136718858 GT 1 -233002406807866437073538674.1754861132826143557619468364131659 1.6959753382291702177151775800949841 0.0434800126237588750381689431075476 1.0444535939518950930486068264229268 GT 1 -2268447207.4877670168075775837008633685512067 0.2419659896043433839106237704869456 0.0455828281420372489631004089120815 1.0466544160531206230118808976836692 GT 1 -129281273134622417742513995511.1181898079716185156420071726437646 0.3856415959801439290900477278953079 0.0966487770361570030060681736971563 1.1016438499535827670778347921066795 GT 1 -12568042770774574.5766039589920509084701540232820838 0.2407692225978779640296854804760488 0.0087370474841270749148491427469468 1.0087754392676322840446739420162361 GT 1 -2104646346504993232.1655916164716751691639642346821093 0.9641898372679360567311066734185345 0.0944461096142933066499885369388624 1.0992084889230086157732964397224033 GT 1 -17986160353582864369929143471706777616.7875449829515585758392780410735527 0.6939655256393866455619955273387628 0.0727834101010127323285763705415220 1.0755680946457971095631451017791818 GT 1 -1545847.1384568089563912459243749684586808 1.3885622551949386956283300466485736 0.0745111857455127414959799146956105 1.0774332332064126982561137949753083 GT 1 -3025894818363.4778887728574334528473256923613191 0.3027320977135191252768082237517345 0.0235613154321935649338281818267778 1.0238433216580336917364561902739653 GT 1 -767044.3364163854760932682916903798029532 0.0612820862238029604585510630640361 0.0369411694755046130799846632904370 1.0376407781626572914110868911241839 GT 1 -129181444221222163.0740516072665359992312345796288323 0.2009773346194020173139479993475790 0.0368531525092649818283644236926111 1.0375493892032066229362133381181818 GT 1 -25030307857710798.1249365019042842681756910123232958 0.3377192047080822238850857124108269 0.0465576009750890116358036099655629 1.0476762658084674351662581678445181 GT 1 -11643777077531548666295104420931885275346.9771634444266760807547612967331063 3.2235907623491248414768221072402856 0.0355197259059680857026317449962937 1.0361658987956974604511301532923629 GT 1 -46.0451329766656789014172799334730280 2.0152721939389414686394584590941956 0.0846440124568507221421423822198605 1.0884422319456242871705911393215746 GT 1 -495039408.8999894000958405221960072226978708 1.0197151367408978237304942171534246 0.0627871916121517054776502735722958 1.0648449057881836228922097017874627 GT 1 -8089419838169169716221623406.7532517998102751100640809282678993 0.4115897491309019495493411037721771 0.0494054894696455743977459460311274 1.0506676895607970776332813198516610 GT 1 -1094960969.0912628753001911889311021328546695 0.0583299570938402560365930521646613 0.0661009095705965342326289593416185 1.0683868868155380872593843910460033 GT 1 -70889323132154.1859731322504969952065916874391017 1.5264121432875393445699759208955499 0.0453347409846690224701769399612642 1.0463945140659117781068215579769219 GT 1 -6954001002329852.0414170826700736678994051921140881 1.0472115346580224062699091506421590 0.0861889534729074561372653704026459 1.0901314613649764592419070002207382 GT 1 -143733411255403599834794069.3476734123686910322386817052119865 0.4163347183637773055081141288425440 0.0597889512010257908916093402256658 1.0616509089200217021029275705415595 GT 1 -7585227604329092365825029426.8576670322107466557039607311427892 0.6488983733771027053931827054335676 0.0696729740539142767957906042369569 1.0722191138437298311762995673874264 GT 1 -23671487315349685681842296759056864.5594672260329000271155032267840131 3.3603475624647851670191776702386091 0.0399149516377075309188595919340190 1.0407334064002438515144700243575993 LT 1 -273611651048134081378196.9209973225776987269652931213886228 0.2912401943643353530144286698204779 0.0206230041655943526804479667704691 1.0208386280085491314738396222905251 GT 1 -634759033334622115318283341606753725.4388788456337112996815933511965558 0.0663003273228388105077941509650702 0.0167489445510606383406027530616153 1.0168907942419212774987547445064581 GT 1 -7631565276322403602627413.8365192711411512917364753652338662 1.0603458429154575556235519306253707 0.0218127080423259853787480635754613 1.0220541222128783854898200975783836 GT 1 -2843593007533249597957.9629504671348710613339023445389106 0.3398361006312782152513263769104228 0.0088197118131870636374693367483083 1.0088588356821279632119711084387631 GT 1 -1740662.0905201616729687339531188851205802 0.4661132001280849837412865500668998 0.0084232306852881861233986612625442 1.0084589065716165368241956434920370 GT 1 -50773278.7536792790278495673263755549597738 2.3830515081207031793667278951032753 0.0791834291419706427219921628508095 1.0824944255830161895396953165771363 GT 1 -10.5246076981118446487184636258700720 0.2030150724052545412277318177320705 0.0165140159330079423034928904910444 1.0166518923303287846172251575354979 GT 1 -241189.1520024966166771308109096286477784 2.1549961195401298971822757504424756 0.0772105686587025136843519934953678 1.0803542055642283386935380187929658 GT 1 -1431651819029184814279163384471206039.8134356732152662217047103353626780 1.1514206763054204804726766706034675 0.0348670063394413494239014841469319 1.0354893698742502922855575357433216 GT 1 -301550927.8568867988584618542650667596535784 1.2618903524136775374723383701523383 0.0869505091247926902026178724611052 1.0909651929831346475592747724752709 GT 1 -94859602825016029030.2613708175673124227792579458514798 0.5483076780959381546822234871177209 0.0335927421581791243399962338244579 1.0341699416457844519080428932235445 GT 1 -1046301406869044356206914601589.4399968735919725379951350720352537 0.0621272714803461538616162116811992 0.0836046397371056573100493820476137 1.0873073914198756021289673421539961 GT 1 -1420700916854870263818440043259016.6024960796139188460620152643119548 0.7900333342250918908951618634190484 0.0142282694208844235117884130135561 1.0143304617510584991656605417072101 GT 1 -1042634.2101406157353713182534995325388975 0.1025658383069605496976620110091910 0.0232018424331800264609336046547497 1.0234752423802752369171670976113568 GT 1 -631772350233121830577393151272.8626591527689368313606011638186919 0.2611296014002846529558787051311806 0.0014626264315233216584097235938534 1.0014636971136951283215034783170065 GT 1 -76649546735791606826954.4237876311970592975191858961780735 2.7507627117153070710892435270747675 0.0786168999496089693472762724685414 1.0818793682478447751430059742878674 LT 1 -865972270457774116421290882212.7295731873817448881086910597576802 4.0604730888843690341025809202357120 0.0509527654779747305910225335092669 1.0522967086687700835232639086392916 LT 1 -191971594371800978380388682115.2733413568581792281207774261830763 1.7805155285679998921465198512766445 0.0318440054282880285435496954542513 1.0323620532719969701428386035455280 GT 1 -1699696889327.2824563252580921544304634868040424 1.1181324578763158784129667142440921 0.0967077896298059036509750842538141 1.1017091783881604576885751376626806 GT 1 -188540036371006.1287029021139165495374023404683873 1.4215714119178636450426153762230426 0.0226256934446957818565970632390743 1.0228855820347775807282021291180863 GT 1 -1487119584349162621226557359.4384584348861774786240358840460479 1.2219808851509934179828988173689430 0.0143400074876452198564195614784449 1.0144438190289917442199607727401400 GT 1 -61.9785368677762605531226124431111818 3.6999529200223371742274423294665745 0.0175240575637494438298485317424081 1.0176794216084834451169954636864730 GT 1 -97597607685924.1633396233280759857893200533740328 1.2960044855092702581303145216751003 0.0079296813750705543973321057403385 1.0079612884989231610544918757154685 GT 1 -1808737039754896123407777.3664027195530605881734370733002873 0.4342112869809107957232917561881726 0.0261624466286023084718640469386003 1.0265107722356755088383079705586135 GT 1 -1905.2845072296612264633958680867954348 0.1203560660077976441902807154630651 0.0698204622346981864165998566618477 1.0723776601063118305221438749989647 GT 1 -1129028104827657009902721806789680734069976.7890666326050070968039831094879679 1.4401693394867306282667511964636780 0.0359044622154163953800928385570782 1.0365648836965579085352187964340345 GT 1 -1945787936845209159953531.6063910052682648821719025302679086 0.0548121970133531121014378026554207 0.0277593790189697790306891462219549 1.0281519527081301481880745922957711 GT 1 -144720592217625122777277329.4242387115252871454080699334776522 0.7509501536748460712639135314354556 0.0075889381867057897054238371872720 1.0076178806997145407209295303852309 GT 1 -609439606.6430267778995643688783299773462668 1.2632359735007870725135407527664529 0.0735117436892561400248143481678401 1.0763539086627499009190000772630941 GT 1 -163932.6167799469823259175756041382856656 0.2203902865191106378745631839823522 0.0832089192171953980595008922144079 1.0868756617090327961247758121954365 GT 1 -1713067716.5942167510592443520591007827456256 0.5448074478289452744442952830672240 0.0513983803976645849887653742521529 1.0527663581794391944750913302629202 GT 1 -95997669655319050476104202.3312465605640355765832114663461050 0.5082624088220286717594518650814578 0.0539948850801086105561557200176328 1.0555073030528131837632674057254672 GT 1 -82650320459.1356873721313174544360350304752464 1.0359047557712053967965723173584371 0.0905196430969978591896533683432679 1.0948818789449316868778715246099571 GT 1 -19845315119.9838032241271073416535855942264835 1.7794113031310236876370425927827045 0.0197573263352631546900780896912929 1.0199551117833166460553446247563607 GT 1 -324587103575606982914348100796.1036313368477686851637870402356595 0.4490775342060560154514271431857721 0.0728263425116298940330951877068256 1.0756143981794630352222802020202103 GT 1 -2178848325484056252343477.9972279556889024505268050117465218 0.7247636293766135178652706674123354 0.0852988162980436823715394298028587 1.0891578422330243295922114313272615 GT 1 -14299059627790118192.5859218150995953981087934997462339 0.1587623818502243430258390199510040 0.0823597262512394477003977863384817 1.0859498238197957051927534643924490 GT 1 -132981369393.3321995353806489570376230898662536 2.3857296683942400841186726933568339 0.0685950984076557954115879165982861 1.0710611858405096984366727657574599 GT 1 -10726.0786231478949617860491830312899220 1.2017238849121404918313615796579371 0.0419772135848704042862586657249074 1.0428837158921305048269205823472341 GT 1 -171237743406866099828613091167011746054929.8100090791965542796809467267896640 0.2077078373902901832160750855397872 0.0104624956048717090133606452978086 1.0105176122877798790688563950830482 GT 1 -4139406084257159984036063.4772467848460683991332398867851919 0.4717431863128352746337995040705932 0.0960898188866977734968469796197215 1.1010252807017623270070123350866677 GT 1 -2579987369649744249607521.7734098468652952314660042990648328 0.2100362731416210008653270850614279 0.0334634854482807836723018997352814 1.0340362008593869797587464009034824 GT 1 -2017227048115612161313370828675086898.0303162634238833891697978424466388 2.1503093402399448985762899570857573 0.0673907660429882490668569151699881 1.0697689933519676711268276102356959 GT 1 -3752637085042788319946466906.3386278343565492184378402011334542 0.5613218344306758117843262506681097 0.0320904184961521287854662739966327 1.0326166036056629710891366691810632 GT 1 -5697287474720994035304771165390.9547694641300812498158779937420085 4.0804972409859309892702896767609445 0.0457514773333852928592354212056102 1.0468311355197833885848982757704026 LT 1 -482558330936325918421139560211291732838.6540307835125639489117169104321229 0.0659319705832926592669024515841848 0.0824136816433264440225054404058059 1.0860086235258752060797723136260743 GT 1 -1434759022804984.3333662015952351939458137416162019 0.6623694976121671987891315081391472 0.0701676926504812564723552877762521 1.0727510237714182830780202223203330 GT 1 -8129.2845142237876169297340696860439180 0.3628746379973549337084968098842649 0.0358440945698907205745541601113821 1.0365022698234991592906489898985410 GT 1 -31452660379118710617445362.7596909387364742323002822253039060 0.5055880966428106567373909497156123 0.0151667166221411857735904608274157 1.0152829075893194076521652114505689 GT 1 -4817561019536801214227845868251204135110766.3651892178513987065691035679673171 2.1498948599580960697287297285205372 0.0192709057492027108605284446642929 1.0194590102034822226463698795144374 GT 1 -659133254078174145777853772896280414450.4716453864789232924671151578184834 2.6692937467776642196416216406314606 0.0223740912017076719663973955528882 1.0226281884627449683218024337452249 GT 1 -88013319530746.8110046417962991166360029106556662 0.0919055019606726035286217666380934 0.0548268717984689340050262058957038 1.0563871638222148052296526471921014 GT 1 -3234090906259994353375303928183094468224.2428751571509303159564834138963127 4.9393765716118176126614894902757684 0.0363152600767253814299932024413360 1.0369910711332458605506528000183102 LT 1 -2071.6601008777496326363832615479102356 0.1426741579077334209784514040900075 0.0409521062639342326576402804643143 1.0418142640151043270285483974662217 GT 1 -50120743081517538881158233605908284925.6071099834542367712048727477958611 2.0826489926212470623599292465628029 0.0430068786154421814900115635407155 1.0439590752409518214809038183346337 GT 1 -13960802688.1955384127171452089279230089452365 0.4379258072396809466257892347340526 0.0229263304373741196144345056913756 1.0231932259308782367108362433537119 GT 1 -8537406850060497997499764789.4492578443543923646412307489527910 2.2569597073321713376791917774393079 0.0596859341983908803208087065986731 1.0615413469663544778105325399427604 GT 1 -26435383856.4089932836917387661859554385288830 0.4195834585103227230859265552078252 0.0985948383205257284850340659802455 1.1038004424501335425145608574561598 GT 1 -3617549758998118461325540271221994.0057715583003205227990233736144992 0.6845331887951948323579169013684557 0.0348479567236779034125815255451946 1.0354696322547800675273802617756148 GT 1 -49093340971241088454107899133719432735373.5925130950406557948082756346667252 0.3410885891584780377211371932055080 0.0249272304879758735983902221445891 1.0252431753724247159279941195957713 GT 1 -4052632014.2186492543284845112342324852539271 0.8440428306020004160852021189405683 0.0687543752829207433860786731215200 1.0712322075897894724183478555114633 GT 1 -7901328083171791479.2610555009466139073615552295557818 1.9583918962485068291584764530570457 0.0877260090819320122617925015841200 1.0918149053892199589076433954879600 GT 1 -266640024864889.9288451890777530043899303465548906 0.1602096256203989121664268192416340 0.0337128410968529599139879135588855 1.0342942229990991589142253503461957 GT 1 -650005245393.6952625218233045759257210434690919 1.3252264126377877656561722454247045 0.0362284435905875948474503518429635 1.0369009871335601812845755658515558 GT 1 -2892486416594010151644642024789.7145746670094793874877246511538207 0.0632486360596020445213452312130966 0.0381748291018509166239177914921059 1.0389225798653517841510596326775938 GT 1 -17127992722884359870410920478672417031.4874162622980789806260989628465681 0.8851259033319420699553274173206415 0.0754571503556275637476750210959732 1.0784558802356668954894784801259430 GT 1 -884629645122899111766116473606626296412.5036979936661373315355842746862626 0.3501416685601904735363913601779004 0.0485795404034690054790483466214490 1.0497991904889536991796314050752424 GT 1 -206717203717011298576361688819.9597685815805378717470989458131511 2.1831576874170249905821819294384828 0.0115250340721425182155994823751355 1.0115919620054014445650604631957221 GT 1 -35688134530478896943314705258927852348277.2162277716201177687491704750711293 0.1100624804977526490015323922366621 0.0123623332376465084819093402654504 1.0124393825438461608332180468693117 GT 1 -1725166210753.2940275016313510271973518560761497 1.4015957150395386133049883128463360 0.0884310442869880697723054716731608 1.0925880369151300114793399742069205 GT 1 -240.4762846308673188481154431397134347 1.3358476409006161705045747114399809 0.0907900042818812522213528977156202 1.0951791930935280202579782758989385 GT 1 -13.2318302710772732442748541062289729 0.1477064465027191017795243469730126 0.0544504199674536657075107209262691 1.0559889543604567736762448726920120 GT 1 -832259532343941.7643070845276287094331839474485123 1.8381261049196041932949385694088431 0.0586110042802679036917991337441977 1.0603988393549978573228608292219402 GT 1 -469175.2881185326223127991027130031735367 0.5498495583214045356545599199332946 0.0327237017151209149618734903244372 1.0332710970558157934772528580516611 GT 1 -20941179549194189767807035097711.6906658444895096060198063709170011 0.8770368200184127169823564347118134 0.0850142737998289483076257375787972 1.0888468136095274132987431587384984 GT 1 -1340746996020171339296399312548541.5234442360383433668389194102480861 1.4730490079375175559711312738818488 0.0606115635184418341670755439851366 1.0625262149374782497483168266847519 GT 1 -19566575806457408797536517323894754442.8001828042235139076207264014150258 0.0712512679558610045949197073943240 0.0847931342374665336801620012305506 1.0886051564588977707598503056936538 GT 1 -514466728499020421994890.4954542598533680104774057713437732 0.5389941369991440663799494544379766 0.0058579451708580370599891146338023 1.0058751702335936243827214579982394 GT 1 -224524657.9943624529407292101417759860583135 0.0135202019924161591968634761136358 0.0237895756999039980680883461486489 1.0240771171389662639159112979761260 GT 1 -539071.3560138004203447670155017906887005 0.1447256293679351836566250623933857 0.0544904037798037062258514491876098 1.0560312415747947504908265570297390 GT 1 -247883061877296414219593834641546818.9942498703766726987724081444622823 0.9754538892055797394101559509116842 0.0257528499583031644855676670321654 1.0260902600519729364897145064742343 GT 1 -447.8001236378134847096653651224294861 0.1489743885705654141443674043745874 0.0455217172377061302954672596464314 1.0465903885505100593570657111557251 GT 1 -2479120329963538722668726657815.2313572665313129713046404663218994 1.3852911280700909914625297462317313 0.0972977850949632116368952817250891 1.1023625530363755593747039033452323 GT 1 -1049513537275292444367376790.9769241070447262399781124769483981 2.0859368399983701175882273297519824 0.0261756223878046635128039896271446 1.0265243020572456230251679798361388 GT 1 -7603457833800040335488996022503588617375981.1251394478923443260620847207679001 0.0875370172412966243717597504315902 0.0636153340125045503044882097384647 1.0657289189933789328740661743210544 GT 1 -685251.4575545797851903261203525305299914 0.4661463560406787993167980412152401 0.0770626066481617464035575074855191 1.0801938763011129047775496340881052 GT 1 -14448543957844387953.3251339913485713141640495149147354 1.1725433638196112467173772191939746 0.0188494059152501621140512969118449 1.0190293204085943508650508619930507 GT 1 -995401780601629449482864.0503031594180169607473458780625822 0.8934042018314601488597837812228856 0.0694900006738586515404478988177447 1.0720224567714979947146853164385641 GT 1 -8176415818381.7488002908986785597876956260504323 1.5743949348046468984407281596552390 0.0664418457997804573011139409300616 1.0687520209935250403566701692979800 GT 1 -152062185501010429689273424491900426698544.8335881169220700743181827658358544 0.0037853754806000602705300363010184 0.0332172649041232986104193840443353 1.0337814880947635793577794605460238 GT 1 -7.1695849300204982667080602303034923 1.2224691165389862979749600704266939 0.0441073587455647803095363155588545 1.0451096721799058871259843239928332 GT 1 -21.6144170439726836216459493206441537 3.1674964673880146742802286083104380 0.0455282933974317470370471204967493 1.0476829315449831381347062286017167 LT 2 -902262245219623456779072.5368306284031593320571280850546239 0.7168725258061615330721663310312642 0.0422863235894705642706826468023114 1.0432064220819231993679192272896990 GT 1 -65225130611429043448330857.0425941258403483171343506485497851 3.0456015504359205575987664089018086 0.0897846299813345162918080443151028 1.0940740371230687278176837930259279 LT 1 -162121722192759217003041615869128481619988.1133804748498512200569118810446778 0.3364032208161183760171878925504887 0.0691523195365200172265255947643750 1.0716596236151307726455432387320085 GT 1 -18693292827849047111905117414342416.1145226363456653748778082784412397 2.1251736100705851936885816382883253 0.0960173556352786046259964787846256 1.1009451174858495542582864031294064 GT 1 -145.4662720347036664093436042740174476 1.9007653104491088641622677404705123 0.0388197859920703343011275609718614 1.0395933600092502360069648199589565 GT 1 -10.8229093868113657394466878253549732 0.1614369961676676646564704231152860 0.0628364810506617138217321200591789 1.0648974986830068221847459218597454 GT 1 -9.1525868735608880783312233945932955 0.3331497808367269665298593075571140 0.0197403189725400039273357075400269 1.0199377617784233873687216996632404 GT 1 -5825494597078271566873231847163.1672462581801534101191372922259018 1.2918417865304868265267499802539469 0.0752673063378467278848322464838772 1.0782505630571264805906570475904017 GT 1 -728341933113.9848511325010558147155625475998823 1.7941921314969152419084255088621630 0.0608371526863431291086034584586346 1.0627663884913563578254147610160498 GT 1 -4298999107826422555968842810.3947603433321298373943716421020960 0.0894548284334645014356356979104099 0.0503949408498414039220200328809346 1.0517091080364240142608625250205655 GT 1 -2937384436864698271660803624943.1942237849783192286955412942923364 1.2580617815713608453235124856617407 0.0568930485102145189546365152095979 1.0585755865658296133493101745904716 GT 1 -2219717164.9132179218622212963309116372673610 0.4617184198068788209050054568207525 0.0976000430555925261417684531369133 1.1026974459506581524192933848194472 GT 1 -286449488267919.7388353973248859511703759364389985 0.1725301669030538475906644746363540 0.0975283470587249309743357220709884 1.1026179987517409424458198237553995 GT 1 -454433602582095887769653199.6227183642486546913454828768087600 1.7197681049709698850109316164177530 0.0746187210426295855957292348961910 1.0775494329306745281204206616168298 GT 1 -1253730779428033650792481678302644605.4120603347112789883157029949762914 0.2791903048477441043415231691158820 0.0584616175261830164284446513603859 1.0602401643512474292559371088532500 GT 1 -44388426870547626788859277361160780.4792475959102075225816507832499028 0.1313326739465889615282161443499494 0.0814576150029650292497009857520425 1.0849672295048354065272778014748494 GT 1 -4717018301371047.0418577357555923173179109449124377 0.5403778617159827714770948317011962 0.0832800042953001160813751613668794 1.0869532015494536277735205294729972 GT 1 -448942534635.8703913649206526285200325433811929 0.2746342172876163720319355851872550 0.0494578241827834997582751346735328 1.0507227457948143060900049987554797 GT 1 -1966756649637589724780276944877215724.9252933613505274555727769621569117 0.1017791144396631474070577749443638 0.0866490571505786230717157990297355 1.0906350879619299318005178895007766 GT 1 -185150540905.9939263769341023275184581144671784 0.4948555205729310405892123991250661 0.0403759008168114734622003123839518 1.0412136345520468958673130126191897 GT 1 -106178.0604595199508719922603996750427431 0.7191429080460569207353568768551221 0.0534513130587652796598576596886563 1.0549328707320455841117411780586204 GT 1 -400075152059266456300258357867239081159.1531621923189884139144038928704978 0.3462772362144766199017639421956863 0.0588823255874231416548199242668424 1.0606870947044621632865379013023439 GT 1 -8484661803546412944772966953826978.6942546189800133210006428349384636 2.2016079414300263036718385739187064 0.0035364708383291625691288246382577 1.0035427389336452547981993381170849 GT 1 -78464938847777972599006383627720499.4966882333729998775308208345953887 1.4245945542645263200103058820158779 0.0671666028976807894906028340080849 1.0695286609582996553163716186706756 GT 1 -53854132800388497737298304723706026756860.0764791803829196362947930705267603 0.7378817026104963092618256349733580 0.0681491910115380593120056337005154 1.0705825533027444442231803642017787 GT 1 -76875361048568510.5729824333687089067150714893765576 0.2479071875573307384911769420300110 0.0077747889575766271675574613009835 1.0078051702035455649683799018046463 GT 1 -12494113523666447101819992855413402920053.5113957641372931189412515185054448 2.0928141562807164687101538063180821 0.0149948219409453810296413482829093 1.0151083809111198819956815435667357 GT 1 -8655962674473749609763420685046.5575124158590262624460522480834747 0.2622583534184490983506658156485966 0.0508128935794488638070896650844440 1.0521493381405248106419846138732820 GT 1 -14790.7187189743076347658559613003393320 0.6852043546861363334841049141513543 0.0415609625718524518585050233692427 1.0424493205763618617792938066011788 GT 1 -359549820225683829939341470285854876.3420486677002753797928238485471196 4.0035566635212047016731076025925078 0.0201370937840963625986412572192621 1.0203426087196891209290347685219223 LT 1 -1874942818284709561228323806.1092430164641786513298841272305088 0.6477808994505433115357834896315447 0.0858527039446403099118681617410976 1.0897635650905081274451954803692480 GT 1 -18993628774129916636675597978720010.9335859140134009488914011206764399 1.3701266161346791759679205100752514 0.0961554748513927072971267801104406 1.1010979188362353010893841188435575 GT 1 -67462390673376628993428207574905265857582.6628588175997151096547849413333600 1.7540521840780955888507966280644572 0.0542369530442153988227843917962832 1.0557632202104293028498858305890046 GT 1 -339.0662159627536905405440551836214801 2.1178530112492116809880993285627483 0.0151298322608045999324301730862178 1.0152454558995028727685584403943118 GT 1 -402602111880201807498663433.0317528028956945073074520562683434 0.6193529250685261415298114361238725 0.0701001065312223758974835368562531 1.0726783400600119886497080125352063 GT 1 -18278420138348648645656.8561387573655451172987099151280054 1.3976193632198491861812294167815283 0.0737517692571028983909297822803930 1.0766130125027906439764321650089482 GT 1 -2549506550658344350989223652714.3310157609930672933636973545258910 1.3107827063159500527347233105986521 0.0130565567698069752181792055037461 1.0131425428822605095748412623801931 GT 1 -358785509739488394296940554723660555834.7094195551211474475096557714740690 2.8615742550532623712984930068669275 0.0664712849400792498030314618811424 1.0687835558308011418332295315806162 LT 1 -13446628702652271716678438021008230013876962.9639095274395092480052194232241576 0.1897502304740479231485183672449405 0.0569571657588136863455870657808272 1.0586435740068153952159192406209563 GT 1 -15285330935136906205965471470432888284831312.3421440913372150199630317793415978 2.4297258524023882129310421768641183 0.0828372279618275980258709756175066 1.0902088754356501737031837328446319 GT 2 -3588885499468.9384230527151403910628925053102522 0.9913503892573811326042014398559717 0.0472248410834605997350269366320671 1.0483763329470190428146463828197105 GT 1 -185283867847303857239.5389840178994451934631126978019188 1.0908841317232966044195163693952516 0.0410163776452130057030494822439981 1.0418812820810366539480236914282515 GT 1 -57409021636859422631585925.5008679181602192663385894777418191 2.1671434221769200417747166522763538 0.0855330275951480947552002384283441 1.0894139272710263713022297694592009 GT 1 -6051135318584641385521.0116241666754034059063970415195862 0.5482071495462176607688023191324157 0.0570185213814800606444918803629605 1.0587086374551173819595050784193292 GT 1 -56863124438346060.9472642027626531046555436872889969 0.0884380639005560764775479693824075 0.0143418149109715766984879570754875 1.0144456527495416724359971854856004 GT 1 -352208817565.4576817195924969599538960377169599 2.6117587396804083090375061784044865 0.0776702096280884961086942689885123 1.0841209868248990817330926837114418 LT 2 -464623238161934487005859989587344856441.7504525008995140193731650599780479 0.8660524158488612923600775126397585 0.0272749391360283634634773739888654 1.0276538052112553194601172216258831 GT 1 -1027318019194710214249893776656.2310212145881527456937877301783901 1.6476524963364718752156104581027905 0.0972772016352411039331133479851889 1.1023397512477975658481655300487977 GT 1 -15819263028629.2789224552556948560902738118424575 4.0906017572337942850866983747539969 0.0760707016146781214430981064672527 1.0791197271670224449191710473952785 LT 1 -28191894668934294886493985036415145130823.7197456644459074787861532079470716 0.7806600052777552278659314692056197 0.0357487684718817036363541010364747 1.0364034047070414126033672619659743 GT 1 -7450696595195483720343629725031.8995830018569526399965240419672677 0.0694972045753007473282377943215580 0.0022519681844701991517885840538061 1.0022545076781110646797023859481585 GT 1 -20032734698319370078.2888350441039407654603332178377421 5.3524958388604141535340232685947281 0.0894367041710699579788431199675711 1.0936918645712640180845787601223951 LT 1 -110035855283480577155608993290916198232.1435036659990142779920931106059965 0.0859797422867037498717446757792439 0.0665482364799140279356727866325955 1.0688659900509349083421371637582034 GT 1 -17109420048290794078028488565638134279053989.8437787115514078265054551428188185 3.6147856025346736840889846338442229 0.0480839488324676599366862523742551 1.0492784296257026365825193099083396 LT 1 -1577610340327485731.1105088681486072951277202650501372 0.7263661216075773153875842254840890 0.0097046969217650545199204082683719 1.0097520943942960379304415086315731 GT 1 -1455926.4843850734773094800928266241784594 0.7815067314696896308938610498955881 0.0909879462681478222830218390402251 1.0953969244614964538345873701554384 GT 1 -119048139279453064.0196328514096876676346329884356961 0.3193912751554849646571024835724741 0.0222255592528425522913256375878271 1.0224762687301077937294905094808953 GT 1 -13362363.3269280662594915015492074153157574 0.1845901249359015753520648638942518 0.0082147118154588646990794424846084 1.0082486384868670486836950252243485 GT 1 -1819.5641978450853865206638951741070625 1.7770897270378607437440255768884503 0.0744740414900077166146948934561812 1.0773930992690108525145231940872160 GT 1 -237254554190955985836666008577364.6611878435533943196223335090716284 0.2772289299045180720123945055722671 0.0242195024746465067158657607506184 1.0245176179393413013271904062995432 GT 1 -3488043808.3001170848761073391773869014080869 0.7812783816907118353947862852041927 0.0388996429947188297522140169818744 1.0396764456980915304633430556467062 GT 1 -12241839283342044344928690527784.1083047383542473419303395720402983 0.7640441353175118844083588588296345 0.0090310537246545245237879394945355 1.0090720808894956906464905794793823 GT 1 -8726.1880736700865988263951067397837822 0.1062159424586861252735145772522578 0.0799704764523056553146203282931539 1.0833495186412389287476946359697551 GT 1 -9483498074063898951516167187.1535738454022588628600847081762250 1.3852064019631569825333815140141227 0.0426000124399543984049491652741210 1.0435340150172049799021645272446076 GT 1 -41512962608616603830759302579860839.5765820690786945357034414959317595 1.5522026414688403649279900005158861 0.0689197109246569475181638099109176 1.0714097658151743012786028510491826 GT 1 -6097631827975.7298444933086170713732765402658476 3.8504248158622871260118229207177041 0.0837663203809907608300452000814222 1.0874838380883350248687729511846331 LT 1 -6731016802805999705022.6087110735935170546555639303517269 1.8538919972182443710302743406576825 0.0367710988530827553490527619938052 1.0374641995341715145811514827404658 GT 1 -169677661350182367899232593215185754836711.1618659422427143374320019401474163 0.2170005764473934888125674354478912 0.0367699912625564086159805846505908 1.0374630496622270220404558038507140 GT 1 -20045.5414916033459251970629815273365049 0.8632533731768451445643023388192553 0.0621612109710768060776682059336803 1.0641772114535921867624346379701064 GT 1 -528365231518023167377692.2936679881098033372072194945678706 3.7137686558990723438391791899581751 0.0050034419207565004806656657838415 1.0050160010463680904171754220489040 GT 1 -1439456787800.9175472605856112154602995774062837 0.8188141424458096138818307742663866 0.0637504868823432552564619272611108 1.0658732641853885688732853175095729 GT 1 -2062283723649628724692756486858.1472752660517552320291600101414329 0.5998487305721820288711020593440380 0.0985851331616397023947874193883586 1.1037896758081697311686079136722947 GT 1 -980.7465558001526134255807491752141873 0.4305133179640651279846379688010377 0.0189028817459568240391062268823533 1.0190838250772797973175998918750126 GT 1 -6421920309038373540.5335238333205237871456052234801718 1.4944699630867599924121978853979447 0.0367700823053841908088833796268303 1.0374631441804949943317387239547973 GT 1 -13504848358859070763.4370792762592828494419585187828816 0.2459750935714648051980054004981211 0.0336129548884662023790080476701841 1.0341908571982122807488072153376390 GT 1 -55.6565099657697159283917657586466495 1.4150929613626260421240003515500400 0.0456565523025732454598221079613248 1.0467316642526248963790085128748318 GT 1 -37792955735001767652696830521659191940.7542789593679078679300984939446144 0.4407918897626210672494787004617696 0.0464991731034137704137860710644473 1.0476149867196101456274320322304448 GT 1 -8988681963695499536.4885668936003188195437352244494233 1.2977756749558064042834200313123391 0.0006087622098040081358279433405275 1.0006089475807530876620474550288623 GT 1 -32576006055844461748096090626399310019269.5484132271395360902410406022670343 2.3218020638334341454362782890125731 0.0685711783478426466562228519798337 1.0710355044718335915785445758457591 GT 1 -3329486796373293311.7731159520755294857673888238853070 0.4446932216957020647881188250106392 0.0547778217375733530589129960029637 1.0563352698498389023569681320821271 GT 1 -2984684303958.1797237933079881151021278116213067 0.8574995136551152296780293488359905 0.0726984844876869012210771642223427 1.0754765068493367872085863770517012 GT 1 -1.4285831860722855117247966514633262 1.4442896815383307448034469564347465 0.0402042550800484702704132589208276 1.0410347828664733783128583726626610 GT 1 -130360194074028269.7661943749295240821303674794379898 0.2811620191918768006064840143412450 0.0926209053419972408239584312073702 1.0971949507459005783732009117716213 GT 1 -425070.8352753547153854651592494536822569 1.8379296858092040584435889689864238 0.0664550110235330338784431421976970 1.0687661232929088820776160140912903 GT 1 -9516387447524586787489139172.5392468025580059184179207181636627 0.5878122739921072556486579586400918 0.0076941205253276643118098327484259 1.0077238729815681825183490972539294 GT 1 -55381057.7340503754006460083216641750420707 0.3831072827333936180907637988436527 0.0405073181883728285725851629354764 1.0413505906487974522083146093705808 GT 1 -10294197614064.1651902417152330678263462785410644 0.0545825156996840749972229031347464 0.0185914923171632784379752317907328 1.0187664864390702210355679121576584 GT 1 -1302728206959669786.8965651572061228034171350345589348 0.3716044131953955999184617037439993 0.0366492358316496551377819457202687 1.0373376924150634307912603621375327 GT 1 -684191692696669046516591585502272603170.1519758282629574058817614179323751 0.1071231537241491423608407848760166 0.0323974196148493269614456775917718 1.0329338334607026390719551070655598 GT 1 -38066.7216484982394581244493924181948815 0.3225536293310903884324673372847877 0.0013855083457268943546194612447139 1.0013864690498932252625816965359033 GT 1 -128798056071273237.1727250063208862737147897984470349 0.5015835856875902381854578117359833 0.0292910507822007964311372278819345 1.0297285989618584729441743907074505 GT 1 -4617309274892138458435378171.1711839022217942037086906886587891 0.3726512781219722586207986491863329 0.0056731617343343953084391283273446 1.0056893152396359875946762304535940 GT 1 -14694627365500741.3035878978512431988923538935896784 1.8418364979681390089012426717281672 0.0748592323841648205459652961430264 1.0778093718417886729165509536916997 GT 1 -115355952.7846189542186123157842554403281620 0.8006331011922042817988130384714361 0.0570254757449242128819991712544708 1.0587160123497952933473706430460925 GT 1 -417937661011102789394987098719798.7866279777459912196897702746289031 0.1896602517832012165370362177732560 0.0438023779723413524129441930414241 1.0447906696917218486227614247394204 GT 1 -34666177.3250794136892730890136077354699934 1.1859872952792605399781272957774254 0.0883748461599334681703605960916771 1.0925263889240818440337243799367342 GT 1 -88297738867460019820266245479.5101733450947711474533159231993339 1.0090360819280551750831842678692678 0.0443670832964069998483146094423203 1.0453814180128184906257289236932011 GT 1 -2436309795.1590203724947962115463649132497043 0.2152929863600968875926901941281419 0.0406528440809015596379277386995151 1.0415022717739713443811815134352415 GT 1 -32890636045053925158599162139.8541434247678602969669938863794688 1.8748039137946614703852825970938917 0.0629916334288782102486071137953878 1.0650630676788599899146876606023528 GT 1 -116449094060.5067849910521595743149970614825994 1.7069925619697375548564140567814932 0.0542788925143114896159343594308574 1.0558075657789655064459865631769600 GT 1 -774.3582379232263307409060924493871203 0.6054473318196560158300297720986307 0.0034468029491588589448583154901653 1.0034527568596852350500074815217257 GT 1 -3189693786541719853616010036.6530503296505202330674403099370326 0.0740734243652718319364202038574347 0.0423483368466719146665588579699530 1.0432711755322880679051277534620166 GT 1 -22512037375415069515273968158742749839774.5160918320004291581988939455966333 2.0928670400749159118978337121883601 0.0832649517076770932192752378429165 1.0869367816348528904964480289324527 GT 1 -19169886711588902834611702418626668900.9253941696939965162143774485241039 3.6138264531365152968300946484546245 0.0327189231662343559562354566038073 1.0332661568571449986552905115502560 LT 1 -14545220240978111271524061764661439.6906166002251603159627602925653452 0.5828945733211917474547355501817785 0.0193975887711803709956066020947783 1.0195881908359249279785012551622317 GT 1 -2421538393667066655959855098995516864.9113410931931713812124671323082248 1.6222469047862839024660772178669513 0.0000734885541725396573876918924329 1.0000734912545886374359040375735170 GT 1 -863943193544924632582830652638.1416339648158794660059033131050122 0.1867388458658715505895252003920292 0.0698748142075242657592169710186038 1.0724360935147241878726212488449415 GT 1 -1.1159593565467459992039111120280816 0.9712512774236754310918454572493219 0.0626234127929987683966519768857565 1.0646701701154496140104336870150147 GT 1 -4383192.1418463850156068569249038501990051 0.0785021992607897107906849309242032 0.0253798001381335207564837170024781 1.0257074224773741023695685055774856 GT 1 -262319.7214334883347654427654932725678518 0.6520419037914654427587884383019914 0.0654904693327450168028837193565125 1.0677334534576750142732033316522162 GT 1 -8620460591255683528256062.5346983440501290474873187439895644 1.1079059000390169406792893928828776 0.0323032535872742239485344086618121 1.0328365192867704628155126967409781 GT 1 -276518070661308763.5526983485558856155541558802456433 0.1031635615549827704937171546638202 0.0639560685992925441233750497914400 1.0660928683488036386098120493482195 GT 1 -319943.9021102950789907736294769598294005 5.1783468968707625365176999170638397 0.0786110534145621266554931729371296 1.0818730228780443858180674442978677 LT 1 -18571846723327872303237.7172287855754977283477238580133035 0.8681464772473016246175058940101265 0.0854623899741038640477500108945976 1.0893366856700398133545676199874605 GT 1 -629.8707048977912935682301536397796785 0.6306597916907963031393015995154341 0.0641734749510225214844679091364505 1.0663251561676090978322446162006447 GT 1 -911457268211070000393327730928885857341525.1640447121226360012941031947387721 0.4913742197808566013779533532957156 0.0347642593805969342532387744299349 1.0353829166799803693883001366881609 GT 1 -2021847106801652547.9723805167450194710733539990852733 0.1437240032090183579507742684450543 0.0077704919986751805356472971654586 1.0078008395842976499253225167648933 GT 1 -1101492542554354.8298296168592291349411178187172858 0.0065263189444248598593291279307692 0.0056668373224265748428607133975523 1.0056829547638333445460070915197125 GT 1 -397912958755771302067291979163.3701993785588319781176731617512531 1.2147866021572652526949840974110749 0.0662540144676222138271958187702242 1.0685508418403329413669366050553519 GT 1 -1108901173879854031209.0230851977326560042836919948395468 0.0754545040247680362695639249618232 0.0904094860955498445439822552208023 1.0947607654651322210087893793498104 GT 1 -16874203331079719232350920253650609.3699556894890572621601247362298665 0.0361703552877139241686841517419661 0.0437460999827278339107693350903282 1.0447318154002733660004485538084938 GT 1 -295750023603350041113741878487.9631053929467210519130658953215468 0.9057432031181459034253558090021470 0.0167760011699417813384909316802106 1.0169183121286333167509920846343655 GT 1 -11411.4512668668153388177414970451357084 0.4210171557053279779170650068278196 0.0393342386377820666547347400858641 1.0401287334622664727514594351183783 GT 1 -22450.5470313551384202925420468010748359 0.7780874060610289465982301687300807 0.0789529500876870079609447550172474 1.0822441583505375780553302654685544 GT 1 -4807514814507257024685829291349084597.5552190052181712839404173895950976 1.2631090562175420187576731644558798 0.0823697893625277243213851440541165 1.0859607901720298750397909930314642 GT 1 -37873575001949093455.4171730813433148144436345399994484 2.1994942863036006906031740892277331 0.0221739538912256585964299449148980 1.0224234917319676066710685540232312 GT 1 -122225965362.5049342326638948682387249762655709 0.0811197850788990923464784791842962 0.0842255774447165128840853052926951 1.0879852082217979212308475640936738 GT 1 -365871170924530299392.6220752310832035041590115816063739 0.1393098271040056698924956529213236 0.0799336374185135696280792992711105 1.0833094782997820474630421251282658 GT 1 -2299.3387268979714489915675206560769884 0.9840134437121221350470651915360642 0.0202033900404289310295557534475314 1.0204102697146840536229262028104499 GT 1 -5922157.1069855964644199385678857603158142 2.0948482465592856630250433339522070 0.0753483019926140346190090050344158 1.0783381550744311937997817345445707 GT 1 -15205045220423099960495599.6091365535904412897100039272638932 1.0874125840737825486510278868425492 0.0258098072701006711415952914951936 1.0261487246590335981172473098993779 GT 1 -381495921899207477169167187102750.0185557468321275893913733061114485 0.3498462547720796054025412735209128 0.0968649379086680617314307655702368 1.1018831663273975024262168952850782 GT 1 -176.1317026731421351920211538777950490 0.3670574243527295187523155629701378 0.0308235475775939478281255746691123 1.0313085862259542421529716522284641 GT 1 -565824.7878749569307942117634092956872715 2.7713633626034023533451404587046909 0.0728939077959111307190444691287655 1.0756872731427174682444078001566310 LT 1 -69922246286419809621538891315270156080.7466265844328555254031303629618906 0.2861602739168808680218029157903682 0.0970009504458525531250420518587770 1.1020337781081779286362110754735402 GT 1 -363100731814118940438547.6671556287147499874254277218528014 0.4786016730835546186530598516557713 0.0534235651829916134506156155005601 1.0549035563719362191523847689935050 GT 1 -85050.7439558308635196957937166239240054 0.0804585367087306933236187178629839 0.0222780843063847206248146658774030 1.0225299891611193878557071977314036 GT 1 -424925432527884491094090.3255529621583206132329788012935677 0.5398362937752021908271335815423844 0.0911040117841834559854330945360306 1.0955246157566721858239458230216416 GT 1 -41859260868.1668962582979851829553109954887114 0.4898965341433835527721062390664450 0.0058028186485578769228904051816302 1.0058197204176757151202671294217055 GT 1 -18469225169.1246960431353380087465475565880357 1.2849227415548327576991904047723949 0.0319104411320246884199188425122183 1.0324306764935142099927442628959568 GT 1 -43221172985996645627950061847.1189347802485035656691244131405395 0.8397684301131246982336834475127847 0.0314633774976260498989457064283340 1.0319689832182289779378196258354658 GT 1 -1172175315633273223794013755908.0340965060035089910855946298184551 0.7850095740351438828575603070945595 0.0826873525091733959030690444429627 1.0863069188249298007718051611993748 GT 1 -4462516396742759679146.2876836848602823440866946076115103 0.1788120649401511027192249588842848 0.0572304758900151641227008575841998 1.0589334333153566038339707675565988 GT 1 -3.1727206225967398811391404260797632 1.3078068303386832976888146654941339 0.0972676789276859624343874587758510 1.1023292024311000907968568916555724 GT 1 -3286109188778215615613.5876004224677994524444143921904257 2.2026091349228655999411503405486524 0.0568230696564059157382656256126461 1.0585013889813465274950238240417783 GT 1 -2587032295247265258926526085026235165424.2653143140066032191027416344451898 2.6140105722644046458901917412852505 0.0157597857239237361415895837257426 1.0158852915231064438830249133644002 GT 1 -161957710324432740.9527430271009925258905484697326096 0.4716146203697180245804026970589182 0.0848999481608677103479600814126701 1.0887218734122078734688719076178984 GT 1 -1176087356663244154085899293142479.4767821858975556125054684335823527 0.3701591667165069846651973626610237 0.0680549979078605607629005391751150 1.0704814766684933131214836498782290 GT 1 -25439152458553136392.0788289462893853975461837199456596 0.7864739377065476524584997478637394 0.0377368057253897497379495702787713 1.0384672750134992205521209171686066 GT 1 -1646281366614409935533345.9565016705679620734858703410945287 0.3156770647513184809436742447035869 0.0161968543962755004758582967682537 1.0163294572243783741305176097880427 GT 1 -3166069836617357.3873507437600496957205615234346294 0.9638821282412301389715943795245992 0.0941083848641376872418252821403793 1.0988356101882752275632398580586617 GT 1 -15707782732496296596672154130763194432.8804316699898516841633627709550830 1.0826141589613997549984062352361002 0.0914659368522551902548466708456034 1.0959228980152763102917146638759834 GT 1 -3.9138930747991714354336130301254062 2.3276023808439966650904176223598451 0.0777782770686363017238757853727239 1.0809696039335398105206209463995061 GT 1 -623383908306502705587061096.9097289525705067732850142270768256 0.4293539997664372594722463362071306 0.0211392129804684740706334739247103 1.0213658457257753321195681430359803 GT 1 -72769.8521307871675082979612884645051358 1.5348717934324076788003963492782539 0.0312662939681301565068321920324519 1.0317655180360363458771994429458744 GT 1 -3149620034025511.9949625271603124844072840317318347 3.1472849024241843269665507597875287 0.0222534671821092617263483155258810 1.0225048114352445492394532109852957 GT 1 -45081222114.2868893470226765279374297133693281 0.8546232475456749957666726907169310 0.0875230058179516807660399488646762 1.0915924056986041618846547674440324 GT 1 -104452573730106544340733016101897543.5586765773235686491826871392575192 0.2462373452359956074197761197106203 0.0000264627650747217855954928649149 1.0000264631152198667049835482848302 GT 1 -39979104215028016688364072.5756369609420285920554313313469832 0.2346386088798954906595279529570472 0.0777299670082358791701377873291069 1.0809172208743514637949488617400481 GT 1 -1321307462774969408368619308147.9375432291731661234916211408118719 0.2422922583268173890122523453430584 0.0773343964985822225524934526370951 1.0804884031878253797779735875548135 GT 1 -8962894498985613892.3821893791988563768607815232469313 0.4606384467364470124222678079751192 0.0241763271469040500771572141886675 1.0244733719509335926823110380688663 GT 1 -13360785924.5170455488556718869217435368482956 2.3854496665333372934891407069575902 0.0976883739333198252943558830937337 1.1080787756043350207979594417970839 LT 2 -21228817752274691604113233552598250.5114901827110438760459616356381600 0.6890618731827211119784579456766422 0.0789386665848081287392849267302202 1.0822286505736787980362493201827900 GT 1 -12761828244922160018144817165069165556.2154670368025792440251173114931656 1.1568519428786161944553243167704050 0.0331962802995885937732810078374190 1.0337597827249483573959806508129436 GT 1 -43646837.4862107197868530127342156530380197 0.4438858519633287382298754358075435 0.0008717521406004701256080037834766 1.0008721323374721412349387799811396 GT 1 -3119888520001846978069535.5096530608361039469057143175325785 1.7947253745732874267602931953582289 0.0574535927552410586927816407196538 1.0591701224161665504186614977258005 GT 1 -7901549565577695142045250678876.2928930656270629704286473853767532 5.5353837092474135101975798726390086 0.0712655629036851273515514689467037 1.0739324399182209243749215851735463 LT 1 -91055983120582.9522558813907338970308387330293643 2.9463983262210906455271160708553516 0.0069154387148725504843805724369621 1.0069394611758135951766876701844020 GT 1 -798590125684782312928665.6482094457814208758607874155310582 1.0505705459967819874883395893226671 0.0163426015876958219179864144195907 1.0164776149011665683931058285797530 GT 1 -176567925893655.6327653486477888724593390734263834 0.4641171274859960165191173787534905 0.0831084061279689011913820165229558 1.0867660319560592216931390957397341 GT 1 -12.4251382075042850699648851636134654 0.1506246575940433415104029308948708 0.0207450720947794837784637026983395 1.0209632741228737771097961094971618 GT 1 -75516267082873266.9799958758913559363030625203674378 1.1222081268473591884406102538396338 0.0655468906888081517314004572680645 1.0677938306475378629813798240616595 GT 1 -59475075021073511033625000785518375753.4374188512107924925718938873063516 1.2986582340374297083182564251431071 0.0314665842004489159255604026967768 1.0319722940978146020247906079400503 GT 1 -150267791579.1387023952881168144193806809042558 0.6107050302063128946375483719527097 0.0848854962739741754992439096134011 1.0887060808518767459893757000152111 GT 1 -149164879991696.0952850514985880640895106052723601 0.3327354754174531131200095205488858 0.0346177459431703518548620394116320 1.0352311378836448264066822874867718 GT 1 -61.8732822552968690518585709589588600 3.5557725296075145194052714744731762 0.0481056850261744833693271741043642 1.0493012640362031138945080906357698 LT 1 -1378092658.8947469636675837476866908824166275 0.5217809844012212513777194666827562 0.0209778360123961667119788165612568 1.0212009972925686925831966035941652 GT 1 -7987257800564188816809888930.0895785260942621567799008020685051 0.7203682702319732715810951332945408 0.0608298328997765412745278923798125 1.0627585945735468378007578539262064 GT 1 -102614766258795903662065633537827912.5874386708072684456816273242080462 0.3978355746425872258375615337352304 0.0075949922784806799255197534459323 1.0076239811055585219301833283587042 GT 1 -324706779473054121342249296.8310866101368425330924330169689475 0.1741855737751241649073665730246944 0.0115144131693522397436884287182252 1.0115812173268841509082168224139961 GT 1 -7983295.5955849054558777212248016634805152 0.6599311333942629845575720795778597 0.0059099532379183879469615272624814 1.0059274861247117586434013107270933 GT 1 -2754977181628512929808913073682473968300.7031300729734966402778702609221173 0.6891696252186275635033973502456304 0.0704414331383769233897816124849243 1.0730454648097927195125666143889579 GT 1 -1228731783116216335265671197286069.5279962665756612845699390508864722 0.0827352895940349151294192675584294 0.0000617994057938484262570664771456 1.0000618013154558043839247899632208 GT 1 -9620808165800936912333224.1662113974935004392857961007017196 0.4483558459405021414608808670725705 0.0942026323616655503805587496910982 1.0989396539822255160167716728554821 GT 1 -71196159993153108896102214765267612179799.3772743022460949056800198289648299 0.0983056114471166991298134464698452 0.0840314542771160769526224562866492 1.0877732536280705538418388413617963 GT 1 -943066039559423525104060248537996.2392955508587428910444544321446612 0.1642443726341431850885460853054401 0.0021324190320692803500131754980340 1.0021346958748979374281290164439457 GT 1 -652798483984052988948536735606130365.5889520202037108714771669136063428 1.3978614079137817710274149877555442 0.0342308903818461364088331744668725 1.0348304902971575425086693153829968 GT 1 -1807798669151111902083031148490114673.1956046132124706399902770169642211 3.8699337116718327573023132405892695 0.0742533503948705613449329895476048 1.0771546783090558770861280537239364 LT 1 -1113605525441031289225383584414787.7060064909738128104238671369917419 0.3934992108995918669900352718115971 0.0252719615172116847747417105303509 1.0255967817833096925167625479123194 GT 1 -237335842410519187415.2216803549885106045861909547398483 0.1548081048700886093697791789220523 0.0481157542589448908346832190542527 1.0493118421916443856982583218643691 GT 1 -274842523348614427328195076847.0435276775169494641919728957684922 0.2581798704020935663211949384321590 0.0346303041463869434916877083544288 1.0352441464974311299665725603097047 GT 1 -1786626559776186902861391802.3719117664208809875519112989886103 0.2011519651641843016208942322730539 0.0414086979403917645366636194912453 1.0422904658846603512234895883826071 GT 1 -34313121380125942155695989060955492.8108251572045665451091264447064986 0.2992731376494588862917612544542333 0.0861636941920468498002409328283730 1.0901038200578830062934549596795682 GT 1 -325947040964.3550257679263510390676758134332608 0.1692060805221503510966876357839439 0.0741505926338680363260014961274792 1.0770436845955824264333957591961852 GT 1 -1058567263703094902438436069453.1987871160227966749060700645308284 3.7901904861376233102524744928643609 0.0668563258803657331657555144436451 1.0691960984365409799947769624551791 LT 1 -1418626.8544024026221619003339713756034952 1.6960873298610120020378403908891970 0.0301010526166444015665982694904698 1.0305633908669121504748754504078727 GT 1 -7393996.7080783769687846645067678956779935 0.7024423557443503625635673071504179 0.0730679245588183311115290581475950 1.0758749896271512313557414236513263 GT 1 -8665768069729930.1206811799303441698313046239598296 1.4968135643245073624183514426676165 0.0989495797312959058348484420589025 1.1041940625968968431128444072905182 GT 1 -6643666643621.9571739452552447510342463644394168 1.5185500985177455392751244732149071 0.0683728229520598167739677437736333 1.0708225689544141412203791420263078 GT 1 -123696112715568968513351740127032055758.3921721013653858715981128232717906 0.1893346439726115501131794192255125 0.0118591354758868191462628540264037 1.0119300159679154229446417301082611 GT 1 -2514870714358216751219.2768728194190294305165952539581578 0.0176854256528758576757400600352696 0.0168928010406724798798455231418904 1.0170371119228891155596369464766206 GT 1 -898347055661013816298.6301809414214909866789951589383652 0.1770724709149852243120306722876622 0.0481529651212546274627423192308813 1.0493509347491847132652591844178477 GT 1 -426248819.2467106188162651022352164330467783 0.8081718211627107523128540541760870 0.0711395150862406627061937185016287 1.0737967291492643355929777000616617 GT 1 -511437032260392695301211991454335740536742.8936345660985580231214679528143736 0.6750785604880048933219196251770027 0.0260120259941464395792121428552151 1.0263563224324044418907059561396207 GT 1 -10908874569722544006954597857.0851988508247117247384032637687957 0.3897809696417080762910280189880552 0.0734226538098967542544479827208961 1.0762577546147682285233295404666051 GT 1 -865410800639226607931202377231173.9150767422321458667009566609364444 1.5100114279907368509679441086394003 0.0950192533125779209677379646534763 1.0998416098870528705582806344033521 GT 1 -32061354302751973.9358487138915296337600201549739331 0.3171283881246927408275808478664311 0.0120709758680500498840707344881558 1.0121444217378640019954176223047705 GT 1 -867150335239811855346476582281141307760936.3775722383472255630633622135217134 0.4729922774273632156929525349128986 0.0364135946802466244953789994470984 1.0370931165603766394694702030420552 GT 1 -3011792333186877922044.0735030604449900785266580573067463 1.8567710590890592782192821176127600 0.0897867881477872710996931532026257 1.0940764081762089041196141887798297 GT 1 -4903497432136577944021169434720083.6811269523233735785495790869432721 0.1061825449037816238057039628879187 0.0332282102636903470052330314622749 1.0337928095852378293728148083537774 GT 1 -2339983917554.7561452233166596722136290610013612 3.7725059713656395567088524133931064 0.0801659397259775096936448802148552 1.0835619944749104754484118853186351 LT 1 -258926370896812729901057161434013037.5315081468390209592777771066792753 0.0297403883695478041397844809105265 0.0418778381394192325106750354381124 1.0427799915411833665006800171685230 GT 1 -24616542782002.6265597122745859332281106987751977 0.6620548238049540760602900919199980 0.0828109732418233493647804244599445 1.0864416919184323498215187324291402 GT 1 -2795344070675449221902366384275827426711.0796473314097691147813304555234336 0.4180127107584934666331959874428269 0.0639352966979486562207959150288698 1.0660706774342811613033910706300479 GT 1 -48676023925101862421.7282685335516473358611438674781859 2.3825138680047690213668757743190180 0.0329638053451227731719761456034109 1.0335193543897382110435175030075242 GT 1 -102875276753077.7835894198088304942651949301665452 0.1185562270046719027143064036988918 0.0314620373553602982661994709373345 1.0319675995417551573524384539245721 GT 1 -619.6549438368760471483691696982879439 0.5023700893532998721842112008709497 0.0742429253523033843976114329901743 1.0771434171461095328749886652451205 GT 1 -6014971.9787685908765304500325855249197002 0.4664711171728594644129011958106043 0.0979898708220358389555253390473785 1.1031295292952441750381631251712617 GT 1 -2.4320779816057210486190409216178058 0.4071264438705229619007103105977286 0.0872978001640547077676706834623861 1.0913456292113661138851045288066993 GT 1 -689139143847449433.7732740508401629574941980575546178 0.2923858587149453653324838518273495 0.0397748968464847840520609046091926 1.0405875395553901446975279513913791 GT 1 -122828413565589864473.0498892428423021842512006601746580 1.3836360306807359938755933297175390 0.0181270481853083677470012507402556 1.0182933559683758247763229521344402 GT 1 -321320444091519004149475560927677073321.7618752608813570173516411163261549 3.5139734175919526191052284755808398 0.0981427166236402801093296154037826 1.1032989938588883466193590370378337 LT 1 -356859362738767739253.3047347907088423259135370223849624 0.8929829958702011019341367022514971 0.0794560695917006142422455809753718 1.0827905549412106897951525441941008 GT 1 -18917816831174.5108556875643744730451738111152716 0.5653223121362929370536463115783361 0.0861122805108778749487407699318031 1.0900475602719733920509303132815730 GT 1 -218924504074161960211427912146358287040.4005159290640927752208758382932211 0.3037325072130523800710508217473789 0.0241757168851464117307310502446610 1.0244727465699515643966827446763795 GT 1 -41016537456138401109603.9788656896635254183577818379159063 0.3874052466428060761195794392406680 0.0907457812401944922937141053415563 1.0951305553019856948600668762727465 GT 1 -13516471205889.1370804572595955840491529538741054 0.0287058235987760373963665959317843 0.0788906530195487241033628058691049 1.0821765234111077763385423511352923 GT 1 -13787898.2749238640402193820956406533607895 1.4867329419766634637141323142655633 0.0199890110051198747170939504134193 1.0201914941203058187751900634996531 GT 1 -979969.4406379578892789750940869997468351 1.0504675117930388855522906543326602 0.0744471518574043716502267531363991 1.0773640463378135444629428811394530 GT 1 -72085660335873175071646925813492178.4482300673217107752108258928602077 0.4137584156595544047272584673276764 0.0498251558036748848190524536088775 1.0511092647995864662784901745481642 GT 1 -1765955513449555263710561496297465918644983.1670628176254357122706841758553508 0.0265611817607239909370895943532472 0.0711011101405798993742031934808506 1.0737553837024990102802154935795008 GT 1 -3169974024349884.9474201542685326469348777147000006 2.5195873347642299178888357955164668 0.0510533464572395153338224495726023 1.0524026952896874898522213277390469 GT 1 -54744485611348977488549.7450014970643893050620063585402627 0.1950564574875457175589326483400329 0.0803131734276274187797358420340769 1.0837220727898859874568878464727682 GT 1 -103625734679654355.3944191859214388214159820397104273 0.0182847528646680514898218707922710 0.0598761061096873381110172713498693 1.0617436103922384669091970581229169 GT 1 -1609684531780291965716205.7812467820958408151163399663268879 0.8312930863333329633839703615703347 0.0193529518835687430332831876697609 1.0195426720087235817147572052006208 GT 1 -16798041794.5660384588100534186943833175429519 0.4899465684909101613798937749711301 0.0926346698057717945641954317933892 1.0972101203351676053160963201753102 GT 1 -8879248945269.8132494055260725710118738232760989 1.6428086750348504268835022982764518 0.0655517175898740200564833589447149 1.0677989961432534323597119905629521 GT 1 -735224170641100047070665954081926177.8431850137616272156683635238625610 1.3781782950402929194046100492931614 0.0434265749195140150218105278086388 1.0443977287192715222848748779880384 GT 1 -92367430114361273977453.4359580093607262006714496010701006 0.3790417181560475019885656242203571 0.0607315210915695809176103357252714 1.0626539206109389886961299581219482 GT 1 -80320930828.3833889534797067502340518117443909 1.6004032740324156399211453244244124 0.0844990438938759904135053565011873 1.0882838705140765618344398749399730 GT 1 -68034710845821753791358.7164616879459198536459138995954626 0.1125192128551403696017464767370786 0.0487420679834276664917520232278195 1.0499700313216139904539605545682810 GT 1 -2244154450450696265718837282804321781384.6032276084431108850071250296981038 0.7953830428149845722798594428331880 0.0055642980127963786258897315180247 1.0055798363858831327895375532792100 GT 1 -62590598363096205380863482978.4324265170858544946531151665359961 0.2383856954299737087302675860363846 0.0746299312459506083261954506097800 1.0775615471494052312010367615597391 GT 1 -1100254104937112530736.2732328528083868858294775937475227 1.0392501421303119167107645073609305 0.0884763155604277552398581404332991 1.0926377011751373381026985552335643 GT 1 -322752855188899931641556564970.7065775525572269986948599142131949 0.5562986528524013655304716124937421 0.0513119002994364566223308463018270 1.0526751964581604921261260649242532 GT 1 -69562263079656861273217478240147.5266420202497511909983384800667176 0.6816822604383250527517529924010250 0.0635258167589456172859699401104844 1.0656333247592870519801878901678801 GT 1 -765631040368270209748783615.7793210595669619799967202599455711 1.4100851129174021749372376813871698 0.0217298402670676093159800602000212 1.0219694101479813701854062938879064 GT 1 -58719662138729658302.3171017906422373550340512650424262 1.1913690296746325383170168589358798 0.0347681126823078916113371426379780 1.0353869087714873169851947613395024 GT 1 -72941340383073941.5065239767388422607130038777267445 1.1709858709703754169175736034392777 0.0357081158342578467041898244843195 1.0363612457972415121991652838185633 GT 1 -1424701885.5351927054889634908003283656131474 2.4644942783543393379776553337060477 0.0928887227653560022794832554235161 1.1022423138547011860476561910393534 LT 2 -226120697544896788212066828741915.3914321641190446350345993827024330 0.0596389339646084221236880552781462 0.0038536872574443764124575519193783 1.0038611318424064203553400143174033 GT 1 -15846651929673.6803731688325741557749669072842003 1.3887723587641019599939481585086134 0.0667917230851180303866390079412040 1.0691268694840513972247058181503884 GT 1 -21620915449656587041560332071960139340921.8899949736061972026104348483918844 3.1558937796101490500715870783978244 0.0905487157645134688346785865272662 1.0949138456960294779613740318719405 LT 1 -1212094238.3202275821328406529300009227617751 0.6995824328765126714746115459564820 0.0926771544609300379499272205604754 1.0972569434265770566344793368469723 GT 1 -2846434839370258735329819377986.3516289231315817417460019010546923 0.6285990783849115458998103891212664 0.0545655579076514358920801564067375 1.0561107300486624039684178799977171 GT 1 -7070270.8737957155086557876311696738505062 0.2689161113366134675706059908413353 0.0642453214199821476021831431138972 1.0664019323917511312668020604939861 GT 1 -2250408689773369834589936400359644.0147177442850690335133437205068352 1.0187986514111637370705817362056069 0.0448632980334335241672238560587335 1.0459008053249601963351383379132952 GT 1 -127488938273902220734705812097678213.6916964593084340240870526424894537 0.4982657009770958246986220062181764 0.0219888937383419655401780566487708 1.0222342529160348231160612753830364 GT 1 -807493594193.1176681551032054175441806466525914 0.0055758019089364547636986387303934 0.0740288556834843220895506054472358 1.0769122064667232713845704104401943 GT 1 -7918394969.4210307895312971349513856248201892 0.3787594021139432103938021670256317 0.0680602642020010880429876692251824 1.0704871275481142306477318094060236 GT 1 -8939618503487622983742611.4153976198028765802402889763567314 0.9120685273580715693337091578248380 0.0440226799447293556102078697190987 1.0450210900037072633628203689227165 GT 1 -8451766.4500279568802342549453998367848790 0.1590300766370434045589184270625133 0.0975760787794483461507198168871416 1.1026708901449249594301366810332992 GT 1 -480211339872.5833101130021719241942105365088267 0.4146414439312599002615778061918953 0.0604743508550758669229723609862896 1.0623801596551643308965983057619464 GT 1 -474927034617878672904723.3795670944508315245568891193784891 0.2752260079789479443336180533902327 0.0803087162531555696323180240990782 1.0837172263970243432070343352254924 GT 1 -7620.1792853245313115721015500276628776 0.6503750875400261132680685553448546 0.0806011165267703574505788287913985 1.0840352100188068211884561453319595 GT 1 -11699045863127.6930110296713296530098315951564782 0.7524200876361587284368020438856239 0.0245842833156491382541317271766005 1.0248915227702301031527629967559519 GT 1 -616794024.6995148923567105550434676816691995 0.1892718767491253458694952368821243 0.0508976886958819792041543568508241 1.0522386765898653237591473952364726 GT 1 -990400788608644316964397662.6939587805361374409995920589624660 0.2421874779642294702720043757858059 0.0132444701749350007017008621624634 1.0133329603757701012819939409962551 GT 1 -62655050025096916959391962768522919.6871279626076133024346522931922730 1.9882022398282664159232265826418807 0.0822340896338070160790300040103026 1.0858129204806699917471708427569768 GT 1 -215776281025344439039497578.3586712067606126536028386807789126 1.9671633175292392780662319674945279 0.0630189917460841832503454586763091 1.0650922656215756159287749037031815 GT 1 -10.5049666562083060934570905954728079 3.0382048481533271805063558914458729 0.0533784580620988909300006061490617 1.0548559045981068650314972089111332 LT 1 -39.8559515853988868616809815111438316 0.0181003165622182917175465564284495 0.0109097635076477462581946509191171 1.0109697113877284598291229480152999 GT 1 -148484478.7317393881992759638196365457844020 2.2287666622831598620657661080428925 0.0764922515067424674530743445071816 1.0795760890225918228456746595919698 GT 1 -3785.1249282122537353512227359608466080 1.2042628253603874696358876756761704 0.0200134545909623512905346622547706 1.0202164365862168054481056368852519 GT 1 -8981327256094077060400551774743.7906568606946803484620767946481740 1.2737094286540708375527372802064497 0.0868477178727661437349079581093314 1.0908526191660956866322249000209434 GT 1 -4772.3508281353793316014149572296992724 0.4467907549464065191007865941415578 0.0941560779406719305483097817803533 1.0988882592372849912930066531723959 GT 1 -5604131324870781567478918168545922321.2044093642061939350680553245598802 0.6029833593607022392604519432745627 0.0338691250540034885745060896819574 1.0344559726358275714056177456456350 GT 1 -218133654748238589458359726657493221.5002256633272843382636684480189176 0.4272188393286027081034863750454080 0.0606526020029551488756105267661999 1.0625699022763437811514301090086335 GT 1 -6370885.2904074772595655181556651738615407 2.2386850673278884254824749156102906 0.0180209001103858394866797089758415 1.0181852540622940711767743505275898 GT 1 -6869451904304988338585180551952280882697.6207889055219039669111650912624357 2.0117556931611465319124643404381843 0.0297454768386575447233355387025353 1.0301968468925654932615768701681215 GT 1 -18868778198368158465687349955363240.2715086632607277003878135994923981 0.9040526556102856109926649455650712 0.0050068225653144030517827817222277 1.0050193986966147965868875406315201 GT 1 -165002168733800699793774.3532935158238927457099532096613616 0.1279581332565732074350995791130814 0.0987464340227599985050659085779388 1.1039686336892913784379054806701278 GT 1 -10156910849059572300.4309613388777169114430461152769650 0.1038900917232776231280738928884016 0.0620198140169926993336624219164994 1.0640264538845138470595605909414965 GT 1 -137839945504.6374023280714581233485462011010529 0.8030421632967903668629117525399484 0.0306972846592745571979683036182265 1.0311783161455760773959276692225992 GT 1 -103014808933032268.9429817973125267583585049618480605 0.4971793501388083454894722648964063 0.0946458889512090905498906001799772 1.0994291288865716477056602341113368 GT 1 -36668884057598.8218220723005682379635796494516575 0.0223286182003615082204041247848264 0.0183270170352919284540118884759804 1.0184970373257944929798150905939179 GT 1 -6199424199056203089245255162071307.6797980203964837372699902836214895 1.3648996112161532093446942827129575 0.0331705046292475797760860616178960 1.0337331223737073469909937936436807 GT 1 -85054434018791255128672050329027527.5236797789445577031578913279654854 2.5619815608139960622632592634544727 0.0025617454021038312054802786086687 1.0025650322864970761528023241688805 GT 1 -1712641254818610498285000856864541658.1120432413371120332617539627183231 0.0878430378604652150020963040858641 0.0753797659990345687137715469162243 1.0783721836084493352962648456976739 GT 1 -7268297171179.5147041737812276856053632724966188 0.0219524468715960420589945215918051 0.0535847763445059288787701657706723 1.0550738805898824650225228580435927 GT 1 -43782159920224873.3751084414646513150604369095367693 2.0085933118830698956388877019715736 0.0745663630855294714917799996783924 1.0774928546562451615273591275361286 GT 1 -9963806040877939183181.6403621904947576038583288445904103 2.3701909533625413455914259562013507 0.0602455365952150697229692866527869 1.0621366469829836545761555352275170 GT 1 -10077766051470614329.2190375327724874040087624899766820 0.6795003233880821452639639988973485 0.0001585564314187780230573875974620 1.0001585690028186185759636663727771 GT 1 -2950.5390014759001592583271765064072773 0.5848749492603998503221466297696909 0.0350400033855325306965474435210868 1.0356686327879297049285225657477838 GT 1 -342285784240888.8101125794047509717193443815068995 0.0385978161013622027772570486386460 0.0572148191164457205090632925144963 1.0589168262410263397326720426382072 GT 1 -12194856540563618401913627503583112.2451028000356073080082963557192646 0.2391996395623989502409511694334480 0.0489397211742311652016815189367864 1.0501778337706345789661247998360487 GT 1 -11851737884831296600716593.8817509329544653248493220896949672 0.0919317263619809449462600175260327 0.0318759270192347083727895089119003 1.0323950253523116962784997337451099 GT 1 -63523695500675992681155710.8892225875485066523824791190945761 0.1568898609350047911319553355275339 0.0404317577650219531478977337866358 1.0412718433589713506683374947570396 GT 1 -963357969868892123733817251662796949958460.0619938334623048745505784085158056 0.0740911631524686334040669107188829 0.0405589671184834905707327109026830 1.0414044215130192456750868713966232 GT 1 -6033829776852744504724207203.7869815890469792962824095476196765 0.4138866824723330372801440065179889 0.0676313528471262834612513029133688 1.0700269983480692260513785695552340 GT 1 -26.5479624435953513431415955055881587 1.6492031723502177228108258729131833 0.0374120402031333359560329062123969 1.0381298301937777666039347991915250 GT 1 -31331375.5373177048512035833647125056332839 1.4161722527458384073274001102125527 0.0719401741228378274498311968661869 1.0746590807338335868982401065528737 GT 1 -64957709966403394862967647397329495004167.9598877041191409652499341267771947 0.0651893602205355049969236960901859 0.0435001963545966916977675687287371 1.0444746953863217452821865135799765 GT 1 -476366337446126108579455175356761278166132.1115068159364749483614265958069544 0.0903925477018023608997878977574156 0.0705159114538471600185199027606876 1.0731255902606998655439912888849120 GT 1 -10291537020513100621458369518409250182517462.6473825138653489372498009819422032 0.8648994963680805566390158830103357 0.0361302890253808495100416392275457 1.0367991480964401876625237979602686 GT 1 -57897796441297879561368699021.2502727717204025033948641031522439 1.6571823112021175745778958771426883 0.0036480879193030623383927323311953 1.0036547584200268263182340943652901 GT 1 -34924915332413634436701855101594362139726.8552047459127011353217722786151042 0.1153943855784512603913437686027239 0.0027156306911527771870358439511550 1.0027193247054127850785851023480694 GT 1 -4340448081504.7263256890139102396592193241144839 0.2540140274093120243893170589908083 0.0296786407288852751358368892911368 1.0301279641342010848604881654439791 GT 1 -5500253473845192518290112749802.4126555153966135112035067201733596 0.6942342442244855038612213276028802 0.0646581248179188104649488852177996 1.0668431746181923240045666078915202 GT 1 -27859182553868714270723862602.3890385703745423302458703530162859 2.5985314436102066173759485196602951 0.0199899988853165440236620692249911 1.0201925021505275912150029342335878 GT 1 -9022336134137185513665496623111.0201774506349450503094501026672028 0.2543960024302500771994506842322421 0.0482854297586700600247046572961257 1.0494901103211997781741474652537037 GT 1 -763139475189455369621480894190931.1148777223525810073197404919814122 0.1491955421519511991858014657038372 0.0426684903406251649544846666945648 1.0436055424358528746903172295875995 GT 1 -4819528504481.3606302444643472874657125210165448 1.6400995757808255182776964455260960 0.0872959708314310171433017270248818 1.0913436249094254013635331073216289 GT 1 -1900451384674898600165026795732.1162777719302879920029423697401506 0.6681795311671597954059219539165662 0.0255432045066209548933273272948150 1.0258750960677552628497558435000880 GT 1 -67371203134044095105741502355356478.6796626718012927961980426389955242 1.4196956408755249025069379576866347 0.0469665868165344321374331747242122 1.0481053148896048648163095335889449 GT 1 -18274754960955156347518.7166266723098885689014341282666292 1.6724840232296748774437335295120196 0.0499595950762435642867720892124967 1.0512507637932980942552048410064290 GT 1 -2046689792117107622554881763609204.2223590311266330892201775456534515 0.3800685529397119625123141565940901 0.0675353359454034051371240337735039 1.0699240219573852180648012228858827 GT 1 -506938686250237998162444680186.3542875872068696222371704966311450 4.0857699386398792229020834419914572 0.0120752543152475456378785709994330 1.0121487524704949895074041171664218 GT 1 -104857966053231404013632785952353494.5898817484863164175785702588413763 0.4000600919827939201510490646900947 0.0884946799491249868261002712298062 1.0926578482914504828631195563828731 GT 1 -217174215576617170791257025813113325599.6433595223178345175646422272103579 0.6969528182801335504629359999068967 0.0785127539704390408905085768019947 1.0817663424134421189997326495348848 GT 1 -65387514891535084202.8422937775849330709987795077614829 0.6248790499473239477023612499004317 0.0846639836259285313040499779733415 1.0884640501095053421194579179779456 GT 1 -31461962423015050885.8143676433564144207975855555763339 0.7978092096753850007868232493773547 0.0435380718845179588246599793092822 1.0445142942233474623669089884860766 GT 1 -356372707662229591991894543924177928.5107000127339747989060921700752449 0.9225612889919154034604811249878190 0.0512973111685882974749740657836197 1.0526598183600516314079632212038762 GT 1 -95045924086999106101411.4807421630526689026191641570913137 1.5682222623577121291954039574885565 0.0058385893782515777559126370379645 1.0058557005772324095286247913777753 GT 1 -252053574451.0760757586682579018087912749735020 2.2747869527164134855539951326475101 0.0352755066582000243719262767627034 1.0359127175334541433779508911497265 GT 1 -33104041.1754599954391599483219673822736916 2.5875230988733318085146113975522850 0.0429215376426315841180016985111372 1.0438699030557608059654020658606066 GT 1 -3320005777222077.7442783395477488644336897678505978 1.3052718143192018873780359267699064 0.0341923504232289659570416227635852 1.0347905851176829788236994100948885 GT 1 -26007233421763196375316095099.6890079725464901573086300356622337 0.3208819509363389113090370147564147 0.0755288169840811352627905725647687 1.0785333989859019581042598439457413 GT 1 -103471879767839877.3744885825021606151965039187177247 0.4080763554306984990105358476477679 0.0311963844124897866336626922605689 1.0316933547234739039343654546845658 GT 1 -1.1648468899017544313822583658255872 0.7003147514354690859484070722165302 0.0098954284500366227814972761405476 1.0099447136034818484169619151756244 GT 1 -2138.8754620308205856733978943783940792 0.9690353911690276318642793053389611 0.0309574019641713443890057014494764 1.0314467072363308043521118505293094 GT 1 -1418294016499390782.8120814301888611009537943937273402 1.3768604514901624001513342706322816 0.0128822330441307314032676652374952 1.0129659285754397524164564410040393 GT 1 -526204277995260166529888520584.3715065852745910577840777224961777 1.9181313827721828113543382386275774 0.0259688383894792504987508800883837 1.0263119824114214346990494270516588 GT 1 -5870131358514890303952.5627474084331518819533615706834057 2.5366695115533478847543719788066804 0.0590905075182613260065566808541360 1.0609083262948975093278427348754543 GT 1 -33940983928759728236.2417373623776250598587191030140716 0.7965233856162807739131351088227407 0.0924564538024673698866188748747597 1.0970137292036948826456313627569152 GT 1 -56412337641940498759530356185532199427.3625608019704465141925919876290644 0.3450135003462406098994727111492325 0.0892376135106100209725941455732691 1.0934732428681982726656974561872930 GT 1 -4741103366586387.6516983927622132794876378175586853 0.7526598509635139635191202241981493 0.0311531615729420608091763379287632 1.0316487410631871967151657918537333 GT 1 -1100121.7874656649635918516997859902353652 0.6016306001737928931532490755910367 0.0607017404298146811497232657398870 1.0626222148842832374895314650199429 GT 1 -415.7579633236420791134038713797323004 0.1137716829422104466064697308488297 0.0968752643190641936063439838029808 1.1018946003530110718057232022099157 GT 1 -649.6156410587727803931577652225760668 0.5715230796406738404972673252369834 0.0956741451117569212165086897683566 1.1005655245925079697670258896617710 GT 1 -13814913230.6182825314765745972069246344134276 1.7334799706691805013090245468238815 0.0232515250417432545352708164231188 1.0235261063911432259376934940460650 GT 1 -45887331820696274628569293610292797816306.9366485385215481686057819325384255 0.0933230673505851766321814995674384 0.0040397576089102446120589776750034 1.0040479394722768965392353143764656 GT 1 -244208145.6475089321216271563331693144305326 0.3753662804100729329473201370126780 0.0688087269869633895655187523800101 1.0712905738132296524075253110718477 GT 1 -103430086295575040.4122036413512123625928252342135581 0.9396211043297858504620274718588296 0.0395561122318896593638330976209089 1.0403597182945945182034234707582084 GT 1 -1968550559917911601467838.0494869175162515423209963148901001 1.4472011166955467729942821779311787 0.0230444098260625527552336341036973 1.0233140832703922616441671550843955 GT 1 -149183561734363130454.6717596109692281831567931225056782 1.8627761395911832713241823351487569 0.0394473960493451480487458667238355 1.0402465310158782442510249531779109 GT 1 -4112961524790467750759221.5021040477357298960832205223967141 0.2301945687884820059367611865736329 0.0196984530045343579502273768526442 1.0198950536319869425908277238450883 GT 1 -4011676929270445097296964699381076.5586710329205595387260213503450322 1.2127558887381512037406090502874006 0.0629853407450973148143091703798853 1.0650563519835945644322354358199243 GT 1 -5403701082862947.8296348078373172401924065858099381 1.8881412636382454199470118781284983 0.0408903590938677557578115182282119 1.0417498822644163436130121733801221 GT 1 -606.5490352308217188428537978661847104 0.2456015749683043126290019951451950 0.0331291136406244960631099404074782 1.0336903122372244946969014890715566 GT 1 -318969347355141442.3695030034979882513459768042922609 0.5689142488113389245924966964626236 0.0694298652588070108449888032221010 1.0719578325632527053149356091022339 GT 1 -3133716342703285271190186.7091110311763262634327124520078961 0.3938353118504685196806527765937702 0.0689169644598551209117921463725918 1.0714068160580122696330523266678582 GT 1 -6339809902476439092244247125279490598.5774028679842395389711071526367806 0.5118443675161791142574730134412558 0.0359170044292268020836620521579911 1.0365778930871237894046213701878956 GT 1 -156705.4191521536638370114260033043975844 0.4850868282332537239881807236767300 0.0498205327074500444139547516435841 1.0511043992898266284330010974697786 GT 1 -12854816861745347.8128066966362981403076433289437374 0.4459658805973240512793909740605801 0.0530663297397957372936359937121538 1.0545262302129931597427534592559659 GT 1 -785007100755401.7696776329212767138576307426306036 0.5344314537041062052454453025147444 0.0976973397852432797288727499292718 1.1028052717262955577556254560539761 GT 1 -2.2000560701764892486859575408237874 0.7883040288222918478353860311287364 0.0377770295748534848389995319033672 1.0385090771840810681439789909252061 GT 1 -12363672437237275792420195986.0531814002368065643331654595364567 0.3119793982846196420125307285018409 0.0207319739095963920834377480794335 1.0209498985480237963230851635636404 GT 1 -22.2745713261036336510078014281660112 1.2310198885843624661992540176785151 0.0119634839788423820640749193736145 1.0120356223816714104028768628363772 GT 1 -271.2190897196321352150205271704614550 0.5854867787234158976898215875279150 0.0937615467315044455502855335069987 1.0984528141153929879586900506283580 GT 1 -1150.9546210456549091570169629348507767 0.5843643118550417781156985092934798 0.0137709501161620585485673854343340 1.0138666492440337385953880872927292 GT 1 -85240492029952137733417.7679495477442591909591822130570766 0.0069991827272175580503122863103879 0.0016262704888043114948422880432220 1.0016275943021027005663522819519964 GT 1 -298893447864090133626134434.2943118771791364888671853374242642 3.6737331174031697561158024644794578 0.0087391066259698969439536438501264 1.0087775165610248368840298527230351 GT 1 -58975935138870605537497338031444.4361504844050560687666552446935965 0.4654100004431286947474090965799721 0.0685069137939610244870849371309292 1.0709665111837778413409626553465442 GT 1 -9699761300258798999931935751888836771816483.1892455733315921309423057335796292 0.9243099761818710877336507955767463 0.0814560748147640556115279314372574 1.0849655527320104855407659713820366 GT 1 -14701085568687437639852454214509204538349.8311729408762653787263227438213256 0.2802173632081953735597069861034741 0.0687602120523482131264647635980935 1.0712384753107474990939799512074390 GT 1 -68242774047257220.3608994218781882144792075842376823 0.3632129288997626486056201996160538 0.0911848052990382307178520466362558 1.0956135116337150234985586662407952 GT 1 -10455564296157.0354186710330468133864149679873376 0.1399270961078384547612429293313606 0.0776349754291732418039801183895031 1.0808142286008855974438376515616561 GT 1 -19306836820475764325761916128853778724.7104929007862010427318049959767381 0.7647691800319080027657805947949885 0.0802064988332127901870275482639210 1.0836060893863936303339056764464032 GT 1 -41640637158348687296866947344756783.8126690989924362595268216406527745 1.8791877302965080765941160443652187 0.0643822408889419124847759178469899 1.0665482629312486725026669569399286 GT 1 -2.5916819942390234617723431077376084 0.5796472724278128604918716835808032 0.0849966942178059300983679134896641 1.0888276008364273301718386637893145 GT 1 -1781943322676722900245283500087.5782438664771019765639658136916216 1.2166717025654467356460577253528481 0.0407676619518208833908405763734287 1.0416219622756340851573712409949091 GT 1 -100229.7704259584021940914533440709196357 2.0567384771162025994391475183079296 0.0913376825142970862969285247701615 1.0957817417379053933978541929213590 GT 1 -1539186.3909921008862641916631108038581825 0.6590842544516126997163428525333015 0.0466815988972769478901297878856755 1.0478063271379791718695938026920918 GT 1 -2546619178047917978649804427599738671.3383834367518603673873371332139708 0.7356724430332235076084826193260583 0.0236971137415706310898436341665565 1.0239824064315897963664791185339644 GT 1 -1491328866360635.6090025268169879870767062630698537 0.1583600683726613903045445224795736 0.0996406399268113206714211544896386 1.1049613063822441049816466325493584 GT 1 -663608545638833350147479604735640551.9364372518743084370077045994668630 1.1365703116424167149682231799537112 0.0055591295932339095423663240606200 1.0055746390602831237375080827419706 GT 1 -278103973989956880468.4384144207700206340054389833369675 0.5050528236314171161163498837180086 0.0742900615647571619742125367426267 1.0771943348369253938829496085687405 GT 1 -25310290294581.9094054951060388893477795870910283 0.6326653970598964917228068847487756 0.0557743964410252520533665435386379 1.0573901545684897593873444223599976 GT 1 -2018179537952661.6184420174137483990079433505056726 0.1710888991512651658334135343902665 0.0008416926448648541902784556391918 1.0008420470670093611210144866281021 GT 1 -37491929990197805107664219647291648867190.1888752363133121251460537028964052 0.4909789403490954783449976133874257 0.0704858702260623384854506419738331 1.0730932704580326163868619592481899 GT 1 -347660686178130490241.0631649505614195480526396229591217 0.4358893164396344833212785086843852 0.0986026488378602888110432783648906 1.1038091073119572573012060828611489 GT 1 -106029046903568010448833.4279558365790820245543975197310596 1.4045623366044671184216729866582565 0.0512755558049461743962976065492977 1.0526368869248840781548152186263874 GT 1 -1417310921294079951560845.3626802631569807449549519933481073 0.1180460461455732004594192961061978 0.0852435236893969192627527137621497 1.0890973952384071167750942382065958 GT 1 -928937465214019366822562351307571332063749.5870938802830685176278150577513269 1.3806565068345976760246332289166656 0.0254880654496092662812814547280157 1.0258185132645769261027852269603862 GT 1 -21185247841864108.9207516386757257846570159195079076 0.9596096093525579099656362761991945 0.0342053596045136259943870362194766 1.0348040549518744091686659484482095 GT 1 -1734972249573324239612576162718.6332708358695145054252228637691143 0.1911873643509738278052727310827804 0.0900062109991542902625964605866653 1.0943175047683295374215109605347648 GT 1 -18633241308423.8938699934601388854698234023776039 0.0768333339681969034405568953863488 0.0481807835382657032033660493128877 1.0493801608984569056405511735767364 GT 1 -126344857774956400163323274.8558200372736761627217776658792610 3.3240077758977181572662143900619753 0.0605591708570755620721945947869065 1.0624704433329600090894516524995176 LT 1 -1254525929777.6531122710454498422801091362811075 0.9320038029149848579755843196504681 0.0986631891013689516452759233981294 1.1038762722493124309654728854355500 GT 1 -2847.2294214023611367259285341646959973 0.8350011644195519946747113071496547 0.0507982296405027409790429420994689 1.0521338893153385962013968751403562 GT 1 -1011237413096019.0854354591481442945939609528063726 1.2316967893557933461935569485518469 0.0326791013900732516160023461226953 1.0332249889304373919927211619725017 GT 1 -3051901501.8766384407150057921474286809847572 0.0156377665207320241189101033504023 0.0853186922296077551828220503317144 1.0891795718949813083920072483932758 GT 1 -79890943113297305880913.3968791314454051168973883558832582 0.0033777320824160581474425722145330 0.0846409950834599230527824991981513 1.0884389355577067470662191045489200 GT 1 -11689967105131180185.4594895200712187687146076076436197 0.5522832323541629806512237257757331 0.0193697442888219036669538106972785 1.0195597959566944261005147420836828 GT 1 -3155.5538124615188990056421733596180787 0.6610603556594859847718577031346823 0.0936903425413450673791876618043188 1.0983742460599856851054972064958230 GT 1 -23619968484055608.9836008831339428448558127544339193 0.8057587400981910496601981959140886 0.0436232126073771850068015664866567 1.0446033145074155166409509557286140 GT 1 -103059404624648.5603072510302837642437390577820780 1.1016693026072974682979548141442296 0.0283672905535062387603328491193245 1.0287774168727328384213955403461525 GT 1 -1696.4929601442250021654495538434853946 0.1699867858919269116680394956240236 0.0272062432723566011691001172773164 1.0275831856283665233089940461695186 GT 1 -60.1687289153123593091367682058402698 0.4882286845566566667885342010693830 0.0191952066070657843258942290627286 1.0193818265844263831598638814623258 GT 1 -36340911044573396994504555902107476693036.0739293191516293420602189044831502 1.9104586864164851376709200589840392 0.0101488861350993964277665564898994 1.0102007371986706854232439680033514 GT 1 -79970059405180.5475610939918409371403814084746111 0.8779847772558199410569731314582231 0.0695364666566666331135077654052536 1.0720723940564748364404048397993317 GT 1 -23899125381695225467761444095491207945171.2876690644745836277629957773530798 0.0992580448278786408106632800876800 0.0766599289366020934372443130188614 1.0797576713149115021470627520066385 GT 1 -253330052989056070905018.2378037058542492705458852066008672 1.5834348613514161380434068889907488 0.0966060128992168048173390012142852 1.1015965116385730325899552073317416 GT 1 -802519723143670217316718675355.7143132354609502391235790304606356 1.8258217977192411947810914251071209 0.0908324518645474479064959510508275 1.0952258804086209569042560717710369 GT 1 -273250209999872.8656590734983583770537392126573940 0.4169989367858241802267426274797099 0.0353348986283330243606230931418074 1.0359742830879844401032731111858096 GT 1 -11417800204300006198097389.0725563350057401239583420135504549 0.8179183442820636100675460629982988 0.0039524234100963943077768313355453 1.0039602548778313965347459630669429 GT 1 -183949073347826153129239117855.6298898558010064710522524541372947 3.1370007596452440445882097658607960 0.0854895729926932503064391159144588 1.0893664093492882596280650594735490 LT 1 -198468871396.0417681692399491082669435434553328 0.1804261218203673933001926486569695 0.0777447911998089019869827560406195 1.0809332945948270267030389226999444 GT 1 -1617864153742349675156910231164616494454046.1546626550845899095861025134954451 1.2644399801646041692745149401900825 0.0955892668839817957104044948530522 1.1004716709839722091222455462050077 GT 1 -1176676356956630192.1084014131803803425278596114814754 0.2449342900309546941177149439425888 0.0909160535223599564743424692480069 1.0953178387082501419571907642141394 GT 1 -9188004431922220658247294075843.2255512800064604831449751981262640 0.0622075305712066330487791620955125 0.0050153546449875232104897775678003 1.0050279737466233555162868900504530 GT 1 -12198138633704304781373886.3010315328373653128321289754783701 1.2334096316858360658496135574424458 0.0467495087372755891683097723475646 1.0478775648889980777408369786566201 GT 1 -73145532692057448956149610377275.4501277105542634160043780576055847 0.5259663396103872293575694421699860 0.0693136931559094912581167810866716 1.0718330006481519233678984937356559 GT 1 -82640808681375599959715886181035.4602300557759803834978037539529183 0.0854979383870586876846275417858057 0.0786239747662307551841282375397798 1.0818870467518063058010551896223798 GT 1 -3.1734891670144704442026776815510942 2.8799505248258616232757317863775175 0.0714716904205089733995389098239177 1.0741544090693699589109809134911233 LT 1 -175469420069901649.8032697055630021833095191348703143 1.2721429739570172207707183321617807 0.0579370123560980905073220553374556 1.0596831407771814647175461616654766 GT 1 -9006003531323968827021874958642605321786550.0406780771032652047561387243451160 2.8887158846437186333946581214705605 0.0779217673177097503897496195182471 1.0811252079598005257692058730814942 LT 1 -346417869046090214911.9025877425346285714218493278596000 0.5030518136277633522841849780370882 0.0188709087960654705743010545211638 1.0190512366328485969816670209114870 GT 1 -463763661382812050683563899.7485555946652628242014663520572882 0.1257440655984604997306078013099758 0.0972528323211043808910463270148765 1.1023127562663284432527513357190170 GT 1 -4823029190299484736342062079765519449.6522739738270646366752275688964139 0.7799203875514767155066982481953372 0.0478479568114528136994728964745717 1.0490305477112661252607748524449978 GT 1 -981346217404040.6092351770941791492503889382295082 0.5070248716806758326514089526300570 0.0113255129376968040761008434428995 1.0113901349408654342191336474896177 GT 1 -20091654753653902380364.9708662518056216534578433730807997 1.0444472959769813791057715106265832 0.0352675526930533065143608872224157 1.0359044727626285363234764865790293 GT 1 -7614294704604916202469507328.3816273056534736728924197203643911 1.2157527571698916570079605001907334 0.0982909790114949622341395416337705 1.1034634041030028412318268737899836 GT 1 -56462849.0464911419549755477199000722370580 0.0682631361693746761974318132498930 0.0968775498556296364489931090254492 1.1018971310548810927248324284128012 GT 1 -5235794201003840687237707478635738970276.6116808620977587126341567991281480 1.6239451491707988745439195142652379 0.0092580689009238559006206152984171 1.0093011911798556405883714029402996 GT 1 -553047655827341014705603565995521.3211278502860003366315844925809935 0.5604815548597893891047875329015026 0.0248851656086824231416153407814524 1.0252000360567857689102597678512771 GT 1 -538294337.6850380603808541781894014101678101 0.9766470995921462738865089619858298 0.0124141435551625724618590563655345 1.0124918427509257334574626365610735 GT 1 -4355139973813099303770557704577568302296218.7635807352153322425455493809431832 2.2044257855576987659033766336408665 0.0534602028702837774784647509242033 1.0549422625925881470902818530022835 GT 1 -1921667394401064703566073334522174582069.3451953472098404164878121613213944 1.6886423447609619115823541245942420 0.0508283097884248961025878617490525 1.0521655797582882398121115327410558 GT 1 -3668731329813440602366.5669884391295411616247157441160839 0.6885392182784567140816388282189030 0.0876742514791752728118521682953005 1.0917581722858966639316601385324312 GT 1 -85225807754391714659727826070439591622.2414642563385902656653514724229215 0.3722009077246225049042182853704663 0.0319609512686398265439347169162206 1.0324828529206671832168300115000717 GT 1 -977606581024818093.1794630251119570930716055619978942 5.3170109128506400321643849635155508 0.0277625534219269745726478799461991 1.0281552177518559261592677147284760 LT 1 -31858800553902.3399487566409204148991670556311204 1.7173164931511587198041832316195275 0.0599921536094503130576624519968681 1.0618670565289363234309881460338464 GT 1 -1280126972101940283295074232095032925371248.9359275942902833421121171218997337 1.8308980100352965964759098581377490 0.0377099571936824564281484920757565 1.0384393739596943825692140264526069 GT 1 -19659452887348983328981816629717310979.9039297544960901928656881728833540 0.1979974946365264436310156038102200 0.0137230341770629184126699929856226 1.0138180654235262039339683060363738 GT 1 -3615826477799641092191.3428878154847178582793725496021001 0.4825810785044507227149380148825985 0.0124705375532761063180743910989964 1.0125489472628389993612762830609340 GT 1 -79399481.7543459153160627675982504946589749 1.3682111402829364091893318161631918 0.0062704711593866406075049602839182 1.0062902131345931769867216730113454 GT 1 -2305148294942590922411588074624866.4258780314317009997044130053716647 2.6475027984033079840208291494180146 0.0573009376308477573181119143309915 1.0590081752032572377667376334815813 GT 1 -95202553381968823622922902.6761729932415568932840595264939999 2.3866672389261489264357772819654351 0.0931844792647739566285975806162207 1.1026002534036746129613559191520525 LT 2 -744927518199593577585676718712536.6684618053877095516427559059090916 0.2094367163253614025980164833973244 0.0096852150443885093482937801133519 1.0097324217919046069556108232681504 GT 1 -14865179093112.6538869218654511761323677746395421 2.8883433520122775181224780684877074 0.0633868589561961529513848890851130 1.0654849517483731666218186566556217 LT 1 -191517897427651.2469885571724364870960881857528935 0.0187620032691069651937795842122991 0.0322567709213426561988996160225253 1.0327884861092716841030620986928453 GT 1 -364578612249446566508182623697059.1552557272927295308020384508934683 0.8789390511279131340192820365350743 0.0340561106460892575555631221538291 1.0346495320116080546759913329044615 GT 1 -973563403429.2336077234663741098453312966599712 1.4789284475677999304483278476479659 0.0694161202541749269357114735404434 1.0719430621525018010957684575672420 GT 1 -30349544311583717982194749.0108124318639656521599435025866254 1.5248714162725094951598409904628769 0.0145235559865604574848333423923063 1.0146300552489149722258840269187956 GT 1 -2961610557364339558880340711444193171269.6227132814052203994336815754945121 0.5721790093146363786245765672681948 0.0972166219088779636174030707751013 1.1022726457156472537117285852335463 GT 1 -115.9391891811087693500791646852152432 1.3718416463323767772588844259805316 0.0919316169605001674990908171546286 1.0964355914991179490093879315397756 GT 1 -59390557817.7319877134375759272874761835431120 0.0324626164899781676241100117302646 0.0894162209139399994232203716614241 1.0936693696751483065667520044544591 GT 1 -155488345878548.3063164535554379363696512370470802 0.4053754433684196396555955989237159 0.0752511575362852508850801195095054 1.0782330999992408479630781901335531 GT 1 -24001926195.9986116965691484169895643127003192 2.6185924210880328523855764347522020 0.0145160520903539326027890333130863 1.0146224407922903624209584444008063 GT 1 -42853015602.4911433019428228422281807312277266 2.7516890409345069168018880947199468 0.0518137639427170605310490752464763 1.0532043444839733355079201958203147 GT 1 -36759969424.0925478615314079457800237946453637 0.0875321687070305189025766483937515 0.0507514570508493247276156972449774 1.0520846148209417806913632044618681 GT 1 -31229800787588068079497436185.3214516062577149031954819636989999 0.6970487397106759505819488731614526 0.0136592754947829612656171979034017 1.0137534216939127342758120105051492 GT 1 -738081142398810135.8582419697776240089967316717542281 0.6129172346388176763053041583664930 0.0998621079426433282245050516883376 1.1052073139967371287373942674925059 GT 1 -552706644473116398158227120188399211253.9927831710499249047188112583699602 0.1625699556326822742942322838636929 0.0370700314559022683361069942477994 1.0377745920048273579501010357672694 GT 1 -55198.9555284701628828981813978913923840 0.5598538587328820072052068594127646 0.0566073239611831876764087382326152 1.0582726715299115576977998677438425 GT 1 -382003635267507.8194558091197600692200740343951239 1.0370672968516464422414529594651661 0.0701118594026174262519147514652902 1.0726909789964713343281608831721260 GT 1 -1152248753929172708808867430438256087.4362307630361969967550783205356549 0.4322926868237296088104759112172500 0.0596937915630607689148933551903603 1.0615497031079717596013506773004324 GT 1 -4920275476253965.1978774143760630735096816591384374 0.5588971480913759855953888020243185 0.0470019952706138671841043800434958 1.0481424690033836202105815570906551 GT 1 -2097233283113442101852117996391309040142000.1796334995285829618489511343769366 0.5203987102335649301700770470878959 0.0783990723397562509449096692575174 1.0816429824652315381898721412235669 GT 1 -5883119.5399437446096137323309779838515405 0.4172985722712161160229007287565453 0.0383923440895699754042111203534533 1.0391487535955851469519663400131466 GT 1 -42965536407910422130055118.0196413673051781840481706654878647 0.6971154099353077826420129514614226 0.0835949291497451430670902562605882 1.0872967949717345381380355413041497 GT 1 -6316335853745784.1767857837309227150283805301394062 0.4200910902218770075790606820596854 0.0562922640901452720507390447266206 1.0579387625635732149591586902278980 GT 1 -533274823525576933797355719.2038683717497216368553613881747482 0.1443943834666709563294839991166278 0.0202516466316053945678330938710865 1.0204595225688816555801020149066081 GT 1 -2063261931746294676644866103967865301.1313454426681104352263044655912544 0.4275193831248253710165529394482052 0.0379629828179835757997208384342064 1.0387023496575581797699163633577512 GT 1 -2.1897561765967935726999010610322993 0.5443199931091538619318181759233905 0.0035170988886108403193390019373787 1.0035232984214220756274753646474034 GT 1 -1136276.7305632097022888385861966343311451 1.3716717278922688499022678761141884 0.0055645740540663817530767432683887 1.0055801139717620026737994245213793 GT 1 -1754256026163803014255708337621738605957.6762394696067301791280266865762050 0.1859138013456702502240350331376172 0.0619744333446628953695134933464774 1.0639780737851726441760415169804679 GT 1 -5758565839193908662980.9747877760789454497354454952691690 0.1670881102344696830279014788344642 0.0747200417007659683333089255884651 1.0776589296404968091363957250285096 GT 1 -3507485979099.7616342459700087185039055956064002 0.4828520334741537016641760024578800 0.0059131434792882928978886581366212 1.0059306953374982467047167694344061 GT 1 -17074845884653304381815040324116507036684.7076561049853571717897252315737160 1.3251165455528870829789361471252709 0.0034317585949180780986118091258095 1.0034376605851173176378317882269466 GT 1 -4306926776128593408880827780403138039467491.7254142609461655915943561909829618 2.1403710838555567544852670522375025 0.0557940178583473082516892087543922 1.0574109352178617963982635725643538 GT 1 -1506720730696483975338757498305731428715391.6639418827771627296814195405564391 0.1531236516085613717882909740837155 0.0498278667482207141416069957105776 1.0511121179043910126296227556465737 GT 1 -8075378.3785009796803005071683298306853733 0.9256845255816414006053529648067157 0.0627056908274887453033145760243104 1.0647579487593723501267169319025799 GT 1 -1978577432697957573107256712059.5395248101530260224111536259407153 1.0735951400023207392063717172699953 0.0610849307858123557325931233461730 1.0630302519857580400859258050817955 GT 1 -517778300309940677622322514405830440145021.4139578345432607030365570999753852 0.0529462064566488544960328622540346 0.0472648736464537442006788594820614 1.0484183506294304080431477442200512 GT 1 -275730527939314860.8756563820662908617762141875149284 1.6678587261028184028527851255735969 0.0340761915179310261279706306187807 1.0346703210872419459462509954096225 GT 1 -37150795494351073714843.1640168536693617393412968974222715 2.0326999187226144546572561207731909 0.0828587796680715604492006115949849 1.0864938160398492787646577997226197 GT 1 -9863336466559028246224619.9304785724461276786490191857421617 0.2625859557039912209027343723406083 0.0412039057352871052297457044211785 1.0420768499964199224024914528657371 GT 1 -3276.0209594872744433468080896106712453 1.0001724199944028614937075394165771 0.0912087619191066040837258721553057 1.0956398722579268281405398676307939 GT 1 -2041442202730171512591461855864229662047229.3798109186870891113207296179527706 2.5071215474349631608283403246370789 0.0914567586410808074484436109586427 1.1005124280496003732507960573331667 LT 2 -29637626175204887018738892511893.5912111154483869393484305480437304 0.2982502425185506868904491800296680 0.0978391642935387923425462478215053 1.1029624647190140323639096629612066 GT 1 -2718027588005258073958424096382592309527273.0751043186783207625434919596804170 0.3422216638377856905309112307477030 0.0783802042884130399692127047101810 1.0816225095494221343083757614157656 GT 1 -316080276527730260465902.2729263694137368919842901085723615 1.2134353023612103911014907990833134 0.0215180294476426485560392809196189 1.0217529179137591875584008917527111 GT 1 -892488237.2144699060445047310762530930462772 2.2290554458009944253867766762984421 0.0698399463155033590353452413163956 1.0723986069064502941841999972502656 GT 1 -2128174608127048549002343855094165057360663.8791963152337731616326565557298655 1.4208390079059377723527409758367733 0.0229101323332377685878912292603478 1.0231766478873029403791962607032430 GT 1 -1632482704245352684.5869228095719080132854274283890229 0.5090909855763898217772440175656705 0.0935211284708729480533070426240748 1.0981875568038946054794478160427757 GT 1 -371097226333196297380823275782031543355.7491664005371954265860521934291932 0.3121648839294826375262209474281158 0.0761074480638160816295003926712774 1.0791594998855195344657328068450598 GT 1 -496925306006348128150319681083057147830455.5348713987698318612991822117001510 0.9210564995751888351277423829909286 0.0149145921076361919911258025277390 1.0150269330488483147994204512564200 GT 1 -2236928.2102504374751207496247073750734543 1.3026613880190529316981581283534922 0.0552397021589953830922441523445192 1.0568240367420793952285368677423130 GT 1 -4526290626200819561011109.5340602178934913369895805468219595 1.7466055187197856111591225952223005 0.0490940910673482225592252411670222 1.0503401604139257104031828548257866 GT 1 -1.5763372732611667501862821914497125 3.7174088978867633523724608931452467 0.0524284297697998053839582631028962 1.0538528090152371655984878910011204 LT 1 -4258334550027518344780.6172483616508648704425093162025466 4.4969438350028436681861616862344744 0.0544533691750771165779552168078245 1.0559920734060204216712863234834530 LT 1 -70000699665723684822569864.6664436537698793600443183236345991 0.0790950678195829778882229610282124 0.0478731778264658993953056744409124 1.0490570364944725332729617474677349 GT 1 -82646454235882727669301422.5267070013312888735970844061127976 0.2125619092499059952101412481076363 0.0180420634923107591733502451125490 1.0182068060586498825806841458064916 GT 1 -8586627553744920310755361.6536473951976728682680182744074548 3.0703543836191702807849735057651438 0.0249753319930866358354541246217503 1.0252925077844314882352255136941959 GT 1 -268057.0538367992398552952745127256603256 0.8419525660935796118423519138373503 0.0242223140607922947404620995445936 1.0245204993150231665930558435776278 GT 1 -13589478137667.3458899806030709838859366220654925 0.6512030636082735785698568998150987 0.0642843970293440411664556958660178 1.0664436916542441423996856956530696 GT 1 -1207080345506261153153390845942316.3118324307541646213286101530785098 3.1041051273077341724339010664937157 0.0895297646662456155088831199605362 1.0937940708114722923223224318439508 LT 1 -462626992607222735422.4937725477873755371757110445955011 0.4126637176227662139094192216569444 0.0902629735905490007330867481157819 1.0945997032022124951360863857497146 GT 1 -4549561774.5708685953248099889566086008657627 0.3217265896911729586188305421599346 0.0019041410520705441439502157492159 1.0019059562332503069019438537246734 GT 1 -42261378885539773000681054649950197.6049088187894868953147165327310553 1.5208876587231127212524017780174427 0.0904853483167460986875947982138844 1.0948441715514600815900738623472265 GT 1 -2332152001585639486.8887630819822577015561437969203451 0.5714673288319769244497714927564082 0.0709216196353446122004177578202372 1.0735621730441447122256163207744655 GT 1 -73940562325650987437316420090578.8840706559870088843712562359282202 2.0293612795276756546081858090827925 0.0564344828494704746471226876237348 1.0580894760433131360099143396081253 GT 1 -11579136181947536271285626919226041.9011355136658612321802202492886389 0.5548659913996023516783646698323033 0.0332067346311160834495059824482783 1.0337705960760327012582502316462061 GT 1 -34525.9356466485565258295148854702524829 2.0355044700768569628734491878455573 0.0625390064153022431801301293523838 1.0645801288461489325152281946851475 GT 1 -1274407160975935.2626298814407880337793640917172014 0.7330561754177097344726765356095935 0.0933377995638474987338368134528194 1.0979853343618741502462743061637017 GT 1 -384731036009747427.6123812273807698493972492673381763 0.0762810462252327237127606792441888 0.0394434857541706773485132590844338 1.0402424601433417096872072593739491 GT 1 -1674832917215656.8923283417833331550272854711791120 0.2766329263866158988289880220138341 0.0279750391943110026830481568224492 1.0283737950101756302124071347623992 GT 1 -22535197590918688566741234277.8265261426429748180921049480298978 2.4187951643729687967785588609860437 0.0576334747822044092966709516615878 1.0593609874947719869079903934858629 GT 1 -4803245127431072577170290537162059.9462793399693051100789700785054384 0.2137985011400192125807267520395050 0.0658922475826637380377817001148922 1.0681634807936600612263060568096498 GT 1 -772720432699977152733410479352118220878.5473660590868663981681286953924893 0.6867707041713184527314499168509281 0.0292795911051454833854355372670063 1.0297167935598153240976522790958836 GT 1 -4.4977040229679485234899540356166222 1.2236246210521218065292084953002021 0.0099159586717662411976302217998282 1.0099654492259340080824300914966317 GT 1 -94724391882124126398033766774825656306516.4762446227097344369954105345412737 1.0387274857862365390969612434370427 0.0780268465850232422329344089154382 1.0812391736206486357711399961038775 GT 1 -19445452257859867278.3380460452495003518083445189844247 0.0115420773327362929617010566487980 0.0228839687529923504289462008520489 1.0231498711998909084787760340462969 GT 1 -31066251.4279684234602987997379699651861991 0.5495803864486598564986881978058862 0.0804228579850801495139658915212499 1.0838413428451429309774609358394501 GT 1 -6130036265894191497554631.5006480665217186853695886230140471 1.1247423757421936594100836491147609 0.0410010872780127402211089552302228 1.0418653378616071716527490352731136 GT 1 -8730205697988714433132539.1825408839498230741098723180832798 0.7912410731990361772205438207441784 0.0721970872282414394308856288260474 1.0749359472301476267974792157793026 GT 1 -29146868473726927276017362510636.1283143757803184421161691038227334 4.1763031580562968617366685781716103 0.0150613870721010916617833234018375 1.0151759616527487541117398318050825 GT 1 -44442367.4268629085349194571202833186327517 0.7418544850009944985976071250082213 0.0400808713569275258605741476987417 1.0409062390655266924943863359852651 GT 1 -78914712164271596370243356074426903614886.6134116395390234114841456944832845 1.0102851764150304550516997532671140 0.0458805101814775847515098404295669 1.0469663639950510008919586388587404 GT 1 -32594.3308739049803178052723491799426242 0.7130239306367743326238118410089020 0.0046541180090813739273536814380562 1.0046649821380342861995789421007984 GT 1 -342154609238705.0817560136131136140974609853922113 1.5037226192118226610539820106720056 0.0750784965877407839492594697473896 1.0780464062465611516838079775871205 GT 1 -7597902287206050774511166541565304.1788193433355606752483263407164455 0.4766570406934991132958799182559389 0.0554536658274018380518749753436849 1.0570505364173524841170727543752180 GT 1 -41469.7240041477315761184635261288619124 2.6234960039766597527695487237128261 0.0112702173781056429218861850016644 1.0113342075208094379796514791445629 GT 1 -22306115.4206960525924088588505959844960514 1.9547259018892465788782646073594882 0.0074885628214309948556048542961283 1.0075167428815767185380935405636756 GT 1 -25080.9877871616877569140434216953673534 0.5755623793567011058112018215404878 0.0764313257898289284254053636554360 1.0795101191296444996997537872466445 GT 1 -109186815109938073106222.3623227534702639509388104638252580 0.0927438965438418664710879237630798 0.0617058957645826481206456264508768 1.0636918351595484076718390662127966 GT 1 -7061592333529923432671665913396.3061237815408048484149918685860222 2.0698140641194000219389268264366628 0.0348418980351438717561799594445492 1.0354633548298294831609967944439423 GT 1 -66798522007597740691828878636677719810892.2153275890402692829221034062380324 1.0673561579856491113237766982238473 0.0856263720390022896631090764779311 1.0895160077299975678291452860261477 GT 1 -2431386510555311894749414244628259207.2831547169033367879752464984793500 1.0690955921727020027866749045190535 0.0402686792114439691167623038182528 1.0411019078709295249794150053179725 GT 1 -1.3730375942289714464411142077017727 2.8010166656075869384873121031378746 0.0908416799517110065567857574393933 1.0952360305003345565922114091521329 LT 1 -1.2084986182731022730208771583477930 0.4201259416738604957500954913123718 0.0843972616203574422462393766255210 1.0881727001047437817927282958802421 GT 1 -17112379362534665551993933267315136.5482507140098693863844619509084182 0.4426148361685373367252472617296076 0.0428891151942261505594173949543843 1.0438360271505828937333254120273946 GT 1 -6851077457129044236434371258589578271324037.3124425057382246817209826558917649 0.0522303858478936901382851416237552 0.0469745934852848107800187862115572 1.0481137161715251085687481784893001 GT 1 -14868045659783749885459689526.0950507188473453492500121872397429 2.8064315983672749960465804989559784 0.0413312736597804898599521598237749 1.0422097003343369753172704071526705 GT 1 -61789326677440498270399.2451327158383380715666833207532621 0.3692728946064584485132664446221802 0.0966719890514247254056846099887135 1.1016695457327042586895867686298606 GT 1 -5854583373286647373968026742847.7256813257440339205732039631564455 1.2419643460020061996306096432515430 0.0341326764227893293009342972556040 1.0347288003958348867819838092522993 GT 1 -134867291475773731920944153865.4257890235454274852128843229515234 0.5634773129528510242694558364703674 0.0035216629302952072681573830683914 1.0035278785824376911331351433324858 GT 1 -28507423279253326881249145.4655035093669870994371636582548992 0.4789265738879740036065135897793454 0.0562896541320072817808169134747257 1.0579359969249866295305069123078383 GT 1 -571139978173973976399728415075813543666983.6546207412780116927705208307681735 1.5312742150145300340276876507494928 0.0695126119627143740495014518873313 1.0720467569548409383335360489468989 GT 1 -3620240324056153673743017449979667116046.5315332132708356313225128427150975 0.0531123445271324664784914002819435 0.0398386465440899373320343611897559 1.0406539321269573541599902593625495 GT 1 -1665660811.1145681024912689352218770493359823 0.0942688073680981082786376892111561 0.0098948431733867022796532863176161 1.0099441224775606558747042754563729 GT 1 -26751395590200.9848818754585979498808510172518995 0.5750806864952665203324588221341799 0.0288849432145972488438380681915904 1.0293103246256993971711397717294870 GT 1 -62476013318396359985.6428387545112030915884625692460452 2.6261107111711432527771641010647368 0.0202956165508066764507812153113784 1.0205044023645332467699501888305766 GT 1 -8968260.4686954268841827156466630347099920 1.1427150699220659980807486471779160 0.0515151277453597562495282989116303 1.0528894388595702039184701882857960 GT 1 -123028842.5203630261184838148152978007842559 0.1725799819836108714746155751685851 0.0690609658392249145306606385519020 1.0715614881019156024467847316878625 GT 1 -3.3997786929814390134107844171618642 3.3456855869175186128191183640987192 0.0977685724480819472657582667776874 1.1028842202630492469979354485012021 LT 1 -2516622669164684662315032563259672682258.5986444906420924646819036485523731 0.1557774193130757670758358843155581 0.0332774887705865562874890803298379 1.0338437831069929916786913127503857 GT 1 -349733.0650553350859142105663243988902280 0.1383350311716785540482128801106544 0.0547625224794785712159731293909816 1.0563190840951751462063056704091107 GT 1 -5293608043940540178025434742668.6263963558560191063940487022652212 0.1882595026502274458427602348322257 0.0654907672510731361644084586836419 1.0677337722541835895329028579836557 GT 1 -42162273.6685339600264079457180796379836439 1.7139270287282514025320909998840706 0.0894599214563580702919649518860917 1.0937173626134027509280547870919504 GT 1 -6053408596878660426916485568981395048720055.2458349696290369962700544009631725 0.5079558132975005851981996142788708 0.0286066617923026925382924875803541 1.0290238070230825232335632719510932 GT 1 -154016187522540327786293313492144.1213347939001694609747461243387466 0.7597284988029356306830510788826556 0.0800772986966002702954993068536936 1.0834656327913476678252531144204117 GT 1 -14367084759729181894682491019681785.3532408072901513919963633271208739 0.9622273163637874002829573899592723 0.0898750593890061249992138820153961 1.0941733915209447128319331557455186 GT 1 -39346166600886873190332.9229857861168903876096059728388522 3.1295249012430366630971410628420278 0.0275137519621672547142564871710066 1.0278993444246516695868291942760889 GT 1 -973951973447098870736534141559435823873528.0974798352481437706948481720091669 0.0113333323086205581750310535655572 0.0879334706684125854497604965449871 1.0920423427399470875284095960029841 GT 1 -410782983328420566483138304877383521.7366469435252498003641257012621895 0.7518988143229248965793653678490086 0.0714162290384821117386566366938412 1.0740946804373455599848681243195185 GT 1 -1067508021944277568472806939927155992629.6635682489894251810107300231472100 1.4538178201701662944173410089061163 0.0996350924826436405815516223208191 1.1049551450345380284880995248991622 GT 1 -111.0290655149671002167923827080248408 2.1198421781442751162840096430849664 0.0730900292804990539469855228189040 1.0758988370975735895305911398130916 GT 1 -1777161191165.4057361295583586447728012687023897 8.4418286522566063592151775691813647 0.0398362207277322255040985437173153 1.0406514056627494241242644216094066 LT 1 -177236874566411764378479949527.7407401194473482585631875841911926 0.3264302377997178485012990123908802 0.0799698129479524414609516953369215 1.0833487974642582125921321393008572 GT 1 -25957051.8533424602760748706400557145301908 0.5942380395928105615007772067292384 0.0935393976728712813623587012823608 1.0982077110365784929045283025239204 GT 1 -15055235.6958253661660733224861849992216925 1.8269501749115342251269458222478677 0.0785564824888988214602306859712475 1.0818137978245005086539209600889586 GT 1 -148925.6634138191927332313462355525725732 0.0427729955663117017580211267629933 0.0686178565765694261646174550087136 1.0710856203768950106241449067664785 GT 1 -8157320056643757789255595469350285678551194.1667224863254699502367686879329322 1.2569257124976072853044377799891357 0.0875442712694688491163750243119263 1.0916157111621438712948688890118035 GT 1 -1206058856226802142779335351.2306092874506278650621305854264482 0.1623981437428521051661348597810041 0.0568004836294428070005891864018670 1.0584774425129695179406870984033019 GT 1 -740880971098612795278120.1889934441721664657487945502144906 0.2998887698486938770563388419458449 0.0899143473360812480772247013847776 1.0942165600941047421890834098081423 GT 1 -990.8349787737605122992037852757414916 0.0929221337349189630492018775426077 0.0554010824601195367784905608657313 1.0569948674662771603702042589920240 GT 1 -3106923983982239584089132672928.5025464612662485982235973453807601 3.4685946685050026700496768133582835 0.0326576052367477618865891320743450 1.0337539786794274725294729937304593 LT 2 -318703776912483753122567626714444128497.6316720440607348239512842249752473 0.9951151940986369964429166855438309 0.0135458302744561874078862604991111 1.0136384120486793853946856426968031 GT 1 -14031643737112211513155806.2926973799039243895749367678106246 7.7771262226661250007155763103898406 0.0948723414049587867849035866973450 1.0996792860090873503200756790470784 LT 1 -38665041893632727350.8700593581216840952087576776550779 0.2755356672122146875029435021448701 0.0404881933501925053753430772880195 1.0413306586076834788474574012168952 GT 1 -779089219128915125980527410690118.4078288961302575091432100899837009 0.2953310475513761399357147878910797 0.0826797308565344109772226812728727 1.0862986101844710751105885490604757 GT 1 -2199927009598372867915267883700241678.1058110596079786262700546796981595 1.0392437726609617067505485079016739 0.0269259695928624834724212644734637 1.0272951149965534416621567021923455 GT 1 -2045776852285971378121132197.1281399534446158473132813760132741 0.1077292297453994530808188988460859 0.0854178618732622678189426077825005 1.0892879976594321265062826550318122 GT 1 -5772469832941976009372396848569390.0372162271699264305072874466561104 0.8160529128138301041290320110942680 0.0888187452378984304166235486218394 1.0930134390953399486909187402652881 GT 1 -25953422374925.5735977340005646338943746516504632 0.7175476782326351190482374093558528 0.0603949323743715551485854459281058 1.0622956328257715519701677199903187 GT 1 -491.2278360152776593552135126027124088 0.2802874075379373590443961127718118 0.0629682319221470457529897790718890 1.0650380932865834187945295617117498 GT 1 -128.5603139018403521743122814216223131 0.4002432160382406503266810302578834 0.0865519486769798324442006783229152 1.0905287725172641111609339227092681 GT 1 -4274063987425100181803307613056737402.2945770878818289002075696439621402 2.4981394825695433329107455478154273 0.0452231896020915116289329595912561 1.0462776722046253569709531213002014 GT 1 -107061559427.4297068178720364822760988199976490 0.6531780206759934664030976617836500 0.0781353948426107671517035670134900 1.0813569152790003686033123727656014 GT 1 -386797443975817078662979188150234709228107.0478503408169561508073673140164068 0.7711750694563821125315823476024677 0.0015243493040423494946867727079019 1.0015255123064742706625745767123962 GT 1 -317427853.1378135474466481816847373647461456 3.1726198997446691546347680990941771 0.0475794805112062594447887448029765 1.0487486195691874310240157422150410 LT 1 -1142.4593250351947137648516160983924602 0.6792257747478539012556793753671483 0.0813036445608593895152680614230586 1.0847996187974435647874283534696867 GT 1 -89739119.0798350233559266434511941230751137 0.9351158424700083973236503768931436 0.0511472453727773074628101600977548 1.0525016508644549627091254960053011 GT 1 -296894215380134112387756039870098046092124.0433964167026773960195623026430773 1.4109170667037609378506822987203938 0.0690427046659118398372858809592867 1.0715418724304903147371019752764988 GT 1 -742548631090260699665660383275620.6073775340893713221938430885340990 0.4044532143527765762423906720972555 0.0696537913421893714468945476792703 1.0721984947351525332127725102944107 GT 1 -151299734875899.9708522033449497327535073770120031 1.0375247792613816695893444411054864 0.0944915456543333735465137968914712 1.0992586650422148696722686731298415 GT 1 -299590382852295799204013446751166892.0942221525573581766107515285202148 0.0978230268183374519336786331500481 0.0725661284137248742096643075567202 1.0753337845234380552705862974232869 GT 1 -23132770229275930569.0653907354721729399004697466232025 0.6097289850383782232159247441021070 0.0902261539425994279844865363834818 1.0945592311737000418510579959384439 GT 1 -107379543932.4448819842497424241219322172014997 1.6824320681252133660344810959403018 0.0184487752594270060557474150055308 1.0186210763670953397106671233896856 GT 1 -662130806900712693358632686331542265.7071322463334595830139117844377787 0.2652236445362795061789169677940396 0.0633627715400167653403542694314971 1.0654592345067562910348812004326629 GT 1 -12228032409996681692101.4390602345444044677808697461400002 3.0259454730751870176432450527678098 0.0392166747601138688013814492564861 1.0400063634461836605945900812385704 GT 1 -2177294389582207799976564492379109815.8160816137951883178775852947639641 0.2659291574993650729932737875932679 0.0262053395245995747495921079443060 1.0265548184325901536795073812949728 GT 1 -12650889387291715915.1428492504336339663530387635285414 0.4635599765265967387387315868026331 0.0499233554166124615035125020505463 1.0512126191330574035036201074206159 GT 1 -1538237767867565519069808.8194302644526336266538563297128785 2.0314328006290549619763983677434944 0.0601940935052943062702926391065554 1.0620819074909647206382082223893176 GT 1 -5.9098937330084697675091798691777310 0.5238576856812818011240910421228232 0.0403437082947944684969317791576499 1.0411800881018535265096820425259532 GT 1 -415937362289044174538644319185100858781.3534846609123150323453035251391395 0.6121817526368203501781799165472823 0.0749863146500737847806925933123733 1.0779467466062631848126193470597847 GT 1 -8342657604822807396920446588745089.0839248238993204455828950292566607 0.5615383266437319108547303266596603 0.0605432977806207567438474405234376 1.0624535471731745692748766964896402 GT 1 -25.1989548376927480673847945566781678 0.6087475183409703286902570674987842 0.0395908862008206620949754507464620 1.0403959250932474378386722367417949 GT 1 -4093983700843.9383582617797965206926469540539500 3.6895163694455718710653334559784197 0.0852556354957697442480330258141164 1.0891106357968182378182460613475190 LT 1 -288132368610837.2742861863293778948750166704317738 2.5280326825767440548687064126626457 0.0207053371116591750495780350542241 1.0209226981953480812765292895894460 GT 1 -276012045439729965866086227051815866762397.8755270418139192607134906237180681 0.1932744377185117979512908382912782 0.0275851508015561007819846816394072 1.0279727659878585378540418047336581 GT 1 -149568856919385041786297415561204.3943488197092456873586765272899586 2.5697646340665231101711216725031369 0.0432964354616071393943097527003055 1.0442616904364575943452642006410617 GT 1 -4893884.0086905466007868152894434245623163 0.4285172808797791814028094227671752 0.0235696471413421091643081559339864 1.0238518544464479875560677714023724 GT 1 -13123516857061539838913790901752073964499.8215922986939701900028938945072751 0.7892138055024064171313879760793947 0.0312184445633386109449365678488210 1.0317161254911074288351409892031037 GT 1 -146632782.4089212453360561548634034620214198 0.3051576082491514892890046837376843 0.0221904952153579202512212623900307 1.0224404083032838719672763500417911 GT 1 -8262.6729103296079920944571863463478885 2.1926546538371674155278260136255901 0.0316909908502979441724989504919923 1.0322040183186004565905235491495757 GT 1 -10661780560127880925667918713680663889589135.4776817310143253051880873231557993 1.7350002318958321189685150264540511 0.0997675204303906196256685857785770 1.1051022383813744310543309211140626 GT 1 -9556289926852559549.7752205364287948924678423723440027 0.8882641421838529288619303795081812 0.0518392599436672522384680852104576 1.0532312340788342713459324482427704 GT 1 -7967513.8367600670661194990783057134553961 1.2242003983708955943827526861722535 0.0468681029431841340231028457533352 1.0480019829562107839253431334683527 GT 1 -67.3588850357342182370634466493115721 0.4564458558632113738411620039759121 0.0673301455442841370793901152578814 1.0697039945010160527920700163377725 GT 1 -1312679709037840.0363692341993324944674317012036905 1.1186232821320373740467646423473455 0.0150016383585357968127078526483166 1.0151153011195896385748385161389949 GT 1 -132861.0039259253114243388950244998233756 0.9931176578580169770386159636949565 0.0699419884321750441405244799577963 1.0725083167503445307357195383152494 GT 1 -696127447393721196046663588011829550506331.5715527374960280603052919260827368 0.0651150278464855955651319917803474 0.0086207419255955790937241432894337 1.0086581154680645546996970589591498 GT 1 -2284770979.3148401127806330078896712723436542 1.4674153241995070246302027122649073 0.0023406101664348022670718694402157 1.0023433536762377571719252035687911 GT 1 -32177325579579957466496904366033.3574385219120062294135102003569596 0.2054460998034183790890147629843431 0.0923386858212337507370762535556329 1.0968839719691594450306053497826069 GT 1 -12171.5519176650275018334197627878724348 0.6468228322428038335062587290609362 0.0897857452725272511563787993709899 1.0940752624285434072172969938227299 GT 1 -1915979136782006354683052249460460441726965.6607044429392307608433619439627561 3.1528617726916156167544263576798019 0.0968517128874171081995693795381707 1.1018685229756143854229089701583051 LT 1 -722764280308867342302296741478971.7074958278285807918595085249179238 1.9675749145030497158501757393736605 0.0868733250806642629096626705360092 1.0908806622071667056089481876129021 GT 1 -48514126633018939024.4989057245840686117164398709937634 0.1254696345191851965214320666985084 0.0642508756820978709009299356898701 1.0664078680057820930405200654148949 GT 1 -680493911423817.9839846008896461361351043083848619 1.1627072875190975264029691397647999 0.0348810796399005888420876369015181 1.0355039517019975053561540148454325 GT 1 -310121511744513527053439.6412571062769834402364897808383736 0.3727646994539964205908230574642152 0.0733601844127145658267383985279680 1.0761903373703197302911642942861349 GT 1 -3734670322749022095342360964947865361.4744717586021113767471550627634459 0.4253674598838856141349641179953780 0.0067472643596312462785295851454491 1.0067701300597907044331269602154769 GT 1 -49851103423517834198903585100456595026.4989811179995023284178859764136276 2.0082421219451415731084221821643190 0.0814706616174488262097503100828518 1.0849814332120918820393200572068208 GT 1 -105508093951566099927200170908812010692603.6713085834612150848277497080196786 1.7621793281796078776776425201763398 0.0174011098031258140472453409352016 1.0175542887038812185001750562003400 GT 1 -6270796364134151379171792120.3248213094925669342815797855064019 1.8495777756124201797994782941123876 0.0083290178339412855356118873276838 1.0083638979158926854730419611110695 GT 1 -3690783184703636517616615.5673286822047640438997250613978213 0.3591062557014786466310751460252977 0.0521400023151759653364414425891367 1.0535484694002044243569795050693750 GT 1 -3124951506039.1477113384451682038884638760686893 0.9936970629295326887732270141308269 0.0560726277923467976195637845286667 1.0577060520170855540599988469883830 GT 1 -11639374501689820112233608.8168328870993109765805890296605860 0.0115544646122064075988636099002214 0.0313224261969943855822731447862966 1.0318234636353669324379990469836698 GT 1 -11903430939068189101394.2271091307523677854188519828092267 0.1906421483588683805982636294113071 0.0381483959388413943135739330978791 1.0388950979480616561235692008604827 GT 1 -302309927401258216804465479723253661914.1167061795600448874268434537977773 0.2852633759253811265291820476020404 0.0300040553351620261406471577039793 1.0304633882513469346037547668958180 GT 1 -12654630436989762018257843.3918551369568183601567184220771773 3.8268879966896939445465442459792792 0.0029201031693218968375062076710396 1.0029243749887106766418637188252240 GT 1 -1528405613601117.4749385750935204497502135483932343 1.3575521802839885929576943594451665 0.0026203547166849828059378027840514 1.0026237938552613289280763145355454 GT 1 -23907523680620428558442889481102.6566152351794294724952177050883803 0.0321529919958679326791451591585371 0.0640839284369340366471770242642420 1.0662294736583592826903434841415515 GT 1 -247477048692017476759154516026488430.2953780467887165017155680247012637 2.1463952514833057979470235729690766 0.0881290353490285752027973966623832 1.0922567850462329280013375217823455 GT 1 -7406896.7706972164423832723639857672272265 1.0560314816943059287455652109333797 0.0807602422671865235484875083100056 1.0842083008450815026413931733946758 GT 1 -6650592776381735898450017451509026706315467.8562908844488615185885583983548040 0.0370291370776468458702209221268095 0.0872450174764934812829213012938976 1.0912877996571196391811115406537392 GT 1 -1071004249906201.7988123968289170394558028774829363 0.3996080903610661689824101008558369 0.0071532587327129922692516019661129 1.0071789659549281738751074311569758 GT 1 -406485509930653.5456110026821440468064842175692623 0.7486776557620454469267902350458733 0.0181176331032473390683344483994627 1.0182837671138261869881245273704106 GT 1 -138968914701586734306635494465503619868.9557765700232599235239145750139553 0.6335678584671018715435695066424479 0.0166272154207812365150872567804115 1.0167669992100934122571370751779033 GT 1 -33346306760763493954500708724160308.5661551205966133487784558517733978 1.8296848740828400288978271932915875 0.0011786889712450529502583448402056 1.0011793841714274040622605407301686 GT 1 -129835121723969452468.8104894620040662581790415999555342 0.1020424970629791761662550569800034 0.0317008251135709672207568700539486 1.0322141744909787140846492730440905 GT 1 -29772.4432238809193066927071993866816694 0.6819914280054758422126950247261146 0.0869026836075757466872480763695816 1.0909128143714726021266376691479536 GT 1 -9979076885033061513518.6420040496424092169237634004742621 0.8007628181639513408099857899136467 0.0818739504052177631394696942728389 1.0854205888608763987319259848437707 GT 1 -26399065123716131273533788770815515.4539693162459226064374524827821693 0.8862121083212358616902597121647849 0.0027705376750741665582739815138469 1.0027743827181118332189853546228273 GT 1 -13095668805745301293584150132296166.0027285563526508328172466492285396 0.3486696329816005273856950390956744 0.0611214922401004171136840871873769 1.0630691928520396228947386872049005 GT 1 -1890773435098613728288699097015813.1433213104575691719009960740451557 0.7435168256138323343352991762840895 0.0811879003715234899815283082929318 1.0846736393069331713926798442394981 GT 1 -550503865165122148992870477188.1400806364261924840656369311405207 0.2112833955211504006759210791430616 0.0148920517376401435621453260423640 1.0150040516703007549067967521610780 GT 1 -348765643445168045595.2779799635857093518564885586243133 1.4531527583410842998978264031343592 0.0891943231023776524178145936388259 1.0934257119423869969236164630057192 GT 1 -120376667460417946.5962255375592058394015896092163597 0.4394259955297896173706866652515147 0.0716950335428670005781097134126545 1.0743949725344020329207171349720008 GT 1 -8674649996275093366248.8658424206084708699362502677777245 1.8577035074783975072976356518007855 0.0295743475091356707106484321103277 1.0300204867358406336674977023804311 GT 1 -4276.2191040601186983836360708492038602 0.2731727791243964576616451706725955 0.0075653576378061643091468479774033 1.0075941201133363363385475340335558 GT 1 -28327725800.0664655801791441362854232932600086 0.2539277106187084767318964340864222 0.0109506475543941914238286211243581 1.0110110472438843105488982635414188 GT 1 -3.0012451752350601237377132641837721 0.4449460031188385200429717377137369 0.0604741488929143638200195843424261 1.0623799446933482486684192053646958 GT 1 -2418220.6099413850478016927240353687839517 0.0465441842638282832221267609909985 0.0326871043410259514414393467887652 1.0332332622801291560551415911684023 GT 1 -15912759920405.7362049785486605198470601699331556 0.3601380941931990983045904832797843 0.0725705016729841949568684211518768 1.0753384999750775291655036469274488 GT 1 -95191065869625183862316953689307454.9209685645494714659261469593922655 1.1239991095566944801424733406661200 0.0515964293794607412627158956443328 1.0529751599091724015866916484830471 GT 1 -10286294955563.6758139024435423159752193207433083 0.9427992028980382281596437193737082 0.0334679491756089449869382389686693 1.0340408191408159168195709398374439 GT 1 -818899840252231909836566513.1324526251509093021498896322722353 1.1647001155468516375637674508703866 0.0522519302899792284570146519122911 1.0536665612957376218939174326052315 GT 1 -7722049631427059662494543743235238606.5087595580653101230642561429556399 1.9143181960311492191283231937871145 0.0505257922161919098058658224545909 1.0518469130968403055545112454251671 GT 1 -5.0551896050209257725699388712638925 1.4881149580128615473838229959842098 0.0086494484846648652553332419728304 1.0086870720701516861483260319828455 GT 1 -317404529419174984141393643961237726.2740528821924249654981588845850908 0.6191873854478918265398708673779431 0.0744210971812537643672010952296874 1.0773358963413167560268810982960193 GT 1 -392680345531273247365543441119.6040062989303370824539722533744255 0.5772000341398929782202077599356539 0.0475451411771271792266603251064417 1.0487125654162766660709497424346673 GT 1 -1064155917657915228934235.1303900061823330178551981525002129 0.5485042056039905998282906863845154 0.0374619686292436371361566958824846 1.0381817004883460854165640745398760 GT 1 -261131459809.3492853641573121833051359465428995 1.2121231479645063578218968235335781 0.0598783641712639103669829124598604 1.0617460122717173780991123466043547 GT 1 -194331.0636316120045951083534067592978020 2.1951285635798439387288537399116633 0.0564414040550591883958333608543852 1.0580968112318581987428391195125444 GT 1 -92274519101725930790480495506420.1661212973453588654073099634762832 0.8253701541480814260761642384379982 0.0483688681256191660380354925747011 1.0495777857938265397651389521332252 GT 1 -148785247753477414362796629339641586.2707772349559531505058913902485351 1.6291259759871062573190137946399990 0.0529045812848752282797893980893648 1.0543554319330140214775731429204676 GT 1 -5447249.6054887970879031428597600955159164 0.1087623022816929035430528368560812 0.0876288255823173741414135809426686 1.0917083822124918939495447181481274 GT 1 -11917707851554564630022136382555393829.7137999927951408260264971127752628 0.0605620556435428201299167334379045 0.0085400786251023684686230381534072 1.0085767540532067844299888209530500 GT 1 -1446469115737710294.7500850716505713638595337532728184 0.1340478837254496236724398198521688 0.0878471658560390140683890846241240 1.0919477216497800223591796577606845 GT 1 -3412268456139503.1206511463269903879798368879110208 0.8829908237851954659586195096142779 0.0214795515935089181523872864018719 1.0217135946571643802916206540130830 GT 1 -296058896.6674018369863227617694332296768258 0.1490872710299332244793914499765098 0.0784237708182064721319536875559649 1.0816697823616603936763777334412237 GT 1 -833970781231195053326755205.5684985646663504203015331983737786 0.4713063768436702416370902462350389 0.0079156091003786125616555218021581 1.0079471038442441417686076054897866 GT 1 -3.1504074010205156416747480138125475 4.2074465482412716386956464119897787 0.0872480596439982903313624354475528 1.0912911326135348503893108296230021 LT 1 -29375.3141602211429421208372124605678430 1.8971549315252891066919913256679025 0.0634865023858596208216080448995418 1.0655913443730905772894987597028057 GT 1 -22605479809612456795387345806.6173431088489753064719560161137035 0.0351179338511344874786267001954226 0.0697211363209596397507593660443233 1.0722708843635639091526891084907023 GT 1 -170802801553583255599.8123136984202949110464724286453801 0.4247567825486859452697884064692305 0.0125660838906644660160374412085115 1.0126457048417392806352808207242202 GT 1 -37448832660601256464935213.8664524706500744735260560172311869 0.3694231262833268124907914984269812 0.0365690308975128978754299460259254 1.0372544396700346211935564213099617 GT 1 -52524896935466.5064326241343946926423140210210101 0.5449737160528274948446344977898361 0.0297249606465305904493565467346962 1.0301757019509742598739929283245386 GT 1 -6360480177389004486573.5638652040233584489592128402500973 0.0916561755330961919566258124525748 0.0806941596444710712065664786886597 1.0841364150862375338075887860890559 GT 1 -135379824151760267985994494111689.6070910203288761795978303815555298 7.0078603565061742113740845166267736 0.0412017250932608406499090504323598 1.0420745756446995346079244173185590 LT 1 -22781577269423995502593.5858980873889268796331099461708368 1.7020984542668358303078865047075327 0.0842844986298791371059371802601041 1.0880495505743418728269854301874446 GT 1 -46141381637119806965223.9437143486718867766302007281724750 0.7817199130773752402746174967275466 0.0851801902248293811598799548080865 1.0890281623071820053331984106080129 GT 1 -23237.2510703934032579553897949368646067 0.0408705761045629533522189282083160 0.0125761104887769499104260547104144 1.0126558590898922704592393328549296 GT 1 -11468267680598949218.2115078718396924965126067438554738 0.3940259151376697440439965403204146 0.0473650911237863953079391163583363 1.0485235453953520659279238243183223 GT 1 -10769092823.0815571138733710128688138354058655 1.4707273340318580777906848583148524 0.0823110805601069654818384491927763 1.0858968135028188820550124109165951 GT 1 -515139606712676684473917175879658.1097401390189943502161117193733710 0.1712242254238061004402154776605622 0.0064445642301796410160782802523386 1.0064654200871325469613281919812963 GT 1 -155446666386957585099502430990864704.6826155342381860470934594171019979 0.5073464410903530004543377225536802 0.0124499485621168349017884876790961 1.0125280984909133338877499032344166 GT 1 -14749770738496545535710076077158190676.6266615550135980518092107152558676 1.7472543699011168808088282911283839 0.0461317380192958735138462061029568 1.0472297072361522733390644143646560 GT 1 -129562190766714050826887808.9204836071159068786339108134437151 0.0018394011860408343087396637068936 0.0177343697162964735333392124156139 1.0178935079354288725220750532851937 GT 1 -2123390620798879.7153026050214566102926122062950500 0.4411771142491923585417772005199000 0.0634977678513206766232481187427962 1.0656033735998420453023412501728534 GT 1 -906451730332542831205.6893956926697377554872712382869752 1.7104361103059975257250248886531237 0.0765745806843872832560520539715621 1.0796652413310069868001846422685626 GT 1 -1109383017308640786293894.0907181335407158691954764868522092 0.7716834330759978173949760247966831 0.0192384746958069039629061710588987 1.0194259424405518856649188147993811 GT 1 -4077.2812561959325285927066641875872534 1.7507975405196464117982093948037709 0.0825734798369129259448617687194289 1.0861827892762569034007145294305980 GT 1 -791052444404452079742330220310689527939.7765536818892990508071928640074159 0.5554888269458334970761500510456366 0.0510658973441272978015763558968575 1.0524159215019739817320875803494641 GT 1 -740631083550977034942.9925830052825844900990012767404196 0.3210980487390872880960515125684671 0.0820025335451259915334527955289141 1.0855606482185334118655281219123589 GT 1 -164730061637947794366867632982048.8784806574670204550220451950781982 0.7077145169381032015113702902699708 0.0858178835498398929031596453679296 1.0897254752424025724771933060026097 GT 1 -10427402841063460297976.8536672041353615486930793149185710 4.2973109710843634550600053662725757 0.0475632924811169534570852385174062 1.0487316229881731937264699644295724 LT 1 -3627240970736234613701350.8877161915469695240600608631866798 0.2225721256605421907085827035098849 0.0993256895274904389591553069457387 1.1046115623350538352550486746388019 GT 1 -794225247173457262361198969915767.5195702131825662114250424203735991 0.4045267906411770857649773371075457 0.0616497768702449915852003901428326 1.0636320274554074999929360304482879 GT 1 -36200030.1545990014829974333313253941958063 0.3070108991312172996504758803054503 0.0812278369808081407793753685822373 1.0847171057319594678684998598959408 GT 1 -97189437790780707524225767192.7072580267551303738000375412195087 0.3807169806590474936750417642157868 0.0513986451737174486504720252627892 1.0527666373019752988750191799125025 GT 1 -6305198875045685835294581551721933956295.2522037534590868241036364252229359 0.1483371276230999493318820404188253 0.0193694111764256235036955769085914 1.0195594562646058307286803381416366 GT 1 -38021522037428.0101741971562751256117151906678520 0.1950541035538450494712145502724675 0.0866536693701039479581267738217679 1.0906401377527105900263751868064545 GT 1 -6793869202191786117156021797750368469717.6716235647906825628002294912839350 0.4570679178617300775574339628202549 0.0985175979798655954050648594388119 1.1037147573056324731494571358545001 GT 1 -107115556323885403650358459205538139470550.2153872723435447028002968514240588 0.3737088694581338239723998670691649 0.0972355665185328858900918082716509 1.1022936306040386801138435219392327 GT 1 -168908985581.4991445595581691557380667206918849 0.4629635394530497432189084347884154 0.0923349930859763886659523851565706 1.0968799035708616181006342139279795 GT 1 -26977292692794290414840707.3475276885362338895393021794119324 0.1291779644066839752108363139445290 0.0146714179384180728880328432509076 1.0147801075881151884703969151530098 GT 1 -432886479407522865389.6543194415910337490359521107354640 0.6857355785532203165035098009989943 0.0415750822056523569521759699927293 1.0424640525908709682019990811956158 GT 1 -34124055044357453983628893143836696935861.4601623911441246241995417412679092 0.2099021932949524305688651615155061 0.0519035803150669192439446201980771 1.0532990733706665151835795701634276 GT 1 -1405713401488824020412854813118.0566519719088903832277160399059012 0.4644900892159592758478357062215735 0.0047131681679793767680859573485747 1.0047243101682683715055305992042813 GT 1 -748189688241375816097869899272846994.3809016792736729753779516225357636 0.9402558050605020126600637388688198 0.0522470890895298776705933062752767 1.0536614531997789729571586520333848 GT 1 -26476663987178550701215594714678523.8814158902089023392586221524585863 0.2370433131397147649984960529164660 0.0569379729056669970451474231110068 1.0586232221657902237615179652358266 GT 1 -5.0568336653106721311856621168234721 0.3931359049169257621534317198111339 0.0049263962034019451659381503231190 1.0049385708945382418921875028799621 GT 1 -759937431528615.1770094493202981290790251043543402 0.2197086245185760485682575268963349 0.0246977142230779222256478978226758 1.0250078193414551702701263884869030 GT 1 -291794102029219553.5366268555207579447031178393238764 1.5117630457971507991602747505407433 0.0070021957955422939224440645181916 1.0070268262138728695481465560945582 GT 1 -6275023270569105.5523906980693728259235130548170692 0.2168462841455705310609462023592536 0.0908171682587264520262080900847080 1.0952090700006924344172917768752174 GT 1 -4.1495285021389782785160408193677390 0.6354064092205922536607497461635951 0.0492746061985025258084714567514756 1.0505300133380303666670799720818264 GT 1 -18617054948171120627.4001837375652417245726445341575281 0.1327983503380190738782213002188845 0.0340046266358713713928480224959536 1.0345962342592163559767463981578753 GT 1 -11976.0206798294131195931156143457815070 0.2911954261751604920835459616394138 0.0195986497286192417854559718686618 1.0197932500633377249611939879825567 GT 1 -2100472454600530312587155035575234845.5536314117292748567148445851005605 1.8747883105620183769448883702447314 0.0602919304735447608626741614337960 1.0621860162867353580897190915316541 GT 1 -157582146049.5851534122995489092147316609804330 0.8851092308611918018403960874514756 0.0224454500238676531667315762945767 1.0227011830775094755203009001680013 GT 1 -46807699713139840074.2068806453789642365724188453758317 0.1904751930471527482213709659837771 0.0709854402117385690571616702613050 1.0736308677526169394688222314288959 GT 1 -1298019889737198518843908444517431.1239036778636521037594149042665903 0.7142023978665694406261027047939804 0.0917080320810959670341923704407636 1.0961894014956690114507257628691284 GT 1 -116278487799.4703735239528347661755482234598622 0.4518031716824734276797628401578780 0.0722841420379052325799631919528681 1.0750297806217583594714168904242827 GT 1 -1368066269728732.2476785804915297658353642213953492 0.8087524775215262153679703349056190 0.0261463166800449038284521457783747 1.0264942090882382649311773218477052 GT 1 -4985822913430646797439436472299.7704177090477603249692473529845399 1.0385484105511348823121118962555415 0.0391856885807167439103765409017289 1.0399741130116403685731198384777734 GT 1 -42173339509073.6843024271471769967691847254695557 0.6474563036619499865580595420144188 0.0509501511138521798636464764582073 1.0522939539475860036264361456088464 GT 1 -4618226449.3673112830378233805521281715883028 1.0800041212871103317607809128046946 0.0418461677384083609758284516204179 1.0427469374288207441602561112611865 GT 1 -637.3993090589657241363810967850619026 2.0805516317278632911041540943250694 0.0305319835788840917698851427815941 1.0310077946103754753559561806275281 GT 1 -1138960589.8296821718834430789014905414244317 1.8043627968484603070896028520479784 0.0987807690206746496250945373594018 1.1040067313493246148873063997662599 GT 1 -3614511029145486517692085278.2659096125748452229705587662261186 2.7006026426583608458645836640411428 0.0923073906744396319759696768761160 1.0968494936821521298365745990726566 LT 1 -6075354829787490189791440.2733646219310007354161767569496399 0.8283977711050949959484356702592220 0.0432355021912058143201359713960378 1.0441980016071314575111403102419915 GT 1 -160176281.3499480200393387614286467194023255 1.2602901639733435027825945283474554 0.0719266754695819898812169384939312 1.0746445358147332395621824164178738 GT 1 -29323189529263159.4501606195905337827600799740485335 0.0228284545943521017586368369571556 0.0000737021582157472412813363368658 1.0000737048743532676886825115387265 GT 1 -393048376517598611.1318006338929416377238053325441655 0.2327712840075556182278888496742833 0.0037652516871038936982069899937493 1.0037723580911123652501471238237795 GT 1 -5722656642589027537156798711509267.8719427971491033206093288107578095 3.4584688443142186684249947053492220 0.0159580481495740616023223126930862 1.0160867488443512312750713295650534 GT 1 -319806800242941720611616488971.9935099947846019137484972824694458 1.4306985638817299742237591707144286 0.0771364833680383091199298985507292 1.0802739247175118973793309133736540 GT 1 -5864481.8420641375039722785093521469249360 0.3155734255486996107368150712728956 0.0772797605714975425018240664868433 1.0804291896338578274229046254412145 GT 1 -490705404969834549147490522735074370.1815876322284959789530819435576349 0.7064114379462308836779151566824254 0.0306550632602556990502209059089626 1.0311347585666831584490874372658366 GT 1 -3.4092937192961653332262694805691775 0.5754137192770956716976210945734240 0.0768666234446892064454195909323231 1.0799815516086866552793157540856724 GT 1 -222754820928763926490392.2801177883488801155511950616852313 0.3707598761410992314148472344696009 0.0809327705919442095915660313733322 1.0843960043423440271025868225767708 GT 1 -1253021372484709019999618324.4385349146481917133486152870299950 0.1119788529148570972128342441093722 0.0868909880230381555941305608097984 1.0909000057590435849273193705391723 GT 1 -465214435.8809493615198484022471740539655100 0.5510482357765326794261019704085978 0.0586735550681629612016870454668033 1.0604652867708605803640748044527725 GT 1 -57562456727962625934920945686172189805097.2743548515911808077578042195004830 4.9258242991694033840672223218450503 0.0034613307353868296240721571123107 1.0034673349997837994785074978291421 GT 1 -93868.1440816931469234883248781523962519 0.0666179261645442524297345889883209 0.0855213227499939321461070347101943 1.0894011277160953308524509072807286 GT 1 -180186869733262014.0829347344196607914718569378060401 2.3333700663916397326433183250092911 0.0621345844593504558197119025139974 1.0641488205040349255273779210583359 GT 1 -17246753298457366257.1342429691313174339055600124871196 0.7054319797280955236528299319472243 0.0726918471172745696105607656723176 1.0754693491486890774779257698486375 GT 1 -289870755638158055815273473531528046708379.3707533305389008508515343639866570 0.2637477578212967135500921654534119 0.0446742990539317182630147378108001 1.0457029485340280843819556974749324 GT 1 -414358756272270249237118005529618985.0756347645744255988142983818591387 0.8957109335806068550563204375791369 0.0278394189086322177941671825932276 1.0282342812827291960961226370036727 GT 1 -355409304197436674.6754704321209162922469723267838781 1.6197867696851308406624850032224185 0.0577208328047898809257684646544387 1.0594536924769335806483168093472793 GT 1 -21.7814280257850552683364046269847835 1.2568988148706366744499739048068961 0.0704220857068976901206494097588915 1.0730246514572755177080825317893103 GT 1 -245474443998479116569433.5195187974255535574996226511979478 0.8111878032043582909703455842643800 0.0707698033253259188595631329897226 1.0733987811164183488001055978414889 GT 1 -7733529553.5183046129528493078125672059059267 1.0527533787971903795766302729172264 0.0091105722853370567004435033905100 1.0091523273508662998490266654999184 GT 1 -1026827408625713149521331243660.1266684491010971938191192812076719 0.8417519879418709212007033694214165 0.0097636716503928182029175322903169 1.0098116488368602065622361560781350 GT 1 -175508868111691534216215239256857080.2540134505299568257704531708269212 0.2811015805749227611997598711253716 0.0402168175897429547828869686654436 1.0410478716845634331640161626932481 GT 1 -95.2065775302508754813773871788123150 0.8275920093437745378915778040824021 0.0860704978715860375818438215479297 1.0900018416532789698362658819882086 GT 1 -38625396427317462528992219382.4210527834861262730637058490457427 0.6350185413325157282918424754596576 0.0565413189604198631073895791934929 1.0582027084132700322692666762949896 GT 1 -24225158915003407493332937303742674.3640801807349700136336680527210399 0.0272486112020917986803447580065633 0.0803908495299000763963510718715126 1.0838065356531645083174486886360149 GT 1 -1626254426004428.6808989256255986822279659577032706 0.0987785691019752866073308627716858 0.0250240563257574568894290189273003 1.0253424814433001944435518021765957 GT 1 -3843335223500353.1915926261663476424520372198351463 0.8037604421063914705063051722500380 0.0813085657130513932762441001592684 1.0848049754806865171692376922412992 GT 1 -308701966206345389510468644.2652612103873204707248395494827576 1.2997720473607354146813975165718215 0.0692592071449815718517040446001025 1.0717744584565696820126884257316932 GT 1 -4659.0612352457790809996311603704853536 0.0523557474388037997332303860506774 0.0081780186621078818982675730632280 1.0082116420975928732732447263671756 GT 1 -19049763717189148.3758907739457514233149092449315012 0.1460087632339692917384553936288308 0.0188813620004296793483627954209833 1.0190618909495372963359904925013073 GT 1 -8760352353.4299838658934003392954054390591006 0.1212202006883144990030195357047225 0.0932438293913563611928948512663580 1.0978816956494008582971203452568297 GT 1 -3922265977150483165.6363433097499711669705033670460383 0.8369433691821364028431586154719256 0.0418038724198051321933762299091648 1.0427027958894397134720793603734452 GT 1 -9411015691392413084735199512273988218851570.2157003527194415496015198495439121 0.2658302247333827374499455726373909 0.0845572971042625377748331352859104 1.0883475024124365144064794059356381 GT 1 -2363530418424394233735566515146644090242.4225087956121231873699529788336584 1.4813536837736131292553988862098483 0.0999559915036587562051150823231868 1.1053116185240425838709246143587643 GT 1 -1104942497589115258483417166906496799184938.3973342551688187376096524383283393 0.3791826308753173883707497262536845 0.0837629028377068592185329424762787 1.0874801081043950807687950420590830 GT 1 -743722515888096.8483691855343961086380091755872370 1.2717274822729490059268625792197588 0.0984283766934890550773842284761690 1.1036157904580548477526246187709631 GT 1 -194507729355.5547536308461847399165733939054874 0.2516515661456739712804887895747009 0.0736280717188644426748004970946103 1.0764794745642987746891561191756695 GT 1 -540445921065889871262331128395003.6139662428684296598445405734086370 0.0360528542285565689345142879313571 0.0366627472669512040465041280517143 1.0373517179710260408684299891607213 GT 1 -36175686740855716036238714809301930780.3478321376588594945747240995239876 2.0484992840707320385028082293544545 0.0625540178027489532904356827014958 1.0645961417872078031521904263482586 GT 1 -36068962667877264400680.9112011050927786652483549034241570 1.3789395415612819043373981781701789 0.0622753271276096181242790117074850 1.0642988987854172017984702724055967 GT 1 -52102477592007332968932423.7185185955411890801710707209470004 2.8261576822935288371774724239965958 0.0979161253142385501991945898651764 1.1030477757860806545062422724862112 LT 1 -533132101587308011739870047022244640744545.2963147507091882895070292463263856 0.2513715553148027568004653566457122 0.0804095476623850040594278826433533 1.0838268685549953127170766711132277 GT 1 -1345111457597417110060559.4700218041221553440475254599057451 1.2725503184368342837117860368811484 0.0509289078413401846529045433647272 1.0522715704713242761315187515704119 GT 1 -279377425037.0750250225049487237554315862127721 1.4938474184407898659912048017264094 0.0545077380292068613718156949743724 1.0560495749776188210381234928752802 GT 1 -214435810935860.7722696133558270509696340073422032 0.0793486476718864182055620903277181 0.0042620776745905108126887968285058 1.0042711862177346997291796828144085 GT 1 -18154429294339040410448.7214124754486351205029679780609297 1.8068237726291314088893861563105954 0.0880155612760980444944136841435874 1.0921323518561160214176537074278967 GT 1 -212612988282401558482.0264698878610174823896039451761164 0.6937560767180207882462323134667893 0.0611583517973916090893410666936447 1.0631084527568543873889324323384840 GT 1 -588754658424307035931454007070800775098410.6540792481358946144334956724849213 0.5037594157917631106373631382146164 0.0041375575173078125879045758860972 1.0041461408927335171326045591862800 GT 1 -1481298614931717715767574933.6874208533766362732814117390780418 0.3033495784553769784411112674858502 0.0730943982104740355234139206183574 1.0759035505437650858975307459752420 GT 1 -64751590427.5540108279445121156687762825592791 0.0232280203230057161757091934560019 0.0014551515557908768819754701551689 1.0014562113170162650907389938571136 GT 1 -285552376908124682702542707357970543269.7123226130413776679099676393206600 0.5063346609198325965473466093776659 0.0653417459175173251505811198854689 1.0675743201612904387099057072339118 GT 1 -603648608280516148039751.3683222934159467446123268928314269 0.9695414744064688346694635834072614 0.0517722454928423862774076403410622 1.0531605582114738900947974843445423 GT 1 -1719326764874610581322585272061931.0717593444359464599711356947996739 2.2812862011485549219052473588485740 0.0751020933778569465699888726484621 1.0780719187803679017000606207827084 GT 1 -1265337320914799046972103540423.5699410028944463372062234577687154 0.4996287466379872275275446979807459 0.0765909066653074509750476321571878 1.0796829212918359235935821273836990 GT 1 -118392.9878288012198989336554879739380891 1.3950372261604518365187920737825417 0.0671638144180805295706666631013871 1.0695256717048689914991521143681229 GT 1 -85456455168841358179420947512761.7916833214238418434786526771346243 1.1988593804557325883979531740838826 0.0150126980408817679890975647816154 1.0151265293052058459188029513404292 GT 1 -413248100.6854473758553494096788610577987127 0.2925453628775116901710113468140871 0.0605451943478925429737678382488104 1.0624555659667833597054268533879225 GT 1 -672819071061688268785259.4533998034388476490638390712450530 2.5299849569793344546890098199121333 0.0121480304253533857214567488422984 1.0122224208254023895461259764251051 GT 1 -2367197014.4579530034050859622994613449006732 0.2636189189862570957029755159411634 0.0799276197463395744656905938613506 1.0833029378449414031764354168635780 GT 1 -2131232568880149415899954564785171060113.5221548337901926115291521725173271 1.6962425233728254207520099649471922 0.0965368298078749430433616759230569 1.1015199332647968531686786171091165 GT 1 -29341096289316011.1422437907127786380431596836714240 1.9117332709056382799256399564973099 0.0872400212141429786955354533873636 1.0912823258456676295433435203876320 GT 1 -102255967604217227013245669310358775.8250857436031438035878369204253374 0.6273327831297863537943076588572980 0.0011243772585570289440672051548944 1.0011250098448883885840355419311815 GT 1 -2709.9917776757141201642268447833752226 0.3267218022280372748693744795533094 0.0421085433792472549104268221139895 1.0430208094964605630735344866019562 GT 1 -3278535842203813431693294544252.7243007503493628751194759307656907 0.8920256155118758747669501517591034 0.0290906943583578078189222128141376 1.0295222180998608169221070112068972 GT 1 -781627397800.8450397746143639103370440947707095 0.4849649488875845479881551482233226 0.0148408530685083309595917166601421 1.0149520803723298071867027239940043 GT 1 -529290583582734467179843.1930699606850807265385518844061799 0.2005428139257598823578839652748124 0.0179919306015427611894118364126491 1.0181557533513951496819236558528374 GT 1 -4541007943081251847.9365388278173962962487467663199368 0.0647740093071527135543383905028660 0.0103241949957541022011150735956619 1.0103778591760905973708550000311606 GT 1 -466813537112992496176069.2694312620720920127478735599070638 0.0213951002344750585287732624725065 0.0669652158719007361591047415556562 1.0693127968060643565835093934804571 GT 1 -4011729318620355615304139946.5789900542224977162438982228770687 0.0823609090562736478423525031691180 0.0143000002050463407772555758209075 1.0144032305187648055097553187616854 GT 1 -64006498038130558050330481011253265.2799089140337372767224753392492037 0.4302655114273182942086261245415085 0.0530481057579847885613429579512363 1.0545069851412178741905742066004034 GT 1 -28922217611141697203319819008883.3216884176271045758325933848729450 0.1494233244084779822278034072655729 0.0713132103097199368263648133304040 1.0739837448191858957070059320942559 GT 1 -5729931083137532804427728.1315850831700878776002208727892694 0.4726758451670553982823095362702420 0.0669432750976252895112637717520601 1.0692892815881125242035073568139006 GT 1 -3033120493287267367549.4629025053788760679868432133802287 2.0934630860736299805943555408923165 0.0544512101187004820991807511301066 1.0559897900137039946921965842267234 GT 1 -1496632155388779183846333136216.5375235934370722744880739741178974 0.1186008577853945661338138312933355 0.0891363763666834643110831418816948 1.0933620925624074982332661844468700 GT 1 -1150358727385409046783280.7659334935142098223253955034566203 1.3226051557961959147169422135749268 0.0016246460940368470525153141907359 1.0016259672626504676653095211867615 GT 1 -1097088448880931498997425.7882692008963427584480455057579961 1.3104202231517219115567675770509961 0.0960821064766375415289645643747034 1.1010167484633614726694851531234690 GT 1 -3700662160.1024611503026670816231772369807540 1.0727620073300010415950913000461608 0.0796543774052082336998084176682140 1.0830060027544172979347215777529718 GT 1 -14034098129034015809145.7316641868167431214434301441617524 0.7360677316613785404499083544195765 0.0532314557556411199175426600973860 1.0547006251257720832677459095932327 GT 1 -14759513169511.5456875262672994070947118183809895 0.0010683892972434151302187000238476 0.0554161177192110200753156422064999 1.0570107846756580926539502915409803 GT 1 -20329082585426650.5354534445856882603819379435415416 0.8328447813617842121296670552029389 0.0026301321508487293355246019406489 1.0026335970251324881221088564721911 GT 1 -3350362527740.3711133063519831866372631842474689 0.1610869625781392734522847600573070 0.0869743684554578787514185398840501 1.0909913248003568547844494375040408 GT 1 -4150197724730827220395574965592711.3519517055664213716605106457988415 2.2591162194294352642635576523480459 0.0474037093029391295895442707507244 1.0485640844954535891820068040606589 GT 1 -3.2317729253601307076988179334371576 0.2964352601296324524321961075826216 0.0975146858773412899992912171033326 1.1026028613477660166095740566222806 GT 1 -73614172870688211855631815995749.3822970082682264350760562117387952 3.9474011088709297042328366651361988 0.0394934992364121386215019204467391 1.0402945286927458691758884111568010 LT 1 -5696452532042273427882769269017010798790830.5476943126849696932667256847637999 1.5212451075654821757037659091940776 0.0962764448745814579443213117231032 1.1012317672092946591145978186258810 GT 1 -324647.0213912961110226714192132031977520 1.0286883840911101512800298494661168 0.0666107804834994915621468398807035 1.0689329952261771299969798075290943 GT 1 -161729191872.8190378467465928556504420065708111 0.1619394947314492532126330739335053 0.0544926770557676944244141990639385 1.0560336458641915833561491277859472 GT 1 -628176965602294156431519828008635021.4389055231479765886831253460314191 0.6410556190910316042751908572762851 0.0354481727358488689456741004251898 1.0360917132286437509455961921262652 GT 1 -725968847393469384068843418461811808.7115144029680432525044409296303349 0.7195799457872721753369339229554707 0.0454526461441119237056039008551173 1.0465180258830849059212514719669346 GT 1 -2207035407649439072679924969787015389538.9116210590409874576606178181612291 1.5691344986720946698105611647061181 0.0230322450761454569840389276660671 1.0233016316561078291006504064287863 GT 1 -6817092971.7254964032725229199485843182218311 0.8652175923046041055741383921506224 0.0303144254308269933952622207893297 1.0307834099613402170786043607361524 GT 1 -595563.6050146933539830664146669765823909 1.5374316662757507074430860067963500 0.0482058987249210441274820124513436 1.0494065477559376647636880618858346 GT 1 -15025200508166817949874309576.2216135320839444209089368896919001 0.4685491758425543364443832989732027 0.0884901838345807185503177153408378 1.0926529156779411851061663574954986 GT 1 -438308391832749.3282705209254513608115190484959220 0.3131537690454076425234544909567748 0.0060281256304167905797867926920330 1.0060463681287192718464434298120589 GT 1 -619523101346201109309418709047626.1015774764253445112973328358967392 0.9650764536794891073256198656222006 0.0766034251414392641147164498775940 1.0796964781877753342718786584703032 GT 1 -5062078893110534685007861317.0040750289038072572777429272944343 0.7934606800689378378729166924843681 0.0475359069735291495376763337152058 1.0487028703018581369039499626296412 GT 1 -3395364363055870702334643572.6480153320075652840608749241140510 0.4423194759740639246966325427236037 0.0286094942014921629009686423026369 1.0290267228484309898670834215260431 GT 1 -13271048.1069353874745407224980468077314584 0.6856081526793223359750909254695268 0.0765233082237302413692133808794156 1.0796097186691806905208541482920444 GT 1 -155927748188954277.6140971084394161127504355302424659 2.1581413382135122784995304128251054 0.0339912296411085076147350506824139 1.0345823657643618240796254106295530 GT 1 -42765881.1825922684506530442745348345477558 0.4217032232057777549964369076625651 0.0784779084078621010784137019273388 1.0817285286467185513826095753889388 GT 1 -218621883334856492451.3629202279385641933744853941719763 0.5485293181635703692176464632205852 0.0656912305305857280503966237914529 1.0679483070885478771465287596822544 GT 1 -28601941532198515798740831477421.7059026353391999564276477415938860 0.6361642859627969236305294971448738 0.0168684036426100097281391924029462 1.0170122956105247850970503829753385 GT 1 -9105.4702134390885579496714472753228099 2.3310811942612300857070385334512581 0.0295247148151104335275290013746245 1.0299693427613362043103828333248793 GT 1 -1239452515083.1972111826958231798337799104611893 0.5752033246265571453905754939174120 0.0678072664132365254707956406195525 1.0702156899818757824153382823028154 GT 1 -1634430724010143917584390792704695996979716.5022936372232309778390358791438701 0.2295072848538545011051601126845397 0.0428016225863182562045445730374559 1.0437446180875902439436523993769563 GT 1 -56.5759869995041026484674585619662984 0.2256207427798112814108254460297623 0.0788472115528359661111977713382376 1.0821293624062915683120646661385167 GT 1 -21173216331891029717474408506440889117.2572710396320788171553969606850983 1.8155452506241174146746990942141381 0.0342387992557677542078554792365916 1.0348386795281307579038549124835535 GT 1 -158609061015078725226.2870644285805225679037440816258572 0.4981895382872058572016498079036111 0.0316116788258125166825114642305721 1.0321221139102162088400793922848093 GT 1 -163623043388750051999.5933006882984615347335574314916809 0.0624949432204428953954895852641714 0.0638955513682528775066698916550021 1.0660282183117593570971968297817025 GT 1 -1538.3937486511824318710709749062196951 0.2687293826856827516181961640599082 0.0423568868976116496679454957633698 1.0432801037150887401033825495654328 GT 1 -16886793237758207891714761620.0938470653822623400561394754072656 0.8215717961915119150802731689222605 0.0148526848353524572669569411227515 1.0149640904500226764774495869582243 GT 1 -100353264914365232398957072185889599044094.7884664302606819149057773134788905 0.3547050850596673964217398848825871 0.0641688555843623834051064243517608 1.0663202200441549954357153367080829 GT 1 -3539.2370351093632173249436633567336461 1.2706027456081826838537679777752100 0.0074578964458246244286924735756027 1.0074858456035138909324947125227239 GT 1 -42791765691511531455728.9224917377674264115309613537577596 1.0539476164809404066792569339616129 0.0117583182495345330586745344898070 1.0118279939918260573351354465477914 GT 1 -3344.8716039776326830507012594432119527 0.9499931472631655576234624797824179 0.0560150170008527025438601038508257 1.0576450208030537280261885489679677 GT 1 -405084207102644769714024318619511.7041265440859795668800214680674280 0.2472371583243843567701138927214295 0.0377602989688838900797244318702350 1.0384916898829729037354933051000248 GT 1 -5050188072567740357514488414058.4534069908701769662755418478133199 0.2301127886003601503305014283408849 0.0822736860944849414277711075670121 1.0858560658126528379439272589745566 GT 1 -96213722748062507671427827324450349.1489368064224172986731557841434205 0.4988701065436766328401463885757659 0.0112418170214218324907891806776158 1.0113054838499909011046125793944274 GT 1 -2369994540857661514973757206555345322094111.9760368688697696254186871144111755 3.0808914357419842496042023164553286 0.0768381354398860502554213929768227 1.0799506919669879568759872281611948 LT 1 -11969363252536647276954345158209.9925937879985710568485435842603656 0.2201713989459863577042451474814658 0.0886805581546879847034215330681279 1.0928617935198595135185843931936787 GT 1 -108197229.6032719387947202215114373595536813 1.0667118457504007661223435259696690 0.0689722449836562950503558800334480 1.0714661901018100541677325435108048 GT 1 -22316433878635647219582089072464.1745310258451020395053053924876475 0.0187347474703081473749415929837575 0.0512609931825226517688395049863771 1.0526215373565790469371721349325334 GT 1 -2322461880527695471024757340834026639443.3261587458816195017988162085057594 0.6430591423280142228662192406335246 0.0723234945035346179955400610278935 1.0750722001836907273266422399206820 GT 1 -6197012865107158234001966320636.2627420537818265174896581081563329 2.2889269065361815918701792920510126 0.0689148926867189831259017648851297 1.0714045909387134677169353864742460 GT 1 -2115753709.5573273818030011578377916850934982 0.8210806917634021163762587053623450 0.0896229095753330772701963354689606 1.0938963802229765350117376496548323 GT 1 -4503335286817246545300309.1633192310663879571257666598678458 0.7159366291596863525529063427460187 0.0406946408551965207538330630507158 1.0415458406578347997367394141684918 GT 1 -2112730121319603967.9466729517644994376482838487973884 1.9150308617471732246869403861516077 0.0394162807495839162172655603593868 1.0402141384163649446948760406179618 GT 1 -5774388942277021000801209680320868515.2017027371501782639843927273160210 0.9592538721999675368003876935546071 0.0894512841727042830010853255855580 1.0937078767677036831335775869763472 GT 1 -961092557.7709194014714007115704509984976721 1.3170742555161000101630788228765809 0.0278896601086280716107610463997700 1.0282859625576634957439623810271788 GT 1 -311732789636779026679469499320.4025092896909644793248928408634192 2.6049555158900768071843000466057115 0.0800571032459817919094341985604480 1.0869251034445416676413734024006829 LT 2 -503055374476763681873707.2216291831476765139048102835222559 2.4388493068348914833849251706445674 0.0524257488353535085043716501695852 1.0538499797506855592500193876742079 GT 1 -53063.4016600182804567934899462321614379 3.3818251520103101033196572869595973 0.0819986765793786625412558164856092 1.0855564467280219761597094922524643 LT 1 -7408727855997838985774.0651934335085368444217846350384172 0.0113422179638286446390904213709393 0.0292422074363565625246480650793436 1.0296782830385378178257449290143861 GT 1 -17339837443673780574051680464710758992733.6650523812877109500302425536379778 0.5319450749766538247240239714175467 0.0251236406380094191892904132752743 1.0254446269362521268740457990076226 GT 1 -4626067895390582100287918388395961397131300.7959124568455652086593265426769438 0.0786093026285531931460429716939319 0.0768270076348487987756810487988914 1.0799386380267228442390812467859785 GT 1 -24043817787352212396230308314657.6092666657322668723842636246834650 0.1209598726348168747069664652360624 0.0686208280712421737029891542290981 1.0710888107960305811355827639384202 GT 1 -1826681056573168870773858360.8102746912308310729747923763988092 0.9537171419684595752942018896118354 0.0359520140772455002841225771190193 1.0366142076823028235462995722722954 GT 1 -2517993958468719172040116560583166545.0323925222940758769168617518068677 2.8177549058245411750149097068085578 0.0170131745685897353569969920897569 1.0171595613343357147926620907145904 GT 1 -4012408918915825371838287464441.0815234825650269053352276822751321 2.4642476245748907836055845858839519 0.0505050489487006121347674413248357 1.0518250662254515702697815861442084 GT 1 -583581473470775644050096868178.0420513969699663793324676995442950 1.0018381844522421082076615398212010 0.0967064313632902049285358976290418 1.1017076747047688551825166443505835 GT 1 -787064599124880091509076830848670030.2162021065552151778376371709150461 2.6112707208976331343818640149659637 0.0348947550140384490482635534061228 1.0355181214283781065696002669285026 GT 1 -25549.6678495710758356387326668337886394 0.1142014387218489700817728492622706 0.0557743270779808385968519594932636 1.0573900811082472026293365953480614 GT 1 -13180816325554067527.9747166764105306671165989681160885 1.4126417804212270318928716586835342 0.0235394920071152958905938417352090 1.0238209718868193752052806335200319 GT 1 -187368968776269865051305816002.9926696573096831895600325298974780 0.9761422821606708947969140417954245 0.0133369280841016132352498521968875 1.0134266636672589889088207060116263 GT 1 -15653661432341239344540542630064.8453523764698514779929974705154369 0.3776069592456172164285438270739271 0.0474195664163460321483124934881148 1.0485807308392863435539263952158411 GT 1 -199296723927747393098.5299222861124221696870600582906228 1.9192015688553788041375496960985254 0.0648288308482670108549100009688284 1.0670256978369843279815438730685705 GT 1 -195680686076848104007359419916910.1649634379927038272279870117821827 0.0284318090617201725634457008895073 0.0170606114891373736557696538767579 1.0172078204401153966253016448108330 GT 1 -326538239045645170987735501380235852362248.6649296971252183169131529969389365 1.6243666745092887382877664270094199 0.0883963853975198132312436834839447 1.0925500164994691570900946789597457 GT 1 -19.6285331019524343165644539951889281 0.7527861158370023515590500443161615 0.0465624762657425056578974257179615 1.0476813791777942780657500714406784 GT 1 -11434063864093374304267400726800624083940.1379387313267613016847899509669637 4.1857337867949489263494567674128252 0.0501782316594986094865597937606680 1.0514809242620910087961622466495880 LT 1 -19900718595132162213474948592942239648466336.2895895601382460900524651614276926 0.2723443410387221085981892194670560 0.0936374731469491976458081981034024 1.0983159129594190907291878690955261 GT 1 -583043589651055.4931305006085111034636138349200456 1.4083467008218795972455726013157998 0.0931583795328834695296633955927121 1.0977874632248174152034263071135509 GT 1 -2.2423244952643261287817002712946326 0.2213314764422982352665962152237936 0.0515980597774425629726574172063252 1.0529768790079123640494052576425522 GT 1 -89943948086.2337194842070123802355304885597885 3.4575016363556288031955942966857346 0.0446986464147242328710252184190582 1.0457284347855035767041072368276119 LT 1 -4657976341767862.7775577604111642420516157134440902 4.1106515650417044820072356038079613 0.0351501263159026164275807121196743 1.0357827610574390530732282602527193 LT 1 -4458161067.3154490878480458004452961892579712 1.1630977053862229815744946568690845 0.0238220707756862062182265265641269 1.0241104046513882154910092507033841 GT 1 -25032.7585016969554045866387664919655429 2.9028561055888130776223328176813670 0.0658760078680397211821572366708159 1.0681460956757036765921795395748011 LT 1 -98539963946531401755649175569335840411.2334555719572166313228934898834791 1.5852247032738889843384379057231010 0.0761006846659199328772719612392686 1.0791521793663463761826490352770457 GT 1 -521815947843199.5053367197172006839006319855644090 0.3996360366795074340405460434871292 0.0474497396912262568750523419759037 1.0486124066450244787308297882767766 GT 1 -1808894583395710645.1533823628524924108974557770031085 0.3864024461717190026019824020308901 0.0944709048560274466453600244960859 1.0992358705967737607114378988496804 GT 1 -18305.9187188102360996082077434316840452 1.9789269511132656735774084709013462 0.0846149266341542939828649886610159 1.0884104570285484296636766799417091 GT 1 -300476075324328091070555.2538734476443880116567771951272364 1.0366006446168939656428382916789335 0.0012832150560078098154882886617641 1.0012840390814578018755468732120957 GT 1 -4257589772200051005578533993205667709694943.3327785629458309000211625745729852 0.8753951005936254782722569663469598 0.0596784175710528818191218390248864 1.0615333532570518696877148276837275 GT 1 -16048683908330082967435922499615486.2450486349362032729566676195465769 0.2340449099679006656962173826179256 0.0966716442557939096258824834506821 1.1016691640379479426802576128174056 GT 1 -944806630994237.7789945793054165647396708737745781 0.0092527138701806208437857054198777 0.0834593475503439668822619350753815 1.0871488564944245169870098113594327 GT 1 -32244.8920735295171475737183833730820463 0.4177971039756138971136709150313950 0.0975415660832403502878268188901123 1.1026326464376672897916386733720944 GT 1 -515571580452099176216445283.1281727402727986136605663983374543 0.5943090156948451118717089486990577 0.0669781477083898453850755106451937 1.0693266568746570524421505044641284 GT 1 -21979400500260332136240531824745017518392.3543137072916415878898821602806943 2.0829856885638865179468740895802051 0.0893055007788940738195911315246289 1.0935477845922962400008026622133783 GT 1 -407568710574775415.8374847919947610040537316829836449 0.7792568821038693613631785784044384 0.0128789254722283915603988208758025 1.0129625778441778172632060324772892 GT 1 -33705676579129.2431286327286281990391426221807641 0.4523657609674560135662173120119068 0.0445057665827035953659352204848516 1.0455265504667541189567810477496392 GT 1 -8169142608200821283.4781115986064117306807208749357425 1.4792818623091814318718539428841345 0.0038869763537448552419818740985528 1.0038945502791486138307877139450947 GT 1 -1238325524443758.5703259643490950771600196910753453 0.5513178084210982429685111715913055 0.0180779301017350957760660002885321 1.0182433323324663392488235873267513 GT 1 -144115633773203779153558140023644292092.9417224294453014883482225545451954 0.5694790391390001926953152772268097 0.0737143667021330071070987533274945 1.0765726326147886069552080972300416 GT 1 -983438681768999673390102440139655.9811999454474725793979685532693736 2.5825424544046217236944128624991852 0.0501903165083597219598537293086745 1.0514936476236142347897684425482752 GT 1 -569696361946489445113479673534854906.2925280780551503570995744722746850 0.0419123714435890132215940746777867 0.0844957631453268719553801115995550 1.0882802869649290939476931321038046 GT 1 -1.8621129583834858981838818337837886 2.4310494603635878541668375802068231 0.0706389099903808902577985441106612 1.0732579289171218116503986517955260 GT 1 -1777549471825715053608933746.1412350324927381664847779278646587 0.7292122257570206061369258548140613 0.0886586431245754059481490223612326 1.0928377462257837137448856114971087 GT 1 -26351583281868946214632.4112801562312951096617175462643120 0.7220044899165772900478923281199013 0.0473736473053377417570387444054355 1.0485325270313344712493751595855717 GT 1 -169300334830479.1477375789609095580536690243500012 0.7448426369105615757041986635221781 0.0806082100847398108015808304444530 1.0840429254788340538272262687499535 GT 1 -63922948404760876467029900251596977.1435538643612721530474799637358605 1.1016541625383868660708313612846920 0.0552003035625017804697081940981004 1.0567823353971963439296610619625251 GT 1 -17237481284380155140909880962354814.5881218669546437823068935356247373 0.3599886565786274673554720191045633 0.0407697461679541610861831647113579 1.0416241350739384147096295483955921 GT 1 -180687030812228474.4937853495949713727553225010507871 0.0969375280634843253571345975626589 0.0745770500216081400860814503691846 1.0775044027536552673253442627191489 GT 1 -973191955125164.9044024404638265723031822975815667 1.1180566372882195937104569669374362 0.0338858772368469981126740104923661 1.0344733122411713973577622648519390 GT 1 -1072127112549089425411189427715117122038.0544108443440121274629761037188553 0.2459706576633141236485746294341838 0.0156276690395338278098065509196518 1.0157510683770557484072625374575071 GT 1 -60322106919148893879378.0832244939530824609088729017102694 1.3097704894860443163024985283928113 0.0318094366140629619167104967832937 1.0323263480785369725367475072231129 GT 1 -118138515922543022.8340333325776855572147108027880319 0.2534968988096070519634796833124457 0.0980611922046059034800002278869952 1.1032086018023927285692025350750357 GT 1 -34032933.5029853569801354035440698024764118 0.4830033539931919254720430792500881 0.0917704259950234874222614942382384 1.0962580975309342757063890093758492 GT 1 -3398335554336685020871797422333.4429623375994899443541590088698699 0.0838753418195481172733191775670815 0.0776011755010077686065066222178387 1.0807775844220804910261766978191785 GT 1 -228971967064386540084.4240869960594092872060878741101696 0.2110187113964660370506090880060218 0.0154608066705555175882576577189836 1.0155815713048721973960514405551071 GT 1 -8096212404672740783985853909278562828.5229228384623236272583493982629457 0.8187739879351211784172482520440252 0.0227144524381545357095443149697065 1.0229763998753679061085152309074911 GT 1 -701313116308561989.0902660370512844307350171612647433 1.3743831819553856897735092537427772 0.0143395427106727130205918370909536 1.0144433474902598717821408382059494 GT 1 -1205035063525636422076241419916989979.1615964643426098962385273086452268 0.0636783316569030933024064869136727 0.0760820565991203097569362104716272 1.0791320171271290553175312222598924 GT 1 -498607175302370008895211779355028.3741518299885587888597002643837383 0.0616626719032893990903628840957581 0.0966569723888803574324589269869383 1.1016529221612579755930528364685532 GT 1 -2706015892124.8025836116529262505414516084992982 0.3577938119488210098526648408973976 0.0274679585801140812004207282975227 1.0278522565568307430318038984853504 GT 1 -25795099440424853474226660809.2166100310212077396880236660959233 1.1581515079418821136959722377131253 0.0272065972600227820701545288322427 1.0275835495161157390965080273636787 GT 1 -31288280585382433402215497676.1919137256385711678589997138788741 0.8633639289619880299875307460368921 0.0212891809916238921708991507904315 1.0215190641429070588245764641853933 GT 1 -1703.2669941554073711038385663767544464 0.2675897181454508337095724713602115 0.0620553733538145746079698655128549 1.0640643651446952146500914896261060 GT 1 -152530489222202173825178752243244.5497160390974507410892256793859867 1.5997173058498606785978130023844172 0.0790407358447485972362271375620403 1.0823394737210198863927383455345070 GT 1 -2242940278094985368035814261990.1306342229478473067124163185352225 0.3585100640452955670689326232821116 0.0812675545984935942328890301799680 1.0847603356836119706335290308566746 GT 1 -2598497564212300060731772684315328.8123817625315234986154808765444837 1.1325449855719472338711965766309401 0.0706004042430091200749849726837936 1.0732164972818692106257058657137534 GT 1 -3745233617987139531682345589023664089297.9259443715863498602437807087066645 1.5828769010609457454917468048963549 0.0429907270643546472642491407379082 1.0439421979882003648523128352734680 GT 1 -2012513153822811556627465833.9869326716032140399042082956312878 0.9783193594541494234946684679878496 0.0920867089415134065709253183528145 1.0966063993697065618675551388313159 GT 1 -2808736399.4443842395517373456747170753039086 0.5932235375316424656833679457426513 0.0914596976500435400555225359963208 1.0959160307099748392800496193836310 GT 1 -217761695185800688410041.2780076905833681404308246140457565 0.9678107672140856680734253960301757 0.0839499528849265700350042519763138 1.0876842792120227113315034179941897 GT 1 -39757156697.6064068553003631797778158363649523 0.2855620199230921541281360608239731 0.0975096235400117308256873276037474 1.1025972520341824765205512602761358 GT 1 -6.7942818634117369686690796476685557 0.5983425833505598635216459327137800 0.0787660165171749169359420445072592 1.0820412212657333786429619323964663 GT 1 -38938891691193055.2688123746357942421058959806667091 0.2489142546817913800266913124463993 0.0091239184783128872168466241923603 1.0091657963439573897021174219429396 GT 1 -3894191284848123661757.0049205608166857390153363356196265 0.3087402269498821864410163667305297 0.0533763901273066288698905258926822 1.0548537200582016285389608904109729 GT 1 -109884564.4590289127908890681431449072931255 2.0691864149692265878487227119712188 0.0737746479280492279681777192997788 1.0766377131745408219136921813549488 GT 1 -327.2424725237321410787017103142055662 0.0286294703435798810273460868678972 0.0231074504019835510726232646657337 1.0233786129282092009574648342761552 GT 1 -27597526387422662454690494959689.5928308042005858036405404944110701 0.1402918325482539504892713366076285 0.0435324700303282846885266266443244 1.0445084373903461057809746884739419 GT 1 -3298227262023142398306.2735950790763059611459125181247424 3.2701358808877927133105152039660328 0.0256819848237724667711718876993807 1.0260175243428194632049597374582313 GT 1 -221.0942712581475486760305912968182495 1.4107410624045353453953956069135733 0.0736552537793646546703611911955545 1.0765088174863723530178216082265129 GT 1 -2624235286.5311140710083768848990197671934481 1.9502435400873077599904881056296878 0.0382208127542838640152825250889618 1.0389703897512537658351181540678505 GT 1 -170875487894904769062261333370208316589.6816977911198794643821718275527709 0.5401376305510691700833912849762603 0.0572772160516698226286586566962264 1.0589830120502731793252476488284941 GT 1 -15569667734.1014349222947384987004738246404513 0.3638802531489122507179798389297931 0.0713912117918491444485177030512259 1.0740677395081339273549207090800241 GT 1 -282947058176.4912989342668650995411335069353185 0.4320374875379234312691368100518728 0.0793445365570951375720038888641768 1.0826694023543541321133998541380628 GT 1 -428008860877457460021376911876365898907.2182308136500441918774250987304929 1.0185720093780796108126952165981332 0.0372592076421788273687842334209537 1.0379710702302084508963055177968706 GT 1 -2835557.7170624898605244858322357536520168 0.4794044283777492636049823793784416 0.0188806550427326265762160385150284 1.0190611703868907742160405051192331 GT 1 -152581504487342768165.7419542106810552374874361878914421 1.8971103332670758572394328537621973 0.0305426675432307129240006835316312 1.0310188151113482564067273886408550 GT 1 -905682978138138002551275708.1253506391345367521656809097842651 0.6289293329074506915750018242025763 0.0266591177772490737125901526616892 1.0270209167096889154772088087940563 GT 1 -298350743225.9825508390164555654880852841742632 0.5284297704544042755716057854820276 0.0791824737061313424111694685679069 1.0824933879872844662991523154859539 GT 1 -242790630532.2611083498707648710640648074982797 1.2613335170912252033703207296325211 0.0621665664030369668430894803292914 1.0641829218670595012916699350938710 GT 1 -2456948048110131782548.3637449139779073414270858194853779 1.4673296642935556134424195016419046 0.0151843160565987794887760395672515 1.0153007782198226667989346836706628 GT 1 -2968614513996061299575857760705.7291061389495414866276576510576655 1.5301712048710987883819483361270408 0.0548679407203076553439869990552519 1.0564306159823391778447824649572056 GT 1 -521373636877104658135206411.1783699503635425845356979140120371 0.8823789728264981830882668674045859 0.0992771758266508215099329970545485 1.1045577000301591584168305999887842 GT 1 -1297572673243236801544607627779842341291074.5801655526975045833615081488549381 0.6937226957277048264309769479519742 0.0558659670893270780390876713802362 1.0574871388998693436715868593015769 GT 1 -37612970639255443361123916377454.3081984543976938949028871601108789 1.8311613193143464959099418216494070 0.0342976079162078121840464005572786 1.0348995749658460753391802016231231 GT 1 -293580964.7003307867472716495522819436574935 1.3033469734918210151851569190962213 0.0169816409762733089805301564654020 1.0171274824847289475449580130242819 GT 1 -22620265.2516872054460420567768684494294370 0.2991257974185873864113574567238637 0.0449436909716590410823341564065164 1.0459849779062755372799872503706136 GT 1 -77786250178620172397.1938648512667706586288978586533677 0.3583695537752429389828593962917563 0.0294825731728144976127119438022943 1.0299259199890179377342602372376758 GT 1 -13095302563.2727882827881221816545288111765328 0.8469253820139189954451455080907676 0.0964595393351394585448767931909891 1.1014343878110271079988878550321462 GT 1 -53.5632621295060106905488506967420901 2.2200731520931540882389192888722215 0.0883015741814361888170079054133062 1.0924460170368818329781604793031676 GT 1 -13328642024035059812708171516458882084.4855751627797380642084069502344847 0.6479661107547711990358104251172721 0.0482139777542354344033001956354682 1.0494150360031247554639493753980117 GT 1 -59336832455238734921343565827892834447.9815426641397131726507459452861517 1.4846411357069889923561156228763837 0.0797928785725962214408576649259954 1.0831565022911453144188715524271977 GT 1 -75.4470320757693042021711215964281580 4.2425218309136220051645462986743461 0.0773897336064542205251784367913858 1.0805483802446886836911866134852848 LT 1 -67.0139162450027621683329466343690355 1.2669026767808111053140005735543884 0.0624373479130096349098836529475409 1.0644716944777324214535095789851774 GT 1 -124832639071645449342935110961582475819961.7695569188024135155213268729125704 1.1632478541328633634251687824841509 0.0361807834009498013826143398622555 1.0368515366067005609654114904859512 GT 1 -254.2355022250802857058257913760425164 0.6766978397813705838763440612476395 0.0572009793242551923547328724453964 1.0589021466608948009188303053537900 GT 1 -2276874762677.3549936725769993866655467042310746 1.2315639407013653828361290444507231 0.0240261896158227247033410634110069 1.0243195265518418468264677025487397 GT 1 -2883843199.0899019400260170221972691067108691 0.0063971771538442842199908847072420 0.0383038936940471637046727980886979 1.0390567760335143074104624930187924 GT 1 -23300435795973207561512.8908488728449036278530023395326499 0.0326763648301578469995708858149110 0.0074852378671094204299159709744987 1.0075133928458716675390004841661219 GT 1 -5205803484362381846231525.8370524209788324767881371185276173 0.7492295255809714989773467002703055 0.0002577302258335687946223701862979 1.0002577634439758917216989971974481 GT 1 -1129413025077470468231709240488860138825174.3571092146445622198964929954309025 1.9255252621647538761338620564349438 0.0347017179174415511106673135240993 1.0353181248012133434803212612909550 GT 1 -10574.0556846677226667655814239476286355 0.4045033784560708917357602598794411 0.0707789847596080537124172642099192 1.0734086618539091634428428852083915 GT 1 -279476369604830418435141184523864133918.5966563146797167379277143262667740 0.2029195782059785742420657745589196 0.0725964305351190018642680552979601 1.0753664581375523475832561103764570 GT 1 -471365067671129920101218027.2874869371955384805212397903133585 2.2763897137773850979660555093214220 0.0407762298538390153768550364171388 1.0416308943559476171665766192652576 GT 1 -3698426939787933.9821476391809315973410655189621796 1.9929864653308499242999181621811733 0.0752691037689869748166373363576672 1.0782525067895146930298915969049312 GT 1 -209015009980477325980326.7690929915791218400339286796415964 0.0333621188199299028432117460167114 0.0332321424049225613497169549175266 1.0337968768835087976330979935528598 GT 1 -1037085872813106638979876013435575884681.0157751764747348948357583019568895 0.5489066669059688523276950890921675 0.0738942506748920028349213428324752 1.0767668507211908581723666335633160 GT 1 -31062339463010507.9144090676255605660187232258889194 0.0550224539046618326253787664913386 0.0555746620696600700503343511280728 1.0571786444712853518135084323124368 GT 1 -12716414376058741.3359997338973734504089402621508162 1.6527731424788634430696576193050203 0.0008185627314509069145580688711310 1.0008188979368604875858879173101172 GT 1 -371549698.6491377511596582720496962409255912 0.2194239055992692029969325259986952 0.0752914139711938773441886374442505 1.0782766332369296947117355739961369 GT 1 -21322223938389686.9635170963315814935260897520523813 0.4648779920165962577162909617078019 0.0730155110917993972909189406738286 1.0758184461256357869690416290637739 GT 1 -13522365641609.7058147001724746568335828000121804 0.2959121777345824442632985773652993 0.0258928034191659876438583348204085 1.0262339233043439870296835469463123 GT 1 -70591748423.2835505255485067850278961172146929 0.6047029627874157243205408090541553 0.0139632952290377552309962541682943 1.0140616991383307348863370729529877 GT 1 -50118.9677189008730746251342897865617209 1.0227795197020853801714618757147454 0.0088625350852277051086395086554672 1.0089020409371687361418777265198935 GT 1 -179060109812415091617138467942171789092891.7545328249239789508169482971105004 2.2385715667779041316131687653172404 0.0922815301912628187330607594954730 1.0968210037346401929275500250093032 GT 1 -11.6469206574839209872538697914997235 1.0489881841033142554615646561363180 0.0237918488036786007947702944294826 1.0240794456394252659510221188569748 GT 1 -5264412466279186063245489749576827852684.4612233374369379051592980513337728 0.9149897058600034599606473423629257 0.0346585853772603789238211011451095 1.0352734426782237919101320923519458 GT 1 -79441682936794702561580621777146.1744493364476318904689959969028517 0.1032931641175831169461030219625146 0.0758471613947797312402037903811495 1.0788778112732271608508646064658418 GT 1 -10682537726388363609622033967250164477.4392984902027492555005550382784608 0.8375561071793585404351925697435761 0.0806515335161410060295929990764651 1.0840900484275577133505355188451383 GT 1 -27.4251484978425424265641227808536372 0.7273669277294313916980090691965435 0.0500750095489485626038717429736111 1.0513722549247975615033521831106745 GT 1 -55855740416354853749598555342.5508142019947150739304640437148039 2.1358728780959313225518107358996507 0.0766952070121069922640777579154659 1.0797958790680057220486369683922894 GT 1 -2318242418878675606559352344368064899874.8241537195882486532143167612169497 0.5412753439733903009649393275347583 0.0632573475783116062148282922297224 1.0653466850309213840851535403163603 GT 1 -20924566048823028.3606539668513505186091926984362771 0.5096128772316592106012483155422794 0.0610342289387591997512307814997431 1.0629762529822237800050555603875544 GT 1 -6083702149653397636572765470215.0954107004975278219053808713588200 0.0185883866736685893753801955198290 0.0393406136486436177813900894115079 1.0401353695185000165076404933406548 GT 1 -5004436142441541666478811138.3385481844165622051137842212430747 0.5819148041509160225607910772102772 0.0771680145268806871942170739708278 1.0803080919556175146157609710509409 GT 1 -44023383283478165388771147121476.9160959811967395309211689174448415 0.0258382874000409545884544335292318 0.0037360489828422710701340281796141 1.0037430454453640567921038071502316 GT 1 -191686809733879620587439966.0018155055929913182003514402468579 1.2052758703896748592079714808442512 0.0467173990552776649187263499300991 1.0478438810446082774281177579022713 GT 1 -635949440.7930709344296711737649477877990224 0.8542278767978957034190602608069224 0.0822361744004827133284664186311971 1.0858151920501628186306276221124973 GT 1 -98506253597557955112251629413597499.3658242705224311314107356306558834 0.4447865596803255169260625702327548 0.0441059701765477002529739518550003 1.0451082195397781082149555114072348 GT 1 -90087167622636011193.2025899380590745600227164968717600 1.1116887206944951216764563386382230 0.0511843831212436760516185490134081 1.0525407912633030896254011138977990 GT 1 -30283087131120495027695503974906.7360234007030671009944491217565677 2.2924968704024947026581099980097106 0.0543242846973223725923055728613939 1.0558555643612542077137983304112909 GT 1 -4891839013797914732840620906545946556392310.1507442673785332947132583553098748 0.3794415447448789519962951080637259 0.0966731316243799324771982189600917 1.1016708105818664125806712803829794 GT 1 -246104091270810707597231141194685821618.7720274649418332358007465674912546 0.2905295313181199155550355882576756 0.0327866929430119698360398238421146 1.0333362214459798709499168465877184 GT 1 -873919918691814448619.0019071925309173456175482222315358 0.1201623112712523827857793927920732 0.0112073662872711283855029417824653 1.0112706420306420262416024992960621 GT 1 -422815587431638216809270532188251356233.7803638545191736257910021175237609 0.1982895611730113092823138126489042 0.0017708147626000917686926114116184 1.0017723845084883323567672320704024 GT 1 -4356901454.5517430234552668762280873578557477 0.1014157549193619365436402775980212 0.0277476900924321343856089587362642 1.0281399301120567916107273113417866 GT 1 -55922954273412077120964308546.5215418083791155186988149978440133 0.4572208782140369259050831710412844 0.0789503613740647619060151819196571 1.0822413477340934412702487252841467 GT 1 -12557311599510302169.0733895757088631430374393332876855 0.5231242739054772129908496843706581 0.0312124177119112957868659320662554 1.0317099044471095751015170582721920 GT 1 -173911086993935.5615071861988840451853954984023208 1.0246294412848147565219368085797296 0.0419873903016619187276673447028477 1.0428943385735405172253878581974621 GT 1 -23459029217047155937761573118014.5955707338200160390893405506105638 0.0129761859728994280442356684345272 0.0836471053041177330737834741301401 1.0873537322819168325628050528830857 GT 1 -1841987832234.4212514488846026166756285329215122 0.3263044678502312969580752032890413 0.0880911479370676186148304346554696 1.0922152368158827614905132968130933 GT 1 -2633433510194103106113735903575530135046.0734839991017550694697456779451463 1.1450292406609076620201598904140219 0.0092429097317687743322435585774312 1.0092858904716625909367916592157526 GT 1 -119154.3623026732314343208074942305918929 3.7510889236818299593861445843219069 0.0197587812842762708194396511879553 1.0199565960587231119222296330815514 GT 1 -10738.0680678498738241553699607452207835 1.7111512360350740903336510792130329 0.0895025862877001227700728955239019 1.0937642203321826149709042591868760 GT 1 -118639154963.6927304542647270983460364561597662 0.2895238201574533825877669750784500 0.0759517517368461539678986806199223 1.0789909919686841596139500336464467 GT 1 -1791264525098099.3834620085132717593962512920292137 0.1356501621171382461860263024996723 0.0719783460444578494339347242823088 1.0747002124643531373982043281760351 GT 1 -7172734221032012658.6325955788373350070352176718983681 3.6160435087179646498030008929872205 0.0177241459625968093199125730257218 1.0178830996505630636763602093066371 GT 1 -478362155604.5375854707369554712189989517821855 1.1678277700908329087352092452555518 0.0539191784838767448561311647298482 1.0554272785731483009913787998451845 GT 1 -37264819825498174285618129869342.6987334360842703178782695320685972 0.2792146020592649509412755845182664 0.0177381836571362730843205018774630 1.0178973907428147948082878955777907 GT 1 -102907898130.6941343251007882248408146432298886 1.5384242253138046660262232513123855 0.0055331477892726662472058059608254 1.0055485123539837203683440106848520 GT 1 -2007585310627706127439282164823884012.4523722954445522476220674884643159 0.2528663167285304412865865637226730 0.0380109596403017130374869333786839 1.0387522209388124263274799274837930 GT 1 -43940465706352649405383971.1948771246067885650419585558928769 0.0666369159264328014837389227585203 0.0431689329229522197148401773302471 1.0441284265417393935274416751582845 GT 1 -2672103449639945741939280837766703693926761.1424024499134482623127658351582613 1.0048716582931316545850855062374528 0.0575107886441794904742810197773154 1.0592308065628124853148495191944602 GT 1 -54.4835428591492031924690612024666407 0.3278542236387406731459986113487135 0.0731645202376995755385837797651058 1.0759792051515814963655426743607002 GT 1 -1509465622406867686568193284652439293.6738656920022427072988016712276028 2.7035560489895642525056304320106916 0.0279165624148512568006635892731215 1.0283136370688532396078779123676040 GT 1 -929.9163447421489136820353645896665169 0.9284383340485080783131911043032020 0.0886693715075649886006259594449722 1.0928495183746682441685179677107398 GT 1 -6759.5311980642178241345668695842402432 0.9824795434974530790657404841716071 0.0192696979329309500358132336236698 1.0194577786548975021666865005601121 GT 1 -14005671.7191605723355985858033533923140314 0.7085862689289730805926492186118153 0.0125879253460025137475594443633068 1.0126678244960729291519052445993022 GT 1 -985617.7872147068031779828220140653012024 1.6830288314109640844038335365151613 0.0676496273792843882894832675323140 1.0700465986545657069362023297448424 GT 1 -109030.8459199342990244477891954016119195 5.9498796106564364464302351559289368 0.0124511355480908203355213739644825 1.0125293004418277272899390967706866 LT 1 -489382683608.9044871295885333844704659610916260 1.6864076291814506088014890762798304 0.0523570777304799356265993040714021 1.0537775119555787934156023355714787 GT 1 -4394141605120275013.6768509072314243523280256225996147 2.2563978642199521992675638503232323 0.0839386843000856746687297874443705 1.0876719780112663079675233665966262 GT 1 -11272692875433.3538956606101377338036981307062197 1.4329035394081490717897299671842943 0.0221735033727196967664586973108457 1.0224230309972551597041182596583594 GT 1 -5007090791898389061787790063623295886067624.0989015884486206340826150621266738 0.3028710567618018487024697988755496 0.0602074767024979113390636963206995 1.0620961479765830351483878417692698 GT 1 -120517104438.9855922463429291954928604894596598 1.7780182949351912238375598846850504 0.0953948309556407327424548984529595 1.1002567077778913900419408404978644 GT 1 -664658348670694861.7985717652915485673635433259130548 0.0415595401061040341225557278780074 0.0904723767149741098953557397679335 1.0948299095390256153671301233490864 GT 1 -13117814584719591502.7411197206205747257423779836982056 0.4454325554480389317250953427021916 0.0015163354983448377306089759827655 1.0015174862984964749189313732988597 GT 1 -219629666.4407914958901346576986153755352747 0.9568195306557685995736084069777412 0.0379607867766954469532972926528641 1.0387000669607986369449839762302181 GT 1 -151706053042654293957965068834069824176932.8556652577926721655951319915737162 0.0350592434685318478746941330311700 0.0532516419509480793490643648915232 1.0547219465042961142008514904064346 GT 1 -117556631996379782440865052.5074291308028330616579825796039443 0.2265078569844073562575509938193998 0.0174846783770872130997795305152900 1.0176393408331764289335948602780840 GT 1 -9198998504153367.2215068225988141120477749116199309 0.7561937782286588003681993401268551 0.0446686037314929593938671352963940 1.0456969868965923785367335985173222 GT 1 -130199038314029207449354.4456981378183151451277545851490618 0.9884930555121402405185481114897772 0.0329789138565690610157820169064178 1.0335349780339772885257832150923667 GT 1 -82344004730977241791666247456227087112.1787269462616787067265178921052868 0.3154476794138448908041809526444097 0.0770979988560656767417224776047363 1.0802322243914330115947881094476794 GT 1 -1085986.8380702502393072138682763761116789 0.1229106140759507746807735011536047 0.0289460921033489808349599247488224 1.0293732943156531731728480168421578 GT 1 -300470215536097154250.1531238898856636042500813975674065 5.2441436160221100387047104447213273 0.0440657963309779173349772258635604 1.0450661929132518250401983465813680 LT 1 -24575033327778876517254712.7235892329756213734557416071135344 6.2411232748300194765789519833440156 0.0727161641131721494327315340019928 1.0754955727019517082305135226272691 LT 1 -45848327694.8810104170344510241576954227495002 0.0300163125991858680916087794729020 0.0025331554959210810487020051001789 1.0025363693629348700765764652065975 GT 1 -635598422594320487738332212.1582904593198830734570815870688579 2.4334560128779032195906669230085227 0.0732261179387689871529639364229870 1.0760456675922237769383222037743236 GT 1 -11.8421165588432394422406973725117636 1.1947568046176906647280391205388699 0.0215041459956977616743940893473096 1.0217387292481842314374217705991602 GT 1 -72101038555743144705384329440618373339.9700981448926553569221606348885860 0.1445308896292860423191801368588831 0.0359346589188131601189090773453573 1.0365962054640828222138123209817768 GT 1 -381592416509047.1031831637214113387966544090049569 0.1507253328884287709110988473011000 0.0576348130960312750629806812229974 1.0593624076585207672209832350354794 GT 1 -475141011500.3172323034099134611308728450778955 0.1117925599975051669913001114610094 0.0651644038921897082356248710754285 1.0673845981936664112519577627968693 GT 1 -43798391815141.4022358845649463760789870116578555 2.0893761050313027108595921599559713 0.0319663157493828310273695758927336 1.0324883945314255308465992937856463 GT 1 -119667367476907352215534123977663.6613266908356845088658625928268219 0.0040499031690607583245168626177867 0.0929825470277655062395320796933230 1.0975935865248648363578834823395633 GT 1 -928358377723278928660694577407023.4574339044766463838805533019427979 0.3903252002675794044006625952811590 0.0193892748153300409901710069323006 1.0195797124551757721692708930111379 GT 1 -13529704863072353320705161267724635378483.9311556751110938911450279224138920 1.1183855598737887264975070800719653 0.0888049390840291438661399417124870 1.0929982872809196502482896103581249 GT 1 -707195926847511696599859787810101.4636590786666578783063594241051413 0.7235945553109694505666726326079058 0.0869789375524184385752048089684743 1.0909963291597476657045403213390597 GT 1 -1998281886887871237739633107.0295443265410937265887915842311048 0.8725156441826127263899065762126229 0.0309033172470710567914790945691037 1.0313908962658289157426376383109514 GT 1 -1718943448.4284669644583699533565248735800303 0.8702430825140979492900627278806186 0.0456803665813851375869521232980610 1.0467566181368894813007354940010602 GT 1 -7849.7980277210586824986449988043262544 0.8231989323379606481435486412092483 0.0610061587554347295583853249378808 1.0629463586403618744915287991162782 GT 1 -594202861450751348585536531618058719508.9687488541988039429361687002552020 3.3495397070187052253365502178185863 0.0496435387068436634914312609009752 1.0509181423520272190030456624411451 LT 1 -25926821826949879117276723333677168772.6773061441484208621639371110129246 2.3899964730712038105771312325609594 0.0099480242635796935866135316214235 1.0099978364877583641591278768700109 GT 1 -77280717274971931799.3362990934578217625014396295998606 1.4658102210254932589265599218317727 0.0435781773080513506913061390427795 1.0445562261217415385462507926505902 GT 1 -1377575388128011126590416426366.3529421283091436053105154471862668 2.6429633893270669188578258358032657 0.0484886301290917777206164886976813 1.0497036428996616195062123895653630 GT 1 -191020.1714097307950250827229787010520316 0.8051574797757950048299106657890005 0.0581515469907131565693708397333800 1.0599108952574749187339823821329933 GT 1 -56866644011522364767909885491517047159.5547718946905337018581748419886794 0.1645730357381682717572232545933526 0.0729434515600674497662070599989476 1.0757407137234756929845600726285145 GT 1 -499033914525654103043194906495870264533003.9753271450361456948152007215010636 1.0155908061328235618251218456912225 0.0860083486189216168148389325679096 1.0899338417260730875886558238865233 GT 1 -209263653100210414002.3976944543587244845858442437176455 0.5535053336802274695740897408609411 0.0095207796017041743373233693454634 1.0095663919648578619100215719985690 GT 1 -362490850130802974.2099291678048087982205489834586258 3.4551882319689811290959667830323170 0.0390929961275708622720983170047183 1.0398776448583444834559889673310271 LT 1 -12264398035888180731805203259538.8108859233586968140857108101428618 1.5833682295870584236748606477146928 0.0636033369367772600290893235969807 1.0657161069522277798960458962339457 GT 1 -761262298679107104968247754.5573303695281936219378126872380747 0.4319139778494303583873474840372841 0.0205563909668431772906994798039392 1.0207706144307755224379619815436841 GT 1 -821.5663851588697338615986855605940613 0.7420887741838056919344201188740080 0.0835456077211499762131199061432064 1.0872429758660155770293175992609063 GT 1 -103563983167310527441.1584079784877130062093301902804092 0.5795095842193452767683201253743221 0.0407259234211432804306300444496862 1.0415784507915275259489058785162330 GT 1 -66136385581.5280378689529790709055335679350835 0.2816039829268474361929558217975884 0.0338845118207015231353589864052901 1.0344718989348668643076925345841054 GT 1 -464231124648372745170105888077360213.1252963364870909916385716456953268 0.0984456100640205789770214006631625 0.0819155236158793960530717415793134 1.0854658703905055498764251938998098 GT 1 -2645255.2223102456334753216471587635109478 0.6805833998571340019850895034533178 0.0998864636111169886056557180175534 1.1052343720710597440410766731098167 GT 1 -12468225362764365748612.1057545772542595336246547773304065 1.4596699423216329650911770062601946 0.0234915061416306990051097447393444 1.0237718304355738440004782980074894 GT 1 -11724021761685541320845294693066.9509879010662706655613056848505399 0.8160484222670385896466414161733676 0.0769460998613547867580281113429300 1.0800676495010489052955412140743249 GT 1 -12510729402874602464246505923106928903901520.2634824075515050704313356305360906 2.0408525924703307963477333344067211 0.0280889573411674604216483316615160 1.0284909986082198408621186444085623 GT 1 -51041764092255058365886320.3055941999626734293703028902478255 0.6033484289898250364264409742581485 0.0034467360278073539319461970716743 1.0034526897068734673703827838498896 GT 1 -884370732584688054157362462798.1489110019984105128533321441925200 0.7027470363008503924607380714959297 0.0880233301072958657786076455690616 1.0921408704930114764743395713446202 GT 1 -35411215196.4760507335378634570629672242787228 0.7690537945189699438079158033794505 0.0273846835837103441344570510352307 1.0277666332274524993852788003486365 GT 1 -3155371769761532950398711.7922243139975472991431276751633029 0.9236073087641431541461470388150060 0.0793429955508202246531193037326011 1.0826677285414605742843797054852288 GT 1 -1161508529603374.5482551853262008336582292059000376 2.9335176966397846257635837924840602 0.0360817657556831220742551972475932 1.0367488072175812693471090848455607 GT 1 -24433996151382794917662280408951353171975808.1578051535106084402326087393330495 0.4520629473300786262383232693568058 0.0781147851708021345297490556309932 1.0813345590226514015295751952157467 GT 1 -1.3609287068782223796737895416296283 0.1073562555176880492717932734359635 0.0674784780732984930068611529523082 1.0698630479163441462770353494356039 GT 1 -11121997689.7112453963227842621246136936727688 0.5186772938408899493661092153115370 0.0498169482987626607304809729708353 1.0511006269478112893561331489119208 GT 1 -2489540232117454918924919.4219706575476727113121518286364474 0.7129170161058955447937278150031632 0.0966410343443111253798452074313409 1.1016352789144701343546949227578593 GT 1 -89152.7589290747655389633180894381954627 0.0162042108624467155071631460416719 0.0583190482467093738654764239744854 1.0600887541812742947726343400248557 GT 1 -25129459573376590281838833611623338.3017351247324327476643759591007581 1.0893062988527218382974255791223958 0.0472758453052895178651286429766442 1.0484298666549314715377668711372844 GT 1 -2063735633.8629979003913830761364970903615145 0.7658987023926163260221191677454926 0.0873185128889792304303368735249900 1.0913683233168010699293577347632574 GT 1 -1.5344030475280830146655322987563652 2.1464156492022638233568714591054185 0.0281096551290470621928338206619869 1.0285122948044394424027100124408113 GT 1 -679474887426347004.1683844428926818258832518343227558 2.8500699996860174861806903567230896 0.0344792050264309141785831951734752 1.0350876393097037471278007779202318 GT 1 -2667039025115574034.7757465272814523753508277913958117 3.4293901904159838779771412613028911 0.0830252346976473506079060113454144 1.0866753258585701768799615351012425 LT 1 -411694868336229695681460985349574.3133944176953646714530701264782637 1.3936363881762099584113391828294186 0.0778305868973070475752917474870168 1.0810263270739440220360153980756954 GT 1 -16282634918037274.9751660190219138274295399774995117 0.3457320422501001315674501743024222 0.0780468832019313709287493746825378 1.0812609061782162464325701262037682 GT 1 -8873864.4797103052111597852553334815274380 0.3097084494877558907576502106653402 0.0945766515658514514855577504763955 1.0993526563360339891316246566067187 GT 1 -46703078256135069839083519744433.0756709592310144507341993224724731 1.2983123705999108127883565056756650 0.0446056938773042715800361135793144 1.0456311377230216347361832847482824 GT 1 -3026507996178436185073212.3451459096779924302876816116672818 1.3356945077481999199972934294246585 0.0382861009011735466943465379045901 1.0390382747334023948956095469402455 GT 1 -132961264194635149895128332373315788173.6741158611497086627346402316250241 0.0829429326173062369475532611665116 0.0000068827430357369296611129283028 1.0000068827667219214616638072455223 GT 1 -71.1190669825670697690924866978277424 0.4291578602130239626849140167535423 0.0133303756115588425056673126142213 1.0134200226456460938383348521496031 GT 1 -714093379636245073486449484413541239742.7046278199820676836109602848505521 1.3382936484734407628964308901476111 0.0376847804856206226289828813584517 1.0384132109759842458253429339257982 GT 1 -6.4571602131539681188643911829011922 2.9754903317537212179720028211608661 0.0957655453165763146656551953262199 1.1006665996901018716674743110067860 LT 1 -17814.6980979604280023036989001707919254 1.2605469760279035246340314104967650 0.0151130097021809099329923046283205 1.0152283750542266319844644537120754 GT 1 -162896514221.4699198303034452723286011688719762 1.1102881287552734497236768100887610 0.0928526183109316204761519721998609 1.0974503484744147072757287000413453 GT 1 -515514021228334456008.8289748352379227995499922431117239 0.4242894196041036188777762708350582 0.0995144728728974397901750860987331 1.1048211865362573092155434197868329 GT 1 -1761983612067746109133410.6124690275903183817108654427553712 1.3238827782008429647462457429631995 0.0033660819156983717271947578553960 1.0033717599147504941510477832416834 GT 1 -22.1810136705126744089088802793562844 0.1227766118419901990433722140998696 0.0913243484407369604339574712823337 1.0957670674464004705560373182248311 GT 1 -6102555819541350805508778666657305758.7412758497436494997911658653791962 0.5867761946497172760667585768428104 0.0862320830793169095986975714578291 1.0901786599892548816817140493084226 GT 1 -36510436095914382654638714540366251.5890593868129999317895481684906893 0.6783143226094470847433282456513572 0.0400372284311787640166856964477670 1.0408607748880150835562745238019298 GT 1 -1.5421270179263625604020300996326162 1.7474547083319783822301428975855760 0.0520367146511725297067043271031691 1.0534395060120764424445631499008315 GT 1 -11336693247508507164612302342.9538795217807233464179084730569862 3.3100507288351609495238813270512935 0.0156300167596196690106553603420102 1.0157534533718505550624670575406944 GT 1 -5474131560748272708372189982320.6147498158658604879610119511336185 0.3404572770914212622598755161431400 0.0137929461174025919830384235625206 1.0138889526293747827127519150063694 GT 1 -593911375552241039425849954386.2762150566526107435363718255042361 2.0215747473328008721018832243545426 0.0340532526239856871479061602347121 1.0346465732291084301496906920520330 GT 1 -806968830819576995440681764842720.0446096407901460060357571479683605 0.1357899757921713948194601718969940 0.0136177133130576794243670045889151 1.0137112848287820189031883835070578 GT 1 -1442337851882655816840798876157926409055135.3143286716831092695745944114892614 0.4654278198561902669241587753778117 0.0224105552552151256030277225652201 1.0226654877335854964978947642014248 GT 1 -1.5028670358201573615992009773321722 0.7669331820781787378843417150924917 0.0734319717038888832106066672680780 1.0762678109159310996484677821571475 GT 1 -385.4008475349182394389780790269767462 0.3032048589197400404661908618104425 0.0012677900548563876521937995783158 1.0012685943805505980675875165861567 GT 1 -1627353270566.9087798007575249650234398137001530 0.3131800761896097257850425948936663 0.0894173169220709651592763879552731 1.0936705733082633855079079207503672 GT 1 -1596313658.9248658688564517549431081641324444 1.3028256833045076077915041045440214 0.0259230495962241054643583473225477 1.0262649739389642952201799216190823 GT 1 -2768726.0463093917729152019264991002902141 0.0418343486679860041880577899887355 0.0474330067055407859412762750002805 1.0485948402872013543236625287312180 GT 1 -9313918551811310.1569939080105959667988950991687199 0.4020267154069461703062730843877344 0.0369027515828530385693048695505969 1.0376008874257884720540492447318891 GT 1 -5.6258876703394993992491509045716198 0.1931370015703791464765748042366424 0.0964308875426529913605522479895685 1.1014026777333262131792425523943333 GT 1 -737600001151.6714568404092046775512202084406650 0.8254538685035429253299829107596518 0.0748293756903988510316682493142441 1.0777770997670461703790329583079318 GT 1 -24040937267272833700982746260.4446635910058797495334850906793809 0.0605801014266741800005962184187690 0.0250292176086384540758627086790071 1.0253477752113934624370945668277173 GT 1 -5313825.5643210043477692370917825489850484 1.0840383963034640726501553812765493 0.0292897936062972088304114986956431 1.0297273038516294901718226083866055 GT 1 -7199530322262436503.4412815120520555015490946533672482 0.3547153740961053119065984521957794 0.0196497721873675329473774859488817 1.0198453958418558080590177525384825 GT 1 -32902800159320882.1294037208648041027480705620742282 2.6570927286164332240336807074684852 0.0715417913054420432935234747655585 1.0769849483576015984962037598840714 LT 2 -26084251828557891065709159.8454552686852065496442721426622487 0.0480972332496402004352315101163547 0.0360283641870924856911065032147136 1.0366934082350629277178812547227428 GT 1 -58612065392959.6970021025888704825221532778815058 2.4309645283495109540917093098131431 0.0704097149804549453364068278680743 1.0730113436495715123022542696315640 GT 1 -1661817203895173449140669130301667853.8522261083881493369096532483478397 0.2149315321122229172785702547694874 0.0563079013700798140458034242008177 1.0579553327461585205228342993063464 GT 1 -14274875520900237843995948083449915201137.8436156752177145334109495080373174 0.8123770208028629475435905925614373 0.0033509419001096413811546662875910 1.0033565688798900002995154126333012 GT 1 -62021328123.3753033587519473225738248366062361 0.0393501358674916212388770099120895 0.0014741769190609394078880732616574 1.0014752645869299517767559283726399 GT 1 -106458466874498.1869784726842736401585639221856175 0.7675844639976587644811384663216087 0.0003639529454023669992673135022644 1.0003640191923499359278588251036959 GT 1 -14259013314603.2678500908259800858548162098474039 0.7011597435755431845865692260449792 0.0821711421402905781052940797924994 1.0857443350884791524257652927049831 GT 1 -4659214076370163082875480024064221.0634960518221296488006193766547245 2.1818370634448486713767275904615254 0.0327678546280053868921436556905268 1.0333167447375686576334610133687965 GT 1 -173469009856387379944671943174904.9836882660803955672768371327494474 0.8769362492673206975083550136726871 0.0912474063691576667072960326115340 1.0956823960742801219938292526636142 GT 1 -11098533838891471365402940367143440274.2930604393234698504213039857271307 0.9969731431050893606599873171782105 0.0637146965823888192293394956293940 1.0658350376064830650147022888956599 GT 1 -388929203595488066694265895562900092.7776496299640926537445333543605661 2.9856374694204209294336998387778176 0.0258749881341256861687097030058452 1.0262156346373528978548563081983876 GT 1 -1919169133532183361721225065198.3759039713339918955539099669401550 1.2431976646226333402220845562417907 0.0032955340995879830667452019403219 1.0033009763320867036960787558818096 GT 1 -7673006053882217183233865523235178.5931368098811272961706060863153182 0.6993029598438064239117729765547686 0.0372167930427854206395868563228292 1.0379270151060808317474872482744607 GT 1 -8280823234607009562512267224381.1866482608227980293275145611248362 0.0579021442908468770690147537507274 0.0323650484872896664825825336493901 1.0329003790376366150276044021624685 GT 1 -9398875542464368828263133362.3457321400685981680636175974283452 1.5753183950759520359342160293662334 0.0999073168693666997992331723880419 1.1052575397037726337437815659373321 GT 1 -1997300566991391928550350606529321858.2138247548345225291162679327813806 0.0487088695495564669107679130335748 0.0734481594068211421618273527730449 1.0762852816723613063652000559889635 GT 1 -214326029280415958524402554390841.3985144832482260721471887689989702 0.1745024220354666283504057185714757 0.0852372126839147124912632763475647 1.0890904961522835616876516344010476 GT 1 -116714044078.2536294106895398918645277297949798 1.1131803884242583112577173138361289 0.0436118281130072167322103375638614 1.0445914108029746005690991867695325 GT 1 -19105.1452815432888041040794846569954891 0.2197641555068171504691016197304283 0.0532647144753016604270205011024544 1.0547357544126962266714795087996123 GT 1 -545426752.0761615174686220676878509685917817 0.0893874144767829649078723233893400 0.0396450042436915838629033134278615 1.0404522756285536878894460770763254 GT 1 -5.6128902564266178249071366977097989 0.4556988168246467257584936340905422 0.0432085758122264209760527822323011 1.0441698588403885069847429172474843 GT 1 -331795753337328207.8202241101605567315343750850744724 0.5017853985543733037369817137517699 0.0878495121838183628611161634597010 1.0919502939498477863634429313482711 GT 1 -454222560620056851272531606714035.5761219327826191411067235432827340 0.0188660123443732902207996878528334 0.0018177674799565189656613519691564 1.0018194216241323870911298209235957 GT 1 -118100670360246138.6706823183512403040232965623887901 0.1331483691472476655879486701948018 0.0266238028337445870299265307232097 1.0269846351730627052844402968700519 GT 1 -562784143.2324615403159917361866931428009941 1.2887224430519990068490226337106318 0.0694950488725663601621641373739639 1.0720278819817645652586830131554814 GT 1 -916827287304546261160.4992857306835251530507137645342336 0.1967199070192307652416551511289115 0.0731948876645278848089752780277246 1.0760119703240323856647633021405388 GT 1 -40225326009386655560.0590917472744473338989675791276904 0.7608499030977699718247091813003275 0.0356172296722730227696834746049441 1.0362669985255823441883881763344044 GT 1 -35210204023174226949112088974444072343586.2692767750914965564869346708182187 0.7288143092983714556103842356816039 0.0689604054444546935056278237280354 1.0714534735486687479296231942952200 GT 1 -33390723675140.4750379308909526096615189393513997 0.0049157758996596586253287901836131 0.0258914823363943743658479744796412 1.0262325671067094495985099192082820 GT 1 -1807467361251.0982321700750442827609612014560958 0.6175017693676616390703736483449513 0.0675323724190942901625810918753971 1.0699208437977035938860758202632679 GT 1 -21951143016062010788908582201753928120656.1573912732386325564230642706262696 0.5472053215016688045635765050680803 0.0389560041151901549041395764438672 1.0397350897020163497570790735220888 GT 1 -24381556655959.8423713308697887881214255034367900 2.0109121622092482991748908273349735 0.0131550842378730081996118859902952 1.0132423787817874186009932523400446 GT 1 -13047930901280478.5404599248643652167286874420009984 0.5464926431637092307410116329290736 0.0107888844640580950027663563447909 1.0108475065036078966618171404911874 GT 1 -747716973433515342421579.1472769867743077492007519211935799 0.2580392811493976214417642684323268 0.0025650171435574898163797153719659 1.0025683124362251226521753220973422 GT 1 -298.5981489611603933334011240637664926 0.1190373586705483181618011320257378 0.0709189975294417276356229911615433 1.0735593507825808140330045174494777 GT 1 -5210946.4932943974288342659380327069180882 0.2994434062954386278962965625910453 0.0149645964496167355904037330432488 1.0150776957652267713474755531882757 GT 1 -2867065002678327808540232610554771.5763907559644856343374301591686921 1.2039624834404508406765637944833750 0.0425946046884115456206814107318736 1.0435283666608850732227083425899560 GT 1 -26435297689248410.1084776121356031641660496622781621 0.4205383963716749306416760887440297 0.0791356787122178344551886253131560 1.0824425703132274343322518073302943 GT 1 -47771139383787.4531799764999983691031035896024509 0.5675148278090083563036156058645670 0.0514244256509344774789935767807531 1.0527938150278079883550724538161690 GT 1 -2357161138145891.4523385858634013986273221052241163 0.1141002791028058169287132530850339 0.0098753777364227133288657827678762 1.0099244627015385426876619116298457 GT 1 -127639399143192986124257740436.6178791694472209747049754370761513 0.8924611979053504046414857405395606 0.0927336375427197892109705858561455 1.0973191978272525257366414593173953 GT 1 -802799533319933123852404945740834622349.3526959290796312013559519579551587 1.0574684347283558125551752868290086 0.0352641778436844032777088797930544 1.0359009745456095588714170071734047 GT 1 -79518581442276291569997585364815.6503858089821193524338196932104556 0.4703551430120283062072400646827598 0.0763770625154058478974886276244983 1.0794513669416255168018340436274216 GT 1 -1823531772741710532963522457499208.9164583293237336308843349596930698 0.7740356055853740312809448549120994 0.0554026891150205193925092010506950 1.0569965683535400177274710354132959 GT 1 -12266271892008566039156563097763374546.9056943335797239800931296754150426 0.6656598161248867791584228104582953 0.0200472958365401574500559384462212 1.0202509695398158016064055700129531 GT 1 -2421182342726375496823872451675833.3786372192787023274293721741824798 1.1940312736824629637363339727879272 0.0266355854652642894653253193657475 1.0269967401565916111482748993781771 GT 1 -279719.0761706278491687635352767859335666 0.4358391254835463369388007530222405 0.0834254181561411822807614361133567 1.0871118382060246219931299090121206 GT 1 -106088654667239200069749456485727.7542473654588480971366347943436312 0.2287121928140103037713915969031995 0.0774067580988520490913643561304138 1.0805668329436151510386490240959238 GT 1 -125726242411025.3424222381311426672127755709636165 0.2145925539360918452225535665808455 0.0705703845661585981117799629236855 1.0731841977282874158235500082790452 GT 1 -16115029317563927706411519484616.3750530640460318581846173984155617 0.1584293124659497999474879063754713 0.0496375399110132630637173423315007 1.0509118302184834983887397312908878 GT 1 -46587649564129765596444751374337205124.2799173148071554637481049073378917 0.7789068416404725349253388111750516 0.0905416538920956399474486543614680 1.0949060807446541518951770152128917 GT 1 -135012.3610959803374609891506641687489013 1.1508631698975322629041903658925522 0.0913816131154442201573498148313754 1.0958300893608675976833372958464057 GT 1 -369468933072500260574844473554618978.0489098207562436597359975261381357 0.7076994000251214899045141664119863 0.0064693271481966852642142854602356 1.0064903439370964555316713870819926 GT 1 -142288844462123180680915.2790754531840314809788823434469213 0.3513906660852440859591077599887590 0.0271652701335123207860417215186997 1.0275410674756640391637158103136243 GT 1 -6390816800283131009486374584828589096.3225518098140283832427771754005522 0.1007475692058111559724544527962066 0.0045143421030847114575038364511946 1.0045245625159559571630438089603280 GT 1 -14211087593691520.7062411336507993191526889364095340 0.2043496124922393627807036774549558 0.0884738481719701265505415254153970 1.0926349942952610514815253356234204 GT 1 -510654864583804103228.7858865837248705476591626284298011 0.0744555390147450404366582629420878 0.0087823972989838376583503397121708 1.0088211898448526609097247419566944 GT 1 -600347463955083975.7607933383653577671521566647160389 0.4631303448705737600643629665052629 0.0395356372572840700499525192552930 1.0403384002804718553114412295049238 GT 1 -972896912.7706776155097025794597622015459246 0.4699143259181985525607010755244912 0.0497348055212470781754075442611809 1.0510141812603458741057185283643933 GT 1 -3813945594966384374184357140.7334207396247453870475271915015282 0.3860762308145484880138415858417401 0.0304580307366616568694323197232019 1.0309315156403812203375095964595504 GT 1 -177396565135107798093727781007.1282974136463207448585421930800093 1.2273330153950605293648445343510403 0.0267795506698664002034845424418617 1.0271446558293547893023660742072501 GT 1 -3775128667.9656485082610047786498809300619389 0.9864407940836685584040167803401834 0.0599310063526337567410823099257174 1.0618020089143538432500290594709620 GT 1 -760.1103261247921877889273028429920386 0.7403156055964289285375492439961255 0.0781431011727627491351766771977270 1.0813652748171793962304229577236778 GT 1 -5932871.0464860883826636777479622461083327 3.7360874726939569551605019284480559 0.0607056353132289522596744761802514 1.0626263614814368564036530104963669 LT 1 -24852614944.9596044265892331230700892821190478 0.4689458358575064095857002038404844 0.0750686916442831159944147687371239 1.0780358054642768694976056760847881 GT 1 -176480749529376955683963137623.7892126020078982366604585914474834 5.4844096859509937979813090096432906 0.0481135602708193984287694844449427 1.0493095373046721908751937829486566 LT 1 -14110827.1650482049754233032877137541801329 0.1649823776553375897807193670492238 0.0857496035441180402934263585717922 1.0896507883121804987792213165046362 GT 1 -33516524612.8343278825717241001897883975282653 0.1275723341690089252356905622177550 0.0749702295675693780759366908619678 1.0779293577363374134077162602155815 GT 1 -2855678500895906960337828205.6606771086684487680665128838089994 0.0450243573718212556957333184509817 0.0210688045763348631947958724479881 1.0212939193875378039358033459556266 GT 1 -4361.2324112026995464571784699594588468 0.0522612355829019103773918868542274 0.0764804361256129467957536376054268 1.0795632950795347100961973693195935 GT 1 -35916.4709234380555383767299248650180700 0.5733014546198246289033187754566588 0.0436714924476102693549635748218112 1.0446537978101709743345019842048346 GT 1 -2805744496782564159818174198041993137.1785676521044739891819275866268759 1.0555233951135000709417307610129709 0.0182044526749267884315637028532257 1.0183721925843244129842553424262777 GT 1 -349847377033270612158202383214640.7731105071496512621306676751421250 1.3864466670239019710662168755082402 0.0503416805887422426886007343286840 1.0516530228597030647976046829295247 GT 1 -129649091152315200909.6458437159343243660429308643744406 0.6660238868621639749156455885736619 0.0344498085318897336784319063217735 1.0350571935158931123397627887131637 GT 1 -242612.1714931888697714222173225516746543 0.1526372405546829883012344390589565 0.0831302815556975733508664188186192 1.0867898904894275341455059916738198 GT 1 -183818558187727074216681.6490602634665424802281473229911202 0.1829334829917431714572112564961063 0.0867884723215741397994413619672491 1.0907877410176186979305807081411122 GT 1 -16661662919316243664084.0686167057882045344096337782798311 2.0104590050464338808331301270918723 0.0643225884549257119571911198164857 1.0664845076937299538376160849423480 GT 1 -76208966859829577052398083792944085387513.6000173861597966946158411850620236 1.7152726046809801802180969351600544 0.0860898836845941788240660080470285 1.0900230533753723696278978720787275 GT 1 -1132279406330397792002078057701531591330844.8756691734236677007807743869962853 1.4054294326910114332315108616110474 0.0813131583641531183410009161627300 1.0848099746157714555604015057319671 GT 1 -44145857062888840369776.2698857401684360874924355020030437 0.0313501892817282443942679441014349 0.0319871680934384056758534013277083 1.0325099356916015480949006587328191 GT 1 -139415707006711.4781678886336223243487315974372931 0.6034340894494223941130418542643520 0.0502920234106747981402227893066474 1.0516007347063507394609698080171771 GT 1 -720.3783478790452282120524985736444905 1.9976785458357457022647613620095440 0.0592701233226677677782288161365290 1.0610992404603810586554477134315050 GT 1 -182.3957177483988911680263366499652090 0.1002711154786690784826111210069079 0.0832721378854036789536339293158836 1.0869446205474219237370322786822734 GT 1 -26587209292951.6531506304569293675101991640588054 0.1604309914026900589726570285017937 0.0532869444704167978426394908890705 1.0547592353755872248265159447726131 GT 1 -177069776311009446.0702728521244414464310077589386045 2.1565041247562104201759948077990005 0.0939835664822388742991985663112650 1.0986978345630838664075400546108955 GT 1 -84392681158084333460072823.3316066218261020759867675004819978 3.0824964626288849478730848864600073 0.0979494029248678040850156230806295 1.1030846661744124597525134910069918 LT 1 -528810947426377057.8390681814808968708740631600137055 0.0621118401554554987331359840063432 0.0186261592809158773538848338400101 1.0188018107467138364793405199235211 GT 1 -104.4860491223066273898717589393140829 1.2700759407754972244172563494481151 0.0352928613253438335978404664330377 1.0359307069422067508220210768069918 GT 1 -917967720262551.5651128553402600569437357709229662 0.5670826776232318855216887826813007 0.0873452231682261504768931689472883 1.0913975894632930388190778980034920 GT 1 -300674015743243272733278435.5768691819529300833118344376512282 0.6790547785572595511895195534585023 0.0627275187496185023012102895592637 1.0647812372570052557732451243516509 GT 1 -1.3865003801473315801660818882996429 0.3324034159910367447176719368062946 0.0405739558496458405000396076692813 1.0414200439929107028237062048262285 GT 1 -30.9263653907327082158159664015316447 0.7037369449366428857309953594645370 0.0873679893428458361167216883405756 1.0914225347757523328830116257836456 GT 1 -225075673895284305334862350647479288.1354235923885017987727992193868624 3.2487843043552556929927037135494147 0.0455528128481513093054955318955904 1.0466229677275790603865671289691077 LT 1 -38181798523889103397244012176.1199115871156171020692806523051494 0.0966177498511900133432245580152360 0.0974130258709359194975797458234710 1.1024902231923032069699131619924285 GT 1 -4006086819546643185886412797264047084255.0506233398233394520938828238150718 0.2347954487116900406591975496286933 0.0944076745531784381727259731070545 1.0991660461198990161687155570312165 GT 1 -2890539.0989118197056571154070932766351582 0.8131326609447426768362780587005147 0.0517488861137043510023956513708049 1.0531359237380520957260532805520899 GT 1 -10592027602053447599279410918904747620.6396284382499108575493052233790179 2.1285210579635703818333841302779468 0.0020826418653975801065286958641309 1.0020848135797600599248606414501453 GT 1 -10968838349327807633133941202.2352054546017411166021482376509626 0.3630572490123395596692697124685487 0.0690775192875661846400289819377077 1.0715792697126417187207578452335195 GT 1 -92949990056.0739344057914051681352527249701591 0.5065861804075815332304719466442320 0.0366510129873184250205648822698681 1.0373395371816573757197972219345561 GT 1 -5872016284661847481230604834688315680.8782299905737918757239737847329526 0.5074555144029081564734462040626581 0.0409600876593494964128423715784324 1.0418225862570684580442265395703139 GT 1 -17496.7494604995521763225676044545975893 2.1903520248373059340137882477557094 0.0600883628279120593450347498493000 1.0619694111450642593778812397935134 GT 1 -580681559850779.3301002416157687079006525646938287 0.1478731488999808871450621753602146 0.0751666565883896675042056848422617 1.0781417269868927812958362928801301 GT 1 -1575908588732883426451436154796396107677255.0046227237806177225613424393818851 3.5178583742523393772531990351190694 0.0409287005040997008419617547802816 1.0417898591085497394530052386515789 LT 1 -1957037416725554716.9210111210942730524960932047437396 1.7992226993021131259124905717763060 0.0214753413322903541886397034633404 1.0217092919855464891374749986112727 GT 1 -60926196677313892440546057.6995513596408330773798671318951701 1.8187740689373422443917055497099356 0.0505590899339696155904004658230682 1.0518819833508691659299158416021047 GT 1 -346455996873658402572632.2711359120489265345177115977067180 0.0762353631085480518581564141791296 0.0309535672873312468129349195227550 1.0314427500632812034127912825789508 GT 1 -41903.4296149041941948186913749808270332 1.0014967769522064859584799873886534 0.0760694517963307616003201769708534 1.0791183744471723252219740743438715 GT 1 -30291396.0623212507409060574632398521348413 0.5857895595124372085332337002699365 0.0211432729586946216749483701279717 1.0213699933907954319082085311274623 GT 1 -211.5176298907320602830527464312210506 0.5441482729177801645260191609095863 0.0684704523369671897642135625801920 1.0709273689250251734951620351573050 GT 1 -4570900855.3518005277172163306719453640888167 2.1981739250809599651555900214609399 0.0647011550207163461037553131778863 1.0668891804624374052974631156545009 GT 1 -1452348754127283823452442400666039400192.1765584279567962442575373842042025 1.5123673925570795079912128793958965 0.0670366437762764984749446001994108 1.0693893541218151447659917382858068 GT 1 -24937710056759977478157.3095981297752055791984644745609536 1.7527645940899332654009745146095834 0.0250354957235311523585861137377549 1.0253542145172880169233029335535406 GT 1 -13357.8185146014704000548946853817454857 0.2330784558187064512350100237542017 0.0019447926971762645693961416839398 1.0019466862619526873896665720936871 GT 1 -103079778154356464.7162195054684467053436180841182967 1.0791432768409051478289431125786583 0.0030446839522320516845017556576087 1.0030493284321279698832757437993907 GT 1 -39241370297409638702511173864656764207.9064085725805916666005300007758628 0.4597736760298534248814642964619565 0.0071784696043522045560263720173622 1.0072043587881625525756640010611171 GT 1 -4084859820009672265.8522971572238951270232744135456842 0.2092156296825567674680284007302500 0.0358885547358201423472427192277152 1.0365483839330610851958437483696579 GT 1 -1032010.7996684070360127411486466467702715 0.0100535704481606695682773457120130 0.0861367916266893870884847102875792 1.0900743813398107340212350554335957 GT 1 -59.8489216720517041091470566506218447 0.9633109243749407706708626118911367 0.0318836212655951672800635124945758 1.0324029729668279446629425765260564 GT 1 -127650279931002665547508.6341782350265423452048219214925571 3.0299384703457383588274558324662635 0.0817314447475874888174675558800866 1.0852653872963105053873185534635368 LT 1 -74292620020558460145662629445419693674090.5675873381075161230844763228125107 0.2672347020042758465281322028387517 0.0178042191885878139934305476600585 1.0179646210373979644786380864253761 GT 1 -3.0214872052596095019269847904562464 1.1236396331729910405907127860605851 0.0712474717397516741687405000731602 1.0739129607355709912773787701678542 GT 1 -80768482723565811941768930229936968164.1241704860397329633132212614823686 1.6573108031706178194087595726050180 0.0711096670532440275749586057437151 1.0737645956330658843441943339942433 GT 1 -521183611397838999926118436444679484799.3972436755724078497737387666715301 1.4728864939173778963991553148787212 0.0284755645475916018523155107934828 1.0288888581882040607924854138809052 GT 1 -12200155.0895206998775184583268395484272976 0.2732138388628724297780677758129125 0.0425448580280252280765447899189759 1.0434764081402211294486218481782128 GT 1 -18747885155418922501781013969.7639398800487653362289097549995404 0.7129785101526802019711712231846291 0.0997596156401581144483562153209540 1.1050934575878496632141627128290211 GT 1 -14394036325473765056062419157442162542.4474517605958235005326283787815193 0.1278804085657840050204590082096715 0.0944579570850794183406892499355541 1.0992215721292247429241526578468944 GT 1 -41222398047595629.4489470290215595174241636312216123 0.8277754908267129960255621808095510 0.0481785433630660117728028150274936 1.0493778073290765603475007265539484 GT 1 -136378905629410052029948083.4003915523309931643101136271125673 2.0361542662201738193676793143289054 0.0906392743278228075553281322610632 1.0950134256008144357944043836363810 GT 1 -86478125104967129195.4206420658718440711658134688385425 1.4235696679121967635266829273829626 0.0066291539272347589736266816894167 1.0066512243610736923810886633433228 GT 1 -868284670517385554810374790.1825929462604975207241386116649411 1.6825490996701372893682635056761916 0.0213800598162328276330510211015167 1.0216119240995060630984289333572920 GT 1 -15002024093698895263870145845905366090.2084296000635081154293411561541221 2.1369656283463310846153566441918989 0.0358243883603515235058965655346328 1.0364818312118128989206838396268220 GT 1 -6884637291794696551162868759517896480389.9268973753991410894025899066149481 0.1768046864727787094053491999782119 0.0034096431048453959064549853707120 1.0034154691849021517824557837101017 GT 1 -284642.8294588762373498088251942518085921 2.5712374439564889174559693851377539 0.0120778926342142013849839602869710 1.0121514230408001566074734168781513 GT 1 -144034048098582618690564707107.4466977548306177320149215089462976 0.0896396018494010101641663710126279 0.0276231256803577724206338801621522 1.0280118188883283139054270875698832 GT 1 -6117359995522529699399720386398551929.6712479077051982518179200621550820 0.3540887927552418231733065528131821 0.0659977631706312822252021130961149 1.0682764458639044531813635037481409 GT 1 -2521749600265.4849775092341339529848704539706373 1.7358530188795594974384221111173953 0.0873287774599253025938247267108017 1.0913795699880793483787588116662972 GT 1 -93840512961774248138073146639633045.9607581244251805282375186202581503 0.1478115728002182103418477419071610 0.0944619764827151702054606710837358 1.0992260108039252785042112238952702 GT 1 -209071814755553821845579356.2662471188843905181759946831909873 0.6646462659277645843324304315840804 0.0717090828161229579710286569873615 1.0744101069784455834522307968277049 GT 1 -2528450175792896573374.0882334032428274780219530755873435 0.2271195747061490102237453214760174 0.0514140981867248836020079998523954 1.0527829277476903394080655956074936 GT 1 -403820559.1467089768711081402803653338403894 1.5262750851782538367605519145886841 0.0531176332175299913175988722889758 1.0545804102143695531709831095818779 GT 1 -2308518763961215704110767887227574238.9676857120598643205369534409316997 0.6671154661121461326125852928622928 0.0803303090793492582373257962259836 1.0837407050143181388352804334923894 GT 1 -30559.1579299905785791711849632607985030 1.7925703708636292023014481633231159 0.0062322278200992013273291632379377 1.0062517292188942500068249804588795 GT 1 -1975667976645103095898171784786913591396280.5288110064872203565717571084078927 0.0486666816559240721145328747108766 0.0395350570280124834367736434934602 1.0403377961673794468951194101682643 GT 1 -18498401591984529385958052.6741083142351043818422680163038585 1.3243287353558788287194197139619119 0.0452728825411129309910589876807838 1.0463297202138571706868946830343455 GT 1 -3988437689593613252349229360101582.5904920011970732091825940047138164 0.2155586535659228771734062992294108 0.0730329860552265517261903714753273 1.0758372977119915038433268144525698 GT 1 -7160347915547340702372943624003386199253890.3913594478331531240443351420859498 2.3581757991532162371501034296139460 0.0483002221770283677798087382115144 1.0495056533566651237759948496858255 GT 1 -219637881.3539422927348199194696125480406051 1.9625885692215718306621783017380656 0.0127734891455403001877019618027440 1.0128557715983384757708531885190563 GT 1 -11341308999758825620517621550325572559526993.7550864126110848588486938264137665 0.2577601334408517834258831140847218 0.0013126099437275972573417637035020 1.0013134721707542189418819488215913 GT 1 -1523384544.6595092826276242451687447926801792 0.5220720587674575972475218907406536 0.0048741065254205379232735244658213 1.0048860237221918162465000326576606 GT 1 -1508424876444323088631185.9647648411457499533048674401530256 1.5577527713644797447891946249488064 0.0611588125214742372834362757015773 1.0631089434937071435409327755461572 GT 1 -155771624186355441615008205.3545835999628288942711426518765168 3.7777439864118273504130575756078963 0.0072574875769327013916436604526260 1.0072839512575245956526465550641170 GT 1 -2416308716341897899556299234.0879562802711144403638715973649567 0.6223418183206355964258772351261149 0.0926660308723904071213301409611193 1.0972446837106353254051292759918911 GT 1 -51.4056825654319844797199999016398840 3.2603904637568635815745144893723534 0.0011666827034964183265735290612757 1.0011673638075681671037397484250931 GT 1 -15663250209803970019.9091250614315570964413784404145976 0.3518726826308645092295807653623921 0.0873171773624563443043735275515204 1.0913668600181973294772029766878410 GT 1 -400772621379033116257971098662131073468.0331111219856229254587840176900667 0.1315701051687021379081433482784906 0.0820807967790801397763691342667148 1.0856459061556655761712196300794293 GT 1 -562723911913.0900659227795363220598717014687960 0.1717153969567672801083786345957579 0.0749783023722117562497761864922926 1.0779380848499143062236398156523522 GT 1 -32725380734906.7797320377331886642831299429421269 0.3227698777967249878194830805651059 0.0233502615383647326542624360383200 1.0236271984224835264753677828350622 GT 1 -78720136.6848662166540364640526431780284322 1.3782267385702935188113972689389825 0.0513750298821941973117372362933443 1.0527417427585948016699232047082958 GT 1 -23040446643377524174942898368905.6671000946368376301642226084677187 0.5539914521073312840922009514034596 0.0771256271280727859124527924248410 1.0802621611404326335190109628312259 GT 1 -154295588123882783510922653.0991902792594317168147950945674147 2.2581903576788355981375867737068081 0.0369337400170776080610667547524168 1.0376330637535946020818188776004904 GT 1 -14238919392816685826821319344054584.8421203920361405557152662801181245 3.0546817014157478435471896957525623 0.0876657693523583040928987351825951 1.0917488750722635844250788158547998 LT 1 -33043909064166967353034734269485.2921828441061052155696876689286018 0.9001306876128154593239083297739867 0.0981405800491894769947592163584559 1.1032966247790357700502372765854563 GT 1 -2616834964290060167970929142485666602971.5489619210934132630000292768480019 0.5612203638982100636122043717924760 0.0908078665754257759468304701765019 1.0951988392358843533322001076791444 GT 1 -769717025330111626839002440961110450358181.1608125867701831698288669861900249 2.9505544960445277704919244133469436 0.0804758090853221074805706856489434 1.0838989265131099821393990970200061 LT 1 -5031657618626740938015.8411818996164373022623099055361069 2.2554850249282345940263830117397273 0.0523115877347673744266945137236278 1.0537295097990245015497752120573966 GT 1 -3053382865008628497354457363930633956201.5808542301902874531643092089592299 0.7239070511149125854612305459097385 0.0919883205384314925741346967506286 1.0964980376204322928848544688875335 GT 1 -2394803546953027289092.3357862618043531827379544196778430 1.6778787105686131521464946570074739 0.0402296803644637778851909843873056 1.0410612735248427553374822214644332 GT 1 -2434954851036137281664420764908637159541.7983272743949853919633711977539905 1.1804621466886905192069657983242621 0.0755470225022655986783344410145134 1.0785530920794034179732392256169477 GT 1 -925242104016347.0223445312756322033104237688982258 1.4213792637688568856288634576105573 0.0340299037820656952240044521171810 1.0346224015449093391943390952154008 GT 1 -13705672691621445436264.4162610765487291787050812989089319 0.1301875992506451123033186992116314 0.0644164985433111968429596667000042 1.0665848786124103211413570467776523 GT 1 -2256870101476237633684949783511813888010475.5709777320500670344980776877039931 0.3010352541102032305971750757431123 0.0283978089889218513208455537713784 1.0288088268020326214711080678763129 GT 1 -5279895785.4562229308734466723332185847940788 0.0498374945876525244090179592544980 0.0029122673297292150068584004622908 1.0029165162315261734314694397676549 GT 1 -1608041911812325956047111594.2045090750599639029488734841224455 0.3869010298814361345416720433391868 0.0148951858773162112490539914365649 1.0150072331943837440898353883842510 GT 1 -31704971.4315008184021654435116037120804346 0.1504896685381799202700122929926085 0.0527270761058784251471264107365430 1.0541680289073998901464879185706420 GT 1 -246.2293524570664762576082529537146958 0.3011910616429398056648536395865224 0.0789107122333163226837398039042645 1.0821983008822121827660640274185567 GT 1 -9949616126665425.5183829798183559706294494807974342 2.3563281853646837696339364716953978 0.0494671701354192222586054409214747 1.0507325780766631182374247036184624 GT 1 -169826448948229707973706.7789950464075223629353572798471858 1.4949178558819076241747039415813513 0.0164070526487243127397736233043231 1.0165431389064771725259695818604456 GT 1 -141084552794311684601.6559544391971588840163848075650664 0.2171899216938680687642015655180665 0.0522953083571308574920207567718603 1.0537123319612415626196911115655887 GT 1 -8194609485024877371771.0799674974580918337527511096075745 0.6449004666222954521527291677108294 0.0279123123868764701555560488973794 1.0283092649969510195965242739680995 GT 1 -655425618553082.6871429449015588600329511315139963 0.3481906674291624536288362556874335 0.0780487123741802717572814694581456 1.0812628901989111510984798151212094 GT 1 -1206712801561096055.3240067748871459547807607723825529 2.4493965478605604421227036304703617 0.0446478454816914358787073325267864 1.0456752582855999491200601032643263 GT 1 -577008477541791.5703469990029946712338502683400917 1.1425294896584697250157127555835600 0.0117065875255691459190673205716921 1.0117756491342737200055653855100660 GT 1 -1420854513349597801146509001.9353802905560452579120952345773454 0.2118404794189006644430844645725028 0.0688909868481886058296734301775201 1.0713789160230116396798199212366974 GT 1 -3681350127735580913202011537977963587750.6634905060819640346201595848109810 1.1328348063508944512371429906917397 0.0925230812173824703569555045491831 1.0970871470149323519948269797676940 GT 1 -23253730708187253843603.0406790414182811214348368595868141 0.7340242842242410088661147916887887 0.0586667831014665561805941577874327 1.0604580927284813535778754805749741 GT 1 -2049460822925043880.6488834333833419109424449677898638 0.3860115490356852018147853723195956 0.0835858093394532664006196727751525 1.0872868432973021836577026137171720 GT 1 -6213209068179712342117.5171596449395238098738102101452702 0.0186448563053615338850085846334478 0.0317744145978170073805719610157330 1.0322901760849583286085487410982905 GT 1 -233.5064139109225948749154823707475069 0.4653433407731184942889188273224581 0.0823925514976143217880978657719444 1.0859855958259182469980617170022873 GT 1 -9627166805750.9320694934745775451808799070560582 1.1260583789869566200973479894509657 0.0888021097242908737956918290205276 1.0929951821770106143856616481398156 GT 1 -25227262881057678013031281784518852018.5464557818256002394288369974697865 0.0234667676308213167040673719193898 0.0162731726397332334197837947095003 1.0164070349431879520360493367188729 GT 1 -455586372237500621931576833102169603318767.7919429914820563412248838916894562 0.4475257728427128685518632568179859 0.0957385966642808467824752877304024 1.1006367974075276892623969229661422 GT 1 -55844898.2170789662897575517521970618823360 1.4991776245551447388150039578134439 0.0242779126443104523242721330123611 1.0245774796788377401488727467180678 GT 1 -7326486945379684632744078256983.4253760244452903343839132727976070 1.2699971900028063198687140013153692 0.0210706302817239203354216176202365 1.0212957843879587356578703490007035 GT 1 -18386.2694819708172109102363170322022371 1.8458213848928264153349816531383828 0.0839029142477113989372283000299686 1.0876329311118819878281976669543983 GT 1 -62953.3546861229707806449767258408362727 2.2070752695228003859224857872353880 0.0492107547167785885937037544473753 1.0504628547893287162334876781006032 GT 1 -14987085306433971294886452230141351828068099.7853810086758503809864440677736278 1.1655238984158217368812288249762307 0.0806235907355052042982793554700424 1.0840596547770377243854938895078064 GT 1 -1500127064003417355388827.6256632256798641285035478913926788 0.1574679728454994885037568934226570 0.0252045022624975329051519647179348 1.0255275758942934815502734983261746 GT 1 -3038.3027210663830296160384207536205299 1.2681837591252132990556454247700633 0.0990143881735414214357999862515134 1.1042659906173350431699304503133947 GT 1 -34301029299042890816052058406200219.3174290921370819950792735572262237 2.5315439178599764401429290766901538 0.0674843799103616925220682667014440 1.0698693768380908076724436652690606 GT 1 -1516840588.9211545978432381647769591977579272 2.4490549925074149184357417170442303 0.0576094320895989326293845976123615 1.0593354747189406183188159897738001 GT 1 -1654.3083856828961040244533962912354201 2.6634139173010650210916841892327948 0.0123962208066410267097181677947011 1.0124736948746928301844464139527423 GT 1 -180750108005941715475926148507418002.7659000485381050798926001989762355 0.3288290827785568132895033706848093 0.0625684444559734632832140628741991 1.0646115312224475841478602588043284 GT 1 -28576649679.6492225564201617164190656079459928 0.0449699857726877061628864417515461 0.0977373989381368031058113854907416 1.1028496692925789341345485359540899 GT 1 -22881483804515110860.0165084218786776713367759867230982 3.0099207075085241872915057824625551 0.0362358691375788437448736763815575 1.0369086918386303068494719958208345 GT 1 -308386440683.4803347127293951691538233859597266 0.1089478599658145073752469031800271 0.0514251062740521172632251977025759 1.0527945325493004511253657049971736 GT 1 -12548.7783450030629027240546367689447272 0.4302478804597533379628734407555211 0.0384658788784786387520465262585651 1.0392252271970873609827444512495011 GT 1 -835.2892520945192125078178042244865466 1.2267317527755425327308805884003012 0.0400676611922550608432775507377501 1.0408924774127148591060797868661992 GT 1 -19625233712728233731829.8956664928508974004287160484885472 1.5480534683708231365092235669329209 0.0930241247385630615808045472587868 1.0976394276094572714551981461514282 GT 1 -13986895791644.3485294501184725929351251392432330 0.3920081386581449079785680625861518 0.0400379621418065141137264144012339 1.0408615391998507841454797846714993 GT 1 -21806.5510172835127887920174372110378876 3.6507394784977251877933835598805946 0.0466484893934819088450404139343486 1.0477715969483485126968154188211389 LT 1 -1.1256083658872976018620707387586779 0.3820699887105757702599313905223493 0.0630148923852444527645916125765913 1.0650878905575816367438998400670572 GT 1 -686541356638.2532021030627768162249334232622223 0.9648071069681310682695642689454961 0.0056909055266406520927259650424210 1.0057071604289083029671319535966884 GT 1 -261511381524746495749974599806273688477486.6694373355324108117682751606332956 0.3889622086745649133710682449553722 0.0680155109926565858077975522810276 1.0704391071310205304635124362298996 GT 1 -115312515196.6501479033780255019630690556659481 0.4738178363463549913226059637705559 0.0287853133683382881289731323374725 1.0292077366416724794166406795967958 GT 1 -2398079084198444140020.9378709156220351139847276208104637 3.5045275812868806687274827207914739 0.0460945727522632800660880544644605 1.0471907453118452810705966510681219 LT 1 -8063586098338893.5554054885296966030215902671643659 0.3421413721540590823313565440352435 0.0897228490893378544786926778108375 1.0940061644003740572371452785402957 GT 1 -2020285595031565130008202274581013581.5833735954812918367779929177767737 3.2408051027250012556984779069057598 0.0980720016508184616912552855818028 1.1032205865522377470530329740098276 LT 1 -1986667949988715982224993464793.1173062457573537970868487731718276 0.1784648198370948845735138909734773 0.0400359888995933163828920229198246 1.0408594836600405203647209483282875 GT 1 -456.1644125179565624591985362645234441 0.0393702161464961107113642106009499 0.0730908636106161335463844154432228 1.0758997372178861704398303056852761 GT 1 -198645637528187418795008883.2154709509967236046704957723564692 0.1576062454625873632639468735961712 0.0642243809642896090741177554823425 1.0663795544952029536770171303211605 GT 1 -85192962683026498235568391041853121.6253213400945441045182434975856822 0.6310055309041712870916454662053048 0.0536388034627157439682829333984570 1.0551309682814324108316599588400873 GT 1 -155579328708159626209.2584131837583322052044071320973362 0.0393333996804392555644916856500577 0.0178277475259474335912834323645921 1.0179885761588029823406038618865308 GT 1 -36258416945067709258621.5450790099020575672387332956032170 0.9679598183384917705487916035856504 0.0508049661183749018418347196042823 1.0521409863330507409728167652493780 GT 1 -369967129894813087524073193829.4424750529558970345735483306540679 0.8932332069097333305068535160201814 0.0431379805636224004390650453254917 1.0440960782414286987385819054542444 GT 1 -38.3270937091576487825087750719286398 2.1545065535157258868553288378643744 0.0983762633659747428874734506621611 1.1035579893692914651796738103197056 GT 1 -1398115068304421051454.1525802597069020936523033920264081 0.3303189387474532837716782173514000 0.0417858855853952624337214912244698 1.0426840245073877418154414802735855 GT 1 -10933649167207809.4390599152813784715347015488915508 1.1750773769319190848754413082697170 0.0628326974665147388022554695333299 1.0648934614190365409046818935439516 GT 1 -2772284028367500432428819016849411462002.1482178193373708727408805360949318 0.1555351434721854796656490231398418 0.0266886988209701709471498655204016 1.0270513084190816855414210168297100 GT 1 -304595715583221129943076547.7293190791872969354973686566974514 1.1054852984681065826959712651513364 0.0502017960657697445430364977566087 1.0515057338625545437783289697111521 GT 1 -10230576685703563.6930252188703326266030064134579258 0.4048867374841937601895935413676804 0.0125308549145343318483548443326290 1.0126100281780831337873802261438408 GT 1 -128340350021.8286335907442065075548682125036944 2.5942465805034147039956607331446300 0.0810341269690911791272781772420824 1.0880769489232817531586065394465193 LT 2 -192124866136.5839730905570669013011682957167668 0.0547564075906388368822135880846344 0.0293899347479408729228275309883917 1.0298304719307920194310161095676764 GT 1 -2574805132412074228118470622439.0069506389279586982679212515184493 0.1950041084756116730074185018297951 0.0912806658637619721217577792605494 1.0957189958083391566776472629113230 GT 1 -1172.6079359109919220792850971808865894 0.7181418396494420599663204629209891 0.0898412440662306964781720322925134 1.0941362376170301678473127251262065 GT 1 -11738482835104730062597508940952.0024395760208238919370798760500192 0.0720485548727905287076832005493181 0.0074668574986295017854332699717505 1.0074948740298395371096681634378972 GT 1 -1786872493697921587909102532740885896564668.5667032090513831512716214941285149 0.3751510466700411657809025187791493 0.0772214044972396552644078630095714 1.0803659481154425526685115604462980 GT 1 -6297.3826385128214989095307777770732267 0.4482236496803930259119944770535410 0.0029975606165091566498604587463930 1.0030020622996301164328853435806476 GT 1 -230452515896956805018353505543.5018562378480118481206608915854178 0.3844385173781432732648162949294029 0.0978982828870597151705566957052822 1.1030279968594995720070568570617793 GT 1 -154869358445159720815493232139613182877032.5089543521587359721307940856684569 3.8076693348263106675630945834425020 0.0816278765528764268704382722041545 1.0851526072669645674835046830437907 LT 1 -8635813676808216378540639682670.4573309893385098907247617678568144 2.1141188294781949634923948020359726 0.0512469270900888039238490715102625 1.0526067113738153914844077036430677 GT 1 -891387957433711254223967758808793892889.5476163871751068916127886998843060 0.8716370282630801152455595138804879 0.0097389892239138563538394642471245 1.0097867233537579308499221849384041 GT 1 -619658723071031907422153838.9436615167071786676310799001872304 2.8263352486046361459497710663887299 0.0810750579626766334874819777592524 1.0845508334795157855234359155385390 LT 1 -1571362818032977064193832623124730266579090.8393536629337424871339062970612147 0.0751195642491623460544067312551466 0.0611997429961938623497753493873510 1.0631525412475236533958230306700229 GT 1 -8601430208084885996972688561423.9590933497098177625720268416306047 0.3522503843650843589286244758872800 0.0594070946789311153896702742415665 1.0612448522159139042878619342748702 GT 1 -149477271773032637.1205558386131207604801379395398965 1.0850731146237469837270116031281322 0.0710511149356998822526423309859154 1.0737015631413455131256042073594543 GT 1 -11293952422338915602949.7146068219085279898207039098958892 1.4953287126924270590222759335629863 0.0782455459919922177420109319904317 1.0814764097580413759852356570797814 GT 1 -21933273896608542616942552421165612.4248199014192069175566872110458265 0.3989452320637352548733139201644628 0.0357096916361678688834551236451414 1.0363628799530645063653294289167078 GT 1 -569218748046462.8468513042026288531984838778767070 1.0642229823796416751882263710250664 0.0807292488382012098859611682159568 1.0841745850421657127549713654606049 GT 1 -1148928474664399889768314759117.9680905343796643362518152478513882 0.2765578633223781690638480494431631 0.0247384642897098001415817145412863 1.0250496022005330510500395728903652 GT 1 -39959905689427996334471454550588206.9481563151309435040278980172607692 0.0266307906492646864028092021155013 0.0062584058119977401565823342778232 1.0062780717281100852064742527016255 GT 1 -38872089533.8640180444702887061197981838133257 0.9640877769034079221354038541791142 0.0951679284448268400197454088265101 1.1000059087925360743031940583277321 GT 1 -1467623971835494352141013945.4026741588420132223049473352898461 0.5522207124272138237376536001313486 0.0491368452657985042155675679071033 1.0503851229693424536735000527084752 GT 1 -11682871792.7246339101507622327173589157069643 0.8349492436068420436552972898606614 0.0031483773069872008156961973064656 1.0031533438739782508219349125538428 GT 1 -9971625062472696060829684354093705428531.2076725050551956075191809987880561 2.3094765931628864373910190248745114 0.0445576923900199447634643456331442 1.0455808963921308092823399802754941 GT 1 -21942232134565724371910036857409345.2395159517738693673716431695484539 1.1720486085892892705495452898683744 0.0388397180251682331493006206830335 1.0396140972648407688880239842377162 GT 1 -6097595706871727.9236719181790612911166138234317408 0.8687382652504997209034848065406120 0.0546254060211542832788904081441264 1.0561740342876216050788187253878918 GT 1 -426809.2100476313894416606177751227837906 1.4593987670055368336391486238999720 0.0948695024854716540379663144192907 1.0996761495288261745290996964483323 GT 1 -14080579486019138.8132168362710893122507775552390886 0.3356383163648113176913857218085558 0.0563465547099340695365475353069343 1.0579962932793096226780775991362770 GT 1 -512559670656204743078519988.4314576995128247959359758544619550 0.2716242896552941829214478076695870 0.0052362832408767284656130056217346 1.0052500406179963425556375274488876 GT 1 -240409664749125256606219700691.4608395879904942879230752044066495 1.8967043941948150118862363379338637 0.0127423586389333827715846517232200 1.0128242387986707083597699359034059 GT 1 -303248098486274678284.6815163683260717034451129732328074 1.5840519524417634530017072216615891 0.0974152413779207625038167598519626 1.1024926778141484843833737787577478 GT 1 -293420559738888157569333674155925.3714321783826394586224094532721601 2.8676432695132068361351614763079096 0.0482430441361715645651366980056898 1.0494455752473368877423716540128229 GT 1 -371561542953710339037299023879234.7250125117838017901199124089457253 2.0475508830142347468643171264204259 0.0909866090837912765408329046423819 1.0953954534321877250563888161522599 GT 1 -3332017289676546266868.3944182509112966918959512087026182 3.9278609762322936662201237710963867 0.0167209008471863795402719126558455 1.0168622732413044941687982236247207 GT 1 -1325962873171358305288969911767453.2728344590522800255328877931251173 0.0679084504182917972938283159801775 0.0430049244309804012601315331602727 1.0439570332383262135378885077943587 GT 1 -4714438783398840682248.8219184615983560889733744622986784 1.7824060867697485266806209139532839 0.0923664797456709826659302081945805 1.0969145939088159677255382243564462 GT 1 -501183868673716735309188944.3127449575360604717183166859775246 1.3797308663859047133628948337787637 0.0957495127451302602493562631887680 1.1006488693003433690876718795985131 GT 1 -43741750371327.2831758256771691399029983708706739 5.1896852425620473861806264045997562 0.0591787614439138806172280972006258 1.0610021270967461238642586862924902 LT 1 -61611776176982517496737678356469.3696058574078579445177761182937707 1.0868879573197809517691677300711634 0.0651388855281228872737261117988822 1.0673573013984974304310658563002350 GT 1 -3632126652188755208371090347.5481536583146829307695922568366129 0.0514342743045325366428266448299707 0.0986579161564491083435596629777050 1.1038704221282118425286674722289026 GT 1 -5057187052183347877836906104785323.8287816123971797440052012453168189 0.0949221979947577014584098621105722 0.0249032248642546238608273976270146 1.0252185563604128162174646467561509 GT 1 -89389602304793502991338457619239274963.1166493615020807022317096390430250 0.9668715250455283108236906027448641 0.0152621352271914212254388024291593 1.0153798003623623919130467276061207 GT 1 -2822537381124089579526391723690504818146.9916630481359756530838537237849369 0.5228459621777555033379635987721634 0.0933468852924591326974060817417851 1.0979953554856531550176212694283363 GT 1 -114196530514236254.5590672077385163867449892308022535 0.5243305310096990448718889448088203 0.0465705771705170112158632679858743 1.0476898757378601520748278404114413 GT 1 -8900895444480511620565.0527435585070832577616053601973356 0.5337404895685020268352310217213235 0.0633882192444054179765891698165577 1.0654864040974140480414611394758082 GT 1 -64106.6459987409071614525479589621162871 0.0590940569795716747432180308837526 0.0943914115607780894238555667236557 1.0991480878776343382433417988719899 GT 1 -7253954568566765853958.2814046082323605173906005404063923 1.6382034560436598197362536656537622 0.0096789305662323703439849357968956 1.0097260758720907928510434768894166 GT 1 -315971846385195200471162502012.1567882110227508862395943797431017 0.8842959362759660092401206605597734 0.0577454137209588580051693477960325 1.0594797794771001254929072523141369 GT 1 -79572520909.8977435298720281908700456695389067 2.7570250790166150760481376520162722 0.0923794989937036877076542152522755 1.0969289381800644477598120050719067 LT 1 -254.5239527503576205251290637428163141 0.1353427857584386328673448414565150 0.0627093497087781395042120964715969 1.0647618524301779086562753318465786 GT 1 -3195386975902427092007056856.1598906357210545218217702720379582 1.2100774357437380707897143503051892 0.0316091656126077111969096838567124 1.0321195186600581409459479748614369 GT 1 -15600563744887187420897.5883221263472931303883975098035580 0.3238075319865137363656875837017062 0.0354537423771246913675025045163178 1.0360974875760649335982917009804879 GT 1 -16791251.7990400507451104740631500941364150 1.1576189658653999182645265938879009 0.0849837116123982663134162719418781 1.0888134123485562248862026632338284 GT 1 -397940279684821949687161102150983856560.4078739406640251226174688814916601 0.1180933692436942691812161012505592 0.0934400994586179608017132563240688 1.0980981720499034918461575127255108 GT 1 -197469972.3538945639127148790152729506772854 0.7231641619596586856972172328741175 0.0341916517177813503772915027927063 1.0347898616763277715175621602777723 GT 1 -447764.9494902504871087180214159750813229 0.0733089435230713506319963840628994 0.0200440997139953477268587012932538 1.0202477080381952091067677421852816 GT 1 -119676471681846022122364.6545171126852061157576957492680826 0.4809797132584612765079129803890560 0.0519564411630123345771753749820372 1.0533548296424163632544761276797014 GT 1 -16927305548.9431066570494752962143396688437613 2.7018946831085694092980698991317939 0.0597383652647548276752873956508268 1.0615971076213098351424045911978929 GT 1 -1482020973185966287518.8863219709991904890963062992356035 0.0879516812823226460779704991074701 0.0013006618198604326013561818071171 1.0013015084146138577437795441835332 GT 1 -10770973259058312147366338150629394432.1731591867513654469427625385571737 1.5266119707873402205515726118500898 0.0071124883001355498349149971387270 1.0071379026227907030253641816829400 GT 1 -1784.6548054633703022666618828248306193 1.2636288596147343648546633627550753 0.0449049447173919312588292265786804 1.0459444091272809983482702953475285 GT 1 -8728768266.6471351986106040819435363267534589 1.8298997403238577159876726010431560 0.0879843927005348509061654311163739 1.0920981757872785450382514793298667 GT 1 -2981373158.9436944230075136541286978164412804 0.3601814436637954153008258393242171 0.0918241096189030148763606362092241 1.0963172072671112725949542782760168 GT 1 -4894746216265412818949368810840650872067378.9048282223769350496689048358143590 0.5917902316764321680247231596853203 0.0398345502482609300479806191854418 1.0406496658782936671431180575184878 GT 1 -1681413492.8413250269625268284085401996428734 0.6364520222361520762707564292564289 0.0290061548283801558824746744674067 1.0294351493601086262005972784147934 GT 1 -151535666114536825599252850380749076460286.3913362399589791434852609510686352 0.8984507220879734293087644681224469 0.0912472553207535360072955723072400 1.0956822298591929397523540645356954 GT 1 -696972175.4636629291850053747827226400157909 0.7714380953415634177765211586904641 0.0799746349570619582498769379486234 1.0833540386202700925095693056374840 GT 1 -732664875790821050531387354502996510.0380189496811089527487797814832070 1.1680400248721987686841902229362208 0.0479272095563733622843247190493571 1.0491137865637026198653905097045279 GT 1 -4260503005192523264050205.3069351880907872901563659606889559 0.4091639562847973694794517921769273 0.0952343902039962666212713985074886 1.1000793635276788435434606277066335 GT 1 -72826083129318.7013576870305547013595038215080492 0.3411080437481567937976162276995664 0.0043240565189063750332360446912303 1.0043334322886294358102681932680521 GT 1 -543803056842740147745.0607358568992299357536761290764915 0.7629303107660270643995714341417248 0.0689947437847428056471741153991389 1.0714903559473690694481142428381854 GT 1 -61326793756412.3726247330558855744348436637907791 0.9233928637975526536476206508808542 0.0944322515200722852504282648705977 1.0991931855950333930397213903893416 GT 1 -131149.3655832710504045769335865215753540 1.6871726668289963535654273320987855 0.0850534149609085817453235965480614 1.0888895924170769619106695620465562 GT 1 -19813015249440550.6536859716843890499439299088065169 0.5445489332518729782232301746290382 0.0470918751256273480335338859238423 1.0482367861931801564710010910223579 GT 1 -1194096211515059177186235350490.1197915501431346671725917013677669 0.2570976928272348724311839911368067 0.0040851012645437078325296479959226 1.0040934680846934868162629463669473 GT 1 -1525432340953716666516564128169541853623077.6998561101453070398320051876900843 0.6102606796770885945528054986056641 0.0339239050712376841967180964570685 1.0345126746538856300182595239048568 GT 1 -121465856895162886282591257577201330511.0395675768658407054267453541656476 3.4774341417572421497508051896686347 0.0799553583020050427319565875805915 1.0833330865315049885810074731234220 LT 1 -445208607245371148437338552.8864500853643991435447186398898277 0.2585920656995621208946519698704415 0.0948294481553753390433229588219748 1.0996318979607049159790878643520465 GT 1 -86187515925542594.7418858244829812049583075499614962 2.7647190930057421681464866925481749 0.0196318765294485459121605241801343 1.0198271416566917101942547579653461 GT 1 -10074213302055.3363087220384895758051869295246524 1.4129738933982332873776713059737379 0.0543811315811231809580172589706654 1.0559156786177081845498408132776418 GT 1 -5131279105693812724205.9835543760243522204646566242686240 1.7176665661547881899346772047705069 0.0782597865013216110124552412245994 1.0814918592297221774406555429368129 GT 1 -42738109461416180.7709845169298184580094159927164470 1.1896771896709882075717401757159281 0.0511274641023898267100347750641070 1.0524808035158034342286526105995867 GT 1 -20492876954663021402.8318753361803359931176202946578167 0.7668731523720534738679520675042090 0.0430246902298577867265722824116941 1.0439776874752250624950210025520376 GT 1 -1106654429320.6079276662233768914064519270415845 0.3555755324061441123193720788862540 0.0370265329209272693991593193827671 1.0377294199217646153901834007140793 GT 1 -4371.6115926927904939180349278394391636 1.3205836268033578036443174623357782 0.0865870999948471846782347472792733 1.0905672552686154216031968690556954 GT 1 -776711171860650785988.4934786481668810512645607025443858 1.6452516469820848466306089948043605 0.0373630746347881807351362138277869 1.0380789628185084186527153810749765 GT 1 -2665450856279770554534039487193280094027644.5912813713320169535005688736179493 0.0902377049654270976935133849816394 0.0803353481772159290727989871356714 1.0837461842768421750502640616247211 GT 1 -72457.7958407348746673025413743426812948 0.2815480567746435444631699093973259 0.0210895536727802213707440142241169 1.0213151152759116759071378430951443 GT 1 -2379532437874534915013632829641962597381.6988818449365322008233654054994777 0.6531107663549525337512365373668105 0.0294659670476854524788540407333751 1.0299088095460713744278872240764225 GT 1 -2209951954134421749686617.4883751229830375894058203231157055 0.4248422565445923002212809730093308 0.0172822401485941415219419431867229 1.0174333212713062131514809531394967 GT 1 -13955439044048733213671425801.4648465272299534575834074735695475 0.1099993731697760662086444697763794 0.0940141400884510654381402540177375 1.0987315802225965045860783226676260 GT 1 -40100087217563265531540295346012849564.7273529754919525915984111857252139 2.2037973677673124676063632940663167 0.0744458644695223672785296309203226 1.0773626553994254778046271517455559 GT 1 -4786760888661720959275012512925.0532858868919229501910769800029302 0.0726560425180816832316947963726400 0.0992559801844771115508465589192963 1.1045341684927951335824556290025051 GT 1 -7932004.8759771941521554213649413044499596 0.8435316985347812007828808568457488 0.0255734188292611876438387498670926 1.0259061028719637024524521018429899 GT 1 -21069404076.2498169530514318186102362651435940 2.5255815951978839120134618529436708 0.0263847531655823509649831122346823 1.0267390771660154459590785140727123 GT 1 -521680273393866742423624.9913170567744017352903271721383157 0.2028596865821523232056464394037983 0.0923819069125296782259471212212054 1.0969315911853870831036211423523933 GT 1 -511512064080741806364585624378559935322907.2365729881784492518940123609767985 0.9694272341914618818253498104937854 0.0839923087009821605740530384433703 1.0877305177286098599097475124074083 GT 1 -36735692195.4210565904370672619310145524115078 0.2027011903713803990250836157676219 0.0755088640257749153624961554664988 1.0785118161141451207466601628529307 GT 1 -20738868934612978489330240381724114565980768.0610781332411270563004253038186210 1.3419175137571143581809549695563823 0.0634358467918122494230869593567520 1.0655372562854584582240253177248201 GT 1 -45447296776314461987487033227.4196843976034691360597485335953969 0.6002865699508337593793263073080998 0.0204801971679391487052739037614592 1.0206928245154754674294840419303496 GT 1 -2758688766789873672214337.4262803797356965824061849904304005 0.5860892043605346065407585012874670 0.0820403513646241401962982326531821 1.0856018450626128971263715211596632 GT 1 -150.6255019938727521294266074556697490 2.0495467297379909629122319919524916 0.0608615504651304310206182169869164 1.0627923670485022315168446803515782 GT 1 -15.2579888749809798573143173758660065 0.4813749689819576659532214321417347 0.0611510520521842058021661231052255 1.0631006775193126904283507487567608 GT 1 -61670827303.5351127218454675450359122039633791 2.2321461376081088789792288453359469 0.0046650082787830994026955267605865 1.0046759233891867387895203690065859 GT 1 -82935695.7364920581700007603868844672733162 0.8860745522086573305154585259412939 0.0179609863930729522819702592425713 1.0181242426928777189087867142641217 GT 1 -6736076747114190.3072507080222242636616205122859148 0.3863973139207081797721418822921777 0.0029840939966414337737290647623842 1.0029885552826068452429598894187664 GT 1 -20386539064136353397416124014813340925561.9197582351022221800078434908176141 0.0795153065817496076466406951518515 0.0863362680200018232529768981032933 1.0902926833409468217638483118630996 GT 1 -62264020381708285842.2291732456418173721342754042520898 1.3323037941900121372926317629595336 0.0926423224054461871451101915744642 1.0972185542390103328539853725066609 GT 1 -2313525102858460975151641384300653100127.1411809198150113306450576818217494 2.6821794845174355965914241318879164 0.0172905182954483919517415622930328 1.0174417450345260063934380795934430 GT 1 -18.5623873545967891712932644155744895 0.1860461325019822017611384127503780 0.0140793539722275500040002981054279 1.0141794083203034478628027368632169 GT 1 -411031246021240746129616.8111942898661806583689189665815178 1.5743036323395340756472639318702690 0.0931723128839731356610535342046551 1.0978028280446681822954043301869414 GT 1 -3480632532965417124361602.6550947682734967489608297728105403 0.2173909929203446818091021801129505 0.0742481156535932455019707459026145 1.0771490237096259141425511611149666 GT 1 -4331425842254562801159442757.9380570093827257446756683522998091 0.1380705057966317466499582715582875 0.0552907981210725034477380120366232 1.0568781217242367145380658872350497 GT 1 -805079400723.7410620936467436246933702131837099 0.3620555837995385752728649490827320 0.0180518757818257676898544366709171 1.0182167986847854356466804570850904 GT 1 -1082170.3032266516703608555964758358139269 1.4436107261381126414744445981925717 0.0100067429822826720055565053895845 1.0100571469699118621066588426715661 GT 1 -19962007075036206552914883187857355322.8922124571524536189670190958933379 1.5976552885204222412426301838082870 0.0812271104413386848828874519952383 1.0847163149600886648234705865041160 GT 1 -167832229171952881655097984291.2511904297592810809860201983157165 0.4793349360094373996490514905303748 0.0548697647024038151173945372116857 1.0564325458542954591597180506628992 GT 1 -25393242921868029166107019556.3308098514272661986407758296308849 0.8753010650937562157641170903405976 0.0761711230149690131414612325000498 1.0792284225598810201522745249300985 GT 1 -90990.1846242455062842377775935419474435 0.4388551664704181596679668876839872 0.0797309888775221586979484358227569 1.0830892482865941707460565899400660 GT 1 -944090961097507850990618648.1818859718313014029022570734343388 0.0862855784861837644611592902790149 0.0145793235570009603641343989605326 1.0146866463006513215072823530393143 GT 1 -7159716371916241649.9969049153538418965837076983167791 0.7417874473475237895237629512684768 0.0887486309665327412472871068723055 1.0929364932917093528265223444466747 GT 1 -4078897477349554664850263431989573381604.5463835976116772491374982604878477 0.4402923653818568238735571423525692 0.0777768818508480435924349808072371 1.0809680910471067946665702756118299 GT 1 -30855749876269032801859.3590832011453404435693883758165877 0.3348275344988353020267289499914960 0.0389746170834635916646689449039008 1.0397544573361707694301754589801771 GT 1 -5649490393898200976777688937.3531763682899523397910770877128732 3.6752099321270506726082310037510523 0.0591053837689941949010009274469541 1.0609241369211622749462319745775150 LT 1 -4488751748737.8598616926212581596791161101259542 1.5711457580727016136206369761936189 0.0839593363007795344624184430402991 1.0876945226085943536905296679816049 GT 1 -18450.4309245249314774579578488335475962 2.2819485043623404788638855344183527 0.0932969009779762683245745379889177 1.0979402264226294922930886876420857 GT 1 -5188908352782960417.1171060253262416040955265665695188 0.6224739898294781744801490346993423 0.0091329249067816404660287866045042 1.0091748857443055150323735024940409 GT 1 -38189803465080019376.7399150151578589284529210210381146 1.7423299839932774284654179456034141 0.0349248494828952991244479504476944 1.0355493044918154959192851496023176 GT 1 -7.7606739738913840230669403314259165 1.6015874264870961757320916622310881 0.0850183975494385939087193283477738 1.0888513205201646574023633291293312 GT 1 -309235348852097385030860740935163492972936.2239991401611733583358693671176656 1.2413489075893806335141257558460807 0.0415982783389883965307849494809415 1.0424882552316937843400157245666065 GT 1 -167.8942927721674431339121672214084003 0.2805847908878781853731497262914053 0.0950866498514804832061214074486847 1.0999160855583659455859046761896208 GT 1 -18921394143196835.6519593742525879846002232084162905 0.9867274841798510745184940538009610 0.0227939381831775808117157583701588 1.0230577363668477894580022725527551 GT 1 -63390302447727424.2487451028949637017538488085284173 0.4866194171101985414717329019693314 0.0058161416182266955943019179445654 1.0058331212391508641873749214406798 GT 1 -399383712176067.6284849864876784583411380935698355 0.6634808165135246403457420314294259 0.0613586267978553295579973686046541 1.0633217968978560045389804848561222 GT 1 -7968.1487641432743715350026122233351753 0.6641421470069724891800398675827157 0.0179458560493971661066869597274103 1.0181088357417177230354476131177330 GT 1 -511415739917333855588553132437.9675057660140769543731824651903370 1.4387558829682145695991642625678709 0.0507209521322942631004309613053917 1.0520524794769992027499452156505031 GT 1 -18946398374504188991522377233134.3263188683795696162253192677924535 1.3937441182240668470194027616582473 0.0055773185638428031818164783354116 1.0055929298782656308347784383263754 GT 1 -152544172872192541447438188128417417.0999678920633856372618694033634904 3.1735245717956386025697710063039462 0.0482135849677289928972486938791187 1.0494146233195843243295456411732752 LT 1 -9251937590576508366653.5772194044549912471635156433756542 0.6533035255412336631699539545974303 0.0129319538786864934780162873420564 1.0130162995529201087472133681439715 GT 1 -73363.8275549283779329648518097508859613 1.1633954920606257353852348080143042 0.0955700344318232660965628595454675 1.1004504060354632059612247067976574 GT 1 -128775680673.7776294927952189812269787574722892 0.0269841648527736322949219390392012 0.0868639364979150295531467473288206 1.0908703804634156051081267491210482 GT 1 -96088428646571569040785134959621.7424999290898040984880363170488739 0.1425017790887351615917124772323080 0.0461459413183412161944008752250980 1.0472445975573397653571994439922105 GT 1 -312.0701826131469342817706751023821076 0.9265916241922779785499240582009447 0.0851780154400031514262143948284299 1.0890257850278337042585438277018325 GT 1 -9215482770324505709.6770178046247278367768429791170924 2.6910306823493215111543345287529222 0.0465817131691254044699915565436413 1.0477015557462342905291367222675802 GT 1 -139.7025704041691715052013071521989969 2.0397304311779125945617583390736906 0.0146670465434481929903735720946452 1.0147756711134683763033344623344422 GT 1 -52.3287983346505375773739462414326947 0.4994072975580569381596547337317919 0.0808002591465872989663080773997844 1.0842518343738572590286773108601073 GT 1 -4234807408965044327336761883637131926494.4888903689600182392804346136788682 1.3061709741215792390058689284759709 0.0770504367403375536148200082791339 1.0801806903280707533224514088070474 GT 1 -506071051531289592146.4435977946997495479358450886494230 0.0421009846611777910127947665080137 0.0932090805994404146751145392131798 1.0978433742933008381565563271390368 GT 1 -780011995743318956233841.0309670767722319599726796469113582 1.2685468336912445223055096227652304 0.0865145913930969597354778747692500 1.0904878763546972355134707530953493 GT 1 -56035338787193041563427632188709.9240278452722804426410251824949389 0.6677284333050847063065533205857962 0.0706786156581002467520895683695099 1.0733006534472912257306745197298879 GT 1 -3403442635929115772836.4618982306180087314434667252945879 0.4325992026136803210847145487291015 0.0145115051572279443444858644029089 1.0146178268940669589155902468805755 GT 1 -20205252.5541670516951907253088031660687780 0.3738012940085404923770163321851977 0.0151791777571559370424747328584319 1.0152955607094579718887129073396594 GT 1 -26852018763702071345.7346649128149467951830045027429601 0.6408027093088087680106735565535972 0.0552949536134075103605391805286733 1.0568825204338778939142068706735922 GT 1 -3145139057660974261.7651273563552141721202863151296481 0.8382390916742095655016706002676187 0.0185493265625086388384659495725252 1.0187235228326468005035984213350228 GT 1 -6848272978171154862.1246029614301925122071904108630913 2.7749548667469156681788395796249114 0.0894806893026158442127889772826859 1.0937401711460419086197517909905133 LT 1 -66340020366924443203.6572561994066111671253720434364431 5.8416249268648980246982199720633336 0.0993022259029916414985140483330794 1.1045855114989149687778942515860500 LT 1 -757605169716340577278.8128692295419521874681145116295968 0.0904779764591183188054210692891497 0.0759774643422706898259863835700348 1.0790188183978987840634814471829653 GT 1 -3711310371777486314882680859657231332947148.1215513097097433720101183888908996 1.7417106571131845863162733811958548 0.0706979334614160922369474769395556 1.0733214406630205760714091799383074 GT 1 -151837910669283910142477475969968.2565412476287562319074460541112125 2.0938234153539005807496103448057038 0.0958557982494928623242970716561817 1.1007664161004210010064646155074225 GT 1 -4273706787806440.3189339542546875261585780139520891 0.3268459980767059645192702874294650 0.0679469544730540011656384970474014 1.0703655501147444349579904666161015 GT 1 -17655345850783.3541717132115176243713574851965294 1.6005599073590738702967423798391476 0.0192410045480280326081709308573479 1.0194285219213111843659010613120855 GT 1 -206385172764204818927905847495960083.0947207063083428574942002471076533 1.8141804673683506183291634928907648 0.0823975780784758591408461229143921 1.0859910737616492583478284331197645 GT 1 -333497612470612824772314203360084731976.3456320150594400182866857837113337 0.0125902326184700776489457412476108 0.0344430310335715223080673940951366 1.0350501742282460051521436459437437 GT 1 -1823038.4790732566418810554828941619831796 1.4158594660390681597994870183439048 0.0564914674441725060920799428928214 1.0581498707000339146036753195402325 GT 1 -54.6030906195446295877956806618440613 1.3669067526004676504934696385754239 0.0493907573103465932617386364086144 1.0506521918433385205339167158854154 GT 1 -45970462495400.0143162499257358640903574314538934 0.7831442775366776186515475158285423 0.0269415701303066203776269030290422 1.0273111473455974033861408294519784 GT 1 -419258663138183312684150692351690766663.5909264217548770742812676105538733 1.2216957146697495020419230935179100 0.0245137365213342299355436798702538 1.0248192005366550846156968501340611 GT 1 -34356082090525077297362594990829006.0165156484596070817156418345709783 0.3379308933653452586324241239872309 0.0175234735393384818008636029098067 1.0176788271672232044490154841075873 GT 1 -310102140535881121737011841.1246077827974956668372174607763308 1.3144408167869081937728897654853609 0.0173440810927606982879902316101469 1.0174962517408198020955137489391856 GT 1 -6887255594974447607.2660505523748783402194484921928992 0.0957973269773224704547316105151538 0.0003008262715067077460846234226339 1.0003008715288061393953513336784342 GT 1 -471222374.7150503760780890232530347531430260 3.2425989781902721532903075849432288 0.0428559204004573770747497486307752 1.0438013454656565463424302395028882 LT 1 -52104.5997767883332656631076930806635756 1.2082998826686857795669580737736783 0.0186285517988481638629868344853749 1.0188042486768373156076363940051792 GT 1 -4123373421506.2694913443300139113467774275948190 2.7408466129656823874672843544686592 0.0653999714778400705888884344699993 1.0699239742583875849069076286594533 LT 2 -161709425483482585671972512708842429.8396773213660878090660313149032181 0.9368254761151855054501887315290634 0.0194495910855043734623782590886658 1.0196412232297313321638504035840461 GT 1 -133744265815115027660490.4667253805069436055753755833870630 0.1750642326192379332711299775596402 0.0152051736640810865102531145049226 1.0153219576432408823861525518109570 GT 1 -99180577551219129504.6019284007202475815609344112389582 1.9657711958308333857978241648360438 0.0723684001999644366675847311859620 1.0751206079886374008175685611293964 GT 1 -19860370512996375835584506124.5790187886187393028953741116419767 0.9626262124968221556862006573265706 0.0739848827948004318667538782082285 1.0768647191936200437630474725840136 GT 1 -375011316.8201335468877311493017325213835480 0.5142113123879163236234354289106054 0.0739750739560525971248285916548975 1.0768541267242145570329020503777030 GT 1 -41763394945065071430.7752280867592159070951528951558829 0.0494108428108563671036834219211638 0.0884556416575490652531682918534295 1.0926150208336531797972369887643807 GT 1 -6468562627646769311346909578098516360457.1414345580430487332263827206404510 0.4700961455586015900961455412081254 0.0926815286099380176347526498727986 1.0972617643782077517956014135883704 GT 1 -45961093467798448682186302782542847455.9165449898958668138014637204407032 0.8852730300306912001577097505779342 0.0904795311223652998650263469737951 1.0948377756393470433809659053844356 GT 1 -1229382338888840607592809042697188.5013282392820782222085865720826080 0.5842061447601227403985908658406764 0.0534919563985933548443636558110331 1.0549758101106480094696720895480140 GT 1 -580186183405517384754419365290456142434.5743271514500973284085413824326662 0.2725624183314963051727384557287733 0.0880520378782191313179687690860675 1.0921723496127313840452287009087946 GT 1 -22859914436465927819038823567168423186.5169180568423097507665139199642741 1.3173451631978874983500697331284611 0.0771343014464660683979756602221009 1.0802715604253348106603354571052020 GT 1 -1529877207392943.7369829689084238030581274523858642 0.9688661013567390473995762683298559 0.0125826175209444615597678449772756 1.0126624490191790706082562016399147 GT 1 -251794440812643.2729668141105195894193566401669074 0.4419896708929978473139288965035012 0.0632886405619519137804653319772165 1.0653800917582230635995428666818563 GT 1 -4138362067436946596639421348864826265887872.2331954419679460046120848181722201 1.1706821606206919426279899830957743 0.0792373928137849043270570625306894 1.0825530314496257550276675269117604 GT 1 -659658928093114422.0826124286551520643528117193989859 2.1785902387516611641966202513498060 0.0069652715568367469044873105793112 1.0069896422925595797035388602517535 GT 1 -16201892818478517881341663906875514997842.7456679069027030295189929067199137 0.6175389387560202132075387847129705 0.0501170797774505262734386115861865 1.0514165438534544844023750979793547 GT 1 -103965040758725412023254313846821101306.4353963313619311718201266833457985 1.3415895768255213279000037132522649 0.0968208345431510523911963383837578 1.1018343338874453047454380835446237 GT 1 -30257198561821590257039.4924729725826535016545473263876203 1.0885199651173630511173752774185032 0.0937786485129442667599921096253881 1.0984716854651414975906833728098052 GT 1 -820213208233686230217329897475806331784.5279596257690139101877687949507096 1.5952722844631637466509946103566022 0.0819952594510531443334180400661963 1.0855527243783058384113063595834714 GT 1 -57855546781453475191239624424830.4220341201608485051382437315062845 1.5935014248610634090927034526555877 0.0854915053996074263205477746225555 1.0893685224022385026536809147509898 GT 1 -104273838962080098516.9696190502464013246575358619981152 0.8268016177803292076727882042617467 0.0127042981802730661580989422255262 1.0127856878435430854099751290111625 GT 1 -18685315486352263443341894069351785686162664.9988820012118357018778701538762935 0.5608343471864512072098403460632589 0.0708367077678224149126283346389100 1.0734707835668410043583083243186139 GT 1 -297274819254480545.4113592397946225944150593772870410 0.8201111037158000106601329090139764 0.0470957534531131130280556368140001 1.0482408561924559803397991597739301 GT 1 -327373111404352790869963.3061632941502474120600499399253929 0.5912469330612793999681166870600367 0.0018014148300747255458079759375462 1.0018030393289938463861273119627260 GT 1 -80874290689257826709385453174765465007.1070037442867011221791927322952139 0.0757101163747396021926771663985562 0.0033793746277334899607623335561654 1.0033850976112117438650222493187302 GT 1 -3331173858976563601910004103056353650.0346895061802652425893474305576023 0.1742047409469059257899890816028257 0.0414369707107558649592051379334915 1.0423199604015115409248357337423628 GT 1 -13034978492836784707827237.5617954580420666902997339759097951 0.3721301663884326072564270298680170 0.0245055686671389004706096486179109 1.0248108274612913981140326334136889 GT 1 -5704510233099.6411940180332664650821800472441436 0.5719384525341934252665183468921730 0.0162124069874148670415876839771269 1.0163452659907386261506728008275928 GT 1 -489530275.2901269894379578838326577121426866 0.3430292736007365931644160284546069 0.0542279710850595542564825750003040 1.0557537232053031595396245504170555 GT 1 -3343613643443.7579750171925708719081207091677438 1.5405968320003657132822774148075834 0.0223979177145404284199766552966013 1.0226525605696732546814632300837560 GT 1 -2546162387237466131603330624642894.3951985059899656951909012131462764 3.3689613652020260599600928010367660 0.0272950922318425308784923224460821 1.0276745236088741845153782537171757 GT 1 -80648088204234209.5409008937627240430117147839063727 1.7105804815018428805290431501064511 0.0601953852426566673891339805530581 1.0620832819643971218019770049059143 GT 1 -132.5549742227327212590531331122955810 0.3920396419922788816375386075319709 0.0545550936865514724377691938913871 1.0560996619484064117731926175682561 GT 1 -2356975465250.1866450227516791888990164564003307 0.0370307670073348700308571918725574 0.0197650659567253551797896430540416 1.0199630074322460812312735925094820 GT 1 -72933186721293.2774491580967290933436048767371957 2.1099228731845745454400832873998533 0.0267601928332040379569487797104654 1.0271247655319820199195965021584075 GT 1 -623058349528298149758943254.3708981219361252479228224112091256 0.7307065613168424930170312984996566 0.0574744205477159298540668922995536 1.0591922200258310093484924115125245 GT 1 -494954716.9987421139396410219282625320648048 0.5714378458979929260985199713862120 0.0711249376013870788897415196034776 1.0737810353279613276495108563733249 GT 1 -32258792129813.3365587519088796318040076077947053 0.2254369174715410865213400965832172 0.0691807246883413630970278669852494 1.0716901394404618648546083469849931 GT 1 -30826403788659707825062131040860419.2759969754435605547907085797650163 0.2393795006675691917602919312268907 0.0424560596773872790001535349701172 1.0433836683039229385674393797780696 GT 1 -1.7000291284231669629764722362052845 0.9900331637707484019966907604807386 0.0503471102585070313570100733859467 1.0516587403742827060558279377402674 GT 1 -3409649789.1001686995435098727328955868250224 1.1813280153644212266575440596512266 0.0751524194179001031926535612994115 1.0781263327961378639507284166057502 GT 1 -1170544357747926101901586588.2588966823036290147579955039442193 1.2205442319877375739778180959147565 0.0011226199614349903042340258296510 1.0011232505712248338846674882473538 GT 1 -169592999315043146.0528586781634195395182222732991305 0.8100094465129500324184150085382043 0.0971333273745113406096058891887066 1.1021803858290843523343642943080278 GT 1 -1533773688148746303377091554988419468605742.3982073627394339391616339156924798 1.6504572305403852828535846255487518 0.0050374412125565395801843736757350 1.0050501718908996919900430003330639 GT 1 -30488401809582762768770942.9820700808876006288907050525246927 0.4681075627212272408147460383822896 0.0105174756518945213045283912195755 1.0105731751888505385490307110841180 GT 1 -13955490557234353620845832729751.9990884938303426333251090144595663 0.6493855768789909106495876205140937 0.0593281932785790395574255950787371 1.0611609709844282241332437941385379 GT 1 -306407161844204160734488528657713168.1600969511207168510718931306814709 0.3409012291797833859715059096357494 0.0814305326384272053727863506119726 1.0849377458732263506362067748829391 GT 1 -13322387431403490360790010266.2572069093144111773990089206271594 0.0037072411500051890577064464012401 0.0842154882361612272462280981721674 1.0879741911495472395170570640463666 GT 1 -469632262596.5720089278564044326478806890179732 0.4994165491107876934154398628665191 0.0855227944163875248550389517883872 1.0894027370128612134279977608348448 GT 1 -1068212313732904937509715940095488490726303.0971131497329986506925016843330395 1.2731598846108900395159428460053369 0.0700330097713355293555428809579515 1.0726061878425559030740411597615771 GT 1 -248323961399224761399907310935913367483.2799330269338135299484683626213553 1.0340192762347256088401941464476622 0.0097211015309448823839516309788616 1.0097686599025889230761098173886353 GT 1 -284063133654553760374123471942729994329842.0781432187424160114384773178847854 0.7674206863443603155570612070685584 0.0944816940920754315243245506088058 1.0992477855097040858801202243825064 GT 1 -38670632280898.5923025396202886975219323097930484 1.4268857757839922451462683996288781 0.0528588718605442046068852539588492 1.0543071703529956259374668189561728 GT 1 -299110454.0389558027389356853938392024702276 0.9318530320929565286622091943717910 0.0328452955457288529770946932660024 1.0333968124011508341255580122922776 GT 1 -362192804448993487378573305487078978175.5088726362524669414267430670723446 1.7834986030068433666127206341808744 0.0108918888847162989380279164735954 1.0109516397692241266026176077677280 GT 1 -1874556056083460683208929.0055806131844249360618110930454758 0.0854833295101146251738738018442383 0.0340271884161063353088399881275187 1.0346195905239952157464865326672086 GT 1 -192.6138905944215066332387765655320897 0.6565796726165398825502926740930592 0.0377661802399484924536670432940158 1.0384978019660970226290414212748859 GT 1 -2087817772802390013.9070413882742145415794893911955005 0.6722103870078410272302011905542641 0.0323781528936340078465845886641444 1.0329139218463779587541740678745171 GT 1 -1014383157518589634.9121265549126419450012589953910691 0.2499921730469093269479428358715200 0.0962087623181724682032730638329746 1.1011568770266970323335556317896471 GT 1 -1242012946548622213831491097443152324696.9915717003386280443975851959626830 3.3076083241811725868649353143373515 0.0792318079524796659184774206843141 1.0825469659943995058631821585781547 LT 1 -16345084782822537160615327822066496.0461134547827167439235523454188342 0.5562733963686090561520343338366085 0.0807382004062946562168438617768825 1.0841843227735861748159390421790172 GT 1 -7033857939937276228567222627192545992077.7263798670193283248429652324817252 1.3446784216820360481379153570865454 0.0612770303417468242804335071238990 1.0632348702909134617778409495788371 GT 1 -1018028210192621410777873815164271859.0085287054042877742122692855877052 4.1586700195555564573764927257439822 0.0273156366928150328273589570402788 1.0276956447914351528347924308348395 LT 1 -3.6138732908535998637635102945265901 0.3759983249478881205237462191695664 0.0868266024003345216168854256349915 1.0908294957192023368199053051258361 GT 1 -694433160753.2911912552729277302591219137004012 1.8121591357664714302313596657906445 0.0732860877691203512024267310370373 1.0761103778434128811570689019901236 GT 1 -407261752808480971520.7687907651770158702228354165676990 1.1783807797997158645035333635218667 0.0245114893795744623434468225121952 1.0248168969274135901872330645938817 GT 1 -2936570575296549594763939985178.8914661242100080114647861453354449 0.3374321729928227424673883340050348 0.0389543295703565235072306504085757 1.0397333472808765049049964657970901 GT 1 -96957615011341429713175300888078919170.5802061673032549072322417248079331 0.4571562994711783164907304172086991 0.0009628573694176696422755912033730 1.0009633212143428296244835151038785 GT 1 -23489763.8955608919982031737255983181789476 0.1104060117971593999204785252880637 0.0562931423262422073197112980131748 1.0579396931869772311753464633468478 GT 1 -651856735134719278333472859597973.7858924985900304108453018174735616 0.0001012255371442729406983798713389 0.0643198405055490269696266954886760 1.0664815708425164676868505860718920 GT 1 -4208186239.8567765598843908829750210573804231 0.1723698044287572798741194739042336 0.0184237037912425977844188961352559 1.0185955339935936455624035872392470 GT 1 -95116764197300016089250338828481008.2852823429837111030010094206551663 0.7695886054782253229203727789139523 0.0063367270652398178993571184003833 1.0063568893405435416588648161264951 GT 1 -1086.3470932682929310567408293933778215 0.4380968550272113005760661325279784 0.0515995879383572733725150608549600 1.0529784903101261877112085830263721 GT 1 -2475896636.5780408937517844015265895818407423 3.9559219743385758804183777442883308 0.0504783288161187226915768413604261 1.0517969252052300593542840790106340 LT 1 -3987624879068077881722501703.3846363238529527603268594535008035 1.6070129761317743814607388823588728 0.0012754778229211871240007696205201 1.0012762919370895769801681892836413 GT 1 -5651232317132827542843470786.2363513078523353515895326952758802 0.3198387892516064021419285563394267 0.0055338371338531376034475244688971 1.0055492055342720919603912515256843 GT 1 -314222548364497.6499560772373930046955720989870299 3.1170949078184868839613377410120809 0.0044310515771079083905756893330788 1.0044408977829435975482833800778580 GT 1 -551210525941.6694272136611559036917106556556540 1.5537120228521796679154369605381993 0.0262787935243438912885044582271604 1.0266302519641219337990858275314516 GT 1 -25354023890318233747.0510992833924639997058808803130180 0.6929007122283530301714973143668253 0.0341557712191852860486821471193824 1.0347527116225072804658112523026117 GT 1 -49767374244349138835.3930324777521219662534543187222589 2.0240372589025788433458748750703150 0.0864692583563993904146878293844464 1.0904382511374262694069253484584944 GT 1 -147185345231641134592346462408139230.4859560840733979814390088198620763 1.2448459395352413143769577156059329 0.0403225326202221820856758468197851 1.0411580224507150389326930801627974 GT 1 -13739094.7393508216584497109053597177993858 3.8497748441143677082005721995895415 0.0515801778595821527108879314238446 1.0529580243973044980591891151392135 LT 1 -752316885183695953.6333357201344871749085364531149279 1.4087022185918450079243605559094878 0.0649782160570949732180170959716937 1.0671854516301942539322542553055134 GT 1 -193783455716060.9481508179208503718694629007519134 0.7525152549251750665912485366906357 0.0153948960226996794668936263187618 1.0155146278635300870467617297319174 GT 1 -285682984.4598751454188545703015728286819877 2.8487255742294730184989167987056771 0.0831140864805989494339798889333090 1.0867722272034184793299272582370999 LT 1 -1627877337134837193329661275263.3705049165484312468222970626056177 0.0117903674497569949495707269824474 0.0839568405361825535001413654280221 1.0876917980994147751675429109202055 GT 1 -164712087020149310758584647985.7686543550782004357530050471155813 0.2211339986212916278449553761177780 0.0911376341510551073788113305324119 1.0955616089761507831120376886173991 GT 1 -134114836463616869.6768259664767780505253386492943707 2.2498909104294677085091864888205505 0.0388941373971710131132002765253191 1.0396707172830113273119327305858244 GT 1 -1673169337007781096587175335.5692726620672881080561408384103467 0.9322274957070490886002579742866266 0.0856082187981101249906570301112087 1.0894961547288397314995294283435969 GT 1 -724892562.6195116687885408651767095563388427 3.6463494004858797894139025979360979 0.0783434518500785791648001019718743 1.0815826322532568313299541047862285 LT 1 -1682.9480003802740589781709583156144372 0.6633967248833007101584251973585935 0.0601081615347531749122881978777181 1.0619904758011290483188427156277105 GT 1 -5498964040093314725.5266895635414937291827498913507747 5.6748465881669732384622836951010718 0.0782653401528769995648626702399747 1.0814978844288021364681157273828659 LT 1 -1853529.7076701815626512566745900273290217 0.2862556119909344541116789189541734 0.0227997289218600993445253459860972 1.0230636621956634973488038510768764 GT 1 -10759803293126660522598505907046259.2138375691423561045838198855088942 1.2210005884433390862023592186956004 0.0396313458543169750800968288001355 1.0404380534999559211567862433985945 GT 1 -1957808111404583279189512452672774269672490.2724312451515725280101688782806768 0.5235513833834589409803282117611011 0.0759061197382445676440661731310830 1.0789416104867011907757885477572785 GT 1 -6015905480145437520714852436533831.4526559515883004792108642413387646 0.2698862995137512626791000988028516 0.0975503839766248322358273908678073 1.1026424174544067237761843658540577 GT 1 -10.8727949809123596585209715458776559 3.9650529009082999338549885545263251 0.0487892921473614511512701504872969 1.0500196764647231356289239936012507 LT 1 -12258022341.6845841469516071242397737552082511 0.1185033260210823557809137269047866 0.0265566055513623553499726807631595 1.0269156022922571682320113306126346 GT 1 -460948420407241325379634126.1717973038910292452545488047284233 0.1045270273323785034943412212036961 0.0265405682053408953634557189223348 1.0268991275655213012449764827716333 GT 1 -1107810868109.2878915930527154283715716992435955 0.1558919790794021413753913037605297 0.0525363624885029132476238388183736 1.0539667200585559221435790962044332 GT 1 -43207945254953428822356765368831702865878.4687419740758518269453779246539843 0.7792763629263010143928269493807266 0.0661722990207873964633724631537458 1.0684633320971006943465347589756688 GT 1 -956967795954321083063971443579543028560.1096520355250199630791842534650281 0.9904286467916772783310710475913901 0.0672201183010604299540551674750626 1.0695860312654285847472363408386182 GT 1 -136770430780777627548717194277263314.5485222378000768815018166941069325 0.5296882528510893343517325705588157 0.0542128102650791667305076196230339 1.0557376932340167902848402927414495 GT 1 -672550744677875.6229787717667722681870258507087432 0.1832016592522838096274480593067516 0.0348763188196388146029384668233565 1.0354990188295616939766038061518512 GT 1 -444649140522004.8491503913898575846901275175867849 0.4642389714091386584551513198804116 0.0913934625155100056011698578017744 1.0958431305644159890126482323036932 GT 1 -275857318699171762895438632192806.1927471072745110548692824841785725 0.1915322254973590640681004813015982 0.0396468725613788820547408927443927 1.0404542210753029742916518280487365 GT 1 -253797122513024671546608651925463499167.8959673790969341751387166786115798 0.7180836860958458315380273476075417 0.0815929572320038176916419274570002 1.0851145849270784165743961694189002 GT 1 -3178153675416899570.6668390461365750521081892893424543 0.0172972701942714937571826939526217 0.0301049674374594327311206385893316 1.0305674271933009411751007899154310 GT 1 -6217868776714907251850859727.9562434643762330260550577992438003 1.6978475962624518855244144925832291 0.0283993860671536136660302246382433 1.0288104499761323605887301939225866 GT 1 -362186189373744724727906788869072890779.6548549938445283274576623947124744 0.7471843620751113728600068450850012 0.0860912170305545129853425687604108 1.0900245123229309664670058206183363 GT 1 -11532861118694479944232.1631296484238047057592400886278251 2.0855826139510333107246748404460124 0.0994568807733024479283490107266518 1.1047572318626531798285371361413207 GT 1 -10069491377418140337171562159875657912692.9159254966548078559152643930068377 0.0706556191110471829023151942657179 0.0201514419340804512083833023522032 1.0203572518447061021049147918829756 GT 1 -165288974314415754.5437959761049192960317432869999848 1.4205570496170220882708431704812795 0.0423504610270904722757847715387846 1.0432733936485991738126284174911399 GT 1 -490375323943185778711017045802165.9224622372061312681979583498976178 0.3626969146024894953042830071812288 0.0971460235958736629661591079651865 1.1021944480500257304591472281369784 GT 1 -285134102395982.7562779952743879262984717922832952 0.7077045932703594264715147721691280 0.0135949341002413035876742985604832 1.0136881913992874306533116366119173 GT 1 -24250697746425495826827561289612263.3030491488951331752959260066135246 1.1906594036482542903565869043142818 0.0230068732721598260764440083493680 1.0232756620430768763922863964781431 GT 1 -4731413136004567459488984679357845.6432226947886798945955968840296656 1.6514045381564597229108515935905295 0.0036413740924798520037402536906044 1.0036480200335976424550168481265518 GT 1 -1190362.1187702987355692738379877685205181 0.6813255151225424385366552035783645 0.0527431535579448777076665965648764 1.0541850014061365931629287057430105 GT 1 -1898798180278529704544937930547552193610868.8093018185974643345507814719686599 1.3892037109336827671641999292910801 0.0087237433600332751139189431008394 1.0087620179703055447951647760295282 GT 1 -276423904429594195310.0071675265299048526307478111680915 0.1212600994335747632601740162062029 0.0354359914377696406807992581071089 1.0360790843363261758094668636516987 GT 1 -702419330198432.0000346592335164476962010759607890 0.4311691352067027772562242550250112 0.0262174916647555771841171262748391 1.0265672976712573241965450509248693 GT 1 -72792403830181226903100223742539.5486948634097453606167676134906799 0.5389753438336475016180193773269239 0.0856545539166661132285556369471318 1.0895468291700602325418909406540209 GT 1 -225781413.7975263761272636728046280323852627 0.0590130068374209069163297416374309 0.0750584947016346439442558757841590 1.0780247809845685233332885132653613 GT 1 -215506178391629350316649237.8731980367299508062181434538396126 0.7237976270197365420538944981700309 0.0476115036083462543830300960581455 1.0487822429895681982209518914377087 GT 1 -564523520097684369975356.3354616405711597774368395725136686 0.4854516856594858150823251425667065 0.0918488328588128936485887691381041 1.0963444306020376723633575100858431 GT 1 -385487135729493690104294089827296.5648332462591306259875240886929250 2.0558300353826232685534319875665364 0.0929947846371699112119425446644512 1.0976070787591331351842539772821797 GT 1 -4836373795215787199465193959864844740186.4735731806195379823569971254960800 0.9664900368079855364223999213646817 0.0412678771010772679645710035897368 1.0421435727337870112709495958632449 GT 1 -2913.2994674396367918967882407082502321 0.2976293848360110599086880215043185 0.0436714615287100486092379580902289 1.0446537654793354123349187542141227 GT 1 -6279706.7483962004670691980688926589435455 2.3271514384569636841454458947185921 0.0885748278555410431714128177416518 1.0927457813276368254197258771720198 GT 1 -25754685987849364.6362759061517537562900124992604022 1.2470769092292309885640288455385114 0.0203213460155257648997741043547331 1.0205306651872983829772093376427936 GT 1 -336226140558052446566199765570.5768839743794398403902720232244181 0.8179854254420971231273077847625631 0.0269840878443105813529492104539709 1.0273548432241078569623085749595247 GT 1 -1809.2550004877169791536234525166467428 1.2901713225135410686360155977481574 0.0677738117450989733305277620925497 1.0701798024806825459408269652984785 GT 1 -3878228530578.6296639967673727644557880872774432 0.1051078852428535208371375851044502 0.0786120073117314876214288696197757 1.0818740581603393086214700633983051 GT 1 -5064052726.6977828374997830238525956166321161 0.1568729518169586042043793015899691 0.0336283470171495677241474487032010 1.0342067848240445863688584924535280 GT 1 -197194961509545218422.4357261575871083969310136812054706 0.8633884143799427238925298132064348 0.0365893311334038552529931736918479 1.0372755106656906058577661411386562 GT 1 -10752559081490198808816.5085823196261660233357557768475802 1.0634434821960318053547654690422398 0.0791814556155835099267753428560547 1.0824922823502218107881671395337010 GT 1 -16262252457989365461334336220419825173872.1440149444372951818944651296111251 1.9386158589534048940544325268499652 0.0151561100642768259825412450024376 1.0152721377453996358334695674257628 GT 1 -86035169164710726737552777.4566040026571266151321039930479333 0.0085995080537965790921089087358792 0.0590674814107612102855050654214495 1.0608838544132349669478916744950532 GT 1 -24705588445986512483392098.8138018883009089934900962099131742 0.1132341003479804207826424806555797 0.0051777695627881466831551504873943 1.0051912206628313918688603649522869 GT 1 -174939102601.3117546868452822188165083054678474 1.1908868968317262224979125669748207 0.0687008459454202431962537354115286 1.0711747278039337566077324513001847 GT 1 -31653.1888394783735729635589437495776934 0.2459287248063588900416645146699081 0.0527536243822199283944668166961748 1.0541960553058114353086626221182611 GT 1 -1348651853038347557588719040326643035.6300023455736010718175048533978984 0.6932542490112441953808884558818905 0.0254542130528646884101815787580652 1.0257837760719585648477703550062265 GT 1 -40271429189164864072365592951738.6436380554706601392302271391563862 0.0006625306804652031332590740391102 0.0422085108747622750495319459053562 1.0431251769710760803905005156291926 GT 1 -341401697185085934363400.5521052436727433839067125324483142 0.3675799042871167352731488075501559 0.0688057254433625046801469494275580 1.0712873504810847006192507167034986 GT 1 -2012097867302142245739.4969242257754406355382006825367128 0.6240715323994074642422752922945550 0.0984321794881830858696777013446871 1.1036200084287803770359021467904519 GT 1 -752937245910451766650211864488988917.7929574688480324623193357812371534 0.1664592395053987072917539549462055 0.0089209491417353972135603907559580 1.0089609790562488517191784640245982 GT 1 -71543.7026264893592895268590036096495072 0.9617088602346083642932113323683356 0.0631224199207629535050401809185427 1.0652026562086004398107290607888816 GT 1 -20064.9265415063768461164948288508950428 0.6656299677094143981002682647045593 0.0454575086204437498080977461102648 1.0465231199087474193976799079662653 GT 1 -3190.8092538445494297469504507655474236 0.7434461486410023816226415488393156 0.0101261898736860183393835542133962 1.0101778084966683731658052219172371 GT 1 -9136515624549666764938915269059.2422705718921106026861930730937737 0.2481193746577773222555516477770001 0.0745988324368698787078046670516484 1.0775279408252162519888464833438761 GT 1 -18682503954168748986467930713.3185678286428804537696353040545476 0.9240562526146826326438091216964157 0.0758336710653242803938556495143391 1.0788632138706869426929979620970133 GT 1 -272139091956821368035833322845.6573279807076373333717502193674777 1.7354777346193174636823805968296474 0.0320655398781159355603721004903134 1.0325909004834045584699558221293009 GT 1 -3016993186497080200944043546510687.3981534938298011704542669756751848 1.7416211813558086516006382640188231 0.0586088274024822754987273081046378 1.0603965269471849210251253587731713 GT 1 -2149577859087525638542.0267537118760281860149256612174914 0.7360154369812852379924895380690868 0.0343152852667870832046848277598375 1.0349178803076570161237251324558744 GT 1 -248235627659971452452.4784186668699648483800086994818442 0.7540819034221599266951534398114749 0.0721563042501741521111361869043241 1.0748919916861484965262620986954532 GT 1 -30613685703436.0021511729030527993689541935963609 0.9170079001546781907551366168718575 0.0771987155289376480571828064213707 1.0803413607556112653316145922295916 GT 1 -37611726585657447391.0289370447237296682615986969285081 0.0410835910860022671382763852211481 0.0521261479682835731061336856982574 1.0535338530584698391443395677926298 GT 1 -529849030311102.7243325900832395858121206362979677 2.5928887040756764124029315467340086 0.0553726445587369397404345626710579 1.0569647621244327758825467717339678 GT 1 -810284477849.3381607191190838690290573722241831 0.1175335111409635114896069674195255 0.0897940052723590381006416994947839 1.0940843372560007660384345490979260 GT 1 -12189141147769493213202421349695312475453248.5747095448129818859382842308343347 0.3243031499959400329272987608577642 0.0973138976974218699894513151950366 1.1023804024954703290008641196716014 GT 1 -13787231615556667446801254265.4134459375690622867614793468643459 0.6051618473781434538367522514118791 0.0240696244964838035684660806005818 1.0243640316878851867003417869871522 GT 1 -141700.2742928589152336767539877540484330 0.8963827654894775285930445528591423 0.0546096996392707783344482854155888 1.0561574205013905546075304779078591 GT 1 -207915551443003703742999758764938229438.8884966302466467198903839101127352 0.0897572121735856287748104166477315 0.0466734886667104830800845094662479 1.0477978198060542653688660313892920 GT 1 -32504947987839218977.3910420563377298938047469123683492 0.7687162020754343376445076201207769 0.0149153667990113890237910279227248 1.0150277194696739681577827031937192 GT 1 -3446178748119666867664256.3452599716896955144797664651684912 0.0255516346964569057752312640823935 0.0245715622118955891421081290818114 1.0248784811300513473655119298943927 GT 1 -8728.5848281583866720882958377107572726 1.0029552945769958667380265164254719 0.0211422572691253190640833689463430 1.0213689557629033308724964219957928 GT 1 -9582341.2597469289311836666372975487746102 0.5298456777916315986025647726450303 0.0909805116398635027209899242273758 1.0953887456943934298010285009820312 GT 1 -3988608610904925281486440231604587784736.2731227360371681979999460731505465 1.2346058211968301423038738614418096 0.0511174899873882233296285282133454 1.0524702920274812821729072184505764 GT 1 -95244753193732594983310610406767.6259081278102410738426864659432220 0.5259413421267112064633811138831035 0.0856295793331316580843089222164482 1.0895195153768241187511056923479430 GT 1 -54278316671674090852717707274470898170.3137448340900878044053002685141251 0.4825613794142434361373424614415003 0.0452215627762100508879310399292614 1.0462759683252707404401649196423098 GT 1 -2514.4563440536520022055380022792991688 2.8141148295525960570672312389871024 0.0551665369194245886943262101357442 1.0567465965630097152446471921114549 GT 1 -76936887818219948256077133065.1695336385425411299580830044571330 0.6677013176433625487583361312658281 0.0211913404177975031064001251790479 1.0214191003111516685900012055414078 GT 1 -300157107194866173314983.6235569912623530851962454015977636 2.4783757025816017987824716868104460 0.0117700747081917638713477034272426 1.0118398904021923692781492387192158 GT 1 -4450935255640262467390260660529.1455572933320803407322786959096543 0.5490783308669957220883880650088299 0.0687294439001851283515090276822934 1.0712054358677567872770172655552254 GT 1 -359659723927747762186.0576728676877626747162473300102431 0.8189401051590694755005278398817631 0.0856778223577103041322319481342553 1.0895722776886904698682901186671625 GT 1 -14845557444531506533170280.4116917601169383057314156879224218 0.1639046693759777414957437791587196 0.0445538776437768043561988606972550 1.0455769037506104323506013802963800 GT 1 -24783564632659927.3864865156802888583861341673936477 0.1976634758687846271218792180181944 0.0707421827745218386613601493894039 1.0733690574371699146738485821928363 GT 1 -24.5435149449820025972418489740001504 3.0725761682204408705703323662777075 0.0950763510393365445989857850423377 1.0999047046305264562478703625822303 LT 1 -578484480681121091036345444365.0030301261915216070629741121408068 0.2739862590261037347449763428563388 0.0488499144647504054932046962543830 1.0500834102397464460243085382241817 GT 1 -301571536737128002094385354037646096.0068192092326324887145216398501244 0.1763524851750802333785167048723187 0.0571908362669267610014744815829946 1.0588913882674890051441151771101007 GT 1 -277617002554407542351888628671.2217349330852492133655998393999385 0.7114992895230351544726547002658736 0.0866689083514027742381647078307278 1.0906568226704889808828593516628206 GT 1 -1259991072165836840044435737613050.4116884510253567353874108345547406 0.6247386520598474849405829373584551 0.0758454739746028830524360010622585 1.0788759853646048837481258788562855 GT 1 -367258343327239941623614.9563933322698871472938376608117817 1.1729354678714054284465704517713809 0.0013728415529509300496510267295155 1.0013737847632667256235179928525161 GT 1 -332060495175811302.5599470248084434325752844844822947 0.0488077230020366764619954148209358 0.0893054836636194124670028487754824 1.0935477657986453338389629580256033 GT 1 -14.7257448622689134576213861919869288 0.2284749110711089077621334808618024 0.0271923253265055317921151249280801 1.0275688785399498750092488633845414 GT 1 -20076076172966.7771883696224680708045859114620237 0.4327196929595911998080006905632712 0.0508800110753099167072198255805055 1.0522200511416547082674623349407488 GT 1 -282495800.0809951708846180083519759923479950 1.0423439409854993286577964033136139 0.0092871975818457451868383371479819 1.0093305924883299270777741717339152 GT 1 -264368628775065581046990449103863.1346463307516357635469729156444971 0.6120444175130043191846994387006459 0.0823795660333130163693631051784445 1.0859714444887185835045447824993615 GT 1 -715.4201031562140167394642434421458519 2.1640624245937947903345032880999717 0.0178315337497000873278904787894208 1.0179924311150400217154375635610438 GT 1 -2417683065845328062534167143138461335.4937640765288032607176960143814511 0.1090642021304645378465783486554176 0.0784124113896894465723653141009506 1.0816574563509091880083460193421586 GT 1 -144252.6076641449886149095386127399265992 3.3742754368122039265929420269247784 0.0534261906913451145674154871630241 1.0549063300644750438991549329723541 LT 1 -270488286939601170196.2644119541845970023806013181683757 1.3892935727784582697571624161591878 0.0859019297587435333172609758733972 1.0898174154270358040310491255850941 GT 1 -859389256492840854168.6330743936859393491681887509470554 0.6713411133048243988732442162512078 0.0604505800111400740021694605614913 1.0623548590758234333367499028136701 GT 1 -200279204405967297980109652805009.6015420721587975135645337468950858 0.3806459768693410438876273519464383 0.0274826704525223470055789018843511 1.0278673840622073592186597121762578 GT 1 -14172.4259354562930240896098167564389872 1.2545907253939289973316929201909784 0.0617144331187499796077158693649788 1.0637009340049625330365029721826827 GT 1 -172.1183686018662676584795359039990701 2.4484770259517094812322087906942707 0.0425294045772993053162998447588095 1.0434602681401945141111418735379083 GT 1 -38025852764154652012686033758999116.1956878141458406651658203793850945 0.2046490292518345210362777045103999 0.0221813508152279679272289040852057 1.0224310564230591388277167985806395 GT 1 -579091121324140233.6638997094271419475505178310586803 0.1135339943433712187539370171368878 0.0060117551926766727125052127638107 1.0060298985450665918250059684120742 GT 1 -9844808627.1882867686611699409939529470881971 0.7049787251145902789118047932285276 0.0004251462925423732840779605240086 1.0004252366928505497631314527974234 GT 1 -12359390726600751220494250.6048362125208556912699965816761618 1.6188964562745884657879855286534546 0.0144926412842898876206883903345287 1.0145986854302180366411237303122001 GT 1 -6706560564.0922249502892783686917853534297785 1.7501710351275203077757998910713186 0.0099034521733950317065102179560878 1.0099528175513888963296713545052794 GT 1 -11962.4118150313719963896062011055152278 0.1835748200583914366235845996769069 0.0331520914469558778192958916023928 1.0337140776434385910190597453225161 GT 1 -124313000596.4442452992425236894126455149818262 3.8707632723855754791943353282972907 0.0770639408344897595164366288761615 1.0801953218891906723197763297479702 LT 1 -612951513.8690720639224091470841441629281565 0.8307653294050859160807239740549249 0.0820955338159378606714720408023373 1.0856619611146506228598795187294736 GT 1 -12676837858902.7324226394605030415425863859798602 1.9992334035512805333163654826371902 0.0297842314832640289454406235758331 1.0302367904513799111043717077573093 GT 1 -726618716574543033819388750884573739233679.7856638313946316759922997106734056 0.1943988368884561511570543083617116 0.0492751895702901376223613301708206 1.0505306269452511223645015701717845 GT 1 -59191153123499221020.1069186721516586443490539198115473 0.2821089882697646021944057665686688 0.0644138279360266029723876661782847 1.0665820241333939197524456464667356 GT 1 -2245185984446422123058693009063780761926713.6758936352768100235027605626810911 4.0907762994980146484983164325351134 0.0009489745337026583275270955124368 1.0009494250951055512128131835905718 GT 1 -319021748.5997261468875285035471279106063674 0.5378452491722571744610732371168095 0.0869858341479660505900567071587139 1.0910038827878932375100511742054295 GT 1 -131241696.1343319763319275816249085877035992 1.6491674054393862200878096933707106 0.0264338386480697196877828023625933 1.0267894941248990925960913068281915 GT 1 -5592539972.5724885713897132052421197188419040 0.3050198107724174495926066591758358 0.0797118428624777073306272009456844 1.0830684437004880603469660378427515 GT 1 -168073634112493445775760778122330800.9191775505857530104147170691122776 2.5158912407666601395079923285854973 0.0818198907778239323319092766536624 1.0890050209798618354637675306749416 LT 2 -13003420843479017692334991493916299112119.9930889265144611455920969591019227 0.5764393375070997839162760878369522 0.0499166837969388683963172032422069 1.0512055969667016202402440200942308 GT 1 -277908035074976375304082028150808797.8779357714976111220111216698612298 0.7873138289781450082647241955666217 0.0411485118917438652799448367919685 1.0420190772919169388052278753144504 GT 1 -213881675241701741824.5243380571416127626124759806141678 0.1422305213735372541018641591274761 0.0376604163288564802788639198348404 1.0383878930262665942807588510073449 GT 1 -21627088760278620523345144356.7381003170210439933763272217329145 0.4895615990107758684566605844910337 0.0917902226584102866488852962618175 1.0962798947501730103669855994571637 GT 1 -12727987292537640650568280231770493.3294081244885975611897769536178972 1.7984439606506391693598453202670341 0.0081993922183841423623180904929855 1.0082331921206610970915863101819890 GT 1 -2611349086325965624913285169562899.5131893727244584783419724601896172 0.8421207998126587875817542903491060 0.0388416252649476704455956146339365 1.0396160815766225649716997910018513 GT 1 -594342323027130427.8039795082288688318321284492951837 0.6461373950594755521605046949685080 0.0349294170173178982653250825756765 1.0355540373307336492167144879599781 GT 1 -192060585072777134425127826758939107.7657197346805737288039755815868237 0.1204151907753144331907544958412250 0.0751234175511910272857244850087740 1.0780949747512022009541748153016832 GT 1 -6605500499460834119509907158.5195570693383970203366842796878007 0.8227979748069945683315669797293521 0.0908120530307036581418944830072241 1.0952034438345851736623475320900272 GT 1 -146.5949774528361059520655152616774554 1.2570502453679692138260290279737406 0.0566848229146795115343818574475877 1.0583548241042081907391270396425506 GT 1 -33070019269354.0222655423727465151029001880592976 0.1025948670760159274552230234628919 0.0784396950612994208325868678655914 1.0816870618662424496520541950843096 GT 1 -6427444908330839426927326.6492576914725200665430056758973447 0.0971729124551700293723491390626571 0.0418800758036040408258804911886307 1.0427823270124696837124279002140145 GT 1 -2669982063311769917046829856237324.6777464974441729718498289887767357 1.7183034187810585391716394862943562 0.0726262406783357628277173109100273 1.0753986023122267603731654219336933 GT 1 -7381075163.2849142347392502231785291525528648 0.0947652487148646211114456396384666 0.0890513736016934195323770286799299 1.0932687758498315969219588459194046 GT 1 -5510084.5075047373446025463739885262119859 0.1267869300298115716404823603539336 0.0776518742950468026362714475098168 1.0808325500031822170601585069079233 GT 1 -2424546.9638437669519470071252167869008519 0.4418350626540811350519474376580071 0.0944293034236778891102934588771783 1.0991899300775963401447971547504225 GT 1 -18339236315828189273041417296350723261882.0918122937305405328398737998569328 0.7862757459788573982719828801162787 0.0814981849549602837970600395246622 1.0850113982319688319887060846481192 GT 1 -21588125090949.4884590383135341118931817394980857 3.4114527098580049559546741542446605 0.0597210938348754333975104915876309 1.0615787390411019225357972246013158 LT 1 -46945122662270182850986889686.4476233833565772737358797985919381 0.6597822137012975090425414195298224 0.0234999696587081031412387331892357 1.0237804975939324338064875965199019 GT 1 -27817543105450203791074780762.9449121628481372437637081484617542 0.3012665027675875230406735511187106 0.0222907196484080250149855494116824 1.0225429124918395224147162598037553 GT 1 -32157323364565670970689.9168983088147064824086011400535519 1.4348830240269961483957584111225063 0.0299942083256151484089646593057928 1.0304532367041987927962858734192011 GT 1 -621742495950712268238662324145620755255649.9950476040068538796856181729788137 1.3305536706554137475905637824771617 0.0965373418034655036995270701739018 1.1015204999682912818758035129121371 GT 1 -3294460997969445138978525702107782.8572949494607728190144646924655332 4.1670576410257916030157415354412943 0.0067143255441345659565843650806090 1.0067369680375189042277748262635056 GT 1 -15671299304599839.3638359245357706063412590411288699 1.7622671882744012101340848292132638 0.0797865461104941602638883243532204 1.0831496207531023094889258419214298 GT 1 -1951883189288213268.8744263305339892418288245983840189 1.2440395655852881720756414905090001 0.0341784916902363684370206478276044 1.0347762358488947620879264608007967 GT 1 -42044592582528307996933108074512841.2995156611650434810285509858466732 1.1349902966177886691547056418013695 0.0761884485439285882329405875812673 1.0792471767814204360865878941047433 GT 1 -875587199151483738290492152950060639.8193772438299561538387680362254143 3.3916741138518064583014954140954045 0.0607124899904407786429278431402392 1.0626336591960631777634224388674548 LT 1 -1630614287678297779426673107935.1966529792839652441952130987545980 2.5147356357505127153446969037257526 0.0618396412674327003024235422898071 1.0638343864505240411341068501391359 GT 1 -36770580830628734386139887666577.2466392087958081733520214648959725 0.0363893257148130617062385715443743 0.0549933170695420315270687891113226 1.0565632796293174461884444333110507 GT 1 -1753895964921555244761249.0209068993935301149773698849310385 0.5560564698225234802074699396399799 0.0914161407998919737171704849512808 1.0958680902873206678302057466953270 GT 1 -1227617512931939459631887201.8399824133942002138944447458953668 1.6066563249738380677828096349899652 0.0598359208664704969755631279079012 1.0617008666808501157901878321139069 GT 1 -320945.1018286509685236513413612466927784 0.7379303910616171616516504703675619 0.0100516734706003300134626001915293 1.0101025326405788485594323416859741 GT 1 -225192214289677101749.4459934561151353517366617546721396 4.5367798294922196758627337672483074 0.0639148727170843504997904078883769 1.0660488586882262749300303609305455 LT 1 -1490717171026697715529788931.5572611759667995606069109148782970 0.6953498582786524740586600569394463 0.0888936781377546379198706021580385 1.0930956795724848888918062099904638 GT 1 -25330553955408857215437015043771397307869870.6553655926388980818027578878421521 0.0650895550109678990607079807326832 0.0054121444083482614128800221578926 1.0054268431202527205071679898993825 GT 1 -173891755187465.5189595593458985817559494687302114 0.0165199222917431376220872922982512 0.0242814150563583105504590687473802 1.0245810692443291011410213421086040 GT 1 -651804680084733437.0734686799505918416647521512931598 0.6922789055471549877054108815779337 0.0917192676741568660491623073587738 1.0962017715957586236236354507791402 GT 1 -118675370271288109692662302807364056229.4241272029468784951611723068518023 2.3618968337670158708974097264620222 0.0896787151895806780047780183039188 1.0983717045123385766272123232249306 GT 2 -13305562825176100658212.3540555631777333932338516806124034 0.5704571923352189331632844910553691 0.0712306030308455171920323657074818 1.0738947981409038651575255925025144 GT 1 -16469019620757638.4218440891704513742524537044742501 0.4099043671170247004835222784065528 0.0334683181579222142598062668719551 1.0340412008998930066400989474870268 GT 1 -54096226910.8854743876118387207850853717465581 0.6399043825893700613372550838486876 0.0462806286147698433649046452414261 1.0473858107809352763751955900763800 GT 1 -4401649531497047631953265002965856.5077000988518602378880809680932554 0.0751993742147051578938905480697832 0.0602995257261602025670903389736983 1.0621940988855301096802226907802245 GT 1 -279.4466506622986170793283041309784326 1.0421305593158756528744495458392879 0.0990261972832521713863198743229445 1.1042790975825814414625766450825228 GT 1 -5204475583090092760740058017277164900514561.4142260912120013105929319906998680 5.6187028650918321746884534686659968 0.0403401451141457012928839231742705 1.0411763751328826772390950556054760 LT 1 -31133063764.9353829430855977892876051486327137 1.0248985445359906103353805627539811 0.0133486001294766049464935403054951 1.0134384935560496602176238835797574 GT 1 -2967200805844999359681453378943381465305834.9273699357501281967596742731832619 0.0548162006356032226939741101785106 0.0692505221212190560332145447911847 1.0717651271977399969116537309990581 GT 1 -15180618863956264410718754677.3568072910305510880461783210095838 1.0130758421647121160510249380092838 0.0800948986405261181162723172587979 1.0834847649556740372925999174730287 GT 1 -94541550580225423383503341761279.0988629562079811797630359608121864 0.2838423169802727532363181779713014 0.0354207166348122342812979394344279 1.0360632484955966212242549388843518 GT 1 -424019437787109583521669106336856588936.2656775798363592769474039914885981 1.9195832438747174679987920419288935 0.0804062154185559627854179717138598 1.0838232449443073187991837500334571 GT 1 -5223824296630385396823765.0113642407444304581597785220981607 0.2779656245644464104712130214118119 0.0834928862998085348314132435669858 1.0871854499210527337427486856531311 GT 1 -1951929055052672.1480511544339259883725522233595289 0.4921809916628427583994117387931108 0.0997142592784152361484158664580908 1.1050430763563633153025952797865811 GT 1 -49438376938698706523242164947144748688469.2157679568404193179449782005327641 0.1548558240487601164139073191648093 0.0488746703384201758479654100358803 1.0501094378837704386276347522744163 GT 1 -230147762859136541255630739841783.0356939066474987276544185070675498 1.6504789066230626763022485118242267 0.0638530418129209169446778513455939 1.0659828082186656159197209047291404 GT 1 -7873.5131524391648068339819770641427219 4.9766487747803917727291789112104512 0.0774616529597712455427516191031153 1.0806263353241113715580174194135197 LT 1 -12834845205582.2878912660512163001842532521533735 4.0361228522791775100228358593470721 0.0656124970688194826134676284840640 1.0678640414291406475788974721404902 LT 1 -1234936637954088436.6190022103722627342476595789470839 0.0832325323902452080729492004787990 0.0517092891060120576151041326308125 1.0530941666756127958589253347853787 GT 1 -12106909561310684724931603901.1260707178323564241236408503906321 0.4848610819761652664645877956231353 0.0207924231683004723526406888006557 1.0210116294765409393532219487563810 GT 1 -6954764384584861562533896322072039738.3119777057623277254064425619248912 0.2643136705809753776601393397735799 0.0853606590328785299034242255764919 1.0892254542866845890830896298244298 GT 1 -674581582481684387350999735004386971.5151251691666113436187725293196399 1.7209230970713506499508691193772409 0.0417753274184796157408822079425428 1.0426730059797025422766182718056291 GT 1 -3049590790.2645151869378947810843167065596208 1.2510038928165994269824704436197857 0.0109992911410672639785931820150714 1.0110602306165748859382959848991125 GT 1 -7032804271242038090.3946399887084441072435091408866990 0.3266891649743196224632678277127527 0.0177168355375026351780554820801756 1.0178756573441468482101971425066386 GT 1 -12819628361776.5609669200310716855705558173117178 0.3967079720262501199418601787173056 0.0619614270885754072122564459447304 1.0639642083145702371003706388918167 GT 1 -112929569998061816393202449254537.6809135745067762449473439804961377 1.6555221582707364980633215475793979 0.0905047114286673537063736380821918 1.0948654612778034971127368325781555 GT 1 -2.8203295592355167063968186398321766 0.0076369133486336658001189202531353 0.0326230512033947969965163126651819 1.0331670468732120000139071704178166 GT 1 -213725170354866706425345.4656437134852317126763030484515220 1.4968517979181941950043574776685215 0.0469005585172351162094592865284164 1.0480360350393949618594837807088231 GT 1 -1514359273146728356808803314582726.5885110793114156609346387118793617 0.0323747480291556388714449585361245 0.0825330190498745344926509572186388 1.0861386877662560209485148487459718 GT 1 -6645928.5728974823866626672179906188943788 0.7465325523543814159447620345464497 0.0723121716321827809073170232532981 1.0750599946333895691605234388355418 GT 1 -613639.5532328562679852420243847090484166 0.6981483280866875417598425247608528 0.0679827603675547786314098168213573 1.0704039670079165929041704066917910 GT 1 -2908355239534.3906957191676404663391885706117001 1.0631028694117373072559842425968370 0.0046668094734482015227472352364376 1.0046777330274591190588063143218308 GT 1 -474412648916453335177004858282069183.5734577897101274700923460477831121 1.3328036699234666203240400867079119 0.0272935235245805235996767671429482 1.0276729108833861843819900564408860 GT 1 -324176222479459025830813655.2423435845871751461363015399390110 0.1139815942641012477786888604536100 0.0189756076005125069691033403626468 1.0191579548946169138646237705666487 GT 1 -5839.4413312468361392234611474956304467 0.9532274269664856631020128088273989 0.0805324612027002813948737149953067 1.0839605386633777465041341091819856 GT 1 -34911164411388625279931050752266369418.0395177529446434806120470633871680 1.6681726882323024968185403697953900 0.0148907648884974213570359034599415 1.0150027453684843036394412519466051 GT 1 -2727065.1506888419951491207101337378620470 1.5351688451768027486354193673953831 0.0884939877712130850197309068241420 1.0926570889128337451642146122548067 GT 1 -72142626383264032041634698410589890580225.1147595226344045743113789358490411 0.6706836134242572443170609825290794 0.0736176132947635888747541033989296 1.0764681849680297282893840828730741 GT 1 -7817220892127325625579886190457647095745283.3968323448923970112242449744759021 1.0253168463871610913336085224647603 0.0324425528588221715094052750394432 1.0329804789508316603639296822749298 GT 1 -707917856371803.2421470173885889213855460550569462 0.2867198855293176881406940314425722 0.0280433338288743324538074234760849 1.0284440576439821388470539652706823 GT 1 -16138428610.2605423306977856072597911328433228 0.6359019866423580097065593490771627 0.0212374560038331125363725018514945 1.0214662154157872931312234505414834 GT 1 -31484911587923762357640814271762.3315033983934505603786984573791825 0.1616758738204932381222928306289929 0.0028992023849562757668752991524519 1.0029034132128549579019849328251011 GT 1 -521333297980049035985630549798465510927530.8214129819510256283377759073572405 0.8050274720507229632190073877017019 0.0934813642531588867593756374998970 1.0981436910869690667404137913256737 GT 1 -40070035430334929781.9467564245162230189197796827028365 1.0126348046227406369368975055597067 0.0516214068429600116313844813554348 1.0530014965797481831282442914218940 GT 1 -5588425723432790252631504178678394009167.2736757133918525936898437307665323 1.4312810281968805436065582973705779 0.0840501439686163213331322154595712 1.0877936581302394226589113439039475 GT 1 -139632753979814138574435752299197190761.0906299898969600252781599542538365 0.9333093580007955259497495005616843 0.0747420314223860253184642076380611 1.0776826954021185706875189509632911 GT 1 -254069396.3575354505174019618209167134241223 0.2998560979428640969078766317216825 0.0891389256238277007270054528907609 1.0933648912917072914796169724865302 GT 1 -16577848750864900954155091975674465376726811.9240767351467894944584047211957335 0.6840571804053088494289898886004045 0.0334850936572573118754096492962306 1.0340585574389832221190390162592361 GT 1 -8603439102360980723516672535710.7632779399351992853697616550003279 0.1151160079672788081469394329283107 0.0559333500363796940545728697822552 1.0575585115539440656671560548507154 GT 1 -1872261015174471.9665393550728382796499541619004807 0.5800130793858007501764647215874775 0.0926843617132904605221017861431367 1.0972648868846539133645139518986258 GT 1 -82606339859392554897.5963203152241996728761750922914893 0.2989484452396777868898886539796447 0.0350442846464490299819465981029343 1.0356730695215030489390426641287120 GT 1 -3985731889708762806.1696084412564336476449475690752924 1.8824444872380482754134473754930489 0.0267524333112816316746547988920481 1.0271167926860990510769344535101352 GT 1 -518221391.7871447208883550194064195344259279 7.5416467505368356771374801286106137 0.0825939201083544183837291310180553 1.0862050695338038079769176225071824 LT 1 -1040395609979812119067315278779387348317888.9000663581473708855229302401631826 1.4681514090944217712744757156896768 0.0475254592868839713225578501506801 1.0486919012486191114483975504381361 GT 1 -792355876.8143353264302545145727393712870632 0.9214297340548963481175377734616445 0.0705476171938354399698359985797163 1.0731597019589531032683729629294944 GT 1 -64097608773881150834776012145.4484826395632701796795645683819435 0.7459854903209686464075047261079971 0.0769154602505017097180265376704550 1.0800344563122891862003280234820714 GT 1 -1374640842999589477990583648596678956974157.0498284537754782184767470614182211 0.0784860512472047077845726574860054 0.0222891896454252378032529773543196 1.0225413476076593307410331357445618 GT 1 -8501315654995183773480077764343242170381043.3127591062308024200300776930274825 2.0133887491393090619012234521480403 0.0379121714080150363115760788939482 1.0386495345711650603395366530392913 GT 1 -630339773686869937604339189126436324977.2400082822579412964936914411367217 1.2049001008470782332275534683279979 0.0670720641339136869082826107921601 1.0694273202753543170009792973164511 GT 1 -422.0045012463494628871407145940144409 0.3593482640076842903198712201665088 0.0535724377433466081200050427980292 1.0550608434784526854628010855597522 GT 1 -15658948399221318.7215249943819282720811580710279783 0.1401569533254321587802734660497800 0.0599487429223798351881032001579401 1.0618208763987498708662409075259640 GT 1 -5607357052680121393585.6321224263432152806141341912868912 0.1176624245814233000984013792995676 0.0161846291890869126572804657549166 1.0163170308245587366274437581164377 GT 1 -44078524422194780604482606913069.9713932137003809906469258694104840 0.9331927171784770822318770023868038 0.0405890230020283683752900967207126 1.0414357484557877225960418374461898 GT 1 -3984141088397446.4379401003161247205535200073738208 1.6533332321487926432845867755385510 0.0178078052185816938491015516953493 1.0179682720778629231537426049574066 GT 1 -37683360739434592219034247533.5419781712602729025672534955808742 0.3682245824299312342932643778651959 0.0987942838062857118952549986421653 1.1040217275749733026871767551573992 GT 1 -154437115656211079012043582830891004146200.7973783760611571808622772526562738 1.4614998421169642298079217054001477 0.0113432220623124152335366643025127 1.0114080470883437524061325361707578 GT 1 -9766962543413644047726555648.3194879638764609964736530819126098 0.0741308480257843821412402406244942 0.0156916531989355610855858535913686 1.0158160704468652769270199881545648 GT 1 -5140990684057161.0214925325110591701173504038119173 1.1212696858594341147867436946483184 0.0716141648963513502140405622005108 1.0743078620187482604259506580345669 GT 1 -62265.1580158923075158149029684246798951 1.7282248127928622980395869893172145 0.0511099827360354445383074306218697 1.0524623803823869237555405422649133 GT 1 -1250916325843731.8170450672056575353136048842682833 3.0645425050444288991650354014815474 0.0154869156644228741364527156093299 1.0156080906554908084527655827430194 GT 1 -79490615.1848186241557929184378474214405217 0.1685609685281752800348226315074493 0.0917415242961513679908672883429999 1.0962262760181209201919606982764975 GT 1 -4215.6621113788276864556873770287271405 1.6302473352645397366448325704603734 0.0159059762653762868491305128385447 1.0160338339189031093444934570018261 GT 1 -307365052299786529356705165937092953056.7475346826440615145800317691403995 0.5015206001350352872524959634002761 0.0813627966822901784497473185274670 1.0848640078912684752840136600030854 GT 1 -30060684558514305893085291.5610019811137257074382204967757518 2.6067227032744874662087547816371851 0.0229834244420327416118884880442002 1.0232516613125781694996414048263413 GT 1 -45523150136092984520454681831595685052397.0688046269718588766839158725122395 0.5235818789703846459456633135113628 0.0621714260397586206051574977619060 1.0641881036500268853292059278743992 GT 1 -7377114866532199621772665792365778648260627.5248324563084263198597690800104192 3.7777757697214591962738430768524509 0.0748729092467126684209460026681268 1.0778241554986373111875944535893448 LT 1 -268253753405942704457272655983.3770854403144700311222164645697252 0.2992199990384334048900156911207355 0.0224130934478953709395320491188119 1.0226680841159308160409337701176243 GT 1 -4834025619949448079778679990641625948935059.9699945738486007174423195373980494 1.4722156559145885653826011251332859 0.0046267251284950336697958465224722 1.0046374615503173898204216654407216 GT 1 -15208085879446022522540649.4455439086597090139370833516829854 0.3761476094442292292793850946288123 0.0539568331003301703384045842873489 1.0554670799991530769474236518382715 GT 1 -2177582091153028434111206491873926541.1054987368247519355782037231408980 0.7649664557923214563809013679216838 0.0287694892686306313491294503197122 1.0291914436726564280368022890286616 GT 1 -6879205733807071357421.1196384097358298167181086262833960 1.2598347327036190099204006330954949 0.0951116269008736145677944160804981 1.0999436875316361405261572105755901 GT 1 -3301995754.7068518202025618825482655126597087 1.0483560945273874459867187425189462 0.0480608718735638982219724408062407 1.0492541872787469717895618818150044 GT 1 -347655644197018477607998954497491684979.2322569026781622811615748701453996 0.7112535500987041611377148715086165 0.0525278832019266852853150941821269 1.0539577706400260321656677817605486 GT 1 -194703170118.9123315917779417224401367611930517 0.6036286007899869328245524376646032 0.0536708592666976784425770094379368 1.0551648415499262169719397332830656 GT 1 -31603262916974465792941249347842436191.6913562047468574899264914623014692 0.0253570087982393565059614854904170 0.0452445415012697739696417826417840 1.0463000356907281498071142648615468 GT 1 -475713368411194824612300.7820815414811906445332551274374265 0.6807791399672714941438623783076122 0.0321922697291822114453375969002861 1.0327218371875548415160576000659675 GT 1 -11666995561635983697276316101659.0605315136598584760514449681451308 1.1747011900068379218046283251586204 0.0358350652733927903376710650238560 1.0364929048917824410210415659218918 GT 1 -12923741867639318575640737807840574.5022375751524129755753327525239211 0.0783731460020787599302312641111246 0.0447497391182793282712371164778349 1.0457819195520813474082650191506214 GT 1 -774905706160586281983451070064810390705989.3991338825606730424830973454885098 0.1378697996465636501739069054062531 0.0520167014723627176701086876601855 1.0534183944691872580047014925817364 GT 1 -83024223021914207420419673946461083.5262535141271693116954693670426254 0.8530870163453705471334527909537566 0.0801250359759170953935679482666195 1.0835175268449462638532925783321177 GT 1 -325915231461445095620952.8366577988984927410044811550458851 0.8588979462548465622355685782477564 0.0757360690961128782333110512490479 1.0787576086212785770868142610038139 GT 1 -666091629034.3464614092135088999955382671763154 0.4950270522431524709309606835206379 0.0800213377999515570304736946593583 1.0834048024688358007065319960621668 GT 1 -486785389973063907318.0986234618232074877399630516095941 0.1186433028814613999453550319931809 0.0388430387054658127457681846925822 1.0396175521371405514967891065602711 GT 1 -10717169617645639309935371239330297271166920.6290112521705965822868613132236403 0.4393265798494503156793127300755080 0.0209695524921542892269149504699563 1.0211925363143566715906811354130945 GT 1 -2861199070911366482.6527333600970660542734397409050134 0.8284577402403702890500828854176634 0.0216906892748080932791417346581165 1.0219293903145364508047040531359198 GT 1 -62086833082411052265837139324448325006.3973449267760348913976257948649445 1.9442402783670800005143992476739178 0.0653387365995126028964983381648807 1.0675711004677318148891240494701343 GT 1 -16872118587284642480936.9414744584846050417816813627202425 0.0801265286345998707038890275522070 0.0540031508529433484155087504696590 1.0555160406471622115794546337288628 GT 1 -132988625753225858118867748711254524813057.8673986767787371059735923955765786 0.2038931443413353274294705179606452 0.0573940611954832063484977161781893 1.0591069640619864204811286909721067 GT 1 -32135637524028431546609011515318056045469.0153140359389345960227208374899011 0.5775559645126772818224398339091463 0.0583389568241275440101061109317989 1.0601098959361680048808178509878682 GT 1 -52351205417422847291180861019.7727974933676612928041446328957682 0.7437083944902312885525229601970909 0.0706434436993968480792190131263881 1.0732628072363490130162037349135753 GT 1 -2389050619303334688827214.3795100557249263494412957644273032 0.6471111752557160119643033632991637 0.0220887573316735298215533408701061 1.0223363669835722911475910931943051 GT 1 -9922348195493381306911227294967.4399853134499048299133604151896160 0.0670870074837662298925785441729802 0.0562936981761087021302760633733792 1.0579402821940673828311275677802665 GT 1 -43287567244797280252717530448662677070.8625259806378265357539277645677157 2.3566979354923027785973743602536939 0.0245608750737470137519203616389781 1.0248675248372173913277604246968194 GT 1 -11789762290297061391356084133349333216867483.8077063187189246523884352854383547 0.1864697895685842193645922340825366 0.0779279543393456464569325542440059 1.0811319178485862472982370964764403 GT 1 -4315527105377714989561203764205789137.4169775471893673054234492447568162 0.6654841983980312740879285141141942 0.0490210005044746006912550133783347 1.0502632992299647832542996375877630 GT 1 -14854815041289191613999.1409745058957300614704045683720309 1.0450473407480666631645797422386146 0.0405560617512665110367000756973009 1.0414013933302352922915782475465005 GT 1 -17129280188519343434895945119738446282759461.0590784487308201082714547214855153 1.1511165977344341274512511462808588 0.0295509649412291996311902442904521 1.0299963918593835420935009632323306 GT 1 -542170765259573703046650911902948311.6974074798067882028545773879019648 4.4251315291596596728933691703226804 0.0477113592132164611621348127056696 1.0488870960410513668985698332466774 LT 1 -1197805366542362.1449900328081740729055571918099662 0.4828730130988055169039648194974427 0.0581740884332132904043063507439570 1.0599348287386807139326599811337413 GT 1 -12410768632763219.6495036748297196859069413701678478 0.4489305391761145988704236988310869 0.0953633271670978903779429816608196 1.1002218823744358319083807009626062 GT 1 -79614633025926156.8493070668957833185688086393382643 0.9641676420290341069092944253711072 0.0522529528175140852055096046306015 1.0536676401985802028754685751531389 GT 1 -7712924380067755.7652888357159413856282070907463255 0.1463638669478359302993608787897773 0.0417328166734547730487108379658687 1.0426286428952461541709493301209446 GT 1 -80320955446.2995269899016237795183441792118737 2.0989944050731620375692822663148148 0.0050940895444416586980416671898973 1.0051071086510685418959180067874324 GT 1 -362.2968655512058473434148395750469437 0.4375237432225844821371351567427286 0.0018028730370549534433728134441128 1.0018045001686173399330561026342108 GT 1 -358787212313699969618316.7277154242274608116693749181395220 0.3661294006757578579247731032186943 0.0770356672927617565706803343429027 1.0801646880133274907259268622681389 GT 1 -13629021519410330530226550969571.8949617914153268070936478887724213 1.3633812596140960885592911162043977 0.0556609919858027134689656409932584 1.0572700586452008274760653061398790 GT 1 -19995255041629346607492880093455568021790699.7328027764622519231195719918343290 3.1648312736685209915393633984231080 0.0469765759094356917126394422363228 1.0481157963114659642439070846516155 LT 1 -34029399489894765836787492.2516416215242017616425713257448341 0.0957254131181646392577555085613351 0.0839473116635636358715355584742487 1.0876813959442759546722348240131073 GT 1 -23.4288769717781044252805621718829034 0.2223453086197276137271873057002622 0.0188183544744102553931743434188283 1.0189976729227958560366863777917528 GT 1 -3841530263761166996057.0891052239944029895390891415772863 0.6585267452997772582725723669650143 0.0727916347215770220290511996997624 1.0755769649109878158537718565845845 GT 1 -13807388327339243158528523084.6884187356051823139509139588185054 1.0253109900289483841126223169077610 0.0691376064109053385884736658761254 1.0716438175819357570658821452447945 GT 1 -38082857471480.2256855232032406167084434930263291 0.7431539070422380649218067366364254 0.0640945817863075118147341860672325 1.0662408565273259818187769011725433 GT 1 -3525651371781112646696174230.6578205539237282610373877483058739 0.4833529641844124416559385260930081 0.0165642080811683248598520368818115 1.0167029285726278672054892304086465 GT 1 -679262008.6702092989652618285868281611119780 0.5495059929027647337657510867898361 0.0565885922188661045455183244036827 1.0582528160054526801532909755945589 GT 1 -12379100090778691118846704646755150702257682.0370728480216462572248150494617214 0.4367957856055780178397333390086300 0.0911589692776808523889469070178065 1.0955850837924128523148405288388251 GT 1 -1443669985387.3327311797800805332920134610929543 0.8346367008455823953819020474992566 0.0787402520871681147552368627294532 1.0820132543537494063848326711658826 GT 1 -17.3294539829900481180040827719232160 0.1013722241511597206203676278993687 0.0001023197512849262074952646666315 1.0001023249863077782478789024941409 GT 1 -9987661276819421928519873714241818394368.3812566479466994323653763135681650 0.3892110329828669286332822668139594 0.0131331387159871637836103212324828 1.0132201409635386036754402004771791 GT 1 -2882.2148941890357257666899978073553151 0.4234531715703468322027581814537589 0.0551071288214029186001870828968110 1.0566837217467315889104272606241252 GT 1 -82.3547104475395685369581244246548762 0.4954078764887482425790704543345146 0.0450226558953579131105947927630893 1.0460676622334488685020759414121542 GT 1 -57.2729308380958498566313876388526039 2.3336185800410389181878422570899696 0.0462132562449893137049968707001329 1.0473151715632952411623821934203381 GT 1 -12879472048631645220270.3444937476250202194306585711415629 0.1179764279150574432479566631254962 0.0228356678421056904073854194748647 1.0231004403077825302581122858397286 GT 1 -1329400.4276607197905483283755454962754095 0.4995109321525490373363792759520681 0.0581946339684382448505728588956631 1.0599566435550623626999010006258243 GT 1 -393503315221904476618792.0478335689061891096533546585890365 2.5124659177740410817578435813325789 0.0661999696043097620113639102092240 1.0684929638947652319052046743168820 GT 1 -25970788007642043704148201774650.1714020845610462670942705818118994 0.4741816243707417777066406501984696 0.0699769733598129470614222260647135 1.0725459333131967949126726340022771 GT 1 -12632845551175.5165151802249015438145181091100164 0.5454054943553511626519064060074347 0.0290624388096737584362317464661124 1.0294931163728722813763965213911220 GT 1 -19255434102069430803054179.3409943214430886695544324324113381 0.4767989387679856565202122841280223 0.0758688478057611760928055139635423 1.0789012778087708245400200992691689 GT 1 -12212897632595019908506.6640035269825575000625863650764608 1.3882322957875895100619250638866608 0.0204282860133865070487476829631145 1.0206398293857236033180689700375451 GT 1 -4309822574837615887296575900771.9947666003590340613646376002900052 3.5065259990858568198512763033280525 0.0864107795914764573930996866367581 1.0903742391774483148233505834006269 LT 1 -211562111899666659305412.3166721174044828735121511663459136 1.3850398530084870494084110559722901 0.0815621821334566913573112376160601 1.0850810762740511003181972601772014 GT 1 -551927918997073356847806538.6581994283889200048090562267367064 0.4199186705408187825398374161993366 0.0337729683326506999262814715205636 1.0343564499530956953260580830500116 GT 1 -46879530705735976176656190357076095993765.0816151280242647244597718097339140 0.3648301159639597585584382934574360 0.0769748103737153660796101173821985 1.0800987538156170854734721356360068 GT 1 -28427587520124848078854965220573014.9668733672729264827432591049519684 1.1843198689841845086971575482337395 0.0145929975251270626616633161760253 1.0147005226717542783288998775406688 GT 1 -101570815500956867965357.4855048022729976729247638880257219 0.8906862561475140891384202368153381 0.0559699344012859197341435041837210 1.0575972641926296407772238699809153 GT 1 -12656526959192248867536191.3561627017673281498820758459110549 0.3495675602958064161525387644297535 0.0351713422179039799690178180943233 1.0358047501106997516785139578097413 GT 1 -619010136762751726012328666.6750410071692965070852324720653497 0.1272166989450313770900053416659466 0.0682283387695327806051967919561760 1.0706674929933814747512567452026180 GT 1 -1317673376467359922655891181158536.8054730565062211223214173809981575 1.1235411627656781874030674361548712 0.0801481012460283013461426138158132 1.0835426015129082080052091817904776 GT 1 -344046386919834869922447137.4153611548257714001846822196993925 0.8776666894704261514476049229719777 0.0972017606064258366119857435870082 1.1022561842028487733495020373083007 GT 1 -12323.6936483592122727351072799907826646 0.5354153827286762864437932682788357 0.0075799681723451214043645065022344 1.0076088421327659799870898423284866 GT 1 -44078540546005346851499.5618078039360969177917072744930607 5.6453578528225733692570457508469156 0.0759430263550622463651611604758122 1.0789815494524458646534754510503375 LT 1 -35350876447756133807339402.9288243716538357709353430462394186 2.6771614361480169047723073983550524 0.0831547681236281735648259588342908 1.0868165975497890952876701216486340 LT 1 -492038.2820898367904764796915006128279856 3.4377758937741115975893968435546152 0.0305792149900729845729755191639947 1.0310565146928921984339869419302456 GT 1 -39447656852970687452033.5504523820178752453788437699432299 1.5519590481252972838215405499587652 0.0936390268746277184085469703125568 1.0983176272061627773833358983965418 GT 1 -552668127619.6947933075743389022011083735402769 0.7336428444670425410601258471595499 0.0374317271813905114945077485227147 1.0381502825372544469175224809101314 GT 1 -305101124440797072497094.1689706507513786739182646292674395 0.0291866700600815021839738205617198 0.0915070848133908681017101158219765 1.0959681895399849105447313624144133 GT 1 -581825583.4085857708806110092449628996992805 0.2793653999675670689986805660744605 0.0421413318990586414079101341961571 1.0430550399729631825001280396366586 GT 1 -918885370687470774189463844995645677.3170048394226780010410750917101207 0.1566924501144097775235538030910626 0.0799374360376943002524268583954068 1.0833136069443850870415542715100992 GT 1 -87355.3351052572341494138632918269354714 1.4227122444917542195936482167320678 0.0835615080419314922412970733715775 1.0872603258387484731048219461103342 GT 1 -11331991963540.4074771417341367202119539077558538 0.7657711266350905769860133890937050 0.0157473267617668660403282210987283 1.0158726331465016202119507212123947 GT 1 -16947808943722274581730864249041944459.3675043781417875568243595842721669 1.9800893662740055479279601227562324 0.0061185806097722597257854054019751 1.0061373758300439659938521627146854 GT 1 -48834655013369904055771987.7150604804326293931187987733599315 1.1541853968233210355291827247444432 0.0134437995603816681831473864827860 1.0135349856139192576302126313554493 GT 1 -3666889097875372442463085345.7881674830456157360366718181526314 0.4662247415979336568617183694261066 0.0194961456999537651390536855727649 1.0196887023998200020702590086608339 GT 1 -20166239182260958614769377971692085611.9592640181226642064046037161135443 1.3908260341690189261474508374176863 0.0958873641568874140816411992215329 1.1008013291799587122512965153472749 GT 1 -5982595122479180930308427.8966310612453384965092086966270224 1.0061540362285519239869427542148211 0.0570526698142877024014509577663998 1.0587448513701410624802739654909054 GT 1 -173424599.0164650925357128078155219743968983 1.5635793227934200395702669117336843 0.0523834647219460864579368364382291 1.0538053572106047200430031970924132 GT 1 -5275302209677524863015303.8126675026739644894006173539288849 0.6378069547394203772549660489967691 0.0904056593178264509532903468987406 1.0947565583305864919547404935807686 GT 1 -4676984722939.0663608484266507434845996684300441 1.3586270245654217292440777289615405 0.0468455372360950702776091622014806 1.0479783079118252803872999934296194 GT 1 -1681610177323000.2461189170971855369456076060992747 0.5910933936934523892572201184850407 0.0698500434314926399569383356473772 1.0724094622111400828023098666643588 GT 1 -5167591078444133144308.5146198622592332567641995216819871 1.0933258162745886984694133103068085 0.0263763827880652022915706554738410 1.0267304799901149951771003878856127 GT 1 -32982419333083.0625123336536258302646975085772819 4.3879666578762641681439514665470932 0.0924525645061877485901628338594213 1.0970094436925895350665697944428838 LT 1 -42692128.8968250847836275219245870143638055 2.5531331089351362415152257122616050 0.0022320634188353417867108597599534 1.0022345581853976487339697079616026 GT 1 -972215994.2327783749873627168916181250460307 0.0188319507734033683305026522090796 0.0808049680241883007787286937327717 1.0842569571882501277754629405296037 GT 1 -10335579495981.7772227071638359266709473633317854 0.2669258607142940573326273318908022 0.0172853923522340627565154997257713 1.0174365289152750919387714313582684 GT 1 -72481491428294402932.4177476898168769476535330538514833 0.0173397483414516012996535770332175 0.0280184893372621168552436220600356 1.0284184966545333559673826799775849 GT 1 -5631897365769394.5264823182491643746239176616423615 0.9232475966564299989017995039355907 0.0669054860247293446405429528404057 1.0692487821129211807434910606670484 GT 1 -18306366848372541038234553264790508567802525.0968225968354679619251927089354460 1.6151507619296551396437471562456072 0.0302838862691765988096881448805558 1.0307519165767183977942654571180754 GT 1 -20490441191.3472066321536108902948144366859184 0.0583179536321508783724377846033415 0.0263522209299274370768935171084966 1.0267056638723564348940130419469991 GT 1 -44141142647113.1023773770498336738680921036315719 0.4340993290905524771538452410538606 0.0406279223884501162536119916407834 1.0414762943490127314490895004706172 GT 1 -4803845192467.4124771967503950560271857224632347 0.0011662025693059682540626758712450 0.0558506671805209343814209082604110 1.0574709338015412520242407181130130 GT 1 -98214548770583.0137864879587934290306266344326744 0.1551886884738351319990819721028943 0.0988454527030951869762915586559622 1.1040785074517379222115361367556072 GT 1 -653523939916198386162518115229813194897.0476065497783551352938811754724356 0.0546003462451604439484586643760985 0.0013195250351148938714650482449952 1.0013203963748614588399371834297945 GT 1 -1150216.5796576832814938548472723390175789 0.1205776013687727574118067268165252 0.0765960198227296744649563957960521 1.0796884585684510530280809090167876 GT 1 -75714438104611514988476452384893.7955053417025767456515423183651628 0.8698534403512019739020160135670003 0.0838862498228200259618159760565293 1.0876147406017452232066271325900003 GT 1 -1656659712096319879302084831800041.6177362781534287910931821966666595 0.4923970943001786399417390102615047 0.0527303507069101279302047850727344 1.0541714857851476381359903603977725 GT 1 -2009.4972911139433730075818771897551443 0.2619083141726556773020087483906258 0.0438380016457869400287856620108849 1.0448279259410904633157350478371674 GT 1 -3965759380088559030396.5337767026248247053376468626769844 0.4755829257293246275714614301675724 0.0041713147363645322305933737102617 1.0041800389390617644842224710667472 GT 1 -39823778224210252544.0474172140667895714759409611345238 0.9937409746859952960418866215919525 0.0576442537569755092503504226492546 1.0593724257580476289500194531042892 GT 1 -25680.8713535925877446550806399139227921 2.0929944255927763034923080428747922 0.0140998970495336366390680956371303 1.0142002449783186096756896151043954 GT 1 -30129583025958144.8889553061432325825590322738866133 7.0362920212668335074656819710186399 0.0469871988424383573326816199277786 1.0481269429338250358570786183462078 LT 1 -202.9496490964028121452816942437168054 4.8115074988480659672113905760588712 0.0834085409567111571359014241350020 1.0870934250355271646125055863631970 LT 1 -775674236882241.1535881100615013220488736701147726 0.7261946147851974076559274910441444 0.0946865678800110465338367225237278 1.0994740614076877100693784870294549 GT 1 -49.2403592382536187768429205298475223 0.3658054359446783385656535204815336 0.0702501290292596021848730915498904 1.0728396849554126478563957840649435 GT 1 -95150240522532994063883480481074.9852832266124062183158422622457223 1.1662781950321298527473468480112041 0.0350395101329401806637733585043598 1.0356681216242876739543066893336216 GT 1 -3674286278917245473826174544415169933.1498043983373766384432470404644443 1.2503201849575173520369635499227253 0.0232658101315181789949425916667768 1.0235407316448323300437493849923364 GT 1 -1309195647089483083478806833345.3552424606062616481244196851361260 1.5051910055524206904909092124535081 0.0688512796366352701252450056699801 1.0713362718595913571279012561947352 GT 1 -12609667045034276.8458924940660184768917281025209313 0.0347435625851614503909142969811634 0.0104876465962463864045246844918194 1.0105430295265390931499592940607399 GT 1 -15083498.6003383895588070516466537500441817 0.9945006401094547173325916882875135 0.0181534635252879654121135510239341 1.0183202593424460198409499610795128 GT 1 -805857291195358838648382062508067517471.8038523449364274489202971095878095 0.2917987408163100093266700771404411 0.0699402755332884991056850232383109 1.0725064750401631127182827436732559 GT 1 -9325452951465.7590654998119904202480371768606521 2.0533252565603830049619692362631169 0.0800820376271665190132896248045961 1.0834707842489274673911836205522395 GT 1 -10904239354212377986237576678094419085192183.9012896836855874678175537676445995 0.3166404000223770148482968952372077 0.0178001215329059526733553693422404 1.0179604491123964886839799050008061 GT 1 -378526726065769862120595561257320459178072.4859536728615327560314338725725321 0.0742639877519429309296296889772108 0.0947726855822097719937969071540088 1.0995691906694050713337837241241686 GT 1 -1245424984215387768583315367809144948795712.9236282035760911227291260665200303 0.7993292495493895754034692259130733 0.0175189604879204266565871532692080 1.0176742336314683201755246037128712 GT 1 -198539.8224413266467858359987386459311964 1.4579068262123756653673480432592753 0.0685818504574625593410158070211335 1.0710469623207981633956982278213361 GT 1 -8666712584230407.8455605637914392054675798991482425 0.8749570997335547934760648417414518 0.0618714417426727020728726668857394 1.0638682836557519692515197218248161 GT 1 -56198119671931.1905880591630491583085728863194201 0.2243181778073303546407182655804587 0.0669440576009705512404250992615697 1.0692901202334515469083219770162574 GT 1 -58823849625552830587158182662823206688.2076330180482412209784233959485692 0.1863723440506966741489198051699665 0.0209324535777868093866046567490214 1.0211546435076770033840379823083214 GT 1 -99839676466302867578668.9691912735075224595017086383493355 0.5211579024047805846815522786351206 0.0280637340255649393341460805347074 1.0284650466566525426666867501528669 GT 1 -3197103373925979879411.4589362856438915568931694363130991 0.8396886520839794501400293089276927 0.0613119584891108461733184065581382 1.0632720791356046415794799477418366 GT 1 -6890.2034337020697064874248942320276348 1.2885178684144829419425649221086674 0.0914038336172579257402422041827199 1.0958545449231179233144345742322124 GT 1 -4.1039344274901693030485935212960031 0.2498918601389906379416663897815104 0.0248317483266521396984041038558568 1.0251452570532397473864405699753250 GT 1 -1099212469445580355937336460911927.6779615561603743889340781078081853 0.2358153071869246408163261034573245 0.0028199936457759557892112439383783 1.0028239773189083082521086249674930 GT 1 -1758224632889943977115044530.1429403365946500318930645479459236 0.3108403074758737671115324199563181 0.0283684584076279562810480870128608 1.0287786188236472272683695749433841 GT 1 -1369096790421443865536.7561570136028970686661919539329443 0.1571125988639476113054499277028207 0.0335550986079700561912978903755704 1.0341309903477930433855319673763412 GT 1 -49634695826421856557807331300782552762.7341394357987127636548009722082753 0.3281190451951682532834873425253130 0.0853010613627897892472337112578244 1.0891602966602638307525526186111943 GT 1 -192927257475030534989541136492106437010.2694192953010743962279826022086015 0.2965898899684376635058352749317951 0.0698234854962026848799365852411779 1.0723809103029618896498741400095075 GT 1 -441741501147935153100506964012571235.5412674619973751055271558863696845 0.0268296764978710730012571785728777 0.0530446167649089068018692649172574 1.0545033007020508908622282512187568 GT 1 -2596265861925244807666786422.6200332802057903212439843905757005 0.4906188083272750671538741180742259 0.0537305512076755435249469056645727 1.0552279208963106180415013571997015 GT 1 -41296620004443726178980097995659946279.3609171288910936571808744362960893 0.0091157961149216700069139368251076 0.0048712131162626894753963610794226 1.0048831161454013629066101191533674 GT 1 -13307974070.4554970334397015502940281032636760 1.4791088135904833968247401683180411 0.0433593412149949854440460287167546 1.0443274452051434368050556511482370 GT 1 -81.0306964020609988001169370663934968 1.1463893617299244161440945468285760 0.0901488075164213328121336176209980 1.0944742175861900597389325979278070 GT 1 -10515077735058141960904902587925203.2093019907885845387931045004740555 0.0897841028871859115747598473548586 0.0716228729548273101205290891854261 1.0743172418466030189728269921133408 GT 1 -2073808200491486746030811702332590.2490735280995496834058497723138261 0.1898045344829856832836715690982370 0.0566086972232984834772445701410269 1.0582741271942914917983798493627016 GT 1 -503.3343154818352305874997703818602061 0.6853636504185339921911435934097667 0.0217780766093229964142208263788746 1.0220187191563655487270531048629519 GT 1 -265219920532175169727728924810992.3774314246230765072194787234694950 0.0128401289178047714682640817673879 0.0679554095052513086006742867428190 1.0703746215625419976550927308490866 GT 1 -110042.7201805988854926742909540690155962 0.2528612498183962650616413783789356 0.0868297635250070046663689866282321 1.0908329574167859767491840068522509 GT 1 -102666015.6924981253124243427882410328693386 1.9614146999428119970311194295626711 0.0833184552336810805420533165030728 1.0869951464671793143245512040718801 GT 1 -581294.4868264224277364015068949507948366 0.8337075830781398261098926253054727 0.0707563483660829121191310018085023 1.0733843015376440902732156228525054 GT 1 -1.9437197248664841829867325542377573 0.2611809841692331751171764728591717 0.0551115828947907990942033879441336 1.0566884355973930415720368295564704 GT 1 -557.7002978172278797918158143339178887 1.3651303034179498455876670257694036 0.0824692407213202161586347905101524 1.0860691745159867887570150490459285 GT 1 -458021690649842554471872604533.8897016721355081740295154563129563 0.7859350423609788107505690356772040 0.0467770393278310373933299758307203 1.0479064460575550496618393834074963 GT 1 -12302065.6035030322799812530320991913619834 0.0475188993903352267837241975197158 0.0859796857443346148288402122611484 1.0899024821123198297429252454008704 GT 1 -989592709040.4324761529247026270097594129746781 3.1639556644474651450354308727822461 0.0978200753757977097559209767595644 1.1029413058357681686230515967883382 LT 1 -305369740242609.9269255569378451978186542238315776 0.0397321746835778335022383030778219 0.0353110793671274021157067927715058 1.0359495916514360715300350161120290 GT 1 -157064263692912734943474659092300317431185.2178618673252096286461629708780539 0.0352057964338938087878838031769502 0.0109770728075474376198056902772969 1.0110377654315125739668925244711302 GT 1 -150273108294244064397.5846865047077064662347656528741862 0.0473522746312720635571470663753363 0.0739199788338976466384443665854639 1.0767946321234855916108015963993702 GT 1 -156959017567.0498279245446569473749771136360251 1.5715875965065261286324550475177515 0.0538198250296990745134989116572960 1.0553222682659513021750736367348346 GT 1 -704479084748405625597.8946618448199557959217656408774234 1.4280923723130939081868414179132412 0.0971704280490224109892819287659853 1.1022214787588921487431966762204394 GT 1 -837568959392608876724013.9663535501130225115640018891079887 0.0530245670815844955623024535667461 0.0825549618601625549831573759671581 1.0861626047825061506526455008694194 GT 1 -52544190096762361975905100.9577576867341115456306399825119115 0.4840737650119252415726042255443700 0.0606105397994365413027924825050321 1.0625251251662955028896083576833463 GT 1 -1474158.0483832963365669318603837967439434 0.9301422443457993830085143163902836 0.0331048922019948696210777455117252 1.0336652611827493668674614854564098 GT 1 -151498664413228832461623099.1265809162420669834365230233256203 1.6888595783768092977765976251123511 0.0788276253275226094704406278680702 1.0821080998998609132105819123961674 GT 1 -1018308906208.3288767698112787585436827125600383 1.2521956430002835437471790272820719 0.0246005387591856255943516572077273 1.0249081880532572245794558808190509 GT 1 -5714879975276741006.6691357691185666480350134884673999 1.3101754868081909653967887787680719 0.0687841403001659702575174499554424 1.0712641706853990222638215411229893 GT 1 -171039423928611893368927848163.1421837970270695586396609406243073 0.6367089907411006827114585317182548 0.0414850949084016469298783779856915 1.0423701661827088850836656335472280 GT 1 -134980.1984006799249567009152018643803349 0.5450501469346446554818494076211500 0.0714475233931060027949500374332655 1.0741283821699651536747574684938939 GT 1 -30630969884371.5488426521265531368074331345108810 1.0564245106892034786743940772099491 0.0577506274515353819153359498317204 1.0594853127428193241659313949380744 GT 1 -3989.5694327195745809683064777365927080 0.4694299327159510454619955477185304 0.0143315566270981965085874647291740 1.0144352452567138841667571237170606 GT 1 -1395743689335679460.6418869948199299899677796058979631 0.6194866318239164778140808814592444 0.0405723485830901617328750812167623 1.0414183687567429928175820319557966 GT 1 -225873328618075654843177329582.6114510305551906860797182312449892 0.1210625625017315355509157408378664 0.0519456385448021813299499564123443 1.0533434350640091410545540195084372 GT 1 -3007170792957138984178703155659365974819536.8840844418703234141426067886181532 0.0514096430568992590457028706834809 0.0971968672056228820454456377299216 1.1022507639579615677854546130482455 GT 1 -262886207.0703949419727306856512768065153696 1.2214528381178253667119121061865800 0.0123752678145345930581481014110417 1.0124524791095431127257403589345082 GT 1 -23090105251661048706789027.2489204911716749005990473026066098 0.0656388282712204306280013472317288 0.0195193478131318295571770832945444 1.0197123661392349691995844799230794 GT 1 -15622092.5050647027328566169177300835730425 0.9662718263783543181803844767747277 0.0363545593721177408367616061997290 1.0370318522052120221180637156827969 GT 1 -122709919085718330591599982.4973997780705038560993741241307310 0.8137507731601800929936411909220979 0.0475245152922559895823318328971185 1.0486909101521437346090004411888247 GT 1 -2.7848081656516131527472278964898492 1.5768028453921114789131103718233075 0.0513019015322250501766352240883671 1.0526646569409856002500381996403760 GT 1 -6615760737651703756446598964782772483752.2594658721047178493025641221553492 0.2969572420900683064304910368914763 0.0031025342129506766256333957962924 1.0031073570501502316371729627251099 GT 1 -14634300613556070502810611.6619873701923715541318991692337405 0.7964888646686298732456803671550867 0.0713806398776779965467619199191364 1.0740563548926457703947267704319456 GT 1 -6020888173127582298139729149264.1214817936419346020884043689612284 0.4494593238733880356329794858943764 0.0631568139947291406218561583592148 1.0652393682679345773757462253525582 GT 1 -413959330951426631.7901088813655491171244296819087834 0.7282262369295050993795559710076517 0.0912099574376087372056525920021771 1.0956411877627847018663178631989228 GT 1 -905279746150679128946414427665775372162.5509105832612993066647217921699174 0.1421515633779424953085643341547606 0.0869141267786433643963294143354093 1.0909253467079138192802361665423485 GT 1 -266191.4664630000762164845277778547918009 0.4113808682735761947298764361759130 0.0092731167623893275132549651702018 1.0093163797726378068788339031093538 GT 1 -450077168606308851655506247271859545975974.2119902436505384074865221023453096 0.5771886358093558398641075638265561 0.0194232465374892384078086341609573 1.0196143564884795425357181232010432 GT 1 -8956165700633145612841131397383899.1677596613466534466816717136988698 0.3093672912566027060901168015893768 0.0000205346656470809178903739270387 1.0000205348764862138822660439963945 GT 1 -272920786995516568985108072348531.8803103264465711202901771455729252 0.4513527804139438107644631684230039 0.0721312363341650745244480473276661 1.0748649746600101949728897651350709 GT 1 -22214278549865748807081277867493823.1859465632134361429082751501114833 0.0970425992448469252865872981211444 0.0171596841175587275755449848735558 1.0173086177250642844628325017597217 GT 1 -223.4481073585243688371273943493641087 0.8513932467751588174854955996434741 0.0055417349786641815751238928949015 1.0055571473592105830668601435179828 GT 1 -716821766124931696275814213.2765989195418044495147438006843875 0.4178813486780329659702192614708579 0.0416279048124651117703912125794547 1.0425191680845496155144796648945962 GT 1 -91359014518615539555.5642682597392651625167771744918840 0.1985566773039638145907767976440560 0.0228852503761397745726886778561222 1.0231511828393963032255826614473396 GT 1 -3468696731264327330344724005201.1097949169314880530664543918034022 2.0416156578562604514828395739752353 0.0463705405674857805281807649640443 1.0474800902869488547791879676736356 GT 1 -602666208177490.2151718139792231377427912186903873 0.9048163185913851400297051064707876 0.0487788922550786856047795478877690 1.0500087432032021675259652631631180 GT 1 -664295405995072231650206508606538414.1029120135813553011207334983573385 0.7803392751173593620737719927188481 0.0527693010865562693152016750894591 1.0542126052071509147958158628729264 GT 1 -556600143214361798064802875651.8145135448349540850622495140589604 1.6243108989092447783658268073100261 0.0446251443415071803992737255804078 1.0456514965027137344616221963794908 GT 1 -8203.4381402939173967245645858761702937 1.0619871560202142273800197312868969 0.0018528435460241886693768826724880 1.0018545621838666762019690305387003 GT 1 -443170774593258228322735.2156883158190249027342921046124609 1.2714504373446487352456204159280787 0.0472669047294296712246980143032401 1.0484204824760315511569830917665490 GT 1 -4009510720208586214028373069856917091190197.2699548790638830567733021075331137 0.7892552454814091134596684132389046 0.0556674802352951225597888311406910 1.0572769293470640200295419505577640 GT 1 -720361865796449389603125.0049955480033463294163791353960461 0.8996897315608287305646722914264348 0.0514297499148139247390368871251614 1.0527994279478174968372797144825521 GT 1 -72059195109368526614288052088131489.3149032397261032577333773670311520 1.1977884479902003367308162072813539 0.0905582606623850095779234074012994 1.0949243409783225267341311822996009 GT 1 -13298790676950693387976.0866063228421822009907155515669961 4.1532347585391787282283305901717927 0.0243845980759676198767057918393343 1.0246868256349827700233086244669686 LT 1 -4608.5724578980724924987425809802843600 1.7822905636778756812688842739722643 0.0046292661249575131833117192308386 1.0046400143611773665454979886706957 GT 1 -549035954794454483453899633592834.1303418274128090193878134432914647 1.7709853580244189934696227996919384 0.0423621654406229825598801594475415 1.0432856157450786906286491142553122 GT 1 -69609842705934322579836.8329469648593228455910132141385794 0.9011284297090102926843679551340736 0.0562747908444962535088704100181521 1.0579202472084235646987862914655391 GT 1 -3911436633535274.1675003353590642111779771460167076 0.4398073225688199222289482459202502 0.0513779338782289989706252088797022 1.0527448040320919628711308386780190 GT 1 -5150061.4741427252252997437419233315417245 0.6767168447732228822608039911753631 0.0942138845616641258302524457212300 1.0989520764845322937088949423601548 GT 1 -103.9589990843418525453089674084043220 1.5971407490463482135451460343687649 0.0867354297712950162549392149423323 1.0907296591731808605181868567777122 GT 1 -143333597722124814190315259312041939151488.2970405345664753791465849748835876 1.5123063784830377595112481602147749 0.0215565824757634429923370167199909 1.0217923195469136072765736001186109 GT 1 -985362122057176875.0623602831542499937877217746364844 1.2849046075923859549083021059125272 0.0509104220050369917191348284389676 1.0522520928405900124653766048629841 GT 1 -6191018.4517901586769384990471035552432431 0.6969865313349751975655249087754093 0.0404483413875328925951662017298183 1.0412891258878055618335651254333863 GT 1 -1676.3508161287697172020992070356133501 0.4336979374678740321920143826481967 0.0310196033430881366305452176857715 1.0315108977842329584603983151066415 GT 1 -1624213706266498998478.1705472592203083393464580849267072 0.2529312232040792406466425130173089 0.0728209004982165515503171663828765 1.0756085287316000610010482658562087 GT 1 -11189158353896.8535022966904895175714781436549333 0.2316714802444755860941321266324417 0.0106766039971188560552519260449474 1.0107340078849030409260770769299299 GT 1 -335752386714079707290861088038390492.7760948345657010726878322735272522 0.3038399354650640932132390709702785 0.0490078854401042526067941310724728 1.0502495082062487692447621756741178 GT 1 -4259323993271.1568339739546760766713394349639914 0.7575949443294225418830073264004621 0.0727944425788641249631190454890460 1.0755799932071548523350449611143620 GT 1 -1261151754701787537043363.1643013071479549503645632787738607 0.4767823740371496394004565009865943 0.0511012847576417573595494009351794 1.0524532139475306465140461194830862 GT 1 -150348574272784028958993686090393298704.1525912980361106759818967484053756 0.6439234553966249822317025553258401 0.0578351583858380278155532217911394 1.0595750286170937149819718952170800 GT 1 -92198751110915869622202.3463978439278694856405542003759143 1.1981718833431855781944129671607170 0.0325091875732227867891736499032502 1.0330493503230028452745659813395707 GT 1 -2243398933874218953009602306394969036190.1095666453621515851071561903191035 1.3888579459032999100802821063059776 0.0889956904415015806313093219062551 1.0932076511532379016762153623694769 GT 1 -661124683039404805285015858.6546602666119909674035563132123520 0.7211077928716651967493863464261532 0.0507448055857147955652333167100008 1.0520776077605882481149076201200058 GT 1 -4468568779221616676.3239217633792618174572924900115717 2.4509492171476858054383075180223338 0.0392000867893381955790490978777488 1.0399890985466527291839355641760435 GT 1 -221757512878424682724103978121502197264499.2028974660784807187523237748091756 0.3532951933059388997604788983698489 0.0954642666632219201190953096936012 1.1003334687504877118966441930865411 GT 1 -15692751408400.7969110176584278718798182520507390 2.6831941741467250777963651209889230 0.0908096933251520342712510528497806 1.0952008484388836509489027378652308 LT 1 -2574724859647617867304327169004.7037784961392171671059459148321624 0.3674279487096260903005004816199220 0.0625348083412902925764192680428842 1.0645756507242420558292056418019162 GT 1 -9327720156342640.4515825961132437785295239754938070 0.4334059546872558361026662039408248 0.0661159162275364557544526301698465 1.0684029557652400857351244567052957 GT 1 -4791487726689532792537818499306.1838820694247212804426691424118890 0.2650446933454640058639539685267831 0.0179594108126312047124130787645921 1.0181226382971704305388013872890985 GT 1 -254941741843693467073956865812199217.6014520882344689111434485274622041 0.1021586071040216494340579988063688 0.0637343084820612828273599002864003 1.0658559843253988355214034623452291 GT 1 -1439700296341528498668839989514.3120453668776904979264492294612186 0.5167081813651103129241032808731573 0.0907346031788839363514926243299989 1.0951182617185512088716065639607264 GT 1 -137926511040299894725552387335559091623.1541432366097788362926846660603849 4.8102018577532352370553016634644782 0.0184384956780919325566975263101633 1.0186106036304226203122475182714624 LT 1 -25.5833800940152157765416107142097400 1.4820378386332990587726376613554704 0.0032916044357551406796436217829567 1.0032970336828655482116719237723136 GT 1 -349459323608190507.1193873983074018306867628932680766 0.9879741955515635419050100646186142 0.0808106750608171966194915025671621 1.0842631659406336513075850969519834 GT 1 -1764902.6958900661727830936801213397603464 3.7887224180494597636752280160004103 0.0013272305753752226704330489154710 1.0013281121259756011173340604506362 GT 1 -4504772694408377823.6177373284733347223363076881288188 0.6943374098473275963420007264881051 0.0385148479257556917474019236689834 1.0392761565330229894718558696324192 GT 1 -130269452000445806.3948807258229021039335936431346855 0.1083727262477687966826968677782355 0.0854055289120706459424897776416435 1.0892745129460045873754437273784060 GT 1 -302013760104345987852370997399060.3054585178273159143390035982539400 0.0920445853209359981974227861019747 0.0176905731865382785647100097472931 1.0178489216727587522649178798661339 GT 1 -7.8422609060074493462108523626661661 2.5233445728061214271386402412106903 0.0533949746628968996575869398808649 1.0548733526955336835706083044287290 GT 1 -201633939083756089229798775868504814423076.5567010392053665827058200175487499 1.6759593132718724018587887367915910 0.0787502532585601435063167691533768 1.0820241103861564508786487888309414 GT 1 -69432238066262704209106.4273851154822249034970694586014440 0.1313195963573799566615359273535015 0.0330605499940418942568788503833759 1.0336194018223590953688426205002092 GT 1 -17509359647443974429931342498313812081483016.7066984200766543401185006219250272 2.2130279419773746629832499133884259 0.0909980779196655723523753336911699 1.0954080703070759177701455433255128 GT 1 -254565035599011479157931011399076416208.6771735592719237717905063834386835 0.0552365298022292591251333937859412 0.0927031265399282405609214851303665 1.0972855687949978308394037381886316 GT 1 -5098455979270.4236591344067038576996497000725846 0.7048978543642991282402891908254657 0.0053446507755867385887714579845030 1.0053589845169165204864113494833442 GT 1 -17972.5437606109070497702693688944577220 0.9171632599901911259565321140029148 0.0605771167664861498098493641050138 1.0624895462719256406076404957215435 GT 1 -1256762199325913731802995458181197408.0920812096095676504941737741111973 0.8937232830105154639969607081154851 0.0937867485762766724950681595866592 1.0984806237885650858640094590344719 GT 1 -4955049961796239231202713092761664050.4483605811226539869200710362880268 0.7768821197253445393895182261772386 0.0466516898260188055621250778942713 1.0477749539870412521124994864847840 GT 1 -746004585838447.0494366162122936904873580381091788 1.0242267331317082961965697320355823 0.0692495592095879858175974027921227 1.0717640926431623542784382078244580 GT 1 -3776791316073299553976993270139239096013.9629436322935797262443180775904138 0.2134797079024164457838738367106139 0.0612606255799931308578124023479097 1.0632173948280304340718564726899556 GT 1 -26202988991577939372944.9360685705254150806068413839155176 0.1235373306075754205417245330304351 0.0422020397975271707362599673442905 1.0431184207454794109182737218332749 GT 1 -46642842324156912601589033250757813798.1730425891076058054067978593272305 1.0252933843502406546720410089160020 0.0477047468060857859009425031498256 1.0488801523646382670371102733887828 GT 1 -844.9207427994510089750787142642585895 0.2470043330443068237823734505964138 0.0723826463062746222224339770266146 1.0751359656108946592060896070446039 GT 1 -1.6972543466430550368017072377873978 0.8624331408388653216096702505767769 0.0991387773866435311705064160042744 1.1044040591933340499074475351416561 GT 1 -199484283873980137106.0752487867571265777688967656165681 0.0280516878925206365343237799068105 0.0000498735948993354622829670189523 1.0000498748386284225527682185380063 GT 1 -62572081336674.6851879449319085179094017923520476 1.2193965902864756061257601788729603 0.0601088264723644684652629790415842 1.0619911832632212699485589897330426 GT 1 -1850.9944024036735676949101915724420095 1.2740970309115387162741042983664277 0.0948669965543471865954084139955188 1.0996733809472101392134921221341794 GT 1 -1398313345927983028280553102057.0453868714190868567529800446972141 2.4311325929038381598789350017312006 0.0694890281976567494260832771935287 1.0720214116718274493436274807789290 GT 1 -1358997929787.9665032522101887157041257823986336 3.1695474651213566180605050089240139 0.0396462177200616150632438106127080 1.0404535391999851383491197294945522 GT 1 -3447147492349565629506503006054965.5463244134103933726402439896994982 1.7828842827526865931121122714781905 0.0723765573425991129105356577501530 1.0751294015425672411123477823677286 GT 1 -3137636449604728996602183.8484099054639787135241490734398761 0.4764504727075299254721410816508545 0.0454396052536931751976184540000961 1.0465043641183903782460885020164447 GT 1 -6758644.1101487895756112044118330143755495 0.8921099960263019038349478464192163 0.0294847066150554825011889500775691 1.0299281182438116566054023544639660 GT 1 -5155383513142251744542435999725063211469.6962181873928584147979212713831893 0.3473725543123127872016904510977563 0.0659989431223777985183665530894576 1.0682777091933113032889760314060466 GT 1 -88832038793.9095646031537824509093632112333258 0.0423891708135948752984233149713057 0.0854121128242531606978755916998943 1.0892817116948365987091739828009623 GT 1 -592615704527692506444386249420099348573.2853863245907762097118801549778949 1.3094399350864752570752395691322074 0.0406561973179081467233595860826447 1.0415057671122816214630032006090293 GT 1 -75722986298418748124926594045172673.3730316548201166217011060727382215 0.2682276581357709715531661899298160 0.0930357945598386215136856102162266 1.0976522944305831459799106039049169 GT 1 -439290268988107556447298169.5242924494348822061156611088285174 0.6784633838674177573886602141335063 0.0321623926906321081382561705283713 1.0326909668230594259812649125706976 GT 1 -6229.0455111252822947550781946786333866 0.0235716596660847184132219762914092 0.0487795996688604168552433536323349 1.0500094868936428231134557732635302 GT 1 -202052111037341461149420925694.1987954488800312552401186878328341 0.3901575569359142723049936123712700 0.0511057970176032209735205762132503 1.0524579692186860400144283105518112 GT 1 -6083116387138685254862825461139205172326.8761582694281843629544003557424449 1.3020852600852340340362577861227475 0.0756533267084564185892343819949808 1.0786680901607396940469751201474069 GT 1 -668666.7014056931482868832134587970241591 0.6137841989372138060157877826415572 0.0717546429294816788593182394376030 1.0744591877467555527346025212055645 GT 1 -123329095964912276147950841755524.8983257680102512807202088073252315 0.9644349137951067065931630316710390 0.0016797845215602337931814680285697 1.0016811969415087246244005694556628 GT 1 -20169197.0651513266838990372224701957530930 0.5837306910822415902882519426725945 0.0198874729683138313092146614498106 1.0200878904075125575285347902174189 GT 1 -131892695963664893429413053120654378273782.7421518724663363096625586743563478 0.1349099354695337644575997627714052 0.0881195392868224052983696894643916 1.0922463712781347238936682797751543 GT 1 -352078743036106745651.1065300741665646024560758195136809 2.2496898926589949816461035990591030 0.0410852695350321876923329638788941 1.0419531231040476231884977458801010 GT 1 -119915903025887137700754883118487360986.8958022858866090587662940203229883 0.2378419951462019086861386255425430 0.0637253651280193703467964747129617 1.0658464322170506832306541408635650 GT 1 -1114810980.1443428320662342444365996836238099 0.4678519388647495009437481323349356 0.0085944854930807629729357148669663 1.0086316310680636726509412404517460 GT 1 -126304371226146939997575581714.2492883808560317000584985534790091 0.1694170103245075086970294019300708 0.0457942715227975598762620819622985 1.0468759824836482977268848732184133 GT 1 -4652.8820804877194468124967533479293084 1.1794972257968716811320611750122359 0.0258243340274147680538708960143497 1.0261636363936541587503819784654656 GT 1 -751462154950604121346934877437.3471052384267574921194407469244254 0.6299046352500247910954065582558789 0.0338959024626971503531523950562720 1.0344836891496850571646987705719818 GT 1 -48583750838737527075759779791890175.4668398992940910717085409250557034 0.5480125017216456763928269728233637 0.0117519762803273750506258361409166 1.0118215765850572512820526899260176 GT 1 -102987416811192321279242733108454006.4017811736327163916345429355019967 0.7116412368450789656413770458313935 0.0479714390247502104324340314966405 1.0491602436163714230489684250385946 GT 1 -4283966566667176633618337.6393663445936205890366864679286082 4.1686260966586631636518001626249172 0.0192461598665576624869791696205513 1.0194337783931895375271507473530691 LT 1 -6494355517950935897049226125.2931847193844793392542959013049016 0.7351040676705955854184113915214832 0.0889736014306322714689814111405401 1.0931834045686201399262543339076812 GT 1 -4131978804052250854626962671339903.8888840806856574764522926277503056 3.0024166293374629966650589427820825 0.0087439739165738457837063898656939 1.0087824267744572555307437241633579 GT 1 -15384335.7101415144209023583068831377412685 0.2335340296214695851642731938729377 0.0339563073108701085665727723230758 1.0345462152654389237009205964888418 GT 1 -35200505012467263736.0475131896486747466183438786710352 0.9250192562663665010381305632341939 0.0529505190714333011573754994595190 1.0544039369724919630984496431054848 GT 1 -45885623270587022956089826249297219317019.6515851229830208534911710774096065 0.3846796458206654816067202852755297 0.0123882866240863496735272138040757 1.0124656611360100707888415255312353 GT 1 -13.4014125667935112828756402764690599 0.5187501235684637254153131234142347 0.0926036075689910406723145063332278 1.0971758874809074298620241690688886 GT 1 -18693078036709194843182009180746129879.3687808638639012730057770295865436 0.3104902814919257304312032567185928 0.0635226527381621512941762167200111 1.0656299461125554737700049660030332 GT 1 -260218419662361433.6812327915151467432941968766152255 0.2725468852796355319406146845847700 0.0811349427207665847685059797181856 1.0846160038832435417263602485883869 GT 1 -105561.6639784512162426019548863519109323 0.4906652303298413020853434971915452 0.0256697499824915662293224462366306 1.0260049670830003393918743549671672 GT 1 -474297770998008959808986784.9317727182003054231896481487174971 3.3257019347051239310708461245640940 0.0226262357392234872334907972709517 1.0228861368832880376181451688981286 GT 1 -131585195.4886135851310530415916177987522139 1.7779284541542199003095702413474329 0.0358518698031804127502565983952941 1.0365103341464960319645069045717501 GT 1 -97121727993595.2013756234445822494238534151971109 0.7621010122759096113889993296246357 0.0257449035145693681091734694586169 1.0260821035884656414784320578499431 GT 1 -8873317227710.8447880022901021787493980151496404 0.4260107772316814131972725724720760 0.0140554940327369047758018884692658 1.0141552079438551198385507406810855 GT 1 -546023860106440785135.9306955126618992072582975565258055 1.0205977487667658615133217636992195 0.0570902320774301032301124154811378 1.0587846871171709377337274154969861 GT 1 -81081.0232409921273608648999872381393084 2.8797405642062511336392858479736844 0.0464449821386381828907683407199726 1.0475581546504925770671308738386920 GT 1 -85922932993420326870862000569.7782298482506927179206835902675628 4.3371939537646434351428268280145264 0.0359921506790249989464691014187621 1.0366558419555968048761207881210175 LT 1 -93348990452421294026559004917932648.6222686455104749899440485647387861 0.5768049092212296970841652130203581 0.0931832912423992678619925950969106 1.0978149344514712403363429569126645 GT 1 -15634742910823.5193725692893056796480412573854295 0.7411444150887190444868611532859577 0.0234499748312663562505908717760605 1.0237293009261239262547222863074824 GT 1 -13289847153614756108676416.9838111795849129308353410162712468 0.0499593933576446194438859238331686 0.0658129346895747310711443922823790 1.0680785767491976210842695569233231 GT 1 -3259771.5240975077438901001313942632278084 0.9234405356062669855850596985937664 0.0756416511718566095734450313515545 1.0786554591174307108580355192042769 GT 1 -25667167926183910840329338717293322347.8137929355340727790332207014281180 0.6472468129767628355334804846410916 0.0888510503361017292837482513619201 1.0930488938094507302008853799694268 GT 1 -1767917762237566706559302957242.5270572415294005059503313910079001 0.4623029892992006816309278104806345 0.0799021678526904026683500316969528 1.0832752753021187081538460103070679 GT 1 -397356873740046593549751421.3964872240758492051039111307266572 0.2578132784407529968732100339229733 0.0311461723797494620646835776621241 1.0316415271592905889662281330918199 GT 1 -707901316633179586299.8438567802167083661783894725695633 0.0771293380474301676977052524145747 0.0933759182305046119866537721666595 1.0980273780998506616359297173161027 GT 1 -126151536.6321749488408065698369191700042656 1.1316303233407097559657126737148385 0.0593623746054633090651883431462553 1.0611973087886240879346275737023663 GT 1 -546052279108127197865161022854571.6194977659378059730736375051980974 2.3357519024871730494380339804492730 0.0054302468240826330231670839379524 1.0054450442076427611065347858502641 GT 1 -5036.6664305321686002141810082241479056 0.5961899719071352443776522388269381 0.0506456933950794434922494097475795 1.0519732027308312841221908669202707 GT 1 -693833534017740236607112105376412344051643.1175421206093233239707038691892583 0.0658433092230905315418070496639294 0.0492519852604333020945888973072076 1.0505062202752731576130417927754514 GT 1 -356778921648261521.0798196100824010170647279835075560 0.2980495237333281043786411221159590 0.0766791780924191930085184319261437 1.0797785188412668450211574864981100 GT 1 -10145431723886191434684630.5138385235222797147290935879173756 0.1992735595982645114375388328891678 0.0106610402483065667849365560243753 1.0107182762985943956364736049225296 GT 1 -243254945906493561406477160791618383588.1934948032196946723092443092749864 0.1433758196458279915974074661547867 0.0319943117565560000452176094446474 1.0325173154382757413649520151367898 GT 1 -9452399161036254748835037484821.3939998081846684104730884744745664 0.1448251009027253121483602723583573 0.0467804578790009580665528521955988 1.0479100323720281226738190139584110 GT 1 -72095186.2115230445733222660408061191185352 0.1028241142075972968910132843632781 0.0118275870176902849259096493998072 1.0118980893917412045483286102572270 GT 1 -75246165770.5634218868342986824414078678916221 1.2417686959734894695142487863652593 0.0765227550590226182338716046142822 1.0796091196670110897565555543762350 GT 1 -38496950054457189559.8523062544829951838887994575038589 0.7850892006214454767526868531992332 0.0058328560757474036232847721564333 1.0058499336203669742599074278005878 GT 1 -5833054893142940634547828356307214294842.9753579413149174265786900141516094 0.0096846110925553774184789605239257 0.0230380142563474590908402311086555 1.0233075368635284889529271282243912 GT 1 -24889493139372977.8607885648451524892798805535153383 0.7589910539503958707941886950676571 0.0669547830770585367409476489384306 1.0693016152974083161079329111253689 GT 1 -13212076432459203709619741762.8632574532401895706668071404795967 0.3267366829639240926638807703300320 0.0475412860138014938688789797387295 1.0487085178170777106835556302723904 GT 1 -303114980243941081607310257067367179.6839340293538082254226881964154719 0.9148420282870027383704645532955953 0.0461528912481435269360682071730943 1.0472518837402293962599626660649371 GT 1 -143248848912634622130901773.2565722480356678117466160928464856 2.6832218191583348397259819224811029 0.0264852096656376590106510637670851 1.0268422613378240288084069418484271 GT 1 -343200235712685686216350584450128001538816.3588750589940944275825363988556793 0.9805778497663700889444810662044188 0.0471841823017653793594184950322346 1.0483336598002626287392510946261962 GT 1 -69253286282705.8136583012869926962066212820927085 0.9779646151798222553723039522595281 0.0402755435498662508224159505292642 1.0411090602507902227220210061365058 GT 1 -9004940031844041168920809071216.7767198120824967218709798516779213 0.6243112756478245766295811189099915 0.0993405732898166838890413307632161 1.1046280876041023814943540090461842 GT 1 -13444708365843527571334873.1254155418688428338257093775021163 2.1035111015284797533272198701395588 0.0880688406687297518653753403142070 1.0921907749462016300785773063107121 GT 1 -229603365242055381335947095805544.7900911466495871777991361702271146 0.1435942370828446951378700444057731 0.0677000888398483953672440563258272 1.0701007229705462964011712792302156 GT 1 -49004162612117.1827750273295831298289020795020187 1.0164127548103547006662552085099585 0.0432156263273863843428155211875231 1.0441772277830432778207347394414952 GT 1 -10676711915933490384294802802421826886.9729454028487295874535202914819867 3.8794057323346288220605873295677022 0.0678306097572656091501108985219734 1.0702407316234452378981728202102415 LT 1 -28986408550210193443037.8440168527779883866412654525744298 2.1584019351640899264563801457529777 0.0289357798678812240654020352827643 1.0293626747397179848248060111520505 GT 1 -6133385792444926410814647036140443165365921.0317329737590707423627695590617436 0.3207930710231762382469426587142696 0.0506060966772988193636782204658898 1.0519314944963436016916026298994948 GT 1 -4980709455691332242595495673.1610368472168203632100180066957108 0.2358129969958733286556863887711532 0.0536522134296918381999046093147648 1.0551451384122829561925357498559163 GT 1 -2382.2868411314543425027205011920082889 0.1816632368129478710596983167182641 0.0753916406979255343744680771693366 1.0783850264759391988677891688374468 GT 1 -635190241486362044527237.8908092421137333086676271016190953 0.8043693765071709468777994212325090 0.0819997169298118045948051635582072 1.0855575800063692980988020040216851 GT 1 -1389171651827572203175854189534178.6648170577844943979274691339561603 0.1171305895005925450272027257731757 0.0809277148194981961368731660028269 1.0843905033753000126339768019030581 GT 1 -901539205313558.6238251423246727651610980725841333 2.0877024266255805649756893403273644 0.0731378752069982065389996552616991 1.0759504571717192726795152994552705 GT 1 -98714277317762658652702.8224674392947526144914846145552419 0.0624429365706310824053998137805408 0.0584286508355624920766693852333306 1.0602051513192716324131425660889756 GT 1 -9930922169024991077844295359.2192295813181061498807095833598862 0.0385541333440909152018538094550589 0.0901678979104563053225877315745906 1.0944951996923539252299372784418358 GT 1 -1999463295270791877117757535.1448593931934899930919298674759767 0.5017051761733729942746979332401333 0.0460911776452483272942958309428601 1.0471871861529642068158388090060948 GT 1 -7506.7602418414203818447990672987763338 0.9286732455685947995945316803058682 0.0727625839284832137856835457250819 1.0755456339404214645327053068863913 GT 1 -834797262037.0027563806547999406838808115946038 0.3890664356622371409115614575572458 0.0451389389035247007322764260878071 1.0461894348483400586126129985169437 GT 1 -2154948891270775311875772738356.7735186200083579650728592204975209 1.3252813706248703842946776577324651 0.0933937181664846943114903680908062 1.0980470114970603624856929114627475 GT 1 -328.7594995542470238913691648584662526 0.3260775142366211954117296014860893 0.0141549509983979920130680004408771 1.0142560878430257019004271388279115 GT 1 -4825.0082509295699456091798422436442403 0.0439675124227521659615104971471602 0.0472639075894617403196521638311856 1.0484173366471855011250813429720820 GT 1 -3189209558591420672820662179181575674625.3140650909312686140277102654736391 1.3228534767837738679024909589452440 0.0104348530789134593350483557060442 1.0104896778843353044616029546444463 GT 1 -2275270719270640442.0608877869622393119957415535963050 0.1828404969302875494695485602067227 0.0044961779024888205654623807144773 1.0045063161105591333756119179724483 GT 1 -1669.4014815419843054097645527006485843 0.7870961704789144338060888110825803 0.0312104325799957045409245681350765 1.0317078553602735840681507346844143 GT 1 -20392353974399460339881026816.0315797192553398876078815128290526 0.1789237407588214903497720897852534 0.0589525274985850009718188525541059 1.0607616916773255883478243135208502 GT 1 -50424597918905488399484659700027060168996.9867893206428775650433615665067983 0.6193231417851491503937966678824572 0.0417041744379032700828110638960831 1.0425987537286277876053031626766208 GT 1 -26413935224735124.9581849883274009419136910197453931 0.2319184238202653664707089490190885 0.0372689753110388148172047404114520 1.0379812159708768887503534098860051 GT 1 -33363084233.9918482149933232277781966315642129 1.3630354508019086029524007742165412 0.0420693943202243100990776935054201 1.0429799402948799281510343117516923 GT 1 -43198572367699624614066653725845660613887.5026051460507386692550144524939315 2.3224639836443212033622038518397224 0.0966022525029918440822611508119198 1.1067528518269952049641897446403552 GT 2 -490710121065992909352474981157853293280.2002095778416821171569921039003466 0.1920777624955384351499465940793019 0.0195594531673836255370447866672488 1.0197532707449656245241644707211245 GT 1 -2909155480780430303688179238403300.2144631646263776584931083160873092 0.9701211772369118711435621003048960 0.0550095118616263611307534421087928 1.0565804170010898784982315451141897 GT 1 -20511813828566441979.9736794563378413527046106169063979 1.9156459493541156867464226512697412 0.0919775156485330290394384457135701 1.0964861381858138333443147725812458 GT 1 -7970918700599780674095398595937.1941745981404194499522139567777143 0.5803124891853664299053474917224362 0.0696827345868358371223220875178580 1.0722296054062138345317279847339116 GT 1 -14594.8091852419652020388710400249998528 0.3620695214104212246076812969561787 0.0059804888442151750150630877976054 1.0059984435888469382626652054071226 GT 1 -187645144914122.2957344979646172300699332414258737 1.0625023835427911609313301930376930 0.0243138400282331377116770596524406 1.0246143016856894063467498317698393 GT 1 -29437249543324767930493572932601263.3370858279466258490532156724858571 2.4699044859988150861823451120992010 0.0367983998969782585833652599167966 1.0374925431924344179490178434784255 GT 1 -79745334678.6096294489921278384444213880156554 1.6261131501292818555510478576104519 0.0622704910975509149110111165536296 1.0642937416025804157289545613628900 GT 1 -20207907411243749364459533717613209097656690.1313185684453334070963602384145296 2.9833511795099428917593043088642377 0.0087254292316049861093248417249386 1.0087637186798645680195440146292096 GT 1 -16231.3184758102228078256403388827008928 0.6274033986888724540911890207661534 0.0355614800561380777376496124705927 1.0362091915981789041613281061300491 GT 1 -11812549815688436484298.1242179682948417989778124751131919 0.1692546233800420988193852261853360 0.0312442374136349279875605545946213 1.0317427498560245995607945232188898 GT 1 -1451826.2571340128231342381331476596608588 2.1996003929471009322516660308480533 0.0710822144302770528225224514184745 1.0737350418565532757870912838393259 GT 1 -1555837912.0437522172907541198087204832294426 1.4610361322728910332368221845384632 0.0403795398527292190165570803179645 1.0412174267065173187675940910560717 GT 1 -737.8509837143946940262027985100403338 0.0706194948509684111836039764258857 0.0546860335739432457118957493608770 1.0562381670634572602460309493060703 GT 1 -31594198433124456.3193062708199003885479550098164891 0.0776131474260101380226075357198177 0.0833136937166249083859131435781814 1.0869899521827333896758618439004218 GT 1 -677517572033112341869092095562420844656429.1451258498105684016404692197927177 1.4798642539043769464696644006306159 0.0052050958090026550335448685828878 1.0052186895117276222549695656978545 GT 1 -29590100731.0632797429564732087837681296815669 0.0368066541469442522986862655362576 0.0893070525943848625141497213870103 1.0935494885850339335557351326322067 GT 1 -4499789618360316563655239803476926959.9986619891854050619544203455772029 0.1785543159121910474888913944272115 0.0803040955249155038545242503489819 1.0837122021930180706683612134709622 GT 1 -561704542140472931223537777645479791654505.1785362288298432990034361895781133 0.7872592437059867756256319220790601 0.0292869751912190003282608821677091 1.0297244003991180408215389702032014 GT 1 -8637048.6060281201305870900843422663307123 1.4056160454868637637208042992902953 0.0415380830410972875543419458559373 1.0424254492013657897905811608307885 GT 1 -4878431537486382329808558387484487650.2610925391978017511803553276771177 0.1286712290002903268202722462017741 0.0170323037050769411811802698224486 1.0171790217402366732197617223345471 GT 1 -7806673291318512747666228103.4718176472958697100324864585895424 0.1920086450142902635377258299930107 0.0786332332612528199797471998783533 1.0818970953544246149842804387753907 GT 1 -45623845213319537502146672497.0131685304809086495557612712318396 0.5698554739930552326599264886645862 0.0404241885526055374185834036857938 1.0412639552461411214917126815315759 GT 1 -12457936941308352401773547273021.9067689030681072255129953699293348 0.6230116394522094276449213927005853 0.0800470049675270597811189829483207 1.0834327026003176126342334209645324 GT 1 -110690273190779794640160230178564628.7008470826307597162256118225844838 0.6136981631271675305683854356648129 0.0471685529072546752704225348849766 1.0483172565604817673663771338453502 GT 1 -2794769327496061184406576049.6979009119317199935468211354176182 0.5374791048215977654575240148596218 0.0682178699904749382347657197875896 1.0706562577082964258659282858777977 GT 1 -567300342841461021956.6331021697097925114286742157953178 0.0138293594105420045219443910622329 0.0924100029855728693797405280609850 1.0969625474963451922191439204431075 GT 1 -3931993959957320569784785836396337450775.1764330434131118480825166818159024 0.2133312077933518331183727050928739 0.0106804941438971839111764263361245 1.0107379400211916839946523916772337 GT 1 -103.1080403561293272238448617761800651 0.3404471611238981159293628149742060 0.0187734403966448723418093956138356 1.0189518984731621477081569152221949 GT 1 -19081940198147046246309586.1566352735682130631473543135594778 1.0061316958677658911548564310104613 0.0868092215208180597277080126171569 1.0908104624072871821335927705046601 GT 1 -13608404876899110.8159557963599106461632771495658958 0.0279133253249926799368825990162299 0.0489826292509554808883903015469574 1.0502229508316979753328082827876659 GT 1 -5.9837004999951599011234804353341280 0.4926051082170118399128977524020613 0.0340438843808128000960680675396387 1.0346368747671904887274449411640010 GT 1 -1284522109724900934379834445091009.6081483795156420226279021630842211 1.2347834895041930113379086314589876 0.0938210862880758528798443416339116 1.0985185159318482355644239442130998 GT 1 -22.3151306644243905829065527642143082 1.0779995814854325899243667433196145 0.0557981942879670636431654669872704 1.0574153584464108684398294651015503 GT 1 -553436444545769424676486345542326783216.2938495461131018692549494043497738 0.0841239388129299674905210390647314 0.0971050124315208377968514933298330 1.1021490251643665268846507582532026 GT 1 -292927050863039266468845555486236017939.5913019072672870930056217917293206 0.5638985406953727265967653444322685 0.0122590255986181526974336535196190 1.0123347872657867820124614788726868 GT 1 -16932594016480754794704444.0021186396452256395664752174347512 0.0076210737628762971889284478285260 0.0648046305929578119743506419355704 1.0669998202832410953448191303892007 GT 1 -179208685.9473785491633590806497107422979259 0.4634863477451403289496594644831266 0.0897165805442490565736503802883457 1.0939992780103347947194946239321923 GT 1 -232946435.4784930463378158453932785711343526 0.0980367312676123183956043434097009 0.0874242301147024210027359534033623 1.0914841614820089428943040132772471 GT 1 -50397824057.5835395840942055217538519074696205 1.0738829012461460768998487076303306 0.0110876350830809593606335691752255 1.0111495610762839107724634373454495 GT 1 -35850096814191393937049.5653552324426387817366242622546824 1.4177511971583052163381907479063138 0.0211574314232681932475633403017120 1.0213844577823447465928230543301912 GT 1 -2086738913708166234538866557.0137702833641505187550460964622571 0.8294730207098251225887675110909312 0.0576547994203603577040412108415788 1.0593836165662262283063358608938537 GT 1 -3570.1025055416530700588939229120829907 0.7624795411984350742569883560644527 0.0424217555870122268400586111581934 1.0433478438634228595213686494518013 GT 1 -1325209868401242.4119223097458347035425120502050723 0.1716355261207770737088347240888816 0.0223725251834034958955123657325987 1.0226265866055971431760018808005102 GT 1 -193286275058462607365238517481928.0307321826448332763813064582719570 0.8118537443662048988274584836503969 0.0746840222924993884563962210824946 1.0776200022792394922229168368304186 GT 1 -30449808499307961086181256404.1491850903578636986351289235065351 1.5195995484829705350603510020456908 0.0929516269860133425520723233157489 1.0975594973079111481230202898485722 GT 1 -243692451451445.1962670963996750982244473339850807 0.3777171582853398421504388109171551 0.0061746693936687399631630485737108 1.0061938115028729325038014164678924 GT 1 -193476924661837208968381.4647113009071564381046716968560181 0.3822655318034805147772556313114896 0.0608746794027075325959234066534979 1.0628063469141484624447902483417470 GT 1 -182921549756206153140401.2093628276410918253329969572863988 0.1682132666533708722020654049103024 0.0050879389518433780635492098379923 1.0051009265854862794231235593482199 GT 1 -5841969568710345709030270994.1559971905128569809473876374978196 0.8306632271317309072865807175996914 0.0068097210274943831842528455288462 1.0068330129790833975928915423602764 GT 1 -268129888.3319669178638563634259262205738291 0.3353887636408539267687627267512909 0.0711862235984617403816318459442540 1.0738470162347922897127630677297261 GT 1 -80672680909966090926.1200881816888453890598429111238883 0.9598946942094028464573416444173999 0.0546701351260964478643058063095226 1.0562213490382068446780277629995792 GT 1 -324259181249229432012232.6806611325595806791619536308899512 1.3999865481010497293102881164516196 0.0814301976391225985723501076857420 1.0849373811765371797440113847173638 GT 1 -18038996584104456531318538275319868732749.1931949235520854814713101309508885 0.1626730173798934986951051013423480 0.0322718385004385737770624738064672 1.0328040560414025026922938379702119 GT 1 -406687797952.8674499064491070266804284161557888 3.3642162335364555729459417889212249 0.0028036677851861062627943608810935 1.0028076054233192059756034705672378 GT 1 -13649204353114334933756419298754273560977735.3210697110784870754116738695114747 3.9949391401058646950547463748208026 0.0481632597997766158536525783585224 1.0493617502834208672699889934350326 LT 1 -105.2654339636875080176919526078670710 0.5551189920584373553129792517084231 0.0165351961707883961283503208304771 1.0166734284439027558774617250615128 GT 1 -5611256084022.8275503464258174679303512039332972 0.1226625600988398728232090594399964 0.0992690065468483177521863024380119 1.1045486303779453446171938504592587 GT 1 -686731181113776229445069100595324263719.6892300979342297788659024235586454 0.8293679996804915314816909477002924 0.0760216089425307049236266175094823 1.0790665939153568605720503110374474 GT 1 -35048120126471287383748071954046690.4405398821156712872045133242412595 0.1845435077711046776289298968844443 0.0021784932481193391323956345504658 1.0021808696164308804278472231757654 GT 1 -283433649.0327995333446998300174465773304536 0.1121823724746264657007793920959991 0.0079605560833052507330983461039066 1.0079924104749550094110003897892137 GT 1 -9021753107400886340982875375726.5376142964188625850269737683583460 0.0641554818767144865289105221151330 0.0948685305340258859320790758306008 1.0996750757047460173307824593620699 GT 1 -359474937947548463.1021474993712866864673170663824000 1.4294348273819144177327178910834112 0.0198963422189030027507292318375064 1.0200969396650974591170745847841478 GT 1 -14817877215039.8575413150333674502521996457553368 1.9752466259530136892118255070589307 0.0596454413645054401181009616547972 1.0614982847986067521361555342915314 GT 1 -18788309953766614434525348368826737624561097.6292893067798516008477201741970329 0.5076127488921596888586127662686840 0.0643715727914851298998714236062913 1.0665368607998403188856643853576851 GT 1 -3317277412262398886203.9429112269887233573921318598617529 0.2097502041596760825814699597470286 0.0522378888225495597552663031241524 1.0536517457937461196622773096385447 GT 1 -17109075175181946658653873709485424284.9569861902599882303631660321089206 0.3112852847223241173119602405498250 0.0523914254684145365227174297380108 1.0538137580558945932638814996697787 GT 1 -45348187273755666027616.4377821695924223746113991020022759 1.2974081976045198818496815312008712 0.0849802700331668750111413088455280 1.0888096511338075774563294747731115 GT 1 -59268324533915781939606423708112457145684.3917589146300238847703717807606054 0.1599345489594320540917220386622176 0.0085949534605877909472981632684878 1.0086321030924882157964568282733759 GT 1 -614.8225299354668529086929275289744223 2.8399958051213770018027374889668207 0.0839549610529813752105395537452260 1.0876897463606362499594677564599004 LT 1 -1283645076737353748161985532332172.4488038881560054600002544615760292 2.9357248806282947830086465950560073 0.0035573888210043552029147881426604 1.0035637313750377883229138905588789 GT 1 -652303267719.3519963097452328489144811075656455 1.3923024609219169613531038275708816 0.0396351058847525373328165161901381 1.0404419687024981701433508496409545 GT 1 -451940018671446805142975170227758986.7086179947693480402118306753939305 1.1038543682902554876894802413740417 0.0915477773421840393596688374827479 1.0960129817881958294358831486021463 GT 1 -24665497403280581210295989946618987772.4360800587856099836485551376606968 1.6541462542776147742470027856931319 0.0923924365702960612346984326312725 1.0969431926716581664344646006182725 GT 1 -4038067271119027843508051336257840001616.6057250358188231267773370769816847 0.4714520810446564535268302522216265 0.0806116624725971461114485301062983 1.0840466805638557098698825941798531 GT 1 -27946936252909.3613997926591800708500725844580317 3.2842696244159732859388105072875474 0.0019133811155339378509451156369666 1.0019152139675166583969617636488854 GT 1 -326.6880479480938674852861842635676726 1.2452780309879188329578796478555895 0.0967637967067335850136193188077429 1.1017711835872174141260236628497192 GT 1 -17232425542645990385.7076274065171257435858035547017131 0.5598233133700194994480376392307615 0.0934991276210151960132531412157004 1.0981632864280862069397681267332918 GT 1 -68799684378.6013922706490029571128509799500337 0.1625184274758985922380247543927276 0.0151809699916628923801514507637507 1.0152973805695759598700200385982070 GT 1 -25897794830987794718.2545736941395318253706813604467097 0.2515910774073832484838927472583577 0.0181681784825839530727593273999579 1.0183352464784363652433521958372918 GT 1 -105860968090509410083688411319365234345.2330684872492671017642146814161693 2.7908727398971299900446952328646508 0.0382112107796855879300604379902983 1.0389604062469369633298601310566888 GT 1 -9232374008308797453304132347351396.3693582561262178491380592622417276 0.3539308852637514160499471497171148 0.0443778148206008394186423894698760 1.0453926478315730666300691879133493 GT 1 -2344784344794629823355704768688453.6307836712834532345974936078657227 0.2531505473992449312430860432151079 0.0753075709678635055164498014480280 1.0782941059175851736538502185307967 GT 1 -108123459321449.8564237313638357799369866696365727 2.5817166142803213621993426465684984 0.0322885281494270669825443044875642 1.0328213024062090537109460844886066 GT 1 -4939478407642337165.3697030199387232956225410216217234 0.3161325130452744940617657916123393 0.0572776947048255167158897764984369 1.0589835197851930927416221815204827 GT 1 -34563422162598292549824.8012457883100824322358435105324681 1.3273099119913986801364389812050966 0.0722341310082112074671699442577735 1.0749758743730687127267735830085884 GT 1 -1671721363665264695393516844908358038.6654195811084987047892523795919337 0.2408428493857192983559537121159779 0.0233931876333608073002618850748886 1.0236711517833308587513650955724251 GT 1 -240066853566656490241743836009.9802058840662920215652374400917157 1.4766083791706822258513985503028965 0.0030424874377483904914538447254058 1.0030471252119549061510503060969916 GT 1 -1013598590134613597503211131675309642158.8112193861412322348546175995523273 3.5081508422264418323309512027011652 0.0278619434770368383638545973302363 1.0282574511476561870069927511014835 GT 1 -17774504215473644935350231313.9590536999663471926701889240032678 0.5845757238930297811969176631405459 0.0919867991972445695537909868010442 1.0964963621574984349040619704139459 GT 1 -260137046319690562243941382.9780129568520856318700405758830832 0.2965012532370315725203544404350046 0.0159357392298317615502302504217752 1.0160640784014653765453795046193633 GT 1 -2960796897311612.4597981819772734378925846278925232 0.7351505389072959857272142834359519 0.0204260010060053367654183666675940 1.0206374967288252096285499214274034 GT 1 -155024592322736393223228270591330.0428832297808244530081738403058539 0.6743673179320478315013910647016070 0.0456271288735922686514247022852411 1.0467008336585830972367352500203163 GT 1 -4825589543659763123037263045922303598719.7569442908066421627316809134713114 1.2852684831069301100379295933160062 0.0163136530310361492782373240904640 1.0164481858227660860740586560510672 GT 1 -258783828756693640453093057828128353958.3942509817146451769499013457029162 2.7902128997358373385309546588757191 0.0327275657755160773411355078204015 1.0332750918483275906090421543367746 GT 1 -11367033794583590383402409704874765966201.1588918958715143260493335913729577 2.4568392863533763781740528500659894 0.0164151969683475249340790978963849 1.0165514191136131808145030163787702 GT 1 -766388409812204846395131107410352873669823.4073788179744419936273387530194829 0.3162301195722129250896133186700409 0.0034407308206460372841657443382444 1.0034466637479158572103891338460698 GT 1 -590299659623788565432032223332594897.5075811706485335502581845749401942 0.3423919985040819801412427726592716 0.0662299911369954660699500353870899 1.0685251142634873673781882173110381 GT 1 -66.5806930536934376204695020968271936 0.3887654652784100681292581101312778 0.0987163728170040103987775816234233 1.1039352793642068887372105835741645 GT 1 -43468178259600.1484103735459237165565161583074160 3.4986543908473319713145326804117973 0.0280764987463849456249108098905726 1.0284781800328717462758317524391595 GT 1 -19865677133433246048663973.6694386109871048666331346358312163 0.5650015238887932599916999558237433 0.0359200749358781232345169075887789 1.0365810779908665838221256153313565 GT 1 -14.5403515699191980962257113256167203 1.0566807867663450552407456750303699 0.0452585192540272612851552104603264 1.0463146759370364427599969198281992 GT 1 -1008313486885161103740555.6048633253936977501550634568364158 1.8064355798498068858359577237115278 0.0953158222435614728567385806713788 1.1001693710428697804938778062346013 GT 1 -1508783576522164167555570438.7621988574274019246055827914538724 0.5045902531789440783488873515423533 0.0721941562246772822157225644312030 1.0749327881552038184192202709473105 GT 1 -1029402.6700887916005032625859452133033909 0.0080213350307607620302835260833865 0.0593775097610695194761722152857938 1.0612133992329818481807222271019237 GT 1 -631901197068688842735267557007385.5064835789685131887063949803446519 0.6248285614740282630802248809755038 0.0698710982423137228375529260597010 1.0724320983989650911597956670790572 GT 1 -137004004445568437193133254911271299214.5702761069311517092773730557194263 0.6964195884424360231917246651664242 0.0776573721627361864117922822381359 1.0808385107504552685717240361736686 GT 1 -438652709.4715965374684967071762230811292953 0.1255818563511299346698191851961789 0.0176294336581302611297797534363037 1.0177866830093216988552166679407637 GT 1 -6693732512056609910663997054939094968181.4274667476618563262718133689553901 3.3744303900358871859242607490268525 0.0788532351143703430852404800447311 1.0821359015834015030936403031495944 LT 1 -333740906461006594118765490.3942793265510407643481508472614713 0.8479727249007497951579777100400774 0.0873854374317577851780945095444433 1.0914416533859920968003577464751323 GT 1 -46719520616487366249079821.4852002222674933473152892471456551 1.2698297554432404451691803460239403 0.0688638441538181138273148892820237 1.0713497655171338142049959872736675 GT 1 -593690574567432.7146522312620440253420194289922084 0.0301642989160942698352815249882226 0.0675723582973896567924413075128126 1.0699637265042663668253800179116171 GT 1 -2.0947169527908141333013944305053803 0.1145452128413203052365362365982820 0.0787113160611230664471308337700281 1.0819818456531180235535855860468056 GT 1 -9270002604918.4973620680422144234871638399608175 0.3274046603954579816004708486115310 0.0931492432063581106984817745597390 1.0977773883889301576126655829601583 GT 1 -6228582834728462065223665073197990787112743.4119290489091167322235018799422193 0.0897488387794953657420306178763557 0.0683363571655649977945017128516065 1.0707834276823052853882232633252666 GT 1 -135387375092415244937863727063919.8386530590074569324037649382060147 0.3358745983693755450105676606025578 0.0332396442305309398255474346769149 1.0338046366105782693912285756237115 GT 1 -113.6897688953324239226835583435626957 1.9583140728095825238674518448253383 0.0545576542345024301163053436063260 1.0561023702515568444978496494772800 GT 1 -13463252701014.5123646158019708873534958529538149 0.0947736517337870428657675786900546 0.0957721019018147906004882262265686 1.1006738506956076483636866784910408 GT 1 -224080416715279.8910585037144192952013667783410732 2.2653264280563355046314402670808127 0.0573547710097684496934403868538997 1.0590652824161753699079015343916882 GT 1 -26.1146811998417666057094122145763606 0.7723183051726414958390016164589587 0.0522541563567106388492622660541370 1.0536689100943443906073774604899798 GT 1 -394906537921143010529229671299273251588948.4197602632273838842142790885330254 2.2518169206756864114383146963978334 0.0735630644438419315893465832941674 1.0764093029709758115013852362067695 GT 1 -20478978175384.7531264492891845123855313594875728 0.2499942404768361018864737543345046 0.0107341495118426507449555373016214 1.0107921761124339196746855665165715 GT 1 -368737563736265510661800665236863662406.5769119639661406366429427639587418 0.1326891293302084490124162138256236 0.0279728515283170879946639118696059 1.0283715443853251175436003320632172 GT 1 -837633064609204692039978729.5183736445322615023094049182129965 0.8404249806651927537808127909916070 0.0258581005262642567413512661539485 1.0261982986062746503534867214343990 GT 1 -2163569946.3679726880942707580640759282663695 0.4458253540007955657351247298006191 0.0472818912278362800614597300669302 1.0484362126069056679927184844955437 GT 1 -1202528914371645813738728008349892429463478.5522016093941875833888721941483214 0.5687556988957202095904198355312530 0.0149694594424776842691497307068718 1.0150826326485585225989307187690851 GT 1 -1048631850737427869907175285805509.4424097762134208028162734085096057 0.0309460331365870870517143159414743 0.0189166116163103770295732167663020 1.0190978195801375427529769363236635 GT 1 -1265212.3103515167534793445121935516590593 2.0452549510594447314611103550789477 0.0057696948027033397122174114518580 1.0057864037932761064161681180739918 GT 1 -645488.8263616385774206291091871759552583 0.4324967444020317933858961295795480 0.0137141985354924922002527725031104 1.0138091068831775633953187033250521 GT 1 -2392822156840544.4507077994816264264609679913668303 0.9254582240419772086451178233480954 0.0276857085757932159242111945696524 1.0280761816998219424134304425855018 GT 1 -138321358920762897700491602031820552791.0982858162539452106819078074697249 5.2538006103877429502152559082299630 0.0236582022004918515297149219822890 1.0239425512122540744356655568503877 LT 1 -1698.8877233393497937979874871070758837 0.7678150599608492154524762417715891 0.0914011260246629948062317552995142 1.0958515649539513781478026200444063 GT 1 -279674885370559091145828.0402821539768470839595129519462408 0.1881117576927902871703739509090339 0.0882261848417608092813860540488771 1.0923633293622090895008258171786211 GT 1 -371299420.7234064040842614357848711309466623 0.7378935230948127171209980046244788 0.0204161863464570696104009638902046 1.0206274774649507123818167949065614 GT 1 -446731918551183204908619162431203.3407678829982319275751243822581199 1.2990606744072011291928901048840215 0.0704141349880321791747701294586373 1.0730160984519361696231474341742482 GT 1 -1395145110382471906603412.6621027043868324376405038622813089 0.0337307784354483386289195585281539 0.0554747869387361188040311107460349 1.0570728977846242406219725215897690 GT 1 -153043498016409414153354479269309.1613837531634797416553569212946426 1.0893764753771062482163289563594469 0.0240161272431932637475479312496517 1.0243092165203114928827067811158122 GT 1 -83034106577660464541705564818851.6785134473600475486603730839956130 0.2278411738031874259180522457133170 0.0071726304224481188900248765014888 1.0071984774040929103450851541130466 GT 1 -789620654.2948521971064545085980484424499870 0.4034583657214271521835713482669959 0.0408106417608098704986369004602106 1.0416667697432303439068282227655377 GT 1 -872604178134665029608355.2388008442926028052996763999188188 0.2951727310711967797631509668376806 0.0308992270617996614291656786910143 1.0313866756584192925148036547386649 GT 1 -186140004826944696246570598118.4152655942777735975092182271691969 3.1880797555403161583604714225005355 0.0492928363597878744518651220863999 1.0505491885238286313966848467367424 LT 1 -444770077038279832856210273364136.3088981900129773043158110530222819 0.7284600352720948380946956848156813 0.0812241458803234359744180635237878 1.0847130883126046725014989171745301 GT 1 -829434704269808463911949664534527521.6246338074845063535256357846149305 0.5517017000007111789230579686341336 0.0256684824278302136712718634213495 1.0260036661341312900549829930151475 GT 1 -839564574041461165245745088499018.4078374296615176332544447924321246 0.7570476216949664679943040460329980 0.0306474880268308591575995593342229 1.0311269438007124211535666061288083 GT 1 -633223780253461165.8552020211551721193420940259989882 0.1599820509917781582654959681500164 0.0515171797729744003800193470369224 1.0528916023414500248777314136938092 GT 1 -246676479980513097130791780.4736571935800539253328370920172610 0.0657569587515415664429798950064226 0.0128180555951357258336745627460863 1.0129009157016108060178546150360602 GT 1 -2930356331633754306982035641684634782808.7839962057907658964740914482171529 1.6720138131361954479267705653794251 0.0691639556368660099749511082760575 1.0716721242350706370192215452193101 GT 1 -7101896306237229380.2846545427700601382423330289800283 3.0972082762427276790872157106917827 0.0796842268936805141954674398588075 1.0830384361922506886842885456500153 LT 1 -116244853794452615201365142617.9362054843299419291588375323155208 0.7192779220190452375195980366567614 0.0993022881205230024942891630272975 1.1045855805759520162749265848591274 GT 1 -606040324549985668665848437148.7999495571986883817596641228730991 0.3668981661279065869892762596750974 0.0046796100473154196932262515403758 1.0046905937019560980361963418766934 GT 1 -494048520802324736803146068734362145.5511063720190074825164695175869287 1.5014004935557662625734034593410353 0.0035928468183537318579842271048199 1.0035993165937404076163826741751290 GT 1 -1551533473935079360.2044231422550510435269149448419631 0.0607193192095291452872505742500108 0.0803924161047753828829998361318358 1.0838082391771114535456517086913666 GT 1 -372553943071961727706.8108700838916238332635957541927085 0.3607205401318645168939691434987927 0.0732918625165563807197341043544440 1.0761166092869601706619813447672105 GT 1 -3892712107.0773163304369850971797569541580089 0.0837268607359265501751701029943989 0.0473861348197588653671003655741268 1.0485456356297192260551567595359779 GT 1 -7948491204687542523763968889645170554101159.8215832359303104643913928275564656 0.0070178530077975187843813746982657 0.0971460783546655795263150933141942 1.1021945087008009479913198967841228 GT 1 -4462485964103108979806894121825817295979.7219311476489289879197357387351223 0.9562353136172538330490070388634444 0.0772895503288474456028256982129281 1.0804397993602570032608818826942012 GT 1 -52040176265352588740635370908779356025.3834597521855943356584354043706439 0.5371009689175984456117486999105495 0.0228664450307799404486956399860135 1.0231319372345095380508165900221979 GT 1 -10226612160443806982793.8757269127678587148146406291785773 0.1040066334962888633807449455560174 0.0562597192800418166908711538120171 1.0579042770468120254137422781567135 GT 1 -699994229518050662381507234885391.1257469367558215744086180855105842 1.0299679964151496263802631678432705 0.0546880687121627345675605328650686 1.0562403199359234107298712223106384 GT 1 -163210686171.4033598212622851640644211746793416 0.7070207320213041091695119755106212 0.0764399695301747115305770190367632 1.0795194782396230798594080464347996 GT 1 -592415190095278119358456.0770401222983925687278185748136445 0.5943114503544631648563490939982420 0.0041990559518499451893324157735675 1.0042078967446285486013675937195359 GT 1 -332291756247.7353469719566246597768700363061839 1.5685550109022562666179223060433630 0.0695614462143121449287205647336027 1.0720992407754073196882319735834763 GT 1 -188391798236963948875858223689179328277.9183821519684876989828079822683894 0.8601538127857686243530602552903579 0.0359932677861549288910573677410382 1.0366570007716562153630722704362953 GT 1 -80023826381991031782934352.6036509834458411707510393392138793 0.8695119860939543721069660757248390 0.0538526417722278041913340437696983 1.0553569522643144803712102508436757 GT 1 -605428693623487781.3388647893315364372049462622629920 0.0119942055011590626730879077593418 0.0332054833396291819745560943680684 1.0337693018069040574593691782559814 GT 1 -946976.5088951992878331972360232928636823 0.0617323984304420314184110657152320 0.0482741363965758957742646991492200 1.0494782440585172256802819397874661 GT 1 -820750070976713123316012815310570336094.0291942997178720396694797179885916 1.2664032524603476219437007713976497 0.0736497127887369189744722860322897 1.0765028359400004299636790552684171 GT 1 -112865925718470707.7921748801310634081531994908397485 0.8313624787115429360342241049981153 0.0315014553069017534762659827553466 1.0320082987762792111154464472001266 GT 1 -192.8163965716761066655725830592982161 0.3650229201833114874430641087055310 0.0366685959364681941068261643175088 1.0373577892479904281428685222828212 GT 1 -654880674052.5721335166004470846841105207473217 0.3470027642929630533144158749220837 0.0162528611921371604258319877657963 1.0163863877092767930139129062069649 GT 1 -10976585247102043017634652875635836930379797.6388102394117025779442158423904716 0.3658029449276837682366878782238283 0.0835482122602462839975550273482564 1.0872458178435534378070756321808928 GT 1 -14978183103236975467523574579852218.0431933667927638263902438735743761 0.1403377231345805899279569644595207 0.0618032693056683296907023947230097 1.0637956177513527811186428985767022 GT 1 -1505741147494908958818.2542174515886988935485799666846466 0.1736752587065703178512196463010616 0.0533667810427599290044292176144057 1.0548435692066103830328897729009883 GT 1 -719239404581069385.9018275328296837363179695384802097 0.2357933221058554514802007079508754 0.0738943096149151098150016533815789 1.0767669143640578045099596678534904 GT 1 -5242873363721206177800186621357690875180139.0090536957253190268058440330143089 0.2037270278340844908829613770239978 0.0545855277966163317237598037295195 1.0561318527188182861288945093326710 GT 1 -18058757428911390434441400710408599255.8276205223648419564014741131644284 0.7170217227481340686733766048967160 0.0701981431390722590619197085438335 1.0727837726735193074302941803791294 GT 1 -42.6030501011215616869894510123218554 0.1934245512013642931514378033016561 0.0737846866178029259304504999169058 1.0766485515133238189153565454877777 GT 1 -1172.9699750188919509391970198660922872 0.9877338924288452174289083034968719 0.0508911367432298196070131102819381 1.0522317732982400373626298752655151 GT 1 -43711178500722613471000949972373.5862468106212698730536296002985351 0.1315369789891829345628796774701430 0.0704318626764342688956730670764401 1.0730351691565473603800199476895877 GT 1 -413035067240794635149369813824981458.3807639713774064974752470566250405 2.2283041818121778302141726073928746 0.0859767595942316910577654299738773 1.0898992807114610102565655810957758 GT 1 -31194199.1800007666597878591012170018262292 1.5903709387715972883395601932731253 0.0465281128774422139580280258699732 1.0476453382540793217467841111396363 GT 1 -206.4556819467744111594524845666571666 0.9670555699931822257787314341821416 0.0396605712374070279170488656575764 1.0404684853842723094603394282355820 GT 1 -150.1741235852901235181553424180399822 0.0321191284085257631743951863531833 0.0791584327391470611723216756077873 1.0824672800424755890190512601066039 GT 1 -95262364513628014124194117452103125647.1823045246170251680512520200384898 0.4144184566766922102919353626962361 0.0891940118529765264079325788903493 1.0934253702126900492654453136405334 GT 1 -25220.3072426049494150286315488917851256 0.3745665803916609349269827513329970 0.0449390211859486092946684596352523 1.0459800883785589268173516106788200 GT 1 -147790583137972151172888.2373131719060409088130140024880901 2.4613766438672316268163921972216953 0.0032065805637956539578777794029916 1.0032117326599406985096691726342617 GT 1 -108668006520.2741795178783799770116263461251211 0.1399352534603251755979706042880471 0.0459553153055462749986565664729796 1.0470447693284140007254760665852222 GT 1 -642079347005703043771938634.6671834465271774299757615121783796 0.3326326117520054462986179991684016 0.0695198941598780980581142931790542 1.0720545832034860325050166098648901 GT 1 -2786024107397328391.0268316575135232642556296740487464 0.8178774042318287645034993938595771 0.0103119339632467344878574838905549 1.0103654703145104613864898749128994 GT 1 -204681393130923455297129631186.1956719113840851187207377485539425 1.1497375004879499204979290124004764 0.0842948450710756484099294964054601 1.0880608493889108092466232907976564 GT 1 -2868136.7546213934677048634023193688864429 0.2898180678174522824622437229286345 0.0280220101715452466047839443854572 1.0284221189874906464538647417224635 GT 1 -21187266989368161606846349628624966109455.6553256826540768168801327912899505 0.0048950092526925906088209361156013 0.0645120595428543940749388135996012 1.0666870243642887641576379474555272 GT 1 -157209033045.5077777778329718581342197928754134 0.6732251584097154928548650187470013 0.0333610626868019337605339156737243 1.0339302376251902296303568322063487 GT 1 -52749675968013790296864210240527.8675350838914601196483082785810512 1.4341238243653744519180658952178641 0.0630634557525510897353092123381650 1.0651397212915605617209017074944878 GT 1 -819170098449934.3844681909053490745711786220484804 0.2692212734923926542096781971965275 0.0463563626684942800949554338340299 1.0474652230935555053390237786424960 GT 1 -1325517025780605549590995464775343141174551.0381661669651147811323512957777663 0.7138807152313989005356033678172704 0.0154981141266795984767867057247508 1.0156194653402202567107297181928866 GT 1 -15880943.7367667471207153992775491339123947 1.5665453582184061513721124401610667 0.0855652256554759300976589464658155 1.0894491375390338129386421272105730 GT 1 -9332285460723903241.3098519503374948587050031810950085 1.3232751181742541777802904233342036 0.0694049531793214857837689148731155 1.0719310621511110953265647746026573 GT 1 -4971664.8195960148003915911231806463318097 1.0276908927086350175543124557903934 0.0581240673759849720944812968097573 1.0598817194237492272681914943437403 GT 1 -2823573973496793790.3015605486099960422657604965946810 0.1827756406823263025218938036566283 0.0491649954738335373540228500866993 1.0504147283069718887763459555274332 GT 1 -7742131.1452948766619602682419739939063668 0.7498188117879369654863242613063750 0.0041028057617822208892337817884016 1.0041112453612763871725731387296375 GT 1 -8958060462604586509389.8380725375771378371911836077082498 1.2355992861880938540618506682903246 0.0227171961427681399514726368543594 1.0229792073541768349743821809725730 GT 1 -188549585809494880.5357338332368397260496899843120474 0.5284896249749870424430835258699631 0.0650700521421987889226322736163033 1.0672836745774670315528053051623939 GT 1 -10247679049232684941588.7600192299593684849280645895109734 0.1393871364172748934159932398937964 0.0325540020068029239615312664890996 1.0330956716636759015236173157924838 GT 1 -1549.1389768492659372946726372853925423 0.0259711420681343316853908854697165 0.0491271877326319001393313708596546 1.0503749664246545873117724144906629 GT 1 -471257510.3875954194931143101356201668343388 0.1118966798664151119863753247694630 0.0644084068023912197964216729964107 1.0665762297789119013176984259269740 GT 1 -22458.3853708248431612541392189389932742 0.6561485089258196276067739439567106 0.0504354487833888687010458972215761 1.0517517666102896572719241289991361 GT 1 -5098121697797399406023543469716730321042.8631819921210972935582120138616511 0.7264787988146967527620406507549420 0.0761117011921641600403058754716192 1.0791641033841934961261922806003974 GT 1 -3822210.5199360327826584688072509324678598 0.6162294639258540390024164695299294 0.0087148513563994252316147212838391 1.0087530477526767620170056961777803 GT 1 -9.6924885830537571136568800337949379 0.6807571111103475642867219512533938 0.0389951002250996173265084900407900 1.0397757714037182571510212773052849 GT 1 -232381269306851980469.0948587810575056368574059115546720 0.0581531304685848350489620504877965 0.0806984650335976467441920836188140 1.0841410984016471976615614874090205 GT 1 -164632869415632998011012105771656227.0550084746807012776377998026858961 0.0966236517028146974313397318835114 0.0379727821359468911154680153864455 1.0387125357186936754985680792528486 GT 1 -6216892414.4193630734116233674073817699836221 1.4811524404985911491306430346347789 0.0254737609114289475442945094615087 1.0258038347032495528032764915297824 GT 1 -4678194813450836322185138118.3996798710009392077808089586849586 0.6553249999388175809462018020562134 0.0694378317411679144293173376520802 1.0719663934617424158893839764110857 GT 1 -54853412485042938874302246.5343374482348508978880273157553326 0.6236501371565884834888995280415808 0.0872188177470796035165023601876052 1.0912590960576827194913484693246681 GT 1 -215569672491995799347493672565324553084225.5876271858230502469966202016284023 1.8152218946441101568363523581476086 0.0321270909641341244801035754053100 1.0326544926434713028127460961182883 GT 1 -223166435984980553475968505.2313681349515265499165280367607290 6.0411628225480948789602366058535476 0.0751563975133307263314342814560855 1.0781306341578646678046738927134634 LT 1 -163196731400973862608774823836.5108977874322831473648739163685979 0.4930096120780145288638628260445695 0.0393964734045482412713953867939557 1.0401935185157496291916843072742883 GT 1 -2098167.3512590979747931813962288355753540 0.0990097332901129495371497043919527 0.0733048139643777829347206419529834 1.0761305851417104708284522737482283 GT 1 -88991558843359404798181471932282490734253.7929454125227800189410281108921764 0.6206181596213403732993322279496106 0.0957814186951575234675499817000979 1.1006841543384844790767730913307903 GT 1 -8756569275849459688244266268230.5665204361869111268988258933211255 0.3905988756522668278405197916862712 0.0410948921809304243876915027832479 1.0419631580882585773050043085097254 GT 1 -8622.3722438120487080102414441854775453 1.3794763153635348429725462586707394 0.0672831556362380528123091049781268 1.0696536136249373701094675529791545 GT 1 -837971357833253500341.3460100368107687997506030306136887 0.0278745018404516269855457597718643 0.0441935776373869467290870791119526 1.0451998735024063999011396691354688 GT 1 -3681933801161377498921238495550187370373.2853064305424850781108432802693914 0.5060025924831828996473492950851084 0.0001185467030672887068827615056099 1.0001185537302830670971310154313791 GT 1 -40149488334615738504473077498764.3792082923291767365846499421544375 2.9773299296533998751493220778652547 0.0007594156610432277132664542540090 1.0007597041631876249362086575035009 GT 1 -53762024431228196668844568.9506941662096907525561854652808127 0.6901210588790766842803748722919696 0.0049101022539808482398433224789329 1.0049221964113273587537041542186345 GT 1 -101669825636900162446874752140549.3024097490106362513360846623983406 0.2486237483746399442962816084885399 0.0835296296769914679201987718301895 1.0872255413869961196305454021854150 GT 1 -4093013458067938434151620583585674887077951.2440152719453485443137380031894877 0.9133114462192489107034928347311902 0.0384290562932695120862086727338250 1.0391869322688620897973161852883481 GT 1 -324934498662939305482644676718443131813751.7790176803260633407812512474457775 0.1106765185665838928606933702004191 0.0653750055703277976846991373310270 1.0676099056220176507634103507120856 GT 1 -1029159537342306729778.8929845290107925809839991529626905 0.1938972273691011331393263390064528 0.0239326746177599966135315923337183 1.0242237140236928934584560864788846 GT 1 -2122344128540714683532.5983076230840031260383538317569667 2.5784259937110483636335108190083602 0.0680255325299944823275001828615976 1.0704498600902562129315478416532501 GT 1 -199547431167.8997190209532282321243082363989522 0.6667308025642754848621834334124355 0.0355061986577585900206703419153517 1.0361518734665009983486288518723298 GT 1 -58552917788810839928547806.6086745954492085012850790660807395 0.3046635425075414802537666443569268 0.0427570170524085705194805039326632 1.0436980190798156314878069832886999 GT 1 -5740681459322366962510.4660279488659355905770394700291775 0.5587546492831474355437817619733336 0.0100643638687128740661865547609499 1.0101153519758045995926703846420219 GT 1 -19987259870796136646846171.9965033147435713889526374150428946 1.1155721540382879594520107165861830 0.0823629784406419768719623851744427 1.0859533679048348944085194876730045 GT 1 -3775957.0461995785049594135878129573091924 0.5081599066887673382943264103061004 0.0641432527393796869361718641145838 1.0662928620160370020998781020334805 GT 1 -36501520983.0473464372082241641424789038735903 0.3405211041026571690650032842584243 0.0500652480520240967419364503573772 1.0513619789063034535797361614484176 GT 1 -375820924621731.3115268839760902175627517288234100 0.2674738803742481833280921098458464 0.0202017312010614878894983700721907 1.0204085766715092373213666434030052 GT 1 -149.2296188078062682931218862661784579 3.7157777197763005970457109714949014 0.0904600429644885605717446245713897 1.0948163490197583048042526071402043 LT 1 -55370344559021.5022488175977019835596973933611849 0.0464268116209015851550852435266632 0.0237376088660267694100559139904409 1.0240238853259763896104335765864966 GT 1 -90606957779252027751074058443568.6838761720106449081961548707852864 0.2100733018709826404782249489846360 0.0329481464074496184863579212277055 1.0335031618097905854251010380932120 GT 1 -89180691518706865787.6908739000955037977536488702156238 0.6161644245550218997218296094142687 0.0803104523154362599307887735918704 1.0837191140564486722171528344628664 GT 1 -85893468943792924991646901183342655724.9308964311122154705469403566739977 0.4667678730613783508046116333695002 0.0035056737461008385198435481815780 1.0035118330194563632828109313827701 GT 1 -76498971646522062888727131515149095142775.8702320188146441754067675879466293 0.1675868152726503874234577725468965 0.0272013003634205511533207255871886 1.0275781044933940968763376246051730 GT 1 -207333762490673.6648464854107991596765091919769540 0.6678696498484310115347196962289774 0.0687293038544347184606016635140345 1.0712052854863891358926496763376668 GT 1 -29516077291474.6824095300000624368711928093207825 0.3882476312179144406491746855412903 0.0750286498689030749528915702865732 1.0779925147806264681922893115126142 GT 1 -20145785839637721184179867507895536094.2479751255941757245132901404281704 4.1932673248521318211994725286367588 0.0434277262353408806995228062069521 1.0443989323033242797922247416039840 LT 1 -948285799158956565.7352316815972993631953525844224047 1.2394155398188918179701058565798840 0.0106289042676830624569984868619520 1.0106857945506624389900417955668363 GT 1 -9265366.9306522424777996346431044614349447 2.4311194500931851341678503637082763 0.0167538215233807192548660109533886 1.0168957543021094684675059556887731 GT 1 -14787050972420679057460595998.2037559468736460284838203138660948 0.6957042932199069389004905340020255 0.0337827506654520923291883226208083 1.0343665742634291391473300273172913 GT 1 -343454062963766180731956432793.7841388964809996924843996418302177 1.0227965667654292216663351569978634 0.0534182103152204168757036099474753 1.0548978992982675667958219541913547 GT 1 -1478293945539.7320425839071054009671819685069398 0.3176165254773140374149793138806024 0.0355764460647030120797106568996280 1.0362247095647229156156661822983086 GT 1 -35837712678696640976833321352020.7446333009079386587319357879297850 0.2834641818981409515018645061455376 0.0126968683041754720484855219691816 1.0127781623897936763576140135078141 GT 1 -75474711822709503625113793337530706452901.0973998391198183578357402213220473 2.7871345557374826786149032047130387 0.0436467332083119613634194113676403 1.0446279082559003150612820087010626 GT 1 -373.0166912327296659507680434719821769 0.4527989719081820605322863428726372 0.0268392979942515617400784371086757 1.0272060490712313053782158809218790 GT 1 -65945459129908598748892211968.9193768386067101095873010919505394 0.0410495211287480970686967320848121 0.0232341714332708917037670108844821 1.0235083398373570510640752546424041 GT 1 -1329277596.7789215226580339356994850366537872 0.4978653267750849793304938111309645 0.0104753611027382066613564550175774 1.0105306138985784926937506036602102 GT 1 -868903099636571.3244613986146333395924453093962430 0.1909502371405358460879179505155755 0.0593932380223310791848773392128333 1.0612301204924917075037834132832810 GT 1 -1128.9130889099115826490906186303298624 1.2127950898773058834366392180041018 0.0711448749539313919989942870999685 1.0738024995348518906971439868305420 GT 1 -22557253023478283433035.8998943153883866746857669216523705 0.3187155542871888881645120054163670 0.0707983132204490403906566577198623 1.0734294627845270204566641918178127 GT 1 -556387167581869124735393719236960857853667.0720322810674183988267911970285608 0.3385888094686964443398344222014280 0.0848486840956798704626765911318040 1.0886658548061248739263903089726777 GT 1 -364408997805912731664873292294846721394.8437863517319914334376988837136325 0.1628175834041650074030986266094374 0.0366505940683202818199943790438198 1.0373391023248062180050376448049619 GT 1 -788303660176685505916255090272885728669.8787681069709188924205174723020458 2.0615536345646953666846960200942306 0.0555771135755594058233977452922289 1.0571812402392964894681753527792485 GT 1 -6427758428053531423272893304.4952687635025519312679875578671806 0.0059700464582505834475904111836531 0.0494600858372758035221532743585952 1.0507251251286728757583423180900444 GT 1 -560095640328294588725446688651661245983.2476890780424803953426198830562919 0.5107809593174865721907458995142939 0.0518101322438131346988385557990872 1.0532005143377311136211886866440982 GT 1 -903699685921307534957.2764890858956314381688574394935252 0.7416222803123719102430766366439214 0.0007948971545385358829338571856571 1.0007952132528031908680613079722784 GT 1 -28265071056095220134515126056941.1289348178398297295409265285089076 0.1890494076056378041509137789377759 0.0859155625596318703830455130612579 1.0898323294750931590277039642232088 GT 1 -269115058293291953941.1685711740333865119496603004415373 0.8283370896595014237280585668403360 0.0025509938782929679365045799624781 1.0025542532073754930720784426472549 GT 1 -17322347137810516082673120357564.4910741726713542815795429399909823 0.5716009555294617705197574838718114 0.0974069099888719268625321061425422 1.1024834472676345185511770832409874 GT 1 -4335465228341391.4352697386656573778354735778142010 2.5299530230083773168930330977490379 0.0717774967529374193496650768756295 1.0744838085052888950928419858654767 GT 1 -448615898543652157636540789565359093.9505662863297091418627241162806231 0.0594303466146768707786675903582307 0.0441525778444930235418261734497689 1.0451569789239577115060166708246659 GT 1 -636565.4346188676458276651301203849205040 0.2810218319791508661135706959992187 0.0838299829731398495387152961678386 1.0875533234231345942640745465107465 GT 1 -518227.1318169794086214317860932853815404 1.5944743410418877701429710121778259 0.0026856452678619604549982908069652 1.0026892580830574611471032427541113 GT 1 -10933369304897254946712581552.5448196179001849684244333159555476 0.6761230502609438671940627151156300 0.0634912078513932255782997006686814 1.0655963688360233816716295270196965 GT 1 -10499671824705065656.1813563923975205125328058931485569 1.1223872081253302972685756544071821 0.0307269549566766619071745088703900 1.0312089265534959035602341255793592 GT 1 -1.2200896437041686097878988249928867 0.5916703939994902390111901991260011 0.0563695208819276965449482945402537 1.0580206310821147442685364242232130 GT 1 -149633.6986157942437689291639573557838861 1.2450296670995948709092863145143856 0.0735262062168326904451836376671793 1.0763695188341250903011009034634098 GT 1 -2107672046560250270487751952.2150822785737363591543380510327183 0.0270322378084820289885559929880926 0.0298706333793417075936737494405137 1.0303258487272197582912438938204633 GT 1 -1230005209038.1090457709330605131293034853915028 0.2832282279261270804877210671011186 0.0737696625253090119718317015370200 1.0766323306946592673614268622310724 GT 1 -14781847403631227201.0843805056443943614370090597601484 0.1722680109513173409437741958774251 0.0872454373207192225617325682032536 1.0912882596319544403299460548897223 GT 1 -18408160044110355411278.0244408141778558611210083712357323 0.6624829999992612195488355712365832 0.0818510479210980945799279370868804 1.0853956443573570658462938779537503 GT 1 -1218241727338932428915177441299.7515209946629650803526020847624923 1.5191811961231196782104429849522766 0.0712963126794395265245904889647075 1.0739655497972020742020622003167430 GT 1 -11716587933053199937393622841576744608901828.3457482147063875391667746041067306 0.7550066442528458124396688756700141 0.0341343346245168542323323164097065 1.0347305171980399620780929214669451 GT 1 -14567592329672958587.4836671921652124628251561044208620 0.4236659846177397529893465233993378 0.0859842592575213486051032819457841 1.0899074858573764314433530901522707 GT 1 -1821250647798479588.4986497773826102039477871767655856 0.9332773714247261358730639956308855 0.0969200384209294284210218736628185 1.1019441784566914883650798878399990 GT 1 -6204833876841357275198359728565.2422045098342702657838935942572087 0.7227302472203815559631802059476444 0.0061701456164489043637501016531138 1.0061892596296365628490558558254862 GT 1 -12903041877482623954677845750336759044.6770533225229835718471886374907409 0.6951003041107383234628505831936118 0.0228796897999822948681127572252487 1.0231454920437783023402612766399307 GT 1 -7603067812877556632872.2768320146405149793002237174677252 0.1715396518889718792392497054785845 0.0162669405649942857770432877938414 1.0164006997952331749783471516112144 GT 1 -1647376.6511687413336826314564161187226971 0.8188847359508042220753679082215513 0.0856856440059853932099115818478937 1.0895808323119097524570688818999269 GT 1 -3117012779781227527035350162813042.7397129782655780920786665956343441 5.7682016918668884704766090101248646 0.0606884507133642336879609246827694 1.0626080664257922682926321108301360 LT 1 -31255582610548718310000125.8526569420536691663585575538437203 0.2965640565408180342431990754414543 0.0181479655692073937807392601786639 1.0183146597497569537500245273743095 GT 1 -12429.0654831871955332161779128883345276 0.4597966567944309297186590799442986 0.0228470379495825431570312978240849 1.0231120761946578874491841918037925 GT 1 -5645602172535055979.9221695747625999164988879256491816 0.1935663951995455344643737077933076 0.0253234886935642582733026313494640 1.0256496463119886112720540524261024 GT 1 -32950320.3219508137699194423974204989535098 0.7843269689560260040995534535183580 0.0566372346049686892423227595036220 1.0583043774342711354452606337690408 GT 1 -204.0049321342140229548543112542278513 0.6962585607165838917022008646004485 0.0449564568020695352854667814335499 1.0459983445691709930996620307158910 GT 1 -2.2412723027616899578593472488682315 0.3330890088243983596361561518653555 0.0189551342569938160034430132135395 1.0191370857602227321960301795739754 GT 1 -32844313.4860404199191506840713215561185470 0.0352335770828559893685995355645557 0.0328875844367539368421539366871983 1.0334405384104431171778825566826507 GT 1 -1139035694874309008862848458367614995799527.2752565549912750574605554816666709 1.5215462018825460240340058315017963 0.0202708149508460599366062326706908 1.0204790872935242834483634743065242 GT 1 -1249310329464095597013900.9026086061752915141855774686211753 0.0606184584350254798645947283049230 0.0391390219623740908459315163832815 1.0399255443292954806146503040025818 GT 1 -17548538441665614971459308017085932917830.5293369445505219803261065451805140 0.1387688261693254505778127759847365 0.0268557462159003248486382202107574 1.0272229510696568087205203106035722 GT 1 -2891972699415792230529585.8782538275630639521537483153965056 0.9444861142054311688659290674943223 0.0887189850957238035008175866074083 1.0929039606782174598621252464748552 GT 1 -10462486665259556376194347270386903.7744322135707385925088057335394522 1.4057981355723560962312649062036265 0.0572495370893418084144469640768379 1.0589536518221435965285644839697299 GT 1 -271493513648698146695.5977317672497263020267948827289239 2.6244741892164892985075108027485970 0.0626429333026833816437607621006304 1.0646909949506411787644977113143431 GT 1 -3136040210771.7153687030531720100851868287033172 1.6952907360768804354849953988994783 0.0003524852641978450367000351313675 1.0003525474017307221321423619231622 GT 1 -1.8257377373897873661056029755763252 0.7689203011422793483943304561446391 0.0570876065750956009034569584536027 1.0587819026527730562008264015112284 GT 1 -149866634629311708705533737319387424584265.7540135801728304813640184311110678 1.2545215452937698773545198580620438 0.0866919370152705890468693871394027 1.0906820369157991418378435862913435 GT 1 -316.2500268071595849742540213577625299 0.9489435006473857009242141743519096 0.0914773533696003202509315292416069 1.0959354639602837989499274625147001 GT 1 -77658632545184081646630315660802.0445230224749148123822261526043078 0.7202762626931181333622121168847083 0.0034940815970739044561181249201115 1.0035002001568331468564421911450118 GT 1 -98925804279905703680371667869947019.8308198409708093196230827291136476 2.7360852938026718115733613877278072 0.0170100225730860653087673085372792 1.0171563547903937007486797750700817 GT 1 -19128726534934630617523382436805511.3732893284770114777339831272837593 2.4258753446261643717628129904283551 0.0977538771155425024005434622184434 1.1081588384136844080430667104152776 LT 2 -259127.4575983856341919339904784120820778 0.4406719167061325817983004498560122 0.0482632920195517795209891462329321 1.0494668496899742078163912125798822 GT 1 -8438172261104.7298933183421006276157704708320975 0.7810927643841101785063645261581002 0.0215481729159564131774707720361546 1.0217837247487707307429347077593844 GT 1 -2568069258864541486533.3798322988260850030206089332460856 0.7176110071848425604349964808529941 0.0007073561904752666996671267578336 1.0007076064849038710382106618131257 GT 1 -317734865125985801693370685987495268144944.4893588923445583438826212321832849 2.7825551050984651268193502098447292 0.0525562183416500014875498105240114 1.0539876771279588312822435764950868 GT 1 -1813176190393301463227458848490.1365811463978041690811399981628514 1.4332210010908039611589099612628034 0.0733581227960172026757855066794835 1.0761881125421078258664336838579346 GT 1 -21729353825805416880224226338552831493603541.0664576186873185823090183358412885 1.4024348730043424917897562291470169 0.0925765039228817670679202446431537 1.0971460182401272119966949764270900 GT 1 -88197301122423686.3039418096932588581671975351015653 0.4853655186982766054311974567175372 0.0839617782628140012213705826075175 1.0876971883912239990539665509361398 GT 1 -712397786.0231264629204665175251271592788508 0.1543136726215325975205370431588505 0.0080759192945910953094716283975657 1.0081087061729193552045087856100188 GT 1 -476483445024390730916863.7613515616406980620140656188799148 2.5887195853220956702663626561158084 0.0588488619035970487308282466715805 1.0606515379512426133480355026926040 GT 1 -16498508978394347143675200748028760888358.5466493856371643471166375952333214 0.8321408171158266465732771330787378 0.0630731871624765495655466391379821 1.0651501077585233243992762080488034 GT 1 -581880683470826384002647341714419187953.8029376035003710372316091805127773 0.0031024236784283726425834210933788 0.0115486465293415129946032498177004 1.0116158500552173848659463838274136 GT 1 -2485876208833064593979109907.6311318167247741227491814230859561 0.0244867307817221707847337496094812 0.0606872197378982876285386890336273 1.0626067559184741373419734957593563 GT 1 -3529.5192355122318451649423505004196581 0.3015184202021956266649177781685596 0.0567985080021868831724764738153751 1.0584753479135209803725792006244155 GT 1 -54450535838049579748158681643882225386164.0573201965809718164287025674530411 3.0064181602619818872534818224662444 0.0092964675489301680713397873455263 1.0093399493982547686403817878954673 GT 1 -2339574769828363728777884312856211834459873.2722790992217405160506737856597964 6.1418466903004484870921275983418631 0.0629587182481605179346956937617829 1.0650279403483215147523661758954579 LT 1 -355890665773138710879036056797671.5237320792077574304208204449519773 2.6520443230551409311363220114482529 0.0675849192755738697686114165663243 1.0724256019682568530555096515855705 GT 2 -166755011274.3930734617397366004225361499555362 0.4019043111731702322506937060827844 0.0937782365109618557095723808241414 1.0984712308279956399212999857603919 GT 1 -41662649671017507300373505489656567277313.4353455709717398992892397760503910 0.1141986204441656662585006699252697 0.0727821040229418251798559099983664 1.0755666860459453975023275745684137 GT 1 -1137417773040506595135494011668.5595139943998697766723795484286871 0.9059787175334985632498644117725041 0.0429535556764022432723403590808278 1.0439033575431475916737111987633901 GT 1 -3486.6656706340541627084745778302128424 0.3484877871087016209299922212428640 0.0791142825874724609449941891867939 1.0824193357544689234061854894544189 GT 1 -5559246924459563937499620.0493084841280098481573134750898819 1.3942973754037205185692239220099373 0.0354254485760430402014243488385515 1.0360681542124404338465833590890456 GT 1 -2228583298764121.1610802373870118456866828934607065 0.5562430568262126287549068208847913 0.0537749665170436916589102835646532 1.0552748592729265475458156334647463 GT 1 -92542545688.2770603922295428740773294214543112 0.3566921189058889063049985099978795 0.0281017694381734954018074333811737 1.0285041810713171512359195175721252 GT 1 -2803755105.0948767491067168601044717399461637 1.0977427676572049318964337271472838 0.0748709657734482279885411673316201 1.0778220547373014044371005847391540 GT 1 -2521045684368592302890.0140337022453915925592284723037383 1.3468906386547208235744481673752804 0.0828370993832265257957290417724966 1.0864701773371952922821533763586211 GT 1 -2372003521810849.4260389311502567394937389504159879 0.5996600813486889250988192780518176 0.0685301818277453272574918353766337 1.0709914907834583595722715156981765 GT 1 -619312500127.0182067230618339308219997096536235 0.0165128226851602297937258860303851 0.0909955899683118256073396861105930 1.0954053332964178107832458427106191 GT 1 -13442967130187992525810465184333573.1190451645107498451240713896807414 1.4638162643003137653026459359529569 0.0853965691855880279700212060484838 1.0892647166014172995471715049076555 GT 1 -181277657461252775472.4668631892708235198790086089013107 0.2464464711981102909013679708837357 0.0382044118504871222101030450141957 1.0389533372259171623627529702858928 GT 1 -2421778807048009039.6200131323495011420205229544486965 4.2020042304594562353342613030675780 0.0140594158294345089996454923855440 1.0141591856570770756610412165582287 GT 1 -1687299160489777909332265547393548954530.1900267546751489953144022592203813 0.8679169569064439970641064080259688 0.0685472650400307612745894357111243 1.0710098310115662752928416071101417 GT 1 -1096.1092149728884794536600958619168802 1.2634124153845095031551389097854863 0.0139931827456442761006376524354078 1.0140920103523328622415156459342933 GT 1 -116038421799222058241153104.8396578353672538458158751120216333 0.7847191764873238807388365112052364 0.0491508127700659576113247216334596 1.0503998123668496272022374303895259 GT 1 -56.7635367663686092182763040542372867 0.4165086935548887938677236694046197 0.0070545173189635720062705152564598 1.0070795180744903378697855186640265 GT 1 -237.3966197945679534108941118368746578 0.0445407846506247694380694267144290 0.0262696656251237370365515505589902 1.0266208777650430344439075861608132 GT 1 -11586930016425893993466156983504288.8653107716931533715768992889090732 1.9898429176028808139032127598081840 0.0245618167437483431983156287455543 1.0248684902182768561152463964362397 GT 1 -448652.5195532270315087181959267540512973 1.4702006365452051751840708126878704 0.0011573682971802650352401869132177 1.0011580385650823809919264865430837 GT 1 -124271098.4883378710756502215755395511607490 0.6321553617545537474209951163553032 0.0526747922145680139331375790018220 1.0541128363148923338140257235802819 GT 1 -418069358586630150199725651579405.4453733206938244128622500602231985 0.3110472810417137662117594587268229 0.0868630487114433864296720699459738 1.0908694082249118839472873482217681 GT 1 -99644373.6967511226264139753295055082110164 1.3619069029886993095569563189058370 0.0566166501520742810487179922230534 1.0582825573783251617716997447754413 GT 1 -179254628223480306650780017362.6668073645104485628524927218342726 0.6510942727887034487738553897452912 0.0094516724600194685756717838721799 1.0094966229787731800007567200718855 GT 1 -2836336587969410.4967636803203227234361857633585989 0.6371830354622429601578383900239385 0.0909931876771720859902954510203614 1.0954026905281992188263951077541264 GT 1 -7113111923569260688464.3033099296441134242806466088117153 3.1701896731338585609842901916724589 0.0623133192149962834229394924468546 1.0643394147898849906378525791855953 LT 1 -1502929316234193133.6856395571453762711504614588451680 0.6001426673710462273850742844274945 0.0007197024010496551324892498105951 1.0007199615111515941863152668700072 GT 1 -352425977.4901446486090255306087207483986699 0.3368001150621717120471738259210239 0.0484725312514054459667647459796348 1.0496867237728839503839929808363781 GT 1 -24797298874799534550.3998218818490531947232027750753237 0.8972877995662548514339791538703851 0.0722897382658943638274987384794039 1.0750358129050486955156078759991204 GT 1 -170.8719907995646878018003670921995627 0.0642361637050714765697164396842228 0.0515546254673668190622066125081213 1.0529310826913132698988687632126371 GT 1 -71495213424516364584780690790566753.9515762596204219065186389112294306 0.2481832619193217807248155066351937 0.0148254685015616101758528684881744 1.0149364641677087780237529946404865 GT 1 -8609149592266404191569140636490306455680955.8609189975597805647921250038647351 0.3683916822302949468450155358690248 0.0996231220242561816481244091638881 1.1049418500041410331018990084154642 GT 1 -351253983412271880723423.8693646499915052824062136652052497 0.3128610022094368172638380683812646 0.0516348949244150436086028487222745 1.0530157189351120917619522387840626 GT 1 -1077233045851927309599.4447676200195425905804785773595469 2.1611296089845407234264842077733633 0.0391529135732162662112974553706905 1.0399400018955609258315108239640148 GT 1 -3478966059.8215906590983759219805590872519734 0.0263397001734408776124620842317730 0.0724174147574356184745786348275514 1.0751734477716422516014758773071391 GT 1 -436.1601926655423899978080834326375436 0.1959304460377735425840008886700541 0.0472559419824672020597404171108351 1.0484089759124984510746744236434094 GT 1 -2614662509749817929.4444473797189476623588767473171880 1.4323679652989476922158853388780109 0.0047990507584895714124863955665488 1.0048106031778312527601882925284295 GT 1 -495098255794536285.5490367369125083061048793675993931 0.1257777320912684092528749429489724 0.0788357588201777936488670106038858 1.0821169294401145810374540329505406 GT 1 -202808340274748715694860567.3058792524721421395313689802634534 0.3347482994067805859489409972399509 0.0458370501352091499551725989381667 1.0469208151335489676479954320138410 GT 1 -24236503515581903567582706871013200770625150.1922554206476120264840381184997389 1.5536078354883459848015857032320215 0.0965036495297763555822075564418938 1.1014832082826122446911001181512498 GT 1 -560614822274345857856.0799987437134935624673989236302781 0.5905466168144023081961355780095759 0.0821813759218858091594467917438474 1.0857554851395603476703983820404669 GT 1 -28362462021831335606.5294931927477073357717754647265898 1.1464419804097148164410210460031539 0.0649887648477967541140795057071537 1.0671967335600791040380419832736286 GT 1 -9054474046388534530482688.2890075622565592792260678575257640 0.6392920513967179435106893140310036 0.0032722002726293198896145637000378 1.0032775656274823208063706089257976 GT 1 -238386448141761414069784645781596051.2648907317683306983663392616626199 0.4715527074459876804321347165360415 0.0144083741504162539287320618708945 1.0145131827389936731109940300313219 GT 1 -31577305386167133739657433.9610191831598350053351007285691565 2.5582972928347529853049876761268323 0.0039872715255764934619312866633822 1.0039952418864024333627833555078811 GT 1 -78121.7355977636914917035002295772820328 0.1351449598244040629275536970301800 0.0720173869324600387917043878570068 1.0747422822900551727441828971209836 GT 1 -263881597.7820852853985569938663697666403940 0.8563479720577128838902717403004880 0.0861359045963354577138738353600523 1.0900734107022849976519821635938245 GT 1 -917303174457736891110621387324527940.3337844637563621334431249274777389 0.0986415700433045272392293442131269 0.0650066527389864037250111246209899 1.0672158649476258779750158496391636 GT 1 -878295494358037459296151.5258623039147397129930654812667947 3.9761235489688774150544027955776119 0.0203546823341500808190759381263149 1.0205646935757730605439487541163960 LT 1 -1.2172326750682872342943947391884759 0.3473349298351557058167052919479751 0.0882883904471444127037145983078904 1.0924315565106850246038082779017556 GT 1 -130512262816185695188438913190.0052320812884877776865919980117387 0.1047764786198255632978693234287667 0.0881981586454677580048590485498820 1.0923325917328761201780512964037685 GT 1 -6940366910908078301883270546.1725386780671189954183869836291358 0.3399304456263668386584118223581530 0.0048963223435904143813065191651021 1.0049083486021886244118260275810850 GT 1 -179938794072200.8771229049395915419451977892525234 1.4321787940765213272330561526547321 0.0824299348866776522999773983779590 1.0860263367229607872893215499060812 GT 1 -12829.0306818245934597412122817252253421 1.3242323214528892577545863740952231 0.0632684193928336346734641520794911 1.0653585045844833858418417929770468 GT 1 -3.7298876866663610827924083970160298 0.6063098201087007819810584082297572 0.0843465228195372107910618080204063 1.0881172859028400942315750582558107 GT 1 -199884646075379.3708554102152275556312217640131772 0.0916203231501824577417172840654217 0.0472812265075698418620072047513688 1.0484355148978683072666989989497171 GT 1 -12498321651451308.4370822086056645974889266581510049 2.2759093041182993288546484386436097 0.0336181308317186332101348660135793 1.0341962131858983429028389900613372 GT 1 -1437136062847336761836403020.7853432812532021027855296174621534 0.3540288489641053287862125742568449 0.0573977522604994318486878724975320 1.0591108798788628543928754886232135 GT 1 -1940762301010679299105.2822398786394811552937374341836500 1.3359899549768009705190808653586818 0.0591816585473905150709977717731275 1.0610052064361769232043593523615869 GT 1 -5618652225141063562319634.0294827879027787881363666968267310 2.9160991256135447488801961214624872 0.0406292433618348955899372498410074 1.0414776712645234503042953090586252 GT 1 -1151701689794914449625777011037857920848.3839254419334859095848433354911309 4.2140130601984138518881647443505093 0.0647182651797689883807918033505325 1.0669074744180551347387960646651866 LT 1 -46639181550984431142712504921.3512182409341694361082461002484514 4.3918203407470918203046154296973191 0.0421079607844945546164685919691530 1.0430202012912495185931426556169780 LT 1 -9597465.4565048053833660585214148035148562 0.0173603817430667459120477389623737 0.0065244807130917197212932237512821 1.0065458581726608998292689482272253 GT 1 -814.2903803688641639136151980970426964 1.8165808127192798874382126816069880 0.0469652966107328338351205671714507 1.0481039611018882763918341417599158 GT 1 -9822041975709532171570666505576998124706656.0828814408611040832207836909754386 0.4235936324133747106344696345846221 0.0755508407872919461226668336116592 1.0785572224062071354986928298600218 GT 1 -10876744468867285519075599954287126222.2413362209348579385962617002750695 0.3527728029993916838279916052068271 0.0420469656398431572604347079137914 1.0429565268892706919304188607127096 GT 1 -89199991776944629526372760794351.1763498118578586929750922832911191 0.0006247003294689639822753832459567 0.0710253257203303919200963294913500 1.0736738018104323589123187484524772 GT 1 -4234156349812547622.1385677224578865875055881984040870 0.5963333984474534607470641280379387 0.0357207651097339047998423966899671 1.0363743635665073207786305889602154 GT 1 -455467578530175.8173355487193682756742153618941844 0.0919244240556510126485612433397046 0.0831542271315545767517688899912212 1.0868160074917343881751464834834789 GT 1 -299242.5748883773490117547474234573421927 0.1660552488285177977488295597562663 0.0878408320365064066738129627586566 1.0919407778599838515471960410605710 GT 1 -225782242785748262288698118227768325.8931050713666881675470117755270330 0.4149503055335957205347668497275946 0.0916594736369594616925013126283715 1.0961359416524691200747639120085573 GT 1 -297090799842944863117.8162170173010044957629707502346495 0.2536911358992954025636961539985677 0.0785073897757729985981198597685365 1.0817605211944549932255297583529295 GT 1 -2090134039322602514715958679.6069222514427669277137100366857336 1.8590307647906730100679575458899173 0.0564139208624532010249916549986036 1.0580676844850106322625647383567155 GT 1 -985166989871809424286428819677396217.1792975616495400843018958457255430 2.6186125209118432445499967359092663 0.0197539337705621197610691673510552 1.0199516508456106519441817031588345 GT 1 -75842494473470637849954202722458632917.8350730744671566776481080349265186 0.0007396722733809432578198767487465 0.0123254233487005892579289370954297 1.0124020113494202823242903876845181 GT 1 -1546306283509245281545442660729817.0526649308713590076268492917853898 1.1619786954961995967633330439580069 0.0706983985817848531475107256564557 1.0733219411681866637253597466188054 GT 1 -886411287078463766886699230636.0913812178539875907645053412115696 1.3024643198045910393313979307034103 0.0787023313749089607485947503058518 1.0819720933978691179357104897121301 GT 1 -982271.3205316648215174017757638119385093 0.7806258925951082514154814466022982 0.0763373905750178340978698885757158 1.0794084153357295229063597856291881 GT 1 -2.7148933041533708131428985837648156 1.5937815585397745721591385002441141 0.0731802089812897526732981460846988 1.0759961325100152374203629539903855 GT 1 -109482554508875158859642086255938.7016126353363580380196872311520700 0.4809708844924424776715977708327847 0.0135286143557540702135513706951441 1.0136209598760358744301414801703640 GT 1 -496116785850789925804801283.7126281104971034815922882438470494 1.3140032238106048151283111971519341 0.0884636907736471640196501340729879 1.0926238510694637378518866733666684 GT 1 -7056.2017522898329324335540266473932392 0.7429978061145869416374414930427641 0.0205924860178808507416339199657125 1.0208074677174981982154898688137901 GT 1 -59564620464675831318181657736515340233896.5012068671887435520690575438716663 0.8209511539630319109548789618241156 0.0471867580812726543590743632025551 1.0483363631380337207784387017532297 GT 1 -165.3803379825008068207462881846314791 0.0016566098332175554807015949281351 0.0043463287554248584357526319539377 1.0043558014999892341300777039862700 GT 1 -8208498.5459067101650001974269063152900011 2.1698342572547568896949294707685293 0.0842315788996255351737545415315972 1.0879917616638097555786325513212182 GT 1 -6315571112221521461431.8885727659923971122187248809951414 0.5063689150165136243525688774752310 0.0047366397577447523828741781218585 1.0047478931855265342855086329919078 GT 1 -475492864667379976857549852069348.9502820543354087792123832322653291 3.1537852453834999394758670644081340 0.0726825343634199964333962176530376 1.0754593064168712278384597381640832 LT 1 -9044.0434540617038218349712056395465731 1.2149883447999541600719552925203220 0.0022153555721746038749818493096292 1.0022178131025367596419702230952751 GT 1 -771069053989725062448231917114816093023982.3637686682182261536109281246010709 1.1540138217772419979113332771992204 0.0384896647355925779404897391402045 1.0392499649061259279824601125619970 GT 1 -81400053627988647518644898310293.7484143854361880097354522634518589 1.2863891273024605332576322826109767 0.0807813952081335270383035611196197 1.0842313124523924111697789493831777 GT 1 -538812748188712650283808911215589655111.4324695154234900029215520819431401 0.3316703959854595899243295015566010 0.0862101496494588176617038095858772 1.0901546569943816806016841985490436 GT 1 -2209670973816153957519073546935726524777.1942315186282264838168617039976523 0.2104986646985493764738207104255601 0.0895369723141231376579049165674066 1.0938019872442421648842962598884111 GT 1 -1253116530605266915364718022.3536839107939047141439622283878080 0.3634532910663291320659603565015524 0.0845468615488440689594503698011049 1.0883361030141934063404012497838075 GT 1 -952936715723396827838665443355076.5806380993233945773312892219060125 1.8175204923216767726306873252103303 0.0930882489649404543044222945504674 1.0977101312467438120942562422724188 GT 1 -2250255.4531670276279670286122868237727287 0.7689203428657741467586174988548140 0.0035049782247421936118439390636753 1.0035111350514924775461565386831405 GT 1 -564840472205030994651483718210.0456986871290435099566047404402089 2.4199456475991704630612326467101376 0.0360385133742079228041971608102053 1.0367039368026749544878366328326721 GT 1 -53880698954203938229913092482220988.0625486134161218652774799790967624 0.5592070141591805546010844240865655 0.0471611556222168241030741588196006 1.0483094931136032623381582425307593 GT 1 -1432637762502952393471.9557864909688448310696801598196240 1.8122031324864818750199587236469425 0.0235144996838183010784618360707707 1.0237953774021874130291898455403443 GT 1 -554414757394593014689509567757330490216139.0116913192218537237237424436305742 0.0136012411837055834033356457978110 0.0033475992321742067605740074587049 1.0033532149788324688030459350889818 GT 1 -133259204336207.3153838077174403495771115695463786 0.4487969090720313966456635299860323 0.0965821858002486685931112800351731 1.1015701368950027649802173967705463 GT 1 -495572.3908041107344230884370066004275050 0.1534235589185227732130246302461177 0.0711237893197749611550953631954553 1.0737797991219861167248116449199735 GT 1 -238644163894995139030283985987699854690801.2060508422766792596447563583134396 1.6565644584736107728878947299701477 0.0578718162010648961411198507546195 1.0596139374436266332825878771148850 GT 1 -13137647178209353742.7908378875966463968525878141037143 1.1080049825128137258669057458477365 0.0688874458425840327048034228644205 1.0713751130323613983294495647932146 GT 1 -493751788213225227869290267438923962243.7348736219527407899098685242051930 0.6620499462262096566025936439822994 0.0532245564371635256401876940590959 1.0546933379240782747034092618292568 GT 1 -16083789680210889958385800574144338415978525.3475218643834359588669578654481265 0.3640771425439534035378226836790488 0.0546250546256578763721960867297964 1.0561736625879447381780070590578276 GT 1 -102184622250886702202540953.6971933382011965024835424928698676 0.6951962922669172289973979809649953 0.0116532213829025589751751403557517 1.0117216523138912670303452630403884 GT 1 -5211990675988.1810065783294214367336910740289200 0.7308449520833554618867875615897602 0.0465088669969869268576684557536616 1.0476251534049209219906107486507896 GT 1 -1794635420813711082088254023572.7441367650522082655914692010552026 0.2830583195751815004600624314689115 0.0738707712396439602815566391873322 1.0767414981762631413303841436684966 GT 1 -1464707955043.8682599455475235582170137780117321 1.8326220364176448223481054909365058 0.0141057101272892409403467872835699 1.0142061412094639859337818492714230 GT 1 -87697541653964687573.9734831814528170103613157211573125 2.1620946380823817202891996575639213 0.0762550890897103835580216571482320 1.0793193158983222727977928349107329 GT 1 -377853957860276.8402841706886711082185174446389060 0.7642633208579144597497502179040252 0.0776132065974397212549468070939768 1.0807906277766203086291585425011835 GT 1 -104813657.4868975289963491229275856993272202 1.1292328714541389115360975938145059 0.0109446804786223168971702404948314 1.0110050141194936188287809662594864 GT 1 -1366.0267433656895906070712239339546959 1.0457261901034683668048552087410791 0.0631209024322393042075614375686645 1.0652010364801247497423447992668210 GT 1 -14260873227349849592709.8318189255031994766214502109411017 0.4486424789424213163967524312643464 0.0733449957532489636299841067588474 1.0761739463899928091773825761358979 GT 1 -60.0836069318925911289000388680331384 0.6458706388824247560170808410339151 0.0088626542533291941252360906537979 1.0089021611708526311139071549916242 GT 1 -1524590393309269.2136901243888182653845253644629251 1.3544700635762857600794560813395324 0.0600635929893415624234755203494301 1.0619430581229159197340269783318926 GT 1 -10040084465116460817724402995428992089772.5367480646705079196496628452212519 1.2637937532391127947689663471989904 0.0329568436500963861396457099279296 1.0335121554141400274406380743069406 GT 1 -18966166353540696461704805382.0794678802262855495665524972701418 0.3628444883231616774989327531686869 0.0211654587884516783259240922390671 1.0213926586905980981538979166524562 GT 1 -3455327098147708197103873.6946785564028964377422979816333936 1.7049551637673462101278589383427121 0.0258418330795603288583892739587405 1.0261815994879151124843213164831816 GT 1 -2762235544177033.6803586568446776916343239111958664 1.6705505086715823654077758486313043 0.0429099709295361071568153976890131 1.0438578176900812258927217995062730 GT 1 -68083657.9976736910203574335036989949204733 0.2000343122570527560311787077129251 0.0990202812432642383304551932827520 1.1042725313311021950055139564655713 GT 1 -1267021498319887686227308782.6352163127374213723351982283378820 0.5740789781434257975805069512409651 0.0988720091300914277856294893700847 1.1041079772229150591255486235761175 GT 1 -39271179233303162.0925515551068600422450755386581605 0.3077424377984304869171001738233973 0.0039318907569620043679681713768445 1.0039396409613995986193945537066692 GT 1 -7.7740388703580433281001692324394378 0.6514600583944314589179083703132171 0.0407013495855212268519663148736301 1.0415528340032998438609689878655062 GT 1 -330883098187195719786953883646356421.5219816205809151894641731250822449 1.9867409174166808678548090293370592 0.0831649052592008543576893762583056 1.0868276541504687626738178619827848 GT 1 -5258241666.8293621352399029995380839597846686 0.6761601108885601514801631810545621 0.0512244190024920884544369019228684 1.0525829877925651983693122442174008 GT 1 -104419.9769600530859739664655829632411323 0.3099603880363808791538589523962350 0.0580824077007552961610952189099584 1.0598374898681367941754495411124408 GT 1 -14260642408430701.9622489668948217606111367267224853 0.4210972205477295872516356667901595 0.0218766453898303285942550478434636 1.0221194874427198526637145395031230 GT 1 -1857684565055682985958041608734137394011547.9852580280309975071692607457425243 0.3621940268589460611931690120788245 0.0227515324621551872061293723838033 1.0230143424475806580370559338915633 GT 1 -293170307012424535447444122350166783.0298961792206862081141384844882963 0.4687735711867589602938282633907663 0.0330135406329371380560273868127867 1.0335707863496709452969802286615809 GT 1 -112771609835.6410967037616265795356344054725384 1.0137737643608465013831910567961997 0.0999507014915523423056167308715065 1.1053057410374858105617266674557030 GT 1 -431966612724.4483855167797566571503269680786784 1.4557872000917461298429516883084552 0.0408247078827125462183428661903425 1.0416814344441257800084177826685876 GT 1 -670.6555045385580303151856934074085848 0.2104929316762828057566273771985327 0.0980760607594624468635575869911040 1.1032250870420611144252903754418671 GT 1 -41625823384419952157293951419.3115218513673545666590922008324856 0.2068337512123176977380364317742680 0.0527118580716204714307755447363672 1.0541519639364334628579140196361674 GT 1 -91251316827733.0876010451786251550807198159131926 1.0766374013528392037863588096011499 0.0793016032214348342613667003812866 1.0826227699969397678491573585304093 GT 1 -1998995285105045250735606334777660159197.9542068894066189158444658422987077 1.3746793192671280505146897372331394 0.0793455641165041335402302974264628 1.0826705184721889104774082788195048 GT 1 -36887547552.0337435662703806505730230191689526 1.6452653132859644668745396762796780 0.0476033296927819660243120939400484 1.0487736604830396488520046676276552 GT 1 -7264584175417748743883969909.4682999750086168254077188487999356 0.0535676797680373469213120485583590 0.0396470738907756856590282720658116 1.0404544307163320445317763220614569 GT 1 -112118533263990156796634498477722870515509.6776202346252899669105203099478954 1.2049745423660208460383065789534910 0.0433314173776761797467973318597964 1.0442982561574803951561777349555359 GT 1 -2212649278.0978057893981880044103005920930162 0.0773176150882158136372264383994365 0.0765901097456450961737199776549860 1.0796820582731324812635166106402660 GT 1 -8572967168056104.3716928440818463201733272062334690 0.5242431081195520716742744752501736 0.0175237197723815858285476420063597 1.0176790777921158389227320460149799 GT 1 -8648088817309594345777.7383894732948161806524966236827411 2.9281043496033737057989738060843455 0.0622071008772467326531600756420567 1.0642261442013901352701410623188050 LT 1 -1825.2701351771635281624051323089858791 1.1395573492668486448648428485469762 0.0189602858898358916945223500627551 1.0191423369434744481275842613115569 GT 1 -28793681838901054853358922438052894.6404629372937955509456462469444930 0.2908205957693091220764948797622317 0.0748160948514185190311345032779985 1.0777627448542236542214095409859749 GT 1 -239518619651142967135973.2076308754519471920260916528696220 1.0974547029397923201775060825384361 0.0854793564111524401424439619237316 1.0893552377713909126706678505198773 GT 1 -3739683000540125555150855124577460686.5807869799260931779710836066319585 1.2638108276867927556400710134914291 0.0335108811523425993300460528712671 1.0340852387027061750171269539630685 GT 1 -147122.6326162152137207668348015822247182 0.1736323592077415774849420021776036 0.0814966614284064599812521780247531 1.0850097395250775369938468628172440 GT 1 -1128560721967.0709187650087288624516909487608710 0.0107241302942065853632699525236402 0.0012936299118885900339841496644529 1.0012944673733844639649715381425052 GT 1 -138072781187109397206221631.8583746865863232470602640095299070 0.8686013101922201778131949340992298 0.0805432164702761575747940389489550 1.0839722360099682672216297748865323 GT 1 -3295378581365096918229527517645614887.1908131868434456126383804939832626 0.4529588542063061646967091874398486 0.0955970290933240760631803647377927 1.1004802536360441890160252991416133 GT 1 -12073443131109594526796349322833.6952483418671163018085592087351716 0.1908170579817204743591465340179789 0.0096489131422575659313649034754123 1.0096957655313493898565300057776159 GT 1 -1222441782593434335979622.4911127796761915647373520353410729 0.5585228148281520194560268351133007 0.0117244223948174317021039260787959 1.0117936954249301887595088249110944 GT 1 -34651401088907306.9678217417942690519537886595499894 1.0929731240996346143615084914879139 0.0126911138099585772790676489588843 1.0127723339088923272865523595380478 GT 1 -12459410430416410648711386159.5102642845106871051528962741320741 0.2208020997980747925821287555433857 0.0739434230223451479948548602906314 1.0768199479543722007505040910523112 GT 1 -946717709331977514294215811967676795881008.5998833427062899429071970288173337 0.0791656594950758786947620716892015 0.0158318817457576573531452656429747 1.0159585446390120074429263727082425 GT 1 -121686935003895921429132281.4991709777788842858911436909080662 1.7962859286796923103806403941425422 0.0712642289720843539210330404592224 1.0739310036296657278606752387855935 GT 1 -982690629230040167513983.9817508254020520540919955078411512 2.6604536454457633745820996025709465 0.0037526477564074054179711597884795 1.0037597066041121696739752569534030 GT 1 -13061295860728758688700712556685173.9869815315537399345206767300479121 1.5361433880213583109843466802496054 0.0251852475195758171704264099336745 1.0255078234920682783549210532204849 GT 1 -9372176700.2034105497435011880647484948134830 0.4223111700048518629138040545975816 0.0472212079730336613730165005994477 1.0483725197666835882498795312498865 GT 1 -3085675487.6152937929445928258690597902979024 0.5293016883422472713261237236169909 0.0682148977826223983253404632379233 1.0706530679034950281324321962771669 GT 1 -662784853699247683374844.4257024252960843772956587768335932 0.1649467879504718514024470678358052 0.0299692184852278790260765460452764 1.0304274744678224222142817102924189 GT 1 -49299586026528274639737.1544527490455399682794129895188700 0.2886706659550826441436089166269069 0.0256355922177874087827161212762357 1.0259699100107484726620584208687035 GT 1 -601086328453967.1994891628404685069862890888115711 1.3728553419250503757280897335432956 0.0693644095512953140070082851419299 1.0718874956771655920145152157377671 GT 1 -1624664862963793570523724216314323158.0247754365757193111378068077495929 0.1770516664212189142638306722755248 0.0546291197781869841872620634242907 1.0561779626397804547317523558714437 GT 1 -16805.0540653587661398155570317510231762 0.8413252185267936431136556545283380 0.0583055208667170481311248277395622 1.0600743891430873088437122198200958 GT 1 -8060909179778514193902320527994.3874461192835396996540835699710140 0.3486021734912198318439033313082672 0.0188414368213820783207568531942101 1.0190211982492102084757299607829188 GT 1 -80358934197739793919398803293387.4020259947354746888680510319569877 0.2266239615829543735193356108955734 0.0441130952908661700423251280458104 1.0451156734422517666916528946272099 GT 1 -124590947004559822778285270.8503587767185221580628772762265256 0.4040726305724801980399858161899056 0.0322338060214379908929367323764799 1.0327647560259849089540084976692174 GT 1 -185319486329029399956936126.9789368185560289512079860537765841 1.6680445664601137336532355792636429 0.0905916772245216570382483414006885 1.0949610856917395137325274384973243 GT 1 -1839543551854763341.0632052857675455719312489938468112 0.8085215498536323092428325726469438 0.0540431827086217997054486770184918 1.0555583586556785454868521027536388 GT 1 -12.7649635414299615763584113209229819 2.7220745376914249049665055336428164 0.0751740165758366703152819646614847 1.0812033718436471446585666408732177 LT 2 -194883900.4512598557271827145647651602997804 0.1827676531610922523271146303023456 0.0895483780833778761153709450033619 1.0938145147608474900981184973835216 GT 1 -1845213335411572.0028446022103961194775660294809790 0.0394620823161763137678037609464884 0.0669880462192787700750242821645875 1.0693372660188824211501146783488554 GT 1 -186526778759620845.9743945443022325973591350792992826 0.3399799011372509879236967735778989 0.0192426123038587122515983049918694 1.0194301612202173700528777517902851 GT 1 -545217983885336906801344246070909.5364031344998789902833738912567868 0.5426960659496204166295505672277734 0.0691872886886166811208686534029598 1.0716971913178710537380279414700498 GT 1 -106075.6118650159132157338621047274873170 0.0549548660462055256171709251436659 0.0076087533885138134006899670279346 1.0076378476271254707969512633619764 GT 1 -409979844845.6459461095092733130828443708167374 0.5351582222490108709807919013028577 0.0773127883830105387713314913695053 1.0804649842346629896682554164468628 GT 1 -15059773130623695.5426067805545835412731208775611133 0.3498985537745740333088021699564722 0.0234183840183009333447229316595449 1.0236969520436394152254191153571058 GT 1 -371.0212631439870579326247267166422478 1.6228512285577662089964672674194783 0.0452358739779912600376079049318845 1.0462909574667090451496842619859464 GT 1 -37304971050385487618.2462766179288420474255720641493545 1.7200233585993936144923572570306603 0.0205965829536328903168015994688808 1.0208116508019267647099826600915009 GT 1 -4528806766173767812362418354266170613968083.1675702945298963992399438818401384 0.8942580919336857641480310310684252 0.0144300581897493127704474572817990 1.0145351840195479372170129681378249 GT 1 -83489729853889154463998204519291.0300818515307450312830263114111236 0.1632891411111297613741035887438819 0.0000675088848239181546371073186596 1.0000675111636512445438352484959661 GT 1 -171000958717059705368174226148072975.5059262698699304624417015148768240 0.1251319187966931957471091500793262 0.0198405106256118030932342726599689 1.0200399762993500458624419770873822 GT 1 -230609062562417614140814.4817105726128254168038846850276101 0.6331654738249915317539787222243218 0.0991499997240428746448665797289552 1.1044165166140981742571448613473118 GT 1 -7551646898.6973892454909192651564713364664673 0.1895458403838883755847000432260751 0.0930964122419080881745783477784626 1.0977191324684151654116928056529727 GT 1 -17223150324294698553698438927640566662.6170526754429732245666974799021646 1.7801271814686429583769920908090462 0.0612006399727532924079887735009485 1.0631534966978244459228004707235395 GT 1 -1391526749739.7253361514079771051581949951418465 0.7857601137768504543772413927661691 0.0605158360731092683198429719077719 1.0624243161228437857308332867110175 GT 1 -224159593171423253439714563.7371303791090155876762673498351823 0.6026985566305781675246257949870513 0.0821836200283514833171589243030314 1.0857579301860545846474042712507558 GT 1 -1641416183193942982057377937619619.4078784131595653876519348652428502 0.5013045720574588027093472959908839 0.0699024415703359121330198089220350 1.0724657967993437188982116274088743 GT 1 -508543904049933877953.1207051531805594684960266971784561 0.1246249336116647964121856435260211 0.0677084367623830558469356468265448 1.0701096771276893912371241166903708 GT 1 -386875523356522230241369963658925.4115453238851715428996498215174712 0.2706707535311987658587300410329553 0.0793369934325212223883023548288879 1.0826612091768057476206980460280471 GT 1 -99171505200470567865460289155015.3683041619591634995389997550634361 2.4970236347486642861839839699051817 0.0281561916595715748154736565844875 1.0285601784416709208515041740394416 GT 1 -743962.6325015863686941629414390275837792 0.5464624856984018446181671698714921 0.0253659846737509333932034675939789 1.0256932473489837960127126983081536 GT 1 -14064.8910379206502469273397314500400209 0.1436216228079140973912451199140758 0.0745954444884597850039996045129404 1.0775242797727698944929673187712615 GT 1 -12506076976260.8452536466806069903971146319463403 0.0789764411628514899476602329875636 0.0014765305529732381922602411714510 1.0014776216984154880455799870517994 GT 1 -26102958242493039285370717958454105.6400006017759115113462418856311197 0.9354204348922912830260776042801221 0.0472743548477941633588243644501921 1.0484283022395420190803828795634906 GT 1 -26293655770368332198374668177509561402821366.3994097892874468053937701147736527 0.0546574614563829913140841319894876 0.0140795448589710562591152009008377 1.0141796019330072231399406263216265 GT 1 -25595550721650609835621017845985.4113946746621681819921687260237393 0.6947034750607565547197198889146981 0.0167346977337898005931910910724088 1.0168763048457713872937792350802001 GT 1 -86.9297577318777730593129874264382857 3.2840655692246224610355695454498682 0.0874590916644237345494754561480107 1.0915223634776857742026430690366602 LT 1 -10961.0945438039223381438460653994238397 0.5146657038294403923240379372228049 0.0928202151831590707510529674657259 1.0974146293071397136684347951865934 GT 1 -23452.3077201458076268723767827341285039 0.9463908452144703968392036248305232 0.0618275877561364108168532349322334 1.0638215385042717537793486215377180 GT 1 -16500410712179832350547325233069620723011.0416935012038022007671533459594822 1.3695630588144598769991094500262712 0.0705824730194767951766690205649894 1.0731972041267615435930513687150044 GT 1 -120340580733.3497284790057387842368651736151952 0.6073253885130106269270460143311886 0.0356511389742177886973820693220672 1.0363021608067385498770730377014873 GT 1 -6253133634.5306735753496715393007633713273026 0.4927754901713686019557476632752176 0.0673318580762431474714256441906206 1.0697058306636443108467838789920801 GT 1 -3278185.7438587115668000495392928205092920 1.1779265260542923370639617180296244 0.0702181362040496267397214810050851 1.0728052754052931430133443484265422 GT 1 -2179157042838875941522435653.8655924303847064132457382476689983 1.3781252940165777071894940364871081 0.0852699334599087977678968455556005 1.0891262664762054133987780053122093 GT 1 -664190282808406186601715182096524602.9559825810650944521203416027982135 0.0338719840734384074442160335577307 0.0194884191152748531999591335564409 1.0196808222123004949574559374134932 GT 1 -13211172902045797797585035972222782.7545329565134800543634634395177393 0.3577031463444189425319172865189673 0.0620561039646032868478293472343736 1.0640651440937424297467282269541576 GT 1 -35.4449540446593681358697377203344124 0.3127291233161079792021482140458495 0.0978681326503214965809011870381143 1.1029945752038994683466093006349536 GT 1 -2733108608048435.1988154657966584158464980312051201 0.1242799760261327660619590333908107 0.0061762652320440020322352719714447 1.0061954172575336144237424456201804 GT 1 -4333756277829313585065980263.0157787530447944637933053012440105 0.1714034854056677576698053974558823 0.0915513956142121159975029042172381 1.0960169646935632830289416927425124 GT 1 -20719.9187188683496488532075977327685241 0.8941261532282804865431456158104399 0.0028255033574684490157999736077663 1.0028295026271563937800977040006249 GT 1 -3417262.1606553133856244542279411197284078 0.0066341079497246716157405207679232 0.0019777809641345977016624778243534 1.0019797393555111324481183155546942 GT 1 -81870119125817450867310125566964850488.2699308653345728036391766904415346 2.3109914344381430998829947681464407 0.0959070433008011479868318422214417 1.1059057439795142996983478821293374 GT 2 -30474068803682.6016728192718775234783025810604611 0.6998691460994565199792749364104409 0.0808895509727641360670612160795166 1.0843489799227842949265159792696922 GT 1 -42421937165653550337348.3324564421578957367446252792318838 0.3387376137841553103768301135377114 0.0596902889445917324182480241706298 1.0615459781384734836942684575555531 GT 1 -1300382574915592021572.1314588759299218371177700966792140 3.9516366746292816804946436538829329 0.0208173935763161604446434754498859 1.0210371304295487139203836044859526 LT 1 -8103166237502306959326624501054150620.9174429509614888345481441119157620 0.0295810955934145475216523612394974 0.0618784315522496675516583108510945 1.0638757344849111632521003071690038 GT 1 -14152621396266.6557085587003861727231194790308838 0.3547547813885190524351638859750652 0.0899382566093864252032279125595715 1.0942428318931451711009573641270136 GT 1 -46595838324049666724798173301.2042687140529292528690453664703726 0.0339637338412338291279210501896193 0.0380435544162990037086411575293528 1.0387861042023856937235176152465979 GT 1 -544415808612448576045586666758047201.8005133232636364590732508800892377 0.6661287012463042451011642701522579 0.0367341573357011283276102362201568 1.0374258485160804163279702220626819 GT 1 -2231515008366057762835.9110767286209710434053142926663722 1.7730893482323703530655516085975198 0.0350666673298073757831249660611838 1.0356962653455140404783190800196859 GT 1 -332630.4704516106146992133680877447956243 0.3872982459177340335611447339836830 0.0228511785873350657870236517229756 1.0231163136545912161588890940183296 GT 1 -3312933253.6103953172899972962958441338385794 0.0230033395770558949402886649037146 0.0542518369397172658645757050430200 1.0557789577809214680049372060493240 GT 1 -54.4323369902198714272103867149284711 0.0542911503420688803900735469653286 0.0027376108867661384802704081501918 1.0027413649965430265918304233749958 GT 1 -3.2664290985123819148208345764979191 1.7461463933851423278070215097594302 0.0332781515195119389281621943343547 1.0338444686699594709489021886703862 GT 1 -36995.3145194752092097846794296623571917 0.5291588862627303033778314451529205 0.0053849088013756201351011391651000 1.0053994596830641824498568559037804 GT 1 -1084346044988417839577.8538658059206286098403890798209374 1.2301980710060693450080478155596210 0.0460890777766337962371363482501908 1.0471849848248560356158203177414530 GT 1 -84453454001.6675407470862953881592727621988349 0.3842540720348787724636695392397415 0.0469334482276576572310481936138601 1.0480705437973333406389142425437694 GT 1 -1584783323018995815007310351442738800740115.6853857740638196208491978256898602 0.1314373888938969068286322214873081 0.0274946279107327382848115620983916 1.0278796795055463800630248148663014 GT 1 -28894860661224408131278.1831890082026177984556857418313208 0.3894141887209282504275106486680038 0.0541478563659199299685250768390324 1.0556690185157034612586693610518005 GT 1 -3466708656432446203302859966791015794088063.4377905360187367038287603934886845 0.5046927206170182670837450932121004 0.0322016542086768836880457639496770 1.0327315338707909655322343570525796 GT 1 -4363480708147808258494971945851327819.8920054799680202670916162572262717 0.0823119395013217539897712969037183 0.0452952626684509816961098923231097 1.0463531618750852764816602970551968 GT 1 -260930260091975041486966385.2197651567279432666431821796894196 0.4643029661422765253891930827728829 0.0891537990000785414526103983231453 1.0933812203435283098506757984108846 GT 1 -39548358363705275175025997439483077.7577777817366047834123993599409740 0.2015987194193597973011196393607680 0.0977715818467050485909856147019411 1.1028875557749258529217160323028131 GT 1 -7865515278327075550165.3120295603952718651626254951499335 1.6875699666817035327537059520619925 0.0271758259627776838387961187908166 1.0275519181229633039318986816757427 GT 1 -222121452587390573283406917926510.8893981251134535592875270892092568 0.0332078965079130573899349815331794 0.0059448158256826841509538447368718 1.0059625565886048309468625527661084 GT 1 -10926.8715256469496865266771757131440866 0.7010914557884679675063199024679419 0.0004282835844941283687919787923083 1.0004283753241031494078202904345227 GT 1 -20807695089565130107.4748898714162810757370301254885473 0.8603671459711313617340322526278212 0.0627011762284557441317949344013671 1.0647531321418848853081057796511038 GT 1 -23454319829.2200116756806385396931879322748321 1.2645148881373046618330030440253226 0.0728616747026941489267605633225225 1.0756525063202683945247043698455315 GT 1 -4476006524965854611655046563094556.8178233996787883153211967037456876 1.0707311114187365161643990872086309 0.0804516819249523954467230749831379 1.0838726881127715961016272153069047 GT 1 -2324542988683749.7722313236538442432624873942767008 0.0708836288724822231790575141860697 0.0587865482899070850378765716138724 1.0605853301463888980104471741955243 GT 1 -1264463441675139508.9680502822089237655617920357379861 0.5217335031602868226849940826250725 0.0082821509304585668264082703247871 1.0083166384952956210498499261684065 GT 1 -171020225441756223.4634595526182242015619146223938384 0.5399549751635629601303107134068830 0.0427958169110872821133185548078908 1.0437385528269697528114258247685832 GT 1 -185098417219513108690156906092695724.1480838788724060782686347384819569 0.4555300075278890518901580212094213 0.0176542744154096236317923911662745 1.0178119698737741018892188483254741 GT 1 -355704353334554084890896827173751375083.3397074744383639656909944425451027 0.3737028764636434335186818936459482 0.0001138985553108174137749525384183 1.0001139050422438412348338542746567 GT 1 -49095218428739704457897.3872120401621057554832246285416311 0.0503159943730414374417260610573946 0.0636605379548502270086042407046187 1.0657771951293861558398692378608174 GT 1 -9795901.0277733843788331834120105094535530 1.0508942451265409276482677363446062 0.0357438347990993051076070947574944 1.0363982881357585879734619164133603 GT 1 -20.5483956689345581313840728920359390 0.3760691729946551496078710714612312 0.0437636167650660509775804867537186 1.0447501336970951615663441389946404 GT 1 -323038013343725503807281803301.4909342362093901966767005107151470 0.3758616449946312877978489919921860 0.0527206517189900612594021746448710 1.0541612469494853558732827247472808 GT 1 -55726135174440741678.3217275869568060170380798123303918 2.6097833722246627048828552953824295 0.0840123042069246757988129267871015 1.0916025841351454452730427109655524 LT 2 -3526020164.8893339768814075007532257124821496 0.5779118180681200418310791740257340 0.0038893665746636020723260799732700 1.0038969498299322456340813941342310 GT 1 -88210907473885134282822235.1471078849280276187061829448966586 1.4403615483956412598436871016047109 0.0030546198380323653115295813961719 1.0030592947116114800559342020503570 GT 1 -31314259624314782003649774124151434.9644508096702537123896657538593699 0.6425019646037948814309548799063366 0.0354622452208803916746014216420636 1.0361063029969601263101667885262287 GT 1 -403209135482134552872093279.5340038046347352685740157935089022 0.4267338423657163974882156022849828 0.0992058585956196460817826899815350 1.1044785253874207152189885308953837 GT 1 -93021764787536077845258834888712086938153.8309760512573631705926024108118138 0.4482109272932824759047972745510318 0.0638248777457699494760878782335370 1.0659527235794389574418926932045375 GT 1 -48.6117309962277076590531076158857187 0.0444194967521534095298958633447041 0.0538023219369204004621330819870743 1.0553037697480669202032298872543556 GT 1 -1266286508.8118427103040924490604014143023505 0.1315616887006508168738037728658407 0.0167863334328191395712990348968927 1.0169288207382467988046007441451287 GT 1 -59.0333072075190280753483142866088198 0.7561180948551129975576343464077124 0.0031590946773327589090090335778888 1.0031640951510132591390414925651514 GT 1 -55767169081889403255.8593967111210478571520817002931932 0.9264111089672775689647388905059058 0.0056643450490348358648034680818951 1.0056804482897843248745566565687869 GT 1 -157517097483195257689883828375061125.7064598679141719927232056983523031 1.4376560167391267517846075573714294 0.0694015839190755818441092583485738 1.0719274416137375598111684394799561 GT 1 -106032890586686.2540207571198969278805180396902461 1.3043568729774853581814437034083374 0.0488341649874891387550235225277444 1.0500668520255281771547186300922125 GT 1 -152404974733546752523173964.1643719404639471862650991190201519 1.7678531442476530676667016461836405 0.0154019327734565202953698939751529 1.0155217746636772439946655845629188 GT 1 -2994032644331568285728677862399571219760.1051977742090972788398167132422101 1.3996431441026848449028694434163743 0.0953767849171437238422084992383961 1.1002367588995121544661751949810169 GT 1 -205264809372803165280569793531619459843.1857226191606487398229790924764473 0.1071934398874615539785826712407431 0.0668776413155459192749379248770985 1.0692189413054636772140349396864652 GT 1 -784508169885290101536881832132.5772685237474340063189900516348993 0.4468000280813882509267689470047777 0.0289357361126196089763404788504184 1.0293626296806377281657808762485349 GT 1 -29375.4087644027704109816808323822713852 1.4867684348609273670977942659332809 0.0279851892842642095432015345047518 1.0283842372759172981726674525930621 GT 1 -1116556177739653429790625007092390.6080885081745727882881397644045616 0.2142370703281193735600716509428751 0.0187602207463757489928555893011679 1.0189384259870281710412411221589106 GT 1 -19010938249160.6743295536561785976159170935972336 3.2338768170201395368008348029130379 0.0680924286883427402517876935040728 1.0705216416268396214152168776255003 LT 1 -170994.2373762283335430195978360602305960 1.1932066333605203151590283752079102 0.0750932659705652939883548802654388 1.0780623746294908553419223612383723 GT 1 -25275189147739157501974.6976878667144991928351415160136579 0.0640664428636355556542770283529466 0.0419564022306838962932128094319590 1.0428619928930119909633082351628983 GT 1 -241824933553784625852305844469275470432.9423551842126355563556895618441971 0.6850132596677707012597331467427335 0.0077254655654434978585353131283665 1.0077554615631129297935418582626055 GT 1 -73567609902107824.6401559351563691929821680483517023 1.6438830277420400439762959919488968 0.0620216067053807593872017215117140 1.0640283651083626709583496373421210 GT 1 -32027532611985.5847869453307190023881065208742252 1.8087844517258829956843051561843760 0.0857619544890301003596300675262384 1.0896642977712820967710141146160057 GT 1 -4049781315717190376842791.9017495228487714844721285963566387 0.5621096895626639475922420837058537 0.0816545371595945489741376608874037 1.0851816379757888700362645838377590 GT 1 -1006.1161345355396590089075207367953080 0.8008433302571165108351594846661655 0.0061345120514296506539524724815252 1.0061534054780830728685239329116681 GT 1 -665167936996560423011012128.5893834699939627138049358498404721 0.7206904004999542273114689047053864 0.0486963664363808938170971199766404 1.0499219892000003059424945769320580 GT 1 -49383296517510.3168939435275568471272606111557559 0.7126806009264964846575991277776918 0.0908460490834285494073605021484686 1.0952408362004195401734793941888663 GT 1 -186599652948.8513713717527270299164783746013446 0.1097745660602800982760051052743387 0.0113276339898394334719215465385242 1.0113922802924908553755434127985653 GT 1 -380791897722.8950175378409608262448982211248981 0.2927550902898008661285898148495002 0.0778382675125042366081299803608151 1.0810346559634881777577246347417365 GT 1 -4207005531236991.1697210070278012615723938315766556 0.4898022504782929745313049753372222 0.0514861593431784827660601944321879 1.0528588975608477969727449613238825 GT 1 -4231305627463321066289390820953953100514.2316283089524073662627512922328803 2.0071682500658532263201640896784794 0.0598458369577670263986777616914035 1.0617114139287299716978386456506744 GT 1 -31491881044901725623742036480681.9054353695588601858017259781813785 0.3459994381648948391703542303210973 0.0295695970184472308950459722150026 1.0300155914828670245540364339403227 GT 1 -2391627651256648085027572449134892.8231656284624978141742631082172803 0.7227850682861117061037529522354455 0.0208828343281884264444027274349073 1.0211039646832509444917392809092950 GT 1 -1674671860346858428811744883832891347.8725430501760184737419398049845843 0.1538944782622156863782711272646298 0.0824370708317207019554766061110297 1.0860341137560862574418495958661357 GT 1 -404006720948412759377160.7190528773746775874753560574533322 1.2932825641892069988362911095858189 0.0511002247380451667830746756580338 1.0524520968430520682836333771508820 GT 1 -751088184083272092313934912827557324448.0701341857040652018367775214850970 0.6532076793675506082097300996489247 0.0087826506126502083492662801067212 1.0088214454029642689025769914633466 GT 1 -78644540769590230112.3476205287483547504956877913611566 1.2758352999490963125536302353088556 0.0732785335265364160105550036033314 1.0761022262319018741015924570617577 GT 1 -74443198423227872226474374138902.8445634421601258302966973300162751 0.6818949712961421293017215431488635 0.0617196675151288528511266322262038 1.0637065127020716033097743759521511 GT 1 -657649272476347934424334000564.5133421555154610943228680329458302 1.0263132162370843462593639002253908 0.0398261203146576151903360815386290 1.0406408862491165257102164398074015 GT 1 -16260511486077798325708116796291264.7066579016427554258010855625848251 5.2289533740395196098031475574528117 0.0972364198367604112212850446987357 1.1022945758324938208950532396387415 LT 1 -162069975606277440806.9205450337104394409490004593110649 0.0172914206279171680416304371468197 0.0399738870656017367646652979547806 1.0407947939168633719763043082832723 GT 1 -57844044597097558337416110.7200025788704145923058110845509815 0.3972726348105844289756361007840065 0.0225117336020341986581047764862154 1.0227689908796064902582153091098491 GT 1 -325132984449244831626598.5235886524607743583925092562074937 0.3458136232289328821509781919816987 0.0726913548281477807805964619132688 1.0754688182690730778449434519207586 GT 1 -12551207051479641821119291933058.8425190726570035335769390425409820 1.7501961150369191788146997999743563 0.0306421792624535692785135582502944 1.0311214672070328688255489654271973 GT 1 -7891019890540546074087.3040387898068201503039630572636662 3.4678780647327203908442723231880771 0.0190789271520736020216043141212368 1.0192632784660277803552983271779176 GT 1 -318766304307972.0990668830674960992247927994833121 0.1721545971140867161126925185631626 0.0280376513799829825638525460697848 1.0284382112595925333925940178659675 GT 1 -41184234860506323697151605963830294.5242118519732267035268369031272010 0.9068669877727288647722889554717243 0.0382556291740285793523607878543492 1.0390065904201797244512511166142094 GT 1 -23139897.9055065288056062150642246496880389 3.1903393348521957051134375281044986 0.0822285549075032433455049725134788 1.0858068898474199194130309354905850 LT 1 -43159590057.7087414428938243463316824899794466 0.2447027315629336631899931909684658 0.0605214805291226004323911943505686 1.0624303241783131387482261167900491 GT 1 -213439170177272.2988507001235976280607194051884459 0.7624166988112311568578144258677768 0.0903742444711763030977041654288120 1.0947220217214992241903106792090202 GT 1 -6148889903815395829059.9924223294191370826370533336271332 1.2252027781156072225177165657058491 0.0864782845362968606360205389521468 1.0904481317293736231567290471052551 GT 1 -1656.1906142477738835806907091238664809 0.9691557785989538041821073206458740 0.0374441561186189086445742708414005 1.0381631948862513264279895239306123 GT 1 -162.9834747664104268612982317860447621 0.1177647354455672073306701306043351 0.0256257950533934666091425990864355 1.0259598551328597385299736735989642 GT 1 -12198286012839934696828095358963317807.2332288397563836217450273967226140 3.3050900101503858788849487812947103 0.0969314656245859505901939700241404 1.1019568321268434940837119828942979 LT 1 -848733807526126681929324386.2857622001709993195627322322122739 0.0608658160775788322012246251727234 0.0830092730752331207404867835546675 1.0866579191816372870323826378825907 GT 1 -11826007884712458660732135262835921962.0171352023195777919683249329110197 1.9392171662761795958007336893834299 0.0901031094641520477343559898747680 1.0944239929944399022213473208079991 GT 1 -18682290677635891342826520737077299217251773.2088213668457768722578098992033302 0.1993904801716662206439300099185336 0.0607519218181856175546403145130834 1.0626756406501261211813899881101513 GT 1 -2685471763013690609.4228161381028128337082454158042019 0.0088712112898543370409591266244323 0.0736966979582668583753828448482054 1.0765535579636022167327183131116535 GT 1 -1642519677869434485081007478742410021267340.7361420602161620102419080511538489 1.4159626613121158883310001417069602 0.0672185259985969811315974176182035 1.0695843242162783825020644410209137 GT 1 -4429.8747417645066745536816344611929473 1.1517018802699270727042577671922886 0.0066251194960837590743388601760662 1.0066471630148258692278943795160314 GT 1 -10884114384575619643608559614810419823622.1570669608875846595503126166637686 2.0558900908585359952825237654217140 0.0773097092665182197041354815658942 1.0804616471218084111001287474231787 GT 1 -7929635430258786529.2842501994414393300628951719608194 1.4267563703916244615416440579415414 0.0061946186120353534095117000094580 1.0062138848678565789810817244291481 GT 1 -48.7690378746456389714093936419522028 1.3628155778310548372221425831476856 0.0785612913244443185234922879643551 1.0818190166447562756802923859172642 GT 1 -13957756511450675380221595621352752020942.1620353878730761865570842700859043 3.4637636440168601944440043729161451 0.0595071635266303850221018423887153 1.0613512469916227533764533693842074 LT 1 -10817041693887490865126.2982022689594932139647244927971650 0.6880372098763278100098945448738004 0.0719257393274700841420232700158137 1.0746435271211149425425206658390759 GT 1 -12173.9065972283027129307657483296740267 0.5287046232813723514217876116328404 0.0431644120766317913689528079036070 1.0441237017415150453915985594584016 GT 1 -1418320489694268626290512881.8735341141732976605397350348896967 0.8185128618410006275287826020828924 0.0366726442279360474605564968820856 1.0373619916439229644861163088730283 GT 1 -2.7305684544780448148400458060172853 0.0777419488331646257922417930939601 0.0890934076796244341910438951949000 1.0933149201070772807578968181160289 GT 1 -258740237016645209255.5754675507193827062543866865926585 0.1290290987580581171941497366197149 0.0921909469717847788006194559465740 1.0967212165175214358897889961362066 GT 1 -15.2329241203207576542093563937777038 0.2114316384727184316543353046566366 0.0986657870768912411994479210232500 1.1038791546116380687664516867301661 GT 1 -25764675277016777681840258231692637.3447058205808318454531781231589311 0.3997698363804473746469917699604840 0.0134010086918997189469045434793153 1.0134916125749736939440083711476987 GT 1 -1109802209414276642152094364774125177406507.4508428699728311789794450113039765 0.5713886495267380543666465754484902 0.0520948577612532059449446566008229 1.0535008426631360205148119332916605 GT 1 -6635640704534.0025042960043427995206903065002809 1.0754561273095272979036040221836970 0.0112274347409935527016984491478232 1.0112909381541109749406375353488198 GT 1 -15770708588765429793.7167125559352870997300476986455031 1.5764556932978880553300647693356666 0.0055708814405901631102740667316785 1.0055864566727179103893795465501774 GT 1 -2768357760511628456143421273529909123010140.3852194148918135557920189120586580 0.4143795771689309603374701479061417 0.0444832969987571217584074180743841 1.0455030345532454084962418708726042 GT 1 -46361643435923516880.6432534315208765365296387017897387 4.7083786269718769568044990191398215 0.0378525039850371876662308772096467 1.0385875178082110174290521777572504 LT 1 -94752495424383218991421296684715.9132129665354799579961807676903530 0.3170212319949975831567763580326101 0.0280572487481640623501102669152406 1.0284583741453044291253035541697906 GT 1 -5742030854.8625693450002231310774516974328069 0.5883309890809722407520079879727904 0.0935507025621479231987192908432102 1.0982201825767010923692226617382086 GT 1 -114973647693828194675384362276761344.0011953745398089623803803497613197 2.2336354601117243927560925891528510 0.0773174660292272148538976716529751 1.0804700538378987317175258436315651 GT 1 -30575878.9976728508638678177361127567559003 3.7770013537983409305986448536519857 0.0288282085754592788349353774859628 1.0292519041722978885283928403181874 LT 1 -3356939.7332457974195992960986744069473418 4.2493986841228388212963951918243220 0.0743305350180050503341816818421988 1.0772380573210144259919254851154787 LT 1 -14365254654348558804521629534116525.0192760910935245517306047604212355 2.3021922985456783718400660939269694 0.0663010347491111313543448714840926 1.0686011997172589865786244480607855 GT 1 -22046708325927406174738792193794014.4484709388251287906719218671034899 0.4568440843638035509869102929656114 0.0147415528791960291658608498667654 1.0148512893626513473348414711212030 GT 1 -2651152233182.5642230461941149147268957505002641 1.2183425127456939344390368869427701 0.0026058230427293925094506608359515 1.0026092241092642364085325435494081 GT 1 -81544614363230008907230500417803.9329373920792417806968777456215282 0.9401175905281811463214807989360904 0.0644971319818975205888594587119679 1.0666710675130957266620489224277649 GT 1 -6754870888897969604.4619472266387187496309878228233316 0.0245441173593247677708673810125358 0.0916276304061912575214283167358729 1.0961008857767252605841937824838949 GT 1 -1230955323624171915834.8603697638567967516869295989614765 0.7773554895785239496187481650653787 0.0725719907013939655872339105659250 1.0753401055198739885285526593599027 GT 1 -62276866980.9556767651508241846077737454413205 1.6508088353373603754029047720447534 0.0733673121368903601853803873353990 1.0761980294114659289341974592610201 GT 1 -220938030122183256955.2383785803940584102576835546518720 1.2734562067598405484225742557652500 0.0715335739338659178836731418459614 1.0742210581687906280388476850411941 GT 1 -368669655489975119926494190420322116197643.0881895231052321942367641091678658 1.5089461059682311661364987409796683 0.0437710081192034897334411696195162 1.0447578633577035564018460323042806 GT 1 -306479314.4074546760379008291739036043399855 2.3260419684839825194410340048074894 0.0100577894870117291090636756747719 1.0101087107764878719077020459380877 GT 1 -13560901208.9225260507707531587330365987542636 2.6604012518116628377181961299344765 0.0850334324591158808308205623863264 1.0888677525808362943561050750518555 LT 1 -6587097938181408617781062281570578501147118.1371143822937433886737109470721612 0.2651011826522094186088661191576915 0.0876676058088916835837953890667944 1.0917508879950719274591101791220613 GT 1 -80867734717413328504.9053828582506155672469254605647080 0.1007831355410456565980691565779647 0.0450900098155034884219596948111141 1.0461381940590327758712309243311673 GT 1 -11452576699057777.9237776358785341058171827369267892 1.8928154905386391020969650299146518 0.0531607017724828383695164310010571 1.0546258958374746206665040925816695 GT 1 -83152992065112582.5579256170442522888156711693855346 0.5245141399273463506702401188791470 0.0649600069105264268238023491478234 1.0671659772504782873567113913157840 GT 1 -1585622179300429024040183996028320698678.8541578378808303925174928665376906 4.1562997693652838285527003737822731 0.0471559625703094402046546053794773 1.0483040430442795862771634661885316 LT 1 -189579370209037855356279354922058.9611379596114547357946301326691788 0.7506928279550791934812524622023091 0.0375838751891364504287942454208708 1.0383083596710225228322450898964803 GT 1 -244172244437018086450915860130275497263958.0998209357096818354382300433709679 0.5783229236677624515923353767739575 0.0191532606291940455987603702329120 1.0193390606016026808137473429446868 GT 1 -6238551260787307149040800537326959356898.0850171204869760322336789390519588 0.8624673170470767925736271802760394 0.0826438118520632908324065433814988 1.0862594545019168466720493075853902 GT 1 -16.6519739322394232259533615733430157 0.9218399083193777467025357894181091 0.0097172995456523208632977585744864 1.0097648206023675789070911238232126 GT 1 -82801378827593227529743425.2315963414076994848221734114860279 1.3595148428145999239743277284285945 0.0522973214200717894155384700083638 1.0537144561092981316443730427371192 GT 1 -6502221723102860266.5074657626082420349732696677792013 0.2456749986991393317346476234104230 0.0111750096482645638804249517056431 1.0112379191841061510872926969486850 GT 1 -17776681812306411765884528742188471.5958170109997675121432444969690825 1.4486208581919901629231824020994072 0.0907656690153179305907945165952835 1.0951524281646188146419921573060735 GT 1 -2419937943.2471377759499856390976512914848074 0.7847886297228749007485652603740208 0.0736868629502711453387573880949876 1.0765429405386584668055876394836994 GT 1 -845122432944.3217827099887288267888018235850705 1.9407743700511163902807439545581013 0.0371996325979193681456166538218755 1.0379091914757850481605723322595605 GT 1 -2.0657073216559087104997551195503550 1.4672160292978980439865439968107660 0.0734695457489910587044933887205220 1.0763083635853776565354633957429081 GT 1 -950737272461.4766797323241541617089910301416598 1.2098574537079957351063052596743397 0.0829905695461132151986072397036549 1.0866375227503225950984452541199863 GT 1 -21965195148574.8832370679958461216905212623157435 0.2012321020041304215240930514137132 0.0092771845520225097163412471786114 1.0093204856448543827739856553957098 GT 1 -599901314630498519092809000336530539793115.0608277734027083286158763216421727 0.4860274282432986744236088107890448 0.0232822900960725006642937582988452 1.0235576043045140275231819039605785 GT 1 -33707875191025059825467822375069651423460.1331313112382074406392033629178463 0.9720842387044237626229267385906760 0.0410789817861964055826625193364231 1.0419465659743871333657935574493045 GT 1 -4835140976172904217638238305109037373241992.2374431389376438053370244023459924 0.4203059856113739255492957544477132 0.0951194286703298227628918945586698 1.0999523093719879418296837286221264 GT 1 -648388170733288433466999561.2574101285413973996356184631186638 0.1560730914052844984235041266697947 0.0615774583610434393351439281021893 1.0635549605769926717014445302070029 GT 1 -1561728.2395845560187025626540686492027349 0.0586701664798380466062078265736112 0.0602721427959835150516093005429823 1.0621649592479924622297965071081286 GT 1 -598875071115389361396777617967.0481336809723183259621270641468529 0.1969898099837326783256306797443842 0.0353146827054334864987515467955743 1.0359533268918422659541091036224173 GT 1 -100199772.7390451033719525696043291093634803 0.0863748729260084650466279168741890 0.0909977208728553183542090636609113 1.0954076775172132575408896758628144 GT 1 -27201643283415488775533627932779923.6486528002672919327845124625096299 0.0067173880227392963945090519149396 0.0939215288179295495570829463333013 1.0986293639060860880844622126619478 GT 1 -12625331901464.2083074636093350581568321879461186 1.0705084900900722755521701770932281 0.0615946937041330366166696820350990 1.0635733270383695601240309442942215 GT 1 -40948811616131.6805505857577608810395984174999092 0.4781917812444493437370979786267888 0.0963345433494555966756188897643544 1.1012960571596214694860029507998626 GT 1 -1176551023076140111204691214674.3684287762073922461993077489298858 2.2368493237743168162318037124283005 0.0866381760664972515412259459824870 1.0906231746668795411356792295856530 GT 1 -104590064644.2577345565904761515361120473389546 1.6894267377972241672578768649252685 0.0732043691066784139164903023064779 1.0760222006200497427176063686480068 GT 1 -109444845.6413549626223296549634929039662854 1.0267272348903431570393059463386099 0.0844983426996942296248859123499849 1.0882831046012628643064076811734586 GT 1 -7917.8559036377881846487088106437258913 0.0983068713451817118575854799089402 0.0313607314447869651357574757184555 1.0318630082745917108115615779167778 GT 1 -3189433.2765621106779050480258667955698646 0.0401870281218066752211847035700142 0.0457002434119724963356553043674976 1.0467774466275693419554102472193074 GT 1 -385434527339462276655315167681513000644678.8091312175521012474148564274256182 0.4491339817148318779029527916868533 0.0572720561927178585691239796907566 1.0589775387076119058669686550884277 GT 1 -2.9454300377687058311819303694631430 1.9316619994013543213779734715274643 0.0842293061788783601941291839296190 1.0879892799032744108993466668690509 GT 1 -31037658767780952296871654661862963.3474251236514315191548467452418979 1.4089213226244241431068794319303675 0.0222518121776389028923484102935600 1.0225031187643793296582551420637126 GT 1 -414.6280069090730577706284840167711155 0.6213067145938036763209279148487137 0.0571396870396974460030646520622972 1.0588371377979618080577789130901543 GT 1 -6649304972019.0421879807825350809060381795217380 0.0596079690317346461169218231533360 0.0628406193276788805459594730985498 1.0649019144397774498909660878689763 GT 1 -300004905562205613755400051884564925.8323999843029869167977003165027406 0.5033761901721588475999210795746369 0.0180499234133207668383359570989538 1.0182148104264284583182480154740604 GT 1 -5489697562080879237459317.9646139274501137913711530229996570 0.8221684792297925233680633372757359 0.0783541164542161481101037527112686 1.0815942034463006958371207606064585 GT 1 -41595296309518329149544224850068364558.1212726893734295755305107897810655 0.2577835732316793373120330005072928 0.0468666775954785501591473846125233 1.0480004875213772334322437272087391 GT 1 -5199332354502811790735972685.2163135534586621240696917681453564 0.6561208888829009656327686698365892 0.0579520670681079147954789374592318 1.0596991214838858702987112159470295 GT 1 -75327167783701115762484940544164909234.0222547920557534079559847091928456 0.0485936503130613720770291283443021 0.0820944714843508976697774910045700 1.0856608037709276556157370537181665 GT 1 -133645267294447.7291389038371005368557559252908360 0.5467516427344111771657431651074723 0.0041823232546309502113413916600854 1.0041910936307746302432412756113735 GT 1 -497556078607764334315376.1216853646281526135355575046517191 0.8724790816625539046892045110190733 0.0460425578836620947917096324055221 1.0471362184698491262585524140374561 GT 1 -1076117427087291737967050228735268374257.5591407372429197253986300742866025 2.0664802617336348191365367082803488 0.0033377196861320621245450205433539 1.0033433022980741408788784441294745 GT 1 -18998949.7762850869671916306529910168378170 3.0273950897976870193281614681418827 0.0012741104156635552196564713227478 1.0012749227844442041273083326831294 GT 1 -112012647763158663949952601575690634687298.8313062004666853726309881322818143 0.4530526660294415357536878707093781 0.0786634805168436584296821480463315 1.0819299245742124312102449112904704 GT 1 -38141013564218965014895930760123347466695.2254234326562826087986865616600043 0.6845214665942194378292750609482440 0.0217663346627337031199882876116758 1.0220067158717961619984608192214637 GT 1 -5620324590325976872513.9687498333449117615782467517919426 0.9216391238805747608447471210906729 0.0440089890046309435485764430542067 1.0450067686994510126361910409263635 GT 1 -2575097.2334925027472672156802607749230904 0.8655688224761604600570227127900318 0.0581908655202221550134780096763066 1.0599526422605139592396727150678780 GT 1 -3145686616343789609370330613781115942442932.3619774557226419730488907064038416 0.1397690135030689305296032603114567 0.0446606199487167164779224634412538 1.0456886298495539900348660923106197 GT 1 -3730287657725043865580850866682208914464.6860877998530461377260271019721121 0.2967016317280592349622332447920460 0.0697590229453128626030026999630004 1.0723116112867914716636067686183132 GT 1 -3623549094080091513471574978643594.4711808825229838237510742456297661 0.1274479238032343515074356961088459 0.0467427469929262596688369005972482 1.0478704715589345823707160778321324 GT 1 -287250634998.2484803837676236778175447784403891 0.1367241769151121132664514442845377 0.0000571019592218275809983169300868 1.0000571035896007665831017650355884 GT 1 -1330770084098203012769318352844684055.0406636139185576179664770989570494 0.1181691947930415428379987958443470 0.0609596024575268854885151566959633 1.0628967788223203778955806999095953 GT 1 -9603329126084958771742834691.9791413128366072665705120948821532 2.7873283569191892149062219072419982 0.0726091464805408347253082897295902 1.0753801695712988134475688822473486 LT 1 -699115017666196310308.8393066545096768228231569656142566 2.9000077117161193188912523575094462 0.0922797661211770515649107253571047 1.0968190603254992679221113373381086 LT 1 -360309378534229329671935032228.8947277018634668192682576989368927 0.2745468758966234960038777080597420 0.0038082256475677003084903807873118 1.0038154954013033408135239441449802 GT 1 -381478566899868939.7015930605612219023774757943036748 1.2721815651333226829873789006391622 0.0743101083500718595996159140007831 1.0772159906510717729006035208985096 GT 1 -9758429970363.1985977393459534206745871271568098 0.0539237599022776260649514401150796 0.0823620420215174087770314766444849 1.0859523474374553369478914656291139 GT 1 -15300957.6481566473254908673477334800498394 0.3873439577648045968238268277214732 0.0288781731457225588777218226314686 1.0293033532115204732015847042582912 GT 1 -15722320747126972032419814439930487017.0952172392951220499306917906023471 2.3109808057517856914038463789550043 0.0639212396554821847426121257638978 1.0660556603773731877240533119937633 GT 1 -17408538662.7725616926915868392130388897106706 6.6539287087345525761204854872569787 0.0074975621223138139102627274015719 1.0075258101238725696653865773670847 LT 1 -54912930919407829178254103256711.3029924236984663669627975875988337 1.8844051050059200027565146643881195 0.0828491809285945653526585879422660 1.0864833501606207944819208820487436 GT 1 -397038354.0996054514805482624524983542336015 0.8204838349930274986889061320672150 0.0476765739440977606558543658256084 1.0488505686350476525079025913148726 GT 1 -5.6602074882501437489537469182225164 0.6003133162676820160644108520425802 0.0048435005405254153127393242854295 1.0048552683027536569356361163510399 GT 1 -191038.0764149295619835739285324394787427 0.7018637934770955820627869824782687 0.0758468326249698914643716747424890 1.0788774555206528836104441720509207 GT 1 -1464.8985966344813894579557618850828235 0.2735684186573111231978880544899119 0.0130896681592799251153294508535419 1.0131760928745590689592426860175015 GT 1 -24240461315675224468045623.4187616144402850143595567657847164 3.6892356634524874603938855968112910 0.0207971233917233765556007111764641 1.0210164295156896859476227330444917 GT 1 -3369922640209898313650979968629184191837897.3660531538901264959498279554121396 1.3392598352278407688234243825416978 0.0940837096429520988039585686049719 1.0988083719572107692967070803905568 GT 1 -14574068045.0836332402870816899901750989149383 0.2318460639776571864176731402354284 0.0026512055920440321439349456404479 1.0026547262616457128416982656700384 GT 1 -511366711844089514490391684.3063248727007940964895661874691364 3.3716640125061819229788041718698572 0.0275058002203828037112544625414216 1.0278911677442193101629828053277068 GT 1 -3.1720839928896965798230433579812792 0.2028576859475458624127459674489618 0.0366674754676798423280543601385618 1.0373566261299481772558156473555444 GT 1 -2032331426154079787348868538914499677349.4118305953001976932382165547888709 0.7171819861667441981307477281245735 0.0301023444919041123730436640032607 1.0305647228367256714743397570971482 GT 1 -2201485.2391063950310003132401600654422263 0.0734792734349398760661071611772754 0.0025398320550187205214908401643684 1.0025430629001480114864328018734171 GT 1 -125721249.9502432803600015850318465025180301 1.3220760692151013916593834302649821 0.0109599788985638437377846235264764 1.0110204819481949543960751610016238 GT 1 -18933183160917951739545439748151352328.4458529298120001286484261778973382 0.6541613200770604918650951435495776 0.0674260388081041646868989229952360 1.0698068156583361396593344058497937 GT 1 -14875464899259067174480.7916155167065766140464125463645658 1.0992984187549848180343860804998097 0.0615749947015151584265705118354915 1.0635523352603735329583046359411369 GT 1 -1288671313218291316568361.8312284537227826558389101727572021 0.5543273643066208139059757962375678 0.0088071605920487430665717246134767 1.0088461728579968503951023587920527 GT 1 -3669996038431419355121156102.8939912983617412953934251907084908 0.9055060775051212473708551568426475 0.0383520339477288640590901506145814 1.0391068349432888108981210961300042 GT 1 -10291740003.0768294043068787870223341829644601 0.4156594696231251346427999805562071 0.0976824745600891767502385693312145 1.1027887970960408302277181442531540 GT 1 -698.1518170883945516617774848873536583 0.2414771988787964738573068495464108 0.0289964088766479337682533859822914 1.0294251123213874034904079793567848 GT 1 -767186987777539.9341468920990604396953816067513081 1.9721199091082666127218646988753341 0.0899574528179899210838776996263126 1.0942639254191630327621118301079799 GT 1 -15594.8708260735796020224790049100913793 0.2309554811453106381048231796017565 0.0154706567916054194322260482847255 1.0155915761583013250732113102612636 GT 1 -19429912.3689765697361806873305707064306629 0.1808938700718156679363514010637624 0.0606965938302549083596131656852980 1.0626167357029819065771432095267788 GT 1 -89288964.1867297836758467122833374525777357 0.2704595687311333404060229024152348 0.0045300595432988736508869658785377 1.0045403513564780521316542338091157 GT 1 -153149699189309981081437744398942853.8641506007154060589273516267299161 0.0710322271630657538900517822106948 0.0585744146016332518808845325956035 1.0603599723534288240084470083932739 GT 1 -3656333198330.2573761852727803676046553735393332 1.1442042235607197667108135304314058 0.0518414939566022485574185696911735 1.0532335902358364134442141458132654 GT 1 -428303.8021482886694059452017734962811751 0.6774152285851688270390929907341825 0.0761309386322691207700353513136482 1.0791849258585294424177944395487641 GT 1 -3168770462641626048520536449857919980.4329470062172933300812184083245297 1.1234195412229873543870322744329154 0.0118797307912941658243030325217717 1.0119508586744348708421500987410893 GT 1 -5559693727015995840205683191.3710303447983369109646304205666706 0.4326091566046711749859719108551187 0.0848110794129357941902297337223208 1.0886247644317784600858987980551783 GT 1 -3126286.5897571341538636144492458845667127 0.0585209867050401977904873328191361 0.0971902708385199319298823952422230 1.1022434574447637893723629699717733 GT 1 -214768165.8262028203532711148308254118802914 0.2994778754281471310471405472729882 0.0062266944993065669263021891663184 1.0062461612124215426051269514047483 GT 1 -4.2015408942035665386493370448375100 0.4059749879352657768264092895833967 0.0149242452755889255780491582148606 1.0150367324176877547804337368010722 GT 1 -20466470158408659097968917.8739817112539726293651660420066448 0.1760132034712872914916706884991040 0.0918551530656569988262276612351899 1.0963513900478495353443460289356879 GT 1 -113233915052.9349281510681687706414734028839444 1.6578418722012458424344439138714406 0.0071422445018863955212675635455129 1.0071678724303431701561674669423946 GT 1 -315972878.4717129841144354767908026016631564 0.4572654979651124714178458117634955 0.0097460311443532207442388487698201 1.0097938345551493017714621651979942 GT 1 -20044.9374539978336136063785729929439444 1.6857742978608752132154289103346381 0.0416557533824904254549745300969367 1.0425482267088435444217164985501869 GT 1 -48791612410482885196667713902.3938488517008067174737293495796243 2.1198559598620985302686743356873741 0.0378898818833093898723526627944269 1.0386263669706125605792412920896989 GT 1 -2003719266151086530291382467216.8548285965338680693069992529090194 3.2642228392694765944069794835845783 0.0391947286895339995210075103122076 1.0407828628649559396709809951095005 LT 2 -6554749894471042424510913649016.9383667609577489083527460078553076 1.4476390594043782994912270065619599 0.0958535899408461027065809306776920 1.1007639736737089021881378133730201 GT 1 -2181974.1280460284608106746262371807546499 1.6078023173566979039411121336165433 0.0454655546136099381301052038899576 1.0465315491061373016518359095656787 GT 1 -489.2528212871537292484701055081547021 1.1393162285254128345554114600308444 0.0611177763512341473950895237569047 1.0630652350646558309566157159270772 GT 1 -213524650117040129226791387777287.4455004581292520974655058908529438 0.4652998246637175177777687026679043 0.0597802273204914383438207136315240 1.0616416303223357143645641029659459 GT 1 -1210622316405213.4758804519824461103921729719242472 2.6835240119944101726824662435806458 0.0355024374836333173553169539933490 1.0361479738387517544493344108966873 GT 1 -9681666671247089855710593.0382737225760368141764488129225635 0.1637717663976705027905347736301263 0.0887159693046415838455821117754757 1.0929006512862267556898369285062788 GT 1 -7863158459079.8948429991418476639015825311640879 0.9769094842173535702318360577747969 0.0336122389151815938480368998907976 1.0341901163221595577939758575506536 GT 1 -713898282974016678367314422437.6700391337359047054158109067943354 1.7882006730178329971647635044296121 0.0943753213760479033576997950654957 1.0991303207738347279612593722218386 GT 1 -208269103594716.4209571716158494758060938903878114 0.1671117956234863246909342738878229 0.0755202357686816235163185490877624 1.0785241167327276926861462832073627 GT 1 -5853021776922459.7701617425186585141257019450418426 1.3074125267154441507952772134756049 0.0765112628815749404838940914651465 1.0795966752824805072699436194069882 GT 1 -668939593437613472837553.3637894246678393679984111501085129 1.9423454505630837784802257225517390 0.0159605292005600174675906564432686 1.0160892701333156041420559377350899 GT 1 -892653212947.4313590238300026849965785710899615 0.2097693579298821619461835154763440 0.0861953223357871033184952377459621 1.0901384309514112565188274449479873 GT 1 -340026888234911.4714936468501016340350444135375208 0.4115837619920239960083081562907825 0.0053920338529094322586803007043247 1.0054066233357350395652139439481542 GT 1 -29689430087349834244.6185583269452645880123506229449805 1.3600538220289909474067167605610322 0.0902372232784376422325114013422428 1.0945713983768217297281411846817097 GT 1 -996746358779872380658035852547044128845636.4587530699194957105500401106936610 2.0763454712943128126090827728212279 0.0962133199631678027690742755684251 1.1011619198466503723459657609713233 GT 1 -168702658057457887888472469222390220762.3086070587394291782346294543054922 0.0706765379681463602199173506135283 0.0295281318422921457848303225584864 1.0299728637507416408905875478869429 GT 1 -3382864637.6283585434473549697353042156370125 3.0374278454529337363529395482846787 0.0504565793355868388254881951462647 1.0531142943046519636043493444793638 LT 2 -25729601951214418.7414364131500486592496974428116575 0.0353212483494393995048816516251069 0.0857161003687516310887342617702664 1.0896141434699789042234327544296032 GT 1 -1519341.5575627791600370354572659648877453 1.3390459915374539962651221937767891 0.0257437314040210292597365059739887 1.0260809005053640040193605407192434 GT 1 -21210809684543723226508878140661444335.3655265401854217856226305314499847 2.3727456968874864391607641712758319 0.0038007264555154460739067286917705 1.0038079675697963628272412802426370 GT 1 -37.3799242431623774535437061113041615 0.2798751664163607476830088422503688 0.0951584687030953068693923942752838 1.0999954541539573708388365933493695 GT 1 -11780853974073221.7285320433471294622627452132946707 1.2811830723843868624302727088105076 0.0695468423682006878944219646162216 1.0720835452397432560026545639934118 GT 1 -1834335209880413920949236392.7894159023294151433577987376789421 0.4164350042438104542328443560280694 0.0120039508083231895613045216021138 1.0120765800361138167430975293735095 GT 1 -5695154383293288713671295370634884434727147.7018911187231774021312122011824333 0.2047934201951516884338126245665969 0.0035566199276536700833655719990100 1.0035629597369671103649167038002035 GT 1 -22346850042616485994.3610779345576916070103940155375783 0.5121138093498652279296496137695493 0.0606423398378315158599756851661987 1.0625589775544677564791965834696783 GT 1 -4575867144907656475652849349.5154262645167626746026368729286800 0.7303856284268549482289736834999133 0.0543684289911476602707393994632782 1.0559022456109409207104379031709821 GT 1 -70125.8343143050601673919792005944849952 2.7088330979406490736519264759636735 0.0849922741706926328979190775174830 1.0888227702129644611887545353714247 LT 1 -660399243376598135522390198.1366818029439173918481987252686618 2.7666008184818859680836903297807855 0.0897500147249757424833846249627211 1.0940360081034421926282357125547552 LT 1 -3850544354936773935990909460443712.5063664859958296206218454219707367 1.6092933992336739258065551767867510 0.0703648030557126462015163896101950 1.0729630311396723944857433813765791 GT 1 -974334542.7233342980978381261036643986231922 0.2665871184423853182110788883277407 0.0511192008121796039166972046054698 1.0524720950181736271073266983461159 GT 1 -736117805745165093379895973.3568264477038572809100624083665841 0.6449346583413149149643292423094300 0.0393258605108401306874272850195949 1.0401200123328730982825787301548472 GT 1 -227859197400631287956.0135177242179409307957739555856154 0.4362850867157873734798603732125739 0.0484609909809585036363288689798015 1.0496745956937212918845970696097610 GT 1 -4795596186727416213861862.0824673369712287256664492503002538 4.3930761109886355835094892264419825 0.0452239897650319681491406314118635 1.0462785102677905239567929627845550 LT 1 -166.1517021514761506694780175830751470 0.3239412670087218432285402218101810 0.0821923872015656660794727269984799 1.0857674824399462099783276052899976 GT 1 -11507305903754769364351160810.5157360535066206381963247421428950 0.0493742097811967313373368458385430 0.0172891516922096276609298558885595 1.0174403543872248706314198455179065 GT 1 -21489797826004703292678205262295.5418795094055627045831241865766061 0.1614653023022180647212798358776637 0.0957611266002984541255163090236373 1.1006617130089335594854265078314704 GT 1 -67242806101249134190653953854667755.3582793163283650810855269458876834 1.3030228673852210283126547197846931 0.0603312515354083873344088641405800 1.0622278610743191446491652741203579 GT 1 -23117035483386150975257690669.5291047189534263810604494547733958 0.0178224633085760836713557692078822 0.0547935547851012117745718648522704 1.0563519148025579127150538666537881 GT 1 -426.3709123229525397757765553576239922 0.0148313112523286679346491362855035 0.0257741851087188244747801288504527 1.0261121594068015486698733319077394 GT 1 -1.6718715592956079391309442463970341 4.0642266150332095781736876476432046 0.0638957766830753032216325509092340 1.0660284590058932980527341182876786 LT 1 -182389028855744575.5623848168725851492964639450395584 0.1032546339917742297937170482606388 0.0636845346511815817529991321717182 1.0658028236592147266472235038548677 GT 1 -9581980.2156383811652916595684552651594226 3.1445243132615252005838419382302921 0.0411420957938042571624346375035625 1.0420123858735348360042404944639444 GT 1 -1301894313295640536874919.5715412277353502230521936947292270 0.8903092854753616795436773357863882 0.0409412953972323978003197508383671 1.0418029915793478242038604482514051 GT 1 -2.6660322913962016574134916142451184 0.5317271413300326728497161438633143 0.0801065826472095193938740505014816 1.0834974663537507531891220752679742 GT 1 -3280056493441327602566923125.3489703848043066718125508626435321 0.7444655479291252783480633723599134 0.0160239401963432512396655600228477 1.0161537116936784387850031479034828 GT 1 -2698141903053084136.2828819386768094059147898331997839 1.3957472059796604819354189518832726 0.0870336463176922666341516701161690 1.0910562515500192825798639529330620 GT 1 -2700719741857893559376291972270.2398830620849666429871885581600035 2.0213685688774704911950515562457966 0.0766637806903271693947644253269298 1.0797618428676033964054099727421418 GT 1 -134754047658330526897619972911.1674542697511755638700744494476392 0.9380616597444999220780374979838176 0.0196182357278463478212377644342490 1.0198132277947680744344651492099030 GT 1 -2977230561979150145072909291944461007.0274699021583160312007374730016680 1.0237215137865142829290680882465312 0.0808591939351229967625208763291674 1.0843159517526037417231018543534793 GT 1 -22702828991066584109459890942377426255.9728858122565997523352469553538408 0.0537593472096236087419973446298628 0.0892611634489059725742261896554298 1.0934991005925844839139923362668811 GT 1 -1958764243408678714922451200686742109163.7586543415673053699096462220449772 0.0222552200765139508272059837206743 0.0342720472418197246187504187182839 1.0348731068361950719030165296538768 GT 1 -82526148544222.3510211151528073072150918792471669 1.8508649012785959257279011494298141 0.0290372666223951479237579625896098 1.0294671910590439303985115483370287 GT 1 -3320970098495007418941287971495994485869.2505799553489950464242423877779085 0.5930179634597335680081940715238576 0.0220338759684609035404029129700564 1.0222802475517905013857474384909907 GT 1 -107495230339584550918794.1589113494230252622635108976963985 0.5652562604054216163001639522890480 0.0284800663167332086292444208670582 1.0288934919157844735390430501634819 GT 1 -68386223413.4652972457058419482118805028805541 0.0277417030956556942639793151364431 0.0013684312672014476785611786067829 1.0013693684243222795890474777498894 GT 1 -19.7178204406331172667579376452991143 0.5784994718911781482409877291568061 0.0287349821846485665333421123341422 1.0291559150616726888691664203960074 GT 1 -6.9688905905875802149948062332395087 0.8801561517469699484881258262252301 0.0997089023650840761838671060073757 1.1050371261372812289638553302851134 GT 1 -8563156038404.3042074503170246203821525046346502 0.3771120102685644498911680866619935 0.0556448201195270240130676059177177 1.0572529337274881177521100783674533 GT 1 -89996932786549402.3321613674490320110642305151610408 0.6793940987303565697602237336946024 0.0854211021006771119502620849178465 1.0892915405158029215772034478200023 GT 1 -98453162463.8110370559157364950668118705262810 3.6174955650587718199946473796372103 0.0151212297423706798334543488020882 1.0152367212650852263307235295870489 GT 1 -128893618499698296544438390413811121.4906958169393980857570226697049203 0.5164142495061013307776384670678615 0.0174314851581899276375077154212623 1.0175852024621581472752580474992833 GT 1 -639881900523163173281486.3119455173293827652999395832300719 0.0658967978368640288599455485564923 0.0524170986728990315575373707145311 1.0538408510486745795196188096629442 GT 1 -26521455788671535087760251315677412.4562394256331396377098678946084191 1.5394954398628606480844098503359616 0.0621443433553227025121186135782359 1.0641592259914147362686402394848642 GT 1 -937293831447488153970050491135235496440.7468706068514625320170244065434436 1.4942162700883260748886756292769290 0.0118608695215606627801548572876522 1.0119317708262130619279698070212926 GT 1 -412302410282908.1707433518963406717215015132684460 0.0198061718800928056825200664502126 0.0898807228882365285759458911661812 1.0941796143114640061764569725373631 GT 1 -109432.5242048323414814102964464462814930 0.0691131462303564531757230976254526 0.0955509495190267636073647493674181 1.1004293046653573214652236595590178 GT 1 -3867605038724571046561111116281930.3711749591968398993235712121246355 0.2715629496529838551764466084650711 0.0051646133704710549909212141311636 1.0051779960836832678901674148707439 GT 1 -4001127741516958056613650817388215.5188897714675376099260733383255121 0.0045180581892075324833299052698005 0.0107618935615332925452786309662179 1.0108202215955832760821115689157748 GT 1 -1647286417651705684278050681254595561.3803257183568697294625009986976718 2.9828418713360661967341257179386146 0.0913257733658929616042628193710317 1.0957686355815989805779904667172358 LT 1 -350.4281587990243325544268232758630229 0.0708155142713212075251182242882426 0.0238819145391657587434475521236025 1.0241717106859732903405954759645880 GT 1 -125682035353868196739698403621.4179782584514693591804190879649167 1.8213215560967168671021714040956149 0.0975219326619765663599909289970987 1.1026108911889359253046586807549323 GT 1 -20183733413797580378280266353655510685976189.5704136638214936185421912803876931 0.7945241054023002393518191739704673 0.0569606153531839818129812456696940 1.0586472319537869043668922873585785 GT 1 -335.7072144129309183382184246665122803 0.4065455092841949036358985570149285 0.0770262531106297596204389568641198 1.0801544881239204355945250788859747 GT 1 -414872806292108192.7086764206509740420652199598847902 1.3118627518378869457513538301719179 0.0598345507508022450083831983473845 1.0616994093664298815378355006742941 GT 1 -400.8534207428476839274213169181574513 1.6438541394857733111156565627867088 0.0363237300454949828052703853767433 1.0369998603208720987813722006449514 GT 1 -3357947.5982819054468439940112038415994970 0.1892015271439693368905181377220788 0.0415093505606508991498323100630779 1.0423954719541952713036517868806502 GT 1 -51477368926602998208240376999223.4251604783183975273259046050213568 0.2057245972400041099688548437145731 0.0233621688715246042989846014912761 1.0236393905168227310695283247970742 GT 1 -25076714987785150961627779.8086563425053548140567877792389258 0.3186798382258036840538787798520558 0.0307365169769711345127548477260033 1.0312187917483540969844905676387493 GT 1 -588230810420591667270955550538245245824843.6673025132497628805517097061303182 0.4641350901531482745267756694960535 0.0778343530795857844808211324063846 1.0810304111282575532822318599174900 GT 1 -3472995853367523985667386163850414143.4081095217973568884518226185514981 0.4125143944173826059418299288030784 0.0384211268199821346631889866054190 1.0391786859292188696728041677799112 GT 1 -2574960551.8531275234280928905001401519900650 0.8216518444557697298889986375473415 0.0209157781143517010179644068267523 1.0211376116680561944301055534577774 GT 1 -17057856358639653816045089.4665301549308085457904580344756069 0.5508047099556054461492453295796472 0.0255355615237813065708572217304508 1.0258672527719806869432849344584598 GT 1 -10433822278065181578672350676.7177391595388262722019189353362286 0.5156743837139400061647289682955030 0.0774589931198832384378642984641620 1.0806234521528457482842561495538987 GT 1 -998687519503804380504.7103386660067333244810865591804442 0.8149457257074842063197956845802123 0.0520688639555106814277111049664220 1.0534734206689038055548262265209846 GT 1 -27019658889080286074646886980058585500572.6904141104962634819798535792625407 0.3680144251374581899410859802289354 0.0000868055806365556788609729026278 1.0000868093484590174253667438155027 GT 1 -5.5793189204007059704601047737022861 0.2434465269929651367689503246537634 0.0823350244218403870973385549588440 1.0859229053228213066921386899453012 GT 1 -34091833945604191508891424911714581777.8411006621090775058718442717655583 0.5633638642016883483036458442386996 0.0756133572920498493707143555136222 1.0786248503748096311492739999067180 GT 1 -14038642432946923890786626329438662982.6811613863608875634413563867675805 0.4603203651652461014648035950038987 0.0942673579840958563532337410430093 1.0990111136015670728129231131790066 GT 1 -17202321029090346784302337548.0075924657430167901386148230045623 3.3793588725820939348097416501443811 0.0433548017578942238688498982734343 1.0443227000102901977157863222010703 LT 1 -1512963767946066573864817719094520911287545.6940221185817782259008564788656242 0.5203327994412673474998079199653928 0.0614665402800543657408854489947561 1.0634367712523224237078167822947391 GT 1 -1077349062918855.8859762377524527098345249223240618 1.2496017632180015764529965715859647 0.0801254612372618608976965528983587 1.0835179891484763056694198498785754 GT 1 -9.4937509910250257285003701314616876 1.2594086977233045705160358807540352 0.0999922892196623148761989859512080 1.1053519481608188694993655849302915 GT 1 -2074892957.2294713219280590427396958184018179 1.5108926642867598345690785871352925 0.0262104480771044787099166536899879 1.0265600644727586811270590236118581 GT 1 -68960885030.1008614658814328624660081634435760 1.3741826725100663279918742642938977 0.0920020370748994993265964957170941 1.0965131438579192709815431727664598 GT 1 -5167200057029304807793963988734663307.4617223051909430161201486590782510 2.2658786250070202806371100699790755 0.0715124799141768186717791034989790 1.0741983392212004433064120129929037 GT 1 -198364702685862987484085138140.0197951931185689933852049982971590 1.1548523826351945208071812696282391 0.0540223981866530670295927896700408 1.0555363869406342109238925532888708 GT 1 -552.9016114612979510502383874709448858 0.9132738808672443222959863391785832 0.0605120839784641373472665022020151 1.0624203223491361541133769922797174 GT 1 -20080514.8146317366028767232239387644547561 0.6747302181549178193688757558642767 0.0102995318385789923222724947818196 1.0103529390459357159969799022554856 GT 1 -373111081783099998360808960940934866.6296277214899234113108777359089214 0.3083957437079771088530211148927609 0.0163298710004576498525014086502766 1.0164646728901785986227811191618451 GT 1 -21858630687.0280931080971055828660449263425334 1.4797698271199583764460419790853847 0.0018602534540518871574823522775519 1.0018619858743358139451609822987163 GT 1 -40172853864607474595953440792.5580842194078254069365634112531240 2.4020070822377169744673158928766404 0.0405623514237628594860065732367097 1.0414079488910781872651054587957110 GT 1 -356001300927828292518488538368.6909481070609773165167728266637168 0.2601179743430517570033221758937789 0.0956562632254513967042215550396271 1.1005457510679366106321106651797550 GT 1 -908489749344111284159023474368.4067304561402668212008175827319373 0.1362212216004350835054580448312565 0.0332943985252802644166867248242170 1.0338612750991524404695609525975418 GT 1 -2365583981768019942672730637066344.5243452577367787712699065635457156 0.5660898886511644727356113063961200 0.0185175401026403634550829386138691 1.0186911361360943291759475164059406 GT 1 -2196071605099336877896354452.3193229119200465287071251394652807 1.9117741208597761482348303975450801 0.0088471734756373213017607816112337 1.0088865420875229167647701632030644 GT 1 -24.5129108587503991838058485516402717 2.6410562765867046557876907632538232 0.0506197052999435822736515747126888 1.0519458286100672523802692354478191 GT 1 -3890035958638413186651678640003828277944295.3776410260124894140294560982342792 0.0728165316174898442494557076598570 0.0080998713850675790294200796394696 1.0081328535649766923586734810730759 GT 1 -824812780408566363606481.0002938246674047791448769615470004 0.5451652400439076437237308609639874 0.0483199401133197855754146492232325 1.0495263722230747310843651202218769 GT 1 -830973353.8452371542538775725420601017328307 0.3351159499693662204419998747505308 0.0932924473360457540400271705555879 1.0979353145269963850705979874827659 GT 1 -64285799570104882170823.5060077229799040176470361581979287 0.2501837421294317541965939241261331 0.0988748343596506374874181074376427 1.1041111124423474751237506914794470 GT 1 -3094008134959952705451009719858190203469.8866275388012921045720659711927019 0.9267583245914529784378955979942586 0.0968954855326448059184684313792719 1.1019169908813227985222022893366477 GT 1 -1477194578300028817411658554167070378.8748100307449919718290794366029231 1.3215538862016981926462949280028842 0.0145794094294823420568409095251349 1.0146867334436220101800178243711241 GT 1 -96.0688455771930140916997220984384724 3.2468598232741281028307375680776929 0.0763289145812030929862553324672937 1.0793992388736334126875585534057652 LT 1 -10505986402832328009093136.6544385139074477992048018625205554 0.4178950224551111621636272754833249 0.0261976670854094065229124834803628 1.0265469395549617247564741714636523 GT 1 -7025977119864940217549316256679536575371.0378374967707228333482544523878612 0.7700177903061224213952257760041471 0.0051804998479948556779387505200621 1.0051939651621698754417048393870255 GT 1 -1773204494394683.0136214141801301500212497111335551 0.3096806270611263074251159878563093 0.0035190636168938076297826731609947 1.0035252700861818717254692682801460 GT 1 -120685.6075858737300137862129170078128972 0.5658381196739326676795965666139083 0.0153504023973319966777545944284072 1.0154694395744382229829952172012234 GT 1 -1153742776648754374269220906320240.1957056656130571864064136192866878 0.9186398776405035452216224492133857 0.0879299850282058973249922304837030 1.0920385210521270855489472833306236 GT 1 -262841096865023295657027303458703683.3072060567882865552999220413420518 0.9726113205730280090734089898824749 0.0101042206070644057158981624612637 1.0101556147355975717659105060280363 GT 1 -699678299618081655.2660935863627520078689438763284360 1.3271200748142514548604976444992094 0.0590084457173857273842397217830306 1.0608211146946184147702565563175662 GT 1 -6051.4134075146678833490624958793971788 0.4258858118012987702854260842179319 0.0081693906005740576145150156345289 1.0082029429316460058646379535480272 GT 1 -159531075654286647808600791298.5734659145103483327539545086568488 0.6413918029661255676561286626604763 0.0967236660882112216730707215403064 1.1017267547579649444747957717365157 GT 1 -4386.0090767610878176670799792681845088 1.0276542323491592050879512985023599 0.0260904799025224636696019683950593 1.0264368748317539368436043508329317 GT 1 -26383828267493397952397.2191017154367831652470600358315480 1.0465353866421356125533029422016516 0.0468383287399578162566215711795020 1.0479707451618609580210508522958125 GT 1 -154591244739287.7436015518026613453103516803069627 0.7539889778440017324310113563988378 0.0004759603242801835814289939539977 1.0004760736293492326598392725832109 GT 1 -3444759193.5332625561059184047274622345190562 1.8081177675860702041624360540817384 0.0308704563784554329031294553402733 1.0313569880788777568711635952482722 GT 1 -7939128.8532482637525177420994529312071339 0.1667347119046383269096525761309397 0.0286737003407610468177771226568693 1.0290928221781036258882410587577167 GT 1 -8035531959493759649331411515245.0545447821382776148526505714100411 0.2090953289288008988475200562087460 0.0959411471720565484742532954249047 1.1008608180232702769329213848619339 GT 1 -37832855292.7373616752726300052776858556832648 0.0110794073191337666964596360991213 0.0078008813186845209302596694219480 1.0078314673625942346295798120308687 GT 1 -39952583515587208813043.6178864225294660101015768697338283 1.2013101545639285081918917952025232 0.0180077230979179951450537813680319 1.0181718353204287311980616383122685 GT 1 -102810228298030851000545824841631130.9450318861034131744317408852564594 0.7172922465053092584480265477322941 0.0076939633241567963062005136241981 1.0077237145615067198987750734598751 GT 1 -8415635620658537129297120.0789631133763764044962389599756399 1.8381349352859750353970095551743812 0.0604892222299064416318800141178824 1.0623959883795231245962901094413036 GT 1 -13048959966372929839435492762792838082850.2454269420176607366420088389819694 0.2767918848335251789825437357964361 0.0515233684123754636847468831014897 1.0528981271402749709217130078900477 GT 1 -333046895393874727725888796867380317.4173329147186175375944158874765835 0.2016231474661401716492092887983041 0.0517798967396494350415168765787239 1.0531686272409236080523884497496887 GT 1 -370906.2958848175069816083466403937334196 0.0039081031457870863501192680285020 0.0869703766623853183517542087093465 1.0909869527606150186418851190637413 GT 1 -61239337.1354324843498056416641049192038457 0.1348044464679390364028555856341058 0.0582798310843593059580252513572512 1.0600471091361212930984035456815327 GT 1 -6.7351417893841981629566359774061003 0.9412991568429792340613424785372129 0.0752074178410426195691454158345257 1.0781858021180812423003264860067969 GT 1 -95892786954746351376574820267738122373650.1811335037362087214233799664174407 0.9790273444750042485345195028647925 0.0394156081646929672125821717094923 1.0402134382330888763350099971228009 GT 1 -268191727655546382931642.2603367236735640834690866601695174 0.6377202916633872077120252629812890 0.0908405956128897067563669805657828 1.0952348378167823609780486157863264 GT 1 -32748563231275392745.4840974981559093277537556491331645 1.1059174620990697140407103501088848 0.0165098073072847462896269250974091 1.0166476130454315618108877763737452 GT 1 -370128190109.0712686742938734050501129439568095 1.6463760765105095013054213838679826 0.0927136376647111076246474747691451 1.0972971539618566852741529906224804 GT 1 -7915317970691208758622184.7776569745078701392403068406297229 0.7611896561133413393455184564743431 0.0333009648847740541326296786803761 1.0338680676343202431285371431089892 GT 1 -7967056567875221812096373810279523.2322247642958708438631635975589242 1.1954907431912162600658947823785256 0.0432736313238611371826921343631637 1.0442378545620926822177589068586320 GT 1 -884455705038159002.1230366036586369363063044989981342 0.5530683723087873467043282603592852 0.0733278149874320503291604792495948 1.0761554059337614712688126087440613 GT 1 -9122913425387577928.6969025052204799705699357156447204 0.7466479509611987487375627289306664 0.0294603026479134256401561914649058 1.0299029731889216080243542980320214 GT 1 -7201.4646265786169848006200445770811690 0.5951504830373955404007435040956235 0.0227661608220133725105250057576756 1.0230293114854769783949657106314048 GT 1 -185374432995.2490715499906436721150507330410515 0.3590787344111680919775354652852936 0.0212946089803600045581004676319119 1.0215246102180936422755873545645072 GT 1 -20321426636.2452215619932239855186446103462522 3.3585853694239935925933502327230962 0.0974770601235140335273849887120904 1.1025611709524458364904509499351585 LT 1 -3206568524583.6798675393645623989915995111460800 0.1964971795647972120905659879548658 0.0133558148770062974312578991526607 1.0134458059400478723615888434701349 GT 1 -1629138298766837282353958836025441.6647031387434246140362166011174005 0.6193923960296628499811588289534670 0.0015945831393158647410324615219116 1.0015958558401414143630450133126101 GT 1 -453157791951378549391114923942.2411545714027772259660474692375045 0.2276661004379127795773263958442663 0.0174117609317735309547344360824097 1.0175651285150006860759393912713705 GT 1 -203138510799552918525.2785962604529073713607441440589788 0.1522185086937780949865167685178814 0.0713969278042069035839735494796376 1.0740738949850395443047085992617637 GT 1 -155006026367.8169919183884839611149641472248081 0.2082100880573668391660312106967977 0.0848989599983061523017153809347528 1.0887207935717838201283427120179093 GT 1 -506957688722311303710194318.2805371047107803551571455030361332 0.2216187613190479564008989752779565 0.0389691359293496335358268089009856 1.0397487539087892194181599172188618 GT 1 -3498863764377163444501781440.5999316108771572519197092154961464 0.1452474759289543056440342724563003 0.0011322174725657638796246162874953 1.0011328589149822728074989718085711 GT 1 -1445865495091264068190325791.0826463001545226509496180033530200 3.5741367664129882063713457475962682 0.0728492970191187485880431748756080 1.0756391559920435896104155348958603 LT 1 -8421123.6836918950962396436724378856512438 0.6655120257124794939097757429060650 0.0032421249109880617305044604947359 1.0032473919853804680291994055501915 GT 1 -5272377.3090521274793624474616923624871764 0.5406858172774103377620780045463007 0.0716307317290953626071909766282969 1.0743257069490940477509613680644994 GT 1 -32.3647599695498769009481143142014503 0.9073741047598679401993488175141767 0.0344953562050698209475456064764957 1.0351043673944974759186159673428849 GT 1 -9.7484206645315437800830703713649717 0.6036963358071749547615714931386875 0.0281477360879601451674932913670765 1.0285514779336725853107180079263501 GT 1 -351039050033859787800098173237590.7410020943017096644309570930151778 0.9182936966561597724302315467483521 0.0902367946871807081447509180111366 1.0945709272747202308586916984298677 GT 1 -75407401649329596039821335720777910206863.9607199723660960679556095408076998 1.7908346204564699151911807292661168 0.0527193221610494046827825610440094 1.0541598433962357080213906307138245 GT 1 -2053269884726317862.6516471371314651936171333939177004 4.5491293354614618649989098148138238 0.0855163686707177984914715476419782 1.0893957103499168074377806394963564 LT 1 -159865836491.1882883730265644887783933380668169 0.1430604414703216241019849050725211 0.0586264697957353724705483384386979 1.0604152678904662129651528477072400 GT 1 -1803677153910904023770253.2806289981112176085836824581952587 0.5556291775766837361275413361630226 0.0807685398380302543922379422803646 1.0842173274436630008682612598503896 GT 1 -6797258737763768472809894.7252083402069101117420061584888909 1.1019590914689180047017012453769182 0.0428280336366399385632488308560318 1.0437722105024113481597073627660887 GT 1 -15320015074.4300372842514290204078409829736594 1.0818619981151457168198985240063735 0.0342837055547785253178833956209930 1.0348851789557769057765800238081212 GT 1 -4346182999383269727029337366030057340872872.5753025647824273190762618211754164 0.2562327772696378251647782305730318 0.0514397155318661846237730114737587 1.0528099339376488164377284392425571 GT 1 -12616125001822398064466220612.0318160646232204032096734370729976 1.0559537882896938419867259706618747 0.0736699112154894512153881504985712 1.0765246404854741480666877831575553 GT 1 -872615103.1299176459451291838634928360486667 0.7360843392262027827612743766418987 0.0472238782526808229237849383595641 1.0483753223934962413071809014564789 GT 1 -89932008.5302091626350195623283130129448986 0.6555583017507831524872339108935186 0.0508311751455334035279488418957091 1.0521685985603269350859050704362526 GT 1 -5.5431743583884370502662007685446659 1.4067969212823462123170214732817962 0.0442570088887334338443383758709117 1.0452662398238027112438093455480641 GT 1 -1716219411169293945.8274941600920465035331769092931602 1.0697245886831487118265525907243731 0.0997795342061926306827157888665090 1.1051155836629971778333145348051400 GT 1 -4170206784823878011939390991.4100336385109355384709062899487070 0.7813156336882786120069241993094877 0.0939703897984783559877970483116543 1.0986832911315784450597852405306216 GT 1 -89276.9883734872962161714323371633447583 1.1889565815594881676600368283248322 0.0356676691053953749221113369735523 1.0363193021894069129483347885137774 GT 1 -932798328742075996553104059361805916408.7374801294083795408923554327493349 0.2306468456523938605174872626387898 0.0634441524792802005488315578409075 1.0655461245773615647818434372286985 GT 1 -1830244403627572956590509196574461656066.6874359090662027679200314870609386 1.1650715630850194509560197157862487 0.0395582447334586331392693109822288 1.0403619386262178059749332590930233 GT 1 -6816967852464770845.1376865262932650400067301805510251 0.0991597017872606294766674395355369 0.0451209741184055053688782987055225 1.0461706209948296028077003863864037 GT 1 -16923365.0607972785304133480062751315499715 0.4829838949126422200436207154484022 0.0093669767272649742777439002005275 1.0094111227465290732454858315628557 GT 1 -11525185.3822720307428567278874215735826075 0.0983533427983752066672068028828405 0.0590755493112662613641794251392442 1.0608924288167489555649144595663547 GT 1 -13709557553467975329365647030928467.2437847521534113326668368267620676 0.1241501639661532759303730839082431 0.0464534887202366160268630906411497 1.0475670756035393931348606443370278 GT 1 -169.4958796171868027968107622541089153 0.0966092863494780594193042375539096 0.0490950880880883040035842382208948 1.0503412089101579894632927142483901 GT 1 -19010.3283227611335645788470326102190803 0.1788083213777612315761785432507732 0.0893071519861123138085124028170515 1.0935495977236114949366732203114504 GT 1 -25368570280293770865899.4502764335803114477021004099617239 1.0995462728294645627808700420811700 0.0979799324245766499970932382430324 1.1031185113006704976372682189039101 GT 1 -8477084628982400154.5656269493359011443756797562557882 1.9187941974429260218561708741658045 0.0984386636471545525274723300869512 1.1036272005469343194494786761279705 GT 1 -3920.0874663326099954443181663606948970 0.1885656706956122002125287050418264 0.0544235298952093478087193080015347 1.0559605162008278295084921126520085 GT 1 -5161849273705749967167561.6475997434226644681413887669693890 0.0528228885712797825415537700405903 0.0396762855936222907990025516256487 1.0404848488535995605143141762943914 GT 1 -378.4698066795571544308859930345165147 0.2294246751361437715488310401576352 0.0929915073715629485059275561701260 1.0976034654836738275209315638863280 GT 1 -821151203412793644361561.2913615775195805638454550518296398 1.7478372653817273403410761806364346 0.0723500400384536737907557454289921 1.0751008156704151233735732086221694 GT 1 -47188441309713345375368947742004.3237808595865929850199823683954820 0.8797921228936579146463515333020090 0.0967954139458442258888625885641151 1.1018061885974013251513880799208196 GT 1 -11.5150472486842406162368778480501386 1.3188797036854830198255737790088286 0.0935240902117941497909464062296402 1.0981908241119948685275954797049810 GT 1 -12987263851384392522910323451.7634901398416711526998989015605615 0.6210194893156527492326446019131622 0.0350191585578582503448226608640701 1.0356470312680654162283965572686221 GT 1 -327288585903734810901629956772564419539228.9703749736897337749100028474480937 1.3037805891976734287879384437028921 0.0687387894096999201903964222161345 1.0712154711430546449585303698689796 GT 1 -450865950334006136380.1751429401593475378762059476247871 0.4213161758859060188987686572619997 0.0208557904947287647017451938347345 1.0210763444341828797452713798260413 GT 1 -16709885036185138321946301101020508974206.1026242459707109817733670445186767 0.2192206735125744806441212950837921 0.0900989848936886214179190515871825 1.0944194599960771220141635687871829 GT 1 -721936171411964313026135087032898804.0700000656106836188128908383980506 0.2776114396019117165063473191427992 0.0309878591379002775595932775224839 1.0314781379004087033540631856708460 GT 1 -2187.6980428078690526709529229384843043 0.0938345722000470397716134981417606 0.0300640995107479017295488403665223 1.0305252916380613070290571302927187 GT 1 -423501459975997108402623675437740.1143029857135368790242676501004164 0.4265931589701448857455246305999055 0.0414625736684456381662731383649575 1.0423466704861252390356903969942838 GT 1 -191614463299779.1790623920754775022433547276685205 1.1242833079562277530355533336237674 0.0253836474136213452335698076962924 1.0257113699464311516917579138108654 GT 1 -104339436247790717.1541912240898761318919922565084953 0.5220632058395968717389374670111111 0.0672820667932771721229468595151960 1.0696524462370726505438621815616480 GT 1 -144839088038057780995154157024.2143580065825149761236008204592159 0.1610242578294293433457644390332697 0.0527272516658338520410044620797367 1.0541682142393852842044593082858246 GT 1 -1.6284807995594117044132802129640846 0.6536672850023049380713958956679463 0.0008391850138223217463439697045182 1.0008395373266836060268187098643479 GT 1 -155011.2859350029788509572186530831450455 1.0091507640957207118598044881493262 0.0843684343558430562514523119653511 1.0881412161330276287813746460511679 GT 1 -2873604.8678749540016612985851397851021014 0.8402619619236253401819325396551241 0.0250477848884518558034707533663282 1.0253668193273280304470363177807761 GT 1 -13896740626815436678229373250996643107147507.8925288093255027648427321324097825 0.8391343218730054390860237937503850 0.0709879699192910011304103708882235 1.0736335907572996787329702273896836 GT 1 -31594327119.0454924948783282171671113810512072 3.4882488296002173548527932481435465 0.0379044697722456388890692941880046 1.0386415294756692105054058993646030 LT 1 -14533569032642779209213183970057470963731.5525435191473470240269387559392111 3.6157388128719771559810839120858748 0.0847178453813104707349444366047972 1.0885228955380616120981103581225136 LT 1 -762335.8179467356865568798019693414162209 1.0911094717400285686226231492477299 0.0521654606624259910624301051195529 1.0535753285241343209040728940417064 GT 1 -31538644652994074682577.3703482021770042872108838722041073 0.0765821195633177382360897706671678 0.0548382230274843267219471557500359 1.0563991735766603901234137544723454 GT 1 -69068965560051461.6886604784128155502757939772864520 0.3861008976097125466468747939023664 0.0286112050273120158298358872658997 1.0290284840632217530282461572762526 GT 1 -2246606729886106348355030331828969931792543.6032208041503882597437509396100535 0.4041119015008563462360990662715740 0.0743716506946493309258197972575068 1.0772824755408532130204919999878012 GT 1 -145415472269389596477138575.2763117245907973411585812182031284 0.2402575911040498454510874054583534 0.0825499978098020915746964556329779 1.0861571940639076823121073872405858 GT 1 -1418557647.5069385391910499537098582436808626 1.1914883038985405950791530541588162 0.0123029205882251858128981360484263 1.0123792280312458938601503801154081 GT 1 -1767378058598996227639633619046125579935.7367604322441213991131733956807995 0.4187714218937732391712855437662604 0.0536890004310287545868818193529895 1.0551840117703451227952145473998375 GT 1 -315649450371166864463096506758449562422.2589016249698564362307218300888844 1.3536007012700928231099402571785534 0.0808567598019018837335808919929018 1.0843133034858942930164736043331095 GT 1 -9775054974115847958620329567909.0337777299952327913216207305410935 0.0716687640653200520896204358508560 0.0912778763931843469833618881193158 1.0957159261407405190122682246812821 GT 1 -2148733.7221161835714001597750297936784699 2.0806141814202781702787378010491318 0.0284618835843632312706500922431813 1.0288747763325114132379111992586875 GT 1 -134795495.4324784070037177043347855771807561 9.6352158668431579022323839951999198 0.0756852757439667494171375377805324 1.0787026546683946870425864061723277 LT 1 -1187213453840059198279613853949226495356.3189308888295664589824017237255514 0.0670065531271043412382285261213748 0.0115596587663953042687961426727699 1.0116269910166402134186305048546653 GT 1 -1131631729976248803830309590870777457970865.0733874549521893806124812807443430 1.1072468106266089040044334483628100 0.0421093070954232155395264586570551 1.0430216067856264005299147007489074 GT 1 -113452079795492.7797884987381352416570910128292895 0.0692229132486675799013056096119848 0.0598678495042785385742295002003972 1.0617348279655753486295136565753152 GT 1 -7835685743648743081034.0966893473375481259726821452057543 1.1712774621724821413464029275527248 0.0185148793441604383584917087827615 1.0186884251810013501293412297869534 GT 1 -25552355361273160.0442077492566384787684028583496317 0.0241612002619179766906000547288519 0.0286141342641270758981430509730393 1.0290314995820817673426510922945459 GT 1 -439111950582626821239937116437.4860518841627952866558259661121751 0.3847396333371146618332747069720428 0.0634304946993643934250428468429243 1.0655315416986498144753650601510050 GT 1 -71874258283653329327612906830.6718505381179760746204771879702052 0.2034776120337911685442381337003848 0.0717062092150868605538699795066821 1.0744070114008252726658717214031813 GT 1 -114151.1162349281042769472283361393948166 1.3214366927495998315493893341299885 0.0281605034620589128919665441651321 1.0285646151752442587884040605016520 GT 1 -8663040434.7335003342537417035228479328555516 0.2625676139928480404482373002346851 0.0944870765133749393568958443627238 1.0992537295499968897659383177667840 GT 1 -14537635478991943156779.6068741948784826470832877336500694 2.5321458524443633284002008051634142 0.0081575449951226181831686247539752 1.0081909998290610670838181444746938 GT 1 -1097836259172111039734591660149.9040973653405707282834903606099962 1.4178049021555360821838353321474375 0.0176174629925561120293360977567270 1.0177744975947228967622563285811877 GT 1 -325592398280077694.8437769339628166311094088014923286 0.0665968347630328608237277929408137 0.0771754607209951721734301177552825 1.0803161608395237716804183477359454 GT 1 -1749464468992514769622570207792.4318538480966105464258471101747999 0.7082830341071712541613756559398667 0.0514394336611509680343022652358521 1.0528096367813394577676968774528064 GT 1 -239.7407753470452141174493297517194650 0.2709409173792771462010524544536420 0.0720256343618707382786392546199364 1.0747511698122395559954010631356266 GT 1 -1.1444706357233514888439810677216317 0.0214197978158490403581050241920087 0.0879332199550851250814709683827561 1.0920420678550730800854853467218624 GT 1 -220520603887059963272184044721304277.9533067918907229849782774003933942 0.4234539914021308682222983627515278 0.0880616308235324106700194218840156 1.0921828688486604559184144097876067 GT 1 -3705874637.0470371539543532796384789796956121 1.9012585923179816434070662959835438 0.0717068359947373636417448441061964 1.0744076865964027121808238292736475 GT 1 -542395756369345.6162337741680600857516916374072251 1.5612797719575040711125471581510050 0.0600160612167048883158344173662018 1.0618924902648115610625414111934923 GT 1 -1594809579565663513337135462950338.5445513883425375153907756836766412 4.3654999953159102109746877771468205 0.0156955639348396294123837412685082 1.0158200435348570958051828918982974 LT 1 -4760611072344.1225603835056808207947095610910184 0.2063491872232321172521942526578109 0.0021240460074472566820577683030428 1.0021263049925271336225927790838843 GT 1 -9096025034707773162176281.1962182485689005412036364118816559 0.4970662346354189603804034704280327 0.0842887770738914887546043643012746 1.0880542228268055945506813755725247 GT 1 -18919235851038749954071484615942174978118450.6745088132563708346583475663624483 1.7818201939809148829145413933877328 0.0560286984603107459581480240936766 1.0576595142100995641766892272001717 GT 1 -766.7305243525232715946547739145800496 0.3579232889668830217158806623856034 0.0672389407919546461374035691366535 1.0696062103893299919262042864978681 GT 1 -4631615828617595107019985727617756.9817843749016335354960896954031008 0.5915873317855769047652504992168538 0.0579422611517692520366939765609646 1.0596887123900801215323654927938526 GT 1 -491248201721191706260524389926.8281757845144719330137566514147234 1.2660996027695940370034202218567321 0.0222016450072693490808878133258936 1.0224518111945698774760149136716412 GT 1 -5423964368559310032529154233276.5474142585430641714464708812527679 1.6127870418980375210186792577980594 0.0149395362290884090833610644693266 1.0150522551550053488879824440260894 GT 1 -1124833368061562041885304340363.0211167478898294107077176090908659 0.3635614027308628879797314449190485 0.0200771456230550664664032316798821 1.0202814304396286931549842741232619 GT 1 -21079770735330551113734189.6824520779644992204630278000761189 0.2994799408806186370285929012070297 0.0705671174751923901712382453381802 1.0731806825775220427710747673887972 GT 1 -5201020330143322318.5214490947694886284288599851091520 0.0539480012917400422100251214792774 0.0725058335774374634792630612160444 1.0752687740916874311186366564657576 GT 1 -56612141547.2890236327700637165926874322344069 0.6597280265977844024011366521044060 0.0286571894340393624736523520253022 1.0290758240113698501028813591511866 GT 1 -447586.8170400058664521694318718173228100 0.1203481696645029792075530017189423 0.0369756859595510107976309538023719 1.0376766192779772524349763731288687 GT 1 -3809494652973978972453152280462451.1399471718489178164144233509169946 1.2439129524099625990077565721902325 0.0081910823727242217901795860078386 1.0082248136111273155041030063974317 GT 1 -91486340872938601553885120706.8675261738559904934586273466518433 0.9893535920639965922787383278829708 0.0061842360432922213886767312877736 1.0062034376367355536328963990400205 GT 1 -10009036993231235531134282709.8282588861726637946081911744366779 1.5410896446141503625404483516186350 0.0047660822000951999974615235324303 1.0047774761873998694037317456298203 GT 1 -1046287373818807149725543074022381712.0699256181540568976115786907501266 0.9277667145048547397569794003813200 0.0103621820904793248418963986802886 1.0104162432848949064785453767879040 GT 1 -22523500007060909117738348806068950.3850866174903492622077509264360576 1.5955689258235703293960296964350747 0.0485221675340162589618035469222192 1.0497388899781913022304120666800749 GT 1 -3326602022644458776720593149423620838.1907229112704306290031812153131899 0.5420698311982158918433002997261553 0.0138605199407408507147529280684616 1.0139574738777475495746658723642248 GT 1 -161511932132690007628.3042523477912921459804612324377187 1.4061170142904975044453626076139491 0.0241278905875876240242462290389410 1.0244237365930397044270741313920429 GT 1 -4357.5829171034198055755867009779113399 0.0762513669588623391059490275681015 0.0358012017677841192170354429075219 1.0364577833998840293864495548868127 GT 1 -34792125177739229832306253434684231252607.3406011775996585358112420390441120 0.9337385257276437598920020739496669 0.0637444585206564446002823368232140 1.0658668253651866881315827100305480 GT 1 -77644358478963521746968402259606019141355.9232600862274845420763336176535432 1.5011159768589569914286180648393161 0.0228505021794714848234671014742107 1.0231156214287862567684442184198557 GT 1 -3969273314.3064545831762068844671654245771518 0.8582629372527236580342779369620096 0.0016098082412211473374474612321289 1.0016111053747856776460065077605267 GT 1 -170086451568.0273925391423414414227228667144684 0.8430528719487635662333152794247344 0.0064073271701509189440155047022909 1.0064279421962074247628994711886703 GT 1 -446518364.7807976155410741326879031923116211 2.2564944458822755998028825854077042 0.0710804813064358258260575130201683 1.0737331761131566388487353393454768 GT 1 -510293684098740482239541065684596416907569.3366416110259230761742328054212176 1.4866502892347077247702470250307595 0.0604983990760425830902958530874693 1.0624057561130838715478269873276456 GT 1 -35598667200505414193860.5146896088863755697144665569655322 0.7018314767530628763156745792802199 0.0660497852124601462895399431272720 1.0683321453992938932432951313423959 GT 1 -4559015302696298790390930684.7628023334810050669975525328548945 0.0442967978829616217502233921174205 0.0074858873650621481998937526394259 1.0075140472423502112168947206693658 GT 1 -7.9132597269079843781998595317844267 0.0532001278994524297119837857703369 0.0493229045399089348525635908044260 1.0505808161971720454384463070183750 GT 1 -85633285683485890465483497120.7143507784382214647699171683373567 2.5301733519665137569907355723703042 0.0322139463506805413445740647899898 1.0327442350911638670351346657617679 GT 1 -2251582609.8333973785870874622327175571107040 0.2125908862174198043486288795295819 0.0387545865455502706572021594819820 1.0395255296124705947553876607025807 GT 1 -3675448811949922507.6372973738587899218236185252411470 0.0092613999363167984608624847141861 0.0882882031044391649760448839785398 1.0924313510260953399444717996996103 GT 1 -20456648766526233205052460985968756.9298120777062051036241153686213096 2.6067585192120367806153912883895061 0.0880951351989324681632166707569209 1.0964718374261368257952726517232065 LT 2 -1363737222244533409526447.2325784602414070636471960114286018 1.5233903583447140023257656038861001 0.0741097505377923613656837034670945 1.0769995724592659723824796648996640 GT 1 -283797772892689469553505.0946376424633032400558920335779892 0.1573810947338370429575168880363821 0.0589315564062340490236748329320581 1.0607394070856354777235911436292157 GT 1 -8235150.2898461612283504901530959961805562 2.7824334613216904660050773110988783 0.0954647379381362350701972151939764 1.1003339897636657614545450298565419 LT 1 -16425437925.8655389016855390175727435811964744 0.0696228612012630231899151654966206 0.0260097124240748628168420963438255 1.0263539470772814342991044856517969 GT 1 -39449228020.2872953127974229228620900555598339 2.0320381453345712436494718340008666 0.0822634586414624284497508771763941 1.0858449215358909445630652153111963 GT 1 -53692799316071027336336.1278244026766533649238739437509771 2.7434109151109385201258168764919229 0.0416689325632015318133956543574951 1.0425619788353666709546147966316210 GT 1 -6373443895337919013851063.0421351608813460418090689441099180 1.2262970451469791358634840378380135 0.0420338516804691516839070421252087 1.0429428374189707300895699150268416 GT 1 -49623759337678644064043308223411448.2473783753103500150339487707613350 0.6495783379011763527794266415814440 0.0279611893322572452451625484677434 1.0283595466483088847041107664906968 GT 1 -21813951573.4171975887303150918243266054831281 0.4010502656950610297078855130212003 0.0760051990569661898179443205375354 1.0790488340413110881996322742362226 GT 1 -382645930066261918790024003690844706229836.6935900127015747030971891367973969 0.1000089479435188935256635029853826 0.0866913260847563693057618333542546 1.0906813679954921303085610824969646 GT 1 -134963125825644734199044423552.2472567147292184315453806054349053 1.8888133366255299061180050542958488 0.0633341771504288858440316500172505 1.0654287061952050862975746762710419 GT 1 -11373.6228596534917126720054997954620067 0.1236664450606204940090514318175945 0.0321753625324567952885160337801051 1.0327043677579176414436816024928523 GT 1 -34927304134583849810.4036357442583715088973194013507804 2.0220206555311834334433196854082819 0.0214460880376324505626722924782298 1.0216793971258315169002228402559162 GT 1 -123475332054627321282.0232538192386363656258860315049965 0.4632419310104436769359262453710547 0.0417909019878017026471815397794284 1.0426892596792160973122155842182547 GT 1 -2653384146139856026776248380921893172901213.6893511476899179028737223388274292 2.1850523567487766272006789233223533 0.0449922473421585816381786628284979 1.0460358205680312223862825418258398 GT 1 -1791404637105863900270.4032431475395099288428872855058198 1.1186350180259029193916416733218639 0.0064393685202735227837575932320544 1.0064601906896235009203503986071480 GT 1 -52926779600255548460614716.2537269878864647107863480221445734 0.7754862458517919478057666090782025 0.0920102809714637270512599406802549 1.0965222231007425654477870251707453 GT 1 -3204036456108142015127610214332.9274774475278224690777216361691374 2.7717559028453614670586407003489150 0.0428246310520077353343692039054363 1.0437686556776734921002200213565476 GT 1 -66398946793691484953638853161.6955743716068250112636201936006779 0.1700113106126357949374772424213888 0.0655283114498732451703545318165459 1.0677739483719569733424201657872729 GT 1 -2699442244369048459018933409761674709.4900637717823051362740876420772934 0.5105150150632932660782517396527928 0.0196121274824865081681147017685838 1.0198069973378645696119064942867834 GT 1 -29743797002591621107120860031649.8509494099245039083419425374777144 0.0829986555638218772109356250950868 0.0956494398752651931242166639532800 1.1005382060115963175371526418220240 GT 1 -3838132.0413678176870406209961621079968222 1.0158025113821581742509629630755754 0.0694247341534712199450652114844459 1.0719523186411978421385951459938440 GT 1 -1745392874264040009367267.7865453171503423270474880608043977 0.1975503997088846828386994896294488 0.0740905560255869684887997658959814 1.0769788418021931670681263901777624 GT 1 -372823161717326825721398579161410400117053.2457786162725003092252364178820474 1.5916674526642618185947576889141525 0.0227868930812586253629221506352730 1.0230505269595397922886652239655091 GT 1 -2024489762204306386772207802946.2333551305289665187326231718544478 0.3151004461054215079332871786697969 0.0328158567032172161160451841018420 1.0333663742568224641401078106176503 GT 1 -24824315616.9871548098300106173186037710689626 6.1403041424882794111355593384009304 0.0494781775717106893891495543013773 1.0507441584236860868060179080717449 LT 1 -14554134566249076648629925577842536719588.4392579283853360666380601089725896 1.3882745368290337190157619198814773 0.0971127492625810929251782087595898 1.1021575941168085010716983592957156 GT 1 -718036450459736305321689547.3743817937948374906302011228404319 2.2276853678474625127424740492002566 0.0446726402979569547822754569848492 1.0457012122104548227538197851466742 GT 1 -2043126011075171089870612114746.8782841434848029130888484367990786 0.2482710717939800490612750541017990 0.0313561181949488103472571618830634 1.0318582456772013338687672490402290 GT 1 -38187418941904387.4416236758410839179854666359077214 0.8762204851503768515390228758080938 0.0431737728784099017159632362921152 1.0441334848721649769631635416069860 GT 1 -53426836814379085027846.0420965787211260517731545745136760 1.6363317097849988047193482364050412 0.0264356963257781470199593201597450 1.0267914022432730742235944473125416 GT 1 -11302300608890180796254113216264745712967095.9981689746938681336060761262150143 0.5833254620139571844138264576574753 0.0562113293629938532790406964257841 1.0578530037489653602055349129757502 GT 1 -3012082776.6988798888815233229502498237894506 1.8521478536780827923135931995821949 0.0954111043694383146495708568105542 1.1002746974608289634860008351185020 GT 1 -6727174736719235972269.1926888710641398809911836906749627 0.4127696406532937285871729993257453 0.0889196028246558461097714470705964 1.0931241340515260376611723281876258 GT 1 -20767591055259462482.0862556381603070190421260810229458 0.8689428854859298699839199055571430 0.0938119457635113829260711044865114 1.0985084290954335391899275633978692 GT 1 -8998275176683160689165215051581104.4859746227765796488375048811248529 2.4804804497403844298788042319669190 0.0072379847402716233135555453988288 1.0072643060374913114097059837927375 GT 1 -372.0666142729384007881196776203126447 0.5062326088100742423754583448722828 0.0611939766204314056296247586446249 1.0631463989845554048499828046478853 GT 1 -28549.9828582494259830810992907118857286 0.0864971516032131402873518804967621 0.0436770746019778467856835181980008 1.0446596348950380087609815823376372 GT 1 -2401419306805.7806921364310773108215728133840471 1.1081913382381540401374172061588414 0.0418389908745257116820302702251700 1.0427394471524552090537115390821433 GT 1 -93956330311321.7817203210357339669827735160565325 0.7595633148779383765394114218353023 0.0015038720038377022042084784119497 1.0015050039543544663062216934468073 GT 1 -331997923211117117451147990.5576136226539614718738400717595385 0.6257709956336641631565455550681352 0.0217841727206817011543022246896166 1.0220249510043828309683567819225414 GT 1 -471165619289012157274215.6985618408739840785177568091741480 1.3154678823539076897100575094852030 0.0656830497784605450483587997741424 1.0679395511862406047657671629004463 GT 1 -1478463181047804184595563011547988414.2253620076178436195282411268798952 0.6282491006625449923030623434923314 0.0622757548627847570467078862383782 1.0642993549270599108739328443930577 GT 1 -4720538325768352938100.5468129697550009153867955353443886 2.0439467746924537563401899216814136 0.0653655492260821399132178375178839 1.0675997878780415506400549760424590 GT 1 -8394331562477835.5682836858886031572069295531188071 0.4819354772186416197276069801790097 0.0817660625099066218315726682446482 1.0853030869590771344963128436359412 GT 1 -1647751156446341799463479956287264984833535.1279835686811903565952522290919028 0.1022389909856311459026438688086095 0.0069462312748334541725023555092827 1.0069704686434185441751822785753722 GT 1 -1589261633196907423493742138473.6862962308746784141397193260418826 1.8943635592318116840246720849588192 0.0808407008946256815628687238678309 1.0842958320339071839247233426159432 GT 1 -131941458.3411746667929071717057984884759242 0.8957278337497627534006658076171537 0.0009999321864886776424321975446095 1.0010004324521931223691369439769011 GT 1 -98040642728804246336210052830.2809444031183640957159277138034170 0.8169914596416857011509781781058025 0.0481176875231684347752906654968851 1.0493138731803863607975625053122862 GT 1 -274419349309167691772336942931002683.2058101660455303184183269494056983 2.9314929150605670846055177137835992 0.0381306862200245730645114992660069 1.0388766860062325928877901087039245 GT 1 -3679858505823757749222749756479003148369.7629268150914598279348293226063615 1.0081086056891524542619084960382578 0.0168744984534709205661800282590051 1.0170184950143234313514366672426383 GT 1 -82603169146896053712761846422717866052490.0928273821364180727571526380102759 1.5579837214221843226234931465650643 0.0542419989926184086439586073395355 1.0557685555445599543542741703404941 GT 1 -369828844206.9376034190727334441748193197916516 0.7183916383613081927591556210951368 0.0084325368494154983331905687976022 1.0084682918336413889384860116553164 GT 1 -8014604737824594206.2996442689569511154153323477004339 0.4277803179677267732670825416315764 0.0149124312244734490468276451674507 1.0150247394514451076309649082446686 GT 1 -9655.4409795269276097339192918060455725 3.7127973434407073315182906215997814 0.0879829130476573248636321979331570 1.0920965533899583771565214422958032 LT 1 -71714207647083822699156.1289321436179365397048737793246344 2.9006529654958261017323059957623622 0.0384151360982694302418362905706541 1.0391724558598834169848099084591775 GT 1 -2434693278152.2533712831522876233969411271954105 2.0506377680347837441747073352838493 0.0336852885879124665960166217567646 1.0342657096158042686653077208751299 GT 1 -4064495541633978331559942732004544954733364.3635649512263736042619891876079548 0.9083886322879231570411284538893514 0.0726388501891558519094552080427951 1.0754121994152501579755417199840416 GT 1 -293677449450903917508430388.5130103245663408336711168639873780 1.5743232128681671913616660284355662 0.0243666559553421681775238537313737 1.0246684352368717899916901727306378 GT 1 -23360885290950140045944386658299.6699680620830573887875108720018125 0.4003247552088389474423252839495443 0.0828223089080107087445485446487798 1.0864540511332798464050139373274605 GT 1 -109323402280079379513.2086343540908650420121309708869658 0.2817840801342958969888064351568287 0.0429599755808378277689383949740795 1.0439100656041891865101077994143895 GT 1 -25858464938976959890083436.2933805568451625514535865626444578 0.4384402078266365399933784700318132 0.0978174274236449640244671601298234 1.1029383707801384313697516126213417 GT 1 -1352925381691811.6766448986734844787637137607612808 2.0083887297696972933636957236584731 0.0558837391885044209284209545983210 1.0575059627806196385274264927924306 GT 1 -6115840210.3173757638916511506226560362091526 0.1835709167941572598684777694445592 0.0062111935092088934808160657684448 1.0062305632192776139924088958504252 GT 1 -151358102838.4259905349686045296671734842266018 0.3579822747823152941280600659791211 0.0208806426722639328275135499983465 1.0211017262856940064340960366376707 GT 1 -1185326863611353780226406.6127319180906417541152744227112624 0.9069752285240797781064737278103312 0.0023837600745584712815089785888452 1.0023866057537821590019571529511690 GT 1 -7.5674994828978491053308643131995800 0.1676091966586791710485966771230685 0.0657269442639189124842099475148803 1.0679865325843284599004405703613798 GT 1 -12028402766820115028793996.4670672224002641554210075258828225 0.7365700949487275438722867877553123 0.0867877053679959704628860697282463 1.0907869011757716953178112369991848 GT 1 -6391546979035288872769101089216146044.3297114771369498686676869334527818 0.0398132098966271280064684437774441 0.0500832339520170455781161351425337 1.0513809129122750975356777764318412 GT 1 -800174.2958694408702456253736483338878354 2.2356561153390900807729120279433090 0.0498133756941746812479846488605136 1.0510968670429537353000803516640190 GT 1 -12923327.3797098379881273108786463735303134 0.1775105092704311277274674394460816 0.0028825783928954681205767357142545 1.0028867410233212799258033086376925 GT 1 -54007493698834.2023308272967522131310706437137119 0.2308658595729381190018767446768857 0.0101306136417804548258583844588645 1.0101822775289168983439293362890312 GT 1 -3837857717477130.9661971764108304818747224166721994 0.2716334520553480730968347671104701 0.0522316673814731197061065379193050 1.0536451814664921575778374155618729 GT 1 -923799036185161307097137040528035.9650549187106616242617747533751645 0.4492537243779672278207980290875451 0.0872441328363548640085048463285386 1.0912868304597700107748400415084773 GT 1 -291339367461206701055924625932896624.3670243490071061301069441408544944 3.2907302586814745861626132513715080 0.0542519164180212770545355542530334 1.0557790418184173417376777250990900 LT 1 -6352623285831161.9848390488422157308872525944153379 0.4864057534883709319569334505501957 0.0108044131320328617020686876260080 1.0108632046590541121717191139742537 GT 1 -2269029836004212670679579627049556048095.3644197393894229287275106380196731 1.1927835092368401883582681349956673 0.0085470597674231478654847935915500 1.0085837953533627064460424717296999 GT 1 -158833461016709.6501328715714380945766865994821029 0.0350766092477656247482278125625096 0.0247887224056228533773838092261718 1.0251011364906614269289435395405631 GT 1 -5765557106628846488887182597818554080227602.2157195804033859651810826474405797 0.3093948138059302335632106430351533 0.0296385062273956326725687909878974 1.0300866029180369721337161522949962 GT 1 -164531813588767676180062308531350730082.9070895405319143158143131205791791 0.1694359612020509539577045105695861 0.0608378221053029370684764156023986 1.0627671012742355975168058534246301 GT 1 -643327091527821167609026723.7466789423948449638933886693507855 1.6952891244480050052610951679732904 0.0542947955846400202924984272568201 1.0558243817344471888956737900604655 GT 1 -62665563632.0365390985242537066967190601895443 0.6879674754903812949971538923060594 0.0649127279026882033597742036708230 1.0671154149077667351472604957994543 GT 1 -607848727388884029293.7676437007613541415056843740306317 2.1662329609813587471957573667869089 0.0821861316383479887850752923062206 1.0857606666957615776596458372991216 GT 1 -1266574448086483268.7303601892662811656434150780073842 1.2891746372729754554900924476653343 0.0367492334409613222720701479693111 1.0374414996713191760172833280763878 GT 1 -1811182277568330928984273433043620612.7371737766875234549142540760298704 1.1590250759442042002617004453801334 0.0645173443140725124968358632762571 1.0666926735938694179738350286748759 GT 1 -90.9154578985479840964047510898433840 1.1367781614218389486914156799783138 0.0165702974298856835972789661258825 1.0167091205046480691245297881479807 GT 1 -22608014348655412195744459018364869979479.8384749055996826876471145649431294 0.6594526759976281209818260037598853 0.0308076373986299429893877161726108 1.0312921701767059808180604138956469 GT 1 -95957.5163041252126989049999783640128494 0.5744124672747475327704417901231482 0.0857072721425856599154461353043256 1.0896044876250628896215346885362395 GT 1 -47241315446019461200.5800946686321574552800656894361472 1.3986422820200571616076998435696545 0.0339676013926958732527473352082489 1.0345579064010797720230848741982753 GT 1 -10334509003559608570041119995151358058.5671467792432039427592669323870234 2.9232239797290517396877952245547378 0.0748867511211374763340456484575068 1.0778391177434101368361092291690187 LT 1 -1026837751919486110361727622593908536631405.3522285454424166184040256745354901 0.6534877407690305700506191752953582 0.0889757926686669380760292716332605 1.0931858098125003827155716904367285 GT 1 -1963608465734.1071485599060839944100026270513385 0.0902154366277634911123182997707171 0.0350367102687218532664492672765129 1.0356652200960015029030256337717793 GT 1 -977638128544494799334512274464382101.0394675284810866305902588212521844 1.7357879768966049465080517515166251 0.0204502535281043698806379617604248 1.0206622552691230350764420323508138 GT 1 -40646231395338.5048499090856646044743748536424259 0.8703573911874551265695298739524605 0.0916396735947529374884468144029154 1.0961141438510565904313946623964191 GT 1 -154390972078595675468902158801132387.4687158744750837151444490612732220 3.6450762985425241958982689181606644 0.0844132033624342312115353528518435 1.0881901114559691391288711357903442 LT 1 -81732260.5278698725264921744740301864640337 1.1442212585973398236728444393238044 0.0094397100448912634775798740452213 1.0094845464928877410263232993465910 GT 1 -13440030554075226450962194451925906055.6306965315641370026252431655912822 0.4566413786508474802839138754334829 0.0978743893723800621560450816259922 1.1030015107129772579394264175918400 GT 1 -106704378272830513717451609193.7654682941257648937130018394703541 2.0840008737051486653000393375420620 0.0360360155161203115422491281402248 1.0367013455634128112815596424997329 GT 1 -2694015416257244303849935294.6640190636446533729702920075716275 0.0356845189105806824368699812067951 0.0135089326892286937632615547971521 1.0136010084912575670910056454808105 GT 1 -55279413416.5296948543068030658692786804769875 1.0272366301178841348140716696385094 0.0260123065988836388763760881963737 1.0263566105312158329216283993771392 GT 1 -36.9506261389229357260286982118472325 0.1383660995287479950430636160068484 0.0465189612634468558531950573641024 1.0476357401000071068569851251849766 GT 1 -195.0274676611850332926834322768913736 0.3043638859179782213939693500228645 0.0962519254424898219482566429248599 1.1012046360148786877572393326858546 GT 1 -67370671781195962.6100248603276354465376639223243017 2.0575038159625120826944250262931215 0.0330529741199464263187701774226161 1.0336115669528463585376616939625909 GT 1 -138602252151474202654.4175734668890735154938786858540576 1.0426993679704498787204037339813761 0.0880835369803981078708681703916489 1.0922068906693449166609722251003760 GT 1 -862987770876191781087659791.0711098424078346384196707249787185 0.0321898590910813890586600913952088 0.0294863643673272643833718782819650 1.0299298263608283579459537326528824 GT 1 -318204654885684232.5355385007448650428419114900984089 0.4928466043793016041317768371863187 0.0722828328559837618638133963411942 1.0750283694342848627526085365032435 GT 1 -17347699301945262581232890868857835521509.8606119115662064525506115276267200 1.2321361321497971909813310323177577 0.0340072249199048004529253028893146 1.0345989240107404768180046387207273 GT 1 -43091297899686102890574.0966978988137372642343874777312588 0.2456420302874908548776595285819184 0.0419039828467324686307109378765176 1.0428072793600770515801470121991441 GT 1 -5755996284663463607226198386339846549908.6631019098294200631695086100142573 0.2787692512371386119287531800519283 0.0077040028191218279850546158866578 1.0077338319500751547931654784456797 GT 1 -5551300474253263941228997145.5781570316321000236975248495459850 0.3623072015196368288897798673087190 0.0271062728216553375267941645401112 1.0274804245718082064181977142207154 GT 1 -3.3860639572908254046257416770432097 0.7902117279131413674008784087163221 0.0951732289331781410057294964865520 1.1000117667898850512227747369951040 GT 1 -41858.7515460762373939550544329402785587 0.0589313155454911476111352896342604 0.0986814258081142837139619922837498 1.1038965054085693662504100297894569 GT 1 -25252341798430767996230621551495810022970606.1032572422899406300619373191300477 0.1851508236740362524260518099635526 0.0832844013000221639257983997849968 1.0869579980143367959171463813187926 GT 1 -39259697675439386850951948658838967.7865388212901363537897374397520064 0.2578679698717440607151103297148791 0.0601070198368045167304489468122207 1.0619892610898095991644980919146240 GT 1 -696480560427397853507684064283.6550751486069515674368326531111679 1.2559157737171022546192500205230666 0.0575949399104099029025683318823253 1.0593200967342148224775569909769240 GT 1 -586108.7095365647847274501579259877241561 0.3715565420806964611607904524596925 0.0989512280549712099190962244390201 1.1041958919342412316998042667035301 GT 1 -197245825057625976368649254260655943.1228796412239992776575591843869409 0.8033011091504775876833286413864104 0.0793232454984859029285251680288774 1.0826462766430862850768852941760192 GT 1 -16.1065023927746253870713813833118924 0.2397461281744593123672838119617923 0.0075655535580168171620351493150278 1.0075943175270718395595337345171158 GT 1 -657183182655129439678887.4083205437240801963564595969012319 0.9574285617076588007251439204224478 0.0204671822729854658762926068174547 1.0206795375880930267215877522666855 GT 1 -1222166355363307645296149204428774.2060228042453762508699585304293666 0.1683332757526134571168316119283773 0.0733995977124085275547060713030002 1.0762328718451490099800604724836450 GT 1 -323997459989.8915053790328947364018256091058685 0.7590725502931455072018764924238487 0.0303913951523504563839800692911341 1.0308627890698641490533488465842952 GT 1 -1090005107605.7891066971496864602872144490400795 1.3057304621732036295037230925380665 0.0800112299927105556689130579732736 1.0833938155273669758001892485319171 GT 1 -18720967.3721255965768359095579085608877673 0.3640134300607146430690582587552580 0.0098290326103708004101966799164051 1.0098776564304924205743857585396264 GT 1 -49686606825691759.4887469226426981922952073137320193 0.9500050331154007129499996158626692 0.0143945704137892155620828751353916 1.0144991773034749879872608072920449 GT 1 -1131381745053881727.6793964346320616475443816644775622 0.8328065296422215005705616296278908 0.0302675079100131680480530396177948 1.0307350268699072307270830138636322 GT 1 -2307065305508762.4294866097993576967155777455358455 0.4534449864836986750013641004666623 0.0566567316582847066508826324239453 1.0583250452574169556003224950909012 GT 1 -773050.5719711178984637797276649591019677 0.4805870011067094769062633169895099 0.0318869373718842583677214786306907 1.0324063982905197079623740892934032 GT 1 -3847299711893479460697609048877632894.7329877871922214309763117935024084 0.3463302817164163317135514267580408 0.0457898321582506785666182825633611 1.0468713300758000376217711657528446 GT 1 -189154145694738393092182390644370524303.7767906535331267931332414369340958 1.0497549945477889110611708916671993 0.0233781623232382963392476120937722 1.0236557666822342989877758697282003 GT 1 -57998056372431265005013885295.4398588829873704636796881040910615 1.0668458989527336228575220201756546 0.0157207726782848573287187198095746 1.0158456545809258568613279508767467 GT 1 -142632741536246222426.7738788729766470875205727070737173 1.4803218396892975462819947179502712 0.0129792678401041698548936139242885 1.0130642345414041942216684716461674 GT 1 -2745851389112041834.2306150232880297408095608559075452 0.5419454306888158562112228061161755 0.0900400903789887618926008396165146 1.0943547358032333813685225343233795 GT 1 -6.9964945821852040376984678703632170 0.7012709818359654098317032980972424 0.0089304362353658783983616180167526 1.0089705515913862924977887955298666 GT 1 -32531504501588062842.4934662334609113473178407716302443 0.4951512467319368230143425010440906 0.0755599308302960494889695250286526 1.0785670553836128500211305226083548 GT 1 -125120745426166024.6784062340590628810495740201380006 0.8099581843552830904486857749039120 0.0779157530407114034828430752720148 1.0811186854575104486709681400739612 GT 1 -20770859532799737752.0697132816868695725297074485795744 1.2722724757151315425324130368892216 0.0094075189158101733571536734924372 1.0094520491211004700060556958816535 GT 1 -13411857155459.3176892708731102772497339455196337 5.4785332590566653269440977263625957 0.0208847742388970831265363602418381 1.0211059459707806005699144484369642 LT 1 -29723456019520838914292423553155.1035187927712723611985612339342155 0.6431388045515426937600004131494979 0.0047709307219800350039970732091268 1.0047823479402697506068985803352485 GT 1 -967491.2774078033323286985876758061924055 0.0226695747919162136098728331533548 0.0093528488464667458490767570372417 1.0093968613805891864453489747904238 GT 1 -8.6363109593519886533888255692641939 0.9081208019967206708381088816377499 0.0961590277737410317479330541231397 1.1011018497438555576051394679968934 GT 1 -302681340152985870199098937602767.0744799685735892423232305715546487 1.5066967245200047206315150650082064 0.0552337457924440776953016930002023 1.0568177321293764221625220800438300 GT 1 -2216834080275489032078838512009.4447100632739773527031736448977111 0.3353155578657702223929233732492319 0.0793245997059812175780313749895300 1.0826477475268515529621502594590559 GT 1 -106006509902251375795812.3644665905594297833008231489902359 2.1389142699693252963331551302022219 0.0481614704289585227204905674978539 1.0493598703716034398564501751713065 GT 1 -4162772035273303312561035670319690904530.2411555272138595142349708108674280 0.7404504580363108965165349821164113 0.0310228455225703485743072659212960 1.0315142437599797618194258387541200 GT 1 -14922067087.1065930136363648293495417488813573 1.3591916464219319458143558127376594 0.0528313591366107444727249767402435 1.0542781225970418811282479475102341 GT 1 -305987272.6671516544325871297046542847781393 0.0899061811318113131531054174895819 0.0788015501582510246533515216869922 1.0820797937967394625920864877494243 GT 1 -134006649143824669184196732.1021186193001926235508565189611330 0.2725120597695326610802801910839893 0.0498693311239797386233994482847432 1.0511557576608752704532987162750789 GT 1 -33292941840928326154460316469996172459.9229720424983462575321008697950445 0.3841888347012486870582324333090932 0.0568827674058122715057775638114400 1.0585646853118969137385186005809979 GT 1 -6053974770067018876642436.8798599053698879663187412070133773 1.4267521249217181302252964710907666 0.0995443103996418112081937894513617 1.1048543220172713092545014334757787 GT 1 -11.0503246427150836899315506388041313 0.5841169751765038644754260530445856 0.0819399115755442529426246751876039 1.0854924347037232659857965111136225 GT 1 -998927199720401159848522407750890864619549.4313406061662571436518266228822923 3.3887704047997874944158954997963521 0.0270883779369990021929766190173479 1.0274620312780865945249449494505082 GT 1 -8.6396191559408105727876602744833489 1.0387659254963738971542006170443724 0.0027478323335395649616149717637759 1.0027516145550020225695908513920008 GT 1 -11854499457220588511.5224244081349950231982589075116726 1.1556434204556956589828166731097215 0.0871920495428372912036957623235055 1.0912297705059858890737984483252838 GT 1 -229.8110130300979958737639939483195706 1.0575710299238703734385213331009145 0.0814263561709791348807602347660353 1.0849331991752335404278100232931585 GT 1 -2991454608730078859277796898900148614760.1346729003846450440562786954248822 0.8441464949465608021605471808583935 0.0679834163272121984822414112124480 1.0704046708145205490013770114717939 GT 1 -346967998.0981551789820466232142508693533687 0.3834224747591882475295362220418810 0.0014660985797993834370350626737901 1.0014671743539113894692630253509337 GT 1 -849409.5978831551597874628707651297553298 0.8362578768382029553169457008382580 0.0301442908026027891476835755918152 1.0306079719543387074896711823251082 GT 1 -594607569880858816666902.0064073352685119575961876142479760 0.8174690624093252707085170753921430 0.0624767073905329991310115596611449 1.0645136759961161204618153443088481 GT 1 -53308856565726228927460191406576964512769.6215556225416826591637257593741627 1.9657295854831080705813511594453468 0.0912725036148363649685852874759341 1.0957100137035660333975675368741866 GT 1 -37644558987808207100289446780.0161676929827390332970573832077921 0.4214336133576410850992361582970487 0.0731973518616230998906173105445993 1.0760146291358347128147530169710719 GT 1 -139842129479892446919573016521503413758.9860374736863264652677251697805924 2.3658609256582609454927412719235803 0.0412081576950295123635959250699544 1.0420812846923849171634849117828847 GT 1 -16133880011154053869109264921.4462091366040031324910647850626072 1.2221692085523525092946369028639379 0.0422409659355543060653963017064199 1.0431590628544315284605587738989096 GT 1 -124983138406660063545732856950828848841.2204329711225184751928261244692784 3.2787930826154877525099709452901565 0.0449769805320835224578044707893690 1.0460198346370209139080893576063461 LT 1 -63611658847182757412165898836.8277630526764654443802857205387889 0.2071582751450340992315835654652608 0.0816656840824070533994878449307833 1.0851937760990932808571234014705755 GT 1 -7718176173210394865794154365697515.0214703577531086269694905558278397 0.8943132251407279989552968340544721 0.0999069986971682697315804111253808 1.1052571862155728537275560965893473 GT 1 -43541.9042490530073276528387584112335613 0.9721791196757698851858554460695086 0.0128864468475323120042878153335523 1.0129701973795648493329604674772440 GT 1 -59399693446697181111304.1850925672060859439474247948173996 0.9740269320441804116424432762997433 0.0463678108904879165309436329154680 1.0474772278826217374000750373033139 GT 1 -11834899.4192597286608424132747603654208674 0.1759981666365179716103706620130585 0.0959890517062213732574560640246031 1.1009138077188520672161881114060663 GT 1 -5109625233142539223809.8489122006977821852830587707349911 0.5020054156455069625285024545149701 0.0734993263735803617099317232515422 1.0763405061912344501817148824436867 GT 1 -303449444441878273650929459261.4645075324591505086192113636566508 0.8477729804699763022825346867229720 0.0316964045301253818885030085511151 1.0322096091939407678939120348292034 GT 1 -31892905263666268.0622030350128057692297998376458184 0.4274293206588501293337062727180282 0.0504793848462445462781116422508140 1.0517980373764896686207762926826170 GT 1 -169930821922319754425.6930682828547240189183635488117969 1.0778508611105596048849420771376321 0.0610527157976817981983114935682145 1.0629959417094216438835953333657877 GT 1 -558137405937949011629386372576323813.2815770346058934393639729677407158 1.2746664357878601702528413686913147 0.0713338589991566327779656553726524 1.0740059793542560433388158580973334 GT 1 -137.9594698224149089987973991934982385 0.2009316342006077649279140377187088 0.0565331642350476345934694894315034 1.0581940650139417014578069305897783 GT 1 -27789501088667491864926.3191466827596513211326112554934307 0.4123718066231191081132780832471379 0.0329141836348036070000352923130219 1.0334680425179459214979859879628129 GT 1 -147194809049231177.0565623161375793484338392833886360 1.6655871788838028473052322737167720 0.0631795015119231450808945108016170 1.0652635855459689201684347690194669 GT 1 -19801651790980239935979755096984.2527627115649508542357311344936959 2.2520610102040992249274357389803056 0.0612637234253737890730709984670349 1.0632206948392758740608094925848881 GT 1 -149546899862961053255942574027791531497.1271968335802065039921576854286518 1.8950424715135037551251166534365232 0.0830661373648527018384433022230888 1.0867199329524995343276244164157041 GT 1 -7294822238679574252924390979608296256514500.7979862931671809162658385219654693 0.3044009345493187091353754022153072 0.0931976992480574570446416439894975 1.0978308231310483127514681698415081 GT 1 -2074784589066087189.9864835798946792056625163247647611 0.0556805620578418005938867975532202 0.0514001443065339352561152598427139 1.0527682176644673470664146153201573 GT 1 -167695253549221921809889377988047607671.7954697942279535106262623611634692 0.8174871145710263419653156749383519 0.0083927858192917573176731097621933 1.0084282035543955521429756266581542 GT 1 -5442686047.6677579545031970890379688987308499 1.5340462010726865041018692606653477 0.0789964997318277671329161134542539 1.0822914422257217917008494172663329 GT 1 -37620421312710786345250.1630789929295036213119817687593066 0.2155910728458153395148793299448115 0.0953087776491722068396570115006638 1.1001615842735914052235303401919526 GT 1 -1.1056866845578080996382026324153777 1.1269652343980577479785556288165216 0.0271063131506818395095243225995172 1.0274804660244625007576585967227105 GT 1 -10301738.0222244830611585329864076865196993 4.3343655511865146877057885224243066 0.0971266307778795414611040496696342 1.1021729688183556341744293911718420 LT 1 -262174469721058814877742612841317.3724715628810504802706037052842026 0.2767176149468077066297556524132923 0.0897905394031017368508355912314166 1.0940805294776750348379378884705177 GT 1 -1889331696.4089207729375035796768894082583951 0.8494681542843756445011789369192741 0.0342025081941514718831377383409611 1.0348011025580282957257993923515231 GT 1 -1278115419491.0516894460094594261773074462002116 2.3471726173125839604496103220819139 0.0815301042864635750223652758604773 1.0850461503528856234633993985823266 GT 1 -79141952270715790076505346234832323774251.2436811697792354396799388265518307 0.1668364183173899043347819904539333 0.0072510959312011380965661678262001 1.0072775129061134586824582390095303 GT 1 -180254381.9260673901109942707192989046234425 0.2266821888774451621447663186617555 0.0358863776292560075447262204636863 1.0365461257873698189051255902999837 GT 1 -3423152204262446575716920533514223635354358.4775364625316395237199362932741887 1.8386945577897960303594792169887022 0.0041432268928854572193836776803396 1.0041518338393429427731917992387268 GT 1 -414332557331110214232229030.1111508367364966976925529299549491 1.5779456397848257478334962454632493 0.0661528515425157149270821226027566 1.0684425067609580034705721762723766 GT 1 -54502271661989.8565473508765537451373619261270478 2.6997819715185174668865352735678924 0.0505721672215195476974811152564858 1.0518957571175915029788618923065096 GT 1 -102306992102647832960.3465890600014320471656627561580144 1.0088603918842981594421883460730436 0.0905057408741908675882815488936632 1.0948665931650370628907550639264194 GT 1 -29796190154957899718036934.2622355058582857601399108886647581 2.9771922619978304273085658135753828 0.0714138174010949241862181040398866 1.0740920833272829450875914926806867 LT 1 -118993949712156594138434181789524885347944.1358653411271942377337295122662348 0.5294257372590281236115171894188654 0.0404220570578199054970809022112658 1.0412617339600344116489676835864860 GT 1 -788716703089334.3207414953302869642180515151591698 1.8864837762160375756527236562713551 0.0427539592325777334253501828088368 1.0436948246819444897892029593919403 GT 1 -1023432816.7074868324549140494196043923168054 1.1379308552986748804316609925618802 0.0887739350779868485316758541828295 1.0929642622077840101784371628864003 GT 1 -31613619052132425.9290494449684453760854764513723618 0.8965716778626972720399336834977924 0.0141472438067808037452313676311553 1.0142482700206424528778567723326482 GT 1 -320465648.8802196357481106453587145173896733 1.0449377729091576279602516899069444 0.0420756603295075931496217322222291 1.0429864815095982061085163763078328 GT 1 -1609974839.0657523681792396192720820530760419 0.4670154051077472013776557874000908 0.0708783329413259023717602654547590 1.0735155831260284543144794491570052 GT 1 -100327428899569183604429.4180187534033322330753607387150679 0.2802510788472519094982834651194104 0.0387690761599739804348139515246980 1.0395406035191220290733537703469490 GT 1 -17749.5360628687861277695944912645450853 0.4195941821956046598930401091136688 0.0902464039512488670600873991500767 1.0945814897098250427558583875903257 GT 1 -122683344.8965417169392839452377595662154553 2.1276058314546663703150871025455670 0.0373645990002338414492712604780511 1.0380805463507960707793551503985980 GT 1 -2113416927569001611278.5107838468289814704985428478222733 1.1862248156485693395853395374172973 0.0925303373791122429466476086280345 1.0970951430207698351370087651341503 GT 1 -3100777.9450353257988491351372211604849345 0.1025599557055926217159986389366089 0.0890414618505059459593969819216819 1.0932578952172939544601224465165243 GT 1 -698660095078405191536079451788253.2588341013230099798099914650609001 2.0885676753086789260700225370300399 0.0760304412829126705807563218860835 1.0790761529945323432234872244805491 GT 1 -502704990326740323757896508819723479703188.3131281989410105331824972627897110 0.0726383633353011138951439336759612 0.0936975599071157238908529490912017 1.0983822095572838040017143366232461 GT 1 -62027222202529069455728811222636087.3042034449703794746040734064933776 0.2430123166033337931852696337905049 0.0577626709988307383077010702252539 1.0594980945229036482626844024574569 GT 1 -5725303248922916988054523.4856467397717141754484936077847032 2.5898989108700016287952707598301016 0.0829763429331418433232909704269817 1.0903736949285944936211466141646549 LT 2 -356144612904503349272040107.2425894938366882102846967857006667 0.5093983616592449794273352923284817 0.0793989705371200622926744067270645 1.0827285293475248424042778057597783 GT 1 -299341738646800943105.6080501624294794268806277670482245 0.8215566456883460703909929075381212 0.0055855668535104364182666354924742 1.0056012244636866308977160216188983 GT 1 -9674088681888400625019478621832829459.2300579371160226588945761783488438 1.0485113947566351809647937269210012 0.0153649532942354498881903164132440 1.0154842174248071603374278216707451 GT 1 -63765353984579811483098741846771.8727751485186284198783866212400920 0.5608958435966415000958784421501940 0.0705339262509812200123533623573659 1.0731449719498919865208858555145048 GT 1 -76275519849915033170381760254519644235102.7385836325823637917783500267401237 0.7204995179813090896902824144182397 0.0437052664404119340646777317389110 1.0446891147425172940124867193609879 GT 1 -109014992028649251216960148746001.1529475804423503389056437988357718 1.9542284369302846982392689778662131 0.0328622152843102051676285425199733 1.0334143068997093683454433181292552 GT 1 -11477320295064894.2748998911806798079761753185923424 0.3357662335012410366692220777012204 0.0138826982504261080612534239085396 1.0139799641638915795623679610152746 GT 1 -8881335928231407338780307879986102.8861257692736927240960610406281857 0.1725487830352077114566743248461038 0.0788659887004058768003657048280556 1.0821497470147826480031286661624760 GT 1 -4574503671173458870407549775354.8389085265986720647731880583890454 0.0469226198676423747016147447085476 0.0381556898800339449390686039327644 1.0389026812060379464673888240025104 GT 1 -589597517008229960898042122719596594078.4720832042522882824928681220840909 0.5963711055539004583292358141169724 0.0509978341449508143720955953683410 1.0523441981250251212872470746793947 GT 1 -1265492803316603916030239078.4117044161269461258721823941058771 0.1114395336829662259825779611884833 0.0104690861519623299247007857149601 1.0105242725396740462775271365167975 GT 1 -237690740575272456470844341113853221960302.3138514268032114225078445074747497 0.1767700402868836178540008697782391 0.0892550095790257041479236358559825 1.0934923436071101504027891265859209 GT 1 -318496.8579991752290945458887310500486120 1.1845895224608754185325402711770881 0.0627390374474137178623886917369191 1.0647935269260249686802189694508530 GT 1 -34.2111244822586766286026660679464087 0.8043165971829502991378897618945961 0.0709680606030954228318319702210747 1.0736121603535811512958304038207389 GT 1 -182445053914959104532153.1130667673023167355589521255853867 0.4262850947156194707512872879072830 0.0994467387380158500976620972581169 1.1047459697942857410535888026509103 GT 1 -290033464490147408719427703531983097.7130621845425584819229107740691745 1.7722504573541988065455311214268625 0.0778142939460380642418833992492811 1.0810086591627048272392989865462057 GT 1 -43.2108135773592498370498963752751958 1.2330759598025478742636417948156115 0.0943648679367797613316422437076259 1.0991187780462739677323753199407470 GT 1 -947964038170966810302891683947734973.7929656829135484632110718453459236 0.5016713506767188875252670447287586 0.0880108889836647145204801069163958 1.0921272286541551096467340000340913 GT 1 -920447170848118289239087873616946345495.4197432316732063633598292149579549 0.1312827203225516171803199330925768 0.0233102731161673922235216942854299 1.0235862547740165106339746156472283 GT 1 -70940657267571266188428715510323833837.3444973516516434261086829056041164 1.7838989800240911921718389439811023 0.0024762189870173987475293266870867 1.0024792898877825654599194411140704 GT 1 -6494908439549090360940.2207645554125558565189700793024522 0.1565926356441300202596154224461107 0.0859252074574735569964502912143458 1.0898428809606351118923583781284369 GT 1 -38279117291106306.9770215292238070658052021051766307 2.2063948194534404657908051785171944 0.0045970546239276394738418354658993 1.0046076535746465721348397533852949 GT 1 -293799779206179150.4274898908994171521723280575003188 0.8606183418800779513704400234760460 0.0224925382826977558843256044324047 1.0227493536813650751302492807551693 GT 1 -334880758374457399201569.2927223680773490652013207423629007 0.0076874701967395483440623107787988 0.0313142524962071854127828751879202 1.0318150256715659709256899387193593 GT 1 -87117.0383797083971708103905248776883402 1.0725365806538443992485360354507740 0.0897446395819595988386943162713004 1.0940301029925026661614663148806117 GT 1 -5.7251831675560761651514715477461332 0.6371436090253883317435213278597462 0.0984626300815870465456668950692778 1.1036537841547540678425882559335221 GT 1 -41338854892713933886774730525765.8547897784569041718420244588429120 2.7531512299724317101783052523851532 0.0066051136879167633088924062261392 1.0066270239846253711896594055697490 GT 1 -1153450381343128639569410.2645862523362548511590814974235668 1.0813800255898046271777735896520175 0.0841972710215964052319221920060188 1.0879542988788869129168203401270252 GT 1 -349470808159926229.7243727354469768052095781765967262 0.9954789364027482780472332399096508 0.0068672739157973158484844482824175 1.0068909621526795572900483934115090 GT 1 -136571247032820753506563402848370714222703.1588804190323295146436826251244922 0.0202238151922866853461583819062778 0.0847460444103217989270946720933820 1.0885537051231403232145347924835624 GT 1 -33004348075009894143511442701.3029145445015618549791977565244349 0.0598695627969017307949697711902736 0.0876663931471931116339872457233194 1.0917495588074859491498954928682896 GT 1 -2080943646735683709776384994270879864.2758182943964530497852252054842952 1.8659119626430136661197820938571029 0.0408271426505815226632449133727394 1.0416839728445403810903006371651585 GT 1 -4072675609147574208796712.3293258177669662344230315993448908 0.7969306353879409422527631615640017 0.0503280858897173192910226077928977 1.0516387076039510940819766334061034 GT 1 -1191331216187528708946992176239841.6484395347086185265474264536318623 0.0468767342915998557711714624536160 0.0082080956507307764345124885201494 1.0082419675443365375835140713212556 GT 1 -3.8997017683454889093485785003117437 0.0311376374616025034596402899436272 0.0076565048356568523365133112246678 1.0076859663466169503537407177230511 GT 1 -167010678.1785942470243094881516389476326837 0.6941220616009231624553976699862659 0.0718817539437399631804380116924753 1.0745961339939700965655393695198349 GT 1 -1064195137886391091027.6171097769655920720163739417878249 0.4273537574839992271452441236111643 0.0673616824077670491892516080318763 1.0697378086063295916829608458632043 GT 1 -39926875682.5059138814589863343867712108632627 0.4051871525931100682459068358204295 0.0579258528429659260430974722512736 1.0596712950225108802012511182074597 GT 1 -71397.5261783604705688750785185905161185 1.6510642324389784369805717396811599 0.0619667874395890653929245066783677 1.0639699227558354199560973077454899 GT 1 -540803535110253.3546841460126524371390904579427102 0.6018307445049794098885213446380605 0.0743904927854597824975022021027387 1.0773028317481819926125733079033399 GT 1 -1761358969048492137.4950422549546913086019034079766130 0.7380167525358200479902933457465821 0.0308994076708567003940769746780015 1.0313868620261107775048843551909825 GT 1 -117556091978.4300827463818620700412874567728558 0.0055633944617582603935529435398541 0.0090997621961742991218214159757489 1.0091414179295982899695926485894366 GT 1 -3170.8574912042918443160726335891804936 0.8068300805349695989273251361869878 0.0560438735459591799072686371863128 1.0576755901306288687186360371460300 GT 1 -575585.5663510486540853961829021581258982 0.9747063386306879162275498223738187 0.0497679337072357187432928496033338 1.0510490439109540074169050580736732 GT 1 -1399012199594673615634308973.0190904944659594739228617994502046 0.1841503392796780336234040320581255 0.0097756868158967129831545394222331 1.0098237825447987166613048951144901 GT 1 -567919832023993368183536585915.9884068917313014234333070563497303 0.8292466788552295002403482905275492 0.0636188742291381591372329938180376 1.0657326997294957423414853152205118 GT 1 -8638641332235368275.2186193807231802875140223402270043 1.5770604065353788574600519199967514 0.0765663919045008958785322002917126 1.0796563735400549942170246573312121 GT 1 -676039586761851582338389345459459.0204440177264111799614890954876352 0.2955264004345585397263714589212104 0.0418989032403070630329830809749246 1.0428019776023522998588240775702073 GT 1 -316928692980333877594927390335.6250256673617840649711186140244227 2.2428212479299721896772132186187373 0.0910240694679825479748922776402817 1.0954366642179218588913669754850036 GT 1 -9141277.6018050158907362775179066580840387 0.0917345017471921591346890619364084 0.0093149284229000529591099749426815 1.0093585836771972113885329060386651 GT 1 -3203.5892915258637740197281702465295242 0.0085801749725111622994883099043267 0.0071217018407813743513787063328148 1.0071471822071204830381067020109184 GT 1 -25971408849313412826924758047869612204923844.4432885388473937338919311380793387 0.0943893412777910925259447642303656 0.0164689063857945364363175792307952 1.0166060263866792348924830962202458 GT 1 -9.7659071931493463961673981607212379 3.2170024821762005545671836658104889 0.0776636437202196349778844388541035 1.0808453103698334603946714516513366 LT 1 -4254610.8787430311270755747630125352878401 0.4118600606696957866813252248236251 0.0944270270260659851983174411431397 1.0991874163094727208997239019508782 GT 1 -73626921619217894738.1174944860318579052195123577014902 2.8580777710946831373988196582504923 0.0222939679953948158187337931457285 1.0225462349031618308850732362879832 GT 1 -14332181327844730087702139305324436571053715.5799213440719728477698056394051159 2.2276927499891163532655511350819767 0.0776536760120084787182588419761802 1.0808345034074026033213551078989445 GT 1 -116270884163085.7200331656227133704295945761762055 0.2258244040638688202655978519118940 0.0809730601601641673153475150979171 1.0844398427581341122650856820035614 GT 1 -16109091950521180492227483167464879959659.5846297843188109209039287753352048 1.3736148313044982636780655926555204 0.0382045281906220535270429046943604 1.0389534581873183177657038059476276 GT 1 -34023909102652914147643350680263994.8022681696993128219681221078732281 3.0749730057733092925704575386885226 0.0092018858984774002899113316039172 1.0092444847785920484202732832673472 GT 1 -5188861939840549103032068998693596628748056.1902701314819245810468453137323549 0.9875006760378716465693647681127271 0.0567727768030512708762074466318898 1.0584480675833076528989938171676457 GT 1 -124645614963239.4580628091704860006500596176187753 0.6474771258803392867707808380490530 0.0123012132288572763894336212701199 1.0123774994062172215052184139589121 GT 1 -6566022139116556427.9481988091109441472078370929206888 3.2765978991198826797869120451552496 0.0937915572933857794482694658425970 1.0984859301884219090578665925582180 LT 1 -24246655409385365644.7206204494991829977520431024479014 1.4983178724549298794970733161650461 0.0211816203701393397389893915419840 1.0214091698724485379629450082136163 GT 1 -3591193515766409221196180795.1391678552613673613069771398010626 5.5397791516252927530745795099619581 0.0689687960350129605168714137657972 1.0714624856555821803947529691751578 LT 1 -11273.3359470738212334339645302657792821 2.7825758861205765395317124129012628 0.0213712538187613388295108738075977 1.0216029257565434192616604800866518 GT 1 -1982866376771748770945838909479254255458.3715469788834666993741783745408608 0.7480961811194067945345566131951230 0.0709779411559333999625535018063543 1.0736227957310754805585704765432835 GT 1 -22937669866833551.7430210183250235247141701373424879 0.4813030505199161945748201537167331 0.0446831863492086708827146479046517 1.0457122514729181382448818012260069 GT 1 -3630500815924254.0614466652417639201121829071017462 1.0410553116257304156141978198781164 0.0223044863740870746081715062023149 1.0225569931831845344515935659739409 GT 1 -453318546893671.3635425463707636633123758128302106 0.0086324300916215784316004218345592 0.0710667715595492806055022521995420 1.0737184174118462759219175147069111 GT 1 -1952711063080626288.4269214311211245331882353070185677 0.9501208140779364251818474697849745 0.0397188717288163622478873692091974 1.0405291954409399114038872749800064 GT 1 -1022282551257658895480395890879255960.0678198450195202723953956518097948 0.1599525642460105406774492958026049 0.0425395808792876826186953624893361 1.0434708965147011534388858820146820 GT 1 -845313121302836691822112370079552016.4992978127036671589510799539551854 1.6450036391298326119919474160580594 0.0353341352527060076410466797768936 1.0359734917508417492723868513903288 GT 1 -75364006887236489300412091789791380823.1084934453730727184675125268443420 0.8801480411427892737885430900218984 0.0235211854906109201249089057433774 1.0238022242316372817112130922275273 GT 1 -28300909359129447957986374.6414383054682415303098746259825185 0.8051938143516334819411910549618285 0.0673830979340698451328407947981801 1.0697607711758246784387755321420908 GT 1 -365910714319617718013527261.9566713202468947475093929815175160 0.2603317082930647698674837167175258 0.0609046886054942036247408739986526 1.0628383018424226777271406433773931 GT 1 -109047589380605165373316309524470852.7786559127461041502490910333222752 0.4485599564904702195435204778572217 0.0013623237014196777005427228064142 1.0013632525080060564748869954890703 GT 1 -251.4130601295976695085006328535045651 2.6607741772203955539550312823097966 0.0711368950226407969558289308880578 1.0765166788846288962563153232015795 LT 2 -84465675787795730043.5794426580709773687557539248617408 1.0874298034348136890672900355537397 0.0641880065588747114834557505010028 1.0663406843881590841649376154949376 GT 1 -237413255621106270960137766082.4557598913213903771681436456907151 0.9714365410793772328541654431264471 0.0922193963761652094500114690114904 1.0967525555420400265289739318931892 GT 1 -35282.2965671864913599849864101379300779 1.7856261065449294398241009497556246 0.0367932211245860970227008504916956 1.0374871665833533047196511060668520 GT 1 -1615762250002864952.6145871155327069352774301448024372 2.2567945656915428927549206962731072 0.0542980273537398033498164277518604 1.0558277990516055248286881882105216 GT 1 -73215704481.4977428917582148346954542537893252 0.1505491647251353727717782608181761 0.0809513050501717011908785144008944 1.0844161711424707323585040976057196 GT 1 -16876406508637629510.3525877001786138345313025221088516 1.2769396109133274752103701264925160 0.0733013856371402048764121420753054 1.0761268856287015842402538638289563 GT 1 -211167457172533681443.8229352486170677218482307389917063 0.7276051990659781521564853057614005 0.0570098824293841705308699687369891 1.0586994761802462155829792979821608 GT 1 -88743658959378852367075657.4041466866498673531265476338185236 2.3695158036676665743191547786542227 0.0337808620946670534084343698196324 1.0343646196627007426100775157931098 GT 1 -2190589405.9694814179995839046205806318623657 0.3033615679107865931957705630608719 0.0195162879636309882094983110289365 1.0197092453793102411679516155550388 GT 1 -28671894004697.4204476096160874840520969151521424 0.5746398271543506355659809202461631 0.0804031698870303173421897909139356 1.0838199331271402284268549267955089 GT 1 -17544212002107475.5976877955731517053734395904846355 0.6982247982179020950360916354206623 0.0438450475696723013580830990666280 1.0448352949328075555855329227111409 GT 1 -127612454358537064381947971327704868816422.4063243612320250312748518493622579 3.3039702211948275938881037345145096 0.0840843395755921542780441125897791 1.0878309923195372974925777310611304 LT 1 -2541371577.9421887284693176254212820174243072 0.6844095504761871703219385429098293 0.0832456058627266492265976839274546 1.0869156788736332498393727012728561 GT 1 -1333698538859004628789428410983.7069304744830732629576841434625137 0.0268004591748305299187671053128239 0.0383907581145386669368793610207403 1.0391471043015995060828519481338383 GT 1 -266650558405084025074307307286704131.1828371993571585677551875267227338 0.6632290672973832959645455376433058 0.0307611433384903943305440815480871 1.0312441993643434510854122027215145 GT 1 -12826660160023697978123655733.7583089362992060890620591176725756 3.8826086212784321188129385548848634 0.0855810851531558500877769449227883 1.0894664811874339535210506053852331 LT 1 -12248519893288135100.9316847795892454657349545766174143 0.7682001592701152102104573453384188 0.0424756497513333281598087556674134 1.0434041271815965787101543111351240 GT 1 -47252777990813458041133161801735073392.7103293747053958534478307052229225 2.2963440998746084124062885184063945 0.0822008606312824883194655291305426 1.0857767147329816093478039747489729 GT 1 -2569026927062897922821213659706715.5697111251951460035913011099547472 0.8200728375479328056658222145509445 0.0818422036544165866375438666313243 1.0853860116892974788144514338244563 GT 1 -8250.1859161239654128381378677794927106 0.3760183703061791454517754338588917 0.0137299121950424955129306448727109 1.0138250391664003776812464486961210 GT 1 -592293534134343213.3243652643815724020758893101242118 0.5015520005237809588885078680826489 0.0205223563871881313879564749360458 1.0207358661430508382206911396547938 GT 1 -1034083540189731488166108004082.0665464967561464097679227362299712 0.8267154806617617601707233080362636 0.0435127661719991989467974473080419 1.0444878369467782027986109034067527 GT 1 -211072545027010187814184097865904675358.5231424617239155718656563751406331 1.6819617391901154931898476125514617 0.0796657749628419921134098809082191 1.0830183868283219121824542861140383 GT 1 -899708650317620352307251867.9586675635729679856780869141305087 0.4276444514065380116931420687464520 0.0107093242000099216331630948816201 1.0107670817453999839075506317369190 GT 1 -67300736803376280359585314999839688294388.6165766797104498404337165920222047 0.6807027648657204748057785069123681 0.0025945576076957593771009961384707 1.0025979293055912478324261679697416 GT 1 -687950313388130403691278552986584706336.5820633433129339802487787677884442 0.3437428125015519939899768236584673 0.0169928067288672262536629100100330 1.0171388411901954192369314906404419 GT 1 -637025899211.0793747068972267789640398807976501 0.5354453530852213604082269952556892 0.0991875140220042449085587748645703 1.1044581607047677781546212937552315 GT 1 -6177285346718088762552.6446933096304482749252357049664005 2.8249535128011659075991754786122425 0.0497991131124343709533849967195750 1.0510818568603919465486824370302748 GT 1 -9456166430.9653991917120234905072913126830905 0.6957680610144095233184189019163146 0.0225024205616151037205608969670681 1.0227594634035493106938452714471347 GT 1 -6137.9863234946770465768446733198787015 0.0203292285970551229873164755281705 0.0820860933033870527742305371366158 1.0856516763144870015215782270013078 GT 1 -8978512565387.7404858906221371259283698037582361 1.4890617008102068518506433775752124 0.0322026996362089766503348308719107 1.0327326140835246216667452550571481 GT 1 -3694781626422073914568827658239410778603.4638139464134096358828521857902905 3.8661332033113031860638608478979739 0.0274681201983217122730988802022410 1.0278524227397575535517301904915001 LT 1 -33164058.2853358170488198886965745426991148 0.2717260252080530942616817240782426 0.0882189654607204955785051929670410 1.0923554114418443152450299607543066 GT 1 -1422749030572474261674409694667527484926643.4922963392330156816397574490741374 1.4846592341376626480120580697908189 0.0480620749317580189430388922330096 1.0492554510769445520030432240802330 GT 1 -24265478.0751167403021120007178035505997131 0.1510828077569374752911076960263553 0.0693159343898608426166715812396652 1.0718354088029012625434833862931810 GT 1 -831759.7689936125468244830364171802711926 1.2002119980805413678625583042352415 0.0177425025052501120849354826007739 1.0179017875925514454021443005570277 GT 1 -470010707510619260.0790756606207919419254677040848435 0.6496243888874777108647981597001171 0.0747146215617738850826395100512795 1.0776530718208516466104368954468949 GT 1 -339945646890882.8574218706922776232370584752731208 2.4707657329116819544885008265737884 0.0437136907128111885799954422448811 1.0446979240658459095740353234287061 GT 1 -86799374581041584981592828400498820098.4840064427645287077087891440173686 0.4984670926868966274960139169120454 0.0326320972504796544040184763399408 1.0331763980257194681673301557499257 GT 1 -44952377471.9686431343441668041949049738402283 0.5744260255065086812436075805583310 0.0432822948901624930598339358223201 1.0442469100306272531648199834611150 GT 1 -777069928219020.1218048025034799355797386692390351 0.4619857182257975958705743222403821 0.0020869505771445904651238988562523 1.0020891312930594480735948999801036 GT 1 -3959798962485555826875.9313129842779865313759756070735914 0.2987343856851958843689075823401829 0.0965425550138890484635439408728136 1.1015262702404957660294457428387985 GT 1 -560.3721220946274971641151024137780838 1.1514959765126008508657882032525016 0.0076414573292178573320277535564266 1.0076708028549165066347920047161027 GT 1 -241127218314322.3652377983274355321904183523513449 1.0851836255561855050074130907159314 0.0874079145061392368274950928890715 1.0914662830074176518022576419214030 GT 1 -822106570266991618768.5357501767578564571843148584380015 0.1535522724467605268135040410022505 0.0731949840182723379828470033960636 1.0760120742873664020242005840741120 GT 1 -67354393.2557102101002678656313783612562544 1.0587225574857792026014446037746338 0.0330243580539269080349372171589220 1.0335819731469536199654422093607122 GT 1 -29895075931578625174.0502408029511084306486443560944094 2.3358603999515762920184558662497787 0.0333033917961910067420775192363154 1.0338705781514255652830111131908351 GT 1 -5374403598661977233751782.6326816372111384762204190434811083 0.8444214201229457765539297144912854 0.0574375987882417088608802577992223 1.0591531536693992706147185516750943 GT 1 -9284897580179838713682823175430796220652.9801666509406384421616539722752837 0.2098972733895273520376129251389585 0.0268749694581453560494095526734160 1.0272427050085392320066907308097196 GT 1 -2197045285222886644450.8094008508511516175840557724354995 1.4573798528162261989357651663523361 0.0208520676979154359618457151959776 1.0210725423489537602900009220283838 GT 1 -420278016882099821.4677583690380497547936721466158155 0.3408422904280598304810532659033919 0.0665865081960892089111563291300336 1.0689069910991588203306228692006116 GT 1 -804713696.7215013217865549119529670580520099 0.3124937524576274962541582575470161 0.0132929680718589600281857754965891 1.0133821104309813208790243266311928 GT 1 -3441214790972693591169676781272201672180.9961303651175117893478425354281031 0.2307337185298260926169877946618966 0.0729346585631528992566669475631947 1.0757312289134827525639134547623540 GT 1 -184024933215458680279041453327010427.1667676116579135083258199060314274 1.6025383776040196725235955927152009 0.0235058061049424068625362315238093 1.0237864745150742290267328952226640 GT 1 -4714253053903163962765661700004419541111036.6212703120312352306332351173659984 0.1336435397967598412442176207611806 0.0492069168137751156630785761524293 1.0504588182530757029763703218732109 GT 1 -12661025990273621081753469534210900135.7195873644463682543846488338558380 1.1062249348528865235960144408704037 0.0156521423144461828272229306136648 1.0157759304931195320064073227933868 GT 1 -6805994138515052222810600116.9963593299688043199608750121346292 0.0715136836180403636052683665214950 0.0788651063823577796687654109107796 1.0821487891545639338007439438341890 GT 1 -1347067606293579580587129135386.9051235581476544365310612739972458 0.3179547868149790154054585848964736 0.0641273817186250048440156330243375 1.0662759033455718767070480181043326 GT 1 -1332179713694193865.4585730171102701737854240990307499 0.6135980454191947116766863160460395 0.0934312176794272404434916877495561 1.0980883748642158528971741374867041 GT 1 -163892420359137406077566209368.7731103406049845861246883889387942 0.5839861011920991447054163523153404 0.0816275416705999957468539531314333 1.0851522426193377240987355574768958 GT 1 -11693205457281687851295271246886375624001426.9809965369747922941265676633067419 0.0260267273408433758940206339154938 0.0976899591414917468227801775887125 1.1027970919725487460029026930672426 GT 1 -771915853186878714923760028329649515250.1280056821264769763368296320032328 0.1672704983306646874953066846163159 0.0281483479051357885603359185247504 1.0285521074710940052507545290481298 GT 1 -7917759823260313983716225332.6149943961978306377309964577353186 0.2260321470698195474491553570554879 0.0594649804694485723059802166710723 1.0613063959203807800874848088055843 GT 1 -666106.4362158712085052995174026353726068 1.9237268832555618128968893093478836 0.0676596138558305594426623347228513 1.0700573097888375165652759979364901 GT 1 -169.9088050091988360901947541698196038 2.0918600471261572763541333523932185 0.0643798402796578971095033492539495 1.0665456971332174783851214011128671 GT 1 -2654487329007652970560088962028702337419707.3780926109628369725515236034414507 0.6270847728729542101518145248038344 0.0937689530150327965736850052657699 1.0984609867037067295393270636845751 GT 1 -54407.6925807383399363189358100094403495 0.4127383938494335823053081259020245 0.0490183070840713512772972699013159 1.0502604669733214177323097090242307 GT 1 -17163.8634986384221682703860800503200144 0.9241729809580002400658612642445977 0.0328519091287166601978963807040202 1.0334036506097330844423617410347053 GT 1 -2739502503706624568208.9160352351158167219227001900277372 1.0084429211600751900550314049233341 0.0429212041096684074000686238997629 1.0438695545651007626506757650912530 GT 1 -88.1566837059348665756688779354568586 0.7356126408915807939883709669903747 0.0066266859325067149836337320508993 1.0066487398995334898156803158691463 GT 1 -283607581178175018524971256229.3702212042692339916336402438957889 0.5077154257756962484400781854425918 0.0342617407875972624853226551612822 1.0348624346803388793476582456084796 GT 1 -719985206082679138410652587316746720.2930649187753849857724752376358552 1.5874081285637326129301301738109702 0.0632940742284302872221854587819983 1.0653858925656793487080623880583342 GT 1 -3919858998.6621305948851182312169962096046536 1.0502418394511556534289955541666983 0.0212606400230346759494178928192450 1.0214899027686890613989749918501472 GT 1 -12228944322993.3174158502345544341222376714589082 0.5224602567198654236649524347671230 0.0751681066115075856287486093729678 1.0781432948631647351798509481353024 GT 1 -64288352942856226237978.1598460540478101811804999082142986 2.1898925773249708646439754838218944 0.0686831039977146390283305364293276 1.0711556772350249371080689293072044 GT 1 -1277449212241253823260467276967545437471.7135552893096157846709475828452121 1.9220754225697070943963586482015724 0.0203408320010629430588994069008799 1.0205505555658938364049035406152911 GT 1 -1037374284403052306.1174791459038080577649653535252304 0.2340744300635481467371354234438177 0.0516525021017641426213478916340785 1.0530342849290555060711407528845203 GT 1 -788947838535670867818165711.2123245183484118086969974967024441 2.1023663328667899332055561978353764 0.0267648035735759338173630614458854 1.0271295030604510657516916287304529 GT 1 -22552591.6607042853822830152135512277645535 0.4221931384261725969558248553184680 0.0709766120703666763219160255627977 1.0736213651034565149575711189852355 GT 1 -78883248737586700520228946421687.4773550778134153661802674629460792 0.9672400780915027013225414123583006 0.0596749589841721709140292675225395 1.0615296751743779649850519417488744 GT 1 -61158926867650474062281284332.3914373691511370883555604911815565 0.3449775695140092268869759204194092 0.0034376721774312912872412122117273 1.0034435945491079678717395459795056 GT 1 -2143256858.2596629425240979303486629699775131 0.0685282626368942192571017974447891 0.0229712001017925455587323176210299 1.0232391494841489021027527536840132 GT 1 -12579766743716.9193806439056455031025311924823101 2.3601943928169392111642397414053070 0.0862878889191149310141612694678935 1.0902397340792151360112286182922772 GT 1 -28844900924408986257777628.6115298070665643164638540547179799 0.5529617149834021062666539511303181 0.0705949115096147315952301939428714 1.0732105873189334022767506762624025 GT 1 -603665.8241659289595790122893575662979303 2.0573502018485560199646225461116954 0.0033026887074923200371615213383764 1.0033081546219690802536837425686237 GT 1 -83974839619345985990678046356414001507287.1083397043264099409460583080126034 1.9726833084280120365332492435644266 0.0062562710238678317893645682429618 1.0062759234977759758270671189982769 GT 1 -49312867456665317475259889340856.5293218419213649450799646959508691 0.0761744904258189854181364758919623 0.0614816917759463558694389785810519 1.0634529151820222584305558113863091 GT 1 -13305115485573288423061395946531644510.7660570834454628704165854746272527 2.1845502916539345121797346927042303 0.0324348016790882891241082000758591 1.0329724679033126821251656100049249 GT 1 -71460555245951982765.9866290033000664889391928601901247 0.0189472398463608876333204544288990 0.0959273614087071318743984733526246 1.1008455693940471190324048379058283 GT 1 -18902119.5613327977120869750244372132519221 2.6688804085292759618408224559410690 0.0352149936637777120047972397957059 1.0358499938262609425246654328870749 GT 1 -712464802186742542622980270782.3374275955513456490592358840083900 0.2057352656178433706174773146602830 0.0046899246597796118903091827007992 1.0047009568634208923549402554012409 GT 1 -985242672158518297273452101663201.9136059796630480403201074783408149 1.9784509071991374730843522631869189 0.0482466505989025365299068554327627 1.0494493645230986224196553640553040 GT 1 -62081041336650233705017819363139651802763.0189851844200509810263539615828130 0.6668177563027007534893733498661628 0.0999256782579419031675342173910813 1.1052779393539452449731491243771478 GT 1 -32058193374111507913621203699316452871065.0332571011144264477672206936484788 2.3989767315738012971253267923659428 0.0773529248969462625594669034725355 1.0805084847692066716233478679141553 GT 1 -1995386325582352936506339182583186766932.0527625497520766449716104021632196 0.2242966451755632915133960201518983 0.0979988574275896294358807892153028 1.1031394922103263467785967769660607 GT 1 -11992201253005939917220214145875449736516650.5366969830705138157835552770968334 0.9891320857852426336393924090069660 0.0262088307497079985942572496669148 1.0265584036148759780793895293124193 GT 1 -5880088397298919849.4426174729371698069719878204143704 3.5480585953059077786992645573704365 0.0720424645578331948146679004255094 1.0747693064647246190518646717285607 LT 1 -6605301437144986974427894884204362398497.9664417954877729815741354877386507 0.1280317336600643360983989424294430 0.0434081263217757999132242761729772 1.0443784427770157677441084619548942 GT 1 -574692233299163.1271715460518399570736529294952347 0.1007497540728596324257342439749440 0.0931570469639714208196105786568575 1.0977859937643263055688855779668300 GT 1 -74892489137677.0201103568768536982574731559047759 0.2596133956932878302607781457273154 0.0469311789888418206459880900057889 1.0480681628134344647451843614697332 GT 1 -9158033626450381159741395.8250671701720067755030801508172945 3.1104237514304589021960055904459577 0.0406883864632637341244116677171783 1.0415393209699326674184012573118214 GT 1 -494220411063964286556034073723451971917.9980907914428940297986472127959805 0.0346882339697870911069933418004160 0.0780450995503113239556484550007488 1.0812589715354863885380441213600349 GT 1 -10057615700.3985928600318807072614571191140307 0.2446114885666265690790053803510160 0.0735792650645289405995068937607782 1.0764267901432993319107573446423335 GT 1 -314.3710625810532890199919330310599557 0.6386088457345615990250207115545694 0.0298160635890335319314384852303042 1.0302696002953430079648631807976364 GT 1 -1756268013265.7417668107925296746809755551610136 0.5187709576114119526824414363003978 0.0816028915482329922333028317405355 1.0851254018845887470507108503285549 GT 1 -7093.3244620838069494966251992271254728 0.8866417414630288692328433841156927 0.0102480899212964565326418584135768 1.0103009631379930837099511011121668 GT 1 -43998304828592444310187138631.6394171352461972666828625297015571 0.4085446237917698055515482083194120 0.0082535851533201897101542936747949 1.0082878345711110220785728273884107 GT 1 -1214344.7677291523322371406234054849167715 0.5206675356527472782250976923726841 0.0109340807427562361353312987326257 1.0109942971465817593376233012131384 GT 1 -995131604771005303648.3019040084368723562322839710634609 0.4289082338654595890147109370185427 0.0052555073473435901904440177373571 1.0052693661039395685510651484789895 GT 1 -5.6505401428110715822999876447764016 2.7956264277542120664990689916698311 0.0501500013313872864877853875026457 1.0514512029927605206397933609505776 GT 1 -54505798276.7008208351270867148336978652191439 0.0695917043925128673805089966186654 0.0536616296128356927641525634927486 1.0551550884857373623230034398956928 GT 1 -96940654464930228496121894.5278333290829735621702282132970436 0.9838020698480074889107710070770451 0.0771224152459149423743464835109192 1.0802586808438038515337715625609867 GT 1 -4978935964612817571585301895254.6301800048238183543063972169821748 0.1741971616264452751638267619470156 0.0051895260616709596933204259238146 1.0052030384208096310624376260923984 GT 1 -9453355.8148399468826530620382613531390360 0.3049253971206149378311932405959292 0.0033263256936107337582775936609877 1.0033318702135877873633914525469563 GT 1 -2243642575035.1620480340488300893138793877885956 2.7504059762102497699646475519350807 0.0899091354744587324033058316834456 1.0942108333290648574103060703241679 LT 1 -82290683000645.9845542729391996778745057288254166 0.0257120501079075820717513967008092 0.0543032841728591375914611983157982 1.0558333577094933450830175007416563 GT 1 -3091579958.7845123264525821214629521345420629 5.8492367473671134269198726464864578 0.0452104685524475281166041355942149 1.0462643487087452633800902131960829 LT 1 -73231235491573401576.6389652138521185095477626075853217 2.1661869765097382798507685495092461 0.0571618776805079492163544471653517 1.0588606735239255780472503721713418 GT 1 -1576815989964641241.8111478245604182841309116081874575 0.7862082313287276533095975098103872 0.0756119167432896024034594362525077 1.0786232919926660245463591234048444 GT 1 -855299645386086350558581282368.7697944822474597187954623164536093 2.6839770015428182050788097209682597 0.0923955511393137711411615386677722 1.0969466243027807294411146135834758 LT 1 -212418293.5320908550919071769335948920752961 0.8009047298735578373448168042357011 0.0690441207009371254685427341615416 1.0715433934842586408597950889651832 GT 1 -544740088116350394464126239711791376.2094080927060303259891730703571199 1.6226162342141344858389289856211084 0.0080700786526464254796253905544767 1.0081028179957262319301804143188960 GT 1 -22924325.2762262334374022692456423161456766 0.4491294230615136259294068621248395 0.0420630428713924920374510710250131 1.0429733099317429991768895623185255 GT 1 -31446280058993589095069356758.0368185105177906900762285664317771 1.5999662088273882165907900499230390 0.0394360612601244834856715470676126 1.0402347308059805962118810157889258 GT 1 -644335113571141821198796685803174.8313122816470690677660450795796517 0.5835765158846739120237734101524606 0.0229259820190218035771202974866564 1.0231928693372036265705652919268884 GT 1 -1618822899617303102690222201.9985544802681602098654922898744682 0.4533283902368282430784250580646590 0.0196889471421924984072029516004711 1.0198853568032073607185274840976934 GT 1 -81236100861.6946432791921046331657412733333476 1.1732726926899843537813084529669817 0.0872996466907630326657256723195985 1.0913476523560200357814610714033533 GT 1 -6916408524491002948392.5543299781282396354722155255923871 0.4411123277401348364567744574566590 0.0398768124579591806468459601805104 1.0406936823963152841594430691366626 GT 1 -375965.1555846540254340664623913815919876 1.3986808259565029482910738044355922 0.0834589401805965869432005348827366 1.0871484120300619592614870343904749 GT 1 -6716931117987424258171.3623580457303276354466339667730197 0.2917560577965216109948533342446185 0.0435728594326248338630055909159625 1.0445506659593568729594625071001258 GT 1 -7089014366859128707983857013235506.4328436461013546385404492808839266 1.7778595780794528952200958411786537 0.0275425676576324653581117496994585 1.0279289758178462387035887230096713 GT 1 -142212094745954707167311713874503.6983433323452705104799713964211124 0.5612309921256894207216960560912996 0.0156812861259217122842793124865876 1.0158055381594442259974066186789732 GT 1 -185923907264768077667047931698311631745.6644776613568777146426599375542017 0.0153720324829437248502824886143037 0.0309938804905052131495149352431210 1.0314843518280357840549265716763321 GT 1 -30593523788917713603077911496141902139.1081542920851142749540448143562594 0.2430376411286225029698942920767668 0.0358498212153178802097074433058582 1.0365082093841052840882629939101908 GT 1 -467851640521739448563739762874.7063569585746443833333525636237125 1.3992922899840703800789418045800211 0.0576038111690792931424656782203940 1.0593295102027962303242167343405068 GT 1 -12.4980457373109113686218128219118179 0.0271945441849763874336822578994012 0.0260074080479321002922536799494252 1.0263515811672244404075563173998733 GT 1 -8624029785.8947042735866628018702633707288292 2.2594633457643583888374772727350943 0.0172228628490038110897638089972026 1.0173729015778244842789999849027322 GT 1 -26850917080611.4097812606518510725419490613225578 1.1922998009689348990777862615091766 0.0112802008459296315753793482748460 1.0113443048379962632807913206077006 GT 1 -7767096298348313184.5695668635871958144438110206624002 2.4007060774211487959710882963818460 0.0193695535218702593571570804181543 1.0195596014216676126209309629742032 GT 1 -137602156073296208058399.5724695993574816320811545881822901 0.0319753020940544612566778517978591 0.0770023274764584502959737940550582 1.0801285661254311433711978165492720 GT 1 -281657924139812207424587440625.6402991789021813608225352409200701 0.9431060038789842483764201095493340 0.0940467266733271348590322100226876 1.0987675489637995772103462556980341 GT 1 -40816178605.5433954767612011437776116848196558 2.6443811271328019351335176270484330 0.0759618287775322426781348243672441 1.0821225472391005834654638887987384 LT 2 -89.3078588012164034232077579072747862 0.2358850608523453407507212336866335 0.0085079728847563133440513248187559 1.0085443722898732790294483387248300 GT 1 -2178839008034948790937901030512246.8180582779519016311286335194049759 0.1923391710889439628397349539455913 0.0965084683204812424816836408282896 1.1014885417889987573556134113213567 GT 1 -364032122652060091108636301345591677.6077577601896652245358631354863425 0.0500145024977350728509235441227784 0.0660060268480816188448553718498463 1.0682852935022521490895381882798106 GT 1 -4289803.0637222200689312904577927159194329 0.1651220708206774557278658532511488 0.0877966155048093827297698878192006 1.0918923044557845695508847829809154 GT 1 -89892505228862145890354734814514245201.9429903671354601747195814652357674 0.3481639443649110074729589309140408 0.0898187123083811438649711364946064 1.0941114820688240985361319334800568 GT 1 -19850937.6548194583648780531801211222121989 0.0011801233484993678030369647767057 0.0960707595912848636040414429021407 1.1010041955376855640148601653255320 GT 1 -1519539280268488228688.1903026024430666957217968488719847 0.0471869719349708645055096839868412 0.0775597013539429271509103323850773 1.0807326220765279703127515166563239 GT 1 -1057758614073151084362288081056646863736.4109226589752528883580069744810316 0.3661339500061455984147039987981862 0.0734328739567196743524782290013290 1.0762687846741901002982983194767690 GT 1 -443492361667751146233970784114377161.4931465523847593741731158879623012 3.6394716065563894099880398471487181 0.0918052396554663440923440516101893 1.0962964296098310129784171890644342 LT 1 -70707372625635802.2578585689794041140305702916711166 0.6621973520275060122688206817952350 0.0275549520824287673719230070844055 1.0279417110834157640218030395300173 GT 1 -212392587332660855.0061541353274841485032133710869266 0.2728590015874038549795082629063168 0.0045083616355691907938957335723554 1.0045185549461792763717516851484152 GT 1 -1412538387033937813482577105190499233.1728093945556680767270054603199332 3.7370801825119884381564706451509569 0.0774159041861937315630936304719218 1.0805767464485718982125298837765278 LT 1 -7899016305034267910060350471838508649.0877330849034412037344152741860477 0.4269034024613329797565901877300580 0.0600518675728738205146335707817059 1.0619305835094788618668360331605350 GT 1 -239396.7030933059525729106359688781821303 0.1053192984702456280786656155086752 0.0765001542281567052092863692241083 1.0795846463468159610429683063772242 GT 1 -11957568376707711676494.6224703122087827056279551674241438 0.3857026302516742766692056685258460 0.0408926915938286737017749200426942 1.0417523142103563013574550910291817 GT 1 -205799940080.1297693822582874000841406569278850 0.4932753054582199004153756026684635 0.0912020686059653075933815184990362 1.0956325072127849049682582037662794 GT 1 -128.3038026989618244504141970562041486 1.0263883306984162501389845496299259 0.0645291547633574043389972752697238 1.0667052986529948585212509314698946 GT 1 -495305585762.4044513118418384474613053868572202 0.9588106408278540498682414157408560 0.0279574483992631643562537602176384 1.0283556981128857372446903635717720 GT 1 -3601210.7914785809680529498198137913563675 1.4440588138029460926188887593055304 0.0160713788968656757572976749941407 1.0162019240903375638068452172754562 GT 1 -42095910767845233746.9135713466504308468734650005603533 0.3220169166304421582340799666513257 0.0809906775390355470798922421701268 1.0844590125419226718512810014722155 GT 1 -1700021590596695125023287591266199.4431283653016366003982076334880394 0.8948091480761282888942428415443198 0.0769398533431093766942546233828856 1.0800608822937289929220128250639722 GT 1 -12065200380971537261478255854669181949.2077274579544381281739514573126815 2.8375059631698006011129934330690617 0.0011461877125579381709755874201769 1.0011468450880593042018655664864362 GT 1 -30253.7747530608694628744455508065341153 0.8647732470515732189982957575841820 0.0425963361911196744564664784524064 1.0435301751991305781198507544731815 GT 1 -251082.0942535756037922162748503507276691 0.8726181029859477492524704996293757 0.0058835636081868728210981680179097 1.0059009399586503715506703949448665 GT 1 -1515652414403844751571550420.3230804189698064395907407584873527 1.5303366385313606893682789736030254 0.0236726968367914029531224201794495 1.0239573971851766463263256028607886 GT 1 -400532180900079433981617770142527.3503662677315188941308818594927585 0.3556822845854957773493100147907557 0.0870817721341113782437869929054137 1.0911089666196535851164236519209974 GT 1 -275627239451157661060917839.7229197754814015974484351020611963 1.4900147863858089948672756265927505 0.0685253492056764143670570335220341 1.0709863026287393898690777470452278 GT 1 -455756936913421468340166.1241702642819285378866643460088205 2.2244926807362563459514035944651169 0.0640679449994074961715504573366026 1.0662123959507182558990842994973588 GT 1 -142587353826645117000671039076290329846.5402556706913782913081925208394847 1.3406151881666138228084387483487679 0.0129936800636248833561344542612089 1.0130788363914707015253296735097007 GT 1 -5349599860618206650831301.1099562259182404575609143236292874 0.5529877808814945678755532035509168 0.0320951169472028949940040529571903 1.0326214578426126381738367616860123 GT 1 -316.8902588308068611623956630050690093 0.1497170277067590032211905712491106 0.0276757431883666939003982006914807 1.0280659326101536852723678838089768 GT 1 -1836834139662285212076996331246473.1075832567333529432261298470516016 0.7955810143296378735962926248569036 0.0877974885591440202513827168991297 1.0918932615392237125173774162969922 GT 1 -4499885171902242889386898717636319069136.0649216781464140977008478500533107 2.9420647504423549653038937602293677 0.0361070277729780515030196072343846 1.0367750151960509193069075200323466 GT 1 -101251465385766368521.9687846192869230458184064873861132 0.0122400176031975135913474387369762 0.0743457480202722024888107396440742 1.0772544920505305164645321588751341 GT 1 -9041447713103227964377022926818461797525.6589458307496028986712233162904648 1.0633978338972615312976764284704776 0.0945279731826365593185450716977879 1.0992988946622323141124087846959724 GT 1 -16527434119663018068865022520225707556.7161849415812136344401556365360923 1.3646008120508143981468548620636978 0.0690430305263394078393975721522845 1.0715422224578076054739372047805410 GT 1 -2694287.6443833846379680774382317691718457 0.3895188104580877323243094460551250 0.0750133430839066232292687071682122 1.0779759665293272584888073609851127 GT 1 -1219489665210473.8382128451971209549032445350651555 0.7908696385288318128743666441571140 0.0471579644354435600756522888465375 1.0483061439833193256421398198806334 GT 1 -55762364744367412439.2238336424826112394919753356065246 0.2382716261925475055820033900863861 0.0646035956023877920748059977346074 1.0667848776173326281108742266494831 GT 1 -9241962890667.1841598256467733579913154336060434 0.0201740083537174526963318139287005 0.0643636780654624064488999358142688 1.0665284229494224283238793339355934 GT 1 -6295273840486254.5279533535563536403504313332508461 1.4114140649303375212295016923732122 0.0483572152561422498481850117685581 1.0495655407150963412640810034927799 GT 1 -1074037480556796.0632228406901188742705085455469373 0.9705484734171531185415221804005582 0.0254067516796981087297339364983648 1.0257350762385272900510928539868049 GT 1 -148102153086511848046601925169573.0732700498100140096665085309458368 0.9819261486439233166570858679054125 0.0898396351479726060132059723790808 1.0941344698849443824220394724583064 GT 1 -1160382894827.3483757587902066778721987510044027 1.1790123207123989371693317301223226 0.0762410467650124079968041143398143 1.0793041144960727111005082161287459 GT 1 -47458033512637813549398509526748374.6424373201272273558361608502261475 0.2646795642111522430092365194971356 0.0683017887169451592276872002625003 1.0707463243697657289424389481148622 GT 1 -1643269138349949532.0335880418151683961561456615476602 4.5011931703179443081503262910175062 0.0666980584914126737844470952561812 1.0690265061505325573540750635227044 LT 1 -2121416548688.5312228918696559703082134547177358 0.5564617162924413374687015640435211 0.0433390217106323173215695674488461 1.0443062049532461953656634771937592 GT 1 -56061411.6542246757439670481421605932382716 0.4033634138054114627067023535822752 0.0218717887170470273226480606179445 1.0221145221582257861292261520170981 GT 1 -284751879404217086889869076659019460472196.9086677382744888816273838564673414 0.0759676010080819191901766266630350 0.0896909043258680323345733318849242 1.0939710715685644957658542409321517 GT 1 -136556154114103464170757848516.6989657041532418362769661272220076 0.1046703539476312323724170103643053 0.0831093474507277886493589340448064 1.0867670586022280616066889739008148 GT 1 -47089871465113232376.6126067164641472234134030965146200 2.1699704195371411425872988625412768 0.0923763399492886212049406842795955 1.0969254576076072085133386503559852 GT 1 -2971164358795810725291566254.2982339263727801303242954398852359 0.2556568199528075670424698267816672 0.0443979628070104142880967208730233 1.0454137316857587483956413902991059 GT 1 -4696121496592.1336350777839410360452273223190523 1.3885238408182882931283402888537638 0.0400558310787085136414703261229911 1.0408801535851154575068880890323386 GT 1 -25777236635175449102977109385165489758132.0613824441622367004413917033073192 1.3395097552803957132092762069151965 0.0234871374566124000000708881404834 1.0237673566647121109275025546600658 GT 1 -32255360096581.3620016359286873537691760835461838 0.0291755719766015212242430134715457 0.0757428248787184878749890791730007 1.0787649180131850255020426367185333 GT 1 -33.9107570320521431050656690555966817 1.4983052249100072457984711761787416 0.0778375987717530364436330565424561 1.0810339307756115186934470752262515 GT 1 -21957.8006311821811601901498290057909629 1.1869597118385794514694683842359418 0.0069257375772342013327423273109283 1.0069498318090568285163596248080370 GT 1 -434076987605081492662457238.9250184231240887480442340644993270 0.8239993466314993680460983332832631 0.0096798514778334923318421999451697 1.0097270057846794770908962576610429 GT 1 -11180774275215885695422576997855.9038975272681603668574183678544635 1.5656354150357810009430499434297797 0.0511161978198002727054864612195031 1.0524689302501331978734112328062962 GT 1 -3897008802021336447854925008183088.3960922950127206682660765543093128 1.2108728778545525301410619349444039 0.0431327566866638040035135070172902 1.0440906188725824455759865679213866 GT 1 -11077715438882.2972085621712360976616971120016023 1.2687575893016912040897547534194615 0.0531533065662668923225967250387747 1.0546180854547094230000598147770897 GT 1 -2956171164668297267865.0964186359925176268225205831110497 0.3546889777271674195318676959580707 0.0873705384415835702402340315604559 1.0914253279084366508064536410743753 GT 1 -108512403499777654.7575338726501839710431336338554740 0.7996596741903467276969462110482962 0.0008368192280570705020288276650495 1.0008371695567221040412548100012518 GT 1 -39618.0398851042226793257458629706518460 0.0952322103977295752607873275492789 0.0872260610352541502528458243279288 1.0912670314939677146984338063580194 GT 1 -935274.1547917432520724739267004343464674 1.8809885186324671530626674138378727 0.0215370334123139472106785952423363 1.0217723399877391220002374982692410 GT 1 -413865530644484238609407.1388433453434699841454572784926842 2.2950728513369744805393055609660243 0.0192416006854326772315022961100103 1.0194291297542126260523111898924842 GT 1 -7941366895706294676.1391185275863535352140308790551618 0.9690171214075846214931051266540137 0.0514685949011288002504366477565471 1.0528403798770028999714595933323311 GT 1 -752881870774497.5615449989828915795104251861855682 0.1078341241025593399660892334585537 0.0394589106354765155108384447000744 1.0402585185479508054251050125482065 GT 1 -75628128176401588426.3889628038619182161039566988512814 0.3589458826715955605560503782884562 0.0928353594491406907267978620174377 1.0974313232333537537670321318745880 GT 1 -2778173.2934522068866672586264542275448537 0.3826851136561553033021204356654659 0.0670262855680887125226488418485763 1.0693782517021775384609818114069442 GT 1 -7869365476765929440.3622986143841424010850534807211699 0.1519970210639475615218876436242022 0.0320821900661147115788230961728478 1.0326081024034650256075247013154910 GT 1 -1116789772933617043141520867025466.6917225774506842734794578441445593 1.1008439099561746762327790748221289 0.0739704406370207025437840967711420 1.0768491232871467903888772681124722 GT 1 -776939684250036700143309450983451017936871.5225186915016365717741599002310797 0.1120090169573964446978879460323990 0.0984140469846636314307926307351108 1.1035998964407888075635674309806780 GT 1 -40835139318229036163528136413533822463882.4973809527649634693891222766907928 0.2561467877642809005581366009726434 0.0810930686545585037635738559683511 1.0845704334137026879087588209984396 GT 1 -726922.3956750640334092600021968402925643 0.6396352315941217458248080554233395 0.0831262315976158327546063870813471 1.0867854733415431138364902737313243 GT 1 -315.9755415351094663628585301697369335 2.2750054278718521607392714413089460 0.0757045510345064695556612516795941 1.0787235084869223954673674774606441 GT 1 -7784193429846965115728379894.7000673654448936969780343555122630 0.2258813718714049592711004303787894 0.0058435953784376826165557382052853 1.0058607359897280752208754134194153 GT 1 -32570268243534073.4254064281282132981945160412134077 0.2986641404716094202023446695918672 0.0788004301836687641022432329763416 1.0820785780175535204159825975838440 GT 1 -14350.6694446104538725130844162034369133 0.8886872797767023809909857234685967 0.0688341165786307890003900197076964 1.0713178398954429935854372293580366 GT 1 -81023176024457502253297004.3391538009492575226589050237919980 0.0089989649745080875903622705260590 0.0431001651021014313553857466641452 1.0440565587354460222501073227034089 GT 1 -85583868256532901220248143141484470987.8106548503417454824440227417768912 1.3119419562519147226234212647219738 0.0243674481288439559729746924881862 1.0246692471954095227874810773359171 GT 1 -164540361843754644146108340456.8569537441441961965757262835846657 1.1093121565137266534115925986172423 0.0607736820703065117120067144608919 1.0626988086551486136780765833422462 GT 1 -157017196912893568843809888416.5301099186698628537006498013312729 0.0813571538094208767844942024658583 0.0767299856211690859829090911598754 1.0798335473053578837218569735855765 GT 1 -524899863874043945545656946300810.1514482313523997991816955833447559 1.6969505175154928985272594645487734 0.0394477944887605550508263800497669 1.0402469458182497177903102756681597 GT 1 -31759550244332721967561564.2319662437109447554128224235580702 1.5024044171843934009989917914054481 0.0280249749834902651361248832544750 1.0284251692792645526065303566403159 GT 1 -813107145035792444340823961977824392485.8721271174397615517243334734334618 1.6548595531899706132538539451661470 0.0772897209337078438404814358967429 1.0804399842556120207136727181676762 GT 1 -3636569078758426291797833903.9508042621369097327387530490590257 1.4405928904144249517400577057139017 0.0489872842949317424644777471940664 1.0502278456480412321355698446609385 GT 1 -2749572.8873300269813258987672195604567390 0.2760906859574455522532797546187160 0.0239302075417797516162667435597819 1.0242211864594580865321816623140428 GT 1 -374.9730613480640425653367697347072730 0.2268415474150819443912883703816408 0.0561275481507161055005232093591852 1.0577642365318682459494061098745808 GT 1 -127648274.2678174390738335351377132024960318 0.0624457705412908342870644149986688 0.0582763781062857981483872427474651 1.0600434424718010079022228092028221 GT 1 -344131427661836039509531.1610963575818933149743694156163935 1.7572920774484432942133656522760692 0.0834728122898230829879049395768818 1.0871635474285889440114763296938899 GT 1 -8930046725239479242893571245245405694502636.4082124894667558498543421412438021 2.2818203122916939329023096762126126 0.0807475073706834650892635044559080 1.0841944472142046210791315640905553 GT 1 -26240973338378062383381403143263931.6972387291434287300347624367227944 0.9556893530110977907278202041113621 0.0592742889411102620701029608252783 1.0611036685409264125791993977459088 GT 1 -15032040935662473321639023116093268187505742.7846247050298436891140221021965108 0.9881925984259451973170866100868666 0.0987258624883694807811025092334113 1.1039458084818323266211493012557126 GT 1 -40317210634.7000467051035808389139761301372811 0.5814273947928455870679402428961942 0.0457422623491489992621313559068434 1.0468214787694462611983306291092905 GT 1 -3289546010391008275589939069095.3517233693964084021147743293688871 1.5765910556496745119481422383629059 0.0746694826405790677988619224173638 1.0776042892276552197332903704687531 GT 1 -17833884852267100315.1222100943083753983112229942090913 0.3326811662036917408724306287707041 0.0537355992765717674523125615574835 1.0552332556161070724734670817050083 GT 1 -7078435095381822.3995582748254095008230817981432658 0.9270482405218655221812733470719572 0.0141805088341944175198333160167735 1.0142820129791502141902094151213759 GT 1 -10120486595.9730412170748075352552131600871839 1.6581294344524662024127675531359964 0.0126786952390123633327231167669365 1.0127597557856535687485264723752615 GT 1 -32976209.0526881360791278908708658022027601 1.5658804203007404783996018567640984 0.0946318796209451109310135252892811 1.0994136551380075600104967758346905 GT 1 -143462666352146279492479731409815.3945279544401761202646710694223252 0.2594683618918186340466862744605885 0.0863126623549455942346722759318047 1.0902668474023032576300539254517524 GT 1 -44984768066783.4710178783987702386437334538845605 0.9221869989233401724423332142756694 0.0115225885843548892483358652172464 1.0115894880077314386756965290775734 GT 1 -1408761.7452063366418469788189764656291006 0.7702962423103435164431665435404165 0.0105948272397143031897240363354717 1.0106513520232127972798154066510534 GT 1 -86711270897916208860004.5999957465243404157522687990695053 1.0302269044580063651058427429855162 0.0319517812855030942034652276820057 1.0324733802245847403832026833005322 GT 1 -643937266682446682859052817611144.8302302705402892216352953296541998 2.0349556310135267801593667141992866 0.0732808790788764707249910609547311 1.0761047572570191703072571210705422 GT 1 -9003682757622407233476.2591665544298635878472119150144259 1.0536478800954606457974841571770574 0.0281649913345961296035979650320268 1.0285692331012655245466434178330735 GT 1 -460231473444957959631367780749078281767173.7574193320246174259691319722669294 1.2192847936363135026622112240658158 0.0039467817683585928584469126302133 1.0039545908654957938902722438133613 GT 1 -6026773312751.2340217829946785830381351475955827 1.7207443712737675460970234438347379 0.0109946694374210299663698984489382 1.0110555575230108297963444695224506 GT 1 -23716782322940406949890096941599.8030804034522003822653343002636539 1.5439195383993473343174676647985150 0.0755000394540751481478415977468326 1.0785022708310808136291839969376907 GT 1 -32855475062784910625042252092986810.8945965582258794262029938368290112 3.1332069251471657362546186789399507 0.0246090288213496703708000648634031 1.0249168922810645842799000382978048 GT 1 -215529000086327489177694459102621929.9815525370423832409921222913071773 1.1809807787319745509991643964769719 0.0675239873879025613122477168289440 1.0699118515354056108922878594654056 GT 1 -1831891769716055922.7640591971121080520870115468441525 1.3277037649138811666731434800216863 0.0104334036719564739663780006187555 1.0104882131946177759618678035748036 GT 1 -1376643588023722864170547946.7302042473540354886952634691369599 0.2869987265213364048228974901148223 0.0467258475177657452222274213540126 1.0478527435790940196871815644547837 GT 1 -14805135509812352622676709354729749527184.0790389333950857707102522661336926 2.6861603889707444041181273980933447 0.0171297580030101662396988947462771 1.0172781695856564592952445986839857 GT 1 -6107266162690740979782524.5461251298421913940493880405914002 0.3619775092061381185986244381244323 0.0772193333228575843662207927195026 1.0803637036203190253133014088592154 GT 1 -3594763710635066503535.3995034614974318394874114115208578 1.1630657738376084812354952119246853 0.0087733357905731506258658864112916 1.0088120480913496763100106026941000 GT 1 -1759176830700604693294941921744841747550692.0137721116636015577717053629658226 1.0491671866007312245625251073520717 0.0728262618499035933085509041009707 1.0756143111820358104792884253679013 GT 1 -881504058370175.1234522981806839945935456951778964 1.2114837329650123852673956272408395 0.0643778213608899650883204001886494 1.0665435392953719507740904318140010 GT 1 -214826553037605305801195302710743380.3973128003350173240038219371911014 0.4420856798838742671411648725888757 0.0895605412968804936402753646946799 1.0938278743885948660403876816051050 GT 1 -449032354941085255633342852497352011155853.3807134500091242592671714284507256 0.0687296630031137664415548573876946 0.0026907902326729274480014798131941 1.0026944169159345504052014095769306 GT 1 -17129596915958627400416450.1275621888803140932635859630228465 0.4267044444547505531813505617243281 0.0753082519374956625414278944481020 1.0782948423461115892420263830669234 GT 1 -4131022500273916437065774905805.1919384096523846690817032590351743 0.8815893215875224925968441727875856 0.0894032013983665519367990124684450 1.0936550717897730959094798468199327 GT 1 -179892631.0519536911025312264826855092558602 0.7564471771929783146386152629819206 0.0999592620917036511144372516437299 1.1053152523396742433806068297220418 GT 1 -24427634274533313626.2728926120886262521656522092329087 2.7319590462487141716185263445913786 0.0271641726288843483044507797103981 1.0275399393251414442208026209298571 GT 1 -869117.8543828441267167371433770619733007 1.4090404527664411728455543581998750 0.0080228775615415620076227840851002 1.0080552340212032142828890632763121 GT 1 -125551156375391954960264297419080920322.0769040892884345299818739907120064 0.5941435290522324209220076425510818 0.0904428486781326912588717755466721 1.0947974448213211937802416115181957 GT 1 -2134748788952422940713.1524500500789041727320021390452084 0.7501345459234365976392633424246191 0.0067132670907249888993241858071572 1.0067359024298363923975515615753293 GT 1 -14527738929852923.6636049055961922041922763807673548 1.2351543690480192969115446900731500 0.0995887878955829009670930492313889 1.1049037176676750442733649454599522 GT 1 -663760677430519540993.9683802203952987329856356721049242 0.2763890729143299926461334342519766 0.0618990786961016028946769595130125 1.0638977437550969201963297331313988 GT 1 -491535393456891381384527389450106866009.1563302099936898577711516147556147 1.4557473368430666816512230187457145 0.0560574195976811558779151016659718 1.0576899405316043158456458332174361 GT 1 -4.4891005658605659447075049390336865 1.1076333901020602881410685108651951 0.0526955056385029014348692423842537 1.0541347017210054555643778653240909 GT 1 -71206869921412870041182467981540517.1206383723174313800966199945177379 0.0397567689921340149737952673715511 0.0756045034730281961412255282742998 1.0786152723733417190080805262764570 GT 1 -12792872338887929695118080125396635.1713148401533579469517452922176903 3.3516338932487630197486957012872927 0.0300376075396953473370259513113549 1.0304979788957897304741537799622233 GT 1 -103642724317130.9053226915082348148394211893935126 0.8733798870729616933692505411517510 0.0921609342207367209224629623525543 1.0966881564209753012759424516743485 GT 1 -82484346572363864860975646002939.3654719645977973695699331850958698 0.7696407250313963254688668525058560 0.0756657598398037670470028800584364 1.0786815409745140641818134167910794 GT 1 -583041535731.1779539333802640041123156862231157 1.9367865686829965052524681931480017 0.0124922983098557307439746771598653 1.0125709830573806325725285733827123 GT 1 -29282915455405706939752369449195961685713.9532849049462144307343631032746931 0.0875600063111435911361330604126057 0.0177197534771753070435838342356856 1.0178786279173096768161009994636352 GT 1 -75688159289350446.1912592197685764899041886589432295 2.2689778802603742300081436496030447 0.0720758856643746994312743989930981 1.0748053228847901107883176744132426 GT 1 -1705284898349.7605914499270343879808137307519068 2.2342730634837421642585640812055441 0.0497213333889052213449464499780353 1.0510000041265076084417456135092037 GT 1 -1810652118.3791101067771377569029557217668417 1.5127748113184899479851581847572121 0.0421951418821267734429796283802460 1.0431112189233329229611862446974953 GT 1 -4328427139332639163818210.3663544255566239431513371311266900 0.5718568720284851273162899138733184 0.0675614743023877281794790300481159 1.0699520538221272239607236977007379 GT 1 -275499651.5574393379661784018774889764002726 1.9266514423287514072087172674790874 0.0108239579915534412487768843045615 1.0108829631910062870150227333749274 GT 1 -464440264.0925208242363775776400563748381511 1.3453280727636088805569554715262176 0.0982788390239554271608738259162827 1.1034499408842310517241021100394064 GT 1 -1230189433632093960692697003730815.3034040791432955701391188014725468 1.2287320588280105251900920394855935 0.0164934958781227932597708600689953 1.0166310279345478047698629835997363 GT 1 -1173851373146667147219854632097030996342557.3264535866894411471300897232879428 1.6882025947362488671068703787707699 0.0535334939373991682735892791525313 1.0550196961088193560643678468327452 GT 1 -14328290916521143441169502347556067.7841090144116396568735934345316498 4.4935602748283999266918812295396378 0.0781379424301388940142657406282827 1.0813596787987559055534623505014308 LT 1 -299960509885165607804789592697240949016590.9596659914626442822670642378511812 0.9421214005573686291291434169424949 0.0114819385956344439703856815876772 1.0115483650114625698994506173429887 GT 1 -22326421032333274567789999297698030971523.1196660094546981826742777142683670 0.5906800185545656039194517034785545 0.0114453766642205941736331112984214 1.0115113790860585949610573642910422 GT 1 -28248754273047462.3400380205355333862876579985704417 0.9160428228699502093447147847079420 0.0425694999558202208741365400814781 1.0435021453719969214734549191221069 GT 1 -1092388.7316242911603755360049122540059279 0.5935972601351044622675909327342226 0.0274633375644818784246620948899785 1.0278475050376447605966791247008517 GT 1 -237517418833775308833048497994440.9599754710550998226444068802033648 0.1239885725672369199257780777947132 0.0943347310400829329032647290270371 1.0990855015155752651321991743466418 GT 1 -118898958243588.8477194239504780838768302941223490 1.8737895931999331482351762887789972 0.0814411733173542956834553746765390 1.0849493299078979686060989686207558 GT 1 -1640386998796196885891702611084830406135.7838691343225774163941966671595269 0.8667914484626994094310256516606477 0.0072965727161748929813822977106048 1.0073233229054406407139758413486139 GT 1 -483357894897073.4882138052406587087316002228766869 4.4352302653141003076394735829783796 0.0739062122134399026676219242204765 1.0767797667578363688632720301121772 LT 1 -579877008931677797187629736280506.9422507773129911819054924248432598 1.3360051359563029299535217363787613 0.0311311461776333430843542842804177 1.0316260180234784062867611677507138 GT 1 -53915614166134258335368941095122771326474.8586491997434451359393704620107479 0.5552693505891711095405784500639147 0.0536178614927958860262142804627880 1.0551088395865027094648673544383384 GT 1 -18174281876545622729609201.5430755523954176622213144769689112 0.4837321784410004907304615055924439 0.0364123211702863083955137920933604 1.0370917949257917925773359801992628 GT 1 -442243.5257292794454434270518325496638061 3.2461867374952973263960552498435871 0.0583213350255671283029076891207677 1.0600911825851090640087118571095229 LT 1 -32215387948688108470088.9426385976638797052673026332201802 1.9517196279229121844250846595893581 0.0293261871937148423618536344203313 1.0297647962663830574455638017751741 GT 1 -3863616789945656613197120054592880977896781.5832499717065461625077795514140579 0.0416699523144994333673361979721512 0.0432226214540463155086481715037145 1.0441845388893107941253141048953782 GT 1 -3521115523.7753468699923300305183639586294126 0.3748797389126290378958845944488152 0.0319035729705625659615889522383177 1.0324235819669427164938078753757447 GT 1 -1262761058219272334563359878168594466661.6336093589596812417215752005750088 1.3992419014014166708677009708296362 0.0154935808168138597401253491803500 1.0156148606771986686430036538635937 GT 1 -321578081873552639538521065723516739.8318547574687697907088558465740371 2.8254225191375039009761039399056194 0.0665369830099886285509932639994597 1.0712243665028595485782965972953498 LT 2 -428359815283.8784211443637612543992096641600058 0.5121494949954664365172226425574135 0.0390972503306884031373273953581523 1.0398820721468517955455951277199013 GT 1 -2362393710379392542.2236053683384686883814756963775767 0.1325181889005998192872417883076726 0.0065929153049408731928706718412059 1.0066147445696116445490783809441765 GT 1 -4.0135029035545102209110058861027876 0.7618348115918727939523764090384673 0.0302683479595453918363163744685920 1.0307358931396289640741276014060456 GT 1 -11764322890730437862409305327145383.9737237402359594292887350124375303 0.5759606766567352788928159849895307 0.0510137673863371812290583928542873 1.0523609877338547600843939220454278 GT 1 -26659559.0712435132977792083859242838606109 0.5866435124545723484280434861136939 0.0128800528715260346194788994912082 1.0129637199532569786060050259314199 GT 1 -60039217570.9068031898436240851619413125511846 2.3656061254571524071862327072245350 0.0376293820596405168706694954342950 1.0383556447748751184753690483491882 GT 1 -130.7822553003736805378523312030008920 4.7068781994230766352923765323957760 0.0011870279754049737090164562700502 1.0011877330511304728054540229128661 GT 1 -124799.4610585231875070372098963436355769 0.0647620579568784919034029364969963 0.0383883560747300042004750806831383 1.0391446063671954176948862942446542 GT 1 -1398990920208327784957703215371742780.1233117042452233417568810651284715 1.3431641474554260117315448336568254 0.0440415104254382312359260358633717 1.0450407878205635000069293221278998 GT 1 -252200010315026618656425141.6109170010939244756159271869566964 6.7371775551932122201067396368714964 0.0811626169545791238404445449209209 1.0846461221800987627745077544436845 LT 1 -522867873676.5031089925975063798008579576251044 0.1768518681539447637481887185190725 0.0487347495940782330414809208819182 1.0499623379705767105843474222180167 GT 1 -44747144483801183132593336425541.9370257574537080305215683752517119 0.8175282434285318315967953050282631 0.0514036305980785462002513107202478 1.0527718928684325453252194971044556 GT 1 -43498665939.9815229109449040843645464691827197 0.7672845752204189300395722382131960 0.0098218938461355565444746684444961 1.0098704468285786517071444394100324 GT 1 -12017918290317.3879540618114539972679944272457556 2.0730355300289928926457331423099462 0.0752057398123793937645132450844078 1.0781839876278125968513103316908190 GT 1 -1817278943020.8470196600555539808555027447633128 2.1383647155698263476508485812263747 0.0626518329197768713024641455330909 1.0647004893681455495640085886134570 GT 1 -5480.6410621946234124105936220959041823 0.2470197213911086118680729966914742 0.0339889764741893966872809739392657 1.0345800333173276438365680608611684 GT 1 -52667578709589387653935014039265813033.8646915050114404906866700505870069 0.8470981336844186744015073390602922 0.0469070741844179947486882184002302 1.0480428713559123116724540348701761 GT 1 -26297701257.1942069224493567349069150384848984 1.2818409545968844925986436619069611 0.0603278765056150926848722152597418 1.0622242693578363543465356645457453 GT 1 -17424595.5453519235115978260870224040653960 0.5410654445948321890005888198726838 0.0197879585725406187005960736852559 1.0199863619183431175213245211986775 GT 1 -698327472204094572.3061208920192524464221614650629618 0.0807275356259365041824791211462053 0.0345261769576258558354442935833577 1.0351362898142323087341410713833440 GT 1 -4705.3473375757302195799836878040014998 1.3660103556677159518685964456604581 0.0068849706675042080650645229230848 1.0069087814319301942271063939312425 GT 1 -2461.8893074669185617190082170730952085 1.1027904586272568907242139212146535 0.0167246375222200336247954418817627 1.0168660734666291060994548446785855 GT 1 -2534004117592.6780388021486328577364415764785818 0.5148095439376501261351273669387205 0.0350768535000694174861308758849913 1.0357068217473730186682570779456597 GT 1 -113171594012829.1302330763151080478426142328654236 0.3917489569887538193318956916269387 0.0365872016692423258571270875597965 1.0372733003291467732683940542049500 GT 1 -189388344084135727998.7984060261678585497247668866472101 1.4291123793374929614838753990544244 0.0243210652828361582730947406096043 1.0246217070191379944144156816030347 GT 1 -9124834470763194861885132190419.4361651057482194378987388651466101 1.0228879337857782972462057459819585 0.0411226960509955968581333363314694 1.0419921539429462705696677329275311 GT 1 -244.3795154961200895618248770101509048 0.0636565358804067056878590512077683 0.0768719086242591355142372825900178 1.0799872768861316383642710651897926 GT 1 -1144520431.0417592435624954812614655406129724 0.8947632886503849757407917401578002 0.0025580943023418184774818140475189 1.0025613718162245402117842462714806 GT 1 -589.0148216427747088650216864309331009 0.0546018320859453221296926142841770 0.0648996165943427051457333185612967 1.0671013935251454421422754053888802 GT 1 -1563253763723885679478323.5040270719972622516062911146534872 0.8898766724720409446537223448424554 0.0910451991391375838220917762057282 1.0954599100663924417015177391427653 GT 1 -15.6642611811847831173930622408256428 1.3388272145530597693332666075271257 0.0401794586370817933898373414389025 1.0410089480752755273157946917793833 GT 1 -307921948175680918584734.1908494923242554971591472186619051 1.0358090946881097486516794404033861 0.0596514040910092815009501382315308 1.0615046257530412179632281909898775 GT 1 -369537066179062.3093525973523510948080184045127954 0.0823701560893658902089916907495452 0.0586482895206996265600906043186770 1.0604384467638288591917563455553972 GT 1 -2.3688207932939618930920205280384984 1.1247401733858093767702005103217529 0.0452397017520645192668620876493330 1.0462949666053454653711389168828480 GT 1 -464.2551746746428426617707479565103267 0.2554187238945573539739595199627790 0.0460484371951494982734950460346719 1.0471423815640766362893791956298672 GT 1 -872280918350089082.5271982759024863628873404895442145 0.1756605921306414231066314287350677 0.0256678282980789048259063516854482 1.0260029947717459699446937810274343 GT 1 -33520002288913768253111696958607843.0325068351063528248665991440683279 1.2018285880479181905941369485852205 0.0060846325528481980591582916405056 1.0061032193637973592321988391640828 GT 1 -654720347829477917239712661493979609.3260404334094846714302179291588855 0.6644216768063524090716655577315276 0.0816441588359131322034861124248702 1.0851703369290058141876008662010981 GT 1 -51845245137925046954573.2397841565639395519158525572601449 0.6560194022256175203135660268873888 0.0789401216130358778281203769018491 1.0822302303049347298110660433796585 GT 1 -27160784313.6733887864598483931399445949162625 0.9414228869924921571982461614688343 0.0599989095651735514126070738799484 1.0618742436817109008646144029145030 GT 1 -67773091857695158597339638544098842247844.9781897824455916482853052300683859 0.2007767563911578838774064488351899 0.0707108359718280320925247931351477 1.0733353248460511961535648134130019 GT 1 -420832721526684619338676454727706.3271850905336315799429177415400858 0.0174531434474853139314151629831493 0.0448471805166148293802751610222427 1.0458839309018551125693588824852858 GT 1 -764374974567158968123668596315334736590840.4947392728794055060101511196633648 0.9200227111707631867864337909649091 0.0833872865840990350886180202482613 1.0870702368135796198504954746444470 GT 1 -1290017492953223809653956409354999662818.5084710337699068465903387669038775 0.5289970324140408647071411277953674 0.0712758682634685189324213820332279 1.0739435361116503937599669010626944 GT 1 -3461173801766912675950136.6746448911583082259056493377353591 0.4160989121354146939935206022617159 0.0971735814601949921146156379647481 1.1022249715739014210518466004398021 GT 1 -8617061847341859733858573055184412101486561.1040970840238211410857879913567827 1.7805310977743725332621429742704912 0.0962162954041613661196031384151687 1.1011652120459681551480008838116337 GT 1 -202615937186824.3799779338595263765740380113571183 1.2985928348219312303200765866694120 0.0889136790105681085381811618613159 1.0931176321063102621215515537057119 GT 1 -223255974539970945.6343440130157204003152594192953431 0.2099046875350720969403319104244945 0.0381114264394491716643726476203079 1.0388566629246350740800569530108558 GT 1 -17347319374.0224196346879793628495452649973844 0.0968761177679365548159215521054103 0.0427057054532740060358681083684292 1.0436444169904230394218115138272451 GT 1 -85834934014671838.1549617956205094971113300471675245 2.4693435288868479359619318423210512 0.0409865003527162163244421397534500 1.0418501274018596392795451919795355 GT 1 -1716669922709377966719861333793334378.5056403251199444712831033363048017 1.0121614559550619282839193547580377 0.0339079492561315757647488790824963 1.0344961586843596791014153864442584 GT 1 -135.0635385312345557866820858740414592 0.3289529096954607178361893150939770 0.0127842873384436440885082200875051 1.0128667095663122587894439100955366 GT 1 -14.6207310594082132600285922288434505 1.4558948994927565529014839483578663 0.0782606748401724076122229709655042 1.0814928229929017168347281669366078 GT 1 -33150032783332.1154119652939241579580554447274972 3.5931697233674912934465361641411890 0.0742602770708322741696838614604854 1.0771621605957899284648924559251644 LT 1 -575.1180549182020187848035015927504876 0.5591217174425902424954885680685712 0.0839870099013164839498998692572078 1.0877247330781203809448910277471896 GT 1 -760558028009385612.9016683358395017890201468717586390 2.0297535972385785131222694220087883 0.0594050882146786723583152975796156 1.0612427190272612900050370874750702 GT 1 -579184.9175131372029426551342866243769471 1.4690628982805591764875060340445616 0.0366204105812143052373973566024348 1.0373077709988322136022465492603826 GT 1 -256433185476649846751.2556246175065778430721870476946833 0.2522384879792358630547775169413772 0.0562468744046228128829856474829560 1.0578906665352454953015393103028127 GT 1 -73276053792227921783153813.4685097052459056593721427052167513 1.1821420444769780247970278476602615 0.0640240790359225202511569423513142 1.0661655283011796618963342824887091 GT 1 -52.2794796678482287692831427503163249 0.7604363944586432239345368628906648 0.0432995965961544970743049438965286 1.0442649946363028159310349801432102 GT 1 -984815916114797332396146734413045627.7198670254118447455185238771314939 1.0163625333128596181899341407629344 0.0483840202885807655488638705152016 1.0495937082275133506514322669452504 GT 1 -3277815102301768541.2637271180931859159181887068513805 1.5294044066358914819212661169648777 0.0448411302971195682483080947856727 1.0458775966271610613907268522268117 GT 1 -24757575655028251282655.2424947131331592422697929957621468 0.7854209257876094411909797653327135 0.0674438913082257412889846709497745 1.0698259590954726555929893458009755 GT 1 -9939829653867013760927174452743.1613996257006289938957002743003515 1.6425843122933474169541857851487276 0.0425066936253653367575471081764937 1.0434365486832233227080451099636114 GT 1 -605.7155615191173673816157192960120632 0.4204456063070453849304905837576465 0.0084469809520598514065236677877276 1.0084828588786336281271224785584830 GT 1 -156171146.2406909406005670011822454072563036 5.5280121059256659936614372577377699 0.0100278134555985691816174304549239 1.0100784306477509915447003225108454 LT 1 -800442.8161887286601144135275717579237682 0.2777976948252006857595173893211079 0.0280181688465529904847255071245442 1.0284181669253638470929471872742371 GT 1 -8128188302956.5782786728853436507629787405710975 0.2111035072091531582461972744221799 0.0034251043336010070169082121897122 1.0034309834316371386975346052677789 GT 1 -1180355183911875.2368974695920586283792864431595815 2.0564512987952375704431659865757080 0.0305457459476850207848178211667351 1.0310219905057042754602199035487235 GT 1 -130397958735794018909194054694182562795.6921017208073048192147109556000088 0.1883188417610126777783307303996672 0.0527110156164558990438338155943114 1.0541510746032383425232368075783134 GT 1 -875.8939360483091576871367967589566135 0.1643463312196652685632428419711609 0.0933358044632598562527335897614831 1.0979831338748663240933467557483982 GT 1 -76137848751934374849264225242362203.0091262775310367926941963734643772 4.6576361600252263003340689042152035 0.0850354158184491846627917750237434 1.0888699202682177980354795212755346 LT 1 -37598460762737513206012871.8283625731636179743829782267752283 0.1657512443732366905446046229237460 0.0929171791748082121231367314881482 1.0975215201083279470282918599289290 GT 1 -392.0236361414119876900476194029124195 0.6818956315774716593291163529323821 0.0303028156066004888540931909142225 1.0307714372610849527386954192244432 GT 1 -1709432590348802756567808847819796819.1047289552273877828169058795327198 1.0089845870496929036553009438298271 0.0651809025737703103142604274376770 1.0674022471013904834035626653374679 GT 1 -423624338406049459907443814.1226903595189597949420335145947519 0.5381619488368591063785012716094459 0.0190649947025761228838053103963014 1.0192490751310809228212883036473207 GT 1 -126520465574015072630138421037.5925371761495011457709117623320983 0.7694717819862521243550086011524950 0.0474414101410757087962486370615192 1.0486036622101331412167361817123556 GT 1 -51542637.1136516017396654202215999793140428 0.5993216853003475151260324904580157 0.0420936037513514632451357382114195 1.0430052132498380725533112639288864 GT 1 -389598414383579673087705790553.4320012167329405525181773657041009 0.0471040326695638784072599630188230 0.0229432931108245018276284935838822 1.0232105867719512956266878106972790 GT 1 -510374568092386811632499079245.1229270510552175769798113661751052 0.1865708937284390093486718676960061 0.0951568768087192363264229547109759 1.0999936948481334275256634291448383 GT 1 -1447824083219446832821797.6934298073665000902286347857728890 0.6113314356615787820475810288238736 0.0028090004526311114756173283662654 1.0028129530981264924128440547307474 GT 1 -3022196550.7314047133215156155239597547779589 0.6795641943783338532395290003532683 0.0375171900160327126256313185554023 1.0382390727366022246378279001314199 GT 1 -288852008608.6135594946974641832158883325301444 1.2188062187792400357526800840266663 0.0985344808758367150845045368603956 1.1037334854072860116267590868709821 GT 1 -741734834304635863985230.6679294358810481003085667171213013 0.4836401032489712783348587152110475 0.0075046249100520808931220836932282 1.0075329262906432903828263002867420 GT 1 -4248916825013065129152.0391239692659349432334160315657765 0.5080725608494092972497854984318120 0.0550132092686678701612040447574348 1.0565843296481707206219744326867657 GT 1 -41552482252364401409.8674167196284021192732890515163207 3.3072303501531398851499189187488014 0.0703073554433412457407405321123142 1.0729012371826225113008664950179236 LT 1 -2861620793565257881558.2921951416779921887125728556390359 0.9584630743530834234324853264571580 0.0634136063016583132343432586539466 1.0655135096728952437692259179867638 GT 1 -132692158.3207948186489070151553136034391986 0.2784551066119010666355756336727262 0.0980620476013878888489348382378920 1.1032095502006434975801374343653830 GT 1 -23678843183927564370085028439938319058657.9898171250336975010023291718796764 0.2450978347425218941691792061748831 0.0626075046420719918508981954627967 1.0646531993310739788833438895818100 GT 1 -2178353158391764244448036087860949264.2622331246110701880924756888495102 0.7594636866710163411237425932606750 0.0617111429405539963695770196017684 1.0636974274260024751363018323133813 GT 1 -9118788856513822906222689091955403.3128906919471235162173531999388011 0.8114887487046402179567498646400494 0.0963442995437336102487439881194562 1.1013068534635763528709529252250009 GT 1 -2697980608697000517471633481744169278037236.6485537943449061062872344218206666 0.8113124377865928002797463526332379 0.0499116806467638931990723627953088 1.0512003309685345420027254472594614 GT 1 -286899237992761036101.1015869495410839366319566120852326 1.8297367702933238159504263387608885 0.0859008924120014531936403244438988 1.0898162805967727883660750978427371 GT 1 -183459530783092429076810293439708238272.3396306115764509100667813005471766 0.7448168461961216883328506679933043 0.0853631907505602464483590920538448 1.0892282222861267929742032730954512 GT 1 -13221377897339622015123121941127032063062.1686363719590248174635694465779121 1.1971832858855835981854409793699334 0.0656401169916820355378657219861904 1.0678936012541575300733815888496214 GT 1 -512943102192542437.4013418517974319682802435953597469 0.2356963703451065202034505056739385 0.0550928592471148828971705739701954 1.0566686200701539466155763234072508 GT 1 -11947705764031010040533587642824158933963.7085165207324392088901105519675965 1.0589623434114409747730574641910037 0.0499094583443075754324417794977197 1.0511979919229826524138228436903725 GT 1 -477382832625832565.3255885880121529986917000265913768 4.1723267302168290582830621310528024 0.0974606311918167858347233817943565 1.1025429677783851327997767267389311 LT 1 -1.9249988600082508516985264740347582 0.0090334002121163615156084753682074 0.0682897584980191711809963084422200 1.0707334123118557469233582348597932 GT 1 -2204935238623928341282849030542.2161655803364450107617737829589595 0.1680322974879598892132539226675964 0.0645538763513565059685742261752020 1.0667317258952634128884692239097761 GT 1 -3685426306547589576038376121478.1163671416840702546377476155046402 0.1042958334345455995255915006550666 0.0979084274211313298774900833830384 1.1030392423664302119019509195534280 GT 1 -60650066388495433197682493.0735268739122918747898051924587996 0.2740581001127855926054817569866959 0.0233595598980077447758215930779367 1.0236367191375776043095624571748910 GT 1 -528480906950123358872441947.3192821685166754526288628973077448 1.9329175673816761604179993553575677 0.0419275941526479302628232621723803 1.0428319236508744988846474921443839 GT 1 -847582.7494735903948358795378324658450867 0.7552770123253102659658381024346067 0.0599185928184722220191826263331937 1.0617888040833400664844741854334626 GT 1 -90231329014662382706.0088190269849237552067075005574188 0.6053983250639837261422655632221441 0.0230167858565818884451511675046919 1.0232858081069926016801301502106124 GT 1 -20319190377330198579565670375976640.8254602404645895716688479804927471 3.2426019294090654873590849152962268 0.0802872111882320492627282381941758 1.0836938437534330559159645012394818 LT 1 -5891341477226800.6721125752416643022843634333931364 0.0031785744280947289490452938456331 0.0827711833004054874719194278803612 1.0863983103720022296101886932407762 GT 1 -1336387739645832093805.3775549973368160862281408332828526 1.3892770805400036268173303196792750 0.0071463089006773459180132924068216 1.0071719660752661729585607137808723 GT 1 -22117021227807584262.4471209729455067988650139951916480 0.7283191601251838034008414071781100 0.0622031220794937579674893719342340 1.0642219014849905471259096638413529 GT 1 -1814205011.0212128472032719621389252718948647 2.3952223481616228657053421972855349 0.0480212386327130251618290958576297 1.0492125539277760043677057079424806 GT 1 -3453464799023.9634648473741816042057249607750922 1.4073937219175088863752012805114541 0.0699106299345574573299544062337272 1.0724746006072795401449659836919579 GT 1 -167777798224237460031457965309497856598.4326048939543376077055883648039017 0.0204062307037667592200978240161100 0.0146151787891887517007732283505696 1.0147230326738722526808875600305635 GT 1 -56928130113290166278773119.1794998533474684316147249013836653 0.0774200224511051222688334188092026 0.0901983418870250740516923039256289 1.0945286613451737993311927970312895 GT 1 -3079394476777674867.6433137661601514913251205609874750 0.6080303659626163806996399436648364 0.0660936269119682782023260444333546 1.0683790887243872258680620996686735 GT 1 -12443725335319980937.7756973304478294739297201728772043 0.8028598538703805251649799582703652 0.0641577482786838509298621769140331 1.0663083511938506765047196202877281 GT 1 -65599109860.7782713083803539067581835135834479 0.9348410468264743514723992752445031 0.0787443750282471400967606953346355 1.0820177296934287464542258155323281 GT 1 -7516484561218584945404181426.4160472582236179902238439999750630 2.9694716622665554256496485834328841 0.0021081106245047204572127770977595 1.0021103358175593854731240287926639 GT 1 -155443443179163727298915226.4199019344635848421507526755900922 0.7048692338108451354701568573701588 0.0258015181680951705658703642304411 1.0261402159850572265211502512619940 GT 1 -274362011258390380240589669782.4319460947340699869194088529513427 0.1660339421046385769546722986714393 0.0760906289986321678186852252892227 1.0791412954827904366302133531564670 GT 1 -179189599794.6488573341393394015125242227702881 0.4422352782953404967919271752514498 0.0993753141778783798851998845609545 1.1046666610726899256552161936137880 GT 1 -4418315734787069444.0035125742204077649152501700935889 1.2842892323359064622674991192834184 0.0664597629651356457013290485653519 1.0687712135175396812758416158825859 GT 1 -898250214483751094206703101743.2170748788952306576494641130817764 0.6797801461025489456939928076151940 0.0093218317982548772530422540907575 1.0093655519859012961236121735529453 GT 1 -110724278246051757.6093239243391723566106692530948730 2.6636465430280342735166812586570949 0.0848026318132477057834820212821621 1.0886155340308079551466356912585597 LT 1 -6099255.2276254052818087365897292566814678 1.0731232237523832791809133177125140 0.0871010954208126807684338046520879 1.0911301333469874959866091470264110 GT 1 -10034328590666.4829638566951121909403077361714734 1.0257306757071843716653195839299448 0.0147157507647013130393568381773886 1.0148251015367860122708889720962517 GT 1 -617165842611462501560106657968743.8119393272669142944741870836812640 0.0092894845602922289893881121563761 0.0843865829777246374097420476017139 1.0881610372078198715533176603506376 GT 1 -4009474.4066707021390875731486469722201869 1.7862093631095967490505932710474722 0.0325541982986426161376817119521996 1.0330958745606438075985831792030760 GT 1 -4142926809318007784530379746719677282047600.8689801830274644235766341879237551 0.7079386159025370894570062693989132 0.0880066125455350318280959429448013 1.0921225395322657539865807211640801 GT 1 -17988968801946.9068291059347143978630000907695096 0.1633883064014600367552996440303350 0.0431442916125900270801475342280289 1.0441026738316517419480861869065701 GT 1 -268.1522023949212834801922281574882343 0.1873599132948780914362675322789522 0.0334779808172184315716110332576038 1.0340511982003210029001783537822040 GT 1 -22751211364364.5837320824481481734758830939453500 1.2421092056095428636615805749025230 0.0111341861992980621117021123725929 1.0111966352292163519120728284506990 GT 1 -1.2471012036822678284056338158875476 0.7034284296438507991867114641025069 0.0519347290053541548009230588038694 1.0533319278370795285396368953778704 GT 1 -7495621081650732852709580101880.3841692305206664243471733158151698 0.2587736388406879376557227729706508 0.0638321565350676539340482227159747 1.0659604986392768278616121038630677 GT 1 -6902269154.1953499166748611911763122986449951 0.4797971783114634258634907982648853 0.0656048820718369922575713868786125 1.0678558917418548884543225502400964 GT 1 -50065667991804293847548112551127849122432.8854358397974701981768688282027450 0.7678198227057229451535916205142314 0.0643607118743341814103502003500727 1.0665252527150515201353554613723837 GT 1 -13809385054872523716043512460441274.5429633295236673839312699153889664 0.4335192790362583918137703423074226 0.0985474997681582806326963265444476 1.1037479274309188356251387615249027 GT 1 -1961763.2733778812794336586695694903245850 1.1146862769635897736826541452784232 0.0122039920636131933464166009205397 1.0122790722520854732855771160925346 GT 1 -32399996159152488434895223814265172.9538078875011474396653754506334688 0.3049012731679907381068360769219811 0.0472852920047237077910785655894982 1.0484397821653361780187648384037461 GT 1 -602042.6810987821791155343381248015300365 2.1608443897509454380940341263376419 0.0747819431628851253744798360806281 1.0777258321301357239368321581194373 GT 1 -32964842239.4789425594240827994485203741932724 0.7218245442623877240304906153017142 0.0845864338974572494731334552468077 1.0883793310094602590848789420012103 GT 1 -225591326686603207663.3612430449577619286094810459098829 0.0033922448003202557794703985858983 0.0150735911598760836902380404188090 1.0151883524385541638398923806058671 GT 1 -22480513372831.9431209109608349657321653588768484 0.7249527256266384589121941703853201 0.0970247841565080223693007861435661 1.1020601724052767360786639465139632 GT 1 -23113095936605671350894378.9452022643272099000929423932370733 0.0786420149001729322563096163429954 0.0093715297246797372119395914772481 1.0094157188055849805130091106681508 GT 1 -4028300865046349.7215006383234399864424379625735382 1.0984515208568650853481417840495952 0.0246201925401694017752262632423311 1.0249283377250317579818379648819899 GT 1 -438190594520600912477.0519268541549704012810043793608093 3.1155716924468931550854374374922849 0.0350230590213395283136296854790946 1.0356510732875508277842784174840081 GT 1 -1836126102960443896672516891995.6065430560932115607564637024256413 1.8163272752713853400572969232055068 0.0640729676959822844962715811134132 1.0662177624834972086437179628686561 GT 1 -226580145632032596661825207558575.8161954899122519496266239864628073 1.1074067941716653505915580488277593 0.0329346094462752844228778581308672 1.0334891637326672615389490612022458 GT 1 -3358708.1123638581199190611109481122802728 1.8735832746310611148217703096446719 0.0116505370277312104596749355673755 1.0117189363121962450324842849596023 GT 1 -1211028663902068541912140966.3760537405329657864658280959079863 0.6396083968115243081588056884244264 0.0320713197280007536798346245951872 1.0325968718248328159323090808038900 GT 1 -33591.0414776083876577098891295503475070 3.7237876467910550313866951306663918 0.0882458588288419206280808301257542 1.0923849073007469518208847576924926 LT 1 -9592454825112825054.9145021664332863018931871940109679 4.0928939990692335951666861097436484 0.0979723976555982336184931656919886 1.1031101581189845668567013391487810 LT 1 -964604497.6704994198430204291553970939241019 0.2859862347509327909433372307537450 0.0661291453000968306142968968890695 1.0684171215128851339822651778197018 GT 1 -383313081432847109427382314.1219785283390642976055791961367603 0.1987413232671849918641988598348985 0.0268040102233092096208345193695128 1.0271697887381739533907954150540097 GT 1 -2971242540027801754.2287695318173982357618961258061866 0.2449657691459071314310752788939012 0.0724831919671827582270864099785276 1.0752443627964793506805200486515265 GT 1 -2487174006070136880041948148225.1460205015172920641611076810088159 0.0690259205043863127329811202783398 0.0612688288847752257176533977038814 1.0632261335055043951399553424655747 GT 1 -21855837913.0253211674621375628110493553952634 0.1127364718660006690826412524925795 0.0110810888490342999864434287950424 1.0111429414681040888721923813609980 GT 1 -54986219.6298877775534212707650976634348119 1.3896647537512761073557646785324975 0.0800226374003663195286957908664391 1.0834062151117438334712336941600090 GT 1 -4297093740591993170458589642860165188.2381471615860241459527504683096713 0.2214287628619558959111313648835808 0.0873833140445355866677051616201539 1.0914393266811168466995225462571021 GT 1 -383843023382636363937847.5017298184665279683760511286246946 1.3585893214180484532196166818902885 0.0766352457902306625418402336238611 1.0797309392177889967997988456458850 GT 1 -20885873392412573158864085733582348735.8327119244544850136601597852376158 2.3603306818754602215256632769056892 0.0868198107637268413852182465089851 1.0908220583460050933544728729454176 GT 1 -87417748272486524759.0851680048354739055851181886783325 0.9421140757612448752192650184042231 0.0710322365836482619545059956014445 1.0736812410756944968079644432952524 GT 1 -14650105893614016.6926833416721381195862340354444168 1.5526747425941723547201073386238436 0.0912050915142990949273135197246884 1.0956358334894597076016370782143883 GT 1 -5524066636250264663236597864981034322980.5201894666885858161034125365049691 0.7737225200721347284461578405085253 0.0421842555500850790590705979912041 1.0430998530693353004412831141154227 GT 1 -205820840176.9168781429125899729327995419665180 0.2775803937800209215961822757809832 0.0147364067721370959152836119962676 1.0148460662725731116299175488026676 GT 1 -38.3205366666736058610430914499346208 1.1395105165194779323489537314672324 0.0071082194499378755454560215805287 1.0071336032021911013697925441004307 GT 1 -5575369.6015735069471286128281395325220775 0.1575128505757211884810014847813815 0.0617196315648993222624515782107014 1.0637064743870525229631482954881997 GT 1 -307814687415232563410866488913234508407715.5833368059635863024539801130321480 1.8801149604621019431625214125871223 0.0391051016049111394013073368190078 1.0398902429074213982863570941947359 GT 1 -66483402196632479349806083.7857119751367332440182059019213587 4.5846421999366516060545919931250403 0.0317989671729797461889627657344579 1.0323155347274526226008577144711324 LT 1 -149347802130712482420.2414462462132684055841896233060536 1.2482513803321197712870450048930527 0.0387306278598881654834063704784031 1.0395006052937159424135301741774461 GT 1 -83316354293425121.4893410768472747531120771953817823 1.1951373003452986311705881046761079 0.0558241851044149645342787681106639 1.0574428855852266515842953532630762 GT 1 -2.8694755159254940547773044940083089 0.0030698992232549807244501912396345 0.0090657049251227453805283107927246 1.0091070484900816249994681789762027 GT 1 -12448565677084004698.6668522868678356056680723170555482 2.2638004228975664205181052171582453 0.0947170689334366897684994152812508 1.0995077531283259292329740328381179 GT 1 -286909176409836942918839371518219.7729712371729614955215894256083125 0.3542759770660408575184983407846789 0.0819042059498344382049894189808778 1.0854535429886405637528383517049159 GT 1 -627058108831891873749834334550204069425240.2174547288602455970384499556063378 2.6013357637111286755669824206549682 0.0325058481555817736279797050359482 1.0330458987017213597564001417347142 GT 1 -471299802809870095469053399838511681805566.6013346449271169700952274559083183 1.2198351269995413067666768663604140 0.0679590222220536937119918948389966 1.0703784976901875083296750526611707 GT 1 -344183.0057177300060691352708169974374012 0.0288130326969698880698068053596244 0.0526823248988828258641650415059974 1.0541207878759837573696049892894053 GT 1 -1699039655.9379867937583664434773383539199225 0.4809267517822135347235084991202464 0.0805189946086564114852298289570796 1.0839458926918124549004258254670185 GT 1 -199335689140897568513.5984741407830670107511849535983790 0.1409763607530134447610505583767625 0.0889338384061554569184631470540825 1.0931397591190392855414027002462201 GT 1 -150230961936247858807074221999104077.9394344353348572897368916792037448 0.5771277405965827406024553704092337 0.0752847020895250475786834063761534 1.0782693748882870213025751836581727 GT 1 -418159150042050688107453.0220888462510391521144470529557809 0.7570568642056907510171885298236590 0.0690039936222743697128044502353104 1.0715002913192911690390909688261981 GT 1 -24077456445633183.0279499812551287574847510341438959 1.0725517259489815338385238453736166 0.0281992874498436833461168631093073 1.0286045237834409521784557333493697 GT 1 -614643808083958121008404060.9217195685147782016027834167696223 1.7723424596870869737626216210720809 0.0266216786086133583700570603483567 1.0269824528484696658399636324723781 GT 1 -246669938971840254.4008767601988248433204721742831601 0.6582536491179280243387741884521672 0.0391473766522929101509825271660416 1.0399342393709633432744482750110012 GT 1 -15410342547272492292573689.6060502665567189529176380642709658 0.3835922324122009428960464868219538 0.0085205439623770453638203110468773 1.0085570513200335239790013367068006 GT 1 -492922732843304478768175655021.7442108804706054455609071024602668 0.9096389623413595391189799250295129 0.0932322298265347636431398243371416 1.0978689033563840335521749809677711 GT 1 -22615520822284787514879351344425827.7555582322867257114733067847365118 0.1836405109696020058101791613947270 0.0869047607670826662672849969118464 1.0909150892241441038958628392616596 GT 1 -35216395046022630186338.0930321401688401423516750556657161 0.3861725619545068809244966906123666 0.0302292194866928759844188141104914 1.0306955441591883429490029513189709 GT 1 -9223499480418662821176163444094.4699007411567258163240874712768546 1.1465838104618404467462259227860095 0.0813427471574036309641375111199662 1.0848421828377827709825738143495727 GT 1 -21685836796900409735011159258511755.4934368267668728035297565944326681 1.1568011599614494241478866033865219 0.0553466237124676333640967185177119 1.0569372163544114607397106531506944 GT 1 -60.1952597724193388114002608649231734 2.7212425156317792188800534484372488 0.0364692616131668123229011172002274 1.0371508887960888929608649659860190 GT 1 -23282318149248981257587483371567660.8351605136968278558985251226037891 2.6582673331506975260454797638094260 0.0256574812486548780123413017519092 1.0259923751958107815966517753373269 GT 1 -28130931383004.8683964831063832404899004215523257 3.8661422060948581832713132439357537 0.0128847920167300625248193522729713 1.0129685209468891366428056489720493 GT 1 -132694508913675428562789008748422198884.3463410897435693865406344528248924 1.1955029692782314285613479343016151 0.0627637580938304563857834346767102 1.0648199026883994018042897818658616 GT 1 -2693887683085624.2750414279160922963783397496692269 0.9613790466489989345860219076832139 0.0513528592638515011538284767421232 1.0527183717110609543525775811829027 GT 1 -27143341.6664922902376900504949714897978545 0.2880697874356460333196835242078995 0.0688977280751845655960462615533263 1.0713861560467941309593892100754916 GT 1 -326862529792917626322576064469.6897489180959193763356758911116551 0.9043955209571308602488538787498788 0.0301623409217846266555085607119576 1.0306265832662889103013424768914421 GT 1 -5262021254.2678557306792488929972459422446939 1.4219557591574003448113036803290993 0.0817064631993201065670525585990820 1.0852381826094915630350618609587795 GT 1 -8129576.6981481512751244051676010650793036 0.7383689276309650366407910581676620 0.0841594307322017854547961713179392 1.0879129804743304850426548056979433 GT 1 -1108520930085.6868452637230363658385253308965932 0.4198498282147586265012921657734560 0.0961159025638057548135320014411833 1.1010541376103379198851868405450968 GT 1 -158007848380750997371775896965043902762.8061232640411554130075296047206624 1.9565303794846452042744815832353315 0.0114966500835737283903619220725270 1.0115632474885620238986885359160750 GT 1 -540550182066949.4429584451526743399517441199529951 0.5662187932543084868781768704423370 0.0760684216264558767845183291687911 1.0791172594615247833228227083584617 GT 1 -4431570879704939919566736958301797361.1591832524994744671829482550399174 1.2954739733733823619568718621762932 0.0142641281794895779554556345949895 1.0143668387435341691927405565841743 GT 1 -35559181.9669632453430488292245059523011382 0.2882386150546949735179298201734496 0.0429554980936245628285112870428760 1.0439053871407757984647006779529142 GT 1 -196150634242216068481639.3547655474102959401560446726676473 1.9350853467466132885779167816657517 0.0697153751019462572554402256254075 1.0722646913805791608873363348977086 GT 1 -5041086722109153131539198666809673106.4921697582784334833790184506042727 0.4720432902245356714384018559870950 0.0571768633212574984962858982650481 1.0588765678322785278749343135644748 GT 1 -130945176007827967542910.8798303237793468206910496296113031 1.5561010110928438300016358596517166 0.0984048847492806122727463693949489 1.1035897341386835526086046321366279 GT 1 -39148282971863523.2823287311435682512081216985170995 2.1754864131026677106684348579756051 0.0580350213430103280626087478437144 1.0597871827433876021839625060434786 GT 1 -999111335.7324258412367108508351444113834429 0.4257866810470062455461856470316748 0.0603826264510014600598514391472219 1.0622825360011480879734534510985949 GT 1 -26073.6625295882974259748221158919159200 0.2587051282250380650798658282192342 0.0223128034920749695338208749232703 1.0225655000784790886416216307099049 GT 1 -375256567197331071509299.6379720019995652116751968258657011 0.1288238651997553555179872386314093 0.0821921836731713827840036410249573 1.0857672606850066360775636096919383 GT 1 -14583.1078717163503350377677109796792448 0.1587277877033936263965409640173579 0.0483141537623872409926190259777454 1.0495202920984765713964185316331481 GT 1 -101158924983.8990116162013256129757609284008430 3.2440294931695509518076673578786561 0.0201706116433482394580541235353135 1.0203768159871749137327328500365550 GT 1 -194798694879388763663775.1680206936788296840546071690104399 3.6180358224373765368827781385768104 0.0803317777207126758203282769451165 1.0837423019382469919803503518175239 LT 1 -72053819406407443877241.1175453606231119732563190002843176 0.2617862192981481592487400074920801 0.0963791976584462676768271065708782 1.1013454730269502689174304031081270 GT 1 -726782375032133.5801410403472267736202626804955046 1.3035407241505149483707169084565868 0.0872370034666358183098294235768508 1.0912790196725348203720045294213950 GT 1 -55726539633942025858693317997225975381.0981976069424565545369601227833024 0.7390355092257395412841781897792459 0.0008413317299302252634829876788182 1.0008416858481046215335409121550354 GT 1 -2130328583562937668.8447170886377592098346456051510237 0.5601811296499020998703551713254775 0.0510423384143170618855841929951312 1.0523910950811471221000291526454956 GT 1 -11544921294077698256892448721487717372831132.9375884182821600018211509941366414 0.6873709200673206189267262033037343 0.0535657604140460774477322648854613 1.0550537882044817507430890434742911 GT 1 -2270249516957082831405655425162687489961254.4719011484726360568937670939406363 2.7653995710050251800408272144306171 0.0825602696113384085634677327257997 1.0861683901607128976404486576180396 LT 1 -172169895280172417.1497258071921743110156066948535569 1.7082972626993335597539639342758547 0.0043872988903922602031136570560059 1.0043969513286028172665596485257663 GT 1 -188306636.5753172085845221215202741187267394 0.8072255021397815095699275679460543 0.0391147396773481427203361488734813 1.0399002732664022245689664025690265 GT 1 -34843150773777.9979146953479220244450194759594668 0.1033315049174825935450126652211795 0.0554782184756389883265715523999162 1.0570765308725386321087080648646449 GT 1 -49874663081.2513485267840268238668670194952561 0.1775187940605712633190106773663146 0.0389860160545496334524463669017559 1.0397663186656343651073608796236294 GT 1 -1118283047756558.9910762451865650354383465088398577 0.3012564154014279721333934707552414 0.0382424719459117357566955130152037 1.0389929099261550401309664466382008 GT 1 -16147630515419.6603426355911632246585623406318569 0.6991199819738955865844495301147814 0.0466931719883208828853416844368848 1.0478184670078050344485929300232770 GT 1 -2649427388055.4823597031338678264988663392147597 0.0507397611527104366041137291336839 0.0053347655923142572405686138222407 1.0053490462662857303948296756314114 GT 1 -1100635677441.9751627393083320141287081029113465 0.9305717223984474113574263219315792 0.0356441195605327508986684422717283 1.0362948819179235246215528453960973 GT 1 -1343207369500.4321228589329491570122577033341366 1.2824524973258936223599323533756482 0.0882328155894883975930119397623809 1.0923706017489875448696282917234860 GT 1 -7500530571019620876173200304999058.7869414789315495991145453368046706 1.3097973049193193976051491266644045 0.0081897731188602638388459401318373 1.0082234935453600710531710256346227 GT 1 -16030530229788799426596.1426877388069166947167335243673836 0.0711014210840354485299842254626002 0.0752982326621253987099421134966770 1.0782840071449638305276776686470099 GT 1 -67473.2962362371207008228400711341598440 1.0021497385584038665603492323953185 0.0640680144041947007859768919057276 1.0662124701065177150321101143946453 GT 1 -2908534340446725886052254864.5386859059657520024343579195841747 1.2657277544025169478050354084871428 0.0972900815891893616893456718733537 1.1023540192444155504181521195201773 GT 1 -327112110857484.9672366676195441069356833811608561 0.1095979807042647990874199032059206 0.0154470655875756122164154899959458 1.0155676145348597282140974991615070 GT 1 -7025800803054.3449447011084109468659086904007485 1.4357212028923253215738552403128847 0.0903082719264160376075550015887117 1.0946494972221924281420978052247595 GT 1 -1600427041866406727678191439480065.5643211714826350412126512478379337 1.8024929904006087668020104822768577 0.0771194901293554227480410857229807 1.0802555112880879203024893689998056 GT 1 -30461.6996591630875838059781757626805266 2.0849871268834494882104150562851509 0.0854733499099027345663049170613759 1.0893486698698713782090732359196081 GT 1 -1498254.8249123716808243315048378257570880 0.3471280910030462621225547408711466 0.0706240213335324536983098569640568 1.0732419087310506750208600788011946 GT 1 -15492831164980472578297181213676315417.9715371535582180488487207469709240 0.9888289645338400842622083820440032 0.0588779248605430561232419227562711 1.0606824186509667029901582740343570 GT 1 -55543910.0707942406097769119975197375511821 2.4787046065492829814043781094912009 0.0484631733339142953592148515227459 1.0496768891945002632172092028659720 GT 1 -3547462924884100544539576.2968361138650079800804335077206949 0.6347279673780510582489468686190131 0.0130133072160400025476969051817816 1.0130987221279340925909199954654658 GT 1 -61260486891620069082267606228878623459241.9766094615529872585390874095612223 0.2081326947902255019266176788947519 0.0972633139085348758918739008753054 1.1023243671011844008245205601806171 GT 1 -17432028385002068469121045017142846.5817696375185216942876000149454938 0.1663347655588103546467013747438994 0.0034331742061402508936607090092681 1.0034390810721133770333927000316608 GT 1 -155504550865754555.7733924562112874332732627724563514 0.8797640985997470725530833344873590 0.0073712885732852725679456627086711 1.0073985907718986740005432867036643 GT 1 -1492918.5997206644347656774516712693123947 3.8425065531294452014734691944484511 0.0154036254566283449710022614588067 1.0155234938267379559740971978846802 GT 1 -279095.3695075259848247045479147485989274 0.2157240078892152235684562636768164 0.0513384328485703699469718835374484 1.0527031644701713352011837006478179 GT 1 -3870231094713221180624823499922031746129740.9286327377918706258229734279350732 0.7505251775932908206132343655346486 0.0539185166348859961390795603167645 1.0554265790042064175566949477587703 GT 1 -452806.9898991307949821728623776960405380 0.1460130001033503620522950159898355 0.0032430209520227470546049339590741 1.0032482909413454320212035619714176 GT 1 -91789354640161.2000101801288093675358932382734703 0.8469606682859050316567786773132179 0.0705709139981757830535266915053725 1.0731847673595528541874783251564292 GT 1 -75256627266847373548922512206511289058.4540271454972179059549970719755085 0.2465210329885038543740769653523545 0.0611971681718652965389383342092359 1.0631497985759293397901571889000963 GT 1 -1425410290341047510279.2191382744720423197610158680048581 1.4129288555874819849772031475896672 0.0336477100344413471083983315726863 1.0342268218472967416034859843946002 GT 1 -5160000961241134646171.8591575050110518075278204765713366 1.9979854555750999756137284631207758 0.0296311357229490171119354744034369 1.0300790073193840423018291258019099 GT 1 -17085542644705275319750639573273365163.7392153002714834483746772823992566 0.0790788338079619578267755235102220 0.0442240973673423066966964093860148 1.0452318048815145726722123161650297 GT 1 -46670032.2708222941118627453304012043418706 0.3525960246788633696349047859575097 0.0088321081156541661463115343232603 1.0088713423674740451616674261197539 GT 1 -952659509639164437824093125205160698634584.4166769306451068368219548916958237 0.0333857659075391725854839896907729 0.0849221269141592953293995112860501 1.0887461101303876972909918787592518 GT 1 -8528326557699.6466081851648533374624644692274435 0.9234552118631561260117910210175565 0.0298923895358323047941836436847163 1.0303482750150891888596284023349525 GT 1 -52441535437839361725908446958831173786688.8183408267623338381671182466344425 0.2090560257066303090845701913159329 0.0546579187406445141718470477839677 1.0562084262405982079624661554529604 GT 1 -2201399.6915049603257511168316032935431280 2.3528020841015995653164878183263741 0.0053879634307988023724358963150413 1.0054025308551596608924797082141125 GT 1 -2723274439881346.3535650559769754839332932053880467 0.8805792921803780094365530759876998 0.0648164135929622095616040763360973 1.0670124198689752333028153383127263 GT 1 -2276566.1772192430263812671428462998091422 0.4274567605795783761633146868014626 0.0375126274757515652593436559203689 1.0382343323615848714147146191648196 GT 1 -4016.8369213069193281005540163280879972 0.6542411827582232250970730218044986 0.0154697616789658112816345172724742 1.0155906669804907552671922841213342 GT 1 -6619328451435422562542047805.6389757625433863560559917840364302 0.5294492241925747203733253099601957 0.0064720670490975210347415376630028 1.0064931016825326860628351602066601 GT 1 -1335433.6276691908137382541572031099315007 0.0315174267962802030481375757185599 0.0748394159221311686992520192340058 1.0777879521287065091101870313279319 GT 1 -5412834.7923602599654070030513147317756604 2.8620902357681092104521397628919173 0.0921716926006752849766535886880889 1.0967000070276421555271828630721368 LT 1 -3945947506135494057438153592.3888210964745176762738712023135275 0.3101396993575454349733754715903696 0.0599301583522613818621451362020107 1.0618011068529140646976312140126120 GT 1 -379752084322183154518012441.6871096557068825412204660601497185 0.3070173802247790636749113703679748 0.0989236705004777006546282770046404 1.1041653085363699433997860101155158 GT 1 -688122049746731859052567.6116102498773850365477018543615813 0.2740915681369359297546608012083789 0.0617524090078338202785421626433307 1.0637414085246156375940148645827632 GT 1 -77948882835009094977151269.1471800677905801344553052569036007 0.5835633370883794283283672275883584 0.0210376695551301144842554420440057 1.0212621147763104783738621121378470 GT 1 -8361959793100080949630900374394.7080869859132253977057715749790750 6.8480490013618094957341491201340862 0.0475726296420563919086928081491216 1.0487414264812916323826718398662356 LT 1 -185.5331270137370376383508552980754389 0.1121973677201789552483123844292535 0.0770128361665670076171174515767838 1.0801399515820196271576220602905350 GT 1 -232833327699260271600.5225036520413508476481290331913464 1.6211021087648620070863959501534722 0.0832675515430006068631311711606628 1.0869396176113052953621464786584422 GT 1 -499042033267.4079600522497529716843891979766540 0.1753369236604092827754132546519611 0.0034228731162624022824535184028165 1.0034287445483875299321957077087153 GT 1 -214708956780184608032784984652688325520.4145389351777310326661011928337607 0.6043362449508507054003055820858913 0.0542993092234456567120354555506394 1.0558291545215227912001050379007914 GT 1 -42151310365.1885059275423982232627633785427976 0.0126495852131897267769131705160624 0.0987335133494307348475387202979581 1.1039542974567366853443572868562911 GT 1 -10801179925441115162.9766177000527866224604877135997107 3.2308051156241660693756791032910022 0.0650743860358495746110345096922180 1.0672883101158896577214616791430315 LT 1 -49132727942102589081713346.7051917488691725395483302274641474 0.6727452824182282241520156991624855 0.0244475103136977049098640901313697 1.0247513123847108668040116531424943 GT 1 -60890141110.2133075373218619958433653369451724 0.5740310173487705589264364754050835 0.0508370090867651444693806368477445 1.0521747449475742035646046280659140 GT 1 -227089103538102059694115768891.4415899370681303427917224117700800 0.5842864596982619938317311951744015 0.0980651670757292752360669671532772 1.1032130088418146166719362828554858 GT 1 -1251835673753898275559050.1697716589147962067896117338441750 0.1449936595067171287584553682799731 0.0926228211244723696181511848056721 1.0971970620844897535094657773098985 GT 1 -34475060038511947952511334577334.1510842642037589184714685632004414 0.3440072864169588069683562010308206 0.0354222079295329326112418544762331 1.0360647945539655198304989328372064 GT 1 -2768048982477321344222756955716538053032.1377065673077485045300035950985813 2.0431077164315006742543165254156497 0.0649577794137795578168028888628556 1.0671635950057506698910682313024851 GT 1 -262894563780477451695554244838291975113072.9244426139339062767627630740199123 0.2233188895046882305686261809594764 0.0687673622065896632817554273755742 1.0712461534423994512525283118122437 GT 1 -16665586464313458555494164205605396.5192607846602677803285771017554988 0.6466757128343662409585132834703170 0.0595004965663912642801840952254482 1.0613441582224686181026510828966434 GT 1 -546694077690.1898592769360870206113505269161455 0.8249644670368279903394873016288351 0.0403004626615657195289375682551780 1.0411350254484552610429494606735724 GT 1 -133115720966654.7774736366853768369060317625635066 0.7209338422461158853789387647523643 0.0557313106994411244519432610722944 1.0573445248392874927876063018936065 GT 1 -383339943246966371918.3538159522290152939845289467369654 0.3443891614281528650888178584742188 0.0086207556346570848248123489698513 1.0086581292963361156208521794258960 GT 1 -26437158212225.9677206242500005731871633418360769 0.5623685294638268807132525449804494 0.0778007591727931557210226182643163 1.0809939824291215927796652976969845 GT 1 -16027962.8114066830898863604715338995543341 0.9221060119707014481432424239464724 0.0407596678624292690042681517896148 1.0416136284697728980367582083894044 GT 1 -3944715011818528436707139177387059239.2728666073824604165485562180733457 0.1062925474671694997332466313431118 0.0066971220375609610785062552332392 1.0067196483901736169183568137376498 GT 1 -566593180572509196933053884346997874.1226654147117796266466606952196278 0.3387865355830430198426258557009914 0.0361992789769314896711729299481674 1.0368707266717349284072685425222344 GT 1 -1740192778547180.8079193762503584106734939426429823 0.6070743891665166557955572458612892 0.0610930473078976951293157356972922 1.0630388965984963126648379821222067 GT 1 -119145417946034865.1124548348323697335806043571467180 1.3202242104281608325947389099852800 0.0200614531002244972453965991314596 1.0202654165288279784374950932862999 GT 1 -15317112068882105140559680534.0106562382358060173529711008351392 1.0842841002351719429517723980818687 0.0428991123812005625076919124561411 1.0438464723762559552191784708916261 GT 1 -7189267235843099104682005320605566603144216.3644959690560402838527855905821723 1.6806853608403244638583137119069008 0.0219393708186060965026629870739830 1.0221836178407979396562077415121464 GT 1 -3335898267912868583117519958497750121519.4297302900698835346402839154429063 0.9838007933910897166997931739160866 0.0600705727821675758476123060415656 1.0619504839643764727424532042139497 GT 1 -557991952839388967477144788525057585.3855014986880879503914132294543451 1.2971953370122618339444565069699528 0.0890977646314473107064063967206370 1.0933197032124796317518818409195163 GT 1 -3874538590.5772751574873432462969094230190379 1.9735710469057687391160427658201885 0.0481164751902593677899340895182798 1.0493125995648131397955653107317061 GT 1 -7325804651.6391171467896820853517003406571070 0.0465228174486077015407755454069593 0.0420226850280562297813435111814092 1.0429311808616380155734075234917346 GT 1 -251345151497.4959178977398164263531259760469853 0.3974630321471564441307180726418878 0.0644117629390586196725900224420813 1.0665798169666456850246976815302782 GT 1 -1178925204191041035812.7400583499736303821261700033824197 0.3240122199804256864920828136950802 0.0703244056562314812650298684198700 1.0729195769741000686371166679443351 GT 1 -53513.8662967023337835123370504376958155 0.5893357955893393528864020918888056 0.0884919550040401477152565756054596 1.0926548587959952247674591392387172 GT 1 -480780865047395530240442629338984110764.5472990515259447355301970991816519 0.5627993143159607749659581600137211 0.0939070941228644634672345798181026 1.0986134330782978068076177055083230 GT 1 -234730494.9382448925281025782397326560001932 0.1130591741478419592477667670592928 0.0251577503981783390739636695643574 1.0254796163547411134679839538474018 GT 1 -41240125647680470001994567246829467467.4471914662053393114043633294806531 1.4765082247772951464620342583952881 0.0360943136757286965862479164681954 1.0367618249210259395989483259767257 GT 1 -9434758229432599227346709004081690765417.7958125073640381721037415344868278 1.2880163616172923220844694769421915 0.0221787368057456656440391667182941 1.0224283831195887428791786662149713 GT 1 -55025199.0805115656006677002069357208669763 0.0363677570568662505409005474878760 0.0421858906958420703963588093853332 1.0431015602318685918578397065314998 GT 1 -67744375166.5660919425810117022016474214101923 0.0538174636361115769422247914366150 0.0047042863881228806023732432430059 1.0047153863686732389363523564333137 GT 1 -190914199753855172050493035598847623.1872583501802013119088239902510838 0.1120687842239268109035691163145190 0.0691181613971415189103457534217546 1.0716229285538638044921406874900833 GT 1 -312557.8020329943058468309055594078053661 1.1966889762365762040969644649125145 0.0483875088154341519738015390323733 1.0495973741319559718086365875389185 GT 1 -45169786343716901945375333577459890.0957002945911192901831808780080140 2.3447427591086037335193533338678270 0.0853625022004981815814294102444318 1.0892274694738674050468351104837558 GT 1 -262451600099262014611510252.4002374103412896949253724504714359 0.2556414945625378210436710029074232 0.0937807117606044090144561607025982 1.0984739622267798313551385383066255 GT 1 -2475844474181731008435299273497708174893.4492793863209856267331554385316056 0.1482387952309636505495765886741658 0.0625485976883541353537631644353260 1.0645903600154269941894706743262870 GT 1 -31058708794047005185.0138526503265252195915117974496551 0.4667306483872594012885516527203423 0.0377226960478430051798906578151978 1.0384526121081875394216170838877341 GT 1 -7065811738153194941336697057957245.2330630540951621597877851657332078 1.7434386189111700256845395528727991 0.0367814408577692034515503606024542 1.0374749364007611647167227032846852 GT 1 -159621513549831055531684225039263150.4703289108073639715486195634172207 1.3530539391288253816690789745374628 0.0615429628195098959441806159027552 1.0635182021808475922668520071610726 GT 1 -128836309514831135862764.7803119553985954784269174114107457 0.5981494098005175764081313916349440 0.0216147358791481791354555201844321 1.0218517559236872417382163540795580 GT 1 -690574345914895.7907147371165497185658903454777327 1.9352019162509251901083566044127667 0.0736761860198480090820675037468638 1.0765314143403741033671079024860107 GT 1 -27533.4466712071174380622104007924084715 0.7590734655601381451467930115911899 0.0288818422124916278331022405984369 1.0293071313921758879534225503254006 GT 1 -71511448544040.5956605964432025842039261658784180 0.1881105554280767493610234056908454 0.0245553740921883681851847321909946 1.0248618853606916287833611916305658 GT 1 -71322278714.2295759496656623523852822979593702 0.1841397366779551242106736407268389 0.0298277018677077281083838776391409 1.0302815963179981729150017566309931 GT 1 -428.0083648934864701464484428779548755 1.1893871510008533536995247329486221 0.0654789663422292107146917145988873 1.0677211444128305759271362751595436 GT 1 -24568901741011695927796326.2664524012421828330879135420877485 0.8364355789447110195301626896407159 0.0530380984108242524056797009164635 1.0544964172397825954860395342539913 GT 1 -302842515138390973258975031383569.9435341615927034165487514348926267 0.6160224090703483077295639611864401 0.0343118338813746383967408197464483 1.0349143062847982854604877002509277 GT 1 -209148018847997101473.7702752871766826190669828844307358 0.4417159528503763010447388335015614 0.0422709360113937348864647497311673 1.0431903552188918837227522776115856 GT 1 -55497226250204195764923864480609.3283220564521091162802628752723659 0.2731015137644780922945310349961489 0.0369656259195842917501345412183947 1.0376661730335000132875498885733879 GT 1 -3.0694411581005414752222922055423838 0.8687746959984895566255487584417651 0.0736422518695686373203010382600019 1.0764947818710095260945558518025235 GT 1 -3138165.4254539768275496806600685049129162 0.8444375517639849411888308505773596 0.0965579668852815216943468577431305 1.1015433291544858745116247994577804 GT 1 -854723448645983261342814669.2784165486847991148388094031056724 0.6765199946297304931181493249431945 0.0964782102143552061022082754327026 1.1014550521563884891623023199518705 GT 1 -4836773572412171494378520858773264334827.8962412730471080843758270217924820 2.0950387582194711264767870058497910 0.0434154616792439047420706523016678 1.0443861110269713235238027541633732 GT 1 -24529931.8535606720794989225259611375468416 2.4630077055149244891229604870749597 0.0385468757161287522384318712079698 1.0393094678366355839102926951260835 GT 1 -8384212.4311083124611127871783862499559589 0.6307101739481752561861595935608950 0.0164588382532168335906059596788810 1.0165957897189103195052732074745880 GT 1 -326.0709464228185240583462743161622220 2.7181070198679409668677804605208446 0.0602671481557791798971841815778244 1.0621596442763303238836652725634360 GT 1 -745.5554436530584501968191605578543548 0.2309771510626484537968583646976463 0.0284178653271451108139251691761160 1.0288294695562570953314201970968750 GT 1 -8670.9585468571229182567871686143712915 0.3550474852252014487991819070642062 0.0011091376776457148716046155324598 1.0011097532260337349982990327822848 GT 1 -2507079953244553717949177.1591103915713557009077000790825968 3.1781914846874620643955613507317859 0.0984722876985946067696920044434448 1.1036644965989169404773812557443951 LT 1 -2245305260.4763418907149665038729563370156351 0.5654025125782649268558786020154571 0.0500642723593286582661206398827626 1.0513609517913438592658366210051422 GT 1 -50047542977814412129967639.4179978255367920817922260049765136 0.0781793999755854392199796088985831 0.0293908475175829891431802705620898 1.0298314123394112804196899912053367 GT 1 -5.6069512787746249562976554599958535 1.4759565840336970029342116055553809 0.0922073252696346268140059666498929 1.0967392582472685339185784503425549 GT 1 -702118722922323655161464.6831013849557084886944545132556701 0.3840652941007762259756972599591511 0.0069806980518468562107819436328171 1.0070051771116272966397478550622635 GT 1 -128417481666096180.2701345350805182130382067650477258 1.4970401803459904354394440477007433 0.0642190317737351727991274648226012 1.0663738381940332663334867306830535 GT 1 -855088447.1192605089465806009045198880123430 0.2923114386556571284824932807754569 0.0381828483414057333810878015221880 1.0389309174231823944841705064047608 GT 1 -162133457017.7493730868556341860675968569408225 0.0435014626791665797773535975506026 0.0462864891372692194220408930742764 1.0473919557127480148816220154479563 GT 1 -1610946707697165573913.1020257218388554770362632555865747 0.7326543048559975228007318194466006 0.0584373387852282270146118653194956 1.0602143784370634746138777059648445 GT 1 -658486914994937748827589605479869606.7243336926756958796266686198174539 0.1817133476809172332653905034498835 0.0343839685444727670503903592807699 1.0349890067522050028489627917144022 GT 1 -43.1854388756431454546251674714597721 1.0113049691152527129529383559184057 0.0578453520954177553628250130496584 1.0595858481300654037321465994467750 GT 1 -23.4486443712327362042891313064763926 0.5434557690771702874247010355232236 0.0520363853375494193807538082590369 1.0534391586214432820940056474618948 GT 1 -7453620705.0287053561901634285156835720285987 1.0938332111753308943236231452732010 0.0710514340829469011059143806516957 1.0737019066987865874764099794685867 GT 1 -90548034082252813087813781103.6287098917654308571921292879120361 1.8901525565661227508786709744902929 0.0151085094716351092618395699470281 1.0152238057784531237169913666504473 GT 1 -169442095152755320206505725061499533304.1438376002052793914421032144795939 1.1227685418471497275094477942545908 0.0825736531895120728683278116007053 1.0861829782315701791224062685119046 GT 1 -28988744698553286194.9218806769061647828428952846968279 0.1797850823289038900334391719609372 0.0720097715879715620175302601540166 1.0747340759797920887084075259782259 GT 1 -17122438379440963054270815097186464.2118896128931238380591921341605819 1.4797509196381019804342951063377947 0.0088659457712676482059186626437916 1.0089054821267404050567758402787286 GT 1 -147649608410869002203681604359122918004.5374240645897280358342811801371007 0.9990919099526958889896884356351797 0.0510487346316790727522375356731578 1.0523978353596412019118647145262701 GT 1 -6065568560094653245032915746738405102955.4463278646546505076931537917317392 0.2544789223337199859585101509299782 0.0586313431021693436893097507541214 1.0604204447080542684644598395432138 GT 1 -2264112013558149697541932153532833.7796613235591250509145971683018412 3.1610531538340496339387836778828460 0.0288521948483618867690989670561212 1.0292766027573774079295605883578807 GT 1 -4432500078148197161295086559208852017580116.0205796074563527799229414561431819 0.7915656400753859965859797397490952 0.0646115220253889528506842351368737 1.0667933515183951139423308173060260 GT 1 -65449.3783211735570896869806834338702591 0.4233283893647691504187599222162666 0.0617758569631737407863958330045151 1.0637664000605028268714807416778234 GT 1 -3215929617178607332657607810401794110.3733530187824222616850748310763669 0.5163299032533427616926266542498585 0.0521131978669074653050919322027928 1.0535201908893053308800257873970732 GT 1 -212340282892154926812796.3576562404633374233806797507113925 0.4989506653439833183253703183328724 0.0858449270313339767280422928825098 1.0897550578398059019525822340307440 GT 1 -123450922564429161752436.1877354835563244716839336742282819 0.3607551745406147760123606388420379 0.0098039933982945695767961910735317 1.0098523689838662028183452298882589 GT 1 -1819888182609720885368363657891265760.2205798355757255301033986501757109 1.4740605571214319081345766090640036 0.0299487479888710733106911652614968 1.0304063717556650786965315876379131 GT 1 -3429899392753752.4552558548314323908744917301717522 0.3625983456145993561174544161921864 0.0313489616124755070513550955940079 1.0318508574552029770528097514929268 GT 1 -11019427858531612.9809649691361408555603467350753653 1.5592797910027197476071564548313957 0.0801489315440954246022270233071520 1.0835435041565217936876201106170873 GT 1 -8605696731916273643251147596.3054158097982546868134196912239020 0.4141845314873084244755587410060805 0.0394127250937442963346223600642146 1.0402104368657477027835307793161913 GT 1 -5795048843889958183685653057943020481.2189008873035755028125147466339209 2.7283715473084847466597241203519958 0.0305655539296035108257854264379117 1.0310424228099597239757261297851501 GT 1 -14032797362642253181818486.8090198481221185701395761192208110 0.8493546239110316956105475538274197 0.0393332870061072135379644466892791 1.0401277428667422159603406723543128 GT 1 -1936393219352234.6611120931418279092666730273075046 1.1611685836981094616272479053913169 0.0994902279361854343511059254401107 1.1047942626051128338499701940316539 GT 1 -3918494845284447680801373.1450299013978911098027938749158973 0.1824762231776167961647558986429251 0.0807681077972353848654424473579559 1.0842168574415883728157401480915287 GT 1 -12732908217586715080.5959239002688764907764147794075932 0.7679660540178111295697118098661652 0.0795203927962807490821378710973652 1.0828604325970822075347018281317436 GT 1 -6879267253260739494864104576233.8556725039186500087089012796688946 0.0191617446038446000277189821865150 0.0333833817156272127670572144540526 1.0339533272045907882418449041322095 GT 1 -8421267599588645852892172262989713.9387754344214257109431568183206575 1.4019781678145710386791354642752861 0.0762326725286147110963496753054505 1.0792950491458417498482132830486551 GT 1 -9441103712287.0299653067960729946855347455351521 2.7291297746439340341023464206029280 0.0151292953957592852470300463665406 1.0152449107871453513645358802904534 GT 1 -8105806859.9602899447719198498351429324938272 0.0668591088278158724502025058805112 0.0055943322242101993534731063127039 1.0056100391078022599657242850508263 GT 1 -140786804141476.1260689970323715920101368926985596 0.2118193889081034585590334458488191 0.0011853826087674471791479884834272 1.0011860857304324161054964732933674 GT 1 -171782504782442819201967278.4331975852103993321220764661125046 1.2024373320067985215979887296070346 0.0610508895641338097828248226272419 1.0629939967314631118817392446755712 GT 1 -594883149894.7387394574904340079941567529310018 4.3945567861776759796990704527985887 0.0516548395807022715010134479181587 1.0530367497236840712812215558928592 LT 1 -236978143804766542250610323795151985.0203644137402467621830402390075542 0.2388988051153131989856753019795740 0.0340793642929288509591206231686708 1.0346736057978793589951640828386457 GT 1 -2027543799747906214211392551555121763515215.8471681933728900260529581938221754 0.2779777397852378345094416280236653 0.0144819754881488875065073671733002 1.0145878628439318682307816984099227 GT 1 -4801740422287915638663621.5076665208979872938427304397184349 0.7799182345154868823396753953165839 0.0337104574092670441595940808269765 1.0342917561499603129632213870720366 GT 1 -466048049402787472304613356956.1349973601746889749346578450984612 0.2284578901123275134462337803397042 0.0312471548249363027724192672897394 1.0317457613639886831137248192280319 GT 1 -541.1177723057489192342841749671043057 0.6643750210887839368789087977652641 0.0645820666281217393336296346450351 1.0667618619991257766737733878143942 GT 1 -217528249167265694183401945.6437849215845904513665780666701633 0.4834674354075729610540727966503488 0.0698778148630009924112306630063220 1.0724393195969362863351157198521535 GT 1 -863111.2278741930708168876922425204644864 0.7778699248270048472906703779417810 0.0058971381959569168430882796340123 1.0059145949792837320238646283338692 GT 1 -5064516370.4477761382071682050403913930755749 0.3268669078350840653124160290143241 0.0950673993492980282266409816776744 1.0998948124746820220986509257591852 GT 1 -29039287120377701.1502787377597233243997806955390273 0.8498162949231516594101118919312911 0.0836775862082966333591713312796901 1.0873869961165312304459488254423102 GT 1 -16002723680210275474435580259896.3600762854020693764501328472609899 0.9592546922660540197963637920646194 0.0242432375347643967120492224830619 1.0245419424148260017840381461408122 GT 1 -2159.6653432715933960676411910463794709 0.3718952863855095183611969333157305 0.0724331804313515595745652819682986 1.0751904444338791942016170277317754 GT 1 -1701492625772892587487918603092.4358340917827064296691955655735584 0.0128100482520016634012728349531266 0.0503546550003954635285616886718748 1.0516666851422506500860627320860180 GT 1 -83886315134024897121559.6926054392301173989506896108078770 0.1068241434786383001720007101643699 0.0472533004690455124346473626733503 1.0484062033843072466615506383197976 GT 1 -5278514154.5164267634763932773448044667796461 0.0836121534441266558066932050096762 0.0673756461693142753813285251294716 1.0697527810407876669875933880815270 GT 1 -1230864487877452284935035508928622.2946693060999716344036237658310504 0.9512414367385629790894609496018038 0.0573153142499088717082635208239688 1.0590234258057679832528223919017754 GT 1 -42262109574312423919697839518729827427787.5420195031620217164126012493762724 1.0283603974000682610856122863581734 0.0433705750771292753654269934059188 1.0443391883063710983357338038854957 GT 1 -212756399531073842817743850182174.7264718360899250538927977254683562 0.3775949546910926126362227308619975 0.0997043406665561921617058426545565 1.1050320592350503425230997866529011 GT 1 -63459104367674623424571887197877.9252444605122324503335296142147528 0.5217772837244658054082646730791100 0.0546525022054001367863452780917685 1.0562026965477872892324045472197507 GT 1 -4395847537951831288391281457.9353318834514204794748333791689721 2.3218111759638438820906487389271513 0.0127364073233856629194067028323254 1.0128182106887216772405230631037469 GT 1 -330146943381582441321373939744472295.0551213437368604129473711103202866 1.4296898847643913349439176848819460 0.0119844476885790757596904883429471 1.0120568401522690947607252903388664 GT 1 -239782670568563948170199529043.5460090594174007078755641817475596 1.9324905697390859028353206256566453 0.0349762692781131241283444556717031 1.0356025865238707468591869661181983 GT 1 -3044772095457785534710624251876705350991382.4637411454418391996872880579525531 0.7865877645735921039212997881278961 0.0055029735635832118840884865173533 1.0055181707012109277214030498447105 GT 1 -20560201036678128381978486305600299.9844360409992231397786123205748827 1.1493705511702157906411527487679049 0.0228350964889629617277291812150175 1.0230998556026752220392426799776678 GT 1 -183029674728549835013906165.3748283934487384549811433186331963 0.1355846585674508559486499710850827 0.0241923783495315129901913929729280 1.0244898209622535385070044305218996 GT 1 -18084959478897279332069.9693182050234755494731397285340208 1.0618161705661489256471384815187656 0.0774551939963921341501170763996150 1.0806193340533355992963458918196644 GT 1 -39347832061549316287217996169962.6830819786521297458100936227392151 1.6863717391403091138100964634003130 0.0951761471103814516652557828911911 1.1000149919176137762029956937417845 GT 1 -172640626844663707977489491817892.9656616885594934221007956978211725 1.1737879579854188538719202458415398 0.0278640228108552279626358444000404 1.0282595900784677253584195355329198 GT 1 -30603053.3955427396040905067634604493643073 0.1409950471399901353414295219202793 0.0672298549501245920533101626786963 1.0695964696336574111174067122585027 GT 1 -137760115977018389.8202970430583793418794787987649730 0.4862856542615718648537079585842779 0.0640864718212971095049975763012403 1.0662321911967115187054022254040775 GT 1 -2495964134639816472747074.2551510526643551887210624087342467 1.2411143587837452005156924843770921 0.0814148683969940915933587098186310 1.0849206931532839769843423735383129 GT 1 -34781851409230982001726077547367827.9914747995317817226046305942283748 2.9441512459956418294776570847840952 0.0762390215284496695394264701553863 1.0793019221120794639203657402083482 LT 1 -1315213210745078389670213346048109242280.5770722218620377568549128615530415 0.6393093994417683900875597570406896 0.0271519872075433232626763660929262 1.0275274137327613790851223303001546 GT 1 -130908397936960465289799300917.4712632110720529441558540577708281 1.1259390738431996660286546414855268 0.0015942690820102069826624968206026 1.0015955412812949184088903464608571 GT 1 -134311118186624263.6819474626400641797046962804281699 0.9405978501293265345854161696889693 0.0432231988986022334395537280830441 1.0441851424202293954116228408637780 GT 1 -360445068802.7464100110194328073432724937753940 0.6113004493122479161678821600136842 0.0735116028339313640680602617333565 1.0763537566313419372356197143873460 GT 1 -538511339002582366814103057.0612892526026720219242005964542805 0.1008186808977733102252212772292239 0.0502162640213327125770709675523098 1.0515209666411562514775818207922939 GT 1 -7978.8939116787240515175693633659740968 0.1038485263999152300622948959943653 0.0360924759710178116502272233987787 1.0367599184036299427630316945518846 GT 1 -2836802835459554250138.9110380400995171714676495102182427 0.5270550284673950939898511351231354 0.0689280807548517786962586110061593 1.0714187552309239799181827634118491 GT 1 -36778591.3186262962209548849562051824193620 0.3105519514625490152469446242004084 0.0421049337510673435498903507761308 1.0430170411975015447005507089311725 GT 1 -169552877705335684778908758524200245.3809430218241319409965135880550300 1.1153752508073260745589326795844021 0.0905571917536502947115740135552095 1.0949231656329866890886743251073305 GT 1 -89106577648062263.8893174431560622442016423739851797 0.5223026556901781182325554607702881 0.0854745478999837285056816448848078 1.0893499798271761041193687233374870 GT 1 -540637424.0223019909556407339027226773370381 0.4076116784851439920057973773430066 0.0909876394684042436186025918015809 1.0953965869525596412739222407630839 GT 1 -447823046670916069159483.8214951617690032444263826642164966 0.3970004913930096784365998667729184 0.0993440021103428049804879861329412 1.1046318946225504547294944657072680 GT 1 -103233334351.1615109234337161334308467478790947 2.5381324374291335149124767920651136 0.0013757144631750389249042721527088 1.0013766616271015368530197070543848 GT 1 -100525301530.2308373980739426491549578330856942 1.0174940872442373098211975254370836 0.0787719079299054570266187006916236 1.0820476164179687831811945330678046 GT 1 -52010933277303417273780513250058358607537.2915138516613253404654646669049267 0.8020859846925790605974695148724201 0.0769572945298983739950738081315287 1.0800797774346681029020035365808001 GT 1 -489938477001857200950.7432947337412087377413305769823073 1.9019401591880038710508509763326280 0.0891707754280718027726811754262378 1.0933998586012063192307779243398618 GT 1 -1356491987141381815218422.0164866014259924121127878785175188 0.0435453396414352072428430268480389 0.0170130070639961822214805526450785 1.0171593909306487600647994608575325 GT 1 -173819682487997648048609690496093.7076669795136716174766571007562029 0.3085455105831106834900540154753301 0.0835096360412296768209253135418240 1.0872037257142556795124408546055462 GT 1 -28301733600401.2016613094922064649046576458949107 1.4102455808289408293195927916232355 0.0526005893414609420166902826156165 1.0540345105545969445607162531757961 GT 1 -25411950859015082661141884659330.8737591697455974321745159839316449 0.1109656223139907132445054424086943 0.0606275282402948455620936334625474 1.0625432098853541244591069873702244 GT 1 -484441000995212135541379105725556959793.9239818722465540589035768692986017 3.1309680260635834781762432819200661 0.0217095094948248106886804551007975 1.0219486279941124817684079587455026 GT 1 -415696190315935018811699582063716595469.3949440413166944787745772937775492 0.6367212241907993252162682636980033 0.0300889029623531731774413339075708 1.0305508642235675298824526260464337 GT 1 -44978358400430277628815166428417124.9128902972428970982183242819262914 0.7235216107078893530908958315180579 0.0848666750559552958663107763544492 1.0886855139999731769466094834715862 GT 1 -148654122200037876690160125214531743045188.7147178911351721545804869426441307 0.6952338035157991896027851930630260 0.0085392742900448998306971072538012 1.0085759427902259373067603214566466 GT 1 -27359093910481.1246476479974988074420360485214068 0.4526090741644483962723150420461366 0.0170883495949976437813931694405204 1.0172360403869099493270355978984515 GT 1 -17658876392773085757358486123.0600890641603684316735749171611392 1.1031718330117014645631557492724747 0.0143265625840277548317306247028386 1.0144301786134095234958390137284911 GT 1 -14559676073137534276469.4800861217977890794607077010099910 0.3023261923046519703608128517589044 0.0491090386118183304017461172770886 1.0503558798051011664688171413445136 GT 1 -58182389875555.7492367632327519018266754915664516 1.8930302310567187196907798276398366 0.0389981625140194965269554717098084 1.0397789579575013577939180841882173 GT 1 -13102317684586402799695878967027.5334415405202670228493658114682303 0.2095812454406720004102022239269086 0.0979869644183713270019150562090507 1.1031263071596072395995646532547908 GT 1 -154684583054068708.1647827767189917304253624029647803 1.2844741885948448592569775068715566 0.0944240645004745297883355212769642 1.0991841448770934196978562709249953 GT 1 -15471547278317301043286169511.2474690065743343514162191874238757 0.3212630873184356705361882774496660 0.0243946724603592437132491971514499 1.0246971518725422515445386352961178 GT 1 -1856971245577821554201700420874769574411090.9462699653879360609587383580980102 0.3282702422736334901069859065211130 0.0615508464821899804492774426255060 1.0635266028805940167420371448557322 GT 1 -8387.7996871616787591556823683449694715 0.0848317964579143807005868082785516 0.0507246795228633636626140280065020 1.0520564060335743035054133314305955 GT 1 -226147937934377849735242530285521904037044.0939097270498146248462079650382520 0.0666713769720804788132174472437144 0.0803189100984052696493129755993250 1.0837283104443829372098912534075324 GT 1 -7745778457838444946352640884927.8977585842421274966599034720298239 0.9578845084719818872618275973851722 0.0412780282943996645293013625982462 1.0421541609333700475434031573354795 GT 1 -35438611590288774.2223747487615100082804647200561784 0.7211413252361002172571076574703329 0.0234046385684406672491963656824071 1.0236828770775513988025573319758761 GT 1 -2174724648965341769987506109.2686479272232455046917784840179063 2.2430040186219109155255023860645399 0.0658911077587366803413198102732093 1.0681622605669477934626863376370569 GT 1 -1667275709355687772.6367380165793300060014194882040222 0.8776294149574528424775212945072308 0.0561148525178626790727373107177327 1.0577507860413411632483636748742432 GT 1 -1299666006161366044462536416847488236483243.7755916698463906026795842025482134 0.6030376601357328862063761907316431 0.0701185604031794563459696474105130 1.0726981852661441175046631297213284 GT 1 -25336.2985285838700732428880729718098706 1.7125991529870030156026428609029009 0.0320800500450172436961468107202785 1.0326058914525870020193502110543200 GT 1 -3.0911444716332326077897735787169227 1.3303104823024633977294866246222099 0.0345438633032334740570192168027394 1.0351546088066109884541940086986870 GT 1 -16653863037676696969874567745859790084031.3870889566442200860445092378698979 0.0421972914935326035186486371100402 0.0497643838793760072313283920572753 1.0510453081695966929445526240780391 GT 1 -89359457280220287223355768608766187217826.0986237569428317680337644861354551 0.1805443044346353122382012070359786 0.0889247217599342717429304739322568 1.0931297526003114174823181053995804 GT 1 -397294449020877373300142421860890552968.4397606264278729361047985482405245 2.1610658017850809068861044098021302 0.0713982483585295690291829911571109 1.0740753170730135968430838115142240 GT 1 -3.4007938916669195083672036892033810 1.4074757003575869766906998837356581 0.0605713251733453010621627494745613 1.0624833812365709086391741868680951 GT 1 -146350638.7639263048136211524194556654734373 0.2113354134220289590596872576427597 0.0188094504429822010926946639299464 1.0189885981596592528058870385975309 GT 1 -156575496308906199102373373677600.6679312477118438493255549637398283 0.2815512236774510900704067529771840 0.0157190213843064687169958073247492 1.0158438753171033870526687038292033 GT 1 -98643.4589289260499934095212782023076507 0.1961607560061807789222126564963097 0.0362191751456168870258850696078855 1.0368913703313805150522502525105450 GT 1 -13035255236535465967868259999915.6845447563980782652363504859376785 4.7048283173769714395772002940662858 0.0751405267178904321527113743730630 1.0781134737869396344656934320694477 LT 1 -7281381272.1041311433086012266097946236732460 0.9448366656024238019280856481371377 0.0907280754354387739621896862052735 1.0951110826044704305259463178191296 GT 1 -1406969344324816.1361368594824881943301896784088560 2.2046215961277362350923859555638652 0.0548862683826499195318885830279293 1.0564500078121542209703685336267668 GT 1 -31120238567993289125804297967141375.9955459430258879507298294563717599 0.8680008397964449800452800127133140 0.0404415725193503665155050643359725 1.0412820717138614979307814578409062 GT 1 -6017836686153357509810282.2703397685168752615980758259591576 0.0702722162624934207647620937838976 0.0359269356836139564915189338423860 1.0365881943844034540326387168338489 GT 1 -75645359301262.9830104099970531291893003324728499 0.4589562144530757611463395926618658 0.0033282001078166500246693918112811 1.0033337508852828636318561568989300 GT 1 -47670883023906299227373.0937243494122333808764088547853759 0.6943300100467338518247686370945853 0.0266800279292497055046846354036906 1.0270423998067115089617586496824328 GT 1 -31345331525.6179562595954437968394966116369659 0.5844797186920527128815593493060863 0.0329207702510563023945467664152488 1.0334748533289115666318865915373139 GT 1 -284698321892707572394.7207796745700825853301307990691870 7.8411539358710733691436349571308858 0.0546769015204686818504985281258565 1.0562285067710149443510979020805658 LT 1 -19793068156394417820648420851112.1049710644319143066535467511736988 1.7544826148686097309215868680933356 0.0981786769404908044756293200839636 1.1033388682763449553011631133542520 GT 1 -66252067.4895954976349791518168815503548789 2.0314079421351058788750946142409373 0.0498450349595358598461862428697612 1.0511301865951243513833752046165770 GT 1 -15.3794176266055937872772302713570446 0.6434146491637835785489614878947990 0.0128478734096223083366374958058979 1.0129311211414367202939527511622060 GT 1 -194756929332839543119466356389.6058308885831910738199827502309288 0.0241005470600032395662808225738232 0.0788130161590925636649250694044014 1.0820922407045710862935914571854039 GT 1 -1725768724.7485832645659017068661685921131122 0.7650026511384504396671080218866331 0.0568246275041369968182648191158808 1.0585030406852501264812667697081647 GT 1 -359744.8016325725024926532489236711813361 0.6350076730614283977089122697007812 0.0424575273805693764740362068481183 1.0433852010840337253266379173277838 GT 1 -23537694247809892.2887750491456968327171783985257903 2.8078298419526342761967896425387173 0.0994540843579327709219331061231751 1.1047541266132007195146968567151772 LT 1 -2720414515534851202852168660.6163022605454852522539840416274510 3.0442289393036762464483891491928101 0.0835795661488698272148792335036658 1.0872800306907527774790960716017755 LT 1 -973830495265995120708233207047.6738369894492010115182034233045587 0.4173208287320528985448215855951665 0.0522854029855689797502133848242208 1.0537018800558280804117772143427673 GT 1 -503978262289059705871522163.7656766446853683701899794125457780 0.0930359777327188275454426745985346 0.0746489084327651943988662284086221 1.0775820550327342971002930388297680 GT 1 -530922026860183356701649522397517.9164247699494543843006703533080667 1.2936666989520022649924235272069303 0.0946067264220225807477753284998260 1.0993858732347616761556824069198006 GT 1 -1156898246210982378.9280912196883994671465703807522605 0.7655912003205235005908065137705893 0.0478932082613903952013428428573074 1.0490780742860322391689484003346101 GT 1 -102825636683625063456261124781244.9597354437438304953606280101292991 2.6915062393389846754156043411603711 0.0446951473622271468278772173744510 1.0457247720186961695397377182719875 GT 1 -481331243550277308.5286013360827398354068161565207062 0.7117219441923943551629460304141311 0.0944420107795793837959881620414143 1.0992039626043862441409331022227411 GT 1 -10769557158685854055510664.1463407995153865084371453677041006 0.2053403070186800090372473166843694 0.0208083553975458202190809302743568 1.0210279001419612738580243426128349 GT 1 -168533.3580020667371943224839335234878138 1.2485070415779217159566772761345816 0.0941682675590315020504692956929656 1.0989017159709221363317900080457696 GT 1 -2191851995276544567978295083741558.9977408014508282025884170221821340 1.6709917014746349891835403780435515 0.0015514896412950419174066701541459 1.0015526944476728923713227785408734 GT 1 -281328751821686771381.1431974551818548663704346953708725 1.0485839160509977962500155718704588 0.0081387625067857770029781169076431 1.0081720630408618682903864852183306 GT 1 -67299584723426926522778.0288275311542185915116603836069648 1.5314303628126191191953518875676751 0.0628129171204170686637253606049570 1.0648723551157116813711401057263730 GT 1 -728746866906.7585265641804025630192730977716010 0.2487762157980737826326942501017664 0.0560532339325601194633928152236250 1.0576855063044300694113818246637652 GT 1 -1068505217466687367499638380259125.5729674854977170215880445528481872 0.0099829510945238125626726396768807 0.0210067114352446907603474173888755 1.0212304918737406409116910709942541 GT 1 -786773390152342324391910817427.7752939655428548694875723092123073 1.0447466694244374369801670712687660 0.0426678825544843756392364949309176 1.0436049075607425051972093693605320 GT 1 -244747545.1718755543141938569271141707969688 1.3422635490883187717880877312942433 0.0548177530752555371442546868440055 1.0563775161936964284038232887984263 GT 1 -150122206.3149308643877455417017033246389973 0.5334675255629804871394583054001858 0.0997848850059902133684175078294877 1.1051215275577465329734394633067117 GT 1 -11873185677626492206.8216950863490428382505500291123510 0.0819849332565848047818176269676188 0.0848970239559034498946881766808971 1.0887186779143098670269597211468757 GT 1 -8467807609466369961056304.3985368632386561415650946757906968 1.0530212607157989398530323820436213 0.0650293011897787711012749473360851 1.0672400883553871757131999848245819 GT 1 -26526715523250.0015040661204334558563693389541095 0.0279444514638577521496765688062351 0.0267525137944183301397575945319954 1.0271168753815434384566349435098043 GT 1 -3407689890418290890546089806037218328.3429653874553794148642433339611920 0.1911570977796184154899133311640787 0.0773817484436432364877079951882596 1.0805397253136236624227206614817121 GT 1 -13081501326333251059938691645017734553.3514100357250682943041024318458968 1.6719487491359858483717273591674971 0.0690145334185301069927490746166797 1.0715116123731350606698063981483979 GT 1 -83030896688129468984.1519280848300548347068453656384729 0.0589271562003255273135177091769932 0.0677469631594326378274807266653354 1.0701510023896900420797319147263639 GT 1 -5224130092564.8180084340906908904304770711378347 0.3764593537898360749688459996680960 0.0558157512610131314665209315610109 1.0574339531326035471492093321817379 GT 1 -5182187825419213542088969173960952170.3586526485203596821386964177024957 0.2510719059199642005014310606181783 0.0730630634420772566689570207592462 1.0758697453335041374454694552766559 GT 1 -5244033746768.3948987658440931035009298855395497 2.1960563802577721616368766221928078 0.0454515835815894067219234487567004 1.0465169127251815028619751525629074 GT 1 -22298213915934146561.7017869731011563292070083963073558 0.1105047100381148944258210848184026 0.0266304893760210652463434129183149 1.0269915046293555813121055078716090 GT 1 -150840186144408798916.4523886789308896773770502749538576 1.7495972576594197150567769348219413 0.0264175588344345106891960089912411 1.0267727724287588597046596723644856 GT 1 -33075622753146705557237734857993.8273039372208903675047214171489844 0.1657643901883558261372461739520851 0.0812968278806402703290158264346202 1.0847921988758457745357067619798949 GT 1 -724.2764692726675905467393921749367497 0.8213466480933505234566577997868387 0.0214457283137521463522341271789051 1.0216790295182732739162407617367348 GT 1 -7894124260716434337996898182774174582.4104850279533723865512680916408738 0.0368695249989646635569555255102293 0.0753936291362707721545373356321160 1.0783871770518704864795057925720274 GT 1 -40533418855.5230101092439487752821141214372731 0.7795713255065648995451171262151018 0.0463118826363476933828982012640440 1.0474185819866320176025055448468566 GT 1 -13642903195002545550.1576337166954749624866997913807545 1.2616838253321958535710199967852654 0.0391252165413101925097635321987944 1.0399111766713263261589480371283457 GT 1 -190511928294394770103531506993247.0761309373519865944518857800426170 0.7496199636402157858129854143881603 0.0162458104278780814252597559045122 1.0163792204823403673174137300881925 GT 1 -2974631809797007907.1348466373276015294459280175573122 1.3952641996382229811092306796556600 0.0406919175840645145470891303471911 1.0415430018669944804592424478852294 GT 1 -20801946399298037109856.1805044472440622953511640609124883 1.6499783699515146318449837694469942 0.0192204164568383314294289249555896 1.0194075301433151541633646469996419 GT 1 -267.0303280517005280610774406561161200 2.1410901889918268443015751439177888 0.0941682577724078184337171917727904 1.0989017051669027138977304738358097 GT 1 -1040273604395313472325978592447854158.4723409557857925843638110131351073 1.2551557537100343999086051548524374 0.0850577680783431540552642310655722 1.0888943502115333601842235160697064 GT 1 -179388.3396672774385090769566284466163355 0.3312905367530579178007306919348370 0.0814109865139831557629075720059565 1.0849164672250873296212133597440602 GT 1 -8472090129230178147059206350177927494697.6073803676665772695406408579460001 0.3824564040879519730472748346022050 0.0925843958226459639537136081076026 1.0971547153194034299796397988180080 GT 1 -4454228447341803878896054.1299956228045549728688902142521255 0.3714148570906782100897141592622666 0.0858056235977721514377329898381976 1.0897120644901687162262607637651036 GT 1 -2049983218774207228923608723067333802.4019735461882408144381041860478265 2.0565456102407163143846932639184624 0.0942517178142163073112992827792220 1.0989938457742651317454651750421161 GT 1 -1.7319042484894468129011292136111672 0.0947636285738389297519918355750945 0.0210924012081983774871842129305695 1.0213180241625932112328102504646564 GT 1 -9400562418895813910487830708310467.3005953754417172629614220923017921 0.1201966071101161133232494224547072 0.0386414502314322291629508824692403 1.0394078389009015096173961572148685 GT 1 -33983913880293785778.6476224434111409931957871825989276 0.5180629961924946896082036239174104 0.0374388911466858793134779440646557 1.0381577251178556314204854626328613 GT 1 -4155401911488537803.1898386389041098640145611057812074 0.1980881527519711052327810770110087 0.0374774628788570153451062456118299 1.0381977979035311578024856841447172 GT 1 -81633892277523027601980990993667865987603.1547076267244442009424336850557818 0.1456050728272612216639274767969577 0.0325458642346950231057799976444692 1.0330872600955892929504142158881722 GT 1 -43552698820704.8576339670675506444575758958480680 0.2418227673255439195896984194430839 0.0595273082002224850115600793224030 1.0613726664948407249940263346217310 GT 1 -163771294919770358391440410661974733110.6050312830847946370734261517644901 0.5088171950992116204079271522388343 0.0263192335181923486454957435800378 1.0266717842152091146334890767889197 GT 1 -244499806016518131062329852070888587.5120545864695875623817666271779532 4.6254660176346975704012707269725045 0.0672004329876735520461583824952994 1.0695649275666274352894616886146323 LT 1 -4.0968397988093818276210397795918743 1.0150265455756072310886840156772742 0.0214345905402822036144433788344378 1.0216676477171730556623261873208010 GT 1 -26944061736813678634598047489436615.2972827685791214818363684275588245 2.3470872495149600706462644861024142 0.0062212154422444850703504332176316 1.0062406478403801239476809934209257 GT 1 -57429328251892849955.3205390534460532617898108900384465 0.1534403403730591853702936269958700 0.0616703077288171667504757496233715 1.0636539074344113867340016444883225 GT 1 -9504521.5983928826420341382296695239352746 0.3223762689248342472495441216589001 0.0512848417503278135318191209423617 1.0526466747941472145844217237912423 GT 1 -1899318983.6943412302061052280325229419079559 2.0300897933511236979206308415459688 0.0985153797261190966873962364861804 1.1037122966352829096513750286975311 GT 1 -48491482672864775689814512326490432.7815631263462405924077229047313170 0.5988179480710723756362702352279497 0.0302825745140533793569701106147255 1.0307505638568683023915493317415402 GT 1 -535506907310938053400.3783018089070376776813695998001185 3.1721696358367019615999407596683033 0.0116043960369734406118787826235224 1.0116722525070481327650482584285245 GT 1 -30479793928049115105335071963.1087283652545484723514152288685127 1.2196923067785953168215738600187087 0.0047771926326075076165800495374112 1.0047886398890487853630122056917418 GT 1 -1096.1010292090058757148517233923162371 2.2528064685438038439122986099336422 0.0302027497493999251196129063956215 1.0306682496927146210162644378889650 GT 1 -1296320887193039.4361052306827963041728070425159134 1.8386725193082534753568373895043333 0.0993169612635794827519786313330686 1.1046018715716804739955765520444552 GT 1 -952539038890987314.3118619009467384782020433165613095 2.3726322453732264675772891068029716 0.0794249012720576034448267093593249 1.0827566969242625830874864376183513 GT 1 -236883155827713715314189342243941464.4684076746163974574441042717369196 1.6355953002091036149644088591446059 0.0693602726425639392829535460892944 1.0718830504361076945156794443355844 GT 1 -5360591737707949199758489886716525509876975.3895641251088265546926856109713146 1.2000348742538140922660550313514907 0.0957303343184647185258380228624731 1.1006276603283171281175001899842928 GT 1 -22451021261.9587857519482889909290764697503659 0.6616582637990345633774036182262247 0.0381527029998220309771989391285949 1.0388995758432023848349234281405584 GT 1 -614301118900704.3535630127868191057718604706322510 0.2885399453725963251317697948099070 0.0705178458258809935763022123665597 1.0731276713872845028646938769418358 GT 1 -2249278433805577200692544.4214906614709122915886465497383968 0.8155638829048654689613302379595141 0.0167199644892232801714607176955797 1.0168613209607993268347358592026836 GT 1 -244344740515428700057736071295270.2323420142687522846478408833993482 0.0060829570652640615684590317891583 0.0650458429472246916497200073334103 1.0672577807855342874698221531275972 GT 1 -939830632103140084.9479472108852118437704736103552031 0.3371306665567063135875843562426885 0.0580369088817695206957013893546312 1.0597891865765375785260449010025081 GT 1 -182848803297986739860685171.8389361052910794573042455387606821 1.2019953326833599652845061592237746 0.0554243340113078922269305248112730 1.0570194830326649958474453375106365 GT 1 -1709240826084246949102046644403432034861791.3885282537625442748433740766145185 0.8347117673238211072067298854231943 0.0747181332536447152443062641442882 1.0776568670807969117820038798000514 GT 1 -6606215726086231427317401.5781334937635231244731682991020057 0.8577266203923726977447125597384969 0.0240501980467350525068628492849311 1.0243441263166705413890107140349149 GT 1 -618198.8816945966362110818543441081610894 0.3409147528672262218527535104636443 0.0298637731834691404968274549412875 1.0303187773284423952230379230592301 GT 1 -190376809215371851695134268.1331632962778139768470841609390883 2.9723366156335485877522463567834188 0.0924632405059779654074351955200748 1.0970212073339895545172279610662862 LT 1 -10233980868470719239925411694874609580474175.6287065232293542182892530793398645 0.4780862919105572434853963106312988 0.0871374795153850645196178373202934 1.0911699896985104543822797674060199 GT 1 -111061229577335626840933165.0501360385787895209007979164492111 1.2140096910957604738110263263972193 0.0273532144875819342241693553364188 1.0277342786197109988155803185280219 GT 1 -25930987706911416653725179741.8468015846005797347898477299847573 0.0190953494213822856740111753720468 0.0961610988453236199241837827532787 1.1011041411579638704016593329467971 GT 1 -3893274602.0641391021917640030512903314461225 0.7422273559111497321969152458680173 0.0029528000749734202175729353898942 1.0029571681900142936141863959024936 GT 1 -1990.4304667219129302798327599731892443 0.6036405223555642502693059280434525 0.0131965865432754117050881986677503 1.0132844352158482392628961954663648 GT 1 -3926301397.7452771361451032615083313792416566 0.2674711980108883046213873507255811 0.0012921969338829178455835882352141 1.0012930325402637902105743223591599 GT 1 -6857561017483469481187822865982252.6574535235222980306316397952996830 1.6274499532752907046308842521141393 0.0347406480423671403503939692177681 1.0353584552469295842134436408338975 GT 1 -16683760204040879619.6681623236315641433693712139865575 0.6124846618089452996453812948137142 0.0634211046291201473065133333848385 1.0655215157228745278218323051091630 GT 1 -26249927579030657439717229709.9185369586333587850163533137043773 0.2955399995913657469637038207630570 0.0960627322971604783400956318281094 1.1009953151318719477227823323175967 GT 1 -513803225401397463632113120793350.8814212770579869547435555831021030 0.1008368886331270368884556681359960 0.0509816239405824230606903752591206 1.0523271169565015869957370144351055 GT 1 -1402838169822208.1705513863932046044068299292331098 0.7440911987970717349241915580390477 0.0810556770068895091903378536948118 1.0845297428000462403637299218302045 GT 1 -15766225.3921931273894021594149703703408474 0.3535769260207718697623565250616035 0.0532310787600267380786210704817399 1.0547002269338997239687006988629902 GT 1 -169451718967178731236389975274665.9922684280951537493706790184871748 0.5200993419129057641748484344412293 0.0481474587564530657832145311191355 1.0493451498397687085305652661139863 GT 1 -6269333269666209952921273825191.1810603112925489863145355201335177 0.7608541754866417733798637215394335 0.0454735103187688730820825239816010 1.0465398837852592116147089910610088 GT 1 -2708399202257620996327393826987.3873994680083980155475088349519949 0.2175977880003223519154962180828223 0.0397662168789650698920524507547974 1.0405785000830204848446641593840018 GT 1 -1947668032466.5145024557262309028302404539665804 1.3582542608280078921776450892696084 0.0040315081275457679311483448688191 1.0040396565641360349197945757751703 GT 1 -72675633073601735685.1722208697250878588535076269258778 0.6214485921070351199003117702410176 0.0116229369929649924042748965236915 1.0116910113216573154405453565944905 GT 1 -79024497160060007293783684612554.1287688917682762708213121393089796 0.2265097647590889344802204216841410 0.0446429164882876295562075665072548 1.0456700989517717428504936959156201 GT 1 -365019617171312255413341338048181709829052.5764082891327154428765182990129367 2.0418519484969027042016230753961120 0.0595460003931968891407623224585620 1.0613925420094585129028106295732318 GT 1 -457306200090543113173344404262654366831.1997240182842788304116559069010808 0.8235987204534070260652404566330439 0.0383551929268400031642067424383386 1.0391101199128527618641120410401060 GT 1 -790636596800372.8330483582316831514133880347484114 0.5456105237367042458725912665882024 0.0400466526170968795366257895086736 1.0408705921772447159672977825226085 GT 1 -43596852526331749869.8743183465344778180912119351813796 1.9084207278077440020477580885876076 0.0810732548142678002569144109989538 1.0845488712445635644137479918016464 GT 1 -141806.9942296950383034272786029960408955 1.5343012679067015679072097748923916 0.0338394317757575999738948001165722 1.0344252388887490155900212197992672 GT 1 -31801536771320122441047.8600671415712876414139337188911620 0.4144086324032857699774281059907805 0.0536614740163379622375197767687169 1.0551549240662339289789937664712334 GT 1 -488443938160515851853113191027.7240736636714126342479365283503691 0.0215866833306898978621141862240141 0.0818560171641421010920786161886141 1.0854010566126127876825611322359904 GT 1 -4347570.6334579329721454893379591892163790 0.2882901960020473965701191656429255 0.0967420193037284918346027618344994 1.1017470734592146170457930439156720 GT 1 -858972702112.7165957344437756615468610395116666 1.7030328692437888143739916193943105 0.0236643001590640615213722856095111 1.0239487969528636716700575174780181 GT 1 -9055368224.9397994325068362870557828028552867 6.3367301518416399960161399813422927 0.0074574516846814671547127120281145 1.0074853975005649930922385751117586 LT 1 -255.0751846534911794947382955557128736 3.2635054924773154867119201128619455 0.0145440202382488120166213728396806 1.0146508213101378040159373295071965 GT 1 -227421998354251.0659375514660666577311264981786154 0.1033268620880496361754807653455242 0.0206431421452835161344681367056902 1.0208591902504810250601013837359817 GT 1 -1203800733257380999258669828214187378974840.2657659690920656125882452277996677 0.6943688508460751697376308697259259 0.0052646866534901585375628276157997 1.0052785939494486848483671723619778 GT 1 -25416993.3974028994153458473143636278278561 0.2076525429824327429886136846562217 0.0216700119717957840785955119960111 1.0219082547858508593956245174064679 GT 1 -2484608154849204869531100930367981360.8846574050265669438171179924217736 0.3404997219666302636072532237814097 0.0445370363331173248025721377847559 1.0455592772598651662454171670658342 GT 1 -392.9578141102424037641649867830411277 0.6830976476096296626054644973714622 0.0679030802146656997183934321781755 1.0703184785172734097916331120587129 GT 1 -57833917710457907748855427857.5343692905513268739919151966185407 0.2244408287412271651633344585974993 0.0277451564571740215732976669355561 1.0281373241712623661594402046319552 GT 1 -26.9777292765994263106001654090036642 0.8409898975807982996982965228926623 0.0772814888750586221170720262782826 1.0804310626882310075735203324231577 GT 1 -289699853663486304246999.3825622175431807170091217757672246 0.9689056770959925803701747688213752 0.0513530184315596938820778018120132 1.0527185394949657496640903822485613 GT 1 -21.2055670598844022998365167080327080 1.0991310799906527275561832162673675 0.0531100810070738324102014250739244 1.0545724343763948130075592118595499 GT 1 -178037923009773951.5415317582345726028796396079471683 2.9097268182779857013114332889061465 0.0705771143562758881630858088703033 1.0731914385288495026334922338049214 LT 1 -97065691642315510664.5529800378438065942619211136748227 0.2034598637876992384855156344319929 0.0143111195612162116776502730449272 1.0144145112521416423026770302372813 GT 1 -914751808833293653064570068606612.3750533236691118793185024246250693 1.4247481994103695968918872024704664 0.0930715309147064922981301025845834 1.0976916973736286529982834915649137 GT 1 -16904230015800343.3195185899136144384825934175510549 2.8134680656503607570452426922000107 0.0032566693832987664136156190948795 1.0032619838725278990846958037878629 GT 1 -85756225105270506916817616.0519465030424912712912975202701588 0.7550547653010819685062658720496356 0.0682363764954173046924984595715692 1.0706761193134199672902277764592180 GT 1 -268849548834.5281789070996013597936933034922983 3.6526734050346052461729952290212810 0.0076511812231465094973408772554123 1.0076806016737425096889360500345849 GT 1 -89897060376714.4534547185715018895351595124428863 0.1514186955963085244452354233712394 0.0841919485088073283873341346248449 1.0879484870406450270314718993438421 GT 1 -2604363020792967901821091875865.9466979854671597387917147286725697 0.5238787373406631863139911098422703 0.0610726153730953699574500179181230 1.0630171354299021732739129312753433 GT 1 -10398645035997977095465918454317378295886231.6837021607092655819620312044375136 2.0486256231235281747981027318919156 0.0823705149238668511583767966879983 1.0859615808626779849294653176215573 GT 1 -43070415756388.2171418612014715998214487051785998 0.3335371478743820658609202957947847 0.0961107581008022478002068232851729 1.1010484461191630226984676797710556 GT 1 -2599713540607467265319418006765775680.9293670364364604897507591564052261 0.8374929170236362015961677829473669 0.0759145939176921953946886746040663 1.0789507807869099439594442327468329 GT 1 -4835227465329178103005602828.7221408109950267591737556408419215 0.6572507567740380186967123756579788 0.0861138548098353614498250791883394 1.0900492829128185308747688991680346 GT 1 -20829925515992.9042992991876769794625323715062694 0.9092152487220927996396586791039379 0.0113422974052685967543717534486843 1.0114071118228076707910307760757168 GT 1 -1219255.7887623067344449605944317069260209 0.3840676795725061188617500285562674 0.0137224663805329359385410887630471 1.0138174897268545601412624018027364 GT 1 -13073081.6547830908820618134248283399269905 1.2902918213626810177149832990081513 0.0074497220393158862838337514347468 1.0074776098089635674722047955806040 GT 1 -507.5895242203817991146935328677038776 0.6875352482070622011411861475736767 0.0757265665404506196771320945536129 1.0787473274597012837160059058802198 GT 1 -677814.1907432833451480586104527181808885 2.3181103659311746673026018713930788 0.0246860095617826689052856412903015 1.0249958183534206555240880699934791 GT 1 -500568569092306.6825408275156355014388429614698290 1.6729026244892702044006007336403590 0.0122518251003103381187017858674715 1.0123274974274088855771885874746311 GT 1 -13073816119713.5833418335796038613641837756267042 0.9679622272776191689804841557160948 0.0024338065529779371373997540029542 1.0024367730744169626804299100617806 GT 1 -6756520003569242627.8506758612905066524464222087249454 1.8673733227454468922706097659552776 0.0462412151281641523034937276644015 1.0473444855510950154749973239183099 GT 1 -6824249435807920.3633108463335583731505339835569853 0.7704834405693352998357016738645159 0.0051173534947708787836626640181119 1.0051304919902167110635376134331203 GT 1 -1518483328707658101903613805.5289781873806314987721429993589961 0.5246565440288569226815398295829492 0.0063149680266172433186086845358263 1.0063349917812986867273992967846866 GT 1 -23345804943505172656355452839491780340.8223356832228697583496771268833725 6.8280709668351808258939682869920143 0.0209414130838602990483541258873645 1.0211637946097648728535132586243932 LT 1 -379424592709954422382261133021213857382643.6068196928412389507827016133078610 4.1081041413085015109855292508295240 0.0550677261019840140946871514716156 1.0566420218894434514526139070616273 LT 1 -734977495341308.3375049932416161488849658867241968 1.0475508789802782580454889167633768 0.0148755133604248146345125782007413 1.0149872634204245005491752890942327 GT 1 -577019993666673339014.9110430835339486330692870302820886 0.0452694235892364083543641867862528 0.0784551161177282127263167563821497 1.0817037956441328114457663290522263 GT 1 -3812161945011326643.5307782019132392965875925976063637 0.4696924993444773815711371434430841 0.0263713492275258650073473005289746 1.0267253100790335114113326659707434 GT 1 -27373976440384665297690.2715815306057760713704794092224796 0.2813362018132454233254800264832601 0.0101135668054766430870340493019246 1.0101650563785751514761503046327175 GT 1 -96271387910620861316757239485050172.7901239363077320704908072975531290 0.2058838036958371325159806516590755 0.0534136126468221131487223163449118 1.0548930421826091932672638575358508 GT 1 -26272152.9162954131382419469152090271865712 0.1942262539917796399811481299740056 0.0615888520915861344788347116910611 1.0635671020156361594977216943133638 GT 1 -47159304446545009857051430437474458.4640447586854536683108221362956001 2.3950858490730445808456195299222529 0.0432726974283388610357186473026955 1.0442368784260761073195891357111375 GT 1 -453511826523458.6575523741899045904664488558086427 1.3013744174201016463734872453226309 0.0322194380140331046455250941219596 1.0327499095673696633188426924120182 GT 1 -202012096612194089242583281328016.7523687226636114898798133963112904 0.1934695043065832274805836015691869 0.0976906343982519660863505570992186 1.1027978403372818326372358743467972 GT 1 -32212015923.9806567693914902673834076217137675 0.4518761688075018250679218319649758 0.0058266157933336483392814188749605 1.0058436567454298207467729887763673 GT 1 -8007799514137142.7400272878958349934801972873604769 0.4028172518177097993440786736439660 0.0249485136208890339801573109291446 1.0252650028358283540520816713614903 GT 1 -117921650886462372873.2679417648559228302913213167236225 0.4108135852264294994085866532670201 0.0089536417684315097144910445888914 1.0089939665014923786060783785272175 GT 1 -72504007115911428262758452.7450469947129966589360277630914934 0.7600588182155102664080530406875974 0.0592252833041505952193755787881829 1.0610515764592581359970168068402934 GT 1 -4488629104.5620473829345117491721555491209319 0.2743333815575970029474850136122603 0.0202997742275400024619851679377067 1.0205086461809596905470594320042148 GT 1 -5434157851843620238880345311790838812906.4675702632941941950452260662700939 0.4493182805085093314752141701500871 0.0035427144887403016139075254664128 1.0035490047625383953948459625389411 GT 1 -1555926940149060994558174026.7408927603456155514209162148353886 0.0969470394137759509423689346258158 0.0163596374983963972291978156412286 1.0164949339984984202940596538591183 GT 1 -4840303730219105729.6376923551415455591692320349531826 3.1568602991296106955728999068567817 0.0860686107072147049119917877237574 1.0899997767648838075201004317744039 LT 1 -1764806129652069260558096736.1321734776096036491229949922724512 1.1337523301115359486094021574492673 0.0226182463261612828365299377103827 1.0228779625484528655370385878590555 GT 1 -843848997125574659.2608786078343492519013469582379785 0.5920215406491476322613681370575399 0.0124154263407193103166481468304286 1.0124931416621864396184475709680304 GT 1 -42781227954496.6097148749459093324029734202317540 0.8821154359956516934848973781000319 0.0256850593114137824640793352728877 1.0260206798756580770012330698071130 GT 1 -23652931.2483531089131695442195706409197415 1.4085508274695320498186451503863761 0.0537274374563015426785634287523270 1.0552246303470331353912385841801447 GT 1 -859013880525586113428703491591990.7452569741409996435572771735300048 0.2417815999909983081224550938998165 0.0684205459175797845791713023398646 1.0708737956565233448627939270000927 GT 1 -58750696480271715342.1269905394830060994680107187315104 1.1711739776172909724266865465275537 0.0695372820186765004647759845179772 1.0720732703534364027647562367833408 GT 1 -155617085985487.9264107876077072017647014278367219 0.1560513002888763026319729328157292 0.0599753954440505394116432631979090 1.0618492290011276618122620120958601 GT 1 -157898913454926003160763984067755.6964936602260964979366710076337845 0.2809273168351932708200036152667730 0.0270318219544005456074604252090201 1.0274039023200582257862230148364905 GT 1 -76662283.0437892988576037965298141199709565 1.9933492103135345251163405875407742 0.0413809904427530226093704277075532 1.0422615619115565302319324165973690 GT 1 -577905249.1256149306211029663188914903120222 2.2402011626760486714518161290594116 0.0873642095786357467629637196536802 1.0914183931761384445967690369671349 GT 1 -188.5518048479472370566715893529134704 2.4311567318279655432426642884879061 0.0002944426273408354521313733768354 1.0002944859840821572169063063911170 GT 1 -5530061103573.6567541327892172887455648366221948 0.2143174401003628127760569673534345 0.0452712390462452208913966828485311 1.0463279987864219614832681046456479 GT 1 -11065144349659047419328.4490057120196660198494995883821743 1.9043984727649524283485174932984412 0.0103574930658931695870400245634772 1.0104115051742520550348422198272783 GT 1 -49793834558543245265826407873.5064719545021071375415233283917943 0.6444470271624246154325845448003908 0.0718440015705110419321746863421814 1.0745554585675386050100263459752903 GT 1 -9308581.2972928612866006663376652768065109 0.5981812052666453774979417081796954 0.0016588289797923620542986478510224 1.0016602063600207048877206972988394 GT 1 -2075184854375032887545944870585.1557678490084235701501387165140806 0.0216098383802799767901571753235284 0.0795911109458065263514943088637363 1.0829372630511855574755883244385642 GT 1 -24148502115528559044126862080329768063.0972645606213516236043231727472779 0.6186711467086295394544390491858448 0.0384346485504503626404878472549334 1.0391927480367771889943034686040789 GT 1 -44902997483027.5238037894131537409145334431878386 0.1945362138607671812275605563165076 0.0851515367427297760408183651449296 1.0889968413485970285384256592755321 GT 1 -4093154204447325910.4119860111570856789279482140825583 0.9546821209294492944278404229465758 0.0338906975535940480295403381524579 1.0344783016401033941893853867477050 GT 1 -3538316958266385705928697028.0412019665386393938747743351386223 1.5744998024085045517582329741712094 0.0212591021552588668799206547082898 1.0214883314958553616786678889945706 GT 1 -149551720216130782947427055703.6640020199727548664087029338584325 0.1462581000771968366963972199225602 0.0366891922472649216700188900167673 1.0373791697727927948339665272115301 GT 1 -729277734.1244692491892517641812245118964545 0.4506036384627806793871968719744893 0.0853379059368861356037368046602124 1.0892005780191019404265382796019947 GT 1 -1415661648903563483442819554161.6489597770069106871630131844503041 0.0326148749885082218000674908589629 0.0664809542617237449898770786546794 1.0687939137036393254943662679461526 GT 1 -30714801117826552257711598694393.1496909262109769713815260454806024 1.5682150715275726780370911769668509 0.0356133561146145452504681601827241 1.0362629819151674978524484306656911 GT 1 -426766692.3620137156777450407314457456062681 0.3376002913682915868875036766419010 0.0931002824103153738757925420777690 1.0977233999304887881223972269135164 GT 1 -4.5037291737720059346910433104165342 0.5850259545355708331496236341266372 0.0681016700068643273985445900201582 1.0705315582372712047867634313036609 GT 1 -30042629605140862557256570367346976594309.0473789689997227823325800568025906 3.1267054842378536234903448413345694 0.0441455880480473502292842359834365 1.0461689124636772885895766662280596 LT 2 -823656401785445075512981799464.1751817474346940640704510478853502 0.1390909032859533699703606533774462 0.0414890867917330256145962903422321 1.0423743308457961299894397872855895 GT 1 -3291914147402779935808159960286.0964464459649931437492507898825922 2.3406917321954094672155630068640958 0.0056838274359064687933257648148465 1.0057000418522196362798041007273889 GT 1 -161010163609502292631373460842670.4613286933650393218023007871303926 0.2821391774335466695139299182790425 0.0232556191641715817164654501089557 1.0235302979830563368100716404669533 GT 1 -90807147559775115905385860498895.0789101794698621391300331983067300 1.4860266634412620618088345427157236 0.0610167254628826294661642864255796 1.0629576119270597937781716506220619 GT 1 -89280319626187.1873792956169867189181452108542522 1.4274939571162564465301099957362301 0.0508133898837073606306192630097771 1.0521498610136073586140689695089985 GT 1 -13.2418667484813269177519613084195400 0.2267835841144746258883984420095522 0.0073380437203897047518061138234272 1.0073650996026311690139586374572460 GT 1 -8464434.9705507458251781754471263476211699 0.0251787922210002155703579843670995 0.0138912977588513138032729510570534 1.0139886847754318994547636927321612 GT 1 -18157.1633432287313444040411016005154736 2.6902186176821226669918062451321385 0.0903940663593784894468737833594407 1.0947438132154809723473220643794558 LT 1 -278715510.9974767222002813325802364883598901 0.1305152300833954569491320892255742 0.0564706163129936020363136987986782 1.0581277713760083877844934160143449 GT 1 -134562729013494368253353276181901061597658.9656124052795325850383945348573166 0.4441466049627857191567998255146317 0.0826350234863324636292045824853818 1.0862498744459386780844135213641808 GT 1 -3268003643389818698951717.3427682591779973936220790123523553 0.0029275725322911270502668411285069 0.0478198972962041132497560023163961 1.0490010785713251169105815016727097 GT 1 -8390418418681625012.0861769040289226281637045645986332 1.1461906988121181259440135516151691 0.0721504594734733099762707113401980 1.0748856923942325658164029769750901 GT 1 -6665713336336595020646544825884626.4941683115999926560989758230398637 0.0690015980069430502466361160249185 0.0938847060309941304633252298083069 1.0985887249990899401253501787153310 GT 1 -1739757163216123463554443233677944866706705.7232904816776978018467088552638670 0.0674650718523117969779607817585603 0.0085859219546212207968456353199487 1.0086229933296715757895385895357983 GT 1 -46169977183686443549321.9222001176955769872938630148281670 1.2805631742753346169442027261418329 0.0154146269764534148086176606969311 1.0155346675234663331891355712664284 GT 1 -433767526.3286423704856174298266789150677551 2.5225759385612195447423189667483564 0.0372303856792626480137875994777212 1.0379411332713445942679502238560543 GT 1 -14.1782812115038163198094637484206756 2.2471070108809312960300589952080463 0.0008133218442965922555493499395719 1.0008136527699526738701660060049803 GT 1 -610540697891862536663630420370426.4520711643065984834004108840953251 0.8331507047608886688209822147303449 0.0264321853499894497271878287069009 1.0267877959386410878105293080000506 GT 1 -21313153829097.5425776798840962667604414089677973 0.7337764744991514901198276762702106 0.0956374571187289302103839465610826 1.1005249559759587989251581964859955 GT 1 -401976068436.8316729312622858405716716924445730 0.5877360491735995015573000581905318 0.0261297055425286084496561767611267 1.0264771521153753510553468388555298 GT 1 -1423740271069.2450171171971913229553886517590665 3.0138225454379088326478822266903613 0.0030176346256086320720229309401437 1.0030221968654023877603090273114676 GT 1 -917269618.8499451790771675682556569258806584 1.6545785696402501775400435616190472 0.0208950024049967753611803488496152 1.0211163923608012854262239919157920 GT 1 -200258717833547381945512641792719537892.0638511501644289907163412306612686 0.2608723867928525127940495464554264 0.0057050023947251322375352867238865 1.0057213380805996270036024741477211 GT 1 -1091445338275288301605711292845.7548997871748379394822006225165936 0.3234031185678891505202624742197883 0.0752528224554419676208700584170200 1.0782349004023114203867472671562575 GT 1 -3196933.8102624359898978339744336260945406 0.3593263497164175500633530972234580 0.0068340691900635011760960503676366 1.0068575283831689560425815473180622 GT 1 -32819850018388166487167909917218765134.9040791702323080609832273740835035 0.5899961477293810886148060438026221 0.0008597542547001313874572183833114 1.0008601240553630240682681693021980 GT 1 -1320263703885250349833959215027523581802.6468441473995031013725523570483171 0.2300623989306222537643035720314724 0.0987652812872949260192271439126283 1.1039895461853066925148101614666283 GT 1 -4699267515055216546012.0316061219925214959289929872221246 1.1727784415524133350371968277050496 0.0441075008552518247031310837610171 1.0451098208469124888418615592273820 GT 1 -40657198900830662822470980.8094127081053006867302542524585014 0.2850074981427715792772097798323346 0.0893742871697067873962226044320221 1.0936233192406137290888002359888755 GT 1 -16745124283550513130349.6565386115221526011749651250555655 0.4979889591897934606188147637384104 0.0251430018572423811114981521577194 1.0254644873127072711166899531373187 GT 1 -1316861141616086.8449052309733591002723709945863676 3.2402656000263805760270424038992757 0.0227461296397207594455579539264083 1.0230088138561538995213047803248452 GT 1 -802237340614884497421.2668210338471075837339335483155149 0.4531017300965308877936663718296398 0.0907276952526639486876709323896001 1.0951106644867599043057234965302082 GT 1 -46288126647307511.6383668517771251797243129768365232 0.7054870022705587409528637971867739 0.0578504301891409281151469421681564 1.0595912380174046591766598528550787 GT 1 -13272258181214349263284.0453279005662177933766700558776917 0.0336284191779957867188902779706215 0.0929072560838123323185429217172878 1.0975105806036969348084528453739140 GT 1 -129763371890002232955594290317608713458941.4320819086659420239530509885130371 0.1898388132160125608928259526636120 0.0753287181656637405951079771990459 1.0783169756188525882701543345263535 GT 1 -893745617090192253009935386412.3318292111578818796908043265722053 0.0461610360911553101150082873350085 0.0858399336763843583510757057449468 1.0897495955922509605669895281034852 GT 1 -35.2707160604543455755412987822546028 0.2206314289382734570406561898953786 0.0721174997454525915429242450794023 1.0748501703174457561097932983872941 GT 1 -19274299258647740846176559444132085.4439770146916806595975732616081503 2.7362957941077295651682824131696757 0.0110687985194499776854199357003387 1.0111305134994668413358910227110121 GT 1 -641512688026048.9058893363170333791831854397689279 0.5374412115711676464812318275341764 0.0249836842637762878043575102808653 1.0253010740358685946665178073467830 GT 1 -1062214956980525828191192263.5829991754944250804863163695736157 0.2958456549856455467849399843435193 0.0519823979258581353746200849243583 1.0533822093107335488855004792211208 GT 1 -3710.3491445126125805335166767862588893 0.1041952294464755582129048683015365 0.0739512010005541041075696074881145 1.0768283470209802747861740354844107 GT 1 -199.1926077782451579613183297808221443 0.3586469318505895484750670740440815 0.0993865399487930062865331451557903 1.1046791255776644513161251686231001 GT 1 -481691.7813426540541856185741003660236800 1.7289933227321151343073726566995391 0.0115067398035636985883447260447417 1.0115734546077229230133749210658835 GT 1 -6752553581057882243193208788070196459210957.3104920537800227970233060216677728 0.0245860372753323222992791970486148 0.0900725121320827841815158106813997 1.0943903663077823855564190897104675 GT 1 -9604913921229991961836001.1115561572245631089313667521709649 0.6489175164280429654844252632563059 0.0608707611607620475308038771592029 1.0628021746980600679010749954362523 GT 1 -1314422531688308473989713280689.0997859757055727009356684390696179 0.3615368440034736686321439094495914 0.0979273971829824637314152425931994 1.1030602712307769617111793493904064 GT 1 -60156965975395429398193928787.1802841143095615268347791409495681 2.4466602138383721478582423331925433 0.0428822484967423431158843776573842 1.0438288527751153141720864769833504 GT 1 -2486242306.3572427058001357691212444069938888 0.6155955466214822591809654411055775 0.0057614343556564351425421182415436 1.0057780954439043048184262628448957 GT 1 -228088873186.4415362105926123779106367803282385 0.0852890958526762862488652222213044 0.0151128270594331745990419803728864 1.0152281896088581791232094309921099 GT 1 -94.9876367875416831682956974670116915 0.4589207142572895333857286052112649 0.0269397635899400316641440025205772 1.0273092907883402422307603297129509 GT 1 -9982230236283637.9589209002062321133058357281462761 0.6634178113591631766296402074866720 0.0613579825103783704000930371235970 1.0633211104937891984425393038429372 GT 1 -104156806895621333553894164426817742694.5705290975226806226995269273714499 0.0006309197042058709241122122242297 0.0936107464197917291984524413541003 1.0982864254946179063230236287427860 GT 1 -8680195531026028.7391257989263232274608127313457652 0.1237411923442649828090904219452836 0.0865295960593489346033336234158266 1.0905043022213211133424169960686462 GT 1 -299.7417626578838966194143351395990546 0.2978135937850833779773792599545031 0.0367586792496321881541672070415941 1.0374513058976028602244096189434640 GT 1 -709788179365409369736439468044.9485438268943967431511622696397103 2.3902160365556123894743842752753978 0.0674154213445115511481499231919784 1.0697954306062176243148205487161615 GT 1 -3344538418191141081813630823253920.1285752806300225401220106439877451 1.6396833811751114750313770723901368 0.0480249547292200197605167053519807 1.0492164574851985040939804748816964 GT 1 -523169378800184968292819986312144836273618.3149012807849215434944298221615120 1.2592150234099875238287234982890296 0.0958726706020965428309139151671868 1.1007850774046704294410815736374931 GT 1 -1525.0181476261293365071214486442650148 0.1217460244151511805092517387598207 0.0984783737036029429388478144659195 1.1036712473903435270110293863135637 GT 1 -3467629394810.4999916006843605773566591356309912 0.0083512145859062062946252037953082 0.0408320289522762707028414574091585 1.0416890671443878605667188821278614 GT 1 -52273065823561074996885994033.8532833626884482269875943944231188 0.0741758764707541209111595249667109 0.0903013956163664646691135731218432 1.0946419383054202160700812420956285 GT 1 -1.1475264915051284052579910335775269 0.1550619420938837817192541142749138 0.0164888197109807338656826669234324 1.0166262733589492954236381446602077 GT 1 -3865111051205555337639215632485661.6409949209761400431108018889717596 0.1517338750403911645362150076394321 0.0419163873993730859988862306185834 1.0428202265310501443626807877991467 GT 1 -603732987657567624860465485220.9205794338101906098275194478151395 0.1539346599672473837872348447539442 0.0662904906756142623734464320651367 1.0685899069833547140387771858827105 GT 1 -223940982117527823915994622.5717380485097931037631357396077690 0.3948752018584870670797879776633088 0.0090284879196475980461282903234765 1.0090694917047438372915670672903401 GT 1 -49276102625003.2921997989287985688827183654624061 2.3313105831818107356692411450865225 0.0451988280143375488946117581607086 1.0462521570510364202070596956789836 GT 1 -21757114308.4720966784310747583845829645141176 0.2647708743007956621748444334155395 0.0743781232967792034846178159220833 1.0772894682229217568593535415148242 GT 1 -3578884341166.1613506404631084128655598358969016 0.2060677851365176983800913384133788 0.0426500255896743201083942753698068 1.0435862548926191353579643044949464 GT 1 -1200283038484249825253316127958700.1777537471699870720425711545642187 1.2795998278517487822414442564707350 0.0976030390197435619265635285469184 1.1027007659520625027725218075165970 GT 1 -6082004730984026.2529432814807952291412009516069850 1.4383878508531992180910466234367695 0.0733612022557636447773559530999083 1.0761914357945304854575018131102187 GT 1 -7003884567334472737562082049641.6523434900759032030149150042069408 0.0913665592319406172012728856205844 0.0128258425987327656200503849592021 1.0129088038466014251368889601394468 GT 1 -4743994337814.5497094792828810081583217118142647 3.2498830998375762460411470104643498 0.0513482338427110234671579981317183 1.0527134959151347759808048967754324 LT 1 -109924694077954146137380018392357600081583.1601355904065326913574085296470651 2.3066059919184936555941928910282592 0.0526755527312580404330272663067749 1.0541136391194509473643395497557140 GT 1 -34914.4491519540605146420722013555705320 0.4703430523641841147975289070788313 0.0702785352507068810863809246871776 1.0728702379635755717999894902484113 GT 1 -26588050610656280795.0473563188365849950902220772543824 0.4525125402166964767689510951768535 0.0772698009075523312343142359712441 1.0804183958853643266062955220109885 GT 1 -24384313453182629.6955931963715908299561448438121534 5.1605797944516187834807920350894674 0.0058362613334382041648246083153078 1.0058533588628360413671738858068438 LT 1 -14194.1903646113115159150691741814247637 1.6571993618353822146703040288721546 0.0649958793422130312042945221380926 1.0672043425825336066099080548899971 GT 1 -5428347482751189062722942349.9355449878232920370192344124911508 2.1372763721438875197436134603533286 0.0200627932789322146050932810381530 1.0202667841448161262647205526023958 GT 1 -329760598561.9558175713393704847792400663418637 1.5579317154055305263590434046004941 0.0908004141518541615093889753769768 1.0951906425162307499630318394111466 GT 1 -673854490237210.7965770757223005707211534769708015 0.2867216839198947326077991512025362 0.0944758078478151645685707139457018 1.0992412851164039919191405420362926 GT 1 -252612218710947248085615327.0471146952506289298323859988111254 0.2655598579488599259730978151177824 0.0182615362496163404350397167412430 1.0184303362929473854017934460971501 GT 1 -168.0058017613037455943572074260668222 2.7701233762629800978864992664129294 0.0811251914435965307018702661479454 1.0846053916335433246734899568686674 LT 1 -4448068484166271.5625807382689081924718365454460926 2.0399607259441323136111992061044989 0.0162870764721787559366397812581544 1.0164211688778504776760412712924166 GT 1 -3931297499524654544521.6459783050068974641251636966024342 3.5804778680771288143557316472333569 0.0939606283726921453039087675837903 1.0986725173410835011067632795369975 LT 1 -788350165.6233571892938999843526941674879385 0.7185280423238596726827657681617722 0.0230313253628959046555355638362215 1.0233006902608447712823823130997228 GT 1 -1347831055974.2930956679688495028527914783370965 0.1717038071993759879023155299900033 0.0907840736443601301138718196962722 1.0951726702679906678731851050855064 GT 1 -2173.6330859799060282844861763435895859 1.1158242714290718389952628289836942 0.0911936363579600278000374011757956 1.0956232287928027680652378567887306 GT 1 -1376839713676.6866395159453756640162701443231855 0.3029988039031569227715406175061813 0.0173991106101380312778394666004852 1.0175522541087132871549268322696205 GT 1 -2225920542704479853045318327994318.8095205518913523526273835818104836 0.0657844119877828971529620792623185 0.0848852565781260259862150101046318 1.0887058189220135629597010454938949 GT 1 -103.4417679008515043640209723031045847 0.0162254400820675325586170454876090 0.0322657377524879960558310201332244 1.0327977518653299062314596045134364 GT 1 -18851314220015103900747324.2298371594469277348183024068047784 0.3521311741847541684033352991169305 0.0315137914288859130400366909319856 1.0320210362250005162080199323108053 GT 1 -2186731533637065307203664659.7277205574813021550298020572860368 0.6460146909001269559735894352967095 0.0105440422466936206655674148296931 1.0106000245275651857684228325987004 GT 1 -3250459573963079248293530651589318.5658308680054886221838677070184918 0.2143551079660849298723324955225808 0.0995457117888840614902106679101823 1.1048558783296461827391003505546667 GT 1 -150644696082548584965219.2276894738641428451285543177868730 0.9202165244785693632829645059038729 0.0428608496040862999562170876468460 1.0438064953865791106334922407374634 GT 1 -16875186511.0928316165511157389966871460468104 0.8507317403960507818775977222804499 0.0679009521705894513756038067224292 1.0703161954482042580990988106078823 GT 1 -451318537298412946395664401328.3894713205705622769981817504427730 0.0266274595222256914993209522409362 0.0229416630088433009673573816116267 1.0232089183932278359202968550679890 GT 1 -159661725057270365097329683821116.8685700516574694397485573032146235 0.8391823057112595869316883807596231 0.0251678716816438331946184693232079 1.0254899988920306294298084463162211 GT 1 -1169474996111906455078700333513714.4849835868486422085553440289826810 1.1689228099722324956724124077681094 0.0283502301977904887880056533944872 1.0287598585857638908973633995801408 GT 1 -58429490769915834102216202.3776557099256284446349713798557503 2.9610706948191613254680295422007475 0.0598851312084187434211995815186933 1.0617532103418944367700817706997540 LT 1 -5620979914348.2089711007265725704622910088793429 0.5284822574115759923145193059063524 0.0504721443077275654243574340651910 1.0517904119381418098409289030314748 GT 1 -422159859208394.4684228321422218222323640133264383 2.2806075922701544494281723383611492 0.0089503896677398465855910293606125 1.0089906850249713174907225761967377 GT 1 -249788841624495644637240349706021149091882.0001695360535875401965706527689633 0.5606016751893245485977052988121896 0.0935473925744808905797761188298937 1.0982165309862226922120337440409696 GT 1 -9136851336169644775805123109455.3756444594846118109961380957038189 0.3636716111992026944764059999272080 0.0072894399382473840335266826117049 1.0073161377259536402370824250742893 GT 1 -2024922972086307452271015771.9792982143071724833768057529354365 0.3566290201393695506313826189664325 0.0162911266641481404591186925326083 1.0164252861362602876904808000960306 GT 1 -5.6723911967401438928928323570689171 0.7168595814486247790813502487603458 0.0781648905379853771058014309873355 1.0813889114822250516842613773800495 GT 1 -10433892062288358007220537052747856464.6555742550160929196096130750111271 0.0195868554256635122626520450029630 0.0129464096250623040887973730395318 1.0130309447967681277727598208314987 GT 1 -189402031819679237358014.3153327368991025341591080429823948 0.2840180047098711617323943961998640 0.0930887314080729982598638279245049 1.0977106632094847449791502019725212 GT 1 -655263782099392329.8078424248735922734774494721180901 0.4994016603167169308748084956723827 0.0216541601564898272716139630615009 1.0218920519840576306204020254878915 GT 1 -525203832553857771726205121.3888908124113999631492193443969614 0.0366669539670089774837976955198340 0.0392549657459266175868940129342671 1.0400462181645682503298848725994653 GT 1 -77881490434633839134288578801.3911498301954249650904405642565974 2.1995003319200341324036332859987098 0.0933328962609744251227243081805044 1.0979799262952181978595843876512417 GT 1 -156278815610.1127108271699709730979997361284454 0.1745747128045447166702822622153675 0.0951280108257174605535804657533713 1.0999617937131901582180817437996819 GT 1 -36483610854115023683.8384911486461649805659574354157728 0.8444375189135320735615721827243396 0.0043567971275542890392862233431131 1.0043663156249955006288477669137512 GT 1 -2492660047437530835445096127669674968.3180964506399044152747687057455542 1.2169976952392095541057189943529051 0.0008150109235375462036047264654926 1.0008153432255057130108596877893214 GT 1 -417561818196982011833411832274821741079.7564826903264551688744731701469419 1.4917748490183867100163498884584172 0.0506181520365145576392882578638615 1.0519441925300189677678620838906769 GT 1 -43898982826889789648497408.4064390892139715836766170777849364 1.1275608447472111551511520338650416 0.0458238180727331752390734241307645 1.0469069475119551464458940695379083 GT 1 -31872458565538045714.2500130171606188536664262016671961 0.9788444531814290033502881130585644 0.0505473881790073256282620470358948 1.0518696585366259644643198261174819 GT 1 -195924272120942.1149770973839792651843933028836101 0.2195151417028946762613458422810877 0.0227181680117988455972771386162824 1.0229802018150535768180925238224427 GT 1 -211176669460713050281528.5190735491333762785050004316928424 0.0314714594588409569943500612958277 0.0732833038232057107309877813128076 1.0761073737429064863491461164279728 GT 1 -1148586804693897994.1652349687809040672679772920301248 1.8313383564323909410804652720141264 0.0376822965900145044931497807395004 1.0384106298130242509565585937956993 GT 1 -243901339782766838120015695849181144.8504536104700220524270743797217393 0.7601807214228385722837084538998283 0.0525809019146642873937946765387136 1.0540137302775345103437788053760194 GT 1 -12.4237547474244094116304102750606006 2.4052440436640326831554550303824260 0.0661133360363926547608909618704510 1.0684001929088810490703425111394577 GT 1 -1616458740568447703.1713656589463163590407674312874338 0.2202818289050744579738527367382450 0.0927019212900003278233506478948041 1.0972842403994498639962335162667997 GT 1 -2307821550008011571650790867263776399372.7745282948437894855177732748816307 0.6127896538418345727728440755543054 0.0741169179747847155007751272157344 1.0770073136194506616589580207110246 GT 1 -1838292452074493151508170091044693799.4583982605109265461093452644361701 0.5284915121197254524938757838635118 0.0407459451624408386038551421494105 1.0415993227724700241189479417815380 GT 1 -23360117489818038219049111420994931.1202881643422520087964399313462998 0.2530937917571585360896382026790164 0.0519471761124783313726064597073637 1.0533450568791554957326507612555231 GT 1 -10004.0685242311621863280251386299577078 2.4230554510100120280741876627038943 0.0890622479189605408053320616428789 1.0977666361233292950338713165875910 LT 3 -235697888928287221529993089497949.5745606207670604056304382712112147 0.6868276375578668940309704268596126 0.0948443158196922464780549542312880 1.0996483233585380576285450807993026 GT 1 -232679284778309851.6328052463171743037359090956520964 0.3480551775389804352253644591624194 0.0670118818873718238933054215540150 1.0693628133577634590206577452406433 GT 1 -3105842188940675161075515093399.9536503347828008065528516338551224 1.0809332336158178958781347826746629 0.0866499747332183204497574534182284 1.0906360925955899705512787364717428 GT 1 -850423352589269347893688435058395.5443550265885260425848803053431932 0.9456928160189885895668110058037814 0.0019395082898455833124704405252017 1.0019413915715363887857031826898929 GT 1 -8323288995.4526981276747297310194228766097691 1.6419621041021153158370022110035397 0.0622907187186647362102438514369469 1.0643153126836740550805712382698504 GT 1 -501109192376161894492637708162793381.8656673695489354874685147545604743 0.9723974605433409429250325976320825 0.0220634417539274554771429000491517 1.0223104799204422740364243024012659 GT 1 -14100329182968888508273.4773753529101265511565471868519092 1.8613916297861215111584121993640424 0.0594505990913760899369726545673250 1.0612911054018729451687066131870580 GT 1 -28112448811627251331720096748227.8627046354769563877513982318586862 0.6176743017929343730378394127338658 0.0942652539046844668011933251943876 1.0990087905352781628268212734029838 GT 1 -203060543258955780296.6909920969121050104275770277085400 0.8941065134273506207211680820382513 0.0925888116146074740463718768749064 1.0971595816702635946513591809895781 GT 1 -442533465939945859.3743488961889694413257231620438357 0.1979720014336933483913175426598105 0.0765912125888306813234786590099900 1.0796832525898230394644350211060686 GT 1 -97890855894705002.7387858104342329752593301166641062 0.6691090461762828445631874061283138 0.0302221303515568602640560076784855 1.0306882340717249982323767996376192 GT 1 -55911.0643624864692502458971410179119744 1.2634955026882760829777431051325210 0.0771785076293767930189078623504072 1.0803194625651302795587223573700416 GT 1 -64680136306468993179385140928.7722838390950120749084925993405570 0.2085419509856469345347732345791851 0.0591437094874814457187298205663932 1.0609648710250813478593877599553720 GT 1 -36211547122610827713836637812653928206631.7327593639341924201297685054667174 0.1557340115173382482955803053893441 0.0365755739852180182230593597199193 1.0372612311373359308307733453689152 GT 1 -3637987435965764485771749.8359799692740954525874585234230448 0.3812330995698153702575283790190308 0.0934075699249445817434569641796807 1.0980622903061276561121217801848476 GT 1 -19.7150535732461429012549289488823481 0.3407561619370017500041336538627738 0.0542385631628948001238268724410383 1.0557649226665097793508104318667342 GT 1 -1597429382444403815.3446285566947862612850921105209689 1.2734395169442680819624591414048043 0.0029944456428338721900984282176185 1.0029989379654398171629015484237692 GT 1 -3138329473.0141460690548682824098657130641968 0.9629060716783066288749449542663300 0.0450909318674777776628514559231949 1.0461391596499564541051785949123447 GT 1 -14921516.8160604331975025848004390483706212 0.1697290345846517895587955266859995 0.0860690710762958140393221931034976 1.0900002804889077901750003254572415 GT 1 -307145.8011781462746499759892256105895631 1.2632704739502010147262182027361582 0.0281597611453611366544272509223438 1.0285638513491012380173247707975987 GT 1 -57982006777546.3824348711580779667912555057021835 3.0973122578970531196316557885519185 0.0968146463131607403665254783493660 1.1018274823024803057875970049578485 LT 1 -348816964557.8476607140177554050031264065664298 0.1674825636422431644369754503214174 0.0295042846169410131731331414591740 1.0299482912379860906180140728485525 GT 1 -11367983862376116091.4965695631878019006097557890790121 1.0790004139050485361808875122663601 0.0327091504468535506152429342336194 1.0332560536200954045238258237761351 GT 1 -93126322726568769348976795007682.1877718391002050695537956379273674 0.5599921026774776893135304123136147 0.0804960338319092889276565323192071 1.0839209215505541930181074331315498 GT 1 -81258368688476950146237331357225309678290.5673342500125481210092612806471014 0.4649523633448143233284125135804346 0.0676530918148316666628058327565569 1.0700503144700848727082377889379513 GT 1 -118976208980494617.9355441858625670311877099985538253 0.2387044451849545635797590014501325 0.0443759641148451360483461579082477 1.0453907111833952372811856516463225 GT 1 -23530992481721626615.0887564548574962898248478186776765 3.8611659823462313361943760970844824 0.0561208279530559082575147945277429 1.0577571167417696359762207726904020 LT 1 -297735094987269993080722778831437447.4193013103353671152668330431226174 4.7951603897973784641095360637524985 0.0875537146324197037390070778482532 1.0916260606087201642549438415642275 LT 1 -53897904978978873464234526466524.6626373491099564460771301605694703 1.0684775334840808257231155023427073 0.0692980264781736297962951018787368 1.0718161673222934930070957988006914 GT 1 -8110638517078049131415054953684321800792634.9898522143338018805774030376931963 0.5122567002156390207248050076961503 0.0673147857895774090893622079817944 1.0696875260495506077170845606541405 GT 1 -6397241414324717128449603611289742439.6976928377826748211238397903467996 0.0112153105494745077704463801160528 0.0440063526518931705840606411036464 1.0450040109861751553449812169031447 GT 1 -139715034145353268260963489346.9889988681622190493359329932647942 0.4874396140552266821461029869618203 0.0322441169326254565753821250098887 1.0327754104238962984268768121014106 GT 1 -1782571136911335.9874345156091412061137546994175531 0.4288401483106147527346869840989538 0.0082053133135131947787968053914000 1.0082391621843586496041236565420066 GT 1 -424780497096986104804136959351.0544150133684830524111891038404287 1.0362045144256943609316224272151904 0.0987355737553564700469655446282110 1.1039565835822183578743714415434337 GT 1 -3870615539201293874682514529377.4820521809945402621869560046748261 0.2748015167654007306613609566674990 0.0493008539147294519309194166642773 1.0505576218133371557885310719031925 GT 1 -18211262371485733499548021159.4773855052159514364189929376812643 0.9284193002551328998316441720732056 0.0492763979979059946526906895173730 1.0505318980053629365036770460825805 GT 1 -799980987.8761366085412968766206038718567481 5.7574294108584029801144739602065733 0.0216338151846914480185288194603031 1.0218712569242402210030995125094909 LT 1 -118333856364578.3256094364240170493761364813445239 2.2482732182057175167037205181639247 0.0542071872731553703284881775564675 1.0557317479481536546891602361440490 GT 1 -13309569146473723526834469078495104362.2464946522120076274615734960987227 0.6407178983905834630483093358004352 0.0311800051382208242762595946801019 1.0316764481641390344221221987472310 GT 1 -50201378068511525044141844847787995834.8077901007877520643002545391075424 0.8846249317403483807849528377676481 0.0076130856685472824400477636797771 1.0076422131326703501471984381231869 GT 1 -9734063082332634.9388900073334024497142386361325022 0.2037514883529017373297679819637010 0.0546245170895092093649569179013029 1.0561730939923854028934284767550144 GT 1 -2089.4620736460286806161677275557742937 0.2957848107993722820532163772627825 0.0386672508893273388238957222373578 1.0394346769668060027784548769324886 GT 1 -77950468407.1425199230538029124728295176552889 0.9394620815360303727988782384586622 0.0429104096344835130307732497857237 1.0438582760639380483235900166014652 GT 1 -1.9257768206286045589535302013676598 0.6382138486770625775488082879922822 0.0519554288647148929100398740849578 1.0533537618668404921407803809850887 GT 1 -13033253512594485579115913.4825323229814338136188408626896154 0.7673164618788037354374237098769687 0.0388269139922754779701194426286406 1.0396007759199521015708319843583151 GT 1 -2557115818057978.4948525994596628440154853450004959 1.6382965158161755781583454287187857 0.0956129648306946428254133655359866 1.1004978739649020980860639651382906 GT 1 -97371126380836936330.1799009971049057816858349774723918 1.0442292584598729380069095156537803 0.0545218802977887070106207481687378 1.0560645326614822744430792302805945 GT 1 -63780899394542770.0119874563715206218857332293081108 3.0347340644974341440842524507421358 0.0358626512155155476047239109785798 1.0365215165284127831351030119792277 GT 1 -264153542526652280128966559650.0483690948855308574774569251426321 0.0811524190843550217335998998287880 0.0869357417450774309501381869047982 1.0909490194236040700037461254331713 GT 1 -6291434793419669915512.5863211300123570762047666081198141 0.3183640827651291075309725317475156 0.0565701340722991431087780134155480 1.0582332508763400777694989176682942 GT 1 -4522364405.5215182081919209026444596416020229 0.3741920529598949652265264913864673 0.0150507702519666004803606615733370 1.0151651825414667920970430525082103 GT 1 -21471150676374260300635349125171674203199.7444720151860788026345188434256328 0.4060213272747690353812168154436468 0.0410802129766086941920573133756790 1.0419478499082870969837243150743282 GT 1 -165776774278341.1619092625894660276890503993874354 0.6333732915333147604824550047059782 0.0115827128783402830496909000355810 1.0116503150149042713343407843932994 GT 1 -10562660347537378804220.5301377202266276463769826879558288 0.2632061595820048003595984531370805 0.0739976784443317149229229596593247 1.0768785372595450038001433019004814 GT 1 -669330147377236233145018185768121784712.5686913697768466683544163618083479 1.6241590504653624098298695990816618 0.0054170881636815189380823584378181 1.0054318137898545667672896236883477 GT 1 -130775537341026662895346344605958785097997.4408397718512047903278716139364336 0.4108574076191492062111437661668445 0.0870406643028904580423118010035068 1.0910639385936257627422585850854698 GT 1 -3190539286707158046094741338267201414803.6684959078599786235849031589760901 0.0237870055141459465822667766744814 0.0066567611900001827922397721739831 1.0066790162441405805590529874818353 GT 1 -25327366911765712132057.7088193332754944809817184719357746 1.9687674312448228594373278106657436 0.0833301183417377724510673485439794 1.0870078697322214069326500758491060 GT 1 -3065397654561994585716505.1802099208740333333791503688862718 1.3631755321073581637213781130183088 0.0947102609280694550460977914735291 1.0995002328498200727941389879788374 GT 1 -3901960729461866642348220508.5217400236811332824284344534921923 0.2113878383411272422944152119082637 0.0756846726696818411329181442316711 1.0787020022130433410078508492552493 GT 1 -13985738834066329427617120.3467270889522017579522184701306353 1.0581866604444729755261222351528266 0.0179727990000474057432102658272725 1.0181362714186780456156801165334107 GT 1 -267710309537490436748841743426188.9556989013875339304795203599019451 0.1629373315083878147228624259120346 0.0701186472710639188652623935027907 1.0726982786843852189790176753324307 GT 1 -689367172862993537758640.9621124276984781769255792815443558 0.7979578744254285837392346084819224 0.0216519122819904567110156339971981 1.0218897543589996606126013023396695 GT 1 -5221312768419546259139663.3554026984148061490349023598677857 0.0837414232784291483661467132935125 0.0313621324184195173299084571967000 1.0318644546072886900153718903045197 GT 1 -438439847354375784446143336488516.4159974742789012598227266537676689 0.6775716469590479076000761282516499 0.0148320685339210596298225719156761 1.0149431635435619928309716493470384 GT 1 -1500024361.0693590411416409839559472567790651 0.7983743095677218723144816848604998 0.0447975180548097860837605674162338 1.0458319379958453321283862097357284 GT 1 -10742883.7593468199748045987293344876667471 1.7321339917118098293222353828241511 0.0779197996325359503424962081281617 1.0811230739943683402504889372694841 GT 1 -19786352732.9364450017866592381620470109031077 0.4825711469577693948563664061855673 0.0564016833490941798703836492243462 1.0580547154149118092677659884088173 GT 1 -121353551836126667.8140093168245848204975650742317463 0.8810887447385916382863871974252907 0.0958151743587049583301829417221797 1.1007214863446305619888398860602046 GT 1 -510487.3114498933738741486367300890039531 1.9069454679280731547370924835206895 0.0644932548325921300259444429234957 1.0666669230669335340215982851760584 GT 1 -69.2810585077205774032163648609393231 0.8600033367212817225419377247975688 0.0781928538525169606665087625871658 1.0814192463418743640466553403669785 GT 1 -253571486183985093364496801414531.0011144078661344568590499730577977 1.9199038040666543211408278224064114 0.0058694036066067499122889351578328 1.0058866962541741460962883922759402 GT 1 -2493090696069653729960186311155691937.7355757460512713898896950797425887 0.1893908449336193039879449214033365 0.0447298336063595480891256903851350 1.0457610817618789278728503404978978 GT 1 -34470.4045267286769323380433142007406948 0.6376529536268380782340576943547140 0.0945243053463165053932307893572698 1.0992948439253981447321798704956518 GT 1 -3305957236948185333294917558383.9854843845350267984244350894119639 0.3220794081363931330303604461137404 0.0761465713949382511972860599276991 1.0792018469738531332821142231428492 GT 1 -57.7155346640883075484877995747709963 0.4655094502143869558569008616409020 0.0173543647136279571328264269646809 1.0175067169244913961504731025651473 GT 1 -1284286421995197225290450849338069276108184.2458476542078224020710980866647163 0.2028656018405460151833484523731207 0.0878894477037047216618489519941905 1.0919940766311797036135335538235348 GT 1 -892493475630169719867747838167412.7626617505172647150373509137271694 0.2580740751999382558835280747120117 0.0005851967620820622013021112541005 1.0005853680565378050528723510754011 GT 1 -557758143631561746838.9825748638193071026316533006945487 0.7576988327551974100107999799615377 0.0241870893130727257658833064335165 1.0244844008138474693652744363426647 GT 1 -2.0942499674990206355543439633361539 0.8412921531865169005861695335628277 0.0481153463600287090340498239854481 1.0493114136743844237067469887292724 GT 1 -797616304114610005863594641123821440.3657979134019333825475984695894013 0.0809887583238554098235803455773690 0.0947672838199133965851737196041128 1.0995632233879350599930909452199752 GT 1 -2411685773267784995.4778730531338953563290705374462650 1.5604810986231537507723518310793005 0.0826522152981916105779862344169350 1.0862686150490707571728688397715929 GT 1 -3825614920303107894422902525537130753.1479917819926412448007645465280043 1.0791970898415216208884290164564720 0.0631603331410974331910037423007457 1.0652431246628473207186027300765549 GT 1 -153427882900505530244.3508607402846821663032536114444250 0.5595518158103105238295585105032688 0.0310009014680332860790642353702021 1.0314915973993714474444592163402480 GT 1 -3338203363052341211128.3571712433927193149780593660526082 0.3647437232691499634952534515563524 0.0471197451742786358418046565260781 1.0482660339826515775832014685603712 GT 1 -32896.0063347468759220866015102780031870 0.4646786608750269131839767705953570 0.0505520370533054404618468814053291 1.0518745549217868282634987890097764 GT 1 -107433276362764185210839318720.5498671228407169073373247106103111 0.4661330045398245769918656851838808 0.0131821373015895621034903317088638 1.0132697928507089084603471111732386 GT 1 -1538527920569324391762602.9995358512547684558146864736633228 0.9536276324205414472343585108091394 0.0959007198838760028749815082276854 1.1008161014827744987534365057071876 GT 1 -269054411711520928859526437453.8504938461680971936826226066818639 0.3427809466900374797900744327808807 0.0647986540622925065962524411236322 1.0669934296275943074598073518112478 GT 1 -161967374978972209676568905.6112754805299226151770784208505367 0.3602487761801296952868848040028704 0.0150982477778689828216393880948547 1.0152133867217282763060063084211361 GT 1 -9225406903381268732499697633542136337796131.1002545924090161513700324608341940 0.6000905686950890614715843703318825 0.0778594954918670079723660493939754 1.0810576760292213183406200310715303 GT 1 -8.8712011255001250389898430078588281 0.3378585633142007317573437740388344 0.0383224683690652908048462576519713 1.0390760907154381261558811096357293 GT 1 -6322039454540453320831613526855932609158.2219945374505882017342106773934699 0.0244597482672317117405547115081802 0.0277297683857350118395483389890009 1.0281214970969438847587611746107875 GT 1 -14512133385433296208879770630792884700325512.0681825573105343101924501032260568 0.5657642626439543030419095515120092 0.0292289034108863390171775518473085 1.0296645783488525282738312115830585 GT 1 -1931201627.4031723072032031408145528842050844 0.0738502628132653725150060695492350 0.0937260001332366306784668639361465 1.0984135905523097283727945983320733 GT 1 -866050392479383.5070824080113705768726840087092129 1.2434343660199247500237695856183243 0.0151272214933481471718472489958434 1.0152428050282697200597832666990672 GT 1 -1521239207929470346902695138.9155123474500875448760145134096968 0.3979958478178612303233352160567909 0.0336593752433610805518739592124439 1.0342388933034820630444410225414174 GT 1 -42704407426995311195.0118766054929932694094946065739618 0.2357007657699728315981677460901605 0.0672311061810371489571614465285994 1.0695978110485369579641647450211142 GT 1 -2479551899385575758476691005499859.6004100138103731699952788311349743 0.5653468404092140731957435528634900 0.0199989082596720448472669721654956 1.0202015932973971576745639536253014 GT 1 -291869914127323906.6654878846911654016116003649482003 0.3181002658266409346118697862879151 0.0176514252993564425719534836352227 1.0178090695588978695685801181394727 GT 1 -24.9828485567533584720966828370280127 0.5350624747197133354454837472653367 0.0238163234977413711626101114514550 1.0241045171375915970572640705212911 GT 1 -7663920122822012282.7560355360219188556930982527695231 0.5440630049707916532357655099503248 0.0337105063573348570136597059302953 1.0342918068056560388715350828057647 GT 1 -4916472014439752115.5656231443490433351035222082949510 2.0980459315503521967183894456477405 0.0277583469534382323347028948625430 1.0281508911756643272648793416367587 GT 1 -18243001384641479303417330662.0771465328446357908865879267294238 2.1399251566038612369624473502121469 0.0682898674619962830907267907207904 1.0707335292623609897856950672685307 GT 1 -2428598716724.1910398006799398279026818955648605 1.3196042665611778531498820339468738 0.0644257610922991607138253266164389 1.0665947789524920031242356592224631 GT 1 -131806.7132610629541650110141500994917649 1.5662699657534559177500218436203149 0.0276982095751914218937289145736419 1.0280890387357325903865174275764338 GT 1 -4.1219301346137144701362123055918412 0.5699586700645058238107815329700238 0.0589638886432336861861096022344017 1.0607737646211058357770822277223934 GT 1 -977956609744755879268530903524604063976633.9552944231266482643943839308969205 0.8894745131007613280954415724454021 0.0580029951586277326010746186096693 1.0597531839847436401187217538861750 GT 1 -336931156062697.0732222609530938039321677010216990 0.8850669219022731613828747893262003 0.0234096754941066292122355995293686 1.0236880347291789301619923874227005 GT 1 -270229009807847896388788.4664178936314687924324895995424065 0.3548799362089270812440102182336052 0.0741669002413719140516070217891958 1.0770612984224037656167167074323374 GT 1 -1523.0417895117075354167278152640951806 5.0431891312427849474127650739910195 0.0202571473708378405659509772002822 1.0204651370255483902267474625921670 LT 1 -6077010160036380.8774886841586831062395868364745409 1.2730677479438985495440307152886087 0.0963723133821550562391521141465694 1.1013378545103674069172241289010240 GT 1 -487759277570232065375643262405855580425.4972846519839468088839520270614345 1.8214980968842589905236844872741708 0.0459016039391914169556527027426043 1.0469884723275121769532537142162566 GT 1 -205483404671755971.8979833124351418367445914310601341 0.7025778576899780112243369050901380 0.0995163764018839498973464800190759 1.1048233004303079033618704278323299 GT 1 -16284084092567873881188980303500899076164409.8273653516883496523517929622320963 0.4069399854699186676698372938786271 0.0112627978821168195140263232049379 1.0113267034804930990606950555594272 GT 1 -73683155333092401485373119.7626892299542758678472898172140069 2.7713778580357819017014674081383050 0.0495912699557621104955238019747969 1.0508631447633372123296562730863055 GT 1 -2000230701821151090.3584298960389746410021128770288710 1.5202955760734952194226159415677077 0.0553021331898441678811235143179703 1.0568901202701928964086166498602673 GT 1 -1067912738444551861691723740539275.7463347443712584413348828254051203 0.2274572542197391217084212965000236 0.0182309295432330563681782584151368 1.0183991607503507314531592830376735 GT 1 -150757634861.5449835956205958021573625089193848 0.0762047922827264439756438315602317 0.0005433475090307669286452841524594 1.0005434951757805483262294850580279 GT 1 -7298029662267790267948534028953.9510411087623682992406626786515759 2.3799853917572392431484768560803451 0.0462441848965732255304842901741150 1.0473475993080320414243937002031437 GT 1 -657444625960188239.9052983087069636974378478733006979 0.3661312208501307080941872624859365 0.0304454741920189583999574650483531 1.0309185647174387164897184035753215 GT 1 -4539789487060065015535478434807558.8374920361485276866865569447364296 0.1319332908070281264929635782167234 0.0827861232720272327923807939729955 1.0864145986667258560168046245484858 GT 1 -3395563875844788190388594604834843459825822.3555377988436652265567499194999179 0.8583686730382639644276143899543422 0.0775603768309782775706791727123339 1.0807333543486150185410003011380294 GT 1 -23995.5966925023071789209517122872937284 3.0655353997064195238363585828748184 0.0700936061198331333576383230808276 1.0726713496423179663295222837499913 LT 1 -118068073122472747302443236912905858829.4017814295946046444818596278316690 1.1465277058240445672889754820633333 0.0211944793701619562268756085269178 1.0214223072274032823911551176311370 GT 1 -22980295438602483.6136785133764315924393708917056983 1.2340801693202987063620041884953359 0.0167816701076939548695237363712550 1.0169240778077680539027162743055392 GT 1 -7.2042400233410000543621515519549677 0.1696832514845865156164791925065876 0.0815667371689244759694807005448242 1.0850860358332881742754802308336295 GT 1 -43577138083.0002032607804603729646248296647163 0.2687479618791122325050196356008488 0.0036171948629313509709055569051874 1.0036237527311036977626185858350988 GT 1 -29478476018425394721518583709.6795154234471696064813300947268571 2.8068710107148368458838692384189257 0.0496782341613883193497718746662255 1.0509546508509969441341087195055203 GT 1 -764500429348196619894400.7651337500930428209773329469855336 0.5452485601341895464836854711534148 0.0329880174467485513193246883120534 1.0335443921337948188626418825854538 GT 1 -902131291122494.1754169632268093619577235095895430 0.6601463331533102083842888812846297 0.0662090758084310657206710065483721 1.0685027157133837669915194283285679 GT 1 -2589666044712632976242876796835.6313493075039828765962289572106876 0.2781069500044860554518279219892176 0.0897254873210886716954414141272308 1.0940090626776419676395483228967472 GT 1 -20563421.5930878126145092847685178126454522 0.1296811103907701560973280074099163 0.0568681615619686606973939287239958 1.0585491986573843048430509644683548 GT 1 -753824844214.3044335910226178705899446576393482 0.0512981375084355105237052546035633 0.0876989008026049630532668692299780 1.0917851907674695015309258162696165 GT 1 -540515077184841.1673401635286413821625918591027806 0.0609018272452728298669530060462928 0.0488481638438884087381712785985867 1.0500815697108145919791550668769010 GT 1 -50937424.1703178107537045666657068124479749 0.5471035711140032014284191823636388 0.0316318821837790164631406869509651 1.0321429769961061044240514928858329 GT 1 -964.5809865503323808788545654264653982 0.7196628077821899966727978736554758 0.0957461917448327503730856403416366 1.1006451966518395655444482926465629 GT 1 -19215812818415008307998637855561907.7959913901552416283352201944427329 0.1831438537857314003823815183180395 0.0953581469346796464840565385446734 1.1002161560781866833090923880046727 GT 1 -318663935791959643795250545350961374332517.7540870757734756658890657649264651 3.4688447028110333439687844068869210 0.0699171650354612698016860188972260 1.0724816269469766587013872433871115 LT 1 -126278610916300212644923887567.6951689610435997336614067354312916 1.7010402413264713689907457651697303 0.0733204095379112865030366189941055 1.0761474145209937503125993934298876 GT 1 -18433185.9134673854554074202491525392169477 1.8047564550567311733746697370320699 0.0567653736382472563427179300989181 1.0584402188533629849435139270211915 GT 1 -4073078218043043804920555.4745540720090925143071946056984853 0.0319964278388263963663694722956230 0.0127347716892610600298724957901676 1.0128165539551179759048522646556781 GT 1 -157.3774432374058878550717140596062127 0.6129905912424970325032560669050314 0.0311781704743780013894677544880158 1.0316745544562104254010024210369253 GT 1 -3591886027148238840321868934740761.7126174496831586890144307282741150 0.8322322128029050805858367684310335 0.0697133999554309989360636421005552 1.0722625682191663856554385094582223 GT 1 -606671028521794204242749.9459929879130458802065418676663282 0.6175434975342783197483882410476707 0.0104830565583378801050028965993051 1.0105383908504812590620883299607766 GT 1 -53735976867512725785680175676.6505283037630683288671430919329840 0.9784716351364383256658705128966579 0.0249378437182745422032829948051496 1.0252540599836979113561360499673156 GT 1 -800605113589.1226253031896429321085851599756554 1.0856378401184816609050346892113738 0.0441374934699689029697616149355965 1.0451411978953632684099064576016220 GT 1 -280691411023462025728904620.2709620936876412362436111334506405 0.5724736088317846981168773125965362 0.0954205046316888919591797829455456 1.1002850892654806817910668866968234 GT 1 -171519337534.0224347059877403469801598161821911 0.8463982205970492829276433814958596 0.0199433328593954029147406209441209 1.0201448853763782738702342736945717 GT 1 -2294794079031281439.4078430321277651781116846341198025 0.1598189326050889911019671378398935 0.0491051798284955478229075329194595 1.0503518217420320197197963012550872 GT 1 -5637894298080617910.9447005980417572782490621096546723 0.1957072243040331635231563516517088 0.0618896399985013385142275419545699 1.0638876823108508575503789460608013 GT 1 -6862923780440028154569050856835563.9083419424886976612534833582386693 0.5844330558512692843925527936067367 0.0505579270697833747076258959358303 1.0518807585632475441435977200113060 GT 1 -1412827751878658743168606206969172351.2682114527635201736430886070864179 1.6889966390852336421524936331560886 0.0209860106824873338444694780999974 1.0212093471589155585355855607131858 GT 1 -17831979837646956475955169511050550664029.1993560851908959550771460523389177 0.3654635177982883950364100700841142 0.0042703597256762236225256267079257 1.0042795037532459976083651980239992 GT 1 -90714.2944327095796041353721442914785766 2.1116362901178987631577243483346436 0.0026627825118320273522983995998829 1.0026663340231872101129645879499698 GT 1 -336551892840783743.0902684287153470832800872573101730 0.0137496006334067623287426886581543 0.0266664482644236750054143596659497 1.0270284480020783986861347688269768 GT 1 -1582548528559998033051475329154349516935276.8991061502992582602542504304375590 0.3885624908592749651879540016834358 0.0118206024761601334264390579807181 1.0118910212761425027002455534370639 GT 1 -90029715431359000.6201682601801799395143822790637258 1.1511671651065458270443387652032677 0.0631733298497564493708299206272440 1.0652569976864508409904934358200316 GT 1 -1085878252889149948616.9546557052342530936304495879075113 0.1523144688383519324062958415779433 0.0861735243078007207938925938867054 1.0901145770923353872605436440304800 GT 1 -76698999307922.3308750478957375297205348458480543 1.3405201820692732853194728838783700 0.0197904046330241557867192211960372 1.0199888573616065758944774142145645 GT 1 -302880175844466786078450242731855793.6537059255013621947640597472681853 1.4101567676308858024176548153088074 0.0264661999480916797555815179780792 1.0268227346371135837953852331470506 GT 1 -69459387.8529908739053015525695579390920937 0.6163916800789342919880639908818512 0.0146946713069115328011975601812043 1.0148037074747989958156676532833238 GT 1 -34330956961821834284877.8451560579328802466784242926741470 0.7489197095285321449918921256321851 0.0723623955356897465654173168803876 1.0751141348964727604331240440734941 GT 1 -3842.3512583348303148792908382150232992 0.0854672656712610213606009619596321 0.0136380675704671964677376244791370 1.0137319203041903364568401761580899 GT 1 -6229116130112944688783.0001316089898300351088533083227209 0.0449417470679445126950412477609622 0.0011555989903101545598927616587356 1.0011562672096687068803095144780419 GT 1 -2217063.7093834964857069420116595635863261 0.8507789077124515074767699376582768 0.0219995596567669235933308360810780 1.0222451586987165019911922497295877 GT 1 -7.4826913253435321276843778422074812 0.5440994659073377076371872100272045 0.0860259256010734189268365447578808 1.0899530729205144862306587444563386 GT 1 -11939398952932092227139532170754616686033957.3888678956918975896890663599240239 0.0404141155945753759799537153049694 0.0630241827520258800300248276846241 1.0650978057768994396598912656493890 GT 1 -279417124042910640.8793622908634161417356380618948786 1.2748683229297612325014496595573226 0.0623399201787204609007833388852663 1.0643677839046372529565016901555726 GT 1 -154253.2727057688934189445977911936160803 0.8242471448855130566875772077715871 0.0125913707386334281265364767800818 1.0126713138180393100915149732593633 GT 1 -38313.1638843997116596958073170061098920 0.9592172027603072247901628503739050 0.0044320897269699431459852744001610 1.0044419405539188832719852961810249 GT 1 -1956805611551283347623375028671016330420151.1683197222099840087815148512143251 1.0178654619045412201167303959058909 0.0011898484819606650827661967830131 1.0011905569136723633816776001957603 GT 1 -44.2401098403999862088583951879027520 0.7701717004631164857175543647719074 0.0005706402211194862064273833428622 1.0005708030982162282912411007389705 GT 1 -67679056986.7265766284906320154247863296214982 0.9675047502896730493442645645802528 0.0488766178438536770390814019459161 1.0501114854661095964757825266803001 GT 1 -426494451388735538152.4186802824388959508223077507527312 0.0458201077769777752938134523182067 0.0893070460102990070504795788082093 1.0935494813552800956460707427832802 GT 1 -11833409028799240065202.7203486250933320140719660659474620 0.8796955090216721374814041969818963 0.0620041409322022671380915185426741 1.0640097446255314143729946375845413 GT 1 -21851233.9894121544252461405227079857781753 2.8961643348459661719846550362378466 0.0931384767863921185476892516839744 1.0977655161420641049926178427768350 LT 1 -2367.8952185053842349821362435054888980 0.9694607187934754926059042174964326 0.0281526062381835451011176473599590 1.0285564891505076374201117911244339 GT 1 -7.2396757765347190352630546018545906 0.0793957834927391682996380173368232 0.0401450913367360620978870505869194 1.0409731427516736297181191034467889 GT 1 -99692294.9856430009348018582364397883258067 0.3578008976345162241831606501692558 0.0713220145255037706134170599833017 1.0739932251494921691866888844252244 GT 1 -614810194698605764049534978.5875556239315820885247101713718019 0.5304780353812206783224307833492562 0.0147682542126446102948269878225591 1.0148783905718289561825969588172623 GT 1 -56301119011048153008697.3181961673281280839458784331444858 0.1844732496517322424252390615779119 0.0369136942989130026124856288618923 1.0376122494956563057135258499892483 GT 1 -623.6570076948163476470160724003794645 0.1548771591735101634498458124832449 0.0419391631151554339613457364957433 1.0428439989724123144886244282550821 GT 1 -677629033908708266124.7423059074109959589675651783196065 1.0282012710506293760262117830959914 0.0269510555850895356384126930063184 1.0273208954765672860343464882197711 GT 1 -1.1962961807761038371996335499852814 3.4805100128741479873260231712051017 0.0018249546832277883786674546039065 1.0018266219417820297157583250400455 GT 1 -276537465543970818342066412732039.6777345714325863997827417505509555 0.0942599519776603285177088148264210 0.0500507908855998074523474015865844 1.0513467599069110020702879609305338 GT 1 -5575842496598109474436389966344.5241497150040679317430231506772016 0.1388735657270581156677175218850611 0.0721723776229949671146100278783720 1.0749093151988462537042211615103183 GT 1 -81796789951.9144477600120624726458043790988434 2.3849416836146312564517219448927711 0.0512723829095467800999178416320306 1.0526335425501152656609944159571358 GT 1 -3854043.8156570117985536907262039357429871 0.6092428210449329821725793616549420 0.0284302511438933701504750826254898 1.0288422177277751479235589033719357 GT 1 -406894029330715519182.3014968708761204779132323201010044 0.0248371623407518208114679892376083 0.0719426155242057088695328152160224 1.0746617113881416934153119756801813 GT 1 -68727942714461802644508050918305.7941185787959803067715829753635553 0.1747540526918280157655246471828664 0.0588602198703571165583033210400939 1.0606636061885700397880412138370817 GT 1 -188302615296521.9849179358129987704483265718971080 1.2827741618941698518350598772102084 0.0770578292196129642781431163153797 1.0801886999844759754001412006560952 GT 1 -282472780025798338608269687045.3571140723120182321663555718753443 0.1209704783508244444194259373808347 0.0115870259717156827287189681153163 1.0116546786605446386047589634716787 GT 1 -293199274557208640903641298.7659915528317631314724054844829001 0.5621771071805151847946141642076099 0.0186479022437299505513488867106525 1.0188239666293959113617139148952857 GT 1 -60440108527845721466234381034011900.9438787516683559348138904027916243 0.3313759491508987568759445292222000 0.0476214945210785152182218892250951 1.0487927334198649651115232500881617 GT 1 -671441569859471442092218243175475454.7077178695931674904347427799199733 0.3174859642781682918020346688458118 0.0561707723701327170669500706840359 1.0578100321360085062335280956171060 GT 1 -14929798230357358873990659569835172172795.3389699940068963602888522325685438 1.4770783865707724905215288820226265 0.0016495961024235939536119370539678 1.0016509581842034517089256232698618 GT 1 -7112.8683167237388844594101347717989565 1.0611584972426939271172419822752788 0.0431325182337683862041214582065338 1.0440903696709639632793740302315919 GT 1 -3589939785.0907690398689376693428184914046268 0.2266989793706126876235644661493859 0.0437587360715232230114998764568111 1.0447450296441928151126088935537140 GT 1 -295771497630135784891382.7166975098201759629160787545163334 0.9259041076272853901677699264013104 0.0761720767193010180161815437810056 1.0792294548991464809214809237990069 GT 1 -55956292407064477051242520011938969.4785649383208034631602371113725781 2.2808240009147377059599573380445371 0.0913158792339499751204172663779588 1.0957577471049732909868266383818105 GT 1 -446631727534935727222017931.6154130854644446971734006323873786 0.2350191448762043101110771796528001 0.0187116393174014105403738050181919 1.0188889169603847716108157102083150 GT 1 -38726408353082944377404801746166369454.9010979465671014357798886985222659 0.1075519968159949076610620238662993 0.0865893165028760330587231270112169 1.0905696818937683552123447564827888 GT 1 -592786957736790.7817401682428437386858660565134115 3.5582396281122961137424731821471814 0.0086829484666494235165466017920137 1.0087208649075756036515053344727705 GT 1 -1558760050043021992354364634.8935741362961762449933497836067676 0.1931634805355322619826552937492475 0.0134596534719238942714051470562376 1.0135510556958084910524047027310944 GT 1 -128.4795468193557802244165187221451633 0.3199614822791943486036651746965695 0.0956843217951443208965537214580399 1.1005767779925889721514332218472095 GT 1 -13091512057269786476263162921391535082121.0271790982894928770378595211568846 1.2080555020278684719240701722475104 0.0684422840975713246162157043801731 1.0708971306855729807792573312502398 GT 1 -77687052010260602753.0874380411146861620964780074740945 0.7220648505347798595249193562503601 0.0054915067707156775402220295030973 1.0055066405241910181494405202869154 GT 1 -650426462125391602048381198270680526970303.1331696396650843142214835918242879 0.7119576385123985214326195463021682 0.0414611663284610239345823526000544 1.0423452022712044489637712072232500 GT 1 -20923552958843347670145708721862449585407.4208243537610028881518651431340870 0.2730729268637360736610625870470104 0.0682971960573739358274323652957668 1.0707413950394351060712541399856732 GT 1 -623581747880412993572354929996.6030585692300350024698695010837783 0.0266609979719887605419583642303156 0.0619256314523497041506040898714500 1.0639260489527972641037757889291114 GT 1 -818.8937407610302311527528452921160881 3.1399335888331462926406966841186764 0.0144555316015119635474950591089510 1.0145610307300505216952169330437730 GT 1 -478153601779985319371781074774.4922736078957827122070622866821309 1.8329271979325553258970037068866090 0.0774795953704578188615179456985380 1.0806457844724606055281006536984875 GT 1 -63767444700.6657284356631190065153510945231369 1.6838238911191487991022339230114098 0.0007202444861550028674493034343850 1.0007205039868250206018778974975382 GT 1 -301667828269192166105018536.1939591820123029955129594081782787 4.7606280589549745488145572480046882 0.0516475846454847246916171842989742 1.0530290996530452428118049883821264 LT 1 -24147786607922374757019276550.1660588647560933518031802358739757 1.1808284708541870601950194579690942 0.0903723071107450586906975536508185 1.0947198918803460525308328630858159 GT 1 -47756786565400.8897171243744592696886350604111764 0.1829362938832181746642650951342954 0.0633566009488889350111580796533874 1.0654526465016947631112467023505216 GT 1 -123524250302968334520520838837819984374.8049183167785850546911110599491868 0.8530870480484659285626340007562664 0.0979197582412485797224755098106845 1.1030518030549714623833079636447425 GT 1 -28857249155.2857755733966344295046902082391460 2.6062301269075712043534943018214611 0.0063466183620370451263067287788265 1.0063668437650430792551388918646434 GT 1 -16616458.8320096184894239110769802779186947 0.6042582507387266732087473993322982 0.0797701394643934596446895198989648 1.0831317917376987461763776796035894 GT 1 -102736.7189932439782404294570061448278911 0.4081530136595621837712014007639948 0.0450584434293856149343952432527320 1.0461051376822956623802322652756125 GT 1 -1865.3350569079536193461143100114959940 0.4127738614192639027986938973214971 0.0924019212515537651923396910235325 1.0969536429270313363433657241829044 GT 1 -108052274557489138501.1126330211183191280384690963154267 2.2808718669324676730679856772141053 0.0109386910360411417562695631127128 1.0109989584173222260127772275463476 GT 1 -2880222856361042161495.0277503783964214947040833686368109 0.4711189111160366197724596123894685 0.0716294054690851899899414916535699 1.0743242783590834131786280142140781 GT 1 -6401087021877918944469736282970741778927.9526047904593740343934090133857130 0.8462022047499824827965253801071541 0.0690992069518327410187741075416615 1.0716025669445253136830296124695646 GT 1 -2772494321937028081719070193386948271.0957092923880336557962735582028613 1.8385820345186504891480005802734385 0.0909528138297965770707875837448091 1.0953582761737129259608504908456850 GT 1 -2790.8117962806524753839903466598865686 0.5293798896736774318469126355733185 0.0751809885053142212312596228726608 1.0781572238632510054953503798344733 GT 1 -2133891233025137479626117784.9098481676574114365324770553336947 0.3299184464618830514752148803176127 0.0067402303191630930386496883510596 1.0067630482614638972424046862198313 GT 1 -27982612111911.0446735225338168602768573826656306 1.6183162535539197012129725299858057 0.0593532805156697430526284735996378 1.0611876408297975635984697943049457 GT 1 -9505346066423885753061169.4035360134086765595438468093214002 0.2294238021717490582372009078392036 0.0051722367263586603301966989848192 1.0051856590450121879585711557555003 GT 1 -195615874329570199.0380007080579707740588441390073227 0.4427044769024751937946297144689954 0.0904761761890985426749411486849608 1.0948340869625179570219961377156105 GT 1 -3129894769239793.7704516414158192096846453388897897 0.1453959001709308883160412384271437 0.0526433484040101400223003074278633 1.0540796446627898256992001902104093 GT 1 -107648800770490298612758459956519724.4014593410695165498753251214361288 0.2937935338188346198548957218017588 0.0606389640113313175697835595962202 1.0625553838003766108534201225125672 GT 1 -1458736618668117255192424439.7788636260549787449441102379980256 0.2006363403702636639955193729875446 0.0989697359930617866254510658090841 1.1042164325850362179829636924498245 GT 1 -165472297338813348886358896049971212617107.9860153647039179969071642537919209 0.2921189345098080168493788161798350 0.0118558624804338586779071796509739 1.0119267036972160259941408848062452 GT 1 -45443542279.5402056277925725617972129117395743 2.9296869002759224538863524143961554 0.0008504042144555960849104623990640 1.0008507660132509341782640180408678 GT 1 -11832275161559338966421743385.4259844230692490297177961282395171 0.2412805227811727222845899624464500 0.0156493551010677712766155140173621 1.0157730989641934375441741722776150 GT 1 -533477385.8475340734276545445913746212630606 0.1555785514190120735995269316083736 0.0988776988283594258885422749650449 1.1041142912163632963748987093482445 GT 1 -18693666851568120.4320723607527325535456999273153096 0.2274876566206902912569920312048828 0.0564959227745584081571463083539816 1.0581545927992534071310035516876254 GT 1 -6837156.7066110030554746204228618968710615 0.0469433700249564526773810178030103 0.0657547470501451160391354053409704 1.0680162917642080599615251499167109 GT 1 -2.0755418136118691812410628211369467 0.1694576102296654231239030963317012 0.0539895489435280253195161904270098 1.0555016623628774794514157413240139 GT 1 -1894161864115611.6931117776014138956823553322158324 1.0520019436849822573829591227364043 0.0170160327539542073608182570854476 1.0171624689923488650839195854698141 GT 1 -9521363.1418619152994959675595696736977552 0.6415207821245651224264076758251851 0.0894224562117496562351029595573998 1.0936762172813777647055279759100061 GT 1 -13096608787548018657861789141103647121022.1841633785634546625426663337140835 4.9634364721362918396427418705059350 0.0669004502023838958092654825788703 1.0692433852225942657320828026065636 LT 1 -5718689862862839099391638038169.0236580629378043012864197737939378 1.4885531318619149451727014177436338 0.0575351437886087300644999944033759 1.0592566481945526460098195786387633 GT 1 -12236722804663178655.3397524298673846797129633264924555 0.2355912395579649451828509077100117 0.0936362710003375945665954045404097 1.0983145866183814167741812312769503 GT 1 -1225436238339440.0632017756629287996424164963858181 2.3342735063186567944800447181890492 0.0598223193878073791783248025971567 1.0616863996526167010873966414396622 GT 1 -13636698457898337048209612.6526502508275694693424883254349736 1.1593114376497339498659410542072637 0.0613202155747856693549934449399894 1.0632808755851451137358934820140452 GT 1 -2162572892674954645375066745.4943617212902778463158658382705004 2.1500205822864085164542001226231997 0.0332809345339110054324784600463292 1.0338473474901799323887560132380458 GT 1 -1264881332057899.4637679177649631341023780045633217 0.2195361485160312415082656184160178 0.0923268653365487515103266841069609 1.0968709490414089083234592502258089 GT 1 -9362077987.2597442032694764868219593245731512 1.3194217834065241375162274457900770 0.0252064637392394358514121594084422 1.0255295880893845474509278716269577 GT 1 -2665980964559788257932495863949769043.9750309058261230784922310790455702 0.1062467747860026432440275135969248 0.0169981876698565691779798001579871 1.0171443151640928182222195144693715 GT 1 -1730.0613731498266127633775405744350989 0.4474168818229754007681931178125213 0.0499977316396406059881543362612163 1.0512909066426544680006417134421245 GT 1 -126273.4198146144205864038587795435085032 0.3850679101747983306561083536414995 0.0299777333266220853226465278017419 1.0304362524147988857002418701422645 GT 1 -400723952576892683563.7156651967984602996997424343617731 0.3871903048031718670322215562162028 0.0115590886856005804498805603475919 1.0116264142690040172059921728486504 GT 1 -165238415178047577338808197797485.8374420670169186388502741167845764 0.1073994929522484881118649493396686 0.0556141779089538457958823558640331 1.0572204864935435150268610914302405 GT 1 -478153489697.0110413847501652107193560317873027 0.4810615549761392432460422955783101 0.0853246860626682783598960015765236 1.0891861248360420287651341010542922 GT 1 -56194.0536756875666978212416193846283016 0.3795078455121024123671176043385512 0.0696484159189655601851335870887908 1.0721927168777865459205009208350007 GT 1 -12585627992060237759168125228.3638588864110039546612538628064254 0.0378113773302090138035462837403090 0.0994829510493058963788575810122570 1.1047861817849999178863962244406573 GT 1 -3711662595627204087506845087.1641615971095933513878280049141245 0.1470787415830932779927372361610524 0.0132434934169192221536400789780320 1.0133319705079631064402016384018732 GT 1 -15.0723366151737629521938427781473229 0.1386532450478288080506438876018689 0.0324283052874278955158342434132432 1.0329657537616064234089784109217887 GT 1 -15260714583768288420404.7818912891592897151823750756258241 0.3415366697022479695836095269970379 0.0405104547555168055497449757717186 1.0413538596390984114242643666501805 GT 1 -111475527152157834549027.0139072466252383840584172047912611 1.0598138748636918564570989795953385 0.0218562174176190147810235879846261 1.0220986027978534336454294231621424 GT 1 -2918311774335118512714.6285565270085409827197022807938578 1.0712190224811766969298963842284397 0.0560859445883222866755612911930738 1.0577201599774056145469512567741622 GT 1 -232117397708795649.1727819898105621742400145439106143 1.2289598932261488166149548240255691 0.0244589381734845036181857912107579 1.0247630266972081518066618704940744 GT 1 -94704452102783207383394894392737.2485956612993320314474672467569021 0.3519021312013923093170101989987806 0.0069680191802450962552737036320575 1.0069924091919749279617746588265888 GT 1 -527259.8753060438984357169348863266776220 0.5584241082171485575929962358808393 0.0914518165554442497447264680360558 1.0959073562897020216219663991443690 GT 1 -473975.6791818888930271748903217037715567 1.5995407781704459054090094899788581 0.0973649010821859942770433482606080 1.1024369058863829441434723190917428 GT 1 -51542740444.2341092854871767623398242986333307 1.1750038067473570902806845444250047 0.0085528516435713707824453850808149 1.0085896371768429411753484339397346 GT 1 -117632771689198560099922.6181086163158817223344534185004904 0.8284182120795496518329373158230030 0.0719353491954008877055654215902981 1.0746538818072555847033963355678882 GT 1 -474977112999290836.3534273056605113831136683861943794 0.4828690157695548808616203468171178 0.0201272384638511013731962001897599 1.0203325509140293923241971299746143 GT 1 -37611930923029541.8657981672671962920997406997812164 1.4017685598017580828700316568658572 0.0227859631795323733063720075804873 1.0230495753745915060719501057133094 GT 1 -49700746544045508139478.2083806256665856883859240288825350 1.5587119185459752705055165142286742 0.0615828572714304163767562356380105 1.0635607137699072932881171980101813 GT 1 -36783310685411519100619236215.3497547419176669968520842742126692 0.4565939489471505830936965813083064 0.0413783588739588931839464959610772 1.0422588167488215410593022245637608 GT 1 -217926457106390193.5114253250197523459368287044620435 0.3365142425560631367968844768580602 0.0674974529412112156384021644180734 1.0698833960375602966085887394144302 GT 1 -1889191875.8355857419596114573482998274334063 1.8903338939274463928932327098754862 0.0630328095222803129995150195839011 1.0651070128554700561361651619617960 GT 1 -4980104854447869512427144593746187821495.4973076608904288035520062050125530 3.8224267815309874560693011249599547 0.0721541465393873032614578704272409 1.0748896661777812506278625970918652 LT 1 -822315003254089376537663.7631705061707318135834951514115418 0.1718443989658577847749521677166323 0.0327523934931751715065498981482281 1.0333007599387455856201248878453351 GT 1 -77665896443360559801088370873826691772694.3929938914382667831808088289452275 0.7959017598872577607713690563640471 0.0702642764383051141262012165316672 1.0728549014315040824454317977909662 GT 1 -28659165803850312750924308226.7212994111596899891401847176486716 0.2041503825995981727799196210585013 0.0666185126854088027686419084390973 1.0689412792665052333956952902553001 GT 1 -6.8521233357367476323575649869963542 0.5990786056022821158779750749692643 0.0139735787150884504923219612806040 1.0140721283035181145036041013443444 GT 1 -14558.8097203099092343941851442930576200 0.4810451328007089331925765574701954 0.0248389197016055724609437586469862 1.0251526110675960971131842680673650 GT 1 -5075665824.7190934377116046702623009249929336 0.2542462338748440189761942347350187 0.0267307554122090258500966388772870 1.0270945191573548673989275097565905 GT 1 -6.1053812647631308654840017975620598 0.3279635787367978576128814041731261 0.0644179200871044018994212490984565 1.0665863980330402846772945433663407 GT 1 -5350741127356451900728667.3360975507499978757792200553833390 0.3915811086603570425531051410443101 0.0229613626992149043699194026472897 1.0232290808423093702318763669268994 GT 1 -5720900084821182939234666227037150530975948.8120055993552470074476247931406113 0.7859679632000045912993103166243483 0.0840538894901822617792591492226826 1.0877977473597965110738690353288485 GT 1 -4122736017248.3502758460809695556123892220877664 0.0362017420522098836850691752713356 0.0560591839264702168643710573646871 1.0576918096394023451196059649460741 GT 1 -1310441469.0197535832596949832497396580056188 0.6454705702247286065813013046014595 0.0210503095753831164122075788249623 1.0212750265109731668855267518308632 GT 1 -17073913925787012651115.2992477418105395763486058080065927 0.0447047109141989899017598634385752 0.0954065552905334683587302507522880 1.1002696685825302720477254660222652 GT 1 -148597290621580355151225838784374723468.0482133940173148742758570232026387 3.7596210091054638469513672023899621 0.0580161408549243908769919074651050 1.0597671392180988831362375082605993 LT 1 -165681114767928629421781489171770809.5361037073406900547398972991093447 0.9224075807216308845923426851502038 0.0766434520144167047118505374637972 1.0797398265622695535101547387373350 GT 1 -1347238.2758305660152057293485334021838181 0.2059347911811905344799325030470905 0.0005119732281759949704559577372499 1.0005121043312185877200055221045880 GT 1 -46520331729309668925567975403367.1426534418177060424020796319111374 0.9169279440343367258019352170697282 0.0864940310705651756087888792148020 1.0904653690535841046227575303205086 GT 1 -1504266017831763043632826250992945541870.9252772645865437252208982915854148 1.4983325517788523892772695883354774 0.0400498964048731546929071501129066 1.0408739712927670364305899451322141 GT 1 -6181975715498258487120606137838460952814289.8390123465438535835540380629190572 1.5255540076158348685731818104704575 0.0410130134138896358972916120881279 1.0418777739654193546993338347429795 GT 1 -53360154317.4559939367333620599763802396850355 1.3699434956838278533146377567822224 0.0622429483667140298534138221011232 1.0642643703115048908019946405692412 GT 1 -4884646161362585243369452405.6595801742882609646083766626700314 1.4616790487551966400333965113670632 0.0738702002640449197633638597650407 1.0767408816581733317620364929810863 GT 1 -21751973160051297.6887606106123076634025679302857865 0.2712370254791077435703594445839345 0.0704813466026005634485627627020981 1.0730884038160855420765158234737720 GT 1 -4881969564993481986732161764515727452.4734578366485316127217266006735154 0.2689867019769446806226145264480454 0.0776038815354041234419513560038629 1.0807805181187568377663310857682692 GT 1 -1482804934368673752779842805032570417030.2068692762330185237882068897023956 1.3741784188148966058486073106780933 0.0033022047983247711324682578278884 1.0033076691094221973898129961951413 GT 1 -43935324223.9603552198345999049621359682413953 1.0865523900158716489117257221759507 0.0249138448378070308687355932605264 1.0252294476192660454620679895677210 GT 1 -537350871037466744381307111944.3410053138707022171046908542506549 1.5810629699019644974753860612414095 0.0470920425135998549995400032040873 1.0482369618533333645597700052236128 GT 1 -47258934578020649475821953661703.8217801360472898364012296900532024 1.6123667851441654337475718973947016 0.0137799707713454642626726519215550 1.0138757958985953128454485941953782 GT 1 -6526907727373376487668583943865785599722698.8512908380824625826619502036580975 0.3879155885763018057731241149139402 0.0369755515741328205253181823312761 1.0376764797327893952062172142430391 GT 1 -335427597161606181702553830241.9829888242888288150931754042393709 0.1195959224124398372892384695902199 0.0370305229852085894480879118527328 1.0377335634134433920330190402742287 GT 1 -2272911110673473353956519182706605571728547.9501358890703229013539890670282424 2.2516933007837919819602773179297885 0.0845756534661826373773965733484202 1.0883675545095305486064785047394639 GT 1 -96191305650531.1221832183779043455958543267481342 0.2919608340262259966902323996313934 0.0158563961502433980873269602425181 1.0159834537062209390944994496506354 GT 1 -51333353932153294000793908472610.3398486366861120893543430757137402 1.5425183565318067853875784387825505 0.0940512296219574525517086790629186 1.0987725193744748916270102439246387 GT 1 -896551294.7732983301012609128352355775496821 0.7824936234695322759831471660485269 0.0296869259057229141127388298610011 1.0301365027612554563550696440816378 GT 1 -3408049.2789991880552399310276319287074924 0.5234612430201992645253540227388053 0.0646493522177216489030372734829923 1.0668337956314379165784014265808025 GT 1 -14713750420.0712389920712191419649370295221933 1.5054672183880409476058818923178100 0.0865104161166678380436902540522866 1.0904833056556495841793239596942002 GT 1 -265155368821806811241624.5908242131264185739196939766218627 1.5705434153709604493940157105536137 0.0248621628158101838915186079655873 1.0251764465053306508563696433642411 GT 1 -7217713360901324858994725007347162.6786015320921982158460843315350586 0.3230443568533099492747354004647859 0.0798748997393418701671180509150525 1.0832456396391016764321541970019736 GT 1 -151567450973435546.8050925480293334563368806165935266 1.2433987824288845886350252158235337 0.0975737751169662162796253209354165 1.1026683373983857474058288917623762 GT 1 -3449117980621686.3424212211919391923073514757669693 2.3621958844253004894298831019024303 0.0152233490587215623099260983824198 1.0153404138352102319922248401028207 GT 1 -2024733829.6313978470033685568611288931549651 0.3739305811324649321516196182191817 0.0573685131982015809211249283431631 1.0590798608473608432158257778121128 GT 1 -13398607145888.6676720370101250175712856807109468 1.5105397603722968637618721021559391 0.0271211803530480242773064467499076 1.0274957475666950460086320927939415 GT 1 -4733165371557437598643.9524599773101225347839896294595064 0.3754200405551505637192027111420059 0.0637714506926117222706727895414550 1.0658956557003440954561687222870672 GT 1 -18410.8349013322414123327571161458251803 0.8581325095588919443862659357129793 0.0562197043853308494822420330572888 1.0578618776205820166684854963452374 GT 1 -75909150816940010107.1598021012277441203448081994692389 1.5786138877753221717370069834630697 0.0104557756661596996083050981636789 1.0105108213214296909983228704890200 GT 1 -1466674269623541153287092208953380.2453201479930231026556079614384624 0.5693316435425160156147045597446183 0.0733541651715003975372846569183095 1.0761838416191517017290985989160124 GT 1 -6573099524460738291393.7558994306035178522727599099062342 1.2263438683409574526111631155566215 0.0317164820573768239414128412510930 1.0322303441529964257556071260005398 GT 1 -221961114353324861179513.1557395475686292520129910212682536 0.4091905732123273111443746621699274 0.0123294111311319466347003486603239 1.0124060489044774641325508517250827 GT 1 -89003548821181419585353115577.3141072011071721650131178838884160 0.0774501681722776960026930399418627 0.0944980023419027375300187428452565 1.0992657955229498068345086400068895 GT 1 -25385943327263109237999953388231335654.1564494728652743348181613062007157 0.1939094802988450622315025313057436 0.0155091950322889761268097797865765 1.0156307207457492244758743698829005 GT 1 -69878581300.1465326175457768357949468414414071 1.9985644374085723380918050244909320 0.0286522794268582396316068414283479 1.0290707691587286995851866771859032 GT 1 -22849059818012932910955031228704889.8448251774388331594669828805026471 1.8108223059170415957811549046679753 0.0993008494383068419352905791340297 1.1045839832797135724831153879668492 GT 1 -704203290885192.9610392067308615179883787044287581 0.1287595950540474303618303907065229 0.0621739805366860116725397178514576 1.0641908274958099514195842289283714 GT 1 -3158586958864303694520386868901.9873104477390454850955317744280048 1.0191609151077978620513603111077923 0.0918800756218295839886338477438054 1.0963788337956640560653843928464253 GT 1 -396486487828751422946178300168852223572.2605880921103574614841443864054293 3.8353801798273553386492639546752483 0.0180924933059497120620899658938129 1.0182581637663020121683733086043646 GT 1 -3494744177774047.4526009072267148978494189957861969 2.0814419818553673144232132988764829 0.0444871087198850796443186985412993 1.0455070237338832900749700190890577 GT 1 -78972824251697498771696.8066154934376569700381844981298177 0.0683368492229224588709469592663739 0.0512931771725176659735389820502201 1.0526554608441382388223063223798399 GT 1 -52584986348608852125523522581783214945.1254222157160419263451668656916599 0.3034071346393344139603172458095757 0.0977674226657670585127120319853809 1.1028829458875983923250628976291693 GT 1 -1944827662.2673983882486106636266762215620027 0.8709041371148927501052306535600759 0.0862752449651793661550516993360560 1.0902258961686747386500313987311699 GT 1 -573592876247462277713243000.0101413212226074821048745382423859 1.5013244466256861416524932511813073 0.0705375794675310028363272973669661 1.0731489024039799470873045534615295 GT 1 -1841281988037654253273886364608.9669988401843307896469599782377078 0.1440114580358309195133592051393249 0.0693829663441575225579627331776986 1.0719074357891337361848873307522815 GT 1 -143591904680323651315279370645535929515104.9630033673710650049124931808979243 1.3511073249853086722807319293232383 0.0809831730509572842723324281819297 1.0844508467298304843782121508960496 GT 1 -3.0250120452460129260392812775435784 2.8703577444022896649132349548127067 0.0856422120355478440201990714419223 1.0895333312105349593591756646379616 LT 1 -12757738612234665002722638277.6397283438838541500560223233190007 0.5498266032491717025697014049852242 0.0912497296200640856913997786267978 1.0956849526049491228785635672592507 GT 1 -12.0519478653232626554921215450364748 0.3423932519400566999643430717133029 0.0156939642304458782148334459936458 1.0158184183231490013644139144695251 GT 1 -29351.4174166523290183099276314308519444 3.5780903685458988118236988772255333 0.0997282028949709779401223088389625 1.1050585644663104723911966839134631 LT 1 -75122304.6628660405771423920100815204567209 0.0985673625603484333797148147689875 0.0175880355761093863720071274757984 1.0177445428931726955024240761030507 GT 1 -35425748724791465776309517240756575.7716825307322468664029324620787687 0.1631929855489726416376891153897720 0.0557881557738539184435392243250031 1.0574047267565651946520085935822578 GT 1 -6324609740551086195694924395800134712605.5827640347596484263904417865366885 1.0412029140299498835005704024480347 0.0954140336300418327474810141554863 1.1002779356891119737724049753451297 GT 1 -194565634695.5679679149415410103330586082494014 0.7178048338898720926847567171513300 0.0640325724546185887765620677930416 1.0661746027410689776933377600395960 GT 1 -85475689447160917300739670368957819187.8389291096935180630626361732586104 3.9164051197295312124744819715509569 0.0467432797295599474720093712312740 1.0478710304183409700221337566213258 LT 1 -324199205775426532347278218.6966606476596101820987772978125460 1.0332080256556637846355960249730668 0.0171962913827956692969697702860557 1.0173458648204537890207593643056984 GT 1 -7372072103100103525496068951560790.7322948884169558029949462409211320 0.0249862065595397492804061244137979 0.0279299267010080904943497641454340 1.0283273852488011970432599994395791 GT 1 -60062543108560051813.4038390863865165493999550271795235 0.1318324822116271678416381283147666 0.0418227838599574979054096401513945 1.0427225325865869061014309566087999 GT 1 -156968983929783941162159914762942500584.9797385995535476102646096736214116 2.4890436678953784224677578609621218 0.0534176590641525735699358239854007 1.0548973169387574459196921562386029 GT 1 -16476247295206656906212926995374382081100.8249857673981850853398990998293495 0.5963545953170562150687829841262995 0.0309377338940326345335136833409418 1.0314264110485410955075234394565390 GT 1 -146643948035569510522480922.5034339286096965355798295368250811 0.0528784647046722023818174495007917 0.0660880026875119602690181030909151 1.0683730664852386421453340205000352 GT 1 -6076769089299708070549504.8337261723611583911955331939477696 0.6533447570102961054849327400243772 0.0048456617498389232103584695509174 1.0048574400331914972621477897484277 GT 1 -7082500896060531108711079299.3582307600596521771875869762141715 0.4404444778044476547839950948409346 0.0978188850656955499228114595724974 1.1029399864655578128814921270937641 GT 1 -7.1284207448751575067168000379723333 0.0600694693735665066636087298376279 0.0095176550357248453184725959775669 1.0095632373696007250279414516408074 GT 1 -7869931482975449109566591769389068933827.1511441376598634000856084217680344 1.5893947397366538280677088889674212 0.0961689475684152137883153228538181 1.1011128249589819400958374274222671 GT 1 -417015096676352054245113050845671.0617765815968215186371108365545303 1.3619835321318974632262670917793876 0.0720032798427552346594901202029439 1.0747270805154960082529165759344171 GT 1 -90804426543969515952646827808376.1874781898473988796631663300831943 0.6617757420054796150256836689039104 0.0236186617746321571232977513723292 1.0239020534835841614761188286863914 GT 1 -33823409244987.4659815688162111326105466401078583 2.9753076959833132792125114140778746 0.0565737336699232473372074108097389 1.0599328442678911936613751836505379 LT 2 -43170171831284910858098.4058495894340159779561478279949661 0.6298830572544876501894832571453686 0.0945767668715570232942181691752835 1.0993527836860886495443893651054777 GT 1 -583150004.1691714015163431854717442819655458 0.0739322775931980467838632751808587 0.0857734391031916232000664890034484 1.0896768598018747880532595983670326 GT 1 -831812371599631565551993699511221870354.4076314722490481790237836876523951 0.3205726376018781208803280266054506 0.0784506473899748365069335278432901 1.0816989464859455559970597181714864 GT 1 -1747693133912352894238015382.8604981263338143157049213500210741 3.8119257422729871523181422010010309 0.0985344082387952076288519301028995 1.1037334048306726636151300791774664 LT 1 -3303320713908409946158925.2176642053528692017212624830957342 0.6674435031972411676912036715521961 0.0553574708898521347284331433499251 1.0569486991267539301059208723448637 GT 1 -66601007447644137675016745715056482.7982188377442361324011775705670397 0.1792235859931845122058273325346750 0.0667202432217305181216422941832757 1.0690502765864467742465218083115002 GT 1 -512798715114709907940234837415.6357184682356175397038001833140651 1.3134157349448546319753546619902693 0.0054113758841102928038595761016833 1.0054260704143155563602342750967708 GT 1 -122513009295438662903132510045533.5168443926747456760594138792283597 0.3528421260526471237648420572274069 0.0851891423499556451398746317543255 1.0890379480254536972682733717919966 GT 1 -1235399187507906664783172406174363841714656.3747041691551168237928626570308096 3.8159788189959118490006503067071830 0.0636923726107112185100871682359819 1.0658111947612908225265094031517926 LT 1 -260193579822965983.9687808696161718549588209561316860 0.1673583164971164543889836705413866 0.0664908150932983480173142274657662 1.0688044768343010276193105211545250 GT 1 -161924959781860992893776607487303490.6050966591706435257483936152447836 0.5415941944577880638375319809261968 0.0267139738460680738762136546299468 1.0270772768356046370841594341252699 GT 1 -3265003093704549034767825606982158.7059061444143647948916835500237259 2.3647107904771814600043251758010907 0.0282943820177451587179808673559239 1.0287023825518775982992458364905244 GT 1 -87203630360814276.3855529765934640193508880828333633 4.7425417476537642250327381361768249 0.0093251070340576342829138361111006 1.0093688580456510206787816308598480 LT 1 -783.5515170574570033018228791925335164 1.5662190559526666223956141057083204 0.0418582548341283611175903642845073 1.0427595524928667477463949484112503 GT 1 -56932600605504050365.6014356044407147768985257890374219 0.4736392400165605534536972693493258 0.0747288134387528965690852583552421 1.0776684097761973063629592478780917 GT 1 -69327183203425274950958039907944721069673.4459993533023205573967287267453946 1.5795767921510464097594772627093369 0.0888355456611420488357925245355257 1.0930318773347587280718119473406381 GT 1 -8190485927478728822995304820028872036277.4620959725162826445803581459995064 1.7720983743879248993885446042199995 0.0311090585905743888703790529040108 1.0316032209904155248151799905977175 GT 1 -56775308799.1554273609155001786102891289890546 0.6994293429162674475151838106525649 0.0044496578268886788390440865967355 1.0044595870195646164744824309346994 GT 1 -1770662384401101614088403450297.4540150642955173112329662617620999 0.1177537723535721221121757858650341 0.0940714022717247873012062305716025 1.0987947864993071331018610454807887 GT 1 -13.5760052165610879241982045828093467 1.6317438667266952731015639530218836 0.0582504982023672395418532464229554 1.0600159614277715966433722143568185 GT 1 -54406372292786754458086577094292328736608.5206316485470560800603881847071922 0.2647891174379490200069067308365433 0.0324447432815381078261123016848237 1.0329827428217799192318532571742009 GT 1 -428932283140421996817622234241589435531.0938787631817271125516897545361660 1.4115738891567218608449948573378971 0.0714607004579020706420678670438363 1.0741425732454580557656247195970870 GT 1 -7958.9436021378806552438999836694480170 2.7527059980666365576922873916392253 0.0645569653712046673664312331375276 1.0689618100767245554020889831930396 LT 2 -6566655190566011529580850021357852054455370.0063548690107854930278247544222283 0.2147563669441246926481633297135315 0.0254792403698004259491436685034736 1.0258094574084743060579698607148761 GT 1 -254776740577.7222333670455231535736909727553518 1.6077289007008383598788907385581557 0.0065822119091374986997807740819239 1.0066039701969428851148155451940556 GT 1 -68980990478254105740858.7989521648248221326729168396705008 1.9245737298935940155266025488352577 0.0553709751216293909853878325379581 1.0569629948289773366943530137141855 GT 1 -7.5808273373879835319215941304572833 0.9312557267107479045024600884814102 0.0558204274357657401235315501494208 1.0574389057531736563937333950797796 GT 1 -18759134792815616700556841321894443154092.9004154432814926145270491336475201 1.5346392014941429769397579467974944 0.0568142062569047291702152227359755 1.0584919916375715722913388570288394 GT 1 -4672217581228.9823229939930504613816995841738045 0.3774292121630045884430814435908445 0.0930683947416276083877518874586825 1.0976882393636936563966835672043151 GT 1 -164279108920377.2116810585466601380442656708022522 0.7310602215632784297904659019818482 0.0361628432827100171569631206024242 1.0368329232080796874704075037758741 GT 1 -12150298415607584775269866240801450621.4406310486472312194132605450761513 0.8090223965278979892317894775693926 0.0173446829281844654433087914641415 1.0174968641989513685790110258155592 GT 1 -884356784754388003740926.6185459715108360160847536557151196 0.3611203987647913251085415710898883 0.0502503719698700056814006182932111 1.0515568785647762472320107227738234 GT 1 -2394455.7288028805689845560027312296805822 0.2941359648537038822887562810812364 0.0817744475916453446482267393440401 1.0853122187496610310802230186801577 GT 1 -4694612081910229744041333610989.0316966349468596462785150972263784 2.5780978165778218189448319997170581 0.0293392444639169477462396697758704 1.0297782481158635428069922568308534 GT 1 -321696579169709285741248758473649.5753108360154321539692329917147095 0.3078074866612651637775742803261488 0.0220016804597474931571610283733097 1.0222473272102964344103116457973603 GT 1 -9305334962815418948988343403770419408500450.9096439346322814215122938880891033 0.0875258340414823978462522339716309 0.0856440967085606142084507913839410 1.0895353924112814540531814898110781 GT 1 -194341909017519500581731500277881065.1983599661571378824326183206849803 0.9509022909700745356004048656513424 0.0829139664950336816409064692352187 1.0865539905104480904540721850756894 GT 1 -1710863155486221722275.7029866040329583379560250722012072 3.5750801879198154885381196463244488 0.0876610140670764203650529280392282 1.0917436628674274703831895884666739 LT 1 -512451684537783036810561.9151241612533909511370434054368947 0.2326241269808568574993727719231553 0.0426143597929617884438412139609409 1.0435490008754646218731559026674946 GT 1 -3275617511364484.0331052311425873890738735093565394 0.5086174964385515650954410751639429 0.0678073864248105229789331918606986 1.0702158187230442111364176950599673 GT 1 -362203.5364343941222227133313571828414016 1.2280218637877100250778287335314447 0.0965888594622379348868350308996618 1.1015775240491346469952762636215084 GT 1 -35318708858438665.3232564952125539249541904037519402 0.8389139249238004228724791306995488 0.0738412750270348759236085295537491 1.0767096497667843371230523253987719 GT 1 -11402569556520431139340559.2772212119601709636348011703763909 2.3428191698739438180426568171379600 0.0543805486970222604834267815070373 1.0559150622130014459320172194324503 GT 1 -19759463332776996749469228184673091931.2993256254351225200952929909157209 0.3577798554235734804899192667300451 0.0779473119918885004206582905724374 1.0811529117132529330000556731358323 GT 1 -324235.1530900669883585955891645467713126 0.1950726448609821720383682522107896 0.0563816111560130519360941351935740 1.0580334436732793387286411014755300 GT 1 -3305.4965057600886989231394609281377126 1.1672101014126633570522408258808896 0.0708428687534917246354436993093279 1.0734774142701271461840252442784372 GT 1 -292715098112381351612.6531835157686137291881177419965045 2.4257485494050866167250630497570662 0.0366084538600877830549112635805599 1.0372953598505582816054065773747244 GT 1 -373340596750376181987696189387770.9098971069631045518890953777180608 0.8459787906383850949831525376554529 0.0105813737358167097913518846854655 1.0106377545478797908098371942774077 GT 1 -5970858124.8858245812748401486325612920096086 0.1639154630570748120348405763016284 0.0439515305712163008057421993242084 1.0449466669766359663537114573288657 GT 1 -8688502807928214909.1678654968778148283564437693198148 0.2248262555558108280537505472574745 0.0034769069809528738351368421890192 1.0034829654693067449101221601756010 GT 1 -153720843995975512277863471471045148826952.8743335333960210640140201345647914 0.6364242156726194241291772724885275 0.0751941944951820065042628122569160 1.0781715035049887636201076562838690 GT 1 -1635403152855299823202426778126996038.3871670548301375992111950565005929 1.2088888062253637722338505007645687 0.0366440851909801236480019824833111 1.0373323458402830106157329935279656 GT 1 -3145633731386851984248054.3046711753258859697312302631792016 0.6925700173352323273249470729131833 0.0244816359682004504746941333886101 1.0247862938457287413917185341262275 GT 1 -511817070878549528921882277370669869.6618311130440603116845090477324057 0.5692284551935398303878334533981543 0.0626445739548732945217168279278102 1.0646927452480294606883172798498099 GT 1 -971712791768879832623726023602613350188.7572799681254324601803470741318999 0.6405505042967773224285408785982390 0.0384682127183099900911471338556120 1.0392276544044141138691458458822901 GT 1 -7966518168890711159550.7706701638438628595921083349590817 0.4579549991447605303056323155706865 0.0747110219363432872107970420529110 1.0776491815416872830256884325856912 GT 1 -25734838940910.8926571181146676944661966442471480 1.0799588262966224067262136608541742 0.0506644182918121850183606026227089 1.0519929267487960974522863990040664 GT 1 -24764242491926220117370242922.1290157247307722052285204775060353 5.6093932352027632269261915747045559 0.0241981196730186875363755219021285 1.0244957046428580587937574565367525 LT 1 -7573698414688194289382838749646043680970.3672331519948648922675593644980026 3.0878954932368812596338260657702652 0.0008086294957282704748666987597488 1.0008089566129152435521245006289234 GT 1 -4143262984.2466567546211916384792474619621923 1.0179078820129740724842740139884958 0.0922721915767268322662044032475520 1.0968107157799394200313971985223362 GT 1 -71748684703366486217890243138347.7119182121799542759469201475952533 0.6060912624847587444495905067523221 0.0470895664246862434856791335580931 1.0482343634012193270824655696812225 GT 1 -12203.0251110100951311370733534640085515 0.3390062150528841383010148677301302 0.0408959548913546874665519647635950 1.0417557166482785224309768879604348 GT 1 -839235709218.8239236675933207553319391430057030 0.6187414439420940288565309438524912 0.0521441562144868744772629999567357 1.0535528518073353306229036511527985 GT 1 -4714715358865281286939641902.1463444521980510541629016720667649 0.9783276296838286136128959570153220 0.0651190122563799371542797545238464 1.0673360436306799862612448374928742 GT 1 -151154166776139211047088936083754117.9503112284610418579366224507119867 0.5761535157382773818734671990455172 0.0136706026160116385565297077321214 1.0137649057439858949261926651967746 GT 1 -55894891631402000869121870.5448622839551028015927694098472705 1.4405497218590608513530032972910127 0.0994544927750993165710680298210651 1.1047545801350612539897590701144441 GT 1 -8341584973733438561.7462765418926260448883702837171128 1.0475321929763321089009295565991640 0.0679762488932299942280171850138774 1.0703969806011185013454593169157271 GT 1 -9851725940524061516.1710424932717735962526541825916898 3.6790597405426088820004303701984451 0.0488369590308457297401883946925114 1.0500697895232362442466960641680562 LT 1 -15117054.5032382637653004065800837325915875 0.0725193874907915448305523203159539 0.0895742083233099171292040687741763 1.0938428859622704352473407243346780 GT 1 -10891514302204119270769548.4127481739977974926691047975346228 2.1676727683313391625786432573006050 0.0969428098988455302365282112250285 1.1019693941252758197180287824422736 GT 1 -342345292515228072389472245436963571.2973321088745962610214954457704896 0.4493739948070370824418909707014333 0.0583348878407169478602839395205660 1.0601055748753691881539833018433496 GT 1 -72346560142908495811498915554585.8939090907625586310947534318436092 0.2455438603726247389433128708251960 0.0314135126794047722179732788727758 1.0319174998427228658843072124000745 GT 1 -2934291977555167847946567683045671029938.6681774282313141989639648362561493 1.1515958770718702440484797405897114 0.0665718297573579973707293639101418 1.0688912656747375305577598914474004 GT 1 -4559347905238055671415610060719688538.4162525764615001547410482036971136 0.4308041044021176129481429959658695 0.0560595950317186796333628959254085 1.0576922451596499970461133623269417 GT 1 -62116192907184119276627708243745934539.4928674009007463052532717525816823 0.0391184520850141713469131095167304 0.0907187506045484184616981437685687 1.0951008273850751880712871079305052 GT 1 -29591451511847438051715857059886740.4435635737241349663128199327826880 1.4911346317791335692526847143008904 0.0818807946403483197314443197748202 1.0854280434589069413627807201929423 GT 1 -4863935391971659188636936717594783.1083873702677216315847286979260905 1.7607911581910456186262335946771953 0.0908566124392035643598540800751039 1.0952524551535484926537052207902300 GT 1 -24489718.7969256783810949087754896101583078 0.1290518945706396276057134963284766 0.0251330356680776626460040145349963 1.0254542641330606962070377494333532 GT 1 -709781550638808004715357733926.5370118479403030587866315934136672 0.4269219574438807874826011117207842 0.0486910261073171402423931455934601 1.0499163755201131455685513242180683 GT 1 -1137420681147164368900697346351295.8390570350712289695204255831402836 0.2980915579652065974489301194777427 0.0606513562438423645522611919646797 1.0625685760808495680893570599101995 GT 1 -1768041004655919243778749.7171098562663772937232677614795280 1.0939753767456671639735587117392249 0.0499998617309979010636175503802335 1.0512931488412431264101080038405017 GT 1 -66464326533608905194838.3031369330052745838395003081953201 0.7983222430534948850132430197012749 0.0945455062029629461596704350166360 1.0993182582533304070080007873482687 GT 1 -589606853062.4204382493738390581723596645103895 2.5383167347353280717474180302852493 0.0960055714491968790761128952791134 1.1060257242762814671329378851501170 LT 2 -22459385699619371705069576849120.3733430598717977382871415938525289 0.3192382389811486984515940323430106 0.0370064505861640960425533399216681 1.0377085656344461647122930909810041 GT 1 -13.8345831596963777306207237588819897 0.2010708865124943833867137654745899 0.0735155470794146243885515036386747 1.0763580138394095911415894244405741 GT 1 -1640145912945.8049314361023312444306094852365506 0.8331127658814981357655196406181421 0.0805000760155138375187825818455674 1.0839253176082528199986789499414111 GT 1 -21098355913434434378468269752580933692.6226048597289063608359609317906929 1.9759070857319488549565317764009059 0.0639181161824965634206309114052760 1.0660523236199262622376511888164653 GT 1 -1703671743065969.8348951286048290215363136402751775 1.5807686577448145148218257938079076 0.0668967778454287404814956836012171 1.0692394495763607982846657185182391 GT 1 -1473011.6137675651710724952045076058454805 0.3738698276415291433511707519013785 0.0324775453713459922316155508730021 1.0330166454290175281981948363712713 GT 1 -148405929496785886832723048593707144229760.7140553586813906508997637120556581 0.6347464217452619629155768869841651 0.0914259112122922826018651730969886 1.0958788437965697917803255512838860 GT 1 -2143.4118857853294294394636282884778060 1.9916352729416691214056384642435414 0.0063096471172380894706813351331193 1.0063296370713433234495632224568420 GT 1 -1505203504281508269240426615737.6582657901386393967030793864807663 0.7613517458340500212527897808479017 0.0785372933797039923235042496016835 1.0817929729893089438998569357896302 GT 1 -5062874847839680988856391716705159137730587.1728100787433041056883477851066847 0.3579857551583548192674230552266322 0.0919360701191859356513221100843356 1.0964404955016006937423653620053057 GT 1 -48186.0436788478137215954871523863908418 1.0729590260950580317695247489688816 0.0956757163074744918510585262313687 1.1005672620161080961384699645642923 GT 1 -69373565814.3916136776796431201177942492802600 0.1107749121897376778012575295035561 0.0006317252614623988107937260270096 1.0006319248839408525840016856700519 GT 1 -647800692118559804717327026334499269274.2115518893127733950982943284951158 1.3636321912989768221666044573277553 0.0623457154420603671704932592376984 1.0643739644826246061434488443165334 GT 1 -99289702767696168237.9512139690390304773923803282248760 0.8433098951582144038696854279186405 0.0295614288691797441387316080747366 1.0300071744806103208950142469718261 GT 1 -583278715109428348.5350207008969660047506384509133200 0.9517469902214026135924752455338084 0.0000225817350634059914710072185433 1.0000225819900346236972822200797944 GT 1 -10494277.9254457516979171866642359933162970 0.2063839436519914829669472415797290 0.0791481849107620597167375924817083 1.0824561513405067189463200174661150 GT 1 -2029143053059350141.8394577509658394049121675981851881 0.0319030569103409928161826144821969 0.0820343918929323421827444942025838 1.0855953529990934997447441793179212 GT 1 -9264423700775717324414028.1393074472225636410388647537167236 1.7874482042629808600633438802730275 0.0269772087629465497946584953156656 1.0273477733941480857064694754205185 GT 1 -334165833656565193614664453.4550006117184287036948443301408040 1.3868401503174509475036273816461583 0.0872323837705297187294545668324565 1.0912739584634005426396650826595746 GT 1 -2755062796810816665173557.0311962351408689232315039873570327 0.5299825878214138825069250136961546 0.0409943184933796147912324646838202 1.0418582797089275365627992009558157 GT 1 -1251154942920383591.7653428500916432102437214649437472 0.5333213479938921434287716923483351 0.0024970121413414356095852890380797 1.0025001348755784435914243485955539 GT 1 -4482684344676049387557067.4814131447643706542248759873040917 1.8285133409848214334157960124908175 0.0397861281987453646652057961455992 1.0405992362064237691136258411292935 GT 1 -87029026764862364156207038.5039848989382524408296461341885648 1.2847616003253557778855781259983950 0.0923326047431729182268008050794479 1.0968772722700589488632110453514380 GT 1 -191390355802962796273438693729408708197777.8450426352884004724434484146833790 0.5888912526169254925988851844639361 0.0924967400116600199701133381351650 1.0970581205759305363414802112201093 GT 1 -147334616815802024999906327.7613881070929447690973482632959295 2.9127805224726103153838034623149640 0.0067380738984284049118280925902001 1.0067608772096810073010462646800812 GT 1 -1245423205491291104969721540192745.7486299961134399125100101935963917 0.0726840552601382590627482163533711 0.0648874238279051628072608801039085 1.0670883546181319136850881182015801 GT 1 -169494148141268942564752745242363392.1685756329426563456842576768184588 0.4551604777666290636848537984389136 0.0880449313976193078511274885760851 1.0921645570048129270262911254381765 GT 1 -19018119575586892398706702.7315744259968635975444163710989325 0.8946713447629558958611961724447140 0.0265452768603261122624497102990224 1.0269039646097980530330435920670343 GT 1 -32904681336128959311048121.1911870334999569724876512104255079 1.7593429340303486982846939314885238 0.0709407370020828089286091599986112 1.0735827499554485224089595143937630 GT 1 -1173438479.3672986072894827820400932822038509 0.1847060086627996275029949895640871 0.0914178206123029082006013734920830 1.0958699391138728528067828743440282 GT 1 -5525143467712261.3140854010378906212028281395992326 0.6665473855755235596682880758409925 0.0636930006671289188254250616136996 1.0658118655415023385435956377306052 GT 1 -12684485446478554202831006055113853.8351737600067604498895413821196819 0.6723644152360517586460019228278536 0.0273329060055574406591663960154856 1.0277133992313108301213913805718794 GT 1 -69842080091.3027509775877274242406961799836987 0.3522657057812488108111464000272536 0.0728226635758267125450607309023205 1.0756104302836167110778752605803416 GT 1 -15557778210365490892.4158650534122883042749010651936140 1.8642027271669776377089132639756290 0.0535153870208049854059262860369321 1.0550005652222237203965329627086099 GT 1 -149035533684.0145313865366661464002632711637470 0.5705051142821851305293053604847211 0.0017556414714721405509148451176538 1.0017571844161298609964928985418714 GT 1 -19072777739.1280343036014158907361704056497549 0.5295229532296821892736511183097050 0.0087744357831173465912216770545288 1.0088131578205309633298506313556332 GT 1 -7013466304.6158070832021211607409970625508392 0.5841792754365354089435406696173804 0.0367636617267243292167137717953489 1.0374564785265911219796584273347860 GT 1 -25269290025735269264807684.1729605787586770272056144715359676 2.1509938468618049086838678110027254 0.0321850374757091571737821405066004 1.0327143643949491252711525527806022 GT 1 -56147166478102004539075925811776834.8389186879775904054204656714439974 0.0711012188549065110801026730308611 0.0016648949468515406528635841830991 1.0016662824246606138987916471781339 GT 1 -32506381771611162270082199380830878870.6952610241254345839725038702547751 3.0887271461595239054717159031866756 0.0581535291674375654364266673251578 1.0599129998198425519099195090286551 LT 1 -92680634.5727544516472708132650918078808512 0.4374750155358078924877098006426958 0.0974522070909505158513900591544142 1.1025336340453167339912752621382436 GT 1 -28028811950431854722039846739813345732.9762675204457333550829689895257188 4.2715759923480808153025769624919513 0.0227955638216545282399427234169953 1.0230593999257353572246169682827607 LT 1 -11185680170233261656.1348071567819118428912011994392823 2.7376222624099024499880315807888045 0.0315725161392304133727014677665755 1.0320816736303655043510009371772729 GT 1 -138074233731543553997590326.4767736625570185555551064132519536 1.9167917941437604581992131409429963 0.0464996275891453297140266237111298 1.0476154633692648226804650862261264 GT 1 -146013150218154.6031572213609515561064553681877875 2.8273354999126857896706353298806950 0.0202608308501428855366134600722987 1.0204688966714794154761527202370672 GT 1 -34192.4360716842822921963471004137464057 0.4469424495637074669866519113985261 0.0812471518360644382303492199391452 1.0847381284175168987830851621034214 GT 1 -6277054062674.3512315099124386554440173054659678 0.3880194497032561957826545396275640 0.0334150563094947500667080104527518 1.0339860962592960971218637387592508 GT 1 -42573548377403437125150369142.9832716516771705438785417437087570 0.8648324648172133303835553156688155 0.0911294109808068040449888267111243 1.0955525612552230894670754453136921 GT 1 -115013.0289079924580722917103249599792282 2.8364691247735909672827181688746706 0.0469180908585818811113599820886833 1.0480544302895022176996678123036433 GT 1 -2755850.3040936758515672286421503054897920 0.1362130580801005405453622303841744 0.0728588386333956544405554768306019 1.0756494473754664982852703408611546 GT 1 -33937762301971112987436381691.2072205209687040503835035554680104 0.8572375365166140751769142577129573 0.0134689054594604016476869379888084 1.0135604339548456441212686887705260 GT 1 -3585934227590351547075.7653543550321462265732558884464852 0.3582559437506965311207375813288495 0.0003226776825824419842296014903550 1.0003227297542277335190580304337579 GT 1 -5133763646266164392346865132378521442360.9768135815286824137261500522830337 0.1674288732396407325951828801430306 0.0117748791190025565207612996212472 1.0118447520465997190342366297524383 GT 1 -6329627359650490138720430038337586205049.3541386760748213150809142912768165 0.3890443122433517530515261658362369 0.0573505324158308794390300282060427 1.0590607859372479332971187719687999 GT 1 -15897798531679370086322494803737845758.4034194877649594044637772055224780 2.3575653265269356896517341735627168 0.0349724954087559227179731598770721 1.0355986758822378640425611861314799 GT 1 -6978916913185113.2959670180462501353731303245767004 0.9924142028775200760243206287721011 0.0263605269037007972458120694157946 1.0267141946874831400912463056519588 GT 1 -3405096115949856997338547839736014516.7583962245810836093914102713207620 0.2039704268435758697031455299448420 0.0591863297229139874544253232590313 1.0610101714617444761162507300414050 GT 1 -26040634731423089120115511763936922542933.4398407395718568622903910153610270 0.6345106493602474194927217000017474 0.0637696287630033979709948806630201 1.0658937096714210201448105237025502 GT 1 -19276060262452259645600445634.1856654352995047684241620265473990 2.7109996265003110280892699031811071 0.0546148469449465227558683102095036 1.0561628651518025940337191782617853 GT 1 -3534207407289.7501355173656785306052608975942251 0.4901356322968380044346537626796710 0.0462417633547641345950483850057847 1.0473450603576039988604264465413644 GT 1 -107301543782388897203.9008414016137250333993666679661120 4.8620129378293013931690327255692100 0.0386913972143412265706029789114155 1.0394597948339436687334918249163406 LT 1 -825822292.0960701701720394143418024187200844 0.7902586687763260443524333800474442 0.0555395136886477649736083294305791 1.0571414284780630272575599931022425 GT 1 -2516002398527234170251380439240555294980.4872754748851097944367833734100668 0.0319571741794211704136269241486015 0.0405429320373504350168573381429235 1.0413877087119316062592948817191219 GT 1 -3614.0551657374964142067495970330772392 1.4043079289818507272839173338578200 0.0544674195840018944132205015873078 1.0560069330785730235631593690628183 GT 1 -2840163990927845841965329673323163661.4429787814048584392865967542747110 0.4074298372671868819505259293645697 0.0302204057685899024955863067756243 1.0306864557454840129299360294795933 GT 1 -89810721317654245.2067164260273530680899079059202861 2.9960814006645082642625068010734244 0.0379963898891846969715555714461465 1.0387370756095267541329315706976794 GT 1 -140506891543203622425531.4683100801478799868611926343725766 0.0692850127063633588426290769057480 0.0820735290063502765518280324189475 1.0856379885263877115540505272579626 GT 1 -1545561605871181648907158119295969364.3570282378424557055221803773067917 1.0712525162206028640540577131952336 0.0336826159826557033608954056818521 1.0342629438485761599087390869556858 GT 1 -64743228780605168564651672411317299.4118539214955484662664177556919445 0.0841575172847543551086276578295562 0.0341249709322288289659961017590519 1.0347208226336348804667977527458454 GT 1 -1140671384001092959881885768662276235506179.7285146891418095794078262532160009 0.2685007778243450730016031807744098 0.0182682174383549750874299250391079 1.0184371417831260215844495492464799 GT 1 -17778502393236825905826444671066224.3049544375980865797878328757701745 0.1265801701304720242901304525848206 0.0857310874235361529951167577948083 1.0896305357280365348422455438334501 GT 1 -6463997721112443.2460081520038017791997119644730724 1.1509924902445962522253985283603768 0.0924052071799922954529074816321261 1.0969572634000840919739429955497596 GT 1 -19.5385920572664075500551789788584068 1.3042348789749287135416980726802870 0.0769159952944644440512738940209445 1.0800350359386340736727738298418461 GT 1 -391551557460153036396676242540663792140912.4952560558400264766645864122999968 0.8742530791193054920694674251544749 0.0997887257724178351389032722951242 1.1051257940653367579073895226318520 GT 1 -16556.3751568168187426524870363956103061 0.5185083364011230685873467686035453 0.0761590916812816186822337942666320 1.0792153993088831838640921398925297 GT 1 -191748951052045.2894776263777776548235182006086124 1.7270622030907738273427808506654410 0.0617858356575270291490963568149747 1.0637770358424671367233716248454346 GT 1 -75147152943652016694732471867502.3145472778339077392150436630992690 1.4655323847757515790291409856121882 0.0710340370333829148357840197821466 1.0736831791962087936941378445411218 GT 1 -13193370573195851341000.4734065490096894210156460408173061 1.3173565476334487707918411393328180 0.0465508103902152263704593318090342 1.0476691436575131945833705414719418 GT 1 -53193.2472255200841911682807369667503273 0.4545066538622537297102547809430993 0.0918095747940612305984159050228310 1.0963012029790804224128615202730199 GT 1 -594346075673732613850562457294170485079508.9359668438759418834538776097476355 0.6844808947126093862898260769533961 0.0252116222121375790518877083910158 1.0255348799654129240510674795750816 GT 1 -8462780066251680113655.2744073778707560809504662151152715 0.1026619565062298456148468344681752 0.0105388985564739134711301097521782 1.0105948260376175510683292979773455 GT 1 -2249450616124962956.4935278145211158993856691719699695 0.4860784968495007790608055406300092 0.0746836293254624615705431445672911 1.0776195775951716162311572340251261 GT 1 -689.2264469564114577600652063525655190 1.9431111582214536875052961380219344 0.0627659197852940834224630269696714 1.0648222091441891975501515098818780 GT 1 -2574.2301145061299469424065470273498779 0.0164169474730971315713282898584833 0.0991148733955334129683649639567671 1.1043775249465773985734644828516190 GT 1 -1484637133075.8873249719577029703773899219755300 0.5151008427978038191174724679883642 0.0962570183378173447337158423781701 1.1012102713349650707944707618602511 GT 1 -160833626208445892593826812583936013769722.9549056511250137166963865216248535 1.9620114539538440132703151537684749 0.0198314026664692101181642073673586 1.0200306840189359505038317128667667 GT 1 -419997945153876922429650.3228243281026800393910870656546672 2.1784001628056450947067335508519373 0.0572024497082691369737149545712412 1.0589037062564483614364380370282994 GT 1 -239945362838062969662741327.2747516139240903671762342467433654 0.1482339304342004476515010019354763 0.0518599961760415469381967563268145 1.0532531042726229315353725895202483 GT 1 -1174256131168920519370338254592807454013224.3340789184546732729129686142327687 4.4741938944880869676704994962847483 0.0591140408826578975685411976655263 1.0609333379021663021249389635744636 LT 1 -2652736636346622668283.3687818930265586373674587050767169 2.5562203620881403563089147968155644 0.0790167069662108441881391679344726 1.0857011294236742186703135868872802 LT 2 -1647994779612481.7431728948239596565788872726199913 0.5046594158658860840612527413205661 0.0728329745557000474621229456172958 1.0756215511736579239636886061662084 GT 1 -3738523604290946982792444433129340167435952.1577904416607692726784950441006868 0.0814566042258932493179413606915234 0.0790723838498511271776675111016801 1.0823738384862441187976150909889189 GT 1 -4164178306264477842066240068530097422.8921991887441048811400283217228374 0.7565772656352978029275563163362789 0.0618842975501042521121307563064369 1.0638819874231142266746077615237916 GT 1 -56332589381205034114124343546.2354458786257944829953249532614650 1.5994434410097611310048906547784971 0.0025063231052293515210431148186116 1.0025094691908206540851540555035395 GT 1 -3847303917498.1928684264077088394273268991335840 0.4439440351731920266120962127059524 0.0478450882237914694637324248010578 1.0490275349746336536366195378622082 GT 1 -1.5815278196303132931710457283971409 1.2959646840139639540143689011551026 0.0494508764104505768538178283115473 1.0507154365484513124940899998421843 GT 1 -209715817870107261901.1792300872440002487231776147788461 0.4076296248728363135235196768270693 0.0552683898964363976485424179808898 1.0568544022994258948565180197825219 GT 1 -158835725248106058882522408517.0537804388336508197241443955366528 0.0032907929415524459661283165636631 0.0269679460893445763895125457608555 1.0273382539567847052300654484968638 GT 1 -82867998121957595228682312.0009489134489294148606784035296484 1.2656115441452932941465100145044860 0.0665161866279949038943094842693532 1.0688316558700247922523235505148526 GT 1 -51318445302768741327395944111726373.4055236190052727186825698925344108 0.0046089934046554653692996039727633 0.0081266134682632430916508685198925 1.0081598143878661004489839220136468 GT 1 -87678000246583359405.8597035466920495080491126601462550 0.0860582140344046511983592637810660 0.0372250555546738738638484264662440 1.0379355970456940142165737640359841 GT 1 -13352239499515.1749337082017153612801874293686986 3.6961722606522747991992830085698279 0.0665005287508686407695803111621344 1.0688148824181619838933205875399505 LT 1 -47771213796263113170887557268.8747867412957749110917042357536354 0.3735310372682476924205526441563749 0.0322182256715720849123079332009423 1.0327486568642783969571870022034434 GT 1 -179708895.7997989447438830379321697868159169 2.2047638371579158462345588179317411 0.0301714225745688884678462765462878 1.0306359474059675988840448007799976 GT 1 -17707690453827007876802739994319656.2251728769986818340214597040884654 2.0978424651212176319735083153043003 0.0805661106836210001568987320300219 1.0839971360365811505782498302412968 GT 1 -4274020457258666063500943996.0812683130217218477703708276729699 0.1822441797960527379528701611965227 0.0693356857826116070597430955034245 1.0718566314745575335148680754763657 GT 1 -6783362843875533857027726978770488.9277630340856200267876937079994617 1.2192697648021783827448910896714033 0.0260315386727845489952243497887014 1.0263763564314044510462125969255090 GT 1 -51978706343681454665202.4082732327970301027754115500237876 0.0462800454462575269078153357365886 0.0083940539891116426966421671664097 1.0084294824585954043010482136234184 GT 1 -7.3180139536203561855692656172666750 0.1641082633934494096408761053988705 0.0402736351192997319898377862741745 1.0411070717335067256973713428005511 GT 1 -1334224497481559180604.1743871205297769114592502258436939 0.8079222167746967309292610372840000 0.0590044610340433839510636094371684 1.0608168801455541368946676007411223 GT 1 -218404192.0748595399587636081299040942130454 3.9657010625781542608344671945612567 0.0932845552445714089810431460124809 1.0979266104447324832262773127647949 LT 1 -225070866306678946482862.2189035433869849719547466496221885 2.1421403473255851932810982630651876 0.0669643550821144078701568770505249 1.0693118742366126039799208540951684 GT 1 -459593195.3210981474128176135383806450929314 0.7681750083437647057781920022280093 0.0835573996923524521914510043341477 1.0872558428970056801845422856529469 GT 1 -4578518239267495612.4967234301834387398980151458507648 0.3781596263993627743711823968973241 0.0424675102438456834323201576585196 1.0433956266427951578083912231144150 GT 1 -2423290010162833949366384418.5930065964527735028986702392742157 0.9708287739967832857320486477754426 0.0948174488535822962048592264597446 1.0996186416497969572341833911024947 GT 1 -108273639472833060178204509769.1680778300030411483220901044137813 0.5992036286789912731490758447056742 0.0740095646779201038709047645044817 1.0768913734151340688544376786411772 GT 1 -304790.2808239373169911430353224969183860 0.1850142147762911679574159747111343 0.0355415743187919543375390480598639 1.0361885520949727030971344119523136 GT 1 -109193146025130.5954826796232446050717691943822523 1.0066354565711897872385452920645608 0.0778979489208732857483211180771086 1.0810993770830174721481095070859063 GT 1 -3.2498563919257442100299237727957407 0.8253629731666600511497379430490401 0.0146266903679169773230757513074717 1.0147347150600039623467255697552163 GT 1 -36832429849189934925.0460029586997022357745112978891575 0.7249191482532084356261509227636921 0.0929485501795656401363840091824077 1.0975561052052175950832083648450843 GT 1 -63547005977457040946795529429102326125763.2002759710957115208226541549156534 2.6043216784098089167498832544251598 0.0452605761555681623165712296728675 1.0463168303461598406659461215674558 GT 1 -12206497048369722899842.9768662654238887618038270796479988 0.0511023648014847724083271289965968 0.0679180357375093965627487371196684 1.0703345236757847471831736691954453 GT 1 -115956790820.1585863945040208629571347723382247 0.1014718992310520245658165701730575 0.0811744731425904115260631784005524 1.0846590257305242095261334304336530 GT 1 -14971764349.7723172240993695157883775927481486 0.4197664508579574212385797208005183 0.0628451813331655278833712076454128 1.0649067823594552337063432948970041 GT 1 -35567812628181713018054588634881083479.6916385450964325455995097486783232 0.8869123764822789845789796120727573 0.0088518673481858995216380247984969 1.0088912778694705153939401390157796 GT 1 -6542461868584938016110100252707978337.4113228628058436603732953645717269 0.3093552814494460701658413594789013 0.0757305145410062461454571215005002 1.0787515989326708614826658138247863 GT 1 -2260.7894803136456555850587803966758093 2.3408584436670629011762451812385852 0.0272188315096899521942378996471545 1.0275961260062161365661833504061484 GT 1 -38205105581372998931802980333.3306534922094424121617033584173536 0.8660543574480419274441477143458752 0.0558226764554227415900134663005151 1.0574412877389747906048806048804614 GT 1 -3304655625.3214303150479703218242381152562654 1.9798608077217073406960833959412025 0.0252381878026197260341101485482393 1.0255621330113927172922737947061436 GT 1 -10078174256624423589830607185097338239.2403538307843148554340680690059972 0.0403923399204742679101461773473342 0.0116749013004268565654016658855458 1.0117435880916740696821320652145268 GT 1 -2321683855596703964468848899248492287.6756780664140425048735734352791242 0.0455362699768733614579654882854766 0.0109214571151455483600093529658782 1.0109815340467652886730465767954659 GT 1 -74016.7015719713858419908768254979836091 0.0541911855319563770146506929803222 0.0797022571951691059111291096449155 1.0830580278135588077607949956513300 GT 1 -272807501987410676511.9001482551892202519021791360126259 2.1504336142979524695786643610449348 0.0994203068441094220008562031762146 1.1047166194969148639223253350309985 GT 1 -1189631339518067507463341669.1008612161551278158010333839873533 1.6358836010061479952100172925330163 0.0913897886541356221523238225122577 1.0958390871707187284926077647945180 GT 1 -223687515.9104146472258576354757303726523608 0.4561469936701718472913921128197524 0.0085582608732075876380599470963403 1.0085950930848066959481232137505729 GT 1 -19046035489133762026736583000322671894189.3423674737736367762158587814689921 0.3462157562401783869451089829387933 0.0639217197194597931871583413717568 1.0660561732232159148660712820253200 GT 1 -501805302.2595508861426619351043685734873323 1.3052013338034622647489276406850592 0.0858370943410792166836106400227141 1.0897464896472416221726121084668633 GT 1 -1739742176476953256991115719761834966634.8060072656609133683389316519667329 0.6996469017903380348434412837194740 0.0290874159716036322606144130681205 1.0295188414907375818878305145871131 GT 1 -15277917032523840851551503.2988397333308106932427622137061729 0.9254840054142969761029042658988089 0.0936044238446438724914735491142588 1.0982794499561599806414698654202203 GT 1 -16064229976324593521796398331567.8116375564371892097802024244410834 0.9576284437424295590480822391024334 0.0903487626001716960095853490398822 1.0946940085370250413584634279022853 GT 1 -49651.6872240428583113857906423939577491 0.0936806108566471726859068306498205 0.0304937083413462376785371273454979 1.0309683147293029604406876457160232 GT 1 -189386995163620.3256592914938490442089025770627637 0.0973680103049937645494241860003206 0.0164493706036597349639964427059164 1.0165861636815288408721158669019982 GT 1 -832246233684780.4637858609449530740251817677492143 0.0941830047471017838483537312933538 0.0806027232930982299699445977981201 1.0840369576473506131516895145179876 GT 1 -122683761484884944104080755049981905.5395883203583028743339328359713559 3.0454686407969013182770571169583056 0.0790334545925731046656937483797994 1.0823315675913183222901659171334787 LT 1 -71.0933894453520361691313308177302842 0.6477765906443137056998354926129600 0.0638669325612161765186837594795128 1.0659976465421059047869325274509468 GT 1 -101290.3987101213860421110908783778313200 1.4460621920791683655314347477150231 0.0355581926345631323211341452837124 1.0362057829662089421838714420057225 GT 1 -17693102423473324332403911602746335.8486509131507114334844658746888596 0.4038737971143311548426485708244348 0.0897818115690594994475459789037782 1.0940709407043481023523348363456558 GT 1 -416091114852981.4953479962967813157655209899725693 0.9487905245323536943531526427680555 0.0738316676231836180759388559286115 1.0766992764325362375460301163648906 GT 1 -1394245660617.0580757309106621083877668383432911 0.2467146571969867067194996723450587 0.0565019268203358255346185450959846 1.0581609563805308833405282786597045 GT 1 -706082.4596032630077664227599194610273554 0.3412904262291453127162510232492685 0.0540974497764430355773951524050020 1.0556157276850767532654453298305355 GT 1 -473634417013410916808.8598897866094313843608055505739446 1.3803216535927736467155756995005392 0.0912242790062477132565219784891936 1.0956569468279326409389642502369429 GT 1 -2488173432098745556827.8798164657935102543195302598352332 0.5393721627108976910814352344379904 0.0660381337922319571077518402877617 1.0683196700581395795003979379200727 GT 1 -38975704197825924978167302526192799224.6777596118290234031878961842081207 0.3647429137045078248908029340093476 0.0233464476846253629095597711356637 1.0236232933927245713590435747544398 GT 1 -1398508087936922083886482175584.9837369454410192599377804317675237 0.0920331868299323996147760086547030 0.0887472200542208370795099997650131 1.0929349449689659509224631735081660 GT 1 -3930283869562748667545446026157517062.5789721099813047902768191900775637 0.5745024465505543620406437597697504 0.0860951992903217465192062919209319 1.0900288697254612881021386626001538 GT 1 -1955355232305775155204859170731069314713.2850966521321109131036763838479883 0.3900081332715580431735756363528311 0.0647591569145021752340090121634883 1.0669511966753779885050025560151795 GT 1 -393698143018672065315866535.8772602922921504566949730192613921 0.2921683693347091254212529851590881 0.0650976101527599832199832061264155 1.0673131510283845648943977826666223 GT 1 -232085199947815366747519679322193304405.1214441922776994412042952804902482 3.3653397175220969051223301028236776 0.0122960032412476721388435924891899 1.0123722245451579427712798341752201 GT 1 -1401231865895.5088739755636499742234305595013653 0.3181785693404137288650738802260154 0.0766400027508143662126074662557492 1.0797360909986160595050443657461760 GT 1 -5785850543975648487454456228639961482651460.0925268816380431211428342540569420 0.4284907335967907033307811074623258 0.0682923276728988423975292964953899 1.0707361697983654623135199451985743 GT 1 -14701489380252779162016469361.9759581223823606440181596070996824 0.2016986973891844148023045860969127 0.0016290182713040285628939890913196 1.0016303465643065278639351289047118 GT 1 -591894690206089138122248612.2266903637742805887973869611620517 0.9663159296001257828958716324507604 0.0265855321196773354420583624114905 1.0269453184506648548099772028095129 GT 1 -532873452653132076870699091081.1919177754916164815194814213495828 3.5080887132708935097758484528774040 0.0898154729845460234482273091447593 1.0941079230876468508222363643412228 LT 1 -1242536458480917749.8880179591129503862913955364069743 0.6572958958880034342479342469706791 0.0671041938641737092586112945949384 1.0694617605384294614870107211652978 GT 1 -6899093512382259415694881914.9910663704171446460705159087801468 1.1049197025517935094211532241639894 0.0313814000219813452396397299131176 1.0318843462467129062726501139317926 GT 1 -47.1481273498518690982325683270627941 1.4213605364700103814885283659639310 0.0308541247459424617802947897318465 1.0313401363638383827168113708144455 GT 1 -5232.3716858064622639272932761958035291 0.6278996808399487465991999027515556 0.0053215829854579017888425262705020 1.0053357930439506915402449053741716 GT 1 -1968939160360947166218337314840324433655599.4146107221921974330180697313714432 1.4516151917724964964539975944019777 0.0904175876894071776800525641257694 1.0947696723631413539935816044327957 GT 1 -1040677628288072457552280.8629166106138664469639254300847453 0.3777880444562233178408849646714952 0.0935405423610702003758989270895748 1.0982089738481322914724659628945407 GT 1 -267659886322588077517147491555682205.1757811717468485954750410563852695 1.0310028224493253457880835198391986 0.0579909931372669656693905082036510 1.0597404430260775121657115524141552 GT 1 -1390305504564048149.8877013349537719586080704689971009 3.9858048831516370531428520083530200 0.0935946824886630921011853440098887 1.0982687026578605290866814488267744 LT 1 -2958130846627887847487439620235267991.2579405082555197573123056167152147 1.4363099201794467555017175778128002 0.0013855734349421784845839399030252 1.0013865342294174053566381827436510 GT 1 -2094.4981321862254281559663658606874689 0.3668030300884978389073115203491576 0.0062975207069953667967417621473225 1.0063174337363543395554282807789960 GT 1 -23695017.4833348715696067681985153301632586 0.0397067448191515518324788677321019 0.0845973175126525317719232069658422 1.0883912203677765763615462000233756 GT 1 -2182211829461.0089317237780166724606784479320375 0.5101878685306779868850798264516903 0.0963606263219108441261193259314894 1.1013249211033451361679628404632677 GT 1 -207515884193359084114534910744985343592191.3278993838463933452073227813205481 0.7273109768347953964343660855689179 0.0184710013481726567357996211809159 1.0186437204633291568614387807366213 GT 1 -18617832860094055309981.1293741783890849338348147274354121 1.4626482345888069215323257325357071 0.0618753520468509138880894217285908 1.0638724518609443965920390642088520 GT 1 -14913535488602473.1450382655850260786098594061600345 1.0837670148365423985403706153277738 0.0782387576359419877522910201150271 1.0814690451816902011396834435787436 GT 1 -66434948.5224966619856661601310851523547543 0.6267511047892081704077594380767730 0.0267661428957522369834440879457563 1.0271308792160841327151614452708544 GT 1 -156520011974664266502332633639.7852955062481279047277113666067517 1.0991392529417306092989576175709049 0.0295787352152078719240708770074764 1.0300250081703063334752657162249629 GT 1 -1520372625.9379435831277640924911442974966540 0.5427137434833944187532720854261228 0.0704924796692018021066004571199420 1.0731003811263124818729292200836495 GT 1 -21889402816735177.8498404931721192797958049528163249 1.3131959669595057438319968226199621 0.0961141639852339158754206387921207 1.1010522141591955274488544476356324 GT 1 -1468.2349074795274730875071326209482703 1.5069893251463194171506022692035077 0.0035557482292701537390600301465083 1.0035620849276004525672100736046062 GT 1 -330656.0597992767258821248398235807442623 0.1422834188843941370436350149825541 0.0564472873249925991169131747162137 1.0581030464442768368780257122946152 GT 1 -645274638832073181251.7080621540411486240155540910492605 0.0971845155111725989690489003427306 0.0348496334907271548739199602076095 1.0354713695649971108010598559984813 GT 1 -950750485903394388526718562009.8500496724937088087552249756858070 0.6691038945888043317796466886234749 0.0597130684705267200142711651972018 1.0615702039883131294919906784059724 GT 1 -419805968946357371268390134547146903.7946477331142818425628226182033738 0.0993630039118119236188903583669325 0.0218637257753795183347255693935212 1.0221062789562177891079792544247817 GT 1 -3213302963147700562424100640.8355140550472973271143938746253218 0.1924553912072477763038708301256109 0.0477325381249810092174060503131068 1.0489093363013785071075851760793518 GT 1 -2382963801.1575389475304397483196895899867805 0.7471602510533932518692923849619199 0.0085785725112170201231508066674832 1.0086155802655180221719047384700331 GT 1 -388218921280714573469455445514026333.0336420079459396188534134860905788 0.6232521793634644247046626335718732 0.0522343061290963962144371872399373 1.0536479656398031112512510401886289 GT 1 -697276.2729034353433041645825526868509481 0.4198575303571723762358899189291198 0.0149920306675939946890326578991252 1.0151055471499796741780427479432327 GT 1 -2173251148370858.3251732232613382947074582482852487 2.9005564927988473405489468677370078 0.0856900229655999610688761057577233 1.0895856216604221657887948245764505 LT 1 -7641798342.5368528417396529732312191415871024 0.6700099688359374844168943171761239 0.0954443313683982233595141369662841 1.1003114297370881533163415161688336 GT 1 -1.4272824589475236527615338650226232 0.5200615445594726237154989139977753 0.0574178693676143588372944267973903 1.0591322222020292116878714699301898 GT 1 -262301038713100404864506937676699928894516.6813179282168565230166284473768519 0.0999473955738369489772860094947620 0.0711867131263120330777068349550057 1.0738475432812161608306521718967751 GT 1 -9821082137961046157.8769529460541821514178253109349542 1.5962732954594110977538866880663709 0.0605856968904280888797803924501016 1.0624986797125498373433230205865136 GT 1 -2175791673036744592626775797561205542501.6579895469412963656420193051220964 0.3317196790822127560941620444804214 0.0389249906893558925363189678403845 1.0397028196648822025427079295208194 GT 1 -12014339013551.3841246922410884426874718032058317 0.1172690961797396531693823020848855 0.0005547635046827131665879523800660 1.0005549174428912766168524173669094 GT 1 -2800789695573.4697837363229972999356246108916584 1.0582423561904054283596076982920877 0.0784556154967750749674862511161563 1.0817043375376324135543587144788734 GT 1 -261119830882.7399972893839150852762737697941439 0.8773066304861565702620328104283632 0.0669657782323024980559782560229696 1.0693133995280430027651367204774416 GT 1 -11888111016606554729652025.6002082572279799368733110192429514 0.8259697891614830646983115208913848 0.0052864847788254868484520732566668 1.0053005076825622872845250935900018 GT 1 -26946763991934292574694612966.9783683908614382965731107935889902 1.0425258555417059017131016118112540 0.0560495348389752241577000616794498 1.0576815875597826258428316059382948 GT 1 -17489074190497941872.2262277300999120703075382853213021 1.4780606279456079970353865011062685 0.0284984075153461706711444715238442 1.0289123709640775511865695768011786 GT 1 -36719049454744583669145761326331.6668751994642515935281547990874923 0.4682396761372253034919501753317885 0.0073457689050645631230017550866078 1.0073728819243832657673469168629462 GT 1 -232719103138007178027839159607231981.8905035277570141755958534506775531 0.6583373754674771292715504679012262 0.0669653281598936363101969583254229 1.0693129171531313331348982496521631 GT 1 -8857024448053.6248323175828567089429001184734108 0.0103401437203821850473539531261281 0.0253380543248236155959985819768557 1.0256645904908278078921061137844798 GT 1 -309.1496344825412000720240656051447812 0.7940506592326682526794664635550854 0.0657686122098218620908935288688758 1.0680311329020362632405352891957901 GT 1 -104172642531749651829221.6214530263653421691300561094018615 1.5335018419130090746550385819543753 0.0598587326424949080346143650713848 1.0617251305867823100910784878659170 GT 1 -157263257105883180970151.0025100888642002432206248466456640 1.2844762594081110321400457309386933 0.0019327061453593774396272125684228 1.0019345762318217446481974900424809 GT 1 -170.2710564149044172817320620818255193 1.6794631574498698432054848060993543 0.0564940886393875508433173016415153 1.0581526488400990284962400410137865 GT 1 -8618830865282063.1432693972601790566319510253715311 1.1437738179088828860350940082361745 0.0046961307870433514907370682413244 1.0047071922535433631046093330252228 GT 1 -19.0454410476065530239269457622227742 0.8159939860215127395978818212400353 0.0220150951253823009395058249086368 1.0222610437549657079266476430891021 GT 1 -179208566532360021488268.4682011921509528850309914525424875 0.5653212887220326806929569500519599 0.0151983922777820182138670409000172 1.0153150715764488921182472290493936 GT 1 -101525829231679302316430798955718.7553803806615808025681388503938657 1.5228841903326045075986786988233702 0.0140510701682178198971258866549652 1.0141507210233767830623958671331110 GT 1 -214220094294280897746514273017728418773574.2098201535524816623687531353902468 0.8442848545987015980006456516538037 0.0087560124845534471286067215959352 1.0087945716096624724608577530936487 GT 1 -931187149682129506068284849124712298597.5850450883236818441360602054617592 0.5331788535258104048274820802059579 0.0276276204529274385361289534103815 1.0280164413583570204158289622736247 GT 1 -87561838051881915683466509215926939214332.6464935029802409786203911498200547 1.0750166284324365959263499251808529 0.0337322945164269333516861027296985 1.0343143553326573100534206505607269 GT 1 -201567856899981071374252958803599635181.4103769377008119457288107410475656 1.9890404915354322893436874420757110 0.0730175817617853992308724507030098 1.0758206798979625971927876190800644 GT 1 -5725.0555751077456956290497461963284306 0.4688697209515868956898196624690475 0.0251529872899857771630547698050694 1.0254747303369693137185446066795134 GT 1 -1674338759641.2852177618868601087487577620193676 1.7198336123730721516411062882602991 0.0653519616103068870166197762911844 1.0675852500905704104932899942338964 GT 1 -1440950.1407008879094968650641038415790423 2.5295307684311842055027126060429749 0.0588046418331646835351207002471222 1.0606045539655329857026116923588353 GT 1 -1436844511.2919850123133544714118867329336060 1.7068757685536688947352802295368490 0.0771579188188976697639041992040328 1.0802971520955788250197165629746680 GT 1 -3223411349720477613905755.3343407715342720444175113028495439 0.4672450287350277266051911326753534 0.0745289176408424951356550425435783 1.0774523928817387134887867204444811 GT 1 -20.1906013552220274505688498816071395 0.8858455626324941001798254919901319 0.0524025310748197762011213671381380 1.0538254777382412268724429058826465 GT 1 -1289154130327219.4935789022409023640689570393753073 0.9009046870470031064567639703865946 0.0291342624096256957671894065284293 1.0295670925578234464116434221881420 GT 1 -94652713457621849.8507771623417650498448278275967531 0.2899090335465715826867976381186844 0.0641209633104830862975287677609746 1.0662690451620891501825010499606992 GT 1 -504710030482775471.5164125641369446532381072420799711 2.0196005780936135541708653531494976 0.0731627777918103817878680377891994 1.0759773251585413636494084834578065 GT 1 -4819482005240403377254116.8283455071600941799222761242726342 0.6709710802705875800158717155925491 0.0198844436416890117991382879744124 1.0200847996175677639235929726110516 GT 1 -211833293506080.0655408688556886568374155756524818 0.1829813431136357722749866278071697 0.0890010638479022564968867402076986 1.0932135495032143264128093967207347 GT 1 -2316891531832507.3267991048070294823999191700216868 1.1320446712504682744292877111044087 0.0214270026334233195849106852313716 1.0216598936341378893996662851965324 GT 1 -1639705091316273556542244890114006029063.0005257067557043472568076862428632 0.3071401425233582868186226120575552 0.0666471484228053063428108264261998 1.0689719593014755546127386909690638 GT 1 -1593189622363.0934854914810571760499915511414504 1.1425235271993275590037230851517603 0.0456655293673631858222660467552141 1.0467410708316016791675760369161445 GT 1 -1519075516.7061415244421772842264022481722034 1.3572409116519691929087419621467315 0.0846841986233053610648775799257803 1.0884861351364685672827805155720077 GT 1 -556844.8814145244964181307651977821714458 1.9805109110511242415353766222766256 0.0155291616549199541062460940691817 1.0156510021186235770881185017772010 GT 1 -611662012757135.7902092359895403253181354405093841 0.0757324375851204152055835098743319 0.0636660115640403904275991561478321 1.0657830408994415520746661461819137 GT 1 -356877068499366899868750980686960646016.1897853748762390208780594219606033 0.6677842793098172613557072207787726 0.0344273886461219359998814786198197 1.0350339739819141832397428726949513 GT 1 -1068076518780153355189369666126551.8533905914943268459574092996415396 1.0639031125702535311803945986832099 0.0890735167260592791148443026088568 1.0932930839094229411708252677258998 GT 1 -123592102494124160178910758910603845750677.3545855926176309319466056735888557 0.7662917606635735049612920376388839 0.0762654300998526195146079152082790 1.0793305106209156816773169814254231 GT 1 -5074366895872354908464289709874.7310258029911222909302947615441833 3.1646663618440718717597387845777864 0.0353129341953298995372081224767008 1.0359515143748611959434207369330919 GT 1 -10243894903308454641144895982305456.1529466900765108069355286500998268 5.2164303504940342539378247508389843 0.0901142155274016660722714490431868 1.0944361989170506388869669766228471 LT 1 -2831185095547044456086.7114965510713789366288842174262941 0.4562579263068249674630822298109755 0.0143390057184032685445765853514966 1.0144428026858911915081415525069783 GT 1 -34151.1903761087491712258266461600015335 0.4642732559919459606633977338414590 0.0218101082509945951523139821798156 1.0220514644520406046861425986015100 GT 1 -492620241085927539446723106386899307459082.5959007753832514938109494170853505 1.7396003255495464227514056202659011 0.0852777832593182077934654918665968 1.0891348480604109124180389156337569 GT 1 -5762146883471196.4747600278378554241655782186797099 0.9713536397124591007610050153902151 0.0785061121493790513002733385388520 1.0817591347204951654252657430119307 GT 1 -13527788753825988.9200487244061590943677337068066739 0.3522626491644577341040113431461790 0.0773921738328440513941443989342114 1.0805510251638986897744678328290590 GT 1 -77647.8525947874756913855943991831273794 0.4282251777332438343163321509265768 0.0495850136334376078613955059697527 1.0508565620147419468773583772264382 GT 1 -34642889284130411503869691569867488992.2228865119612351031694779926077789 0.3977991426727343279323109300803567 0.0579868374070707811029885096680506 1.0597360314748085671796046072205901 GT 1 -71436204326172061698558076614725348.7341644736540488364915237669936439 2.1540341209820471093700340964437477 0.0573519999598740045944196161006344 1.0590623427674758704686329801724092 GT 1 -429425387382878262273446032030.4959179098909816067018228292945850 0.6501136513957508969321150196975535 0.0137922364345007584524414467280809 1.0138882330212116765904169253158523 GT 1 -1939829758297335042.2284530699215468420299514652601065 2.1985691941261491501802030984149991 0.0860921641301868626962260477228832 1.0900255486409320044969985981307805 GT 1 -7304013250856121128130235851434038506.6012421906412550057122812675886660 0.3115360559030705314187100568984991 0.0856833505973657371419391664244841 1.0895783239779562222241945042458497 GT 1 -1442567446275094038544118356312494008555.6363139864121948021484034744156344 0.6633344551105998708818255177129098 0.0317083888265829159447257956659249 1.0322219858603877116174978684994325 GT 1 -1945109800336439548091952915.4942335569427273773769704207809371 0.5637640719947836143942836246309260 0.0012431675940789351679849950342296 1.0012439409679344079841746448943372 GT 1 -66725968564484843064350541.5806602603123385635063555505864616 0.3438605916598302801208279216993821 0.0661517490402385633499504379998961 1.0684413261591559155010191406952681 GT 1 -212997.1765130759655678439418233408334740 0.5637066810249104791722367555142791 0.0689086851852700829264081939579700 1.0713979240070788919334442305193427 GT 1 -57838754942688596759155199775727737951195.9331350084900790143337097139567569 0.1631317534642349227138844021402518 0.0192243034959208413811144030260108 1.0194114933648690442241168113010091 GT 1 -272580127724992609333208526232.1374970171571222183114334993790304 0.1333217873286816172194653222773007 0.0474877214593334308160539504041335 1.0486522812080245422319472413946188 GT 1 -44342321995046836362481.5766322199600536724666965095433646 0.2521018880628449469820610190607869 0.0309353440822516101835120857043680 1.0314239449440214490708626690728209 GT 1 -14007276254434600939530810877279121223.9419905023255083045508710987678313 0.1057893312561538926186689198384990 0.0677100734489937880511436923653179 1.0701114326815439113377994397732398 GT 1 -8449813816507624464.9582065431497902626292447069607050 1.7043635548162718994436348859824429 0.0594935646851028322172933756065057 1.0613367878243793112207659165258295 GT 1 -89793133897206259903451017940330542487.0306212198652949790171739075610669 1.3335795937834715161307087764031552 0.0029138447489844068685451633579326 1.0029180982593169760500363403778281 GT 1 -277050274.7147723215771517611712681908056936 1.1669586537482883521114632017543385 0.0711334672832866726748289611860575 1.0737902181787109489517461733524899 GT 1 -4383152898394859321138794265643793463.0873065259964206720061272607189583 0.0331337853451946177653353562926488 0.0626881546719434885737100529415081 1.0647392395969131665569478499565788 GT 1 -42930362741674913562685035985512253299.8745655446421863491855989071433214 0.7932533660601610743475338048436542 0.0016711846031020876304016919767707 1.0016725825898372852921701902995563 GT 1 -1337263810074464914770965946856728.2904107334002129913506493793643425 0.2644209476694369023455704166536677 0.0348553793890806292245133034507780 1.0354773229538748010750441394159158 GT 1 -163639982142780197352404089334142306731.8228532433005751852702944999491760 0.7029443859918343312362003084193941 0.0758740615449123041035855413311081 1.0789069195987333996688001381636033 GT 1 -13195038402699.1549879170177391315900523770913877 1.0628027897844765745399906825036408 0.0760423319387975004338982995384779 1.0790890221765138483579019714224354 GT 1 -13625685995331449403601542844691.9028488586350226736122975243674680 1.4460826484407558470067339828796870 0.0597965125490868667476779924140965 1.0616589511340286159340082822283210 GT 1 -214.9852848820109862818561319471240825 0.6255898058352057420438236522461683 0.0039277069861047362086432098832680 1.0039354406842981107546485673006923 GT 1 -54601255430262754437541108415148733270184.9041585304692846169974232522146355 3.6952993413508740719544976685574155 0.0083397599074850416372938518894796 1.0083747302704921641276634747706588 GT 1 -113741971534708225243903.2469557740437347853742961723590004 1.9405337826311609445094542924492911 0.0072509816431996521882627725783704 1.0072773977833523668072368770196112 GT 1 -274895124233219439621.0330575335390664799287661429131690 1.0632997740456431460478679539375654 0.0462713675443381341393033589866144 1.0473761003506502739643832905669970 GT 1 -517929037784281356383128315797.7539035448718393070270920599675806 0.8328734572491658116837817231094690 0.0970728295279550817814545114801372 1.1021133816726462961938546523909503 GT 1 -324379139120819312738.9715628091325418730834131505819704 10.0105668758641158014021140735657077 0.0594736385338928982751704081596976 1.0613156014301337895673413040989694 LT 1 -9948873501880526257.9281782821804329018306216613998346 1.5527539525505297533303467043761642 0.0767672529993693397700386744764036 1.0798739126695314771861736217482199 GT 1 -882749567723293490285707416054565.7713559421958140627041541724588935 0.4831621961394765416482615632483409 0.0214781243302224491044739308880880 1.0217121360650134486814776751572962 GT 1 -5402359177274673078891440147234.4308607764647722842297043702594732 0.4281372257084366070561008094883013 0.0349339322877397177366233882493027 1.0355587160361716315405625222630566 GT 1 -18148392961039647725894683307.9125909240358930047181763976804157 1.9726852112243933494468545810523657 0.0358086801499770029887559116247914 1.0364655394883671610298467765156569 GT 1 -2654632583.4487217593609882197244008817326032 0.5836890731288405227019494592798743 0.0007463582722351260700334724691198 1.0007466369362344743513430972127170 GT 1 -166410948251362464001539231479679843820809.5024986310492622708032087971060690 2.4765933888175137532857807036027646 0.0687455009526794305495364877456709 1.0712226781082843183628101804660964 GT 1 -32124680506854000841273701.4180763975815457748026304671936336 0.4964932208081552264449394187849554 0.0991230853367600401812401789063270 1.1043866404024906624728493482563832 GT 1 -3208.0308821999528344770336490026964560 0.5423149191449497809306903695707921 0.0047000696906259386357833453312127 1.0047111497498402529961308155985957 GT 1 -235285727481.4767109815605277533017226494636611 0.6202854382246381391369277937955188 0.0121611005280243771943202494728281 1.0122356517441417054520545380519468 GT 1 -54420367244821348201391600636809358.0737533946940880535833266344965310 0.3549010275953338730058229761904897 0.0835587820595108004193649332755507 1.0872573513037520169503888670679952 GT 1 -3660013605475842950.9636676681674896457663653203321489 0.8561909934902322065169054605728960 0.0097613184758043662793850266632753 1.0098092724629330213090612598990619 GT 1 -13052511425023074958522784607.9869863004970593028280698252858167 0.5496326373568703505152311124918591 0.0887836362370561062737797576938458 1.0929749085348412106209299347016107 GT 1 -1105752419924628787977611.3328993078144327225768339163669149 0.4277218150788393611462654001336229 0.0415543008386979343244025567251283 1.0424423699934422053683455066189746 GT 1 -243441.3280814911558269166893262593544791 0.0290568086070132836777704034700965 0.0694396448230198139246666627809198 1.0719683418362627058747729365391424 GT 1 -4241218709.2848086308713578848758117208822653 0.7984557194196457232103671404623393 0.0181003025128552454466254381325366 1.0182661168962110457571800812918688 GT 1 -16.9482841566405584306438365557605794 0.3752967120490460248459564452869158 0.0385269923787322323068726069333185 1.0392887875441715887920061506163442 GT 1 -162103409268702460251838.4231003310102614193743822691413487 0.7842618355938628055295010983460917 0.0464993326691649676754592363050469 1.0476151540668845764810047028918317 GT 1 -74198.1120499248264409901733193099192317 0.3164401046787605480776761300143427 0.0881227551646900920755886143816747 1.0922498979284763853134997712484047 GT 1 -306211654462192994988961.8865603751622388696919888861036575 1.0919404824066958767407626548675392 0.0416178063983658576936327913966928 1.0425086310906757405588039864025801 GT 1 -1944349528091818.2361807871930992571555370290616431 0.8021133811350078463854226948475021 0.0801754653857854288665414355176706 1.0835723503744610472294995625452113 GT 1 -2666653555061.1430882351459690395126988662304811 5.1254774851589584114559087435827967 0.0448223445803279122935551519893210 1.0458579291847547488728900741064453 LT 1 -3282270373252750.4652210599204836587692554935850165 0.2830342333558455489959270155929138 0.0157408131404752587711962470374279 1.0158660153339055532827653918501205 GT 1 -85746672052.1534727784275235715100506748700129 0.4210423967600080185518842437502518 0.0542551945124352307808878188522231 1.0557825079635272708127509843202096 GT 1 -46613329554.0975118262703511934836214219356882 1.1106269341376656753167740946208034 0.0137802342758198821285635633987739 1.0138760630849247431624093211421736 GT 1 -663434008965706.2835290379651121814800346328859459 0.7193103376260607142585553749086888 0.0817364637671137674892157041235254 1.0852708530538102635597277638334188 GT 1 -5556549174190608016799644109056734.2416911556216148145321247402782862 1.4925878141092908952964495918045820 0.0104494532816183037021354483628788 1.0105044321533778184727785971080368 GT 1 -127713740281.2812476608290188518029625155514215 0.1596127955692538701052143014098588 0.0772473752268394161722883815381242 1.0803940925643861932890908351394818 GT 1 -940685661421517.0255254883453675298124077917052377 0.0932241270232274657239824008986054 0.0320171309181876760172947152614466 1.0325408890916905729713963246324914 GT 1 -50601350163188817.3990191603227035232774499446772812 0.7841434199021756115114565032041077 0.0633786708426653228958869014010798 1.0654762095287939988244937505594564 GT 1 -867548.2287609774638529641074782746993325 0.0523401625533256177694498218401333 0.0856274766460073959869393496391773 1.0895172157784785581209266517762736 GT 1 -2432955868582065065022210.9998810712697795390102381694486964 1.4833909101175698101246496872412378 0.0615753694069430234628217927587874 1.0635527345522727873687590688392321 GT 1 -2.7792825671879818257402063871275369 2.6702902837025479585157404385236531 0.0975140044024866090262018677532984 1.1026021062389717536628418209031619 LT 1 -18051036879.5179838880423613075652567658916217 0.0670757381053106607000567776399505 0.0394088142688981992112960423339451 1.0402063655887411876305622750671629 GT 1 -12696533108664301605382879.2608693897956784137374683953616107 1.0214337396475313911918190246484235 0.0635741830037597402532653246767772 1.0656849732667554130232638499589667 GT 1 -15.8808868912282388987022655510695568 0.2986757452686708165851030585052347 0.0179044034930665733974941142644530 1.0180666265806920560544120079661478 GT 1 -1722927989509288416251.8214722515974996736543521717428705 0.3124164991268689900282473404524027 0.0191724907786988534318512428490263 1.0193586664556523277349142470406990 GT 1 -31486703142524304218590836778857894771.5887921521736019389028817289222409 2.8136214774913923921691114610009982 0.0329613325834889694509364795907853 1.0335167973412161525454881092058844 GT 1 -1965751889249483367074064203604327973.6547063640222337600472680639694215 0.0401698247353145916333827565897644 0.0601253111323741067681605228595998 1.0620087223199089529264315078257256 GT 1 -12138060283935528465603219272338735363728877.0261488622091704405814885638695075 1.2703113958986088435269930963104884 0.0798364134154513370571571742572502 1.0832038132406988032981564843185423 GT 1 -153856408110178.2206482184035409792148349483745477 0.3389255686294667483875020653721171 0.0774143981656984985151542658272088 1.0805751140561722690750419334226378 GT 1 -128072844013004.1623721931545400007464582748724329 0.8089234763660601073232711088222387 0.0390182585825619619960609510766070 1.0397998697579597816430452009368034 GT 1 -45503099249791721837684232741145875840328.3844303289258336515850276481135221 0.2256424801463883642104578955884619 0.0744027574077743052321338615744744 1.0773160821561291140185494556439479 GT 1 -6138403551.7561736577655462285705300299728195 0.7029146242722745900589968305649052 0.0272503886996256722938658465578042 1.0276285667059637733886848757861953 GT 1 -2519272499473.0350525164376912707625046942358396 1.1746163552435662774418863118734789 0.0437518589249890881006290129984174 1.0447378378171257762640389059003251 GT 1 -1674.1234725084765075675817069978373451 1.7922491396944523081451087946600154 0.0632017350460684274399510055607087 1.0652873187990512931791124920403435 GT 1 -1161352448152694237.3454386375881690844257292368240700 1.9376054204666788766522163076857286 0.0270176654019847255223272367118340 1.0273893525642200489453723320814487 GT 1 -23661012360071911728808579154197480107.5548662403761125532063194154230863 0.3743797834015740741421970932780984 0.0750684981445646555534714470946711 1.0780355962598781515681808886389035 GT 1 -37809101987606529594196824249409812.3348154450033365699458773980804019 1.1394703358816148912843512977345914 0.0833519714744897581941055909822546 1.0870317097139633953543777565995841 GT 1 -1174460156088148120237.9147541927605770626737535040569422 1.1475913558412736746829817935752935 0.0062477711221162294237045387131947 1.0062673701201270150785174746107187 GT 1 -767866154105331577952514391756657682.0978294992275773773144302913659783 1.4329442991980366491783788619681543 0.0918634205039161465191457456801304 1.0963604937452599668856765743576532 GT 1 -619254859356868008789960219.4001677441800972409254683683265223 0.5849590216106434988265938341389603 0.0828548965592875183792575743088961 1.0864895821220211598209890397879877 GT 1 -182894987266.1933214977987926221391193447464226 0.4484368199072181097316424188868133 0.0884007495463153368814707977496817 1.0925548038425335807466024544568220 GT 1 -10363.7920696690292997013128921918081662 1.7431121091723509785294956457566507 0.0840317893647987019836371182246309 1.0877736194569469733461317140608398 GT 1 -8781672195370227437180.4354539047731043929959035202749703 0.6089563027968985900429918703234364 0.0592748515859310245398038980379054 1.0611042666376749187796890466501236 GT 1 -13348566075176058361.5336143927536755468076023782723695 1.1477278507510178070800306883494702 0.0103821146205920961182232397611163 1.0104363847250133542826811131330272 GT 1 -183419284259020536290308544.0520315720418956774973364657832065 0.7646404773600855805439661614398056 0.0136002219820415361474730646108093 1.0136935521746490160623808810724896 GT 1 -915872.5951739205364985318539794339436581 1.3781864808602539952620203009468545 0.0590265632261858251403475256371627 1.0608403685159028237947115471611145 GT 1 -74530892389.0476956934866861481443948006069142 0.7415762952403742486256205798208772 0.0558141023059535424792128214988889 1.0574322067005677472411712377727163 GT 1 -1615637153035346295999167216.2332255695592603344305902391741726 0.4036610138277576902603191693503417 0.0660836835825810869520516811264056 1.0683684417508354505579776045667933 GT 1 -2670490378096023356.1275035278744293554557131404246582 0.2447284926415825207615045218239759 0.0307383270814458906758462142807440 1.0312206592551741232460035545517246 GT 1 -282585535127536069251494257182229649.5381029724495555156827425052587073 0.3749841762909056507134586379542528 0.0241006313326259790220416158803090 1.0243958037584127368162380919724629 GT 1 -2858221.5775455670838891650747922830259349 0.2077935189807778617042791230988051 0.0449624442280217346647339180165933 1.0460046138589466449925721631870424 GT 1 -23099701.6613878732621726044076762288452655 0.0535444154024280105267535416060769 0.0233637127699396929584485887546991 1.0236409713481055275876532105682058 GT 1 -32142768904627121350005191696990491764.2166143069218745706854087234918747 0.1131586085334724734855402092560538 0.0392711228231952366786617975363418 1.0400630355433240910302963356192867 GT 1 -56960479684870794904446132275.1072517589744585010333986313915344 0.9983722907470867985528959087380495 0.0889330605525657272531656712359391 1.0931389053355376465017388928562893 GT 1 -19207600070069987318759378919028347.2493120635065327754482589456251907 2.0256117580405539134860101144824481 0.0427937193864315610667695446109933 1.0437363615261014267359545667829731 GT 1 -64677702125983735199778990711704510409548.7222000084366595658727119793597495 0.0584030370707258645573513087015742 0.0803416260823168117933944741545231 1.0837530105982800636074764024662476 GT 1 -501772303567786606142759578864518.9103888165437865277317117172986563 0.6944080724835756644762511813113227 0.0318950077065001054188686829078655 1.0324147344741384693313263557267809 GT 1 -4029673662883228453.9759035275529131169549368878325972 0.0500372828803547910341233621259547 0.0808547203345894830088323588900739 1.0843110846097055291436167363376617 GT 1 -12990558317797028812738391595535883.9115542295962080567098239033572569 3.9133838413931095059099925838737976 0.0270527014872068775565067558088102 1.0274253621759036209263284880830281 LT 1 -142613915641667934985146167505904889.8487895375328607666121422990924576 0.3510597580635394330031212530675306 0.0155983045483220146793602088437096 1.0157212381468515193371976250837282 GT 1 -1970382051453814144037647270.4852134580011701207348718758378031 0.2495881355566216234490745606876272 0.0601526641854309882231367988671084 1.0620378256157150833213189748230868 GT 1 -587964248688704128296199820051092499260.4179517734225967855655371591871241 0.0486653220962143718440530756889282 0.0197620151818877596408947377699788 1.0199598951476455167455468692847729 GT 1 -6841.8454432627502693781821752856105802 1.6529791121445638073305664650959295 0.0374733543919995237866995499074110 1.0381935294548137352253769452334114 GT 1 -5525998.0218267876383677645839044640506420 1.1939508282368811095560690488196304 0.0870906772729558791414172638896039 1.0911187212526600589090177701648280 GT 1 -4408.4355821247440125363470948041789982 0.6866712438698091332906927959260257 0.0370299195937456186598828532660195 1.0377329368190514280535585274652601 GT 1 -44681.1458338202583085689576597424538200 0.3792330338294913527747088261411226 0.0524103093600043776021759639233208 1.0538336861994957128874083375752499 GT 1 -296275729807004569351744.6171575454718477320883396339714799 0.2435711251122283617078165352266489 0.0696501557028242216905117444739208 1.0721945869079075830288058826211190 GT 1 -1352987844.8155147706180076858190095948856740 0.8851002288894418920833277711934109 0.0636240189017070631972242673965584 1.0657381939524785804976962814546605 GT 1 -2988317290474065287306217.1383517958243876019647534983888019 0.3813266182391199788512300910844067 0.0692916427485646931883582722385012 1.0718093082977104396563185255638736 GT 1 -174685017144374814137284791862202.2156466662315116960793599836766986 0.9329314080720373296040530507117504 0.0739568449847747992360572109369281 1.0768344417337276396949864716890948 GT 1 -654042230.0436310148470137547425334919076689 2.9448675661675616780998376472848123 0.0980535411648886581167273925730241 1.1032001189572153490859709886678386 LT 1 -1950906729387489546.4094772104719917548528774974051455 0.7597821452044674349874491978347334 0.0093593512123508175597139146472368 1.0094034251578297146397297346002846 GT 1 -158527429510721673915233327299.8423318845193618053094606325198834 0.7928998835478814363315290334942626 0.0203732312446437689356968734755500 1.0205836280674373843180163402653359 GT 1 -5966034227509942186615261090150188803928951.5845972394613913381104371188145994 1.7370925572922413775442532173701314 0.0145581649805744700669480563431069 1.0146651749130692389469807794537743 GT 1 -654928875473528624899618988996921039140.3403226279886907085301646945893093 2.0732404668374876792801260391179524 0.0689987996377326778869047728170445 1.0714947123801575287818594998899983 GT 1 -213833301632675521076746452974002209760319.2865859230017155599077634883036469 1.1446569901291310619357935728261302 0.0985286528189775651744726944004016 1.1037270203369132327652638478333821 GT 1 -959885111440925695702316.9857739039260521614048042243661119 0.9906069411844961998027861992671498 0.0394076324499397868039921418887104 1.0402051352857267836766903295291655 GT 1 -882029.6215494850933225884574743554514112 1.3888167451431581584188776855596302 0.0003027889327381917129108808619827 1.0003028347825625325674940502440079 GT 1 -253903243149436963161625917333018966.3141442257108895241710767742832030 0.9603960005679832996986605143102754 0.0297376478259540989421127661536317 1.0301887778952761652463954366408981 GT 1 -1831134225573534685621620.4219996734844646398625830888376720 0.0308421165230340402501781385378748 0.0150594721831032038094582334569163 1.0151740174837301772145651520862814 GT 1 -39800089667434274202150265347725.9041277067577505771267079007258453 0.6024801194150442742568029470427866 0.0703711950155985728059691518123193 1.0729699069355564874943275780881464 GT 1 -5645300841250811789425402.0962981521652178112204448080012893 1.2422713162415296487097472186871849 0.0546285957907872197509584047260505 1.0561774083734438110454426113783791 GT 1 -97578.1509877545231993001060750027775059 2.8034859206201100816970141157648881 0.0988852546154317328906763921333737 1.1041226761145505677881453561730310 LT 1 -11534717890694804778164846.7317874222686561237333842478127709 0.7339100798607779182035945776490001 0.0345559653967242112724545703410782 1.0351671439896005342564814022031495 GT 1 -36284690.3779392968831226034227520790889151 0.2560071881687645719470245795329678 0.0474900943764006693790241639585517 1.0486547724305278442499233727221617 GT 1 -1071160035108277948094.2864988804228394012554752115432756 1.6282941021227986345389972779670649 0.0177411350377692937427053295204451 1.0179003954254950119302742943049960 GT 1 -455985550812737836433673969598525528055.4743887447083345795057522115658102 0.1437567041442656071378405308943031 0.0564157108655025216427544523695970 1.0580695815082782878910018029469759 GT 1 -54199873924974075515722214664295481461.3951154351379123275791893373170793 1.4316897239691352563587525843750376 0.0478383570730388331129971810704217 1.0490204656134646398179402065647557 GT 1 -14077637538068306420076669353649927058.1669050580269330360175296906293663 0.1805929922285578487314208786368487 0.0876988079484281289119623305354315 1.0917850889872872892403285506012478 GT 1 -100779309427798870240535.9684990011831547491011945383905640 0.3559009605198298493716142290681435 0.0366088909340302631665071645242951 1.0372958135332207232771749667325806 GT 1 -1611404868.3406755173207670714112763964295830 3.6668383361178624021706982207641733 0.0037354584381845683500987638270849 1.0037424526863044978670779178817853 GT 1 -7748116409684806.7072451752161086944464800401516527 0.1179781893963543901346242980534902 0.0989760401451618639750279355071819 1.1042234292136799369929616569050244 GT 1 -8236287.5976029432280482250374116723037811 0.7634775209359876504688695392761276 0.0235182526620941353435634915103092 1.0237992207623670033198690188761628 GT 1 -41007.6020323633308856515514863064872133 0.2191201646928317239016323144612111 0.0431501443096774492950032622741158 1.0441087904435248552900242332153036 GT 1 -68147024791485152622157176076765281511.9854676579934206130115811938245869 0.2996302911955704580044948385143966 0.0966699717169018066477764756854544 1.1016673125103908899479251777787786 GT 1 -13952172797563607.0221317979359390675279188161575338 0.7938265955278102176076457955526071 0.0755285799957246503915252583734471 1.0785331426357523128324772294525980 GT 1 -44903.2638633082538102068515760434857183 1.5233115672183260777822363771074759 0.0248729357442308096092572936447795 1.0251874941618954397747929577445324 GT 1 -31312643007991770007057495431249310638576.0469956118885896322408895762373759 0.3201395134519860286796276067282098 0.0150411521120350535272883113924796 1.0151554174767505077748014203370763 GT 1 -9560891628893228086.0657950764425311991805949784573097 0.3624936891914268802664072223897644 0.0079173849652479606768283995938335 1.0079488938799256516609421197677644 GT 1 -18848654.6955399755728644965669503765301549 0.1450864053001758612695980279644757 0.0605053963048337222838307797906084 1.0624132039501513124485063593539315 GT 1 -831268486178116550421.3979147079495573795661646666645995 0.8667790211488879607744302229154349 0.0541986685435535303473875583029759 1.0557227410164837793927716908472175 GT 1 -5.4570265148414176595650126442964924 2.5633606975410819511396961131730279 0.0567250072338254242048997760064088 1.0583974240496485434582508748741817 GT 1 -813392414.5596749032636225704561047534126467 0.5863769454294450140710737085490194 0.0100149540191966928204776975752993 1.0100654410374798075931114527174445 GT 1 -26268057965227198606360248.6780353214193153938600274831339705 0.0785320981661350342046347760601722 0.0303406091554089839180148924807884 1.0308104126091935298943826514816953 GT 1 -70301.8245935806874433359382701644827806 1.1312192191615509677283499520758995 0.0916304851355675774805208112352697 1.0961040284679360966232607292403183 GT 1 -1086776.5374446765949477439652276267523572 1.2247871554083647143751418182938095 0.0152389761128919443618823332908617 1.0153562825889491739278937139852929 GT 1 -18727507264294901153999152926203526268262.2020409734548450522460074643969765 0.0562062649453766153538669612447938 0.0941899408239313800467604259110621 1.0989256426268440742099540276426576 GT 1 -5686925344791398977508750876213387034601404.7378839197255360601654345111807924 1.4883413988359839579582542664446642 0.0819726650393900091770054814885047 1.0855281121594174455574123117414545 GT 1 -210799060305019721674847.4032853910488828053859224016063703 0.8046751915108446361804454137938836 0.0547565154368687980928012775328763 1.0563127290535425952066455125800552 GT 1 -679367353437761779757484131.8599304079628203648212084578065450 0.1314630608007442272728350754940632 0.0865752892142544664475489304371754 1.0905543249670679627571204269406239 GT 1 -924091025974747684044446341494499824.5770858119637908497875271078475484 0.8931952358795578017504654359460908 0.0892033588311753011598258249168302 1.0934356325806164364744139645763526 GT 1 -21780553421214862234760405328718501736.2715529283850031231357396194792942 0.6242152200913949935992786716285601 0.0135423238519581476918584740829468 1.0136348574828680672522761587683407 GT 1 -85604478654112435790025185467.9956648201625994405808952146699887 0.2251939502399924333804046089427378 0.0365120406568847506857010051753236 1.0371952879955106319265436629861288 GT 1 -3080455574055420110355125565487.1845589453988037119231329050329217 1.3514893787650177235910439223642317 0.0687584421985206216995006302332075 1.0712365747775350388259668060119913 GT 1 -2.3865472686891940468596305167866891 0.0353391151605502851622425167026357 0.0089666420962393308592946129484056 1.0090070843672393281630762726887283 GT 1 -125828.6535257307304104809062624771110101 0.3994161041472192861788951121263678 0.0141251676750002923807394815168883 1.0142258773413392998877067769811987 GT 1 -5591007017925710026979313496.3611234135822806220823363940062957 0.7570413705072075571284511713866314 0.0601595867553714480147056051097949 1.0620451912751911914187828300963480 GT 1 -100624670035443629010714.6818899708845978493218875678356152 0.4491734640898816172316070274261211 0.0324530532571262663746040237288091 1.0329913314901958256359460282181229 GT 1 -10716674533877516.1798048837203538688214533520078589 0.3548860840724521076944581620092700 0.0830610501727212221750117440696928 1.0867143849209273099664923651713361 GT 1 -5413751840463572256.6396705165227831454159600617392442 0.4104571614901908984245290113039377 0.0598566302524639535510848118352954 1.0617228943402167983071061518190102 GT 1 -68.2440303377441971144796244082380988 5.5773849137787748296535047794840810 0.0864961287657681944472587824625728 1.0904676653687510025144086039714283 LT 1 -178485776098012936.1234435800147609940022320108311745 0.1229848337465545668436726191933804 0.0566691445376006724084464647260472 1.0583382037347178650785257017628253 GT 1 -5643921999234100083508581.3476276350578185211448256069400369 0.5381931530437624342393680090788742 0.0168561842047900760574682328424897 1.0169998665909229851408165965529753 GT 1 -4290315966455937.9417554108109307795690787674900477 1.0730317469213359969173695075326032 0.0919855029136166949964910915655785 1.0964949345541316123453733580517227 GT 1 -201988.8437419894941982314948304396998281 0.0598816618274029687476345953711738 0.0883628873277081903485033087034036 1.0925132708637291501101131688671062 GT 1 -385326794454601844852377275203090.5631810931696885833287288693282314 0.2413747415601403464635654362094925 0.0227357168694329826509338579834717 1.0229981587795875573856756345654952 GT 1 -1229420497952495286651979633834897.9963896639037129111072337010227432 1.2267195947972529928576724456660449 0.0454438659098972418599542116676713 1.0465088276030857525719200022786298 GT 1 -56190297891864262909375329642118627903338.1648802618280968462026484234956734 0.5723605676972583266424052647436798 0.0326428236256862334773867457738771 1.0331874862938382094149335177422328 GT 1 -33729473100896.6340212443059673688605610895145723 1.1164407754575649413079155875186692 0.0075472307767814312930505115990378 1.0075758552375358915454642210317168 GT 1 -1067402547074177588711.1894188536072172010227313025379089 0.0374053912341232744885821776963837 0.0206020793644743076828497739355577 1.0208172628165151725547607638275715 GT 1 -30353131780728597378343003697358403735593.5908125861454798975522622256557612 2.2609545554006513220296884864488656 0.0793301003342803686582742759943580 1.0826537221023961699500860681305859 GT 1 -221919184550198705237982566775.8790916945653589070696150280022494 0.3620496994800143047013542204992611 0.0455378129519550133679641342578626 1.0466072520562126375910211516941199 GT 1 -756829647746084.6951118429908584698162097743469680 0.4478584389964550105851507477988659 0.0757095522283518237170476100377667 1.0787289193189039590529104956065683 GT 1 -3073791876194.1026572247191772780772891109376071 3.5895078494623299052544115713458146 0.0971022256374494087998125110793201 1.1021459386595026452252239184161536 LT 1 -2190335248174876324939598832907086623440944.2331122975241383865489634683718070 1.0560203088234176366211693597068736 0.0626056917569088570252290571758121 1.0646512653669990736515787160652335 GT 1 -167489341616125256033006298032516512140.3180887800970181345662537337167887 0.9237757970837040812156333510914556 0.0682910570251379316230870787988453 1.0707348060155694126332866400497186 GT 1 -5326068334270.0298867264176894235303282064609533 0.3290263124244596386053529029657612 0.0619488896214389180289723507537473 1.0639508427838620359664135529987254 GT 1 -2031713922.7372772912280123538804027413901065 0.3256557444555033792821805131177578 0.0040848496661918473568184859893283 1.0040932154543528831657964325057804 GT 1 -484320293074122170245338292441.1619091917781160567152439534227061 0.0474271213210167468228476744633730 0.0911108821596300247635887842956965 1.0955321748189878709361363987083502 GT 1 -316919357296803035.0068375122339132493791241763977975 1.2134665243278833106429113556724415 0.0327491446010901299811215289771905 1.0332974010401483295693966655598203 GT 1 -137004269491338568751770974.7917619035717019351284862105747715 1.0617719333999090818574615772797249 0.0318962512209905444775079230326376 1.0324160189580518622841010886795771 GT 1 -3390596004.2114449153360235719042237220456085 0.1389197717329218330259017527486854 0.0383014543407499254252900534671678 1.0390542395251646068324131131032963 GT 1 -1671193.4895575165643663790782811514750723 1.5386000752923690457049094247386492 0.0105159068205918700591761587800482 1.0105715896832752988368227302964080 GT 1 -79357256204194464639529723044765026535390.8366920009058823442611776910262408 0.2424494738078276397680435931500218 0.0706506320023425509591231635298013 1.0732705419757198498558001694410143 GT 1 -1405808692778684179024972982.8499295825170836611245580147861544 1.7400939033040448638700914697875691 0.0358676706212058281140784459141800 1.0365267226525842454444420647726527 GT 1 -1109116300184178082.1084986612433200590821591152995587 1.5854684741590609307890813203339417 0.0063432490516338062991100891011434 1.0063634529400802364795605646046052 GT 1 -296579409.4228071194749080702623691921448866 0.1509252183100956779611199449394078 0.0868934380015760798649827780637292 1.0909026888798896004067026135046791 GT 1 -108028795331521836274059589692700.8872466206072089037625857378071869 1.4491916611103953913102010122080537 0.0014604246063399259856018343705843 1.0014614920657779303046181529722632 GT 1 -1178664750685772104988669834725.5173023203424263409685138545408639 0.7085655267238599391074012612971882 0.0881132124173406466862725078865577 1.0922394330358917008971671712252907 GT 1 -28629363419032381751427731222699984.0527766893754692956524082028134910 1.7163235009442451516956590171168382 0.0853678740489810439316244444336064 1.0892333426906017036038603489778695 GT 1 -37390644396155944497619809733422027925.6195369315413563986194649619512277 1.1299110963954424429588032054494045 0.0331405358479832676151917781008391 1.0337021258878256591146614162232992 GT 1 -248928.2333858311934093550289257920814465 4.2611993356951008412065643726490362 0.0440448547397235152304467683630185 1.0450442862152863100734712863754354 LT 1 -66.7561332478949992630507923166140458 0.6782725117526040557016001342855904 0.0911509450936679966585286499586341 1.0955762548021726016755719597747885 GT 1 -177890708066247756.4738128591108416742386677267451916 3.0049374751885051647467357238256790 0.0979143218301977543943930421890637 1.1030457765460004282028880237420283 LT 1 -19090628981955598448816990178622724991631.8570875357633929222786172248973294 1.4126071338637510253919077598842388 0.0440660458838807231308364228873234 1.0450664539698542791539927402941409 GT 1 -3956264242204823853656.6646814009589404951006323367051558 0.7354293412438400580975623098651578 0.0806765604757218040777434717014756 1.0841172712936933890866901479663597 GT 1 -1090075952812884406688.8503085941906852392245782418695529 0.7521989057839242710211453643119308 0.0845634021136938363526437406651024 1.0883541713495190555707078813951170 GT 1 -9764550986717698838294600.3295223473650886785935881304003349 0.4740729566595165869879548820963917 0.0695129429859391196337199391048532 1.0720471127074152155739564833618199 GT 1 -1085389238806785716874347518800.6700125508593130724377598145737935 0.4774230050443519108196134220525353 0.0061881460410783560527038416343483 1.0062073719730779315025057243647286 GT 1 -45836709963586075594575240567.8860679224130898675980592313099899 0.9990568484629779504698432068008092 0.0394987043932998583864343188733338 1.0402999478866685253568135136038378 GT 1 -10784824635487916932204774036828582460475217.9636666970613209957596025490987433 0.8704541132512666113403429642414169 0.0102449905572695729995654326555602 1.0102978316874320163420231832138211 GT 1 -408575.7643352578149790182984399869185666 0.1493162712231235986188973632228285 0.0798295562324977359430120851745807 1.0831963611338089240870256753956164 GT 1 -8925878726556744207074648118093481892946.2233882403248404045467043483765091 0.1217750582549206987845505475673151 0.0842157930998267153656513309809521 1.0879745240485123523267368906656810 GT 1 -235955542340519298472524953267237064687.4450415628661450968733459943813509 5.0086558763862168491653540195938976 0.0716442157234698703818149401539245 1.0743402314414051141911833130742924 LT 1 -203624499242098166618616835720438.0338954728263885763862606942203825 2.2449061602424095560609988671857794 0.0461673800603219624408633473039732 1.0472670737241253323771449234720637 GT 1 -2069030915655255056557.6583859960212110506283340499025288 0.1041535739317142799095193826111221 0.0344368431684901927432546905152200 1.0350437656522090339475522120678413 GT 1 -533236947019230427648491.4510481472553371631623424049609313 0.1011085189937569666719053524539216 0.0889363202130964322536970825050559 1.0931424831915884692383482673097582 GT 1 -177.8077781911143621090026351829994461 0.3090643788440467299853109049500891 0.0803316367427030337083918339428128 1.0837421486460102685041960742463593 GT 1 -279201198105021402605.1584783637237245294240389145535374 0.7174126463164152133048187180299409 0.0725099820196012171092503396437445 1.0752732468437449865300389741219319 GT 1 -423175738733110277755635777368184259653.6096784826564614680640046205010789 1.0320699888022749969214945144721948 0.0701373812095381236864512254647460 1.0727184254774510763056428148384046 GT 1 -1270869389914013729948187167708305335.4667812502851413046115301070481334 1.8050262637508742480301929504574041 0.0953565241243621113645542584208534 1.1002143622093130707145505606204163 GT 1 -280758712197001780106297.4519082308389142906494758076772792 0.9004678666207777908106119855331248 0.0888569829426833446025214134737749 1.0930554049577079555302196034392275 GT 1 -570233365322712.7315213769434071551590975759897364 5.0930440135551734996137232297045863 0.0313098235363533332451161121688957 1.0318104535492441552671986972631764 LT 1 -45613.0580178698856861206365224836400693 0.3060556987818440172342612374784383 0.0090082398813479552822784655459756 1.0090490594004883887760608410539136 GT 1 -457891825179605242382098071.2350932154639568108224623904545982 0.6975006341824378503740338396032338 0.0584948762975508262418944455074239 1.0602754888365948803510023074203826 GT 1 -239374576110651558797162226454187815457293.4131078930565951578664708863205194 1.1949806116771060397884733463478503 0.0680520742279501719377737336850599 1.0704783394926752349554896793941326 GT 1 -69539090416908338937934.9281431866130903841790932070497419 0.0099873840393494863614492217077501 0.0470942874810846270489169686382011 1.0482393177683108941587501541963508 GT 1 -3544264346846112017169400131705257884179.2051871365491458847188399806263472 0.4133212119001499435930910041297907 0.0119296089364726958342084013078002 1.0120013377564301782541445774476837 GT 1 -8430155524482502095619960087200.2105772020364226615117345655050146 0.2718784135470857384072879872021851 0.0704080437172811703226235216752644 1.0730095458019623345941664874412078 GT 1 -1421718029963127920543182044611646.7019389656611610428498872806588730 3.4685410869952611661519882389668323 0.0010154858470710414326816078209556 1.0010160018021501374345676007127468 GT 1 -212864028456145631740150260.3023251390709916045069579014481590 0.5846102620482567775837401246864885 0.0551391965356018862228545179326508 1.0567176602590703504743674260916587 GT 1 -70540905995614244.0899507120003283065789687375998117 0.4659646747917786832432960162915651 0.0925413350752017700369588654402696 1.0971072621727195254024060294934346 GT 1 -310905683641660376360487811420532341393350.2527673692383375431516457920596596 1.0082385261197490816236712537538079 0.0092854710530273433466609803131664 1.0093288497761031680318496514670303 GT 1 -60301032241792610944067.3292756760686291515334111343668177 1.2394091653170785452073685698260120 0.0398204549616641201991104201158335 1.0406349859258525133880541939920552 GT 1 -20920299136224582739962673196198371.7582687562684598855618302614092306 0.1945636824232481793975618944758237 0.0514400665461897731045264135968071 1.0528103039872853892603879676705857 GT 1 -2109292801902590314749015242735572025.9918382875331278801717887874354471 0.0557182464726974556883696763736870 0.0347263954839573673959854029377109 1.0353436898337184409902565055524086 GT 1 -196806239617627157704067145229273411010.1137217174344522290285075746758437 0.1421399100933975424466873561265960 0.0429675633318003272748339850079929 1.0439179939884241582011505956845714 GT 1 -482496556225197976912400950275325035874050.7488492338459501880411604304002753 3.0426045100232315219729403299389220 0.0575494765646392096072017110885306 1.0592718560666783876514123833033523 LT 1 -1072467418.9754230832185893999686178487295187 0.5594980005243640318362942027748715 0.0722829076381239556739539860433465 1.0750284500430585885594066522372463 GT 1 -81.5496313963918040992735886835896590 0.1580165870801186328898789041545362 0.0082188430926255598885548459893828 1.0082528039910546431917752787510868 GT 1 -780592456824924123331424570710650514376.7072475472908504590619015872138549 0.7285045289447777300855696504662649 0.0815495379076922583822999905376349 1.0850673092682918649994265727956822 GT 1 -14747445574280954098195449258412.8548895390416964398632893378793519 2.9163271240261304380023435474755621 0.0732024070786908476699428199963321 1.0760200836205243245208540904423891 LT 1 -103001414558949560019.0609777381609540285716188647377574 2.7545930652035486419285926815336196 0.0969589392509946987820535863703784 1.1019872551161073040956760527418758 LT 1 -642826384423181978813874626932116.2156814996995985133999522385618783 0.1712584539096449686900392062814503 0.0005667328216405931515703183208620 1.0005668934753875238953912729333412 GT 1 -183472019915645966.6583440295918063608773282369732294 0.0758367275660299794288716273515285 0.0285520995724817880743376515978996 1.0289676395722890893607219532294127 GT 1 -9177765075656120680980516971660281.3426764267528484158476191547111741 2.4959884861078411988963847480539125 0.0162457136109365917256881797420753 1.0163791220665595230679398039797410 GT 1 -2183193034466556151128677.2591380340249644014760027180618380 1.6316685456602420349677937099433217 0.0169407636683563613110490802688480 1.0170858998859348758586441305192552 GT 1 -7612861603397997799968019120789.7817631565576137770846819510146086 1.6189590696112556214032422682335384 0.0244514788471325046118037553989399 1.0247553803785387192184521904707731 GT 1 -3595212313496519183164438337761.1213701100427500618084293538067597 0.6181532263697390210437627538942229 0.0509304478867494156572284630154087 1.0522731931597313536518755422073232 GT 1 -202492111535452047660036427865489.5894789366257326397923851479913089 0.4796977379059820668812678094752441 0.0400664461673757303554555166380006 1.0408912116733900569549589173399333 GT 1 -26540.7682632056671665750810470877819776 0.0444136835844958509689182877032414 0.0226685740751021997907651312519893 1.0229294562913480446771007229782119 GT 1 -182535212445713243345205307663433603707613.3550425920600568750223718851468895 0.7584985485266994560749291717434963 0.0497420557863286590094409844034845 1.0510218110175785108506840433482919 GT 1 -1133252600.9938438506982069774581150658344156 0.1979824439068570838335017511892256 0.0862029394744082272793730979459318 1.0901467666171769420536239964192078 GT 1 -179744321507927188545998388.8253204592367131034569098480968959 1.1393911215971350049673715137854585 0.0226113252816279287733497047211876 1.0228708813644602516227262966603939 GT 1 -3014197667683147050796640.6978118299202393110965396932066152 0.5453009429476104274929475246123288 0.0749280901715191029238916495554089 1.0778838041362221813793317422731295 GT 1 -2453978514292083508815886574535259.5278392516486653716920803902795117 1.6700627541184693360829544668956045 0.0887396655237850706740227322972989 1.0929266547345901005461926116701687 GT 1 -23295252954953721.0954681409286223146456730482018510 0.4851687908450800363872307480611363 0.0457965850285016672355309043206100 1.0468784070221305727999404923391995 GT 1 -1501875892148778732.1446520505824637780168563446896808 0.1282281513342188369441909821827648 0.0782537206116153273710416637989459 1.0814852783410314164761613778613793 GT 1 -633127819792896870983539914041636300.4226461598549801442921329089962686 1.6810724988006787741438573499540657 0.0852362054444078699634642706551678 1.0890893950592283165607279162275250 GT 1 -2106283135301.7127250250406840503895783669133764 1.1964945882508231425386956068453554 0.0554226260298426637311657977266732 1.0570176748345687038018750961540676 GT 1 -5.3032226628048905331040622100334335 0.8562842168106854115861852153091946 0.0786316553894774332554894642239597 1.0818953828220419962194833992135387 GT 1 -311793997924165.6907058144918185779647913524109341 0.9603670003495947768931432784274944 0.0633586723501415270827199489637645 1.0654548580194881535992819006602226 GT 1 -88425240597176581108334555373286207911136.0539145843725880445467261685265707 2.5158530031201640074362233272726639 0.0576337677064625137138753579000217 1.0593612983338094440878384340425384 GT 1 -910.6874036592503010944641250082449723 1.0325526302659039783776048521428521 0.0763098710081843604485915562512445 1.0793786218195663954649546565785696 GT 1 -7583930794979104165638.4327363472508011278777671336012427 0.2450131960983290689028467019848453 0.0793573510011403873848045459137703 1.0826833212781382480177864237156754 GT 1 -18.8055903654192461842837051160098807 0.0566901625513006295026563797533814 0.0868757718428454684980095367819192 1.0908833417537471730056575577296833 GT 1 -83590032185307370.6648030551782630899831576435675625 2.8295816330915623156809052469228740 0.0090465028454511285779071270361318 1.0090876709251685102897874671370183 GT 1 -228395371013728510252039.7467717647367879980692646128779724 0.5706633173780009676463275216708980 0.0272409099541364567175364226062687 1.0276188224725067535882399051446938 GT 1 -1785614220790476447349237896245.6943217058664552815502060330997859 1.3284546211826960547222261513868810 0.0166728012956235464720194849852098 1.0168133569415602766274321193919240 GT 1 -5395248083639113998.8590184588755057087260434790600238 0.2940822920650258810205899843750894 0.0859923961717795846875733561781120 1.0899163882756988853399412258626281 GT 1 -4444.2748428840039931240567776842874445 0.0851762948160740594843132259427517 0.0342623627198702560297268208341153 1.0348630786772679872542639702655482 GT 1 -96542017338763905.0948147210891632017873603048508649 0.8072424587534467388026368097759768 0.0690281852186702884699560769899710 1.0715262762972509073146432332830838 GT 1 -22880423330383221618381690528110454919836806.1337637195876763645678850907045621 2.0494537052889811860863386112044249 0.0066434871440912291955957905504314 1.0066656533332145380822432038903036 GT 1 -13463.7048321488026386842487246395071531 0.8259990550509462923408220907136226 0.0796775688966107761397520795974634 1.0830312017481817351626112968393941 GT 1 -819298088647282167476845660170324546495.7569064750786993268247605569192916 0.3702651368876112058905104464876698 0.0597534529157056418106381344217930 1.0616131539763291888836212707865036 GT 1 -9714830455700856.6765822417179684447154590535724592 0.7203084482187703061238332118892251 0.0023985543169808623565831881421332 1.0024014354563548389939808388512168 GT 1 -14.4250849054949735316716967535734336 0.2100917927007721636529319305990160 0.0910242424144572567853881921701647 1.0954368544831261976187780461855355 GT 1 -283988164294.1084805270391362476299866466802906 0.5841870537028489962518749289140823 0.0221453789896062946582786824458569 1.0223942692703440636970755541488768 GT 1 -14410234165590135166280387894214.3611780006751834800976124584875558 0.3140164814724802095199515801649307 0.0376785016610337127555492233325385 1.0384066862905423768055056084904965 GT 1 -1240.1259739372046252235993952323383402 2.4386548577062464603625947538608753 0.0011769848370749875600366713515833 1.0011776780276982903072773740053407 GT 1 -19181027099.6414575128823542250084833585115541 1.0652156039548938494668563575404710 0.0000049844533011331566871393860234 1.0000049844657235617916365090028522 GT 1 -18886353847006516759689858.1265833569435855164705750086056429 0.5795457414499107122314587532680113 0.0165646024449984112637263244124193 1.0167033295788881621740036994116747 GT 1 -230826608132.7734025009279854916179289854626874 2.0813384754817230289467742948741475 0.0111394474330632531905870333371880 1.0112019557162712587601124101254750 GT 1 -2417588265719880.8418729020056698379461602137909648 0.1152516206508941773062845448175444 0.0101917138864883177822454659111482 1.0102440049965515429842455637597521 GT 1 -2305492691000353707042014966820064130.8241103587755626681260205365658337 0.3949521662389333056853362271340913 0.0706755929662333017846562762490012 1.0732974008728835862809848089727542 GT 1 -211019316025461.8089764483335353582017023473425760 0.1087275642803327777237335386013879 0.0471537764178220245045593772101288 1.0483017487024002759710806040017003 GT 1 -14569253101830154688847.9290670889138015502859205783712519 1.8497903826280332374821503320315927 0.0958374412697497810568048412244339 1.1007461131516681782844604172743306 GT 1 -56002957761078356678411.4835504702765968011733573315072751 0.5408512997906631118446465329392406 0.0204727398485613002683236374115212 1.0206852113044211832608002107067651 GT 1 -130503893.0573380384766824110471333719600741 0.6495549427306298186257952032558102 0.0828390325149337986760604794763850 1.0864722850693585050988539894953779 GT 1 -2803225482.6100298282905176724698060666807122 1.8409561195931226626799100151573053 0.0167620341506328956848710725998722 1.0169041069016215678235789044007707 GT 1 -10398872096220.6137719963919622760370657606729973 0.9405004756028822326939291086873229 0.0034558659592378796217592985465505 1.0034618512575730887305349392632210 GT 1 -1.5664363933260105542886030470875983 1.8861314662818959644905594119689917 0.0574251996943774856842446485897706 1.0591399990896112088002255033326666 GT 1 -2.5720131307999736398555318270696670 0.6212057471270270234988104256811992 0.0925281139620483780506815518475367 1.0970926928955131743767689704622163 GT 1 -2101170373896.2175856164487486452001757275464245 0.9846072842485898063512318860558507 0.0293078838691960636058184657480444 1.0297459401360198937454958870953404 GT 1 -27081189592724187918364931075814341546740.3052036521934488876150255995829873 0.7025229280479694422638259419488413 0.0628728213989771731406788477255575 1.0649362763906137678840443167661153 GT 1 -142763600714201188928.5926808230398597980679502222413528 1.4610950497777642785067857302709764 0.0507214057575808644392690927057449 1.0520529573400638154968104890626666 GT 1 -1976009363194708633757532497151934.6113706471357440895582946542570882 3.1753546797499286554387757250096076 0.0509767368956969938679498056978063 1.0523219673909866879336399828843523 LT 1 -805051881769.4310138659139917847188869991637177 4.1370820556883235202940440724115016 0.0068305519531376437516378853583708 1.0068539869500723101119546727881111 GT 1 -714993621.0674451161813593771731455654174672 1.3074575929985092576611261093710640 0.0100819953097803999753212071697432 1.0101331628287933853071979788203097 GT 1 -7049.0666065099169165785257046952753831 0.2333590205050476136244590991416402 0.0487563575555056741183897791501925 1.0499850531983578498994543611851320 GT 1 -4.6734262649183207759396043850454969 0.7130428266151901334631867710663862 0.0767253479876237234719104768222660 1.0798285242656992375904504424050015 GT 1 -10213316747791663900286677894905201.8694806680756377929919305808663201 2.0867883835431923586916306155170275 0.0127235865678279422083896150108804 1.0128052246205556878709198057934563 GT 1 -117892263002061327150315825175294.7809511526549788628198106805516743 0.8457973461301071924819485720595118 0.0906783082996381902540171101828298 1.0950563511511452835287245918825541 GT 1 -10838270162365094.1216434522263162573725931992913235 0.0453896508239815110477563762524042 0.0627885603956656937079911119507671 1.0648463662723994610798063671430421 GT 1 -193087888895.4306600722236958228559237841697685 0.2748011908513827914970611122760315 0.0471050129609296569022077489288585 1.0482505733837040784071666106874808 GT 1 -21952291331317369335198392733.0957543361373599737303087396644122 0.1261699818404944714004733501637307 0.0647778958068191808284260523079975 1.0669712333110621067891161821506605 GT 1 -108849785561299356204.8950224316200283347775216982066721 1.1006067887182759660325242471122288 0.0612544384374964627422606424953562 1.0632108039442602239988448181321314 GT 1 -261650.8202396074080214587857694901649126 1.6043685451579680231530782536793227 0.0093366742282656289246803167336094 1.0093805341886726755989039856098621 GT 1 -3096492526.9615278259554982431634472854271873 0.6556024617556725883469443746931878 0.0639023974822219694901719794524321 1.0660355317467221262163093763834959 GT 1 -508700040676949031493255223037605.7603284369303007128207025996209466 0.8068417895546163108196751812322636 0.0574828192395632104570243656326659 1.0592011309025756710051093198893020 GT 1 -764622856255870430491491254.9678792928527663294546662816277566 0.8294862846214356593966021829351072 0.0946292830067843791115793435408788 1.0994107871218065027838418497208369 GT 1 -8840961212313445913.2371762855150467404415831763110543 0.7750087144330639774068967079899448 0.0166736479846357602503722196070144 1.0168142179869761344087395306306275 GT 1 -8171109679788932458619086965195809779451.2079882372798501995977246437692254 2.8998691597378710401098585176086506 0.0599864568973414319063867440375120 1.0637743876953576544274223670877883 LT 2 -8622604.7916066015686278665035950275349723 0.2501626370828502437314817296836403 0.0092521534335728149061645708952128 1.0092952204527615771616306535525342 GT 1 -534280.6004581163204857350765726503284678 0.3790965755805025145791218400645155 0.0790928945888217106828679094709851 1.0823961105595537633929185846063017 GT 1 -3157.6196859058844583154698527971631484 0.0101441008070672894462983309824092 0.0232984694402557346530933626342929 1.0235741694573992459214801900541393 GT 1 -1454786458708139578111487360546.6564891723541942607544994723106752 0.3346538615389660444615107273811037 0.0694330324841849994561071314676927 1.0719612361012017911317655686077500 GT 1 -316419224185589728755.0815679909588405934961205478996468 0.3670618657791755039226112301795911 0.0100065415392839314437002378654039 1.0100569434907701428280596839739963 GT 1 -14528257140051606.7434505260289407530971547392942192 1.7132808263023120290896376596610382 0.0789255919764353878887908346906312 1.0822144555194503308318361142734970 GT 1 -1960782167770808349.3018136910939176791022790988011733 0.8035077478372626153005444673929329 0.0529065153920756119386174903015009 1.0543574740811830781662816183434486 GT 1 -2129906296428.4207800167828961584371186507131820 0.2876357064080422384483682182680313 0.0835025303460758156921494823575060 1.0871959725857039292473959501728346 GT 1 -7855903438761634550822631671150757410692.8263747867977565228805082098743662 0.5136028114088221787193430793746725 0.0278903249784912583176337423738717 1.0282866465027500465839498032481949 GT 1 -27633592336838140303.9105139972586053098946381483072869 2.1593893176526679089281615717707031 0.0313178852866767855042757731088051 1.0318187759045913572334008962094874 GT 1 -100426820320448252489954818.8132696260221517539055211261378686 0.4448451490658541273907008195971369 0.0705838640893258429716025824190260 1.0731987008393257914439414223907921 GT 1 -2595.5398386774699491215340607049579707 0.5372027010736193094065810202491982 0.0138579936897860612531867033293959 1.0139549121227726640137640635868015 GT 1 -1816171220742921.4473519851034824867749359453589389 1.2479076947210497590349791772359647 0.0510024113763476261802676958526514 1.0523490213410303075989439045690110 GT 1 -3248475915998821266391275327341763383.2226713267129827751566861259827764 0.1372931906337791624295074685923872 0.0552644098662281773701876849430981 1.0568501894396231671516435052651652 GT 1 -12959271060328512275914580195098109.4829161262028596094757009152473480 0.4665111539473822698029336606431231 0.0683599751777543907348124744654334 1.0708087783673284734479211747607805 GT 1 -3356751690908487764089952103766976427.8257212730346273181019921580721123 2.6244708301240681139737885301140320 0.0421024607377553315594060878948043 1.0430144594845281265705426053920191 GT 1 -10729201.9905181569354502731210534024509447 0.3578180141445415733978350801418208 0.0052115196128370981188260506931441 1.0052251469478765750256243395430639 GT 1 -7869071664826653053934259390897118686.1387085234614421384246618858639992 2.1347357203268659267261271142996568 0.0651214312759924349009623321233439 1.0673386311501330961974335185820742 GT 1 -4132083810935554279649634078449465599711574.5238963406428155477178292870237430 1.1667937085097054729639534145457282 0.0826888444917889140773740492241279 1.0863085452974666550053480533235636 GT 1 -25226900614.9028167452427259646564231306404391 5.2146062880064375073067186997950502 0.0507463366412130019341669155856595 1.0520792206637800747891580903194886 LT 1 -74745515885515081751099850138345.3940596193687040177146853679392532 1.5639928739056091711280609829131714 0.0674500107042271943256249696809710 1.0698325210771294394451197498464152 GT 1 -2274029852463128791574927460.7278919822472780723735384833381414 0.3128988495582542503022151449385158 0.0774885284955531836481112554719068 1.0806554679095989954924010623224463 GT 1 -25756895455138681046217484471387910472.5331045469061089268354953845081305 0.0385325396455834779500628951842934 0.0982387197715133455361729172573654 1.1034054500130896569685889652078451 GT 1 -1127239.0240574487255592384164394871121313 1.0629592613017662266662008912897881 0.0723370901753082998297602240509119 1.0750868559083108737604271002764367 GT 1 -3797013.0149215159709215187316323241105520 1.4516531273288765845743108568070181 0.0300945187510740739511146371095498 1.0305566542439063361955495578524273 GT 1 -965827869898858845698623954578727481729379.8021392619153416377256425641800456 1.8136382697588676102051643672830190 0.0877985164067454319822794294948457 1.0918943883155344524225117864682521 GT 1 -150524789757113569441525343367543922.5579158773141115611866958553330427 0.8874932848660329142420788503724493 0.0967428767113410175123313819848085 1.1017480226985657128829582482992037 GT 1 -432215388364.6526419540678781227641246256203008 1.9318303929706316066673797566431490 0.0661565330493440477310193810787908 1.0684464490700299297805525183236616 GT 1 -1669539156776126978802456153891724091120.9491639222819764285774463160890941 0.8211606955020391947166619778654829 0.0749085864983513734007656777214119 1.0778627209454330059727477839760822 GT 1 -320559807745877776572314759339314775367373.4873714791896918758350809308304649 0.3892059388519380388567884902192630 0.0087653885179349190010828373219159 1.0088040305096337336869041218466086 GT 1 -62213746987627345418753895.2856362014292690542620168536202898 0.5442602136844060230514219283942901 0.0294054349687645100463250065360226 1.0298464416236128164629508844317432 GT 1 -7261298437655161746764290278917072185434755.8457385757375656824422203739241129 0.6472715524161505779407241886699466 0.0696998318396690647984233109419917 1.0722479834483897287715064458807362 GT 1 -54698390.4418873456442138559204543607693380 1.8585372432240255548118106128594605 0.0889082252509886494807751583403133 1.0931116461276704901517668185726408 GT 1 -50165398797321270336227559627605553590.9100625777764469711209221742606520 1.2587249725061585968985608427245854 0.0823193160732308700606872885881599 1.0859057877313435925578360238181352 GT 1 -7704355086153204829948257724909678740770015.5172169199122480352315455663370452 0.1845078763189256731787270958356882 0.0981900637286690599887688700946570 1.1033514947909049561889532080009455 GT 1 -1661071059368308.3395736389857509017506581472298573 0.0479807221231765903815709174157275 0.0171932182908523213904370318956373 1.0173427379629624656179393807034815 GT 1 -448631569667847131453136871.6356385960452985193792301095498773 1.2548604992327030513132783552695355 0.0574934822109877585063531673926484 1.0592124442578749885466713328365345 GT 1 -143.8809789554946846666269107228946859 3.5458633722443752504563687009500238 0.0963194109333628916061312167228298 1.1012793117044509806368318694883146 LT 1 -105107732593278897702143.8705000610411648081003578889168708 1.4685129190540269230969569255692924 0.0904903257851013056256196306741010 1.0948496442307248426157444000798656 GT 1 -47120806387508531116932013917864755923708.5420342348987150032232536713090193 1.8818257522684029195720092672538526 0.0730138864331814068010116647868977 1.0758166934995522643779293032178326 GT 1 -25750305507149515.3406744405359130870801602804680644 0.9540184295787736744100596255669809 0.0382311666018148108687829990792402 1.0389811551154868676760400265981057 GT 1 -15565047.8958369146929361023530174216679245 0.6695967600783613297334606519389183 0.0023576416089779856584416156593311 1.0023604252219914273076401042240351 GT 1 -7141.4278775794766949820037303010114470 0.1283021871539967183459127977579053 0.0086216955360920774195649189801072 1.0086590773713395850507507932354725 GT 1 -2071902.2208057436346031311505292122587698 0.6443436303771984458081346417689093 0.0939153513515674324491160849546205 1.0986225461242931125898740171260091 GT 1 -587723125963343345516203.7707661531110399807655716538833264 0.9083180997870796692493727120884546 0.0609567080494477474886227166828917 1.0628936965229581789562670808882121 GT 1 -4972179850349811910465725200826555692177.3628491497322819185587287443865970 0.1915267094935521096838836374757326 0.0831096022334848652515594548615244 1.0867673364791938342967548603372742 GT 1 -946015521765884428459.6176385985684095116719216598012580 0.0959293409700816098902688174361396 0.0109781648360832030039327887423718 1.0110388695809803186736253541654519 GT 1 -23286114628737289719257447860802.4771649386561795579777955853492339 0.1335653438990879188882961736833188 0.0418100797109841226692988394281175 1.0427092740113044744268123659671837 GT 1 -50996.7630807570789432329719866684272562 0.7521791809866579542388393753136891 0.0991014973956859775074127754620788 1.1043626774369976217760369915375551 GT 1 -65360014347678158655557.7041465543798820258504095715171412 1.9475934180171070835223250523297495 0.0226952266578016047470738046890370 1.0229567274354218629627994961272114 GT 1 -1856712023031765386332026815920152266.2084406277702793660305940555529399 0.2636421782066536365390820783675664 0.0302051070494610638827188599585309 1.0306706804099861906894823369643772 GT 1 -264194.3957798394193781544261210333269504 2.7723603234949441682501075592534903 0.0892944702893403699440676545446131 1.0935356724923965732514479386172633 LT 1 -559165230068979831.2140787081949507391367249363664828 0.5389189346001964087261121026309772 0.0240222302122754398344015244681229 1.0243154696852806982062623491550376 GT 1 -913617390772848090600795542.4289718705122775491311971375138339 2.0286362327823167534727472457259477 0.0077138204670401063288833435660746 1.0077437258693429524526560570332998 GT 1 -716373837072736634763815.9452051492452026512603192857688339 2.5050418014838287418075700177275921 0.0583212350696807642114951602770337 1.0600910764386232435804345589107452 GT 1 -61626441199716307366526557664770216246.6320074296279391477231573471885807 0.4729774206960556854133221241044073 0.0467905340999527999599907685134747 1.0479206031521720896013510546992240 GT 1 -6965388943222712133354954006373918891803.3721772806234960751520248239038255 1.2596282683093180387510820596984903 0.0415044300227748456195418332061667 1.0423903383357829679755661991637582 GT 1 -411559608404675198.6228632254799162839445327680412557 0.8767009506736748419558064702066655 0.0660801816100138584284684013211274 1.0683646919866008125769960974401419 GT 1 -111643928284.5769944378918509704603739870840615 2.6502375522500040675620981673747855 0.0694947472797691775213704881586884 1.0746215424104286719397313844314396 GT 2 -421651567006090499891116.1160844007908577444251765502831237 0.0215820369503407802365743283930988 0.0287693981139116052075292351414175 1.0291913498177849621045076130132877 GT 1 -64977035353816484703808622789258619963.0379472568524759864782559098053499 0.1210399766747092275675585339947104 0.0083583384474874338337238062159123 1.0083934652295899453126733781298854 GT 1 -820561930775837481203301.1951055643999579404721572340177020 1.2622958311463584878011246283215699 0.0831515876191364637936205108057507 1.0868131285902912275063174981953696 GT 1 -418059523968437333074155673543060.4220508463559632077160032745902504 1.7454957366055551982941637285045962 0.0794280814087937005468608675428355 1.0827601514411547004672865902570842 GT 1 -92097555715325981.5879825151917020883537978922435550 0.2868489781694301348830906198620595 0.0611178950980401758126302073408032 1.0630653615414497746007405874547288 GT 1 -7239725244388928458239548955294502042.6152643423774152708775360212573207 3.5760186863672328096146047798078882 0.0064939716993794411752380372453344 1.0065151492677375317049184580212436 GT 1 -99093507227327207831.3949445327767168678765307432183311 0.3472796498844025226502448912423250 0.0411165114315319095755750265322119 1.0419857041088607691314944221935841 GT 1 -3102249232920793557724223051111.4931393502811821832471391899794275 0.8769878749737018295987699488644783 0.0738018941307845320051719809182533 1.0766671299934873396791662635781539 GT 1 -560075019271662490746292162.0275313344352790916146174591756467 0.1317897517079430419158527747273619 0.0990312623191583216912301472915499 1.1042847193333227787196550165760594 GT 1 -62140.9705235013774453524797227722967048 0.0301029179364066423226003505548742 0.0622699151236969496869269217198585 1.0642931273810254690327305599454671 GT 1 -998808039587.3151848185898471452468345882819260 1.5624524563906920682707471182886796 0.0936361973090383068754197118067346 1.0983145053140507885923651276575972 GT 1 -80448165287617199.7202156966400505660336808777981537 2.1749640045669010797228895179505544 0.0779344179558878180028961070415948 1.0811389277554880903025209411722164 GT 1 -2463424682264874930815547867601.9446055249116186440052697403556715 0.6394670188598255369722684248608188 0.0931165120018413791944571962221857 1.0977412957754568514200399139956914 GT 1 -845526378628512.7476067316078620122540099487661710 0.9081702815339834161138400663644742 0.0578270508059330502755397511363636 1.0595664233872410036242046412556783 GT 1 -41625561859807659923822280.1573510935592073399907244907109337 0.1978331386055169996156701944286433 0.0194219731083726435977182150316818 1.0196130578361453651813807283970879 GT 1 -52764.0579600397751106413178792918226001 0.3235589814126197640566624002641685 0.0381818368923152899249806040420403 1.0389298658214752731527747410658828 GT 1 -116934197088410739930555405466508137536.6798307410929474971048816693319348 1.3842823632094646108731814077877392 0.0289276096344151780534115401661778 1.0293542610849607116418904310227136 GT 1 -2998327881998156604440608840490.2488699225075766598892142993542423 1.2979174079265065641176852033426435 0.0413683910447287663208268544856561 1.0422484187179617222759928335080326 GT 1 -102524500267928214764318613691665766.4706763062931183136934956505557252 1.4275481891922033043167813373290882 0.0340865177621015460101205454620465 1.0346810116813413794344840139589726 GT 1 -634119156449140.4886370408231909659560619435284669 2.5584163659407673260215032647594206 0.0602417549527432182968691035276841 1.0621326229160488041350224383505677 GT 1 -2826426145246763585218333409302338418.2322660444314296110239574545838437 0.7304338257816320030077223495347455 0.0196130539668146052308807353743748 1.0198079423564555182043252548600479 GT 1 -833568893969.0280818019430370393318246314910020 0.0196484099218209155040701427082392 0.0338781829654848073271239674928289 1.0344653481295391117572235790719229 GT 1 -1560517088487382028724721793006033.4451367616658709046554136188186800 0.7298517659059505355695966896422662 0.0168881187742744046797796228418527 1.0170323492121156615926983488391350 GT 1 -41480983492076533961.1591924045705722608887723127749165 0.9777337735247176589258706978259623 0.0005675063173326854937668495834255 1.0005676674099930765880515853657500 GT 1 -433545708339117394.8438354301802489629596831647321343 2.0189213255591797753826003599158500 0.0368240318959697919055241013505624 1.0375191547969465101464401526222029 GT 1 -80704740618456404595979837591001153951.2862441903368493400435022311970661 0.1475162557502767666878795320222821 0.0951249329133973037099631198460951 1.0999583922297513409949345207225501 GT 1 -40807456069718097107935066943427932746454.8173514242138989326121594132548438 1.5317697548232362306993243165178644 0.0613638027586059005734866769114225 1.0633273112243808361572313345721429 GT 1 -2658965.6700053689843188892193816250834334 3.2796270668700801782146597424334942 0.0876517571635632019257963867328746 1.0917335165767455971206775091310489 LT 1 -1.7747353482290114535516689469266856 2.2021147838936939827212970592586761 0.0786779203521167599603034786028003 1.0819455974018107792107748779676343 GT 1 -1465092335192711848.8206273070538903400608818584405347 0.9897376334696228720022128599679691 0.0293794151727536369042149395526529 1.0298196338830959259943582871189772 GT 1 -514889529023085390595.7760194341138426224347529096996742 1.7481894238441135402432135348568004 0.0950931207953229718040114257237269 1.0999232364827921012089971209126332 GT 1 -1108611.7717054502326897373101130377572385 2.4284584763033707449054165265518002 0.0749281046247086533312144462613764 1.0778838197600774836059271125449378 GT 1 -93666229154855953062518050.1752502686761227542986679493987361 3.2447783169773190880923443418040209 0.0524164272978032178550685319746253 1.0538401425356177963595397899071578 LT 1 -130824740748.2861832987707241826862757694736136 0.1649522514100773923018737471704126 0.0631704714928738245529612063092406 1.0652539465857369797331464119307639 GT 1 -819088243689961747.6037282307537393203213925176839062 1.1260426568646527716313649240946788 0.0230587088156142601950346348304291 1.0233287196513480695444582299652437 GT 1 -3273.2881092348914940106035152986894705 0.5449052456069633211157870854127399 0.0734805694184169178742966447666066 1.0763202614511784847851048433553022 GT 1 -5822179976225337957616716684701506973.4531768296300635529417870336316881 1.3923853316586428968649318885880522 0.0532913714322986420195326942950611 1.0547639115255637820666816246497537 GT 1 -146833995506517039.5447606022909293120168053446037520 0.6569063940827702059217420422640389 0.0162781818155072650687552656241669 1.0164121269955628748900994552947561 GT 1 -72233235366425643900664708919610289362.7730617575955368362096946127306346 0.5790158168234480275498488250477146 0.0075820980947127172972882544186958 1.0076109883254917416353753895477341 GT 1 -14695275343589455513336.7512273248200548502428915540602492 1.6352443366329256431717061918725064 0.0904940757155250003360342911912708 1.0948537672634539666411953983930390 GT 1 -5617874727267212619619623082795395682.6630582546312994028609984270795994 1.2917186791593617251215556131819151 0.0181424631989079202162880298010143 1.0183090556926396518378574855755668 GT 1 -47838519726065139089.3305478587068250057029925778157958 1.4380368776660794416197088134195727 0.0046484029898436895249981298148182 1.0046592404125355751850934168401353 GT 1 -194775443999514177757.7983919272170945718736534435818860 0.9229073869454318327581901833588706 0.0949773860806407259247972723120877 1.0997953478382016170337755247048058 GT 1 -35240146034.8348065945269081519022908903396899 0.6709093525489839016549098815350806 0.0253244840757502175370959700272652 1.0256506675561477521158145873196391 GT 1 -551625.9818687914256372225440946664843136 1.3512254304608172085650204381088115 0.0196999839228392709453128752785596 1.0198966153142111616445277238259049 GT 1 -999600021689264820392765150.8933191147560593370303778688141720 2.0319799889901652213552929494577072 0.0092669842653566160667156327958654 1.0093101898951278841823114526561603 GT 1 -1527238254225773173010984244.8344956605430371751757463627463110 0.8527746020171875185749196280788844 0.0432241393419383635920294292514123 1.0441861253493694437615168714559274 GT 1 -2824354167794180143361.9086708268405340952837225033172716 1.9704961444826424805408675801638889 0.0365121015243446050264423491880516 1.0371953511695868481582678826689804 GT 1 -10788460483572972788437009528716416143665585.9704638351046232641535303136571766 0.6132751463026381642222370359199726 0.0489743893042216367467934349619840 1.0502142865198876959546272446291673 GT 1 -5010154621795185709663583676990.4455270610544171811394879515248980 0.0887928578546043355145730816447813 0.0587201332407163455174279506266399 1.0605147694186915522731705169266909 GT 1 -351365992135390768033208867.9478653652770056680812537569950700 0.9292230460460284066416815225925238 0.0044768956321747790100071562806956 1.0044869469397474898156849249647035 GT 1 -74778627075463830510059399035.1401148048317884089381590539984960 1.0626673129291479724614701725760642 0.0063700950137369831174040245528656 1.0063904706448734929733013089616635 GT 1 -674403483121256404545898578364.9830835555915182339045474709686876 1.4616220956116826205541464233738731 0.0755332192599775219787571643872857 1.0785381609367977601794624495356203 GT 1 -64869396604107.4207969912414191266182833977651416 0.2381525445081960708560773984918323 0.0270705669094546810178403564423250 1.0274437245130014954896757824814409 GT 1 -27499500460267190309056018585637516033864.9854994647620605604307585363728690 0.1575710161348699246013124891227178 0.0134001916252350861074234137523262 1.0134907844104068350891534301258770 GT 1 -330337276286573787457142698.6813854328559026791882451079498797 0.5969032569011962190530358204480135 0.0489872363669621834196645158426482 1.0502277952512720198498531587334173 GT 1 -366.8836172250254522308318033850619877 0.3215027518073557179232496369242646 0.0370981609939946376895539265811627 1.0378038048758414202574869327668639 GT 1 -34701222194142208556009837906412017985.4912068647121680510205659272179520 0.1422055498152676169412170917200875 0.0112768405724333443981255093248116 1.0113409062332661418726667308233671 GT 1 -361331657960246497938327995428.7816208960344453997596030357395484 0.0646820483565869347702052655184975 0.0675534120390646660162903232059611 1.0699434074307071157548818910027530 GT 1 -712765098346552297669829452186123605201.1282614172834039798588301816212944 0.1543922930811717819843661963110869 0.0279449785756833340758684666179820 1.0283428697201620140171280431244536 GT 1 -1545055042310051006338125801858499358.4585839797368411770947051691069250 0.6399402969649936895578985881916227 0.0687825336787735007034436040973684 1.0712624453926113310444134886078465 GT 1 -4.9120583630571025369813116832122364 0.4486470928352134829326447023074385 0.0496558396419349235038484511482836 1.0509310859318328018434079847967928 GT 1 -10274827.8260293803981221558350117289130307 1.7752915052662301874430472152394441 0.0911790346025192835925752879685793 1.0956071619619318059207591674762325 GT 1 -596541454330183310168788.1658405522571530950419184213233103 0.0935439926751048718618703780787284 0.0856799077456473151608572906983838 1.0895745584933851243366294550510569 GT 1 -11966443796113711276886.1150262265249198201457909036911382 0.5513771786478112814959022061470843 0.0419989818918243040704562762669500 1.0429064382684427888963369623615442 GT 1 -13355217135458696585.5310444554161476996527119250676231 0.1935938866877739994654571387023569 0.0336286017643418900588085470383166 1.0342070484361084473454746048360850 GT 1 -3617468504.2055058605732338409695391397094815 0.2891638556475090296981138198774314 0.0829134997905042071748530316247323 1.0865534816111805506304310618097456 GT 1 -120.0360029174096528959080964257279133 0.7980750394449299306034296585271039 0.0619635200537247556448119386665956 1.0639664395314356404612949102383231 GT 1 -419582085517266180392472376940.6500250696803783147842720990239898 1.5003961528073638613055229544374437 0.0520466587743838704802931060808659 1.0534499960548051663110004308269754 GT 1 -142469809432754816948327658390124.7772604672119164246335463948044246 3.8527699347577257725486550500320760 0.0821063336413020262800848660423083 1.0856737269239439697075040547860432 LT 1 -3658775453643409253068360670906058.5656095361193996713105302844110774 0.9174763624121608093103755068415769 0.0559367706853801697151817574046565 1.0575621348735451377991817984902024 GT 1 -672588103632695920226568.1003178620622614681105540452100567 1.1062905246299443712530029208534500 0.0288687077489017988216645888185120 1.0292936063904416687431489069065186 GT 1 -7895718680631.2434990847620318687372332090398080 0.2921510203134648280541049761463120 0.0766674067823469859576149301668666 1.0797657700385126820860602799309810 GT 1 -420806576030112641497113511.0338145776279273204200685782773333 3.1894249932183769976030310344538128 0.0785184718703483077364935566673762 1.0817725475103373648521047127944995 LT 1 -3957295755560587669786803.5426520791359091334456066494882507 0.1600384097041342480901900291066555 0.0496924198186144696761768171612013 1.0509695781773124291986696503029291 GT 1 -112877214.5162660972884499784372720451418783 0.2235990934400300382281681446503866 0.0093056971956424290856172149968900 1.0093492656966256487633790385669266 GT 1 -4921622986141.5747060772509496389483325397259538 0.3570300120453261147347126438159138 0.0125854018557943097203039375298468 1.0126652688386646465542158199544527 GT 1 -334254767027116.7186574537841601809973568615677947 2.2982102522479195787650250473558548 0.0084782448009483309295782228790994 1.0085143895594703516149190899289416 GT 1 -199.4431386119290953238528412355034269 0.1629230150350056404670417393241248 0.0730631398853380878713560482680522 1.0758698278021823920345521494699642 GT 1 -512868977235836114.2746127893197599292264249744009459 2.2816776837807154367035720126192929 0.0525048616277923255058982489499975 1.0539334730443048610575674521250490 GT 1 -620634718869318723602917614.7234547020681821290698148290591719 2.1703278578792341158138677125154991 0.0407737794893958026925359279466698 1.0416283398307265816625796241741968 GT 1 -15814357558016614501059637.9223487744446506554440384344606819 0.5110440805995165565738746935200814 0.0203106363164738778245533992662778 1.0205197333981138884851606841022214 GT 1 -6770.2684600618385800247070625770347614 1.1641903651423586806414696207576515 0.0874466074357697083218795194252214 1.0915086828381176532839056580153816 GT 1 -1409020195961552701869006983793654678.0644427903643986307833695754748452 0.3891766305723685143616026092725300 0.0911523165650160616413119777850558 1.0955777638232531112193603087611477 GT 1 -37203.6702890133193604855508158317363454 0.2854852582103251209100957428936189 0.0518886838910137559654232986892255 1.0532833615646525683301948550961671 GT 1 -2691692964534415295111978624850789.5404924255997085394148476085447840 0.5227159506849248247639593249954917 0.0122610232039791145128658881014483 1.0123368096658215195785253583756947 GT 1 -1275620582267110122663869692717534054.6331284144491845598915962172682757 0.7589749774023649047739115065788338 0.0584354488045870973651158712374902 1.0602123711582894492225574464816019 GT 1 -1795033736729231.4121727144491007932507367223519260 0.6168473283698802649264952866076420 0.0284414582121678014786771267066736 1.0288537528058536433498551681205865 GT 1 -118647898670163.3311237049914817317005471614200177 1.5702880496135811533865709260282662 0.0211536997362257858788741448184751 1.0213806454431096340383370376503464 GT 1 -611306912205357449797500599.1509580543307991530091592728697994 0.7206660627743324437554306500342887 0.0571965390490196111055514886309456 1.0588974369988330934123172245163531 GT 1 -11855000015354358532190571.7232438056612085700326232099138092 2.4110383973081638171567153983303021 0.0693005432593831231513555182867927 1.0718188715011649361669945586957812 GT 1 -340703867202346999891093304529834822732241.1398428933772632807793191809279677 3.9919761193127011637857927556665018 0.0036695525844201197198448494735385 1.0036763019088980918258534815213349 GT 1 -1677274268055663614033991381598932400.0012622161332971630403196620930842 0.7826498386531024045425886866185488 0.0104100857806318038813323993198437 1.0104646497308881697170604130428792 GT 1 -85147444.1863782182555052950940947885154838 2.3050579708559819080584433550521085 0.0624465291276179255265254970774208 1.0644814871668314558965125559680346 GT 1 -3030467019056668342931.1948975141356888253556954077326963 0.6874609773511672731526533757400828 0.0949106235204060412406234611443668 1.0997215816175267914515883438076872 GT 1 -1155943232244661016.1797356516476401704123945220326882 0.9008018337475179533443814851602585 0.0521828028143424897305328450969564 1.0535936252941399647572043596096650 GT 1 -3951350189170700020453205170109932.8702024647335298931272248548181109 0.1492834639003275817164779907054842 0.0775056624826238193661153677199597 1.0806740412788397268250481907481262 GT 1 -38940230839237429314953940927715.8747351593595183616571993337008212 0.2656697849628174713555779686465053 0.0714637443387065581408219856435117 1.0741458513897381433374818731846110 GT 1 -7268901029825287430707354161674341318934.2300257987591243435090937383081718 1.4654687290511519808334338495984500 0.0622867423990132898201027006009935 1.0643110722316489641605348048593345 GT 1 -3.2553949603126640187887537074950544 1.3972616979414982947084133539657252 0.0582162242415656385106451856502786 1.0599795681649460464852949999620172 GT 1 -12898025731.0297975880982022221043759912144696 0.4331549933075527481085266726199450 0.0437592033388767999602217764782554 1.0447455182943749066548967565363619 GT 1 -33096589565414319202579299717.6784282305044015508222602327381819 0.5951369554194627504549896868108982 0.0598224038268676707288811635532090 1.0616864894644318766839082061615518 GT 1 -5406493045582.4541821624258779498508076560813859 0.4409210103439520338019213099581148 0.0306976405901597419732221708550217 1.0311786833486643397907589372967140 GT 1 -210865667888026826822014056131868558556753.7102278861257274536204455466486045 0.5033844906581086266754737185287398 0.0859728657382224807103099450517345 1.0898950205925242721115687588515058 GT 1 -483592598940466712829593442.6448104626713738809634529690852531 1.8692134412799092312192826256155851 0.0007482440356796720642966556257621 1.0007485241099661282883514158460731 GT 1 -814832513000754310923232.5687542718341484831192863075900127 2.7911042282687082002293102071458632 0.0943967412775164922978020430492941 1.0991539731270564533792718020684287 LT 1 -149039.6101208913555861733743489715776333 0.5605346885180309860195447219858738 0.0353418542186691609221546275641566 1.0359814934819362371390144774238178 GT 1 -830368871978974380805386034822267135215.7491267270017272090302902431329941 0.6944731899396694056035737478499012 0.0162446046781111632101156496252352 1.0163779948214580257256456655669274 GT 1 -1354237570784462.0250478592146074111511231392788982 1.3856071723827464709771200983043213 0.0368035707275214149483532519222377 1.0374979115851178812550754495528745 GT 1 -108389.7414129510438687594587305751049684 0.3650993741441909995499889277086573 0.0130207208871927608640955075796214 1.0131062335757081081076435056601570 GT 1 -19494115824262126.2787039527036518604680849195998951 1.9153060326230515085676295794627615 0.0634932207461287823839934377522819 1.0655985181985447518103745670939491 GT 1 -2538268320964160857672602428371458855542553.7597928014256416021605438604773671 1.1112986401846718019359058052257690 0.0690608426915537755306706581931591 1.0715613558186419669964792826101644 GT 1 -57964934289303329.0235005488145515105148056651244810 0.6645978497651625286733940776986181 0.0674239396601496078817906470773473 1.0698045647423987355727614853039178 GT 1 -771393660764725412122848812801.6133861806773297930328480679370533 0.0793655684212983697076449383517230 0.0975958153773428720308454056797434 1.1026927610342705037737341744399735 GT 1 -9428619230084169543221110391095548239639.1838536017539123691033344829974028 0.2242871252954793941646539456605955 0.0789169808101455531720485804006537 1.0822051065179342950257042490848232 GT 1 -5715593203410053527976.9508940925009018371507683793227268 1.2407502685708128688932552620703622 0.0194152138923130112657178610405911 1.0196061647663656849784793413897536 GT 1 -9550135763532556212568874.0352628879662801878224984222916236 1.5388184081050021692237893464743594 0.0492804238284768309851779800748051 1.0505361325053648868718397370603439 GT 1 -22165.3972380310743760505719545774760617 0.4503650879396576027037564123149313 0.0368133890992401552560376233939505 1.0375081051670941245320183088997462 GT 1 -83875478082736593684.7254102628287237659180575462819915 0.6640989162862998540716998678746887 0.0843733900036328685429000713043522 1.0881466284204437284128110083738951 GT 1 -127016439056344654457975441525690.2831007504931958336431664492765918 0.8653586202069684679468861057201685 0.0733858134203421115906341614962277 1.0762179957567030458065858969507880 GT 1 -289286723025699242104301692713756498105331.9578351880917858610335195822678495 2.5395725289386381387124702937271632 0.0121430030623311375148195952035371 1.0122173316517361549150732262436228 GT 1 -620.9743744910195815112680148912557587 0.0971916387709344034552595964827011 0.0604845747397825791465844042002123 1.0623910416788157295195089855857837 GT 1 -1616923106479146645420742920.9449500265682378184764722713807701 1.0253773635296810750894100354346174 0.0944934854742562255638594669352300 1.0992608072883654485573925325225146 GT 1 -2030441521860.3519100807549835628329663404542956 0.9009842852566354349194665583591179 0.0360950088220705932578151522802742 1.0367625460980066557545108226456236 GT 1 -141718063379659267.9872632629011185660610460788899125 0.0262346326017055704364969531362498 0.0705062564308538951818912309319392 1.0731152028070933151464528945172701 GT 1 -151725225570154705171183713903079754.7913684585690843464263295357297122 4.1888944436346739418107083107047183 0.0321687430389746749125253282880855 1.0326975282225423723352811736542880 LT 1 -2773734680304709964.2488728766776909926402069633346428 4.5331382973617842378422723416002143 0.0208922723816343847248050685597930 1.0211136040801132463481576624429106 LT 1 -157532949242424.1634861293157721761622464499160292 0.2664663908654104875018673890117054 0.0173196767118385154556370169699389 1.0174714169258914659992839169748994 GT 1 -43973042121370355124.1135181332434245693398966420856314 1.3586015447515006650801071403232864 0.0281783522053309483401232407087688 1.0285829812812134819820255049050486 GT 1 -1222129952908881.0009690280643957024051334731032295 0.2526253369031203995098318070249691 0.0574705569460332214496951030784067 1.0591881208333548374729459148082840 GT 1 -5753.9139722057519605203071895119738264 0.1193010698813978049490387011500483 0.0454307580495911136871408045550512 1.0464950958068707553284894894447875 GT 1 -1147073864073766206252.0912305271533156064400306405773799 1.3018846231495024537555034449487520 0.0926807057210726546706757161384113 1.0972608574326113014186082444748900 GT 1 -200976195587.3885104687810044858630101818545986 0.2153455740473537575374578306940232 0.0229753140454863134107693677700189 1.0232433601607998318124074638548833 GT 1 -493867336996.1319802837529445760124432520520387 0.1927671991629396714398616157153939 0.0603426496974828168533296382950970 1.0622399911267693785868889729736274 GT 1 -26511716771058348368305404452434843.6028068444345672255318135462723433 0.3234447939417716743752326104246953 0.0579064390214840978787240844589451 1.0596506877045967802437070653002942 GT 1 -2233267744.4287989254740061372571729152225959 0.5319049924150098507456685996795797 0.0723534750956757910045145349955945 1.0751045186443065113884022822228200 GT 1 -424949087470030472208353.5192359023453333790627282296946468 3.3939417628943500741259263518200771 0.0915068795006901769988473759040451 1.0959679635473832518342041902853293 LT 1 -508643125037918.1531834328858263097995320107121144 1.5429206896706131407480902799745955 0.0888016121939070935544012157139065 1.0929946361592319741233492953494909 GT 1 -2708499003728930803333565714468312107806949.2761952332727388797748980470385443 0.4162911084827338751914163001679756 0.0371117422705308529082835556501027 1.0378179095039205269402063825455206 GT 1 -89521718937387644309332334426853433478.0099306294229348750671592932668175 0.8165159517447277246125981430870870 0.0382699374616709967481248261351473 1.0390214679640602064497584005677155 GT 1 -2900992360713581632.8228265865417605432242940552839818 1.6614572315899867341503210998658258 0.0573105019928615052630137962839937 1.0590183209760860716368152693673567 GT 1 -570396984623715995662760899432043160.1959843375782799018629771114467144 1.6749553081510860040465532514495425 0.0386763590471329302068426155794119 1.0394441515227929500998859359164619 GT 1 -2462068326195810100992196612693285873436.4358007976011139255893630303441524 0.3656232161325190164945691649704194 0.0292355420536380986492795062785187 1.0296714168975839975158273227708606 GT 1 -254662599766899542168751081.9147493053542585126458675697493863 0.1307365465143865543986626930714942 0.0573199945084055321510021648184848 1.0590283906367297720588347639376430 GT 1 -1483432374580265326420258419182148740184.9200464576818098180872870074919959 0.7815570983292511757672794554306998 0.0995915488693046318326748395854537 1.1049067840199346292578064848913204 GT 1 -92020882915972929996.9601018624036204631131486023376467 0.0692291437155376841820534314363080 0.0348483456601335770353203596931432 1.0354700352343279531182730482020903 GT 1 -152123508292.7022763551205668607224278040140096 0.5033049641354351541276897045767671 0.0564390355067489331465406844936988 1.0580943010058397619325110553586745 GT 1 -98047453284097013788560743762006.1012049522152617697702085891520917 2.7690258594860946635375637565118034 0.0654777919458915114676443863040408 1.0700128793281536331598299390122583 LT 2 -21223051972874643.9302358210976271412772260557606011 0.5642739050843185955275234078722681 0.0101302706347821876661285133246228 1.0101819310115444395779611410244071 GT 1 -22602123139031.8639504814109218532342462405530331 1.1512165695986309321310542150795554 0.0000448055093265633103230672474376 1.0000448065131233801804149064064105 GT 1 -51308382665405294488524614634540141414482.0976862679417895969113275814338304 0.1029410608057088765113845204498419 0.0237964016268206749421377262420244 1.0240841094334667495465882319820451 GT 1 -3409669830929734745649262843.9868815540708130221461419913753984 0.2681917440436961525745762708917243 0.0164181866692899559093829391515738 1.0165544587147507415572533658475996 GT 1 -148813135253.8536494946001279231369289628682097 0.0627642198854610075383397427225765 0.0443084546764456241100845658673495 1.0453200693290711141974360113562008 GT 1 -1186599421.8408321758515038861797046360239742 0.3949036938211910143593643042471484 0.0585161163318261655896935966826515 1.0602980487497893810969604927535644 GT 1 -10623880638643937373605198245461208233761.3572008191280459120448163619145878 0.3234182333984030680606900655856235 0.0923725432457587290309605161210605 1.0969212744910182702972969629565053 GT 1 -76741510081876569997.6722021650192447716810060368620260 1.0588351142153228347827301682399104 0.0545982012933719894296938816399432 1.0561452580368820533676281764247101 GT 1 -19381631147277719254024534895759261012456.9931228775787817037736910721791461 0.7684106481075968947780712965785825 0.0913569832901006900014597764726380 1.0958029828309029798843373077251750 GT 1 -39134096006.9692991208420306062324447617032398 0.0365707043970961149692097606049524 0.0868983397701090977520664012969208 1.0909080571270296210406872666151401 GT 1 -1112037916.2133877326098957687844548403004797 1.0321375786004783799927689586290608 0.0876996911597618466697458028377470 1.0917860571015119965419288318117221 GT 1 -29.3831252789374266651376380181228157 0.2421414847437602949564379352324031 0.0863034983619031677971760279773997 1.0902568177710396932967710772471454 GT 1 -5822881631698224202122402.3282368961996779710894834298920642 0.9524884090873059226114929717191014 0.0166515411918507852047114459282399 1.0167917365958846918230568748470643 GT 1 -366040321765214902354914.6142131199989296029723427824572261 0.0694247591361608963648063999713791 0.0894911692832353681860596459587999 1.0937516811061367606119731186327752 GT 1 -8383.5673049313509726295179564032722342 0.1447908526629104828249374195545238 0.0611406789878275248820961464712868 1.0630896288761040925330927988476304 GT 1 -148866541571847005491.8541605289118899266933651704384094 0.0702194007844705897322999379758634 0.0322825768836641346511421805694706 1.0328151525902396555271647592993358 GT 1 -2873193363659038787468788.0819469000847628519370286004719696 1.1683591080246813391782989375090722 0.0694033196492654869612170466181973 1.0719293067918623393317684571637389 GT 1 -30055832967270433216504339704552755797.8973631407945813853125090239428421 1.1559378731018436090526566331292958 0.0440546984021989336820058239018945 1.0450545834695096479239842502155967 GT 1 -120675040520934.9287232143768828455170273413038991 0.7856328259973356690383000292496449 0.0290824313190202254681160555443871 1.0295137075169176133307799571863990 GT 1 -657191259.7686982443236909522188854996592947 1.1109840776477752553190040256948702 0.0618149282934787764548227923901390 1.0638080448467292967022538904587857 GT 1 -350459808694962088980685367727448446906440.4700875870795952340067598386596689 1.3871548293015621032456653365466885 0.0136820453564857509233028240894760 1.0137765071490342729544407508234862 GT 1 -866540454850967643.3158078468007998072123785770373790 3.7747613634840972235990035669969322 0.0750365818548525402789683251336590 1.0780010902029446344708855222751650 LT 1 -543595675963641125055339671927254899.1101700402136109066173251214286169 0.4508988921584833702930306510439510 0.0434621478803281900553872150325928 1.0444349173148772477315404039490240 GT 1 -119380394694084185955.3391566501959924381477400324334492 0.6499664058001628016124336697579135 0.0819400926795802238033339523340384 1.0854926319719153128690642818160792 GT 1 -175511564274829695444070757124532347397.9306902557370139453542674343173902 1.3245198506488018089678915905549805 0.0706613538462930511956686289801785 1.0732820789780236114338585929737911 GT 1 -90917804596548425119413222669472.7988221453974101815968736944340730 0.2823288019746291318867281580625482 0.0611951442077392599540025634987268 1.0631476426792109976750444753499598 GT 1 -50244692242761554109.0387600270154639991960808745989779 1.4299023651297854818902694511742180 0.0827966198265509121352821228123790 1.0864260426874188623575879971182781 GT 1 -763865517736707379902199709274709669.6312406749576369517377165424320798 0.1503872106570855558881743184325931 0.0095696560064483962674053973571779 1.0096157394016442008592488381578616 GT 1 -907040242466565769313377470171.2295856703692274739934557950596833 0.1766518028145655505131321872457430 0.0162611276924943823373783033390671 1.0163947908189411756062265976887026 GT 1 -15000671726636571648472734270235066345810315.1886320335924326395867042163007588 0.6229971895464551904553091910185671 0.0850609078760439437673444579673544 1.0888977819069767030756925927907557 GT 1 -59515930396206178829421523038.0744481374261585034651730648106277 0.7762591474179371333524417352114389 0.0131053373561323824716970453500133 1.0131919700223994797670576992618940 GT 1 -22505198250734793113807700789096464.2076084887834736588413840511577109 0.3404036032390155154714230559981253 0.0020710939458938394752226136404171 1.0020732416268385621264198925833824 GT 1 -312484362353809684623790055423038.0533472921787876782842311434942571 2.3077911002798938282180093486790462 0.0320127473486306087744251884883411 1.0325363605408541062044879777812519 GT 1 -97049108.0551814587761555047745915645922103 2.0246975261382138853405174446972030 0.0260611859196047497218051827989734 1.0264067965321184710522142773434673 GT 1 -3521390141886766466277915.7755905722714243385672639399674909 0.0776103975575015967641562555453808 0.0691048254784277679579360559866348 1.0716086025431547145553985206805108 GT 1 -1363106419938214390029.0480252498346469864704590392354472 0.1748036378871236643822287951059824 0.0047519617509384719002493825746853 1.0047632882173818004737200825648248 GT 1 -462963697224424.6302839560581800975388772250961692 0.5545409888293391498186305846144136 0.0832018487644674148734895575962656 1.0868679495643446040197027637386793 GT 1 -30018037240887923762683573318.6716638588292460181523674569587278 0.0975397715366585806350535171098307 0.0091619706659268077588712857449307 1.0092041996508825901160134722715630 GT 1 -39737753.4272928107898054406990865511592085 1.2360344385581600054733235152389671 0.0950451437415759236053768526808636 1.0998702191137652788496943743484817 GT 1 -759337890410792571300538728920526421.2999017514005251009254374260395586 1.3790622332651462791189471663682426 0.0822811580027879967931033338335487 1.0858642076067882467262293350185966 GT 1 -23855284185.1988148521724905232817292535878623 0.3866794761091997203381903815945067 0.0948987986160569039700371153086955 1.0997085168004916020206614432633403 GT 1 -3087860870.7586665378001768659468821944662424 0.7708624955221482402500461505685790 0.0872939592616682463379552304642319 1.0913414209446331240717177366667535 GT 1 -368470668249031554008121129439404248653.1567498336390376639868447677203908 0.7132175655781566100767048898412395 0.0392438001874100835776278905208826 1.0400345964613721208073381097656491 GT 1 -39440343191095058079244.9044611769225191952454835508124198 0.1029090357672397127004257958934682 0.0763418353404697609669446250058154 1.0794132274566283832189905396247148 GT 1 -4614474053515397888059.4516219020393671841416310229474584 0.6436044855549578802919300707944342 0.0687670222880493494935923373406869 1.0712457884224629929265370600033334 GT 1 -2541817.1627715314266169009254530364949279 1.7909442970991493711604128653752246 0.0539004519874516619915314275219850 1.0554074850093556918375214841248347 GT 1 -27081953640027557379615.5468273126340551096436840700770840 1.1297786593259988736316543658476020 0.0935873695422613672319835073747927 1.0982606346150546231427352249098261 GT 1 -53833.8495217026086624660914402637626754 0.6599841922134410322054637045043603 0.0280223739079749843738461194004747 1.0284224932104685363487088067631067 GT 1 -19803411.0832387173241771939451248049287130 2.1229911567633233824135419331613471 0.0646809943415887653662942414147756 1.0668676253606067576958876263780426 GT 1 -415490390216701402846467020448422904208249.1380567771360092511549467259688168 0.8848447899091399226764695465830546 0.0914930919338712238864857641412413 1.0959527873595984851773624684873464 GT 1 -800218323347273571.5019095525763136815078821540146773 1.3405616146619892398725011775149754 0.0344077082339245828202542630463346 1.0350135920744279409363331204673280 GT 1 -3058067.4596353937979516211479077970514909 0.2491649871782658395065494127136573 0.0894748857100564339909055048798514 1.0937337972295357583028969801719511 GT 1 -14693415050341582674203425927905008795.2352451218309513090178661978632866 0.0729305243216098551863218635758325 0.0134903745875687761834408533949021 1.0135821964333308662571787599724480 GT 1 -34831495476674165044.7330258911981291976247506024463564 1.5113534254599381100371019205000381 0.0302380134091336921398399372359286 1.0307046122425845376049818759920388 GT 1 -14604459273523158710956458.0145552380962128781052622600119160 0.3505459676741286622071193051113786 0.0606409034418057882706133390423076 1.0625574484298452291788875033265752 GT 1 -22681244075845014505244878708011501471639706.0851796878715238448676011198150195 0.3105256377700666304462845111771934 0.0239026117606471368284386484503527 1.0241929145149163367531445142393941 GT 1 -37033670579384955033524977119488455822027.9987533091915123005566199933755291 0.7069891266720989455625772805866575 0.0201259588497764162416252328871380 1.0203312450166829277196126521239260 GT 1 -54660.8321757050570593299775231208838223 0.1087555054989988390914682771304338 0.0964986356908341308037626290182019 1.1014776589242470076119915787294632 GT 1 -6078531947737861827587.9161708895016683455574024951853702 0.5889623780370202767672674014811258 0.0787277446547354036942348538432594 1.0819996780007625528176071322092044 GT 1 -1361452134619521086.8189531189579628369592462557423586 2.6078705241953469695618677239690222 0.0503934023926931234269842664497883 1.0517074879356387153248763491752074 GT 1 -235159595.2814395672552391379967168463164027 1.6184882512077628030681505919058511 0.0315896432135968917381794433649872 1.0320993592352287405662488903202745 GT 1 -2391030945223373720.0542007974125899281443721426146271 1.9944909877056426782973948053265803 0.0338358270523738276977976919975346 1.0344215079181652716236389930229549 GT 1 -36797283826335735647620107303433.0399062243527087592773837773591085 0.4919240864616668258740674415477285 0.0781341104084588209203469408349670 1.0813555219797566834825347780207426 GT 1 -1223609188583887647.4047747041450577103421721682857379 1.3572295799217251578163888106566584 0.0801117668689384587260659592719480 1.0835031020461467390203352068469502 GT 1 -117505.0049526576296545926871170810012472 0.3590465062992882198085427243392795 0.0570102656523502703031509596326459 1.0586998825716142993875573311662062 GT 1 -142925349236.1386592203237146403362070867503871 0.5956233535323816127953585990552617 0.0192060106061287147856714211210168 1.0193928420878594457299965566531753 GT 1 -23725256000995130748278968557075142439535.8995165483665092147779633688017744 0.3088620396337578053400453174365812 0.0033964182205094251749984794713497 1.0034021991422037894167830985452169 GT 1 -4080462171816648051690936420679.2226651718661088706559040490198150 0.5119776791779252723020778137185689 0.0580225889275877810637270051915346 1.0597739844465707731002944578069913 GT 1 -13918.1810854832171003163239890759669754 0.3248761834492741889581256649096591 0.0168680490093284762593290068725271 1.0170119348925711702079706297377861 GT 1 -12.6970491434214075257095049828733413 2.2884779972438105784765203965699733 0.0509675780804368236606224281856768 1.0523123166569934688365247185744028 GT 1 -325031889752.5983371852818977521354675823850087 0.3560758210307916590239031577311040 0.0921204265213375089138318291176740 1.0966435375042223315854061866212420 GT 1 -45436522850082388130897193057866831.6369259784892417084524920294003302 0.8230194988577358453337043657317356 0.0825874848213382782446606978253515 1.0861980549035472185656052658710191 GT 1 -546170837273197922942511468.0667467522868895520861921516916017 0.4384438396289878510530452214909472 0.0219238211434170317034900399312171 1.0221677194893886751982598411506573 GT 1 -150429258672047949555656782838174946675.6870877317706670320379243550029531 0.5968587084169591178289385928564290 0.0185185282602081712379879377298920 1.0186921429376477165813454745255868 GT 1 -12144642114079217015537320841687301.0625573085055797256873911517919938 0.4330547618282737748963292630868058 0.0132758163309426241064460635426616 1.0133647277720052112406172569243463 GT 1 -378718673822855.5834024115157424760210296230989053 0.0309638312907288714265503687103559 0.0920935448262663669614497839475852 1.0966139286244876897533342474817378 GT 1 -259056828543236566.9109798361440321560253656282468472 0.9735527634519631262724712451146971 0.0046221728778978418947449315581675 1.0046328881502648760449372500785249 GT 1 -4782911.6323773951885282862671004707457389 1.8591589412734614203377702398233731 0.0028341343451033252582257051409086 1.0028381581082348466610152108014893 GT 1 -10449514051668011101369661269662335.1647533352459302350239253942362650 2.0222183120523034960602274718754363 0.0372725901299029195571042804274542 1.0379849707326512573592138736725698 GT 1 -972018458653889400607771409758376685.7495664821508698102132535764000893 0.2870436381770047004928276787266325 0.0366575093377388558690513176471559 1.0373462807111697344013714307768752 GT 1 -46834000466419371572.4975282258388626197461239698814726 1.9285549911647638957510164027337387 0.0903897855315344271768991597521203 1.0947391069821413884722705391829103 GT 1 -1481224192460100294489694705919.2001922246286120249444959026714434 0.2471306640010674299297853169762259 0.0341382397580028533303736750589118 1.0347345603497126222460722642157993 GT 1 -1030445144.8083683479144198283497016546873676 2.3568928909160934575290195117308896 0.0848883624086372167447306501456558 1.0887092128524512548393880170787653 GT 1 -16207006589899.2999336229652703053729607824399741 0.5701662648098275079786975435731457 0.0033620960485101747840274237819705 1.0033677605934897025708685568226974 GT 1 -39327142337695124883604254586130.4717741620773204916140608036193156 3.9655567969677756555591068803071601 0.0463935355188426664440448549360966 1.0475042036659699610972582931628171 LT 1 -183542800.7709858988007856812089724816532852 2.7379230611779611878773529948152243 0.0642552860784701866460464475431073 1.0686178967157292488397131592133000 GT 2 -17614158651202339484144281885.3660915780018340808209725682748138 0.0037952028362630156443583153673385 0.0876043213562912910531826215685178 1.0916815248350834370133512150367288 GT 1 -3895230621655036.6545039958497584851476039848839059 0.1091803051149330385994407200804961 0.0977535075752451175780412199419300 1.1028675230536565441608101448924578 GT 1 -112.9876989578009579338991123947903500 0.1835592854662221735884722793738428 0.0610828807491656776517392734639564 1.0630280685780400643527273929525392 GT 1 -740003.9269840884943752232513625603176827 0.4437745721356068592398845285930859 0.0124471576163914060820528486950990 1.0125252723639969476057364138642657 GT 1 -261728440724747361657212936046995754405.6934485343974886951560940122523567 0.5965604855210319936230643670183626 0.0752248381121464206764178216912571 1.0782046392449292712080424678603038 GT 1 -351158127649516868553859943841046609715873.2552544231793308002583434756857920 0.1241159604583344994847541664661243 0.0237926371021918611059183024026441 1.0240802531504366974537780421301134 GT 1 -747088882169169139607556073915724896831.2004504557172749990889283854912966 1.1299726952873974649313313635330104 0.0192033313774628444748766580707124 1.0193901103979883476943413564634529 GT 1 -22899645.9658740755752607778552378166384058 4.4033049864449639333450642512279534 0.0830310244815194712404941886183648 1.0866816398841787797772403050764207 LT 1 -99792282058719505223395394909187523156.4817719010307334524033807954473235 0.2636414167157232448849617414691810 0.0515729619440886228515402163459346 1.0529504160704068614206197598958877 GT 1 -167175293.1294077031210665771296104711639727 2.5869087484234666299577043607513560 0.0554907750594965555772976268184074 1.0570898250787372382336950089759160 GT 1 -42808961294623458.8984033517395929858337227648440462 0.0301067955211591993599090528258288 0.0665218748694823656371236816820370 1.0688377494505849206962789280235044 GT 1 -13364128151536367321693904079820060036205.8383884859109774332113578115313008 0.2225979053174890042865574222753546 0.0028772249932145202208015710284465 1.0028813721618470698114213051794463 GT 1 -824480.6119955868797341501773845215718583 0.3426176942170489522331481833672018 0.0405492455690313718773428827236168 1.0413942890506089318153248595480650 GT 1 -241794169.6267296777217017910952763350764482 1.1440362193300161181309823315067153 0.0784642506799571337354774416849972 1.0817137079204211523275615344030292 GT 1 -143863350477625352038051.0064139067523593173441906883730249 0.6052324460595576090971935738073286 0.0466982726938754965799108638108587 1.0478238175613210136640460415202260 GT 1 -593460434898.9642444813008268510051534595458846 0.6945220337339785949287818201629431 0.0869911406595931178416619225180070 1.0910096948850616430916168367135374 GT 1 -602956442995881874191350.4607375119756356090900034148815250 1.3364079516405442695458156233195369 0.0824163988479714957067417453698845 1.0860115847826135260926790885904012 GT 1 -9421543372024248572582759.2264996742494803226361883799559142 1.3407834351227110343918989975710674 0.0422887014868360304206472682585081 1.0432089049746458048065430181127703 GT 1 -167341665013588.9598030920642934146310572993283841 0.0462597320472831116382818635433161 0.0769928030820987615581925534355708 1.0801182471988481868413669324520631 GT 1 -135352572008.1275040082987087199924883369466046 0.3316759106665732920536523354646034 0.0793295006804529449322097123060369 1.0826530707792320725274479937469756 GT 1 -32962252751310291.2642320653459390360326261929872123 0.4199246222830477169601887800216247 0.0553265512761161118106616461515727 1.0569159681128827294989180972996835 GT 1 -77114416254552238891732733858372.6906905741648433415467943350894293 0.4214289179069395908707764823085233 0.0976717122098705512281454361231036 1.1027768697137923543902919832073210 GT 1 -24213482896825.7909897577848977171624157465498270 0.3176668919671585800733688889402457 0.0777655624777422755500850004759876 1.0809558171153254913784371291389626 GT 1 -12376644551589441317862094.4165634301593086828825971662140298 0.2832810416985653973071658801215863 0.0145088516926214311930115075717593 1.0146151343603152923472722799228607 GT 1 -17827253539068411.9443313839525185058440803221802577 0.0316210450875756568487721935870912 0.0676692818160342255334290362257108 1.0700676794032765585777290500517603 GT 1 -1899306996031435.8050989991624214290475866250517391 0.5434519563909762339470421835338666 0.0970923110768306275703463001781765 1.1021349578968231027718030270030941 GT 1 -53186.3791999498029994579298783457706752 0.7218323705531385470680548817295994 0.0712206152220567601459083363643097 1.0738840443896301469289648750723523 GT 1 -541027.7256363849744364289053508709363847 0.0243972606412128726392906724133006 0.0547964988258258654599343150291035 1.0563550295139783425148248167927432 GT 1 -187358013788236191517878412.7359764765831124892132761556547679 0.0722985158163669409569461302234204 0.0664694332813836150971308611831411 1.0687815723279593130014755576253322 GT 1 -195.9269707376495289037809354723238534 2.7971736661637955443481183764813465 0.0265764154712024696440131704308939 1.0269359528555516392918118526222313 GT 1 -34408162.4731819322719359574926285934870584 0.9442505403698992348651134740329560 0.0348024467430110871415876257536025 1.0354224801940787531526775325294935 GT 1 -7635090399897307463106442.9138809788924983995009579395234284 2.1040711032576535595059083715859835 0.0238573449955389193950526315037390 1.0241465403353957535637495737469074 GT 1 -27524.6981291456552020992779599670700808 0.2207322821622572688571187345687731 0.0789395238796970104791592631375061 1.0822295813426262629981302581844457 GT 1 -84683352437107769.2169714411395353606432120931897189 0.1926416740519499685550600782115684 0.0426921660115949071571468881644401 1.0436302736428548596560747493021345 GT 1 -83788932683872805514502624.9467198054900005360377450128639137 0.4538776565326809374642416905138886 0.0388095699365332573792786535123532 1.0395827314079774487045524858790272 GT 1 -176124729512415276780.6206881913232038583991300282495646 0.4490392675804656904768569201966322 0.0624047890462362869589232532216843 1.0644369679435900399604812882769895 GT 1 -3786626576937901839192489086320736470.0481008080343349820748977655199818 0.7856055139935280688131207057036536 0.0945679771517205399417208391244778 1.0993430758755858035131167884281350 GT 1 -2027471421.0879845664788353594503438420234267 1.5941489357205057477856413401782082 0.0056546410552308676746346776251231 1.0056706890637081071168546040288276 GT 1 -1502801837541731260892881037154624666064289.3628950216144151949951097513240281 0.1666542771106780799693602338174137 0.0428965156614363935203713702472029 1.0438437592701715559725214879666395 GT 1 -136439497977229884484948252384481878645773.2477105605797438065590847818841161 0.1815807273427714983820704839341656 0.0776855021319154780230036610605746 1.0808690096098795813115840629828248 GT 1 -1067810475273956257375282476489.2546864460211117251144242787669043 0.1546186907639510621224658383940276 0.0868773571135263559874397093107648 1.0908850778505542623646442967799141 GT 1 -6132687645306048609156456494674507152254334.8123525093154785652654158162363089 0.1594579821149829372814846270207947 0.0183746994577555004033328281066702 1.0185456111190621916271179564493186 GT 1 -4705466604374595491074619860561512330.4531137795078462807917842129598166 0.4976359870718642747841650965572628 0.0341590961627627616949089722462011 1.0347561541541304053656483355179540 GT 1 -728.3322700436816610803844897309442650 1.4442300749788097558769454153905232 0.0580492297430230167939413472590094 1.0598022666451185038313067409263914 GT 1 -7158060050170438229222326080357.3024292631254143845583973195065533 0.1228291495900731635117221797640543 0.0289901213719334453734460911599754 1.0294186370782313246850521302387292 GT 1 -5888446476426544140655667013995848135791459.2976952657262274117593121571308989 0.7037021347809062241131170132532887 0.0672998951224837359690704891814992 1.0696715608042561180518049790409324 GT 1 -112585796920106182486642.6493591523458528185289900332859012 3.6742457461954157174058566703027169 0.0588032857416290841401849531537157 1.0606031131482288068872158396744460 LT 1 -613559054360281.0513406489350849332338157491212015 5.8066305226788867134089263964936671 0.0600415952879331644377558040248806 1.0619196550034730361869355584594304 LT 1 -906370478150694.8590641431361521855667173746097920 0.6922447652630611362445539691892937 0.0036303657657152576800150457883811 1.0036369715359325138039202783258003 GT 1 -379401667374338604801177643483294.5177748604764250663760194956817661 0.3470249813749106911231326056424996 0.0451229338200563693969791935034932 1.0461726733005235192101170965701106 GT 1 -104654501771670711.2825238724055434517638548892103752 0.0492342397087388069128416854952464 0.0158962801143411886988842267575254 1.0160239810968819423139038442120587 GT 1 -1602.9400287919358181077271146772003140 2.2057687124548422955938266494977004 0.0774173994013045297279611512758935 1.0805783671315310103521493549088635 GT 1 -50692639281034667227811938828068757282573.3986735659915754395385111027897035 1.4174366525212778289974258461791342 0.0479722516815026861240607884216123 1.0491610972221692234005295356678965 GT 1 -498.3432943520611153231166880872663761 0.4935282413166051459488417070830156 0.0648503380955199887489131956810807 1.0670486962946786479908010486533165 GT 1 -92945851978679819167278.3347086192434578298120258178768416 1.3225343711062267196272179095402496 0.0701647038337427513915842698418312 1.0727478094155486027366896917431253 GT 1 -198370484768.2790995275642089291732702965822030 0.2566608548891175255033167307449411 0.0017263847029746823809949134658955 1.0017278766223778287266164249717328 GT 1 -5893.2937258488746436785905231092153241 1.3341562804445148479346407626870521 0.0065132668172943790914655334239555 1.0065345706952228943159734472104627 GT 1 -344926260346332022605808608230273764877231.5919626202416098227937569655903612 1.2778710487363212111431684013906483 0.0837656906152067600350661936883826 1.0874831507466867342661132932819306 GT 1 -37881704861185162907633734601.8635283425769566713306518739311378 0.7586928388457661787324925291678918 0.0747495268361906519056892205513548 1.0776907963257734922603732278735957 GT 1 -258.7480804090090530676902337263916610 0.2777880147133196582229146271522729 0.0343950596785548318155262244227291 1.0350004928889488281090559266310528 GT 1 -188083716140531588118738737872383.0643269006762030067102486656394084 1.1329584544637874596817508448046033 0.0767118365048741342927170260895350 1.0798138900678952307221892778299989 GT 1 -5974.6809497210409046746660052596091717 1.0826839829839060246820191810845577 0.0644505061727141965592778328873634 1.0666212283849732094895861034505240 GT 1 -2.2369338217150526997058987118800720 3.3161456409920669961866579680533599 0.0947685202487962808924713407148627 1.0995645892574017560621760948377023 LT 1 -15739915983996.9081743435119057162140646078513387 0.5602651697724675100949402303014646 0.0436476766228446255833810684136122 1.0446288947271455640667818636950401 GT 1 -773583937135591132481349462543730.3261996937613235857145829634475303 1.3649306139324319750696674085167554 0.0663511815878640081071629644900984 1.0686549088754604251281026815346521 GT 1 -6904287672822503722348518007067370204537.6588719692598190091142260891661107 0.1107668977041730480793720782216575 0.0621196626019766183665576113973625 1.0641329101842586183017241078316497 GT 1 -57490600559937.6114808516629824759842653587119497 0.2745500308083205199716897428788609 0.0885181301019608173343963018563481 1.0926835754638260398209958621698125 GT 1 -800101783606.3664221313463245883390406833690148 2.5468447831353772692479950858915580 0.0940359354636693776178359383303058 1.1036319755711719005004998996716235 LT 2 -5113776578166792557946.6699308651251781826155921342238667 0.0080110669775104140210714649360116 0.0845613536665367537839102414648646 1.0883519336796793976832517330493302 GT 1 -468853694224.3439823512925066538560554399079460 3.0242358456491866275720347837218026 0.0181952795729587183716155487814017 1.0183628494383503721972494717114592 GT 1 -1764094390245455.1532589294870755504095463000132525 1.5507488827585876355371270799246626 0.0997725723298815584200468675833120 1.1051078501691966848508204873282597 GT 1 -23169892508119118917427745688244983428.1789474067115875751266159765832906 1.3015534847165153185005490787054014 0.0286526600351861464190252210890470 1.0290711609941079498904477588757625 GT 1 -46880423805136339.4145298318317381578159947893681920 0.9109965431985420284759097161628111 0.0827349865382134370032573456590550 1.0863588479746895457038001070603850 GT 1 -7254847923958895022.1658104449451700707251668926799807 1.3043635434012445941638647411290723 0.0195935832365578684530653220230855 1.0197880823032476613954769623736868 GT 1 -1068812065004079947723311553750621151.0656787001823323664761638568301054 2.5725345913105602744107661796971815 0.0412852660644415200583375664431041 1.0421617103560139305551805774674656 GT 1 -817592052061481407654012551549208.9493468516902988901516993167276270 1.2900873063471833501474034066191797 0.0582456244018044479854339233230524 1.0600107861790011602877230473773024 GT 1 -51720871438270429479724237452485890985400.0196465873138146931389984018864446 0.0248029902550988364676575621849313 0.0848147240720419947639855945219044 1.0886287468514532399344515829487460 GT 1 -674925758.2512445045752555381750813077361517 3.4107386230723402661637544246075520 0.0111611704783636576056759900296775 1.0112239237115065479057432265090680 GT 1 -76290400660115.6052287186731433918219584362620923 0.3591615564470169322483449417112860 0.0618153766777099411983090057941185 1.0638085227741146650394573799519235 GT 1 -389658073768.4121280310175256911917285875987993 0.0400722320923516727791454302856023 0.0012835101830351697354229499924607 1.0012843345877268613428092432933925 GT 1 -15159085961.1433443722912845945989661773523975 0.1433601946585126819838534597279549 0.0387607021212964823471589701524972 1.0395318917704739127141881515383439 GT 1 -41998901490048438958419217.3380844083800086944828875794242995 0.8060056740945788446087685076383643 0.0422552244119461024598785914824937 1.0431739502969103261820762232133451 GT 1 -7238020032518752376125539.5357910920553102877784868240947500 0.9806841484363103701781959435458553 0.0201627431669615714115216331664658 1.0203687855638312039812553544543617 GT 1 -1382840755791744938949958872938.3247968054408715511660911077268851 2.4019373849573110206855429216917535 0.0993470802965662815900008482888390 1.1101095866388607098428539478364914 LT 2 -22417337091321.5985552479043006939220755002464783 2.2456969030546945923547718226844593 0.0932369640809558539103573307985207 1.0978741243919519945897959549392042 GT 1 -13853667862752598067629080621.8965445258623700536716717688764888 5.7066385034877010650132697758699971 0.0849527604795949362508770267906715 1.0887795871481363660698659697330249 LT 1 -356157450040.5341330038190206005165648897319757 0.1125411590175312317728052791034460 0.0024628792833255417284894134911548 1.0024659171594808973786443350039820 GT 1 -3805969371725707666535686555868279.1709687238094265236335112116155229 0.8599234928424265384900479435193796 0.0024348612418909984589376275302539 1.0024378303370603153046739274754832 GT 1 -72610612072911704926366857590579367044394.3099637269908826275224188030226031 0.5005092782456903497151511068151347 0.0809174717272415479377589199303627 1.0843793584029812654670584657040912 GT 1 -3776486437.6353859102734987086200012153040401 1.8325570144545167146459086816708756 0.0954460775699391576072143410496652 1.1003133601912182539085306090802228 GT 1 -868703593925259177996783270.5558634575196574522197625315404626 2.2904119700765887203768678032842035 0.0950881531487128453691432240319767 1.1049095248855832497721415857219832 GT 2 -41244011211.1776974823139906683217179078960541 1.3232759898876482676091347543700242 0.0184651555099698659347607232555689 1.0186377646323731428223972593290576 GT 1 -246144637858726351319915933138211.9635687445162787858231158369251486 1.1515148054859884183227501027464489 0.0506889513996045353694801548101651 1.0520187694805631228905646210226325 GT 1 -137717559578245104496111037567607302999279.1917994471074376300552086211153726 1.8103203056768053407427585811002216 0.0271845335503787319682209408044347 1.0275608689969277421029437641338662 GT 1 -9326433859035964.4474026145101152702066156083128080 0.4482336606874705245022176560511175 0.0761333506598054213265150566950841 1.0791875366513201254567864903609311 GT 1 -2491186900715100351560.1372395437165173665347742228632844 0.0690434290236175388319302689847636 0.0815666492908234200855644368867036 1.0850859401506725634296902963181551 GT 1 -245041233693612151997841277254013.9531862510691720993792365012137830 0.9248809673922161972765511767971990 0.0067183488176668310345129487700017 1.0067410185154265463197612538405040 GT 1 -55657955468077679364052482527870737553.3404580410143048486916966146606363 0.8934374110786364441834253351379460 0.0634030586751384047674055819434516 1.0655022479599354823704829780176112 GT 1 -710353.6667070834056947810302212076634859 0.4089903055412258379802781048538753 0.0318193940684093252855149864983622 1.0323366327331571512029758459872906 GT 1 -1.2632671371286744964658142591081579 1.1712261939507152490624507360945161 0.0310127449093525358786427142101542 1.0315038198190982516942757747477553 GT 1 -172958807.6715886520297581513599013509417833 0.4857438999629208270047651326979434 0.0583474232762574638792852224145209 1.0601188869528956683119842724100436 GT 1 -191874239831868977118759712118119833177.6198167013950851724071851507275014 1.1314234526410873225763676577631538 0.0512129906592667054201901899640973 1.0525709425053280758191746769087090 GT 1 -720859494408.2410514275171934764313199911318924 0.6169503496799452628304495000971910 0.0902848963591209954637978634194245 1.0946238014109105708824171444985272 GT 1 -6746936015125.3282473827980660009117767033358105 1.5923651964730629389034813277291710 0.0307498012187864416669879403577841 1.0312324973434604993210738658378253 GT 1 -40720025.7683404634943561396800052263157061 6.3880290566338978498243185532357737 0.0246342866581262427493534702126015 1.0249427877061356939864489133919565 LT 1 -29896472530889965.9163369627586054025760010663796894 2.8619423251430027770647732005687358 0.0861263188861412262007372658424199 1.0900629215497189402664418761969814 LT 1 -1283970298717056344502416695487557538616262.1713080829524113383220157489816310 0.3307105252580172454766276614735545 0.0707692091717619981130607434476439 1.0733981417125590091530886551554207 GT 1 -15.5392412756379621044821663834890176 1.5120556232142936520873128064939726 0.0623222993810806600394021718199906 1.0643489917725487251174726271246070 GT 1 -33918143920290018748951265393919.8853011025606365693976619386355272 0.6672164404564040307455934537644374 0.0061931930681006560462108968244113 1.0062124504392058846770315293561098 GT 1 -450188698037.5352815865057712331758285686379884 0.3537761503122531934992103060993449 0.0070166939940356716579041084708639 1.0070414267540482986620378965420713 GT 1 -350759274565360835338841601098515931818195.3785875575045039623562226694553557 0.8792043336159652332981048895003114 0.0418570173279930725237042151876471 1.0427582609247429595560287785735156 GT 1 -23494994803284185040005880885460.0960951951545588412610462982237012 0.4185366937639468564625544108059239 0.0648714195378770647875336827047528 1.0670712399375232473480912927531484 GT 1 -811235927578597658407440094789975254.9326203131861975030631632546963861 0.8780882172340820473015345527256456 0.0256874649548281023037689541696270 1.0260231489401091108898663693056817 GT 1 -127561830791490968098205616802839294.0979311227432943411963011745141670 0.2077791983652188696930540179814091 0.0657196520862163502444470167702575 1.0679787274258691347629233629011510 GT 1 -1439783209203112330603916589.6101653838544350985907352803097757 1.5836928065527943556384182927679500 0.0312774852743110056272695695622437 1.0317770706131331307633886675015225 GT 1 -7774870077877.8546969124988966773140191698681418 0.7502840765012266659336666434843276 0.0099889945627041736218027122362031 1.0100392193119613004963482167234006 GT 1 -11469150.0730198574912533437375810258703407 0.3677866755697372302978999155793827 0.0811845743068657787896921262050015 1.0846700193517334551545370163224925 GT 1 -6032161205617569898.0204997534568933526287285407064664 1.4834182026036615675514195772934397 0.0688212165506813909995976839463650 1.0713039863610472575559233680128134 GT 1 -42211586946823710490657671956500182.8104574946562689053221576763159226 0.2383958946419792952294038822274769 0.0797237534031316125906620404474645 1.0830813859704025558871281809043021 GT 1 -1911060308924582549695432.1892623437229548548538855883424111 0.2548388852622486572428777057167228 0.0721572294145562360793655727835781 1.0748929887989677877287318022146451 GT 1 -515889364687107520001498058011.8812387669540669882120026772524682 5.2994284850591762301936740261190517 0.0894165899224075252005235578561798 1.0936697749190706893818397559478709 LT 1 -1863035864930157491557954986027.2970800069794419248617356553783490 0.4182980977247627231351146217924908 0.0132342284472769606005735126587423 1.0133225812350423250828416842091222 GT 1 -4428752372201485659008258485648521162006154.5305465081973028933624843667443182 0.3544873577525679457497286761286397 0.0998674005426415247346893405247865 1.1052131937798287892131967113404265 GT 1 -4705407382567198498965122311552610.7519922983787779748563122057911933 0.1534813845508303256372096821142926 0.0088419520652109423482789445678231 1.0088812740839078777017294298027579 GT 1 -5450006664203.4768758215239390430171357946400260 0.0283780921176200119317160237266878 0.0970895580944104571835160606507567 1.1021319088827799121977886952575696 GT 1 -2307256368001951164562483.1762146833465677846162727373160115 1.5382218285120744689402360315170781 0.0273966753904566005626270002821663 1.0277789627481485218401270188903247 GT 1 -389813721780490049.5183822183756473748173768207471241 0.5956814923816748052558786909327906 0.0890307303336622104735450215845979 1.0932461148198513963180118509252814 GT 1 -6056.0776711938246672766134338769204784 1.7035389901492949303452103015295532 0.0251072343929672071084500825333664 1.0254277980257595987534382356487990 GT 1 -1819.3387506520934615959714197636584676 0.1232984197042524492619399544085754 0.0361287528218224603224544930914000 1.0367975543101465545839088935918957 GT 1 -34966870911310876742332148548.0527529946565429876703744956877976 0.0606634201144618524444934863725669 0.0152151509267983241102116235323793 1.0153320890056243315026064010852522 GT 1 -4.1095153941865822117796308007996110 0.9357538319632940959599368280889014 0.0793764948763101982168735535177037 1.0827041155290157086040277396413786 GT 1 -2416174385.8309065574767721870192493946136108 0.7659320297671563839839598406391811 0.0219210775685067561334436781516062 1.0221649144204976953390911269945766 GT 1 -482873809274069.2362460155266324844311024529002558 0.3741180036285737831673701966860400 0.0417625250020695261397956608756254 1.0426596455108548273608783586534254 GT 1 -17328092202697947.1713215146397518809229141359858390 0.6599204426765998254991024621571432 0.0015992492383832708569761647427137 1.0016005294024962129479063987564908 GT 1 -6476090307510879441668792323072.2124020052743909218471351159924485 0.1157960054175721088217884888865357 0.0789809207939408577532438284921485 1.0822745271910627404218393844295128 GT 1 -1304129728765613423215541880485408.0665932307257226224756049974089312 0.1807043016007028121879829608853463 0.0278234790028667730868578965613299 1.0282178850459360185846245285498797 GT 1 -81117192242885375453698.9034714365393555935139532072135443 0.0069711008217813918477287803954842 0.0162905857707205253035876898049807 1.0164247362852895675020369288946195 GT 1 -78083172310140255656144165871184420279.6680545940019086350822160499361511 0.9256978444657902995903793063380240 0.0901682943669914782721281848770989 1.0944956354393677312047332133445770 GT 1 -261990578227033487658710066218604015.4863090278651874162768795772198821 0.1308847131540640411856591411643187 0.0025672657032498114690568983246592 1.0025705667808846587214375896723468 GT 1 -5877.3129382690928745746204470083959024 0.9095972232533208976192384033729099 0.0665677404604514184308310984611735 1.0688868847399431039763660341802553 GT 1 -27311331462943.1118854343141633022106289258155043 0.0564579182417385574196936537319689 0.0814133959882546625008878202137970 1.0849190902451715933449891809025029 GT 1 -126830019736284.0664754146473507584320405666002260 0.7048419910661973767998032524767511 0.0143406412135560976992659500313208 1.0144444619749562936330138577061133 GT 1 -8163725441317580451949056214322.6921955004252711481743577590329968 1.7369678320284100691528988575101578 0.0421748396314865927365902930107368 1.0430900225018475440359739751541677 GT 1 -15440946.0482131201882840311799023709082104 0.7147155445168696419433913369560796 0.0520862267162885264216375904318242 1.0534917373156853009689494618863776 GT 1 -48568267427324425967659128.1006892430274154277284256798509682 0.1754148564435796292901070867965938 0.0134633592683751269126539257630692 1.0135548120585608474896617815365271 GT 1 -2274565408406963398888808627793422123738921.3505762664315441316942915088781194 1.0321858131624079809808392230666921 0.0132687188385683223863840164835173 1.0133575348127509298535699986562073 GT 1 -4135244708897569192865568326266118799.5651580704716776002600410493350483 1.6556409993327863211314387791716561 0.0758421206785858540879968743754854 1.0788723568697602544473589056336922 GT 1 -303634738239452987.7367643426005722657172041902017159 0.0815891483240163864563066920394511 0.0461546530316655041750515358989301 1.0472537307711978262654540670914609 GT 1 -195448103564704952757375121.1159320185690220140469836346824692 0.1394239952344865052416765497387924 0.0424045588403336062542520286883259 1.0433298854434543429078921945319457 GT 1 -49462591.5328359808392433776566188168937985 0.2763494989146667133857829989850870 0.0930420204888508684481414471552593 1.0976591590348797613830607648447794 GT 1 -12763718323647929194294049434254978172.2706770441677041070998890704638004 0.0007460098841847125705491789321130 0.0212427032637578785869943721913026 1.0214715765465565376956374527671598 GT 1 -221004.9983175915951372681617801897697222 0.7594313552727029321952485831885035 0.0142024899769777082096718617184252 1.0143043105580115725750128772036875 GT 1 -40762975297839518022638301443005984854.0868190479288185209730944876246888 1.5644602908399385438086943772994197 0.0609937218911317765361450903643220 1.0629331138442886807858542232817661 GT 1 -2233755211.8997409805869135189452099457590869 0.2707768190741102456978449164170754 0.0710251529651912094628224775763269 1.0736736158472108605850090703639442 GT 1 -1246092447687375960743133146304159438921.9701231974364491490491947668674747 1.3211524734627319609342631503472696 0.0503087289839351009320670218436763 1.0516183250821306547061442659322975 GT 1 -13037744444862773795.6651856887420388597217455519274560 0.8530848111918023098033508207468254 0.0245523076350702180850629972201580 1.0248587417149973676362489293045085 GT 1 -17711.1519658358557800683127684561278663 1.2613664335259954470648609056662354 0.0707561416254634224384618746069150 1.0733840790549872240550241074911728 GT 1 -883186036109340961692.4195445280295806655053642005603829 0.2334549686797413051607253948129892 0.0571095063310724532657351491374878 1.0588051285754054963842804022851830 GT 1 -735900294179606368.4807363403974846361130975436776693 0.8602310788962097401751328449053166 0.0273964691489786791450509266794674 1.0277787506972015056301143949279622 GT 1 -1022472114950035758950152451475686097393.1262209082046296574535673955236988 1.3268313169007318024820563122030241 0.0556464067788960404497446713180817 1.0572546138799728348626571995024771 GT 1 -29.4742719605422284133733260012409019 0.8224773639652585891061112714438200 0.0335383986650057437085358778017353 1.0341137107298279043120910250536005 GT 1 -24836817624222622719139402298.3489004663014174764513184619781916 0.6543799819115581213675690234435808 0.0081523557403670965757506761561876 1.0081857679082509995672130053696461 GT 1 -1670378157776508312096527751607869.6946919402637019432291872065841687 0.3432270127740748106381984160613708 0.0807360676186750339878360706518876 1.0841820026672286401345693076804092 GT 1 -1758484844068041595980896633.0100722024875264183532653606884698 1.8673348180076335739255592531830383 0.0248887378507943916312537015625639 1.0252036994700877539790311156529303 GT 1 -16879807723285420081045809045906796672531961.0862535743993781898524896872148296 1.1292606365943362197620421331103571 0.0594822419092104197105625546788749 1.0613247488767334026147372289677890 GT 1 -550928.4765871626198308055018147170596894 0.3650515635309608808296386134906111 0.0830156127400430241754471709772722 1.0866648327594289321760444009387867 GT 1 -11714657920864587.4336942799397620524363874711172647 0.9982973318723250048369443456524148 0.0322341850232979207869762910457317 1.0327651476514999367023775626392427 GT 1 -270120983859560123581382.4772544060738565945225213478687228 2.0101502603581161281160731747467622 0.0645692888811089876180891208557531 1.0667482021586565030031321528105943 GT 1 -147744.0173411549298754122361333342119512 1.8065991176939628577433488642978391 0.0521957415257647922169170189307712 1.0536072764494208583986676486690174 GT 1 -3324418325163410638971645136603574310881479.2995458738204234958886053402816473 2.0198042299177867111405939838982987 0.0196808895779026126999678938207298 1.0198771374414523097735648761955919 GT 1 -30903675959021021486675835665317.1697438251923215240272857099115157 0.4265584198016204740947969152584141 0.0646671796780295878356215245180352 1.0668528554677089293108761898052079 GT 1 -7973066647090.0930002825402189415819142211040948 0.6116345273752400949878702943263472 0.0574360618318073028958435046573388 1.0591515230556814528096793833039062 GT 1 -252872912019.8369972428847196455969031407882942 0.5559397275340742768747865555344362 0.0156807748902962819264520847372295 1.0158050187794045481366917168870454 GT 1 -2259725420475932434.6380991827096881711101426212796952 0.3362437013172200060611511028972258 0.0409531213147301050219844684153915 1.0418153224099349339589088460871905 GT 1 -279216579351681278.3664502109133317883662858899327935 2.0774789604874637213421848412420692 0.0812979163802417548371554318154328 1.0847933836984080097500062413672706 GT 1 -3327521611130191379383219525220.0075353859650627323444954839125169 0.1737287023924695745816652721877803 0.0073596411964847497928201490861342 1.0073868569701935926082758011163948 GT 1 -6331873297664002430.5915996431081882696573716032733235 0.2266009586269380385901046228966155 0.0661304684067770368718641856963704 1.0684185383122325341068942559719651 GT 1 -9632655.6166182882958950168987903168648465 0.3309075018850374030608177558197577 0.0373469880877146318449104380767859 1.0380622520397706761090572317040903 GT 1 -354092220405750645817734895672.6265637385836189221173096409462555 0.1693891686609698232870761873928753 0.0433020788351357556796671971499523 1.0442675892230643774661781534778733 GT 1 -1623.1764717950099091841809147791199823 0.4853436956009163221526357853690797 0.0912638579958570756496483730050110 1.0957004997646934884132702832988963 GT 1 -11472346933070464188878.6731908997732681492726983032161193 0.6620873544243245374840292022030365 0.0260839784027239278638044800972050 1.0264301991827706062725762468524527 GT 1 -809384863082880063920787463876024638.6672802165022935251030431709404799 2.1123607924082055757486438238894323 0.0782749312013477195004542988114610 1.0815082899161819472093780458093942 GT 1 -100732116436044942072473084.2759642317033226937526859484560074 0.7306416813977571843220138334317328 0.0628262667533326411002512821102887 1.0648865995800655488476252560749892 GT 1 -15304382.9086309467682403154513967967272729 0.6789360129522811964817516637397029 0.0850764044071189361649471736155201 1.0889147192773918550985279422984610 GT 1 -517058901969.7784523382876209611786998936016165 2.1428773372690507775983938199279140 0.0447441973232466365677394661472902 1.0457761181624512248016313548122941 GT 1 -2691507.3258676671906645751233960833957676 1.1156179815597694172575270790671039 0.0472156831201133414554579188865613 1.0483667211102187233414107061794080 GT 1 -1997272243787440850064875520666539.1565601735084074441495513271383367 0.3148147084150650724846100760768841 0.0889666391045977610767279819579323 1.0931757623099089443492748157766986 GT 1 -82258968881498052718670.1158927672021031418931479755850960 0.7040714803315096721752265531905426 0.0480906380484569762317439420123680 1.0492854567574377726786052458541509 GT 1 -20886880323763893175.3220295143817339610941016034879806 0.7268929416861854059190886178807057 0.0410520787618725729872680165704952 1.0419185108515659824499796643937761 GT 1 -135594281494.1587096176973283975135608425545525 0.5335680407295494155666129795685554 0.0405599506809639792346824126839627 1.0414054466546912463297979884570922 GT 1 -204290.0843235381922488012323095519350445 1.8605797941428115130482370787225250 0.0824632931753584145410853582956436 1.0860626924153864748359765124835259 GT 1 -3374357280152704257648590690498898585541.3725774045602249110016926354229222 0.5103862469400200032431443054478313 0.0579893302167124324742222023913843 1.0597386777360700383582551138989485 GT 1 -1469042072942216538362655.9959641464507541900157440403188789 1.1141907616715988001017387731361981 0.0575141699353716752739261546867866 1.0592343941871766152589282694458822 GT 1 -270684120940600865662057704.3205353701556504935194061105548859 2.9428588534195168817709798086024177 0.0897653533099081207548198687074066 1.0940528592041473757837855336611172 LT 1 -918127.2558700495454697354664667274005811 0.5973103607134965520011918480965213 0.0075072838788060790644598668931350 1.0075356053684329988239708491822900 GT 1 -151905.6066221817758700083024999853596496 1.6496986409388726742314856329185235 0.0811654006952145205811716221796732 1.0846491518183172643511501463080462 GT 1 -20616641636989170876991833175055603877.1280956896299278590256847110598812 0.0595373940365685595662816128595933 0.0435807520850211967188681213481395 1.0445589182188628436934387351633922 GT 1 -16497019226007.9811115932360126769150682755133590 0.4116760313187680231675733647595200 0.0982213572828372983720933759702493 1.1033861962239656257393030824047839 GT 1 -46605.5311106317422494928298527499899492 0.0192738591924479859991606508195492 0.0477495917544615789026600543479679 1.0489272449067516307125984522773816 GT 1 -106458634588853165226486163789288457702.6687542532138786451312074005215008 3.5912340111455720389948540971531568 0.0131926325381548603114402295345857 1.0132804283415863177840415586160789 GT 1 -50156182551839243030607879725.7484828061962208773478921648520054 1.3179319746633624364439121415288125 0.0841674060852211019152706296495693 1.0879216887451941684837932400231302 GT 1 -11163862319195048083687560.4960403428687853757306932049324591 0.2714003422903545596341505734776950 0.0125537376738283544868752090802613 1.0126332015851153238354511116638003 GT 1 -1698756194549954376444726116655577119930865.7119709450625650578503558195701305 0.7832622514390172621201064097761596 0.0922585716727095111023584017894672 1.0967957115003384564716871855600999 GT 1 -11991369695234760808563746241389.8640557891895640501093289418535374 0.3517103166435411342027351281713980 0.0146921507146028227210152354044863 1.0148011492940896826319205650294979 GT 1 -2.1390424309580986615665770675599271 0.0036581817701414236173196312118191 0.0963885491754546576681362117451596 1.1013558220199942902226495521291115 GT 1 -174750721213185855.6860152942727850455864353000831107 2.3455349306717854298448095059567780 0.0251006439277462912461165760001976 1.0254210378535877419628345950872684 GT 1 -122903355599231415635561070146191198708.4772799211396343615636760740595566 0.1528336493740186432025192675994697 0.0632205616111962261113910505087007 1.0653074157132009897596958129060817 GT 1 -13767913348041949239592453048182529746988.0815892430510616573521142102777883 0.8889505148705410026837900892180252 0.0333430076400096433120737603763745 1.0339115596292189998737650254332580 GT 1 -3274574834954773843.9544672514363138937606016257715627 0.5246694062955724510724238569213423 0.0078687683104716554589054998436197 1.0078998904372107500020557031421963 GT 1 -5715755721.5913127729600690589235213831869144 2.1787544917232409367070421452564059 0.0164131103746862234967045636740913 1.0165492976987218512671252887189347 GT 1 -304241336291417751.1777894170108716268421249300626767 1.8589417347279419553501505016778412 0.0469542567597516723401953898099475 1.0480923772770808749052137528232152 GT 1 -112285450543126203.3543933658690054477324149249516634 0.6463738712223788820775436516871184 0.0618405201075311996701290184579249 1.0638353232205569620080473713347887 GT 1 -55731368.1188039636912225150688003973816735 0.0291882401560238756256452173431709 0.0130420399356469485578349017973720 1.0131278341089286106070106733056719 GT 1 -213500.5140259167170240927155021371308163 0.4080760793181721881261002880023963 0.0132601791094997493474187705081211 1.0133488802861558891742548570977013 GT 1 -6168276535042139653686311441474.1128016471849720491708242653444164 0.2661183291173713675948996718459966 0.0579985504791645805805220427113557 1.0597484656374935465094105151855726 GT 1 -1002462080347319.6274395359856139919278222160457035 3.5233827775996088226415394963729663 0.0923704320196613113728734828632876 1.0969189484004772051216439541472218 LT 1 -164953.0560347077968038617562281334246600 1.2536708656398641127132807812075270 0.0472001047564882638676491756293595 1.0483503708869892124129325184019697 GT 1 -733804990362.9032445473812788346059271071097483 0.3026466944887313990265874725186437 0.0865945426491716399146010084222473 1.0905754034835646828223808663836569 GT 1 -2119882.9207076634560973797092772823338146 1.0549101535525408523471704508066215 0.0889445859323068489355763411589227 1.0931515558358940482851266539946215 GT 1 -3623290.5770965148308214006138680712620161 0.2546614095733191566927700395596550 0.0949135451500242240304342873668334 1.0997248096239641985811864570300506 GT 1 -198289116169447474199408188319000793.9482625456761625905861996276386769 0.1826933528330817742568456590632552 0.0720153024867719770435988302988542 1.0747400360805705774996217557947373 GT 1 -23253061020412978745259866355746697957994665.7427200581723770394147668654501592 3.0852094657430038482404879910527197 0.0256348602639771561948658926056395 1.0259691587994670664894666613571581 GT 1 -7250458486218449.3919326285160360621924378657220878 0.1494139380133801803666342084204498 0.0206657481859689782864060656269475 1.0208822730536600204535909753037144 GT 1 -93933117186872811319567609203387.9639523022275371949045137553352919 0.2812935219083662161471544660827841 0.0758937001821717239613880172906875 1.0789281708645142739519034392104391 GT 1 -1375829409420971647149455565394379.3415285447759418310180223023887906 1.6529790327872128149322610872258839 0.0714163493664660976066366969514345 1.0740948100196143276794182660072907 GT 1 -4161365334661.0355767715460881081799084513065397 0.6373816703291936442274034478372184 0.0277765070170300162032075572027838 1.0281695698993528371916582443356867 GT 1 -19935990025365527462373960876793283408230.3159838809145594942566881269334675 0.4400740163834007342314090683142809 0.0512178737097342394512221268712976 1.0525760891430719712980884993038166 GT 1 -30201515107788618068427236.9104377488800138986021870174699096 0.0635510044965973862328796701910141 0.0727353201095233571073447596812420 1.0755162310952899488420542451142410 GT 1 -745211259.5739492060569790805800385981089216 0.7169726664729872547964455523725146 0.0077521953719500695660769171913619 1.0077823998403820221751602307108546 GT 1 -18447265951959156130680835867030076.1355300751453443437576519770455489 0.5942753037194046585131964627119518 0.0785524235351675006233036007215099 1.0818093928395889255865912202492004 GT 1 -457263.4522945648131504612757358747456990 0.6642016730517846921180811603336288 0.0655132013723495241207415477926370 1.0677577788554827286380161134696834 GT 1 -47809527569142952141149645989546109.2680008577435004580828594930405432 0.2014331232757279255255924126196892 0.0602695549709174671319712487275605 1.0621622054491314023145539979725996 GT 1 -129048791243228871983296537.1618663818490798605948021185112751 1.3945512775201101711287079881808475 0.0393545708787850391828683337107543 1.0401498984261769942984878878046656 GT 1 -126169351.4398766635601574201871424026127930 0.6167528713623334235722889637182353 0.0596745453318485277352806847189569 1.0615292352709247795030882029542761 GT 1 -6740835613088.3190074732907123971377095864767500 0.7959478338636355839055774818773239 0.0851448435176138226637054490294412 1.0889895251635670884506123883600041 GT 1 -20010687084392104314528.9911411187778606688524487346152542 0.7396895404844886442368280996774516 0.0139542831242219494820860739628721 1.0140525594545964788497237341743404 GT 1 -176822271758670.2943901180546273228658647216469328 0.2200627674657141485434953108910937 0.0841735345503568547070253759879744 1.0879283804546631809234073744764840 GT 1 -1314616934947.9884138367602051198797661766595791 0.0293211405750939328689616484198405 0.0413943555739496991932166899633987 1.0422755040765178718120543074510511 GT 1 -848386918787477259904926338316.9954224742764255717250686094566403 2.4037746167832824786609924563615031 0.0163566905581827051266612879593911 1.0164919380500688955246269358782461 GT 1 -1911.6388813519392551282482315431477040 0.5581736419759370603204055908416599 0.0116784106844218929972927501084985 1.0117471389376763606280734518179679 GT 1 -520152868704453907820925710256405.0056498266924095139992791663678058 1.2035303221563203093470894619764295 0.0059225633491230503325221230722213 1.0059401712845989775185130624735671 GT 1 -393523628761.7772835672116811568052877692455370 0.8894009983843010850335155214058105 0.0030333752936688396181011696953200 1.0030379853014545028989711682050285 GT 1 -53185968128592492338790544.5826137250052616596461892230229993 0.4490626713752202976040803099750859 0.0148931628169584127376633520627475 1.0150051795466383777760999206627548 GT 1 -288871557184.2856971453724515742927902656653284 0.3811658907934152842163371697418452 0.0332042118284235265699253667870795 1.0337679866252934772410072562499054 GT 1 -779437.5753535877723827290875068361025963 1.0086854061699368412171018486317638 0.0052185670214133980343802023500637 1.0052322313016647837647506467796153 GT 1 -65676353300.4301347413208893329004210793927170 0.1008430334550377710162896956208062 0.0260820120131262184904530928963129 1.0264281801302352931089987622698867 GT 1 -21535421385283924473777497521.7552459112775636410553559424626339 1.2307513676317258779047231276782431 0.0948857009425266001502975696962863 1.0996940459559680206622746192238951 GT 1 -1358154666792.4891925433490733609357370369434237 2.7356289610194559354969671555072473 0.0077552167331269844841979064501457 1.0077854448113689102661510273254588 GT 1 -1592445607745595009.0720132295098015175645678250834987 0.2809050997359938078349014444360284 0.0042529902059723955419620242886487 1.0042620598934812623606122260577487 GT 1 -15377964877818977055085.1419804163273573986531266202348870 1.0219706730606224127451087480202036 0.0189313009505175535538532678187131 1.0191127922566201971519998615867946 GT 1 -27957300010147689448.9685750988635639208962127089149785 0.5097308708299621819717448764149442 0.0374756703410739396943964696812105 1.0381959355719547069305745625710021 GT 1 -23.5226913058986796891734666126388929 0.8608761308543327899722315259836391 0.0064319124201423779752398744808571 1.0064526862938994952540239523585108 GT 1 -940656210779325430911866726088456166400673.4918880229090998560542310533140021 0.3393246128799084097108924724496489 0.0588680427937821438149993463620165 1.0606719184032943013846912749872705 GT 1 -51478746130331092458111143.8501289688486958459929031195316956 1.4218483736058153723432339998483218 0.0047714851447566303721332060490299 1.0047829050209943185746396857535027 GT 1 -650065141821411917517951940.2201457092324667829909356857285127 0.7109378858181120089239669830384298 0.0158653924460050123357761274544553 1.0159925949909331859963195094075096 GT 1 -8841397279221158261775791256446385530.1985362776179906156339260141437180 0.0982504409218007105615540227585611 0.0425876589808497273853449195672772 1.0435211119677306653460576215773210 GT 1 -1462768390540.3490427392543964597176237261412611 0.8263676761858261130613965713432700 0.0947195291002928998919173807472193 1.0995104706988385551904423059785669 GT 1 -1473495506234313002952193673.2935704340401143382621512366872888 1.1011499086191931385558371635751063 0.0962360806994800323016726631122223 1.1011871039121163975750376738338517 GT 1 -1413266326222.7287611894922733682186856152060157 0.3373197621905891457542231942942384 0.0795250542488299015719293284406633 1.0828654967661478484245329563335428 GT 1 -2946994443992265527885820809485510281691.0525362385136098566697206346781347 0.9442076036538054429964399242202142 0.0074016683508636078285012062658689 1.0074291966189091370317210227641416 GT 1 -33418295532430838067392.2928219011920324732764407384984946 1.1643170820001977465930603499676025 0.0403706054431536145838315200912764 1.0412081163923299600284497968172110 GT 1 -40795498008220489358538988411065551.2053477890573749768423614828648037 1.6631977611511662286350665050302389 0.0753727123613189967696357593480094 1.0783645549512435632946074932880384 GT 1 -605682370707491390859598734.5034306849512735906370470391572460 0.0748053284581154062525292838567511 0.0786809890915860140739373485077215 1.0819489282072345641453032587121798 GT 1 -65543152323096390.9509593547010286640771235293211312 0.3997608914969536837737963346458900 0.0211843228804843013951247911738965 1.0214119308689030549558726931982257 GT 1 -12445217508645566609342920257431185364642.1809113678530737351433938211010241 0.6159984046122641883809118596490893 0.0618999934540109395654008701106518 1.0638987188723093235065462905063620 GT 1 -810512914.5198463099106863965249434214854674 0.1002646559900394277336715660998746 0.0373590587956489416580114661822533 1.0380747911202730877959154192942031 GT 1 -37950084003089547320.6632166599199120104320372639603038 1.0451284536737989742573548857156891 0.0918271087778813336793341443820519 1.0963205096713727209887786953998340 GT 1 -12276445490687112637509306257815021351728.0336383643885366323863500502376081 0.2845327728736232684304186159021090 0.0757458072605149758503630696795260 1.0787681448062124787169478947682609 GT 1 -906010974461.7383556566478230324750750711342866 0.4421001897731514655666437625477534 0.0725452318101808546785116700791482 1.0753112531400473779515276601979102 GT 1 -25.6996617581439762307337534713716086 2.8662205977635449794819736446190065 0.0084721172622524268807957609392710 1.0085082096448795108605803917754081 GT 1 -1971708871042713475.0765249608361541977129974076808020 0.1979761890412740955637109680259224 0.0414733435455724658083632229456019 1.0423579062890633333870735116876717 GT 1 -21449328136030837757534913510296838028583.5304647908764520462920759251324242 1.3853062591548967187601546781677994 0.0317518976528208118144450895138102 1.0322669204681744203700679658864219 GT 1 -150215065628927687928898819854225125225.8157295134783082379312458219837969 0.6013203354957569994002062642976612 0.0734315580191445042098688432215692 1.0762673644461205765422076856836142 GT 1 -710.8496047487064858162047932801121214 3.8055346472186578620053912603225842 0.0496605159834316947067870593298021 1.0509360066260373539719804758240610 LT 1 -376333609444405171245425524.0190502085510128346594391056608250 3.6587312493458950372041023908791951 0.0208580696377485790909524022232273 1.0210786721257019236388906857761158 GT 1 -194214114096923016208458630.1935180139128607094216800558921149 12.5795705529812995155347993843755142 0.0204174461735895310792996523034261 1.0206287635498420961997982488375845 LT 1 -228406924582249349449143360520909640453.9153731512848572929681313754966573 1.1167371024641871213734121628225109 0.0502288190213304505605166097749390 1.0515341855272077599150359355948874 GT 1 -52292311868661.3558169209998418885689006660666828 5.0505274077137849036430143499198396 0.0535598976295250086073259832315311 1.0550475936205190055389093369843526 LT 1 -4.5334402350140190200361423273840330 0.1083713918449077846501745625210750 0.0032584849108446985417862274096377 1.0032638053336238722371907073508393 GT 1 -50258281382923358269933724752046767992275.9083489910240869494543500820533598 0.1553300861731012984579364042599302 0.0543698775631245476683184659098827 1.0559037774687286692671905510696263 GT 1 -108394.2194441725788426769908657415805075 0.6937803006345893694641789215895568 0.0418452248558125038899854470264498 1.0427459533674934471982645981355690 GT 1 -156922367231934367805546980126054654.6915033455338156883705888832099216 0.0210547769321841027889090860941213 0.0642124122907796752282915552528045 1.0663667644665606261562667310990381 GT 1 -3210593910.7818096274094434711888568831691473 3.5347719110514960330957573368007523 0.0055660689347760790933435932351452 1.0055816172185232118722217808152945 GT 1 -4440137792.3304942513393237005901385796429153 0.1388169929223148875884426997903116 0.0529843790178652350717885418453904 1.0544396907028166320607324230586797 GT 1 -5784308509556937223334476781984136361874.1829602345719148680021341733042056 0.1785805440410776593545693925984329 0.0666560108674584595422265452638255 1.0689814546244009956815776656049004 GT 1 -12699821713373976094346690.9663137659616079234427345520528065 0.4605367348210088028051819539836980 0.0932149952579766432997263438569178 1.0978498969411343397060063773544041 GT 1 -1717710427371970211849040177032390001943421.7279001316478365661095309713953688 0.0184912048493186269570658439001222 0.0619345032570465730523953210266494 1.0639355064616547509478872415049604 GT 1 -3082.6595538459390458893615774248002331 1.6367267479688463809742045802493659 0.0026004600431636040158450607086863 1.0026038471126150812938355181482851 GT 1 -17457325866283000483645082963455.2197516960916213905051999501307345 1.7677092768491044863228810311062748 0.0594582888709748089790284956297460 1.0612992812733653494878715931640247 GT 1 -10272950468526009292556901.6623113661814127596367449069187426 0.9858254225810436297800476540486389 0.0957610330899491388524680222203196 1.1006616095956129967553140489005415 GT 1 -40518404520002131564661.0558555620148016609557903710014392 0.8272933564016596726301784919045717 0.0025941493825521713091399141624754 1.0025975200186125560810934061817717 GT 1 -215011508724446824097201524.1570054621572211901795590088028662 0.4312279781048308219236465012244689 0.0617674701984719665139689681627620 1.0637574611227450536729724640444099 GT 1 -83654968.9041394246470324491790319291425286 0.9747926306975043491470452202283857 0.0021112745421798158253289930055779 1.0021135064242398820307816004534980 GT 1 -25864.2876930062221198444213079399507353 1.2029779254366080008481853625252920 0.0276941690163377104629731560194277 1.0280848830810809947228564456697008 GT 1 -2625816614864030814253808093.6670264270373361677204402309213385 0.8193347153914355293326499633768540 0.0527924787460723256057758883077262 1.0542370743709066640022353069800801 GT 1 -25879321241599703325.2086074682015579009063175247925510 0.0121813727109695101561936960150880 0.0494156965130503775917198635010777 1.0506784271551039836445587886468459 GT 1 -69.8782489414528793458103743889894409 1.2851435517765770926564319536979307 0.0188645625653893510653534028392254 1.0190447683605198455001886577955101 GT 1 -39534279749597392829496320620021209471026.9046047123673196696726726269709538 1.0058107414455155419914511103855853 0.0837216647226426260893912041941851 1.0874351009908492008877310557581247 GT 1 -286882784300077125759675711883.9121288399602947221454427663254081 0.8760429965430766049263144671584660 0.0661623069142904162594004865123491 1.0684526319936144611998091625158545 GT 1 -3576675010061968904.6724683849993805793774668379580996 0.0118743525518597299787739066895545 0.0202977597627230278516247755664121 1.0205065899777529264809325634910115 GT 1 -17863770.6629201329543439182581294726706693 0.4926025580370951272547627377774409 0.0467262882196696895081203991081240 1.0478532058826240857977896836761132 GT 1 -431266342748904454.9988158156604236979549909779023918 0.0743624132628308515481455540568502 0.0429240318992664524522214062879006 1.0438725091742590640311716574123490 GT 1 -19024294851541303274395.6132792307841281819574339259130715 1.1794217360503334696343879945694678 0.0232445502836598293995309857208599 1.0235189656242419087706385423682657 GT 1 -509255396866.3704823655694112982622679405683102 0.3894219325723636251345542537019346 0.0635954083014761337500168179628033 1.0657076398121284079420050927377245 GT 1 -848173439837520115701969778846218636.5453378900028042978157107578062099 0.2113411290921796302473784366324608 0.0229911790596462006748296728408567 1.0232595983820015212198621470409707 GT 1 -61113989667027719303765664.6124328042660565247309059353925758 1.7364937213961322056540150385114252 0.0952987822467700243249609352224253 1.1001505359214697291141395677231058 GT 1 -1.9130939921111429462894473121880396 0.1044639904195910672166868630265341 0.0848589716783133030624682190371932 1.0886770962699992052646406244146881 GT 1 -534420216907213690612594307.6041036938841448416790147933845375 0.6541702007810026908824493431830081 0.0609549562612642137486145179376954 1.0628918310215861241491116253985303 GT 1 -48058564404458786170.8894329913314373145088267727965072 0.5590858991812093235503077176785831 0.0350244851469236899832041378463042 1.0356525511743037916781596589315337 GT 1 -2.8099176537504038335931598215276758 2.5189286778114818492633182823575307 0.0347876612837301877097787733664621 1.0354071617279408958633926602527039 GT 1 -138044584.0921326339523735030388484927561045 2.4707776164471032803358705034000037 0.0708270541083427891752355511368276 1.0734603939944033933350277059293057 GT 1 -3640052458519679680193252.5538076715598142760646911848894152 1.1631629120753880268440749175965940 0.0003887320776647869709236690514969 1.0003888076535653756023400356548066 GT 1 -79576.3875033382392039631632449634715221 1.7042245903267231381457023193687143 0.0854624420690239837512382355249767 1.0893367426331663511173402397564810 GT 1 -6861134115818597201931702777704250.6030366803553384212379780717393266 3.6871337678980600119696617449554250 0.0848076856458722029434130698737698 1.0886210561692604560990448618666384 LT 1 -397638.3139884717778469189881444954327150 0.2354220288653888260867764414966596 0.0390674332756142618704900582410643 1.0398510423756511235984443106985329 GT 1 -2007140740823719242884902.4470164221538965083748334700652635 0.1648142376695728436588398444772257 0.0012249804390720484354157456578012 1.0012257313408994433137470695351916 GT 1 -173819264398378934557169823981154594273899.2271720068696989920920041315873534 1.0888184598288263334457785617609849 0.0301648825948463501601873255699206 1.0306292039898383050793744368611793 GT 1 -23668517887757967172.6364382069838122711200906992228691 0.6997920744797474308312939625744876 0.0743137465302720219743687943280368 1.0772199208952955169837504140444182 GT 1 -167351303275654144.1742038233842690910176356389966020 3.3925647593985676359565020187807663 0.0980380286795935719301196323922939 1.1031829202069504798100262314788972 LT 1 -3821648070417582955005268439865128807397155.6987038657996987089824952645276096 2.0982355417573885307623385919547846 0.0172799986157294027430509064087533 1.0174310403210681038638282399541784 GT 1 -131120946510771.8993411649567160616095550204854603 0.2324978626443272905285229253925291 0.0316804062405733283014586489725671 1.0321930873536143756541693156563023 GT 1 -1923019231799412265307073225849617.8881418928728050070950814325417971 1.1941610609808266497263912074935134 0.0560737582852786030213630513385689 1.0577072496660170903596310651361798 GT 1 -1027389248784171246.3653355231283026643112902352190446 0.4490529815802582424031901994950569 0.0100408716948888031259031005862071 1.0100916212460232510944301133114038 GT 1 -76261872292760079657824118.6214129097707220480295698850150967 0.3856357321757014393364287052752204 0.0334389477727967910853406187030637 1.0340108139612738161922872645487719 GT 1 -23347356014531234991330136099988096.2968766918648093726208049977161356 0.3098792445920483548363424976828450 0.0210435218581396360619315391024298 1.0212680928617999000013740014145643 GT 1 -374067356.9686535255185055731193262022843345 1.9401249092524994788656934493232294 0.0983477998231440912073512886468725 1.1035264206645225725022829250678228 GT 1 -367287808017890702539058582659.7081258823747479598254884813035603 0.8695037134261981625986882933112898 0.0091572001704846611456340906484356 1.0091993850557450176143210013876635 GT 1 -2541182327832398545175205006475620388023696.6811883128636743536916951150058198 0.5496738328790755459388005983369818 0.0833540192630666830434921585568884 1.0870339437130563717736527079751840 GT 1 -33432518764851977779722473542135629.1465372088476376266880012865676318 3.3856028846586737799263199678119876 0.0931577675011951074699883458335361 1.0977867883203269096215818005208042 LT 1 -8227502195109076956491568.3832480268399398932916289334888337 0.4939091254802248927360246616058964 0.0513415069278889577357676250669456 1.0527064049137665273515969651801372 GT 1 -17795131846467516242889120849992399.7476185529551591842400717677169406 0.9262607145863946294445428610220463 0.0354329381717015573936669754019887 1.0360759189048892462901833659418876 GT 1 -14213654898580469694427992232567331.0773112969175528808738051364233619 0.7753608440045678836421258518826181 0.0456396610460273323665484384605364 1.0467139650615146950394514050863666 GT 1 -135192659354550886921457756590503.1260595581044582523681610970688804 2.7017893734993384314911684621740712 0.0151005403226565521816757949100459 1.0152157144132473201996256143712105 GT 1 -107224205414614846992867572734.0537043773408260406994433011139690 0.2935379723045711800566145393636928 0.0072406389798441396311161392415623 1.0072669796320486169968708697612534 GT 1 -2806.6799346861091135282693677778969862 1.2621275366101487305016922421984383 0.0574177903228695937182742995823704 1.0591321383422371766432336476410527 GT 1 -6212821.8970549577758816513813066941753810 2.6337376573267481978831986218316333 0.0512821135122350156258686347586522 1.0526437990794015832686133813024214 GT 1 -155347491338.3782146151144350881956304382796206 0.2076502351652773975506084603790777 0.0914834994526804404191087194585475 1.0959422289032292383937417341329883 GT 1 -506532091188447745488429385280656566.1354715233257781680500510061812364 0.7764025634033170327979751432419135 0.0229773874918448532823192065001324 1.0232454823677291849730700796840945 GT 1 -899.7063363670759400352226372203261381 1.6358824204369891739468323301240706 0.0894412235981486868206413192067211 1.0936968279146308930495286799409725 GT 1 -1648149410962865487789716331731320.2345851702689044713570506506669192 0.2236952990434098290201433619606028 0.0453757233267314438554034439897929 1.0464374434815951200041636641869760 GT 1 -84192893453671352399078468377.0601328035702702157848658134721930 1.2071523388187705084080414702924373 0.0716438996173166321107081853208139 1.0743398909403765485306169703640360 GT 1 -71024200220378942499566333733995292717.4874863233172037458745785209453194 2.6033938466112530635209528507549840 0.0877676791502040120463028946250120 1.0960797669813480605943398501379956 LT 2 -24154328.3413563541169930133942745599838011 2.0220101654192251807555199163424419 0.0595753071601950254688786168665864 1.0614237048559708378399315719229560 GT 1 -555322627483250642478870148.6091623563882039453445900010268095 0.2427173770694283522768578901293696 0.0471719514231860150086884578534839 1.0483208233214262762511608562421654 GT 1 -17130618.7186975881143205541608948935122679 0.6320337864712177100085892765704728 0.0578452914786707488948373959664698 1.0595857837916415671667760011086862 GT 1 -25364458787285575621151040.3486834401848021018819047115522195 1.2364445765142053939436340666549091 0.0464775967454968587812641633373668 1.0475923584080335500472023449513426 GT 1 -17175481545.7429343195457321329375172698161930 0.0486194056423900614111907302417711 0.0754586312649198146330212086801907 1.0784574820115920062222533425534132 GT 1 -791057275901840.0871606156245534996098301123060837 0.3367388501703145262584731375756920 0.0054816201032359771812088215863197 1.0054966993136288466795065292388499 GT 1 -77322686556.8536599222764088941538046180247248 0.0342273079902044532878084787124065 0.0016567008447009516284077234924493 1.0016580746911233911617570970124336 GT 1 -9595200183534993944994458212.1775957804206999873767623787442223 0.6020455327592646233392318081328016 0.0461499023280319293126294287679048 1.0472487502029976642823222679415662 GT 1 -562601246588310604891239.8648855128852715296376419461780742 6.3672205854896582377410707228045803 0.0778708709679290769689152968310738 1.0810700120519539349766668150486154 LT 1 -6143200714.0902024453512087663856282156493541 0.8935113161688079252409706503991841 0.0386278478030698096463498142362236 1.0393936898280763433480741877788789 GT 1 -401482761607.9907404069835355033023344831124054 0.7254062563810547245920053881816769 0.0732897790751415650814253653182967 1.0761143610720276221839233077738246 GT 1 -3037235211950790094468851845.9598553802732074989466156027108705 0.3064746683046675749633168090514512 0.0880688419959858546866091094132193 1.0921907764016361661244706504875151 GT 1 -1056650906250914960926231500530.2392506767901239523131992832544764 0.4688153397150864661564522530396065 0.0243649598087379734188127574483623 1.0246666967301467303683344560558930 GT 1 -368958931600165153047204843188.9387544587079707000443883047971440 0.9096188286978818019210579739551845 0.0001882636042173349887452668614702 1.0001882813280342061053843841957305 GT 1 -437326546619734112206304150340484761596.7651169746633433512527587805831349 0.0924784012094748564276067244563753 0.0902389330209860119355982061589072 1.0945732777064653500116669195771762 GT 1 -49058470864905552633273.6681216669158941617900722165317932 0.3303238658704507863268496772911025 0.0200035232152714301398963179477627 1.0202063024416058075677819552567350 GT 1 -28291436287595560545515177881994975.1731801401965502893967299657802042 1.0696102055732412267412494797369051 0.0541721883789041542953641870819086 1.0556947438112725883109656271709846 GT 1 -7603493748051558488791.1184492074976038677768136249398411 1.5424159619164458185926601042768529 0.0382760285739823761524650610691974 1.0390278014788766178838948626160190 GT 1 -2592790015023035212852955349563269.6436093537396279811713769222527889 0.2306186257500512342630178684447802 0.0229619688061980424732747745535326 1.0232297011935912931312667015783447 GT 1 -3004581.6945865245675890385045606731525789 0.4653003893568107002943363345193340 0.0365354988079921608887993787471301 1.0372196354058271838958667475060182 GT 1 -14096620751298006691263621079557259401.4165179563915025951536286763530014 1.5076849859057883324662082389036954 0.0050627966153013803904153408925487 1.0050756559913837641121438433797439 GT 1 -559018834239723.3316641130384207969208559016530145 2.9250829766958267802599505731106784 0.0550866882434647620650160195787507 1.0582673854683377120532978419195826 LT 2 -76083741268632805577452254497.5572024898590203522690353978752987 0.6724529804403761358450967458431429 0.0403307297229164326874708315599667 1.0411665640055404140104577679561017 GT 1 -8612032890686985.4030868027513268587910922377842461 1.7449605830747498777025744126338762 0.0434014426323188432819310492323170 1.0443714558202042286296927610949040 GT 1 -79.3247244874515135540472130396803227 0.6182771234837091417742289920490578 0.0952828278042972849010058709643638 1.1001329010366229986920243740696783 GT 1 -302195851.3752508342682232569594507643636355 1.8576505752987612231658403243520860 0.0383021581455867395408155889952144 1.0390549713606212845291015552620122 GT 1 -9743179.9479769129755239432319232404310295 0.8208687422092660846004055209864686 0.0100177951981189846666070250102136 1.0100683109626476816309458444176175 GT 1 -364593945207717204587323249628340182829.5743474050095635486208659602274747 0.4095646281284260133152472477460502 0.0321374607589796515934921272850247 1.0326652067055140856569019138719919 GT 1 -14464419835797.4882871469733134566259078361517007 1.6950627612608905663656479671157592 0.0180445375257151817848422068974055 1.0182093255520305035133931333137096 GT 1 -7265700965452955009.4928311875194887016087331678872069 2.2383962698007061041650808197366660 0.0464216049880572572345155490086436 1.0475336391651843140740480227315783 GT 1 -33530153882551301851600396567427354882.4133908916254279664297563366196433 0.3352578615777313697511570756901661 0.0829314742864337603250143705179737 1.0865730813676636021804108466715814 GT 1 -488603787524089105864385476054.1506276264631150368924557489567022 1.5350429371415166316642286917537225 0.0957788161932491234361228884731485 1.1006812761647585864308907781310825 GT 1 -34119811622490.0918703085078330756090784840524507 0.1233406405853813050677958617871271 0.0608177943789352628224891322978732 1.0627457764026687055827611366457163 GT 1 -7422946825059648423677231213185092309.5461984175807843557583163202642042 1.0151287917259451858644571909796930 0.0144826628058700042730033755786545 1.0145885602618823223549845363122605 GT 1 -26499448958075119.3195880551056626642444579177868895 1.7715522985244438736828789336472567 0.0837639859856435772531780290830769 1.0874812902750147878820059024926492 GT 1 -227094625825355572389542054983253.9512964992514794746555196242406309 0.7868523188949765026749978934917977 0.0813213606357591355138045325774045 1.0848189029119551926355601467588842 GT 1 -8586658798740849222246.4602395190936714713950375414383455 1.5953215295073534077330909487694292 0.0066543114499929539026100446041380 1.0066765500905586149661937438876739 GT 1 -2419243435404815898810102127093921.6957493370245466225987937734087048 2.3996719309929038781859036107338446 0.0849222419843496760642090684903852 1.0926841830708511244862276621532949 GT 2 -4262469131033657073.3624078619778241609334990965230190 0.0861761951427269629716348088937379 0.0493592660426697621258746400393053 1.0506190649341298234999923793799802 GT 1 -49469714678908388153068119165188533491.9385847779765893041578413528311591 0.8457342438927222032646305584720857 0.0806060993746833030598649265737245 1.0840406297136805974176595942642422 GT 1 -543563984891449170196490210232971.3184639432862903788083831870271941 0.3331009746668263167892663044723636 0.0790626346204836024865597748345016 1.0823632522277882801683202091028497 GT 1 -149101071809559580462525551714.1913765472017264476870053560610085 0.4893830334175079961953575332583522 0.0356728679351464067568346729184676 1.0363246933223164697346089455416141 GT 1 -70968132878364679724889305752.7084871067132084789902878131529186 0.4362347156061015978374751199573501 0.0527533561081267313331088736644401 1.0541957720911567130655253965765139 GT 1 -76893523225918528660078601.1027535141578202946564521797083608 1.7638427524978715059696189768766693 0.0425097339924023761065309177933300 1.0434397240285170264013517841102353 GT 1 -87209400009554.2869747836100135840778226701614725 0.0492508360342785490900842361637013 0.0349863347101053079400755187266205 1.0356130168212453720517413710836642 GT 1 -11151774424191657116889066599334484449437521.1256468018541004321264378057410917 1.3360117201331922619983912540255929 0.0252440787333427380434574333285100 1.0255681764862705400523291339307630 GT 1 -251014604393691310051920512955.7157981071005542127249783928522133 0.7263671293050554189926895752762471 0.0517197189671444750978484288133144 1.0531051653265221681312376211307725 GT 1 -124384953607761253.3337494700968366592307680892955097 0.8523611367935660652397101426011228 0.0820861382863585782235344819759321 1.0856517253201424333517397848330002 GT 1 -3791315445692492806079845599970.0336247936984252198698332774645030 0.8745107633074790611241683231680388 0.0053484575804270473514138279781628 1.0053628117844500556685505432448393 GT 1 -17577.4124208359983345492003041333321134 0.2495616750648235801244675564622723 0.0168520108325726305493566657355368 1.0169956216744696705467789788863561 GT 1 -6955358100962366950167043252502.7332877398910511238035500750522541 0.0698259033846999812760813159381603 0.0579953518782186705815124034571689 1.0597450701060778941326178822160650 GT 1 -256108355925625569132202335747509.5542909479276744671215987090119270 1.1630894155248256160383367387101878 0.0974886453390791186620949530405932 1.1025740075125048942811365609583569 GT 1 -6600985936209343374712390.1443150461845063440593996574229566 2.0808838957530358990410015257546265 0.0178770110760613110464719046382740 1.0180387351665590110614879549267937 GT 1 -6751989215961485710821865.6847675931635482703945235542483588 0.3310356571925642175036669010469528 0.0079651548220856788114736476463642 1.0079970461267607034933707146527111 GT 1 -461.1257839030961558044254688748400323 0.7020386836821750722162759112301181 0.0315994696414505659204260486772415 1.0321095062536278818517076417443010 GT 1 -46836145089945074557434147621676456788816.5570073363751132116864105536853679 0.3599414441231275670807021697883027 0.0256533704199592648638596890579695 1.0259881561250583845332559787842161 GT 1 -7138656225422111286844346423298098285.6051950283995401966045302502137859 0.1490867608840433106766749614324676 0.0949428911465254697484164618275949 1.0997572335676692784913749176861031 GT 1 -27169077031589199902696759.2296803656880365800249593958639761 1.1342657679242586845659722280500182 0.0927376883207983452377132308583318 1.0973236626539993287161209754018569 GT 1 -4870140801656578.5165733352616698508613250674760958 1.0672893388511475325848117088804553 0.0515702213728719025460445542453241 1.0529475264783273553418755091587554 GT 1 -1181697.4877640020153791578841997907082558 0.8744711359061742240601402075202231 0.0732112678516861848158543573926688 1.0760296443006777798166370891075639 GT 1 -897734200499122505823804226641405902333325.2691140686619066016820053303517936 1.2121979779892411519664894992048059 0.0111795351130588333940011218859557 1.0112424958030165727701693896404969 GT 1 -1685098914484700758719265568815417.0474257241881238448550722723996262 0.5484410145517349672131506039025083 0.0647122526398988959586405789392205 1.0669010458518592349490685922309131 GT 1 -150759418421590402.0736027622627388586242170820492714 0.6083605822464489880774446405513219 0.0417823868832115720790087586601635 1.0426803732401566351656686361383994 GT 1 -317140152.6469616560577044119028172258453843 2.2318730726869405438863415023918681 0.0467390555542649784345270083849969 1.0478665991189377150238125333858646 GT 1 -131952.0415071692316373653998840726877458 2.5777039812064310489557459340874160 0.0780137613596731082168168684446877 1.0845237298662339675776542616991376 LT 2 -16261855161903418989740393445932.5049366040006354677178150399279387 0.6675535316633154101480730474846810 0.0594911139752013391252774473715636 1.0613341820934491143999910384545501 GT 1 -1483075147349252365737149271839793369478.8440347368163098505731028877650810 1.0355648777304873087463241438679454 0.0110342327832358035644735351561167 1.0110955614905758435615801092829488 GT 1 -819861746441169855571742826250.2199496853953824663800274439631484 0.2592774711541976126758595414339611 0.0510006737111036315531553151833211 1.0523471902893248571962532673355535 GT 1 -16890418264011481657093912221695.8582418821622887633562683382383532 0.5273936266965986289588315964385755 0.0773199627359474976038335646779692 1.0804727597632916084147042774688697 GT 1 -103052828193252068175385150097465532491.1732944632442067346906672822866598 0.0474929399441821108432518386531661 0.0546731805055110048276060481143619 1.0562245705426076576264273107865458 GT 1 -9923136365213937921082581.9774180924195004465173097313267369 2.0282722029182399687622203957170712 0.0109239588625971917340930545312007 1.0109840634218422938373692088615738 GT 1 -358333603023633777350496.7721036947988256216287940497551120 0.4234219180595925014319663288800869 0.0238566379922837483744361121246958 1.0241458160529402012105213830804530 GT 1 -655267663768868.5111049172458956618427718700386707 1.5669346648304614552252629566313273 0.0518114041894513987269556471021436 1.0532018557847710382631158274471969 GT 1 -8282754690034695806292878655454608831760999.3960299781001365715672878426400965 0.1185047662926410177072497787335292 0.0798281048860636829365976838510059 1.0831947838767916938724352982293643 GT 1 -38585100248.3533033008955069796224024499629353 1.6049160402392859182040497335330270 0.0745236329974452530595090594780252 1.0774466826781356032955828042843966 GT 1 -148659351507165177310979083854066.7407255475281649269595410530284222 0.6942254209583425675028889745162742 0.0521210253923670789708501129257873 1.0535284487928456253303333311630766 GT 1 -80182597965282.7577472890106619174126986909895349 1.1903258737709509951512727687737982 0.0968969328911998298515447297963013 1.1019185935305086260236169887352253 GT 1 -11832148692079238279499565157.8975237216728812877815437497357657 0.6312434942157808658104699058275686 0.0671925207028595308125514357616626 1.0695564453036238507890028017382589 GT 1 -2934801099523969292591157910159100543.9484351963138847986177703508175021 0.3326306802822467211871676229679729 0.0009273471316064044869125911779595 1.0009277773839737523067481354904681 GT 1 -2818378219428567782604326312117935280284.3793239999948408160034734248879019 0.1684815743310273296291828960930096 0.0731428595728205640280313128288054 1.0759558348639253009399330428829137 GT 1 -61428969650059583.6375081961870503035536136407914475 0.5439915847853689250565141461908523 0.0699068434107518017721564051039620 1.0724705294758164676640704324069175 GT 1 -1.9954764657717751982802107744874204 0.4300083067168685467625886457239531 0.0131271038205561101313836934057921 1.0132140257749396485842263903047614 GT 1 -2493.0553762892716914398071534983085684 3.1306642753973486488699475108945540 0.0255912908325485940034573648771409 1.0259244440867154180394265109057173 GT 1 -86611906289952087356656394157.7190981173058268697665495549925681 0.5940634612554588981928658019882886 0.0867423739949712488217554050150353 1.0907372629391691249131971738466785 GT 1 -50120343955500296293053224372536030401065.8046593057245334141192650276955596 0.3076850399883833038107956541395411 0.0942401429059396519865145667109761 1.0989810664684195456506597850656577 GT 1 -6568814499.8950244218218309843570836836961118 0.1612542275263169442785613017556432 0.0695420511672902624188152352262015 1.0720783959331548948576353899237372 GT 1 -1481770543.6369716053800025572592557899659921 0.7063388584127340739864374973730236 0.0485318707914265675080532527795242 1.0497490881210769298981543880387421 GT 1 -1362045478161927149.9775687992950412523520554175859937 2.8714804440239606620690342311343562 0.0216665815168189666526330621974439 1.0219047483524342532779266483792315 GT 1 -714581709181882232105917674005331919909275.5992263429045875227043694415385674 0.8093747795857376984871872122420497 0.0650425934541630578413726915359857 1.0672543052275187164162444877923465 GT 1 -1078897777675.9131590896080106170272512871964106 0.0635042775849823226280593083823914 0.0511880463737103071152591722078252 1.0525446521394028826465091320865004 GT 1 -905740565727856161241154096047321736.5689241829501665689032735930424515 0.4218302187209834203402607268161608 0.0089560981955858340437768467241977 1.0089964451243925092925294609413411 GT 1 -251996267745859639144125036694329404677.4580080880806139678268967843290744 0.7501330823804802272726661104771693 0.0410207027595714958316816887593542 1.0418857921936298737084370918568201 GT 1 -201009188720901877049.8200108262266681044501020324578565 0.8092730636099591006039819979003149 0.0114986949393888271352371915166025 1.0115653161289265790592507676579521 GT 1 -4407548246432011842690.9716879731658785578164808813534722 2.3878132376407558354356982129022021 0.0948698225701009932512282391692394 1.1046442058039282440610432622726456 LT 2 -3506231653071578190035.7862027636808091436499041898949734 0.4079193313005160693457596774441050 0.0816345007006555086369572820633565 1.0851598202163777835293081917890188 GT 1 -71566479501770516564362400047262521329.3152183077217752723604349678266380 3.5566416529613747877378155451071978 0.0003201567032135842238190297712249 1.0003202079643122387057887595538761 GT 1 -74946122155383600645053677921819824937.4236796043151867475489056063370150 1.4737891517539257899687793260687617 0.0622722452544165503300224692417759 1.0642956122470356499096821383951910 GT 1 -568348998862.1895536497488734148018085026535451 0.7703460287588473615454029280596266 0.0571991304876384603390896454685408 1.0589001856546109618067471882718269 GT 1 -8320460644816052995822806704885235861.2710398242909898847277845512502107 0.6837654102192867661027912620586585 0.0663004917858157834305900915669737 1.0686006181988492168232058028760899 GT 1 -177705564345558617052873207676.9030063557581133341703499555757614 1.3733174010139378675285286145205822 0.0825484813550625609194063042089605 1.0861555411634960669761883191223212 GT 1 -3120232752521750734084307220044.9611987822114373822118483047304238 0.9654170967811006260404622993766725 0.0394998042167040462744861184758604 1.0403010929387771441785935683504590 GT 1 -207182260975294828248449833588946111168088.0626097579977717014941397240430821 0.1576012732401877429893050039763306 0.0398723571320595348668026559310917 1.0406890420380567721246306471754586 GT 1 -4328661.4412995256444879126637592358796749 0.4173428226096901867477247228343353 0.0461392931105629026877085761322341 1.0472376277441388383264713094179596 GT 1 -47721241320375037657398696256264036.4576346230440439533355613166735219 0.5831100729793845375790567178292048 0.0516118877910255311584713943105848 1.0529914594445458088116870324862702 GT 1 -5211848199797372176055663859157953765453.9191969675944206334759103484251265 0.5191709189556642392122416052001966 0.0170198922340166507309457300049351 1.0171663952899974370327401616469048 GT 1 -80738210091317927479955109113001.1170775863298379852486398659257783 0.0827311959648787703235814886721988 0.0548988629328430060491884852157889 1.0564633338634957153504329484819514 GT 1 -5184392699861415321.6795878231765480070580025907039576 0.3924911454985012843080908635880477 0.0991662772235417009343698163477052 1.1044345858226845645505721776046004 GT 1 -693121492184179215.4939184638272767194744239686332282 0.6105151951394610140474921382169748 0.0637453722966994158916253979374830 1.0658678013556598082104391043766186 GT 1 -1146818113246107659861730401.7206851577590278976245503935316505 1.8974157338994783955469226633179068 0.0975776895658328836431894667939595 1.1026726751018440440208322368699524 GT 1 -112670815209204833152056176461955436191.2776992175043716679409619648561310 1.3105313294433861394212628262159488 0.0774556744606591466179764169027290 1.0806198548566494323709749237885491 GT 1 -1.2029122557895544805334091273291745 0.2792634850404259761099526390532842 0.0209576141354002445560337925606725 1.0211803423279525695294972248293668 GT 1 -501578619526929102941972683209955369452.6730549896627954800170226900804452 2.5998607727086983870619210117472060 0.0878770859645586458785053313480092 1.0962107322091365743105446385852785 LT 2 -5574091.5237788912530786371156970821137665 0.4524846017527565404425740403098553 0.0389223464563812904104128771603926 1.0397000683402598624085524021720607 GT 1 -14091369251139391883511300506415795187921.2589006087984581937934723945551133 0.3463741254400458136375686168539501 0.0220904604408911303076150201668285 1.0223381085636118091734433958261193 GT 1 -3450120013942692025265885162547067244328.1967206434142601369484891046609477 0.4480907245719619842884969233243635 0.0946895044355516533391086892799578 1.0994773051023011628686697627671649 GT 1 -83598355091055068437371.7095597873490903858432772656727562 0.1182659536151094689453465549657004 0.0961021195968132438080910240648249 1.1010388891266582107303634584716971 GT 1 -428552582.4800417008951413979248463324437579 0.5147559193591735025370386361676369 0.0034243401735559376440373143182644 1.0034302166455627365481029983675929 GT 1 -373017366072061342982565.5774741556373157904696161900701273 0.1221730147443240511764255822038522 0.0189219687604061506438063079506238 1.0191032800321087322042940215881038 GT 1 -1342465975981896550354439335547651137369.8108254209404661705889871436045648 0.6673237087805918567323203942691721 0.0568460398208665346013375386134290 1.0585257433134280944648486597618607 GT 1 -131486010321514906208876011882481.6054568667002292158888601379284481 1.8071178585079617615583842025144301 0.0627447273616548254724040931365823 1.0647995977341986258487886879656300 GT 1 -312565.3418586438468828060174994529445258 0.8237858830331674313137331450438974 0.0054122107466393913716248903327913 1.0054269098195321952742661423242663 GT 1 -3374464235.1135074902447339700361913094835019 0.2906261367316333438962559753397395 0.0018734263043319072274169510917057 1.0018751833622126989325842556664645 GT 1 -83480781107946777121266777147.6660447684762902700969701354594388 0.3815931159794707615803945698716873 0.0330859324283327686898113972386227 1.0336456524499910438705376368034326 GT 1 -721705018367141976259835306885816158161.6089934231873179080957153381658575 0.7205096839716214150557277610153808 0.0373519735153582817010584315818137 1.0380674308949670687106504391664089 GT 1 -1050951266800185089.1696385544222464600199734742779799 0.5513772484563450746614842506959303 0.0099577305841770688100938454456944 1.0100076403853467909965058276501382 GT 1 -17869967185737239923052138487222924721239363.0497068349116307586026431916907481 0.0065187543989782725430857553055934 0.0945120614860074393098134849875871 1.0992813219969783717771623891964034 GT 1 -2004572428246535960346547088493714991.0699763008712720549944562256208910 2.5372764716755422918488518576101788 0.0854992443049063315272542599575762 1.0933711075100272784048272451243571 LT 2 -2630736230161672173104.2957693236855067744007658158501790 0.2380659335548598864260046774396134 0.0864998407199280887741970434060527 1.0904717288016694887589103150440655 GT 1 -818876671287846935016651845.8049333125123320663739852559198033 1.5822934905391126432323433537715602 0.0199672177583843336756505766532418 1.0201692566100458404244451271026365 GT 1 -7411428860573997661082.3952961915547193325867306046897301 0.3301307333828566784497846026894043 0.0274438760013111966976137706978423 1.0278274941021181232447545786336091 GT 1 -1018428442588047747791555293016.1895496507975898161156789822271079 1.7638569007886839698451123827231858 0.0508201201594800585485630955904047 1.0521569516105056205805058787405092 GT 1 -440103.1290271348007804261515410738297554 0.1845731603503336095595880597981228 0.0502596322513906935351526178315880 1.0515666288467375531170771838069745 GT 1 -101.8852327955929604612122597975418321 0.4127273500720983160774992058062606 0.0234987082994581996613850794476931 1.0237792058802651999072383677588202 GT 1 -86942128385918015487668.2941255438609036623704054929544289 0.9182744839177333703210225919469504 0.0469589483368033740722503963403895 1.0480973000088937762833128833142640 GT 1 -9724091274476708.7860175452081465152803215636406975 0.4407106647050858990403995288819324 0.0099378986979176692667725165562021 1.0099876092328950922688274472181637 GT 1 -306325329669713712399543598632858.2352785942750962156033640375713482 1.1468342813509770986021471572316101 0.0296536759355257729315673529370637 1.0301022360885647807658709630923425 GT 1 -166673384207308740529749413738710712432060.8321950876947951858909594086901248 0.4101860845968536584075913972466446 0.0545007575130456392296455491215162 1.0560421920611490238328278025553428 GT 1 -106089994301487456.0067804741804000903437655225149444 0.2316599084004305577295616902835866 0.0850100458196891543876875188689883 1.0888421928047974593175064330126759 GT 1 -606785538447.0182145568503073673532187819576159 0.4423873814681188517122957674376872 0.0592162998007860305339934584398037 1.0610420274563848077566927555187500 GT 1 -9.7196860872173221544011807099868441 0.3784789675224447209518745872324264 0.0175673007811320206727573524580810 1.0177234371077008875085571555727576 GT 1 -448795709669464934552.8647162486761616661924126947061324 1.0224125935683022652780810336029257 0.0026503869464444728585255477159432 1.0026539054402157693002532465030000 GT 1 -15008202254579433365993810730532775478.5452713997606192447032860221558115 1.0245018370273048687479945976694730 0.0864890199559240611801715265785002 1.0904598834836292747741756139090383 GT 1 -14944384369306241323650751450045599978538.0716559482249266097424720905411502 0.7559753118837928018484575207998869 0.0999278307360968355019419104165422 1.1052803308017142879340248857034617 GT 1 -670447356721166793095.6975087520281476812681679271123759 2.6011100777005246621514648148374745 0.0504910304807777086191913363366682 1.0518103022033541892812889432023944 GT 1 -122179350614819534553644000709957554.3160697897217683050018713766024947 0.6256663045805098579067741901583412 0.0896183181952787902388652486362685 1.0938913368530097656644835451453835 GT 1 -1350973.5767634818543586710985495038572540 0.6007082760883182084553487415555248 0.0497924015999513909212326631582543 1.0510747936289498998227391210887678 GT 1 -53145577781062115814181.8534863823541845652356832121403726 0.9387944312806081572174296797297126 0.0976941987246918011324017101449866 1.1028017905716644992318985941323591 GT 1 -2.0551295183178751548478638106951605 0.1603978963434758652283037539901663 0.0567337287215634167126466793911281 1.0584066700575724373535734668967228 GT 1 -8103363.9275135177485511470559137453173003 0.7615311258983370423032828182637884 0.0051486060110533540358671869804647 1.0051619057527085899826347156610015 GT 1 -36.8595975764648719737089933682084243 0.7461747907283865557298785109663843 0.0909298260277097146556014071401201 1.0953329886949263137071852713773559 GT 1 -200740486095616877.0039345834610830394632448778501500 0.0278084696741198164791985212926067 0.0685332321214562336061725423041513 1.0709947654990163113654266898073732 GT 1 -554148180543401336941322437340983193536.3874369884381844519223829715516284 3.0938274893411832148276385144834314 0.0568344148048482617689342062995054 1.0585134177071468815332081799452981 LT 1 -4227086915738.9533187177052880161348427234250507 1.4131141996669603925807685940077844 0.0820340815073458026836278611247799 1.0855950148758225144061372823542557 GT 1 -5.4765710127879379796603430288802705 1.8926131873815938099314168769607920 0.0201139057503204276094302031513705 1.0203189444302607214280552159725452 GT 1 -98623885974812621713891695356441189050.2653569083786870243231775663579468 1.0600896096843849569984283269862725 0.0051142544768170962536798340365006 1.0051273770367716763564903795948057 GT 1 -4821014523236.4449791131273589906258139406429174 0.1110625719128592317730257500922996 0.0353295065545426586209791660932003 1.0359686935225352100264645928815610 GT 1 -133035805574039853281320011714412.9185421818366147670196818981120247 1.0523405447410715705983319179866338 0.0468490439203296068230500631669675 1.0479819869489825767930970293811578 GT 1 -2012728941928214363772110417900158405006985.2208821393474518727593762921942612 1.0465017519727721409855069527826281 0.0788716160043689624129142413897924 1.0821558561379753855183244651412044 GT 1 -89294036889526164725654.3432514620276492685263541342359277 1.8885694996544380266957039246179811 0.0739514257521831613246846314987741 1.0768285897205621689752082196575265 GT 1 -2667161587765657552566958803853133.8290993667158338780878720524632826 0.4450010644732624105964805340445398 0.0192644747378885381090262821521120 1.0194524528470555818121872595211264 GT 1 -395277236335364954254.8624837031294021139971418839375776 2.2709005225505316383988120993277096 0.0674345760160955816539291739857049 1.0698159701569857640755324476443468 GT 1 -4.6587608277281374765962906767010475 0.9098858716189036587697383048813817 0.0979881463229809457142908943748834 1.1031276174570611783614323111993262 GT 1 -40008694012.6113117366525144091284498410548739 0.0128631406347113361408509760250772 0.0478528705935712990155121361689147 1.0490357084362080998386559640520969 GT 1 -669666225462716270.0662236974836767481146146231151066 0.4561615980872976695529249854758664 0.0777333985665738463264906027084525 1.0809209416552499581052133218777115 GT 1 -141790566644.7707453436123300113366392126485458 0.1125735983020941374767763623580661 0.0198923677098196566069918531491013 1.0200928844807369945174309011704044 GT 1 -59719612.6239490997320815419536945700018100 0.1384312700386001425266009965264457 0.0741377556113892442690245765491930 1.0770298195616103898892852234305236 GT 1 -80776.0796492049969690375391351806699965 0.7025719918244185310065664166182460 0.0799327132223217215419894217817846 1.0833084738116654696052148668774414 GT 1 -1607734595740956975617901069526928834172992.3224127568023547857287074065999234 0.0294217798179470731621810726534392 0.0232562612331401512955576850177347 1.0235309553394662649031283001256889 GT 1 -2923.4404096748076443574629149039283198 1.5107813879620372973168890499013408 0.0221633155430971136936249716423985 1.0224126121994568319893504231539729 GT 1 -383738720610639862025193715691963.4851148145612776272665114333696449 1.3652015544298708438971570329310897 0.0647660752170593047560419307833315 1.0669585940513554736768674498704058 GT 1 -4730773312.9386321491468590917040978229271615 0.3281102953338035918017131962817894 0.0219036139178367795426682518042066 1.0221470595272328275903017176446636 GT 1 -7755704206929585711671965480174.8825781339819300244347526231030954 1.0330050273794286038729559704320959 0.0126600123081580716642632587192176 1.0127408331168128359596615282494538 GT 1 -407805711350108816552091436189865915108.9875578951873857359318101268680910 1.2941784366513661063986725692425049 0.0463881069809533716042070787308653 1.0474985110426078152984416498553077 GT 1 -239507.3021247120152514161641835980011256 0.2141865588128815790158896374844164 0.0243390724030058877379331324880220 1.0246401631789469631885087558950523 GT 1 -365818240682738.0539895177438338569326085051021320 0.8009957499257889786032914424353105 0.0028776057668689935558036378012628 1.0028817540343072332396822123856872 GT 1 -14.1227257261139746426629675568496695 0.1713383480137862363051583904317630 0.0780394503318945752151252445851237 1.0812528441195938588356667527600595 GT 1 -456861563731491693868.9118465498619586943626050247639611 0.0324893418322974256779663694623695 0.0916743612104447350261319275476894 1.0961523316461522534693817363454680 GT 1 -7950676718988147940179709793.5726582989301242063677412456750280 0.3116299752842657237687621022699563 0.0389006535181724983846210933722090 1.0396774971220948070330159123062373 GT 1 -6140344864912712116820779.9635656678551781943187858884805024 1.0843956467929441029325780483291102 0.0393947073725692514121755976056166 1.0401916800565865021912265834312753 GT 1 -10378474.6748689980052209754891933328646051 0.9996982747146668000752409490179709 0.0889273182168662536897717706751400 1.0931326024862580566852609356582145 GT 1 -60940090955012367423501.3342827562239812537173298431814729 0.3210109461980187433481650590387198 0.0397846249061876487017477739403086 1.0405976706266866902489752589815445 GT 1 -7100286897.9389692440697865784722102649387959 0.2863404825366905693824407144092079 0.0935142585743812835850592812839564 1.0981799781711484308222850233186460 GT 1 -26105395244443242.2623678334607948600910914425918448 0.6839243162654364259604688825968153 0.0356730433493826236398594513006381 1.0363248752255797280138783557784694 GT 1 -459842339917714103.7383436090087117237796632555689865 1.1358309568100232180846206844835436 0.0427872132190121941692637328439255 1.0437295645112469449887742868988978 GT 1 -759859541082314032301066117922696589.1100740991548274039614313678102987 4.3706393110450561021181312636436872 0.0420967996598768795560916250425804 1.0430085496028150174505625766611178 LT 1 -21419276867496322155324.0072243782030155475841112061891216 2.5224938220012309405286891993647412 0.0888258825014686485387531577247958 1.0973477506369595730565072993351013 LT 2 -3833121078542585263029430408981861634.6294010406016016826221403593375442 0.2032067416035080921352207922924743 0.0312358888532449833746693119205959 1.0317341320756310383053082730240313 GT 1 -94307420507912361956413.2360730584047444785925555286386415 1.5363032051616733095443963825546556 0.0531896924441194338726349383147151 1.0546565146716563193110116969953881 GT 1 -1224389551098561099334315094.1804265550631684792460351088635883 0.8560808657660393160825495800287142 0.0909895404833914851341698797042350 1.0953986782519275906857258627378991 GT 1 -401383280237338867428.9691349878744718027734054651320432 2.3766939129421501105592812111077446 0.0359365098037925034723649268430567 1.0365981253409596361993697814489259 GT 1 -304707240254639348040067.7088739870902343938259727064230234 1.2093331485929623785878936306591582 0.0667173418449918075306333763432832 1.0690471677948890950562150687273747 GT 1 -12731926084408627288716251549203802337730.5045540767370635047659779054936509 1.0162746237687967143050782543768070 0.0925366502891252028982796388357758 1.0971020996521937958534391912641580 GT 1 -5678499.2348508597310090934652930329232412 0.1959787212570812388478206669361160 0.0559113270266210753990815379044476 1.0575351840135748116510551098492915 GT 1 -757877588502586.2305086059881103417236741129128467 2.3129823110666241129778339058609459 0.0843867383058593885289042654443228 1.0881612068516291895734948279568838 GT 1 -2.6792676216009136166289311398947559 1.7161857912219524959012372162852822 0.0488132212299772024532871284689532 1.0500448332290537012078405292547497 GT 1 -3467255586814251543417.0151261679688121314467419003232664 0.4144661859199062471252908311092004 0.0017022339346871399636489962441991 1.0017036843811044500680939780490567 GT 1 -13578682740402216960235237457720677792.8839620934470348234279309398647172 0.5932477229746840289029199367050233 0.0040918330243699786624437001593418 1.0041002274800857609829366005686714 GT 1 -332863456.3440049195394468423287984261718671 0.3722461125816722054644006181234163 0.0781751899065195609038745666797307 1.0814000842244700250489251769076764 GT 1 -3555251651243265669.1734221092906405484740951190188767 0.6151753172669364356706343036355884 0.0830919543814474320510672779329203 1.0867480891599460316007388587665586 GT 1 -430550875682153884972276755050.8981116395959013734670649810780439 0.4665310854357275069695922926320382 0.0553202845186775006775215671938211 1.0569093343531840546884809002661124 GT 1 -28005231093056772.7615940832222477138049047429448450 2.1792961539202207358340635435464094 0.0295747917142153646283879927048026 1.0300209444784613275345467834274010 GT 1 -235423176729067.4938867031470649880548135065900161 0.0338751963403337429127433109971093 0.0963214607664133074571309488747125 1.1012815800229255104296893661261367 GT 1 -129.9518715825117729251765840625322334 0.7755140739490014915412836508304025 0.0269460330844448441502537887235543 1.0273157338783645795037750098447697 GT 1 -4760382633132397006085785.1531820863486512437507986090090026 0.2961677112446214348600090952846091 0.0428973620148415518760581749414091 1.0438446435567646120982732668471818 GT 1 -11670119452701733799044769537737767.1008990825463013789772516071719290 0.6089370920500182895638589859675774 0.0298799058112864035612638854750187 1.0303354067063683761993726446893019 GT 1 -712509944308991337976416.6766365207448881461818704229145323 0.2724674230869772297729038292014825 0.0830876292522523849241870659420119 1.0867433720904266232019778436446944 GT 1 -87680.0445700247322353855572230461478793 1.7785049146450632459138168585631970 0.0931589808135731126155219230921420 1.0977881262743239793361900172769090 GT 1 -284917761253995629224372641.4825677724384235617197680198044237 0.0006664341781949166951448507783165 0.0530402698222666717232887588333366 1.0544987102717708245655424290654435 GT 1 -4648377843405536771.4617758077582058033188269439825747 0.7522516869345962576318952620522121 0.0834324750105341536178199801115791 1.0871195373957019532432320911967647 GT 1 -4686714922814959767452573.0974750285988096975643894171761236 0.9550060444229910285903418356699311 0.0385282062882377497781590242572902 1.0392900500967988676637265892620396 GT 1 -84175010168930143952424.1646414268178008853732935582559801 1.0245681760836128295562536729167434 0.0154337115187432385272089629624319 1.0155540510404025930059051844774036 GT 1 -5.4001163893428854461334791963715584 2.1565576091587536260579249160978748 0.0549563173108615147914629467275139 1.0565241274888684123318908043190754 GT 1 -3513665469.5155587101194579876805010515154062 0.4457560073919488226207272901365296 0.0521741967449720495466234652730734 1.0535845454522409377431711149537981 GT 1 -259663988016877874782.0139049992140256721265090244318509 0.1538970887422653962730542473969997 0.0657942496409680497999941612481344 1.0680585755498239131446452786135465 GT 1 -605650832401.5435049758670574057005769390871780 0.0444544403307695697860086071200248 0.0879729589155507863311599164164218 1.0920856390354714043867871086438182 GT 1 -1146707716399239736951408669626683.5984513612700545623726407948701578 1.5833329057656829175147401660612234 0.0933533299204974992330448958860456 1.0980024636627923813784454515124221 GT 1 -16361207758159815856096464465615.3609353746292056202932802949354901 1.2668603284237954635382835295382641 0.0491662197275279605801355013782104 1.0504160158641997401316172744372988 GT 1 -35774.6293414361484236195790420894381879 0.1889061299665671473405622867912096 0.0192975409424688439601001552991080 1.0194861691356640211486339790271238 GT 1 -216550357191957230998029350253772239891103.3490935097796798167053863844868842 0.8293594277050438216088894197454689 0.0272221093771194227068110004279859 1.0275994955954497501740672619781221 GT 1 -175986534721379209730781328448.0647192480359337803825227100560130 0.6700786172106703014363997867796620 0.0673821218528227956544813957632828 1.0697597245716573059561193592192799 GT 1 -13215320227823449455002928359.7949679644000651278060192614581354 0.1670211986630309159621995983625671 0.0768595103797658623236565505222953 1.0799738462892823204947562850327751 GT 1 -328329308175.2732088600511541670388691771540199 0.2617663827002963644006069604107093 0.0830479631038859628116090371876191 1.0867001124598811229801753331593659 GT 1 -2686136794443214127211876.2610392537887103591895131946452167 0.6824647115376347020628185960690204 0.0495845310744381087345474111913961 1.0508560542798220273873636326157317 GT 1 -15605465019226038398083742.1629494158077944259646240893550973 2.2868921388369775284254466536718228 0.0571309738036852563796777397314378 1.0588278965608114664475658925307812 GT 1 -12090928728.1395075524966621086597292415539884 0.0209835203242708224389838080123477 0.0126197719194655733797880325344745 1.0127000775825587553480843182326266 GT 1 -765611231642897087837123193587759323849.7560524485609552111147540290695906 0.4236001230891179538093334573890531 0.0476400130255152286956688177351058 1.0488121780885275321406428188379375 GT 1 -131994207743301614200644772385.4109724772145541434800770519413250 0.3564441257945104270359844634003940 0.0776488470300670681824530575757928 1.0808292678801665765219958223517353 GT 1 -62699770249621282072146832460.1558601802142515101889979092607230 1.1239904842944966343478779446605243 0.0238126724109727808675532009121794 1.0241007769808683681974760811120803 GT 1 -5022386700278594510903081857847780492562.8442104077412284618347048404683134 1.1878421839328085277743538348383994 0.0422598922787401863524534845803359 1.0431788241195489351891413319128808 GT 1 -196002968697350103820870.2442081135294830370002520350539764 0.3868989895625926943893984006083132 0.0611502584955431962780630784249286 1.0630998322754559765985515105098535 GT 1 -104502.3872529869032523504350870715874132 0.7281007406260019536182953013694640 0.0823354915993382920745454522614405 1.0859234144166946227688992426926315 GT 1 -2637777767465063914407459289703.8584369945968112314612888647908932 0.6480597486671538338999989364233558 0.0678397307399576473842105270388133 1.0702505163550731664085647352557707 GT 1 -663491873581322538290926420512749.9912443299723685394731675208115847 5.3883036685227893412233399458658364 0.0416737612588202181808500679425648 1.0425670174988806253862369100027221 LT 1 -12502477646273952.6439526241606717891493162051629018 1.5931938812496589287165775052519391 0.0308133325897816566506853545046099 1.0312980464176924467118772452604572 GT 1 -75076008295076972420374.1276710034648096134282844893921444 0.6015052164549121931605698827728305 0.0819141920769757112896921742081165 1.0854644200469126216902796067467629 GT 1 -892521725033304708290372364823523.0755980977894278960835726284179861 1.0504745390401337582028543203975995 0.0358283049523511825786295472380220 1.0364858933348403039386055833240801 GT 1 -37258616244621209250095608.3694885895944416924542637037630135 0.2540976855372415143977784475843804 0.0767816497621850988459322842172352 1.0798895066517794583349614555169175 GT 1 -46727161853727836235706639511928.5097121570392664602199597258484602 0.0255636669721546786043018090086803 0.0202177208504327036910142028625568 1.0204248961327207810994385783713175 GT 1 -1084.8209117800319778825062957931274792 0.8169708561875641521662865302973375 0.0649310977633353881271104764782289 1.0671350601768623150111212190962451 GT 1 -162.2962434555923094372366401588393813 3.0255208696794429012148524817114365 0.0143938395482108199863527899149477 1.0144984357640257586734412054163502 GT 1 -2280531107394641.7121196692731308652745879684817712 0.9244909478533621250005801781026857 0.0945377971644468648992172127900848 1.0993097442907274194398788661229954 GT 1 -11813430960896940137013095599159441634704198.2638992307821668265940310520210700 0.3754121643986324124016776224581326 0.0099101384721560525396235768049524 1.0099595707527334364252328799224877 GT 1 -387801718789419313379770976.3912241472039878891427570452514745 0.3151242491529632090954304636387331 0.0959313874728374755466932532106568 1.1008500226568968659069494634888773 GT 1 -38319728484485053395582953.9520691876723185032528955574041293 0.1929730056124002635616148826334295 0.0835110825441448176216690317270393 1.0872053040222374530365333416660988 GT 1 -162109652958710198364417129440375393659.8033526324934875914763423409967916 3.9724467621528522638403533132131670 0.0442817575220064170853747264770487 1.0452921348122434595292281961973031 LT 1 -61180929454920470361286409960899958.4557090372416922764777263912738298 0.0351796800416286765315593183579705 0.0227378037691764338935811601032253 1.0230002942326146597822651285541544 GT 1 -2073.8171971212374726397473784735943046 0.6953594456363583986978123704657896 0.0865270281383799723149455823714146 1.0905014910548635472224914805564660 GT 1 -775979867.7085465397825029377535841638255990 4.9363483473213332705090261985931915 0.0444954817214440043595104313381876 1.0455157866070178806691787839948675 LT 1 -16968.3769016068538311159845614776379232 2.8463080668494641504164899966372760 0.0149699305021653050964717562285374 1.0150831108670308036115710678244297 GT 1 -20327040395673523945752639112821931606.8946367118037582729863620210051616 0.8384880274427995575066491749226050 0.0388867663897390741917561524682155 1.0396630480142515938706650126860961 GT 1 -33.1433632553809679491483924808665041 0.5429977337367249489758631758753082 0.0814436580339651123020126493043842 1.0849520349278697385922280336090300 GT 1 -49834.2701981952521655746819863618772875 0.4515016065658692507967485673326190 0.0172638904850518142312384956285257 1.0174146490818146569802090881602987 GT 1 -36450930940266239912658743225558407755.5334081571401458720503544206832932 0.9943140635742518770274782535879340 0.0240436044294716533794463429963976 1.0243373702366173206624770851217031 GT 1 -11151938865315170709792145715822638641.6260156894935675028976324474292306 0.2832211837732628424445793667357875 0.0742217441742023049995061714770272 1.0771205375631457158062102689345200 GT 1 -3093537768.6146730709779203285972352303299404 2.2961961604349147769459427028505492 0.0217539576991370426733643051531489 1.0219940635927579428090040641817114 GT 1 -729241619627.2054698237279501721585734885167434 0.2426504914271390976486613972719892 0.0802798212511891904574284534846542 1.0836858087370196021993790713611597 GT 1 -6381704.7067728775411309479399624709223365 0.0540116122636785503994217402379978 0.0449143652016670939384672099881508 1.0459542725756177521616268515459858 GT 1 -52450549766124646773.5151806017469611835728991582144514 0.3225476607414949532133175526860684 0.0218811231106685905029108170818793 1.0221240653224590478050106237074668 GT 1 -6137579354171170340915.7193700761348990428593827320961908 0.8611947849246002774713934857162240 0.0868371140959888259147496277261282 1.0908410069570278861699172801842720 GT 1 -146100597451159.9429672304357908768700431906363987 0.0507632179518776636456315219595371 0.0022598162813745429247429561538658 1.0022623735195059570540678899719482 GT 1 -54835.3979597546600481101443646857237109 0.4644402370509397325858603763660996 0.0313015614449935282067616126089039 1.0318019244484785088488861054193034 GT 1 -93166844.7805570665832657344243670506330300 0.4756810969610012077054361025763083 0.0576979611074107896548727067680605 1.0594294200313564611375615844522456 GT 1 -81578515229426884421976366413164.3350856448734756640741478412063671 0.3846057404122959470240200739033973 0.0683262872712207285789192364006707 1.0707726192322795266210848911930202 GT 1 -1578828916181914155457273625116904625.9096132548610676176096477657654857 0.4588661084420243480612648051345410 0.0405752918401792771124454967368675 1.0414214364832144206925619667622361 GT 1 -283003732825737882521.5373690135894856054105176140661411 1.0176939816071517269653595247727543 0.0599033249357220737754923547070734 1.0617725631932938992636737267353724 GT 1 -24.6778524941769359092256614952882203 0.8502996809154143918061275727251729 0.0039324487235787115395313797383884 1.0039402011306970667381896733814019 GT 1 -7438183136929525235395493071247085940838.8188630806991530682123331903871396 0.9454867742707372176745980665199016 0.0483511110051188995543429270453325 1.0495591263004192883108994601889079 GT 1 -14662.6643836618084937960784534413851070 0.7751655755554629284845449038459716 0.0533372890193446933781972366061833 1.0548124150452864441985669884144295 GT 1 -1036503579447526615134395997290930159293970.1748406971760360923363805427889742 0.4694060704335230786595699697073327 0.0409620594678405529672287457657204 1.0418246422825713894958709232416062 GT 1 -79161262310774.0875337877024865464091152289594650 1.1897223528842953205363459264235703 0.0302792296691582389839313868839798 1.0307471145642820696879166732845942 GT 1 -4637549948756466643609583354981506657.0629159928313354270474379006925724 2.2726591931216416877913148719327221 0.0416874253968260613133332810002798 1.0425812759370495070847855046398289 GT 1 -401153086804301183079725036334880.4938418426665479969349904132757260 0.4370102699946254056494101025961681 0.0996991833555990932661691816997847 1.1050263307878097555029001416328142 GT 1 -17032806686794814371284.3590736683457840941366841483046696 2.7692087752770610603538030066614050 0.0081631013641377866229450955267222 1.0081966019128907798920119218296685 GT 1 -1286.0396309099289277950812643626180800 1.2369830259449904567286387110953426 0.0598218149903474200788790864970587 1.0616858631611267859013531754431233 GT 1 -1852947715.4806533334752445537755357462096382 0.0258209836511493597443047226538517 0.0292654403478596844665948945535315 1.0297022160831132607137228214482983 GT 1 -39984932330.0379814235618302105831396364719423 1.3876366722149966783135135013629286 0.0516389093106458545601832459400210 1.0530199518984568068552464248645733 GT 1 -12736535660447.3869547512875372914074444245310434 0.6324717103399476207438976930751879 0.0749812057447975798537783196628054 1.0779412235623895892964012314401115 GT 1 -28055148081037.4235808197622824759827415438594227 0.8972723663473361529822980284075857 0.0923090283940750235919444009675927 1.0968512979505751721287847263843702 GT 1 -78171091445524796027303855292900508065.1071402998865688830050662902810745 1.2195942475901345187652923120162677 0.0655590964080278295664169483378922 1.0678068926180247723525795238456822 GT 1 -11207025132504207685.3990679079485399631069700432754382 0.4864258078432324817161436376401836 0.0255395451106590507828945719301825 1.0258713407559674588324311924670329 GT 1 -2291886570615943537841473485906252.2043189855344720590272793662282438 0.3537648345007659604973270511211390 0.0106368494803383993041222193814515 1.0106938251517099813560017759909406 GT 1 -87756697736514629987037.8742018862774482073394711537364727 0.1521821511765658660266644912404595 0.0844967409938026224789744890284015 1.0882813550637522403479443166043163 GT 1 -21470771181550606887031300.4667378901600591011853013373648088 0.1038988471610827865102970356184303 0.0449779013032256592673161822000113 1.0460207987725100500225234720920025 GT 1 -18009150371452323044588.5406381716438094593776042198499791 0.2921809676884274365217283074859665 0.0588395758789018688617274270547517 1.0606416713331102616730548244968980 GT 1 -3786485.9854111368626182670705585259035222 2.8304475322443689784440878163006622 0.0052695579726757659992050004856131 1.0052834910623268121152776484036354 GT 1 -945477928421547479360.7608808214057689766801547503246385 0.6601823411739839844386633141693687 0.0412846718516491651610592342559213 1.0421610905547454461010645360218698 GT 1 -64.5759951459805008574729035551245621 1.9096639187782127433111804839993447 0.0471268896197624807707209843932077 1.0482735317476974824428680761507016 GT 1 -2905465839038618920448705695481048529.5713972519092833743024179541698155 8.8206298680723557132161876058038522 0.0056907814742112482627286784722916 1.0057070356664754188611302804199633 LT 1 -49963835455968554163.6116482671009519998338163302696189 1.1072260773157893304834679437234197 0.0861778495122420016408039395479541 1.0901193101732781166155532594735898 GT 1 -1360552829468340510697439978722125918585.5602647568073474120470739914756096 0.3586965805570050718988198304217354 0.0414081676019725524672584683542271 1.0422899126371278851987532695807917 GT 1 -9688051548780503440813082.8583682427767174223616535968694452 6.0038124511495742526020978749172807 0.0877235748232448692850329521879380 1.0918122370511289188286252177010770 LT 1 -60602637395840891.0255653560932886075975832065981344 1.3973947205816511148246152156560535 0.0800808294485604393425119142764484 1.0834694708950610199390765332088280 GT 1 -15075740649474479826762409847883509554.1645838965842587701108403555672856 2.0938549094594618338772302533708829 0.0858567395234592808443470007059227 1.0897679796829311530386299034793954 GT 1 -3986642594749888033.7340611503108014830071766540703396 2.0077154544366085781460414679356532 0.0699397212380656262923573896257278 1.0725058790622456549962948949532714 GT 1 -12643907266374502301619.2338926089835842132399666528894909 0.0996490085065032140943643898759901 0.0099596758882398584302481630936720 1.0100096052569831045323451539601490 GT 1 -472391992125660862326816094035308044.5645597388475211475657259118519986 4.2697187092431802670424091701282813 0.0827489157861737834096172018738983 1.0863740337209234030848393998552049 LT 1 -2.9718665580200941628083642935136903 0.4152455929278994037024776462534006 0.0448140496935748898937664247479061 1.0458492450926497573928448021906916 GT 1 -42.7514381000582462388473313551269794 1.5073624409872622439397622253825203 0.0162654825491285293958142796095661 1.0163992176708181293115128395920231 GT 1 -30530014543901614381398.9912288129816648407208803533959434 2.5371960137304489688866976329357167 0.0323555625198708552774957901764751 1.0328905758356050738627888564912172 GT 1 -131709695729623082182861891868482924641218.4469818634132761457733868573199578 0.1445265939440668811551373477328725 0.0558082758054084531847766381718660 1.0574260357944125678761861352882472 GT 1 -419442295.4089260929636841369820089937113753 3.4990016548505570509946303307557341 0.0631686528631516933465361777247456 1.0652520053275874688541382086468508 LT 1 -15535460789874241535408626638376714392.1156410909444414275353306335548984 0.0893293401731310979978784883768234 0.0674988095066589293350662678624231 1.0698848507965191118508789283468230 GT 1 -13274050272932412852.9469605080932573533650625084692449 0.5342937973281844820321258011576745 0.0977953758247772083352551802773969 1.1029139285773689228882951632778429 GT 1 -29243730513752943784805212668090058582480.2321539503347702948482332139263542 0.5092731742832737403369584439488660 0.0929214078516432268847255244322224 1.0975261819612422269070790815491159 GT 1 -14179156478919402893383423838.7569103051394692925335980236845043 0.0176113969992503988126917636251840 0.0587821299439287684791472308431649 1.0605806358492559973287930895798426 GT 1 -178523344472420226351343594110286879623.8367750644208288373847674465025700 0.0524851603013995305891756305145362 0.0067190485864899228868371826557481 1.0067417230175873918855428961785816 GT 1 -884595881916928672108477324.0772373955052384096469467804575281 1.7928147909360565448153086972388767 0.0668462318386919119155566609212057 1.0691852812522645197646545916985226 GT 1 -229936665534942643268319814732086072046330.2853282280760452054038915355381672 0.0838018200512187420109665789286251 0.0619122267510732645265146635612881 1.0639117594615235177634346117174668 GT 1 -2313085955238632623.3056339958246201108364683165285899 1.2907561932948910012871584453742310 0.0844357426831050773260190504384657 1.0882147291090276452894449064526998 GT 1 -2585901577308871472983353674222437237721361.1018783608262649147527282145531785 0.0155034250914262954209982298540976 0.0719033682768643340033893044037457 1.0746194226049860853098320426485606 GT 1 -193.3704378267561348385181041539671867 0.0566196534643646714179211980328060 0.0899601654488476841970276263935625 1.0942669061972695512542858290233550 GT 1 -192275988563672699858685362634.7526913756906199131046750317708083 2.4944745331727093387133184191857065 0.0014054128310275863844266799015916 1.0014064013499337185094567580369736 GT 1 -58266554332935447258246944.6617846153702222610566819042022449 2.2885164575806388370051236653506208 0.0746143774969626183581998442697873 1.0775447391513946546839605966135618 GT 1 -350723562279773476588960502.4219950462984264349545805238103606 0.3591425181927160182061827343325260 0.0756280503045768297997109707200634 1.0786407453787194590574950815103294 GT 1 -155313532322793912519192519679934237.7972858352428978834347677192944559 0.2137238856403319231528689700229899 0.0251879852971130888198809631519404 1.0255106320065833194105680557382146 GT 1 -5852419265007754176944744462690587058.0661992837060493865449470049426840 1.8016175798902031342399219715180543 0.0351699663689521759907648314476615 1.0358033241083109078377916425883091 GT 1 -292064688768084727149.5021070844221538200035634853910481 1.5396391092685861110137688322383519 0.0634300828053054052978449371595177 1.0655311019085796877966849543611898 GT 1 -2054135766055301157209954.9599974800461566903277374607563851 0.7421149534289117782836274704034397 0.0958244381798853188580484102178780 1.1007317318921936184742966204349014 GT 1 -3532839171557314607613380499327073.0133140614861963905495381007233667 0.3862029611220259818000599170278614 0.0231961972576004450323503127513989 1.0234694631317954661325302740967590 GT 1 -121738286367755.8043917412641987818246614503709701 0.6226117286178815199468613868818148 0.0938627965158958655577844180448399 1.0985645456806670124503227458285518 GT 1 -418081647426372.3440805104314462150078124599665986 0.1638201666042810247609452593809424 0.0657002293615174927899202947693304 1.0679579386734825309264595620393249 GT 1 -13771494570053.6223702929546705441691664469652232 0.6681284961240433819252170185603896 0.0707276055317544531645255810835788 1.0733533705866942370910693304659372 GT 1 -418.2048486217294784681048777062788469 0.7685790808869982486459746430401602 0.0483830753749533678064941940799890 1.0495927152711334511033707911553514 GT 1 -13468443208.0709575578618221608616809928333608 0.5164335285470272377177114758198115 0.0924261937310595561404839182234371 1.0969803869282001349416175392465987 GT 1 -1663086594937755661857360094777944026870902.5086743144730176264737827778154078 1.5779062834595217488784039793416553 0.0203129102158946568569612105776893 1.0205220544420528985623185776122701 GT 1 -2.5859698250901494320466115178839162 0.5254884760293091676247892299159933 0.0621172435513996057220235995051056 1.0641303309133635360840136661200613 GT 1 -38886040514.3722181563741384892226599774741301 2.7515533453783324431922710356124478 0.0977494620307991366931525498817558 1.1028630392064926566767215394234759 LT 1 -243437903683407795632609287532.8207758458493888045796652469056863 1.0844256519545712434844480198865902 0.0710215355609237049474013926500101 1.0736697218803978415253414062994884 GT 1 -2.6993566557593052726157938069376747 2.0942944003414896024569300838985742 0.0143536102673091983727470788472341 1.0144576198057626312804354470507265 GT 1 -18393613195323.9838278528649810751886520341463412 0.3280410658991395706932966313865728 0.0205752787725400208300924521044895 1.0207898988363740508142902105576525 GT 1 -56347151.9009353118888197157107550129089241 3.2617292705709639586551480101156451 0.0717695767825291839036533511669746 1.0744752761366030200925335905018658 LT 1 -1263675529676088.2021110860002099717316652743824297 4.1891857861650768565484174749450107 0.0685913190012284047468095571673187 1.0710571281006878330478275753926505 LT 1 -379362.3416368475051143297260867847629391 1.6990094321012643762873151097011700 0.0176022170396905549891493295800146 1.0177589783504481849133174990373952 GT 1 -1567935319775272113630565088339296.1406960329133179897916607443889316 2.2848170287336274203546461371085937 0.0259302386570293579013869166014987 1.0262723543490349918124094161524034 GT 1 -49111715625.3934811552966876994335768624827265 1.4282680853699660464621769927619908 0.0283193491883369670797260661337981 1.0287280770532683864795869536788134 GT 1 -24400270710022.2414594884925277053155213066185711 0.5334012863228629187059844749644413 0.0654352264280465314719705442015044 1.0676743408749496765887087428045450 GT 1 -73276017500404913446349895641.0451217193364091529100798297199978 2.3564897786772052221012188200033719 0.0993254354050906541345959168784278 1.1100830401595795187875400990741754 LT 2 -2201897709165.6994067776843956447291848601282100 0.0300636013761229890148759678173185 0.0381993799698864690876092604401091 1.0389481054828109244238202100633970 GT 1 -10.1858369827034862086305860577131751 1.1494908460989286153653077169822847 0.0652580585061137776337663274360507 1.0674847861902793243939952529479153 GT 1 -4116702967315044049229863812584750920.9853388271715880213485983915738289 0.9740273752157379944387131511632171 0.0237926296975013189609829039229654 1.0240802455652751882415284706786469 GT 1 -10570636730648718972859.7336352778991797397825255400341019 1.4598477770718305916663642099452393 0.0255201738157772761996331894858207 1.0258514619581710051483088246354234 GT 1 -106176744149463864438305802461850945242671.1208507135962155020377988454777993 2.0036815177831316473702221406675095 0.0324580425286060535498735877380065 1.0329964881230191884442379758517750 GT 1 -27385721688602890600892.9242991284837276851818087296185165 0.4083908774321686348850556811653706 0.0320673562676816852189274586623338 1.0325927770477225675546284573913031 GT 1 -925763279371491784198171425466472662.9254157267196185119041436264697260 0.4692329035696129712626789799708790 0.0335806263025610073633797040204110 1.0341574047162734725684758257768670 GT 1 -5985348323143171532082170542698.0445798697639911526742297235538930 0.4895490126667654174381684558196316 0.0970377688012274850286946948879335 1.1020745523548602085886275640592953 GT 1 -10512227998958524016536264635652859.0329065022687650879669028469658287 0.8131995139104692318459565281474016 0.0157879782312623674816311566422112 1.0159139358628819477538411858576685 GT 1 -539841660745888512855073274714474297919.5344095682477926198861853692872523 2.4959805440201417905709269967766449 0.0102292443779565118419887105224212 1.0102819226453864049557549644236294 GT 1 -2267411587757889993.4174380060326953988799612141605441 2.9523106555280319480834284844900091 0.0657941470633268490044133617060425 1.0680584657478498514783391587643114 LT 1 -410623484618884482884592837741425824463.7488972004184310082895743472723434 0.6981116172405442424935607169965871 0.0850221217532317211055884614161056 1.0888553907783670009673786196058283 GT 1 -119338006108887468000.6041563932066321757597427854424451 1.0144863387575955151870877878357960 0.0489470832400319190010339521290458 1.0501855747040531324151752538816895 GT 1 -1141783865848729.0328768646718905626092168683517767 0.2074153378189263767876395193325613 0.0259930555878818080249486895165659 1.0263368455784497737549367461192749 GT 1 -16399378017511715951327.7084151996208533927072898951373363 0.1856864691143367515738745674376392 0.0874026828295738742460882710173963 1.0914605502581942122347161804518813 GT 1 -587032903880578989208566774621.3574466599706978179259891849646726 0.0349112972375108287700824861445835 0.0997536655840011154791160206943718 1.1050868482015154323234572600113979 GT 1 -90539056142793799426518219987948562515.2133036230394074875585089424336902 1.2514604642335304524462336234062387 0.0077566324614438625936171134298444 1.0077868716057957792385632836959462 GT 1 -59369285745933655350854622565784109.4776511631214623249496827721902442 1.5221755339847080254079370533273195 0.0819477761876869995235602474991882 1.0855010012953096095631418229677379 GT 1 -116650647115.2876380354252898717960115594500017 2.3158245861844423967423434078706464 0.0855030463472061698889235829467983 1.0893811423182807638275246960033892 GT 1 -85916064556199983397674289760222670873.3862037510520626309472058582184470 1.0738812834233966511876944475753329 0.0250904521589096623722203171270424 1.0254105837328620991485823152742682 GT 1 -47546266223568181917155883059600899688304.7343893798356430959595766321851748 1.9185999204794844658491792757955214 0.0016195059155347310707535704330314 1.0016208187328416775663818045068372 GT 1 -60120.2167332904482002852545877114869535 0.0166246459751953025295275434353651 0.0613306442394413748228383086197176 1.0632919855746857708021399692684909 GT 1 -1867913783761661259772615214060241165.4205641395705230009045162731084263 0.5037584918401122574675952195442261 0.0762864979782889139299296608091074 1.0793533181669110516498500915106597 GT 1 -582364477938316248132588.7558581074961775914508917881795055 1.3078331486630114510861974724527011 0.0690616526284614212264805101895185 1.0715622258403330931879206516806504 GT 1 -110117789833631281911763470869691816099660.1726325149963158169971580473904808 0.2780357049385277156369761413337832 0.0478902860212555809290189368158680 1.0490750050550639720351297044275588 GT 1 -17832856490028470240932029934985036355194145.5579687410718979323865956818060089 0.1829306562544729087475512746855841 0.0794000207418680407575226255275931 1.0827296701298109743266447282600160 GT 1 -7790220458313022317474480762867524245822425.5674235806850793822031247304771945 0.0277679083070191757716416278051907 0.0303134853314196631533063580412864 1.0307824404729036790337061079880427 GT 1 -226021214903102241141567791084598522.3436358976355079913191405609279758 0.1867206515901213073161616602658188 0.0628849535416386737509193721438910 1.0649492225749430486529333508779198 GT 1 -156812000205252808658517337.8771819168104141853968797106007013 1.8351284040958488212093435022288111 0.0703601625128244958471761935304626 1.0729580393629828537738820852465298 GT 1 -7161844.5540756537982355922815614937666530 1.1220334916377151744560399906868423 0.0936748669019894697467089995334951 1.0983571707622626164313665756387083 GT 1 -285666368309981533785445403651921828519.1042404263346170065987089163884998 2.7274606090441402859308444756558679 0.0413537975352809572898974717505115 1.0422331955621298791121364052608558 GT 1 -21967635764041453403158619852208233524677927.1169902204180279184646049029727499 1.0225880463416932017035953873651181 0.0244467624153323602499628849856443 1.0247505457441799194738934230437322 GT 1 -2540774680780482496538404048245974521.4350423415636338109035409408229590 0.3619905488822934239520483087641999 0.0040960653135933815764840615095840 1.0041044771673126612669949552514073 GT 1 -90469730809548764518872256229620.4678838846917564039482297192982161 3.0723638956725383343600076822955388 0.0592186979712964379724394991836001 1.0610445765795961441909004073422669 LT 1 -244227906687967.3586504696815105302751491773295273 0.2616158050127459813731261207381847 0.0642872873548222862260513332473303 1.0664467805521240446112243565564391 GT 1 -70941594576.4928547480563892122154093688934653 1.6168633260209769458629407396940737 0.0353544583106765644900822787162309 1.0359945594311586812556590724203507 GT 1 -161137.4598744340483217494242973141787273 0.0081124528965009637299400607069458 0.0840469311343758035827298173220307 1.0877901504834128838841913614195882 GT 1 -6254821436677610309296996941602580946.6183243193454426620492847805840128 2.1255395503969734315036504643646378 0.0699422843741996358209380489352056 1.0725086349477773734476296723951077 GT 1 -138736.4841576719633706839244088113388730 0.2987897535511638987761196595701525 0.0261459275132847928935119666668540 1.0264938094730917413077876630624289 GT 1 -260399230401788.3148580342836023690527769699702742 0.4328718516856794369833734324614022 0.0958971538830777490269810280320956 1.1008121572325753383585762125574294 GT 1 -490494178591911322735092409104433410668045.4731034771312098945944538616187556 0.7990901879878561733092444736010840 0.0856617033215621223891727083060515 1.0895546483513969115561382808388567 GT 1 -2881867404983902146098250497.0409975411622926988979962397724704 0.0709382499605533434549081402788912 0.0714891077017252683744270653329204 1.0741731671884222589507257125075722 GT 1 -3414880096676640138424150379.5262392235140167670192818394315221 1.0185473490378278334159732851901593 0.0894177126300445729385294425357581 1.0936710078740276396576609561958316 GT 1 -16589184387456251.0191526069420945331438969092682391 0.0053830930755518584349026112616933 0.0798415860337972349972042296930904 1.0832094346681928652686794180061799 GT 1 -122418642717776466963812.2278749222437980878757890951467765 0.7577905071056610555497001089437057 0.0464513307361287164016195574781366 1.0475648124924687800850528495666453 GT 1 -235044246587919853292402243.3555358426048566762422119314070176 0.2833243318668773112932287638576072 0.0560438742328923416675178266993139 1.0576755908583461245943422853969956 GT 1 -39046.8977517848281000063705026846794813 1.3584647594801142875779625813077104 0.0778176409959130608247437938178681 1.0810122886441932685537107012569971 GT 1 -121393110477894745572009004951936417.0036543935630812445011890045321316 0.1599291332011699388754047866662394 0.0889794506387022487884628348984095 1.0931898250487034226026943122426783 GT 1 -736990384.6121418890245932553974967372380350 0.9626467736888895824198580358743049 0.0749421221430446795144361885794033 1.0778989727710057983982323649039792 GT 1 -11238419574751169045.6889219624155687845126104238639551 0.6769349965480575900927986284219713 0.0723290487239746215212710523422054 1.0750781874400612209486984701447990 GT 1 -45914460347902634534965260686.4563120430379519508922561650943919 0.5925343520342735874385761011701351 0.0927741572498787092879244361535742 1.0973638601377869752625568626212265 GT 1 -79398.6577651612440307097265237573611843 0.2007385683080151584282829486158997 0.0836693389347142598575221192450388 1.0873779957512186927738566378244139 GT 1 -9536599284013319214039.4089358012126070095954671147673729 0.9354037153042130043676472186549888 0.0834525469987288477014964908161287 1.0871414367183701876282218085897828 GT 1 -34362623544861668.9497687132074818187298358407407162 2.5041533997801968192307056117065757 0.0350301945143123111686448079219096 1.0356584677848196125859055191073976 GT 1 -530475926135475099395565.0891417002002294345237446010637121 2.5782740975179652854367810354049832 0.0291942290069119624446871648967010 1.0296288605726912969012317990679815 GT 1 -37926509511499301875968.5886692800193463415723130696209180 0.6833566593179290399214242180622712 0.0687254306139113878981500322938901 1.0712011264030154165975271387900424 GT 1 -18421508138848998976805477930489.7554432793735559111785934314348730 0.8031605362827569715760509198381725 0.0363121701765498855609209576626027 1.0369878647991680599531321832155586 GT 1 -338145860075226982682603450138968804.8837063701381152154678771735233235 1.8102386943972317343486117622082031 0.0977330765539057100200297271015817 1.1028448786984962133874414777393153 GT 1 -2854696038663597737556435635293.8066422202890243808722459530928802 2.5974369971999772603809434755182285 0.0531618447567279452402053134329631 1.0546271029957929626982491005586484 GT 1 -115053099369810543864509726976177379090.9765194588708195599368659205164859 0.3881083759180405778420929773823457 0.0134233460660779300793018124183565 1.0135142536147949872204900692989635 GT 1 -11158904048012502.0366687912349713407038578435277300 2.0071577877741879315244485630623472 0.0709318218389770801641753357800285 1.0735731540979111764649043896278087 GT 1 -89734832600475560.1855038276008271769886966006502921 0.2939732748547946218212615723619581 0.0786488988606950434763164959124420 1.0819140980651658315218026557542407 GT 1 -220685647080654421817824622.9350270676744598312689226563928618 0.5051322338735337306827749129226484 0.0586353361251437940585328630483290 1.0604246864378100445950464965324678 GT 1 -23854818437542231941280384683453354179815288.6847307795657828529848079306346093 2.3208849403514052493297323621251935 0.0625725478625859784810885677186320 1.0646159085186556827617611794669019 GT 1 -3320381371528965448970294552446666480285.8260684554120941085976660214227633 1.3388527119358527968618660249737005 0.0306864285070958690060566183275967 1.0311671162477391174212825050435206 GT 1 -2278.2655593333803171883633562929477666 0.8800105582734637243167122479511256 0.0166757857919483120552689140485062 1.0168163920461092298273919646454449 GT 1 -513406938157988814776067133563320.5153980261885067853189788313196247 1.5217643459833804834060508655340999 0.0337195716004891221958612393235614 1.0343011883478718592341421947049843 GT 1 -1060758021448424355410919182347.2563089564499252989538144313582071 0.1924058844472638962507349402796128 0.0986637330416165970618457958087358 1.1038768757311687108179755687239873 GT 1 -291461.5546593056520026131519692480752971 1.2408208776863124244160996925341043 0.0915941819319640477976151316931464 1.0960640640288001201561541310757662 GT 1 -431.2476889420114107293137649406609714 0.0522305674743501623506890459367033 0.0667956663104784079959289065554269 1.0691310949434572962611053815811644 GT 1 -1841813049702737814116.0284020143043680507030482382172926 0.1904802471232820243633964480889348 0.0554867428047397211990524329572129 1.0570855559344629132815682821792599 GT 1 -529075873417743602889298657230973.6268351724190297046621915622130234 0.0123127793859319124072714998805358 0.0145088207231531580229866820122398 1.0146151029349008279483081009031024 GT 1 -181993594.3779474481416937867184660804910177 0.8375044110655636917441541117368674 0.0544250204854224679419945015125280 1.0559620925845843186599618051722814 GT 1 -133308295151112085039423950472113312876.3723703729078841461574690829658312 0.9747499129842458783165334585817979 0.0555957776496391202710207399365787 1.0572010028464653673657474100465219 GT 1 -4351519402624130398803611877313191690080500.7160268969241281164910712451007212 0.7386940122567682018597707008378202 0.0783523682326524703154987080518274 1.0815923066007368667495459689393911 GT 1 -2089973561851158.2285710011183306412484426314573073 0.8178897963169109341365560564041620 0.0058326916343768297641874380599792 1.0058497682142197494007212281136034 GT 1 -12653873198302660.1543634418119025473209202428670644 0.8624720707650882732367536790715760 0.0895892752581443636990847070102157 1.0938594354269795745710346823599435 GT 1 -47494352313.5672759540479010112192408003356099 0.3802457035519963067572294923348236 0.0193804911566629275719502560231887 1.0195707551603974511932428296755032 GT 1 -1203.4823429952101994010212650278186685 0.5582287485501601452465418919428503 0.0517183741851359520558831039850811 1.0531037472003817370677714190449366 GT 1 -2973083930584359607.3158312960760580666112269642096980 0.5058483277499585843171463384096424 0.0017493361375321656615397987554732 1.0017508680127636811936660520243811 GT 1 -46427837479301381746944074785696662.9979006309673007984840903505194161 2.9261737535672359622540201365613292 0.0847073307407101790235623628279421 1.0885114077360190464560924980653798 LT 1 -657221841849785631947905192077855894.2401409615824260755168583183085899 1.1246871036299950134999740668556947 0.0664806283197051571046430094637302 1.0687935645495827758206517230880897 GT 1 -3117377244192089262733920874419.9259748706090749217168789971204996 0.7894860855163464229803810711062453 0.0240043968491330894095464103657342 1.0242971975475660331531303793247466 GT 1 -177786019008963653.1844992398114655455821189759716891 0.8236365757416151610902514850748755 0.0770113549850980134354809521080660 1.0801383468140027390304651368702912 GT 1 -24142998038478390501453664054629229671531551.2655726647429010362611843176442710 1.5581953784414234713465798334555964 0.0894258941015310908395492255000140 1.0936799927931886894967796226276767 GT 1 -2016035338611.7848990711140916772019220272503864 0.0312420839983184403067102396801368 0.0455447766053977441955283318395516 1.0466145479752551979060846415243125 GT 1 -618.8969495198222932505814533377205113 0.5398885437105834130797388978703625 0.0740213729122343475737654676832700 1.0769041255010669066753032759664918 GT 1 -1381663549628528004371996732695741466863.6283580757373890334878115846321284 1.0823999666060639125118874100126888 0.0351221808801640945225928964467877 1.0357537979702172801924679843111792 GT 1 -273462.2950897721752067777395491807798880 5.4755725900799025667325764080209702 0.0408132721885541815539646476019169 1.0416695120915774065204194744044371 LT 1 -14426474757619622321440019066147883257.3380399291459838943031341492907669 0.0064941852388918356329477531606173 0.0022750603335585956140039053128813 1.0022776522151901888404030197299064 GT 1 -308459040963429683880785210611194212.0145907308901519088582620766845702 0.3557188019306107842996803890343718 0.0268056304968776480710041631099859 1.0271714536391129801791591861998816 GT 1 -9305271.9484918507226712742394810145361669 2.5908252746982690208821243009264203 0.0098705465719110530514634131955978 1.0099195833635071515130429789831113 GT 1 -1953068934525385978144312963203206017938001.6701940077363181368406257718304078 0.3055389076954420821382307527863408 0.0994953325852394593075966445676658 1.1047999312426785787531891708475244 GT 1 -16408838070207640235.3137308305249089362356738868061080 1.3113839766516631298372992993555434 0.0355655183220355216794559468415621 1.0362133787747260945726504852186428 GT 1 -239834170240882156652.2727753124419362916400761738728250 0.1265242587345503149702454708648261 0.0161024169550880181013990400671450 1.0162334696182500289141804807632693 GT 1 -30247804.1627887974935867812374246949474731 0.6136733379192280710270521943652579 0.0779913307506672199612000486378280 1.0812006528132047768257086148558594 GT 1 -70498596312523946575733907471683.5106668486490857271202864504122565 0.0353207291302367908381365745561342 0.0397731165548876528037874029132646 1.0405856855214340186834202742003665 GT 1 -15917687233181581819846940987.7615391349099198050904847946005220 0.1482911209514609123913925256082621 0.0716828846698370687326455913375004 1.0743818854628334237540794427210645 GT 1 -39180519513532137298645726.0031025837411875994637369332294537 0.0148692474160698454982871519674451 0.0245310708517601493905093400029224 1.0248369706325464571081108079801912 GT 1 -12905092477738015673483647364235499256523347.2116344436807351675054159099449335 3.2409563791439879669019944540397883 0.0877155294263898274218122224241612 1.0918034180559681294451145619568670 LT 1 -455473299053379.3717274308562553879772971385253663 0.8500890232214676136887341887724443 0.0671286307416344737393737339534032 1.0694879555297278788702893939582014 GT 1 -43461556979.7891498355746303543695684529359687 1.9627400425064697611814589389998754 0.0249399312306072397497997622512058 1.0252562008877970312195108339441225 GT 1 -305.7240369947048965690806680349066849 0.0051704040152811455164691018251882 0.0934810018334171650873637592810272 1.0981432912941187226497820715359223 GT 1 -757072652589001883042498.4470038162211159033276141453219956 0.1943914424724243750473214872271477 0.0213301543421365149127175574636648 1.0215609296331085713938519225075503 GT 1 -5915255344094777606254067284174054988.1272716225344021265833874671798113 0.8519236276549126821241652548464263 0.0114449632683537372366347523528887 1.0115109609040273131504963269211466 GT 1 -3584118.5124380929131892571670864054010802 0.1434378303384865420066058108441253 0.0005039429715244731645764248640886 1.0005040699934600813517632381245447 GT 1 -3418550121539753082087.5506413050173680535331504461567976 1.4692768859863512905848951074085354 0.0768694153482062388310203204518096 1.0799845759904388822373811198903242 GT 1 -210.6182218371296710430281740430096333 0.3299746667007726190116697040081053 0.0332657083931983704256359807119232 1.0338315972879242120333902689051021 GT 1 -2226243001482922772821717.7449135654452265161231903916516406 2.2736037396835566611487603265678362 0.0774956175264500353171963312938909 1.0806631524299044465871430838455572 GT 1 -5590395139466743.5475658321734648259388296099570392 0.8793242395211169804129318812859617 0.0126552441706834407641542724120951 1.0127360038523033650817482609478673 GT 1 -5267644186577250.5627798305588541568264530801606949 0.8572261675651598867791586707208261 0.0866444904061988004692611484484860 1.0906300879857446787303641947543602 GT 1 -73603.0682945332690542044937070219830622 2.1536089194646204656061549141360323 0.0043660479789347721091518460132734 1.0043756069999884953500288742040542 GT 1 -300062580538530.0858295378435529009716048038291783 0.0005487496377096295208030465854286 0.0290174804628055946052413745921659 1.0294468133892197789784851845591481 GT 1 -335262119774361495595585850.7439595458779607119534307557235276 0.8418481692219193717561419924422506 0.0048495053904028445571338377141915 1.0048613023968862117163435250528167 GT 1 -496414565663559151870715882685617188.7135493292419422364201436513475306 0.8753029127635327162790845346978560 0.0331544274571809944444810420476083 1.0337164937556590179063950640612154 GT 1 -785050613341897195911029102697722020243421.4522459628435444029862378083685212 0.3492183030066497439109993886523934 0.0637528283405193322522793580854576 1.0658757650797240447132235005136076 GT 1 -8324968085884664045310120.8631106619844119395916416016234223 1.1329888655626006801799538221214566 0.0992121868239330005058801609110689 1.1044855505780286597455359991737474 GT 1 -2827583191687520446948635609607978717.5808604894919325998900546379677309 0.2861365279249344095381715916725068 0.0404461161785818412756171684840251 1.0412868068814749040427439773464772 GT 1 -252402235874438778941089854101.2783123659712392117767639833206021 0.4583559368955258001552019514598419 0.0764866517875119241638115853036429 1.0795700255084927713243479708445295 GT 1 -40849897231867129361389238.7245697551077063732410545681135903 0.4347772654600244314284741844712407 0.0477073962315541224477031447298676 1.0488829345155993299120102696276417 GT 1 -69938796.5619328875385980966078099197622584 0.7892874639581293984811446868769984 0.0241176199121774076014272843934197 1.0244132120363236175290237101693417 GT 1 -60462944991527718.9544529489119842431974881907548375 2.9529824636418991555189053019967432 0.0548218777050069566871697516476615 1.0579713382481422497019891742007150 LT 2 -142672166778845492168671030890412851628441.1543134663596702687406042579825745 0.3838970333303773430511649731695951 0.0554576034320190703889215656644959 1.0570547052047187550293264516398213 GT 1 -137525274888058830847526726805330.0261620498421825854203076488153433 2.1575484627352977932479685113812302 0.0857287092515567404058126808277692 1.0896279345580156738233084324242226 GT 1 -1373990967272044140133632416.7851187970672757161232234093322516 2.7761393257479534798269680847891816 0.0373271131617148773110486435665956 1.0380416062612940470591939334502674 GT 1 -39261435597711116909901891166.9586276489604722642126956258922302 0.4183740715300731422767773677098413 0.0868024974150976216523916543744907 1.0908030991255686300636075133031180 GT 1 -134.7620670883800239956093090879765008 1.1972506209331063911984637265751353 0.0869180937859416251897778683834502 1.0909296913331371308957412628501177 GT 1 -96577314865914.8688907030934316363249296225964522 0.0340565793428554192598642781000175 0.0808542106451700733495808319039114 1.0843105300844423657610897701196723 GT 1 -2203107.8888193872819740152698476940821237 1.0323139953580901385597832025352632 0.0596337960089097268594332970090155 1.0614859008702455866341159908131708 GT 1 -1590942192520.5160338087929513135024713528815107 0.2171220128514558590117716890804717 0.0716243630239340603187480038980611 1.0743188468735464267962011372585093 GT 1 -684742454547471292752768657835458328594.7652189329451936025933598309521057 2.2299246281087251888098423466799249 0.0596672718576862737209693346325619 1.0615215002404670694665862863362970 GT 1 -15981809874331232353.8170734047525810831640938753403988 3.0511443951110952244795723175639783 0.0408825770247338636023002954657180 1.0417417684500713532172465177909864 GT 1 -119550220390758836170566539544133.0708318163953094147602386662400738 0.5118816475868308221728906043296375 0.0519566736754478902429417104977078 1.0533550748974596582327118186038832 GT 1 -25827460928487309009304082793056691.3644973286167232279873274715072383 0.1518841666901440407842741789505802 0.0168825720731809344185050173922467 1.0170267072444492599230560370215076 GT 1 -571022.6110604433630264106717945025702941 0.8083516918117699739328441704875350 0.0587635491937357836954294562166084 1.0605608948653843923822520522147827 GT 1 -303558793079199503655368142751.5454849324774273151433614690874494 1.6684608840429642573368665059127444 0.0563987124735917032576614301640033 1.0580515669662835846354638810261562 GT 1 -3266814783.9186657057426205188380119064489586 0.7777999416893851560536042992007788 0.0699334838506650403932341942505402 1.0724991726512443481644302202855896 GT 1 -1035964806120801.5173618944490901600664909408289017 2.2894498997775304764275860932960234 0.0131779033419356277156492751948319 1.0132655023420638348086217451383324 GT 1 -23251202989672960322.8133029287754457831562221454992916 0.0277270943330696366138573210140724 0.0766664127614188032956424520862221 1.0797646934812673036312994750891774 GT 1 -1402197151797.0746399751877343342726427043424744 0.1262995984778007642087969518931616 0.0161667189684652774429101894149056 1.0162988261307427352269177627437152 GT 1 -22174908148.1435996361955770265800750054193823 0.1211563607017116748439783458961002 0.0933674842159102860897907710108940 1.0980180754842078830595590513709273 GT 1 -5255213872715072659236707.4236268527629069094425252274604156 0.5305296532789548204570475813616237 0.0174864411651565002275203942955913 1.0176411349931369450931432293464701 GT 1 -7483885007442608669954961.3983612592764467269309837904421773 0.1670891568617262268817642644571539 0.0565204697244989190845902665161406 1.0581806099303448687180363493745941 GT 1 -43175160681607711821688767533562007984969.9567508716467691191483497722320162 1.8537494410149010368441144518833466 0.0862024700098929117130812663631937 1.0901462528659131203477970813760566 GT 1 -1367104.8743145502728353521237145768870208 1.0911433229807719118594345031089928 0.0287092066955559561412274349389444 1.0291293773540335300349324925058737 GT 1 -2427145739099497443756.8556435742862627483209226046771889 0.7430498262887599267343532870031945 0.0423753603379075325412010868334046 1.0432993944281180712237393847366167 GT 1 -49167636597813299556954222664689.6841970556837026963566256570214347 1.7849190366127807711876119130725113 0.0276963837130213675154634710228438 1.0280871608615235061488850368577703 GT 1 -385411383142689602.2888132748371443973722534093574891 0.3123171153312740680922779930926605 0.0918042644135396055296430334344847 1.0962953557857508679273403758156077 GT 1 -1805147976664172738.8800813471602243499112400389744274 3.2119134114027190079493372616740855 0.0909933537053263341179642295517565 1.0954028731760816766200077108814227 LT 1 -6140.1773503771470244273643671807452275 1.9820487973969526285328829674061307 0.0589573338387200393217706595856156 1.0607667991267896867114722184808989 GT 1 -4538551.7318579530070346176719308758651299 0.7429846172207431268620897516234731 0.0285144194577306108518546268285156 1.0289288527428634173951661177304776 GT 1 -86408549628444107283171953298277985132.8595466265110422057369398591611605 1.3541325533474892168782633619593119 0.0130043545755894869478614483215653 1.0130896514890765001825496700006908 GT 1 -13958995216.8281378709978736670092228423933521 0.5521525015163138918743657269772867 0.0805253725330253892422952627869418 1.0839528291553736665644781520341800 GT 1 -1459392287412.3833248849601455925192184394853149 0.1933891621678833183786228121624638 0.0345553552083264442340947365087861 1.0351665119610384751912018023299959 GT 1 -3660670572004601040357438858666.7217901041983986666480495484643515 0.8138763778123521175171327834735866 0.0836916433544570892769895633456895 1.0874023370639686432983723911914089 GT 1 -1447027218548915.5580050376537354964239477362155506 0.7290260265791739681471206898594408 0.0050646273259104030889594405405571 1.0050774960193644996274240212214583 GT 1 -134861567926229728074975.6580779198714609563446699294160055 1.3159928662712530133003207786015512 0.0395615223888034169722722296095383 1.0403653512859856423525015068659765 GT 1 -114003917504545043797837099434410834.7337257143994001945344460070918032 1.4574713171629306442222308886587711 0.0595112002624638058939182345131935 1.0613555391503081074406853965040339 GT 1 -434935194337406013353124447298598560545954.5454586925091380639082576810571465 2.9817758202756046523491867365734955 0.0140102811133333206246246148739218 1.0141093515264942860796472482815421 GT 1 -680582199220051289641969592939355688184.7852847539011724982261433472106457 1.3368323620512048848508445921414585 0.0042770849672648232670247577862013 1.0042862578600116375821533538816802 GT 1 -551478.2169342556383247858528344058036193 0.3108812947611167562207329285259283 0.0830328394789660776005845714559872 1.0866836192305812412490668989772835 GT 1 -4066525672764388865753451178.7662877691778467718479419179083459 0.5993448804673421401208831248352495 0.0200236426937437637083411723044487 1.0202268328062344290301769259990730 GT 1 -22319309035436.6594854836687512549248373011246749 1.1225582953531317119329969247287441 0.0881614409687240302041854507918686 1.0922923231835053983188624891275035 GT 1 -9253506.2792839868947816579545062321134533 1.6350541587082155799590052995603784 0.0238366386829919133288819976627314 1.0241253281766719923509875592114758 GT 1 -241307561826906553581225179.1413780444244731138305476833445544 0.0421310719657177092454999502618060 0.0570259086659132539500145786024321 1.0587164714513693898748057441484041 GT 1 -801957257184053297166430.7500921922784156676234269303567567 0.8758098822961118656130835691159697 0.0235533314038694493128314063775045 1.0238351450097617131445890153254294 GT 1 -30941923692390.2681429983953410500904263891074731 1.4833702445404675192345258033846643 0.0060066021205654654471076695991546 1.0060247143200208771895899992328590 GT 1 -7461064.6883771358141954981856896767631017 0.2623012238995737605002366338494678 0.0475764220761565601153261615442115 1.0487454083509529768227604375133128 GT 1 -39698657167073589532992108598.4323014806818862639185838703132015 0.0633928027187577830739715642216146 0.0501353557571269272942310346561410 1.0514357842830976802611595159839541 GT 1 -430591.7497430264709098621995776568037243 0.1356876911427149156443836639455948 0.0669708287927721680555715404180168 1.0693188125922386736324651718123790 GT 1 -1465560.0312916056877981503398668305186575 1.1813463344978632594026674141206922 0.0825112208103444256558888146992792 1.0861149288942388844554838421334604 GT 1 -48673738752956535554951631741359835.7184225294373211583088567853304084 3.9234791620866723081471025864018006 0.0765433033461145293508419888338457 1.0796313709090614850141129162607801 LT 1 -10849880070351537603175984820985904.5352502331173715239650073429014552 2.9875605626531971519060153931855613 0.0627714935602890279906912400227212 1.0648281562087341444782803484619805 LT 1 -5314572288850713424.2859090232947502144488009866600731 1.3491597584788200003053882184865225 0.0134414534398460639223872760749398 1.0135326075256310090429019043762510 GT 1 -42097233069257303109362560498150262789.8037113145411631956450656987562737 0.9242679370595452460015885135363226 0.0017000548224443781621219243965026 1.0017015015555602835527155971351193 GT 1 -242515996340779578947939038.6098342152368654213347818511755246 0.2883349559772675682353418162360437 0.0337396341825766938659861766744437 1.0343219512545575333927237506158660 GT 1 -708484273118692852888397748313020982.1658435587318606385922742682773610 1.3184439505216080457708078628275779 0.0431632759811801949610586798959632 1.0441225143956517993305071051978829 GT 1 -1379561364081.6033348114935899835378638812157771 0.4319459837776597112059537905673159 0.0334937799435803815207468701034769 1.0340675447037414805585682323159031 GT 1 -84640259209889097104838405219348680.5887871804947620153337250842517865 0.8617351211853336193050764434208857 0.0503218573346891141459264234668790 1.0516321489866956721973493570018630 GT 1 -20497960669084746689419086129786226.9415281545513319630266767453959418 0.5032386700385084440028079253082351 0.0626628268283904933586524301869075 1.0647122181723109155124476473376081 GT 1 -25804866910512306.8603750777211219308184918141561937 1.5005262166827342829405058786558673 0.0505498633298460999796241844893778 1.0518722654640641837083910385593575 GT 1 -38782478069625536623511660.5276443369793864140868748275046423 1.7278400322381724685608584125187869 0.0626902544593023922991903825861902 1.0647414798222142434544661408095855 GT 1 -4.1886928965548240006671250864253251 0.1323384725115954479115748651853292 0.0915479012327038054039454745182625 1.0960131181635880888030181854907273 GT 1 -386319981781743935.8802427264089298917541850552685375 0.2484974050104888650868110030661225 0.0420447666809719765305822258780481 1.0429542314152041330122385159924102 GT 1 -543682799589171496632.8286576229334266071133803036719975 1.9976537078195268841590757789324830 0.0265916505243081610845759093767089 1.0269516039786300090387154267580142 GT 1 -54843209652987099.6032910134606466180768497680003323 2.5995740811302120801126178084398621 0.0424230883546399240022633149177012 1.0433492356750716247274635800606520 GT 1 -178760385235046974254321194476189115.9017149612605440077759348640878075 0.1872595129476445333484369007170649 0.0660887680846762959651805627597297 1.0683738860458398369024417590743334 GT 1 -5940541936237434718927832490401994.7672478938753904734915729964971513 0.2081241263609613713242544312733457 0.0553414210488791074116498664373794 1.0569317088853308642371424908790208 GT 1 -187932331500327986.7250112011370884180388005378132556 0.2825167418798563692250048595571985 0.0319408879227491448549130435792121 1.0324621273745171673336393264428663 GT 1 -16676064139696479209948.9465347395447403005685180901257970 2.9238101617596652764878513888609938 0.0692633245270410607634865695382921 1.0717788822351321955363387174340981 LT 1 -41997652390366718514.2644925423037747325303410379927069 2.8925198147970932637532867275982888 0.0972356279300495594456028867191390 1.1022936986301111357124120499682660 LT 1 -5456910839202504983960884.6337241083934735351626691640907188 1.1441377433624724259769277295076197 0.0409594256631976414369052695022122 1.0418218959876491577847634605932478 GT 1 -2367557838429140337504.8869433003275919707730258425301726 1.0128805811311271226395991344653506 0.0053980596515017740987257479361093 1.0054126818201339796266824620358351 GT 1 -107883869955616921.7125580704266794151891936221504430 0.4031864103940568763041369430099768 0.0076327301935514523678800304715012 1.0076620085563674607520493786686114 GT 1 -11456587197665989066180314.8476935686242297350794400928603502 0.3891348822765753618179747730780633 0.0095268596338905709235166338507051 1.0095725304589547815648533367515560 GT 1 -6.1370400608196225430927356149227408 0.0406790611471549634055094699524480 0.0899884771786409529546644036801673 1.0942980171103554589989226401418951 GT 1 -13294505581.8594973216104797600528312755662408 1.7353190848887046726441127003323520 0.0454966218577775155176818391616822 1.0465640966479276430567720852736997 GT 1 -54648445.8533153642587890221202582053412798 1.9081489761896468036186004133177222 0.0383450477715806851293547568304716 1.0390995701738322607575979368332466 GT 1 -18335517.0816023850359826233130329150204067 0.8733012141700451106556243447337750 0.0260940753100354843546077899712562 1.0264405665649955501136741836567867 GT 1 -1191477093.5468171621629111944280849410803892 0.0629622040842667595526773473652230 0.0268410179655576218733578515346247 1.0272078164800698064065033779058032 GT 1 -75143066.9443326123222687474297465238432349 0.9885012494403514681636958653441991 0.0009321265660367794741335554949549 1.0009325612661556813694479857147235 GT 1 -2863069783503032386567935109.5699098365809375850772929436017100 0.0154079349976528260914452197884617 0.0568316276872983332069794849996122 1.0585104626444562720561352125804551 GT 1 -2563408522274166930449426329561497.8868107043309622720906954393945933 0.2931122482632301972753121454419090 0.0905257541786162805539800285992274 1.0948885982787834403278166859969573 GT 1 -14945304249864872243063414453945325926497734.1059089339681452671043085241213286 0.5149088999892505085305917983052050 0.0754688207608941444871087414918169 1.0784685032081216896480425384520903 GT 1 -83801372961422525011690620.1514068813927864984139020098360136 0.6856152386637261856969157996404082 0.0399452762595595683014564560531476 1.0407649922486233684227888997326573 GT 1 -47439318434994392.2790095868141342343327673541810707 0.5543991785837414122960527496928775 0.0158156330104179742894307731509668 1.0159420346536695809467452976396016 GT 1 -382790905838150896099228180306277954.3913810005959912153489498344622459 0.2106958438725924244969906903067155 0.0755800864249068105551861066420643 1.0785888586513558586191081792438831 GT 1 -14133173719530355885149118139268940.2742416121498334121121737257944758 0.5735818238536526284450378757264343 0.0241801749750947583237739572024773 1.0244773151180078016043990536902471 GT 1 -14138117782611529789489843487690367373870.2943839182640876155650228387761426 0.2192134499073509632786535310053697 0.0735865751144062052668874786002645 1.0764346808115909922446847242124530 GT 1 -2770141.1487044787299676586707024876249493 0.2612432179168601065216453869310121 0.0284840491487224542865444092743013 1.0288975915127306260037403573127890 GT 1 -1093350823582354641.7554627179660012318378762768013539 1.1425235652141628269419685540840068 0.0024883977085305129483310990843753 1.0024914989158681660340970078056256 GT 1 -2752457145389.5278390506826395705889272580283973 0.5719370290656684873168221004606667 0.0197532456583046816142106680202313 1.0199509488667508286132299330414961 GT 1 -1067853730244294530143024124650770232.1517722418549971926050302924098342 0.4570115288869045047102127747652943 0.0259626193588998611035834063525395 1.0263055975944147164153873340642396 GT 1 -4673351924153037184535491.3477620738654989341113723061476696 0.3189507076504162085695631766519091 0.0891692868574090748696752776065548 1.0933982242998398459508195547654216 GT 1 -25.7133832686094334310734618322983418 1.1347739875820361718023428594586315 0.0644554496631481067101053554351358 1.0666265124490739319396179203033848 GT 1 -884039699375466008944737753813175.3140474822469467335848281882913965 2.1702354773968577504832631688605211 0.0071719981097972983989643872306216 1.0071978405235345754712399743814036 GT 1 -8635871019182258499232591350652.6427917210423393571224116079493697 0.0718791688211582035042910825605152 0.0090483530234578003106141391169291 1.0090895379953581720933603236457220 GT 1 -1159310422.8951415649466598089864782820737829 0.7013390689238465373076715393675833 0.0763655357946958535715046775004256 1.0794388871207845239707327608324705 GT 1 -616842806349053117849050128238664192671.6248287460187472129656980608835648 5.7954625964976882855285211532946340 0.0562633006615689228655768899336264 1.0579080719344476877913275601052905 LT 1 -1532.2551740331231415067042781643333526 0.7213974216186503074936597166174835 0.0815979158403204633463206340747951 1.0851199840817798652517206640586289 GT 1 -1617377418229083028733801433433192.6040192720765297494149778179282392 2.9202677554695823693814967746082804 0.0096150438476817246025220764617272 1.0096615668356688970210554954871349 GT 1 -79407933637213683095749212369.5476707684913941291727357996095930 1.1020278460374581114092619066570110 0.0500107402505060124601160928874618 1.0513045999783069179308923451731556 GT 1 -21926739338513792586.5596438076075389680266901243026828 0.9393690114489722321011506251331009 0.0017622407172634243284686309738532 1.0017637952900589924422165900045892 GT 1 -7105829858176.7850836662772252927371219732134688 0.9140136916261883072271791457151432 0.0749277948281117692440193674157755 1.0778834848709228577929027655782133 GT 1 -10410857999076704518041594555804711486.9847499270272055514840469231247012 0.2852492651000811596604281359633442 0.0119977609104225863664678781519046 1.0120703149518398749015915713522546 GT 1 -1.5730729936045510662611919788377690 0.5640165167314570456056689422042251 0.0615167573854341679055574213893828 1.0634902786135827966311564672574048 GT 1 -75979762365223473140.1016923070205511153627280238221895 2.1161500903466858626934434737834960 0.0692660585299437061683775843731861 1.0717818197006798787595268315507368 GT 1 -198980669804185156422864817626100878966.2183533989826298261583743367201984 1.0324457775962129619341331152386596 0.0508464024383632826985937960640826 1.0521846414544637752532506625060487 GT 1 -1700434825261956011122485.0251095100910065404518620574547009 1.3800570698047808926282431130733131 0.0898893287191309481088232850204793 1.0941890700738000594832887511709973 GT 1 -124883265179475582.5410722359072180576695501208213236 0.5566135919181474319978306633742834 0.0959302335071175666958775651022633 1.1008487462438376680581704850717819 GT 1 -12524441076771907.1327772809112510703610132547264293 2.0872964883769280157183611045954246 0.0173930886432903250682675532883272 1.0175461255284731340820929790550488 GT 1 -15748270473728643574370111435152078675.2220293879997998243201710979080907 2.1737204092568902357576112152261291 0.0783246864557367219188298735173176 1.0815622719538094399682836328972428 GT 1 -520309129351747.0525828844388864650958254306826138 0.2803729421754583002146862072715993 0.0937761324240530829581124045585756 1.0984689090072770373505792615226202 GT 1 -66.1049439681073517187038690126714147 0.3102854723276769602932906578498559 0.0703822447985624133765526413483284 1.0729817932374602717862745590365638 GT 1 -19527.7507788831614445515683346075436279 0.0024643910228071284152925709111677 0.0569279134415111994719682765878280 1.0586125554119437424231894482954093 GT 1 -9987387229547202500737837457972042056220703.2719681330586325932272382632824667 1.7498204878471266430207247489139988 0.0486437703994073833760836402226672 1.0498667023481512970149666835625394 GT 1 -175187313345962.6100003848356711816653028975145270 0.8766674962379359494664559900827259 0.0377928609824153261291114634596486 1.0385255302706177185413458742245187 GT 1 -2275652598900714421107298755767915210241717.7324780375986020084654596212465198 0.6686745550945225658467021823924155 0.0393406901074918926163396060465073 1.0401354491084695768001056072208442 GT 1 -11767670161386735755151298432636243412292631.7368441550022044938949887334923262 0.7146951265233700401136072377738577 0.0918101550240296001273507563517715 1.0963018418650867226674440195092384 GT 1 -6137572821816725750581543965860667374.7644536159994276284973805378996290 3.0711051659643788595949538238355693 0.0541991355129313476253115914816875 1.0557232347454282886446732473727925 LT 1 -378735787183121959674766085871.4938680535769132392801687268005965 0.7479774081082981635396707925420567 0.0943454621067441888540316008395948 1.0990973504078810636413290198427023 GT 1 -878048680728158234582306299.5083430400000277138237647542320782 0.9916849294141950485837932879967172 0.0983376590047485448875919833684349 1.1035151737986385299470028425208325 GT 1 -1106296455544258846061.8040755146839332265802697075665778 1.2122808305028503554765578767837418 0.0768815692787374407810135153738338 1.0799977420698032324192304188157543 GT 1 -213422026961737062595766367442222.6733247382958259779689014604334579 1.1506085716957099109013318154145674 0.0899489452896062242542253215340934 1.0942545769676604141435835164096428 GT 1 -1115591944638737587769840078.8453076669390800622707265029937575 0.3851657726084620663076293282362943 0.0236024172242989408812474708989077 1.0238854161160266876615736192004276 GT 1 -16733982804851631592163890828987180466595.0381386845927453749238506959004593 0.5434425450119925568446447043807636 0.0961935651004468943575026356422812 1.1011400622034026106432063112770457 GT 1 -193510496981876657025266805937269.9286350930671918717344451187251988 0.4639574942034814341965052601772706 0.0224284017875907736949387489524594 1.0226837435518879630230335877932752 GT 1 -1518795614574376540975892.8644952386281083177360809225638454 0.1218588898204901803527739185348896 0.0354234769758573777455499335887070 1.0360661102043668544492105171254771 GT 1 -6663517719.9383247792954305829523936358898226 1.2324994981664618978609106865719499 0.0256888675466039498591094145643480 1.0260245885118429883635013183705379 GT 1 -91370673513870922.6351576581850641158012779514926520 0.6452006276438884778277896948939796 0.0357623436572066258375395542652342 1.0364174832795553913457932977487244 GT 1 -87235336633627334473637096345646359024.8796348805930361049687419683464775 0.0364891336982896355560198927946093 0.0017676955523998057450335627678507 1.0017692597698280532568351529582971 GT 1 -7764701929140049602787061276475.5519244811385536936896394672128968 0.0668823602220420818182166228383979 0.0976704020492415552941731571434500 1.1027754177370610879118716266291499 GT 1 -26402887243416674424.2360922079086272813725668834837412 0.0230732266966938697834378729249684 0.0682803079705154956425922180794604 1.0707232691588090998009213813996477 GT 1 -10873938480252506623998726.3516053954084599045623869903101030 0.6596105173349728008814693069489974 0.0011776714016191555636593368858209 1.0011783654015069718013497218982659 GT 1 -1735497377.7841864787018217989918009569304716 0.7099842976171941714882120990869306 0.0844300909235139209405615713196839 1.0882085561483621730362962198649746 GT 1 -5944228.2143862329436498339324554531278254 0.6119031214807181551164233712866008 0.0712278771423047921543252185393355 1.0738918631986572110019900890151727 GT 1 -18919840038188489536022121730.2866647888625469239210615101398447 0.2821349166625320856339423024724577 0.0967328097771928370837797945508865 1.1017368776128638583237945837457103 GT 1 -169832354584315895805487423362611553754.2852707697320201801966358491234686 1.3332664506287734720957114410918827 0.0455977460446611141362257670684757 1.0466700465548039477570697210502946 GT 1 -4432332488752626097034213380.1391401693909267050359715857007875 0.3115745258285096737102354699374250 0.0080904574523305431208049227231096 1.0081233628029606068309379618351245 GT 1 -1331643341292824685865.5642695047164621563515222494174420 0.0809104145611419308901287845501332 0.0360202024122512049460466021363080 1.0366849414503712270664256328290615 GT 1 -12137414528477335608004743.5014469889703953467851135266736591 0.0862273212649149122184259932305411 0.0481392429794255261948362310911195 1.0493365185221904975109557020349089 GT 1 -25227103210935782138360389140560630.9332067178033370643114870789366653 0.0159684558047183616517553588123509 0.0835324736742866713719808650165875 1.0872286445988402367684792540664958 GT 1 -263432754575196340580517139277989.8624054764453726670665779030785988 3.8150029581535053973229260413359716 0.0553529310727743467014301011651372 1.0569438932811254856317192985879885 LT 1 -3266730.3854776108200077982830584622420285 1.5100607907167446302160178797754768 0.0737598512422385420398357700324153 1.0766217380475499297959383194266970 GT 1 -24483661.0633615668928937649143903466171658 1.0189576365227503360507665835070840 0.0146619932113699712375796547915907 1.0147705425738185058689130979572721 GT 1 -259483962868.6805599455603419179630580271266576 0.7986184395974299851159150808427526 0.0785986045824177528050533327266610 1.0818595120278290195179599419281053 GT 1 -8660263492288195562497.9238472529364248401211503081757706 0.1190655642109185684729283214150217 0.0660171675043822470067722173760667 1.0682972215478971252123323814956350 GT 1 -787088339340929121567386623.3797455073134331291072376964937377 0.1417209082483699041131745257912101 0.0238954123290588937742507724584784 1.0241855388112984581133571168037796 GT 1 -145860730951319251921.9761668344896721167105345202306806 1.4153349532365615896498704767324104 0.0414311098757187306460749737779950 1.0423138462317167513479549254237586 GT 1 -548250996998532.6489036859925171857921960691427141 0.3427379204624355489448191190990183 0.0554741236875847661207141510397025 1.0570721955789982693163524258692750 GT 1 -32048688.8465578551963216207292493071022706 1.9970279099899338515380449276807396 0.0500013422702576953793343039943540 1.0512947073046094322419980410628250 GT 1 -555515771887757526786545813340772106.9361268928495630557302177189796649 0.7517852557286067290935727683877765 0.0189107889491055464498176731191379 1.0190918846616634742438466014100281 GT 1 -557411927201258805.3524511316683242947013469630943950 0.5127627901688540108810967190863648 0.0228126153111246375498450891208234 1.0230768493330532569903080311757356 GT 1 -1972346878327375053572653599231887002857.9492389585096014743595812390763490 0.4256519614528798876147631408062540 0.0895839660160468593453873852015817 1.0938536037441222392143444274946849 GT 1 -516469326139.7267186347005138725483197940722836 1.8769083843562820872313883923109068 0.0042040686455201780946425793089920 1.0042129305883066072972008147421540 GT 1 -35982625.7793393685946116678107371237280202 1.7688352461338901642977026192058280 0.0121251962938853382318974847482960 1.0121993061601785668141371284130219 GT 1 -3272.2929575252925442498940401609073050 0.1637980709374695826202219929281364 0.0987769070897104387975916349402470 1.1040024461293061647996311612176405 GT 1 -47690177149971371544668323406583.9457198157484598793766091105412812 1.6676369210295737901780361902881804 0.0379301386851900312097177338840666 1.0386682100438352731757162730205209 GT 1 -1865537573717425870301.1369348336172149732174609367112916 0.5885379403164479707930311485475045 0.0037131051983528669146553474077776 1.0037200158855025719649187380264981 GT 1 -1503729391721354800190759.5900334910739254618943534603244840 0.3862725792756994618981447834721191 0.0337429270065500186894943524432760 1.0343253590623290939617264185303298 GT 1 -52806869.5150383856527009469555645959483534 1.6691112737386950708320019696793355 0.0891191238216746837651112223015335 1.0933431518766954457025041549422924 GT 1 -34868955993029940526755059618253357626.6991379210492468013807082772296349 0.6007308142924914827448460191629777 0.0948375822913683606554108341983880 1.0996408843031401240689307669202075 GT 1 -94660.7206293681393460568477769186788747 1.0833577668976244942316422627655780 0.0198886503330307305831636690390906 1.0200890916628700652581615786448130 GT 1 -32847958076533992469906.2086525546906516570396148554315717 0.7686800634507676102479842061949022 0.0878041681307011333363637322985352 1.0919005840316844583860293993290947 GT 1 -39075126878735224725977081904417392.4307330596379617942038705011010517 2.0691258923192123486113548169895486 0.0797330863852784856750898124782650 1.0830915275224712182179785253049386 GT 1 -637715930118231.1578336670789581434161168563180077 0.0326669427738771473775148919482101 0.0112471737280664327501389954486292 1.0113109014750959502891202808224424 GT 1 -3760112000086765377072639960456419.3480016112159878100307084176284453 0.5631094286154771642035883928492463 0.0894186094935929491677288596575049 1.0936719928086156412410518824551206 GT 1 -14680809640376114231006237484332530107724165.1499551301727054028762734723517718 0.9262659880499974091672748152242719 0.0408062126422027010215697705023175 1.0416621521895186748689503559199777 GT 1 -145820279010267297816280877673235.2265385577153320902218452692534471 0.8472617901047094379486315033933083 0.0745288802204826959392989842187427 1.0774523524478885846636588397962994 GT 1 -7849034104068274963821329320.7502686550273481468654970964006165 0.7243145976971648100767210203574609 0.0092810683123483615160241106156240 1.0093244057806155992060657373186115 GT 1 -650490581223753253916315382736622467787160.5904997306206932599179739071991701 1.5175164106384306238971943071287669 0.0292272829479546934129619164332109 1.0296629090968683487619903130233020 GT 1 -1640509387004481966772844338978388614692.2909016073984194102411364478043513 1.2896311729026074708438365706775210 0.0296497664809755742624987346142387 1.0300982071696336605897924982756217 GT 1 -208339338986058.0162444996805899111582829528408263 1.4610460277300364269630440187168816 0.0043572485116721252001203547810470 1.0043667689844106541076177681384328 GT 1 -29476414765461484.7388316989944632167019047943936063 0.3827447205372942509487916988958321 0.0422356411209759354903714812862560 1.0431535032098999083398251437170127 GT 1 -1274364973089.7041131886686898946735592088598869 0.3256963491636004817198040467324775 0.0432571845762238956143220834564477 1.0442206640603858224394317532911485 GT 1 -1317.0958046345145111733600472001058450 1.2612179631828717507490104202153201 0.0596899415911658663527532193763632 1.0615456087353314918128208643329122 GT 1 -1036181.7767986008025334331308107055148647 0.1715241045042211687257419300789792 0.0667775415366968959165756611188634 1.0691116730471811762128906241503917 GT 1 -267049990525588807597549543751.6241300536595189797753588029036132 0.4034093170117961556875088055172683 0.0924196061908593728077812081766763 1.0969731285473970837372880408681474 GT 1 -2.6333237763700222917286063146523764 0.5300257991950634739814954541032094 0.0937995612415279311030032815185622 1.0984947625752238690917063377103512 GT 1 -394423517744342699.1476382117738675894870170515026412 1.3670597520351382894494420263140670 0.0117059011167734362987802401645460 1.0117749545950319556227649689818087 GT 1 -10708214545649290867123600.9616399377543923781194009031473661 1.8462605626976383098160546788283802 0.0095661428992474625060290403942018 1.0096121923566736302651304976811735 GT 1 -1508286103197345179965803834004510441159.6293502260953700177662001468695592 0.2113584217475861470762145081035308 0.0066484520110965809160977261843874 1.0066706514173349103878291127914786 GT 1 -77758.9934978966538543591503035446800986 3.1227320002042669087972171595427258 0.0610911690663285837258661274775500 1.0630368961450061567412717258802599 LT 1 -664502090.6102407571920401771144462897560245 0.3212436820483252878706582057303225 0.0582321035376520019970216441288933 1.0599964291795079855940073617490382 GT 1 -8959997081131.5474778808122848489658952292825967 2.2566792667908430229414399792399911 0.0262443873461059291879464603823319 1.0265949178560046212054343120897129 GT 1 -28134578518880530.1237586159835598291844721219198334 0.3281382559184251232736428640499915 0.0344159980706643804340704066842431 1.0350221773462821075777536558295636 GT 1 -927130424235503356376773.9164714911724377847451134348296424 0.5274865631445918869116885307280486 0.0905427645633449836753580609427184 1.0949073019901705608786488885644262 GT 1 -3042650363203176.8759407664997619317959188021372246 3.3397049729994566515996555199338903 0.0251349491996020821238461868669778 1.0254562269992490428437347032591090 GT 1 -166134.0193931880907810495053174144393148 0.1411692464041477584894667340711060 0.0386319570678777769213395802617213 1.0393979642119149749856601483208976 GT 1 -28361.0921613994694697143360054167280431 6.9897428347017447440249062343301649 0.0889952174458133108503222539289522 1.0932071319509020655404132632975370 LT 1 -540265931905803162692284764368.2213584209492190798059775841148133 2.9854390446703294548483677198628752 0.0481298720849116874968499413792858 1.0493266737541215789089147931820077 GT 1 -448117597153256663953233594678.3597185136120610241448471221239942 1.7958466018053145817739069727618795 0.0919511922384212125926170864678841 1.0964571487841003885325630132440025 GT 1 -64812.2768740892754178398508106859682823 0.8796600171414982400982511660927516 0.0503247120558404559310551217499227 1.0516351549792669735827258290638064 GT 1 -3165654371466776005362759716387069108711335.1344637588974975986176378650299871 0.4470650582802993030671922411138894 0.0025869507467949537805607453082627 1.0025903026859938250802954550238867 GT 1 -135549031357443854394747817008796.2322783002967765511612442586271969 0.0811512989864069543622336238267537 0.0626463731207309014517153000086274 1.0646946646561155324207655018722002 GT 1 -16100163165355408507326901209474594.8030948523324097878361342160128437 0.9707120598040508589128866765585011 0.0285222547893951313970417272656992 1.0289369180846644798778378819323718 GT 1 -12974161362655439.4326766945950856958923028007600547 0.2832146753669293383463957146185604 0.0832399351621604019347349259659376 1.0869094932659457760821370585740590 GT 1 -81255591834630770934781900018942906.5512862840068518449119303335262555 0.2999260939683185476711285008644620 0.0666069277040705782647075400583778 1.0689288675038971225472933388796130 GT 1 -38131282265798275003459547.0174641040954684783911933063060937 1.4315279610899102340874971181088770 0.0845648865149587145643777779134840 1.0883557928735785066837980814580730 GT 1 -1102307340060735495346430600940229176197.0353164998931828710829131985690482 4.6753879743981051658495957818411008 0.0295735461753108510131070764605417 1.0300196609811917223009359442879311 LT 1 -26718104.6366783927270859250383835487566946 1.5114454516166663201680908045048125 0.0779251738391635715647371431724488 1.0811289023618866107790012694986341 GT 1 -462240324610.0117311694464462638920877992722742 0.0412217632457095981390538767168326 0.0815647625410200086532426857543701 1.0850838858395306937937766904673086 GT 1 -350851.2859259049771045587141336160447611 1.3590494756049884331167251198499156 0.0025138720510659730709782409180370 1.0025170371329304730831674751658097 GT 1 -276715.4514709157954225313367718629542993 0.1244293475018699729321985514144555 0.0145157059648512092311470886632301 1.0146220895684650796289279401197577 GT 1 -3612393148565420045355794.3889448475157628086072598685308940 0.5318355689489620082466045208290352 0.0977364767483607886885687428811570 1.1028486472073194421700768482924970 GT 1 -77699921899.1397059153232583601179627360220719 0.7990692797131723358629714917912032 0.0992922352166221651636241326358008 1.1045744193976041354569189473452207 GT 1 -5322308.0030256813777852127677545906287987 0.9825135114865160254422791995567449 0.0020231574837891794139347849291907 1.0020252068314598580205559467956242 GT 1 -345255629553194330750301220767700881387.7311880843951957993178157421377469 0.0662249472533649662314914391277100 0.0003876696479042118469523420655023 1.0003877448112084804277380297458177 GT 1 -287805939496081657565934653.6630391600391655272027534074626115 0.8116930612507862340083193298236807 0.0548147551224611439922268678931725 1.0563743443736059999483461301703090 GT 1 -140523981650223772508100.4624542533825376298699871322942064 0.2576846425493235216809444243318093 0.0734689976183117177576421880388708 1.0763077719906656959272106169243465 GT 1 -246735014.2139964458848956257254820600344335 0.1109884822591600639817595409138076 0.0624879272631478079339324480744566 1.0645256436345108985835071130796698 GT 1 -1430342357026922710291675.4574871835064645003296452582486600 1.2351767572974899348318414044593923 0.0967557595120595545658462088497770 1.1017622854065570571864391275078223 GT 1 -10236.9661169617283249766641309715282812 0.7130770645858874043522799814218042 0.0411534353731938102261148393027668 1.0420242120746768563933396297678618 GT 1 -171760592699488584067634358704890733511049.3180141938539014157748381539545518 1.2985468208926694901301370396730470 0.0203223401362181554321971373734022 1.0205316799294209508974420488164463 GT 1 -1004178353909.2731870740865653906994092580605238 0.3538241482217618033553178908606908 0.0992867990497260030637175148099087 1.1045683839766785611254123120574676 GT 1 -29.9244323485880337018626181696586511 0.6379199280826006514547619814768884 0.0764573434315467579739157849299512 1.0795382902975497746196147200244442 GT 1 -940194032996357.4508778774343657089519010092158090 0.3720407570561551362492790555269079 0.0998738967404433267196558430172382 1.1052204107401379117259940114199339 GT 1 -20449122177214685191974784483744.6257360377972587828177222104770171 0.9813029487462419086372700906439042 0.0555736118438133646918592195524022 1.0571775324455691973663295954418777 GT 1 -39401219470997786956382977553186100482940.9043681723562777052019764118522771 0.8495018830765732504392332205283852 0.0082737887505141480194186280819521 1.0083082065156781839582038802960535 GT 1 -145.5772235781952216213830016573059210 2.9224471910430878640516609705434522 0.0663347168492287713471264362389439 1.0686372742004779111892592926823406 LT 1 -1535172025621572407770883010752419.6133710729775462488758595572150194 0.8127652705649671086312820446092843 0.0242008800761011180414612647033767 1.0244985335029396815162650434592394 GT 1 -134445151149.9776244624663134063480066066016049 1.0397179484577358650985111949850500 0.0976645281706348783929543701427221 1.1027689080763987764235998553766393 GT 1 -191829361048767930367229966754742344879.2537261444172929239923664909729150 0.1996257880737912671391167973270380 0.0950030608463981157505032572156384 1.0998237174386465652441708187590173 GT 1 -342312.9011546390839016178161336201415955 0.6369060759996238820197513343780483 0.0339192571693329815280085303974121 1.0345078635517909352199617717631435 GT 1 -3474948.2440671330761703699328670877747482 1.0779276546533357018459526868656172 0.0447130961023878685234330809155228 1.0457435606899022020257563295402924 GT 1 -102439378946815627632.0306853189583358899432254056832482 0.1600876672517344402842267447221123 0.0469855506070036767271845768646196 1.0481252134355356436966967092592454 GT 1 -2047389622.1003606850441256916674068770036620 2.0224175388297104499008744171207715 0.0307407318796542955327627811025005 1.0312231403201525776975118749559775 GT 1 -431616389208332960578701427300.6755568457438448087139124422768528 0.4708495499345978438994552905811719 0.0997722588710209418723251927989076 1.1051075019696235451011007282430359 GT 1 -440988564467732.1024339965831320042781962422041235 1.4604900864843620446250854727048156 0.0334156561343691248862841586799273 1.0339867168204422273940955603337352 GT 1 -765533542762171186431.5698380845168645234211053349155058 0.1203153400781375476755056037665599 0.0534790718931698597600823120401330 1.0549621975293127462391531622711275 GT 1 -2073.9018568229616216505144599509424756 0.0109870572475100549608791801088204 0.0566775643196981913476364789728039 1.0583471293620571364875789911151754 GT 1 -37153148095878830354.1387256266454607683163007593517175 2.9877208048206837263858527614255176 0.0096842217257955212307295091002395 1.0097314187592225621068668032347701 GT 1 -1966600.1474072729132330596415779146346773 0.8858310830166695533278277941216325 0.0229052109590099782232910970530100 1.0231716111327558118691839307965381 GT 1 -711817633237553129953014753.1777273737204747649733483725694190 2.1215285644832160378458019555434021 0.0375128007961492247794343293195647 1.0382345124371040030013494066577282 GT 1 -376883748566160295339674934682460055189808.5939864164614066624946813135190176 1.4940102505797513216151908699859471 0.0949743086806306808064714716174872 1.0997919474869500605699662079985779 GT 1 -496986806166117301372444899056717.8695770226441335704283328926206650 0.1665857205089293111104928358875377 0.0846155141112782670903225200979280 1.0884110988101653496326530683743682 GT 1 -253.4380564214527634505594122941714241 0.6963848090763502319462735810035655 0.0998429827022212572799854965666163 1.1051860672106429092480142081434263 GT 1 -133968435716325675510971.1436382961303264703998249975863815 1.6105572620212169810787576970661293 0.0563184838598155058511358148957091 1.0579665467311935838909276003722883 GT 1 -10512976698393943079268377019640372042472868.8146238724460347391149156272741492 1.3098701306803440157074599794260916 0.0669039789195169606221909115580311 1.0692471669453548750659062611567832 GT 1 -6884217752065632065666461133.4133503892237511711170655531620426 0.0223809597052381516702939340418582 0.0939584729955786104977728312317396 1.0986701384438552776755054548505507 GT 1 -261997625359345.3386934821029529604433553395715543 0.0849886711479386665636337499154104 0.0560113229639734558907329712588902 1.0576411075737990544779517303522602 GT 1 -16001468.3004785888166538440950199335560111 0.9473090772617596420947296916982756 0.0963582618566915574444608508494939 1.1013223045040747491755497882636184 GT 1 -6273441295295866701820230052793731.5986623886386486691154159339032802 0.2818711789088610262979527380195926 0.0657615129329576448846342429403240 1.0680235338746612097771867070618124 GT 1 -10598278567278.5089506076060588343629879743886768 1.6602273530034291470797068513637243 0.0096747698619395618429706179541977 1.0097218745118643717343858487112163 GT 1 -7236359154075002310570148.6923422994153881338995036516746301 1.0007388882854200838688520799103321 0.0222509530546471360730590987536850 1.0225022400896601921223746172111894 GT 1 -1544722914004729.9524342246572917297323774116872136 0.5585649957044567537722464441506370 0.0227447510878309329675244999228595 1.0230074032186938503582010374877324 GT 1 -10263854478966374556495.1206436820049399991490910104297009 0.6404401211197600732062102119157234 0.0400748947948587223133964465683133 1.0409000129749267866990773957144776 GT 1 -76842548330170802153974393421.3242143702399299081845984266839863 1.5909895819931813145702942481658414 0.0317326629920201952649676824895039 1.0322470552397229972820481259388775 GT 1 -2351890784462667543739.0725476122254824019442293702390392 3.6129575557873625048326526980757077 0.0599971691558705625009048799363173 1.0618723921863142259274510759163630 LT 1 -20952.6227979698456338383604664674841770 0.3037211464171769049333944592951034 0.0840461189321678727792420683285184 1.0877892637547414736252812849553269 GT 1 -6841401275996285889.1827614829620215840616820471239263 0.7404816658572302630453399069233860 0.0228985123062091884290624125165439 1.0231647554725741144122895732822016 GT 1 -60348250845500.1086233161545559498614975913344769 2.2797077716629730174744472849533011 0.0331482285195802819600079202219754 1.0337100822687529685363967299129890 GT 1 -445755521330887753050.4240122088607661920878372742691827 0.1656423088728486953846642297718235 0.0827506407442057693553603699526935 1.0863759142961373550782270979637942 GT 1 -11631741937492349226729614182308526891.8830641800055357426020947258513583 0.3288725352401791506705184779222613 0.0147229111828324802999947832523486 1.0148323689260247309381922780624854 GT 1 -10235690925213816684243756931025256733543.2783956878911792706137580765546528 8.5434257877739321874009361988895672 0.0397713196730999506423518281219694 1.0405838142135822781437044530793562 LT 1 -88939097299420590934832862124.5298022616693758385169697356508639 0.7184682962888414001613034044411928 0.0396154283702882413190757471416173 1.0404214792895727290457586268340836 GT 1 -2.9198465407933904553074589435856693 0.1467652322746068429651354427751288 0.0183608035716656340259838102375555 1.0185314552209531589268520897313922 GT 1 -27170814855825905.3864168844207771246828008087270216 0.2956437340985609532274386412522000 0.0264893588979221224812629170572494 1.0268465234622087201869006597598368 GT 1 -2500268669011765727895498395293300076641.1234995686221891137392118984231161 1.4724853829316569220061062241844976 0.0886621525109310705938211674168474 1.0928415970255813584285009794829698 GT 1 -25376012598538601177666364499.1983623484544208318369242699621900 4.0552036227390633277086211429647744 0.0135254899085277185939224335461265 1.0136177925846944267574087748590038 GT 1 -482.5389534175292767676302041173140197 0.4295135443600816521977935762764822 0.0759673182178485989415448834524525 1.0790078380718495999943804742554594 GT 1 -8529171072059.2498034652677611371768931130187510 0.8184940860824418809387978568789941 0.0763850946599568079874631220608712 1.0794600633253448202625204542955534 GT 1 -28420.7849127841832249378689851210930929 2.1686488669774794332706605656296716 0.0507830073322222155202858214697205 1.0521178524866079553892086585080954 GT 1 -4748827516962566496495079404280821087216341.1371294076445889670066617408982282 0.3579248430778187968459232640316922 0.0791849189305691154354388459989392 1.0824960434837477650626853791926862 GT 1 -214424805733544303999604759895522.9746609768008939101274198472811702 0.3261923271266607629604934942384417 0.0784226386839038643665142808813470 1.0816685538863901346360010464033267 GT 1 -97.3172851078563149726766955974474852 0.7266355459774779498004562323275259 0.0569335277927418612552203708337801 1.0586185086874383617466496748706250 GT 1 -6629379291401383601885320109341058444796.8547760412802169925181621840148235 1.4293569303887725182140638116769898 0.0208438135193862919154907653197537 1.0210641124238465978656578245031330 GT 1 -40404295450967001307.7843539349642667403940677851688466 0.0132333365749036770183444753688134 0.0873627879909246547593552697467356 1.0914168355048101563045436759954694 GT 1 -9652064159237734854902306127425820212134092.4038723501233857780673632067708139 0.1467072413855216834632470184903014 0.0499711193694434081476489581477516 1.0512628941858975653389815580612269 GT 1 -1682459578695505907407503842864.4493813828992775988097439074200889 1.7314258387484198586807568508095351 0.0009192573717964271282161757186119 1.0009196801479674936110376930593532 GT 1 -3976103444838790984288041040911806874647.4492916405683944768390417077917151 1.4820382183945159286481950319987114 0.0707852696782110758510587491677937 1.0734154255191239055288665094105056 GT 1 -1094949409197832375185972.0015514791242304562750690307183360 0.1451636712213596889874830442348781 0.0218608572754804963601768855925653 1.0221033463426663725829264022885555 GT 1 -6256268798.5209076864848742236768818459252670 0.0719304076376084351091605126010887 0.0629163009930074248478392343960547 1.0649826741514607683430760073458152 GT 1 -7775784202538240454.7572980180601247767606449209416408 2.5870617743147492301353582059692169 0.0007335418933157368349308044608184 1.0007338110668117684237942268021795 GT 1 -656863863769880.2813818120400827393741287135166092 0.2658663555018743128550489238884721 0.0377772470919922757102277065386610 1.0385093032410034885184645910539823 GT 1 -3667152864927450925747961187486977.9224136132963146886376476290624507 1.6512785955262839087535784499881947 0.0170033904698450099326281813449756 1.0171496079455422863493579614697310 GT 1 -25049435180.7411802663213268080944140513605367 1.0304141990665390133086988851709034 0.0597624827960069280744504822105435 1.0616227577591772751123587732867347 GT 1 -6435651570825563.0582102196314527215687713476847938 0.8786924192298484172869518170626539 0.0420438993231563922012436269233897 1.0429533259893629742714769071367071 GT 1 -2836.9718814198802404633399986438134686 1.5793031746747970371364910623751553 0.0595746287801926981587380119989435 1.0614229835012862829962663784934291 GT 1 -549853709349088701237992827.9955428465084531656934514308257881 1.3799007334145957828761836970391148 0.0106586973668431549387231637204906 1.0107159081732252274729415772633118 GT 1 -334504952929559007242564614720375705.2603149339319936035310835597548022 0.2985937812157766070040797965839024 0.0599356418331929034977413067503190 1.0618069399268851440681553254613917 GT 1 -619796321777.3906276410994001704755910299902402 2.2212602020362522707563672670931226 0.0275628192786561087765220353491490 1.0279498012352116288085264664334132 GT 1 -52275892315288510114.0368058304900841324624850914571218 1.0985510192403505347438169440573287 0.0549953823740879528362589330469874 1.0565654651237060926049755375840502 GT 1 -2901621215294941782169163337385023973070.1755059755685654322272702652623416 1.9407750093421346994062374473653607 0.0459902893377846829414738285247789 1.0470814286944440631326528959513902 GT 1 -21834339335364881491001153230.8911116794632016390036316131343838 2.3475115809894535255197732643557869 0.0988528763788151108288263133811508 1.1095037707351477912265768032879639 LT 2 -1388734.7164331506144823386556016021712518 0.0271507765756704952867608591586946 0.0012203990459938830374071568969081 1.0012211443393415160223739644420245 GT 1 -317648939472866162399827371690563102570745.5638065296236818999978222936757346 1.2000474169785845170466275819151542 0.0924338112313211849761923853340212 1.0969887802204888828190355903317029 GT 1 -103004758754147703501102284935.3931133366612808561649418843080592 1.1423276041844642851305470444336726 0.0431476193502372960992749280823591 1.0441061516218814385043099211869878 GT 1 -72925.6966883807453537040824958214104180 1.4116258892315240554193347747779102 0.0254943392542016205684796342014710 1.0258249511793577031702485715497397 GT 1 -3000615869778040866529813064.6959404277244831865105284819026317 0.0053108212493226520522042778095117 0.0938919949628124457033612610252415 1.0985967691863844658364799495410527 GT 1 -10936357354757062107616402549.6640389755888510129307990317481532 1.2272746138566957606811910711397222 0.0200378261178650805422432046629257 1.0202413061418986495138068287898921 GT 1 -542405247173067253098179468519486658.6077487564971346418844369974430831 0.4220314345018145455411428119762121 0.0629369880384220848842525384711495 1.0650047503798525243058359663970572 GT 1 -7376899777957252335263243.5392510146603436446772952326273284 0.4086429598372174476155944879325348 0.0552390039960049711402455665700955 1.0568232977580915606302985606989664 GT 1 -1039649714163337.3988315286315348538184174902320972 0.0140200354464781664679418522458528 0.0527674342600442957059063031616232 1.0542106343834914591896977411504836 GT 1 -92182922925154369967323103731963867828001.5242595990695062774175101516460867 0.3858122254789315487574364354071913 0.0064830989020412321849449073437787 1.0065042054611236760481679448948708 GT 1 -3587635835887561069042803478983975.6969618069510502620433635972797576 0.4052186604199005824125365803072554 0.0594134371628718541044978191889986 1.0612515953087959167323566484690714 GT 1 -306392544167668153329691252339783288.1090231322128968889956312387797269 0.2832140573486362625108611229390465 0.0240576134355664894256859156943959 1.0243517244707848871941497770758621 GT 1 -16500072582282912972341399183909302148953930.4889932281679349782603407614523306 0.7316798904298042579210150088088389 0.0847063589646591504960423038525016 1.0885103460258493989920349744831743 GT 1 -1232180044157315.2133489503647609966506456834239974 1.9958415342853515910548413056028149 0.0388555815369605763855214615738714 1.0396306019446546296999230401602744 GT 1 -1130.5833761283708301636659518670591945 0.3569465047295432645608652374466201 0.0063350404423071488675298572554660 1.0063551919632254988108069646783272 GT 1 -143016068179.4063298261493689064502779153366409 0.3193115486937770275636052862219335 0.0179444307319064032852696391372512 1.0181073843793206323717791300702317 GT 1 -145895870484721375212159.5050116314419793638385001983850236 0.8006875181842802249548400245261531 0.0253178593424801732676602512455896 1.0256438707189971120935471101555518 GT 1 -435739800231972268787210.2981943730493203381285381472354175 1.8146386573014481986787550976165742 0.0689392630992430783663117341945573 1.0714307654863206909338424290960570 GT 1 -19276.0233992628924820108034191518211668 0.7968722055280106981769947995076162 0.0751276984701837329112771648045687 1.0780996034000202020647389699600508 GT 1 -59697431.0726837149516696271270615959604912 0.8917274388451881171996564055805520 0.0953562218135439444065890917403212 1.1002140280326172605470800865849278 GT 1 -8164159478854967499875.8559829365075232640322943104839700 2.5049360526959768041668005228712820 0.0345003277001198982156331165504882 1.0351095165233820165963930804080843 GT 1 -4365630670290838072456719075632671663504.2744008423042842094909870147899640 0.1299581788950489786587077336479582 0.0039530404715202912739911460730601 1.0039608743880129759054504098487294 GT 1 -133584937551403689456302964.9522295514233113930519873852548153 0.8707711343082180888992772506320293 0.0657827469146109232502988617715676 1.0680462627851704415284899128771346 GT 1 -2359355831573.4232422460882788644592582954119653 1.5989362253717157190195899075689740 0.0451682922310196553081295353634366 1.0462201762618028167958140446165097 GT 1 -21870810146574636731195.8655153252061250893825584487277743 0.2147555251482048527470342030701929 0.0165709413803769007402313038734114 1.0167097753055965903547647291369323 GT 1 -6387322771751388545.7221759870587210455281210287885450 0.4127995185171918996965705015748871 0.0539420121321041016471074982462756 1.0554514138512951496689545235196975 GT 1 -36113845454.8989159740790870041963343166290367 0.0259079308950150616283722493447625 0.0982305133909866635084132480532549 1.1033963496631786559033650266250396 GT 1 -10049354712166669198673463728412335625.0792933479753903975139206576854118 0.4688646757202882299842123607874581 0.0071378567570282959265691526424311 1.0071634531314673433127465295110150 GT 1 -21547838092418779838601272747904498184978.2584196527692336876726098289256319 0.3252050015961419084368094787851761 0.0356201592441441205640941234911521 1.0362700362989757782385039030592871 GT 1 -4070237500398390.5380826583779406828428276398585793 0.3247624253507273950611752255039385 0.0975426536539336439128895074235700 1.1026338515583772825738570418852927 GT 1 -12404051511506765944215029.7486920249276388765329416339782977 0.9804713045867402757428936640059691 0.0954834465492518625983831766111340 1.1003546730972838128856782046079917 GT 1 -222850365217375761190584419283521582610.2339517090973990931165797300939195 0.0139358945479236742272429120355541 0.0323614872794182860996220719517222 1.0328966987227486151903965068760381 GT 1 -114727209651973439568295690.6246317721222224493811257464499703 0.7244403866282854600916920364758273 0.0222514533506133024078572949565716 1.0225027517711552807098855728313549 GT 1 -6935170.4794531943930909804830200396990893 0.1812159646787671501678047476265991 0.0753675708357026585288925883199593 1.0783589943200681433074695454553793 GT 1 -64673257084770738.5655892229281665617668385532397731 0.8226360827589489004636810457156690 0.0394015128649320648934580928321648 1.0401987646693012275897600064333925 GT 1 -2965676538.7826947412247276402916542660756249 0.8051067493700770739691490522287578 0.0603143736364624237190243624059526 1.0622098996944192405837162900856517 GT 1 -40739695989173813857614982.2028330372177212703544096519768138 0.9686657546034462220353466664809183 0.0114652752903502219053893228799148 1.0115315082988834696724345951882872 GT 1 -12080709322128874390.8981177091932886011488251706615466 0.7788696468201521463200660935909027 0.0562949669309368259716559720522550 1.0579416266331990848674367695761388 GT 1 -175914885666548684.7908635211325947157972008690009035 0.7250556468133277241625359836260445 0.0386999537484576934023207993580747 1.0394686957968315744369461926124592 GT 1 -10650825590088595517968519184503375011942.9854181576807713736397566579508189 1.5172640146325014978140386448947737 0.0348718175779523573802458205178561 1.0354943549390390709219101569866016 GT 1 -5199387744.0876424883452848596687542586587744 0.1183078144761940246069916124803952 0.0443400749739126186621259434099431 1.0453531561767392669793535338618799 GT 1 -156458228.9646938833027406986080063133292850 0.0158123736893146380498617199828054 0.0150796935454276706477384614359118 1.0151945482359268477747144124716465 GT 1 -2971662861108087441.2176692363654602567203016575940312 0.4191473548217956641705934009731171 0.0011121953414577981897657652331379 1.0011128142896666814244405465530314 GT 1 -398110602846735.7190887618215252841255673845521786 0.3826643800911503435255582738560040 0.0069816621215763249191495159506961 1.0070061479590172312714119159469970 GT 1 -286861525795.7745851880093213671729369599128357 0.0074254353850392657401248688436650 0.0406973785481223444273255201809599 1.0415486944903566201844388792740208 GT 1 -15941257196521744086061646.7688800664780010050179489581681589 0.7994840026121597966654072269414362 0.0593460444469473997230255230888665 1.0611799482064775456781831221243650 GT 1 -12857517859708058.6170972927526711232010367903862127 0.4081834950429169049431174493216615 0.0790421048863138400900374484461307 1.0823409602608008464470082129672751 GT 1 -11796236.4021289446443361683718794343112231 1.0815671587457708297999374381013628 0.0051352825595953397403338119866255 1.0051485134387179852934122787852048 GT 1 -1079094589013068628615096079885.9130448197021961719528205323481581 0.5408273792793679256747948795669546 0.0504738460679083223489355626306713 1.0517922041569751162100781686762596 GT 1 -788534131996676150.4273964589001295384438706360418728 0.5250238735899213190353905797902257 0.0676085022751294051518260900998244 1.0700024905613055614419299824979594 GT 1 -189858769504727190101084268635184726310.7579736501098737817454028126624856 0.1027481493647693264311392405820571 0.0221162763330705461068834404269375 1.0223645079716334242679194922873923 GT 1 -2851679662828313589185649325.6427916387416465217780791038168453 0.4413276085503493392860598574107423 0.0294976903183098155805852062477975 1.0299414964875061121686489699501314 GT 1 -21232104986242917.6864932432965836895619122729403519 0.6788209397967563939608977775566138 0.0001104578329791653524485502394260 1.0001104639338948653329402156007084 GT 1 -30318429996864572624975378786305.1276652067966013164089820370841312 1.9107048984148109243092224469218901 0.0275236286187078533355032509834441 1.0279095005648695553594060220488345 GT 1 -129909250085894008016015812468794968434934.6307597129179588655103931848921317 0.1516494387121204675804839219913662 0.0533096942211587818083062188011760 1.0547832659136204494670410259890350 GT 1 -1510692844.7430670866997802017526292872915230 0.5544384912021951911422416366179745 0.0502514925847263765318369585606209 1.0515580584710214389001659823842995 GT 1 -4599089628933536284861.1712516693281584838086145276495504 0.1957742872663054727608938658760794 0.0572144737763700852855905981423665 1.0589164599433591840488901434131229 GT 1 -27173832804243980077958336281501.8724195336830933396673387651385683 0.6824589870747674982519050702858740 0.0737334939730582737070361654106679 1.0765932822586177058736124457728738 GT 1 -35226191.5801792063445838740088064392092751 0.7031847282766142456724861214397919 0.0356798572254548252726514547407892 1.0363319411901870020698854513942355 GT 1 -626871430172361942427.3882248216242376346864381810359425 2.1789988435231218063001293730480645 0.0921009825388050658755218385434284 1.0966221208153923108213530094532990 GT 1 -11708419645953860734884380974876046047490.0124198130860216258652231235589166 0.7266697290019835063478632201312256 0.0763788504100865795487991730554945 1.0794533026843822455132884229641359 GT 1 -39837819320273940368925474.3230146324099262526942611724085886 0.6889493340667945459369439765247271 0.0588495013527464217496925583634180 1.0606522173844821012310295155817873 GT 1 -113641480414498079697.2522445187787329651403849227690485 0.1958401315661410477038668644077322 0.0774542625659026183630261068848850 1.0806183244221358420649465120262208 GT 1 -171071225821097422389216922058080676.2217565507139322991540783813670558 0.4714040130217938834576997565267066 0.0988774326432029568598164526511353 1.1041139958234773270280241899776200 GT 1 -55971690402397808.3729075773259113251273816485547341 1.3314731185485897433328388926047075 0.0207172315204675309160181293778591 1.0209348441627405422635256421141665 GT 1 -8660299902200024911316384760159.9906665882059733767261648005274811 1.7825125404184068761606251253061697 0.0249265014872077497723221955062143 1.0252424277354088912429873984859002 GT 1 -6588186221691569323744132653050801933.3599256186443631528595239164091164 0.6553535144475548174652503598323178 0.0183725165393195741727214159208255 1.0185433873418148456959399857122137 GT 1 -677893898539834130510215942148743083242.3640635761321692546262167996832400 1.2353369854826599329295908710210689 0.0005011838802385932473649770753246 1.0005013095148586166577129469170604 GT 1 -47541071949099846676588.5158568861020330486641969195511865 1.2714698836117099839667031954664416 0.0021609852740443147111005556467426 1.0021633235720139587535676502597173 GT 1 -48200250863956162038803591240640.7015292136215578700636507890098290 1.4999028618317798855643658218611138 0.0371107910852699557793706951286306 1.0378169216584634350441681321764717 GT 1 -4776358080371616.0446124273063756936571485954758748 0.6509260929211662191857494957402405 0.0639405478024936429519495288511629 1.0660762872166554497191433173396694 GT 1 -1044972572225160315048.5641545279043699788553240577367326 1.9078282007658282282032922282673662 0.0116794181148857507308992853879176 1.0117481582728686740318191502674288 GT 1 -10180614139096688199332905852713.7787044509364557962196300995462161 0.3946383089854442995318181363990363 0.0383745454210103541351987925378455 1.0391302444835455772501954968799776 GT 1 -51.5948562938235465349915657428329718 0.6439746658633658006627250716513922 0.0945593439216937298361979215529293 1.0993335409920709746822706177900959 GT 1 -885668179330878811099490819290889310466.8170007848098945785867088800901952 1.5180306878758571724277431108527367 0.0091905008715020753078240658533749 1.0092329940809388509166211101763370 GT 1 -92.5753965267005814715221632679806853 0.2748194449245127586644202471828593 0.0999573662680088950959254730698808 1.1053131459664643967825709651283190 GT 1 -720425.6283824741008410829252423564740639 0.1755710593290613351038371758877301 0.0697899464651523736502164622666695 1.0723448543223069615624522459728795 GT 1 -10071005408702380959.0263646836479186323086706472347195 2.5999642323037500184330222592801109 0.0974695687692975445484193512739313 1.1025528705283847607525434691333840 LT 1 -57400265985344367556562811.7967962695845779919484792604075373 0.0686700226935853258745838537806985 0.0406131899668107560334776516520157 1.0414609381500296130904320549355717 GT 1 -508021130862917190329841624298608.2999073631922557533246594483645714 1.3492173718639707563634376028451057 0.0646069189510387061903600017050386 1.0667884305009432865272028884728588 GT 1 -119079764525505761020627601753216.5380527232534577806591870845849646 0.5310598049298438135802636961730934 0.0788826509622158360339622505682409 1.0821678360358241221199691122987890 GT 1 -23.2316478848133964250227046556350869 0.0360928363550586587814962987371485 0.0539555229498015009479052802319654 1.0554656951261712582332269932316534 GT 1 -8564131848167630916994201204254405467940.3054428166108080020245154486548333 1.9100314001381169406198248826864186 0.0726736414339017604675002497711534 1.0754497165113570224462783558308814 GT 1 -157971033.4353888168414721297210649035120367 0.3462619374899554270881593842027475 0.0395146518353278686928146888938122 1.0403165512733501400568132492376952 GT 1 -1952922557169933.3074338693155949609037119897539882 0.6868545901000409311453274885168450 0.0178325760985513341856395307680659 1.0179934923885793107951751686576956 GT 1 -560181.4028850686788186449204324891685324 0.0432452576947159929234821433991932 0.0085175776895312570828014016825638 1.0085540595602037671407409015160289 GT 1 -6864152369959536777465793976.7560820212289611538246086476359282 0.9774349757700319878415096062269306 0.0017550650739997816900032848519342 1.0017566070050971561472587429776280 GT 1 -10644986154437.3126804097091037333510034769026944 1.6392099671638820362931174318489345 0.0384301775902377659563032409712056 1.0391880983789961059315106973709626 GT 1 -1129200263139821.7069947006520397538067664980184431 2.3907187565912061448688991204038549 0.0869765248238629535428893371080873 1.0951336120854027054146541505416551 GT 2 -139612431345073009325439103027557.6742808885363195575398407753563501 0.5033647258824867320436759881562177 0.0728821146187257823507736307511764 1.0756745528054463852931123494537687 GT 1 -551480768.4999943862611589043031320056451832 0.0099608882232114762258700482960429 0.0651233253899611362095333781573706 1.0673406572056560901855767495323343 GT 1 -878313142612413636008369886234666554053863.6560309908674254374926087969533925 0.3185378177912651944844195859975918 0.0959830342689578618987410391050501 1.1009071513644707476712275283018133 GT 1 -4377264008339954853830705291.9214736856989067229637011300086609 2.4856988107734315441026167506760467 0.0324192391502695295367126418570976 1.0329563838154480490937157214019046 GT 1 -2621526739967814489.5869495815942595940510187938729346 0.3446296855954840139088504143294694 0.0579993226432245420401950127005894 1.0597492853436381900122114186425767 GT 1 -129396973576663144653119473399257493642087.7861211054649829690792098142747628 0.3606062021360315726260833065976529 0.0074532301327033995481518245472754 1.0074811442390725189126204469257458 GT 1 -4119727584944845011235954553581115162706.6015661362948392552821249593466786 1.6111018579343236527900268240633279 0.0360250079640229987248774534375372 1.0366899265794807552194962582345978 GT 1 -54264975381955928449475745261284045643.1812866385766573171205104118012501 0.8210029520654278220053627227981637 0.0486409971457496880798561597746540 1.0498637872995823955437184110810819 GT 1 -137924182291646301430947442698469831951.6306149183252888918756622214163170 1.3473463032045683847016474767783347 0.0697897927978964235727051837282094 1.0723446891260239569825504835362099 GT 1 -748005800383597543191950.9062295303368794129240004328152060 0.2240413931497368496984227431258945 0.0747876512622399760819649491060653 1.0777320016130167571983334483050264 GT 1 -14049804316177533675870210469428983080.0769260264446655723924403290796264 0.1952194891281071290129000808030755 0.0531730435974840952810495441382284 1.0546389306845299090756511119172918 GT 1 -1462451948457316.1389742918007588382508867297776872 0.2758954490525651827207698495533457 0.0724782960116123650975348384505795 1.0752390842477714103980420557458645 GT 1 -369428682072729984738945066147.2577977613380084042707750544684792 1.4949537547832525112040081439201957 0.0000205861444827732971359272674584 1.0000205863563803537377379624987449 GT 1 -25789265017085652560304691858140979465.7246063561746987070675343300228672 1.5168373843981430012133622834822912 0.0630091780148578354117464886547145 1.0650817918982590966639509809341962 GT 1 -103386770481950871430914916.3009633648331903469289566227890266 1.0934513786628401436598972736158162 0.0564474572357218465114877213977552 1.0581032265197959502437998640313699 GT 1 -2489138399487425.2710912252727675596553523496615567 0.4909856537265792011536862691186390 0.0142102026358389203756454306701172 1.0143121343645783460182463060909084 GT 1 -71383438506753066252567497676999716.1265074893744468093572885459530471 0.2616397014736921245963665726172954 0.0374099756097541891045119777872197 1.0381276853600054030608201130885808 GT 1 -79670607838134460146411632297503.5500293747089421790183092458616831 0.8328145889688537670543992567081208 0.0482990236831266864237308278103639 1.0495043940381542165770973848745068 GT 1 -3.2697206247001329743110673365266481 0.0329797093019875484381020152354077 0.0101242769488774997985752274961702 1.0101758760049299369897349663591827 GT 1 -6348802590587613026755878.0916551782845703411138889637532054 4.5833636576661271595204602834549192 0.0159333400354260908672345796799612 1.0160616403579588234297494677361274 LT 1 -7037706177014622820128956343149414167.7073727065685946668381217188174797 0.2504792808355006685201905773160595 0.0470118363955384301466947754220236 1.0481527955472884516005906968423817 GT 1 -6457367596433111066762563851000052827690.3950688167907607413628132138789645 0.2040756674018974198062458225257441 0.0089648204086840777154341992271080 1.0090052461991631062460301435095246 GT 1 -10851221294767044069073002846261908457323.8771548298417647595097375995717403 0.1223157654738851625066135371796524 0.0622625711205059013124487757997919 1.0642852957303706636442202319224960 GT 1 -5733150419110.0528767408744947576888864088141887 1.3279771196307266320066474497614954 0.0141322108207226909335957182489261 1.0142330214235796636620790155389527 GT 1 -81531192502.3292228055832050316671313924047092 0.1157342517593578903583509828998832 0.0897851976521016910182127798487925 1.0940746607896897185820621562728407 GT 1 -335.1631137047714563174922437456929035 2.5927766622832936093130635536314326 0.0093660287039279207980633601415715 1.0094101657595710788485510521650351 GT 1 -30399945510605298321713.4151757081703310714740946190664804 0.0666683229356769644069382013890234 0.0787992881868147865965886674518129 1.0820773383337938462051551420534847 GT 1 -104010612702730249297260.6922840597672000489970991552624045 0.3590894662053977717090792298877163 0.0244693290646360492862921009075040 1.0247736781673485498435873996080579 GT 1 -21902343278366805279781721658139.9158217390210666261100169384349079 2.2477213407148068253703771953518502 0.0336297058397936285905845971269348 1.0342081909327556532308127289942043 GT 1 -609854833095905.4859183804493785903845465932325747 1.0950837613114585287411848946814341 0.0734510668623539716207280211268124 1.0762884196080570303493098066019485 GT 1 -2708483131306112489859540283235527.1216819920112878807171061229864295 0.4405807403792286504448137096977482 0.0266298377651087227948864573443228 1.0269908351911955364640087725460985 GT 1 -1335706181580113120874789990403386.8144705756500451123513633522414037 1.0457049545785083397085887875306250 0.0784064925329443308030577534887797 1.0816510339144402674585949861012664 GT 1 -7161022361588.4293334823914188984427841669970768 0.1082829888217493964106536051617595 0.0892976615791612320004804771473240 1.0935391766935990629769300565774096 GT 1 -6227535727594699.5197123816135281080568937794002701 1.5587396534923379452025777334568799 0.0179285594036598518556630342938389 1.0180912231757251557921410034144333 GT 1 -12388855214154892397037580280923798426.3683591111182685391205508380770582 0.4511199615481636682143438176652257 0.0874395708601872069512990347001184 1.0915009720033205484790327888527214 GT 1 -860548648955520878535973503891469200.2053430734126962879714787127669409 0.9460260908437906299775459984618745 0.0418329441481110570464820499279770 1.0427331364100252628213405241089968 GT 1 -2.9963942496222811471540314067094860 0.3895645287394366570919082584557057 0.0953439222042158947298972302474476 1.1002004320448791618445441145098543 GT 1 -1317428047184.4155817542944356771271811477561323 0.2335440460755217341521270225879893 0.0249031015057734303316183211184622 1.0252184298514584887045504552692943 GT 1 -5177403287232828971703583946.1723364717112360778035525306904254 0.6508914314426371594884871051218185 0.0463290933222885817939502423539884 1.0474366286005357692350296869521814 GT 1 -121441.1395790089991524146385553632262872 3.9194334582852475476324087044760192 0.0367397441670208853985728881027350 1.0374316484181156190199212222650012 LT 1 -11271458526.2138885604649570023505851729828303 0.7028886478337933785158582308908754 0.0611619751291964504048647758554454 1.0631123121284573350775814775078558 GT 1 -157313.4900517628260624731782312107498540 0.9173356931598959518848684110171712 0.0027173492009807168516092258107369 1.0027210478962713676621156668692586 GT 1 -10134901.0596361040267798725748845271184373 0.7223405171563693490243729308603271 0.0583366805662016607060124580808902 1.0601074786595999576598361535939316 GT 1 -31404939666763008063234655423969942.3753156730879909618258027405134792 0.2441782404959944966836691115871228 0.0589069646369989566646341269713969 1.0607132756728832389403268652080764 GT 1 -850925656180870170806787471500643965900.4871914318005703311889473537948427 1.5868301485118221266768951097596044 0.0580245231714853851389575744171342 1.0597760378353895984601419620880499 GT 1 -1085223293511464.5043912735196455595629049179596995 0.4999051163972327573932578051393998 0.0270515989142106832074386428554986 1.0274242289466185961265611813188980 GT 1 -760588253384900382792575.0498188690187977405005909565774566 0.2191583544773071202427775823483364 0.0642150035301924238630748603330080 1.0663695335169673855041229081017959 GT 1 -1558088365.1736715052218488725985718370283568 1.4162952496515827017432947905850112 0.0114657567870755157900138733252660 1.0115319953802479602919252690706312 GT 1 -1132828559077732.7202245433996802229676793534806691 0.0646087086777358392213185131350931 0.0389159202034257529435074342306675 1.0396933818550967285714855499817758 GT 1 -16564834.8025658614539283763248693412182749 2.1596237612866135723300094745295520 0.0146783477491192877964106118592217 1.0147871406075527156016385893693173 GT 1 -5048472.9570112735254415445201484500308470 2.4909585584296563961569649949853233 0.0773873002078247303797738187342609 1.0805457427329363542056724807510660 GT 1 -1478722352182872773736006496962165215.8903380616676008384598956504991861 1.7843220607730081038488697984013617 0.0812189011319193424743402266244122 1.0847073799198437514359128910376348 GT 1 -214757575933489920270567.7000564848522673647969928128653462 2.3884732299576819014201109909776421 0.0577355558956725177042266890765144 1.0594693175766072184709567132837966 GT 1 -80234397973326729869594.3395024895625140661886198090337508 0.1218294126016248027192106505030883 0.0730496271463545959542135690094802 1.0758552500665537846599246224225822 GT 1 -3239111986556667956033761565431699172653025.2610986633408848974855178902777630 0.2687102061707162074181244042744942 0.0833231129455420350029975885255452 1.0870002275378309912404896214739694 GT 1 -15823912971390208972442693.2727329425222196018108346864555287 0.4811891881540134883461367325640542 0.0776052970803112867271672268539659 1.0807820527587721229397131421836992 GT 1 -721962911622.6229511933200136952275971202306298 0.9928374819031571977605122321293767 0.0862202732352193514559760759118810 1.0901657357362117089202590975850009 GT 1 -53860497320445319864.5186780070445478046984302264785362 0.5167267158747983899921949221342588 0.0067371537862595630846465952722788 1.0067599508560994514121831966631239 GT 1 -752.0953199729252783513272113533761348 0.3593877630438015587398840977651918 0.0259340826090675191862953767130839 1.0262763006368424862727458189691473 GT 1 -1549306048425617617899.2890924634181675439098175514855496 0.2703858424726574822974462452303192 0.0264904401909965669598052219518053 1.0268476341780337934074995292550168 GT 1 -23152146352750957123019684208966632.4715679302092920933681810924701205 0.4948024218671259243367832999258449 0.0902948630262666948739145862325084 1.0946347572823726057291910005709175 GT 1 -332871255462885883531.0422141287732731062212302816953159 0.6352497469151843352058247031698277 0.0204901614169733232203683931120209 1.0207029971528093904181567127021648 GT 1 -125804737054868004779605765721302.6013479457038065220717728759118774 0.6282914661807425144856033661607360 0.0030632421832837371489514842153443 1.0030679435129495236028287678402277 GT 1 -254068295891513962418715.6686613320253318270631747518440639 1.2429543555481475369188569524808191 0.0910400326815638387784773537578474 1.0954542261282186698582588298609855 GT 1 -35770658386.7786371464610449679841638561506167 1.6835179473702964674153358297563259 0.0758357626134506914435158862891106 1.0788654770460783174067641848670880 GT 1 -50886471791524579.1102323002737486288543812036473511 1.3933131575900839801308027058510373 0.0689067299956683628777305552085695 1.0713958241190037140988306224776952 GT 1 -200177.1838627957662778747082016040846252 0.4718726780065995098451323561757123 0.0741335470497142637738673223433162 1.0770252740127067780052431109324045 GT 1 -449104718456.8395013917463419137135914283119796 3.9509116813116723861877407955163120 0.0454055957576398927228503821972080 1.0464687363148462175194664063444108 LT 1 -1801714476031756062216249132192451929.4123047194388140137190789306216666 0.4961163294296863340233911099621164 0.0823706479611908029227198591058987 1.0859617258420359493912839874090078 GT 1 -2.3183074317762143396289630312374755 3.5926562606788824169209476664054766 0.0984310711464260846383225174654910 1.1036187790802493890796451989440116 LT 1 -238581749982132345601853098144067370159.1821375785819602481196922610953836 0.7978374314379249250755143086706746 0.0637012690934698823531030319169138 1.0658206964728697868260228863808072 GT 1 -44836379407813306807880432491587507.8389504508257939810914810076262130 0.2454587625043353442469433776682307 0.0615382780429058395430433959529794 1.0635132101942938229244784823924713 GT 1 -672773889033694809167332783710066480.4550214422961303879699972016530698 0.2030894180080282092468394179434255 0.0561132454561096959434714419875438 1.0577490834397172501489863325512436 GT 1 -2089256576.2326609870976974881221402515792339 4.4551202387291225272507677401046507 0.0156125848186921656196505506732168 1.0157357447999950956131948635973033 LT 1 -83993591741100069899.4251148601404199055906805449417085 0.6295557247164281990080411150864718 0.0003276034053919889331716742725219 1.0003276570791103831802294646318990 GT 1 -119786056650.9583317376030622608765164506416141 2.5435636385068145621898911985604897 0.0191483815034247039848242137230656 1.0193340862121918073571576118307002 GT 1 -11338407450413.9179487895425175398155021800313566 0.1218924446713367687915676140688980 0.0559835999788238891527429169001064 1.0576117400837552559764350676040825 GT 1 -35048984078273560405659584007541308033550.5311499623882622576458447985977767 0.1220918893899727037491966350155942 0.0479840114264946795532239951067401 1.0491734496117328565898909492436389 GT 1 -231703027267351.6386298145968320670344371923868500 0.0468997219396101878801329328422762 0.0991192054064327197693014987674723 1.1043823335744333796642954651252800 GT 1 -9534339878844.3675256807867258005559172692651506 0.1088441750350620456773750543984512 0.0157276698928714356819329576489892 1.0158526619814286053261658117046245 GT 1 -714507678852934685512.5639210685569388948341986581626666 0.9382640465749851788371222254843864 0.0196895372205887319018375431941449 1.0198859587331479711396294990878663 GT 1 -332866839969948207417467365009495393730029.9653493828640441673567218521258084 3.5345698418087647958774451989111215 0.0061235533565395319905577090048576 1.0061423792027909747699311494294228 GT 1 -246237111712139817173380292353408043.1356466120288880127382108533095432 0.7857717184405639253386456782300956 0.0599021562890848366805443249425450 1.0617713200808121135686251394015575 GT 1 -175232878516.8173599941246811616550896082716457 0.4961105586827246149665435591383829 0.0278922195450401776293873700854829 1.0282885954272837537569423148665883 GT 1 -52434362193337528113453.6252078478920973749424231989640799 2.5958029305247200704704640136663531 0.0018691968871773946926514649599659 1.0018709460156624453490173059882649 GT 1 -1516586.6046508072785827834769649567119564 0.8055793678396841653499929723894174 0.0484429600214964158592175787795489 1.0496556466139077689632838477635837 GT 1 -59538727570072033.2400472145607030075300539173336077 0.1448402306936751251315730117292218 0.0930989051807568551712806560749230 1.0977218813187987979120017750523972 GT 1 -65620944149461353887905.2178358818544012281129017221987652 0.0412825420972982909713696520226884 0.0235030831712117703202095060914791 1.0237836860397804228059774541464731 GT 1 -28.0860102964281306232608550944573284 0.7038967357818146168453034932322372 0.0936778429895409997911899157534119 1.0983604544540958518187062373764822 GT 1 -13181927977688113710167740.0989408686334535066282963575103702 2.8123342647361467470498876153612886 0.0125872221101759760426114431173113 1.0126671122953675026641474474776995 GT 1 -82306970463131541980625939771046.7646717535857802321779542599903739 0.8663218951859383861855258986335454 0.0263326965814763963933241500094772 1.0266856112895697360599385017744519 GT 1 -11459857862408764662921939101262.3259135640785193944138103102808730 7.5451322304821124695475460993044879 0.0281347344035058501773104858821635 1.0285380997712008229028263412419165 LT 1 -1784454743197473458.6614934289029629546977081239040129 2.8616013680068528418246311222398749 0.0772964801198225815712094745362725 1.0804473096436833862967185903962192 LT 1 -2579262.1185285976585345273230228751980830 0.0920775451545952268128679695313285 0.0628364969203509462436197028684230 1.0648975156167532238587818952630867 GT 1 -296159283335226871.2465089782800354023948135801644572 0.0502850057153020670512549000851178 0.0740446803348705101897827942585775 1.0769292964016578910078537892680987 GT 1 -6365401527792500824613872343645200380805.5949791413954856244351683462605958 0.2959651363232441892957602628904918 0.0944205437619242560115355931413017 1.0991802570400073920254054698913569 GT 1 -514708783.2729217190024715049601077604515034 0.0912073493512710149322774179849353 0.0261608388611249030118916340455030 1.0265091212763911184768385356607451 GT 1 -1825336151618517055226241198246.3828239292237698116197044820332709 0.1613251308714866313736678916965344 0.0504540371364798187781520718218606 1.0517713424621989889344207723336289 GT 1 -2373983291452901967769.7944267521110755836486242301346399 0.1207603350068544227772775605527036 0.0479832940747358025974022923746577 1.0491726961039165784347452225840291 GT 1 -34524590.6965061078223955078086766078915962 5.2108569388199985607270367739851656 0.0224526876123152945916863438831569 1.0227085868743008343867184570226620 LT 1 -6191428177436.3042708572388503228123759220711147 0.1240062697775360162048610082335738 0.0956102318235030226541950073480590 1.1004948520252282070402962611612039 GT 1 -45256112405584127243200.2719453999934849726820461894234057 1.3636045547837409027847071629275749 0.0961988471407644483746195832209546 1.1011459064368007655295145027821713 GT 1 -123681799430281045.3164475951130861378769472882440103 0.5553787535903176402642708960883771 0.0427434085896227193209935386923748 1.0436838028710806214382315720845164 GT 1 -36926775187.2462468338120106422606518230785594 0.5650269034588345740816872504937629 0.0712094565066008371437354750970775 1.0738720300742752019388851534551845 GT 1 -1968457841793041532.1268620577628864673786442956313405 0.4324877588579929979737670629797196 0.0257138414859149271968968031747445 1.0260502212471732783326900766925617 GT 1 -6188588276246804735305053.3774167104361684036533659060298823 1.5931662154364214684766670644876355 0.0011016624987715600377505227509342 1.0011022697749520594898756194766207 GT 1 -31085.4701643403201916519265950463485844 1.9874922939207912796327524547692435 0.0145604137257691714116619020570379 1.0146674568821115228593968123709829 GT 1 -3389449059824778956476456671807381161765196.0651263903630205890057555072055606 0.1499935054590613852945677055876217 0.0912573473381052768072076369338968 1.0956933352709222991572652047324598 GT 1 -23819892756260.7696590256570166915840053559499187 0.2819530610590696351016979263658623 0.0082673866462301379907009754921003 1.0083017510206564379411381039150864 GT 1 -5799334446812279054290006.9759412112154940715522259881027386 0.2398528277943003039003420625278728 0.0452635537794819102492647013188679 1.0463199491327969811120107744714079 GT 1 -29986.7867742235712347765964240517746662 0.8633010405745237895297429777418210 0.0478236050467051197415935565414611 1.0490049725381381298966289538184476 GT 1 -159240983254205.0206372632595196484823316770965630 0.7732391307587104616236851596097698 0.0066635812314497241306540981481585 1.0066858820127848124998368946277364 GT 1 -4724784961986859553316679301057020159827.1697353599480825785920501363595548 0.4477096455161501208313167620565469 0.0975640563667489023911545398763750 1.1026575678777132660577392153402639 GT 1 -546844027814308632006878377967423129251.6297464697826683382189849582981532 1.7164386926367920548866089642034180 0.0075035032986824602240651978135682 1.0075317961989934856495140074793735 GT 1 -32268314277297059560765165967.5458814693247969176161100609950605 2.9092722531469503299037180123812032 0.0032772859343777086638654849920642 1.0032826679981839874151580802808840 GT 1 -841437407052574975977.0713744415904088076683928857289423 1.1380216872961703119959622363171662 0.0468289500178391088191969191305671 1.0479609056180979240951774376246981 GT 1 -9245851.9610044656927384807597734607920387 1.3121946897933067671885565327227945 0.0312957375170322724040400072897870 1.0317959123499528351276091044531977 GT 1 -366414456173861723487963.5988120626462216375933749877806103 0.4552399707774551487149907783561300 0.0316613710802047917685129244452911 1.0321734296152006086798434853341967 GT 1 -21694468923775616310566313600.7878380131105875765287061316741989 0.8837016368953396515618195048087618 0.0402057908419679779726887426008451 1.0410363829601978171723119891476084 GT 1 -9163325687376266.5415523685417554774303742650858018 1.7701433839652774963167350423153734 0.0060296230137440192103376915929734 1.0060478745943383889522580634355892 GT 1 -1137030879383249968661251615.7555907745362251512465734354882277 1.4556239350173653430306576805103254 0.0902980918162241958276809535832775 1.0946383065595572775314745623179009 GT 1 -62495542.3344212861557546948221259916494801 1.6212738764037954495570485291575703 0.0148450643429445510488687534264312 1.0149563550963176638231012789001154 GT 1 -26800143.5166189587861493756370761467954611 2.4420692384745273509286076837187103 0.0660252966004679357820105889351698 1.0683059252747533618276880865297840 GT 1 -1209568402379288180751466.3849783260557431289218052657548568 0.1509196524344057354456361639123990 0.0816241836138037053530092748398735 1.0851485860956403610512463230381537 GT 1 -197825069091611671921864818028890.8921406939230455046882454328596753 0.3605724475445382602834161265580504 0.0397957362074992056020066851660692 1.0406092423697439780173656782108292 GT 1 -177060752511364638999.6682289254127171423359632328338416 2.9220717002847740621168937595815556 0.0216371088810194956503832827011188 1.0218746234570613046630732529670757 GT 1 -194.9205548214361432880244999643422557 1.1983765778832093721932891812844678 0.0858030769880913107675917024703825 1.0897092788614232082860931592053907 GT 1 -24263356564978558929294.6093953541461658551046795076773075 1.0516672848380581499111133245000254 0.0098393971511275644435355709585909 1.0098881239106988896487091852730115 GT 1 -30836.7128787950628098008696485851475570 0.1613019326182982665913887727139269 0.0310094222042062714839638433499298 1.0315003907755974611983761646553872 GT 1 -190784483414870472826837572897096729284.3127646724687088471173635382189545 2.3139586481611986270182376367355930 0.0305123893041398262639024448192893 1.0309875834467254158160317585804141 GT 1 -1312397190264599.9456994485669913213783724618221066 0.3547003790712496075676940445673956 0.0970843910322665736780970341929945 1.1021261862251170672715124712293358 GT 1 -13268415197624243154200896652518236776780824.5688606680978242872118073775214021 1.3341760427234786378686697402374191 0.0870267131389154876056884889878783 1.0910486574558631920068156875405874 GT 1 -1290659587668272167633390553.2185200388057350283429691443789428 0.0286008628712454848203254124075114 0.0166523117813565620569012402822996 1.0167925202344827964175492944301419 GT 1 -73602596507934604833271145.3617639518902283352918055231484533 0.0497286888911150988015375326320824 0.0336524797755809389206441364007050 1.0342317576796639343613885102843142 GT 1 -76220321998359694275835877.8739484641130578916696359723883384 0.3357103979582996918151151824011245 0.0246107699612512859655379832917226 1.0249186773513667428579297569360358 GT 1 -539098179916936352834674646890.1565691509765689083833517475677937 0.1822686579263933893373230210324746 0.0285158610158792575189613022038209 1.0289303366137999117833306334886786 GT 1 -15380229475.3130072951045062227496642619805242 2.0294241549215575382424592413082218 0.0557867923431469943997411706499504 1.0574032827694653997541279831444659 GT 1 -3724509323217674124370.9015293050043718130866854709339037 1.0151529874729025850590892491390040 0.0558027913087628035483043584649519 1.0574202271428682234910987611417883 GT 1 -4451159697817599753573767927551871036379.7875992654094736800215786782748565 0.5000363689390297642594539528370008 0.0172772286314398292545653166577814 1.0174282216337697750115610511934290 GT 1 -1245391839779069.5914250805752837644905978426576693 0.1234992437873605883592244451745842 0.0886773062312904538040297097613134 1.0928582251579370137685939498186367 GT 1 -29049117705146.4960400794658463170784531569141180 1.3417290547543887273333476858575536 0.0570685870452531634071519225824110 1.0587617318095900302410249555952055 GT 1 -1713139383.9650656829190650441081987953954334 0.1834121696424907510231451030721117 0.0834725471722350989832414845720573 1.0871632581654299296100974018417751 GT 1 -16882110482430649221.8288111004454109524323329500590621 0.1043384086678889007183585008958847 0.0823574775142032605144937838410292 1.0859473732579086739009533273975255 GT 1 -952119952.9934183922511163379262073230144480 0.8318749139008367381075857282505785 0.0105869466428956043429209946422706 1.0106433870704801727058059919404170 GT 1 -7174956.5016175691081585655395660571765619 1.3474237772143933630311861397329726 0.0610683817123046454964549586626260 1.0630126264004338685445505368628443 GT 1 -1539528.2370821781328945205419293374746454 1.0578898300921793279056175230906103 0.0603512200632654490521867124561778 1.0622491119034696605479486566816399 GT 1 -25468087483406624295317088165310895075201.3024124125925544685215945104087251 0.3559941184682889958359696810969690 0.0529959025209168848280274615483563 1.0544518590059651907547439862949266 GT 1 -54658823188265864194277.5284476681830742689601698395038059 0.1436095029679351319593409261412325 0.0265332066035713715109438659277696 1.0268915652843477180950264741232261 GT 1 -4908127877656631791188963.5345799506883741305167093244085261 1.0246628328442148731474160203497981 0.0020068115884400958758808939171001 1.0020088279328830582170294632512006 GT 1 -19483923980288409300.1336514942021771927826811328502211 0.4548721054067969567984180993319267 0.0893048135028463566273069132148598 1.0935470299201323354383903449798133 GT 1 -9458.6960243791911399882415305445641675 0.6883237494854117156108053676771023 0.0097325872402236276477763713955543 1.0097802584289286052893352697225485 GT 1 -4.3531859469282160757368413083584214 1.6607517502947451413321962428902141 0.0778722293248418357259758787214199 1.0810714851188709947835313727594207 GT 1 -12622806389455544687555800660.3809631288457505019748367425309099 0.9690921609804384899442065569800398 0.0635774491105031497235773789827817 1.0656884611163853324992039255589032 GT 1 -68306479.2669887780148035519316986629119022 0.4489022812077249353625505603820398 0.0207473962693727156242855453182675 1.0209656475368695779478085825207432 GT 1 -47944517889778490817465203599.5865728605517012374425321516965147 0.0157818290504223428122227177639685 0.0013733866114088050019040680372976 1.0013743305711811340287073794224700 GT 1 -2197215755160988933415707914.8312179097342264411093496072493476 0.0238504272108784253559067099839204 0.0602572797188697500372268126017293 1.0621491430098537810583461193374078 GT 1 -14210453336385727980335109188968.7245471497154210348601205100642695 1.1409331976114315046858820033790729 0.0259331617520410048041672993293417 1.0262753552628438724513620887120608 GT 1 -297442712264453332217864253538594067694.5540690906131879677802935521055702 3.3904659712457409149955329627035382 0.0136300436577925617469039355692694 1.0137237854808822641088459039942055 GT 1 -279033574857369359776959423110904.6767900146199231825239127506794001 4.3998262869581434203908943757426437 0.0274448146675767895831713829810583 1.0278284592564114430943823307292328 LT 1 -14020082428528.7961264548864136521373454924886919 0.3054689521129245366588821246135852 0.0866402931511729880171758665235560 1.0906254925731833341831922150982990 GT 1 -682364489442206691171945786308624.6678745813280638927191904822394185 2.2062930724885679231474022027919827 0.0461351555060254462435490028078029 1.0472332900085201456954382205137425 GT 1 -2868847.0917164284515391052341781994595538 0.0789934257204065171411683319720228 0.0676088666091378650265294306858188 1.0700028813135598784952794224155952 GT 1 -30895015938049535023.9935780598434585889570025413151052 0.5242404661180531653912569754325798 0.0003398792399375750405061292369328 1.0003399370119771607436333037717621 GT 1 -68210.8595615135447711108251539875870388 0.6210028455813166309679741546882557 0.0920155157956977928994258778697700 1.0965279884075676967687194064779806 GT 1 -5541877155704915133616411861342.8831108746967936586369886562342486 3.2300784027749087560624532461258064 0.0320732869558821773594099586114339 1.0325989042368489371350970765506871 GT 1 -303.1144136902223079524502794593061233 0.5011108307423154859273680800189620 0.0271387117001334598776574666769412 1.0275137678017863701198265354225890 GT 1 -523883606108107521.9517948677165882382382504423557229 0.4006190552892121387975201090797364 0.0810134384640864004869713088578915 1.0844837796540257972673966836197777 GT 1 -3008207913272545.7837242330050827266601840184894124 0.5416597018466970300189679925859880 0.0559756495304959572821593883085307 1.0576033181804399672222816719345698 GT 1 -926634398063906325652920.5489206135205614904182263975481745 0.9692394674519209422597950691859318 0.0602372095932844824427456572698790 1.0621277861950193458543714026172195 GT 1 -34732290277043278809.9141038829321128389796831837934039 0.9788457241398043605336533264523910 0.0547624110616571607510506986603264 1.0563189662223468955096240079428928 GT 1 -536552700803304301903724464050702.8206245346439570236083164109476413 1.8919147092433914429285340496372180 0.0713831256748412278580916117389535 1.0740590317703817599780903650367240 GT 1 -351097048240045282586508.7346551374620518093120391343189250 3.0402931238072395856413857567788522 0.0261364806278159461382118213594497 1.0264841090057258284311843807511034 GT 1 -89268532690442474409617680257231454869275.4572389750896270499806237437230762 1.3399453896907378385048721924735627 0.0793246016115663724857207644227125 1.0826477495966202860804662188820416 GT 1 -127632292.1191384671852517813164135754868608 0.1746649516319439737395532518367569 0.0889069978818640786312233412015465 1.0931102989875339325069427332242785 GT 1 -33730.7123979627812516456006944088572801 0.4024293659920515095507027144211213 0.0646176490845630083909045488856037 1.0667999018227717464445214263329625 GT 1 -19297381757954783845139657139002.8319318557127715052928943655981507 3.3820818451655189564985986944443315 0.0852960079171711072626790822964131 1.0891547719663499472318025770082034 LT 1 -1067.6911493987952047090022767645079035 0.8091338104965000324452444764882426 0.0796522846897826802881615810143055 1.0830037289205499616798294094930791 GT 1 -193371980304.5794273002644328553797962983679420 0.1278565252765065962996121920846463 0.0648850349200938792325412139519719 1.0670857999473674294353979582278133 GT 1 -5488913484358486076999547689.5039544072654828110922312125557700 0.3257621244587744458449426985333844 0.0681499249530985632002695355900490 1.0705833409200780957103581028348023 GT 1 -15919.2088670732284496546628257192130770 0.0516614957311249031673812410517016 0.0254684215431857828773607156307613 1.0257983557808747385502953518021841 GT 1 -1414234641414428904.9551219843992508885051940291161996 0.3811272156389420061940192888949318 0.0860326300595316035591877740868306 1.0899604084492087739623961187248500 GT 1 -68198527353157737208554006908387.3665016498569907214378854469566002 0.5512726090027320512078461186798368 0.0085649905065465394220982835139210 1.0086018808322989799072770934641846 GT 1 -74130625.8525403107316520146116777080552274 0.0480234223976048517418268061968010 0.0642597959917890973020136285049242 1.0664174008516885908427002323453073 GT 1 -658841.3913372993352373355902613364719314 3.4030583850075798435612162547819637 0.0111977045549798005612048930782837 1.0112608708361987641977894809112262 GT 1 -298191296307173782917911899023949606409408.0141058455489094227350727956352852 0.6567986688485868865645069206082001 0.0335843612563575033763241047388143 1.0341612694577257536789855300107316 GT 1 -710986409.4722355565723710895304162100507254 0.9135579272035807022215280213620252 0.0829462895650169480439587027125439 1.0865892365380132298687697522961008 GT 1 -49471338393945.5138659313026845814220668704338913 2.6278158883633192158005944491431219 0.0629891886513994311908280855583676 1.0650604585513680351103799110932331 GT 1 -959532797.5938063067155869045878660203371952 0.4683330295635134635077786437648781 0.0512279619646599382234707921783553 1.0525867220463275990006022259957448 GT 1 -16967939596827553488628923027331.7354812265661651334934485139030773 0.6688117676846598730043425364396471 0.0990057552261037205485080309956776 1.1042564089925392432913964153982917 GT 1 -231926.3164608436567715168837518438024354 6.2035998340633483246354982192966077 0.0030352241220236224013271296099259 1.0030398397567825463080438620720254 LT 1 -149797233447036.6007394750001801389105605812284113 1.4385885386259984108582935478560376 0.0149311126544153157188573570618983 1.0150437038640270474347275944346781 GT 1 -41413367639567.4934482315520806271444195598340826 1.3076590147408253183267063468469669 0.0712073711625172295208866062060716 1.0738697848514343944134879059422645 GT 1 -16563791074816363422731016738406791522.5837101499908641159179739619916126 0.8143986614991833485869137012155980 0.0018951642098120983449371897330573 1.0018969623056535789710160088472895 GT 1 -544436351888164290116932317527.1917551454417371292837099289637754 0.1598354499810188758828399918469657 0.0961063533810652844269777057245137 1.1010435730564020595095183512004085 GT 1 -3316349036438365565237793737010832440904443.9936156298224802077816842268856276 0.7612310705594202897101792072536920 0.0853855161129882765955798632836830 1.0892526315758869323260634090799785 GT 1 -2664.6196495067224252321984532891696587 2.5123459383710736827657010760288575 0.0354871933722548704831318123701802 1.0361321687278797709984989951418253 GT 1 -176674275006670824556.0006707099657272982040652936132159 0.7747099929065779199790290902092135 0.0506788015714524754653910264580933 1.0520080777542764347166139080210963 GT 1 -26308.8792260552855897502205884573234704 0.4031635048808864604637619772682322 0.0469830851845585439131728854756950 1.0481226264660959691689722154165359 GT 1 -1837989918145551975209.8765296362664567259758082959978045 0.8482137284184086898641181908728159 0.0017231636849388143340986518446476 1.0017246500392145832641539170899641 GT 1 -7552084063806612440585.9225754046547448572544368303138289 1.9844633808595568129644637455550555 0.0219994010838893318658890040937927 1.0222449965588460121751501286105121 GT 1 -1554173004062411413.1143808163141476674144129792656248 1.6077977066877807876598729485166417 0.0425417001292728967430385073144949 1.0434731099245594383571343429867398 GT 1 -10.8359229690025897436446377483281381 0.3077984503646920901989937173338281 0.0479286696275688526927467113959517 1.0491153201358514180906335115861819 GT 1 -42660721.5906530911200667280429380735029934 1.8969267633757433996154481582698299 0.0183851611716798792124351400808569 1.0185562687189295537199693949598886 GT 1 -687103155607.6269433137786276473903238087773380 1.0743390655323566824691980277636540 0.0960168974410194764087711838987322 1.1009446106241903576105517074085252 GT 1 -586954.4384604560107067125891217679967161 0.1803938611821723974267842831646348 0.0319745614158947083930706405281508 1.0324969125218264171093136463344179 GT 1 -149606719630728482635213473172.2120020171769982947925781596744924 0.6187594924859602891628490618699639 0.0538537987340721730486478280423690 1.0553581750786485084983399490516679 GT 1 -16281585221334658673079940663136728512.0342721827573334798421917350658424 0.9572025796725534748542896196551676 0.0671037030750797110699150743049580 1.0694612344464890002931164027710879 GT 1 -10627247.9411759094841778500758895595669069 1.4877829896077091131496948596607830 0.0415983746915286776601871062811850 1.0424883557663056770679914508592883 GT 1 -6699213349817666691129003.5787628121087494004089395568103286 0.6358934925618447996388090146202955 0.0608340647196322687330480894115027 1.0627631004975402820379737066662770 GT 1 -10189921029685142.4619273549284552348735221973956494 0.5824318065249056991039109816214392 0.0516157616648020332887560424412516 1.0529955441453538906310143699398628 GT 1 -6088751800.5979073430229675681751303798672853 0.0300499337322181969416443433267596 0.0836329478932893628139508559310279 1.0873382826646926066561728498182200 GT 1 -7159325019007.7976927189300882334408417184828800 0.3391957079454161634628147470114741 0.0068646845177153862333745556207120 1.0068883548529317458808308494228103 GT 1 -1890271269893959739769091384544668.1021471681201236579758449743949306 0.9297087558264990090679479364037670 0.0915595028171969522510331194559944 1.0960258889619491639248493858769568 GT 1 -3913381750036663233.7033301086712116532849330157363846 0.7092536054811872697034596592871377 0.0048318127831759720060381299624128 1.0048435237291895362188958900231759 GT 1 -195818320724649712629156745.6055345577195501712176824517572003 0.1898528888554039037453471474006132 0.0309729742919146366329233393773340 1.0314627771726765844733955980832102 GT 1 -9154158353743092170.5479456823055341657050283719680162 0.0250819629615591967725255823675083 0.0243438361427374744026335275114443 1.0246450457679966453801067593407672 GT 1 -8827643034080019784324845368221.7334004512598966843401361763254069 0.9346825161079467441885320571933764 0.0420415608067426827449464330335535 1.0429508848403815910318013881746325 GT 1 -2411393861533.8874175451110163680009656531601434 0.4940427572745376035231802011058054 0.0052231723413681703957706121616906 1.0052368607915831192935703714295648 GT 1 -10.4408888518629195056034972034598103 0.3976858015511755403643766573944808 0.0021784226751179604001414599405468 1.0021807988893535369546564357760531 GT 1 -14182587254439827157342895397.8733628003056874409199603481402968 0.0211816335204052253994044095306510 0.0568648647471580937228242195623405 1.0585457030601474837705312078947705 GT 1 -232610345496147649696.4586175108091294794897072421452538 3.0923287061246989213136867279857739 0.0480171088065269080292693780304549 1.0504189400381911442466153761313396 LT 2 -27169439105634874433627544.6274783683362356946026342918421952 0.0603174523581068346725979377246529 0.0102365619752261561907495864884091 1.0102893158970848732315706326306910 GT 1 -4873544968951231550280671359079817967463981.6673068846559761608452967434063299 0.6946511445423032854523368207106415 0.0832232912683631183628710613344758 1.0868913383055024806083395050401483 GT 1 -1170981963261969312431281259307.1817957323662358394427738286727755 1.1884074029016789620988023832213382 0.0224874234900430796376648965073325 1.0227441212105415782788001663223490 GT 1 -20762315.2451326156477195206396769182391182 0.8808692969766038602274935326877529 0.0536827260855282337888174263836914 1.0551773814715289737058888617225167 GT 1 -59580865760837519495605172470360579591.9770214555711754066043382013626614 1.2748232653114305756900373559407502 0.0667619731116898806263979322104108 1.0690949907491849842512876655570915 GT 1 -42546313734077782660608430324620980003889.5159319339611031310110184891498835 0.6294557772795700406026505030348703 0.0980957906962011812741905769278038 1.1032469626700198454060687561086582 GT 1 -1195.3840897508390340132546731426423761 0.8193314754758081590221908912255599 0.0944043740949515250497012575568413 1.0991624015967290676104811315794406 GT 1 -336866.2802724290067045152283366548271375 0.6241492649892361704664011410489444 0.0572043061316083832858297696022593 1.0589056753166844398666395401690519 GT 1 -223648484858212731353424658085285.9600877382614982272792742881530302 1.1189456004333391458830680863819288 0.0222352282605296202999485278002229 1.0224861575706131721609623415459088 GT 1 -67622883264422552079200.1091996313421824680743053783692195 0.0242055067007516588300668406801191 0.0842179819771837649187271605434128 1.0879769142185507222243028522506927 GT 1 -2.9640639956337713972134133362934896 2.7309587453292898796517315673678576 0.0750301813861361532408004449993817 1.0810357158457294873531228884130571 LT 2 -18195653004234760085942794045683091954881325.3804603831110396807358949597648474 0.6166510054429823982921786282376234 0.0862431220196154555851018858843591 1.0901907407449627984451302844020238 GT 1 -138340806481200169744902785385914.5482394059511344388341209791010408 1.1861145106749633663272655426602752 0.0377413034102295833441435506285669 1.0384719490937070811156919091350692 GT 1 -1133856745120328525657449060195820982297.5451279027815472626816920680190611 0.8914444476673592509379885772396575 0.0960799406789254178005947471650754 1.1010143524546830210233290821104878 GT 1 -13749633609675173696.5485331014512043482161181016174005 0.3506647289744244683458263961907010 0.0708051216866840028045364683255713 1.0734367900325029148219946425056613 GT 1 -337538111396858547962.5897207957098968664679878178314596 0.2024496755975513976083489433216496 0.0312393351093818963121837071249147 1.0317376894558302890803769092659205 GT 1 -60308762869367508313362406018626638120839.8570829632155079988849003026071590 0.5792999420590787816634199231327731 0.0605155555781561066016360201184299 1.0624240175601622003014740095869905 GT 1 -925.5928074949949108782508606129614868 1.5963748729715110055936717946861427 0.0237708839774387465411923921064217 1.0240579700954037947731224235015008 GT 1 -285927287.4816628244092758866242014718581294 2.7368322038385634223972051653299091 0.0532885895092739441237899449174976 1.0547609730090515312395105529639427 GT 1 -1251.6308365539793065198587024333757122 2.0600207812566908006859932064942212 0.0822143398361310765310306484028474 1.0857914012839404785223333039948277 GT 1 -152821275437114826430597609137177653900246.3700890876700315193323761260104659 2.7466839616635429724597194100418031 0.0154774857915659561062235986642229 1.0155985124915775069640521055499360 GT 1 -6794784148315746228905247851715374469.1095103879478283813306132075663789 1.1040516745380124858717936917328672 0.0832627238559887483165591317494634 1.0869343514354343845101454209817618 GT 1 -186371887262294065.2551914526210887783900248212633628 0.3425410595983463670779190520709081 0.0622837231083391218397365112337285 1.0643078523925468915940599822128511 GT 1 -16761196264636633050552115.1890565691243885072114105264734389 0.8793191660875740598771584019251784 0.0937921714032864410264222901485222 1.0984866078582380379858046226218647 GT 1 -25781298398464210.9213681292646913684829365830499789 0.5837941228907468250750208160845502 0.0697702352699576268982153999117903 1.0723236644993393284248065017425639 GT 1 -26590417048378066247793577915850011.0247781454296231267093812531257874 0.0867579270366701726004041786733557 0.0389032603797131547900588375219058 1.0396802095004619321831060112241045 GT 1 -4769366070615197630850915136.0691643823514414881846816243825574 0.2099195654276908013657804662031086 0.0553148288906185578130038831044065 1.0569035592611436785950624104401666 GT 1 -373662584.0501210629440422145631315391976436 0.1453234518569006251886542965741021 0.0825823719749499380164993768929163 1.0861924818030536479097234825253530 GT 1 -4272729720519724939051327689152614799.0961397120824639555766434620905527 1.6064232388760522713747103815965574 0.0980583852992607897347826197125287 1.1032054897276563866403678285701605 GT 1 -109308052322242238479606188.5993056951972586415636404450712363 0.0197847154199429570452903347848802 0.0118829277006149623186013294581119 1.0119540940240091883503417116342776 GT 1 -3866149978191105978214574289.4623504850975278722112088147026754 0.8807704752783174576441593778070429 0.0678415077224060204921758245004358 1.0702524226626049406875893499607778 GT 1 -64451425876830653409647.8970078661841111714674038943712623 0.9243343147447472534690227829956191 0.0851081458396704984408237739517837 1.0889494128663644775195503877697543 GT 1 -3546916357090030733587024421450962523700594.0764541560040492145480592598382100 0.2730506734104923971468985769088453 0.0711743459954553337520090063616030 1.0738342283893017662608526847728082 GT 1 -23086432590012823452762750401638468.9645679943675670200907857425215897 0.6552773377345587968128774386746418 0.0920461540960501831870725121066896 1.0965617321750154283698039880349185 GT 1 -6045808820640686142362802972949015568.9922236500411394699856684636391540 1.5290670246187131558219079964056549 0.0538981728348219183566998669441356 1.0554050760135060501301871341489969 GT 1 -152967119645415390709068039308186269946.8947081738099618713390518199884144 1.9450701622973584991071166115648358 0.0825372904377091425465527863557494 1.0861433434082206162847302585336097 GT 1 -30737958.7350142237911618339868434371689229 1.8265005275047272213877845656192883 0.0419227482811040344964846801585841 1.0428268657249189021116966480594669 GT 1 -7878884010235759536037168474.9377089458824752233106519543884668 1.1696352064277167747557432278391362 0.0657996901828702281343289180663421 1.0680643992752101182742436238666052 GT 1 -52514537350081698647799570189818267325181.1715588268521112659624770434251011 1.6829304125657048782363352815850399 0.0561403137268999672489664733482794 1.0577777613068363232586316396090250 GT 1 -418228728816849598534414023338.9645198164187260773691562297836991 1.6780871797297301995818848332643525 0.0180564551838655177124856195523834 1.0182214622842211520995574586068511 GT 1 -129114179313307067126.5343709046178093988273981198780132 1.4944864217117378158148630965759086 0.0271153165957501000796370453074237 1.0274897203621671094531941650058771 GT 1 -966323471233160.2784797189296632128190891953808445 0.8310443918088100808840885543411261 0.0930805789009840720680651005547335 1.0977016739392785272325038783299966 GT 1 -14344489750291884278410553902174915370975.5636582894293638541387776608174495 1.3053688449992746201759209881504246 0.0297556107795362833740244228833235 1.0302072915682251071917253179484267 GT 1 -806822319358355.2242407568638697115162522640752556 0.5159889926077044786177525157438639 0.0405592024570626838777343025744428 1.0414046668002229305957320941987281 GT 1 -192738784402370.4726277481203418828386598543405175 0.0924053793581608852654948456608731 0.0473676683246912586735719213223078 1.0485262507385711294214689628686494 GT 1 -2904474144278955.7986282737442813276014164733581659 0.4205543232768907729766964086892297 0.0456785149097053928280475674432054 1.0467546778332233924929625003274222 GT 1 -27.9198810977176379145612202873053595 0.2962416872531113935281500544525840 0.0208038649422785003898979039192174 1.0210233142725905949889480884306760 GT 1 -3883298.8027619700334783875129927956143693 0.2225789113883488625917143906449702 0.0617137557657467165545710377291671 1.0637002121002645610052342272628192 GT 1 -168910305479003945499309909.5422437433875983397048396136290084 0.6765182348632863573316419656622980 0.0658990092210839329576492246751744 1.0681707194263287599030797937151793 GT 1 -3865707744218013396179081387693722653642040.3598301585620716206451351926310584 0.2961680964241449254132394863860976 0.0533535209640700149717954392606721 1.0548295616844210454466844937741219 GT 1 -10898844703377292013471104454422.9072627652436092880150325417994304 0.1232652795360204428189302045929570 0.0794886273722948488659175258498829 1.0828259235480569251902648246126673 GT 1 -9170949177740659976557751357121.6988234968795519470900587379918802 1.1380932636832510944144495823812926 0.0574392773023233660519189129949064 1.0591549344698789514037654559450186 GT 1 -1293491316898642.0545228745501403539478563912719657 0.8335456538659493867677577683505403 0.0827834750751631150559354622697502 1.0864117114524039241863996076392265 GT 1 -40678049012.7997500581921292994832857069405917 0.2473215859784776283651157636806162 0.0469146639684210172511992811291580 1.0480508347076669453812567286025856 GT 1 -523019586259.3441176352869346921499997690830211 1.4309213176145047451230701655038206 0.0078788885777794742198858457237267 1.0079100910221746923244249446129158 GT 1 -25014916873336182.4463775574915550345266674361983249 0.6524645580279711320461877322133010 0.0188339217990886272764552614317467 1.0190135389433695554582409422031710 GT 1 -4637615376192224733974164029002246441.9335382491437994280811173354898337 2.4021246553781739255734821117849963 0.0841002641014610955275411708216704 1.0878483789250886081150071243507051 GT 1 -46701667861630.2543745367306019429494830356102368 3.8709422376766585134414170929338904 0.0150022476030187347477062679876488 1.0151159196431274226343538042090577 GT 1 -1010403442950124719.9338018001563529320242046253411936 0.5575098981979158933948794504691335 0.0111742759317016227549127272089774 1.0112371771758661810387689096079110 GT 1 -743510064057474012.0725427228961049742931510566737357 0.4938065949724454532574381350726316 0.0376635345908825018424442217503165 1.0383911333243183255382385268195223 GT 1 -753.1119202293912024475493447320171799 1.8272338312424970075422955785652072 0.0076905515103509714574572679848325 1.0077202762997060530486551158770061 GT 1 -424481832507328534.3888665318167050434858322422443881 0.0430445538202708333443526102031370 0.0935704490155468438230542895547564 1.0982419672132385932633109356268612 GT 1 -5002.2828713632659707161739319766627129 0.7338343033555948477701249074658371 0.0810966122424838393492680708958540 1.0845742897288931147599280129314995 GT 1 -1.6893865287169835890291245965633659 0.8489733060606385568534751407522578 0.0016575834563889895800764606757068 1.0016589587678522408636705470822365 GT 1 -583046629756898409563109543175720286.5216435952578268124489571130479856 0.0362311944496625985008150627745562 0.0879750344521924072233286843992963 1.0920879147783055726369092722868250 GT 1 -2.9266246753372986360320940466634806 1.4566787032310309880204543386457388 0.0139216386210094763112423651249903 1.0140194535221904981200993300406027 GT 1 -67597746.9370551615369136853478274134157730 2.5639492667916046131982205552579027 0.0091778886106571510011351041806256 1.0092202649129359255248090718292058 GT 1 -1869431943139468675613962886630.2022514025831325915592960818231794 0.8172786103430728675549778165473452 0.0267775843308039510412410666531897 1.0271426353857057017568536734475732 GT 1 -5659507792649642.2657698444152205416601262668834204 0.3540799907253851291706599059931785 0.0640568870098488885296399654548444 1.0662005810714487094837195656906867 GT 1 -109745705930911192925952200324868.8170246130803496929747743528766813 0.1178654661273615691017670309048025 0.0697896210015518716360613498745964 1.0723445044405331317185506051889792 GT 1 -15067383498296047072.0749235092701549937589827296327652 0.8205590754332524234321091607965785 0.0588227949278161977447930048220388 1.0606238414275440561740905163246284 GT 1 -275580494760286077095787346.7220098538925196796380934061573572 0.4484867805970666672591539645468339 0.0448342165059335933364161468675335 1.0458703582855792419844788093305402 GT 1 -3547222229.9634149003871774574260371463888521 0.0331798577203993672210869912107084 0.0748233548901089882435922458008014 1.0777705920153507030332316062759714 GT 1 -6142.4038242247174969254884802426978410 1.5522561480832350289168840020758163 0.0844322404326110959476835018851800 1.0882109038791024487279969812972290 GT 1 -6251635748564185417277.9050112631111026443236358373880225 0.1410676148989266631801754319091602 0.0348131865339108532405756107722805 1.0354336072950696384338222661104734 GT 1 -589884196454805995679313288377.7070985558871886478555924992415597 0.3876814468474401389877694830457355 0.0081680838207659992778200016637408 1.0082016253891797768157131065973998 GT 1 -6255380439.7544923684309620494878397262614943 0.7396807829222037037403146525970753 0.0824364416507960594565751570058507 1.0860334280475763294259455550634292 GT 1 -28925158.4959445235455048401645636734398529 1.7141047344380912862427740017053362 0.0335858044977131276333277516431226 1.0341627628549509549225582968065646 GT 1 -3895.6644454960234997557867740151316507 1.3765015293330068585804652082310399 0.0731034662345290800626287034512764 1.0759133337065753952642648361643135 GT 1 -1242042594460.8084689416748124853168253235831535 1.6644454400207831960663496131501957 0.0138583512746923962679065041488379 1.0139552747327911794066772914054285 GT 1 -567282497557349755509907.3657708716066598913686187573247420 1.7706052475467124764637698484958520 0.0831747395923857661203186488109975 1.0868383806006070273258434141226355 GT 1 -222194532132753.1329133972292463674053610386953382 1.6771360398346485889163006760833203 0.0559018294877237764370404639084803 1.0575251240569236506989263511585482 GT 1 -24797486940098.0859148978835007362557733961859546 0.4442336601335828048711672828875995 0.0582238369262728331497281639273170 1.0599876514592976518618548917461943 GT 1 -74115594304193478383702370497885366662.3694067217494391877656150346051914 4.6464968553012384247790410538722098 0.0274720942176827148046154952280652 1.0278565090093832605883355647202684 LT 1 -1124548250657164093079391148329.4283345793050772542148724876963810 0.2054870257995901167837830146090458 0.0562293165342744851214756266987154 1.0578720624039868089657263529054428 GT 1 -129450424622.1024432459337521960866343161662029 0.0741884973520726930619136086440416 0.0630669767194861856526963197469609 1.0651434792552909242074160370749421 GT 1 -362306309147339317027586043.3607550803549826101696299414360960 0.6358617780320456294800035445750426 0.0855033074462820336779903560047011 1.0893814278294703793108866304087136 GT 1 -5015306691888.0939113925592445869551103439651714 1.4836979644896666015591854058641376 0.0376943543936983019205117247257668 1.0384231598529306234588940776762606 GT 1 -80368550623.2245516698751787776564140073795012 2.0812524052770634506475394165930194 0.0512419948863836859230707677613422 1.0526015127704846888706002181388530 GT 1 -2379011756270.5836490619689018563585771553629216 1.1746153237049372442588882573717454 0.0409112199130485597190183585774679 1.0417716326933118343810765418541537 GT 1 -20802881369198190302663037998553332.1519579357805181014100772876107398 0.0675633324819998955531831687913703 0.0964963320989882248024555027246562 1.1014751093000845450558853685019825 GT 1 -239763346934711489355502263802632.4743302984517578756706397620465738 0.8560262516013591924671906387274979 0.0911649832390718492320350786298766 1.0955917009906747160979830310361986 GT 1 -44840526.0937704769819841571028417933844790 0.0478518043709119783704149148513574 0.0473847510910009045532258602149683 1.0485441830708141281522424719146753 GT 1 -693563590044500086053406.8785454631791925562244366197734697 0.3030653136997365325098002702629167 0.0255159803727475971206174780459346 1.0258471587043793068641500858653535 GT 1 -1748488522794368228938266511436447.8026694247078503514341438335325750 0.0706725443127504499661004711675755 0.0415658334940487696308223389062634 1.0424544027301384719471438657754916 GT 1 -5073684153210.4565796261204417512062515945275084 0.2865946180952641053015435929262205 0.0310476043510773065774654138846569 1.0315397955954494163431897277392932 GT 1 -12331842503567988733927.9647691063472236383831618649467510 0.4755800090962816419757458991121615 0.0121768824842432569722795296622340 1.0122516281167029171324299393558855 GT 1 -2378056102635527016927819566150887129613679.0097023357336121274423138814091849 0.2506411636665842561849469461728788 0.0396367178435683568524613491942776 1.0404436471896841590192136694729310 GT 1 -22848461250038833475719304990206973625.5371765220792921017609407960041632 1.5546951267948417470594811078055841 0.0734445906847834126008985483362020 1.0762814300636237005032830671129692 GT 1 -6442889250626832244298.3821254809681275606938053122515596 0.0305434361873885908914582365310615 0.0685123368056200014011217429378833 1.0709723330492595298355168459777334 GT 1 -40425689576519833452906542593.2676241451309317898133215713365776 1.6224747135667949234896632501692141 0.0167530746123855962587089249688003 1.0168949946645662141091938957951409 GT 1 -143.4698141300266790026225036533293694 1.5199148728201705952333158903844402 0.0188997849204538325382282309537794 1.0190806685899577675237115618345738 GT 1 -320107461357159509185585396904747137.6722918585152030121414507363215541 0.6743645456649265336379501466970086 0.0410017137575531839099957920337740 1.0418659911258984667185457892428894 GT 1 -25600323695308105063134959204208377802689349.1607873197864493425089368519900971 0.9681408900041987974533870378622686 0.0159701515721801550219362718196798 1.0160990486218334703147069329075830 GT 1 -124802418218268005023456762305169146.9865506073521194505780167994179743 0.7957013685087725250746080965902608 0.0180656177675742657965740770209893 1.0182307933975073884548989884567803 GT 1 -7299595760297089848710.2647003515623795090639629912666497 0.8340100861721547830660270866200039 0.0894702176981467508681497462971392 1.0937286705176300054506799206606507 GT 1 -122386539573995461802353246447522076594562.7007431977111881607441078399771906 0.2973550946042696936134334130501107 0.0216452079328334339130574917493019 1.0218829016587493445340592620214658 GT 1 -9375236.1390122182386080657464657488492198 0.8647834194672282042436666466611160 0.0409695834106969459983592467581726 1.0418324876159543176886785777063740 GT 1 -1.2085667642901623591970184565343894 1.5497497623473610873203463748536901 0.0187320853662149374122710117923121 1.0189097531005468879576479330809260 GT 1 -58902651305795685.8278151917540064265983619759271958 2.2513585444984562419210501018145573 0.0207010302449519842593739463328100 1.0209183002777449437345338300764330 GT 1 -51.0959743550092073942181561446826782 0.1220769597490661394660432778862232 0.0983858230403889514347234579032355 1.1035685921570237248938538551640495 GT 1 -6798047059956517119209708282280430745500607.1890763467797471468643569865757535 1.9657249184716684963399321228657463 0.0469006649421032938818475532275246 1.0480361467012735523080744790173636 GT 1 -1910510.9389096027092005335936884150775944 0.1556672071321011276047405507143879 0.0176141259411096218719234675714033 1.0177711007043538356514574636376205 GT 1 -98120745928.2984245640476058255363183300691661 0.1802774910931630555695569297428085 0.0908577340775619572724538028349588 1.0952536888852850263126589338878368 GT 1 -359818111551118256298830452242917119.4575083976863909309820619163171596 2.3523458817036097503242311094644395 0.0197462836523698537888156446478473 1.0199438465925724304809037585882772 GT 1 -1702406960907609293.1713415578497985270038964309468740 0.8208082898653487986586456541869676 0.0728445506402518952042666703303497 1.0756340366875955376504464096689871 GT 1 -73730.6873860402018785362547353182577516 0.5390622423041157592063712502743684 0.0180045953193761056971508456102653 1.0181686501899197948795092794843699 GT 1 -16479409053413728.8340942828623916844869605190170071 0.0817442794079060112667860673752739 0.0252705586090002505014819687627705 1.0255953425026627246817543524503110 GT 1 -237500304953725546105468160617.3043684873658087950068221345497821 0.1094695806176976228787276465124103 0.0085333540980501543843956567801396 1.0085699716265015185325097595426865 GT 1 -6792624157835047129559.8922401548449618059882375731627339 0.4753604193014695802375183049458188 0.0745972873633091918396658500559782 1.0775262712009224879038845181356940 GT 1 -1787637981901892702.1305255365433839425932306185235297 0.6293905900978611461410724045817032 0.0580294728135123321481707657824607 1.0597812923830426733223890655074718 GT 1 -3744996996092636987006688852005271228710.3219339002578607540059851874180507 0.5497967600627276917204177065132094 0.0583061803781854835658588585208527 1.0600750894888087635142881609187202 GT 1 -1850238908831.4290115656192683601558793886252297 0.7388626177054917170381640452735985 0.0616511988240519464363911748656613 1.0636335428329811428249893561499021 GT 1 -7817413371874729649091565067715635900.1346156742986338905802827201785702 0.5048151050390707949015475954863323 0.0590313550041756253365080522726399 1.0608454608915250371193676333396916 GT 1 -4313.1097788911231348489482654348012051 0.4973250056347787150902243858254162 0.0203240756345930561030952878648609 1.0205334514303780728057490276518943 GT 1 -7431999172244888543578836909521.8738163091019536161377108112091253 1.7020370697911898831580579490475083 0.0954199754268803130291741891235908 1.1002845042371260831015913132320687 GT 1 -64698012033002163140630840729912183.4890243469728379373644493690589025 0.7240516276476003600743982978728952 0.0333429738547500363898641338403111 1.0339115246786012693474016487730700 GT 1 -6033165906140162204943783109.7492381433227157632385749137523997 0.5547654948812301495528145800391757 0.0959208950564985388808176249487727 1.1008384169498656596258404090876027 GT 1 -270351624.2203862467630837792699941881975317 0.3898659990907158448997277450534721 0.0821113085395656871731880951488519 1.0856791468455838999849960412401994 GT 1 -469916832806281439564070867809127.3612287554993729801483146649262487 0.7348036635168543828893675988662528 0.0969270655613997834739229229228381 1.1019519597917998110649497502494883 GT 1 -73448491137526731178049722011341.3107788450077248984547967132004410 0.1566557918681374299005161945604881 0.0213316902780404328299468254823270 1.0215624990460377544791148707412574 GT 1 -565495298468951100149.3748634593289545158213858376302618 0.3188102285447968654216859031945812 0.0183421035453552164421271556714236 1.0185124056065277402407530356331742 GT 1 -205631902037817930165893536743.9744151566587902592716124595111446 0.1951271806529056767830349912032467 0.0100317072743341900690392240581000 1.0100823639162268817069680668119379 GT 1 -75385515751360530.9376256963247488639852444960719539 1.2734078702836170228669633997782201 0.0009195697832387554098708165780216 1.0009199928469094748281545215138359 GT 1 -644813804.6021946343121583548153829596288971 1.5873587904157355855707219157232085 0.0129481729248979449660293574349723 1.0130327312260236829375553476063534 GT 1 -401620632134500771255023921497478964284313.2932265435387264337589288625114336 0.4114229866004310435350509827291199 0.0463386783854277262425929239019685 1.0474466793541454925446854204924739 GT 1 -1070408861693745398256229.1932392747278945575430873568774888 0.3425920308424084211223142722561689 0.0688745619442684315276154298280639 1.0713612760272420955320612902437019 GT 1 -1841217246569530519.9878221732801427148716897590780643 0.1304086572660208353404222605641096 0.0690158189045587877075345467074872 1.0715129931539982554671734689441332 GT 1 -79060388745614838944.9234638189722580437820528257654356 1.6498001423757158922717071984883624 0.0055851753083726516044720153065045 1.0056008307193405622628704213630402 GT 1 -226634506378.3163973572639447695139458788219155 0.3810402821111892006449172993093622 0.0999520039163207355094724844789285 1.1053071880979000517148634400131285 GT 1 -4028314022123130558372383463518018477.8505246386802497821589157580775692 0.4152008665654849011677309636931679 0.0390283741454433897953204291178407 1.0398103960933576889839747220202836 GT 1 -5508564887762973470868.1952498791426085373104320542358147 0.4424543623583490059525876263539055 0.0658189474514149798420205488717235 1.0680850131273211780609149264122188 GT 1 -197019761648111.4875728861806109166840247737551400 0.2348909678915433937893596883351941 0.0577192672934406713828421072388019 1.0594520310690374543394235516387859 GT 1 -1840748752835642367622471586873800.9921090657672404999206996576832264 4.1918869431852697991278072349894289 0.0082018446118308013961871060794499 1.0082356647915380857077585971836806 GT 1 -1633669.5789518108157104137081987508292565 0.0631584263760769697172535985006903 0.0711018997933383583055539969304210 1.0737562337983519816977196759287436 GT 1 -17256743553032856340997.3002252552894290491128994453637214 2.1952686030003541846920216150684293 0.0415903670947927429913130797679879 1.0424800006434925486442658915179938 GT 1 -1750183379.5756987483508483641334254732417375 1.4000032166754138363981937681405277 0.0732590515822097282581161259191952 1.0760812040151351550720153337054462 GT 1 -2283810805282172157.3818411163420154459019494498661763 2.3316914361813223154138199396093237 0.0973880482880149921034113038164322 1.1078911224662744373452416151960562 LT 3 -65886340915856922782044503835744.9457323471789409126907890566259177 1.9222814193054087562166503614427873 0.0864941385409388223999380678018393 1.0904654866996462255656315029397246 GT 1 -220729441092804.7091142621280592048491860293310912 2.7102694492976657584460129684674670 0.0465140758199118422724999951390688 1.0476306163158723758088119105854757 GT 1 -1643353787843325040898344813139202116370.1855406854308165022311150124520493 0.4925519542749411016072335574823096 0.0960020186839777423263652015624346 1.1009281516499513343988897215948703 GT 1 -3620209.7978200598318685266088035258544611 0.7440512117417433931839665330188245 0.0073688045214787535213347776913548 1.0073960882765852088138034357010823 GT 1 -14803507718298898621143188403589028024342.4661796625754731691561893489107328 2.1820422570507730560785375316014374 0.0919112860850699907667086508061965 1.0964132026039445970269048853504755 GT 1 -196567635231252192353782999997541621540909.4203086803271919158927460024112032 0.1506980705109477872221405862434520 0.0155495520674889310976697589594511 1.0156717143865154598665929887157532 GT 1 -76050416740285259822044446.9608448808026267526843124146537821 0.5377562052625134827035314867683216 0.0878167824448127248876237270864229 1.0919144126427022968664866934557257 GT 1 -4291956522419525830341502570481285.8095540043130878750973838319596574 1.0930881456546690247130630329569824 0.0195075428675468439216578900859792 1.0197003262540075517928564678006496 GT 1 -24414478912455616292326238845011767.1349588888625232238540335770729549 0.4492211705107243029284420742067905 0.0776473028873748011451051055402361 1.0808275937440257555536606597304382 GT 1 -466173674.6050201501566278177216178026498053 0.2150157332851087816042085643100837 0.0695732953099492574575799334969618 1.0721119758142106970317779645006667 GT 1 -4.1846682717036187648355046114980176 0.2495000551043011857085484419443230 0.0377220320661772423128604384757211 1.0384519220976947649319914385543108 GT 1 -1345833224655013553455081706034480535.6051434884831365064196253887200234 0.3292508481248802895494818849519107 0.0917780309606460385941143881744398 1.0962664709617056244002080898206845 GT 1 -156394529361.4797112185610978586774461734622975 0.3044061393743672864678458008048884 0.0544110673705770544666193292193235 1.0559473364708957403911348072439868 GT 1 -29600135673432.5142837188363499939057471338337057 0.1668705767506551271050614403040873 0.0943029106825936794806459336661530 1.0990503673444944559774904634038498 GT 1 -684956708854.1186611466179014774142103372386829 0.9862613883603317792937844081739052 0.0070881495324874192906937587288480 1.0071133898063269239192473180065471 GT 1 -20577866091082910.0982126806720857173429823610911708 0.2852661050095924819505151971331655 0.0743848271325263107036648532211080 1.0772967107700052772065754409829153 GT 1 -1729582425743636446767657479594698.2912303706572034948377819547503304 1.2461765860304942461194413509886250 0.0952284756500467282379894305961968 1.1000728264372395794452176828392989 GT 1 -10924.2450676285595251975127492111407268 0.3442461103634872136034253436004140 0.0711163125933763389572046026415985 1.0737717499371518846802837651092103 GT 1 -31168388373535833770329099255274456645.1263781101570193110160094268005749 2.9927373054308890256417450146990014 0.0127405290584303060453745674777873 1.0128223856058149182823228816836546 GT 1 -691285965216176869497938522642764627330.4155995074909746553415477436428587 0.4882343369496587400500488735455560 0.0236778996971946269574342747575696 1.0239627262118764738290145947395497 GT 1 -10290839776964472360037758123621659204552277.5628290603326675808982420785880254 0.1030583501946464680880472315746478 0.0567661410154409308539779581618235 1.0584410324128786994940812347266208 GT 1 -17432593975819848399236360533822244417.7251921286966198459069551651941241 0.2696486847547662390695089305330713 0.0127542103875329393182920991047157 1.0128362435877369449760363535032623 GT 1 -65856115367567474531596471608.2076887484140384709665953405904902 0.5905513462290658918026727256679376 0.0791208841010184498172653818551377 1.0824265044368398942590083276280713 GT 1 -3881.3653066221847846856866245926423539 0.7910178290248273539307403312637406 0.0356846814267829149043125926035923 1.0363369438995375067645837734897828 GT 1 -12081728989087790987648730465651537768641479.5633815847960321850022892907192963 1.2338940193780237598211249846960820 0.0541525685046730766237536143175717 1.0556740004259550761899300236988434 GT 1 -21374673396664538293327385863974.0411036082422799038173251302927978 1.1582446196810790086844540306589235 0.0087401718184515841482488276705018 1.0087785911449826292716274990804297 GT 1 -79800264667960718646428082126764941.2688018991290766128108527127694929 0.8170855530281332747178740540015475 0.0549696604319796977463274972674645 1.0565382466407759868659985213888671 GT 1 -13973070.3125727355711754245420288293630892 0.0250051167076577470795290380936850 0.0595989184253027487901560367858745 1.0614488121949175446957631520612484 GT 1 -7718530.2660559486173537207861721565642429 0.2498031568081822850902229009362517 0.0300426827163588924981245538512623 1.0305032112532301594118889435121837 GT 1 -6446906106385194701.9911390791290324417189283728224524 2.5490334725083677536376818645636258 0.0268202685907407623705767880624538 1.0271864950372250168462494750522681 GT 1 -884974359960207267353803123.0328172255800559191003750521130653 0.4209044093470323501651921288875958 0.0947328769395663098510341265238602 1.0995252152317281397893176806846914 GT 1 -1908768413263.1225312384604103918005571826657734 2.5172014717609723636466040363459609 0.0112914029272673598283448461217474 1.0113556347868927423135261827973870 GT 1 -65979555420662688144.5143158249691692420838269823673204 1.7980652842641282250040753909733993 0.0443487746949186299236541994677046 1.0453622595830627888820573256809973 GT 1 -1193725321256451681383219387263580.1459735510837596339189989826632837 0.5125101792126796615454537443576734 0.0596083644135123064587475756435964 1.0614588568831210322085402386516978 GT 1 -1148689146229920540.0614582770191373700853274782237536 2.8992715746063615824832281612660966 0.0690963237356822527829709157965421 1.0715994697168647148921386110617234 LT 1 -205987.2379177497862788968205688457223942 0.7062025924088259127153198251922536 0.0462608107970745590903329340920961 1.0473650314905166298774220360899296 GT 1 -4998177612726155023389989532239.1073273847601259546662352227557487 1.2179529734220503500073112754721499 0.0026380733161030054224866545157874 1.0026415591634771842390730145635193 GT 1 -10378285.4392837023073269962686418870761415 0.2166925233502395795648329947806925 0.0097601159091842500262546577244573 1.0098080580427004620540777010529899 GT 1 -1184974774596782781221949243219.5182195227444322144957367739169145 0.4935649536462340957268903068721023 0.0986435844839242453487586559346788 1.1038545218847376775668860972863388 GT 1 -523583000456810484028224668.5415174766487417285426351685873623 1.6157601518041360791303199640142901 0.0300283142753464693782446601692908 1.0304883978853281337416625722120209 GT 1 -4459387500054139.6477400524249682190121014064157187 1.1957544825312553403871550593550096 0.0135893777534662275464826963137029 1.0136825584891190087700188671839579 GT 1 -213231804147078560698689199923.1233196378046348689850220309560710 0.2677822852466671881339098793717128 0.0082694771269880329065744089930376 1.0083038589305234924827515197718311 GT 1 -460812907664683793034060683724017495258898.9113882613314915381317390360941285 1.4652873595694380040474763819246310 0.0810386153325287833419494116166950 1.0845111763694724615966012773254752 GT 1 -5532458357409176176721799449189192114.7698360224241878471460632413926925 0.5667811518250564244734600412992646 0.0681699978686274560454137103908502 1.0706048820802541068850392558632572 GT 1 -451103515382656041172852559523.6684926959103048141362450071025308 0.6919035807772650989192010729714580 0.0816401940466297068045683449081357 1.0851660196692387360334499989394863 GT 1 -26692252429025723656555031523909.6701544661412095440721261799122032 1.9526039717311182877724361539127173 0.0257812592686290594279557087201281 1.0261194207475359842893652534416824 GT 1 -22362485602807148317890308152476842812.3987648436298484012549824902848623 1.8707948684381744380703321492125226 0.0025449701572588202235453531834095 1.0025482140988012765516968197284452 GT 1 -67787474316913068646926381969082.7363328135055700202810075236406120 1.1398020874709032940211392652294882 0.0297294288182840675769112319502301 1.0301803070184658224572495911801802 GT 1 -1419996666464256333418208519104278068720.2322444576866440015347881500146016 0.3132031064605097844418983034496570 0.0755606276719436019628182214537610 1.0785678091825160256676625790333765 GT 1 -601893143760341.5965394500271117971908754314052600 1.9275548598133569590047929138388727 0.0865159078530138848428449123486464 1.0904893174952487139099028912605094 GT 1 -47896442108771483339623.4815359695144175771117510015985011 0.1033099546662561480854408959031559 0.0415565231371265706029572576005763 1.0424446886443652040038218969407796 GT 1 -211590415358257747612.8627446140253585714956989685582441 1.1458741897127562367326082421892725 0.0488400347707653536683389225829141 1.0500730231906098762159209543016064 GT 1 -826336074709030444842731711803.3750089489159419990785242324638416 2.2867840149889313217205341876017219 0.0282201182437326540811358353313541 1.0286259592659218851779688266238056 GT 1 -66016707884765902456445297486672098856.2456398625480511769437886815175856 0.2375947071170417019997531337850822 0.0189392595087178191628479976701274 1.0191209044209248843591830613958178 GT 1 -5677712407816180464.2004026342073266769710891788653473 0.4337566221477611535388317996714677 0.0952682214539709842419966639948911 1.1001167565078473949797746812142194 GT 1 -24252328651.5485093099492372729969922289484165 1.2553435077817752905680505582913342 0.0454882667527729030377468795961211 1.0465553433332421614076215271208807 GT 1 -163912286222.8360364435603831830629138921961288 0.7743181598693055059421908127101945 0.0437654385451493021352242334154531 1.0447520388555377618154949622828577 GT 1 -1267319344841717477061984.1650333552984910654207740578533683 0.0114450596941486238288318355324829 0.0143493956009430269310820982949351 1.0144533437718836934174569247692363 GT 1 -428504.0267632226094381924171204177825164 2.6869888144218350941855354986285410 0.0817473528854740310912372019461529 1.0852827115045651527930551803263163 LT 1 -26444905039855179761315881789701.0593161896105526752369564962133200 0.1289972883951701512602178641209438 0.0974316977764595852850680944991437 1.1025109105046568113673518677125423 GT 1 -2301272740.3302468857328237153849414177632445 0.0052050258458839404295535229569470 0.0749073562340568802016983939820478 1.0778613910622901252885151098369602 GT 1 -2545655507169356631763.8665526132170257246029990364052489 0.6790099926450152636214126565949599 0.0977076812963441057504603082651182 1.1028167330361426431466501955483676 GT 1 -2976521564931.6067717329094748692942131686364755 0.2298742403090634205279960893103109 0.0983958411188200982771360496817324 1.1035797034886158349082292059156434 GT 1 -104212940661337794790343771153017321080.5532375968960133504631425075576048 0.7549554519974798461112277955232363 0.0019668487667873065481341528205070 1.0019687855538178189520212583127736 GT 1 -1997945935617674.5725261139208862999437527447382838 0.7036839689245569198244290484905601 0.0485256107270622573973693925483648 1.0497425087690433981349085159418432 GT 1 -47284839985892092464888505193521888174190.9236250987810805442142300496169011 1.8539082009825093860981058004407651 0.0355033948753950252545035226611423 1.0361489664718843665636000250432513 GT 1 -6455492055993501778763616234479085942.1166537670658853732319789459256421 1.3532278130640643843780142495612766 0.0870108869972443997624475211923374 1.0910313228802195048458202926282736 GT 1 -6696.1115915303527530662575011204587741 2.4871875804238065938323335125062365 0.0163584534606673975286531048429197 1.0164937302689022110042065194011078 GT 1 -3570667.3739689025352005073460271708258918 2.7875413524083234171215068772213730 0.0701750575464808915773735215088361 1.0754058764744966853544965261806484 LT 2 -395356247181662916893444428839.2918058652938530215805628530745831 0.4594649685690713185500481385734505 0.0348277189352511199852683678434903 1.0354486639768877675127458606673706 GT 1 -122821668.8324498855804344236620997300987633 1.0245322175954247061093875620428079 0.0253368394783015044999761802215742 1.0256633440630069695161200276519923 GT 1 -557675563301923.7971404549956812590418667815237159 0.8087631537743243113641513762257015 0.0988205494932534110765499997703784 1.1040508730511510075917122005825929 GT 1 -1543992890015388789552674184066403763117920.3736671917033352872675570905099123 1.0707325374046823141578776060003062 0.0820837206300001431914549660418331 1.0856490914638783572514948975866747 GT 1 -9704542686.3219753487242018732002693773671494 1.4131155128052048306000678286705724 0.0458978639529763183416597387547316 1.0469845524185171069774369049168311 GT 1 -12741463996972967809816648004844328004480.2605034430129650554883412434849631 0.3205957837570124840981690513613069 0.0820717872605150440422752200136238 1.0856360910495877599762768114613909 GT 1 -151150324271624499607196696038425.6701380140219178661111709747630364 0.6785006553688424531135241039767941 0.0308713771290523479176724397679045 1.0313579381593291977554197404811422 GT 1 -70270370378416075.0121017689447151008814560663099010 0.5004977644797379995473886609946001 0.0433641853442972461169169701165071 1.0443325089054183475890179647427134 GT 1 -17519221689146058640966257242064826672322.7919461209473027202909334202373284 1.9715003143178661393024666947087566 0.0468419939106208088771613281694136 1.0479745904462658205371123963344748 GT 1 -61684667870460682460427145890040.2430464563397489715024507756311464 0.4569283987453130383975264143012921 0.0156493751765336708344624266286264 1.0157731193588223315344104914842578 GT 1 -8972132774783006648097475067595486415877.5613649529872823899283768485305117 0.4240751247574743236327225068689735 0.0078911073692034098450748686223514 1.0079224069244633703413898474889739 GT 1 -9144043351163629505199748529501122.0676106728984434223898431417867778 0.4639786726816940364265013702458597 0.0641401629441182926522509703257976 1.0662895604528759048267648376777195 GT 1 -256004164402857472427206.9022669001998875899928833989462049 1.1730497039089323088575781747718647 0.0854709541912402499514310474317475 1.0893460502463488603215898623615698 GT 1 -200609026386248654010722897826879011.8927414518358418694202066238478053 0.6132813290996281431367455458962473 0.0601076704245267862005582721648446 1.0619899532834541595021031177570980 GT 1 -1141588898283485652663929.0213278281951672252978268804702259 0.9688316182060279169042696947321959 0.0864510288389402804957653351766667 1.0904182963239258429915431170670878 GT 1 -16067445406.5896004532690113812530655559479278 1.3029506255731493955210735900657084 0.0447510940300236643996886611503003 1.0457833379371482920943282310426641 GT 1 -45634731245143433450764615.5595912777706789827243062996147582 0.0121982050749140660437686134595383 0.0410789034647462041446690290282484 1.0419464842977469145372361752628079 GT 1 -35754.2733172799276621257918571252864816 0.7699714601235901568921258742466881 0.0613173131994444812009242625301386 1.0632777836139507652690986589910421 GT 1 -6700350742667465035144205597663177288188531.5806398331888973631452324836614256 0.6414701155400653470861075939880800 0.0305390562587694090386407722187353 1.0310150900606273055651508558503978 GT 1 -470063991197814227649377127.7801441317360342202048120962870736 0.6502868549054687847562068938181533 0.0789182100475170970621455504640391 1.0822064410753695946095391705656519 GT 1 -98745326368453302267.7648717981732606486007003663060016 3.4607680005864395953345962151852882 0.0099503278363922936236752517001070 1.0100001632095355457513595978900807 GT 1 -18472041951731013.8471211556958005871251429866671587 0.2280341796047210099434970317021428 0.0130198977747072093964630371868595 1.0131053996046615574466079870882888 GT 1 -3354318568880497346513.0654080742146104881000704653022761 4.3937500196658413000009439796876675 0.0764033696713447338038341272044316 1.0794798499183100990556901780544656 LT 1 -3521092968862599538790097639.3839389533430410646343856323071209 0.8692018763070826268299611925348250 0.0651791899177012200572168351225427 1.0674004150308808492656783904940431 GT 1 -45297904577141451860961417763290.2216515160252347863583998103787483 0.3995912831162169346986718599357068 0.0816819745769528356156669214192202 1.0852115154329666892359412124669386 GT 1 -7743166354279705870025.7949705451764712882533604099529068 1.8254973522956908617636892615474943 0.0427968324096435100686638676420122 1.0437396137281994390971817274606555 GT 1 -117501706.8715097976520994722825816462694421 0.7245047140176426226957256964906830 0.0945312835584868035377888632467540 1.0993025506359162356778136199695061 GT 1 -39807608183245940555445834473.6476131475967283413232643095948178 0.7187456828167645081638442438062262 0.0866945726570719310939940021743418 1.0906849227390072810654530512673381 GT 1 -61152.2169289770234710965328656654505022 1.6717944528010914449706575525212005 0.0094255820480039171093864079944027 1.0094702839626002263005147990205244 GT 1 -1568607222012803360043504.0085174101179439842623123259778629 2.0975481454029073640985879882406606 0.0109212527867129176884390835419988 1.0109813274621487331967817241003395 GT 1 -468541871853595.9789226195865482362377372555718790 3.5000593814753735792260705332672884 0.0971648157672490722235770711750048 1.1022152624535075120148546921432342 LT 1 -35339830166800457448.4270409752232607965384562371635474 2.8244421955445733920819911266842442 0.0260949943139925969287811561761371 1.0264415101924727152137277101748635 GT 1 -1881.3924491233309948127958124436743309 1.8517244892084018249165889274065591 0.0513432955832479888134962974721196 1.0527082903731371147278587154315492 GT 1 -13450809574689326667866216200024852.3423237237820616091087792342382795 1.1375559258982218402849712500371958 0.0946679458694805394350854808513705 1.0994534919360019785734523357350717 GT 1 -1660779321025364967513601.0023676979232631770545840901502126 0.3445648888638522981688849271948925 0.0626977039886443940181115260100188 1.0647494276313362559447879892344826 GT 1 -1111392263982475.5477667515468417495932332212837660 0.8085238346223053382979113575792252 0.0986441098930098407047028426111424 1.1038551047942612399251002944042991 GT 1 -1152868198286905350.6131866545116787410901175269377680 0.8652247709929105055483985995426938 0.0753424679764361053890953066423953 1.0783318456740527065891597949872904 GT 1 -209329665471285337190912914517011072803100.9123709367245174385190959744561432 0.9447613808573131530981349678673809 0.0327234346206499884966803558055331 1.0332708209253714482508464336386986 GT 1 -3438512025193075668.4462746273972504494564228706832330 2.0168698600319306977727479493709173 0.0554023985377814487691110622656028 1.0569962607333604676958127456963957 GT 1 -79296.0924847900589443649261132633168944 0.2515338264731233107318200663341478 0.0329606001740717668827909192028839 1.0335160399680473984481811203385474 GT 1 -3032065178922.4002670763585714684822228840560959 0.2503351847201804788296993193913701 0.0528726219793398357422247264494873 1.0543216879557020612459763327249778 GT 1 -3547266370323657.3469234154025171780692123944220861 0.8521205268004725145552046028857065 0.0572125902920402192973030911921084 1.0589144621587134937914292388457431 GT 1 -4478056651446131039604345898.6165722096473895133078738854515895 0.3138194058389952397926687353851981 0.0931328913626650035896425566006207 1.0977593570908928913711943843966262 GT 1 -780077527990167350586.6501960235462745998960312260348755 0.3079167318524742529004345656214128 0.0238984936386907630236443414018776 1.0241886955575470136770828804878612 GT 1 -100187200705990822446754198930961.7997518735705874028985834256765509 1.3823726801899267482054415084962583 0.0467697008714578150453984488918552 1.0478987475143722750584682887533681 GT 1 -37098309.3997592270546737068400881583378546 0.2415087307887211875951524037399115 0.0321830794129356868913362596703591 1.0327123412181348195060066902247431 GT 1 -10986343696014556201338251.6173690072921584325648207337212826 0.5518603353582003856367620100767166 0.0804317407613651597986449540046447 1.0838510025232510619472117916562078 GT 1 -37400941397788484936276.3744284631009847529570109773125106 2.1662202474993086377473020105061656 0.0408353049130390158152783662959619 1.0416924825694813081431402295342788 GT 1 -140220092797692550990502.2406068806885807702478550321928409 0.9193150610866233084344866242905094 0.0536193016480807782263912436036704 1.0551103613358279258153380321749372 GT 1 -1776222512980909838682.7107498757421877343966188327497945 0.5663028236354361373509200568826027 0.0817175223710219698615452150667977 1.0852502258591203363356727888036907 GT 1 -498050974979382260017.8515947871232000464785538468637431 0.8953227458917951493645045293476609 0.0319251720413391593929604669357876 1.0324458930829887216059245453829163 GT 1 -3375608659743376264508929792580429797.0453346113785878481672229611426875 0.1590821355384918766515773982535896 0.0060028412572612395711461730518546 1.0060209307373557557759375449998082 GT 1 -7246039178.4083672194710617210662779099551949 0.5303387883216674061998012216407657 0.0777415253277027240126611587383230 1.0809297534206568974318191639355590 GT 1 -1206736279613138944878594960564055002390038.6076284879079723871972321489736474 1.2315990472421828857333469985143685 0.0142691589525857416864544820566291 1.0143719423276457733933665635803419 GT 1 -19600951461421686597403231571072511961107719.7433163320926309975944063257565974 0.7905270699636308126310033400625860 0.0989749311895938889142008216619764 1.1042221984418748029332208967597042 GT 1 -288773678653058109.3910902047840679183113669750313290 0.2628808476617293330076426943438079 0.0428566440616738432312576971143862 1.0438021015289342252867774729135641 GT 1 -39847.1278403996730589942725826214758242 2.3305975930729387837031372371967381 0.0351414338644794079679912622007905 1.0357737519747777575767890186498884 GT 1 -72516629043990905957493670.2554299729562452947395419987381571 0.3826638160754774887541032345654999 0.0854945163308154534991827922173554 1.0893718148114205019389878423924162 GT 1 -4287772571026229514113072.5884059931450481005599671650151321 2.6331863886453276593313714781039792 0.0823307105644084801207651208206900 1.0896091733531652372192766020651347 LT 2 -6503251887600629443856279.6040689211503050562898108802521356 4.9761503082582369924245557127008600 0.0179389109566403618813280086763746 1.0181017637607665376531780291914453 LT 1 -6334153934086066096.1354201934343918161192606623577423 3.4655162139188025258446524787633346 0.0063065835702065745604241528733727 1.0063265540764242525033326751436983 GT 1 -240505.9129273803912076317267759748055516 0.2106656223354511832849373568551264 0.0826686658404995976691693820656435 1.0862865479313271791648661122266735 GT 1 -921707002139364400673.7675598884641319967447098996654040 0.7616660852400560907224646574753158 0.0836718671831756901660866976675749 1.0873807548556083062261407422685897 GT 1 -75877707346349243211954683683.6026774005889241912988035807558634 3.1881950398680291855917756016789903 0.0224886116756615417023640398540738 1.0227453367308010068323070466817226 GT 1 -5.6627220605312082215118647019032394 0.7519615243921019049381840337032415 0.0247169583735810401477548817873781 1.0250275510089022544764299200218574 GT 1 -190861918614988750001793740978171.9898890823866342937907104650891242 1.2174725453647862693221912916301326 0.0204816077631917088798874314980088 1.0206942646050623994796039642418502 GT 1 -95231242304207065162.4150481162137147509761480815317838 0.1564531196679041861097634382962660 0.0713432553036253547752208373831059 1.0740160974705417584033933590089754 GT 1 -6173.5642004351362175630174364420147213 1.4495540263004703883638248005769469 0.0518492267783194463014621504001422 1.0532417458904037290563343377912694 GT 1 -15219181213694584035816790576280855.3014014897943881216615634449591856 0.9728400725754283260597793684342108 0.0569040095653037421541818167618321 1.0585872089155203238130688726296755 GT 1 -583938224.8055142581289146230039043451058803 1.3472616958119808273948461849763120 0.0225393278711411279509382340896103 1.0227972210482466552271856070798088 GT 1 -72107412188140220164663654.3462250932129162188274674893879315 1.4202552629314149746886238958704737 0.0531490159105585327705406293164785 1.0546135539439415809284193626484354 GT 1 -267702531763506080.2910067340414355416908470158080506 0.1532597587780442022328595416729948 0.0371555933512764299772840774293812 1.0378634517347444669695350156305106 GT 1 -7769.7997991200739114894222150751644945 1.0664538929593439819941257294067862 0.0684509648661107958353230468652556 1.0709064492804787268111883371510455 GT 1 -321788594439160701294706074130722948456640.8949262964434807491479518318254862 0.3012335187984779536846979669029226 0.0853126890229374137951124671611883 1.0891730087489768981326102537738808 GT 1 -54389360314698794884.7009072247613038186177429534488563 0.7958882362184721174007699038374677 0.0240568360371757075612794177548808 1.0243509279093363207975263409766714 GT 1 -1329876178679139.0173724676892420356277694701495204 0.1772645174830590639262970187394395 0.0826452120956434930575227491308477 1.0862609808933741162741935484606444 GT 1 -10665211513728.7080189117121282304021272601448413 0.7721021937915922312154804390182615 0.0138036279676008115882315355619739 1.0138997839330097059106308949342224 GT 1 -739195566742546655343748375955066.6218280353926263877612789252728731 0.7185245934893589937827806631047729 0.0076165646150797550765624959665014 1.0076457187740489341700164719607271 GT 1 -1.9240734111079131791355230324657906 1.2556477782423031034343831895942433 0.0617473638877027951570462124581214 1.0637360313655211011034243637621350 GT 1 -64356204327995.5693393351424691252499547138491207 0.8657205714816887784487778840768145 0.0723599871656758974296230957256753 1.0751115386596708987462085209180774 GT 1 -3836456611301007334299.7354803067855272832343205949602337 0.6366681716870395847857954601694982 0.0480194855006757524548715277069374 1.0492107123631380472432025020206289 GT 1 -6.1085628160934284783572091146068994 0.2081580566707300390401337498579401 0.0057585519849699304995031231674015 1.0057751963745983958564217044837799 GT 1 -1273922294597449970465417262823.1942260112495022844230546842932474 1.2660204643503419144404841052437838 0.0852985424918432420547568727195371 1.0891575428935631607797196413535883 GT 1 -21169579942400230188772556054880863577160.7442969504756243688451379021710538 0.4640307736356099017508628626852614 0.0948432398561311484677468884068643 1.0996471346537214149806878184021601 GT 1 -6493426342701507105298.1128008916628190827868865269986965 0.6336268385034251804768189191682580 0.0725819417487197836215515266485434 1.0753508353022532434265324430191836 GT 1 -20342953.7088224733416260928142899137976186 0.5111658528498504447624483488074509 0.0453391830222592487310217776452448 1.0463991670559338453419483488107503 GT 1 -2137634.7490370604527305311753265195689862 0.2080994626282305574280749786648856 0.0519932129890443170507080923642825 1.0533936174584858229391958569919628 GT 1 -4175893526865573989870335110936582.8355000658640672815657955433571787 2.7438110200213314060011185415545407 0.0995292268686575330929570688344555 1.1048375711600911091883005850592507 LT 1 -106066074747152652.3133935130879864531543632052392639 1.4716051633324638279514911395433994 0.0775383486839111470319661570310611 1.0807094743205909443182788174636787 GT 1 -2304288145176914952162696443923550393919412.8062219194793647257643917341751544 1.6862215888744015648406546295671085 0.0128649976890158922708672217561609 1.0129484684453251294456810046215543 GT 1 -721225001337632410.7329534761939108600477261068824315 2.1725867563483389061847139872104479 0.0722113878998360469379524980087898 1.0749513608288876595240898353250760 GT 1 -11681930.0354212126569799515831888095030162 0.9797611114521189914734271495183007 0.0247488082909568367828626226242729 1.0250602086437535671862989691819613 GT 1 -22.5387174930710252245694993910410630 1.0930568824572811259746957730216844 0.0324771618800757344162863226058106 1.0330162490648893138126448841411293 GT 1 -117665072212.9127739120339154986272378019161700 2.3470169709300089683250028255768768 0.0941723624175638809848703931650895 1.1037974583446016579629980260384991 GT 2 -87000519101907872328883.9305685239600890442544612290467195 0.2842668866976402851259779510745199 0.0706290021276795741771827411394820 1.0732472680340757777085889284861295 GT 1 -64742471936838840.5736144347659536904052566251502623 3.9542661661507631918975487937938570 0.0595438809979871863603295431590491 1.0613902884246766188556515096779171 LT 1 -802588569110767377675952211555175952110233.3915907276333839540827730713257159 1.3381143919469515893278259044442841 0.0922765193186356528532424218692802 1.0968154834560922329046658566979659 GT 1 -152.8064806464993516600754822674776850 1.1065477896266535038178223570569848 0.0037536386619669440031670568012128 1.0037607012426927426137630316655042 GT 1 -40438183210298232287.2059376825532878511136549320580075 0.8455201853736937967508265771953499 0.0210254357691775459173185119811694 1.0212496181672665447616584446596965 GT 1 -11542253465152573095944916005862492021.3565433138230436741452442147320380 0.3789067712701236747935689635726060 0.0599952530557196401486472313345956 1.0618703537901145924512404416150443 GT 1 -19963.6636218623834541483834097097859262 1.6042731407229432492658420752759459 0.0746064488203935024703325093534887 1.0775361712177568581584864212622981 GT 1 -6957311609178265780103197668.2488937449177594603567022690706021 0.2342847495142974983867637542485124 0.0029301491644326783127932348938198 1.0029344504558340692496650541904767 GT 1 -167247314340496054704307881366096692319367.8127309711766345669756157873530392 0.4332758584269560658869465264199709 0.0496567531968271703510173059390225 1.0509320472207736396772542627659713 GT 1 -35614461624559165.9832558323048057120033324961427995 0.6902138311472770057137502881767360 0.0976040619335240631166120007953185 1.1027018995045948089324647640053440 GT 1 -416242951071050062455508.1911697044544563687275668935236839 1.0538068498642311735863058285542010 0.0784241503919695061878003928147953 1.0816701942362608697061000586945448 GT 1 -154833494166085631899569759020003499518.1535972628831315276825645272661989 0.0079880092792795527224215829852071 0.0247431521970665149203688313772143 1.0250544090328052802065949345012077 GT 1 -3198.4222532759140157204521029850179494 0.2721424401497563020673498822968023 0.0379199341807270535648873842149733 1.0386576032773674726424711210449490 GT 1 -372556928769424.6526590029698017353742957265886028 0.0170263215752383579372269344639735 0.0258746625877289169018180722341141 1.0262153004437551501223691014421416 GT 1 -28417929495151795952088019723257543.0363381458877617280538746768941669 0.8617745832302466983094437583553052 0.0711288584156581390676619732495430 1.0737852563720013153352849703498831 GT 1 -28.1941955050025715697745831297712823 1.1919872145582842110860636520517161 0.0627483029912720272320754049185166 1.0648034127422781949589497384419648 GT 1 -31526030160.5707816607458805762096349178013912 1.8596605187957256467596615633337387 0.0885410005463604539529181477823644 1.0927086672753985899829798199951939 GT 1 -38470252120413750.2839309418355380549504119068186374 0.5141682607155075403052155871932090 0.0804519506677374277268350188495512 1.0838729803680223757501477803143572 GT 1 -13260871940705824558648416588947058703820.8710838250029063391653579786763856 2.2035893371292416972110323979061065 0.0918943205520937029104321574522832 1.0963945200961262921660792454081160 GT 1 -948166182414472125.6427310329699834745734012501302075 0.5814770900043591614399466546603379 0.0252019950451487176623211118073531 1.0255250038531522342054173405041538 GT 1 -781466336791411.2231744272381106554552643194027415 4.9869888639286312106082065950333742 0.0283769867659418635205595158946950 1.0287873962206102553458655475467392 LT 1 -11029690327575856523242367512161748843951075.7793885696373623283387551283054521 0.3022417840441303087613580323248456 0.0788227994222564927237691303096624 1.0821028610403839083125088191669640 GT 1 -71036263109130487815289416257736931.2045317014928019628325983563517659 2.4836302217437689001452162540863175 0.0993788946312816955800222392398033 1.1101486076861736230216965782761283 LT 2 -43732801204455161679177139509212223310100.1661095623971579324209035203321726 0.3609167197986390985267155310876241 0.0919602637232799723193031703239127 1.0964671389190953085469364576899454 GT 1 -18587.2167835337350001538897465702313341 0.3973682683884256896074643398966286 0.0410178596216952335596640184656859 1.0418828274438486744737305451706275 GT 1 -2813147182186744074979760693395663.2996279547548410230019778718982838 0.3910304426573506295409671651664728 0.0637387098953001004337903161013217 1.0658606853665929246626970252379107 GT 1 -40970942390030652.7895521534909250678981974632048101 0.6258222937524921115032733120209463 0.0140299256206319823660696281174583 1.0141292753681125531558322697375785 GT 1 -486340027604956.3861434760970257457969501643461922 0.8866118555752344387148495089299207 0.0627001733568622831881616463773699 1.0647520621831571979783295928538507 GT 1 -57843945869819653247233194297.9905007558698367319829198150872263 3.2114221680184514154778679391084575 0.0667918038943789657469070590915736 1.0691269560770086535257872081950667 LT 1 -11821.4080016291555140078733000316490756 0.5796700167882873232865800764410240 0.0376060896963498378039540870572437 1.0383314419563484636492497082175685 GT 1 -395339078317576148.0650909072655558824330897594381946 1.4707459326816701230804533227525507 0.0704113858347374368855349138942170 1.0730131410605503316260221333363665 GT 1 -20524060848833536653963302037711.6978074900023551226004689168660698 0.7892623894761652733552812924274660 0.0125489018507064656902389799744227 1.0126283042945333624356530978005523 GT 1 -679203.7536719265114380759533237715682814 0.0855092211618323530366062720529507 0.0857258253727162879977899426071826 1.0896247802707473917368970632884637 GT 1 -41989793571710899877044785789302668.0846938522490665029071746082596953 0.6386649452624277630810044863344157 0.0038964081088161120890431597793227 1.0039040188831124281923702953947129 GT 1 -7040.1739064000044688111468513447627564 0.9611569036232730877678020654452993 0.0557481986647956650174205250746879 1.0573624097025322706686059103303210 GT 1 -508009162235150.3506229503419988995078321381257362 0.2018793152924517053082801367440562 0.0934567643237354957128782913616911 1.0981165547494699038622427600055922 GT 1 -1257600493694437747586689820485109196408.9317283190061238872072579747121158 0.0250165844404527439045161736175080 0.0184853964687823678866188458712415 1.0186583865874987481769424708166282 GT 1 -3145447430460103944672504276453811943.9433861522332320081364212249779795 0.5137337056029577033699491951308761 0.0649985362510357903417430346555772 1.0672071841877618645936843854054042 GT 1 -88.4324057692821002667619447903835822 1.5310128034404771296565176423267017 0.0876370649750197175718959420726612 1.0917174129996731737732305642110572 GT 1 -429478104579556440843203694874049.2539938364076996261424025379065573 0.2827366631653124979775993278768270 0.0474017446995745427285408752346216 1.0485620221303594680807343883135870 GT 1 -803712011468447867360475390143.0970533703021317776897060121948836 0.0763215641583555468183833983302848 0.0813634646498018832625776531297786 1.0848647350202723319914498991047358 GT 1 -2508569451391173464454659926317571001051731.1773781139010123037985143159642421 1.3140442536132102401997914131584842 0.0204211499318644507031483032086169 1.0206325445127250536418857153401976 GT 1 -7959572373144524012936592429815.9461921670121983632958019702932593 0.2996025737604484363145211454848524 0.0372050115561053942706675595324342 1.0379147782759086670385277509303449 GT 1 -1105296909767028.5448305576001263274991617698511413 1.7162509371108673533398459954844751 0.0833257705259713322595508589701626 1.0870031266883595941170516551266567 GT 1 -1442699866447.2927589095650615212481241957622984 0.3382830204240656772032680815697581 0.0294791106054287437596617431759826 1.0299223522414296289830721971900984 GT 1 -919.8289500899342112473489160423248800 1.1762348095505223859673974583208051 0.0699843534390925309687911866541042 1.0725538687173214001773484391577054 GT 1 -2618003819833043.7008713504636657865671128070137969 2.2018881841160464371215921092829991 0.0959782206299399026636989284000721 1.1009018266566557042072768736745265 GT 1 -3058898817631084189059708739255976151.6361489266810481121426507635311490 0.2427728337355757321092999653116672 0.0683837633212908457734229797921480 1.0708343123145683285208947284072092 GT 1 -18795604123.2409590386701663106690271813696499 0.7164440410813022941365949395892211 0.0319539358383185970135770143451537 1.0324756058938969837814040226593528 GT 1 -1946827838201154838429298945017813331.3489493747624590792810265714520109 1.0928165487431614275899098484410114 0.0599586538257993229825055794463265 1.0618314193937092017339761692119773 GT 1 -60179606749049794407478.9926578184139788631847349661814102 0.2781344585090629082224975710875820 0.0079189213807282116932317586530434 1.0079504425580767187939662603900951 GT 1 -3635699841000.8601061999345402262263713100691388 0.4861137438548298241553786047827011 0.0268223328545435507904998195639969 1.0271886161931898175869796631091018 GT 1 -65111346233565123446832.8777510941703872279651814691747341 0.0658658788829076130679991121875307 0.0438990291600471951860257749309710 1.0448917534745041244787675801101649 GT 1 -78229733906268.4099337775943615698635061503761957 0.5219738745044570128587599912892407 0.0568190138773291791294442582847001 1.0584970888651900553509403111471880 GT 1 -2494174.4671286787970155831568260387603371 1.4971023259073293840316577218840571 0.0263990531337380458680577005309325 1.0267537647679388614799200591722265 GT 1 -768394180116493588013253261.3038948706984665181833324964057743 0.6340553827360020093244843439524597 0.0078429571228849636784365427658298 1.0078738748749368817457948296571341 GT 1 -26271759691338709817002248747.0713826941033179925715536045515078 0.5319141928922109891826083374929379 0.0956014408147919660266181800221628 1.1004851316963448949800940082096096 GT 1 -11527863259349399663870059680666086068474318.0229489961071686236375675436488181 0.5546027494774871881421505440370129 0.0339765346073967233873613288287781 1.0345671537679570625051732743574402 GT 1 -3588438448369296.6987737667478529815637098402154791 1.0557675294847413323946565457101368 0.0616695628256956587665597904252971 1.0636531135739676972035638336571345 GT 1 -280346409796904133149530163615825.2513292665125743078374558074901750 1.1820779002304138394076940713149588 0.0534221152991658594525970284745719 1.0549020246596919436358061336524385 GT 1 -7265288908849930744999.0564504892173801953789955395640005 0.1443618184429355140311779386538287 0.0319342288887325955171172307365177 1.0324552486508621011099729801692432 GT 1 -69200451583273875.3919504278230516838194905523891753 0.7536779840210949960882759588803980 0.0737867307328092514647172699083991 1.0766507584702078493070731294605550 GT 1 -1586963748046521577104742247792719909620.0716195394995495659991384652565773 0.9871052809184977439006385546059795 0.0728448771940501076451361187505967 1.0756343888980646081616408077633620 GT 1 -2031496245201495738.3171462961788047114729972004353259 1.4584691607788135968799921233137527 0.0084395259814836290552203323288485 1.0084753404278719120465675332602645 GT 1 -86775907571687120746537534195668781529475.9833713771505973178463050997560403 2.5033859162859148655203925451179977 0.0139220960837671239942637781286068 1.0140199174436004774768803731641218 GT 1 -57153039486249957521307967229556848224.5182127216711865236137994129665071 0.4877646146313814244229336634544051 0.0358610770831024081078149088689179 1.0365198838449262504326085199412078 GT 1 -5975215582688932.9991949462781919846004835740767476 0.0377402960678750747630639030341962 0.0351290378645378175278619972630097 1.0357609045785388995568747653762431 GT 1 -32832559118.3013656595683528729099687716343534 4.0659431568404730151867733477829004 0.0427496977480696050513029486894427 1.0436903728745292668133112541482584 LT 1 -56509239730548149225929699899909.2246097712463424534992335589341875 1.1245118388778095584823375579967665 0.0965508407989548550623384001126171 1.1015354414782859915720794808804346 GT 1 -1046101462205538050656237.4122834452544914442593775905618730 1.4106935157791909826370630657674222 0.0344222588278462619092222673744225 1.0350286612746265542650470270546308 GT 1 -211386351.4845114694777754533932464105164039 0.8781021404402718962693102817705588 0.0895061167809391920598837249068077 1.0937680978831022960434512409727119 GT 1 -3353.5785770295241160286246154206132513 1.4085552399680048424730544897007132 0.0760854215020215652210188664710516 1.0791356591269979626608726132449356 GT 1 -786.0392708352135564604460068238082014 0.7835250969345333699188803212479643 0.0753098319561871637074118005252329 1.0782965510453021037862110565428174 GT 1 -3186366153805884104346673376728315.4808682023616047730224065864110198 0.1956880392881745797105773215251551 0.0593272972670632931894761525256998 1.0611600184618984655575506228342566 GT 1 -3.2386564202456720944749981622998940 3.9729494223263537754139331800551169 0.0724245057321592538039929365234969 1.0751810923759506254107648854693537 LT 1 -1773587664234718072819.6828532244749242932313855329828429 0.0685733903371106542770071077588278 0.0378399499458441612083059856451910 1.0385744699570825953200899348192960 GT 1 -171.4650248376970232076701065498016862 0.7389167240412847783974268471091157 0.0400814496725613441836217701956903 1.0409068415285788068325560174198890 GT 1 -6830216734.1613507003564570758876213888794563 0.5314788608445354338260929718248309 0.0274909453917543378854339334944269 1.0278758928817271856340701476150657 GT 1 -2602034024906505115129539.1936468466369837024027739284506711 0.6560018920220540098441170373851836 0.0490475783917454776930348017589021 1.0502912475429036195300884121932403 GT 1 -159237453910264854123767272751760481440.1011840504363076220686806586743313 0.0611573296422340175835044261915143 0.0285054383566250277723637088381689 1.0289196080769909764479723892050847 GT 1 -153936951521740199874858104.7789137349831858794920587185098346 1.6619782604215290480398414528313605 0.0312806820953829604246345568044210 1.0317803706565389424738905835182242 GT 1 -22595432826342511145728664964552468.8029965472704113817271743227540447 1.6224936779572765688527382990063574 0.0738419553539232655831344330090047 1.0767103843354062360761843353130289 GT 1 -509328860173922680599691013966183493468456.7188705678765125597190666861965062 5.1444613885522598067689973262069738 0.0796361069406521503122387585654576 1.0829861512086939733565182165723522 LT 1 -468356134733904521618079007028026319.0101931377158415395911365177260656 0.0820075371031616520376433168959795 0.0485301915882037600965761249916905 1.0497473232676998326958785037652429 GT 1 -136208853444696352472506824472995.7719241280303187307519764828824233 0.7050790851468451156607335734102537 0.0816133588211700387023974853180956 1.0851367992773839140305325346506816 GT 1 -3788967132583048128986038834631211592.4842859901142286623475254083744756 0.3970751466446749146884334498564410 0.0200868438162074245330058116133921 1.0202913273831486384120007568457453 GT 1 -14938924589786896190276682990.1213638078325081863557037803946338 0.5742706057784020046571244012639001 0.0592356422003760184847194384718621 1.0610625875473252872165240325769251 GT 1 -30065537721591189.4066367471189659144684929304294129 2.6906571176266222054438033185133870 0.0436694586490022049166417551615266 1.0446516711388133883894078662414431 GT 1 -649649397.8264988096951848786572255906907992 0.3575440659616941511626984517195367 0.0176984288673901651976380622765254 1.0178569188598458054530032004460208 GT 1 -320703359594038086820951794830.5725271098926060474682874289045446 2.9624043635540300954553202181763775 0.0874136709651429296045034631070938 1.0914725908389785441637026042970973 LT 1 -1217162738690475237379603870313001749018.7856723851131167473533950537814792 2.0466496571073364472415847269035037 0.0659120671623145175564103167288228 1.0681846986776407937586027464591655 GT 1 -7282878783159048105650027058395180.9740221948352136324132954410054254 4.7734592850663688442042452877606647 0.0129216606786039875872318091967643 1.0130058715520803525004028243672110 LT 1 -1621528648741.7006589737757629190232214011854022 2.7889824616088365006233134992489748 0.0056921465649888119388331103143987 1.0057084085710902001220387115902626 GT 1 -939111065442.8751344603664074444808266651927275 0.3050099834890134116365105171166035 0.0990753054527026077968021980034727 1.1043336047255055955489722329138192 GT 1 -7513811555561158358055655.4910412890175410692508491224227918 1.5611555167052599985841253314217581 0.0239131218475517553748903258648151 1.0242036820301408557573069771162898 GT 1 -2.0682186493576116881286012353077534 0.5058722151959978024895407383819359 0.0300674437795954878663478049820915 1.0305287395716941492195441925317590 GT 1 -1403075241313757962529799838768677004.2725793948881376142078779013470619 1.5699756922466069894725480143080625 0.0205069293427628736873139041044971 1.0207201159898574301887011301237357 GT 1 -1820029340979340880128979011913917536308.6758214988218706515572751482319489 0.3044440930843587498523492442207284 0.0278839030379605453172773162638806 1.0282800403352737410622947370265010 GT 1 -5.1818308894767303355991971372392819 1.0972665664387181988980800325482756 0.0678157610827661714660368582361853 1.0702248025912407176660342515975120 GT 1 -1777711.5082445896785486560492379737104541 1.7306005207221987584226894334036485 0.0808011969074290447392436271429079 1.0842528545670518565629357358593435 GT 1 -2863216897692588316028490525272969365615934.6054057805856289795316780407359500 0.0170970561213209132696111962658159 0.0592173514687635886237301109078529 1.0610431453207410318052212779798427 GT 1 -67210.6673935296307577961830224220460809 3.5699148470770529445827970048340618 0.0160196997137798560250769605120641 1.0161494021646163125151748050573255 GT 1 -532962010411607977.4931868555849365571404872929409701 1.0866045765385057606417202991366151 0.0930727565460435567517767894522801 1.0976930487835876611007994376473518 GT 1 -18558000339803993855274837.3519968972218003852433430038374756 0.5483883679071131029647803351803175 0.0272010665309064926693209991609481 1.0275778641225074555018366215799677 GT 1 -15525494253312825452178888688257593352974.2103625281984126899091851598285943 0.5347707582028908409654294265696190 0.0995040567325410131483283618389609 1.1048096193541093876170918268131899 GT 1 -909322907181494451629354.8570465145290732545701367228029242 0.4816760413202773927477299607786149 0.0125051469363153424922600044488915 1.0125839943078510346321904606974815 GT 1 -2017181123759697401401.8118196221124348625230774453609736 4.2794896220571425591160000170944438 0.0718795458484115237998054197683069 1.0745937548868776809454905877071438 LT 1 -251254288219898395107275827342271521359109.8923506485580524032489215326281236 0.2356773377830328480762782424628559 0.0897995943161506723321379809814023 1.0940904776912248878916401523761170 GT 1 -89883098043433968131611333557424.8041023690218680814646897329699142 0.6181472589016065576257347272253270 0.0029078405559720861208204331418954 1.0029120765380214488017995506804337 GT 1 -6520360135280387360488594083.8017119778216319524945830479697779 0.0303866085671069666341261396721770 0.0317982592200393681042899284034013 1.0323148035232320673943681964419208 GT 1 -13.1612953244713539800920023496544887 0.5701510256320310866180078237439324 0.0007578830578798223015101297732816 1.0007581703964330533048557004773594 GT 1 -40663567726181930799717687.9236960861886536939070910332351011 0.4466914130523984706197317285463442 0.0170886370307136637071550015822994 1.0172363328198645585532285417884560 GT 1 -278472671108526330784469942247600.3917736644214655241143275392064267 1.0634768107667320673079342872050996 0.0364755970263917692963191646498030 1.0371574640238434108648717183941119 GT 1 -4931998842.9329045228716786742685618998686401 0.8131710335455259932811905908752828 0.0729493915285192748107576027985930 1.0757471210861027163480788632504991 GT 1 -265729203996073036.5296501027209856611789327135571184 0.3660513507245698839812081488808137 0.0276817795553848126537071709244630 1.0280721408125237733960258529848660 GT 1 -12780982.8498082506422801501104691571471707 0.4108865773856425253843507745370593 0.0322095529658008322908783754177591 1.0327396954773814459907091391382079 GT 1 -1456021351887716775.0210310711727062460798559451947270 1.2457315169886691824143392383979196 0.0748598359077539018326002044217940 1.0778100242006588734185387626498810 GT 1 -74161.8530883578888377457168917091865694 0.4137009729719803874254780698658651 0.0845671718317016080228666879357479 1.0883582893034857679601653980840812 GT 1 -45653809284415931662540273110409439305848.7568114756167926626213037193889936 0.6852096282610543894182685578012240 0.0597947709440021183037005442901143 1.0616570987653712485226859659339454 GT 1 -4389831611268206156555010300488377265.0037931937619761916718064813059838 1.6133703776501101613808612213515756 0.0242781199731109698713237970628021 1.0245776921664151268904457130034200 GT 1 -264357214248319969.9713570330201821658958546865106586 0.3644856952397057023675523612551639 0.0527508524148335781522290641999920 1.0541931289675304498060894800174812 GT 1 -218909946058.7546085839028770623672977149534369 1.1621020978696954624795372695865743 0.0436948586007975548270498298866615 1.0446782312955917249916113795633988 GT 1 -3543001982919747106982144080875145052.1303991524447943790037116424325599 1.4206402960769923608731567766784251 0.0827492564020440823544418594357787 1.0863744050651926047566860965014471 GT 1 -1624454358000675548531.7794591735029881050027216813815477 0.3224439629333569860662716482963167 0.0531428440651661354737466511415648 1.0546070356793136007871852300093629 GT 1 -565954436060123428111894243225.8575840763682382104074309334175876 0.0229310271886789605544716000414846 0.0103506651253800481740241742877358 1.0104046057970415584222667498456131 GT 1 -8728212.4128861867885414995803633634974171 0.1623412846098396158460612313223323 0.0584906077153481989274588353584068 1.0602709550614525289079264663873562 GT 1 -136354683256869761069900330443985980.4033267897069039767268197024400586 1.0179939405911756993034338984543225 0.0092743177575261450964986077496725 1.0093175920097185635833824986699008 GT 1 -15879690672113024660565692978709126995327125.3268805380908916074314712871543466 0.1177320349400653513152785943301924 0.0239149203988058300267628900064634 1.0242055246457433713753628227292368 GT 1 -28951889.1626270645046705457377578861572126 2.0715998318047724503438283114529511 0.0749966563242448986615048387075358 1.0779579266916450670374715932785570 GT 1 -280293243020297446138586858441112983087393.6553863137794508363874237448764793 0.7568474632413929553120788625354739 0.0921280539736790693253777041480029 1.0966519389316860240835379964043031 GT 1 -200674182795013.6783643390611478217997736410648359 0.3744108000767216700480373023877113 0.0401760858348099826473812670850041 1.0410054340888577806705860414630906 GT 1 -638064311418549781.7651476455155240377642232418521918 0.7840782315754110543008484902218746 0.0073430494426617932384663904706961 1.0073701423413618189078239237965494 GT 1 -2.2578382747980258298566131582375889 0.8875938613564037588382108512238234 0.0427641258871391402636789059652787 1.0437054454712896199046973964172475 GT 1 -7829709407605065038406582950386949741.7158623647569186484654065726568214 0.4979265302451837372834063545481922 0.0075786692991470150986792130507518 1.0076075333398088926313013693219988 GT 1 -784283617064023612503122210.6015318149343786837511749295503376 2.9447598470279290304423530857424466 0.0802891572060019251289825338281351 1.0836959596529316154430288287895543 LT 1 -252814402.6169608199564550082839289977129533 1.6041223942948607749485560448452498 0.0878623579269643935089517722681894 1.0919643769698880724725241603818799 GT 1 -263952044519564644558340621175688596222.8077928457703672347778592468675001 0.2879772207631827236872182518199455 0.0940967612829238925222102716608613 1.0988227791757693297352771790231492 GT 1 -9377171916840794615.4230037908720366192140769042303948 0.1473896636871667669740555593843795 0.0621711801214267244066033720310176 1.0641878414290768291026257912625429 GT 1 -7137218514464175321050193944534203732355.3770469559007217310314198174673677 0.6200484396589875104071528366902623 0.0414498231176232746432646941018981 1.0423333684849009072151820766304302 GT 1 -2243967.2134652627225609797314890837429776 0.2133572420747265119827930858103358 0.0937807987338206232564740443077239 1.0984740582004823518395552264249477 GT 1 -315594770.3764353622989007237210561785807424 0.0182828805507043613249447335215670 0.0902000103984267538175568892403094 1.0945304952755879379568808026591481 GT 1 -24632596371413.7493826972464637650016412458411599 0.1206395083393613596582927371732613 0.0355326788505433966551109862006718 1.0361793288594352683299570550862115 GT 1 -312409205479568892.6628803586490295746047155356941666 1.3149190661956480585994578390316388 0.0426145551891049453448056966842655 1.0435492049689405321505574646925292 GT 1 -1177493783799192368354947.5920617229145642782721756721265230 0.5346485805177001494014212551475685 0.0549728458606200221186745399042554 1.0565416173621968247914990678194371 GT 1 -811550019.6314103847236421618061161436352129 0.4856153266635399533074423720588914 0.0746346853074432832282034194840720 1.0775666846331700165449038234030763 GT 1 -546568741.1564976172229382931867792931188134 0.0151299598772298475827931402036283 0.0762245007824624107750805754178236 1.0792862030763116609364559995360072 GT 1 -6622814083936832321932131211.5358917655162447438150937501320136 2.6515771089375233043767412922282538 0.0153189089963066634647738714126960 1.0154374557118901763533035099784750 GT 1 -211185502738399181327994751279948535478.5376144859438061551188887599288849 6.1609953880242119924759598211431459 0.0733576247163354290607696074820505 1.0761875750318137573132976398450182 LT 1 -60720759549717626941579805401185418202.8880061872724846083068469608799156 1.2904319373814235815458956060659513 0.0005465635400730680457870702551161 1.0005467129603723423344884110969804 GT 1 -305265788822565957425808364389838.7779922387496113637164000486674178 2.1193950722562534875608134623751786 0.0111666217558191961319244594461145 1.0112294365335345326731300502260795 GT 1 -5531869053676127437.0645811742296998962650396082022681 0.7728724812498163658058852016890508 0.0745791890315711413641394275755246 1.0775067141426640381087467313141043 GT 1 -4368344848.1294144893828938850842044542937716 0.2315796136380070102068631288393304 0.0724108763864667390441763212269328 1.0751663989675475211205528687791519 GT 1 -696084195419489047709253091188676363573.1863411951982419808259478369936898 2.3129805753851416715373152390501819 0.0386589571720178351274455218129447 1.0394260496922841063891092718217674 GT 1 -83760015768.0117331195911221362821998129195880 0.0246101578821709593332547789266135 0.0977277143752747798918262867636289 1.1028389357091679771056063419242099 GT 1 -188023381409527963.2264447822221190398743686857033378 1.1229024190376231442680887250247229 0.0782424550205489221061439973946496 1.0814730564069972859708505787006704 GT 1 -47548024619961.1500557516481837988714365689835865 0.9335370604450319253643798135582134 0.0714605264322981562627062944004649 1.0741423858268020092451812734943151 GT 1 -508962189103355608529305361.7588571777800573942651220685987638 3.8995432496586751895133400803821759 0.0218111213487944068857928497651167 1.0220525001388054989682657102689371 LT 1 -24965724457486182641321900360503.1790852205921630360469712061245287 1.2734105243646058515879993537710960 0.0078104766049478755212539659149901 1.0078411381358086885615866377823571 GT 1 -368141610.3230312049970063943137700142580541 0.2935612484359326916845449611936009 0.0667435417274712107957338675691983 1.0690752410158042497588506780853278 GT 1 -159430805.0001798727399849824457623466837952 0.3942629831085155610701513721366361 0.0283781117389962242713935652722052 1.0287885540500258841872733479674087 GT 1 -4070911.3514868326679147973562566012956420 0.8589123429494841396849512728298727 0.0997244551749618808920073951001401 1.1050544015988069885301284687159970 GT 1 -247143613049684.2999470511162521292107745942518545 0.1041489404036271370840102057278776 0.0711390774681386054625747460029014 1.0737962580150024346338782580944608 GT 1 -75983718890770232430691659331999211.5000611732393488221930157295181815 2.3870590212553434540990606535598884 0.0597834979163941317774151142786681 1.0616451088724430385180429816190984 GT 1 -11373273384153803922638.4143418153120302876437080323676610 0.1968358206596356362700571541494944 0.0777644624386755402336299809009726 1.0809546243183902248137502789309373 GT 1 -1293442487404779204808486166429713.8650349055978402798465935521616056 0.6734409190783833354688177443290041 0.0023085885252203837600872544135633 1.0023112574240938524502973891940204 GT 1 -2829365421772054523906.3304699833947624349627207863660053 0.4309668496631732354057700965369935 0.0139782369079030210806620768719792 1.0140768525215686494358139217572496 GT 1 -53386438998144384493495171089951279218.0399403778366966403103598672442518 3.2355153184550121100824731389896602 0.0826508618012893747226281570426276 1.0862671396043961170440448363141966 LT 1 -45165.5478528666710482884298769783279925 1.0371852618940726189279632417185732 0.0865902393162875773080038446730808 1.0905706921883646127291121684462239 GT 1 -867632867888875534057554631177945998529832.2609575464703332175541309471463913 0.5941972701534622460740399416271403 0.0895409133484194908499295497533384 1.0938063158580420948073506366877552 GT 1 -125854995855744555388329537124058437.5689764248794909586940578602606895 3.8892634021979238208944589240823907 0.0952986648236616384524338304481246 1.1001504061293367449363176212342176 LT 1 -348646773727874670616642769279921405557053.9110241682423927095702101263314407 1.1629646987928326057018676521690799 0.0488793969795872808008345734209851 1.0501144074211850362756589035299135 GT 1 -564378011113798.4761463462362611880008565495923672 1.1317432636768446304683236039593489 0.0230362453595450739007632211645352 1.0233057262555142479006586509588211 GT 1 -2176489032672384308823260141111022285068653.7186566618276059590455857855248220 0.0150934548885154911165040236914925 0.0970542610121992419103417644559805 1.1020928170851172122280429770768257 GT 1 -2112882.8299121561803215632638109270322348 0.1278913899091978689736834095868477 0.0413788006528147435451514144518663 1.0422592775969170711240169996082873 GT 1 -33551243363636179555890327293359358519754.2471351164104519283254613834537598 0.2046348153868738685997203393635544 0.0358913142373174356804056175929841 1.0365512461596843760340944058167866 GT 1 -19011286062912539457428661686649977.5746817232572040059704280088904296 0.3265712865729201552035853447772252 0.0509095948948191551532674413286867 1.0522512213634643441544216796969772 GT 1 -17224056512956240412768918644.1499196175990873841509154457724532 0.7016015201706372934816935838793984 0.0020900089919415146033185048830558 1.0020921961086618034771868831880172 GT 1 -234257653104231290.1319362489205916091100338253622088 0.3592534103683045335365200155142553 0.0910479487935217205077425591251532 1.0954629351437015588873606689953315 GT 1 -47992481274865585.7699544227002282644084954666400832 0.3396955224919808312104067814900358 0.0976011284101282969452110897811773 1.1026986486936105648795523075860545 GT 1 -4066386644340029208320236177968503003873564.9647174952321252907806311418031378 0.4315262613804700235697145718618503 0.0767985735192004566500631125025012 1.0799078380813159291494497560609343 GT 1 -4432968510867677891507522127922558319632665.7801231353248448548112894450463021 1.7403916777621166309288308007248311 0.0237771141915414978521965792086918 1.0240643520337018217969770421351601 GT 1 -8635138751775650.1270277657792745872539493709090847 1.0310408720970712680475487145246685 0.0303773119461659290585313456194730 1.0308482645453926987443375816152971 GT 1 -8275394994903015307.0338739943794298153769727754127186 2.2075521109033078096556066189053659 0.0470200900788656656529311846526908 1.0481614564303766134209303912787068 GT 1 -7.5557396732789608714316846602821599 0.9016759208179547337605322619045665 0.0525867543836643065743358886334224 1.0540199075723431947185777806975127 GT 1 -1034494732653605264567190.3841059612607993676072416628375904 1.0429782957928284449338072492216231 0.0150028552384882149201511818845744 1.0151165365335268410703033692197655 GT 1 -24833334990.2457966310587192426427002731554347 1.7106853542488644069343208690360044 0.0084460980247876829927676605590708 1.0084819684301532073741998875456748 GT 1 -5678917537841153800364723435108505.2980820841800535273177672931058087 0.6850213439463464650084279061027245 0.0987118144709630564668841764818738 1.1039302217614985611771949653764286 GT 1 -147482973573440240434227444665017.4061789771518859235972880284643829 2.5085186384219408749951442457115677 0.0868734774618464800373243650448561 1.0950104916332980001686035947852393 LT 2 -202112483765083923038375167310060195.3891886788703771900470875751670260 0.2861083502689358579704637780254673 0.0321835293734794267405522345498199 1.0327128061414470359225343203593950 GT 1 -9455968.5306653922864726906046238184518109 1.5936741839866290584144176092512544 0.0877857600718600997188164080715571 1.0918804042934488298401579907487903 GT 1 -181328.7084337227270540314982077446688745 1.6135221024316538710182911216694179 0.0909148994474716447385229062567280 1.0953165692169559226671922654849293 GT 1 -33352988.8421597892604905376743466866043638 1.0009657504217249989589558786912560 0.0491928469174487150515048613120902 1.0504440202991647751967079398811762 GT 1 -237475663002431525846123507401122155921857.4665366604221743457785876354733464 2.1837786181066050274956474830233014 0.0568766974016840283103241435167978 1.0585582492248602785477404085323859 GT 1 -71796766.0459624062777908552077440940056052 0.5133597492488431476536830441428250 0.0504381728836006166472932028434988 1.0517546354032702918080913560439179 GT 1 -230731829.4701200992698528155015009382430875 0.3943431252426601551559439922690211 0.0743133216213451553584091841754478 1.0772194618749441257589106855812742 GT 1 -44410979256871073080900040702506.0255298268642802617304862771860304 0.1020459505706043235228237229470121 0.0409840592733845949640109625904659 1.0418475819984573361154258493997579 GT 1 -49983641855941065939942.0102615528871456109803704917541784 1.9955544254696784859245338126947026 0.0519027295356348613157567061134044 1.0532981760156795454731935039247073 GT 1 -49064464683476868841705958887952550259.3185374602245339647339804335387328 0.0860562696516296220479740352467677 0.0292052197240615110499036559648384 1.0296401818685597828103881412317845 GT 1 -93747328589638494.3777064331022501580624697338832646 0.1537793880199554240166647056666224 0.0396375275804295570879053859319506 1.0404444903468702082393004274948130 GT 1 -234457791553472181275.0874704656144984966851532180166165 0.5578805182585551923432278754330189 0.0766193081237494447174195755375522 1.0797136789434881810758011590012560 GT 1 -291849968925073296340.3245118517581618409409267996782939 0.5074514224473326637120204222704323 0.0375627196063242302405511442371656 1.0382863781707629495704196438317196 GT 1 -244075658772272442540258572802898047.5922563091373462244897463186817644 0.4701120828373832792087975412755284 0.0474488604811367000481972197326356 1.0486114836389423495220606946497804 GT 1 -53257926197263936279010536147801236.4570634783872859664959678784954151 2.3584664389617583380548009438222169 0.0674403144674050649100816643590279 1.0698221235793811002843971775602662 GT 1 -549651821607310365013741901.8100619330292934425885064143046231 0.2734292777399062239304663537063485 0.0061881439673203143551186744838029 1.0062073698864072691704008236092226 GT 1 -797017.0043427922394566773678905281397623 2.2545473058863260203197026667990220 0.0194279685421331904838944265397373 1.0196191720381005295166205387968203 GT 1 -638807522798279607999.7451455475795571069579931173691028 1.8222616988361639654975593275673648 0.0293003224734506663131140002985140 1.0297381504711308805398938961000973 GT 1 -242978706966718021357049657809.0150662270574377117927203333965171 0.4879418849649684498440366849160327 0.0479434042280982073574416697631063 1.0491307966175807574103415972119591 GT 1 -83542.7021903095988952967396027174493965 3.1967822356070868870995613628671853 0.0766263841209554070976287155144656 1.0797213421146813191458817576668079 LT 1 -488524165045284462051875304802489.7066628714002377605053502483739282 0.6123353048672748804982280549558187 0.0265681639701851260713516739223840 1.0269274761079408430325270016117746 GT 1 -59486100723764412263969623312113.7684288639754395499592285822313287 2.1854431043165156711393081427426298 0.0674489143638492969115003703502191 1.0698313454407066921610361390512970 GT 1 -21257239787540297162389739158077.0259019951946519053450927381379244 0.5854365095073811193055057439373461 0.0068769501572016239850437012737519 1.0069007053504304800847638413971575 GT 1 -2017828284365038746206918653436191411826.1563737637115177523770519924435992 0.1613104126750715057133890251458864 0.0736722757181308186691246467863500 1.0765271930374075838378761429470918 GT 1 -22380151189038926936194595730215.0000346575975739048474405854876886 0.4013744230976861053999840383408007 0.0258657097683277120011216297616217 1.0262061098623005678253809421694452 GT 1 -545128286463621490217.0482820604184885012438302962135364 0.2402270829610695612792237704299196 0.0178277212201502788389624383049269 1.0179885493755205833405536698428638 GT 1 -2425739273353947666930006789324.0338126330349449663719953408459869 0.0440718569935831133586171018610286 0.0945945709222346713152733181548370 1.0993724476676124788564561153006194 GT 1 -8.4628347056642132614668525970331943 2.7029286679432875243154365753445597 0.0824967814148218965067989722666053 1.0860991910648201874569748211107804 LT 1 -8855590.4642199285324836365598288016489505 0.1057441047461348697260775425887276 0.0788641156362133188837946726443127 1.0821477135839623673596278804805835 GT 1 -10425509707115053111803082548971177185493661.8637334451662071043422471702253521 0.3000333314306137037743533176774745 0.0399339309173419355920808761855226 1.0407531749272754921687467160171379 GT 1 -83086236503066339822465057108.0312262000048138776200342565382853 1.3128890048528135074721467463790297 0.0775210631230470548313425506109128 1.0806907359818333503067780402857669 GT 1 -312931246772587379434101586041664.1896687082526554609739303401471236 0.0615217315665478015800019645450770 0.0042960390744656172018104550285430 1.0043052935649428021917423387114203 GT 1 -300805834034418955131978281.2232592055709550990862072692621169 0.1553260730393593245252027517436660 0.0017260059917735358655060302622151 1.0017274972563167526253774999799127 GT 1 -39.2046678605432525995916519198795589 0.0196311677050038085382577413812366 0.0073054722878053355115248264621125 1.0073322879309239272399719059168184 GT 1 -2084839529382760521550485904971960602446337.4490082171834586363254478644041792 1.4560370364742313936523336122284521 0.0713853229665518550443805969016509 1.0740613979715256301033541213385466 GT 1 -1151177580101096.8787456476421883351509457982264836 0.1906966002076630563070354350871426 0.0223983612355553193045097640687864 1.0226530142523356963532316194416122 GT 1 -10989692795.5135508214145586593063507243049941 0.4606944497872515584012139714958719 0.0205648213117215330684752189491129 1.0207792217472988832213911859333162 GT 1 -104653428796196914767477.8818743629769049730510429760379585 1.5111209181265728671399511550308100 0.0158722159232233792768983470082000 1.0159995284945629950243487770630256 GT 1 -3056337775204789995561905351165687.8753218365247401598561646015522132 1.0698344946683440118626317986083789 0.0735691921735141669246938557357186 1.0764159172905289931351505819284600 GT 1 -15293448959730865283.0620434220553268353059756228187666 1.4367863079241498535546687196407793 0.0872203823157033582808970978557442 1.0912608101267225553101533780276190 GT 1 -3039116016225632.3423675457260383722127825714463085 0.5730367970835650965765699253376271 0.0874019362734624154343744935494962 1.0914597322020898931781684744905026 GT 1 -2763518608174235276.0366046723853707551946658119791689 0.8361140790940840820070381062152500 0.0075499082344599985288725834689436 1.0075785530599141968618828452725132 GT 1 -1056202989864566927927.4858791262426306734458596397022090 1.5290579306271127243960739707627358 0.0336950237982111341594558295254676 1.0342757842418273219200370640648423 GT 1 -1039512961428719.7337829960596419580282853773080066 0.0027909724658325411205800217683585 0.0465019532637956057508597107685620 1.0476179024637359312528376568410988 GT 1 -36995824233828678498326640633577.3185545625128388008829099761998410 0.1619557026058743738849237506700241 0.0760006366890481460647376034842206 1.0790438963981017063141118583233195 GT 1 -30285448427009634609939545694518125249.0430450672753081490917918826983153 0.1088082145553308107617474486413863 0.0601913775418764601776664450247750 1.0620790175756379210520478980901325 GT 1 -114.4527054021086067099633678883806799 0.3236397972522300827278247174270537 0.0039848926225117349044217542898539 1.0039928534628855076313324387228408 GT 1 -20514205169694072334115168317516.0647235027500809307600665923417173 1.1192729529281547451639982354495741 0.0570214262812784227612578756508658 1.0587117180079581109198177519861898 GT 1 -33293966549980664.3916248138158951241665455056360997 0.4465324261912403441542816125164747 0.0153166002854357658180855216077703 1.0154351110866247368592684425437772 GT 1 -561533001450295063731677394821545339.1025257813573548218586243679151072 0.5604437211523264007829410416092449 0.0887944142873220422792730122243927 1.0929867368057519762755854532659496 GT 1 -175644166667532465530834663.3575887442463031524517185423253587 1.4424508602990246279186191703696758 0.0628589617645638031877348006453814 1.0649214870085081309621751881201554 GT 1 -18071799781077443337487525.7824925531220663982641920573484687 1.2817002579301534523147415847301295 0.0227027267889696686967357650142593 1.0229644017660420795854742808084682 GT 1 -50038.5418624996274242759155523799273296 1.2710604049180891011479964117330161 0.0111047115596312676600727480714508 1.0111668291625123624257082793291879 GT 1 -501232776791303262888939228305740767.9315531260948359106303606569253590 0.4155302362960303371462848269040667 0.0529248961927792092589213531031721 1.0543768818581007109522589189281529 GT 1 -1771146463.5644694132700378622772799277444589 0.2017242636078115760340693189415351 0.0401333264954770388552739720099643 1.0409608859313425424976437794630200 GT 1 -3576801.9407012947944789721607326723818301 0.2157274981575835104967421173823555 0.0885910063563168436813310524303562 1.0927635322575676676986476867102826 GT 1 -957640084730.2714827294921966544926580873323351 0.3015458203427065879987041228249642 0.0517475388583475014866063922104829 1.0531345029599691122670176118375727 GT 1 -16826657037151852279928663629.7303032528116394044453006997298188 2.6615081855862323929986122809805504 0.0188596457594038076775136718510073 1.0190397570303017254770809237145664 GT 1 -303941143883118361.2324883023082455663189673676111231 0.0790723605784257635273630454822348 0.0905302848509129813971766262897615 1.0948935799301085234156197030816395 GT 1 -2691.4243763452882763286818267438800336 4.2232963338075193514884959506243898 0.0435510012790333179981044567742272 1.0445278122542543572901152518622388 LT 1 -11947910.8127485017175332870568858059886713 1.0468316603132274163430724612052985 0.0891724890600276309921502210994828 1.0934017400006186483381387709834421 GT 1 -1955209943042329884194411070300731.5434004995654799236536217317412003 1.2995731593244491978855347527622269 0.0817767423251097881869608678973240 1.0853147178484127580226956869807328 GT 1 -5745048119836094561924706074164891534.0566449286561931860457352935713093 1.0856327038051253826500645307817045 0.0419456291505686268109230443613116 1.0428507480816382291489513128817280 GT 1 -3382.1450518754136343108364554407942161 1.6761262068873351784902654582568770 0.0733366514360658624441280527177733 1.0761649416583766755148507798250285 GT 1 -8935411645915362741008100596890843554772242.5650253465632184357435173084274267 1.3667148360830174774592337255224403 0.0973705990406341046511526888748578 1.1024432184887174130845077006054769 GT 1 -1382409372944322226157663.5032402316378138916730920216361487 0.6385799552560174213392529340197026 0.0478354430422407131075761622409937 1.0490174051810678175902033015256528 GT 1 -45547865173589307237036153436.4565443094293852253290337771524624 0.3592557046199218322659813942989300 0.0428902456868177484528628889571250 1.0438372083023984110377224229322757 GT 1 -1768774621209844561980699659.8984234256945825374900092473395769 0.7084921035698293077108480496067862 0.0691495967467094056870810957683764 1.0716566985545804845007607440474028 GT 1 -5051492533825008149938009555.8232446262305989739346180234547925 0.1540874086235156818408039793767695 0.0837696306540439558029185455149944 1.0874874510083866551558899710592269 GT 1 -213298906129300531758110654001599787.5273559846222863854967846984435745 0.3657285181614419117251515153182420 0.0302051897877285304667054152660141 1.0306707657252127374855326557554455 GT 1 -51331976664843574966793732633389245963.8486773334767505971434862811744272 0.4229770128053031544773001118503827 0.0669583054620349754758904819255857 1.0693053904538115999647004358340893 GT 1 -266158483230923011230610243652143888520832.7476457647735403176317393873412663 4.2457753363671943507263219321417732 0.0509022568163818195349453698873377 1.0522434896974079657173218311266076 LT 1 -160747052801847902368209966722790.7839322564632899300663674472024940 1.2724266628278092270096145991661011 0.0473746782543390579473980258380820 1.0485336092495160866910031651759979 GT 1 -16190431293474740809307202103733926.4550927071814193733289799740946458 0.9691141991676265857093983521456815 0.0612004641608585728866759561358337 1.0631533094247118481480501895034735 GT 1 -483065167.0732834007634269429720899039363639 0.2379785744752670762740895912239841 0.0832777537658008562683547425155201 1.0869507465722006972783353668612918 GT 1 -32978566778618204.1458104258840840474493786802775861 0.1929189187464705620752245638890011 0.0210223929380058055485630161833531 1.0212465099900430596069642143623947 GT 1 -74974320620211401634147269209426856.9502624604020543189610096237307990 0.3009673287805018518784137341923744 0.0315029155530409846782504492022952 1.0320098065196290293750643606890297 GT 1 -589151464865546.7728891860211609784660634798890761 0.7520803645178516949027889687653802 0.0197498609594114083576270235159805 1.0199474959677386427004633400611066 GT 1 -134751699812916888971.8164105610169749707867535041607218 0.2821129000720339532227085958816196 0.0351943200351466493109215675740026 1.0358285658324603671310339511864903 GT 1 -3550596606410743370.5962457078449069637671747316139811 0.0940020942657782135737949035898124 0.0413725058360665808247819787289481 1.0422527110865113110443573011851289 GT 1 -5802693990731139251459996796188905607906.8131297151088068424061163706216775 2.5097540087648600978603512041752075 0.0856072543820227857761082873944122 1.0934997864856010452351463868048791 LT 2 -186953303915900478058430.7019053946493859177591937643586111 0.8575497015787334337665909849505955 0.0816751021549732708061967771671588 1.0852040317551188816961025298447536 GT 1 -34731441657917782921507.9868459559531435183063792023920215 0.8629521878221757501056533213870134 0.0705711248837737614868986632262952 1.0731849942575756074618144422971078 GT 1 -16143066696.4893098237868580778276371678035793 3.2603472691627312194012312009896784 0.0296432994768079608034569158395597 1.0300915425835962751858512561893863 GT 1 -18955626986.1474056525659430386610896981997944 1.6191196543301840622970203843700850 0.0637857432446549159923027691737157 1.0659109219098082177510725420957480 GT 1 -158850755115767007.3295284704808629518597059322607076 0.0009981253283821563538380848603788 0.0894700421291710195746147469110214 1.0937284776969642598604471312903348 GT 1 -1.4213589920590347625085720684197109 1.3952876855021145031568941201680387 0.0709116657842777826096878409651037 1.0735514594187322877657804215063157 GT 1 -4438963791.0934635124933695713254151451243281 2.5502556544078489383885646414993605 0.0095105980828133654444713215798660 1.0095561126310247013054680515376394 GT 1 -619604.9215061903268992092787607868662518 0.7122458317244857774154055907044029 0.0929177995402623514883442733825230 1.0975222040212541261467303860281760 GT 1 -1659911489379084140993978742528.2623920863093491338077858143288452 2.4247916472841693112962073047393465 0.0595881829805526167772433533686456 1.0614373964451018420856621058743363 GT 1 -1201845259.0979118228558018613098287793054180 0.0165782472098504273149483893357511 0.0315176219465855213881098313006921 1.0320249913926021639138436045940241 GT 1 -655340884210208006549101.3361551027880268763305270715465079 0.5033280496793913408006925189012037 0.0508581053124769564483793394077993 1.0521969713305674750843042745689949 GT 1 -39044095832935239924.7114885773912007063871474978897859 2.5920285854480391919427070118549802 0.0755937572207023383513054508871851 1.0816929139559388426088024445335477 LT 2 -3232050955462874649466943.6745664491461643347925837197617775 1.7174771502342829667094024025710076 0.0005328310883734680112635009071993 1.0005329730933031712447328854429502 GT 1 -22660321421123826542393546788916.7825112027434906915064543076166056 0.4954293711049228329820972190794946 0.0813575674201175472027487421328992 1.0848583154946724713862451303800138 GT 1 -108.4339517940674165523662438495895007 0.4294458911637052739874451218611854 0.0711034051361190389958033404334997 1.0737578543679280228868150902188604 GT 1 -427099289898118.8709810535178798079384555529726948 0.2435551857738214429085614182159147 0.0850919627352818246588885453101106 1.0889317244792736986140528141912491 GT 1 -26733563055890888756586139856526056.5921018638414360769930298316605236 2.4344950346067309138668184796923917 0.0577209492686835421384267652778299 1.0594538160750188542903049482366837 GT 1 -17756394189240749.2074694885570767319411295846739494 0.4712566202171621454744732796954222 0.0261279602462418991961961564259647 1.0264753599930231750348947913728474 GT 1 -100644498942292824954819401.6876053621284557276677940842550233 0.0664231211350707502671596437078082 0.0111566475367888036150258492332318 1.0112193497292802201674229893700539 GT 1 -46699680499919.6813789712215717975169492947058471 0.4098307620648856234715166952820792 0.0491750611445032064549217772622666 1.0504253145011069596680621974950923 GT 1 -833.8870071361108143894269496988396204 0.8881473231788293514710397195235044 0.0868816230150161231087582599667730 1.0908897496342272357616107918015175 GT 1 -2145133.8626442527521136145433611556854099 0.0234552621760019311537963695140257 0.0699918990963413163908449044568377 1.0725619822236775555167110322606718 GT 1 -9.4362585425119933450607101852288322 8.4656279224291607691696717801004345 0.0687703070630806168195681675111653 1.0712493157683615567213865393619341 LT 1 -294.5112674578494851449772051007396631 0.2008474411135172146289171819679672 0.0609218580402801255838575357652188 1.0628565849618605947920045263001960 GT 1 -3263859708592808717287.1943665147393161065907344066418599 2.6757026150415493522521159095551399 0.0385051812409311789323630446845590 1.0392661026739384299645344420945702 GT 1 -128548825294274898854512161094.7074521200764198201330977941366252 1.1639212310662037576208958480164210 0.0741138308884277870548885904029045 1.0770039794174651430353776162035106 GT 1 -20500099881840277923626554740565031.7320045488742335651120308754468304 0.4403232193311100789735236513454734 0.0378729023190756069270192605223931 1.0386087188718284556795582223579514 GT 1 -7156352752521342377599.3011427470740817113129798748316024 0.0871138782837021631465425894817053 0.0008948225054733937889651739807313 1.0008952230981222514816691197418173 GT 1 -6280036975727051422107462351.8474396710831722733416227021525955 0.3244682417188948045061339101749606 0.0742257697843771129322698992631357 1.0771248859250799982568204072067860 GT 1 -1612573959765.8007344697486121301712892254842758 0.2191724689666796346425936120935918 0.0354401601014375074765190776977356 1.0360834061570026444280374048438239 GT 1 -17558315924192056.2019797902617299805769390254871170 0.3838699551666155092359032485810318 0.0154641694596353034685698231147295 1.0155849869076694745501451668440765 GT 1 -60034260599.8518385679881537837765444320402670 0.2932224495284632467685757774660235 0.0729274322088598449947159120145857 1.0757234340733501761159500222652867 GT 1 -490387849126905244450374376.3990447085984302026629586999763924 0.3523625289172311543853677002359798 0.0872106755710812444541882485585171 1.0912501759135758646019203197164655 GT 1 -155201685163361013344366973632.7893313998789769710714550630276079 0.5002708853058775272951945783899114 0.0694709868272386569720239212169017 1.0720020231895118488413884427859635 GT 1 -45637436.6453049089448667017646685781208638 0.3814228017668908857568335446579275 0.0097194168884896389922377526585661 1.0097669587242391575986213403441952 GT 1 -4.1269311936972234032918148565099939 1.4717017073395818182015534618606215 0.0760914478220781974704438010810053 1.0791421817426710864151535554198157 GT 1 -3399319378811573.3858702202266657563258012362991628 0.3587034377446095228185910102897207 0.0282673155902513896130422258579538 1.0286745283848971436679987034219868 GT 1 -15015529121297846225.1460852569615987859995119311932859 0.5633133795861312243624727472722619 0.0402646897120329870046198176123920 1.0410977509876095473181492167563100 GT 1 -525385337.9396511123789935829434613783187985 4.5079715766482205613600874627099901 0.0155684846481981372861645850049579 1.0156909461952910434337781006943153 LT 1 -1135180681119789327067920782682332868.3605924172323180368038190497014878 0.0704549785661325839148260292367186 0.0255764854174000452512258800287124 1.0259092499463800902678360257692978 GT 1 -86601990739219728121573176.9668725460522689406752690031755503 0.3091456245252930514012059303860047 0.0179416512956076150631946601562481 1.0181045541602856191361259469298390 GT 1 -9694750868694866986137911248.2393062104553870548297681353105471 0.2777185237683989523788027863891119 0.0376017222376991183023678296646447 1.0383269038470628940109033665320561 GT 1 -1176529671105786889674192.7467827320530015930235894282641220 0.7582159394827151752778631064597729 0.0637414475124600989355829135887827 1.0658636093592767197857202534700226 GT 1 -3118017320683295776912557331830850.1906403783291894341893441992845721 1.7994861997121655929941991086688250 0.0675379373478683110314453144633101 1.0699268117747304833073057393779398 GT 1 -62088465325082.2478557766406108726407986115159533 1.4301971183629708936965781682049957 0.0800121502861595389363959317114321 1.0833948158590441498563678552160126 GT 1 -9405.0637258709912259245717216119887172 2.1854987503881199194896480414815945 0.0465671508347968330639620582549757 1.0476862820480897863338704432101763 GT 1 -735764901582154727328722652213460.7622277739151640461883302006722521 0.1741219677648621141158366411531233 0.0531166585767924044618691123926759 1.0545793808993562293704672439900764 GT 1 -20615196288143.2673412466718828287452293296027094 0.7091360694464165101606607929816827 0.0259994973762531149207951083864771 1.0263434592989272106936722757519482 GT 1 -499037183.4453699300898598037139053497670658 1.4094908162174613008419658145471021 0.0232489980464474854366554826958960 1.0235235192439997157586764094020855 GT 1 -612677110834862927669844231764.1167383602036098181322149941001371 0.9884782101769447204693430736164908 0.0887990911580565710523073757761040 1.0929918694375204797372667233320795 GT 1 -9458798309299.4847683888753571120606255652861214 0.7738176145310188385021521888268775 0.0820438975943686301823507899208176 1.0856057082352475712404638243745060 GT 1 -364698510889912.4863791119967929005464588774902280 1.4263628035070422940904087262024931 0.0455325823245403622024593808733563 1.0466017718882675007386083666314757 GT 1 -1702130075375584106590854146833485146.0972464865305166158951365675494151 1.0889801796473187287958092869306633 0.0457066815166691563944488823388086 1.0467841930679507666551509324965146 GT 1 -65107524397459167793.4001020707101968142221727849127567 0.3559307665852941809599537748189481 0.0208065015998873949335166480939339 1.0210260069518857163765794321898146 GT 1 -581143606009674.4595725167027142919587124034632294 0.1102142826486044899746384792337411 0.0751623328157149398399039776572422 1.0781370518066580620625773502581224 GT 1 -92408603850102105688483915439937.5461802356339902613668563559005509 1.3525041033939574835145915795903250 0.0784845139468739223781820298894308 1.0817356967469157151054193301943315 GT 1 -297090236187795286.7363994599686587584822143276861123 1.2752066703422933333891849936735232 0.0021000864619136300725191416109590 1.0021022947357397092457041655366942 GT 1 -2843013750.0383407032289169582317290976611705 3.4801887309269829590550106126614416 0.0935535508229780903315945253833483 1.0982233247991212043760410058060270 LT 1 -2106229.0189309922501191692212359621656049 1.0360960106503245683252124464729348 0.0005106040482176201747798419387926 1.0005107344508559476034015199055143 GT 1 -558.8191782641367291788490293591424682 0.8453390031498596759861878658303406 0.0310306785514199061340322328205981 1.0315223276043448208253105535409415 GT 1 -86514365658825.7860222786335653225700000278460972 0.4107465837330633638805123910370867 0.0772844415192120566168934651771153 1.0804342626336553031612270763888852 GT 1 -1996998144485121223813053397753.6947620756483726937855832750614574 0.7800078447387585453079122696430617 0.0469501017887089626226762125457597 1.0480880176101760681931263696118973 GT 1 -101326438313200440530325259312561776319424.3316033681829733820474671480635088 0.1355683221170132407200201795403379 0.0897559122110883930167251712404870 1.0940424870985676703516085551196012 GT 1 -186899318276.3811283840874938276124502452861200 1.8294593448895622988622235043506044 0.0794554607442350351556525704496167 1.0827898935417444379614016076889322 GT 1 -90.4703035933185091377843648480902089 0.6817157160228302903469844157425432 0.0069161182190202207364262718655406 1.0069401454119870602105170049473044 GT 1 -50741.7778796286661490334750331905704644 1.9440153368723450202554967376585607 0.0981171342557534209186317762812576 1.1032706279460920417366425203494384 GT 1 -52783082586015468020.9200356664847999896864169261376768 0.2350774780014206319664881264299915 0.0129440470119842737071048789273287 1.0130285511980076387989474625446340 GT 1 -607311123.3978829554151196297945508743968049 0.5297248574739537055798015119376740 0.0578480996611893171904277853482353 1.0595887643920442469708473032634324 GT 1 -4651201066203143003908761790.2635698340536473177987326508024603 0.2949357647322103759101558578823689 0.0454250233442041027730054712524601 1.0464890881880317606954165778513097 GT 1 -114015613167201170420946511452897687423298.6024670717436075710761871207095386 0.7325849359347257210830068122841792 0.0816737961406622533764668017101490 1.0852026095859221238551319449531256 GT 1 -3108781061572613843869018396.2754223883654998475101411806616428 0.6338587814906708925110694857768818 0.0735106737454198256581771386551492 1.0763527538254260373247339139977623 GT 1 -4790099681869707759245314470934186267435354.9125169695013950001146398657602427 2.3496721660423899425825401646686608 0.0965063861352156414902369235481303 1.1066359653629219096044697933588277 LT 2 -13396.6174826886492471759055592348121205 0.2502979305176628774077824991661213 0.0491403612519740472882868225648629 1.0503888206546072014218234160463647 GT 1 -2931097912973318034685345876703806930.1160348989170918351912209163645816 0.6570290082624335234407160626945122 0.0338585186419102030284939146754124 1.0344449944607698075365674690241287 GT 1 -7475667644072290898567699603491022007547.2841717039408370169816922567178613 2.3146415632311171201724778560152958 0.0297175755767981340021491000501591 1.0301680906641452479306914678037980 GT 1 -66735147707386716.2417128827364231335258830973334996 1.4952039986518885069522404959212901 0.0578099991315999847726308536332232 1.0595483253087015527578247586890563 GT 1 -527.5721095954182524847141820666840159 0.8710952054185477059297295693952812 0.0750495167127752676306786801616701 1.0780150744839567646022161158821157 GT 1 -26114676.5771185244230899992437544383206444 1.9462575510585324871388564199780322 0.0590395020006036289801039307176439 1.0608541190245460158237661796248462 GT 1 -198439859502452950123959238873450877924392.2578757037199214120491569880630058 0.0274881360106703189775237963734853 0.0592175890020497681148414439537488 1.0610433978055381707667415706716691 GT 1 -1.6032293625115448585575664270404778 1.4199043842635183018235604316596477 0.0921190080109603128500189750194413 1.0966419750621204667135904065115367 GT 1 -5278702637069671757509304176517628961.7027412036396162607662396916925447 1.3204970957228172862071255666104209 0.0850732939023069676009532558202101 1.0889113195404744714126603931635441 GT 1 -1907751971352373316731.7629979304254031439258711072601011 0.8792953448228357197241344571501549 0.0882235946296780239227629051283985 1.0923604885168584894824056906295385 GT 1 -787332278277129130362961150857560398677.5999554594432011220539678155332755 0.3310331335220071045852566702384763 0.0022073064191223917790289744970976 1.0022097461106954034607475842362651 GT 1 -347452.8016847584609847926729505585516632 0.3787348500611867259982927244653223 0.0459275878806889936897345390266234 1.0470157067253845188519337019609676 GT 1 -1167413822094567417414844262013969.8225373279360047457491179015504124 1.3233673795552350453228543446422217 0.0809610787887571183351222763076912 1.0844268058244081713934666062803498 GT 1 -15926541790303595941.4958640896765184414157738094951729 0.1949994611214117251970394818910154 0.0101477361173388094347747497249571 1.0101995753905195112075559015124153 GT 1 -8649882833478400880302.2343153093328099976398293479007322 0.5438729078405533461157100994374216 0.0740807584148185955830464706147878 1.0769682602501901494280837113487587 GT 1 -932612171395621607.0888989466423117144631390893654259 0.9735673193738732337126734678319594 0.0978455893046956943144237936711852 1.1029695865467209612185205800155763 GT 1 -67016945452328940565292819809088031269.0143286665260161391711217777091991 0.1001622283340264667672837812171639 0.0682778837280024309691459452779513 1.0707206672610709829062780217394546 GT 1 -34071630265058153417943279735929099061.3019233246928631235772593993146603 0.9590507651902489329891239942533015 0.0175049557151780649571119982791427 1.0176599792363557470336197561254027 GT 1 -40190585585866937037402488777.8787620468514233954650646990883581 0.1531577250114760609385170213539068 0.0154893633340849535586562947674969 1.0156105768313920675194870226087635 GT 1 -38345829598732940855287686519048.4378445154504323945613877295128332 0.7305067610316316332680622217293360 0.0464176459700473489137264698434247 1.0475294874249475218599745676312530 GT 1 -84833532048289023953209288420568879388.9901882433227888824511074940125623 0.1939610025387636147699903107046655 0.0060314163695243804083884110239807 1.0060496788306010610413243476052131 GT 1 -28730674552650127704733067628269730.3678866393479763009072245645591360 0.4569592604566991522633339738522937 0.0907885055938943138518886798436010 1.0951775447540257893128586697924694 GT 1 -374561036762026703122208327693333.1677309997563750259065874255752054 0.5205357994824811439074484341639339 0.0166770708984014278698346546569350 1.0168176989470014288265873869082939 GT 1 -66248001176551390950434.6557819733498344171250912682433107 1.2662369761417849654615498491877022 0.0751419019016009267781571929656687 1.0781149606990301851667045780693593 GT 1 -339974340729833476688299528.6021816213586097562545675546503408 1.4286127558394524783290600798538093 0.0691213130017044610355207556785231 1.0716263141714226766212899321040601 GT 1 -10.2138494660195468362150995918672622 0.0908040487320324357473347745871771 0.0969939316206997409711275220115981 1.1020260053448749332358557379224334 GT 1 -207018009909510066799518.9422976354371740355337423354779113 0.6658255316042887897673983888147494 0.0704177231395775960052922451807578 1.0730199584057129244418095627118797 GT 1 -4658472764311.5544028103872161372097038827020967 1.3244062038799792620586090757893914 0.0162683092573815971094088111254069 1.0164020911211892694767464289326258 GT 1 -2347955223333799876.5861073445709301463819140013305645 1.2039249946791645805078926008925037 0.0325212056544095176060797984566228 1.0330617723074565775006345954756759 GT 1 -1653256007889332971366552939757.4071818178183665451435591213710036 0.0419044976109591908734657751864951 0.0733585375626798329134834907070271 1.0761885601441055975847912628649361 GT 1 -6.1070070479834767500805054002400721 0.6710906247249133854018946488202138 0.0499855098347385584419279613181146 1.0512780416983350294551295072751091 GT 1 -164263695743786084684114660924.1755883518693116871253277430185077 0.1999620097935184516341266267494270 0.0481043413082667431679642274925745 1.0492998524120992709386202420666127 GT 1 -184638997254851022464621510.3889342539726379478314480597153137 1.1651786028614641970627631739670251 0.0318806158012230582131139983610521 1.0323998685263154333801634941526103 GT 1 -1191315809990665.5988734555630831778787217325856581 0.6880183092467106114638229511199919 0.0950363917644431487250391145042175 1.0998605479851431505782922610350944 GT 1 -18228.7755386822294833501769729221524965 1.9818805486921144781350336092434427 0.0592939898351316622066824210753591 1.0611246109900197083337278627865302 GT 1 -3099158145331919599.9148340770542136508228317907866802 4.1565856587481521638738802606938618 0.0603782943939899583890020233062655 1.0622779255638071858947159172597426 LT 1 -6389739032718904.9023423502219323452757859476426109 0.0402974789078209233560848701746276 0.0413165373397547260788118439486826 1.0421943288025854340025432853550748 GT 1 -122710255152057388324588011049131680211774.4297307406656586486560412741229112 0.1589906418384405355751103597498299 0.0748232141746822663327635479600912 1.0777704399196219959067534511566850 GT 1 -77815472245537.2845364613956269063096922645349495 0.9254306540678738801221268834438991 0.0066943953045069619873387717736951 1.0067169032765009393098998300160875 GT 1 -8.7842745293341855769687995291267467 1.1380191158556032982482496335374320 0.0152187361049446707141162634916517 1.0153357295822190897056538738120564 GT 1 -17435834476738172384949.9054784660235245159029915020760622 0.4975324562202270618776177598957181 0.0222398728202791659750784551814336 1.0224909077630061418781106271529888 GT 1 -4.4113055416406447608507008502844515 0.7301059685970498378877915090475095 0.0476542086373615751228424961396430 1.0488270839201872675820895857325173 GT 1 -1138303366205452200888849994746.8808816292028820678520366006453834 3.4628031956996862302608499631252508 0.0645576193393429827285650429462504 1.0667357271898118163486975094677224 LT 1 -461020961877.6514293220627501388868142502520427 2.1850888451166874268037809452201566 0.0202747078100672472752471137075507 1.0204830607047633927971323456529506 GT 1 -422254283872386128.2802719930494641643542372064064077 0.4471994635251002233439025510597289 0.0235883814549893921225288334185491 1.0238710411639829366690586404369318 GT 1 -1842452.6619918595319888811674980512735972 0.1696113323642896863157932235565122 0.0241579781353790991168108537845557 1.0244545685138745162873238824239770 GT 1 -56816493299097278465.5916774214982682590585935395215330 1.5212576621033301126110593225521241 0.0346576392624811765542072835801091 1.0352724625956320418408258982762744 GT 1 -828081.4226867634231474460318826519422075 0.0978033231082556698450584681242780 0.0827629869119134171714591170006266 1.0863893743772739184458766358388917 GT 1 -9118932012105399222545508772737555694.5977024699011270481807769781767714 4.8958495521679258231538264044174075 0.0939745776642365417020857947056584 1.0986879133595825572917462023927600 LT 1 -1782803420537216712.2692292200556796950391167619860368 1.6496481150176210256712452981824157 0.0719413301466455404212893246606395 1.0746603263696164016609413045159854 GT 1 -2047101136886403274.3636684469061778386756700741568023 1.9211442081609367550230590028089858 0.0370106444068255172418300228174715 1.0377129206270585343039175910944615 GT 1 -2717939391530013233098984095105692048454179.7407381445711577897193592315194846 0.1089060828654579919895605025761449 0.0649026754648895140299670855214098 1.0671046646985981993534449670149665 GT 1 -5285017352882192454436421262247.0772015940916326328917408600604068 0.7993919421215130617080438217160204 0.0799444633793184550732481386812721 1.0833212448689530401287824413137239 GT 1 -22924789677002081366785305534.0429764962144666925241680385181467 0.0239885413087799690918435740801088 0.0958576929151629275494541919368915 1.1007685116374510109335505663383907 GT 1 -135061754592881081869038907.3065080249826151921850599696601567 0.5350679174052559605230597271480714 0.0859158446816801574486734612359153 1.0898326381140768988681761034687941 GT 1 -2024241589164848449151246096471454884307453.2034998350736296860028293623033882 0.2172174811426667775027820159830240 0.0509652167432483540567849130882223 1.0523098285078046191474249612852114 GT 1 -73892178941345691355.3505941550748957630816095450569385 0.3318023531185222373425760279698356 0.0633432008344761448375201078066443 1.0654383400766746029496291278980999 GT 1 -10782884568289220756418640897447293744.1144861422231249644622089969944657 0.8590151615944968273589254333234734 0.0142509313661003881205379412403641 1.0143534510547736908190103209840318 GT 1 -142825741849123.2409715044512993028117182237084401 0.8452857596164364226747001253190739 0.0812776310986166245634907513900725 1.0847713035725033818290552763116604 GT 1 -71.3022570258434299123529459791726827 0.5812415185347352248127756242639049 0.0022119797086096614003481010841570 1.0022144297493523536097123574648051 GT 1 -154221.9776581045840304768306027187133714 0.2203088822669080886350973201544675 0.0949641480570331690402722593346067 1.0997807206602872437391473690150495 GT 1 -5569061204.4168612507163858279516208312697555 0.1576338594726650895617719397259413 0.0853203466716578198177573404059425 1.0891813806599929673374381977983748 GT 1 -51019105757987430170444686699307045.4575205983162494855733758747634089 0.5235876197202993048123692495556198 0.0989332288739980282475561669474720 1.1041759163216419337418450116197730 GT 1 -167548434440108106100.7682101474057008824377246474725660 0.0367306283657662551439410093789125 0.0990150901552604326429129198273571 1.1042667697440860848074294605646394 GT 1 -535930759903947159985878529.9426401046929357377948664103436035 0.8127619791965814368494529205575354 0.0745198302576503783302714147331476 1.0774425737326045887372001547768045 GT 1 -20309113798850978575115065.6540254756888272582577322422971140 4.6498837489255563654282461252473971 0.0900029742414887745697231668888863 1.0943139478738229603909480835396739 LT 1 -2757.6783631987561924329518414260090304 0.3442101044331441552690301297040421 0.0377860980637867141979007927744318 1.0385185017477688019897048101828786 GT 1 -398163985396.3918688365952770567733014146561799 0.3998235840525641643322702665217095 0.0947484014085045917666515644942177 1.0995423644263241479002569047141678 GT 1 -55628768974318288163530859747844586834.7506747624319742216351417131194214 1.6652282456400190737759883506835294 0.0888185167698531134217246000169018 1.0930131883570642432666781215156766 GT 1 -3589032.3159850845816385775340642475206579 0.2410869948453204547440945708312519 0.0720588372724900218722905893642612 1.0747869504392296918714479860153485 GT 1 -559.1728741525004369766580054512223609 0.7447177831448030941813301131750605 0.0412310775255230325474983414757418 1.0421051898858114710664634516799950 GT 1 -51187262394892107.6089917836613260582516954665478359 0.1029533146108368411081661430061523 0.0534629864787740838423522318870439 1.0549452034225371983545933066788394 GT 1 -1473467925882.9405780527156826808576500535836139 0.3950034726556135270664138496754495 0.0913049252825502658586553782707226 1.0957456924369908860324931372433209 GT 1 -13225293270759803199431681834.3374869880399127303146686211564191 0.0055232339311932092184277219253178 0.0699465349723100919539817480487891 1.0725132052101946663974565473107030 GT 1 -309786.5262079017637758312340220727041239 0.0846821615113997319441496863291701 0.0747693051494940966472389883467459 1.0777121727262968450922321131134988 GT 1 -51541106776961759164602468622276686202584.4700381095492901214424546477862706 1.8245743022517342156718318129111443 0.0642932300460570359434838785440505 1.0664531315507002870542407673358564 GT 1 -2070027238302741402.9534623198869086038410475270666501 2.4992387216319835764069520292409332 0.0953820901955379309235117450638345 1.1052669153319774503431557180062253 LT 2 -178145.8615737606736698263511565591242740 1.6970610248839707315778033089527666 0.0734784548874458987165267382480891 1.0763179792232096963605221185099637 GT 1 -32858.3636722523432328709160316544300814 1.5127868021387249931611436240626364 0.0203672675430501572902097423461404 1.0205775403576777123810100742657818 GT 1 -10276180474032162491596718757.4397489126908487806771739538757773 0.8940101351825718873159446367777799 0.0477508284264986776209690615295205 1.0489285435912461858621049551218240 GT 1 -378309271312543944988425886798.6874696451167039436104310687321728 0.7000583907649556675969615455910874 0.0976937252839677457933976275693620 1.1028012658708378184935594038339780 GT 1 -1366589668.5198968517408612825387725385411553 0.5299339131525375139156959750458153 0.0794627973795950956291408095357244 1.0827978634598564092945006591002768 GT 1 -2615253635726846549924935570286.8553569976472245486583623891713327 0.0764180502754258119473422194000298 0.0895943423846196195171078234240988 1.0938650012012381617845043278977859 GT 1 -2941024562572.2053291650251381149882094126620313 1.1068182826342458156911080665087696 0.0585580600743915837812953196646152 1.0603426004172494421303394711149760 GT 1 -40497868768784848755078.1650236567965777239482633977527036 0.0635620050480078280828144635044843 0.0667344481318095291431260872233928 1.0690654971224964306627374541330470 GT 1 -80997499631578208.7560491094623282908579362472726138 0.9622657128799584418642436222318083 0.0333525915525572893827494286953660 1.0339214741698818379797551958509971 GT 1 -19645568189127135374310191.5124171121638945337866183500895419 0.4936243317691422218810452694169701 0.0359356844096274520373068487525193 1.0365972691797004350586071640685579 GT 1 -945069388.5873875770046025572705474933704419 0.1582994499817542269682938202020664 0.0825310056932905898365558287662896 1.0861364932955920909377992568443950 GT 1 -77895972762854238437512733779273.4095191093889022724507548432555090 0.0295249735854406669448101754055451 0.0110982629378976311319919844907102 1.0111603081478172158709885813154193 GT 1 -70428404602435874451970275317412980633.5179790541803637321998787752382028 0.5912116739044587582851622848476142 0.0221640085581228017812303243151666 1.0224133209223778285958911417515164 GT 1 -109503766906627893946848848364041690725420.7183496045152174401619838425610785 0.0886837117119451264796578771061593 0.0730462638107042205150892345090176 1.0758516216850922263096817060422077 GT 1 -28548.8668819146118526597722523260400485 1.2246574901630871774034142082386674 0.0710115411316229569470828247971868 1.0736589634226713144547689096496967 GT 1 -1269302.9185654073654645611078310256085557 0.9040443382270738900498114400691771 0.0340619819530143245431090726825334 1.0346556103406224654664724067897307 GT 1 -2424414921196706520024.7047775452031420680756767872815878 0.9346437707271753430454345111540131 0.0549502148998580716537344762874916 1.0565176702304233028045538861735334 GT 1 -888356.1864104882891401718518721101710819 1.1377882936105434663569356878118919 0.0645368253073751568692242175177476 1.0667134983478382774253036803350367 GT 1 -127.7402846780967964672416796219215060 2.1099272411140448294533140583743414 0.0709986698114748024408922419562144 1.0736451083194579714288376472854516 GT 1 -554156.6460806594195228651013407631339981 0.6444070048171225946235150274513949 0.0703760767593960262685319032275946 1.0729751582321912652659753987898698 GT 1 -52760299243078165488.7982265237296791245713259530696803 0.0117711656478480935700950118570896 0.0404380537461367395936954369558531 1.0412784046450712442926903347545649 GT 1 -68.0159011214493280105397274501680429 3.0937931232105909968458199065460938 0.0692175931345275356045910298874309 1.0717297488225804664563124986199744 LT 1 -34519452730921353007004333454196327512451.0009407168888083789719296375259085 0.1269001602017061483522022739057659 0.0304749902797530506795152359055401 1.0309490081182333428728849955535049 GT 1 -4668935536889226530716.8236538999894784568360423682185067 2.1382706563380247688806776894943719 0.0876969635724986108437247245004702 1.0917830673149698288076416610647184 GT 1 -90750702610.1773989888087012800810784926177584 2.2580341095029120623259281322147118 0.0713714952523573595083696710320546 1.0740465073914116244626220819047853 GT 1 -13959299626.4177163135219720756896363112409670 1.9995654094136483096819473028439503 0.0458109911639034495186370332513304 1.0468935046878122600388359428720510 GT 1 -480159675433250594061939736717185.3747889789993476684110779177501575 0.6295178095425924465635157464499492 0.0779286779246109681730784228998487 1.0811327025872112166360376786337809 GT 1 -21486344962552381550213914576160132.7324901583130950065202185226299423 0.4733938605628332677301268569222468 0.0739561343981704373907424814251459 1.0768336743976398082107108894611362 GT 1 -204856272923857108725314802187996059293697.2880211401684459058779950476293353 0.2684734198118497956805290480809944 0.0470913730067192074972105599155987 1.0482362592601393502300158317788097 GT 1 -2543362919722042436510086426792455128005830.7426361841432634143927969523069747 0.1382558989379623136221994652877770 0.0430034025739130515090291198630572 1.0439554429941377750412592159090961 GT 1 -753570427432767922402059599316798734085152.2027792825490410992839415556757995 0.0602736628624627545913392383352098 0.0804204038671484206899005074624083 1.0838386741025819224565323714449364 GT 1 -7496187401702547414630964.7347805242437825310784821323381175 2.9796593328645606460471588299296326 0.0117740165283046486223723012874513 1.0118438791783602687493215235109232 GT 1 -40792594827937978794008111407353.7248944697343769897928601902472400 0.1824729417502146394270324444226101 0.0060582466435089604557362729192717 1.0060766722754129384922371926698245 GT 1 -40212213.0275251719363470629152450933586672 0.0270231554966009108754532786238533 0.0413896372089422480194256290394230 1.0422705819759410989977743130082245 GT 1 -5033177310771.1358762517512166690422791998069866 0.7454070775645386124132995977566527 0.0306154936024037746371095175971293 1.0310939383707579492831286083285473 GT 1 -18968780118879823291352720817.1663524616729208739681395835372481 0.8160814771187911527924296953387118 0.0191359034389346668841064301666138 1.0193213646293503926960001979147150 GT 1 -665301497195020.1680029417367214993603045015531851 0.4186466788691023222771056506965832 0.0753503719380786551410797884542082 1.0783403936987542737584730925006326 GT 1 -59383299818865395.7515101323359106835331308952366186 0.4695126215015037835420642597721083 0.0921846936024627967742660692337787 1.0967143281220341836969201743486559 GT 1 -9200664602376093524645027717643367983313841.5546187510733074410532450452463309 0.1366764146143988802733971990507344 0.0902010213982538445875191227583342 1.0945316065092660809380151751977673 GT 1 -10992727237562079699289.7785278792573052551795457954351766 0.1587714201023392168347936631047502 0.0563009679210335282021734234070157 1.0579479856214067867437525026584994 GT 1 -2.7721636199673112373953534637528559 2.0565361510910701557676086063992368 0.0686234251954312583964457375151843 1.0710915992713243934299584169333290 GT 1 -12605695819197212216868094.5134497219859666634655416655405014 0.2671555372747516266444253663118950 0.0897837653355700936896631399534814 1.0940730871881607660472218722693536 GT 1 -99431.9341203554622291169956560022162810 1.1072069845626163996091238993209624 0.0200643566570317080502363838994833 1.0202683795320877471717320719896366 GT 1 -331787592591554828973891714.9046617605417562803868668419878051 0.5182514110831448770127750879970109 0.0019258715085824884322830848740650 1.0019277283835677036190185030929269 GT 1 -68598035381780096532421794425.7056026236309112004910905372283680 2.3611591321711818081205913252273120 0.0335106142752359223949212148817513 1.0340849625722618419379609533875419 GT 1 -587580882237582677763642842185953387.6114493177451851978620978610028855 0.5839996943376366113849933797419798 0.0517709449847832290959754999977021 1.0531591866979728946038618666989500 GT 1 -1623486373547448703969224661.4972493337750385429854332204610123 0.6204269468063975475165721594698601 0.0747069752401273063075866948001928 1.0776448081108316785748094098869988 GT 1 -21.3959599336864941739049989198765489 1.3210691300941587297845139253573628 0.0484744759183520708891218870342068 1.0496887675067725516341355899991384 GT 1 -22721752392552530649142663293.3270183574960875811768297137397869 0.7362235339718124654172366020100530 0.0470177775510401868759080664283602 1.0481590298052236737381622919328954 GT 1 -9900061.6314374541121959795760836956061891 0.5614806692518505185240609192932241 0.0799966848147139040087038859606642 1.0833780054832760173118130921981161 GT 1 -1768966859839883624310624531488538426741.8241107612978072535922412930043629 0.8169651651423246756072903530175536 0.0817739392296086235512134454483492 1.0853116651145605220313526221540332 GT 1 -14005099216325.8286985139666512455641101488531429 1.5645624426694758261529766969188851 0.0339897377901005090542063206369440 1.0345808214203539751418717706597083 GT 1 -1032208431143776409143740547269974.4205388000665423266553846946542695 0.3205825798896266192970440747509910 0.0610019726943151758967477209715183 1.0629419006219969791203057058774831 GT 1 -4195426100183653844782010877676175838.1895932291619219177308858481710572 1.3882425994889197931273019731524055 0.0976993592324051714680807199751173 1.1028075098327655983218823705601884 GT 1 -4336490920138972953372.0956846141873322069139897634620906 1.8557653997734234701462109028249757 0.0852451600989901093033593183480583 1.0890991841419013886841666408088618 GT 1 -18122.4079654191588550204342122116250305 0.5932590643940375189906439509534189 0.0938058158862499843348679106482089 1.0985016646534392258680118501835448 GT 1 -1391922.0254158800016327027138827755047200 1.8616615512741745546929336758326880 0.0301018112549747046908670343621092 1.0305641730500757129498543138954293 GT 1 -323065199983.7747981146707100160335044394284339 0.2817964909597414485133871461843940 0.0599188638981811619951735204602387 1.0617890924410779741748037444365470 GT 1 -10464149351688740117612.5785396356807838157705448343419992 3.4209225942258904562056762724711783 0.0046407402030959559461933446059002 1.0046515418693528028593299016555263 GT 1 -587368001265730368034.7816531723213973864700239286246552 1.4731098141705624661069050611535560 0.0417103584603023267603851158271933 1.0426052068949542853630509168487159 GT 1 -391232021719173876656782.3473522666514022979644298697592698 3.1041485134288167071991923671117171 0.0065388919862136325788019459020198 1.0065603641945683460230419977128987 GT 1 -67561802440610.7062790225921730917029216058225628 0.8855530759883262617424385355033224 0.0253136053459176198208614498283313 1.0256395062322564043312531491668726 GT 1 -892399101.5288206905117364525055020637374697 0.5718837848646898994450928539182762 0.0519829444471447769100005789513547 1.0533827857994432284387316954615699 GT 1 -18051899816460213105317493592.6973113700552697470541633171640376 3.2163921938728215944978640695985314 0.0512801401822941386700889541067185 1.0526417190850041702655274281040940 LT 1 -8962035878926580733963770479699.8549021677340591478510918739372030 1.0783736592040113880525907534072330 0.0142169470139779451833445156468865 1.0143189759866242706259288972764210 GT 1 -2125321821342963.0769040450806052625699798041899394 1.8660435242162250475381069415064976 0.0576459768493427273034017605939370 1.0593742542542916664162681597492448 GT 1 -43344224105127336.9603794368240581732661194445027656 0.5886358740921379353102727642461207 0.0537816456450936068762165306246504 1.0552819180077799836921583392315859 GT 1 -8069514238419366765213693949021899759136502.6005349470711084105112493503812271 2.6533035286655061816433121226685885 0.0598297281048048245956892837574389 1.0616942798079758243314103927277978 GT 1 -40878206226956653150240.2497075002832291058451737196113850 0.9047550379887048245840162944999940 0.0740614506249422760721039826006116 1.0769474079039989146142127169580028 GT 1 -1285489713534103390578.9749908537645802114355124881573802 0.2033859045251030777772479583406065 0.0394335942981213753984496306291971 1.0402321625658710722556580100530170 GT 1 -2538384.2210363369951497051931079610593712 0.5117532859692671317472667167132714 0.0375847690929077334251101982425848 1.0383092884835843377735745491548050 GT 1 -14346.1879451971680510628275642568877277 1.3224351098711074403970103598889466 0.0311044152141924699165608807478486 1.0315984285364282995802692015985091 GT 1 -8281197081972427749049.2252267841741393683798726891709303 2.3715884972461951490612150785219787 0.0895131599816813801667927995708954 1.0981727869696436223992312551424642 GT 2 -17676196986804773401582.3743086258378223255458423396388994 1.8829113762573436716987019813035726 0.0834491241047676162627333721223245 1.0871377021735208712846848612898730 GT 1 -7175838176471607020087516338053153310361143.8779237958801686240233507716241982 0.5960149800604703319476847043166475 0.0615659182695639600151669311605396 1.0635426633228114678030817494124882 GT 1 -21782400766003146280342007680571.7728097557504731617025346278113431 2.1033107889065593197093552476130118 0.0357784570126805808708444435525792 1.0364341943984423528146438295649851 GT 1 -470688578144881674987565789044015191978191.7392746810327406619179089317461701 0.2413036820329277484623080784124898 0.0716117453342940440474509835843586 1.0743052558190273152784463295998108 GT 1 -519030863882564468271318312596410273.6755569351154059629914264126775802 0.3818585056783383584416767280224147 0.0398486465076487324710150557198236 1.0406643470594032028957867276998498 GT 1 -224.9828593087303814218836854612383470 1.8323139131086338676505836453380972 0.0760232673190401120639873405482555 1.0790683887387138830905869241945429 GT 1 -7459780660982976803789965376892.4501597034613090315107889843006642 1.7683762793374938677072039549778093 0.0986385599241221578828388485464866 1.1038489474574511063402682496006899 GT 1 -2460334667399691569.1231770165967419015347068238717997 0.1870520913828215265799694180870720 0.0377853979278738504421023170200301 1.0385177741178138252339902245959823 GT 1 -4728918713392208130.5888764447329406431035987637451857 0.8431988453300553344954198450203925 0.0574028913844245682155573133218747 1.0591163319536344958346075844700167 GT 1 -1656389892905075714701321055.1681255186963361465609310642481067 0.2760067840117256902328810117637961 0.0431449359282282171212901178572702 1.0441033471994850244023026124394999 GT 1 -758536284266617187.9072570072583175736150060258906744 0.2203899566203820442572743348205753 0.0551093247231529148725592735783719 1.0566860457184415934603380454117425 GT 1 -31822213631069230768222114335108.1605526251312482615901828555265499 0.0525875223858286833471771468611604 0.0100611651752086855726695882226404 1.0101121207674112243983043062803201 GT 1 -7675336479442851291491.7731418252156619286830790299138749 0.4619731818458924487751764981250607 0.0171090420863023171322017430532102 1.0172570928478415535992430471830138 GT 1 -183853.5885206872887817286138523337723911 0.3181757803827041452461815301712763 0.0872933997652597906300353440840243 1.0913408079364881191429461665845304 GT 1 -116931081060234.6287904387346942916504392573387138 0.4205790619690647570069860675908026 0.0498106095227951335195199071604116 1.0510939558597373279918539771464425 GT 1 -40409.2070626866621301621086190960702395 0.0894059603110541775209917825579248 0.0658139870969949425631329449394942 1.0680797032987422312355962372475813 GT 1 -39446522602603522647302.9116273089275439478845036150969995 0.0817747433490118958872434537543790 0.0500537314920098441710822354010906 1.0513498554523709229142375044771343 GT 1 -242540221845071523380532275432420729005205.9040488208527214192816797821044613 0.0600030722206013532616383323410976 0.0732375240108348037517227553667621 1.0760579749548675373374478024057556 GT 1 -326614726955363627563185.3252913757891919429598431933519714 0.5014186077598550799038302060204618 0.0569111328927045660431100774101391 1.0585947620748751715863311228074404 GT 1 -19355752902814939681.7729523580438076776896390605974438 0.8034962797202609993890979461459547 0.0983968640967100501897856517617839 1.1035808381090146219426910050194484 GT 1 -346804970338788569334270848148602957.3175974340577533003537133383798577 1.5465456760263089750415169486925004 0.0680426151700011492263905672579421 1.0704681897732712502087564682550520 GT 1 -5738933599951987753522801341006840.0035453754616609443323532974347844 1.5961723296469030037578899723595930 0.0508305638835281611201074183341060 1.0521679545633978211056791338604660 GT 1 -41339549791798714091.3498595866786876314175816689250081 5.7153734745715868240295632863302852 0.0383703254229582554498991668506779 1.0391258560922311526372285003233145 LT 1 -7151513485021273261060239912.8964896117713919985835596925874309 0.5724335465072903236281150408159225 0.0144735537548582470950723157498933 1.0145793173915936394156866403684041 GT 1 -3787755838586638635582893265081662871.7644357165661454606395478776589617 0.4892833408579385647987490315435045 0.0895309605090150009290039743496854 1.0937953842465614450770248918265300 GT 1 -170391776686246342452906776900814.4426063958049524139237812038839068 0.3203204000283086290446190883274995 0.0448260661967672361875336171915534 1.0458618254481026308046813874408885 GT 1 -5042865837427894172.6927003832620066396423692984571983 0.7902734837097307953801888585063404 0.0802884996437558774858696957595736 1.0836952446869005716827977201157696 GT 1 -5411372436420.6763228147799745492889462968293573 1.2286295864162869994950047547421277 0.0981615570553244673966602681690578 1.1033198847790251936233137574549017 GT 1 -18938226055784784746129459698943851.3014585841878824061693741421594441 0.7545841146645720978569859114107297 0.0496318611129480435396920908053480 1.0509058548339989262961225136479425 GT 1 -644215105192172022467844893.2983447960028157200812570732512100 0.6124151564603521788019254388281332 0.0436447184132298309090022194068547 1.0446258015103808899637452893776321 GT 1 -733106254248645507760673099906550994.8986846806637399914904932237034440 1.6135405632912150534274120761384071 0.0157584262248938946769861162430624 1.0158839102565505692675318714031486 GT 1 -1797184624.6574655201034710401993765750127862 1.3990558442141696347508672804567169 0.0497267324392242661597687791395887 1.0510056856869238060366652889631105 GT 1 -467847170652031298808613270166.3055478967676858125888499851101818 1.2675341123601325754172634107738622 0.0552897656394911572000688276980770 1.0568770288154187536865226161956004 GT 1 -1036039.6016788334747022437388225061284917 0.2157894835602887109700588530184060 0.0650169333841572934341463892190403 1.0672268604287396523857040139873087 GT 1 -302679288572358166372731371545665.3725706295207175798875679633328579 4.0672835148210854815887864770819445 0.0589176010855081047826236314767037 1.0607245779652366022043716983829884 LT 1 -53988109608830854285997901888815.0122508705230239436079418799593418 0.5093871111915414894341271049138241 0.0330784888988737311775600708921312 1.0336379542469574821187387126759609 GT 1 -1559993286298829421489616160584.4880154864310265621436584332763886 2.6556306794742524710986969868777330 0.0138380525858461969417476008052373 1.0139346909962035179764407303009891 GT 1 -17471423365797557391172519322264543.1038334554411123822142254937258064 0.3313799113976560743452799672373420 0.0031865629806475323249815815607206 1.0031916508839536478728335720598475 GT 1 -89916402400694870.4539546133844491857387565064390300 1.1231094914278770616514568608634330 0.0045199605174883065598176714255071 1.0045302064247495693822877506913965 GT 1 -449641152934629213445377874574775112.0186410577723150150083032917847189 0.4571219331167541651576969544617259 0.0855880519084584514171602400735376 1.0894740999951037251598836331951839 GT 1 -318191171768423886890971365431.2721657832827866241909753925752581 1.1222905283839041435668451024089318 0.0152737151375459889982773690947531 1.0153915598151626328036972405816660 GT 1 -788938048693443117.5318944380471111430800493727515079 0.3695417818230385816646985036070179 0.0946466139868022712053093598504381 1.0994299297178426918912664845788342 GT 1 -335837625249258967.6340523489767067338077539565540739 0.6462212168321927461570439038502446 0.0256224252891165293762535251662668 1.0259563967506151482448223647118630 GT 1 -324786470106066866602362160020942890303.4608532433949072889269974307281349 1.3961557983376032490477466209926543 0.0763302804383545152775741954612014 1.0794007176014867034076700999464752 GT 1 -282817.6123979612919838347056960917084099 0.9850849131773649081389553444485122 0.0693191734565707122423341387201089 1.0718388891164319699464990954467418 GT 1 -1231211649292413156823553461012891349189.0474820806170876219350549992485405 2.2359691597711177553204865022444169 0.0268939015191262621596347656278563 1.0272621601089116217126982373242347 GT 1 -2493224895955996.5656499706366510700865820370021862 0.1081328452647117817907764225157717 0.0059657181874051374310726418414587 1.0059835841752208560670093815526821 GT 1 -158343776075837659109433680866579.2399065662532027410763310225189298 0.1082150994210723688963599875017173 0.0515940306300768294916289591491576 1.0529726306627369106398555545382466 GT 1 -142858117101264701.7530204230919009521145968813961317 0.6605151792623421404428330923501183 0.0767646805402541957811030953026556 1.0798711263130687012230593451001054 GT 1 -154014449533789951110.8436022414451871866219051239817231 0.0423465192235281508146560754028041 0.0079717409675003078669631866981441 1.0080036851750860079414782510912870 GT 1 -1108549618271790749399354462.9112013312954899543450999698174948 0.5572610798797515114829232268812427 0.0654924340842022433956676855070113 1.0677355559012115868233982345262119 GT 1 -11669005323.6319391988864360592702707231320614 0.9021339206675329080230028281776996 0.0157536041539002978261268373132265 1.0158790109926810172453555401164532 GT 1 -78801.8655058142017711466102471450778624 1.0162318258752341272760549882861159 0.0669470097471404904465944594023470 1.0692932841925519906694549739910721 GT 1 -321656116662423243059685231.1018059337273239568644694348647766 0.3308371803533701716036578801900108 0.0671507391994828378150441253698914 1.0695116551742440046708336634096279 GT 1 -2027348470162493050472277879570539693.4712187194295399487424807082915535 5.5217416026787433101579240320194685 0.0916727601596874354429357657306778 1.0961505690080873442047351882963785 LT 1 -5.1967275291114032797818605813636967 1.3182135677274349919164823329913653 0.0051346758527531752696064658094694 1.0051479036003685774670623042103907 GT 1 -248312076016075664158479298878.2158546564076294964201656018500853 0.5778089275973453642110661419231807 0.0836269845180199271534842321096663 1.0873317750585405759088242388315296 GT 1 -241524.8838554523850684758238791832895372 1.0248655814434923352270582930380478 0.0330417180291600416778548222982271 1.0335999261649124132146484733381520 GT 1 -3538068.6137094681941163173439674978897746 0.3161487001907713045037598468970320 0.0536938074058744371792726113274855 1.0551890914820433970507669447465852 GT 1 -10135694432510933330875853154479011.7158178897672348411008480358758452 2.8409991563559880877708899560132789 0.0960611129001253489884999296207348 1.1009935236407558911557191030050595 LT 1 -18660784873735601800179846956.9656738755353703916685096829512452 1.2224311099745169065205860730283431 0.0210537649116525806384543635199956 1.0212785561534065996261200923781693 GT 1 -160148355786626232750075330.4793702581482197180914138119146440 1.8074581180453284103453484935999803 0.0324873477519922633688363595765083 1.0330267769047840604124131663252212 GT 1 -1594472746612520396725008104920013.3239926980496599420960040370151793 0.3572288949389799678168494145241373 0.0432767757451016961755992642025063 1.0442411412138573050570710977112565 GT 1 -21024284861763379868588235428121088414249225.6647513091863150808094149655571969 2.4205846280615728108007347828996898 0.0592537031925734230273343992524831 1.0610817859421403633849738489551159 GT 1 -1937657271072917513325057986571499026380.4183263365207276541684592952741912 0.4839260406590209220952707011997781 0.0480289568209568290122401585528134 1.0492206614821090191551945586126945 GT 1 -54.4967423494725222252749655148895269 0.4498388703401760503710259765554611 0.0916522836880031393314226540954535 1.0961280262063430716736752492897310 GT 1 -254747572603274670495895957541546971705882.3647737124837686588870215743354776 0.0882328301750601649314242621250794 0.0223608053935491445349780492105644 1.0226145986859565450514079556246235 GT 1 -111066374450202604247597557107.0578418822483691699873259897771019 0.8863682343074363782928262264352341 0.0031728447956555227302525230466114 1.0031778889400548983926787941742960 GT 1 -31196717.4365965902375515021853113146297436 0.8629575449076715776016636586999508 0.0219024494615484046002723291173095 1.0221458689946720461025694086661386 GT 1 -128853525888897199217208462321995451206614.5002207477331373818017839699653926 1.5583426321803235968573994919274311 0.0080036265396219634915671607361046 1.0080358274898558980227231961079358 GT 1 -20294357065.9412435795029477168663484492797194 0.0502380857235906111293753842214245 0.0820485321337147301759024878675185 1.0856107570072240639519881198263705 GT 1 -11314721265.9768257013881058568539918390757794 0.4588555942795391454637495162888121 0.0450365856955905827690584728206192 1.0460822488641300420210521596115100 GT 1 -543338162914104322.0819382693789352711397127397334002 0.0953922089936361049051045147983518 0.0986531302449963717268796088323667 1.1038651123808556010059441557034327 GT 1 -21197.7689594365936324141266654695250550 0.6953169877129449240293856543718998 0.0393892833029143395650511635599652 1.0401860335601711060731943414797754 GT 1 -137497512851389198822086769071377.8264342707254236976527708292876545 1.4204401478244321561986674504393354 0.0320429588477697209962365878313971 1.0325675716653046010224440177929849 GT 1 -733565188549531.2064189858538609314991493501300704 0.2364729030642017947326390742500228 0.0802422590000826270294584852855624 1.0836449686152562321858628437839093 GT 1 -101747257564398712.4043899386634059945979351499148131 0.4858788800046278378575022156327846 0.0964840055986388335063662144352500 1.1014614663933616852065205307389597 GT 1 -5269367914498375197836402091.2512310442545219435032538857747970 1.5764257702155243722338507789707235 0.0279914485375419959228668789546173 1.0283906767595156791997380922420784 GT 1 -7758787163.6271168326301060833311402996085408 2.3473513804837138868828104978320176 0.0800504243487611169809127400013176 1.0834364195158636249287164069757506 GT 1 -2990781688128081639734900587796391043318025.9108640738881395240696864019789182 0.8754137747385292739325138677981150 0.0600310631235737389423561457314984 1.0619084501402567416004411814170794 GT 1 -203834517582976594996287981044918.7770941581498356729029611873842444 0.0168178972478673411606779154117994 0.0141796720840942354588893936826159 1.0142811641931883118520447763100763 GT 1 -1576040822387938698615633085.3882982381501797201087755481571493 0.6102543140409599221779924978009597 0.0133106014219039013054335394849202 1.0133999814981149399285187703165199 GT 1 -200691093770903884007418314547570628.2716347953878350568249082775027621 3.8256511753033290856299946057291564 0.0042391519952895688800638878691238 1.0042481626742171163586242576332799 GT 1 -8434823821219511065798308714.6313034772891830276599807830107600 0.0427854656380786335324390398340550 0.0689545635451953137928981579690185 1.0714471989702664618438275634800255 GT 1 -90259626427608501412184092773849440945699.1441714690339158149424700280646210 1.4708740949267537583132966899165986 0.0571598822856924501784434857824337 1.0588585571556362944879374419326643 GT 1 -762434778935.2148179055814229029763130235183515 0.4082266860425835797045058100896539 0.0516974943957220793209027677969482 1.0530817288895999287917788655355542 GT 1 -6401527858232227146020.6790451567163388697897944358263235 1.5103221622748017457524402521146778 0.0862507942829991000572121734173388 1.0901991371748867603153831375251716 GT 1 -12201214670069274161441918328172518288.8274633474160497400697428818400631 0.2591817878057755205522461100904765 0.0614945397495172269060151581600146 1.0634666049112487703357230383906916 GT 1 -33665086912849249722.3695391614177268479005283792359675 0.1245563241935434726257165735565108 0.0844904389029238025351940959525193 1.0882744713425574434963990136707798 GT 1 -73.1493722418255602184644660285522583 0.6237949914182736188781819027046351 0.0155965304442920596349135914014729 1.0157194359329387486754803401597578 GT 1 -17295010141973946506926293388217.5327851213141065429949598609342194 0.3213415385550986192072569170461362 0.0353983469536276504097274865103505 1.0360400576369649825176883716128041 GT 1 -499648401415923965955.9119790604870343418316800063638281 0.0579889588002863397724757830627641 0.0950968071533402956353165239548109 1.0999273102340373361430526069484318 GT 1 -113231.7610676232107765521302032362218088 1.6896904654985068752562512221507635 0.0590148200637893758094855786062572 1.0608278887915429643491175884876248 GT 1 -3328896894720162118223510735598263.4459531880383014652323491394418105 0.9308820216189846239046236293419501 0.0219477186615224885326657160707880 1.0221921529748094258553692365092215 GT 1 -189957126308325050633143440845545952782.7431840071965868490010113754054309 0.8117339134263650177056949137457916 0.0830426841128960555419890536838156 1.0866943553694536051408308116769475 GT 1 -56391495559786596672120.2389353244379214787608076935139156 2.0960623315704692518058469346188263 0.0161863112344919278146050270560060 1.0163187405425534257963917513242220 GT 1 -1653212541583941059199804.1666963680296685383173990614042853 0.8368021254796598784816088032492090 0.0694331300117245490491534272335054 1.0719613409056361464646735794719436 GT 1 -9319824753359320296.9103668925848108457476492373162276 0.9957437269371255098629563620493155 0.0800854267645032459231161336747397 1.0834744684291679370969325661276792 GT 1 -3547913972598818736.9953046955225188886429420941599597 0.3793601681424722103570313617539001 0.0263744791261863573807426765273164 1.0267285247581504640024085283944911 GT 1 -409450142199.4773954531503451841718340176778160 0.1194948736986056363614011047752845 0.0961270797276818449379110499597704 1.1010665033915427419457379792849163 GT 1 -369.2711217399928919933548921739505234 0.3616180305760309408944657083306846 0.0249642617849408815998858498580767 1.0252811540765047471711309927379493 GT 1 -11593652415609060100.3496855739304367750979709624945389 0.9963098777065547950119353926822981 0.0012198110161648557323917714374431 1.0012205555911778922242372414993078 GT 1 -6733212902281976836839.8791347113285213663365300296012180 0.6939538075773523511154095157739010 0.0423089604793181952375584633212568 1.0432300587469688730426182827022246 GT 1 -4716041584504.4472449109244455248844710265411146 5.4435314736130371610924506956499462 0.0435039507056988214744289827742041 1.0444786204874623099917612851832659 LT 1 -50796637911.2238187249052009134267259012929922 0.1726564541573512433083104824823169 0.0872876254391854542819175390731153 1.0913344813603386602743281884571775 GT 1 -69407217449677009574540.6764989062371598742080029566779932 0.3255155783047394442765632071778970 0.0708895278972755595490757154575749 1.0735276321652349818562542218312054 GT 1 -5414242743273462346501.7798805965136866767860287981049139 1.3259796685309039115432814093238703 0.0909446590898077176711670827972414 1.0953493055685160789008865915541151 GT 1 -25148916375105091555.2423377298359600135129055365655790 2.5065520075099789493801260207841010 0.0814400134836130955261180929134925 1.0886583209801313737956733838995162 GT 3 -12182976916388688512336012722.7564419536277937234859955345541589 0.5099880516645018761670773572956110 0.0939000292678371436545252937843173 1.0986056360550134262908142567460512 GT 1 -2003.5612576851396236138693596851983961 0.2803987888118480444279761699694081 0.0030489261091037561304038495295095 1.0030535835535249591795329736275936 GT 1 -2.0781933354181764888555770947742774 0.1067858362722014256436632740080363 0.0187499254457724309498630420128371 1.0189279339066911070357075196470631 GT 1 -639793782345349062691261697541.8018592611910771380435302608861834 0.2339614221809601346920827580151819 0.0817458804455622170364202256026976 1.0852811079821185842285197962817595 GT 1 -368584141010286481169891.3250768770704091158377660862609695 1.0270419663141307419468184784202691 0.0524063531823993739298936591126245 1.0538295112180817071448399850362910 GT 1 -545687152.4289703976959090101907626559082910 0.7088750851101941574745204132984224 0.0140497630368183110617965197974669 1.0141493952645129223110225246015128 GT 1 -231325605565857386637284.8583836995506901269088099943388504 0.2407987043828981740853878367125945 0.0380649152636980633233393207099363 1.0388083100773669972656467797414582 GT 1 -522067932805319484381739568.6748397630892802625844872857395147 1.1542220275357817552184119303118376 0.0609335783141687979367929096105417 1.0628690656559623043917456460662545 GT 1 -86427065345331078159811753609735.1360518074200860549348116346935191 0.2450469671398335830214160401673512 0.0316544540725950585863542928176482 1.0321662864705417142276391938691654 GT 1 -142061980770436401755994448813.8817391107250457241638783427669576 1.8042780404588005849530486053198099 0.0477787887329743100479298707802942 1.0489579064069975533167789466908593 GT 1 -1258883625452246005.7384923643819189610959140075118585 0.8497779385835006044887472067232626 0.0681127237057487631689357645795240 1.0705434197935009302177565417941150 GT 1 -16438622.6116599164826364907141743462392202 0.5225498569858779710648357496236064 0.0100853332749884254979462432901620 1.0101365347957845579793705944233615 GT 1 -1338512415795139525.0126161133425393704856879279995209 0.1074337079987533641151375255020606 0.0106243102285746576939723713283421 1.0106811511681517823945135754301279 GT 1 -19.4249628146595615499631440419712205 2.7566727916923759189984272585255326 0.0214796711755221433001368181191029 1.0217137168641358613308132409692227 GT 1 -13598630482085901304425693807918953977.6432088167913275169120355686618363 1.0245093589676911874524330164742720 0.0211073615939544251533222065917270 1.0213333070147168285999333960331896 GT 1 -150537764447328233464190759383.9127029507730027416168581886889901 0.0574277546941610128158599397916741 0.0944461853485020689742019568307869 1.0992085725560344724751648768147951 GT 1 -464330.3034738137368211825541702400461862 0.6970228322847932490347685003582294 0.0044831482834524979349162085994462 1.0044932277290994384271790994070945 GT 1 -216335890751894509374518615.8418117680674761556516714354002430 0.1044484334855970830463303788918907 0.0351733278157641228360242506285024 1.0358068080925883392243300321430825 GT 1 -13004068319.7698150651461618703460542468875304 0.1305340242504440756107239421670472 0.0363781368274972232041678727929173 1.0370563194447424869518603652496709 GT 1 -25724.4012906294218460625040703655775520 0.1187469843337907641400204445537379 0.0761230346041309843074122049641682 1.0791763705397532696012381122680853 GT 1 -113285157314382826735903787652298409.4746355016917048612518120628366549 0.2879998703002091572649768278902505 0.0891587170514849515328800017500450 1.0933866197893166317249057751411534 GT 1 -14426197275824002670015956808862963662023.2408691299081983663577622045706882 0.4456756502662917160704012767711557 0.0096318940339886614476408040836352 1.0096785807548995181001931101006908 GT 1 -150417559040318358265964330.6456791861447045516222325273260855 0.0594894923089724184452039223750373 0.0604181865223451178911719339059005 1.0623203819853241101979144268807262 GT 1 -13437241066592018525036.7727164263030963190863947615543113 2.7691618542109939504235607961832983 0.0275424593855469263883409720998565 1.0279288644792149417624140982631836 GT 1 -1691550671253.3234862879641854615139410815374760 0.1127689927513026947334655481743234 0.0343363205658384675665990541390613 1.0349396633263145946612101645642606 GT 1 -220139341417396340749140.2882502147212702838125156226308816 1.7923719107897887219663859301657154 0.0753046510769225577179181203892622 1.0782909482337551457311464017946335 GT 1 -1648479291935816187.7332692669200959407871095323537798 0.1114866690665892282187490526950660 0.0884838107099398348745274179620574 1.0926459238691333701831850767770189 GT 1 -6.5584838180781390295276103248525198 0.0413563048533195440646706915968499 0.0415414812389432708472537718500282 1.0424289946775187533882821002884548 GT 1 -2458486631704916889.5097636540896323449170383592278722 1.4651365415638971840052071605830084 0.0258576944962186918045581358330441 1.0261978817984552083966539734802157 GT 1 -60342750169823437311990745761237455.9955383572939126869051942634550823 0.8978986636260482977566250052932663 0.0414130193012921998091917690974110 1.0422949739274848560864476651443439 GT 1 -4.1025059259762584103126011479427298 1.0495977401013840444094092934596931 0.0712032019472870512743554255860378 1.0738652960067307884487607676508051 GT 1 -1204.6076173690004877415790902018886235 1.7934478253545480398834241366820896 0.0793965428102400299478056855459458 1.0827258922402424813606740596331903 GT 1 -50472979892220.9891488845662893223089036047755497 0.0048560648533422460567716859867684 0.0997057426950113098953659566484577 1.1050336165340690280213434452199871 GT 1 -82610518217320438542516286106003251075.3469882999887876360710008363747120 0.4987286929905881035956002341691113 0.0530109514660388779361786327591307 1.0544677502410037004007919774871439 GT 1 -826533223639239303270.5959989166070140438942237119050689 1.6857477723211529399868957276416560 0.0920688727712835173143681407227670 1.0965867543273771239047425292189628 GT 1 -29079239.3142768150642760598138623288703140 0.7913780646503820323429108592852357 0.0475673102386556936085503180220376 1.0487358413955290813940674109346148 GT 1 -54634792721780.2608979787213293043085483082304001 0.0025530746531676146766350383667423 0.0334274422974980094975956399908700 1.0339989105157594258902729292333331 GT 1 -6092371536.3692272327500165928345991325882285 0.6988063762248798804092504325202448 0.0556082208330996271562528888185505 1.0572141786298222691647278686889308 GT 1 -15426401060514073221109283865415.6638709140916133608118445572364189 0.1188221245713176195663527551607428 0.0712761575774218821843421306510053 1.0739438476293428278970566206213986 GT 1 -1082812820652504361200968270302906819.3515633476554553413005035488656655 2.4309556882421714158686772833710863 0.0373283024132507182051150140888931 1.0380428416261689493785234755665882 GT 1 -7338439072306843018642110591129560.1864250374502219329961378829335689 0.7583518822018013634955333310500616 0.0264214320565839020372859407237997 1.0267767507563150065259525515690936 GT 1 -26740112553093506081573744017249200622.2944911283129696900732913680528290 0.1402473352911708664059360021778595 0.0776599281719638125415849228909847 1.0808412819687554039055082779593372 GT 1 -6234108234530754054392300843242065926.9178931770900880778530998859251519 0.2016450618198091147450128842321127 0.0652605856679236936308695888639535 1.0674874897869769239821596579624377 GT 1 -13838180150.3208126058860125021210830884756628 1.2273129432322653656615864210287215 0.0975800139289428459733062076128986 1.1026752507984735660086283818953792 GT 1 -1235988648627751.1933658531737212329983171556142507 0.7250456741308258270532668256731552 0.0695844723883298230781990143082545 1.0721239887384518615663025580220057 GT 1 -64.8041841944944420133143166017404555 1.3318376377191134023995349825605699 0.0534860278049474907042323199421446 1.0549695464818086067108695816629211 GT 1 -17938362629670972871404565469050356489.0012073602687292777746243235259392 1.2908618993594183852663421368548819 0.0013042752348188704870893926237279 1.0013051265420694383686580631009752 GT 1 -24059272434.4087223771622384126191888836600375 0.1864508294197818229178583729323373 0.0444856107932491354415753401808085 1.0455054560674755526742271686350014 GT 1 -2724974059248423167004161491.2264777859119163389879962971674662 1.9315002497838671232630544414622781 0.0327297896264928969533059040650153 1.0332773909457220372645630603419160 GT 1 -10333505742386130567844728409737858.3550136885452758805605751913090103 0.8419085991702923665676391276762279 0.0597317004303780967322568317512753 1.0615900193700087757027580196724862 GT 1 -3609781345507888815846304.5840977719182092592976482947330145 0.8255466755340249678488583867854928 0.0889240533079836970868966325516491 1.0931290189049502110033450847815590 GT 1 -79670293176020052483807094566034615203.1172224336941672938288474474271809 0.7740763870406184948530276570762983 0.0399941640794553649981079279101657 1.0408159154548320237455440908409120 GT 1 -481755064844.3307269796019994142388650145337768 0.1658250310106386206646465587725483 0.0250327472844380549038868356790036 1.0253513955067423976004297771900974 GT 1 -347601491.1350472885155659143516352143630141 0.3962902716844398342551626023009915 0.0064637895080733823679259210602216 1.0064847702544290671169411495103104 GT 1 -89074869.9630605807869662088395782087323241 0.2804130601545139288443229633848639 0.0415750659451044144164768269801032 1.0424640356249641948064142116705054 GT 1 -2070990939041742164.9528925489910256052298674689365474 2.1394643273977214315281567730120126 0.0755889081095969316523579520437923 1.0785984016378853028644606958891356 GT 1 -110200920830058069440830695947810718.5816489326933639698714588471107116 1.4929290927059619126815000714006960 0.0338432154048461241597024919354111 1.0344291550457746805742008237331843 GT 1 -33484143977936459163570415555514217159.5573300252663642773868500082141399 2.1692697138237254200510925516063965 0.0852528910434535159395044393107216 1.0891076355616643250261047499118134 GT 1 -78499918335017298245077470204.6298616733563612657783785721444920 1.7981882598788043647212179934139975 0.0637663751972318296842679164976885 1.0658902345009734678208860884167369 GT 1 -2094299238487907995618276876291.4388968961053754886471481088125258 0.8699415010523293539654138980513932 0.0447901022232728212566918800492702 1.0458241744034233844280943654571495 GT 1 -1014442071703351279202920851.9199384535663978699725871245789492 0.9675026522654325090608905950926408 0.0679918792132365304030798827344563 1.0704137510439876190395443338519699 GT 1 -499704148566010229213204265123.1754286440007558425149647135461217 0.2066050986632810145264039666280564 0.0109283309635808932353602696337095 1.0109884838207449869425033618468959 GT 1 -3164586056569565903078671387576.2638087439180764340862123633378822 0.4219936416248349077597585410394221 0.0803479738229853457422935185595212 1.0837599129032615744320704524613147 GT 1 -4.8948997959832453428905684567471471 1.4501740292536892934176561701242817 0.0374045495032490781243303839184426 1.0381220483898787259454365460121487 GT 1 -1335841168156243918490813020762406956.2792000027753174217596067725521594 1.2497846589894874586021261201343288 0.0385477189338765359786415283123968 1.0393103448613144243312109761172121 GT 1 -90080952023029070124251.7635867432332258929853127530456422 1.0161885119997625418061053987566795 0.0282440556787783436295795042566773 1.0286505921383657251232275809503388 GT 1 -17635065194036121478.9518023817101024033655543674996713 0.4522306513900922807523532568513303 0.0688483051723944221415386048238313 1.0713330774617202215029174442166936 GT 1 -2248.0166777113239587789531463353052612 0.3362931265260762503950955605711087 0.0891635626861687144519654270020901 1.0933919397585185128461563901831952 GT 1 -580285616983928586572665293919981048592644.6759824516787927696559681806381985 0.7981826274565471215116116284115834 0.0506480425070325395713401084007283 1.0519756771651316453590646135646142 GT 1 -68393142335671947579280100782854064907776.4372150407080788617406768462774590 0.6991029087806307758814747910732914 0.0480093774803050743978773192928579 1.0492000945337243106533008060288903 GT 1 -411318348080.8122436251393949039226048603586940 3.1286134015413408301594245428063632 0.0002638379504191849586089434020533 1.0002638727617743980403394344760104 GT 1 -119678280.1775150696018599848510385381056350 0.3300658499059395534885260878118912 0.0364129774062436844616283468083440 1.0370924759600092834727771379041088 GT 1 -1.8510143374411388796734245580673744 0.5773152448698369152539249319073171 0.0945600595521888678818621177952366 1.0993343313594717971381490807368541 GT 1 -2759471773169027143591447658293761784.5399719844779325096240096639301261 0.4875678964654492200792393471381492 0.0312327525524959592457411096188563 1.0317308946562880013444461775249727 GT 1 -112639321126305285026554505415856292975.6475542650074418313639816571837017 0.3180450771602633079813015116325553 0.0288539672570626754560467006459397 1.0292784278248993339115881631993807 GT 1 -301.3382244463146412977089243291499520 0.2492408757826952878689458616080888 0.0707775007577906879965663625769891 1.0734070648165972393472489100410381 GT 1 -457117240.0247126341666223972282545932793893 1.2177349013221270995492868444118317 0.0387242057504783722133334574395935 1.0394939244525871201455542138524623 GT 1 -386554774796630567685976565720794195343.0634901496476196140604842343669221 0.0897076856616933445706938939401263 0.0878572240832949475496445446189592 1.0919587486206290076487398993314852 GT 1 -1.2279952471408810417102797962161438 0.1446853148245641625986021524294814 0.0166182238939734882730439170959873 1.0167578556931670519999113703132980 GT 1 -620149695134691724804627530113991.9541827050739481732490409703637319 0.1879837012598404132398021842901066 0.0693775103961430026015578625876169 1.0719015730853319382760544490278441 GT 1 -2962736130131108483706196811915963216.2527808393551794181116931195051772 0.1491508418900825203103961516405879 0.0284121880687350617328576308015882 1.0288236262604403945832294228876773 GT 1 -1295.4732295969399764372570033845536756 0.0735623694211927025356933652820298 0.0198608101240215327733174158572212 1.0200606869172016254523340082458219 GT 1 -47185691631216739885.6542698786130807064354467025088931 2.9479469074248240387043971573222919 0.0014114434660663613854416026867510 1.0014124404906683154822163317107096 GT 1 -7581891501540057701371328382317.7217963875240891807445401797472120 0.2171547746851436083807271134774937 0.0653255727313317507708807944172033 1.0675570164610477532081193504606350 GT 1 -304053964344167036148267931384256.0322546258960486730273386855760584 0.0186436375173765463013559965789598 0.0236383379142728385363794640793714 1.0239222057920427888230573683021282 GT 1 -150484583764535.2986363386644425471495840495706537 2.0093995352823446219353361188422234 0.0827267733293721433364246943416645 1.0863498939952502774087095425234229 GT 1 -61786530506050476627309.5735163164897009153242760271882402 0.3496016095827232310168097016236105 0.0709407018108142215739127024567266 1.0735827120770597882994129285779294 GT 1 -51981051042100873010817434969.6236882463972594759626734964863713 0.2830968511436822294409008222232875 0.0879177799984641772061942689634343 1.0920251394609332116568344848427344 GT 1 -1309019559168.4299378835453945820263302657412746 0.0719658249220569163949312178740567 0.0647342384041081124652783991723012 1.0669245530801795836012904589196544 GT 1 -15179.8155607182919378939193297676024080 0.5413692659633757308605991813889024 0.0331568258861772921728388366734737 1.0337189744330694293337693067411592 GT 1 -12669396272269890607954802812.0253285945092114490009238367491615 0.6644443967507321637270089771183513 0.0433532747940003992202738288556565 1.0443211038462390025360726078422603 GT 1 -22166161272979438669687522734.7684540544574183099429092900338452 1.1099335559511707976131977579003660 0.0211490790830808093548084367312311 1.0213759249448681354130256324405394 GT 1 -2966587289254442899991981966193071951.8959252261211282358148646602218193 0.0805212754536862333149573048676461 0.0632213611751271109130082984376502 1.0653082692377760848086615508962160 GT 1 -3145210710095.7326547011106720495323089497448258 0.6025169738134747937852392108670576 0.0567810367774944263819859673704297 1.0584568247633456226375460613656278 GT 1 -4014489178276866501446350557.0793632642401256134678740377624827 0.8117918893520231045340111641691957 0.0373822033169123210792917820210490 1.0380988341445264310383021283379793 GT 1 -211088784489119531231264574433.0093471472097267836576786809317094 1.1794562577507115842975709500776290 0.0086460685915412170726699441427946 1.0086836626935625261749312279477573 GT 1 -146716507368.0877536069728220181987448067878819 0.0611156961724944179246123359640731 0.0270377348555581319958890148175941 1.0274099795168853758173661823508557 GT 1 -15141155646736823.2825114690674334649582864521867245 0.2848469864301112589459929138453574 0.0227734146067326048525345300853555 1.0230367342857834690169250943530334 GT 1 -955284.8695728318589165366901615069554970 0.3405505098526918408267420807683712 0.0428259579797182752620791799200504 1.0437700419739294812123813399369175 GT 1 -152582497232359419.8092594008877645291106625510432997 0.7726604046862377181019037133766345 0.0567015082468644825343864367222853 1.0583725122323724256539265438212593 GT 1 -3117041541515163025306733648721359757.3787115308754019000226265532188664 1.2635313969805958689380632437156052 0.0824789219827850960289058000704408 1.0860797260015287294744290391137207 GT 1 -65149331031295276276533334.1970412476331616373364633983537994 2.0478245686058628551931701380904609 0.0487323794702332717629337942935568 1.0499598464248261272061956411658568 GT 1 -5075064060194804266664779586355479600.0308439794145683648434876188591939 0.2084123741569353946721461136307267 0.0101168652475603336684023577264785 1.0101683885260503893588075488744113 GT 1 -76438288399258461549.6311880818253656468976594894804703 0.0461093947256081078097717744861525 0.0584920839911780284999503669880333 1.0602725230511075658897056023221833 GT 1 -1442358520648657184711658827.9240265991328018163487147594505363 1.0191954257289708161097043215212997 0.0813248633743708317275161404306700 1.0848227157199810322591048720866928 GT 1 -1412614681564754770357069271651964450.4372864689877709221856882559692492 0.3021927155382291353939835529447769 0.0267732931670992359442300367764824 1.0271382261631320278061405451580725 GT 1 -492.8341372355498973604540075459307611 0.2052264435551865610595708161064161 0.0775594946798107715784464856878094 1.0807323980250535213926234479508413 GT 1 -16558888.8513049527816109921401449325168810 3.2634178002897686046301602005805642 0.0747397210094191358803173244857760 1.0776801983578771244859694429285362 LT 1 -23447863817943892905.1430024536028275601863897425530989 1.2594486655272296958919805796633724 0.0749463233190163643213788173088411 1.0779035143090134795207998383929472 GT 1 -3854511499762342520382.8957460366515108059257425033164467 0.9810054946894989858873107486062471 0.0112711622037255356718092185459995 1.0113351631166536564762462893855932 GT 1 -476483.2821077284183560209266593443763199 1.3085086319297076865246463677277592 0.0749478504247116433635063615949294 1.0779051651396563617384029470882261 GT 1 -1455463475624061.4759026513650387066557480562587642 0.5517817531197626694050037565057354 0.0440248741934767007647247778798099 1.0450233853000699896665182288011049 GT 1 -501627888110081609903060720062324598409.3911127308735715507187429020808565 0.1254583774579620835264149569952376 0.0555140585592942955914885742305742 1.0571144768091527520783721074086343 GT 1 -82069795104889392681721727.3869963486298950482816829093867407 0.9204797635458727718843940229593736 0.0461247789873062870174914866182364 1.0472224116725173782529658942182855 GT 1 -29447395545066328269954916719175247750963.6072390246604995064256054374904520 0.3235921609904939446877270485693869 0.0941803081663425273843023445433874 1.0989150083815369692648305897787094 GT 1 -23448064.1604606185738610972046573149760485 0.2111503067959028712214636721701956 0.0420893287767447694219139520610259 1.0430007504285392288809488554302825 GT 1 -298200892277992206644267273.1561833818641983366106686504270678 0.2717588635229499899451886563464579 0.0037680409215862503539178594611770 1.0037751578713767093980252866561376 GT 1 -83953.3975167169232488097047368587342337 1.0219116519278207902595625696416043 0.0288255065150530424453760089987881 1.0292491219079537486293485753183917 GT 1 -3804155450862907612828178263927942.3262207445801285038963124561159133 0.8581596462668476363338145067671813 0.0785635844305284979874511858786075 1.0818215052627358797697418054886503 GT 1 -121.6508130868403019676406397498420814 0.5098204968039400752590993191284333 0.0071457718591637619520615597251279 1.0071714251684103555323221162081925 GT 1 -30833351973.5456644372996162607748999722399830 0.1450081687802849285606640994554205 0.0597267975082156076570672382792087 1.0615848049972792978221811513388854 GT 1 -46495869171778892837850604221333.7033702595884713627124462687752885 2.2830309145390213299892656011631280 0.0906193195440824001322944110152554 1.0949914820923266736662697921483907 GT 1 -506001.2829683217955554418429976419906118 1.2034765991643071022378956659976244 0.0823211192257193527209626933264519 1.0859077526351402793336292992295947 GT 1 -103708895022252603269201086158919099427375.7177992761152694087676663888127514 1.1690987285134560797735045183546531 0.0081201952694221103686923097829837 1.0081533436243967083238574271666165 GT 1 -699251019.2533001020566005900932856775412816 0.7572768344760973591839928585055677 0.0281375287824177035013312348197088 1.0285409750493160958343147652451837 GT 1 -230520464.5910163686002839637609736357760229 1.3936876270980547595731926914156442 0.0872666805734280319900357762086120 1.0913115336869815955749217765242619 GT 1 -4.2611858409537446942531162988495786 0.5289878384266516367120833936314986 0.0013100096494158637518749831400688 1.0013108684621739151972282786077283 GT 1 -5580505168965500258982.9402575833548385917910611196851867 3.4806054563023463333377071697113721 0.0887750382697964073849914198562165 1.0929654728760471629233784633872844 LT 1 -934704001.4780920912676230239927438978162233 2.8366580870416575622137705723031938 0.0179707243827469792752766248596400 1.0181341588345185509167937116194466 GT 1 -24556860017484723397024558524442378121.0620538482325384812106528609721425 0.1819848842112930133946809776592399 0.0539509545455601363093204309856746 1.0554608661849090671970843226750043 GT 1 -40377023518383.4247513977857319210234252297699593 0.6756193507133877077451096032700018 0.0669979038970863129978346531038057 1.0693478315103997538847612207456253 GT 1 -20641486931518901947461032572821961803548.3662588602566343208300824066047329 0.5815267187573141357059027735165309 0.0833708323101279252653364675262392 1.0870522858010687919820265301715829 GT 1 -50612192728798168784610993.8387320292015251192219525902463240 0.2722980792797492458123804830709204 0.0489951778247582939560729130862918 1.0502361458131757699563994679816343 GT 1 -109120387.0494523327966846165071573991384751 1.0399781596831949455971992917940704 0.0875106106733678832869513832779968 1.0915788217282954516781116085889903 GT 1 -228015606849413974171395941620.6587905463690326608143981712288500 0.9102819408091703260565907463679520 0.0344171060410043698792231664271512 1.0350233248083086662958016286071091 GT 1 -373864312994504665306807568496108154579987.5246666888803773228358016008577652 0.6944046157758811589125325897524435 0.0922132876750649971153503577318164 1.0967458262943315292731066536629660 GT 1 -9513574646133593344055910212.2988199834273827837380020040131608 0.4574465149957277857097472975139786 0.0363792411748622666739827035552039 1.0370574654834948874191841018909005 GT 1 -1147799730132491731197765649667.1285090326176889188450530863457239 0.7002441884102586575935219818599256 0.0431972849412662102576486050753603 1.0441580581447981791274730086929830 GT 1 -549209724808553783.3644820848467830755112978665368789 1.4224689594852166620258009434940573 0.0936613581656740307271204208639701 1.0983422659172466747827039144761727 GT 1 -3163141111892765121727.6211464955592316070338508645103444 0.0973840063831946691636207565086779 0.0917882558949580480968745975055167 1.0962777292137828965195607899458944 GT 1 -1367139290246017696439910117624308673160407.3159392791145997651749552916131816 1.3241331777341307558141419790967990 0.0669370794419809534992059204684057 1.0692826414397603747513573465368950 GT 1 -50.9553096120824471331477772752829021 0.0452537940849841832045826016212017 0.0388588067316686788646736754546213 1.0396339575279128330697137636471165 GT 1 -162818406344478408119.1693347522957918092294039737251386 0.4829953282104972850743501404292087 0.0567891442056407215108219716669635 1.0584654202892057580837013079351789 GT 1 -104495133093967413269028.4709587400078364325009291884881966 2.1841435716480068661203037700310681 0.0141450547241526571341642798428048 1.0142460495265737666483966625569340 GT 1 -356.8904466307239676715955217966525213 0.2691310595739136666390246278550180 0.0762844988211799977486944181152160 1.0793511539082516351602159294155645 GT 1 -4281514.4272827022425846129958127771964879 1.2181192520697926032571033808646706 0.0953974051692179704961337751921592 1.1002595534583363222302896022659610 GT 1 -35812442717506039092224817261506724844.8630051712251217647545138580672220 0.5374365045021483778274138540281103 0.0972246824821046669703289468435200 1.1022815743350783025151639355786701 GT 1 -200203258894112356160862568204042307987139.4828186852857503583642328138800070 0.3596830292529067541866814933229180 0.0211420499863246981343444353602072 1.0213687440030432151906802337582011 GT 1 -18015772427620980923.6260056376016336292545178769846933 2.9054085132827617882675423957481113 0.0883094410210641031064446271971752 1.0924546458480609646423745893111415 LT 1 -29068464249266203257914164718667331430890.4562243721243688552609279499022092 1.8552710311709629289326225330046067 0.0707992942777704882684789827600647 1.0734305185917358427290338137285104 GT 1 -53417319681270741563959.0530859889900359163374369093995586 0.9039562753371067341463798601320904 0.0636577692072185852940682481662625 1.0657742381424702984318947474680023 GT 1 -26784100937064214.3000504960194007482844998682087207 0.6808749286604928098862392802766964 0.0686781903930504696234582596804964 1.0711504012739387814835817631118135 GT 1 -11009987272151832004083653843978876671.9320366267267207788423131515201958 0.2934097957836608855661804048081035 0.0208504923845731510665530844155322 1.0210709334888182421723941988785393 GT 1 -6.7095280322020116944746324091373860 0.4215258580035466146249450073191975 0.0557416433606823014784549494291977 1.0573554674003310258449251696849335 GT 1 -78772088739064706595562665414050911289.2703967674582877534461190409614805 1.2652224883493955786742043561036921 0.0438246981116177717485154618474633 1.0448140125648595073740714102472407 GT 1 -4560355099.0536359698081771046409120588890281 0.1447818641277029727690408694873747 0.0290556804683000328808005983190529 1.0294861557627127798409009881298861 GT 1 -10209872136835347479690016387536631191352.5676572935911397464840403775415730 0.5967449546364520211449262452701819 0.0364307111928018035290869959352093 1.0371108800577502995792288011281220 GT 1 -37178575814880394413778820503867322738720.5464221130796623565290664906898198 0.5721866692352446832771898742334569 0.0038847468953752075936327316236224 1.0038923121236162723291929619845929 GT 1 -15280899349672753207505878913835545761.7615297345097786464467251684845040 0.1341350971633591519909108455208212 0.0704119436072355727563819314971397 1.0730137410815240979046537291059893 GT 1 -4042256805791221658.5991562316683170754095237621905590 0.2939777105702196748350491904992563 0.0991183483015106210087868645657834 1.1043813821671889199884426197962734 GT 1 -15737717100473285855278521257.0576523626249559239210654420308450 1.5504049874041390665722288362483088 0.0324276697799410433014152233108891 1.0329650969552099337611960444689026 GT 1 -478270419443113665825912429.1337286976408377204292334603660623 0.2726472013777428642366463293057934 0.0193929819848017099610585013935607 1.0195834929323660558668526002669527 GT 1 -4981717271117580209561815.8796817734751336575477552184806959 0.4898433969618512949053269468461641 0.0791637333175432823686989643912260 1.0824730362918027435904442049835302 GT 1 -257962953737500159311350340586.8315074275889782569839389125194266 1.4020073283112330841902293318418995 0.0505383446446659680240977768991120 1.0518601335838698048571720812059875 GT 1 -20132083128535782061953854.0021473782575134649577946015178835 0.7629338352148904610375690614904533 0.0494834253169574095489299934056703 1.0507496793487286399173544354259058 GT 1 -147785363996588683289353807763318.3336084549184444482316949518675313 0.3707729125250484316342046265181759 0.0237234816588156114954969895551236 1.0240094147234774086041078773073725 GT 1 -28565378222057260808284469.4543873595905696122603802878557564 1.8038425826889811545555696299888253 0.0845734087232825391133042686836264 1.0883651023788259224655013905629544 GT 1 -577.1404797345019032980438128549559770 0.8838132545042601122754461080955101 0.0584434710335179435069734609669045 1.0602208912996817435380820714989371 GT 1 -1375.8685872223979549428886193965143973 1.3359710110751239275000613809942146 0.0520356877512375983576674423158333 1.0534384227429302654725723986599510 GT 1 -4787637786019.7900568355776423606469677150718731 3.1796202149905199831658391275871457 0.0543788696297700379200065486550731 1.0559132865877652980172306970707605 LT 1 -19633937732295099.4119225219596484627872204389947013 0.3677322115635745318792712809233874 0.0431180408003002472673266335429490 1.0440752397556694011226300865910423 GT 1 -311276601370665.5893775601889466192970125616048640 1.0436188599831208925898123406325132 0.0364976298112025821918972680340000 1.0371803311527475053478182306739990 GT 1 -182179772063956831778085932184694223389.1366847911346302483731866179249173 0.0709193151143020827652740158142665 0.0096811123954886929306203833814756 1.0097282790279430922621016438776845 GT 1 -47176385752648061.4881832831658173855272730771517996 2.3312019289601062000839916856176579 0.0930318064572393930622322805397354 1.1024154531584621571831637108638664 GT 2 -134185514398792331204707611042.7775577650327868713689381632635207 0.8030232991774731535195041481508671 0.0323545427516817845211047224329823 1.0328895219695234613808183380041209 GT 1 -24566145164868251621546.9614867858119158414441842793870361 2.8034904018269598191143703443487964 0.0312894966744210692808974230496543 1.0317894699064230727221861476080487 GT 1 -102360881.1990595512032298026194569634751382 0.1901649513744586707296624759425428 0.0568627761324337946431430940923101 1.0585434885181019502401852643892446 GT 1 -59169316538.4525234404484988995209711310653517 0.0466813265694472516046229267223199 0.0317519278919915896229603677261002 1.0322669516989831115527228213841528 GT 1 -111439459626008516518712034567.2580834674786468087517428865849526 0.3449983327788339844145660088715240 0.0209416071869404885473261582431306 1.0211639928646007165663752410182530 GT 1 -6365902381518650698785.5424514585432166149096751624333812 0.8636460680139331599262511331750144 0.0363745014598912198935552897370616 1.0370525468438006160315347711294525 GT 1 -3539260846926243687239660713.9512593627493198596646414362149514 0.8101567587188779514181515337330532 0.0108775620811883977520712426037424 1.0109371553062932038431575740220116 GT 1 -100300662.3901463090694870977708964331509213 0.7460813669161907227402019388575426 0.0889174446357895275493159211497690 1.0931217652305999929355082132976091 GT 1 -214363737709887720234836.8193332446126531539174241731416485 0.1349894432347557865589686056917484 0.0154237622990073752781875863055505 1.0155439459112881074810373400002849 GT 1 -1930772115043567622689825139469838469.3279010319285731277399765208954232 1.4217093914139464389190828060876990 0.0620180047590436445060466238452128 1.0640245249992013777582697467240009 GT 1 -6573358742718545690104261068579480543.6457011453507262826304140151221650 0.4812222610467899604750709295174480 0.0919524977791984607521730181320724 1.0964585865280901453871835514836301 GT 1 -672234805591322963581227101594563175.9113854619659009365690480879259328 1.8512549117437771922695139346807969 0.0093370200418597967180726216513655 1.0093808832615065321172635816661933 GT 1 -59913.8790784690978166323299047544826699 0.2047906896162644248659572581515868 0.0534501702093089936577111650242298 1.0549316633469610941053278444784859 GT 1 -104601064007704758354180848876325306928.6541358331288872838382809759152590 0.2405188033252774351157203170438983 0.0218186603024515961059590134698945 1.0220602072216331957446912681067299 GT 1 -109723803373143815176593199.1081774222650071242709525564333684 1.3737773117970440717779267510009741 0.0726750799027800574863057915295784 1.0754512677128091186469551070825090 GT 1 -6.8187060258235685080829914580565983 0.1642283767345433937386797279232041 0.0224233570181246961671288805753649 1.0226785830537121242725803779518958 GT 1 -6.1524516073313688792429003545381199 0.3733166862261719680893771834129736 0.0571177906080163880190180343481805 1.0588139146575569044909543208329856 GT 1 -426545156.6800770374389861372495314747765935 0.7160286541536604631197101472693940 0.0487886988315485108573923902408638 1.0500190527168794638564311053900421 GT 1 -11644061124286798553094851424366368781101252.2186931400740965730936766147618241 2.6718862977287265021900020535567950 0.0639584451955193032494057075984741 1.0660954073313920650425686229692038 GT 1 -998223962.5865009590361353274605424222746964 1.8973576387651941476932826106912680 0.0919006095551528328049387662056348 1.0964014455289019273477835002434441 GT 1 -1191853306077327367118891995431926.4775485624057146984797973855138888 0.2521942880288531610874752394032142 0.0657164657853416020847017353450782 1.0679753169983154117407607602359290 GT 1 -26878094.4755913301289652115283348513898773 0.6592374462015090872894008199589105 0.0011207424490397141699224731863080 1.0011213709504943107953377381575972 GT 1 -197.6391172366292747789222111946403185 2.3060937966914115447554782648940624 0.0437329715617001236916016707508743 1.0447180864827670691272558332064884 GT 1 -6107721097439022049523100253796367845481577.5864603758306243855195737792542029 1.7577886930571337274050489005281094 0.0698547234831614610061271119320647 1.0724144937261228621115214793946754 GT 1 -13574.6509349456478632188180685293402974 1.2655670344733917662135001504596922 0.0182836722329363963588389861080178 1.0184528842868371617770416652857383 GT 1 -13406584779829311984924648472242328679874.2620788590602790808197872507567068 0.5568985509938124681178310183480030 0.0640192587154079036746962661417800 1.0661603782668740205811280124931971 GT 1 -15141734719628563928552465958.7050103656492331332010263662739742 0.8633081494579847300286230068745221 0.0506466952075138748587073956328159 1.0519742579880266709860963015844778 GT 1 -2714.3675109589378464783018347007624307 0.5390279845980916800738140250054993 0.0860048099736082167487936429674255 1.0899299700950161814200539003303887 GT 1 -3320676002099072826.8683617351114726397562624477074663 2.1449791811030434194497790234092384 0.0376784679491399678613037175711613 1.0384066512587019652710277068660126 GT 1 -4486991.0945415680779951736917881787938225 0.4925208811918470468755491636619564 0.0685814680200073883265739040841209 1.0710465517239283847237665499841890 GT 1 -77715667280653302340196.1404176002133524157414389263643168 0.0264201213351711630052238832311727 0.0143055459814373532698440538551766 1.0144088567660947594200545123486073 GT 1 -922581351453166839591313483500949146381.2694530176653069829089973073493601 1.0378519918764666092263706164526753 0.0673747565857816983799682078667197 1.0697518271914648835466833047623912 GT 1 -190075746053020213926122.5380188182799222030599262883299432 0.2626038654044391012523313448557789 0.0783768721293062594371644558548591 1.0816188940095883415680988067904136 GT 1 -337574.6340286885541069086198065322862493 0.0070217903540598523412227129184675 0.0460187764501580162070847163950542 1.0471112895411227863129500485767173 GT 1 -1895469797716509596873790258.2498456847426292603684068788739234 0.2432831518578667228333005186109647 0.0348270367525006399773294741767899 1.0354479571781920522420178306507479 GT 1 -95460898997.6381792822612668002248084896773422 3.0974582052474913209693009223109924 0.0921465412078957920466111141665483 1.0966723024009290072332123783718196 LT 1 -470665122642960289500232027.1077298926964088047282291366235795 1.3488070570307282114890918455211049 0.0285905417385505267630355321791216 1.0290072123859100502266999102613755 GT 1 -15867669806965794053878383880263283034887.0775094547729074061741049320953178 0.7302839810636572250241425213943372 0.0916974118200825334459181530675049 1.0961777090010747726154158889417891 GT 1 -11363391607870.4862799515393553084458480284254739 0.5180356033229229588583867582384872 0.0590610965704322251060675086061773 1.0608770687845737269120244360266333 GT 1 -7642406911113092509407949966624974645371122.2252651442534207451217014128892930 0.9965639683131782618160875363284746 0.0474192718889115344782593867487185 1.0485804216502891925994709163986370 GT 1 -26260496470185602376266.7212906714698326560337131971724967 0.3098013325313622521013655305689277 0.0765009323457227451245602859558655 1.0795854889218281970594217691121286 GT 1 -238823345662324432350605.0308317836221059508490840557029575 0.6211273045435340022370754945698252 0.0809642686604538536749647043106602 1.0844302767081313235474420242738939 GT 1 -4157.4419974375429895027202711965667019 3.6337087295967488327093061418747253 0.0376700700743171138276208479066332 1.0383979246139158147082133898740008 LT 1 -18869938842054731703070221169880602.0566435705242801287705693626535120 0.8453220987543062579657233623340285 0.0848696539877890221558005790823047 1.0886887691941629545549782813046064 GT 1 -2912554604.5380546986874379536006284704901230 4.0223607197101929851721670139538887 0.0598234468187660565907530478415263 1.0616875988213035533177412675201080 LT 1 -1436381428464236194436945243.7888944518953070215776832865730419 0.4459331295576989373777574189723830 0.0413740410314048904910118961953025 1.0422543125391891525641969377254179 GT 1 -14216355027771144574.4222940235938657612258496630990729 0.1275557435508081176135148319679205 0.0901049999530126889054175010889793 1.0944260706923024159105883532240314 GT 1 -4000330572686479.1565239583092526364530022615349961 0.3078621518322762701184305041670698 0.0082357526110780248395312704769525 1.0082698537832260238892918417978239 GT 1 -7188662542347629674892467031853802025281617.3175368387406016371565577949039206 1.0053260002541952826212782988488239 0.0972564537569686907944508615905963 1.1023167678470431933128834405247658 GT 1 -26.3770241213032731502105843525196971 0.0136130092992041288115090681577293 0.0674926498001459285543793833442598 1.0698782452433769973280262654525938 GT 1 -15839550807565620501597771053207.7122467932371942097281672321756061 0.2653709702782134792842001946886334 0.0195889717893697767535076621555097 1.0197833787065921745017919986892980 GT 1 -13550675856540.9371680763462569141601562811279099 1.2441203603715770933743691233162115 0.0791834280994338734810202619711328 1.0824944244508289530748382578811040 GT 1 -20302954728079227871377541907056140755459202.4440659060440881911488351571393147 1.3193353815210763928980276799295551 0.0127702165606025696213869336638138 1.0128524566756965400904283534054746 GT 1 -13620688915971981579324.3004741728642346590285823310865732 0.4813201657606374093289733203681712 0.0823901025322530658787654914428561 1.0859829269699741432321282480906830 GT 1 -45.4018970304180450469697641727769559 2.0167837617136366628665559859595140 0.0166935109006152594757136454272748 1.0168344179099764192039047119009458 GT 1 -35560762304122219027255769962.8742051741688379304420934566231331 0.7187810539965560006419622840826371 0.0476444506982104786765049952724260 1.0488168377582900140242102361116378 GT 1 -628701263233460.8756458774502730556182856953098097 0.6202854767540692458654055967983285 0.0205349583884732422287938091006604 1.0207487322686198377016765631571629 GT 1 -10022854.1540164872439512343588349302342476 0.1647809461874926562111857732437880 0.0289950109049950941498557303397827 1.0294236726041100651238394415717867 GT 1 -8111708071626034.6751850956299086610715751988244221 2.9751409431826697007703159097072174 0.0550433364009382575668394273231326 1.0582189088486196158351897568417465 LT 2 -161782178635867472363752370891955381.7934995685799257019854618897640657 1.4664489244590439094943436957277189 0.0880248051662981353643272003065807 1.0921424879249523036706001835966933 GT 1 -14969912374509456621166775859.3655981144543761036315858414973226 0.2454524270013189375264604189621812 0.0702204820139225701945631223030508 1.0728077983764581999008906263765373 GT 1 -1882091118848675671308588406529.7422590617862735791128530546110113 0.8727894563526167707366581828001682 0.0396666756598842933725511619721557 1.0404748419304017057924585590839671 GT 1 -5385.1213602184457627043775619244863564 0.3864227486193286017673202125757736 0.0141121774056725941723766810309321 1.0142127010401293374386211331734274 GT 1 -32724699146784380657625183.8701591700918082641514779426403458 0.7500932592563550820867174925445476 0.0485024372598201702728056277565345 1.0497181537414049530845465400112824 GT 1 -287110971054.0711743738844524304942430185677676 0.4390698785048247149430630252948591 0.0821319031204762341198588870897843 1.0857015840017935025041580881269047 GT 1 -450024567093307808762166950.5106313443925811673781511223100531 1.0274154840433873250158774352716674 0.0395234439668504805736162704653303 1.0403257051576655552533482519486297 GT 1 -2337814.9829653400881601559600611393451797 0.4940177300681878695865895617046282 0.0710913117701151673353530820224549 1.0737448353867526613508054135902393 GT 1 -16160063816841529217049881159582655925408893.1724669530664430823349126089711853 1.5167241049728204830832867871624306 0.0720983258382096059029074773471408 1.0748295063765543555355296439126364 GT 1 -964933566507683015366995966719248690609091.6829336565532625558639921521012913 0.3291338236815020044914770608141926 0.0324871866862643237308858100945843 1.0330266104307703524011005445536597 GT 1 -71134612680108474667.0471497140488379563768325826273901 0.6937178925195701555869649531035552 0.0504550356190348656978669929307542 1.0517723939995853486018581096728148 GT 1 -308763273398459221064810819.6615972330767210650894349806129487 0.3917490255764354423582286346764016 0.0208506408814933731027062396516936 1.0210710851479166000249827533903489 GT 1 -136111056521085718345508043.3830026903745897403190442218015507 1.0682689408720669435282355575629603 0.0359220326577283380950579968562715 1.0365831086563612775612541490546567 GT 1 -39775702843.9347468850924549089659793844745382 0.8724703700861605101195427245847761 0.0944209244221004300906167382405220 1.0991806773899320255274137243692915 GT 1 -4884.3474605541547196823697950052260014 1.7807684658119411277004243750713402 0.0078660092667758483504772156090304 1.0078971095149180736799756724973053 GT 1 -114958149090476936503250.9368539323061651833542882343666793 1.0077076369932390937823749727455366 0.0343172642082019653619894341595312 1.0349199295721968579924345766417169 GT 1 -142340274473588733834975806343.2198229979848090762865312215251435 0.1889805120939968932446164849226245 0.0429912400736885389405381346140926 1.0439427340430599155804161708657353 GT 1 -156493052971641744613390146336040907.6134110917660945205794162189092632 0.5322471206263848859879867432242585 0.0275325743013812771951665802283507 1.0279186994761048494197970516227974 GT 1 -2621572358523497621372.5567017610022607862458566660394387 4.9442415403639449317068588310451490 0.0056357568597667010049402965041777 1.0056516976579795525889724474838747 GT 1 -684642480077.6097550982751616857681967093152516 0.1230423350378671424402630313962371 0.0945418686343676712450994178097812 1.0993142408661359772889285288299092 GT 1 -2562280196839706815111708.9361967952030062447978611744192269 0.8433958702668465460485762354741837 0.0926606590813162638078574002404970 1.0972387633159897217105771024100317 GT 1 -34911762201.0808671968577945407048242372313233 1.3156343262841216325590647314868077 0.0987765320796521636302144489286526 1.1040020300170436161073860832707305 GT 1 -7285175.6752378389822250019716237234309123 0.9757127871045941778310742663661359 0.0386536828925899803520244727717057 1.0394205633302912286327616195660495 GT 1 -47.3054987840711505764598334002990957 0.8564008203720692427565756834544647 0.0871126084221381232169366388809240 1.0911427449010886827859314797338516 GT 1 -1724406160421406.4543403126737691386872816344667857 1.2301607901566692528555353298684437 0.0039403206873308950223379830347635 1.0039481042039861122808898280156376 GT 1 -3450064385622.5332481235009173584217343735757826 0.4019100687875296356385702439962316 0.0860513672243541408716086084276754 1.0899809095715747381314770326719932 GT 1 -4170816577227613016203068208699917810778788.8435635266029275756973442209073336 0.4129559242749905423811401917965136 0.0155016844058559259845272589691813 1.0156230918296169267043795838296223 GT 1 -4136855748448485628983624289075810933570.4777608592618847971756595363130080 0.2332994471209161452516372778713474 0.0449179906266406820145089917097247 1.0459580684989595115449416561504158 GT 1 -266666243657417015.1799425244092806058780683760287647 3.6359760290383011716839057390349140 0.0869409489411810949241891051638278 1.0909547224296137079352143359473804 LT 1 -27831979359189477834851273.3799076352706266153200603687505793 0.3896072470768186201503379074503020 0.0600207468424748760100655200019828 1.0618974750706738078554363868744117 GT 1 -803148.1646042034237329156002837334962468 1.1246631217668197213620601344612371 0.0634766031846409985552825952860297 1.0655807741582185102950641292030845 GT 1 -1488908945688173288509642973.3273169212123398245808748606414141 0.6042769111287233271962683636403055 0.0252776078914655829255890717469826 1.0256025745689741130655226853111362 GT 1 -817453.7514090436257883010970347040149595 0.3891158827139972380431172046454170 0.0980216280053338862564738018155454 1.1031647370399506240486441438056446 GT 1 -16761459073.0741840307412660938377403717220482 0.0380342054340352415203524341422454 0.0833058855660868421437373331241853 1.0869814344190986513878158169548058 GT 1 -1498063474705142016996016.0240155576233528719735294633040778 0.6546666847495955499393636061541940 0.0337881828735253309798173538752004 1.0343721964186404569935592092558945 GT 1 -18538614321850506438181313383686083036.4324745879320649750859486409987444 0.0045048385814867934372970836947533 0.0505295230452442141577198832147839 1.0518508424678033389426385135186862 GT 1 -235410531193753891665409145448754.9192105693649813171253171765244990 2.8785981590356725673667794228222276 0.0315960329837895842025676640394974 1.0321059574621358716466894154066800 GT 1 -970687394957385939.1193971911096755317751183895215343 1.8469037832961935793158649695426646 0.0282343864462144928139587073439231 1.0286406419193678945415475737027281 GT 1 -79832752507413724111295.0110874404646535671497836715927091 0.3281537402344333130487079066071615 0.0002504333790306685556163624278720 1.0002504647427057849678234123881681 GT 1 -180264853617267768762101736193650817877.3012266640874420207798873388088375 0.6586033597603511693874390361733560 0.0095229179339014884302125125023250 1.0095685508536679328305546511917355 GT 1 -110905798707398661987.5632425466416949911565991078453165 4.3172591402875048514962900334252438 0.0249246608160740597819337681100545 1.0252405400116638005689104712488340 LT 1 -54826154646976301001720224868398625.7962568586750839980055372742050072 0.6996028168608823146438408827892447 0.0515511883577603815934472130834515 1.0529274587573780067680406162456854 GT 1 -760710530335322628773415675668577984694.1560314140205898776987891091788424 3.0603230177896880034926896605022898 0.0943331950721051603783998468987095 1.0990838055615313706652327146668732 LT 1 -141464221325312.0410769455073889262028268340007822 0.6240309563304677628175105105640740 0.0832633740432134958919520938482914 1.0869350606762084174723104770697959 GT 1 -2563093916675930975983061280675742878495.2386275313109318122292230608100257 0.0447138773898949096391775890492712 0.0889671986360560791431842426928070 1.0931763764824015878325534002703127 GT 1 -68423271185.4338895843677108738007182740355145 1.0919273031566324297249215859260651 0.0630217279220443349630960488816527 1.0650951858301296343386120304480158 GT 1 -4214161.8707890103109085724649259761759052 0.1011771432489302948666271601220470 0.0972858128053640947114169004926938 1.1023492904011348815784248329332204 GT 1 -650.1981637204431616103667364807303514 0.1017792597485420312827334475631410 0.0775917965658333572312059393703607 1.0807674164911993951003764420231468 GT 1 -8532052820434485629581752018801737288439.9506376919281048566204811304353866 0.1471454272629917534749081789741343 0.0953718565030423868151305166668854 1.1002313108846987591461035789046094 GT 1 -126123300080597235691149.2675501541358098284631461613058762 4.4436720405307887211476440135697591 0.0781226097156025170109441989628039 1.0813430466064419919444684765579323 LT 1 -20543039723350079058231.3348452420606920406556774093230097 0.6228232003920612860018991256835596 0.0736866359020935793753485850024511 1.0765426954291586023521844776860697 GT 1 -73135.5586529339560917762409555062212084 0.3180950630871403734317345420722359 0.0452712731869228119204744204455311 1.0463280345459796471143128902772512 GT 1 -207464751586795545.1368783804855524004214217611526944 0.6834773589291825080651727822632296 0.0730599549868222439674082171752579 1.0758663918690769764805603200553261 GT 1 -1066378420967504195278321.2102281284692095553581367109655050 0.0876582547361457672011793009970465 0.0374383019602289045656147985948498 1.0381571130151317271291430494809507 GT 1 -6014790371331333.5984512044064713305335620800241173 0.3548884528246955657650142947055887 0.0639987785110477038419237336144340 1.0661384974958321102267775102837868 GT 1 -3278504274926731098.0909470325393313613537318285739093 0.4526678977406025195665137164915985 0.0079106831069062023399113660074276 1.0079421385597500737157141650240822 GT 1 -11745732553268766340603990369730543629647652.0194644826396209300142459484000558 1.4041191723445311569354271977221784 0.0552995123651876280512909716618744 1.0568873460276406301797620867162098 GT 1 -332807095960348998420505118704644119361276.9767089095666011017190180496674315 0.8560265085057253898133715729568366 0.0133373594555180422023758772893752 1.0134271008697073278926998791318115 GT 1 -9439336196346635204995370357763283998.3960237447993726978469477210139227 0.3329229170069005201068042008601172 0.0618923780308494279276430613219282 1.0638906009827476224644869321522291 GT 1 -1174820417619187232637587854239781927.7730333800338181444924880356339927 1.6341415869471606524126554236551822 0.0162446118220584333100589315393138 1.0163780020833722475040993753750590 GT 1 -262227440274066122392396874196115206.5048338234757466755099793761962422 2.0372147301271773248377686380201197 0.0771328816115428928137794242000514 1.0802700219199670313239315027258909 GT 1 -32526604580042444797292572.4755140415512082117352738683219562 3.5516854033779886173458483568167477 0.0998119656154709774514315458931996 1.1051516103861310023236497848081255 LT 1 -2248291702969682159386.8879901428708769655487771335229067 0.6107834236984494492178771295201907 0.0771407639996541295880469845733474 1.0802785631515450946734194812009885 GT 1 -55859680017490854624840666388407772411.5548645192428296314866168657541600 0.0289215347491806144588441326708819 0.0396312829475064362547032635431042 1.0404379879971844521105288425678325 GT 1 -13561035225783262.8468277617712503925792268133447037 1.2225210834668992537541977698254340 0.0451735873210245024079173325026939 1.0462257218512967295391292817081843 GT 1 -2757062408713205433725.0126058746198477525556879979526816 0.0529259790845030239028228796119893 0.0566338007028380992195732201344451 1.0583007373755294135978374985327272 GT 1 -56363501425605403045589364303613418304.0887304973295317072942953338547406 0.1401717556946104164511976809647617 0.0206111586515519993216302240206239 1.0208265331334827638899072018631633 GT 1 -20198383204500818868462690094177235851123231.7973780758394696868465898399408129 3.0644853173228397149601717763482837 0.0128488456092375346171393299773471 1.0129321059948020484612544173555967 GT 1 -13915479.7913099795034721820601952215883208 0.0845390357391964300873961403591475 0.0173234978889237868409172867608486 1.0174753054585343869363223880158112 GT 1 -176089871798553234172688358968811.5155273847262540791026821300463674 0.7122773742707564814099399527772327 0.0331042565759933889852391004454912 1.0336646037941790579424256117978281 GT 1 -379939.8837869976659626301355368394354196 0.3125043692516944176317121505835228 0.0947855905390273968651025795894143 1.0995834468110390537184873979789803 GT 1 -20294626.0462048958113461083417055172551416 1.0913475996615591731575428040432151 0.0589264621915819725064844623415186 1.0607339938758963338160886797367005 GT 1 -505915442.5605729222355587291544498897841364 0.2022603641594577611339917870176583 0.0541498496450735496435993047219257 1.0556711259077174733710382274993366 GT 1 -234.9927057445315683635727962469765509 0.7733649114890037730353715062075978 0.0496712148691726376552672358639155 1.0509472646513484781166648503461153 GT 1 -48928334824778028452533558154309993.7518601803464587197389795499075456 0.3290085492279214093637049509661193 0.0463855995889994241560547276551749 1.0474958816829323679986580085398035 GT 1 -740088135333727180771616233.4566492734504346212887736663812802 0.9924225755940640007200462472726774 0.0567179982647077693189183007328857 1.0583899936151182161166156551024061 GT 1 -54320616660369114494959436805713033831278.9737285410286488632370382432741830 0.7929462773969399667067689628046561 0.0948384803899076265058222023712957 1.0996418764996423656516360387437820 GT 1 -666897814.7737232058976600181648211086329092 0.4779147709225523225912899001192723 0.0210883831812200134965199529747946 1.0213139195681073342138541985741539 GT 1 -482736936.5767485382664250969529299171187347 0.2769937553391724249064392166176055 0.0031076306723540435246145638092012 1.0031124693837709763921315539306576 GT 1 -150492932057423912134172158574364327444075.2951130400834616666818571555115189 1.3731572441181996341533916951269239 0.0482190710765058769762350145076971 1.0494203873486787704399277989017723 GT 1 -9612.2238174152625992827047199546091179 0.5578771814209027727182518393131828 0.0336205048688780753016443705167005 1.0341986698131915978442773501686679 GT 1 -11888113904588206061962461582381771085.6206179230026281189509540139113920 0.2579805511990716114948938231615011 0.0069770784659418470944908291352012 1.0070015320875062416988805599423571 GT 1 -14833034228601453111640515039446470429783.1087016602234914478587318233382894 1.3060408098636763424141816993456354 0.0286791575493680834161083910756757 1.0290984405001228516610982984477977 GT 1 -2286321019272798789561552230.5539996362305240639086560387797256 0.3967160352897785604954690752650187 0.0856205225986061586336615522139439 1.0895096105401538444094871054846186 GT 1 -769867265855910445382246570518586.0039991492906257137677862018030493 0.8885113980889537567876879622871304 0.0533895921974593183512199606782910 1.0548676666385288875433284426375907 GT 1 -15722943640418428528794.6188291212956998986662612012222450 0.9448459741214940367666118255782970 0.0733044670090034095562814280377080 1.0761302107410287240246448761908023 GT 1 -58218526.7496002073959992109692559910315061 0.5473940093360937744040902855986373 0.0081912098344462705936005802646111 1.0082249421255296099161595703685434 GT 1 -7334278741768.4688216903758800995785082065135391 3.3477723069929526869342317324261010 0.0742196247167931512248514433631374 1.0771182481866457826273181030419867 LT 1 -568660578174.9016097745092149993836719862654199 2.2115111943873605609573189761850398 0.0920222484512806244090320991058387 1.0965354033806880717527478820691037 GT 1 -563743995563911222.1191051428170731130173157816526015 1.5609221469286049160032943958513091 0.0278530341416003541826936578807316 1.0282482865083836647365840549418337 GT 1 -7047072406082148742861490361019172750200.2596129239141223975698857863280781 0.6027590834344715101008018626091080 0.0224698652570900908594296573068198 1.0227261592163074892881689908788961 GT 1 -139857793889345179.8249705204965541050220675416509403 0.1634316607280861416162081384742140 0.0261841275001866599732290995819376 1.0265330358184025526943630536722942 GT 1 -2651406405199332869.9128172946824896436254552573307859 0.5073001040284942704450411534749328 0.0214171775866408797490113588975885 1.0216498535068437559095876010242888 GT 1 -141794875135230827590976970272137085524.8428881751266054549957290545224400 2.1724294445007702803920977587712838 0.0640030828701601936994587316956479 1.0661430961746701920947011479772759 GT 1 -33858629235136404923638902562277.9489777406792334064297644421924766 0.1862154393142863298132807822310795 0.0570798018238220361371135918863307 1.0587736254055684323274553901483955 GT 1 -584308271049836.4047192309679248874860039102508423 0.1277133745997057227269433813921384 0.0488463404246342794657442653724935 1.0500796526483257106262567587231787 GT 1 -248872214163200264615.9837033296140656203968447300707781 1.2610069329022802084666524601670647 0.0704942050809653743025407879911495 1.0731022373924827333896829662198292 GT 1 -52733.0255789389650256756089509909708030 1.2150323334173293350326631093050867 0.0290622317909134939772728126317583 1.0294929031575776326854970949360863 GT 1 -7866495290801035640258341790264812481616.5704222961769816926799037642548698 1.1168964626214993250916313106838649 0.0159127217905741864409845724439727 1.0160406884959598705126660667845801 GT 1 -11821547.9068828818366447711822322097395708 2.6011228563944650355998873586861189 0.0820285622924787251233367970599399 1.0892517411245892166623599915554167 LT 2 -59010879466560681487.6775659933449071059351423390701026 0.0481815906419556374698471127468504 0.0414144015651334385691148694043201 1.0422964159091366734563505322401243 GT 1 -61.6834956879150501911407217314942678 0.6234235524782427979352316240474819 0.0136572476945697701460111186553004 1.0137513658139532485330506857572039 GT 1 -21540292913352269459739753.1376444693525214202967239589556174 0.3211835543603425446785045903276044 0.0954141399928287090381952324116325 1.1002780532708533269777003080459357 GT 1 -2678049670456297105.6342417717177105649240179323378213 0.8830058209945312198189423428964725 0.0264362219413713257873390392245180 1.0267919421313247230986899370720490 GT 1 -6854731720969047740.1076053026921009777393300030318929 0.6086383546283238157720384607622969 0.0977196249777339461479601489371012 1.1028299701658316162638596153735276 GT 1 -22000680987009063806.5482990261326797490823620621128675 0.6586940849515247224080022243213999 0.0621975207925157188279798626651459 1.0642159286881277536176630609899608 GT 1 -35406576927893467589861943703700714583465.7044078084556410055577355480616296 0.7282725562680080535094667492909277 0.0607355404040961611492976676531469 1.0626581998146135183471123904819692 GT 1 -2500069937151556798933432952120803121314625.9669282977947828855549794130968536 0.4059830249017209072473489212343939 0.0471247337917714591018273365806955 1.0482712693000233757520485254690284 GT 1 -43337.3391568961896982460949234934218469 0.2132376053931292793707035477725178 0.0971743948135238208147388181291387 1.1022258724709935974914587029990687 GT 1 -2686391466458.5622723057464450882124390791692508 0.1028403759317310106867455383328047 0.0501926362078308232204878892189664 1.0514960899047828727151616559625358 GT 1 -8450759826467344157025372772.2222289820958535810142786888283862 2.2646072120115007709495071417148069 0.0419979198541866534911949920204846 1.0429053296714487459333792572944407 GT 1 -1736498471.7832313588872237323416804817864159 1.7981104245248623078288541986767544 0.0733360723526611887826597452254414 1.0761643167461853894823317248773005 GT 1 -54351742655169696611452852.7362576283736287146059074130638501 0.8481349959658519706441050863413750 0.0093494390513225553618230015945265 1.0093934193989794908803558669028540 GT 1 -14482217028796647799024302285684129857.7072088545593316008214203970300229 1.0652951124926605057479145408298673 0.0670675370690475054595942393128650 1.0694224677527656935111493468757939 GT 1 -49149097518003.0262703162849504974907371100938987 0.0977966535604863806939187415204768 0.0376525976242909133543601925817184 1.0383797683757418158030049770051981 GT 1 -163342491104.7957276989809695867167813942045666 2.6831317174469445739490922039755624 0.0721230432084172399740180952027360 1.0776578658469689351095352038579463 LT 2 -2314383.1753155963867552040127479229600711 0.1149908598974874040194522472403736 0.0775120909244051087580665607216892 1.0806810098464703221459143621092543 GT 1 -1894482098138432524673054064031.7937709178244202546524696066742954 1.9791980556405705923710712526291333 0.0584628145816534906876757406605418 1.0602414357346065308289084464073809 GT 1 -218967906890111885509.5194929664958122614749492180569002 1.0893216030714581026851467102669495 0.0918843277571248211588978995265784 1.0963835161565903099953623083935508 GT 1 -105708666852217762014.5016273345827284374360952911081950 1.5406887101390336776847131038452974 0.0982115306640035008164832526204186 1.1033752993532384718312082736464767 GT 1 -24329845.2066347160311463608358253313280339 0.8899894143691821461604431600817926 0.0973617554486617183243311270177662 1.1024334209476221089065593556828482 GT 1 -6173133381019661371608091735816688563387201.9094988706039534427166611309926853 0.0711768800509830588019656463538621 0.0199807644978650754826476582483057 1.0201830794467443800779414815165029 GT 1 -9852.0777232829159795873983827089469149 1.3255831677744092028479564240751319 0.0046494823178466277990846926963070 1.0046603247817086146227847511857597 GT 1 -11419939442230799809794312010252.5164247855531371893306406900116837 0.7286130312219404016511818918418588 0.0395614706927290761793761991997832 1.0403652974604943125089434772162818 GT 1 -14903408833585019578355.0341650063324428009267824090821716 2.3684092435776008130099437310950095 0.0396622158174840266822772464789479 1.0404701978844945382827269359195110 GT 1 -43153727656.8745682343595876071186828709580830 0.3673086121618146481935467255758642 0.0345941774098504496777782709764032 1.0352067245017660631379925636913617 GT 1 -1149668555878251225363516725057171154694218.6972579969354176662898498704191383 1.7061452673052941303508672743366024 0.0608412936250369338056350294931241 1.0627707976817696600545789931837814 GT 1 -96949209016918068211109500014668100.7457932351344786193286296938248546 1.0696301622732392775196130680761097 0.0140085918550419845070280915793058 1.0141076382663943992919035366312886 GT 1 -68561417944696616725170407.6122420697272419456061696648168542 1.6090897272604898904860540772981308 0.0986615300169461995380297701878759 1.1038744315579351784623690926473699 GT 1 -45111364.8461911721911472694848523157030151 1.3591672350616826562553033904216577 0.0811263827947987028318852639453001 1.0846066881670464656965659753258283 GT 1 -25781524941351203.7268870574927426538003987517820801 0.8712695011477552878392929904985495 0.0383665451363005669409917976139307 1.0391219249747466796382013463688625 GT 1 -46555322.5050052650655957972602233280621510 1.5035902070941002331062422561136416 0.0035308091774262873524459977011545 1.0035370571955252291440123367603056 GT 1 -109855457052958672388018580004379248.5492259751726611323543784984626973 1.0648535696394272111407750219783787 0.0665284149389426580867758247126064 1.0688447556055173404880649315976183 GT 1 -20476746822538756884286875745.1581958348672127509285841449374063 0.6973049393869119488366455341248223 0.0630495417016519974063485583762041 1.0651248708220493853242612632281374 GT 1 -1702783173255189517890415190801.2573316272954079709175404207332836 0.2355415796338082150068560959882919 0.0583105518859070366820921880341610 1.0600797316748114204625958413800247 GT 1 -269937.3222046295817209396288184770150040 3.3287125153236312231193604123668490 0.0088375561699733062117549516697335 1.0088768389834729023515851604405436 GT 1 -144822103843174801031978839662.9557056627252191655785211962621369 0.9780456645236401245747133357960796 0.0726423854627424796079776708442217 1.0754160116089418248211446777405393 GT 1 -7592356200.3297148173928715076659635033636444 0.2471183071308850356484389676224572 0.0594647699687997261322631204608884 1.0613061721109309254457976529417048 GT 1 -181800015.6548652823806188949212745821243314 1.4154764895467281151400541759915448 0.0992487345480570120781666827234370 1.1045261244679460063292761796176827 GT 1 -327190587658331076070355795948934.5105259947510350506498133553175494 0.0109002925442276190945016877964186 0.0586376041097242895615973952868246 1.0604270956925862302930789159081022 GT 1 -5944891816215.6683881053633180432320421304455178 0.5593772574535586222790468457115896 0.0830670680532129206234189895840583 1.0867209479535486492753653029485123 GT 1 -30667618547.2182527830860215666612867646062675 1.2327347453275163515830334060317901 0.0765804491024221880434103556266952 1.0796715964047999398894947558129769 GT 1 -4401792498185226410486146580354163.1752508554898393434787741054883775 0.1364242028398509723210148289360174 0.0194827520191797878790215561993209 1.0196750424950299849565199814134956 GT 1 -52822.2948020772957725234070141351070699 0.1288116696767364893640856446853479 0.0351956848639217818450122384911399 1.0358299804486559692604432249922671 GT 1 -285.8010537991081223825901694348472436 1.7746982166055477341339514256009134 0.0663148124755959733521081901362094 1.0686159558952683325850300859074902 GT 1 -1058498813960020768830530400.9807453305006922906017849721975605 2.5064544107152638874086454069001266 0.0189592004217653004906765865057912 1.0191412304974718314382974644691708 GT 1 -2295353769685554.1673183219294483985701187577699028 1.3097976501865306756349343841920480 0.0779719002058342691201373649595336 1.0811795788897778067991763216276731 GT 1 -8279959722045407009344105799248236.9909458695649263507391936658633827 1.9694744946471374468999599487417376 0.0971571848969443419550600699223594 1.1022068103703480753875485508702912 GT 1 -31184330.4962969241307590215493549792566707 0.7260526103195614842314862920189850 0.0724689437146259044280731500465104 1.0752290011954865150312126240927832 GT 1 -1161870484154128701268462085465.3835685983370900325618203856559140 0.2978715044214941083420461214355933 0.0615579762074350943059100738997828 1.0635342002579287700536133771689564 GT 1 -3300114812989761929241553526466516941551700.4690225577127155546275328923567594 0.2120856603551459236460172445548516 0.0771464551130758344228929165959013 1.0802847299977420279167441039150619 GT 1 -16868646670604961805906.8025467473943970229380599685484589 0.0001752075710094904450800708872789 0.0471827706638376475169227526313188 1.0483321782580213993128601838533415 GT 1 -659399022643.0039756716961908507627214315304587 0.6576987910427816247463525372707810 0.0492780216975146701373461175341129 1.0505336058634531120743909906278542 GT 1 -35.0783564101151392755971741101377622 0.4873508612747876021973087206275973 0.0184616262516342985673687688118261 1.0186341689862171240240782774251026 GT 1 -180156875166224501927016172.6066098498741889890981908341312976 0.2675016296776921811482043775683298 0.0425680426290331596969041295400991 1.0435006232503621084026227508996465 GT 1 -30623105644711.2150770984311995291619913515188590 0.9399585826824141703416283186036913 0.0285082828607712680224342727900316 1.0289225360484103366845415722432965 GT 1 -12064673052536018690727667161.8350522610441843882937537917675033 0.0294429536540484428921141385948125 0.0579816270097837685940257605518013 1.0597305003600807947802513728213700 GT 1 -873543299513016989658152392018333.3954228724645737667275479768507831 0.3082349485071159119279277135134597 0.0978871008229056616502206270698266 1.1030156013672413504000824230820061 GT 1 -180173515.2752216804044479011075081693952722 0.0164651457119840239466227514490115 0.0216451435945589477428097527940126 1.0218828358970513466811543215877021 GT 1 -1122115958645713075228231147275174212564.4473926085451778060600127234933685 0.1863705705151366750377545089606858 0.0992156241167826900461843235016096 1.1044893664593689334770964627837538 GT 1 -105027872572517.6582006211928663532439643992427400 0.3232118002216462550959999109536674 0.0168757185052191822427363285172820 1.0170197360079741716047935603515818 GT 1 -397.2296740438229215824684612933441213 1.1809170984616835782660575036192925 0.0888340613768293464032224813243411 1.0930302483389208326233760207497165 GT 1 -266188941940944136742.2852265580484916184765900965848898 0.4948773316604455564002257759804057 0.0206545259804346510709795244024534 1.0208708141046685778195089488351564 GT 1 -1457394576712293086745006444806434886411.1773526090724305544562933690746965 0.1180576265339183136348413070305806 0.0866767187144172215320979266892608 1.0906653742203937929219011051010797 GT 1 -48172711351931535185800438622753597.9176972443060341655576821786123192 1.3728034013200704773690890255329471 0.0346604548090046195531648018094583 1.0352753792299204757262678806600754 GT 1 -59952630550562272431151310726.9975566197090666379115549415016721 1.2686190968518161787133457675259748 0.0297542044380599124189556801072269 1.0302058420978929200687004154413590 GT 1 -100251257861055.4802733836342450545587915200058079 0.3623157538423450197315034823440223 0.0693094031933764474831404490468097 1.0718283911974548211555652775475658 GT 1 -1933918816937912622630060642.2071313354136788748384728692873854 1.2747147205609620133985738404872341 0.0354622932379172934833396756780145 1.0361063527793951415234608592075672 GT 1 -11550280442490958136092799463019250395540602.2110136001062087516348592689079252 0.3231420737525522559478764422451630 0.0017099883666944668520964989397850 1.0017114520656450256710286742101772 GT 1 -38399295785727.5010369296435514381034518554480850 0.8737907389078583899548906325285040 0.0325595915526091110450875640150015 1.0331014493111776844798575242882136 GT 1 -13230.2392567837057467597665795637732430 2.6234979886416539137880214094744965 0.0342591012025604810989838784523383 1.0348597014538105612211850703182993 GT 1 -7212834895692889478860565040573605299247624.2792467280873943131631735385024769 1.3308387543795120450197247814392554 0.0635594039882740647358170563730694 1.0656691910247510342333214173194410 GT 1 -1090672658596113.0834066092442501629429878117233895 0.6100693975751654181021528398825606 0.0039215943871881833489027918691852 1.0039293040010433893378650104489713 GT 1 -113413311049401.2400003210157056170165859595583776 0.6443776559870563816662372282758012 0.0888771637228749660170537812380129 1.0930775540641684854154551538090179 GT 1 -161222633977795585034021608824003747.0630647304696505294917542707712983 0.3697661450290214036927675077118808 0.0989249505689437874923532187476138 1.1041667291367490820970987701506860 GT 1 -6442330160.4709498820361058682402785818304072 0.0254898231655143455137607287817591 0.0581114934269609923303032803614518 1.0598683696133774738935775266813545 GT 1 -256017.2132588546407986565117393214328308 0.5264321460654032065397008214768662 0.0907411340669143012766169822609167 1.0951254443425768040040833145449464 GT 1 -288928438586968064536167561741085.6206977519718210784746465559596800 0.7546831853928535322652445830474386 0.0375843104670325958001987708086130 1.0383088119473127438183059758387781 GT 1 -229003683832293831500.3946401152452649909614231018543303 0.9219210095718989851959710894293525 0.0562347173186993649598588986544706 1.0578777849804269485894072042945089 GT 1 -1075221840351122873307215758916.2747624385466410038475420746809528 0.8645665970291531637007368635575210 0.0807201134890922907925360690234587 1.0841646474870918333896354708822595 GT 1 -9373520768582389450918521716288.2125164561672086229139984486071350 1.7477312534257006904513302494626637 0.0057320386300554548159018689861925 1.0057485298124077274809514626263589 GT 1 -317444894641207258852446296059292.9724727757275793882847544509874365 0.0751030713001760511980368959067182 0.0283971177363837612422770990840292 1.0288081153459463884240732517264333 GT 1 -58739349219287394872858168230.5771767023446482705776482578663044 0.4989450397766648164214272432520495 0.0692919482456912390301978439555497 1.0718096365392850468369319898873672 GT 1 -51649058267000455234285036383799.7207399185403867849794288002242977 0.2707838234057475926196998618352835 0.0579115361366161257181142326988975 1.0596560981321083875345801206760235 GT 1 -115406854083705664069830575023212175.6065066106606578398649422848535134 1.9099832228662606687961065623486798 0.0880708831995214666490658582534227 1.0921930147348723364445352548407292 GT 1 -5757331508387168704030109538711.9669646919864657502089123100797102 1.8197779458536030731418752445464486 0.0602814835511187941629187430690720 1.0621748991486635319746823155551419 GT 1 -5942350880715543660789046751263420008.0365371583056706601938728378695700 0.0387654683341823772647674006532348 0.0823350409708023364126156360078245 1.0859229233565945670358626140041875 GT 1 -1122994.3756534389786986212937955009532256 0.1121734057926744831683752468761409 0.0109255302624307612942307853950390 1.0109856521784358200113411015092257 GT 1 -23267955659417321339634247880492710462023069.2126263371101068748483993525154544 0.4104159728656044132121380317689893 0.0578455981882014318543098532220858 1.0595861093322113187388745818796898 GT 1 -498438692794482.6201133787442207950976750206722983 0.8346180188350249006947652090989425 0.0255765340997329142981888971875173 1.0259092999065189380956125812925473 GT 1 -6857645898496928983307.0303382762612677834875617997841175 0.4464306117654023523917546333261643 0.0075871631144636305385131043076807 1.0076160920551468052105299322843640 GT 1 -43973112850585388749842934298677.3558748389338280013074049019375734 1.2914276254820005157345167354361737 0.0135656513460782393604799996581853 1.0136585055019465775118281939218037 GT 1 -320047505684968649173003548962192.0406786870342681156255397628257286 0.3519741074068992033908620853997836 0.0474987699351655737552751648903205 1.0486638805754645710106686875575498 GT 1 -290742196748927804291742835127010417.9632118009653633194053103828270780 1.2039560587717081974389169401425531 0.0854747445622948512023408193949672 1.0893501948702148916501431963739052 GT 1 -54067715909365758673242581197691.4678836599385012985176507594296540 0.0738991279823547969887121972462279 0.0616100469597204158791246380923014 1.0635896881790015462162320873676847 GT 1 -2.5034833126985812262632262946558372 0.8409592493366272943984974227092862 0.0607692274048186124983695832950368 1.0626940657568302253136904798276311 GT 1 -9757514916060595810676942924951218.6724342226029142014641243802037386 0.2810889040804824128557877352153477 0.0763893079254935363969724030509281 1.0794646250481172122969636077429969 GT 1 -4788231368.6635023717894583070690093259830527 0.7209337383987333448304494109730757 0.0887301631452705692956925615651611 1.0929162270569976378067981414554611 GT 1 -187930783071605297722.6469093891738016505087298838171964 0.5530298167214916500749138352991620 0.0082294148557294943344552782502644 1.0082634634186661456429068168227188 GT 1 -191462941.3834429768573428966627697506348148 1.6807067946860368322345984622507939 0.0550169399800292876154450754519847 1.0565882775538581465493443951618530 GT 1 -1564243190130180551611896006966546666864.7075964814691683050648700703800651 1.4406114420028092698448985093014628 0.0692141723429834175313080125670326 1.0717260736507756581399171487135991 GT 1 -2786062896232568307499654684805.9265839103191022737416498365263213 1.1496756510313844475906455122921275 0.0512181853080243905917812688640562 1.0525764175623504171668046603879391 GT 1 -24684.2818174582165817488848713277520211 1.9490496267485977428525926732518392 0.0442472059542772574805854190911182 1.0452559830034294900711838385186487 GT 1 -59401622763738910688342.9816039557014048803275132473038700 1.1317343847698257961741639287503616 0.0049459000495316716297474831346259 1.0049581714921216316564354901825785 GT 1 -2237087274.4241177587568782840369504488817874 1.0077028373973326950129424230585756 0.0319433692587620680744926093549276 1.0324646905849265950140546913158106 GT 1 -6824874356767515412969193.8794339041368745372218330984242384 0.2597805765529462236840132519025867 0.0985764896283777063009436916110926 1.1037800870026824208878357535069456 GT 1 -424.1662395376341593001954050914825780 1.8898671544136886330922076030296171 0.0372026699005291654930371597539982 1.0379123461353629451882058276373348 GT 1 -600088850058100981457532052324221.5704447530016429901371226075282386 0.0249086308169998834010826908239262 0.0593766536395243291030339019012753 1.0612124890685274906555393071486679 GT 1 -92685309713665481066397903.4381447428205081104129217226820115 2.1476699459833919945629393959036962 0.0784681941106844680454502574589372 1.0817179871240956941257843906004861 GT 1 -184100442845.4509024932163651916250390323571606 4.5607828915185372333291865042100429 0.0077807880756716887641004201708791 1.0078112163472678579497557516428712 GT 1 -9194798839261661126312378641944985942.2802524365176604675178139079845361 0.8826214466823092730317791313414122 0.0371956165592657786308454634618472 1.0379050202785008312784305050453151 GT 1 -17555824809702045776180395229002029725448.1188430904346664790356115297075593 0.3373617708103294053599104350897509 0.0262175159347047140876846672906152 1.0265673225946352156719814062247436 GT 1 -1272063254128711628119237.5406338603482742591757081424574429 0.5488517171079993948413809683946179 0.0085162173117411326291475727926013 1.0085526874966893256125057257661898 GT 1 -264.1103943696423626756174566442804464 0.2656784110392736770152929681675142 0.0616618208592024318553308597233235 1.0636448628189585657284263666944798 GT 1 -22793440.9974323474546323155406532382167250 0.5575583293562143098560410914176568 0.0386063165673896743953315622586432 1.0393712937200510667264626367865380 GT 1 -6862434845684823102299.1291039213921389408847023091251987 0.7012659747937599133341875263518559 0.0588992809889416951201786174055091 1.0607051111063613831771199778450333 GT 1 -4950301047133379106.2290573495678151414456595257830023 1.1431304622729203191468012866106072 0.0137315623392445928483361728200657 1.0138267122837370422456789273416816 GT 1 -67355.4729478293184132142403127476953108 0.7084864130259534800264832554604445 0.0149516347500121620982410899823701 1.0150645372388635465090865057551070 GT 1 -392703183600757.3915635715291016477123566356889111 1.0947560510107433964758848786583271 0.0572318571351532753070779097025484 1.0589348984095441174780718880103465 GT 1 -23705599769071819156241447626679454098.7066341559967263406894161090694539 3.8166295108388292009630374301209314 0.0322862670673991301729076890544683 1.0328189658839581810424556677113787 LT 1 -1839.2269348990808462160915174894855184 0.0252356324167355489509169704436774 0.0854259365412771993029665458998029 1.0892968265041289162526176353757069 GT 1 -354791741806.0556531868173088681655737026789521 0.7969236172637591209825747883318057 0.0027681201732885446312702949779789 1.0027719585028768414041117014512574 GT 1 -14808242955239880.3394667888523695418646490254301674 1.0672364850498839020254334785823295 0.0618773717375716736984293600490943 1.0638746047655709491655292929287790 GT 1 -39230404427487202.1622399275889384229360270650681891 1.0085222460232736533876010768880967 0.0925059089055381061676858170917618 1.0970682240550047004569049641609616 GT 1 -16494514951315286202.1461227965182563190272106018594373 0.2315642441455173580795999776523326 0.0776643381706518153103010445073191 1.0808460632954759192725636711052508 GT 1 -55576248601521498154626322009634.5517905179388422789315451518494580 2.2317402642051233204751877389186219 0.0093419356520697311561365316347195 1.0093858452137596220714432144499035 GT 1 -50563648384466.0503279090501622561696433260014341 0.1571684941225216334105821456509850 0.0185418773847558712571867912280430 1.0187159328949300985481482777124822 GT 1 -226614199425783682890060.3316717423499724973303080406545831 0.1199737332953118798361006156988997 0.0908107884792535617410963205603851 1.0952020529774198244538675991727335 GT 1 -4956.9309347618631190999605321537263027 4.4310426329832887646495731419670433 0.0290583108453213804388273783384351 1.0294888648579012543997035439644395 LT 1 -42176933.9547285214910424010654038907211717 1.2255863623772564672469349736279265 0.0847552451915672535988860946542617 1.0885637578821980240521682693658663 GT 1 -1350769183918338775702.4749944219199276318213330338797809 0.8286960734532512507420151932302765 0.0177700113701911375999796335128523 1.0179297937418775392461556378619919 GT 1 -20211145931688800484238661009986327631.3628712414417090160532357965572336 0.1511165386966458309178824133538808 0.0780634484933299805534548887823170 1.0812788739467696494342127711567806 GT 1 -108850631174524.5242356805419606398539400493871350 0.0398597225153829422767972142765824 0.0840311945652795023216262688437262 1.0877729700901685502385259660954322 GT 1 -147314048492018098547132655.2518195067794747427586377599744939 1.1730484244466211570293568200664904 0.0666958181683027642498464784836201 1.0690241057264881943572935430555055 GT 1 -80868203691662254904397728812.8357361035110570254935636951523773 0.4202550568642690181332735479132815 0.0635681729378751567406693847178503 1.0656785551965901006111928492484836 GT 1 -76.8397515531265018292250598515997228 0.1239291068800881860748609364769693 0.0254290052459222809224062128886975 1.0257579101954954714137449835079239 GT 1 -696067369473932030498.8470679454690251298947942364823288 0.2043375989259527804451747568527213 0.0260415800143820786782975336140652 1.0263866662040082883305664025928707 GT 1 -1282491906740438.3676032179571432539793559099649472 0.1521069576069748637968561978424112 0.0298455882775096055345264020438977 1.0303000328108955187586152897641282 GT 1 -40947473098027317730573558055861286015364.0822205213993264307571067874305551 0.7443740328701803721210658570489899 0.0482047661525752336651439631004254 1.0494053578224526279709855689963268 GT 1 -251865225158191.4019098391771314612665548836527671 0.6431957411399573406270314125988016 0.0253068189555883294519704814313413 1.0256325436166489374150202964010612 GT 1 -4189683.4142831178325166983648852292590582 0.3715865297612742693978796704058768 0.0138839809942573572869934682951300 1.0139812649672171801535661580845883 GT 1 -37999024076.2247607017041046120037490842707582 3.4275950879349896447826462314627195 0.0046889541153202772684807610577153 1.0046999817462084943591413834551560 GT 1 -24565142443631307351.7972265650417986717809767175238487 0.7616159603820167764202531455113397 0.0667335305558049184813466681366869 1.0690645139344298626166262018159728 GT 1 -7343542053052901684464.5971179519034617351087734073925394 0.7092100425063893398152073369506011 0.0611430285061325702586204432511032 1.0630921314035779431070270227890970 GT 1 -185946624960587473133901258553460749.0810297909228702312826946435610212 1.2057467315782464609868759385023212 0.0772118667669484510681646994652715 1.0803556122872735844070542348236708 GT 1 -1158358038633052359.1799295929002472377924019755784836 1.6532858783398627696554083114355352 0.0566578379244483738941389808302141 1.0583262179660686810803622609742200 GT 1 -1988344162470.1671701788490348283922798043845397 0.3112596679944321924585619051568692 0.0093339999244718267822843039835569 1.0093778346840936877803287445687866 GT 1 -245987253170117454436842014285028.1976278488399759119921029000817942 0.3981362485138454219114945810948232 0.0057160263940962452545904242210461 1.0057324253942349628824262093062276 GT 1 -179547128404.7176242934922881237508263128503018 0.2565131925699440652868603607042301 0.0243803831939854878540458660852467 1.0246825054152842922699448042530703 GT 1 -112030467850336763.8486038682237313828627893536791540 1.3010871837384945784987622132870383 0.0386312774031198967684188113502670 1.0393972572355154331740698453810818 GT 1 -7974224569959985915333054230.2666928724233989185637804504968299 0.1595582962017735095992727067498743 0.0694109247607881652691753536305468 1.0719374791212495369217074008201594 GT 1 -41497903252.1773131365423863320067511407208775 2.0723720917379843205140816590321431 0.0689670897466727873578189835467215 1.0714606529707383613316865029229862 GT 1 -4607601452655471778623.0169777175494715271384324019902649 1.6809290365866416262843608545539162 0.0985416397931272796832644119121459 1.1037414268599149029760563824180601 GT 1 -4635906465604225876551985247411502895817.0727874084780367908417420737136498 3.9051049992450799146790982095737053 0.0904857911919019287410447960740245 1.0948446584872811113166309475094287 LT 1 -40285108403160850906204314807789120732250.6842411248674201020582711210416885 0.4045821342183405087536750004466116 0.0874071867732446844457303230900805 1.0914654855727083656001842628917458 GT 1 -179925517402539780803.8214341345341067737573240823311300 0.0424778983795066508263504354989300 0.0768384398629200372088713434533844 1.0799510217283178678400726765799015 GT 1 -4223115577084214674516835974408263388586.3379384925971154707310960707311545 0.1642049990501690569103750055837417 0.0735440040489834753613383477798048 1.0763887293106902984086413253051704 GT 1 -19589537017280152251723.3294546377208405348459561931788875 1.0504373050631444699474113905977706 0.0203516294966075221895758291455341 1.0205615773124369461287266058823818 GT 1 -110879.5783629649225282307236722413539578 0.4681824788826075500508744476442207 0.0256524500066041578080890516197711 1.0259872114787770387348189206155311 GT 1 -3822438111.3716909312796659881406536492955707 4.4350635149594493843788636302738814 0.0111732245335281980611290388170121 1.0112361138968789250598889320270042 GT 1 -28412707935869482635698495761786.0267317710184916106787540234080595 0.2948547186911854803853906542960567 0.0084866745011647145738648320732467 1.0085228913760024805033081962235811 GT 1 -6474545981301352410215384257575.3140455506383857294693717328052937 0.7003388109889527897565717524316146 0.0292397768449003237133758567437280 1.0296757792333332698940200576567454 GT 1 -8338454.3413338207157492077935292264915652 1.2198354462064451254943874552194016 0.0102038725611324110669743567938230 1.0102562889403142542035836741512805 GT 1 -688465296599976490930.2023254743124224595887109708046495 0.2986183678446292461698821379348872 0.0395496918160504398941619013125010 1.0403530334747301308219015556271247 GT 1 -364618323450003354.2259524405379088910840604276505608 0.3622575822901380164503505389213853 0.0821096619956554785301513661637046 1.0856773530088706773328637457338661 GT 1 -210825079294744856814.8845691168627168619887161168667823 1.1600317520968565072662369081670524 0.0394361996832348608517233258617551 1.0402348749120778256841992128491150 GT 1 -3871.9014003522311001250788145506838057 0.4888408746373674538969152621023404 0.0314464586165223551151956311888852 1.0319515148717167171909754819532920 GT 1 -44244983498501818341.9261940848697259816566440352932031 0.1880843909313724355595024043400625 0.0725281605251070074596586406970033 1.0752928467136111090305428158259865 GT 1 -18363235815125904955730015707742084.9129154888383505977072069357198118 3.2488018965695790925247410269998852 0.0489722642044929677730755125458188 1.0502120519876832338391452625652703 LT 1 -342567795367901608155149450069172800.3633112281990918025275191012536889 0.3641648625425867996460951690099438 0.0082072003032457285702803754617852 1.0082410647873398521008830790385168 GT 1 -14624439598882392676620735467952.0439984799007000853409174801545974 0.2145372483108776445047968770669880 0.0233162829878836054036501840087025 1.0235924080999307256045724452791222 GT 1 -2606.0987566525950163612428149188228501 1.8956045631535067577538270978844177 0.0459804503314730177786029505105203 1.0470711154287973435896892126028039 GT 1 -3343580299956995.9906743737829969258734951348146105 1.7797790492486701374168587711044938 0.0016076361453600569940733383729801 1.0016089297789953549241120969917739 GT 1 -1155140531209159.3668741478104302035327538444827821 3.0170670022093579202664759755326603 0.0547937520833226074289705194620188 1.0563521235381658701705087798987601 LT 1 -1004422949801116892680911432.9725649148847741205012528806372530 2.4896458716093125775068655490757074 0.0711193372771577231406856310272033 1.0737750061992081310159309817198525 GT 1 -722260314126244968168231895189776053148.1966392950809091698034871381208346 1.6056670299335379239873427469260960 0.0233180054733927827171290920633784 1.0235941717077375002074166842175754 GT 1 -193878022550715585241.5976247265899611023158060389826082 1.4003132167292933723037516177923655 0.0385001202057644557153929015232330 1.0392608389723062388936203662046601 GT 1 -10743065243765405416413.0138051001701943669401913716008945 0.5547674154294701142333958658993220 0.0488744356085536808020552488374404 1.0501091910920699023009103445342638 GT 1 -64366.3159946048294117693937641150831624 1.7048790006040428467584560079002971 0.0271808342809680235766831971728651 1.0275570663616851842023990131303592 GT 1 -232490902841701316.4597518183764891397605924805669900 0.6898913751214109514400098923859619 0.0105736205557619905570039060988599 1.0106299184818590634418660459424624 GT 1 -351631859022687086.2066824181663177149609381126336102 0.4688948724507512189737320360504674 0.0925957806301787522105667298690762 1.0971672618073635243378852849363943 GT 1 -501806394.9480277307566840392040902642834605 0.7909938026701537297177704156684175 0.0421125786937455832163156512838358 1.0430250222107198420327158362366069 GT 1 -304329967.3806288819584162841199960682098503 0.9078207759401062561724595356457077 0.0219585730462184806960987883051737 1.0222032509959830431907199168578290 GT 1 -12128627552865660463538489571013694091028933.1681913034093570514375131114680922 3.8523995056714180146123760551719020 0.0836092091124310284113531261876663 1.0873123776811723849677556620117185 LT 1 -3292.6288337195119773626333265415420590 0.6436198043074639245530289828176582 0.0184841985751394036688542379104931 1.0186571661340203506595150617970335 GT 1 -2455174942046227445746360750582180341.4149987646722495571260977150108989 0.3912278070217422940157269509292549 0.0029581813860502465971346686297040 1.0029625654526508254648230964295931 GT 1 -2325629219439.0302902003855335241889962401819657 0.3139850593724779541624908976740836 0.0400813689254395833729882544028288 1.0409067574098602581653211853245451 GT 1 -2795478659652065677920242315295667.5230969777029200905084796001934601 0.7734703598192765050263995699572097 0.0970110080389053873435593383493584 1.1020449161587316850971085081471860 GT 1 -7804519696999793140850716179379202712006958.7828388011965166738620840150083199 0.7868025669637062078579350630659586 0.0206105816733643603690717807736163 1.0208259440130095412836020405875257 GT 1 -1173015353584905785279427021.9504246566820150238908697083343400 3.3655256070994685347201749303088799 0.0083716077009444872351079479553125 1.0084068464163138431708505251117464 GT 1 -36.4460884345257012557269146310519647 2.7914173327984816176711757054546657 0.0546575152050125238516432176379584 1.0562079993733785400491069602198994 GT 1 -3882085629650548247045693759.4966462619916405811101667670883184 0.9667831936456774954161633772963002 0.0892588313287222010603321431646912 1.0934965399054761035220902177793876 GT 1 -1071020758839534596699318.2996712147923603088035566084761490 0.4282398141465135727427870935658871 0.0202506659874172382359399179875586 1.0204585216550306500994294771793811 GT 1 -328645976109816.3386665509613077002159718319318926 0.3136381813961185895610992280101041 0.0393445217369663143707686128040009 1.0401394376578713176677741955516396 GT 1 -1604045799882908110372.0988781038378134497400955607794190 0.0937985848075915605324682769174818 0.0432900182319011771095553566465800 1.0442549828120463700404279423130519 GT 1 -1519041842141928137054217672085277172.8137711709120001202542879994561530 0.1743078095580948551186220459675274 0.0002386346317596311441156428011735 1.0002386631095339809081126604267714 GT 1 -128468630255.6410890557735951191237459901005969 0.0199575332300112122009565391489682 0.0781474991105809914344756125404249 1.0813700455666466675061882018563770 GT 1 -1687795911587432962274314738.2830381478556971577674095789619264 1.4049668256550067177322814217493352 0.0757608940403976857126460350385929 1.0787844681327765105844215157817365 GT 1 -636243672706062968076274838939.0001415257450427922571476843440441 1.2259561269686187269510965949938493 0.0759635570241046549992324384078317 1.0790037676681038076836720188962564 GT 1 -167384156215964915.5511604953374908339703507533499786 0.0084853898020438070472933580433367 0.0025505273657580736503937548994517 1.0025537855018357252344721374439423 GT 1 -2626832338852275026779858960551281.0304090369800446395128612000540910 1.3747091080800624062436363747373180 0.0646922670857351085929477788016026 1.0668796777320542876308570544091088 GT 1 -173329878841414686861522976677880.4657895564058346508176945899826261 0.4272725324032509004215717519649778 0.0115922609612623521093388799822395 1.0116599750331616166740688637163931 GT 1 -46193376530.1423871608533577987135667301105998 1.1700284819496287127913005199791180 0.0043928902121467881976337968483657 1.0044025673050248503822593948776601 GT 1 -16098119806520880651885996481442658207372.1597989718358396957155681860034107 0.2866893395927456323175388360475777 0.0980904647490462802712136211979902 1.1032410574625991855537920343130533 GT 1 -7963599637524997589280842201979466752310.8033334745063088857659468290679909 0.9325531968284711174287603189940322 0.0588419522377862989495357857667885 1.0606441962606609685811525811902241 GT 1 -369345996794679141209416650.4438563831283616575309476820308391 3.5275855017894465173305535360625358 0.0578621761189712044392546243574904 1.0596037052555443939467719717824961 LT 1 -11086101656739723836252446.4651831926694963106636172487381746 0.5942909350263492956538219354454323 0.0656341260943899910362123968908072 1.0678871895083249488599256091390344 GT 1 -206910394470.0819880482755806454931013662456730 0.4480386932772982383332268727833795 0.0649740733668760242136466633450813 1.0671810210585082730304999160771716 GT 1 -130141637319028699626456751143885019.6033597748725546725115425411063441 2.6448419621422530060063473982722050 0.0039884979370255892335699254237432 1.0039964732082210089046085148184099 GT 1 -54681120627110.3437217869049512961117278279182494 0.4845892439702437791086884928011071 0.0931557384173970125682224103795094 1.0977845507960307126270592408951592 GT 1 -52162198134873640205285540254.3003012573706564923787203909607605 0.8859561759663538758480216639300799 0.0659554091139806989051185027877392 1.0682311000449137808316795371152576 GT 1 -1119211142511170201128.2706272017194715125591358783849888 0.2334217617076081074429185174155142 0.0846358330115984962710058763935069 1.0884332961776621179073271956041278 GT 1 -9337.6218807577110938503769595855268964 0.0475945374225447012563650658579804 0.0372085301324955186612663544471586 1.0379184328263184303532083500675628 GT 1 -294569154886964.7270984865571555331993951991380135 2.2003403601113337407758121505778893 0.0669430033274532376891405498595334 1.0692889903195055687158719571320820 GT 1 -1234913466234862432888073.8693702321242495146489043486746593 2.1419443088071230376489542857993256 0.0583593879060320569002609294141566 1.0601315930252648516970703728964393 GT 1 -913316022464.0307154384754301474565851316942790 0.4837958546153595157755327152560163 0.0116393237975101907499343571963539 1.0117075909662105950453667953247888 GT 1 -10324676709818.9484087495175237193600310727595102 0.8292133312393677125020410435204128 0.0322667726553877330003680412517659 1.0327988212740441338582907563893272 GT 1 -7575890366483568241393935342725.8824714781018923422208675396574169 0.1052345110269616834677781199279244 0.0959421731248201326354834190824858 1.1008619528535332804506549887668550 GT 1 -4310598002354871535539133554064826364.3212228324050378552580813077675267 3.6815756288359094274944011719646294 0.0826980859080684175996861638604617 1.0863186198101066373095533396710572 LT 1 -605207089805280.4139888516393994065586240360312866 0.3824677853207211338331503204434427 0.0801145557719302975898047359741897 1.0835061338353566425761676592611575 GT 1 -2840608129309248440102.5248441003512802817169967934604355 0.0168978852064368800388005059476047 0.0146476918837308789083024044406478 1.0147560285453776307903178808746286 GT 1 -2948820981967238821810006798246.6863999943647440053008621562714647 0.1067798355344649054531357756710710 0.0531913493362243011095830665285926 1.0546582646457972895065545562126482 GT 1 -42733580400847.5795151499807654455849672651424053 0.5838817193495427947039365264600234 0.0751712849098389003473505544138603 1.0781467314918270409616203415978549 GT 1 -4119107034.0720962538968224230231198061627266 0.3297972890292185289996289422539677 0.0895584972136781724282640651196390 1.0938256292300748383998094978480310 GT 1 -40280458711171556539989521665.1469930022083506058117129456267425 0.4386722975787540389468198128801809 0.0243783911161276535648334088579548 1.0246804635582021361094327645548602 GT 1 -205.3713281826194392682489004183474441 1.7658270126046818005822719691307343 0.0740796544004610034545749315513539 1.0769670679067871545182526646721728 GT 1 -18114822195815723317899140575.0725272074122820142984176310888793 0.2186822653071570377227691190385020 0.0624656675535426139390419396509067 1.0645019005318925252100050654591085 GT 1 -2170577957610130543.6901650402806849411551656672142571 2.7608089469909281451695790744798258 0.0306170968223890831959907355585055 1.0310955922256529623958020383822152 GT 1 -39335060111489359070944251003.3089110432207306861168756991631870 2.5325280950083391956402773402867514 0.0082466482046869131050185506857028 1.0082808399157548997645733922753762 GT 1 -222464654.2265341410863326889276010944838189 1.5106524762550727494854727914222087 0.0759820360758559563369060690907694 1.0790237660530895769170169329738884 GT 1 -5616625431841800331093494043738937.9976210340833733258649018857034320 1.2408993055328963771548092883236898 0.0428930139862997001069883922844399 1.0438401006598035404625601971403080 GT 1 -40136730.0622241044514991331926564944288760 1.2254913827454969551537612704890280 0.0981985453226460354028699323358218 1.1033608999144472029316273878654552 GT 1 -352876062332027161359529687722912.6541490692403945596019745133549857 0.2138227611942429424173437753260149 0.0984573366582459554163716834203194 1.1036479126202204229380236276257774 GT 1 -89784584115632699999567718091767785158780.3372340980836385914800900854426135 2.2146768941326867476621233684847918 0.0128002998252926203848550505036747 1.0128829295438764789619281293200190 GT 1 -1604233135511416315.8555843307656928447720159991669905 0.0337579617821199629051139569262246 0.0691845993165761043264513869763250 1.0716943020490388411666997642949703 GT 1 -6656660302824418277331745446200345495967808.2048075034698823809437602312325728 0.6953315096814223548427982650792169 0.0793770519747893419829650372981039 1.0827047206609123007555431965880053 GT 1 -150294540199636447958119129.8034899585730149290342261717791147 0.7860795311002406738894856398864740 0.0859500153703599062809529247376573 1.0898700212447094256471849847018235 GT 1 -59996631161204341072.8968881543051816151989900071710764 1.6603404043069701985120906937814974 0.0891656394316991950078655364950281 1.0933942198033354972018990987633292 GT 1 -13540440616932884459345339652406751.3023174835257496867643262636757851 0.1754527397830384100708741513150632 0.0966388219483826243307060540648844 1.1016328298401780169039572379802259 GT 1 -1495856.3113019182371081990685157947855430 0.6064354108030458350056236933961479 0.0793424147114704547052630313038021 1.0826670976450857699048178000642613 GT 1 -1477491811963433141548026536987409554535.8051825868813865568822316896568338 1.3050346822735265879709962759582295 0.0762333730763663877183220376968242 1.0792958075056543098855448014854722 GT 1 -584487916330699622972.4283008663981555175671989398651274 0.8666313956557988976623274016652567 0.0609466054281441524465002882499447 1.0628829381617127852712019083598817 GT 1 -12692170821269992206.4477921542006609072341622170747611 0.7268704133580148029785151844426789 0.0683646252983258813793162448595266 1.0708137697073876922171838239175838 GT 1 -4825170551779210979166850300811.2242954320328992251531139838463696 0.9545140217476182891607570863733803 0.0002235150684679271628598480100177 1.0002235400516836627402309325805708 GT 1 -11605153536022509941625992870677778.1524203971781677894254062803418451 0.2926598383836311387305602600518911 0.0366907152963671512160044462724474 1.0373807508308417514740001624232532 GT 1 -2.5839888258437457478966554673849228 0.4498173826442610955740699114749694 0.0814536540283343481385641696874733 1.0849629172747684367961749989136381 GT 1 -61926.7696394945144278561998078919377681 0.8063540703693097282150527510013437 0.0852324445918652482490577039704809 1.0890852837850020491878120855720224 GT 1 -169785851807203860480462510083327404.8283933925676026449905032349669280 0.2267160682455353658891545819367922 0.0431082396635169346173600506198634 1.0440649970224942651225920806923364 GT 1 -175480972.0034836579257422180870269712119992 0.0365226743163610391366361143730937 0.0253348432684508912879088772412281 1.0256612959628147692387277038368999 GT 1 -6244307847641.3914081983089706076155123953531468 2.3470440764869976064746219089051239 0.0549417407695426800176128058144040 1.0565087034093562567522569360441129 GT 1 -1518664680382343244399200430687926.9735533266875953463019472625642099 0.5313408067411752040763647989927484 0.0785515938076836876318497658057319 1.0818084923791271075312990361754876 GT 1 -5.7072562984138149725845421844114511 0.0956158617588661322019681470291730 0.0089320986413316878562434018938901 1.0089722289785454181487485057672595 GT 1 -66422588853353406548568330.0704656623324835962244896342835043 0.9191973292230258851295444230871380 0.0751333562405688053930615938908936 1.0781057207717709551511725844789550 GT 1 -21546.6618878736090886108042510269814337 0.4150670749318682528526409240247078 0.0100907516904868024368238451463127 1.0101420084295327350026561298475577 GT 1 -5071540763207785671.1248007703596536021713776501317998 1.6089175525494004996600877009974984 0.0293768700909490408548829231946301 1.0298170117684327568343914109721291 GT 1 -6449769621332557589632246.1440316207149821737992333471589468 2.5712708403358542873253897131024450 0.0898576965818223823446873881457734 1.0985868317662946375814074048877701 LT 2 -576697345232710115869232185920254788078.9666006272853633555675129476951137 1.0187610213502689160777093477618684 0.0053195494823359631026464314443455 1.0053337486635675161817130994145812 GT 1 -16129434987779797122493727381964333018298.4025864600466225368650429660298174 0.2986154913690910865550079401798031 0.0093483774609266474144772533659752 1.0093923477902115246564780720003602 GT 1 -58777891893395500558400549523309778716548.8511701321313153798831871734417529 0.0334587568623823715354873054904625 0.0383666032892273473330624016482666 1.0391219854478180402614106824992241 GT 1 -10836605482.0858641029771164185992822181022159 1.2754937163121886412069543231190385 0.0799898437950115943826360509699824 1.0833705696467360030476289529962323 GT 1 -21454791.7674721715243357449799156243062931 0.1205574774250269246937156586687247 0.0587233198960603674937282708201861 1.0605181548738050623860907116120760 GT 1 -44280951553.5031992643231872372659492891926782 2.4240340586114453127677922137879931 0.0107184166027340629890554723588924 1.0107762726179414743247604916327837 GT 1 -103.3907425637487293420880318738923260 0.1119103224251636039760511131949376 0.0873949139361834165557632142638364 1.0914520373465557679760963691209086 GT 1 -11973515350556.4262878018390352967327639399036055 0.4094719692024647219410838759303028 0.0953477251777236479296425257182757 1.1002046358319254725697268172771723 GT 1 -2371307820336046658871216756327.7352133919961763442334726631001254 0.1597859755802395683222839190327314 0.0105179260515314353792435262818684 1.0105736303760098255532580734613039 GT 1 -277202.9463514711008145346262157871419230 0.1297777395679809247145139344793417 0.0087927584797023609247595025034825 1.0088316428824533750272805389365096 GT 1 -123079178992882.8292346459152582217079418511935897 0.2334241127135718226022681732477233 0.0953666554845723055342917588222795 1.1002255615571365952807315375530044 GT 1 -517293418511802950.0681120522835462028722182255235892 0.5893397762301320299559533220701850 0.0268942097113521810997636769214352 1.0272624768187495353994953893900079 GT 1 -5157365596275951884.2267832593665107415515160550801234 0.7254432819710848033401033275933609 0.0451334167397901504376782937367087 1.0461836516532851156936498580335280 GT 1 -205321478348191605034646446537295101.2732050535211654565458041180403911 1.0785807589395515713191464794543816 0.0347265869325005082768882930309930 1.0353438881697769748216633307886413 GT 1 -1681412553201144738773016.5868905376541827898310202143509200 0.3128862313759287107721497213602705 0.0462924174463351520620458661686291 1.0473981717592061501346074135563906 GT 1 -27123849754063005341115588056787225133723.7192446005486964993581330825085654 2.5718268008500094822459727104554747 0.0045767039178145655410767994522608 1.0045872090921598674051659154419142 GT 1 -143371240125667479541550447575985740970751.0441610851441980257009271958042021 0.4785563504746681279451664853424315 0.0835589224838779629125037494079393 1.0872575045316679726889645047207497 GT 1 -3642675965.4120488223796997264269406338053381 0.2368128265468048657861393114212290 0.0907204612656618630849973395117335 1.0951027087201667737355501623305472 GT 1 -164490395314707778744464184389473.3683708700385254540501465495286023 0.4730870628002927720218610821542332 0.0020813800043329253758432599404386 1.0020835490860055811323739437487652 GT 1 -48498308310499941798124.6903111534307130309105457437807505 0.0990509628815104333916533672500183 0.0457294378161684932255133320164833 1.0468080395838897149060058628854407 GT 1 -71201523496154101372688909381197651226.1570891745440482053961663564472119 0.2710977125268499991341610925544207 0.0449222474011079915359297058399973 1.0459625254816183038368150148146400 GT 1 -395516063876270209194923004906407029.5354951012184620548539713433861515 0.4479405787508448300581118824635183 0.0992025727691738278891287756178385 1.1044748776944551991672310430399487 GT 1 -14950372185889899.6603919283288109139213576688474959 0.0847285031488279439258217610875393 0.0461437151134009982199789090183031 1.0472422636548710551418689619657408 GT 1 -83511238086297124368816151796017248.0572003682096736683459669698086513 0.8937340731389999216631602922587728 0.0958627943346950361240695821092527 1.1007741539283647243314695874742248 GT 1 -3581095924585222657109454782255068815.0120650270736543527259208404365146 0.3191712165932505050089262556430677 0.0823749962554845547133383343089822 1.0859664644705318387090165348398035 GT 1 -50538461209733700734.1525581853656233534270996906465596 1.2314576985664499051088465326798253 0.0940559293291837608275256529743128 1.0987777069960823574131363461331365 GT 1 -2371253108172529.1477591985268345373961507599162462 0.1875794319409872972179407917040783 0.0938724088084164371253198754725054 1.0985751537248655224885989690577337 GT 1 -3485304485593189935566752922992238425716.4661078867944781053598155064001387 1.0618408378273247781099096176817626 0.0130249637425235851872534668889692 1.0131105324141338950411767949760092 GT 1 -12145357353693830710167071341576.9191194976667809923803183969248617 2.6330928224368828667081296424823850 0.0833982215180413235444552435483185 1.0908738184761215103998106425659522 LT 2 -32099.8604889632478948099092575954181699 2.1146659359006293226566076355706399 0.0944571319990767107711844638616140 1.0992206609781265976798058440803124 GT 1 -63318756935655520095585091.6337946193013420258235125969486077 0.1679212471929545065774734967301053 0.0185387075123614298298818865720416 1.0187127031419712609180805965072628 GT 1 -400483441268326429.7322521606947144195800993035716268 0.0526002400370149684715651426065701 0.0828023291241908118925100832480195 1.0864322673869049998445822331306728 GT 1 -1817201008224764755.8918176668295027227859158225291680 1.7228177802955810107788788449897825 0.0104924306272977618867933692699422 1.0105478642742809684002572772690381 GT 1 -5534295513746.7807107907224113476604236048836187 2.0413118207840964183661804003776215 0.0072414188711639381775107433164594 1.0072677652117739298633573397882528 GT 1 -245810321136.6167194841402599999514427449945938 1.6662011830744285459991022359039354 0.0548811083385957928515358858373655 1.0564445481200606743003571225318561 GT 1 -1013166.0383168914127669659116812591924201 0.9822719862801498449374898848393317 0.0407232172118989700686868265759151 1.0415756296943112602371808776839184 GT 1 -727879454083454294906571225696813857.3479581933086708112153804868087741 0.9888967740182864519602792280297448 0.0181622488380791621916402628835487 1.0183292071278375593793460822608372 GT 1 -23761.4484364556439067062931140745946365 2.7375554774258851518823021418068394 0.0382111862178000968845294983425352 1.0389603807092248869292415843480677 GT 1 -83022771979.4690211007087474879042600338988690 0.2940962708091264837525665808122062 0.0365188300456529855346772834532144 1.0372023346976762636412220278880792 GT 1 -3148.2573492921147542508088855658443437 0.2214547153470833438255466065813863 0.0133100469686897486687063111630916 1.0133994195653940969114146115296160 GT 1 -32379392820729.7934606628840460817886917084046868 2.2843197906353873212382140753201978 0.0311913404841218940158576990339400 1.0316881483894382312153748090087428 GT 1 -197088932164129340177007532.2527714479918738611486250081024585 0.0829689693978117605659139890124362 0.0810674293648115683510103910232120 1.0845425318589467177303331599597581 GT 1 -8603645958186442489250987023789507260320527.8012210858773070678259873386277409 0.5561537126106624901908351569610615 0.0403905807144789732349710612472775 1.0412289322190858694667804373661929 GT 1 -45696179446242597658315939659574.4925884478746937146223766691842019 2.8655203147529527248734676980433494 0.0223604104288458344820059159673647 1.0226141946876044878725619554256165 GT 1 -30305855260970052942653441.7940916163624419985828711930718679 0.1199513212336054547748019785122446 0.0125867490805192944474136521017826 1.0126666332357948811596313165120552 GT 1 -241383156289623409.6585933190226769204203043231476994 1.8287934363621551136789996227764848 0.0347598497540991716356410366962984 1.0353783482453072031311078845165122 GT 1 -1520959323331.7921790776204271776988436349384513 0.4168910698282159322403699285858277 0.0700607519159762017061598311953199 1.0726360196094173309772533055203010 GT 1 -17815537607562084793156270003590739259.5407381592529451370897947720771184 2.7412543978062000276193140284208384 0.0611065938064604345019649165498519 1.0650411855229169968936962163854718 GT 2 -5016710990163018177065.5197640821753532680261133973354229 1.3345716074370081235503218358373483 0.0841228204878224294841848954514905 1.0878730067999927052851464981798891 GT 1 -249127659339238602305.7942508421801742109377525253345254 2.4509636363756477550631005744493982 0.0316433830965341826726860492516428 1.0321548536583380926892055301982457 GT 1 -247300675830851006084398618593699479.7968054916009336728171818645298262 1.2029682488571699018271388714477454 0.0065485208307283987093344221871223 1.0065700564624385624846059376944918 GT 1 -259247998830652279180256863.0885598328185752518786572147219653 0.2929660727921780890758468342753508 0.0642821836622409331798597772014650 1.0664413262298798313630736045260213 GT 1 -24974550147866966592279212021093835143945.2879765602430961145950737229441413 1.9237773321358042758087959205856584 0.0219826752062896741057550722826688 1.0222278945912236063410630446738723 GT 1 -13405949158920977.7035754705705696960226863884772175 1.1606169655385042334803272298403773 0.0286935345859152567910189928287226 1.0291132421416824349156798816430845 GT 1 -175133893297365497.2905069093521945456049868971983555 1.2396860333703636708078798735410445 0.0871493558427095861200152615253026 1.0911829997677312879144431724870379 GT 1 -606774.9267160517667353689903030524950804 0.1675470846174583235735942091638073 0.0774834565366469508915920455297052 1.0806499699346467462709326788040713 GT 1 -199860587616909869156379951.9534744805867514067234377907757141 1.7733288379631741872531425769519475 0.0204455971716845209671405282845276 1.0206575017123287003549805131431755 GT 1 -158289269900463460880784961980014608975.2435909105143849066843964058129941 0.3218318648384241018308022561021530 0.0407224254252435417267938599277295 1.0415748042950700140995840892752404 GT 1 -845267109267552251517144259176740343062933.1696359409495882737124202446944082 0.6915135109804599647101992923700382 0.0635884231059938307904120262785743 1.0657001802487185246256809326065626 GT 1 -1924571059665766343983503.0118353852585113520608549246199622 0.3200124845261561560123242764259986 0.0237518329730429123720478968120649 1.0240384553952207703229757357058085 GT 1 -9695912959887640678171238950.4777156216693052334909400979104572 0.5127403401588429248246185054489868 0.0853269699857096639735605073130968 1.0891886218159627072291049691706371 GT 1 -57115803141674782868069429.8723053873480500253918036270975285 1.4960548996546080359654265204651414 0.0406648516770429688669814431314904 1.0415147882766930488985330476754300 GT 1 -16329684430248459370942703865506070.4099370996492373500358961147208898 1.4999533935660686512122836759708241 0.0178955605493221450300089127048919 1.0180576224634101042802522971046662 GT 1 -2756015.5524304153266813316780417918919723 0.8559823895744320421329761673431005 0.0921931678380809638237860151785819 1.0967236629229690876744213292392731 GT 1 -747355564390039039664551864984271387876.6615816270970516624684966871242141 0.7319863269198571201012291291629508 0.0950410984064160831117654853942629 1.0998657489171691181538733515246555 GT 1 -11.5755507496874289503601776448161101 1.3380962035243146069131634023822342 0.0795364512489645804493359148781556 1.0828778784944552965871965985008132 GT 1 -2333806765504736394803324899600405156.8503353841188126760093107598803362 5.2064790399419534695365124324338178 0.0374676902572620445157949010298184 1.0381876448197258050146291334457194 LT 1 -70365309506.0177728178448957377519014940117519 0.1177721700149186142016775679088403 0.0475210222154742098541506753073998 1.0486872427922665713322825644996356 GT 1 -1068063813206200760103616901430.6335280654547653512621495318488307 0.5657684808406459655663410982492599 0.0532770748501907248545317155847542 1.0547488102856165345978718774307407 GT 1 -82888378684125791736.4021957094624054357956985698435732 0.9576412446284723411653898367074865 0.0182791721203998758135332117193300 1.0184483003738521329285168898469103 GT 1 -1434363540048359.6565811324471303437092403636775297 0.1152337831415239459869805917140635 0.0281657341818208554335454905317201 1.0285699974774219807261868947836173 GT 1 -69378719059384.4233959886224787185680994223920586 2.7411402910925409123766158624630315 0.0434536060267758250702052244054907 1.0444259873855551419960059339033929 GT 1 -1.9835433625778155041526251166842868 0.3649207561334836794125939166769813 0.0624464780112185434326547690201368 1.0644814326457832418987971741891434 GT 1 -2973717481522503.0462742877585521755401510972321362 0.0591613950756801442194497801532441 0.0694157352095065089858660397205483 1.0719426483858364427830732934890000 GT 1 -375314270.3172476424342880394808888974041746 0.0382872936828383264686949943140830 0.0450066793522564089333707837391830 1.0460509326119979044363922470922485 GT 1 -6686368563355612.0805912156983816597933511111193682 1.0094753148965940198963873582315047 0.0221929093761988018548414070048895 1.0224428772543518379421956986574999 GT 1 -171851942912077454592.7772974966088107887309226829041206 0.2715347102039730359549779340410193 0.0989363007403850955229950551084286 1.1041793254714649351117361191939491 GT 1 -5391017440515125248652.2373732114469940262908781137521554 0.3188252388508407559207473040821242 0.0600363506790086145331935678524487 1.0619140754009429077915764811906751 GT 1 -1264960525.5927405634552650321017935300919739 0.6651460628520619159819263711168495 0.0905684354047522878302060391537506 1.0949355289399528217362395416539695 GT 1 -22634889977886576030807269842099263093.1415613752160240339829033288949158 0.2781320845383407980011025968235612 0.0819296587830347598902355833706614 1.0854812668777953422408971432816131 GT 1 -288298615609084482155409992479.0574060680656880352312639615954160 0.2263097135843680915523586907264146 0.0687327527556930274533058270108713 1.0712089889290712600869677764643582 GT 1 -12810042435068584154.2839330140727839446285876130465173 0.1239176280594395837000321862727169 0.0880132214672822933730512998082354 1.0921297862357886659882108483614641 GT 1 -601968480242899386903531528481572569185335.4164435630497178978109781665598639 1.1765295988055235456552487143987263 0.0579151499364921673446997517801158 1.0596599340848302890802517835648507 GT 1 -8120.7074864701630141910862565429789572 0.3443973287943108165842050928353743 0.0207492313161680508647312193195272 1.0209675214645034870143045503112298 GT 1 -253539648369293751433060422926807.9468670776045688777599819092095033 2.0704352810558863215458044776919719 0.0166299685813906739252868552454650 1.0167697989260369962594618629902487 GT 1 -45888641599776208603650310035020617230.7986178371410137410476518732972623 0.5593294683397555732232860060870074 0.0709223575694111615575363443158816 1.0735629673090584187869262135630278 GT 1 -465915141.7869198114666931999596200072844705 1.5214034861395173219562618295084774 0.0292344744078314492954481807786246 1.0296703170991614116061918324091413 GT 1 -15025403478221749280090862770883359659549.5253131276309951518587575287126876 1.1474614682209467292973488914662943 0.0159050376674413599477798016220591 1.0160328801508030220957484284437809 GT 1 -24169735207999106252964757154800438.9624512038808311121605839156579303 0.8050971858308428938206772904329035 0.0248545242379947369836033163104049 1.0251686132046355362056566476424395 GT 1 -68179662057641799026.9674036510269593536239309770554147 0.4402447010845115025671156630220405 0.0775754908768242718975182030914774 1.0807497393447583970132583211401550 GT 1 -12823683668308084050894163982448102896.5124811928397504627672220199605128 1.5112390873813125642677887091317151 0.0958641037276362365272219472371513 1.1007756021531265675973921029307337 GT 1 -8815292074402891427613294.1520289872525875857576188749147468 1.8242089680008234888960844746636532 0.0055883257732295111865205862925911 1.0056039988839427289818505431150271 GT 1 -85810076.4417852774008071426114437451555729 0.5856044960340561424496169990705314 0.0073472487943461520328892805169972 1.0073743727661470662217181769077131 GT 1 -11190113920789165150597006234578615216.4775351620177264475123395268304278 0.6553310367647890963852169440145781 0.0178200530191140993683503610817207 1.0179807420170075256796100312747499 GT 1 -473591899323353072708245864130990691110795.8887571702328852711804684215319847 0.6876779931049195902775413358667239 0.0758704868616060411243080935986150 1.0789030514285589949268288782888473 GT 1 -108828225153957832771005745.6334181355328602865794727535122745 0.7945488354662384068053305133588458 0.0583356443616705677289294186513238 1.0601063782621016270551708471431951 GT 1 -75503536241111127823742814119.3283050022895438133755141154794324 1.7249092722444903138549243308887369 0.0769142374479121597919264460108388 1.0800331316212918002498533116468132 GT 1 -72179905521737.0483469350856859333842614896511569 0.0917832271976535256263392563405997 0.0101632180336919620530508587323726 1.0102152161462088260151501778018690 GT 1 -619295207080851862170217631042100852717778.8008330207170056576595547576946126 0.7120199743195924079231585364657105 0.0617904925981204918307142794557171 1.0637819994769209091797078744294240 GT 1 -806792386366527662.2997543857609638756961144489629748 0.1452550494896650934711063022666705 0.0808555926597087368385789251323007 1.0843120336713527984399196677980004 GT 1 -97217601560.4940918214992804093355023193726984 1.9097005949178403651609421642179352 0.0814922335953908668261146690462931 1.0850049188323733858234228554756425 GT 1 -2392988142910591691173358181935188.3723392896714118163667312021556520 0.9080230887669202480822946887452445 0.0749575824567939225532535816105915 1.0779156857176368987069579433016223 GT 1 -101856223277116143.2684848407213088076638823784948692 1.2051018256867028156121755518987692 0.0515694331093204596502922089984053 1.0529466953538291227006935158391985 GT 1 -403952696612806040153612567601130356782.9461716491418950252250533467461140 0.1234704502388167836412232865840091 0.0565992693654351927917466059026393 1.0582641336627348380949543811537903 GT 1 -21297170043072147132450583100759877378408362.9198707840454479968638876960073077 0.5110167570092909193434664420412605 0.0201666176446360035851778536774228 1.0203727397769494265790337111679465 GT 1 -90858.0827693523464464694086597394391976 0.7840025821418931097534660596797831 0.0237049210237019908387120273578042 1.0239904032463672437237726307499128 GT 1 -6869.5618253935420643058712441175587927 0.4869544999761366069615009020080037 0.0818857958560998716969553541575682 1.0854334907138427030119769799778971 GT 1 -9.4212954843632467673062703583841852 0.3283570391436176281254383071256598 0.0296470933393288073151711751797904 1.0300954523519684290865967753675614 GT 1 -923263068438053800503.2806588059738123093798946490426005 3.6087392224377981741756905233563868 0.0496293480159576247782797786626596 1.0509032104969627273428543776724280 LT 1 -285653.9539721495747990548968932643612973 0.3917398857405988644912886811570547 0.0188159480574057864248366114829427 1.0189952203554608532905287093735357 GT 1 -243.5343456907864819125833316327169987 2.8793969015653749638522067333888966 0.0173949728209719434851886131215791 1.0175480430597527607249106316128889 GT 1 -155340283654947654174450239403962343371.5666286934434245453600242223471922 0.0045003964100000508604425343646689 0.0587801271848076916730459447582852 1.0605785080135507667555717452863421 GT 1 -6438.1269724684738458961075301457808532 1.2287885784997838546787158825403399 0.0812285451673348992986369743485903 1.0847178765289298129266465296427138 GT 1 -161277491592.7745915280177893732739977279809849 0.6243790189832207587483766864602768 0.0581484375505044362980120022440273 1.0599075938398572459120814349850665 GT 1 -2165098894705203974410312.6749101241194390377738248234439021 0.1957368925796856619014909204917749 0.0746407400219424051927033600330251 1.0775732277077927989901896187436505 GT 1 -423794503918481640285.3053017313734051303107010658029320 0.0591900447093261121143703613617550 0.0814621047443513423070639457844675 1.0849721174146721007069304113050945 GT 1 -2080.5035692283350784755524371313487530 0.6554252187710296211304346718487975 0.0075727747836917391851301068752082 1.0076015938282650816754681530919141 GT 1 -52725702149749266126012.1607797517434506946064510919304492 0.8940550150071607757414591860015872 0.0388736077697586282325554601393827 1.0396493570885170899103025109047072 GT 1 -4006527.8308544813923643478823621619066305 1.0659792595055835914055491043678109 0.0815536678843052207357337427375551 1.0850718059570835180934811400196866 GT 1 -829409992332861320283410.2364759725163965837214942287306893 0.3359297306116607059538847999916491 0.0988450549414572828643894007597524 1.1040780660606898350357503695811547 GT 1 -30736977278425467725.5248210617844576782786935640224615 0.7515677626363288153813442743272045 0.0038627051937294159718108517621532 1.0038701847064172789490263758567744 GT 1 -122181025117334478.1693378327958799898808443499886331 0.7887256555987987581661480382222237 0.0580139733272053087178438980433783 1.0597648381964791642553342315526141 GT 1 -821728807287522576328696490689.8235774018885505365480594412182699 0.3476111179119309524174830195786009 0.0583859069720649142732857262915444 1.0601597560410932322839603904180886 GT 1 -56159770587730269.8066130438559475355240656670846732 0.3325866641009724892144698465974709 0.0389434450138803869160669519353571 1.0397220216018024915140039941382744 GT 1 -8425355567033.9601773524364865178451478326104060 0.7750564455224035598732769930708088 0.0821590616090679557176710686224192 1.0857311731012334383079860054278718 GT 1 -1.2278388228734209957787915608916602 0.5390659522349012255969103136255248 0.0920320330071830076098729842662081 1.0965461796454217294132366129307801 GT 1 -14.2862788377275807433387344651190344 0.8718703148028496629655125061175883 0.0571551311313682501325352331643548 1.0588535179742692945902606731929956 GT 1 -8064734.9375223911769631825275024355966154 1.7812443734861923282492199281780175 0.0437644675172993142243152474271877 1.0447510233856979289091256849801625 GT 1 -6255039316138041316631729933353764704949883.2367630704916424708330033258365801 0.1646510426523063701005431360967743 0.0125575614610690560579171749029403 1.0126370739929518073135653361508631 GT 1 -7262313838216953180728304370094793474076976.3338896987869046117070843236461021 0.2300102399192044081555521900240928 0.0932773799189758516696035636987610 1.0979186969397336324683473296321340 GT 1 -3455925.7988488746506548040128491292998990 1.9353432951180407382053668670114590 0.0648031946929854034328226844371500 1.0669982848833481522060808700074462 GT 1 -10654930113613613465422699207499.1469115443647289003475789111425058 1.7532617548280109399581419815102535 0.0577350960367333674540712210684349 1.0594688295407593057802308297911775 GT 1 -187589.4569270693449209832743293246829053 0.3675378264177729240335000276673930 0.0743158143300692085814281648753367 1.0772221546997826928554250882637599 GT 1 -36079214613671.9634949587622080162887350522562936 0.9831551352564698896063223841119529 0.0199315515487600786380860347000410 1.0201328643981848396494902345208537 GT 1 -1058177846393971432151753370849.0171424095969475513915992451401920 0.3707378300045633781074224243438495 0.0201149914465200139778151356650530 1.0203200524129205673185903057934661 GT 1 -119196950448388301.6715852226310160872948122474117177 3.1616925775104050107852416326098177 0.0812182629135248822120413832840100 1.0847066852841208551860102033675956 LT 1 -12257.8164259404956255982618034698848535 2.7402875209928100830738513938318221 0.0332875118513356985151982794477503 1.0338541512659975158661116564450068 GT 1 -849498655464506952564.5808812951289368427595276505325993 0.5646031413870430557152014374138947 0.0314758445893877897700762713204533 1.0319818553923022604666164337701257 GT 1 -342645677248327974023.9146094864457337383784904421175357 0.3020145620216203966053561851850957 0.0834565245097665855228632771531768 1.0871457763951160839760337889988833 GT 1 -10235637.5809298743204486262388638008540436 0.5054838051687062057301759343776286 0.0727011478539043655847202670783882 1.0754793790219772239424091070574118 GT 1 -1605161853399695743255.7997781009966284503136130853950614 0.6312308684581608879904294770002435 0.0709178363705054479241609836655170 1.0735581009903586197631355155945089 GT 1 -2387999092767919558036.7557702751112439416700571374100971 0.6043670308610472763962785499121553 0.0608394003590988780497680614355811 1.0627687817668695760678868404360539 GT 1 -151.0198875625246033869311927074461980 0.1417193414595085865291052542993928 0.0331423024002566360740688892561313 1.0337039529929559343462156305285799 GT 1 -23672506408695328396397833110142.1518375688839270194682523570624524 0.5047303437898898432579153568793655 0.0697842917836634176526426954193336 1.0723387754111187497155783006380686 GT 1 -7871478505580558742114609988.8975485476301373634761726019561244 0.9023122482191594745988156954979295 0.0505415033337862427398672622583075 1.0518634604105580307517747190631510 GT 1 -874542537551507448128111618816739876661.7585617807663849319570517271010838 0.4870409893407105177998033383709415 0.0677827429941202694418239652812144 1.0701893830866741803050279983597681 GT 1 -484962583.7543926400041910641045713446633287 1.0610604225302760216854245353774813 0.0821147989583357775960885953653743 1.0856829495129868417543301122029114 GT 1 -9599123894136605469055408105893238056.8810410716584524261813029673953059 2.5852848897561520200553806205637260 0.0844393920799686589816210773396834 1.0921099859151797762275413845353181 LT 2 -6074626146111602984650.6027847426561890271443413090994503 2.3301208354697706014996107234730032 0.0621892919612807710908101209460316 1.0642071541377130359679953487405196 GT 1 -358.9710516051040603780808763403658814 1.6099463860390574689773666050984242 0.0846053566383769962144570041012472 1.0884000024711924072074337399276423 GT 1 -1228210592789574257.8326284241240064757043275347211680 0.6629149334361402149687802696605017 0.0450078076830962796656216629083497 1.0460521141192210869697542276809515 GT 1 -320.8431006356452456661374922557661930 0.5501086809175458110769445089233185 0.0196268853666570030754760532701443 1.0198220505588002003010095311216610 GT 1 -289817907718259750952622838582963417190.1749156167039064119535865594749021 3.3096522852878127077057889973685625 0.0586707550555450446640679199623026 1.0604623122358641120624013015729976 LT 1 -764.3583616712681846566110358617867003 0.0334963021522417193978995925078973 0.0976605415956144572770238966280412 1.1027644900230932858452560400974210 GT 1 -1758399438437137482300090636298880953024.9547268450496655123745047418637791 0.9817430509668174629651354010162851 0.0684245974013730986101298462020219 1.0708781447140145053939412054828372 GT 1 -4079931908839243.4883911174160634637263669811822398 0.8355247128220159981155726348691559 0.0888577117892441449945113513767914 1.0930562048835578687102956373828227 GT 1 -27849835010949104059006735670614349756610.9564365208978466323880087794813912 0.1768682326982261266069737046970235 0.0221397108964123513682551445084256 1.0223884728291913715421855355060130 GT 1 -60963537175958.8816630258653731966708479260964225 0.0311594275934866768512883039273933 0.0662329210166460314263186363387048 1.0685282519571584970838570550824200 GT 1 -1173850110248.5445679012896805175050173771383307 0.3150119664272065810202032271276943 0.0087398013476252233623054895471070 1.0087782174076974100844790873272259 GT 1 -332208119395744780214829518727315.4989563883053053254963642405914498 0.8096536969393720249243600106514637 0.0518698425697840868330644693060775 1.0532634892841511581678537458977610 GT 1 -7451618671907777304204250.6198949971941918213556916946059299 0.7239700742362467967185972413866965 0.0680890266867503062091605335715791 1.0705179910551654110668418094569464 GT 1 -16071708606677745322143366141571679.6733733079078599070057680070614262 0.6484008535397716081938085555658326 0.0656732889743235423559081946425931 1.0679291042462064875378035381344870 GT 1 -8941837258.5047341043223102034706323646100768 1.4120865043982648861728974231459170 0.0201102518305008558176292170134722 1.0203152155141872733866466792588479 GT 1 -529878025966094571784.3158514275989613859352470785048446 2.2847642717164165813612187154578932 0.0285243725569232317209469869704898 1.0289390980314999602580258422989675 GT 1 -17465897581027160056160397883189948207.3171454998792426289230133322271008 0.7011397044755587181003950565910915 0.0631807882216174697508890779319772 1.0652649590327575214657992338853014 GT 1 -191221.3654283559127914342160281601881196 4.1588564647470096721592324113266812 0.0374692600545505964948838683614321 1.0381892757245305142374344196636014 LT 1 -1851911948847945410823955626069.0306600940431535832530562607695119 0.1301840700817615016269926099428808 0.0889726224850522231567476181623308 1.0931823300168227147049904247330173 GT 1 -1554996921368617151709020260310530489.0367741651662243953930768714017987 0.3645955009972473483392854351359485 0.0452257406479349919442989426879926 1.0462803440848215916319569115701947 GT 1 -124671312769250804957204248938.1240442501128543339053943405478541 1.9110582953598509109652101050189806 0.0074008944447062580021795749110148 1.0074284169421446539121376133476885 GT 1 -87154769462.1317533489822144269450698359499651 0.1021552613360442149239804435242968 0.0914908193669132980961930569619394 1.0959502859321515175675970428762967 GT 1 -385834040824531694270694311463911975285503.0047312736738543060849605728264582 0.0153953662989683242509561385965818 0.0709227883021756279094243930913290 1.0735634309224795600504940882410185 GT 1 -11505598478.5708254054439640292703422441860236 0.7718618269814645504696983496352399 0.0458956078188710516764358957723872 1.0469821877540304356853203819999534 GT 1 -374403266.6864781256849995280696253688399630 1.7999435269425071119897336046101291 0.0649009433183096478291706024237378 1.0671028123299408076476418030457192 GT 1 -4436768635060837616248.7763806736189940880578532947065798 2.1726847006998542910781286710505770 0.0987418040106931401299598827328319 1.1039634964001323693471578483081770 GT 1 -110992.5676339318044552042837114344426123 0.4369392880997198752224992009405222 0.0403881456147079672454458523098882 1.0412263946276112295631992037597553 GT 1 -259942403086500.1374216983825921293526041057008582 0.2812625283329960011014572526405260 0.0216354774227292309154768422475917 1.0218729559194381839301530262684061 GT 1 -1072625110670319.7824228537255408073892590173134721 0.3552477334758473970819171810744292 0.0872635768507774181939062167782574 1.0913081332223469560133479791383794 GT 1 -231758529347.8560105492925742525054858997400569 4.9326258653970166123116558402581882 0.0177721726091849419594506424827596 1.0179319940833419166533900233945894 LT 1 -773.4722285369983534333623043731370552 0.9141330580211225939542244435116018 0.0664894095021007054986232274101528 1.0688029711285595464619788232919666 GT 1 -125.3019605344920277356276012221144798 2.6894044251594061083439893406381687 0.0630902748707783281841668011931109 1.0651683459644244578452889686256685 GT 1 -11013.7654299101526011480856858076635844 1.1917381294497648584331372291497596 0.0907911028417824628811070074772969 1.0951804013518732391802718702876164 GT 1 -453319969977935098.9642448195140825673189674873021391 3.2318800060633466636510750310676143 0.0846305541756199212907899117635570 1.0884275292698589896475678813999477 LT 1 -216092396707689006519798954086878.9059788116275719648750365928572194 0.1730879412408366996836326841258931 0.0249955580576819822120932723669390 1.0253132521563927850386149050203044 GT 1 -221473774780855005189270.5908067763595264956110095008925123 0.6857786360838804155296020862020810 0.0903730445727867286092263215813905 1.0947207026102154002922088550768068 GT 1 -4914380106295375880735106670550076142.1857086903344982050920087377724236 0.5663363726433156057684079294603371 0.0713742981584181818125836617098380 1.0740495257246595774833063811552233 GT 1 -10644721936243793624.9570978700850304837040311753271003 1.2326808225925939657322567963888959 0.0822099254081691852568597598510135 1.0857865914274161032866570912288013 GT 1 -14293719775798780839765.7725161060014075727816866696472329 0.1745832306737729652762443427474585 0.0275608030770322200545620617935990 1.0279477278883942526587120316344706 GT 1 -91768503980948697535560030555.8775291684218356553368070086283101 0.2500283910702452807647926930433692 0.0333225372659697374514901434122356 1.0338903833924983075659475881735342 GT 1 -5738.1731594438692679298888094528026710 3.8253792913095635325926117064594974 0.0915186982626364977440374452578349 1.0959809728245660739003231310344074 LT 1 -3842541452719879441561590458.7447212296487127923602729560115468 0.0351750177720446278390409368996762 0.0674269354764224026385129810022400 1.0698077771571411939764524886200882 GT 1 -72578558322840001.5591637767840395278995625248353805 0.0425003417787431331855836142948925 0.0774694813619127232266633990482825 1.0806348210801578231330356541743229 GT 1 -115339705298749474558758943273112910379609.5266066478383244633801687279769736 0.3771208566691647365227613550942656 0.0618549095819299767747910783207374 1.0638506613214460705062628886486915 GT 1 -61698957.4420282375574167539815221086243609 0.7577364971381682373106670952469997 0.0249926115067187740447757900860865 1.0253102300711754330999136123230759 GT 1 -779590440.5313299619559794808284713319918813 3.4570762083099057681945633137794846 0.0681590357132598174780537298641000 1.0705931180343841068452302787947882 LT 1 -246268799161948393543388139913486961.6935059804898631360701331949132904 1.2403261677991632941266965839132383 0.0221455041201672605626108552855714 1.0223943972347329242190729838531774 GT 1 -1144983765254379589837049551840960135031.4172540497161941491808790287433787 1.0535399513311428311409850250492754 0.0641277974081391485088570102127715 1.0662763475188475369411844653078785 GT 1 -8922076554.3957724522002719711798513392196472 0.3551850770030223720241932361721314 0.0175957923736612510766465366283447 1.0177524385911644430017287786580578 GT 1 -7959998157736452631.3619305290307566603697496242109388 1.1012418952085026353470839938056321 0.0088754724885118158929994650517080 1.0089150941090841793493248937204550 GT 1 -1808570546315062044706042466733332825382327.4316309944615658620552959643430961 1.0493670523415955767557170836647467 0.0678973337864877381251991891354191 1.0703123134819186778231668032052645 GT 1 -6.7347910397732714045173311498180585 1.6127647113630880731801630840768119 0.0525734020885876244405648931279812 1.0540058142492346365918164235327796 GT 1 -20734803971999490848136793822335429861695.2720895718400548385830151013632943 0.3201251722258406869559316202598858 0.0473426454690746237048283884430632 1.0484999840182931242928289140114231 GT 1 -38306729152947.5585770132071879187005606201421108 0.1716140618953746750173657060352135 0.0176875236606243177045346046537920 1.0178458172322462349085185855739698 GT 1 -1780185270160158621636707213291793997.6369050498924221818014676387189111 0.6265295121569396416296042869476077 0.0671104934987875654506377977760107 1.0694685133353040134013961712390420 GT 1 -49473.8214309969851920100838349258763961 0.5808100103728643447745932078884655 0.0196283893776257545042016468529355 1.0198235846809624369715268262091645 GT 1 -71217076735292821113162293877630286890072.9612908407590518154708704844805471 0.5665075027509424493031795498975977 0.0217444716578512816890596420103899 1.0219843666505952869493696616327387 GT 1 -1385196737694105538925.9396355470014018840535699315795695 0.1287182391166776528216534355746160 0.0618428469803606626845444945818886 1.0638378034765954674284944946863443 GT 1 -59936152611103250569087252841475689280125.6873612328321124553967972473764498 0.5621138657135741863719789187308197 0.0399852545269683339922453299679546 1.0408066347704753713974681430402731 GT 1 -32519155566692461516.0674527039616058097130083739216777 2.0433821122177014592317475961566267 0.0712911542388719740166817236039670 1.0739599953600744133397197554333113 GT 1 -204824501914224411905.5695116869912724719693438865481339 1.4700138261703935813320967254762772 0.0751209751088308789616169157884476 1.0780923339241108187877231837687919 GT 1 -1522345587338013308274.1962394089675773677734950380487110 1.9863144786603697898501764703627280 0.0215151346608598362832467653234187 1.0217499594714087880309128452643751 GT 1 -530251523221439487808.5226557220345756189479486098385355 0.6838405008829906576844665165811360 0.0461265139479433188345444936417865 1.0472242305290896379132822929833904 GT 1 -6226619339299664345.4563635801071047732563663787277956 1.3475119352347322970710827551057408 0.0425544192153605117157135259024851 1.0434863942321597226854909098183635 GT 1 -20134339906581417777036987642295.2454863188750953133735498789445699 0.3865693978439315633402606432107625 0.0741557279138564247874624397878844 1.0770492311717201390431153139386219 GT 1 -12742738922327.7266037866147968910305654768235611 1.0867662062738131480005967679440798 0.0443633751927486382122490169214069 1.0453775377608939660919074821923111 GT 1 -5728375.6156014655276850636997453180865486 2.4689749529913177016168885452119166 0.0361820874580089535977261382122871 1.0368528896176375660067543694653342 GT 1 -169600877611404397311565643.9922706723965923529595230635891287 1.8224401095245581565872289753426641 0.0016311116039046214730236380041719 1.0016324433147464966405303570922740 GT 1 -4.9376434203572042251601475599272665 1.3762645755280480808308698208125844 0.0706608109682304079912940510644934 1.0732814948229297416602632803175798 GT 1 -12629538960714059781263944200.8715076636909766592318643956054425 2.7248652203722711316136367255651211 0.0682828237967578838809822940536294 1.0732270507298261767812611580481231 LT 2 -443546098292582697711133799017558751334.9257882474184247041685090832530860 0.2411634167718603670443506818597996 0.0660898679270338156345354516915159 1.0683750637198709030679509497396425 GT 1 -1502596676.8712368217066495254770185887046342 1.3868028236838526980336207007134985 0.0449644667349298042966998432551001 1.0460067315861893129914104777249078 GT 1 -40499895030922710716533131891515698672.3393392592868127776307130399977200 2.1024384866220870547967306566820918 0.0391145400544098831573481386266582 1.0399000655174380487590551712186628 GT 1 -34353399810768444.1081899110653699992813875544381068 0.0230952540205093686862602387583839 0.0481660456382021621521312731480092 1.0493646770904926010992915858992892 GT 1 -31254376962026957957250795934719525625799.4504993013644811002000725437996668 1.0566342794504100606770697425943821 0.0175977877665030524692926976556406 1.0177544697254498698835362329480398 GT 1 -1049413346001123829414593059131611900143112.9619130119799288446541391345450111 0.0107885389585436061970865040437293 0.0785037690616822941678720451287565 1.0817565920180977178696612839846430 GT 1 -5926366873922.1027635789422563788687354764653047 0.3547363020180361245029907007290979 0.0986465008714638750259135408662511 1.1038577574441762100399444620009637 GT 1 -512506415682.0970417828403078293989771034127122 1.3561934600561474998115489577967076 0.0218613052646186704122985643045438 1.0221038043442135922198129169791682 GT 1 -484831.2730700213858735991930106582753780 0.8449538998128256756770166351440733 0.0613356952587904507016452848120087 1.0632973666312931913981618999309231 GT 1 -4575572500668608260894971285.3963738588599597314277506638636103 0.8360378971809497235198500337793288 0.0768350506929989337443029881860155 1.0799473504709278326051637938863442 GT 1 -1353.7179218650441657729380213847344230 0.6580767054827216013266023625704633 0.0237430184595460088584217620121065 1.0240294264679440040975239383053893 GT 1 -230134902119899962760849370450766.1664654815196891584884116384550310 1.5367712794013954936319512734717520 0.0796175917184986960008456066551048 1.0829660341266815398707972199812037 GT 1 -157941.4892774900148797199551609312937281 0.3705244363277673565024998225332799 0.0207561435633033249815766712571418 1.0209745801993569231606472560780694 GT 1 -908935511888964237808.2729517424218104137391812636529193 0.7000487625853753760871745044030912 0.0487324282111582663356204213996592 1.0499598976626956723917628441052804 GT 1 -27506682.3796511828639553609766313564220327 0.4422174254744054760658417759784933 0.0701093872268239260709162137675448 1.0726883204266935893093716573457602 GT 1 -237571694.1579146006095335870772271706889465 0.2557689517837056305681062814619421 0.0849648672408495788973571351329949 1.0887928179856529736363890527613401 GT 1 -16079337563730812613621947389595.5198160946515211178094024387026022 0.9999793862586950490252046771785932 0.0848901749284664995722493673661725 1.0887111935087447793169339425988533 GT 1 -559884652430706628566513264.0082941474157152405684198843420217 0.3148377372362853330669587927158379 0.0645449879397800093503854174402400 1.0667222241515240829410270564777103 GT 1 -42000342.1129919427684584538220721300459282 0.6814963053089804964629903899874302 0.0817272840107797543902097470607963 1.0852608562390749349705339048663220 GT 1 -1250424196433070046393646990549144645158.3387716780442620541520740953474224 0.5255844528695528865203734964950437 0.0426626592234015468185515152179706 1.0435994514429145309043526787892188 GT 1 -1073880.9195615940193456453556129482815647 0.3604209580078794478307893502502133 0.0535029987125622213702747581071955 1.0549874765496771142910683375607288 GT 1 -1.1077759762968008922658133066344150 1.3509437671255264771661050574537255 0.0751828640332698168432997887432600 1.0781592518599012335683735618832065 GT 1 -197558434657979202735644653428411.5566430691240363708547429989429231 3.8083198504174494495733227392681992 0.0752149875754703741289157507722314 1.0781939874837019817533508208996264 LT 1 -87091725.1574361988544466070529407069613928 0.3159637134705873912139541710383371 0.0668297194142850521292396191757641 1.0691675861211125888412388113553250 GT 1 -431341784945621374464171857.1883185216286002536450120789313400 0.0486829654194007326626168851797879 0.0263805238237859578142549137420029 1.0267347332194470930799544610108179 GT 1 -97543886934723.9647859662890137689817644462239364 0.9355693419994812134701428877727805 0.0505768464548375432413436648013186 1.0519006856068217868765759715050783 GT 1 -372787081180965629535553711573659424595380.2717985495416318983240235055650867 0.5025491002691598604730710527901758 0.0235819946102558429250545992376109 1.0238645000457457981707041119209707 GT 1 -268367990716.8037240408033858222088989533049309 0.3694642547103017159857314688602131 0.0162463580603233393258323998413666 1.0163797771585949539368014985715403 GT 1 -10753609108418050672173164171803721955.6564953700708076175044030680570788 2.3841816542718025030571762454530233 0.0716092282260813037073990731573078 1.0743025445559454951018167685759363 GT 1 -4290339764532096150871033463832628399642.3645767085182638140926644617265202 1.5248605463629026306535994568787307 0.0495517430732006432903254544683870 1.0508215562768407617554270761482184 GT 1 -31419507219825.3984908337740960679173249032937551 2.3442383922098441056847457417791157 0.0293072130446492978843430480652053 1.0297452490576606262341109753094231 GT 1 -4361286680.8134605752052916748555849794895068 0.8959346004087432454787223781777948 0.0589012141175053316165547220904054 1.0607071652228975008543950018893652 GT 1 -26184535585378130791130484041.1958561772274667629241426866099582 2.4944386101575141108338163539986145 0.0527594932337064673343312595523024 1.0542022510219614169776993873042318 GT 1 -350100088880709559029704148084779592.2469581108395683736616614077217352 1.5391837683367358849984835908344904 0.0071019420153940344356602328142557 1.0071272808468017775986805859459091 GT 1 -59418831000978654921253194870507130.4503367261557855426708769398336427 0.1956307916761530731278937982167157 0.0873019217559620911012019114532691 1.0913501450339578859925709707451352 GT 1 -768899976514767418.9932755635776881336342272328870376 0.1961086319175503575255192951079463 0.0834114715779092919706264247648355 1.0870966223442673601820356628574087 GT 1 -92148875354600244854916.1819883416133990468538034345596154 1.3696588918303827624964292946017067 0.0306384445083623171746874466661403 1.0311176144017872526875760660180427 GT 1 -1764779081666965643875213203142485434526387.4389340756263450951244876214881966 0.3638818328859272719763808630809175 0.0549967287749013109248350160420641 1.0565668898805246229566965253485134 GT 1 -1881014331657923374744466948996296.2898980623399687917316230184519635 1.0687903813019744187361130614528283 0.0022764834621535833035067101523868 1.0022790785898886312994931416617996 GT 1 -238618471767255002305434875791638626440.2885943337891719475667918224162232 0.5493847327645451936232214077477573 0.0846372997965196322438072569682668 1.0884348985848233632775414059985381 GT 1 -104345.8721560736905367009994624164031593 0.7617923728287620941053494795196901 0.0579818562318571780890675254098021 1.0597307436908988236067249049614260 GT 1 -247.0674838541091811591134691853772699 1.7106576840203975464392041904447437 0.0804802266643134961293282195535646 1.0839037307256000275851237821645776 GT 1 -331529004917993330147148483578.5632944616000146559121208722630482 2.0735339510462730968545252665353551 0.0993819049656824370745795556567690 1.1046739791176243823780736191511856 GT 1 -773027468519381.6083158423160048229083662908468477 0.4890238097493060413895288886107736 0.0174451603266511578469836360590729 1.0175991203349777137965222952638774 GT 1 -27617751125917587729439185510443721.7825345811601380355803302958987656 0.8446653630582424453401086155272518 0.0204508106547052458103218915929985 1.0206628240271277384508698765009366 GT 1 -21191.1469350703589580657161730165663996 2.3954561183896983220268544987469170 0.0091379023473230290965129365737997 1.0091799090750510601735714164197072 GT 1 -1406837596.7411752701703649628399778943935993 0.0139273740366326224634179007825057 0.0915799768113181725547710014576849 1.0960484267339933280328612601832038 GT 1 -76147606322515856734404652821527273949952.5747887244635843388843185950459354 0.5056507537703218282587657238289301 0.0339063009317614018798691801711386 1.0344944525084701875512631116789435 GT 1 -953093682558188636811173318899.0782914255419129487619344714919350 0.3528406814047558397577627579385402 0.0610080590809362016719979804941514 1.0629483824315103712554770649996020 GT 1 -794482166680991291776323164517062451.7946512146473358579399834367314951 1.0411672598379847261248845225419556 0.0562725541199950725868487736119974 1.0579178771097668226153315291593483 GT 1 -24.2511998643743500285222102302016218 1.7510731024994130294340152469225010 0.0021301705087155298635872479893646 1.0021324425490425744652250156211519 GT 1 -1612690236922006698953382.0358569422738670936431044849735222 1.0109698343969711654016497349180723 0.0974431527512412462962638356975827 1.1025236021175182946386283408262132 GT 1 -44817265645798786966063686476733651860119.8938344320328906451953018018447057 0.8084795118498487045050964167457426 0.0978312030283057814957621292740630 1.1029536400950773898623211264275791 GT 1 -32643674527357136421037460537611974808206.7497022444024577018207295879804141 0.5038295659859621446641626671807064 0.0692024398306257297960176089851215 1.0717134687764148677681748066898765 GT 1 -251206213348796873415587.9108533281265773814053539022949604 0.2751657394705046115984511176046737 0.0393169365830135617715203208330327 1.0401107231410318985198073212516719 GT 1 -590945863956009124813979166445545012867.4885815254022985967984225357011893 0.5406736506850131790752467247205115 0.0055568473115892880799409572900815 1.0055723440228469330732805008751415 GT 1 -160427099229724452.0207496263243613099175934456581766 0.1420215244730902642721123037753373 0.0270066007101180755478520924779971 1.0273779806938785181360168191482134 GT 1 -18996631652552201.7651202795075730399511718189905533 0.7616663019129819931969911729360111 0.0296478572609262999125973885683762 1.0300962396138944274920499681541989 GT 1 -1028657.9425255173454393332338808554646531 0.6403596481842584139870003022663078 0.0906818128202794063453248669282258 1.0950602051528989220899938256623048 GT 1 -158441922.9698307524148490530042326972423869 0.2769555892189497700516043177938799 0.0745558514324113119999916385617949 1.0774814960963221628755596624775464 GT 1 -46716330445527998846029001924200709.8909066727910562805815638365183564 0.4692504984491505267254374225304861 0.0702805662920290955147757566632359 1.0728724225356411860876949167890587 GT 1 -4910705983846347936.0803811756316262970956411487907418 0.0508173532565340033322329265777210 0.0371138003090979450119735322625036 1.0378200468659144643688359778766530 GT 1 -129163702.9847077524636458407463745820434969 2.5728735954581424917768094993086358 0.0113513774668279905289607184631210 1.0114162960968314442703701172724797 GT 1 -1497220141534695590424.7152665023308637623429147777152341 1.8892783345301535709070098726568962 0.0427813379439887401094091939844410 1.0437234266314842178511499784530549 GT 1 -11742110504504541551307271265060222364152.8635047936244918909980508920132518 3.0674645271042965169893347243824406 0.0748252423805818684729579029852150 1.0777726321580718064884431860318127 LT 1 -517243977548335215151260116990608944.2006734256233532927129105130309034 1.3462838704642394691820539037229672 0.0824859366052214985500058367205044 1.0860873712201712882089002386846821 GT 1 -69309273375489433373620175326236.7365645105275015323928630031691442 1.5939460431376880626986711003957465 0.0236647714508971110319932722356346 1.0239492796679245632622984767080300 GT 1 -8712003221262.6366435249534431554507539553328434 1.6006370341908912377336996930601078 0.0199764879207520363534021921627932 1.0201787156877209373017840866568663 GT 1 -33293168320023300802063164970137.7634012627706667410621363145447213 0.6033716899661668153888560612781462 0.0164389706284517490366665708344178 1.0165755898280704185788973461634747 GT 1 -38152502207365866873.9833157537978878674186012253448107 2.3823408756616281762571785821504867 0.0935989905707447588106121711471295 1.1031022916381347821201752605953639 LT 2 -2903430520549619072534568.1604569368047062676571767463278609 0.0311463087330817286378118389888464 0.0695639526369960418049805971519079 1.0721019345868896745039102700792882 GT 1 -14614.7481970920102321869810437975306298 2.6994811934043903476017053997965872 0.0534138340543087218717768986226599 1.0548932760836196668446970985158900 GT 1 -775236605780975.3249350264210583886787965721706320 0.4045146894998203652705247766432021 0.0613317918140366354424879317288871 1.0632932081300932792330524457515583 GT 1 -1467188086645168351978931495.5256109328479706477212583210426071 0.3468763950877072932901990646695364 0.0997272469067592254052449227568845 1.1050575025784369983862768874080645 GT 1 -50950220.8434910358920529884764484386333045 0.1247933378066089807601578116989760 0.0016621020035375297142607381789010 1.0016634848275480702135414997842415 GT 1 -28440628076359066255.5966149089469246241836267894090152 1.0317366524966322813185934422815164 0.0307956921468440229537336741907594 1.0312798452981420176885059704113320 GT 1 -5090213883015362921569486118.8815962614301672161218673549021082 0.6500010746443313033134918981333361 0.0343971268965420803482016958361955 1.0350026337439856386858650817653330 GT 1 -71822815037577396619762.8883251859147914003134251518236741 0.0209830103825888508665125879726606 0.0270819921927932416701718787542947 1.0274554677597725996924268881826876 GT 1 -16.1147344640345348485065083430266818 0.5143442174974342408369638392471892 0.0890411787629772820324968899105363 1.0932575844594791661411485070867086 GT 1 -77146022912206882236844940.9558618163556344401194398781518768 3.3834904865106614880957540507285312 0.0869189825820400583371253643456218 1.0909306647359884663166068304859172 LT 1 -24.5833492329200240747234728634995201 0.5359140916269307607540693619104505 0.0952907509648865060502645610229011 1.1001416586854517167573060686311372 GT 1 -469064392217564286985915777479632083.9915025570801529513329549111212572 0.4106224803165726450130029756383053 0.0812597149029729879898453682591613 1.0847518025550484498151048553641750 GT 1 -211887650.1071442625158886625098905162977012 2.8705538491349726499263892186909365 0.0450380181824250050489878559872903 1.0460837489089352801178964448067278 GT 1 -90.5899866260566793090845043363433390 0.3883871193694826105946017331553369 0.0456996883914233822513790639878872 1.0467768650279368547501558055580083 GT 1 -6101083125568052208251392264246.0578131871669322120851784150144997 0.2237477738592346098351035078914025 0.0018499087907250943372609198535737 1.0018516219851537523626729231756070 GT 1 -296949401766187047928001530810682.1234958267211304938903547063997187 1.2197002347203356923793900130112334 0.0684963512568689229571660510445352 1.0709551718862964607360110733269061 GT 1 -2494020312855511311340700794506827007014693.0113395492932485010606769767499341 1.7242037324799270633662949732333601 0.0961307139688622328339628905640823 1.1010705241431385397059335773631930 GT 1 -8135708596300071722656455668849.1791526927816451841939463503973025 0.6282781473855015344827937112410779 0.0171542871794664066547168146537260 1.0173031265753958955986878036045656 GT 1 -3547.3485746731792153317285914390761796 0.9499645960108708938428686167351250 0.0713617204758535623167210823162684 1.0740359814114213884242777424238451 GT 1 -21431615523592089950132578327361.8456813729765726661807338657053270 0.0406752768042759692968841017324157 0.0295163899227262528905799410595792 1.0299607646380131884968919509285564 GT 1 -3052.9346661574287515001622188615300130 0.3356477997417998007499834269208839 0.0635648343883741990170812635351317 1.0656749900213651423614634725101657 GT 1 -29377381025876961675466223.7069813305775280086695452131046685 1.8688177208808687574047829630843137 0.0143599093490004086292402555835817 1.0144640106391132517799297104705904 GT 1 -1368366200992109127.3627902403891775708379211772132247 0.7204818180605676820798566379490701 0.0828588434964117736829834151759402 1.0864938856347393778013650002829825 GT 1 -15633.4331053499849843751901226209303121 2.0028707709386971688230974750056792 0.0888836175468825072671130439610870 1.0930846374634732872673967812320891 GT 1 -7175462295728985943032204201159.6195955067593112464684167863657256 0.2713594006436504953941779490194441 0.0453160521381178193887778610566991 1.0463749379229155307320779491208633 GT 1 -20834370626099956525481392496545444546595307.0027988253589703718117084231928750 1.6277207687725672214591207624439178 0.0833829150525800130435292011857218 1.0870654676007696020704593711651544 GT 1 -10626611486196668687609.3532121855003394075099845844300924 0.5347397426149055425185186021833417 0.0348010721011085964676208612371222 1.0354210559872736642830409439302387 GT 1 -11883261.6574067266677649700841414177263700 0.0332679899339204960639278240791759 0.0066115707545440874281836550081107 1.0066335240056158684302775974301012 GT 1 -483768948100771.8585954447570300205731279379247572 0.5077385988186202349289162437516079 0.0654630182918294177342927185514742 1.0677040790780265542718731780694607 GT 1 -35591856367713014003335072403546869.2358823898246856961428729954491784 1.8460141949878824113037551293087498 0.0946223446323223606099126314694826 1.0994031235783037619197795486507055 GT 1 -14470555966.1509148591857826304270922230719366 1.1708819844242230719701606665871148 0.0744865199723467023693884092413372 1.0774065819448300484694556941955595 GT 1 -78850357912.4562121031644824083665415562675391 3.7015812840856518042984441048484249 0.0759613317986766088269993424093632 1.0790013595133544806553275501761672 LT 1 -16630717067957786268803724539263983321816336.2962888880205630239683132533303600 0.4967991583776317189758583925976457 0.0643736160260168452107823333006511 1.0665390446120282752080136079320081 GT 1 -17736242680647335.9377100007889173517954342483202290 0.2397700126142314055058433582319785 0.0614142096945622795449798770411876 1.0633810149805725756369202247784654 GT 1 -89467518114306786041227220442204261.4938410155464235670976579399565546 0.1648792470730174963204649819223779 0.0262933405488777222400558823071618 1.0266451916954348351997231194764061 GT 1 -4792865096197914.4295572864636729908868262586003890 0.2763536826969757163448665370727655 0.0510046471618667335750525462570339 1.0523513772881682210667133735009541 GT 1 -5100397.3658301450912533125398927082935645 0.2326896678820577270547669713185924 0.0750775511493852793609326450520164 1.0780453840648205263338289658040663 GT 1 -195401219.2959024614579070212269805986099711 0.4379519432571254933249870855133265 0.0539948874671642875251506069271545 1.0555073055761142128309200163547641 GT 1 -449862848560991910101335762031443020033812.0160094883256602195163006001315462 0.2929467577102804339530631004946554 0.0070827807641522556112937819489070 1.0071079827263147668437465582058108 GT 1 -19414427480675202459779567404580949146.5074823717083716598831157278513168 0.1766475084879044930547070396069166 0.0691028883311406322882819649524021 1.0716065215942738916283177817093442 GT 1 -17240576321899046305.1227709492619073650932271215874970 0.4262907546215257638355939176154694 0.0115519684700491563646404203747263 1.0116192108137191590701238137144774 GT 1 -1205362924620666467546914451903696317574678.9425876959992371412770853337474726 0.6736438272190427483225135628628170 0.0309584638283812747786555611745399 1.0314478030238574534266524899631596 GT 1 -45838908353610.1184974195076944871256178509964075 1.5942235044293786871812806644049929 0.0589313549342288935883799351089960 1.0607391929970801122640518802030725 GT 1 -375595.1961620102341779805566571923540342 0.6680409771472053206312710889098836 0.0427222627046172046266220361444229 1.0436617130242815104087529265098878 GT 1 -115171314579035571631546212945.9174284714999730265677538477365048 0.0694061974721561046521052548891725 0.0530227208796638498326352341441992 1.0544801785650486162028684117803107 GT 1 -13167329990914193.0526162643636404317717358783469208 0.6550340069282664218068644581687744 0.0229012629848936981282674574861205 1.0231675706177672547561913614785586 GT 1 -583916003065191595206873453551679071.0374127555933416525667551319936735 0.0118360329193076154070524368040228 0.0980161922372120979869082948547951 1.1031587105631399676633933119434176 GT 1 -232.1449877114322546825361847137300027 0.5258961861991854227691384600062305 0.0424622965050771812964843742919165 1.0433901816843942711785590364368835 GT 1 -4163855138988175628791503.0554946890781808138117041323619737 0.9489995563613496298464337088649252 0.0861452644530725904070940265291898 1.0900836528211259426532177661650657 GT 1 -255702990323.5355248130022177104161541379592989 1.1036529071057517892300879933938039 0.0905460922594043762481942378651130 1.0949109609881066376336048928712207 GT 1 -40245852287447.6856949155774240882262693793165274 0.3514939122731745552391739509797931 0.0998831548050075666485576123133926 1.1052306960903149745463797023133081 GT 1 -29130910.1261266510613205278707995095154995 1.1091818311344839550881653712328806 0.0931034186051194404512680529837951 1.0977268580859672456169307399942567 GT 1 -61191082296298575450.6606080710362117607581765047090966 0.6701339738629850073229347268755810 0.0008087343929692916786712636075059 1.0008090615950534243819913104927804 GT 1 -8205237611897750177625618910211.1521791779209622456805504330524406 0.1362408273089710709675133588202454 0.0504677845728664602762390609849376 1.0517858204721556465385135582223085 GT 1 -7915285717712337202752.4942297671438081493652547361897056 0.2379068006760934199483737249946476 0.0009308750298394421806739887757245 1.0009313085630644148179916638836888 GT 1 -2546.9717805009592517714884555997234235 1.3060359540560018374007301133171588 0.0876294672131331744425355929308049 1.0917090854690824207119073476003578 GT 1 -57935275685540.0669164565290916206446069298462501 1.4600427425953122113835352045347056 0.0654419748389448456459084367319406 1.0676815618139943642150519976901524 GT 1 -327951335184.9260785880439147607645730215599891 0.2711283737324994435326767919996056 0.0195068466058448404560560265676818 1.0196996161399727868780010449447132 GT 1 -4820617039695273404637574685126657697718.3471353703074458311794673055427334 1.9942515727332343332160420197415914 0.0564891195462746480713979700690451 1.0581473822275977835543999125264242 GT 1 -34009629262764.6108637781231534108758077756150540 2.7878582661077578975651996357022566 0.0663750336618288138106395505200796 1.0710389589027859656182553194640437 LT 2 -624081262964972047446426255.3726520910887132632920183038112203 0.1069262914775916781558968737814180 0.0944269074392539976021282275767123 1.0991872842529652273504665665576178 GT 1 -3470054996168792.7326257472505871908112813215537349 0.9909501314702208732129957753712373 0.0784932625467764893079034376828370 1.0817451905010235613250813276485822 GT 1 -1984556030294491790864.2094408974339898404356656613876718 0.0893767839681588820535912958023231 0.0511512216623145148054438985283943 1.0525058415018846545470785387752733 GT 1 -128809699324.8972378725276318066153015872370055 0.1684923444896145663710543628336488 0.0081760815196783269930569216320486 1.0082096889844593920954597200399638 GT 1 -6925559825140389149403804891709633685830171.2993715253369213187080400677080980 0.7742522747446357537443350386468861 0.0646826348456105456487039163636432 1.0668693793134833051522168642388385 GT 1 -14934159175273.2743214550095328414585692020031178 0.3619109604967099689074886996921608 0.0495820405716273923744758144445985 1.0508534338473595422479584262488422 GT 1 -2486824.5878158129506159569415452532314415 0.5141049241628679712029313339565161 0.0950753146197019208276459630541187 1.0999035593194913177298730861106843 GT 1 -879.5236263142392630544852342106668552 3.4526095747176178324820445801911625 0.0096575154228994374096946566977265 1.0097044516610627245124817052384323 GT 1 -221911034446066843.1128866205387208420139493722322019 1.0014140949459530413165301505617463 0.0314365347814072160789382729278622 1.0319412688875232962475786171743236 GT 1 -1643062665960615069984426021.8619817150921423393226358836471994 1.7743454772862361718020561733340671 0.0160930478784396128730411841959302 1.0162239472531156448545932446839691 GT 1 -180348701096783458.1000796443199051033190656588589800 0.6670818657971632597698157686050465 0.0651185411981823556445331315942038 1.0673355397611125427134113550898949 GT 1 -6577634107671848066585815959180110739701.8854415848935904977903916849439541 1.4907606096605559447798611074094179 0.0432666660788980691633697694745526 1.0442305742990658262189407430156066 GT 1 -21021761624816072496263234872.2045446278066172983765141607773388 0.0610712181979218821548336171222023 0.0600826568175705750560592991180347 1.0619633403690509800044806293192236 GT 1 -32364247058637456.8002297661156130074137897589076013 1.1092178021095220907812151439676883 0.0620288755155089548106897901066177 1.0640361145814261435436444486120675 GT 1 -994665120488390008568970562915947289129981.3573698056661918063772005680918452 0.1398475720904117928950100638259778 0.0897410018653685423075609514091293 1.0940261066311732741805000414139122 GT 1 -214984410290961280065987886.0416495547168961390611374918619934 1.7020746867958133680872000180042212 0.0674974413435298308133516884738764 1.0698833836004025115877735881044743 GT 1 -70481335958646613234465905938484822.6316130523446804419356811570773146 0.4248193993959055244447531030014170 0.0002435383740542376506632136851242 1.0002435680343397656940921388623559 GT 1 -933642156034239124413.0914650068896943344262816954353428 0.4944945661420337918435936558409829 0.0788013948803967894602205357454186 1.0820796252360550899710613857528375 GT 1 -2528501003399622016438127381358715.5546832029547601904033015365474472 1.2097860384659297187464260313544776 0.0372930612182999287496164712405398 1.0380062345980353090474624355515428 GT 1 -704420964821155869695633405092565216547570.3729623867545871633825349891648974 4.5185099603095605768221434014893380 0.0372815748076897768048800371633474 1.0379943033013720297604487476993020 LT 1 -252902244888536252936007102150108202.5156428567728521720070009465712567 0.3286105651409291708130736185661545 0.0564927260603744609882390375790452 1.0581512046752954070574971576528015 GT 1 -1836109832202636572.4264105001836320843136594009254062 0.7065748110083860424204704499138373 0.0771530755545360267409886334388268 1.0802919039044188955929748601079370 GT 1 -964506071385139520549410520118931540946315.6270493954478046916883736353389330 0.1958754115754709055106460010066140 0.0682514552597687017594078679578392 1.0706923024804619387828994114219633 GT 1 -63541286153641955841859344848170999357.9898560298696101073061713148913542 1.1606369974846948128108113440530372 0.0554606464120766270068665154729950 1.0570579268546630288706595881469297 GT 1 -22846689.0113399824175563287369186398104737 0.9767816011260035888371575036845643 0.0813807717674425715144358280723223 1.0848835752035328817366457341945547 GT 1 -1056169313953.7405908056447004214322944077924923 0.3985533958588521257203663115888366 0.0844229722555659102691227047110821 1.0882007810563639248214077011659574 GT 1 -1999689140481458082333260221669541486.0915643952565512932487476362536107 0.8643831627005285390901456269494503 0.0375470415848359549896959421024889 1.0382700883884444275436018960628738 GT 1 -40991219919.1448393264020666200619029253747037 1.4602397600036565463158925250935889 0.0976700111675975690707699615830498 1.1027749845455086766526569865587568 GT 1 -22961.3253738516038612361978267503411515 0.5884697881310313561645650458281253 0.0493750277203356185921757775906422 1.0506356451286965400316830583364486 GT 1 -158615546387809039048643320041979627408.2145649419315701014744240413297438 2.1761778741400480441337422940881252 0.0088149044973312270207354166092279 1.0088539856016176801896539787647095 GT 1 -2166943552371048651337832411164574759248571.4730541073350078872177871535628459 0.2631261046704673331087495217961326 0.0875804063407097159903909695898439 1.0916553139457447453298671510899267 GT 1 -1.8247401821976719408839343584944896 3.6481076882598578617675775936589056 0.0883098795000259151693085764788677 1.0924551267996984881691292478375400 LT 1 -177490861561459958.1150306596090386363240693572593411 1.1918670734920291258342975879870368 0.0160789305141661849145599860121099 1.0162095990843542928621284579641403 GT 1 -7219273915781243881.1154286404388892313974213650843244 1.6123258596803047125205156780947314 0.0476085106793005320841157680964973 1.0487791004439007987803376857265554 GT 1 -3471108015745.9281961442473541607939932846042728 1.8504323662427917389258344902003581 0.0147069609392543045410309759726464 1.0148161804703561161422048268776201 GT 1 -49605.6539123264485607663131037980730583 1.7225183943809537417986093830402656 0.0279386552879282738265153367852781 1.0283363646694714022798415746449831 GT 1 -5939522444223426269174.3879904926623942708739043411044012 3.7451349436195368541693307335160751 0.0327224212789694550460600653437540 1.0332697733023998981066168350246384 LT 1 -2553933284346574077697917494242.4315825232424851107214141083073656 0.5502520918178927586517236416771572 0.0110496584638614510899541337274614 1.0111111594024970790189432160355402 GT 1 -44693318087246.3979596348207587511776309160615116 1.2722511856714998350712330058441204 0.0229452050457045736099012499244161 1.0232125436048938055193459673291917 GT 1 -1027.0885309384526140480937890035402670 2.4044904861578457289909079797467757 0.0142485660566756318694520476148400 1.0143510515530523720982949020866209 GT 1 -2005.0214507966868264205300570330576201 0.2629471665972771091966726843893224 0.0951221721468201336808803343663705 1.0999553412424205385408711298380654 GT 1 -328149.8615653220538026248723424370979570 0.5124118817084009618214443297515124 0.0417827568298432558976550064358789 1.0426807593181185029513147691207388 GT 1 -376151840474.8928405149278948038314612728852111 1.4906983757471756126230577373182757 0.0457177988054394290048981679857083 1.0467958428964807633099272806679410 GT 1 -34106.7911887082459826757169681738777886 1.7467114950492203050251358795580202 0.0061295654319637209001776987898387 1.0061484283386050307208410569534662 GT 1 -1954329550288414114643575891006411.4031116691351329375239480645538198 0.3232631806095929965788993297495083 0.0166297334643182908565006998997696 1.0167695598328810492059414014218585 GT 1 -235196097349576040600166017553757506960.6994053413101879766050194511756397 0.5629976496488898217257628730639105 0.0720850317876741309436700821722265 1.0748151794756826234123713312486349 GT 1 -9835.5697290633170159631009879872114550 0.7766957078145703116536864526167796 0.0172991119742474850119086166860948 1.0174504899551100237256576573233803 GT 1 -61655268195644582879.5488181206025399620537559137152301 2.4258894137067158858881764385065209 0.0651001889162780657296138785955533 1.0673159093559946192580302219360238 GT 1 -1119.1097750266259844140203001904667671 0.2186323106077009901528758894233315 0.0231023535524477782839144440765441 1.0233733955312275800345772207467296 GT 1 -64728446130339878302398491646481.4027065126813756593844421742710862 2.3353607823625099237599425427719524 0.0870732644772045348420310322858292 1.0910996474747343854551678230175473 GT 1 -65951893261331499997211896859.0662671860511101747989950160004506 0.0768150382449719072475417613198962 0.0484235996118357032218553338650025 1.0496353007892264997247147428108987 GT 1 -28375146346092299523302893.3363079633974906062533114038076564 0.1438671636144298487642753595817682 0.0089829141492941742802178850633670 1.0090235037808889484286805327033859 GT 1 -2920.6389580986279234214055610596493430 1.0259337754214294521057326981868952 0.0897152649134113509175598312532872 1.0939978327133439368158946818751751 GT 1 -3935871713.7829795483546081401731668945183550 0.6303991324387214448134471402624197 0.0562641027298259540186271829262941 1.0579089218204364670200407853282891 GT 1 -5925817591829370622869041.9907364951122084486425241110618690 1.4976384716351325988189859236699358 0.0631288702996896785771162193878588 1.0652095412075259461673054349760280 GT 1 -403.1105065867928187899825316589278515 0.2178292777963936893444583017155351 0.0434979635571007327514601983644090 1.0444723610472226706089159011492351 GT 1 -55376462933878534495598.0814218628432872719129875221906543 0.2244622851247027934900472563223557 0.0842099242532285265768659432936405 1.0879681155215377025559515094697412 GT 1 -2837499661391.8294961120667800032364557958674489 0.4037696911479565347065457660974163 0.0039644489667678424666402705382450 1.0039723282260816199979395287745142 GT 1 -663076351547545120293563069138398.5937597801513731005367657402305725 0.5358412642049423895275041113705358 0.0772131754553487078939182708961439 1.0803570304777347649872384410717630 GT 1 -12566240999317360017368088243.1535950650241292197760157767396099 0.0702794799032278457826841797197045 0.0796542507619046354759608337078421 1.0830058651503566322755008865345896 GT 1 -538218905927007682142071.6644544341717915972446316666147997 0.0352399948064762113198886596055781 0.0350521228099151946502177734483155 1.0356811923764440845929512353461173 GT 1 -6577.3056276978004929633292906661426124 1.6854604343228643436918881830856075 0.0590988267080757585130570374081246 1.0609171679812220646841436769743716 GT 1 -252781772768046047.0757985855507689059849363732079306 0.4687751374799377697118630535437221 0.0444535320461331780871924241835855 1.0454718844028173882761533015577607 GT 1 -35037023603765608325694013165431879.5071531226361221636699452210613562 0.7901871363418917380552368876944281 0.0989801652794863222843755882267929 1.1042280074978891036129782336763579 GT 1 -123016737586655866060966561844700.4845899415146563950923650104465443 0.1487860114719161319744373825706061 0.0633654331196030988418449494516590 1.0654620761441449025193457913136853 GT 1 -101.4381464925767769154449848192186245 0.5016960796196607689849196480956346 0.0287449029737619296918238623606647 1.0291661294105874319671374073134604 GT 1 -1.3610034870789182785760967802459514 1.4092215026524567572450594502248268 0.0340586634706578805931783249715610 1.0346521748441474022231802839419284 GT 1 -477091438749195572344431376245657426.8639951500838024839015798123502776 1.0950046079196987012616133268759806 0.0369473096564543731542583028229961 1.0376471538900056369291798038846531 GT 1 -12134274772870073647358537060377618009511952.1568074099236144406428930324903010 1.1398259672564630755301908174999420 0.0553632991027578421664571259411840 1.0569548689007218608588084922958647 GT 1 -836504369.3593881236544238236093736525884147 0.0783844628973962362728495920725790 0.0660825961337368471457945732856236 1.0683672773550624962395138703046246 GT 1 -4978002730022558570246745402.6168736208644470658295844420089378 0.4473249254361169898824433467255567 0.0748053359921630486181252071503304 1.0777511160346567516661022332267330 GT 1 -82711380033474.7012554999894605966766125314483843 0.4767450363220249612554021181205119 0.0926485220962260163754009266165787 1.0972253869491017203473913742664935 GT 1 -14239043764597047595294518833.9193880282911752804951035723487208 0.8262527533053129613228954351252004 0.0745746294704896436849553198726949 1.0775017871410286923465759520076976 GT 1 -68333606937985092212559009044795994.7719695276778854243280525348576816 0.2599613487467294339440575031621144 0.0182745605084464424169371877221338 1.0184436029069236222379982593965440 GT 1 -279277964786.5632091444875205808024843340448583 0.8340732273546560237039811645341237 0.0025117109078935603332531935605706 1.0025148705455758151670380292704001 GT 1 -1200388852260852078.8469558536921850866625965051116177 0.1129728538279272031078056734731239 0.0905740985169681102143740932846036 1.0949417560493568930458814837785704 GT 1 -1130311509189451323481766469035261758961.3521463841117863572082622647533372 0.5992183383194430844052040348950686 0.0562185983528746339492898928073444 1.0578607057039683026544901947938585 GT 1 -519145398971279232522580.8323493531541297740687625876623387 0.1174222136900537880169297050072795 0.0042722673275170606469310317538549 1.0042814195380041869178905441904257 GT 1 -271260645920562265.4946100583955085935348908942721377 0.7105149404974887206426708095384733 0.0946373624202258064411386098310850 1.0994197110347847184507845731714593 GT 1 -8984105446566002632293562640340.6985501711665693843213505471658924 0.1340513101849313616208450571122282 0.0439949162049405696283787786730580 1.0449920481676162752366859199503253 GT 1 -94330279926020259281413272004540455909434.3971172855527149018404369403140376 0.8887237154923666310464701014967858 0.0722363649847631029006015905460280 1.0749782822857934333294367150496386 GT 1 -23473635745390746343.1844248447813603973477483579214830 0.8743341725630327346148145171731295 0.0314827713943944171118781674001277 1.0319890073355326058985227280218233 GT 1 -23744001825657925017886504542893588280775727.6346840241627471321746441034162545 2.4492533287260423788458272287339654 0.0948295312947648939886399837202916 1.1045952565068912028794091462555607 LT 2 -1965154162633474590017738435.7507579348590921430343492707546129 0.4215323684968094127856973284232307 0.0083704958899420657297901070617018 1.0084057252197166334315829300702620 GT 1 -681821.3030888866919406388025398575746285 0.0115469026231874354634274948238322 0.0883717867519708066388532683980955 1.0925230329363536540011626340861075 GT 1 -3298829469.0670954460659582956434742581874436 0.2507120973084796695604473159692519 0.0192473567987215041768804683434075 1.0194349988145075511757888364134587 GT 1 -16339362323844419685684.3462921972803305033212535187735596 0.0588618377807643300683047676033209 0.0285814516295481356805713688845431 1.0289978547804283214731248360112680 GT 1 -13458927942169295927498300201727646127.3059097422405859568899357604011653 0.5095588779940915361068760363799872 0.0048552803522734766402720123335303 1.0048671055177793132052564847066742 GT 1 -74751.0576813034541734461694433234709647 0.5899776544524560649120079505926981 0.0820503635218444523477321062758304 1.0856127520908648864536937170038245 GT 1 -4563.3585497960093194841990998990851615 1.7094182684406664050853852326430264 0.0202045553306081386335811910339918 1.0204114590338348994168262923724930 GT 1 -1350383802068741069480092362639594.2920158789997163167320629994974211 1.3434767490723788131622438773150397 0.0546254419376094457596245246318440 1.0561740722793934101388893680459443 GT 1 -60767266707555494700942492513729207731730.1883587032760307241372653463407943 1.4802620071442334384542161583446211 0.0433328360216083569147075254609405 1.0442997390586750211693344538650144 GT 1 -197003480218580229827103061609361628.5832468977271397900842386951405590 1.7886657922624777309350676479865536 0.0591532805353033265797595706625284 1.0609750437757983478722046994881240 GT 1 -17604533233744173.8097019133555111464257081840468891 0.2875618223734746489695006902972980 0.0008662597516581451761896720226478 1.0008666351714598509141644378833786 GT 1 -836277294427235654.6886368433725012954263565296670193 0.3394783439676780491234720114071771 0.0290254990711873577586277440415781 1.0294550716650696580019137949735771 GT 1 -46208308024106.3190940017776359247725052266945077 1.0834704915874746433598581855779674 0.0705403581326611226104381014081912 1.0731518919484975205431508113669300 GT 1 -831728094598382785785203283228.6350020693226459671858230661477333 0.2302105659609544974476104689976768 0.0535719660871024285005037127166291 1.0550603451242780362297618509414075 GT 1 -1644509972.2357816980482558924741947373769401 0.1040483559683434743426380147338473 0.0412019064336542233010142444607523 1.0420747647777166429440986412417766 GT 1 -56132152814338535736218741.3511294132174205150195372364599608 1.2781248963150160262144495513320545 0.0927033367767925564076005141984827 1.0972858005128564760535161152285945 GT 1 -481889386280800730700388.5916608788798662593628684713111671 0.3584878401195321554845738319999563 0.0203460404163466857626737739352985 1.0205558721385339443585707544226978 GT 1 -20817526170726739.2750721502128188857958326761799444 0.0468833798384393535341385873323747 0.0805072083346457495530746689784326 1.0839330743753908860839763671412584 GT 1 -109206.5577553918609546929619546094893160 1.6974894838981014232534129705651639 0.0304229950102307511399810008469043 1.0308953799242133014327900594161810 GT 1 -316833012958882922477534.3050235132791183597618455975560035 2.4377409400825866642335071695149838 0.0909471385206596694658393268743454 1.0998980381565447681284448442403182 LT 2 -15.4706574727077120053722615861194143 0.2004859885336542144639785540043573 0.0417033925283013681765666411456880 1.0425979377913545048800168330620365 GT 1 -3641496122483827745830978043949305.0871243666479203116614359022967096 0.0174851863451128858216860957062677 0.0856884170159495975864647578875115 1.0895838652011465268298297088071152 GT 1 -76.7077508864829743323638270580340516 0.9719871663851564389893852304953619 0.0994544304659751912416708392720985 1.1047545109446411476894431038365838 GT 1 -978153153279527869306216423193970742693574.3218071522801352870513034798370558 0.4244699887910415694344177173615629 0.0938821459926899525385338241131263 1.0985858997132738867431872063570825 GT 1 -22326160776.3889020240050689882568009924971149 2.2231878992398347627703096615419716 0.0102866863365052662622532168437535 1.0103399599485970448408238130691968 GT 1 -1479768516414205775.2311793974988692897614935045285220 2.9417155536608395321694057585902094 0.0038110967390914983602987393845364 1.0038183774725420955479644189811394 GT 1 -198000673143172.4100482040062891948223881161921010 0.2679850503732876666065709628676787 0.0055011259504959035090697494233484 1.0055163128662230752818521146082269 GT 1 -7151932566330084416788756996308534869.1186507463701558957552667998124826 0.4905482825696373719678782467277191 0.0896752612045576207773065761823819 1.0939538873099677043988882191564223 GT 1 -33.2930472370130632930305355857093928 0.1539502816673323436409461881897930 0.0505844801224963358410655517533500 1.0519087259609241962198529524074060 GT 1 -12352614790351056.0229225723822715391475601697477799 1.6680943742236926931509237210880942 0.0268126458553847629131149939042433 1.0271786622543829567720214525771109 GT 1 -402880792286672215042377045.0723517901797351659780095134844418 1.8146723554999923971971569891268969 0.0115767633007999248662859735321586 1.0116442957356870720267751283801528 GT 1 -109245157136949637641688.5538077302574878284748750434437748 1.0220731761188647815211443472088754 0.0294769143952437396813760163563910 1.0299200893249647861127636199823844 GT 1 -6.9243919831819996097909856165447129 0.6353443328278841589552419233553715 0.0427940369718009759434948703217821 1.0437366933097812163513132197521410 GT 1 -208085443831453472.9065822826615653806338959366786225 1.0922472950039825479906847187665617 0.0409589659155125039296829478627559 1.0418214166048292412544262030858711 GT 1 -19023179007.1125521688694893940212799807847187 0.1134685155945739365808555652750414 0.0613746621510237916737505811603234 1.0633388806218409396196920518514775 GT 1 -819081861.1737222274046093352389060362350218 0.2434721687888525854993364735655840 0.0861786201112420118465753235980754 1.0901201534438472428597842862564086 GT 1 -3620137039425052560084988586811950.7551575410098197553611133763598316 0.0232135783731776150360221540892731 0.0877684851314740960844476377585396 1.0918614671007796565311957329660784 GT 1 -1454693010198568439312982337690791252232.0893910854950396206397301666259381 0.6852489516364318791789843990494958 0.0612609309346297341260738474120670 1.0632177201096736538004974078985985 GT 1 -365806167486306851982213941.2048032908971286177734787998659195 0.3090237948628593780743923544724566 0.0113823393025395488492511340102140 1.0114476139177811858146373248514041 GT 1 -145184658834998733981971172919685.8652704948279828943395249041997593 0.9872731620734954465277082053506907 0.0202819231082323623593264225578531 1.0204904253454353293066429871536805 GT 1 -1486154873554.9349356750885862774543819217633698 0.3661206708984931965704616333758126 0.0761839871277823923868839080071713 1.0792423474356882766085348369404635 GT 1 -22210666.3174478310388334326951113309572441 0.3212848120130768207200107689251417 0.0793686398931845321134665791479784 1.0826955833227752320616696657186670 GT 1 -1.7647820583669962869502088510552462 0.7873300684182903151479393203485548 0.0899032524487060537513268561070285 1.0942043691319527953174506682576754 GT 1 -953895325122815914501332891445.8111863395725851744209079448332738 0.0149773551714414985752242671174397 0.0790202722350817379572418089924149 1.0823172540820877972590579653897081 GT 1 -2154.9264385770310945500854287557210885 0.7442924638042683647288298210622747 0.0264497088638464013539707592093535 1.0268057953746335434159568328957065 GT 1 -18356129864305204670.3624763678172346632565884381093560 0.0046697569361720305509739275731949 0.0302798379962464463634911484895987 1.0307477418863913077639440701006822 GT 1 -657967781118301629477439447645.6788136850906782606989009548361157 0.9072700621345507425870765321450407 0.0017163985737236972720222806990305 1.0017178732734455528351370034485437 GT 1 -11301143750947189168400423175593.8503716950002130149733407888918374 0.4630958677240480066260281068447550 0.0264642428481801680019669194265799 1.0268207243340874062513239105899063 GT 1 -838622923830826134147383.7999431819738179966108934615101689 0.2114823233876614059866456890339420 0.0519966096134566299590163914804738 1.0533972003763971379676426161050372 GT 1 -12209035827372001660182292097761.6107911621876217432827703155903426 1.0046880444426384021491339130903408 0.0153163643444245460252453098295023 1.0154348714756157352292630077287425 GT 1 -59718585607343320037042.2892512258277887709483120071223673 0.0177959322233222954161794198680851 0.0715729348277989501250336771558086 1.0742634525162582130008705613910252 GT 1 -5481309732983410407838528589934.0549521002416695557077756001788966 2.0330396463540420018984663226710048 0.0317301599116593528164974241147106 1.0322444701301878454629879986367555 GT 1 -1805933985314602384730576059194922.1843405621336807893203210419622691 0.2856562437178928803159221923396190 0.0639969858773727118921682907798954 1.0661365822932477455089233567519341 GT 1 -13701157522532653404459897374338.9877194911916284151221344441425153 0.2621708967187831108588535350849805 0.0793396359306555584421320433133509 1.0826640793930605100394884496155550 GT 1 -986632267641153721383448882522945921.9061289439011146321637023128165798 0.5556533183285163182873902877810775 0.0614999536173011302892720584473476 1.0634723735334129421903524946591636 GT 1 -229210516423308294.1735039805618022360244658260868258 3.0344767045939182459487189033387602 0.0633385493135772971161774417871174 1.0654333740001425188754760641614172 LT 1 -93961740647898283535013623.9097803094783036531356313034101112 0.1540539845369861503419510137905939 0.0091653694404822830197836414234867 1.0092076298587310055007746199582067 GT 1 -5625849403591520843237152015.6456168621731403535394111816046298 0.2051716489799594315450500329768270 0.0492556695053326695973197167086656 1.0505100953841144906260506888962862 GT 1 -22948998094050418456091751979.1333020743098008232784501422725009 1.1853660267251957489522372191139657 0.0818607572226932388950543796843027 1.0854062192786819781244615591854087 GT 1 -1292188367868132.7798565515361488699626979709885627 0.4029794661088015418012662234791607 0.0172388626619991428345789331592324 1.0173891819150769804585240065982419 GT 1 -2644719224063222835796.5854762168717312125740980801643017 1.7327441719344587617457093163864022 0.0346262923639373675938992136453616 1.0352399908106191686549828941999205 GT 1 -91892.0340944971338836516123557058269754 1.4510933242258189291046950336438919 0.0126040183747607877200418433686126 1.0126841228180363824622077734298896 GT 1 -77781253894160463967626557.1441445605872193215830258006304048 0.9579336120253117576603009336357468 0.0259601733408248865795273103481502 1.0263030863817524979595155880157614 GT 1 -52002046369231821320828663840481245868189.1306886123891037047495007307979986 1.7228361466530151191316681914934052 0.0690868876375311768241802393644899 1.0715893332757188419924508563257832 GT 1 -8.0153593827789877549737556076341949 8.0823653692300990045279908641029219 0.0832304507718482907848373441507497 1.0868991477659446461459581051123760 LT 1 -3677214945.1100432064709890999959284213223515 0.0624552872008360272716660518615976 0.0046621813102763894474641509172148 1.0046730831750722673349193785057256 GT 1 -90354353857829586745.8997830458893531785835677771717383 1.8570414350024421107034195747872753 0.0637018467472132320273780223154420 1.0658213134275899790731713032286430 GT 1 -285741061527165659484061641004556369510.9676796670217622311233015445441115 1.1784529498264776856345013001318085 0.0015356110173954291017137618941269 1.0015367912764277317979847225859813 GT 1 -700301412390908983573190.5033638166709237863263818590258727 0.5458110202056482069632464831056786 0.0217784433942444332703819393080552 1.0220190941070607127184640539107145 GT 1 -409040778882500539013175638608633463682501.6522912751957980134765752748651890 0.0084857896852711574455601043372281 0.0956315890214259122033051510023102 1.1005184673411615494694732579600167 GT 1 -25235815426077870729793968215784765070073021.0058684976804646191523897431198421 0.3571230383008718209729533199291691 0.0251781261795596294733742699463324 1.0255005181922804599301424772353664 GT 1 -49159669315316387.6344345191550949007336369818359884 2.2114951102532815531718182925596169 0.0667062567570673828227981488049463 1.0690352903406190710305357194081503 GT 1 -68666946540308791538368581476849213464633.8957497220736618250531941886048100 0.2856794790774776596610206747264794 0.0096671436408457190654385919323734 1.0097141738176901769309640577510887 GT 1 -35593214927410970220135425814655558.6375206625415792560221169825784036 3.9711675148331642718141944680964972 0.0038451219836504494675855238405067 1.0038525334699979623341160835565025 GT 1 -7453616671656228669212358900679900.4982912079035339251537495945907027 0.0210590373938706342078151776447000 0.0190815778785654934988147859508524 1.0192659807528343108641231886544969 GT 1 -30743363.9976117818916204726990365875504096 0.9839940013933327145268976027009122 0.0108953803326206352950591550865868 1.0109551696705840866314534349383563 GT 1 -24749919333633.1771585009079104644916879599545380 0.8696219972970964904289539029006161 0.0793956871466217490696335848034276 1.0827249627811860915517528770881958 GT 1 -265108862656772.1648572914436587633074122064216424 0.1410954515670679525384879590538529 0.0822962535052830287139144750689972 1.0858806566824289420676407316338862 GT 1 -8372825071104321158612504687096910.0068597528284485770598035497921670 0.1620618131073833998490759747275980 0.0181446722748801228806617701878610 1.0183113055897728934469075102269884 GT 1 -18971804926526556172397.4109191560592625064250205622868172 4.1902116882788917438404098033467177 0.0078278858382009114690783920184046 1.0078586845677936536396015516676342 GT 1 -4983397110001671929743489004391911173.5829533063466201397856976791146796 0.6084676172010222437868121646994640 0.0355107318205852615079239317798893 1.0361565735210512997707585209516852 GT 1 -17449773786381210892273970104.3054094422813012274495096981970003 0.6877429507323249228558298754286504 0.0277269082823357485936557739040673 1.0281185554258944945209789920036113 GT 1 -44235557475377642.6367401722109752127491238865191705 1.2659680663844322015059251467837466 0.0152253355725919874928448704956217 1.0153424310600014063159272781040042 GT 1 -45303164021360412399540.0008753000645044407922125485022510 0.6035828643713215286085861121236469 0.0297495813399519005617763490025140 1.0302010772361280398280909095791560 GT 1 -7550326802312071040625.5434191006417974120177258171676731 2.9206197055369560906639495750737485 0.0597275057072156576441692538855640 1.0634819486701331988813637813108056 LT 2 -854928297361139399266186487697156629203900.7983088497313280709845031013459846 0.1741750474314354097260333272519941 0.0150630590748179023309030914620905 1.0151776592246725648616893213463997 GT 1 -44574223985445297.4214181741224258445108449720269871 0.2603334956911724896636034787615288 0.0388509542843549989319817052115368 1.0396257876406039592448320579808253 GT 1 -51822933687189972454826155854.6392717375505711550092258915349014 0.3033851484707051045204953749406875 0.0262262750330198765500716367697472 1.0265763175579380451638539326970190 GT 1 -9429048178160.8737903846824257861253660747430778 2.1468715656782801172397818994335903 0.0414219389361509878739658777640931 1.0423042789530455684854660372017257 GT 1 -2067.2122273856049963673491186067432306 0.5831297768679258888742546182828509 0.0850343759492045342492512533281895 1.0888687837557541287180448833468087 GT 1 -25939605448117871165835.0497049719947278334248225472108381 1.5280839366616695679164259180755611 0.0746195219234881494543354087025756 1.0775502983914563063627838401878279 GT 1 -7608779.3280368196100718920876700321873088 1.0650138695938351535302240888924144 0.0012424368625129040914120189035735 1.0012432093270834970505740510940110 GT 1 -1511206144622313728717347772509712411897817.7014380803564541970129664112030045 0.1512760255000822317246984919044345 0.0322611852370262785063957400182580 1.0327930475731175260731869708217743 GT 1 -1794012750.5102905757455075367222646629401983 0.7053442068403512112722294588173281 0.0633636368492815603895378029709248 1.0654601583539387531435008110715615 GT 1 -7305738056871370.9828936741589575311191517884364448 0.8428171268072230583880616075842395 0.0393663354927352097395989814696825 1.0401621450737247997959632374641328 GT 1 -20856886383912837379672272768551031731.1004164558968091492689375907268031 3.3895457976773774432684921635645043 0.0868497735065495174601594334316298 1.0908548703087992326198459342512570 LT 1 -6187719261334250777.3893066514414825279550778051122304 0.1236593815369511704577066671022086 0.0455938161605306447544824255980586 1.0466659289240845288750282779233832 GT 1 -346015406.6029666600620433422151505818178954 2.7916292310338970691601484858051952 0.0719228654814305450414917614464946 1.0746404305568508561842381204386620 LT 1 -5755.6337213947878435743734326626378193 0.1207092848561686443449545449105437 0.0817769205212239928646178946308721 1.0853149119146488353227904395641716 GT 1 -2733.7156652673389116468521713398185224 1.2074460986110253128031439955591578 0.0402869366210052755040695113721299 1.0411209315110125119173857001813746 GT 1 -10198263452909162765168727967610991417403269.7999492368863778199166833863442937 0.1081412705393927279221170758598180 0.0015423268572919236535048149146750 1.0015435174677237228310207825093077 GT 1 -22589545140814449727741134059281.9318777852761906877069767969602345 1.5177353433272154785445180603141061 0.0431492820382824791499687676262246 1.0441078892875061530805746970123943 GT 1 -6384576410813777952304368807284288028403.0238359291214805615538905780364553 0.3367054954939337397669119535492021 0.0353482953986837168281345880951019 1.0359881706675767938744807684234725 GT 1 -63431943631077942803568034921.2009429629992198994220130623655560 0.0537260526301744974194087449856841 0.0637161522648004870872090344343778 1.0658365923500403557973646526303979 GT 1 -182673.4415012601069902033675423830878155 1.5392692444342930229662092784532867 0.0853235947150233491775936884901233 1.0891849316836990848242418573250090 GT 1 -31596994444.3160994153231571636088153665050282 0.2592374033920562199878525509926901 0.0824540779903289854269436139108852 1.0860526490692344159768474417153531 GT 1 -402415360955507.7826598478441628264959748398741078 1.7936122110884893217857499416317868 0.0319094020437809928287629752972978 1.0324296031551267326125529969752107 GT 1 -104432187389805272156410332979612377869.3816659361401312898392739929159057 2.4742719822773180410336262307021196 0.0918411665753945111667830778953761 1.1009763003879207493554146702267085 LT 2 -1963620845814661572151.4904800629940294249384434356291990 1.4067504003602759227985638353893510 0.0029215840290211136097202731847978 1.0029258601864401753967769313726066 GT 1 -452911.1260642282206866927844643607614002 2.8925754965973251259720367562006679 0.0144794531408472089460470153363699 1.0145853034345541760862399094605264 GT 1 -4371018913913390704420754098.6087409455501050160345666618995760 2.8645032590472075496860947562201972 0.0887022212860506988229489206130665 1.0928855649745778959253641398362879 LT 1 -1271746762109509.9489906596741727275399764893880646 0.3983049125354863467065995975517714 0.0911786159355127428605615444656028 1.0956067012915401145441470891923350 GT 1 -260522804882366085690287.8498024092261493417661489053110061 0.4391108465649135774770759613940049 0.0044543380519353399370489640604714 1.0044642881741417765663000506695999 GT 1 -13065965568694548349238759125.5173557245387499457474660537377374 0.2949674719974380141183866591977696 0.0619435079127239225447989077195137 1.0639451056835934406385848581559602 GT 1 -3859570059666074712917824145867670025.5730066670872617773858785716722128 0.7574142790040957646677019047165339 0.0048764137594868036051239740587281 1.0048883422597317401354397336880481 GT 1 -5056191099763450264384654071.8150255327507792232768665485881919 0.4464540970900665200554247533699270 0.0955559513850144819378231368420167 1.1004348349711451326862752730681047 GT 1 -9155845733126612379723917319256.3037406073141797263670874054827426 0.2168413101247733287621378124507445 0.0134609359680019655041090407850962 1.0135523556901941274284911729509160 GT 1 -387052003094434256.6346569382854376391598079669873297 0.5469320476402562837807474714496686 0.0726781986474217175306888922734953 1.0754546308812288433762358258582535 GT 1 -69402321318841896419597255331263570.4146514110664391488121840339723573 0.1549693446367245456374915896703208 0.0660454091039620301462531867170310 1.0683274598195097321651274649554950 GT 1 -23581834250412179989348.2518313747506539026973608860782339 0.0494307935650785274412795068709581 0.0032718516486898275101475445659491 1.0032772158590915736806321855766321 GT 1 -3802.1539903820285206501660268672897508 0.0973459481020164780199060314711375 0.0185492641317358536750855660498094 1.0187234592219402319611744950853355 GT 1 -502534131339932842482386703829274773131832.8388177463543462802099695179247826 0.4280461749273601687790803439664102 0.0124183479046887256059845040512064 1.0124960999589933843266222406549426 GT 1 -13264465408633115196443874716.0649399801584733645303579753498134 0.4448647074927423831532512713044988 0.0836405820191750864159528450025100 1.0873466135596847034641385583139649 GT 1 -208912960089714706029979978739.0200419581396700778065762826441196 0.8626459672047153214051532364299392 0.0782285627093205915331965541202117 1.0814579849745845592867310270056365 GT 1 -2203295139646694.6107758760367523879990083127015498 2.1388927982967330775564266210358738 0.0856838467991072674284526655147919 1.0895788666803957976583289344000659 GT 1 -3413361032981315818260600435546550780.3824350000238730812161343801392330 0.4396839634892505418286887709227302 0.0222316101150537613389413061313008 1.0224824571521831849353347746963243 GT 1 -855677642004522460690957.8456529524093538580898213772652847 1.5741429988401768753578382593862360 0.0286912556308676176351673393907324 1.0291108958663766891962522524689152 GT 1 -18639920435355050103402144927983892592491384.8630356684325158969119635246667537 0.3245310726356633821248173324195152 0.0807592573801640213019505576206541 1.0842072294309193035602044900954914 GT 1 -146528931004590540840.4547726622174017181626594930755239 0.0386710669163135255934611115952731 0.0245298899131425469555482677788941 1.0248357599964436851951487214791532 GT 1 -9137837209016.3615485141406152962275110400570569 0.1659114458842789837438686551136970 0.0056108662634751300857881160738610 1.0056266663025764406692316228648923 GT 1 -1687753106055166.3388557365628271894350230684006323 0.1276407261517533683235152941376107 0.0063587291144307835420793560713898 1.0063790319449674902693447513881643 GT 1 -54794415.8263207201434425036830790708099064 0.2380003106527521748738577164134963 0.0297825305538812868525659319872552 1.0302350373074433248263440907866466 GT 1 -28710820924352655160174970971598.3343166959539792150097917550767639 0.1299202702903114418637682504926198 0.0423782023942127360811170597289457 1.0433023622512137349345627292985967 GT 1 -19293509760927088677041407.7661957872413762761490506439821969 0.9863355096733302675566674515156656 0.0338378101173353708851495017448591 1.0344235604337233984357072960890599 GT 1 -320311767095652316659834672.9423906146024231981429819095712540 1.4282928850312192173743403838782964 0.0933113194233928499198918551935247 1.0979561286072308548980287421708149 GT 1 -21829436124394582958719800580846.2177686310347120992973714756423070 2.0048944812224804992021618645915434 0.0589296463073132527161095782174094 1.0607373773746242060556978195161906 GT 1 -13731216421832466013.3384099585743704006510261460785913 0.3482391255846280620442964456202033 0.0623226151732670149747921569140125 1.0643493285537682453607102367536883 GT 1 -132914269824602183278276474.5737834025253463907499306774855670 0.3744891710694770871735945458264323 0.0995085518828609241819310156645885 1.1048146112272800981561817185770082 GT 1 -16334437139405249431955763195090594646476773.1876011235324516202903954024304848 0.8345498430668835653709262714892002 0.0352708367836267823036730272157644 1.0359078769149118131391088494120102 GT 1 -201144254820.9478071705067261252767793436061062 1.2828712718843613975408248798304898 0.0256039840287068180410598324728880 1.0259374707342749880166609197062545 GT 1 -82382590641995632534558.4079275318138141690063105441476331 0.4066058185769171401990755277129710 0.0159585576341134953971653411688145 1.0160872665912525374386002963789082 GT 1 -85037444906479076338605037495.3889717322334577674295026685264158 0.0884664013456119602491614163625363 0.0228336440356018287101759944498566 1.0230983692084377137674760833869647 GT 1 -188920819629903590024419.6404159090656468068180647390681180 0.4962515399251138203191606586414772 0.0656928924428571737161933828988790 1.0679500858514192390541500840819879 GT 1 -1685213100709413481896750812.5367557380406618160829273791145066 0.1167004194778451834154328327512408 0.0539884741728819163538021434265404 1.0555005262548837664286510661654828 GT 1 -242884153546045.1235491710709608084616936200318836 0.9464073611270729935235166877879368 0.0735432856682942085086822793983119 1.0763879539037482657467497766227932 GT 1 -917290268941749223597174698807.3535230922078756711669363010428565 0.1706699000194575958773691401325335 0.0773577746635860260363047860120170 1.0805137411446038731782295940775237 GT 1 -475534165269504.2771433271029932090969403680402382 0.3016298149677274890802152435827256 0.0402887918934485483636303543338227 1.0411228646661474498972290408890999 GT 1 -3839633362120567335424080724631315698.6987538020253876330931374424084952 0.4620372939171223485045118488646172 0.0457539789543002944012300433621279 1.0468337570844331223364009646707602 GT 1 -1569741174166512.4533549854844584354961028475122047 0.0113707863500910854979424339706983 0.0475640291274353922898550936588759 1.0487323964218276266555528778104252 GT 1 -349260.7901017434723221471260222964722815 0.0396384112138948086739484801218865 0.0677161292170164814884835751034043 1.0701179282871685033014123940980921 GT 1 -36360208867346874.0789539079085013891963515917879648 1.7951404800737529350816415870191830 0.0694952806204484111821605601572858 1.0720281310378395805887417502064163 GT 1 -21426327.4815714872515450345483823605113424 0.0731188877070679235967478326604384 0.0165377918648630715738591699924791 1.0166760677833992272396610103364730 GT 1 -10389587883436422.4881734392849080862127133673623638 0.0321008422218303055178044716210255 0.0906324967074059104526466112995736 1.0950059724582184292094429924640124 GT 1 -2160032550892458275.3079213980248169267390602359979157 1.4243614317341054555360028663532447 0.0763851813160071800796602067948973 1.0794601571480559266205066580265941 GT 1 -143724991463818306817849375.7523025345355108778028279095145579 2.9302399361833414893115115590191792 0.0151223968716043535225323417503736 1.0152379063144136034460711226588622 GT 1 -1636940750119840069745405526497860692795303.2587639487136243480821815027373938 0.1839917636136040419648291280541507 0.0911467519084611033457716189899188 1.0955716410816530368583064590151866 GT 1 -5639491356380555812596401428357118776.9936999355494057883804877608758717 0.6764158631538372158373025322457652 0.0507234285656996805153148640709059 1.0520550882321815547602712627550432 GT 1 -6299630935953059239916730156578265453.6469865369786016900514660614056599 0.5226298288766278814535043630579599 0.0563946252931785047888466441018159 1.0580472355059353382109610319541802 GT 1 -398236313602298085.0046844182392011285549739758657292 0.6301371153493382889799849939192004 0.0881973564062336580235836248276608 1.0923317118938093471244738630992131 GT 1 -4027244603636028035351679193768450.7187036139770837947869936871528899 0.3024518805197446902537411603177634 0.0464563166529982249910243054642084 1.0475700413078040144408024006334955 GT 1 -55241186573.4902149117043569919237339308609997 0.9388298954638848500913069576726656 0.0128439828123804986053606817609980 1.0129271799154897211622638389644266 GT 1 -80163.4363748992750326004483095485595090 1.8809841421982854923462971064057336 0.0581645606326326808551085224432289 1.0599247124822995276503670586814048 GT 1 -237222730427860.8093651719574536621170150936360691 0.4303078366856321426238188504602699 0.0330189362372589567864190586753630 1.0335763661789672520351086911270815 GT 1 -5432907812132959747255794711245338375848.4357453706920221148017220282414437 1.6944479379684623051499682602813294 0.0009248511554586982169468609158575 1.0009252790941619897691878256618451 GT 1 -79557821025767315820753386993795454545.9799347235325690345997728447656631 0.0816666043380262539588801947920279 0.0105002006719847013619123811780839 1.0105557167409365935251967325628737 GT 1 -5918594196145067159398521920282747358599.3943072757906746603708963162001809 2.4832368900818846774203260763698238 0.0499915680320981924885494363302081 1.0512844186712537066830843832487012 GT 1 -2073976534008580884830096.8291185486773164162304435300190873 0.2395792920924348084521000799312266 0.0131957205491935279876969544981329 1.0132835576411559679887288861677841 GT 1 -362193037837081906.8896238588197180326444913284565849 0.1160814939553365112985358318400072 0.0502472548773271203342477179416330 1.0515535965551436776443720950598542 GT 1 -16056247315638418610944924035606698543213.5193943181444259440350710427068315 1.0653705268718016978843705948107884 0.0548034382223926697968565833298902 1.0563623712367203529296364224981743 GT 1 -175.2127786975595459500755319376212156 0.2298606661106727986006701969515313 0.0928047914899875077975484545483612 1.0973976276473630282931742642646080 GT 1 -120.0515824958795270476890147742404994 0.8195641531103355458631233623466880 0.0250709600778459869580435902605722 1.0253905901998725966133726631770487 GT 1 -13070881635862893463776859.9781460558238784585567764341063081 1.3641343313131709449584681549155623 0.0311633914690337513645305015465038 1.0316592999561868201039670804497989 GT 1 -4000836385663826862842951746479286175167.0706020418744280582172132643379981 0.7393811977250160415289925492960246 0.0688139364907804255278429914788637 1.0712961682797374736530852499958303 GT 1 -81886132794.4090337771318939984495900353569342 0.1172433868503917093965982472492204 0.0654244244134541663868615900217647 1.0676627826047562708468629975410692 GT 1 -182935829322962686202.2300947425981118803898695703308276 0.7720319859120481246672321193451003 0.0722658293939812316738262551766233 1.0750100413200874567662981585953352 GT 1 -719800255491004732532318008.2257701627665145597397783793497639 1.2758752996171202547060860947983467 0.0191032966476780738882345377074381 1.0192881222572313909352823288927042 GT 1 -62625988405101906.8831192010789970154110308202526509 0.8522569712521805218574592692574780 0.0074540138380146322147818447285938 1.0074819338296937655773916619212554 GT 1 -189211171065616553452291515321664041552.5509704707959753593011403936310611 0.3356256658602443547877862750476250 0.0288016740517483119699660006977218 1.0292245823725283291503298416386649 GT 1 -31284035758964701029705.0460240352072133698208475770711598 0.9481493315059375931582768857433669 0.0962333280154939292333828104601648 1.1011840581169311020019726690906667 GT 1 -1827729660633.2280177988985403639678261547765499 1.3671168109809375602545766745104895 0.0594031200662475937214316568493302 1.0612406265788041544161192502460294 GT 1 -26097560795380.5891363176130739304357840665691587 0.3294562164030487136159946141868549 0.0190671199501048606453510095113830 1.0192512416862751961094259030936854 GT 1 -57275817127.5600979679171762955869212391214898 0.0055822392468907585890857653756443 0.0493172407905855948089626941708766 1.0505748586196945917885048997498784 GT 1 -14110581.5593221742080826867690024486617634 0.4265214238422192220193678194975595 0.0327199108076416313480230684207540 1.0332671779066983753931720407998421 GT 1 -1844176744755358.2546503560422660560193504370072289 0.0152906744643315830660946872985690 0.0171826512022904776572057671633436 1.0173319860715932640244228178951889 GT 1 -12606185075796463.5345333348338638555513636260061041 3.6494718765369331184881242641939916 0.0098793132297018186425306688682257 1.0099284374548291140949899643514973 GT 1 -765666942.3702938178957190664832644104994984 0.0512048045214682823517596954646917 0.0906742412078077124686788757040992 1.0950518784955688736500700221852770 GT 1 -191448.3502057830798596549271504371641344 0.7086697481394541974634848801503380 0.0864459375090901556624616190504800 1.0904127232065303104761637533257924 GT 1 -64006590163183241327329185.4946104354163606938493993135857531 1.2519614242332977260368443758974744 0.0435533282990618055139304620883574 1.0445302452359004241875281160045873 GT 1 -9415701502840529872584001540607862175217609.3655674574706604025346325338000346 1.0428743709239291057811109122654012 0.0860088700551468568466362184380867 1.0899344122305992427212239777350148 GT 1 -8753604623379969757881387492776380750272412.0498490374009549208089102155666859 0.2761950281970725419322482389895210 0.0154947494475053999283997961937301 1.0156160476998146363807295643588545 GT 1 -37240299389.7251452934799595303340831677317496 0.4453885075227826158662095574241676 0.0158936686889167855276191844033630 1.0160213274924835531646345729644780 GT 1 -19228082283037332008068811598874.4862437253092451268450358318979664 0.5813722103256909504284396906168267 0.0144590025159735778893037821607870 1.0145645525605562972488923765364570 GT 1 -22956236363378885691076070127958896843.8412352722671611845342090633553293 0.8156209562941921938498561067068167 0.0324093359867026996365755784800718 1.0329461488942005763542158244765387 GT 1 -288731394.0825197775647377889619453040380972 1.4031883298554282193692966425184558 0.0282794288130648850214205981950099 1.0286869940542192835889338451678183 GT 1 -10510406341056.6553122184339018393112986068334847 0.7391106837573149425663318754652625 0.0107113015956494150406165004839227 1.0107690805488498472713698030565096 GT 1 -19858420315506926262483816558192106.6202039646298129812345998428583693 0.0914185508764140228172775660333261 0.0434789664295286869926413718141025 1.0444525002019767871499726145341393 GT 1 -4036514633656269584351739565206942817.6372153512710375609621302966902953 2.3259365438606104271300323868611958 0.0193718345228857633139278304474857 1.0195619274800482878541744399055637 GT 1 -125717075398376024461842887941073.6693393442069621610517252585141108 0.5598670815462172043385327623264143 0.0627955278203803707029950140376103 1.0648538005079614905524039972854169 GT 1 -26199579051824826081126497192.2438517016609179565932898209310943 1.7169508494032145520523700118544628 0.0480751167610608617336228430553843 1.0492691514646470072284757608182796 GT 1 -23830301624771.8644571119887347685770236764525966 1.8501388811876601851296211713353139 0.0731349617162804913616558569617934 1.0759473137849515221181899409760609 GT 1 -34.5054367593926378893036163326572220 0.3795569415203606080224382859951103 0.0079034686247135748225211253079997 1.0079348665774416065280877658226813 GT 1 -108069013328798906492.7058439460741288292306889513990321 2.0953304311654300515857977987540087 0.0422107558372543189454934300549617 1.0431275208686242579352091228942068 GT 1 -1892682873457130962226637462.8580154447492906707422261755608427 1.4113639577675779712363362996485283 0.0242266510501147605646117300110267 1.0245249439739072417778280018147560 GT 1 -8016411959420598435409578.9962775317533647630868242407479449 0.5902850267099372146923653421892024 0.0594022557079935099398826833574772 1.0612397076326802895498712721455828 GT 1 -402941483659169355431.8674109818236341692111317581226865 0.2961259949720424681177701759782692 0.0864528194992511823152621453376875 1.0904202564400470156227292406197501 GT 1 -6079653933303689793.6541804058981700884673734877053106 1.3401765471200461781507335559729984 0.0302919300835480118038824909562150 1.0307602116309301401103122788553570 GT 1 -62626253610107820371233781.7180969917357152735215498263280359 0.1761949395797399511273724866196183 0.0126698080208962744353049863061495 1.0127507544827595435334057019084887 GT 1 -205796401405380.4825487984488670832481718625984672 3.0977559299561580096784992858603733 0.0165629416124751879520381176033312 1.0167016407733754246085871046165367 GT 1 -205085899681644030706.3389491256641654811759252349247267 0.7551884714895091229705821423292422 0.0097724276761856810948956729739688 1.0098204912356435851561162360066857 GT 1 -341975618917758997788.3345860607633444344068969606714355 0.1139777476435335615894165560695672 0.0756740240585461514388166281279127 1.0786904817400159762201967410058754 GT 1 -37649170912361161923204999721668462.8928024155465319828740379118088296 1.0976409163247937545080458215340209 0.0719509529267499577068051503710514 1.0746706951429550925526832038631995 GT 1 -1300888435463332088822.2120513789370739814484655034503508 0.2148407659310622419993314954030070 0.0974761358286592645506917188545143 1.1025601468295780013500728347285029 GT 1 -4605214204405214777960826.6724986436898974745665983815456285 0.0421250532160594523585141431265608 0.0586410513328442581473604454948851 1.0604307576504536945000074493297472 GT 1 -1665404.0512016550969195385961728387538767 0.2760677471847369220963683479925846 0.0728383645691818518613376197362191 1.0756273646128777824933831321714645 GT 1 -12.5327646073817424598860386651897045 0.1808572874212150195993597137510749 0.0487920704919021683693008524488933 1.0500225973197717106854922078766010 GT 1 -655107602.8848655827332777682261580334898457 1.8005815190840470414753048576551325 0.0780853037223983361576575610132356 1.0813025800120996398188793857295645 GT 1 -2297947.2796006293187381928528829128394760 0.0969323619376159014708069452220288 0.0197781766467770392234376755752395 1.0199763825704656975600444080387318 GT 1 -2612562160789718609937.1299058035612200796430636672086290 3.6133405816923956333515783620565076 0.0823847832148964515398608831708986 1.0859771300600307057873188850437015 LT 1 -96939594763488.0324895574161834132841789304967650 0.2415678400854925259346737740920221 0.0266197651619602772351826364003910 1.0269804870714122501482900962523752 GT 1 -2045.7711836923864185717052849681037381 0.2447261001981957805576161352903276 0.0353213009180985134845281660787374 1.0359601874040202452931892529139610 GT 1 -10902356290177823545372.9491818665531540612044757980761201 1.0754401514255224824727285898277906 0.0637721366751799492609392040717794 1.0658963884090614777742565775794546 GT 1 -961450579715081425945.9869150672118480994991851601411617 0.0997946815475673098002657806806666 0.0498831351079016771413814320915319 1.0511702862774653507527597809736778 GT 1 -1171019122618783717509344324.0248198087991139935610823139219153 0.0943449863942690642362368931471119 0.0067058423965049582049592518596301 1.0067284275827204022445460924327016 GT 1 -619.0445893701418263241871090619238268 2.2201685444408659958994772517575513 0.0699026046806619812109984108850630 1.0724659721684099991274931522511276 GT 1 -28079292127819584460496874796132.4503860518953836415947326298535736 0.5851010198484508207779687602229210 0.0457547870215831894651711891098629 1.0468346038971074370889973920179714 GT 1 -1105444038617058886794733541919.6649490071023067903148400589403810 1.2379756887307284300573830859492248 0.0709109606299844849140311386092893 1.0735507004445855549505071354981877 GT 1 -274065319043136.4197276671076441060338813780710306 0.2737517500544713869345160001386228 0.0800672061448791009013544607217093 1.0834546617648210426368920669273822 GT 1 -15116.7555230441010113941390453154181125 0.2338998415109885421183687339378471 0.0567315729804724482598067491242286 1.0584043846598080449937464081354176 GT 1 -37312288871916034181513436745857840330.5125723215759025384888239620200234 0.4675974689634909487980200348634123 0.0505342669389714883495708346561779 1.0518558388375626418404683797010181 GT 1 -8628870.5478567950625266038406443164598715 0.4947912009790683566612082382394297 0.0464447677525042875583258859538719 1.0475579298222385386902500803648453 GT 1 -482276205801454784799504771134925610222528.1584341765981816265460986525083853 0.7377917058949852077995746182186783 0.0080712618867125862191412954778157 1.0081040108569822677508509574250109 GT 1 -56879300467.8490795930009032993568663401920142 0.2245934111045473952415501089753572 0.0964433699649679244595302329155293 1.1014164924026894152328055102729608 GT 1 -656781064701627634105082242136224598362.5889872939750961280587401007552638 0.9408848281198922848735203191850593 0.0954493660096043371728094826886350 1.1003169956247298357748160662237667 GT 1 -22917566445941.0768317174078566634939560348582279 1.8407395544548077881656719402666186 0.0398664190100879427542080572606507 1.0406828573357903990048241614069740 GT 1 -1202900262825581694559450193066855.2226009243283554591933546477491062 1.9627967540196920000357723219884248 0.0896268705422355057697113347591227 1.0939007311403722121779290827594464 GT 1 -267495371384288996993.4359648334115966829977766035910037 3.1921550793105405034917361053442325 0.0918007222526120119626921396083981 1.0962914555758278108244126395529876 LT 1 -580952448304724741377577118772693521.5225858075358848160877964442946020 0.4337994396118990250087759259776467 0.0754893452042084453888841014961487 1.0784907032935252268017674342802256 GT 1 -91229489764261402710839939530449.0577022253174336460181102153229502 0.3201724336584385578614323325306345 0.0585113025152306689717398333567927 1.0602929357527721227705896558058298 GT 1 -3948792373739485265054478142844450829.8484602787486042687774462386302307 0.0420489374346324582583726229121976 0.0318543974685906860557894103119692 1.0323727871786552146055766592187429 GT 1 -75497340409.8129231940860465858062410174471186 1.3416956377608198221008576591429608 0.0078801395937424770193775186199203 1.0079113519738239772941285563210254 GT 1 -21.3763700411524473376493270347769222 1.2454849216878096686964932476465602 0.0662420415483920907782508447355703 1.0685380194639531142815862431217602 GT 1 -1158471754998985.4741155086019891062534079875288789 0.4578474332915226189199648128000149 0.0366072788641336192171304245875120 1.0372941402060198452662807892452629 GT 1 -10066600037348749188160345885048231476.0075870724881274240169282461482642 0.1678180834280778239320754151446901 0.0994832817950289960375712091692851 1.1047865490693108855838228651539397 GT 1 -159058501545187.7899565643629375713064843981533659 1.1453467843118568568691814572758375 0.0265097941983866050981739619529805 1.0268675150303405278325450573524465 GT 1 -2.3204975749722636251407617758341731 0.0186234959012164122480656533977817 0.0675532348383545504878983066298170 1.0699432173922689189285189339866588 GT 1 -63421731981635.4416507598978745822759886471345792 3.0720796885812191809368240509805936 0.0022228054886175869888257244403157 1.0022252795877116594772011874063095 GT 1 -3774171254363740003169707445039075451363.0408147585176167179121827034037378 0.6404692855837734653502104033316392 0.0470433051041966807560052069874069 1.0481858171832720571221179959575825 GT 1 -4227.2643962419958554500196032659694729 0.5448264792941785405429171497849320 0.0672366680347148523402455719276981 1.0696037738012579748564675937914351 GT 1 -2083001400.9559226439659519756035507955141014 0.4911106361476251261327314908601836 0.0409096396440804565547126297551249 1.0417699850172061097949451798363939 GT 1 -6334059794.5496770082824870862984947890198973 0.4641996943326937121470604971508072 0.0450800776762764235774413775076143 1.0461277929870188704069738434401388 GT 1 -499589596044685065032903841778410.3182241987698235314345471121255720 0.3586344474459832712975560277607554 0.0835263026623033986221574846248918 1.0872219111456300324980179073457350 GT 1 -42175.8663050525533885722904933202895256 0.6891908576380342535526487398291352 0.0928464088643047928019054060639829 1.0974435034727089713599602880168269 GT 1 -16963521051582893005145796765418.4153700421135801146616208358880199 1.8092376737627870699758624405325884 0.0479204225356371563975151762873584 1.0491066579107117972485447417339906 GT 1 -84457178083017325.1408098181372976267578503979117438 0.3322093822453002190328306507236144 0.0630402361894435102744629751047080 1.0651149391699363068561324226464282 GT 1 -3173095549233682918669469331.0299179187988634141493843243037760 0.3529850787489119609220261670869131 0.0886545350440404490607462708771176 1.0928332385062064841684829725412709 GT 1 -3307400817.5758794866480325187624795478007743 2.4348965171782769129177736225711970 0.0154175035998791576182966257690489 1.0155375891874548754976256183506298 GT 1 -800805139217.4282670076984485792909898655743512 0.3629680522294375579331090648851705 0.0392110343100981500202424161717028 1.0400004927849107446059057137393690 GT 1 -1741490852437647134.5566479001749098595758116049303327 2.6932917274953178349095893701147657 0.0262711589410154345751394586843934 1.0266224113693522135011298020423134 GT 1 -59079477991065261059442.2729620487220757268188024061266066 2.5109546393139826081580003586523833 0.0692602360106000223702901595675779 1.0717755638837681210404017968828301 GT 1 -1201939051101993901252515631703404.5742903210577549672035389794115011 0.2292703153967417978468417416603608 0.0460410883314524795318771372436669 1.0471346779911937593365802481940566 GT 1 -103156804078128191376029094975823418910.0450027123649436699371228908617385 0.8444618816965136084647714698258632 0.0158042587650327916800377735129124 1.0159304776933672655419098376295818 GT 1 -33308032.1398416066050583874813511806001676 0.5782217172658806177559172869548614 0.0389272312242739226983932387099746 1.0397051509475687624521189006339668 GT 1 -36957819476223689402.8832551885902585785167346312177909 2.2162760677195372959970925985990631 0.0073443835432655938604571784468135 1.0073714863117027786910238871476630 GT 1 -4630845837.4093252180249617401982398389947290 1.5384725119623485491688167622708913 0.0376057797759875673665073082435063 1.0383311199257235288639676318891881 GT 1 -10456390260178920019444824213020270417033481.8760538296966409549893103589110379 0.4303397919643470344344222933351805 0.0457917084456902891730419177726353 1.0468732964028708887219088892193379 GT 1 -23011657243579590251479909118.9718866583196110364838672497962901 2.0401383413610908214411118667035509 0.0682353036241828805730823074374364 1.0706749678726578616794944846317265 GT 1 -647390091.0516699768730299867455514328638060 0.0346166773570456737430053178833691 0.0331283129120841139528709713837417 1.0336894840726576312868313891106965 GT 1 -94.9425623146058572244227728669866318 0.5943649916055160910219127192948395 0.0663790751209034815781501983704336 1.0686847851513887046499768345439908 GT 1 -173262724484554.8906825461215480918024266394005693 2.8407537911907197063980208392310198 0.0932782738019712671463103984487177 1.0979196827797427286155472009030176 LT 1 -573523235640.4817505133186686541162059844233870 1.3465908141941209886858400587375332 0.0414488398006617072734199057062385 1.0423323426476720163326933955220469 GT 1 -497492545249055411164166785090200185.9809239925768875697991162442906441 0.1139987243802094053005735662406868 0.0727617848598457092833344541514815 1.0755447721672883417652613295186453 GT 1 -197630294180275753654436773352526123.2245505599366052573002893186088991 0.7171898834508488841509125221779041 0.0433154657216142678826984412815420 1.0442815821249441320363484769482973 GT 1 -12800498539262855081.1310547888969525480352277241119651 0.9544834257317051875399409204175655 0.0394496017165423503776821665234040 1.0402488272667243865523378107478564 GT 1 -45777335224170866487532153040662295.9784361135745441704258678832241922 0.6201694192321023497755718219609671 0.0920631908467080335146739519017850 1.0965804962460908568141821056466840 GT 1 -26874630122141633344305822761878294121897258.0901290733926048507574290174449591 0.2303035791136381527775088846525422 0.0354436330074096440843610023520332 1.0360870066720568796367488052863848 GT 1 -434581297710737695.6722916241129012335182146019040859 1.7159026765773822731192287917154799 0.0698024320602354463570412102866987 1.0723582767518209448688437355540170 GT 1 -966811471305287392.9319357388065847259225856708376868 2.1310067038183138575253798463392670 0.0621086751555708834528622761424610 1.0641211950628213690839621636305773 GT 1 -26026430413671513261878233450681.1020592390043956509696957667730180 1.2679308610599149798730136120577459 0.0813343237960805947666836163054941 1.0848330136697612664110156118934864 GT 1 -340193249917338697774111088853879123691792.3882433140261356399129420124666789 2.2197554802691551784779095928895966 0.0707056892796557567495101603173639 1.0733297865506319012047330299260999 GT 1 -13532973573423104.5782638258454904065782794720850800 1.7155967169602694082660015434965164 0.0677317949001716224380802163952093 1.0701347319831962394183871664322706 GT 1 -303456531790975565542564587958.8136545116647950283539580319340977 0.7757953586773625458233481849183231 0.0561098061962448429808259771604609 1.0577454397254872749162939518270368 GT 1 -8411008571247.3549861472057110596032875992870740 0.8158316398467138388873907916994071 0.0718281627425533863629457702199800 1.0745383938792291946640762436841849 GT 1 -1796487124.6328759092038361059432763497176249 0.3630874121686586617988622586346546 0.0520566203936371423405205698253829 1.0534605046644186605118495141751745 GT 1 -737019702630767221847025595613.8425413480850801165733687517244585 0.1811293562226847108261092828123876 0.0475418296729018918053605093874607 1.0487090886126907633075101138862938 GT 1 -373653.1480961791909273651258040561600128 1.0900053376760760688465363539740078 0.0827350714264822096939496180120047 1.0863589405196699547039956633752516 GT 1 -22037192791319591625127.2320341980670023124142740410007558 1.2535343107216322057532139861201519 0.0151444101348023889925095396718374 1.0152602578321493595881465652737285 GT 1 -22105276.1979056406355979154989743199419023 0.0974545728290274341735703959415414 0.0020465176464654168674243571156925 1.0020486146251951714756862481124693 GT 1 -524708627833776532591809181767215826252810.5593316632642551736022676250920793 1.2385249769341374625576861945937073 0.0092659182926179926995828783387859 1.0093091139522166952079479981621420 GT 1 -1.3313986370314188847860493826301103 1.4747427507476105437686789652930684 0.0656431606854263471270339456778488 1.0678968587770425726435239916679879 GT 1 -10076688418792722748515094051343640086130001.0841077113049411977953718052723952 1.1264572861477628590096405491398365 0.0564990783074891124471845338374695 1.0581579372874052845017281992803779 GT 1 -651967411869050554788467795971216865.9956487064724586227405748837099886 1.5309299828769792919588722624014999 0.0667202269502801193704223637822730 1.0690502591517492585978277003416310 GT 1 -15706975799382764123108947797562269118.1153076290443960077436013996370345 0.0106029830634898789981658053860689 0.0106923285150869779834719812274888 1.0107499022254163715857402323229089 GT 1 -583.7269961270306521000960387838226567 0.0491722128103211801634050631574220 0.0936100010721022835824253849101217 1.0982856031686911125143032143724595 GT 1 -55356987459744534189457064892.1803920857794350293920233166048485 0.8012952958783412470287278701994510 0.0889400056892741906570831953623132 1.0931465284451902463934328894408031 GT 1 -187557990947762459299689079.7476990879443773032637411505807545 1.0361704259101531952404328857044284 0.0430493357036874072494485828875953 1.0440034413174999748337143971746560 GT 1 -5716505114.7171846471346426338661822360150758 0.2399471946976491035830673696701532 0.0645321157454451329114854319086705 1.0667084638898260360818958473731910 GT 1 -4508995926050314041.7466369457584923904037386710627887 1.6265352665062992219713598735219797 0.0433910464627210850837523718350775 1.0443605880292943517778223234470462 GT 1 -50107.9904055944777804575030854154015743 0.0532428934537000722075567020632399 0.0312179587895139961538240739008907 1.0317156240636183333468455924651254 GT 1 -68204857537779717397409607937382015665.2552601791803426937534039174445724 1.1006374914618726360667127247543722 0.0463161375947319351718900574244917 1.0474230435792624853508833586092491 GT 1 -10706.4820717702328803472497354260966330 0.5974306703246774312347853562767811 0.0876200166513066827463092381340962 1.0916987272729969739114555972663582 GT 1 -69489783009960608197055478221.4058209659895160641966745897696479 0.4456243940518503172176376385224351 0.0333657629742856413785319290530134 1.0339351001428583022287042721293966 GT 1 -27625323539605.4945001430984725101455228051854162 0.5204570452051588516352271560760392 0.0457282155892141759574759756056777 1.0468067587876249652809099072984608 GT 1 -121581170215953074779557499114385286263228.3794869987254042392768650716492859 1.4179997504189433100781575078583610 0.0298596845261763130637056715746770 1.0303145628185993734400112706398379 GT 1 -25561734125170615.4000558012899822300088691109367050 0.6047678398943697818274436676334116 0.0112920447373699028326139076685365 1.0113562839269050326305141349564339 GT 1 -1422844457592662510790666517153666865.8780485864968967267136721775792486 0.5700193724022314965477897237063925 0.0492691981676069804060054045816937 1.0505243250335530109806218779445093 GT 1 -436182418627126629520902137781141895.6405562447310125433471725835448878 0.6525883044551581178948137859329355 0.0982286886875300844307873038857786 1.1033943261952774222787317747101789 GT 1 -2743320882429383000622630062002436635.8644899825239719488707863470048435 0.6571598952983277767271589578134970 0.0547357606226255729047499222910829 1.0562907721855740280761105158871929 GT 1 -16556502177163653445802.5635388131239403570719464069327074 1.6967841000769570185480394746357951 0.0057585607968246777953797808355652 1.0057752052374906077408796087802986 GT 1 -6162594143280645984963.1833849284219617798362710153217901 1.2119199462137821655538536939544450 0.0490978083589189847911913720307693 1.0503440696322844349690843986761891 GT 1 -76096308882635384328161116330452796.4799800245907064951764464946133533 0.2129972362320706165437674074145613 0.0962120042205926485950106685103206 1.1011604640367269894996926144697582 GT 1 -969683594566013206808915157850698.6581198194556494856357891057097483 0.9004206587409368109724303185288728 0.0113710208238997023145287803077078 1.0114361651906353463373613253871103 GT 1 -379795853719.6576146741090880050493307020216346 0.0990948140858181197004756467344628 0.0856046046879962399078000850558816 1.0894922022622429576230812753690219 GT 1 -36393384930615918942156.3445894612755437268289172167675033 1.7634144173931832841418135439202584 0.0435152181253115269973739593693330 1.0444904004482745158231721742076729 GT 1 -61918401211133628721454655304978.1628151467834100424645128196535828 0.4225069215509220192817523345050893 0.0418169814065401909243132435941584 1.0427164768844155117670221649159817 GT 1 -13606987172382.9730820420598331303774582664685133 1.0332288015977337799638197917855365 0.0620142845448430758514021860723534 1.0640205588177160972087349473484241 GT 1 -304051515056991.0935158943202310308217066830570177 1.0748092995083057762271036667312313 0.0264976415805924212501234004692167 1.0268550315540112755425543171508842 GT 1 -278201874050547709.3977619662710802578140327819024171 0.5389985887688560639747294968804237 0.0482650204586867547691635696464386 1.0494686657812208562778545117115229 GT 1 -11123720930675.0911271528287057906413750561450169 0.1611215140026152791350805855349303 0.0208511506515930400917895273798683 1.0210716057735265944115090885986046 GT 1 -1505294693430424.0583927169109050080305749932371001 2.5238224730163485787898044824022626 0.0733606865526710631280449126367862 1.0761908792638193445469971035502179 GT 1 -255811924347855888977521614860.8506972997263547706306275366060021 0.8113977745002495785076898242072279 0.0481598990728383036356075101479475 1.0493582195088001859172981703542584 GT 1 -21649592105137468748991574286199980411617.1420693252274026010217054355082762 0.2017978942163810544910727806088817 0.0769915453152387362448765878989836 1.0801168845160790201253024256336243 GT 1 -29532156631949873343035054134276727.5888217317143720228692464015520197 0.3420598146530031040931029870936610 0.0201373146073140572408889419922401 1.0203428340810546510757428046027840 GT 1 -4174398009758163620276984628724573672354.8071918631804849668112508157338757 0.5764107517365747196898468726664206 0.0760244627440587657099139229899867 1.0790696825221498531449622183379692 GT 1 -2873707572160792838945.8077212046227634525259277813047662 1.4556927147127160630066756733601749 0.0165460578949418392927373429025086 1.0166844728494492537789059686428237 GT 1 -1603565484521235852664589141148826.6518309661483475267441985678820648 0.4848989989348503925702390064777833 0.0899621251315932977019121564930418 1.0942690596028472056551937684723741 GT 1 -510317.0862060886636132434475341056580413 1.8699576050768384266850202894061743 0.0582832404439074077212168790517805 1.0600507294957909656312163363687332 GT 1 -114241255852984.1113280409301253703185755569990230 0.4431584989842304813873338605559879 0.0961416054490199375566770492797054 1.1010825740556058083108290346833724 GT 1 -161.6866400290168130328856066922591330 1.2067744104505603731419481533422618 0.0647332684601731173517642854832733 1.0669235160023008997531819012783216 GT 1 -16876531027439123062194324599.9636508524646869339245484109215438 0.4534025713392199320720415687584894 0.0962707814614224441853550473724210 1.1012255004749804323053700405806674 GT 1 -87304415155170655107783782901464651.1907949185014051546918414848304035 0.0241646862571534494633191891038585 0.0997523456333300681199567864991265 1.1050853819920426197795158135823755 GT 1 -45905976682629728519787652250859380439.9112226898164889318520811329767637 0.6407556226744783149489177033019154 0.0491776333410174054095247638682998 1.0504280197309429461374630672844826 GT 1 -21096599339750264879145342545968326616304.9134456845019314479639378702192794 0.0822502954808867027044009552674965 0.0055926111780246810112303658291823 1.0056083083808444804933198838800562 GT 1 -853.1116201398618410149913182563749720 4.7786959271922506537210261211340546 0.0796750257429772182997919543148679 1.0830284384230319501710999009100793 LT 1 -5735159819529.4905347125870749314605900165334274 1.9720526686716554199137403252611336 0.0153201774653364707081465347423241 1.0154387439156125995393564462156514 GT 1 -130003312104728604160489168920.2752411226612877654705721272353264 0.2502269347759673339498954147779817 0.0937645161144637984055370341564531 1.0984560907230158463292989112373472 GT 1 -448556654885825844003149544648813247.9642090210735422286961595886368140 0.6801902313260839743463326874585841 0.0332419936481305935028931944506273 1.0338070668099967814511513954931203 GT 1 -11693931544024463865305.0878229823988560646673645995769706 0.7807099907102008306737778130684613 0.0247492628285158036437864017942993 1.0250606747161549697799408145708387 GT 1 -11683293519410670520147.0062314945888591267148693208210234 2.9413685346073529824703442709200441 0.0215400604643778163060910506629602 1.0217754336732945413931934169907668 GT 1 -21047013379950000801129417805387368.8105055291125391819038326243651052 0.2964233422813562105632080431551996 0.0880550247450909551043338252281289 1.0921756248783027530259874265083279 GT 1 -20637807134035058344972797004327343348268.0481835867408372322303228992792218 0.9816235455405859907376557006762727 0.0827954746251289642229691622585018 1.0864247941086066098551714265985091 GT 1 -92402143058342.3723761427808961009318400803677740 0.3957611756701219144872461145874342 0.0807304703939443365844986169634512 1.0841759138743440501297019297054264 GT 1 -240225540482.1306507861009650146896330614976707 0.1760658644671429331750345907786355 0.0541465454394701763825060650873026 1.0556676325426947595803039041147655 GT 1 -22638251.6163204179526581068594153065291620 1.6290574072525715729302625989236863 0.0935868159117540265883052000147722 1.0982600238222218000779727791332947 GT 1 -66059017008206287327272969.0779004887757746385180251111576869 0.2467100863805421239565947265436022 0.0459896169272640301001533852165308 1.0470807238690359233002526535614200 GT 1 -3763869378631672140204558139353293601781704.6476759448124654242565003248818487 2.0571982567725837932053888936082838 0.0433107551562467697907053600883370 1.0442766582931043659149411838829854 GT 1 -5969484862876450666894403.1064321414180694143261827856251334 1.7425613521812221517550318993660924 0.0079742780617992740899642408937879 1.0080062426602384293790427223175190 GT 1 -5490693079411.5449704489115392540753348274928058 0.4648927477207257065586787388220719 0.0340085317150833176429960474260881 1.0346002768118132653760757128989943 GT 1 -839608355722283846.2160794362083668115880781073144556 1.9498901263579770299035193451128262 0.0777236241834664296111384635604239 1.0809103434927478505194113789635732 GT 1 -97312953015.7905842969049958698882314304279061 3.1250606205246352123970492737064660 0.0943908458983647834476268510385903 1.0991474632565299618494494975271097 LT 1 -769271079678181941966984741725355171360.0521660178724331737610013945342327 2.1244444983673436099777034819449750 0.0536040006285344765520208777170832 1.0550941935337147247058041219216395 GT 1 -203.7872564757023069712364539736248443 0.1770395748885191491453931302554628 0.0880400058276006407969691416437324 1.0921591559089842807058079512122823 GT 1 -85800.1513551392954926603164366485603642 0.7977990881063698858932797120923080 0.0918429996652332854612863293916248 1.0963380074700118615858289127970366 GT 1 -5905.6375390278316922029928520162536889 0.5620918939227392191220990296800386 0.0237004442301192251543072298235156 1.0239858177645646109156405602514220 GT 1 -14980754525695.5047654691698285366877515717805162 1.3631046838804892016683523889619037 0.0460440957210518723061726654594175 1.0471378305319406078857119433876006 GT 1 -1023287884867230228213342299065296723441638.4356560870469822631825485454587210 0.7926019564204326004221085560674579 0.0605349770643428309382969605198134 1.0624446902674646801338907707265454 GT 1 -16475466208431.5007893887931442876342130369397195 1.6733553808422777363185833212204751 0.0995498490388719308688832461109948 1.1048604729654279439031398173610817 GT 1 -5826066921349991670544728471114344096400.9244556548969468836917872884024368 0.6450481879345953016724065262665651 0.0735044936020866479520845137520917 1.0763460833516862669592571455597486 GT 1 -20341383245.7771848407296303229325331355493553 0.7295741549104295799584739505374126 0.0504381400027709011795784650868497 1.0517546007758998487155238410270647 GT 1 -155162120366466.2964159846354180808058877945983529 0.1425668670516451527420719835997084 0.0154435174993616196606476360684642 1.0155640107856891425902338666000821 GT 1 -36720894300934613688.3739621949262896547680670216697282 4.6250134694054239515271358398728138 0.0700432563269310069074191725998227 1.0726172060960561001711532877538535 LT 1 -100284.9089114250539975202454973551448090 1.7861645233135793372107937473263473 0.0074469697771923854128754378791537 1.0074748368932043154797317735936447 GT 1 -263352658304880642452449640746.1339224784269725448254939375577313 2.8822665850106992968756762851428660 0.0405769318743342025818979208913731 1.0414231458779618254645242042860444 GT 1 -29080775235957711.8912530199134342808518371461467662 1.6571912530967363713217571977716586 0.0355247440707939407032601694421394 1.0361711017822337087676344040477441 GT 1 -3302271861267982.1322871593210158934952780178720794 2.7729994078818617083821212215078732 0.0024431174940106842831872618972465 1.0024461067753249802773508974177021 GT 1 -22164944669909632551.9884916757878175971098735203746643 0.3961193043508733517190933365682453 0.0694215018213373144069053052247422 1.0719488451698529296211097489649006 GT 1 -115231111641460477521950994614030155567791.3826197600947376321490933766440008 1.1753890459139170772757202547360112 0.0864480934557953203410337804188305 1.0904150831645641668526482851043224 GT 1 -1281854951852469979394032549978.9098774463777794357968240652551262 0.2034156321750938657724114822826003 0.0591275406393970577693968087625044 1.0609476859253841932244701615741505 GT 1 -501.8926331744793472625351933411488429 4.1715822356360426078588671843758783 0.0311649066601923268973580460393047 1.0316608638858835927432251008580763 LT 1 -80701741562428886241767282379954216401304.7170855294014290001952532628585647 0.1419500788259292148842986199395384 0.0451667205357085408768923660511077 1.0462185302188354669436787235361819 GT 1 -2060537843440307219.4849793492011762792838820939145014 2.3558528455361141938670513304626856 0.0081734580777203283102863276440708 1.0082070439197059296744600709150862 GT 1 -45267611605607397263246.1078927800372191841487454936921440 0.3352823590244095512607944279373862 0.0112122225777160039863204140162850 1.0112755533762616950188189062495325 GT 1 -1390657923043904.4447895931230958777005310830418471 0.6293494240511348442312301184837911 0.0718037014013186636769507988766792 1.0745120399025974450962271964497248 GT 1 -6809935882790.7044072789611767010799677256377877 0.9132639250253109641949038696716113 0.0927253911592771659650586850197724 1.0973101086046082102447920689130127 GT 1 -226288249917318301829.2800044487517054449731032064696435 0.2994927139067767502142322563019368 0.0412486186540166140716113361526154 1.0421234855236298784547378585519214 GT 1 -508626478535215712405357426.8660502493722428755016550812770908 1.2438780786742418682639658393974423 0.0726466734711661264512164603445600 1.0754206355191466028528066736264825 GT 1 -1.9287626966067131151680135761045381 1.3366230244159513647519083541723361 0.0402968542449654950121674829216246 1.0411312655114373413389679792226193 GT 1 -33006718069835229996223710827764545.5119403723796873078872490626701672 0.9813951930291452472114897361739848 0.0400622591337617893260338602675490 1.0408868498876542017643697339443852 GT 1 -19892287558787310932985761752926798947732967.0060999179631896590451411886363353 0.5380601866173877948042190300389643 0.0093422787561960424506060979637312 1.0093861915534282467045238718929371 GT 1 -3105939706752115538732932048447789246.9880200545651354422865852406440200 0.7639102485591719969497884990485787 0.0818534057523492438591735975690933 1.0853982123876023793928652908072609 GT 1 -9031985032182363686476790318.5688563254291005174147263129876368 0.1231894215020318755978679512587208 0.0476868720650589975275494764008589 1.0488613823737000576151668856285980 GT 1 -423754.9295619994045393229813166754533709 1.7983803807416871566560898294359510 0.0633720198441976227503285059228331 1.0654691085001859415124598571974373 GT 1 -4.5218126673017997826473782198527801 1.5043481876992275985422762710197474 0.0800388889250661199632319642875102 1.0834238804032008536675497471013045 GT 1 -2253.0386910616579107585161874548062934 0.7972349484618266691530267177548221 0.0880283661548275643106129974884018 1.0921463926314639652795083181152629 GT 1 -2308618902.0641701241480031977611159335262371 0.0923897112292641507841945891131346 0.0785880507758602257789501324627925 1.0818480580120565276269378083636146 GT 1 -631160836951684395214266562735229961.9557330028286067643392652814844392 0.1203603666329088775337711346567383 0.0667371184089239116255894801993254 1.0690683583455740083640479088835277 GT 1 -327128550643327964603153.4542584256696678647832521753149912 0.9186184729955523385919292982564185 0.0810995527080224182575523978587820 1.0845774897064777759955634411002782 GT 1 -5930063673972.9541623832907474009979616497129375 0.0352040289173204496020406545860509 0.0198974693230808863983545365385552 1.0200980896504250438659650622316312 GT 1 -1337137212103473381.0490514352503663016396294500120667 0.8228704083503395787490942030597742 0.0777356921815306107957328722652606 1.0809234285910288721004808597504210 GT 1 -2362801418915888178575108271948301653552.4694130908602876671096160150163103 0.1407358168966105415538674714985248 0.0241330205817303692947512740274339 1.0244289934372276543086853079188881 GT 1 -1217334292601227367130626514636991516.4044883544448317302214777648608861 0.7904991082526229766641685006855927 0.0949609328277206574107469417839247 1.0997771680677635192559263084693934 GT 1 -7535531503923429770808686.9885500974685237295342976913087626 0.0018918973652332407831683254623611 0.0012380858007190943228028618812374 1.0012388528621346618196660022263104 GT 1 -851133540.1240468285498462327273775179998489 0.7343934724017761475117193167058166 0.0051761175606590377743781963529786 1.0051895600638752077582055658879331 GT 1 -20996.8382394561704512642703603261183686 0.9863474962533543287031943516172227 0.0576878017706868911525199015563776 1.0594186386878603918410793719663601 GT 1 -5190214032532276595462510.3624192616870862174776496825017147 1.4630499314571614171519096032163103 0.0835841307282032065429218766676941 1.0872850115822002147487833085575692 GT 1 -123481520556355072603923091170.6002015008368709044598585311864955 0.3044855924983046725054759715682209 0.0695517384179146991538149139547058 1.0720888072591747752002473939407992 GT 1 -70935158483920.9109994867573182083998839911069061 0.2189742261572881009612162559210705 0.0928861374367936324987797451620447 1.0974872991902744183258958778910636 GT 1 -21925318860483982901255605.1309104675342588705901622743925974 0.6985797725463153311169246959043622 0.0491706572240407417329757366953231 1.0504206828280368215888075095596178 GT 1 -16801529690451132.4891007101575306080036347320492529 5.4345567013436872890761705507375081 0.0249313465090236594479527956668827 1.0252473966263289109866097204953686 LT 1 -121270033473852025019919149.0587104380588685387631994673428981 1.4754785288645323904673724630974403 0.0716377150548190116971521823821662 1.0743332291196647864727692517487007 GT 1 -1036518248419.7351446147900793986419145519519855 1.6974008093388577129269494214648510 0.0939748748539431615208439509072253 1.0986882413743910104240711291943800 GT 1 -190688803675669688253710397824420731839.7335366064414823192732666611852868 0.3189669947503178968568325669989284 0.0681317969262447173891634995907465 1.0705638873073006350294635783343723 GT 1 -32874053662768.4307236423996183669732889958126055 0.6868836979529501172243872051566301 0.0183524451341554044759858177405933 1.0185229404815705697547370199003190 GT 1 -329929.2237912973944025009120987316638912 0.7501254909969042486525402762538064 0.0112080005396659356478023934096615 1.0112712834721097318406016642223852 GT 1 -497537726326254490785093020.7080647427903795368188552112875864 1.5513713499598150275518375960759000 0.0700430754476611331256275795933942 1.0726170115931896887812194643597328 GT 1 -2226825453717798137259038059519.0887811930924219787196629038803795 2.5449264173805537474391086431880585 0.0122234885176218769286753812201674 1.0122988097750745585846268540200622 GT 1 -36660549378853174716889423481.3046896323308022079911249787931361 0.0689555538262653421193236242694447 0.0439574336248011303110958163376195 1.0449528414248963403006821722964451 GT 1 -364163927974284.5084542347212314712281339255273131 0.7784711035670176207472825104595782 0.0835123317976416229480140247914294 1.0872066671094766246362295066044760 GT 1 -138092152062233527.6748447457959837701334091188645368 0.3632068867818649137926969738549801 0.0782106593450664844788446445939128 1.0814385623827515733052195532018212 GT 1 -2397971525297038458731831682572.7897939453236427443047357073738125 0.6195996336103978341206833685062904 0.0170650456960981444722031460963437 1.0172123316205751094074743116918955 GT 1 -55594695445831610753778894.1361038392148570735657069531173994 1.8365485666564870616273547950584756 0.0747784449113847939787658547943344 1.0777220511350923947731957954950550 GT 1 -1857674276500.9342891206309209527903893068703725 0.4886593147331324578852394507893889 0.0758945453507588560111361489849774 1.0789290854443345671221926562927843 GT 1 -914245230533923080822216222085265.0966674075835920368360073127785454 0.1181217927819134759965881549512026 0.0333002791525515898477966698333161 1.0338673582801631149213671825038645 GT 1 -2.2341477732638637536776736204727131 1.9736548604669351808491381776766574 0.0718765625938848490830741724436969 1.0745905405953287683417386970483462 GT 1 -65361399124315626.2488762107889027328175623355128000 0.2416987463275172448165715430074136 0.0000948698665823546146681855733383 1.0000948743670127863650348160261329 GT 1 -55825762101849212416101597.8921102361958108039841483153453397 2.6800844327496067326203324450163936 0.0984282890433471743077332428375646 1.1036156932387820198528268151143899 LT 1 -466727192578835926797052442083.5821703094808223581242768501599881 1.6523231638102455385155000341582899 0.0969353322358629698275277144159140 1.1019611137725963596469920770818841 GT 1 -11609428132041293569363726722621520126237.1351952747896433165127723742529466 1.0848204826087771981767149290962927 0.0403266229850514587532103848286118 1.0411622846884828012617108549164259 GT 1 -25953689717469969.5537196872772969125257409467647953 0.2321272257722543550515225373494113 0.0375226556649944169324697665894022 1.0382447514504700996576788913939769 GT 1 -37568.2484231463923607008512348649332400 0.2809020458761817629882698079962184 0.0428408705654517362618004421682710 1.0437856219011397792782316282902646 GT 1 -252510532068221115389289728919608.6938818215911078454865493967926258 0.4373030148413013099235720228124962 0.0923324155156667810679884307633371 1.0968770637933775111039733538313908 GT 1 -114.3607383677430336659423270778166289 0.2869734008635320752364027279580484 0.0576542391444791933639626135786021 1.0593830220115829166878318244727491 GT 1 -43746.6084303941325743618900389182928518 0.6084207805536110163391110850823412 0.0067208151390094180548182189498100 1.0067435015215322143576813101175570 GT 1 -37026977827355633968458544175306254901.5158153972172042037244708856544916 1.4534043032186272250259238582013300 0.0930661494081944254358586366866681 1.0976857636195022200068500651033104 GT 1 -47816151513419590130754641147912791.0455855650142923715351264291072256 0.6215871028877302874952193222333037 0.0463146825620628254955742699441354 1.0474215178833620938292762579444735 GT 1 -54167339100869321774584313324.3671418314234252901009746685714829 0.0975344374708885293823172041792617 0.0901334657246399775009322834040100 1.0944573558591693049846663632095501 GT 1 -2.3786708171639127508940363853208126 0.7023106320285270548894186125031376 0.0032780030067997130597373019479775 1.0032833874286432586454030056599708 GT 1 -3831563823.0106307762596766155452443835648928 0.6785803066492056971426301451262887 0.0056478255212364929305590283320199 1.0056638347946401825234901097119225 GT 1 -2261252469477196.9162643096539503698220574702485724 0.3987451654999348595940903817691425 0.0517209968772556984210779993357342 1.0531065129354494498083103091677397 GT 1 -366537609257040632375.4424907411925148321730428657379056 0.4648479654536127714186080216197932 0.0191861492670730908440805957598990 1.0193725920270164804925723350176964 GT 1 -1023929197025973211867320449064685.0052907325665878346079355039961267 0.5770870211787621719936277769383936 0.0392266292857037553154177066358259 1.0400167243432739569299365032063420 GT 1 -27312400864236885998555866006315.2506096952226881353260314446764867 0.5377639652776339572631533750378446 0.0627507233089406237564906683107032 1.0648059951017461879565495652677880 GT 1 -66371670211913787702163360229010.4088823867865038335140853335953495 1.5827021291193678175283820072717262 0.0805133577385395305811355204553444 1.0839397622195074165078090274681670 GT 1 -3237913571345611935.7444003369846435235119448304812819 1.8415237570557195083633447563903828 0.0287427172442766729166050847417567 1.0291638789956011418552226213341124 GT 1 -1732033873659775841270059702.1762968096432142364313912501013731 0.1277397872590434149942321088608277 0.0114116219868678038609784189248621 1.0114772341837090526555667226300893 GT 1 -27565650534474121536002014082.0355822627008148138292932829945363 0.1734168594072574368654346928026449 0.0776483586852704673352576033073733 1.0808287384238247594342185882350441 GT 1 -24535752221.1589898333576504370951056135287833 3.4607312251091864582958680135619197 0.0453171924406549622651876719102221 1.0463761323529891720307608402663206 LT 1 -2536147319323.2808971336412577752853927115563283 3.3861611358294389453872470647368811 0.0400301619937156305239038298603392 1.0408534137572879699072005986625409 LT 1 -227734248039830910547.9111778846891864995680833746282238 0.3792515834413471204952782741581870 0.0540880706842067631442765979535509 1.0556058122389928084484057905637660 GT 1 -420990119877251031201155015337078243.9291422954481546363749406659643722 0.6568421603790359674494257830744820 0.0488449852143410903267432453805934 1.0500782278424448831352105659536247 GT 1 -383906110846518964478471037.8387158257203777914000897482273124 2.4824597332611484259353414336460403 0.0124657228686254072687205190446977 1.0125440717901600902024388245406448 GT 1 -117364687793345101121002810045812374086.1851439101754839496854834727622193 0.2045643442535232907741080826124432 0.0441408888058334976630858537041724 1.0451447500190962627872587035399552 GT 1 -104694842000566121023549369618021673505959.0496421629088111105690954189623393 0.1819061992927819045404715542054073 0.0609547438771357894567915714337964 1.0628916048512806388977221803462533 GT 1 -624.8667002763086129653772754259459488 1.6366894976549006374562207817417102 0.0939620187423094972968209137415647 1.0986740518998760809775499633132599 GT 1 -18334448308155205509.7242601826432138204214917002118930 1.9221262950167999917369635046823725 0.0834045804341363019486180170262078 1.0870891041202717966313642021013843 GT 1 -141538112808532257643153136377739076.6926361590898232482876222620733270 1.7919924880754783772621478386289326 0.0217374575481372326755465318217661 1.0219771966583332348699668560837072 GT 1 -2340311651762913135.0415096907793326954739551069442309 1.2368671534613339694423779775963591 0.0702610979376629228142756969224605 1.0728514827232319782041026953825172 GT 1 -1382091696104918496057452166132630007070853.4728137714785051443629069894538733 0.4853248964817871722045098795244982 0.0371458565027688606070773906359822 1.0378533391981723078837101905031954 GT 1 -108.6554702636205889664402993351704313 1.5434840428888841968203661732385368 0.0692702227276039501987224279584791 1.0717862938116908246840747454248169 GT 1 -2131.3449828032218904610902460066387899 0.5465128529249248416795246124331846 0.0829055141109783041105224524549190 1.0865447739868114420568843507712284 GT 1 -38622056001655740268342016.4555628130883130574332416838410227 0.2664023250762726283586938996671161 0.0524925239501404985550907869945245 1.0539204517665946305758139143077225 GT 1 -11926.1348810925948577481560545759468137 0.0068460707047253216822036762070380 0.0971673896606960417209873449366930 1.1022181133582583288793709480931176 GT 1 -6411171368575843821757143884465988697.2149677118292576325409460189217882 1.1999556955170744528555084432330009 0.0544462171447442359069360796784392 1.0559845095238688689138003355723318 GT 1 -510383369914671837249943.9792194208419532258324052795864321 1.2318114771035953028812784844913967 0.0756687056794718280985056659532700 1.0786847279649275475035109898344373 GT 1 -3111259656360154129597164005707.4932738777142512955390473868353774 1.9701498583956060852912592366549472 0.0280608074204722769325941602783035 1.0284620355531584518501476884262272 GT 1 -1594293588480476186865244562.3688906955994601890174587639544116 0.3605418122075773959894362106228504 0.0431239832176723868992888719199913 1.0440814499634874607006455871902251 GT 1 -244616.4682408596792145313595098516831730 0.9981069986964760248375889346347205 0.0778048366214899637570827561147310 1.0809984038789888413415419844140430 GT 1 -3504872213.0214127060661867781505470973499946 0.7155575312572182605961240219506775 0.0786888938845035753409633624298489 1.0819575081092393973648631350099226 GT 1 -44697253356398794580.9001348191856162488356744534868231 0.7169259617941350661782187721492353 0.0359823336023388255722718779665465 1.0366456584008603945764847382157415 GT 1 -3746707613496039528.7261900598673310457974763017621732 0.2687193710353825707128260478421258 0.0107717198333942458123856175219557 1.0108301548165139539546325456181085 GT 1 -43369.2313041535706960203015335905139086 0.2045572937416006280481737589460829 0.0617327051971221985081457605498209 1.0637204080935916142678999302444361 GT 1 -713799211808026312065896377027.7802214093585351282690874695138673 0.2356731888364526485710922363613481 0.0796248935389135690612453384155596 1.0829739676218393009930026059160819 GT 1 -38266896.7942355211138399571144677979122954 0.2323677173834424230063933309551031 0.0569355095579289616366319187524297 1.0586206100952688312174948431700497 GT 1 -93975281390407074596504583538351199198389.9344717750458154055261316123528441 1.9525382016999079426554193243137195 0.0671549105674477364411873653360683 1.0695161268262746649708267588979495 GT 1 -25162647293838551049489966.1171443883863275742236522011243904 0.2837262048654823696978204300607121 0.0522863429513678866085221492178881 1.0537028718800207313477412075991981 GT 1 -9727773383184668192596142034418751.5831514177898346937034986532570891 0.0179321412483822706870563948882080 0.0224245751006902249322013039355223 1.0226798290770629820594156536393167 GT 1 -446339475885578252073550833282.4749316073366479462034182953316560 3.6555361265676555381264712307403948 0.0477788622254537078130225304551654 1.0489579835870491676393559306214065 LT 1 -141022114161911.7336620380988827760307280498815442 0.1231089011778506592801946308452977 0.0096821631377423102817646742858330 1.0097293400425558555720018153306936 GT 1 -7.7654746205663898074500777282337104 0.1451045595408968030668109531392327 0.0144513149324830971053819175324259 1.0145567522219328731615817468535895 GT 1 -49778114767422930522872403647999632.6152181194090676010540024104632927 2.1495192104441429487472363172877615 0.0219470427985086181525205017801287 1.0221914619455124797777903774032668 GT 1 -30591620.8760889605592546669457508792868933 1.0300776291406097350552755166935074 0.0791565580504626847500333380278288 1.0824652442017373502584219206376333 GT 1 -10342868313848856211337784356148.9317005682286393825474328659777694 0.0268572019257194848317993123812419 0.0182985451095596188395410792722753 1.0184680342735133304902260664895959 GT 1 -292908459103396453653716180.6348033233988011730258631121063125 0.5010895673498649925474592833865312 0.0264116023733089236112963066310561 1.0267666543614512163904484937976670 GT 1 -687872551470178865455559409512748994663242.7093171004452248600712182666596782 1.7384368739208324511713777736983500 0.0606903710215063766466679630484937 1.0626101108061754565576068671170020 GT 1 -3815406025769698819846246802.4565720121788362568449867981339068 1.4451312951299224634144672460970756 0.0984970683027384243296025865204575 1.1036919843226867603110522651115527 GT 1 -5352534203977784987020927355124.2517619063832168340417961882161580 1.0506996971827502707831842775365496 0.0789114157258805826709370595031947 1.0821990646440344661676657367977896 GT 1 -5.7329946392232920640538083806632181 0.1038381117941745884224928372937367 0.0020174818335004645520479761133706 1.0020195196913301222881429680686246 GT 1 -2135234407592960933.9915529124224914797040021631168861 0.5300455870819967244696768830117593 0.0915858801454255138297748885466702 1.0960549252183266021458513709837392 GT 1 -13628281720217491686934283042.4978039610609187225740161561442524 0.4343480966167307183259213903650854 0.0359466139457315829988554776379786 1.0366086061806469284969542491433368 GT 1 -45.4038779048388900112107265900384295 0.6625635017810101154751321749036545 0.0385983409438747162745756318658736 1.0393629978568993693057344060778411 GT 1 -64.9973314679053674658600109864166462 1.3376933010107588062849708960897288 0.0213949335977350585823692757766636 1.0216271229462942118592716215507771 GT 1 -1048205240098526231793025.4978177289188042686151239959382544 0.0341458260793338147507824984652679 0.0058526683307434744070111459075703 1.0058698623139815118302403436862354 GT 1 -38450772688248797.7364619009094831467377050046134426 0.6049563718976034822044622545999419 0.0485209609946401365731779682526592 1.0497376219101712533383782279246166 GT 1 -109135.6716622883593816663953560823075779 1.1704296653185835202887986197181520 0.0917452309033795474264063300338684 1.0962303570312803829780901060391457 GT 1 -83375384146363642415154.5463481606683234440206325783775856 1.7573311196641885793134110358436006 0.0408904848042294240267756703249046 1.0417500133342800433694854030413383 GT 1 -134773219010444687900783.4706354082613694619921444683136573 1.2194712078495275677476994475008223 0.0391153220875430971916808755265096 1.0399008793849426044396457533289794 GT 1 -206964066054862.3957102225162788434647399021612481 2.7248239099329900495813068890837135 0.0576439609125175631499001336611905 1.0593721150002328527782859375119094 GT 1 -68972527513290878591051981146661350699920.5981608101800036856824958361115084 3.3997469931822042526104623646347392 0.0257182603240720946048693488780838 1.0260547567197747509896698568659173 GT 1 -35837667686181914653.4460360582210232549825526800821861 0.4214778931081684690141034060431141 0.0486625021469177181339382837018749 1.0498863920619929546862905622728169 GT 1 -1534.7528851418843369204926177732791063 0.1197851616321197331447274893233561 0.0069622676899990294598850863941876 1.0069866173607939173370093072006112 GT 1 -698240891922111934010289479960166256065112.1805398556101523186184280297524581 0.7648875901599444978586424196592757 0.0572327086672669032319850724625366 1.0589358016353315345849767478800876 GT 1 -304644815108581987705.5768134874586985724663739204343190 0.2601569951976847990002147314211943 0.0362159467205785621448643718358782 1.0368880205867623691365687907768006 GT 1 -1939320354956444473112432137434890785040790.3756537375160747148118195870320761 0.3985474977010087434979579592133175 0.0314144999620448094869771610573706 1.0319185191457547908640484319512919 GT 1 -112783451580806181823377824080837.8902074019398150148574680204805351 1.4641577419217095030999355967104896 0.0759708738752851360145732756607996 1.0790116860572593181189569018466118 GT 1 -51205871736127148085750607301916552281547.5431538279813951489745268767813009 0.1868209103309437368154493608111651 0.0944944061606417173318816408674443 1.0992618240528379103129489780434234 GT 1 -1344973.7478584665688229405873841997038017 4.3541371643070800623142283882238618 0.0847129591603277957843391598090077 1.0885175570662957708953680640078523 LT 1 -11938190043854310351281.0244253806912763838386479395965217 0.4861507555920366561213235513115106 0.0572384899048738935050828539076878 1.0589419338541580308093540674960258 GT 1 -61866249015.8855135072776512200762824951815739 0.0077605108384826033582150996517511 0.0846852424285448686630644250096911 1.0884872755142847307632370514646147 GT 1 -77970067620738347857891608.2713694832078798157600648230820668 6.3978445796524576370774147654259290 0.0648010833642602478201159259290790 1.0669960272555099496022780030624933 LT 1 -70026830741155268875288136488102846046.5191511095037587491780893902396160 0.0739291745282402706650690830393194 0.0941506745792077930114513612579391 1.0988822942523498549716779473756258 GT 1 -878503024986096995658.0146748590304542361658512717777606 0.1460233554612667153423017907917015 0.0279600382664792892423029483788445 1.0283583624722412304310232223087089 GT 1 -15385523357527626520.6418754148444893173569607489114359 0.3710168746221696412627431986032689 0.0953748306174765024846635417603733 1.1002345985552675474997487716110474 GT 1 -145782037045676667963507458053833012845.1839200136944449343313918444919589 1.8509179719015029707487787403931388 0.0236455149707071626105489679491485 1.0239295566366035406881769443969196 GT 1 -23308314272.5109138194592652148796563154632323 1.1796547364887880314532879065517942 0.0825344287957462717868628963404618 1.0861402243304965783472792758642457 GT 1 -17456181894850146614619830490823407.9973634650190606670596737081282772 0.0645502405744540521149960194804224 0.0306204155886759263313924342943463 1.0310990158180817323881062525270766 GT 1 -3831395887773896058771.1726973137835680617610508484383361 1.9357662975242779592168638114837714 0.0280031482574600096575312311392945 1.0284027134749475048184621942859775 GT 1 -166.5302229678694308623858009662480948 3.6598049147042316446470151146523366 0.0150461252504945972944643527615023 1.0151604665719742757728811535948399 GT 1 -108267002572.1201893816315012266786767535140465 1.2096045952614054005266856646451223 0.0615788323417400173680106724397439 1.0635564247166967632743104410504756 GT 1 -2558256945879697516755.2995334279681376064886134207862205 0.0199429285943310808865284463719849 0.0779297803769347649359800811243057 1.0811338982137928742843966922311165 GT 1 -8551138821811695.5216664681730244048902004407154482 0.0762336645248772402486250331541423 0.0774007877940555357766962828877409 1.0805603617435154050844177697023782 GT 1 -257689921850889803513071532136314350405.1151304100704646946968278148550289 1.4678523198283535085368953156842545 0.0646960591065713045571646613949255 1.0668837320431540172410002652955909 GT 1 -4801345402521760772064.1269749794415647760161744228396701 0.4085889049068095582805249314289866 0.0023140712429839246550930868079435 1.0023167528435847020213680556960890 GT 1 -3199908999096194385280673571741590342531.4809673773847580890666027379050687 0.5233924768357470621264131752145052 0.0546202009453854526300740078350831 1.0561685284685813087280229129369717 GT 1 -809709257881756956089932562529590331.5905927681107595523549547619586907 2.8838087993949165086343886492181236 0.0133124002162855676250493421396883 1.0134018045601888974929989196940854 GT 1 -2938376413068473816818.9924650845609852146177242087810076 0.6098980910737817223287874897234819 0.0131633481989993849546741245325689 1.0132507529402760429097842697716788 GT 1 -990814535747752822924946244081140173734.0014237797745958183365288176786620 1.2846613539850536696609095178348342 0.0158534925084385719296539420942809 1.0159805032856624071635808930993196 GT 1 -8387280038571603686801802.5421302793709620675380545226989618 0.1869218688294511446332676076134828 0.0620349916698390509408888908469786 1.0640426352238117040068380269977310 GT 1 -19394591336818006638719125361114712937525245.6509194974087963823223680986441071 0.2675212794897196869258271152551396 0.0674780732084597183723336772666725 1.0698626137550498848636735482726421 GT 1 -198913.7423588687445376120630121377253007 0.6131538495000812250151692484427280 0.0707271429957459713646418157749950 1.0733528728468537727832122872563393 GT 1 -279483707705112801209439471.3879938502147502617765252706338218 0.7807047218348745346212628186299876 0.0135775252300400609353471210753817 1.0136705427504898933819744855930384 GT 1 -3529291.0850597107745496707790870335063303 1.9862036571300169691175545250134677 0.0454380450741306505552239255059444 1.0465027296714804744412976033154524 GT 1 -23600297522.3267895543896538103286408266795311 0.9214404234418133088487245371952337 0.0101345769542329591740278901162982 1.0101862814110870591308574949230178 GT 1 -677578016026466235711247105647597699706.8645305613988152496275739736855486 1.2654951596622142835547392527271130 0.0342158577101464640526171515496554 1.0348149249259360900893764023612718 GT 1 -857480081636578330360947.5334848853447267833207477920184026 2.8831875674937562935131804958888370 0.0410376691911886884327737721451479 1.0419034845272958277850710883635023 GT 1 -53936054.4416071451094125018404632314313498 0.2099751976187752603869952648319838 0.0772428464974753620584539473606837 1.0803891847287113321882606147505577 GT 1 -6111595800.6779571892678525675497388314839080 0.2713592161968453056405275280092159 0.0171893933804267813991886661084066 1.0173388461471408758687527308231021 GT 1 -14492642402477893646191.5461991360235061975201195456207414 1.1330455989617883246734164172152170 0.0850371543378766765931975755580125 1.0888718203647999242136535956603003 GT 1 -11359702584537619462082863886510850.7947410867971822309893682783568987 0.7994723855737314776627061431757198 0.0786005173648948318895928073299938 1.0818615879791701118171617242393586 GT 1 -562155.7766026775714210698819604818087109 1.2305511019785491218833245993806913 0.0259260555804023840814979155322756 1.0262680599259751253399318941688458 GT 1 -186877465093195188022769275314643.3031395229677790264492586192548978 0.5214207467636973039223375497603073 0.0784178718138691942138248479541066 1.0816633813876868692490526037375452 GT 1 -1391959667210.6701223768550382290923571162532021 0.0861848211189138723963779579466828 0.0133192156376895111924572482266915 1.0134087119591912586653337736534119 GT 1 -4609987990577644901429581.9960752699843851744997793739356291 0.8282120578262500174436242991921429 0.0178190773279353366967314949620672 1.0179797486239972738208488489180152 GT 1 -20561152577336094633854517.3112843264698506221553711715262317 0.2812085387028176406382173227603211 0.0273582758026343328181457005286605 1.0277394822849021997948454006105601 GT 1 -126160903938662394136648977807279391020787.1945902407041251757964798817885908 0.2356868798603242255197404601082650 0.0440706408093746146665600390153993 1.0450712607209038121183830471438928 GT 1 -15125664134253309346668269994.0069558542344107762493775337711417 0.2123587074938792769015144142470057 0.0891956329166334596128298154548518 1.0934271500265259544825687479345674 GT 1 -894937972696220062364962953991091812058.4341509316170919954793513775916105 1.9774409579842334093366642493445829 0.0631181530450052608942099031524377 1.0651981018611253708733647335853782 GT 1 -5979758991621439605676837142174.9294940631435724439925366593474167 0.0624037729510669679667503371932967 0.0902961401836633733174858548584664 1.0946361612079318745959254327651072 GT 1 -3297440962694891155.5101954291741657826889628526047000 0.2189919996685278884686740973120797 0.0724296957125197228131016292485909 1.0751866876023360924744406045222250 GT 1 -48505805220855571866.7376044247258830104069050783073518 0.2604302959265100394124475611898524 0.0134585292239348428095129696106092 1.0135499161100303527036381079875427 GT 1 -392588531398208268318493715628887951.3486428584596575524754953229146421 0.4161780551230619213740252339061158 0.0197756328652992138037799598556622 1.0199737874658510753747960495387064 GT 1 -32890105862605679610045415482758594394197.1233131526020781948882037190170309 1.6772689418538716832739594395178232 0.0196982456067662905081538439927279 1.0198948420667325940517006472108061 GT 1 -40944094917387013639.6202686802467404274356142169657772 1.9707117982911835713265306375797483 0.0256363568702088798439095186650166 1.0259706947815338197950281110665312 GT 1 -1523935162390025841.2845178121073403490760751668537465 0.1973628964123284980528890129602565 0.0160370232633117537157536907794770 1.0161670079053250102907274115193294 GT 1 -261555832108332413079324250689542728353079.2458831658031695822740607132785177 1.6857793089686326861451782519694257 0.0123019937614834470087333345724130 1.0123782896602349790841930319821694 GT 1 -78896.0696566070060422878739149579321430 0.6627510960368493305313884711490195 0.0721122617064053538559329085779547 1.0748445251799837505049066526537000 GT 1 -8900007198672644746828035646120935422093.7499301607090250873408655499976510 1.1332635844565604425351691366417384 0.0455724377729264186292527156855412 1.0466435295007202117197196519698056 GT 1 -1502489390665549174306.0380696338627877350862359733410682 0.1222338011074180464728936302027429 0.0684473105441387170000043948146374 1.0709025264437126471785681067772564 GT 1 -19723719860776968873145827645773.5567444952495534093430438445446410 0.0943580437401493895849159139323333 0.0755561716564351050630074614368928 1.0785629889586025985294871743803799 GT 1 -2528756.0247850052551795782415039048902174 1.9242003207404518758180598795971765 0.0784751327709265545873002678989147 1.0817255166378033538550211448132686 GT 1 -23901.4833478570240651748178273113125004 2.0487191481485868350408803174919983 0.0313736427854034864517617488328392 1.0318763377224949449542982284536488 GT 1 -25904997477657335357608318704634337857.6280543524276583244090049133036743 0.1472812019400382057109854225139452 0.0158409431921239700217985832501288 1.0159677518952864534968726479032015 GT 1 -5995348261509872255747666580.4595231393233050805541008564714675 0.2971650591366622213139362504513054 0.0688835987402132477749869502385482 1.0713709813144439003484408324543118 GT 1 -2366539355449975592152108089661.2273517855400778509941943165713227 1.5500694542942580418323948402588318 0.0320472730059025212492169489292235 1.0325720286479633933143173764572091 GT 1 -1088014785795302222433379256199518.7365835069438934128455816893022896 0.9113237731393730557994861809279420 0.0925938406193638367952707423959288 1.0971651238310353837632128624403612 GT 1 -54655088.6333363266648333351656592636240787 0.1547898650084668633089762396478445 0.0831452855365565533461068758497647 1.0868062549775589628610541654238786 GT 1 -22526256844030.8632130131115630570907159463875750 1.2341710230477027428247532387151895 0.0616047622616802704508099301609926 1.0635840565296618932361435505132187 GT 1 -18661289645584469296.1812783002195376394239739063617523 1.2877031310101026677812691275448438 0.0377103611156600341685083571334095 1.0384397937105432774498126767602423 GT 1 -7601945885994.6623013223814636793305653105416081 3.4769782179308114609799827946583823 0.0558983325788826651816778559650405 1.0575214200963884749649333837445713 LT 1 -28836584647211880603609403566377925134.1847407250521222020476634327182813 0.1629825751568250437538971606346558 0.0255429973674871944656954288281406 1.0258748834989551859896380343723631 GT 1 -3666721898301342668641848330435743788227595.5706519538826496888171329030891231 0.9958316172251968895156762032174832 0.0928966000370099281548477807506398 1.0974988332004864510985339357808103 GT 1 -131480433717123264549527178715.3558767063381668403976785550497144 2.3212092481211610161654943746865593 0.0387103270960222693426341432973554 1.0394794868121598297026308806122723 GT 1 -1.1501467947807554017568121412325755 3.7908234985436112943242810732102922 0.0326562703141317794566722704000750 1.0332013868284414058202514054958550 LT 1 -242062.6366975692913214623431230246503172 0.0861896276528685809723839505527931 0.0477528040919253589097515018803768 1.0489306183291773424674745180165955 GT 1 -3824777.5333398144813775560010009630641158 0.1127935303398094826602074828961260 0.0333347486310687509942488585267420 1.0339030157778587497766362645325304 GT 1 -64.5320629325601375443607936662946605 0.1257589156980612732103581596506939 0.0871452031632487273994432265422904 1.0911784506445621036532463394653214 GT 1 -608851190810824652991082910446.4732646054281277853637805777882818 0.1185531695053845930413744581677717 0.0444745019134358096757755097843339 1.0454938300622965766779588012704683 GT 1 -3671223543240402660647819110164349770455.4141040165253438138399680125801920 0.5532643837439092317498620224270617 0.0877047120405668156831455460277976 1.0917915606561777956685296791957059 GT 1 -2369684682408.1573738303612087462174259575670070 0.1467687642716691667290877169421254 0.0615932379869712269238684750696713 1.0635717757725967204802564007990556 GT 1 -3658599967.5276276827711224033361567639095228 0.5773536561364722193144951370525000 0.0702083217376780490738540538048258 1.0727947197954721884366912386699442 GT 1 -112665683391031995908552635270.2401428851862984884355286855055242 2.9542507198428453827912854223029393 0.0446822912054161529374145800963882 1.0457113144608606230925003671887509 GT 1 -137392.0673051985008597195202129955122821 0.5205186701140744218899660488289573 0.0323985848470870427984766594500419 1.0329350377081519029382932147702148 GT 1 -2486906037952354233543612592621.3134154925803653318134453317637653 1.2317375413329995261633326250492522 0.0378672055227632879851142251663480 1.0386027978459467112739464888904338 GT 1 -388919.5823730913654797034649977974224403 0.4420744347364849632169827033994629 0.0369164273144218786155257675140687 1.0376150872676924534030696024999794 GT 1 -1302633712.7681452641502786912629368398895335 1.7139607883514290622913491278994780 0.0006297631327053629095923712880675 1.0006299615168013860888270169815101 GT 1 -4.6365735580189399371319869127145327 0.0052629101069253987538071631011423 0.0313454444952695339295040774193758 1.0318472265182799996925046926053324 GT 1 -20731127918375416514544880082.5190733493813240088184979342280584 0.1165627951384959621195955311712852 0.0291137528279311954864942687980077 1.0295459677366761440511160965471887 GT 1 -1470181732531788323386199721545005600617.7877642005198703073455416595584340 0.1699238140733327923412415798838008 0.0937387319714788171848503264290322 1.0984276392039060971591457459924717 GT 1 -476391108916.9586525810582448361635476401989329 0.6104297258606123433650552428617519 0.0587800817749217760683584515863818 1.0605784597677729928907663914209742 GT 1 -12810626202176550504423220568397611.6484741479461716332281375765501554 0.8219646698236035539421342572420991 0.0580094729540140606257742138564810 1.0597600606707903510192412487772996 GT 1 -34339875185636501267856781356071291345522.7124706081796115588322765430859933 0.3113230527877104824176931436356722 0.0983202789817542254743654523740638 1.1034958984505379570625433082216603 GT 1 -10303046857164787151913826.3295270570308727603892672803968305 2.0640526242426501161288839839295461 0.0176429197667312117485612768817907 1.0178004112312711085374419304542137 GT 1 -2432978371746595563346987515016659.6866019444090818085209411916970567 0.1684761927455974694102356201827013 0.0195524501733395837084401334333233 1.0197461280690974783986896296195700 GT 1 -37745.7200349414110138962922351874698401 0.3328450125407207442604834326273056 0.0810076095886586894822312404238597 1.0844774369530698857558039291417809 GT 1 -1906244537857.9517325847012646686110298700567391 0.2858478427113665807246460060475507 0.0732564135151060135214759531411198 1.0760783574123671907548408942049976 GT 1 -115096980923203688229374347.4410261682724993391612487198230104 1.5302704251878327490357308867868642 0.0962470108583280301357353845068372 1.1011991980273051193408543141323249 GT 1 -1.2856972328076782185814573844301944 1.3301016265194146090757946640257709 0.0332267387183133271718387806903828 1.0337912874636030163019826401313171 GT 1 -65597138307766744840.8482852037475456453515480946138674 0.1493105743892921350900533390029436 0.0811542585336644531503043794884905 1.0846370254856760515362743328610799 GT 1 -13152137976100495397027936649566.4971047650916495749067485309022651 2.8422589148547908280451065117928425 0.0034191317965635957725783266756194 1.0034249903856889052591625335213281 GT 1 -180856218776452453423052725759269.8511238163528806122378672507120734 2.3331231085842044907217782783344682 0.0992323757303642743727256326805192 1.1099689205282712703529568003968263 LT 2 -307029344.0252278922504887507019727936148551 1.5063147500365755723667373215248571 0.0774652094321401890028966605194283 1.0806301904258918444944937561739438 GT 1 -4.6458505571449145851207714533030902 0.0938362311327375257934068714241083 0.0593921408968156589609895523906583 1.0612289540912707878045823595165367 GT 1 -453208928722601124686236931486060877703.7456129484823431896124128634177441 1.0523149231196719266344752534924746 0.0172114782902398101869878180096580 1.0173613175753132410674667932460437 GT 1 -111044181.8164970739573273946227551037355269 1.0841940189226630083626444159017502 0.0096573753197194339572137202861155 1.0097043101916495920215300696903998 GT 1 -88.0980628400577140942606170729250513 0.4774244956181016079301642658432513 0.0832390690143366692645244676991629 1.0869085484741209693907664116852322 GT 1 -8014809079628700251528890314671388.9015003953554704411314180268019918 0.6630399388058631346804477644305593 0.0164229535132501964521676199575758 1.0165593051397727575286557732166445 GT 1 -1030492046557274358164487238079.9621178844758152813219894159695986 0.1533301997068883604599466462013220 0.0450517443348617027589837218470193 1.0460981225189275751254724541137163 GT 1 -1905956.7498444866715958185355920706940156 0.5573952623098470271413914653186330 0.0043053643589257191831473540218355 1.0043146591278956414331436338378943 GT 1 -9148458344845536035348677959048122612070106.6579632899626211834791488060943820 3.2579033885830046939106168524622242 0.0366546257327485485986199864574717 1.0373432873825223720850986475467612 GT 1 -546530186.4583858081322793324306227620968140 0.8160850332151885683153374269628162 0.0981274328851635679467554911276452 1.1032820470434071748228501733755103 GT 1 -679480667608618162833.2278725101179815226322946898267348 1.4577285521293411192067747296771066 0.0226447480885113205485649819815922 1.0229050779734700798484883267258497 GT 1 -19624966856858688892026411790978224742958.5644055717483841069784457177541775 0.5865941084943094982249149161313718 0.0175365370175018774470020274068080 1.0176921237342774381468946114478970 GT 1 -229707098.2052307384469422108748810527670082 0.1329857205627439043964032806359745 0.0178536964406696715715056227419230 1.0180149964302442367152356219585645 GT 1 -998681421783.3499881668902661914180664671674864 0.2624710080141905797603114539585912 0.0116805520307294580655941617027757 1.0117493055893517779305537462435504 GT 1 -31091689592620544272188007801717.5133498539032214628289668407194024 1.5737871342705940919695482530739985 0.0742215484009895762935905359318932 1.0771203260943725006525905164216992 GT 1 -4168920180664.4555218561664179808818041354101113 1.1439056752095083378272389060272105 0.0507825443564940855205832988042993 1.0521173647418469584107297405370420 GT 1 -7958315040444683.1277392211918558291268894553186960 1.3541595933432906812020256671891111 0.0114932752937872772074505536677357 1.0115598334545823552594172636258069 GT 1 -3576474.4934697196616990735018397938024473 0.0623139781222719347885978583250281 0.0267122489591356942601137861327242 1.0270755046069302471529057832014203 GT 1 -6502976126126360.2753995536431896066401682936560120 0.3093673247207240193199209929840701 0.0030184528415103283766449227926847 1.0030230175581908113902485596834006 GT 1 -11306176845363782419.8362853382728628814448544669717628 3.4442315669670663750173394573204381 0.0741009771836960980883727122851316 1.0769900969166352130474038644274927 LT 1 -94094663009.0416494985762003397033763467996928 0.9716723041118915360158352390539478 0.0343707071554298613529485833193508 1.0349752732416289498634217129788321 GT 1 -3310144018747614844095949418243391241781021.0942905103522509823443059299609844 3.9730486142089967123403508290842523 0.0523262499969927574095590453229746 1.0537449815252386923728048300274278 LT 1 -3518812104.0858637229291192887567246769046195 1.0633239284732561847158229210686155 0.0489482079308552210355330008855896 1.0501867572791428018966762890041685 GT 1 -64799047370555380034693006850293214.3029716975082172002685131191689066 0.4203577653324279932857435888776846 0.0830814790612758774726755131531847 1.0867366646115588476428347501993904 GT 1 -147740953.4681178708740997070763389894821350 0.3100574594569705928439256780665134 0.0373095647461474308746980698953710 1.0380233775816816569103106954233419 GT 1 -2625183546131591703020876400113309029307184.1917762833308221792033216244961778 1.1103275572555191802308698745312053 0.0559815130311037638230855101620434 1.0576095293749018266667014901845147 GT 1 -1691332504720528926543748049117523605454345.2841045023320111914794852758498644 0.5642744014150383399726906894914237 0.0397257288171477260906118177673914 1.0405363361756808538125832245766776 GT 1 -7437181958845368.8863313737402950449399037138447996 0.4668328561473078988380384908287489 0.0620907275437994545972615283709275 1.0641020591143652229034292590906827 GT 1 -20848485208985456068289.6386186493692331830964249611478392 1.9961401103228611861519743591196748 0.0288540279640593764471773884357017 1.0292784903355790377107039268748050 GT 1 -4033889510801229285605998745.2803709216021876153815761829692470 2.3059880359068817492359319299925152 0.0662633477893686313564441455717191 1.0685608374585602414592139177331346 GT 1 -1507.2085017777203875384327291505061488 2.3575791364632618858922038097770365 0.0116585116652151410582414499311832 1.0117270049862382856138698568434908 GT 1 -34189297235312619967677331543248285966199.4861295497398448586506743372321324 0.2846936243352631717353399306410135 0.0691672979816889838568771011129077 1.0716757149327492375130373052652375 GT 1 -7966388.3572014433975782246528533328336638 0.2061265492569660529998019065352162 0.0548232607818216810214008092605003 1.0563833433478047571648831896923766 GT 1 -546.2364084794773810486608082298921136 0.0818760237941566016404723704356382 0.0999289817104387574238136507690621 1.1052816095603706883095942018266610 GT 1 -166058290210481255931776213961049334050.5042710634423385975308922595168634 1.1049434069736133944330772438312438 0.0457002839117834722152163665552553 1.0467774890668674300876552354533468 GT 1 -111976930995104391175188338733124.7985524305815701134146711764371445 0.9927811886009026496170124445912857 0.0961480767281741285161767180370130 1.1010897336973807278318887453100374 GT 1 -8441838658.3216801460295715717640351305116330 0.4242471645940269436583003427023004 0.0136333798050500468234772223166374 1.0137271677340397985649728686418548 GT 1 -2316435531882362902626528018545.1285642681982892302000040590401855 0.8322391193903907539753749803206171 0.0878295745646443538798931388974698 1.0919284363709207681037812738975318 GT 1 -135099322988608491282222137671475274507.4912676286541092192281967848427673 0.5181219292950696004826469151695377 0.0398536968421544880458369053137050 1.0406696070090659829014433863055336 GT 1 -7226.1045448538296169979250998068724275 0.5412226425371690439554144854226018 0.0152506759222041552123227510979965 1.0153681635210036187243598239504996 GT 1 -145715.1901054596749123210826326926183880 0.4135617370976493214554174506738267 0.0100100592649900208383963041020016 1.0100604967788507620942734675066052 GT 1 -34791734244657620948125131069406175566.8636912610813271954563661599075313 0.7821362215645568175121317207121235 0.0691806503035757969101291508591534 1.0716900595272450171283473714614688 GT 1 -35916968998913545166097.3056899976730410102050079471656269 0.4368765039068144957694027574328208 0.0737613723514042807701343359991821 1.0766233802894855592962505943802718 GT 1 -697550.3224385498836335632626162166692122 0.2786075294617467644178470029076002 0.0373243886136905007478591645744809 1.0380387760744194207291401762284387 GT 1 -1328497660046937325292638942768915955511.0029250452136998607809093890999849 0.8550639488255319784491268540324598 0.0209722281784781706901743535224541 1.0211952693141188538897264089375550 GT 1 -103319106566791609970805817954064.5479833329383784297337247101289531 0.6118970134254822246525651707514463 0.0341318998641187791652382627670315 1.0347279963947682629556140725437069 GT 1 -20.3078382471184292942389907831102343 1.5565405798107467809966486279097857 0.0740627612504900202767583525485568 1.0769488233612948617907129316131179 GT 1 -1820160255244275.2040881423957360342444243616089465 0.1366570858100355757589439171464139 0.0366489945321469884056960845684294 1.0373374419357142450632369651128460 GT 1 -133182293727548074.1639590860478362359397026779486209 0.7143880716697756678223222217555635 0.0539055744800335316538977656933151 1.0554128993512820843571214305508180 GT 1 -5558262026862085148784.0972767943708919723295902225994342 2.1450403872917158291311589008726659 0.0405186667799768505504309784283234 1.0413624184187570856674513576122379 GT 1 -1620673274337569503598103023259806999548.1311618019593790582304406565492649 0.7213739322887951988896052546038790 0.0983789506688101200673108738772208 1.1035609698884714396811497398352842 GT 1 -503479144995114999.0819127066363009528804623647923708 0.3365798847395181943907356900257678 0.0183408233777059159525925062682004 1.0185111015200234708374066597243929 GT 1 -255613151792576682.6070697186353352477361075840828486 0.1028930170810152071469536726566095 0.0167703967951125079020223404771377 1.0169126121468758127514043014379043 GT 1 -14166251.1222682749521637884298589524331063 1.9469959977930587645028773478299029 0.0925313674083469769580952146479839 1.0970962780777989927030309065609449 GT 1 -976616562900.2232285966560870185544635852793688 0.2570544751397294944469675909985701 0.0519069498892237284918815203237887 1.0533026274186247878599343987233226 GT 1 -4780993651035.5539551022162705478461027813843166 1.4105378181277757501852668298361632 0.0461346992419755045195123639380831 1.0472328116766647967690839205755381 GT 1 -13882674754374524596491171520425387.0808517857485725965822051440572095 0.6089717125907706551278724334972555 0.0032929137237944804677734710294825 1.0032983472956585332012556053518839 GT 1 -355794565.0042801307774149928292041294020992 1.3057755291849512168053511146458992 0.0221934044826373880268445100243710 1.0224433835981579739398252092130187 GT 1 -883.7342431528635381841982345482482203 0.7129001763732141594855539767880484 0.0872564056637016908276620828225404 1.0913002764537084889699020782528654 GT 1 -576.5295265222139775642785443856541010 0.3676180370740159657585823823424608 0.0497177272118617416214603354876360 1.0509962092710323360065698634385497 GT 1 -17.3173152248416223253115633984345859 0.5980300566159895115754365586032284 0.0366140874628503979374002712991673 1.0373012075448389682864464921548183 GT 1 -124023696408683073979493870641142.5112266773586685759895888225936661 0.0636204641489813956684683619398180 0.0853149003387218386843242092775665 1.0891754263166318671394591286081011 GT 1 -64987.4590977389888396666185271716058402 0.1108411040248441179290247898213727 0.0675668886729408391100192896043154 1.0699578605172858940307787454289941 GT 1 -5591.0574585300967985153522327278760015 0.2682735272107556767119763012963277 0.0592667210655995882433230105598695 1.0610956238526807850406519161910950 GT 1 -97441119518796818312127045762055570388.3318835001307495093269089362443335 0.0317306020749170297256419480820170 0.0480876772626921510030348535485806 1.0492823463970624925655013171697214 GT 1 -434575850980908092578.5196936057746344592067382125431773 0.1057547944843062002406900138477673 0.0271532823654834193890671462947164 1.0275287450391784058728388167381566 GT 1 -148980449840840359983419050361440438265447.6198012163620452118710897425926345 0.2285613498646502996446466626108904 0.0485804924626416454501446067941216 1.0498001911607801103818630299608663 GT 1 -74438391731757411.0905120158079441073868407002233587 1.2654024831958237751514713401591217 0.0791498768150884241383783414804525 1.0824579886674826034083004706943779 GT 1 -32535225996675729.3540835094959747974884440688996807 0.0435435297409769319424708474404061 0.0627393871609246916996243432008751 1.0647939000489759816845144480797973 GT 1 -31411356119490871.8494792963708088212264054761941336 0.7305441094874596154132188239779236 0.0888638835073790021612946862707986 1.0930629785116916942569080668642763 GT 1 -13069431720798.6801995048287069113298093590414688 0.0076251992620390246694315470383931 0.0162684029538712408651163808011746 1.0164021863671745189014063390031875 GT 1 -107309549204329133001636905841149.2084252496616935124087276429250988 0.6163335454887951092570108813700200 0.0324988474709157969953888895966317 1.0330386628343782358367582329503412 GT 1 -15111040355731987.8042213941693708853151075827532543 1.6201329998739511381922829920888012 0.0914539914878939699760401919456382 1.0959097501473890348472111380951969 GT 1 -208072.8495511705700188110000720592874305 0.4166887631071868585412359985156916 0.0441803527430930317376622889803122 1.0451860372250043469058374309182037 GT 1 -931427313096414135.1346972020768845264876527572475961 0.1688962226298905979543442566203616 0.0458185759875608563725961862364662 1.0469014536934422888788339137488263 GT 1 -17124704762514252.5209523062339840263683283200382935 0.5646259543574300023444476625991565 0.0329962588356236423355605124304440 1.0335529147003635115254474367095967 GT 1 -3763653676983314124114588514608189.3641170836666011800907415532332081 0.4601449777443864737298919240899726 0.0052993978652719453063319044131162 1.0053134894809058140491960663287806 GT 1 -4202936453034.6902989487631011314478626452513850 1.3464211159673203576714215755458647 0.0721011945335561794562213958390473 1.0748325979754391133555831883684959 GT 1 -853262705006985913144546844157.9643988588324103934540002707705725 2.3130421560981569320525635105981527 0.0815725176530528409280184879688938 1.0850923297062924926450141242405629 GT 1 -10949800174723979917.4946147180962075794399336435469980 1.4360749446181845380090705370287965 0.0994928073614848351437204000946321 1.1047971270148879287570608677439871 GT 1 -926526.1324558794273288402060468313788297 1.5903387612973278939423527756561183 0.0304496929478988066774202156467841 1.0309229159580816810897056983232705 GT 1 -98425029068273800872897622.4281897239032053610418305056212321 0.4473822585803551062379420086074493 0.0878280378469522036409887423941673 1.0919267516896870201031229511163279 GT 1 -671053.7091377721013703830941576004359928 0.7605523960049826839565104942845924 0.0774832021451705867463833001945638 1.0806496941765120099121281687144063 GT 1 -11978002931.3629884729510982613744078160791508 2.3291818852872748904483321041112494 0.0439394228294533896123975842394498 1.0449340026970703144541392575459934 GT 1 -3980547305461605373092106897281839096967824.1224933777414263080715990944559489 0.2032772442806457094412380161281684 0.0764819368000778178363855147808807 1.0795649200323162605462682773485692 GT 1 -4138484198685080977480989829.4247315692229084699958841720734737 2.8818543644558535204278031090273099 0.0364147406293519473793675313461553 1.0370943058152067296730320765231241 GT 1 -2648502885396162763142917125120669891.1731244058006835994316695146044029 0.9762430042460336514631427301750099 0.0254437305144182038628179824336959 1.0257730197973838296987974507842034 GT 1 -5911966880522632114737155115552894.2158669734306472072027803468980207 0.0829847446325486899525714116338381 0.0467255066456298298056567938350221 1.0478523859987756157541265072959160 GT 1 -1208660657281.0695816702340988033914499332922991 0.8533614292294538837008890316923054 0.0402012982342933646182635131412163 1.0410317021680891823859918984569406 GT 1 -1.6861932463805032509510768474312673 0.4239258475256201550228190966930753 0.0266353848558852275287997149042266 1.0269965340576677203060854880517722 GT 1 -167583209086625723542246.9297310758334414371072667357303420 0.1537136352745869667419898329666624 0.0980308096427293177841608029347603 1.1031749165347287760793792901030889 GT 1 -796343782832619455958611606071514893.4218218447503327165137040015970082 1.8924534227339549761345451299255446 0.0707555592011602962169856417666829 1.0733834522828914456819417455964470 GT 1 -6280.7141660730274127866053950621576687 0.6229535640670519242583867333628706 0.0366641410546946359688074765715936 1.0373531648046741401205186480337091 GT 1 -5017485708191993884112461840624894267908.6756630078975229602669216843930498 0.3266742617421179243179445360584594 0.0730049080436276653356767471237927 1.0758070079757432158775366262875665 GT 1 -26962539657.8086958320053602663028759476182890 1.0632062119150851211783399844764059 0.0207574839006277955662500497110468 1.0209759489475323165631600919682743 GT 1 -246729.0899501210116755279391216357874961 0.0856216266393358369792592334841305 0.0997686592921100088113313786354956 1.1051035034573027146992231227141832 GT 1 -1110445.2496477937266505348324007480018900 0.3495278911523278637075837630229082 0.0380153170577227937753340121767757 1.0387567505406134424775105961480510 GT 1 -567282884148922455189098462199.1634755385502345428219340040739192 1.0489239065877117278653160295084569 0.0619271074397497284760468709963320 1.0639276223766223779505133761719696 GT 1 -998557012083112392194.9618319719023104282439769038166963 0.0481231057781822444961058571474258 0.0166446428808180628232759504237208 1.0167847214968373571218251738067833 GT 1 -96981077743040628798037825004453670660.5412992328707947365911253012615015 0.2729675115831093777546050573299862 0.0461530048527549843973334949768305 1.0472520028417260411014895590235203 GT 1 -2352874716165969912026980674794520659461246.6962209730741370162048771173429920 0.3991904523449233535095889871515186 0.0892851111809365071117325674224196 1.0935253957783455690264341409883740 GT 1 -28240839712.4555940585945401523209564433680524 0.2114056696333990777109666311756001 0.0614274211813542011815176209306000 1.0633950910297855192380734380132007 GT 1 -192453301417.8975389756580409068080563357407202 0.7171423824526567521429992710406965 0.0085366781066829011942151122451034 1.0085733242498283481159734307317933 GT 1 -1.8989484966239812586275163834771552 3.9232956050621025557433280711360928 0.0097358176506660382569716481692326 1.0097835205939457056663663946186089 GT 1 -560427546638147075459430974008222631856074.0510290777701908389681459170121023 0.1776114420406144878314486719879673 0.0378042193481870677165579432906641 1.0385373348315605223407770449867473 GT 1 -5460177544296304.1184962921116773788561601008315326 2.2065620179327498822683355431639947 0.0630424299302039751701682015522868 1.0651172805120230714643990993229404 GT 1 -154375208559469804645262120620933907316.0287123078375328012265290551646930 0.9058867230256141872807195591716819 0.0053999273382827904770337172937137 1.0054145596452807485041290119932539 GT 1 -1.1538055025327781109027531747449819 0.6891812543308586426895407263680935 0.0745738391630251472347735823408787 1.0775009331476628246763999159792148 GT 1 -255178.0416850054615184045813168838173270 3.0316704476481969207970827514364563 0.0762218716649169777110411102541040 1.0792833570235571138068851115258953 LT 1 -336759002957.4692761318162679616621729108533624 1.4480117817081694038761896503833355 0.0556130127894749117662547634583843 1.0572192527618070178096286498449413 GT 1 -791565523876948440668569942.4241458227192633886268180163461164 0.9115282893760749966325514352261763 0.0903510675074928937690700912816304 1.0946965423765303005648883038180862 GT 1 -23428888315485814.5809619077236435183178021754382171 0.1091044825095156600410525191890353 0.0454116281981215189567567560209084 1.0464750557103041477649856234653639 GT 1 -7982316912043.2956882756178097512812833836497485 2.1051045091001879187755951351959005 0.0428791275162861080697167214753928 1.0438255919690516088634161072442343 GT 1 -398216424992407672480987658011161695.9966799596031945468500864372898698 1.2851792964747360374203739457311998 0.0382779283777279565308340069622498 1.0390297768956058235287411305533085 GT 1 -102594435032327324909807639511510560782.2590278081948487534033532828641757 0.8573054078039961243264780962367068 0.0181861243918677171164588615843252 1.0183535246324949446595567599374634 GT 1 -1324645923599.4544864644121564794791647340677132 1.7836977710545878782155466623380086 0.0627073042800949859887658812928264 1.0647596701546471815351744022507904 GT 1 -1400547474223507845460924748200694981.0829698819217475567469219344308439 0.6156191999180789195156812125197138 0.0000258757144748487906241721757629 1.0000258760492569237452822805767673 GT 1 -262219541857296846132226837.7355234846084243084743206056372253 0.5389199147721295109541514254772250 0.0713311704824096581203638429167728 1.0740030843280064421742525202960161 GT 1 -205760671964329568.6135672876425973056340162917772294 1.3877596602891975184679955349036102 0.0440549068010912794206408376368375 1.0450548014724798107594908285294296 GT 1 -255597106357467476534975084887095.1459646070647014587656300707320411 1.4339425824531580951551773116539971 0.0121251625177141170677853352103346 1.0121992719694384881795097438004404 GT 1 -208266831839104316.8428747200319099492920083787902566 1.7733020192195178248321897520594836 0.0384924279418313452792864658578797 1.0392528387288066709416754043071791 GT 1 -2284942935906955834627986.3297524581897356183445415236925464 0.3456728840263220776891454569181015 0.0345578026732165980026909609473784 1.0351690470292120921007506372258546 GT 1 -118230030695480742.6017983254882157672701896915866834 1.0381658021255892195570878885403983 0.0681253381137079207235243634984220 1.0705569562948114620898672834708711 GT 1 -1016500177777809287790489721627887380709646.7812689658681682703293597844339971 0.0009957515992970909645495631962463 0.0819520142193847577069519642014599 1.0855056176356113246863268346406622 GT 1 -2644471683873576572330215055829896530360.4234398878523266790500195223956776 0.8991934325739866267938005726752047 0.0163118738202421890130368788324172 1.0164463771068167394520034414478538 GT 1 -405230214699271696066309136.7312669638633541937420559024953489 0.7643324915750506924749774390104980 0.0173852135635887639710055230491410 1.0175381110843924008966061413065627 GT 1 -793085602892320713511026692098273442358.1398826356730820490248082671028000 0.3603908976278932151002648644541918 0.0365213604670564658310842347764505 1.0372049610330995800459353478451945 GT 1 -4512485869153354094.7920792508159516234035710181000784 0.2211902046005265957355687554174962 0.0240835844828171777560269936411970 1.0243783360752969793915720862196395 GT 1 -686532139932747093780979780.3001271960919665831071597286010646 1.9155832432078460871115175738879639 0.0186385934044200358100435094786551 1.0188144809461422480988072481392998 GT 1 -2488240469369.7545079358451534721164308620118486 1.1992203453531536755002396640763592 0.0898939924922944719777450137711180 1.0941941944891709130216608899000025 GT 1 -185208.7609940175462758358035168725975809 1.5922086991703159097606014382256269 0.0600038664223307098950270584094258 1.0618795169417922008805866855574039 GT 1 -522629046252018864374417237625101.8864681264594012262168268129025404 0.0071008413120167610711217566293101 0.0660293188484703850611480367617765 1.0683102318760445148824342798138855 GT 1 -147228995572367147247414495086921806.8380126210603581359596983088244677 0.3427059707643105206945195269867276 0.0834044652025794181383752129153570 1.0870889784033554988053551107026214 GT 1 -144203871331500277667769409122814923.1378392978553782442507819406343280 2.2538916299229330997503808041626877 0.0244716521314014690166391792303360 1.0247760595066550818558519324878392 GT 1 -28961981.3807341139566289828259825646580484 0.4990735573952028006211185138034081 0.0949320507419000809407156038969691 1.0997452560475781222116897162751096 GT 1 -176982904330546260.1929910117790314772377289786240424 0.6470236798481189273916659326989170 0.0648648534608504735304307149933244 1.0670642183855016550835176087542280 GT 1 -38344189406840393256141001089441252.7892561238744277351502478549312717 0.3538982019985044228832048127338389 0.0907587091933687287341190129618673 1.0951447735973913695193547677019553 GT 1 -4968.3533863112332705734250647384637614 1.4330345792193051036604259649319561 0.0383460584582614718760326338888119 1.0391006211612051789429508750072241 GT 1 -2363568958205695676300058651943745928.3139990085152007849091160214409843 1.8198706345619302258394007109607850 0.0588514821513869787616084498816480 1.0606543220433308799397143904363463 GT 1 -24455195.3007742864781964532197128342373791 0.0045072311425986616655121218786823 0.0687799653733970162173165706847239 1.0712596873882485762618173348192158 GT 1 -371814312490115947363607434308414.7965447500200282982515300327304021 2.5260356688463640741008841395450229 0.0915877365234677181752725698185544 1.1006704393810596039294220048542434 LT 2 -94574866337886202342.6692208305030166672566056592498902 1.0700783790419989103302048668939488 0.0448466547379820984428152709922755 1.0458833804365501953084923960376921 GT 1 -67980.6728002490763045472097087156942904 1.0670269704870240489847444786736580 0.0109323090459314424879444797440957 1.0109925058653299283642621945797942 GT 1 -50.8744302752339450794033423286525168 1.0939138605828441021436373763392084 0.0856748888382126470826503956830886 1.0895690692848439543733141781975791 GT 1 -82743770697714961104489116772.6150394376815940528869666552364171 0.8593297476536300453574087514795279 0.0609223321395932494643747520709643 1.0628570898180718260590019025165016 GT 1 -7.1621678533322055216271239402138019 0.5469435555935502290184849000048834 0.0475821544852363998016708404809098 1.0487514271292190530452376410818546 GT 1 -156406685.4187941361178321981250279556133773 1.1968033425563090577040041247359963 0.0538451962073795003795594261950014 1.0553490829451351452091847179685511 GT 1 -216693057487815442348910.7972323571675868723663544381959951 1.3516312954595180921939710512224385 0.0593567057970424673738582310376922 1.0611912822474926638117981019217292 GT 1 -29166198394357.9470016904131394835952313682387023 0.2134619429700454582086939229850362 0.0208544756616434518404260701932523 1.0210750015960291685741688990083959 GT 1 -102723881783945435320549155930729.5233050901027633277891914793821256 0.5995954167731790504646385276719158 0.0984080286578905760919074851534190 1.1035932211962754606185002434046246 GT 1 -9572411023102.6103667497070754884718958253585786 1.5463258745929435906401857341224570 0.0878439253722791051332392362440419 1.0919441690894166635238872814180797 GT 1 -2351126816371214388214214608307446694.0487121432192400563849196884935589 4.1263445040161956651284902372996189 0.0603062318719206242337808354147649 1.0622012353826089551319150400084351 LT 1 -1402427124257.2081965125956404126302192625643973 0.3803943983155157706168580786285934 0.0367183157064806239257650730650873 1.0374094029013222102659490652913350 GT 1 -3304536671290.1822637645049049503672547034774506 0.5746761913438987118442595703303535 0.0669258190850700593390655005611839 1.0692705733479763970570448002751233 GT 1 -24.2360523108673358102627275197513831 0.7142584322165138026263064279621204 0.0895390995701991074788018420297502 1.0938043237021722576679676129097930 GT 1 -12978824002304365939527631787727.5711508963375170784112406191831103 0.6313869017973243235228633076144744 0.0118131608992797296989470154664232 1.0118834907114702905510763714519039 GT 1 -28006018265509345144698769463.2363743620381516959397755898707804 2.2300924711671139693706919357782019 0.0586705490814723794174485673341229 1.0604620934239540001958335262064673 GT 1 -254097106163386685465765.8010363677361938206155973652258239 0.1670938007575675401306197548428845 0.0648478429027575688694304865216730 1.0670460280699706667150665038712165 GT 1 -5477697748805763368952060041868587293.6563911896847651906916409915855928 0.5463932483646434041973193470760180 0.0607765359824672955874636492967181 1.0627018472374819967592535071198263 GT 1 -627012204.4495960273328445246886281222412432 0.6921780503010570910913604451826190 0.0569974640433743569608346750494236 1.0586863071087901123012287857388289 GT 1 -197517367698579643069898843995539180235.6905427129583753535800085080567163 0.6570741702446964632285491060181376 0.0408809188984789533884665901939408 1.0417400396473388573582623846706563 GT 1 -160671278592189558996381163037776.3468262997742485068734447444327499 1.9333128960794258950344819164921574 0.0043688110066450307076973785098956 1.0043783821479618614571100677885844 GT 1 -4391728127349791113843787911.7816774984668474430093525784188170 2.4590808045960980656392046591218021 0.0500065730530872010694030729633819 1.0513002134147366321578003951978750 GT 1 -5105129195898374991024628813893028162143.4571952074207577251022885144951749 0.9165923198327674719128310362454137 0.0325225046490507211842431229932895 1.0330631149679064499836343795326924 GT 1 -3999800882018777.6920854903536887941185926358238236 0.9716143051083988868053409839969626 0.0769729179086029486836250686352545 1.0800967035322730963112903253525047 GT 1 -1019560016416035261708537414856041218.9134761615613966319482155522234375 1.1490392750341706684598018703222747 0.0842296453709266623207472685076544 1.0879896502930602026471985777424539 GT 1 -3719518514550337178227522422870446.8744806772384184099009577980260921 0.5204506840890458087122425339597904 0.0142766769249363055776851427429729 1.0143795691571074126287690813273129 GT 1 -140030863518782110534813313730699015.8204043655850911530302395555789280 0.6275215989958173992447553018314164 0.0644812804437566846602416092410011 1.0666541232530759738756022012726613 GT 1 -1465597888894.2146711093858679281320431435941154 0.4324869923818251273030326738918942 0.0739913296610030290967769960599846 1.0768716811627329479589290259005912 GT 1 -599579249994286488.6990059187115202888571018497127184 2.9624530466387556949344079900032920 0.0039935444401476888165522044851904 1.0040015399327480634900841000985509 GT 1 -2669268803766027.9627859864246250888337963195859712 0.1349907240301042893975374858800346 0.0065347319719598869124603816583000 1.0065561768081569391284478138231890 GT 1 -2364002231592046418141719835901.3161545527088787425265891018477386 2.4964558126786256902937510093742993 0.0306805369957138881426172968397731 1.0311610382419720001382175047203042 GT 1 -8122098411613122340860504087940800.3199726894543626521317033255469082 0.7754739995465880314371501621302062 0.0845768282474037299348903604191409 1.0883688378290963333728472828744587 GT 1 -306615689531277976945328841787238565032837.3763906806225411630100273561915643 0.4180967936034230536747567332192965 0.0480264573457843868074803892178141 1.0492180359065633424949768068657499 GT 1 -31946351087417444398610283482154196.5551031931334833758975581809587488 0.0243736206657349266380210431884554 0.0322887111756001202834296455663987 1.0328214915392261620471203084118243 GT 1 -12170516269434647583240.7268791279160163540279126503659005 0.1921035510101949253671408277294431 0.0659448260287903901192080883290647 1.0682197697237076959681528665616326 GT 1 -360971971968028175485393.6362964683545775166121728332305085 0.6806189110020814476274054491827781 0.0064824816728151328000207075325130 1.0065035842044206563073610857623117 GT 1 -61572.8873161784243374344578752801625206 0.2481916025067386467222966384511874 0.0905801107740564920627838093274573 1.0949483671178918018835283944574343 GT 1 -2286036062267375.7033598645290901071978713747718983 0.3048727090029689663416062541539947 0.0867809240766410270327789046452558 1.0907794754476942011126686441219106 GT 1 -1226022787.9896247022725652126503421166818854 0.1192882664720417891925473183958377 0.0370104037275054569525769270863902 1.0377126706977227779107381693975473 GT 1 -12983748271636844425595699603739961807193.1296392244362978731832096066613460 0.6291538926109997385055281967247496 0.0268999386953292027054228232826850 1.0272683641548423212187580847301899 GT 1 -6093974657066278592140517.4142595510311177991233271457559007 2.0875516008215968225394088503035544 0.0889156952472746963477794733832334 1.0931198451116985664506492042327030 GT 1 -374525470729903026650823.0154004820976659715358457624163864 0.3805109972693748349933121650965741 0.0751856834056040080491751586537548 1.0781623004373140900525488228180491 GT 1 -48118.3151260448708200408846728533721581 1.7991905142936843396819831108389732 0.0217917623510034754369767413159469 1.0220327096804877381593145123835798 GT 1 -50738138775462872472115833806796455.4534458582946984878050981318890816 0.2989978812223232713632511874453543 0.0643794573725210783166066330229861 1.0665452878783991769557994344477400 GT 1 -422460622597958971180291062580166515.7776385151837774767169765876618997 0.0689253887688485448279775893141524 0.0608581476300102214989716239649432 1.0627887436967407694424094048341682 GT 1 -2028767713723986005201765819096.5690113040450086441200390539581486 0.9457443682640177804122476981034991 0.0026383030841354615598742004702733 1.0026417895392843765050565281063339 GT 1 -55269165356780241757252432165260.5222375073483953160658629621425811 1.7864920558965678117583476631182295 0.0111550773040607944582496973433095 1.0112177617816266566901577705922146 GT 1 -604281871013285725946664501437173635364858.0633365507568943056067500976910140 0.0064278743220622271370612713454725 0.0657562670269113192150429094216073 1.0680179187224375757923333774502621 GT 1 -27009965983817684381365558215615226404193.7119184301767616421120739034265784 1.9579516119013905631973255605600780 0.0445313189595843393158525024719681 1.0455532934000564306068938082795575 GT 1 -106310250.3717607727230364720040003984034162 0.3561605216619683865392763184504210 0.0542315584641907295731184068473992 1.0557575162820966206423515185050075 GT 1 -208127474612122195415678633.5416749965009490200192542484863621 0.0892659267281574120398555268433831 0.0176125969774392821117643764484371 1.0177695443276581883556596947216045 GT 1 -675147876998792352502.3775299243083411949408111870930575 2.5652044677648359644381866289959005 0.0867999619123862838858808122035098 1.0949226719124666027430503515479412 LT 2 -264176139.1827392602740320007764787999380866 0.1834328512850845076988354602147898 0.0753673543535425007123594036809190 1.0783587601922915399762286146283384 GT 1 -792868401948723776927171259105.5607640682222228137776932108505151 0.2733287352737889932593641949926216 0.0521457782663043782360758149237123 1.0535545630941475994569780917453739 GT 1 -211014506003698564937909051955.7501567370814576488723696040017807 2.3801059408506757528294264286670166 0.0938649437814152098565873922948430 1.1034246337781105932778264934914966 LT 2 -362806767507728654990324488.8588825716625958185458051038639566 0.4303728915233859840039358433576455 0.0386085275859332002981063574360734 1.0393735935282608438399134821593234 GT 1 -215504504773174644624.8581150167130647985849814190883717 1.7173512369035060862522234686584770 0.0520145198638418751745876526213397 1.0534160931564806416324118861083393 GT 1 -574478051591813076408367054369936105821.8912929303730083825075619337849586 0.0171364653410320082947163256591048 0.0304081365206195726710875532651487 1.0308800553283484770507691717834459 GT 1 -9072700078839403832639650983897.9511425142740581878868720824858711 0.3303784803924538843500397402830686 0.0003326409875128907141204549304767 1.0003326963247981505307839258562879 GT 1 -2936437472134097747038372171.7341358032374620589450625431996627 0.7086957591927040785736875574073739 0.0711463590449817617737900679721391 1.0738040972998810828156846340862969 GT 1 -38464631.9580117701674376151733911092965574 2.0613772547074125022456549807022536 0.0333364013546310082393222935851796 1.0339047254958534359087741517809557 GT 1 -58870262846445068386419259463674313960.9613606812925069496911305813835489 0.0816172050667564090348816158413541 0.0162106965213975929426430310853532 1.0163435273384701177816239192701420 GT 1 -1424243337103700354598972739293638.7383442352694401040250551323316381 2.7144355243967584602628798235695536 0.0056236385173621454830276112072072 1.0056395107067235304051941330238409 GT 1 -345648186626992451581552359070.0232533567851356359451667746457752 0.5666787029986320403327356790389328 0.0143937627935283492903119043206003 1.0144983578884172632335169753159655 GT 1 -152812425111475931281687393.9772196770646621968851341962296096 0.6559015644999644786491398586635383 0.0467420271022933764438330171693911 1.0478697163689176323422491052299999 GT 1 -3364492093117812238217168413.9845090494328130209076558257162183 1.1105425641112006753798635931174070 0.0789673598247481376650604043911408 1.0822598034251116738648527730501235 GT 1 -254076872229623942710818196650390.1553724397676780319847241511879891 2.3487192855461490580812869530971683 0.0750212583558886542659736858416828 1.0779845237401683257355769509281482 GT 1 -14857265711582354567901.7889484354931686373811114081356934 0.0875099945462482681801197196205217 0.0234240130469255861917563375457294 1.0237027160727338522253709552075260 GT 1 -9375808796665848951147787645.5105486891310008280070996934520181 1.3885603560261577704961848043649490 0.0652473476926578576942560720069477 1.0674733276779182279969927211274751 GT 1 -248530058.0006507333228519028372836092331756 0.4474617338302915609487723053989388 0.0321936782971634814950317369108982 1.0327232926099101752645764569245055 GT 1 -21446734386343343664176676131.0717215521025468127918117073343867 0.3475387368680545796401999550076770 0.0564668312307778160535354825545811 1.0581237597631332720764326270055448 GT 1 -1986548504820105082433249047.6469929216385302605522195880251060 0.4236017883143412865662511672211210 0.0414490137765248018218119962144600 1.0423325241464653061700524191512713 GT 1 -17343764265237041976443.1647945820147552057166160513885845 0.1078667528607287354394785518077981 0.0872035537349911821098480605423490 1.0912423736659856115561898006098427 GT 1 -393452343627030867997219875.6780728887718433556719479695937944 0.1603600948365273526862596498677491 0.0271103894475613043079948449710782 1.0274846559020145528511160712825121 GT 1 -3147012654838240.4307108259369007001567917833497512 1.2883464997185383171007187274796501 0.0871360315600312623761034388485186 1.0911684035295387204583239663670365 GT 1 -99245.4258621629501769751158068213925458 0.5160240432173591997572852959323830 0.0544796900427963748843296585278268 1.0560199104615506420140149983067383 GT 1 -4544957010491700982985587224.0809424306809129463746784599093356 1.2226360832435638073433966215978282 0.0757558671296805667971551011181695 1.0787790291754610920138893361356380 GT 1 -249705301886100736470315.9866510354556270198120014751641671 0.2250177269495169528141849027775843 0.0160329245528751227839317489185783 1.0161628424011374112274319990535527 GT 1 -609687.6821462346020925816836424329779780 0.1371959214616722413040625955317584 0.0046930328067744658384255029782683 1.0047040796609539635624795473143442 GT 1 -1269267.3954628063984566259072652747900593 1.5178609978998945605854435667800179 0.0230717409764851649906368994904718 1.0233420594988007424952934983076489 GT 1 -301390195272759643954453598877.2025249708415986149886442147772834 0.3338430345399594336752656401533218 0.0857884103435302126623821302409995 1.0896932357895825415778852942124014 GT 1 -28613067146589303630.2111839410951124485326433711841574 0.6770443049296205939038223192518565 0.0763367426911920425186684534083613 1.0794077139068831471311126265957761 GT 1 -938087938949234182.6655423003441112741939809337487075 0.1253140452248584152863295978869263 0.0272073782226876224923377140257321 1.0275843523206743647940622773765466 GT 1 -2.6129948514847267571465531407715659 1.1588412292668628893444554751323433 0.0035137063170877672424253542296482 1.0035198938815707443996710267425173 GT 1 -454481747076714.3354417143652862404024121484681250 1.9304840780257764825138879117349608 0.0825894561076992362334640475222641 1.0862002036517343673374468430242173 GT 1 -20748983148845024260.7444960868812804279711471233450059 0.3765611642861500007607028635528583 0.0756793184578512356038884678002528 1.0786962096050827439631428788202667 GT 1 -11224592108980846217.5656641861048235932628235844633695 1.0199611524438807832245630284383884 0.0549920962227741443374659575937060 1.0565619877379463705642824018299811 GT 1 -1983034691874897906528202168217627473034.5961897400217121882854133504759626 0.9208202677366648024724076639301598 0.0287232799005533858429091344672374 1.0291438666368003523261940510492719 GT 1 -821748878194978270503881041076312.1954326455168513384676856305436678 0.1424612266307020067049762751092124 0.0325121025832377120864962185540306 1.0330523632864014587997694096067979 GT 1 -3848016638906422914015641241813243.7533874320872462688270763727224294 0.8852488652527565893085369026955318 0.0399793122437449080618614836517019 1.0408004450063485181330646964496189 GT 1 -28612839536281535.4463111620956790689083743303470961 0.0925035705658550722442277152061697 0.0385479201048225089913037179186484 1.0393105540978735139821846596848659 GT 1 -214108983113014612096692.3612814343480366960409643742588407 0.6836234367809524378089436929008811 0.0139005550287762650479067218120740 1.0139980724964370113807229786266479 GT 1 -60162877302127322520634557813814228.2382111110685582937012847316353194 2.2885974016275518893383906716857389 0.0988485610434334373544122248276714 1.1094984836041878371337958012835292 GT 2 -75463679698376449681940.4489966407850218122932630394546804 0.1213338166338138961725930372183765 0.0729723520309729000263686327992936 1.0757718886517381377135311966043725 GT 1 -87.3939746269348137082217163396038522 0.6240605389209764268738237226435121 0.0813143607046891160113884227650339 1.0848112833765681651210208706979678 GT 1 -4872401313407.5370264649999550409686868470289172 0.7734786844407937685653245123919695 0.0047147233576625079106514033851467 1.0047258727237533103646805421155644 GT 1 -68.6550891384340580892964702646536921 0.7341162236895424091018703232487456 0.0925233962313393652350564865846851 1.0970874941466390108700278962378597 GT 1 -1033015941732.0422933994487565930697469824054673 0.1184378314506579246877988595011390 0.0932444742597044288696952808181733 1.0978824068313021010496845047684651 GT 1 -965.9294168033008108997763645698304198 0.5679351820885285076877247530851755 0.0227796719071617512862930585463784 1.0230431374276503481725075471241098 GT 1 -689104.5462782734996078737964577700135291 1.9654279256607506959691933171252542 0.0787822680552319646859030134520628 1.0820588624749128524109325708872258 GT 1 -20.5510166597991808175326388768534746 1.4626047667361840272859625422081165 0.0597495834185089192374870154223293 1.0616090385778239076514663204421951 GT 1 -5758999416388617334865112142296103996.6414110215682067310738364913591128 0.7877078464085910911410617455109782 0.0520445027926196771542759897163136 1.0534477217030847785164333952797973 GT 1 -40732512.3928470287265384724658221701048111 0.1794790831458066835777418305752954 0.0751127171196425388752492377402307 1.0780834052403590386884304650175656 GT 1 -82696906287774.1364194679761110178850312546833074 0.2540644681576600769421836995556793 0.0494148164422362961713625507233923 1.0506775013346339218031305427064230 GT 1 -12826532867128763951143919468006758558493.4247659934267086555795235262505593 0.6003465519352887756682924481727690 0.0433785420086134021696579962291654 1.0443475164681979860344963684631353 GT 1 -810315915806995836456027035558194.3781855726662146597105311246787247 0.3413619540758854236354961899016555 0.0455946531365523913393610588457362 1.0466668058844426197792285547522556 GT 1 -14337196637556.7316174384722661730073355727752630 0.0265706678502805272315196857143378 0.0397445415743355328390458777941383 1.0405559273925189740790782283767718 GT 1 -93907.9128100483944798480804210620846902 0.5325369061274607398615153682538593 0.0864314885391842380102669809800704 1.0903969071139350901976469542752134 GT 1 -8.2448059668568834182442760928198512 1.8312355472778100447085508884832519 0.0988298847231443752103876338046529 1.1040612320071141245047605787203528 GT 1 -44467736483897991217999826880116.9757700901496448287380433072909202 1.2984244172834944918278585025252372 0.0648683289704758490823859362949833 1.0670679349778003920914451569595472 GT 1 -116.6992874961001177029396132238708256 1.0031024404671313526332506327300801 0.0512490162339952546282351711860998 1.0526089133653200751170346509151368 GT 1 -20728918460795762388.6876230862045924696324870673628876 2.3555942729673032886709791256492957 0.0208650024958476703757366441341099 1.0210857526953603465544005736473127 GT 1 -207825601238553591072419856733059.5284995664457473116079912481957158 4.5015097030954735458042467073691073 0.0739014991947663958814790636414718 1.0767746776332324647764556504887345 LT 1 -152116086642818205952104486.8080498291481246594589440572619724 0.9112792021325554163829638577109200 0.0106569300891925025372375742646073 1.0107141218573527462954802132900349 GT 1 -40904685655958404643445980563.5358224035258429049751761280171913 0.2887392908378475170188569489929048 0.0514774482452904877771254101902964 1.0528497136591336262873873225316991 GT 1 -1257683573633648411000.1880854539448661485766333369187928 0.1337325367319876063823953142833586 0.0841773356164224267124138394390605 1.0879325308850088919109008622014302 GT 1 -14907911035314147634022615627114.5326158067365402448374771225833127 0.7360241663586201156970919846138514 0.0263670163380832638064258100248942 1.0267208598404358954318583617460832 GT 1 -74153972563.3665320083364280944322394453301446 0.8303234069770709991083437965185133 0.0192537475366550988306506624246349 1.0194415149924648697441205947868649 GT 1 -3268729822540611294566408002764.6979143536338487329157810330027059 0.5796248752681989694380770472218607 0.0351435304456867850343787617328141 1.0357759249186255298011202790145593 GT 1 -709662609637.6465392861825646688737976326852491 0.1770535649702962976873957287216113 0.0343394639835208206526525367223468 1.0349429185205043722695789623972808 GT 1 -104909187740389567047227242970895349.6995986306964570290317029645306072 0.3775812784333744025969923838449732 0.0257059179349588366807326969622951 1.0260420886070169979062953969564459 GT 1 -86546906039393298584059795209905.2989398756046845485765685612044398 0.1067356853242970726580109781093378 0.0122282995103825793685253426654579 1.0123036803145344987795437838801302 GT 1 -128424359287871121716871396418079699.5727924784711041476293871296556653 0.6774419552220179873789756377445697 0.0169195993672957016684151466802433 1.0170643710985958910776298067604230 GT 1 -675479261073.3311864907922690862343714932204337 1.4829544522007505797590692988801565 0.0855864713353912818144559320856271 1.0894723714834581267922858298402657 GT 1 -306522880622416722480.2642452600029894855897271670486029 0.4736334057567594616365965469637428 0.0995249159958282612156038902658699 1.1048327838170266855317928095621745 GT 1 -200884140204014.0481923115222840987642003751863646 0.6431500895081341336680894016008957 0.0398034098140723497484599426369221 1.0406172340414382368906567510060815 GT 1 -123350642282263949.3369862575404323018828839230541646 0.4208161106882682916534951342322960 0.0033196039603169890310504798311906 1.0033251260697412270541794695194161 GT 1 -1075238772056992585999111090266086107980298.1479023530605236992725019159102652 0.5831856145555662142705594233234838 0.0558501380828031094767136612868178 1.0574703734054776412451949582640028 GT 1 -903211406974425936304967386992428980127.9592816440427986313693214349104802 1.8679057901529768123467089832955826 0.0037864174109238217716541554126183 1.0037936040361062237491831860368863 GT 1 -1342181780418166093432055557074008079162.6222801450297283169598274546006896 0.1226128700622578918928018321859605 0.0248390645025837169120648436280348 1.0251527595568988601409588065412849 GT 1 -141998308555.1764278587598363738565834097310263 0.4295528667429721873005650901644727 0.0835084802570757457749972868640512 1.0872024646170629488338541839740896 GT 1 -250827581512.8785766912004142606415634410101817 2.2917205943653202833486840550079783 0.0398459967563245192900707442474218 1.0406615873406793862974597960907734 GT 1 -108082159.8003153744971703246699022655782006 0.6000717652715291997990412551489118 0.0528331693861761183260701329002760 1.0542800338208906989534167819921407 GT 1 -71097077979.2568853476657894137610199960840305 0.4621846589809199182872150750338718 0.0345927632956897319314975979821548 1.0352052597155674088447753533986552 GT 1 -5268151780812150908775804336495614.5848160261196665994021545362472315 0.3240340433264926285147288793799211 0.0362354594524065640046498705537835 1.0369082667500924745630424302453472 GT 1 -913487507772037661704724917.1889791110148680326936932506809083 1.8836498564703747278131791239919863 0.0451691298113014098565737025505712 1.0462210534641855019784552342869853 GT 1 -649561923677974711.8880799795497810281664857569384330 0.7526903388398524578915594343834425 0.0155603404031889937511204187135537 1.0156826731857485043701702658625070 GT 1 -156054723254568588418528.5773720621064994763497297228870233 0.0296612067093366148738803286786694 0.0702204118474665418654026254968722 1.0728077229107676534676646321851538 GT 1 -108837422661241638.4576459694345041498845543775091599 4.2771887102211297112411379919410081 0.0637218179998630911501405522511780 1.0658426436690061922818362552346137 LT 1 -11009519997742397926685795726715089074318371.5701549733017765173787164922606688 2.1052989231143802653723176926875998 0.0283041061456046237024870581588828 1.0287123898795454214630118403085794 GT 1 -1139092784764912362.4944739596148012203093770165863671 0.2313960682629086595991205252354526 0.0644267288582434901765657283966089 1.0665958133615261727172771698394854 GT 1 -97593287490967029242.6788722460922212095170238271805614 0.9462239919486218639218895647154631 0.0810356652784801381432879008230037 1.0845079661700421729096789744775604 GT 1 -384324441.9802949738158742052296696852023374 0.4611361357202712900636193192914496 0.0953993409129372964292854879196647 1.1002616933436312826529515963076724 GT 1 -281242938303006602446821981863808727552.7935897028757743222868089688890189 0.4947097147493920233615999090623258 0.0881347225883198392081189050263353 1.0922630219561106964608583715828225 GT 1 -4155832591211637030589043256.0415326760160920471802265792026051 1.1130541839033827106889433475397302 0.0560907580119064226153540150043373 1.0577252594203362916178022590356383 GT 1 -19698915994592.2373882753837458107276620760165443 0.0740139456974766634400855015719524 0.0646064593143425411761421619133684 1.0667879391175959555076108219785158 GT 1 -138895929057.2517960458908674017327688207670561 0.2900045694818271127674414564276108 0.0695960513065424447583758738717140 1.0721364337051562754774084240343838 GT 1 -46605271162765458005278.5848816448781589378744588354337741 2.5194359811086532157887249506533334 0.0054694839097198571339980141019487 1.0054844963018871487007623962246593 GT 1 -10806258647775060236367604155.5156866564272876268938836614883121 0.3990766193895056701241979488312528 0.0623545400389547896320360735264814 1.0643833758814372808717926282571306 GT 1 -1758490849751922253579590874873.6488690597813279306062850980768427 0.0081932885572664070347015303352805 0.0136785376638219897059931021935376 1.0137729508045411313323420610748859 GT 1 -3147281951718680124628854670.6881669847295783072267067314667765 0.1615431351784476446223327122473835 0.0048124475062752961212718536526080 1.0048240646179212127146036385401508 GT 1 -329048432149376325255261519601723966419235.2301880718943727853737188153994140 0.5922034674568317851762010746816103 0.0500343844809604758436238859188932 1.0513294892330607627222421862771654 GT 1 -6872941287529051683.5730949655055448314864482486676026 1.9369075941952928972340624761115205 0.0801562696748649860756653764965735 1.0835514817088576078140152099972969 GT 1 -722846607192123664203600744306.0510528133796675076632181332340560 1.7583455479639337764633104491122996 0.0151967711073555822493796315839513 1.0153134253879380813731783192489239 GT 1 -72441837381.3257463643682722274482105695549521 2.0386408378892167069811792930953400 0.0409379918312276955716166407331569 1.0417995469932144185631002047702426 GT 1 -1.6130048544180897670928222588987471 0.3869468908395274745557175678318988 0.0110997501561466612925655415562980 1.0111618120579749329468042346777233 GT 1 -1134344149381195424586239124003714241377.3280087950887391934936292814413366 0.5867174583313829435021238569265979 0.0970240800983988098590549702777674 1.1020593926963518630166710052195871 GT 1 -118376098.0443346959186647148445221672716355 2.8739705272281030451063765525627676 0.0402555572998577428815080987591441 1.0410882354799194074846749859994337 GT 1 -3263559987374709233745379369384341862.4327553094555978337249097916330227 1.6404919591532744647295513168535583 0.0683161630658987599244364485284188 1.0707617526057172761764810441191177 GT 1 -263.2577103852703057760200552139869227 3.0183734347488186863652044311285385 0.0998859159972534314985235256827780 1.1052337636881448790934427811203633 LT 1 -13203718305013716498.3510230511029282762462466494601390 0.0297614220415684118452765274624012 0.0137815281585697110214904486110318 1.0138773750476774283798219161459101 GT 1 -27037284881312853013947547460777979.2947296501715225479388697851572242 1.3852316014836240778999295814377196 0.0997084775807984177804261887714265 1.1050366543074624499242187481074340 GT 1 -9549629798004.9473539357790963676431216046462171 0.1654402028784134674571507511967454 0.0820828364354935249086706344797435 1.0856481282016499439793208319908437 GT 1 -307042182785209495774378278881385.2974246489244138781980510600024851 0.5703212692014029472231395200621617 0.0632589021765351289469584765250606 1.0653483446110734079958930229557789 GT 1 -3585303524897067681749577854745017.5630686747705594323264451759718542 0.1052599294841061695545657967538557 0.0116433814084871685084264450131834 1.0117116963696364362794345740647835 GT 1 -6945401456577694457255194534563054539000975.5068009445582358176043819704953837 0.1014997488885839305462016387779949 0.0166267959373322631549329170041360 1.0167665726339606570192147395070490 GT 1 -1732.9342758990967951182990084639275670 1.6216772492477120996520910131951308 0.0168270944359386954137371611057927 1.0169702785102872330721823168619755 GT 1 -76462357351238677516188779279957.4575556702797774675890605378505959 0.2900034706958823028410925949592893 0.0981392101381202422963971987711342 1.1032951057950361648986196984823217 GT 1 -4294770203431565743082.1854902209023512827691205711357954 0.2712471278032220384225089428631084 0.0930649388909073067733993750078261 1.0976844288843630817349124468618528 GT 1 -41163813623196.6973376393200380508969022019308538 0.0405591496658776086997122381208004 0.0677082008001683762536373020984888 1.0701094240285580430559407849149259 GT 1 -2548709.2172996841123997090218764156445467 0.5330081233144764216579882191123365 0.0181774574372001091893230357352215 1.0183446971789119262583465898113205 GT 1 -382506983716499576952.8748413033484197674947886691936281 6.3892478492717838841120629530517026 0.0614581381357148317192879607502679 1.0634278188738611280570723029798501 LT 1 -5575426153860302542470870860372049.8038023895108197163587765987525544 0.1558389644170576845850171185767302 0.0542027301450457370008817178074107 1.0557270353752228872381008907904419 GT 1 -134524407715.6654384677940801332583847755219301 0.2159291695517338451463873279196056 0.0626357483739353628078235604291870 1.0646833298873831584114442738238704 GT 1 -104623910287772679925497761309923738385.2928155668092926583729337720849877 1.0324448625127555561514427554824244 0.0584611163121672169395484719451996 1.0602396320161969178715422944234399 GT 1 -417635650854735750548652385.4493813687212281483074257956020881 0.6481840908957571252946898182832497 0.0104047509162525695412677256380505 1.0104592587604239977230911006388264 GT 1 -290200318769377260691960001356.0654088072252067885751888146119093 1.8041936297615488042102468601570463 0.0164734337099053310898227902874083 1.0166106295299455313239776002917614 GT 1 -9830283.7174898174027379682569635559151634 0.6679623453138279650821069997251861 0.0958276048766720930223877450434087 1.1007352342013312137695654757326909 GT 1 -90335181017131371299775932.4741965534649700884205148152832647 0.8691687966519137348221336086164072 0.0636569836451713950726689646244131 1.0657733991738840004405246894597465 GT 1 -3783.7760624433341815128210955887381415 0.5294682533736640365477471560978996 0.0486359612738791111710118182297022 1.0498584939681194980817359887529498 GT 1 -388161416935.4329266352205720926849226614406207 0.6987711688804158951838409115849958 0.0187889341005397318536639934157646 1.0189676887369583910578587318393819 GT 1 -1858504935809416830137476292498512269.5180041287226116829656268370829669 0.2449559810291349563195322903024953 0.0909837218094091600544585273923785 1.0953922771645709953078766761920018 GT 1 -62842284996970722961212132465680245902.9138616705014218901063977975476916 0.7575893996244629404571345494333356 0.0963208856255111690833917160583599 1.1012809435789975582346449525549192 GT 1 -134511657078661059749553408681523.7644730201621348907781215528063300 0.1613952135927925626835561119086256 0.0924484059632371654603744494562653 1.0970048615261259610129954346617836 GT 1 -366477922667816.9728996450278107995851366363517580 0.0971536705289473646166735197868508 0.0559990135858209677869899108343276 1.0576280679069079044971295107109433 GT 1 -50223558014525.6704070960174615508148364548859022 1.2982074264361804527843650173660639 0.0439968337334234338290938487732655 1.0449940539418934552955472064142382 GT 1 -309138869349170201832.8289536697076457883982848330899603 0.0556464440969740004162558626801958 0.0209641780420916736108823816496576 1.0211870467656662735917431582361653 GT 1 -27601416747818511768059924861144759.1340156007983843604024408370970269 0.6309021814623333330821410646055137 0.0087838354811006856594088055047442 1.0088226407706193916706682535389625 GT 1 -22235353299226171.2716946441209032122509608796355139 1.2390406496461959963394413721399488 0.0674580718856960165168383756055568 1.0698411653497184991724597563601699 GT 1 -730033445946.6989806422837833023187885889456557 1.2104353921437561337873644794186751 0.0192572956466152279214629747641689 1.0194451327645127849502335123980250 GT 1 -39.2841893295638963010130787651180166 0.6860996550402325345253967017064687 0.0954405844684396822681706414403848 1.1003072874909797144569880517405250 GT 1 -218300700594600762.7351325516260104441448673031593328 1.5028470786015288637553260983226771 0.0058927179210475017981269044442538 1.0059101484926555233136351089442368 GT 1 -5111.1614854560206433352713810654061888 0.3307654694645503791463673728037056 0.0900865272887561354387037577413182 1.0944057689247991693081079021230881 GT 1 -660948369919212252544345.0770551282900160497395767677937779 1.9308337191832405479217576991751896 0.0655054333530125139628550894824385 1.0677494662853508018124010826356726 GT 1 -940922884591745219787.2110862634369636726797249863084463 1.6908833902561472869411700408393864 0.0567003589322553426777315096201011 1.0583712938334043088774222950674848 GT 1 -11297146110.6370359586184310617007889685289157 1.8001269111394317171163178005733172 0.0192583720926524335819460781537088 1.0194462303476231889958598784540527 GT 1 -101869627410477481510778641601.4776160656902017769654928838866151 0.0349668067004029686302625148487486 0.0298876708682376940155260902193242 1.0303434109607638809864124575146520 GT 1 -1756769709495.4897392466213320220345504376171919 1.4385528073058112027746969548206541 0.0923584637712591341300777520891141 1.0969057622175708614777547717399196 GT 1 -4104514728650839553573.5343043025637162381409836367800355 0.4441039706482838293718075057431405 0.0117466241632814715639467491685360 1.0118161608367586487055806109422324 GT 1 -109036488898909657828789750330495507406.2227445823602668279925235165992566 0.0646713801955228669787588093736478 0.0450840667114402391223262809054197 1.0461319703461904443242612178882528 GT 1 -459705548115128834.3328867840587838178676636659797335 5.2099072080088583393610748729902729 0.0893938150423617086715113239798672 1.0936447639261360815099257186576084 LT 1 -6236289387725591.5585410185158385650850965436998135 0.0061045289686180743551275791818329 0.0117769688391452155647818573057376 1.0118468666683675614642446211505035 GT 1 -163153919971329.5921687997810581143378456718670964 0.0439098072945319796550546585084925 0.0924249116524530656316709319339235 1.0969789742852921143241562649861924 GT 1 -188398564985664157215094340.5204148024858952335184872598354489 1.2270424352034272779972727159113593 0.0713847635999446272458707557070420 1.0740607956049546612979321878628200 GT 1 -72202109362612964756.3550575929010813907650703209415900 0.0215161713151682793455884026433357 0.0055763222827481751714096833428140 1.0055919280099312139117060618466298 GT 1 -129571032937522168933564929186562838.2544453631756727238964118088947457 0.9010033394986565882593388216569209 0.0333998565128671114619668425812339 1.0339703711259617169876275146088874 GT 1 -7108.3589421601115982961029460653817865 2.3926310477232490646143542612310835 0.0653279700377292276641435408371770 1.0675595813214974628194464293981790 GT 1 -3108773.6714939690525632083245734455686100 0.1809517249786246123101303551864201 0.0766051467513474373098374170180226 1.0796983426212808960572748475074910 GT 1 -442815321131414.3841874850524130722395144644466491 2.5957454346263339878184246457827247 0.0361282280119820380664445139547760 1.0367970098290251556700852576175416 GT 1 -8797707984494331780030533623813874127.6350302868653077709303597249796369 0.1720039244128651517437572878752997 0.0142757118384536737158120436441689 1.0143785900933198371842262069835318 GT 1 -1726357274442223331985440532339159996932719.3681967419617376156826926708999437 1.7688388756080314047504190234312383 0.0313247052917414336127936155284994 1.0318258164279676943479169811568117 GT 1 -162557086255250071631722.0841233456779708677467872498099145 0.1599870846022032569464271530956855 0.0784971293217609930046699853498512 1.0817493866538460414042084062844711 GT 1 -50542098304217364375932.2410411261094584439677514688180858 0.1229205093674234837453111094646721 0.0433545086191152936966834299261816 1.0443223935866186458129435191798945 GT 1 -31976802081468871756759.5234035495173211399172816235150301 1.1262439643026478446508899582182305 0.0210552441557494328031583611381080 1.0212800672120954675298653987063860 GT 1 -1926197690129259780321412124954330163.1763405214475713341878323552854238 2.0441997671474128185442379273318603 0.0039373658907906463479560543802530 1.0039451377229419083510180853593636 GT 1 -156043.8604404689128181881193942785891204 1.1837963144053565544474632509105880 0.0928356956884842520331092487966836 1.0974316938820660652111012644729158 GT 1 -11398871154802942887409803014357060.9234935787004696599109016401577549 1.1235480891370874243982875964241221 0.0687639137345252368700581673559910 1.0712424503229646023447656494914513 GT 1 -14015755722966087440076546.6713222572342872551166864531909404 0.6365272224089099430755186829903805 0.0981742330271401229992013687380982 1.1033339405791526950167339223250591 GT 1 -7779311997143325296879603410207669124707.6256180134488628200952597894421270 0.3741834080597079860809044517385931 0.0886919685360090742088114734540640 1.0928743143245640766568979558020200 GT 1 -491132163910080422976036974547046569732.5766069712456084751887396640260623 0.2547563014964914983353130080767653 0.0513737485133776829295632469350304 1.0527403919951303502141383461563735 GT 1 -2795959040641155.8617393670991098230145284896675884 0.7384174952422210910522061453991514 0.0609061639361296777648354939359608 1.0628398728563298456039901006706090 GT 1 -6334723522568003494562655370473944.5858732607006997880050206392775226 2.5980124700793774107135610827552772 0.0316286404442703436313442126517901 1.0321396293703190009132516194176008 GT 1 -4202575540156849195782369216284865208231162.0981322216093181404346861500265637 0.1379812645269032351780821341771757 0.0935330157961226783328772723247377 1.0982006706265852388877766982562509 GT 1 -2411755368192906235754.1823193345568485102721790157678782 0.1427479831159130840945242097565685 0.0139437742192325802530428856190169 1.0140419018868894945520414037042576 GT 1 -25.3512804876965302738350889042995546 0.6394901058891939120632110741282007 0.0438204567813026145534082916400030 1.0448095768500903410251247375575617 GT 1 -463192744987973882459968793878819855076.0423140786498074254006168847269783 1.1816119923491512856861578879597436 0.0187679659871689605725603269014548 1.0189463193394227311978060168046087 GT 1 -1283466191401493897713175650862271.8811684244437360820849806060913578 0.0347167700959766144091199765658004 0.0921934743922686951497208186681026 1.0967240006096097146287083077173848 GT 1 -549197382760.2959161958944054246909035989145039 0.9947639156086838325405129485814259 0.0046175247862015793618575048382701 1.0046282184854229389792321314037159 GT 1 -16463297883535115046822579170.7080315273615396269181124799484071 0.2829633491746021042972044932399107 0.0932901051255552031901065243248475 1.0979327313264280530995274317263222 GT 1 -42222293790774046988117945575849393.6343266138477559774938000668750478 0.0705172496241442262653482764895637 0.0361093912213453498432952988362683 1.0367774671812121027758116812448681 GT 1 -127806454771802.0648362719961286277817693387233975 0.0560649502634641692231956312838361 0.0668306765587920602668175142331122 1.0691686118127980066835534799061307 GT 1 -358399496014161655100791.7233865940080893356067757803557906 0.7089899295153243760939366334489662 0.0822365272889980892463320874474164 1.0858155765593070854934765659945328 GT 1 -97908544193189077497222276868.2295843001102887446785086790876872 2.5004879807468801080738549474742183 0.0424067599470938670088392858871368 1.0433321840229957258764978094123658 GT 1 -22693707976694804590030947113201.4465948845506022471836265949928869 0.6592707489384051973735554591885969 0.0172119003534379449569961392729649 1.0173617470301546845283864973112989 GT 1 -88872434064971472201354265280.6017097964604672210567256975168855 1.0176893954696186674377972023027672 0.0867053671604738780737118733346416 1.0906967419693219832411050184472537 GT 1 -726410971053998679075476402283046278.9652951551565168478051342678253463 0.0812206941902364481552915327311866 0.0804260175851972915678304805429984 1.0838447787782483465314527652540882 GT 1 -2948208035994702774.9546454234896966273924647219740175 0.6718261383492729034710928455828673 0.0560118802163551297656400604372451 1.0576416978907802934339330140797760 GT 1 -900824247661827821191445977782789654.7751079999987707185243810095149572 0.1436736022060720803641480412352303 0.0491755128936826440734808641865971 1.0504257896141044135934671704309572 GT 1 -140594295778463674383379368537266985157.9627550028097687001340739715114196 0.0209225408610012986140022128489801 0.0273719648187785337798094208579961 1.0277535564420502550394055631016566 GT 1 -623077014166.6721355500847551364154000244324195 0.6109738860365667875730182993213528 0.0727458396188159713374465783711312 1.0755275758269414063119642784419103 GT 1 -334104724771851254093984982202298671.2943925187707250032347092499602961 0.4830761572990300045443060015591713 0.0234765467041291372292529555247418 1.0237565112417187186882467536422984 GT 1 -3124677389745899.5071870314596980889690214043188988 0.6443880268546177805702763964795963 0.0946360472822898590861614892934622 1.0994182584268172930404440209514762 GT 1 -783928454646.0683635532548805269700286817535114 0.4778917257344159180757968462032953 0.0713331481270713679321491012211959 1.0740052138780727284895844304912444 GT 1 -36960434341331084762806528746022139.1343726410534747135224266664549237 0.0422708757945439795582226319624925 0.0363170087027140361847722286615885 1.0369928856556749020156986981309290 GT 1 -55665202408558971991949814963491732320.4387070123218555146265926675322608 0.5386840987925245346343880942799244 0.0395917895171857587292504001403782 1.0403968656474101657938999190183150 GT 1 -1.1771487297061791347958716192150281 0.2148490623170166098078126055473805 0.0525483201824568772461579228897679 1.0539793408800193082493328820620169 GT 1 -6676122272729529577666801781300651881.5695681149194095567797679382153939 2.5597512727881712303980146503231615 0.0933235048503330450150422614294439 1.1027685863250781011868930774013150 LT 2 -95450655001894795086976283865849.3800451709082603258814382807862306 0.3472025709398755258006425615294745 0.0854151063703022356775400650249701 1.0892849848094165778579830716880858 GT 1 -35876855.0671559087642874289680994422924347 1.6285074619172572799743164386767617 0.0825887510475215831128058208437613 1.0861994351191385559452164098566882 GT 1 -1987801312439315282227176562647894859752.3755822534972894862395402586298398 0.0705291610734453389723677176770234 0.0761024816576895273421606871022520 1.0791541243764652859796742320077493 GT 1 -10.2496494450551949051287260462375033 0.9253465231926936641206474763483451 0.0884887011396211757417652443906095 1.0926512890429589324146731439304104 GT 1 -299015585607018.1557461027695627924696014210528323 0.4390265123676197885767754859325600 0.0695824275318592027519000739539239 1.0721217909524488788746494673217562 GT 1 -192959893118610004521708627176.2193948207738997584583145978435991 0.5574246002895970217323133203538540 0.0027374521746594720489338170431003 1.0027412058487642978473160437171394 GT 1 -7316818336768884386.6718905323172464435487527652585034 0.2586838614582131607534624366229965 0.0246185186829610443089550671244884 1.0249266216183835607662659928778226 GT 1 -540452566632674759073040.3109255333809592114031623035688492 0.9674821222657815148944803710389941 0.0596711021973057348920587528890872 1.0615255736363046027299555311759659 GT 1 -8782657434480138.7700910621831043052186720362242241 0.7454774277515553856751372222779471 0.0495784411056537693869578777773165 1.0508496466092061568202013556701417 GT 1 -855978325069919166094.3849251900334046594359826107939638 0.7401293452182408244287057900818429 0.0053270939814576620270788310158562 1.0053413335394237304005410173165548 GT 1 -1543329.9283681706256976663306349477664435 1.5249155425030227475036840387295967 0.0314725338427781676933418973465893 1.0319784370563397468720286099288202 GT 1 -6031237322988507462456424572670.3021883525338055485806986705239792 0.2876345205757335398680398643544101 0.0068011412692014685652194588855101 1.0068243744317513395531872705541955 GT 1 -69012487854084052978691264150407138876410.3685392159168028252374639800316504 0.2102496786378054094869879138821465 0.0904754781460026663627051687652247 1.0948333194808866524975465429300742 GT 1 -7424554160912218733843996226223.6897454167371010259733861102642474 1.6061123501365626146067518098190679 0.0346526963848905752705089587942752 1.0352673422723798122192833473581520 GT 1 -149103471380023.7727683125489873295985112904142204 1.0657796888485421182627927819821973 0.0375661927305223416431299149972568 1.0382899868531525132686341229314425 GT 1 -219360080354010615909183731700638640.9509421047971365515465623302553604 0.3311665168881407503345460625369894 0.0579318946112241644451857159105775 1.0596777083050006663214745432217097 GT 1 -414786176922938.9193181024374066962062602724297093 0.5777843699472948744289756970890287 0.0306147277143636290931456317155722 1.0310931482944440243186364751472010 GT 1 -4363866053211105519459.2220558308701682525539795186622798 0.2242860556723727123678157356877336 0.0294388456313261094545034801310316 1.0298808650984850201678799235973904 GT 1 -19915528458760545785622669.5146807898786342142748871687714006 1.2098792734373966010345353538872905 0.0594485341530538658555199834427191 1.0612889099445652395860675513095908 GT 1 -141865460318621427437422739610.5767821151452521762135190143116501 0.1472320431172121810365242056523609 0.0956317332266872338135739164790367 1.1005186267952856299807730827650499 GT 1 -2093905598270981023581619300.6999333390409507697663979791181153 0.2597228821124145934073527468983764 0.0082205808157940674121200018435811 1.0082545561161870472530143110914617 GT 1 -16703328173196018.5133207512450500922115142205165349 0.2279783945639464852090585430091796 0.0288505685893289273815772306008839 1.0292749281846062103560448714948760 GT 1 -348209672531233.4744836530493516377573369902405449 0.2146398325430068306059587133012007 0.0124599153263402005062060992630805 1.0125381909561038818619191118593853 GT 1 -22890.3088846967193094555513927611001442 0.3327641073405701552350778642752635 0.0890873637895342387307127882154084 1.0933082851018082985320785055442067 GT 1 -699067316343726670849868729551862660.5713581913693854812210176861296627 0.1395982281331372011663269166065242 0.0763176705510457556214136350395272 1.0793870657506489499065303064327981 GT 1 -2523.2518987840764586706114717600155768 0.3842676324670861535642997042430287 0.0201753827570584327643351222632090 1.0203816853301268527620241872415397 GT 1 -208721487085618151.8408893295650945526643958190627096 2.0015293025922360866194665411207764 0.0058976306686698865821790548081132 1.0059150903735269998785515457560813 GT 1 -2276971000299210292248.1444888734275243666063534616297225 1.7707112486410027304438957479500954 0.0998091304539436333255449855033903 1.1051484608696362725223479871355346 GT 1 -1244689809868776518604206.9827678437153012790146325136382076 0.0446243518676422453010631348636547 0.0900777470022301168528415822885717 1.0943961193873139483398081245088629 GT 1 -872442795383191906463648150773006483.9938983535112456367833891650946730 1.2183061586846329862465453171913266 0.0970763154064052132014468597268767 1.1021172423219799412402943449764962 GT 1 -144.2955083430265587400695858311512665 0.3281210191277160155710014582778334 0.0271626622100384330291302589461225 1.0275383867325755797118111654198366 GT 1 -1134495537774893760796143210.5224621317069216749123581146785685 1.3434151753048874742342395727545043 0.0118354222209781755373786822165250 1.0119060184072123093584057015146696 GT 1 -721355986.3465217435524126305703568748991262 1.6329976862049375773552678647112367 0.0970222870547198163899592754497381 1.1020574069934563046983007061157770 GT 1 -68428118168891905744.7842498952017521102449229595232030 2.2101434757237233235710450065710849 0.0467909587079740778870763146438482 1.0479210486031784411196579374002260 GT 1 -3192993.2828394095962826905882000192562905 0.9988378456438528109576387243649698 0.0344552180624915157534821491482157 1.0350627960685135628458506455738587 GT 1 -333149227039175582931327738221717205.8230045132446844515218703863630846 0.7073357496434774531501673186442289 0.0443047919586430468739739405207439 1.0453162368050713180623652683521113 GT 1 -707653.0260951959519994897200592940419924 1.5201013509433720577037883063886678 0.0588295192082737916195208723483295 1.0606309859954770906561584081698218 GT 1 -380339971232530416.0967869191867525345608703913487316 1.6707565056584626537628337774287255 0.0720762091424162715382854305703785 1.0748056714888332189799478201060970 GT 1 -16652614547902125852083680313221218762.9348106741406173158064837086300853 0.2030257153005123434879067733554562 0.0197235342767188737553120579533332 1.0199206392215663173648990789572893 GT 1 -550385853341794483028199.4699820586208389281653504657080936 1.5449454678895553235566634846458822 0.0868668956954637447198180886084362 1.0908736211659373169547572353782923 GT 1 -621901125.3649841805787891471952919467969291 2.4727810542161178990257401555588156 0.0371731496965101530322272549091507 1.0378816857351438873273334957981202 GT 1 -51660.2603543311693767276815072554770746 0.4068314832560649456189246369673373 0.0861051849582994920350755531951740 1.0900397961616983806637231778782727 GT 1 -17.6356425108243420591906294502791184 1.0365354163825092140088503288859234 0.0943917330007246913454325761732589 1.0991484428212686543054606123967777 GT 1 -62957190.0903093885084348343012679526618007 0.6385958998931579009784192111512841 0.0272295397463509886667611339234298 1.0276071339244876838504462422268134 GT 1 -352911162934.7941537126011716943205429804444811 0.0876221256476619525722689652844707 0.0555042589317979907776052060479194 1.0571041012426905330723240413483039 GT 1 -32143264291957875.9958635416064834683912286315984167 0.8110772144420623942758976788481351 0.0628754556190963278876660943377131 1.0649390873472071175206980274771794 GT 1 -39176743810616237821739706023.8946464211759613623751766438335684 0.3945394204319909020612778871217169 0.0334291994154241591146596499626312 1.0340007284025898232492017430684333 GT 1 -644387407878544857969597444601782203589703.1211658023908139546893708135318231 0.9116355312474042790689073625029868 0.0431660699536812989236004947619759 1.0441254344096000414872248024613307 GT 1 -4.1913576906063455966071218390243455 2.0468107028828351475062784593257218 0.0122759996241374841244226434555143 1.0123519721065574093591365906305861 GT 1 -35682480170794621510499661126418732.1644391934347526769839176135312705 0.6170824825077451560655408969780653 0.0606925582018621690284518227222772 1.0626124393066344555559075820384917 GT 1 -1531883266349971484.8384811975752328398446780221299263 0.2600977574619805903599320788566828 0.0795882782679762115755378749986786 1.0829341854261158260248386481086312 GT 1 -1715382657208188706091750678.1596035340324689663337132458657047 0.1340637217814439808518407140945025 0.0291915491770992019829884245722489 1.0296261001584105900751273034109907 GT 1 -136763996110939459988095728182340670.6879428924767663557668918236350449 0.7496182919726261209169774804406255 0.0387484825754105884612928579373698 1.0395191795683777683099862476147206 GT 1 -574533930765193693608859688858666.4025114919812174442334379444482546 0.1966151045292864516640014579641302 0.0440642995218132989540691839016837 1.0450646271067485982008794388304635 GT 1 -725305333422997356783167722650.8269511375264093679684510760991281 0.4437318354950483708819555254521642 0.0859593038055430930991182564735871 1.0898801831423447000129969731008069 GT 1 -336712621246620623980015232253434930347594.6459655339422293473582674715548529 1.7073338727903906903693695557860632 0.0382307903375331079542343040231439 1.0389807638944418144432015601544291 GT 1 -1984732670472.4254395643218528444752133824328864 1.4449282034577385730205314153304780 0.0043997921065194200383207117875900 1.0044094996764674145942038124489068 GT 1 -441357149510533060478931390765381428.8620184260649860997240961201341684 0.4487349292562021262994967753669791 0.0266153112591516487260664447750819 1.0269759113748248590758340283132360 GT 1 -193313333666707754592.0231406360081093163012665170427350 0.3628865194319240412789084674237862 0.0563719988638019374060218094289788 1.0580232570942907853866943063744293 GT 1 -587607312753313917088782.6517363339523805887223840297263981 2.5562724365998628421379860208221929 0.0307390271090595574988503331489280 1.0312213814831193887846883730336410 GT 1 -105101484.2690579063503628486626715691622194 0.7425639221114851693468773951744531 0.0542834702711321348310340848534106 1.0558124062841247414398237003975858 GT 1 -11954520952069814343628917305633.9783802035041787460901937253541136 0.8521525156802868437705131597515865 0.0774432609883796564390793870277956 1.0806063992551995480915294752860794 GT 1 -38778.9870934706403193700281758350641937 0.4088559598808600113712506002194046 0.0562396920720033243610441204008219 1.0578830561707395154870635275144242 GT 1 -6886622366519527889792921197854112500.1941462246959156118097617990261248 0.1345517200687696092530092906674958 0.0347702527241887232823564927603455 1.0353891259011546290999113196365814 GT 1 -16638912071823885406569492.1706378226397645090231027344261765 0.3431627447615390024146886814823226 0.0116001131050729632772957870579196 1.0116679193001784376192152056175388 GT 1 -46309.4268832731844855767271169483784374 0.1542947111613171609428507327530583 0.0363217487787430762861125997776252 1.0369978043765918544114625538566729 GT 1 -377.9371130886913605695991779740026838 2.3661486257389645277781804318501041 0.0921602668510762676001214860399046 1.1013616500213880391436357850236836 GT 2 -1830219255127790388357202892472850891084.6072953450630093745241721815281625 0.6767762415612616731464705127952856 0.0085287249599266418067086408052490 1.0085653026572164671393670459767534 GT 1 -3114854469537175299445957037283695283.3349043146005935412036086331920158 0.4454958623703797414298794665427839 0.0714712369352912791301866833356980 1.0741539206781143809912900603146822 GT 1 -53688251314088592485162874635204219162971.1827906261600105472829319085904707 0.8718740378608046697095103778391929 0.0835189188737206004583748427127597 1.0872138544399550286107180364083256 GT 1 -491560577852600164366032732761988958292.8478516342856777460931996389169295 1.6720128473395271005692516414603753 0.0981008828869118675856674975675254 1.1032526087298048831397810795746044 GT 1 -23188634984246.6238795848141629013941838573227574 0.8226687693252435211908306141421435 0.0558413570862399097890741005503525 1.0574610730220489820978501493452765 GT 1 -482945810.2206050801300463617682400522384522 2.8219644950141862321803825307613137 0.0488915303659426161712483094199407 1.0501271644403368552076854533528850 GT 1 -494086550265.0699148337874028021400019654053470 0.3635947990677027512392040307840239 0.0118343225565782019628005778388137 1.0119049055725561906961151377946183 GT 1 -64701899010411231669259899495.3671751609640762378875111924289999 2.3746093741962253776851913213929692 0.0549465744574128774920161336279858 1.0565138181207345829679787627310111 GT 1 -26467932361412294884.3993404594225408298404356661935602 0.9028337332003861786823495951156500 0.0055348121945811334620105501953085 1.0055501860213338165452280441277043 GT 1 -5602753724946414624729539229100333919647930.0216992229683390396104965805360287 0.3445741771347185661602201164378392 0.0733006031597485352534567283338101 1.0761260412581055871790944625531564 GT 1 -3205183517907363559396478045946.2705057252246510387228278289118947 2.1689807964496124578515642273552832 0.0279987017538347164245776900471737 1.0283981388783869815261243948804602 GT 1 -389638896967993.8660005090298228826348659658124186 3.5478362899663510873561159445029526 0.0177931184592640769141442115951433 1.0179533191495145878773642756142486 GT 1 -8851218242.3176445052845909669046831701293178 0.5141565105759616285945051662168853 0.0712235788183837592922105769406969 1.0738872352453960879719630745672836 GT 1 -278896615014001024608240462726059970330184.3080411592578536416343144845879347 1.5870511169255286577719217250810115 0.0984320685519943426289858163458504 1.1036198853807085691704792547411277 GT 1 -22666369172969891654959941967908597661904.9508699324966747606678806452364949 0.5939781607040111275489198948308274 0.0938545271718733017126424060792644 1.0985554197930439532053408962932790 GT 1 -33517150073361994281803.9057630278835738287586531454538702 1.7576124848231991004332796102502975 0.0926297864744216510158768249818973 1.0972047384696202478362536162976165 GT 1 -104932503225136770.6555601578635575407916790249519830 3.6548735002510265345295723814067448 0.0140721153343448299662083407245474 1.0141720663386348995309132736767071 GT 1 -12837386370646911414.3097942078574034746459969740558689 3.0055818308137672287184543312299039 0.0574808338679790290082115386436036 1.0591990244481431555461993541687193 LT 1 -44284737.6654444048117025910169933760891067 0.2856716310186704968138381320338089 0.0156615951107740371893675174325408 1.0157855336447314744872751594486008 GT 1 -360.7914842477652485726293232663273680 1.0330901936824640904759638289228527 0.0550146721066115206017483532638301 1.0565858776476668350922377419819396 GT 1 -118148446451891775977075640.5785942834765943593270939834746384 0.0976902649884893501044741052696122 0.0076837327260884740265963719498306 1.0077134046924217537841291026100906 GT 1 -2583181510640115.0727184189496298419350708103966427 0.1289230037688663864363303756514466 0.0738110313453073481265645931878719 1.0766769953338889818491158705202500 GT 1 -1465839027514385796530959817532676321595944.6288569513451638760496136996758764 1.1154975460031828838464152402360237 0.0871127883729008867041489577247642 1.0911429420237372809235060855536024 GT 1 -55811972698564525343466671270395240472.7672464350741407771584472481420295 1.9073342934258035557202460482927228 0.0823320914568998480844441478749357 1.0859197092105891153250443120655318 GT 1 -938225071135531616519860167530761984457443.5322288411483744462055297162948025 1.3276602333010252237132683086230409 0.0874930005385744193781894496964448 1.0915595229122515415849696989229007 GT 1 -559228585386875407057660081647790476989.5651968672140198214788215488189910 0.0029360384801098995557295223322984 0.0083510441249602640213614499154096 1.0083861094518102229652282203951934 GT 1 -1127825701724182713344.3251875016807176611639029290055095 1.4078258492606675523039929579551354 0.0933410004405250970701494552542792 1.0979888647641852348786036387586143 GT 1 -124659162026823910830211017.4324871054349347734958695431726968 0.7491912954145631493941301503903644 0.0256965426078466972613787709950687 1.0260324659661972590358102920655425 GT 1 -18204.0834266635469378033329601118745918 0.9422782004263939228305458154080875 0.0445561677018593449184174850879787 1.0455793006003892108229877564025456 GT 1 -117335825856072252.0316626405067709879377114267052917 1.3643730791290198795763287760731469 0.0522649555974470610104209933621064 1.0536803048182950737002331573813857 GT 1 -293512698823759227945837655.9281347434615191263959883710975515 0.5135842295298181645968799828312078 0.0996436098943796683119135963737073 1.1049646050345361787519349039012569 GT 1 -4467549159333421436843498064.3415686449814456145868160065925038 1.5901867834476693596708542930944269 0.0567827302668517913677958281834547 1.0584586202010368422285052897689060 GT 1 -223545716491.0818367126778964638056019012501423 0.2935131971328536089718056298465387 0.0180651681197603447493395706503198 1.0182303354771828680469876344866174 GT 1 -47965008858764642929475056750139.9517330671184789499976198708415290 0.9314733593116195086909154782682361 0.0130373825079590074373837745905447 1.0131231151473443351093273491556817 GT 1 -2428012817984146416.8287041524251994532200498514848290 1.1416570763156655953012076008197438 0.0976527496223922759101979539771577 1.1027558547589398875072696292527308 GT 1 -143838663773025360228.7222642590181209590130248323414634 1.6117497625874581053519456108900166 0.0555225329043882091504579431190245 1.0571234492911560290439160463679595 GT 1 -15298.0378439327379505195354392274813131 0.1326130482228124545109209675136974 0.0498397228850119983959404147442327 1.0511245958653274888256798838196552 GT 1 -27.9099859483230901968676697035122630 0.8541095933554896260654516067484396 0.0296357521662933077086465940753064 1.0300837647415308499286418012579165 GT 1 -423823062575157155652525128445.0127778626901014208977273987440087 0.1609797585096892093866590435976187 0.0254548524313676942799067356015353 1.0257844321506377925462262612894290 GT 1 -18941821997939221983874659257.7557633776884499619014099363583389 2.6750734314230658308514257407643212 0.0343292089763013798189235252258565 1.0349322988955068807085915397833647 GT 1 -88042753506494.6714987312456047185157123852120602 0.9018640027922232813558242179700232 0.0323718326996895082902145781133169 1.0329073901901087715208895743152137 GT 1 -17540770243307334992437050534489378.4786761733308149606003012491937439 0.3757938218892801911362680439338899 0.0927287055427162537958965963680726 1.0973137617317438396032292795887864 GT 1 -6672951372365861712624655237.4511790062007205553077412515375812 0.9905644573121767077457195990732568 0.0887272481292847832041759281080947 1.0929130282116002008887793481452788 GT 1 -675045468.5033948106196178238909042485139941 0.5334070175109977679898024923987380 0.0942430570750110146701937331343805 1.0989842838485413690343010608386903 GT 1 -1478327776.6053186682485339940290200261192006 1.5633802761436659944890532513189228 0.0602336912006181900006776087145461 1.0621240422863267028925158899644234 GT 1 -61095258988350958277156190659496517.5903996828691262715650838375122554 0.2431199026516960557286923775264828 0.0768573312669508621021639982163988 1.0799714857490746691354990937234213 GT 1 -31909622804915072802588607.5156221765277908546997745352732875 0.3066697588518483768442232636110782 0.0041591961667993958448185565198138 1.0041678696814297852373807511999048 GT 1 -923960093700863.4683364422105626879571459034882433 0.4682971434372983657590081506767255 0.0811027552521554990508144724349671 1.0845809749041651552231744739089694 GT 1 -1695219357.6485065979596849263878185912601774 0.4522741470768784422748166867847096 0.0183224603763350825164068109345004 1.0184923956085825843582368604960902 GT 1 -84195361757.3835993674021272921727534200295199 1.2597487595790759542670911343932440 0.0030999920437178641554045079854021 1.0031048069724554886953818943330328 GT 1 -3105755538767092332125143171917903.0871582562097413885006084456733219 0.4282437753992977454961760350849900 0.0084160562867509621405614158275218 1.0084516712542868574234482398322315 GT 1 -39.9506585067201642515315424722290996 3.2185365231673622211448305898742744 0.0446813331598157207627755133260856 1.0457103116058824078214287260379226 LT 1 -1222112981147283455325.8650210809911466575336984465122280 0.2414147669120266397185978971264124 0.0795570967539586159519342245425285 1.0829003082110468204189416030626042 GT 1 -4175532063062042563058249032805.7628196088238127289545163137943242 1.7779032085885122272718201583802146 0.0508910672672094066101024847841459 1.0522317000969239820799786342223498 GT 1 -401847235189877463156.8233192926783051349840794050994930 0.5608039520589675309439441389797640 0.0006411208916559114442999924059404 1.0006413264975382847225666247502277 GT 1 -264775140903417195291671793180921126708157.8432889232965293189992493289198952 0.6053008035375145165147958236282451 0.0889354487344182365788633710545119 1.0931415266412608423361637242755683 GT 1 -44387979558634805238816761.3966386060409998031515768706673485 0.1152295815071873650600451853397954 0.0968195412017876518993171579880333 1.1018329019008729364840527059312339 GT 1 -122742508789729.4487575591611631934751893586113354 0.3350336378334374611407564039252324 0.0180462429769831852600263881148740 1.0182110623443945013210180721680087 GT 1 -71014911219002973940500030523039592952.2735354797285655167712805054414311 1.1353816872705196273470181586200626 0.0618872843676350163349036527643046 1.0638851712758924717089896848542341 GT 1 -211098981667403142361995564305.5987348519334822884812634472736974 0.1699939066865931857615682348379053 0.0168464475022318952907815973730488 1.0169899629998230151777690192685430 GT 1 -198950970716741313167291.1580573972641056875540203140025882 0.5070153827888987013771660788308886 0.0484517255200132303596193416503946 1.0496648583989312064288099471330563 GT 1 -74136446095665696031775.2109656567401104196137140696441109 0.4494482512774544539020649326550022 0.0049866112323290700786647765001308 1.0049990858661656002621050686972947 GT 1 -377913.9637409584092932597006704898112165 2.3684990877220000487354487778111128 0.0296331880451795763502016780056809 1.0300811223134614890442238725842341 GT 1 -160744452.8195755587718260775604448913048007 0.8822419340514356668470504125131003 0.0333478135617626967051682497136852 1.0339165313345269431396161818780763 GT 1 -235160861073769643742026573229.7115250670472193415969746822180361 0.8114369382781884679112617312202766 0.0089330977477216861565720389348342 1.0089732370899898852623213782826054 GT 1 -12802785544253.5271683319762067552534403891782767 1.2619562160009082693097602462536276 0.0706793443156913232936091339647953 1.0733014375225196826358666458798012 GT 1 -64769773558506917536170673087921.4826007149857139793149085702316766 0.2291252989376835972498237776233124 0.0557499485134990986115694334705258 1.0573642628632276859876939624689441 GT 1 -10644608906933317735940844197548553.2685044631542230964060095222862038 0.0513179713076201948627340350226090 0.0470723895135013717027998043229394 1.0482163378284390412709593641098514 GT 1 -3071594223354184554187996125568199324997781.5481078195968717684729653999112892 1.6329152946093882459618579217256432 0.0585155698309228664397537159795590 1.0602974682823441425038035336257334 GT 1 -2120337241137464051892141722757.7504509603513397715289204159272136 0.8348021294607386691205170790481432 0.0426581999168016790566942687366890 1.0435947934231923613197980351737079 GT 1 -137000691808903540504558718304330291.5197876357040750784583120638389012 0.0048037682243597058678519420224105 0.0329280960768832347974639813776568 1.0334824285650959893791367247423214 GT 1 -2019045119987388982980646882536899196611.7028362161260249535293791826833412 0.5434139077702494310411663260047676 0.0839321312364717369101119144226814 1.0876648245161202931042164040466643 GT 1 -6511509276892117039.5875486489048449880477892416193049 0.2795419746792170748854227652680106 0.0874591260230689572374942622636638 1.0915224011293083542639011173306203 GT 1 -89512.6011819048916058085846741953069661 0.1731616123126716898942877544014485 0.0089406107026032443563071051642588 1.0089808177925047793721546536126054 GT 1 -219123995693570247470.0259865562869087031397582779020486 1.4597969445637063481823791441466861 0.0530660882031030761240487156729056 1.0545259751405742118287614921789967 GT 1 -567149327480950264263.9573924566135050923451275147314454 2.7493958490678980383676462726325094 0.0619455563734962266435028650817935 1.0659919173262933825552528827496317 GT 2 -40524515900091895186142693.9944239272584103146033604786621091 0.0138462589178240888454107445689644 0.0923609254447073927649471550395835 1.0969084743860737762181932777753887 GT 1 -2264872472993626175522673858918872204733.5996581694224660808271577643172646 0.1976080513525739508850442486265462 0.0183694778305470113038600794684469 1.0185402917641945318727708043283312 GT 1 -30604656381135022353875.0223417751071514250216644785793892 0.2735647760505954077258323238427547 0.0783995609577474169049457847523180 1.0816435126492906354478364712660956 GT 1 -1019884251252289065407130.4135753623182013617527507594745666 0.1837428677586191054599219207369764 0.0457567327824580391279343393028872 1.0468366429567035951450569061641533 GT 1 -303535621193648472.7818681488374932554028757451633730 0.2364145302967846774941991903168959 0.0653916665227030640180993037959471 1.0676277321310221347205630589588226 GT 1 -171590431236180592319447171393427761531330.1484332595345369917041971994091150 0.5153757062620854237323221789251664 0.0746646397855656475531835659732607 1.0775990555924840995113847714213365 GT 1 -4188745266599441714613847191434415262667.8298718944037252607364428302833317 2.0289302655294125994698102116182662 0.0504114780377343283962427567915459 1.0517265229940753096220887696573162 GT 1 -962819550668099818542940352087859691.6800384614542352553743045782218661 0.1048813381576974587345334446187870 0.0445856526741218820394551011681305 1.0456101610510278643309976912984385 GT 1 -75433504324715.5010565271988078189025959594778393 0.7302856784001928487983318763393634 0.0935753853523064784822021694651797 1.0982474131413813300472902833969615 GT 1 -3443184805684616403496252826265042342883.5624629906072098684116906409854521 2.2695529377197885856042587257252911 0.0504522008240492495904569301470361 1.0517694085793467829316307595375022 GT 1 -92947451831260577593135352550.8530965448605522570106993222631377 1.2946406412220223273414078868012877 0.0762185187481842152298166308746030 1.0792797274608459914843588718508081 GT 1 -5725790544136516.2253024102304306568905949049752856 1.5344338963726069872103249690651253 0.0392860307685858249615868567081398 1.0400785529920150630921999683376966 GT 1 -3585746366669219292746015.3761606192147632898355411782935197 0.3698273300836563056699553271523317 0.0527562445173098348369323352373184 1.0541988213641264354829973738843990 GT 1 -60687475890311492902647782330880603.1525919653929989685093133313855321 0.3068863925765267886243974432712824 0.0947395203685445122639267900949124 1.0995325538980576172194090093163748 GT 1 -15525875914154423079.9425351955749318873065031835550809 2.9933763260309750561984773388341932 0.0597700295603086601580307063912961 1.0616307842359458036190796340220332 LT 1 -448267459498602013309405532704.9865895577145596470842184524948818 0.4161094970450956309683231823809246 0.0703781376131870692952635734724221 1.0729773751029320516108545234433061 GT 1 -8550125270326234274280237624427496171265626.0405248596625214836570148431738497 2.3590622833541113772464549613670963 0.0065756152692128429921981579983273 1.0065973298708868787537022024002672 GT 1 -419222122429893925051126.5710846123533206839794735229128729 1.9391039517785746635894484061040849 0.0522732596763651267325292698195003 1.0536890668824897031161403013970624 GT 1 -1825.6265520454314009768065093529863759 0.9569631068799401725136167219763044 0.0142567536778035457126757379569079 1.0143593575568269886309045288759272 GT 1 -1704867474084978884723377455612251.3728079664187934605742674609401335 0.0588305820268079794349201536922700 0.0656159477657484569847433639398412 1.0678677344401129521331377404618013 GT 1 -92845488759654704059671.0974742623841292842604384507377722 0.8373240592400145335462974602238403 0.0999812045113410291312489027139231 1.1053396319996036641941581954309112 GT 1 -4032464.2415507214685695892696091599179851 0.1991267863079088145398425051375189 0.0719380671538686476512680368223242 1.0746568104420714452253335507760914 GT 1 -9739128.3723573300171090540394971572190917 1.0197491383276533055663382668813617 0.0315966743622574588444725057471269 1.0321066197670232058970088730860073 GT 1 -38063262.8372887692722091500193502964666986 0.0677375222451133707920178540391771 0.0230002484295698054916310384991210 1.0232688812173495937679887911476090 GT 1 -555081358.8463661454694452430174995356039206 2.5990054930747247655077074573987323 0.0129173473268221186627400258868946 1.0130015017445526312316492040143222 GT 1 -181691672598730559575133343.1961994979462607540398186009234884 0.7546317697366980555623531582402726 0.0017191722321272532710950474890818 1.0017206517045975866155625861377820 GT 1 -1278616887090417390650784416243795770.4155201749123610749741229205436956 0.8097860504570460676377316114637428 0.0138365089882499558245384045831594 1.0139331257397137235087759038372160 GT 1 -520268948171034.4636590093641950952253264649599356 0.9093806291829139907432886895177840 0.0588205071288104119794018638489927 1.0606214106459517187632939773308061 GT 1 -5214774157515941329307698.0113843232103673761190509501893326 0.2011281706746126998896083563717728 0.0107391706847556192743825821725074 1.0107972517810758792999740048949630 GT 1 -44339813232483274635341287610256624787.6559862974084568133210931517769270 0.4978515396819643934737619178245850 0.0264049929493957649250215323724210 1.0267598656594755240257048812908956 GT 1 -1592999804.1572736580436096019659526020428209 1.5339090990394292828567522483613683 0.0443538237699372309570187443160724 1.0453675429837669988994806865264308 GT 1 -74136067363857366898061460570818348.1777931024090144898760116781784552 0.3363168828871193223061988241155722 0.0866432087574456657406986907827238 1.0906286847557422879441669027706490 GT 1 -24076295392670334952482625454643124667375880.2835997587884759909168192344148290 1.3331654668904520567875310887408613 0.0602543488111549146903415714443153 1.0621460241741543131048552018347752 GT 1 -237821.0484530843594264438086375538288505 0.1649517718450319036757149021077796 0.0464895614623536622866148077326833 1.0476049064004904775906663802516226 GT 1 -216593126104800609520594569814879080.6745134432222738212760797229593995 0.7430019160934491969392690007497425 0.0876183761675267281615560647424686 1.0916969292476839696625055421528089 GT 1 -884.1936642725591394509040031294213053 3.4936566944330419208709965284624972 0.0910254558616565256805046640847262 1.0954381894450315020862446257863025 LT 1 -911893774981.3044988980212590174183735538672120 0.0314922686601228849909430364755145 0.0878811453269620290089549521967539 1.0919849742927226747325890284569112 GT 1 -138350693323731115659259966673333310292324.5362068360979465863981689798057387 0.2363394324641342989841381695113304 0.0171922032711737747783024398950521 1.0173417051870666403907928514303014 GT 1 -187484112819643017745864238901755.4108543765286925037930012040075980 0.3569054981507897267160117019753031 0.0484262648902915832545262397868792 1.0496381017016780909662853351970454 GT 1 -127662366954351003106979562687132509759546.7291449286346264660006136968826035 0.2965423353259877246845622184440490 0.0256505996430669781464524395754955 1.0259853124009990932550283778813736 GT 1 -14963247990919599210671758945722625.6334250079774000272785387538809587 3.1893667232531898841040686713577115 0.0859926735986931318605275183109186 1.0899166918037597993075295039312096 LT 1 -2574481259727411122983486299911932905149.3992747278344117410567322162790688 0.5332134038385678585625896857847310 0.0033006502065999146797607820337360 1.0033061093683251862285057834133266 GT 1 -76799173648574187766896.9241113254550295812318620714219376 0.9389616373107187720251068349369741 0.0319266571852482407826094194306701 1.0324474272051509613132519464297788 GT 1 -829489778686549792658293650989155219917.2455790677479901480295379281137231 0.9573694920145645553932550701894902 0.0703094600098173069118500910366398 1.0729035009080273153494766931157709 GT 1 -13131523555506765063835941542.0842577654009700231109208891184134 0.6920102978070619743251671598090675 0.0411331601559580003520678468526934 1.0420030668741590972359182542806362 GT 1 -1.6910830340149693422435792663357846 0.7191401729914181305353566979066719 0.0857588921235876627682937622217397 1.0896609481400470157322364978057622 GT 1 -6423.1007677357306185636543048795102716 1.9001348566061804669842297145612575 0.0816034306782215755857686864506805 1.0851259889183912989736833194604492 GT 1 -51657769302019043473823396542500354959384.7131593934939441085880460169678369 1.8271859018173554055850305993447574 0.0947154480188488304561254416770955 1.0995059626238536725323151211763430 GT 1 -995039035560.5527660885758426096480158646628514 1.3275849979807364541310250881527279 0.0900412181759343417995614693949896 1.0943559751959061216462423885760192 GT 1 -32757208670636028981268953529284356.4017483737643653680382490646921342 0.7832095951479027785892971903084026 0.0222070239398666549017216566731992 1.0224573122749969659319590971469317 GT 1 -80366270583.1266566485375781520436267063588699 0.1202225439516396909465839218245939 0.0733145666240847411094575708135971 1.0761411093261169579693310985257090 GT 1 -17571844423104551543955808093724.0417992791482026904423008309398515 1.6021619054033042632074375440677462 0.0243320873271367043861299784908802 1.0246330038773212595558313217544028 GT 1 -122154117739771487025450253513683862425815.4133901707119639355318422175619889 0.1676129382838982239038256185837687 0.0852783826194924934534875238899309 1.0891355032979897950694038810676212 GT 1 -154.0744067782269183646298071712164022 0.4291195598682342829046275452035465 0.0977144385812528062290947382310448 1.1028242220838397962555899610724813 GT 1 -295015661724028474231326522.2736802943528541729476450892642658 0.6410848140450585505482388617440633 0.0583052487129875463665676571643912 1.0600741001388548262857909375303417 GT 1 -521749181958254002806280041300278970.0549766407906468664768361894713761 0.2259642143208758473931967722135933 0.0302935407082645909353962624039206 1.0307618725700355484605771457939634 GT 1 -374004069717661759520998.2121189250316255891277045831693643 0.6512943113969666805416342662228018 0.0559387624393427548109595345236178 1.0575642446433167059390292630094577 GT 1 -45712790667579968607839599168740933700340.1442711970923559436414378302542623 1.5908286732988478311814858868684300 0.0962906755217612011500335867805763 1.1012475140149886640017721749520101 GT 1 -2238263037310541932325907257447305119.2593713947246952426449810175440928 0.8902161121791234088565530440710698 0.0710891284012060052880887986298846 1.0737424849228471522554206605650079 GT 1 -2005502989415.2730505362166511247944563634748497 1.5658548504324827619116225539044876 0.0821427435044876199061195958860650 1.0857133944656971375688973724793591 GT 1 -5998875845522210220061768781360136652087.4341232973119243371091450113957705 0.7934361676458068630980699800448440 0.0119298681730025577732253078654756 1.0120016001229237135945189385358357 GT 1 -47301750.1556026351187930910633801570307681 0.4734456672114373329475492311788077 0.0697935939853151613197444140558234 1.0723487755090327288960597026884791 GT 1 -270394912776389.8217853736924954871905428744502874 0.2629635049058393301031561726548883 0.0855092794363568851027569450204956 1.0893879582080088448918996288769712 GT 1 -4237418536824360486224.8151215917991758926050393947639666 0.9315135488448113328849900609510835 0.0719024162301471353961400717188920 1.0746183967999175722225124695806644 GT 1 -21830369926216250777551158260202602380.0425537555664508424242686976583153 0.7174498014581020796741967002732433 0.0900878958482731309565376088401052 1.0944072729805003260191864024900211 GT 1 -1405618141551927918827397516937335402907082.7124162645813816233744685603668181 0.6472727268717860376577435976710976 0.0058661913582898556898021254698694 1.0058834650457807731795298933837576 GT 1 -957375397126252570544822480147667.2665081725053378052734434172609706 2.0419565264555247062754914265974802 0.0791197955981679582521388258680306 1.0824253224117636601859714797520828 GT 1 -1678.3843665698705118882890033525110818 0.4240291675949862532570387710439638 0.0188032453540273257566271833205524 1.0189822741389711795424200374244492 GT 1 -10590494402542731515998926664070825.9047121617185422696131256840975302 0.4006154987098125399004507656114942 0.0758989241983274133137198867912992 1.0789338239272870076942320388408741 GT 1 -150942263175324030819856257492602195.4780910743920422010329664231268238 0.2523418001473802908600750706654732 0.0630991732104284584421709215660186 1.0651778435517243961383229083284414 GT 1 -13957152482061756175.5583156301152992054004447955682756 0.3375294616995061415171989334787332 0.0473689375399277747805502323404337 1.0485275830637923277971386630791827 GT 1 -160728470465031929.6374106047607095705797574820562801 0.2748774457315193680230030298670906 0.0512590201618769506007888130166499 1.0526194577344912488753083079762213 GT 1 -2010574333962.0768980657521850977875071931315439 1.3322234800144572010083478525801168 0.0483671697338484655022020708964028 1.0495760010789320373056438853007393 GT 1 -11055706304857398377227661444680035204960501.0000834256670634948236605799242010 1.0820441547675960390690657725789043 0.0668349000392653704607010664978606 1.0691731377760127009397114238845350 GT 1 -3220469669694470389302957801316528.3979088482840847593649688731973676 0.6769572479772739234148646929299364 0.0593263998394536066816290852101268 1.0611590644348718555757782665919277 GT 1 -180924059746.6491960767328843366692085042051196 0.5673913935065295553052653578436239 0.0054828633972543114176423661842252 1.0054979494612587114927581862065189 GT 1 -762775870293677713088642917044738095864910.8126797889178864571192709205321394 0.1858918886926584897353909685779040 0.0326198089804666076609361381532654 1.0331636953177516588969876067421651 GT 1 -37174369842774776333854329020224198.9790722925400341341482668972567747 0.7822590039226147114729355607744756 0.0708070968143453023111988656569242 1.0734389156681543794668783901383280 GT 1 -627639913351656339741.5421285148227914150128369856610893 1.2298264885943238032066101106170783 0.0930450378341792192735036345326599 1.0976624859258887246471409830267633 GT 1 -5910885695252271701.0110970281844767909363450167450925 2.7379941199632635193417710438143529 0.0833692740558627207375804255284023 1.0870505858192270291885686987619056 LT 1 -58472759689359540279736440352173922110432.9481220730262490078332408932334649 0.0068169965204668658595904059416364 0.0769476079303668810089263951125605 1.0800692832845623027413438686866079 GT 1 -563029586.5118414321491115440522699720643146 1.7186338415885399611979656150354283 0.0623784688302417984097518172901122 1.0644088962914924679597822322631865 GT 1 -14835792671454086211089478786899522.8195019908745143036014140223537889 0.1979487697227945183527305355769409 0.0610578269000306463456364269920505 1.0630013851633256912545887589427074 GT 1 -70582599505730453666073221866611930400797.2505527866306769140569222207527422 0.6700927901546221384828850049975814 0.0233378387138682011263285968238593 1.0236144786673862445804652035817416 GT 1 -7758.7794981512053621043155682896443841 0.0052407230509615712523094380960665 0.0807189886657040612707085689262390 1.0841634238959782097321328359871853 GT 1 -5137980111964.4021900207486385075795281425537879 0.1069967408003424341984157877233542 0.0444363165209274659145528405601043 1.0454538681464616049840239660603413 GT 1 -325997449016156307097435.5337700307378336141761970802697786 0.4755936256451251436659522442517552 0.0561542030242885324493977053116614 1.0577924768411313361038780158438679 GT 1 -227993634293088022611.7365282529361754836377782659001767 0.8817702851176812845322211934619966 0.0707552308594031947179992348341609 1.0733830989402351144114094411311681 GT 1 -439738649089255216541270749696353.7694896661394500241433751451448298 1.0843904532913258517402925623096314 0.0423252220932412266285818515522696 1.0432470389120897723530433782090733 GT 1 -53810860538423280010352122861361.5726411661846803956326908715156275 2.7633182332758647504401019470067964 0.0888166635456081078332542713548240 1.0930111544896135677971361458359227 LT 1 -86425310521.6150891032772538030630260204575070 0.8106828949083913878468516232208142 0.0766358563685946545206100501308414 1.0797316004717117634461353457560401 GT 1 -33076136574164381783337036326377.8518223519943125715880685349900413 0.2473503486310350072090228445750901 0.0994238148733389025092472300449503 1.1047205148057793359301218625926026 GT 1 -400714483.9432367361944039806376791759630145 1.7111695678122893960872771941510573 0.0405801121118219333900466460610440 1.0414264606228999315672766605170741 GT 1 -360135796550879.7589173330653018803885942931567068 0.6716072496323110806560626378065028 0.0675540272657108295751225621592909 1.0699440672291953827970463184484127 GT 1 -245276127273127068461344464573659342.6365739872298874501354550264741380 0.2434611991990065979530726280745565 0.0839417754604821728725864812751347 1.0876753524203358135151835380678843 GT 1 -940663613.2942643515733279385712757229071129 1.2823361628833951452746479115624028 0.0796457340679317269475657165335662 1.0829966113948258246363581897009648 GT 1 -71703357483939337303187994220589383673446.8483458846523040457623342026377815 3.0641961829947106049983969509000761 0.0009063626426316037632805082042674 1.0009067736376106793365058083128274 GT 1 -269.5574421094831623194925667595029802 0.1178044255754072222250298485616914 0.0430254849295212223773407548673009 1.0439785179041664292029062794985519 GT 1 -591059080062412412198981503950.1679996232668646951858508297279190 0.2071435525269827936865709178246274 0.0474391967578358477654586301976695 1.0486013385938307958221701546898424 GT 1 -603020765171715331329260.0314672993319125159822364047359223 0.1290430406406887829174332811094805 0.0514273952659534071947547115011729 1.0527969456372687288967700666213302 GT 1 -14430257662242477762562108667.9414371425920546727458752329011342 0.1070993720201456064050378821267420 0.0672652506686695571435577251015438 1.0696344172355702471745146322681034 GT 1 -1468473432988972.7680837637047097669203748426112932 1.4755917874574278300062084962710681 0.0375200134115677326218064149564264 1.0382420061912539710259211633201895 GT 1 -2609697656984772439035571049198952087567.3481733124284543194304656120763076 0.0131151074787453466110410414546604 0.0567294953903112184557009420695950 1.0584021821182899259526552736168581 GT 1 -65380820248949975178721892749846038344.3316540837195842251591940970641051 0.1000597526368941383166017168761482 0.0977577056071058672972819286255146 1.1028721759302955404454128788840674 GT 1 -3257967814061410608360309.9168116021853814475663868298159411 0.9775981515447544821916011725475036 0.0819573546349811365781632222216736 1.0855114347946401921916288222147858 GT 1 -157756973200800037114097828267773859115674.0189560348927741456218421666435962 1.7311001074693961579721562905263478 0.0503107913169142992035489211626046 1.0516204966670250364173299300790627 GT 1 -3660718489115612583398896.1771753770354494967409990629293920 1.6182886396532479243388807551001557 0.0815546084266400612287879335307778 1.0850728300156305854962806153079321 GT 1 -2.2271940836982325228749389602138502 0.4151718213180866779222301275494289 0.0108940342551849684338909537838380 1.0109538087664967327662427630822989 GT 1 -9070757716482967952583306369029.0414985082016420697030760190742114 0.9629876286478614652288831378326449 0.0306288858318625888718160245586965 1.0311077536544553544827343933720754 GT 1 -4418896897937527723817445975635493102357204.2702975005945945245631721024450658 1.0304150658421671767456188869441982 0.0253581410678435367437169553788465 1.0256851996364860223950443655981560 GT 1 -403804337112281926559236942333637202.0208787120953589935264885056713480 3.6334104368834509778959136526110979 0.0653559941353740989451812096728641 1.0675895645850118895958281856994799 LT 1 -17448936190201297720.9910814326334953080561876425967098 1.1594851413333922592323806453793313 0.0639359197011326702028449799351161 1.0660713429901867926443098110270736 GT 1 -704780609996362839838069466009969173804.3889328394705973388359369829332034 1.9660565501732622705703999345716820 0.0729033501523851749879129851355634 1.0756974579582826504840581885947594 GT 1 -60719144251154009585480976917613071.1026674591828337806725586400932663 0.0703921999843046718761062770574203 0.0716770248247741048463674038989985 1.0743755731515858644516708148101782 GT 1 -1047.0994458059316216793573844694095484 0.6579390947800778893768822737917148 0.0173149468113566982668172728506476 1.0174666036728053601113657864052636 GT 1 -49908029104380993330742403051430895427286.8548763506449197347555781168080960 0.9523646235799122504778063277460734 0.0291020263711354254723744070460469 1.0295338897141334789122444888027184 GT 1 -122219505869962.4840407781209292569461833310092752 0.3144332831995984241092530411786022 0.0227671435477095116457041020751840 1.0230303171057808048648904514156973 GT 1 -81306005979322454.5717306353369939719808527442199357 0.4306699953305457800406770723486044 0.0219586798991561240336018695674284 1.0222033602479436815958022732980095 GT 1 -17730350915668649719607433293214852701156.1860588427988548571415794608275849 0.8322425241900427692834273702366665 0.0463871205863544907159102316018176 1.0474974766657340052797086115226187 GT 1 -4006416061784451829789748225948600401748.3865909892395380882368905359707795 2.4479989291750989564511635773655589 0.0921275685227916445453502291529332 1.1013221511876184131912976447267919 LT 2 -1114051639068352935102337210736241255.3323635927667443290833437057017796 1.1439549651286464301470907735696612 0.0179566256533487155820667832759209 1.0181198022073349638330091985989671 GT 1 -1552754.2162128768238195871940541782885114 1.7523827926697566444985250153323160 0.0483463191562484637470945956743826 1.0495540910013067019204006863777239 GT 1 -29422957756.6070269024263222955555735309469368 0.3025411628254901048465154560443130 0.0533121501516468356447237006251959 1.0547858601449743457732192296398761 GT 1 -325849307280275114.1297347256057578647092542306406955 1.8402968847716375544370067751444226 0.0182986522194822686214577782415983 1.0184681433799305201496152580470704 GT 1 -3242908.9282586295378943037183603016062641 0.4404237614050815394286343300287796 0.0228384726846757912074608160920865 1.0231033107017411495858660219440193 GT 1 -889258410285248223575572336656292.1789757855061873159653516610767957 0.0695692357884748369052136858320014 0.0785317287585261460728072119537162 1.0817869341075008802889600606579344 GT 1 -54767752890728613810661.6309866789038470340109856575155308 1.2415185616634845116086908718676171 0.0109945638018724225654973708080081 1.0110554507131285151563193510723994 GT 1 -7129613328932997.4788683290119992281186209097478200 0.3116943754022556036927703526616320 0.0074457647846609863883258701677869 1.0074736228605398053225025043905997 GT 1 -2262780703368267150440260181928184750769.4259077724770225137858595870711600 1.5271975025861173187974653102743328 0.0480174773465702127926215256005914 1.0492086029166137665371508991447085 GT 1 -797915903859120733413386.5806066251984099712678790497912454 1.8994117891362887477279408715075117 0.0909078895123433368424066466643910 1.0953088582687757590590357633174862 GT 1 -1910776277828325193214614388144268203457.9895924077302836290425328666659907 1.8270315691768848979889027092939580 0.0552364580524128635971537775669275 1.0568206029599653938009755227149564 GT 1 -5770007146937141043586.3966849306004949370214862911711532 1.7782604348095241045228803859272787 0.0964139039293753778216376735180597 1.1013838817680455689723606994399738 GT 1 -854933953917700463113120931.4400516776962966912772043256869329 0.3039527443585006770558155374243334 0.0610697520193291077970515492380764 1.0630140858336851391281642446492514 GT 1 -36097706671770131031127714045166264207.0130626581691661695975592294198595 1.0384248695564036023523652604881536 0.0760545195175970499899070293376875 1.0791022128881691985974215078010458 GT 1 -13839444386365714039.7005226760181326397725010769971272 2.5854866720414250279966426873911299 0.0079982306172088925636286363681920 1.0080303880468477996340650452963210 GT 1 -2046956483845612358934604825292189879664.9183320587264765533507241321306118 1.1142025223576614689230492179436111 0.0255323801645803221587576864492259 1.0258639880515021872954573557910129 GT 1 -17299445901435720262593146167222528764.7667850548033029255095586081661211 2.3023917553731169449192915786204321 0.0791897869463357648016819420695980 1.0825013301354702357289867512435104 GT 1 -202159245784318606603.8750027381768854196995537263433797 2.2257939098304255458243995637346830 0.0516462860368515273411122584518037 1.0530277303226960392424689631643027 GT 1 -7118647273759468162.3725162387639197337501963273427950 0.9627476112874046167621296854211370 0.0757955815803080788369158373748791 1.0788219997527118429065464189197113 GT 1 -527567614.9194059111576247029344142468888275 0.5904182223478721430342671057242571 0.0721039696344314663650294476177613 1.0748355887164646910138651448883388 GT 1 -1260117874537381691054965209986324219140178.4828971868525115531212276014033049 0.7058241313976482807488177180433272 0.0127415942784064702479684893185354 1.0128234645729782487805920283938183 GT 1 -179038377473131571599249140714.7757697142027911594130768880739784 1.3967071809516892187870425675362147 0.0590673940280217808506936328980425 1.0608837615450072826611406803742875 GT 1 -22283294324858907249190260.2557251837792283507401836999740848 0.4031050956117851954914969402329605 0.0572484577881681237617862965290746 1.0589525069798991941900562340242247 GT 1 -19893259.0033925325304941185550054625028318 0.0722486423847815171332660174309430 0.0433211586972664383840529746404853 1.0442875328771377222921560928942160 GT 1 -37969164291073804059268153003.4086025211857776443978372972824355 2.8215777316191223465332892723579836 0.0944566543113103453856566752648110 1.0992201334629119660879468657123507 LT 1 -10792171183651.5541190436518246778930936353574152 0.8227959021884763776683890739378358 0.0931882399252303172546877963497067 1.0978203916693260611516471743020870 GT 1 -88230238095.9853545163134143221650218872517946 2.0345289307201518710922386528572744 0.0058320505892548864536640501903016 1.0058491234083506825934214620359208 GT 1 -2731826394108315503002160625104.8495772441230387135825518171980363 0.1718760418852374174228352169115806 0.0340914849724178870486626525077979 1.0346861541948062671277789285839923 GT 1 -195378163120955163550339195.0031843270310963878989472381611926 0.0516565721936537405636795668116944 0.0016621181505235277470967508598093 1.0016635010014168184774364281602967 GT 1 -26640544009428728559266027951069.4890635713672903834016937217643048 1.3772121113719553838929147479709780 0.0346248361555789496733784352017934 1.0352384823717124540939672047443851 GT 1 -5490828910009063929463223146261236755101352.5813135556121676924975841325759025 3.3240146906123390027647346226571859 0.0229337544597608738961345799349365 1.0232008241814737159014826305161204 GT 1 -1236994271500752509903286352801367342710.5815865054749629956355040534021493 1.3839003950653355119858384244127521 0.0801837511119010625510391164650864 1.0835813583570954779826306415737792 GT 1 -6.6209495097627885264113373650508776 0.6049258494920968187915468033937397 0.0998800545758392321135879365460794 1.1052272518443307878308118412775200 GT 1 -307276953545003509020242579299244035125892.2488923369568866793965237607402054 1.7529191193959281168788725460256870 0.0567732835530307052182878808136980 1.0584486048346751896086722156182015 GT 1 -31688425540946681810984638159581128.0297057714657716421784897911446544 1.6046534328618866957028791609998690 0.0942473798887697995014348969159288 1.0989890564579131326506296119183873 GT 1 -359722689491748267314340295898.5212883315533880802634801775008960 0.1512183884985650794425044719753060 0.0066620232872246348729001274980202 1.0066843136186598032801347396360800 GT 1 -98.8032720065525610492361020790930113 0.0301262491897880905369361059706247 0.0519198683535023911371966366609868 1.0533162532460577972895700982002982 GT 1 -1238445431325267264819785222.7695766656219236078084348831982885 0.1602855967297636409304470699283930 0.0893474591943795532058533922803675 1.0935938586403176277276108186034571 GT 1 -1897503222660482397579.0460235970073067120048934047969509 2.0523319987319799214653010893579306 0.0946014391037366475189006086309428 1.0993800334488897861206879252345080 GT 1 -89836884507297575649801882702064.4098978225880249051820051600520676 1.3580711214004196190610183343284794 0.0200033294967399371541907012984316 1.0202061047689437770585532681498527 GT 1 -866351846669321759129583374304787484.7455980262507735101545085546916341 0.8169868849583008619106803715798139 0.0353968495068268529416555152164691 1.0360385052390049003354365575028880 GT 1 -3540565989261816.1216589180776209521361161886789764 1.0900905683272221181478735960059451 0.0653905497896569379295466044395612 1.0676265372643181350375602493278116 GT 1 -612336961914926816478.2616666166884315515795141308072592 0.4589239745054747526343630416556834 0.0213143197344728198799497850843269 1.0215447500403321692415249021090435 GT 1 -3373082030905134882712497565470797045.4765425864293749715015257396876724 0.4769261781562914564833629401393033 0.0636917724787379065434776485620639 1.0658105538055157891536109444925883 GT 1 -20927207734351332150300279181717941023.7818343909641539006952791351399033 0.5414173513850129186053730390120248 0.0953672412697849569632796400141196 1.1002262090961709038429430866119013 GT 1 -18358148595829609161.5258115223997260977767675663031366 0.1995069697197940670258560724589335 0.0086123098536012052724652706653661 1.0086496101094272312293223401814000 GT 1 -6468.0311928782640046797984492407394212 0.5781225209682852660816374012907044 0.0706693216902813970555932729704969 1.0732906526859807219703442378346142 GT 1 -15569.7879647203178130895265132001315088 1.1293927652481713954082267499230732 0.0939220196839564751684032082464873 1.0986299056540422535946018570433249 GT 1 -159304207839725385036969409800606.5725612568980155382272423135109619 0.2776118221524502924681241912197988 0.0362780486496015687632165249160899 1.0369524581852915853414170967379280 GT 1 -459559510179255.2555682650557931860368887595445468 0.6954292260063504541207301380997839 0.0369154704060354720326715999220708 1.0376140936800764252911889906618582 GT 1 -10417929967065796186.6857521028545164532553614431716493 2.8765412234006743225915797003720408 0.0869626274504765500451392088982251 1.0909784654357509600704494832839164 LT 1 -138901166228463.5441805570502696993325420987633377 0.6369271301225076516592380874452525 0.0613899891005151632006715242505243 1.0633552099004281241862798391351414 GT 1 -131380640144751162324052.7165999784904344305184747501126294 0.0711104917350488307077195808961408 0.0396972998202448096413778936691113 1.0405067315336082967902744619681981 GT 1 -1495110151591.7738248992750291741205560566486862 4.6531970944668588346789288243153136 0.0676413768711358761440364919297879 1.0700377495438815495643579921530480 LT 1 -7091884448285523074.0346219361269491134047525050277357 3.4995189536087061504920638150199719 0.0773637754042407755911171657120835 1.0805202450309468706554898958204749 LT 1 -19266719544179442981922.1663775434838987017475137137288791 1.4451950135204878111413869752182837 0.0509050648013210614265616570925078 1.0522464482853018322113636782538035 GT 1 -35724522143649539469393684360205441566.0251132443736633366428305673978282 1.3507096957867046711579732941455796 0.0368599321415012266651966480255629 1.0375564282711484240048360788887031 GT 1 -8803778437430084.7849651274929909091497325637929712 1.8010652408023787879876583418651055 0.0966642494219204867314851330652284 1.1016609778633872299016912331970070 GT 1 -1.2380997995018694520218776994184291 1.2073843872848950529945347162666984 0.0051485118514390435729087733318520 1.0051618111057990882898147276388160 GT 1 -19792181.0369346249604741893734611715592535 1.2750310145659566526251557455018910 0.0325008491312937726945644749294407 1.0330407317336693228407781102545790 GT 1 -173436851.8135259930468888060442096422408547 4.1808532137840513389554741906663429 0.0208752576311962248461174890891702 1.0210962264186768597456042844975800 LT 1 -21116831.4973007462032901169501773831692635 0.3230260537267469519694362085837135 0.0708892710412201134294814384663036 1.0735273557115433552696721476936260 GT 1 -2435674683997.0746437250454959981242837199467508 0.2587068715655297178917830119560781 0.0073445945508564468083775346622458 1.0073716988805028555511416962753879 GT 1 -85.0857153194729041380660297372565412 2.4409244978847081822580413571853413 0.0899885683721328700043944298938320 1.0987441847869304785234082540462208 LT 2 -1453356703948894072561454122897466453.0946685451614407017358134220305085 0.3012222475544856963189711595684974 0.0569581082601118542573944224615784 1.0586445734330714747082889022934573 GT 1 -1683557308968510883.3372689071564566782082998942119777 0.2341435143308479921209675250156643 0.0020350138405750827541886695798872 1.0020370872947235692947418729492292 GT 1 -1355794048708085664536899647979080.7727357175983079770638733295080428 2.7277596015285373951318456324763805 0.0972125487263439942581611894215437 1.1022681339208533499307535150250190 LT 1 -2602892296195543355185810508409.6887482573049041819749894243264315 1.1121304405333392535055527942630314 0.0218371426064745431895580267458666 1.0220791019581023494300120168533629 GT 1 -23972816.9668786780610131687849696890510062 0.3935537941561191102630021504861289 0.0847038222905686407632191664183390 1.0885075745976850593222193517338256 GT 1 -61.5934754199681382418062405769388000 0.0973403732767749455028930922765768 0.0817655810675524402137795844280806 1.0853025626458184846348673072244333 GT 1 -4263453546719245.8690891856838402367018661508898831 0.2646115516240983294589436223522810 0.0278717178743706687599792066748415 1.0282675057344580206108810626464519 GT 1 -1221936422349843.1200149322747319049352471543552340 3.8109110301128533303975332066408593 0.0328190004872000058988418647981232 1.0333696247123990429640552973531178 LT 1 -332541196970679035170008906871808.0084518631314786395861073318734302 3.4406350665213887288053112692128196 0.0756553912765594019017450118540304 1.0786703237063003502224325726418238 LT 1 -102412204185108564.0228401992582404624091017557038741 0.5300858810334401454884214980720059 0.0831229547089371884327661587963728 1.0867818993677466985334386822876222 GT 1 -266.2214770102981846039011464532572381 1.2899437952749009267120376901486922 0.0459334699997428167451841915076408 1.0470218720196657705166172325393407 GT 1 -580.1636508065570607050501050849245380 1.8381278588126872009065659254976016 0.0662495531439187387647324262607644 1.0685460639744949031320310279159450 GT 1 -64651132904266251392551998301675712869080.0805604954074353589175038974767305 1.6018427422172933950034429701942048 0.0997110456349073505915255430414054 1.1050395067810308859323928289137751 GT 1 -2067352972791389149655452692611370457206.2277635073262798983052079095412273 0.2663243539792395257752271216183138 0.0104805830786174094490629543739614 1.0105358911695557219527924723325828 GT 1 -85466787957331561744628241737444075323646.2819035306476403104809315333130957 0.4937820575946023718163986772717710 0.0501272717597913055546213467731999 1.0514272736358337332267346697199176 GT 1 -33960538087931354024257891148113624.5422342265971604508909731716289811 0.4014765154186511278357460463482947 0.0695021109141050558995785017685591 1.0720354714828508936457627084956734 GT 1 -292746504.5726334229086852359989626803864587 0.1404374178615665339733246591495560 0.0747064540160049026407717317203276 1.0776442448038990078512173855218185 GT 1 -9290493902178643901463528382979.4544147738100578861217774506369175 3.0783509755045556506959560023931165 0.0394717798546970845629974774839492 1.0402719165228776395091693852742284 GT 1 -20022593568258752432247505831081702713886.0898571442090961292398444006562148 1.0933622933588432093087945656777822 0.0531444864908869562936428853647445 1.0546087702885257823787297287610216 GT 1 -728458497.5030213473045914669836244670524430 0.5928602350178101262569012692826431 0.0413477809117019210028253986507023 1.0422269194149099981771637972640753 GT 1 -2045865540957629788.2611825606260060190189928206809099 0.0861168688125830153100502774117601 0.0550953503313486800343052222499278 1.0566712564006567242760475566841927 GT 1 -42943.4989171896580513217866040237408857 0.0924943014152033859273276490529482 0.0267972776681215675940238372750926 1.0271628707771767686180570986653651 GT 1 -644271643.8323660077338652269475999353681836 0.3035679482824359925988145843548876 0.0819963462624344193708117910503301 1.0855539082632866012666277859187654 GT 1 -114440611429452152153608015899209.4083832503204832172455707641068695 0.8418881855371163384986025333431385 0.0345156214031619988729740874006861 1.0351253568437982502698090945480591 GT 1 -182776102183129592524.2636023036209243555170351320352534 0.5498692989276792354636443306526828 0.0650508959463341615733339567536522 1.0672631853422454109224551433599982 GT 1 -4451521958.0023882907274766125943552169884056 1.4422390744208258293463615707806928 0.0467639897662045877994677778717975 1.0478927562149454789533885233983309 GT 1 -18750594343830.4496942157828053511015939543065532 1.3245147085776501099798647495766681 0.0895549097167087624677927755314824 1.0938216888452281721679711026621539 GT 1 -291646214648096.2370291569046545788348711371823251 0.4809484613171427344865134515477519 0.0756047006277231635527112739265903 1.0786154856529571354365585926499028 GT 1 -8119737357164507203965217234051.9823300476361724501318007264480226 1.4032343162725198687758960123309573 0.0335612526560262103704783570796961 1.0341373580855098991022244982402774 GT 1 -14.5921865866726685188181585519841458 0.7716505311651707151121392231539407 0.0351961101891605759468688269465398 1.0358304212896906453222456525951009 GT 1 -247.6124889643578434568617849782910130 0.5114590430613704247863931523324423 0.0227580563982957454012180366545430 1.0230210182911697587875832554347107 GT 1 -1261843654928272265206639725887209725501.0106180017031993429985380904030446 1.4613635753127461988480054557570543 0.0668993442669183351030577470406006 1.0692421999955620499286325127741213 GT 1 -6.6971684548449653587280627179031383 1.8591053231541848058191284419814015 0.0949025213528274043529384892121377 1.0997126298703016425855236362971742 GT 1 -3073490842929699813.8611674344755780564969030099114185 0.7357970266240010836912916974429114 0.0878195745586510561424319840791380 1.0919174735607917928387293577416269 GT 1 -5161643.9177254357998347166088090062176973 0.5114754183669981206033804144282169 0.0625145588299003695569207887033653 1.0645540506767142346663694983015971 GT 1 -80606462486203338168411052441781950.3538318278553056804881514983523447 1.3527941913674449941347632204862458 0.0121238285796087309967452136160949 1.0121979216595063402650868013532269 GT 1 -4697.3058019241195550327227593529386140 0.2981492696005597953757906317462587 0.0960916053469931665107750390414012 1.1010272570729749486494736007155143 GT 1 -19144132.6105162598353150097165354914095171 1.8632405377487840564630411890679199 0.0449975418180690185164059240881330 1.0460413644922263947476730537770311 GT 1 -34860706163666662356727619448069693444.6583022621077894167621016993006887 0.8778337264707990897930702344264521 0.0801065499156958060580316136157103 1.0834974307718969062461799863969999 GT 1 -483591993874.0094029719799262239674519514165948 0.0474664720301437897211051902948634 0.0420669955359363185673010149720638 1.0429774361664280988591337906694347 GT 1 -56914389238.3360570754745043461431119909990665 0.5186925428089148699554125807628271 0.0298232011810525015414822004102645 1.0302769572696307360331490901264502 GT 1 -4177606113623489113222315215.0026231244932007547861804200241733 2.3042477469244762348903136675947662 0.0183573050242274530428675074598277 1.0185278912422361927323179877700808 GT 1 -1396298805.6443358416044653923257234948410042 0.7315361411638739460791695246784708 0.0633928657618351159566161134346382 1.0654913650951837326268611454257177 GT 1 -288504349028870593370788057395857105.3386288768498108791973963936613601 1.3167391625670403570277800356612178 0.0450067601634723188659014222198857 1.0460510172316675731519054256728383 GT 1 -400922306896.3478083587102391022170162619124710 0.6238306589934346993116258016901507 0.0921530928039761584953992528255231 1.0966795190058304766642851326049409 GT 1 -11005269068625950410468.7088316152926720261467547683970578 2.2306894137219706056532377538124254 0.0982944738235125612529877495292093 1.1034672798752406745302038020808098 GT 1 -950171.7227137261527690179570831279434738 0.7768851722407794048275502681742149 0.0873006673051923829101831168108698 1.0913487705926858747712117201064614 GT 1 -17456390735725095748390.8738061167305057118949468160301708 1.6239058769182647366051423925606891 0.0908513813144972764141563963938698 1.0952467012650769686920145651017013 GT 1 -189837284389556180211369691369528787.0466116260999901008228646813296203 0.2647382840590473806544373801753953 0.0377363627973850270983695912103085 1.0384668147154171380431107532080065 GT 1 -262420058103872654273.2977141341461516239516596408764542 0.3948854387254432055011187171057655 0.0885392588818643804260542766818810 1.0927067564238593688781724759991488 GT 1 -60431655426.5576429873004505177130954734204966 2.3788225952052562144185133555252812 0.0782802427539326182479448114095802 1.0815140525541626128642050754420625 GT 1 -5896682534261567555301.4047800420408100595398318981612434 0.3688992744214405859556874709574822 0.0697312777882352711721708789966673 1.0722817859576458216150528530268324 GT 1 -1091836652651708412359485178539338063253.7291891155423439493451373202071104 0.2282290363308364641553486502704368 0.0426117067732308108338917873977849 1.0435462297705475817843765653989167 GT 1 -1453651542132479303194824498716627985993104.8196869696284830822163584320120422 0.5391819378444670606945369906797371 0.0644814621926676057813979219720138 1.0666543175291762555117283348197803 GT 1 -23876970.5218854987402816439146289990096200 0.1015724652717137612785202768005420 0.0816067588511487054286012417804498 1.0851296128201661903829625703056318 GT 1 -9534375741668946825894509062052.9125056974830031253345540718050744 0.8311229844602458939165844959743589 0.0930332457500891899577620134747183 1.0976494841695466744237940334043313 GT 1 -213263452376.5878839127646329930594024983435409 0.7205397060905846119591962016188718 0.0560072450218294380254914306424719 1.0576367876773478763056241956191327 GT 1 -141976803097814156.9590473747266673814952672983237632 0.3533698583886069998767686954383542 0.0831818036413089322895609545712461 1.0868460855324432947917879577763519 GT 1 -1592799428168896515.5495234246216975658871668651581127 0.0206352874459093217605894778262651 0.0566474179778180428326900376379836 1.0583151722506311049891481559768889 GT 1 -199624802895.9014187687932301469639159455490367 0.4816345449451772311570077814178762 0.0285251267251705456544352012795610 1.0289398743438630753364859121555034 GT 1 -69947138.1264910837963486231567992519026584 0.3325998174184762810167063821946345 0.0219496575697273119814933128100418 1.0221941353945263305456418865703588 GT 1 -42509951085391758656025116049548051.1948952827299710289400889703127436 0.4135206346544358189291294452859228 0.0091994489578432580878802957663257 1.0092420252082693496654993386846413 GT 1 -58163364347602959440604144517810.2495023942545296414432257863785278 1.1267249010010626416773943134627663 0.0703948002192116381739090989336932 1.0729952993321605017369440175880161 GT 1 -599417533943204339898.7139814880839149750256665323435510 0.6949384048190370792497877755739937 0.0746064583391454907417770109053468 1.0775361815039232412001115120224084 GT 1 -304168629096.3800183492049300729231144000952290 2.2287380477370595204853911934920605 0.0009773359894458829125819884530973 1.0009778138936713890212084666145240 GT 1 -15941097389324686124952.2137477602756712273157992201650803 0.0683968850355839379721629262822783 0.0573789840431154518910252519866208 1.0590909690091573735894376423226118 GT 1 -6889767979077434622639931567.5123142780517210614954411981537312 0.3031214105648709378632680709074718 0.0604072014666377364095134594818479 1.0623086906229171321219424593242909 GT 1 -16557094968483221435305608.9274256691649516664322327324477226 0.5605802485721074996133107821674118 0.0174220385364668802543791905238852 1.0175755882966625749874891897110703 GT 1 -167327279698465489821855.4450516365820642308466263082668531 1.1551004445635880606700716534392654 0.0500986619201020541093676854385026 1.0513971544335573993939175830968716 GT 1 -1503171.0882656645235016095415433084807370 0.3156788456763889028707926562593599 0.0307151625615949609063238326787785 1.0311967604013387650662732586491118 GT 1 -79161112.4594858768164325902407298216622584 0.3506379754556720099710552046760514 0.0597129576664801649648444195465817 1.0615700861476452322959972763053699 GT 1 -21667567455703147556140781445962986633880402.8571936369570781099079217037835223 0.3762259232322105088836553344862520 0.0501974815276155955405924596009195 1.0515011912888407474291713378101773 GT 1 -312372944710651442405910421221.7318319446251241521065183471046587 0.4663495733681118463592593684809588 0.0357474713922185910853491448001071 1.0364020595401924546913518119191364 GT 1 -1111122865.4098858827098072411316148552758661 0.4101576049954179494042273346274836 0.0611040428707541793191549839926891 1.0630506076921356935561085545933704 GT 1 -255557998001612.1225368139222213843199876757318044 0.5193360518748635547822126827384624 0.0544262425848684103768741460612254 1.0559633850259688357662082358185595 GT 1 -2893492204843119398960744858311799818968519.9407877237236791939265235458011734 0.5146463204150155963162650686494209 0.0597503558657727753803848413663792 1.0616098601117126778469018466431459 GT 1 -51336418421639.3549633196156326552618686372280758 2.3784386263801674275370461155166552 0.0769422335201704685672427630696384 1.0800634608690671727647052788902103 GT 1 -5504.8210033561239805656718718756388835 1.0979473173975214115880465679141584 0.0855516622444041744161454173773119 1.0894343050863939836151897219572233 GT 1 -325387911.4232771890454641781095257216709195 2.5812545685385790713682112706926065 0.0391875259362076427002396648848587 1.0399760253033556794200479394121739 GT 1 -476485.7593760592800880218487023121657545 0.1382083218146316313139786088479986 0.0661505719097509265662515669951365 1.0684400656441369798052051295946353 GT 1 -23590039503980942271955145745.4281394817228172442808885824789449 0.0726714332111681080873488950247581 0.0186040549881496430274220905730121 1.0187792871752508315312503095495613 GT 1 -551611070629122953403095.9302571040114204968379931894379636 0.3290642972366639595295182461109554 0.0350673231709022064271554941311391 1.0356969450207781287133742176691903 GT 1 -39944765992129250061.6319260951583835603200337014537749 0.2011175928150751330124300318956358 0.0691358505530147984606352772490025 1.0716419313136251842168379264283776 GT 1 -1458494273.8746621029248830302100015053860023 1.5481566404129233419751521648011281 0.0536955204271421699660506497878561 1.0551909017024896041893316621659231 GT 1 -1.2246820200375366016420085650739634 0.8827719012777490848468373719557902 0.0688142250509137635582693642708843 1.0712964781642915452034193524545385 GT 1 -82.7910298145336298002685442922941920 0.3235138522724366093252268149248017 0.0601139020340734437654967122675695 1.0619965834367268841402164862265846 GT 1 -45804181.9896397799611210829216087833103052 0.0177527006002179491068603298975694 0.0357721473788664387547366265174263 1.0364276506604230579367495782169836 GT 1 -2320322643252153846768599803037489392430222.0112417571984942243637584773987052 0.1443235968035770976544595275298542 0.0812997708554621373397138833247884 1.0847954022821525715500441696270009 GT 1 -2594967529458586022007109.5663770987457063020168407523706119 2.4900885504693159157693482056750288 0.0718724598492949541829749184590155 1.0745861201321053074990259041446139 GT 1 -694238764937003184292125104002679782573146.3292446083999213432347321080979180 0.1426510866239128336346440792923000 0.0997317489950475936439915764200372 1.1050625033957226147243821587599731 GT 1 -2254517785931127153600352.9556720417227868661433647952934497 1.7525811057530808035761813071121352 0.0092009567386304937851380439530464 1.0092435469897549438111391244617271 GT 1 -2894613577023372157014622408382329.3203530145741243453095649442350771 0.3094029948141359651112963747541950 0.0381173943636886195413528042903514 1.0388628673259734479255120879787100 GT 1 -7880619436155702239703.7022058110216621402387537792504309 0.2189629491725811435497958645971621 0.0993304689549627460052254944530348 1.1046168688482937415466702888422026 GT 1 -1007742047594456301306263374.0745727151892190172771775876705079 1.0548028452924363055259763574139452 0.0800220245230724944120100730982848 1.0834055489246020674928756057960431 GT 1 -577646530503113749189762759967040450.9251105583089522479268719149087369 1.3867674691576652147137477371969806 0.0847032384529704463367250158640310 1.0885069367304829367292102781888563 GT 1 -7054394741698930939409204774492928056565.3289219397867986861325879300702172 0.0031228567052628683690284469048895 0.0126930924023874135746025983171562 1.0127743379366480677345137601410279 GT 1 -12378265651593978797.3085740486727768189907799208490250 0.1921732446820633984945416517563504 0.0347859006877956856876735822919528 1.0354053376792231414693182991837352 GT 1 -98736439861389842822674166212402589475.0311605225659135742933886301375574 0.9418278967750827345294964993606224 0.0242089569418296908471526261136584 1.0245068107179839275944669467815853 GT 1 -67718464228044824245589400588374.9358227116233015911977701619492596 1.2039363715780370997273430465090856 0.0148300591105249428193291499076330 1.0149411238696316377024895199546739 GT 1 -20880969443479070189036243364017007.2751683780488283720548555964666306 0.0119454897905426998197128415996132 0.0656750295427795031639180431401084 1.0679309671599567698342085907513335 GT 1 -15943514590645290447966608322626.8027570655996463300497940816570876 1.6652490723479941380076225888599122 0.0076744753699524305486917358897262 1.0077040756979665583152641080459942 GT 1 -1338063879014868951305239474264531300995363.3571538738903426250065454732433436 0.9389021304523226072461808945058462 0.0527464427957490164608694603300434 1.0541884737943565906493630967558842 GT 1 -2281060483308760098362294.8594957485493055027396594013112053 1.5494694981035688448057847165973053 0.0923413041399002720618703398961913 1.0968868566601803599405981799000052 GT 1 -186664.6747734321014987200541076601090074 0.2542295733985304865840094019466110 0.0038033954754404833336365626617570 1.0038106467762275923186951056680501 GT 1 -89854077.1623389334014137636891227544507258 1.7096323406482674467519018110376531 0.0095717524246439451872257192130164 1.0096178560779223285853951487607855 GT 1 -2640528209354748531107.2222052052261072619332209689170018 0.0811417394097627944362384088224085 0.0505990784028711136860858146559330 1.0519241021500662370900262245821047 GT 1 -10569562966994252990615154.5092493972705225440592423908671484 2.8603065267897102247478805476112660 0.0518035818513973592828008299633019 1.0531936060485660965967922100132273 GT 1 -32745621.4908837544438101236625232895698370 0.2409703619377665442054551542402955 0.0250062155804654180552475122922275 1.0253241829589334887746895587881913 GT 1 -4735507526694365510575.8196370683444110171809930493829576 0.7768771884313116841769453806093542 0.0915145309741429273304340100425604 1.0959763857417854380797439157202538 GT 1 -13790089943642007145192.0957023334085093351625328057653610 0.7521495883350768315559195509773146 0.0077073298970957630151143909081783 1.0077371848644888924968508502579549 GT 1 -27056771961372320400824529170552435328320.4279687009498501880417023207521534 0.1671364558620311912402783308490271 0.0934921513801519625718352588409176 1.0981555906671309871738870763521032 GT 1 -1589586159021711844339088106.5522424711144170893398975992554614 1.0044191597617282529010596108041522 0.0870207474257864729935433374303403 1.0910421230985891734594971581036658 GT 1 -1483329862613169105453480749771119.9343433237147990941814917804753008 0.4246723233038886646981157264996634 0.0084091337535804285599765273463977 1.0084446899905719330910688477613510 GT 1 -21764267591793984731905755338224464364619509.2733384722250639067857251368351592 0.1299473550586680682238132663487657 0.0861821807415001800864641909803705 1.0901240498696405111022854971943153 GT 1 -59294.0586408182768543477080502070875553 0.5198987465397183073443924231453709 0.0955872910579414666137182392097626 1.1004694863306839016791851708626286 GT 1 -12511191375582.3702255218428735459240793500324324 4.6375194359988957531068134459754623 0.0094411688533568318364327223749807 1.0094860192043971401594380463126128 GT 1 -6108771732.2655101788795430296459836437388573 0.0678320464784020522286986984418821 0.0488652898550339315517901851627278 1.0500995754220774786070623018080032 GT 1 -3657398.6214292991881821009252021191163999 0.2217834303399668100880215904102954 0.0681164290624818221854123060218556 1.0705473959869675974408255633728400 GT 1 -42568733122870609.2044645043871518195707611043677822 0.0246534044104115859221107845717990 0.0214235832602187558602052942254780 1.0216563993958544740243426546376486 GT 1 -17634972745444273288413468793.8824250437879706154635352748565649 1.5394371863798410618473656579419331 0.0169669279352625059759127469279134 1.0171125153879598339406372337486828 GT 1 -15581557872223164477846765291314209404.4451057140479018020297522423153828 0.5864993947972374634746221296786608 0.0094579609434809099250059127782648 1.0095029714862087757265047872015314 GT 1 -188328913525440257050153786695015910572054.2270959570467132878536745488367200 0.7341767367219959652098245763692541 0.0580219180200778317359661952041148 1.0597732722137049505965069168887477 GT 1 -2282493989659749101166198.9810743519856092881192030913519443 0.6958474487030978933959358838440751 0.0544058420744928268494251875174967 1.0559418105161530849303704271081435 GT 1 -114317855331522449337196033436451020697463.5575507640652221956189659807990828 1.8039312421465843102034428610561921 0.0135031426095276101215549177292597 1.0135951391398757262552810334382702 GT 1 -37483201719349991.0831822564296213302032293381601833 3.1532551211354815935868558021785330 0.0169956509509937946395032028732817 1.0171417345833066456674987875043272 GT 1 -33574375319735894136.0258284119953519683392880861458906 0.5804643469233190566513721767407657 0.0683078586637715447201321110994074 1.0707528393190546685499760057926980 GT 1 -197462374.5887691216950438177556771020698222 0.3517389563044401044593878680346223 0.0027922765575186119465581908333247 1.0027961822338854440377498075463247 GT 1 -163.2428635142813311969570717700163225 0.6768943168592711100623675212652628 0.0209703242741720955351264231404559 1.0211933246272472193792566500127505 GT 1 -1919892208679888000577678894724430263435001.0420852565350762208452629428084606 3.6103621333182378130383723462040026 0.0457371943102854370991954601878862 1.0468161678086800718345346693299029 LT 1 -52235946363320173780272881740589086655.9562195378637151299194767915534976 0.2375621609304374892128099016125336 0.0635907619854207807432695399607499 1.0657026779563564711125984728113090 GT 1 -5.4557916302977572708046822891915755 1.9261639594741453212171603735904021 0.0230538747770231035206093755031727 1.0233237715273665405114337176482797 GT 1 -1091601509075247608950103202462624804665178.6022169547433231456319147459560099 0.1284111284897533444829689828620970 0.0822461898098167952400103098601000 1.0858261049492152675017090354251152 GT 1 -1338637574422867658634285855.2460824869657688933945649101400657 0.3131302553457142909082034472591978 0.0312146784043146358268653745975060 1.0317122379772686825228658378940821 GT 1 -43307741580827418726017247818.8970820405810153705440475411592962 2.0013395217280000753781789758435183 0.0772338466095364314738241669229460 1.0803794315189790166463907326430430 GT 1 -3453381644921466816789129.8316662069046680316949092730209479 0.2416674703542740237101732571798698 0.0837344445319186193197501368242866 1.0874490486068825629714483425593134 GT 1 -3919803112885665205265761405.2771671373466004510932191516958934 0.1603083690429459281160330120426885 0.0025323948788724590015712514455542 1.0025356068145225500796991921229971 GT 1 -291175.7581860732724048425915382940024017 1.2422542249492877074426308501531375 0.0452132851620656081522026479308508 1.0462672986926734369266888512618450 GT 1 -4735710234807704382.7509923162934260743397997887309323 0.9912945667803873752578785253574471 0.0921578090382542882115600093939575 1.0966847139858333036879924806617495 GT 1 -30596430572598497644430.8103240817372098790595151330173244 0.3074451882900670658959228107010871 0.0705534412656261112639704093763940 1.0731659681110935350948280814438841 GT 1 -463920149720176478.1718944876499116586992212382678430 1.0446478667712247749915857532190556 0.0797664507383893947911697724434992 1.0831277832624588323139112687953971 GT 1 -2159784489.6120414865595972258244024966187011 3.4483290658025219060977023684682102 0.0035918797806863953235152087969161 1.0035983460695977596593119484438908 GT 1 -253513354953545596176.4303655720496380320121324682796012 0.9601700788086516186334323963113810 0.0576701636865996801153233099476481 1.0593999209857562830614457208773354 GT 1 -8496968214266547162143281094326232792.3839904834132294990212164848423178 0.6217586776791720941149481945750628 0.0153877336245996000987430151569644 1.0155073535034640592764415735197589 GT 1 -1550927372356971.6326470239527046406605905148319254 0.0832098187578974624555704049029794 0.0190896649276126822848643235021308 1.0192742251513503181614259967799735 GT 1 -8907044726800657244030452536776673.2256977679370803418773524489049742 0.0597675077933844324639833319499089 0.0005949534142991515053016078123435 1.0005951304693115502655887301900494 GT 1 -83249620451598881800821947083122.1322577737857320426351444632922411 1.5448501398672364314781648376250583 0.0525476579260378561692426447271672 1.0539786418932512501655227491000162 GT 1 -1013750189582758631745992939644389676.5706125691456518587874529236898451 0.3726672018802267751670829243746819 0.0431175766705680057148652072089612 1.0440747547119132536790458402537610 GT 1 -190906436897104098052513771851475315877492.0959390578373875338910310249040162 1.9879663764617783578286743374698116 0.0732851369008534893628326255613081 1.0761093517794178483735321071973026 GT 1 -1342888451919036019506659025.7320593305154893650688396431819171 0.5841712070451833218652034317220158 0.0148580292287860629000488923098842 1.0149695154335230868995385342345502 GT 1 -167360247791790683926928957.2070863829349317128586026378892231 0.7317475535683133002831220723208333 0.0830130829183368234104319838895496 1.0866620739139658505672179420569716 GT 1 -50409648287234805285348222813957334955.6341538272995038254916648259972558 4.3475739257441019453578692404709897 0.0017868817826391052323647461504874 1.0017884801602500256687659068689538 GT 1 -8644324112743.4418424242057940657125953547330116 0.8729034832149219776595761133705855 0.0343245322722870707028011398536087 1.0349274559482692976552163168977379 GT 1 -12977.3937378178568989056790419906829698 0.5231677701317960093280209636514912 0.0644281166585237037697756632393705 1.0665972967315115409835431271937226 GT 1 -17216829729624983.9939561873701785487257336056290128 1.5311227203274120733946089972231071 0.0822006159421852960327776553578852 1.0857764481288259952712866490485141 GT 1 -12985307137222984584658470312094810195848506.6100533477909351932468073564481844 1.9981734664336043870029843038777724 0.0986903804075381172175722601583442 1.1039064404572441662603504702966987 GT 1 -1116748.4916815007584482835199524368551680 0.5702339006309715388537091351874908 0.0634972288921962824023915871547646 1.0656027980977761595418941396644486 GT 1 -432730900515628694717889.4710957873478450940910412317496356 1.5383297520689546672890838170631493 0.0377128176559650813965047673577750 1.0384423465214032572116991059495754 GT 1 -274442270440736417165.2364803863117885226496446759924546 0.6644336159075515670702744390540123 0.0443274598131563423460435759739315 1.0453399557932517672123527934816495 GT 1 -921806822459119293947333.2095574367695029113337330069165538 0.2352571433562455671569307036237523 0.0531396733717634444756582403975877 1.0546036870347223256884321427685996 GT 1 -2084855565159087867356726141592795521.1977724892970411629071815459733647 0.3148810070243331617819080350945612 0.0490558536473434624344481960469969 1.0502999496518799337888408754471228 GT 1 -205067591417979172752380161.8791709427378069618372241313474694 1.3628733391950420222264107695642661 0.0853166836548468919422431376083424 1.0891773759688828301881578884774601 GT 1 -8365363.9551088488678285433465142088056862 0.3092144573320583218580167640837279 0.0675812618734011548317537100205989 1.0699732753615962463200109043504545 GT 1 -178197964474727457222103832758883797.4374521041857071529496552446403260 0.5259435203091148468139623766742406 0.0154376944109809445201541033213216 1.0155580963752270481322942256133853 GT 1 -2900607073469273120043041296313.7820981884517924217669829744858423 1.6344978898949044893932571590361840 0.0390713063565543854566233340912618 1.0398550729277206185085188164526857 GT 1 -20427305006805423633514551071.5639351697803557876548424030235605 0.1350308014240322138596927675271240 0.0949324881142267657262250774329135 1.0997457392957505086105680240714955 GT 1 -87.4816644289171458129768196068924305 1.4810389263875042757126287102658336 0.0397021891603798417210872135876527 1.0405118230038094034038811792977447 GT 1 -461387395289137549700977189.2758315723091806899157589307745899 0.8510381590501215318733541332012332 0.0161262117005783946349320524930333 1.0162576540797561238155396113552319 GT 1 -832257782040559835012641675.3935383208562123332067102256507083 0.2414498780642125719230893888679152 0.0206707585790541033312434475181623 1.0208873891883124927727966142894926 GT 1 -14795485298.3712594815516625608038441131097336 0.1355179769779816418412288418255526 0.0387557127336404469744803099581776 1.0395267012058370031147264648544709 GT 1 -1472406325822444040.0105009894370370370544921002079081 2.3301458821422435507175365453748266 0.0416418307329432478876272127316504 1.0425336989976745708333048027006185 GT 1 -260132749326476800.4946077206595902000571071138507463 0.5018073070614898285454190005293901 0.0019814834513686306255330729453286 1.0019834491868467669666679739472880 GT 1 -31579.2923189631833964834612565267537849 0.0737668042851622340649297033375701 0.0568786073660024061417642842397630 1.0585602743749621779720746944710514 GT 1 -81381090890150222192144782051.3258665941528474789714324641252457 1.2040499614521705848486796179057457 0.0482680997875848928947717642201148 1.0494719012763386270869544484264555 GT 1 -1021364473434509000389953641168.2757502956646883943841984867258984 0.0072376714620208500776523732354467 0.0693836983359308353633481356094236 1.0719082223555028443625629594910047 GT 1 -1200880465579359559824640102942205.6245100401863337932497183104193962 1.0850989474811633127815376769065713 0.0162207374405249702292818972908946 1.0163537337620741327421529522907542 GT 1 -5490624950527572035031437.9580545937296905181486757797142416 2.9339531174459279429005018816087701 0.0139212166917699688672998891418432 1.0140190256361666646924071329537283 GT 1 -2451516870751108438979537613325338483931.7937686820190154695224843461993033 0.3139584118586680363739026074218797 0.0337122663359675351975591943023636 1.0342936281855293093786434564440126 GT 1 -5658412506568088321929214636.2527867432732596389368031537682006 2.9918702093049670083661307935044827 0.0912356072271882561729802790442788 1.0956694122704886389588512782983368 LT 1 -630049250774660286692366875569828676.4151685231464654321973710148951463 0.4204784108483822980587144744572760 0.0497906062092510147409590600328235 1.0510729041586833695377623079907688 GT 1 -134075328227559837838744050489123.1316057897165930677425366532055010 0.1540625358678314324300025229014269 0.0432393004135148660776845030505619 1.0442019714762653753147336750646666 GT 1 -4975326333488876099914611.1442287972615201952293955461058163 0.0418680431228269081387483090017390 0.0799647394983342073976039494111562 1.0833432830412522354411335416259393 GT 1 -14329004456485367307446625526132.1059954502897800754070705138815825 0.4260170676052518394839048889742334 0.0589270208892551663834263959167146 1.0607345875572789165187124553492617 GT 1 -112112367040412110303315466447224086.6122746940085529670208814860617187 0.7267484595971416354659448316874932 0.0937714851736410596808204119021123 1.0984637808720971505421188135498757 GT 1 -60924575811085.7479600927497280658204638540104938 1.4044641471708583041087302475932354 0.0434532945543737518703294279502183 1.0444256617637626972685524043306575 GT 1 -198223.2563951447797354749207257564258057 2.3862252190104615247233408873518226 0.0611455700123799373604346717948211 1.0630948384289976784738934072819468 GT 1 -637991643330412807.8491400742908610934392918372845160 1.1378818336420091666571071845555601 0.0842922922243424273656921931269020 1.0880580615448531315896869857696878 GT 1 -5193837367376929470785472158303514.0937329442591257845692673752900043 0.1370192656776194007896109508798138 0.0363990685155471712170323704757971 1.0370780415706002779732126635441814 GT 1 -49463288179159422385910486110292141.3398876914109141007258101893100949 0.0611406675324721982186303890337875 0.0843552653776893798381836030072603 1.0881268338378469537446206907997320 GT 1 -1898354751750605240717127516718907.7860777016644544477136443357850625 1.0328947442281168960084233473410963 0.0893171660705033527107019143515853 1.0935605939002821474278985248700740 GT 1 -1164699039952023574581927.2434446805660931791673992240405337 0.2843680688748780999470593181746761 0.0438222687876100166230513685666923 1.0448114719000704151416138026024516 GT 1 -114896344491520395169035072458.8176547458900928236775643665685206 2.0653060661652928844747723739059664 0.0708393840559651653817880372223546 1.0734736638915583232778615457430390 GT 1 -46775071885027170938000199.8524663942410588515158089872565205 0.8826684655319826778043414233462210 0.0899705517771633986162020862449814 1.0942783193104011538462102077387514 GT 1 -21281017863695819683598018411.7050739034462456992830443762177146 0.5630342406718008813127367227125636 0.0406690953055231631636675220103383 1.0415192117963290245051054818967563 GT 1 -4299318965585061380856.8919997179842025026488225877574332 3.3149726703729782422306135187180046 0.0971076358825480840361075755379175 1.1021519307678693964349850927426061 LT 1 -149701881075558331549100829275265537814432.1934531863622289575647822264299274 1.5810962603538259841017165871733286 0.0550042182363323538078154306856990 1.0565748152405074637526690002603063 GT 1 -6391092929776664105398557888515101562220473.1011415083407971754366116605504442 1.1718793649210246729218019155410753 0.0033357347577742071637662151844089 1.0033413107243781192207362951080091 GT 1 -24484263682493302331111315937.6095321147367948861790151142584131 2.7545682092128841739765755743107279 0.0810130207923165527770062568154129 1.0844833251624234004909468852905062 LT 1 -20175802157600851597770235273508052.5810487373983175280976973851358100 0.4354712315012773125159815582982023 0.0114002416455795181698200156949493 1.0114657225414135257532140430859457 GT 1 -704949347685420304898530.3038248305617048804081504244849614 0.9561146389018000537975455076496282 0.0727017571794462766691340317542727 1.0754800361194606232288182271131457 GT 1 -36711918.6907697777448252944867318580722427 1.4560582252809588171614451455677870 0.0227622924823038304214338109234890 1.0230253530346966770610443893055132 GT 1 -80017251747809113847054.9888774703441105647467503394159644 0.1183607426172968183860303974318451 0.0145616013787474073840728526271524 1.0146686620840442027233499177671950 GT 1 -1707.2059063287402526022037619841690811 1.9480334673719229804320131942841013 0.0434579116404925554297005118459020 1.0444304886030957834648302193425518 GT 1 -68576395402267160910561440448612953001935.1927929101166118264385847876564802 0.5967376404061294825566863954582135 0.0023738199711142571779601970526071 1.0023766419485373568427465158944569 GT 1 -51616670034604535538715675770411519.3451968888439210835155000147754055 1.0720889893610970786610979434242099 0.0550953045149976479160469748234154 1.0566712079128543439855608661397857 GT 1 -4.9012017767635936219161805945372487 1.1819702020840455493802485408083625 0.0718001089765862256651000572866965 1.0745081695814316019333446045128155 GT 1 -91610432633648651046968669279456839.8513060812471370730751367298200565 1.1180837008098771123945771724660645 0.0114414266103707353626760792769283 1.0115073833069029994812688033348460 GT 1 -544992706698025597766111.7391515858999785223320267449170329 0.5844633110901039141185433660546980 0.0730415596684176592209884459647826 1.0758465468575506117314842085131546 GT 1 -4176292681245844.4075154182500617581591746192861608 1.0249547573253736920121265838218237 0.0449701445690217758353778378900863 1.0460126767586693654893260536426535 GT 1 -7892.4723661356770993688170374525075317 0.6722781811575633742515635474328275 0.0978223673783478221634821881581474 1.1029438463550138242570564633878572 GT 1 -2232720595264663168542.4403822347200936668341318405460666 1.1284698467258570993277661554106713 0.0277221299882284130327233799087429 1.0281136408783188470501592490530461 GT 1 -36424194167.6504860057772737435137261069208771 1.2098184231356496489727253214805714 0.0004133416529992934857665091905293 1.0004134271022076348359932167147403 GT 1 -8305062493570122525375950723.8479224266974350527429382178894945 1.0231455748399672039779270068586245 0.0360679533107672325225949499219372 1.0367344778424708356637244261509429 GT 1 -1112960635686900242.8118337215286819096117242282834265 0.0145717625880410036773206145167255 0.0470299653575781728033724741684768 1.0481718190096675998504586949451549 GT 1 -29327616510268258.0617205497830154872068820921873072 0.2014399531428107331762320860849166 0.0331918047003942271657008012328782 1.0337551534617961652866140928271113 GT 1 -18459847836055946871939685848664664213619.9741803991657953312691872097088208 0.3448296487976032814711080477495642 0.0119654468184525870448304358727662 1.0120376089899880815059167427079357 GT 1 -2140080330093.3873155189597293845154838365774438 1.5233676317670352580454978858644931 0.0031358982467219278726271141797130 1.0031408254791916503559650626716181 GT 1 -46112365657371986612213753648.5534391253742391783527056652201069 1.9505027916148629519904149880136358 0.0351223839696807150862732553609053 1.0357540084523466954796834191732378 GT 1 -2125037983911640535.9907429450532879090706675352281326 0.4889764285749994978281894569616103 0.0740691597572734904016956561090097 1.0769557336880682219910158357890514 GT 1 -118770233.1197578805689684822944626048285094 0.1910994394087767890035532110537738 0.0329346909664244809303101226554553 1.0334892480290896428206663781395007 GT 1 -551765.2485204720306501473434860346953601 2.1671889519364996679461094032934295 0.0293880443092941401220225360904137 1.0298285242518286257470249254062520 GT 1 -4436423981766488177002651538763992897509.0817389461958990115476942918871914 1.1089833421939252358775209468594782 0.0678346363524674625391562787509248 1.0702450512288095185791140251779571 GT 1 -4557743997828952163415.2153357486837667322228640220334186 3.0144156968116597427639551471110214 0.0107235807360569561583695972064615 1.0107814927159279463009478297756608 GT 1 -663249990744.2326437258213241486403410668036095 0.1140529678885110893891165177610631 0.0481668691357377787559360955910808 1.0493655422601874575557875870300037 GT 1 -264627298323016218574.0342531016079560370279616381266081 1.6925468058385436572923281685195382 0.0305832038292519956530247727102766 1.0310606293636802359376760678610243 GT 1 -980.9181777298528911437643832442872072 1.0111607195526552656037212696286416 0.0171591715673102493570339524929259 1.0173080962261935641972360117022816 GT 1 -54864050066218774917494320160824639882145.0380845892807121415916852407462912 0.8334036776011839235137875649509420 0.0745713144900302162844180144126030 1.0774982050320573081283297541911667 GT 1 -807383740006101839212560447763768432614243.5722111268000853868222325226438995 0.2136272335565864010853678255592021 0.0540056518174179597933477231492888 1.0555186843851226658376929536153602 GT 1 -12221190576075370193582700788160305002048952.3625222840499482934889658103482282 0.4516792087725565783053920151606764 0.0408352218252808805174642482134072 1.0416923959443636801205099433678314 GT 1 -20705962122.3070134880431900006539040648958031 0.8611892905422585831269052027398238 0.0848095673615419686166595153185487 1.0886231122590841370674072497001870 GT 1 -466493320777202884412426159.1141445796055012820921478405427886 0.1053983783471736331561810560719230 0.0532952906588297549774345631541943 1.0547680513786562368156445395240494 GT 1 -2184567835611304340.0520599825081052598744529227893535 0.0429760694765381136949756694928233 0.0723652703158880971193729886780522 1.0751172339349755604988733593419603 GT 1 -44235352128871809659243896647671483.9470288793874570196177032571999956 4.3968340149635181485200330952138722 0.0910705907621763099485353326112964 1.0954878454243204353431962832322833 LT 1 -129985607766547616618480918692.8125388212643623605664673481734460 0.2645931241279371551863404909221280 0.0478652758152772842558671612441110 1.0490487372025987122207719611181465 GT 1 -18653616256622511592249628159154526974648.0638753997916879939554796040019007 0.7560990066840240595323881576412115 0.0487909067867311351263566304508606 1.0500213739232638632811090024629132 GT 1 -47413841.7215052399942229035876611635391357 1.3260909151288101745223789808444108 0.0813557719278267223248460545717745 1.0848563609904252264553605787334475 GT 1 -2221156632724748362898782673647536677239448.3323224722896058110123101046889038 0.9024760631967179633926796032894611 0.0024147229968868462537070858544645 1.0024176431423047232709443348933691 GT 1 -320552317457836249.4849280953979202812518479764312216 0.8605234803527379885829352936695860 0.0860540519424250263121221524975942 1.0899838470692827991498342548291190 GT 1 -413703434754620790740511.4013403840768887006019313181357597 0.8650272017382622397111861970710802 0.0896664454563049825025269014539890 1.0939442031772724485012910941594209 GT 1 -15048808380792089960890256.7849009909258237310069803212574138 0.4160078897177937475493373911646505 0.0465713665504497072571516164523602 1.0476907036756608675102296147691458 GT 1 -444752014310898.6920415281856082768830148308425162 0.2665290476086552891009308402977369 0.0785818754859378536819693007646417 1.0818413560485815463825889627029453 GT 1 -2566637347958068861826326215.5018442715947243197820101971446376 0.1985363052514255669510729815217259 0.0624192066080666998666712361115729 1.0644523452327589334267222991885153 GT 1 -80225988856437445363811022930766100389524.0929852538168533268849131471910491 0.8799791171989682469282001403883737 0.0007270224411837150439127243162744 1.0007272868501606479204869833528144 GT 1 -6079814001258728808741955694846.7915763242697591535109043103145567 0.9434084968677196701827855196424406 0.0623292400627139943674477816786934 1.0643563937906582635410110841184888 GT 1 -2670942078172757316599844808989.7918675285373531193729390704057295 0.5110121537620065189919778008109495 0.0221347572999544977522789378188506 1.0223834070913081054350763705290380 GT 1 -2900658589665653957679996137858113869403.4385032337520864242454361049684076 0.1226764683414892465556455187685960 0.0900331450336814658268605372230399 1.0943471032485147252614337520719399 GT 1 -288286030678033074263460486104203779.4468273460295454699129074563209732 0.2829182973230444209666952934559383 0.0831053131935351089126241576704281 1.0867626586791769769048168306393800 GT 1 -1877413.7346172485465412505307328029101362 0.9933065052606024827903286675245760 0.0671861773424239833098904897639594 1.0695496450377511083929445106487929 GT 1 -93.3781326496523787920284622818372533 0.6626185365748682648093845622939775 0.0178330430564320419123756375009175 1.0179939678248240369703254734401005 GT 1 -34472837209451947983510199053581208775.9783894949095075835562992243346534 0.3063825704476165610989695200611578 0.0015437274540049181224910816145290 1.0015449202289353599760709387006639 GT 1 -34853134620809662927477.4438604209842698158952811805708644 0.7233392499946687169120584887720134 0.0692108379496765643862807866404719 1.0717224913150381320206228372126305 GT 1 -489590263739100.5546049534188528955812466882310756 0.6564161704874967993576703309450701 0.0976324906795294636196786686033122 1.1027334036289152707660441380775348 GT 1 -98307.2369655327372099015867151648486509 0.5010084142470236826096636925779679 0.0734160546222645873495106637032741 1.0762506325281347313835397063375671 GT 1 -1025148594.3063304659668554126424363248797933 0.3103955233263037113352061695416380 0.0958461128221655235190109427422481 1.1007557038982827226501125285381527 GT 1 -56399424790278893019288179366.9249079327111884961831019914859458 0.0318097084787896721906970567804300 0.0570000255108772439785763816698981 1.0586890234015720166064255637882320 GT 1 -609314313221179.2463250625417280552277827103672524 1.4949064785025291452303461091900690 0.0859095229980755243552924533679942 1.0898257222719107322058385276707901 GT 1 -528471156391929985.9146739439802806808678972087435430 0.7294813404303265486771524953010294 0.0010087777249676746382228645046844 1.0010092868836643053946813647703411 GT 1 -670091517232585345080131824670.2224710838997947961640284610357227 0.8988995231788319931658606052884585 0.0700488503548876099137484831943641 1.0726232214777604487781986794781447 GT 1 -4794436206253963328765849.0832634785570859029786546701983589 0.1229289297982423545198682427827471 0.0999908457739580220658078720855574 1.1053503443472853912962034472828870 GT 1 -40346271420.8499339947499965282198439306487588 0.0535059611568502057382063652317978 0.0489434741248154302987236713417106 1.0501817798485778417591388680548817 GT 1 -10920171.2039755080485707663543723492408711 1.9499721973903707695928071922111836 0.0203175928718134489300321449401995 1.0205268341999558160433868876172388 GT 1 -469896203647001727205992955921.6238689562573373771409191042296082 1.5875848363817001791763030830240161 0.0053092628241463252151174849569615 1.0053234070458207989935096143915432 GT 1 -138474864176054573391337268.3775514040535898059110623770009886 0.3352811685557018751400334985983269 0.0571058302253619655361191744205418 1.0588012298209169753272460101993659 GT 1 -1089933634682895822681295174519381.2181951877165662718937187869149653 0.2353034175079267003723050306220933 0.0683453407809936700209344937621302 1.0707930702811235780854854046934130 GT 1 -4702535650168247392889370939530209326911.4533263655398731415942351340725673 0.1116684831494458214460306943139764 0.0127103366670872779173157468950903 1.0127918040509462166443573118951499 GT 1 -1050408946035692603590786966540529.4863933416154641744132167485672835 0.2064357610970266656269914357988520 0.0600139001759443040918972864801182 1.0618901912486398075623754539900826 GT 1 -36.7274269749019413574887105485980275 2.0700735690301038381762114078224859 0.0944489375448841364633139386826880 1.0992116118017643679889502565998024 GT 1 -11799111796040546.3073405872544879478035332374969252 3.2406600344229251662975368406049114 0.0699625663318885655109908338544657 1.0725304423888616991177918656432505 LT 1 -2130953717198132129567483.0696159055041998822209896005864718 0.9494515272503747086085810429936891 0.0111513483628621109517684570905380 1.0112139907816627766350388974502231 GT 1 -2077036902056376942476896836989429780.4135865968021235604756181900437972 0.3771649052131949763342986000657183 0.0232784137841303915168535974123772 1.0235536355997277422004753416305766 GT 1 -6967458159071359638623051737913.6907909504637624853139104673853914 0.3418252604563472860040965388742030 0.0583455590066178424628609202333069 1.0601169071698628606030781838610630 GT 1 -49750836988902476802272779681052944453164.8470108930046413240761926745221080 0.8823718995736994890715059046172285 0.0845949939549460026146994996154766 1.0883886820807450280093267666128698 GT 1 -93.1790907382304043444337553537450679 0.1310686177518154286819841884368167 0.0894350886464508715873190874541080 1.0936900903693020527149973215718930 GT 1 -988140783.3501370843093080459400277084236390 1.5533307563147309697635862814916311 0.0663420746553880541927691793397964 1.0686451547924673928175929624560300 GT 1 -435541314463927653785828715876664523796.2620114574407169936424472524181895 0.4118559593989687731453072598602764 0.0344630519223325098499074850842664 1.0350709095105489504476345987584150 GT 1 -4630911668.1166141822979618813715740418836282 0.7651331236457735183496012572955756 0.0721497577356807171111790191030675 1.0748849360889302743727541949666572 GT 1 -12160145463288089772054024655488092550797619.9436524985615736419243948357451442 0.9600037339504450750706726287616097 0.0474015527760660558504949430892285 1.0485618206566657202564927610393107 GT 1 -66062450276262203499689128.0085631040601542088338049869106193 0.3437917955486157425009822724157787 0.0768596509495262587276065149562411 1.0799739985627148906038179845875623 GT 1 -1742552360189505962289824.3222912675738470546417405230289038 0.8682143790624747836417944618195854 0.0485343491193721172173144203916369 1.0497516928653633389997653722966952 GT 1 -863592736733655289464003346968540.4856364827893615170703318009896229 0.2330438158513371815636791970386613 0.0760864828388205887217379565550383 1.0791368078667552126630910215199372 GT 1 -527698292285204048386368614495271540363.5273694705867067620342569949369788 1.2344946050813773261376832957134566 0.0466593162591212021495724304739953 1.0477829536483670129344313650140053 GT 1 -6826852892071225101656983070273.5645090982004130657236591647873632 0.3260982567061256242819110303328197 0.0203789194315039423388015602417152 1.0205894345679902902821923823496416 GT 1 -916971439614788749251.4380328430720333767608086592051967 0.8695393136143138795904254773828942 0.0960935359644528079951013351116295 1.1010293929304720407456442230273171 GT 1 -145986686105436253680098.3704566586306761659917591119495589 3.5061533310838164645968981580004552 0.0618732571703237707271905334409699 1.0638702188163348786857205939558349 LT 1 -2389627571297110509694924.2264230247438799631536237622716220 1.0900065037618288506315085473428267 0.0068076891531108310089351833106397 1.0068309671754260692980531856932484 GT 1 -243041103459868.4067098704809775616384479996167412 0.0813628876787718449119364722091820 0.0553807764373591426557970772904037 1.0569733707186868309869565175804149 GT 1 -7064766.3458647800231611320343133065213189 0.5823963360180051510264921870564629 0.0913990534504615049846753384992234 1.0958492838903302161304864857730231 GT 1 -246489789574385650792988708890149428448191.3601259394903222488591273667926142 0.2132692237195704637286855697589407 0.0815300089624817137001122618583492 1.0850460465672554579393052372468183 GT 1 -130654814755051802353474826584781.3853072251860099600713259958306978 0.2215086045052417188631670814324880 0.0971881871580793681612817175704500 1.1022411494523167644252529489772222 GT 1 -95906446770087410.6496282550433380108080520822519477 0.0815363796281617409803238185970433 0.0790153386022926365460192909059302 1.0823118971568202505988077137764925 GT 1 -21257232102279441298284821679366207572.6737692698074524215858390825862071 0.1706507445834890897358332301265103 0.0767323447018890939690419306343670 1.0798361024449131162982765839228200 GT 1 -32115647441.4010831430992476857084291985167827 0.3825613560703158956193285947563631 0.0785471394968703994051543658632363 1.0818036583591024927119224601571935 GT 1 -25666255942753559395174049923166989479.0933060157605234729029056600796280 3.5538275365077274000744907837234329 0.0487591301348043598385212975721901 1.0499879678915190800681174520640496 LT 1 -776832844590671446.0271077098313861457882907062841164 0.0230764328984973638860374928200136 0.0696302344488541340298238492014539 1.0721731744889000005752041423498160 GT 1 -6259834884156539607285406357295416.9098466618073594941491459600309730 1.0226321099316630833763532748104615 0.0621858050695004920286759051931508 1.0642034360256590073238362402774231 GT 1 -98840659585629199243748526.4444782275302043426322172843840100 0.1528008394889287589257741026627743 0.0245633554325932622462378054839106 1.0248700676529979098338889405663259 GT 1 -286897295828579.7248925651055918626630144309684779 0.2891218264725157053398450982300703 0.0987427004943896624272756243338886 1.1039644911030336902852585742028550 GT 1 -89.1048114116109676341941405577996768 0.2517547268666736751795201688423184 0.0797477804597176836545798119977602 1.0831074948375344652960549140160042 GT 1 -43627912360881.6592269567220759176649772139090696 0.4257259613897591433546723139550508 0.0386937361666786781616128891538906 1.0394622279289728005078085339821899 GT 1 -6937938379183.1699859349371419421991787467359585 0.9877340206121934133632509920552353 0.0949937291975793835579695680890324 1.0998134062427685848931433067521346 GT 1 -1535117929086870787628.7610837371120616147301056914213723 1.1271640546205539184673672435477644 0.0779363215138409978692803401052249 1.0811409922072528577926452013881597 GT 1 -569672845231045145402398.9249652242737927163812862614771339 0.4978689074273647553116183771767988 0.0303302043008290739636354282295489 1.0307996822446404617927695725354369 GT 1 -418895345246186654026377681.9841325326252113082129097875365069 0.8893158424048942924290920913467871 0.0580358748007381473655541156057850 1.0597880887835629701443871539828003 GT 1 -50093251305265.1221137710922333458746857794580018 0.6065257126100311152132552999848823 0.0115676696586951286919351425104510 1.0116350956279437692087332412527091 GT 1 -1655819904138080510733332534313.1538832353613308881371639163494240 0.2933514671737347209388892439330355 0.0286932181823611037795576980127870 1.0291129163912484729339297079896828 GT 1 -6331375839571402259703457634705733222045168.1058675386478961665880236138496397 0.1594658095472755818387610547689502 0.0977632400886819570427718127706951 1.1028783100902492464601893019236069 GT 1 -288170686550845265566.9250262700915585270993909748224913 0.7237966162106969066998964561260074 0.0847724052633924641488933921835803 1.0885825072195807803091267387228167 GT 1 -113.7671074189582742930851682850950673 0.0403188133258980003626059916330554 0.0084047521209975757501732133588288 1.0084402712095491623425379365562953 GT 1 -120.9069067299541118456568649047158163 0.5905725887899540314901653686521198 0.0307330669883013751690018933815989 1.0312152323627068808286846118922846 GT 1 -8144572.7827749642437431138934402319280259 0.7362471057920186019343228009015545 0.0728610061312692072967567692824592 1.0756517852076084582539609369324796 GT 1 -3176723561620627216114030.0840950467175520118454691723793464 0.5766646297545865519939578950843696 0.0762605004738363913210463619786744 1.0793251740090543085206571465828878 GT 1 -2794.4564043618323083039435745847805716 0.2875772099646306141931072716588082 0.0723314724028196256310862365128995 1.0750808000927564327699750994162714 GT 1 -30875008635049.0349945104077796633838273370918878 0.5280575938033760827950209255942985 0.0941677152506405497026424467968203 1.0989011062459557941415464048842962 GT 1 -5.3769088886357092679713116077186748 2.4743118340030621205325235541015840 0.0798619546335490936532873008864501 1.0866953180798694190363766130737477 GT 2 -285635005435547448912028.3196633711728390020755604182667391 0.0129607397777997689758000796175849 0.0780105078476646103427490429391269 1.0812214522883880977936365772884776 GT 1 -30497146147799326008714737813844519748.1685553109284520698452605445529370 2.2805947138120842650867456310033929 0.0945462759548657750737755864657948 1.1042512510261763500636729445822651 GT 2 -1634431067382584398613061.6895494497426408844094438976017854 0.5647799397338286062227172705361694 0.0086806280605995831054878030346999 1.0087185241798230315604461141034025 GT 1 -8382.2311154913678092916584907524979784 2.4627155579219209024360561581340356 0.0812981827658795997088869270478116 1.0883886572032593294114153755102500 GT 2 -9640.6165991559930200901375505685083913 0.7704504169025978813133595850156049 0.0124493800811270086686060460404454 1.0125275228433040039368247867823443 GT 1 -53328045036894415297895.3946397970305806215100179099227465 0.1836177642067897890272055003705336 0.0412820634018306093260753852661397 1.0421583697822768384131828209249671 GT 1 -828272544293111138533.7879974988042865309809783517132550 1.4007413569858626383578787789005476 0.0863892031759837708860816896880804 1.0903506222605369754553466537048693 GT 1 -15186596158880177396652559984178.6251590033185265426652775057241707 0.3991197409872318012877446256019041 0.0310972339404389927282959382836314 1.0315910167500054478756411568879564 GT 1 -4766061722.9804866223162779240534072153163174 1.2853534941434339033294805390531402 0.0947435541675335452057072063612259 1.0995370098619122561441897899642215 GT 1 -19470.1755812165316679376679455518242820 3.4721687143982412434062394633700292 0.0120570182935798182121400904545249 1.0121302937230642360753202161641331 GT 1 -1853205461.8095989742955842528428842839776798 1.3001310690805694616667316371957102 0.0657790664116994549274679545473041 1.0680423231280410554668386136170949 GT 1 -28187125165847040789523123674290704408643.2362629127492349086086664140789769 2.8973706841769354355385867315290479 0.0244539635703247655947851654292803 1.0247579273829190102109681480694186 GT 1 -3084755702359602.3161690185976808462246687378623751 0.1032654995254021836976450607210707 0.0556383741289647650036676404961767 1.0572461079391617209647249801329420 GT 1 -162404743893107.3566964213143968422350611220880013 1.3243705298162078580340025649051800 0.0381975546319603781186469406239125 1.0389462076506033076170815245830034 GT 1 -130361531473900760611096971674435261506.7681081961742015111381433502825482 0.2077686476106070776546763106487349 0.0867481518741567547153279577879449 1.0907435896287016547323392088162502 GT 1 -21894814117454880847565759255035816236164808.0488763279290130049561598555842302 0.5328009626951835878581444931847947 0.0171769448687619511389631598601044 1.0173261799907687788795499615756795 GT 1 -162512035.1334843912431907147834737128003371 0.9958940570620952684714688229567423 0.0477238680217617292648872403793989 1.0489002316494846656422598448845474 GT 1 -2323608035256095.8373551997705313345045967082975838 0.9345096140871312436158152276413193 0.0176160370554681192217467912875301 1.0177730460867823573528946806509805 GT 1 -17110357959905777415565802000613570092.0671670299854635054910935711273122 0.2595231357569695785619258986979683 0.0861228350454091599417070719619349 1.0900591093881876633632484503184067 GT 1 -1039755350764435291454.7610299873181073379617328528164898 0.5055683847217164484143258459703076 0.0580754070961532733931609310330377 1.0598300576058623401411796985967185 GT 1 -23310080446.6964015715942339305442320280068082 0.5405261253158977184406368256465360 0.0960695842535319437220294519277769 1.1010028952843734018689362614620677 GT 1 -358336187454118472797.7158846841478434232208079415838406 0.2130536369433832536039834917162805 0.0914151692256734845826741207786744 1.0958670209598291151378689078650141 GT 1 -1555506931598120481042697499.0169271290531944871268175256770473 0.7715808573840552614009106475941536 0.0158033977176988633824536863408116 1.0159296028196798483578523589038116 GT 1 -46230226399038895992924972.2423190534821186069765336435838421 0.0923977287837213941595865375136659 0.0901453612894760086678388990399790 1.0944704299114063098532353969448349 GT 1 -38241979642563010940473723841026660317351.8853593491531026429659480553083560 0.4075263823859863127919322725139124 0.0844311272448189309355137652146951 1.0882096880355957266670740273758026 GT 1 -62799524126650461600461588564174.3132654515931571386717212957573883 0.5093912136415483280901695959941532 0.0094118129513070097131296929825527 1.0094563839458500875084919904729056 GT 1 -433.0797987534635312923621506038073727 2.1262708601046590291310542202881438 0.0905930330520365917622378477932302 1.0949625765825656416943249631407717 GT 1 -88452996036602909964.5824676809263619092753249755393263 0.8050288890900069344506569977229867 0.0042172657730850835325836952318082 1.0042261835195547395499689373559051 GT 1 -682552403895380459568874066576.7061392330387827500310824654348856 0.5468549712399276032337501306973365 0.0256918312655281515508061437592934 1.0260276303773550432936365269469445 GT 1 -68603897977490650159304827812702.6871198715672134900668190676243049 0.1830379597862892052024136676198489 0.0823046077718838084485075907903795 1.0858897601699751449784590484172995 GT 1 -1337396542478686986649.9718910465199356705543601028312601 0.0793496376298432276859951205055237 0.0839142150980751704094021992613690 1.0876452670533918870144086544548798 GT 1 -85611126.7793662575386384104765200581588141 1.0575893439918258177829919068799052 0.0273303789191013132313227513533256 1.0277108011346044396521912789571572 GT 1 -81528283451250746216575963882.4786962426374177555151705654716276 0.1217640143527102778032604229364697 0.0744124388724381565999881565630008 1.0773265419056306069140695102870067 GT 1 -9929536.5426648622422996247797954546742391 0.7078239448137570531849836501247494 0.0835453448626731047033908626143918 1.0872426890449349106874767570737925 GT 1 -2092745395528033136499.2018527442065719301525096380716184 1.2327091251277862370007554683283988 0.0371410464161145211082394480000138 1.0378483435561302608615865725718292 GT 1 -201094498758426179517746688.6090522479774268427614298824445454 0.6163661950993481526709026278591218 0.0826787731289944986955088847855382 1.0862975661357651094907540948074489 GT 1 -9053751821321451963310153899276.7970693522845491191540101370441380 1.2768491209986354737102066523451694 0.0815675600515792824808706537375432 1.0850869317971613756775515928139570 GT 1 -70345615351977792.4146483420592644727283850226784146 0.4572136760261768268922926604880038 0.0678683443584227580081574154015477 1.0702812128549991288256742351719630 GT 1 -4258.4343144383917696392300864300621616 0.8626093600485152988686862278145263 0.0068677906281809002839357771229439 1.0068914824381403342697873991540697 GT 1 -2107174474843175478112856878517751692201.2545418097554701049207016144078469 0.0360123681260821762416137509505897 0.0907217033543118577718127584878412 1.0951040747351769428448093245058520 GT 1 -5.8278223332568092079768787967167647 1.0215156042174246480198304765706334 0.0292174567546076512916652611802744 1.0296527871152301638288717618226507 GT 1 -379496074975952095003.3946402529876840152453897873179951 0.4695152136283163822761627593112668 0.0036699720038401860551936158550659 1.0036767228731569224002843512454522 GT 1 -4164125477777132785.0466095736375955340543649954083786 0.3925614887845014552955219462455719 0.0778405147361302213803998033311256 1.0810370928748074822612571890915043 GT 1 -3414317456166937628127032737304368904.0767039570102659526125870834892176 0.2681406681629793410699892774551930 0.0213137452922193201426190699886968 1.0215441630877522983266669579414450 GT 1 -235853.3366767243006743486575327966551975 1.1071183156135665072132254206218073 0.0997076389908111431208481364313767 1.1050357228429580825873198222204280 GT 1 -10802535267565398371140981406236485508758.2174035883917357295699794297671280 0.0876124567600594287614114526912589 0.0665650900485240016262942803378463 1.0688840453178666622086701437674886 GT 1 -523394306892889612599029041567586157.4908215385715566748013870651772651 0.7215025216345401072630032319047883 0.0981961065556571593294658836242502 1.1033581955900323110260354630876595 GT 1 -63620542556188991.3387090650979399723915839973955891 4.4046919399386781318105508435539583 0.0955698285158861980640887138194417 1.1004501783606608814509965006447686 LT 1 -8849442740832801332980247974761679309145.3086482127448074458691977093985042 0.1782125741265069358270759506828908 0.0896857338956584255984959045206664 1.0939653917225093842811461909735625 GT 1 -83272248045242290845102900279019060.2278996222857180042056897002498603 0.1141222925073327140664727353197081 0.0368585282931860196329850096229582 1.0375549706978016700562665257241656 GT 1 -7811563850402431781248200509.2057769582195104043233367051848437 0.5327241270191933593280861993507610 0.0131231719470905733213756995291710 1.0132100416087434291247737195502608 GT 1 -3500777632071.3498515540921978999759197618495743 0.8154828305950340948337947260429346 0.0236753233225071746433059187506025 1.0239600873580726762113210687113878 GT 1 -21626.3655164125860121797427897425260321 0.0554295198224429516531169967136614 0.0628290168306016263214002749928227 1.0648895340213611133229834726706748 GT 1 -13203626373594354963.9749350157542008056139004708143268 0.9900808386656457635612471399233905 0.0801405653154610327658094818189057 1.0835344089987562995033945581755816 GT 1 -20855754.1099049165480663423445082974357321 2.3083716258582579490403383861107996 0.0738038405537067543728757430295772 1.0766692315147009043950163363946692 GT 1 -2058680062802151242781339089630707809014.8048824318213887579792538023982588 0.3620090415432743118340381963762381 0.0892761204082826973870818240373143 1.0935155236126600573887305308049821 GT 1 -128281121947916188491013455.2593407768600524701956983582836368 0.5011222018269829204241895358767346 0.0302050307103958388690093087688377 1.0306706016932773532392772719740132 GT 1 -1006393.3056684078074500410976042221841364 0.9475165437052580857243392571004854 0.0688674238470970768222523508094528 1.0713536099604383256003463785442736 GT 1 -13467095551452842407554.8531133927059661068578070497878960 1.0907230120524075355165031510491627 0.0091164131311008037001157812223404 1.0091582219167129250963588036687064 GT 1 -18968533.1617532793165931989041415983389327 0.7084544511303681990887033009240981 0.0736010447000925514650649135020697 1.0764502998627603196882222900824488 GT 1 -338344598154520.5219109694409965739706720667418548 0.6966702632983851917230620815639397 0.0157006081615589233713248678452508 1.0158251682091544902974429940677402 GT 1 -241726745676853103594451890511.0795683729592962203604266070413618 0.3049928917095536277785576656124539 0.0755028765953242036336452358240566 1.0785053396744810377388686151204328 GT 1 -2001697685010106.0684834586950074177002185946012727 1.8926002001196499773331956607241862 0.0918690259077194074176948776040812 1.0963666661880723754519099698206570 GT 1 -229814.0075606271935554975882868694438510 0.8844875655241493646044245486389750 0.0650307566274104440224436529103719 1.0672416450231697508684851430995996 GT 1 -67212659600530224422638454273998141403.0876287896777499355898556728904406 0.7288195774096283708290190804147044 0.0625835476889063252547537714942424 1.0646276426436080303301537849819935 GT 1 -285745716984484712030004.1503934313720013007306354101517914 0.3611160462027468454165914038794042 0.0338142017914113783613630814403156 1.0343991255740908048880595053554244 GT 1 -28067083155040929147596638998271018.4492939160367157713850490136020416 3.0941192060437159088196554590419110 0.0937658795086294111828974970712183 1.0984575951831870079240090697242186 LT 1 -7289322285163.9278852244735886454931654966594909 0.5902911277086123523097334727603073 0.0498522424310974798944464287361185 1.0511377721986978260331245297085546 GT 1 -2428146785.3608597227338015721467072753547948 0.1266502165818697301335369057058857 0.0633826473190354141341913499659454 1.0654804550917419034701736213095403 GT 1 -1734034957245128661206008788.0869903571867522419516594011668340 0.2490745484122353258540561241760387 0.0274172882237457589233910098603089 1.0278001564364686673616552968406753 GT 1 -14262373393837277707.5958360936388451835001622360344453 0.0598302196830367775698042324897942 0.0788496997255850789925696573245605 1.0821320635609108562824122570003457 GT 1 -161957253025867336231530155993.7002333888561257369591869988559847 1.9257788171562115085774107547590147 0.0134647308246415556136537737437730 1.0135562023335523895681286310855610 GT 1 -5382847592210955.0880746899218906875846877223880086 2.0793153355018789419265493674884352 0.0782389074177792944171931051186369 1.0814692076769683622583107463003591 GT 1 -1445981133962843181334925401692249925.1191535574116663639059594419617638 0.5386047829593180661905818915236946 0.0463390158177789549136229592245795 1.0474470331824944854124830603671152 GT 1 -1446.9510659414390382074689992779143333 3.3234288707099344055376114322288017 0.0604678549085157013616851395476469 1.0623732456085819252789666685048378 LT 1 -9948205864874996652377063491955.6928228209451655369818201164876402 0.0531800276571216052064120791434079 0.0198405922509561361100739365599926 1.0200400595769682464457757623740288 GT 1 -779103054821286522854157798175955.2816182414371358105849881471173969 0.1506107779276147036265018918174004 0.0577696098012276676416334278750563 1.0595054587269452081670144897164792 GT 1 -212911325493.3191387528873764791450742261103110 6.7429175315579590678349090384702622 0.0389481868596675564016559147732833 1.0397269556064255515056516853653238 LT 1 -74091452000262337615717.6023237185117332008708633213372268 2.6614797761359682823953263969906142 0.0674922491188025183237099286027902 1.0723192701156117339188266149819034 GT 2 -7159564070478452356822064275228.2271129437111324399313919041274726 0.0953375726519412295303761447036876 0.0556263421636538162318528882970712 1.0572333671751013449703533604674368 GT 1 -88485195370038119987408696799651793.3739830914621535304605323121184517 1.3950862796362800034908204275873550 0.0744575845699690160710221352193516 1.0773753182726189090184918481128699 GT 1 -2270338476.6702043694350950629245918917312124 1.8771887741695079246258493010927272 0.0712226546155307141261230370662293 1.0738862401701851520926402224305903 GT 1 -39131.7595006412268000040845262381904236 0.1478596323453837922114647137064911 0.0055960150069080809127077305628111 1.0056117313589390534132014827787350 GT 1 -317620332.5808330826722023467182959643181958 2.1999293182991815992488013589188136 0.0138687869580574384804733528948782 1.0139658571258945238729502753276167 GT 1 -164006468584738.1834168086835384768180883108992005 0.2317619695076756636884873694813940 0.0796689818638226437796391808497793 1.0830218713304523768878069071999433 GT 1 -1930602065683762020228822786614.0717339948475381637314135761415188 0.1034593531459137821419205719835703 0.0022652262316654497848707356609893 1.0022677957376807551384999478800502 GT 1 -570135462097.1822913958324942947265137156677884 1.3275855717974897309805404599562451 0.0014986336618647895904445094990102 1.0014997577364820990317635646345334 GT 1 -905836511285.9114697750043046081450901093803052 2.5738384750585205713809570207354300 0.0907787786343107563369685599212244 1.0996952109182572557696995155421654 LT 2 -310490786512577492304592.4339430953503888164479037663065542 0.5852155589806938495632803383905147 0.0465232552383923070631436281687050 1.0476402435819222455500043756910718 GT 1 -44.0697756011930610748656843052429618 0.3683835033494232645410820897056941 0.0456251084338453632244060606679156 1.0466987166268973012448138637742115 GT 1 -366.6726760554002478770124119931726467 0.6474402012862849059842205469624229 0.0070576604787017854181817589132736 1.0070826835702480290530274443735298 GT 1 -73992191419880121936601637822791453212.5754519010678671096642555025776013 2.7654416556751565734295334866072192 0.0512533829388226905030339326466496 1.0526135159585729361400649677401620 GT 1 -850234.0581581471518017019806352318314864 0.6493925274477512857540641949168925 0.0981355459758908562971737224465728 1.1032910429121311201362023865748930 GT 1 -22972945914246623254624434906343.1540370915697133860012406318136210 0.7208198753654562714594125713421952 0.0708991696526383563401484686589623 1.0735380096237620831452751267164566 GT 1 -6021076019976310064069714959245875736.7823231297799488957926803650564007 2.2363610401899472277507232340545511 0.0286849921027340667176535948421023 1.0291044473421822689846589091103473 GT 1 -339068641.3221491591746569071602543337813557 0.5376372725873317265029930775915241 0.0691011122329872106123713195813368 1.0716046136536037426152971260669052 GT 1 -573585018.6432477179162067025352198974511679 0.4055707626148602591455328969039422 0.0234728700709963073238675046113400 1.0237527462259383660906010488516233 GT 1 -1249179428303.4764451768544859276920342932678652 1.7572998074815068460120283280330595 0.0244147109544648980354003586975697 1.0247176916331745865308515973099063 GT 1 -88561329319565716062954575281875502090.3049431790329707399912478262319258 1.5053133777033406664979670797401238 0.0218233439241892478504464734508389 1.0220649953245752743297451416107717 GT 1 -2001286678389540116641809271301729.5812338433645361771516643259859038 1.2191753328058399689964026787685971 0.0612592127364205562650156953604284 1.0632158897856854774943736546722604 GT 1 -129029322464688481765.3617520318412717521927564707772818 1.1015914290098023928339440638126056 0.0629638613495058435126486021913130 1.0650334290237511929458542101419207 GT 1 -4.1186399247468576496774273604100062 0.3293164317496072778493351831606292 0.0854034683554344720605174824813283 1.0892722599755568904007072227292740 GT 1 -138671541198180104997115.1774871917519080076327602614378650 0.3595267789272807038833889692040471 0.0576497181383726191141827067994350 1.0593782244145124999321084900934856 GT 1 -965031571440377349133720.2097447772376664344627188204377953 0.0177472033803496718408042059610814 0.0924785404891329321288780377740230 1.0970380662787827605076243634303214 GT 1 -242762966147156998.0527575375529478882440120953872285 1.0377506280705652541452456703767424 0.0288447731985738190306619373702121 1.0292689606442096793191348708657579 GT 1 -479024.8230005899343779464904599945624282 1.2946787456639980661874133753729001 0.0686729963230466356900108782028320 1.0711448241947096700086348726349192 GT 1 -3438546195870193192.6805492654396759004265281052200775 1.8929937076916590781775122735760103 0.0242955877331970696192163613932458 1.0245955947232839644108374988098002 GT 1 -391595518495210460117726660853101.2638873886647718480773680805884704 0.9787198893328370098575037700992848 0.0420454600148097221577446011168234 1.0429549551798066277521716274528613 GT 1 -11525970470982343015505546450722275911779.9505456725383279454236029342614467 1.9491200079387671626471965002876659 0.0353634040062336008047103339369287 1.0360038330313049444397637952547690 GT 1 -20161497441348371597772303612551254063378486.4954472742974373650078321389114308 0.4096144966885457675659821731679124 0.0848689971249101074297475152798078 1.0886880514137439842357082322361128 GT 1 -388665454371136738795549757321387347.2837849521732447792722896949825891 0.0340940595663440994285995822736741 0.0221500891351467633733689805879660 1.0223990860976957510725787231201869 GT 1 -1711146549047459404465484959661599089.5262775045344419918981464286657765 2.4870012228996924901296968457829610 0.0351399173549175272224850831777248 1.0357721802331533095297524654308350 GT 1 -18401335834674868835381847672.7657989845662610209392221393519204 1.0039863807790111088248267829184237 0.0282261762996692226564385816507438 1.0286321932649305876193231999893945 GT 1 -71903543255750505795.6957196443006121738203835424553384 1.3853556117904286451566105632905368 0.0801143549072149780541304893584893 1.0835059154769788145116961112635025 GT 1 -7.2157927950255420339384051597948788 0.6320391147754022550989751240751462 0.0565710985355576587849103147286537 1.0582342731714637862172424101310032 GT 1 -1874.6280678514310994091979500829343084 0.5436179888060609489088862796852636 0.0609135321409144651608698416835521 1.0628477189664923632535504799037409 GT 1 -6560882524333604987.2558767001719412208093063301107148 0.1483043472464331670242014520066627 0.0490231054084376033407647656393859 1.0502655126398230742461683104785387 GT 1 -4631634599629645187146797751544.3367198075763864850193046118956685 0.1123551821363540651856462158941556 0.0530824194751498593836059619305264 1.0545432217643072764700107485035982 GT 1 -9696239403301.6065224898194912220890369614749872 2.9644102590619199165771878406908960 0.0244466556443743120101053010781647 1.0247504362976135078525017430815242 GT 1 -13163083876945626672201.5215049468293890815327569024845988 0.0981700300223671078719399982090983 0.0769491330007503481755394158589515 1.0800709354894170157022449489195222 GT 1 -46734142832486265662173461359505445180.6783104065643236182297229881323839 0.3839674446424608637395204155987409 0.0291598413365824961312951315130402 1.0295934394180844472412127721720482 GT 1 -17026826487.3163092439782425848598068895640974 0.6191988487034506744485016572679740 0.0476820217929085998101289495306879 1.0488562892382002045460152312398503 GT 1 -211974191.6785863477863457480948941401127684 0.3633085352554264960937287474841370 0.0481377654034178110777654613994521 1.0493349662207115304933505762903003 GT 1 -970.4197922659718448016436241003857466 0.2841756436294544876543906780553290 0.0186011373899843274501524660434221 1.0187763142733927379635728476072183 GT 1 -2266458.1873840507687000556863709430551147 1.2964427708389218865800203461911504 0.0736268625703267632632891274008678 1.0764781693134468819153532586522920 GT 1 -104635378318958.7102256873066289892475477460521114 3.3110015969098438304276839645137014 0.0171638710138446298397829369963297 1.0173128777306179334364446314056191 GT 1 -1352034487129946.8151250036605655989217407905980390 0.5813828725974101843143893787934374 0.0062947603797026172471680502192720 1.0063146559195364994310139441316616 GT 1 -1332700346729131765585726652973640.6450134536810715039394466645688263 2.2265319240346606110343700991159729 0.0815820953371462667049964848010289 1.0851027581116022112601148427062361 GT 1 -92077250270564.9076963614783202121249480264337633 1.8451577302626556395420965948156961 0.0657533530435505128749932520212942 1.0680147996447135378548823947808981 GT 1 -630637091110373957329008.5318388687190673043723460439688816 0.0859279476590045418450103392223407 0.0332597592905288204375479473204383 1.0338254434932192548096832008284493 GT 1 -51.6972525009145180107092422977536242 0.6269968724829440736152219252532158 0.0159669847729898075321640836901453 1.0160958304327716948631943541224941 GT 1 -16053202968724597505869399239536.4224247859485478636446150467981190 0.2816851109756960220425948609059401 0.0773568742621422300963404412019998 1.0805127652506118986321209476903503 GT 1 -174.7757432694182708080579584031423355 1.6687217315649946088282017141106432 0.0303060467128703887445951704490276 1.0307747693442394289573942354664448 GT 1 -5234362690.4055723213193597685516020532613996 0.5305206688049789165133186315493877 0.0262906440502040927968800410065498 1.0266424223861015379347890849925697 GT 1 -7016209348448631743717682611661.3748145305094774292261492614330317 1.3789288340745951137815314611002251 0.0357582626272694149917301696346109 1.0364132508983844894561324069551914 GT 1 -3790745434554750647082124090.3570716659041804168105861358541002 2.9586665333345190951007909516900248 0.0294407625308249530475990066106747 1.0298828401429046290923647010488184 GT 1 -2159038792577719551387652378452634.3336532408575675753915884715733351 0.3313637180718467958163641207050171 0.0002856387690993660365221974076993 1.0002856795716226123236396535085552 GT 1 -147.0977746726716810171220173040920596 0.1504593819300117669089576962470822 0.0592316753077905085683099772999363 1.0610583708864908209389658361766617 GT 1 -6584400944580433.4789401600418026859515107728037171 0.9616851750791910175731182752320664 0.0977717099516425347841022256189006 1.1028876977621920521363930649349259 GT 1 -39256505.4339496758361541884182972550098025 0.6569112158418881273695934713481825 0.0932791514797800611494827133854287 1.0979206507484239871714543172307859 GT 1 -30803038279964582.8736166552854142438940959627307390 0.0319259678990884356593587482625524 0.0257471295843914770054787787054035 1.0260843884852789198636009820447204 GT 1 -1909970.2289058060918046833800442306919047 0.8020626512080480896589874632099918 0.0293376847830956488105591290137908 1.0297766412933363739389121731447895 GT 1 -295357232998279878914446349152494871304.7324744692208797741955450823859088 0.0584384230853785440144654552499490 0.0308894427293870922434937333880844 1.0313765794090989480881826558905853 GT 1 -25993725.0161194064531012803043282959408085 0.3231667522745262985644860790367689 0.0965431924218326188605957099036024 1.1015269757614607657215224896830934 GT 1 -10533591985716158781428813.4373038635331433131572291002492119 0.3494716620675682932138709992280928 0.0716760118134814460402336745318694 1.0743744819249685815470690016319696 GT 1 -416948685698556644.0519329212467736489823474601501538 1.5065051612644964914415830295229360 0.0079291319049998590139715066954203 1.0079607346370565025125481006065089 GT 1 -1951986883095217249076637031.8323739022311384617634143341732751 0.0550518321878634369418947223100235 0.0434242039625424020398437857494901 1.0443952501285317693935929036144018 GT 1 -13532801325658294.4334168765038725215479852439669261 1.9768675232214618207265469261787186 0.0995758578763590728017564057355522 1.1048893576439297386845789384732990 GT 1 -509288520622417247081069688459.2408188895642265078501634127589946 0.7953901606577114011387152035345320 0.0455238868656948797369277523054743 1.0465926616566601215153909954084983 GT 1 -2652234687246863311229766984662702636092325.6333166939651858371616261776023515 0.0309613131530075740482276408660418 0.0582487767333418641050297403498740 1.0600141334815409763647270592021995 GT 1 -32523.7904419030422002778460252259909922 0.9656055815708082852797128491149727 0.0343426511836939426042621875964436 1.0349462190648613161755996487366642 GT 1 -307619535415954079921795381300789.9883293720155987704579915658118084 0.7856082144193669480278937987752638 0.0299405174963520310492660443670775 1.0303978871961266252503288395728344 GT 1 -1.2478445901141931061917630939553847 0.7053172864834479533280895405427859 0.0822249654540503684972016457949556 1.0858029788013170863753554046523897 GT 1 -12946145923712735196500325.4789069406211314257128245687439941 3.5397412164250831126429091660885934 0.0044198451932623777224529574296416 1.0044296415853766023738412077692696 GT 1 -173216780981380202250514717661638714302963.3710020178385198808895467062288645 0.7181680812589578227936163478846943 0.0108468145049800545102943066182484 1.0109060700764628333920728983322345 GT 1 -875703114034930290557609.1329861304291168635049502149496661 0.3381529223217366013473149078580993 0.0198040965434651610878890740647422 1.0200028258088991842791307267892319 GT 1 -270820332450383899405812912466.2207012055254081239164004965947560 0.5010986274753582604410592810602574 0.0697860823602747785641802788188244 1.0723407003176956781978040377243360 GT 1 -160278019163491761.2376357015692879800463835498496094 2.4662041570423046069880254406073317 0.0143269746631031710086862110360439 1.0144305966820577313190658882968089 GT 1 -442554502307770440849.8113697870354400916401667343733680 1.0341704282888722784058052131784027 0.0461173749097904129896450270484033 1.0472146495998507282625258221162017 GT 1 -136423646124223178675717509.9236769544133136709045472860281160 0.5050524420790544980580906601423936 0.0850729693174251955424182078334691 1.0889109647745440061858847002368211 GT 1 -607626100921099.5496775977322833158791522839219941 0.0877701866124450280480312325641199 0.0595506875711107273898441226778739 1.0613975259742203964277540286486591 GT 1 -13.0922827428834705296076120993688363 0.0472479879401015829462282559479578 0.0126871313042369001271968685467904 1.0127683002191876244572632636645693 GT 1 -859713.8163829241697944314149697135173924 0.8612602291681367272342122366164827 0.0789582356567531860054878566968411 1.0822498970196237682323359374929055 GT 1 -3019947746856684419.4003151815328923247294650806577486 1.5476178186279230053336227928386660 0.0822873389131292233401362531864311 1.0858709427100387511484630315601109 GT 1 -3722439834.4585097690545318018396646061303244 1.0941660332694441181170912882932916 0.0796339786519350647156730587420966 1.0829838387687206471163732142456604 GT 1 -173.2505241932587823183889153558546869 1.0089624616640175176814846717977116 0.0279270770290022889098751240411273 1.0283244537031162644295360958777699 GT 1 -138308772883848264024002120591472335.1973624831406368820431681386115063 0.4880777952700166629270264403150577 0.0163213401996922309364116661835637 1.0164560005075141332510346443457227 GT 1 -2736171858148884.5257258365588983814932826044712388 1.1613251570358776557285166325859822 0.0366084813144761839958603456246835 1.0372953883482017393843774412794781 GT 1 -36150072.8241430209808060160295137020298704 0.0999708825961596553711903271098622 0.0327715167266820525609942590273682 1.0333205309078555500394588174950031 GT 1 -10364318260531304655717975871.6148369370479249163281391754714394 0.0993935568306564550305838107319085 0.0216261873176823981537053389091127 1.0218634604188088980995911429532225 GT 1 -48678009340790455430139.8820118404685884314909470418490644 0.5897474528067704780021719167440935 0.0518866455324197397445362478667174 1.0532812116521177870774664754502958 GT 1 -11035469928572025179869673769891729.9510845160651438711382272977819404 0.6085723006049553775181353084277015 0.0337181786938202270610281432480649 1.0342997468350107780437283541352447 GT 1 -3400065039178576091846122501908913826849911.9343602716501394201883178248686895 1.4896749985007426520943008385702528 0.0755957348929349753548732037914685 1.0786057866731861364010177625558674 GT 1 -268186013183706039.5810988048920914658534207744957106 2.5617298674781594967206033519600157 0.0942292975116365875063119243356995 1.0989690927324581782314011089793776 LT 1 -8117633977604.4662944933764925204698134949369878 0.1890687154876154079278193567879898 0.0488876668384794990956623460955923 1.0501231023173094501897637096556270 GT 1 -91297182562979345407177542.9172760052872691268952737584991004 0.2777314502345798727580801201442385 0.0399706132708377525773377543980518 1.0407913838125569485351779910988211 GT 1 -394.1376221411654446100709705167259426 1.6361340560582558036580257528016777 0.0470952663629834441806553947222132 1.0482403450288139432919630714410501 GT 1 -144.4802126570241400180092405668077212 0.1302089222863003795066075593068109 0.0692713084967134434405273209708224 1.0717874603906155830713784959521902 GT 1 -8682371045500820069520686124001822.6771854233569584034685546967998653 1.0166578829547197947607952033718151 0.0242447921924733865046648173653490 1.0245435357001685178511848099832982 GT 1 -3544205219938612918296429432.1744428033405444885306889502161713 0.1122614803621268071707061224745470 0.0202599176390109358261355433897047 1.0204679645757389317226750821392749 GT 1 -3095113.8650882988731358132980594293848325 1.5878015093104971998899656691526891 0.0018575161713139232061621186861665 1.0018592434938283723975968328845702 GT 1 -4771872250.8387958802048195039740678963564628 0.9603417247172917138602359705996788 0.0463392888846277913635430614927041 1.0474473195178824901570585671448665 GT 1 -18402431936481957170988188994313279244.3718918120315677584061839614167504 1.7324583499997020911590106151841009 0.0668576422368698407117364237950365 1.0691975091061614130266700252514969 GT 1 -56462682549.7284054683915395867049562212346114 0.2868252399552915107382052550412910 0.0024800988995377839450514741997679 1.0024831794392296595033161789071931 GT 1 -1264690983746390920120383.2940994697807303639770485189971639 0.3282111476461521665291438587026463 0.0512259804504037698758171269162583 1.0525846335444456568036814474510347 GT 1 -1546254386595644271.5049006430237939484779325419949015 0.3660022364174011717632726391914486 0.0346676378541653810102556659453114 1.0352828202095436815112645652420143 GT 1 -1343758909.3531820052705209765143972649903198 0.0051856931614238405842425847764261 0.0525878215836030236214502774419443 1.0540210340085047339193804041795520 GT 1 -48277856301829520264864414957.2282878580643552717903675555395117 0.0414132959401581769887795625196901 0.0459432691399321851706832086569584 1.0470321429915578445994088806178757 GT 1 -1721883252596730480535030350286348284143946.1855088748551370433907680793984316 0.3152140496905983371743337508352761 0.0885879030834676127050912583262936 1.0927601273454067268440389079922594 GT 1 -1049413872925911665903606.8877798915847547464135628509635112 0.8662669338688052910723619628267025 0.0746909959552936636908274684150145 1.0776275388280952257559389752481771 GT 1 -11385027048519276148.7431928606889173691938419890440973 0.9600741043784638902613379211541373 0.0695790100525515115110945747360942 1.0721181178994751068895154937621753 GT 1 -18750.8982354046148191646547814082827773 0.3139499352628583502011543783731286 0.0658507378675898869465670921090874 1.0681190439578741824295216868353095 GT 1 -7624064088.1194479181433534395516501826532519 0.0116552043620564962163917659081944 0.0135919787969876840554900801214220 1.0136851953696352127285239698293134 GT 1 -18808601919637.7159027133217318308534964334786337 0.9806567656084714339994884920519432 0.0269442360739241436553276749474542 1.0273138871063226722313109365025297 GT 1 -4911198655.6467408032064597146244379296215190 1.4464825336128605253850068437125281 0.0366560517686435286223254802209941 1.0373447676791932758752478070252110 GT 1 -427029308316998788818409542753636390144486.4267815485239467835262534324202037 0.1815941771508416740795669841122155 0.0429682966135053767181173777083716 1.0439187601923247532205691192164978 GT 1 -122175833.0218430590825733478422683355273654 0.2397548657503731872092739253475205 0.0050629044772937003071516515511338 1.0050757644022440673397681033385027 GT 1 -46.4572589775467002957528304923989907 0.3998034793641962164570653358893722 0.0450584586886477556116057505175538 1.0461051536615586419830330290686787 GT 1 -321867174607081761706426170308031717411202.6044252522359810894486065897051293 1.7050960152597046397592610187349764 0.0312060404058247999447040058041490 1.0317033216985143096492191624123247 GT 1 -3012043824009014793265571298961784.2480314890999219237792869644133978 0.2081574754089147897955956623682997 0.0447099332265209594101967679672209 1.0457402497781562062172364513139388 GT 1 -1569251816289325896182155915147146.0031384825505575884712521813933126 1.1823210227193580995214193661354847 0.0224016697661189064217232594460045 1.0226563985921638984558811702736457 GT 1 -5246807581861200670791025928670.8112232656677347960839291980016886 1.1490255005732844184216499430820871 0.0001994391128735732802941547137911 1.0001994590034981348157733934720782 GT 1 -699971521577184080831723954.3048083143992218359906332821081109 1.0887872340618223473518330726743412 0.0506368046190913779673704452766377 1.0519638398045625433805611862856330 GT 1 -1323769343897195704792297.4598026042231835831186424858693197 2.7741651459414867084453191234842270 0.0756055045427980596849646794527474 1.0786163553192406085462754158740027 LT 1 -3412137825.9321045454297203457968243437266356 0.1991963100609072298844749912393327 0.0387988777080124560050940630822231 1.0395716075258444766452177150565406 GT 1 -1653023564287097806043337749021611958746.8654138185138917439740903776166868 0.1122396418340046281381488702777786 0.0995513090082178376068565377830270 1.1048620943439439341232964287038959 GT 1 -4981074733170463624218916551339202378.9511796419578701952392192052257365 0.6244667471698634250808293703760906 0.0680444783447234138923589805328764 1.0704701889811910865697011851213119 GT 1 -314734877389931981004653783495.2180595097140228272574652237429153 1.2792481957603126759297672963299119 0.0656075213973013167013396868074599 1.0678587163811763669688937993116751 GT 1 -1203982410312741973707741172857356189.1123684151081753557811422031963219 0.1399304320689816088817931194045654 0.0562695502500840816023504944778548 1.0579146941302492943495894428000133 GT 1 -57967728200317702.6370143955859733819555207997099855 0.2387282379072857624067676402857474 0.0831616942431337192278474693085380 1.0868241518734915573209585385629182 GT 1 -104714883611137236774253.0175009436092745927591574054937583 1.4803902878364542107890804709188563 0.0327987666608685172007163865717297 1.0333487045178391547979972001816499 GT 1 -39.2196680374476218259637585288080666 0.4848457586925669220146893529379428 0.0562641790779254201036165728318531 1.0579090027202970903182252308277038 GT 1 -485661930295933802726.6617400060741050029618476775393111 0.6204075315499646286299755319667365 0.0693954239128288940943574694616426 1.0719208222323238919591859210173781 GT 1 -10934726072005826465434.0372050818923009398379676883833771 2.1817122434624527030752010214583524 0.0942633647939527752461910803327550 1.0990067048156237511729096914563416 GT 1 -141774761509128648758568.5760000081028564850832153806484621 1.2925690081919883852106211821264278 0.0542342485762707731693777942317748 1.0557603606526504898249809486538788 GT 1 -13228046264289182050486.0895284994825406273596911335108902 1.8578955169317469335044690804732766 0.0339152136353835008694641914623022 1.0345036780574444227555808505357905 GT 1 -52958785005210502546289928741.3616895702513577338975196926286590 0.1080913236807455585280015569328399 0.0027331682239430935680228711701205 1.0027369101479737271842251359088501 GT 1 -16723449216846674499222.8487844123853006947931087848917517 1.6038715610153709907337802944797445 0.0048417725445067837429499954582320 1.0048535318979577074665629406499282 GT 1 -44994184675647978679980751073610844743.8952101848593544678737963911784583 0.8944271656059799211387450348124764 0.0577001727511587965637211856393980 1.0594317670987002243966538898770726 GT 1 -13482812468855209.3939818788191571301648480708200887 3.1149652559011122055576873872930989 0.0473335381745604749603518211771315 1.0496660847977813199708338660855466 LT 2 -77.3123720734148380816620029493985327 0.9027607469144567065089438412351048 0.0762673704342120775635822192234179 1.0793326111554854100850414650788686 GT 1 -8030510591835807.3798872787704173620403942748494578 0.3725482625000457724330678583560895 0.0866095570081459104384218110537680 1.0905918413997783026480081829426006 GT 1 -1899970511836732473700460561016.5760550851217104420925399362592741 0.0543785994657454406925979501404165 0.0197026096005224383629116269801019 1.0198992937607647430402581896529103 GT 1 -69558150076502409847724399326.3398680793963402705593925591424266 1.5245094717386140748870426610608403 0.0737589135038003403666904330972963 1.0766207256341226238006691072790317 GT 1 -337932322330050586001198282168742047970.8800107010658093215518061748875043 2.1584954271478379599103031532791177 0.0921314634262878210589566077025414 1.0966556943721153453551592915180247 GT 1 -396621692757263738126241512354897867933.3640096356866434392979279709632682 2.7799367901044102523889748075411968 0.0632464197150882609397447101515752 1.0674693516600948340422314078330009 LT 2 -60024.5390086722251943110129209042700709 0.6457673000508738930789118035615053 0.0804611114658985432410887776564169 1.0838829427009307039188470772285889 GT 1 -215120679676502.4270208759700662026351135921653616 1.1617314105763006256484598189672688 0.0684011804720889095783036055713141 1.0708530081175466827937825574734665 GT 1 -3607973734018.5994285979879203923589304869207204 0.4699120785453380114438171126595564 0.0345472754465588849990209596844399 1.0351581430421141651598952835421218 GT 1 -42087123309970111.5365153222750415105841041893880450 1.2744529971907356636881580358772427 0.0441358367195963042076777663755611 1.0451394646451044712578873431491512 GT 1 -7600745758893580158429351642.9164591820790800066769251308971177 0.9881420948099507831347669853556907 0.0574631919258227236312016689196120 1.0591803067629409964788228596378880 GT 1 -142374384015864.4214855714392824828312747812972366 0.5136138992843431215492068105757271 0.0259559382792086780620459280696499 1.0262987384564485860404657920664850 GT 1 -388.1746666809781109349370271791286849 0.5043997252617502088891856104608085 0.0529523160276825311474564121836999 1.0544058344002295993160375181408118 GT 1 -19.2901280368732236969485821765467086 0.6618991972533643904420593059257285 0.0152531409979762423450362352394016 1.0153706667761947342844306140210087 GT 1 -12347319576128038504.6554824105741048456283642479386175 0.0961566618904652427449677425515975 0.0838399488203116524653584531227259 1.0875642012091239445189433213158667 GT 1 -1217100826378861408154237559428935802749.3040326568492829525430332917875473 1.0262046747807437401369298366901757 0.0354489291571307942230648215553249 1.0360924974494156626701016950776024 GT 1 -74999090886897296901.2387753953569397895495745586867756 4.6760694246257521369375953484682086 0.0517270578875684835420586121455398 1.0531129045455796476173168735185317 LT 1 -1849824266406556454780353.1282410261589874231103530059540827 1.2940180949755837110198631607638631 0.0096326141272505997152193388845838 1.0096793078517429939756501352024951 GT 1 -24650449048670783250581630611022215951.2486244336865506819083525848295713 0.3877965098853742642344588452507175 0.0359687929317283013897730050338037 1.0366316124181085096770995779860639 GT 1 -201256055160053827943899781.6690032829685793660720208956225032 1.2846786697857322407182420949532619 0.0509464726064950113140111607189536 1.0522900779654839295503065648420324 GT 1 -194961991137774514147021317.2448530393888255560839850595561360 0.6529230441932551158735732775062411 0.0423831699129039077261145414483912 1.0433075496138946628036109740260158 GT 1 -1490.4220541421789930489303268158878800 0.7954255741310789399747743605383559 0.0886921041793790279769724710976845 1.0928744631692744988400172520410439 GT 1 -2553743764984146267192860412303282001366693.6038379038884795284360363770464909 1.1406674722111567267548648934681040 0.0830336731352924655104703936889197 1.0866845283762314211126763932392900 GT 1 -23.4411808042843977939057161137269931 1.0902994382524186946021846547457849 0.0518862684762713748807360851924626 1.0532808139611965356794591873678633 GT 1 -127831428050640247354950942519.2702920602185485733183599407023736 1.6884382364944796645980341828342526 0.0673070773215896409203133920184911 1.0696792612716641588069382324791865 GT 1 -8280402876407302739857781284598758.9570863793892119378730185095867160 0.6170674280639763548177730782676938 0.0882001031733197410967322077571439 1.0923347243562568406013989448811945 GT 1 -281479528.5840261386171592613275320222413355 0.1541958417319318798925041033364122 0.0558575290381667650079111981011044 1.0574782015952499573543150464430313 GT 1 -302747049992548043143775.9113887007413859196412515739271253 0.6256830462037229463123493018182313 0.0298819127175916033161517081806296 1.0303374754279556184416696133141928 GT 1 -2958373007947266556427116217428704830.9163863807565693774012330896502267 0.2952966051492939881410625236126022 0.0247015506251653886506851599452063 1.0250117529010179609605905685127663 GT 1 -19697950074377103708.2029073222214807423502865138714923 0.7035050198603667047589756754918544 0.0125071800597760892658377832888137 1.0125860531799022765116631047226876 GT 1 -745426634103001.2958642984766175862936025197410425 0.2132108382177752948048496531568581 0.0116561504771691915254347235794833 1.0117246159483871628099963248122678 GT 1 -1410845480073808598348300321901133696.4931899343973311516502209690193111 1.4158434341779662486874685573597541 0.0693027210479345189665828987598281 1.0718212114521379203197061072764646 GT 1 -38397355627570722746178.0210534285221864983440590409105806 0.1302736757721299950897084414049275 0.0078003728259962331402774159358431 1.0078309548721591848637672355205700 GT 1 -257608821486196763205068571.6147060135266059583135106094233626 0.3564293755956553588585822201472661 0.0150337106691827266063493315017183 1.0151478624253307686081360134563136 GT 1 -662.2351282567429594216054072550001208 0.4767882801041657402578468367362198 0.0778560826429875493520384981371150 1.0810539750286175057641187450975323 GT 1 -218486767248241305045.5332076886027004879036991923700677 0.8196302789960263917752642774160337 0.0192677436554816652752997881109655 1.0194557859811746165244387154542234 GT 1 -728948602260095052233454297868599.3120038457854083257726085502257898 0.8741136460012074900577244536039728 0.0097382018929629066582550977386795 1.0097859282799042813311713070158625 GT 1 -117.0394156990749375600792260702566147 0.4559560428279680412160644387693582 0.0581762227819691067572122450609559 1.0599370949230657671641037261050394 GT 1 -1195460942876376885257576905127503730878963.9327397315467809300472740307414361 1.4729253890537073355734448996734533 0.0470175142648989656650409385906359 1.0481587535292358858396829145559449 GT 1 -299449253409189498153.5830104544873810059050921492784970 0.0926954381931960410257065112602540 0.0839451259762449814437401996531878 1.0876790099628373542242461981978757 GT 1 -2703647970.9135221246811259766664186668448948 1.6816147063790523474044361612204792 0.0977328170348145849518142584577743 1.1028445910684755858672990146620683 GT 1 -1669897972042443493827467475.0162361048976050144948646406313117 0.7605894313420803781086687527644713 0.0980756340813430278514285587839002 1.1032246139666720158230322538885007 GT 1 -14198687275019917.4615123479910904997748828663782288 0.6761272085929828634798636398571715 0.0320824947837961441853528900182824 1.0326084172212380539745389085969844 GT 1 -5303894474041826539677150288283.2997811752372826885210796147623632 3.4471352628701779030525011221114588 0.0584396730327856517963915405820486 1.0602168575609147314222273467829320 LT 1 -2309149927899498923996043.7858753568943097685106915826746485 0.1236868076422310806740046116964803 0.0571691358884432827897573101845297 1.0588683718081818268807840331818273 GT 1 -371465919999462105395204271890341.4383929927505715228209964121781039 1.1072430847747992026990040597395970 0.0202571786504658300560854521450375 1.0204651689519139716371798821378123 GT 1 -14608644693624035765772133336946864184274975.7096872883884658139543052351580388 0.1494200327441315350918880241831498 0.0517414434100678286256162869810778 1.0531280748947243507464291216446989 GT 1 -1334820847600073623315047236549752018.1482401312272569877106395675064619 0.4356277716356825025963647291608599 0.0598774860784757119920936950020980 1.0617450782517516038993917020475647 GT 1 -1929139419786420260245898819529150740252.9115787886737522402734520448113369 1.1082606230790155785886573895640096 0.0006762272985811326276406717992338 1.0006764560433889413692959705178943 GT 1 -13772969631232042748059.5571856186426538652764489967243303 0.2814086099032403981790391145850910 0.0829293507701248317864825742069588 1.0865707658222154275953597265098970 GT 1 -1572043507792921839723029440.1468092308038699772407817474410899 0.2694228818248153390663776316029422 0.0959923902224079133786015356892190 1.1009175007298243717704283797273774 GT 1 -384153840423525660293259451.2964588163400115106903408467898926 2.1366836609724149197827957492340473 0.0229578209424887462469410442553931 1.0232254558574095516443056862282113 GT 1 -101070304.3277549532617909955079503647910455 0.4588166580168257662406037342262995 0.0822725153932460984708057168100003 1.0858547901594712737660236368489138 GT 1 -1086301887839798507588008667494.5430903107369646911737607494134231 1.4059412208652596770472001040227909 0.0951985200929624619608111365201601 1.1000397185637063949988143872006778 GT 1 -233218197362945498950343473422909277.3748446417888213504798345648318754 2.3441266425289109068523513398402037 0.0426553504075507922051475664622072 1.0435918169470686893013456407890496 GT 1 -101591226829535160900478641447991372.2924597764138852182008373665170605 2.6933436109310366145436673570882149 0.0731349029977285910836659688665706 1.0788312428573509055392576279341845 LT 2 -3564166538.7025461310664159970172174960338984 0.5676708746131485702193719062346172 0.0411676715498354308623432617809692 1.0420390593743924410019761639556813 GT 1 -113.9533214427679357143464683213391937 0.8335572061371154136280875339937264 0.0849691291574086473510904370916543 1.0887974756499674719183585147743110 GT 1 -16494208820081080843080998297928879043223073.7277426625254105905117489462047848 0.9141407612384680502980763732759309 0.0305433653134879929162050135647388 1.0310195348650548203851858610921550 GT 1 -1505283504177.5690195755624269830883282087839910 0.0719282627277872057343530490771047 0.0400277485696688108680073793328931 1.0408508996980774349498803803414309 GT 1 -1275548098.4132593330483555535000561043823441 0.6267727345346430503142017239853523 0.0633482807750157494681756658436823 1.0654437635725801056042758348758535 GT 1 -7673641654025471925.2268724883568241699595966345879062 0.0149996865415486788300645161761386 0.0554623008118816378726113305347191 1.0570596783976216182098602722206476 GT 1 -951.5423152841304479109441408346282539 1.6807695205001409440129029894234090 0.0660542330347219930053595598819599 1.0683369077868200779972985030927005 GT 1 -270506874163323916970293537535189.5790395845883699228556058332290462 1.5717784039575431319871552223547608 0.0001702462270993487669545737378415 1.0001702607206332725334610534235983 GT 1 -445.0574966435476359669116069776922378 0.3309885141351411581943540991277730 0.0196622265265876269645459879426669 1.0198580998918750793879194829214682 GT 1 -17175605827775052202772.6932386305933301714536929235872539 4.0167242851552664044345574177694215 0.0571283246870499123307320472372484 1.0588250869310111173816482461596999 LT 1 -73352865365786429921.9784533609217496522036132711270512 0.7719085198671245323869380934633490 0.0985590140329513565860261677622049 1.1037607005258147614718531873436839 GT 1 -1608731082490188.4171270848127606399065993161592704 0.5164853093195738064829710058252854 0.0048252097830997165828320806058526 1.0048368886917601648098705720632704 GT 1 -1038980517242700224794296963269585934.9871658917183403913633649685268230 1.0239041551948384911342969151535373 0.0919169949860147874739092716688286 1.0964194893453196717654247989186638 GT 1 -129890434349829999709289798190804271.1925384621657636012437820578271524 0.0920477185185365373149404830689259 0.0925734303051726914943893933358259 1.0971426310537507207238879069566555 GT 1 -2261731349039.6598656827932951391540944245726974 1.1157651893315399386508374931909385 0.0339727903104782805831746556927110 1.0345632777858550005762841174280620 GT 1 -151488703549989430262506521918421.2989636810052034945119991057553713 0.6370443954953592896993578499620273 0.0621954548778816668824900403476900 1.0642137257590415915524378487470921 GT 1 -655530161427004038769935219781095.7681503529702362786519913522149116 0.4570184061957513587227409826146839 0.0113433510062518888686287067881922 1.0114081775117128727397988836062658 GT 1 -669734619824.3906589449225895523462029355567978 3.8824234875688423943616103211272407 0.0150191165158730261662959437454695 1.0151330456287066101960177686371824 GT 1 -10915851052507723565040199780169929.9145386237191686094815643621336042 0.3016685003245159744332559302969292 0.0325408515067661008158122078441527 1.0330820787492522612235779296744797 GT 1 -1.3728220193053754413719615027916676 2.1143370710075319809532041093466860 0.0961714996697834557166096230391905 1.1011156486116596187440043588430836 GT 1 -4.3176809003579356925903657111215769 0.7163244198656757214855350159576165 0.0258261777746985636588436277142419 1.0261655290184578345195901144035478 GT 1 -832980379960169670059258072202527.6326763932646162073566591365175789 0.0392799123442480226386844885927738 0.0689333496140865649949686749039232 1.0714244141644971610570301566733048 GT 1 -1.8098995943566127028109335086960323 1.0312568025958542755824576818295719 0.0611363342238136207847502699216448 1.0630850011817695377882447014744096 GT 1 -3088935367000437461.7829850754036112198725772346364402 0.3918642325666254415471021970621728 0.0437022004050414481808229219951507 1.0446859085861433260294485874001472 GT 1 -2.0222649416749398262662279387212163 1.2988227825865501475514261183821271 0.0781410198264452820651254538429845 1.0813630170437977448809269258960189 GT 1 -7182815720550884702605977391593800554138.7343015062675017360112060405490030 0.9077616107235338606011106913315486 0.0322977846395076285435963672661770 1.0328308677928153360696014981295649 GT 1 -3007685476262533833173507.5892403501374861292217784766348371 0.0067394893313538460074508932647601 0.0729197190134153805866197129581658 1.0757151141600813282829061209026947 GT 1 -2380750261212760875119630331010.3475593791727306576486940771697516 0.3134048935659995855532666774320882 0.0213855176104824468430247550491828 1.0216175011465748119622572455904940 GT 1 -3878306.2983233633756877843108817008063825 1.3686174110137279443685110842657519 0.0098387964198004166399690585134540 1.0098875172099846950559914862464014 GT 1 -10104544524539163693905.5221485297040436880614885268118109 1.6955203857308945299006150863128638 0.0661603349470067419191091882990087 1.0684505203148760732119721264509209 GT 1 -61.5246078010656962690347019628935215 0.3761230033699030915356060911923255 0.0199488528129340288938684781502204 1.0201505176722125047547246397950664 GT 1 -997565052585850972895723732330298881.8378134271672486524082100262751287 0.8467815114236313139684397425241343 0.0782670004502081834904779460415287 1.0814996857051334256604246413766777 GT 1 -2211396272333478843.1128282041148909266078273632775187 0.4588436598399521073397710038508961 0.0090690628726863583810624502172975 1.0091104371640530483341983364200811 GT 1 -1137595322934654173750697408.8516624141082284709779443756423874 0.4944332454223781731651814882599903 0.0246089140390671900241221857308821 1.0249167746028420885786670635974606 GT 1 -118590633345.2988374219998494421554027237445692 5.2379696637974817116848372280895104 0.0392927564661713077565487923018580 1.0400855537449377716669562048068305 LT 1 -590306376431854131251570159551395152.6829435611882944285658221387928894 0.0652556859426014011834546330445778 0.0020702284853224313395141486571277 1.0020723743704730338477874095741652 GT 1 -641739307623620871360681024784.7128578192402946325580726671987311 0.0002511579966329666192286101978809 0.0986935352594036135613562387160204 1.1039099407609338083221224299273486 GT 1 -6149818562968227644281525.9128169311717475076599243577757747 0.6923372598966051607875354004572113 0.0049229378253562861913872052938497 1.0049350954008434218737328946866472 GT 1 -226209285456671318738.9269063756751029086153263667587718 0.0568799519664689077989346829936261 0.0619036253637608592362556828441455 1.0639025904390454619375695741440865 GT 1 -4791198145070660541703549413077414762994594.6955700024102465237851529553106404 0.8093255758548415041908345983243920 0.0661652111038226607408913102525731 1.0684557419495197546501420688364994 GT 1 -924908300655019.5257920883053762927467430258807848 0.1023004988892974629525779467183895 0.0592333630279587858256346822388679 1.0610601648687475044840317204031368 GT 1 -79.6707762759553002783159327618127550 0.0786948169177459934629747596669868 0.0228281136207786591958827720502421 1.0230927095793076484744713379963125 GT 1 -28816732388404730668521918490739248331.7939753275174668327550099263832596 0.5723636359727583255823401160812668 0.0401598645406341679165326276779946 1.0409885339503368000369459783219850 GT 1 -12445066872660245038246.2224766428523510624032392122010329 0.7849388700567671185553203153981306 0.0742006177484968168939274142398050 1.0770977176443133164032002236203018 GT 1 -10720711164.7895376313660092583618828083185504 1.2288443118798253076721460054411677 0.0704175094676726855897139340890197 1.0730197285477587958627413402937864 GT 1 -42.1577036612484304864748749130541635 0.7131605640379311562578364546089960 0.0343635717995864118623695622965160 1.0349678839365056537219323617405885 GT 1 -75756551530173159200442434850036346863221.9511971180742858450228262046915529 1.3325759409377202783445450871960919 0.0854796558550071736397458795986341 1.0893555652040255465257392701158017 GT 1 -32008399283944830216109428143496.9140360650590030598585404851533680 1.1597786331547813019504590760372502 0.0668921718313337570633549600115215 1.0692345133564255503553886910667801 GT 1 -25627969592299764730851432976357439602.4501466705722622777321756564487809 0.0191895561272075152948431011121050 0.0404310748873753746441794601920694 1.0412711317082793656626640968006454 GT 1 -3.3371050592924769554070400873440460 1.5681832735913922247501116204926031 0.0402558912809888936540306501922778 1.0410885834696283368247431522022594 GT 1 -5008221975028866105571889120758.4783344075998697507917913601389590 0.0612157948838635645791370733514134 0.0543270121554994599335461554092104 1.0558584485022616811417067613634807 GT 1 -3057009112170893037728081.7432772336090948869545861309934736 0.1155245797947451879751701215459018 0.0710696921220520048863670142524926 1.0737215614129482235556654884323033 GT 1 -1461521403801414177608310013.7831640355276054453223423233225539 0.5034392685832333988748528081075636 0.0737614085597375196539528319224644 1.0766234193812842230260091876938694 GT 1 -2459098654110419178194985231236611620.7943087451992189157443883608119117 0.1715692996884603455718697904519376 0.0664424462229557374155623298233073 1.0687526641493538032161849531057103 GT 1 -1159138940095.2792382206591822383809033770941120 0.8191613796612887536273174231915944 0.0668411517020836449385093454517345 1.0691798372161866652636480827533432 GT 1 -145498715772.9151181907375922175190413742798086 1.6945874057356400636329730182800068 0.0470458216947305281226203390922687 1.0481884580103634332149494155717559 GT 1 -18342219607.0184661400589020042311280761054123 0.1256274903689781002307392321180180 0.0369950649230253042167597376768604 1.0376967425066185905784501177967203 GT 1 -14007011675154725419831364251796031.6156324276080071400579643538810322 0.9370975039261622968208909745696716 0.0515256935079737084012706989039609 1.0529005785432623351133636618968737 GT 1 -33640.6431876977007409294777249943303869 1.3047347796073340283048729655705284 0.0808706913197822054207002118010192 1.0843284606701639370282038171422013 GT 1 -159482991229387786659568951.9191074837890697131564812630413992 0.0761845191565168478723638486335153 0.0515773160364000374980521675556312 1.0529550069373172739543850766973189 GT 1 -8837095951311859547962226.0547707829258716188625848307815742 1.0669776486539822304493613719896611 0.0218615477685365948943570945551103 1.0221040522681013710850145953340708 GT 1 -21857683978453896085405063404880802.0746519120135351912555073227366881 0.0113706304673786744300291595422168 0.0001620153101296556464012012856624 1.0001620284360277639619813246995023 GT 1 -66739894140621135512523486516895607253195.5059264212492931806525733623375358 0.8286746504868007162787824223294935 0.0382055592003595236431053514218084 1.0389545301514939583289768884120204 GT 1 -1558095407629499002756116123547152.4741547104883121653759975287018886 2.3759811713141203339066977608253714 0.0132920283543420344960015177455574 1.0133811580539950064938091612705790 GT 1 -4802646032714653880271.3600778170048319148743624980135140 0.7390027509745106071457687555279933 0.0293826999670467421014794091532807 1.0298230181095410480360534632307150 GT 1 -948029292138474447547710363922.3256827568453276655540075765754027 0.0588070568462036585291454318491084 0.0326589607619342814208266467188996 1.0332041681061417519265115647636065 GT 1 -54408810519903274124625365567877048602.1297957716811726072139694606402618 1.0943747166908646170982609138748566 0.0043865283341431784356852082600409 1.0043961773770953320385993413677883 GT 1 -40579016918664.4865319514346497736333187436640375 0.3582288971992069265988770328561624 0.0529642264581515368876918916001918 1.0544184108581696250641639450615123 GT 1 -1125103912326755702063479923784302472030.4601714620366835678351263252838886 2.8808442177004150094793248835233019 0.0278286826210924236513316603024725 1.0282232376048999631808149595514044 GT 1 -2052095485254238070467423817491039928621.4444154532269563716951150014805253 1.0598851794922838665280392068530170 0.0948879293133033176057525463951731 1.0996965079362086836077973295123971 GT 1 -2543346460274645032422238854280257565691306.9249681035889540434302786799745731 0.5325205067455073140970139719133958 0.0676491090103296280742261101810489 1.0700460426738680196550224431874858 GT 1 -97728855296797347309313.7884415553052521335626318792137799 0.5459154712683863435457467202212488 0.0879166179280287310874512922815542 1.0920238653765692423281078398986776 GT 1 -17636598187186275.3575683173372034750661963044437480 1.4053272335077732838976842561052227 0.0497247043101437738598941486111890 1.0510035514304047048057013876295346 GT 1 -37280570069016597911475350483.5092117697581378660729323038691511 0.6122380666654264632669994865944665 0.0608904187180976347791371553144308 1.0628231066020604730650015718292746 GT 1 -4403539122327405962807574515007086402.6118912318100002804472456512751518 0.3143839239443955288437911730068710 0.0519625531378296134795812979664948 1.0533612765977931946905127057754012 GT 1 -779810524786239170865360363254299111.6329281005533628084181450687123099 0.6367411970125186433364620367579304 0.0708586919650374389275368701513248 1.0734944440552376743970345128631610 GT 1 -15.1697683823609675356451216348498912 1.2003017690497384919382997097001988 0.0414006120146011194229916281413421 1.0422820307030869384750503124725182 GT 1 -1924033987110713848088385594138496.1830951040785232297721807190175851 0.0603068953871750466793151538209201 0.0652280443677254883086027483601490 1.0674526771608284001627081117760996 GT 1 -774606329810278444.8213481268190308705807390741211283 0.0365378824759916900401483474094804 0.0526373487782145951626441508139301 1.0540733116658264840255992312055451 GT 1 -5804691143417378354551504115869035.1204925780474500108390799468396658 0.3177955378985113931348810499228796 0.0128753782827930446427319218910736 1.0129589843811735949417018019401412 GT 1 -7701.8208280873895392846470245046886541 0.3222611091450781126406764504974063 0.0213073443604766183451319059966856 1.0215376227784551179698039443562581 GT 1 -1186735640977112.0149252609977774440222534885190058 0.6616023352377483678460768212072511 0.0436519023550588500091170173859747 1.0446333133304645022008302900581848 GT 1 -85148670.3283814049139278075406350007836138 0.2944656231163708081904388130987396 0.0346698532471258655929096584800959 1.0352851151657571828161498307563103 GT 1 -4574565.9865393348083439244564595475305667 1.3017741398923741690378252113928800 0.0775920907152961810295202238968090 1.0807677353841891037455832924760476 GT 1 -5509978706367333670929862550500363205054.9724914629836261586820758047649477 2.4188274701360656967023165796408715 0.0194092483712637560273649322753719 1.0196000811487246460687329810791592 GT 1 -4392659.3182365097741538764622490937216144 0.6624699387654453722847080464037338 0.0979554772137673136440143016480444 1.1030914000642530345545351800507422 GT 1 -12852190454.1514158755804904863995813821398718 0.5315649838791337797981684963155358 0.0774083514226003568608216381138849 1.0805685599507638980001676425127943 GT 1 -28359453836721472002845454.0256793249211022865458507013868913 0.2874634741984322065629614561299929 0.0287554609995272533366791749359091 1.0291769999668229260914811565135003 GT 1 -8405882509314373094.4438059740615927189012589231808926 0.0221297614876271418940312002728553 0.0472025684613772472616472234118841 1.0483529566430189451732045809094794 GT 1 -3096637713916980352111364135020965381.5041695026452745312790888806656937 0.8314603036484661290711935513652862 0.0889930979366695738765615527256460 1.0932048053915702763325116517996486 GT 1 -24.0961105521738458398202886581960385 0.9097835053711945364786025718895900 0.0213256138075369277125996900861985 1.0215562901481107761276793375174538 GT 1 -25080733339.4381733770448522334778800078243336 2.3626699933532136164786014172732273 0.0683260641075886879223741123092889 1.0707723797024932242200546170984352 GT 1 -85500813031873067302346640525.8816593703248328210250314363929006 0.6890439933512121746197133167116434 0.0447362560563923344228717914045091 1.0457678049610831511913365521739073 GT 1 -103100639286.3974645065227068062015224087189955 1.6570041876614189312621668071552340 0.0804046320312746932473541678690832 1.0838215231124021290064063611996929 GT 1 -77974758968.8782256407058622183680494474676535 0.8417794463949905824881380325703450 0.0467932634767676742345918762489538 1.0479234665109826229780789827611029 GT 1 -66514954328611959458160559.6755519705974909121933750468980467 0.5725083620189438750287572249454827 0.0083317113546829708451474643493179 1.0083666140631311607718112630136000 GT 1 -2097348374536984722864294240.2513687473461947067975131192142441 3.5665357113900251183088131487651981 0.0319051332567872258736890369503289 1.0324251936736265328920024350420672 LT 1 -6460565825877230768191403953383292499433.3758643223747733912120198877074906 0.1013489443977920760754894077496944 0.0959585407832291822728814209115817 1.1008800576761338954821935019356052 GT 1 -56181019694238172597792.1525968927257166640271134497040799 0.3272336798270193021564027635955125 0.0494487666572717508405494448702663 1.0507132170410264322046544196359502 GT 1 -542457864218615942340732476869337759468247.5580517773391423713970057743107064 1.3840677903740091167453426996558637 0.0274264260972779794416184565087374 1.0278095519524995019463258530283855 GT 1 -193290585.7357152366816740796604759296009411 1.0230743587823688479547842740737803 0.0906239771202502546120873907660901 1.0949966038066926715961270473249061 GT 1 -1213129208705181218400110657.6606582791947759591874338443263298 0.3499537944121106586190271044448112 0.0415460949189299566976853022272498 1.0424338083350748429021611472625162 GT 1 -9792453503964870125855329964384465693704192.2419736049414507568722123004334188 0.2594965786242250953314818999277904 0.0991744695223177049356660647755373 1.1044436799938062831628742600702158 GT 1 -123136879323.1357521835528978440928057226782870 0.0709329591831442349271874580017650 0.0904620261082103873005513660656573 1.0948185294032241374951402740736358 GT 1 -7054700761292894968298038690440147093545148.7106046063822749255461044932070797 0.1921934400768855201805786911326533 0.0993564453668483884199809370025958 1.1046457104884216852799739698752096 GT 1 -12355724.8558743459601806531148669061468556 0.6981329151050045703576372891626456 0.0711939164103746840030408409916723 1.0738552986741424204671324652338588 GT 1 -136812529659882135173481153874467868226.4628107998733988066593979485480881 0.0551916893135338787239295886803037 0.0913955381885959325663081016376593 1.0958454150245989090134972380129167 GT 1 -627386751424570103.3773230204702743538968853011833532 0.7069710189838886910034933408616479 0.0574532989822011763193349928740664 1.0591698107360287421181023044010687 GT 1 -97404808.8983713466200267062195070875765277 0.4180843202942033331792855823143682 0.0878722886002549058359212414697581 1.0919752642821660870674597027936065 GT 1 -32255819.4208725255324798391038788531737422 0.1241429840555603496939000334407972 0.0743290790853702084036096996994550 1.0772364844793631192752009812408802 GT 1 -147217888580725829515480831622932276011447.7266645998531291159892485741514595 0.3651247058759962362911291047291432 0.0267670344909167984427681445791134 1.0271317953325616429394585314942986 GT 1 -243737410095719670221507892405538.8605196877383430769402033080643422 1.3926303942603148156800893887142607 0.0702073722982952909361845381375409 1.0727936986646961185434547606186263 GT 1 -1745052477248857883913975933456317328013553.8078815532758174680982831037769352 1.7902287956140721326399934532960332 0.0245904710286091437327733776008930 1.0248978664578298054203297510066340 GT 1 -2260740720489799216063507521787681372695.4978667614482988277850686070908805 0.1851627273495742830891357627080660 0.0710632535967233134873374076336366 1.0737146303192363453134738209296346 GT 1 -3648712.7345597261384264453157642454276269 0.4436947417744970570536041204661297 0.0150613539380498994602887526092227 1.0151759280120221139223867403983505 GT 1 -69415545968626350555571718805507657020393.9471914921106478259046418372184397 0.1716909401256961325576346572653107 0.0190186010755479759843381958669703 1.0192017809375699665598355888050986 GT 1 -29858299202.7039272388252254416879918975288261 1.8030923713509440407397560800423569 0.0132019316861220702782310264658427 1.0132898518543094916178096852029765 GT 1 -65234072306462807.6470957155543059416979818604270787 2.1556565690875735615386542857072396 0.0772748392240835676153514587286767 1.0804238561274713026111509084336717 GT 1 -755693504723412246331.1211491242149227360456160353720698 2.3411139258538981642467423622815534 0.0474426369831642552605799138944574 1.0486049501549290416697617902652483 GT 1 -22540886422628.2960838999410214168961320882034523 3.4281385496545441258994010610034459 0.0537854898435143934598613623038110 1.0552859807129811897664729543783856 LT 1 -22437106849.7022280376616310813685440756349075 0.6696408609775609415096228868074912 0.0941871880458011148402674990304330 1.0989226036078803205972167615420879 GT 1 -618643185823.4309102545285358561408727079712843 0.6553213493534849490170637158452673 0.0043992876197214287124107079207349 1.0044089929603516727657824935294495 GT 1 -9667547593287.8598822971350045508025281418995891 0.3568566726173567647312988208861699 0.0852353155877210882175531790932416 1.0890884222876131036300612727212298 GT 1 -4251328.2000543266046408191663591743461880 1.6743173102076069859771258548974637 0.0019389503689345348650060820780984 1.0019408325665865463149721270992756 GT 1 -1358500974642680574860.9227950391389817200153664189090785 1.0966242531620081463311914215818123 0.0798127608289867067239745251889313 1.0831781088085493276732563056475548 GT 1 -2337606128812637673697020756502671345.1916826357309996738681323041500031 0.7188364619161583824203699482364281 0.0982545224179874484036651807945856 1.1034229743682450455542109430862001 GT 1 -71319559239674765909945736.2513049171993606705185003339759318 0.2857462384037168398719398311471256 0.0874528172858747918625112685852387 1.0915154877782828388740470441214260 GT 1 -249791.5515417580104407090144393226781819 0.7964822952795032823554185271706425 0.0559326391937615659185253067820980 1.0575577585961412046996138796814423 GT 1 -6846282728183197715816906795.0461002093617008490230818234894511 0.4211122675649777130112695011490096 0.0569502961376171059389465836272679 1.0586362895061264544073379002469063 GT 1 -10303696032818312886142119670860248634188.4346625248891111104634216260912479 4.6331955493800877792673535810389149 0.0861948466891555582332453819220504 1.0901379104391843209355847427445145 LT 1 -7972362251616641275969033507847794723.4677206999813351966629666761964708 0.1703726990804074699922735955431893 0.0118671811776375353135865146298038 1.0119381582630019381095766758204316 GT 1 -15302234908011897.5590952404156744970877740227395244 2.3054499210119767413343676907815690 0.0422081292110992825943814106823945 1.0431247784881168114528285512961024 GT 1 -224819488.6472039304580298245441051144557639 0.6235529935705291656052596847002020 0.0301019485446702880244312638773363 1.0305643146007115355593507922858345 GT 1 -414384652734575806628066701954620.7402811315858220975934378914150214 0.0407617870853029471324814010888397 0.0294491340805992750004050162640010 1.0298914656709050858708104202986068 GT 1 -25.0428330032221634581736472565636896 0.4753184350248501584739605017311496 0.0573329753041320740209297177043906 1.0590421608291865488778665179558864 GT 1 -3250310947.7436098186647205256174616383836469 0.8812389310876412011552046635083910 0.0626079824385987572157194704065656 1.0646537090392814798852866337378870 GT 1 -44095155702493701.3803586119188588868457879283112980 0.9567537734137197923422223825099363 0.0383906891230334500508903037692092 1.0391470325557179807724738393487581 GT 1 -11281432445734435172756.3789633413297436025528058623057863 0.0318083576998386492168306371072126 0.0186016593943500689682743483270421 1.0187768461718128970372679554701927 GT 1 -2545248.3472228770277312521466374780500908 0.6939812085166479828739573637544629 0.0475520133483957904889488895929473 1.0487197806622247389152566885311649 GT 1 -713909998726270035425733181741506322912.8941580876719261236219954529920419 3.1661763546292918165732815389331327 0.0164272969953363981723136180338378 1.0165637211554699170783335847882360 GT 1 -1954773.0263642394122491123199722360381863 3.2462321290256469174149605453742380 0.0529116725992640242173641998788277 1.0543629193949916360986989866235200 LT 1 -230387594350282626.7981628150515245185068355223124286 0.8894621227289791793158294740764489 0.0681348394517690541229573100930506 1.0705671522867056574103184846861030 GT 1 -678842843073703304308003827337162.2552757182818234585982679041329194 1.2259775444562547603161960073478127 0.0262812850428379185327041067976765 1.0266328107270050480392257872348192 GT 1 -209067830433482954151324.7383518548024586418153161613097722 0.7330249281699026561360940461746877 0.0719093117728547748058016672586426 1.0746258265879533004020751183908984 GT 1 -2453696399040.8154701025026723103829025555950582 1.7677130218216777951046859659111440 0.0981416049940741850163135695942985 1.1032977612593390737197432303111309 GT 1 -7448727547127318055837048549165068504.9792228370766539082974655000396545 0.2981792678777582311212762182093044 0.0879864286354393501578956712379690 1.0921004081363311970112732332098412 GT 1 -139666108.5376392157890864023621776548023360 1.2781495698142211957258913177838831 0.0570114868968833399015928850758087 1.0587011776496829043647400054465641 GT 1 -180008543473037.1511364751866980217675498294897925 2.5244656215004049694122052131564973 0.0838064380191839354250947378121265 1.0913581669439107208987030385774385 LT 2 -37316360580.9268469335315725848903369763845130 0.1188248444075200112793874251885720 0.0559878113434973930716531282152062 1.0576162012075949753980834310029982 GT 1 -570722178387.3521866255005797378089459670705430 0.5698461706784384335614889656442434 0.0777929400696695362789012037856867 1.0809855037082232150084324471411573 GT 1 -124936232766774896681.6339853981921556806414236042897791 0.2547215704089781620683227146683023 0.0965016755407921638946679088536641 1.1014810234516201228544178937231135 GT 1 -2156359571430357941050080986920047405.4217321898090941573678893623429175 0.0551432773642198651931179133606641 0.0129213631957818798940378280487712 1.0130055701750108435488147128078342 GT 1 -41742988581.4244702675739314069460105767198494 0.5556079870040120300750210907416052 0.0988517173821568309547790357810180 1.1040854593123882942011357199101393 GT 1 -2.7161703847879713798668221777486664 0.0848432734068603186612675562580399 0.0224472821417504444657154514450250 1.0227030572640699103566343016021306 GT 1 -348425703.8976893439872448738346871139071163 1.3409167268331019146101575950053334 0.0942700487152589956911000362512508 1.0990140843845941057548583510996834 GT 1 -142963613179052851.5407484822204712789232672080866992 0.2767983319331288709328494236720234 0.0630745504368866045651882990274740 1.0651515628085690614274335744214799 GT 1 -2930543908202583256998788683829932087163.1631947009507752067336359928172646 1.6935543691252197644844862834400640 0.0791702992993935840918643624315680 1.0824801667725377050471650195354500 GT 1 -21858621968323277598180733901729.5826767003708385143269247427691633 1.8138483188451733748175986495374625 0.0929136102085153386033444385288798 1.0975175855621213503978031503335856 GT 1 -60814221284155300.3473963520699141145392380390671286 2.8416740331301860113332545752311350 0.0866368593391723260410033220776028 1.0906217330406353647002604844988228 LT 1 -1292883708615.0513822244565422222637742178734105 0.4037680101077846647697237524003940 0.0046011879301530358790681261636406 1.0046118059782798752631166115133679 GT 1 -30380.4522304448156342021398302673283049 1.2844028124288501302520560067949190 0.0834115385105121042471726737831921 1.0870966953678795707029639952212271 GT 1 -149079453799.2748741821434676064957849183620611 0.3207702243119288954507038877465154 0.0111699930872436931407640000122429 1.0112328459422840734785040682610138 GT 1 -250546.4267252500537420895064181623066008 0.6577752632698217676021939953207820 0.0441380384378231125249660446347875 1.0451417680275798146748726971268161 GT 1 -1322560773.7220677549979049402295500033666229 0.6211775367732935345923015371584515 0.0489681169545635360040864218515455 1.0502076911885911785149603968204843 GT 1 -1008002498892475.7865214556270160517045462935717353 0.7029937181860694881030045725630678 0.0340553968598232778176661546168750 1.0346487930597806039465423458203199 GT 1 -113870122.3253874541940767494127428090027934 0.6966636645188991350725318009416255 0.0941514850296839051751509039181969 1.0988831889384923711631990857772151 GT 1 -851830770.3434153923930846067629892668214935 0.2132634250101953889598518494418268 0.0217670318197786959914259538896912 1.0220074285412923337761379607471841 GT 1 -3243575378.0878366522072450796013514656612224 0.2881052630199908697568134838249627 0.0029782928737028414998871808513575 1.0029827368136868896782551960607059 GT 1 -403111000380863.9206759563871384611335226325170683 0.2616004366847546316044742775711510 0.0623710956961238418771968898554271 1.0644010326654097658006536439333255 GT 1 -35424366.9914653251439135952244907621245481 1.2222472522653936455185882878748444 0.0267649766420743752464510417089655 1.0271296808884976316055279719584649 GT 1 -26138933111561559076649763088745044652.1783109433121189237153606885788186 0.2185472617330094658899274057232922 0.0215578410266611054247239066278794 1.0217936058264107612740542716123024 GT 1 -66521338532656127642033599431065715793190.7960907235942646878796430531506743 0.3464621123384084073805359886013218 0.0951437053349222286375302523019211 1.0999791383160737087244850077471812 GT 1 -218410659184109085982807235457449169470392.9249739058581111293197213092432046 1.0737141780355729279624297485950500 0.0934247462447313972850281409019301 1.0980812365072325029576780574740598 GT 1 -38179954080217203369.3475085067850376908363554089717309 0.2255506167593973055635537821166732 0.0128159089214124107204040740571301 1.0128987411567850383731014747541239 GT 1 -492776517183305198402116202981390554673.6693577067835651705289299901999485 0.1090102328302121191637562347118241 0.0972648678005406464279559783319388 1.1023260884152365269303826578896600 GT 1 -24232139664747550433915453130557662.9087780792478682968474117430981303 0.5333417983428395806684927107357092 0.0224692873506423898455137812055597 1.0227255680260655366003579761396319 GT 1 -6745990577189937.4384040442852732111060963496364422 2.1616511899931652104838055501115264 0.0802173283219378767984272222175167 1.0836178632817996185892985542771210 GT 1 -35234.4432430753903726673616643211478676 0.5928983826628668447126150989662584 0.0247845805460322093835951192878977 1.0250968893588959335077069035276113 GT 1 -2417251774694.4586565680094957889290790746185670 1.4846974618223165292358404510666643 0.0870721100275990889854062551281201 1.0910983829166591412027100648672763 GT 1 -1124582581756.0914327257719124619429266579568266 1.5190909538334159135530822808220609 0.0806471503794992329561211312539596 1.0840852807835653025669168163848675 GT 1 -6557255449839807925972399012014579056.3194862985060901132702550871873081 1.8539972662718246710693054751030382 0.0134635980459115090018352533160484 1.0135550540947462459485430924786899 GT 1 -4786091824718501622495333330690005323958024.2354682000835673819587872161492904 1.0907084882122191528681251312343748 0.0484541807870565738684039561369278 1.0496674386886304723817140264546118 GT 1 -5329646793475147.0530301001207461510466067239000090 0.0348832292441704599521996136400723 0.0561993093376402771217387108615594 1.0578402679012220095364468773309907 GT 1 -3925457443580209122038476010875059686386345.6516477228694396012924104373500536 0.7713153207406970211181302430283182 0.0444296375734929479344245819305838 1.0454468786341886650804067584492850 GT 1 -394884127102938104.7118863697454032616571205090217803 0.9003634458227157372000739619829033 0.0192945425617391987998592250385337 1.0194831117596797288688072451024098 GT 1 -80.5541286174784110244885909222439018 1.6362555370077792894664413350914496 0.0613879491114379584289840008021172 1.0633530364877895975615989164882758 GT 1 -278564889160092655231946.3580593478361289673163328644823685 1.6651361496883240281594306654563364 0.0722195250708398097740984900766504 1.0749601313684064464122829085653661 GT 1 -90333596841.5430638860471836379819372198944987 3.0172869428224474027829737248060608 0.0040877821026986839054233092747654 1.0040961599228882692304235611954656 GT 1 -12977680430718144478092901572343786091514.4435239889697824556029732072488764 0.1727506732105471069725592575573792 0.0752274649370731200838567485560275 1.0782074797501306583748904238827299 GT 1 -231037265722647499356.6464851902134690415467792467593240 0.1150570981981612555505547844671326 0.0093961610532270852451901387722572 1.0094405834602082318915538289733775 GT 1 -26372766018991698128.4543352007937695458657449696035761 1.1942024656662478236930381906835011 0.0325738505064085366931789478992242 1.0331161882643537191736004351287293 GT 1 -666138730818224798907621702073864.8909807349828952180577939652526002 0.6261800545817860661380613158816594 0.0530047698676377079981082289588580 1.0544612226277908338713916548149145 GT 1 -3816620158350754997823199031132740.7224842599237289272078986760473179 1.8250859107365941027026223049768232 0.0056589496860790862394978521910987 1.0056750222062570436355393347994801 GT 1 -156828022518.0231421262768637146045952821575165 1.0010494868503549190215923406374466 0.0684037859530054671455364076570562 1.0708558049057192662497342420895253 GT 1 -119375507561045880519741149.0195684165842161499821546121326954 0.0244694312109788564522808832478612 0.0107007354554897019414863197687909 1.0107584000632129429526086487098459 GT 1 -756.5037940423481636996277340755726954 0.8027009943694491369981138293086023 0.0768273060746530929081058335033748 1.0799389613029180985869848624900459 GT 1 -2972067789669820182.5973354522350619800579340074519276 0.0706491444975742490414423240216673 0.0409450255585659632140310574711903 1.0418068809852514710199690741415013 GT 1 -95629689174175035839582330269.0737773285257342958707472988651598 2.5665835221595038719650264612641190 0.0790879822120149518910638558821484 1.0857848963023950642426520628814233 LT 2 -3423937800095261799780395587.6891354449823713351775727859705354 1.3691863430096505934013236466830424 0.0891453817480031162321920578006557 1.0933719792519214655751176380839610 GT 1 -390387.5513110450057073869049319434635718 1.4676147554220164827855458775021210 0.0144290505341416741207627532141973 1.0145341616110411699659858426703330 GT 1 -776750615692444662734751319.6825818018669827650713935103822337 3.2378950740626994190004836142453142 0.0115390929095752651279534945469217 1.0116061848617164747654518100228161 GT 1 -168824579824452825568232312425008142706466.4232984053330907538937529144412332 0.2019668911510470706066438764380839 0.0076018344162424591564322277220994 1.0076308756307727396973831125225210 GT 1 -8256.0683592272808623110479960735396472 2.2202712790698450389294660975846447 0.0581426416783036501915723339374661 1.0599014401585353657125186356693505 GT 1 -13036905650238.8360842092332798718251603759343954 1.7673679165516877523258475952015842 0.0574301125745065694204425317396652 1.0591452112944473349893551545582283 GT 1 -165848548.4005342432330587794347611856645425 1.8880852220042619701845436312351490 0.0501771648942938823069718038674547 1.0514798011412685222762971219662213 GT 1 -1678589176320428620159036817878084396.2966134070146759270980564772973911 1.0706898440827394800660020887529287 0.0532582825575079822631392265266448 1.0547289606488600420148985116332354 GT 1 -2366068980959673611897899590266125.9243291640620526140695660252327595 1.3673808280466963532853507304244142 0.0461584189320014013772115312278714 1.0472576789036513819466317194135499 GT 1 -20338726482765239607270476.9293372269270686900617061397927992 0.1002346247161638774289869105466874 0.0286542689047518772561746319561877 1.0290728173232416645633475349600468 GT 1 -21754.4831544913285412114714990964914989 0.8426290469996251219122752269779411 0.0887198800827770154950708336618439 1.0929049427984175591809580800143073 GT 1 -2373216611569637995647223679853587708795.7958900388538892120555565694707114 0.6861474519209765856049806184602560 0.0695834263952071527034807680798941 1.0721228645176025042295090588456579 GT 1 -5369489552491497114226318197740721707409877.5955702121706780307227400303719924 0.2812113195791877774199131337253745 0.0301877774599059063760719969190146 1.0306528112349174706254163148804452 GT 1 -1973105464487225.6033039391805515849731713850136261 0.3257079222021557658329515460669992 0.0110683307288456598740507559721177 1.0111300404731400565754136889392109 GT 1 -218.8218105890597959558914836110775466 1.2741474974566309330978953974829699 0.0037504766486858128158281017846411 1.0037575273206731979303831201450359 GT 1 -2.5383376088299025211767906633139234 0.8324102243034373274881432815628637 0.0305014470506520561336516161256922 1.0309762968747085063849502555549256 GT 1 -104249481321312489200643550119583.0903487823868144891644043625991862 0.6315155725643571282680159252756271 0.0516448350870660881613152475130040 1.0530262003569732033367902136841691 GT 1 -2005914467505989232702582.6879843250709357367931089017654768 0.1789731028081056374436147657424432 0.0735272394313323319793859355837591 1.0763706340465387619540599592958213 GT 1 -968653389589076498009.6760186799914477267917362376736100 2.3987823581374600949266329329776864 0.0239554994533945366451859244261176 1.0242470987861152201175974027710487 GT 1 -80392144207861336102648202575428895083.5506091493258923006063682301492082 1.1304975606649755529393352689137155 0.0064557442084193963995196474827645 1.0064766726461132073354546892767554 GT 1 -344291063196.1263706439927424201807190360277235 0.0756420151263264458476368543239548 0.0852981265601942181220096696120935 1.0891570881751946221022217293398791 GT 1 -2111696132350272339354426903566739149.5871841434337244513540731768226127 0.1516121091946165967625676138385394 0.0644226405741880350287838963756833 1.0665914435539984681509791322630709 GT 1 -10935290999885966413204915082906321.3809455888082853107051430950496063 0.2270209394661062446459401521188202 0.0773637424408492088011584105321751 1.0805202093035495506723737943919228 GT 1 -523264755064802668564974708532841.6206008429488427881780933091643272 1.0835146326900447285922364179696246 0.0098127520135430648015295759268280 1.0098612143578394075759451612717103 GT 1 -19473733111699964859557691594.0363461860312246245661968899239519 0.2198638114456466604889979087570592 0.0230504196902919515044485779196705 1.0233202349141057895573932089769719 GT 1 -430802621.1659001450131935827763166390499693 0.6099424292934161829362420345379999 0.0372810629574562397307199544602202 1.0379937716297180186614219654394833 GT 1 -622522777821287.8825360432745956220505651035474436 1.1133899304376651497745660656043996 0.0702389754809090442687091551562329 1.0728276887381517066531377787502004 GT 1 -2956960970511914538462527.1001158161776141191867100268590044 1.4853735419192837869047960342280866 0.0853592707154283692578853520185798 1.0892239364027118304539195785394045 GT 1 -27413379978669.6405030866055560698533997846899516 0.7740980911738769510093148996706751 0.0255561475442722913978838244959165 1.0258883784663887151828824149485976 GT 1 -6017068488097869588165.9665095695449932641987867834998095 0.2778601934983360452004527641511095 0.0413953539239035912008524748851778 1.0422765455376020709947585707499607 GT 1 -3552670553447758293438010991689968211.5939774384060040916494724070141142 0.1546365329546424591719275395814160 0.0003346558254711602136134532043985 1.0003347118352282639877587441493254 GT 1 -416987801683424.1771807142981044282946225054488329 1.2094699346916953731565226731663215 0.0772266122172150559149936461633642 1.0803715916519265734818116971203832 GT 1 -545897330882197967004687293.0529283114007914929813110171888784 1.4018682087073581946302234154185640 0.0478899288271756963010420724695506 1.0490746298945045976340671624973981 GT 1 -337719.1805532764333903432508480609175431 0.6249894301271183128024862107453379 0.0417035250911656870833445496764505 1.0425980761231324264149437725313842 GT 1 -6441426446078826671577134170676.4128172622759206050848699983702464 0.9780629063495952716240619526508003 0.0326607588747120103027712575658160 1.0332060269277733981588466057321342 GT 1 -14936051324781812059.0205846194230591934822105955683002 1.5497688606856757379145265209966688 0.0758248364701901362144276124338433 1.0788536543870414915996506620462809 GT 1 -102083057985429746649.6827079019150326607872764389057138 0.8948678805477327490486330187190106 0.0656590694243618252914979213330203 1.0679138853280367413309507102557708 GT 1 -67554957706372948956244242295065.0736983584502534173009701366209995 0.2140447186583474457222649302854649 0.0932473758524190692593902891088181 1.0978856068088867865798007806121156 GT 1 -3390593478070045.6071317976275941234156355320359405 2.2609749772959849898522642940037038 0.0406336536229090243998213746320530 1.0414822683102231513646026938959645 GT 1 -38439396748465858957092560378345.9986410744069789724970702796490949 0.4863804046192156354459334269495448 0.0684397182590913901268023658381222 1.0708943763366984793819304229495023 GT 1 -16591800012190340198606184141049954938961.1343124265769742758929528441124540 0.1423218700430478557523443869145088 0.0694863918898088782328877218764340 1.0720185784928610577664320864017626 GT 1 -4263888970837444432940.8967127722030387187670514324128287 0.1845184974093024290460403153280068 0.0379069516159800657775675341124805 1.0386441091019719700993217345974492 GT 1 -164.1895183703657583699598776715377349 0.9360255660388754300015902367582581 0.0508416388734895538382756920066919 1.0521796227167879816691859477749086 GT 1 -12436790.1211189731760602469092142408876725 0.5912779211525367411830181877520830 0.0906516146630041694458992687865184 1.0950269960339385144576848643633580 GT 1 -2454006136273.9374573926612091194978217994827652 3.4190900614033797578033919802442888 0.0309331207764083101702581717469510 1.0314216506664628943551180229669639 GT 1 -279126965705846127931356062754150835914.6027067404213880956828420341310990 0.6888660688995623468405255878762262 0.0707040067800654570519571538970317 1.0733279760390987965747819827413501 GT 1 -6424180502545747.1730996620580820481796267156590978 2.6215772300561661908784188974217452 0.0645937727640737010692929488514598 1.0667743764151768408758932895044292 GT 1 -1877912418.8516729802251091452504732549848392 0.8601668259891236215641822850931356 0.0047418204846272665387076851034609 1.0047530985819807285719010136969313 GT 1 -29429847556191056038387.5644501543012409498334184770952259 0.8080263893705349614561341823906116 0.0641228030081155147487937739293283 1.0662710109069861880790054781402150 GT 1 -119508881331253627058977466.9388527328420759258864841460599216 0.8942990653902401616653509028730729 0.0552942015099747972337113517002131 1.0568817243090596707178528232631603 GT 1 -583544127771583447772889026657599457978814.2681538819863059347026572679360048 0.0868870129580724005067964916194887 0.0132908870630388786488126309352493 1.0133800013889270162069083752613006 GT 1 -3434787454024574589837.3678120668309644590839546918731179 0.2222316430434015754401094955875117 0.0331777013413543768313557901886564 1.0337405660221750305893362537376224 GT 1 -56328700216787074417.4984670715479966643266297675300764 0.5836349290453593160958370748567500 0.0077848264308377022084666260941422 1.0078152863787040596137229284349306 GT 1 -1283650760443942361430995625585394728.4965420957338513578552759772105946 0.4266514954325147979723317361504124 0.0569955188444380555773920950292711 1.0586842443392259984635651357092545 GT 1 -10865691118875123089722.1073647505977381528613444341690105 3.4351934031885369205348821116961281 0.0489282024594728189073160373982968 1.0501657223984521680924763244908993 LT 1 -1103057117483024875262754.4230840647609558444804521743054613 0.0871373510267610854654833502682583 0.0710600316282391092220436878629549 1.0737111618775915533662769124385275 GT 1 -6142.5799706322545117111753907824271056 0.9926726158116112531723726875553162 0.0831900326747568884766019077602540 1.0868550612164025534877453386921309 GT 1 -109629062529596724697247355.4415627696163377890256108780392685 0.3175079429894490368483445443291218 0.0043970097292540770664064261680211 1.0044067050071258727839311896085206 GT 1 -16060769.7049222853445536688213033419632364 4.6438400111152447580206599609401340 0.0907417147886735153436711627830565 1.0951260830187188999226344328174848 LT 1 -2119637477814650472171742176830857252610539.9321723893724764369611110712707070 0.3299957455390882533548014518336143 0.0568306428357935352702770177286700 1.0585094184502068455433671696072863 GT 1 -79897888949.8524592605816342476231942341937905 1.2201676391544204723121673034148819 0.0800826561624923454623928710338268 1.0834714566301169560526159403531252 GT 1 -13280334240832357579101459106460.4052169981010013734489302095829328 0.6374273279705050407185181821836691 0.0006440961011498563818647941380890 1.0006443036201565211695760031862594 GT 1 -47568502462883630262932492471366265.1360643911679249578141241765748076 0.1114172236964235902208528291497835 0.0559444759710525964992255415468062 1.0575702967390621501011142261381914 GT 1 -7684021771849987737820003819946070.2774123770985146176172501722794502 0.0092626544388856586172885775385264 0.0682942350123097895306731662305950 1.0707382169440742496301073772814685 GT 1 -287857934.8723079889660070867787026103913979 0.7924244693729823106723925404283998 0.0317753827524385214522939944022524 1.0322911760121655342228169611747553 GT 1 -15351903801736095561063960614796724844795.4870978926967167053999081823534202 0.9774796438480639003024819417407788 0.0436176659472485873771052899656471 1.0445975148643068518660778130073734 GT 1 -28720585106.9264696243738420672069904630620445 1.2032356972142690169839218633207682 0.0112849600173082917212222434040554 1.0113491183178485216985929357195304 GT 1 -460127890999803099726.0036549781105117033707708247920378 0.2275949442469654485644954313025399 0.0055115438516473420487520909973161 1.0055267884494441081449100860397229 GT 1 -621577367647.3844871410938648660026233919441655 0.2825507786748639533482175311356983 0.0189273156094324031044218215878408 1.0191087300202097211835540610473177 GT 1 -19922675510470871963922.5052532698965140643698962157184693 0.2934528973535613138387793414085274 0.0207253243919440283225198750131749 1.0209431082772304939251140440784881 GT 1 -1051.4307888266702721354005002657726202 0.4229883163509115798244728884528662 0.0946632372132276772090842640314989 1.0994482909227533056952758726063430 GT 1 -5136021324216315532875.1399526543576481023423205136818668 2.0766962438603106147821719577773404 0.0197292866573924363893896896707511 1.0199265073595382073227409417865527 GT 1 -126423448171.0752368785690903643543490117114205 0.6520007457364114353602194386399905 0.0706031101023310606356367738843185 1.0732194086918517719822207777532035 GT 1 -3310990584651417131364.9820450381476321821489432528055057 0.0378453357059351746465201973385449 0.0685640458191251595376356731574386 1.0710278468803540034135964410458161 GT 1 -1244735.5584972203255062560945054519788004 0.0130037664364858067805975284290962 0.0616400835816663622840278347921241 1.0636216973693974679473210662947330 GT 1 -1080487619006854487486688767193671.2927728364202517135844295759394383 0.7098540280378692528407587586478780 0.0738764007052735632808173414060215 1.0767475766829813968825881262331127 GT 1 -10.0827445256083701097212317477621660 1.8360999443831232093007638244813493 0.0870364846388879305207761469670430 1.0910593604549600327206947493594064 GT 1 -28205527572099872334614775975892.2231552736187897797804232477052012 0.0442303979516678427502247065290528 0.0336460646889842090245729662937417 1.0342251192135124446353193221123955 GT 1 -396211994365585727006865722.6092628468783067164273912028960164 1.9559509084358818355358036836357655 0.0539003997470451108124847831735907 1.0554074297927506119065093859729009 GT 1 -199477739598876651222085.5650918166883629998923612512021673 1.0738035340322850189134167089473463 0.0616085654646079143983825982374787 1.0635881094174874888900433729382567 GT 1 -57197735293862325.7258469960240679574327997695947038 0.0127291008228694817286754810242023 0.0929885914199367143967882204135785 1.0976002505777907178447570579813478 GT 1 -816500056653.1514579962707684731360692578213786 1.5752508592380796752288172781187729 0.0975498166967623486706504300521272 1.1026417888545667822687461097030777 GT 1 -1119632942109143729213359503138524.4903645453817562646490158831809911 0.2313309386519514814368315450190674 0.0177158805401268508746363876635281 1.0178746851225450737248047922061929 GT 1 -635001781526409082061130545.0450189651935195586895945492461016 0.5060602176493945604604781366791588 0.0506070658863141311401116592793200 1.0519325153681931458150016743071699 GT 1 -228448564250326245284975723626.1117590073399388290963174816258280 0.9626660292616977710501088696440010 0.0638418359914295866084829504549157 1.0659708381381924897384910502933177 GT 1 -667747152195707441536451971209284105578.0758592809518204854545192946664483 0.0794103194971314169065316123219322 0.0769363591453223428030273116794034 1.0800570968511593503181010572700134 GT 1 -13699109545846098935290050735874205994621.1149930574164300183403005253849845 0.8007482535222209227215763614072828 0.0996115750422980032464025404347280 1.1049290254767697797428777382571551 GT 1 -598528572729440625306124346.5940324350473150060659450139881635 1.3623129196296429089091456343345927 0.0335150266547945562573170395436609 1.0340895279505224873576733523228786 GT 1 -279311613891480465302923251682.5379580101014118296594186696036791 0.1395619312166212924964752541088638 0.0099334350132127052683835101250192 1.0099831007534402320583595579302322 GT 1 -1112975079622363.5685392941969611660406072537106405 0.5428876627219474638298473402279033 0.0482328994518195555109324756814178 1.0494349164018992030500885701672070 GT 1 -31.9981909943296462389565430020410908 0.0733881495332197243192952782358236 0.0811466743440761827180697289672064 1.0846287714796486229705375831807268 GT 1 -70439749968518026607.2884596303523210260667848118045399 2.9308870151661485677218410502225136 0.0446761737338912375479085927158749 1.0457049108823633703685474661353259 GT 1 -48948396349827046917212606195886227361007.3426804319028613379324319569074653 3.2795883141494820632379986683285421 0.0979640368188957648541652261358804 1.1031008892252911307354690312901462 LT 1 -318645127070012074506855668877765764510502.4625604668522842641895242525919028 2.2100073045257611874867406099846950 0.0672658489032300988117132163164757 1.0696350586127171987015806340931318 GT 1 -162090661690589132070400844154271722.7281573491922570676057869160225813 0.3521596071557669027179293759176900 0.0610070686886716928872268602653039 1.0629473276921680541521071333788341 GT 1 -16.5433686370147900835997050679349273 1.2292692147337648848846954086852961 0.0377390658689214013958364367578345 1.0384696237952040517005642123325973 GT 1 -42871310803807215213454391116702906.8792396246976132395967469263479083 1.9261326099550860776859762443899689 0.0619588865018096671384057881603279 1.0639614999149386588429658590238956 GT 1 -149730365810282.1823380896998577550124177207199232 0.1402860402973872949937709304694016 0.0490617739392794127252631978126502 1.0503061753701702367901681133133309 GT 1 -576986165826536107347617677223576905605831.1427765076975205840919355734285882 1.5810222097682276419733583823079868 0.0466466150682642166725047196634643 1.0477696309123645712353044489574933 GT 1 -6.6319640487161300660831903454221226 0.4240963187809754253182387571941364 0.0498411428958740733430786857483341 1.0511260903625795608861810251084692 GT 1 -92100738169796871039011294354551628.9675969083557659617454070153922434 1.0014931412410217039065920789317449 0.0001376353247522894149476868409242 1.0001376447973627864335619534783851 GT 1 -16140148638355650871835074.8950863407065635747281696488601140 0.6318403329234715274669097689798215 0.0194925799321857808998186502780442 1.0196850657376400382063687448623606 GT 1 -459155453568807355399839473787172.2359074894012271278721277081916685 1.3224149895612559628098818924380207 0.0833484102396952393911443898837677 1.0870278246591049285930372117576032 GT 1 -299355805527595029.2898240022200320982238244320514811 1.6638743960849328825002909048854979 0.0350256007689987946070563991431795 1.0356537072893583465565962576943216 GT 1 -3894049260325802300164921.1231429347095950425839675115906487 0.3393199944587331279379076333280542 0.0895396973308035731604220858687613 1.0938049802496422397667731814751902 GT 1 -294205463099499687034116984556316494063455.2563762691454441600621359467431427 1.6717439425092517386145749505715498 0.0233882629421708930470181596743582 1.0236661091410813513534374512326599 GT 1 -4885639213.6312669178669093342901501515133927 1.7846728328971130858229376598652788 0.0416472203991354263087178721413789 1.0425393228672469504952647624596674 GT 1 -90958414.6393334635297991569566324241681397 1.2238100970712576180247466772954328 0.0665338985506974709223985757303285 1.0688506300509200453371758244215332 GT 1 -199675237309071.6152397102155098131211822471425343 0.0289435618607736452197658047805430 0.0707350934876417994336028887743265 1.0733614284888772451808049000177889 GT 1 -2853396427774483306010943.3207658478468536161689831371088454 1.4104301665010976167093590985407832 0.0894644637561513843364270758047912 1.0937223512033947744341358642601473 GT 1 -578326162316258210541143056.7792817405154303697023420895489909 0.3732570939732071419672375601346093 0.0834041992942720985577423814821026 1.0870886882990961454305054539198862 GT 1 -15.4978480148284022306517521331832210 2.2371739817051102259694987866563371 0.0542593964252199402948680965566947 1.0557869509402106589401513668180202 GT 1 -88.8649120210287661595273975066419634 0.2639666687864133328658358513231253 0.0649806080387964968845874892126895 1.0671880098430639449111704515998264 GT 1 -1583740965921183994827108965768118419462363.9780438391621728144553392191112960 0.9005190715427756125745949774637004 0.0122667361616523681441036625084826 1.0123425935564333512068610099273453 GT 1 -1783609619464324954462244.8365624583606552289393580583038111 0.2046920409126553792737549186293447 0.0241521252903810137018890524156627 1.0244485707936338404140712421507875 GT 1 -2608738673816607.8086731197445332785405306581268056 0.4848984105965279636836162038546580 0.0240576232215748165759357410272449 1.0243517344980247232082666924768168 GT 1 -512475208014281283418467413005725488768332.4131539463426266223438437117101877 0.6844309581106923886199775721429019 0.0737081870334027007690102149863919 1.0765659611865654145184961191817529 GT 1 -22270068979718135252909.4822035695820503988778532258922528 0.2904286268684494469234476267778231 0.0862892162130287064540868510318943 1.0902411867193429392167382785527474 GT 1 -6920693.6528464891428132918623738701887615 1.2435817614260654170101225519746853 0.0650545320336088002242630179614255 1.0672670744249017824520083314441954 GT 1 -437469712346960327515821601205169786161520.2681666996042014314818485097877912 0.6634812751983888363888472638348296 0.0915537242883654334189790080959294 1.0960195280495161533814300105794447 GT 1 -1119675007046738139337486.0919806950038473729324526811042023 0.6883438954747238027262624748480997 0.0988104496434304010755434745970985 1.1040396657458563892401605855501127 GT 1 -32484982094590424333141157829706151.0793991961203650069550006905796497 0.1130320113343119918568235910990634 0.0967684336962949672163939854356364 1.1017763173511731661998024154493172 GT 1 -11700759.6194445891406109553719012410430511 1.0637354046932550879135835762174882 0.0171378745285887947400552136335580 1.0172864276025798186224559873734900 GT 1 -597993506567980674079284442.2116132829881342793622599265217461 1.1694007427877952886862555672491972 0.0327574901484100111906211477241383 1.0333060291879309427273821076416490 GT 1 -1142077441967188193897845435773874005739500.2219463825578329316463240630915114 4.0927869512958421274960457263685114 0.0700342880609124699808894610657386 1.0726075623972109730986840434050338 LT 1 -116.6049984499650542337069196511344491 0.1079517607108487045253516720789363 0.0466354184897424331347328015397613 1.0477578865655665962156249687632657 GT 1 -18.7914617215608339427905442038145884 0.1979857491154259515458157583899355 0.0915269202615227499486049296358950 1.0959900231331155157615549295360778 GT 1 -259996222428550124839396794297976584589.6643520680980010675713841083834524 1.1373370358370633907291460265520387 0.0195949472374437013151649810734328 1.0197894735648829911931077057360470 GT 1 -5874844327048276381297936347663329768.5024765797993423659935881202525509 4.0100351269925194024493969960204139 0.0438723603107823048818022492107012 1.0448638605237138533214053400516350 LT 1 -130822445069820.5398595444439932409442770104005625 1.0169485855889011573410731579237326 0.0671397191864717240577610303850811 1.0694998419602731864901532309060031 GT 1 -10108208020073.1501297997570070681352057063320353 0.3799662621893079577803720947562775 0.0145032432244780836169894821319364 1.0146094433379311374136623575935783 GT 1 -14135851007266119135605210470.7256441272894074950878592053286549 0.1662656913866020999997871690975740 0.0507377674876051180129056969745917 1.0520701934508643673426269647801562 GT 1 -11492596632260440623.6507265655823694680019862661358409 0.1297950185002607084299938706116280 0.0277707567609929331048567483346683 1.0281636553755076626727642286286942 GT 1 -6073115927080673668947781064471313312147.4327457942657609894953794251675609 0.0921862892342646360028239739271286 0.0759925699072741278150470176669263 1.0790351661468895752108726531736333 GT 1 -1855873172645493259294475371179907.9469307985802628828671270255355773 0.2547275001049526974438178049424503 0.0566662920595070448275976417953652 1.0583351799029790796025447351233819 GT 1 -6022614093840229749254.4096663012888529027893682908389504 0.5104568533449719263422583829530359 0.0052351557680889552918115098846488 1.0052489072110074912150079477615644 GT 1 -463825495834715318907401529721353950989.2807784728259295765917107197161947 0.8801645707588612276297650408776651 0.0736975137944349535477769884156007 1.0765544387080900843501046914278034 GT 1 -530819243755511.4500553514660269734161623271155294 0.0727210688803405183835747209020061 0.0428584340392521488117298646227868 1.0438039716555364140014503945772976 GT 1 -565.6123198228033147552016859130997255 0.0801625785213339237029169834240842 0.0638080254251729355213977666652701 1.0659347224934061925742625006100511 GT 1 -2259281429242711490148772.4553326937292643863187100514368402 1.1846617198967129714520967791739952 0.0963435750051756018328833294750890 1.1013060516778219109085923128221002 GT 1 -64584269127663328.3802475958078900702309098265628606 1.6938052925481479061083020819025743 0.0265021194345589282444818284964339 1.0268596313007158261377563736219955 GT 1 -139706693036251091476.5799381651473480019802399089000559 0.8936726256054842772708293129871550 0.0563125725888507516465701064496719 1.0579602826978841762484934343672570 GT 1 -1748849053719948465790243593751709527327.4352505521792518307895839449363518 2.1692632034074050331166354779233690 0.0045334457249253947341805842511836 1.0045437529532999342317053018097484 GT 1 -35503921918901485137466127.8747605412498920027094143851029302 2.7745363662931543638514082535178959 0.0464260326068981099952251564035721 1.0475382823378307587415195970062090 GT 1 -467125151691441.2580700672341488463508476567781489 0.8066773702380370934628400945237891 0.0692526100978254345812026607490786 1.0717673705285159100068377158496214 GT 1 -4142.0259277535769907446472556612249271 0.3831179434001229065766042147169427 0.0495366635836059904495848863358851 1.0508056907419597330415681650242395 GT 1 -2463194.1114248086565875441459329898462353 0.4294617115121360820452611711368925 0.0142767849841303344559884433986305 1.0143796787813776538278331401720728 GT 1 -74716631870536354126181022091.5311759527293249511413084759092477 1.8432119492342389900653573380459720 0.0796178144251192638079011829640050 1.0829662760985461781841251559033539 GT 1 -31174227394797578980529435806649733955.6743380330675713838788045191555253 0.2839253700384503785067532997698834 0.0110833010812505408097031502637194 1.0111451784914491825208921772778714 GT 1 -8595934979823949237551752372.8895303780168936953358655599688585 0.9114925867768989184348521914082878 0.0245304856438821988798066095148770 1.0248363707080538120677461124945939 GT 1 -355700572476456260255796222830.7194582706713844425407015990142230 2.0877686794862931123550917064177047 0.0669152987883783800832764505092481 1.0692592985344623382048782529885875 GT 1 -18501823591062882765287596247400406339.3561463233965290175287342756985954 0.0647111060141806765229259266777412 0.0765185239119953204021643785463903 1.0796045379219194095626678900860870 GT 1 -120618575975197602553652.4741636370494661860834377689169352 0.7007579039166876697722555581275568 0.0119381494741305796068370019295120 1.0120099814468454187042310767557428 GT 1 -5267546466216582141784737105285238.3665443780738256748467375328225021 0.1925065594449062790451304181728404 0.0497640191354053918120938677367101 1.0510449243238489385143121362034308 GT 1 -23521146305939056552584210326493123.8260039177137390830826812362052861 1.0323091636837478303369160438771458 0.0757102990063377481351263423186627 1.0787297272665457459031762314059017 GT 1 -41284455374951098225.8537694281641260253200119687296394 2.5512460641466988765885412077531247 0.0798038729814317308702429403843875 1.0866269456645240374172465107813469 LT 2 -36585961016398904193123.4662054628928229717504480439175421 0.1387476033997616762598560766351209 0.0374664024796735290888502087380437 1.0381863069147910628074471812882951 GT 1 -2031922155.1533563108448619689998044784007360 0.6935452698960374007671163947475331 0.0458123582738391464970472795274171 1.0468949374342622801919573125330473 GT 1 -168.1040692474293804918547542823798147 0.7079537912726436208766212274949692 0.0036983360904738182903294946762377 1.0037051918438661270617559366504736 GT 1 -251380076303961355457063842441.5705488949015160324551570085006417 0.7775622519906049222106198164634103 0.0255403973564451029053738658628253 1.0258722153385679694146720235493142 GT 1 -2303717125193297017658909.3296660099893371254025583998840444 0.5120068025884523039346550023270660 0.0278368714241490234962440277232072 1.0282316608502667109567174306367832 GT 1 -1377577349722892631859171834873143228200903.3970496218352487794631763111341495 0.3647145026948755661592031485592245 0.0956414356356257072609135648089657 1.1005293552356134197833835790897465 GT 1 -38538334382280326797637397044102940300.5782837060594772590419858533305982 1.0877825746516648795083083362060200 0.0676332429314734400846810561972379 1.0700290255357794807988597068763981 GT 1 -71.1503281044672323190402266952803403 1.8514843452768558059120612530594415 0.0549598559508887468908378055724940 1.0565278719154141311279020319340288 GT 1 -96266903.6977778279736198797981590657678910 0.2003938135035728688417248161553179 0.0486826040932987447692443629591426 1.0499075224797557384433468725814187 GT 1 -2953551323377286205.4933768915253579483451181702689614 0.4793617565682592942385800553713548 0.0516640023928305741603891237728195 1.0530464116661667055487875886952711 GT 1 -229857484038420831046750717453390989.0177596989135489855398831096283519 0.3926359783957950306566401544409955 0.0412257390174255356168143332237944 1.0420996218150180027600095211160113 GT 1 -10211120.7358595166730665772405899754254437 0.3585379662546746706509262973967798 0.0850312339437316836753395257460100 1.0888653497468739853894354246350145 GT 1 -11962233243901821213881308594653366587921.1982786290862798684101683894903682 0.9757292800992626096100800090055331 0.0356639144100360695457693523467982 1.0363154086270638805514381468131062 GT 1 -375.5662500479444999069687263843200720 1.1408403243257591214957426449603391 0.0022191442728606796990505392970966 1.0022216102223865327177523074371442 GT 1 -526938379.2243789733961860322188073538631052 2.4807734849224038655703403227075996 0.0512963901531225790478227472941652 1.0526588475448220624242278445221940 GT 1 -21666376549657593338627076314501238.7873685386767886123853224518875983 0.1073012955241353630661498807105705 0.0523314769454687681988889098706703 1.0537504970973338496272974310378534 GT 1 -3839004974373398273367392.3081676022210824231823102019269017 1.0951577717544120250863551651849450 0.0661035028461698126808644178048426 1.0683896636457121381462297809003319 GT 1 -13199.0523903265707216173835725069846961 0.1081638132097811240881101831028186 0.0096847808594762498650993163353625 1.0097319833607878799005066315743178 GT 1 -360159707084294352862260292032469.0800858451795705494870473789071306 2.3082072789132915971676149355556166 0.0792136109178087898555740966613053 1.0825272033060079348102551525091496 GT 1 -47413810047619.8357704004470788687755049510325195 0.4604464303378502790611099314424224 0.0297946108287494664283952079990317 1.0302474884850973989855409209567021 GT 1 -6638617224222219150878818976222193.5527502539015785748093923346891810 0.7244410198556016177662723520670019 0.0543281385598585683877691740082600 1.0558596396169962940539330013851371 GT 1 -2299398444969394399079153725601915808860.4453141698032969596796926377235269 0.6159058468622525404421983172196377 0.0384232110329843145435730948729671 1.0391808534219946274671602441157935 GT 1 -2707462401685496138.0281591839636713704413514344592144 1.9387549740791939481461693311014619 0.0611126744732660724343338277523121 1.0630598010879782054489457602201345 GT 1 -2136913.2897454474686216454653064980070327 0.9836719845788926230832372634346451 0.0554471111065064724569976399402660 1.0570435968973787759100214222466163 GT 1 -2.0255116502049815101574232137279927 1.5053520780718211129703415588483792 0.0869517470595761228582333049337157 1.0909665488084595791596565918493627 GT 1 -10150254438506713023121.0428032641045339841591854127848089 0.9826369502884666225176176305031441 0.0271683748389373988615922098732165 1.0275442588814434095415579851363281 GT 1 -136657.7325932533556900616819086724435321 1.7262942599162988991856157161816424 0.0904766134350893432193677514677097 1.0948345677042912397709981437660212 GT 1 -13576808.3277072566187791718057079954077627 0.3303495409828759159042761058522570 0.0881059716412275310448692191868332 1.0922314926342273528573719855725133 GT 1 -113420142926386.5629111361786703593951762399122886 0.1433799481010079779673535746704083 0.0842500290437764777764168989171547 1.0880119090390494321825111980328877 GT 1 -5981867066368069.4299351139504021989781247433517929 0.1975924954859857977600501234842283 0.0428802717046751463305369244548107 1.0438267874179294278236724240809408 GT 1 -57331798664474498749382506689988617276.9144790373593497596187998142976995 0.2934112091594057384560708857367077 0.0543080231146487678361972291969640 1.0558383687807849302258574833008803 GT 1 -11745.1914175200347104937991621624993607 1.8877879070378188724145896371767940 0.0284068397361129964560525670105425 1.0288181215414269751229821968484561 GT 1 -60853874359761621246092194889.7830002514787207704663767585919343 0.1708754911933733426664296451226099 0.0196804024103539613189074166780526 1.0198766404936498812262331449928056 GT 1 -14936104396476319533440.9910145164973941697788346031787709 0.8114452270211089787452807695408982 0.0016713193938944641419109784135048 1.0016727176062761550951627890825311 GT 1 -600930072322919117414934900790005.9839528971188823305150865248051704 0.0275630094589119088928461627361138 0.0916552994279035577071768707438639 1.0961313462399077998220727800273680 GT 1 -113237.6738330546387982030589736513658786 0.2613973043575714841665028741136472 0.0190734438655839578633003285058848 1.0192576885451708759390945213117701 GT 1 -19983415553484287591.9940318608608732252945316881723057 2.5205149421682860837681854036439562 0.0939164443472808028555784539701405 1.1034870746790011889151690054063317 LT 2 -90784931081118816066305534859.4643741045192853510612922425628604 1.4524538193994346465519537668322721 0.0153118485602310102477871455336734 1.0154302854607016045776834827045187 GT 1 -10421293.2036141811903467656774393258270675 2.1208464762153916685236380681964158 0.0724545713294704469183333119577379 1.0752135060013289687786399949996807 GT 1 -10915780105527211929815.7025434644973378426115473703466607 0.4351281262561464687876126101558332 0.0392538725718890412557520216947307 1.0400450803253115561472333226558849 GT 1 -32274484.0939170405318240432088718722538223 0.5876182975553453334103450963799198 0.0049878298796646954886743483268811 1.0050003106216268381796338703288883 GT 1 -4426593514013625619329821968212.8346616986033879467950111870971741 0.9758699884574774525495717933680274 0.0170970306948266096095319294415639 1.0172448724504646522951805410008396 GT 1 -787020745602952366353623001838.7116934242082466668740263342793244 1.8798341936602704510190613899308114 0.0525957714501736568863964014176420 1.0540294251819624393919168669991438 GT 1 -2483489748333776888696309606746.7380956097804479347454131767260280 1.0494064464181293544474310632842276 0.0265081358808581322464735859232861 1.0268658115554558918909076661396214 GT 1 -246376447187287184808899056236044595799.4020621146089630235945107955311651 1.6590571602814082884593578073233363 0.0189865309068658754542998700435852 1.0191690895486089335996590735179669 GT 1 -62617262657892237444.5647160866848808476036193125581363 0.5546299220403325082975986766465542 0.0377534954354184710415816690554506 1.0384846193896166352310962793503862 GT 1 -146580534219431854984328.1552283809961519771132719000088632 0.2148874256063387067751493216193911 0.0176088861114365581126646126813523 1.0177657669390408063275370547019478 GT 1 -107349431728.5626952459887757054988235413033656 1.9338079156525795890561285734605838 0.0976349528910963547130363097399993 1.1027361322454719134360128582695468 GT 1 -18546380209580155915104813898494.5487508656110667259548807651875535 0.1146744348801414607593476302271600 0.0369981428519003823257209064524803 1.0376999386831715557567433475136177 GT 1 -131974714146746438838098627469731207540349.2836722963843334524690110911927719 0.4889702630977150278247120271058085 0.0825023052490637958115130446919938 1.0861052115896076911431114867028191 GT 1 -2799342040938770121.8457432425910946192320210762578140 0.2553524507287137422770856682926650 0.0710351590878435982390401355210882 1.0736843870500840198800402046472972 GT 1 -2431934638848611031942341349919128873.7804914339424042593888884375009009 0.2543243859468600124351306362031585 0.0009105970932541011704108620238725 1.0009110119386443464502795445906050 GT 1 -2782.4814021493475879855464842475019296 0.1753464815663828116285860710870772 0.0438589777379280061811951786862003 1.0448498639832477647101218680579215 GT 1 -11546.1691222224913111724124127670272126 1.6429342442675328715823544572842886 0.0773412272990676551352068805578530 1.0804958065479863954441217557207153 GT 1 -12526.5676484548164405117218889327723571 0.5801085621061671218728933742016668 0.0529766340868597969589579712023981 1.0544315124857270495092579530504809 GT 1 -195534386107995053776479100646357652842.1791491721585750820972813699213945 0.8075117497870949941854207568794234 0.0359962665324475717889255450398866 1.0366601114874391667787613807232647 GT 1 -714851931560118055637521264.5867106591107534948299069289347449 0.3973175980787929414091031847686281 0.0426468223453085485338411875980240 1.0435829089490327158677261008066730 GT 1 -2735142.8516351778209577197341279542151229 1.3608150523826968355513870092429779 0.0408811773337556916572279956008510 1.0417403090980427879362281826437469 GT 1 -2596326.8983474190943451293376387384159084 2.9721591725849478256401475813486695 0.0578319532412034778939818273642257 1.0595716267291849171696738616948815 LT 1 -554853044250117638892186073647705582670983.4596959520603906445760958293103552 0.8701277645174770083156475895086149 0.0127318941416090751782299329480093 1.0128136392941171296049784937359655 GT 1 -11726542654266988539791515352200982.3882362217420685882802162437468417 0.6668145865358686881228067174926231 0.0604925749816735169764937291933022 1.0623995570003721440424977745412705 GT 1 -68414014089118300701.9679113443143338307327770653537198 2.0083654852747502720107233753860811 0.0728040302551514532539978903012263 1.0755903336605539241359186933174512 GT 1 -22879638471995152013048277566908.2332828070750658656579710104227435 0.4464713978980350634187312310612768 0.0783002499826935798142392984362702 1.0815357592017085625518955921849065 GT 1 -1612565056918113371938052444409965.0789018405436387012693692620309241 1.3116992669867027729544569981662611 0.0807224636828757297161438630402500 1.0841672040499212120695388935183831 GT 1 -5.1831682174752764179351972724310178 0.0264537967345757376127608124330408 0.0807177523756865118360875118342543 1.0841620790523765271066728237462464 GT 1 -6802432098026580347559446079616.9398334353997465078902464864417309 0.1746362273526668413059456567141335 0.0554215222715956624616104205319997 1.0570165063145167356241722422030930 GT 1 -72699431.7335112259940620699269829015603212 0.2816398766112800994995159808237691 0.0833818337670557438082775608149275 1.0870642879534509361721415451983209 GT 1 -189423764351267289935304714835026023.8105505226048319637271694338369778 0.2205846193441820801180177582156086 0.0692872262699846496607271603968728 1.0718045630216344952644538239775393 GT 1 -263338820707830605531531.2257004869868431574212320023722765 1.5545269844998722699118618241912072 0.0224710220334334323048301945707840 1.0227273425834351854197650201301098 GT 1 -5740.2546557474704797733281969521966882 0.7125205870916695949004607807026727 0.0560432121449618080127016310840160 1.0576748894616601266142642344040707 GT 1 -6870340559785269479761379394.4708013582243662893046108705880587 0.9294541457703000685262060206329733 0.0541489372431114045124499728070557 1.0556701612712771929138449188535625 GT 1 -822668778716788379177552387291178.6558346710116793475148357402785208 0.7286421183932318093552577256806714 0.0319332332266955650905311453799501 1.0324542201447887324141385235488569 GT 1 -519229478567731595138633850983490064688677.9573302434680699869675168585384962 0.2383626817770477008855534215505275 0.0697355796178690757625238984122428 1.0722864102554186791125701981493924 GT 1 -26251228296562469083663504249888550287.9993230117253706725537640058836805 0.9026929722186511408180256410157170 0.0200729676348421673316008408796688 1.0202771668598094748410275299131261 GT 1 -628743489596563056854926765408.5832471214372289519577544374973532 2.0601160599160429357330528148162735 0.0714274566667067967154247692477634 1.0741067716416651975116576524269498 GT 1 -45854217202834897681728064146768.1065844881405540378118632125688657 1.3263727710950083512364096067184813 0.0405436648646056787744393373501274 1.0413884725059142431615848514639702 GT 1 -25792277607785808203013238829282564380.9496818467177178463929616508229182 0.6717953398743450172200094558692417 0.0299071859840570365175567269937977 1.0303635275096648287759264234175034 GT 1 -416871542584849330.0350669152543623316767593530352483 0.0362883908261608775733229963745482 0.0578244878665095627235490615071033 1.0595637031478839120006310164406623 GT 1 -274306484295199138839641506.1598462000093665960319171086038401 0.8613471843479760909470015004256565 0.0221944322867956094042019663575486 1.0224444347310743530181117361071380 GT 1 -618416.2168590191991505196932393157373266 0.4932366600641872817997485100872230 0.0854859745947023394449710518826563 1.0893624745763155210965282361937679 GT 1 -457.9114466920258605527736405264901270 0.5924257921010689601867304211020840 0.0473474041602604109900849757199239 1.0485049792068028692919956688177602 GT 1 -2708672177249231333684807087985.8378026194525090684100184422470720 0.1662484143423165049806511790058892 0.0290675241924291187901230150799582 1.0294983539867789606382278633259205 GT 1 -2053544838361035946793813881803906.6557730277807687928311629343017143 1.0301576447774706778734097967848963 0.0530988786188490282681020124023946 1.0545606037277264973990453071422098 GT 1 -27.1896697476044099121525682401718398 0.7876133600990018049870956809388470 0.0972726059781147527492185232541503 1.1023346603766721917823482049708323 GT 1 -1258013602541063201.7208457752887733334748033548365813 0.4393731539849304319459476554729265 0.0681509642232277229232580716775895 1.0705844561968125472481362224230599 GT 1 -1897093501.9444459269716706832498560427530119 0.0156730260070764062000189714055146 0.0637370490196320014707272128670471 1.0658589114235574668420923845748975 GT 1 -12596946825000212.5788996650723794088400131617118660 2.1037218510515248171659545344583103 0.0236129351388550643589322561016914 1.0238961883377040276549882851343888 GT 1 -1588051262317178407917574218.9091098320596735080384704194726737 0.3271009670935750872460563423003681 0.0080602198974444699144560102082237 1.0080928790816989332020029169087346 GT 1 -5366064237846807158704764794.9335385112701600293620928980347593 0.3998675422601759193626663892946543 0.0324176161413646519963505780911122 1.0329547064282889188875408522254732 GT 1 -1283933830561.5009547680635688359768953547772854 0.0843360470891460261275418740176032 0.0584337999326560919261940158477835 1.0602106199554800848821693567719765 GT 1 -30892615773.4219699926304464617340194282232395 0.7301552063668887582281709441141307 0.0754589449205723163975676975437513 1.0784578212670502401729577220505467 GT 1 diff --git a/libs/non-integral/reference/non_integral.c b/libs/non-integral/reference/non_integral.c deleted file mode 100644 index 3254dbaca9a..00000000000 --- a/libs/non-integral/reference/non_integral.c +++ /dev/null @@ -1,447 +0,0 @@ -#include -#include - -#include "non_integral.h" - -mpz_t one; -mpz_t zero; -mpz_t precision; -mpz_t e; -mpz_t eps; - -int mp_exp_taylor(mpz_t, const int, const mpz_t, const mpz_t); - -void initialize(const mpz_t _precision, const mpz_t epsilon) -{ - mpz_init_set(precision, _precision); - mpz_init_set_ui(one, 1); mpz_mul(one, one, precision); - mpz_init_set_ui(zero, 0); - mpz_init_set(eps, epsilon); - - mpz_init(e); - ref_exp(e, one); -} - -void div_qr(mpz_t q, mpz_t r, const mpz_t x, const mpz_t y) -{ - mpz_t temp_r, temp_q; - mpz_init(temp_r); mpz_init(temp_q); - mpz_tdiv_qr(temp_q, temp_r, x, y); - mpz_set(r, temp_r); - mpz_set(q, temp_q); - mpz_clear(temp_r); mpz_clear(temp_q); -} - -void div(mpz_t rop, const mpz_t x, const mpz_t y) -{ - mpz_t temp_r, temp_q, temp; - mpz_init(temp_r); mpz_init(temp_q); mpz_init(temp); - - div_qr(temp_q, temp_r, x, y); - - mpz_mul(temp, temp_q, precision); - mpz_mul(temp_r, temp_r, precision); - div_qr(temp_q, temp_r, temp_r, y); - - mpz_add(temp, temp, temp_q); - mpz_set(rop, temp); - - mpz_clear(temp_r); mpz_clear(temp_q); mpz_clear(temp); -} - -void ref_div(mpz_t rop, const mpz_t x, const mpz_t y) -{ - div(rop, x, y); -} - -void scale(mpz_t rop) -{ - mpz_t temp, a; - mpz_init(temp); mpz_init(a); - - div_qr(a, temp, rop, precision); - if(mpz_sgn(rop) < 0 && mpz_cmp(temp, zero) != 0) - mpz_sub_ui(a, a, 1); - - mpz_set(rop, a); - mpz_clear(temp); mpz_clear(a); -} - -void cleanup() -{ - mpz_clear(one); - mpz_clear(zero); - mpz_clear(precision); - mpz_clear(eps); - mpz_clear(e); -} - -void ipow_(mpz_t rop, const mpz_t x, int n) -{ - if(n == 0) - mpz_set(rop, one); - else if(n % 2 == 0) - { - mpz_t res; - mpz_init(res); - ipow_(res, x, n / 2); - mpz_mul(rop, res, res); - scale(rop); - mpz_clear(res); - } - else - { - mpz_t res; - mpz_init(res); - ipow_(res, x, n - 1); - mpz_mul(rop, res, x); - scale(rop); - mpz_clear(res); - } -} - -void ipow(mpz_t rop, const mpz_t x, int n) -{ - if(n < 0) - { - mpz_t temp; - mpz_init(temp); - - ipow_(temp, x, -n); - div(rop, one, temp); - - mpz_clear(temp); - } - else - ipow_(rop, x, n); -} - -/* Compute an approximation of 'ln(1 + x)' via continued fractions. Either for a - maximum of 'maxN' iterations or until the absolute difference between two - succeeding convergents is smaller than 'eps'. Assumes 'x' to be within - [1,e). */ -void mp_lnN(mpz_t rop, const int maxN, const mpz_t x, const mpz_t epsilon) -{ - mpz_t AnM2, BnM2, AnM1, BnM1, ba, aa, A, bb, ab, B, convergent, last, a, b; - mpz_t curr_n, diff, temp_q, temp_r; - bool first = true; - int n = 1; - - /* initialize all MP variables */ - mpz_init(AnM2); mpz_init(BnM2); mpz_init(AnM1); mpz_init(BnM1); - mpz_init(ba); mpz_init(aa); mpz_init(bb); mpz_init(ab); - mpz_init(A); mpz_init(B); mpz_init(convergent); mpz_init(last); - mpz_init(curr_n); mpz_init(a); mpz_init(b); - mpz_init(diff); mpz_init(temp_q); mpz_init(temp_r); - - /* initialize values */ - /* this is initially 1 and then -n */ - mpz_set_si(curr_n, -1); mpz_mul(curr_n, curr_n, precision); - mpz_set(a, x); - mpz_set(b, one); - - mpz_set(AnM2, one); - mpz_set_ui(BnM2, 0); - mpz_set_ui(AnM1, 0); - mpz_set(BnM1, one); - - size_t curr_a = 1; - - while(n <= maxN + 2) - { - const size_t curr_a_2 = curr_a * curr_a; - mpz_mul_ui(a, x, curr_a_2); - if(n > 1 && n % 2 == 1) - curr_a++; - - mpz_mul(ba, b, AnM1); scale(ba); - mpz_mul(aa, a, AnM2); scale(aa); - mpz_add(A, ba, aa); - - mpz_mul(bb, b, BnM1); scale(bb); - mpz_mul(ab, a, BnM2); scale(ab); - mpz_add(B, bb, ab); - - div(convergent, A, B); - - if(first) - first = false; - else - { - mpz_sub(diff, convergent, last); - if(mpz_cmpabs(diff, epsilon) < 0) - break; - } - - mpz_set(last, convergent); - n++; - mpz_set(AnM2, AnM1); - mpz_set(BnM2, BnM1); - mpz_set(AnM1, A); - mpz_set(BnM1, B); - - mpz_add(b, b, one); - } - - mpz_set(rop, convergent); - - /* clear all MP values */ - mpz_clear(AnM2); mpz_clear(BnM2); mpz_clear(AnM1); mpz_clear(BnM1); - mpz_clear(ba); mpz_clear(aa); mpz_clear(bb); mpz_clear(ab); - mpz_clear(A); mpz_clear(B); mpz_clear(convergent); mpz_clear(last); - mpz_clear(curr_n); mpz_clear(a); mpz_clear(b); - mpz_clear(diff); mpz_clear(temp_q); mpz_clear(temp_r); -} - -/* Entry point for 'exp' approximation. First does the scaling of 'x' to [0,1] - and then calls the continued fraction approximation function. */ -int ref_exp_(mpz_t rop, const mpz_t x) -{ - mpz_t temp_q, temp_r; - mpz_init(temp_q); mpz_init(temp_r); - int iterations = 0; - - if(mpz_cmp(x, zero) == 0) - mpz_set(rop, one); - else if(mpz_cmp(x, zero) < 0) - { - mpz_t temp, x_; - mpz_init(temp); mpz_init(x_); - mpz_neg(x_, x); - - iterations = ref_exp_(temp, x_); - - div(rop, one, temp); - - mpz_clear(x_); - mpz_clear(temp); - } - else - { - mpz_t n_exponent, x_, temp_r, temp_q; - mpz_init(n_exponent); mpz_init(x_); mpz_init(temp_r); mpz_init(temp_q); - - mpz_cdiv_q(n_exponent, x, precision); - int n = mpz_get_ui(n_exponent); - mpz_mul(n_exponent, n_exponent, precision); /* ceil(x) */ - - mpz_tdiv_q_ui(x_, x, n); - iterations = mp_exp_taylor(rop, 1000, x_, eps); - - ipow(rop, rop, n); - mpz_clear(n_exponent); mpz_clear(x_); mpz_clear(temp_r); mpz_clear(temp_q); - } - - mpz_clear(temp_r); mpz_clear(temp_q); - return iterations; -} - -int ref_exp(mpz_t rop, const mpz_t x) -{ - return ref_exp_(rop, x); -} - -int findE(const mpz_t x) -{ - mpz_t x_, x__, temp_q, temp_r; - mpz_init(x_); mpz_init(x__); mpz_init(temp_q); mpz_init(temp_r); - - div(x_, one, e); - mpz_set(x__, e); - - int l = -1; - int u = 1; - while(mpz_cmp(x_, x) > 0 || mpz_cmp(x__, x) < 0) - { - - /* x'_{n + 1} = x'_n ^ 2 */ - mpz_mul(x_, x_, x_); - scale(x_); - - /* x''_{n + 1} = x''_n ^ 2 */ - mpz_mul(x__, x__, x__); - scale(x__); - - l *= 2; - u *= 2; - } - - while(l+1 != u) - { - const int mid = l + ((u - l) / 2); - - ipow(x_, e, mid); - if(mpz_cmp(x, x_) < 0) - u = mid; - else - l = mid; - } - - mpz_clear(x_); mpz_clear(x__); mpz_clear(temp_q); mpz_clear(temp_r); - return l; -} - -/* Entry point for 'ln' approximation. First does the necessary scaling, and - then calls the continued fraction calculation. For any value outside the - domain, i.e., 'x in (-inf,0]', the function returns '-INFINITY'. */ -bool ref_ln(mpz_t rop, const mpz_t x) -{ - if(!(mpz_cmp(x, zero) > 0)) - return false; - - const int n = findE(x); - mpz_t temp_r, temp_q, x_, factor; - mpz_init(temp_r); mpz_init(temp_q); mpz_init(x_); mpz_init(factor); - - /* integral part of ln */ - mpz_set_si(rop, n); - mpz_mul(rop, rop, precision); - ref_exp(factor, rop); - - div(x_, x, factor); - - mpz_sub(x_, x_, one); - - mp_lnN(x_, 1000, x_, eps); - mpz_add(rop, rop, x_); - - mpz_clear(temp_r); mpz_clear(temp_q); mpz_clear(x_); mpz_clear(factor); - return true; -} - -void ref_pow(mpz_t rop, const mpz_t base, const mpz_t exponent) -{ - /* x^y = exp(y * ln x) */ - - mpz_t tmp; - mpz_init(tmp); - - ref_ln(tmp, base); - mpz_mul(tmp, tmp, exponent); - scale(tmp); - ref_exp(rop, tmp); - - mpz_clear(tmp); -} - -/* Taylor / MacLaurin series approximation */ - -int mp_exp_taylor(mpz_t rop, const int maxN, const mpz_t x, const mpz_t epsilon) -{ - mpz_set(rop, one); - int n = 0; - mpz_t last, divisor, lastX, nextX, diff; - mpz_init_set(last, one); mpz_init_set(divisor, one); mpz_init_set(lastX, one); - mpz_init(nextX); mpz_init(diff); - - while(n < maxN) - { - mpz_mul(nextX, x, lastX); - scale(nextX); - div(nextX, nextX, divisor); - - if(mpz_cmpabs(nextX, epsilon) < 0) - break; - - mpz_add(divisor, divisor, one); - mpz_set(last, rop); - mpz_add(rop, rop, nextX); - - mpz_sub(diff, rop, last); - - mpz_set(lastX, nextX); - n++; - /* gmp_printf("%Zd\n", rop); */ - } - - mpz_clear(last); mpz_clear(divisor); mpz_clear(lastX); mpz_clear(nextX); - mpz_clear(diff); - return n; -} - -/* - `bound_x` is the bound for exp in the interval x is chosen from - - `compare` the value to compare to - - if the result is GT, then the computed value is guaranteed to be greater, if - the result is LT, the computed value is guaranteed to be less than - `compare`. In the case of `UNKNOWN` no conclusion was possible for the - selected precision. - - Lagrange remainder require knowledge of the maximum value to compute the - maximal error of the remainder. -*/ -mp_exp_cmp_result ref_exp_cmp(mpz_t rop, const int maxN, const mpz_t x, const int bound_x, const mpz_t compare) -{ - mpz_set(rop, one); - int n = 0; - mpz_t divisor, nextX, error, upper, lower, error_term; - mpz_init_set(divisor, one); - mpz_init(nextX); mpz_init_set(error, x); - mpz_init(upper); mpz_init(lower); mpz_init(error_term); - - mp_exp_cmp_result result; - - result.estimate = UNKNOWN; - while(n < maxN) - { - mpz_set(nextX, error); - - if(mpz_cmpabs(nextX, eps) < 0) - break; - - mpz_add(divisor, divisor, one); - - /* update error estimation, this is initially bound_x * x and in general - bound_x * x^(n+1)/(n + 1)! we use `error` to store the x^n part and a - single integral multiplication with the bound - */ - mpz_mul(error, error, x); - scale(error); - div(error, error, divisor); - - mpz_mul_si(error_term, error, bound_x); - - mpz_add(rop, rop, nextX); - - /* compare is guaranteed to be above overall result */ - mpz_add(upper, rop, error_term); - - if(mpz_cmp(compare, upper) > 0) - { - result.estimate = GT; - n++; - break; - } - - mpz_sub(lower, rop, error_term); - - /* compare is guaranteed to be below overall result */ - if(mpz_cmp(compare, lower) < 0) - { - result.estimate = LT; - n++; - break; - } - - n++; - } - - mpz_clear(divisor); mpz_clear(nextX); - mpz_clear(error); mpz_clear(upper); mpz_clear(lower); mpz_clear(error_term); - - result.iterations = n; - return result; -} - - -/* Raspberry Pi -exp avg: 0.000318684 maximal time: 0.000730824 -cf avg: 0.000786493 maximal time: 0.00331147 - */ - -/* i7 -exp avg: 1.48657e-05 maximal time: 0.000146559 -cf avg: 3.81838e-05 maximal time: 0.000384774 - */ diff --git a/libs/non-integral/reference/non_integral.h b/libs/non-integral/reference/non_integral.h deleted file mode 100644 index ea5128ff6d9..00000000000 --- a/libs/non-integral/reference/non_integral.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef NONINTEGRAL_H - -#define NONINTEGRAL_H - -#include - -#include - -void initialize(const mpz_t, const mpz_t); -void cleanup(); -bool ref_ln(mpz_t, const mpz_t); -int ref_exp(mpz_t, const mpz_t); -void ref_pow(mpz_t, const mpz_t, const mpz_t); -void scale(mpz_t); -void ref_div(mpz_t, const mpz_t, const mpz_t); - -typedef enum { GT, LT, UNKNOWN } estimation; - -typedef struct { - int iterations; - estimation estimate; -} mp_exp_cmp_result; - -mp_exp_cmp_result ref_exp_cmp(mpz_t, const int, const mpz_t, const int, const mpz_t); - -#endif diff --git a/libs/non-integral/reference/non_integral.hpp b/libs/non-integral/reference/non_integral.hpp deleted file mode 100644 index 7fb5cb84af6..00000000000 --- a/libs/non-integral/reference/non_integral.hpp +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef NONINTEGRAL_HPP - -#define NONINTEGRAL_HPP - -#include - -#include - -extern "C" { - #include "non_integral.h" -}; - -#endif diff --git a/libs/non-integral/reference/non_integral_test.cpp b/libs/non-integral/reference/non_integral_test.cpp deleted file mode 100644 index 1be8ade4f83..00000000000 --- a/libs/non-integral/reference/non_integral_test.cpp +++ /dev/null @@ -1,179 +0,0 @@ -#include -#include -#include -#include - -#include - -#include "non_integral.hpp" - -const std::string print_fixedp( - const mpz_class &n, - const mpz_class &precision, - const size_t width) -{ - mpz_class temp_r, temp_q; - // use truncate rounding here for consistency - mpz_tdiv_qr(temp_q.get_mpz_t(), - temp_r.get_mpz_t(), - n.get_mpz_t(), - precision.get_mpz_t()); - - std::stringstream s; - s << temp_q << "."; - s.fill('0'); - s.width(width); - s << temp_r; - - return s.str(); -} - -int main() -{ - - mpz_class ten("10"); - mpz_class precision; - mpz_pow_ui(precision.get_mpz_t(), ten.get_mpz_t(), 34); - - mpz_class epsilon; - mpz_pow_ui(epsilon.get_mpz_t(), ten.get_mpz_t(), 34 - 24); - - mpz_class resolution; - mpz_pow_ui(resolution.get_mpz_t(), ten.get_mpz_t(), 17); - - initialize(precision.get_mpz_t(), epsilon.get_mpz_t()); - - std::chrono::duration total = - std::chrono::duration::zero(); - std::chrono::duration total_cmp = - std::chrono::duration::zero(); - std::chrono::duration maximal = - std::chrono::duration::zero(); - std::chrono::duration maximal_cmp = - std::chrono::duration::zero(); - - // format is "sigma p" - size_t n = 0; - - mpz_class f; - mpz_class one("1"); - one *= precision; - f = one / ten; - - mpz_class e; - ref_exp(e.get_mpz_t(), one.get_mpz_t()); - - for (std::string s; std::getline(std::cin, s); ) - { - const size_t split = s.find(' '); - const size_t split0 = s.find(' ', split + 1); - if(split != std::string::npos && split0 != std::string::npos) - { - mpz_class x(s.substr(0, split)); - mpz_class a(s.substr(split, split0 - split)); - mpz_class b(s.substr(split0, std::string::npos)); - - mpz_class exp_x; - mpz_class ln_a; - mpz_class threshold_b; - mpz_class approx; - mpz_class error; - - std::chrono::duration diff; - mp_exp_cmp_result res; - - // calculate exp' x - { - mpz_class base = one - f; - ref_exp(exp_x.get_mpz_t(), x.get_mpz_t()); - std::cout << print_fixedp(exp_x, precision, 34); - } - - // calculate ln' a, print -ln' a - { - ref_ln(ln_a.get_mpz_t(), a.get_mpz_t()); - std::cout << " " << print_fixedp(-ln_a, precision, 34); - } - - // calculate (1 - f) *** b - { - mpz_class c; - c = one - f; - auto before = std::chrono::high_resolution_clock::now(); - ref_pow(threshold_b.get_mpz_t(), c.get_mpz_t(), b.get_mpz_t()); - auto after = std::chrono::high_resolution_clock::now(); - diff = after - before; - total += diff; - if(maximal < diff) - maximal = diff; - - std::cout << " " << print_fixedp(one - threshold_b, precision, 34); - } - - // do Taylor approximation for - // a < 1 - (1 - f) *** b <=> 1/(1-a) < exp(-b * ln' (1 - f)) - // using Lagrange error term calculation - { - mpz_class temp; - mpz_class c; - c = one - f; - ref_ln(temp.get_mpz_t(), c.get_mpz_t()); - mpz_class alpha = b * temp; - scale(alpha.get_mpz_t()); - alpha = -alpha; // negate after scale - - mpz_class q_ = one - a; - mpz_class q; - ref_div(q.get_mpz_t(), one.get_mpz_t(), q_.get_mpz_t()); - - auto before = std::chrono::high_resolution_clock::now(); - // 3 is used as bound, might need to be adapted for other use cases - res = - ref_exp_cmp(approx.get_mpz_t(), 1000, alpha.get_mpz_t(), 3, q.get_mpz_t()); - auto after = std::chrono::high_resolution_clock::now(); - - diff = after - before; - total_cmp += diff; - if(maximal_cmp < diff) - maximal_cmp = diff; - - // we compare 1/(1-p) < e^-(1-(1-f)^sigma) - if(a < (one - threshold_b) && res.estimate != LT) - { - std::cout << "wrong result should be leader " - << print_fixedp(temp, precision, 34) - << " should be more like " - << print_fixedp(one - threshold_b, precision, 34) - << std::endl; - } - - if(!(a < (one - threshold_b)) && res.estimate != GT) - { - std::cout << "wrong result should not be leader " - << print_fixedp(temp, precision, 34) - << " should be more like " - << print_fixedp(one - threshold_b, precision, 34) - << std::endl; - } - - std::cout << " " << print_fixedp(approx, precision, 34) - << " " << (res.estimate == LT ? "LT" : "GT") - << " " << res.iterations << std::endl; - } - - n++; - } - else - std::cout << "format error" << std::endl; - } - - std::cerr << "(1 - (1 - f))^b avg: " << (total.count() / n) - << " maximal time: " << maximal.count() - << std::endl; - std::cerr << "Taylor error estimation avg: " << (total_cmp.count() / n) - << " maximal time: " << maximal_cmp.count() - << std::endl; - - cleanup(); - return 0; -} diff --git a/libs/non-integral/reference/randomize.cpp b/libs/non-integral/reference/randomize.cpp deleted file mode 100644 index 357ec84f283..00000000000 --- a/libs/non-integral/reference/randomize.cpp +++ /dev/null @@ -1,50 +0,0 @@ -#include -#include - -#include - -// create random number numbers for golden tests to test all functions -// -// format is: x : [0.1; 100.0] -// a b : [0.0000000000001; 1.0] -// -// where all are of precision 10^34 -// -// expected output: -// exp' x -// -ln' a - to avoid negative numbers -// 1 - (1 - f) *** b - as in VRF leader validation -// Taylor approx(exp' (b * ln' (1 - f))) with error bars and iteration count for -// a < 1 - (1 - f) *** b <=> 1/(1-a) < exp(-b * ln' (1 - f)) -int main() -{ - size_t n; - std::cin >> n; - - const double l = 0.0000000000001; - const double u = 1.0; - - const double l_x = 0.1; - const double u_x = 100.0; - std::uniform_real_distribution uniform(l, u); - std::uniform_real_distribution uniform_x(l_x, u_x); - std::default_random_engine generator; - - for (size_t i = 0; i < n; i++) - { - double x_ = uniform_x(generator); - x_ *= 1e34; - mpz_class x(x_); - - double a_ = uniform(generator); - a_ *= 1e34; - mpz_class a(a_); - - double b_ = uniform(generator); - b_ *= 1e34; - mpz_class b(b_); - - std::cout << x << " " << a << " " << b << std::endl; - } - return 0; -} diff --git a/libs/non-integral/src/Cardano/Ledger/NonIntegral.hs b/libs/non-integral/src/Cardano/Ledger/NonIntegral.hs deleted file mode 100644 index b352a611395..00000000000 --- a/libs/non-integral/src/Cardano/Ledger/NonIntegral.hs +++ /dev/null @@ -1,210 +0,0 @@ -module Cardano.Ledger.NonIntegral ( - (***), - exp', - ln', - findE, - splitLn, - scaleExp, - CompareResult (..), - taylorExpCmp, -) -where - -data CompareResult a - = BELOW a Int - | ABOVE a Int - | MaxReached Int - deriving (Show, Eq) - -scaleExp :: RealFrac a => a -> (Integer, a) -scaleExp x = (x', x / fromIntegral x') - where - x' = ceiling x - --- | Exponentiation -(***) :: (RealFrac a, Enum a, Show a) => a -> a -> a -a *** b - | b == 0 = 1 - | a == 0 = 0 - | a == 1 = 1 - | otherwise = exp' (b * ln' a) - -ipow' :: Num a => a -> Integer -> a -ipow' x n - | n == 0 = 1 - | m == 0 = let y = ipow' x d in y * y - | otherwise = x * ipow' x (n - 1) - where - (d, m) = divMod n 2 - -ipow :: Fractional a => a -> Integer -> a -ipow x n - | n < 0 = 1 / ipow' x (-n) - | otherwise = ipow' x n - -logAs :: Num a => a -> [a] -logAs a = a' : a' : logAs (a + 1) - where - a' = a * a - --- | Approximate ln(1+x) for x \in [0, \infty) --- a_1 = x, a_{2k} = a_{2k+1} = x·k^2, k >= 1 --- b_n = n, n >= 0 -lncf :: (Fractional a, Enum a, Ord a, Show a) => Int -> a -> a -lncf maxN x - | x < 0 = error ("x = " ++ show x ++ " is not inside domain [0,..)") - | otherwise = cf maxN 0 eps Nothing 1 0 0 1 as [1, 2 ..] - where - as = x : map (* x) (logAs 1) - -eps :: Fractional a => a -eps = 1 / 10 ^ (24 :: Int) - --- | Compute continued fraction using max steps or bounded list of a/b factors. --- The 'maxN' parameter gives the maximum recursion depth, 'n' gives the current --- rursion depth, 'lastVal' is the optional last value ('Nothing' for the first --- iteration). 'aNm2' / 'bNm2' are A_{n-2} / B_{n-2}, 'aNm1' / 'bNm1' are --- A_{n-1} / B_{n-1}, and 'aN' / 'bN' are A_n / B_n respectively, 'an' / 'bn' --- are lists of succecsive a_n / b_n values for the recurrence relation: --- --- A_{-1} = 1, A_0 = b_0 --- B_{-1} = 0, B_0 = 1 --- A_n = b_n*A_{n-1} + a_n*A_{n-2} --- B_n = b_n*B_{n-1} + a_n*B_{n-2} --- --- The convergent 'xn' is calculated as x_n = A_n/B_n --- --- a_1 --- result = b_0 + --------------------- --- a_2 --- b_1 + --------------- --- a_3 --- b_2 + --------- --- . --- b_3 + . --- . --- --- The recursion stops once 'maxN' iterations have been reached, or either the --- list 'as' or 'bs' is exhausted or 'lastVal' differs less than 'epsilon' from the --- new convergent. -cf :: - (Fractional a, Ord a, Show a) => - Int -> - Int -> - a -> - Maybe a -> - a -> - a -> - a -> - a -> - [a] -> - [a] -> - a -cf maxN n epsilon lastVal aNm2 bNm2 aNm1 bNm1 (an : as) (bn : bs) - | maxN == n = xn - | converges = xn - | otherwise = cf maxN (n + 1) epsilon (Just xn) aNm1 bNm1 aN bN as bs - where - converges = maybe False (\x -> abs (x - xn) < epsilon) lastVal - xn = aN / bN -- convergent - aN = bn * aNm1 + an * aNm2 - bN = bn * bNm1 + an * bNm2 -cf _ _ _ _ _ _ aN bN _ _ = aN / bN - --- | Simple way to find integer powers that bound x. At every step the bounds --- are doubled. Assumption x > 0, the calculated bound is `factor^l <= x <= --- factor^u`, initially x' is assumed to be `1/factor` and x'' `factor`, l = -1 --- and u = 1. -bound :: - (Fractional a, Ord a) => - a -> - a -> - a -> - a -> - Integer -> - Integer -> - (Integer, Integer) -bound factor x x' x'' l u - | x' <= x && x <= x'' = (l, u) - | otherwise = bound factor x (x' * x') (x'' * x'') (2 * l) (2 * u) - --- | Bisect bounds to find the smallest integer power such that --- `factor^n<=x - a -> - a -> - Integer -> - Integer -> - Integer -contract factor x = go - where - go l u - | l + 1 == u = l - | otherwise = - if x < x' - then go l mid - else go mid u - where - mid = l + ((u - l) `div` 2) - x' = ipow factor mid - -exp1 :: (RealFrac a, Show a) => a -exp1 = exp' 1 - --- | find n with `e^n<=x a -> a -> Integer -findE e x = contract e x lower upper - where - (lower, upper) = bound e x (1 / e) e (-1) 1 - --- | Compute natural logarithm via continued fraction, first splitting integral --- part and then using continued fractions approximation for `ln(1+x)` -ln' :: (RealFrac a, Enum a, Show a) => a -> a -ln' x - | x <= 0 = error (show x ++ " is not in domain of ln") - | otherwise = fromIntegral n + lncf 1000 x' - where - (n, x') = splitLn x - -splitLn :: (RealFrac a, Show a) => a -> (Integer, a) -splitLn x = (n, x') - where - n = findE exp1 x - y' = ipow exp1 n - x' = (x / y') - 1 -- x / e^n > 1! - -exp' :: (RealFrac a, Show a) => a -> a -exp' x - | x < 0 = 1 / exp' (-x) - | otherwise = ipow x' n - where - (n, x_) = scaleExp x - x' = taylorExp 1000 1 x_ 1 1 1 - -taylorExp :: (RealFrac a, Show a) => Int -> Int -> a -> a -> a -> a -> a -taylorExp maxN n x lastX acc divisor - | maxN == n = acc - | abs nextX < eps = acc - | otherwise = taylorExp maxN (n + 1) x nextX (acc + nextX) (divisor + 1) - where - nextX = (lastX * x) / divisor - --- | Efficient way to compare the result of the Taylor expansion of the --- exponential function to a threshold value. Using error estimation one can --- stop early, once it's known the result will certainly be above or below the --- target value. -taylorExpCmp :: RealFrac a => a -> a -> a -> CompareResult a -taylorExpCmp boundX cmp x = go 1000 0 x 1 1 - where - go maxN n err acc divisor - | maxN == n = MaxReached n - | cmp >= acc' + errorTerm = ABOVE acc' (n + 1) - | cmp < acc' - errorTerm = BELOW acc' (n + 1) - | otherwise = go maxN (n + 1) err' acc' divisor' - where - errorTerm = abs (err' * boundX) - divisor' = divisor + 1 - nextX = err - err' = (err * x) / divisor' - acc' = acc + nextX diff --git a/libs/non-integral/test/Tests.hs b/libs/non-integral/test/Tests.hs deleted file mode 100644 index 8ad310b5d97..00000000000 --- a/libs/non-integral/test/Tests.hs +++ /dev/null @@ -1,40 +0,0 @@ -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE PartialTypeSignatures #-} -{-# LANGUAGE TypeSynonymInstances #-} - -import Tests.Cardano.Ledger.NonIntegral - -main :: IO () -main = do - property_negative_taylorExpCmp_comparison - property_exponential_is_monotonic_db - property_logarithm_is_monotonic_db - property_exp_maps_unit_interval_to_unit_interval_db - property_exp_of_ln_db - property_ln_of_exp_db - property_power_diff_db - property_exponential_law_db - property_log_law_db - property_log_power_db - property_bound_findE_db - prop_exp_is_monotonic_fp - prop_log_is_monotonic_fp - property_exp_maps_unit_interval_to_unit_interval_fp - property_exp_of_ln_fp - property_ln_of_exp_fp - property_power_diff_fp - property_exponential_law_fp - property_log_law_fp - property_log_power_fp - property_bound_findE_fp - property_praos_leader_comparison - prop_exp_is_monotonic_q - prop_log_is_monotonic_q - property_exp_maps_unit_interval_to_unit_interval_q - property_exp_of_ln_q - property_ln_of_exp_q - property_power_diff_q - property_exponential_law_q - property_log_law_q - property_log_power_q - property_bound_findE_q diff --git a/libs/non-integral/test/Tests/Cardano/Ledger/NonIntegral.hs b/libs/non-integral/test/Tests/Cardano/Ledger/NonIntegral.hs deleted file mode 100644 index 227339e5a5e..00000000000 --- a/libs/non-integral/test/Tests/Cardano/Ledger/NonIntegral.hs +++ /dev/null @@ -1,477 +0,0 @@ -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE PartialTypeSignatures #-} -{-# LANGUAGE TypeSynonymInstances #-} - -module Tests.Cardano.Ledger.NonIntegral where - -import Cardano.Ledger.NonIntegral -import qualified Data.Fixed as FP -import Test.QuickCheck - -data E34 - -instance FP.HasResolution E34 where - resolution _ = 10 ^ (34 :: Int) - -type FixedPoint = FP.Fixed E34 - -epsD :: Double -epsD = 1 / 10 ^ (12 :: Int) - -epsFP :: FixedPoint -epsFP = 1 / 10 ^ (16 :: Int) - -eps :: Rational -eps = 1 / 10 ^ (16 :: Int) - -map2 :: (a -> b) -> (a, a) -> (b, b) -map2 f (x, y) = (f x, f y) - -both :: (a -> Bool) -> (a, a) -> Bool -both p (x, y) = p x && p y - -type Diff a = (a, a) - -absDiff :: Num a => Diff a -> a -absDiff (x, y) = abs (x - y) - -(~=) :: (Ord a, Num a) => Diff a -> a -> Bool -w ~= epsilon = absDiff w < epsilon - -newtype Normalized a = Norm (a, a) deriving (Show) - -newtype UnitInterval a = Unit a deriving (Show) - -instance (Fractional a, Arbitrary a) => Arbitrary (Normalized a) where - arbitrary = return . Norm . normalize =<< arbitrary - -instance (Fractional a, Arbitrary a) => Arbitrary (UnitInterval a) where - arbitrary = return . Unit . toUnit =<< arbitrary - -type NonNegInts = (NonNegative Integer, Positive Integer) - --- | Normalizes the integers, return a pair of integers, such that: --- fst >= 0, snd > 0, fst <= snd. -normalizeInts :: NonNegInts -> (Integer, Integer) -normalizeInts (NonNegative x, Positive y) = (min x y, max x y) - -normalize :: Fractional a => NonNegInts -> (a, a) -normalize = map2 fromInteger . normalizeInts - -toUnit :: Fractional a => NonNegInts -> a -toUnit = uncurry (/) . normalize -- [0,1] - ------------------------- --- Generic Properties -- ------------------------- - -type Monotonic a = (a -> Bool) -> (a -> a) -> a -> a -> Property - -monotonic :: (Ord a, Ord b) => (a -> b) -> a -> a -> Bool -monotonic f x y = - if x < y - then f x < f y - else f x >= f y - -log_pow :: (RealFrac a, Show a, Enum a) => a -> a -> Diff a -log_pow x y = (ln' (x *** y), y * ln' x) - -log_law :: (RealFrac a, Show a, Enum a) => a -> a -> Diff a -log_law x y = (ln' (x * y), ln' x + ln' y) - -exp_law :: (RealFrac a, Show a) => a -> a -> Diff a -exp_law x y = (exp' (x + y), exp' x * exp' y) - -exp_log, log_exp :: (RealFrac a, Show a, Enum a) => a -> Diff a -exp_log x = (exp' (ln' x), x) -log_exp x = (ln' (exp' x), x) - -exp_UnitInterval :: (RealFrac a, Show a, Enum a) => a -> a -> Bool -exp_UnitInterval x y = let z = x *** y in z >= 0 && z <= 1 - -findD :: (RealFrac a, Show a) => a -> Bool -findD x = e ^^ n <= x && x < e ^^ (n + 1) - where - n = findE e x - e = exp' 1 - -pow_Diff :: (RealFrac a, Enum a, Show a) => a -> (a, a) -> Diff a -pow_Diff z (y, x) = ((z *** (1 / x)) *** y, (z *** y) *** (1 / x)) - -leader :: (RealFrac a, Show a, Enum a) => a -> a -> a -leader f sigma = 1 - ((1 - f) *** sigma) - -taylorExpCmpCheck :: RealFrac a => a -> a -> a -> Bool -taylorExpCmpCheck a p s = case taylorExpCmp 3 p s of - ABOVE _ _ -> p >= a - BELOW _ _ -> p < a - MaxReached _ -> False - -praosLeaderCheck :: (RealFrac a, Show a, Enum a) => a -> a -> a -> a -> Bool -praosLeaderCheck f a p sigma = case taylorExpCmp 3 (1 / q) (-sigma * c) of - ABOVE _ _ -> p >= a - BELOW _ _ -> p < a - MaxReached _ -> False - where - c = ln' (1 - f) - q = 1 - p - ---------------------------------------- --- FixedPoint Versions of Properties -- ---------------------------------------- - -prop_FPMonotonic :: Monotonic FixedPoint -prop_FPMonotonic constrain f x y = - both constrain (x, y) ==> - classify zeroes "both zero case" $ - (zeroes || monotonic f x y) === True - where - zeroes = both zero (x, y) - zero a = (f a, 0) ~= epsFP - -prop_FPPowDiff :: UnitInterval FixedPoint -> Normalized FixedPoint -> Property -prop_FPPowDiff (Unit z) (Norm w) = - let e = absDiff (pow_Diff z w) - in classify (e < epsFP) "OK 10e-16" $ - classify (e < epsFP * 1000 && e >= epsFP) "OK 10e-12" $ - classify (e >= epsFP * 1000) "KO" $ - True === True - -prop_FPExpLaw :: UnitInterval FixedPoint -> UnitInterval FixedPoint -> Property -prop_FPExpLaw (Unit x) (Unit y) = (exp_law x y ~= epsFP) === True - -prop_FPlnLaw :: Positive FixedPoint -> Positive FixedPoint -> Property -prop_FPlnLaw (Positive x) (Positive y) = (log_law x y ~= epsFP) === True - -prop_FPExpUnitInterval :: UnitInterval FixedPoint -> UnitInterval FixedPoint -> Property -prop_FPExpUnitInterval (Unit x) (Unit y) = exp_UnitInterval x y === True - -prop_FPIdemPotent :: Positive FixedPoint -> Property -prop_FPIdemPotent (Positive x) = (exp_log x ~= epsFP) === True - -prop_FPIdemPotent' :: Positive FixedPoint -> Property -prop_FPIdemPotent' (Positive x) = (log_exp x ~= epsFP) === True - -prop_FPfindD :: Positive FixedPoint -> Property -prop_FPfindD (Positive x) = findD x === True - -prop_FPlnPow :: UnitInterval FixedPoint -> UnitInterval FixedPoint -> Property -prop_FPlnPow (Unit x) (Unit y) = (x > 0) ==> (log_pow x y ~= epsFP) === True - -prop_neg_taylorExpCmp :: UnitInterval FixedPoint -> UnitInterval FixedPoint -> Property -prop_neg_taylorExpCmp (Unit p) (Unit s) = - both (\x -> 0 < x && x < 1) (p, s) ==> - taylorExpCmpCheck (exp' sm) p sm - where - sm = -s - -prop_LeaderCmp :: UnitInterval FixedPoint -> UnitInterval FixedPoint -> Property -prop_LeaderCmp (Unit p) (Unit s) = - both (\x -> 0 < x && x < 1) (p, s) ==> - classify (p < a) "is leader" $ - praosLeaderCheck f a p s - where - a = leader f s - f = 1 / 10 - ------------------------------------ --- Double Versions of Properties -- ------------------------------------ - -prop_DMonotonic :: Monotonic Double -prop_DMonotonic constrain f x y = - both constrain (x, y) ==> monotonic f x y - --- | Takes very long, but (e *** b) *** c is not an operation that we use. -prop_DPowDiff :: UnitInterval Double -> Normalized Double -> Property -prop_DPowDiff (Unit z) (Norm w) = (pow_Diff z w ~= epsD) === True - -prop_DExpLaw :: UnitInterval Double -> UnitInterval Double -> Property -prop_DExpLaw (Unit x) (Unit y) = (exp_law x y ~= epsD) === True - -prop_DlnLaw :: Positive Double -> Positive Double -> Property -prop_DlnLaw (Positive x) (Positive y) = (log_law x y ~= epsD) === True - -prop_DExpUnitInterval :: UnitInterval Double -> UnitInterval Double -> Property -prop_DExpUnitInterval (Unit x) (Unit y) = exp_UnitInterval x y === True - -prop_DIdemPotent :: Positive Double -> Property -prop_DIdemPotent (Positive x) = (exp_log x ~= epsD) === True - -prop_DIdemPotent' :: Positive Double -> Property -prop_DIdemPotent' (Positive x) = (log_exp x ~= epsD) === True - -prop_DfindD :: Positive Double -> Property -prop_DfindD (Positive x) = findD x === True - -prop_DlnPow :: UnitInterval Double -> UnitInterval Double -> Property -prop_DlnPow (Unit x) (Unit y) = (x > 0) ==> (log_pow x y ~= epsD) === True - ------------------------------ --- Properties for Rational -- ------------------------------ - -prop_Monotonic :: Monotonic Rational -prop_Monotonic constrain f x y = - both constrain (x, y) ==> monotonic f x y - -prop_PowDiff :: UnitInterval Rational -> Normalized Rational -> Property -prop_PowDiff (Unit z) (Norm w) = (pow_Diff z w ~= eps) === True - -prop_ExpLaw :: UnitInterval Rational -> UnitInterval Rational -> Property -prop_ExpLaw (Unit x) (Unit y) = (exp_law x y ~= eps) === True - -prop_lnLaw :: Positive Rational -> Positive Rational -> Property -prop_lnLaw (Positive x) (Positive y) = (log_law x y ~= eps) === True - -prop_ExpUnitInterval :: UnitInterval Rational -> UnitInterval Rational -> Property -prop_ExpUnitInterval (Unit x) (Unit y) = exp_UnitInterval x y === True - -prop_IdemPotent :: Positive Rational -> Property -prop_IdemPotent (Positive x) = (exp_log x ~= eps) === True - -prop_IdemPotent' :: Positive Rational -> Property -prop_IdemPotent' (Positive x) = (log_exp x ~= eps) === True - -prop_findD :: Positive Rational -> Property -prop_findD (Positive x) = findD x === True - -prop_lnPow :: UnitInterval Rational -> UnitInterval Rational -> Property -prop_lnPow (Unit x) (Unit y) = (x > 0) ==> (log_pow x y ~= eps) === True - -qcWithLabel :: Testable prop => String -> Int -> prop -> IO () -qcWithLabel text count prop = do - putStrLn text - if count > 0 - then quickCheck (withMaxSuccess count prop) - else putStrLn "--- SKIPPED, takes too long" - --- Test of Double -- - -property_exponential_is_monotonic_db :: IO () -property_exponential_is_monotonic_db = - qcWithLabel - "property-exponential-is-monotonic" - 1000 - $ prop_DMonotonic (const True) exp' - -property_logarithm_is_monotonic_db :: IO () -property_logarithm_is_monotonic_db = - qcWithLabel - "property logarithm is monotonic" - 1000 - $ prop_DMonotonic (> 0) ln' - -property_exp_maps_unit_interval_to_unit_interval_db :: IO () -property_exp_maps_unit_interval_to_unit_interval_db = - qcWithLabel - "property x,y in [0,1] -> x^y in [0,1]" - 1000 - prop_DExpUnitInterval - -property_exp_of_ln_db :: IO () -property_exp_of_ln_db = - qcWithLabel - "property x > 0 -> exp(ln(x)) = x" - 1000 - prop_DIdemPotent - -property_ln_of_exp_db :: IO () -property_ln_of_exp_db = - qcWithLabel - "property x > 0 -> ln(exp(x)) = x" - 1000 - prop_DIdemPotent' - -property_power_diff_db :: IO () -property_power_diff_db = - qcWithLabel - "property pow diff in [0,1]: (a^(1/x))^y = (a^y)^(1/x)" - 1000 - prop_DPowDiff - -property_exponential_law_db :: IO () -property_exponential_law_db = - qcWithLabel - "property exponential law in [0,1]: exp(x + y) = exp(x) · exp(y)" - 1000 - prop_DExpLaw - -property_log_law_db :: IO () -property_log_law_db = - qcWithLabel - "property logarithm law in (0,..): ln(x · y) = ln(x) + ln(y)" - 1000 - prop_DlnLaw - -property_log_power_db :: IO () -property_log_power_db = - qcWithLabel - "property logarithm of pow in [0,1]: ln(x^y) = y · ln(x)" - 1000 - prop_DlnPow - -property_bound_findE_db :: IO () -property_bound_findE_db = - qcWithLabel - "check bound of `findE`" - 1000 - prop_DfindD - --- Test of 34 Decimal Digits Fixed Point -- - -prop_exp_is_monotonic_fp :: IO () -prop_exp_is_monotonic_fp = - qcWithLabel - "property exponential is monotonic" - 1000 - $ prop_FPMonotonic (const True) exp' - -prop_log_is_monotonic_fp :: IO () -prop_log_is_monotonic_fp = - qcWithLabel - "property logarithm is monotonic" - 1000 - $ prop_FPMonotonic (> 0) ln' - -property_exp_maps_unit_interval_to_unit_interval_fp :: IO () -property_exp_maps_unit_interval_to_unit_interval_fp = - qcWithLabel - "property x,y in [0,1] -> x^y in [0,1]" - 1000 - prop_FPExpUnitInterval - -property_exp_of_ln_fp :: IO () -property_exp_of_ln_fp = - qcWithLabel - "property x > 0 -> exp(ln(x)) = x" - 1000 - prop_FPIdemPotent - -property_ln_of_exp_fp :: IO () -property_ln_of_exp_fp = - qcWithLabel - "property x > 0 -> ln(exp(x)) = x" - 1000 - prop_FPIdemPotent' - -property_power_diff_fp :: IO () -property_power_diff_fp = - qcWithLabel - "property pow diff in [0,1]: (a^(1/x))^y = (a^y)^(1/x)" - 1000 - prop_FPPowDiff - -property_exponential_law_fp :: IO () -property_exponential_law_fp = - qcWithLabel - "property exponential law in [0,1]: exp(x + y) = exp(x) · exp(y)" - 1000 - prop_FPExpLaw - -property_log_law_fp :: IO () -property_log_law_fp = - qcWithLabel - "property logarithm law in (0,..): ln(x · y) = ln(x) + ln(y)" - 1000 - prop_FPlnLaw - -property_log_power_fp :: IO () -property_log_power_fp = - qcWithLabel - "property logarithm of pow in [0,1]: ln(x^y) = y · ln(x)" - 1000 - prop_FPlnPow - -property_bound_findE_fp :: IO () -property_bound_findE_fp = - qcWithLabel - "check bound of `findE`" - 1000 - prop_FPfindD - -property_negative_taylorExpCmp_comparison :: IO () -property_negative_taylorExpCmp_comparison = - qcWithLabel - "property negative taylorExpCmp check" - 10000 - prop_neg_taylorExpCmp - -property_praos_leader_comparison :: IO () -property_praos_leader_comparison = - qcWithLabel - "property σ,p in [0,1]: p < 1 - (1 - f)^σ <=> taylorExpCmp 3 (1/(1 - p)) (-σ · ln (1 - f))" - 10000 - prop_LeaderCmp - --- Test of Rational Numbers -- - -prop_exp_is_monotonic_q :: IO () -prop_exp_is_monotonic_q = - qcWithLabel - "property exponential is monotonic" - 10 - $ prop_Monotonic (const True) exp' - -prop_log_is_monotonic_q :: IO () -prop_log_is_monotonic_q = - qcWithLabel - "property logarithm is monotonic" - 10 - $ prop_Monotonic (> 0) ln' - -property_exp_maps_unit_interval_to_unit_interval_q :: IO () -property_exp_maps_unit_interval_to_unit_interval_q = - qcWithLabel - "property x,y in [0,1] -> x^y in [0,1]" - 10 - prop_ExpUnitInterval - -property_exp_of_ln_q :: IO () -property_exp_of_ln_q = - qcWithLabel - "property x > 0 -> exp(ln(x)) = x" - 10 - prop_IdemPotent - -property_ln_of_exp_q :: IO () -property_ln_of_exp_q = - qcWithLabel - "property x > 0 -> ln(exp(x)) = x" - 10 - prop_IdemPotent' - -property_power_diff_q :: IO () -property_power_diff_q = - qcWithLabel - "property pow diff in [0,1]: (a^(1/x))^y = (a^y)^(1/x)" - 0 - prop_PowDiff - -property_exponential_law_q :: IO () -property_exponential_law_q = - qcWithLabel - "property exponential law in [0,1]: exp(x + y) = exp(x) · exp(y)" - 10 - prop_ExpLaw - -property_log_law_q :: IO () -property_log_law_q = - qcWithLabel - "property logarithm law in (0,..): ln(x · y) = ln(x) + ln(y)" - 10 - prop_lnLaw - -property_log_power_q :: IO () -property_log_power_q = - qcWithLabel - "property logarithm of pow in [0,1]: ln(x^y) = y · ln(x)" - 0 - prop_lnPow - -property_bound_findE_q :: IO () -property_bound_findE_q = - qcWithLabel - "check bound of `findE`" - 100 - prop_findD diff --git a/libs/plutus-preprocessor/.ghcid b/libs/plutus-preprocessor/.ghcid deleted file mode 100644 index 16aa603f0c1..00000000000 --- a/libs/plutus-preprocessor/.ghcid +++ /dev/null @@ -1 +0,0 @@ ---command="cabal repl --repl-options='-isrc -fwarn-unused-binds -fwarn-unused-imports -fno-code -fobject-code -g2 -fno-break-on-exception -fno-break-on-error -ferror-spans -j -Wno-unused-packages'" --clear --no-height-limit --reverse-errors --reload=../../ --outputfile=/tmp/plutus-preprocessor-ghcid.txt \ No newline at end of file diff --git a/libs/plutus-preprocessor/CHANGELOG.md b/libs/plutus-preprocessor/CHANGELOG.md deleted file mode 100644 index 1984fee93c4..00000000000 --- a/libs/plutus-preprocessor/CHANGELOG.md +++ /dev/null @@ -1,5 +0,0 @@ -# Version history for plutus-preprocessor - -## 0.1.0.0 -- YYYY-mm-dd - -* First version. Released on an unsuspecting world. diff --git a/libs/plutus-preprocessor/plutus-preprocessor.cabal b/libs/plutus-preprocessor/plutus-preprocessor.cabal deleted file mode 100644 index e55aed14f09..00000000000 --- a/libs/plutus-preprocessor/plutus-preprocessor.cabal +++ /dev/null @@ -1,59 +0,0 @@ -cabal-version: 3.0 -name: plutus-preprocessor -version: 0.1.0.0 -license: Apache-2.0 -maintainer: operations@iohk.io -author: IOHK -bug-reports: https://github.com/intersectmbo/cardano-ledger/issues -synopsis: - A preproceesor for creating plutus scripts as bytestrings and equivalents - -description: - Use this file to compile plutus scripts and to generate bytestring equivalents as text - -category: Network -extra-source-files: CHANGELOG.md - -source-repository head - type: git - location: https://github.com/intersectmbo/cardano-ledger - subdir: libs/plutus-preprocessor - -executable plutus-preprocessor - main-is: Main.hs - hs-source-dirs: src - other-modules: - PlutusV1Scripts - PlutusV3Scripts - ScriptSource - - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wpartial-fields - -threaded -rtsopts -with-rtsopts=-N - - build-depends: - base >=4.14 && <5, - bytestring, - cardano-ledger-core >=1.8.1, - plutus-tx, - plutus-tx-plugin, - plutus-ledger-api, - template-haskell - - if (impl(ghc <9.6) || impl(ghc >=9.7)) - buildable: False - -executable plutus-debug - main-is: Debug.hs - hs-source-dirs: src - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wpartial-fields - -Wunused-packages -threaded -rtsopts -with-rtsopts=-N - - build-depends: - base >=4.14 && <5, - cardano-ledger-core >=1.0 diff --git a/libs/plutus-preprocessor/src/Debug.hs b/libs/plutus-preprocessor/src/Debug.hs deleted file mode 100644 index a0d635efbaf..00000000000 --- a/libs/plutus-preprocessor/src/Debug.hs +++ /dev/null @@ -1,10 +0,0 @@ -{-# LANGUAGE TypeApplications #-} - -module Main where - -import Cardano.Ledger.Crypto (StandardCrypto) -import Cardano.Ledger.Plutus.Evaluate (debugPlutus) -import System.Environment (getArgs) - -main :: IO () -main = print . debugPlutus @StandardCrypto . head =<< getArgs diff --git a/libs/plutus-preprocessor/src/Main.hs b/libs/plutus-preprocessor/src/Main.hs deleted file mode 100644 index a32e169f890..00000000000 --- a/libs/plutus-preprocessor/src/Main.hs +++ /dev/null @@ -1,194 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE TemplateHaskell #-} - --- | The 'main' function in this file writes a file --- @libs\/cardano-ledger-core\/testlib\/Test\/Cardano\/Ledger\/Plutus\/Examples.hs@. When --- this file is compiled it exports a bunch of Plutus Scripts. Compiling that file does --- not have any dependency on the plutus-plugin. Instead this package --- 'plutus-preprocessor' has that dependency, but one does not have to compile this --- package to build the system. If the plutus package changes, we will have to regenerate --- the Examples.hs file. --- To regenerate Examples.hs, on a machine that can depend upon plutus=plugin, --- run 'cabal run plutus-preprocessor' -module Main where - -import Cardano.Ledger.Plutus.Language (Language (..)) -import Data.ByteString.Short (ShortByteString, unpack) -import Data.Foldable (forM_) -import Language.Haskell.TH -import qualified PlutusV1Scripts as PV1S -import qualified PlutusV3Scripts as PV3S -import ScriptSource -import System.IO - --- ============================================= --- how to display a preprocessed script - -display :: Handle -> (Language -> ShortByteString) -> Q [Dec] -> String -> IO () -display h scriptBytesFun code name = do - xxx <- runQ code - hPutStrLn h ("\n\n{- Preproceesed Plutus Script\n" ++ pprint xxx ++ "\n-}") - hPutStr h $ - concat - [ "\n" - , name ++ " :: SLanguage l -> Plutus l\n" - , name ++ " = Plutus . PlutusBinary . pack . \n (\\case\n" - ] - forM_ [PlutusV1 .. PlutusV3] $ \lang -> do - hPutStrLn h $ " S" <> show lang <> " -> " <> show (unpack (scriptBytesFun lang)) - hPutStrLn h " )" - -manylines :: Show t => Handle -> Int -> [t] -> IO () -manylines h n ts' = write (split ts') - where - split [] = [] - split ts = take n ts : split (drop n ts) - write [] = pure () - write [ts] = hPutStrLn h (show ts ++ "]") - write (ts : tss) = do - hPutStr h (show ts ++ ",\n ") - write tss - --- ======================================================================== --- Generate the PlutusScripts.hs which does not depend on plutus-plugin. --- write out the file header (module and imports), then 'display' the result --- for each plutus script. - -displayScripts :: Handle -> IO () -displayScripts outh = do - let - scripts = - [ - ( \case - PlutusV1 -> PV1S.alwaysSucceeds2argsBytes - PlutusV2 -> PV1S.alwaysSucceeds2argsBytes - PlutusV3 -> PV3S.alwaysSucceeds2argsBytes - , alwaysSucceedsDecl2args - , "alwaysSucceeds2" - ) - , - ( \case - PlutusV1 -> PV1S.alwaysSucceeds3argsBytes - PlutusV2 -> PV1S.alwaysSucceeds3argsBytes - PlutusV3 -> PV3S.alwaysSucceeds3argsBytes - , alwaysSucceedsDecl3args - , "alwaysSucceeds3" - ) - , - ( \case - PlutusV1 -> PV1S.alwaysFails2argsBytes - PlutusV2 -> PV1S.alwaysFails2argsBytes - PlutusV3 -> PV3S.alwaysFails2argsBytes - , alwaysFailsDecl2args - , "alwaysFails2" - ) - , - ( \case - PlutusV1 -> PV1S.alwaysFails3argsBytes - PlutusV2 -> PV1S.alwaysFails3argsBytes - PlutusV3 -> PV3S.alwaysFails3argsBytes - , alwaysFailsDecl3args - , "alwaysFails3" - ) - , - ( \case - PlutusV1 -> PV1S.guess2args - PlutusV2 -> PV1S.guess2args - PlutusV3 -> PV3S.guess2args - , guessDecl2args - , "guessTheNumber2" - ) - , - ( \case - PlutusV1 -> PV1S.guessTheNumberBytes - PlutusV2 -> PV1S.guessTheNumberBytes - PlutusV3 -> PV3S.guessTheNumberBytes - , guessDecl - , "guessTheNumber3" - ) - , - ( \case - PlutusV1 -> PV1S.evendataBytes - PlutusV2 -> PV1S.evendataBytes - PlutusV3 -> PV3S.evendataBytes - , evendataDecl - , "evendata3" - ) - , - ( \case - PlutusV1 -> PV1S.odddataBytes - PlutusV2 -> PV1S.odddataBytes - PlutusV3 -> PV3S.odddataBytes - , odddataDecl - , "odddata3" - ) - , - ( \case - PlutusV1 -> PV1S.evenRedeemerBytes - PlutusV2 -> PV1S.evenRedeemerBytes - PlutusV3 -> PV3S.evenRedeemerBytes - , evenRedeemerDecl - , "evenRedeemer3" - ) - , - ( \case - PlutusV1 -> PV1S.oddRedeemerBytes - PlutusV2 -> PV1S.oddRedeemerBytes - PlutusV3 -> PV3S.oddRedeemerBytes - , oddRedeemerDecl - , "oddRedeemer3" - ) - , - ( \case - PlutusV1 -> PV1S.sumsTo10Bytes - PlutusV2 -> PV1S.sumsTo10Bytes - PlutusV3 -> PV3S.sumsTo10Bytes - , sumsTo10Decl - , "sumsTo103" - ) - , -- 2 arg plutus scripts - - ( \case - PlutusV1 -> PV1S.oddRedeemerBytes2Arg - PlutusV2 -> PV1S.oddRedeemerBytes2Arg - PlutusV3 -> PV3S.oddRedeemerBytes2Arg - , oddRedeemerDecl2Args - , "oddRedeemer2" - ) - , - ( \case - PlutusV1 -> PV1S.evenRedeemerBytes2Args - PlutusV2 -> PV1S.evenRedeemerBytes2Args - PlutusV3 -> PV3S.evenRedeemerBytes2Args - , evenRedeemerDecl2Args - , "evenRedeemer2" - ) - , - ( \case - PlutusV1 -> PV1S.redeemerIs10Bytes2Args - PlutusV2 -> PV1S.redeemerIs10Bytes2Args - PlutusV3 -> PV3S.redeemerIs10Bytes2Args - , redeemerIs10Decl2Args - , "redeemerIs102" - ) - ] - forM_ scripts $ \(scriptBytesFun, scriptArgs, name) -> do - display outh scriptBytesFun scriptArgs name - -main :: IO () -main = do - outh <- openFile "libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Plutus/Examples.hs" WriteMode - hPutStrLn outh $ - unlines - [ "{-# LANGUAGE DataKinds #-}" - , "{-# LANGUAGE LambdaCase #-}" - , "{-# LANGUAGE GADTs #-}" - , "-- | This file is generated by \"plutus-preprocessor:plutus-preprocessor\"" - , "module Test.Cardano.Ledger.Plutus.Examples where" - , "" - , "import Cardano.Ledger.Plutus.Language (SLanguage (..), Plutus (..), PlutusBinary (..))" - , "import Data.ByteString.Short (pack)" - ] - displayScripts outh - hClose outh diff --git a/libs/plutus-preprocessor/src/PlutusV1Scripts.hs b/libs/plutus-preprocessor/src/PlutusV1Scripts.hs deleted file mode 100644 index 9212006d647..00000000000 --- a/libs/plutus-preprocessor/src/PlutusV1Scripts.hs +++ /dev/null @@ -1,107 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TemplateHaskell #-} -{-# OPTIONS_GHC -fno-omit-interface-pragmas #-} -{-# OPTIONS_GHC -fplugin-opt PlutusTx.Plugin:target-version=1.0.0 #-} - -module PlutusV1Scripts where - -import Data.ByteString.Short (ShortByteString) -import qualified PlutusLedgerApi.V1 as PV1 -import qualified PlutusTx as P (compile) -import ScriptSource - --- ========================================================================== --- Turn the Template Haskell Decls into real haskell functions using Template --- Haskell top-level splices, of TH.Decl imported from PlutusScripts. We use --- this 2 step process (1. define elsewhere as a TH.Decl, 2. splice here) so that --- can export the actual text of the plutus code as a comment in the generated file. - -$alwaysSucceedsDecl2args -$alwaysSucceedsDecl3args -$alwaysFailsDecl2args -$alwaysFailsDecl3args -$guessDecl -$guessDecl2args -$evendataDecl -$evenRedeemerDecl -$odddataDecl -$oddRedeemerDecl -$sumsTo10Decl -$evenRedeemerDecl2Args -$oddRedeemerDecl2Args -$redeemerIs10Decl2Args - --- ================================================================ --- Compile the real functions as Plutus scripts, and get their --- bytestring equaivalents. Here is where we depend on plutus-plugin. - -alwaysSucceeds2argsBytes :: ShortByteString -alwaysSucceeds2argsBytes = - PV1.serialiseCompiledCode - $$(P.compile [||alwaysSucceeds'2||]) - -alwaysSucceeds3argsBytes :: ShortByteString -alwaysSucceeds3argsBytes = - PV1.serialiseCompiledCode - $$(P.compile [||alwaysSucceeds'3||]) - -alwaysFails2argsBytes :: ShortByteString -alwaysFails2argsBytes = - PV1.serialiseCompiledCode - $$(P.compile [||alwaysFails'2||]) - -alwaysFails3argsBytes :: ShortByteString -alwaysFails3argsBytes = - PV1.serialiseCompiledCode - $$(P.compile [||alwaysFails'3||]) - -guessTheNumberBytes :: ShortByteString -guessTheNumberBytes = - PV1.serialiseCompiledCode - $$(P.compile [||guessTheNumber'3||]) - -guess2args :: ShortByteString -guess2args = - PV1.serialiseCompiledCode - $$(P.compile [||guessTheNumber'2||]) - -evendataBytes :: ShortByteString -evendataBytes = - PV1.serialiseCompiledCode - $$(P.compile [||evendata'||]) - -evenRedeemerBytes :: ShortByteString -evenRedeemerBytes = - PV1.serialiseCompiledCode - $$(P.compile [||evenRedeemer'||]) - -odddataBytes :: ShortByteString -odddataBytes = - PV1.serialiseCompiledCode - $$(P.compile [||odddata'||]) - -oddRedeemerBytes :: ShortByteString -oddRedeemerBytes = - PV1.serialiseCompiledCode - $$(P.compile [||oddRedeemer'||]) - -sumsTo10Bytes :: ShortByteString -sumsTo10Bytes = - PV1.serialiseCompiledCode - $$(P.compile [||sumsTo10'||]) - -oddRedeemerBytes2Arg :: ShortByteString -oddRedeemerBytes2Arg = - PV1.serialiseCompiledCode - $$(P.compile [||oddRedeemer2'||]) - -evenRedeemerBytes2Args :: ShortByteString -evenRedeemerBytes2Args = - PV1.serialiseCompiledCode - $$(P.compile [||evenRedeemer2'||]) - -redeemerIs10Bytes2Args :: ShortByteString -redeemerIs10Bytes2Args = - PV1.serialiseCompiledCode - $$(P.compile [||redeemerIs102'||]) diff --git a/libs/plutus-preprocessor/src/PlutusV3Scripts.hs b/libs/plutus-preprocessor/src/PlutusV3Scripts.hs deleted file mode 100644 index 2a9f17ec33d..00000000000 --- a/libs/plutus-preprocessor/src/PlutusV3Scripts.hs +++ /dev/null @@ -1,107 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TemplateHaskell #-} -{-# OPTIONS_GHC -fno-omit-interface-pragmas #-} -{-# OPTIONS_GHC -fplugin-opt PlutusTx.Plugin:target-version=1.1.0 #-} - -module PlutusV3Scripts where - -import Data.ByteString.Short (ShortByteString) -import qualified PlutusLedgerApi.V3 as PV3 -import qualified PlutusTx as P (compile) -import ScriptSource - --- ========================================================================== --- Turn the Template Haskell Decls into real haskell functions using Template --- Haskell top-level splices, of TH.Decl imported from PlutusScripts. We use --- this 2 step process (1. define elsewhere as a TH.Decl, 2. splice here) so that --- can export the actual text of the plutus code as a comment in the generated file. - -$alwaysSucceedsDecl2args -$alwaysSucceedsDecl3args -$alwaysFailsDecl2args -$alwaysFailsDecl3args -$guessDecl -$guessDecl2args -$evendataDecl -$evenRedeemerDecl -$odddataDecl -$oddRedeemerDecl -$sumsTo10Decl -$evenRedeemerDecl2Args -$oddRedeemerDecl2Args -$redeemerIs10Decl2Args - --- ================================================================ --- Compile the real functions as Plutus scripts, and get their --- bytestring equaivalents. Here is where we depend on plutus-plugin. - -alwaysSucceeds2argsBytes :: ShortByteString -alwaysSucceeds2argsBytes = - PV3.serialiseCompiledCode - $$(P.compile [||alwaysSucceeds'2||]) - -alwaysSucceeds3argsBytes :: ShortByteString -alwaysSucceeds3argsBytes = - PV3.serialiseCompiledCode - $$(P.compile [||alwaysSucceeds'3||]) - -alwaysFails2argsBytes :: ShortByteString -alwaysFails2argsBytes = - PV3.serialiseCompiledCode - $$(P.compile [||alwaysFails'2||]) - -alwaysFails3argsBytes :: ShortByteString -alwaysFails3argsBytes = - PV3.serialiseCompiledCode - $$(P.compile [||alwaysFails'3||]) - -guessTheNumberBytes :: ShortByteString -guessTheNumberBytes = - PV3.serialiseCompiledCode - $$(P.compile [||guessTheNumber'3||]) - -guess2args :: ShortByteString -guess2args = - PV3.serialiseCompiledCode - $$(P.compile [||guessTheNumber'2||]) - -evendataBytes :: ShortByteString -evendataBytes = - PV3.serialiseCompiledCode - $$(P.compile [||evendata'||]) - -evenRedeemerBytes :: ShortByteString -evenRedeemerBytes = - PV3.serialiseCompiledCode - $$(P.compile [||evenRedeemer'||]) - -odddataBytes :: ShortByteString -odddataBytes = - PV3.serialiseCompiledCode - $$(P.compile [||odddata'||]) - -oddRedeemerBytes :: ShortByteString -oddRedeemerBytes = - PV3.serialiseCompiledCode - $$(P.compile [||oddRedeemer'||]) - -sumsTo10Bytes :: ShortByteString -sumsTo10Bytes = - PV3.serialiseCompiledCode - $$(P.compile [||sumsTo10'||]) - -oddRedeemerBytes2Arg :: ShortByteString -oddRedeemerBytes2Arg = - PV3.serialiseCompiledCode - $$(P.compile [||oddRedeemer2'||]) - -evenRedeemerBytes2Args :: ShortByteString -evenRedeemerBytes2Args = - PV3.serialiseCompiledCode - $$(P.compile [||evenRedeemer2'||]) - -redeemerIs10Bytes2Args :: ShortByteString -redeemerIs10Bytes2Args = - PV3.serialiseCompiledCode - $$(P.compile [||redeemerIs102'||]) diff --git a/libs/plutus-preprocessor/src/ScriptSource.hs b/libs/plutus-preprocessor/src/ScriptSource.hs deleted file mode 100644 index ed91dba9433..00000000000 --- a/libs/plutus-preprocessor/src/ScriptSource.hs +++ /dev/null @@ -1,112 +0,0 @@ -{-# LANGUAGE TemplateHaskell #-} - -module ScriptSource where - -import Language.Haskell.TH -import qualified PlutusTx.Builtins as P -import qualified PlutusTx.Prelude as P - -alwaysSucceedsDecl2args :: Q [Dec] -alwaysSucceedsDecl2args = - [d| - alwaysSucceeds'2 :: P.BuiltinData -> P.BuiltinData -> () - alwaysSucceeds'2 _ _ = () - |] - -alwaysSucceedsDecl3args :: Q [Dec] -alwaysSucceedsDecl3args = - [d| - alwaysSucceeds'3 :: P.BuiltinData -> P.BuiltinData -> P.BuiltinData -> () - alwaysSucceeds'3 _ _ _ = () - |] - -alwaysFailsDecl2args :: Q [Dec] -alwaysFailsDecl2args = - [d| - alwaysFails'2 :: P.BuiltinData -> P.BuiltinData -> () - alwaysFails'2 _ _ = P.error () - |] - -alwaysFailsDecl3args :: Q [Dec] -alwaysFailsDecl3args = - [d| - alwaysFails'3 :: P.BuiltinData -> P.BuiltinData -> P.BuiltinData -> () - alwaysFails'3 _ _ _ = P.error () - |] - -guessDecl :: Q [Dec] -guessDecl = - [d| - guessTheNumber'3 :: P.BuiltinData -> P.BuiltinData -> P.BuiltinData -> () - guessTheNumber'3 d1 d2 _d3 = if d1 P.== d2 then () else P.error () - |] - -guessDecl2args :: Q [Dec] -guessDecl2args = - [d| - guessTheNumber'2 :: P.BuiltinData -> P.BuiltinData -> () - guessTheNumber'2 d1 d2 = if d1 P.== d2 then () else P.error () - |] - -evendataDecl :: Q [Dec] -evendataDecl = - [d| - evendata' :: P.BuiltinData -> P.BuiltinData -> P.BuiltinData -> () - evendata' d1 _d2 _d3 = let n = P.unsafeDataAsI d1 in if P.modulo n 2 P.== 0 then () else P.error () - |] - -evenRedeemerDecl :: Q [Dec] -evenRedeemerDecl = - [d| - evenRedeemer' :: P.BuiltinData -> P.BuiltinData -> P.BuiltinData -> () - evenRedeemer' _d1 d2 _d3 = let n = P.unsafeDataAsI d2 in if P.modulo n 2 P.== 0 then () else P.error () - |] - -odddataDecl :: Q [Dec] -odddataDecl = - [d| - odddata' :: P.BuiltinData -> P.BuiltinData -> P.BuiltinData -> () - odddata' d1 _d2 _d3 = let n = P.unsafeDataAsI d1 in if P.modulo n 2 P.== 1 then () else P.error () - |] - -oddRedeemerDecl :: Q [Dec] -oddRedeemerDecl = - [d| - oddRedeemer' :: P.BuiltinData -> P.BuiltinData -> P.BuiltinData -> () - oddRedeemer' _d1 d2 _d3 = let n = P.unsafeDataAsI d2 in if P.modulo n 2 P.== 1 then () else P.error () - |] - -sumsTo10Decl :: Q [Dec] -sumsTo10Decl = - [d| - sumsTo10' :: P.BuiltinData -> P.BuiltinData -> P.BuiltinData -> () - sumsTo10' d1 d2 _d3 = - let n = P.unsafeDataAsI d1 - m = P.unsafeDataAsI d2 - in if (m P.+ n) P.== 10 then () else P.error () - |] - --- =========================== --- 2 arg Plutus scripts, for use in non payment contexts - -oddRedeemerDecl2Args :: Q [Dec] -oddRedeemerDecl2Args = - [d| - oddRedeemer2' :: P.BuiltinData -> P.BuiltinData -> () - oddRedeemer2' d1 _d3 = let n = P.unsafeDataAsI d1 in if P.modulo n 2 P.== 1 then () else P.error () - |] - -evenRedeemerDecl2Args :: Q [Dec] -evenRedeemerDecl2Args = - [d| - evenRedeemer2' :: P.BuiltinData -> P.BuiltinData -> () - evenRedeemer2' d1 _d3 = let n = P.unsafeDataAsI d1 in if P.modulo n 2 P.== 0 then () else P.error () - |] - -redeemerIs10Decl2Args :: Q [Dec] -redeemerIs10Decl2Args = - [d| - redeemerIs102' :: P.BuiltinData -> P.BuiltinData -> () - redeemerIs102' d1 _d3 = - let n = P.unsafeDataAsI d1 in if n P.== 10 then () else P.error () - |] diff --git a/libs/set-algebra/.ghcid b/libs/set-algebra/.ghcid deleted file mode 100644 index 9648181f19e..00000000000 --- a/libs/set-algebra/.ghcid +++ /dev/null @@ -1 +0,0 @@ ---command="cabal repl --repl-options='-isrc -fwarn-unused-binds -fwarn-unused-imports -fno-code -fobject-code -g2 -fno-break-on-exception -fno-break-on-error -ferror-spans -j -Wno-unused-packages'" --clear --no-height-limit --reverse-errors --reload=../../ --outputfile=/tmp/set-algebra-ghcid.txt \ No newline at end of file diff --git a/libs/set-algebra/CHANGELOG.md b/libs/set-algebra/CHANGELOG.md deleted file mode 100644 index 2245f05f767..00000000000 --- a/libs/set-algebra/CHANGELOG.md +++ /dev/null @@ -1,21 +0,0 @@ -# Version history for `set-algebra` - -## 1.1.0.3 - -* - -## 1.1.0.2 - -* - -## 1.1.0.1 - -- Set upper bound ansi-wl-pprint < 1.0 - -## 1.1.0.0 - -- Remove unused instances for `Data.UMap` #3371 - -## 1.0.0.0 - -* First properly versioned release. diff --git a/libs/set-algebra/Setup.hs b/libs/set-algebra/Setup.hs deleted file mode 100644 index e8ef27dbba9..00000000000 --- a/libs/set-algebra/Setup.hs +++ /dev/null @@ -1,3 +0,0 @@ -import Distribution.Simple - -main = defaultMain diff --git a/libs/set-algebra/flake.nix b/libs/set-algebra/flake.nix deleted file mode 100644 index 0f8c833696b..00000000000 --- a/libs/set-algebra/flake.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ - outputs = inputs: let - main = inputs.main or (import ../../nix/flake-compat.nix).defaultNix; - in { - packages = - builtins.mapAttrs (_: {cabalProject, ...}: { - default = cabalProject.hsPkgs.set-algebra.components.library; - tests = cabalProject.hsPkgs.set-algebra.components.tests.tests; - }) - main.legacyPackages; - inherit (main) devShells; - }; -} diff --git a/libs/set-algebra/set-algebra.cabal b/libs/set-algebra/set-algebra.cabal deleted file mode 100644 index 10e6187bebb..00000000000 --- a/libs/set-algebra/set-algebra.cabal +++ /dev/null @@ -1,59 +0,0 @@ -cabal-version: 3.0 -name: set-algebra -version: 1.1.0.2 -license: Apache-2.0 -maintainer: operations@iohk.io -author: IOHK -homepage: https://github.com/intersectmbo/cardano-ledger -synopsis: Set Algebra -category: Control -build-type: Simple -extra-source-files: CHANGELOG.md - -source-repository head - type: git - location: https://github.com/intersectmbo/cardano-ledger - subdir: libs/set-algebra - -library - exposed-modules: - Control.Iterate.BaseTypes - Control.Iterate.Collect - Control.Iterate.Exp - Control.Iterate.SetAlgebra - Control.SetAlgebra - - hs-source-dirs: src - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wunused-packages - - build-depends: - base >=4.14 && <5, - ansi-wl-pprint <1.0, - cardano-data >=1.1, - containers - -test-suite tests - type: exitcode-stdio-1.0 - main-is: Main.hs - hs-source-dirs: test - other-modules: - Test.Control.Iterate.SetAlgebra - Test.Control.Iterate.RelationReference - - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wunused-packages - -threaded - - build-depends: - base, - containers, - set-algebra, - tasty, - tasty-hunit, - tasty-quickcheck, - cardano-data diff --git a/libs/set-algebra/src/Control/Iterate/BaseTypes.hs b/libs/set-algebra/src/Control/Iterate/BaseTypes.hs deleted file mode 100644 index 15864d67935..00000000000 --- a/libs/set-algebra/src/Control/Iterate/BaseTypes.hs +++ /dev/null @@ -1,306 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE FunctionalDependencies #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE StandaloneDeriving #-} - --- | Defines what types can be used in the SetAlgebra, and --- what operations those types must support (Iter, Basic, Embed) -module Control.Iterate.BaseTypes where - -import Control.Iterate.Collect (Collect (..), hasElem, isempty, none, one, when) -import Data.List (sortBy) -import qualified Data.List as List -import qualified Data.Map.Strict as Map -import Data.MapExtras (StrictTriple (..), splitMemberSet) -import Data.Set (Set) -import qualified Data.Set as Set - --- $ClassesForSetAlgebra - --- ================= The Iter class ================================================= - --- | The Set algebra include types that encode finite sets and maps of some type. They --- have a finite domain, and for each domain element they pair a single range --- element (unit for sets). We are interested in those finite maps that can iterate their --- pairs in ascending domain order. The operations are: `nxt` and `lub` . --- lub can skip over many items in sub-linear time, it can make things really fast. --- Many finite maps can support a support lub operation in sub-linear time. Some examples: --- Balanced binary trees, Arrays (using binary search), Tries, etc. There are basic and compound --- Iter instances. Compound types include components with types that have Iter instances. -class Iter f where - nxt :: f a b -> Collect (a, b, f a b) - lub :: Ord k => k -> f k b -> Collect (k, b, f k b) - - -- | The next few methods can all be defined via nxt and lub, but for base types there often exist - -- much more efficent means, so the default definitions should be overwritten for such basic types. - -- For compound types with Guards, these are often the only way to define them. - hasNxt :: f a b -> Maybe (a, b, f a b) - hasNxt f = hasElem (nxt f) - - hasLub :: Ord k => k -> f k b -> Maybe (k, b, f k b) - hasLub a f = hasElem (lub a f) - haskey :: Ord key => key -> f key b -> Bool - haskey k x = case hasLub k x of Nothing -> False; Just (key, _, _) -> k == key - isnull :: f k v -> Bool - isnull f = isempty (nxt f) - lookup :: Ord key => key -> f key rng -> Maybe rng - lookup k x = case hasLub k x of Nothing -> Nothing; Just (key, v, _) -> if k == key then Just v else Nothing - element :: Ord k => k -> f k v -> Collect () - element k f = when (haskey k f) - --- ================================================================================================== - --- | In order to build typed 'Exp' (which are a typed deep embedding) of map and set operations, we need to know --- what kind of basic types can be used this way. Every Basic type has a few operations --- for creating one from a list, for adding and removing key-value pairs, looking up a value given a key. --- Instances of this algebra are functional in that every key has exactly one value associated with it. -class Basic f where - -- | in addpair the new value always prevails, to make a choice use 'addkv' which has a combining function that allows choice. - addpair :: Ord k => k -> v -> f k v -> f k v - addpair k v f = addkv (k, v) f (\_old new -> new) - - -- | use (\ old new -> old) if you want the v in (f k v) to prevail, and use (\ old new -> new) if you want the v in (k,v) to prevail - addkv :: Ord k => (k, v) -> f k v -> (v -> v -> v) -> f k v - - -- | remove the pair with key 'k', if it is there. - removekey :: Ord k => k -> f k v -> f k v - - -- | the set of keys - domain :: Ord k => f k v -> Set k - - -- | the set of values. - range :: Ord v => f k v -> Set v - --- =============================================================================================== - --- $Deep embedding - --- | BaseRep witnesses Basic types. I.e. those types that are instances of both Basic and Iter. --- Pattern matching against a constructor of type BaseRep, determines which base type. For example --- data Tag f k v = Tag (BaseRep f k v) (f k v) --- case Tag MapR x -> -- here we know x :: Map.Map k v -data BaseRep f k v where - MapR :: Basic Map.Map => BaseRep Map.Map k v - SetR :: Basic Sett => BaseRep Sett k () - ListR :: Basic List => BaseRep List k v - SingleR :: Basic Single => BaseRep Single k v - -instance Show (BaseRep f k v) where - show MapR = "Map" - show SetR = "Set" - show ListR = "List" - show SingleR = "Single" - --- ================================================================== --- Now for each Basic type we provide instances --- ================================================================== - --- MapAndSetTypes - --- ========== Basic List ============== - --- | Maps stored as lists. Sorted [(key,value)] pairs, with no duplicate keys. --- The constructor for List is hidden, since it requires some invariants. Use 'fromPairs' to build an initial List. -data List k v where UnSafeList :: Ord k => [(k, v)] -> List k v - -unList :: List k v -> [(k, v)] -unList (UnSafeList xs) = xs - -deriving instance (Eq k, Eq v) => Eq (List k v) - -instance (Show k, Show v) => Show (List k v) where - show (UnSafeList xs) = show xs - -instance Basic List where - addkv (k, v) (UnSafeList xs) comb = UnSafeList (insert xs) - where - insert [] = [(k, v)] - insert ((key, u) : ys) = - case compare key k of - LT -> (key, u) : insert ys - GT -> (k, v) : (key, u) : ys - EQ -> (key, comb u v) : ys - removekey k (UnSafeList xs) = UnSafeList (remove xs) - where - remove [] = [] - remove ((key, u) : ys) = if key == k then ys else (k, u) : (remove ys) - domain (UnSafeList xs) = foldr (\(k, _v) ans -> Set.insert k ans) Set.empty xs - range (UnSafeList xs) = foldr (\(_k, v) ans -> Set.insert v ans) Set.empty xs - -fromPairs :: Ord k => (v -> v -> v) -> [(k, v)] -> List k v -fromPairs combine xs = UnSafeList (normalize combine (sortBy (\x y -> compare (fst x) (fst y)) xs)) - -normalize :: Ord k => (v -> v -> v) -> [(k, v)] -> [(k, v)] -normalize _combine [] = [] -normalize _combine [(k, v)] = [(k, v)] -normalize combine ((k1, v1) : (k2, v2) : more) | k1 == k2 = normalize combine ((k1, combine v1 v2) : more) -normalize combine (p : pairs) = p : normalize combine pairs - -instance Iter List where -- List is the only basic instance with non-linear nxt and lub. It also depends on - nxt (UnSafeList []) = none -- key-value pairs being stored in ascending order. For small Lists (10 or so elements) this is OK. - nxt (UnSafeList ((k, v) : xs)) = one (k, v, UnSafeList xs) - lub k (UnSafeList xs) = case dropWhile (\(key, _v) -> key < k) xs of - [] -> none - ((key, v) : ys) -> one (key, v, UnSafeList ys) - isnull (UnSafeList xs) = null xs - lookup k (UnSafeList xs) = List.lookup k xs - hasNxt (UnSafeList []) = Nothing - hasNxt (UnSafeList (((k, v) : ps))) = Just (k, v, UnSafeList ps) - --- ================ Basic Single =============== - --- | Maps and sets with zero or a single pair. Iteration is trivial. Succeeds at most once. -data Single k v where - Single :: k -> v -> Single k v - Fail :: Single k v - SetSingle :: k -> Single k () - -deriving instance (Eq k, Eq v) => Eq (Single k v) - --- Since we can only store one key, we have to choose who wins --- We use the combine function to decide. (\ old new -> old) keeps --- the orginal value. (\ old new -> new) overwrites the stored value. --- Something else like (\ old new -> old+new) overwrites with a combination - -instance Basic Single where - addkv (k, v) set comb = - case set of - (Single a b) -> Single a (comb b v) - (SetSingle a) -> SetSingle a - Fail -> Single k v - - removekey key (Single a b) = if key == a then Fail else (Single a b) - removekey key (SetSingle a) = if key == a then Fail else (SetSingle a) - removekey _key Fail = Fail - domain (Single a _b) = Set.singleton a - domain (SetSingle a) = Set.singleton a - domain Fail = Set.empty - range (Single _a b) = Set.singleton b - range (SetSingle _a) = Set.singleton () - range Fail = Set.empty - -instance Iter Single where - nxt (Single k v) = Collect (\ans f -> f (k, v, Fail) ans) - nxt (SetSingle k) = Collect (\ans f -> f (k, (), Fail) ans) - nxt Fail = Collect (\ans _f -> ans) - lub key (Single k v) = Collect (\ans f -> if k <= key then f (k, v, Fail) ans else ans) - lub key (SetSingle k) = Collect (\ans f -> if k <= key then f (k, (), Fail) ans else ans) - lub _key Fail = Collect (\ans _f -> ans) - haskey k (SetSingle a) = k == a - haskey k (Single a _b) = k == a - haskey _k Fail = False - isnull Fail = True - isnull _ = False - lookup k (SetSingle a) = if k == a then Just () else Nothing - lookup k (Single a b) = if k == a then Just b else Nothing - lookup _k Fail = Nothing - -instance (Show k, Show v) => Show (Single k v) where - show (Single k v) = "(Single " ++ show k ++ " " ++ show v ++ ")" - show (SetSingle k) = "(SetSingle " ++ show k ++ ")" - show Fail = "Fail" - --- ================= Basic Set ===================== - -data Sett k v where - Sett :: Set.Set k -> Sett k () - -instance Basic Sett where - addpair key _unit (Sett m) = Sett (Set.insert key m) - addkv (k, _unit) (Sett m) _comb = Sett (Set.insert k m) -- We can ignore comb since there is only one function at type: () -> () -> () - removekey k (Sett m) = Sett (Set.delete k m) - domain (Sett xs) = xs - range (Sett _xs) = Set.singleton () - -instance Show key => Show (Sett key ()) where - show (Sett ss) = show ss - -deriving instance Eq k => Eq (Sett k ()) - -instance Iter Sett where - nxt (Sett m) = - Collect - ( \ans f -> if Set.null m then ans else let (k, nextm) = Set.deleteFindMin m in f (k, (), Sett nextm) ans - ) - lub key (Sett m) = - Collect - ( \ans f -> - if Set.null m - then ans - else case splitMemberSet key m of -- NOTE in Log time, we skip over all those tuples in _left - StrictTriple _left True right -> f (key, (), Sett right) ans - StrictTriple _left False right -> - if Set.null right - then ans - else let (k, nextm) = Set.deleteFindMin right in f (k, (), Sett nextm) ans - ) - haskey key (Sett m) = Set.member key m - isnull (Sett x) = Set.null x - lookup k (Sett m) = if Set.member k m then Just () else Nothing - --- ============== Basic Map ========================= - -instance Basic Map.Map where - -- Data.Map uses(\ new old -> ...) while our convention is (\ old new -> ...) - addkv (k, v) m comb = Map.insertWith (flip comb) k v m - removekey k m = Map.delete k m - domain x = Map.keysSet x - range xs = Map.foldrWithKey (\_k v ans -> Set.insert v ans) Set.empty xs - --- emptyc = Map.empty - -instance Iter Map.Map where - nxt m = - Collect - ( \ans f -> - case Map.minViewWithKey m of - Nothing -> ans - Just ((k, v), nextm) -> f (k, v, nextm) ans - ) - lub key m = - Collect - ( \ans f -> - case Map.splitLookup key m of -- NOTE in Log time, we skip over all those tuples in _left - (_left, Just v, right) -> f (key, v, right) ans - (_left, Nothing, right) | Map.null right -> ans - (_left, Nothing, right) -> f (k, v, m3) ans - where - ((k, v), m3) = Map.deleteFindMin right - ) - haskey x m = case Map.lookup x m of Just _ -> True; Nothing -> False - isnull = Map.null - lookup = Map.lookup - --- =========================================================================== - --- | Every iterable type type forms an isomorphism with some Base type. For most --- Base types the isomorphism is the identity in both directions, but for some, --- like List and Sett, the embeddings are not the trivial identities because the --- concrete types are not binary type constructors. The Embed class also allows --- us to add 'newtypes' which encode some Base type to the system. -class Embed concrete base | concrete -> base where - toBase :: concrete -> base - fromBase :: base -> concrete - -instance Ord k => Embed [(k, v)] (List k v) where - toBase xs = UnSafeList (sortBy (\x y -> compare (fst x) (fst y)) xs) - fromBase (UnSafeList xs) = xs - -instance Embed (Set.Set k) (Sett k ()) where - toBase xs = Sett xs - fromBase (Sett xs) = xs - -instance Embed (Map.Map k v) (Map.Map k v) where - toBase xs = xs - fromBase xs = xs - -instance Embed (Single k v) (Single k v) where - toBase xs = xs - fromBase xs = xs - --- Necessary when asking Boolean queries like: (⊆),(∈),(∉) -instance Embed Bool Bool where - toBase xs = xs - fromBase xs = xs diff --git a/libs/set-algebra/src/Control/Iterate/Collect.hs b/libs/set-algebra/src/Control/Iterate/Collect.hs deleted file mode 100644 index aee514a643f..00000000000 --- a/libs/set-algebra/src/Control/Iterate/Collect.hs +++ /dev/null @@ -1,146 +0,0 @@ -{-# LANGUAGE RankNTypes #-} -{-# OPTIONS_GHC -Wno-orphans #-} -{-# OPTIONS_GHC -Wno-unused-imports #-} -{-# OPTIONS_GHC -Wno-unused-matches #-} - -module Control.Iterate.Collect where - -import qualified Control.Applicative as AP -import qualified Control.Monad as CM -import qualified Data.Map.Strict as Map - --- ========================================================================= --- Sample continuation monad to study. We don't actually use this monad, but --- we put it here since it is the simplest continuation monad, and studying --- it, helped me define the Collect monad. - -newtype Cont ans x = Cont {runCont :: (x -> ans) -> ans} -- ans is the final result type of the whole computation - -instance Functor (Cont ans) where - fmap f (Cont k2) = Cont (\k1 -> k2 (k1 . f)) - -instance Applicative (Cont ans) where - pure x = Cont (\ret -> ret x) - f <*> x = do g <- f; y <- x; pure (g y) - -instance Monad (Cont r) where - Cont c >>= f = Cont $ \k -> c (\a -> runCont (f a) k) -- i.e. c >>= f = \k -> c (\a -> f a k) - --- ======================================================================== --- Now we want to make the following, more complicated continuation a Monad --- Here the answer type is completely abstract. - -newtype Collect tuple = Collect {runCollect :: forall ans. ans -> (tuple -> ans -> ans) -> ans} - -instance Functor Collect where - fmap f (Collect g) = Collect (\x c -> g x (\t a -> c (f t) a)) - --- Playing type tetris find this term ^----------------------^ --- given --- f:: t -> s --- g:: a -> (t -> a -> a) -> a --- x:: a --- c:: s -> a -> a - -instance Applicative Collect where - pure x = Collect (\ans f -> f x ans) - f <*> x = do g <- f; y <- x; pure (g y) - -instance Monad Collect where - (Collect g) >>= f = Collect (\x c -> g x (\t a -> runCollect (f t) a c)) - --- Playing type tetris find this term ^--------------------------------^ --- given --- g:: a -> (t -> a -> a) -> a --- f:: t -> (Collect s) --- x:: a --- c:: (s -> a -> a) - -instance Foldable Collect where - foldr f z (Collect g) = g z f - --- =========================================================================== --- Operations on the collect Monad. - --- | A (Collect t) is completely agnostic over how 't's are beging collected. --- We can make this abstraction concrete by using fixAction. -fixAction :: Collect tuple -> ans -> (tuple -> ans -> ans) -> ans -fixAction = runCollect - -mapify :: Ord a => Collect (a, b) -> Map.Map a b -mapify m = runCollect m Map.empty (\(a, b) ans -> Map.insert a b ans) - -listify :: Collect (a, b) -> [(a, b)] -listify m = runCollect m [] (:) - -count :: Collect (a, b) -> Int -count m = runCollect m 0 (\t n -> n + 1) - --- | Here are several ways to add a new t to what is being collected. - --- | The `one` and `none` interface are used when we want collections with 0 or 1 elements -one :: t -> Collect t -one t = Collect (\a f -> f t a) - -none :: Collect t -none = Collect (\a f -> a) - --- | The `front` and `rear` interface can add to either end of the sequence (both in constant time) -front :: t -> Collect t -> Collect t -front t (Collect g) = Collect (\a f -> g (f t a) f) - -rear :: Collect t -> t -> Collect t -rear (Collect g) t = Collect (\a f -> f t (g a f)) - --- | Conditional collecting -when :: Bool -> Collect () -when True = Collect (\ans f -> f () ans) -when False = Collect (\ans f -> ans) - -takeC :: Int -> Collect t -> [t] -takeC n (Collect f) = fst (f ([], n) next) - where - next x (xs, 0) = (xs, 0) - next x (xs, m) = (x : xs, m - 1) - -isempty :: Collect t -> Bool -isempty col = runCollect col True (\t a -> False) - -nonempty :: Collect t -> Bool -nonempty col = runCollect col False (\t a -> True) - -hasElem :: Collect t -> Maybe t -hasElem col = runCollect col Nothing (\t _ -> Just t) - --- | Even though a (Collect t) is a function, if we can (Show t), we can pick an action --- that collects all the shown t, and turn them into a big multi-line string. -instance Show t => Show (Collect t) where - show c2 = unlines (runCollect c2 [] (\t ans -> show t : ans)) - --- ======================================================= --- Collection with mplus - -newtype ColPlus tuple = ColPlus - { runColPlus :: forall ans. ans -> (tuple -> ans -> ans) -> (ans -> ans -> ans) -> ans - } - -instance Functor ColPlus where - fmap f (ColPlus g) = ColPlus (\x c m -> g x (\t a -> c (f t) a) m) - -instance Applicative ColPlus where - pure x = ColPlus (\ans f m -> f x ans) - f <*> x = do g <- f; y <- x; pure (g y) - -instance Monad ColPlus where - (ColPlus g) >>= f = ColPlus (\x c m -> g x (\t a -> runColPlus (f t) a c m) m) - -runPlus :: Monoid a => ColPlus t -> a -> (t -> a -> a) -> a -runPlus (ColPlus g) a f = g a f mappend - -instance AP.Alternative ColPlus where - empty = ColPlus (\a h m -> a) - (<|>) (ColPlus f) (ColPlus g) = ColPlus (\a h m -> m (f a h m) (g a h m)) - -instance CM.MonadPlus ColPlus where - mzero = ColPlus (\a h m -> a) - mplus (ColPlus f) (ColPlus g) = ColPlus (\a h m -> m (f a h m) (g a h m)) diff --git a/libs/set-algebra/src/Control/Iterate/Exp.hs b/libs/set-algebra/src/Control/Iterate/Exp.hs deleted file mode 100644 index a95ee156952..00000000000 --- a/libs/set-algebra/src/Control/Iterate/Exp.hs +++ /dev/null @@ -1,667 +0,0 @@ -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE FunctionalDependencies #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - --- | This module provides deep embeddings of three things --- 1) Exp is a deep embedding of expressions over Sets and Maps as a typed data structure. --- 2) Fun is a deep embedding of symbolic functions --- 3) Query is a deep embedding of queries over Sets and Maps. It can be thought of as --- a low-level compiled form of Exp -module Control.Iterate.Exp where - -import Control.Iterate.BaseTypes ( - BaseRep (..), - Basic (..), - Iter (..), - List (..), - Sett (..), - Single (..), - fromPairs, - ) -import Control.Iterate.Collect (Collect (..), hasElem, none, one) -import Data.List (sortBy) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import qualified Data.Set as Set -import Text.PrettyPrint.ANSI.Leijen (Doc, align, parens, text, vsep, (<+>)) -import Prelude hiding (lookup) - --- $Deep embedding - --- ================================================================================================ --- PART 1. Exp over sets and maps --- ================================================================================================ - --- | The self typed GADT: Exp, that encodes the shape of Set expressions. A deep embedding. --- Exp is a typed Symbolic representation of queries we may ask. It allows us to introspect a query --- The strategy is to --- --- 1. Define Exp so all queries can be represented. --- 2. Define smart constructors that "parse" the surface syntax, and build a typed Exp --- 3. Write an evaluate function: eval:: Exp t -> t --- 4. "eval" can introspect the code and apply efficient domain and type specific translations --- 5. Use the (Iter f) class to evaluate some Exp that can benefit from its efficient nature. -data Exp t where - Base :: (Ord k, Basic f, Iter f) => BaseRep f k v -> f k v -> Exp (f k v) - Dom :: Ord k => Exp (f k v) -> Exp (Sett k ()) - Rng :: (Ord k, Ord v) => Exp (f k v) -> Exp (Sett v ()) - DRestrict :: (Ord k, Iter g) => Exp (g k ()) -> Exp (f k v) -> Exp (f k v) - DExclude :: (Ord k, Iter g) => Exp (g k ()) -> Exp (f k v) -> Exp (f k v) - RRestrict :: (Ord k, Iter g, Ord v) => Exp (f k v) -> Exp (g v ()) -> Exp (f k v) - RExclude :: (Ord k, Iter g, Ord v) => Exp (f k v) -> Exp (g v ()) -> Exp (f k v) - Elem :: (Ord k, Iter g, Show k) => k -> Exp (g k ()) -> Exp Bool - NotElem :: (Ord k, Iter g, Show k) => k -> Exp (g k ()) -> Exp Bool - Intersect :: (Ord k, Iter f, Iter g) => Exp (f k v) -> Exp (g k u) -> Exp (Sett k ()) - Subset :: (Ord k, Iter f, Iter g) => Exp (f k v) -> Exp (g k u) -> Exp Bool - SetDiff :: (Ord k, Iter f, Iter g) => Exp (f k v) -> Exp (g k u) -> Exp (f k v) - UnionOverrideLeft :: (Show k, Show v, Ord k) => Exp (f k v) -> Exp (g k v) -> Exp (f k v) - -- If 'k' appears in both, then choose the 'v' from the left 'f' - -- The (Show k, Show v) supports logging errors if there are duplicate keys. - UnionPlus :: (Ord k, Monoid n) => Exp (f k n) -> Exp (g k n) -> Exp (f k n) - UnionOverrideRight :: Ord k => Exp (f k v) -> Exp (g k v) -> Exp (f k v) - -- If 'k' appears in both, then choose the 'v' from the right 'g' - Singleton :: Ord k => k -> v -> Exp (Single k v) - SetSingleton :: Ord k => k -> Exp (Single k ()) - KeyEqual :: (Ord k, Iter f, Iter g) => Exp (f k v) -> Exp (g k u) -> Exp Bool - -instance Show (Exp t) where - show (Base MapR _) = "Map?" - show (Base SetR _) = "Set?" - show (Base ListR _) = "List?" - show (Base SingleR (Single _ _)) = "Single(_ _)" - show (Base SingleR (SetSingle _)) = "SetSingle(_)" - show (Base rep _x) = show rep ++ "?" - show (Dom x) = "(dom " ++ show x ++ ")" - show (Rng x) = "(rng " ++ show x ++ ")" - show (DRestrict x y) = "(" ++ show x ++ " ◁ " ++ show y ++ ")" - show (DExclude x y) = "(" ++ show x ++ " ⋪ " ++ show y ++ ")" - show (RRestrict x y) = "(" ++ show x ++ " ▷ " ++ show y ++ ")" - show (RExclude x y) = "(" ++ show x ++ " ⋫ " ++ show y ++ ")" - show (Elem k x) = "(" ++ show k ++ " ∈ " ++ show x ++ ")" - show (NotElem k x) = "(" ++ show k ++ " ∉ " ++ show x ++ ")" - show (Intersect x y) = "(" ++ show x ++ " ∩ " ++ show y ++ ")" - show (SetDiff x y) = "(" ++ show x ++ " ➖ " ++ show y ++ ")" - show (Subset x y) = "(" ++ show x ++ " ⊆ " ++ show y ++ ")" - show (UnionOverrideLeft x y) = "(" ++ show x ++ " ∪ " ++ show y ++ ")" - show (UnionPlus x y) = "(" ++ show x ++ " ∪+ " ++ show y ++ ")" - show (UnionOverrideRight x y) = "(" ++ show x ++ " ⨃ " ++ show y ++ ")" - show (Singleton _ _) = "(singleton _ _ )" - show (SetSingleton _) = "(setSingleton _ )" - show (KeyEqual x y) = "(" ++ show x ++ " ≍ " ++ show y ++ ")" - --- ================================================================= - --- | Basic types are those that can be tranformed into Exp. --- The HasExp class, encodes how to lift a Basic type into an Exp. --- The function 'toExp' will build a typed Exp for that Basic type. --- This will be really usefull in the smart constructors. -class HasExp s t | s -> t where - toExp :: s -> Exp t - --- | The simplest Base type is one that is already an Exp -instance HasExp (Exp t) t where - toExp x = x - -instance Ord k => HasExp (Map k v) (Map k v) where - toExp x = Base MapR x - -instance Ord k => HasExp (Set.Set k) (Sett k ()) where - toExp x = Base SetR (Sett x) - -instance Ord k => HasExp [(k, v)] (List k v) where - toExp l = Base ListR (UnSafeList (sortBy (\x y -> compare (fst x) (fst y)) l)) - -instance Ord k => HasExp (Single k v) (Single k v) where - toExp x = Base SingleR x - -type OrdAll coin cred pool ptr k = (Ord k, Ord coin, Ord cred, Ord ptr, Ord pool) - --- ========================================================================================= --- When we build an Exp, we want to make sure all Sets with one element become (SetSingleton x) --- so we use these 'smart' constructors. - -dRestrict :: (Ord k, Iter g) => Exp (g k ()) -> Exp (f k v) -> Exp (f k v) -dRestrict (Base SetR (Sett x)) y | Set.size x == 1 = DRestrict (SetSingleton (Set.elemAt 0 x)) y -dRestrict x y = DRestrict x y - -rRestrict :: (Ord k, Iter g, Ord v) => Exp (f k v) -> Exp (g v ()) -> Exp (f k v) -rRestrict y (Base SetR (Sett x)) | Set.size x == 1 = RRestrict y (SetSingleton (Set.elemAt 0 x)) -rRestrict y x = RRestrict y x - -dExclude :: (Ord k, Iter g) => Exp (g k ()) -> Exp (f k v) -> Exp (f k v) -dExclude (Base SetR (Sett x)) y | Set.size x == 1 = DExclude (SetSingleton (Set.elemAt 0 x)) y -dExclude x y = DExclude x y - -rExclude :: (Ord k, Iter g, Ord v) => Exp (f k v) -> Exp (g v ()) -> Exp (f k v) -rExclude y (Base SetR (Sett x)) | Set.size x == 1 = RExclude y (SetSingleton (Set.elemAt 0 x)) -rExclude y x = RExclude y x - --- ========================================================================================== --- Smart constructors build typed Exp with real values at the leaves (the Base constuctor) - --- setoperators - --- (⊆), --- (∩), - --- | domain of a map or element type of a set. -dom :: (Ord k, HasExp s (f k v)) => s -> Exp (Sett k ()) -dom x = Dom (toExp x) - --- | range of a map or () for a set. -rng :: (Ord k, Ord v) => HasExp s (f k v) => s -> Exp (Sett v ()) -rng x = Rng (toExp x) - --- | domain restrict. -(◁), (<|), drestrict :: (Ord k, HasExp s1 (Sett k ()), HasExp s2 (f k v)) => s1 -> s2 -> Exp (f k v) -(◁) x y = dRestrict (toExp x) (toExp y) -drestrict = (◁) -(<|) = drestrict - --- | domain exclude -(⋪), dexclude :: (Ord k, Iter g, HasExp s1 (g k ()), HasExp s2 (f k v)) => s1 -> s2 -> Exp (f k v) -(⋪) x y = dExclude (toExp x) (toExp y) -dexclude = (⋪) - --- | range restrict -(▷) - , (|>) - , rrestrict :: - (Ord k, Iter g, Ord v, HasExp s1 (f k v), HasExp s2 (g v ())) => s1 -> s2 -> Exp (f k v) -(▷) x y = rRestrict (toExp x) (toExp y) -rrestrict = (▷) -(|>) = (▷) - --- | range exclude -(⋫) - , rexclude :: - (Ord k, Iter g, Ord v, HasExp s1 (f k v), HasExp s2 (g v ())) => s1 -> s2 -> Exp (f k v) -(⋫) x y = rExclude (toExp x) (toExp y) -rexclude = (⋫) - --- | element of the domain -(∈) :: (Show k, Ord k, Iter g, HasExp s (g k ())) => k -> s -> Exp Bool -(∈) x y = Elem x (toExp y) - --- | not an element of the domain -(∉), notelem :: (Show k, Ord k, Iter g, HasExp s (g k ())) => k -> s -> Exp Bool -(∉) x y = NotElem x (toExp y) -notelem = (∉) - --- | union two maps or sets. In the case of a map, keep the pair from the left, if the two have common keys. -(∪) - , unionleft :: - (Show k, Show v, Ord k, HasExp s1 (f k v), HasExp s2 (g k v)) => s1 -> s2 -> Exp (f k v) -(∪) x y = UnionOverrideLeft (toExp x) (toExp y) -unionleft = (∪) - --- | union two maps or sets. In the case of a map, keep the pair from the right, if the two have common keys. -(⨃), unionright :: (Ord k, HasExp s1 (f k v), HasExp s2 (g k v)) => s1 -> s2 -> Exp (f k v) -(⨃) x y = UnionOverrideRight (toExp x) (toExp y) -unionright = (⨃) - --- | union two maps or sets. In the case of a map, combine values with monoid (<>), if the two have common keys. -(∪+) - , unionplus :: - (Ord k, Monoid n, HasExp s1 (f k n), HasExp s2 (g k n)) => s1 -> s2 -> Exp (f k n) -(∪+) x y = UnionPlus (toExp x) (toExp y) -unionplus = (∪+) - --- | create a singleton map. -singleton :: Ord k => k -> v -> Exp (Single k v) -singleton k v = Singleton k v - --- | create a singleton set. -setSingleton :: Ord k => k -> Exp (Single k ()) -setSingleton k = SetSingleton k - --- | intersect two sets, or the intersection of the domain of two maps. -(∩) - , intersect :: - (Ord k, Iter f, Iter g, HasExp s1 (f k v), HasExp s2 (g k u)) => s1 -> s2 -> Exp (Sett k ()) -(∩) x y = Intersect (toExp x) (toExp y) -intersect = (∩) - --- | @(subset x y)@. is the domain of @x@ a subset of the domain of @y@. -(⊆), subset :: (Ord k, Iter f, Iter g, HasExp s1 (f k v), HasExp s2 (g k u)) => s1 -> s2 -> Exp Bool -(⊆) x y = Subset (toExp x) (toExp y) -subset = (⊆) - --- | @(x ➖ y)@ Everything in @x@ except for those pairs in @x@ where the domain of @x@ is an element of the domain of @y@. -(➖) - , setdiff :: - (Ord k, Iter f, Iter g, HasExp s1 (f k v), HasExp s2 (g k u)) => s1 -> s2 -> Exp (f k v) -(➖) x y = SetDiff (toExp x) (toExp y) -setdiff = (➖) - --- | Do two maps (or sets) have exactly the same domain. -(≍), keyeq :: (Ord k, Iter f, Iter g, HasExp s1 (f k v), HasExp s2 (g k u)) => s1 -> s2 -> Exp Bool -(≍) x y = KeyEqual (toExp x) (toExp y) -keyeq = (≍) - --- ========================================================================================== --- Part 2. Symbolic functions --- =========================================================================================== - --- | An symbolic function Fun has two parts, a Lam that can be analyzed, and real function that can be applied -data Fun t = Fun (Lam t) t - --- | We can observe a Fun by showing the Lam part. -instance Show (Fun t) where - show (Fun lam _fun) = show lam - --- | Symbolc functions (Fun) are data, that can be pattern matched over. They --- 1) Represent a wide class of binary functions that are used in translating the SetAlgebra --- 2) Turned into a String so they can be printed --- 3) Turned into the function they represent. --- 4) Composed into bigger functions --- 5) Symbolically symplified --- Here we implement Symbolic Binary functions with upto 4 variables, which is enough for this use --- ================================================================================================= -data Pat env t where - P1 :: Pat (d, c, b, a) d - P2 :: Pat (d, c, b, a) c - P3 :: Pat (d, c, b, a) b - P4 :: Pat (d, c, b, a) a - PPair :: Pat (d, c, b, a) a -> Pat (d, c, b, a) b -> Pat (d, c, b, a) (a, b) - -data Expr env t where - X1 :: Expr (d, c, b, a) d - X2 :: Expr (d, c, b, a) c - X3 :: Expr (d, c, b, a) b - X4 :: Expr (d, c, b, a) a - HasKey :: (Iter f, Ord k) => Expr e k -> (f k v) -> Expr e Bool - Neg :: Expr e Bool -> Expr e Bool - Ap :: Lam (a -> b -> c) -> Expr e a -> Expr e b -> Expr e c - EPair :: Expr e a -> Expr e b -> Expr e (a, b) - FST :: Expr e (a, b) -> Expr e a - SND :: Expr e (a, b) -> Expr e b - Lit :: Show t => t -> Expr env t - --- | A typed deep embedding of Haskell functions with type @t@. --- Be carefull, no pattern P1, P2, P3, P4 should appear MORE THAN ONCE in a Lam. -data Lam t where - Lam :: Pat (d, c, b, a) t -> Pat (d, c, b, a) s -> Expr (d, c, b, a) v -> Lam (t -> s -> v) - Add :: Num n => Lam (n -> n -> n) - Cat :: Monoid m => Lam (m -> m -> m) - Eql :: Eq t => Lam (t -> t -> Bool) - Both :: Lam (Bool -> Bool -> Bool) - Lift :: (a -> b -> c) -> Lam (a -> b -> c) -- For use n the tests only! - --- ============= Printing in 𝜷-Normal Form ========================= - -type StringEnv = (String, String, String, String) - -bindE :: Pat (a, b, c, d) t -> Expr (w, x, y, z) t -> StringEnv -> StringEnv -bindE P1 v (e@(_, c, b, a)) = (showE e v, c, b, a) -bindE P2 v (e@(d, _, b, a)) = (d, showE e v, b, a) -bindE P3 v (e@(d, c, _, a)) = (d, c, showE e v, a) -bindE P4 v (e@(d, c, b, _)) = (d, c, b, showE e v) -bindE (PPair p1 p2) (EPair e1 e2) env = bindE p1 e1 (bindE p2 e2 env) -bindE (PPair p1 p2) e env = bindE p2 (SND e) (bindE p1 (FST e) env) - -showE :: StringEnv -> (Expr (a, b, c, d) t) -> String -showE (x, _, _, _) X1 = x -showE (_, y, _, _) X2 = y -showE (_, _, z, _) X3 = z -showE (_, _, _, w) X4 = w -showE e (EPair a b) = "(" ++ showE e a ++ "," ++ showE e b ++ ")" -showE e (Ap (Lam p1 p2 expr) x y) = showE (bindE p2 y (bindE p1 x e)) expr -showE e (FST f) = "(fst " ++ showE e f ++ ")" -showE e (SND f) = "(snd " ++ showE e f ++ ")" -showE e (Ap oper a b) = "(" ++ showE e a ++ showL e oper ++ showE e b ++ ")" -showE e (HasKey k _datum) = "(haskey " ++ showE e k ++ " ?)" -showE e (Neg x) = "(not " ++ showE e x ++ ")" -showE _ (Lit n) = show n - -showL :: StringEnv -> Lam t -> String -showL e (Lam p1 p2 expr) = "\\ " ++ showP e p1 ++ " " ++ showP e p2 ++ " -> " ++ showE e expr -showL _e Add = " + " -showL _e Cat = " <> " -showL _e Eql = " == " -showL _e Both = " && " -showL _e (Lift _f) = "" - -showP :: StringEnv -> (Pat any t) -> String -showP (x, _, _, _) P1 = x -showP (_, y, _, _) P2 = y -showP (_, _, z, _) P3 = z -showP (_, _, _, w) P4 = w -showP env (PPair p1 p2) = "(" ++ showP env p1 ++ "," ++ showP env p2 ++ ")" - --- turn an Expr into a String -instance Show (Expr (a, b, c, d) t) where - show x = showE ("X1", "X2", "X3", "X4") x - --- turn a @Lam@ into a String. -instance Show (Lam t) where - show x = showL ("X1", "X2", "X3", "X4") x - --- ====================================================================================== --- Operations we use to manipulate Fun. Some simple ones, and some ways to compose them. --- The great thing is the types completely decide what the operations do. --- ====================================================================================== - --- Used in projectStep, chainStep, andPStep, orStep and guardStep -apply :: Fun t -> t -apply (Fun _e f) = f - --- Used in compile (UnionOverrideLeft case) -first :: Fun (v -> s -> v) -first = Fun (Lam P1 P2 X1) (\x _y -> x) - --- Used in compile (UnionOverrideRight case) -second :: Fun (v -> s -> s) -second = Fun (Lam P1 P2 X2) (\_x y -> y) - --- Used in compile (UnionPlus case) -plus :: Monoid t => Fun (t -> t -> t) -plus = (Fun Cat (<>)) - -eql :: Eq t => Fun (t -> t -> Bool) -eql = (Fun Eql (==)) - -constant :: Show c => c -> Fun (a -> b -> c) -constant c = Fun (Lam P1 P2 (Lit c)) (\_x _y -> c) - --- Used in compile (RExclude RRestrict cases) -rngElem :: (Ord rng, Iter f) => f rng v -> Fun (dom -> rng -> Bool) -rngElem realset = Fun (Lam P1 P2 (HasKey X2 realset)) (\_x y -> haskey y realset) -- x is ignored and realset is supplied - -domElem :: (Ord dom, Iter f) => f dom v -> Fun (dom -> rng -> Bool) -domElem realset = Fun (Lam P1 P2 (HasKey X1 realset)) (\x _y -> haskey x realset) -- y is ignored and realset is supplied - -rngFst :: Fun (x -> (a, b) -> a) -rngFst = Fun (Lam P1 (PPair P2 P3) X2) (\_x (a, _b) -> a) - -rngSnd :: Fun (x -> (a, b) -> b) -rngSnd = Fun (Lam P1 (PPair P2 P3) X3) (\_x y -> snd y) - -compose1 :: Fun (t1 -> t2 -> t3) -> Fun (t1 -> t4 -> t2) -> Fun (t1 -> t4 -> t3) -compose1 (Fun e1 f1) (Fun e2 f2) = Fun (Lam P1 P2 (Ap e1 X1 (Ap e2 X1 X2))) (\a b -> f1 a (f2 a b)) - -compSndL :: Fun (k -> (a, b) -> c) -> Fun (k -> d -> a) -> Fun (k -> (d, b) -> c) -compSndL (Fun m mf) (Fun g mg) = Fun (Lam P1 (PPair P2 P3) (Ap m X1 (EPair (Ap g X1 X2) X3))) (\x (a, b) -> mf x (mg x a, b)) - -compSndR :: Fun (k -> (a, b) -> c) -> Fun (k -> d -> b) -> Fun (k -> (a, d) -> c) -compSndR (Fun m mf) (Fun g mg) = (Fun (Lam P1 (PPair P2 P3) (Ap m X1 (EPair X2 (Ap g X1 X3)))) (\x (a, b) -> mf x (a, mg x b))) - -compCurryR :: Fun (k -> (a, b) -> d) -> Fun (a -> c -> b) -> Fun (k -> (a, c) -> d) -compCurryR (Fun ef f) (Fun eg g) = Fun (Lam P1 (PPair P2 P3) (Ap ef X1 (EPair X2 (Ap eg X2 X3)))) (\x (a, b) -> f x (a, g a b)) - -nEgate :: Fun (k -> v -> Bool) -> Fun (k -> v -> Bool) -nEgate (Fun ef f) = Fun (Lam P1 P2 (Neg (Ap ef X1 X2))) (\x y -> not (f x y)) - -always :: Fun (a -> b -> Bool) -always = constant True - -both :: Fun (a -> b -> Bool) -> Fun (a -> b -> Bool) -> Fun (a -> b -> Bool) -both (Fun ef e) (Fun ff f) = Fun (Lam P1 P2 (Ap Both (Ap ef X1 X2) (Ap ff X1 X2))) (\a b -> (e a b) && (f a b)) - -lift :: (a -> b -> c) -> Fun (a -> b -> c) -- This is used in the tests, not good to use it elsewhere. -lift f = Fun (Lift f) f - --- ============================================================== --- Part 3. Queries, a compiled form of Exp --- ============================================================== - --- ================================================================================= - --- | Query is a single datatype that describes a low-level language that can be --- used to build compound iterators, from other iterators. -data Query k v where - BaseD :: (Iter f, Ord k) => BaseRep f k v -> f k v -> Query k v - ProjectD :: Ord k => Query k v -> Fun (k -> v -> u) -> Query k u - AndD :: Ord k => Query k v -> Query k w -> Query k (v, w) - ChainD :: (Ord k, Ord v) => Query k v -> Query v w -> Fun (k -> (v, w) -> u) -> Query k u - AndPD :: Ord k => Query k v -> Query k u -> Fun (k -> (v, u) -> w) -> Query k w - OrD :: Ord k => Query k v -> Query k v -> Fun (v -> v -> v) -> Query k v - GuardD :: Ord k => Query k v -> Fun (k -> v -> Bool) -> Query k v - DiffD :: Ord k => Query k v -> Query k u -> Query k v - --- ====================================================================================== --- low-level smart constructors for Query. These apply semantic preserving rewrites when applicable --- ====================================================================================== - -smart :: Bool -smart = True -- for debugging purposes, this can be set to False, in which case no rewrites occurr. - -projD :: Ord k => Query k v -> Fun (k -> v -> u) -> Query k u -projD x y = case (x, y) of - (ProjectD f p, q) | smart -> projD f (compose1 q p) - (AndD f g, q) | smart -> andPD f g (compose1 q second) - (AndPD f g p, q) | smart -> andPD f g (compose1 q p) - (f, p) -> ProjectD f p - -andD :: Ord k => Query k v1 -> Query k v2 -> Query k (v1, v2) -andD (ProjectD f p) g | smart = AndPD f g (compSndL second p) -andD f (ProjectD g p) | smart = AndPD f g (compSndR second p) -andD f g = AndD f g - -andPD :: Ord k => Query k v1 -> Query k u -> Fun (k -> (v1, u) -> v) -> Query k v -andPD (ProjectD f p) g q | smart = andPD f g (compSndL q p) -andPD f g p = AndPD f g p - -chainD :: (Ord k, Ord v) => Query k v -> Query v w -> Fun (k -> (v, w) -> u) -> Query k u -chainD f (ProjectD g p) q | smart = chainD f g (compCurryR q p) -chainD f g p = ChainD f g p - -guardD :: Ord k => Query k v -> Fun (k -> v -> Bool) -> Query k v -guardD (GuardD q1 test1) test2 | smart = GuardD q1 (both test1 test2) -guardD qry test = GuardD qry test - --- ======================================================================================= --- Finally we make high-level smart constructors for Query, so we can lift un-embedded Base types --- into Queries, so programmers don't need to know about List and Sett and other anomalies. --- Note that these high-level smart constructors are in 1-to-1 correspondance with the low-level --- ones, except the low-level ones take Querys, and the high-level ones just take data, lift the --- data to Query, and then apply the low-level smart constructors. - --- Create a projection Query -projectQ :: (Ord k, HasQuery c k v) => c -> Fun (k -> v -> u) -> Query k u -projectQ q fun = ProjectD (query q) fun - --- Conjoin two Querys -andQ :: - (Ord k, HasQuery concrete1 k v, HasQuery concrete2 k w) => concrete1 -> concrete2 -> Query k (v, w) -andQ x y = AndD (query x) (query y) - --- Disjoin two Queries -orQ :: - (Ord k, HasQuery concrete1 k v, HasQuery concrete2 k v) => - concrete1 -> - concrete2 -> - Fun (v -> v -> v) -> - Query k v -orQ x y comb = OrD (query x) (query y) comb - -chainQ :: - (Ord k, Ord v, HasQuery concrete1 k v, HasQuery concrete2 v w) => - concrete1 -> - concrete2 -> - Fun (k -> (v, w) -> u) -> - Query k u -chainQ x y p = ChainD (query x) (query y) p - -andPQ :: - (Ord k, HasQuery concrete1 k v, HasQuery concrete2 k u) => - concrete1 -> - concrete2 -> - Fun (k -> (v, u) -> w) -> - Query k w -andPQ x y p = AndPD (query x) (query y) p - -guardQ :: - (Ord k, HasQuery concrete k v) => - concrete -> - Fun (k -> v -> Bool) -> - Query k v -guardQ x p = GuardD (query x) p - --- Don't know why this won't type check --- diffQ :: (Ord k, HasQuery concrete1 k v, HasQuery concrete2 k u) => concrete1 -> concrete2 -> Query k v --- diffQ = \ x y -> DiffD (query x) (query y) -diffQ :: - forall k v u concrete1 concrete2. - (Ord k, HasQuery (concrete1 k v) k v, HasQuery (concrete2 k u) k u) => - (concrete1 k v) -> - (concrete2 k u) -> - Query k v -diffQ x y = DiffD (query x) (query @(concrete2 k u) @k @u y) - -class HasQuery concrete k v where - query :: concrete -> Query k v - -instance HasQuery (Query k v) k v where - query xs = xs - -instance Ord k => HasQuery [(k, v)] k v where - query xs = BaseD ListR (fromPairs (\l _r -> l) xs) - -instance Ord k => HasQuery (Set.Set k) k () where - query xs = BaseD SetR (Sett xs) - -instance Ord k => HasQuery (Map.Map k v) k v where - query xs = BaseD MapR xs - -instance Ord k => HasQuery (Single k v) k v where - query xs = BaseD SingleR xs - --- ================================================= --- Show Instance of Query - -ppQuery :: Query k v -> Doc -ppQuery (BaseD rep _f) = parens $ text (show rep) -ppQuery (ProjectD f p) = parens $ text "Proj" <+> align (vsep [ppQuery f, text (show p)]) -ppQuery (AndD f g) = parens $ text "And" <+> align (vsep [ppQuery f, ppQuery g]) -ppQuery (ChainD f g p) = parens $ text "Chain" <+> align (vsep [ppQuery f, ppQuery g, text (show p)]) -ppQuery (OrD f g p) = parens $ text "Or" <+> align (vsep [ppQuery f, ppQuery g, text (show p)]) -ppQuery (GuardD f p) = parens $ text "Guard" <+> align (vsep [ppQuery f, text (show p)]) -ppQuery (DiffD f g) = parens $ text "Diff" <+> align (vsep [ppQuery f, ppQuery g]) -ppQuery (AndPD f g p) = parens $ text "AndP" <+> align (vsep [ppQuery f, ppQuery g, text (show p)]) - -instance Show (Query k v) where - show x = show (ppQuery x) - --- ================================================= --- An instance of Iter can be made for Query. - -nxtQuery :: Query a b -> Collect (a, b, Query a b) -nxtQuery (BaseD rep x) = do (k, v, x2) <- nxt x; one (k, v, BaseD rep x2) -nxtQuery (ProjectD x p) = projStep nxtQuery p x -nxtQuery (AndD f g) = do triple1 <- nxtQuery f; triple2 <- nxtQuery g; andStep triple1 triple2 -nxtQuery (ChainD f g p) = do trip <- nxtQuery f; chainStep trip g p -nxtQuery (AndPD f g p) = do triple1 <- nxtQuery f; triple2 <- nxtQuery g; andPstep triple1 triple2 p -nxtQuery (OrD f g comb) = orStep nxtQuery f g comb -nxtQuery (GuardD f p) = guardStep nxtQuery p f -nxtQuery (DiffD f g) = do trip <- nxtQuery f; diffStep trip g - -lubQuery :: Ord a => a -> Query a b -> Collect (a, b, Query a b) -lubQuery key (BaseD rep x) = do (k, v, x2) <- lub key x; one (k, v, BaseD rep x2) -lubQuery key (ProjectD x p) = projStep (lubQuery key) p x -lubQuery key (AndD f g) = do triple1 <- lubQuery key f; triple2 <- lubQuery key g; andStep triple1 triple2 -lubQuery key (ChainD f g p) = do trip <- lubQuery key f; chainStep trip g p -lubQuery key (AndPD f g p) = do triple1 <- lubQuery key f; triple2 <- lubQuery key g; andPstep triple1 triple2 p -lubQuery key (OrD f g comb) = orStep (lubQuery key) f g comb -lubQuery key (GuardD f p) = guardStep (lubQuery key) p f -lubQuery key (DiffD f g) = do trip <- lubQuery key f; diffStep trip g - -instance Iter Query where - nxt = nxtQuery - lub = lubQuery - --- ============================================================================================== --- To make the Iter instance for Query, we need semantic operators for each of the constructors --- of Query. These semantic operators are "step" functions for each constructor. --- ============================================================================================== - --- ==== Project ==== -projStep :: - Ord k => - (t -> Collect (k, v, Query k v)) -> - Fun (k -> v -> u) -> - t -> - Collect (k, u, Query k u) -projStep next p f = do (k, v, f') <- next f; one (k, apply p k v, ProjectD f' p) - --- ===== And = ==== -andStep :: - Ord a => - (a, b1, Query a b1) -> - (a, b2, Query a b2) -> - Collect (a, (b1, b2), Query a (b1, b2)) -andStep (ftrip@(k1, v1, f1)) (gtrip@(k2, v2, g2)) = - case compare k1 k2 of - EQ -> one (k1, (v1, v2), AndD f1 g2) - LT -> do ftrip' <- lubQuery k2 f1; andStep ftrip' gtrip - GT -> do gtrip' <- lubQuery k1 g2; andStep ftrip gtrip' - --- ==== Chain ==== -chainStep :: - (Ord b, Ord a) => - (a, b, Query a b) -> - Query b w -> - Fun (a -> (b, w) -> u) -> - Collect (a, u, Query a u) -chainStep (d, r1, f1) g comb = - case lookup r1 g of -- recall that the values 'r1' from f, are not iterated in ascending order, only the keys 'd' are ascending - Just w -> one (d, apply comb d (r1, w), ChainD f1 g comb) - Nothing -> do trip <- nxtQuery f1; chainStep trip g comb - --- ==== And with Projection ==== -andPstep :: - Ord a => - (a, b1, Query a b1) -> - (a, b2, Query a b2) -> - Fun (a -> (b1, b2) -> w) -> - Collect (a, w, Query a w) -andPstep (ftrip@(k1, v1, f1)) (gtrip@(k2, v2, g2)) p = - case compare k1 k2 of - EQ -> one (k1, (apply p k1 (v1, v2)), AndPD f1 g2 p) - LT -> do ftrip' <- lubQuery k2 f1; andPstep ftrip' gtrip p - GT -> do gtrip' <- lubQuery k1 g2; andPstep ftrip gtrip' p - --- ==== Or with combine ==== -orStep :: - (Ord k, Ord a) => - (Query k v -> Collect (a, v, Query k v)) -> - Query k v -> - Query k v -> - Fun (v -> v -> v) -> - Collect (a, v, Query k v) -orStep next f g comb = - case (hasElem (next f), hasElem (next g)) of -- We have to be careful, because if only one has a nxt, there is still an answer - (Nothing, Nothing) -> none - (Just (k1, v1, f1), Nothing) -> one (k1, v1, OrD f1 g comb) - (Nothing, Just (k1, v1, g1)) -> one (k1, v1, OrD f g1 comb) - (Just (k1, v1, f1), Just (k2, v2, g2)) -> - case compare k1 k2 of - EQ -> one (k1, apply comb v1 v2, OrD f1 g2 comb) - LT -> one (k1, v1, OrD f1 g comb) - GT -> one (k2, v2, OrD f g2 comb) - --- ===== Guard ===== -guardStep :: - Ord a => - (Query a b -> Collect (a, b, Query a b)) -> - Fun (a -> b -> Bool) -> - Query a b -> - Collect (a, b, Query a b) -guardStep next p f = do triple <- next f; loop triple - where - loop (k, v, f') = if (apply p k v) then one (k, v, GuardD f' p) else do triple <- nxtQuery f'; loop triple - --- ===== Difference by key ===== -diffStep :: Ord k => (k, v, Query k v) -> Query k u -> Collect (k, v, Query k v) -diffStep (k1, u1, f1) g = - case hasElem (lubQuery k1 g) of - Nothing -> one (k1, u1, DiffD f1 g) -- g has nothing to subtract - Just (k2, _u2, g2) -> case compare k1 k2 of - EQ -> do tup <- nxtQuery f1; diffStep tup g2 - LT -> one (k1, u1, DiffD f1 g) - GT -> one (k1, u1, DiffD f1 g) -- the hasElem guarantees k1 <= k2, so this case is dead code diff --git a/libs/set-algebra/src/Control/Iterate/SetAlgebra.hs b/libs/set-algebra/src/Control/Iterate/SetAlgebra.hs deleted file mode 100644 index 512449d01e5..00000000000 --- a/libs/set-algebra/src/Control/Iterate/SetAlgebra.hs +++ /dev/null @@ -1,420 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} - --- | Supports writing 'Set algebra' expressions, using overloaded set operations, that can --- be applied to a variety of Basic types (Set, List, Map, etc). Also supports --- a mechanism to evaluate them efficiently, choosing datatype specific algorithms. --- This mechanism uses run-time rewrite rules to get the best algorithm. If there are --- no rewrite rules for a specific expression, falls back to a less efficient generic algorithm. -module Control.Iterate.SetAlgebra where - -import Control.Iterate.BaseTypes ( - BaseRep (..), - Basic (..), - Embed (..), - Iter (..), - Sett (..), - Single (..), - fromPairs, - ) -import Control.Iterate.Collect (Collect, front, one, rear, runCollect, when) -import Control.Iterate.Exp ( - Exp (..), - Query (..), - -- semantic meaning functions for Query - - andD, - andPD, - chainD, - -- Operations on Fun - - constant, - first, - nEgate, - plus, - projD, - rngElem, - rngFst, - rngSnd, - second, - ) -import qualified Data.Map.Strict as Map -import Data.MapExtras ( - disjointMapSetFold, - intersectDomP, - intersectDomPLeft, - intersectMapSetFold, - keysEqual, - noKeys, - ) -import qualified Data.Set as Set -import Prelude hiding (lookup) - --- =============================================================================== - --- | Compile the (Exp (f k v)) to a Query iterator, and a BaseRep that indicates --- how to materialize the iterator to the correct type. Recall the iterator --- can be used to constuct many things using runCollect, but here we want --- to materialize it to the same type as the (Exp (f k v)), i.e. (f k v). -compile :: Exp (f k v) -> (Query k v, BaseRep f k v) -compile (Base rep relation) = (BaseD rep relation, rep) -compile (Singleton d r) = (BaseD SingleR (Single d r), SingleR) -compile (SetSingleton d) = (BaseD SingleR (SetSingle d), SingleR) -compile (Dom (Base SetR rel)) = (BaseD SetR rel, SetR) -compile (Dom (Singleton k _v)) = (BaseD SetR (Sett (Set.singleton k)), SetR) -compile (Dom (SetSingleton k)) = (BaseD SetR (Sett (Set.singleton k)), SetR) -compile (Dom x) = (projD (fst (compile x)) (constant ()), SetR) -compile (Rng (Base SetR _rel)) = (BaseD SetR (Sett (Set.singleton ())), SetR) -compile (Rng (Singleton _k v)) = (BaseD SetR (Sett (Set.singleton v)), SetR) -compile (Rng (SetSingleton _k)) = (BaseD SetR (Sett (Set.singleton ())), SetR) -compile (Rng f) = (BaseD SetR (materialize SetR (loop query)), SetR) -- We really ought to memoize this. It might be computed many times. - where - query = fst (compile f) - loop x = do (_k, v, x2) <- nxt x; front (v, ()) (loop x2) -compile (DRestrict set rel) = (projD (andD (fst (compile set)) reld) rngSnd, rep) - where - (reld, rep) = compile rel -compile (DExclude set rel) = (DiffD reld (fst (compile set)), rep) - where - (reld, rep) = compile rel -compile (RRestrict rel set) = - case (compile rel, compile set) of - ((reld, rep), (BaseD _ x, _)) -> (GuardD reld (rngElem x), rep) - ((reld, rep), (setd, _)) -> (chainD reld setd rngFst, rep) -compile (RExclude rel set) = - case (compile rel, compile set) of - ((reld, rep), (BaseD _ x, _)) -> (GuardD reld (nEgate (rngElem x)), rep) - ((reld, rep), _) -> (GuardD reld (nEgate (rngElem (compute set))), rep) -- This could be expensive -compile (UnionOverrideLeft rel1 rel2) = (OrD rel1d (fst (compile rel2)) first, rep) -- first uses value from rel1 to override value from rel2 - where - (rel1d, rep) = compile rel1 -compile (UnionOverrideRight rel1 rel2) = (OrD rel1d (fst (compile rel2)) second, rep) -- second uses value from rel2 to override value from rel1 - where - (rel1d, rep) = compile rel1 -compile (UnionPlus rel1 rel2) = (OrD rel1d (fst (compile rel2)) plus, rep) - where - (rel1d, rep) = compile rel1 -compile (Intersect rel1 rel2) = (andPD (fst (compile rel1)) (fst (compile rel2)) (constant ()), SetR) -compile (SetDiff rel1 rel2) = (DiffD rel1d (fst (compile rel2)), rep) - where - (rel1d, rep) = compile rel1 - -compileSubterm :: Exp a -> Exp (f k v) -> Query k v -compileSubterm _whole sub = fst (compile sub) - --- =========================================================================== --- The second part of the generic algorithm is to run the compiled code. --- This involves materiaizing every sub-expression, and then applying generic --- operations to the sub-expressions to get the answer. Some Exp's (ones built --- with (Base baserep value) are aready materialized, so they only need be --- transformed to the target type. If the target type, is the same type as the real --- 'value' stored in (Base baserep value). Then this is a no-op, if not use the --- function (materialize :: Ord k => BaseRep f k v -> Collect (k, v) -> f k v) to --- convert it. --- =========================================================================== - -run :: Ord k => (Query k v, BaseRep f k v) -> f k v -run (BaseD SetR x, SetR) = x -- If it is already data (BaseD) -run (BaseD MapR x, MapR) = x -- and in the right form (the BaseRep's match) -run (BaseD SingleR x, SingleR) = x -- just return the data -run (BaseD ListR x, ListR) = x -- if the forms do not match. -run (BaseD _source x, ListR) = materialize ListR (fifo x) -- use fifo, since the order matters for Lists. -run (BaseD _source x, target) = materialize target (lifo x) -- use lifo, for others -run (other, ListR) = materialize ListR (fifo other) -- If it is a compound Iterator, for List, than materialize it using fifo -run (other, target) = materialize target (lifo other) -- If it is a compund Iterator, for anything else than materialize it using lifo - -testing :: Bool -testing = False - -runBoolExp :: Exp Bool -> Bool -runBoolExp e = - if testing - then error ("In Testing mode, SetAlgebra expression: " ++ show e ++ " falls through to slow mode.") - else runBool e - -runSetExp :: Ord k => Exp (f k v) -> f k v -runSetExp e = - if testing - then error ("In Testing mode, SetAlgebra expression: " ++ show e ++ " falls through to slow mode.") - else run (compile e) - --- The following ar only for use in the SetAlgebra internal tests - -runSet :: Ord k => Exp (f k v) -> f k v -runSet e = run (compile e) - -runBool :: Exp Bool -> Bool -runBool (Elem k v) = haskey k (compute v) -runBool (NotElem k set) = not $ haskey k (compute set) -runBool (w@(KeyEqual x y)) = sameDomain (compileSubterm w x) (compileSubterm w y) -runBool (w@(Subset x y)) = runCollect (lifo left) True (\(k, _v) ans -> haskey k right && ans) - where - left = compileSubterm w x - right = compileSubterm w y - --- | cost O(min (size m) (size n) * log(max (size m) (size n))), BUT the constants are high, too slow except for small maps. -sameDomain :: (Ord k, Iter f, Iter g) => f k b -> g k c -> Bool -sameDomain m n = loop (hasNxt m) (hasNxt n) - where - loop (Just (k1, _, nextm)) (Just (k2, _, nextn)) = - case compare k1 k2 of - EQ -> loop (hasNxt nextm) (hasNxt nextn) - LT -> False - GT -> False - loop Nothing Nothing = True - loop _ _ = False - --- ============================================================================================== --- The faster strategy involves applying (type-specific) rewrite rules using the --- function (compute :: Exp t -> t), This pattern matches against the GADT constructors --- so this allows runtime choice of type specific algortihms of Exp --- Evaluate an (Exp t) into real data of type t. Try domain and type specific algorithms first, --- and if those fail. Compile the formula as an iterator, then run the iterator to get an answer. --- Here are some sample of the type specific algorithms we incorporate --- x ∈ (dom y) haskey --- x ∉ (dom y) not . haskey --- x ∪ (singleton y) addpair --- (Set.singleton x) ⋪ y removekey --- (dom x) ⊆ (dom y) --- =============================================================================================== - -compute :: Exp t -> t -compute (Base _rep relation) = relation -compute (Dom (Base SetR rel)) = rel -compute (Dom (Base MapR x)) = Sett (Map.keysSet x) -compute (Dom (Singleton k _v)) = Sett (Set.singleton k) -compute (Dom (SetSingleton k)) = Sett (Set.singleton k) -compute (Dom (Base _rep rel)) = Sett (domain rel) --- (dom (Map(62)? ▷ (setSingleton _ ))) -compute (Dom (RRestrict (Base MapR xs) (SetSingleton v))) = Sett (Map.foldlWithKey' accum Set.empty xs) - where - accum ans k u = if u == v then Set.insert k ans else ans -compute (Dom (RRestrict (Base MapR xs) (Base SetR (Sett set)))) = Sett (Map.foldlWithKey' accum Set.empty xs) - where - accum ans k u = if Set.member u set then Set.insert k ans else ans -compute (Dom (RExclude (Base MapR xs) (SetSingleton v))) = Sett (Map.foldlWithKey' accum Set.empty xs) - where - accum ans k u = if not (u == v) then Set.insert k ans else ans -compute (Dom (RExclude (Base MapR xs) (Base SetR (Sett set)))) = Sett (Map.foldlWithKey' accum Set.empty xs) - where - accum ans k u = if not (Set.member u set) then Set.insert k ans else ans -compute (Dom (DRestrict (SetSingleton v) (Base MapR xs))) = Sett (intersectMapSetFold accum xs (Set.singleton v) Set.empty) - where - accum k _u ans = Set.insert k ans -compute (Dom (DRestrict (Base SetR (Sett set)) (Base MapR xs))) = Sett (intersectMapSetFold accum xs set Set.empty) - where - accum k _u ans = Set.insert k ans -compute (Dom (DExclude (SetSingleton v) (Base MapR xs))) = Sett (disjointMapSetFold accum xs (Set.singleton v) Set.empty) - where - accum k _u ans = Set.insert k ans -compute (Dom (DExclude (Base SetR (Sett set)) (Base MapR xs))) = Sett (disjointMapSetFold accum xs set Set.empty) - where - accum k _u ans = Set.insert k ans -compute (Rng (Base SetR _rel)) = Sett (Set.singleton ()) -compute (Rng (Singleton _k v)) = Sett (Set.singleton v) -compute (Rng (SetSingleton _k)) = Sett (Set.singleton ()) -compute (Rng (Base _rep rel)) = Sett (range rel) -compute (DRestrict (Base SetR (Sett set)) (Base MapR m)) = Map.restrictKeys m set -compute (DRestrict (SetSingleton k) (Base MapR m)) = Map.restrictKeys m (Set.singleton k) -compute (DRestrict (Singleton k _v) (Base MapR m)) = Map.restrictKeys m (Set.singleton k) -compute (DRestrict (Dom (Base MapR x)) (Base MapR y)) = Map.intersection y x --- This case inspired by set expression in EpochBoundary.hs --- (dom (delegs ▷ Set.singleton hk) ◁ stake) in EpochBoundart.hs --- ((dom (Map(62)? ▷ (setSingleton _ ))) ◁ Map(63)?) which has this structure --- materialize MapR (do { (x,y,z) <- delegs `domEq` stake; when (y==hk); one(x,z) }) -compute (DRestrict (Dom (RRestrict (Base MapR delegs) (SetSingleton hk))) (Base MapR stake)) = - intersectDomPLeft (\_k v2 -> v2 == hk) stake delegs -compute (DRestrict (Dom (RRestrict (Base MapR delegs) (Base _ rngf))) (Base MapR stake)) = - intersectDomPLeft (\_k v2 -> haskey v2 rngf) stake delegs -compute (DRestrict set (Base MapR ys)) = Map.restrictKeys ys set2 -- Pay the cost of materializing set to use O(n* log n) restictKeys - where - Sett set2 = materialize SetR (lifo (compute set)) -compute (DRestrict (Base SetR (Sett s1)) (Base SetR (Sett s2))) = Sett (Set.intersection s1 s2) -compute (DRestrict (Base SetR x1) (Base rep x2)) = materialize rep $ do (x, _, z) <- x1 `domEq` x2; one (x, z) -compute (DRestrict (Dom (Base _ x1)) (Base rep x2)) = materialize rep $ do (x, _, z) <- x1 `domEq` x2; one (x, z) -compute (DRestrict (SetSingleton k) (Base rep x2)) = materialize rep $ do (x, _, z) <- (SetSingle k) `domEq` x2; one (x, z) -compute (DRestrict (Dom (Singleton k _)) (Base rep x2)) = materialize rep $ do (x, _, z) <- (SetSingle k) `domEq` x2; one (x, z) -compute (DRestrict (Rng (Singleton _ v)) (Base rep x2)) = materialize rep $ do (x, _, z) <- (SetSingle v) `domEq` x2; one (x, z) -compute (DExclude (SetSingleton n) (Base MapR m)) = Map.withoutKeys m (Set.singleton n) -compute (DExclude (Dom (Singleton n _v)) (Base MapR m)) = Map.withoutKeys m (Set.singleton n) -compute (DExclude (Rng (Singleton _n v)) (Base MapR m)) = Map.withoutKeys m (Set.singleton v) -compute (DExclude (Base SetR (Sett x1)) (Base MapR x2)) = Map.withoutKeys x2 x1 -compute (DExclude (Dom (Base MapR x1)) (Base MapR x2)) = noKeys x2 x1 -compute (RExclude (Base MapR xs) (Base SetR (Sett y))) = Map.filter (\x -> not (Set.member x y)) xs -compute (RExclude (Base MapR xs) (SetSingleton k)) = Map.filter (not . (== k)) xs -compute (RExclude (Base _rep lhs) (Base SetR (Sett rhs))) | Set.null rhs = lhs -compute (RExclude (Base _rep lhs) (Base SingleR Fail)) = lhs -compute (RExclude (Base rep lhs) y) = - materialize rep $ do (a, b) <- lifo lhs; when (not (haskey b rhs)); one (a, b) - where - (rhs, _) = compile y - --- (dom (Map(16)? ▷ (setSingleton _ ))) -compute (RRestrict (Base MapR xs) (SetSingleton k)) = Map.filter (\x -> x == k) xs --- ((dom rewards' ◁ delegs) ▷ dom poolParams) in LedgerState.hs -compute (RRestrict (DRestrict (Dom (Base MapR x)) (Base MapR y)) (Dom (Base MapR z))) = intersectDomP (\_k v -> Map.member v z) x y -compute (RRestrict (DRestrict (Dom (Base _r1 stkcreds)) (Base r2 delegs)) (Dom (Base _r3 stpools))) = - materialize r2 $ do (x, _, y) <- stkcreds `domEq` delegs; y `element` stpools; one (x, y) -compute (Elem k (Dom (Base _rep x))) = haskey k x -compute (Elem k (Base _rep rel)) = haskey k rel -compute (Elem k (Dom (Singleton key _v))) = k == key -compute (Elem k (Rng (Singleton _ key))) = k == key -compute (Elem k (SetSingleton key)) = k == key -compute (Elem k (UnionOverrideLeft (Base SetR (Sett x)) (Base SetR (Sett y)))) = (Set.member k x || Set.member k y) -compute (Elem k (UnionOverrideRight (Base SetR (Sett x)) (Base SetR (Sett y)))) = (Set.member k x || Set.member k y) -compute (Elem k (UnionPlus (Base SetR (Sett x)) (Base SetR (Sett y)))) = (Set.member k x || Set.member k y) -compute (Elem k (Intersect (Base SetR (Sett x)) (Base SetR (Sett y)))) = (Set.member k x && Set.member k y) -compute (Elem k (DRestrict s1 m1)) = compute (Elem k s1) && compute (Elem k m1) -compute (Elem k (DExclude s1 m1)) = not (compute (Elem k s1)) && compute (Elem k m1) -compute (NotElem k (Dom (Base _rep x))) = not $ haskey k x -compute (NotElem k (Base _rep rel)) = not $ haskey k rel -compute (NotElem k (Dom (Singleton key _v))) = not $ k == key -compute (NotElem k (Rng (Singleton _ key))) = not $ k == key -compute (NotElem k (SetSingleton key)) = not $ k == key -compute (NotElem k (UnionOverrideLeft (Base SetR (Sett x)) (Base SetR (Sett y)))) = not (Set.member k x || Set.member k y) -compute (NotElem k (UnionOverrideRight (Base SetR (Sett x)) (Base SetR (Sett y)))) = not (Set.member k x || Set.member k y) -compute (NotElem k (UnionPlus (Base SetR (Sett x)) (Base SetR (Sett y)))) = not (Set.member k x || Set.member k y) -compute (NotElem k (Intersect (Base SetR (Sett x)) (Base SetR (Sett y)))) = not (Set.member k x && Set.member k y) -compute (Subset (Base SetR (Sett x)) (Base SetR (Sett y))) = Set.isSubsetOf x y -compute (Subset (Base SetR (Sett x)) (Base MapR y)) = all (`Map.member` y) x -compute (Subset (Base SetR (Sett x)) (Dom (Base MapR y))) = all (`Map.member` y) x -compute (Subset (Base MapR x) (Base MapR y)) = Map.foldrWithKey accum True x - where - accum k _a ans = Map.member k y && ans -compute (Subset (Dom (Base MapR x)) (Dom (Base MapR y))) = Map.foldrWithKey accum True x - where - accum k _a ans = Map.member k y && ans -compute (Intersect (Base SetR (Sett x)) (Base SetR (Sett y))) = Sett (Set.intersection x y) -compute (Intersect (Base MapR x) (Base MapR y)) = Sett (Map.keysSet (Map.intersection x y)) -compute (SetDiff (Base SetR (Sett x)) (Base SetR (Sett y))) = Sett (Set.difference x y) -compute (SetDiff (Base SetR (Sett x)) (Base MapR y)) = Sett (Set.filter (\e -> not (Map.member e y)) x) -compute (SetDiff (Base SetR (Sett x)) (Dom (Base MapR y))) = Sett (Set.filter (\e -> not (Map.member e y)) x) -compute (SetDiff (Base MapR x) (Dom (Base MapR y))) = Map.difference x y -compute (SetDiff (Base MapR x) (Base MapR y)) = (Map.difference x y) -compute (SetDiff (Base MapR x) (Base SetR (Sett y))) = (Map.withoutKeys x y) -compute (UnionOverrideLeft (Base _rep x) (Singleton k v)) = addkv (k, v) x (\old _new -> old) -- The value on the left is preferred over the right, so 'addkv' chooses 'old' -compute (UnionOverrideLeft (Base MapR d0) (Base MapR d1)) = Map.union d0 d1 -- 'Map.union' is left biased, just what we want. -compute (UnionOverrideLeft (Base SetR (Sett x)) (Base SetR (Sett y))) = Sett (Set.union x y) -compute (UnionOverrideLeft (DExclude (SetSingleton k) (Base MapR xs)) (Base MapR ys)) = Map.union (Map.delete k xs) ys -compute (UnionOverrideLeft (DExclude (Base SetR (Sett s1)) (Base MapR m2)) (Base MapR m3)) = Map.union (Map.withoutKeys m2 s1) m3 -compute (UnionOverrideRight (Base _rep x) (Singleton k v)) = addkv (k, v) x (\_old new -> new) -- The value on the right is preferred over the left, so 'addkv' chooses 'new' -compute (UnionOverrideRight (Base MapR d0) (Base MapR d1)) = Map.union d1 d0 -- we pass @d1@ as first argument, since 'Map.union' is left biased. -compute (UnionOverrideRight (Base SetR (Sett x)) (Base SetR (Sett y))) = Sett (Set.union x y) -compute (UnionPlus (Base MapR x) (Base MapR y)) = Map.unionWith (<>) x y -compute (UnionPlus (Base SetR (Sett x)) (Base SetR (Sett y))) = Sett (Set.union x y) -- Recall (Sett k):: f k (), so () <> () = () -compute (Singleton k v) = Single k v -compute (SetSingleton k) = (SetSingle k) -compute (KeyEqual (Base MapR m) (Base MapR n)) = keysEqual m n -compute (KeyEqual (Dom (Base MapR m)) (Dom (Base MapR n))) = keysEqual m n -compute (KeyEqual (Base SetR (Sett m)) (Base SetR (Sett n))) = n == m -compute (KeyEqual (Base MapR xs) (Base SetR (Sett ys))) = Map.keysSet xs == ys -compute x = computeSlow x - -eval :: Embed s t => Exp t -> s -eval x = fromBase (compute x) - -computeSlow :: Exp t -> t -computeSlow (Base _ t) = t -computeSlow (e@(Dom _)) = runSetExp e -computeSlow (e@(Rng _)) = runSetExp e -computeSlow (e@(DRestrict _ _)) = runSetExp e -computeSlow (e@(DExclude _ _)) = runSetExp e -computeSlow (e@(RExclude _ _)) = runSetExp e -computeSlow (e@(RRestrict _ _)) = runSetExp e -computeSlow (e@(Elem _ _)) = runBoolExp e -computeSlow (e@(NotElem _ _)) = runBoolExp e -computeSlow (e@(Subset _ _)) = runBoolExp e -computeSlow (e@(Intersect _ _)) = runSetExp e -computeSlow (e@(SetDiff _ _)) = runSetExp e -computeSlow (e@(UnionOverrideLeft _ _)) = runSetExp e -computeSlow (e@(UnionOverrideRight _ _)) = runSetExp e -computeSlow (e@(UnionPlus _ _)) = runSetExp e -computeSlow (Singleton k v) = Single k v -computeSlow (SetSingleton k) = (SetSingle k) -computeSlow (e@(KeyEqual _ _)) = runBoolExp e - --- ========================================================================== --- The most basic operation of iteration, where (Iter f) is to use the 'nxt' --- operator on (f k v) to create a (Collect k v). The two possible --- ways to produce their elements are in LIFO or FIFO order. --- =========================================================================== - -lifo :: Iter f => f k v -> Collect (k, v) -lifo x = do (k, v, x2) <- nxt x; front (k, v) (lifo x2) - -fifo :: Iter f => f k v -> Collect (k, v) -fifo x = do (k, v, x2) <- nxt x; rear (fifo x2) (k, v) - --- ================================================================================ --- A witness (BaseRep) can be used to specifiy how to build a specifc datatype from --- a CONCRETE sequence of tuples (a [(k,v)]). This is a way to import a type from from --- a list. But unlike 'materialize' an arbitray [(k,v)] may have duplicate keys, --- so when that happens, use 'combine' to merge the associated values. --- ================================================================================ - -addp :: (Ord k, Basic f) => (v -> v -> v) -> (k, v) -> f k v -> f k v -addp combine (k, v) xs = addkv (k, v) xs combine - --- | Turn a list of pairs into any 'Basic' type. The first argument is a 'BaseRep' which --- chooses what Base type to construct. --- The combine function comb = (\\ earlier later -> later) will let values --- later in the list override ones earlier in the list, and comb = --- (\\ earlier later -> earlier) will keep the value that appears first in the list -fromList :: Ord k => BaseRep f k v -> (v -> v -> v) -> [(k, v)] -> f k v -fromList MapR combine xs = Map.fromListWith combine xs -fromList ListR combine xs = fromPairs combine xs -fromList SetR combine xs = foldr (addp combine) (Sett (Set.empty)) xs -fromList SingleR combine xs = foldr (addp combine) Fail xs - --- ======================================================================================= - --- | A witness (BaseRep) can be used to materialize a (Collect k v) into the type witnessed by the BaseRep. --- Recall a (Collect k v) has no intrinsic type (it is just an ABSTRACT sequence of tuples), so --- the witness describes how to turn them into the chosen datatype. Note that materialize is meant --- to be applied to a collection built by iterating over a Query. This produces the keys in --- ascending order, with no duplicate keys. So we do not need to specify how to merge duplicate values. -materialize :: Ord k => BaseRep f k v -> Collect (k, v) -> f k v -materialize ListR x = fromPairs (\l _r -> l) (runCollect x [] (:)) -materialize MapR x = runCollect x Map.empty (\(k, v) ans -> Map.insert k v ans) -materialize SetR x = Sett (runCollect x Set.empty (\(k, _) ans -> Set.insert k ans)) -materialize SingleR x = runCollect x Fail (\(k, v) _ignore -> Single k v) - --- ========================================================================================= --- Now we make an iterator that collects triples, on the intersection --- of the domain of the two Iter types 'f' and 'g'. An answer of (k,b,c) means that --- (k,b) is in m::f k a, and (k,c) is in n::g k c. All the other possible triples --- are skipped over. This is an instance of a thing called a "Generic Join" --- See https://arxiv.org/pdf/1310.3314.pdf or http://personales.dcc.uchile.cl/~pbarcelo/ngo.pdf --- The number of tuples it touches is proportional to the size of the output (modulo log factors). --- It's cost is unrelated to the size of its inputs (modulo log factors) --- This is a very specific version of the AndD compound iterator. It is used in the function 'eval' --- ========================================================================================= - -(⨝) :: (Ord k, Iter f, Iter g) => f k b -> g k c -> Collect (k, b, c) -(⨝) = domEq - -domEq :: (Ord k, Iter f, Iter g) => f k b -> g k c -> Collect (k, b, c) -domEq m n = do - triplem <- nxt m - triplen <- nxt n - let loop (mt@(k1, b, nextm)) (nt@(k2, c, nextn)) = - case compare k1 k2 of - EQ -> front (k1, b, c) (domEq nextm nextn) - LT -> do mt' <- lub k2 nextm; loop mt' nt - GT -> do nt' <- lub k1 nextn; loop mt nt' - loop triplem triplen - --- This is included here for the benchmark tests. It is much slower because it does not use lub. - -domEqSlow :: (Ord k, Iter f, Iter g) => f k b -> g k c -> Collect (k, b, c) -domEqSlow m n = do - triplem <- nxt m - triplen <- nxt n - let loop (mt@(k1, b, nextm)) (nt@(k2, c, nextn)) = - case compare k1 k2 of - EQ -> front (k1, b, c) (domEqSlow nextm nextn) - LT -> do mt' <- nxt nextm; loop mt' nt - GT -> do nt' <- nxt nextn; loop mt nt' - loop triplem triplen - --- ================================================================================ diff --git a/libs/set-algebra/src/Control/SetAlgebra.hs b/libs/set-algebra/src/Control/SetAlgebra.hs deleted file mode 100644 index 655f58b4578..00000000000 --- a/libs/set-algebra/src/Control/SetAlgebra.hs +++ /dev/null @@ -1,155 +0,0 @@ -{-# LANGUAGE GADTs #-} - --- | Operations for manipulating sets and maps using mathematicial operators. Concrete types that can be --- interpreted as sets and maps are made instances of the 'Basic' class. In order to make sets and maps --- behave uniformly, an instance @(Basic f)@ implies @f@ is a binary type constructor. For types interpreted as --- maps, the type --- @(f k v)@ means that @k@ is the type of the map's key, and @v@ is the type of map's value. For types --- interpreted as sets, the value is always the unit type: (). The binary GADT 'Sett' links to the --- usual 'Data.Set' type. Its constructor has the following type @Sett :: Set k -> Sett k ()@, programmers can --- use similar strategies to interpret other types as sets. Predefined instances of Basic include 'Data.Map', --- 'Data.Set', 'List', and 'Single'. Programmers can add 'Basic' instances for their own types as well. --- --- A typical set algebra expression (involving range restriction, ('▷'), here) looks like @(eval (x ▷ y))@. --- Where @x@ and @y@ are program variables or expressions, the operator ('▷') builds an 'Exp' tree, and --- 'eval' simplifys the tree, and then evaluates the simplfied tree to get the result. --- Here is the actual type of the range restrict operator. --- --- @ --- (▷) :: (Ord k, Iter g, Ord v, HasExp s1 (f k v), HasExp s2 (g v ())) => s1 -> s2 -> Exp (f k v) --- @ --- --- As the type indicates, in order to support simplifcation and evaluation the types of the --- operands to ('▷') must be instances of several classes. Possible classes include 'Basic', --- 'HasExp', 'Iter', and 'Embed'. --- --- 1. @(Basic f)@ meaning @(f k v)@ must be interpreted as a map or set, with two type parameters @k@ and @v@. --- 2. @(HasExp t (f k v))@ meaning a value of type @t@ can be lifted to an expression of type @(Exp (f k v))@, where @(Basic f)@. --- 3. @(Iter f)@ meaning the @Basic@ type constructor @f@ supports certain (usually fast) operations, that can be combined. --- 4. @(Embed concrete f)@ meaning the types @concrete@ and @(f k v)@ form an isomorphism. --- --- Available operands to create set algebra expressions are 'dom', 'rng', 'dexclude', '(⋪)', 'drestrict', '(◁)', --- 'rexclude', '(⋫)', 'rrestrict', '(▷)', --- 'unionright', '(⨃)', 'unionleft','(∪)', 'unionplus', '(∪+)','singleton', 'setSingleton', --- 'intersect', '(∩)', 'subset', '(⊆)', 'keyeq', '(≍)', --- '(∈)', '(∉)', 'setdiff', '(➖)' . --- --- The key abstraction that makes set algebra work is the self typed GADT: @(Exp t)@, that defines a tree that --- represents a deep embedding of all set algebra expressions representing maps or sets of type @t@. --- @Exp@ is a typed symbolic representation of queries we may ask. It allows us to introspect a query. --- The strategy is to --- --- 1. Define Exp so all queries can be represented. --- 2. Define smart constructors that "parse" the surface syntax, and build a typed Exp --- 3. Write an evaluate function: eval:: Exp t -> t --- 4. "eval" can introspect the code and apply efficient domain and type specific translations --- 5. Use the (Iter f) class to evaluate some Exp that can benefit from its efficient nature. --- --- Basically, if the compiler can infer concrete type for the operands of [operators](Control-SetAlgebra.html#setoperators#) then --- all the class instances are automatically solved. If you get an error involving a class, then it is most --- probably the case that the type of the operands cannot be properly inferred. -module Control.SetAlgebra ( - -- * In addition to 'Data.Map.Map' and 'Data.Set.Set', types interpretable as maps and sets. - -- $MapAndSetTypes - List, - Single (..), - - -- * Classes supporting abstract constructors of Set Algebra Expressions. These show up in the types of overloaded functions. - -- $ClassesForSetAlgebra - Basic (..), - Iter (..), - HasExp (..), - Embed (..), - - -- * Types implementing a deep embedding of set algebra expressions - -- $Deep - BaseRep (..), - Exp (Base), - -- Evaluate an abstract Set Algebra Expression to the Set (Map) it represents. - eval, - - -- * Operators to build maps and sets, useable as Set Algebra Expressions - -- $setoperators - dom, - rng, - dexclude, - drestrict, - rexclude, - rrestrict, - unionleft, - unionright, - unionplus, - singleton, - setSingleton, - intersect, - subset, - keyeq, - (◁), - (⋪), - (▷), - (⋫), - (∈), - (∉), - (∪), - (⨃), - (∪+), - (∩), - (⊆), - (≍), - (<|), - (|>), - (➖), - keysEqual, - setdiff, - - -- * Miscellaneous operators, including smart constructors for 'List', whose constructors are hidden. - -- $Misc - materialize, - fromList, -) -where - -import Control.Iterate.BaseTypes ( - BaseRep (..), - Basic (..), - Embed (..), - Iter (..), - List, - Single (..), - ) -import Control.Iterate.Exp ( - Exp (..), - HasExp (..), - dexclude, - dom, - drestrict, - intersect, - keyeq, - rexclude, - rng, - rrestrict, - setSingleton, - setdiff, - singleton, - subset, - unionleft, - unionplus, - unionright, - (<|), - (|>), - (∈), - (∉), - (∩), - (∪), - (∪+), - (≍), - (⊆), - (⋪), - (⋫), - (▷), - (◁), - (➖), - (⨃), - ) -import Control.Iterate.SetAlgebra -import Data.MapExtras (keysEqual) diff --git a/libs/set-algebra/test/Main.hs b/libs/set-algebra/test/Main.hs deleted file mode 100644 index ec07115bca2..00000000000 --- a/libs/set-algebra/test/Main.hs +++ /dev/null @@ -1,18 +0,0 @@ -module Main where - -import Test.Control.Iterate.RelationReference (relationTests) -import Test.Control.Iterate.SetAlgebra (setAlgTest) -import Test.Tasty (TestTree, defaultMain, testGroup) - --- ==================================================================================== - -tests :: TestTree -tests = - testGroup - "set-algebra" - [ setAlgTest - , relationTests - ] - -main :: IO () -main = defaultMain tests diff --git a/libs/set-algebra/test/Test/Control/Iterate/RelationReference.hs b/libs/set-algebra/test/Test/Control/Iterate/RelationReference.hs deleted file mode 100644 index 1daae2eaf19..00000000000 --- a/libs/set-algebra/test/Test/Control/Iterate/RelationReference.hs +++ /dev/null @@ -1,166 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - -module Test.Control.Iterate.RelationReference (relationTests) where - -import qualified Control.Iterate.BaseTypes as SA -import qualified Control.Iterate.Exp as SA -import qualified Control.Iterate.SetAlgebra as SA -import Data.Foldable (toList) -import Data.Kind (Type) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Monoid (Sum) -import Data.Set (Set, intersection, isSubsetOf) -import qualified Data.Set as Set -import Test.Control.Iterate.SetAlgebra () -import Test.Tasty (TestName, TestTree, testGroup) -import Test.Tasty.QuickCheck (Arbitrary, testProperty, (===)) - ---------------------------------------------------------------------------------- --- Domain restriction and exclusion ---------------------------------------------------------------------------------- - -class Relation m where - type Domain m :: Type - type Range m :: Type - - -- | Domain - dom :: Ord (Domain m) => m -> Set (Domain m) - - -- | Range - range :: Ord (Range m) => m -> Set (Range m) - - -- | Domain restriction - -- - -- Unicode: 25c1 - (◁) :: Ord (Domain m) => Set (Domain m) -> m -> m - - -- | Domain exclusion - -- - -- Unicode: 22ea - (⋪) :: Ord (Domain m) => Set (Domain m) -> m -> m - - -- | Range restriction - -- - -- Unicode: 25b7 - (▷) :: Ord (Range m) => m -> Set (Range m) -> m - - -- | Range exclusion - -- - -- Unicode: 22eb - (⋫) :: Ord (Range m) => m -> Set (Range m) -> m - - -- | Union - (∪) :: (Ord (Domain m), Ord (Range m)) => m -> m -> m - - -- | Union Override Right - (⨃) :: (Ord (Domain m), Ord (Range m)) => m -> m -> m - - -- | Is this key in the Domain, Instances should overide this default with - -- something more efficient - haskey :: Ord (Domain m) => Domain m -> m -> Bool - haskey key m = key `elem` dom m - --- | Alias for 'elem'. --- --- Unicode: 2208 -(∈) :: (Eq a, Foldable f) => a -> f a -> Bool -(∈) = elem - --- | Alias for not 'elem'. --- --- Unicode: 2209 -(∉) :: (Eq a, Foldable f) => a -> f a -> Bool -(∉) = notElem - -instance Relation (Map k v) where - type Domain (Map k v) = k - type Range (Map k v) = v - - dom = Map.keysSet - - range = Set.fromList . Map.elems - - s ◁ r = Map.restrictKeys r s - - s ⋪ r = Map.withoutKeys r s - - r ▷ s = Map.filter (`Set.member` s) r - - r ⋫ s = Map.filter (`Set.notMember` s) r - - d0 ∪ d1 = Map.union d0 d1 - - -- For union override we pass @d1@ as first argument, since 'Map.union' is left biased. - d0 ⨃ d1 = Map.union d1 d0 - - haskey = Map.member - --- | Union override plus is (A\B)∪(B\A)∪{k|->v1+v2 | k|->v1 : A /\ k|->v2 : B} --- The library function Map.unionWith is more general, it allows any type for --- `b` as long as (+) :: b -> b -> b -(∪+) :: (Ord a, Num b) => Map a b -> Map a b -> Map a b -(∪+) = Map.unionWith (+) - ---------------------------------------------------------------------------------- --- Aliases ---------------------------------------------------------------------------------- - --- | Inclusion among foldables. --- --- Unicode: 2286 -(⊆) :: (Foldable f, Foldable g, Ord a) => f a -> g a -> Bool -x ⊆ y = toSet x `isSubsetOf` toSet y - -toSet :: (Foldable f, Ord a) => f a -> Set a -toSet = Set.fromList . toList - -(∩) :: Ord a => Set a -> Set a -> Set a -(∩) = intersection - -propUnary :: - forall b a e. - (Eq a, Show a, Arbitrary b, Show b, SA.Embed a e) => - TestName -> - (b -> SA.Exp e) -> - (b -> a) -> - TestTree -propUnary name expr relExpr = - testProperty name (\arg -> SA.eval (expr arg) === relExpr arg) - -propBinary :: - forall b c a e. - (Eq a, Show a, Arbitrary b, Show b, Arbitrary c, Show c, SA.Embed a e) => - TestName -> - (b -> c -> SA.Exp e) -> - (b -> c -> a) -> - TestTree -propBinary name expr relExpr = - testProperty name (\arg1 arg2 -> SA.eval (expr arg1 arg2) === relExpr arg1 arg2) - -type M = Map Int (Sum Float) - -relationTests :: TestTree -relationTests = - testGroup - "RelationTests - check conformance with the original implementation" - [ propUnary @M "dom" SA.dom dom - , propUnary @M "range" SA.rng range - , propBinary @_ @M "∈" (\k m -> k SA.∈ range m) (∈) - , propBinary @_ @M "∉" (\k m -> k SA.∉ range m) (∉) - , propBinary @_ @M "haskey" (\k m -> k SA.∈ dom m) haskey - , propBinary @_ @M "◁" (SA.◁) (◁) - , propBinary @_ @M "⋪" (SA.⋪) (⋪) - , propBinary @M "▷" (SA.▷) (▷) - , propBinary @M "⋫" (SA.⋫) (⋫) - , propBinary @M "∪" (SA.∪) (∪) - , propBinary @M "⨃" (SA.⨃) (⨃) - , propBinary @M "∪+" (SA.∪+) (∪+) - , propBinary @M @M "⊆" (\m1 m2 -> SA.rng m1 SA.⊆ SA.rng m2) (⊆) - , propBinary @(Set Int) "∩" (SA.∩) (∩) - ] diff --git a/libs/set-algebra/test/Test/Control/Iterate/SetAlgebra.hs b/libs/set-algebra/test/Test/Control/Iterate/SetAlgebra.hs deleted file mode 100644 index 00838fe1a82..00000000000 --- a/libs/set-algebra/test/Test/Control/Iterate/SetAlgebra.hs +++ /dev/null @@ -1,642 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# OPTIONS_GHC -Wno-orphans #-} - --- This option is on for only one reason, It allows us to make a list of --- functions, written as (\ w x y z -> Property) where each function uses --- a different set of the arguments. By typeing the list as --- [Int -> Key -> Map Key Int -> Set key -> Property], I can specify --- the type of each of the parameters to the anonymous functions, without --- repeating them for each of the over 100 items in the list. - -module Test.Control.Iterate.SetAlgebra (setAlgTest) where - -import Control.Iterate.BaseTypes (List (..), Sett (..), fromPairs) -import Control.Iterate.Collect (Collect (runCollect), one, when) -import Control.Iterate.Exp (Exp (..), Query (..), domElem, lift, rngSnd) -import Control.Iterate.SetAlgebra ( - compute, - domEq, - fifo, - lifo, - runBool, - runSet, - sameDomain, - ) -import Control.SetAlgebra ( - BaseRep (ListR, MapR, SetR, SingleR), - Iter (element), - Single (Fail), - dom, - eval, - fromList, - keysEqual, - materialize, - rng, - setSingleton, - singleton, - (∈), - (∉), - (∪), - (≍), - (⋪), - (⋫), - (▷), - (◁), - (➖), - ) -import Data.Char (ord) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.MapExtras (intersectDomP, intersectDomPLeft) -import qualified Data.Set as Set -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.HUnit (assertEqual, testCase) -import Test.Tasty.QuickCheck ( - Arbitrary (arbitrary), - Gen, - Property, - choose, - conjoin, - counterexample, - frequency, - testProperty, - vectorOf, - (===), - ) - --- ========================================================= --- Some examples of Exp and tests --- let's build a few things to test with - --- ============================================================================================== --- Consider one of transactions that needs to compute the following. --- ((dom stkcreds) ◁ delegs) ▷ (dom stpools) --- We could express this in datalog as follows --- ans(x,y) <- skcreds(x,z) and delegs(x,y) and stpools(y,w) --- Or if collections: stkcreds, delegs, and stpools were lists of pairs as a comprehension --- [ (x,y) | (x,z) <- skcreds, (x',y) <- delegs, x==x', (y',w) <- stpools, y=y' ] --- This runs in time and space proportional to: size(dom skcreds) + size(dom delegs) + size(dom stpools) (perhaps even worse) --- Or if stkcreds, delegs, and stpools were Data.Map, we could use the Collection monad. --- Even better, this will run in time and space proportional to: size((dom skcreds) ∩ (dom delegs)) --- See the example with timing above. - --- Even better, stkcreds, delegs, and stpools can be any binary type construtors in the Iter class. - -stkcred :: Map Int [Char] -deleg :: Map Int Char -stpool :: Map Char Int -stkcred = Map.fromList [(5, "a"), (6, "q"), (12, "r")] - -deleg = Map.fromList [(n, chars !! n) | n <- [1 .. 10]] - -stpool = Map.fromList [('A', 99), ('C', 12), ('F', 42), ('R', 33), ('Z', 99)] - --- =============== Build a few maps =================== - -chars :: String -chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdeghijklmnopqrstuvwxyz0123456789" - -m0 :: Map.Map Int Char -m0 = Map.fromList [(1, 'a'), (2, 'z'), (4, 'g')] - -m12 :: Map.Map Int Char -m12 = Map.fromList [(n, chars !! n) | n <- [0 .. length chars - 1]] - --- ============ Some small Maps to And, Or, Diff, Guard, Project with ========= - -l1, l2 :: [(Int, String)] -l1 = [(1, "a"), (4, "d"), (5, "e"), (10, "j"), (12, "l"), (21, "v"), (26, "z")] -l2 = [(3, "c"), (4, "d"), (5, "e"), (6, "f"), (10, "j"), (11, "k"), (21, "v")] - -l3 :: [(Int, Int)] -l3 = [(4, 12), (9, 13), (12, 44), (55, 22)] - -evens :: Sett Int () -evens = fromList SetR (\l _r -> l) [(n, ()) | n <- [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26]] - -l4 :: [(Int, String)] -l4 = - [ (1, "m") - , (2, "a") - , (5, "z") - , (6, "b") - , (7, "r") - , (12, "w") - , (34, "v") - , (50, "q") - , (51, "l") - , (105, "Z") - ] - -l5 :: [(String, Int)] -l5 = - [ ("a", 101) - , ("b", 102) - , ("c", 103) - , ("f", 104) - , ("m", 105) - , ("q", 107) - , ("s", 106) - , ("w", 108) - , ("y", 109) - , ("zz", 110) - ] - --- =================== Some sample (Exp t) ============================= - -z1 :: Map Int String -z1 = Map.fromList [(3, "c"), (4, "d"), (5, "e"), (6, "f"), (10, "j"), (11, "k"), (21, "v")] - -z2 :: Set.Set Int -z2 = Set.fromList [4, 6, 11, 13, 2] - -z3 :: Map Int String -z3 = Map.fromList [(9, "3"), (10, "j"), (30, "a")] - -z4 :: Map Int String -z4 = Map.fromList [(3, "c"), (5, "e"), (10, "j"), (21, "v"), (9, "3"), (30, "a")] - --- ===================== test that compute works ====================== - --- Test that computing x::(Exp t) computes to the given object with type t. - -evalTest :: (Show t, Eq t) => String -> Exp t -> t -> TestTree -evalTest nm expr ans = testCase name (assertEqual name (compute expr) ans) - where - name = (show expr ++ " where Map? = " ++ nm) - --- Test that (eval x) and runSet(x) get the same answers - -evalCompile :: (Show (f k v), Ord k, Eq (f k v)) => Exp (f k v) -> TestTree -evalCompile expr = testCase name (assertEqual name (compute expr) (runSet expr)) - where - name = ("compute and runSet of " ++ show expr ++ " are the same") - -evalTests :: TestTree -evalTests = - testGroup - "eval tests" - [ evalTest "m12" (5 ∈ (dom m12)) True - , evalTest "m12" (70 ∈ (dom m12)) False - , evalTest "m0" (m0 ∪ (singleton 3 'b')) (Map.fromList [(1, 'a'), (2, 'z'), (3, 'b'), (4, 'g')]) - , evalTest "m0" ((setSingleton 2) ⋪ m0) (Map.fromList [(1, 'a'), (4, 'g')]) - , evalTest "m0" (dom (singleton 2 'z') ⋪ m0) (Map.fromList [(1, 'a'), (4, 'g')]) - , evalTest "m0" (rng (singleton 'z' 2) ⋪ m0) (Map.fromList [(1, 'a'), (4, 'g')]) - , evalTest - "m0" - ((Map.fromList [(1, 'a'), (2, 'n'), (3, 'r')]) ∪ (singleton 2 'b')) - (Map.fromList [(1 :: Int, 'a'), (2, 'n'), (3, 'r')]) - , evalTest "m0" ([(1, 'a'), (3, 'r')] ∪ singleton 3 'b') (UnSafeList [(1 :: Int, 'a'), (3, 'r')]) - , evalTest "m0" (70 ∉ dom m12) True - , evalTest - "((dom stkcred) ◁ deleg) ▷ (dom stpool)" - ((dom stkcred ◁ deleg) ▷ dom stpool) - (Map.fromList [(5, 'F')]) - , evalTest "Range exclude 1" (l4 ⋫ Set.empty) (UnSafeList l4) - , evalTest "Range exclude 2" (l4 ⋫ Fail) (UnSafeList l4) - , evalTest - "Range exclude 3" - (l4 ⋫ Set.fromList ["m", "Z"]) - (UnSafeList [(2, "a"), (5, "z"), (6, "b"), (7, "r"), (12, "w"), (34, "v"), (50, "q"), (51, "l")]) - , evalTest "DomExclude Union" ((z2 ⋪ z1) ∪ z3) z4 - , evalTest "Set difference" (z2 ➖ dom z1) (Sett (Set.fromList [2 :: Int, 13])) - , evalCompile ((dom stkcred ◁ deleg) ▷ dom stpool) - , evalCompile (l4 ⋫ Set.fromList ["m", "Z"]) - , evalCompile (m0 ∪ singleton 3 'b') - , evalCompile (setSingleton 2 ⋪ m0) - , evalTest "ex1" (5 ∈ dom m12) True - , evalTest "ex2" (70 ∈ dom m12) False - , evalTest "ex3" (70 ∉ dom m12) True - , evalTest "ex4" (m0 ∪ singleton 3 'b') (Map.insert 3 'b' m0) - , evalTest "ex5" (setSingleton 2 ⋪ m0) (Map.fromList [(1, 'a'), (4, 'g')]) - , evalTest "ex6" (dom (singleton 2 'z') ⋪ m0) (Map.fromList [(1, 'a'), (4, 'g')]) - , evalTest "ex7" (rng (singleton 'z' 2) ⋪ m0) (Map.fromList [(1, 'a'), (4, 'g')]) - , evalTest "ex8" (z2 ➖ dom z1) (Sett $ Set.fromList [13, 2]) - ] - --- =============== test of KeysEqual and its variants ===================== - -tree1, tree2, tree3 :: Map Int Int -tree1 = Map.fromList [(i, i :: Int) | i <- [1 .. 20]] -tree2 = Map.fromList [(i, i :: Int) | i <- reverse [2 .. 20] ++ [1]] -tree3 = Map.fromList [(i, i :: Int) | i <- [1 .. 19]] - -set1 :: Set.Set Int -set1 = Set.fromList [1 .. 20] - -keysEqTests :: TestTree -keysEqTests = - testGroup - "keysEqual tests" - ( zipWith - tst - [(1 :: Int) ..] - [ (keysEqual tree1 tree2, True) - , (keysEqual tree2 tree1, True) - , (keysEqual tree1 tree3, False) - , (sameDomain tree1 tree2, True) - , (sameDomain tree2 tree1, True) - , (sameDomain tree1 tree3, False) - , (eval (tree1 ≍ tree2), True) - , (eval (tree1 ≍ tree3), False) - , (eval (tree1 ≍ set1), True) - , (eval (tree3 ≍ set1), False) - ] - ) - where - tst n (x, y) = testCase ("keysEqual " ++ show n) (assertEqual ("keysEqual " ++ show n) y x) - --- ========================== test that various Compound iterators work ================ - -testcase :: (Eq k, Eq v, Show k, Show v, Iter f) => String -> f k v -> [(k, v)] -> TestTree -testcase nm col ans = testCase nm (assertEqual nm ans (runCollect (fifo col) [] (:))) - -fromListD :: (Ord k, Iter f) => BaseRep f k v -> [(k, v)] -> Query k v -fromListD rep xs = BaseD rep (fromList rep (\l _r -> l) xs) - --- Tests where we vary how we represent l1 and l2 (the f in (Iter f) ) --- and see that we always get the same answer no matter how we store the data of l1 and l2 - -testAnd1 - , testAnd2 - , testOr - , testDiff1 - , testDiff2 :: - Iter g => String -> BaseRep g Int String -> TestTree -testAnd1 nm rep = - testcase - nm - (AndD (fromListD rep l1) (fromListD rep l2)) - [(4, ("d", "d")), (5, ("e", "e")), (10, ("j", "j")), (21, ("v", "v"))] -testAnd2 nm rep = - testCase - nm - ( assertEqual - nm - (runCollect (lifo (AndD (fromListD rep l1) (fromListD rep l2))) [] (:)) - (reverse [(4, ("d", "d")), (5, ("e", "e")), (10, ("j", "j")), (21, ("v", "v"))]) - ) -testOr nm rep = - testcase - nm - (OrD (fromListD rep l1) (fromListD rep l2) (lift (\x y -> x ++ "-" ++ y))) - [ (1, "a") - , (3, "c") - , (4, "d-d") - , (5, "e-e") - , (6, "f") - , (10, "j-j") - , (11, "k") - , (12, "l") - , (21, "v-v") - , (26, "z") - ] -testDiff1 nm rep = - testcase - nm - (DiffD (fromListD rep l1) (fromListD rep l2)) - [(1, "a"), (12, "l"), (26, "z")] -testDiff2 nm rep = testcase nm (DiffD (fromListD rep l2) (fromListD rep l1)) [(3, "c"), (6, "f"), (11, "k")] - --- ========================================================================== --- tests where we vary both the data, and how it is represented. - -testGuard :: (Show b, Iter f, Ord b) => String -> BaseRep f Int b -> [(Int, b)] -> TestTree -testGuard nm rep f = - testcase - nm - (GuardD (fromListD rep f) (domElem evens)) - (filter (even . fst) f) - -testProj :: (Show k, Ord k, Iter f) => String -> BaseRep f k [Char] -> [(k, [Char])] -> TestTree -testProj nm rep f = - testcase - nm - (ProjectD (fromListD rep f) (lift (\_x y -> ord (y !! 0)))) - [(k, ord (v !! 0)) | (k, v) <- f] - --- ============================================================================= --- tests where we AndP l1 and l3, and use different type of data for l1 from l3 --- We use the second projection in AndP, that is the value will come from l3 - -testAndP :: (Iter f, Iter g) => String -> BaseRep f Int String -> BaseRep g Int Int -> TestTree -testAndP nm rep1 rep2 = - testcase - nm - (AndPD (fromListD rep1 l1) (fromListD rep2 l3) rngSnd) - [(4, 12), (12, 44)] - -testChain :: (Iter f, Iter g) => String -> BaseRep f Int String -> BaseRep g String Int -> TestTree -testChain nm rep1 rep2 = - testcase - nm - (ChainD (fromListD rep1 l4) (fromListD rep2 l5) (lift (\x (y, v) -> (x, y, v)))) - [ (1, (1, "m", 105)) - , (2, (2, "a", 101)) - , (6, (6, "b", 102)) - , (12, (12, "w", 108)) - , (50, (50, "q", 107)) - ] - -testChain2 :: (Iter f, Iter g) => String -> BaseRep f String Int -> BaseRep g Int String -> TestTree -testChain2 nm rep1 rep2 = - testcase - nm - (ChainD (fromListD rep1 l5) (fromListD rep2 l4) (lift (\x (y, v) -> (x, y, v)))) - [("m", ("m", 105, "Z"))] - --- This test inspired by set expression in EpochBoundary.hs -testEpochEx :: TestTree -testEpochEx = - testCase - "Epoch Boundary Example" - ( assertEqual - "Epoch Boundary Example" - (Map.fromList [(6, True)]) - (eval (DRestrict (Dom (RRestrict (Base MapR delegs) (SetSingleton hk))) (Base MapR state))) - ) - where - delegs = Map.fromList [(5 :: Int, "a"), (6, "b"), (12, "c"), (14, "e"), (20, "f"), (25, "g")] - hk = "b" - state = Map.fromList [(n, even n) | n <- [1 .. 13]] - -iterTests :: TestTree -iterTests = - testGroup - "Iterator tests" - [ testAnd1 "(And l1 l2) as List, fifo" ListR - , testAnd1 "(And l1 l2) as Map, fifo" MapR - , testAnd2 "(And l1 l2) as List, lifo" ListR - , testAnd2 "(And l1 l2) as Map, lifo" MapR - , testOr "(Or l1 l2) as List" ListR - , testOr "(Or l1 l2) as Map" MapR - , testDiff1 "(Diff l1 l2) as List" ListR -- (Diff is not symmetric) - , testDiff2 "(Diff l2 l1) as List" ListR - , testDiff1 "(Diff l1 l2) as Map" MapR - , testDiff2 "(Diff l2 l1) as Map" MapR - , testGuard "(Guard l1 even) as List" ListR l1 - , testGuard "(Guard l1 even) as Map" MapR l1 - , testGuard "(Guard l2 even) as List" ListR l2 - , testGuard "(Guard l2 even) as Map" MapR l2 - , testProj "(Proj l1 ord) as List" ListR l1 - , testProj "(Proj l1 ord) as Map" MapR l1 - , testProj "(Proj l2 ord) as List" ListR l2 - , testProj "(Proj l2 ord) as Map" MapR l2 - , testAndP "(AndP l1:List l3:Map ord)" ListR MapR - , testAndP "(AndP l1:Map l3:List ord)" MapR ListR - , testAndP "(AndP l1:Map l3:List Map)" MapR MapR - , testChain "(Chain l4:List l5:Map)" ListR MapR - , testChain "(Chain l4:Map l5:List)" MapR ListR - , testChain "(Chain l4:Map l5:List Map)" MapR MapR - , testChain2 "(Chain2 l5:List l4:Map)" ListR MapR - , testChain2 "(Chain2 l5:Map l4:List)" MapR ListR - , testChain2 "(Chain2 l5:Map l4:List Map)" MapR MapR - , testEpochEx - ] - -intersect2ways :: Map Int Char -> Map Int String -> Char -> Bool -intersect2ways delegs stake hk = - materialize MapR (do (x, y, z) <- delegs `domEq` stake; when (y == hk); one (x, z)) - == intersectDomPLeft (\_k v2 -> v2 == hk) stake delegs - -intersectDomPLeftTest :: TestTree -intersectDomPLeftTest = testProperty "intersect2ways" intersect2ways - -ledgerStateProp :: Map Int Bool -> Map Int Char -> Map Char String -> Bool -ledgerStateProp xx yy zz = - materialize MapR (do (x, _, y) <- xx `domEq` yy; y `element` zz; one (x, y)) - == intersectDomP (\_k v -> Map.member v zz) xx yy - -ledgerStateTest :: TestTree -ledgerStateTest = testProperty "ledgerStateExample2ways" ledgerStateProp - -threeWay :: Map Int Char -> Map Int String -> Char -> Bool -threeWay delegs stake hk = - runSet (dom (delegs ▷ Set.singleton hk) ◁ stake) - == intersectDomPLeft (\_k v2 -> v2 == hk) stake delegs - && runSet (dom (delegs ▷ Set.singleton hk) ◁ stake) - == materialize MapR (do (x, y, z) <- delegs `domEq` stake; when (y == hk); one (x, z)) - -threeWayTest :: TestTree -threeWayTest = testProperty "eval-materialize-intersectDom" threeWay - --- ============================================================================== --- Slow property tests show that (compute e) and (runExp e) have the same answer. --- The function (runExp), which uses compile, can be much slower than compute. --- The reason for including (runExp) is that every query can be answered using --- runExp, but only Queries which have data structure specific implementations --- can use (compute). See the big case analysis in the function (compute). --- ============================================================================== - --- Concrete types in the arbitrary monad to use to run slow tests. - -newtype Key = Key Int - deriving (Eq, Ord) - -instance Show Key where - show (Key n) = "k" ++ show n - --- ---------------------------- -newtype Range = Range Int - deriving (Eq, Ord, Num) - -instance Show Range where - show (Range n) = show n - -instance Semigroup Range where - Range x <> Range y = Range (x + y) - -instance Monoid Range where - mempty = Range 0 - --- =========================================================== --- helper functions to construct related types and Properties. - -flipRng :: (Ord b, Num b) => List a b -> List b b -flipRng (UnSafeList xs) = fromPairs (+) (map (\(_a, b) -> (b, b)) xs) - -duplicate :: Ord a => Set.Set a -> Map.Map a a -duplicate s = foldr (\a m -> Map.insert a a m) Map.empty s - -btest :: Exp Bool -> Property -btest expr = compute expr === runBool expr - -qtest :: (Ord key, Eq (f key a), Show (f key a)) => Exp (f key a) -> Property -qtest expr = compute expr === runSet expr - --- ====================================================== - -slowFastEquiv :: TestTree -slowFastEquiv = testProperty "slowFastEquiv" slowProperties - -slowProperties :: - Key -> -- k - Range -> -- v - Map Key Range -> -- m1 - Map Key Range -> -- m2 - Set.Set Key -> -- s1 - Set.Set Key -> -- s2 - Set.Set Range -> -- rs - List Key Range -> -- ls - Property -slowProperties k v m1 m2 s1 s2 rs ls = - conjoin $ - map - (\(prop, name) -> counterexample name prop) - [ (qtest (Dom (Base SetR (Sett s1))), "slow1") - , (qtest (Dom (Base MapR m1)), "slow2") - , (qtest (Dom (Base SetR (Sett s1))), "slow3") - , (qtest (Dom (Base MapR m1)), "slow4") - , (qtest (Dom (Singleton k v)), "slow5") - , (qtest (Dom (SetSingleton k)), "slow6") - , (qtest (Dom (Base MapR m1)), "slow7") - , (qtest (Dom (RRestrict (Base MapR m1) (SetSingleton v))), "slow8") - , (qtest (Dom (RRestrict (Base MapR m1) (Base SetR (Sett rs)))), "slow9") - , (qtest (Dom (RExclude (Base MapR m1) (SetSingleton v))), "slow10") - , (qtest (Dom (RExclude (Base MapR m1) (Base SetR (Sett rs)))), "slow11") - , (qtest (Dom (DRestrict (SetSingleton k) (Base MapR m1))), "slow12") - , (qtest (Dom (DRestrict (Base SetR (Sett s1)) (Base MapR m1))), "slow13") - , (qtest (Dom (DExclude (SetSingleton k) (Base MapR m1))), "slow14") - , (qtest (Dom (DExclude (Base SetR (Sett s1)) (Base MapR m1))), "slow15") - , (qtest (Rng (Base SetR (Sett s1))), "slow16") - , (qtest (Rng (Singleton k v)), "slow17") - , (qtest (Rng (SetSingleton k)), "slow18") - , (qtest (Rng (Base MapR m1)), "slow19") - , (qtest (DRestrict (Base SetR (Sett s1)) (Base MapR m1)), "slow21") - , (qtest (DRestrict (SetSingleton k) (Base MapR m1)), "slow22") - , (qtest (DRestrict (Singleton k ()) (Base MapR m1)), "slow23") - , (qtest (DRestrict (Dom (Base MapR m2)) (Base MapR m1)), "slow24") - , (qtest (DRestrict (Dom (RRestrict (Base MapR m1) (SetSingleton v))) (Base MapR m2)), "slow25") - , (qtest (DRestrict (Dom (RRestrict (Base MapR m1) (Base SetR (Sett rs)))) (Base MapR m2)), "slow26") - , (qtest (DRestrict (Base SetR (Sett s1)) (Base MapR m1)), "slow27") - , (qtest (DRestrict (Base SetR (Sett s1)) (Base SetR (Sett s2))), "slow28") - , (qtest (DRestrict (Base SetR (Sett s1)) (Base ListR ls)), "slow29") - , (qtest (DRestrict (Dom (Base MapR m1)) (Base ListR ls)), "slow30") - , (qtest (DRestrict (SetSingleton k) (Base ListR ls)), "slow31") - , (qtest (DRestrict (Dom (Singleton k v)) (Base ListR ls)), "slow32") - , (qtest (DRestrict (Rng (Singleton k v)) (Base ListR (flipRng ls))), "slow33") - , (qtest (DExclude (SetSingleton k) (Base MapR m1)), "slow35") - , (qtest (DExclude (Dom (Singleton k v)) (Base MapR m1)), "slow36") - , (qtest (DExclude (Rng (Singleton v k)) (Base MapR m1)), "slow37") - , (qtest (DExclude (Base SetR (Sett s1)) (Base MapR m1)), "slow38") - , (qtest (DExclude (Dom (Base MapR m1)) (Base MapR m2)), "slow39") - , (qtest (RExclude (Base MapR m1) (Base SetR (Sett rs))), "slow47") - , (qtest (RExclude (Base MapR m1) (SetSingleton v)), "slow48") - , (qtest (RExclude (Base ListR ls) (Base SetR (Sett rs))), "slow49") - , (qtest (RExclude (Base ListR ls) (Base SingleR Fail)), "slow50") - , (qtest (RRestrict (Base MapR m1) (SetSingleton v)), "slow52") - , - ( qtest (RRestrict (DRestrict (Dom (Base MapR m1)) (Base MapR m1)) (Dom (Base MapR (duplicate rs)))) - , "slow53" - ) - , - ( qtest (RRestrict (DRestrict (Dom (Base MapR m1)) (Base MapR m2)) (Dom (Base ListR (flipRng ls)))) - , "slow54" - ) - , (btest (Elem k (Dom (Base ListR ls))), "slow56") - , (btest (Elem k (Base SetR (Sett s1))), "slow57") - , (btest (Elem k (Dom (Singleton k v))), "slow58") - , (btest (Elem k (Rng (Singleton v k))), "slow59") - , (btest (Elem k (SetSingleton k)), "slow60") - , (btest (Elem k (UnionOverrideLeft (Base SetR (Sett s1)) (Base SetR (Sett s2)))), "slow61") - , (btest (Elem k (UnionOverrideRight (Base SetR (Sett s1)) (Base SetR (Sett s2)))), "slow62") - , (btest (Elem k (UnionPlus (Base SetR (Sett s1)) (Base SetR (Sett s2)))), "slow63") - , (btest (Elem k (Intersect (Base SetR (Sett s1)) (Base SetR (Sett s2)))), "slow64") - , (btest (Elem k (DRestrict (Dom (Base SetR (Sett s1))) (Dom (Base MapR m1)))), "slow106") - , (btest (Elem k (DExclude (Dom (Base SetR (Sett s1))) (Dom (Base MapR m1)))), "slow107") - , (btest (NotElem k (Dom (Base ListR ls))), "slow66") - , (btest (NotElem k (Base SetR (Sett s1))), "slow67") - , (btest (NotElem k (Dom (Singleton k v))), "slow68") - , (btest (NotElem k (Rng (Singleton v k))), "slow69") - , (btest (NotElem k (SetSingleton k)), "slow70") - , (btest (NotElem k (UnionOverrideLeft (Base SetR (Sett s1)) (Base SetR (Sett s2)))), "slow71") - , (btest (NotElem k (UnionOverrideRight (Base SetR (Sett s1)) (Base SetR (Sett s2)))), "slow72") - , (btest (NotElem k (UnionPlus (Base SetR (Sett s1)) (Base SetR (Sett s2)))), "slow73") - , (btest (NotElem k (Intersect (Base SetR (Sett s1)) (Base SetR (Sett s2)))), "slow74") - , (btest (Subset (Base SetR (Sett s1)) (Base SetR (Sett s2))), "slow76") - , (btest (Subset (Base SetR (Sett s1)) (Base MapR m1)), "slow77") - , (btest (Subset (Base SetR (Sett s1)) (Dom (Base MapR m1))), "slow78") - , (btest (Subset (Base MapR m1) (Base MapR m2)), "slow79") - , (btest (Subset (Dom (Base MapR m1)) (Dom (Base MapR m2))), "slow80") - , (qtest (Intersect (Base SetR (Sett s1)) (Base SetR (Sett s2))), "slow82") - , (qtest (Intersect (Base MapR m1) (Base MapR m2)), "slow83") - , (qtest (UnionOverrideLeft (Base ListR ls) (Singleton k v)), "slow85") - , (qtest (UnionOverrideLeft (Base MapR m1) (Base MapR m2)), "slow86") - , (qtest (UnionOverrideLeft (Base SetR (Sett s1)) (Base SetR (Sett s2))), "slow87") - , (qtest (UnionOverrideLeft (DExclude (SetSingleton k) (Base MapR m1)) (Base MapR m2)), "slow88") - , (qtest (UnionOverrideLeft (DExclude (Base SetR (Sett s1)) (Base MapR m1)) (Base MapR m2)), "slow89") - , (qtest (UnionOverrideRight (Base ListR ls) (Singleton k v)), "slow91") - , (qtest (UnionOverrideRight (Base MapR m1) (Base MapR m2)), "slow92") - , (qtest (UnionOverrideRight (Base SetR (Sett s1)) (Base SetR (Sett s2))), "slow93") - , (qtest (UnionPlus (Base MapR m1) (Base MapR m2)), "slow95") - , (qtest (UnionPlus (Base SetR (Sett s1)) (Base SetR (Sett s2))), "slow96") - , (qtest (Singleton k v), "slow98") - , (qtest (SetSingleton k), "slow99") - , (btest (KeyEqual (Base MapR m1) (Base MapR m2)), "slow100") - , (btest (KeyEqual (Dom (Base MapR m1)) (Dom (Base MapR m2))), "slow102") - , (btest (KeyEqual (Base SetR (Sett s1)) (Base SetR (Sett s2))), "slow104") - , (btest (KeyEqual (Base MapR m1) (Base SetR (Sett s1))), "slow105") - , (qtest (SetDiff (Base SetR (Sett s1)) (Base SetR (Sett s2))), "slow108") - , (qtest (SetDiff (Base SetR (Sett s1)) (Base MapR m2)), "slow109") - , (qtest (SetDiff (Base SetR (Sett s1)) (Dom (Base MapR m2))), "slow110") - , (qtest (SetDiff (Base MapR m1) (Dom (Base MapR m2))), "slow111") - , (qtest (SetDiff (Base MapR m1) (Base MapR m2)), "slow112") - , (qtest (SetDiff (Base MapR m1) (Base SetR (Sett s2))), "slow113") - ] - --- ================================================== --- Arbitrary instances for the slow tests. - --- | Sizes should favor middle sized numbers -genSize :: Gen Int -genSize = - frequency - [ (1, return 0) - , (2, return 1) - , (5, return 2) - , (5, return 3) - , (4, return 4) - , (3, return 5) - , (2, return 6) - , (1, return 7) - ] - --- | Keep the set of Key and Range pretty small so Maps share keys -instance Arbitrary Key where - arbitrary = fmap Key (choose (1, 12)) - --- | The Range type can have a slightly larger set -instance Arbitrary Range where - arbitrary = fmap Range (choose (1, 20)) - -instance (Ord k, Arbitrary k, Arbitrary v) => Arbitrary (List k v) where - arbitrary = do - n <- genSize - xs <- vectorOf n arbitrary - pure $ fromPairs (\_old new -> new) xs - -instance (Ord k, Arbitrary k) => Arbitrary (Sett k ()) where - arbitrary = do - n <- genSize - xs <- vectorOf n arbitrary - pure (Sett (Set.fromList xs)) - --- ==================================================== --- Tie all the tests together --- ==================================================== - -setAlgTest :: TestTree -setAlgTest = - testGroup - "Set Algebra Tests" - [ evalTests - , keysEqTests - , iterTests - , intersectDomPLeftTest - , ledgerStateTest - , threeWayTest - , slowFastEquiv - ] diff --git a/libs/small-steps/.ghcid b/libs/small-steps/.ghcid deleted file mode 100644 index 60331b22c16..00000000000 --- a/libs/small-steps/.ghcid +++ /dev/null @@ -1 +0,0 @@ ---command="cabal repl --repl-options='-isrc -fwarn-unused-binds -fwarn-unused-imports -fno-code -fobject-code -g2 -fno-break-on-exception -fno-break-on-error -ferror-spans -j -Wno-unused-packages'" --clear --no-height-limit --reverse-errors --reload=../../ --outputfile=/tmp/small-steps-ghcid.txt \ No newline at end of file diff --git a/libs/small-steps/CHANGELOG.md b/libs/small-steps/CHANGELOG.md deleted file mode 100644 index 402e4cb78c8..00000000000 --- a/libs/small-steps/CHANGELOG.md +++ /dev/null @@ -1,23 +0,0 @@ -# Version history for `small-steps` - -## 1.1.0.1 - -* - -## 1.1.0.0 - -* Change `applySTSOptsEither`, `Extended.applySTS`, `Simple.applySTS` - to use `NonEmpty (PredicateFailure _)` instead of `[PredicateFailure _]` - -### `testlib` - -* Change `invalidSignalsAreGenerated`, `Trace`, `checkTrace`, `applySTSTest`, `traceFromInitState`, `forAllTraceFromInitState`,`onlyValidSignalsAreGeneratedFromInitState` to use `NonEmpty (PredicateFailure _)` instead of `[PredicateFailure _]` -* Moved `small-steps-test` library here (`small-steps:testlib`) as sublibrary - -## 1.0.1.0 - -* Add `failOnJust`, `failOnNonEmpty`, `failureOnJust`, `failureOnNonEmpty` - -## 1.0.0.0 - -* First properly versioned release diff --git a/libs/small-steps/Setup.hs b/libs/small-steps/Setup.hs deleted file mode 100644 index e8ef27dbba9..00000000000 --- a/libs/small-steps/Setup.hs +++ /dev/null @@ -1,3 +0,0 @@ -import Distribution.Simple - -main = defaultMain diff --git a/libs/small-steps/flake.nix b/libs/small-steps/flake.nix deleted file mode 100644 index 04dbce48a97..00000000000 --- a/libs/small-steps/flake.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ - outputs = inputs: let - main = inputs.main or (import ../../nix/flake-compat.nix).defaultNix; - in { - packages = - builtins.mapAttrs (_: {cabalProject, ...}: { - default = cabalProject.hsPkgs.small-steps.components.library; - }) - main.legacyPackages; - inherit (main) devShells; - }; -} diff --git a/libs/small-steps/small-steps.cabal b/libs/small-steps/small-steps.cabal deleted file mode 100644 index e1ce310fdf6..00000000000 --- a/libs/small-steps/small-steps.cabal +++ /dev/null @@ -1,108 +0,0 @@ -cabal-version: 3.0 -name: small-steps -version: 1.1.0.0 -license: Apache-2.0 -maintainer: operations@iohk.io -author: IOHK -homepage: https://github.com/intersectmbo/cardano-ledger -synopsis: Small step semantics -category: Control -build-type: Simple -extra-source-files: CHANGELOG.md - -source-repository head - type: git - location: https://github.com/intersectmbo/cardano-ledger - subdir: libs/small-steps - -flag sts_assert - description: Enable STS assertions by default - default: False - manual: True - -library - exposed-modules: - Control.State.Transition - Control.State.Transition.Extended - Control.State.Transition.Simple - Control.Provenance - - hs-source-dirs: src - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wunused-packages - - build-depends: - aeson, - base >=4.14 && <5, - containers, - data-default-class, - free, - mtl, - nothunks, - cardano-strict-containers, - text, - transformers >=0.5, - validation-selective - - if flag(sts_assert) - cpp-options: -DSTS_ASSERT - -library testlib - exposed-modules: - Test.Control.State.Transition.Invalid.Trace - Test.Control.State.Transition.Generator - Test.Control.State.Transition.Trace - Test.Control.State.Transition.Trace.Generator.QuickCheck - Test.Hedgehog.Extra.Manual - - visibility: public - hs-source-dirs: testlib - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wunused-packages - - build-depends: - base >=4.14 && <5, - deepseq, - cardano-ledger-binary:testlib ^>=1.3, - hedgehog >=1.0.4, - tasty-hunit, - microlens, - microlens-th, - mtl, - nothunks, - transformers >=0.5, - QuickCheck, - small-steps >=1.0, - cardano-strict-containers - -test-suite tests - type: exitcode-stdio-1.0 - main-is: Main.hs - hs-source-dirs: test - other-modules: - Test.Control.State.Transition.Examples.Sum - Test.Control.State.Transition.Examples.GlobalSum - Test.Control.State.Transition.Examples.CommitReveal - - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wunused-packages - -threaded - - build-depends: - base, - containers, - hedgehog >=1.0.4, - hspec, - mtl, - QuickCheck, - Unique, - cardano-crypto-class, - cardano-ledger-binary, - small-steps, - testlib diff --git a/libs/small-steps/src/Control/Provenance.hs b/libs/small-steps/src/Control/Provenance.hs deleted file mode 100644 index 5dacf4ff23c..00000000000 --- a/libs/small-steps/src/Control/Provenance.hs +++ /dev/null @@ -1,353 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DeriveFoldable #-} -{-# LANGUAGE DeriveFunctor #-} -{-# LANGUAGE DeriveTraversable #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -{- The ProvM is a Monad State Transformer, designed for computing provenance -(or metadata) about an underlying computation. By running a computation with type -(ProvM meta m a) one gets the underlying computation of type (m a). Switches -control whether the metadata is computed or not. --} -module Control.Provenance ( - ProvM (..), - - -- * Basic Provenance Monad Transformer - PObject, - - -- * Dynamically typed Provenance objects - Provenance, - - -- * Type constraint on data stored in PObject - Prov, - - -- * ProvM instantiated (Map Text PObject) - BlackBox, - - -- * Abstraction barrier to isolate the provenence type from the result type. - - -- * Operations in ProvM - lift, - putM, - getM, - modifyM, - modifyWithBlackBox, - runProv, - runWithProv, - runOtherProv, - liftProv, - dump, - - -- * Operations in Prov instantiation - store, - push, - pull, - update, - updateWithBlackBox, - pushOtherProv, - runWithProvM, - runProvM, - - -- * Operation on PObject - find, - observe, - - -- * For testing invariants - preservesNothing, - preservesJust, -) -where - -import Control.Monad.State.Strict (MonadState (..), MonadTrans (..), StateT (..)) -import Data.Aeson (ToJSON (..)) -import Data.Map.Strict (Map, empty, insert) -import qualified Data.Map.Strict as Map -import Data.Maybe.Strict -import Data.Text (Text, unpack) -import Data.Type.Equality (TestEquality (testEquality)) -import NoThunks.Class (NoThunks (..), allNoThunks) -import Type.Reflection (TypeRep, Typeable, typeOf, typeRep, (:~:) (Refl)) - --- ====================================================== - --- | --- The Provenance Monad is just the StateT transformer --- wrapped in a newtype, where the state is (StrictMaybe t). --- By running the state transformer with an initial state of SNothing --- we indicate we are not collecting provenance. With an initial --- state of (SJust t), we are collecting provenance. If we start off --- as SNothing, then actions on the state are no-ops and are ignored. --- We maintain several invariants. If we start with SNothing, we get --- SNothing, and if we start with (SJust s) we end up with (SJust t) --- --- invariant1 (ProvM m) = do (_,SNothing) <- runStateT m SNothing --- invariant2 (ProvM m) = do (_,SJust t) <- runStateT m (SJust 1) --- --- The second invariant is that regardless of whether we compute --- provenance or not, the non-provenance part is the same. --- Currently this is enforced by the BlackBox type and its API. --- --- invariant3 (ProvM m) = do --- (ans1,SNothing) <- runStateT m SNothing --- (ans2,SJust p) <- runStateT m (SJust s) --- pure(ans1 == ans2) --- --- All operations that read the provenance (i.e the state) return --- a (BlackBox t). BlackBoxes can only be used to modify provenance. -newtype ProvM t m a = ProvM (StateT (StrictMaybe t) m a) - deriving (Functor, Applicative, Monad) - -instance MonadTrans (ProvM t) where - lift x = ProvM (lift x) - --- | Run and compute the result as well as the provenance. Supply an initial value for the provenance. -runWithProvM :: Monad m => s -> ProvM s m a -> m (a, s) -runWithProvM s (ProvM m) = do - (a, x) <- runStateT m (SJust s) - case x of - SNothing -> error ("(SJust state) returns SNothing in runWithProvM") - SJust st -> pure (a, st) -{-# INLINE runWithProvM #-} - --- | Run the computation with SNothing. Expend no resources to compute provenance. -runProvM :: Monad m => ProvM s m b -> m b -runProvM (ProvM m) = do - pair <- runStateT m SNothing - case pair of - (a, SNothing) -> pure a - (_, SJust _) -> error ("SNothing returns (SJust p) in runProvM") -{-# INLINE runProvM #-} - --- ====================================================================== --- Helper functions and types - --- | BlackBox is an abstraction barrier. Reading the provenance is always returned --- in a BlackBox. The only way to open the BlackBox is to use one of the BlackBlox --- eliminator operations: modifyWithBlackBox or runOtherProv, that merge the contents of the --- BlackBox into the current provenance. This ensures that there is no easy way for the --- provenance computation to have an effect on the result of the underlying computation. -data BlackBox t = Box !t | NoBox - deriving (Show, Functor) - --- Helper for modifyM. This runs in (STateT p m a), modifyM runs in (ProvM p m a) - -modifyMState :: Monad m => (t -> t) -> StateT (StrictMaybe t) m () -modifyMState delta = do - mstore <- get - case mstore of - SNothing -> pure () - (SJust st) -> put (SJust (delta st)) -{-# INLINE modifyMState #-} - --- | Overwrite the current provenance with something new. -putM :: Monad m => s -> ProvM s m () -putM s = ProvM (modifyMState (const s)) -{-# INLINE putM #-} - --- | Extract the current provenance. The result is wrapped in --- a BlackBox. This ensures that provenance cannot be used in the --- non-provenance part of the computation. -getM :: Monad m => ProvM s m (BlackBox s) -getM = ProvM (do m <- get; case m of SNothing -> pure NoBox; SJust t -> pure (Box t)) -{-# INLINE getM #-} - --- | Modify the provenance if collecting provenance, otherwise do nothing. -modifyM :: Monad m => (t -> t) -> ProvM t m () -modifyM delta = ProvM (modifyMState delta) -{-# INLINE modifyM #-} - -modifyWithBlackBox :: Monad m => BlackBox p -> (p -> t -> t) -> ProvM t m () -modifyWithBlackBox (Box x) delta = ProvM (modifyMState (delta x)) -modifyWithBlackBox NoBox _ = ProvM (pure ()) -{-# INLINE modifyWithBlackBox #-} - --- Are we currently collecting provenance? Not to be exported. -active :: Monad m => ProvM s m Bool -active = ProvM (do m <- get; pure (case m of SNothing -> False; SJust _ -> True)) -{-# INLINE active #-} - --- | Run a provenance computation, with provenance s1, and lift the --- result to a provenance computation with provenance s2. Use the active --- state of the s2 computation to decide if we actually compute the --- provenance s1. The s1 result is returned in a BlackBox. This ensures that --- provenance cannot be used in the non-provenance part of the computation. -runOtherProv :: Monad m => s1 -> ProvM s1 m a -> ProvM s2 m (a, BlackBox s1) -runOtherProv initial other = do - t <- active - if t - then ProvM (lift $ do (a, s) <- runWithProvM initial other; pure (a, Box s)) - else ProvM (lift $ do a <- runProvM other; pure (a, NoBox)) -{-# INLINE runOtherProv #-} - --- | lift a provenenace computation from one provenance type (s1) to another (s2) -liftProv :: Monad m => ProvM s1 m a -> s1 -> (a -> s1 -> s2 -> s2) -> ProvM s2 m a -liftProv computation inits1 combine = - do - (a, blackbox) <- runOtherProv inits1 computation - modifyWithBlackBox blackbox (combine a) - pure a -{-# INLINE liftProv #-} - --- ======================================================================= - --- | A special case of the ProvM Monad, where the state type is Store --- a (Map Text PObject), where PObject is a dynamically typed value. This --- allows the collection of a Set of provenance values, indexed by keys of --- type Text. As in the ProvM monad, if run with 'runProv' operations on --- the Store are ignored. -type Prov m a = ProvM Store m a - --- | Run the (Prov m a) computation and ignore the provenance part -runProv :: Monad m => Prov m t -> m t -runProv (ProvM m) = do (a, _) <- runStateT m SNothing; pure a - --- | Run the (Prov m a) computation, compute and return the provenance as well as the result. -runWithProv :: Monad m => Prov m t -> m (t, Store) -runWithProv = runWithProvM empty - --- | Run a computation in the underlying monad (m), return that value in the --- (Prov m) monad. As a side effect store that value under the given key --- equivalent to: store key m = do { a <- lift m; push key a; pure a} -store :: forall t m. (Provenance t, Monad m) => Text -> m t -> Prov m t -store key m = ProvM (do a <- lift m; modifyMState (insert key (pobject a)); pure a) -{-# INLINE store #-} - --- | Push a key value pair into the provenance store. Overwrites any --- existing POjects stored under that key. -push :: (Provenance t, Monad m) => Text -> t -> Prov m () -push key t = ProvM (modifyMState (insert key (pobject t))) -{-# INLINE push #-} - --- | Modify the value stored at the given key. If the key isn't found --- or the PObject at that key has the wrong type, do nothing. -update :: forall t m. (Provenance t, Monad m) => Text -> (t -> t) -> Prov m () -update key delta = ProvM action2 - where - action2 = do - m <- get - case findM @t key m of - SJust t -> modifyMState (insert key (pobject @t (delta t))) - SNothing -> pure () -{-# INLINE update #-} - --- | Modify the value stored at the given key using a value in a BlackBox. --- if the key isn't found, or the PObject at that key has the wrong type, do nothing. -updateWithBlackBox :: - forall t m s. (Provenance t, Monad m) => Text -> BlackBox s -> (s -> t -> t) -> Prov m () -updateWithBlackBox key (Box s) delta = update key (delta s) -updateWithBlackBox _ NoBox _ = pure () -{-# INLINE updateWithBlackBox #-} - --- | Reads the provenance value at a key. The value is returned --- in a BlackBox. There are 3 reasons the BlackBox may be empty. --- 1) The computation is not collecting provenance. --- 2) The map does not contain the key --- 3) The value at the key has the wrong type. -pull :: forall t m. (Monad m, Typeable t) => Text -> Prov m (BlackBox t) -pull key = ProvM (do m <- get; case findM key m of SNothing -> pure NoBox; SJust t -> pure (Box t)) -{-# INLINE pull #-} - --- | Return a String representation of the current provenance store. -dump :: Monad m => Prov m String -dump = - ProvM - ( do - mstore <- get - case mstore of - SJust m -> pure (observe m) - SNothing -> pure "SNothing Store" - ) - --- | Push the provenance of a computation, under the given key. The --- computation has provenance s1, and lift the result to a provenance --- computation with provenance Store. Use the active state of the Store --- computation to decide if we actually want to compute the --- provenance s1, and push it, or simply ignore it. -pushOtherProv :: (Provenance s1, Monad m) => Text -> s1 -> ProvM s1 m a -> ProvM Store m a -pushOtherProv key initial other = do - t <- active - if t - then - ProvM - ( do - (a, v) <- lift (runWithProvM initial other) - modifyMState (insert key (pobject v)) - pure a - ) - else ProvM (lift $ runProvM other) - --- ================================================================ --- Helper functions to implement the operations on Prov --- that manipulate PObject values. - --- | Since PObjects are dynamically typed, What operations are --- required on a type to act as Provenance? We might want to --- add or subtract some properties from this list. -type Provenance t = (Typeable t, ToJSON t, Show t, NoThunks t) - --- | Provenance Object -data PObject where - PObject :: Provenance t => !(TypeRep t) -> !t -> PObject - -instance NoThunks PObject where - showTypeOf _ = "PObject" - wNoThunks ctxt (PObject _ t) = allNoThunks [noThunks ctxt t] - -instance Show PObject where - show (PObject ty t) = "#" ++ show t ++ "::" ++ show ty - --- | extract a value with the given type from a PObject. If the PObject --- does not have the right type, returns SNothing. If the type context --- of the call does not fix the type, one can use a type application like --- extract @[Int] pobject -extract :: forall t. Typeable t => PObject -> StrictMaybe t -extract (PObject ty n) = case testEquality ty (typeRep @t) of Just Refl -> SJust n; Nothing -> SNothing - --- | inject a type into the PObject type. -pobject :: Provenance t => t -> PObject -pobject !n = PObject (typeOf n) n - --- ============================================================== --- Maps of PObjects is how we store Provenance in the ProvM Store monad. --- Here we define some useful helper functions on these Maps - -type Store = Map Text PObject - --- | Find a value for a given key from a Store (Map Text PObject). If --- the Store does not have that key, or the PObject at that key --- does not have the right type, returns SNothing. If the type context --- of the call does not fix the type, one can use a type --- application like: find @Bool key map -find :: forall t k. (Ord k, Typeable t) => k -> Map k PObject -> StrictMaybe t -find key m = case Map.lookup key m of Just obj -> extract obj; Nothing -> SNothing - --- A useful helper function -findM :: forall t k. (Ord k, Typeable t) => k -> StrictMaybe (Map k PObject) -> StrictMaybe t -findM _ SNothing = SNothing -findM key (SJust m) = find key m - --- | Turn a Map of PObjects into a String, indicating its contents. -observe :: Store -> String -observe m = unlines (map f (Map.assocs m)) - where - f (key, PObject _ t) = unpack key ++ " =\n " ++ show t - --- ======================================================================= --- useful for testing invariants, The type StrictMaybe is local to this --- module, and is not exported, so these predicates are defined here to --- support testing these invariants. - -preservesNothing :: Monad m => ProvM t m a -> m Bool -preservesNothing (ProvM m) = do - (_, maybet) <- runStateT m SNothing - case maybet of SNothing -> pure True; SJust _ -> pure False - -preservesJust :: Monad m => t -> ProvM t m a -> m Bool -preservesJust t (ProvM m) = do - (_, maybet) <- runStateT m (SJust t) - case maybet of SNothing -> pure False; SJust _ -> pure True diff --git a/libs/small-steps/src/Control/State/Transition.hs b/libs/small-steps/src/Control/State/Transition.hs deleted file mode 100644 index 15d78f0b283..00000000000 --- a/libs/small-steps/src/Control/State/Transition.hs +++ /dev/null @@ -1,4 +0,0 @@ --- | Small step state transition systems. -module Control.State.Transition (module X) where - -import Control.State.Transition.Simple as X diff --git a/libs/small-steps/src/Control/State/Transition/Extended.hs b/libs/small-steps/src/Control/State/Transition/Extended.hs deleted file mode 100644 index e7396f06778..00000000000 --- a/libs/small-steps/src/Control/State/Transition/Extended.hs +++ /dev/null @@ -1,830 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE CPP #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DefaultSignatures #-} -{-# LANGUAGE DeriveDataTypeable #-} -{-# LANGUAGE DeriveFunctor #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilyDependencies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} - --- | Small step state transition systems. -module Control.State.Transition.Extended ( - RuleType (..), - RuleTypeRep, - RuleContext, - IRC (..), - TRC (..), - Rule, - TransitionRule, - InitialRule, - Assertion (..), - AssertionViolation (..), - AssertionException (..), - STS (..), - STUB, - Embed (..), - (?!), - (?!:), - validate, - validateTrans, - validateTransLabeled, - Label, - SingEP (..), - EventPolicy (..), - EventReturnType, - labeled, - labeledPred, - labeledPredE, - ifFailureFree, - whenFailureFree, - failBecause, - failOnJust, - failOnNonEmpty, - failureOnJust, - failureOnNonEmpty, - judgmentContext, - trans, - liftSTS, - tellEvent, - tellEvents, - EventReturnTypeRep, - mapEventReturn, - - -- * Apply STS - AssertionPolicy (..), - ValidationPolicy (..), - ApplySTSOpts (..), - applySTSOpts, - applySTSOptsEither, - applySTS, - applySTSIndifferently, - reapplySTS, - globalAssertionPolicy, - - -- * Exported to allow running rules independently - applySTSInternal, - applyRuleInternal, - RuleInterpreter, - STSInterpreter, - runRule, - - -- * Random thing - Threshold (..), - sfor_, -) -where - -import Control.Exception (Exception (..), throw) -import Control.Monad (when) -import Control.Monad.Free.Church (F, MonadFree (wrap), foldF, liftF) -import Control.Monad.Identity (Identity (..)) -import Control.Monad.State.Class (MonadState (..), modify) -import Control.Monad.Trans.Class (lift) -import Control.Monad.Trans.Except (ExceptT, runExceptT, throwE) -import Control.Monad.Trans.State.Strict (StateT (..)) -import Data.Bifunctor (Bifunctor (second), first) -import Data.Coerce (Coercible, coerce) -import Data.Data (Data, Typeable) -import Data.Default.Class (Default, def) -import Data.Foldable as F (find, toList, traverse_) -import Data.Functor (($>), (<&>)) -import Data.Kind (Type) -import Data.List.NonEmpty (NonEmpty (..)) -import qualified Data.List.NonEmpty as NE -import Data.Typeable (typeRep) -import Data.Void (Void) -import NoThunks.Class (NoThunks (..)) -import Validation (Validation (..), eitherToValidation) - --- | In order to avoid boolean blindness we create specialized type for the --- concept of any rule having information about overall state of the nested --- clause. -data IsFailing - = Failing - | NotFailing - deriving (Eq, Show) - -data RuleType - = Initial - | Transition - --- | Singleton instances. --- --- Since our case is so small we don't bother with the singletons library. -data SRuleType a where - SInitial :: SRuleType 'Initial - STransition :: SRuleType 'Transition - -class RuleTypeRep t where - rTypeRep :: SRuleType t - -instance RuleTypeRep 'Initial where - rTypeRep = SInitial - -instance RuleTypeRep 'Transition where - rTypeRep = STransition - --- | Context available to initial rules. -newtype IRC sts = IRC (Environment sts) - --- | Context available to transition rules. -newtype TRC sts = TRC (Environment sts, State sts, Signal sts) - -deriving instance - ( Show (Environment sts) - , Show (State sts) - , Show (Signal sts) - ) => - Show (TRC sts) - -type family RuleContext (t :: RuleType) = (ctx :: Type -> Type) | ctx -> t where - RuleContext 'Initial = IRC - RuleContext 'Transition = TRC - -type InitialRule sts = Rule sts 'Initial (State sts) - -type TransitionRule sts = Rule sts 'Transition (State sts) - --- | An assertion is a validation condition for the STS system in question. It --- should be used to define properties of the system as a whole that cannot be --- violated under normal circumstances - e.g. a violation implies a failing in --- the rule logic. --- --- Assertions should not check for conditions that may differ between --- different rules in a system, since the interpreter may stop the system upon --- presence of a failed assertion. --- --- Whether assertions are checked is a matter for the STS interpreter. -data Assertion sts - = -- | Pre-condition. Checked before the rule fires. - PreCondition String (TRC sts -> Bool) - | -- | Post-condition. Checked after the rule fires, and given access - -- to the resultant state as well as the initial context. - PostCondition String (TRC sts -> State sts -> Bool) - -data AssertionViolation sts = AssertionViolation - { avSTS :: String - , avMsg :: String - , avCtx :: TRC sts - , avState :: Maybe (State sts) - } - -instance STS sts => Show (AssertionViolation sts) where - show = renderAssertionViolation - -data AssertionException where - AssertionException :: forall sts. STS sts => AssertionViolation sts -> AssertionException - -instance Show AssertionException where - show (AssertionException exc) = show exc - -instance Exception AssertionException - --- | State transition system. -class - ( Eq (PredicateFailure a) - , Show (PredicateFailure a) - , Monad (BaseM a) - , Typeable a - ) => - STS a - where - -- | Type of the state which the system transitions between. - type State a :: Type - - -- | Signal triggering a state change. - type Signal a :: Type - - -- | Environment type. - type Environment a :: Type - - -- | Monad into which to interpret the rules. - type BaseM a :: Type -> Type - - type BaseM a = Identity - - -- | Event type. - type Event a :: Type - - type Event a = Void - - -- | Descriptive type for the possible failures which might cause a transition - -- to fail. - -- - -- As a convention, `PredicateFailure`s which are "structural" (meaning that - -- they are not "throwable" in practice, and are used to pass control from - -- one transition rule to another) are prefixed with `S_`. - -- - -- Structural `PredicateFailure`s represent conditions between rules where - -- the disjunction of all rules' preconditions is equal to `True`. That is, - -- either one rule will throw a structural `PredicateFailure` and the other - -- will succeed, or vice-versa. - type PredicateFailure a :: Type - - -- | Rules governing transition under this system. - initialRules :: [InitialRule a] - default initialRules :: Default (State a) => [InitialRule a] - initialRules = [pure def] - - transitionRules :: [TransitionRule a] - - -- | Assertions about the transition system. - assertions :: [Assertion a] - assertions = [] - - -- | Render an assertion violation. - -- - -- Defaults to using 'show', but note that this does not know how to render - -- the context. So for more information you should define your own renderer - -- here. - renderAssertionViolation :: AssertionViolation a -> String - renderAssertionViolation (AssertionViolation sts msg _ _) = - "AssertionViolation (" <> sts <> "): " <> msg - --- | Embed one STS within another. -class (STS sub, BaseM sub ~ BaseM super) => Embed sub super where - -- | Wrap a predicate failure of the subsystem in a failure of the super-system. - wrapFailed :: PredicateFailure sub -> PredicateFailure super - - wrapEvent :: Event sub -> Event super - default wrapEvent :: Coercible (Event sub) (Event super) => Event sub -> Event super - wrapEvent = coerce - -instance STS sts => Embed sts sts where - wrapFailed = id - -data EventPolicy - = EventPolicyReturn - | EventPolicyDiscard - -data SingEP ep where - EPReturn :: SingEP 'EventPolicyReturn - EPDiscard :: SingEP 'EventPolicyDiscard - -type family EventReturnType ep sts a :: Type where - EventReturnType 'EventPolicyReturn sts a = (a, [Event sts]) - EventReturnType _ _ a = a - -class EventReturnTypeRep ert where - eventReturnTypeRep :: SingEP ert - -instance EventReturnTypeRep 'EventPolicyReturn where - eventReturnTypeRep = EPReturn - -instance EventReturnTypeRep 'EventPolicyDiscard where - eventReturnTypeRep = EPDiscard - -discardEvents :: forall ep a. SingEP ep -> forall s. EventReturnType ep s a -> a -discardEvents ep = case ep of - EPReturn -> fst - EPDiscard -> id - -getEvents :: forall ep. SingEP ep -> forall s a. EventReturnType ep s a -> [Event s] -getEvents ep ert = case ep of - EPReturn -> snd ert - EPDiscard -> [] - --- | Map over an arbitrary 'EventReturnType'. -mapEventReturn :: - forall ep sts a b. - EventReturnTypeRep ep => - (a -> b) -> - EventReturnType ep sts a -> - EventReturnType ep sts b -mapEventReturn f ert = case eventReturnTypeRep @ep of - EPReturn -> first f ert - EPDiscard -> f ert - -data Clause sts (rtype :: RuleType) a where - Lift :: - STS sts => - (BaseM sts) a -> - (a -> b) -> - Clause sts rtype b - GetCtx :: - (RuleContext rtype sts -> a) -> - Clause sts rtype a - SubTrans :: - Embed sub sts => - RuleContext rtype sub -> - -- Subsequent computation with state introduced - (State sub -> a) -> - Clause sts rtype a - Writer :: - [Event sts] -> - a -> - Clause sts rtype a - Predicate :: - Validation (NonEmpty e) a -> - -- Type of failure to return if the predicate fails - (e -> PredicateFailure sts) -> - a -> - Clause sts rtype a - -- | Label part of a rule. The interpreter may be configured to only run parts - -- of rules governed by (or by the lack of) certain labels. - Label :: - NonEmpty Label -> - Rule sts rtype a -> - a -> - Clause sts rtype a - IfFailureFree :: Rule sts rtype a -> Rule sts rtype a -> Clause sts rtype a - -deriving instance Functor (Clause sts rtype) - -type Rule sts rtype = F (Clause sts rtype) - --- | Label for a predicate. This can be used to control which predicates get --- run. -type Label = String - --- | Fail with `PredicateFailure`'s in STS if `Validation` was unsuccessful. -validate :: Validation (NonEmpty (PredicateFailure sts)) () -> Rule sts ctx () -validate = validateTrans id - --- | Same as `validation`, except with ability to transform opaque failures --- into `PredicateFailure`s with a help of supplied function. -validateTrans :: - -- | Transformation function for all errors - (e -> PredicateFailure sts) -> - Validation (NonEmpty e) () -> - Rule sts ctx () -validateTrans t v = liftF $ Predicate v t () - --- | Same as `validation`, except with ability to translate opaque failures --- into `PredicateFailure`s with a help of supplied function. -validateTransLabeled :: - -- | Transformation function for all errors - (e -> PredicateFailure sts) -> - -- | Supply a list of labels to be used as filters when STS is executed - NonEmpty Label -> - -- | Actual validations to be executed - Validation (NonEmpty e) () -> - Rule sts ctx () -validateTransLabeled t labels v = liftF $ Label labels (liftF $ Predicate v t ()) () - --- | Oh noes! --- --- This takes a condition (a boolean expression) and a failure and results in --- a clause which will throw that failure if the condition fails. -(?!) :: Bool -> PredicateFailure sts -> Rule sts ctx () -(?!) cond onFail = - liftF $ - Predicate (if cond then Success () else Failure (onFail :| [])) id () - -infix 1 ?! - -failBecause :: PredicateFailure sts -> Rule sts ctx () -failBecause = (False ?!) - --- | Produce a predicate failure when condition contains a Just value, contents of which --- can be used inside the predicate failure -failOnJust :: Maybe a -> (a -> PredicateFailure sts) -> Rule sts ctx () -failOnJust cond onJust = liftF $ Predicate (failureOnJust cond onJust) id () - --- | Produce a failure when condition contains a Just value, contents of which can be used --- inside the failure -failureOnJust :: Maybe a -> (a -> e) -> Validation (NonEmpty e) () -failureOnJust cond onJust = - case cond of - Nothing -> Success () - Just a -> Failure (onJust a :| []) - --- | Produce a predicate failure when supplied foldable is not empty, contents of which --- will be converted to a NonEmpty list and can be used inside the predicate failure. -failOnNonEmpty :: Foldable f => f a -> (NonEmpty a -> PredicateFailure sts) -> Rule sts ctx () -failOnNonEmpty cond onNonEmpty = liftF $ Predicate (failureOnNonEmpty cond onNonEmpty) id () - --- | Produce a failure when supplied foldable is not empty, contents of which will be --- converted to a NonEmpty list and theh can be used inside the failure. -failureOnNonEmpty :: Foldable f => f a -> (NonEmpty a -> e) -> Validation (NonEmpty e) () -failureOnNonEmpty cond = failureOnJust (NE.nonEmpty (F.toList cond)) - --- | Oh noes with an explanation --- --- We interpret this as "What?" "No!" "Because:" -(?!:) :: Either e () -> (e -> PredicateFailure sts) -> Rule sts ctx () -(?!:) cond onFail = - liftF $ - Predicate (eitherToValidation $ first pure cond) onFail () - --- | Labeled predicate. This may be used to control which predicates are run --- using 'ValidateSuchThat'. -labeledPred :: NonEmpty Label -> Bool -> PredicateFailure sts -> Rule sts ctx () -labeledPred lbls cond orElse = labeled lbls (cond ?! orElse) - --- | Labeled predicate with an explanation -labeledPredE :: - NonEmpty Label -> - Either e () -> - (e -> PredicateFailure sts) -> - Rule sts ctx () -labeledPredE lbls cond orElse = labeled lbls (cond ?!: orElse) - --- | Labeled clause. This will only be executed if the interpreter is set to --- execute clauses with this label. -labeled :: NonEmpty Label -> Rule sts ctx () -> Rule sts ctx () -labeled lbls subrule = liftF $ Label lbls subrule () - -trans :: - Embed sub super => RuleContext rtype sub -> Rule super rtype (State sub) -trans ctx = wrap $ SubTrans ctx pure - -ifFailureFree :: Rule sts rtype a -> Rule sts rtype a -> Rule sts rtype a -ifFailureFree x y = liftF (IfFailureFree x y) - -whenFailureFree :: Rule sts rtype () -> Rule sts rtype () -whenFailureFree action = ifFailureFree action (pure ()) - -liftSTS :: - STS sts => - (BaseM sts) a -> - Rule sts ctx a -liftSTS f = wrap $ Lift f pure - --- | Get the judgment context -judgmentContext :: Rule sts rtype (RuleContext rtype sts) -judgmentContext = wrap $ GetCtx pure - -{------------------------------------------------------------------------------ --- STS interpreters -------------------------------------------------------------------------------} - --- | Control which assertions are enabled. -data AssertionPolicy - = AssertionsAll - | -- | Only run preconditions - AssertionsPre - | -- | Only run postconditions - AssertionsPost - | AssertionsOff - deriving (Eq, Show) - --- | Control which predicates are evaluated during rule processing. -data ValidationPolicy - = ValidateAll - | ValidateNone - | ValidateSuchThat ([Label] -> Bool) - -data ApplySTSOpts ep = ApplySTSOpts - { asoAssertions :: AssertionPolicy - -- ^ Enable assertions during STS processing. - -- If this option is enabled, STS processing will terminate on violation - -- of an assertion. - , asoValidation :: ValidationPolicy - -- ^ Validation policy - , asoEvents :: SingEP ep - -- ^ Event policy - } - -type STSInterpreter ep = - forall s m rtype. - (STS s, RuleTypeRep rtype, m ~ BaseM s) => - RuleContext rtype s -> - m (EventReturnType ep s (State s, [PredicateFailure s])) - -type RuleInterpreter ep = - forall s m rtype. - (STS s, RuleTypeRep rtype, m ~ BaseM s) => - RuleContext rtype s -> - Rule s rtype (State s) -> - m (EventReturnType ep s (State s, [PredicateFailure s])) - --- | Apply an STS with options. Note that this returns both the final state and --- the list of predicate failures. -applySTSOpts :: - forall s m rtype ep. - (STS s, RuleTypeRep rtype, m ~ BaseM s) => - ApplySTSOpts ep -> - RuleContext rtype s -> - m (EventReturnType ep s (State s, [PredicateFailure s])) -applySTSOpts ApplySTSOpts {asoAssertions, asoValidation, asoEvents} ctx = - let goRule :: IsFailing -> RuleInterpreter ep - goRule isFailing = applyRuleInternal isFailing asoEvents asoValidation goSTS - goSTS :: IsFailing -> STSInterpreter ep - goSTS isFailing c = - runExceptT (applySTSInternal asoEvents asoAssertions (goRule isFailing) c) >>= \case - Left err -> throw $! AssertionException err - Right res -> pure $! res - in goSTS NotFailing ctx - -applySTSOptsEither :: - forall s m rtype ep. - (STS s, RuleTypeRep rtype, m ~ BaseM s) => - ApplySTSOpts ep -> - RuleContext rtype s -> - m (Either (NonEmpty (PredicateFailure s)) (EventReturnType ep s (State s))) -applySTSOptsEither opts ctx = - let r1 = applySTSOpts opts ctx - in case asoEvents opts of - EPDiscard -> - r1 <&> \case - (st, []) -> Right st - (_, pf : pfs) -> Left $ pf :| pfs - EPReturn -> - r1 <&> \case - ((st, []), evts) -> Right (st, evts) - ((_, pf : pfs), _) -> Left $ pf :| pfs - -applySTS :: - forall s m rtype. - (STS s, RuleTypeRep rtype, m ~ BaseM s) => - RuleContext rtype s -> - m (Either (NonEmpty (PredicateFailure s)) (State s)) -applySTS = applySTSOptsEither defaultOpts - where - defaultOpts = - ApplySTSOpts - { asoAssertions = globalAssertionPolicy - , asoValidation = ValidateAll - , asoEvents = EPDiscard - } - -globalAssertionPolicy :: AssertionPolicy - -#ifdef STS_ASSERT -globalAssertionPolicy = AssertionsAll -#else -globalAssertionPolicy = AssertionsOff -#endif - --- | Re-apply an STS. --- --- It is assumed that the caller of this function has previously applied this --- STS, and can guarantee that it completed successfully. No predicates or --- assertions will be checked when calling this function. -reapplySTS :: - forall s m rtype. - (STS s, RuleTypeRep rtype, m ~ BaseM s) => - RuleContext rtype s -> - m (State s) -reapplySTS ctx = applySTSOpts defaultOpts ctx <&> fst - where - defaultOpts = - ApplySTSOpts - { asoAssertions = AssertionsOff - , asoValidation = ValidateNone - , asoEvents = EPDiscard - } - -applySTSIndifferently :: - forall s m rtype. - (STS s, RuleTypeRep rtype, m ~ BaseM s) => - RuleContext rtype s -> - m (State s, [PredicateFailure s]) -applySTSIndifferently = - applySTSOpts - ApplySTSOpts - { asoAssertions = AssertionsAll - , asoValidation = ValidateAll - , asoEvents = EPDiscard - } - --- | Apply a rule even if its predicates fail. --- --- If the rule successfully applied, the list of predicate failures will be --- empty. -applyRuleInternal :: - forall (ep :: EventPolicy) s m rtype result. - (STS s, RuleTypeRep rtype, m ~ BaseM s) => - -- | We need to know if the current STS incurred at least one - -- PredicateFailure. This is necessary because `applyRuleInternal` is called - -- recursively through the @goSTS@ argument, which will not have access to any - -- of the predicate failures occured in other branches of STS rule execusion tree. - IsFailing -> - SingEP ep -> - ValidationPolicy -> - -- | Interpreter for subsystems - (IsFailing -> STSInterpreter ep) -> - RuleContext rtype s -> - Rule s rtype result -> - m (EventReturnType ep s (result, [PredicateFailure s])) -applyRuleInternal isAlreadyFailing ep vp goSTS jc r = do - (s, er) <- flip runStateT ([], []) $ foldF runClause r - case ep of - EPDiscard -> pure (s, fst er) - EPReturn -> pure ((s, fst er), snd er) - where - isFailing :: StateT ([PredicateFailure s], [Event s]) m IsFailing - isFailing = - case isAlreadyFailing of - Failing -> pure Failing - NotFailing -> do - isFailingNow <- null . fst <$> get - pure $ if isFailingNow then NotFailing else Failing - runClause :: Clause s rtype a -> StateT ([PredicateFailure s], [Event s]) m a - runClause (Lift f next) = next <$> lift f - runClause (GetCtx next) = pure $ next jc - runClause (IfFailureFree notFailingRule failingRule) = do - isFailing >>= \case - Failing -> foldF runClause failingRule - NotFailing -> foldF runClause notFailingRule - runClause (Predicate cond orElse val) = - case vp of - ValidateNone -> pure val - _ -> case cond of - Success x -> pure x - Failure errs -> modify (first (map orElse (reverse (NE.toList errs)) <>)) >> pure val - runClause (Label lbls subrule val) = - if validateIf (NE.toList lbls) - then foldF runClause subrule - else pure val - runClause (SubTrans (subCtx :: RuleContext _rtype sub) next) = do - isFailingNow <- isFailing - s <- lift $ goSTS isFailingNow subCtx - let ss :: State sub - sfails :: [PredicateFailure sub] - sevs :: [Event sub] - (ss, sfails) = discardEvents ep @sub s - sevs = getEvents ep @sub @(State sub, [PredicateFailure sub]) s - traverse_ (\a -> modify (first (a :))) $ wrapFailed @sub @s <$> sfails - runClause $ Writer (wrapEvent @sub @s <$> sevs) () - pure $ next ss - runClause (Writer w a) = case ep of - EPReturn -> modify (second (<> w)) $> a - EPDiscard -> pure a - validateIf lbls = case vp of - ValidateAll -> True - ValidateNone -> False - ValidateSuchThat f -> f lbls - -applySTSInternal :: - forall s m rtype ep. - (STS s, RuleTypeRep rtype, m ~ BaseM s) => - SingEP ep -> - AssertionPolicy -> - -- | Interpreter for rules - RuleInterpreter ep -> - RuleContext rtype s -> - ExceptT (AssertionViolation s) m (EventReturnType ep s (State s, [PredicateFailure s])) -applySTSInternal ep ap goRule ctx = - successOrFirstFailure <$> applySTSInternal' rTypeRep ctx - where - successOrFirstFailure :: - [EventReturnType ep s (State s, [PredicateFailure s])] -> - EventReturnType ep s (State s, [PredicateFailure s]) - successOrFirstFailure xs = - case find (\x -> null $ snd (discardEvents ep @s x :: (State s, [PredicateFailure s]))) xs of - Nothing -> - case xs of - [] -> error "applySTSInternal was called with an empty set of rules" - s' : _ -> case ep of - EPDiscard -> (fst s', concatMap snd xs) - EPReturn -> (((fst . fst) s', concatMap (snd . fst) xs), snd s') - Just s' -> case ep of - EPDiscard -> (fst s', []) - EPReturn -> ((fst $ fst s', []), snd s') - applySTSInternal' :: - SRuleType rtype -> - RuleContext rtype s -> - ExceptT (AssertionViolation s) m [EventReturnType ep s (State s, [PredicateFailure s])] - applySTSInternal' SInitial env = - lift (goRule env `traverse` initialRules) - applySTSInternal' STransition jc = do - when (assertPre ap) $ - sfor_ (assertions @s) $! \case - PreCondition msg cond - | not (cond jc) -> - let assertion = - AssertionViolation - { avSTS = show $ typeRep assertion - , avMsg = msg - , avCtx = jc - , avState = Nothing - } - in throwE assertion - _ -> pure () - res <- lift (goRule jc `traverse` transitionRules) - -- We only care about running postconditions if the state transition was - -- successful. - when (assertPost ap) $ - let res' :: (EventReturnType ep s (State s, [PredicateFailure s])) - res' = successOrFirstFailure res - in case discardEvents ep @s res' :: (State s, [PredicateFailure s]) of - (st, []) -> - sfor_ (assertions @s) $! \case - PostCondition msg cond - | not (cond jc st) -> - let assertion = - AssertionViolation - { avSTS = show $ typeRep assertion - , avMsg = msg - , avCtx = jc - , avState = Just st - } - in throwE assertion - _ -> pure () - _ -> pure () - pure $! res - - assertPre :: AssertionPolicy -> Bool - assertPre AssertionsAll = True - assertPre AssertionsPre = True - assertPre _ = False - - assertPost :: AssertionPolicy -> Bool - assertPost AssertionsAll = True - assertPost AssertionsPost = True - assertPost _ = False - --- | This can be used to specify predicate failures in STS rules where a value --- is beyond a certain threshold. --- --- TODO move this somewhere more sensible -newtype Threshold a = Threshold a - deriving (Eq, Ord, Show, Data, Typeable, NoThunks) - -{------------------------------------------------------------------------------ --- Utils -------------------------------------------------------------------------------} - --- | A stub rule with no transitions to use as a placeholder -data STUB (e :: Type) (st :: Type) (si :: Type) (f :: Type) (m :: Type -> Type) - -instance - ( Eq f - , Monad m - , Show f - , Typeable e - , Typeable f - , Typeable si - , Typeable st - , Typeable m - ) => - STS (STUB e st si f m) - where - type Environment (STUB e st si f m) = e - type State (STUB e st si f m) = st - type Signal (STUB e st si f m) = si - type PredicateFailure (STUB e st si f m) = f - type BaseM (STUB e st si f m) = m - - transitionRules = [] - initialRules = [] - --- | Map each element of a structure to an action, evaluate these actions from --- left to right, and ignore the results. For a version that doesn't ignore the --- results see 'Data.Traversable.traverse'. --- --- This is a strict variant on 'Data.Foldable.traverse_', which evaluates each --- element of the structure even in a monad which would otherwise allow this to --- be lazy. -straverse_ :: (Foldable t, Applicative f) => (a -> f b) -> t a -> f () -straverse_ f = foldr c (pure ()) - where - -- See Note [List fusion and continuations in 'c'] - c !x !k = (*> k) $! f x - {-# INLINE c #-} - --- | 'sfor_' is 'straverse_' with its arguments flipped. For a version --- that doesn't ignore the results see 'Data.Traversable.for'. --- --- >>> sfor_ ([1..4] :: [Int]) print --- 1 --- 2 --- 3 --- 4 -sfor_ :: (Foldable t, Applicative f) => t a -> (a -> f b) -> f () -{-# INLINE sfor_ #-} -sfor_ = flip straverse_ - -tellEvent :: - Event sts -> - Rule sts ctx () -tellEvent e = tellEvents [e] - -tellEvents :: - [Event sts] -> - Rule sts ctx () -tellEvents es = liftF $ Writer es () - --- ================================= - --- | runRule :: RuleInterpreter 'EventPolicyDiscard --- run a rule given its context, to get a BaseM computation -runRule :: - (STS s, RuleTypeRep rtype) => - RuleContext rtype s -> - Rule s rtype result -> - BaseM s (result, [PredicateFailure s]) -runRule cntxt rule = applyRuleInternal NotFailing EPDiscard ValidateAll goSTS cntxt rule - where - goRule isFailing c r = applyRuleInternal isFailing EPDiscard ValidateAll goSTS c r - goSTS :: IsFailing -> STSInterpreter 'EventPolicyDiscard - goSTS isFailing c = - runExceptT (applySTSInternal EPDiscard AssertionsOff (goRule isFailing) c) >>= \case - Left err -> throw $! AssertionException err - Right res -> pure $! res diff --git a/libs/small-steps/src/Control/State/Transition/Simple.hs b/libs/small-steps/src/Control/State/Transition/Simple.hs deleted file mode 100644 index 0d86dcea93e..00000000000 --- a/libs/small-steps/src/Control/State/Transition/Simple.hs +++ /dev/null @@ -1,30 +0,0 @@ -{-# LANGUAGE GADTs #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeOperators #-} - --- | Simple state transition system over the Identity monad. -module Control.State.Transition.Simple ( - applySTSIndifferently, - applySTS, - module Extended, -) -where - -import Control.Monad.Identity (Identity (..)) -import Control.State.Transition.Extended as Extended hiding (applySTS, applySTSIndifferently) -import qualified Control.State.Transition.Extended as X -import Data.List.NonEmpty (NonEmpty) - -applySTSIndifferently :: - forall s rtype. - (STS s, RuleTypeRep rtype, Identity ~ BaseM s) => - RuleContext rtype s -> - (State s, [PredicateFailure s]) -applySTSIndifferently ctx = runIdentity $ X.applySTSIndifferently ctx - -applySTS :: - forall s rtype. - (STS s, RuleTypeRep rtype, BaseM s ~ Identity) => - RuleContext rtype s -> - Either (NonEmpty (PredicateFailure s)) (State s) -applySTS ctx = runIdentity $ X.applySTS ctx diff --git a/libs/small-steps/test/Main.hs b/libs/small-steps/test/Main.hs deleted file mode 100644 index cd9c7187a12..00000000000 --- a/libs/small-steps/test/Main.hs +++ /dev/null @@ -1,35 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} - -import System.IO (BufferMode (LineBuffering), hSetBuffering, hSetEncoding, stdout, utf8) -import qualified Test.Control.State.Transition.Examples.CommitReveal as CommitReveal -import qualified Test.Control.State.Transition.Examples.GlobalSum as GSum -import qualified Test.Control.State.Transition.Examples.Sum as Sum -import Test.Hspec -import Test.Hspec.QuickCheck -import Test.Hspec.Runner -import Test.QuickCheck (expectFailure) - -conf :: Config -conf = - defaultConfig - { configTimes = True - , configColorMode = ColorAlways - } - -spec :: Spec -spec = describe "All" $ do - describe "Sum" $ do - prop "it allows to inspect generated trace counterexamples" $ expectFailure Sum.prop_qc_Bounded - prop "Only valid traces are generated" Sum.prop_qc_onlyValidSignalsAreGenerated - prop "Classified" Sum.prop_qc_Classified - describe "CommitReveal" $ do - prop "we're inspecting generated counterexamples" $ expectFailure CommitReveal.prop_qc_UniqueData - prop "a counterexample of an invalid signal should be found" $ - expectFailure CommitReveal.prop_qc_OnlyValidSignals - GSum.spec - -main :: IO () -main = do - hSetBuffering stdout LineBuffering - hSetEncoding stdout utf8 - hspecWith conf spec diff --git a/libs/small-steps/test/Test/Control/State/Transition/Examples/CommitReveal.hs b/libs/small-steps/test/Test/Control/State/Transition/Examples/CommitReveal.hs deleted file mode 100644 index dc145a208e5..00000000000 --- a/libs/small-steps/test/Test/Control/State/Transition/Examples/CommitReveal.hs +++ /dev/null @@ -1,247 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} - -module Test.Control.State.Transition.Examples.CommitReveal where - -import Cardano.Crypto.Hash (Hash, HashAlgorithm) -import Cardano.Crypto.Hash.Short (ShortHash) -import Cardano.Ledger.Binary (EncCBOR (..), hashEncCBOR) -import Control.State.Transition ( - Environment, - PredicateFailure, - STS (..), - Signal, - State, - TRC (TRC), - initialRules, - judgmentContext, - transitionRules, - (?!), - ) -import Data.Kind (Type) -import Data.List.Unique (allUnique) -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Set (Set) -import qualified Data.Set as Set -import Data.Typeable (Typeable) -import qualified Test.Control.State.Transition.Trace as Trace -import qualified Test.Control.State.Transition.Trace.Generator.QuickCheck as STS.Gen -import Test.QuickCheck ( - Arbitrary, - Property, - arbitrary, - choose, - elements, - oneof, - shrink, - withMaxSuccess, - ) -import Prelude hiding (id) - --- | Commit-reveal transition system, where data hashes are committed and then --- revealed. --- --- The first type parameter denotes the type of hash algorithm used. --- --- The second parameter denotes the structure used to associate a commit to its --- hash. See 'CRSt' --- --- The third parameter is the data that will be associated to the 'Commit' --- signal. -data CR hashAlgo (hashToDataMap :: Type -> Type -> Type) commitData - --- | Commit-reveal transition system state. -data CRSt hashAlgo hashToDataMap commitData = CRSt - { hashToData :: !(hashToDataMap (Hash hashAlgo Data) commitData) - -- ^ Part of the state used to associate data to the hash that was committed. - -- - -- This is used only by the generators, so 'hashToDataMap' will be - -- instantiated to a 'Map' in the generators, for testing purposes; and it - -- will be instantiated to 'NoOpMap' in an eventual implementation. - -- - -- Here 'hashToData' is an example of a phantom variable, which wouldn't be - -- present in the formal specification, but it is needed in the executable - -- spec to be able to generate traces. - , committedHashes :: !(Set (Hash hashAlgo Data)) - } - -deriving instance - Eq (hashToDataMap (Hash hashAlgo Data) commitData) => - Eq (CRSt hashAlgo hashToDataMap commitData) - -deriving instance - Show (hashToDataMap (Hash hashAlgo Data) commitData) => - Show (CRSt hashAlgo hashToDataMap commitData) - -class MapLike m k v where - insert :: k -> v -> m k v -> m k v - - delete :: k -> m k v -> m k v - -data NoOpMap a b = NoOpMap - --- | This is the 'MapLike' instance one would use if the executable spec would --- be used in an implementation (where no generators are needed). -instance MapLike NoOpMap a b where - insert _ _ _ = NoOpMap - - delete _ _ = NoOpMap - -instance Ord k => MapLike Map k v where - insert = Map.insert - - delete = Map.delete - -data CRSignal hashAlgo commitData - = Commit (Hash hashAlgo Data) commitData - | Reveal Data - deriving (Ord, Eq, Show) - -isCommit :: CRSignal hashAlgo commitData -> Bool -isCommit Commit {} = True -isCommit _ = False - -newtype Data = Data {getData :: (Id, Int)} - deriving (Eq, Show, EncCBOR, Ord, Arbitrary) - -newtype Id = Id {getId :: Int} - deriving (Eq, Show, EncCBOR, Ord, Arbitrary) - -data CRPredicateFailure hashAlgo (hashToDataMap :: Type -> Type -> Type) commitData - = InvalidReveal Data - | AlreadyComitted (Hash hashAlgo Data) - deriving (Eq, Show) - -instance - ( HashAlgorithm hashAlgo - , Typeable hashToDataMap - , Typeable commitData - , MapLike hashToDataMap (Hash hashAlgo Data) commitData - , Monoid (hashToDataMap (Hash hashAlgo Data) commitData) - ) => - STS (CR hashAlgo hashToDataMap commitData) - where - type Environment (CR hashAlgo hashToDataMap commitData) = () - - type - State (CR hashAlgo hashToDataMap commitData) = - CRSt hashAlgo hashToDataMap commitData - - type - Signal (CR hashAlgo hashToDataMap commitData) = - CRSignal hashAlgo commitData - - type - PredicateFailure (CR hashAlgo hashToDataMap commitData) = - CRPredicateFailure hashAlgo hashToDataMap commitData - - initialRules = - [ pure $! - CRSt - { hashToData = mempty - , committedHashes = Set.empty - } - ] - - transitionRules = - [ do - TRC ((), CRSt {hashToData, committedHashes}, crSignal) <- judgmentContext - case crSignal of - Commit dataHash commitData -> do - dataHash `Set.notMember` committedHashes ?! AlreadyComitted dataHash - pure $! - CRSt - { hashToData = insert dataHash commitData hashToData - , committedHashes = Set.insert dataHash committedHashes - } - Reveal someData -> do - hashEncCBOR minBound someData - `Set.member` committedHashes - ?! InvalidReveal someData - pure $! - CRSt - { hashToData = - delete - (hashEncCBOR minBound someData) - hashToData - , committedHashes = - Set.delete - (hashEncCBOR minBound someData) - committedHashes - } - ] - -instance - HashAlgorithm hashAlgo => - STS.Gen.HasTrace (CR hashAlgo Map Data) () - where - envGen _ = pure () - - sigGen () () CRSt {hashToData, committedHashes} = - if Set.null committedHashes - then genCommit - else oneof [genCommit, genReveal] - where - genCommit = do - id <- Id <$> arbitrary - n <- choose (-2, 2) - let newData = Data (id, n) - pure $! Commit (hashEncCBOR minBound newData) newData - genReveal = do - hashToReveal <- elements $ Set.toList committedHashes - let dataToReveal = hashToData Map.! hashToReveal - pure $! Reveal dataToReveal - - shrinkSignal (Commit _ someData) = - recalculateCommit <$> shrink someData - where - recalculateCommit shrunkData = - Commit - (hashEncCBOR minBound shrunkData) - shrunkData - shrinkSignal (Reveal someData) = Reveal <$> shrink someData - --- | Check that unique data is generated. This is supposed to fail, since --- there's nothing in the STS that prevents two commits of the same data. The --- resulting minimal counterexample should be a trace of the form: --- --- > commit (hash d0) -> reveal d0 -> commit (hash d0) --- --- where it shouldn't be possible to shrink @d0@ any further. -prop_qc_UniqueData :: Property -prop_qc_UniqueData = - STS.Gen.forAllTrace @(CR ShortHash Map Data) @() - () - 100 - () - (noDuplicatedData . Trace.traceSignals Trace.OldestFirst) - where - noDuplicatedData :: [CRSignal ShortHash Data] -> Bool - noDuplicatedData = allUnique . filter isCommit - --- | Check that only valid signals are generated. --- --- This property should fail since the generators don't check that the generated --- commits are unique. The resulting minimal counterexample should be a trace of --- the form: --- --- > commit (hash d0) -> commit (hash d0) --- --- where it shouldn't be possible to shrink @d0@ any further. -prop_qc_OnlyValidSignals :: Property -prop_qc_OnlyValidSignals = - withMaxSuccess 5000 $ -- We need to test a large - -- number of times to make sure - -- we get a collision in the - -- generated data - STS.Gen.onlyValidSignalsAreGenerated @(CR ShortHash Map Data) @() () 150 () diff --git a/libs/small-steps/test/Test/Control/State/Transition/Examples/GlobalSum.hs b/libs/small-steps/test/Test/Control/State/Transition/Examples/GlobalSum.hs deleted file mode 100644 index 7dd6303155b..00000000000 --- a/libs/small-steps/test/Test/Control/State/Transition/Examples/GlobalSum.hs +++ /dev/null @@ -1,92 +0,0 @@ -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedLists #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - --- | Simple example of a transition system whose states contain the sum of the --- integers seen in the signals, where 'sum' is an abstract monoidal sum given --- in the enviroment. -module Test.Control.State.Transition.Examples.GlobalSum where - -import Control.Arrow (right) -import Control.Monad.Reader -import Control.State.Transition.Extended -import Data.Foldable (foldl') -import Data.Void (Void) -import Test.Hspec -import Prelude hiding (sum) - -newtype Ops = Ops - { opSum :: [Int] -> Int - } - -data GSUM - -newtype GSUMEvent = ErrorEvent Void deriving (Eq, Show) - -data NoFailure = NoFailure deriving (Eq, Show) - -instance STS GSUM where - type Environment GSUM = () - - type State GSUM = Int - - type Signal GSUM = [Int] - - type BaseM GSUM = Reader Ops - - type PredicateFailure GSUM = NoFailure - - type Event _ = GSUMEvent - - initialRules = [pure 0] - - transitionRules = - [ do - TRC ((), st, xs) <- judgmentContext - sum <- liftSTS $ reader opSum - tellEvent $ ErrorEvent (error "Event has been evaluated!") - labeled ["testLabel"] $ (sum xs /= 56) ?! NoFailure - sum xs /= 56 ?! NoFailure - return $! st + sum xs - ] - -spec :: Spec -spec = - describe "STS.Extended" $ do - it "Sum" $ withSum `shouldBe` Right 55 - it "Product" $ withProduct `shouldBe` Right 3628800 - it "Sum/Lazy Events" $ withLazyEventsSum `shouldBe` Right 55 - describe "Sum/Validate" $ do - it "Filtered" $ - withLblSum (ValidateSuchThat ("testLabel" `notElem`)) `shouldBe` Left [NoFailure] - it "Unfiltered" $ - withLblSum (ValidateSuchThat (const True)) `shouldBe` Left [NoFailure, NoFailure] - it "None" $ - withLblSum ValidateNone `shouldBe` Right 56 - where - inputs = [1 .. 10] - ctx = TRC ((), 0, inputs) - withSum = runReader (applySTS @GSUM ctx) (Ops (foldl' (+) 0)) - withLblSum vp = - right fst $ - runReader (applySTSOptsEither @GSUM lblOpts ctx) (Ops (foldl' (+) 1)) - where - lblOpts = - ApplySTSOpts - { asoAssertions = AssertionsOff - , asoValidation = vp - , asoEvents = EPReturn - } - - withProduct = runReader (applySTS @GSUM ctx) (Ops (foldl' (*) 1)) - withLazyEventsSum = - right fst $ - runReader (applySTSOptsEither @GSUM evtOpts ctx) (Ops (foldl' (+) 0)) - where - evtOpts = - ApplySTSOpts - { asoAssertions = AssertionsOff - , asoValidation = ValidateAll - , asoEvents = EPReturn - } diff --git a/libs/small-steps/test/Test/Control/State/Transition/Examples/Sum.hs b/libs/small-steps/test/Test/Control/State/Transition/Examples/Sum.hs deleted file mode 100644 index 3c82260a5bd..00000000000 --- a/libs/small-steps/test/Test/Control/State/Transition/Examples/Sum.hs +++ /dev/null @@ -1,69 +0,0 @@ -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - --- | Simple example of a transition system whose states contain the sum of the --- integers seen in the signals. -module Test.Control.State.Transition.Examples.Sum where - -import Control.State.Transition -import qualified Hedgehog.Gen as Gen -import qualified Hedgehog.Range as Range -import Test.Control.State.Transition.Generator -import Test.Control.State.Transition.Trace -import qualified Test.Control.State.Transition.Trace.Generator.QuickCheck as STS.Gen -import Test.QuickCheck (Property, arbitrary, shrink, withMaxSuccess) - -data SUM - -data NoFailure = NoFailure deriving (Eq, Show) - -instance STS SUM where - type Environment SUM = () - - type State SUM = Int - - type Signal SUM = [Int] - - type PredicateFailure SUM = NoFailure - - initialRules = [pure 0] - - transitionRules = - [ do - TRC ((), st, xs) <- judgmentContext - return $! st + sum xs - ] - -instance HasTrace SUM where - envGen _ = pure () - - sigGen _ _ = - Gen.list (Range.constant 1 100) (Gen.integral (Range.constant (-3) 3)) - --- | This property is intended to be used to manually inspect the --- counterexamples that we get. -prop_qc_Bounded :: Property -prop_qc_Bounded = - STS.Gen.forAllTrace @SUM @() - () - 100 - () - ((< 10) . lastState) - --- | Property that simply classifies the trace length distribution. -prop_qc_Classified :: Property -prop_qc_Classified = - STS.Gen.traceLengthsAreClassified @SUM () 100 10 () - -prop_qc_onlyValidSignalsAreGenerated :: Property -prop_qc_onlyValidSignalsAreGenerated = - withMaxSuccess 300 $ - STS.Gen.onlyValidSignalsAreGenerated @SUM @() () 100 () - -instance STS.Gen.HasTrace SUM () where - envGen _ = pure () - - sigGen _traceEnv _env _st = arbitrary - - shrinkSignal = shrink diff --git a/libs/small-steps/testlib/Test/Control/State/Transition/Generator.hs b/libs/small-steps/testlib/Test/Control/State/Transition/Generator.hs deleted file mode 100644 index d1473a24895..00000000000 --- a/libs/small-steps/testlib/Test/Control/State/Transition/Generator.hs +++ /dev/null @@ -1,727 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DefaultSignatures #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} - --- | Generators for transition systems. --- --- How should these work? --- - We start with some initial environment. --- - We start with some initial base state. --- - We generate a stream of signals. These might be influenced by some running state --- - We run each signal through -module Test.Control.State.Transition.Generator ( - HasTrace, - SignalGenerator, - BaseEnv, - interpretSTS, - envGen, - sigGen, - traceSigGen, - genTrace, - trace, - traceWithProfile, - traceOfLength, - traceOfLengthWithInitState, - traceSuchThat, - ofLengthAtLeast, - suchThatLastState, - nonTrivialTrace, - HasSizeInfo, - isTrivial, - sampleMaxTraceSize, - randomTrace, - randomTraceOfSize, - TraceLength (Maximum, Desired), - TraceProfile (TraceProfile, proportionOfValidSignals, failures), - proportionOfInvalidSignals, - - -- * Invalid trace generation - invalidTrace, - - -- * Trace classification - classifyTraceLength, - classifySize, - mkIntervals, - ratio, - - -- * Trace properties - traceLengthsAreClassified, - onlyValidSignalsAreGenerated, - onlyValidSignalsAreGeneratedForTrace, - invalidSignalsAreGenerated, - - -- * Helpers - coverFailures, -) -where - -import Control.Arrow (second) -import Control.Monad (forM, void) -import Control.Monad.Trans.Maybe (MaybeT) -import Control.State.Transition.Extended ( - BaseM, - Environment, - IRC (IRC), - PredicateFailure, - STS, - Signal, - State, - TRC (TRC), - ) -import Data.Data (Constr, Data, toConstr) -import Data.Either (isLeft) -import Data.Foldable (traverse_) -import Data.Functor.Identity (Identity (..)) -import Data.Kind (Type) -import Data.List.NonEmpty (NonEmpty) -import Data.Maybe (fromMaybe) -import Data.String (fromString) -import Data.Word (Word64) -import GHC.Stack (HasCallStack) -import Hedgehog ( - Gen, - MonadTest, - Property, - PropertyT, - classify, - cover, - evalEither, - footnoteShow, - forAll, - property, - success, - ) -import qualified Hedgehog.Gen as Gen -import Hedgehog.Internal.Gen (integral_, runDiscardEffectT) -import Hedgehog.Internal.Property (CoverPercentage) -import Hedgehog.Internal.Tree (NodeT (NodeT), TreeT, nodeChildren, treeValue) -import Hedgehog.Range (Size (Size)) -import qualified Hedgehog.Range as Range -import qualified Test.Control.State.Transition.Invalid.Trace as Invalid -import Test.Control.State.Transition.Trace ( - Trace, - TraceOrder (OldestFirst), - applySTSTest, - closure, - extractValues, - lastState, - mkTrace, - traceLength, - traceSignals, - _traceEnv, - ) -import Test.Hedgehog.Extra.Manual (Manual) -import qualified Test.Hedgehog.Extra.Manual as Manual - -class STS s => HasTrace s where - type BaseEnv s :: Type - type BaseEnv s = () - - -- | Interpret the action from the base monad into a pure value, given some - -- initial environment. This obviously places some contraints on the nature of - -- the base monad for a trace to be completed. - interpretSTS :: forall a. (BaseEnv s -> BaseM s a -> a) - default interpretSTS :: BaseM s ~ Identity => forall a. BaseEnv s -> BaseM s a -> a - interpretSTS _ (Identity x) = x - - -- | Generate an initial environment that is based on the given trace length. - envGen :: - -- | Trace length that will be used by 'trace' or 'traceOfLength'. - Word64 -> - Gen (Environment s) - - -- | Generate a (valid) signal given an environment and a pre-state. - sigGen :: - SignalGenerator s - - trace :: - BaseEnv s -> - -- | Maximum length of the generated traces. The actual length will be - -- between 0 and this maximum. - Word64 -> - Gen (Trace s) - trace baseEnv n = traceWithProfile @s baseEnv n allValid - - traceWithProfile :: - BaseEnv s -> - Word64 -> - TraceProfile s -> - Gen (Trace s) - traceWithProfile baseEnv n p = traceSigGenWithProfile baseEnv (Maximum n) p (sigGen @s) - - traceOfLength :: - BaseEnv s -> - -- | Desired length of the generated trace. If the signal generator can generate invalid signals - -- then the resulting trace might not have the given length. - Word64 -> - Gen (Trace s) - traceOfLength baseEnv n = traceSigGenWithProfile baseEnv (Desired n) allValid (sigGen @s) - - traceOfLengthWithInitState :: - BaseEnv s -> - -- | Desired length of the generated trace. If the signal generator can generate invalid signals - -- then the resulting trace might not have the given length. - Word64 -> - -- | A generator for Initial State, given the STS environment - (Environment s -> Gen (State s)) -> - Gen (Trace s) - traceOfLengthWithInitState baseEnv n mkSt0 = - traceSigGenWithProfileAndInitState baseEnv (Desired n) allValid (sigGen @s) mkSt0 - -type SignalGenerator s = Environment s -> State s -> Gen (Signal s) - -data TraceLength = Maximum Word64 | Desired Word64 - -data TraceProfile s = TraceProfile - { proportionOfValidSignals :: !Int - -- ^ Proportion of valid signals to generate. - , failures :: ![(Int, SignalGenerator s)] - -- ^ List of failure conditions to try generate when generating an invalid signal, and the - -- proportion of each failure. - } - -proportionOfInvalidSignals :: TraceProfile s -> Int -proportionOfInvalidSignals = sum . fmap fst . failures - -allValid :: TraceProfile s -allValid = - TraceProfile - { proportionOfValidSignals = 1 - , failures = [] - } - --- | Generate a signal by combining the generators using @hedgehog@'s --- 'frequency' combinator. -generateSignalWithFailureProportions :: - -- | Failure proportions. See 'failures' in 'TraceProfile'. - [(Int, SignalGenerator s)] -> - SignalGenerator s -generateSignalWithFailureProportions proportions env st = - Gen.frequency $ second aSigGenWithFailure <$> proportions - where - aSigGenWithFailure invalidSigGen = invalidSigGen env st - --- | Extract the maximum or desired integer value of the trace length. -traceLengthValue :: TraceLength -> Word64 -traceLengthValue (Maximum n) = n -traceLengthValue (Desired n) = n - -traceSigGen :: - forall s. - HasTrace s => - BaseEnv s -> - TraceLength -> - SignalGenerator s -> - Gen (Trace s) -traceSigGen baseEnv aTraceLength = traceSigGenWithProfile baseEnv aTraceLength allValid - -traceSigGenWithProfile :: - forall s. - HasTrace s => - BaseEnv s -> - TraceLength -> - TraceProfile s -> - SignalGenerator s -> - Gen (Trace s) -traceSigGenWithProfile baseEnv aTraceLength profile gen = do - env <- envGen @s (traceLengthValue aTraceLength) - case interpretSTS @s baseEnv $ applySTSTest @s (IRC env) of - -- Hedgehog will give up if the generators fail to produce any valid - -- initial state, hence we don't have a risk of entering an infinite - -- recursion. - Left _pf -> traceSigGen baseEnv aTraceLength gen - -- Applying an initial rule with an environment and state will simply - -- validate that state, so we do not care which state 'applySTS' returns. - Right st -> genTraceOfMaxOrDesiredLength baseEnv aTraceLength profile env st gen - --- | A variation of 'traceSigGenWithProfile' which takes an argument generator --- for the initial state of the given trace -traceSigGenWithProfileAndInitState :: - forall s. - HasTrace s => - BaseEnv s -> - TraceLength -> - TraceProfile s -> - SignalGenerator s -> - (Environment s -> Gen (State s)) -> - Gen (Trace s) -traceSigGenWithProfileAndInitState baseEnv aTraceLength profile gen mkSt0 = do - env <- envGen @s (traceLengthValue aTraceLength) - st0 <- mkSt0 env - - genTraceOfMaxOrDesiredLength baseEnv aTraceLength profile env st0 gen - -genTraceOfMaxOrDesiredLength :: - forall s. - HasTrace s => - BaseEnv s -> - TraceLength -> - TraceProfile s -> - Environment s -> - State s -> - SignalGenerator s -> - Gen (Trace s) -genTraceOfMaxOrDesiredLength baseEnv aTraceLength profile env st0 gen = - case aTraceLength of - Maximum n -> genTraceWithProfile baseEnv n profile env st0 gen - Desired n -> genTraceOfLength baseEnv n profile env st0 gen - --- | Return a (valid) trace generator given an initial state, environment, and --- signal generator. -genTrace :: - forall s. - HasTrace s => - BaseEnv s -> - -- | Trace upper bound. This will be linearly scaled as a function of the - -- generator size. - Word64 -> - -- | Environment, which remains constant in the system. - Environment s -> - -- | Initial state. - State s -> - -- | Signal generator. This generator relies on an environment and a state to - -- generate a signal. - SignalGenerator s -> - Gen (Trace s) -genTrace baseEnv ub = genTraceWithProfile baseEnv ub allValid - --- | Return a trace generator given an initial state, environment, and signal generator. -genTraceWithProfile :: - forall s. - HasTrace s => - BaseEnv s -> - -- | Trace upper bound. This will be linearly scaled as a function of the - -- generator size. - Word64 -> - TraceProfile s -> - -- | Environment, which remains constant in the system. - Environment s -> - -- | Initial state. - State s -> - -- | Signal generator. This generator relies on an environment and a state to - -- generate a signal. - SignalGenerator s -> - Gen (Trace s) -genTraceWithProfile baseEnv ub profile env st0 aSigGen = - do - -- Generate the initial size of the trace, but don't shrink it (notice the - -- use of 'integral_') since we will be shrinking the traces manually (so it - -- doesn't make sense to shrink the trace size). - -- - -- Note that the length of the resulting trace might be less than the - -- generated value if invalid signals (according to some current state) are - -- generated in 'loop'. - -- - -- A linear range will generate about one third of empty traces, which does - -- not seem sensible. Furthermore, in most cases it won't generate any trace - -- of size @ub@. Hence we need to tweak the frequency of the trace lengths. - n <- - Gen.frequency - [ (5, pure 0) - , (85, integral_ $ Range.linear 1 ub) - , (5, pure ub) - ] - genTraceOfLength baseEnv n profile env st0 aSigGen - --- | Return a (valid) trace generator that generates traces of the given size. If the signal --- generator can generate invalid signals, then the size of resulting trace is not guaranteed. -genTraceOfLength :: - forall s. - HasTrace s => - BaseEnv s -> - -- | Desired trace length. - Word64 -> - TraceProfile s -> - -- | Environment, which remains constant in the system. - Environment s -> - -- | Initial state. - State s -> - -- | Signal generator. This generator relies on an environment and a state to - -- generate a signal. - SignalGenerator s -> - Gen (Trace s) -genTraceOfLength baseEnv aTraceLength profile env st0 aSigGen = - Manual.fromManual $ fmap interleaveSigs $ loop aTraceLength st0 [] - where - loop :: - Word64 -> - State s -> - [(State s, TreeT (MaybeT Identity) (Signal s))] -> - Manual [(State s, TreeT (MaybeT Identity) (Signal s))] - loop 0 _ acc = pure acc - loop !d sti acc = do - sigTree :: TreeT (MaybeT Identity) (Signal s) <- - Manual.toManual $ - Gen.frequency - [ - ( proportionOfValidSignals profile - , aSigGen env sti - ) - , - ( proportionOfInvalidSignals profile - , generateSignalWithFailureProportions @s (failures profile) env sti - ) - ] - let - -- Take the root of the next-state signal tree. - mSig = treeValue $ runDiscardEffectT sigTree - case mSig of - Nothing -> - loop (d - 1) sti acc - Just sig -> - case interpretSTS @s baseEnv $ applySTSTest @s (TRC (env, sti, sig)) of - Left _err -> loop (d - 1) sti acc - Right sti' -> loop (d - 1) sti' ((sti', sigTree) : acc) - - interleaveSigs :: - [(State s, TreeT (MaybeT Identity) (Signal s))] -> - TreeT (MaybeT Identity) (Trace s) - interleaveSigs stateSignalTrees = - Manual.wrapTreeT $ - Just $ - NodeT - rootTrace - (fmap (fmap (interpretSTS @s baseEnv . closure @s env st0)) signalShrinksChilren) - where - rootStates :: [State s] - signalTrees :: [TreeT (MaybeT Identity) (Signal s)] - (rootStates, signalTrees) = unzip stateSignalTrees - rootSignals :: [Signal s] - rootSignals = fmap (fromMaybe err . treeValue . runDiscardEffectT) signalTrees - err = error "genTraceOfLength: the tree nodes must always contain a signal" - -- The states ensuing the root signals were calculated at 'loop' - -- already, so there is no need to apply the STS again. - rootTrace :: Trace s - rootTrace = mkTrace env st0 (zip rootStates rootSignals) - signalShrinks :: TreeT (MaybeT Identity) [Signal s] - signalShrinks = Manual.interleave signalTrees - -- The signals at the root of 'signalShrinks' are already included in - -- the 'rootTrace' so there is no need to include them again in the tree - -- of traces. Thus we only need to apply 'closure' to the children of - -- the shrink tree. - signalShrinksChilren :: [TreeT (MaybeT Identity) [Signal s]] - signalShrinksChilren = nodeChildren $ fromMaybe err $ Manual.unwrapTreeT signalShrinks - --- | Generate an invalid trace -invalidTrace :: - forall s. - HasTrace s => - BaseEnv s -> - -- | Maximum length of the generated traces. - Word64 -> - -- | Trace failure profile to be used to get an invalid signal. - [(Int, SignalGenerator s)] -> - Gen (Invalid.Trace s) -invalidTrace baseEnv maxTraceLength failureProfile = do - tr <- trace @s baseEnv maxTraceLength - let env = _traceEnv tr - st = lastState tr - iSig <- generateSignalWithFailureProportions @s failureProfile env st - let est' = interpretSTS @s baseEnv $ applySTSTest @s $ TRC (env, st, iSig) - pure $! - Invalid.Trace - { Invalid.validPrefix = tr - , Invalid.signal = iSig - , Invalid.errorOrLastState = est' - } - -traceSuchThat :: - forall s. - HasTrace s => - BaseEnv s -> - Word64 -> - (Trace s -> Bool) -> - Gen (Trace s) -traceSuchThat baseEnv n cond = Gen.filter cond (trace @s baseEnv n) - -ofLengthAtLeast :: Gen (Trace s) -> Int -> Gen (Trace s) -ofLengthAtLeast traceGen minLength = - Gen.filter ((minLength <=) . traceLength) traceGen - -suchThatLastState :: - forall s. - Gen (Trace s) -> - (State s -> Bool) -> - Gen (Trace s) -suchThatLastState traceGen cond = Gen.filter (cond . lastState) traceGen - --- | Generate a trace that contains at least one non-trivial signal. See --- 'HasSizeInfo'. -nonTrivialTrace :: - forall s. - (HasTrace s, HasSizeInfo (Signal s)) => - BaseEnv s -> - Word64 -> - Gen (Trace s) -nonTrivialTrace baseEnv ub = - Gen.filter (any (not . isTrivial) . traceSignals OldestFirst) (trace baseEnv ub) - -class HasSizeInfo sig where - isTrivial :: sig -> Bool - -instance HasSizeInfo [a] where - isTrivial = null - --------------------------------------------------------------------------------- --- Trace sampling utilities --------------------------------------------------------------------------------- - --- | Sample the maximum trace size, given the generator size and number of --- samples. -sampleMaxTraceSize :: - forall s. - HasTrace s => - BaseEnv s -> - -- | Trace's upper bound - Word64 -> - -- | Generator size - Int -> - -- | Number of samples to take - Word64 -> - IO Int -sampleMaxTraceSize baseEnv ub d n = - maximum - <$> forM [0 .. n] (const $ traceLength <$> Gen.sample (Gen.resize (Size d) (trace @s baseEnv ub))) - -randomTrace :: - forall s. - HasTrace s => - BaseEnv s -> - Word64 -> - IO (Trace s) -randomTrace baseEnv ub = Gen.sample (trace baseEnv ub) - -randomTraceOfSize :: - forall s. - HasTrace s => - BaseEnv s -> - Word64 -> - IO (Trace s) -randomTraceOfSize baseEnv desiredTraceLength = Gen.sample (traceOfLength baseEnv desiredTraceLength) - --------------------------------------------------------------------------------- --- Trace classification --------------------------------------------------------------------------------- - --- | Classify the trace length as either: --- --- - being empty --- - being a singleton --- - having the given maximum size --- - belonging to one of the intervals between 2 and the maximum size - 1. The --- number of intervals are determined by the @step@ parameter. -classifyTraceLength :: - Trace s -> - -- | Maximum size of the traces - Word64 -> - -- | Steps used to divide the interval - Word64 -> - PropertyT IO () -classifyTraceLength tr = classifySize "trace length:" tr (fromIntegral . traceLength) - --- | Classify the value size as either: --- --- - being empty --- - being a singleton --- - having the given maximum size --- - belonging to one of the intervals between 2 and the maximum size - 1. The --- number of intervals are determined by the @step@ parameter. -classifySize :: - (Show n, Integral n) => - -- | Prefix to be added to the label intervals - String -> - -- | Value to classify - a -> - -- | Size function - (a -> n) -> - -- | Maximum value size - n -> - -- | Steps used to divide the size interval - n -> - PropertyT IO () -classifySize prefixLabel value sizeF upBound step = do - classify (mkLabel "empty") $ sizeF value == 0 - classify (mkLabel "singleton") $ sizeF value == 1 - traverse_ classifySizeInterval $ mkIntervals 2 (upBound - 1) step - classify upBoundLabel $ sizeF value == upBound - where - upBoundLabel = mkLabel $ show upBound - mkLabel = fromString . ((prefixLabel ++ " ") ++) - classifySizeInterval (low, high) = - classify desc $! low <= sizeF value && sizeF value < high - where - -- Hedgehog's LabelName doesn't have a monoid instance at the moment... - desc = mkLabel $ "[" <> show low <> ", " <> show high <> ")" - --- | Given a lower bound @low@, an upper bound @high@ and a step size @step@ --- (both of which must be positive), divide the interval @[0, ub]@ into --- sub-intervals of @step@ size. --- --- If any of these values is negative the empty list will be returned. --- --- Examples: --- --- >>> mkIntervals 0 0 0 :: [(Int, Int)] --- [] --- --- >>> mkIntervals 0 10 2 :: [(Int, Int)] --- [(0,2),(2,4),(4,6),(6,8),(8,10)] --- --- >>> mkIntervals 1 10 2 :: [(Int, Int)] --- [(1,3),(3,5),(5,7),(7,9),(9,10)] --- --- --- >>> mkIntervals 3 10 3 :: [(Int, Int)] --- [(3,6),(6,9),(9,10)] --- --- >>> mkIntervals 5 2 3 :: [(Int, Int)] --- [] --- --- >>> mkIntervals (-1) 10 3 :: [(Int, Int)] --- [] --- --- >>> mkIntervals 1 (-10) 3 :: [(Int, Int)] --- [] --- --- >>> mkIntervals 1 1000 (-100) :: [(Int, Int)] --- [] -mkIntervals :: - Integral n => - -- | Interval lower bound - n -> - -- | Interval upper bound - n -> - -- | Step size, used to divide the interval in sub-intervals of the same - -- length. - n -> - [(n, n)] -mkIntervals low high step - | 0 <= low && low <= high && 0 < step = - [(low + i * step, high `min` (low + (i + 1) * step)) | i <- [0 .. n - 1]] - | otherwise = [] - where - highNorm = high - low - n = highNorm `div` step + 1 `min` (highNorm `mod` step) - --- | Given a function that computes an integral value from a trace, return that --- value as a ratio of the trace length. -ratio :: - Integral a => - (Trace s -> a) -> - Trace s -> - Double -ratio f tr = fromIntegral (f tr) / fromIntegral (traceLength tr) - --------------------------------------------------------------------------------- --- Trace properties --------------------------------------------------------------------------------- - --- | Property that simply classifies the lengths of the generated traces. -traceLengthsAreClassified :: - forall s. - (HasTrace s, Show (Environment s), Show (State s), Show (Signal s)) => - BaseEnv s -> - -- | Maximum trace length that the signal generator of 's' can generate. - Word64 -> - -- | Lengths of the intervals in which the lengths range should be split. - Word64 -> - Property -traceLengthsAreClassified baseEnv maximumTraceLength intervalSize = - property $ do - traceSample <- forAll (trace @s baseEnv maximumTraceLength) - classifyTraceLength traceSample maximumTraceLength intervalSize - success - --- | Check that the signal generator of 's' only generate valid signals. -onlyValidSignalsAreGenerated :: - forall s. - (HasTrace s, Show (Environment s), Show (State s), Show (Signal s), HasCallStack) => - BaseEnv s -> - -- | Maximum trace length. - Word64 -> - Property -onlyValidSignalsAreGenerated baseEnv maximumTraceLength = - onlyValidSignalsAreGeneratedForTrace baseEnv (trace @s baseEnv maximumTraceLength) - --- | Check that the signal generator of 's' only generate valid signals. -onlyValidSignalsAreGeneratedForTrace :: - forall s. - (HasTrace s, Show (Environment s), Show (State s), Show (Signal s), HasCallStack) => - BaseEnv s -> - Gen (Trace s) -> - Property -onlyValidSignalsAreGeneratedForTrace baseEnv traceGen = property $ do - tr <- forAll traceGen - let env :: Environment s - env = _traceEnv tr - - st' :: State s - st' = lastState tr - sig <- forAll (sigGen @s env st') - let result = interpretSTS @s baseEnv $ applySTSTest @s (TRC (env, st', sig)) - -- TODO: For some reason the result that led to the failure is not shown - -- (even without using tasty, and setting the condition to True === False) - footnoteShow st' - footnoteShow sig - footnoteShow result - void $ evalEither result - -coverFailures :: - forall m s a. - ( MonadTest m - , HasCallStack - , Data (PredicateFailure s) - , Data a - ) => - CoverPercentage -> - -- | Target predicate failures - [PredicateFailure s] -> - -- | Structure containing the failures - a -> - m () -coverFailures coverPercentage targetFailures failureStructure = do - traverse_ (coverFailure . toConstr) targetFailures - where - coverFailure predicateFailureConstructor = - cover - coverPercentage - (fromString $ show predicateFailureConstructor) - (predicateFailureConstructor `elem` failuresConstructors) - where - subFailures :: [PredicateFailure s] - subFailures = extractValues failureStructure - - failuresConstructors :: [Constr] - failuresConstructors = toConstr <$> subFailures - -invalidSignalsAreGenerated :: - forall s. - (HasTrace s, Show (Environment s), Show (State s), Show (Signal s), HasCallStack) => - BaseEnv s -> - -- | Failure profile. - [(Int, SignalGenerator s)] -> - -- | Maximum trace length. - Word64 -> - -- | Action to run when the an invalid signal is generated. - (NonEmpty (PredicateFailure s) -> PropertyT IO ()) -> - Property -invalidSignalsAreGenerated baseEnv failureProfile maximumTraceLength checkFailures = property $ do - tr <- forAll (invalidTrace @s baseEnv maximumTraceLength failureProfile) - - cover - 80 - "Invalid signals are generated when requested" - (isLeft $ Invalid.errorOrLastState tr) - - either checkFailures (const success) (Invalid.errorOrLastState tr) diff --git a/libs/small-steps/testlib/Test/Control/State/Transition/Invalid/Trace.hs b/libs/small-steps/testlib/Test/Control/State/Transition/Invalid/Trace.hs deleted file mode 100644 index a6d88cde482..00000000000 --- a/libs/small-steps/testlib/Test/Control/State/Transition/Invalid/Trace.hs +++ /dev/null @@ -1,51 +0,0 @@ -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE UndecidableInstances #-} - --- | Invalid transition system traces. --- --- An invalid trace consists of an valid prefix, and a last signal that --- __might__ be invalid. The validity of the signal depends on the probability --- of the trace generators of generating invalid signals. -module Test.Control.State.Transition.Invalid.Trace where - -import Control.State.Transition (Environment, PredicateFailure, Signal, State) -import Data.List.NonEmpty (NonEmpty) -import GHC.Generics (Generic) -import NoThunks.Class (NoThunks (..)) -import qualified Test.Control.State.Transition.Trace as Trace - -data Trace s = Trace - { validPrefix :: !(Trace.Trace s) - , signal :: !(Signal s) - -- ^ Last signal in the trace. This might cause a predicate failure, but it - -- isn't guaranteed to do so, since invalid trace generation is - -- probabilistic. - , errorOrLastState :: !(Either (NonEmpty (PredicateFailure s)) (State s)) - } - deriving (Generic) - -deriving instance - ( Eq (Environment s) - , Eq (State s) - , Eq (Signal s) - , Eq (PredicateFailure s) - ) => - (Eq (Trace s)) - -deriving instance - ( Show (Environment s) - , Show (State s) - , Show (Signal s) - , Show (PredicateFailure s) - ) => - (Show (Trace s)) - -instance - ( NoThunks (Environment s) - , NoThunks (State s) - , NoThunks (Signal s) - , NoThunks (PredicateFailure s) - ) => - (NoThunks (Trace s)) diff --git a/libs/small-steps/testlib/Test/Control/State/Transition/Trace.hs b/libs/small-steps/testlib/Test/Control/State/Transition/Trace.hs deleted file mode 100644 index 9f4673cd58e..00000000000 --- a/libs/small-steps/testlib/Test/Control/State/Transition/Trace.hs +++ /dev/null @@ -1,600 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveAnyClass #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TemplateHaskell #-} -{-# LANGUAGE TupleSections #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} - --- | Traces of transition systems and associated operators. --- --- This module also includes a minimal domain-specific-language to specify --- expectations on traces. -module Test.Control.State.Transition.Trace ( - SigState (..), - - -- * Trace checking - (.-), - (.->), - (.->>), - checkTrace, - - -- * Trace - Trace (..), - TraceOrder (NewestFirst, OldestFirst), - mkTrace, - traceEnv, - traceInitState, - traceSignals, - traceStates, - preStatesAndSignals, - SourceSignalTarget (..), - sourceSignalTargets, - traceLength, - traceInit, - lastState, - lastSignal, - firstAndLastState, - closure, - - -- * Miscellaneous utilities - extractValues, - applySTSTest, - getEvents, - splitTrace, -) -where - -import Control.DeepSeq (NFData) -import Control.Monad (void) -import Control.Monad.IO.Class (MonadIO, liftIO) -import Control.Monad.Reader (MonadReader, ReaderT, ask, runReaderT) -import Control.State.Transition.Extended hiding (Assertion, trans) -import Data.Data (Data, Typeable, cast, gmapQ) -import Data.Foldable (toList) -import Data.List.NonEmpty (NonEmpty) -import Data.Maybe (catMaybes) -import Data.Sequence.Strict (StrictSeq (Empty, (:<|), (:|>))) -import qualified Data.Sequence.Strict as SS -import qualified Data.Sequence.Strict as StrictSeq -import GHC.Generics (Generic) -import GHC.Stack (HasCallStack) -import Lens.Micro (Lens', lens, to, (^.), (^..)) -import Lens.Micro.TH (makeLenses) -import NoThunks.Class (NoThunks (..)) -import Test.Cardano.Ledger.Binary.TreeDiff (ToExpr, assertExprEqualWithMessage) -import Test.Tasty.HUnit (assertFailure, (@?=)) - --- Signal and resulting state. --- --- Strict in both arguments, unlike a tuple. -data SigState s = SigState !(State s) !(Signal s) - deriving (Generic) - -transSt :: Lens' (SigState s) (State s) -transSt = lens (\(SigState st _) -> st) (\(SigState _ x) st -> SigState st x) - -transSig :: Lens' (SigState s) (Signal s) -transSig = lens (\(SigState _ sig) -> sig) (\(SigState x _) sig -> SigState x sig) - -deriving instance - (Eq (State s), Eq (Signal s)) => (Eq (SigState s)) - -deriving instance - (Show (State s), Show (Signal s)) => (Show (SigState s)) - -instance - ( NoThunks (State s) - , NoThunks (Signal s) - ) => - (NoThunks (SigState s)) - --- | A successful trace of a transition system. -data Trace s = Trace - { _traceEnv :: !(Environment s) - -- ^ Environment under which the trace was run. - , _traceInitState :: !(State s) - -- ^ Initial state in the trace - , _traceTrans :: !(StrictSeq (SigState s)) - -- ^ Signals and resulting states observed in the trace. New elements are - -- put in front of the list. - } - deriving (Generic) - -makeLenses ''Trace - -deriving instance - ( NFData (Environment s) - , NFData (State s) - , NFData (SigState s) - ) => - (NFData (Trace s)) - -deriving instance - (Eq (State s), Eq (Signal s), Eq (Environment s)) => (Eq (Trace s)) - -deriving instance - (Show (State s), Show (Signal s), Show (Environment s)) => (Show (Trace s)) - -instance - ( NoThunks (Environment s) - , NoThunks (State s) - , NoThunks (Signal s) - ) => - (NoThunks (Trace s)) - --- | Make a trace given an environment and initial state. -mkTrace :: Environment s -> State s -> [(State s, Signal s)] -> Trace s -mkTrace env initState sigs = Trace env initState sigs' - where - sigs' = uncurry SigState <$> StrictSeq.fromList sigs - --- $setup --- | --- >>> :set -XTypeFamilies --- >>> import Control.State.Transition (initialRules, transitionRules) --- >>> import Control.State.Transition.Extended (STS (..)) --- >>> :{ --- data DUMMY --- data DummyPredicateFailure = CeciNEstPasUnePredicateFailure deriving (Eq, Show) --- instance STS DUMMY where --- type Environment DUMMY = Bool --- type State DUMMY = Int --- type Signal DUMMY = String --- type PredicateFailure DUMMY = DummyPredicateFailure --- initialRules = [] --- transitionRules = [] --- :} - --- | Extract the last state of a trace. Since a trace has at least an initial --- state, the last state of a trace is always defined. --- --- Examples: --- --- >>> tr0 = mkTrace True 0 [] :: Trace DUMMY --- >>> lastState tr0 --- 0 --- --- >>> tr01 = mkTrace True 0 [(1, "one")] :: Trace DUMMY --- >>> lastState tr01 --- 1 --- --- >>> tr012 = mkTrace True 0 [(2, "two"), (1, "one")] :: Trace DUMMY --- >>> lastState tr012 --- 2 -lastState :: Trace s -> State s -lastState Trace {_traceInitState, _traceTrans} = - case _traceTrans of - SigState st _ :<| _ -> st - _ -> _traceInitState - --- | Get the last applied signal in a trace (this is, the newest signal). --- --- --- Examples: --- --- >>> :set -XScopedTypeVariables --- >>> import Control.Exception (catch, ErrorCall) --- >>> tr0 = mkTrace True 0 [] :: Trace DUMMY --- >>> print (lastSignal tr0) `catch` (\(_ :: ErrorCall) -> putStrLn "error!") --- "error! --- --- dnadales: In the example above I don't know why the doctests is swallowing --- the last @"@. --- --- >>> tr01 = mkTrace True 0 [(1, "one")] :: Trace DUMMY --- >>> lastSignal tr01 --- "one" --- --- >>> tr0123 = mkTrace True 0 [(3, "three"), (2, "two"), (1, "one")] :: Trace DUMMY --- >>> lastSignal tr0123 --- "three" -lastSignal :: HasCallStack => Trace s -> Signal s -lastSignal Trace {_traceTrans} = - case _traceTrans of - Empty -> error "lastSignal was called with a trace without signals" - SigState _st signal :<| _ -> signal - --- | Return the first and last state of the trace. --- --- The first state is returned in the first component of the result tuple. --- --- Examples: --- --- --- >>> tr0 = mkTrace True 0 [] :: Trace DUMMY --- >>> firstAndLastState tr0 --- (0,0) --- --- >>> tr0123 = mkTrace True 0 [(3, "three"), (2, "two"), (1, "one")] :: Trace DUMMY --- >>> firstAndLastState tr0123 --- (0,3) -firstAndLastState :: Trace s -> (State s, State s) -firstAndLastState tr = (_traceInitState tr, lastState tr) - -data TraceOrder = NewestFirst | OldestFirst deriving (Eq) - -fromNewestFirst :: TraceOrder -> [a] -> [a] -fromNewestFirst NewestFirst = id -fromNewestFirst OldestFirst = reverse - --- | Retrieve all the signals in the trace, in the order specified. --- --- Examples: --- --- >>> tr0 = mkTrace True 0 [] :: Trace DUMMY --- >>> traceSignals NewestFirst tr0 --- [] --- --- >>> tr01 = mkTrace True 0 [(1, "one")] :: Trace DUMMY --- >>> traceSignals NewestFirst tr01 --- ["one"] --- --- >>> traceSignals OldestFirst tr01 --- ["one"] --- --- >>> tr0123 = mkTrace True 0 [(3, "three"), (2, "two"), (1, "one")] :: Trace DUMMY --- >>> traceSignals NewestFirst tr0123 --- ["three","two","one"] --- --- >>> traceSignals OldestFirst tr0123 --- ["one","two","three"] -traceSignals :: TraceOrder -> Trace s -> [Signal s] -traceSignals order tr = fromNewestFirst order (tr ^.. traceTrans . traverse . transSig) - --- | Retrieve all the states in the trace, in the order specified. --- --- Examples: --- --- >>> tr0 = mkTrace True 0 [] :: Trace DUMMY --- >>> traceStates NewestFirst tr0 --- [0] --- --- >>> traceStates OldestFirst tr0 --- [0] --- --- >>> tr0123 = mkTrace True 0 [(3, "three"), (2, "two"), (1, "one")] :: Trace DUMMY --- >>> traceStates NewestFirst tr0123 --- [3,2,1,0] --- --- >>> traceStates OldestFirst tr0123 --- [0,1,2,3] -traceStates :: TraceOrder -> Trace s -> [State s] -traceStates order tr = fromNewestFirst order (xs ++ [x]) - where - x = tr ^. traceInitState - xs = tr ^.. traceTrans . traverse . transSt - --- | Compute the length of a trace, defined as the number of signals it --- contains. --- --- Examples: --- --- >>> tr0 = mkTrace True 0 [] :: Trace DUMMY --- >>> traceLength tr0 --- 0 --- --- >>> tr0123 = mkTrace True 0 [(3, "three"), (2, "two"), (1, "one")] :: Trace DUMMY --- >>> traceLength tr0123 --- 3 -traceLength :: Trace s -> Int -traceLength tr = tr ^. traceTrans . to length - --- | Take all but the newest signal in the trace. --- --- Precondition: the trace must contain at least one signal --- --- Examples: --- --- --- >>> :set -XScopedTypeVariables --- >>> import Control.Exception (catch, ErrorCall) --- >>> tr0 = mkTrace True 0 [] :: Trace DUMMY --- >>> print (traceInit tr0) `catch` (\(_ :: ErrorCall) -> print "error!") --- "error!" --- --- >>> tr01 = mkTrace True 0 [(1, "one")] :: Trace DUMMY --- >>> traceInit tr01 --- Trace {_traceEnv = True, _traceInitState = 0, _traceTrans = StrictSeq {fromStrict = fromList []}} --- --- >>> tr012 = mkTrace True 0 [(2, "two"), (1, "one")] :: Trace DUMMY --- >>> traceInit tr012 --- Trace {_traceEnv = True, _traceInitState = 0, _traceTrans = StrictSeq {fromStrict = fromList [SigState 1 "one"]}} -traceInit :: HasCallStack => Trace s -> Trace s -traceInit tr@Trace {_traceTrans} = - case _traceTrans of - Empty -> error "traceInit was called with a trace without signals" - _ :<| trans -> tr {_traceTrans = trans} - --- | Retrieve all the signals in the trace paired with the state prior to the --- application of the signal. --- --- Note that the last state in the trace will not be returned, since there is --- no corresponding signal, i.e. the last state is not the pre-state of any --- signal in the trace. --- --- Examples --- --- >>> tr0 = mkTrace True 0 [] :: Trace DUMMY --- >>> preStatesAndSignals NewestFirst tr0 --- [] --- --- >>> preStatesAndSignals OldestFirst tr0 --- [] --- --- >>> tr0123 = mkTrace True 0 [(3, "three"), (2, "two"), (1, "one")] :: Trace DUMMY --- >>> preStatesAndSignals OldestFirst tr0123 --- [(0,"one"),(1,"two"),(2,"three")] --- --- >>> preStatesAndSignals NewestFirst tr0123 --- [(2,"three"),(1,"two"),(0,"one")] -preStatesAndSignals :: TraceOrder -> Trace s -> [(State s, Signal s)] -preStatesAndSignals OldestFirst tr = - zip (traceStates OldestFirst tr) (traceSignals OldestFirst tr) -preStatesAndSignals NewestFirst tr = - reverse $ preStatesAndSignals OldestFirst tr - --- | Apply the signals in the list and elaborate a trace with the resulting --- states. --- --- If any of the signals cannot be applied, then it is discarded, and the next --- signal is tried. --- --- >>> :set -XTypeFamilies --- >>> :set -XTypeApplications --- >>> import Control.State.Transition (initialRules, transitionRules, judgmentContext) --- >>> import Control.State.Transition.Extended (TRC (..)) --- >>> import Data.Functor.Identity --- >>> :{ --- data ADDER --- data AdderPredicateFailure = NoFailuresPossible deriving (Eq, Show) --- instance STS ADDER where --- type Environment ADDER = () --- type State ADDER = Int --- type Signal ADDER = Int --- type PredicateFailure ADDER = AdderPredicateFailure --- initialRules = [ pure 0 ] --- transitionRules = --- [ do --- TRC ((), st, inc) <- judgmentContext --- pure $! st + inc --- ] --- :} --- --- >>> runIdentity $ closure @ADDER () 0 [3, 2, 1] --- Trace {_traceEnv = (), _traceInitState = 0, _traceTrans = StrictSeq {fromStrict = fromList [SigState 6 3,SigState 3 2,SigState 1 1]}} --- --- >>> runIdentity $ closure @ADDER () 10 [-3, -2, -1] --- Trace {_traceEnv = (), _traceInitState = 10, _traceTrans = StrictSeq {fromStrict = fromList [SigState 4 (-3),SigState 7 (-2),SigState 9 (-1)]}} -closure :: - forall s m. - (STS s, m ~ BaseM s) => - Environment s -> - State s -> - -- | List of signals to apply, where the newest signal comes first. - [Signal s] -> - m (Trace s) -closure env st0 sigs = mkTrace env st0 <$> loop st0 (reverse sigs) [] - where - loop _ [] acc = pure acc - loop sti (sig : sigs') acc = - applySTSTest @s (TRC (env, sti, sig)) >>= \case - Left _ -> loop sti sigs' acc - Right sti' -> loop sti' sigs' ((sti', sig) : acc) - --------------------------------------------------------------------------------- --- Minimal DSL to specify expectations on traces --------------------------------------------------------------------------------- - --- | Bind the state inside the first argument, and apply the transition --- function in the @Reader@ environment to that state and given signal, --- obtaining the resulting state, or an assertion failure if the transition --- function fails. -(.-) :: - forall m st sig err. - ( MonadIO m - , MonadReader (st -> sig -> Either err st) m - , Show err - , HasCallStack - ) => - m st -> - sig -> - m st -mSt .- sig = do - st <- mSt - validation <- ask -- Get the validation function from the environment - case validation st sig of - Left pfs -> liftIO . assertFailure . show $ pfs - Right st' -> pure st' - --- | Bind the state inside the first argument, and check whether it is equal to --- the expected state, given in the second argument. If it isn't raise an Assertion that --- uses a tree-diff to describe the differences. -(.->>) :: - forall m st. - (MonadIO m, Eq st, ToExpr st, HasCallStack) => - m st -> - st -> - m st -mSt .->> stExpected = do - stActual <- mSt - liftIO $ assertExprEqualWithMessage "Check trace with (.->>) fails" stExpected stActual - return stActual - --- | Bind the state inside the first argument, and check whether it is equal to --- the expected state, given in the second argument. raises an Assertion if it does not. -(.->) :: - forall m st. - (MonadIO m, Eq st, Show st, HasCallStack) => - m st -> - st -> - m st -mSt .-> stExpected = do - stActual <- mSt - liftIO $ stActual @?= stExpected - return stActual - -checkTrace :: - forall s m. - (STS s, BaseM s ~ m) => - (forall a. m a -> a) -> - Environment s -> - ReaderT - ( State s -> - Signal s -> - Either (NonEmpty (PredicateFailure s)) (State s) - ) - IO - (State s) -> - IO () -checkTrace interp env act = - void $ runReaderT act (\st sig -> interp $ applySTSTest @s (TRC (env, st, sig))) - --- | Extract all the values of a given type. --- --- Examples: --- --- >>> extractValues "hello" :: [Char] --- "hello" --- --- >>> extractValues ("hello", " " ,"world") :: [Char] --- "hello world" --- --- >>> extractValues "hello" :: [Int] --- [] --- --- >>> extractValues ([('a', 0 :: Int), ('b', 1)] :: [(Char, Int)]) :: [Int] --- [0,1] --- --- >>> extractValues (["hello"] :: [[Char]], 1, 'z') :: [[Char]] --- ["hello","ello","llo","lo","o",""] --- --- >>> extractValues ("hello", 'z') :: [Char] --- "zhello" -extractValues :: forall d a. (Data d, Typeable a) => d -> [a] -extractValues d = - catMaybes (gmapQ extractValue d) - ++ concat (gmapQ extractValues d) - where - extractValue :: forall d1. Data d1 => d1 -> Maybe a - extractValue d1 = cast d1 - -data SourceSignalTarget a = SourceSignalTarget - { source :: State a - , target :: State a - , signal :: Signal a - } - -deriving instance (Eq (State a), Eq (Signal a)) => Eq (SourceSignalTarget a) - -deriving instance (Show (State a), Show (Signal a)) => Show (SourceSignalTarget a) - --- | Extract triplets of the form [SourceSignalTarget {source = s, signal = sig, target = --- t)] from a trace. For a valid trace, each source state can reach a target --- state via the given signal. --- --- Examples --- --- --- >>> tr0 = mkTrace True 0 [] :: Trace DUMMY --- >>> sourceSignalTargets tr0 --- [] --- --- >>> tr0123 = mkTrace True 0 [(3, "three"), (2, "two"), (1, "one")] :: Trace DUMMY --- >>> sourceSignalTargets tr0123 --- [SourceSignalTarget {source = 0, target = 1, signal = "one"},SourceSignalTarget {source = 1, target = 2, signal = "two"},SourceSignalTarget {source = 2, target = 3, signal = "three"}] -sourceSignalTargets :: forall a. Trace a -> [SourceSignalTarget a] -sourceSignalTargets trace = zipWith3 SourceSignalTarget states statesTail signals - where - signals = traceSignals OldestFirst trace - states = traceStates OldestFirst trace - statesTail = - case states of - [] -> error "Control.State.Transition.Trace.sourceSignalTargets: Unexpected empty list" - (_ : xs) -> xs - --- | Apply STS checking assertions. -applySTSTest :: - forall s m rtype. - (STS s, RuleTypeRep rtype, m ~ BaseM s) => - RuleContext rtype s -> - m (Either (NonEmpty (PredicateFailure s)) (State s)) -applySTSTest = applySTSOptsEither defaultOpts - where - defaultOpts = - ApplySTSOpts - { asoAssertions = AssertionsAll - , asoValidation = ValidateAll - , asoEvents = EPDiscard - } - --- | Extract the Events from a trace, by re-applying the signal with --- assertions and vaidations turned off, but events turned on. -getEvents :: forall sts. STS sts => Trace sts -> BaseM sts [[Event sts]] -getEvents (Trace env s0 pairs) = mapM action (map make pairs2) - where - pairs2 = unstagger s0 (toList pairs) - make (state, sig) = (env, state, sig) - defaultOpts = - ApplySTSOpts - { asoAssertions = AssertionsOff - , asoValidation = ValidateNone - , asoEvents = EPReturn - } - action :: (Environment sts, State sts, Signal sts) -> BaseM sts [Event sts] - action x = do - item <- applySTSOptsEither @sts @(BaseM sts) @'Transition defaultOpts (TRC x) - case item of - Left _ -> pure [] - Right (_, events) -> pure (reverse events) - -- A Trace stores pairs of State and Signal (called a SigState). The pairs - -- consist of the state that came about by appying the signal, so the index - -- of the two parts don't match up. For example here is a sample - -- [(s_n+1,dn), ... ,(s5,d4),(s4,d3),(s3,d2),(s2,d1)] si is a state and dj is a signal. - -- Note how the indexes don't matchup. When we compute events we want the indices to align. - -- We want it to look like this [(sn,dn), ... ,(s5,d5),(s4,d4),(s3,d3),(s2,d2),(s1,d1)] - -- We call this transformation, the unstagger transformation. - unstagger :: State s -> [SigState s] -> [(State s, Signal s)] - unstagger _ [] = [] - unstagger s1 [(SigState _s2 d1)] = [(s1, d1)] - unstagger s1 ((SigState _s4 d3) : (more@((SigState s3 _d2) : _))) = (s3, d3) : unstagger s1 more - --- | Given a StrictSeq of SigState (as found in a Trace, where earlier things are to the right), and --- Given 'p' that compares later states to earlier states, split at the boundary where --- the 'p' detects a change. Used to make a list of shorter Traces from a big Trace. Usually --- 'p' dectects changes in the Epoch (this marks the epoch boundary), but might have other uses. --- Note that the last sub-Trace might be ill-formed, because we run out of Trace elements, --- rather than detecting the changes guarded by 'p' -splitAtChange :: - (State s -> State s -> Bool) -> - StrictSeq (SigState s) -> - State s -> - StrictSeq (SigState s) -> - [(StrictSeq (SigState s), State s)] -> - [(StrictSeq (SigState s), State s)] -splitAtChange _p SS.Empty a0 ans1 ans2 = (ans1, a0) : ans2 -- Might be ill-formed -splitAtChange p (xs@(_ :|> x1) :|> x0) a0 ans1 ans2 = - if p s1 s0 - then splitAtChange p xs a0 (x0 :<| ans1) ans2 - else splitAtChange p xs s0 SS.Empty ((x1 :<| (x0 :<| ans1), a0) : ans2) - where - (SigState s1 _) = x1 - (SigState s0 _) = x0 -splitAtChange _p (SS.Empty :|> x1) a0 ans1 ans2 = (((x1 :<| ans1), a0) : ans2) -- Might be ill-formed - --- | Split a Trace into several shorter traces. The leftmost Trace --- (at the front of the list) might be ill-formed, depending on what 'p' does. -splitTrace :: (State s -> State s -> Bool) -> Trace s -> [Trace s] -splitTrace p (Trace env s0 sigstates) = map f xs - where - f (sigstates2, s) = Trace env s sigstates2 - xs = splitAtChange p sigstates s0 Empty [] diff --git a/libs/small-steps/testlib/Test/Control/State/Transition/Trace/Generator/QuickCheck.hs b/libs/small-steps/testlib/Test/Control/State/Transition/Trace/Generator/QuickCheck.hs deleted file mode 100644 index f7fef806590..00000000000 --- a/libs/small-steps/testlib/Test/Control/State/Transition/Trace/Generator/QuickCheck.hs +++ /dev/null @@ -1,410 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DefaultSignatures #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TupleSections #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} - -module Test.Control.State.Transition.Trace.Generator.QuickCheck ( - HasTrace (BaseEnv, envGen, sigGen, shrinkSignal, interpretSTS), - traceFrom, - traceFromInitState, - trace, - shrinkTrace, - - -- * Trace generator properties - forAllTrace, - forAllTraceFromInitState, - onlyValidSignalsAreGenerated, - onlyValidSignalsAreGeneratedFromInitState, - - -- * Trace classification - traceLengthsAreClassified, - classifyTraceLength, - classifySize, - - -- * Internal - mkIntervals, -) -where - -import Control.State.Transition (Environment, IRC (IRC), STS, Signal, State, TRC (TRC)) -import qualified Control.State.Transition.Extended as STS -import Data.Functor.Identity (Identity (..)) -import Data.Kind (Type) -import Data.List.NonEmpty (NonEmpty) -import Data.Maybe (fromMaybe) -import Data.Word (Word64) -import GHC.Stack -import Test.Control.State.Transition.Trace (Trace) -import qualified Test.Control.State.Transition.Trace as Trace -import qualified Test.QuickCheck as QuickCheck - --- | State transition systems for which traces can be generated, given a trace --- generation environment. --- --- The trace generation environment allows to pass relevant data to the trace --- generation algorithm. -class STS sts => HasTrace sts traceGenEnv where - type BaseEnv sts :: Type - type BaseEnv s = () - - -- | Interpret the action from the base monad into a pure value, given some - -- initial environment. This obviously places some contraints on the nature of - -- the base monad for a trace to be completed. - interpretSTS :: forall a. HasCallStack => (BaseEnv sts -> STS.BaseM sts a -> a) - default interpretSTS :: STS.BaseM sts ~ Identity => forall a. BaseEnv sts -> STS.BaseM sts a -> a - interpretSTS _ (Identity x) = x - - envGen :: HasCallStack => traceGenEnv -> QuickCheck.Gen (Environment sts) - - sigGen :: - HasCallStack => - traceGenEnv -> - Environment sts -> - State sts -> - QuickCheck.Gen (Signal sts) - - shrinkSignal :: HasCallStack => Signal sts -> [Signal sts] - --- | Generate a random trace starting in the given environment and initial state. -traceFrom :: - forall sts traceGenEnv. - HasTrace sts traceGenEnv => - BaseEnv sts -> - -- | Maximum trace length. - Word64 -> - traceGenEnv -> - Environment sts -> - State sts -> - QuickCheck.Gen (Trace sts) -traceFrom traceEnv maxTraceLength traceGenEnv env st0 = do - chosenTraceLength <- QuickCheck.choose (0, maxTraceLength) - Trace.mkTrace env st0 <$> loop chosenTraceLength st0 [] - where - loop :: - Word64 -> - State sts -> - [(State sts, Signal sts)] -> - QuickCheck.Gen [(State sts, Signal sts)] - loop 0 _ !acc = pure acc - loop d !sti !stSigs = do - sig <- sigGen @sts @traceGenEnv traceGenEnv env sti - case interpretSTS @sts @traceGenEnv traceEnv (Trace.applySTSTest @sts (TRC (env, sti, sig))) of - Left _predicateFailures -> - loop (d - 1) sti stSigs - Right sti' -> - loop (d - 1) sti' ((sti', sig) : stSigs) - --- | Generate a random trace. -trace :: - forall sts traceGenEnv. - ( HasTrace sts traceGenEnv - , Show (Environment sts) - ) => - BaseEnv sts -> - -- | Maximum trace length. - Word64 -> - traceGenEnv -> - QuickCheck.Gen (Trace sts) -trace traceEnv maxTraceLength traceGenEnv = - traceFromInitState traceEnv maxTraceLength traceGenEnv Nothing - --- | Generate a random trace given a generator for initial state. --- --- Takes an optional generator for initial state, or defaults to 'applySTS' --- if no initial state is required by the STS. -traceFromInitState :: - forall sts traceGenEnv. - ( HasTrace sts traceGenEnv - , Show (Environment sts) - , HasCallStack - ) => - BaseEnv sts -> - -- | Maximum trace length. - Word64 -> - traceGenEnv -> - -- | Optional generator of STS initial state - Maybe (IRC sts -> QuickCheck.Gen (Either (NonEmpty (STS.PredicateFailure sts)) (State sts))) -> - QuickCheck.Gen (Trace sts) -traceFromInitState baseEnv maxTraceLength traceGenEnv genSt0 = do - env <- envGen @sts @traceGenEnv traceGenEnv - res <- - fromMaybe - ( pure - . interpretSTS @sts @traceGenEnv baseEnv - . Trace.applySTSTest - ) - genSt0 - $ IRC env - - case res of - Left pf -> - error $ - "Failed to apply the initial rule to the generated environment.\n" - ++ "Generated environment: " - ++ show env - ++ "Failure: " - ++ show pf - Right st0 -> traceFrom baseEnv maxTraceLength traceGenEnv env st0 - --- | Check a property on the 'sts' traces. --- --- Takes an optional generator for initial state of the STS. -forAllTraceFromInitState :: - forall sts traceGenEnv prop. - ( HasTrace sts traceGenEnv - , QuickCheck.Testable prop - , Show (Environment sts) - ) => - BaseEnv sts -> - -- | Maximum trace length. - Word64 -> - traceGenEnv -> - -- | Optional generator of STS initial state - Maybe (IRC sts -> QuickCheck.Gen (Either (NonEmpty (STS.PredicateFailure sts)) (State sts))) -> - (Trace sts -> prop) -> - QuickCheck.Property -forAllTraceFromInitState baseEnv maxTraceLength traceGenEnv genSt0 prop = - QuickCheck.forAllShrinkBlind - (traceFromInitState @sts @traceGenEnv baseEnv maxTraceLength traceGenEnv genSt0) - (shrinkTrace @sts @traceGenEnv baseEnv) - prop - --- | Check a property on the 'sts' traces. -forAllTrace :: - forall sts traceGenEnv prop. - ( HasTrace sts traceGenEnv - , QuickCheck.Testable prop - , Show (Environment sts) - ) => - BaseEnv sts -> - -- | Maximum trace length. - Word64 -> - traceGenEnv -> - (Trace sts -> prop) -> - QuickCheck.Property -forAllTrace baseEnv maxTraceLength traceGenEnv = - forAllTraceFromInitState baseEnv maxTraceLength traceGenEnv Nothing - --- | Shrink a trace by shrinking the list of signals and reconstructing traces from these --- shrunk lists of signals. --- --- When shrinking a trace that is failing some property (often stated in terms of a signal in the trace) --- then the most recent signal is likely crucial to the failure of the property and must be preserved --- in the shrunk traces. -shrinkTrace :: - forall sts traceGenEnv. - HasTrace sts traceGenEnv => - BaseEnv sts -> - Trace sts -> - [Trace sts] -shrinkTrace baseEnv tr = - interpretSTS @sts @traceGenEnv baseEnv $ - Trace.closure env st0 `traverse` shrinkSignals signals - where - env = Trace._traceEnv tr - st0 = Trace._traceInitState tr - signals = Trace.traceSignals Trace.NewestFirst tr - - -- Shrink a list of signals such that we preserve the most recent signal in the shrunk lists. - -- This shrinker - -- - recursively omits all but the most recent signal - -- - builds up lists of signals starting with the most recent signal and - -- building up to a list excluding the first (oldest) signal - -- - explicitly shrinks in order from small to larger lists of signals - -- (i.e. ordered by most to least aggressive shrinking) - shrinkSignals (sn : _last : []) = - [[sn]] - shrinkSignals (sn : sm : sigs) = - [[sn]] -- a trace with only the most recent signal - ++ ((sn :) <$> shrinkSignals (sm : sigs)) -- shrink the tail - ++ [sn : sigs] -- discard the second most recent signal - - -- shrink to [] if there is one or no signals - shrinkSignals _ = [] - --- | Property that asserts that only valid signals are generated. -onlyValidSignalsAreGenerated :: - forall sts traceGenEnv. - ( HasTrace sts traceGenEnv - , Show (Environment sts) - , Show (Signal sts) - ) => - BaseEnv sts -> - -- | Maximum trace length. - Word64 -> - traceGenEnv -> - QuickCheck.Property -onlyValidSignalsAreGenerated baseEnv maxTraceLength traceGenEnv = - onlyValidSignalsAreGeneratedFromInitState @sts baseEnv maxTraceLength traceGenEnv Nothing - --- | Property that asserts that only valid signals are generated. --- --- Takes an optional generator for initial state of the STS. -onlyValidSignalsAreGeneratedFromInitState :: - forall sts traceGenEnv. - ( HasTrace sts traceGenEnv - , Show (Environment sts) - , Show (Signal sts) - ) => - BaseEnv sts -> - -- | Maximum trace length. - Word64 -> - traceGenEnv -> - -- | Optional generator of STS initial state - Maybe (IRC sts -> QuickCheck.Gen (Either (NonEmpty (STS.PredicateFailure sts)) (State sts))) -> - QuickCheck.Property -onlyValidSignalsAreGeneratedFromInitState baseEnv maxTraceLength traceGenEnv genSt0 = - forAllTraceFromInitState baseEnv maxTraceLength traceGenEnv genSt0 validSignalsAreGenerated - where - validSignalsAreGenerated :: - Trace sts -> - QuickCheck.Property - validSignalsAreGenerated someTrace = - QuickCheck.forAllShrink - (sigGen @sts @traceGenEnv traceGenEnv env lastState) - (shrinkSignal @sts @traceGenEnv) - signalIsValid - where - signalIsValid signal = - case interpretSTS @sts @traceGenEnv baseEnv (Trace.applySTSTest @sts (TRC (env, lastState, signal))) of - Left pf -> QuickCheck.counterexample (show (signal, pf)) False - Right _ -> QuickCheck.property True - env = Trace._traceEnv someTrace - lastState = Trace.lastState someTrace - --------------------------------------------------------------------------------- --- Trace classification --------------------------------------------------------------------------------- - --- | Property that simply classifies the lengths of the generated traces. -traceLengthsAreClassified :: - forall sts traceGenEnv. - ( HasTrace sts traceGenEnv - , Show (Environment sts) - ) => - BaseEnv sts -> - -- | Maximum trace length that the signal generator of 's' can generate. - Word64 -> - -- | Lengths of the intervals in which the lengths range should be split. - Word64 -> - -- | Trace generation environment - traceGenEnv -> - QuickCheck.Property -traceLengthsAreClassified baseEnv maxTraceLength intervalSize traceGenEnv = - forAllTrace @sts - baseEnv - maxTraceLength - traceGenEnv - (classifyTraceLength maxTraceLength intervalSize) - --- | Classify the trace length as either: --- --- - being empty --- - being a singleton --- - having the given maximum size --- - belonging to one of the intervals between 2 and the maximum size - 1. The --- number of intervals are determined by the @step@ parameter. -classifyTraceLength :: - -- | Maximum size of the traces - Word64 -> - -- | Steps used to divide the interval - Word64 -> - Trace s -> - QuickCheck.Property -classifyTraceLength maxTraceLength step tr = - classifySize "trace length:" tr (fromIntegral . Trace.traceLength) maxTraceLength step - --- | Classify the value size as either: --- --- - being empty --- - being a singleton --- - having the given maximum size --- - belonging to one of the intervals between 2 and the maximum size - 1. The --- number of intervals are determined by the @step@ parameter. -classifySize :: - (Show n, Integral n) => - -- | Prefix to be added to the label intervals - String -> - -- | Value to classify - a -> - -- | Size function - (a -> n) -> - -- | Maximum value size - n -> - -- | Steps used to divide the size interval - n -> - QuickCheck.Property -classifySize prefixLabel value sizeF upBound step = - QuickCheck.classify (sizeF value == 0) (mkLabel "empty") $ - QuickCheck.classify (sizeF value == 1) (mkLabel "singleton") $ - QuickCheck.classify (sizeF value == upBound) upBoundLabel $ - foldr classifySizeInterval (QuickCheck.property True) (mkIntervals 2 (upBound - 1) step) - where - upBoundLabel = mkLabel $ show upBound - mkLabel = ((prefixLabel ++ " ") ++) - classifySizeInterval (low, high) prop = - QuickCheck.classify (low <= sizeF value && sizeF value < high) desc prop - where - desc = "[" ++ show low ++ ", " ++ show high ++ ")" - --- | Given a lower bound @low@, an upper bound @high@ and a step size @step@ --- (both of which must be positive), divide the interval @[0, ub]@ into --- sub-intervals of @step@ size. --- --- If any of these values is negative the empty list will be returned. --- --- Examples: --- --- >>> mkIntervals 0 0 0 :: [(Int, Int)] --- [] --- --- >>> mkIntervals 0 10 2 :: [(Int, Int)] --- [(0,2),(2,4),(4,6),(6,8),(8,10)] --- --- >>> mkIntervals 1 10 2 :: [(Int, Int)] --- [(1,3),(3,5),(5,7),(7,9),(9,10)] --- --- --- >>> mkIntervals 3 10 3 :: [(Int, Int)] --- [(3,6),(6,9),(9,10)] --- --- >>> mkIntervals 5 2 3 :: [(Int, Int)] --- [] --- --- >>> mkIntervals (-1) 10 3 :: [(Int, Int)] --- [] --- --- >>> mkIntervals 1 (-10) 3 :: [(Int, Int)] --- [] --- --- >>> mkIntervals 1 1000 (-100) :: [(Int, Int)] --- [] -mkIntervals :: - Integral n => - -- | Interval lower bound - n -> - -- | Interval upper bound - n -> - -- | Step size, used to divide the interval in sub-intervals of the same - -- length. - n -> - [(n, n)] -mkIntervals low high step - | 0 <= low && low <= high && 0 < step = - [(low + i * step, high `min` (low + (i + 1) * step)) | i <- [0 .. n - 1]] - | otherwise = [] - where - highNorm = high - low - n = highNorm `div` step + 1 `min` (highNorm `mod` step) diff --git a/libs/small-steps/testlib/Test/Hedgehog/Extra/Manual.hs b/libs/small-steps/testlib/Test/Hedgehog/Extra/Manual.hs deleted file mode 100644 index 228db0dc086..00000000000 --- a/libs/small-steps/testlib/Test/Hedgehog/Extra/Manual.hs +++ /dev/null @@ -1,132 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE ScopedTypeVariables #-} - --- | Manual generators. --- --- This module provides functions to convert hedgehog 'Gen's to and from a --- 'Manual' generators, and functions to manipulate these manual generators. -module Test.Hedgehog.Extra.Manual ( - Manual (Manual), - unManual, - toManual, - fromManual, - dontShrink, - - -- * Combinators - sized, - replicate, - interleave, - - -- * Auxiliary - wrapTreeT, - unwrapTreeT, -) -where - -import Control.Monad (ap, liftM) -import Control.Monad.Trans.Maybe (MaybeT (MaybeT)) -import Data.Coerce (coerce) -import Data.Functor.Identity (Identity (Identity)) -import Data.Maybe (catMaybes, mapMaybe) -import Hedgehog (Gen, Seed, Size) -import Hedgehog.Internal.Gen (GenT (GenT)) -import qualified Hedgehog.Internal.Seed as Seed -import Hedgehog.Internal.Tree (NodeT (NodeT), TreeT (TreeT), nodeChildren, nodeValue) -import Prelude hiding (replicate) - -newtype Manual a = Manual {unManual :: Size -> Seed -> a} - -toManual :: Gen a -> Manual (TreeT (MaybeT Identity) a) -toManual (GenT f) = Manual f - -fromManual :: Manual (TreeT (MaybeT Identity) a) -> Gen a -fromManual (Manual f) = GenT f - -dontShrink :: Gen a -> Manual (Maybe a) -dontShrink = fmap (fmap nodeValue . coerce) . toManual - -instance Functor Manual where - fmap = liftM - -instance Applicative Manual where - pure x = Manual $ \_ _ -> x - (<*>) = ap - -instance Monad Manual where - return = pure - Manual x >>= f = Manual $ \size seed -> - case Seed.split seed of - (sx, sf) -> unManual (f (x size sx)) size sf - -{------------------------------------------------------------------------------- - Combinators --------------------------------------------------------------------------------} - -sized :: (Size -> Manual a) -> Manual a -sized f = Manual $ \size seed -> unManual (f size) size seed - --- | A version of 'Control.Monad.replicateM' specific to 'Manual'. -replicate :: forall a. Int -> Manual a -> Manual [a] -replicate n (Manual f) = Manual $ \size seed -> - let go :: Int -> Seed -> [a] - go 0 _ = [] - go !n' s = case Seed.split s of - (s', s'') -> f size s' : go (n' - 1) s'' - in go n seed - -interleave :: [TreeT (MaybeT Identity) a] -> TreeT (MaybeT Identity) [a] -interleave = coerce (Just . interleave' . catMaybes) - -interleave' :: [NodeT (MaybeT Identity) a] -> NodeT (MaybeT Identity) [a] -interleave' ts = - NodeT (map nodeValue ts) $ - concat - [ [ wrapTreeT . Just $ interleave' ts' - | chunkSize <- chunkSizes - , ts' <- removes chunkSize ts - ] - , [ wrapTreeT . Just $ interleave' (xs ++ [y'] ++ zs) - | (xs, y, zs) <- splits ts - , y' <- mapMaybe unwrapTreeT (nodeChildren y) - ] - ] - where - -- Chunks we try to remove from the list - -- - -- For example, if the list has length 10, @chunkSizes = [10,5,2,1]@ - chunkSizes :: [Int] - chunkSizes = takeWhile (> 0) $ iterate (`div` 2) (length ts) - -{------------------------------------------------------------------------------- - Auxiliary --------------------------------------------------------------------------------} - -wrapTreeT :: Maybe (NodeT (MaybeT Identity) a) -> TreeT (MaybeT Identity) a -wrapTreeT = coerce - -unwrapTreeT :: TreeT (MaybeT Identity) a -> Maybe (NodeT (MaybeT Identity) a) -unwrapTreeT = coerce - -splits :: [a] -> [([a], a, [a])] -splits [] = [] -splits (x : xs) = ([], x, xs) : fmap (\(as, b, cs) -> (x : as, b, cs)) (splits xs) - --- | @removes n@ splits a list into chunks of size n and returns all possible --- lists where one of these chunks has been removed. --- --- Examples: --- --- > removes 1 [1..3] == [[2,3],[1,3],[1,2]] --- > removes 2 [1..4] == [[3,4],[1,2]] --- > removes 2 [1..5] == [[3,4,5],[1,2,5],[1,2,3,4]] --- > removes 3 [1..5] == [[4,5],[1,2,3]] --- --- Note that the last chunk we delete might have fewer elements than @n@. -removes :: forall a. Int -> [a] -> [[a]] -removes k = go - where - go :: [a] -> [[a]] - go [] = [] - go xs = xs2 : map (xs1 ++) (go xs2) - where - (xs1, xs2) = splitAt k xs diff --git a/libs/vector-map/.ghcid b/libs/vector-map/.ghcid deleted file mode 100644 index 97b41933db0..00000000000 --- a/libs/vector-map/.ghcid +++ /dev/null @@ -1 +0,0 @@ ---command="cabal repl --repl-options='-isrc -fwarn-unused-binds -fwarn-unused-imports -fno-code -fobject-code -g2 -fno-break-on-exception -fno-break-on-error -ferror-spans -j -Wno-unused-packages'" --clear --no-height-limit --reverse-errors --reload=../../ --outputfile=/tmp/vector-map-ghcid.txt \ No newline at end of file diff --git a/libs/vector-map/CHANGELOG.md b/libs/vector-map/CHANGELOG.md deleted file mode 100644 index 93ed8805062..00000000000 --- a/libs/vector-map/CHANGELOG.md +++ /dev/null @@ -1,17 +0,0 @@ -# Version history for `vector-map` - -## 1.1.0.1 - -* - -## 1.1.0.0 - -* Moved `ToExpr` instances out of the main library and into the testlib. - -## 1.0.1.0 - -* Add `ToJSON`/`FromJSON` instances for `VMap` - -## 1.0.0.0 - -* First properly versioned release diff --git a/libs/vector-map/Setup.hs b/libs/vector-map/Setup.hs deleted file mode 100644 index e8ef27dbba9..00000000000 --- a/libs/vector-map/Setup.hs +++ /dev/null @@ -1,3 +0,0 @@ -import Distribution.Simple - -main = defaultMain diff --git a/libs/vector-map/bench/Bench.hs b/libs/vector-map/bench/Bench.hs deleted file mode 100644 index 9ac832115ce..00000000000 --- a/libs/vector-map/bench/Bench.hs +++ /dev/null @@ -1,131 +0,0 @@ -{-# LANGUAGE BangPatterns #-} - -module Main where - -import Control.Monad -import Criterion.Main -import Data.Map.Strict as Map -import Data.VMap as VMap -import System.Random.Stateful as Random - -type Key = Int - -main :: IO () -main = do - let std1 = mkStdGen 2021 - n = 200000 - randList :: StdGen -> [(Key, Int)] - randList gen = runStateGen_ gen (uniformListM n) - prefixList :: StdGen -> [(Key, Int)] - prefixList gen = - runStateGen_ gen $ \g -> - replicateM n $ do - key <- uniformM g - val <- uniformM g - pure (key, val) - sequentialList :: StdGen -> [(Key, Int)] - sequentialList gen = - runStateGen_ gen $ \g -> do - forM [1 .. fromIntegral n] $ \k -> do - val <- uniformM g - pure (k, val) - defaultMain - [ bgroup - "fromList" - [ fromListBench "uniform" (randList std1) - , fromListBench "prefixed" (prefixList std1) - , fromListBench "sequential" (sequentialList std1) - ] - , bgroup - "toList" - [ toListBench "uniform" (randList std1) - , toListBench "prefixed" (prefixList std1) - , toListBench "sequential" (sequentialList std1) - ] - , bgroup - "toMapThroughList" - [ toMapThroughListBench "uniform" (randList std1) - , toMapThroughListBench "prefixed" (prefixList std1) - , toMapThroughListBench "sequential" (sequentialList std1) - ] - , bgroup - "fromMap" - [ fromMapBench "uniform" (randList std1) - , fromMapBench "prefixed" (prefixList std1) - , fromMapBench "sequential" (sequentialList std1) - ] - , bgroup - "foldlWithKey" - [ foldlWithKeyBench "uniform" (randList std1) - , foldlWithKeyBench "prefixed" (prefixList std1) - , foldlWithKeyBench "sequential" (sequentialList std1) - ] - ] - -fromMapBench :: String -> [(Key, Int)] -> Benchmark -fromMapBench name xs = - env (pure $ Map.fromList xs) $ \xsMap -> - bgroup - name - [ bgroup - "fromMap" - [ bench "VMap" $ nf (VMap.fromMap :: Map Key Int -> VMap VB VP Key Int) xsMap - ] - ] - -toMapThroughListBench :: String -> [(Key, Int)] -> Benchmark -toMapThroughListBench name xs = - bgroup - name - [ bgroup - "toMap" - [ env (pure (Map.fromList xs)) $ - bench "Map" . nf (Map.fromDistinctAscList . Map.toList) - , env (pure (VMap.fromList xs :: VMap VB VP Key Int)) $ - bench "VMap" . nf VMap.toMap - ] - ] - -toListBench :: String -> [(Key, Int)] -> Benchmark -toListBench name xs = - bgroup - name - [ bgroup - "toList" - [ env (pure (Map.fromList xs)) $ bench "Map" . nf Map.toList - , env (pure (VMap.fromList xs :: VMap VB VP Key Int)) $ - bench "VMap" . nf VMap.toList - ] - , bgroup - "keys" - [ env (pure (Map.fromList xs)) $ bench "Map" . nf Map.keys - , env (pure (VMap.fromList xs :: VMap VB VP Key Int)) $ - bench "VMap" . nf VMap.keys - ] - , bgroup - "elems" - [ env (pure (Map.fromList xs)) $ bench "Map" . nf Map.elems - , env (pure (VMap.fromList xs :: VMap VB VP Key Int)) $ - bench "VMap" . nf VMap.elems - ] - ] - -fromListBench :: String -> [(Key, Int)] -> Benchmark -fromListBench name xs = - env (pure xs) $ \xsnf -> - bgroup - name - [ bench "Map" $ nf Map.fromList xsnf - , bench "VMap" $ - nf (VMap.fromList :: [(Key, Int)] -> VMap VB VP Key Int) xsnf - ] - -foldlWithKeyBench :: String -> [(Key, Int)] -> Benchmark -foldlWithKeyBench name xs = - bgroup - name - [ env (pure (Map.fromList xs)) $ - bench "Map" . nf (Map.foldlWithKey (\a !_ -> (a +)) 0) - , env (pure (VMap.fromList xs :: VMap VB VP Key Int)) $ - bench "VMap" . nf (VMap.foldlWithKey (\a !_ -> (a +)) 0) - ] diff --git a/libs/vector-map/src/Data/VMap.hs b/libs/vector-map/src/Data/VMap.hs deleted file mode 100644 index a71409f4b35..00000000000 --- a/libs/vector-map/src/Data/VMap.hs +++ /dev/null @@ -1,278 +0,0 @@ -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE TypeFamilies #-} - -module Data.VMap ( - VG.Vector, - VB, - VU, - VP, - VS, - VMap (..), - empty, - size, - lookup, - findWithDefault, - member, - notMember, - map, - mapMaybe, - mapWithKey, - filter, - fold, - foldl, - foldlWithKey, - foldMap, - foldMapWithKey, - fromMap, - toMap, - fromList, - fromListN, - toList, - toAscList, - keys, - elems, - fromAscList, - fromAscListN, - fromAscListWithKey, - fromAscListWithKeyN, - fromDistinctAscList, - fromDistinctAscListN, - internMaybe, - null, - splitAt, - -- Internal types - KV.KVMVector, - KV.KVVector, - KV.normalize, - KV.normalizeM, -) -where - -import Control.DeepSeq -import Data.Aeson (FromJSON (..), FromJSONKey, ToJSON (..), ToJSONKey) -import qualified Data.Map.Strict as Map -import Data.Maybe as Maybe hiding (mapMaybe) -import Data.VMap.KVVector (KVVector (..)) -import qualified Data.VMap.KVVector as KV -import qualified Data.Vector as V -import qualified Data.Vector.Generic as VG -import qualified Data.Vector.Primitive as VP -import qualified Data.Vector.Storable as VS -import qualified Data.Vector.Unboxed as VU -import qualified GHC.Exts as Exts -import GHC.Generics (Generic) -import NoThunks.Class -import Prelude hiding (filter, foldMap, foldl, lookup, map, null, splitAt) - -type VB = V.Vector - -type VU = VU.Vector - -type VP = VP.Vector - -type VS = VS.Vector - -newtype VMap kv vv k v = VMap - { unVMap :: KVVector kv vv (k, v) - } - deriving (Eq, Generic, NoThunks, NFData, Semigroup, Monoid) - -instance (Show k, Show v, VG.Vector kv k, VG.Vector vv v) => Show (VMap kv vv k v) where - show = show . KV.toMap . unVMap - -instance (VG.Vector kv k, VG.Vector vv v, Ord k) => Exts.IsList (VMap kv vv k v) where - type Item (VMap kv vv k v) = (k, v) - fromList = fromList - {-# INLINE fromList #-} - fromListN = fromListN - {-# INLINE fromListN #-} - toList = toAscList - {-# INLINE toList #-} - -instance - (VG.Vector vk k, VG.Vector vv v, ToJSONKey k, ToJSON v) => - ToJSON (VMap vk vv k v) - where - toJSON = toJSON . toMap - toEncoding = toEncoding . toMap - -instance - (VG.Vector vk k, VG.Vector vv v, Ord k, FromJSONKey k, FromJSON v) => - FromJSON (VMap vk vv k v) - where - parseJSON = fmap fromMap . parseJSON - -empty :: (VG.Vector kv k, VG.Vector vv v) => VMap kv vv k v -empty = VMap VG.empty - -size :: VG.Vector kv k => VMap kv vv k v -> Int -size = VG.length . KV.keysVector . unVMap -{-# INLINE size #-} - -lookup :: - (Ord k, VG.Vector kv k, VG.Vector vv v) => k -> VMap kv vv k v -> Maybe v -lookup k = KV.lookupKVVector k . unVMap -{-# INLINE lookup #-} - -member :: - (Ord k, VG.Vector kv k) => k -> VMap kv vv k v -> Bool -member k = KV.memberKVVector k . unVMap -{-# INLINE member #-} - -notMember :: - (Ord k, VG.Vector kv k) => k -> VMap kv vv k v -> Bool -notMember k = not . member k -{-# INLINE notMember #-} - -filter :: - (VG.Vector kv k, VG.Vector vv v) => - (k -> v -> Bool) -> - VMap kv vv k v -> - VMap kv vv k v -filter f = VMap . VG.filter (uncurry f) . unVMap -{-# INLINE filter #-} - -findWithDefault :: - (Ord k, VG.Vector kv k, VG.Vector vv v) => v -> k -> VMap kv vv k v -> v -findWithDefault a k = fromMaybe a . lookup k -{-# INLINE findWithDefault #-} - -fromMap :: (VG.Vector kv k, VG.Vector vv v) => Map.Map k v -> VMap kv vv k v -fromMap = VMap . KV.fromMap -{-# INLINE fromMap #-} - -toMap :: (VG.Vector kv k, VG.Vector vv v) => VMap kv vv k v -> Map.Map k v -toMap = KV.toMap . unVMap -{-# INLINE toMap #-} - -toList :: (VG.Vector kv k, VG.Vector vv v) => VMap kv vv k v -> [(k, v)] -toList = VG.toList . unVMap -{-# INLINE toList #-} - -toAscList :: (VG.Vector kv k, VG.Vector vv v) => VMap kv vv k v -> [(k, v)] -toAscList = VG.toList . unVMap -{-# INLINE toAscList #-} - -fromList :: - (Ord k, VG.Vector kv k, VG.Vector vv v) => [(k, v)] -> VMap kv vv k v -fromList = VMap . KV.fromList -{-# INLINE fromList #-} - -fromListN :: - (Ord k, VG.Vector kv k, VG.Vector vv v) => Int -> [(k, v)] -> VMap kv vv k v -fromListN n = VMap . KV.fromListN n -{-# INLINE fromListN #-} - -fromAscList :: - (Eq k, VG.Vector kv k, VG.Vector vv v) => [(k, v)] -> VMap kv vv k v -fromAscList = VMap . KV.fromAscList -{-# INLINE fromAscList #-} - -fromAscListN :: - (Eq k, VG.Vector kv k, VG.Vector vv v) => Int -> [(k, v)] -> VMap kv vv k v -fromAscListN n = VMap . KV.fromAscListN n -{-# INLINE fromAscListN #-} - -fromAscListWithKey :: - (Eq k, VG.Vector kv k, VG.Vector vv v) => (k -> v -> v -> v) -> [(k, v)] -> VMap kv vv k v -fromAscListWithKey f = VMap . KV.fromAscListWithKey f -{-# INLINE fromAscListWithKey #-} - -fromAscListWithKeyN :: - (Eq k, VG.Vector kv k, VG.Vector vv v) => Int -> (k -> v -> v -> v) -> [(k, v)] -> VMap kv vv k v -fromAscListWithKeyN n f = VMap . KV.fromAscListWithKeyN n f -{-# INLINE fromAscListWithKeyN #-} - -fromDistinctAscList :: - (VG.Vector kv k, VG.Vector vv v) => [(k, v)] -> VMap kv vv k v -fromDistinctAscList = VMap . KV.fromDistinctAscList -{-# INLINE fromDistinctAscList #-} - -fromDistinctAscListN :: - (VG.Vector kv k, VG.Vector vv v) => Int -> [(k, v)] -> VMap kv vv k v -fromDistinctAscListN n = VMap . KV.fromDistinctAscListN n -{-# INLINE fromDistinctAscListN #-} - -map :: - (VG.Vector vv a, VG.Vector vv b) => - (a -> b) -> - VMap kv vv k a -> - VMap kv vv k b -map f (VMap vec) = VMap (KV.mapValsKVVector f vec) -{-# INLINE map #-} - -mapMaybe :: - (VG.Vector kv k, VG.Vector vv a, VG.Vector vv b) => - (a -> Maybe b) -> - VMap kv vv k a -> - VMap kv vv k b -mapMaybe f (VMap vec) = VMap (VG.mapMaybe (\(k, x) -> (,) k <$> f x) vec) -{-# INLINE mapMaybe #-} - -mapWithKey :: - (VG.Vector kv k, VG.Vector vv a, VG.Vector vv b) => - (k -> a -> b) -> - VMap kv vv k a -> - VMap kv vv k b -mapWithKey f (VMap vec) = VMap (KV.mapWithKeyKVVector f vec) -{-# INLINE mapWithKey #-} - -foldMapWithKey :: - (VG.Vector kv k, VG.Vector vv v, Monoid m) => - (k -> v -> m) -> - VMap kv vv k v -> - m -foldMapWithKey f = VG.foldMap' (uncurry f) . unVMap -{-# INLINE foldMapWithKey #-} - -foldl :: - VG.Vector vv v => - (a -> v -> a) -> - a -> - VMap kv vv k v -> - a -foldl f a = VG.foldl' f a . valsVector . unVMap -{-# INLINE foldl #-} - -foldlWithKey :: - (VG.Vector kv k, VG.Vector vv v) => - (a -> k -> v -> a) -> - a -> - VMap kv vv k v -> - a -foldlWithKey f a = VG.foldl' (uncurry . f) a . unVMap -{-# INLINE foldlWithKey #-} - -foldMap :: (VG.Vector vv v, Monoid m) => (v -> m) -> VMap kv vv k v -> m -foldMap f = VG.foldMap' f . valsVector . unVMap -{-# INLINE foldMap #-} - --- | Fold values monoidally -fold :: (VG.Vector vv m, Monoid m) => VMap kv vv k m -> m -fold = VG.foldMap' id . valsVector . unVMap -{-# INLINE fold #-} - -keys :: VG.Vector kv k => VMap kv vv k v -> [k] -keys = VG.toList . keysVector . unVMap -{-# INLINE keys #-} - -elems :: VG.Vector vv v => VMap kv vv k v -> [v] -elems = VG.toList . valsVector . unVMap -{-# INLINE elems #-} - -null :: (VG.Vector vv v, VG.Vector kv k) => VMap kv vv k v -> Bool -null (VMap vec) = VG.null vec -{-# INLINE null #-} - -splitAt :: - (VG.Vector vv v, VG.Vector kv k) => - Int -> - VMap kv vv k v -> - (VMap kv vv k v, VMap kv vv k v) -splitAt i (VMap vec) = let (l, r) = VG.splitAt i vec in (VMap l, VMap r) -{-# INLINE splitAt #-} - -internMaybe :: (VG.Vector kv k, Ord k) => k -> VMap kv vv k v -> Maybe k -internMaybe key = KV.internKVVectorMaybe key . unVMap -{-# INLINE internMaybe #-} diff --git a/libs/vector-map/src/Data/VMap/KVVector.hs b/libs/vector-map/src/Data/VMap/KVVector.hs deleted file mode 100644 index a11d3d60b02..00000000000 --- a/libs/vector-map/src/Data/VMap/KVVector.hs +++ /dev/null @@ -1,429 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -fno-warn-orphans #-} - -module Data.VMap.KVVector ( - VG.Vector, - VGM.MVector, - KVVector (..), - KVMVector, - toMap, - fromMap, - fromAscList, - fromAscListN, - fromAscListWithKey, - fromAscListWithKeyN, - fromDistinctAscList, - fromDistinctAscListN, - fromList, - fromListN, - mapValsKVVector, - mapWithKeyKVVector, - memberKVVector, - lookupKVVector, - lookupDefaultKVVector, - sortAscKVMVector, - internKVVectorMaybe, - normalize, - normalizeM, -) -where - -import Control.Applicative -import Control.DeepSeq -import Control.Monad -import Control.Monad.Primitive -import Control.Monad.ST -import Data.Kind -import qualified Data.List.NonEmpty as NE -import qualified Data.Map.Strict as Map -import Data.Maybe as Maybe -import Data.Semigroup -import Data.Typeable -import Data.Vector.Algorithms.Merge -import qualified Data.Vector.Generic as VG -import qualified Data.Vector.Generic.Mutable as VGM -import qualified Data.Vector.Primitive as VP -import qualified Data.Vector.Storable as VS -import qualified GHC.Exts as Exts -import GHC.Generics -import NoThunks.Class - --- | Convert a __sorted__ key/value vector into a `Map.Map` -toMap :: - (VG.Vector kv k, VG.Vector vv v) => - KVVector kv vv (k, v) -> - Map.Map k v -toMap = Map.fromDistinctAscList . map evalSecond . VG.toList - where - evalSecond kv@(_, !_) = kv -{-# INLINE toMap #-} - --- | Convert a `Map.Map` into a sorted key/value vector. -fromMap :: - (VG.Vector kv k, VG.Vector vv v) => Map.Map k v -> KVVector kv vv (k, v) -fromMap m = fromDistinctAscListN (Map.size m) $ Map.toAscList m -{-# INLINE fromMap #-} - --- | Convert a possibly unsorted assoc list into a KVVector. -fromList :: - (VG.Vector kv k, VG.Vector vv v, Ord k) => - [(k, v)] -> - KVVector kv vv (k, v) -fromList xs = VG.create $ do - mv <- VGM.unsafeNew (Prelude.length xs) - forM_ (Prelude.zip [0 ..] xs) (uncurry (VGM.unsafeWrite mv)) - sortAscKVMVector mv - removeDuplicates_ mv -{-# INLINE fromList #-} - --- | Convert a possibly unsorted assoc list into a KVVector. -fromListN :: - (VG.Vector kv k, VG.Vector vv v, Ord k) => - Int -> - [(k, v)] -> - KVVector kv vv (k, v) -fromListN n xs = VG.create $ do - mv <- fillWithList xs =<< VGM.unsafeNew n - sortAscKVMVector mv - removeDuplicates_ mv -{-# INLINE fromListN #-} - --- | Convert a sorted assoc list with distionct keys into a KVVector -fromDistinctAscList :: - (VG.Vector kv k, VG.Vector vv v) => - [(k, v)] -> - KVVector kv vv (k, v) -fromDistinctAscList xs = VG.fromListN (Prelude.length xs) xs --- We do not use `VG.fromList`, because we need guarantees for minimal memory --- consumption by the vector, which growing conversion algorithm implemented in --- vector does not provide -{-# INLINE fromDistinctAscList #-} - --- | Convert a sorted assoc list with distionct keys into a KVVector. Length --- must be supplied. -fromDistinctAscListN :: - (VG.Vector kv k, VG.Vector vv v) => - Int -> - [(k, v)] -> - KVVector kv vv (k, v) -fromDistinctAscListN = VG.fromListN -{-# INLINE fromDistinctAscListN #-} - --- | Convert a sorted assoc list into a KVVector -fromAscList :: - (Eq k, VG.Vector kv k, VG.Vector vv v) => - [(k, v)] -> - KVVector kv vv (k, v) -fromAscList xs = fromAscListN (Prelude.length xs) xs -{-# INLINE fromAscList #-} - --- | Convert a sorted assoc list into a KVVector -fromAscListN :: - (Eq k, VG.Vector kv k, VG.Vector vv v) => - Int -> - [(k, v)] -> - KVVector kv vv (k, v) -fromAscListN n = fromAscListWithKeyN n selectDuplicate -{-# INLINE fromAscListN #-} - --- | Fill a mutable vector with elements from the list, slicing the vector if --- the list too short. -fillWithList :: - (VGM.MVector v a, PrimMonad m) => - [a] -> - v (PrimState m) a -> - m (v (PrimState m) a) -fillWithList zs mv = go 0 zs - where - n = VGM.length mv - go i ys - | i == n = pure mv - | x : xs <- ys = VGM.write mv i x >> go (i + 1) xs - | otherwise = pure $ VGM.slice 0 i mv -{-# INLINE fillWithList #-} - -fromAscListWithKey :: - (Eq k, VG.Vector kv k, VG.Vector vv v) => - (k -> v -> v -> v) -> - [(k, v)] -> - KVVector kv vv (k, v) -fromAscListWithKey f xs = fromAscListWithKeyN (length xs) f xs -{-# INLINE fromAscListWithKey #-} - -fromAscListWithKeyN :: - (Eq k, VG.Vector kv k, VG.Vector vv v) => - Int -> - (k -> v -> v -> v) -> - [(k, v)] -> - KVVector kv vv (k, v) -fromAscListWithKeyN n f xs - | n <= 0 = VG.empty - | otherwise = VG.create $ VGM.unsafeNew n >>= fillWithList xs >>= removeDuplicates f -{-# INLINE fromAscListWithKeyN #-} - -mapValsKVVector :: - (VG.Vector vv a, VG.Vector vv b) => - (a -> b) -> - KVVector kv vv (k, a) -> - KVVector kv vv (k, b) -mapValsKVVector f vec = - KVVector {keysVector = keysVector vec, valsVector = VG.map f (valsVector vec)} -{-# INLINE mapValsKVVector #-} - -mapWithKeyKVVector :: - (VG.Vector kv k, VG.Vector vv a, VG.Vector vv b) => - (k -> a -> b) -> - KVVector kv vv (k, a) -> - KVVector kv vv (k, b) -mapWithKeyKVVector f KVVector {..} = - KVVector - { keysVector = keysVector - , valsVector = VG.imap (\i -> f (keysVector VG.! i)) valsVector - } -{-# INLINE mapWithKeyKVVector #-} - -internKVVectorMaybe :: (VG.Vector kv k, Ord k) => k -> KVVector kv vv (k, v) -> Maybe k -internKVVectorMaybe key (KVVector keys _values) = - VG.indexM keys =<< lookupIxSortedVector key keys -{-# INLINE internKVVectorMaybe #-} - --- | Look up a value by the key in a __sorted__ key/value vector. Ensure it is --- sorted otherwise terrible things happen. -lookupKVVector :: - (Ord k, VG.Vector kv k, VG.Vector vv v) => k -> KVVector kv vv (k, v) -> Maybe v -lookupKVVector key (KVVector keys values) = - VG.indexM values =<< lookupIxSortedVector key keys -{-# INLINE lookupKVVector #-} - --- | Look up a value by the key in a __sorted__ key/value vector. Ensure it is --- sorted otherwise terrible things happen. -lookupDefaultKVVector :: - (Ord k, VG.Vector kv k, VG.Vector vv v) => v -> k -> KVVector kv vv (k, v) -> v -lookupDefaultKVVector v k = fromMaybe v . lookupKVVector k -{-# INLINE lookupDefaultKVVector #-} - -memberKVVector :: (Ord k, VG.Vector kv k) => k -> KVVector kv vv (k, v) -> Bool -memberKVVector k = isJust . lookupIxSortedVector k . keysVector -{-# INLINE memberKVVector #-} - --- | Perform a binary search on a sorted vector -lookupIxSortedVector :: - (VG.Vector kv k, Ord k) => k -> kv k -> Maybe Int -lookupIxSortedVector key keys = go 0 (VG.length keys) - where - go !l !u = do - guard (l < u) - let !i = ((u - l) `div` 2) + l - case compare key (keys VG.! i) of - LT -> go l i - GT -> go (i + 1) u - EQ -> Just i -{-# INLINE lookupIxSortedVector #-} - -sortAscKVMVector :: - (VGM.MVector kmv k, VGM.MVector vmv v, Ord k, PrimMonad m) => - KVMVector kmv vmv (PrimState m) (k, v) -> - m () -sortAscKVMVector = sortBy (\(k1, _) (k2, _) -> compare k1 k2) -{-# INLINE sortAscKVMVector #-} - -selectDuplicate :: k -> v -> v -> v -selectDuplicate _ v _ = v - -removeDuplicates_ :: - (VGM.MVector kmv k, VGM.MVector vmv v, Eq k, PrimMonad m) => - KVMVector kmv vmv (PrimState m) (k, v) -> - m (KVMVector kmv vmv (PrimState m) (k, v)) -removeDuplicates_ = removeDuplicates selectDuplicate -{-# INLINE removeDuplicates_ #-} - -removeDuplicates :: - (VGM.MVector kmv k, VGM.MVector vmv v, Eq k, PrimMonad m) => - (k -> v -> v -> v) -> - KVMVector kmv vmv (PrimState m) (k, v) -> - m (KVMVector kmv vmv (PrimState m) (k, v)) -removeDuplicates f mv - | VGM.null mv = pure mv - | otherwise = do - let n = VGM.length mv - goMoved lastIx prev@(pk, pv) curIx = do - VGM.write mv lastIx prev - if curIx < n - then do - cur@(ck, cv) <- VGM.read mv curIx - if ck == pk - then goMoved lastIx (ck, f ck cv pv) (curIx + 1) - else goMoved (lastIx + 1) cur (curIx + 1) - else pure $ VGM.slice 0 (lastIx + 1) mv - goUnmoved (pk, pv) curIx - | curIx < n = do - cur@(ck, cv) <- VGM.read mv curIx - if ck == pk - then goMoved (curIx - 1) (ck, f ck cv pv) (curIx + 1) - else goUnmoved cur (curIx + 1) - | otherwise = pure mv - x0 <- VGM.read mv 0 - goUnmoved x0 1 -{-# INLINE removeDuplicates #-} - -normalize :: - (VG.Vector kv k, VG.Vector vv v, Ord k) => - KVVector kv vv (k, v) -> - KVVector kv vv (k, v) -normalize v = runST $ VG.thaw v >>= normalizeM >>= VG.unsafeFreeze -{-# INLINE normalize #-} - -normalizeM :: - (Ord k, PrimMonad m, VG.Vector kv k, VG.Vector vv v) => - KVMVector (VG.Mutable kv) (VG.Mutable vv) (PrimState m) (k, v) -> - m (KVMVector (VG.Mutable kv) (VG.Mutable vv) (PrimState m) (k, v)) -normalizeM mv = sortAscKVMVector mv >> removeDuplicates_ mv -{-# INLINE normalizeM #-} - -instance (VG.Vector kv k, VG.Vector vv v, Ord k) => Semigroup (KVVector kv vv (k, v)) where - (<>) v1 v2 = normalize (v1 VG.++ v2) - {-# INLINE (<>) #-} - sconcat = normalize . VG.concat . NE.toList - {-# INLINE sconcat #-} - -instance (VG.Vector kv k, VG.Vector vv v, Ord k) => Monoid (KVVector kv vv (k, v)) where - mempty = VG.empty - mconcat = normalize . VG.concat - {-# INLINE mconcat #-} - -type family Key e :: Type where - Key (k, v) = k - -type family Value e :: Type where - Value (k, v) = v - -data KVVector kv vv a = KVVector - { keysVector :: !(kv (Key a)) - , valsVector :: !(vv (Value a)) - } - deriving (Generic) - -instance (VG.Vector kv k, VG.Vector vv v, Ord k) => Exts.IsList (KVVector kv vv (k, v)) where - type Item (KVVector kv vv (k, v)) = (k, v) - fromList = fromList - {-# INLINE fromList #-} - fromListN = fromListN - {-# INLINE fromListN #-} - toList = VG.toList - {-# INLINE toList #-} - -deriving instance (Eq (kv k), Eq (vv v)) => Eq (KVVector kv vv (k, v)) - -deriving instance (Show (kv k), Show (vv v)) => Show (KVVector kv vv (k, v)) - -data KVMVector kmv vmv s a = KVMVector - { _keysMVector :: !(kmv s (Key a)) - , _valsMVector :: !(vmv s (Value a)) - } - -type instance VG.Mutable (KVVector kv vv) = KVMVector (VG.Mutable kv) (VG.Mutable vv) - -instance (NFData (kv k), (NFData (vv v))) => NFData (KVVector kv vv (k, v)) where - rnf KVVector {..} = keysVector `deepseq` valsVector `deepseq` () - -instance (VG.Vector kv k, VG.Vector vv v) => VG.Vector (KVVector kv vv) (k, v) where - {-# INLINE basicUnsafeFreeze #-} - basicUnsafeFreeze (KVMVector kmv vmv) = - KVVector <$> VG.basicUnsafeFreeze kmv <*> VG.basicUnsafeFreeze vmv - - {-# INLINE basicUnsafeThaw #-} - basicUnsafeThaw (KVVector kv vv) = KVMVector <$> VG.basicUnsafeThaw kv <*> VG.basicUnsafeThaw vv - - {-# INLINE basicLength #-} - -- ignore length on values, it assumed to match vector with keys - basicLength (KVVector kv _) = VG.basicLength kv - - {-# INLINE basicUnsafeSlice #-} - basicUnsafeSlice i n (KVVector kv vv) = - KVVector (VG.basicUnsafeSlice i n kv) (VG.basicUnsafeSlice i n vv) - - {-# INLINE basicUnsafeIndexM #-} - basicUnsafeIndexM (KVVector kv vv) i = do - k <- VG.basicUnsafeIndexM kv i - v <- VG.basicUnsafeIndexM vv i - pure (k, v) - - {-# INLINE basicUnsafeCopy #-} - basicUnsafeCopy (KVMVector kvDst vvDst) (KVVector kvSrc vvSrc) = - VG.basicUnsafeCopy kvDst kvSrc >> VG.basicUnsafeCopy vvDst vvSrc - -instance (VGM.MVector kmv k, VGM.MVector vmv v) => VGM.MVector (KVMVector kmv vmv) (k, v) where - {-# INLINE basicLength #-} - -- ignore length on values, it assumed to match vector with keys - basicLength (KVMVector kmv _) = VGM.basicLength kmv - - {-# INLINE basicUnsafeSlice #-} - basicUnsafeSlice j m (KVMVector kmv vmv) = - KVMVector (VGM.basicUnsafeSlice j m kmv) (VGM.basicUnsafeSlice j m vmv) - - {-# INLINE basicOverlaps #-} - basicOverlaps (KVMVector kmv1 vmv1) (KVMVector kmv2 vmv2) = - VGM.basicOverlaps kmv1 kmv2 && VGM.basicOverlaps vmv1 vmv2 - - {-# INLINE basicUnsafeNew #-} - basicUnsafeNew n = do - kmv1 <- VGM.basicUnsafeNew n - vmv1 <- VGM.basicUnsafeNew n - return (KVMVector kmv1 vmv1) - - {-# INLINE basicInitialize #-} - basicInitialize (KVMVector kmv vmv) = VGM.basicInitialize kmv >> VGM.basicInitialize vmv - - {-# INLINE basicUnsafeReplicate #-} - basicUnsafeReplicate n !(!k, !v) = - KVMVector <$> VGM.basicUnsafeReplicate n k <*> VGM.basicUnsafeReplicate n v - - {-# INLINE basicUnsafeRead #-} - basicUnsafeRead (KVMVector kmv vmv) i = do - k <- VGM.basicUnsafeRead kmv i - v <- VGM.basicUnsafeRead vmv i - pure (k, v) - - {-# INLINE basicUnsafeWrite #-} - basicUnsafeWrite (KVMVector kmv vmv) i !(!k, !v) = - VGM.basicUnsafeWrite kmv i k >> VGM.basicUnsafeWrite vmv i v - - {-# INLINE basicUnsafeCopy #-} - basicUnsafeCopy (KVMVector kmvDst vmvDst) (KVMVector kmvSrc vmvSrc) = - VGM.basicUnsafeCopy kmvDst kmvSrc >> VGM.basicUnsafeCopy vmvDst vmvSrc - - {-# INLINE basicUnsafeMove #-} - basicUnsafeMove (KVMVector kmvDst vmvDst) (KVMVector kmvSrc vmvSrc) = - VGM.basicUnsafeMove kmvDst kmvSrc >> VGM.basicUnsafeMove vmvDst vmvSrc - - {-# INLINE basicClear #-} - basicClear (KVMVector kmv vmv) = VGM.basicClear kmv >> VGM.basicClear vmv - -instance - ( NoThunks (kv k) - , NoThunks (vv v) - , Typeable kv - , Typeable vv - , Typeable k - , Typeable v - ) => - NoThunks (KVVector kv vv (k, v)) - where - wNoThunks c (KVVector kv vv) = (<|>) <$> wNoThunks c kv <*> wNoThunks c vv - showTypeOf px = showsTypeRep (typeRep px) "" - -instance Typeable e => NoThunks (VS.Vector e) where - wNoThunks _ !_ = pure Nothing - showTypeOf px = showsTypeRep (typeRep px) "" - -instance Typeable e => NoThunks (VP.Vector e) where - wNoThunks _ !_ = pure Nothing - showTypeOf px = showsTypeRep (typeRep px) "" diff --git a/libs/vector-map/test/Main.hs b/libs/vector-map/test/Main.hs deleted file mode 100644 index e6fcf7ada6a..00000000000 --- a/libs/vector-map/test/Main.hs +++ /dev/null @@ -1,16 +0,0 @@ -module Main where - -import Test.Tasty -import Test.VMap - --- ==================================================================================== - -tests :: TestTree -tests = - testGroup - "vector-map" - [ vMapTests - ] - -main :: IO () -main = defaultMain tests diff --git a/libs/vector-map/test/Test/Common.hs b/libs/vector-map/test/Test/Common.hs deleted file mode 100644 index c420a9e23e5..00000000000 --- a/libs/vector-map/test/Test/Common.hs +++ /dev/null @@ -1,30 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE RecordWildCards #-} - -module Test.Common ( - testLawsGroup, - testPropertyN, - withMaxTimesSuccess, - module X, -) -where - -import Control.Applicative -import Data.Proxy as X -import Test.QuickCheck.Classes.Base as X -import Test.QuickCheck.Property (mapTotalResult, maybeNumTests) -import Test.Tasty as X -import Test.Tasty.QuickCheck as X - -withMaxTimesSuccess :: Testable prop => Int -> prop -> Property -withMaxTimesSuccess !n = - mapTotalResult $ \res -> res {maybeNumTests = (n *) <$> (maybeNumTests res <|> Just 100)} - -testPropertyN :: Testable prop => Int -> TestName -> prop -> TestTree -testPropertyN n name = testProperty name . withMaxTimesSuccess n - -testLawsGroup :: TestName -> [Laws] -> TestTree -testLawsGroup name = testGroup name . fmap testLaws - where - testLaws Laws {..} = - testGroup lawsTypeclass $ fmap (uncurry testProperty) lawsProperties diff --git a/libs/vector-map/test/Test/VMap.hs b/libs/vector-map/test/Test/VMap.hs deleted file mode 100644 index 8c5364f68d7..00000000000 --- a/libs/vector-map/test/Test/VMap.hs +++ /dev/null @@ -1,80 +0,0 @@ -{-# LANGUAGE TypeApplications #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.VMap where - -import qualified Data.List as List -import qualified Data.Map.Strict as Map -import Data.VMap as VMap -import Test.Common - -type MapT = Map.Map Char Int - -type VMapT = VMap VB VP Char Int - -instance - (Ord k, Vector kv k, Vector vv v, Arbitrary k, Arbitrary v) => - Arbitrary (VMap kv vv k v) - where - arbitrary = - VMap.fromMap . Map.fromList <$> arbitrary - -prop_Roundtrip :: (VMapT -> a) -> (a -> VMapT) -> VMapT -> Property -prop_Roundtrip to from km = from (to km) === km - -prop_AsMapTo :: - (Show a, Eq a) => (VMapT -> a) -> (MapT -> a) -> VMapT -> Property -prop_AsMapTo fromVM fromM vm = fromVM vm === fromM (toMap vm) - -prop_AsMapFrom :: (a -> VMapT) -> (a -> MapT) -> a -> Property -prop_AsMapFrom mkVMap mkMap a = toMap (mkVMap a) === mkMap a - -vMapTests :: TestTree -vMapTests = - testGroup - "VMap" - [ testGroup - "roundtrip" - [ testProperty "to/fromAscDistinctList" $ - prop_Roundtrip VMap.toAscList VMap.fromDistinctAscList - , testProperty "to/fromAscList" $ prop_Roundtrip VMap.toAscList VMap.fromAscList - , testProperty "to/fromList" $ prop_Roundtrip VMap.toAscList VMap.fromList - , testProperty "to/fromMap" $ prop_Roundtrip VMap.toMap VMap.fromMap - ] - , testGroup - "asMap" - [ testProperty "fromList" $ prop_AsMapFrom VMap.fromList Map.fromList - , testProperty "fromAscListWithKey" $ \xs f -> - prop_AsMapFrom - (VMap.fromAscListWithKey (applyFun3 f)) - (Map.fromAscListWithKey (applyFun3 f)) - (List.sortOn fst xs) - , testProperty "fromAscListWithKeyN" $ \n xs f -> - prop_AsMapFrom - (VMap.fromAscListWithKeyN n (applyFun3 f)) - (Map.fromAscListWithKey (applyFun3 f) . take n) - (List.sortOn fst xs) - , testProperty "toAscList" $ prop_AsMapTo VMap.toAscList Map.toAscList - , testProperty "foldMapWithKey" $ \f -> - let f' k v = applyFun2 f k v :: String - in prop_AsMapTo (VMap.foldMapWithKey f') (Map.foldMapWithKey f') - , testProperty "lookup" $ \k -> prop_AsMapTo (VMap.lookup k) (Map.lookup k) - , testProperty "lookup (existing)" $ \k v xs -> - let xs' = xs <> [(k, v)] - in (VMap.lookup k (VMap.fromList xs' :: VMapT) === Just v) - .&&. (Map.lookup k (Map.fromList xs' :: MapT) === Just v) - , testProperty "finsWithDefault" $ \d k -> - prop_AsMapTo (VMap.findWithDefault d k) (Map.findWithDefault d k) - , testProperty "finsWithDefault (existing)" $ \k v xs -> - let xs' = xs <> [(k, v)] - in (VMap.findWithDefault undefined k (VMap.fromList xs' :: VMapT) === v) - .&&. (Map.findWithDefault undefined k (Map.fromList xs' :: MapT) === v) - ] - , testLawsGroup - "classes" - [ eqLaws (Proxy @VMapT) - , semigroupLaws (Proxy @VMapT) - , monoidLaws (Proxy @VMapT) - , isListLaws (Proxy @VMapT) - ] - ] diff --git a/libs/vector-map/testlib/Test/Data/VMap/TreeDiff.hs b/libs/vector-map/testlib/Test/Data/VMap/TreeDiff.hs deleted file mode 100644 index 5d944707a5f..00000000000 --- a/libs/vector-map/testlib/Test/Data/VMap/TreeDiff.hs +++ /dev/null @@ -1,10 +0,0 @@ -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Data.VMap.TreeDiff () where - -import Data.TreeDiff.Class (ToExpr (toExpr)) -import Data.VMap -import qualified Data.Vector.Generic as VG - -instance (VG.Vector kv k, VG.Vector vv v, ToExpr k, ToExpr v) => ToExpr (VMap kv vv k v) where - toExpr = toExpr . toMap diff --git a/libs/vector-map/vector-map.cabal b/libs/vector-map/vector-map.cabal deleted file mode 100644 index 7016a95ad7c..00000000000 --- a/libs/vector-map/vector-map.cabal +++ /dev/null @@ -1,89 +0,0 @@ -cabal-version: 3.0 -name: vector-map -version: 1.1.0.0 -license: Apache-2.0 -maintainer: operations@iohk.io -author: IOHK -homepage: https://github.com/intersectmbo/cardano-ledger -synopsis: - An efficient VMap that is backed by two vectors: one for keys and another for values. - -category: Control -build-type: Simple -extra-source-files: CHANGELOG.md - -source-repository head - type: git - location: https://github.com/intersectmbo/cardano-ledger - subdir: libs/vector-map - -library - exposed-modules: Data.VMap - hs-source-dirs: src - other-modules: Data.VMap.KVVector - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wunused-packages - - build-depends: - base >=4.14 && <5, - aeson, - containers, - deepseq, - nothunks, - primitive, - vector, - vector-algorithms - -library testlib - exposed-modules: Test.Data.VMap.TreeDiff - visibility: public - hs-source-dirs: testlib - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wpartial-fields - -Wunused-packages - - build-depends: - base, - tree-diff, - vector, - vector-map - -test-suite tests - type: exitcode-stdio-1.0 - main-is: Main.hs - hs-source-dirs: test - other-modules: - Test.Common - Test.VMap - - default-language: Haskell2010 - ghc-options: - -Wall -Wcompat -Wincomplete-record-updates - -Wincomplete-uni-patterns -Wredundant-constraints -Wunused-packages - -threaded - - build-depends: - base, - containers, - tasty, - tasty-quickcheck, - vector-map, - QuickCheck, - quickcheck-classes-base - -benchmark bench - type: exitcode-stdio-1.0 - main-is: Bench.hs - hs-source-dirs: bench - default-language: Haskell2010 - ghc-options: -Wall -threaded -O2 -rtsopts - build-depends: - base, - criterion, - vector-map, - containers, - random diff --git a/nix/flake-compat.nix b/nix/flake-compat.nix deleted file mode 100644 index 42d684e5c43..00000000000 --- a/nix/flake-compat.nix +++ /dev/null @@ -1,11 +0,0 @@ -import -( - let - lock = builtins.fromJSON (builtins.readFile ../flake.lock); - in - fetchTarball { - url = "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz"; - sha256 = lock.nodes.flake-compat.locked.narHash; - } -) -{src = ./..;} diff --git a/nix/latex.nix b/nix/latex.nix deleted file mode 100644 index dd18e324f35..00000000000 --- a/nix/latex.nix +++ /dev/null @@ -1,59 +0,0 @@ -{ - stdenv, - lib, - texlive, -}: { - # Build a latex derivation using latexmk. - buildLatex = { - texFiles ? [], # The specific tex files to build, will try and build all of them if absent - texInputs ? {inherit (texlive) scheme-small;}, # Tex dependencies as an attrset - buildInputs ? [], # Additional build inputs - ... - } @ attrs: let - tex = texlive.combine (texInputs // {inherit (texlive) latexmk;}); - # mkDerivation doesn't like having this as an attr, and we don't need to pass it through - filteredAttrs = builtins.removeAttrs attrs ["texInputs"]; - buildDir = ".nix-build"; - in - stdenv.mkDerivation (filteredAttrs - // { - buildInputs = [tex] ++ buildInputs; - buildPhase = '' - runHook preBuild - mkdir -p ${buildDir} - # The bibtex_fudge setting is because our version of latexmk has an issue with bibtex - # and explicit output directories, which should be fixed in v4.70b: - # https://tex.stackexchange.com/questions/564626/latexmk-4-70a-doesnt-compile-document-with-bibtex-citation - latexmk \ - -outdir=${buildDir} \ - -pdf ${toString texFiles} - runHook postBuild - ''; - installPhase = '' - runHook preInstall - mkdir -p $out - install -t $out ${buildDir}/*.pdf - - mkdir -p $out/nix-support - for pdf in $out/*.pdf; do - echo "doc-pdf $(basename $pdf .pdf) $pdf" >> $out/nix-support/hydra-build-products - done - runHook postInstall - ''; - }); - # A typical good filter for latex sources. - filterLatex = src: - lib.sourceFilesBySuffices src [ - ".tex" - ".bib" - ".bst" - ".cls" - ".sty" - ".jpg" - ".png" - ".pdf" - ".pfb" - ".enc" - "TODO" - ]; -} diff --git a/nix/pkgs.nix b/nix/pkgs.nix deleted file mode 100644 index 418a1d92aa2..00000000000 --- a/nix/pkgs.nix +++ /dev/null @@ -1,6 +0,0 @@ -# our packages overlay -prev: final: -import ./latex.nix {inherit (final) stdenv lib texlive;} -// { - cddl = final.callPackage ./pkgs/cddl {}; -} diff --git a/nix/pkgs/cddl/Gemfile b/nix/pkgs/cddl/Gemfile deleted file mode 100644 index 2ba729084f1..00000000000 --- a/nix/pkgs/cddl/Gemfile +++ /dev/null @@ -1,2 +0,0 @@ -source 'https://rubygems.org' -gem 'cddl' diff --git a/nix/pkgs/cddl/Gemfile.lock b/nix/pkgs/cddl/Gemfile.lock deleted file mode 100644 index 7f74832768f..00000000000 --- a/nix/pkgs/cddl/Gemfile.lock +++ /dev/null @@ -1,40 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - abnc (0.1.1) - abnftt (0.2.4) - base32 (0.3.4) - cbor-canonical (0.1.2) - cbor-deterministic (0.1.3) - cbor-diag (0.8.7) - cbor-canonical - cbor-deterministic - cbor-packed - json_pure - neatjson - treetop (~> 1) - cbor-packed (0.1.3) - cddl (0.10.3) - abnc - abnftt - base32 (~> 0.3) - cbor-diag - colorize - json_pure - regexp-examples - colorize (0.8.1) - json_pure (2.7.1) - neatjson (0.9) - polyglot (0.3.5) - regexp-examples (1.5.1) - treetop (1.6.11) - polyglot (~> 0.3) - -PLATFORMS - ruby - -DEPENDENCIES - cddl - -BUNDLED WITH - 2.3.6 diff --git a/nix/pkgs/cddl/default.nix b/nix/pkgs/cddl/default.nix deleted file mode 100644 index 96558432b5a..00000000000 --- a/nix/pkgs/cddl/default.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ - lib, - bundlerApp, - bundlerUpdateScript, -}: -bundlerApp { - pname = "cddl"; - gemdir = ./.; - exes = ["cddl"]; -} diff --git a/nix/pkgs/cddl/gemset.nix b/nix/pkgs/cddl/gemset.nix deleted file mode 100644 index 5e07f1df47c..00000000000 --- a/nix/pkgs/cddl/gemset.nix +++ /dev/null @@ -1,146 +0,0 @@ -{ - abnc = { - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0yj09gc9w208wsy0d45vzha4zfwxdpsqvkm9vms0chm4lxdwdg9x"; - type = "gem"; - }; - version = "0.1.1"; - }; - abnftt = { - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1z7ibh0xv9mqk61rvvmz9fnfk6hffvnppqd8fx61vazjhisi9bcs"; - type = "gem"; - }; - version = "0.2.4"; - }; - base32 = { - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1fjs0l3c5g9qxwp43kcnhc45slx29yjb6m6jxbb2x1krgjmi166b"; - type = "gem"; - }; - version = "0.3.4"; - }; - cbor-canonical = { - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1fhj51s5d9b9spw096sb0p92bgilw9hrsay383563dh913j2jn11"; - type = "gem"; - }; - version = "0.1.2"; - }; - cbor-deterministic = { - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1w1mg4mn1dhlxlbijxpzja8m8ggrjs0hzkzvnaazw9zm1ji6dpba"; - type = "gem"; - }; - version = "0.1.3"; - }; - cbor-diag = { - dependencies = ["cbor-canonical" "cbor-deterministic" "cbor-packed" "json_pure" "neatjson" "treetop"]; - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0rwd88xngbjamgydj9rg3wvgl53pfzhal2n702s9afa1yp8mjm51"; - type = "gem"; - }; - version = "0.8.7"; - }; - cbor-packed = { - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "046vj3i603i0skv80cynlqkh3di5419hbsfi10i69pc08wvggk6l"; - type = "gem"; - }; - version = "0.1.3"; - }; - cddl = { - dontPatchShebangs = 1; - dependencies = ["abnc" "abnftt" "base32" "cbor-diag" "colorize" "json_pure" "regexp-examples"]; - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1qll1qvn3g75r742kr4da7240zdk2qj4vh325965rrjqp8brz23q"; - type = "gem"; - }; - version = "0.10.3"; - }; - colorize = { - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "133rqj85n400qk6g3dhf2bmfws34mak1wqihvh3bgy9jhajw580b"; - type = "gem"; - }; - version = "0.8.1"; - }; - json_pure = { - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "09w7f7xlcas9irlaavhz0rnh17cjvjmmqm07drgghx5gwjcrar31"; - type = "gem"; - }; - version = "2.7.1"; - }; - neatjson = { - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0fa2v7b6433j0iqh5iq9r71v7a5xabgjvqwsbl21vcsac7vf3ncw"; - type = "gem"; - }; - version = "0.9"; - }; - polyglot = { - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1bqnxwyip623d8pr29rg6m8r0hdg08fpr2yb74f46rn1wgsnxmjr"; - type = "gem"; - }; - version = "0.3.5"; - }; - regexp-examples = { - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0wfkwczjn62qq3z96dxk43m0gh6d5cajx9pxkanvk88d3yqnx29v"; - type = "gem"; - }; - version = "1.5.1"; - }; - treetop = { - dependencies = ["polyglot"]; - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0697qz1akblf8r3wi0s2dsjh468hfsd57fb0mrp93z35y2ni6bhh"; - type = "gem"; - }; - version = "1.6.11"; - }; -} diff --git a/scripts/cabal-format.sh b/scripts/cabal-format.sh deleted file mode 100755 index 8d5a982515f..00000000000 --- a/scripts/cabal-format.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -for f in $(git ls-files -- '*.cabal'); do cabal format $f; done - -git diff --exit-code diff --git a/scripts/fourmolize.sh b/scripts/fourmolize.sh deleted file mode 100755 index 1b712c005e7..00000000000 --- a/scripts/fourmolize.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -if [[ $# -gt 0 ]]; then - case "$1" in - --changes) - files=$(git diff --diff-filter=MA --name-only origin/master HEAD -- '*.hs') - if [[ -n "$files" ]]; then - # Run fourmolu on changes compared to `master`. - fourmolu -m inplace $(echo "$files" | grep -v Setup.hs) - fi - ;; - *) - echo "Invalid option: $1" >&2 - exit 1 - ;; - esac -else - fourmolu -m inplace $(git ls-files -- '*.hs' | grep -v Setup.hs) -fi - -git diff --exit-code diff --git a/scripts/gen-hie.sh b/scripts/gen-hie.sh deleted file mode 100755 index 7dfc842661c..00000000000 --- a/scripts/gen-hie.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -gen-hie > hie.yaml - -git diff --exit-code \ No newline at end of file diff --git a/scripts/ghcid b/scripts/ghcid deleted file mode 100755 index d0a200c6195..00000000000 --- a/scripts/ghcid +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env bash - -set -euC - -SNAME=cardano-ledger-ghcid - -PACKAGES=( - libs/small-steps - eras/shelley/impl - eras/shelley/test-suite - eras/shelley-ma/impl - eras/shelley-ma/shelley-ma-test -) - -ghcid_for_package () { - local wd="$(pwd)/$1" - PACKAGE_NAME=$(get_package_name $wd | xargs basename | sed -e "s/.cabal//") - echo $PACKAGE_NAME - tmux new-window -d -t "=$SNAME" -n $PACKAGE_NAME -c "$wd" - tmux send-keys -t "=$SNAME:=$PACKAGE_NAME" 'ghcid' Enter -} - -# Get the package name for a given directory -get_package_name () { - CABAL_FILE=$(find $1 -maxdepth 1 -name "*.cabal") - echo $CABAL_FILE -} - -att() { - [ -n "${TMUX:-}" ] && - tmux switch-client -t "=$SNAME" || - tmux attach-session -t "=$SNAME" -} - -if tmux has-session -t "=$SNAME" 2> /dev/null; then - att - exit 0 -fi - -tmux new-session -d -s $SNAME -tmux rename-window -t "=$SNAME:0" "cls" - -for t in ${PACKAGES[@]}; do - ghcid_for_package $t -done - -att diff --git a/scripts/haddocks.sh b/scripts/haddocks.sh deleted file mode 100755 index c21884af8a0..00000000000 --- a/scripts/haddocks.sh +++ /dev/null @@ -1,114 +0,0 @@ -#!/usr/bin/env bash - -# Build haddock documentation and an index for all projects in -# `cardano-ledger` repository. -# -# usage: -# ./haddocks.sh directory [components ...] -# -# $1 - where to put the generated pages, this directory contents will be wiped -# out (so don't pass `/` or `./` - the latter will delete your 'dist-newstyle') -# (the default is 'haddocks') -# $2 - the components to re-build haddocks for, or 'all' -# (the default is none) -# - -set -euo pipefail - -OUTPUT_DIR=${1:-haddocks} -REGENERATE=("${@:2}") - -BUILD_DIR=dist-newstyle - -CABAL_OPTS=( - --builddir "${BUILD_DIR}" - --enable-benchmarks - --enable-documentation - --enable-tests -) - -# Generate `doc-index.json` and `doc-index.html` per package, to assemble them later at the top level. -HADDOCK_OPTS=( - --haddock-all - --haddock-html - --haddock-hyperlink-source - --haddock-option "--show-all" - --haddock-option "--use-unicode" - --haddock-option="--base-url=.." - --haddock-quickjump -) - -# Rebuild documentation if requested -if (( "${#REGENERATE[@]}" > 0 )); then - cabal build "${CABAL_OPTS[@]}" "${REGENERATE[@]}" - cabal haddock "${CABAL_OPTS[@]}" "${REGENERATE[@]}" "${HADDOCK_OPTS[@]}" -fi - -if [[ ! -d "${OUTPUT_DIR}" ]]; then - mkdir -p "${OUTPUT_DIR}" -fi - -# make all files user writable -chmod -R u+w "${OUTPUT_DIR}" - -GHC_VERSION=$(ghc --numeric-version) -OS_ARCH=$(jq -r '"\(.arch)-\(.os)"' "$BUILD_DIR/cache/plan.json") - -# copy the new docs -for package_dir in "${BUILD_DIR}/build/${OS_ARCH}/ghc-${GHC_VERSION}"/*; do - package=$(basename "${package_dir}" | sed 's/-[0-9]\+\(\.[0-9]\+\)*//') - if [ -d "${package_dir}/doc/html/${package}" ]; then - cp -r "${package_dir}/doc/html/${package}" "${OUTPUT_DIR}" - else continue - fi - # copy test packages documentation when it exists - if [ -d "${package_dir}/t" ]; then - for test_package_dir in "${package_dir}/t"/*; do - test_package=$(basename "${test_package_dir}") - if [ -d "${test_package_dir}/doc/html/${package}/${test_package}" ]; then - cp -r "${test_package_dir}/doc/html/${package}/${test_package}" "${OUTPUT_DIR}/${package}:${test_package}" - cp -n "${package_dir}/doc/html/${package}"/{*.css,*.js} "${OUTPUT_DIR}/${package}:${test_package}" - fi - done - fi - # copy lib packages documentation when it exists - if [ -d "${package_dir}/l" ]; then - for lib_package_dir in "${package_dir}/l"/*; do - lib_package=$(basename "${lib_package_dir}") - if [ -d "${lib_package_dir}/doc/html/${package}" ]; then - cp -r "${lib_package_dir}/doc/html/${package}" "${OUTPUT_DIR}/${package}:${lib_package}" - cp -n "${package_dir}/doc/html/${package}"/{*.css,*.js} "${OUTPUT_DIR}/${package}:${lib_package}" - fi - done - fi -done - -# build read-interface arguments for haddock -interface_options=() -for package_dir in "${OUTPUT_DIR}"/*; do - package=$(basename "${package_dir}") - if [[ -d "${package_dir}" ]]; then - haddock_files=("${package_dir}"/*.haddock) - interface_options+=("--read-interface=${package},${haddock_files[0]}") - fi -done - -./scripts/mkprolog.sh "${OUTPUT_DIR}" scripts/prolog - -# Generate top level index using interface files -haddock \ - -o "${OUTPUT_DIR}" \ - --title "cardano-ledger" \ - --package-name "Cardano Ledger" \ - --gen-index \ - --gen-contents \ - --quickjump \ - --prolog ./scripts/prolog \ - "${interface_options[@]}" - -# Assemble a toplevel `doc-index.json` from package level ones. -for file in "$OUTPUT_DIR"/*/doc-index.json; do - project=$(basename "$(dirname "$file")"); - jq ".[] | .link = \"${project}/\(.link)\"" "${file}" -done | - jq -s . >"${OUTPUT_DIR}/doc-index.json" diff --git a/scripts/haskell-language-server b/scripts/haskell-language-server deleted file mode 100755 index 1435ada764c..00000000000 --- a/scripts/haskell-language-server +++ /dev/null @@ -1,3 +0,0 @@ -#! /usr/bin/env -S nix develop --accept-flake-config -c bash - -haskell-language-server "$@" diff --git a/scripts/mkprolog.sh b/scripts/mkprolog.sh deleted file mode 100755 index ba8209fbf13..00000000000 --- a/scripts/mkprolog.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -HADDOCKS_DIR=${1:-"./haddocks"} -PROLOG_FILE=${2:-"./scripts/prolog"} - -> ${PROLOG_FILE} - -cat > ${PROLOG_FILE} << EOF -= Cardano Ledger Repository Hackage Documentation - -[skip to module list](#module-list) - -This site contains Haskell documentation of: - -EOF - -for dir in $(ls ${HADDOCKS_DIR}); do - if [[ -d ${HADDOCKS_DIR}/${dir} ]]; then - link=$(echo "${dir}" | sed "s/:/%3A/g") - echo "* __[${dir}](${link}/index.html)__" >> ${PROLOG_FILE} - fi -done diff --git a/semantics/executable-spec b/semantics/executable-spec deleted file mode 120000 index 5e57842f646..00000000000 --- a/semantics/executable-spec +++ /dev/null @@ -1 +0,0 @@ -../libs/small-steps \ No newline at end of file diff --git a/semantics/formal-spec b/semantics/formal-spec deleted file mode 120000 index 70045e12fdf..00000000000 --- a/semantics/formal-spec +++ /dev/null @@ -1 +0,0 @@ -../docs/small-step-semantics \ No newline at end of file diff --git a/semantics/small-steps-test b/semantics/small-steps-test deleted file mode 120000 index 0d9bf365d84..00000000000 --- a/semantics/small-steps-test +++ /dev/null @@ -1 +0,0 @@ -../libs/small-steps-test \ No newline at end of file diff --git a/shell.nix b/shell.nix deleted file mode 100644 index 9d2b7ab057e..00000000000 --- a/shell.nix +++ /dev/null @@ -1,9 +0,0 @@ -# a non-flake nix compat wrapper using https://github.com/edolstra/flake-compat -# DO NOT EDIT THIS FILE -__trace -'' ************************************************************************************ - Hi there! This project has been moved to nix flakes. You are using the `nix-shell` - compatibility layer. Please consider using `nix develop` instead. - ************************************************************************************ -'' -(import ./nix/flake-compat.nix).shellNix diff --git a/weeder.dhall b/weeder.dhall deleted file mode 100644 index 9b6857f4b02..00000000000 --- a/weeder.dhall +++ /dev/null @@ -1,21 +0,0 @@ -{ roots = - [ "^Cardano.Ledger.Shelley.API.*$" - , "^Cardano.Chain.Byron.API.*$" - , "^Main.main$" - , "^Tests.main$" - -- The following modules use some TH discovery, so we add them as explicit - -- roots. - , "^Test.Cardano.Chain.*$" - , "^Test.Cardano.Crypto.*$" - - , "^Test.Cardano.Ledger.Shelley.*$" - -- Called in ouroboros-node - , "^Cardano.Ledger.Shelley.Genesis.*" - , "^Cardano.Ledger.Shelley.TxData.TxOut$" - , "^Cardano.Ledger.Shelley.Scripts.hashAnyScript$" - - -- Testing stuff we want to keep - , "Test.Byron.Spec.Ledger.UTxO.Properties.tracesAreClassified" - ] -, type-class-roots = True -}

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 Gng0VXU1MYb diff --git a/eras/shelley/design-spec/references.bib b/eras/shelley/design-spec/references.bib deleted file mode 100644 index 8241c065083..00000000000 --- a/eras/shelley/design-spec/references.bib +++ /dev/null @@ -1,202 +0,0 @@ -@misc{small_step_semantics, - label = {FM-TR-2018-01}, - author = {{IOHK Formal Methods Team}}, - title = {{Small Step Semantics for Cardano, IOHK Technical Report FM-TR-2018-01}}, - year = {2018}, - url = {https://github.com/input-output-hk/cardano-chain/blob/master/specs/semantics/latex/small-step-semantics.tex}, -} - - -@misc{delegation_design, - label = {SL-D1}, - author = {{IOHK Formal Methods Team}}, - title = {{Design Specification for Delegation and Incentives in Cardano, IOHK Deliverable SL-D1}}, - year = {2018}, - url = {https://github.com/intersectmbo/cardano-ledger/tree/master/eras/shelley/design-spec/shelley-delegation.tex}, -} - -@misc{byron_ledger_spec, - label = {BL-D1}, - author = {{IOHK Formal Methods Team}}, - title = {{Byron Ledger Specification, IOHK Deliverable BL-D1}}, - year = {2019}, - url = {https://github.com/intersectmbo/cardano-ledger/tree/master/docs/}, -} - -@misc{byron_chain_spec, - label = {BC-D1}, - author = {{IOHK Formal Methods Team}}, - title = {{Byron Blockchain Specification, IOHK Deliverable BC-D1}}, - year = {2019}, - url = {https://github.com/intersectmbo/cardano-ledger/tree/master/docs/}, -} - -@article{chimeric, - author = {Joachim Zahnentferner}, - title = {Chimeric Ledgers: Translating and Unifying UTXO-based and Account-based Cryptocurrencies}, - journal = {Cryptology ePrint Archive, Report 2018/262}, - year = {2018}, - url = {https://eprint.iacr.org/2018/262}, -} - -@article{utxo_scripts, - author = {Joachim Zahnentferner}, - title = {An Abstract Model of UTxO-based Cryptocurrencies with Scripts}, - journal = {Cryptology ePrint Archive, Report 2018/469}, - year = {2018}, - url = {https://eprint.iacr.org/2018/469}, -} - -@article{multi_currency, - author = {Joachim Zahnentferner}, - title = {Multi-Currency Ledgers}, - journal = {??}, - year = {2018}, -} - -@article{shelley_consensus, - label = {SC-DX}, - author = {{IOHK Formal Methods Team}}, - title = {{?? - Shelley Consensus, IOHK Deliverable SC-DX}}, - year = {TODO}, -} - -@misc{shelley_spec, - label = {SL-D5}, - author = {{IOHK Formal Methods Team}}, - title = {{A Formal Specification of the Cardano Ledger, IOHK Deliverable SL-D5}}, - year = {2019}, - url = {https://github.com/intersectmbo/cardano-ledger/tree/master/eras/shelley/formal-spec/shelley-ledger.tex} -} - -@misc{shelley_multisig, - label = {SL-D3}, - author = {{IOHK Formal Methods Team}}, - title = {{A Formal Specification of a Multi-Signature Scheme using Scripts, IOHK Deliverable SL-D3}}, - year = {2019}, -} - -@misc{ouroboros, - label = {Ouroboros-Protocol}, - author = {Aggelos Kiayias and Alexander Russell and Bernardo David and Roman Oliynykov}, - title = {Ouroboros: A Provably Secure Proof-of-Stake Blockchain Protocol}, - howpublished = {Cryptology ePrint Archive, Report 2016/889}, - year = {2016}, - note = {\url{http://eprint.iacr.org/2016/889}}, -} - -@inproceedings{chakravarty2020extended, - title={The extended UTXO model}, - author={Chakravarty, Manuel MT and Chapman, James and MacKenzie, Kenneth and Melkonian, Orestis and Jones, Michael Peyton and Wadler, Philip}, - booktitle={International Conference on Financial Cryptography and Data Security}, - pages={525--539}, - year={2020}, - organization={Springer}, - url={https://iohk.io/en/research/library/papers/the-extended-utxo-model/} -} - -@conference{ouroboros_classic, - author = {Aggelos Kiayias and Alexander Russell and Bernardo David and Roman Oliynykov}, - title = {Ouroboros: A Provably Secure Proof-of-Stake Blockchain Protocol}, - booktitle = {Advances in Cryptology -- CRYPTO 2017}, - series = {Security and Cryptology}, - volume = {10401}, - year = {2017}, - publisher = {Springer International Publishing}, - url = {https://eprint.iacr.org/2016/889}, - doi = {10.1007/978-3-319-63688-7}, -} - -@article{ouroboros_praos, - title={Ouroboros Praos: An adaptively-secure, semi-synchronous proof-of-stake protocol}, - author={Bernardo Machado David and Peter Gazi and Aggelos Kiayias and Alexander Russell}, - journal={IACR Cryptology ePrint Archive}, - year={2017}, - volume={2017}, - pages={573} -} - -@article{utxo_accounting, - author = {Joachim Zahnentferner}, - title = {Chimeric Ledgers: Translating and Unifying UTXO-based and Account-based Cryptocurrencies}, - journal = {Cryptology ePrint Archive, Report 2018/262}, - year = {2018}, - url = {https://eprint.iacr.org/2018/262}, -} - -@misc{bip32, - author = {Pieter Wuille}, - title = {Hierarchical Deterministic Wallets}, - year = {2012}, - month = {February}, - url = {https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki}, - note = {BIP-32}, -} - -@misc{bip45, - author = {Manuel Araoz and Ryan X. Charles and Matias Alejo Garcia}, - title = {Structure for Deterministic P2SH Multisignature Wallets}, - year = {2014}, - month = {April}, - url = {https://github.com/bitcoin/bips/blob/master/bip-0045.mediawiki}, - note = {BIP-45}, -} - -@misc{bkks2018, - Author = {Lars Bruenjes and Aggelos Kiayias and Elias Koutsoupias and Aikaterini-Panagiota Stouka}, - Date-Added = {2018-08-05 08:14:11 +0000}, - Date-Modified = {2018-08-07 09:48:36 +0000}, - Howpublished = {Computer Science and Game Theory (cs.GT) arXiv:1807.11218}, - Title = {Reward Sharing Schemes for Stake Pools}, - Year = {2018}} - -@misc{cryptoeprint:2001:034, - author = {Tal Malkin and Daniele Micciancio and Sara Miner}, - title = {Composition and Efficiency Tradeoffs for Forward-Secure Digital Signatures}, - howpublished = {Cryptology ePrint Archive, Report 2001/034}, - year = {2001}, - note = {\url{https://eprint.iacr.org/2001/034}}, -} - -@article{DBLP:journals/jar/AkbarpourP10, - author = {Behzad Akbarpour and - Lawrence C. Paulson}, - title = {MetiTarski: An Automatic Theorem Prover for Real-Valued Special Functions}, - journal = {J. Autom. Reasoning}, - volume = {44}, - number = {3}, - pages = {175--205}, - year = {2010}, - url = {https://doi.org/10.1007/s10817-009-9149-2}, - doi = {10.1007/s10817-009-9149-2}, - timestamp = {Wed, 14 Nov 2018 10:38:36 +0100}, - biburl = {https://dblp.org/rec/bib/journals/jar/AkbarpourP10}, - bibsource = {dblp computer science bibliography, https://dblp.org} - } - -@article{DBLP:journals/tcs/Escardo96, - author = {Mart{\'{\i}}n H{\"{o}}tzel Escard{\'{o}}}, - title = {{PCF} Extended with Real Numbers}, - journal = {Theor. Comput. Sci.}, - volume = {162}, - number = {1}, - pages = {79--115}, - year = {1996}, - url = {https://doi.org/10.1016/0304-3975(95)00250-2}, - doi = {10.1016/0304-3975(95)00250-2}, - timestamp = {Sun, 28 May 2017 13:20:09 +0200}, - biburl = {https://dblp.org/rec/bib/journals/tcs/Escardo96}, -} - -@misc{multi-sig-scripts, - author = {Jared Corduan and Matthias G\"{u}demann}, - title = {A Formal Specification of a Multi-Signature Scheme using Scripts}, - year = {2019} -} - -@misc{stake-pool-ranking, - author = {Alexander Byaly and Jared Corduan}, - title = {Stake Pool Ranking in Cardano}, - year = {2020}, - url = {https://github.com/intersectmbo/cardano-ledger/releases/latest/download/pool-ranking.pdf} -} diff --git a/eras/shelley/design-spec/rewards.png b/eras/shelley/design-spec/rewards.png deleted file mode 100644 index c7259f8106283c83fa0f99c9268af566d41fd9aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13274 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 hoBuX~;o(8~H4UAsC2Cff{{!7XrxpMJ diff --git a/eras/shelley/design-spec/sftt1200.pfb b/eras/shelley/design-spec/sftt1200.pfb deleted file mode 100644 index 41cb80e2c5d84d553f348b0b5e49ca508f298c1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167085 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�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 NJS5mZ^omp>;D2WL13>@) diff --git a/eras/shelley/design-spec/shelley-delegation.tex b/eras/shelley/design-spec/shelley-delegation.tex deleted file mode 100644 index fefdfd2bfdf..00000000000 --- a/eras/shelley/design-spec/shelley-delegation.tex +++ /dev/null @@ -1,4593 +0,0 @@ -\documentclass[11pt,a4paper,dvipsnames,twosided]{article} -\usepackage[deliverable]{IOHKCoverPage} - -% data for Deliverable header -- added by KH from an EU H2020 project template -\DeliverableNumber{SL-D1} -\DeliverableTitle{Design Specification for Delegation and Incentives in Cardano}{Delegation/Incentives Design Spec.} -\DeliverableResponsible{Formal Methods Team} -\EditorName{Philipp Kant, \IOHK} -\Authors{Philipp Kant \quad \texttt{} - \\[1em] - Lars Br\"unjes \quad \texttt{} - \\[1em] - Duncan Coutts \quad \texttt{} -} -\DueDate{23$^{\textrm{th}}$ July 2020} -\SubmissionDate{23$^{\textrm{th}}$ July 2020}{2020/07/23} -\LeaderName{Philipp Kant, \IOHK} -\InstitutionAddress{\IOHK} -\Version{1.21} -\Project{Shelley Ledger} -\DisseminationPU - -\usepackage[margin=2.5cm]{geometry} -\usepackage{lscape} -%\usepackage[a-1b]{pdfx} -\usepackage{microtype} -\usepackage{mathpazo} % nice fonts -\usepackage{amsmath, amssymb, stmaryrd, latexsym, mathtools} -\usepackage{extarrows} -\usepackage{slashed} -% \usepackage[colon]{natbib} -\newcommand{\citep}[1]{\cite{#1}} -\usepackage{todonotes} -\usepackage[unicode=true,pdftex,pdfa,colorlinks=true]{hyperref} -\usepackage[capitalise,noabbrev,nameinlink]{cleveref} -\usepackage{titlesec} -\hypersetup{ - pdftitle={Design Specification for Delegation and Incentives in Cardano}, - pdfauthor={Philipp Kant, Lars Brünjes, Duncan Coutts}, - breaklinks=true, - bookmarks=true, - colorlinks=false, - linkcolor={blue}, - citecolor={blue}, - urlcolor={blue}, - linkbordercolor={white}, - citebordercolor={white}, - urlbordercolor={white} -} -\usepackage{float} -\floatstyle{boxed} -\restylefloat{figure} -% For making figures -\usepackage{tikz} -\usetikzlibrary{positioning} -\usetikzlibrary{arrows.meta} -\usetikzlibrary{calc} - -\setcounter{secnumdepth}{4} -\titleformat{\paragraph} - {\normalfont\normalsize\bfseries}{\theparagraph}{1em}{} - \titlespacing*{\paragraph} - {0pt}{3.25ex plus 1ex minus .2ex}{1.5ex plus .2ex} - -\DeclareMathOperator{\dom}{dom} -\DeclareMathOperator{\range}{range} - -\newcommand*\ema[2]{\left\langle {#1} \right\rangle_{{#2}}} -\newcommand*\mean[1]{\overline{#1}} - -\newcommand\pbar{\overline{p}} -\newcommand\Nbar{\overline{N}} - -\begin{document} - - - \cleardoublepage% - \tableofcontents% - \listoffigures% - \clearpage% - -\begin{changelog} -\change{2018-12-18}{PK, LB, DC}{FM (IOHK)}{First version that is considered stable enough to warrant V1. Some things still -need to be pinned down.} -\change{2019-01-07}{PK, LB, DC}{FM (IOHK)}{ -Changes after the first day of the Berlin workshop. TTL for transactions; stakepool registration. -% - Add todo to clarify stakepool metadata -% - Add section on TTL for transactions -% - Elaboration and slight change to stake pool registration. - -% After the first day of discussions in Berlin, we came to the conclusions that - -% - we need a \emph{registered} staking key to collect rewards -% - this should \emph{not} be the same key that's used for participating in the -% protocol. For participation in the protocol, we want cold and operational -% keys, and using the same key to withdraw rewards is detrimental. -% - We needed more elaboration on the multiple owner use case, emphasising that -% the rewards for all owners are given to the operator. -% - Resolved several todo items -% - Include git revision in documents -% - Explain why pool registration will not be censored. -} -\change{2019-01-08}{PK, LB, DC}{FM (IOHK)}{Changes after the second day of the Berlin workshop. -Avoid Contention at Epoch Boundary. Refunds after stake pool retirement. Clarifications and corrections.} -% - Avoid overloading the term "pool" -% - Clarify that Treasury is a Sink for now. -% - Avoid Contention at Epoch Boundary -% - Decision made: refund for stake pool paid after retirement. -% - Update to non-refundable part of deposits - -% We figured out in the formal spec how to incrementally add the non-refundable -% part to the reward pool of all the relevant epochs, which is fairer than -% adding all of it to the reward pool where the resource is released. -% - Correction: we're introducing four address types, not three -%} -\change{2019-03-01}{PK, LB, DC}{FM (IOHK)}{Incorporating further input from the workshop in Berlin, and following discussions, -into the document. Transactions have to have at least one UTxO style input; stake pool metadata formats; choice of KES scheme; deposits information; clarify certificate replay protection; fix rewards to treasury for unregistered stake pool key; update block validity to require operational key; -additions to Operational Key section.} - -% - Decision: transactions have to have at least one UTxO style input - -% - Update: Stake pool metadata - -% Specify the format for the metadata, and how it is provided. Streamlined the -% different sections that touch stake pool metadata. -% - Elaborating further on why stake pool registrations will not be censored. -% - Capture choice of KES scheme in design doc. -% - Streamlining information on deposits - -% Replacing an explanation of the concept with a link to the section where it's -% already explained. -% - Elaborate on certificate replay protection - -% The paragraph was not entirely true, it said there was only one possible source -% of funds in addition to UTxO entries, but with rewards accounts, there is -% another one. -% - Fix that rewards go to treasury if reward key unregistered. - -% We can not move them to the rewards pool -- if we did, it would create an -% incentive for all other leaders to censor a certificate that caused the pool to -% use a valid certificate. -% - Update block validity to require operational key -% - Additions to Operational Key section -% - They are compulsory -% - They will use KES -% - Operational Key Certificates will expire, to encourage key rotation -% - Slight Change in validity rules -% - Add FAQ section to the delegation design doc -% - Add a couple of todo entries -% } -\change{2019-04-05}{PK, LB, DC}{FM (IOHK)}{Rewrote the chapter on rewards. -% -% We had lots of discussions about how to properly account for the performance of -% pools, particularly in Praos where the actual performance is not observable due -% to the private leader schedule. We finally converged to a solution, leading to a -% re-write of the incentives section. - -% Also, changed the title of the document, and made the capitalisation of ada -% consistent. -} -\change{2019-04-08}{PK, LB, DC}{FM (IOHK)}{General review of the document. -Mostly small things. Consistent wording, spelling, readability, removed some -obsolete things. -% -% Removed the remaining todo items. Decisions we still need to make are now -% tracked on github instead. -% -% Moved the section on detecting stale stake into an appendix, and changed it to -% reflect the design where stake that is not delegated to an active pool is -% ignored (which solves the problem of stale stake to a large degree). -} -\change{2019-04-11}{PK, LB, DC}{FM (IOHK)}{Some subtle corrections in the rewards chapter after review by Aikaterina. -First version officially published on the IOHK blog.} -\change{2019-05-17}{PK, LB, DC}{FM (IOHK)}{Some clarifications in response to review by the auditors.} -\change{2019-06-07}{PK, LB, DC}{FM (IOHK)}{Update section on script addresses.} -\change{2019/10/09}{Kevin Hammond}{FM (IOHK)}{Added standard cover page.} -\change{2020-02-28}{PK}{FM (IOHK)}{Clarify when to use active/total stake.} -\change{2020/03/11}{DC}{FM (IOHK)}{Document the metadata feature.} -\change{2020-06-12}{PK}{FM (IOHK)}{Rewrite chapter on addresses. Now includes - multi-sig, and is clearer about the distinction of payment addresses, stake - addresses, credentials.} -\change{2020-06-15}{PK}{FM (IOHK)}{Ensure consistent wording, after the change - in terminology in the last edit.} -\changePageBreak -\change{2020-07-06}{PK}{FM (IOHK)}{Correct sentence about enforcing pledge, to - be consistent with implementation; pools do not receive rewards, but can still - create blocks when they fail to meet their pledge.} -\change{2020-07-06}{PK}{FM (IOHK)}{Minor changes after audit. Nothing that - affects the implementation.} -\change{2020-07-23}{PK}{FM (IOHK)}{Change: undistributed rewards go to the - reserves, not to the treasury.} -\change{2020-10-08}{J. Corduan}{FM (IOHK)}{Change: include member stake in the non-myopic - stake calculation. Change: replaced average apparent performance usage with - references to the stake pool ranking document.} -\end{changelog} - -\clearpage% -\begin{landscape} -\floatstyle{plain} -\restylefloat{figure} -\begin{figure*} -\includegraphics[scale=0.8,angle=90]{d1-depends.pdf} -\caption{Positioning of this Deliverable (outlined in red).} -\end{figure*} -\end{landscape} -\floatstyle{boxed} -\restylefloat{figure} -\cleardoublepage -% \begin{center} -% \large{Executive Summary} -% \end{center} - -% \noindent -% This document provides a formal specification of the Cardano ledger for use in the Shelley implementation. -% It is intended to form the basis for an executable specification that will be the basis of the initial -% release. -% \cleardoublepage -\renewcommand{\thepage}{\arabic{page}} -\setcounter{page}{1} - -\title{Engineering Design Specification \\ - for Delegation and Incentives \\ - in Cardano--Shelley \\ - {\large \sc An IOHK technical report}} - -\author{Philipp Kant \\ {\small \texttt{philipp.kant@iohk.io}} \\ - \and Lars Br\"unjes \\ {\small \texttt{lars.bruenjes@iohk.io}} \\ - \and Duncan Coutts \\ {\small \texttt{duncan@well-typed.com}} \\ - {\small \texttt{duncan.coutts@iohk.io}}} -\maketitle - -\begin{abstract} -This document describes the requirements and design for a delegation and -incentives mechanism to be used in the Shelley release of Cardano. -\end{abstract} - -\section*{List of Contributors} -\label{acknowledgements} - -Lars Br\"unjes, Jared Corduan, Duncan Coutts, Matthias G\"udemann, -Philipp Kant, Dimitris Karakostas, Aggelos Kiayias, Elias Koutsoupias, -Mario Larangeira, Damian Nadales, Aikaterini-Panagiota Stouka. - -%\tableofcontents -%\listoffigures -%% Not in final version -- KH -%\listoftodos - -\section{Purpose} -\label{purpose} - -Delegation will allow holders of ada to transfer their rights to participate in -the proof of stake (\emph{PoS}) protocol to \emph{stake pools}. Stake pools are -run by \emph{stake pool operators} (sometimes also called \emph{pool leaders}, -though we try to avoid the term in this document to avoid confusion with slot -leaders), and a person delegating to a stake pool is called \emph{delegator}, -\emph{member}, or \emph{participant} of a stake pool. - -Introducing delegation is important to increase the stability and -performance of the system: - -\begin{itemize} -\item - We cannot expect every holder of ada to continuously run a node that - is well-connected to the rest of the network, in order to write a - block on rare occasions. Some users might lack the expertise to do so. - Most users will not have enough stake to warrant running their own - node. Delegation allows all holders of ada to participate in the - protocol, regardless of their technical abilities and the amount of - stake that they hold. Thus, we expect less stake to be offline, making - the system faster and more resilient against an adversary. -\item - Even if every user were to run a node that was online all the time, it - would be hard to keep all those nodes well enough in sync to avoid - forks and still keep a short slot length. Our delegation design is - aimed at keeping the number of nodes that produce a significant amount - of blocks reasonably small (about 100 or 1000 nodes), so that effective - communication between them is feasible. -\end{itemize} - -This document covers the design of necessary additions to Cardano in -order to support and incentivise delegation. - -\section{Requirements} -\label{requirements} - -The delegation mechanism should meet a number of requirements. They can -be grouped into: - -\begin{itemize} -\item - functional requirements that the delegation system should provide; -\item - requirements to the security (both of the overall system and the funds - of individual users); -\item - non-functional requirements; and -\item - existing features that should not be impeded when we add delegation to - the system. -\end{itemize} - -Requirements specific to the rewards distribution mechanism are -discussed separately in \cref{rewards}. - -\subsection{Functional Requirements} -\label{functional-requirements} - -\subsubsection{Proof of Eligibility} -\label{proof-of-eligibility} - -Any slot leader -- and in particular stake pool operators, who are -elected through stake that is delegated to them -- should be able to -prove when they are eligible to produce a block in a given slot. - -\subsubsection{Visibility of Delegation on the Blockchain} -\label{visibility-of-delegation-on-the-blockchain} - -We enable stake pools to automatically share their rewards with the -delegators. In order to do this, there must be evidence for the -delegation happening. Furthermore, we want the sharing of rewards to be -enforced by the protocol, so the evidence must be recorded on the -blockchain. - -\subsubsection{Restricting Chain Delegation} -\label{restricting-chain-delegation} - -We do not want to allow stake to be re-delegated along a chain -arbitrarily. We can admit some level of indirection, but not more than -necessary to meet the rest of the requirements. - -One reason that we do not want arbitrary chain delegation is that it -makes it harder for delegators to figure out who is ultimately -controlling their stake. Another is that unlimited chain delegation -could open up a Denial-of-Service (DoS) attack vector on the system, -where the attacker posts long delegation chains in order to slow down -processes that depend on delegation, such as leader election or rewards -sharing. - -We must also have a mechanism to prevent cycles (such as A delegates to -B, and B delegates to A) which would introduce ambiguity to the question -of who manages stake in the end. - -\subsubsection{Cheap Re-Delegation} -\label{cheap-re-delegation} - -Changing delegation preferences should be as cheap as possible (while -still using appropriate fees to prevent a denial of service attack on -the blockchain). - -\subsubsection{Neutral Addresses} -\label{neutral-addresses} - -We should provide addresses that can hold value, but do not contribute -to the PoS protocol. Those might be appropriate for use by exchanges, -which will hold large amounts of value, without legally owning it. - -\subsubsection{Multi-Signature Addresses} -\label{multi-sig-addresses} - -We should provide addresses that can hold value that are owned by multiple -people, such that the signatures from a specified subset are required to spend -from those addresses. This needs to enable addresses where signatures are -required from any N of a pre-determined set of M keys. - -\subsubsection{Multi-Signature Delegation} -\label{multi-sig-delegation} - -We should provide the ability to declare that delegating the stake -rights for certain funds should require multiple signatures. - -This should be as expressive as the multi-signature support for -addresses. It should be an independent choice: a multi-signature -address can use a single signature for its stake rights, or a -different choice of multi-signature threshold N and key set M. Similarly, it -should be possible to require multi-signature only for delegation, not for -spending from a given address. - -\subsection{Security Requirements} -\label{security-requirements} - -\subsubsection{Sybil Attack Protection at Stake Pool Level} -\label{sybil-attack-protection-at-stake-pool-level} - -It is conceivable that an adversary might try to take over the -network by registering a large number of stake pools, hoping to -accumulate enough stake to mount an attack just by people randomly -delegating to them. - -This Sybil attack on the level of stake pools should be made infeasible, -by requiring stake pool operators to allocate a finite resource to each -individual pool they register. In particular, this resource cannot be -the cost of operating a node, since it is possible to run multiple pools -with one node, so that cost would be constant in the number of pools an -adversary is registering. - -\subsubsection{Address Non-malleability} -\label{address-nonmalleability} - -The system should provide protection against the following attack: - -\begin{description} -\item[Changing Delegation through Address Malleability] -Suppose that Alice makes a payment to Bob. In preparation, Bob transmits -an address belonging to his wallet to Alice, and expects Alice to pay to -that address. If his wallets later on shows that his balance is -increased by the expected amount, he considers that transaction to be -successful. An attacker that wants to increase their influence on the -PoS protocol changes the address that Bob sends in such a way that funds -in that address are delegated to the attacker, but the funds still show -up in Bob's wallet. - -The attack is considered successful if the stake rights for the -transferred money belong to the attacker after the transaction, without -Alice and Bob noticing the attack. -\end{description} - -Note that the system should still allow for deliberately separating spending -rights and the right to delegate, just not in the covert way described above. - -\subsubsection{Public Payment Keys Should not be Disclosed Prematurely} -\label{public-spending-keys-should-not-be-disclosed-prematurely} - -Delegation of stake should not involve revealing the public payment key (other -than the public key hash, which is already visible from the address itself). The -public payment key should only be revealed once the funds that are controlled -by the corresponding private key are actually transferred to another address. - -\subsubsection{Mitigate Key Exposure} -\label{mitigate-key-exposure} - -A node run by a stake pool will need to have some key that controls all -the delegated stake, in order to sign blocks. In case of an incident -where the node is compromised, it should be possible for the stake pool -operator to revoke the key, and replace it with a new one. This should -not require any action by the delegators. - -\subsubsection{Handle Inactive Stake Pools} -\label{handle-inactive-stake-pools} - -We anticipate that some participants might not contribute to the proof-of-stake -protocol -- whether they lost their keys, lost interest, etc. We want to -minimise the effect of this to the security and liveness of the system. - -Note that this does not only concern large stakeholders or pool operators. The -cumulative effect of a large number of small stakeholders having their stake be -inactive also has to be considered. - - -\subsubsection{Avoid Hard Transition} -\label{avoid-hard-transition} - -When we make the switch from Byron (where all stake is delegated to the -nodes controlled by the Cardano Foundation, Emurgo, and IOHK) to Shelley -(where ada holders have the freedom to control their stake), we should -avoid a scenario where a significant amount of stake is suddenly -offline. - -This could happen if we automatically revoked the automatic delegation -to the core nodes of the Byron network. - -\subsubsection{Change Delegation Without Payment Key} -\label{change-delegation-without-spending-key} - -Users of a cold wallet, such as a paper wallet or a hardware wallet, -should be able to delegate the stake corresponding to the funds in the -cold wallet without using its payment key. - -\subsection{Non-functional Requirements} -\label{non-functional-requirements} - -\subsubsection{Asymptotic space and time complexity} -\label{asymptotic-space-and-time-complexity} - -All the changes to delegation are changes in the rules that define what -it means to be a valid Cardano blockchain. These rules must be -computable, and must be computable with reasonable space and time -complexity. - -\subsubsection{Minimise economic attacks} -\label{minimise-economic-attacks} - -An economic attack on a system arises where the costs incurred by the -operators of a system are not covered by fees on the users of the -system. Such situations allow users to impose costs on operators without -paying that full cost themselves. In severe cases this can lead to -operators dropping out and the system collapsing. - -Cardano currently has transaction fees which are intended to cover the -processing and long term storage cost of transactions. There are no fees -however for the memory cost of tracking the current accumulated chain -state, in particular the UTxO. In addition, the new mechanisms -introduced for delegation add additional state that must be tracked. -Moving from federated operation to fully decentralised operation may -increase the incentive to exploit economic attacks, so it is important -to address the existing unaccounted operator costs as well as new costs. - -\subsection{Requirements to Preserve Existing Features} -\label{requirements-to-preserve-existing-features} - -\subsubsection{Master Recovery Key} -\label{master-recovery-key} - -The whole wallet should be recoverable from one single key (without any -additional information, such as the delegation preferences of the -wallet). - -The computational complexity of the recovery process should not be worse -than logarithmic in the number of addresses appearing on the blockchain, -and linear in the number of addresses in the wallet. - -\subsubsection{Address Recognition} -\label{address-recognition} - -An HD wallet should be able to recognise its addresses in the UTxO, so -that it can report balances and transaction histories to the user. - -\subsubsection{Wallet should be Runnable on Independent Devices} -\label{wallet-should-be-runnable-on-independent-devices} - -Different user interfaces, running on different devices, should be able -to access and control the same wallet, without transferring state -between them. - -We will accept some degradation of behaviour when running the wallet on -different devices: - -\begin{itemize} -\item - Both copies might generate the same fresh addresses -\item - There can be differences in the reported balance while there are - transactions in flight that only one of the two copies has knowledge - of. In particular, when one copy sends a transaction, that transaction - will only affect the balance reported by the other wallet once it is - recorded on the blockchain. -\item - If the wallets use different delegation preferences, funds sent to the - wallet might end up being delegated to different pools. -\end{itemize} - -\subsubsection{Maintain Privacy} -\label{maintain-privacy} - -HD Wallets maintain some level of privacy by using multiple addresses -that are not obviously and publicly tied to the same wallet. Delegating -stake should not necessarily link the addresses in the wallet of a -delegator. - -\subsubsection{Short Addresses} -\label{short-addresses} - -It is beneficient to have short addresses, for two reasons: addresses are -user-facing, and overly long addresses are burdensome for users. Also, every -UTxO entry contains an address, so short addresses reduce the memory footprint -of the UTxO and the whole ledger state. - -Adding delegation to the system should not increase the length of -addresses more than necessary. Ideally, we should use the opportunity of having -to modify the address scheme to come up with an address length that is -even shorter than in Byron. - -\subsubsection{No lookup of old blocks} -\label{no-lookup-of-old-blocks} - -The current Cardano design allows, in principle, an implementation of a -node that discards blocks after a period of time so that it only needs -to keep a limited number of recent blocks. This is true in part because -nothing in the existing validation rules requires looking up arbitrary -old blocks. All information necessary for validation can be accumulated -in a running state, in a \texttt{foldl} style. This is a useful design -property to retain. - -\subsection{Design Goals} -\label{design-goals} - -\subsubsection{No Special Wallet for Stake Pool Operators} -\label{no-special-wallet-for-stake-pool-operators} - -If possible, we would like to avoid a situation where stake pool -operators are required to use a special kind of wallet. Apart from -registering their pool and running their own nodes, they should be able -to use the same wallet as anyone else, without any additional or -restricted features. - -We expect that following this design goal will lead to less engineering -effort, better maintainability, and a better user experience for stake -pool operators. - -\section{Design of Delegation} -\label{design-of-delegation} - -\newcommand{\hash}[1]{\ensuremath{\mathcal{H}(#1)}} - -\subsection{Overview of Delegation} -\label{overview-of-delegation} - -Delegation is a separation of the control over the movements of funds and the -rights (and obligations) in the PoS protocol that are associated with those -funds. We achieve this separation by modelling it in the address structure. We -distinguish between \emph{payment addresses} that determine how funds can be -spent, and \emph{stake addresses} that define if and how the stake rights of -those funds take part in the PoS protocol. Coins belong to payment addresses. -Each payment address (optionally) refers to a stake address. This delegates the -stake rights of any funds held at the payment address to the corresponding stake -address. The stake address delegates to a stake pool that participates directly -in the PoS protocol. Thus overall there are two steps to the delegation of stake -rights: a payment address refers to a stake address; and the stake address -delegates to a stake pool. - -We support multi signature (multi-sig) schemes, for payments as well as for -delegations. We do this by allowing value addresses and stake addresses to use -either keypairs, or scripts for authorisation, and implementing a simple -scripting language to describe multi-sig schemes. Introducing multi-sig in this -way has the benefit of naturally generalising when we will later introduce more -powerful scripting languages, such as Plutus and Marlowe. - -Participating in the PoS protocol requires two steps: -\begin{description} -\item[Using a registered stake address] Users can post certificates to the chain - to register a stake address. This will allow them to delegate funds associated - with that address, and also automatically set up a corresponding \emph{reward - account}, where the system will accumulate rewards for delegating funds from - that stake address. -\item[Delegating from that stake address to a registered \emph{stake pool}] All - blocks in Cardano-Shelley will be produced by a set of stake pools that need - to be registered on the chain, by posting an appropriate certificate. - Individual stakeholders can \emph{delegate} funds from each of their - registered stake addresses to a pool of their choosing. Stake in an address - that delegates to a pool counts to the stake of that pool in the leader - election. The pool will be rewarded for block production, and those rewards - will automatically be distributed to the apropriate reward addresses. - - Note that this does not restrict an individual stakeholder wanting to use - their own stake to produce blocks (``self delegation''). Such users should - register a \emph{private stake pool}, and delegate their own funds to that - pool. This uniform architecture, not distinguishing between those stakeholders - that are using their stake directly and those that are delegating, reduces the - overall complexity of the system significantly. -\end{description} -Registration of stake addresses and delegation are optional, but it is the only -way to exercise the stake rights to take part in the PoS protocol and to earn -rewards. - -Rewards to pools and their members follow the scheme described -in~\cref{design-of-incentives}. In designing the rewards system, we were careful -to avoid incentivising selfish behaviour, and to encourage cooperative behaviour -instead. The rewards that a pool will get for producing blocks depend on how -much stake they control, and on how well they perform when producing blocks. -Stake pool operators can influence how the rewards for the pool are split -amongst its members, by setting parameters in the stake pool registration -certificate. Wallets will assist users in making rational choices and delegating -to pools that are expected to give the best rewards. - -\subsection{Addresses and Credentials} -\label{address-structure} - -In Shelley, an address has to provide information on two things: how tokens can -be spent, and how the associated stake is controlled. To separate those two -concerns, we distinguish between \emph{payment addresses} \(\mathcal{A}_p\) and -\emph{stake addresses} \(\mathcal{A}_s\). - -Addresses are objects that have a user-facing binary representation (they appear -in the UTxO, and users can inspect them using a wallet or explorer). They -contain \emph{credentials} that govern access rights; using an address (such as -spending from a payment address, or delegating funds associated with a stake -address) requires a witness for the credential (which is specific to the -particular transaction). There are two different kinds of credentials: - -\begin{description} -\item[Key Credential] A credential can be constructed from a pair \((sk, - vk)\) of a \emph{signing key} \(sk\) and corresponding \emph{verification key} - \(vk\). The credential is a cryptographic hash \(\hash{vk}\) of the - verification key. - - A witness for a key credential consists of the verification key \(vk\), and a - signature of the transaction from the signing key \(sk\). -\item[Script Credential] Tokens and stake can also be controlled by a - \emph{validator script}, which can either succeed or fail to validate on a - given input. In this case, the credential is the hash of the script. - - A witness for a script credential is the script itself, as well as input to - the script that makes it validate. -\end{description} - -In future releases, we will add multiple languages to Cardano, with Plutus being -the most prominent example. In Shelley, script credentials will only be used for -the purpose of requiring signatures from multiple parties, a process known as -multi signature, or \emph{multi-sig}. For this, Cardano-Shelley will feature a -minimalistic scripting language capable of expressing the requirement of having -a specified subset of a given set of keys provide a signature. Examples include -\emph{M of N} schemes, where a transaction can be authorised if at least \(M\) -distinct keys, from a set of \(N\) keys, sign the transaction. -% -By introducing multi-sig script credentials, in Shelley, it will be possible to -require single or multiple signatures both for the spending of funds and for the -delegation of stake, independently. - -For the case of multi-sig scripts, a witness contains the validator script -matching the hash in the script credential, and a set of witnesses for -individual key credentials. The validator script will determine whether those -witnesses are sufficient for the funds to be spent. For details, and an example -of a multi signature scripting language, see~\citep{multi-sig-scripts}. - -\begin{figure}[ht] - \includegraphics[width=\linewidth]{addresses.pdf} - \caption{Addresses and Credentials} - \label{fig:addresses} -\end{figure} - -\cref{fig:addresses} shows the anatomy of both payment and stake addresses. Let -us first consider a \emph{Stake Address}: it contains a stake credential (which -can be a key credential or script credential). A stake address is used for two -purposes: delegating stake (see \cref{delegation-certificates}), and spending -rewards accumulated in a \emph{reward account} (see \cref{reward-accounts}). - -\emph{Payment Addresses} have more structure: first of all, we have the two -cases of Byron and Shelley addresses. The purpose of Byron addresses is -backwards compatibility. Byron addresses have no notion of stake, so it is not -possible to delegate from a Byron address; users will have to transfer funds to -a Shelley address first. - -A Shelley address contains a payment credential (again, either a key or script -credential). A transaction that consumes a UTxO entry with a Shelley address -will need a witness for its payment credential in order to be validated. In -addition, a Shelley address also contains a stake address reference. When -calculating the stake distribution (see \cref{delegation-relations} for -details), the system uses this reference to decide where to count the stake -corresponding to the tokens in this address. - -There are three options for the stake address reference in a Shelley address: it -can be provided \emph{by value}, i.e., just be the hash of a verification key or -validator script. Shelley addresses that provide their stake address reference -by value are sometimes also called \emph{base addresses}. - -There is also a more compact way of representing a stake address reference: since stake -addresses need to be registered on the chain in order to be considered for the -stake distribution (see \cref{stake-address-registration-certificates}), we can -also include them \emph{by pointer}, pointing to the certificate that -registered it. Since the -blockchain orders transactions, this pointer is quite small, containing only -three numbers (slot index, transaction index within the block, and certificate -index within the transaction). Shelley addresses that contain their stake - by pointer are also called \emph{pointer addresses}. - -The third possibility is to not have a stake address reference at all. In this case, -the stake corresponding to the tokens in the address is not considered by the -system at all (just as for a Byron address). In particular, it will not be -counted towards the active stake (\cref{overall-stake-distribution}), and so -will not slow down chain growth. Users who do not wish to contribute to the PoS -protocol should use this option. Such addresses are also called \emph{enterprise - addresses}. - -\subsubsection{On Pointer Addresses} -\label{pointer-address} - -Allowing the stake address reference to be included in a payment address via pointer -allows for shorter addresses, which is a requirement (\cref{short-addresses}). -However, there are also some subtleties to consider. - -\paragraph{Invalid Refereces} -First, we need to consider the case that the pointer does not point to an -\emph{active} stake address registration. This covers the case that the key was -unregistered after (or indeed before) the transaction, and also covers pointers -to targets that are plainly invalid. The system will allow transactions to and -from such addresses, but their stake will not be considered for leader election -and rewards. - -Note that in particular, when a pointer address becomes invalid because the -stake address it points to is deregistered, registering the same stake address -again does not ``restore'' the stake in the pointer address; the tokens have to -be moved to another address in order to use the stake. This minor limitation -allows the system to not remember unregistered stake addresses.\todo{Maybe add a - diagram here, about the lifetime of pointer addresses.} - - -So, to exercise the stake rights of a pointer address, the stake address must be -registered in advance of using the pointer address in the output of a -transaction, and the stake address must remain registered while the pointer -address holds funds. This is a difference compared to addresses that contain -their stake address reference by value, where the stake address can be registered -after the value address is used in a transaction. - -\paragraph{Pointer Addresses and Rollback} -A special case of an invalid pointer is a rollback: when the block containing a -stake address registration certificate gets rolled back, addresses containing -the stake address by pointer to that certificate will lose their stake rights. -Since the addresses will remain valid for payments, though, the stake rights can -be restored by moving the funds to another address. Wallets can try to avoid -this situation, as described in \cref{basic-delegation}. - -\subsubsection{On Enterprise Addresses} -\label{enterprise-address} - -Enterprise addresses carry no stake rights whatsoever and thus using -them allows completely opting out of participation in the proof of stake -protocol. Exchanges or other organisations that control large amounts of -ada -- but hold it on behalf of other users -- may wish to follow a -policy of not exercising stake rights. By using enterprise addresses, -exchanges can demonstrate that they follow this policy. -Since enterprise addresses are not associated with any stake address, they -are automatically excluded from the mechanisms that influence the slot -leadership schedule. - -Note that using addresses with no stake rights effectively decreases -the total amount of stake, which plays into the hands of the adversary. -But unless we want the exchange to control the stake, it is unavoidable to -ignore it, since there is no way to determine whom the stake "really" belongs -to. Also note that it is generally considered bad practice to leave funds on -exchanges, and in Cardano-Shelley, there will also be a monetary incentive to -withdraw funds from exchanges in order to earn rewards. - -\subsubsection{Reward Accounts} -\label{reward-address} - -Reward accounts are used to distribute rewards for participating in -the PoS protocol, as described in -\ref{distributing-rewards}. They have a number of interesting -properties: - -\begin{itemize} -\item They use account-style accounting, not UTxO-style. -\item They can not receive funds via transactions. Instead, their - balance is only increased when rewards are distributed. -\item A reward account is not related to a value address, but to a stake - address. Thus, spending from a reward account requires a witness for a stake - credential, rather than a payment credential. -\end{itemize} - -Rewards can be ``withdrawn'' from a reward account, by using the reward account -as an input to a transaction. Note that we will still require at least one UTxO -style input in this transactions for replay protection, as explained in -\cref{certificate-replay-prevention}. Stake associated with funds in a reward -account will contribute to the stake of the stake address, so there is no -incentive to frequently withdraw rewards. - -\subsubsection{On Byron Addresses} -\label{bootstrap-address} - -In Byron, all addresses were interpreted as -having stake rights, but those stake rights were always delegated to a fixed set -of keys specified in the genesis block, controlled by the -Cardano Foundation, Emurgo, and IOHK. - -Byron addresses continue to exist in Shelley, but their -interpretation is changed subtly and their use is disincentivised. -Their interpretation is changed from having stake rights with -forced delegation, to having no stake rights whatsoever. Their use is -disincentivised, since owners have the option to move their funds into -the new base or pointer addresses that have stake rights, which can be -exercised to receive rewards. - -It is worth noting that initially, Byron addresses and enterprise addresses -have essentially identical behaviour. This might change in the future, if new -features are added to enterprise addresses. - -\subsubsection{HD Wallet Structure in Shelley} -\label{hd-wallet-structure-in-shelley} - -Shelley addresses with a verification key hash as payment credential -support hierarchical deterministic wallets, as per BIP-32~\citep{bip32}. -% -For value addresses with a multi-sig script credential, we can use a slight -generalisation of BIP-45~\citep{bip45}\todo{Lay out the necessary generalisation - of BIP-45}. - -In particular, this kind of wallet scheme allows implementations that can -do wallet restoration from seed in time that is logarithmic in -the total number of addresses on the blockchain. For details, see -\cref{wallet-recovery-process}. - -\subsubsection{Address Recognition} -\label{address-recognition-1} - -Wallets will recognise addresses (other than reward addresses) that belong to -them just as they would without delegation, by looking only at the -payment credential (see \cref{wallet-recovery-process} for how to find -addresses efficiently). - -Finding the stake credentials of a wallet (and in particular the corresponding -reward accounts) can be done either by just reading off all the stake credentials -of addresses found via their payment credentials, or by performing a second search, -this time over all the registered stake addresses\footnote{As explained in - \cref{stake-address-registration-certificates}, stake addresses need to be - registered on-chain.}. The former option is quicker and easier to implement. -However, it is conceivable to construct addresses where the payment credential -belongs to one wallet, but the stake credential belongs to another. The stake -credential of such addresses would only be found by the wallet that controls it via -a dedicated search on the registered stake addresses. - -Once a wallet recognises an address via its payment credential, it will read its -stake credential, and check whether it is set according -to the current delegation preference of the wallet. If there is a -discrepancy, it will alert the user, and ask them whether they want to -re-delegate according to their current delegation preferences. - -This check protects against the malleability attack in -\cref{address-nonmalleability}. It does so not by making it impossible, but -by ensuring that the users are aware of it. This design also covers the case -of users simply changing their delegation choice but subsequently receiving -payments to addresses they handed out previously that use the previous -delegation choice. - -\subsection{Certificates and Registrations} -\label{certificates-and-registrations} - -\subsubsection{Certificates on the Blockchain} -\label{certificates-on-the-blockchain} - -The registering of stake addresses and stake pools, and delegating, -involves posting appropriate signed registration and delegation certificates to -the blockchain as part of the set of certificates included in -transactions. This makes the certificates part of -the blockchain, which means that they are are publicly announced to all -participants. - -Certificates will remain valid -until explicitly overwritten or revoked, as an automatic expiry would -likely increase the amount of undelegated, offline stake. The following -certificates can be posted to the blockchain: -\begin{itemize} -\item Stake address registration certificate -\item Stake address de-registration certificate -\item Delegation certificate -\item Stake pool registration certificate -\item Stake pool retirement certificate -\end{itemize} -There is one form of certificate which is not posted to the blockchain -in advance, but is presented when it is used: -\begin{itemize} -\item - Operational key certificate -\end{itemize} -Although this last kind is similar to delegation certificates in that -it uses one key to grant the right to sign blocks to another -key, it is quite different from the other certificates which are used -to define the delegation relation. Operational key certificates are -used by stake pool operators as a safety measure to mitigate key -theft (see \cref{operational-key-certificates}), not to delegate -stake rights between different entities. - -Figure~\ref{fig:relationship-keys-certificates} shows the relationships between -the different types of certificates and keys. -% -Dashed arrows represent relationships between the different keys and addresses: -the owner(s) of a stake address delegates their stake rights to the owner of a -stake pool cold key, using a delegation certificate. -% -The owner of a cold and hot key grants the stake rights of their cold key to their -hot key, using an operational key certificate. -% -Incoming solid arrows represent the components of a certificate. -For instance, a delegation certificate contains the stake address of the -delegator, and the (hash of the verifying part of the) stake pool key. - -Stake pools use a number of keys: a stake pool is controlled using the -\emph{pool key} pair \((sk_\text{pool}, vk_\text{pool})\). As explained in -\cref{operational-key-certificates}, this should be a \emph{cold} key, kept on a -secure machine, and only used to issue stake pool registration and operational -key certificates. - -Producing a valid block will require an operational key certificate, signed by -\(sk_\text{pool}\), and a witness for the block from the operational key -specified in the certificate. Since operational keys use key evolving signatures -(KES), an operational key is also referred to as a KES key. - -In addition, the leader election process in Ouroboros Praos requires a -verifiable random function, or VRF key pair \((sk_\text{VRF}, vk_\text{VRF})\), -which is needed to prove that a pool has won its private lottery for a given -slot. The hash of the verification part \hash{vk_\text{VRF}} of this key is -contained in the pool registration certificate. -% -Subsequent sections provide more details. - -\begin{figure}[ht] - \centering - \begin{tikzpicture}[ align = center - , node distance = 6em and 10em - , text width = 5em - , font = \footnotesize - , >={Latex[width=0.5em, length=0.5em]} - , every node/.style = { rectangle - , rounded corners - , draw = black - , align = center - , minimum height = 4em } - ] - - %% - %% Nodes - %% - \tikzset{ key/.style={fill=red!10} - , cert/.style={fill=green!10} - , dummy/.style={draw=none} - } - - \node (skeys) [key] {Stake address}; - \node (scold) [key, right = of skeys] {Stake pool key (cold)}; - \node (shot) [key, right = of scold] {KES key (hot)}; - \node (skeyr) [cert, above = of skeys] {Stake address registration}; - \node (skeyd) [cert, below = of skeys] {Stake address retirement}; - \node (pr) [cert, above = of scold] {Pool\\ registration}; - \node (pd) [cert, below = of scold] {Pool\\ retirement}; - \node (dcert) [cert] at ($(skeyr)!0.5!(pr)$) {Delegation certificate}; - \node (dummy) [dummy, above = of shot] {}; - \node (vrf) [key] at ($(pr)!0.5!(dummy)$) {VRF Key}; - \node (lwdcert) [cert, above = of shot] {Operational key\\certificate}; - - \tikzset{every node/.style={align=center, text width=7em, text=brown}} - %% - %% Relationship between nodes (arrows) - %% - % Horizontal lines. - \draw[dashed, ->] (skeys) edge node[above] {Delegates stake rights} - (scold); - \draw[dashed, ->] (scold) edge node[above] {Grants\\ stake rights} - (shot); - % Vertical lines. - \draw[->] (skeys) edge - (skeyr); - \draw[->] (skeys) edge - (skeyd); - \draw[->] (scold) edge - (pr); - \draw[->] (scold) edge - (pd); - \draw[->] (skeys) edge - (dcert); - \draw[->] (scold) edge - (dcert); - \draw[->] (scold) edge - (lwdcert); - \draw[->] (shot) edge - (lwdcert); - - \draw[->] (vrf) edge (pr); - \end{tikzpicture} - - \caption{Relationships between the keys, addresses, and certificates} - \label{fig:relationship-keys-certificates} -\end{figure} - -\subsubsection{Certificate Replay Prevention} -\label{certificate-replay-prevention} - -Unlike transactions, which inherently cannot be replayed due to the nature of -the UTxO accounting model, the certificates need an explicit mechanism to -prevent replays. The danger otherwise would include examples such as when a user -switches away from a stake pool by posting a new delegation certificate, the old -stake pool reposts the original delegation certificate, effectively thwarting -the user's attempt to delegate to another stake pool. - -The solution we employ is to borrow an idea from UTxO witnesses and to -piggy-back on the inherent replay protection of the rest of the -transaction. A UTxO witness for an input is a signature on the entire -transaction body, which includes all inputs and outputs (but -not witnesses, which would be circular). This means the signature can only be reused -on the same transaction, and due to the nature of UTxO accounting, the -same transaction cannot be included in the ledger again. -% -For certificates, we do essentially the same thing: the witness for a -certificate is a signature (or script input) for not just the certificate, but for the entire -transaction body. This means that, provided the transaction spends at -least one input, we inherit the inherent replay protection of UTxO -accounting. The validity rules for transactions will explicitly require each -transaction to have at least one UTxO entry as an input, so that certificates -will be protected from replay in this way. - -Why do we need to explicitly require a UTxO input? Won't the need to pay -transaction fees always implicitly require this anyway? There are two -additional sources of funds that could pay for the transaction fees: refunds and -the contents of a reward account. So it is possible to create transactions that -contain enough value to pay transaction fees even without consuming a UTxO -entry. Such a transaction, if valid, could be replayed at a later point in time. -In order to have all transactions (and by extension, all certificates), be -protected from replay attacks, we will explicitly require at least one UTxO -entry as an input to any transaction. - -\subsubsection{Stake Address Registration Certificates} -\label{stake-address-registration-certificates} - -Users wishing to exercise their rights of participation in the PoS protocol can -register a stake address by posting a \emph{stake address registration - certificate} to the blockchain. - -\begin{description} -\item[Stake address registration certificate] This certificate contains a stake - address. The credential can either be a key credential, or script credential, - as explained in \cref{address-structure}. - - We do not require a witness to register a stake address (besides, of course, - any witnesses needed for the transaction that is used to post the - certificate). - -\item[Stake address de-registration certificate] -This certificate contains the stake address that should be de-registered. - -The certificate requires a witness for the stake address that should be -de-registered. As stated in \cref{address-structure}, this will either be a key -or script witness, depending on the type of credential of the address. - -\end{description} - -Registering a stake address introduces a corresponding reward account. -The account is deleted when the stake address is de-registered. See -\cref{reward-accounts-per-stake-key} for details on reward accounts. - -In addition to a transaction fee, registering a stake address requires a -deposit, as explained in \cref{fees-deposits} and \cref{deposits}. The deposit -is to account for the costs of tracking the stake address and maintaining the -corresponding reward account. It also incentivises de-registering stake -addresses that are no longer required, so that the corresponding resources can -be released. - -\subsubsection{Stake Pool Registration Certificates} -\label{stake-pool-registration-certificates} - -A person planning to operate a stake pool (including a private pool) can -declare their intent by posting a \emph{stake pool registration certificate} to -the blockchain. - -\begin{description} -\item[Stake pool Registration Certificate] -The certificate contains the following: - -\begin{itemize} -\item - The hash of the verification part of the (cold) pool key, \hash{vk_\text{pool}}. - -\item - The hash of the verification part of the VRF key, \hash{vk_\text{VRF}}. - -\item - A stake address \(\mathcal{A}_{s,\text{reward}}\), called the \emph{reward - address} for the pool. Usually, this will be a \emph{registered} stake - address, controlled by the pool operator. The rewards for the pool operator - will be paid to the reward account of - \(\mathcal{A}_{s,\text{reward}}\)\footnote{We do \emph{not} want to associate - the reward account with the key of the pool itself. An important reason for - this is that for security reasons, stake pool operators are required to use - operational keys as described in \cref{operational-key-certificates}, while - storing the key of the pool securely offline. Requiring the pool key for - withdrawing rewards would be detrimental to this.}. - - If a pool operator wants to donate their rewards to a charity, they can do so - by using a stake address that is controlled by that charity as the reward - address. They can then advertise to other stakeholders that they are doing so - (although evidence that the stake address does indeed belong to the charity - has to be provided out of band). - - Should the reward address be unregistered, the stake pool operator will be - unable to receive rewards. In that case, any rewards that they would be due - are instead sent back to the reserves (but the stake pool members would still - get their usual rewards). - -\item - A list of stake addresses controlled by the pool owner(s), - \(\mathcal{A}_{s,\text{owner}}\). If any of these \emph{owner stake addresses} - delegate to this pool, the stake that they delegate will be counted towards - the stake pledged to the pool by the owner(s), see - \cref{stake-pool-registration,overview-of-incentives,reward-splitting}. Note - that adding a stake address to the set of owner stake addresses in itself does - not actually delegate the stake controlled by that address to the pool -- this - requires posting an ordinary delegation certificate to the chain. - - During reward distribution, there will be no rewards paid to the reward - accounts of the owner stake addresses. Instead, the stake delegated by all owner - stake addresses will be counted as the stake contributed by the pool owner(s), - and their reward will be paid to the reward account of the reward address. - -\item - The parameters that specify the reward sharing function of the stake - pool: cost, margin, and amount of stake pledged to the pool by the - owner(s), see \cref{stake-pool-registration,reminder-stake-pool-registration}. - -\item - A list of IP addresses and/or DNS Names of public relay nodes that the stake - pool operator provides to support the Cardano network. - -\item - Optionally, a URL and content hash for additional metadata about the pool, for - display in the wallet. The URL is restricted to a length of 64 bytes. It is - the obligation of the stake pool operator that this URL points to a JSON - object containing the metadata of the pool, as described in - \cref{stake-pool-metadata}. The content hash of that JSON object should match - the content hash in the registration certificate. - - If no URL and content hash is provided, the stake pool will not be listed in - wallets. Private pools (\cref{individual-staking}) will use this option. - - Also, if there is a mismatch in the content hash, the pool will not be - displayed. If a stake pool operator changes the metadata, they have to post a - new stake pool registration certificate with the new content hash. -\end{itemize} - -Validating the certificate requires witnesses from all owner stake addresses, as -well as a witness for the pool key. - -\end{description} - -If a stake pool can foresee that it will cease to operate, it can -announce this intent by posting a \emph{stake pool retirement -certificate}. - -\begin{description} -\item[Stake pool Retirement Certificate] -It contains - -\begin{itemize} -\item - The public key hash \(\mathcal{H}(vk_\text{pool})\) of the pool. -\item - The epoch number, starting from which the stake pool will cease to - operate. -\end{itemize} - -It requires a witness for the pool key \(sk_\text{pool}\) (particularly, it need not -be signed by any of the pool owners). - -After the retirement epoch, any stake that is delegated to this stake -pool will be disregarded for the PoS protocol. It will not take part in -the leader election process (similarly to how stake in an enterprise -address is not considered during the election process). - -Stakeholders who delegated to this pool should be notified and asked to -redelegate by their wallet the next time they are online. -\end{description} - -\subsubsection{Single Operator, Possibly Multiple Owners} -\label{multiple-owners} - -Note that there is a conceptual difference between the stake pool -\emph{operator} and stake pool \emph{owners}: -\begin{description} -\item[Stake Pool Operator] This is the person who operates the pool -- owns or - rents a server, holds the key of the pool, runs and monitors the - node. -\item[Stake Pool Owner] This is a person pledging stake - to the pool, increasing its rewards and desirability. The ability - for the owner to pledge stake is providing protection against the - pool-level Sybil attack - (requirement~\ref{sybil-attack-protection-at-stake-pool-level}, see - also \cref{stake-pool-registration}). -\end{description} - -Usually, the stake pool operator and owner will be the same person, -but a stake pool can also have multiple owners. This is to allow -people to coordinate and form a stake pool even if none of them had -enough stake on their own to make a pledge that would make the stake -pool competitive. - -Still, there will only be one operator, the person holding the key of the stake -pool itself. In addition to signing blocks, this key also holds the power to -retire the stake pool, or to post updated registration certificates without the -keys of all owners (in which case some of the owners are kicked off the stake -pool). Also, the rewards for all owners will be paid to the reward account -associated with the reward address of the pool, and it will be the -responsibility of the person(s) owning that address (usually the pool operator) to -distribute the rewards amongst the owners. -That is a conscious design decision: collaborating to form a stake pool should -require significant trust between the owners. Otherwise, everyone could choose -to become a co-owner of a stake pool instead of delegating, which would render -the mechanism of pledging stake ineffective. Allowing the operator to shut down -the pool, kick other owners off, or fail to distribute rewards raises the -threshold of necessary trust that owners of the pool must have in the operator. - -\subsubsection{Delegation Certificates} -\label{delegation-certificates} - -Users can transfer the rights of participation in the PoS protocol from -their stake address to a stake pool, by posting a \emph{delegation -certificate} to the blockchain. - -\begin{description} -\item[Delegation Certificate] -A delegation certificate is a tuple containing - -\begin{itemize} -\item - the stake address delegating its stake rights, - \(\mathcal{A}_{s,\text{source}}\) -\item - the stake pool verification key hash to which stake is delegated, - \(\mathcal{H}(vk_\text{pool})\) -\end{itemize} - -Posting a delegation certificate requires a witness for the delegating stake -address \(\mathcal{A}_{s,\text{source}}\). -\end{description} - -Note that there is no corresponding delegation revocation certificate. If a user -wishes to change their delegation choice to a different stake pool (which might -be their own private stake pool), they can simply post a new delegation -certificate. Also, the delegation certificate is revoked automatically when the -source stake address is de-registered. - -\subsubsection{Operational Key Certificates} -\label{operational-key-certificates} - -% On the need for a hot/cold key arrangement. -Stake pool operators must use a \emph{hot}/\emph{cold} key -arrangement to mitigate key exposure -(see~\cref{mitigate-key-exposure}). A \emph{hot}, or operational, key -is kept online, and is used to sign blocks, while the \emph{cold} key is -kept securely offline. This requires an \emph{operational key - certificate} to create a (1-link) chain of trust from the cold key -to the hot key, allowing this hot key to participate in the \emph{PoS} -protocol. Should the hot key become compromised, the stake pool -operator should immediately create a new operational key certificate, and -switch to a new key. - -% The problems with using in-ledger certificates. -If the operational key certificates would be included in the ledger, -as the other certificates are, this would present a problem for block -validation. Consider the following example: suppose that the network -layer wants to validate a batch of 10 block headers from the current -epoch, before deciding if it wants to also download the block -bodies. Can it tell if those block headers are signed by the right -actors? - -In this situation the network layer has the state of the ledger up to -but not including these next 10 block headers. So it cannot rely on -any information in the 10 corresponding block bodies. - -Without this information, the validity of the hot key that signed -the headers cannot be verified. If the network layer sees one of the -10 new blocks signed by a hot key it doesn't recognise, it might be -because there is a delegation certificate in the block bodies (which -the network layer has not seen yet), that shows that the key is valid -because some stake pool key deferred its stake rights to it. Similarly, -if the network layer sees a known hot key, how can it know that it -is still valid? There could be a new certificate in the block bodies -that defers the rights of this key to a different one (which would -invalidate the key the network layer saw). - -To address this problem, a new type of certificate is introduced: -\emph{operational key certificates}. These certificates are provided -in the block header itself, as part of the witness, thus solving the -problem of determining the precedence of hot keys. In other words, -operational key certificates are \textbf{not included in - the ledger}, but instead they are \textbf{included in a witness} by -stake pools at the point of exercising stake rights including: - -\begin{itemize} -\item - signing blocks -\item signing votes for protocol update proposals (once the update and - voting system is in place) -\end{itemize} - -An operational key certificate, signed by the stake pool's cold key, -delegates to the hot key that is used to sign messages in the -protocols (block header or vote). This operational key certificate is -included in the message so that all other nodes can verify that the -message is signed by a legitimate delegate of the owner of the cold -key\footnote{This is much the same setup as with TLS certificates: - there are known root certificates, but the server's operational - certificate is presented inband.}. - -Specifically, an operational key certificate specifies that the -stake rights are transferred from a cold stake pool key \(vk_\text{pool}\) -to a hot key \(vk_\text{hot}\). -They are included in the message (e.g.~block header) and the message -itself is signed with \(sk_\text{hot}\). - -Operational keys will use key evolving signatures (KES). To be precise, we will -use keys according to the MMM scheme \citep{cryptoeprint:2001:034}, regular -evolutions after a number of slots that correspond to one day, and a key -lifetime of \(2^7 = 128\) days, a little over three months. - -Operational key certificates will have a lifetime of 90 days after which they -become invalid, to encourage pool operators to regularly rotate their -operational key. The certificate will specify a slot from which it will be -considered to be valid for 90 days. - -In detail, the hot/cold key setup is as follows: - -\begin{itemize} -\item - The stake pool operator registers their stake pool, using a cold stake pool key - \(vk_\text{pool}\). This \emph{cold key} is kept securely and - off-line. -\item The stake pool operator uses \(sk_\text{pool}\) - to sign an operational key certificate \(C\), - transferring the stake rights to a \emph{hot key} - \(vk_\text{hot}\). -\item - The stake pool operator keeps \(sk_\text{hot}\), as well as \(C\), on - a node that is on-line, and can sign blocks. A block signed with - \(sk_\text{hot}\) will be considered valid, provided that \(C\) is - included in its header. -\item - Should the node get hacked, and the hot key compromised, the stake - pool operator will create a new operational key certificate - \(C'\), delegating the stake rights to a new hot key - \(vk_{\text{hot}'}\). -\end{itemize} - -In order to render \(sk_\text{hot}\) useless, it must be established -that \(C'\) takes precedence over \(C\). For this purpose, the -operational key certificate will have an additional integer -field, and certificates with a larger value for this field will take -precedence. - -\subsubsection{Certificate Precedence and Validity} -\label{certificate-precedence-and-validity} - -The following rules determine precedence and validity of certificates. -In particular, they describe what happens when multiple certificates are -issued for a given stake pool key. - -The ordering of blocks and transactions induces a canonical ordering -amongst certificates. Thus, the terms older/newer certificate are well -defined and are used below. - -\paragraph{Stake Pool Registration and Retirement Certificates} - -\begin{itemize} -\item - There can be at most one active stake pool registration certificate - for any given stake pool key. A newer certificate will override an older - one. - - This will allow stake pool operators to update their costs and margin - if they need to\footnote{Stake pool members should be notified of such changes - by their wallet the next time they are online, if this makes the pool less - desirable, see \cref{display-of-stake-pools-in-the-wallet}.}. -\item - A revocation certificate is only valid if there is an older - registration certificate. -\end{itemize} - -\paragraph{Delegation Certificates} - -Newer delegation certificates override older delegation certificates. This -allows delegators to move from one stake pool to another. - -\paragraph{Operational Key Certificates} - -For operational key certificates, we cannot rely on the ordering induced by -the blockchain. But we do have the counter field, which serves the -purpose of establishing precedence: - -\begin{itemize} -\item - An operational key certificate with a higher counter overrides one with a - lower counter. -\item - Also, we require that within any given chain, if there are two blocks A and B - signed using operational key certificates issued by the same cold key, if A is - an older block than B, the counter in the operational certificate in the cert - in the header of B must be at least as large as the one in the counter in the - operational certificate in the header of A. -\end{itemize} - -\subsection{Delegation Relations} -\label{delegation-relations} - -As stated in the delegation overview: delegating stake rights involves two -indirections: from payment addresses to stake addresses, and from stake -addresses to stake pools. - -Equivalently, there are two relations: a relation between payment addresses and -stake addresses, and a relation between stake addresses and stake pools. The -first relation can be read off payment addresses, by looking at their stake -address references. The second relation consists of registered stake addresses, -registered stake pools and delegation certificates as the entries relating the -two. - -\subsubsection{Address Delegation Relation} -\label{address-delegation-relation} - -The address delegation relation is a relation between payment addresses and -registered stake addresses. - -This relation can be defined in terms of the current UTxO and the current set of -registered stake addresses. For all Shelley addresses in the UTxO, the stake -address is determined by the stake address reference -- either directly by -value, via a pointer to a stake address registration certificate, or as null. -This needs to be filtered by the current set of registered stake addresses. - -\subsubsection{Stake Pool Delegation Relation} -\label{stake-pool-delegation-relation} - -The stake pool delegation relation is a relation between registered stake -addresses and stake pools. - -The relation is defined by the active set of delegation certificates, -filtered by the set of active stake pools. The active delegation -certificates already exclude those where the source stake address has -been de-registered (since a delegation certificate is revoked automatically when -the stake address is de-registered). - -\subsubsection{Overall Stake Distribution} -\label{overall-stake-distribution} - -Ouroboros \citep{ouroboros_classic} requires a stake distribution to -use as the basis of defining the slot leader schedule for the next -epoch. - -The overall stake distribution is the set of all registered stake pools -and their aggregate stake from all addresses that are delegated to them. - -This can be defined by taking the composition of the address delegation relation -and the stake pool delegation relation, giving the relation between payment -addresses and stake pools. The final distribution is formed by taking the -transaction outputs from the UTxO and selecting all the payment addresses -related to each stake pool and aggregating all the coins. - -Note that defining the stake distribution in this way is in contrast to using -the Follow the Satoshi algorithm. This definition automatically excludes all -addresses that hold no stake, and excludes addresses that have stake rights, but -which have not correctly registered their stake address or delegation -certificate. - -We will call stake that is correctly delegated to an existing pool \emph{active - stake}, sometimes contrasted to the \emph{total stake}, which includes stake -that is not delegated (or delegated to pools that are already retired). - -\subsubsection{Chain Delegation} -\label{chain-delegation} - -Chain delegation is the notion of having multiple certificates chained -together, so that the source key of one certificate is the delegate key -of the previous one. - -While the delegation research paper in principle allows a significant -degree of flexibility with delegation, our chosen design is quite -restrictive and uses a fixed pattern of delegation. - -We will only allow a very simple form of chain delegation, where we have -the following, in order: - -\begin{enumerate} -\item - a stake address -\item - a delegation certificate; and -\item - an operational key certificate. -\end{enumerate} - -This restricted pattern of chain delegation allows us to satisfy all -requirements, but avoids problematic cycles in the graph of delegation -certificates, and makes it simple for nodes to track the delegation. - -\subsection{State Tracking for delegation} -\label{state-tracking-for-delegation} - -It is not sufficient for certificates to be posted to the blockchain. -Nodes need ready access to certain parts of previously posted -information as part of the protocol execution or ledger validation. For -example, since nodes need to validate signatures on new blocks in a -timely manner, they need ready access to information about the registered -stake pools (including operational key certificate validity). - -One of the design goals is to avoid having to look up old entries on the -blockchain, since we want to allow implementations that forget old -blocks. Instead, we want a {\tt foldl} design where nodes keep track -- as -local state -- of all the information they will later need. - -The following sections describe the local state that nodes must maintain -as they process transactions in blocks. - -\subsubsection{Stake Addresses} -\label{stake-addresses} - -The set of active stake addresses must be tracked. This contains the stake -credentials from each stake address registration certificate. The set is -uniquely indexed by the hash itself (of either the verification key, or script, -depending on the type of credential). It is also uniquely indexed by the -location on the blockchain of the stake address registration certificate, using -the same location type as pointer addresses. - -This set is updated when stake addresses are registered and de-registered. This -state is consulted when validating and applying transactions that withdraw from -reward accounts, to retrieve the stake credential. - -\subsubsection{Reward Accounts} -\label{reward-accounts} - -For each stake address, there is an associated reward account. The lifetime of -these accounts follows exactly those of their associated stake address. - -The reward accounts are a mapping from a stake address to their current balance. -The stake address is the unique index for the mapping. - -The accounts are updated in bulk following the end of an epoch. They are -consulted and updated when validating and applying transactions that withdraw -from reward accounts. See \cref{reward-address} and \cref{distributing-rewards} -for details. - -\subsubsection{Stake Pools} -\label{stake-pools} - -The set of active stake pools must be tracked, uniquely indexed -by the public key hash of the stake pool. - -In addition, a small amount of state needs to be maintained to validate -operational key certificates. The state tracked for each stake pool includes -an integer representing the highest counter field seen so far in a valid -certificate. This is consulted to validate operational key certificates, and -updated when larger counter values are presented in a valid certificate. - -\subsubsection{Active Delegation Certificates} -\label{active-delegation-certificates} - -Active delegation certificates are tracked, as a finite map from stake address -to pool verification key hash. - -\subsubsection{Stake per Stake Address} -\label{stake-per-staking-key} - -For the purpose of leader election and reward calculation, the system needs to -know how much stake each registered and delegating stake address actually -controls. The total stake of a stake address is calculated as the sum of all -funds that are -\begin{itemize} -\item in value addresses referring to this stake address in their stake - address reference (by value, or by pointer, as long as the pointer points to a - stake address registration certificate that was already valid when the value - address received funds, and has not been de-registered) -\item in the reward account of that stake address -\end{itemize} - -\subsection{Slot Leader Schedule and Rewards Calculation} -\label{slot-leader-schedule} - -The process of leader election has to be modified to take delegation -into account. - -While adding blocks to their chain, nodes will keep track of the -pieces of state listed above. When it is time to prepare the slot -leader schedule for the upcoming epoch, they will look at a past -snapshot of that state, from slot \(s_\text{stakedist}\), the slot -from which the stake distribution should be used to compute the slot -leader schedule and rewards for the next epoch\footnote{The detail of - which slot is used as \(s_\text{stakedist}\) depends on the variant - of the Ouroboros protocol that is used. It needs to be deep enough - in the chain to be stable. It also needs to be before the point in - time at which the random seed for the slot leader election is - determined, to prevent a grinding-type of attack. Note that - \(s_\text{stakedist}\) does not necessarily have to be in the - current epoch.}. - -The nodes will use the state from slot \(s_\text{stakedist}\) to -\begin{itemize} -\item compute the stake distribution (i.e., the amount of stake per - stake pool) -\item create the leader schedule by sampling the stake distribution - (i.e., sampling the stake pools, weighted by the stake they control) -\item retain this state, to use it for the reward calculation at the - end of the epoch\footnote{They cannot calculate those rewards - immediately, because they depend on the efficiency of the pools - during the following epoch. However, they could, alternatively to - retaining the whole delegation state, calculate the rewards up to - the factor that depends on the efficiency.}. -\end{itemize} - -\subsection{Block Validity and Operational Key Certificates} -\label{block-validity-and-operational-key-certificates} - -Stake pool operators will use operational key certificates in order to protect -the key to which their members delegated. A block for a slot where the VRF key -\(vk_\text{VRF}\) has been elected as leader (the proof of which is to be -constructed using \(sk_\text{VRF}\), and to be included in the block header) -will be considered valid by all nodes if - -\begin{itemize} -\item there is a stake pool with (cold) pool key \(vk_\text{leader}\), which - list \hash{vk_\text{VRF}} as the VRF key hash in its pool registration - certificate - -\item - the block is signed by \(sk_\text{hot}\) and contains, in its header, an - operational key certificate from - \(sk_\text{leader}\) to \(sk_\text{hot}\). - -\item - The counter of the operational key certificate must not be smaller than the - counter of the operational key certificate used to sign the last block of - \(vk_\text{leader}\). -\end{itemize} - -In case there are more than one block for the current slot, for the same pool, -each of which are signed using an operational key certificate, the newest -certificate (as per the included counter) takes precedence. - -Note that nodes take the precedence amongst operational key certificates into -account only \emph{after} comparing the length of the chains. When the node is -already up to date and receives two conflicting blocks that add to its current -chain, the length will of course always be the same. But this rule is important: -if we did not compare the lengths of the chains before giving preference to the -block with the newer operational certificate, it would be possible to force a -node to do a rollback of arbitrary length, by sending it a block from a past -slot, signed using a newer certificate than the block that the node already has -in its chain for that slot. This would open up an attack where a stake pool -operator could force nodes to do arbitrary rollbacks. - -\subsection{Transition to Decentralization} -\label{transition-to-decentralization} - -In order to guarantee system stability, we must be sure that stake pool -operators are ``doing their job'' sufficiently well before relinquishing -control to them. Instead of having a simple ``switch'' from a -centralized system controlled by a handful of bootstrap keys to a fully -decentralized one, we propose a \emph{transition phase}. - -\subsubsection{Motivation} -\label{motivation} - -Cardano \emph{chain growth quality} is only guaranteed when for all time windows -of \(2k\) slots, a block has been created for at least \(k\) slots, where \(k\) -is the security parameter of the protocol. At the moment, the bootstrap nodes -are responsible for block creation, but in a fully decentralized system, this -will be the pool operators' responsibility. - -In the beginning, there might be technical problems or other issues -preventing the pool leaders from creating sufficiently many blocks, so -we want to make the transition gradual, monitoring system performance -and being able to temporarily delay or even revert decentralization in -case of an emergency. - -Another consideration is the amount of stake that is necessary to mount -a 51\% attack on the system. Since participating in the PoS protocol -requires an action on behalf of the stakeholders -- registering a -stake address and delegating -- it is not unreasonable to expect that it -will take some time until a significant fraction of the overall stake -becomes active and starts contributing to the protocol. An attacker -might use this window of opportunity to attack the system. A gradual -handover of the protocol from the initial core nodes to the actual -stakeholders will protect the integrity of the blockchain. - -\subsubsection{Proposal} -\label{proposal} - -We propose to introduce a new parameter \(d\in[0,1]\), which controls -the ratio of slots created by the bootstrap keys -- all other slots will -follow the rules outlined in this specification. So \(d=1\) corresponds -to the present ``bootstrap era'' state, whereas \(d=0\) corresponds to -full decentralization as described in this document. Starting with -\(d=1\) and gradually going down to \(d=0\) allows for a smooth -transition period. - -For a given value of \(d\), the system will perform two steps to create the -leader schedule for the next epoch: -\begin{itemize} -\item Perform leader election amongst the new nodes, according to Ouroboros - Praos, for all \(n_s\) slots in the epoch. -\item Randomly select \(d n_s\) slots of the epoch. Let us call those the slots - the \emph{OBFT slots} of that epoch. For the OBFT slots, the Praos leader - schedule will be overridden, and the old core nodes will be responsible for - creating blocks for theses slots. - - In order to keep the block frequency constant, we will select a fraction - \(f\) of the OBFT slots, where \(f\) is the active slots coefficient from - Praos\footnote{In Ouroboros Praos, a large fraction of slots will deliberately - be empty, which makes it easier to treat network delays in the adversarial - model, and to still give guarantees of liveness and persistence when some - blocks are not propagated within a single slot. Note that it is still possible - to achieve the same block frequency as in Ouroboros Classic, by choosing a - shorter slot length.} (Equation (1) in \citep{ouroboros_praos}), and call - those the \emph{active OBFT slots} of the epoch. - - For OBFT slots, we will modify the behaviour of all nodes as follows: - \begin{itemize} - \item - No stake pool node shall create a block for an OBFT slot. - \item - For non-active OBFT slots, no node shall produce a block at all -- neither - one of the old core nodes, nor one a stake pool node. - \item - Also, for the non-active OBFT slots, no block shall be considered valid by - any node. - \item For the active OBFT slots, the old core nodes will create blocks, in a - round-robin fashion as per OBFT. - \item - Blocks produced according to this schedule for the active OBFT slots shall - be considered valid by all nodes. - \end{itemize} -\end{itemize} - -\subsubsection{Rewards during the Transition Phase} -\label{rewards-during-the-transition-phase} - -We do this soft transition as a de-risking strategy, so that we can intervene in -case we observe any difficulties in the decentralised system. But we do not want -this to have an effect on the rewards that pools get. Operational difficulties -of the overall system that cause us to slow down the transition should not -reduce the rewards that individual pools get. - -In order to minimise the influence of the transition on pool rewards, we have to -alter the way we measure the apparent performance for pools (see -\cref{stake-performance-and-block-production}) during the transition phase: -\begin{enumerate} - \item - For determining the apparent performance of any pool, we will take the total - number of blocks in the epoch -- \(\Nbar\) in \cref{eq:beta} -- to be the - number of blocks produced in \emph{non-OBFT slots}. - \item - As long as we have \(d >= 0.8\), we set the apparent performance of any pool - to \(1\). - \label{item:perf1} -\end{enumerate} -The reason for \cref{item:perf1} is that when only a small fraction of blocks -are produced by stake pools, the measurement of the performance will be -dominated by the statistical aspect of the leader election, and pools might -frequently get a performance of \(0\) by no fault of their own. - -As an example\footnote{In this example, we assume \(n_s*f=21600\), to match the - block frequency of Byron.}, consider a pool \(A\) with 1\% of stake. In the -fully decentralized case \(d=0\), \(A\) would be elected slot leader for -\(0.01\cdot 21600=216\) slots per epoch on average. For \(d=0.9\), \(A\) would -only be elected for \(0.01\cdot 0.1\cdot 21600=21.6\) slots per epoch on -average, so \(A\) would only have a tenth of the work (create 21.6 blocks -instead of 216 blocks), but get the same rewards. - -\subsubsection{Transition Plan} -\label{transition-plan} - -The parameter \(d\) can be changed on an epoch-per-epoch basis, following -the plan we will outline. - -We plan to start with \(d=0.9\) and then decrease \(d\) by \(0.1\) each -epoch, \emph{provided pool leader block creation is sufficient to -guarantee chain growth quality, and a sufficient fraction of active -stake}. - -If block creation is insufficient, we will halt lowering \(d\) (or even -increase \(d\) again) until we have reason to believe that the problem -has been understood and fixed. - -In order to decide whether block creation is sufficient, we will -estimate the probability that at least \(k\) out of every \(2k\) blocks -would be created. If this probability is high enough (for example -greater than \(1 - 10^{-10}\)), block creation will be deemed -sufficient. - -For the estimation, we use the -\href{https://en.wikipedia.org/wiki/Beta-binomial_distribution}{Beta-Binomial -Distribution}: Given the number of slots \(a\) that have been faithfully -created and the number \(b\) of slots that have been missed (counting -from the beginning of the transition period) and using -\href{https://en.wikipedia.org/wiki/Beta_distribution\#Bayes'_prior_probability_(Beta(1,1))}{Bayes' -Prior \(B(1,1)\)}, the probability in question is \(P(X\geq k)\), -where \(X\) is drawn from the Beta-Binomial distribution with parameters -\((a + 1)\), \((b + 1)\) and \(2k\). - -For example, in the very first transitional epoch, 10\% of active slots, -i.e.~2160 active slots\footnote{assuming \(k=2160\) and an epoch length of - \(10k\) active slots, as in Byron} will be given to pool leaders. If at least -1261 out of these 2160 slots are properly created, above estimation (with -\(a\geq 1261\) and \(b\leq 2160-1261=899\)) leads to \(P(X\geq 2160)\geq -1-10^{-10}\), so we will proceed with \(d=0.8\) in the second epoch. If however -at least 900 slots are missed, we will keep \(d\) at \(0.9\) for the time being. - -In addition to monitoring the number of missed blocks, we will also look -at the fraction of stake that is active (i.e., is stored in addresses -which belong to a registered stake address that is delegating to a stake -pool). The lower this ratio, the less stake is required to launch a 51\% -attack on the system. This can be offset by increasing \(d\). For -example, if \(d \geq 0.5\), it is impossible to launch a 51\% attack. We -can specify an amount of stake controlled by an adversary that we want -the system to be resilient against, and delay reducing \(d\) in order to -meet this level of resistance. - -\subsection{Rewards} -\label{rewards} - -For the smooth operation of the system, it is beneficial to have a large -portion of the stake delegated to a set of reliable stake pools. Thus, -we should incentivise delegating stake to reliable stake pools. One way -to do this is to have stake pools share their rewards with their -participants. - -The reward sharing mechanism should satisfy the following requirements: - -\begin{enumerate} -\item - Sharing rewards should be an automatic process that does not require - an action, neither by the stake pool operator nor the participants. - This requirement is not only meant to ensure that participants get - their share reliably. The share of the rewards that are given to a - particular participant depends on the amount of stake that that - participant delegated in a particular epoch. Thus, any node that - verifies a transaction that transfers the rewards for a given epoch - needs to access the stake information for that epoch. While this - information is archived on the blockchain indefinitely, looking it up - for arbitrary past epochs might be too costly. Making the sharing of - rewards an automatic process in the following epoch circumvents this - problem. -\item - Sharing rewards should not lead to an excessive growth of the UTxO. In - particular, it should avoid creating dust entries. -\item - Sharing rewards should not lead to a burst of transactions that risks - pushing the system to the limits of its predictable region of - operation. -\item\label{rewards-requirement-linkability} - Sharing rewards should not increase the linkability of addresses of a - wallet. -\item - The reward sharing policy of the stake pool should be transparent to - potential participants. -\end{enumerate} - -Coming up with a solution that satisfies all of those requirements is -less straightforward than one might think. We did an exhaustive -assessment of possible approaches, documented in -\cref{assessment-of-rewards-sharing-mechanisms}, and finally opted for -the mechanism described in~\ref{reward-accounts-per-stake-key}, which -compromises somewhat on \cref{rewards-requirement-linkability}, but -satisfies all the other requirements. - -\subsubsection{Distributing Rewards} -\label{distributing-rewards} - -One of the difficult problems we had to solve during the design of the -reward distribution mechanism was UTxO explosion and dust creation: -since rewards occur in every epoch, and all the entries in the UTxO -will generate rewards, a naive approach would lead to an exponential -growth of the UTxO, which is clearly not sustainable. Furthermore, -individual rewards would be small, so most of the UTxO entries created -for reward distribution would be dust. - -We have explored several approaches to circumvent this problem -(see \cref{assessment-of-rewards-sharing-mechanisms} for a summary), -and ended up with using \emph{reward accounts} -(\cref{reward-address}). Here, UTxO growth is prevented by using -addresses that do not use UTxO style accounting at all. Instead, every -registered stake address has an associated account, using -account-style book-keeping. That way, the rewards from multiple epochs -can be pooled, and stakeholders can withdraw them manually. Note that -this has two advantages over the superficially simpler approach of -having stakeholders claim their rewards directly: -\begin{itemize} -\item Updating the total rewards a stakeholder is due happens - frequently, avoiding the need for all nodes to hold on to the state - that is needed to calculate rewards from old epochs. -\item Rewards that are accumulated in reward accounts can be delegated before - they are withdrawn, eliminating an incentive for - frequent withdrawals (which again would lead to an unnecessary - growth of the UTxO set). -\end{itemize} - -After the end of each epoch, rewards for stake pool operators and members are -calculated, using the formulae in \cref{non-myopic-utility}. The calculation -will be based on -\begin{itemize} -\item The active stake pools, in particular their cost and margin parameters, - pledged stake, owner key hashes, and reward accounts for stake pool owners. -\item The finite map giving the total stake for each registered - stake address, \emph{taken at the point in time that was relevant for - creating the leader schedule for that epoch}. -\item The stake pool delegation relation. -\item The leader schedule and list of empty slots for that epoch. -\end{itemize} -For each registered stake address, the rewards thus calculated are added -to the balance of the associated reward account. - -Note that all the information that is relevant for the calculation of -the rewards is publicly available on the blockchain, so there is no -need to explicitly write the balance of each reward account to the -chain. Instead, it suffices for all the nodes to store the reward -accounts and their current balance locally. - -\paragraph{Collecting Rewards} - -Once a sizeable amount of funds has accumulated in a given reward -account, the owner of that account will want to withdraw those funds, -and move them to an ordinary address of their wallet. This withdrawal -from an account to a UTxO can be done via a transaction, using the -reward account and its current balance as an additional input. In order to -validate, it needs a witness for the stake address associated with the reward -account. - -The transaction is protected against replay by the requirement of having at -least one UTxO input, as described in \cref{certificate-replay-prevention}. - -\paragraph{Handling of Byron Addresses} -\label{handling-of-bootstrap-addresses} - -All funds in Byron addresses will be ignored by the PoS system -- -there is no stake address associated with Byron -addresses. Consequently, there will be no rewards, and stakeholders -will be incentivised to stop using Byron addresses. Our transition -plan, laid out in \cref{transition-to-decentralization}, prevents a -situation where the system would be vulnerable to a 51\% attack -because only a small fraction of the total stake is active yet, by -allowing for a period where the original nodes from the Byron -phase are still eligible to sign some of the blocks. - -\subsection{Fees} -\label{fees} - -To prevent economic attacks, fees or refundable deposits should be -charged where operators incur costs. In particular we will have -refundable deposits corresponding to the state that has to be tracked -for certificates\footnote{We plan to extend this to also cover UTxO entries in - the future.}. - -\subsubsection{Transaction fees} -\label{transaction-fees} - -The basic transaction fee covers the cost of processing and storage. The -formula is - -\(a + b x\) - -With constants \(a\) and \(b\), and \(x\) as the transaction size in -bytes. - -The fixed component is to cover per-transaction overheads. The component -linear in the size of the transaction reflects the processing and -storage cost of transactions. - -This aspect remains unchanged with delegation except to the extent that -there are additional objects that can appear in transactions relating to -delegation. These simply increase the size of the transaction and so are -covered by the existing fee formula. - -In principle different fees could be charged for different things -appearing in a transaction, to reflect their different processing costs. -This is a future direction, but will not be introduced as part of -delegation. - -\subsubsection{Deposits} -\label{fees-deposits} - -In addition to ordinary (non-refundable) fees, actions that require -resources on the nodes should require a deposit, as described in -\cref{deposits}. In particular, -\begin{itemize} -\item registering a stake address -\item registering a new stake pool (but not updating the registration - certificate of a stake pool that already exists) -\item creating a new UTxO entry (in a future release) -\end{itemize} -should all require making a deposit. This deposit should be released -when -\begin{itemize} -\item a stake address is de-registered -\item a stake pool is retired -- there is a subtlety here, however, - since the retirement certificate states an epoch in the future where - the pool will cease operation. The refund should depend on that - epoch, and we will delay paying out the refund until that epoch. -\item a UTxO entry is removed by using it as an input to a transaction (in a - future release) -\end{itemize} -Note that posting a delegation certificate does \emph{not} require a -deposit; delegation certificates need a stake address registration -certificate in order to be valid, so any deposit that we would require -for a delegation certificate can instead be included in the deposit -for the associated stake address registration certificate. - -\subsection{Time to Live for Transactions} -\label{time-to-live-for-transactions} - -For multiple reasons, we will require that transactions that are submitted to -the system include a \emph{Time to Live} (ttl), a slot number\footnote{We use - the term ``slot number'' to refer to an absolute slot number, i.e., specifying - both the epoch and the slot throughout this document.} after which the -transaction can not be included in the ledger any more. An obvious advantage is -that this gives users the certainty that a transaction that failed to be added -to the chain can not be replayed in the future, so that they are safe to re-send -funds. - -In the context of deposits and refunds, a ttl also proves to be useful: When a -transaction that releases a resource is created and submitted, it is not known -when it will be effective, and thus the refundable part of the deposit -- which -depends on the time at which the resource is freed -- can not be computed. But -if the transaction does include a ttl, the latest slot in which the transaction -can be added to the ledger can be used to calculate the refund. - -\subsection{Robustness at the Epoch Boundary} -\label{robustness-at-the-epoch-boundary} - -As described, there is a lot of work to be done by the nodes as the system -progresses from epoch to epoch: the stake distribution and slot leader schedule -need to be calculated, the fees accumulated during the epoch need to be -summed up, performance of the pools evaluated, deposits decayed, and -rewards determined and distributed. - -Doing all that \emph{at} the transition between two epochs is far from ideal. It -creates a time period where all the nodes will need additional resources. It -also requires that all nodes finish those calculations within a single slot -length, and failure to do so will result in missed blocks and temporary forks. -Worse, since this period of increased activity is perfectly predictable, any -attacker of the system can leverage this, and time their attack appropriately to -maximise impact. Effectively, a predetermined breaking point is introduced at -the epoch boundary. - -It is thus desirable to spread this work out over a longer period when possible. -And it turns out that this is entirely achievable. - -\subsubsection{Calculating the Leader Schedule} - -The stake distribution and randomness used to determine the leader schedule for -epoch \(e\) need to be available at the start of epoch \(e\). In the case of a -public leader schedule, it is also convenient to publish the schedule itself at -the start of the epoch. But we can start calculating those \emph{before} the end -of epoch \(e-1\). The details of when the stake distribution has to be taken for -the leader election, and when the randomness has to be agreed on, depends on the -choice of consensus protocol. - -\subsubsection{Calculating and Distributing Rewards} - -The rewards for epoch \(e\) depend on the contents of that epoch, so it is not -feasible to start calculating them during that epoch. However, there is no hard -constraint to actually distribute those rewards at the beginning of epoch -\(e+1\). If we instead defer that payout by one epoch, and pay rewards for epoch -\(e\) at the beginning of \(e+2\), we will have a whole epoch for that -calculation. - -\subsection{Wallet Recovery Process} -\label{wallet-recovery-process} - -Wallet recovery is the process of reconstructing a wallet from the root -key. In order to reconstruct a wallet, all addresses belonging to that -wallet which appear on the blockchain need to be identified. - -In the Byron implementation, this is done by traversing the -blockchain, and for each address, checking whether it belongs to the -wallet. Unfortunately, this is linear in the size of the blockchain, -leading to a very poor user experience. - -To speed this up, we will reverse the strategy. Instead of going through -the addresses on the blockchain, checking for each whether it belongs to -the wallet, we go through the possible addresses of the wallet, and -search whether they appeared on the blockchain. - -In order for this to be efficient, we need to maintain an index, where -we can look up addresses in the blockchain by some key, and we need to -have a way of generating the key for an arbitrary range of addresses in -the wallet, using only the root key as input. - -Recall from \cref{address-structure} that a payment address contains a payment -credential, as well as a stake address reference, where only the stake address -reference depends on the delegation for that address. The key payment -credential is derivable from the root key (in -particular, it does not depend on the delegation preferences of the -wallet), and is a suitable key for the lookup of addresses\footnote{Depending - on the serialisation format for addresses, it might be possible to not - use a separate index at all: if \(\hash{vk}\) is a prefix of - the serialised address, we can directly do a prefix query in the - database.}. - -Of course, we cannot search for \emph{all} possible addresses of the -wallet. Instead, we utilise the tree structure of the HD wallet. We will -require that the wallet software populates this tree in a specified way -that will allow us to do a kind of exponential search for the addresses -of the wallet\footnote{This is similar to the account discovery - in \href{https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki}{BIP44}.}. - -\subsubsection{Trees of Depth 1} -\label{trees-of-depth-1} - -To simplify, let us consider a wallet where the HD wallet tree is of -depth 1, so that each address has an index \(i \in \mathbb{N}\). We will -require that the wallet creates addresses in order, and that there is a -\emph{maximal address gap} \(\bar{i}\), such that the address -\(\alpha_i\) will not be generated unless there is an address -\(\alpha_{i'}\), with \(\exists i' \in [i-\bar{i}-1, i-1]\) already -appearing on the blockchain. - -The first step in restoring a wallet is to find an upper bound on the -number of addresses of the wallet, \(i_{\text{up}}\). This can be done -by consecutively looking at the intervals - -\[ -I_{n} = [2^n + i | i \in [0, \bar{i}]], n \in \mathbb{N} -\] - -and checking whether any of the addresses in \(\alpha_i\) for -\(i \in I_{n}\) appears on the blockchain. This check is performed by -creating the corresponding payment key, hashing it, and doing a look-up -in the index. For some \(n\), this will fail, and we will have found -\(\bar{i}\) consecutive indices for which there are no addresses of this -wallet on the blockchain. Because \(\bar{i}\) is the maximal address -gap, no address larger than \(2^n\) has been created for the address, -and we have \(i_\text{up} = 2^n\). - -Afterwards, we can perform a binary search for the maximal address -\(i_\text{max}\), in the interval \([2^{n-1}, 2^n]\). In each step of -this binary search, we will probe for \(\bar{i}\) consecutive addresses, -starting from an offset \(i\). If none of them exist, we know that -\(i_\text{max} < i\), otherwise \(i_\text{max} \geq i\). - -Finally, we will create all payment key hashes in the range -\([0, i_\text{max}]\), and look up the corresponding addresses. - -\paragraph{Early Finish and Memoisation} - -The above process will perform more lookups than necessary. The binary -search can be aborted once the search window gets smaller than -\(\bar{i}\). In addition, we should consider memoising the payment keys -and/or lookups. - -\subsubsection{Taller Trees} -\label{taller-trees} - -This scheme can be generalised for trees of larger depth. The current -wallet in Cardano has a fixed depth of 2. Each address in this wallet -has an index \((i, j) \in \mathbb{N} \times \mathbb{N}\). In order to -generalise the above wallet restoration procedure for this wallet, we -will require that there is no gap in the \(i\), and a maximal gap -\(\bar{j}\) in \(j\). - -Identifying the maximal value \(i_\text{max}\) is straightforward: look -at lists of indices - -\[ -[(i, j) | j \in I_0] -\] - -for increasing values of \(i\), until there is no address found on the -chain for a specific value of \(i\). Once \(i_\text{max}\) is found, we -can iterate the method for trees of depth 1 over all -\(i \in [0, i_\text{max}]\). - -Further generalisations to arbitrary depths are straightforward, -provided that - -\begin{itemize} -\item - all the leaves are at the same depth -\item - at each depth, we can require a certain maximal gap -\end{itemize} - -\paragraph{Retrieving Delegation Information} - -After the wallet software has determined the set of addresses that -belong to it via the payment keys, it needs to set its delegation -preference. In order to do so, it compares the stake address references -of its addresses. - -\begin{description} -\item[If the wallet consists of base and/or addresses using the same - stake address] the wallet should look whether there is a stake address - registration and delegation certificate for this key. If there are, - and the delegation certificate points to an active stake pool, the - wallet should set its delegation preference to use pointer addresses - to the same stake address, and inform the user of this - choice. Otherwise -- if the stake address is unregistered, or there is - either no delegation certificate or one that does not point to an - active pool -- it should inform the user that the stake is currently - undelegated, and that they should consider delegating to receive - rewards and add to the stability of the system. - -\item[If the wallet consists of addresses with different stake addresses] - the wallet should repeat the process above for all the stake addresses, - present the list of stake pools that are delegated to by the wallet, - and ask the user to pick one for future addresses, as well as - provide an option to re-delegate all funds to that pool. -\end{description} - -After setting the delegation preferences of the newly restored wallet, -the wallet software should encourage the user to visit the delegation -centre to make sure that this choice is still competitive. - -\subsubsection{Maximal Address Gap} -\label{maximal-address-gap} - -As explained above, the wallet recovery process depends on a defined -constant for the maximal address gap. A value of \(i>0\) allows a wallet -owner to create several addresses at once which do not have to be -processed in order. The wallet software needs to be aware of this -constant so that it will not create undiscoverable addresses and so that -it can warn the owner when it reaches the limit. - -By default, the maximal address gap will be \(i=20\). Wallets can -allow using a custom value (which should be convenient for exchanges -or merchants), but when they do, the custom value will have to be -known during wallet restoration. - -\section{Delegation Scenarios} -\label{delegation-scenarios} - -\subsection{Stake Pool Registration} -\label{stake-pool-registration} - -Publicly announcing a stake pool for other people to delegate to requires two -steps: posting a stake pool registration certificate to the blockchain, and -providing \emph{pool metadata}, additional information about the pool. The -certificate contains all the information that is relevant for the execution of -the protocol (public key hashes, cost, margin, and pledge) as well as the -content hash of the metadata, while the metadata will be displayed to end users -by their wallet. For specifics about the metadata, see -\cref{stake-pool-metadata}. If no metadata is provided, the stake pool is -considered private, and will not be displayed in wallets. - -A stake pool operator can change the costs and margin of the pool by -replacing the registration certificate of the pool with a new -one. This allows operators to react, for example, to a change in its -operational costs or the exchange rate of ada. - -The rewards that a stake pool gets depend on a pledge of funds that -the stake pool owner(s) provide. This adds a cost to creating a -competitive stake pool, and protects against Sybil attacks on the -stake pool level -(\cref{sybil-attack-protection-at-stake-pool-level}). In order to -differentiate between delegated and pledged stake, the stake pool -operator will include a list of stake addresses, the owner stake addresses, -in the certificate. Stake delegated from any of the owner stake addresses will be -counted towards the stake pledged by the owner(s). Note that this -still requires delegation certificates to be posted\footnote{We also - contemplated \emph{automatically} counting the stake controlled by - any owner stake address - towards the pledge, but that complicates the design, since we had - to forbid any of those addresses from posting valid delegation - certificates to prevent double delegation. Imposing a special - treatment of those addresses would also be a violation of the design goal - from \cref{no-special-wallet-for-stake-pool-operators}.}. -Using a \emph{list} of owner stake addresses allows for stake pool operators -to use multiple accounts/wallets for delegating the stake they -pledged. It also allows a group of people combining their stake to -form a competitive pool, without losing any control over their funds -(see also the discussion in \cref{multiple-owners}). - -A stake pool operator will indicate, in the stake pool registration -certificate, the amount of stake that the owners pledge to -the pool, when registering a pool. It is important that the amount -pledged is registered in the certificate: otherwise, -an adversarial stake pool operator could circumvent the Sybil protection -of the pledge mechanism, by pledging stake to a pool until it attracted stake, -and then simply pledging the stake to the next pool. The pledge will be -enforced during the reward calculation: pools where the owners do not meet the -pledge in a given epoch will earn no rewards for that epoch. Note that this affects \emph{all} pool rewards, both for the operator and for pool members. - -Note that it will still be possible for a stake pool operator to decrease the -amount of stake that they pledge to the pool, but this will require them to post -a new certificate, which will notify the stakeholders that delegated to the pool -(if it reduces the desirability of the pool), possibly triggering a -re-delegation (see \cref{display-of-stake-pools-in-the-wallet}). - -\emph{Remark}: Due to the nature of our incentives mechanism (see -\cref{design-of-incentives}), very large stakeholders are -incentivised to split their stake and create several pools. For a future -version of Cardano, we may facilitate this by allowing such -stakeholders to set up all their pools with a single certificate. For -the present version, however, these pools will have to be created -manually. This seems justified, given that there is only a handful of -such very large stakeholders and seeing as such a feature would -complicate engineering. - -\subsection{Stake Pool Metadata} -\label{stake-pool-metadata} - -The stake pool registration certificate -(see \cref{stake-pool-registration-certificates}) optionally contains a content -hash and a URL (up to 64 bytes), pointing to a JSON object with the following -content: - -\begin{description} -\item[A Ticker] - of 3-5 characters, for a compact display of stake pools in a - wallet. -\item[A Name] - of up to 50 characters. -\item[A Short Textual Description] - of up to 255 characters. -\item[A URL] - to a homepage with additional information about the pool. -\end{description} -All characters in the metadata will be UTF8 encoded, as per the JSON -specification. The metadata is restricted to have a total size of no more than -512 bytes, including all JSON encoding overheads. - -The stake pool operators are responsible for serving this data at the URL -provided in the stake pool registration certificate. However, wallets should not -retrieve the data for each stake pool at those individual URLs. Not only would -that be inefficient, it would also allow malicious actors to slow -down all wallets by intentionally delaying the response of their server. -Instead, metadata will be cached on \emph{metadata proxy servers}. - -Those proxy servers will query the metadata URLs in the stake pool registration -certificates, and cache the metadata. The wallet will then retrieve the -metadata for pools it needs to display from one of the proxy servers, instead -of having to send a request to each of the pool's metadata URLs. - -Those servers are simple, and in particular, they require relatively little -trust: because of the content hash, someone running a proxy server can not -display forged metadata. The worst thing they can do is filter the list of stake -pools. - -In order to avoid those proxy servers to become a point of centralisation of the -system, it is encouraged that third parties (stake pools and other members of -the community) should also run metadata proxy servers. Wallets should be -configurable to query a number of those proxy servers. - -Another function that the metadata proxy servers provide is filtering malicious -entries: it is possible to embed a variety of malicious content in the metadata, -and in particular via the link to the stake pool's homepage. Should it become -known that a particular pool hosts dangerous or illegal -content\footnote{for example phishing or Trojan software, with the purpose of - infecting the computer the wallet is running on}, maintainers of -a metadata proxy can filter that entry and not provide it to wallets. This is an -advantage over writing the metadata directly to the chain, in which case there -would be no way to protect wallet users from visiting malicious sites directly -from their wallet. - -\subsection{Display of Stake Pools in the Wallet} -\label{display-of-stake-pools-in-the-wallet} - -The wallet software will maintain a set of all the active stake pools. For each, -it will perform a lookup of the metadata (which is indexed by the metadata hash) -to display to the user. - -In order for stakeholders to be able to delegate their stake to a pool, the -wallet will provide a listing of stake pools, in a section of the UI called the -\emph{delegation centre}. In order to make it easy for users to do a rational -choice when delegating, this listing will be ordered by the rewards that the -user should expect from delegating to each pool. In particular, we use the -non-myopic pool member rewards, \cref{eq:non-myopic-member-rewards} in -\cref{pool-desirability-and-ranking}. Since this ordering depends not only on -the costs and margin set by the stake pool operator, but also on the performance -of the pool and on the amount of stake that it already has accumulated, this -will promote pools that are reliable, have not yet reached saturation, and have -a low cost and margin. In other words, the users selfish interest to pick a -stake pool that is promising large rewards is aligned with the goal of placing -the system in the hands of a number of reliable stake pool operators, and of -avoiding centralisation. The influence of the stake pool operator's pledge on -the rewards provides protection against a Sybil attack on the stake pool level -(\cref{sybil-attack-protection-at-stake-pool-level}). - -When calculating the expected rewards, the wallet will use the -best data available: -\begin{itemize} -\item The cost, margin, and pledged stake will be taken from the most - recent stake pool registration certificate of the pool. -\item The performance of the pool will be estimated using historical data, - as described in \cite{stake-pool-ranking}. -\item The stake of the pool, and the amount of stake that the owners - of the pool contribute (in order to check whether their pledge is - honoured) is taken from the current stake distribution (calculated - from the current UTxO set and delegation relation on demand when the - wallet performs the ordering). -\item The member stake \(t\) in \cref{eq:non-myopic-member-rewards} is taken to - be the stake that the user is about to delegate. - - For listings outside of the wallet, for informational purposes of which pools - are generally desirable, we can instead divide off the factor \(t\) in - \cref{eq:non-myopic-member-rewards}\footnote{Effectively taking the constant - term in the Taylor expansion in \(t\)} and get the reward per stake - delegated to a pool, assuming that the delegated stake is small enough to not - push the pool over the saturation threshold. -\end{itemize} - -When the wallet is running and the user has delegated to a stake pool, the -wallet should monitor the non-myopic rewards regularly. Should the stake pool -become less favourable (by missing blocks, or even becoming inactive, or by -changing its cost/margin), the wallet should notify the user, and ask them to -consider changing their delegation. - -We had considered adding some jittering to the ordered list of stake pools, in -order to prevent a situation where a slight difference in the expected rewards would -lead to stakeholders all delegating to the same, slightly more preferable, pool. -We decided against this, since -\begin{itemize} -\item Our incentive structure will have stake pools saturating anyway. -\item Randomising the order of display makes it more difficult for stake pool - operators to behave rationally when setting their cost and margin. -\end{itemize} - -\subsection{Basic Delegation} -\label{basic-delegation} - -Delegating stake requires posting two certificates to the chain: a -stake address registration, and a delegation certificate. Posting those -certificates requires funds, so a user setting up their first wallet -will need a bootstrapping mechanism. This mechanism relies on the -possibility of base addresses using a stake address before posting the -registration certificate for that key. - -\paragraph{Bootstrapping a New Wallet} -A user about to receive their first ada (whether through redemption, -from a trade on an exchange, or some other source), will set up a new -wallet, and create a value address to receive those funds. This address -will refer to a stake address (by value) that is generated by the -wallet, but not yet registered on the chain. - -After receiving the initial funds, the user can then delegate, by posting a -stake address registration certificate, as well as a delegation certificate for -this stake address. Once the stake address is registered, newly created -value addresses can refer to it by pointer instead. - -As mentioned in \cref{pointer-address}, there is a slight possibility that the -stake address registration certificate can be lost due to a fork. In that case, -the pointer addresses would no longer point to a valid certificate. Such -addresses are considered valid addresses for the purpose of moving funds, but -ignored when determining the stake distribution (just like an enterprise -address). The wallet software should detect usage of such broken pointer -addresses, and ask and assist the user to create a new stake address -registration, and to move the funds to value addresses referring to this new -stake address. Wallets can try to avoid this situation, by either allowing a -number of blocks between transactions \(t_1\) registering a stake address and -\(t_2\) moving funds to a pointer address for this stake address, or by using an -output of \(t_1\) as an input to \(t_2\). - -\paragraph{Additional Accounts} -The user might want to create an additional account in their wallet -later on, using a different stake address, to prevent linkability of all -their addresses. In principle, they could use the funds that are -already in their wallet to post the stake address registration certificate -for the new account, and only have pointer addresses in the new -account. However, this provides a strong hint for observers of the -chain that the two accounts belong to the same person, so it is -recommended to also bootstrap additional accounts in the manner -described above. - -\paragraph{Re-Delegating} -Re-delegating the funds belonging to one stake address of the wallet -requires posting a single transaction, containing a delegation -certificate. This will only incur the usual transaction fees. In -particular, the deposit paid for the first delegation certificate -(which is thus overridden) will be good for the new -certificate. Consequently, re-delegation does not carry a heavy cost, -as required by \cref{cheap-re-delegation}. - -\subsection{Delegation of Cold Wallets} -\label{delegation-of-cold-wallets} - -Cold wallets are to be used for long-term storage of larger funds, so -it is important that we encourage owners of cold wallets to -participate in the PoS through the delegation mechanism. This will -require a second, non-cold, wallet, to post the initial certificates, -as well as any delegation certificates for re-delegation. There are -two scenarios to be considered: - -\begin{description} -\item[The User Does Have a Non-Empty Wallet Already] Suppose a user - owns a wallet with some funds, and wants to move most of those to a - cold wallet, such as a paper wallet. They will use Daedalus to - create this cold wallet. Daedalus can offer to post the stake address - registration certificate for the stake address of the cold wallet upon - creation of the wallet, and to store that stake address with the - non-cold wallet, so that the user will be able to sign and post - delegation certificates for the cold wallet. In this case, all - addresses in the cold wallet can be pointer addresses. -\item[The User Does Not Control Any Funds When Creating the Cold Wallet] In this - case, the user will use Daedalus to create a cold wallet, which will use a - base address. Daedalus will provide the stake address, including the signing - key(s), to the user, so that they can post a registration certificate, and - delegation certificates, whenever they have funds in a non-cold wallet. -\end{description} - -\subsection{Self Delegation} -\label{individual-staking} - -Stakeholders should not be forced to delegate their stake to a -pool. Instead, they should have the option of running their own node, -using their own stake. - -Technically, such stakeholders will create a \emph{private pool}, which is just -a stake pool with margin \(m=1\), and without providing metadata. Such pools -will pay all rewards to the pool operator (which is not a special rule, but just -the effect of having a margin of 1), and they will not be shown in the stake -pool directory in Daedalus (although even if they were, they would always be -listed at the very bottom, since they would not promise any rewards to their -members). - -We had looked at other options that would not require individual -stakeholders to register a pool, but they either complicated the -design, or made it possible for free riders to contribute stake and -get a share of the rewards by using suitably chosen addresses. The -mechanism of private pools adds no additional complexity to the -delegation system (the only added work is to suppress their listing in -Daedalus). Optionally, the front-end could even set up (and retire) a -private pool at the press of a button, but this is not a must-have -feature for the initial release. - -\section{Design of Incentives} -\label{design-of-incentives} - -\subsection{Overview of Incentives} -\label{overview-of-incentives} - -On a high level, the goal of the incentives mechanism is to incentivise -stakeholders to follow the protocol and thereby to guarantee the secure and -efficient operation of Cardano. - -More specifically, we want a majority of stake holders to -delegate to a number \(k\) of \emph{stake pools} (where \(k\) is a -parameter of the system -- see \cref{parameters}). The -\emph{pool operators} of those stake pools are supposed to - -\begin{itemize} -\item - fulfill their Ouroboros protocol participation responsibilities, - such as being online during slots for which they are a slot leader and - then creating a block containing as many transactions as possible. -\item - provide additional network infrastructure. -\end{itemize} - -Other stakeholders can then \emph{delegate} their stake to a registered -pool. Stakeholders are also free to either run their own private -pools, or not take part in the protocol at all. In the latter case, -their stake is ignored, and they will not receive any rewards. - -Incentives are provided in the form of \emph{social pressure} (by making -pool operator performance and adherence to the protocol public), but -mostly by \emph{monetary incentives} in the form of ada. - -A design goal of the mechanism is to align monetary incentives as -perfectly as possible with protocol adherence: If every stakeholder -follows their own financial interests, the system should settle into a -desirable state. If possible, there should never be a conflict of -interest between maximizing rewards and ``doing the right thing''. - -Rewards will be paid for each epoch and will be drawn from the following -sources: - -\begin{itemize} -\item - monetary expansion -\item - transaction fees -\item - decayed deposits. -\end{itemize} - -All rewards will be collected in a (virtual) pot, and then shared amongst stake -pools depending on their contribution to the operation of the system. The main -factor will be the relative stake that a pool controls. However, there will be -several refinements to this general principle: - -\begin{itemize} -\item - Rewards for a stake pool will be capped when the pool gets too large - (otherwise, the system would converge towards a state with all stake - being delegated to one giant stake pool). -\item - Rewards will decrease if a pool operator does not create the blocks they - are supposed to create. -\item - Pool operators will be compensated for their trouble and risk by - \begin{itemize} - \item - reimbursing their costs and - \item - giving them a \emph{margin} before distributing the remaining pool rewards - proportionally amongst pool operator and pool members. (Pool operators - publicly declare their cost and margin, which they can freely choose.) - \end{itemize} -\item - Pool rewards will slightly increase with the stake their owner(s)\footnote{For - a discussion of stake pool owners vs stake pool operators see - \cref{multiple-owners}.} pledge to delegate to the pool. There is no minimal - stake required to create a pool -- anybody can do this. However, pools where - the owners contribute more stake will get slightly higher rewards. (This will - discourage pool owners from splitting their stake to operate several pools. It - will also help preventing Sybil attacks, where an attacker with low stake - tries to gain control over a majority of stake by creating a lot of pools with - low costs.) -\end{itemize} - -Our game theoretic analysis has shown that if stakeholders try to -maximize their rewards in a ``short-sighted'' (\emph{myopic}) way (pool -members joining the pool with the highest rewards \emph{at this moment}, -pool operators raising their margins to get higher rewards \emph{at this -moment}), chaotic behaviour will ensue. - -Therefore, we will calculate \emph{non-myopic} rewards. Wallets will display -pools ranked by those non-myopic rewards, thus guiding stakeholders to behave in -a way that will benefit them in the long run. Our analysis shows that if -everybody follows this advice, the system will stabilize in a \emph{Nash - Equilibrium}, meaning that no stakeholder will have incentive to act -differently. - -Rewards to both the pool operators and the pool members will be calculated and -distributed by the system some time after the end of an epoch. No manual -intervention (transfer of funds) will be necessary. In particular, a pool -operator cannot simply refuse to share rewards with the stake pool members. - -\subsection{Parameters} -\label{parameters} - -There will be a couple of parameters whose values have to be set in -advance: - -\begin{itemize} -\item - The desired number of pools \(k\in\mathbb{N}_+\). -\item - The influence \(a_0\in[0,\infty)\) the stake pledged by the owners should have - on the desirability of the pool. Small values of \(a_0\) indicate little - influence. -\item - The \emph{expansion rate} \(\rho\in[0,1]\), determining the fraction - of still available ada that will be created per epoch. -\item - The fraction \(\tau\in[0,1]\) of rewards going to the treasury. -\end{itemize} - -We will discuss -in \cref{deciding-on-good-values-for-the-parameters} how one -could approach choosing reasonable values for these. - -\subsection{Reminder: Stake Pool Registration} -\label{reminder-stake-pool-registration} - -Recall from \cref{stake-pool-registration} that stakeholders -who wish to operate a stake pool have to \emph{register} their -pool on the blockchain. From the point of view of reward calculation -(see \cref{epoch-rewards}), the following information has to -be included in the registration: - -\begin{itemize} -\item - The \emph{costs} of operating the pool (in ada/epoch). -\item - The pool operator \emph{margin} (in \([0,1]\)), indicating the additional - share that the pool operator will take from the pool's rewards (after the - costs have been deducted) before splitting rewards amongst members (see - \cref{reward-splitting-inside-a-pool}). -\item - Proof of \emph{ada pledged to the pool}, as a list of stake addresses that - belong to the owner(s) of the pool. -\end{itemize} - -There will be no lower bound on the amount of ada that has to be -pledged, but we will see in \cref{pool-rewards} that pool -rewards will increase with this amount. This is necessary to prevent -people with low stake from registering many pools, gaining control over -a lot of stake and attacking the system (see requirement -\ref{sybil-attack-protection-at-stake-pool-level} and \cref{stake-pool-registration}). - -\subsection{Epoch Rewards} -\label{epoch-rewards} - -There will be three sources of rewards for an epoch: \emph{transaction - fees}, non-refundable parts of \emph{deposits}, and \emph{monetary - expansion}. - -\subsubsection{Transaction Fees} -\label{transaction-fees-1} - -All transaction fees from all transactions from all blocks created -during the epoch will be added to the rewards pot of that epoch. - -\subsubsection{Deposits} -\label{deposits-1} - -As explained in \cref{fees-deposits}, a part of the deposits for -certificates and UTxO entries are non-refundable, and contribute to -the rewards pot instead. - -\subsubsection{Monetary Expansion} -\label{monetary-expansion} - -Every epoch, the total amount of ada in circulation \(T\) will be increased by -adding ada to the rewards pot. To ensure the amount of ada never exceeds a -finite, specified limit \(T_\infty\), the increase will reduce exponentially. -Also, the increase will depend on the number of blocks that have been produced -during the epoch. Specifically, each epoch, the contribution from monetary -expansion to the rewards pot is given by -\[\min(\eta, 1) \rho \left(T_\infty - T\right)\,,\] -where -\begin{itemize} -\item[\(\eta\)] is the ratio between the number of blocks that have been produced - during the epoch, and the expectation value\footnote{Note that in Ouroboros - Classic, this is just the number of slots in an epoch, but for instance in - Praos, where we do not always have one leader per slot, we only have a - notion of how many blocks we expect per epoch \emph{on average}.} of blocks - that should have been produced during the epoch under ideal conditions (i.e., - no forks, no missed blocks). - - For Ouroboros Classic~\citep{ouroboros_classic}, the number of expected blocks - will be the number of slots in an epoch, while for Ouroboros Praos, we will - use the number of slots per epoch times the active slots coefficient \(f\) - (see Equation (1) in \citep{ouroboros_praos}). -\item[\(\rho\)] is the monetary expansion parameter. -\item[\(T_\infty\)] is the maximal amount of ada to ever be in circulation - (i.e., \(45\cdot10^{9}\) ada). -\item[T] is the amount of ada in circulation at the beginning of the epoch for - which we want to calculate the rewards pot. -\end{itemize} - -The dependence on \(\eta\) incentivises cooperative behaviour, and in particular -discourages the pools sabotaging each others blocks. Note that \(\eta\) can -exceed \(1\) when there are more blocks produced in an epoch than would be -expected on average. But the product \(\min(\eta, 1)\rho\) is always bounded by -\(1\), which is necessary to ensure we never exceed \(T_\infty\) ada in -circulation. - -Since \(T_\infty\) is finite, rewards from monetary expansion will -decrease over time. This has to be compensated by - -\begin{itemize} -\item - rising transaction fees when more and more people use the system and -\item - higher exchange rates from ada to USD when the system becomes more - valuable. -\end{itemize} - -Note that the fees that have been collected during the Byron era, -where all nodes have been provided by IOHK, Emurgo, and the Cardano -Foundation, have not been paid out. Those fees have reduced the amount -of ada currently in circulation, but they did not change -\(T_\infty\). Effectively, those fees will be distributed amongst -future stakeholders via monetary expansion. - -\subsubsection{Treasury} -\label{treasury} - -A fraction \(\tau\) of the rewards pot for each epoch will go to the -\emph{treasury}. - -Note that we do not have a full treasury system yet, and implementing it -requires further research. Nevertheless, we start collecting funds for the -treasury already, in a pot called the \(T\) pot. Once the treasury is -implemented, funds in the \(T\) pot will be made available for decentralised -development of the system. - -\subsection{Reward Splitting} -\label{reward-splitting} - -In this section we describe how the total rewards \(R\) from one epoch -are split amongst stakeholders. - -These calculations proceed in two steps: First, rewards are split -amongst \emph{pools}. Next, each pool splits its share of \(R\) amongst -its operator and its members. - -\subsubsection{Relative Stake: Active vs Total} -As explained in \cref{overall-stake-distribution}, we distinguish the amount of -\emph{active stake} and the \emph{total stake}. Stake is only considered active -when it is correctly delegated to a non-retired pool. Whenever we look at -fractions of stake (in the leader election, or when distributing rewards -according to stake), we need to specify whether we normalise to the active or to -the total stake. - -\begin{description} -\item[Leader Schedule] For the purpose of determining the leader schedule, we - use the construction in \cref{overall-stake-distribution}, which yields the - stake relative to the amount of \emph{active} stake. - - The benefit of doing this is that the chain growth will be independent of how - many stakeholders do delegate their stake. -\item[Rewards Distribution] When we distribute rewards depending on how much - stake any party provides, we will always use the stake relative to the - \emph{total} stake. - - That way, we ensure that the share of the rewards that any one party gets does - not change when the amount of active stake changes. Not only is this more - predictable for individual players, it also prevents creating an incentive to - block new delegation certificates. If we were using the stake relative to the - active stake, then any player who already had active stake would lose rewards - when other players started delegating their stake, which could lead to a - collective censorship of transactions with delegation certificates. -\item[Performance Estimations] The rewards of a pool will depend on how well - they perform, i.e., on how many blocks they produce, and on how many blocks we - would expect a pool with their stake to produce - (\cref{stake-performance-and-block-production}). - - Since leader election depends on the fraction of \emph{active} stake that a - pool controls, we have to normalise to active stake when estimating - performance as well. -\end{description} - -\subsubsection{Stake, Performance, and Block Production} -\label{stake-performance-and-block-production} - -The incentives scheme developed in~\citep{bkks2018} distributes rewards solely -on the basis of the size of pools in terms of the stake that they control (and -the stake pledged by the owner(s)). This does eliminate any incentive for a pool -to try to sabotage another pool (be it through ignoring their blocks, or even by -mounting DoS attacks on their nodes). However, it does not incentivise pool -operators to ensure that their pool performs well (i.e., produces most of the -blocks it is eligible to create). This invites free-riders, pools that rely on -other pools to maintain the system, and collect rewards without doing any work. - -For Cardano, we will stay close to the scheme of~\citep{bkks2018}, but we will -also take into account the \emph{performance} of a pool. Unfortunately, tracking -the performance of a pool is not trivial in protocols without a public leader -schedule, like Ouroboros Praos. - -In order to get a handle on the performance of a pool, let us consider the -fraction \(\beta\) of all blocks within a given epoch that the pool created. - -There are multiple factors that influence \(\beta\): the stake of the pool, how -well it performs, and some randomness due to the leader election and the overall -performance of the other pools and the network. We can write\footnote{We assume - a linear relation between stake and the number of blocks that a pool is - eligible to create. Strictly speaking, this is not the case for Ouroboros - Praos. However, the error when linearising the leader election function is - small, particularly for the range of parameters we are considering for - Cardano.} -\[\beta = \sigma_a p r_e \,,\] -where -\begin{enumerate} -\item[\(\sigma_a\)] is the relative stake \(\sigma\) of the pool (the fraction of - the \emph{active} stake that the pool controls), -\item[\(p\)] is the performance \(p\) of the pool, i.e. the fraction - \[ - p = \frac{n}{\max(N,1)} - \] - of the number \(n\) of blocks it successfully added to the chain and the - number \(N\) of slots it was elected as a leader, and -\item[\(r_e\)] is a factor that captures the relation between the relative stake - \(\sigma_a\) of the pool, the number \(N\) of slots it is elected as a leader, - and the total number \(\Nbar\) of blocks that were added to the chain during - the epoch. To be precise, we have - \[r_e = \frac{N}{\sigma_a \max(1, \Nbar)}\,.\] - The factor \(r_e\) captures random influences on \(\beta\): the - randomness in the leader election that influences \(N\), and the randomness - both from the leader election and the bunch of random influences on - \(\Nbar\) (leader election, forks, performance of the network and other - pools). -\end{enumerate} - -If we insert the definitions of \(p\) and \(r_e\) into \(\beta\), we find that -\[ -\beta = \sigma_a \frac{n}{\max(N,1)} \frac{N}{\sigma_a \max(1, \Nbar)} -= \frac{n}{\max(1, \Nbar)}\,, -\] -which is indeed the fraction of blocks produced by the pool\footnote{When - cancelling \(N\) and \(\max(N,1)\), note that for \(N=0\), also \(n=0\), and - the equation trivially holds.}. - -In Ouroboros Praos, we can observe \(\sigma_a\), \(n\), and \(\Nbar\), but -we do not have a direct handle on any of \(N\), \(r_e\), or \(p\). From the -observables, we can extract -\begin{equation} - \beta = \frac{n}{\max(1, \Nbar)}\,. - \label{eq:beta} -\end{equation} -While the true performance \(p\) is not accessible, we can define and measure -the \emph{apparent performance} -\[ -\pbar := p r_e = \frac{\beta}{\sigma_a}\,. -\] -We will use the apparent performance \(\pbar\) as a proxy for the performance -when determining the rewards for pools. - -\subsubsection{Pool Rewards} -\label{pool-rewards} - -For a given epoch, the \emph{optimal} rewards for a pool are -\begin{equation} - f(s,\sigma) := - \frac{R}{1 + a_0} - \cdot - \left(\sigma' + s'\cdot a_0\cdot\frac{\sigma' - - s'\frac{z_0-\sigma'}{z_0}}{z_0}\right)\,. - \label{eq:optimal-rewards} -\end{equation} -Here - -\begin{itemize} -\item - \(R\) are the total available rewards for the epoch (in ada). -\item - \(a_0\in[0,\infty)\) is a parameter determining owner-stake influence on pool - rewards. -\item - \(z_0:=1/k\) is the size of a saturated pool. -\item - \(\sigma':=\min(\sigma, z_0)\), where \(\sigma\) is the relative stake of the - pool (note that this is relative to the \emph{total stake}, not the active - stake). -\item - \(s':=\min(s, z_0)\), where \(s\) is the relative stake of the pool - owner(s) (the amount of ada pledged during pool registration, - see \cref{stake-pool-registration}). -\end{itemize} - -As mentioned in \cref{stake-pool-registration}, the rewards for a pool -where the owner(s) fail to honour their pledge of stake will receive -zero rewards, and so will have $f=0$. - -\emph{Note that \(\sigma\) includes the stake \(s\) pledged by the pool -owner(s).} For example, let us assume that the total existing supply of -ada is \(T=31,000,000,000\), and consider a pool whose owners -pledged ada 15,500,000 and who attracted another ada 15,500,000 from their -pool members. Then \[ -\begin{array}{rcccl} - s & = & \displaystyle\frac{15,500,000}{31,000,000,000} & = & 0.0005\;\text{and} \\[5mm] - \sigma & = & \displaystyle\frac{15,500,000 + 15,500,000}{31,000,000,000} & = & 0.001. \\ -\end{array} -\] - -The \emph{actual} rewards take the apparent performance into account, and are -given by -\footnote{ - Note that since - \( \pbar\sigma' = \beta\tfrac{\sigma'}{\sigma}\), this nearly amounts to replacing - \(\sigma'\) by \(\beta\tfrac{\sigma'}{\sigma}\) in \cref{eq:optimal-rewards}, i.e. - to rewarding pools based on the number of blocks that they produced, rescaled - by a punishing factor \(\sigma'/\sigma\) for pools that grow beyond \(z_0\). -} -\[ -\hat{f}(s,\sigma,\pbar) := \pbar f(s, \sigma) -\,. -\] - -Note that -\begin{itemize} -\item - Even when a pool's true performance is \(1\), its actual rewards might be less - than its optimal rewards, because of the randomness in \(r_e\). Likewise, - sometimes a pool's actual rewards will be \emph{higher} than their optimal - rewards, if they are lucky in the leader election process. - - These effects will balance each other, so that a well performing pool will get - their optimal rewards \emph{on average over multiple epochs}. - -\item - We will always have - \[ \sum_{\text{pools}} \hat{f}(s,\sigma,\pbar) \leq R \,, \] - so that all actual rewards can be paid from the rewards pot\footnote{ To prove - this, use that \(s' \leq \sigma' \leq z_0\), and - \(\sum_{\text{pools}}\beta=1\).}. - - The difference \(R - \sum_{\text{pools}} \hat{f}(s,\sigma,\pbar)\) will be - sent back to the reserves. -\end{itemize} - -\subsubsection{Reward Splitting inside a pool} -\label{reward-splitting-inside-a-pool} - -After the rewards for a pool have been determined according to -\cref{pool-rewards}, those rewards are then split -amongst the \emph{pool operator} and the \emph{pool members}. - -Consider - -\begin{itemize} -\item - \(\hat{f}\), the \emph{pool rewards}, -\item - \(c\), the pool \emph{costs} (in ada), -\item - \(m\in[0,1]\), the \emph{margin}, -\item - \(\sigma\in[0,1]\), the relative stake of the pool. -\end{itemize} - -Note that the values \(c\) and \(m\) for registered pools are available -from the pool registration, see \cref{stake-pool-registration}. - -\paragraph{Pool Operator Reward} - -The \emph{pool operator reward \(r_\mathrm{operator}\)} (in ada) is calculated -as follows (where \(s\in[0,1]\) is the stake delegated to the pool by its -owner(s)): -\[ r_\mathrm{operator}(\hat{f}, c, m, s, \sigma) := \left\{ - \begin{array}{ll} - \displaystyle\hat{f} & - \text{if $\hat{f}\leq c$,} \\ - \displaystyle c + (\hat{f} - c)\cdot\left(m + (1-m)\cdot\frac{s}{\sigma}\right) & - \text{otherwise.} - \end{array} - \right. -\] - -\paragraph{Pool Member Reward} -\label{pool-member-reward} - -The \emph{pool member reward \(r_\mathrm{member}\)} (in ada) is -calculated as follows (where \(t\in[0,1]\) is the stake of the pool -member): \[ - r_\mathrm{member}(\hat{f}, c, m, t, \sigma) := - \left\{ - \begin{array}{ll} - \displaystyle 0 & - \text{if $\hat{f}\leq c$,} \\ - \displaystyle (\hat{f} - c)\cdot(1-m)\cdot\frac{t}{\sigma} & - \text{otherwise.} - \end{array} - \right. -\] - -\subsection{Non-Myopic Utility} -\label{non-myopic-utility} - -It would be short-sighted (``myopic'') for stakeholders to directly use the -reward splitting formulas from \cref{reward-splitting}, and base their -delegation choice on those. They should instead take the long-term -(``non-myopic'') view. To this end, the system will calculate and display the -``non-myopic'' rewards that pool operators and pool members can expect, thus -supporting stakeholders in their decision whether to create a pool and to which -pool to delegate their stake. - -The idea is to first rank all pools by ``desirability'', to then assume -that the \(k\) most desirable pools will eventually be saturated, -whereas all other pools will lose all their members, then to finally -base all reward calculations on these assumptions. - -\subsubsection{Pool Desirability and Ranking} -\label{pool-desirability-and-ranking} - -First we define the \emph{desirability} of a pool with pledged owner stake -\(s\), costs \(c\) and margin \(m\). Simply put, this number indicates how -``desirable'' or ``attractive'' this pool is to (potential) members. - -If the pool is \emph{saturated}, the pool rewards are \[ - \tilde{f}(s, \pbar) := - \hat{f}(s,z_0,\pbar)= - \frac{\pbar R}{1 + a_0} - \cdot - \left(z_0 + \min(s,z_0)\cdot a_0\right). -\] - -The \emph{desirability} is then defined as \[ - d(c, m, s, \pbar) := - \left\{ - \begin{array}{ll} - \displaystyle 0 & - \text{if $\tilde{f}(s,\pbar)\leq c$,} \\ - \displaystyle\left(\tilde{f}(s,\pbar) - c\right)\cdot(1-m) & - \text{otherwise.} - \end{array} - \right. -\] To determine a pool's \emph{rank}, we order pools by decreasing -desirability. The most desirable pool gets rank 1, the second most -desirable pool gets rank 2 and so on. - -We predict that pools with rank \(\leq k\) will eventually be saturated, -whereas pools with rank \(>k\) will lose all members and only consist of -the owner(s). - -\subsubsection{Non-Myopic Pool Stake} -\label{non-myopic-pool-stake} - -Consider a pool with pledged owner stake \(s\), total stake \(\sigma\) and rank \(r\). -Consider also a potential delegator with stake \(t\). -We define the \emph{non-myopic stake} \(\sigma_\mathrm{nm}\) as -\[ - \sigma_\mathrm{nm}(s,\sigma,t,r) := - \left\{ - \begin{array}{ll} - \max(\sigma+t,z_0) & - \text{if $r\leq k$,} \\ - s+t & - \text{otherwise.} - \end{array} - \right. -\] - -\subsubsection{Non-Myopic Pool Operator Rewards} -\label{non-myopic-pool-operator-rewards} - -The non-myopic pool operator rewards of a pool with costs \(c\), margin \(m\), -pledged owner stake \(s\), stake \(\sigma\), rank \(r\), and apparent -performance \(\pbar\) are -\[ - r_\mathrm{operator, nm}(c, m, s, \sigma, r, \pbar) := - r_\mathrm{operator}\Bigl( - \hat{f}\bigl(s,\sigma_\mathrm{nm}(s,\sigma,0,r), \pbar\bigr), - c, m, s, \sigma_\mathrm{nm}(s,\sigma,0,r)\Bigr). -\] - -\subsubsection{Non-Myopic Pool Member Rewards} -\label{non-myopic-pool-member-rewards} - -The non-myopic pool member rewards of a pool with costs \(c\), margin \(m\), -pledged owner stake \(s\), stake \(\sigma\), rank \(r\), and apparent -performance \(\pbar\), for a member contributing member stake \(t\), are -\begin{equation} - r_\mathrm{member, nm}(c, m, s, \sigma, t, r, \pbar) := - r_\mathrm{member}\Bigl(\hat{f}\bigl(s,\sigma_\mathrm{nm}(s,\sigma,t,r), - \pbar\bigr), - c, m, t, \sigma_\mathrm{nm}(s,\sigma,t,r)\Bigr). -\label{eq:non-myopic-member-rewards} -\end{equation} - -\subsubsection{Replacing Apparent Performance} -\label{average-apparent-performance} - -Using the apparent performance of a pool \emph{within the last epoch} is not -suitable for determining the long-term expected rewards for delegating to a -pool. Rather, one should use the estimate the performance using the historical -data. This avoids preferring or discarding a pool just because it performed -exceptionally well or bad in one particular epoch. If the ratio of the number of -stake pools and the number of expected blocks per epoch is large, this becomes -even more important, since the apparent performance in a single epoch would be -bound to fluctuate quite a bit. Our method of estimating stake pool performance -is explained in \cite{stake-pool-ranking}. - -\subsection{Utility} -\label{utility} - -When deciding whether to operate a stake pool or participating in an existing -pool as a member, stakeholders should not look at the plain rewards. Instead, -they should look at the \emph{utility}, the difference between rewards and -costs. The simulations in~\citep{bkks2018} use the utility as a basis for -rational decisions of the players. - -For the purpose of this document, it is sufficient to consider the rewards: for -pool members, they are identical (since they do not have to consider running -costs), and we do not plan the wallet to assist pool operators in setting up a -stake pool or defining the cost and margin parameters (at least not for the -initial release). - -\subsection{Claiming Rewards} -\label{claiming-rewards} - -All information necessary to calculate each stakeholder's rewards for -each epoch are contained in the blockchain, so there is in principle no -need to record any extra information related to the Incentives -mechanism. - -However, there is the challenge to avoid ``bloat'' caused by thousands -of ``micro payments'' from rewards after each epoch. - -This proved to be quite a challenge. In the end, we have converged to the -mechanism described in \cref{distributing-rewards}. Alternative approaches that -we considered are described in \cref{assessment-of-rewards-sharing-mechanisms} -(therein, \cref{reward-accounts-per-stake-key} is the option that we have -picked). - -\subsection{Information in Daedalus} -\label{information-in-daedalus} - -Our game theoretic analysis assumes that every stakeholder has all -relevant information available at any time. - -This means that pool \emph{costs}, \emph{margins}, average apparent performance, -and pool owners \emph{stakes}, as well as the (non-myopic) utilities derived -from these figures, have to be easily accessible, so that stakeholders can -quickly react to changes and always choose the strategy that maximizes their own -rewards. - -Daedalus will make this information readily available, as detailed in -\cref{display-of-stake-pools-in-the-wallet}. - -\subsection{Deciding on Good Values for the Parameters} -\label{deciding-on-good-values-for-the-parameters} - -We need to decide on reasonable values for the parameters \(k\), -\(a_0\), \(\rho\) and \(\tau\) (see \cref{parameters}). - -\subsubsection{\texorpdfstring{\(k\)}{k}} - -The desired number of pools \(k\) depends on the level of decentralization we -want on the one hand and network efficiency and overall costs of the Cardano -system on the other hand. A value of \(k=100\) or \(k=1000\) seems to be -reasonable. - -\subsubsection{\texorpdfstring{\(a_0\)}{a\_0}} - -As explained above, parameter \(a_0\) determines the influence that the stake -pledged by the pool owner(s) has on pool rewards. - -Our game theoretic analysis predicts that the \(k\) pools with the -highest \emph{potential}, the highest value of \[ - P(\lambda,c):=\left[z_0+a_0\cdot\min\left(\lambda,\frac{1}{k}\right)\right]\cdot\frac{R}{1+a_0}-c -\] (where \(\lambda\) is the stake pledged by the pool owner(s) and \(c\) -are the pool costs) will create the saturated pools. - -Let us consider an attacker with stake \(S < \frac{1}{2}\), who wants to -gain control over a majority of stake. This means they have to lead -\(\frac{k}{2}\) pools, committing \(\lambda=\frac{2S}{k}\) stake to -each. - -In order for their \(\frac{k}{2}\) pools to be successful, each of these -needs to have higher potential than the honest stakeholder with the -\(\frac{k}{2}\)-highest potential has. If that honest player has -committed stake \(\tilde{\lambda}\leq\frac{1}{k}\) and has costs -\(\tilde{c}\) and if our malicious attacker is willing to lie and claim -lower ``dumping'' costs \(c=r\cdot\tilde{c}\) (for \(r\in[0,1)\)), this -means \[ -\begin{split} - P\left(\frac{2S}{k}, c\right) > P(\tilde{\lambda}, \tilde{c}) - &\Longleftrightarrow - \left(z_0+a_0\cdot\frac{2S}{k}\right)\cdot\frac{R}{1+a_0}-c > \left(z_0+a_0\cdot\tilde{\lambda}\right)\cdot\frac{R}{1+a_0}-\tilde{c} \\ - &\Longleftrightarrow - a_0\cdot\frac{2S}{k}\cdot\frac{R}{1+a_0}-c > a_0\cdot\tilde{\lambda}\cdot\frac{R}{1+a_0}-\tilde{c} \\ - &\Longleftrightarrow - a_0\cdot\left(\frac{2S}{k}-\tilde{\lambda}\right)\cdot\frac{R}{1+a_0} > c-\tilde{c}=-(1-r)\cdot\tilde{c} \\ - &\stackrel{a_0>0}{\Longleftrightarrow} - \frac{2S}{k}-\tilde{\lambda} > -\frac{\tilde{c}\cdot(1-r)\cdot(1+a_0)}{R\cdot a_0} = - -\frac{\tilde{c}}{R}\cdot(1-r)\cdot\left(1 + \frac{1}{a_0}\right) \\ - &\Longleftrightarrow - S > \frac{k}{2}\cdot\left[\tilde{\lambda}-\frac{\tilde{c}}{R}\cdot(1-r)\cdot\left(1+\frac{1}{a_0}\right)\right] \\ -\end{split} -\] - -In the following tables, we can see how the choice of \(a_0\) influences -the minimal stake \(S\) needed for a successful attack for various -values of \(\tilde{\lambda}\), \(\tilde{c}\) and \(r\): - -\begin{minipage}[t]{\textwidth} - \begin{minipage}[t]{0.32\textwidth} - \footnotesize - \begin{flushleft}$\tilde{\lambda}=0.01$, $\tilde{c}=0.001$, $r=0.9$\end{flushleft} - \begin{tabular}[t]{rr} - $a_0$ & $S$ \\ - \hline - 0.010 & 0.0000 \\ - 0.020 & 0.2450 \\ - 0.030 & 0.3283 \\ - 0.040 & 0.3700 \\ - 0.050 & 0.3950 \\ - 0.060 & 0.4117 \\ - 0.070 & 0.4236 \\ - 0.080 & 0.4325 \\ - 0.090 & 0.4394 \\ - 0.100 & 0.4450 \\ - \end{tabular} - \end{minipage} - \begin{minipage}[t]{0.32\textwidth} - \footnotesize - \begin{flushleft}$\tilde{\lambda}=0.01$, $\tilde{c}=0.005$, $r=0.9$\end{flushleft} - \begin{tabular}[t]{rr} - $a_0$ & $S$ \\ - \hline - 0.050 & 0.0000 \\ - 0.100 & 0.2250 \\ - 0.150 & 0.3083 \\ - 0.200 & 0.3500 \\ - 0.250 & 0.3750 \\ - 0.300 & 0.3917 \\ - 0.350 & 0.4036 \\ - 0.400 & 0.4125 \\ - 0.450 & 0.4194 \\ - 0.500 & 0.4250 \\ - \end{tabular} - \end{minipage} - \begin{minipage}[t]{0.32\textwidth} - \footnotesize - \begin{flushleft}$\tilde{\lambda}=0.01$, $\tilde{c}=0.01$, $r=0.9$\end{flushleft} - \begin{tabular}[t]{rr} - $a_0$ & $S$ \\ - \hline - 0.050 & 0.0000 \\ - 0.100 & 0.0000 \\ - 0.150 & 0.1167 \\ - 0.200 & 0.2000 \\ - 0.250 & 0.2500 \\ - 0.300 & 0.2833 \\ - 0.350 & 0.3071 \\ - 0.400 & 0.3250 \\ - 0.450 & 0.3389 \\ - 0.500 & 0.3500 \\ - \end{tabular} - \end{minipage} -\end{minipage} - -\begin{minipage}[t]{\textwidth} - \begin{minipage}[t]{0.32\textwidth} - \footnotesize - \begin{flushleft}$\tilde{\lambda}=0.005$, $\tilde{c}=0.001$, $r=0.9$\end{flushleft} - \begin{tabular}[t]{rr} - $a_0$ & $S$ \\ - \hline - 0.010 & 0.0000 \\ - 0.020 & 0.0000 \\ - 0.030 & 0.0783 \\ - 0.040 & 0.1200 \\ - 0.050 & 0.1450 \\ - 0.060 & 0.1617 \\ - 0.070 & 0.1736 \\ - 0.080 & 0.1825 \\ - 0.090 & 0.1894 \\ - 0.100 & 0.1950 \\ - \end{tabular} - \end{minipage} - \begin{minipage}[t]{0.32\textwidth} - \footnotesize - \begin{flushleft}$\tilde{\lambda}=0.005$, $\tilde{c}=0.005$, $r=0.9$\end{flushleft} - \begin{tabular}[t]{rr} - $a_0$ & $S$ \\ - \hline - 0.050 & 0.0000 \\ - 0.100 & 0.0000 \\ - 0.150 & 0.0583 \\ - 0.200 & 0.1000 \\ - 0.250 & 0.1250 \\ - 0.300 & 0.1417 \\ - 0.350 & 0.1536 \\ - 0.400 & 0.1625 \\ - 0.450 & 0.1694 \\ - 0.500 & 0.1750 \\ - \end{tabular} - \end{minipage} - \begin{minipage}[t]{0.32\textwidth} - \footnotesize - \begin{flushleft}$\tilde{\lambda}=0.005$, $\tilde{c}=0.01$, $r=0.9$\end{flushleft} - \begin{tabular}[t]{rr} - $a_0$ & $S$ \\ - \hline - 0.100 & 0.0000 \\ - 0.200 & 0.0000 \\ - 0.300 & 0.0333 \\ - 0.400 & 0.0750 \\ - 0.500 & 0.1000 \\ - 0.600 & 0.1167 \\ - 0.700 & 0.1286 \\ - 0.800 & 0.1375 \\ - 0.900 & 0.1444 \\ - 1.000 & 0.1500 \\ - \end{tabular} - \end{minipage} -\end{minipage} - -\begin{minipage}[t]{\textwidth} - \begin{minipage}[t]{0.32\textwidth} - \footnotesize - \begin{flushleft}$\tilde{\lambda}=0.001$, $\tilde{c}=0.001$, $r=0.9$\end{flushleft} - \begin{tabular}[t]{rr} - $a_0$ & $S$ \\ - \hline - 0.100 & 0.0000 \\ - 0.200 & 0.0200 \\ - 0.300 & 0.0283 \\ - 0.400 & 0.0325 \\ - 0.500 & 0.0350 \\ - 0.600 & 0.0367 \\ - 0.700 & 0.0379 \\ - 0.800 & 0.0388 \\ - 0.900 & 0.0394 \\ - 1.000 & 0.0400 \\ - \end{tabular} - \end{minipage} - \begin{minipage}[t]{0.32\textwidth} - \footnotesize - \begin{flushleft}$\tilde{\lambda}=0.001$, $\tilde{c}=0.005$, $r=0.9$\end{flushleft} - \begin{tabular}[t]{rr} - $a_0$ & $S$ \\ - \hline - 0.500 & 0.0000 \\ - 1.000 & 0.0000 \\ - 1.500 & 0.0083 \\ - 2.000 & 0.0125 \\ - 2.500 & 0.0150 \\ - 3.000 & 0.0167 \\ - 3.500 & 0.0179 \\ - 4.000 & 0.0188 \\ - 4.500 & 0.0194 \\ - 5.000 & 0.0200 \\ - \end{tabular} - \end{minipage} - \begin{minipage}[t]{0.32\textwidth} - \footnotesize - \begin{flushleft}$\tilde{\lambda}=0.001$, $\tilde{c}=0.01$, $r=0.9$\end{flushleft} - \begin{tabular}[t]{rr} - $a_0$ & $S$ \\ - \hline - 0.100 & 0.0000 \\ - 0.200 & 0.0000 \\ - 0.300 & 0.0000 \\ - 0.400 & 0.0000 \\ - 0.500 & 0.0000 \\ - 0.600 & 0.0000 \\ - 0.700 & 0.0000 \\ - 0.800 & 0.0000 \\ - 0.900 & 0.0000 \\ - 1.000 & 0.0000 \\ - \end{tabular} - \end{minipage} -\end{minipage} - -\begin{minipage}[t]{\textwidth} - \begin{minipage}[t]{0.32\textwidth} - \footnotesize - \begin{flushleft}$\tilde{\lambda}=0.01$, $\tilde{c}=0.001$, $r=0.5$\end{flushleft} - \begin{tabular}[t]{rr} - $a_0$ & $S$ \\ - \hline - 0.050 & 0.0000 \\ - 0.100 & 0.2250 \\ - 0.150 & 0.3083 \\ - 0.200 & 0.3500 \\ - 0.250 & 0.3750 \\ - 0.300 & 0.3917 \\ - 0.350 & 0.4036 \\ - 0.400 & 0.4125 \\ - 0.450 & 0.4194 \\ - 0.500 & 0.4250 \\ - \end{tabular} - \end{minipage} - \begin{minipage}[t]{0.32\textwidth} - \footnotesize - \begin{flushleft}$\tilde{\lambda}=0.01$, $\tilde{c}=0.002$, $r=0.5$\end{flushleft} - \begin{tabular}[t]{rr} - $a_0$ & $S$ \\ - \hline - 0.050 & 0.0000 \\ - 0.100 & 0.0000 \\ - 0.150 & 0.1167 \\ - 0.200 & 0.2000 \\ - 0.250 & 0.2500 \\ - 0.300 & 0.2833 \\ - 0.350 & 0.3071 \\ - 0.400 & 0.3250 \\ - 0.450 & 0.3389 \\ - 0.500 & 0.3500 \\ - \end{tabular} - \end{minipage} - \begin{minipage}[t]{0.32\textwidth} - \footnotesize - \begin{flushleft}$\tilde{\lambda}=0.01$, $\tilde{c}=0.003$, $r=0.5$\end{flushleft} - \begin{tabular}[t]{rr} - $a_0$ & $S$ \\ - \hline - 0.100 & 0.0000 \\ - 0.200 & 0.0500 \\ - 0.300 & 0.1750 \\ - 0.400 & 0.2375 \\ - 0.500 & 0.2750 \\ - 0.600 & 0.3000 \\ - 0.700 & 0.3179 \\ - 0.800 & 0.3313 \\ - 0.900 & 0.3417 \\ - 1.000 & 0.3500 \\ - \end{tabular} - \end{minipage} -\end{minipage} - -\begin{minipage}[t]{\textwidth} - \begin{minipage}[t]{0.32\textwidth} - \footnotesize - \begin{flushleft}$\tilde{\lambda}=0.005$, $\tilde{c}=0.001$, $r=0.5$\end{flushleft} - \begin{tabular}[t]{rr} - $a_0$ & $S$ \\ - \hline - 0.050 & 0.0000 \\ - 0.100 & 0.0000 \\ - 0.150 & 0.0583 \\ - 0.200 & 0.1000 \\ - 0.250 & 0.1250 \\ - 0.300 & 0.1417 \\ - 0.350 & 0.1536 \\ - 0.400 & 0.1625 \\ - 0.450 & 0.1694 \\ - 0.500 & 0.1750 \\ - \end{tabular} - \end{minipage} - \begin{minipage}[t]{0.32\textwidth} - \footnotesize - \begin{flushleft}$\tilde{\lambda}=0.005$, $\tilde{c}=0.002$, $r=0.5$\end{flushleft} - \begin{tabular}[t]{rr} - $a_0$ & $S$ \\ - \hline - 0.100 & 0.0000 \\ - 0.200 & 0.0000 \\ - 0.300 & 0.0333 \\ - 0.400 & 0.0750 \\ - 0.500 & 0.1000 \\ - 0.600 & 0.1167 \\ - 0.700 & 0.1286 \\ - 0.800 & 0.1375 \\ - 0.900 & 0.1444 \\ - 1.000 & 0.1500 \\ - \end{tabular} - \end{minipage} - \begin{minipage}[t]{0.32\textwidth} - \footnotesize - \begin{flushleft}$\tilde{\lambda}=0.005$, $\tilde{c}=0.003$, $r=0.5$\end{flushleft} - \begin{tabular}[t]{rr} - $a_0$ & $S$ \\ - \hline - 0.200 & 0.0000 \\ - 0.400 & 0.0000 \\ - 0.600 & 0.0500 \\ - 0.800 & 0.0812 \\ - 1.000 & 0.1000 \\ - 1.200 & 0.1125 \\ - 1.400 & 0.1214 \\ - 1.600 & 0.1281 \\ - 1.800 & 0.1333 \\ - 2.000 & 0.1375 \\ - \end{tabular} - \end{minipage} -\end{minipage} - -\begin{minipage}[t]{\textwidth} - \begin{minipage}[t]{0.32\textwidth} - \footnotesize - \begin{flushleft}$\tilde{\lambda}=0.001$, $\tilde{c}=0.001$, $r=0.5$\end{flushleft} - \begin{tabular}[t]{rr} - $a_0$ & $S$ \\ - \hline - 0.500 & 0.0000 \\ - 1.000 & 0.0000 \\ - 1.500 & 0.0083 \\ - 2.000 & 0.0125 \\ - 2.500 & 0.0150 \\ - 3.000 & 0.0167 \\ - 3.500 & 0.0179 \\ - 4.000 & 0.0188 \\ - 4.500 & 0.0194 \\ - 5.000 & 0.0200 \\ - \end{tabular} - \end{minipage} - \begin{minipage}[t]{0.32\textwidth} - \footnotesize - \begin{flushleft}$\tilde{\lambda}=0.001$, $\tilde{c}=0.002$, $r=0.5$\end{flushleft} - \begin{tabular}[t]{rr} - $a_0$ & $S$ \\ - \hline - 5.000 & 0.0000 \\ - 10.000 & 0.0000 \\ - 15.000 & 0.0000 \\ - 20.000 & 0.0000 \\ - 25.000 & 0.0000 \\ - 30.000 & 0.0000 \\ - 35.000 & 0.0000 \\ - 40.000 & 0.0000 \\ - 45.000 & 0.0000 \\ - 50.000 & 0.0000 \\ - \end{tabular} - \end{minipage} - \begin{minipage}[t]{0.32\textwidth} - \footnotesize - \begin{flushleft}$\tilde{\lambda}=0.001$, $\tilde{c}=0.003$, $r=0.5$\end{flushleft} - \begin{tabular}[t]{rr} - $a_0$ & $S$ \\ - \hline - 5.000 & 0.0000 \\ - 10.000 & 0.0000 \\ - 15.000 & 0.0000 \\ - 20.000 & 0.0000 \\ - 25.000 & 0.0000 \\ - 30.000 & 0.0000 \\ - 35.000 & 0.0000 \\ - 40.000 & 0.0000 \\ - 45.000 & 0.0000 \\ - 50.000 & 0.0000 \\ - \end{tabular} - \end{minipage} -\end{minipage} - -\begin{figure} -\centering -\includegraphics[width=10cm]{rewards.png} -\caption{Effect of different choices for \(a_0\)} -\label{fig:rewards} -\end{figure} - -See \cref{fig:rewards} for the effect of various choices for -\(a_0\) on pool rewards (for \(k=10\)). - -\subsubsection{\texorpdfstring{\(\rho\)}{\textbackslash{}rho}} - -In order to determine the inflation rate per epoch \(\rho\), we need five -more pieces of information: - -\begin{itemize} -\item - The expected \emph{exchange rate} \(e\) from ada to USD (in USD/ADA). -\item - The average \emph{costs} \(c\) (in USD) to run a pool for one year. -\item - The average \emph{transaction fees} \(F\) (in ada) paid during one - epoch. -\item - The expected ratio \(r\) of \emph{rewards} per year per staked ada. -\item - The expected value of $\eta$, the ratio of actually produced blocks - versus expected produced blocks (see~\ref{monetary-expansion}). -\end{itemize} - -The available rewards for one epoch (assuming an equilibrium state with -\(k\) pools and noticing that there are \(\frac{365}{5}=73\) epochs per -year) will be \[ - \left(1-\tau\right)\cdot\bigl(F + \min(\eta,1)\cdot\rho\cdot\left(T\infty - T\right)\bigr) - \frac{k\cdot c}{73\cdot e}. -\] On the other hand, \emph{expected} rewards per epoch are \[ - T\cdot\left(\sqrt[73]{1+r}-1\right). -\] Equating the two, we get \[ - \rho=\frac{T\cdot\left(\sqrt[73]{1+r}-1\right)-(1-\tau)\cdot F+\frac{k\cdot c}{73\cdot e}} - {\left(1-\tau\right)\cdot\min(\eta,1)\cdot\left(T_\infty-T\right)}. -\] For example, using - -\begin{itemize} -\item - \(k=100\), -\item - \(T=31,000,000,000\,\mathrm{ada}\), -\item - \(T_\infty=45,000,000,000\,\mathrm{ada}\), -\item - \(e=0.5\,\mathrm{USD/ada}\), -\item - \(c=1,000\,\mathrm{USD}\), -\item - \(F=2,000\,\mathrm{ada}\), -\item - \(r=0.05\), -\item - \(\tau=0.2\) and -\item - \(\eta=0.9\) -\end{itemize} - -we would get \[ - \rho=\frac - {31,000,000,000\cdot\left(\sqrt[73]{1+0.05}-1\right)-0.8\cdot 2000+\frac{100\cdot 1000}{73\cdot 0.5}} - {0.8\cdot 0.9\cdot\left(45,000,000,000 - 31,000,000,000\right)} - \approx - 0.0021. -\] This would correspond to reducing the remaining amount of available -ada by \({1.0021}^{73}-1\approx 0.17=17\%\) per year (which sounds -pretty high\ldots). - -\subsubsection{\texorpdfstring{\(\tau\)}{\textbackslash{}tau}} - -Setting \(\tau\) is a policy decision; we will probably use -\(\tau=0.2\), i.e.~20\% of available epoch rewards will be sent to the -treasury. - -\section{Satisfying the Requirements} -\label{satisfying-the-requirements} - -In the following, we describe how the requirements listed in -\cref{requirements} are satisfied by the design in this document. - -\begin{description} - -\item[\cref{proof-of-eligibility} Proof of Eligibility] The leader election - process takes delegation into account (\cref{slot-leader-schedule}), so the - leader schedule will contain the key hash of the pool that is expected to sign - the block. The operational key certificate will be included in the block - header. - -\item[\cref{visibility-of-delegation-on-the-blockchain} Visibility of Delegation - on the Blockchain] Delegation via delegation certificates is visible on the - blockchain. Operational key certificates are only used for hot/cold key - management within a stake pool. Thus, they are not relevant for the rewards - sharing process. - -\item[\cref{restricting-chain-delegation} Restricting Chain - Delegation] Chain delegation is properly restricted, as described in - \cref{chain-delegation}. - -\item[\cref{cheap-re-delegation} Cheap Re-Delegation] Re-delegation can - be performed cheaply by issuing a new delegation certificate. - -\item[\cref{neutral-addresses} Neutral Addresses] The design includes - enterprise addresses (\cref{enterprise-address}), which are - disregarded by the PoS protocol. - -\item[\cref{multi-sig-delegation} Multi-Sig Delegation] By allowing script - credentials not only for payment, but also for stake credentials, and - implementing a language for expressing multi-sig conditions, we provide a - mechanism for multi-sig delegation (see \cref{address-structure}). - -\item[\cref{sybil-attack-protection-at-stake-pool-level} Sybil Attack - Protection at Stake Pool Level] Stake pool owners are expected to - pledge an amount of stake to their pools that has an influence on - the rewards for their stake pool, and consequently on the - position of the stake pool in the listing displayed to stakeholders - (\cref{stake-pool-registration}, - \cref{display-of-stake-pools-in-the-wallet}, - \cref{reminder-stake-pool-registration}). - - Since this pledge cannot be shared between multiple pools, creating - $n$ viable stake pools will require funds linear in $n$. - -\item[\cref{address-nonmalleability} Address Nonmalleability] Protection against - the malleability attack, by the wallet, is described in - \cref{address-recognition-1}. - -\item[\cref{public-spending-keys-should-not-be-disclosed-prematurely} - Public Payment Keys Should not be Disclosed Prematurely] The - introduction of a dedicated stake address (\cref{address-structure}) - avoids the need to use the payment key for delegation purposes. - -\item[\cref{mitigate-key-exposure} Mitigate Key Exposure] Stake pool operators - are required to use operational key certificates for hot/cold key management, - as described in \cref{operational-key-certificates}. - -\item[\cref{handle-inactive-stake-pools} Handle Inactive Stake Pools] - Stake pools can be retired via a retirement certificate - (\cref{stake-pool-registration-certificates}. If a stake pool - ceases to operate without being properly retired, its members will be - incentivised to re-delegate: their rewards will start to diminish, and their - wallet will notify them that the pool they have delegated to is not producing - blocks anymore \cref{display-of-stake-pools-in-the-wallet}. - - In addition to this, \cref{stale-stake} describes an optional mechanism to - detect and ignore inactive pools that still have stake. - -\item[\cref{avoid-hard-transition} Avoid Hard Transition] As described - in \cref{transition-to-decentralization}, we will have a smooth - transition from Byron to Shelley, with the core nodes gradually - transferring the right and obligation to sign blocks to stake pools. - -\item[\cref{change-delegation-without-spending-key} Change Delegation - Without Payment Key] Delegation of cold wallets is described in - \cref{delegation-of-cold-wallets}, and does not require having the - payment key of the cold wallet online. - -\item[\cref{master-recovery-key} Master Recovery Key] Wallet recovery - is described in \cref{wallet-recovery-process}, and does not require - any information in addition to the master key. - -\item[\cref{address-recognition} Address Recognition] Wallets will - recognise addresses belonging to it by looking at the payment key - hash part of the address, as described in - \cref{address-recognition-1}. - -\item[\cref{wallet-should-be-runnable-on-independent-devices} Wallet - should be Runnable on Independent Devices] With the caveats listed - in that requirement, nothing in this document requires wallets - running on different devices to share state. - -\item[\cref{maintain-privacy} Maintain Privacy] Having an efficient - delegation mechanism -- and in particular a mechanism where - delegation is rewarded -- requires a slight compromise on the level - of pseudonymity, since addresses using the same stake address will be - linkable. However, users can decide to use a number of different - accounts, with separate stake addresses, if they are willing to pay the - fees for using multiple stake addresses. This will give them a level of - pseudonymity that is not worse than that in the Ethereum network. - - They can also choose to use a distinct stake address per value address, or - value addresses with no stake address at all, which gives pseudonymity that is - no worse than in Bitcoin. - -\item[\cref{short-addresses} Short Addresses] The goal of having - reasonably short addresses has guided the design of delegation, and - we do not see an obvious way of making them even shorter, while - still satisfying the rest of the requirements. - -\end{description} - -\appendix - -\section{Assessment of Rewards Sharing Mechanisms} -\label{assessment-of-rewards-sharing-mechanisms} - -This appendix gives an overview over the different mechanisms for -rewards sharing that we took into consideration. While this is not -needed for implementing the delegation system, the information is -still useful enough to be included in this document. Choosing a -mechanism for rewards sharing involves a number of non-trivial -trade-offs, and future systems might want to pick one that we -discarded for Cardano. - -\subsection{General Considerations} -\label{general-considerations} - -\begin{enumerate} -\item - We use HD Wallets to provide some level of anonymity to stakeholders. - We would not like to abandon this anonymity for the ability to share - rewards. - - \begin{itemize} - \item - To preserve this level of anonymity HD wallet users will need to - associate separate stake addresses with each HD wallet generated - address. - \end{itemize} -\item - We wish to avoid arbitrary growth in the UTxO (or any other globally - replicated record, e.g. contents of epoch boundary blocks). - - \begin{itemize} - \item - This is potentially at odds with the rewarding of all stakeholders - at all epochs - \end{itemize} -\item - We want to avoid creating dust (entries in the UTxO that are so small - that including them in a transaction is not economical, since their - balance is close to or even less than the increase in fees resulting - from including another input). - - \begin{itemize} - \item - The systemic issue is that dust is likely to have an unbounded - lifetime in the UTxO - \item - Transaction fee structure could be modified to remove the - transaction cost constraint. The requirement on action by the - receiver still remains. - \end{itemize} -\item - The network has a finite capacity to process transactions. We should - avoid using a significant fraction of this capacity for sharing - rewards. In particular, we want to avoid causing unreasonable spikes - in the transaction rate. Those could either bring the system down on - their own, or act as an invitation to a timed DoS attack. -\item - The stake pool operator should not be required to take an action to - initiate sharing rewards with members. -\item - Verifying that a reward is legitimate will require a node to access - some information (like the leader schedule of the epoch in which the - reward was earned, as well as the delegation pattern at the time the - leader election for that epoch took place). The time and space - complexity for this should be constant in the size of the blockchain - and/or the UTxO of non-reward entries. -\end{enumerate} - -Unless we want to give up on anonymity (1.), each address has to -separately receive rewards. Together with 2., 3., and 4., this severely -restricts any approach that distributes rewards using ordinary -transactions. - -\subsubsection{Hierarchy of desirability of reward distribution} -\label{hierarchy-of-desirability-of-reward-distribution} - -\begin{itemize} -\item - Reward stakeholders on the basis of their holding at an epoch boundary - - \begin{itemize} - \item - Stakeholders are not explicitly represented - there can be a proxy - \item - One representation of stake delegation (direct to stake pool) which - has the property of anonymity-via-aggregation. This, combined with - the desire to not require stake pools to do the distribution a UTxO - centric reward distribution mechanism. - \end{itemize} -\item - Reward stakeholders that ~maintain a UTxO/stake over the total epoch - length. - - \begin{itemize} - \item - This may be seen a ``regressive'' property in that it would not - reward those stakeholders who engage in high-velocity value - movements (e.g make use of the HD wallet). - \item - This is a property of certain solutions. - \end{itemize} -\end{itemize} - -\subsubsection{Summary of key points of when rewards are calculated} -\label{summary-of-key-points-of-when-rewards-are-calculated} - -\begin{itemize} -\item - Point in Time - - \begin{itemize} - \item - Just considers addresses at an epoch boundary - \end{itemize} -\item - Duration in Time - - \begin{itemize} - \item - Set of stakeholder address and pool arrangement is fixed at an epoch - boundary (say epoch \(N-1\) to epoch \(N\)) - \item - Rewards are calculated at the transition from epoch \(N\) to epoch - \(N+1\) - \item - Only stakeholder addresses that have non-zero associated value at - the epoch \(N\) to \(N+1\) boundary (i.e have ~value at both the - epoch \(N-1\) to \(N\) and the epoch \(N\) to \(N+1\) boundaries) - will be eligible to receive rewards - - \begin{itemize} - \item - Noting that this could interact badly with HD wallet users - \end{itemize} - \end{itemize} -\end{itemize} - -\subsection{Approaches that are Ruled Out} -\label{approaches-that-are-ruled-out} - -\subsubsection{Manual Sharing} -\label{manual-sharing} - -In this approach, only stake pool operators are rewarded directly by the -system, and it is their responsibility to share rewards with members of -the pool. - -This approach has been ruled out, since it: - -\begin{enumerate} -\item - requires additional trust in stake pool operators to do this correctly - (5.) -\item - requires at least stake pool operators to group the addresses of each - member, to keep the volume of transactions somewhat reasonable (1., - 2., 3., and 4.) -\item - The rewards for members that did not contribute much stake are likely - to be dust (3.) -\end{enumerate} - -\subsubsection{Automatically Issue Transactions Each Epoch} -\label{automatically-issue-transactions-each-epoch} - -In this approach, the system automatically distributes rewards at the -end of an epoch, by sending transactions with outputs to every address -that delegated to a stake pool that produced at least one block during -that epoch. - -This approach has been ruled out, since it: - -\begin{enumerate} -\item - Leads to a super-linear growth of the UTxO, creating an output per - address per epoch (2.) -\item - Is likely to create lots of dust for small stakeholders (3.) -\item - Will lead to a huge burst of transactions, proportional to the number - of addresses with non-zero balance in the system (4.). This could be - lessened somewhat by sending the transactions over the course of the - following epoch, but it would still use up a large fraction of the - system's ability to process transactions (4.) -\end{enumerate} - -\paragraph{Complexity} - -\begin{itemize} -\item - Creates one ``UTxO'' per non-zero address at the boundary/duration - - this would create (today) \textasciitilde{}650k transactions per epoch -\end{itemize} - -\subsubsection{Let Members Collect Rewards} -\label{let-members-collect-rewards} - -An alternative is to let every stake pool member be responsible for -collecting their own rewards. This approach has the virtue that members -could wait several epochs until they had accumulated enough rewards to -warrant a transaction. The overall rate of transactions for sharing -rewards would be reduced, the transactions would not come in bursts, and -the problem of creating dust could be avoided. - -However, this approach has been ruled out, since it: - -\begin{enumerate} -\item - Requires nodes to cache or quickly retrieve the whole history of - leader schedules, as well as the delegation configurations at the time - of each leader selection (6.) -\end{enumerate} - -\subsection{Feasible Approaches} -\label{feasible-approaches} - -\subsubsection{Automatic UTxO Updates} -\label{automatic-utxo-updates} - -This unique approach circumvents the problems of transaction rates, dust -entries, and UTxO growth, at the expense of introducing an implicit -modification of the UTxO set. - -After an epoch, each UTxO entry that delegated to a stake pool will have -its balance updated to reflect the rewards that it earned. Since the -update can be derived from information that every node has (leader -schedule and delegation pattern at the last election), it can be carried -out by each node individually. - -Sadly, this approach does come with its own drawbacks: - -\begin{enumerate} -\item - It is not yet clear how a lightweight wallet would determine the - correct UTxO set. -\item - It introduces an implicit update of each UTxO entry, a huge moving - part that makes it much harder to reason about the system. -\item - Transactions that are formed before an update, but included after it, - will have a larger total input than the issuer anticipated. -\item - (Public Perception) This may be perceived as subverting the notion of - immutability of the blockchain (at least in its UTxO model) -\end{enumerate} - -\subsubsection{Lotteries per Stake Pool} -\label{lotteries-per-stake-pool} - -A variation of ``Automatically Issue Transactions Each Epoch'', this -approach avoids dust and creating a huge number of transactions by -performing one lottery per stake pool. A number of winning addresses is -determined, and the rewards are distributed amongst those addresses. The -probability of any address winning the lottery is proportional to the -stake that that address contributed to the pool. Benefits of this -approach are: - -\begin{enumerate} -\item - The number of transactions will be proportional to the number of stake - pools that signed at least one block, which is nicely bounded by the - number of slots in an epoch. -\item - The chances of creating dust entries is fairly low, since each winning - address will receive a sizeable fraction of the pools rewards. -\item - There is no need to group addresses per stake pool member. -\item - Possibly -- this would have to be investigated by legal -- this could - make ada less like a security. -\end{enumerate} - -The remaining drawbacks are: - -\begin{enumerate} -\item - It will still create a burst of transactions. This could be prevented - by staggering the transactions that share rewards -\item - An individual stake pool member will on average receive the same - rewards as with any of the other approaches, but it will be much less - predictable. This might be problematic from a Public Perception - perspective. -\item - (Public Perception) although (in the limit) this is the same outcome - as sharing, apparently most humans don't see things that way\footnote{See - Prospect Theory (https://en.wikipedia.org/wiki/Prospect\_theory)} -- - they would prefer known outputs (even if smaller) to unknown ones. - An additional indicator of human response might be to look at a - similar mechanism (random rewards for depositing a fixed stake) has - run since 1956. Premium - Bonds\footnote{https://en.wikipedia.org/wiki/Premium\_Bond} -- - computer nerds / - crypto nuts should note who helped create the original ERNIE). The - public might like the gambling aspect, businesses might not! -\end{enumerate} - -\subsubsection{Reward accounts per stake address} -\label{reward-accounts-per-stake-key} - -This is in some sense a variation of the ``Automatic UTxO updates'', but -trying to address its shortcomings. - -Introoduce the notion of a reward account, tied to a stake address. -Reward accounts have special rules: - -\begin{itemize} -\item - Account style accumulation, not UTxO style -\item - Paid into only by reward payout mechanism, never by normal Txs. -\item - Withdrawn from by normal Txs, using a witness for the stake address. -\end{itemize} - -At the end of an epoch once the pool rewards are known, identify all the -stake addresses that contribute to a pool and the rewards per stake address. The -system implicitly issues a transaction/state-change to pay out rewards -to the reward account of each stake address. These rewards accumulate if they are -not withdrawn. - -Value held in a reward account contributes to stake that is delegated to a stake -pool and hence itself attracts rewards. This reduces the incentive to withdraw -early and means the stake corresponding to the reward is not effectively -offline. - -Withdrawal of rewards is done similarly to the withdrawal transaction from the -Chimeric Ledgers paper. This uses a witness for the stake address. Note that we -also require at least one UTxO input to the transaction for replay protection -(see \cref{certificate-replay-prevention}, \cref{distributing-rewards}). - -This aggregation of rewards -- account style -- is the key to resolving -the UTxO storage asymptotic complexity problem. It is the same -fundamental approach as the ``Automatic UTxO updates'' approach, but -putting the aggregation off to a separate class of addresses, so -that normal addresses remain in a pure UTxO style. - -The asymptotic storage complexity of the ledger state (i.e.~UTxO size) -is linear in the number of stake addresses, but is unrelated to the number of -epochs that have passed. This is in contrast to approaches that create -UTxO entries for rewards on every epoch. - -An important constraint for this approach is that it relies on stake -addresses belonging to stakeholders. This means every stakeholder's value address -must be associated with some stake address belonging to the stakeholder. -This means it is not possible to use addresses that point directly to a -stake pool and still be able to have a corresponding reward address, -since there is not stake address to use for that reward address. There are -alternatives to using addresses that point directly to pools\footnote{During an - early stage of the design, we had anticipated pointer addresses that would - refer directly to a pool registration certificate.}, but these -either reduce privacy or increase fees. One alternative that reduces -privacy is for all addresses in a wallet to share the same stake address. -This reduces privacy since all addresses in the wallet -can be tied together by using the same stake address. Another alternative is -to use a separate stake address for every value address. This means using one -delegation certificate per (value) address. This increases the fees for creating -addresses in a wallet following this policy, and for changing delegation -choices. In principle there's a sliding scale between the two previous -options, using a number of stake addresses, more than one but fewer than the -number of value addresses. - -\begin{itemize} -\item - stake in reward accounts is ordinary stake, and hence is counted in - delegation to stake pools. -\item - There is a potential interaction with UTxO deposit/refund approach. It - may be that (because the refund is smaller than the reward) that - negative values need to be stored. Though this may be able to done by - some registration cost. -\end{itemize} - -Advantages: - -\begin{itemize} -\item - doesn't ``mutate'' the UTxO. This reduces conceptual and - implementation complexity. It does not disrupt wallets and other - things based on the UTxO model. -\end{itemize} - -Disadvantages: - -\begin{itemize} -\item - introduces limited degree of account style chimeric ledgers. This adds - a degree of conceptual and implementation complexity. -\item - Cannot use pointer addresses directly to stake pools. Increases fee - and complexity cost of maintaining wallet privacy. -\item - When people use multiple stake addresses to retain some privacy, it gets - somewhat less efficient at limiting the size of the required state. But it will - still prevent the exponential growth of the UTxO. -\end{itemize} - -\section{Deposits} -\label{deposits} - -\subsection{Motivation} - -One fundamental raison-d'\^{e}tre for transaction fees in Cardano (or any other -cryptocurrency for that matter) is to compensate node operators for their costs: -Processing a transaction incurs costs, and the person doing the processing -should be reimbursed accordingly. - -In reality however, there are more than just one-time processing costs. -In particular, there are long term \emph{storage} costs whenever a transaction -forces a node to dedicate local storage for the stake associated with the -transaction. - -The prototypical example for this are \emph{UTxO-entries}: Each additional such entry -takes up storage on each node running the protocol. -There are other examples as well, including \emph{stake pool registrations} and -\emph{delegation certificates}. - -We plan to address this issue by requiring a \emph{deposit} to be paid for each -resource that will incur storage costs. - -This deposit must be (partially) \emph{refundable}, -so that the holder of the resource has an incentive to release the resource when -it is no longer needed. So for example, somebody with a lot of ``dust'' in their -wallet would have an incentive to remove that dust, thus reclaiming some of the -deposit paid for UTxO-entries. - -On the other hand, refunds should also \emph{decrease over time}, so that -there is an incentive to release a resource sooner rather than later. - -\subsection{Mechanism} - -We propose to introduce the following configurable parameters: -\begin{enumerate} - \item - A deposit amount (in ada) $d_R\in(0,\infty)$ for each type of resource - $R$. The value of $d_R$ for a resource type $R$ should roughly reflect - the cost to ``rent the resource forever''. - \item - A factor $d_{\min}\in(0,1)$, which determines the minimal proportion of - $d_R$ that will be refunded on resource release. Higher value of - $d_{\min}$ mean higher guaranteed refunds. - \item - A decay constant $\lambda\in(0,\infty)$ determining how refunds decrease - over time. Higher values of $\lambda$ correspond to faster decrease of - refunds over time. -\end{enumerate} - -Given these parameters, on acquiring a resource of type $R$, one would have to -pay an amount of $d_R$ ada\@. When the resource is released after $t\geq 1$ slots, -the holder of the resource is refunded -\[ - r_R(t)=d_R\cdot\left(d_{\min}+(1-d_{\min})\cdot e^{-\lambda t}\right)\in(d_{\min}\cdot d_R,d_R), -\] -whereas the difference $d_R-r_R(t)$ is added incrementally to the reward pools of -the epochs between registering and releasing the resource. - -Note that it easily follows from well-known properties of the exponential -function that -\[ - d_r>r_R(t)\stackrel{t\rightarrow\infty}{\xrightarrow{\hspace{10mm}}}d_{\min}\cdot d_R, -\] -as desired. - -As a fictional example, consider parameter values $d_{\min}=0.25$ and $\lambda=0.0001$ -and a resource of type $R$ with $d_R=2$. A user acquiring such a resource -will initially include a deposit of $d_R=2$ ada in the transaction creating that -resource. This deposit will be held in escrow until the resource gets released. -If the user releases the resource after 10,000 slots, a refund of -$r_R(10,000)=1.0518$ ada will be added to the available input of the associated -transaction. The difference $d_R-r_R(10,000)=2-1.0518=0.9482$ ada will be added -to the rewards pool of that epoch. - -If our fictional user held onto the resource for 40,000 slots instead, -their refund would only be $r_R(40,000)=0.5275$ ada, and 1.4725 ada -would be added to the epoch rewards. In this example, refunds will -never drop below $d_{\min}\cdot d_R=0.5$ ada. - -\section{Design Option: Stale Stake} -\label{stale-stake} - -This section sketches an optional mechanism for tracking \emph{stale - stake}, i.e., stake that is no longer being actively -controlled. Stale stake can limit the chain growth (since elected -leaders might fail to show up and sign blocks), and decrease the -amount of honest stake, making the system easier to attack. The -mechanism described below is aimed at mitigating the first effect. - -In the current design, stale stake is much less likely to become a -problem than in earlier iterations (since we automatically discard -stake that is not delegated to a valid stake pool), so we propose to -not implement this design option, at least not in the initial Shelley -release. We keep it in this document for further reference. - -In the current design, the only circumstance where an actor becoming inactive -would limit the chain growth is when a stake pool operator ceases to operate -their pool, without retiring it. Furthermore, since a failure to produce blocks -will reduce the rewards for stake pool members, such a pool would lose members -and become irrelevant. Thus, an abandoned pool will be an impediment to chain -growth only if there are stakeholders delegating to that pool who also become -inactive and do not re-delegate. - -In order to further mitigate this potential problem, the system could monitor -the apparent performance of all pools over time, and prune pools that fulfill -both of the following conditions: - -\begin{itemize} - \item The apparent performance of the pool has consistently been zero for a - certain number of epochs (i.e., the block did not produce any blocks after a - certain moment in time). - \item The pool has enough stake that it should have been elected as slot - leader within those epochs several times. -\end{itemize} - -The number of epochs and size in stake should be such that we can rule out the -hypothesis that the pool is still active, but was just not elected as leader -during those epochs, with statistical significance\footnote{Setting those - numbers would require some research if we were to implement this feature.}. - -We do not anticipate that abandoned pools should become a problem anytime soon. -By monitoring the chain growth, we could detect whenever a significant fraction -of pools accumulates in abandoned pools, and implement abandoned pool detection -when necessary. - -\section{FAQ} - -\subsection{Why will stake pools accept new stake pool registration - certificates?} - -It may seem counterintuitive that any of the existing stake pools would accept a -stake pool registration certificate for a new pool, for fear of losing some of -their future rewards to the increased competition. After all, with a naive -approach to rewarding pools, a new pool would potentially reduce the rewards of -every existing pool. Existing systems like Bitcoin tend to becoming more -centralised because they use naive incentives. - -One thing to realise is that Cardano uses a sophisticated incentives scheme -\citep{bkks2018}, summarised in \cref{design-of-incentives}, where the system -tends to a fixed number \(k\) of saturated stake pools, and no pool can increase -their own rewards by trying to reduce the number of active pools below \(k\). So -there is no general incentive, that would cause every stake pool to try to -censor the registration of a new pool. - -The operator of a pool that is near the bottom of the list of competitive pools -might fear to be replaced by a new pool, and it would not be unreasonable for -that operator to try to prevent new pools from registering. But since it only -takes a \emph{single pool} to include the certificate\footnote{% - To be precise, this also requires that a majority of players is going to - accept a block that contains a certificate. But dropping a block because it - contains a certificate is much worse than just not including the certificate - in a block: it creates a fork and thereby attacks the integrity of the system, - and a pool doing that risks losing their own block when the fork is resolved. - Also, a pool that repeatedly creates a fork after a block that contains a - stake pool registration certificate would sooner or later be detected and - blamed by the community},% -there is no hope to achieve this, and the rational behaviour is to just play by -the rules and include the certificate. - -The situation where each pool accepts submitted certificates is a \emph{Nash - Equilibrium}, where no player can benefit from deviating from this behaviour. -Such configurations are stable, since getting to a different state requires -either collusion between a large number of players, or players acting -irrationally against their own interests. - -However, there is a subtlety here: the state where \emph{no} pool accepts new -certificates might also be a Nash Equilibrium: in this case, pools may refrain -from entering a new certificate for fear to lose rewards due to increased -competition, which will either kick them out of the \(k\) best pools or lower -their margins. - -Let us call the former equilibrium, where certificates are accepted, NE1, and -the latter, where they are rejected, NE2. Should we be worried that the system -will end up in NE2? There are three arguments why this is unlikely to happen: - -\begin{itemize} -\item When the system is initially decentralised, a majority of blocks will be - created by the federation that ran the Byron network, and those players will - behave honestly. So the system will start in NE1. -\item Stake pool \emph{members} benefit from competition, and while censorship - of certificates is not observable from the final chain itself, the community - can be expected to identify pools that try to block the competition, by - looking at the certificates that are being broadcast, the produced blocks, and - temporary forks. Once this becomes known, members will leave such a pool. So - there is a high risk involved for stake pools. -\item Last but not least, the project is run by a community, and it is not - unreasonable to expect members to be at least somewhat cooperative. -\end{itemize} - -\subsection{Won't stake pools reject delegation certificates that delegate away - from them?} - -That would only work if a majority of stake pools colluded to censor such a -certificate. But all pools are incentivised to include the certificate, via -fees. So this censorship would only happen if a majority of pools decided to -partake in malicious behaviour and attack the system, against their direct -incentives. - -\section{Transaction Metadata} - -Adding metadata to transactions is a useful new feature in Cardano Shelley. -It is not related to delegation or decentralisation. - -\subsection{Motivation and design goals} - -The purpose is to enable a range of new applications by allowing arbitrary -structured data to be included onto the chain, and to make effective use of -that data. The term `metadata' is perhaps a misnomer since it is simply about -placing application specific data on the chain; it is only metadata from the -point of view of a transaction since it is carried along with transactions and -not involved in validation. - -A design goal is to add very little complexity to the on-chain part of the -system but to get (or allow for) as much functionality as possible, in -combination with other features or components. This helps keep implementation -complexity lower. Importantly it keeps the size of the trusted base low, by -having the complex functionality to use the metadata outside of the trusted -base. - -A design principle that we preserve is that the historical data on the chain is -not needed to validate the next block or transaction. All data needed for later -validation must be explicitly tracked in the ledger state. This means the old -part of the chain does not need to be preserved locally at all, or at least not -in random access storage. This avoids a problem that Ethereum ran into with -disk I/O becoming a performance bottleneck. This is why the design does not -include metadata into the ledger state, and does not make it accessible to -later scripts. - -\subsection{Detail} - -The transaction can contain metadata. The metadata hash is part of the body of -the transaction so is covered by all transaction signatures. This allows for -integrity checking and authentication of the metadata. - -The metadata value is kept outside of the transaction body, much like the -transaction witnesses. This follows the `segmented witness' design idea that -allows witnesses to be discarded when the data is known to have been checked. -We go one step further and keep the metadata outside the body separately from -the witnesses too, in principle allowing an implementation to store or discard -the metadata or the witnesses independently of each other. - -The structure of the metadata is a mapping from keys to values. The keys are -unsigned integers limited in size up to 64 bits. The values are simple -structured terms, consisting of integers, text strings, byte strings, lists and -maps. - -There is no limit on the number of key-value pairs, except that imposed by the -overall transaction size limit. There is also no limit on individual structured -values, but there is a limit on the size of text strings and byte strings -within the structured values. - -A key aspect of the design is that metadata included in transactions is not -available for later retrieval from within the ledger validation rules, -including scripts. The metadata is not entered into the ledger state, and -general historical chain data is not otherwise available to the ledger -validation rules. - -The changes to the ledger validation rules are thus very limited: only the -metadata syntax, metadata size limits and the effect of the metadata on the -transaction size calculation and thus the transaction fees. No data is added -to the ledger state. The metadata resides only on the chain. - -There are no special fees for metadata. The metadata simply contributes to the -size of the transaction and fees are based on the transaction size. This choice -is justified by the fact that the cost to operators is only the one-time -processing cost and any long term storage of the blockchain. There is no long -term random access state. - -The metadata within a transaction will be made available to validation scripts, -including Plutus Core scripts. Note again that this is only the immediate -transaction being validated. No metadata from predecessor transactions is -available. - -\subsection{Explanation and use} - -The purpose of the metadata being a key value mapping is to make it -straightforward to combine metadata for multiple purposes into the same -transaction. Think of the metadata key as being a schema identifier, that -says what the metadata value is. There is however no on-chain schema -enforcement. The interpretation of the data is entirely up to the applications -that consume it. - -It may make sense to establish a public registry of known metadata keys and -corresponding schemas. - -The metadata value is required to be structured data rather than a single -unstructured blob. The available structure is like a simplified version of JSON. -This makes the data easier to inspect and manipulate, particularly by scripts, -such as Plutus scripts, in future evolutions of the system. The metadata values -do not include floating point numbers because on-chain script languages cannot -support such types. - -The size of strings in the structured value is limited to mitigate the problem -of unpleasant or illegal content being posted to the blockchain. It does not -prevent this problem entirely, but it means that it is not as simple as posting -large binary blobs. - -Of course posting data to the chain is only half the story. It must also be -possible to use it effectively. Part of the design is that the data is not -kept in random-access storage for use by on-chain scripts, so that validating -the chain does not require random access to old parts of the chain or large -databases. So the design calls for metadata use to be managed off-chain using -an indexing service. - -An indexing service, much like an explorer, enables the collection, -authentication and query of the metadata that is posted on the chain. It is -clear that an agent can follow the chain and write all transaction metadata -into a relational database for later query. This is the design that the -backends for many blockchain explorers use. This solves the collection and -query parts of the problem, but not the authentication part. - -Using HD wallet schemes however, the authenticity of the metadata can be -ensured. Depending on the HD scheme -- using public or non-public key -derivation -- the metadata can be publicly verifiable, or only privately -verifiable. - -For example, a simple scheme to track the issuance of physical items could -involve the original owner posting metadata within transactions that spend from -a designated wallet. An indexing server that knows the HD wallet structure (and -either public or private keys depending on the HD scheme) can track the wallet -and index all the metadata in transactions from that wallet (or wallet -sub-account). - -Such schemes have a great deal of flexibility since there is a lot of -flexibility in HD wallet schemes. With public HD derivation, the indexing -server does not need any signing keys, just an appropriate verification key of -a sub-tree in the HD wallet space. If that verification key is revealed then -anyone can reliably run the indexing service, and anyone can verify that the -metadata is authentic. If the verification key is not revealed then only the -owner can run the indexing service, and be used to implement some lookup or -verification service, or it can reveal the authenticity of a particular address -without revealing all addresses. - -It is even possible in principle to use multi-signature wallets, or wallets -involving scripts. There just needs to be some wallet scheme that the indexing -service can use to reliably track and authenticate the transactions using the -wallet. - -Obviously, to take advantage of these possibilities requires suitable wallet -and indexing components. These are however independent components and their -complexity does not impact the complexity of the on-chain rules, so does not -add to the size of the trusted base of the overall system. - -\subsection{Binary schema} - -The binary schema is very simple. The notation is CBOR CDDL (much like BNF). - -\begin{verbatim} -metadata = { * metadata_key => metadata_value } - -metadata_key = uint - -metadata_value = - int - / bytes .size 64 - / text .size 64 - / [ * metadata_value ] - / { * metadata_value => metadata_value } -\end{verbatim} - -\addcontentsline{toc}{section}{References} -%\bibliographystyle{plainnat} -\bibliographystyle{habbrv} -\bibliography{references} - -\end{document} - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: t -%%% End: diff --git a/eras/shelley/formal-spec/CHANGELOG.md b/eras/shelley/formal-spec/CHANGELOG.md deleted file mode 100644 index b9540294bc2..00000000000 --- a/eras/shelley/formal-spec/CHANGELOG.md +++ /dev/null @@ -1,66 +0,0 @@ -# Changelog - -## 2019-03-22 -- The blockchain layer for the spec has been completed and polished. -- There are now operational certificates and key evolving signatures. - -## 2019-03-01 -- Added the blockchain layer to the spec for Praos, including a new top-level transition CHAIN. - -## 2019-02-20 -- Calculating the stake distribution uses relations. -- The prose now makes heavy use of bullet point lists that follow the order in the tables. -- Helper functions have been separated and labeled as such. -- The "Rewards Ledger Update" section was removed, and the logic was placed elsewhere. -The predicate in transition `DELRWDS`, namely checking that the reward withdrawal in a transaction -matched that in the ledger state, was moved to the base case of `DELEGS`. -The state transformation, namely zeroing out the appropriate rewards, -was also moved to the base case of `DELEGS`. -- Added a list of contributors. -- The `UTxOEP` and `ACCNT` transition systems were combined. -- The predicate in `POOLCLEAN` that requires that the current retiring pools not be the empty set -- `POOLCLEAN` was renamed to `POOLREAP`. -has been removed -- The `NEWPP` transition now performs a no-op when costs are not met -(so that the transition system does not halt). -- All the definitions regarding addresses are now in a single table. -- Enterprise addresses were added. -- All the definitions regarding the protocol parameters are now in a single table. -- `E_max` is now a protocol parameter. -- The certificate pointers are now constructed in the `DELEGS` transition. -- `Coin` is now defined as an alias for the integers. -- All the definitions regarding transactions are now in a single table. -- Transactions are now a concrete type. -- Transaction witnesses are now defined as a mapping from `VKey`s to `Sig`. -- We now require that the transaction witnesses be exactly the minimal set that is needed. -- The `Allocs` type is now split into `StakeKeys` and `StakePools`. -- Support for pool owners was added. All rewards for pool oweners go to the reward account -registered in the pool certificate. -- Unrealized rewards are now given to the treasury. -- Some values marked as belonging to the unit interval have been changed to non-negative reals. -- Reward accounts are now included in the stake distribution. -- The reward calculation no longer returns the updated moving averages. -- Several references to the delegation design document were added. -- When a pool retires, all delegations to the pool are removed from the delegation mapping. -- The main epoch boundary transition system is now split into two transitions. -There is now a top level transition `SNAP` which calculates and saves the last three stake distributions. -This transition does _not_ happen on the epoch boundary. -The transition which does occur on the epoch boundary now uses the stake distribution snapshots -for the reward calculation. -- The number of slots per epoch is now a global constant. -- The epoch boundary transition now uses an epoch number instead of a slot in the environment. -It represents the upcomming epoch number. -- This changelog was added. - - -## 2019-01-03 -This update was cosmetic. - -- Descriptions were added to the reward calculations. -- Several spelling and grammar mistakes were fixed. -- A few typos in the reward calculation were fixed. -- Git references where added to the title page. -- Color and bolding was added to the state transitions. - -## 2018-12-21 -The initial formal specification of the ledger was released. diff --git a/eras/shelley/formal-spec/IOHKCoverPage.sty b/eras/shelley/formal-spec/IOHKCoverPage.sty deleted file mode 100644 index 06978e8c1c7..00000000000 --- a/eras/shelley/formal-spec/IOHKCoverPage.sty +++ /dev/null @@ -1,264 +0,0 @@ -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{IOHKCoverPage}[2019/09/12] - -\RequirePackage{fancyhdr} -%\RequirePackage{xcolor} - -\newif\if@deliverable -\newif\if@teamreport -\newif\if@wpreport -\newif\if@techreport -\DeclareOption{deliverable} - {\@deliverabletrue} -\DeclareOption{teamreport} - {\@teamreporttrue} -\DeclareOption{wpreport} - {\@wpreporttrue} -\DeclareOption{techreport} - {\@techreporttrue} - \ProcessOptions -% -\def\IOHK{IOHK} -% -\def\reportnumber#1{\def\@reportnumber{#1}} -\def\reportmonth#1{\def\@reportmonth{#1}} -\def\reportyear#1{\def\@reportyear{#1}} -\def\email#1{\def\@email{#1}} -\def\@reportnumber{?} -\def\@reportmonth{} -\def\@reportyear{} -% -\def\Project#1{\def\@Project{#1}} -\def\ReportNumber#1{\def\@ReportNumber{#1}} -\def\DeliverableNumber#1{\def\@DeliverableNumber{#1}} -\def\DeliverableTitle#1#2{\def\@DeliverableTitle{#1}\def\@ShortDelTitle{#2}} -\def\DueDate#1{\def\@DueDate{#1}} -%% should be possible to convert! KH -\def\SubmissionDate#1#2{\def\@SubmissionDate{#1}\def\@ShortSubmissionDate{#2}} -\def\VersionDate#1{\def\@VersionDate{#1}} -\def\LeaderName#1{\def\@LeaderName{#1}} -\def\Authors#1{\def\@Authors{#1}} -\def\DeliverableResponsible#1{\def\@DeliverableResponsible{#1}} -\def\Institution#1{\def\@Institution{#1}} -\def\InstitutionAddress#1{\def\@InstitutionAddress{#1}} -\def\EditorName#1{\def\@EditorName{#1}} -\def\WorkPackage#1{\def\@WorkPackage{#1}} -\def\TaskNumber#1{\def\@TaskNumber{{\@emph Task number:} #1}} -\def\Version#1{\def\@Version{#1}} -\def\SVNRevision#1{\def\@SVNRevision{#1}} -\def\LastEditor#1{\def\@LastEditor{#1}} -%\def\Reviewers#1{\def\@ReviewersTitle{\@bold Reviewers:}\def\@Reviewers{#1}} -\def\Reviewers#1{\@Reviewerstrue\def\@Reviewers{#1}} -\def\LastDate#1{\def\@LastDate{#1}} -\def\DisseminationPU{\def\@IsPU{$\surd$}} -\def\DisseminationCO{\def\@IsCO{$\surd$}} -\def\DisseminationDR{\def\@IsDR{$\surd$}} -\newcommand{\Revision}[5]{\@writefile{cov}{\hline \hfil #1\hfil\\}} -\newcommand{\Task}[3]{\@Taskstrue\@writefile{par}{\hline #1\\}} - -\def\@Project{Cardano} -\def\@Authors{XXXX} -\def\@ReportNumber{XXXX} -\def\@DeliverableNumber{XXXX} -\def\@DeliverableTitle{XXXX} -\def\@ShortDelTitle{\@DeliverableTitle} -\def\@DueDate{XXXX} -\def\@SubmissionDate{XXXX} -\def\@ShortSubmissionDate{\@SubmissionDate} -\def\@LeaderName{XXXX} -\def\@DeliverableResponsible{XXXX} -\def\@Institution{XXXX} -\def\@InstitutionAddress{XXXX} -\def\@EditorName{XXXX} -\def\@WorkPackage{XXXX} -\def\@TaskNumber{~} -\def\@Version{XXXX} -\def\@SVNRevision{XXXX} -\def\@LastEditor{XXXX} -\def\@Reviewers{~} -\newif\if@Reviewers -\newif\if@Tasks -\@Tasksfalse -\def\@LastDate{XXXX} -\def\@IsPU{} -\def\@IsCO{} -\def\@IsDR{} -\def\@Revision{} -\def\@Task{} - -%%cover fonts -\def\@ProjFont{\fontsize{24}{28}\usefont{T1}{ptm}{b}{n}\selectfont} -\def\@TitleFont{\fontsize{18}{24}\usefont{T1}{ptm}{b}{n}\selectfont} -\def\@Large{\fontsize{18}{21}\usefont{T1}{ptm}{m}{n}\selectfont} -\def\@Small{\fontsize{9}{11}\usefont{T1}{ptm}{m}{n}\selectfont} -\def\@font{\fontsize{12}{12}\usefont{T1}{ptm}{m}{n}\selectfont} -\def\@sc{\fontshape{sc}\selectfont} -\def\@emph{\fontshape{sl}\selectfont} -\def\@bold{\fontseries{b}\selectfont} - - -\newdimen\@CoverPageWidth -\newdimen\@CoverPageHeight -\newdimen\@TableWidth -\@CoverPageWidth=\paperwidth -\@CoverPageHeight=\paperheight -\@TableWidth=\paperwidth -\advance\@CoverPageWidth by -1.5in -\advance\@CoverPageHeight by -2in -\advance\@TableWidth by -5cm -\newdimen\TableWidth -\TableWidth=\@TableWidth - - -\newcommand{\@CoverBody}{ -\@font -\parbox{\linewidth}{\centering - \vspace{15mm} -% {Project no. 644235}\par - \vspace{6mm} - {\@ProjFont \Project{}}\par - \vspace{6mm} -% {Research \& Innovation Action (RIA)}\par -% {\@sc \large{\textbf{Refactoring Parallel Heterogeneous Resource-Aware Applications -- a Software Engineering Approach}}}\par - \vspace{10mm} - \if@deliverable - {\@TitleFont \@DeliverableTitle\\ - \vspace{18mm} - {Deliverable }\@DeliverableNumber}\par - \vspace{16mm} - \begin{large} - \begin{center} - {\@Authors } - \end{center} - \end{large} - \par - \vspace{1cm} -% \begin{tabular}{r@{: }l} -% Due date of deliverable& \@DueDate\\ -% Actual submission date& \@SubmissionDate -% \end{tabular} - \par - \fi - \if@techreport - {\@TitleFont \@DeliverableTitle\\ - \vspace{3mm}} - {\Project{} Technical Report \# \@ReportNumber}\par - \vspace{6mm} - {\@Authors \vspace{1cm} }\par - \fi - -} -\parbox{\linewidth}{\flushright - \vspace{10mm} - \if@techreport - Report Registration Date: \@SubmissionDate - \else - {\@emph Project:} \@Project \par - \vspace{5mm} - \fi - \if@deliverable - {\@emph Type:} Deliverable\par - {\@emph Due Date:} \@DueDate\par - % {\@emph WP number:} \@WorkPackage\par - %{\@TaskNumber}\par - \vspace{5mm} - {\@emph Responsible team:} \@DeliverableResponsible\par - {\@emph Editor:} \@EditorName\par - {\@emph Team Leader:} \@LeaderName\par - \fi - \if@teamreport - \vspace{5mm} - {\@emph Report type:} Team Leader's Progress Report\par - \vspace{5mm} - {\@emph Name of Team leader:} \@LeaderName\par - {\@emph Institution \& address:} \@InstitutionAddress\par - \fi - \if@wpreport - {\@emph Report type:} WP Leader's Progress Report\par - {\@emph WP number:} \@WorkPackage\par - \vspace{5mm} - {\@emph Name of WP leader:} \@LeaderName\par - {\@emph Institution \& address:} \@InstitutionAddress\par - \fi -} -\vfill -\parbox{\linewidth}{\centering -{Version \@Version}\par - {\@SubmissionDate}\par - \vspace{5mm}} -{ -\newdimen\@msize -\@msize=\linewidth -\advance\@msize by -1cm -\advance\@msize by -6\tabcolsep -\begin{tabular}{ | p{0.7cm} | p{\@msize} | p{0.3cm} |} - \hline - \multicolumn{3}{|c|}{{\@bold Dissemination Level}}\\ - \hline - {\@bold PU} & Public & \@IsPU\\ - \hline - {{\@bold CO}} & Confidential, only for company distribution & \@IsCO\\ - \hline - {\@bold DR} & Draft, not for general circulation & \@IsDR\\ - \hline - \end{tabular} - } -} - -\newcommand{\@PrintCoverPage}{\bgroup\global\setbox255\vbox{% - \vspace*{-.25in}% - \noindent\hspace*{-.25in}% - \renewcommand{\thepage}{\roman{page}} - \pagestyle{myheadings} \markboth{}{} - - \rlap{ - \begin{minipage}[t][\@CoverPageHeight][t]{\@CoverPageWidth}% - \parbox{\linewidth}{ - \begin{minipage}[c]{6cm} - \includegraphics[width=6cm]{iohk-share-logo.jpg} - \end{minipage} - \hfill -% \begin{minipage}[c]{3.5cm} -% \includegraphics[width=3.5cm]{figures/H2020.jpg} -% \end{minipage} - } - \@CoverBody - \end{minipage} - }% -}\egroup\shipout\box255} - - -\newcommand{\@PrintBackCoverPage}{% -\pagestyle{myheadings}% -\markboth{\@Project: \@ShortDelTitle~(\@DeliverableNumber~v.\@Version, \@ShortSubmissionDate)}% - {\@Project: \@ShortDelTitle~(\@DeliverableNumber~v.\@Version, \@ShortSubmissionDate)}% -} - - - -\AtBeginDocument{\@PrintCoverPage\@PrintBackCoverPage% - \renewcommand{\thepage}{\roman{page}}% -% \setcounter{page}{1}% -} - -%% Added change log -- KH - -\newcounter{change} - -\newenvironment{changelog}{% -\clearpage -\setcounter{change}{0} -\section*{Change Log} -% -\begin{tabular}{||p{0.8cm}|p{1.8cm}|p{3cm}|p{1.5cm}|p{7.4cm}||}% -\hline\hline% -\textbf{Rev.} & \textbf{Date} & \textbf{Who} & \textbf{Team} & \textbf{What}% -}{% -\\\hline\hline% -\end{tabular}% -\clearpage% -} - -\newcommand{\change}[4]{\stepcounter{change}% -\\\hline% -\arabic{change}} diff --git a/eras/shelley/formal-spec/Makefile b/eras/shelley/formal-spec/Makefile deleted file mode 100644 index d0716bf86fb..00000000000 --- a/eras/shelley/formal-spec/Makefile +++ /dev/null @@ -1,50 +0,0 @@ -## -## Makefile for a specification of the delegation rules, based on: -## -## https://tex.stackexchange.com/questions/40738/how-to-properly-make-a-latex-project -## - -# Document name -ifndef DOCNAME - DOCNAME = shelley-ledger -endif - -# You want latexmk to *always* run, because make does not have all the info. -# Also, include non-file targets in .PHONY so they are run regardless of any -# file of the given name existing. -.PHONY: $(DOCNAME).pdf all clean - -# The first rule in a Makefile is the one executed by default ("make"). It -# should always be the "all" rule, so that "make" and "make all" are identical. -all: $(DOCNAME).pdf - -## -## CUSTOM BUILD RULES -## - -## -## MAIN LATEXMK RULE -## - -# -pdf tells latexmk to generate PDF directly (instead of DVI). -# -pdflatex="" tells latexmk to call a specific backend with specific options. -# -use-make tells latexmk to call make for generating missing files. - -# -interaction=nonstopmode keeps the pdflatex backend from stopping at a -# missing file reference and interactively asking you for an alternative. - -$(DOCNAME).pdf: $(DOCNAME).tex - latexmk -pdf -pdflatex="pdflatex -synctex=1 -interaction=nonstopmode" -use-make $(DOCNAME).tex - -watch: $(DOCNAME).tex - latexmk -pvc -pdf -pdflatex="pdflatex -synctex=1 -interaction=nonstopmode" -use-make $(DOCNAME).tex - -clean: - latexmk -CA - -install: - mkdir -pv ${out}/nix-support/ - for i in $(DOCNAME) ; do \ - cp $$i.pdf ${out}/ ; \ - echo "doc-pdf $$i ${out}/$$i.pdf" >> ${out}/nix-support/hydra-build-products ; \ - done diff --git a/eras/shelley/formal-spec/Properties.md b/eras/shelley/formal-spec/Properties.md deleted file mode 100644 index 6a042d3f9f9..00000000000 --- a/eras/shelley/formal-spec/Properties.md +++ /dev/null @@ -1,458 +0,0 @@ -# Ledger and Epoch State Validity - -We only care that the properties below are satisfied for _valid_ ledger states, and -more generally, valid _epoch_ states. Checking things for invalid states should -not be performed. As the STS rule system we have defined -is deterministic, all valid states can be reached using the transitions in the system, -and the only states that are valid are those that can be described by a sequence -of rule applications (i.e. a composition of valid transitions). - -# Preservation of Value - -Recall that there are six pots of money in the Shelley ledger: - -* Circulation (total value of the UTxO) -* Deposits -* Fees -* Rewards (total value of the reward accounts) -* Reserves -* Treasury - -For each transition system, we will list what pots are in scope, -describe how value moves between the pots, -and state any relevant properties (usually the preservation of ADA). - -### Transitions with no pots in scope - -* Up -* Ppup -* Avup -* Prtcl -* Overlay -* Updn -* Ocert -* Rupd - -### UTXO, UTXOW - -Pots in scope: Circulation, Deposits, Fees - -Value can be transferred between Circulation and Deposits. -Value can also be transferred to the Fees, but Fees can only -be increased by this transition. - -**Property** The value (Circulation + Deposits + Fees) increases by the sum -of the withdrawals in the transaction. Note that Circulation decreases -due to transaction fees and certificate deposits, and can increase -through the certificate refunds. - -**Property** Fees does not decrease. - -### DELEG, POOL, DELPL - -Pots in scope: Rewards - -**Property** The rewards to do not change (both as an aggregated value -and as individual balances). - -*Note:* here we consider elements that are not present to have a value of 0. On -the implementation there is a difference between an element which is not present -in the rewards map and an element with a 0 rewards balance. - -### DELEGS - -Pots in scope: Rewards - -**Property** The reward pot is decreased by the sum of the withdrawals in the -transaction (in the environment). - -### POOLREAP - -Pots in scope: All - -This transition returns a portion of the the pool certificate deposit to the correct -reward address, provided it is still registered. Otherwise it is given to the treasury. -The total is deducted from the deposit pot. - -**Property** The value Deposits is non-negative. - -**Property (Full Preservation of ADA)** -The value (Circulation + Deposit + Fees + Treasury + Rewards + Reserves) is the same -before and after the transition. - -### LEDGER, LEDGERS, BBODY - -Pots in scope: Circulation, Deposits, Fees, Rewards - -The value lost by UTXO is balanced by the value gained by DELEGS. - -**Property** The value (Circulation + Deposits + Fees + Rewards) is the same -before and after the transition. - -### NEWEPOCH - -Pots in scope: All - -Besides using the EPOCH transition, NEWEPOCH applies a reward update. -The reward update decreases the reserves and the fee pot, -but increases the treasury and the reward pot. - -**Property** The value (Reserves + Fees + Treasury + Rewards) is the same -before and after the transition. - -**Property** The Circulation and Deposits do not change. - -### SNAP - -Pots in scope: Circulation, Deposits, Fees - -The snapshot transition moves decayed deposits from the deposit pot to -the fee pot. - -**Property** The Deposits value decreases by the amount that Fees increases. - -### NEWPP - -Pots in scope: Circulation, Deposits, Fees, Treasury, Reserves - -The new protocol parameter transition adjusts the deposit pot to meet -the current obligation, and the difference is made up by the reserves. - -**Property** The value (Deposits + Reserves) is the same -before and after the transition. Note that it is possible for Deposits -to increase or decrease. - -**Property** The values Circulation, Fees, and Treasury do not change. - -### EPOCH - -Pots in scope: All - -With respect to the pots, the EPOCH transition uses each of the following -once: SNAP, POOLREAP, and NEWPP. - -**Property (Full Preservation of ADA)** - -### TICK - -Pots in scope: All - -With respect to the pots, the TICK transition uses each of the following -once: NEWEPOCH and RU. - -**Property (Full Preservation of ADA)** - -### CHAIN - -Pots in scope: All - -With respect to the pots, the CHAIN transition uses each of the following -of HEAD, PTRCL, and BBODY. - -**Property (Full Preservation of ADA)** - -### Slots and Epochs - -As an easy consequence of the Full Preservation of ADA for the CHAIN -transition is the following: - -**Property (Full Preservation of ADA)** The total amount of ADA in the system -(Circulation + Deposit + Fees + Treasury + Rewards + Reserves), -remains constant at each slot and at each epoch. - -# Time Traveling Header Properties - -We need to adapt properties 1 -3, from section 8 of the byron chain spec, to Shelley. - -# Update Properties - -**Property** -There can be at most one change to the protocol parameters per epoch. -Moreover, the protocol parameter update state is always empty at begining of epoch. - -**Property** -If there are no pending future application versions, -there will not be a change to the version for at least SlotsPerEpoch. - -**Property** -Updating the software versions, without updating the protocol version, -results in no change to the transition systems. -Note that changes to the transition system resulting from a new -protocol version will be difficult to state formally, since this -depends on logic in the software changing the ledger rules. - -**Definition** -Let **num-genesis** be the number of genesis nodes -(concretely this value is seven). - -**Definition** -Let **quorum** be the number of genesis nodes needed for consensus -on votes (concretely this value is five). - -**Property** -If there are only (quorum -1)-many gen keys active, there can be no new future -application version or protocol parameters. - -**Property** - -**Property** -The keys (of type Slot) of the following two mappings are always past the current slot: -the future application versions (favs) and the future genesis delegation mapping (fGenDelegs). -The favs slots can appear in any current or future epoch, but the fGenDelegs slots -can be at most one epoch into the future. - -**Property** -The size of the mappings PPUpdate, inside the update state, is always at most (num-genesis - 1). - -**Property** -The size of the mappings AVUpdate, inside the update state, is always at most num-genesis. - -# Epoch Boundary Transition Properties - -**Property** The `NEWEPOCH` transition can always be invoked at the epoch boundary -(i.e. when `e = e_l + 1`). Thus, the transitions it depends on, `SNAP`, `POOLREAP`, `NEWPP`, -and `EPOCH`, can always be invoked as well. Note that when no blocks are produced, -the `CHAIN` rule is blocked and `NEWEPOCH` never fires. - -Transitions `SNAP`, `POOLREAP`, and `EPOCH` have no preconditions in the -antecedents of their rules. `NEWPP` has two associated rules, and the disjunction of the -preconditions in these rules is a tautology. We justify -the non-blocking of these rules by this reasoning. - -# Deposits Properties - -**Property** -The deposits pot is always greater that the current obligation -(ie the total amount of coin needed to refund every stake registration and -pool registration certificate that are currently registered). -In particular, the UTXO and POOLREAP rule can never result in a -negative value for deposits. - -# Staking Properties - -**Consistency Property for Boundary Case** -If no stake keys are registered, the rewards from the reward update -will always sum to zero. - -**Property** -If no stake pools are registered, the rewards from the reward update -will always sum to zero. - -**Property** -The sum of stake in the stake snapshots is always at most forty-five billion ADA. - -**Property** -The following delegation mappings always has the same size: -`stkCreds`, `rewards`, and `ptrs`. -Moreover, the key set of `stkCreds` is the same -as the range of `ptrs`, which also corresponds one-one with the reward addresses -in `rewards`. Finally, the key set of `delegations` is a subset of that of `stkCreds`. - -**Property** -If all stake keys and pools deregister, then, assuming that no one registers anything, -by epoch `e+1`, where `e` is the max epoch in the stake pool retirement mapping, -the delegation state will be nearly empty. More precisely, -the mappings `stkCreds`, `rewards`, `delegations`, `ptrs`, `stpools`, `poolParams`, -and `retiring` are all the empty map. -(The map `cs` will have size seven, for the genesis keys.) - -# Genesis Node Property - -**Property** -The size of the genesis delegation mapping `genDelegs` is always num-genesis. -Note that the value num-genesis can be given as the size of the -mapping inherited from Byron. - - -# Entropy Properties - -**Consistency Property** -In the absence of the extra entropy parameter, -the epoch nonce is what you get from combining the blocks leading up to it -(and stopping `StabilityWindow`-many slots in the previous epoch). - -# Decentralization Properties - -**Consistency Property** -The overlay schedule is obeyed: no blocks are produced during the silent blocks, -and only core nodes makes blocks on the overlay slots. - -# Rewards Properties - -**Property** -At the start of each epoch, the reward update is set to NOTHING. -Moreover, the reward update will change exactly once during the epoch, -to a non-NOTHING value. - -**Property** -All members of stake pools that did not meet their pledges will receive zero -rewards for the epoch. - -# Block Header Properties - -**Consistency Property** -The body size and block body hash listed in the block header are correct. -Correct refers to the two predicates given in the BBODY transition. - -# Block Count Properties - -**Property** -The number of blocks made in an epoch is equal to number of active overlay slots plus -the sum of the values in the `BlocksMade` mapping. - -**Property** -The number blocks made in an epoch is never greater than the number of slots in an epoch. - -# Authorization Properties - -TODO - Without just restating predicates already in our rules, how can we -state properties stating that UTxO transfer, certificates, etc, are properly authorized? - - -# Praos Properties - -**_The following Properties are taken from the Ouroboros Praos Document. Not all of them will reflect -into ledger properties, but we should record them somewhere since they will be overall concerns that -should be driving tests/proofs. _** - -Persistence and Liveness seem to be the key properties of interest. - -Some questions: - -What does semisynchronous actually mean? -What implications does this protocol have for performance? -What are acceptable values for various system protocol parameters? - -The following are examples of things that should be part of some overview document - -(1) potentially, multiple slot leaders may be elected for a particular slot (forming a slot leader set); - -(2) frequently, slots will have no leaders assigned to them; and - -(3) a priori, only a slot leader is aware that it is indeed a leader for a given slot; this assignment is unknown to all the other stakeholders—including other slot leaders of the same slot—until the other stakeholders receive a valid block from this slot leader. - - - -**Independent aggregation property (Property 2)** - -Page 10: The probability of a stakeholder becoming a slot leader in a particular slot is independent of whether this stakeholder acts as a single party in the protocol, or splits its stake among several “virtual” parties. - -_This is a technical property that may have some deeper implications. -Invariance of selection rule under arbitrary reassignment of stake._ - -**Strong consistency between theoretical and real world experiments** - -Page 11: Any property of the protocol that we prove true in the hybrid experiment (such as achieving common prefix, chain growth and chain quality) will remain true (with overwhelming probability) in the setting where FVRF and FKES are replaced by their real-world implementations—in the so-called real experiment (p.11). Argued in Theorems 1 & 2. - - -**"Small" Divergence** - -Page 16: With high probability, the characteristic strings induced by protocol πSPoS have small divergence and hence provide strong guarantees on common prefix. - -_"small" needs to be quantified - is this an absolute measure, or relative to a period of time (epoch, system, slot) -- we might be able to ensure specific levels of divergence throughout a slot for example_ - -**Subadditivity of φ** - -Page 17: Proposition 1. The function φf (α) satisfies the following properties. 􏰍􏰎 - -φ -􏰓α =1−􏰔(1−φ (α))≤􏰓φ (α), α ≥0, fififii -iii -φf(α) = φf(α) ≥ α, α ∈ [0,1]. -(5) -(6) - -_Proposition 1 needs to be embedded in the spec (true by design and construction?)_ - -**Common prefix** - -Page 19: There is a low probability of violating the common prefix condition. - -Theorem 5 (Common prefix). Let k,R,∆ ∈ N and ε ∈ (0,1). Let A be an α-dominated adversary against the protocol πSPoS for some α satisfying α(1−f)∆ ≥ (1+ε)/2. Then the probability that A, when executed in a ∆-semisynchronous environment, makes πSPoS violate the common prefix property with parameter k throughout a period of R slots is no more than exp(ln R + ∆ − Ω(k)). The constant hidden by the Ω(·)-notation depends on ε. - -_This is a key property. It may be necessary to test this rather than proving it. It should be embedded by design in the spec. Note that the three properties in this section use exponentials. How does this relate to the non-integer calcs?_ - - -**Chain growth** - -Page 20: The length of the chain grows by at least the number of slots. - -Theorem 6 (Chain growth). Let k, R, ∆ ∈ N and ε ∈ (0, 1). Let A be an α-dominated adversary against the protocol πSPoS for some α > 0. Then the probability that A, when executed in a ∆-semi- synchronous environment, makes πSPoS violate the chain growth property with parameters s ≥ 4∆ and τ = cα/4 throughout a period of R slots, is no more than exp (−cαs/(20∆) + ln R∆ + O(1)), where c denotes the constant c:=c(f,∆)=f(1−f)∆. - -_This is a key property that is worth verifying/proving. It might also form the basis for progress/productivity._ - - - -**Chain quality** - -Page 21: There is a low probability of violating the chain property condition. - -Theorem 7 (Chain quality). Let k, R, ∆ ∈ N and ε ∈ (0, 1). Let A be an α-dominated adversary against the protocol πSPoS for some α > 0 satisfying α(1−f)∆ ≥ (1+ε)/2. Then the probability that A, when executed in a ∆-semisynchronous environment, makes πSPoS violate the chain quality property with parameters k and μ = 1/k throughout a period of R slots, is no more than exp(ln R − Ω(k)). - -_Another key property. Approach should be similar to common prefix._ - -**Probability Calculations** - -Page 21 contains two displayed conditions that could be used to generate tests to confirm correct probabilities. - -R∆ exp(−cα(s − 3∆)/(20∆)) = exp(−cα(s − 3∆)/(20∆) + ln R∆) - -Pr [g(x) ≤ b(x)] ≤ Pr [g(x) ≤ b(x)] -x←Df x←Dαf - -**Theorem 8** - -Page 22: Every adaptive adversary A that corrupts at most (1−α)-fraction of stake throughout the whole execution is α-dominated. - -_Is this related to the slot leadership? -Is the corruption monitored/verified/avoided somehow? Or is it just a condition/assumption?_ - - -**Participation** - -Page 25: It is sufficient for an honest stakeholder to join at the beginning of each epoch, determine whether she belongs to the slot leader set for any slots within this epoch (using the Eval interface of FVRF), and then come online and act on those slots while maintaining online presence at least every k slots. - -_It's not obvious from this whether a non-participating actor could disrupt the system (e.g. by -causing timeslot problems). Does non-participation imply loss of benefit? Do we need to assure -adequate participation by all stakeholders? Can we use the assumption to help ensure progress? -Also what happens if a slot leader fails to participate? -Some of these discussions may be in the design document?_ - -**Theorem 9** - -Page 26: The protocol πDPoS, with access to Fτ,r , with τ ≤ 8k/(1 + ε) satisfies persistence with parameters RLB -k and liveness under specific conditions. - -_Theorem 9 is the main persistence and liveness property. -I assume this has been evaluated empirically (graph of probabilities/simulation). -Are there any false independence assumptions? -Liveness refers to honest actors and transactions. If there are no honest transactions, -there will presumably be no growth? -What assumptions are being made here in terms of deadlock, availability etc. -(these could have a major impact on system viability_ - - -**Key pair correctness** - -Page 30: Correctness: for every key pair (KES.sk1,KES.vk) ← Gen(1k,T), every message m and every -time period j ≤ T , VerifyKES.vk (m, SignKES.skj (m)) = 1 - -_Check assumptions. The proof should be by construction and design if the spec is consistent with the Praos document._ - - -**Test Properties** - -Page 33/34: Various possible attacks are given. The protocol implementation should defend against these. - -_These look like ways to drive test case generation_ - - -#Multi-signature properties - -**Sufficient Signatures are Provided to authorise Multi-Signature Transactions** - -Outputs of transactions that require multiple signatures will be "locked" against use until at least the -required number of signatures is provided. - -_This should come by construction from the rules in the multi-sig spec._ diff --git a/eras/shelley/formal-spec/address-binary.tex b/eras/shelley/formal-spec/address-binary.tex deleted file mode 100644 index 91512d4da62..00000000000 --- a/eras/shelley/formal-spec/address-binary.tex +++ /dev/null @@ -1,109 +0,0 @@ -\section{Binary Address Format} -\label{sec:address-binary} - -\newcommand{\binary}[1]{\ensuremath{\mathsf{#1}}} - -Excepting bootstrap addresses, -the binary format for every address has a 1-byte header, followed by a payload -(bootstrap addresses use the binary encoding from the Byron era). -The header is composed of two nibbles (two 4-bit segments), -indicating the address type and the network id. - -$$ -\begin{array}{r@{~=~}l} - \mathsf{address} & \mathsf{header\_byte}|\mathsf{payload} \\ - & \mathsf{addr\_type\_nibble}|\mathsf{network\_nibble}|\mathsf{payload} -\end{array} -$$ - -\subsection{Header, first nibble} -\label{sec:address-binary-header-first-nibble} - -The first nibble of the header specifies the type of the address. -Bootstrap addresses can also be identified by the first nibble. - -\begin{center} -\begin{tabular}{ |c|c|c|c| } - \hline - address type & payment credential & stake credential & header, first nibble \\ - \hline - \hline - base address & keyhash & keyhash & \binary{0000} \\ - base address & scripthash & keyhash & \binary{0001} \\ - base address & keyhash & scripthash & \binary{0010} \\ - base address & scripthash & scripthash & \binary{0011} \\ - \hline - pointer address & keyhash & ptr & \binary{0100} \\ - pointer address & scripthash & ptr & \binary{0101} \\ - \hline - enterprise address & keyhash & - & \binary{0110} \\ - enterprise address & scripthash & - & \binary{0111} \\ - \hline - bootstrap address & keyhash & - & \binary{1000} \\ - \hline - stake address & - & keyhash & \binary{1110} \\ - stake address & - & scripthash & \binary{1111} \\ - \hline - future formats & ? & ? & \binary{1001}-\binary{1101} \\ - \hline -\end{tabular} -\end{center} - -\subsection{Header, second nibble} -\label{sec:address-binary-header-second-nibble} - -Excepting bootstrap addresses, the second nibble of the header specifies the network. - -\begin{center} -\begin{tabular}{ |c|c| } - \hline - network & header, second nibble \\ - \hline - \hline - testnets & \binary{0000} \\ - mainnet & \binary{0001} \\ - future networks & \binary{0010}-\binary{1111}\\ - \hline -\end{tabular} -\end{center} - -\subsection{Header, examples} -\label{sec:address-binary-header-examples} - -On a \textbf{testnet}, -the header for a \textbf{pointer} address whose payment credential is a \textbf{keyhash} is: -$$\binary{00000100}$$ - -On \textbf{mainnet}, the header for a \textbf{pointer} address whose payment credential is a \textbf{keyhash} is: -$$\binary{00010100}$$ - -On \textbf{mainnet}, the header for a \textbf{pointer} address whose payment credential is a \textbf{scripthash} is: -$$\binary{00010101}$$ - -\subsection{Payloads} -\label{sec:address-binary-payloads} - -The payload for the different address types are as follows: - -\begin{center} -\begin{tabular}{ |c|c| } - \hline - address type & payload \\ - \hline - \hline - base address & two 28-byte bytestrings \\ - \hline - pointer address & one 28-byte bytestring, - and three variable-length unsigned integers \\ - \hline - enterprise address & one 28-byte bytestrings \\ - \hline - stake address & one 28-byte bytestrings \\ - \hline -\end{tabular} -\end{center} - -The variable-length encoding used in pointers addresses is the base-128 representation -of the number, with the most significant bit of each byte indicating continuation -(this is sometimes called a variable-length quantity, or VLQ). -If the significant bit is $1$, then another byte follows. diff --git a/eras/shelley/formal-spec/address.tex b/eras/shelley/formal-spec/address.tex deleted file mode 100644 index 310deb80ca8..00000000000 --- a/eras/shelley/formal-spec/address.tex +++ /dev/null @@ -1,219 +0,0 @@ -\section{Addresses} -\label{sec:addresses} - -Addresses are described in section 4.2 of the delegation design document \cite{delegation_design}. -The types needed for the addresses are defined in Figure~\ref{fig:defs:addresses}. -They all involve a credential, which is either a key or a multi-signature script. -There are four types of UTxO addresses: -\begin{itemize} -\item Base addresses, $\AddrB$, containing the hash of a payment credential and - the hash of a staking credential. Note that the payment credential hash is the - hash of the key (or script) which has contol of the funds at this address, - i.e. is able to witness spending - them. The staking credential controls the delegation - decision for the Ada at this address (i.e. it is used for rewards, staking, - etc.). - The staking credential - must be a (registered) delegation credential (see Section~\ref{sec:delegation-shelley} - for a discussion of the delegation mechanism). -\item Pointer addresses, $\AddrP$, containing the hash of a payment credential - and a pointer to a stake credential registration certificate. -\item Enterprise addresses, $\AddrE$, - containing only the hash of a payment credential (and which have no staking rights). -\item Bootstrap addresses, $\AddrBS$, corresponding to the addresses in - Byron, behaving exactly like enterprise addresses with a key hash - payment credential. -\end{itemize} - -\noindent Where a credential is either a key or a multi-signature script. Together, these -four address types make up the $\Addr$ type, which will be used in transaction -outputs in Section~\ref{sec:utxo}. The notations -$\Credential_{pay}$ and $\Credential_{stake}$ do not represent distinct types. -The subscripts are annotations indicating how the credential is being used. - -Section 5.5.2 of~\cite{delegation_design} provides the motivation behind enterprise -addresses and explains why one might forgo staking rights. -Bootstrap addresses are needed for the Byron-Shelley transition in order to -accommodate having UTxO entries from the Byron era during the Shelley era. - -There are also subtypes of the address types which correspond to the credential -being either a key hash (the $vkey$ subtype) or a script hash (the $script$ -subtype). So for example $\Addr_{base}^{script}$ is the type of base addresses -which have a script hash as pay credential. This approach is used to facilitate -expressing the restriction of the domain of certain functions to a specific -credential type. - -Note that for security, privacy and usability reasons, the staking (delegating) -credential associated with an address should be different from its payment -credential. Before the stake credential is registered and delegated to an -existing stake pool, the payment credential can be used for transactions, though -it will not receive rewards from staking. Once a stake credential is -registered, the shorter pointer addresses can be generated. - -Finally, there is an account style address $\AddrRWD$ which contains the hash of -a staking credential. These account addresses will only be used for receiving -rewards from the proof of stake leader election. Appendix A -of~\cite{delegation_design} explains this design choice. The mechanism for -transferring rewards from these accounts will be explained in -Section~\ref{sec:utxo} and follows the approach outlined in the -document~\cite{chimeric}. - -Note that, even though in the Cardano system, most of the -accounting is UTxO-style, the reward addresses are a special case. Their -use is restricted to only special cases (e.g. collecting rewards from them), -outlined in the rules in Sections~\ref{sec:utxo} and Section~\ref{sec:epoch}. -For each staking credential, we use the function $\fun{addr_{rwd}}$ to create -the reward address corresponding to the credential, or to access an existing one -if it already exists. -Note that $\fun{addr_{rwd}}$ uses the global constant $\NetworkId$ to -attach a network ID to the given stake credential. - -Base, pointer and enterprise addresses contain a payment credential which is -either a key hash or a script hash. Base addresses contain a staking credential -which is also either a key hash or a script hash. - -\begin{figure*}[hbt] - \emph{Abstract types} - % - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \var{slot} & \Slot & \text{absolute slot}\\ - \var{ix} & \Ix & \text{index}\\ - \var{net} & \Network & \text{either $\mathsf{Testnet}$ or $\mathsf{Mainnet}$}\\ - \end{array} - \end{equation*} - % - \emph{Derived types} - % - \begin{equation*} - \begin{array}{r@{\in}l@{\qquad=\qquad}lr} - \var{cred} & \Credential & \KeyHash\uniondistinct\HashScr \\ - \var{(s,t,c)} - & \Ptr - & \Slot\times\Ix\times\Ix - & \text{certificate pointer} - \\ - \var{addr} - & \AddrB - & \Network\times\Credential_{pay}\times\Credential_{stake} - & \text{base address} - \\ - \var{addr} - & \AddrP - & \Network\times\Credential_{pay}\times\Ptr - & \text{pointer address} - \\ - \var{addr} - & \AddrE - & \Network\times\Credential_{pay} - & \text{enterprise address} - \\ - \var{addr} - & \AddrBS - & \Network\times\KeyHash_{pay} - & \text{bootstrap address} - \\ - \var{addr} - & \Addr - & \begin{array}{l@{~\uniondistinct}l} - \AddrB & \AddrP \uniondistinct \AddrE - \\ - & \AddrBS - \end{array} - & \text{output address} - \\ - \var{acct} - & \AddrRWD - & \Network\times\Credential_{stake} - & \text{reward account} - \\ - \end{array} - \end{equation*} - % - \emph{Address subtypes} - % - \begin{equation*} - \begin{array}{r@{~\in~}l@{\qquad=\qquad}lr} - \var{addr^{vkey}_{base}} - & \Addr^{vkey}_{base} - & \KeyHash\restrictdom\Addr_{base} - \\ - \var{addr^{script}_{base}} - & \Addr^{vkey}_{base} - & \HashScr\restrictdom\Addr_{base} - \\ - \var{addr^{vkey}_{ptr}} - & \Addr^{vkey}_{ptr} - & \KeyHash\restrictdom\Addr_{ptr} - \\ - \var{addr^{script}_{ptr}} - & \Addr^{vkey}_{ptr} - & \HashScr\restrictdom\Addr_{ptr} - \\ - \var{addr^{vkey}_{enterprise}} - & \Addr^{vkey}_{enterprise} - & \Addr_{enterprise}\cap\KeyHash - \\ - \var{addr^{script}_{enterprise}} - & \Addr^{vkey}_{enterprise} - & \Addr_{enterprise}\cap\HashScr - \\[0.5cm] - \var{addr^{vkey}} & - \Addr^{vkey} & - \Addr^{vkey}_{base} \uniondistinct \Addr^{vkey}_{ptr} \uniondistinct \Addr^{vkey}_{enterprise} \uniondistinct \Addr_{bootstrap}\\[0.3cm] - \var{addr^{script}} & - \Addr^{script} & - \Addr^{script}_{base} - \uniondistinct \Addr^{script}_{ptr} - \uniondistinct - \Addr^{script}_{enterprise} - \\[0.5cm] - \var{addr_{rwd}^{vkey}} & \Addr_{rwd}^{vkey} & \Addr_{rwd}\cap\KeyHash \\ - \var{addr_{rwd}^{script}} & \Addr_{rwd}^{script} & \Addr_{rwd}\cap\HashScr \\ - \end{array} - \end{equation*} - % - \emph{Accessor Functions} - % - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \fun{paymentHK} & \AddrVKey \to \KeyHash_{pay} - & \text{hash of payment key from addr}\\ - \fun{validatorHash} & \AddrScr \to \HashScr & \text{hash of validator - script} \\ - \fun{stakeCred_{b}} & \AddrB \to - \StakeCredential & \text{stake credential from base - addr}\\ - \fun{stakeCred_{r}} & \AddrRWD \to \StakeCredential & \text{stake credential - from reward addr}\\ - \fun{addrPtr} & \AddrP \to \Ptr - & \text{pointer from pointer addr}\\ - \fun{netId} & \Addr \to \Network - & \text{network Id from addr}\\ - \end{array} - \end{equation*} - % - \emph{Constructor Functions} - % - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \fun{addr_{rwd}} - & \Credential_{stake} \to \AddrRWD - & \begin{array}{l} - \text{construct a reward account,} \\ - \text{implicitly using $\NetworkId$} - \end{array} - \end{array} - \end{equation*} - % - \emph{Constraints} - % - \begin{equation*} - \var{hk_1} = \var{hk_2} \iff \fun{addr_{rwd}}~\var{hk_1} = \fun{addr_{rwd}}~\var{hk_2} - ~~~ \left( \fun{addr_{rwd}} \text{ is injective} \right) - \end{equation*} - \caption{Definitions used in Addresses} - \label{fig:defs:addresses} -\end{figure*} - -\clearpage diff --git a/eras/shelley/formal-spec/bootstrap-witnesses.tex b/eras/shelley/formal-spec/bootstrap-witnesses.tex deleted file mode 100644 index b802fe75e6f..00000000000 --- a/eras/shelley/formal-spec/bootstrap-witnesses.tex +++ /dev/null @@ -1,55 +0,0 @@ -\section{Bootstrap Witnesses} -\label{sec:bootstrap-witnesses} - -\subsection{Bootstrap Witnesses CBOR Specification} - -In the Byron era of Cardano, public keys are transmitted -on chain as extended public keys as specified in \cite{bip32}. -The Shelley era of Cardano does not use extended public keys, -but does use the same cryptographic signing algorithm, -namely Ed25519. - -The extended public key consists of 64 bytes, -the first 32 of which corresponds to the public key, -the second 32 of which correpsonds to something called the chain code: - -$$\mathsf{extended\_pubkey} = \mathsf{pubkey}|\mathsf{chain\_code}$$ - -The chaincode is required for constructing bootstrap witnesses. - -The CBOR specification of bootstrap witnesses, -named $\mathsf{bootstrap\_witness}$, -is given in -\url{https://github.com/intersectmbo/cardano-ledger/tree/master/eras/shelley/impl/cddl-files}. - -In the Shelley era, only pubkey address are supported, -and are named bootstrap addresses. - -The bootstrap witness consists of the public key, the signature, -the chain code, and the address attributes. -As explained above, the public key and the signature format -are the same as for all other witnesses in the Shelley era. -The address attributes has the same format as from the Byron era address, -as specified by $\mathsf{addrattr}$ in -\url{https://github.com/intersectmbo/cardano-ledger/blob/master/eras/byron/cddl-spec/byron.cddl}. - - -\subsection{Bootstrap Address ID Recovery} - -The bootstrap address ID, named $\mathsf{addressid}$ in the Byron CDDL -specification above, can be computed as follows. - -First construct the following byte string: - -$$\mathsf{b} = - \mathsf{0x830082005840} - | \mathsf{pubkey\_bytes} - | \mathsf{chain\_code\_bytes} - | \mathsf{attributes\_bytes} -$$ - -The address ID is then obtained by first applying -sha3 256 to $\mathsf{b}$ and then applying blake2b44 to the result. -$$\mathsf{address\_id} = - \mathsf{blake2b44}(\mathsf{sha3\_256}~\mathsf{b}) -$$ diff --git a/eras/shelley/formal-spec/cddl.tex b/eras/shelley/formal-spec/cddl.tex deleted file mode 100644 index e35d2788e57..00000000000 --- a/eras/shelley/formal-spec/cddl.tex +++ /dev/null @@ -1,17 +0,0 @@ -\section{CBOR Serialization Specification} -\label{sec:cddl} - -Our CBOR (RFC 7049 \cite{rfcCBOR}) -serialization scheme is specified using -CDDL (RFC 8610 \cite{rfcCDDL}). - -The CDDL specification is located at -\url{https://github.com/intersectmbo/cardano-ledger/tree/master/eras/shelley/impl/cddl-files}. - -% TODO - Include the CDDL spec inline? -% \lstinputlisting[backgroundcolor = \color{lightgray}]{../impl/cddl-files/shelley.cddl} - -Note that the ledger does -\textbf{not support a canonical representation}. -This is an intentional decision to discourage people from -checking signatures and hashes on re-serialized data. diff --git a/eras/shelley/formal-spec/chain.tex b/eras/shelley/formal-spec/chain.tex deleted file mode 100644 index 8a2c2cd5504..00000000000 --- a/eras/shelley/formal-spec/chain.tex +++ /dev/null @@ -1,2019 +0,0 @@ -\section{Blockchain layer} -\label{sec:chain} - -This chapter introduces the view of the blockchain layer as required for the -ledger. This includes in particular the information required for the epoch -boundary and its rewards calculation as described in Section~\ref{sec:epoch}. It -also covers the transitions that keep track of produced blocks in order to -calculate rewards and penalties for stake pools. - -The main transition rule is $\mathsf{CHAIN}$ which calls the subrules -$\mathsf{NEWEPOCH}$ and $\mathsf{UPDN}$, $\mathsf{VRF}$ and $\mathsf{BBODY}$. - -\subsection{Block Definitions} -\label{sec:defs-blocks} - -\begin{figure*}[htb] - \emph{Abstract types} - % - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \var{h} & \HashHeader & \text{hash of a block header}\\ - \var{hb} & \HashBBody & \text{hash of a block body}\\ - \var{bn} & \BlockNo & \text{block number}\\ - \end{array} - \end{equation*} - % - \emph{Operational Certificate} - % - \begin{equation*} - \OCert = - \left( - \begin{array}{r@{~\in~}lr} - \var{vk_{hot}} & \VKeyEv & \text{operational (hot) key}\\ - \var{n} & \N & \text{certificate issue number}\\ - c_0 & \KESPeriod & \text{start KES period}\\ - \sigma & \Sig & \text{cold key signature}\\ - \end{array} - \right) - \end{equation*} - % - \emph{Block Header Body} - % - \begin{equation*} - \BHBody = - \left( - \begin{array}{r@{~\in~}lr} - \var{prev} & \HashHeader^? & \text{hash of previous block header}\\ - \var{vk} & \VKey & \text{block issuer}\\ - \var{vrfVk} & \VKey & \text{VRF verification key}\\ - \var{blockno} & \BlockNo & \text{block number}\\ - \var{slot} & \Slot & \text{block slot}\\ - \eta & \Seed & \text{nonce}\\ - \var{prf}_{\eta} & \Proof & \text{nonce proof}\\ - \ell & \unitInterval & \text{leader election value}\\ - \var{prf_{\ell}} & \Proof & \text{leader election proof}\\ - \var{bsize} & \N & \text{size of the block body}\\ - \var{bhash} & \HashBBody & \text{block body hash}\\ - \var{oc} & \OCert & \text{operational certificate}\\ - \var{pv} & \ProtVer & \text{protocol version}\\ - \end{array} - \right) - \end{equation*} - % - \emph{Block Types} - % - \begin{equation*} - \begin{array}{r@{~\in~}l@{\qquad=\qquad}l} - \var{bh} - & \BHeader - & \BHBody \times \Sig - \\ - \var{b} - & \Block - & \BHeader \times \seqof{\Tx} - \end{array} - \end{equation*} - \emph{Abstract functions} - % - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \bhHash{} & \BHeader \to \HashHeader - & \text{hash of a block header} \\ - \bHeaderSize{} & \BHeader \to \N - & \text{size of a block header} \\ - \bBodySize{} & \seqof{\Tx} \to \N - & \text{size of a block body} \\ - \slotToSeed{} & \Slot \to \Seed - & \text{convert a slot to a seed} \\ - \prevHashToNonce{} & \HashHeader^? \to \Seed - & \text{convert an optional header hash to a seed} \\ - \fun{bbodyhash} & \seqof{\Tx} \to \HashBBody \\ - \end{array} - \end{equation*} - % - \emph{Accessor Functions} - \begin{equation*} - \begin{array}{r@{~\in~}l@{~~~~~~~~~~}r@{~\in~}lr} - \fun{bheader} & \Block \to \BHeader & - \fun{bhbody} & \BHeader \to \BHBody \\ - \fun{hsig} & \BHeader \to \Sig & - \fun{bbody} & \Block \to \seqof{\Tx} \\ - \fun{bvkcold} & \BHBody \to \VKey & - \fun{bvkvrf} & \BHBody \to \VKey \\ - \fun{bprev} & \BHBody \to \HashHeader^? & - \fun{bslot} & \BHBody \to \Slot \\ - \fun{bblockno} & \BHBody \to \BlockNo & - \fun{bnonce} & \BHBody \to \Seed \\ - \fun{\bprfn{}} & \BHBody \to \Proof & - \fun{bleader} & \BHBody \to \N \\ - \fun{\bprfl{}} & \BHBody \to \Proof & - \fun{hBbsize} & \BHBody \to \N \\ - \fun{bhash} & \BHBody \to \HashBBody & - \fun{bocert} & \BHBody \to \OCert \\ - \end{array} - \end{equation*} - % - \caption{Block Definitions} - \label{fig:defs:blocks} -\end{figure*} - -\clearpage - -\subsection{MIR Transition} -\label{sec:mir-trans} - -The transition which moves the instantaneous rewards is $\mathsf{MIR}$. -Figure~\ref{fig:ts-types:mir} defines the types for the transition. -It has no environment or signal, and the state is $\EpochState$. - -\begin{figure} - \emph{MIR Transitions} - \begin{equation*} - \vdash \var{\_} \trans{mir}{} \var{\_} \subseteq - \powerset (\EpochState \times \EpochState) - \end{equation*} - \caption{MIR transition-system types} - \label{fig:ts-types:mir} -\end{figure} - -Figure~\ref{fig:rules:mir} defines the MIR state transition. - -If the reserve and treasury pots are large enough to cover the sum -of the corresponding instantaneous rewards, -the reward accounts are increased by the appropriate amount -and the two pots are decreased appropriately. -In either case, if the pots are large enough or not, -we reset both of the instantaneous reward mappings back to the empty mapping. - -\begin{figure}[ht] - \begin{equation}\label{eq:mir} - \inference[MIR] - { - (\var{rewards},~\var{delegations},~ - \var{ptrs},~\var{fGenDelegs},~\var{genDelegs},~\var{i_{rwd}}) - \leteq \var{ds} - \\ - (\var{treasury},~\var{reserves})\leteq\var{acnt} - & - (\var{irReserves},~\var{irTreasury})\leteq\var{i_{rwd}} - \\~\\ - \var{irwdR}\leteq - \left\{ - \fun{addr_{rwd}}~\var{hk}\mapsto\var{val} - ~\vert~\var{hk}\mapsto\var{val}\in(\dom{rewards})\restrictdom\var{irReserves} - \right\} - \\ - \var{irwdT}\leteq - \left\{ - \fun{addr_{rwd}}~\var{hk}\mapsto\var{val} - ~\vert~\var{hk}\mapsto\var{val}\in(\dom{rewards})\restrictdom\var{irTreasury} - \right\} - \\~\\ - \var{totR}\leteq\sum\limits_{\wcard\mapsto v\in\var{irwdR}}v - & - \var{totT}\leteq\sum\limits_{\wcard\mapsto v\in\var{irwdT}}v - \\ - \var{enough}\leteq - \var{totR}\leq\var{reserves} - \land\var{totT}\leq\var{treasury} - \\ - \var{acnt'}\leteq - {\begin{cases} - (\var{treasury}-\var{totT},~\var{reserves}-\var{totR}) - & \var{enough} - \\ - \var{acnt} - & - \text{otherwise} - \end{cases}} - \\~\\ - \var{rewards'}\leteq - {\begin{cases} - \var{rewards}\unionoverridePlus\var{irwdR}\unionoverridePlus\var{irwdT} - & \var{enough} - \\ - \var{rewards} - & - \text{otherwise} - \end{cases}} - \\ - \var{ds'} \leteq - (\varUpdate{\var{rewards}'},~\var{delegations},~ - \var{ptrs},~\var{fGenDelegs},~\var{genDelegs}, - ~(\varUpdate{\emptyset},~\varUpdate{\emptyset})) - } - { - \vdash - {\left(\begin{array}{c} - \var{acnt} \\ - \var{ss} \\ - (\var{us},~(\var{ds},~\var{ps})) \\ - \var{prevPP} \\ - \var{pp} \\ - \end{array}\right)} - \trans{mir}{} - {\left(\begin{array}{c} - \varUpdate{\var{acnt'}} \\ - \var{ss} \\ - (\var{us},~(\varUpdate{\var{ds'}},~\var{ps})) \\ - \var{prevPP} \\ - \var{pp} \\ - \end{array}\right)} - } - \end{equation} - - \caption{MIR rules} - \label{fig:rules:mir} -\end{figure} - -\subsection{New Epoch Transition} -\label{sec:new-epoch-trans} - -For the transition to a new epoch ($\mathsf{NEWEPOCH}$), the -environment is empty and state is given in -Figure~\ref{fig:ts-types:newepoch}, it consists of - -\begin{itemize} -\item The number of the last epoch. -\item The information about produced blocks for each stake pool during the previous epoch. -\item The information about produced blocks for each stake pool during the current epoch. -\item The old epoch state. -\item An optional rewards update. -\item The stake pool distribution of the epoch. -\end{itemize} - -\begin{figure} - \emph{New Epoch states} - \begin{equation*} - \NewEpochState = - \left( - \begin{array}{r@{~\in~}lr} - \var{e_\ell} & \Epoch & \text{last epoch} \\ - \var{b_{prev}} & \BlocksMade & \text{blocks made last epoch} \\ - \var{b_{cur}} & \BlocksMade & \text{blocks made this epoch} \\ - \var{es} & \EpochState & \text{epoch state} \\ - \var{ru} & \RewardUpdate^? & \text{reward update} \\ - \var{pd} & \PoolDistr & \text{pool stake distribution} \\ - \end{array} - \right) - \end{equation*} - % - \emph{New Epoch Transitions} - \begin{equation*} - \vdash \var{\_} \trans{newepoch}{\_} \var{\_} \subseteq - \powerset (\NewEpochState \times \Epoch \times \NewEpochState) - \end{equation*} - % - \emph{Helper function} - \begin{align*} - & \fun{calculatePoolDistr} \in \Snapshot \to \PoolDistr \\ - & \fun{calculatePoolDistr}~(\var{stake},~\var{delegs},~\var{poolParams}) = \\ - & ~~~\left\{\var{hk_p}\mapsto(\sigma,~\fun{poolVRF}~\var{p}) - ~\Big\vert~ - { - \begin{array}{r@{~\in~}l} - \var{hk_p}\mapsto\sigma & \var{sd} \\ - \var{hk_p}\mapsto\var{p} & \var{poolParams} - \end{array} - } - \right\}\\ - & ~~~~\where \\ - & ~~~~~~~~~\var{total} = \sum_{\_ \mapsto c\in\var{stake}} c \\ - & ~~~~~~~~~\var{sd} = \fun{aggregate_{+}}~\left(\var{delegs}^{-1}\circ - \left\{\left( - \var{hk}, \frac{\var{c}}{\var{total}} - \right) \vert (\var{hk}, - \var{c}) \in \var{stake} - \right\}\right) \\ - \end{align*} - - \caption{NewEpoch transition-system types} - \label{fig:ts-types:newepoch} -\end{figure} - -Figure~\ref{fig:rules:new-epoch} defines the new epoch state transition. It has three rules. -The first rule describes the change in the case of $e$ being equal to the next epoch $e_\ell+ 1$. -It also calls the $\mathsf{MIR}$ and $\mathsf{EPOCH}$ rules and checks that the reward update -is net neutral with respect to the Ada in the system. -This should always hold (by the definition of the $\fun{createRUpd}$ function) -and is present only for extra assurance and for help in proving -that Ada is preserved by this transition. -The second rule deals with the case when the epoch signal $e$ is not one greater than the -current epoch \var{e_\ell}. This rule does not change the state. -The third rule is nearly the same as the first rule, only there is no reward update to apply. -This third rule is defined for completeness, but in practice we hope that it is never used, -since it only applies in the case that epoch $e$ processed no blocks after the first -$\StabilityWindow$-many slots. - -In the first case, the new epoch state is updated as follows: - -\begin{itemize} -\item The epoch is set to the new epoch $e$. -\item The mapping for the blocks produced by each stake pool for the previous epoch - is set to the current such mapping. -\item The mapping for the blocks produced by each stake pool for the current epoch - is set to the empty map. -\item The epoch state is updated with: first applying the rewards update \var{ru}, - then calling the $\mathsf{MIR}$ transition, and finally by calling the - $\mathsf{EPOCH}$ transition. -\item The rewards update is set to \Nothing. -\item The new pool distribution \var{pd}' is calculated from the delegation map and - stake allocation of the previous epoch. -\end{itemize} - -\begin{figure}[ht] - \begin{equation}\label{eq:new-epoch} - \inference[New-Epoch] - { - e = e_\ell + 1 - & - \var{ru} \neq \Nothing - & - (\Delta t,~\Delta r,~\var{rs},~\Delta f)\leteq\var{ru} - \\ - \Delta t+~\Delta r+\left(\sum\limits_{\wcard\mapsto v\in\var{rs}} v\right)+\Delta f=0 - \\ - \var{es'}\leteq\fun{applyRUpd}~\var{ru}~\var{es} - & - { - \vdash - \var{es'} - \trans{\hyperref[fig:rules:mir]{mir}}{}\var{es''} - } - & - { - \vdash - \var{es''} - \trans{\hyperref[fig:rules:epoch]{epoch}}{\var{e}}\var{es'''} - } - \\~\\ - {\begin{array}{r@{~\leteq~}l} - (\var{acnt},~\var{ss},~\wcard,~\wcard,~\wcard) & \var{es'''} \\ - (\wcard,~\var{pstake_{set}},~\wcard,~\wcard) & \var{ss} \\ - \var{pd'} & \fun{calculatePoolDistr}~\var{pstake_{set}} \\ - \end{array}} - } - { - \vdash - {\left(\begin{array}{c} - \var{e_\ell} \\ - \var{b_{prev}} \\ - \var{b_{cur}} \\ - \var{es} \\ - \var{ru} \\ - \var{pd} \\ - \end{array}\right)} - \trans{newepoch}{\var{e}} - {\left(\begin{array}{c} - \varUpdate{\var{e}} \\ - \varUpdate{\var{b_{cur}}} \\ - \varUpdate{\emptyset} \\ - \varUpdate{\var{es'''}} \\ - \varUpdate{\Nothing} \\ - \varUpdate{\var{pd}'} \\ - \end{array}\right)} - } - \end{equation} - - \nextdef - - \begin{equation}\label{eq:not-new-epoch} - \inference[Not-New-Epoch] - { - (e_\ell,~\wcard,~\wcard,~\wcard,~\wcard,~\wcard,~\wcard)\leteq\var{nes} - & - e \neq e_\ell + 1 - } - { - \vdash\var{nes}\trans{newepoch}{\var{e}} \var{nes} - } - \end{equation} - - \nextdef - - \begin{equation}\label{eq:no-reward-update} - \inference[No-Reward-Update] - { - (e_\ell,~\wcard,~\wcard,~\wcard,~\var{ru},~\wcard,~\wcard)\leteq\var{nes} - & - e = e_\ell + 1 - & - \var{ru} = \Nothing - \\ - { - \vdash - \var{es} - \trans{\hyperref[fig:rules:mir]{mir}}{}\var{es''} - } - & - { - \vdash - \var{es''} - \trans{\hyperref[fig:rules:epoch]{epoch}}{\var{e}}\var{es'''} - } - \\~\\ - {\begin{array}{r@{~\leteq~}l} - (\var{acnt},~\var{ss},~\wcard,~\wcard,~\wcard) & \var{es'''} \\ - (\wcard,~\var{pstake_{set}},~\wcard,~\wcard) & \var{ss} \\ - \var{pd'} & \fun{calculatePoolDistr}~\var{pstake_{set}} \\ - \end{array}} - } - { - \vdash - {\left(\begin{array}{c} - \var{e_\ell} \\ - \var{b_{prev}} \\ - \var{b_{cur}} \\ - \var{es} \\ - \var{ru} \\ - \var{pd} \\ - \end{array}\right)} - \trans{newepoch}{\var{e}} - {\left(\begin{array}{c} - \varUpdate{\var{e}} \\ - \varUpdate{\var{b_{cur}}} \\ - \varUpdate{\emptyset} \\ - \varUpdate{\var{es'''}} \\ - \var{ru} \\ - \varUpdate{\var{pd}'} \\ - \end{array}\right)} - } - \end{equation} - \caption{New Epoch rules} - \label{fig:rules:new-epoch} -\end{figure} - -\clearpage - -\subsection{Tick Nonce Transition} -\label{sec:tick-nonce-trans} - -The Tick Nonce Transition is responsible for updating the epoch nonce and the -previous epoch's hash nonce at the start of an epoch. Its environment is shown in -Figure~\ref{fig:ts-types:ticknonce} and consists of the protocol parameters -$\var{pp}$, the candidate nonce $\eta_c$ and the previous epoch's last block -header hash as a nonce. Its state consists of the epoch nonce $\eta_0$ and -the previous epoch's last block header hash nonce. - -\begin{figure} - \emph{Tick Nonce environments} - \begin{equation*} - \TickNonceEnv = - \left( - \begin{array}{r@{~\in~}lr} - \var{pp} & \PParams & \text{protocol parameters} \\ - \eta_c & \Seed & \text{candidate nonce} \\ - \eta_\var{ph} & \Seed & \text{previous header hash as nonce} \\ - \end{array} - \right) - \end{equation*} - % - \emph{Tick Nonce states} - \begin{equation*} - \TickNonceState = - \left( - \begin{array}{r@{~\in~}lr} - \eta_0 & \Seed & \text{epoch nonce} \\ - \eta_h & \Seed & \text{seed generated from hash of previous epoch's last block header} \\ - \end{array} - \right) - \end{equation*} - \label{fig:ts-types:ticknonce} -\end{figure} - -The signal to the transition rule $\mathsf{TICKN}$ is a marker indicating -whether we are in a new epoch. If we are in a new epoch, we update the epoch -nonce and the previous hash. Otherwise, we do nothing. - -\begin{figure}[ht] - \begin{equation}\label{eq:tick-nonce-notnewepoch} - \inference[Not-New-Epoch] - { } - { - {\begin{array}{c} - \var{pp} \\ - \eta_c \\ - \eta_\var{ph} \\ - \end{array}} - \vdash - {\left(\begin{array}{c} - \eta_0 \\ - \eta_h \\ - \end{array}\right)} - \trans{tickn}{\mathsf{False}} - {\left(\begin{array}{c} - \eta_0 \\ - \eta_h \\ - \end{array}\right)} - } - \end{equation} - - \nextdef - - \begin{equation}\label{eq:tick-nonce-newepoch} - \inference[New-Epoch] - { - \eta_e \leteq \fun{extraEntropy}~\var{pp} - } - { - {\begin{array}{c} - \var{pp} \\ - \eta_c \\ - \eta_\var{ph} \\ - \end{array}} - \vdash - {\left(\begin{array}{c} - \eta_0 \\ - \eta_h \\ - \end{array}\right)} - \trans{tickn}{\mathsf{True}} - {\left(\begin{array}{c} - \varUpdate{\eta_c \seedOp \eta_h \seedOp \eta_e} \\ - \varUpdate{\eta_\var{ph}} \\ - \end{array}\right)} - } - \end{equation} - - \caption{Tick Nonce rules} - \label{fig:rules:tick-nonce} -\end{figure} - -\subsection{Update Nonce Transition} -\label{sec:update-nonces-trans} - -The Update Nonce Transition updates the nonces until the randomness gets fixed. -The environment is shown in Figure~\ref{fig:ts-types:updnonce} and consists of -the block nonce $\eta$. -The update nonce state is shown in Figure~\ref{fig:ts-types:updnonce} and consists of -the candidate nonce $\eta_c$ and the evolving nonce $\eta_v$. - -\begin{figure} - \emph{Update Nonce environments} - \begin{equation*} - \UpdateNonceEnv = - \left( - \begin{array}{r@{~\in~}lr} - \eta & \Seed & \text{new nonce} \\ - \end{array} - \right) - \end{equation*} - % - \emph{Update Nonce states} - \begin{equation*} - \UpdateNonceState = - \left( - \begin{array}{r@{~\in~}lr} - \eta_v & \Seed & \text{evolving nonce} \\ - \eta_c & \Seed & \text{candidate nonce} \\ - \end{array} - \right) - \end{equation*} - % - \emph{Update Nonce Transitions} - \begin{equation*} - \_ \vdash \var{\_} \trans{updn}{\_} \var{\_} \subseteq - \powerset (\UpdateNonceEnv - \times \UpdateNonceState - \times \Slot - \times \UpdateNonceState - ) - \end{equation*} - \caption{UpdNonce transition-system types} - \label{fig:ts-types:updnonce} -\end{figure} - -The transition rule $\mathsf{UPDN}$ takes the slot \var{s} as signal. There are -two different cases for $\mathsf{UPDN}$: one where \var{s} is not yet -\StabilityWindow{} slots from the beginning of the next epoch and one where -\var{s} is less than \StabilityWindow{} slots until the start of the next epoch. - -Note that in \ref{eq:update-both}, the nonce candidate $\eta_c$ transitions to -$\eta_v\seedOp\eta$, not $\eta_c\seedOp\eta$. The reason for this is that even -though the nonce candidate is frozen sometime during the epoch, we want the two -nonces to again be equal at the start of a new epoch (so that the entropy added -near the end of the epoch is not discarded). - -\begin{figure}[ht] - - \begin{equation}\label{eq:update-both} - \inference[Update-Both] - { - s < \fun{firstSlot}~((\epoch{s}) + 1) - \StabilityWindow - } - { - {\begin{array}{c} - \eta \\ - \end{array}} - \vdash - {\left(\begin{array}{c} - \eta_v \\ - \eta_c \\ - \end{array}\right)} - \trans{updn}{\var{s}} - {\left(\begin{array}{c} - \varUpdate{\eta_v\seedOp\eta} \\ - \varUpdate{\eta_v\seedOp\eta} \\ - \end{array}\right)} - } - \end{equation} - - \nextdef - - \begin{equation}\label{eq:only-evolve} - \inference[Only-Evolve] - { - s \geq \fun{firstSlot}~((\epoch{s}) + 1) - \StabilityWindow - } - { - {\begin{array}{c} - \eta \\ - \end{array}} - \vdash - {\left(\begin{array}{c} - \eta_v \\ - \eta_c \\ - \end{array}\right)} - \trans{updn}{\var{s}} - {\left(\begin{array}{c} - \varUpdate{\eta_v\seedOp\eta} \\ - \eta_c \\ - \end{array}\right)} - } - \end{equation} - \caption{Update Nonce rules} - \label{fig:rules:update-nonce} -\end{figure} - -\subsection{Reward Update Transition} -\label{sec:reward-update-trans} - -The Reward Update Transition calculates a new $\RewardUpdate$ to apply in a -$\mathsf{NEWEPOCH}$ transition. The environment is shown in -Figure~\ref{fig:ts-types:reward-update}, it consists of the produced blocks -mapping \var{b} and the epoch state \var{es}. Its state is an optional reward -update. - -\begin{figure} - \emph{Reward Update environments} - \begin{equation*} - \RUpdEnv = - \left( - \begin{array}{r@{~\in~}lr} - \var{b} & \BlocksMade & \text{blocks made} \\ - \var{es} & \EpochState & \text{epoch state} \\ - \end{array} - \right) - \end{equation*} - % - \emph{Reward Update Transitions} - \begin{equation*} - \_ \vdash \var{\_} \trans{rupd}{\_} \var{\_} \subseteq - \powerset (\RUpdEnv \times \RewardUpdate^? \times \Slot \times \RewardUpdate^?) - \end{equation*} - \caption{Reward Update transition-system types} - \label{fig:ts-types:reward-update} -\end{figure} - -The transition rules are shown in Figure~\ref{fig:rules:reward-update}. There -are three cases, one which computes a new reward update, one which leaves the -rewards update unchanged as it has not yet been applied and finally one that -leaves the reward update unchanged as the transition was started too early. - -The signal of the transition rule $\mathsf{RUPD}$ is the slot \var{s}. The -execution of the transition role is as follows: - -\begin{itemize} -\item If the current reward update \var{ru} is empty and \var{s} is greater than - the sum of the first slot of its epoch and the duration \RandomnessStabilisationWindow, then a - new rewards update is calculated and the state is updated. - (Note the errata in Section~\ref{sec:errata:stability-windows}.) -\item If the current reward update \var{ru} is not \Nothing, i.e., a reward - update has already been calculated but not yet applied, then the state is not updated. -\item If the current reward update \var{ru} is empty and \var{s} is less than or equal to the sum - of the first slot of its epoch and the duration to start rewards \RandomnessStabilisationWindow, - then the state is not updated. -\end{itemize} - -\begin{figure}[ht] - \begin{equation}\label{eq:reward-update} - \inference[Create-Reward-Update] - { - s > \fun{firstSlot}~(\epoch{s}) + \RandomnessStabilisationWindow - & - ru = \Nothing - \\~\\ - ru' \leteq \createRUpd{\SlotsPerEpoch}{b}{es}{\MaxLovelaceSupply} - } - { - {\begin{array}{c} - \var{b} \\ - \var{es} \\ - \end{array}} - \vdash - \var{ru}\trans{rupd}{\var{s}}\varUpdate{\var{ru}'} - } - \end{equation} - - \nextdef - - \begin{equation}\label{eq:reward-update-exists} - \inference[Reward-Update-Exists] - { - ru \neq \Nothing - } - { - {\begin{array}{c} - \var{b} \\ - \var{es} \\ - \end{array}} - \vdash - \var{ru}\trans{rupd}{\var{s}}\var{ru} - } - \end{equation} - - \nextdef - - \begin{equation}\label{eq:reward-too-early} - \inference[Reward-Too-Early] - { - ru = \Nothing - \\ - s \leq \fun{firstSlot}~(\epoch{s}) + \RandomnessStabilisationWindow - } - { - {\begin{array}{c} - \var{b} \\ - \var{es} \\ - \end{array}} - \vdash - \var{ru}\trans{rupd}{\var{s}}\var{ru} - } - \end{equation} - - \caption{Reward Update rules} - \label{fig:rules:reward-update} -\end{figure} - -\subsection{Chain Tick Transition} -\label{sec:tick-trans} - -The Chain Tick Transition performs some chain level -upkeep. The environment consists of a set of genesis keys, and the state is the -epoch specific state necessary for the $\mathsf{NEWEPOCH}$ transition. - -Part of the upkeep is updating the genesis key delegation mapping -according to the future delegation mapping. -For each genesis key, we adopt the most recent delegation in $\var{fGenDelegs}$ -that is past the current slot, and any future genesis key delegations past the current -slot is removed. The helper function $\fun{adoptGenesisDelegs}$ accomplishes the update. - -\begin{figure} - \emph{Chain Tick Transitions} - \begin{equation*} - \vdash \var{\_} \trans{tick}{\_} \var{\_} \subseteq - \powerset (\NewEpochState \times \Slot \times \NewEpochState) - \end{equation*} - \caption{Tick transition-system types} - \label{fig:ts-types:tick} - % - \emph{helper function} - \begin{align*} - & \fun{adoptGenesisDelegs} \in \EpochState \to \Slot \to EpochState - \\ - & \fun{adoptGenesisDelegs}~\var{es}~\var{slot} = \var{es'} - \\ - & ~~~~\where - \\ - & ~~~~~~~~~~ - (\var{acnt},~\var{ss},(\var{us},(\var{ds},\var{ps})),~\var{prevPp},~\var{pp}) - \leteq\var{es} - \\ - & ~~~~~~~~~~ - (~\var{rewards},~\var{delegations},~\var{ptrs}, - ~\var{fGenDelegs},~\var{genDelegs},~\var{i_{rwd}})\leteq\var{ds} - \\ - & ~~~~~~~~~~\var{curr}\leteq - \{ - (\var{s},~\var{gkh})\mapsto(\var{vkh},~\var{vrf})\in\var{fGenDelegs} - ~\mid~ - \var{s}\leq\var{slot} - \} - \\ - & ~~~~~~~~~~\var{fGenDelegs'}\leteq - \var{fGenDelegs}\setminus\var{curr} - \\ - & ~~~~~~~~~~\var{genDelegs'}\leteq - \left\{ - \var{gkh}\mapsto(\var{vkh},~\var{vrf}) - ~\mathrel{\Bigg|}~ - { - \begin{array}{l} - (\var{s},~\var{gkh})\mapsto(\var{vkh},~\var{vrf})\in\var{curr}\\ - \var{s}=\max\{s'~\mid~(s',~\var{gkh})\in\dom{\var{curr}}\} - \end{array} - } - \right\} - \\ - & ~~~~~~~~~~\var{ds'}\leteq - (\var{rewards},~\var{delegations},~\var{ptrs}, - ~\var{fGenDelegs'},~\var{genDelegs}\unionoverrideRight\var{genDelegs'},~\var{i_{rwd}}) - \\ - & ~~~~~~~~~~\var{es'}\leteq - (\var{acnt},~\var{ss},(\var{us},(\var{ds'},\var{ps})),~\var{prevPp},~\var{pp}) - \end{align*} -\end{figure} - -The $\mathsf{TICK}$ transition rule is shown in Figure~\ref{fig:rules:tick}. -The signal is a slot \var{s}. - -Three transitions are done: - -\begin{itemize} - \item The $\mathsf{NEWEPOCH}$ transition performs any state change needed if it is the first - block of a new epoch. - \item The $\mathsf{RUPD}$ creates the reward update if it is late enough in the epoch. - \textbf{Note} that for every block header, either $\mathsf{NEWEPOCH}$ or $\mathsf{RUPD}$ - will be the identity transition, and so, for instance, it does not matter if $\mathsf{RUPD}$ - uses $\var{nes}$ or $\var{nes}'$ to obtain the needed state. -\end{itemize} - -\begin{figure}[ht] - \begin{equation}\label{eq:tick} - \inference[Tick] - { - { - \vdash - \var{nes} - \trans{\hyperref[fig:rules:new-epoch]{newepoch}}{\epoch{slot}} - \var{nes}' - } - \\~\\ - (\wcard,~\var{b_{prev}},~\wcard,~\var{es},~\wcard,~\wcard)\leteq\var{nes} \\ - \\~\\ - { - {\begin{array}{c} - \var{b_{prev}} \\ - \var{es} \\ - \end{array}} - \vdash \var{ru'}\trans{\hyperref[fig:rules:reward-update]{rupd}}{\var{slot}} \var{ru''} - } - \\~\\ - (\var{e_\ell'},~\var{b_{prev}'},~\var{b_{cur}'},~\var{es'},~\var{ru'},~\var{pd'}) - \leteq\var{nes'} - \\ - \var{es''}\leteq\fun{adoptGenesisDelegs}~\var{es'}~\var{slot} - \\ - \var{nes''}\leteq - (\var{e_\ell'},~\var{b_{prev}'},~\var{b_{cur}'},~\var{es''},~\var{ru''},~\var{pd'}) - \\~\\ - } - { - \vdash\var{nes}\trans{tick}{\var{slot}}\varUpdate{\var{nes''}} - } - \end{equation} - \caption{Tick rules} - \label{fig:rules:tick} -\end{figure} - -\clearpage - -\subsection{Operational Certificate Transition} -\label{sec:oper-cert-trans} - -The Operational Certificate Transition environment consists of the genesis key -delegation map $\var{genDelegs}$ and the set of stake pools $\var{stpools}$. Its state -is the mapping of operation certificate issue numbers. Its signal is a block -header. - -\begin{figure} - \emph{Operational Certificate environments} - \begin{equation*} - \OCertEnv = - \left( - \begin{array}{r@{~\in~}lr} - \var{stpools} & \powerset{\type{KeyHash}} & \text{stake pools} \\ - \var{genDelegs} & \powerset{\type{KeyHash}} & \text{genesis key delegates}\\ - \end{array} - \right) - \end{equation*} - % - \emph{Operational Certificate Transitions} - \begin{equation*} - \var{\_} \vdash \var{\_} \trans{ocert}{\_} \var{\_} \subseteq - \powerset (\OCertEnv \times \KeyHash_{pool} \mapsto \N \times \BHeader \times \KeyHash_{pool} \mapsto \N) - \end{equation*} - % - \emph{Operational Certificate helper function} - \begin{align*} - & \fun{currentIssueNo} \in \OCertEnv \to (\KeyHash_{pool} \mapsto \N) - \to \KeyHash_{pool} - \to \N^? \\ - & \fun{currentIssueNo}~(\var{stpools}, \var{genDelegs})~ \var{cs} ~\var{hk} = - \begin{cases} - \var{hk}\mapsto \var{n} \in \var{cs} & n \\ - \var{hk} \in \var{stpools} & 0 \\ - \var{hk} \in \var{genDelegs} & 0 \\ - \text{otherwise} & \Nothing - \end{cases} - \end{align*} - \caption{OCert transition-system types} - \label{fig:ts-types:ocert} -\end{figure} - -The transition rule is shown in Figure~\ref{fig:rules:ocert}. From the block -header body \var{bhb} we first extract the following: - -\begin{itemize} - \item The operational certificate, consisting of the hot key \var{vk_{hot}}, - the certificate issue number \var{n}, the KES period start \var{c_0} and the cold key - signature. -\item The cold key \var{vk_{cold}}. -\item The slot \var{s} for the block. -\item The number of KES periods that have elapsed since the start period on the certificate. -\end{itemize} - -Using this we verify the preconditions of the operational certificate state -transition which are the following: - -\begin{itemize} -\item The KES period of the slot in the block header body must be greater than or equal to - the start value \var{c_0} listed in the operational certificate, - and less than $\MaxKESEvo$-many KES periods after \var{c_0}. - The value of $\MaxKESEvo$ is the agreed-upon lifetime of an operational certificate, - see \cite{delegation_design}. -\item \var{hk} exists as key in the mapping of certificate issues numbers to a KES - period \var{m} and that period is less than or equal to \var{n}. -\item The signature $\tau$ can be verified with the cold verification key - \var{vk_{cold}}. -\item The KES signature $\sigma$ can be verified with the hot verification key - \var{vk_{hot}}. -\end{itemize} - -After this, the transition system updates the operational certificate state by -updating the mapping of operational certificates where it overwrites the entry -of the key \var{hk} with the KES period \var{n}. - -\begin{figure}[ht] - \begin{equation}\label{eq:ocert} - \inference[OCert] - { - (\var{bhb},~\sigma)\leteq\var{bh} - & - (\var{vk_{hot}},~n,~c_{0},~\tau) \leteq \bocert{bhb} - & - \var{vk_{cold}} \leteq \bvkcold{bhb} - \\ - \var{hk} \leteq \hashKey{vk_{cold}} - & - \var{s}\leteq\bslot{bhb} - & - t \leteq \kesPeriod{s} - c_0 - \\~\\ - c_0 \leq \kesPeriod{s} < c_0 + \MaxKESEvo - \\ - \fun{currentIssueNo} ~ \var{oce} ~ \var{cs} ~ \var{hk} = m - & - m \leq n - \\~\\ - \mathcal{V}_{\var{vk_{cold}}}{\serialised{(\var{vk_{hot}},~n,~c_0)}}_{\tau} - & - \mathcal{V}^{\mathsf{KES}}_{vk_{hot}}{\serialised{bhb}}_{\sigma}^{t} - \\ - } - { - \var{oce}\vdash\var{cs} - \trans{ocert}{\var{bh}}\varUpdate{\var{cs}\unionoverrideRight\{\var{hk}\mapsto n\}} - } - \end{equation} - \caption{OCert rules} - \label{fig:rules:ocert} -\end{figure} - -The OCERT rule has six predicate failures: -\begin{itemize} -\item If the KES period is less than the KES period start in the certificate, - there is a \emph{KESBeforeStart} failure. -\item If the KES period is greater than or equal to the KES period end (start + - $\MaxKESEvo$) in the certificate, there is a \emph{KESAfterEnd} failure. -\item If the period counter in the original key hash counter mapping is larger - than the period number in the certificate, there is a \emph{CounterTooSmall} - failure. -\item If the signature of the hot key, KES period number and period start is - incorrect, there is an \emph{InvalidSignature} failure. -\item If the KES signature using the hot key of the block header body is - incorrect, there is an \emph{InvalideKesSignature} failure. -\item If there is no entry in the key hash to counter mapping for the cold key, - there is a \emph{NoCounterForKeyHash} failure. -\end{itemize} - -\subsection{Verifiable Random Function} -\label{sec:verif-rand-funct} - -In this section we define a function $\fun{vrfChecks}$ which performs all the VRF related checks -on a given block header body. -In addition to the block header body, the function requires the epoch nonce, -the stake distribution (aggregated by pool), and the active slots coefficient from the protocol -parameters. The function checks: - -\begin{itemize} -\item The validity of the proofs for the leader value and the new nonce. -\item The verification key is associated with relative stake $\sigma$ in the stake distribution. -\item The $\fun{bleader}$ value of \var{bhb} indicates a possible leader for - this slot. The function $\fun{checkLeaderVal}$ is defined in \ref{sec:leader-value-calc}. -\end{itemize} - -\begin{figure} - \emph{VRF helper function} - \begin{align*} - & \fun{issuerIDfromBHBody} \in \BHBody \to \KeyHash_{pool} \\ - & \fun{issuerIDfromBHBody} = \hashKey{} \circ \bvkcold{} \\ - \end{align*} - % - \begin{align*} - & \fun{mkSeed} \in \Seed \to \Slot \to \Seed \to \Seed \\ - & \fun{mkSeed}~\var{ucNonce}~\var{slot}~\eta_0 = - \var{ucNonce}~\mathsf{XOR}~(\slotToSeed{slot}\seedOp\eta_0)\\ - \end{align*} - % - \begin{align*} - & \fun{vrfChecks} \in \Seed \to \BHBody \to \Bool \\ - & \fun{vrfChecks}~\eta_0~\var{bhb} = \\ - & \begin{array}{cl} - ~~~~ & - \verifyVrf{\Seed}{\var{vrfK}}{(\fun{mkSeed}~\Seede~\var{slot}~\eta_0)} - {(\bprfn{bhb},~\bnonce{bhb}}) \\ - ~~~~ \land & - \verifyVrf{\unitInterval}{\var{vrfK}}{(\fun{mkSeed}~\Seedl~\var{slot}~\eta_0)} - {(\bprfl{bhb},~\bleader{bhb}}) \\ - \end{array} \\ - & ~~~~\where \\ - & ~~~~~~~~~~\var{slot} \leteq \bslot{bhb} \\ - & ~~~~~~~~~~\var{vrfK} \leteq \fun{bvkvrf}~\var{bhb} \\ - \end{align*} - % - \begin{align*} - & \fun{praosVrfChecks} \in \Seed \to \PoolDistr \to \unitIntervalNonNull \to \BHBody \to \Bool \\ - & \fun{praosVrfChecks}~\eta_0~\var{pd}~\var{f}~\var{bhb} = \\ - & \begin{array}{cl} - ~~~~ & \var{hk}\mapsto (\sigma,~\var{vrfHK})\in\var{pd} \\ - ~~~~ \land & \var{vrfHK} = \hashKey{vrfK} \\ - ~~~~ \land & \fun{vrfChecks}~\eta_0~\var{bhb} \\ - ~~~~ \land & \fun{checkLeaderVal}~(\fun{bleader}~\var{bhb})~\sigma~\var{f} \\ - \end{array} \\ - & ~~~~\where \\ - & ~~~~~~~~~~\var{hk} \leteq \fun{issuerIDfromBHBody}~\var{bhb} \\ - & ~~~~~~~~~~\var{vrfK} \leteq \fun{bvkvrf}~\var{bhb} \\ - \end{align*} - % - \begin{align*} - & \fun{pbftVrfChecks} \in \KeyHash_{vrf} \to \Seed \to \BHBody \to \Bool \\ - & \fun{pbftVrfChecks}~\var{vrfHK}~\eta_0~~\var{bhb} = \\ - & \begin{array}{cl} - ~~~~ & \var{vrfHK} = \hashKey{(\fun{bvkvrf}~\var{bhb})} \\ - ~~~~ \land & \fun{vrfChecks}~\eta_0~\var{bhb} \\ - \end{array} \\ - \end{align*} - \label{fig:vrf-checks} -\end{figure} - -\clearpage - -\subsection{Overlay Schedule} -\label{sec:overlay-schedule} - -The transition from the bootstrap era to a fully decentralized network is explained in -section 3.9.2 of~\cite{delegation_design}. -Key to this transition is a protocol parameter $d$ which controls how many slots are governed by -the genesis nodes via OBFT, and which slots are open to any registered stake pool. -The transition system introduced in this section, $\type{OVERLAY}$, covers this mechanism. - -This transition is responsible for validating the protocol for both the OBFT blocks -and the Praos blocks, depending on the overlay schedule. - -The actual overlay schedule itself it determined by two functions, -$\fun{isOverlaySlot}$ and $\fun{classifyOverlaySlot}$, -which are defined in Figure~\ref{fig:rules:overlay}. -The function $\fun{isOverlaySlot}$ determines if the current slot -is reserved for the OBFT nodes. -In particular, it looks at the current relative slot to -see if the next multiple of $d$ (the decentralization protocol parameter) -raises the ceiling. -If a slot is indeed in the overlay schedule, -the function $\fun{classifyOverlaySlot}$ determines if the current slot -should be a silent slot (no block is allowed) or which core node -is responsible for the block. -The non-silent blocks are the multiples of $1/\ActiveSlotCoeff$, -and the responsible core node are determined by -taking turns according the lexicographic ordering of the core node keyhashes. -\textbf{Note} that $1/\ActiveSlotCoeff$ needs to be natural number, -otherwise the multilples of $\lfloor 1/\ActiveSlotCoeff \rfloor$ -will yield a different proportion of active slots than the Praos blocks. - -The environments for the overlay schedule transition are: -\begin{itemize} - \item The decentralization parameter $d$. - \item The epoch nonce $\eta_0$. - \item The stake pool stake distribution $\var{pd}$. - \item The mapping $\var{genDelegs}$ of genesis keys to their cold keys and vrf keys. -\end{itemize} - -The states for this transition consist only of the mapping of certificate issue numbers. - -This transition establishes that a block producer is in fact authorized. -Since there are three key pairs involved (cold keys, VRF keys, and hot KES keys) -it is worth examining the interaction closely. -First we look at the regular Praos/decentralized setting, -which is given by Equation~\ref{eq:decentralized}. - -\begin{itemize} - \item First we check the operational certificate with $\mathsf{OCERT}$. - This uses the cold verification key given in the block header. - We do not yet trust that this key is a registered pool key. - If this transition is successful, we know that the cold key in the block header has authorized - the block. -\item Next, in the $\fun{vrfChecks}$ predicate, we check that the hash of this cold key is in the - mapping $\var{pd}$, and that it maps to $(\sigma,~\var{hk_{vrf}})$, where - $(\sigma,~\var{hk_{vrf}})$ is the hash of the VRF key in the header. - If $\fun{praosVrfChecks}$ returns true, then we know that the cold key in the block header was a - registered stake pool at the beginning of the previous epoch, and that it is indeed registered - with the VRF key listed in the header. -\item Finally, we use the VRF verification key in the header, along with the VRF proofs in the - header, to check that the operator is allowed to produce the block. -\end{itemize} -The situation for the overlay schedule, given by Equation~\ref{eq:active-pbft}, is similar. -The difference is that we check the overlay schedule to see what core node is -supposed to make a block, and then use the genesis delegation mapping to -check the correct cold key hash and vrf key hash. - -\begin{figure} - \emph{Overlay environments} - \begin{equation*} - \OverlayEnv = - \left( - \begin{array}{r@{~\in~}lr} - \var{d} & \{0,~1/100,~2/100,~\ldots,~1\} & \text{decentralization parameter} \\ - \var{pd} & \PoolDistr & \text{pool stake distribution} \\ - \var{genDelegs} & \GenesisDelegation & \text{genesis key delegations} \\ - \eta_0 & \Seed & \text{epoch nonce} \\ - \end{array} - \right) - \end{equation*} - % - \emph{Overlay Transitions} - \begin{equation*} - \_ \vdash \var{\_} \trans{overlay}{\_} \var{\_} \subseteq - \powerset (\OverlayEnv \times (\KeyHash_{pool} \mapsto \N) \times \BHeader \times - (\KeyHash_{pool} \mapsto \N)) - \end{equation*} - % - \emph{Overlay Schedule helper functions} - \begin{align*} - & \fun{isOverlaySlot} \in \Slot \to \unitInterval \to \Slot \to \Bool \\ - & \isOverlaySlot{fSlot}{dval}{slot} = \lceil s\cdot dval \rceil < \lceil (s+1)\cdot dval \rceil \\ - & ~~~~ \where s\leteq\slotminus{slot}{fslot} - \end{align*} - % - \begin{align*} - & \fun{classifyOverlaySlot} \in \Slot \to \powerset{\KeyHashGen} \to \unitInterval - \to \unitIntervalNonNull \to \Slot \to \Bool \\ - & \classifyOverlaySlot{fSlot}{gkeys}{dval}{asc}{slot} = \\ - & ~~~\begin{cases} - \fun{elemAt}~\left( \frac{\var{position}}{\var{ascInv}} \bmod |\var{gkeys}| \right)~\var{gkeys} - & - \text{if } \var{position} \equiv 0 \pmod{\var{ascInv}} \\ - \Nothing - & - \text{otherwise} - \end{cases} \\ - & ~~~~ \where \\ - & ~~~~~~~ \var{ascInv}\leteq\lfloor 1/\var{asc}\rfloor \\ - & ~~~~~~~ \var{position}\leteq \lceil (\slotminus{slot}{fSlot})\cdot dval \rceil \\ - & ~~~~~~~ \fun{elemAt}~i~\var{set}\leteq i'\text{th lexicographic element of }\var{set} - \end{align*} - % - \caption{Overlay transition-system types} - \label{fig:ts-types:overlay} -\end{figure} - -\begin{figure}[ht] - \begin{equation}\label{eq:active-pbft} - \inference[Active-OBFT] - { - \var{bhb}\leteq\bheader{bh} - & - \var{vk}\leteq\bvkcold{bhb} - & - \var{vkh}\leteq\hashKey{vk} - \\ - \var{slot} \leteq \bslot{bhb} - & - \var{fSlot} \leteq \fun{firstSlot}~(\epoch{slot}) - \\ - \var{gkh}\mapsto(\var{vkh},~\var{vrfh})\in\var{genDelegs} - \\ - \isOverlaySlot{fSlot}{(\dom{genDelegs})}{slot}\\ - \classifyOverlaySlot{fSlot}{(\dom{genDelegs})}{d}{\ActiveSlotCoeff}{slot} = \var{ghk} - \\~\\ - \fun{pbftVrfChecks}~\var{vrfh}~\eta_0~\var{bhb} - \\~\\ - { - {\begin{array}{c} - \dom{\var{pd}} \\ - \range{\var{genDelegs}} \\ - \end{array} - } - \vdash\var{cs}\trans{\hyperref[fig:rules:ocert]{ocert}}{\var{bh}}\var{cs'} - } - } - { - {\begin{array}{c} - \var{d} \\ - \eta_0 \\ - \var{pd} \\ - \var{genDelegs} \\ - \end{array}} - \vdash - \var{cs} - \trans{overlay}{\var{bh}} - \varUpdate{\var{cs}'} - } - \end{equation} - - \nextdef - - \begin{equation}\label{eq:decentralized} - \inference[Decentralized] - { - \var{bhb}\leteq\bheader{bh} - & - \var{slot} \leteq \bslot{bhb} - & - \var{fSlot} \leteq \fun{firstSlot}~(\epoch{slot}) - \\ - \neg\isOverlaySlot{fSlot}{(\dom{genDelegs})}{slot}\\ - \\~\\ - { - \vdash\var{cs}\trans{\hyperref[fig:rules:ocert]{ocert}}{\var{bh}}\var{cs'} - } - \\~\\ - \fun{praosVrfChecks}~\eta_0~\var{pd}~\ActiveSlotCoeff~\var{bhb} - } - { - {\begin{array}{c} - \var{d} \\ - \eta_0 \\ - \var{pd} \\ - \var{genDelegs} \\ - \end{array}} - \vdash - \var{cs} - \trans{overlay}{\var{bh}} - \varUpdate{\var{cs}'} - } - \end{equation} - - \caption{Overlay rules} - \label{fig:rules:overlay} -\end{figure} - -The OVERLAY rule has nine predicate failures: -\begin{itemize} -\item If in the decentralized case the VRF key is not in the pool distribution, - there is a \emph{VRFKeyUnknown} failure. -\item If in the decentralized case the VRF key hash does not match the one - listed in the block header, there is a \emph{VRFKeyWrongVRFKey} failure. -\item If the VRF generated nonce in the block header does not validate - against the VRF certificate, there is a \emph{VRFKeyBadNonce} failure. -\item If the VRF generated leader value in the block header does not validate - against the VRF certificate, there is a \emph{VRFKeyBadLeaderValue} failure. -\item If the VRF generated leader value in the block header is too large - compared to the relative stake of the pool, there is a \emph{VRFLeaderValueTooBig} failure. -\item In the case of the slot being in the OBFT schedule, but without genesis - key (i.e., $Nothing$), there is a \emph{NotActiveSlot} failure. -\item In the case of the slot being in the OBFT schedule, if there is a - specified genesis key which is not the same key as in the bock header body, - there is a \emph{WrongGenesisColdKey} failure. -\item In the case of the slot being in the OBFT schedule, if the hash of the - VRF key in block header does not match the hash in the genesis delegation mapping, - there is a \emph{WrongGenesisVRFKey} failure. -\item In the case of the slot being in the OBFT schedule, if the genesis delegate - keyhash is not in the genesis delegation mapping, - there is a \emph{UnknownGenesisKey} failure. - This case should never happen, and represents a logic error. - -\end{itemize} - -\clearpage - -\subsection{Protocol Transition} -\label{sec:protocol-trans} - -The protocol transition covers the common predicates of OBFT and Praos, -and then calls $\mathsf{OVERLAY}$ for the particular transitions, -followed by the transition to update the evolving and candidate nonces. - -\begin{figure} - \emph{Protocol environments} - \begin{equation*} - \PrtclEnv = - \left( - \begin{array}{r@{~\in~}lr} - \var{d} & \{0,~1/100,~2/100,~\ldots,~1\} & \text{decentralization parameter} \\ - \var{pd} & \PoolDistr & \text{pool stake distribution} \\ - \var{dms} & \KeyHashGen\mapsto\KeyHash & \text{genesis key delegations} \\ - \eta_0 & \Seed & \text{epoch nonce} \\ - \end{array} - \right) - \end{equation*} - % - \emph{Protocol states} - \begin{equation*} - \PrtclState = - \left( - \begin{array}{r@{~\in~}lr} - \var{cs} & \KeyHash_{pool} \mapsto \N & \text{operational certificate issues numbers} \\ - \eta_v & \Seed & \text{evolving nonce} \\ - \eta_c & \Seed & \text{candidate nonce} \\ - \end{array} - \right) - \end{equation*} - % - \emph{Protocol Transitions} - \begin{equation*} - \_ \vdash \var{\_} \trans{prtcl}{\_} \var{\_} \subseteq - \powerset (\powerset{\PrtclEnv} \times \PrtclState \times \BHeader \times \PrtclState) - \end{equation*} - \caption{Protocol transition-system types} - \label{fig:ts-types:prtcl} -\end{figure} - -The environments for this transition are: -\begin{itemize} - \item The decentralization parameter $d$. - \item The stake pool stake distribution $\var{pd}$. - \item The mapping $\var{dms}$ of genesis keys to their cold keys. - \item The epoch nonce $\eta_0$. -\end{itemize} - -The states for this transition consists of: -\begin{itemize} - \item The operational certificate issue number mapping. - \item The evolving nonce. - \item The canditate nonce for the next epoch. -\end{itemize} - -\begin{figure}[ht] - \begin{equation}\label{eq:prtcl} - \inference[PRTCL] - { - \eta\leteq\fun{bnonce}~(\bhbody{bhb}) - \\~\\ - { - \eta - \vdash - {\left(\begin{array}{c} - \eta_v \\ - \eta_c \\ - \end{array}\right)} - \trans{\hyperref[fig:rules:update-nonce]{updn}}{\var{slot}} - {\left(\begin{array}{c} - \eta_v' \\ - \eta_c' \\ - \end{array}\right)} - }\\~\\ - { - {\begin{array}{c} - \var{d} \\ - \var{pd} \\ - \var{dms} \\ - \eta_0 \\ - \end{array} - } - \vdash \var{cs}\trans{\hyperref[fig:rules:overlay]{overlay}}{\var{bh}} \var{cs}' - } - } - { - {\begin{array}{c} - \var{d} \\ - \var{pd} \\ - \var{dms} \\ - \eta_0 \\ - \end{array}} - \vdash - {\left(\begin{array}{c} - \var{cs} \\ - \eta_v \\ - \eta_c \\ - \end{array}\right)} - \trans{prtcl}{\var{bh}} - {\left(\begin{array}{c} - \varUpdate{cs'} \\ - \varUpdate{\eta_v'} \\ - \varUpdate{\eta_c'} \\ - \end{array}\right)} - } - \end{equation} - \caption{Protocol rules} - \label{fig:rules:prtcl} -\end{figure} - -The PRTCL rule has no predicate failures, besides those of the two sub-transitons. - -\clearpage - -\subsection{Block Body Transition} -\label{sec:block-body-trans} - -The Block Body Transition updates the block body state which comprises the ledger state and the -map describing the produced blocks. -The environment of the $\mathsf{BBODY}$ transition are -the protocol parameters and the accounting state. -The environments and states are defined in Figure~\ref{fig:ts-types:bbody}, along with -a helper function $\fun{incrBlocks}$, which counts the number of non-overlay blocks -produced by each stake pool. - -\begin{figure} - \emph{BBody environments} - \begin{equation*} - \BBodyEnv = - \left( - \begin{array}{r@{~\in~}lr} - \var{pp} & \PParams & \text{protocol parameters} \\ - \var{acnt} & \Acnt & \text{accounting state} - \end{array} - \right) - \end{equation*} - % - \emph{BBody states} - \begin{equation*} - \BBodyState = - \left( - \begin{array}{r@{~\in~}lr} - \var{ls} & \LState & \text{ledger state} \\ - \var{b} & \BlocksMade & \text{blocks made} \\ - \end{array} - \right) - \end{equation*} - % - \emph{BBody Transitions} - \begin{equation*} - \_ \vdash \var{\_} \trans{bbody}{\_} \var{\_} \subseteq - \powerset (\BBodyEnv \times \BBodyState \times \Block \times \BBodyState) - \end{equation*} - \caption{BBody transition-system types} - \label{fig:ts-types:bbody} - % - \emph{BBody helper function} - \begin{align*} - & \fun{incrBlocks} \in \Bool \to \KeyHash_{pool} \to - \BlocksMade \to \BlocksMade \\ - & \fun{incrBlocks}~\var{isOverlay}~\var{hk}~\var{b} = - \begin{cases} - b & \text{if }\var{isOverlay} \\ - b\cup\{\var{hk}\mapsto 1\} & \text{if }\var{hk}\notin\dom{b} \\ - b\unionoverrideRight\{\var{hk}\mapsto n+1\} & \text{if }\var{hk}\mapsto n\in b \\ - \end{cases} - \end{align*} - -\end{figure} - -The $\mathsf{BBODY}$ transition rule is shown in Figure~\ref{fig:rules:bbody}, -its sub-rule is $\mathsf{LEDGERS}$ which does the update of the ledger -state. The signal is a block from which we extract: - -\begin{itemize} -\item The sequence of transactions \var{txs} of the block. -\item The block header body \var{bhb}. -\item The verification key \var{vk} of the issuer of the \var{block} and its - hash \var{hk}. -\end{itemize} - -The transition is executed if the following preconditions are met: - -\begin{itemize} -\item The size of the block body matches the value given in the block header body. -\item The hash of the block body matches the value given in the block header body. -\item The $\mathsf{LEDGERS}$ transition succeeds. -\end{itemize} - -After this, the transition system updates the mapping of the hashed stake pool -keys to the incremented value of produced blocks (\var{n} + 1), provided the -current slot is not an overlay slot. - -\begin{figure}[ht] - \begin{equation}\label{eq:bbody} - \inference[Block-Body] - { - \var{txs} \leteq \bbody{block} - & - \var{bhb} \leteq \bhbody{(\bheader{block})} - & - \var{hk} \leteq \hashKey{(\bvkcold{bhb})} - \\~\\ - \bBodySize{txs} = \hBbsize{bhb} - & - \fun{bbodyhash}~{txs} = \bhash{bhb} - \\~\\ - \\ - \var{slot} \leteq \bslot{bhb} - & - \var{fSlot} \leteq \fun{firstSlot}~(\epoch{slot}) - \\~\\ - { - {\begin{array}{c} - \bslot{bhb} \\ - \var{pp} \\ - \var{acnt} - \end{array}} - \vdash - \var{ls} \\ - \trans{\hyperref[fig:rules:ledger-sequence]{ledgers}}{\var{txs}} - \var{ls}' \\ - } - } - { - {\begin{array}{c} - \var{pp} \\ - \var{acnt} - \end{array}} - \vdash - {\left(\begin{array}{c} - \var{ls} \\ - \var{b} \\ - \end{array}\right)} - \trans{bbody}{\var{block}} - {\left(\begin{array}{c} - \varUpdate{\var{ls}'} \\ - \varUpdate{\fun{incrBlocks}~{\left(\isOverlaySlot{fSlot}{(\fun{d}~pp)}{slot}\right)}~{hk}~{b}} \\ - \end{array}\right)} - } - \end{equation} - \caption{BBody rules} - \label{fig:rules:bbody} -\end{figure} - -The BBODY rule has two predicate failures: -\begin{itemize} -\item if the size of the block body in the header is not equal to the real size - of the block body, there is a \emph{WrongBlockBodySize} failure. -\item if the hash of the block body is not also the hash of transactions, there is an \emph{InvalidBodyHash} failure. -\end{itemize} - -\clearpage - -\subsection{Chain Transition} -\label{sec:chain-trans} - -The $\mathsf{CHAIN}$ transition rule is the main rule of the blockchain layer -part of the STS. It calls $\mathsf{BHEAD}$, $\mathsf{PRTCL}$, and $\mathsf{BBODY}$ as sub-rules. - -The chain rule has no environment. - -The transition checks six things -(via $\fun{chainChecks}$ and $\fun{prtlSeqChecks}$ from Figure~\ref{fig:funcs:chain-helper}): -\begin{itemize} -\item The slot in the block header body is larger than the last slot recorded. -\item The block number increases by exactly one. -\item The previous hash listed in the block header matches the previous - block header hash which was recorded. -\item The size of \var{bh} is less than or equal to the maximal size that the - protocol parameters allow for block headers. -\item The size of the block body, as claimed by the block header, is less than or equal to the - maximal size that the protocol parameters allow for block bodies. - It will later be verified that the size of the block body matches the size claimed - in the header (see Figure~\ref{fig:rules:bbody}). -\item The node is not obsolete, meaning that the major component of the - protocol version in the protocol parameters - is not bigger than the constant $\MaxMajorPV$. -\end{itemize} - - -The chain state is shown in Figure~\ref{fig:ts-types:chain}, it consists of the -following: - -\begin{itemize} - \item The epoch specific state $\var{nes}$. - \item The operational certificate issue number map $\var{cs}$. - \item The epoch nonce $\eta_0$. - \item The evolving nonce $\eta_v$. - \item The candidate nonce $\eta_c$. - \item The previous epoch hash nonce $\eta_h$. - \item The last header hash \var{h}. - \item The last slot \var{s_\ell}. - \item The last block number \var{b_\ell}. -\end{itemize} - -\begin{figure} - \emph{Chain states} - \begin{equation*} - \LastAppliedBlock = - \left( - \begin{array}{r@{~\in~}lr} - \var{b_\ell} & \Slot & \text{last block number} \\ - \var{s_\ell} & \Slot & \text{last slot} \\ - \var{h} & \HashHeader & \text{latest header hash} \\ - \end{array} - \right) - \end{equation*} - % - \begin{equation*} - \ChainState = - \left( - \begin{array}{r@{~\in~}lr} - \var{nes} & \NewEpochState & \text{epoch specific state} \\ - \var{cs} & \KeyHash_{pool} \mapsto \N & \text{operational certificate issue numbers} \\ - ~\eta_0 & \Seed & \text{epoch nonce} \\ - ~\eta_v & \Seed & \text{evolving nonce} \\ - ~\eta_c & \Seed & \text{candidate nonce} \\ - ~\eta_h & \Seed & \text{seed generated from hash of previous epoch's last block header} \\ - \var{lab} & \LastAppliedBlock^? & \text{latest applied block} \\ - \end{array} - \right) - \end{equation*} - % - \emph{Chain Transitions} - \begin{equation*} - \vdash \var{\_} \trans{chain}{\_} \var{\_} \subseteq - \powerset (\ChainState \times \Block \times \ChainState) - \end{equation*} - \caption{Chain transition-system types} - \label{fig:ts-types:chain} -\end{figure} - -The $\mathsf{CHAIN}$ transition rule is shown in Figure~\ref{fig:rules:chain}. Its signal is a \var{block}. -The transition uses a few helper functions defined in Figure~\ref{fig:funcs:chain-helper}. - -%% -%% Figure - Helper Functions for Chain Rules -%% -\begin{figure}[htb] - \emph{Chain Transition Helper Functions} - \begin{align*} - & \fun{getGKeys} \in \NewEpochState \to \powerset{\KeyHashGen} \\ - & \fun{getGKeys}~\var{nes} = \dom{genDelegs} \\ - & - \begin{array}{lr@{~=~}l} - \where - & (\wcard,~\wcard,~\wcard,~\var{es},~\wcard,~\wcard) - & \var{nes} - \\ - & (\wcard,~\wcard,~\var{ls},~\wcard,~\wcard) - & \var{es} - \\ - & (\wcard,~((\wcard,~\wcard,~\wcard,~\wcard,~\var{genDelegs},~\wcard),~\wcard)) - & \var{ls} - \end{array} - \end{align*} - % - \begin{align*} - & \fun{updateNES} \in \NewEpochState \to \BlocksMade \to \LState \to \NewEpochState \\ - & \fun{updateNES}~ - (\var{e_\ell},~\var{b_{prev}},~\wcard,~(\var{acnt},~\var{ss},~\wcard,~\var{prevPp},~\var{pp}), - ~\var{ru},~\var{pd}) - ~\var{b_{cur}}~\var{ls} = \\ - & ~~~~ - (\var{e_\ell},~\var{b_{prev}},~\var{b_{cur}}, - ~(\var{acnt},~\var{ss},~\var{ls},~\var{prevPp},~\var{pp}),~\var{ru},~\var{pd}) - \end{align*} - % - \begin{align*} - & \fun{chainChecks} \in \N \to (\N,\N, \ProtVer) \to \BHeader \to \Bool \\ - & \fun{chainChecks}~\var{maxpv}~(\var{maxBHSize},~\var{maxBBSize},~\var{protocolVersion})~\var{bh} = \\ - & ~~~~ m \leq \var{maxpv} \\ - & ~~~~ \land~\bHeaderSize{bh} \leq \var{maxBHSize} \\ - & ~~~~ \land~\hBbsize{(\bhbody{bh})} \leq \var{maxBBSize} \\ - & ~~~~ \where (m,~\wcard)\leteq\var{protocolVersion} - \end{align*} - % - \begin{align*} - & \fun{lastAppliedHash} \in \LastAppliedBlock^? \to \HashHeader^? \\ - & \fun{lastAppliedHash}~\var{lab} = - \begin{cases} - \Nothing & lab = \Nothing \\ - h & lab = (\wcard,~\wcard,~h) \\ - \end{cases} - \end{align*} - % - \begin{align*} - & \fun{prtlSeqChecks} \to \LastAppliedBlock^? \to \BHeader \to \Bool \\ - & \fun{prtlSeqChecks}~\var{lab}~\var{bh} = - \begin{cases} - \mathsf{True} - & - lab = \Nothing - \\ - \var{s_\ell} < \var{slot} - \land \var{b_\ell} + 1 = \var{bn} - \land \var{ph} = \bprev{bhb} - & - lab = (b_\ell,~s_\ell,~\wcard) \\ - \end{cases} \\ - & ~~~~\where \\ - & ~~~~~~~~~~\var{bhb} \leteq \bhbody{bh} \\ - & ~~~~~~~~~~\var{bn} \leteq \bblockno{bhb} \\ - & ~~~~~~~~~~\var{slot} \leteq \bslot{bhb} \\ - & ~~~~~~~~~~\var{ph} \leteq \lastAppliedHash{lab} \\ - \end{align*} - - \caption{Helper Functions used in the CHAIN transition} - \label{fig:funcs:chain-helper} -\end{figure} - -\begin{figure}[ht] - \begin{equation}\label{eq:chain} - \inference[Chain] - { - \var{bh} \leteq \bheader{block} - & - \var{bhb} \leteq \bhbody{bh} - & - \var{s} \leteq \bslot{bhb} - \\~\\ - \fun{prtlSeqChecks}~\var{lab}~\var{bh} - \\~\\ - { - \vdash\var{nes}\trans{\hyperref[fig:rules:tick]{tick}}{\var{s}}\var{nes'} - } \\~\\ - (\var{e_1},~\wcard,~\wcard,~\wcard,~\wcard,~\wcard) - \leteq\var{nes} \\ - (\var{e_2},~\wcard,~\var{b_{cur}},~\var{es},~\wcard,~\wcard,~\var{pd}) - \leteq\var{nes'} \\ - (\var{acnt},~\wcard,\var{ls},~\wcard,~\var{pp})\leteq\var{es}\\ - ( \wcard, - ( (\wcard,~\wcard,~\wcard,~\wcard,~\var{genDelegs},~\wcard),~ - (\wcard,~\wcard,~\wcard)))\leteq\var{ls}\\ - \var{ne} \leteq \var{e_1} \neq \var{e_2}\\ - \eta_{ph} \leteq \prevHashToNonce{(\lastAppliedHash{lab})} - \\~\\ - \fun{chainChecks}~ - \MaxMajorPV~(\fun{maxHeaderSize}~\var{pp},~\fun{maxBlockSize}~\var{pp},~\fun{pv}~\var{pp})~ - \var{bh} - \\~\\ - { - {\begin{array}{c} - \var{pp} \\ - \eta_c \\ - \eta_\var{ph} \\ - \end{array}} - \vdash - {\left(\begin{array}{c} - \eta_0 \\ - \eta_h \\ - \end{array}\right)} - \trans{\hyperref[fig:rules:tick-nonce]{tickn}}{\var{ne}} - {\left(\begin{array}{c} - \eta_0' \\ - \eta_h' \\ - \end{array}\right)} - }\\~\\~\\ - { - {\begin{array}{c} - (\fun{d}~\var{pp}) \\ - \var{pd} \\ - \var{genDelegs} \\ - \eta_0' \\ - \end{array}} - \vdash - {\left(\begin{array}{c} - \var{cs} \\ - \eta_v \\ - \eta_c \\ - \end{array}\right)} - \trans{\hyperref[fig:rules:prtcl]{prtcl}}{\var{bh}} - {\left(\begin{array}{c} - \var{cs'} \\ - \eta_v' \\ - \eta_c' \\ - \end{array}\right)} - } \\~\\~\\ - { - {\begin{array}{c} - \var{pp} \\ - \var{acnt} - \end{array}} - \vdash - {\left(\begin{array}{c} - \var{ls} \\ - \var{b_{cur}} \\ - \end{array}\right)} - \trans{\hyperref[fig:rules:bbody]{bbody}}{\var{block}} - {\left(\begin{array}{c} - \var{ls}' \\ - \var{b_{cur}'} \\ - \end{array}\right)} - }\\~\\ - \var{nes''}\leteq\fun{updateNES}~\var{nes'}~\var{b_{cur}'},~\var{ls'} \\ - \var{lab'}\leteq (\bblockno{bhb},~\var{s},~\bhash{bh} ) \\ - } - { - \vdash - {\left(\begin{array}{c} - \var{nes} \\ - \var{cs} \\ - \eta_0 \\ - \eta_v \\ - \eta_c \\ - \eta_h \\ - \var{lab} \\ - \end{array}\right)} - \trans{chain}{\var{block}} - {\left(\begin{array}{c} - \varUpdate{\var{nes}''} \\ - \varUpdate{\var{cs}'} \\ - \varUpdate{\eta_0'} \\ - \varUpdate{\eta_v'} \\ - \varUpdate{\eta_c'} \\ - \varUpdate{\eta_h'} \\ - \varUpdate{\var{lab}'} \\ - \end{array}\right)} - } - \end{equation} - \caption{Chain rules} - \label{fig:rules:chain} -\end{figure} - -The CHAIN rule has six predicate failures: -\begin{itemize} -\item If the slot of the block header body is not larger than the last slot or - greater than the current slot, there is a \emph{WrongSlotInterval} failure. -\item If the block number does not increase by exactly one, - there is a \emph{WrongBlockNo} failure. -\item If the hash of the previous header of the block header body is not equal - to the hash given in the environment, there is a \emph{WrongBlockSequence} - failure. -\item If the size of the block header is larger than the maximally allowed size, - there is a \emph{HeaderSizeTooLarge} failure. -\item If the size of the block body is larger than the maximally allowed size, - there is a \emph{BlockSizeTooLarge} failure. -\item If the major component of the protocol version is larger than $\MaxMajorPV$, - there is a \emph{ObsoleteNode} failure. -\end{itemize} - -\clearpage - -\subsection{Byron to Shelley Transition} -\label{sec:byron-to-shelley} - -This section defines the valid initial Shelley ledger states and -describes how to transition the state held by the Byron ledger to Shelley. -The Byron ledger state $\CEState$ is defined in \cite{byron_chain_spec}. -The valid initial Shelley ledger states are exactly the range of -the function $\fun{initialShelleyState}$ defined in Figure~\ref{fig:functions:initial-shelley-states}. -Figure~\ref{fig:functions:to-shelley} defines the transition function from Byron. -Note that we use the hash of the final Byron header as the first evolving and -candidate nonces for Shelley. - -%% -%% Figure - Shelley Initial States -%% -\begin{figure}[htb] - \emph{Shelley Initial States} - % - \begin{align*} - & \fun{initialShelleyState} \in \LastAppliedBlock^? \to \Epoch \to \UTxO - \to \Coin \to \GenesisDelegation \\ - & ~~~ \to (\Slot\mapsto\KeyHashGen^?) - \to \PParams \to \Seed \to \ChainState \\ - & \fun{initialShelleyState}~ - \left( - \begin{array}{c} - \var{lab} \\ - \var{e} \\ - \var{utxo} \\ - \var{reserves} \\ - \var{genDelegs} \\ - \var{pp} \\ - \var{initNonce} \\ - \end{array} - \right) - = - \left( - \begin{array}{c} - \left( - \begin{array}{c} - \var{e} \\ - \emptyset \\ - \emptyset \\ - \left( - \begin{array}{c} - \left( - \begin{array}{c} - 0 \\ - \var{reserves} \\ - \end{array} - \right) \\ - \left( - \begin{array}{c} - (\emptyset, \emptyset) \\ - (\emptyset, \emptyset) \\ - (\emptyset, \emptyset) \\ - \emptyset \\ - \emptyset \\ - 0 - \end{array} - \right) \\ - \left( - \begin{array}{c} - \left( - \begin{array}{c} - \var{utxo} \\ - 0 \\ - 0 \\ - (\emptyset,~\emptyset) \\ - \end{array} - \right) \\ - \left( - \begin{array}{c} - \left( - \begin{array}{c} - \emptyset \\ - \emptyset \\ - \emptyset \\ - \emptyset \\ - \var{genDelegs} \\ - \emptyset \\ - \end{array} - \right) \\ - \left( - \begin{array}{c} - \emptyset \\ - \emptyset \\ - \emptyset \\ - \end{array} - \right) \\ - \end{array} - \right) \\ - \end{array} - \right) \\ - \var{pp} \\ - \var{pp} \\ - \end{array} - \right) \\ - \\ - \Nothing \\ - \emptyset \\ - \end{array} - \right) \\ - \var{cs} \\ - \var{initNonce} \\ - \var{initNonce} \\ - \var{initNonce} \\ - 0_{seed} \\ - \var{lab} \\ - \end{array} - \right) \\ - & ~~~~\where cs = \{\var{hk}\mapsto 0~\mid~(\var{hk},~\wcard)\in\range{genDelegs}\} \\ - \end{align*} - - \caption{Initial Shelley States} - \label{fig:functions:initial-shelley-states} -\end{figure} - -%% -%% Figure - Byron to Shelley State Transition -%% -\begin{figure}[htb] - \emph{Byron to Shelley Transition} - % - \begin{align*} - & \fun{toShelley} \in \CEState \to \GenesisDelegation \to \BlockNo \to \ChainState \\ - & \fun{toShelley}~ - \left( - \begin{array}{c} - \var{s_{last}} \\ - \wcard \\ - \var{h} \\ - (\var{utxo},~\var{reserves}) \\ - \wcard \\ - \var{us} - \end{array} - \right)~\var{gd}~\var{bn} - = - \fun{initialShelleyState}~ - \left( - \begin{array}{c} - (\var{s_{last}}~\var{bn},~\prevHashToNonce{h}) \\ - e \\ - \fun{hash}~{h} \\ - \var{utxo} \\ - \var{reserves} \\ - \var{gd} \\ - \overlaySchedule{e}{(\dom{gd})}{pp} \\ - \var{pp} \\ - \prevHashToNonce{h} \\ - \end{array} - \right) \\ - & ~~~~\where \\ - & ~~~~~~~~~e = \epoch{s_{last}} \\ - & ~~~~~~~~~pp = \fun{pps}~{us} \\ % this pps function is defined in the Byron chain spec - \end{align*} - - \caption{Byron to Shelley State Transtition} - \label{fig:functions:to-shelley} -\end{figure} - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "ledger-spec" -%%% End: diff --git a/eras/shelley/formal-spec/crypto-details.tex b/eras/shelley/formal-spec/crypto-details.tex deleted file mode 100644 index 94f3a570774..00000000000 --- a/eras/shelley/formal-spec/crypto-details.tex +++ /dev/null @@ -1,126 +0,0 @@ -\section{Cryptographic Details} -\label{sec:crypto-details} - -\subsection{Warning About Re-serialization} -It is a bad security practice to check signatures or hashes on re-serialized data, -the original bytes must be preserved. - -\subsection{Hashing} -We present the (informal) properties of cryptographically safe hash functions: -\begin{description} -\item[Preimage resistance] It should be hard to find a message with a given hash value. -\item[Second preimage resistance] Given one message, it should be hard to find another message with the same hash value. -\item[Collision resistance] It should be hard to find two messages with the same hash value. -\end{description} - -\noindent In practice, several cryptographic protocols use hash functions as random oracles. -However, the properties of our scheme do not depend on it. - -The hashing algorithm we use for all verification keys and multi-signature scripts is BLAKE2b-224\footnote{Note that for the signature -and verification algorithms, as well as the proving and verification algorithms of VRFs, we use the hash function as defined in the IETF standard (see Section~\ref{sec:app-addresses} and Section~\ref{sec:app-vrf}).}. -Explicitly, this is the payment and stake credentials (Figure~\ref{fig:defs:addresses}), -the genesis keys and their delegates (Figure~\ref{fig:ts-types:pp-update}), -stake pool verification keys (Figure~\ref{fig:delegation-transitions}), -and VRF verification keys (Figure~\ref{fig:delegation-defs}). -The only property we require of this hash function is that of Second Preimage resistance. Given the hash of verification key or multi-signature script, it should be hard to find a different key or script with the same hash. - -Everywhere else we use BLAKE2b-256. In this case we do require second preimage resistance and collision resistance. We use the output of these hash functions to produce signatures (see Figure~\ref{fig:rules:utxow-shelley}), meaning that if an adversary can find two messages with the same hash, it could break the intended EUF-CMA (Existentially UnForgeable against a Chosen Plaintext Attack) property of the underlying signature scheme. - -In the CDDL specification in Appendix~\ref{sec:cddl}, -$\mathsf{hash28}$ refers to BLAKE2b-224 and -and $\mathsf{hash32}$ refers to BLAKE2b-256. -BLAKE2 is specified in RFC 7693 \cite{rfcBLAKE2}. - -\subsection{Addresses} -\label{sec:app-addresses} -The \fun{sign} and \fun{verify} functions from Figure~\ref{fig:crypto-defs-shelley} -use Ed25519. See \cite{rfcEdDSA}. - -\subsection{KES} -The \fun{sign_{ev}} and \fun{verify_{ev}} functions from Figure~\ref{fig:kes-defs-shelley} -use the iterated sum construction from Section 3.1 of \cite{cryptoeprint:2001:034}. -We allow up to $2^7$ key evolutions, which is larger than the maximum number -of evolutions allow by the spec, \MaxKESEvo, which will be set to $90$. -See Figure~\ref{fig:rules:ocert}. - -\subsection{VRF} -\label{sec:app-vrf} -The \fun{verifyVrf} function from Figure~\ref{fig:defs-vrf} -uses ECVRF-ED25519-SHA512-Elligator2 as described in the draft IETF specification -\cite{rfcVRFDraft}. - -More generally, we expect the following properties from a Verifyable Random Function: -\begin{description} -\item[Full uniqueness] For any fixed public VRF key and for \textit{any} input seed, there is a unique VRF output that can be proved valid. -\item[Full collision resistance] It should be computationally infeasible to find two distinct VRF inputs that have the same VRF output, even if the adversary knows the private key. -\item[Pseudorandomness] Assuming the public-private key pair has been generated honestly, the VRF hash output on any adversarially-chosen VRF input looks indistinguishable from random for a computationally bounded adversary who does not know the private key. -\end{description} - -\subsection{Abstract functions} -\label{sec:abstract-funcs-implementation} - -\begin{itemize} - \item The transaction ID function $\fun{txid}$ from Figure~\ref{fig:defs:utxo-shelley} is implemented - as the BLAKE2b-256 hash of the CBOR serialization of the transaction body. - \textbf{Note} that we do \textbf{not} enforce canonical CBOR and that there are - multiple valid serializations for any given transaction body. - The transaction ID must be computed using the original bytes that were - submitted to the network. - \item The seed operation $x \seedOp y$ from Figure~\ref{fig:defs-vrf} is implemented - as the BLAKE2b-256 hash of the concatenation of $x$ and $y$. - \item The function \fun{slotToSeed} from Figure~\ref{fig:defs:blocks} is implemented - as the big-endian encoding of the slot number in 8 bytes. -\end{itemize} - - -\subsection{Multi-Signatures} -As presented in Figure~\ref{fig:types-msig}, Shelley realizes multi-signatures -in a native way, via a script-like DSL. One defines the conditions required to -validate a multi-signature, and the script takes care of verifying the -correctness of the request. It does so in a na\"ive way, i.e. checking every -signature individually. For instance, if the requirement is to have $n$ valid -signatures out of some set $\mathcal{V}$ of public keys, the na\"ive -script-based solution checks if: (i) the number of submitted signatures is -greater or equal to $n$, (ii) the distinct verification keys are part of the set -$\mathcal{V}$, and (iii) at least $n$ signatures are valid. However, there are -more efficient ways to achieve this using more advanced multi-signature schemes, -that allow for aggregating both the signatures and the verification procedure. -This results in less data to be stored on-chain, and a cheaper verification -procedure. Several schemes provide these properties~\cite{musigBoneh, musig, -musig2, pixel}, and we are currently investigating which would be the best fit -for the Cardano ecosystem. We formally introduce multi-signature schemes. - -\sloppy -A multi-signature scheme~\cite{musigs} is defined as a tuple of algorithms -$\textsf{MS} = (\textsf{MS-Setup}, \textsf{MS-KG}, \textsf{MS-AVK}, -\allowbreak\textsf{MS-Sign}, \textsf{MS-ASign}, \textsf{MS-Verify)}$ such that -$\Pi\leftarrow\textsf{MS-Setup}(1^k)$ generates public parameters---where $k$ is -the security parameter. Given the public parameters, one can generate a -verification-signing key pair calling, -$(\mathsf{vk,sk})\leftarrow\textsf{MS-KG}(\Pi)$. A multi-signature scheme -provides a signing and an aggregate functionality. Mainly -\begin{itemize} -\item $\sigma\leftarrow\textsf{MS-Sign}(\Pi, \mathsf{sk}, m)$, produces a -signature, $\sigma$, over a message $m$ using signing key $\mathsf{sk}$, and -\item $\tilde{\sigma}\leftarrow\textsf{MS-ASig}(\Pi, m, \mathcal{V, S)}$, where -given a message $m$, a set of signatures, $\mathcal{S}$, over the message $m$, -and the corresponding set of verification keys, $\mathcal{V}$, aggregates all -signatures into a single, aggregate signature $\tilde{\sigma}$. -\end{itemize} - -To generate an aggregate verification key, the verifier calls the function -$\mathsf{avk}\leftarrow\textsf{MS-AVK}(\Pi, \mathcal{V})$, which given input a -set of verification keys, $\mathcal{V}$, returns an aggregate verification key -that can be used for the verification of the aggregate siganture: -$\textsf{MS-Verify}(\Pi, \mathsf{avk}, m, -\tilde{\sigma})\in\{\textsf{true},\textsf{false}\}$. - -Note the distinction between multi-signature schemes (as described above) and -multi-signatures as defined in Figure~\ref{fig:types-msig}. In -Figure~\ref{fig:types-msig} we allow scripts to consider valid the -\type{RequireAllOf}, \type{RequireAnyOf} or \type{RequireMOfN} typed signatures. -In the definition above, given a set of public keys $\mathcal{V}$, a signature -is considered valid if \textit{all} key owners participate. However, such -multi-signature schemes together with a simple script-like DSL can achieve the -properties defined in Figure~\ref{fig:types-msig} while still providing the -benefits of a simple verification procedure, and a smaller signature size. diff --git a/eras/shelley/formal-spec/crypto-primitives.tex b/eras/shelley/formal-spec/crypto-primitives.tex deleted file mode 100644 index 7db3754615c..00000000000 --- a/eras/shelley/formal-spec/crypto-primitives.tex +++ /dev/null @@ -1,267 +0,0 @@ -\section{Cryptographic primitives} -\label{sec:crypto-primitives-shelley} - -Figure~\ref{fig:crypto-defs-shelley} introduces the cryptographic abstractions used in -this document. We begin by listing the abstract types, which are meant to -represent the corresponding concepts in cryptography. -Their exact -implementation remains open to interpretation and we do not rely on -any additional properties of public key cryptography that are not explicitly stated -in this document. The types and rules we give here are needed in -order to guarantee certain security properties of the delegation process, which -we discuss later. - -The cryptographic concepts required for the formal definition of witnessing -include public-private key pairs, one-way functions, signatures and -multi-signature scripts. The constraint we introduce states that a signature of -some data signed with a (private) key is only correct whenever we can verify it -using the corresponding public key. - -Abstract data types in this paper are essentially placeholders with names -indicating the data types they are meant to represent in an implementation. -Derived types are made up of data structures (i.e.~products, lists, finite -maps, etc.) built from abstract types. The underlying structure of a data type -is implementation-dependent and furthermore, the way the data is stored on -physical storage can vary as well. - -Serialization is a physical manifestation of data on a given storage device. -In this document, the properties and rules we state involving serialization are -assumed to hold true independently of the storage medium and style of data -organization chosen for an implementation. -The type $\Ser$ denotes the serialized representation of a term of any serializable -type. - -\begin{figure}[htb] - \emph{Abstract types} - % - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \var{sk} & \SKey & \text{private signing key}\\ - \var{vk} & \VKey & \text{public verifying key}\\ - \var{hk} & \KeyHash & \text{hash of a key}\\ - \sigma & \Sig & \text{signature}\\ - \var{d} & \Ser & \text{data}\\ - \var{script} & \Script & \text{multi-signature script} \\ - \var{hs} & \HashScr & \text{hash of a script} - \end{array} - \end{equation*} - \emph{Derived types} - \begin{equation*} - \begin{array}{r@{~\in~}lr} - (sk, vk) & \KeyPair & \text{signing-verifying key pairs} - \end{array} - \end{equation*} - \emph{Abstract functions} - % - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \hashKey{} & \VKey \to \KeyHash - & \text{hash a verification key} \\ - % - \fun{verify} & \powerset{\left(\VKey \times \Ser \times \Sig\right)} - & \text{verification relation}\\ - % - \fun{sign} & \SKey \to \Ser \to \Sig - & \text{signing function}\\ - \fun{hashScript} & \Script \to \HashScr & \text{hash a serialized script} - \end{array} - \end{equation*} - \emph{Constraints} - \begin{align*} - & \forall (sk, vk) \in \KeyPair,~ d \in \Ser,~ \sigma \in \Sig \cdot - \sign{sk}{d} = \sigma \implies (vk, d, \sigma) \in \fun{verify} - \end{align*} - \emph{Notation for serialized and verified data} - \begin{align*} - & \serialised{x} ~\in \Ser & \text{serialised representation of } x\\ - & \mathcal{V}_{\var{vk}}{\serialised{d}}_{\sigma} = \verify{vk}{d}{\sigma} - & \text{shorthand notation for } \fun{verify} - \end{align*} - \caption{Cryptographic definitions} - \label{fig:crypto-defs-shelley} -\end{figure} - -When we get to the blockchain layer validation, we will use -key evolving signatures (KES). -This is another asymmetric key cryptographic scheme, also relying on -the use of public and private key pairs. -These signature schemes provide forward cryptographic security, meaning that a -compromised key does not make it easier for an adversary to forge a signature that -allegedly had been signed in the past. -Figure~\ref{fig:kes-defs-shelley} introduces the additional cryptographic abstractions -needed for KES. - -In KES, the public verification key stays constant, but the -corresponding private key evolves incrementally. For this reason, KES -signing keys are indexed by integers representing the step in the key's -evolution. This evolution step parameter is also an additional parameter needed -for the signing (denoted by $\fun{sign_{ev}}$) and verification -(denoted by $\fun{verify_{ev}}$) functions. - -Since the private key evolves incrementally in a KES scheme, the ledger rules -require the pool operators to evolve their keys every time a certain number of -slots have passed, as determined by the global constant $\SlotsPerKESPeriod$. - -\begin{figure}[htb] - \emph{Abstract types} - % - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \var{sk} & \N \to \SKeyEv & \text{private signing keys}\\ - \var{vk} & \VKeyEv & \text{public verifying key}\\ - \end{array} - \end{equation*} - \emph{Notation for evolved signing key} - \begin{align*} - & \var{sk_n} = \var{sk}~n & n\text{-th evolution of }sk - \end{align*} - \emph{Derived types} - \begin{equation*} - \begin{array}{r@{~\in~}lr} - (sk_n, vk) & \KeyPairEv & \text{signing-verifying key pairs} - \end{array} - \end{equation*} - \emph{Abstract functions} - % - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \fun{verify_{ev}} & \powerset{\left(\VKey \times \N \times \Ser \times \Sig\right)} - & \text{verification relation}\\ - % - \fun{sign_{ev}} & (\N \to \SKeyEv) \to \N \to \Ser \to \Sig - & \text{signing function}\\ - \end{array} - \end{equation*} - \emph{Constraints} - \begin{align*} - & \forall n\in\N, (sk_n, vk) \in \KeyPairEv, ~ d \in \Ser,~ \sigma \in \Sig \cdot \\ - & ~~~~~~~~\fun{sign_{ev}}~{sk}~{n}~{d} = \sigma \implies \verifyEv{vk}{n}{d}{\sigma} - \end{align*} - \emph{Notation for verified KES data} - \begin{align*} - & \mathcal{V}^{\mathsf{KES}}_{\var{vk}}{\serialised{d}}_{\sigma}^n - = \verifyEv{vk}{n}{d}{\sigma} - & \text{shorthand notation for } \fun{verify_{ev}} - \end{align*} - \caption{KES Cryptographic definitions} - \label{fig:kes-defs-shelley} -\end{figure} - -Figure~\ref{fig:types-msig} shows the types for multi-signature -schemes. Multi-signatures effectively specify one or more combinations of -cryptographic signatures which are considered valid. This is realized in a -native way via a script-like DSL which allows for defining terms that can be -evaluated. Multi-signature scripts is the only type of script (for any -purpose, including output-locking) that exist in Shelley. - -The terms form a tree like structure and are evaluated via the -\fun{evalMultiSigScript} function. The parameters are a script and a set of key -hashes. The function returns $\mathsf{True}$ when the supplied key hashes are -a valid combination for the script, otherwise it returns $\mathsf{False}$. -The following are the four constructors that make up the multisignature script -scheme: - -\begin{itemize} -\item[$\type{RequireSig}$] ~:~ the signature of a key with a specific -hash is required; -\item[$\type{RequireAllOf}$] ~:~signatures of all of the keys that hash to the -values specified in the given list are required; -\item[$\type{RequireAnyOf}$] ~:~a single signature is required, by a key hashing -to one of the given values in the list (this constructor is redundant and can -be expressed using $\type{RequireMOf}$); -\item[$\type{RequireMOf}$]~:~ $m$ of the keys with the hashes specified in the list -are required to sign -\end{itemize} - -\begin{figure*}[hbt] - \emph{MultiSig Type} - - \begin{equation*} - \begin{array}{rll} - \MSig & \subseteq & \Script \\ - \\~\\ - \var{msig}\in\MSig & = & \type{RequireSig}~\KeyHash\\ - & \uniondistinct & - \type{RequireAllOf}~[\Script] \\ - & \uniondistinct& - \type{RequireAnyOf}~[\Script] \\ - & \uniondistinct& - \type{RequireMOf}~\N~[\Script] - \end{array} - \end{equation*} - - \emph{Functions} - - \begin{align*} - \fun{evalMultiSigScript} & \in\MSig\to\powerset\KeyHash\to\Bool & \\ - \fun{evalMultiSigScript} & ~(\type{RequireSig}~hk)~\var{vhks} = hk \in vhks \\ - \fun{evalMultiSigScript} & ~(\type{RequireAllOf}~ts)~\var{vhks} = - \forall t \in ts: \fun{evalMultiSigScript}~t~vhks\\ - \fun{evalMultiSigScript} & ~(\type{RequireAnyOf}~ts)~\var{vhks} = - \exists t \in ts: \fun{evalMultiSigScript}~t~vhks\\ - \fun{evalMultiSigScript} & ~(\type{RequireMOf}~m~ts)~\var{vhks} = \\ - & m \leq \Sigma - \left( - [\textrm{if}~(\fun{evalMultiSigScript}~\var{t}~\var{vhks})~ - \textrm{then}~1~\textrm{else}~0\vert t \leftarrow ts] - \right) - \end{align*} - - \caption{Multi-signature via Native Scripts} - \label{fig:types-msig} -\end{figure*} - - -%\subsection{Verifiable Random Functions (VRF)} -%\label{sec:defs-vrf} -Figure~\ref{fig:defs-vrf} shows the cryptographic abstractions needed for Verifiable Random Functions (VRF). VRFs allow key-pair owners, $(sk, vk)\in \KeyPair$, to evaluate a pseudorandom function in a provable way given a randomness seed. Any party with access to the verification key, $vk$, the randomness seed, the proof and the generated randomness can indeed verify that the value is pseudorandom. - -\begin{figure}[htb] - % - \emph{Abstract types} - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \var{seed} & \Seed & \text{seed for pseudo-random number generator}\\ - \var{prf} & \Proof & \text{VRF proof}\\ - \end{array} - \end{equation*} - % - \emph{Abstract functions ($T$ an arbitrary type)} - % - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \seedOp & \Seed \to \Seed \to \Seed & \text{binary seed operation} \\ - \vrf{\T}{}{} & \SKey \to \Seed \to \T\times\Proof - & \text{verifiable random function} \\ - % - \verifyVrf{\T}{}{}{} & \VKey \to \Seed \to \Proof\times\T \to \Bool - & \text{verify vrf proof} \\ - % - \end{array} - \end{equation*} - % - \emph{Derived Types} - \begin{align*} - \PoolDistr = \KeyHash_{pool} \mapsto \left([0, 1]\times\KeyHash_{vrf}\right) - \text{ \hspace{1cm}stake pool distribution} - \end{align*} - % - - \emph{Constraints} - \begin{align*} - & \forall (sk, vk) \in \KeyPair,~ seed \in \Seed,~ - \verifyVrf{T}{vk}{seed}{\left(\vrf{T}{sk}{seed}\right)} - \end{align*} - % - \emph{Constants} - \begin{align*} - & 0_{seed} \in \Seed & \text{neutral seed element} \\ - & \Seedl \in \Seed & \text{leader seed constant} \\ - & \Seede \in \Seed & \text{nonce seed constant}\\ - \end{align*} - - \caption{VRF definitions} - \label{fig:defs-vrf} -\end{figure} - -\clearpage diff --git a/eras/shelley/formal-spec/delegation.tex b/eras/shelley/formal-spec/delegation.tex deleted file mode 100644 index b3c710174f0..00000000000 --- a/eras/shelley/formal-spec/delegation.tex +++ /dev/null @@ -1,1181 +0,0 @@ -\section{Delegation} -\label{sec:delegation-shelley} - -We briefly describe the motivation and context for delegation. -The full context is contained in \cite{delegation_design}. - -Stake is said to be \textit{active} in the blockchain protocol when it is -eligible for participation in the leader election. In order for stake to become -active, the associated verification stake credential must be registered and its -staking rights must be delegated to an active stake pool. Individuals who wish -to participate in the protocol can register themselves as a stake pool. - -Stake credentials are registered (or deregistered) through the use of -registration (or deregistration) certificates. Registered stake credentials are -delegated through the use of delegation certificates. Finally, stake pools are -registered (or retired) through the use of registration (or retirement) -certificates. - -Stake pool retirement is handled a bit differently than stake deregistration. -Stake credentials are considered inactive as soon as a deregistration -certificate is applied to the ledger state. Stake pool retirement certificates, -however, specify the epoch in which it will retire. - -Delegation requires the following to be tracked by the ledger state: the -registered stake credentials, the delegation map from registered stake -credentials to stake pools, pointers associated with stake credentials, the -registered stake pools and upcoming stake pool retirements. Additionally, the -blockchain protocol rewards eligible stake and so we must also include a mapping -from active stake credentials to rewards. - -Finally, there are two types of delegation certificates available only to the -genesis keys. The genesis keys will still be used for update proposals at the -beginning of the Shelley era, and so there must be a way to maintain the delegation -of these keys to their cold keys. This mapping is also maintained by the -delegation state. There is also a mechanism to transfer rewards directly from -either the reserves pot or the treasury pot to a reward address. -While technically everybody can post such a certificate, -the transaction that contains it must be signed by $\Quorum$-many -genesis key delegates. - -\subsection{Delegation Definitions} -\label{sec:deleg-defs} - -In \cref{fig:delegation-defs} we give the delegation primitives. -Here we introduce the following primitive datatypes used in delegation: - -\begin{itemize} -\item $\DCertRegKey$: a stake credential registration certificate. -\item $\DCertDeRegKey$: a stake credential de-registration certificate. -\item $\DCertDeleg$: a stake credential delegation certificate. -\item $\DCertRegPool$: a stake pool registration certificate. -\item $\DCertRetirePool$: a stake pool retirement certificate. -\item $\DCertGen$: a genesis key delegation certificate. -\item $\DCertMir$: a move instantaneous rewards certificate. -\item $\DCert$: any one of of the seven certificate types above. -\end{itemize} -The following derived types are introduced: -\begin{itemize} -\item $\PoolParam$ represents the parameters found in a stake pool registration certificate - that must be tracked: - \begin{itemize} - \item the pool owners. - \item the pool cost. - \item the pool margin. - \item the pool pledge. - \item the pool reward account. - \item the hash of the VRF verification key. - \item the pool relays. - \item optional pool metadata (a url and a hash). - \end{itemize} - The idea of pool owners is explained in Section 4.4.4 of \cite{delegation_design}. - The pool cost and margin indicate how much more of the rewards pool leaders - get than the members. - The pool pledge is explained in Section 5.1 of \cite{delegation_design}. - The pool reward account is where all pool rewards go. - The pool relays and metadata url are explained in Sections - 3.4.4 and 4.2 of \cite{delegation_design}. -\end{itemize} - -Accessor functions for certificates and pool parameters are also defined, but -only the $\cwitness{}$ accessor function needs explanation. -It does the following: -\begin{itemize} - \item For a $\DCertRegKey$ certificate, $\fun{cwitness}$ is not defined as - stake key registrations do not require a witness. -\item For a $\DCertDeRegKey$ certificate, $\fun{cwitness}$ returns the hashkey - of the key being de-registered. -\item For a $\DCertDeleg$ certificate, $\fun{cwitness}$ returns the hashkey - of the key that is delegating (and not the key to which the stake in being delegated to). -\item For a $\DCertRegPool$ certificate, $\fun{cwitness}$ returns the hashkey - of the key of the pool operator. -\item For a $\DCertRetirePool$ certificate, $\fun{cwitness}$ returns the hashkey - of the key of the pool operator. -\item For a $\DCertGen$ certificate, $\fun{cwitness}$ returns the hashkey - of the genesis key. -\item For a $\DCertMir$ certificate, $\fun{cwitness}$ is not defined as there is - no single core node or genesis key that posts the certificate. -\end{itemize} - -%% -%% Figure - Delegation Definitions -%% -\begin{figure}[htb] - \emph{Abstract types} - % - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \var{url} & \URL & \text{a url}\\ - \var{mp} & \MIRPot & \text{either $\ReservesMIR$ or $\TreasuryMIR$}\\ - \end{array} - \end{equation*} - % - \emph{Delegation Certificate types} - % - \begin{equation*} - \begin{array}{r@{}c@{}l} - \DCert &=& \DCertRegKey \uniondistinct \DCertDeRegKey \uniondistinct \DCertDeleg \\ - &\hfill\uniondistinct\;& - \DCertRegPool \uniondistinct \DCertRetirePool \uniondistinct - \DCertGen\\ - &\hfill\uniondistinct\;& \DCertMir - \end{array} - \end{equation*} - % - \emph{Derived types} - \begin{equation*} - \begin{array}{lclr} - \PoolMD - & ~=~ - & \URL \times \type{PoolMDHash} - & \text{stake pool metadata} \\ - % - \PoolParam - & ~=~ - & \powerset{\KeyHash} \times \Coin \times \unitInterval \times \Coin - & \text{stake pool parameters} \\ - & & \qquad \times \AddrRWD \times \KeyHash_{vrf} \\ - & & \qquad \seqof{\URL} \times \PoolMD^? - \end{array} - \end{equation*} - % - \emph{Certificate Accessor functions} - % - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \cwitness{} & \DCert\setminus(\DCertRegKey\cup\DCertMir) \to \Credential & \text{certificate witness} \\ - \fun{regCred} & \DCertRegKey \to \Credential & \text{registered credential} \\ - \fun{dpool} & \DCertDeleg \to \KeyHash - & \text{pool being delegated to} - \\ - \fun{poolParam} & \DCertRegPool \to \PoolParam - & \text{stake pool} - \\ - \fun{retire} & \DCertRetirePool \to \Epoch - & \text{epoch of pool retirement} - \\ - \fun{genesisDeleg} & \DCertGen \to (\KeyHashGen,~\KeyHash,~\KeyHash_{vrf}) - & \text{genesis delegation} - \\ - \fun{credCoinMap} & \DCertMir \to (\StakeCredential \mapsto \Coin) - & \text{moved inst. rewards} - \\ - \fun{mirPot} & \DCertMir \to \MIRPot & \text{pot for inst. rewards} - \end{array} - \end{equation*} - % - \emph{Pool Parameter Accessor functions} - % - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \fun{poolOwners} & \PoolParam \to \powerset{\KeyHash} - & \text{stake pool owners} - \\ - \fun{poolCost} & \PoolParam \to \Coin - & \text{stake pool cost} - \\ - \fun{poolMargin} & \PoolParam \to \unitInterval - & \text{stake pool margin} - \\ - \fun{poolPledge} & \PoolParam \to \Coin - & \text{stake pool pledge} - \\ - \fun{poolRAcnt} & \PoolParam \to \AddrRWD - & \text{stake pool reward account} - \\ - \fun{poolVRF} & \PoolParam \to \KeyHash_{vrf} - & \text{stake pool VRF key hash} - \\ - \end{array} - \end{equation*} - - \caption{Delegation Definitions} - \label{fig:delegation-defs} -\end{figure} - -\clearpage - -\subsection{Delegation Transitions} -\label{sec:deleg-trans} - - -In \cref{fig:delegation-transitions} we give the delegation and stake pool -state transition types. We define two separate parts of the ledger state. - -\begin{itemize} - \item $\DState$ keeps track of the delegation state, consisting of: - \begin{itemize} - \item $\var{rewards}$ stores the rewards accumulated by stake credentials. - These are represented by a finite map from reward addresses to the - accumulated rewards. - \item $\var{delegations}$ stores the delegation relation, mapping stake - credentials to the pool to which is delegates. - \item $\var{ptrs}$ maps stake credentials to the position of the - registration certificate in the blockchain. This is needed to lookup the - stake hashkey of a pointer address. - \item $\var{fGenDelegs}$ are the future genesis keys delegations. This variable - is needed because genesis keys can only update their delegation with a - delay of $\StabilityWindow$ slots after submitting the certificate (this is - necessary for header validation, see Section \ref{sec:chain}) - \item $\var{genDelegs}$ maps genesis key hashes to hashes of the cold key - delegates. - \item $\var{i_{rwd}}$ stores two maps of stake credentials to $\Coin$, - which is used for moving instantaneous rewards at the epoch boundary. - One map corresponds to rewards taken from the reserves, - and the other corresponds to rewards taken from the treasury. - \end{itemize} - \item $\PState$ keeps track of the stake pool information: - \begin{itemize} - \item $\var{poolParams}$ tracks the parameters associated with each stake pool, such as - their costs and margin. - \item When changes are made to the pool parameters late in an epoch, they are staged - in $\var{fPoolParams}$. - These parameters will be updated by another transition (namely $\mathsf{EPOCH}$) - when the next epoch starts. - \item $\var{retiring}$ tracks stake pool retirements, using a map from hashkeys to - the epoch in which it will retire. - \end{itemize} -\end{itemize} - -The operational certificates counters $\var{cs}$ in the stake pool state are a -tool to ensure that blocks containing outdated certificates are rejected. -These certificates are part of the block header. -For a discussion of why this additional mechanism is needed, -see the document~\cite{delegation_design}, and for -the relevant rules, see Section \ref{sec:oper-cert-trans}. - -The environment for the state transition for $\DState$ contains the current slot number, -the index for the current certificate pointer, and the account state. -The environment for the state transition for $\PState$ contains the current slot number -and the protocol parameters. - -%% -%% Figure - Delegation Transitions -%% -\begin{figure} - \emph{Delegation Types} - \begin{equation*} - \begin{array}{rclclr} - \var{stakeCred} & \in & \StakeCredential & = & (\KeyHash_{stake} \uniondistinct - \HashScr) \\ - \var{fGenDelegs} & \in & \FutGenesisDelegation & = - & (\Slot\times\KeyHashGen)\mapsto(\KeyHash\times\KeyHash_{vrf}) \\ - \var{ir} & \in & \InstantaneousRewards & = - & (\StakeCredential \mapsto \Coin) \\ - & & & & ~~~~\times(\StakeCredential \mapsto \Coin) \\ - \end{array} - \end{equation*} - % - \emph{Delegation States} - % - \begin{equation*} - \begin{array}{l} - \DState = - \left(\begin{array}{r@{~\in~}lr} - \var{rewards} & \StakeCredential \mapsto \Coin & \text{rewards}\\ - \var{delegations} & \StakeCredential \mapsto \KeyHash_{pool} & \text{delegations}\\ - \var{ptrs} & \Ptr \mapsto \StakeCredential & \text{pointer to stake credential}\\ - \var{fGenDelegs} & \FutGenesisDelegation & \text{future genesis key delegations}\\ - \var{genDelegs} & \GenesisDelegation & \text{genesis key delegations}\\ - \var{i_{rwd}} & \InstantaneousRewards & \text{instantaneous rewards}\\ - \end{array} - \right) - \\ - \\ - \PState = - \left(\begin{array}{r@{~\in~}lr} - \var{poolParams} & \KeyHash_{pool} \mapsto \PoolParam - & \text{registered pools to pool parameters}\\ - \var{fPoolParams} & \KeyHash_{pool} \mapsto \PoolParam - & \text{future pool parameters}\\ - \var{retiring} & \KeyHash_{pool} \mapsto \Epoch & \text{retiring stake pools}\\ - \end{array}\right) - \end{array} - \end{equation*} - % - \emph{Delegation Environment} - \begin{equation*} - \DEnv = - \left( - \begin{array}{r@{~\in~}lr} - \var{slot} & \Slot & \text{slot}\\ - \var{ptr} & \Ptr & \text{certificate pointer}\\ - \var{acnt} & \Acnt & \text{accounting state} - \end{array} - \right) - \end{equation*} - % - \emph{Pool Environment} - \begin{equation*} - \PEnv = - \left( - \begin{array}{r@{~\in~}lr} - \var{slot} & \Slot & \text{slot}\\ - \var{pp} & \PParams & \text{protocol parameters}\\ - \end{array} - \right) - \end{equation*} - % - \emph{Delegation Transitions} - \begin{equation*} - \_ \vdash \_ \trans{deleg}{\_} \_ \in - \powerset (\DEnv \times \DState \times \DCert \times \DState) - \end{equation*} - % - \begin{equation*} - \_ \vdash \_ \trans{pool}{\_} \_ \in - \powerset (\PEnv \times \PState \times \DCert \times \PState) - \end{equation*} - % - \caption{Delegation Transitions} - \label{fig:delegation-transitions} -\end{figure} - -\clearpage - -\subsection{Delegation Rules} -\label{sec:deleg-rules} - - -The rules for registering and delegating stake credentials are given in -\cref{fig:delegation-rules}. Note that section 5.2 of \cite{delegation_design} -describes how a wallet would help a user choose a stake pool, though these -concerns are independent of the ledger rules. - -\begin{itemize} -\item Stake credential registration is handled by \cref{eq:deleg-reg}, since it - contains the precondition that the certificate has type $\DCertRegKey$. All - the equations in $\mathsf{DELEG}$ and $\mathsf{POOL}$ follow this same pattern - of matching on certificate type. - - There is also a precondition on registration that the hashkey associated with - the certificate witness of the certificate is not already found in the current - reward accounts (which is the source of truth for which stake credentials are registered). - - Registration causes the following state transformation: - \begin{itemize} - \item A reward account is created for this key, with a starting balance of zero. - \item The certificate pointer is mapped to the new stake credential. - \end{itemize} - - \item Stake credential deregistration is handled by \cref{eq:deleg-dereg}. - There is a precondition that the credential has been registered and that - the reward balance is zero. Deregistration causes the following state - transformation: - \begin{itemize} - \item The key is removed from the collection of registered keys. - \item The reward account is removed. - \item The key is removed from the delegation relation. - \item The certificate pointer is removed. - \end{itemize} - - \item Stake credential delegation is handled by \cref{eq:deleg-deleg}. - There is a precondition that the key has been registered. - Delegation causes the following state transformation: - \begin{itemize} - \item The delegation relation is updated so that the stake credential is - delegated to the given stake pool. The use of union override here allows - us to use the same rule to perform both an initial delegation and an - update to an existing delegation. - \end{itemize} - - \item Genesis key delegation is handled by \cref{eq:deleg-gen}. - There is a precondition that the genesis key is already in the mapping $\var{genDelegs}$. - Genesis delegation causes the following state transformation: - \begin{itemize} - \item The future genesis delegation relation is updated with the new delegate - to be adopted in $\StabilityWindow$-many slots. - \end{itemize} - - \item Moving instantaneous rewards is handled by \cref{eq:deleg-mir}. - There is a precondition that the current slot is early enough in the current - epoch and that the available reserves or treasury are sufficient to pay for the - instantaneous rewards. -\end{itemize} - - - -%% -%% Figure - Delegation Rules -%% -\begin{figure}[hbt] - \centering - \begin{equation}\label{eq:deleg-reg} - \inference[Deleg-Reg] - { - \var{c}\in\DCertRegKey & - hk \leteq \fun{regCred}~{c} & - \var{hk} \notin \dom \var{rewards} - } - { - \begin{array}{r} - \var{slot} \\ - \var{ptr} \\ - \var{acnt} - \end{array} - \vdash - \left( - \begin{array}{r} - \var{rewards} \\ - \var{delegations} \\ - \var{ptrs} \\ - \var{fGenDelegs} \\ - \var{genDelegs} \\ - \var{i_{rwd}} - \end{array} - \right) - \trans{deleg}{\var{c}} - \left( - \begin{array}{rcl} - \varUpdate{\var{rewards}} & \varUpdate{\union} & \varUpdate{\{\var{hk} \mapsto 0\}}\\ - \var{delegations} \\ - \varUpdate{\var{ptrs}} & \varUpdate{\union} & \varUpdate{\{ptr \mapsto \var{hk}\}} \\ - \var{fGenDelegs} \\ - \var{genDelegs} \\ - \var{i_{rwd}} - \end{array} - \right) - } - \end{equation} - - \begin{equation}\label{eq:deleg-dereg} - \inference[Deleg-Dereg] - { - \var{c}\in \DCertDeRegKey & - hk \leteq \cwitness{c} & - \var{hk} \mapsto 0 \in \var{rewards} - } - { - \begin{array}{r} - \var{slot} \\ - \var{ptr} \\ - \var{acnt} - \end{array} - \vdash - \left( - \begin{array}{r} - \var{rewards} \\ - \var{delegations} \\ - \var{ptrs} \\ - \var{fGenDelegs} \\ - \var{genDelegs} \\ - \var{i_{rwd}} - \end{array} - \right) - \trans{deleg}{\var{c}} - \left( - \begin{array}{rcl} - \varUpdate{\{\var{hk}\}} & \varUpdate{\subtractdom} & \varUpdate{\var{rewards}} \\ - \varUpdate{\{\var{hk}\}} & \varUpdate{\subtractdom} & \varUpdate{\var{delegations}} \\ - \varUpdate{\var{ptrs}} & \varUpdate{\subtractrange} & \varUpdate{\{\var{hk}\}} \\ - \var{fGenDelegs} \\ - \var{genDelegs} \\ - \var{i_{rwd}} - \end{array} - \right) - } - \end{equation} - - \begin{equation}\label{eq:deleg-deleg} - \inference[Deleg-Deleg] - { - \var{c}\in \DCertDeleg & hk \leteq \cwitness{c} & hk \in \dom \var{rewards} - } - { - \begin{array}{r} - \var{slot} \\ - \var{ptr} \\ - \var{acnt} - \end{array} - \vdash - \left( - \begin{array}{r} - \var{rewards} \\ - \var{delegations} \\ - \var{ptrs} \\ - \var{fGenDelegs} \\ - \var{genDelegs} \\ - \var{i_{rwd}} - \end{array} - \right) - \trans{deleg}{c} - \left( - \begin{array}{rcl} - \var{rewards} \\ - \varUpdate{\var{delegations}} & \varUpdate{\unionoverrideRight} - & \varUpdate{\{\var{hk} \mapsto \dpool c\}} \\ - \var{ptrs} \\ - \var{fGenDelegs} \\ - \var{genDelegs} \\ - \var{i_{rwd}} - \end{array} - \right) - } - \end{equation} - - \begin{equation}\label{eq:deleg-gen} - \inference[Deleg-Gen] -{ - \var{c}\in \DCertGen - & (\var{gkh},~\var{vkh},~\var{vrf})\leteq\fun{genesisDeleg}~{c} - \\ - s'\leteq\var{slot}+\StabilityWindow - & \var{gkh}\in\dom{genDelegs} - \\~\\ - { - \begin{array}{ l @{\leteq \{(k,~v) ~\mid~(} c @{\mapsto(k,~v))\in~} l @{,~\var{g}\neq\var{gkh}\}} } - \var{cod} & \var{g} & \var{genDelegs} \\ - \var{fod} & (\wcard,~\var{g}) & \var{fGenDelegs} - \end{array} - } - \\~\\ - { - \begin{array}{ l @{~\leteq~\{} c @{~\mid~\wcard\mapsto} c @{\in~} l @{\}}} - \var{currentOtherColdKeyHashes} & \var{k} & (\var{k},~\wcard) & \var{cod}\\ - \var{currentOtherVrfKeyHashes} & \var{v} & (\wcard,~\var{v}) & \var{cod}\\ - \var{futureOtherColdKeyHashes} & \var{k} & (\var{k},~\wcard) & \var{fod}\\ - \var{futureOtherVrfKeyHashes} & \var{v} & (\wcard,~\var{v}) & \var{fod}\\ - \end{array} - } - \\ - \var{vkh}\notin\var{currentOtherColdKeyHashes}\union\var{futureOtherColdKeyHashes} \\ - \var{vrf}\notin\var{currentOtherVrfKeyHashes}\union\var{futureOtherVrfKeyHashes} \\ - \var{fdeleg}\leteq\{(\var{s'},~\var{gkh}) \mapsto (\var{vkh},~\var{vrf})\} - } - { - \begin{array}{r} - \var{slot} \\ - \var{ptr} \\ - \var{acnt} - \end{array} - \vdash - \left( - \begin{array}{r} - \var{rewards} \\ - \var{delegations} \\ - \var{ptrs} \\ - \var{fGenDelegs} \\ - \var{genDelegs} \\ - \var{i_{rwd}} - \end{array} - \right) - \trans{deleg}{c} - \left( - \begin{array}{rcl} - \var{rewards} \\ - \var{delegations} \\ - \var{ptrs} \\ - \varUpdate{\var{fGenDelegs}} - & \varUpdate{\unionoverrideRight} - & \varUpdate{fdeleg} \\ - \var{genDelegs} \\ - \var{i_{rwd}} - \end{array} - \right) - } - \end{equation} - - \caption{Delegation Inference Rules} - \label{fig:delegation-rules} -\end{figure} - -\begin{figure}[htp] - \centering - \begin{equation}\label{eq:deleg-mir} - \inference[Deleg-Mir] - { - \var{c}\in \DCertMir - \\ - slot < \fun{firstSlot}~((\epoch{slot}) + 1) - \fun{StabilityWindow}\\ - (\var{irR},~\var{irT})\leteq\var{i_{rwd}} - & - (\var{treasury},~\var{reserves})\leteq\var{acnt} - \\ - (\var{pot},~\var{irPot})\leteq - {\begin{cases} - (\var{reserves},~\var{irR}) & \fun{mirPot}~\var{c}=\ReservesMIR \\ - (\var{treasury},~\var{irT}) & \fun{mirPot}~\var{c}=\TreasuryMIR - \end{cases}} - \\ - \var{combined}\leteq(\fun{mirTarget}~\var{c})\unionoverrideLeft\var{irPot} - \\ - \sum\limits_{\wcard\mapsto\var{val}\in\var{combined}} val \leq\var{pot} - \\ - \forall \var{r}\in\range{\var{irPot}},~r\geq 0 - \\ - \var{i_{rwd}'}\leteq - {\begin{cases} - (\var{combined},~\var{irT}) & \fun{mirPot}~\var{c}=\ReservesMIR \\ - (\var{irR},~\var{combined}) & \fun{mirPot}~\var{c}=\TreasuryMIR - \end{cases}} - } - { - \begin{array}{r} - \var{slot} \\ - \var{ptr} \\ - \var{acnt} - \end{array} - \vdash - \left( - \begin{array}{r} - \var{rewards} \\ - \var{delegations} \\ - \var{ptrs} \\ - \var{fGenDelegs} \\ - \var{genDelegs} \\ - \var{i_{rwd}} - \end{array} - \right) - \trans{deleg}{c} - \left( - \begin{array}{c} - \var{rewards} \\ - \var{delegations} \\ - \var{ptrs} \\ - \var{fGenDelegs}\\ - \var{genDelegs} \\ - \varUpdate{\var{i_{rwd}'}} \\ - \end{array} - \right) - } - \end{equation} - - \caption{Move Instantaneous Rewards Inference Rule} - \label{fig:dcert-mir} -\end{figure} - -The DELEG rule has ten possible predicate failures: -\begin{itemize} -\item In the case of a key registration certificate, if the staking credential - is already registered, there is a \emph{StakeKeyAlreadyRegistered} failure. -\item In the case of a key deregistration certificate, if the key is not - registered, there is a \emph{StakeKeyNotRegistered} failure. -\item In the case of a key deregistration certificate, if the associated - reward account is non-zero, there is a \emph{StakeKeyNonZeroAccountBalance} failure. -\item In the case of a non-existing stake pool key in a delegation certificate, - there is a \emph{StakeDelegationImpossible} failure. -\item In the case of a pool delegation certificate, there is a - \emph{WrongCertificateType} failure. -\item In the case of a genesis key delegation certificate, if the genesis key is not - in the domain of the genesis delegation mapping, there is a - \emph{GenesisKeyNotInMapping} failure. -\item In the case of a genesis key delegation certificate, if the delegate key is - in the range of the genesis delegation mapping, there is a - \emph{DuplicateGenesisDelegate} failure. -\item In the case of insufficient reserves to pay the instantaneous rewards, - there is a \emph{InsufficientForInstantaneousRewards} failure. -\item In the case that a MIR certificate is issued during the last - $\StabilityWindow$-many slots of the epoch, - there is a \emph{MIRCertificateTooLateinEpoch} failure. -\item In the case of a genesis key delegation certificate, if the VRF key is - in the range of the genesis delegation mapping, there is a - \emph{DuplicateGenesisVRF} failure. -\end{itemize} - -\clearpage - -\subsection{Stake Pool Rules} -\label{sec:pool-rules} - - -The rules for updating the part of the ledger state defining the current stake -pools are given in \cref{fig:pool-rules}. The calculation of stake distribution -is described in Section~\ref{sec:stake-dist-calc}. - -In the pool rules, the stake pool is identified with the hashkey of the pool operator. -For each rule, again, we first check that a given certificate $c$ is of the correct type. - -\begin{itemize} - \item Stake pool registration is handled by \cref{eq:pool-reg}. - It is required that the pool not be currently registered. - Registration causes the following state transformation: - \begin{itemize} - \item The key is added to the set of registered stake pools. - \item The pool's parameters are stored. - \end{itemize} - \item Stake pool parameter updates are handled by \cref{eq:pool-rereg}. - This rule, which also matches on the certificate type $\type{DCertRegPool}$, - is distinguished from \cref{eq:pool-reg} by the requirement that the pool be registered. - - Unlike the initial stake pool registrations, the pool parameters will not change - until the next epoch, after stake distribution snapshots are taken. - This gives delegators an entire epoch to respond to changes in stake pool parameters. - The staging is achieved by adding updates to the mapping $\var{fPoolParams}$, - which will override $\var{poolParam}$ with new values in the $\mathsf{EPOCH}$ transition - (see Figure~\cref{fig:rules:epoch}). - - This rule also ends stake pool retirements. - Note that $\var{poolParams}$ is \textbf{not} updated. - The registration creation slot does does not change. - \item Stake pool retirements are handled by \cref{eq:pool-ret}. - Given a slot number $\var{slot}$, the application of this rule requires that the - planned retirement epoch $\var{e}$ stated in the certificate is in the future, - i.e.~after $\var{cepoch}$ (the epoch of the current slot number in this context) and - that it is no more than than $\emax$ epochs after the current one. - It is also required that the pool be registered. - Note that imposing the $\emax$ constraint on the system is not strictly necessary. - However, forcing stake pools to announce their retirement a shorter time in - advance will curb the growth of the $\var{retiring}$ list in the ledger state. - - The pools scheduled for retirement must be removed from - the $\var{retiring}$ state variable at the beginning of the epoch they are scheduled - to retire in. This non-signaled transition (triggered, instead, directly by a - change of current slot number in the environment), along with all other transitions - that take place at the epoch boundary, are described in Section~\ref{sec:epoch}. - - Retirement causes the following state transformation: - \begin{itemize} - \item The pool is marked to retire on the given epoch. - If it was previously retiring, the retirement epoch is now updated. - \end{itemize} -\end{itemize} - -%% -%% Figure - Pool Rules -%% -\begin{figure}[hbt] - \begin{equation}\label{eq:pool-reg} - \inference[Pool-Reg] - { - \var{c}\in\DCertRegPool - & \var{hk} \leteq \cwitness{c} - & \var{pool} \leteq \poolParam{c} - \\ - hk \notin \dom \var{poolParams} - & \fun{poolCost}~\var{pool}\geq\fun{minPoolCost}~\var{pp} - } - { - \begin{array}{r} - \var{slot} \\ - \var{pp} \\ - \end{array} - \vdash - \left( - \begin{array}{r} - \var{poolParams} \\ - \var{fPoolParams} \\ - \var{retiring} \\ - \end{array} - \right) - \trans{pool}{c} - \left( - \begin{array}{rcl} - \varUpdate{\var{poolParams}} & \varUpdate{\union} - & \varUpdate{\{\var{hk} \mapsto \var{pool}\}} \\ - \var{fPoolParams} \\ - \var{retiring} \\ - \end{array} - \right) - } - \end{equation} - - \begin{equation}\label{eq:pool-rereg} - \inference[Pool-reReg] - { - \var{c}\in\DCertRegPool - & \var{hk} \leteq \cwitness{c} - & \var{pool} \leteq \poolParam{c} - \\ - hk \in \dom \var{poolParams} - & \fun{poolCost}~\var{pool}\geq\fun{minPoolCost}~\var{pp} - } - { - \begin{array}{r} - \var{slot} \\ - \var{pp} \\ - \end{array} - \vdash - \left( - \begin{array}{r} - \var{poolParams} \\ - \var{fPoolParams} \\ - \var{retiring} \\ - \end{array} - \right) - \trans{pool}{c} - \left( - \begin{array}{rcl} - \var{poolParams} \\ - \varUpdate{\var{fPoolParams}} & \varUpdate{\unionoverrideRight} - & \varUpdate{\{\var{hk} \mapsto \var{pool}\}}\\ - \varUpdate{\{\var{hk}\}} & \varUpdate{\subtractdom} & \varUpdate{\var{retiring}} \\ - \end{array} - \right) - } - \end{equation} - - \begin{equation}\label{eq:pool-ret} - \inference[Pool-Retire] - { - \var{c} \in \DCertRetirePool - & hk \leteq \cwitness{c} - & \var{hk} \in \dom \var{poolParams} \\ - \var{e} \leteq \retire{c} - & \var{cepoch} \leteq \epoch{slot} - & \var{cepoch} < \var{e} \leq \var{cepoch} + (\fun{emax}~{pp}) - } - { - \begin{array}{r} - \var{slot} \\ - \var{pp} \\ - \end{array} - \vdash - \left( - \begin{array}{r} - \var{poolParams} \\ - \var{fPoolParams} \\ - \var{retiring} \\ - \end{array} - \right) - \trans{pool}{c} - \left( - \begin{array}{rcl} - \var{poolParams} \\ - \var{fPoolParams} \\ - \varUpdate{\var{retiring}} & \varUpdate{\unionoverrideRight} - & \varUpdate{\{\var{hk} \mapsto \var{e}\}} \\ - \end{array} - \right) - } - \end{equation} - - \caption{Pool Inference Rule} - \label{fig:pool-rules} - -\end{figure} - -The POOL rule has four predicate failures: -\begin{itemize} -\item In the case of a pool registration or re-registration certificate, - if specified pool cost parameter is smaller than the value of the - protocol parameter $\mathsf{minPoolCost}$, there is a \emph{StakePoolCostTooLow} failure. -\item In the case of a pool retirement certificate, if the pool key is not in - the domain of the stake pools mapping, there is a - \emph{StakePoolNotRegisteredOnKey} failure. -\item In the case of a pool retirement certificate, if the retirement epoch is - not between the current epoch and the relative maximal epoch from the current - epoch, there is a \emph{StakePoolRetirementWrongEpoch} failure. -\item If the delegation certificate is not of one of the pool types, there is a - \emph{WrongCertificateType} failure. -\end{itemize} - -\clearpage - -\subsection{Delegation and Pool Combined Rules} -\label{sec:del-pool-rules} - -We now combine the delegation and pool transition systems. -Figure~\ref{fig:defs:delpl} gives the state, environment and transition type for the -combined transition. - -\begin{figure}[hbt] - \emph{Delegation and Pool Combined Environment} - \begin{equation*} - \DPEnv = - \left( - \begin{array}{r@{~\in~}lr} - \var{slot} & \Slot & \text{slot}\\ - \var{ptr} & \Ptr & \text{certificate pointer}\\ - \var{pp} & \PParams & \text{protocol parameters}\\ - \var{acnt} & \Acnt & \text{accounting state} - \end{array} - \right) - \end{equation*} - % - \emph{Delegation and Pool Combined State} - \begin{equation*} - \DPState = - \left( - \begin{array}{r@{~\in~}lr} - \var{dstate} & \DState & \text{delegation state}\\ - \var{pstate} & \PState & \text{pool state}\\ - \end{array} - \right) - \end{equation*} - % - \emph{Delegation and Pool Combined Transition} - \begin{equation*} - \_ \vdash \_ \trans{delpl}{\_} \_ \in - \powerset ( - \DPEnv \times \DPState \times \DCert \times \DPState) - \end{equation*} - \caption{Delegation and Pool Combined Transition Type} - \label{fig:defs:delpl} -\end{figure} - -\clearpage - -Figure~\ref{fig:rules:delpl}, gives the rules for the combined transition. -Note that for any given certificate, at most one of the two rules -(\cref{eq:delpl-d} and \cref{eq:delpl-p}) -will be successful, since the pool certificates are disjoint from the delegation certificates. - -\begin{figure}[hbt] - \emph{Delegation and Pool Combined Rules} - \begin{equation} - \label{eq:delpl-d} - \inference[Delpl-Deleg] - { - & - { - \begin{array}{r} - \var{slot} \\ - \var{ptr} \\ - \var{acnt} - \end{array} - } - \vdash \var{dstate} \trans{\hyperref[fig:delegation-rules]{deleg}}{c} \var{dstate'} - } - { - \begin{array}{r} - \var{slot} \\ - \var{ptr} \\ - \var{pp} \\ - \var{acnt} - \end{array} - \vdash - \left( - \begin{array}{r} - \var{dstate} \\ - \var{pstate} - \end{array} - \right) - \trans{delpl}{c} - \left( - \begin{array}{rcl} - \varUpdate{\var{dstate'}} \\ - \var{pstate} - \end{array} - \right) - } - \end{equation} - \begin{equation} - \label{eq:delpl-p} - \inference[Delpl-Pool] - { - & - { - \begin{array}{r} - \var{slot} \\ - \var{pp} \\ - \end{array} - } - \vdash \var{pstate} \trans{\hyperref[fig:pool-rules]{pool}}{c} \var{pstate'} - } - { - \begin{array}{r} - \var{slot} \\ - \var{ptr} \\ - \var{pp} \\ - \var{acnt} - \end{array} - \vdash - \left( - \begin{array}{r} - \var{dstate} \\ - \var{pstate} - \end{array} - \right) - \trans{delpl}{c} - \left( - \begin{array}{rcl} - \var{dstate} \\ - \varUpdate{\var{pstate'}} - \end{array} - \right) - } - \end{equation} - \caption{Delegation and Pool Combined Transition Rules} - \label{fig:rules:delpl} -\end{figure} - -We now describe a transition system that processes the list of certificates inside a transaction. -It is defined recursively from the transition system in Figure~\ref{fig:rules:delpl} above. - -Figure~\ref{fig:type:delegations} defines the types for the delegation certificate sequence -transition. - -\begin{figure}[hbt] - \emph{Certificate Sequence Environment} - \begin{equation*} - \DPSEnv = - \left( - \begin{array}{r@{~\in~}lr} - \var{slot} & \Slot & \text{slot}\\ - \var{txIx} & \Ix & \text{transaction index}\\ - \var{pp} & \PParams & \text{protocol parameters}\\ - \var{tx} & \Tx & \text{transaction} \\ - \var{acnt} & \Acnt & \text{accounting state} - \end{array} - \right) - \end{equation*} - % - \begin{equation*} - \_ \vdash \_ \trans{delegs}{\_} \_ \in - \powerset ( - \DPSEnv \times \DPState \times \seqof{\DCert} \times \DPState) - \end{equation*} - \caption{Delegation sequence transition type} - \label{fig:type:delegations} -\end{figure} - -Figure~\ref{fig:rules:delegation-sequence} defines the transition system recursively. -This definition guarantees that a certificate list (and therefore, the transaction carrying it) -cannot be processed unless every certificate in it is valid. For example, if a transaction is -carrying a certificate that schedules a pool retirement in a past epoch, the whole transaction -will be invalid. - -\begin{itemize} -\item The base case, when the list is empty, is captured by - \cref{eq:delegs-base}. In the base case we address one final accounting - detail not yet covered by the UTxO transition, namely setting the reward - account balance to zero for any account that made a withdrawal. There is - therefore a precondition that all withdrawals are correct, where correct means - that there is a reward account for each stake credential and that the balance - matches that of the reward being withdrawn. The base case triggers the - following state transformation: - \begin{itemize} - \item Reward accounts are set to zero for each corresponding withdrawal. - \end{itemize} - \item The inductive case, when the list is non-empty, is captured by \cref{eq:delegs-induct}. - It constructs a certificate pointer given the current slot and transaction index, - calls $\mathsf{DELPL}$ on the next certificate in the list and inductively - calls $\mathsf{DELEGS}$ on the rest of the list. - The inductive case triggers the following state transformation: - \begin{itemize} - \item The delegation and pool states are (inductively) updated by the results of - $\mathsf{DELEGS}$, which is then updated according to $\mathsf{DELPL}$. - \end{itemize} -\end{itemize} - -\begin{figure}[hbt] - \begin{equation} - \label{eq:delegs-base} - \inference[Seq-delg-base] - { - \var{wdrls} \leteq \txwdrls{(\txbody{tx})} - & - \var{wdrls} \subseteq \var{rewards} - \\ - \var{rewards'} \leteq \var{rewards} \unionoverrideRight \{(w, 0) \mid w \in \dom \var{wdrls}\} - } - { - \begin{array}{c} - \var{slot} \\ - \var{txIx} \\ - \var{pp} \\ - \var{tx} \\ - \var{acnt} - \end{array} - \vdash - \left( - \begin{array}{c} - \left( - \begin{array}{r} - \var{rewards} \\ - \var{delegations} \\ - \var{ptrs} \\ - \var{fGenDelegs} \\ - \var{genDelegs} \\ - \var{i_{rwd}} - \end{array} - \right) \\~\\ - \left( - \begin{array}{c} - \var{poolParams} \\ - \var{fPoolParams} \\ - \var{retiring} \\ - \end{array} - \right) \\ - \end{array} - \right) - \trans{delegs}{\epsilon} - \left( - \begin{array}{c} - \left( - \begin{array}{c} - \varUpdate{\var{rewards'}} \\ - \var{delegations} \\ - \var{ptrs} \\ - \var{fGenDelegs} \\ - \var{genDelegs} \\ - \var{i_{rwd}} - \end{array} - \right) \\~\\ - \left( - \begin{array}{c} - \var{poolParams} \\ - \var{fPoolParams} \\ - \var{retiring} \\ - \end{array} - \right) \\ - \end{array} - \right) - } - \end{equation} - - \nextdef - - \begin{equation} - \label{eq:delegs-induct} - \inference[Seq-delg-ind] - { - { - \begin{array}{c} - \var{slot}\\ - \var{txIx}\\ - \var{pp}\\ - \var{tx}\\ - \var{acnt} - \end{array} - } - \vdash - \var{dpstate} - \trans{delegs}{\Gamma} - \var{dpstate'} - \\~\\~\\ - \var{c}\in\DCertDeleg \Rightarrow \fun{dpool}~{c} \in \dom \var{poolParams} \\ - ptr \leteq (\var{slot},~\var{txIx},~\mathsf{len}~\Gamma) \\~\\ - { - \begin{array}{c} - \var{slot}\\ - \var{ptr}\\ - \var{pp}\\ - \var{acnt} - \end{array} - } - \vdash - \var{dpstate'} - \trans{\hyperref[fig:rules:delpl]{delpl}}{c} - \var{dpstate''} - } - { - { - \begin{array}{c} - \var{slot}\\ - \var{txIx}\\ - \var{pp}\\ - \var{tx}\\ - \var{acnt} - \end{array} - } - \vdash - \var{dpstate} - \trans{delegs}{\Gamma; c} - \varUpdate{\var{dpstate''}} - } - \end{equation} - \caption{Delegation sequence rules} - \label{fig:rules:delegation-sequence} -\end{figure} - -The DELEGS rule has two predicate failures: -\begin{itemize} -\item In the case of a key delegation certificate, if the pool key is not - registered, there is a \emph{DelegateeNotRegistered} failure. -\item If the withdrawals mapping of the transaction is not a subset of the - rewards mapping of the delegation state, there is a - \emph{WithdrawalsNotInRewards} failure. -\end{itemize} - -\clearpage diff --git a/eras/shelley/formal-spec/epoch.tex b/eras/shelley/formal-spec/epoch.tex deleted file mode 100644 index 2992cfbf35c..00000000000 --- a/eras/shelley/formal-spec/epoch.tex +++ /dev/null @@ -1,1541 +0,0 @@ -\section{Rewards and the Epoch Boundary} -\label{sec:epoch} - -\newcommand{\UTxOEpState}{\type{UTxOEpState}} -\newcommand{\PlReapState}{\type{PlReapState}} -\newcommand{\NewPParamEnv}{\type{NewPParamEnv}} -\newcommand{\Snapshot}{\type{Snapshot}} -\newcommand{\Snapshots}{\type{Snapshots}} -\newcommand{\SnapshotEnv}{\type{SnapshotEnv}} -\newcommand{\SnapshotState}{\type{SnapshotState}} -\newcommand{\NewPParamState}{\type{NewPParamState}} -\newcommand{\EpochState}{\type{EpochState}} -\newcommand{\BlocksMade}{\type{BlocksMade}} -\newcommand{\Stake}{\type{Stake}} -\newcommand{\RewardUpdate}{\type{RewardUpdate}} - -\newcommand{\obligation}[3]{\fun{obligation}~ \var{#1}~ \var{#2}~ \var{#3}} -\newcommand{\reward}[8]{\fun{reward} - ~ \var{#1}~ \var{#2}~ \var{#3}~ \var{#4}~ \var{#5}~ \var{#6}~ \var{#7}~ \var{#8}} -\newcommand{\isActive}[4]{\fun{isActive}~ \var{#1}~ \var{#2}~ \var{#3}~ \var{#4}} -\newcommand{\activeStake}[5]{\fun{activeStake}~ \var{#1}~ \var{#2}~ \var{#3}~ \var{#4}~ \var{#5}} -\newcommand{\poolRefunds}[2]{\fun{poolRefunds}~ \var{#1}~ \var{#2}} -\newcommand{\poolStake}[3]{\fun{poolStake}~ \var{#1}~ \var{#2}~ \var{#3}} -\newcommand{\stakeDistr}[3]{\fun{stakeDistr}~ \var{#1}~ \var{#2}~ \var{#3}} -\newcommand{\lReward}[4]{\fun{r_{operator}}~ \var{#1}~ \var{#2}~ \var{#3}~ {#4}} -\newcommand{\mReward}[4]{\fun{r_{member}}~ \var{#1}~ \var{#2}~ \var{#3}~ {#4}} -\newcommand{\mkApparentPerformance}[4]{\fun{mkApparentPerformance}~\var{#1}~{#2}~\var{#3}~\var{#4}} -\newcommand{\createRUpd}[4]{\fun{createRUpd}~\var{#1}~\var{#2}~\var{#3}~\var{#4}} -\newcommand{\getIR}[1]{\fun{getIR}~\var{#1}} - -This chapter introduces the epoch boundary transition system and the related reward calculation. - -The transition system is defined in Section~\ref{sec:total-epoch}, -and involves taking stake distribution snapshots -(Sections~\ref{sec:stake-dist-calc} and~\ref{sec:snapshots}), -retiring stake pools (Section~\ref{sec:pool-reap}), -and performing protocol updates (Section~\ref{sec:pparam-update}). -The reward calculation, defined in Sections~\ref{sec:reward-dist} and~\ref{sec:reward-calc}, -distributes the leader election rewards. - -\subsection{Overview of the Reward Calculation} -\label{sec:reward-overview} - -The rewards for a given epoch $e_i$ involve the two epochs surrounding it. -In particular, the stake distribution will come from the previous epoch -and the rewards will be calculated in the following epoch. -More concretely: -\begin{enumerate}[(A)]%for small alpha-characters within brackets. - \item A stake distribution snapshot is taken at the begining of epoch $e_{i-1}$. - \item The randomness for leader election is fixed during epoch $e_{i-1}$ - \item Epoch $e_{i}$ begins. - \item Epoch $e_{i}$ ends. - A snapshot is taken of the stake pool performance during epoch $e_{i}$. - A snapshot is also taken of the fee pot. - \item The snapshots from (D) are stable and the reward calculation can begin. - \item The reward calculation is finished and an update to the ledger state - is ready to be applied. - \item Rewards are given out. -\end{enumerate} - -\usetikzlibrary{decorations.pathreplacing} -\begin{tikzpicture} -% axis -\draw[latex-latex] (0,0) -- (11,0) ; - -% epoch braces -\draw [decorate,decoration={brace,amplitude=10pt} ,yshift=5pt] (1.03,0) -- (3.97,0) - node [midway, above, yshift=9pt]{$e_{i-1}$}; -\draw [decorate,decoration={brace,amplitude=10pt} ,yshift=5pt] (4.03,0) -- (6.97,0) - node [midway, above, yshift=9pt]{$e_{i}$}; -\draw [decorate,decoration={brace,amplitude=10pt} ,yshift=5pt] (7.03,0) -- (9.97,0) - node [midway, above, yshift=9pt]{$e_{i+1}$}; - -% epoch boundaries -\foreach \x in {1,4,7,10} - \draw[shift={(\x,0)}] (0pt,0pt) -- (0pt,-3pt); - -\node at (1,-0.5) {A}; -\node at (3,-0.5) {B}; -\node at (4,-0.5) {C}; -\node at (7,-0.5) {D}; -\node at (8,-0.5) {E}; -\node at (9,-0.5) {F}; -\node at (10,-0.5) {G}; - -\end{tikzpicture} - -We must therefore store the last three stake distributions. -The mnemonic ``mark, set, go'' will be used to keep -track of the snapshots, where the label ``mark'' refers to the most recent snapshot, -and ``go'' refers to the snapshot that is ready to be used in the reward calculation. -In the above diagram, the snapshot taken at (A) is labeled ``mark'' during epoch $e_{i-1}$, -``set'' during epoch $e_i$ and ``go'' during epoch $e_{i+1}$. At (G) the snapshot -taken at (A) is no longer needed and will be discarded. - -The two main transition systems in this section are: -\begin{itemize} - \item The transition system named $\mathsf{EPOCH}$, which is defined in - Section~\ref{sec:total-epoch}, covers what happens at the epoch boundary, - such as at (A), (C), (D) and (G). - \item The transition named $\mathsf{RUPD}$, which is defined in - Section~\ref{sec:reward-update-trans}, covers the reward calculation that - happens between (E) and (F). -\end{itemize} - - -\begin{note} - Between time D and E we are concerned with chain growth and stability. - Therefore this duration can be stated as 2k blocks (to state it in slots requires details about - the particular version of the Ouroboros protocol). The duration between F and G is also 2k blocks. - Between E and F a single honest block is enough to ensure a random nonce. -\end{note} - -\subsection{Example Illustration of the Reward Cycle} -\label{sec:illustration-reward-cycle} - -\definecolor{epochColor}{rgb} {1.00,0.50,0.00} -\definecolor{aliceColor}{rgb} {0.65,0.00,0.00} -\definecolor{bobColor}{rgb} {0.00,0.50,0.00} -\definecolor{bob2Color}{rgb} {0.00,0.95,0.00} -\definecolor{snapshot1}{rgb} {0.00,0.00,0.90} -\definecolor{snapshot2}{rgb} {0.00,0.60,0.90} - -\begin{tikzpicture} - - % Axis - \draw [thick] (-0.2,0) -- (13,0); - \draw (0,-.2) -- (0, .2); - \draw (3,-.2) -- (3, .2); - \draw (6,-.2) -- (6, .2); - \draw (9,-.2) -- (9, .2); - \draw (12,-.2) -- (12, .2); - \node[align=center, below, color=epochColor] at (1.5,0.5) - {$e_1$}; - \node[align=center, below, color=epochColor] at (4.5,0.5) - {$e_2$}; - \node[align=center, below, color=epochColor] at (7.5,0.5) - {$e_3$}; - \node[align=center, below, color=epochColor] at (10.5,0.5) - {$e_4$}; - - % Alice - % Alice's circle - \draw [aliceColor, fill] (0,3) circle [radius=0.5]; - \node [white] at (0,3) {Alice}; - % Alice's delegation line - \draw [->,thick, aliceColor] (0.4,2.65) to (2,0.05); - \node [aliceColor] at (2.2,2) {delegate to Bob}; - - % Bob - % Bob's circle - \draw [bobColor, fill] (0,-3) circle [radius=0.5]; - \node [white] at (0,-3) {Bob}; - % Bob's registration line - \draw [->,thick, bobColor] (0.2,-2.50) to (1,-0.05); - \node [align=left, below, bobColor] at (-0.5,-0.5) {initial pool \\ registration}; - % Bob's re-registration line - \draw [->,thick, bob2Color] (0.45,-2.65) to (2.90,-0.05); - \node [bob2Color] at (2,-2.8) {re-registration}; - % Bob's cached parameter change - \draw [->,thick, bob2Color] (2.9,-0.2) to [out=280, in=180] (3,-2) - to [out=0, in=290] (3.1,-0.2); - - % Alice time to re-delegate - \draw [decorate, decoration = {brace, mirror, amplitude=10pt}, aliceColor, thick] - (3.2,-0.2) to (5.9,-0.2); - \node [align=center, below, aliceColor] at (5.1,-0.5) - {Alice's opportunity \\ to re-delegate \\ before Bob's new \\ parameters}; - - % Bob's blocks - % epoch e3 - \draw [fill=bobColor,bobColor] (6.3,-.1) rectangle (6.5,-.3); - \draw [fill=bobColor,bobColor] (6.7,-.1) rectangle (6.9,-.3); - \draw [fill=bobColor,bobColor] (7.4,-.1) rectangle (7.6,-.3); - \draw [fill=bobColor,bobColor] (8.4,-.1) rectangle (8.6,-.3); - \draw [decorate, decoration = {brace, mirror, amplitude=10pt}, bobColor, thick] - (6.2, -0.4) to (8.9,-0.4); - \draw [->,thick, bobColor] (7.6, -0.8) to [out=315,in=200] (8.4, -1.2) - to [] (9.6, -0.9); - - % epoch e4 - \draw [fill=bob2Color,bob2Color] (9.9,-.1) rectangle (10.1,-.3); - \draw [fill=bob2Color,bob2Color] (10.4,-.1) rectangle (10.6,-.3); - \draw [fill=bob2Color,bob2Color] (10.8,-.1) rectangle (11.0,-.3); - \draw [decorate, decoration = {brace, mirror, amplitude=10pt}, bob2Color, thick] - (9.7, -0.4) to (11.2,-0.4); - \draw [->,thick, bob2Color] (10.6, -0.8) to [out=315,in=200] (11.4, -1.2) - to [] (12.6, -0.9); - - % Snapshots - \draw [->,thick, snapshot1] (3,0.3) to [out=90,in=150] (9,0.5) - to [out=330,in=180] (10,-1) to [out=0,in=-135] (12,0) ; - \node [snapshot1] at (2.7,1.2) {mark}; - \node [snapshot1] at (6,1.9) {set}; - \node [snapshot1] at (9,0.9) {go}; - - \draw [->,thick, snapshot2] (6,0.3) to [out=90,in=150] (12,0.5) - to [out=330,in=180] (13,-1); - \node [snapshot2] at (5.7,1.2) {mark}; - \node [snapshot2] at (9,1.9) {set}; - \node [snapshot2] at (12,0.9) {go}; -\end{tikzpicture} - -Bob registers his stake pool in epoch $e_1$. -Alice delegates to Bob's stake pool in epoch $e_1$. -Just before the end of epoch $e_1$, Bob submits a stake pool re-registration, -changing his pool parameters. The change in parameters is not immediate, -as shown by the curved arrow around the epoch boundary. - -A snapshot is taken on the $e_1$/$e_2$ boundary. It is labeled ``mark'' initially. -This snapshot includes Alice's delegation to Bob's pool, and Bob's pool parameters -and listed in the initial pool registration certificate. - -If Alice changes her delegation choice any time during epoch $e_2$, -she will never be effected by Bob's change of parameters. - -A new snapshot is taken on the $e_2$/$e_3$ boundary. -The previous (darker blue) snapshot is now labeled ``set'', and the new one labeled ``mark''. -The ``set'' snapshot is used for leader election in epoch $e_3$. - -On the $e_3$/$e_4$ boundary, the darker blue snapshot is labeled ``go'' and -the lighter blue snapshot is labeled ``set''. -Bob's stake pool performance during epoch $e_3$ (he produced 4 blocks) -will be used with the darker blue snapshot for the rewards which will -be handed out at the beginning of epoch $e_5$. - -\subsection{Helper Functions and Accounting Fields} -\label{sec:stake-dist-helpers} - -Figure~\ref{fig:funcs:epoch-helper-rewards} defines four helper functions needed -throughout the rest of the section. - -\begin{itemize} - \item The function $\fun{obligation}$ calculates the the minimal amount of coin needed to - pay out all deposit refunds. - \item The function $\fun{poolStake}$ filters the stake distribution to one stake pool. -\end{itemize} - - -%% -%% Figure - Helper Functions for Epoch Rules -%% -\begin{figure}[htb] - \emph{Total possible refunds} - \begin{align*} - & \fun{obligation} \in \PParams \to (\StakeCredential \mapsto \Coin) - \to (\KeyHash_{pool}\mapsto\PoolParam) \to \Coin \\ - & \obligation{pp}{rewards}{poolParams} = \\ - & ~~~~~ - (\fun{keyDeposit}~\var{pp}) \cdot|\var{rewards}| + - (\fun{poolDeposit}~\var{pp}) \cdot|\var{poolParams}| \\ - \end{align*} - % - \emph{Filter Stake to one Pool} - \begin{align*} - & \fun{poolStake} \in \KeyHash_{pool} \to (\KeyHash_{stake} \mapsto \KeyHash_{pool}) - \to \Stake \to \Stake \\ - & \poolStake{hk}{delegs}{stake} = - \dom{(\var{delegs}\restrictrange\{hk\})\restrictdom\var{stake}} - \end{align*} - - \caption{Helper Functions used in Rewards and Epoch Boundary} - \label{fig:funcs:epoch-helper-rewards} -\end{figure} - - -The Figure~\ref{fig:defs:accounting} lists the accounting fields, denoted by $\Acnt$, -which will be used throughout this section. It consists of: -\begin{itemize} - \item The value $\var{treasury}$ tracks the amount of coin currently stored in the treasury. - Initially there will be no way to remove these funds. - \item The value $\var{reserves}$ tracks the amount of coin currently stored in the reserves. - This pot is used to pay rewards. -\end{itemize} -More will be said about the general accounting system in Section~\ref{sec:reward-calc}. - -%% -%% Figure - Accounting fields -%% -\begin{figure}[htb] - \emph{Accounting Fields} - \begin{equation*} - \Acnt = - \left( - \begin{array}{r@{~\in~}ll} - \var{treasury} & \Coin & \text{treasury pot}\\ - \var{reserves} & \Coin & \text{reserve pot}\\ - \end{array} - \right) - \end{equation*} - % - \caption{Accounting fields} - \label{fig:defs:accounting} -\end{figure} - - -\subsection{Stake Distribution Calculation} -\label{sec:stake-dist-calc} - -This section defines the stake distribution calculations. -Figure~\ref{fig:epoch-defs} introduces three new derived types: -\begin{itemize} - \item $\type{BlocksMade}$ represents the number of blocks each stake pool produced - during an epoch. - \item $\type{Stake}$ represents the amount of stake (in $\type{Coin}$) controlled by each - stake pool. -\end{itemize} - -%% -%% Figure - Epoch Abstract Types -%% -\begin{figure}[htb] - \emph{Derived types} - % - \begin{equation*} - \begin{array}{r@{~\in~}l@{\qquad=\qquad}lr} - \var{blocks} - & \BlocksMade - & \KeyHash_{pool} \mapsto \N - & \text{blocks made by stake pools} \\ - \var{stake} - & \Stake - & \Credential \mapsto \Coin - & \text{stake} \\ - \end{array} - \end{equation*} - \caption{Epoch definitions} - \label{fig:epoch-defs} -\end{figure} - -The stake distribution calculation is given in Figure~\ref{fig:functions:stake-distribution}. - -\begin{itemize} -\item $\fun{aggregate_{+}}$ takes a relation on $A\times B$, where $B$ is any - monoid $(B,+,e)$ and returns a map from each $a\in A$ to the ``sum'' (using - the monoidal $+$ operation) of all $b\in B$ such that $(a, b)\in A\times B$. -\item $\fun{stakeDistr}$ uses the $\fun{aggregate_{+}}$ function and several relations to - compute the stake distribution, mapping each hashkey to the total coin under its control. - Keys that are not both registered and delegated are filtered out. - The relation passed to $\fun{aggregate_{+}}$ is made up of: - \begin{itemize} - \item $\fun{stakeCred_b}^{-1}$, relating credentials to (base) addresses - \item $\left(\fun{addrPtr}\circ\var{ptr}\right)^{-1}$, relating credentials to (pointer) - addresses - \item $\range{utxo}$, relating addresses to coins - \item $\fun{stakeCred_r}^{-1}\circ\var{rewards}$, relating (reward) addresses to coins - \end{itemize} - The notation for relations is explained in Section~\ref{sec:notation-shelley}. -\end{itemize} - -%% -%% Figure Functions for Stake Distribution -%% -\begin{figure}[htb] - \emph{Aggregation (for a monoid B)} - % - \begin{align*} - & \fun{aggregate_{+}} \in \powerset{(A \times B)} \to (A\mapsto B) \\ - & \fun{aggregate_{+}}~\var{R} = \left\{a\mapsto \sum_{(a,b)\in\var{R}}b - ~\mid~a\in\dom\var{R}\right\} \\ - \end{align*} - % - \emph{Stake Distribution (using functions and maps as relations)} - % - \begin{align*} - & \fun{stakeDistr} \in \UTxO \to \DState \to \PState \to \Snapshot \\ - & \fun{stakeDistr}~{utxo}~{dstate}~{pstate} = \\ - & ~~~~ \big((\dom{\var{activeDelegs}}) - \restrictdom\left(\fun{aggregate_{+}}~\var{stakeRelation}\right), - ~\var{delegations},~\var{poolParams}\big)\\ - & \where \\ - & ~~~~ (~\var{rewards},~\var{delegations},~\var{ptrs},~\wcard,~\wcard,~\wcard) - = \var{dstate} \\ - & ~~~~ (~\var{poolParams},~\wcard,~\wcard) = \var{pstate} \\ - & ~~~~ \var{stakeRelation} = \left( - \left(\fun{stakeCred_b}^{-1}\cup\left(\fun{addrPtr}\circ\var{ptr}\right)^{-1}\right) - \circ\left(\range{\var{utxo}}\right) - \right) - \cup \var{rewards} \\ - & ~~~~ \var{activeDelegs} = - (\dom{rewards}) \restrictdom \var{delegations} \restrictrange (\dom{poolParams}) \\ - \end{align*} - - \caption{Stake Distribution Function} - \label{fig:functions:stake-distribution} -\end{figure} - -\clearpage - -\subsection{Snapshot Transition} -\label{sec:snapshots} - -The state transition types for stake distribution snapshots are given in -Figure~\ref{fig:ts-types:snapshot}. -Each snapshot consists of: -\begin{itemize} - \item $\var{stake}$, a stake distribution, which is defined in - Figure~\ref{fig:epoch-defs} as a mapping of credentials to coin. - \item $\var{delegations}$, a delegation map, mapping credentials to stake pools. - \item $\var{poolParameters}$, storing the pool parameters of each stake pool. -\end{itemize} - -The type $\type{\Snapshots}$ contains the -information needing to be saved on the epoch boundary: -\begin{itemize} - \item $\var{pstake_{mark}}$, $\var{pstake_{set}}$ and $\var{pstake_{go}}$ are the three - snapshots as explained in Section~\ref{sec:reward-overview}. - \item $\var{feeSS}$ stores the fees which are added to the reward pot during - the next reward update calculation, which is then subtracted from the fee pot - on the epoch boundary. -\end{itemize} - -%% -%% Figure - Snapshots Defs -%% -\begin{figure}[htb] - \emph{Snapshots} - \begin{equation*} - \Snapshot = - \left( - \begin{array}{r@{~\in~}ll} - \var{stake} & \Stake & \text{stake distribution}\\ - \var{delegations} & \Credential\mapsto\KeyHash_{pool} - & \text{stake delegations}\\ - \var{poolParameters} & \KeyHash_{pool} \mapsto \PoolParam & \text{pool parameters }\\ - \end{array} - \right) - \end{equation*} - - \begin{equation*} - \Snapshots = - \left( - \begin{array}{r@{~\in~}ll} - \var{pstake_{mark}} & \Snapshot & \text{newest stake}\\ - \var{pstake_{set}} & \Snapshot & \text{middle stake}\\ - \var{pstake_{go}} & \Snapshot & \text{oldest stake}\\ - \var{feeSS} & \Coin & \text{fee snapshot}\\ - \end{array} - \right) - \end{equation*} - % - \emph{Snapshot transitions} - \begin{equation*} - \_ \vdash - \var{\_} \trans{snap}{} \var{\_} - \subseteq \powerset (\LState \times \Snapshots \times \Snapshots) - \end{equation*} - % - \caption{Snapshot transition-system types} - \label{fig:ts-types:snapshot} -\end{figure} - -The snapshot transition rule is given in Figure~\ref{fig:rules:snapshot}. -This transition has no preconditions and results in the following state change: - -\begin{itemize} - \item The oldest snapshot is replaced with the penultimate one. - \item The penultimate snapshot is replaced with the newest one. - \item The newest snapshot is replaced with one just calculated. - \item The current fees pot is stored in $\var{feeSS}$. Note that this value will not - change during the epoch, unlike the $\var{fees}$ value in the UTxO state. -\end{itemize} - -%% -%% Figure - Snapshot Rule -%% -\begin{figure}[htb] - \begin{equation}\label{eq:snapshot} - \inference[Snapshot] - { - { - \begin{array}{r@{~\leteq~}l} - ((\var{utxo},~\wcard,\var{fees},~\wcard),~(\var{dstate},~\var{pstate})) & \var{lstate} \\ - \var{stake} & \stakeDistr{utxo}{dstate}{pstate} \\ - \end{array} - } - } - { - \begin{array}{r} - \var{lstate} \\ - \end{array} - \vdash - \left( - \begin{array}{r} - \var{pstake_{mark}}\\ - \var{pstake_{set}}\\ - \var{pstake_{go}}\\ - \var{feeSS} \\ - \end{array} - \right) - \trans{snap}{} - \left( - \begin{array}{r} - \varUpdate{\var{stake}} \\ - \varUpdate{\var{pstake_{mark}}} \\ - \varUpdate{\var{pstake_{set}}} \\ - \varUpdate{\var{fees}} \\ - \end{array} - \right) - } - \end{equation} - \caption{Snapshot Inference Rule} - \label{fig:rules:snapshot} -\end{figure} - -\clearpage - -\subsection{Pool Reaping Transition} -\label{sec:pool-reap} - -Figure~\ref{fig:ts-types:pool-reap} defines the types for the pool reap transition, -which is responsible for removing pools slated for retirement in the given epoch. - -%% -%% Figure - Pool Reap Defs -%% -\begin{figure}[htb] - \emph{Pool Reap State} - \begin{equation*} - \PlReapState = - \left( - \begin{array}{r@{~\in~}ll} - \var{utxoSt} & \UTxOState & \text{utxo state}\\ - \var{acnt} & \Acnt & \text{accounting}\\ - \var{dstate} & \DState & \text{delegation state}\\ - \var{pstate} & \PState & \text{pool state}\\ - \end{array} - \right) - \end{equation*} - % - \emph{Pool Reap transitions} - \begin{equation*} - \_ \vdash \_ \trans{poolreap}{\_} \_ \in - \powerset (\PParams \times \PlReapState \times \Epoch \times \PlReapState) - \end{equation*} - % - \caption{Pool Reap Transition} - \label{fig:ts-types:pool-reap} -\end{figure} - - -The pool-reap transition rule is given in Figure~\ref{fig:rules:pool-reap}. -This transition has no preconditions and results in the following state change: - -\begin{itemize} - \item For each retiring pool, the refund for the pool registration deposit is added to the - pool's registered reward account, provided the reward account is still registered. - \item The sum of all the refunds attached to unregistered reward accounts are added to the - treasury. - \item The deposit pool is reduced by the amount of claimed and unclaimed refunds. - \item Any delegation to a retiring pool is removed. - \item Each retiring pool is removed from all four maps in the pool state. -\end{itemize} - -%% -%% Figure - Pool Reap Rule -%% -\begin{figure}[htb] - \begin{equation}\label{eq:pool-reap} - \inference[Pool-Reap] - { - { - \begin{array}{r@{~\leteq~}l} - \var{retired} & \dom{(\var{retiring}^{-1}~\var{e})} \\ - \var{pr} & \left\{ - \var{hk}\mapsto(\fun{poolDeposit}~\var{pp}) - \mid - \var{hk}\in\var{retired} - \right\}\\ - \var{rewardAcnts} - & \{\var{hk}\mapsto \fun{poolRAcnt}~\var{pool} \mid - \var{hk}\mapsto\var{pool} \in \var{retired}\restrictdom\var{poolParams} \} \\ - \var{rewardAcnts'} & \left\{ - a \mapsto - \sum\var{pr}(\var{rewardAcnts}^{-1}(a)) - \mathrel{\Big|} - a\in\range{rewardAcnts} - \right\} \\ - \var{refunds} & \dom{rewards}\restrictdom\var{rewardAcnts'} \\ - \var{mRefunds} & \dom{rewards}\subtractdom\var{rewardAcnts'} \\ - \var{refunded} & \sum\limits_{\wcard\mapsto c\in\var{refunds}} c \\ - \var{unclaimed} & \sum\limits_{\wcard\mapsto c\in\var{mRefunds}} c \\ - \end{array} - } - } - { - \var{pp} - \vdash - \left( - \begin{array}{r} - \var{utxo} \\ - \var{deposited} \\ - \var{fees} \\ - \var{ppup} \\ - ~ \\ - \var{treasury} \\ - \var{reserves} \\ - ~ \\ - \var{rewards} \\ - \var{delegations} \\ - \var{ptrs} \\ - \var{genDelegs} \\ - \var{fGenDelegs} \\ - \var{i_{rwd}} \\ - ~ \\ - \var{poolParams} \\ - \var{fPoolParams} \\ - \var{retiring} \\ - \end{array} - \right) - \trans{poolreap}{e} - \left( - \begin{array}{rcl} - \var{utxo} \\ - \varUpdate{\var{deposited}} - & \varUpdate{-} - & \varUpdate{(\var{unclaimed} + \var{refunded})} \\ - \var{fees} \\ - \var{ppup} \\ - ~ \\ - \varUpdate{\var{treasury}} & \varUpdate{+} & \varUpdate{\var{unclaimed}} \\ - \var{reserves} \\ - ~ \\ - \varUpdate{\var{rewards}} & \varUpdate{\unionoverridePlus} & \varUpdate{\var{refunds}} \\ - \varUpdate{\var{delegations}} & \varUpdate{\subtractrange} & \varUpdate{\var{retired}} \\ - \var{ptrs} \\ - \var{genDelegs} \\ - \var{fGenDelegs} \\ - \var{i_{rwd}}\\ - ~ \\ - \varUpdate{\var{retired}} & \varUpdate{\subtractdom} & \varUpdate{\var{poolParams}} \\ - \varUpdate{\var{retired}} & \varUpdate{\subtractdom} & \varUpdate{\var{fPoolParams}} \\ - \varUpdate{\var{retired}} & \varUpdate{\subtractdom} & \varUpdate{\var{retiring}} \\ - \end{array} - \right) - } - \end{equation} - \caption{Pool Reap Inference Rule} - \label{fig:rules:pool-reap} -\end{figure} - -\clearpage - -\subsection{Protocol Parameters Update Transition} -\label{sec:pparam-update} - -Finally, reaching the epoch boundary may trigger a change in the protocol parameters. -The protocol parameters environment consists of the delegation and pool states, -and the signal is an optional new collection of protocol parameters -The state change is a change of the $\UTxOState$, the $\Acnt$ states and the current $\PParams$. -The type of this state transition is given in Figure~\ref{fig:ts-types:new-proto-param}. - -%% -%% Figure - New Proto Param Defs -%% -\begin{figure}[htb] - \emph{New Proto Param environment} - \begin{equation*} - \NewPParamEnv = - \left( - \begin{array}{r@{~\in~}ll} - \var{dstate} & \DState & \text{delegation state}\\ - \var{pstate} & \PState & \text{pool state}\\ - \end{array} - \right) - \end{equation*} - % - \emph{New Proto Param States} - \begin{equation*} - \NewPParamState = - \left( - \begin{array}{r@{~\in~}ll} - \var{utxoSt} & \UTxOState & \text{utxo state}\\ - \var{acnt} & \Acnt & \text{accounting}\\ - \var{pp} & \PParams & \text{current protocol parameters}\\ - \end{array} - \right) - \end{equation*} - % - \emph{New Proto Param transitions} - \begin{equation*} - \_ \vdash - \var{\_} \trans{newpp}{\_} \var{\_} - \subseteq \powerset (\NewPParamEnv \times \NewPParamState \times \PParams^? \times \NewPParamState) - \end{equation*} - % - \caption{New Proto Param transition-system types} - \label{fig:ts-types:new-proto-param} - % - \emph{Helper Functions} - \begin{align*} - & \fun{updatePpup} \in \UTxOState \to \PParams \to \UTxOState\\ - & \fun{updatePpup}~\var{utxoSt}~\var{pp} = - \begin{cases} - (\var{utxo},\var{deposited},\var{fees},(\var{fpup},~\emptyset)) - & - \var{canFollow} - \\ - (\var{utxo},\var{deposited},\var{fees},(\emptyset,~\emptyset)) - & - \text{otherwise} \\ - \end{cases}\\ - & ~~~\where \\ - & ~~~~~~~\var{canFollow} = - \forall\var{ps}\in\range{pup},~ - \var{pv}\mapsto\var{v}\in\var{ps}\implies\fun{pvCanFollow}~(\fun{pv}~\var{pp})~\var{v} - \\ - & ~~~~~~~(\var{utxo},\var{deposited},\var{fees},(\var{pup},~\var{fpup})) = \var{utxoSt} \\ - \end{align*} -\end{figure} - - -Figure~\ref{fig:rules:new-proto-param} defines the new protocol parameter transition. -The transition has two rules, depending on whether or not the new protocol parameters -meet some requirements. -In particular, we require that the new parameters would not incur a debt of the system that -can not be covered by the reserves, and that the max block size is greater than the sum of the -max transaction size and the max header size. -If the requirements are met, the new protocol parameters are accepted, the proposal is reset, -and the reserves are adjusted to account for changes in the deposits. -Otherwise, the only change is that the proposal is reset. - -The $\mathsf{NEWPP}$ rule also cleans up the protocol parameter update proposals, -by calling $\fun{updatePpup}$ on the UTxO state. -The $\fun{updatePpup}$ sets the protocol parameter updates to the future protocol -parameter updates provided the protocol versions all can follow from the -version given in the protocol parameters, or the emptyset otherwise. -In any case, the future protocol parameters update proposals are set to the empty set. -If new protocol parameters are being adopted, then these is the value given to -$\fun{updatePpup}$, otherwise the old parameters are given. - -Regarding adjusting the reserves for changes in the deposits, one of three things happens: - -\begin{itemize} - \item If the new protocol parameters mean that \textbf{fewer} funds are required in the - deposit pot to cover all possible refunds, then the excess is moved to the reserves. - - \item If the new protocol parameters mean that \textbf{more} funds are required in the - deposit pot to cover all possible refunds and the difference is \textbf{less} than - the reserve pot, then funds are moved from the reserve pot to cover the difference. - - \item If the new protocol parameters mean that \textbf{more} funds are required in the - deposit pot to cover all possible refunds and the difference is \textbf{more} than - the reserve pot, then Rule~\ref{eq:new-pc-denied} meets the precondition and the - only change of state is that the update proposals are reset. -\end{itemize} - -Note that here, unlike most of the inference rules in this document, -the $\var{utxoSt'}$ and the $\var{acnt'}$ do not come from valid UTxO or -accounts transitions in the antecedent. We simply define the consequent -transition using these directly (instead of listing all the fields in both -states in the consequent transition). It is done this way here -for ease of reading. - -%% -%% Figure - New Proto Param Rule -%% -\begin{figure}[htb] - \begin{equation}\label{eq:new-pc-accepted} - \hspace{-0.3cm} - \inference[New-Proto-Param-Accept] - { - \var{pp_{new}}\neq\Nothing \\~\\ - {\begin{array}{rcl} - (\var{utxo},~\var{deposited},~\var{fees},~\var{ppup}) & \leteq & \var{utxoSt} \\ - \var{(\var{rewards},~\wcard,~\wcard,~\wcard,~\wcard,~\var{i_{rwd}})} & - \leteq & \var{dstate}\\ - \var{(\var{poolParams},~\wcard,~\wcard)} & \leteq & \var{pstate}\\ - \var{oblg_{cur}} & \leteq & \obligation{pp}{rewards}{poolParams} \\ - \var{oblg_{new}} & \leteq & \obligation{pp_{new}}{rewards}{poolParams} \\ - \var{diff} & \leteq & \var{oblg_{cur}} - \var{oblg_{new}}\\ - \end{array}} - \\~\\~\\ - \var{oblg_{cur}} = \var{deposited} \\ - \var{reserves} + \var{diff} \geq \sum\limits_{\wcard\mapsto\var{val}\in\var{i_{rwd}}} val \\ - \fun{maxTxSize}~\var{pp_{new}} + \fun{maxHeaderSize}~\var{pp_{new}} < - \fun{maxBlockSize}~\var{pp_{new}} - \\~\\ - \var{utxoSt'} \leteq - \left(\var{utxo},~\varUpdate{oblg_{new}},~\var{fees},~\var{ppup}\right) - \\ - \var{utxoSt''} \leteq \fun{updatePpup}~\var{utxoSt'}~\var{pp_{new}} - \\~\\ - (\var{treasury},~\var{reserves})\leteq \var{acnt} \\ - \var{acnt'} \leteq (\var{treasury},~\varUpdate{reserves + diff}) \\ - } - { - \begin{array}{l} - \var{dstate}\\ - \var{pstate}\\ - \end{array} - \vdash - \left( - \begin{array}{r} - \var{utxoSt} \\ - \var{acnt} \\ - \var{pp} - \end{array} - \right) - \trans{newpp}{\var{pp_{new}}} - \left( - \begin{array}{rcl} - \varUpdate{utxoSt''}\\ - \varUpdate{acnt'} \\ - \varUpdate{\var{pp_{new}}} \\ - \end{array} - \right) - } - \end{equation} - - \nextdef - - \begin{equation}\label{eq:new-pc-denied} - \inference[New-Proto-Param-Denied] - { - \left({\begin{array}{c} - \var{pp_{new}}=\Nothing \\ - \lor \\ - \var{reserves} + \var{diff} < \sum\limits_{\wcard\mapsto\var{val}\in\var{i_{rwd}}} val\\ - \lor \\ - \fun{maxTxSize}~\var{pp_{new}} + \fun{maxHeaderSize}~\var{pp_{new}} \geq - \fun{maxBlockSize}~\var{pp_{new}} - \end{array}}\right) - \\~\\~\\ - {\begin{array}{rcl} - \var{(\var{rewards},~\wcard,~\wcard,~\wcard,~\wcard,~\var{i_{rwd}})} & - \leteq & \var{dstate}\\ - \var{(\var{poolParams},~\wcard,~\wcard)} & \leteq & \var{pstate}\\ - \var{oblg_{cur}} & \leteq & \obligation{pp}{rewards}{poolParams} \\ - \var{oblg_{new}} & \leteq & \obligation{pp_{new}}{rewards}{poolParams} \\ - \var{diff} & \leteq & \var{oblg_{cur}} - \var{oblg_{new}} - \end{array}} - \\~\\~\\ - \var{utxoSt'} \leteq \fun{updatePpup}~\var{utxoSt}~\var{pp} \\ - } - { - \begin{array}{l} - \var{dstate}\\ - \var{pstate}\\ - \end{array} - \vdash - \left( - \begin{array}{r} - \var{utxoSt} \\ - \var{acnt} \\ - \var{pp} - \end{array} - \right) - \trans{newpp}{\var{pp_{new}}} - \left( - \begin{array}{rcl} - \varUpdate{utxoSt'}\\ - \var{acnt} \\ - \var{pp} - \end{array} - \right) - } - \end{equation} - \caption{New Proto Param Inference Rule} - \label{fig:rules:new-proto-param} -\end{figure} - -\clearpage - -\subsection{Complete Epoch Boundary Transition} -\label{sec:total-epoch} - -Finally, it is possible to define the complete epoch boundary transition type, -which is defined in Figure~\ref{fig:ts-types:epoch}. -The transition has no evironment. -The state is made up of the the accounting state, the snapshots, the ledger state and the -protocol parameters. -The transition uses a helper function $\fun{votedValue}$ which returns -the consensus value of update proposals in the event that consensus is met. -\textbf{Note that} $\fun{votedValue}$ -\textbf{is only well-defined if } $\var{quorum}$ -\textbf{is greater than half the number of core nodes, i.e.} -$\Quorum > |\var{genDelegs}|/2$ \textbf{.} - -%% -%% Figure - Epoch Defs -%% -\begin{figure}[htb] - \emph{Epoch States} - \begin{equation*} - \EpochState = - \left( - \begin{array}{r@{~\in~}ll} - \var{acnt} & \Acnt & \text{accounting}\\ - \var{ss} & \Snapshots & \text{snapshots}\\ - \var{ls} & \LState & \text{ledger state}\\ - \var{prevPp} & \PParams & \text{previous protocol parameters}\\ - \var{pp} & \PParams & \text{protocol parameters}\\ - \end{array} - \right) - \end{equation*} - % - \emph{Epoch transitions} - \begin{equation*} - \vdash - \var{\_} \trans{epoch}{\_} \var{\_} - \subseteq \powerset (\EpochState \times \Epoch \times \EpochState) - \end{equation*} - % - \emph{Accessor Functions} - \begin{equation*} - \begin{array}{r@{~\in~}lr} - \fun{getIR} & \EpochState \to (\StakeCredential \mapsto \Coin) - & \text{get instantaneous rewards} \\ - \end{array} - \end{equation*} - % - \emph{Helper Functions} - \begin{align*} - & \fun{votedValue} \in (\KeyHashGen\mapsto\PParamsUpdate) \to \PParams \to \N \to \PParamsUpdate^?\\ - & \fun{votedValue}~\var{pup}~\var{pp}~\var{quorum} = - \begin{cases} - \var{pp}\unionoverrideRight\var{p} - & \exists! p\in\range{pup}~(|pup\restrictrange p|\geq \var{quorum}) \\ - \Nothing & \text{otherwise} \\ - \end{cases} - \end{align*} - % - \caption{Epoch transition-system types} - \label{fig:ts-types:epoch} -\end{figure} - - -The epoch transition rule calls $\mathsf{SNAP}$, $\mathsf{POOLREAP}$ and $\mathsf{NEWPP}$ -in sequence. It also stores the previous protocol parameters in $\var{prevPp}$. -The previous protocol parameters will be used for the reward calculation in the upcoming epoch, -note that they correspond to the epoch for which the rewards are being calculated. -Additionally, this transition also adopts the pool parameters $\var{fPoolParams}$ -corresponding to the pool re-registration certificates which we submitted late in the ending epoch. -The ordering of these rules is important. -The stake pools which will be updated by $\var{fPoolParams}$ or -reaped during the $\mathsf{POOLREAP}$ transition must still be a -part of the new snapshot, and so $\mathsf{SNAP}$ must occur before these two actions. -Moreover, $\mathsf{SNAP}$ sets the deposit pot equal to current obligation, -which is a property that is preserved by $\mathsf{POOLREAP}$ and which -is necessary for the preservation of Ada property in the $ \mathsf{NEWPP}$ transition. - -%% -%% Figure - Epoch Rule -%% -\begin{figure}[htb] - \begin{equation}\label{eq:epoch} - \inference[Epoch] - { - { - \begin{array}{r} - \var{lstate} \\ - \end{array} - } - \vdash - { \var{ss} } - \trans{\hyperref[fig:rules:snapshot]{snap}}{} - { \var{ss'} } - \\~\\ - (\var{utxoSt},~(\var{dstate},~\var{pstate}))\leteq\var{ls} \\ - (\var{poolParams},~\var{fPoolParams},~\var{retiring})\leteq\var{pstate} - \\ - \var{pstate'}\leteq(\var{poolParams}\unionoverrideRight\var{fPoolParams}, - ~\emptyset,~\var{retiring}) - \\~\\~\\ - \var{pp} - \vdash - \left( - { - \begin{array}{r} - \var{utxoSt} \\ - \var{acnt} \\ - \var{dstate} \\ - \var{pstate'} \\ - \end{array} - } - \right) - \trans{\hyperref[fig:rules:pool-reap]{poolreap}}{e} - \left( - { - \begin{array}{rcl} - \var{utxoSt'} \\ - \var{acnt'} \\ - \var{dstate'} \\ - \var{pstate''} \\ - \end{array} - } - \right) - \\~\\~\\ - \var{(\wcard,~\wcard,~\wcard,~(\var{pup},\wcard))}\leteq\var{utxoSt'}\\ - \var{pp_{new}}\leteq\fun{votedValue}~\var{pup}~\var{pp}~\Quorum\\ - { - \begin{array}{r} - \var{dstate'}\\ - \var{pstate''}\\ - \end{array} - } - \vdash - \left( - { - \begin{array}{r} - \var{utxoSt'} \\ - \var{acnt'} \\ - \var{pp}\\ - \end{array} - } - \right) - \trans{\hyperref[fig:rules:new-proto-param]{newpp}}{\var{pp_{new}}} - \left( - { - \begin{array}{rcl} - \var{utxoSt''} \\ - \var{acnt''} \\ - \var{pp'}\\ - \end{array} - } - \right) - \\~\\~\\ - \var{ls}' \leteq (\var{utxoSt}'',~(\var{dstate}',~\var{pstate}'')) - } - { - \vdash - \left( - \begin{array}{r} - \var{acnt} \\ - \var{ss} \\ - \var{ls} \\ - \var{prevPp} \\ - \var{pp} \\ - \end{array} - \right) - \trans{epoch}{e} - \left( - \begin{array}{rcl} - \varUpdate{\var{acnt''}} \\ - \varUpdate{\var{ss'}} \\ - \varUpdate{\var{ls'}} \\ - \varUpdate{\var{pp}} \\ - \varUpdate{\var{pp'}} \\ - \end{array} - \right) - } - \end{equation} - \caption{Epoch Inference Rule} - \label{fig:rules:epoch} -\end{figure} - -\clearpage - -\subsection{Rewards Distribution Calculation} -\label{sec:reward-dist} - -This section defines the reward calculation for the proof of stake leader election. -Figure~\ref{fig:functions:rewards} defines the pool reward as described in section -5.5.2 of~\cite{delegation_design}. - -\begin{itemize} - \item The function $\fun{maxPool}$ gives the maximum reward a stake pool can receive in an epoch. - This is a fraction of the total available rewards for the epoch. - The result depends on the pool's relative stake, the pool's pledge and the following - protocol parameters: - \begin{itemize} - \item $\var{a_0}$, the leader-stake influence - \item $n_{opt}$, the optimal number of saturated stake pools - \end{itemize} - \item The function $\fun{mkApparentPerformance}$ computes the apparent performance of a stake pool. - It depends on the protocol parameter $d$, the relative stake $\sigma$, the number $n$ of blocks - the pool added to the chain and the total number $\overline{N}$ of blocks added to the chain in - the last epoch. - -\end{itemize} - -%% -%% Figure - Functions for the Reward Calculation -%% -\begin{figure}[htb] - \emph{Maximal Reward Function, called $f(s,\sigma)$ in section 5.5.2 of~\cite{delegation_design}} - % - \begin{align*} - & \fun{maxPool} \in \PParams \to \Coin \to \unitInterval \to \unitInterval \to \Coin \\ - & \fun{maxPool}~\var{pp}~\var{R}~\sigma~\var{p_r} = - ~~~\floor*{ - \frac{R}{1 + a_0} - \cdot - \left( - \sigma' + p'\cdot a_0\cdot\frac{\sigma' - p'\frac{z_0-\sigma'}{z_0}}{z_0} - \right)} \\ - & ~~~\where \\ - & ~~~~~~~a_0 = \fun{influence}~pp \\ - & ~~~~~~~n_{opt} = \fun{nopt}~pp \\ - & ~~~~~~~z_0 = 1/n_{opt} \\ - & ~~~~~~~\sigma'=\min(\sigma,~z_0) \\ - & ~~~~~~~p'=\min(p_r,~z_0) \\ - \end{align*} - - \emph{Apparent Performance, called $\hat{p}$ in section 5.5.2 of~\cite{delegation_design}} - % - \begin{align*} - & \fun{mkApparentPerformance} \in \unitInterval \to \unitInterval \to \N \to \N \to \Q \\ - & \mkApparentPerformance{d}{\sigma}{n}{\overline{N}} = - \begin{cases} - \frac{\beta}{\sigma} & \text{if } d < 0.8 \\ - 1 & \text{otherwise} - \end{cases} \\ - & ~~~\where \\ - & ~~~~~~~\beta = \frac{n}{\max(1, \overline{N})} \\ - \end{align*} - \caption{Functions used in the Reward Calculation} - \label{fig:functions:rewards} -\end{figure} - -\clearpage - -Figure~\ref{fig:functions:reward-splitting} gives the calculation for -splitting the pool rewards with its members, as described in 6.5.2 of \cite{delegation_design}. -The portion of rewards allocated to the pool operator and owners is different -than that of the members. - -\begin{itemize} - \item The $\fun{r_{operator}}$ function calculates the leader reward, based on the pool cost, - margin and the proportion of the pool's total stake. Note that this reward will go to the - reward account specified in the pool registration certificate. - \item The $\fun{r_{member}}$ function calculates the member reward, proportionally to their - stake after the cost and margin are removed. -\end{itemize} - -%% -%% Figure - Functions for the Reward Splitting -%% -\begin{figure}[htb] - \emph{Pool leader reward, from section 5.5.3 of \cite{delegation_design}} - % - \begin{align*} - & \fun{r_{operator}} \in \Coin \to \PoolParam \to \unitInterval \to \unitIntervalNonNull \to \Coin \\ - & \lReward{\hat{f}}{pool}{s}{\sigma} = - \begin{cases} - \hat{f} & \hat{f} \leq c\\ - c + \floor*{(\hat{f} - c)\cdot\left(m + (1-m)\cdot\frac{s}{\sigma}\right) }& - \text{otherwise.} - \end{cases} \\ - & ~~~\where \\ - & ~~~~~~~c = \fun{poolCost}~pool \\ - & ~~~~~~~m = \fun{poolMargin}~pool \\ - \end{align*} - - \emph{Pool member reward, from section 5.5.3 of \cite{delegation_design}} - % - \begin{align*} - & \fun{r_{member}} \in \Coin \to \PoolParam \to \unitInterval \to \unitIntervalNonNull \to \Coin \\ - & \mReward{\hat{f}}{pool}{t}{\sigma} = - \begin{cases} - 0 & \hat{f} \leq c\\ - \floor*{(\hat{f} - c)\cdot(1-m)\cdot\frac{t}{\sigma}} & - \text{otherwise.} - \end{cases} \\ - & ~~~\where \\ - & ~~~~~~~c = \fun{poolCost}~pool \\ - & ~~~~~~~m = \fun{poolMargin}~pool \\ - \end{align*} - - \caption{Functions used in the Reward Splitting} - \label{fig:functions:reward-splitting} -\end{figure} - - -Finally, the full reward calculation is presented in Figure~\ref{fig:functions:reward-calc}. -The calculation is done pool-by-pool. -\begin{itemize} -\item The $\fun{rewardOnePool}$ function calculates the rewards given out to - each member of a given pool. The pool leader is identified by the stake - credential of the pool operator. The function returns the rewards, calculated - as follows: - \begin{itemize} - \item $\var{pstake}$, the total amount of stake controlled by the stake pool. - \item $\var{ostake}$, the total amount of stake controlled by the stake pool operator - and owners - \item $\sigma$, the total proportion of stake controlled by the stake pool. - \item $\overline{N}$, the expected number of blocks the pool should have produced. - \item $\var{pledge}$, the pool's pledge in lovelace. - \item $p_r$, the pool's pledge, as a proportion of active stake. - \item $\var{maxP}$, maximum rewards the pool can claim if the pledge is met, - and zero otherwise. - \item $\var{poolR}$, the pool's actual reward, based on its performance. - \item $\var{mRewards}$, the member's rewards as a mapping of reward accounts to coin. - \item $\var{lReward}$, the leader's reward as coin. - \item $\var{potentialRewards}$, the combination of $\var{mRewards}$ and $\var{lRewards}$. - \item $\var{rewards}$, the restriction of $\var{potentialRewards}$ to the active - reward accounts. - \end{itemize} - \item The $\fun{reward}$ function applies $\fun{rewardOnePool}$ to each registered stake pool. -\end{itemize} - -%% -%% Figure - The Reward Calculation -%% -\begin{figure}[htb] - \emph{Calculation to reward a single stake pool} - % - \begin{align*} - & \fun{rewardOnePool} \in \PParams \to \Coin \to \N \to \N \to \PoolParam\\ - & ~~~\to \Stake \to \Q \to \Q \to \Coin \to \powerset{\AddrRWD} - \to (\AddrRWD \mapsto \Coin) \\ - & \fun{rewardOnePool}~\var{pp}~\var{R}~\var{n}~\var{\overline{N}}~\var{pool}~\var{stake}~{\sigma}~{\sigma_a}~\var{tot}~\var{addrs_{rew}} = - \var{rewards}\\ - & ~~~\where \\ - & ~~~~~~~\var{ostake} = \sum_{\substack{ - hk_\mapsto c\in\var{stake}\\ - hk\in(\fun{poolOwners}~\var{pool})\\ - }} c \\ - & ~~~~~~~\var{pledge} = \fun{poolPledge}~pool \\ - & ~~~~~~~p_{r} = \var{pledge} / \var{tot} \\ - & ~~~~~~~maxP = - \begin{cases} - \fun{maxPool}~\var{pp}~\var{R}~\sigma~\var{p_r}& - \var{pledge} \leq \var{ostake}\\ - 0 & \text{otherwise.} - \end{cases} \\ - & ~~~~~~~\var{appPerf} = \mkApparentPerformance{(\fun{d}~pp)}{\sigma_a}{n}{\overline{N}} \\ - & ~~~~~~~\var{poolR} = \floor{\var{appPerf}\cdot\var{maxP}} \\ - & ~~~~~~~\var{mRewards} = \\ - & ~~~~~~~~~~\left\{ - \addrRw~hk\mapsto\mReward{poolR}{pool}{\frac{c}{tot}}{\sigma} - ~\Big\vert~ - hk\mapsto c\in\var{stake},~~hk \not\in(\fun{poolOwners}~\var{pool}) - \right\}\\ - & ~~~~~~~\var{lReward} = \lReward{poolR}{pool}{\frac{\var{ostake}}{tot}}{\sigma} \\ - & ~~~~~~~\var{potentialRewards} = - \var{mRewards} \cup - \{(\fun{poolRAcnt}~\var{pool})\mapsto\var{lReward}\} \\ - & ~~~~~~~\var{rewards} = \var{addrs_{rew}}\restrictdom{\var{potentialRewards}} \\ - \end{align*} - - \emph{Calculation to reward all stake pools} - % - \begin{align*} - & \fun{reward} \in \PParams \to \BlocksMade \to \Coin\to \powerset{\AddrRWD} - \to (\KeyHash \mapsto \PoolParam) \\ - & ~~~\to \Stake \to (\KeyHash_{stake} \mapsto \KeyHash_{pool}) \to - \Coin \to (\AddrRWD \mapsto \Coin)\\ - & \reward{pp}{blocks}{R}{addrs_{rew}}{poolParams}{stake}{delegs}{total} - = \var{rewards}\\ - & ~~~\where \\ - & ~~~~~~~\var{total}_a = \sum_{\_\mapsto c\in \var{stake}}c \\ - & ~~~~~~~\var{\overline{N}} = \sum_{\_\mapsto m\in blocks}m \\ - & ~~~~~~~pdata = \left\{ - hk\mapsto \left(p,~n,~\poolStake{hk}{delegs}{stake}\right) - \mathrel{\Bigg|} - \begin{array}{r@{\mapsto}c@{~\in~}l} - hk & \var{p} & \var{poolParams} \\ - hk & \var{n} & \var{blocks} \\ - \end{array} - \right\} \\ - & ~~~~~~~\var{results} = \\ - & ~~~~~~~\left\{ - hk \mapsto \fun{rewardOnePool}~ - \var{pp}~ - \var{R}~ - \var{n}~ - \var{\overline{N}}~ - \var{p}~ - \var{s}~ - \frac{\sum s}{total}~ - \frac{\sum s}{\var{total}_a}~ - \var{total}~ - \var{addrs_{rew}} - \mid - hk\mapsto(p, n, s)\in\var{pdata} \right\} \\ - & ~~~~~~~\var{rewards} = \bigcup_{\wcard\mapsto\var{r}\in\var{results}}\var{r} - \end{align*} - \caption{The Reward Calculation} - \label{fig:functions:reward-calc} -\end{figure} - -\clearpage - -\subsection{Reward Update Calculation} -\label{sec:reward-calc} - -This section defines the calculation of a reward update. -A reward update is the information needed to account for the movement of lovelace -in the system due to paying out rewards. - -Figure~\ref{fig:fund-preservation} captures the potential movement of funds in the entire system, -taking every transition system in this document into account. Value is moved between -accounting pots, but the total amount of value in the system remains constant. -In particular, the red subgraph represents the inputs and outputs to -the ``reward pot'', a temporary variable used during the reward update calculation in -Figure~\ref{fig:functions:reward-update-creation}. -The blue arrows represent the movement of funds that pass through the ``reward pot''. - - -\begin{figure}[htb] - \begin{center} - \begin{tikzpicture} - [ x=30mm, y=30mm - , direct/.style={black, draw} - , implied/.style={blue, draw} - , toTotPot/.style={red, draw} - ] - \node (C) at (3,2.5) {\LARGE Circulation}; - \node (R) at (5, 1) {\LARGE Reserves}; - \node (D) at (1, 2) {\LARGE Deposits}; - \node (FR) at (1,1) {\LARGE Fees}; - \node (RA) at (5, 2) {\LARGE Reward accounts}; - \node (T) at (3,0.5) {\LARGE Treasury}; - - \draw[->, direct, ultra thick] - (C) edge (D) - (C) edge (FR) - - (D) edge (C) - - (RA) edge (C); - - \draw[->, implied, ultra thick] - (FR) edge (T) - (FR) edge (RA) - - (R) edge (T) - (R) edge (RA); - - \node (TP) at (3, 1.15) {\LARGE Reward pot}; - - \draw[->, toTotPot, ultra thick] - (FR) edge (TP) - (R) edge (TP) - - (TP) edge (RA) - (TP) edge (T); - \end{tikzpicture} - \end{center} - \caption{Preservation of Value} - \label{fig:fund-preservation} -\end{figure} - -Figure~\ref{fig:defs:reward-update} defines a reward update. -It consists of four pots: -\begin{itemize} - \item The change to the treasury. This will be a positive value. - \item The change to the reserves. This will be a negative value. - \item The map of new individual rewards (to be added to the existing rewards). - \item The change to the fee pot. This will be a negative value. - rewards. -\end{itemize} - -%% -%% Figure - Reward Update Defs -%% -\begin{figure}[htb] - \emph{Reward Update} - \begin{equation*} - \RewardUpdate = - \left( - \begin{array}{r@{~\in~}ll} - \Delta t & \Coin & \text{change to the treasury} \\ - \Delta r & \Coin & \text{change to the reserves} \\ - \var{rs} & \AddrRWD\mapsto\Coin & \text{new individual rewards} \\ - \Delta f & \Coin & \text{change to the fee pot} \\ - \end{array} - \right) - \end{equation*} - % - \caption{Rewards Update type} - \label{fig:defs:reward-update} -\end{figure} - -\clearpage - -Figure~\ref{fig:functions:reward-update-creation} defines two functions, -$\fun{createRUpd}$ to create a reward update and $\fun{applyRUpd}$ to apply a -reward update to an instance of $\EpochState$. - -The $\fun{createRUpd}$ function does the following: -\begin{itemize} - \item Note that for all the calculations below, we use the previous protocol parameters - $\var{prevPp}$, which corresponds to the parameters during the epoch for which we - are creating rewards. - \item First we calculate the change to the reserves, - as determined by the $\rho$ protocol parameter. - \item Next we calculate $\var{rewardPot}$, the total amount of coin available for rewards this - epoch, as described in section 6.4 of \cite{delegation_design}. It consists of: - \begin{itemize} - \item The fee pot, containing the transaction fees from the epoch. - \item The amount of monetary expansion from the reserves, calculated above. - \end{itemize} - Note that the fee pot is taken from the snapshot taken at the epoch boundary. - (See~Figure\ref{fig:rules:snapshot}). - \item Next we calculate the proportion of the reward pot that will move to the treasury, - as determined by the $\tau$ protocol parameter. The remaining pot is called the - $\var{R}$, just as in section 6.5 of \cite{delegation_design}. - \item The rewards are calculated, using the oldest stake distribution snapshot (the one - labeled ``go''). - As given by $\fun{maxPool}$, each pool can receive a maximal amount, determined by its - performance. The difference between the maximal amount and the actual amount received is - added to the amount moved to the reserves. - \item The fee pot will be reduced by $\var{feeSS}$. -\end{itemize} - -Note that fees are not explicitly removed from any account: -the fees come from transactions paying them and are accounted for whenever -transactions are processed. - -The $\fun{applyRUpd}$ function does the following: - \begin{itemize} - \item Adjust the treasury, reserves and fee pots by the appropriate amounts. - \item Add each individual reward to the global reward mapping. - We must be careful, though, not to give out rewards to accounts - that have been deregistered after the reward update was created. - \begin{itemize} - \item Rewards for accounts that are still registered are added to the reward mappings. - \item The sum of the unregistered rewards are added to the reserves. - % TODO - We may want to add these to the treasury instead, to be consistent with our other choices. - \end{itemize} - \end{itemize} - -These two functions will be used in the blockchain transition systems in Section~\ref{sec:chain}. -In particular, -$\fun{createRUpd}$ will be used in Equation~\ref{eq:reward-update}, -and $\fun{applyRUpd}$ will be used in Equation~\ref{eq:new-epoch}. - -%% -%% Figure - The Reward Update Creation -%% -\begin{figure}[htb] - \emph{Calculation to create a reward update} - % - \begin{align*} - & \fun{createRUpd} \in \N \to \BlocksMade \to \EpochState \to \Coin \to \RewardUpdate \\ - & \createRUpd{slotsPerEpoch}{b}{es}{total} = \left( - \Delta t_1,-~\Delta r_1+\Delta r_2,~\var{rs},~-\var{feeSS}\right) \\ - & ~~~\where \\ - & ~~~~~~~(\var{acnt},~\var{ss},~\var{ls},~\var{prevPp},~\wcard) = \var{es} \\ - & ~~~~~~~(\wcard,~\wcard,~\var{pstake_{go}},~\var{feeSS}) = \var{ss}\\ - & ~~~~~~~(\var{stake},~\var{delegs},~\var{poolParams}) = \var{pstate_{go}} \\ - & ~~~~~~~(\wcard,~\var{reserves}) = \var{acnt} \\ - & ~~~~~~~\left( - \wcard,~ - \left( - \left(\var{rewards},~\wcard,~\wcard,~\wcard,~\wcard,~\wcard\right),~ - \wcard - \right) - \right) = \var{ls} \\ - & ~~~~~~~\Delta r_1 = \floor*{\min(1,\eta) \cdot (\fun{rho}~\var{prevPp}) \cdot - \var{reserves}} - \\ - & ~~~~~~~\eta = - \begin{cases} - 1 & (\fun{d}~\var{prevPp})\geq 0.8 \\ - \frac{blocksMade}{\floor{(1-\fun{d}~\var{prevPp})\cdot\var{slotsPerEpoch} \cdot \ActiveSlotCoeff}} - & \text{otherwise} \\ - \end{cases} \\ - & ~~~~~~~\var{rewardPot} = \var{feeSS} + \Delta r_1 \\ - & ~~~~~~~\Delta t_1 = \floor*{(\fun{tau}~\var{prevPp}) \cdot \var{rewardPot}} \\ - & ~~~~~~~\var{R} = \var{rewardPot} - \Delta t_1 \\ - & ~~~~~~~\var{circulation} = \var{total} - \var{reserves} \\ - & ~~~~~~~\var{rs} - = \reward{prevPp}{b}{R}{(\dom{rewards})}{poolParams}{stake}{delegs}{circulation} \\ - & ~~~~~~~\Delta r_{2} = R - \left(\sum\limits_{\_\mapsto c\in\var{rs}}c\right) \\ - & ~~~~~~~blocksMade = \sum_{\wcard \mapsto m \in b}m - \end{align*} - - \caption{Reward Update Creation} - \label{fig:functions:reward-update-creation} -\end{figure} - -\begin{figure}[htb] - \emph{Applying a reward update} - % - \begin{align*} - & \fun{applyRUpd} \in \RewardUpdate \to \EpochState \to \EpochState \\ - & \fun{applyRUpd}~ - \left( - \begin{array}{c} - \Delta t \\ - \Delta r \\ - \var{rs} \\ - \Delta f \\ - \end{array} - \right) - \left( - \begin{array}{c} - \var{treasury} \\ - \var{reserves} \\ - ~ \\ - \var{rewards} \\ - \var{delegations} \\ - \var{ptrs} \\ - \var{genDelegs} \\ - \var{fGenDelegs} \\ - \var{i_{rwd}} - \\~ \\ - \var{poolParams} \\ - \var{fPoolParams} \\ - \var{retiring} \\ - ~ \\ - \var{utxo} \\ - \var{deposited} \\ - \var{fees} \\ - \var{up} \\ - ~ \\ - \var{prevPp} \\ - \var{pp} \\ - \end{array} - \right) - = - \left( - \begin{array}{c} - \varUpdate{\var{treasury} + \Delta t + \var{unregRU'}}\\ - \varUpdate{\var{reserves} + \Delta r}\\ - ~ \\ - \varUpdate{\var{rewards}\unionoverridePlus\var{regRU}} \\ - \var{delegations} \\ - \var{ptrs} \\ - \var{genDelegs} \\ - \var{fGenDelegs} \\ - \var{i_{rwd}} - \\~ \\ - \var{poolParams} \\ - \var{fPoolParams} \\ - \var{retiring} \\ - ~ \\ - \var{utxo} \\ - \var{deposited} \\ - \varUpdate{\var{fees}+\Delta f} \\ - \var{up} \\ - ~ \\ - \var{prevPp} \\ - \var{pp} \\ - \end{array} - \right) \\ - & ~~~\where \\ - & ~~~~~~~\var{regRU}=(\dom{rewards})\restrictdom rs\\ - & ~~~~~~~\var{unregRU}=(\dom{rewards})\subtractdom rs\\ - & ~~~~~~~\var{unregRU'}=\sum\limits_{\wcard\mapsto c\in\var{unregRU}} \var{c}\\ - \end{align*} - - \caption{Reward Update Application} - \label{fig:functions:reward-update-application} -\end{figure} - -\clearpage diff --git a/eras/shelley/formal-spec/errata.tex b/eras/shelley/formal-spec/errata.tex deleted file mode 100644 index fba0e2c5995..00000000000 --- a/eras/shelley/formal-spec/errata.tex +++ /dev/null @@ -1,130 +0,0 @@ -\section{Errata} -\label{sec:errata} - -We list issues found within the Shelley ledger which will be corrected in future eras. - -\subsection{Total stake calculation} -\label{sec:errata:total-stake} - -As described in \cite[3.4.3]{delegation_design}, stake is sometimes considered -relative to all the delegated stake, and sometimes relative to the -totally supply less the amount held by the reserves. -The former is called active stake, the latter total stake. - - -The $\fun{createRUpd}$ function from Figure~\ref{fig:rules:reward-update} uses the -current value of the reserve pot, named $\var{reserves}$, to calculate the total stake. -It should, however, use the value of the reserve pot as it was during the previous -epoch, since $\fun{createRUpd}$ is creating the rewards earned during the previous epoch -(see the overview in Section~\ref{sec:reward-overview}). - -\subsection{Active stake registrations and the Reward Calculation} -\label{sec:errata:active-accounts-and-reward-calc} - -The reward calculation takes the set of active reward accounts as a parameter -(the forth parameter of $\fun{reward}$ in Figure~\ref{fig:functions:reward-calc}). -It is only used at the end of the calculation for filtering out unregistered accounts. -Therefore, if a stake credential is deregistered just before the reward calculation starts, -it cannot reregister before the end of the epoch in order to get the rewards. -The time within the epoch when the reward calculation starts should not make any difference. -Note that this does not affect the earnings that stake pools make from their margin, -since each pool's total stake is summed before filtering. -The solution is to not filter by the current active reward accounts, since rewards for -unregistered accounts go to the treasury already anyway. - -\subsection{Stability Windows} -\label{sec:errata:stability-windows} - -The constant \RandomnessStabilisationWindow\ was intended to be used only -for freezing the candidate nonce in the $\mathsf{UPDN}$ rule -from Figure~\ref{fig:rules:update-nonce}. -This was chosen as a good value for both Ouroboros Praos and Ouroboros Genesis. -The implementation mistakenly used the constant in the $\mathsf{RUPD}$ rule -from Figure~\ref{fig:rules:reward-update}, and used $\StabilityWindow$ -in for the $\mathsf{UPDN}$ transition. - -The constant $\StabilityWindow$ is a good choice for the $\mathsf{UPDN}$ -transition while we remain using Ouroboros Praos, but it has been changed to -\RandomnessStabilisationWindow\ in the consensus layer starting in Conway in -order to be prepared for Ouroboros Genesis. - -There is no problem with using \RandomnessStabilisationWindow\ for the -$\mathsf{RUPD}$ transition, since anything after $\StabilityWindow$ would work, -but there is no reason to do so. - -\subsection{Reward aggregation} -\label{sec:errata:reward-aggregation} - -On any given epoch, a reward account can earn rewards by being a member of a stake pool, -and also by being the registered reward account for a stake pool (to receive leader rewards). -A reward account can be registered to receive leader rewards from multiple stake pools. -It was intended that reward accounts receive the sum of all such rewards, -but a mistake caused reward accounts to receive at most one of them. - -In Figure~\ref{fig:functions:reward-calc}, the value of $\var{potentialRewards}$ in the -$\fun{rewardOnePool}$ function should be computed using an aggregating union -$\unionoverridePlus$, so that member rewards are not overridden by leader rewards. -Similarly, the value of $\var{rewards}$ in the $\fun{reward}$ function should be computed -using an aggregating union so that leader rewards from multiple sources are aggregated. - -This was corrected at the Allegra hard fork. -There were sixty-four stake addresses that were affected, -each of which was reimbursed for the exact amount lost using a MIR certificate. -Four of the stake address were unregistered and had to be re-registered. -The unregistered addresses were reimbursed in transaction -\newline -$a01b9fe136e5703668c9c7776a76cc8541b84824635d237e270670a8ca56a392$, -and the registered addresses were reimbursed in transaction -\newline -$8cab8049e3b8c4802d7d11277b21afc74056223a596c39ef00e002c2d1f507ad$. - -\subsection{Byron redeem addresses} -\label{sec:errata:byron-redeem-addresses} - -The bootstrap addresses from Figure~\ref{fig:defs:addresses} were not intended -to include the Byron era redeem addresses -(those with addrtype 2, see the Byron CDDL spec). -These addresses were, however, not spendable in the Shelley era. -At the Allegra hard fork they were removed from the UTxO -and the Ada contained in them was returned to the reserves. - -\subsection{Block hash used in the epoch nonce} -\label{sec:block-hash-in-epoch-nonce} - -In the $\mathsf{CHAIN}$ rule in Figure~\ref{fig:rules:chain}, the $\mathsf{TICKN}$ rule uses -the last block hash of the previous epoch to create the new epoch nonce. -In the implemenation, however, the \textit{penultimate} block hash of the previous epoch is used. - -\subsection{Deposit tracking} -\label{sec:deposit-tracking} - -In this specification, individual deposits (for stake credential and stake pool registrations) are not tracked by the ledger. -Deposits are returned according to the current protocol parameters. -When the values of these two protocol parameters change, the deposoit pot -is adjusted by adding to, or removing from, the reserves. - -This has several problems: -\begin{itemize} - \item Most people expect a deposit to be paid back exactly. - \item We cannot increase the deposit amount once the reserves hits zero. - \item If it becomes known that the deposit amount is going to be increased, free Lovelace can be earned by registering credentials. - \item Because of the problems above, it is going to be incredibly hard to ever change the values. - \item There is a serious issue involving hard forks. - The consensus layer makes the decision about whether or not to enact a hard fork based on - the protocol parameter update state two stability windows before the end of the epoch. - However, the ledger will reject a protocol parameter update on the epoch boundary - if the deposit pot adjustments cannot be reconciled with the reseve pot. - This means that if quorum is met regarding changing the major protocol version, - but the update is rejected on the epoch boundary, consensus will change the era but the - ledger will not change the major protocol version, leaving the ledger in a split-brain state. -\end{itemize} - -Because we never actually changed the values of the two deposits amounts in the protocol parameters -on mainnet, we were able to retroactively change the behavior. -We made the following changes: -\begin{itemize} - \item Individual deposits are tracked in the \DState. - \item The amount deposited is always returned. -\end{itemize} - -This was implemented \href{https://github.com/intersectmbo/cardano-ledger/pull/3127}{here}. diff --git a/eras/shelley/formal-spec/flake.nix b/eras/shelley/formal-spec/flake.nix deleted file mode 100644 index efbe7d4ccb4..00000000000 --- a/eras/shelley/formal-spec/flake.nix +++ /dev/null @@ -1,66 +0,0 @@ -{ - outputs = inputs: { - packages = - builtins.mapAttrs (_: {nixpkgs, ...}: { - default = with nixpkgs; - buildLatex { - name = "shelley-ledger-spec"; - texFiles = ["shelley-ledger"]; - meta = with lib; { - description = "Shelley Ledger Specification"; - license = licenses.asl20; - platforms = platforms.linux; - }; - src = filterLatex ./.; - - texInputs = { - inherit - (texlive) - scheme-small - # libraries - - stmaryrd - lm-math - amsmath - extarrows - cleveref - semantic - xcolor - xstring - paralist - cm-super - tocloft - # bclogo and dependencies - - bclogo - mdframed - xkeyval - etoolbox - needspace - # font libraries `mathpazo` seems to depend on palatino, but it isn't pulled. - - mathpazo - palatino - microtype - # libraries for marginal notes - - xargs - todonotes - # Tikz - - pgf - tikz-cd - # build tools - - latexmk - # Referencing - - zref - ; - }; - buildInputs = [gitMinimal]; - }; - }) - (inputs.main or (import ../../../nix/flake-compat.nix).defaultNix).legacyPackages; - }; -} diff --git a/eras/shelley/formal-spec/frontmatter.tex b/eras/shelley/formal-spec/frontmatter.tex deleted file mode 100644 index e00acbc2feb..00000000000 --- a/eras/shelley/formal-spec/frontmatter.tex +++ /dev/null @@ -1,96 +0,0 @@ -\hypersetup{ - pdftitle={A Formal Specification of the Cardano Ledger}, - breaklinks=true, - bookmarks=true, - colorlinks=false, - linkcolor={blue}, - citecolor={blue}, - urlcolor={blue}, - linkbordercolor={white}, - citebordercolor={white}, - urlbordercolor={white} -} - - \cleardoublepage% - \tableofcontents% - - \listoffigures% - \clearpage% - - \begin{changelog} - \change{2019/10/08}{Jared Corduan, Polina Vinogradova and Matthias G\"udemann}{FM (IOHK)}{Initial version (0.1).} - \change{2019/10/08}{Kevin Hammond}{FM (IOHK)}{Added cover page.} - \change{2020/11/17}{Jared Corduan}{FM (IOHK)} - {Removed unused deliverable outline image, - set version to 1.0, - and changed the reward calculation so that $\eta$ - takes $d$ into account.} - \change{2021/05/17}{Jared Corduan}{FM (IOHK)}{Added Example Illustration.} - \change{2021/06/14}{Jared Corduan}{FM (IOHK)} - {Added an errata section, - fixed a typo in leader check and in the LEDGERS rule index, - and synced the reward calculation with the implementation} - \change{2021/06/17}{Jared Corduan}{FM (IOHK)} - {Allow the pool influence parameter $a_0$ to be zero, - remove all mentions of deposit decay, sync varibale names with code.} - \change{2021/08/27}{Jared Corduan}{FM (IOHK)}{Fixed definitions in the header-only validation properties. - CHAIN transition did not need to use previous protocol parameters.} - \change{2021/10/08}{Jared Corduan}{FM (IOHK)}{The function createRUpd - should get the pool parameters from the go snapshot. - The TICKN rule was missing from the dependency diagram.} - \change{2021/11/08}{Jared Corduan}{FM (IOHK)}{Fixed typo in the description of variable length encodings.} - \change{2021/12/13}{Jared Corduan}{FM (IOHK)}{Re-wrote the MIR transitions to be more compact.} - \change{2022/01/20}{Jared Corduan}{FM (IOHK)}{Fixed error in counting new pools for deposits and an error in the POOLREAP rule.} - \change{2022/01/26}{Jared Corduan}{FM (IOHK)}{Specify seed operation and seedToSlot.} - \change{2022/01/31}{Jordan Millar, Jared Corduan}{FM (IOHK)}{Fixed prose regarding the hash used in the epoch nonce. Added an item to the errata regarding this same hash.} - \change{2022/08/25}{Jared Corduan}{FM (IOHK)}{Specify the txid function in the Appendix. Warn about re-serializing.} - \change{2023/03/23}{Jared Corduan}{FM (IOHK)}{Add an errata section about individualP deposit tracking.} - \end{changelog} - \clearpage% -\renewcommand{\thepage}{\arabic{page}} -\setcounter{page}{1} - -\title{A Formal Specification of the Cardano Ledger} - -\author{Jared Corduan \\ {\small \texttt{jared.corduan@iohk.io}} \\ - \and Polina Vinogradova \\ {\small \texttt{polina.vinogradova@iohk.io}} \\ - \and Matthias G\"udemann \\ {\small \texttt{matthias.gudemann@iohk.io}}} - -%\date{} - -\maketitle - -\begin{abstract} -This document provides a formal specification of the Cardano ledger for use in the upcoming Shelley implementation. -It is intended to underpin a Haskell executable specification that will be the basis of the initial -Shelley release, and represents a core design and quality assurance document. -It will be used to define properties and tests, and to provide the basis for strong formal assurance -using mathematical proof techniques. -The document defines the rules for extending the ledger with transactions -that will affect both UTxO and stake delegation. -Key properties that have been identified include the preservation of balances, absence of double spend, stakepool registration, -and reward splitting. -\end{abstract} - -\section*{List of Contributors} -\label{acknowledgements} - -Nicol\'as Arqueros, -Dan Bornside, -Nicholas Clarke, -Duncan Coutts, -Ruslan Dudin, -Sebastien Guillemot, -Kevin Hammond, -Vincent Hanquez, -Ru Horlick, -Michael Hueschen, -Christian Lindgren, -Yun Lu, -Philipp Kant, -Jordan Millar, -Jean-Christophe Mincke, -Damian Nadales, -Ashish Prajapati, -Nicolas Di Prima, -Andrew Westberg. diff --git a/eras/shelley/formal-spec/habbrv.bst b/eras/shelley/formal-spec/habbrv.bst deleted file mode 100644 index 44081672c77..00000000000 --- a/eras/shelley/formal-spec/habbrv.bst +++ /dev/null @@ -1,1376 +0,0 @@ -% 2017-11-13 Gautam Iyer: Modified habbrv.bst to use abbrv style author names -% (e.g. G. Iyer), and alpha style citations (e.g. Iye17). -% -% halpha: adds eprint field (www-admin@xxx.lanl.gov) -% an extension of: -% BibTeX standard bibliography style `alpha' - % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09. - % Copyright (C) 1985, all rights reserved. - % Copying of this file is authorized only if either - % (1) you make absolutely no changes to your copy, including name, or - % (2) if you do make changes, you name it something other than - % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst. - % This restriction helps ensure that all standard styles are identical. - % The file btxbst.doc has the documentation for this style. - -ENTRY - { address - author - booktitle - label - chapter - edition - editor - eprint - howpublished - institution - journal - key - month - note - number - organization - pages - publisher - school - series - title - type - url - doi - volume - year - } - {} - { cite.label extra.label sort.label } - -INTEGERS { output.state before.all mid.sentence after.sentence after.block } - -FUNCTION {init.state.consts} -{ #0 'before.all := - #1 'mid.sentence := - #2 'after.sentence := - #3 'after.block := -} - -STRINGS { s t } - -FUNCTION {output.nonnull} -{ 's := - output.state mid.sentence = - { ", " * write$ } - { output.state after.block = - { add.period$ write$ - newline$ - "\newblock " write$ - } - { output.state before.all = - 'write$ - { add.period$ " " * write$ } - if$ - } - if$ - mid.sentence 'output.state := - } - if$ - s -} - -FUNCTION {output} -{ duplicate$ empty$ - 'pop$ - 'output.nonnull - if$ -} - -FUNCTION {output.check} -{ 't := - duplicate$ empty$ - { pop$ "empty " t * " in " * cite$ * warning$ } - 'output.nonnull - if$ -} - -FUNCTION {output.bibitem} -{ newline$ - "\bibitem[" write$ - cite.label write$ - "]{" write$ - cite$ write$ - "}" write$ - newline$ - "" - before.all 'output.state := -} - -FUNCTION {fin.entry} -{ add.period$ - write$ - newline$ -} - -FUNCTION {new.block} -{ output.state before.all = - 'skip$ - { after.block 'output.state := } - if$ -} - -FUNCTION {new.sentence} -{ output.state after.block = - 'skip$ - { output.state before.all = - 'skip$ - { after.sentence 'output.state := } - if$ - } - if$ -} - -FUNCTION {not} -{ { #0 } - { #1 } - if$ -} - -FUNCTION {and} -{ 'skip$ - { pop$ #0 } - if$ -} - -FUNCTION {or} -{ { pop$ #1 } - 'skip$ - if$ -} - -FUNCTION {new.block.checka} -{ empty$ - 'skip$ - 'new.block - if$ -} - -FUNCTION {new.block.checkb} -{ empty$ - swap$ empty$ - and - 'skip$ - 'new.block - if$ -} - -FUNCTION {new.sentence.checka} -{ empty$ - 'skip$ - 'new.sentence - if$ -} - -FUNCTION {new.sentence.checkb} -{ empty$ - swap$ empty$ - and - 'skip$ - 'new.sentence - if$ -} - -FUNCTION {field.or.null} -{ duplicate$ empty$ - { pop$ "" } - 'skip$ - if$ -} - -FUNCTION {emphasize} -{ duplicate$ empty$ - { pop$ "" } - { "{\em " swap$ * "}" * } - if$ -} - -INTEGERS { nameptr namesleft numnames } - -FUNCTION {format.names} -{ 's := - #1 'nameptr := - s num.names$ 'numnames := - numnames 'namesleft := - { namesleft #0 > } - { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't := - nameptr #1 > - { namesleft #1 > - { ", " * t * } - { numnames #2 > - { "," * } - 'skip$ - if$ - t "others" = - { " et~al." * } - { " and " * t * } - if$ - } - if$ - } - 't - if$ - nameptr #1 + 'nameptr := - namesleft #1 - 'namesleft := - } - while$ -} - -FUNCTION {format.authors} -{ author empty$ - { "" } - { author format.names } - if$ -} - -FUNCTION {format.editors} -{ editor empty$ - { "" } - { editor format.names - editor num.names$ #1 > - { ", editors" * } - { ", editor" * } - if$ - } - if$ -} - -FUNCTION {format.title} -{ title empty$ - { "" } - { title "t" change.case$ } - if$ -} - -FUNCTION {format.eprint} -{ eprint empty$ - { "" } - { "\burlalt{" eprint * "}{http://arxiv.org/abs/" * eprint * "}" * } - if$ -} - -FUNCTION {format.url} -{ doi empty$ not - url empty$ - or - { "" } - { "\urlprefix\url{" url * "}" * } - if$ -} - -FUNCTION {format.doi} -{ doi empty$ - { "" } - { "\doi{" doi * "}" * } - if$ -} - - -FUNCTION {n.dashify} -{ 't := - "" - { t empty$ not } - { t #1 #1 substring$ "-" = - { t #1 #2 substring$ "--" = not - { "--" * - t #2 global.max$ substring$ 't := - } - { { t #1 #1 substring$ "-" = } - { "-" * - t #2 global.max$ substring$ 't := - } - while$ - } - if$ - } - { t #1 #1 substring$ * - t #2 global.max$ substring$ 't := - } - if$ - } - while$ -} - -FUNCTION {format.date} -{ year empty$ - { month empty$ - { "" } - { "there's a month but no year in " cite$ * warning$ - month - } - if$ - } - { month empty$ - 'year - { month " " * year * } - if$ - } - if$ -} - -FUNCTION {format.btitle} -{ title emphasize -} - -FUNCTION {tie.or.space.connect} -{ duplicate$ text.length$ #3 < - { "~" } - { " " } - if$ - swap$ * * -} - -FUNCTION {either.or.check} -{ empty$ - 'pop$ - { "can't use both " swap$ * " fields in " * cite$ * warning$ } - if$ -} - -FUNCTION {format.bvolume} -{ volume empty$ - { "" } - { "volume" volume tie.or.space.connect - series empty$ - 'skip$ - { " of " * series emphasize * } - if$ - "volume and number" number either.or.check - } - if$ -} - -FUNCTION {format.number.series} -{ volume empty$ - { number empty$ - { series field.or.null } - { output.state mid.sentence = - { "number" } - { "Number" } - if$ - number tie.or.space.connect - series empty$ - { "there's a number but no series in " cite$ * warning$ } - { " in " * series * } - if$ - } - if$ - } - { "" } - if$ -} - -FUNCTION {format.edition} -{ edition empty$ - { "" } - { output.state mid.sentence = - { edition "l" change.case$ " edition" * } - { edition "t" change.case$ " edition" * } - if$ - } - if$ -} - -INTEGERS { multiresult } - -FUNCTION {multi.page.check} -{ 't := - #0 'multiresult := - { multiresult not - t empty$ not - and - } - { t #1 #1 substring$ - duplicate$ "-" = - swap$ duplicate$ "," = - swap$ "+" = - or or - { #1 'multiresult := } - { t #2 global.max$ substring$ 't := } - if$ - } - while$ - multiresult -} - -FUNCTION {format.pages} -{ pages empty$ - { "" } - { pages multi.page.check - { "pages" pages n.dashify tie.or.space.connect } - { "page" pages tie.or.space.connect } - if$ - } - if$ -} - -FUNCTION {format.vol.num.pages} -{ volume field.or.null - number empty$ - 'skip$ - { "(" number * ")" * * - volume empty$ - { "there's a number but no volume in " cite$ * warning$ } - 'skip$ - if$ - } - if$ - pages empty$ - 'skip$ - { duplicate$ empty$ - { pop$ format.pages } - { ":" * pages n.dashify * } - if$ - } - if$ -} - -FUNCTION {format.chapter.pages} -{ chapter empty$ - 'format.pages - { type empty$ - { "chapter" } - { type "l" change.case$ } - if$ - chapter tie.or.space.connect - pages empty$ - 'skip$ - { ", " * format.pages * } - if$ - } - if$ -} - -FUNCTION {format.in.ed.booktitle} -{ booktitle empty$ - { "" } - { editor empty$ - { "In " booktitle emphasize * } - { "In " format.editors * ", " * booktitle emphasize * } - if$ - } - if$ -} - -FUNCTION {empty.misc.check} -{ author empty$ title empty$ howpublished empty$ - month empty$ year empty$ note empty$ - and and and and and - key empty$ not and - { "all relevant fields are empty in " cite$ * warning$ } - 'skip$ - if$ -} - -FUNCTION {format.thesis.type} -{ type empty$ - 'skip$ - { pop$ - type "t" change.case$ - } - if$ -} - -FUNCTION {format.tr.number} -{ type empty$ - { "Technical Report" } - 'type - if$ - number empty$ - { "t" change.case$ } - { number tie.or.space.connect } - if$ -} - -FUNCTION {format.article.crossref} -{ key empty$ - { journal empty$ - { "need key or journal for " cite$ * " to crossref " * crossref * - warning$ - "" - } - { "In {\em " journal * "\/}" * } - if$ - } - { "In " key * } - if$ - " \cite{" * crossref * "}" * -} - -FUNCTION {format.crossref.editor} -{ editor #1 "{vv~}{ll}" format.name$ - editor num.names$ duplicate$ - #2 > - { pop$ " et~al." * } - { #2 < - 'skip$ - { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = - { " et~al." * } - { " and " * editor #2 "{vv~}{ll}" format.name$ * } - if$ - } - if$ - } - if$ -} - -FUNCTION {format.book.crossref} -{ volume empty$ - { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ - "In " - } - { "Volume" volume tie.or.space.connect - " of " * - } - if$ - editor empty$ - editor field.or.null author field.or.null = - or - { key empty$ - { series empty$ - { "need editor, key, or series for " cite$ * " to crossref " * - crossref * warning$ - "" * - } - { "{\em " * series * "\/}" * } - if$ - } - { key * } - if$ - } - { format.crossref.editor * } - if$ - " \cite{" * crossref * "}" * -} - -FUNCTION {format.incoll.inproc.crossref} -{ editor empty$ - editor field.or.null author field.or.null = - or - { key empty$ - { booktitle empty$ - { "need editor, key, or booktitle for " cite$ * " to crossref " * - crossref * warning$ - "" - } - { "In {\em " booktitle * "\/}" * } - if$ - } - { "In " key * } - if$ - } - { "In " format.crossref.editor * } - if$ - " \cite{" * crossref * "}" * -} - -FUNCTION {article} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - crossref missing$ - { journal emphasize "journal" output.check - format.vol.num.pages output - format.date "year" output.check - } - { format.article.crossref output.nonnull - format.pages output - } - if$ - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {book} -{ output.bibitem - author empty$ - { format.editors "author and editor" output.check } - { format.authors output.nonnull - crossref missing$ - { "author and editor" editor either.or.check } - 'skip$ - if$ - } - if$ - new.block - format.btitle "title" output.check - crossref missing$ - { format.bvolume output - new.block - format.number.series output - new.sentence - publisher "publisher" output.check - address output - } - { new.block - format.book.crossref output.nonnull - } - if$ - format.edition output - format.date "year" output.check - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {booklet} -{ output.bibitem - format.authors output - new.block - format.title "title" output.check - howpublished address new.block.checkb - howpublished output - address output - format.date output - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {inbook} -{ output.bibitem - author empty$ - { format.editors "author and editor" output.check } - { format.authors output.nonnull - crossref missing$ - { "author and editor" editor either.or.check } - 'skip$ - if$ - } - if$ - new.block - format.btitle "title" output.check - crossref missing$ - { format.bvolume output - format.chapter.pages "chapter and pages" output.check - new.block - format.number.series output - new.sentence - publisher "publisher" output.check - address output - } - { format.chapter.pages "chapter and pages" output.check - new.block - format.book.crossref output.nonnull - } - if$ - format.edition output - format.date "year" output.check - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {incollection} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - crossref missing$ - { format.in.ed.booktitle "booktitle" output.check - format.bvolume output - format.number.series output - format.chapter.pages output - new.sentence - publisher "publisher" output.check - address output - format.edition output - format.date "year" output.check - } - { format.incoll.inproc.crossref output.nonnull - format.chapter.pages output - } - if$ - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {inproceedings} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - crossref missing$ - { format.in.ed.booktitle "booktitle" output.check - format.bvolume output - format.number.series output - format.pages output - address empty$ - { organization publisher new.sentence.checkb - organization output - publisher output - format.date "year" output.check - } - { address output.nonnull - format.date "year" output.check - new.sentence - organization output - publisher output - } - if$ - } - { format.incoll.inproc.crossref output.nonnull - format.pages output - } - if$ - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {conference} { inproceedings } - -FUNCTION {manual} -{ output.bibitem - author empty$ - { organization empty$ - 'skip$ - { organization output.nonnull - address output - } - if$ - } - { format.authors output.nonnull } - if$ - new.block - format.btitle "title" output.check - author empty$ - { organization empty$ - { address new.block.checka - address output - } - 'skip$ - if$ - } - { organization address new.block.checkb - organization output - address output - } - if$ - format.edition output - format.date output - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {mastersthesis} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - "Master's thesis" format.thesis.type output.nonnull - school "school" output.check - address output - format.date "year" output.check - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {misc} -{ output.bibitem - format.authors output - title howpublished new.block.checkb - format.title output - howpublished new.block.checka - howpublished output - format.date output - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry - empty.misc.check -} - -FUNCTION {phdthesis} -{ output.bibitem - format.authors "author" output.check - new.block - format.btitle "title" output.check - new.block - "PhD thesis" format.thesis.type output.nonnull - school "school" output.check - address output - format.date "year" output.check - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {proceedings} -{ output.bibitem - editor empty$ - { organization output } - { format.editors output.nonnull } - if$ - new.block - format.btitle "title" output.check - format.bvolume output - format.number.series output - address empty$ - { editor empty$ - { publisher new.sentence.checka } - { organization publisher new.sentence.checkb - organization output - } - if$ - publisher output - format.date "year" output.check - } - { address output.nonnull - format.date "year" output.check - new.sentence - editor empty$ - 'skip$ - { organization output } - if$ - publisher output - } - if$ - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {techreport} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - format.tr.number output.nonnull - institution "institution" output.check - address output - format.date "year" output.check - format.eprint output - new.block - format.doi output - new.block - format.url output - new.block - note output - fin.entry -} - -FUNCTION {unpublished} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - note "note" output.check - format.date output - format.eprint output - format.doi output - new.block - format.url output - fin.entry -} - -FUNCTION {default.type} { misc } - -MACRO {jan} {"Jan."} - -MACRO {feb} {"Feb."} - -MACRO {mar} {"Mar."} - -MACRO {apr} {"Apr."} - -MACRO {may} {"May"} - -MACRO {jun} {"June"} - -MACRO {jul} {"July"} - -MACRO {aug} {"Aug."} - -MACRO {sep} {"Sept."} - -MACRO {oct} {"Oct."} - -MACRO {nov} {"Nov."} - -MACRO {dec} {"Dec."} - -MACRO {acmcs} {"ACM Comput. Surv."} - -MACRO {acta} {"Acta Inf."} - -MACRO {cacm} {"Commun. ACM"} - -MACRO {ibmjrd} {"IBM J. Res. Dev."} - -MACRO {ibmsj} {"IBM Syst.~J."} - -MACRO {ieeese} {"IEEE Trans. Softw. Eng."} - -MACRO {ieeetc} {"IEEE Trans. Comput."} - -MACRO {ieeetcad} - {"IEEE Trans. Comput.-Aided Design Integrated Circuits"} - -MACRO {ipl} {"Inf. Process. Lett."} - -MACRO {jacm} {"J.~ACM"} - -MACRO {jcss} {"J.~Comput. Syst. Sci."} - -MACRO {scp} {"Sci. Comput. Programming"} - -MACRO {sicomp} {"SIAM J. Comput."} - -MACRO {tocs} {"ACM Trans. Comput. Syst."} - -MACRO {tods} {"ACM Trans. Database Syst."} - -MACRO {tog} {"ACM Trans. Gr."} - -MACRO {toms} {"ACM Trans. Math. Softw."} - -MACRO {toois} {"ACM Trans. Office Inf. Syst."} - -MACRO {toplas} {"ACM Trans. Prog. Lang. Syst."} - -MACRO {tcs} {"Theoretical Comput. Sci."} - -READ - -FUNCTION {sortify} -{ purify$ - "l" change.case$ -} - -INTEGERS { len } - -FUNCTION {chop.word} -{ 's := - 'len := - s #1 len substring$ = - { s len #1 + global.max$ substring$ } - 's - if$ -} - -INTEGERS { et.al.char.used } - -FUNCTION {initialize.et.al.char.used} -{ #0 'et.al.char.used := -} - -EXECUTE {initialize.et.al.char.used} - -FUNCTION {format.lab.names} -{ 's := - s num.names$ 'numnames := - numnames #1 > - { numnames #4 > - { #3 'namesleft := } - { numnames 'namesleft := } - if$ - #1 'nameptr := - "" - { namesleft #0 > } - { nameptr numnames = - { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" = - { "{\etalchar{+}}" * - #1 'et.al.char.used := - } - { s nameptr "{v{}}{l{}}" format.name$ * } - if$ - } - { s nameptr "{v{}}{l{}}" format.name$ * } - if$ - nameptr #1 + 'nameptr := - namesleft #1 - 'namesleft := - } - while$ - numnames #4 > - { "{\etalchar{+}}" * - #1 'et.al.char.used := - } - 'skip$ - if$ - } - { s #1 "{v{}}{l{}}" format.name$ - duplicate$ text.length$ #2 < - { pop$ s #1 "{ll}" format.name$ #3 text.prefix$ } - 'skip$ - if$ - } - if$ -} - -FUNCTION {author.key.label} -{ author empty$ - { key empty$ - { cite$ #1 #3 substring$ } - { key #3 text.prefix$ } - if$ - } - { author format.lab.names } - if$ -} - -FUNCTION {author.editor.key.label} -{ author empty$ - { editor empty$ - { key empty$ - { cite$ #1 #3 substring$ } - { key #3 text.prefix$ } - if$ - } - { editor format.lab.names } - if$ - } - { author format.lab.names } - if$ -} - -FUNCTION {author.key.organization.label} -{ author empty$ - { key empty$ - { organization empty$ - { cite$ #1 #3 substring$ } - { "The " #4 organization chop.word #3 text.prefix$ } - if$ - } - { key #3 text.prefix$ } - if$ - } - { author format.lab.names } - if$ -} - -FUNCTION {editor.key.organization.label} -{ editor empty$ - { key empty$ - { organization empty$ - { cite$ #1 #3 substring$ } - { "The " #4 organization chop.word #3 text.prefix$ } - if$ - } - { key #3 text.prefix$ } - if$ - } - { editor format.lab.names } - if$ -} - -FUNCTION {calc.label} -{ label empty$ - { type$ "book" = - type$ "inbook" = - or - 'author.editor.key.label - { type$ "proceedings" = - 'editor.key.organization.label - { type$ "manual" = - 'author.key.organization.label - 'author.key.label - if$ - } - if$ - } - if$ - duplicate$ - year field.or.null purify$ #-1 #2 substring$ - * - } - { label duplicate$ } - if$ - 'cite.label := - year field.or.null purify$ #-1 #4 substring$ - * - sortify 'sort.label := -} - -FUNCTION {sort.format.names} -{ 's := - #1 'nameptr := - "" - s num.names$ 'numnames := - numnames 'namesleft := - { namesleft #0 > } - { nameptr #1 > - { " " * } - 'skip$ - if$ - s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := - nameptr numnames = t "others" = and - { "et al" * } - { t sortify * } - if$ - nameptr #1 + 'nameptr := - namesleft #1 - 'namesleft := - } - while$ -} - -FUNCTION {sort.format.title} -{ 't := - "A " #2 - "An " #3 - "The " #4 t chop.word - chop.word - chop.word - sortify - #1 global.max$ substring$ -} - -FUNCTION {author.sort} -{ author empty$ - { key empty$ - { "to sort, need author or key in " cite$ * warning$ - "" - } - { key sortify } - if$ - } - { author sort.format.names } - if$ -} - -FUNCTION {author.editor.sort} -{ author empty$ - { editor empty$ - { key empty$ - { "to sort, need author, editor, or key in " cite$ * warning$ - "" - } - { key sortify } - if$ - } - { editor sort.format.names } - if$ - } - { author sort.format.names } - if$ -} - -FUNCTION {author.organization.sort} -{ author empty$ - { organization empty$ - { key empty$ - { "to sort, need author, organization, or key in " cite$ * warning$ - "" - } - { key sortify } - if$ - } - { "The " #4 organization chop.word sortify } - if$ - } - { author sort.format.names } - if$ -} - -FUNCTION {editor.organization.sort} -{ editor empty$ - { organization empty$ - { key empty$ - { "to sort, need editor, organization, or key in " cite$ * warning$ - "" - } - { key sortify } - if$ - } - { "The " #4 organization chop.word sortify } - if$ - } - { editor sort.format.names } - if$ -} - -FUNCTION {presort} -{ calc.label - sort.label - " " - * - type$ "book" = - type$ "inbook" = - or - 'author.editor.sort - { type$ "proceedings" = - 'editor.organization.sort - { type$ "manual" = - 'author.organization.sort - 'author.sort - if$ - } - if$ - } - if$ - * - " " - * - year field.or.null sortify - * - " " - * - title field.or.null - sort.format.title - * - #1 entry.max$ substring$ - 'sort.key$ := -} - -ITERATE {presort} - -SORT - -STRINGS { longest.label last.sort.label next.extra } - -INTEGERS { longest.label.width last.extra.num } - -FUNCTION {initialize.longest.label} -{ "" 'longest.label := - #0 int.to.chr$ 'last.sort.label := - "" 'next.extra := - #0 'longest.label.width := - #0 'last.extra.num := -} - -FUNCTION {forward.pass} -{ last.sort.label sort.label = - { last.extra.num #1 + 'last.extra.num := - last.extra.num int.to.chr$ 'extra.label := - } - { "a" chr.to.int$ 'last.extra.num := - "" 'extra.label := - sort.label 'last.sort.label := - } - if$ -} - -FUNCTION {reverse.pass} -{ next.extra "b" = - { "a" 'extra.label := } - 'skip$ - if$ - cite.label extra.label * 'cite.label := - cite.label width$ longest.label.width > - { cite.label 'longest.label := - cite.label width$ 'longest.label.width := - } - 'skip$ - if$ - extra.label 'next.extra := -} - -EXECUTE {initialize.longest.label} - -ITERATE {forward.pass} - -REVERSE {reverse.pass} - -FUNCTION {begin.bib} -{ et.al.char.used - { "\newcommand{\etalchar}[1]{$^{#1}$}" write$ newline$ } - 'skip$ - if$ - preamble$ empty$ - 'skip$ - { preamble$ write$ newline$ } - if$ - "\begin{thebibliography}{" longest.label * "}" * write$ newline$ - "\expandafter\ifx\csname url\endcsname\relax" - write$ newline$ - " \def\url#1{\texttt{#1}}\fi" - write$ newline$ - "\expandafter\ifx\csname doi\endcsname\relax" - write$ newline$ - " \def\doi#1{\burlalt{doi:#1}{http://dx.doi.org/#1}}\fi" - write$ newline$ - "\expandafter\ifx\csname urlprefix\endcsname\relax\def\urlprefix{URL }\fi" - write$ newline$ - "\expandafter\ifx\csname href\endcsname\relax" - write$ newline$ - " \def\href#1#2{#2}\fi" - write$ newline$ - "\expandafter\ifx\csname burlalt\endcsname\relax" - write$ newline$ - " \def\burlalt#1#2{\href{#2}{#1}}\fi" - write$ newline$ -} - -EXECUTE {begin.bib} - -EXECUTE {init.state.consts} - -ITERATE {call.type$} - -FUNCTION {end.bib} -{ newline$ - "\end{thebibliography}" write$ newline$ -} - -EXECUTE {end.bib} diff --git a/eras/shelley/formal-spec/hand_proofs.tex b/eras/shelley/formal-spec/hand_proofs.tex deleted file mode 100644 index 10791dce34e..00000000000 --- a/eras/shelley/formal-spec/hand_proofs.tex +++ /dev/null @@ -1,646 +0,0 @@ -\newcommand{\StakeCreds}{\type{StakeCreds}} -\newcommand{\decayedTx}[3]{\fun{decayedTx}~ \var{#1}~ \var{#2}~ \var{#3}} - -\subsection{Preservation of Value} -\label{sec:preservation-of-value} - -As visualized in Figure~\ref{fig:fund-preservation}, -the total amount of lovelace in any given chain state -$\var{s}\in\ChainState$ is completely contained within the values of the six -variables: - -\begin{tabular}{||l|l|l|l||}\hline\hline - - \textbf{Variable} & \textbf{Name in Figure~\ref{fig:fund-preservation}} - & \textbf{Nesting Inside Chain State} & \textbf{Kind} \\ \hline - utxo & circulation & s.nes.es.ls.utxoSt & Map over Lovelace Values \\ \hline - deposits & deposits & s.nes.es.ls.utxoSt & Lovelace Value ($\Coin$) \\ \hline - fees & fees & s.nes.es.ls.utxoSt & Lovelace Value ($\Coin$) \\ \hline - rewards & reward accounts & s.nes.es.ls.dpstate.dstate & Lovelace Value ($\Coin$) \\ \hline - treasury & treasury & s.nes.es.acnt & Lovelace Value ($\Coin$) \\ \hline - reserves & reserves & s.nes.es.acnt & Map over Lovelace Values \\ \hline - \hline -\end{tabular} - -\noindent -Notice that $\var{deposits}$, $\var{fees}$, $\var{treasury}$, and $\var{reserves}$ -are all single lovelace values, while $\var{utxo}$, and $\var{rewards}$ are -maps whose values are lovelace. - -We define the \emph{Lovelace Value} of a given chain state as: -\begin{definition}[Lovelace Value] - \label{def:val} - \begin{equation*} - \Val(s~\in~\var{State}) = - \Val(\var{utxo}) + - \Val(\var{deposits}) + - \Val(\var{fees}) + - \Val(\var{reserves}) + - \Val(\var{treasury}) + - \Val(\var{rewards}) - \end{equation*} - where - \begin{equation*} - \Val(x \in \Coin) = x - \end{equation*} - \begin{equation*} - \Val((\wcard\mapsto (y \in \Coin))^{*}) = \sum y - \end{equation*} -\end{definition} - -\noindent -For any state that is used in a given subtransition of $\mathsf{CHAIN}$, -we define $\Val{}$ in an analogous way, setting the value of any variable that is not explicitly -represented in the state to zero. -For example, given $\var{utxoSt}\in\UTxOState$, -\begin{equation*} - \Val(\var{utxoSt}) = - \left(\sum_{\wcard\mapsto(\wcard,~v)\in\var{utxo}}v\right) + \var{deposits} + \var{fees} -\end{equation*} - -\noindent -The key property that we want to prove is that no semantic transition changes the value that -is captured in the state ($\Val{s}$). -This property is easy to state: intuitively, -the \emph{Lovelace Value}before the transition is the same as the -\emph{Lovelace Value} after that transition. - -\begin{theorem}[Preservation of Value] - \label{thm:chain-pres-of-value} - For all environments $e$, blocks $b$, and states $s$, $s'$, if - \begin{equation*} - e\vdash s\trans{\hyperref[fig:rules:chain]{chain}}{b}s' - \end{equation*} - then - \begin{equation*} - \Val(s) = \Val(s') - \end{equation*} -\end{theorem} - -\noindent -We will prove the soundness of Theorem~\ref{thm:chain-pres-of-value} via a few lemmas. - -\begin{lemma} - \label{lemma:value-sum-pres-1} - For any mapping $m:A\mapsto\Coin$ and set $s\in\powerset{A}$, - \begin{equation*} - \Val(\var{m}) = \Val(s\subtractdom m) + \Val(s\restrictdom m) - \end{equation*} -\end{lemma} -\begin{proof} - easy -\end{proof} - -\begin{lemma} - \label{lemma:value-sum-pres-2} - For any mappings $m_1, m_2:A\mapsto\Coin$, - if $\dom{m_1}\cap\dom{m_2}=\emptyset$, - then - \begin{equation*} - \Val(m_1\cup m_2) = \Val(m_1) + \Val(m_2) - \end{equation*} -\end{lemma} -\begin{proof} - easy -\end{proof} - -\begin{lemma} - \label{lemma:utxo-pres-of-value} - For all environments $e$, transactions $t$, and states $s$, $s'$, if - \begin{equation*} - e\vdash s\trans{\hyperref[fig:rules:utxo-shelley]{utxo}}{t}s' - \end{equation*} - then - \begin{equation*} - \Val(s) + w = \Val(s') - \end{equation*} - where $w = \fun{wbalance}~(\fun{txwdrls}~{t})$. -\end{lemma} - -\begin{proof} - The proof is essentially unfolding the definition of the predicate - \begin{equation} - \label{cons-is-prod} - \consumed{pp}{utxo}{t} = \produced{pp}{stpools}{t} - \end{equation} - and applying a little algebra. -% -If we let: - \begin{equation*} - \begin{array}{r@{~=~}l} - k & \keyRefunds{pp}{stkCreds}{t} \\ - f & \txfee{t} \\ - d & \totalDeposits{pp}{stpools}{(\txcerts{t})} \\ - \end{array} - \end{equation*} - then equation~\ref{cons-is-prod} can be rewritten as: - \begin{equation*} - \Val(\txins{t} \restrictdom{\var{utxo}}) + w + k = \Val(\outs{t}) + f + d - \end{equation*} - where $\outs{}$ is defined in Figure~\ref{fig:functions:utxo} and returns a value of type $\UTxO$. - Therefore, moving $k$ to the right and adding $\txins{t} \subtractdom{\var{utxo}}$ to each side, - \begin{equation*} - \Val(\txins{t} \restrictdom{\var{utxo}}) + \Val(\txins{t} \subtractdom{\var{utxo}}) + w - = \Val(\outs{t}) + f + d - k + \Val(\txins{t} \subtractdom{\var{utxo}}) - \end{equation*} - (Though not needed for the proof at hand, - note that $d-k$ is non-negative since the deposits will always be large enough to cover - the current obligation. See Theorem~\ref{thm:non-neg-deposits}.) -% - It then follows that: - \begin{equation*} - \begin{array}{r@{~=~}lr} - \Val(\var{utxo}) + w - & \Val(\outs{t}) + f + d - k + \Val(\txins{t} \subtractdom{\var{utxo}}) - & \text{(by Lemma~\ref{lemma:value-sum-pres-1})} - \\ - & \Val((\txins{t} \subtractdom{\var{utxo}})\cup\outs{t}) + (d - k) + f - & \text{(by Lemma~\ref{lemma:value-sum-pres-2})} - \end{array} - \end{equation*} - Note that in order to apply Lemma~\ref{lemma:value-sum-pres-2} above, - it must be true that $(\txins{t} \subtractdom{\var{utxo}})$ and $(\outs{t})$ - have disjoint domains, which follows from the uniqueness of the transaction IDs. - - Therefore, by adding the deposits and fees from $s$ to the equality above, - it follows that $\Val(s) + w = \Val(s')$. -\end{proof} - -\begin{lemma} - \label{lemma:deleg-pres-of-value} - For all environments $e$, transactions $c$, and states $s$, $s'$, if - \begin{equation*} - e\vdash s\trans{\hyperref[fig:delegation-rules]{deleg}}{c}s' - \end{equation*} - then - \begin{equation*} - \Val(s) = \Val(s') - \end{equation*} -\end{lemma} - -\begin{proof} - The only variable with value in this transition is \var{rewards}. - Only two of the rules in $\mathsf{DELEG}$ can change \var{rewards}, - namely $\mathsf{Deleg{-}Reg}$ and $\mathsf{Deleg{-}Dereg}$. - However, $\mathsf{Deleg{-}Reg}$ only adds a zero value, - and $\mathsf{Deleg{-}Dereg}$ only removes a zero value. -\end{proof} - -\begin{lemma} - \label{lemma:delegs-pres-of-value} - For all environments $e$, certificates $\Gamma$, and states $s$, $s'$, if - \begin{equation*} - e\vdash s\trans{\hyperref[fig:rules:delegation-sequence]{delegs}}{\Gamma}s' - \end{equation*} - then - \begin{equation*} - \Val(s) = \Val(s') + w - \end{equation*} - where $w = \fun{wbalance}~(\fun{txwdrls}~{t})$, - and $t$ is the transaction in the environment $e$. -\end{lemma} - -\begin{proof} - The proof is by induction on the length of $\Gamma$. - Note that the only variable with value in this transition is \var{rewards}. - - \vspace{2ex} - \noindent - \emph{In the base case}, we look at the rule $\mathsf{Seq{-}delg{-}base}$. - Since $\var{wdrls}\subseteq\var{rewards}$, then - $\var{rewards} = \var{wdrls}\cup\var{(\var{rewards}\setminus\var{wdrls})}$. -% - Therefore - \begin{equation*} - \begin{array}{r@{~=~}lr} - \Val{(\var{rewards})} - & \Val{(\var{rewards}\setminus\var{wdrls})} + \Val{(\var{wdrls})} - & \text{by Lemma~\ref{lemma:value-sum-pres-2}} - \\ - & \Val{(\var{rewards}\setminus\var{wdrls})} + w - & \text{by definition} - \\ - & \Val\left(\var{rewards}\unionoverrideRight\{(w, 0) \mid w \in \dom \var{wdrls}\}\right) + w - \end{array} - \end{equation*} - Therefore $\Val(s) = \Val(s')$. - - \vspace{2ex} - \noindent - \emph{In the inductive case}, we look at the rule $\mathsf{Seq{-}delg{-}ind}$. - In this case, the lemma then follows directly from Lemma~\ref{lemma:deleg-pres-of-value}. -\end{proof} - -\begin{lemma} - \label{lemma:poolreap-pres-of-value} - For all environments $e$, epoch $\epsilon$, and states $s$, $s'$, if - \begin{equation*} - e\vdash s\trans{\hyperref[fig:rules:pool-reap]{poolreap}}{\epsilon}s' - \end{equation*} - then - \begin{equation*} - \Val(s) = \Val(s') - \end{equation*} -\end{lemma} - -\begin{proof} - The $\mathsf{POOLREAP}$ value is contained in - $\var{deposits}$, $\var{treasury}$, and $\var{rewards}$. - Notice that $\var{unclaimed}$ is added to $\var{treasury}$ - and subtracted from the $\var{deposits}$. - Moreover, $\var{refunded}$ is subtracted from $\var{deposits}$. - (Note that $\var{deposits}-(\var{unclaimed}+\var{refunded})$ - is non-negative by Theorem~\ref{thm:non-neg-deposits}.) - It therefore suffices to show that - \begin{equation*} - \begin{array}{r@{~=~}l} - \Val(\var{rewards}\unionoverridePlus\var{refunds}) - & \Val(\var{rewards}) + \Val(\var{refunds}) - \\ - & \Val(\var{rewards}) + \var{refunded} - \end{array} - \end{equation*} - But this is clear from the definition of $\unionoverridePlus$. -\end{proof} - -\begin{lemma} - \label{lemma:ru-pres-of-value} - For every $(\Delta t,~\Delta r,~\var{rs},~\Delta f)$ in the range of $\fun{createRUpd}$, - \begin{equation*} - \Delta t + \Delta r + \Val(rs) + \Delta f = 0 - \end{equation*} -\end{lemma} - -\begin{proof} - In the definition of $\fun{createRUpd}$ in Figure~\ref{fig:functions:reward-update-creation}, - We see that: - \begin{equation*} - \begin{array}{r@{~=~}l} - \var{rewardPot} & \var{feeSS} + \Delta r \\ - \var{R} & \var{rewardPot} - \Delta t_1 \\ - \Delta t_2 & R - \Val(\var{rs})\\ - \Delta t & \Delta t_1 + \Delta t_2 \\ - \end{array} - \end{equation*} - Therefore - \begin{equation*} - \begin{array}{r@{~=~}l} - (\var{feeSS} + \Delta r) & \var{rewardPot} = R + \Delta t_1 = \Delta t_2 + \Val(rs) + \Delta t_1 \\ - 0 & (\Delta t_1 + \Delta t_2 ) - \Delta r + \Val(rs)- \var{feeSS} \\ - 0 & \Delta t - \Delta r + \Val(rs)- \var{feeSS} \\ - \end{array} - \end{equation*} - It then suffices to notice that $\fun{createRUpd}$ returns - $(\Delta t,-~\Delta r,~\var{rs},~-\var{feeSS})$. -\end{proof} - -\noindent - -Note that Lemma~\ref{lemma:ru-pres-of-value} is not strictly need for the proof of -Theorem~\ref{thm:chain-pres-of-value}, since the $\mathsf{NEWEPOCH}$ transition -requires that $\Delta t + \Delta r + \Val(rs) + \Delta f = 0$ holds. -It does, however, give us confidence that the $\mathsf{CHAIN}$ transition can proceed. - -We are now ready to prove Theorem~\ref{thm:chain-pres-of-value}. - -\begin{proof} - For a given transition $\mathsf{TR}$, let \POV{TR} - be the statement: - - \begin{tabular}{l} - for all environments $e$, signals $\sigma$, and states $s$, $s'$, - $$ - $e\vdash s\trans{tr}{\sigma}s'~\implies~\Val(s) = \Val(s')$. - $$ - \end{tabular} - - \noindent - Our goal is to prove \POV{CHAIN}. - Lemmas~\ref{lemma:utxo-pres-of-value} and \ref{lemma:delegs-pres-of-value} imply \POV{LEDGER}, - since $\mathsf{UTXOW}$ transforms state exactly as $\mathsf{UTXO}$ does. - \POV{LEDGERS} then follows by straightforward induction on the length of $\Gamma$: - the base case is trivial; - and the inductive case follows directly from \POV{LEDGER}. -% - \POV{SNAP} holds trivially, since it contains no value. - Similarly, \POV{NEWPP} holds since $\var{diff}$ is added to $\var{reserves}$ - and subtracted from $\var{deposits}$. - Therefore \POV{EPOCH} holds by Lemma~\ref{lemma:poolreap-pres-of-value}. - \POV{MIR} holds since - $\Val{i_{rwd}'}=\var{tot}$ in Figure~\ref{fig:rules:mir}. - Morover, \POV{NEWEPOCH} holds in the presence of $\fun{applyRUpd}$ - since the transition requires $\Delta t + \Delta r + \Val(rs) + \Delta f = 0$. - \POV{CHAIN} easily follows from this. -\end{proof} - -\subsection{Non-negative Deposit Pot} % TODO - this section is out of date due to no decaying deposits -\label{sec:non-negative-deposit-pot} - -The \emph{deposit pot} (the variable $\var{deposits}$ in the UTxO State) -represents the amount of \emph{lovelace} that is set aside by the system as a whole for refunding deposits. -Deposits are added to this pot, which then decays exponentially over time, -and is also depleted by any refunded deposits. -At an epoch boundary, the decayed parts of any deposits (including, possibly, deposits for any transactions that will complete in future epochs) -will be distributed as additional \emph{rewards}, as described in~\cite{delegation_design}. -Since $\var{deposits}$ is only used to record the value of future refunds or rewards whose costs have -already been incurred, both it and any reward value will always be non-negative. -Note that there are two types of deposits which are recorded in the same pot: those for stake keys; and those for stake pools. -Stake keys are deregistered in the slot in which the deregistration certificates -is processed. Stake pools, however, are staged for retirement on epoch boundaries. -% -The following theorem ensures that the deposit pot is properly maintained -and will always be large enough to meet all of its obligations. - - -\begin{figure}[h!] - \begin{tabular}{||l|l|l|l||}\hline\hline - - \textbf{Variable} & \textbf{Value} - & \textbf{Nesting Inside Chain State} & \textbf{Kind} \\ \hline - deposits & 0 & s.nes.es.ls.utxoSt & $\Coin$ \\ \hline - stkCreds & $\emptyset$ & s.nes.es.ls.dpstate.dstate.stkCreds - & $\StakeCreds$ ($\Credential\mapsto\Slot$) \\ \hline - stpools & $\emptyset$ & s.nes.es.ls.dpstate.pstate.stpools - & $\StakePools$ ($\KeyHash\mapsto\Slot$) \\ \hline - \end{tabular} - \caption{Initial Chain State} - \end{figure} - -\begin{theorem}[Non-negative Deposit Pot] - \label{thm:non-neg-deposits} - Let $n\in\N$ and $c_0\in\ChainState$ be a chain state in which $\var{deposits} ~=~0$, $\var{stkCreds}~=~\emptyset$ and $\var{stPools}~=~\emptyset$, as shown above: -% \\~\\ - If - \begin{equation*} - s_0\vdash c_0\trans{\hyperref[fig:rules:chain]{chain}}{b_0}c_1,~~ - s_1\vdash c_1\trans{\hyperref[fig:rules:chain]{chain}}{b_1}c_2,~~ - \ldots,~~ - s_n\vdash c_n\trans{\hyperref[fig:rules:chain]{chain}}{b_n}c_{n+1},~~n \ge 0 - \end{equation*} - is a sequence of valid $\mathsf{CHAIN}$ transitions, - then $\forall i, 0 \le i \le n, \var{deposits} ~(c_{n+1}) \ge 0$. -\end{theorem} - -\begin{proof} - - We will prove a slightly stronger condition, namely that some stronger invariants hold - most of the time, and that when they do fail to hold, then $\var{deposits}$ is still non-negative. - These stronger invariants will require a few additional definitions. -% - Given a slot $s$, let $\ell(s)$ be the first slot of the epoch that $s$ occurs in, - that is $\ell = \fun{firstSlot}\circ\fun{epoch}$. - Given a mapping $m\in\mathsf{T}\to\Slot$ and a slot $s\in\Slot$, - let $\fun{sep}$ be the function that separates $m$ into two maps, - those whose value is strictly less than $s$ and those whose value is at least $s$. - So, - \begin{equation*} - \fun{sep}~m~s = \forall x\mapsto t~\in~m,~~ - \left(\{x\mapsto t~\mid~t} -} -\DueDate{30$^{\textrm{th}}$ November 2019} -\SubmissionDate{26$^{\textrm{th}}$ November 2019}{2019/11/26} -\LeaderName{Philipp Kant, \IOHK} -\InstitutionAddress{\IOHK} -\Version{0.5} -\Project{Shelley Ledger} -\DisseminationPU - -\usepackage[margin=2.5cm]{geometry} -\usepackage{lscape} -\usepackage{iohk} -\usepackage{microtype} -\usepackage{mathpazo} % nice fonts -\usepackage{amsmath} -\usepackage{amssymb} -\usepackage{amsthm} -\usepackage{latexsym} -\usepackage{mathtools} -\usepackage{stmaryrd} -\usepackage{extarrows} -\usepackage{slashed} -\usepackage[unicode=true,pdftex,pdfa,colorlinks=true]{hyperref} -\usepackage{xcolor} -\definecolor{green}{rgb}{0.0,0.34,0.25} -\usepackage[capitalise,noabbrev,nameinlink]{cleveref} -\usepackage{float} -\restylefloat{figure} -\usepackage{tikz} -\usepackage{booktabs} -\usepackage{enumerate} - -%% Commenting -- KH -\usepackage[obeyFinal]{todonotes} -\newcommand{\khcomment}[1]{\todo[color=blue!20]{KH: #1}} - -\newcommand{\ada}{ADA{}} -\newcommand{\ADA}[1]{\textbf{\emph{\ada~{#1}}}} -\newcommand{\cardano}[1]{Cardano} - -%% In-para enumeration -- KH -\usepackage{paralist} - -\usepackage{caption} - -\renewcommand{\floatpagefraction}{0.9} - -\begin{document} - -\hypersetup{ - pdftitle={}, - breaklinks=true, - bookmarks=true, - colorlinks=false, - linkcolor={blue}, - citecolor={blue}, - urlcolor={blue}, - linkbordercolor={white}, - citebordercolor={white}, - urlbordercolor={white} -} - - \cleardoublepage% - \tableofcontents% - \listoffigures% - \clearpage% - - \begin{changelog} - \change{2019/10/09}{Kevin Hammond}{FM (\IOHK)}{Initial Version (0.1).} - \change{2019/10/14}{Kevin Hammond}{FM (\IOHK)}{Version 0.2. Polished slightly} - \change{2019/10/15}{Kevin Hammond}{FM (\IOHK)}{First draft of main net calculation. Fixed small error in Delegator calculation.} - \change{2019/10/16}{Kevin Hammond}{FM (\IOHK)}{Checked against design document. Further clarifications.} - \change{2019/10/17}{Kevin Hammond}{FM (\IOHK)}{Further checking and clarification. Added images.} - \change{2019/10/24}{Kevin Hammond}{FM (\IOHK)}{Version 0.3. Included images from calculator. Further checks and improvements.} - \change{2019/11/1}{Kevin Hammond}{FM (\IOHK)}{Version 0.4. Included suggested changes from AS. Changed $k$ to $N^{\textit{Pools}}$. Added short section on private pools.} - \change{2019/11/26}{Kevin Hammond}{FM (\IOHK)}{Version 0.5. Removed number of pools parameter and apparent performance for the TestNet to ensure consistency with - the release version. Altered summary of differences between Testnet and Mainnet and added description of the Edinburgh workshop, as requested. - Added description of the rewards transfer scheme. - First public version of document.} - \end{changelog} - \clearpage% -\begin{landscape} -\floatstyle{plain} -\restylefloat{figure} -\begin{figure*} -\includegraphics[scale=0.8,angle=90]{d4-depends.pdf} -\caption{Positioning of this Deliverable (outlined in red).} -\end{figure*} -\end{landscape} -\restylefloat{figure} -\pagestyle{empty} -\cleardoublepage - -\title{An Introduction to the Shelley Incentives Scheme} - -\author{Kevin Hammond \\ {\small \texttt{kevin.hammond@iohk.io}}} - -\maketitle - -\begin{abstract} - \noindent - This document provides a high-level overview of the proposed incentives rewards schemes for - the Shelley Incentivised TestNet and the subsequent MainNet, highlighting key - differences between the two schemes. It is intended to act as a - simple, easy to follow, guide to the operation of each of the incentives schemes that explains each step of the calculation. - It assumes a basic familiarity with the concepts of a \emph{blockchain} approach. - The incentives scheme is designed to ensure the correct operation of the Ouroboros Praos - protocol, including maintaining built-in defences against ``Sybil-in-Sybil'' security attacks - that could lead to corruption of the blockchain. It builds on sound economic theory. - A simplified version of the incentives scheme is used for the Incentivised TestNet, using fixed rewards, - omitting fee calculations, StakePool deposits, the influence of the StakePool owner(s)' pledge on - the StakePool's desirability, the apparent performance of the StakePool etc. (some of these features may be - added in later versions of the Incentivised TestNet). - This document is based on SL-D1 (Delegation/Incentives Design)~\cite{delegation_design} and~\cite{bkks2018} and feeds in to SL-D5 - (Formal Ledger Specification. Version 1)~\cite{shelley_spec} as well as the online rewards calculator and the Shelley Incentivised TestNet and MainNet implementations and quality assurance programmes. -\end{abstract} - -\vspace{3.5in} -\noindent -\textbf{\emph{Note: this document is subject to change. In particular, it may be necessary to include a simplified fees calculation - in the incentivised TestNet, where all the fees accrue to the Treasury. -Also note that some terms and symbols that were used in SL-D1 have been changed in this document -in order to simplify the explanations that are given here. These are outlined in Appendix~\ref{app:diffs}. -}} - -\thispagestyle{empty} -\clearpage -\pagestyle{myheadings} -\renewcommand{\thepage}{\arabic{page}} -\setcounter{page}{1} -\section{Introduction} -\label{sec:introduction} - -The purpose of this document is to precisely explain the incentives schemes that will be used by the Shelley implementation -of the \cardano{} blockchain, giving step-by-step explanations of the rewards calculations. -It follows Section~5 of SL-D1 (Delegation/Incentives Design)~\cite{delegation_design} and the more theoretical description of reward -sharing schemes in~\cite{bkks2018}\footnote{This does not include the ``performance factor''.}, but aims to provide a more approachable -description that can be used by e.g. StakePool owners/operators, delegators etc. -It also explains the differences between the simplified scheme that will be used in the Shelley Incentivised TestNet implementation and the -full scheme that will be used in the Shelley MainNet implementation. - -Figure~\ref{fig:terminology} gives some basic terminology that will be used in this document. -The Shelley implementation rewards those \ada{} holders who either own active stake pools -(\emph{Owners}) or who delegate stake to active stake pools (\emph{Delegators}). -In line with the design of the Ouroboros protocol~\cite{ouroboros_classic}, the \emph{StakePool} receives -rewards in proportion to the stake that it \emph{controls} (``proof of -stake'') rather than in proportion to the work that it does (``proof of work''). -This has cost, efficiency and safety advantages. -The rewards scheme is designed to help ensure that no single entity can -dominate the system by \emph{controlling} excessive amounts of \ada{}. This is achieved by creating intrinsic -balancing mechanisms that will naturally spread all the active stake among a large number of StakePools. -In particular, the rewards to any one \emph{StakePool} may be capped to a pre-determined limit, -meaning that both delegators and owners will receive less reward if too much stake is controlled by a single StakePool, -so encouraging the creation of additional, smaller StakePools. -It is also designed to ensure \emph{non-myopic} behaviour. That is, it avoids chaotic system behaviour by encouraging the delegation of \ada{} to those StakePools that will provide -the best overall returns over an extended period of time rather than over the short term. -The overall theory that ensures this is described in the Ouroboros Praos research -paper~\cite{ouroboros_praos}; Section~5 of SL-D1~\cite{delegation_design} provides the design rationale -for the actual incentives scheme. - -\begin{figure}[t] - \begin{center} -\begin{tabular}{||l|p{12cm}||} - \hline \hline -\textbf{Term} & \textbf{Definition} \\\hline - StakePool & A system that is actively participating in the creation of blocks on the \cardano{} blockchain \\\hline - Stake & An amount of \ada{} that is \emph{controlled} by a StakePool.\\\hline - Epoch & A fixed period of time during which blocks are created, transactions run, and rewards earned.\\\hline -Operator & The entity that is responsible for running a StakePool. \\\hline -Owner(s) & The entities that \emph{pledge} stake to the StakePool when it is registered. \\\hline - Delegator(s) & The entities that \emph{delegate} stake to the StakePool.\\\hline - Treasury & A Central Repository of \ada{} to be distributed in future.\\\hline - Reserve & The \ada{} that is not yet in circulation.\\\hline - Distribution & The \ada{} that put into circulation in an Epoch.\\\hline - Reward & The \ada{} that is distributed to the Owner(s) and Delegator(s) of a sufficiently performant StakePool.\\\hline - MainNet & The full Shelley \cardano{} implementation.\\\hline - \hline -\end{tabular} -\end{center} -\caption{General Terminology} -\label{fig:terminology} -\end{figure} - -\newpage -\subsubsection*{Notation} - -Throughout the document, the colour coding below is used to distinguish the sources of various parameters. -A similar scheme is followed in the corresponding spreadsheets. - -\begin{tabular}{||l|l||}\hline\hline - \textbf{\color{green} Green} & Parameters that are set by the \cardano{} system \\\hline - \textbf{\color{red} Red} & Parameters that are set by a StakePool's Owner(s)/Operator \\\hline - \textbf{\color{blue} Blue} & Parameters that are set externally \\\hline - \textbf{\color{cyan} Cyan} & Parameters that are observed from the running implementation \\\hline - Black & Calculated parameters \\\hline -\hline -\end{tabular} - -\subsection{General Parameters} - -\begin{figure}[h!] -\begin{center} -\begin{tabular}{||l|l|p{10cm}|l||} - \hline \hline -\textbf{Parameter} & \textbf{Expected Value} & \textbf{Definition} \\\hline -\textbf{\color{green} $N^{\textit{Pools}}$} &\textbf{\color{green} 50-1000} & \textbf{\color{green} The Target Number of StakePools} \\\hline -\textbf{\color{green} $T$ } & \textbf{\color{green} 10\% } & \textbf{\color{green} The Treasury Top Slice Percentage } \\\hline -\textbf{\color{green} $\textit{MER}$ } & \textbf{\color{green} 10\%-15\% } & \textbf{\color{green} The ``Monetary Expansion Rate'' per Year } \\\hline -\textbf{\color{green} $\textit{DPE}$ } & \textbf{\color{green} 1-5 } & \textbf{\color{green} Days per Epoch: Duration of a \cardano{} Epoch } \\\hline - \hline -\end{tabular} -\end{center} -\caption{Key Operational Parameters.} -\end{figure} - -\noindent -Four key operating parameters are set by the community (the initial values will be determined by \IOHK): -$N^{\textit{Pools}}$, the target number of StakePools; -$T$, the treasury top slice percentage; -$\textit{MER}$, the monetary expansion per year; -and -$\textit{DPE}$, the length of each epoch, in days. -% -The target number of StakePools is used to cap the rewards that any individual StakePool can receive. The intention is to encourage the creation of more StakePools, and to avoid domination by any single stake holder. -The \emph{treasury top slice percentage} is the fraction of reward that is allocated to the treasury to cover fixed operating costs, and -ensure the long-term viability both of \cardano{} and of \ada{} as a currency. It is initially set to a small percentage (10\%) of the rewards. -The \emph{monetary expansion rate} is the rate at which rewards are allocated from the \emph{reserves} of \ada{}. - -\begin{figure}[h!] -\begin{center} -\begin{tabular}{||l|l|p{6cm}|l||} - \hline \hline -\textbf{Parameter} & \textbf{Value} & \textbf{Description} & \textbf{Calculated as} \\\hline -\textbf{\color{blue} $\textit{Ada}^{Tot}$ } & \textbf{\color{blue} \ADA{45bn} } & \textbf{\color{blue} The total \ada{} that could ever be created } & \textbf{\color{blue} } \\\hline -%\textbf{\color{blue} \emph{P} } & \textbf{\color{blue} 100\% } & \textbf{\color{blue} Participation Rate in the Shelley Incentivised TestNet } & \textbf{\color{blue} } \\\hline -\textbf{\color{blue} $\textit{Ada}^{\textit{Circ}}$ } & \textbf{\color{blue} \ADA{31bn} } & \textbf{\color{blue} The total \ada{} in circulation at Shelley launch } & \textbf{\color{blue} } \\\hline -\textbf{\color{blue} $\textit{Ada}^{\textit{Rsv}}$ } & \textbf{\color{blue} \ADA{14bn} } & \textbf{\color{blue} The total \ada{} in the reserves at Shelley launch } & \textbf{\color{blue} $\textit{Ada}^{Tot} - \textit{Ada}^{\textit{Circ}}$ } \\\hline -\hline -\end{tabular} -\end{center} -\caption{Parameters that are set by External Factors (e.g. \ada{} holders).} -\end{figure} - -\noindent -Several parameters are pre-determined by external factors. These include the -total \ada{} that could ever be created, $\textit{Ada}^{Tot}$; -the total \ada{} that is in \emph{circulation} when the Shelley system launches -(i.e. all \ada{} that is held by any entity on the launch date), $\textit{Ada}^{\textit{Circ}}$; -and the \ada{} that is held in reserve when the system starts. -These values are fixed and will not change. - -\subsection{StakePools} - -\subsubsection*{Operator-Set Parameters} - -\begin{figure}[h!] -\begin{center} -\begin{tabular}{||l|l|p{9cm}||} - \hline \hline -\textbf{Parameter} & \textbf{Range} & \textbf{Description} \\\hline - \textbf{\color{red} $\textit{Pool}^{\textit{Cost}}$} & \textbf{\color{red} \ADA{0} $\ldots$} & \textbf{\color{red} Cost - \emph{per day} in \ada{}} \\\hline -\textbf{\color{red} ${\textit{Pool}}^{\textit{Margin}}$} & \textbf{\color{red} 0\%-100\%} & \textbf{\color{red} Percentage charge on rewards (the ``margin'')} \\\hline - \hline -\end{tabular} -\end{center} -\caption{Key Parameters that are set by the StakePool Operator.} -\end{figure} - -\noindent -The two main parameters that need to be set by the StakePool \emph{Operator} are the cost \emph{per day} that will be charged to -the pool (in \ada), $\textit{Pool}^{\textit{Cost}}$; and the percentage of any rewards that will subsequently be taken as a fee, ${\textit{Pool}}^{\textit{Margin}}$. -The cost is subtracted from the total rewards that are earned by the pool before any rewards are distributed. -These parameters are advertised by the StakePool and used as part of the public ranking scheme. - -\subsubsection*{Private Stake Pools} - -If the pool charge rate (${\textit{Pool}}^{\textit{Margin}}$) is set to 100\%, then the pool owner(s) will receive -all the rewards that are allocated to the StakePool. This effectively makes the StakePool ``private'': -all rewards that are earned for any stake that is delegated to the StakePool will be given to the owner(s). -An owner may still choose to divide their stake between their pledge and their delegated stake if they wish, of course. - -\subsubsection*{Sources of Rewards} - -Rewards are taken from three sources: - -\begin{enumerate} -\item - the monetary expansion distribution (Section~\ref{sec:expansion}); -\item - transaction fees (Section~\ref{sec:fees}); -\item - non-refundable deposits. -\end{enumerate} - -\noindent -In the Incentivised TestNet, only the first source is likely to be used. - -\subsubsection*{The Rewards that are received by a StakePool} - -The rewards that are received by a StakePool will be proportional to the total amount of \ada{} that it controls -as a fraction of the total \ada{} that is in circulation. The \emph{treasury top slice} is deducted from the total \emph{rewards} -for the epoch, then the remainder is distributed proportionately to each StakePool, depending on the stake it controls. In order to avoid domination by large StakePools, -in the MainNet, a rewards \emph{cap} will be applied to any single pool, based on the target number of StakePools, $N^{\textit{Pools}}$. -This is described in more detail in Section~\ref{sec:MainNet}. - -\clearpage -\begin{figure}[h!] -\begin{center} -\begin{tabular}{||l|p{9cm}|l||} - \hline \hline -\textbf{Parameter} & \textbf{Description} & \textbf{Calculated as} \\\hline -\textbf{\color{red} ${\textit{Pool}}^\textit{Pledge}$} & \textbf{\color{red} \ada{} that is pledged to the StakePool by the Owner(s)} & \\\hline -\textbf{\color{blue} ${\textit{Pool}}^\textit{Deleg}$} & \textbf{\color{blue} \ada{} that is delegated to the StakePool} & \\\hline -${\textit{Pool}}^{Tot}$ & All \ada{} that is controlled by the StakePool & ${\textit{Pool}}^\textit{Pledge} + {\textit{Pool}}^\textit{Deleg}$ \\\hline -${\textit{Pool}}^\%$ & Fraction of the \ada{} in circulation that is controlled by the StakePool & {\large $\frac{{\textit{Pool}}^{Tot}}{\textit{Ada}^{\textit{Circ}}}$} \\\hline - \hline -\end{tabular} -\end{center} -\caption{The \ada{} that is controlled by a StakePool.} -\end{figure} - -\noindent -The total \ada{} that a StakePool controls is the sum of the \ada{} that is \emph{pledged} to the StakePool by the owners(s) plus -the additional \ada{} that is \emph{delegated} to the StakePool. An owner may \emph{delegate} to a StakePool if -they wish as well as \emph{pledging} to it, but would receive lower rewards for their \emph{delegated} stake. -In return for receiving higher rewards, \emph{pledging} incurs higher risk, requiring owners to \emph{trust} each other. - - -\subsubsection*{The Rewards that are given to Owner(s) and Delegators} - -Once the pool operating charges are subtracted from the net rewards, any remaining reward is distributed to the owner(s) and delegators -in proportion to their pledged/delegated stake. % The Incentivised TestNet uses a simplified scheme for the owner reward calculations. - - -\clearpage -\section{The Simplified Incentives Scheme (Shelley Incentivised TestNet)} -\label{sec:TestNet} - -The simplified scheme calculates rewards based on the total number of blocks that each stake pool produces, -and distributes a fixed amount of \ada{} per epoch. -Since \cardano{} is based on \emph{proof of stake}, then on average, each stake pool will obtain -rewards that are proportional to the stake that it holds. So, if e.g. a pool holds 1\% of the total -\ada{} in circulation, then it will receive, on average, 1\% of the total rewards that are allocated to all the -StakePools. - -\begin{figure}[h!] -\begin{center} -\begin{tabular}{||l|l|p{10cm}|l||} - \hline \hline -\textbf{Parameter} & \textbf{Expected Value} & \textbf{Definition} \\\hline -%\textbf{\color{green} $N^{\textit{Pools}}$} & \textbf{\color{green} 50-100} &\textbf{\color{green} The Target Number of StakePools} \\\hline -\textbf{\color{green} $T$} & \textbf{\color{green} 10\%} & \textbf{\color{green} The Treasury Top Slice Percentage} \\\hline -\textbf{\color{green} $\textit{MER}$} & \textbf{\color{green} 10\%}& \textbf{\color{green} The ``Monetary Expansion Rate'' per Year}\\\hline -\textbf{\color{green} $\textit{DPE}$} & \textbf{\color{green} 1} & \textbf{\color{green} Days per Epoch: Duration of a \cardano{} Epoch} \\\hline - \hline -\end{tabular} -\end{center} -\caption{Settings for Key Operational Parameters in the Incentivised TestNet.} -\end{figure} - -\noindent -In the Incentivised TestNet, -% the target number of StakePools, $N^{\textit{Pools}}$ is expected to be 50-100 initially, but this will be increased as necessary to encourage the creation of more StakePools. -the target number of StakePools, $N^{\textit{Pools}}$, will not be considered in the first release. -The treasury top slice percentage, $T$ is fixed at 10\% of the total distribution per epoch (this is expected to be unchanged in the MainNet). -The monetary expansion rate, $\textit{Mer}$ is fixed at the equivalent of 10\% per annum, so that precisely 10\% of the \ada{} reserves would be distributed -if the TestNet were to run for one complete year, or precisely 2.5\% of the \ada{} reserves would be distributed if it were to run for 3 months. -For simplicity and to ensure that epoch changes occur frequently, in the Incentivised TestNet, the length of each epoch ($\textit{DPE}$) has been set to 1 day. - -% \begin{figure}[h!] -% \begin{center} -% \begin{tabular}{||l|l|p{6cm}|l||} -% \hline \hline -% \textbf{Parameter} & \textbf{Expected Value} & \textbf{Description} & \textbf{Calculated as} \\\hline -% %\textbf{\color{blue} \emph{P}} & \textbf{\color{blue} 100}\% & \textbf{\color{blue} Participation Rate in the TestNet} & \\\hline -% %$\textit{Ada}^{\textit{Circ}}_{\textit{Test}}$ & \ADA{31bn} @ $P=100\%$ & The \ada{} circulating in the TestNet & $P \times \textit{Ada}^{\textit{Circ}}$ \\\hline -% \hline -% \end{tabular} -% \end{center} -% \caption{\ada{} in Circulation in the Incentivised TestNet.} -% \end{figure} - -% \noindent -% The \emph{participation rate} is used to calculate the total amount of \ada{} that will circulate in the Incentivised TestNet. -% This rate is simply the percentage of the total \ada{} in circulation that is available to be staked in the Incentivised TestNet. -% It will be determined at the date when the -% TestNet launches and will then remain fixed. -% It is assumed that this is likely to be 20\%-50\% of the total \ada{} in circulation. - - -\begin{figure}[h!] -\begin{center} -\begin{tabular}{||l|l|p{6cm}|l||} - \hline \hline -\textbf{Parameter} & \textbf{Expected Value} & \textbf{Description} & \textbf{Calculated as} \\\hline -$\textit{Distr}_E$ & \ADA{3.84M} & Distribution per Epoch in the TestNet & $\frac{\textit{Ada}^{\textit{Rsv}} \times \textit{MER}}{365 \div \textit{DPE}}$ \\\hline -$T_E$ & \ADA{384K} & Treasury Top Slice per Epoch & $\textit{Distr}_E \times T$ \\\hline -$R_E$ & \ADA{3.45M} & Total Rewards per Epoch & $\textit{Distr}_E - T_E$ \\\hline - \hline -\end{tabular} -\end{center} -\caption{Total Distribution and Rewards per Epoch.} -\label{fig:distrib} -\end{figure} - -\noindent -The total \ada{} that is distributed per epoch in the Incentivised TestNet (${\textit{Distr}}_E$) is calculated from the initial -value of the \ada{} reserves, $\textit{Ada}^{\textit{Rsv}}$, and the fixed monetary expansion rate, \textit{MER}. -An equal distribution is given per epoch. The top slice that is allocated to the treasury ($T_E$) is -deducted from this distribution, and the remainder is then allocated to the StakePools as rewards ($R_E$). - -\subsubsection*{Transaction Fees in the Incentivised TestNet (possible addition)} - -Transaction fees are not considered initially in the Incentivised TestNet, but, if they are eventually included, would simply be allocated to -the Treasury in their entirety. Deposits will not be considered in the Incentivised Testnet. - -\subsection{The Rewards that are received by a StakePool per Epoch} - -\begin{figure}[h!] -\begin{center} -\begin{tabular}{||l|l|p{6cm}|l||} - \hline \hline -\textbf{Parameter} & \textbf{Expected Value} & \textbf{Definition} & \textbf{Calculated as} \\\hline - \textbf{\color{red} $\textit{\textit{Pool}}^{\textit{Cost}}$} & & \textbf{\color{red} Cost per day in \ada{}} & \\\hline -\textbf{\color{red} ${\textit{Pool}}^{\textit{Margin}}$} & \textbf{\color{red} 0\%-100\%} & \textbf{\color{red} Percentage charge on rewards (the ``margin'')} & \\\hline -\textbf{\color{red} ${\textit{Pool}}^\textit{Pledge}$} & & \textbf{\color{red} \ada{} that is pledged to the StakePool by the Owner(s)} & \\\hline -\textbf{\color{blue} ${\textit{Pool}}^\textit{Deleg}$} & & \textbf{\color{blue} \ada{} that is delegated to the StakePool} & \\\hline -${\textit{Pool}}^{Tot}$ & & All \ada{} that is controlled by the StakePool & ${\textit{Pool}}^\textit{Pledge} + {\textit{Pool}}^\textit{Deleg}$ \\\hline -% ${\textit{Pool}}^\%$ & & Fraction of the \ada{} in circulation that is controlled by the StakePool & {\large $\frac{{\textit{Pool}}^{Tot}}{\textit{Ada}^{\textit{Circ}}_{\textit{Test}}}$} \\\hline - ${\textit{Pool}}^\%$ & & Fraction of the \ada{} in circulation that is controlled by the StakePool & {\large $\frac{{\textit{Pool}}^{Tot}}{\textit{Ada}^{\textit{Circ}}_{\textit{Test}}}$} \\\hline -&&& \\\hline -% \textbf{\color{cyan} $N$} & & \textbf{\color{cyan} The expected Number of Blocks that the StakePool should produce} & \\\hline -% \textbf{\color{cyan} $n$} & & \textbf{\color{cyan} The Number of Blocks that are actually Produced by the StakePool} & \\\hline -% \emph{p} & & The Performance of the StakePool & $\frac{n}{N}$ \\\hline -% \textbf{\color{green} $N^{\textit{Pools}}$} &\textbf{\color{green} 50-1000} & \textbf{\color{green} The Target Number of StakePools} & \\\hline -% \emph{z} & 0.001-0.02 & The Rewards Limit Fraction & $\frac{1}{k}$ \\\hline -\hline -\end{tabular} -\end{center} -\caption{Parameters Governing the Rewards to a StakePool.} -\label{fig:rewards} -\end{figure} - -\noindent -The parameters governing the StakePool reward calculation are shown above. -% The only new -% parameters are $n$, $N$ and $z$. $n$ and $N$ are measured by the system; $z$ is calculated from the -% target number of StakePools, $N^{\textit{Pools}}$. These parameters limit the rewards that can be received by any StakePool. - -\clearpage -\begin{figure}[h!] -\begin{center} -\begin{tabular}{||l|p{7.8cm}|l||} - \hline \hline -\textbf{Parameter} & \textbf{Definition} & \textbf{Calculated as} \\\hline -%$R^{Gross'}$ & The Average Gross Reward to the StakePool & $R_E \times \textrm{min} (z,{\textit{Pool}}^\%)$ \\\hline -%$R^{\textit{Gross}}$ & The Actual Gross Reward to the StakePool & $R_E^{Gross'} \times \textrm{min} (100\%,p)$ \\\hline -%${\textit{Pool}}^{\textit{Cost}}_E$ & \textit{Pool} Operator Costs for the Epoch & $\textrm{min}((\textit{\textit{Pool}}^{\textit{Cost}} \times \textit{DPE}),R^{\textit{Gross}})$ \\\hline -%$R^{\textit{Net}}$ & The Net Reward to the StakePool & $R^{\textit{Gross}} - {\textit{Pool}}^{\textit{Cost}}_E$ \\\hline -${\textit{Pool}}^{\textit{Cost}}_E$ & \textit{Pool} Operator Costs for the Epoch & $\textrm{min}((\textit{\textit{Pool}}^{\textit{Cost}} \times \textit{DPE}),R_E)$ \\\hline -$R^{\textit{Net}}$ & The Net Reward to the StakePool & $R_E - {\textit{Pool}}^{\textit{Cost}}_E$ \\\hline -${\textit{Pool}}^{\textit{Charges}}_E$ & \textit{Pool} Charges for the Epoch & $R^{\textit{Net}} \times \textit{Pool}^{\textit{Margin}}$ \\\hline -$R^{Owner}$ & The Reward to the Owner(s) & $(R^{\textit{Net}}-\textit{Pool}^{\textit{Charges}}) \times {\textit{Pool}}^{\textit{Margin}} $ \\\hline -$R^{Deleg}$ & The Reward to the Delegators & $(R^{\textit{Net}}-\textit{Pool}^{\textit{Charges}}) - R^{Owner}$ \\\hline -$\textit{Owner}^\textit{Income}$ & The Total Pool Owner Income & ${\textit{Pool}}^{\textit{Cost}}_E + {\textit{Pool}}^{\textit{Charges}}_E + R^{Owner}$ \\\hline -\hline -\end{tabular} -\end{center} -\caption{Calculation of the Total Stake Pool Reward.} -\end{figure} - -\noindent -The gross reward that is received by the StakePool is, on average, directly proportional to the -stake that it controls, as a proportion of the total \ada{} that is in circulation. -% It is limited by the rewards limit fraction, and reduced in proportion to the ratio of blocks that it actually produced -% to the number of blocks that it expected to produce (the actual ``performance'' of the StakePool) to give $R^{\textit{Gross}}$. -Once the fixed pool operator cost and the variable pool charges\footnote{The cost is a fixed amount; the charges are calculated from the net rewards using the pre-set \emph{margin}, $\textit{Pool}^{\textit{Margin}}$}) are deducted, -the remaining reward is then distributed to the owner(s) and delegators in proportion to the -stake that each group controls. The StakePool owner income is then the total sum of the operator costs, the pool charges, -and the pool owner rewards. -Note that if there is insufficient gross reward to cover the operator costs, all the reward will be assigned to cover the -pool cost, leaving no further reward to be distributed to either the owners or delegators, that is the \emph{net reward} will be zero. - - -\subsubsection*{The Rewards that are received by each Delegator per Epoch} - -\begin{figure}[h!] -\begin{center} -\begin{tabular}{||l|p{9cm}|l||} - \hline \hline -\textbf{Parameter} & \textbf{Definition} & \textbf{Calculated as} \\\hline -${\textit{Pool}}^{Tot}$ & All \ada{} that is controlled by the StakePool & ${\textit{Pool}}^\textit{Pledge} + {\textit{Pool}}^\textit{Deleg}$ \\\hline -$R^{Deleg}$ & The Reward to the Delegators & $(R^{\textit{Net}}-\textit{Pool}^{\textit{Charges}}) - R^{Owner}$ \\\hline -$D^{Stake}$ & The \ada{} that is delegated by Delegator $D$ & \\\hline -$D^\%$ & The proportion of \ada{} in the StakePool that is delegated by $D$ & $\frac{D^{Stake}}{Pool^{Tot}}$ \\\hline -$D^{Rewards}$ & The \ada{} rewards that are received by $D$ & $R^{\textit{Deleg}} \times D^\%$ \\\hline -\hline -\end{tabular} -\end{center} -\caption{The Rewards that are received by a specific Delegator, $D$.} -\end{figure} - -\noindent -The rewards that are received by an individual delegator are directly proportional to the -stake that the delegator has placed in the StakePool, calculated from the net rewards to the -StakePool. This applies to the owner stake as well as to independent delegators. -If there are multiple owners, rewards will subsequently be distributed between them according to an external -agreement that will not be governed by or enforced by the TestNet. - -% \clearpage -% \subsubsection*{The Rewards that are received by each StakePool Owner per Epoch} - -% \begin{figure}[h!] -% \begin{center} -% \begin{tabular}{||l|p{6cm}|l||} -% \hline \hline -% \textbf{Parameter} & \textbf{Definition} & \textbf{Calculated as} \\\hline -% $R^\textit{Owner}$ & The Reward to the Owner(s) & $R^{\textit{Net}} \times {\textit{Pool}}^{\textit{Margin}} $ \\\hline -% $\textit{nOwners}$ & The total number of Owner(s) of the StakePool, $\textit{nOwners} \ge 1$ & \\\hline -% $O^{Rewards}$ & The \ada{} rewards that are received by owner $O$ & $R^\textit{Owner} \div \textit{nOwners}$ \\\hline -% \hline -% \end{tabular} -% \end{center} -% \caption{The Rewards that are received by a specific Owner $O$.} -% \end{figure} - -% \noindent -% In the Incentivised TestNet, the owner rewards are divided equally among the -% owners, regardless of the proportion of stake that they pledge. The assumption -% is that, in practice, each owner will pledge an equal amount of stake, but this -% is not enforced by the implementation. - -\subsection{Calculating Rewards in External Currencies} -\label{sec:conversion} - -\begin{figure}[h!] -\begin{center} -\begin{tabular}{||l|p{6cm}|l||} - \hline \hline -\textbf{Value} & \textbf{Description} & \textbf{Calculated as} \\\hline -$R_A$ & Rewards value in \ada{} &\\\hline -$ER_D$ & Dollar Price per \ada{} &\\\hline -$R_D$ & Rewards value in dollars & $R_A \times ER_D$ \\\hline -\hline -\end{tabular} -\end{center} -\caption{Calculating Rewards in Terms of Other Currencies} -\label{fig:monetary} -\end{figure} - -\noindent -As usual, rewards in \ada{} can easily be converted to an external dollar or other currency equivalent using -the current exchange rate, $ER_D$, as shown % in Figure~\ref{fig:monetary} -above. For example, if the rewards are \ADA{10,000} and the exchange rate is -\$0.039 (1 \ada{} is worth 3.9 cents). Realising this value would require the use of an \emph{exchange}, -of course. - -\clearpage -\subsection{Worked Example: Simplified Scheme} - - -\begin{minipage}{\textwidth} - This example is taken from the internal \IOHK{} spreadsheet calculator at -\url{https://docs.google.com/spreadsheets/d/1c-KmCNBIMZjHN7wdsrNx3ac1zT8xEqodK1OyZxC_QIk/edit#gid=1365573139}. -It has been used as the basis for the online calculator at \url{https://cardano-staking-site.netlify.com/en/}. - -\subsubsection*{Key Parameters} - -\noindent -\vspace{-0.5in} -\includegraphics[height=6in]{RCT1.pdf} -\vspace{-2in} - -\noindent -\includegraphics[width=1.2\textwidth]{RCT2.pdf} -\vspace{-1.9in} - -\noindent -This diagram shows the key parameters and settings for the rewards system, including the -rewards that are distributed from the reserves at each epoch. We assume a Treasury Top Slice -of 10\% and the target number of StakePools to be 100. The \ada{} in circulation and reserves -are the values as of September 24$^{th}$ 2019, rounded to the nearest ADA{1bn}. We further -assume a \emph{monetary expansion rate} of 10\% and that the TestNet will run for 180 days -(this is used to calculate the initial values of the \ada{} in circulation and in reserve -for the full incentives scheme). After the Treasury Top Slice is taken, the total -rewards per Epoch (or Day) that will be distributed to the StakePools is \ADA{3,452,054.79}. -\end{minipage} - -\clearpage -\subsubsection*{StakePool Parameters} -\includegraphics[width=1.2\textwidth]{RCT3.pdf} -\vspace{-0.5in} - -\noindent -This diagram shows the StakePool-specific parameters, including the total controlled \ada{} and the -division by owner(s) and delegators. Here, 98.71\% of the StakePool \ada{} is owned -by delegators. We choose a \emph{margin} for the pool charges of 2.00\% of the net income, -and a daily \emph{cost} of \ADA{256.41} (\$10). -The gross reward to the StakePool is precisely the expected reward, since it controls -exactly the required percentage of stake (1.00\%, corresponding to the limit set from -the $N^{\textit{Pools}}$ parameter). This is reduced in line with the StakePool's \emph{actual performance} -as observed by the system (here assumed to be 90\%), giving a \emph{penalty} that amounts -to \ADA{3452.05} per day. - -\clearpage -\subsubsection*{Calculated Rewards} - -\hspace{-0.65in}\begin{minipage}{\textwidth} - \includegraphics[width=1.2\textwidth]{RCT4.pdf} -\vspace{-3.8in} - -\includegraphics[width=1.2\textwidth]{RCT5.pdf} -\vspace{-3in} -\end{minipage} - -\noindent -This diagram shows the corresponding rewards that accrue to the owner(s) and delegators, -plus a calculation of the total income that is received by the owners. We will assume that the average -and actual gross rewards are the same, i.e. if the StakePool controls 1\% of the total \ada{} in -circulation, it will produce exactly 1\% of the blocks, and it would therefore receive exactly 1\% of the total rewards -as its \emph{average gross rewards}. -The \emph{actual gross rewards}, $R^{\textit{Gross}}$ reduce this by its -\emph{actual performance} in epoch $E$, giving 0.9\% of the total rewards. -In total, the -owners and delegators to this StakePool would receive a net reward that was equivalent to 7.11\% per year -(the ``staking yield''). -We assume that the owners have agreed an equal distribution of rewards. -If there were 4 owners for the StakePool, each would then receive -25\% of the owner rewards, i.e. $\ADA{158,121.42} \div 4 ~~=~~ \ADA{39,530.355}$. -Similarly, a delegator contributing 10\% of the delegated stake would receive 10\% of -the delegator reward, i.e., $\ADA{12,096,288.83} \div 10 ~~=~~ \ADA{1,209,628.8883}$. -If we assume that the pool operating cost is accurate, then the net income to the pool owner(s) would be the sum of the -pool charges and the rewards, i.e. \ADA{367,140.88} or a net return of 18.36\% of the owners' stake. - - -\subsection{How Rewards are returned to Owners and Delegators} -\label{sec:rewards-return} - -In the Incentivised Testnet, rewards will be calculated following the end of the epoch, -and returned to wallets as part of the transition to the MainNet. This will be achieved -using the instantaneous rewards return mechanism that is described below. - -\begin{itemize} - \item - When the testnet terminates, a snapshot will be taken in order to calculate the rewards that were earned. - The result will be a mapping of stake keys to rewards as a whole number of Lovelace. - \item - The MIR certificate (``move instantaneous rewards'') will contain a mapping of stake credentials (that are derived from the stake keys) - to Lovelace amounts. These values will be auditable and visible on the blockchain. - Any transaction containing one of these certificates must be entirely - signed by a \emph{quorum} of core nodes (currently set to be five or more). - \item - When the ledger processes a valid MIR certificate, it will ignore any stake credential that is not registered with the system. - All the stake keys in the snapshot will be registered by \IOHK{}. A deposit may be charged for the registration. - \item - The Lovelace values from all valid MIR certificates will be transferred from the \ada{} reserves - to the relevant reward accounts. - \end{itemize} - - \khcomment{TODO: Verify that the Testnet rewards will not be added to stake pots. - This is still not clear from the Testnet documentation, and they are less than two weeks from release. - It's probably best not } - -\clearpage -\section{The Full Incentives Scheme (Shelley MainNet Implementation)} -\label{sec:MainNet} - -The full incentives scheme that will be used in the MainNet adds several additional aspects to the -simple scheme above: - -\begin{enumerate} -\item - Transaction fees that are added to the gross rewards; -\item - StakePool deposits, part of which are also added to the gross rewards; -\item - An ``influence factor'', that determines how much influence the owner(s)' stake has on - the desirability of a StakePool; -\item - A monetary expansion rate that varies over time (decreasing in an exponential way); -\item - The performance of the system as a whole is taken into account; -\item - The \emph{apparent performance} of the StakePool rather than its \emph{actual performance}. -\end{enumerate} - -\noindent -In addition, the number of days per epoch will be changed. Collectively, these changes implement the \emph{non-myopic rewards} scheme of~\cite{delegation_design,bkks2018}. - -\begin{figure}[h!] -\begin{center} -\begin{tabular}{||l|p{13cm}||} - \hline \hline - \textbf{Parameter} & \textbf{Definition} \\\hline -\textbf{\color{green} $\textit{inf}$} & \textbf{\color{green} The influence Factor. The influence that the owner(s)' stake has on the - desirability of a pool. This is a finite positive number, with 0 being no influence, and larger numbers being more influence. } \\\hline -\textbf{\color{cyan} $\textit{Perf}_E$} & \textbf{\color{cyan} The ratio of the number of blocks that were actually produced in Epoch $E$ to the expected average number of blocks that should be produced in an Epoch. - This will be derived from the number of slots in the Epoch.} \\\hline -\textbf{\color{cyan}$\textit{Fees}_E$} & \textbf{\color{cyan}All the transaction fees for Epoch $E$} \\\hline -\textbf{\color{cyan}$\textit{Deposits}_E$} & \textbf{\color{cyan} The non-refundable deposits for Epoch $E$} \\\hline -\textbf{\color{cyan} $\textit{MER}_E$} & \textbf{\color{cyan} The ``Monetary Expansion Rate'' for Epoch $E$}. \newline \textbf{\color{cyan} \emph{See Section~\ref{sec:expansion}.}} \\\hline -\hline -\end{tabular} -\end{center} -\caption{New Parameters used in the MainNet Incentives Calculation.} -\end{figure} - -\clearpage -\begin{figure}[h!] -\begin{center} -\begin{tabular}{||l|l|p{6cm}|l||} - \hline \hline -\textbf{Parameter} & \textbf{Expected Value} & \textbf{Description} & \textbf{Calculated as} \\\hline -${\textit{Distr}}^{Test}$ & & The total Distribution of \ada{} that will be made by the Incentivised TestNet & \\\hline -$\textit{Ada}^{\textit{Circ}}_{0}$ & \ADA{31-31.5bn} & The \ada{} that is initially circulating in the MainNet & $\textit{Ada}^{\textit{Circ}}_{\textit{Test}} + {\textit{Distr}}^{\textit{Test}}$ \\\hline -$\textit{Ada}^{\textit{Rsv}}_{0}$ & \ADA{14-14.5bn} & The total \ada{} in the reserves at Shelley MainNet launch & $\textit{Ada}^{Tot} - \textit{Ada}^{\textit{Circ}}_{0}$ \\\hline -\hline -\end{tabular} -\end{center} -\caption{The \ada{} that is Initially in Circulation in the MainNet.} -\end{figure} - -\noindent -The total \ada{} that will initially circulate in the MainNet, that is the \ada{} in circulation in Epoch 0 of the MainNet, -$\textit{Ada}^{\textit{Circ}}_{0}$ will be the \ada{} that was in circulation at the launch of the Incentivised -TestNet plus the total distribution that was made over the period of operation of the TestNet. -Since an equal amount of \ada{} is distributed per epoch in -the TestNet, -the distribution is will just be the multiple of the number of epochs that the Incentivised TestNet has -been active and the rewards distribution that has been made in each epoch. - - -\begin{figure}[h!] -\begin{center} -\begin{tabular}{||l|p{2.4cm}|p{6cm}|p{3.9cm}||} - \hline \hline -\textbf{Parameter} & \textbf{Expected Initial Value} & \textbf{Description} & \textbf{Calculated as} \\\hline -$\textit{E}$ & $0$ & The Current MainNet Epoch, $0 \le E \le \infty$ & \\\hline -\textbf{\color{green} $\textit{DPE}$} & \textbf{\color{green} 5} & \textbf{\color{green} Days per Epoch: Duration of a \cardano{} Epoch} & \\\hline -\textbf{\color{cyan} $\textit{Fees}_E$} & & \textbf{\color{cyan} All the transaction fees for Epoch $E$} & \\\hline -\textbf{\color{cyan} $\textit{Deposits}_E$} & & \textbf{\color{cyan} The non-refundable deposits for Epoch $E$} & \\\hline -$\textit{MER}_E$ & 10\%-15\% & The ``Monetary Expansion Rate'' for Epoch $E$ & \emph{See Section~\ref{sec:expansion}.} \\\hline -$\textit{Perf}_E$ & 80\%-100\% & The Overall Performance of the MainNet in Epoch $E$ & \\\hline -$\textit{Distr}_E$ & approx. \ADA{62M} & Gross Distribution for Epoch $E$ & \begin{flushleft}$\textit{Ada}^{\textit{Rsv}}_E \times \textit{MER}_E \times \textrm{min}(\textit{Perf}_E, 100\%)$ \end{flushleft} \\\hline -$\textit{Ada}^{\textit{Circ}}_E$ & approx. \ADA{31.5bn} & \ada{} in circulation in Epoch $E$ & $\textit{Ada}^{\textit{Circ}}_{E-1} + \textit{Distr}_E$ \\\hline -$\textit{Ada}^{\textit{Rsv}}_E$ & approx. \ADA{14.5bn} & \ada{} in reserve in Epoch $E$ & $\textit{Ada}^{\textit{Rsv}}_{E-1} - \textit{Distr}_E$ \\\hline -$R_E$ & approx. \ADA{56M} & Total Rewards per Epoch & $ (\textit{Distr}_E + \textit{Fees}_E + \textit{Deposits}_E) \div (\textit{inf}+1)$ \\\hline - \hline -\end{tabular} -\end{center} -\caption{Total Distribution and Rewards per Epoch in the MainNet, with expected values for the first MainNet Epoch (Epoch 0).} -\end{figure} - -\noindent -In the MainNet, the gross rewards distribution will depend on the current MainNet Epoch, $E$, and will reduce over time. -The total \ada{} that is distributed during epoch $E$ in the MainNet (${\textit{Distr}}_E$) is calculated from the current -value of the \ada{} reserves, $\textit{Ada}^{\textit{Rsv}}_E$, and the variable \emph{monetary expansion rate} that is in force for -the current epoch, $\textit{MER}_E$. -% -This distribution is restricted by the \emph{overall performance}, $\textit{Perf}_E$, which is defined as a fraction of the \emph{expected performance} during Epoch $E$. -% -The reserves will be depleted by the amount of new \ada{} that is distributed in the Epoch, $\textit{Distr}_E$. This gives the -value of the reserve for the next Epoch, $\textit{Ada}^{\textit{Rsv}}_{E+1}$. The \ada{} in circulation, $\textit{Ada}^{\textit{Circ}}_{E+1}$ -is correspondingly increased by the amount that has been distributed. -% -Fees and non-returned deposits are added to the reward distribution. This total distribution is then modified by the \emph{influence factor} -(the higher the influence factor, the lower the total rewards) to give the total rewards per epoch, $R_E$. - -\subsection{The Monetary Expansion Rate} -\label{sec:expansion} - -\begin{figure}[h!] - \begin{center} - \includegraphics[width=0.75\textwidth]{AdaPerYear.pdf} -\\[2ex] - \includegraphics[width=0.75\textwidth]{Rewards.pdf} - \end{center} - \caption{Ada Rewards over Time, assuming $R^{\textit{Avg}}$=0.05, $\textit{Fee}_E$=2000, $\textit{Perf}_E=100\%$.} -\end{figure} - -\noindent -The monetary expansion rate for Epoch $E$ is determined by the following equation: - -$$ -\textit{MER}_E ~~=~~ \frac{\textit{Ada}^{Circ}_E \times (\sqrt[\textit{EPY}]{1+R^{\textit{Avg}}} - 1) - (1- T) \times \textit{Fees}_E} - {(1-T) \times \textit{min}(\textit{Perf}_E,100\%) \times (\textit{Ada}^{Tot} - Ada^{Circ}_E)} -$$ - -\noindent -where $R^{\textit{Avg}}$ is the expected average rewards per \ada{} per year, and $\textit{EPY}$ is the number of epochs per year (73 in non-leap years if -$\textit{DPE} = 5$). $T$ is the pre-defined Treasury Top Slice (initially 10\%). -% -Assuming $R^{\textit{Avg}}$=0.05, $\textit{Fee}_E$=2000, and $\textit{Perf}_E=99\%$, with the other values as above, then we obtain -$\textit{MER}_0 = 0.00178650067$, equating to monetary expansion of 13.04\% over a year. - -\subsection{Transaction Fees} -\label{sec:fees} - -The fee for each transaction $t$ is calculated as follows: - -$$ -\textit{Fee} (t) ~=~ a + b \times \textit{size}(t) -$$ - -\noindent -where $a$ is a fixed fee for each transaction, and $b$ calculates an additional fee from the transaction size ($\textit{size}(t)$). -This size function may be an abstract representation (e.g. the impact of the transaction on the size of the blockchain) rather than e.g. -the actual physical size of the transaction. - -\clearpage -\subsection{The Rewards that are received by a StakePool for Epoch $E$} - -\begin{figure}[h!] -\begin{center} -\begin{tabular}{||l|l|p{6cm}|l||} - \hline \hline -\textbf{Parameter} & \textbf{Expected Value} & \textbf{Definition} & \textbf{Calculated as} \\\hline -\textbf{\color{red} $\textit{\textit{Pool}}^{\textit{Cost}}$} & & \textbf{\color{red} Cost per day in \ada{}} & \\\hline -\textbf{\color{red} ${\textit{Pool}}^{\textit{Margin}}$} & \textbf{\color{red} 0\%-100\%} & \textbf{\color{red} Percentage chargee on rewards (the ``margin'')} & \\\hline -\textbf{\color{red} ${Pool}^\textit{Pledge}$} & & \textbf{\color{red} \ada{} that is pledged to the StakePool by the Owner(s)} & \\\hline -\textbf{\color{blue} ${\textit{Pool}}^\textit{Deleg}$} & & \textbf{\color{blue} \ada{} that is delegated to the StakePool} & \\\hline -${\textit{Pool}}^{Tot}$ & & All \ada{} that is controlled by the StakePool & ${\textit{Pool}}^\textit{Pledge} + {\textit{Pool}}^\textit{Deleg}$ \\\hline -${\textit{Pool}}^\%$ & & Fraction of the \ada{} in circulation that is controlled by the StakePool & {\large $\frac{{\textit{Pool}}^{Tot}}{\textit{Ada}^{\textit{Circ}}_E}$} \\\hline -${\textit{Pledge}}^\%$ & & Fraction of the \ada{} in circulation that is \emph{pledged} to the StakePool by the Owner(s) & {\large $\frac{{\textit{Pool}}^{Pledge}}{\textit{Ada}^{\textit{Circ}}_E}$} \\\hline -&&& \\\hline -\textbf{\color{green} $N^{\textit{Pools}}$} & \textbf{\color{green} 50-1000} & \textbf{\color{green} The Target Number of StakePools} & \\\hline -\emph{z} & 0.001-0.02 & The Rewards Limit Fraction & $\frac{1}{k}$ \\\hline -&&& \\\hline -\textbf{\color{cyan} $\textit{Pool}^{\textit{Perf}}$} & & \textbf{\color{cyan} The \emph{Apparent Performance} of the StakePool} & \\\hline - \hline -\end{tabular} -\end{center} -\caption{Parameters Governing the Rewards to a StakePool in a given Epoch, $E$.} -\label{fig:rewards-MainNet} -\end{figure} - -\noindent -The parameters that govern the StakePool reward calculation are shown above. Compared with the Incentivised -TestNet, the only new parameters are the effective rewards rate to the owner(s), $s'$, the apparent performance of the StakePool, $\textit{Pool}^{\textit{Perf}}$, -and the target number of StakePools, $N^{\textit{Pools}}$. -In the MainNet, $N^{\textit{Pools}}$ is expected is expected to be 50-100 initially, but this will be increased as necessary to encourage the creation of more StakePools. -It will therefore rise over time, up to about 1000 for the fully decentralised MainNet. - -The effective rewards rate limits the rewards that the owners can receive. The \emph{apparent performance} of a StakePool is calculated -by dividing the fraction of blocks that the StakePool has created by the fraction of the total stake that it controls. This may be more than 100\%. - -\clearpage -\begin{figure}[h!] -\begin{center} -\begin{tabular}{||l|p{6cm}|l||} - \hline \hline - \textbf{Parameter} & \textbf{Definition} & \textbf{Calculated as} \\\hline - $s^\%$ & The \emph{effective} stake & $\textrm{min} (z,{\textit{Pool}}^\%)$ \\\hline - $p^\%$ & The \emph{effective} pledge & $\textrm{min} (z,{\textit{Pledge}}^\%) $ \\\hline - $\textit{R}^\textit{Factor}$ & Overall StakePool rewards factor, taking into account the influence factor and rewards limit. & $s^\% \times \textit{inf} \times ((s^\% - p^\% \times (z - s^\%)) \div z)$ \\\hline - $R^{Optimal}$ & The Optimal Gross Reward to the StakePool. \textbf{This will be reduced to 0 if any Owner(s)' \emph{pledge} is not honoured.} & $R_E \times \textit{R}^{Factor}$ \\\hline -$R^{\textit{Gross}}$ & The Actual Gross Reward to the StakePool & $R^{Optimal} \times \textit{Pool}^{\textit{Perf}}$ \\\hline -${\textit{Pool}}^{\textit{Cost}}_E$ & Pool Operator Costs for the Epoch & $\textrm{min}(\textit{\textit{Pool}}^{\textit{Cost}} \times \textit{DPE},R^{\textit{Gross}})$ \\\hline -$R^{\textit{Net}}$ & The Net Reward to the StakePool & $R^{\textit{Gross}} - {\textit{Pool}}^{\textit{Cost}}_E$ \\\hline -${\textit{Pool}}^{\textit{Charges}}_E$ & \textit{Pool} Charges for the Epoch & $R^{\textit{Net}} \times \textit{Pool}^{\textit{Margin}}$ \\\hline -$R^{Owner}$ & The Reward to the Owner(s) & $(R^{\textit{Net}}-\textit{Pool}^{\textit{Charges}}) \times {\textit{Pool}}^{\textit{Margin}} $ \\\hline -$R^{Deleg}$ & The Reward to the Delegators & $(R^{\textit{Net}}-\textit{Pool}^{\textit{Charges}}) - R^{Owner}$ \\\hline -\hline -\end{tabular} -\end{center} -\caption{Calculation of the Total Stake Pool Reward (MainNet).} -\end{figure} - -\noindent -As before, the gross reward that is received by the StakePool is, on average, directly proportional to the -stake that it controls, as a proportion of the total \ada{} that is in circulation. -The \emph{optimal} reward is limited by the pre-calculated \emph{rewards limit fraction}, and is further reduced in -proportion to its \emph{apparent performance}, $\textit{Pool}^{\textit{Perf}}$. -Once the pool operator costs are subtracted, -the net reward is then distributed to the owner(s) and delegators. -The delegator reward is calculated as in the Incentivised TestNet, in proportion to the stake that has -been delegated to the StakePool. -The owner(s) reward is, however, limited by $p^\%$, the \emph{effective rewards rate} to the owner(s). -% -The StakePool owner income is then the sum of the operator costs and the pool owner rewards. -\textbf{Note that, as before, if there is insufficient gross reward to cover the operator costs, all the reward will be used to cover those -costs, leaving no further reward to be distributed to the either owners or delegators. -Note also that if any Owner withdraws their \emph{pledge} from the StakePool, no rewards will be received by the Owner(s) or the Delegator(s).} - -\clearpage -\subsubsection*{The Rewards that are received by each Delegator for Epoch $E$} - -\begin{figure}[h!] -\begin{center} -\begin{tabular}{||l|p{9cm}|l||} - \hline \hline -\textbf{Parameter} & \textbf{Definition} & \textbf{Calculated as} \\\hline -${\textit{Pool}}^{Tot}$ & All \ada{} that is controlled by the StakePool & ${\textit{Pool}}^\textit{Pledge} + {\textit{Pool}}^\textit{Deleg}$ \\\hline -$R^{Deleg}$ & The Reward to the Delegators & $(R^{\textit{Net}}-\textit{Pool}^{\textit{Charges}}) - R^{Owner}$ \\\hline -$D^{Stake}$ & The \ada{} that is delegated by Delegator $D$ & \\\hline -$D^\%$ & The proportion of \ada{} in the StakePool that is delegated by $D$ & $\frac{D^{Stake}}{Pool^{Tot}}$ \\\hline -$D^{Rewards}$ & The \ada{} rewards that are received by $D$ & $R^{\textit{Deleg}} \times D^\%$ \\\hline -\hline -\end{tabular} -\end{center} -\caption{The Rewards that are received by a specific Delegator, $D$.} -\end{figure} - -\noindent -The rewards that are received by an individual delegator are calculated in exactly the same way as in -the Incentivised TestNet. Each delegator receives rewards that are directly proportional to the -stake that that delegator has placed in the StakePool. These are calculated from the net rewards to the -StakePool after deducting the owner rewards. - -\subsubsection*{The Rewards that are received by each StakePool Owner for Epoch $E$} - -\begin{figure}[h!] -\begin{center} -\begin{tabular}{||l|p{9cm}|l||} - \hline \hline -\textbf{Parameter} & \textbf{Definition} & \textbf{Calculated as} \\\hline -$R^\textit{Owner}$ & The Reward to the Owner(s). & $R^{\textit{Net}} \times {\textit{Pool}}^{\textit{Margin}}$ \\\hline -$O^\textit{Stake}$ & The \ada{} that is pledged by Owner $O$ & \\\hline -$O^\%$ & The proportion of \ada{} in the StakePool that is pledged by $O$ & $\frac{O^{Stake}}{Pool^{Tot}}$ \\\hline -$O^{Rewards}$ & The \ada{} rewards that are received by $O$. This may be capped if the owner fraction is too large, -as described in Section~\ref{sec:penalties}, or reduced to zero if any owner fails to honour their pledge. & $R^{\textit{Net}} \times O^\%$ \\\hline -\hline -\end{tabular} -\end{center} -\caption{The Rewards that are received by each Owner, $O$.} -\end{figure} - -\noindent -In the MainNet, each owner receives rewards that are proportional to the stake that they have pledged, -calculated similarly to the delegator rewards. If one or more StakePool owners withdraw their pledge during the epoch, -however, then no owner rewards will be received by any owner of that StakePool. - - -\clearpage -\subsection{The Rewards that are allocated to the Treasury for Epoch $E$} - -In the MainNet, all rewards that are not allocated to StakePools will accrue to the treasury. This will include some fraction of the -monetary expansion $\textit{MER}_E$, plus any penalties. This will always be a positive value. - -\subsubsection*{StakePool Rewards Penalties} -\label{sec:penalties} - -Any rewards that are not allocated to a StakePool will accrue to the Treasury instead. This can happen: % \khcomment{Check this.} - -\begin{enumerate}[i)] -\item - because of poor \emph{apparent performance}, $\textit{Pool}^{\textit{Perf}}$; -\item - because one or more owners of a StakePool have failed to honour their \emph{pledge} (in which case \textbf{all} reward will accrue to the Treasury); -\item - because the StakePool as a whole has exceeded the target size as governed by the $N^{\textit{Pools}}$ and $z$ parameters; -\item - because the Owner(s)' stake has exceeded the target size as governed by the $N^{\textit{Pools}}$ and $z$ parameters. -\end{enumerate} - -\noindent -Returning the rewards to the Treasury ensures that the \ada{} remains in circulation and can be re-allocated in future. - - - -\subsection{Calculating Rewards in External Currencies} - -Rewards can be converted to other currencies using the current exchange rate, exactly as described in -Section~\ref{sec:conversion}. Realising these funds will require the use of an external \emph{exchange} service. - -\clearpage -\subsection{Worked Example: Full Scheme} - -This example is taken from the \IOHK{} internal calculator at -\url{https://docs.google.com/spreadsheets/d/1m_CfNMdkxR_OrfRwThbU-6faxHUf7NdIhDLc6r-4lIM/edit#gid=1365573139}. - -\subsubsection*{Key Parameters} - -\hspace{-0.65in}\begin{minipage}{\textwidth} -\noindent\includegraphics{RCM0.pdf} -\vspace{-7in} - -\noindent\includegraphics{RCM1.pdf} -\vspace{-3in} -\end{minipage} - -\noindent -This diagram shows the key parameters and settings for the rewards system, including the initially -circulating and reserve \ada{}. The monetary expansion rate is calculated as described above. -The number of days per Epoch is set to 5, the influence factor to 0.1, the system performance -to 99\%, the average transaction fees to \ADA{2,000} and the expected rewards rate to 0.05. -These parameters are used as part of the monetary expansion rate calculation. - - -\subsubsection*{Circulation and Distribution} - -\hspace{-0.65in} -\includegraphics[width=1.6\textwidth]{RCM2.pdf} - -\noindent -The upper part of this diagram shows the \ada{} that is distributed for Epoch E, assuming the overall system performance of 99\%, -retained deposits of \ADA{500} and transaction fees of \ADA{2,000}. The total distribution for the -Epoch is \ADA{56,051,291.02}. These are reduced by the Treasury Top Slice and the influence factor -to give the rewards that are distributed to the pools of \ADA{46,323,360.35}. -% -The lower part of the diagram shows the \ada{} in circulation and the reserves at the start and end of the Epoch. - -\subsubsection*{StakePool Parameters} - -\hspace{-0.65in} -\includegraphics[width=1.25\textwidth]{RCM3.pdf} - -\noindent -This diagram shows the StakePool-specific parameters, including the total controlled \ada{} and the -division by owner(s) and delegators. In the MainNet, 99.37\% of the StakePool \ada{} is owned -by delegators. The StakePool receives all of its optimal rewards, since it controls -exactly the required percentage of stake (1.00\%, corresponding to the limit set from -the $N^{\textit{Pools}}$ parameter). - -\subsubsection*{Calculated Rewards} - -\hspace{-0.65in}\begin{minipage}{\textwidth} - \noindent \includegraphics[width=1.2\textwidth]{RCM4.pdf} - - \vspace{-3in} - \noindent \includegraphics[width=1.2\textwidth]{RCM5.pdf} - - \vspace{-2.8in} -\end{minipage} - -\noindent -This diagram shows the corresponding rewards that accrue to the owner(s) and delegators, -plus a calculation of the total income that is received by the owners. As before, we will assume that the average -and actual gross rewards are the same, i.e. if the StakePool controls 1\% of the total \ada{} in -circulation, it will produce exactly 1\% of the blocks, that it has 100\% performance, and will therefore receive exactly 1\% of the rewards. -In total, the -owners and delegators to this StakePool would receive a net reward that was equivalent to 8.33\% per year -(the ``staking yield''), representing a 17\% better return than with the simplified scheme. -The final rows calculate the \emph{non-myopic} rewards (i.e. long-term rewards that ensure -a stable and well-functioning system). As described in~\cite{delegation_design}, these values will be used to guide stakeholder behaviour -through a ranking system that will encourage convergence to the $N^{\textit{Pools}}$ best-performing pools. -For this pool, which is \emph{saturated}, the non-myopic rewards are identical to the \emph{optimal rewards}. -\khcomment{Is this always the case?} -Rewards will be returned as described in Section~\ref{sec:rewards-return}. In the MainNet, when multiple -owners are involved, this return could be through a multi-signature transaction~\cite{shelley_multisig}, according to an agreed -formula. - -\subsubsection*{Delegator Rewards} - -\hspace{-0.65in}\begin{minipage}{\textwidth} - \includegraphics[width=1.2\textwidth]{RCM6.pdf} - -\vspace{-3.8in} -\includegraphics[width=1.2\textwidth]{RCM7.pdf} - - \vspace{-3in} -\end{minipage} - -\noindent -This diagram shows the rewards that a stakeholder would receive over time if they delegated \ADA{1,000,000} to -the sample pool under the assumptions used above. In total, this would represent 0.65\% of the stake -that is delegated to the incentivised TestNet pool, or 0.32\% of the stake that is delegated to the MainNet pool. -Overall, the staking yield would be 7.11\% for the simplified scheme, or 8.33\% for the full scheme, representing -a return of \ADA{70K}-\ADA{80K} over a year. - -\clearpage -\subsection{Summary of Differences between the Two Incentives Schemes} -\label{sec:summary} - -\begin{figure}[h!] -\begin{center} -\begin{tabular}{||l|p{4cm}|p{4cm}||} - \hline\hline - \textbf{Value} & \textbf{Incentivised TestNet} & \textbf{MainNet} - \\\hline -Treasury Top Slice Percentage -& Fixed at 10\% -& Initially set to 10\% but can be changed in future by a community vote - \\\hline -Monetary Expansion Rate per Year -& Fixed at 10\% -& Exponential decay from ~10\% - \\\hline - Target Number of Stake Pools, $N^{\textit{Pools}}$ - & -%\multicolumn{2}{|p{8cm}||}{ -%Identical effect, the MainNet settings will be determined based on feedback from the TestNet. - None. - & -$N^{\textit{Pools}}$ is expected to grow over time and may reach around 1000. - It will initially be set low (probably 50 or 100). % } - \\\hline -%% No longer relevant? -% Participation -% & Any stakeholder can participate if they hold ADA as of a specific date -% & Any stakeholder can participate if they hold ADA -% \\\hline -Transaction Fees -& None -& Included in the reward pot - \\\hline -Registration Deposits -& None -& Non-refundable parts included in the reward pot - \\\hline -Influence Factor ($\textit{inf}$) -& None -& Included in calculation, initially set to 0.1 - \\\hline -StakePool Performance -& Actual block creation considered -& Directly affects rewards, any ``penalty'' accrues to the treasury - \\\hline -Owner Rewards -& Divided equally amongst multiple Owners -& Owners can decide proportions using a smart contract - \\\hline -ADA that affects rewards -& All ADA that is circulating in the TestNet -& All ADA that is in circulation - \\\hline -Stake pledged by owners -& Assumed to be fully pledged -& % Will be reserved for the duration of the pledge -Affects rewards if not honoured - \\\hline -Epoch duration ($E$) -& Fixed to 1 day -& Set to 5 days initially (but community vote can change) - \\\hline -Treasury Fraction ($T$) -& Fixed at 10\% -& All rewards that are not distributed to the StakePools - \\\hline -\hline -\end{tabular} -\end{center} -\caption{Differences between the Incentivised TestNet and the MainNet} -\end{figure} - -\clearpage -\bibliographystyle{habbrv} -\bibliography{references} - -\clearpage -\appendix - -\section{Summary of Differences in terminology etc. to \cite{delegation_design}} -\label{app:diffs} - - -\begin{itemize} -\item - SL-D1 only considers the full incentives calculation, not the simplified one, or how - rewards are to be transferred to the MainNet. -\item - SL-D1 does not distinguish the StakePool Operator and Owner(s). -\item - SL-D1 does not use the terms ``Control'' or ``Distribution''. -\item - This document uses terminology that is intended to convey the purpose of specific symbols - in SL-D1. The main differences are shown below. - - \begin{center} - \begin{tabular}{||l|l||}\hline\hline - \textbf{SL-D1} & \textbf{This Document} \\ \hline - $a_0$ & $\textit{inf}$ \\ \hline - $\eta$ & $\textit{Perf}_E$ \\ \hline - $k$ & $N^{\textit{Pools}}$ \\ \hline - $\bar{p}$ & $\textit{Pool}^{\textit{Perf}}$ \\ \hline - $\rho$ & $\textit{MER}$ \\ \hline - $s$ & $\textit{Pool}^{\textit{Pledge}}$ \\ \hline - $s'$ & $\textit{p}^{\%}$ \\ \hline - $\sigma$ & $\textit{Pool}^{\textit{Perf}}$ \\ - $\sigma'$ & $\textit{s}^{\%}$ \\ \hline - $\tau$ & $T$ \\ \hline - $T_{\infty}$ & $\textit{Ada}^{Tot}$ \\ \hline - $z_0$ & $z$ \\ \hline -\hline -\end{tabular} -\end{center} -\end{itemize} - -\end{document} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: t -%%% End: diff --git a/eras/shelley/formal-spec/intro.tex b/eras/shelley/formal-spec/intro.tex deleted file mode 100644 index 47d06393595..00000000000 --- a/eras/shelley/formal-spec/intro.tex +++ /dev/null @@ -1,56 +0,0 @@ -\section{Introduction} -\label{sec:introduction-shelley} - -This document is a formal specification of the functionality of the ledger on the blockchain. -This includes the blockchain layer determining what is a valid block, -but does not include any concurrency issues such as chain selection. -The details of the background and the larger context -for the design decisions formalized in this document are presented -in~\cite{delegation_design}. - -In this document, -we present the most important properties that any implementation of the ledger must have. -Specifically, we model the following aspects -of the functionality of the ledger on the blockchain: - -\begin{description} -\item[Preservation of value] Every coin in the system must be accounted for, - and the total amount is unchanged by every transaction and epoch change. - In particular, every coin is accounted for by exactly one of the following categories: - \begin{itemize} - \item Circulation (UTxO) - \item Deposit pot - \item Fee pot - \item Reserves (monetary expansion) - \item Rewards (account addresses) - \item Treasury - \end{itemize} -\item[Witnesses] Authentication of parts of the transaction data by means of - cryptographic entities (such as signatures and private keys) contained in - these transactions. -\item[Delegation] Validity of delegation certificates, which delegate - block-signing rights. -\item[Stake] Staking rights associated to an address. -\item[Rewards] Reward calculation and distribution. -\item[Updates] The update mechanism for Shelley protocol parameters and software. -\end{description} - -While the blockchain protocol is a reactive system that is driven by the arrival -of blocks causing updates to the ledger, the formal description is a collection -of rules that compose a -static description of what a \textit{valid ledger} is. A valid ledger state can only -be reached by applying a sequence of inference rules and any valid ledger state -is reachable by applying some sequence of these rules. -The specifics of the semantics we use to define and apply -the rules we present in this document are explained in detail in -\cite{small_step_semantics} (this document will really help the reader's -understanding of the contents of this specification). - -The structure of the rules that we give here is such that their application is -deterministic. That is, given a specific initial state and relevant environmental -constants, there is no ambiguity -about which rule should be applied at any given time (i.e.~which state -transition is allowed to take place). This property ensures that the specification -is totally precise --- no -choice is left to the implementor and any two implementations must -behave the same when it comes to deciding whether a block is valid. diff --git a/eras/shelley/formal-spec/iohk-share-logo.jpg b/eras/shelley/formal-spec/iohk-share-logo.jpg deleted file mode 100644 index 9c864e184c9115ae3013c592fcbec14b8d4410be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9689 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

o`uVjDmA(L||yu-wD^%}poa z=j=bTuMIYx7Yfq&wB`7OGz0b+Ouy)+F}M<-Q%fZ`eY~A(7c#ZNM_b~ZZWu%L%PlNj zIaV16K3-zwT3#H8TG0sz>cpI4Hg2!^-n#tFck0Q;`hzx@ok7@(4Z$}As{GZ<@;pWv zAx*fSyhfX!$y0rMknImY1HQavOz>P|H>5YNmV6%cVt(t|w(|989g1X}3(E1^*W7%g zE08kVqV*!L8l2brD`;Q}tLJ7V?!`MyX$1Nh=xA;sM^4>fB#OQ`_bQxj5vSo|2wB$B z6K0P!KXI9zYZrQ5Oh)P1z)1?C&-iST5HsghMMiy6D^B>~==^cc@Q32cmNBy?e#{0? z0DGIX0u!wu**1B}BWG87CxL5DG?+KF!OK5;wd+KQVa+kctQ+--x=)JoF_6_U?OtND zFJfBZ!)QKu4JuRh#^5CVO9Si$KiOY%jXDs_e&RbH`3qM?Qkdt=X9M4txD@EINSSN5 zbZt|@FVGaRf0ec9_pl7fj;F$aQTtPFwFU$QMp-nc-x7Gzdv{gP+P=5KZ05bKc>erJ z#%J#J*k*U8GUmW*EyhT8K|<|jwsE%?Z@)5%DSVF7;CN~~>42G7lHPAW5XFs@p>Q#X z+m7p{p?@f?CUvuv*m-fu%MWKRp!_MnSW3|Zt!vmPcoY6bKLgqJ2hmQVb@vt`qPdm1 zeu;Ixb`N=4u?$YKRZBwjs)2!ei=<@o@n(EEtZIYUgXGiFxmLSlG4NO#qzwKV7hBT# zy8}L5134VFyqhn}K4Qo`e>a~yTFfn6+03UE`6Fq8Y~A(Ti8lD7GNJf%yXt&7G_A%I z=hUlJovrrZBz|jL31y>rhOL^_+YfP{#s8#AmGi2Im{|;N-Z-WcYl4)CDUK4Wd8Ey~ zW)WfQ>yE$qGtzd4mydMdV&TtT5rdpjGW@TP&Pc&IM#%&p8G4qVNXL?}vtoCpQsDOW z0iV~Qz6N7wRqNcE(b=qZ{1B-c)+UQd+q7MUbK|pi^mS^Q{6{WG8GGK0Q0*GMj7u3OH>b-LR}zR|t(=H%1I`i5&7C(eIO15&T= zV^ANNCvY!nrBYMcG?2)pX5mN+!aob&FDIuvL;u}9xcFXG3{s}2Y^z%}sC6_yM6bQ9 z(Cy|s*3rUmjrp?djY30KC(2h^e+k|`OHwKzX-xCouJfj4ej9t(KviY#A`JuMt3HuL za1sq8IeR9j2sDsgKgz8rWcMn zxiOcpdxH^<$wfuC51&j;)^wEU?CP1A9cDMj-8)vVKR4VM2pJ1b|8k$&4SXof z7|k1+>5A^%_yBI)?JZHg2%F91=V+X<>hGE1Og`p;j+C)-Dq#yCwPUk!#(z#%ui$7y zarvC!ZIj7j)(0zeGUgpN6emQF6Zq9u7e0)^xQjFmsn!mWU0LAvf2lkliEOk1CmHgd z&YKL@kUd!y=bzt|&pK*_T^PXyrlly3%TIqlIfazbE2c`KKws*LdBpMKyTvE`)e`rd zlOEJUBFl4b3%Pg(bTn=zmre>>oyCixx7mImAC@>tg3ECa<{uNkRHZozzAt^e{vIL2^SjyQT)E-(LB3>D+RQewy$QYLX}bmYp%j?*-{Xq*TuuliIw^#Bq(KeNt%VUhre`Odhv{lLw!Fymg$4cC9%$NwF&@Kb`F@ zdzBX4oc&OVIyU5*KTVZcPx#|KHe!h)1M$_z|uW`t$5or z+%*<{ok-y3_jBr*R&LRSTu%k{qiM`Z8&j?5ick2WKfC|*d??YoNpKREo*Dhm{zKc* zejy$5JGf6JH(?IiQihY=W+EO!zrr<UU;nZ3*mF+mP{4GPmtnGF);R_6Yv1yw(7RSL!V5Jf8t8opOS89ge zN8HbS^YsJU?b_;qFAuyY>(RrW>>y?6FzJ~#;yOt9rPvrqQ=V1%x8|)<2(w3VC}NOg zN!L?N*|&c_W-?Oq)1GxXW+>f-})0gj9<{@@tS3ABXJsH`YNSRm;0al7lW7@(@c?+LU;fbbV=?~nG^+~qB#LpOJ{e|2J zIWEPg^qsfm)a$jCxC&3s=kWzI5$9FkYPXZ)p$FB1lPL1tGHn@JJ&&j1Hu7pimuBkZPo03N;;e`|0b|eFt1OX;Np8r`J zM=}n~hJ4engjkyj%NUik z+l7wOlPZCuw)V%6GS(Nk@n~J|*R7blsbvwh3C$%+zVgRB{e(PV%U&Rwa52f4Yx9l5 zwTC6&X&+H(VJg2%b;tPHc;AO5rbW}}#6?sSZm7u8nO@5-DC*{t*SYZAUI%xr!;zC< zMUQ`G=MGJMHB#n#PPoV0WFt+aFuNYzT75#$5BBXor4nB3otI*7?kLsB-n=4>S4`*` z6Q8@9@K}l>ZrWS)#expHGQYdaF|z_ra1!^AE)I-y?%Bb$_xYrvn(xpeQA$cL*uJ8E;9d~%Lh}R?GoD^p#6bOLSDy<^ zctC0?0TD4^^1qVR0sBL0S{=6iXaYos$?iZ35CK6gkP@JlwkH8}n6eUN#y~iS`2wlT zgay<-fy@^;43tt3YCGg%FoAR^5O~@xA7t#{K!a?7 z{9)}7($W345B!1hcUOW56Ap7Wx`4W9jNMcBMFu18Wuer`3ZHPGoJ9v0(w-*k|Efxd zB?oMWs`9Q6K$LZ_*+NDSj&zu(hc#QM?Ee-;``@Z#K}CCLQvxv_*3&??Ff2^aL88ub zSSFxeWujUQIum$D4@$Sd8-2pcd7O#NG%Hkp#INO6`8sKkJw>*d`wq%%QlA6Wq#Prn zP`~x1l>bqp_5ROFwCre@Q81ab-uoVjKst5@NQ=T0=5PIoXO{0aU*1Vfk}qWE2S0Wa zfjX;#uty87e zwZIJ-Otc+0GnTwCr4}OyDekJ) zS^4HB9N7}Nw2LV1RT#5E%7c`kf z;DAe_ET6n1CMFAPSKL;1TwY7FoMi{bjFPft1@J^n5COVJ66(0AiSim}_*gLHX*aER zSQPYT9(w`l-DDOSU?NMa;NpFQn~@oP2V@!*b=78q4+sTF(1PFH66Nj_GRa9S!gdld z6&}1~C1Ax;kR?FB2UKx)QWU&0@#IkngDH&NJEO^jzQY1ehsDeSG;Kjy!QLRBKu%aD zElCE5z6O0vHAPqGz)^avAXDFlD_4J=SymgIl95sFGnuRc`VKSD-jyYi`{d1jWhYUt>?KgZ#S&rCXW3y^kg$E9#VFrQk1J;xl8lMcjAa25 zzg^PxcR>=se^~NH4yM2rSrsf#9~g`YyjkYA!MhPRf`?$jbT5UE$gQpb3E4ClfHhzY zJQD-7H1iFgR5^j4@^w!O&FJsWW|UegV6a{_kQ4mua}CXr<%aB?^8#orW=iwvk00~m zf^mqdg~Ibw5yfyA%Y!Ki1XyclldWVeu^ni@2LAohJq?{eF6g+^Da3r{lknU6Czibm zLnf2+?n-D=E_?grPGvm1zZ?({x$GMldd7it**7*%L3Y`{tXvvrJ~ugLJ~zKWg)u4h z2BXUzTV5Fzq@q?EiN zVqh}VOmv^Hl8Bfgb4`iRJAJC?8+du4l~3h#d_E>B*4e?*ay~2i@ltub|9tZ6{H5yR z*Ua!APs%RA;4sUCXfR27XU;GQsO9=kfWJI8;`V^U^1qIGVSwKnsKt|+oLDiK<}*uP z&u3>QI$xu5T@DI)ejG+&ag1%Lx;$gqKeTKNa**4+urdeFP`zU2xGKpHma*%abhcJD7fF|1 zlveSGpJ#-_R!-&7FrX!(dNYw)%&!KKp zyJJ!;98~8C*;DTg*p4jOG2lR$58bX%Khzu4>};&tzB|EYW0=s7gLvR;VyZLr zdxR_MheSydW8xor<~;%E-AaKSumA<^kjoSG@BuoQU5!~_dszEAtot`~H8py8nUG~7c|3&MeVeDOl{4urd<+ErEG?T#RK00)G8K0Bm-y8!?j$ZiM~ zJsj3+*NzGg>g$i)qk+riXwwddwVT5#2GuX2$^o2(G&wBnBWyqH_)sD4p!=LvLW9AW z+0k~N77l*={ws#(?|=PEO!!DEBmR)8p=eSEs9#8|6!@+N#U_>6|8YQ>+C%+9fu{EM z_y=ujpXz%Ua_YDK#gP_w{0S8b<%9|q;5Y%C5{l{ccc{M+PkW(4QJ(ff{U4|&khg!( zo&baScW6hVKK4M}5{oRs(~ucueKwt z*ZUJB6afhp1_}vU`p@n|p_le*_TTtRdo_o`1MThqpFm9e zr9Otayn?d zkVvP$B03;E9kq&olb-hWgQ7j{W#sFh-aMbz1k@DEl8MEW1dI{O#>VR)V27yXfz|Nm(rP^2A? zzn?}9$UA$%LBV(Sg8LVNXKyDc3eSE<{-AjNQP?9PdH%!&1?D*@EF_`l@525D_8htC zilV0d4`uiKBg7+7ZvKP_#kx5N5gK~4mvEW=AN#W%P#B#33jJZ>psvotaX9;J_%J5U z?>2lSl*FHl7z#LpN(36}wg5?<`K#9ZcWEdV&3+ZCRmR`F@BJSh1Gswrv;!zG!=JoD5gPvTZ2xKP@R`^54qJknx z?CtYkaT5P(k5F8RgDV3PF!5Ib4|o%MejYxM`!{z2g!vmiv3CF{{KQ_MhcYPs6)+Tx z;vis1D#hOc|AtiT`3uFV*e~WESjFBhPz;5=U7)BH`%UyPbj6=03I(t@xMrbA7JFXF z?Elzr#!zgF{V@Im-~u&FI1=MxFIP~Ui@lTlPuRu3>JLS|IEWq+fAM$yf739IT1*Hk z#@->I$QXMu0zAfk*$-o6{J950kunYfheT%l9r$m8#-7(u5RE;r_emO{;{O$9P>hX(1VO?!{z}mPU=a$xu@}uQgJUoB!|zsy!8rEg zK8(omKV)pd=a=T7RsENH6x8C|y&(SM3f#S*pjP4T?R?awxZo>V)S!KD;C={SW8Vsj zv4I+qK~XmL)osBUp;;LJ5Li8w3jvxZ>VHVOL+KC)mWT2J4lEC)1{_!(%AGi{Jd`qU zV0kEO;K1@wqQ!ybpE^k~_EDxcN z9M~PoAUUu+ghX;+cPNi!S5DXy_74qVD1-;9CpteI{JW$)AKpv>=P$&=7b|{z! zYC9Cp1GOCr=z-b}h4esehk|;bwnJe(P}`xv9;oe5Xb;qOD7Xh|I~3kycRK{&1GOCr z@qyY71^Ga2hr)cIwnKqF_BEI>sPXykMwga;>s7-#Nl)?QTA}W^zh7^S*J4748W{!U z?svD0Cx_6_)pIca3i@7~WlyYji8VD?f^ifx>2l7G+dfR|l``NeKr+e|P6r1*Co!C3 zqxBmav`wA8C$dfR_>L&ixnBGPta+pV57$iX`ltB3qmHqCTHlrK+S@MLGZNpY(n14{ z-HsnOipPKcy|%_<*Giq^10lJiXcB|YV9UcwWFgCG?hWR72Hr2vjSQqoFOmQMb@kP* z^BQB;Y0sTrX*N|-OrS-%lssWE`D{v|*Jb0K*QtHGA8<$hH%qj3PhlLb;;r?=mC4J{ z@be7Mb>mC*K8A!|S1iJ|-#)gf3{%}($F*x}!i+7beo>V(kJHUd0pBQ*iCCb;V8%la z>6(WACGw6O=AKm+yQYoXr^<$PItxCLOiD!JweGp*3^Mpa+lg7D>B#*RVY{}b6R&Ng zzEcip)5@#d;BWFnp0LdO65KA1@INL|dlFOd|7O|P?g1^9t8A1v3+lNz#p4`A(m4|F zduhh1>8ng|+b>YHmyZ8GxwdTggq9ksF2V~dIVG3g4GX{x&FyG{uUxdEMQ+}bp!K0K zSpo~t_Uxjk{YWm{j<^k5>B%Nmd-ZM2LMUJ8l19_*wy5ETNrT;0YP*(^&&)Jgx;Miw zb4Om?e5K7m5;;G(}E~OoN@wyH+u09{8@3*)X;QJP7mX!~b|smJF1<%LUv zhCSW%n#?zwf~`kjj#JTYsO5FLhRsOrGRc>AmXsA)w|U3WQu5LtxzdRgdUb5_cSL28 zYlAg-yLJPjnt@3a>iYH{Q+g=J@4mQaFR2#diYq-(cB7h&LhKaOLcQGsY>`v>ZlBen zOu1}}qmLW2EHe4+_;hy6M@`!{9HqeZbXk>MmFG_OSR+Cf!|4{c+HG}Q%$q%*y zKG1Ilvc|M%XJ|2gfPcWz?ojf>38v~`xB!KQ>DvnqKvb2CmMFv~K}U^Gg)U4)Aiyk4 zD2Rba1caSwnHbq{XlS{KDY1_M)nzsk8n~D!4J{X!5DfyGjgkNhMk+*&g~^1{a3;qS z!K4&trvw6v zO@c-Oj!i>L%EZS;gmVn%m=F~Y4=XbcuLL~?Oc0Yuf^JXV*^{Ug?;R;eDgy1gqSKWi z*sjJk_SGth)X>YK2pHKLXYpYVm>1$6pYcOHHOH?ALS2k60sMtP1>~Lwiz$g-y9nZR z=;$e0H_~4;2rL>JST&$SV4Qw`$8Q8{(#AYbZak?@;`l4wcS4({+n;W3A&!Siq`+aV zYosW>EFlhEwhES3*v|3ge3FS3Ott{p0x5}4=WFvvO?Sb|Pzx@Sk#rjdF+~C2^7*q6 z@a>Dr`7&weI=VKN3Ha+Ry@U~VJYkcClhU3@x?o;egZDhYu!O5as;=};o+XU5`aH_@ zk$!Acj3HS8reS^qz+7R~+yZRVHaFG8vEm3YxjeZV=D7;Kmb|2G9bquGv3>*M!ftuK zdhRmjaN^Y#B355tPreK8fltS&e$sYRmaE^;as>Kol~++Pfv)N(;=%ThXKLo*=I{pa~5t_Ky~Y}i8sr%(DWz=faQe3dv9`exY+L3(THwKy9g zN`DP%W;$8ndv0z6;^Ms1(56=BOW+%!28HOpipJ4Id*#&Ck-kuwR`T06-4_!b2PSF_UCuE7oVuQV!hUG$Yz!qq zT#?>*sR%jx#QLI2HgAL*|1JZ3T?6jIOZT?$^R$eNMQeB9Ej`YzO=`L%YX>{SoeObZjIy<-ir?r?bO)srTyR3RnQQ~;ElCX{(l zsNdx*)l-54arLV6jptmi*RI4cOV@e}sr1ew^@LrUit%TkeUVL~BapU+(YJ7&-drjh z9Ui{b6!5|8P<*T|6|GqEJ1q9ufr=`uKvPbQ*|C>>zlaJD8tvjgTpXUvAnBam^=mKD zYAWCa%;oh>5H&g#7s}rwBp~cDFJeem*7mtdt$Nl~8)0!)x$MW8`eVAlm?C$k@ zJq2_K;&eUD$mLj+%me93=GurC@IY5qe5BR`0tXY z4EsD6Hj;+JmLFh&OTgI2H=53K3gMa-WD+Bu{GB0Y!>-}cMEB5ZcV=uagqc$mPH)(w zg2S2vl3`0&Kmy@Ea1~RJItQ0DT+GlzUs)mW3ggrnCg1y}f;=0>~_w>h5}U?#^s15QJI zE(zojeINV?Pgb;2^q4oPQrj+m{mY80M8P+YoK=)>OB(m-HbRWzl&Eh}tv-^`MB)Bt zE8IH|4YaP+opt=Q(xa1FBXyC(;!F@-7ar4jl+rRyxA-CkPOJu&L2w?oSci#uO^vgE z*+5F_shYsx8qXI%qbUIgTmp=nExt*3pFB{;VDMkC|ZJUtC zJTq*{?m(rDWZ>YcbQ=57haEHM)@;(n7 zmhy=l|44vj=dh?`v6w6cjnpjnAliaatW%;|=4S2fFk(dgL*L0orUBvK*pM_4@ z_T^IcQgL+2{{%|E06PfTM}m)W)kj@ex97Hdk#sFh@=v;)Uf8}JzRTEiQCGYK-PCqt z15;$1&)OhaIh_23PJ4@NJ>t^$GG8j5Srl}Oi=zElF@AC6K$79>_I7&j`!-d^-py1u zR#?x(esHU&fWuz5JD?(nHhqy-6i#+|YAWs5rFQ!Jv`uu}s@8W%#_BxYpPj}Oy<@X* z-kzO1G9|G?uK?*L#3MiW6+8Z|kr#r2mVO6qEHN0QwCm>AcUZ9tSu1Q;7aWU*3kH0g z<&;$yG@6<)G?KweD*aW5xzf@_0^k_mg=oGPEoL8wU%1Q#;!m99nGB=PIUQxo{iY-| z_jVXqv>y0$7C0s-xBZCH?H(u7%MV&V?3Y$&CcE8r z(P~Q27uIjZI#)LQOwx3GZ|a};Z0uwh`bmjJGg%dHMq2Fd*gZQ{0dbh`@+&+v!)!kO^J7T?>kG?jqfKSI&v6|ClVwy)!RE{m~* z^NizcJXgkRyLEFTSK5ncNV;6^C1r%bS09&q-Gyb;&){0_Z90WO=|k|D@rPuME4WJ+ zj652gaadVvZuyugpaZ?n;hW#I<#bcf5jvb>*|kfgS}YO1a<8*Z$89B_QE#?LB?AzQ#CN;sx;t&F(!e9e^Y?c>@k-Y?;>2OcQBD8WEN#ek~t3N4<1R4=_x zFQipX-$$j1PFmA=$*%gyO4^sNqAA*s)Ea&WAi_uscofk7y{Vp>w1a1NYyoYJr2DwxayqL~F!E{VU8%cXqgLI57CTSI zPHcs&%6$W!4?=QbwfN1k-U1|J%A9uS^~Ij>Hs7~2Xgo<@iV`Y=1(vpV=%#)$|Fl*{ z!Mrp!@Rlxz<3@Zj(;cjqFi&<5OYrn6g884MFqOl?vE~4GX?X?E7MW;d{NPL(%-O`U z_lJA=3M5r6^{h!6N`8p!Se7)mo}P`ad${${vNmY`mie$HbCOD9WD?TtuFnlG*dez9 zlnS9`nl{3&OpzVQC_3q^{!u56_4FW@^F9Ui;Kr)S43 zZiV!i7rtvRin<-pg)ehD+o9x=t2$uFHh(t6xtJ@`A9s1EE_Wpw_n5EI&w)!o_8txR zE@34go;0<}U&0qCnrub2b=Rb~H1SpCiRbr|Jd)*RTo88kra`A(RiQe41BReWgU`4N z0zyK6TxDWfyT&{+fOWb3+2Sd`lI80cWB^X%K9Ep5NhY7yEDX!1^{OzLz4L-ikGFBc z`;$F-AD?HbbhOl!OEHwaLm&LJ?}*~tI8KIM46{CQmVjX=S?*Ii-#0S1c#=CQWAYc=X2B_QXm>lhS*tromfd zXP)iepCH@0+=X%kb7%;k$F?EpIYTj>eR|-OtL^ra5Ao{>;t9JHIugD%Md{Hv15s8% zbR^>!Hr5vtY)>Rlq#LK4yrZ|NOa`}gcy)~F7H+~)hV$xY5S7Wp%TzX=KSqLGuO_Qh zj=aNlNhJ0%QZ;1u*Sak(ry2!^{YnBfzLT&PbRJ8JsO`i^D}~M)m&qYzw+;q|_^|kD zgg#GAH@hI+U^8!+ftMPIs!ot&EAw&}Rci4k%a;SY&DnoR{JGZWwYy9e2Hr-U`7QzR zszMtoCPcpKa8J;0eaf28f|nVSS#5r^H2vUh)b-Zl@hACE^M-AK!Ze%-Lf$DPEFFaPR~#jasE+k6`iYy6af5_f5K)?v{S?w^XLx);U#XGopkFq=2^;M~TgYO!t)f{wq^cU-fa5g}tp%Dp0}K#0`s zc>W`2x42NBJD_gaXhi9lgw-cv0qK|{vVpMS%(3kJd^};(%#yGKU0M=`lx``--StxnsXb(N7{oG9pqjY$)#lzwf9AwZ!o28apnYf4`p4 zuJ7$ce6xv2DA4JZ!|@s8>*jz>-mL;k%NX$O^yTWl^Y8rTIEC{m?Xz|4iC!j+Eg-ZhDKBCZWlvlc#j{FcXxDIWRO zubY3-FfXm-nZ=i6C6RL^nbu^eE8U5HV*5sa)ClLP)v7hzTEZleS4&oQSLcKphThWg zYm&fW>-^ZL8>J?3Sq`b;7;(}#nxMAe&l4nqCTO=s;7cEQE9tt>-c&ZIXB7CfX*&jF zCS7`^c%IG65i^44}&w;}(mW_f6 zkY+!!ED54sXZPn;8X(N@JSSS{G}v`4Y`HPCq0t8Y*k{EmhVd&*O+O__tER9hoV;$$ z4K6gMWqr2&I>Hf}QX9 z*&^PPKfK}~Db}sjk&95dkM@e`;zwrScQA9MVZZUq(2s47n1si@`W@kgBemGE1$>cT zd5LKW4B)T}!j7oR*OBC6$auRP)neG?$p)8Im9s77SZ~d1WQW`zYBA(Se^+?(hE9R< z^z=&f3HS}1mpS7$%1h!_TXJ3q7USs=8hF_QP%bkUW(mNQf_dsbb__VeU|7= zkvd3V4@*&Eo)N$yN=H++7%(^ae8#y14a_Fta`nXFeq5idaOTwiB1Fw#u1}+Row?b49NUFHVav0RfaZlByD_SF&??0mJ=FwWJt#dA z>)$9Ty2`ksY5$3!u7bVfZZiv~T=2s8q(Ih$>l3dntJ_6nM3$+aax^4A)bm29j-0<` zNpey7khYnEWYAj^NmPvM6O*?^KPT57P2|9ev;N93iaQu9*4Q})VM%U95_(TjO77<> z!p&gjB5i*P%^^)#t)Z{xM$(gar6bxWj1im;4yRsj!eo$)AJ9XdrVHAgd_d%g@s*D$2Z^`Wm0sxylD#yeFabRzy&F+8Q{d2UjQ)I|NlHQAQ}rU&XN6?nrv_48A0XSim5;F4g`i`g}j5=65` z$Mwhy+nk;n)1pTQ%FrW1Z5T?UTp%+++?Jt66>Vtl%FM@buT*e_4EjIi)Du;Bv|S^d zte7PuPo58I|0>s{ik;{&y~Qp0W`+25Jsac81_h5s?H;>hBq!@6F09bf%uNKIQi6M_ zkEX_5)ZF}KilBk5XLNt~$%$m-6ksy%@I5DS1rLoe-0l5l%ysF^x|o|n@>zA~IW;Eu zK+sQ862e@`t6O7=;8q(>k2($0J_S=Rbji3AAcgjf#CJD^~hC@xpEzE)dZ>%_f`HZKMHWo>bpCf za#kl%1J^8MS0yWmxCP66_>ea03X<`rsoAWB@)wFXI|#En_F(VV{4ON5nK-0w3!h3D zP3fY5>nW$AmhtY~IxbHk4(ls#N&j*+D)RIThb1_HUGaLr)mL!Xy8$y)z2Nbm7H5~f zJF*Gj8u&ZMNz{~gD1EG6{Cxb8EdH(Qz1hZRJM{#FZr=O}GyC|o+wx*k1@=dhtK)lP zY9Gi7 z?hnCo=txFHwX8x}#i|-!L*s=!=bRkMlH#HU&yG^6n_A}eExpG;1Oc-Z^~9)j7T@HRdMI5dTdR&4C~Hx%L%r%%&gLtl+RY>NU`}!XBKtK4G``CEV=-X2S3W%Ue1F*vJKSjnTGGhUts1 zp1k{hE4{#pR?nivXk(p3%R>B&R7m#^rg?+ip^@?ZB-w{2IO^4{oa%pAy(?0C)a^pQdcX0G*bNnwp;sIbNXd6W9c27~{8o@Y>D|Yg6c&*%sj#?qeL= zKB0;bgu-UXW<#Q7qJSvN_ga-TD52Nl+#UeWXz0cDY^wn~+ z^XQ&6d6?t=EOx8W4jD9LdhF1v0*C!XYN76{Lv2-WpN>hC!E;F16m32H(!DU-qV(l} zLlq|z0uW7kOP!BpiQLo`OsoYjxM9f|q||X$z0GZ%#Rjv;6n&uGGMcOKSP4DN4L_~* zY?W(C_KLiEWoR5F{?^&7XbOwLiQDQcf@`k$d`Yz0N#(=#JXA)VvM0B>?g;^L)3%%| zJ3Mimz@g^*NsXKDG(46?9;pZ5RF9?W`Cc;#Z^2oMdD{q{zA%xD^mNn5A7o#Z!v8>$ zY`VHrgZ8w?G5#d?70f=;>qf53OemMVD_K0=O0vrbz9|UOmmWBg;1Vn2VzkC8c(PXL z$4Bs*u1pZ6MJhlRANJY8{Z9MMpv)Y___y=-rE;zM8>dJ}3B?z1PMJ{U-7qI?xymTB z9j4RB<@CYL{L<6;;CIUa1P)v^<8*iFoYCZBh;UZ#c{wmo#;(Jo(5@}QMMrI!A}fx- zlnHt{PZ;<^+4hBs2zIa=E`scd_Kb%<t3wWev!_0NtYwT1a6&l6O?^P8^w;B zzZm<4c6wfq4NP+fzXvX&=_f5*#tc)(f2`)i&9{J|dd4cz&U21eOK+Osxn6VE?6}OJ z1O5eF`yj*xu|x zBUr4|(j^;h-z4umF^-)h%_`Nomk??4VYKv}MO(|1b@Ik2jPkX0Hgfy!qw&vA6fLgn ziS1_50EUp9$Au-VjuvutG04~cG|uZIK0WTSbw2rAvijBa1WMY|GKq!Rr$v~pT_geTJsU4 z?Ut0mrc#d65dpqRE16`Rjzz1N@FqTL_Vq>k*1SS|4<(inO8l|V$0~re`%LLNb!YYa z=h%)VrPez%1X6Oi>|d`Hso(wT9PdMwd{z<3N_L@x5)Db$iw}2K_P+L9@yqzdh}9~N z#NHOkTVnXzPbM=QQDVI3(Ip9LgojaYB!`|ZKE)nVHQS--JWWA?&J*d^P@9}^?PZJ> zo}Yecc^@1`o|_LGXFBl^GlcPJ#1JnS%7m^V$+c`4vTk_9ZSaJ&J#|GRJv;rxKzOa| z5+8s3%7tU!S6hC)Al<1o5t{WvXtW_ONPIzK}(EHwj(qx5vy`b#E)0ucKwm<=t1M180WG#{}=>j66 z7f$sn#E+_&a#!WpBW`bQRj&*$gTJ!3B(H-v6@Ueo>Ye7)D|3lrIz*E(|58nsJJcI^wW+C%D zrQ;m)JjEeoo@LCeILJ^^D3W=oNHRr;iptO+WGGQGl#-B2rOvyKW9as~fBSge|NB1A z=lOKsA7x#8uj{(jwbov1ueGl)Oo`g#<4hvyC73ZyTb)qP87VD3fnyJr>CU}jb3&&6 zZVj-ReW28pAd~Y&xY+w~h1Y`LhjZ7v&k14J?D-Iy(sp%Hpy?Q%oNn$IJs2!^k)7g1 zJn{Vb#ak?ywgq$6m(@56)xXy{NfBx`uvq7kY(fVxzqyL$8Xf0qxU=I{@@#tD@E1n! z=F%)tit(@46HXruP>d>9P6qbPed%o-J^gwm!6D*vIngynPhP|M@oAY5rMniLQ{uW{ zTjsY#6Rw}#{H;F=_E|dw+IKs@u#}5Zs($~;z2@7P6v-vYk3MhaKZ|&1*iPD+1zkh+ z5tkxM@)95PGDsUxV%Suqy-mk5?z(`X)%wZMrHd%H1I0bNQ%6}&wTHL7!;oA)DB^!^ zNd@D}O`yK;nR|ca;ygv zZa>!d472{8gl>wSaJhH+OAX`K7SxlJf_U{DJ#+7`zW6H&6gy||p}e>14DEbV-dV}r zS0mzymkkz^!$kstPM#WuO<&c7)ftYl-@)XyUH-GzheUt(OU%b`!!K;QVNnS6!e$pV zSBv1QsWi;@5!DGq=r^gOea~&?#>lE2yNq_!dsgg78NZclD^<86DpUclaMZqRIZQ)0VsZMXO05a_q9H%dTm zTQ5I=+%^~N+g&AZcbT=lMFmklZbB<4nNKhDhR2~)@M+V@PLtbVy4F{Z>4-!fT{d`s znZ}-8rqDdB>e#Q3GCrkI0!cc@U3R z+7DDDa_5Q8I7Q=7Gmu&x@otRf?dY(Tqwy)#fgkR7pF}w?7di5O3@R`0E-)hUA8`|^ zJh@xL?qubUw{jRZFMbB~{ky*11u6z#tAAL*DZnTmS$gzsIn#Bs*Z{$zBpN0&BuWRY z8NYCI44@Sp zJLp1VB$U{gdlqd2l;qa>+V-VC{Zv6;kJ~K@s)hV|Tc&+Rq`LKt6gdXf8aio zxugRs%|jxUyRYljP#|~v2>+JSjnV-pc4jy|KE5bQ1_U|+c~Rn z;@j5a`E9?n=^fMyO)pq_?Qy+FOWw%qY-wYXTmnA_Cg+Ou1vL~eY~xxZYu(N&I9YkH zSgW2SajQ!Q$aVf96H-I3 zblUnL8^Pu%44wUcZH~lK* zDE66)R_?-O!LypjUr8LR&SOcPs{Z~YL*m{^v7A1K{;nn&4o}WMPrpC8&ZDl;6tl9b zCghu8G^@&s>-_!QXIqFFcb^ogGE?1qbvo~g_#7YmE4ITWLNw=N`R%~>NxWva!_Qv) zr0KxTJ2PK%y4wnS@sH~(K6m)kIow;o0JWr-Y|Y-yXs$z+k1y68KmR#Ax&DLY%9${e z>ycUUVfOb79QNrCn<%Q`yq;NnvJ@jOdEDRreGdlV!Clahc;LKiLFK`#+AEGTdJovD zMtzV|LPyc+8V)0}9dDC^$;la`r))56q7bF!pT8Jy~`p{S~j4%2*O!iPw@vZ%ArRjOiYy)Pi~QNB(!J zF&<1_nega{o~SOsu*p32_touEb;PL@U?Pa{>6H2ybl)$#o0L)Kl1c>A8`{X4>E7x> ziwnwP^aYt|-9v(ce5Fb$H2$aDOyx~LL}-aG2kTv*6vK z!wxv-(tmvS$ana_1kjV=j;6bMTVqQB3IB9RV_}GN(VdeL$23QaPyM!^mT8nU<>tkR z4r0XrP#Oks@-+n{JY~}yEE{&nSbh7$Fn4Z|iu4j&&t4CvfUi|Ymf??3+&pvFihC~P zffEew1!SJ^FXvg@INws4+k#^>*lrI_Q*u^hUrNj{f z18#ym9)fzw%gA=fxLJ00jsZ2;rD-sp`WF2-u=plPg_dRx$BM}0NK9c#@z^BM=|Y{A zFrBDUGygyg7-)`vQ1H3G!}em5wLZpV*-ka>-cPgdW`~`5o}HtmnmquH=qkeU?ow5> z9P}G6n4P7O<8P-S^RcLts-%#n*R*kTa`>E)lcy(L>&d6RFZgvCSr?rL>Za=J6c@80 z3|nBtl!2p;)m1|3tAVEmd#W>YGF6@8_}g8@byNZQF-jRp*~P^-NN+zamMR4ADo^-l zPPfxNhv5#y2lZgNZtF-mI_}!zC^?`UaypeU#3i^1&VZQQi(#XZkai(uuaX4gn@-9= z)JK`6hJC*zY?=ele^IwPUGjiT=Ih)Y|A$3r4&mUOq5C(kdHa3sxkmSRM#81%lCPP! zmuzPm!nXu;hAAg{3Twr=W=_TlW%iXK06+E0OR1 z+XefRb*%MfKi@W<8th73$zC|WIto?LexgztdO7c1f0Wem7JK3D@GEE!MkmPfA{E-Bd-uGjvycT-qmtuQmHx%+%o+wjF}W^(+SjaYwxNoX#>2=qMRpKTF@SC|E zN-tl#?m7PCsqfh-Kgze{=!wT+k-4hzfxk=mo;us*T#i**Ah|mekk;?TdBm?-I16(o zy=nE)!df#I=+8qZ^l8P0Zg7uD){t4_PT8OjQ%1}gyoEZisHqfX{N?0_K$lRG)XBL} zlEe0U)~)O2(-Gx>DG6G$X-*wM4Y9I9^WvCmAM;7`@(h@wI|rY;lqWB0fD;v5SJhK? zzREpl_;pu>1It&l{NpZU*cDWQL&fm=pIu2Gz5-R+iSV zgRS+oPqZ3aQ%TeRAQhDxqJN0U`O$#`Qbf4p^rpGgWgb&rJVTbLwGGc{XLMj;ltn*y zj!4))vt1pkcRYH#UkbIO&h?6E!sRB9$oh#H*9F^>;sFVg1R1|fU zC{tl(!}}3T5~U#Rqi@Sp3QW0XO?j?-k+jbIaZ#Rf=ufa1S9GCK^J80AmWZ)C*2>L6bBon%$H~!^hvpfd zgX&>w#S&~!TFXk>Ce;>`LnFCUV{U&PohY+@7OudYe`I zy=QAN0Uak#V%UgJq*w5}@Zbhr=&ds;Hf|Fbs-|#{0-9YW@Y!9mDDAe-G4ZlW;qXOF z8%Mzl4w*uP0)>8|Mt1BE^e71ke1>!3)kA`PJcdc%kEaJea%dr|rp#_rZwsenU762M ze0_=i63nM!?^T%Mb(y*Izivj<^zo6DIx#=Qu+egazw1JW8w0hVHhyuZay7pUUutSm z+zr04Zu?A^_rvsxvWy&Q!`&(`%yf^T$=7O;>BTo6!25rtMQl`@Si_Fkt`UdVHa)!3 zS6vGSIuA*O=7E0jj)?J9zhX$n%`qfxHvduf1tLW8t}X9I%YOjZv+BoxX|>PK8S z%7%tZua;!kuzn!PK2z5fm`9wwI=qxGA1FOJ9qKPWZfM>5GopHKZ)!cpnZ|+Bsiq3_ zBvAL8GNQW~LoK=e?P#^JN2llv*@_w6OrLW5`5?tY)w6p06lr5hoU81PeIx!}c5I*U zs`}`!Epr9cia9EpZC0_9r(qLU?-}|>^q#R>*5N5M&=+rx@n>NcaO%{_=L3(vOA`^b zt=G#(xOsKvDW{(b?W(q0Y4c!xuF@GX08C-3Dk?}YSR{wZGgzD5O;r}1Onj<8=?U+K ztv+{-v$e^|+QQGZRU|E|I%Itb{jf;hccRcM8{4b&I{hH|{Tn}o{4$15?q#Zbk|X^3 zbsRA%4>IzZ3x>_XRn+e~3HXeQz=YXw?B35);n(JVuy=D{9n#tMbJu3ZW2V4fj&&_) z`mpai1p{*o?npWsD+g=*K~BBQ;3Yn)Hwi2D0gja9sv3FE;NWRB{+OFKXXk#?!{y!g zNu;A6?DAFd((6=0n4o_)o4pE}me3Xu70I1ZVIEAqV7DB50>ftUh2k1)<$f=LVY)~s zyYXUTY70-+0b=u8hn0Sn56UZLz7GxE&68ImYs$#Nrqs(~`r!%c36{PD1|EE#=@^wP zed0?aeAb1<#*d!~wnULV$)ePeOFK-W`ng=n!vXGMxMz^p)%8g5x#3Z_sY{nzCt{hx zh*sMcvZol*$3-c4v)+hmoWITb`UMf1{kr0-e)l6zFJ#~>FG-rtMP^w0huz`qt~+t0 zpQ_L(5r(X+v=!PHH>> z1zbcV!^|2OkV__-7$7l4Q^2-zHOYB+3P>&kw7jLN2=Am^h>!1XaOw>Sx>xqD533Pz z%F46-g)D{)L&OTB?M31K0!{*>*(JF<vb@XUrj?*P84W9p z#`zgeC@Mu;b7$@(+xW${Xa2MdpY9E~NgZbQBhvdpA*JTXzJq{%p@u~ATq5b%3I0vs1#TSN8p4;`Y3w!x*Kv2 zew+@L;4!9%e!-Tb-q}2_?v8E)L{g*GJN*Ux%Hbs+r1e=bmSNIC)phf zK7K}2>o+)(dHBw4iUZ67`QQL=l<_sX%={YPOHF}w6J{v#g+t{EZx6MmTRqbSd0KeC z4N>ePZ<*y(Z;P6j*!h~FoEu(E=ecb3O$p7;*)Sv$ELrGFmvdXf@nyqlC<(2$NOq{5dmJ#yTt5@>)8^qNB_W&5jVx*4iPe zIoW6ZPVtT%Q%W@k9ENA4tK)H#h(oiR9Qi&$=Kk%?m{PaoXJaIvzp>nn&kN2p9hdaY z(Cp@IT5{3ONy)rd7LPG1o|nVECwm!;Cf2<8WCVj|x0hS788w%G`hYjR6~b~x*toF6$rhIUn;@hr#$nRi{^GP-lmmsR!N zb*4@Fc-@0O;(3kfi`&IE9WT)AzS6l=X<8!kl&_ZU5BseMTsu(`knp0T-Igpk1>~D) z9i%MgJi$RGK$P)je`WlE-o;2`r`ZngixuJEZB8YF$%~*rUy((VdekcXEjG@-B1S08 zj01!YHG=NJL#A?kcfQL--z47M16?volY>UuwBezA(L@K(>}iR|I^W*5xQ>Y2n}{Lr zdBms=yOiD4e6*JB+fDFomQU@O&fHq9rb`xr{i(ST6V_EQe_pz0Y4@6=(d>6&4Tb8C zO`fmaJp@}X^t4NpoWED^pr^&##0|W0mz;O%;bZo_S@ISyF=+?V!KVbnhY#yK4;YsL zM^oFBHOzyTa>Zp`Zha_o4&jzQ;}w8K-CSNC?)E^lKXMj+$*>sccKDOKV%9mgWy_!P zs%M`}J(nj5eUD~;DSRCJsSbNDLQR7`^DAH!FFv&S=yR=FGol#8)#xu4mvgslo&S7! zz)xez({4Ct^I4xEC$u41*AuLp!-5^#Ix@wyN=^$W9`4zD+4xxfpC3=t`VLw=M6*v1 zof+FF+t~6eT+1DU$%uA1t1ovVSc-JcFq8|F4r6R$xUafP-=PQ%7i?3SCyAgK2^l2e z+@<;v96r9u&}SY0bBXE7i8nN~K}TlN;*h+bFOa7*ym7|H#}cvZIpTiIFicm>$=4?i z#==wf&A2iM1|tFg|1^iecA3Cn7~)WAeV;=pZ)0l@eGPZTaBE*JIR$N9O*u;~3kCf^ zw3DNlPnf@sPq2b{sJVr;dY}pJZWv-eZ7B;2{ctY{BMTP`{I5dyNd;P>WvoO!Ei5F> z4E=q5(dL2S-a3KuUgmBNN8O~t!h_XUMML@AgM$15mBhu5`5&?f*LN{BH*xVmdj*@A zXozWQX;>q1Vrcf)7N*snA-nQ*>7K20$w`h%cf4HLU-NxmU^b69Zlt2kw_MgQt{@sh z`M>AQAdSkKf6z6$b5zLeZq$1;m*KT%0kI#ao>F9VSI2R}`L!)$=7c#)F!M3?bxD=F z${;yl0661F;~1hZEigA99lt2O^Lx#5_f5nR3%%y&c_}`^CJS#2 z^GMF1*~#`jb#S>jvoOcnG8|eIlCk*VssSqJoQMT!`8_l{mt0t1U5uO)1BuSUD~XZ4 zJP8Q{c2rjkWs+VAfhX0eaoaFvkI+jqAB#W42@DyJoi3zGXcOug6g&c+h^jxmdA^=L z(yspz&gS>PPf)bd(KJwjYv#itC){g38E)y4U)s-T-?++8+8q) z%`#^CgF#=Ym9O>E5^`mN_s!GDx(b6C*(QY;usv}3yXSU{-fp?aptund&2fHe<`& z-LX8#on7fA_x9{UI!>V3OM(RaXt8C#r)Cc_J{CY__qWoq7wCYAd3)MR03$Uy@d z994B1&ZO(&b>=E#u-oHz!fU0zlo8AqDr-wVb!)sh{MqJMozYEqF3$pP&)v4y7g}b5 z(ClN{E$=bMsT=KmnGdLD4Ui_%>;T&dt#;qTTk_ECbCITEuW#{={&2Xpv-4hmf%q!{ z-tV&6R^bMuvKKJKL8ix0I$nloIgfxqQ5Tx@jEpKIG`8 z;inT~Y9*!TV`LucY-ynx?5M5lC!;Qfy99I`o4e{T7~`061sM#c1hRnq^nk&7(5sz? z*FDI>+ceNpT};$mT2sQu$IwMq2JLO`Y^v@rg%nl9-2rq&R9>hI(!;~eFC@@GK2XNu zn3aUPclc2)l)P(zp`V_gzfp)R(ox3U#PX24qpN(VnzYHGwaR5IK;;3A#_4)6n5-cT zHe~~YWh=p8;I8409u~4{{{Cy0@oLKXTd3=3SqEttD<~=iNa{L=2B^6xs0VtZy`)g0 zYr43636*eE_YIKN4RiN6Dy`>kq!Hw6=w;>+8Yt?f?ky4IYvt#3$WqHeEXdT~(M5Yr z4{{x#hn>o|IM_Gv7kBY*VCYaW3X~3)G4nYj4Ne0)sd*{r1bG+-%36m7qfvoo#tPxb zB#t_V`uT>3`}rbWg5+gf)ja}?HPsE)G*&(8Cg&$3DjJG*(3Fu4F_QOI3k!q65jGS*f)Ar6|3x*7pS zK3dZL3c8}<)^bP9y!?#U@TGZ9SJwP%@&d1X%5bf@6qG&3qA?X_~=Hl(Jc4H1jOGl)+ zq=B=XkC>H}o`Q#=hO@4j#LV4U)7d-NC&WxcPR-GC)p!t9qK3ea+?>W* zt}xhsV;HQ_2?p!m34?(mAv7rBLjqs3DD3`bd>8?PnSppCwt&IB99Ns3CpnZgG{Dv0 z%Qaj}%Spx(?QSkwre9DTo?|J9!0(`5l$?l#vSX2n!3h^77J? z5OWMLM~MYWh=zx0ikf+>hP%FR*pA!dwAE^M%QZ@1rVcB@O~Q-x3UyU3OD1GgS4_PP zITDMJis2WzDLbMok_y1~R67}Q)6`&Nu16okCyOX98QS?QFS&>HIK~u5@6nq!-|46X zgCoiePtT*tC=NK#eed0Sd8ppYw3x=>lRe-PDBB%2 zPmmg;9Dk-9Hj=HnYe|48kb>=$*pgn9AE^{0&LCD8_3Hv$MMotsNix{TkxYuUX$SB~ z+_bwNY#hb(QLsv}=n+_Oxt@1p)#u1sel-4~X(c}DkF=HRbfneWu%2Na@IocaSxMbi z_@&f->csLIE(NALST~lJvjazWiNGu3uZ`o@I9G66eLEuxo6^w--h85m z`PIHx-2Ejk&1QHG9;Y%sMVm&_{ewG9e_y8&nyb;=BRfYhd`t}0q{!&0cxyaZpK>8^ ze)0OZYDWeUq#NlSG{^jb*!KfH7wvr6c@~bS3{=)+Bl)9m55CXXx#OA&P<5vw;^NGPUTO$VWBpMB5vW zn*5fB?`My?M1Uy2^#sUdvgaq?q!_Dp6gW6H=y@dBs&L^pkE#eM`9J_T>rctV4rJ~a z==)|BJME$$zPX}39DO{`8ng5zmHTXYaq>6|=`*kdBF!0gQX&((>G}M_g#hpT?$4wB zRJGKUWsi>$0q4?us0K1Sg$Ccm`R-vE*Uo59NYFe&yqj@~W32IY0qfU2pr+7YKqj$r z<$ zTgVhuRSrw#gY|eS7m&HN;sm?LB=se>?B~tI*4d_vj(td~tFLMfpiJ~Ylq#JBG9RyH zoK(6rgfZ%gLI#ks$Om`e1kkEc>t+SOTvEyc#h_4n|GMXu~ptsBfe`!~d(1=qajQ~s13Xo74FlSee7f(w%BKBeQ+PReWE-%^P zc*>+kRk0>eQ;G$U(aJR;Q97u4=7w*LP7|^{ZU2!>hjiA_-&M~Fz#^55nHR`hOv~C! zd2tq9+NdqfeC)`sGv_31b6WQZ@|RA5Bhl2}(?I6ll{ck|{JUOD{^I;INL4K^8X!^~ zKTJDUEC1C6L{63jka_uOjSi-J5%3&3j0-O+B2+KQB;nL(isCFlb7E` z?E3MnT4k27S?f|&`!A;7MDG}{UlX&NJOp&+F9R}H?(KN`(zv@?*Q=V5k2raT1ol+0 zX@M+sOyt``ki_gR@Zosdscz)2SSzfj8(k|V<45ClRz5qYlhJy=uxZR-%wbLjGVQSj zn)3y(Dx>uuSbcdp*#{_DR!U`ZYPR7E2Y}8#%~&!_0gM8qeaT&>1M7Rr?9jZYhKh*9 z-?Kxrj`H0zw}ihc9+wCdYjLv?{)3ezYTDL{NBSyfc^{Kk?$$j^!!1`XW z)>&NBO8=Sv^fRs(w<#))wkOZ;!YsP6-;o9D&i!;t!LMslCsdXlNcyB7L>jeIwit5e z9Wq#W2j-ee)*-|l)#6X*MX@K?7m@jUjtfN_s&_u)_(tLi&S;Zd{4SmFc;RHtL?DCU zi}5>?mvx)3HpNO^kugBCAD-T|BTC+!A0cPeG@xS{G4*QqX=(lC-xUD~rQnO?qaQ@M zYCic-WpP%!>X>WO(a;|1WoTE~{g`4Ftl)nhX-R3zW$&m(lgmABR`wPz`@%Hx?6j^{ zBv?rY=9EU4`(Uf@p3*)MX=o4_$Mw8(Dd0_BCw(Ionmyt|Vf5z~%8#Q_YWGYfxOiq5 zS^kI*2%J+p0=uoM^=JDEZ-MA5r>&epxG0-#{*wpWEe52 ztY-1yd;Cjn;j63_n;n=*^aczrhDyH)3SEfdhG#^&lOm%%$!6@q1g+69>4#z&1EuYYDe>; zKK%v$V)$XAgco8@A1HRB*~_ZY>Fz`a5JP+JDZcu`D{{(*@q?tDw6aS}O*zOxJ1yAN zi{8loD#IJs(d>;~p9?y8&6acS=rkFPADnP)kZU)7!;&_7 zQ1UyPz4P+4ZO|JU(aDyn>ndf^r#h>LSKi5ZYtXj`Ito5Ly#l2!MfqUxHWzxH`wUJ=m zHM8qP{EZhgwT7Iw^eLZ}G|cH0B<9l6j`=DvzeclvKVx$^?*2Q5fgAK^F$L!nLjx@T z2+dQQT2(F8VJQm(!J!q(@ouUWUbC&|Jx+EvHL#ZZ-$%`yJp; zya2n;G2gj~f^NV#$L9$q(*gU4S{U-|8~k~*Pv?Bc|YJ0}<0 z&zwXtQ2aU^en?61LE5W*4eI_6d8~ZTyfCYq5xIc6mgXr3D#7nx<{yHQp03*#tHoxVRI>7I$)yDTc8Akdx8zaS@_1+YlILs1kIqF7xAkaH^vUTI&ZXt`&L%Z) zp4<3vSLw`ovZ<6QIM2RP2bZzc80Fw3ZYy5DiW7*t>8^2JeZAn4|AfzpL?SxVWsZu|2>9GCRy ze_p-WOMSE$jd(ZZ+>!WuaF4 z__^=alLtL0Q4g$vKR3H~pk4o<@+VdGp496@+QCi5wd@iR^`J_t4raBtJi~CG9Kj>c zea=5~yUBU0gSn2kGc|ZTF>7=bjfgrTO)CGy_`!`MA|np&-ioiP^ffC>VKM_Qqpx;S zlpLMQSkh2p6dlQ6Frj!cp+xch5 zd>^Q*2fUq&0kz)`IEuQ{*tWZhWBt-2~YAJc#x~nnII)oIC-c6jR;T6(ZAo- z(w6z^oZGGAD(}Y?M?V<JjyFH>VUT$X$^hnQo@%lz- zpJjE;D7A26?CVx6$D_!-W89u8VegG7iaS9MRUoa~B`xnC{>r=V{)?ae%FHk-MS7p2 zsK@>f-`0=mIBK^0S%(Q{s%7M!_gAs2>J36s9{f#YCi@wFCGxrMxM}$OO|{IZYvsl@ z4e1e&T<<;)*Y&wk9GuJ;GnbL*g`JK;5S<2LloL1-sjQG3&E`4boEB&o7k0v__~yYL>m_U{fFH7jb%Dn7tK^Z zPNN1&Kh&SF*9ZDA9PfQX*RhZ;aCP{aaqBOQ4}#qi=|9h3-u1%Wq*r%92#q-1^DE`9 zX~=itL`$Bjk`>a{KMz=x>RT*~iR z1qnkj%ZDIeBD;oJT1Cg1uJS(8N}0;>WL|Vul8QUTJHqSF5>G}yhG@|Y7VVm!{ z{-4`FDgBav85ND0yXMm{{UBDCF8)AdiHwO)+C8Zi9-aHu#bsO?zgNBt5l_D4SgyEm zvsUp%;r{Oj)ETG7wJq*^d~Qcgcd?}D#T=DgQ(^VnK~|F8zkmWXTs3GSk%xg{U*DP9 zopsO6SVCy$9rlXZ=S+dU(E51>3=&vJ=_4U6HtsqGmXy=wb(vq3ka4xI?fIM7UYvh7 zk>DmO_+-Z;Im3y<`?rG+x|yrdn!lG`Ha^Hz%sZQ;URJA78ml@zfM%nSZEm=$KZlpz$Y~L=rpL-vX19SJp6|M|@AD|7EO!+?>b`!LcBRziL^7kgJ+(=8?AHmm zF*JfI{B*C5`!^5l;+~Wem2w<@vTR~L``GW~a10tj+K){Ss9Q=l z7gzk^l+ShN6FrHDjB}j(u)d9&VB8J$L-R>J8q+?D-_y*hRR!~##q17{mu6gO>R>Hs zZAjJ8Frex88nqigTa#Yd)98d|?Uj6d`a6GoxgdQp58V4cVx*(+nOL+TS=cmC=L?&` z*Qu^Q1MK_z)j3`24@AWwy|iu3&ymWXEfmrDvw}vz*`8YTo*t!tw|nq|$DC=qy4=-# zxQOT&QQ}IK)j{5so>y9!XU|XPe|wWf9#>HD%iQD{eID${@H3D5IaDuFLXhXGjnDs# z(|q;ykFLJG@FaK1@ljB5m`0yH8BObJNrvmh9OH>+zw|!N<~-cv0e7pF{RFS>LnHQb zl*%{XNPSppeAuhyOlU%8{5_)QtybR4Xmsx>c3z#8$B)!sk-t(YyU`ud{QO>+$0C;a z=*5ePF-2-%4<<}m=k3Gjb4zo*PpR~4wCrnqBTF1<_-;{yx@UNHcMhZZ@8*~@&)mH` zc*N)KN7I3J+Vp(z0e-_eut4kz%l-h+UZ0nmxgyQAR zB0qYoNm(f}XuYPQu;AW3__XTv9^F>gfb;S+ZtMZAdiMMiS3jR}e&*=nh!n^LbqdUI zSa8w)8V;Y_>zy5bq5fd-XZ<|YGm%$o8wb*v_qw4G-zobkKVO;Gm_9~V5p!%={L^cy zfiGtsFh)u!Jd!78{m^^y&A0E_Hq7E92D5KCe;JWb{Mz3)eqzrba*2pDR!+ANdMWm= zq~l*LJlID$3u>%*cZK}KOEJ2{rK}eV_Cwl=@$x^_u@(0jpC3FpuV(fcjj$NIeVqT( zvtb0vit=Mg=hTh7Oc#xPfBx+2)jYV1NH*iWI-l$JeV3hDbSHM4I{57Q-8ixfoL26X zH9w-?cIKU}J@n(y&u;Dme+GTV(r+!BggT4C+cfJ;N?N+~%soG)e*7Z9?CHb%K>;Yk zal4MJ_)=-I$@vS+1^z9xBoQ8!pFWg!(~ zn^`GzFfH}A(Kp*7&H?vwmwp|yqc0Iafgkb@b4S|WKKSx5Z(!dz<6CXEU91!xE;%gw|vCyVAV&s@=gS zE@#*Lh~Q0AI|P#($R>||-YsV`pw4pp*$?e0+un|mXk#l-CF^&wK5vb;4pSK=#d$6% z^Y#Xd_Bz}WWFyA{!-vyiVQ9p!#@UN|T}SOXW3C-+-m!Sd+3yK_S~fyLXXVH=89Wz} zaPms$w_>M(Uou1%q@{k9)E(Bg{^|YjIeqOcrbV=g*->IPfwI)Iwo1xB1^E|8D*GNG z^z1`D?_J3yZTi${36$t=7Z_*r{v|xx*es<$KC%}kFywW6-0KfImY0D|rMd)-NDU?v z(hKQy)Nr#+_O0^^@=?89AwTjN^QHRd@Mcax}@kVBbHxN?^jzid0A zOUX^a-!dcF6Z|G?eXsbU3|G(zS`Gi>a#DH>QEV&;EE)r+!w|)9=YF&q<3WL9Kg!=7 zRJ5+sAiq-ODt?T0h_X`I6?GN}(;mR*-YU!n#OA72Jt8WYJC-1PxHmvXR zLXPSRnF5z#FmP%@Qox>=SQ7ZEH7z9h=Y91g#Fgq-BK0byjY|nNLgXoq#3a!phZdPFr?tn(CTeukrlO<4Wir9 zi3MmK+i!&j3HR#WiMPA$CQY$-O$5qA_&RV+0;(ffHGz=BAQdNM*fz@FT-ha=#n}Em zun9hE>veEtpnTYvEc!4!f`VTSLrmCcI2~|tEQopVV>RL-U9=5_2ss3@oD_~Bj>a|K zUat4JuDQ6AANQ{bYhhdvtP~bB&OT{97gnL<>tJS-_=fM69L3ejQ3tQuFq~LNF&$2f znxXp3;6USwDZ9b5AMLMF*mipzd2wl{YfeSWBJQRnm`Dt9EC!%j;UL6FLEi^)5=$`3 zz?~uE6_i6Z2EGFmiU&gO*X`LCcrG%+Jkrwh!~%U^lcn^%h3=eJF4-THEN~`3g)gog z(gd6{a5#$p*)V{QI>?a`PJ!!f_<)172siMph9x1pf(Z=Ngsz8dI-o8v3XCP-zyGOs zw$VnAw%{I9+iD}o2EYg7|Hvu85JJHW+1J7KkSc8I~kQQ-cTw<8dI1 z(bB~I1;zl+hvoATM}xDa;3%ouWfCkFtG-;ycN0)@^3|;Qiq-Q^6uThQGEq@HH;L3# zvDgx#{NeCuVi*=&QpkfUCT0PmFtr&XA}k;isdrwQzmJWEV|l@mRPb*;7#0-zt84PH zXYui2xuf%m)K~%SGnxn7B_DwdF;IU){_Q?WMlJx0EsaJVz^cy|^A8rH9L<#Sc@e~F z!nk_Ce`?eSpc?|zRm_bv(&j75p9?d9{ESC`g2)ybXklqJ&9NiSRfCFcAC} z!NY?E`XNj0QC_A-YQ*Ya%lm||#Ym(9jGLH;FJHZiQ(6h9nOX)97gmikIv>R$3sjBF zCjq=C7z#x$g*%hWjq16cioha@N!6aCh?{bdd{`LjtC2YtD3za2isi+^i;C2T!c&xq zfMG;%WONLcJ3n7tYC`=3H-ZN!6AjPLM*vw8P+2rq-RAec0B~P;DK|Ga45s#;RNeZ$ zmz^3ZUnv5?tA4TCuZjo34M#S8h8OXwF(XZu5o#IOVqgg$mZ%sxv>S%Z98)_;in<|x ziwl;IdL$i#tO-*8ePF*oFK85CcoA5VVWUZS3rfL7Kn0Y{8GBx=njon=*Fc^kK ziNo3R)#$NEgBLsn#f2nrHQ55x+3Kk1B4qj_7#|l9BIYUK;U(oo?Z`_fh4YlC9p&Ot zx0mA`Kpk}J<>OP=P@MUmPmHS(i)&h7kXp5x6Y>EE_(dUU5l{mu7=-jy<>pee!WOID zQXhz$jD0yJk1RwLWw>2g1{n;E%M>uBGAw!Jo#$+MO@sxY78I{ zR!-B|0;?kO`J#(ZA{q)P;T`pGRMyGo!;#S>*a9M8Vj++EEAL1Twc~2SJSbM~pP&h& zOHdIymMG&JB;3Oh(Ig;9C6&0a1x2LD^7m?7>cRJtY>3rT)P@W4LDL{_^pSvO0#_j& zzQA$DL`DOv)TtR=ri(z!0kvS*Xax8zD9Kj~;ZgT*;JpHeV-fjq1gSb}%8#EQ`ZzD{ zLhz#AzTihDz_C2oe4cz>Y(A1&3D+6rG_QizTY5o6QVhET_B)H1(5!K%G6PIcmcO;# zx$J;OayHk(=8JYwSu62@qsBD;srogpIj%)Rt%tICjc~`gC+g#ik?*~^oQ-!l26$P| z7uJ;W&R@?gp;mucZ#~P4DBzBelB2z?QCx=MWyU$B33WQXr7O?cT|cbMPRt> zW7OrYuz!r^(g|V7DpY{^eMhmvnC=Ab2RUhrUV=(Ekxycr%(x9%VJatb;~j#CqY?24 zXVLvcQYbc}r!a0-7;-4M$i4*G^@^EUEmiCBJ$GYa(PNHEJlZ!({3i-?sCh`$%~Uva z)xtsr=F?i6C$1FAO%%jc##*cssm&oE+M3!3sOM zM?9JpcCPn7?s3 z8=-|QeVJqfoAnYTS~_#RVZN;BnrjK4%Zd35jV%sVOlngIr1Fx%p#Ht3w`6fDUo(;) zn-*BqHGPWm<#ncac`bD1Z4Vu`iA0A2h(+U$sO5vGL#+KE#>2j$KJQ$EeY0;1EQY@w z6kH5{J3L`*4SP-qGq&!CZ6)+tbp#Qv{h^3sU@Z)K9}t2>k8N?*28j%BB~*TeH7ox? zBm*;&bxXDd0o$|$3I&F<1pEPCG(a)Iwpg-l$~{3;7~U07xG=mc{*xKD*7$_LVe2m2 zR`#{cUI4`qi^e%D|F2%K!4%tW!xChRtrowo=Az#sd^<>_3fLXOH2HgTjyD zz4E`nAX_t&5QuEu%xz`7+ib%#*8d#=w$XthSzue*c`fV-k9L0{!th>$!i22__zFdPygw#D!bq8Q#9D5x0Tn!m_mf0?l@Lf57lzaThW8)iTPySA9I z_OyaRc;VImSB}@;hHQuDwP^?x)oWw?g~WSpF=T`Gg>Mfi;MZE8Bt-qf-w2BQg}>2% z;=k7VFd+umdLQ0aR>)P?5#gRnP&lxS7=Yx0ZE@XN3_zvG!CMN63&Xn$3K@pK$zR;C zH9rx8hpqc*TUjwT{RGA0+6Xa7DAyK0t&Me1m@d4Df3v#&>LS}hMs0QxC~(w<{?G&| zygG=rA256qK{2K9k_5q0e;Ktc$kV1#P^hQqt&@l~heM^(!z=t30t#;<6b5R|#%-{m z{xWl06sAoxp;$~CZ3hWu`uEs_%KfqC3R&W{Zbb;#wBD_@mCSY1G$?k{hG~!xr!A&! zFrDyC2ZeQ7GjWscgueue@3hw1(2%FU8hTr>r&Vtd;Ra(U z32*s2lL;(VHnB|ji=og=_=_Rk!IG+kc6+b5FzHwdJAnU!}n%bLg8mNOoZgnY%y^yETPCW zYo=}DX>cRme-LW^YPM}*U^Z=ng28Oq1WASYcblL%F?gH)0~Yg_5!+&~Y{niGfn~!8 zNEFK!BR0q^_}GJjv#fWawcZ9rX~By^qFVm)!M2bsn+*vCZo&Bg`~edjD1ysYAFKmi z@ID~?QfL$Gg1>_ByakHzveuOeVP4j|^0t!UZ$=Ch@nyqXkm#2!-dbyZdI%WITBOLW zi9%6f)*=NG4f9v1Yzq;yX*?7tX2W<$V$2rfHvlsDhKFLv;4Q<0WVRb7e-UNYqJj`s zW<4slg*4c73>0BzV;q4*&1`kdI(Y_fDinNXJvufBG=H`4wn#LaWA z)_$zLM}R`q;3c=osab0wg0PzWRegzYqY_k#{*8Eq%+p%d! zJy1-5HGACu1q`re2O&DZW|ToO0yf$O5*D!4j&*hb-VP{y0N##&V+ep=zNsPUf z(qEi{weTYZE7)vXC}hD#+d{GnwzyyeWq{Y7@NPRm8sJ3YxKUgyYf`5Q-g8v3Vz+VpqLfB}+bsEAyEQ7)#Y*+@#N7!Q7+S(3^n1I)4+t`G4 zeL+Pa!#e~&VMAYNkOIDX#M+Owc>v*kqkr%f@NS1gAnmzQy(bq#YPN50x-6=$2t!K-yTp%47~3Dm5Z_NH&6kZ z9SV@K5jT*ejIDaEgER1YLa{T}TXF-SfxiR_qJh6;jij+|2ocT@D5S=wAy90Mt%j_l zHtPH~t&1;~(t|1@4IcFT)8G%VRwV*G3*FsKE?iXgIK3M5Kot10Vb5xgnec)D&9M!<}m0AvIkjosQ4z~|VaDcJw`_1estuq*#F zB^>yk3^!B9&(@*n9Wi7vWU+AE7)_8N5ley-gQ7@)a)KNQ{9T|jyyNadD93vYNcfBY zgN95z9775WT>T$7Wc>nySz0$F3Fh|PkR+Jlb3>9~{?`pjf>~fUBnjpY-H;@hL3Bfs zV1C&RNrD+iHzWz>qur1sn4xq-l3;>w|t;o{1n(&6ID zp%UWa%Ar!?;>w|t;^NBfA=2XF%ApeD;>w{?nW)5$Wi~WS4C|9Ba_r1@thRiYaB}!AW-+%%pJC@N*s2sI zbGwnAcvEu%z-ydU30BZODr~NG(ja;{-%(iRX(!v(6c?)(aZw+7ViEu3k**rjFNmlw zHTVZv%zIc|iNs#`_nr*-H>-ItRwc!cUe>9xdgxF|Yu{(#C(I`L^u6x&(`FyE=-PsJ zTpGLcUz265Uafq5ft|=UqQ{M%Pd@%@xQg9LB)_C1*PFwJh@Yda!pr|ZX4F`%UsctW z5|MaNI=w-zY%rN&-;qDdDgrC~OZRUVD~npcmHNLv?Z&E=)+IMS2|rZlke52$cgT*l zyjRqcu2_)qF{PWeW`sr<$Nx%hj@295?>;eD$3vqz)NW|&AVq#p&L&!nM1^BVZsadJ z)lh|V_yiuSqRu>Il165FLf3_&FzQrC^110Gx@|s1TcaaOh{w_bk?>V1kM6_!RflY7d-L4v73R__w{gf~_Exag5E6w&M4n&}-$3DrcsMc61GY5%}D4Dsi!HifEZ4yp{A%m(PD>9$CGrsPK>JO|Dm0 zmvv3Qy0jfH5>%4@-Lvm%#W${7BMFU<&-}kgPqKR7YfsMab?Oy^O_yGQQ5$QkH9n3O zwh47hgB^KLMYsFIcaXzmRj!hvtc^}k0&}?Sl|@g zL?^4l)knrNY#$RhaEye(DQ>>47g@BMotuQW-m=NOg>wi-=lvQ1tB}zp0I?msC zd4$R^*+M*gXOaE~*j&uHh?BSSqId2pU)_b^dYE2zaik+)BDs)~Rgd8te`CspUoE{Q zzffNW_wTNLc~>oE^=6M{xv(sZ6B?!ESFW&EWPNWwReQIn_bxJfOZtdP6#C-{BHQ9Rt?#^Ty}JF3)S z3HJYCu9wyNMvp8%|4kol(aX;?6nBfe*FPc2zwrT|M$!ch>K)4hBBNjCU!)1~ftL^<_v(jgmti|=safZdmU?&a{3G@1( zn&htfo%KBN57_E2V6cnl=k9R;(iZIf^HTb?U#h(bu0c3}Us`{m|9@C}>!>KWEpT*( zk`R!FnV~yGQjib^hVCA^8%YUi=@LN%rMp2#h5`c7&JvL!A}q8K1+{~L{Q-i@r%4#)heni862>mcC{7Qf zXP}4E!`SHI6dd#n7lgzpNQr6ih}hWp&hiUM(&GzA!in+m_$9~$1w|z3CF#Y5B;f+| zFwwJT*@gJnxwybza^r~$;hm?45fEOWBcP&Z;=-Y)KXaawR#-%shz3s*CJE;uAf%@k zAP^VexG2F-$HOj(fN-!~6yl;s5JIU)&KyQzZh_Fd{YNB~+&4JXUMa{j337A`L;+?G z7?LMD;W&LsYi-nE1sPmVcrM<`{ecnOI6hDVcoBCvSRO<5 zpiywOSM=9sNNd+huEZm9koZl^*22yx)+|UY;OFuBJ(liOfLcN1bJ;A2U47=b3=;31)N?8KAcEA zf4uUR12g%lkOd0HU==-3Eh1jSONg2+}b1n^+ggueSW(|9BJ|bbSJFp#6UAsI`yla%Ow^t9OM6`PYRb$W6b=J-u69<9 zDK+%f8J0nhP(&%(e251asDW$*7*|xY_z4i0a808rLQ^qst9ds(eLrvH*$EpfZ0 zN-E<9zGid-3=%;77M!2a+dFJGDyFl76nStlfw%Y4Uq2gIUmgD6PmiV|9)ktN;EdR6 zC19QO*7bVgFSqh(O>QuG$q~<%?UQdm4HS#a4;?gQ0gRAUxY7_826?qTxwecA#T)A&IqxDMD*IMRnn#_djS>QDV0s`||v&1yN~MbLnQ z%mhFYpbh&BEUz%7{Aj(p)|M3gepV^4uxTPs4R=>nQNEwm0(h>Kg9!K*xDI zN*DwgE(vywv;J<%Vimjl)qz}SbG&+UX}gSPn@?WBXr3{?L)uz4@L>9Nte}!CCji zYK$r}1*3+;o7qWe}SF03*Ny@SgP{c=4ltM9pF@qKzc%MVy>& zbIRKI;$(>do{j3I9@M!_VIrn|?S@QPr=1>DMWUl9y27dt2b`5N)j=BW{c{Du@aa~D zZf61OcN@Xz?{Gc51ko?eW3petoHDW)4Dp3JqqBl32TdDR`tyl;1IIwDe`1U4Jz$Q5Pe{;rf~sTDnE5>R{n0-+)y4^F(z%;(dyndIsV* zFL4_uIczu1>|W|9R(kpPj7KBRu@%t349yEJEJw=9%cDwS@d@Q2V4fikUNI7(@G7zp z7b1_RNK;FH2vziMx_HO|0XCzURe==-X79=8Vdm>`;2om2_Mf_e@sR%&jvU{s;C^`j zj3F4DYwZcROqwa*PJan|rWKN~y>>f6D)^QG)xCZgWFY0@k@Q*{w&P#4otaDY8LNMx zftXpc4r7`*8x1cP862~eU(<&hIhTps-TTI0nsS@RTuGU5aWg-tXCK@T1W*xMcUrM= zNJta8gN?~Gg>J^S4ZSM%jl3}AYmH+Ip#xF}?3kI6n8SyFY7&}-zpc~EUNGV|{8@L| zjz_a7#b@3i_R6dGm*djV@#}nGzT9wHGR8jm)O{-Ok-XyQv}NFCeZV(%PC`!nN`Qc9 z2U0*_@K|bR6Fi&~&!mW+q3mFknysXp@I3g&QQ3{p$anQ-u}%olzAkfWS$bNv$Nrrs zq<|nmL)NKQMBkJw`c8GgSDr-4dd*2JcwtCQQHD0Vl{S00HUQl5|1rocP>jR~-E2KK zkQJ-tEoD_|k9GKTq2R z_r;mOMFcv7A8bX4DO&o@S;G0njoN@jFzcISuaq1c zFus4=r@I1z_#9V=t1~YKbp9grp*zy6*sMbd z%1^1F7OL`^ur^?}R)LDGc&E zlpdqESkwv1Bt9jzJ)u2I79U~pCPUzTBipT76L+Cib*r(SI$OOLl)Y~vjc*2XGzea2 z`1313%#PBoc_T>EEV}JmSecau6!Qhg|1t{O*OmT!C9iAiTuo z#?{aWKj)r(uu~}ft=J?jDC(uy69Y%s-){|k)((%h zo((CH$wA@FOf}D+H6@1~3Df~@XX6O&l4Sw8_MJyc(k54Ubz9#qB}G%h2>WuyYs`<7 z7S4Yy;l*pX_ihx6@xHA1#rQdI>q`q8Ve8jyjnrQ}5BA5kL_J{;V;v>HgN!~iikkE_ zmXHiF&lmXLK37!_QNCcPOZ6<5o(Hpfqu?IbvO8bWcS&I`q6JBsmFqVCIO`7Xi|}?2 z6alOpVd?Rs%+cg)3GyP2dQVzp48G$9nJE+$yE-dDisBgc)xJchgtb66U2a|z_iFmd znd!pu=UAU3NReI0(A`r4=SUCWjEa<%%BFvvkG1%|#9 zDFebCB_XY!-XJmpNN)*Rep5Dka#^Z-VFEX+vxV#_M773s|Lh;LimLK&oj=~^#DEmwA=YyGTeWF7>#vjH26x*-@}bh^6^MiPj_0o5Tw*N{BU^pn{WwI2#SX7 zE!0U0-n6FS>&>I2ar2k6d=OWwZlqC1XZ0UXy#sj>P(mM5H;j(LCpj7*54j!%ChenH zWIh|I;O#i5xW3l0$u+ifzftCUA%ZaPY3;L8AqiUyKHXXGkN8y(F}KtkL9sx`&thGG zh)1pniI#UsH1f-(I*5#-?A87h5i~AcFr)PHPmSBWDg_)1oGojnsmx<{9-9|fj1>82 zFfQ0T*T`-KoJ8A^L3Ifz7)`6R77I|lmE>wlNo2TI#>#VDox7!2i z`-Or78ZI9bK1%4M>cAj^0|A)(fzBvL1iT8O_bhw)r}%jSfA9b+WsS(A?MrLLqYgjL zy|*BA&=Ux0{IjC2bKN@KDP9q`{rVK{pav0d2>=J?yiRBxN?3@i%&bbr!V*U zI3Q@1e(XIg1`j`A(1M`7bA4b9J68K)BA0vKaw#tOONFP5xX3eL*zeQX%|Bp@ zuZXu177$Z}$QR4ukDmT& zeKKfW^!f-7YZ>2lGM9^gS-}|QO1kQ=`Bz(ECleqZ_aX-~skouR=@2guh z{F3{5DJdnRgqNU6KWY{0!(AnEUaj2UX818Q(3f}i*geB;pJ3%*$8R1Q(ajQXo#iFG zJXG)DM)v{~;QmJ-w=dOHoxmP^wg}+8VXKj@A zl}?^l8!vLqOJ8X|I8XUJ3_%(pn`9$6Q1yckC}9aNpCzjMxwAkx&k^*5t{6G0Qh@B` zr_t$6w~%}C&FBYb?q$C!E!MggE2$;wZU-A^qVS9Xvnp?Cm6V3aZLBRmeXx;bW?foq;K5D9niIRF^GdDi)zFz3@7L(G*hnjXf!Rckmb-}KJjaTJM&wuUM0l#Fvu(MR=w+P zxW`mSeHj0OWyJ&8N<4We3ubG8BFXMA zvlu=fG%AHc;y zk{uo@9PCE2DT+?jAjuV98cVPOo2aMp*>7HB)Hv1-L8-1Z?{dCJRa6Dsjrqz>dsZB79_PIF0>(#LK2Oy%1 zQO2MJJu6-*a5L6?bg_!lK9lL$_vjQFMTs3F+1vAq5je6*4$l^nLIg@!rgL?f8Y=es z7Q!Vy@wMyK`2wpC6cSdekA_h*;(4dMRY~YoUy_P|SBhx%G5!34EAy2q34Wo~scu}H zWE_q7l%rLVL6u-hK2|4To@=juXoOGxC6>&;Lf86Xv2nMG_JnO^`=4%Bizs{j-&dh3 z#9<2!|9sNI@$AZ_zHLOSx|DtQRg5W z@|YD19C%P@Art~-1KT1>P1*U+5u4&~ zYH>g?wW$9|H<}w}=HC#JT-5!nr|{z2U1mR24K52&LUP8lw5+%VTTuN{)E&kcM~XP_ z%8x;fmlZFVHHrw1`zNn+r!4Ze?%c6as&){0_;_I9f#TzA+HiFok2T>e4H&+>`NL4! z>_dJaa&BGQBwt)PF9PyleFb*1_C3`avN*XSU+vw|hAbM@4?GR<@=_&9vxUWdP z7|k;M28Sf@EulufAE$`$U0t09RyIp#{cn)FUu{3yQ0@MN{truHT|k6pv8Z5Mj(z>C zr~TYHMA&QR(rdLYcSQtP71RTq&(>^CsDcC&PsEX9@YkQtWZ||ts`f`fW~FRqz=>0Yc^YVf%@diMcUwV44Cp1{q^>w*Ax+a)%dMaCdUfIBt? zT%xDsXXIW!RE8pHD`mV)5PdZQj<>C%^?gI5OT*~pI;oKX8|(0wW^h5hWG<6rZ>~mu zC#B`~?(FMXzE)Y~6tMCNpT~o{*ogSfB@qX%i?KNk!LHI@Sa+<)HV8uC46OO)INlOV z;BriHZXQQOc%)!t{q++aS+E)D6s8I+_c{);u-ZIe6Hl_4CwaWsXbSK-vim1(Cpzi# zll+GNFQ0=b1FVcVUKVlEU19tDKeRgu7px8j9?pM)o|6KFlU$*bKF4}YG>fIx7IO9q zY_h*(b)sTpUFCl1LDGadgP>dA?CS@IvNvH6H!gpSC_?w%nAKFhT#(6Wn&|)W9!I)) zYa+O4_M29=IgbG%vBz391u?lpo-k6uG3hJj7wsqX9ev(I%?%{N;L;D2lAnh++5yXt zHBX0TJ{NwM$laMo+?6GCeV6pf)uEgh3)lC*-JH|!{akG63BMNivlFi*^0LyyZ21?v z7?ooRCC5k=Sbzw;&(rPT!p6xMsXWO$J?V3-Bt4E`u`w9t2q%4x6$L=mddr%LG}it* zQA>Fg6HO~Yn&sK9XkCX8otL*4nl>??od(tIYYO7Lr}EdTU4XX97XlPqss)3t}n zj$EPrXC1q_K3(`9`@z1c9Ufgg5Wo>>7IuZUcduMHxQ4O1u)`{4nhUrzc3dHnu*|-t z^#+;72!7^h?sSV+x99y?C4MJpT2v0|!XWs)Ge=B&#r=|Jw4~&Iz|VbwJDL8=k#1{+ zV&ay3U*A+y%@W5c){zM%loCt1Klu5nKT;%bCDk%)T0W&Q{(oxPkAv(@=pw_ zFa~!f)xQ!tIONxYn3c{mP^nw^nMoEhYJe>63-cS+vyfH3LoM=)H*0K_GiD|4JD*Ro zfonSQpG!YCBn>db6ySlUdGFUn%=vXRA4eVTCNC~|?pyjq2i2wI<=b*%e&*-?6~ZG{ti`>@%SruRhrSruYFy#77Qi&7s4Y* zEpX49YU`VZglTuDTz7?n;U7n&vb%4&JiPa;Lgf6%&g(p55s6vBic*WM_4?Ce{dc`Y z!~Y=!ItpwznE*m=jtaJ2lHoPa8R~VV)&BY=t$nolYi|WveoDGW^U>80AU;)n01V4&faTZcnO{tnW@}W`5tiWQX-4~i>8hHCP33GI%5RY z=%%)aN*7t!`39Zxd1z4AM!iVLI9mSU0xxJ=ir^2!pefuRYNR+z(PLA2w@cmrKwHL% zSXVS{YAO3Ck+aXE$*sdo)lo09%IelzN?=N3q~3k^8~5o{&$r?MG}&Gybw7$4;{s@2 zX1ar?@TV!-<;qqr?tbeC?hFLwKNU<7L=jA04CbBry$kpx$QzM%g7dAX)#dVa={j17 zYuGzBHNkxs1;Q#2W2omWHwqh z3R?`}+inxKTuY?i@e`koGKy5eM5qczvznzM&fbR(;Pn)1=o>Y~YgN(Le!vt>fVg3e zBmi}_JD22HsE`v!NVp~VOOZt|ntfw$YHj!sHd_$7{F7KrD(>%i3vKG8Y|npb*q@*a zkho#KLAf+7H)&t5_lS{$m)}cZ*MH`o(Z<8O&|O)xJN0)Yv_SrM%c~koX|^PtM`|Q`%j*gg5&eCdboT)bUH9AB z4U8TV0%Wj_6)RDYpMkslOp{K8t`nhIT+i#K8qUd!UcCmJy-rm;Y>O-+w!VSW?WWt@ zdr2Yi6&#nWJ9~Sru<{6TK7SKFrp^mHv7LDLU>rtbVKpl+Z**)Rp)qG-6fAC=0mRXn zm>B=$O;Pw@M=V%vb?lR3wO+@YBC+}u_#hlSA^(YHxykYKiQMcc6>k}JcN%~GE#8l- z3)ES+?y!|yUM(uVISPYp>)T_f0I^C}<;2H-TYD#F9mU79p!?9Bk@&!NzeCyYE$s^CLfFxm~0w!;7CSEoCx)-&H zMqq8wP?nQx8F#&XtR%M=FWWb>vPyl-_3ComuW)?cxTMB&OTy&idFO~24u}LGfGIBP zvC9u`1gr0Qyag4Tiw<1ZBSK=$ZU6t^ykK>1j*nG7A1R5uyg6%sns9^o~$J99KHn4sL_=%H_a1yn!-}bRi!O9V6 zmK>7tnmylIG=FHcYZ&&Yg`Ba1mJl+bjs%(1)gh91C1r24ipPR>C`%Rrn)$u%*L}q*1h?*~RGU|6m3KN? zXf!>JZy0@F%lVxr@CPRN zR&Ojk$PU%mU{h(#JIFk%z8HxHg9rd<*}*c60J%WxFtS;T;!w5C;X3~$Q~Rt z3qupaYBfPvmUg`1$Da*p+uMYXUvL%Jlcb33PZ7@h=75uzP7bvA-;Ti*c}wFXtPp5b zd7psQZ-Un?mT16QH#l4lte-3=!!Q!0%v!R(eHBq<;MVIzxl5=Lh11$RVZ!~#kihRI1o?Y3OVvtgt@GV3ia2+&s`Gkg8>z|8 zAKq~or{`wJL}}23g0^?{tK=Alq?k{ZX-|J$5@_91xEb5@)~ht|iMU1b#SoijoWji< zJyoGkW^`Y<+v-{--c7N$s_gXrt+?=Yc9;p^8)0=JLhR$&IDoI--MI#>xOJm3l|^yX zoBcVOf!nkpH}JhYUzOw*YZ=)(sDBQ-|MQ8O15y#rX71i9LvMm}f=N9JIiQpDN8Yw6 zR2@?e1}Ylpw&PR{R@HHmhCE4&l%`Z1@FpXc{_;pu9Weo#^C+Q%F@GndIXbgq zTJQ!UztSk@@<|un!xxy(iF$gKz!5+5D}CH^*e%@@wrBP%RP6-%%bS+6_{$8WlU$eezDgr;4J83RPBI!99BI2y9THam{nk=AE0mAQRNP1+A+)#dQ{uIy) z`|fs@uWzFZNJhdA=L882R<@j~s>}DXaFGjPd!$qu(s8%Qjgon}ZOJrBWp;@hkLy)f zQ+B$1LiYpF<>MZZHWR&a2Z>Oq(!LcVUEsf}3<6+;sfOSbu^bkb;-C^Ic)}H}z{*y6 zmjBZ%i%E;%=wT4b^5T{xk!~BmW!XPzwVSp*q*nBnK%5St9rtDoZ;b^8Q8L=cAjB%` z)#3ADHN^ZumeZA6ZB0#v&ls;YI?wUbokg8Vgj{7F91dOS{n6gYSwy*S&O8@gg;SJO zK-h#hMu>_E)ygS+L0P~8Z^%*Q*H)<(USK%8p6vW~Clq5m#SaFb?@T7n9U9+qQ0U#e*w?_v#It#uxmiqE#}q2{R(51*LUu4 zB%yYHL$qKJ{h6aWDr>y>_Lc7F?|I+=ZngJ1J7h)kBV{sb5kXV1fYa@*VL3@JORd0ov1X9cAp z_t=|B)Wo_Ch+`e%zT~5*CCwmd!F~@Diq%(Y_FCd8POicocS~T`S^`-nz7p(!ctmJ58-P?P4Ik?nJ~gTX`UP8?h@UCHtQ`7Z;{C zcklz{&(zqsY8Xk1eT{z{ESsQ8L+$_$d3#It#(6vAJQ##+jszp4!f$@q&ZCF!!QF0J z1%6t#ds$eZPbbSstql2F)0gT09BxCrk0Tf=7Uv-bB;@EC9du@>)rL(Q+z7^^8_yb0fmb%R(h4&34aYk#7i9r?~m`+DPL1 zrmtw`(SM(ULlxVZf9bwfHXOjOLDGmoZk^tprtXrX7-pmuwkxN> zHU0$d)fCE&iRXcFy#BAx0-F`W=+Bd41FRP6B>f9M$7-DMkJ`2H$)ljaxI&Ne^LRM_ z(h=B9Eau=R9SkdCAOnGBnSA^yq;>w1bZ!3hcadr4f|g!CbY1Sk*j!J)X5)*@UO=M@ zb3mCe`Yfsq4Sx&}r%=#ob5|S7#L3kDD=kdPeUpq-TkM!dq;n5$1@!6>8tL9eI|atX zI<~6ud=gHoa4k!?Sd50pBNBRBuBr`ZSG9(is}9R`JcwmonbeNGD6b0-xll!-%2n%j zY~C=Oq#lLyKRtOLBRo~!uci%?)i);RWTX7kyx!nb%j#Ix&-p23-HtVZL6ToLVvcDu z)lfeEE=A9UP9aCVsI%NiBepg6O}zn%%(+kCIB%BQ<@8APTgX%$Ukhg#c`?2B0+Q@* z+_xUn-5jlA(06x1?%aA@i*Lb^9LG!&!!LiGg;K${stsnj>>u_8C6!7ui~tHfI)=XHjYpz z4h?BwT6?WjZ=)JU!}Zg@?rMj0)Lkb!h~jHtY2j)KqX#AJp=lVYz}kHe@4>Sqzqd~l zI*jV3R_-Sr{XR5$x5e82I}-sV+_}J4RJr0&$bWDAU+z8bA?8)t`lGefyD$l_mTH~O zqP&TL%@QSDk!+r-_d~y$4_>l?hp1C#DMvLTeH z>`mRscEolFKVjAtQ9X^vKKf+B?z!CdU~);2Q&30)ldq2Edx+0EOe@q|!;^c9OVa%`qH%x>!K~ zA}9R>R!{giR5J&^Yh&-Oy!$s%JKMbU)L@@(;ogr7#HB z+hq)A2*3Pb!ueZq<(iLJc!Kmo5Qp>h4xQU3rM7Z9TLXz!^_biZ)`#rrQsFXxO*hL<#CnUiS!#{ACEr^?6X|2fFjA1l1Pva3?51ValbJcgNn1R3Q=< zQi=mwwox4RjW#GaneI67bx;|-CM|dhLibQifmHT~rR=Dz&xNiihV*3_6x*=TG#*4A z~Btl^|E2ppySi^>6Uct&vC;bGb5gD{y90hsU&I(fM z(f=$pHZY7FpL8Cq1`qsutbri-9Gf2aPip!9D_O9f@f2lB_aY8_->Dv=0k~5=KLT*4>evTxr|Pr@aHr}81aPNnP6KeK>K*}brz+S3 zxKq`U0okH=iDdwHsyqpRJ5|B~z?~{I$H1K?;stQ03OE4Vsk})5cPb}{v=Bg^ zY8V87JJmCF0C&n))~9<|48HGF4{QP4soqrrxKqAXWI5FvIq-d_dWZ(#PW8YGz@6%$ z6M#F_0}=pts%HxT?o|Eo7`W4Pk^{I?HCqF?Q?-f$xKnjJ0k~83FaWqywFv;YQx&oS z+^K3R0Pa*33;=hk%s+rTRYnTHohnTO;7%1*1GrNKg#hkUPWK^YEC4;#*cAYGs<|Nm z?o@*-0Nkm%wE*0ys)Nu%Os-34jM(Y%BxCFa0)F?hh4HH+B4a|#brVL_1<(K9)gfG; zIeSowYHjC`e^hpsuOuY%&!hI$!`Dyr!K*E}`Lph6H_}jB5L;r+OY3zcrKnF**PSu3 z8K)s;`PC$Y$v*rircaBjp7rQpSz~hljoa`@squNHXZzle<(zokrD@CwS>N5)&KFgr z4=-16Jj=I&!h7j@xLGOu(8)*x>HCU#Zu?=-OK%RL*N3gtL;`0h24-t5p#;4{bY909 z6Rh3lXa??Ci@LeKE$gr4TTbNV%dY52W-SwXSP@)=%z^Dz!{T~=P5QV zh)*taGay^5oUhe3A0-z2F@apvi75pT;NcM;g?qqT$LjEd&#}f~;PaD$o|A$mtZ^nt zJRUblob)XxH9(vc7M=7twwMKzPJoy?KJzh_9-DhX*E+d4K;EKed4ZJlynOD{S9kVl zUc3SKvv*XwvkgI&AWu)%4da#@!@foSBLy8(s8`uOpyl-1Bfj8 zqokmbI@kMfJiD1Hrzd_B)v?;fnm+cj4iF}Vocton#em@L(xbHtPmnPU}4yXxe`25Ov!$xb75fx8(agDziCcB9ks$0MJ z_O7}MrB)HaE_KlL<@L{?5^_>wV+p7ZYUOvsh<4&KT3Zk`ZV7OW7S#TLWaPpTX>c4B zO%%V&lTloIJR?8tz7yxA^iy?%6XD45%Yf&zQZD97*ua&5i$D=nI13(-S&zTp?Z43- z#5=)7#~DCW{G+_?7kDuUtj{^`n6&C9GKymSG5orKtA(`hzL>5C*WkbZdBB<%82{a% zJ7_=0xHUGN_3p)0lP9!_CGUtgz9zi@1jA9-Wm@FCApz7A)+SsvhFjC3U(T-^KgR*t z{J+lYV>kE2e{=h6F%mBFH44u@An>@0N4ofw6g+^O@5p_7rjlA_r_cAc`1#+))M-ZV zot_yP^gTbnDi3!yEUHk|FZ*(w&y@#w{!_Bq8Uz?@SW^GS|IV(t!SOz_HJAxvvB5ZD z;5#NG@HedC{PpVt_Gc?7l}WN>NS+MY7a7USYQ-+EEZj$R&`ASJg~0;LV2WaetQm0p zCW4-G4%vI}j7XhaZakcA30i61{wwh*oaNDy0%qtCs!s0XPzu{oLYCzVsR*9{z!3uQ6Ry zW0yQKAByK$7TXG=7oLZFKlkzOmG>&o#@H8)Wl;HlbtL7@i*=IqMs^hT0`B#Z$k1y4 zPWmXnz5^Sj?PflY*Sxv?zqQ@|{? za}^AgdZY&6nz7Xoz#T$QaAtHV-`|W2NA&jR#;)0hx`?O3dHf9We{54}9;Y$I3faIQ zKYaPaGUPLSD2{^Y2PiHoAUkfN3=c&XLa?qlID%wj!&N}Xvw^`h#W<{o94vcO6Nq2~&2=uD`rk;Bysk%`rN}DgTaA!yAi+GFv!&knd zpD&jmmy)q}l8GO)g!aXE#$T3yv*vjm?4>ZaPc14I@NkJuT+q@XbM=$js`o6#NqaBfhK~ANwv)T2#2`_B!D!9PSLluI%y#2O4*$3-RoFFlr$D03%XWGqEhOCW zm7xs2_tk)|!^joZ7JW$|R=O%oX(kHOK_5ZNcb=;Rb zHRCHvxjB*gJ23BsaqMNsO1cBj2TG4ZtFQNP35=p#{;NS`-fdwpg$zj&&Bq58+!q-l z<>Hm*C0g+@5Kk%Cj`g5&doi#jlJKLA2sbQ{R}n>U;XK7suuDdVbOD+__BLQ~nvc4q ze>Mo-0*rZC?hafn5ZFm;@SE1S5qL$G0u zI6DtROoS=NXtS1rRtcJkGG@UE(cw}fk8AVWk;s~Jisl2EJkd(=Vj_!kXd_(W6(hZH zU;J;)DU-mCk6wpt(&gj@fUU;UJ<)81R=K2xT?h8lqhZOCHD=Gq?$n+YH{u0eGt?xM z=%E%ub#Oti9c^~SSe|X`CsdHRn(>%l;&Bv=3vbh`N+Xo64m5` z%dEBB&hFyt4Qhrz&lou`voeMAN<_hVV(HKIjmwGwf_W)+-@-G|d&Fd#g?d67BYilV z=5+b_N7gtAbbE=i>1K5@Z#g`GhapOw3Aalz#W@m?WBnuKi44yVo5zCqfmEBfRG4|j zP4y>8B|i@cHUXapNA0=U-S_Tq$knKE&@B3qUu4Pd;6A_Vw)IMlK?OdcFDNz$%;RQ-AZIuDQZjM{mzCJU5P@P!{^_tVQ(UanDWHvsr8wK9|)W^BXPP zbFgEBT=90x)}J9eJD~;QL5yC)+Oi4yE&TlDM=Vnc%)sslmV~6Ud9s7Gd?^xxl%-p} zJ*}2mfAwc&;aS6&M@A;j+q=W{`+trd6IO8drqD7VP*Cuc0#lzQ#Yhy^-~$9x_!OY) z@aXL<)?ntOZvvlVtMFh>f-ROl@pI5|0=@#9hYfH(LgS=kU{xWfK=Y)S6Kjzd4;KUr zkw-e;E{dzs`;v)9Nuh@?8J$sb+x<z7Ln>u%Z~uPC7F;qD9iax|5=aw~exY#^@*A7n73-T>(h}IM>VFuIcf5 zPmL@5&o_Cto;qg==fHjV5@em2xCxG3mg2%f>qlX$>WHHcXFk2xHF6s67^Me(x4Kzy&U;4~TQR@nS8cW-30$+OXe81@q zv#v`BvM+0N*3apiGbFlm@S!uHbM zCn(G#*HDl3-a3WodTWXDW=JhCSz$k{t{!+8@BzAG>q`M9T69b+ld-B$cSJ$I+KKzU z;m$l&(!8}<*981Z)rB?Yq#SlI;uR>0e-TXU#D^m{di%U^oo>o?pc z-#p1NlGTKe=NF<*QHQL@OON`cKSV&}FkNCW$7o$PQ&ijk z-8^9!ox)>0bHmWkPv@ed73;sl%t%T z1tPDYpN+3DTY-loukiE}64TPjifmAj&N_q^va`se1mhXM|7%M9?+`0SpTW9fiVH5i zwv88-hN7HP1*j4Wr+1{EBS|&4X`|pq-0|9^FO@MvJ^mD2W-=1@j4fB@ z2MqpFYU`R*Vy%nBkDV=E6OQ+FH%2;XI1=}{$_d+x4cV+$eo{zjSdJ^*4UM!)9N1}~ zVuKs3OaFlyTu;Oh7CJGYOL5op_So}S`OC%Jmso%JTq{2e^$}Q`y!n{@Q#Nj{x`8!) zgtot=M04<0vA|{H(Ccr^=!Dph<6Z+YTh3x8W`U1whqU#dHOjRv!;KCa^M{JGl6{Iz z{v_?_zoz`+%%96HEWrOTbo>wJ__U%eu;)3e7YG88Ybk%c2YX%UVsIF`HGhTG;uQw@fgV3hZf2V)?X@2+;xoD=Q7?FgygPa7Tz8xwExEEPbyBfT zqVf#wQtr>^j?RalUgeL$xkl)@pH49x^XJigS5qj+jQtxxfGs14v6Gkt8pfVt&5z;{ z{As-vQxuN76+^g~|>OQhnD>Sy{N@9|iZ8qD?e?)#Fr_G%{5TvGhGaEs;r zv1^Sj4lXfbLqyqrX(98Js^|Y6n5Y$Hp#FDx2Cj!JA8FM`zCnruUQbIEoPwGu@jq44 z=IH1t6fk`fns$NU>N%;btH8=%!a>tZ)A03#+i?o*45O1jY&alpp|<$U%yT>7I!n&E zT9N@7N48!W*m0I4d-|Ug9kyiW;W=OwOrn5rXhowDlckHe`X-J$yKm;w8Y-V6A(n88 z%T43GFBa=@OQ2{rG>e0MptG}^W1zpQi@lR~kiAo|XMo2QTR%H5$3U+D-#{ECSofuO zF*q=|pq%-!Ir*%xue6kz@}Bf&mk~^P!E*BU-zgF8Oq0K1^Iafk4Al&dfQ|?gFH>Jd zrMMrJjlLYEeUG}kuu%>3kOug^_@G2^-0*|d{{_r>5_4noT8|RHnC4XQ<7Z(Ou?smjWi@`@D=5Dii;GX+wl2u{I{Yg(n&d8kLuLxWFudg{< zrf39TLYB%X=~xtDegop%JBx0Y9op5q_+GRNErywB7Mt=`$^-N3RJDsEd;Sx-wEp?R z-S$KVepH;-b-YdS1*7rM2-h_dSH|%3+ZP%fP*r}rz$#48Pqn8)%*r$YkJ!|#F1tSBS^qSM9CkkO7j$btJozgf zx70ThYv^9hXy-=l^6ore1r_9lJX2Lhv87JA$dH=0#0AcuE&DV>an$)xo$Ut?p2i=a z&nTf4VjH+w*7@aWb$#WJ$oc)9_rHm^YQDc2A^|ZuYrj9WQ@BS)@2j$z>CqrECADY~wg{=5x-^wa)+UAN$35`7s+6fNl%*uPL1^_%ur zET0>nFcy4U*6O#5$2QA%fM%&jQO8R(MjN(I?1vA|Uy=QtSoSK92*$L5pZ8`se9{kd z$;R(^KRnDX-HJQ&^em?DZyhTQ-`&;hz^$jE>4*Z#90noy;eh!eFQST#tQT&o0==C@eB2GD zzI^4OV^Mi|YIM{f#wUzT#(*UypQ#pjhYPn+*I>K-h78=2s{;@{UhTy#U z{gGfR)d?oplzS!Noe3=oBkOJ;F~j9^{m(L-yahQ9TZ_a9h%W5;4Z2qEef7*I#eN$Na@Oo&>q9`8!wfSD)NOBMd5`ATty?S@N)+n>w?=TaLz;goa~w?Wrw5I^$v!+;=J}iTFmvY72E2> z#j6Y{oN#45({~zf^Ca z5xHIOKXe#WClPtv9K3JXufbm+-pEF4IAkSGAO`k3QgMn;J=ExA$ZQwsd++uS7ptAfL(gM5J;88_v|xb?2V&F&wnEmv=_C4k+HI3wWG8*ytPNKoc zRUMOysMfH7H;1IvT?;pFx_FL@F*`b=5nZsm`L;h*M^23aCd1p!#P7sr$!8K8JQQ;sBQ*}QfLswO03B`;4 z8iD6sy#(#Ou0%t(gM>WJ>!OtHRIWL?>#F*@IymSl`1)z7`x^%a1bf*@8U`Q(wVj2K z+O9|uA6v{nih*ozZ%0EJy!C^G)E#|=gG7*KswVD1D78y=CdRe~K~5eDdT8WDF?CIY zKo2puU@;$kQF|Am;~!)IH0DuJ4RXF_;-u|rs4a9!S4Bn7RMO|FpP7=ozqf&;gtu_8 zvXS~fa31p@DP?;U^3pYbq^GZ=p`nuZ6=wqz&0sx0bs=9jhx1K=Y-M%R=Kd=32E z#5CP)(b{gN&Mq4NzJS`!{Tj*zrLJ=Y^A}M#uIL~IJ#EbY14K{|h};X^UR4Oh;yeUG zZ3BU%>O&v^IdQnV`u|1Vo4`}`{r|tmJc|tBAhSZ|dB|~&xkQ-`nGzvGgPF`SWJ*z) zGGs^!p%9re6%xr%R1%d6nW7AL?Q;y@U!U)1>;C`u-pBv(xR3gLDr@bv*LzrNuf6x$ z&zG;d?0H8Qd`(s>GEmnd%;3dt1ft6bf!M2nKn#FmKwV<-b5iC;&hmC>H8&kUb2RQe zKEjS39%tPZ#l+BOk4j6bOCHlRl5#QDJY#Uq*H*(_)W_ZDoRpoKxB*mKzp;hAL5)I^ zsngA}{-^X1xUz#=rD1;g;)6~X#iNI5hzEfa*w|g)?wM}wDt9%xj<11n3$SNO>X32y z{5W}Jf_p`_MeUW5;G2&6BkTIm6+q?aabBTYL67#_`*4q%JXZ6^gAb8G5!J>&^^#54 z5Hh!Ep-Maq`YHE{ckxLY-MN{RX>eruKH9}({oQ>JA%(Xbow+%32U0E~GJ6= z;2g)^Nud!V7<3x6M7e4K=F_yieqSqJkso2nc5Hzqm&|IGi(V9}Ua$~r_nii-5_>IB zXQX>Hojl8?{PtSo=S!`rWvsnTRsTvYZX?sV>KZ;{L+=b;BRfu40VH$MrfB%7^k&^J4 zam5Xz%JBNGb44^cqM(%#5>V?M>;h^{ZAkC%UoU|$Y7pz06J; znng&?hGnR3BTw-g)9vFY()fCLk{K)> z67yZC8(&_zI~wztE~t@i=(ZBea;6tY*IdgOxMrMdcrjWp{o1h!)!U=tyU&4>3KQR= zc}e6DCn-=bRvfgx_u#PvAMqJI+IcVG!-3;*QL1C11&KD`N@h`~ep{k}`%Rn%N0+zz ze9fZ3{c{(kXV#mIpJJR5PNf-eB3?9-G~K zp-Cn5>u20-^{Iz3M7+*cSNhoYG5g*;gk|^TVBw)19y^s6jTq~moImB1dE44=iZ|2@ z-TodtmsYb);5k_HYwEoF?eN{t@8|H5Y8@1c$drDz8i{4UU?!hpvwpYlr9<64^G^M` zKsTMZLzncBQJ0v&?0j7hYl@}~e>>B!hvpYxP0qKLy03EFEp+b7Qaex+mMCl&AT!qU z59;Go6+g`;Z>9HGEqf|U#Jue#D1Cuh+5?aZs)x~mwriixv}6|#WY0g`JtbtF4)k{V zR%TwiB?@T^^c`Y}C%8srd1owjP4eJyuL-zD-b+Nj@+wK~bD7KPFgrY4u>R0A@W3_S z4`J=KTHtC_nPNZP`;NnUvTtwutLGmaWJg~{DZ3`s_vV}h_qUa|X2{oMzbDU~?_Zej z;`w%0+_wDf_lLs^gSJ@qx-QR-AL=#!H)|Sc>Q3H2^xQJ*o}|T`T`@;&V)y< zE5GYi5=bt(hMhN?Fee+Q#JSOHq}Q zJ*jm7YTi>RlTEgF9TnZy?X09c|8dEBodP__2vVlJzE*xQ<&&=L7lQrX>680zK4m7v zkWy5>t;*4$==xa3u5@x#b>(HiSPGV_?R?PsK(e&fkQ08;2UJ>_QYEpl#(G(oxScR;D9B{eTNl)r@=5nofgNM@E_8fXqee1(Pjk^=$ zh=5iMp`t?ir#7;fQ}?+S_Nnwx-X^4e(EPC4`(%`}h3-pxaFTbQEJ}lE*IITXay)m{ zJif+nw;*!RW~EuY+Dy}LRwxFG%B`b&W%AuFM?_(gI`;n0Z&3;Dbnb!&e2N*dE6H^DL^FlA$bUB3Zh2GUMh>^3noDEJAD@iPqJM`T=hw+7_qSE&Z zGRWk;A!N)Ev=nx$&h1~@v8Z&1Ue(mG_1(|yJ?F~4x?VDGsVV2T+H;ofL=jtmPPJ>N z-=L#lN7eT$zCmP;QByOA{x6e#YDiRM6u}mx4 zUo~IrtWaSr!6xx~DxaF6+tMJbw&V5h1IlP{5{4&?Ma1{j)m~mom7v%8)viJGwnjxm zQOfny$@`r)Jw8|z{oU`pVQt9=Z-BTFOLY1MM!YIRRAZ6ZjdXa&z1dI<>UOq_lW_~LvJ@^t{A7u zer=KXHmRjFEXq&wZjop+m3^Yt?>pT;5|$E-%G1O3X~~rQYYz7tr!vmv-!f#QVEt%F z*5udzuJlHYNvqr8Y%NabH_6wUDb7L6L+7Fl?fNc5?(Wvrj-T$~E_6STZ>QYztM2ca z-zDlMt%*fl%>RBmpXJ53np_%AG}dM@EZzGR!Q$RrmF|aBnI4nOUD(+w()XRGG8XHm z4k%W5#WhT}MQ8AHj}=|`VI3h1eXUBNe_q^lbrYWz$?A8LRzI0YgUe!s zu^*peQAPIa#?O}S_Fv@q}Zq~oPpv<5CmHt~KMnk@G^&-P+QBK4GNg67 zGvnXiD?<}J8hY4&mmPiXRBZuSGJg5F!JU1mm!7dM^5>B)A^@*v!J`v7>A z7Iit%_QyGO5B+|Ieg4M}hZdhqc06Xvc}uguW&F3U-R!)Cu13RyqL|045{Ihok}r5P zNT!byKc5n^tViaRF0(Fzla!IBGTcIrA-ebl4fZn|ug$J9My`(v+{~_slAI|l-Fxf?zRimzJ9Ll$iSCgXFPg3BeBt!R@$AM|Sd^k@ zxA*WfVeS)CKZXr7xpMRxe~$&UPk#<4IF<1+KWy+m>&;gWUb~&@a}TNEkCjN5rQ-+G z1flesw-ViYu8GTllkCylAD;2>a?fH*Ilt~n{-s0Sn1)xZC2C9TDUvi_2gb3ee8RnI zWuf1?ZrrkpIm5$3Fnqt|k;pZJj1{lyYJF3k`|`Fj@6+$yWV%ni-#xt3T!v#k`uPJ@Ih(!hZC;q^A zeM=jqB|{WtGfh)0<>?*@ojm*C;_*|hQ(jD8pJjeY<~1G=&tBwa=X^M&-JvuzP@{eA z`0HvbWgSB(CRd%z^kRCSaWDjx=TF`|U$2WPiD1@Zu>CCV_V8-sFBvR~)aR1rjWlb! zSqqO$8Z$Pw+_I;4pT=7(r^?0m2aT;CpD!+?<0(d8oYA->eNgz-o%+$5@0TY;l8wXTBV7bHm&8cbe+K<{^t>N^yH{U~kp4a8wboX~FeLEx5nk6O^Y2nnNX?--XNIXP#>1Z9%8DD-0qp0uR%ve@% z5?7PskJEh!R+P)b4l4Wp4EXg^ol$PhXOh|?iO4E?R~;B9C*LQ83hrawJvi^tomJ9) zeSoXKCg+`Ii}0O&DPGzw9Go?zWHF*lU7TOLj$K_fd*r`zkXe;ry5@e>I+_k5pkS-?S|RvPBU88vCH6Tj<>3!=5Y$w?0wQjuBp2!WGKR+;6C zRSOT7; zBi-f%TUTB53e7yj$cc(RjC9s$_EycY@DP4emDl*;Dxx$Ri;5DXJDJB4VvrH}^Xw<4Ygf!q_PzPhb;aCD z<#R|7-`6VL2WFBfk{oFBUnKEA?R~;thudVX24?oZ+K&qIOMeF;TqjBw_ZmE#;FczN zO_uLDwDLmLPW7Yv#grsU>|t8AsDoHkWe0xP%&i_+ai*ZNv6rF_*%vuQ>ppN@E1bqyKl&x35}gjp z5u~-e-06XGzM|jC0+oreHCU8e&cJsCX5P@Giu+nr8l;nwZ+gc?Z|J)Zjo!cd98)Da zZ}hsUR_Ji#o|QSdc`e7zW})*0i81pfHiJd`?alc3*9pVJ!H11u>OZyoXP54LB`%{H zmEz+V{$?RLCnd{^Wdm#U67_+j@2oHle7ZbYs~-Ko z*J_-m@)zGudS~s&Xs)Ujs1V;RWeTnv3HKnlM>@So*bK)>k7x1$V~v6~~pR@OM9& z!J>@$g|swvj5rQgPCFRy_2vj&XC2h~N*8*nk7ngeR$i-3=Y5N}kByZj9X-8tUVhv6 z4Rl-CAQCD@ldR9u8LE+-a%IBEu&TC*G?& zMh~1e!WyT4HKrSlm_0+1tPq!=M1Vzk1~{s5BM%Bcb0K|wzx(s|E@8e26Lo!s-j5uF zmIN^D3rT*<>z3LLbCjapu7RzSOc(laWVc(Krl}=fx zL@SM8q>fJMG?8ApvoQW~JZ}f{Zo4csHYsN(blM*;eoQBUH6ikztwEaU7M|U1FUNu0{q0Mf}cj zOuIa88v2Jv6k{*c0onBOhlF&l0yMSyS0RS!#hJnMv z0lpVHY^V3F|GRs$VBfDnZ{c=+t4%@-)gqzBy#mL-wS#+GzN0gs?~%xX3xES@HZ~H# zzPJWnf-MJ~gIIu6(23#p=R+JL2*ZT481^M6A^1QA?-;lp4547FI3b89q)`FAhzEP7 zfSbVM#vR`86I0-f2i0I(2L^%mfWPrC?qN3`?9|py<&Y)7X5b)V(oNIhVvI|F&?szN zKskK&(LsZ$y#u%q`Y?$QpI>1c+9*41k$?>#IQ35Du>OPyShzHSH4yBcBm|o<@Izv! z{=yDquDM*B{HO=}2shqtOp>*|>KhPL&* zOcbW2g?9%i`kB##^8p?pPc7==Pd4WO%bVfK}g@$g`7beurtaH(k$VLJ2< zsyPH_lAth3zrXMz)_J(|au6sUl$tB(IPrQ84@&(wub>k`-OE{A2-KqN>lIywIC~n{nV$2Ut@O2Gjy4q(#A~j~j<} z0I~>xdEC%{T%c_pw3H_AIuN);Uo-+g%M4b}_Q{8&FL~51tMlDp{EA)(1N#v3Fz15k zh>6f@ZxCE4HBv%Ct~?Soe-sZfAs>o}HxG@d=HueyBEV$xeBnW%H4V{Mt#f%u(9gUG zQN#r3p07lhf+PjhI!Q=40>K@Mlu=RA@vp9 zg@Zj*!N(a!=Y-F>z0tLIsXlQjG>}-8x56N>&ScZFzoPTtEQ1`ue&ZwcZMyrK-pLV_ z%vUhZu}Y3v4L{BtC9nI^wKa=U3Sg$ti^ZKwZd&)h>aSehi z{txSsW?lQMo)aYA-|#{gvU&CeGP}H!{m!Q}_8O{ywg^>&%GjCyPlNaa4T){E6`IxQ z<|QaNSC5n?vo+ctg(h?@xrVH;e5+P4bA=#+H_a2SX*5468kB^5{3LhDrBaIi?S3EL z0*{h!5tp%%vqG{!1?_UocHr)g+&m}mYJY0M@U-=sP#>L~s*J0bh*X1`h{*HcKf6wV z@A6obi$gS7tQ6Vq1`frsf;|InYhU;Zo{(?|c>pakDAM}=6srb%<8u=)7rLxoe?$Yi zh;tOzUG4m^1o^B#xu6M0Z%B5ycM!86BO<*)C!n9fAXh{TK7XG-LOp?|BC1IA2z~h%5P;V zoVfhIgd1)L^2RvbS#lolN;uhhd{aAW&u?bZPV)0OFB1*bN9yKLS82=-&(P=aem}(C zb+qDQ3e_Foey>e0{}l~ud%(bnSZ{e5PR;sHFC+do%l<>-8XEC91I=ej7E+=czPD;z z%Cf%gWLR{o*S^z(LW)I1$$!(pzruKJ8wjVG3>gT1VcFs2lm9euOH3JWD4d=$J_r6q zR2hFboUk(f@PAiV-g4WT9eWMia^{_7_Y24TNZQTxiLTReUU9VjVmNht(`|o6HQOG2 za5AS`ZiCZ1{nKrKofm(lf{J$@oDwSDdH*Jd3e8;qhijqY2E-yabr<6sTSS!70WpWL zC}x_`wU62MMq05%P4%0R{VNXL_JDv>O5KVqoMh^sk=+td#RmnB6@U*4_@EJA6;4bQ zU-d5(Rkucg?wa$1e!~IuszRaU#l;Z!-KRwJ1sP=(9vj7vZ~E%5SbW=~08Y+v%U5u^ zj{or0rphDU0dPCqHyrTSYL8%@vLX1m*4TP{fl<}|voMiE{hWRNJ94iH!uPcIGtr}2K~IP`4gD)*==Rux(^uI_7&xJo ze;B$cyMi|qPI(1yD7^g2_GlTqpy4Vvj7T89C0@6GVkVAjm(95h)_T+F?|ed=#{U%u zbvw#%>ML7OhLd6W)A)@Q7aad?Ym{t?v*7&%C(yE)5RkkI;s3rw%hrwlU(sNfm<#9`mfgESLV~$=K#DKfU8X}Y zCp~1u*0AAVT>YXN|Bubw`77q_wm0CUUbY4foaW2FcmqxZW+M@{m0)nj|Cr?s{7A1fNP3=kE> z?EfSmzZtf_LJMzq9!{;|AD!QLS_P+HvC;W$5epC!0+4cCJLy>9qSN4G6Rtz~+@0-A z8A5aJT>hBt8vO|)!3>6Kr!$)d{uL8>+dw#Vh^@SYlZp50f%8P@gA216Eqgw-rWu;WPU((3KlOY?&Zhe}!7z_C@LNS2C?H zcaNg-O=eEq<9z&-{d@XkV$nW{81sI}7r3jqU~ydRl=u?CAhs<<(Ny52pOl;1SXt?- z+AQg-fBIr0AskYszkBeQMRZt{r&u4Q@4+0i3cB$0(+8Sz;sLx5u$(7-WP*~_uO}+3 z2;9@r-0MPb*LB^a@phj^Y3p61T-;QSv3VVdGyW!*<(s8l!jE50-Z*fnvtCG!TK-#G zr_zMrUE%!AH25oe?6&FexWv((%SU6jg#`^sCXtu**jQ}`vp zkim~aTe9*+*3cCDM-Q{W_jeD^kwxD5({v<-O0D4u%_HCNX|VT_W+r{9TM6YE={*_L z;y3NabBfUBez{YEYub1hs8?Jgkl1jTJwN8!E7t^pT}?HI(;e6+Y|CO6OPFu6arUnP zDd0>nn`7D8UIeP0<5WI9N`M64*RGBOSueIbT$Xx``sA@H|bmffwTJ14Y zb17_SOv5{~X6;jYzCXq3Hq~QjS~i?J6(!2ro{ABC)x{(U@ela(oRT@fnvC))IOf&4 zHLCs!vWs&kbYAvB)ugA&mlCh)zxaIY-1LOR$2O|#ioCUKXJx;|Z@F{f6m{M!f*2Vc zm8(Tl!Y3_l!+SHHJ-QQn<;cqx*=WCz(y;-tAkqH~X43LHZm;<1MC{rl?WaopVJ0=?$ti(#I6wT&lZ?ND2ygoVPWK)118zjY3Bdo0 zAK(<>@s9g%vhW~pfK212Pj(WA$N9t=74~FrtMbc_tin~bAN&s5Sc~7w@i7W@pt8!^ z9BO|BOx_-9aGI)HK7kWg{TH9WsjcFD0wh=QqY+Mab))LG_A2lfp*p0zigUT}z5)uDuFaM6guK*VUntUAK*ZLrVw$*}*N+G~UT@uxWgr z{5x?P-vS(UdLz@sA#MtwPeXY|jLR|aI?JY}<|EpdJ#R^|Dt)=w_%dgfZ_Q2n(RBOz zwqbBkYA8Cmxdo0+{ipF8_ZM)u>dkS4RNP=zgRcK~Y&G8ezq)VVEE z5Yx>fmQa5B1f%!LvwL43ue%zAEaJc0y`{B6Df7-usje!F(Z`i+0V+Qu`0A${r zZg*lb<079r&2SVeQE)*@L!84nCqt_8Nf33?o$ofmC#D^@Er$a&LzWXja|;}?`A^HY z_|5pJ?R=H}gX6pvITo{`U>9`6!JoHj+HCtIh=M0B{x+!cFH9`aW8CgP9DR8!a&Q>t zKl{HCxt$-K0XQ>=*uU_ZHzTzZq8S${)77{nlgG8w&h_tds7DT|Gm2ghyM4#N(x8U@ zB+gP?5a0;SkfpdvaH!@#E!_e)<0G~6o8tcfIO7k2gE-^U`)^6k(1eA;IYaCn$G7=t zk%@cUx6UFH?Dj<`}M?}en}H6D297KulVe( ziLKB}&)c>KjzbOEg9|MjkosTjfg^L_BMOJ9h5`j3)p)<-5+4p#z12@RX7!)_+(@UL zr%5&WjS#`ntnnuOcceAAtn5U!-VE$cU~61pyDg~u*82M2G+aABR*A|8sWo1+xWlIX zsQZL;{q}SMN4$m{hVv>M`ub0YZGo`yLl%yOjrYbsf!M$ke=@Q0jlprT@s0fr92;`< zj(lt=wQzK7oG*DzNSiMoZoQa-euQCht9A(5&1GTkc=mN@Ns-<5Ab|s3|8r{FwBcCNTXw=hrT?^ZBcI_Y(;J=MMooig{a4yFWX%8ZsA-(Dt%mz=9D9th-=)^L z&a`I?OM>+)u5QdVru|3_wL8!N!4NIf`V`yzS8;(znclJLZ)%etc166NCX`5EP zIf`~-R{zK1298|4WiTAV`p@jz0$Styzw_Pi-+-+_`T=n0)--vbW36R^`CXj9F{f|rMMx5YK*c`DDBAeG!=kkDjlkiw@r}SUwV?^&|3jcQ@EevLZhQB3I>4c}|B((`=xw}L zc3!Ig1Hp|y5DvqQcPBiH8%nYN7_D$r?yVGp!*lz8e?VT&I+{InfVwvTtXaPkJx4-SQii8?L#%mrUmM#qA3u9GZK} zDR7MLKb^9%5P*Yr<8As^ayMiK{sWJfMAt_|U(K@CAsev(#hX zwh3@3YRCivD9z!R)PI_=F`eyvE4%}#8k%@zHX4HiR^$BvsMX+rzW`U`W(gd&8W-op zNBot$?Z(_fVpO8fJ*$X~Z0C8f9B-l2%~9jB{-B@SXgFQU-PS z??GkYQ_B#NFk&bif5ldYdI`^0hRWdx%iwf`P%BV9I1VyY4o5=X?Dmed;t-M$Qc#%) zY7h?g3(9xI{X&V0Pu?9Mn;W&@L7PyI{sOfLRofA^8A1v&C=&!9@7W!hlUp@+AWv@9 z+mXAuRdYxBCR7tQ1MJA)+^V@FJ#?$)jttSQnmf`xw`%Ud_*}=mqX!lt5hN=FnfFHC zFW^5Qh5k(_U(>8Tp9uvKj@t>9!;w3oayWJ;R1Qb)gv#OgolrR(!4oQnV|YU4a1>9d z9FF4&mBW!dp>jBuCsYnc^MuObc%D!>9MKb34#V_>%HgPn3NBV@y;aHzgIV|lHH#-vi-}nlgdt*Yy zav`4fYt>ELNScPw$11EPpN@BXIdDT$psUb6)9rKI{vNQ+_x~1~0n95{F5;O7LE>(5 zwdt03Zm&rINjC-PbDg*jN=w*XJ{*Rg0SM6gymR3;nz*fc)nB?G5;XA2RDNc@emiYvrE( z#-rW-=y6S_^~z)Q0eTZsd-BwA%M+(Ny}uum*auMn{vU!$;Lc~NW=yg7-YH3`-qO}{ zH%K`WbqfR81nOix1x{b((7&A@G6T3%}Mg@)wg>-jG<7GFaJ`e~`< ztyNso&2#@(@D#X)9SBr8IhRX(Q{@kY)~jEX>z`v!^iiRZkZ1f>#<*gn{{JI}1_qjQ!^!H?zJP{-t5fdVq?w?NzHy#qpr|3!W!Gjz3u3qh^T&)-O<+(v%lF3LZySQj2)!aeXR%8yuf@D$5oO)PG_; zaP5Qru`#C*bY?07d>QA=@7cL>-t;58BNngrrFS`;gX9-rechT_6aUya9=AGBTOEsocb!X72-)pmUCwbFXOi zSF@&*U-eIC$`Lw#@jBqsp9BA+vTkP$iefd|%W8E4+>eQf04}=+A*+x%-5_Tu(w1fy zio!v#68tbC3;F>9fgpI;TlE$C3!xF!M+EpGAeuc_1I@j-Oh&}6H`4OiWHW> zxZb6@9EqgP4>ws0t{77&5%y+J;}W;yd>v+l3m_gm^t3Pi0rrb zQMu8{hVTzufm9diTQxjrPWL++3M$q=6%*|w)}-{Se28vtduplt$=X_$)3{MF>7Ps>2TY`L=7@+a-{ z6a}1lCtoe-g;?E25@q zIlk0;G!eN>-fRfFdTvO|Oah${LD1o#z~(!|F5l^P>UYz0t_XXx-;q?Q`MgOhnVFx$ zE1!^)Ys-e~DmLNolRAa$tRD+=ee?r5jIum0Uj;S)ybWAJbVe~m(UI!4;2SvOvk&pSX>tqbt%#94Dn&>L%`6WXhl2Gb z2STP#ReU;eVEl-DREHIzaF*UVFPd782TktVvXv<&?vUlhY_zeHp)CS(r6XFRi*K)L zWh9tNM0>w(UJ1UO<`}|;xI(uE$y?f}3@J$Ucz)tr${EN~P&HL4Fj>>s)!7?_FUL3o2}p)t-)>+Y@?wx3uoP$~F^{g2anwWeoR z3u4~ie%vo{p^A1sF@5CG%6URb${F%lk}iP?nnyWVF_M3xsYR*Zkb??) z+|vJL?CrURRxtN;I1=3T+~Ocp!k)E)isOPtsBEpu#G}G*41@ne6qZ*D35*hYYEvTj z0rQxXz9dp|2}L-O8btiwiRq+!DDeJo`&VJZKA|5OsjsIS#);ni z(9>QfLEq@uY2#lfesZa8POLd=z2;&nG3GNb&$vwfN3uq;%vfiU>#S6 z&KwOQt?;9?OWmaWbe-dfRdEI7?=X$Nw$HwE%*S4YnRK6ML`9CHo*UGk$)@9OdFftl zq<%*c7qHTngTg<8FUI9QJo3OS)`Y31V1T#xA@OacphWv@J-;|Iisv!&siq9fxhIic z%x1S#1{ih$t)WbgLw610We-XmM>z?vUNAelir^5enJV`49Rm`-q{y~?&(`;_8Vv6?;sjV^4mW8=$3XAoq|}cgba($u_9cs8BUKYG*-}~pV6~*D(8_zd zw|B0*TfR`+wIW-(uC*fe&OY*^hi-HLUo?shp`AGlB`Sf*i08NV%TIL)ld0W8$H?71 zdA<9sRlcu3SUB*Eg*|1dZ{VO&KjW_Fn!_gg!Y9Sg)d!ui7G&250YgeB&7L^RtymjG zHFsaUF44LMH8Ij$X&-jwg8i_1&8o2Ia9vp8WX_@TiPH*~X%Kckk!yt7FZb==?{eS) z7m}@xBU?kW9>{#PEUVRsi06ZPI+Qzb!D)>R9b3rweR|CL${6N=Qdhh7fD~`Mx#q zw`Jz3w~c}o&rv;lEbrEj93NeZxgn|^So&?fVk&|p$LuWje@5g^C(p64CQkhn=kbGs8bIU$Ne<-!$a`A_}4|gJv zda>Q)P9}w1grNk3ENYPKETq2-<`4Qi5uoF!n5#Nc#=i(y!9@xq#QeQNs7SKM^RqH@fv6olqo235Cy!{m>`~3f$h6Y&8j_W&-xY?dwkBSoWhj zvag#Oqk?zezFd4QoJ#(XKV_$(NI}^ikt80Fh!no_pMxX)u8k->4e>MNzZJk?(X+@H z`YsN+yWTrR>CIDGQ>wnmz1)X{~ zuG1y5Ap4~$5*64^BKwfahaqa_pqWhitv;grauOvfp~!Qb!N{8o@zCVn_N#dEv2bzx z!5U}phf_a&#KUZb!#sbqTz8DVl&z+KWGc#4CAc%n4mzeGdY&cob1>!ZW>a=Xu7lN2 z;=TF5Jtlk2`>u3y0M%K~j zsl^0Jqmy}JZv`l>GpG|)FDk~^-0hljBRqIx4x|zJt|+z$8R-k4YjCTi9DO#Wcc}?j zX=D3+elZqDeTjjzyUFP%S{dP%V<3&p2%2!u{h=iY?ml!!hAk{_6|kQHL>a7Q;Ha%& zz~NZWaCM+IU}3YM92OT0%3*1{1b{kCgj;s))C}zMXa`dvGj=*2c6mljvw^{dRhh+d z>E1NyC4aCy!!3V5&Tip0rMJ0lo?<8my=&`|*xho}eKv$pr5KpHI8MlF>_#{s>mq(A zj9;FctHap&Iwu<^M`(VybavFzv0Sw3cpOBz00AuDPTzo_3O zF}_0VkhwYYU~Zy(MF z4I_!m<5SIzhp+VNn@66oUZgflD$b$}IQ@dt7S&XtSeNje-oa3e6T90EX?wc8!m{5% z{-RlHfeYDlFpTyR%V|2(iu8kN4Q}IowiZfX;Eg@2FjD>@!``?Baw04{?6vtYt&(u~ zI)BZm`Z1jzq-*WRnohASa@_Qd)dZkcVhEy(!i+w=&w~Ig-8Vm*3)XWoNw|5@8tj;4 z39)r9o*Z62BK3C~lg}~trdszvneaOmYm#CE=sr`9Qk}7w;Ixvb*Mcn-dm~s@5!iHolT` zl+Dq@WVlnUcPK;YCPNW!_F>qXeehz-uxY;2mYfF@=RqEGsWA%ircB|xeSFZhe}+hh(<95^(J?lJ6C)XPLDy^35lHYnI^9Yz zzfJ{SvU_#qIrJwrCV7NPQ_K+NKXpasFDmN02wcm z8%5Kh{4_8{#kP$;nu6;@wbEHSk&~;~Ow>rW_N!;nQzb7-4-sP7-&UQ~s-Ra-ovZqL{#rz_9tu95W$PXnV?n zx@&0@<5>n}WoQX$b6?lf!ifJ3S=21`lEoP>(gaG&yVX_E6KHy`PfvZpn&#M28t&@I zTky(a%GFEFr|6m8&#un*bAdPN%B1Z(%02|%+!x3*D*fz@=j9)K#$FdysaK8WLe>`3 z+IgOwx&wx_)TJZ6{t2(LF0IgY!GeUXp*<}-5VvbA3TqM4IhaF_S)(%MzWn=u;k z)JJ;2#rv>VO7kz*G!O&Wi?=ChnXGSbdFWtNcXCs~yYH3l7M5mbBS{IcoV$K1_;AkE z#JU&>tUW5ym$-dFEF5(%jjQVhS9cFDQhO*h?m?fL6_)+JxE84x*PPs87j!ELQ|^f8 z@k)oJM?Ml(k7F?4+6b*}Oa++>e&$=zJmXP(;@)?%6+4W|}ocmDq zEft6;5;eN@?BHO)Ki^y=I|LpAUG;dHsS=^cZiK4zRk{_X~p(kB&;(l+LF*c&S$E;Yjt1JrW@V1@RQTm!1cTM^C=6rV8No zF-pu6%*HD2Ra!s^l!ZLw^L!M(Uku!2BTusQU4f&u@?2Ufry=*iyBu8U9#9>oHj!9h@~Nv$x=8Sz20^|ghp)sb5zjgJsi`|-3+qLn zg(ASb6#Afo)G~D}Lyz_x-BqR^3G$-9>^!3_kf%?frUOV(-`0Q;TL*rDchgPIY?9*rJFG=uWkM5&(9LnM;A@(78MRra6 z_P*t?eP2=yGQtjNgVhW$jjw8|iBQlaJGM5gBkhGr#hF=3S3&ER&@;g?L)rT73Ff2T z&?j#_k*)6C ziKCoVH+qm*;9S zmi>rT&1EWb9mnFvud=$)a&^>k346p+maMAEv!b)L<1gDay(d)dLi+ph++()*%(h`2 z2^-@1;zeNHCH{$XnZA-$_Lv(-C@w#p&#O)ozG=EbtrIEA7*$++l?^cjE7L-)Zq6g&NEU6Mw%`GmJ;j(N-FRr8JH_J&u4?_N+N(bBFg`z~bH@`6e1 zr!%nbumrmkmq^Zakc7G?zWW!vig{`*^JVuJjCl@a)xA1!(@Cm%KiTi`uNM-85}#;Rh!eys(!_ELVb_$W7XE$@yE}C8-iua;iwLAG50rWA7+hYmKx_8$Q8?V9{j8 zr9u#Q=IaN-_Y;n>>C=_F9MrDnx)h-%r$dbWD<&$vbe?>Z_EY#BokaIfD|d&q~mAj!|o zt%k|uMXhs_U{2Pf@=#nnd_0)6H3u#(LKGJwSFMbI7(Efs!$pG1#PldW1J5bcwL@KF z(Y&2%o)DHk@E2^4)u2nZ0E$BsYO)lL8jA?Ud@c0cY?5(;UMfrNxzVq&>c zCWM}&mP4isXdU-=e9qOwNoJmJ>?(u0Jt(E_b0rlpDbc-9ciFz(@tlLlV+Z z5`s`-@P-zQ+EB;?JFRYa@K7q-fp(5?5nYOlayJ;rrQ zb8zoQ@!@&yaqC_7^AvjwcAD2T9E{2P;*pwJ{Bt&@i$CzGc>;{-TX`sq_QNL#H7+g` zArB8vCLxM|gl|2U1mo_v%F9QhmV+KF!AM-|M|Xe3sYB%=cv0NwpNhN~I-}p*gTBGg zZy@6Y+Tv0lI6rddj~FaE%P7143KYW{Y2%p;C0sW0Ifiw@5^ba zqz;ly6MLyHvCrO2^DB(l(kNdyhPn1lH?^Su$dQ9Ko_7nZ_Y%I$&6$UL^@x>!&XmozRAu1sx zL#rPN@Axf-w230l_RcHGff7Ol8V4W+z}*;LVh{GQ5SFW;zi7hor7{(ES7MRb6K>g? zoQh{o9nL9s{MxQ`j~(j=R2lOZaaXf6qQ?Q#g=4?+UfpNzsfcP2>9k6s)G)KBEVQ%l zXYelLVvR@-e&>Je1XewOzg$8)nt)6$o89Mp7TcdIEsPcpQ)ydIdm=qXnvvAZ>b*;LwwEz(+NU-RGx)e zeTc@TGKULYtA^&{K_Q^1V0pk$0EzD!g3-RfGmQQA^|;}3q#GiEglD(W0sgGwn2Tv3 zUUzcuy*8?jaLpZ}-u;BZ;rZ%q5i0u|iVPU@o;|U2C-m45cLWP@YvVmV^hYF2%k75+ ztNmZLp?_CI*}r^B^F2~c@KDpuOLFPS#hs0By)vF2yLUbD^24&(+8-yG;?ohI`a{;jz#Aht$4ixbJG_OYEcPbmY-KGaj%?Z*81T#aQ_?eI*#sdMq|ULBw?_Gx1E zQ}$s-N2RZF--SO24avTN7S#Z52}Pcm4j5ZBd#v=w^{+g+(JP0~mZh~gGZU~xrR9&@ zll&m&x1R0*wx!)T3K`3lRHi)SlzwwIT;lV4Kh6=+c7Z)iMYT>n`MaAwcP8vbn~T)# zzY=z+tKy4h{P%(e#}hSvP5!S9qw&F2$(?c(CitveNvRc4w`Tvb-g$(B+8vFlPE5R% z0~R3cy!*qS(+!_!?BYmMeP1(S+MA-ohr%zpP1_>^AsKrE zm@Xuzn4cH&SR9GzqI`ey+hROvZVpx%}QPsx&PgXRM~>9 zwT4jl@7k3?dn8LhC_xqiqPZbUq=G$K0hk5 z%=d6LC*3)LYGT0sS&Eq%<2$shj7Q#grtyy{Bh6r5G($=M!*Hl#<>1%loRI5b+o!s| zr!U-_|5!!UrDwH+=UK*Cb4Y-Y`}8^Vad6?&0FOgz=WM%NpKF z^ch=-r9`?#!@YF3L>`^07A$AFmBf44ery4Y9gHspYIu33?!k#d6AEwwS?MQ#+~TWs zmJIM47mIHUxo98Xc4Xv*UNVZwEnipc2UVBa8wV$iv5zKp=h#f^RhQ{n<2d0b@Kb_9 zt`=VeENF$2{y`xGb5!F|_R<{jx-P$!o8s}E@k1&bVUxi_S%Q1w4aiZ^)@7_DOm$~) zJaFA9gtk$HW$b@vHbVY9P4t;UajwDLSwAX?%TKtEsdI=K^H!3&i<@WT@gUvN%1LJ2PUnv&r&o`cUe&)a-qJ3&p+=s?mpXcWXHu~~H5)nkMhFL6xq!}zT7SWO7%itGDQ-2%qw5*mgXMXNAgNsvU$lj#{iqZV%!HlQvfDw zb@h3L+OKXY>~Hwg6s$7)rsny*$@XRCF(qnMoxb&#tR!00>bU*gO)&6O9E09sl(B)* z>&-`(d<9@BhK@d zItoy`YC0TYW;gA4s~fs%<$d9CH#R0u2bP95z29}Dkw2fG~@ef+il81Q6Um7AZ1>jFjEoUcU;Ebt>@+5lF3LnzSpYZf z#Vb40v0wDex=5g4QH~CD?p&8guk(q9=fhGfOymZtZ_Xt@cn7aJS1oq$b^pt)s-=gaMDRZYcD2SG2H3B@?K#;fGPiM6DMtx5w2j?=o#^^(6qu`xH3P0LPN#NcNF zpD9K93)>eAzGWn-ii%J7!wJ`f7Q0~9&shgOp*qLoSuGv>a=$F~g0wvbuL)e*o-%u_ z@n>5zyF$zjlh2vV2h(3uo1d9#)65$sNuVj0`FOs7{m46up~I`4I7y50=6Lohfdi9JQgEITGumNpK3eC@P##nSB^({N#dGam5l+Ib+6gD7+OEe2 zD?seqz5627Zel}igE$_L)b{e%Ir{*cYrz|WlQ0SWCBaIwLXE;HPDB5*2P;Z>d{I`> z`-j9vZu6a1ef&e-c1G|T;uy8KQJeuo@|O6|1jmdarvnUM@W-GJ*JKU4$CO&oFezi< z1nEL-r+DgSo^^fkD@1D^;zzIRbT;7@k5`t@S|nV!$q!K1N8Vkc>2__ryj+cy?k8xFeCaobh@ zT^)&$j{v*vv)E6SomGoBhA%a{Hns&m^AXPM*0~3faLQ(I-0lSLHzYbGaqRAUYO7^@ z_7pS8cVoCA8HTRBpOy~OeY5`NBm1-AHND*D`g*;4>0Jx6Q==O{T`hm$9UWIyA1*6h z57-5>G5bEYY2d|lvgDi8vX|QX4t*gBhg*mzb2;C@9M9L{?{}oqIpgtFL?(*OjBmn} z+1`r=IC3O>E^Gae)EU`XDnBf&#$Oy`c2D&3R5jewZ}{r@-ZJmQpI)kom;flVPh=JTe zp~*pCju;MPoB7K(XVql&xu1#+SGu#3G#bC#x#zt1xe^N>Ks;_CZ4aMm7Ct(5_Ha?d zM}?Y)O^{Szd+iE!eAmFEleYy=t`|_ZKmSJZVu%-ikFcy5fn=}XvIf4sJ zd)-sv98=?T#EFlanxw$$BLLo&hvuThAUEyY$hT^wDn&@d6BCX{_tE+q7WoP5_*ySe zb4%dvbiXXp+=f!1x6k$8zF193vz`5LtT`cWkddnY^DU^!c5LR9P`@~4ijS4#%*jhT z%XDf9;@4HCA$gZ!_KgbFkcgqB`piBy<(>=To!-5o8~#XbVG0*@8u*ZN?VFol?EJO* z$f}DO58cIIjR?DIy8BUw-9xBVq(>yoZT4`EurUPY%@r}7`@D<24i_hbo3n8hrWnLO zt>xX>E&*zEvwD&#Hx%z*{m*Ms_x`JtPC>~prXG=LwDYpw4(#V^YEGDYgxL>0c%@Yu zxS?V! z`L-S2mly}EcHB0v0HO0{n+nHe;W@BUJ=1kZJXW8+7-nF*t(V;BFa2CUZaCIF9wJ*z zlBfOR@!Pi3m_x`wBcqPdk)kR4Axl=GuqjE-|beEv+cVSh$qWjjJzy9CgmrWVAlw(Bg;RVUXva za=Km8Z8U5;C{BCvbVD_C!@<1l{iBD9_s4PJP#qgyWBY}g-vKCar0VA4F4?1p$uiyi zHCVo#P8jFB_&I=+DkHbF8g;Pi2+ZP8!?_Mt5?kgmoF<8fAr4$FN5p?Po-%8HPKV=! zc*@sL##-S_0%jx{#_`~C1r8!Rl9t+SvUZ( zzrbd$M=f})zh0R4=?){ij`At>iVaREQ=S_C zJ&y#exEEOTk=;!EBhhX5_a)^$oUG*a&sV%2_*1=PYn7%rCJ*)g=&T0*YK>L~E=UaU zHljqLj3R-T8-uv@4dFk?2XNYvcTcuq;b?3=AmJjx=H~Oki{KO_WH{$!FiP>r`e7^# zmyS0&{*y%Y^YxO!Ml;(}-D43Nfyc@p-`;PMH`QyqsS`%cN>bI(4i*VXOn_E%N7vp( z-j%SMi+9PI?Zium-5#HD{*cYfBa;02wv|sV^7t)`Hy3CFq^0-Fi5B<)22Vxe0U49_BVP{n_#75nC zUOnS7$`hIk=J19wmYhxvzvQM9 z`)Mt&&TMJ$GGP38_8yNIF=q{3XWIL3A|#ab9;iB;VI{H1(7{bH3ADwSYmK_X?Lzu| zMEJsSu_UP+rpv}o9=Ar7mb=fUkGmTC$4$ie2^(~mbGJ`HPHb+bjNi|BF$JUnGxpsZ zY1O_Cq#>`SC;ggJPH-vD;*QWJ->1NRPiN&ITi-94^t0rtbwjl(T7$aSoatP;j_q%~ zk7gh6|4yOjIrFJ9_zOReVwF7^U#y>^#*{@O^ifit233}8yre?T)*RcRi>h@;Bz#W- zHnl<_c;6X5aJaEDKRlhSP&2p3D9Q7BK1~r@Qh#Xpkt~LuAo5sAsH($p9PZOf zY$>E+C*?n?m^rQBj%~1XcyFO96LEg1T^Gxj*nGE$`>q`oz zm-z_ej|PIb8KZq;2u~QLtGsAg0@GDm!?DZrny0R^Ax=}0(H_}zXJ^#EJbw65Z$>89 zcFK5@2Dyfz_psYS=gGg1Zhb3fe%C6!$dN&s&q~6x?1Vco7=%4aJG7YW)9o8E)RjLp zQNlH48H`fu>zm3f2g=PR&^K3l4Z*vw#v?CplN+)0J+!dAwsDKB5;)4(bnVmAAJ4pw z1WRvVY-v%|%E4odk0P{C5ME26N9035 zVxQCz_XrL2OVm3YKu2V@9EqH<~h9Z{L8I67joJ^>w3DV2bZsN_UIM?|I{pdu=r2+$D~jt6u^1-}6u zQ2|&$M^p?G&=D2!0CYsT;sG6zUT@+Y&)|DRx%mJcQ64ftN0k2qM@Nh!0nib3GX-=+ zUFfio44fs+g|SPej*D@eIjP0Vc_QiCcu}FztYU=oT0%!?7PI`NkW{GyoVVvrcaGg> z9t;=FQ#8HK0@+Twu7Y>s5lqcSbDVsE*;|>|o-?%X-Ve?-+V{$@SRm(_y>GY4l zFGKKgqE>)Sehy99(#Tyk4z@jM@;y>z1&KQj>-yE$m$oVU?nNYQE=1_mLf!mGJG*-+ zFGsa$Lw)4d=y4V~sRzy?2i|J(P+Vn^kYAo)f@U)?HVKFBz}t?U03$(@6MSVilXr+?!n6dfZv5q9Hz^R5HSReNQL*vet`7tU3S>oSl;E;$-+yJjE{H`0biwu=HI$DmrQ3)`J;FyoF8~(a(BIDEt@d;m6c{>LuBDkqWF(A?Kz$O#_ zstqlIEBeUAi|k%YN8DUO*%vowVZq-NLixyfpvaRjMi?^I{397c&;bkQ!RJNdN6KRj zoQ>i|w@I~>w=v%vS4ix5sOBzFeX_s(=5*Vji{U!)r-2%VIY6j#2f< zr`;Hc5_s(76UwICZpnU4zpo5900_D-bho?r-}ju>t-H)n{MKHNjp@sMazx#2Pc#=P zA9OW}x%aH=NBhQSf-MSu*7Oo0ZsUi)bkw%L{2@8>ATJT`a$lKh~ze2v3i5crwc1N z_VjWlf{6KUj(3oJ2tgmV*z*|5jOe27R$$6I0b!c3^GFEj9)%X@bjirfm`kvUw>&d{ zE`5Y{7cGWM;FSge5BU$3<*~-8toWUc&+U8ajT%HmIrKR>M+xvbv(`_Bw z9$LI7Q%fthear5!Ix@ZwBm1SX{zeFs?CDG}3Dk4pEhQ&EP=iSzqza&<83ZoP=B2!! z?D({A5#hn+8z@t2MCFga2+#^MQD!+q37J)KB1Iq0$c{G7rW`#tpmWuY@;<}CSyV$% z4fjuEP#wd_z$zQ?*MqEu*QPgu7qyH%htIB%s2d%?zLI)0eyw>(zuf9Fo5@SzA3G-- z$U_B*MWE6HdHAn1tliFw-8TE(Trj(RpI{Vrmpv1>tACx%yY2LZMhSNEuwUCaAu`+s zPVm6Mr?u_I@Bi!XyKzeJ@P^`l^xVd6Juu(N;%qYsk_=N+PWB^p3U?zppLh{E0677}YSGQ-CvgpJOd+*-t z=w^dCt}n+Q?wH2sTETV>9FkBF)ef3O<5r$q8AE$`+`_;ax%-x?4mxSZv^V?L z-HyQ;VC4z=lj)6QH*vj!8OBpWfC<&VL$6YdzE2S*0#;S!*A*woWwf$p9FV z3hs8Zlc7#>1^)T;{lEdTBmJ>;f&;;!KW9YxYdBq0tlvFzd^%z_taY=Mk2Wx*ohR^Q z*?TJKNV%w6_so{9+VIJBgw8!&O+x&_mjVkN6#ov!AY-0ZaUof9p258k(yX9l3#i>4 z7@P;s=f%LV$ez8|a_JTf|3Cf zlACpf;?Wn~_XTTxQ+vi89e9tt;6sTVXyn*XQn;wpndMxlt#~}nUXTGR2BoyTEb$rs zqVr>){O0FSHiX~Jft&ExLtu(~N{}i@Sh)P)jfKq&*9?p6DqWXtq6-!o;&m?Pp*gcg z^Ka2yP)oi=GZU4=Ig1EmSK2dsYsK?wywj~#cQW9N*;D4K_>uOB+&5Rp3KE7F2bAV4 z%*Q{nj4G%2SiGp+z%2rX>}#20;hPIQ!E#0)9^R(vC@p6v<5G1ZO%XqEb0*fEJ;Chj zuu5@4AXRJw!~U;B_D#0-A%R**f? zd1zMokIrQGD!L>>^QV%o>8i~2lHI<+qM4F*!<0?`PVaO{s@TyT+eFyNFi6{MRczzj zPX}||AUjE#yq7|4t}KG?b{y9uGV6g>qMza>8-Ef*!Ha4Dg#v68a0SP0o-|=(P@-Iny@z6%5T zC|X+A^FHt(V+M7Mi{HC_m5(LTOpxfj60I@%QVI>@+(W zzWavle8QtKd`+&aonI`^OII=zGMd#GN^{QCWSCxvtEG9 zBc>WtYv38l_@iD0WmW3>>CZ-kyVx>Btb}K`Ar`JW@BLYQCv@NvCfobmKJAjw9s&Jr zm)`bD;aIEABn7s|{*UR7_ELMcwzaNSF9keeB4R7nIHVvT^jg-$pc@yn|IddYIQ>x`}_L;^< zR?n{qis9u$C<7W-t=Q1sRjW}M8>85Hz%g_FQr+HOL4!cH69Wv>@i85!9o>)1$o(+H zJFNGvaWzvX$74B9@#aMLkI^e~YC^m=$kjqHXj~EU(ROaIM@5`8id>$B*H!Bo1So$*!3jc|L!eCeoDV&~<1dAa9 z|KBhd`W132RxufWJau?vNm+zQIu6;v>c|5M-AT z1dDWtr-v(%7C?Z#2foAwSH!}9f{Y?k?9TT8-{EJfJX#fe4Z z+(}->dxnxbvzoRoz8J{hByv5uLiAbBILy|EypJzZu1@5xrb|ZfQ+M2sc4g=I0!AM` zw+8R|+AVlb&?*9-fI@c4bAr8!kdF*!Y@A(A@O5h6Q(1h;GflE(<8nVzW@Xw+pz@^2 zmyK?G4hA77Do7wAHQCC$-t$mshHgI`|owI8+AvPQ9;XPXzniIRo~D zAk`-Jl?AsiAwq#=Cg=7iF~3CeOE^yofns_18V6|GLJUuC0hF8zN``{c(OkiTH?Z&@ zFxai!T!f$|cw?Q*1tS4k6O34eU{RU$6)C_KL&%tAEMBH|$8WBXK~+U3RMRJzr>8b=y=Bgc zGT1==JUEFisGN$rn#STy-Cn|fKI7-mxb5~?dQk2fmrH$$F31S;&atR<62s>4@!|;- zr{cz*nYz4;`zOJ3J!v*tf8DbJj)rAB+9SKC_(M>GVN07}cU5L_u9KOUO(Fj^X-5Gm z+uCRw|EEBr|DpX1EN&8{tR#D>XUSMeF#8qAL&BjT5nboWFpqv@)`c04;k}PBcl(3B ze3rYM(LDU@<1I9ME_rHvmT=CqOHy($$3*Mtf~%LjD9kBnpdD$NXs*iqqN(bakG3Tx z1%vz;w#Mar_(F1}Bg@t(16y0f1SgYLcSB1;N1FzrIt{csfsr;#aqck^fIdW3> z`J47mR+2qEX@KUWjgH&x+w)FtP94HXkE)P_+<5Huvni^*PJR zr$cO=bWgqfESkpGl84@3%-Wim0bl7y02h!M9o`?-cbn%&midoM2vC=Y&N33vEVk@zOn23jH)OYFDd2P#IyYeP=8ooE!_XA?OMM`J^TgzEvBx(vpi=sroF$*FR+r3a}EO z`qOc>i+F>+XrhDx&Ce#`@^-P5Cb?21=|CNeka6qK`>&;P53QzoLVyep>;*Ji2lWn@ z?MHIlu4P{6dR*G}qkH1e*Kqr3(U|FN!284)n&S(9$=(6IEF(oOamOAuJ&dQ@!KF98 zIeQT!<^0J&&V9~+=IF5(QdVW_hY^lZoZLn$Bz-*fxr-x0y{{DC><4}ItpS=4RNnJ9 zTfxh z#)ix`sF?x2%;N#g6fhbYDQ@d`(&Zu|clO6Ti2V3l-mKd1uB-lDFBRWlhgZSxM+w6#z{$3T9}7 zaXOkXu3e$+mvVQ)*^0e9^03(LV;o-KJCoah25TUt;j-3uB3*g`QJ^QO8sHKb%T0Fl z)Z_Q^;CU+5y{}k`&|Fd~R+0fkF&zfYPQ5w*tWZ)lgT1+4CQGXA0Qcj7D<>B!UPm6UqF>U*`>SQ=@g33Jvpgf)*AKLDjG)T9r@rszWLD_1TGXxD--KQz8*DdUmSmq z-H!9tF=)PapPcRfeqCXJR(K^eVB&&Hc79Y>O4#J~^ufL_bNVLb^4zt|psjLMYV_RQ zW5z{x1s!Bk9I{r{4zCe`UC-<-UT~t>)qF8a4_d;?_pRp}>mx?(=IH9Hf9iQr*HSE& zqS-YXghJS~)SmHEI*BK(8gAQWoQfYd;9ls<=6MK^?U=peb6&fWgue(EbmCg1iRt01 zs2hm7!>Rc|3(ao*;i^TY%*ohC*s(U-3&DFQtaSvNZ0}`>&?;U+vpd`CCcR>BZkbS^ zFY@m{e|(AeY||Uv4=(MfhB|;rSLxN$v3z0+nx^Q!GO}dOEj(~kNZOs9V{pR^AZGaS zu}vv`cZ)NsXS|Bwz!cJD2R}#rRI%VH5kRxwypYQGYW#3IPhcRwUB{65+jz)9$<->+ zam#cRKzj>5P{r@*akvN@Z+_NQg^cPrNMpBJ{ZXSb5rt-dB>Z}sl>UM6C8h(ln&)P@ z+d~dBmQ@T2`6O3;M6=iGTv3g4_%yJpOqG8=3OVm1r)e5mkbg&HaGnRv-db0nxlCKU z9R%fGJ0Hee?Wr? zJ>Wnklm`q-<;aVaLl%0W4keUmF6XvL5>k^y{s$*9-(VVZKOH->ga@2>9!{s^1`J*w zV5Wx@ktBoYwgnlp!u!Vjf= zdrfWn<5BF^t+hy~OjE`8xMl|O?4yHxa`*SY*Z*9+F8EgNzP6v|k@pSU{Q4hH^COjS z1qgvouE*7&T11c%0P)wh~M$tO$(feX=*w-8b)V&b+wh~dDTRIBOAJ-{8%q$SUH*cMR z{IIWE{#IVjrE1?!aRu+AYM)No)rBM9b+1%54e1->&jPX7q@`~srTB&>6hJm-F^0O9G9#1hfvUobcy<#vuP_^pAGU3 zFYa@m=7b$i%&%swznBw#=hfBop=el)x&q_!E8Dj$?G-Lb65li$&xF|+-8)?{QQ8;% zwKTrTq15|CU&$4WeOKq5j4Z}G>CkENxmel*-#R30ZN6U22c7(geeK3`_vi&9x8sp- zSL*oNN=y0#v8ETUO>RKXzt&Pi!@f!rE1kd zGgN0NRWHbRJTKb*R=S|m3$&+Rp@VCWVMJI!qvz2{IU3N3c-K{L@j;=anIi7>;}H#C z*5);S7>vnlinHIn@%}8M1{$VJUv|ck(TiSxKl6SC2y;Hq{*kkT9dQTh(a@=a`3Pig zH~Bb3&9$VXeN>K@jWmqXMKzU;Ax7_%+egubnmxGcF#Ol3gTs$R-&^4wj$5>J{&s(k zLFntN8m|@OZ(5XE&(5M@E&dY z9(qnI)=$9EUR{!zF zRPd1hCN@wd!8YZiB?2xndEuz%ux627f$lo!FnfbA&SNoi{b7(SQQ_+4-FNxLWBn9rL3Tvxs3Ue2K+q4nfKOIyCmwQn&&7$V4i?)xd%97s)qYuKNh- zm6rQ)pX^i9U_CnUmE*=dJnhTLkw(x7)5r<5*+TOpo+abK$dSvsXWJ2!Hk&<)Vn6p8 z6s5~5qG4G5LhU5uFD{00%S*4{=L`6SN0%f%5ZV0Uo36D-uj8|2_Q}bo^~mGllvW93 zr=YgEk8@52iHHrQ3}9G)Y+eZ^O$!J3aNflj6z|jiXtA#^2U>Ir=1eWOBBSqd<-TwJ z$ok@^J{l&8JYnIJHvYJzlKzxgq^B1D2XnEsk@dV7G3Cd{SYx&i^eT9hm=;)92;HCb zayv!#y+_fO*-w^cbv~7soy#HLs4ntljYQp%rY1K=Cw+2drV8>s(ynM0hWcrR^9fs8 z2}wsOmXz-a)b}44P@xY?&;+Amu3>nrKy$y^CSGX>$%dHi@=eh~b#t>^Zlbt3f`*-|e6Gm69Vvf%^u!7N=Lhml3*O0mv+y;# zfA}X`#Wr7kl<7v9)uH1@oF0X7`U-8&ov)n>#ay@AQ0FkOJXtNRqjt!Y7IMGonohOp zAXm-H+73wMg=TZmb)k{J$I3$P(oND4l;RfSd)N=^Z&I~eG28Jm<%euXzN2A#mxVnN zw>j^+v(N3{dXw!WXfHhXNs--{)zz?l&%&&<09oR~_VXcirM}FAGdE@)3~-!vS2}rm zuM70+@VCA(HE=($@qZXyeO6y&Rv@)w#^s^_!Z6)-zrj1TYe?x^>dPLH-9C<@<6tmP zmmgTw+*WP5n&cyiq-y=CLyjpJBIU=zuS|?eolG%7!UQe$Y zUq>B({%UeXL(^-6)>YVBu6g;iM*d>nr~J6I^n;rmzCSsjdhf#0+$rtUO8o>Fa*Ubtq+G>a+eJn)_&2 z@03$7*~0>eT7rj0TkDAByz^WtDzgKu~1 z0vLt}NnecM6|4J(+xZ8Vng`SI(+(Ba{! z^7DdA4H#dD7Oj-M>&3FGmBI5=uVv1wOgVlGvgkQ{=9O4pW0*9jO$&3skEy&$X{n#b&FmhkeA-Z{-J~m-n@SET z00W!I&XF{9)HxT>&Ej;vugU zD?RkgLd0JG1~;tM>C1;z#sge5KLv};YX%xRO3~lD1|CHWtZO}s$%L_9Jw(a*Azgo; z>GIlIUxmFnvdSLt46RTzED%AP%0CmwIrpW zs!_8?$!)(narIan<#F;heO;Y#1j=~Yh3xCtfZ%Az2TtAF)ehR79*!w1EHKb{-n~_Z zvh>s6eu&ca-PXE(?MzDc!DBr?l~cKTf-`3xh@fGOpD0_7hAUDw-E{MNc%n}UCMam{ zj@F+)=`P^;(b(wmsW9t^+O`Zj%B0D0BdRC|EC1=V(^95kU#f18U>wK2R`k6A{YTrdF^lU0+Nm?bbCk+v zrsFLgNBLca-jfZXVLqAZNa~8>A(=ztd%xz}3GiMEC(}hKKT&E;j@VOV{KfT^ivMw+ zuz;hL6qnvfKW%6g?&7(uRU*eQe)+8Ig*k0Bhj`{^9jooT^3PD>x0!h58&VByB7)Xt zP4c~3zF>9a1IINiJ&Ly`o`;}F!H5nwR9-)_(06)b`;-OQ%f}>7KRtgK@=4n}Y&mQx zs&^Y~kf$l?;-yD?{cG=^D{Hr~r}vjs3({HIcPcaXlx>R=;XcgQ5M`n7wkn% z*Pq;I6kz1`tTC)t)Q(B8aPHKtdzQdW-%JJ(kCe*Q0 zEBt$a!u)h5fAr^E7WskGunfsF{+3LW?JZ6f0*~2`Y}ww(Jjyh8W)#gaSeb0`xqAD0 zWs1|v%2ZbZ?VH>?CFN!(gM9D)?1wXhQ7~NQ*~)hadOUh9n#wHh>5WXeV(Eub6UME~ z^LF_$#ShjGxoO#aE7JCwNQN(y^IlYuSHt>kXy} z6TA^)p|^!8@o|J+nE2s$=}h*Br^!>Eh@av4BAP{l*R&Ia4%&CrMED)5%Rc3Frh4R1 zz_Vm_zqS$zraNFT_No^gTD?3VVKJNzC)K?@I4F_@oj~O?T2AQ#>>3JO#*WgLqIxs- z4z?vbVNV9ubRSQ(L%4<1>aJ~wIUVmnX~_n^tF9t{A#RnIP#BikQ*@5xqDv6MpZ58F zGlT9M%sQvXv@72(Ho#1y;`e4f-NOOlYt%MSx%Bu^4+g_| zGTq;LX`C#1E3*=}lg#cteAGJO#nkH?8x{Wn4!P@yXmh zE>`*34J-54Q!)?F(fg?gLs;`od?QxeQlU@G&X7DHFP!o4l1d_J<<>1Sej}n8-I}Y! zpQ`NfW#hT+i+Audy*EZ6k-x+3ghEU^#a*Gef>eL9@CcHFh}CZC7X+j4xXO`a;9rm= z0LoyolC-K0;ew`|9$#_)N2O1W%lra=fql+T7W$_c;7*|<9&3uQKYxQSbtr%@nk@h! zPXk#f7{tP8J_#2uB0)O1kc2{XBIn}ag-gN%cwu}9_#QySO$PrApTd#w@a?qX;s$kv{V>RH+*a5;@>^txN?I~L zQdHi3Yj$$vg`pU3kW8nhnU5+;jw|89BDbsg5f0sj2xKMrup2i75%~?u$4!FxxD4e1 zqXh9)C@B^OI)afycn}imxSn`<;G$S87qZHLiaW1>4D<${N1-ZdTgkDgju4d@l#oo` zI3g%3Hy0-$NCE1eAwL@4k9e-ijeKQCh0@dr2ti(tJe`lAIu9@6M!HB;U~x%(xqzCF z8#j7X!}wwV7K?#1ga3drz(bHquDA11=!V9lFeGZF5r(}519VUrFANp_RDA-AlIT&N z#X#VX$+7wHholg4QV`$cLru%Y2lMdZqzMh?E5z`@AET1eNG-61B;4>3a>N}I9w2!# zl0s547;@jt9SD>Q?!^NITIs4~iQk9~cSX!XHBl;f5g1Gh(q&Zg_P8 z4CxRpiX0M~L?Ppt@?h{dESR_e9Jc_R3h^ZwB^_JTgwQyMMMh7q=3+6tq*x@ANi;59 zohLXSLrw}h4aC5&z#k!>uHPoZ!uWWw7)%~Fs;&QuAE++Nm51EeJjI298^cIZeovuq zvB>2B>U?q-s=I=niwCqtMfx57PJ$YMP)mdH2jjksK^37hkbqyfBa9D=<;Egj#o?v} z^oPYjP{C90by3EmKLfFO$fE3A@?bF90xskrvkjDw2W7eZkeUp91ja+oO@;*+T&VTF zWA=zZFA@kjmJhYaQ>%tkBshc@i^+q+FXE(_Pr^q|0?H7_I$Q+Bi9z_450|S6m*9b) zf%n1gA__mG3!ka+s76V#CkSDC!5CvyRkj|IE zBEv#M!bwQrpoETZRTs-E>RL`Vbr}<0ClSS!?{6Sv1&|o9iGZB4or2ti5(7fa@J@0Q5u4y{DM|#BI{|77*e5|R1k(t>?~I{LOs3eDi0HoUf_EV!QxEGr z&&l%8l75Oa)Wo$Xlo^2AWsh!y%q&o6@Vq-NrxldSg6wolF#if)z7UKLN)w8IX|x-! zyKzDAcQ7JyP|gI54NA3hpn>@YCkSp7Ah~BJD|okL41xy|kP^YU0R4l$0RSX^MhNvq z8vgrK`csMH&w2IdZ+@R@py0)yA44JWB$zOgFkF3U;>r|U#Sw#)1yB=(0FFDDOx!=9 zIxhi0cN_&KG?WDP>km>a_#eWFvv^97IJHAb5a}KNF+zoD@gMu&knf<6T~Ob#*buM} zfH9wbtB9=bSGCO8mpx}%&Dv<0%@L!JJ&TQzTRHMuyhK%Z_$yvQz|=VL?#uxpgzEnx zUP3APc!~Tk+-kf;31L^`+y4Qu{v#gcls(j!%iUy3NciA9vmlMs^6=%*r{@gd(Gzce zi-)M97CYkEQ7l3j*MG!A5bXLN+V=jc-cmWh%ZYVK8i**n)qH zg(z6;zhWT-j{Qe01W~g8A(mf@l29Teo~Qo-o{bj?ApmWBb3!QExW!HoNc+DeMiiv> zUx^XI)y7F|N81PiZ2xne{ej!YvrY(c8_)WG!EOUy|Bbwj{}LheZTy!21oxjcmoIkN z9rOIvp1hO18@F7TF9(lhNE;UUxO&!4s{d9lq6)hF6%`?LAa zeDZtZi7F@bmqS9Rq<=Uh2v7QtiT{IEO03rZPt;P}#z-u1DZVp8;H7wR5<)P=Vt34r zU2#nRoL)p#Wcn-WAOav+e?(0PE$d&(^cy=1&pjddEIjwXv;<6&f;;K|C4d$f9-6)7 zQXeH>+rxZR%=i5=6MSWAv=G^mAg!x{w*owWYada?r~ZnB5C~E5zu5haNrY#YP(e#P zyZ^=}!nY)NecLhG{{d3;OKAW9A{6b&_({O_{-YDu_I`3#j8C$WyH;_?PFFttWk4#k zp8jtc6IHnDuZ#)d7yV1dzqV~ch(>tXqIZWi`m=3S7xjH?4O-WgkqRt^K=L=qS>%Vy zBlus|K9Cvs%@k2p#&(#3;B=7?s1a^0?GO<{H~Ob?{bHOD+|jQ!^cVAJM=k#E0FQPi znXXB1-y*X(<^BE-v#r}HheP}ayI3CEvytkmasQSFQPtG`%7YN-5l$Z9ACT)v0R8Bn z^7w;=gkLg*;E;aFlVPCK_?D%X*d6 zu~R7U#hwV!`TI>HzePt>fw{lygAh>9AJGv)?D?1Ie&hGxc_jqlgXi^s;rQUpzY{w< zHV(*VM|D{Ajn{&XrrU^7ogO=U@cN+V45X?y>f&9wq2AQr{1a6;@2~0*s*?YQe?sN* z|H(fIo^L|+^YMKDAB*VYnEqQw|M!`^TPgh=;hg*4w~w|)#IcW#tH!g)=*6(`G|#nu z1if=)w(f7?5LGSkuW}HoPyRSt65-LZHm(_pPr2Z|b-6~Uq zxW#YXAgU_h--UxnjDS2pFU#uthFzxn;f$F z=N#L@_PPO9@oe}+TDOp$Rl_l^Y48H>AG#sM^J*}t^~W7Nzhtg*A#%R7nN?StG*|A& z4`Wzci(;Pysc zb|B+}D(XOm!kccS^XGpvLsV7Azs!glO5bKp%}@Q9`dM?PxDI=YmZ5u)d*5l9mV+;G z`T+hxvqM2~YzO|FX~mJ*1RCGl z51dZ_;m$*3@rt@UTTzhoHHzqdSJkaJ5Pv(H+gC`ylClT9>2_u%`B;DF?*by_G(YGC zHLXgU>6Q(bi=5v#uB1C@;^@e((IfmvU@KDd&5^Lc4yaT$jn9FoWu-Hc*#!e+71HA6 zivJRr8)q=v%>xOy@Z7g=+*@ckb}vDx&e^+q>4%S4n9Z@U%U_;dbBKu2=Kw_^E{X6qgD*H*! zvo%J1k)28U_N@_V=j)tqKoa65qRe;bUusNzAV8K)Ry0^#|A*KMJU?!377a}CX>YZw zq>h^>te)x-e|ztM$b+8Orys(9@gu<&Kyt}mu2G`!_x^X|)O7~z3QL}>=o!ZR1+GyC zZc7uVh;r%vqP30N+|>FzOM4^)d1$sMm?ed=lZj|vMRTcuKtaGALyiky!;q8J6+9#)Sk&l`)*=uFhH~>F zRM?T};-XkCo_tah!k?w3T3!N9vW(x;1KNaLlJO7dVdc+G3ep=e@ zxZ)?ryZ$NCUzS?v!zv1k8&f$tbZ+}nnZ6{-9N)0J9Bs~a?%ab1c)e1|Q#SqH^J@bx zw_{dUTK3`|U}-jYysHrXfjRGWp;;r-ctGarFEu>Db~bt2T{mI9_qQ6_`O>`~;&H9H zC!F=UMfCVPil92@Oq)kHuf1E1yD*+${YNH5m7x8*^yDa?Q>J%jXnlEm>5h+q(G8kv zOA2}R&#q5m#QFZn1g(FB*5OSqPdT{{bdWMb?9P$(up{#~^m4+qaL9}Qwdww1lJC({ zGpV3)UR-_H^Q@P~RjyyDF9=#a3v~^SeS>ds$|KQq())pkj{yWlq0v6cW^d&9LLjeP z60c^vpTw%8amkttxV)E8QsheV&p#p{s=Dr9wNPb#yBustJCewmM6ngxGIp7*&7*g< z#+u8`>*pU4+%2;Atz6rCNmY)2|N6p%1P@d1a`OI1w+5774g6CCZ1f^x7EoB~uR~<_ zh>vmINa&_&NzvWDD6MJMxx6eIrTnAaEP`xrhK^gffRhpRf@)a}H;1?mxnO?v7cSBt47!J~_-V_@&I+Cxi$Ah3-&8P3=Kn_;V&W{vs1Ge?)U;u*?|HXZEvG!! zQ^)q1sQH8APyZOG+WY;`Fs@%iocZH|yp!o+-{ODKQ*5tYBRT28{cJbh)GH20)sQ%Vy?;OpCpJ40^ zBbv}A`1iyy*V8yT?QEgm(uI%t-redCuL|G40*9)p*HkVF**$y7B>KboUvknGXLsZh z&cBA|SJQgYuV^r~(@1iD=F70||Hs{1KvmUsjsA!34i6kax;qb`(%pRk>6Gr2Mgaj) zND4i)eU1Y-5{%|c9C)Gbsu3PX z6v0~FLX#$26B9H(!T7p=df&~r7l7A|!jb8Y9cYUVx102{B`8{)i^nb^nj8=Kj5p6l zS0N7N<>@}aIgY^o<34pzgJ<6KT>;ydnF^gotC1SUWA zC`5$vzb*4CJtIPv|MsL)ZaF-v5TncCF(nmpI`W?D1ouB-gNR{%+Wm-N=Kr81BD(o6 zB}ISP0}B$?BWi-YUC>ZT}Xf(<d!k`@cQUt!Pi z?P~pRz0U=Y_@g%>aPq0%2nou-lr0DFZ^>VOoC1|kJpAm{!hZlO|8MI-=Rz$1Q3?@f z8LkxY103Oj0J!{jXa0(HL zMBw1R&GyTM&fcui{70PdiRsQBpaHHh5WN3_7KUe=Q?T%{qn&3$axNsyvBi+!v4@C@ zd+KP20J(o#?EH(myuXZlwpRiC+}{Ct7DD&fPG8Y5-v8_k`Z~a)<8*zOGd9c-7i6^3 z;Hpzj;QZUO&V|JJV<$v_-O#^naLU^~>3c-T-IK66gjcgt9#`;D6-Vp4#gR)cp$%+jP;MT8Vcjn!p~)jhIe(0Ri0*Xi z2#7FGe>=jjtZ?>P>sj!p6FZ!}it-;RP`~rdSsm0R3%&U%qno)c%wVbUdiSza2a;7U;NxQ9d?DDHq~CmD?CyA)#)kmRpFPO&Q|eTj&?a&pC)_?6%NdKQG`WaK?=Fd`HS zT&v@LL&Ri(OZ=-=zrqL+q~(`3=OMNH*61u)3(!>HrO$Qlt5zto?JQ(p>@2>FV=!)z z#u8GKH;inyoBioWL^zaFjS+HD{?hmqlXB9J=U8FjhcCYTCZ@orwg1u~h}bEo%|irH z`MX1Y1=88gLWouY8vGyWD)7)dW~&_cz?r!M3EoeLz$>RJA|kN-t>U>;_rGviPM;B<0=}FojEMa5x5B>`(-EOyP7(vagE@&LL`;}pqJO|J za7X;VLWMcD>G`Jmh-fjVHbsPu`3IYxJ!b)6GAA}Y#|-}uRpz%_oduRTHUaBckZPx- z47z=R6OYFr`m&?^oisw&PnJfBF~dLE7ZLv@^dHnadsPLP0{{u?AIUJszH!2ZId19) zDSB_6+|^Q>pEE<)1Rg5F@%>GoUt)R^yj$q~69I^zG5^-oQ-;imnGs=Rez~sT@tZ~e z10b1ydCo?JlR0%jL|mDF=pjU)nP2Muq0RjEs^PM?6QXh|c_vEbRPsz1$f@L+NRU&> zGa)Ufl4qh?P9@KTjld<5;FdoV?Q$x4Cg9~%@=TD>spJ_rp;Ngtp+cvUXQG8pCC>y5 zol2gGtvQuE6JB#Fc_zZCO}HM@Coh}H4Gu_T_;ZsZ)N4FrrFcsU|U4!j%@CkI}Rh?D~_N5sm3mm{L( zz{?Twa^U5Nh&k|bM9ds`IU;Hfyc`iX2VRbdoC7aM#Lj`2BckWP%MtN&;N^%2I`DEt z3>|nmB8m>Y91%wcUXF;Q120F!(t(#FqUpfP5%F~3<%ozn@N$Gqo#XKp>A!GNoK*F% zF&Tb{c7(9QtvxIS!Y|{yL=86v4v)Ako3Od9i|`Fb?lQ>y*N#vH0v|@plFuSOOzum0 zSp1-c)J2hd@X#AKcJo`=Tk3@emu_p41Lv$B%ZYwLR_}c*~2r8g6N@Yk}*jDQ6`eTN$P^#$#+a>Hm|)6gZzE`2UR1-|A3{zrTs?eUGuUJVpXb-7RWZ`E88Da*m9 z5Fx17idM`~+I1QssGY3>wpai0(Awi0GzK{LKaQ59lM}YE@x-cn8Q9YA*=%l3fF=AP z`C)SNga3ag+a6cZ^eUtIF8UI!M{%XZL*s8m&r>cM(zK=C=!QO=F?@6D6VS$gJO1|g z!nT&Z6qKiiR`?5C$j^s!QTpEsdWf*N7ZQ6v+*En~_#tpc?y=l}12aXDhmt(%H%P5Q zSFbkT+}bmym*jVSmpY}IG#@$T9!q_m=VcAa9kWVZxZR>Q`oI7kJxdjj?ln{VI9v6d zDMsf1fzx)6+cB2zE?7+hW#ExzGtWT@EuoYD~N0e=@a}&-ebWT^t50)Rhy&c+DyA*2Mp3 zPXGpnE*LE_$zV=pfODi9t6Z13d&BM^mkX`U5)Pfu4fGXE7p0XO_b4F1A-4El_7u!C z6dv6as$dEyFMwc)Yeb1d%4A`&c24o*%e1r*E= zrXs_^Wu+BCqh-V7z~RJXhEjkbD1zi*YLEaa3YZ2=feoe-<`5ynAZOr0hC-kaG#pYe z4LcNa0ZfU6N(ZJ!ro&)ALdpSy1;8|f0$3~rP-;GM0#pz!JqSucPezQw!j8%VTuI6) zh>azL1E%1_VFOd+(}HO(;PNw*U_c>wWZYm16d?g9H8~F$EX0I{4OoVsjD#3W&4UTp zhyb6LfR{`N9ZJPQM=yvErpCh}0aL>5c7c{(hz|@FLN9ZbOv zr6S@7u@TdOseopK*`btJSWpTwIuaCQ)C=Uqydq!K+zrzZ0vyXsGyWYIAAb=fCv+Y06UZd8S4Ta50sLWk5vE+{D%#t0)u(6 zNrBp-5FA!84GBLK%!$NCM#lyJ4G9SeHlQa3HySS?0~$IBD;XFAHhRn_Cp~dJR~5|wE8Vw z_h=$0L20R>;SkWkHNs){FIW)CymlFu@dN*Gh}&WiK94mg2trsz9DKxH_<|GzOaW?! zv$__X4UI3#e$vHKi}z{KfC(6@?!E5l?x7!(@QFCu6s81;`928;DDtaqDoA54y@tu^ zj)ZnENH2&8_B(yK(pQsRG5VwL$f)~PK2GKHH~uKB63II#*eX#HuD3VSTr=vzAy$H$ zy>c(@lK`$HqE~+NVBq}GN-u>6t*=?-*&-sAwqMDyJy2m-=Tt%h8cH~r`#o@_Bd;@M zuiI=xhm?WQ+ebwQ|9XLKL@cAAR|O^LdYe-O0G;2xwUitmS1PdjZ8CP_Nx~wChS8cs z&9dRcA`VxGh99qbKhB^`(33>t=^<%BdzDASE8a2Ew__iKLk!7A7A(e%>GNS!h_);8 zrG$}mR;m+w;$kNi76$bRZprpR$DF*?tqNiX4%^Lt9HV!2(;lM;rg5;~FIQ-gWH zsCpzwqom4gDBmowE@K%IuBXu_cr9^5+esgD$+#0&!aV%?gN@qQZ^{(4$uuQG-xgl z*1+_d1EV@>Hfxsf4SPjZ2xl_^eDmQeKvSa6Osc%vBdwMt#@@RgguI+-qqjT=0vW^b z%I>zdi-yaW@(q1kVFiu>&@GJT<(p;dxg*2LQT9~fSW}3~ju)R|{z`42CKu@}b=VHb z`1%Cbkn#Ly{`5Q;C5mX+oJPxwJ*b3a>MLW3n-D&+nGX8L90Lrm`w@vbgBd?lGr`=BYgmhzn9$NeXd5Zs#b8>WeDnR=_&Qo$LR$k%VH#nc6 z`#YC(Vqa`&`^(qxh=wBpy{iVC_#)PNm{|~Gq}=`hH2KjQb;;6bV!7yZ2XelY07TmD zji8JE464qOKv8Pi@PPS80kDW01F^)5%2Fi62h-;R+gUK`Py9*`tp)HarV;~74*YZ8 zGxr5w=jpbT#KHX_yo>_qd1=CAh%C`?;gebeqbCyv{x@f4+?F5m><4t$2y^(1+9*NQ z8G=CHfZmS_<$DhpRPcvx?+W>*3#=K)bg#Z$`23us7Z;#m}_YG3&W^TiAS zx2(9B>sQ_G+vCc($G2736mAu;|9J39;aZ#Z9p%5u2e2jM3qGT1p8??=I6I^hr! zP=t`I4$UUeqoPKoa{GP(wf9#=9=q&ODzB8aJ(yI=KrYZAD9Mw_2x^811k&ay;~ba) z-B%kF{w;Xr(d?7y?{CmBEYfXo34&*_sfH4xdGid~?yli(vp@2QxnH*V&OcCoBPviU zDpeSsdkuoQjvt^2drgy*u@QF$jZ(NO`SE!H09w)z|e>2L&|*M>}eRqw1M)KL?n=mE$Gvl&#AV35wn8L2~wPI{7bjy!g%2-G2b# zNXD@2r#xr&s4hY$(frd8XF9iht1#t#{{YSpjTszE#^DeX1wYwz=~uS_wO%6AXT0nC zmh3u^p@BRzBsbQXj*^vB)o~>AFegu`NZXwAw$pPq28cmCY0@?s>i! zUpKGC2H|MjaJ+IrWSyw}+PnUqy3-CSJzRy|i?wc2I2J#&CVC-3aTh;)C)U}BM#0b; z_O*FZD0Q6@WMO{@sKCd~_oJ9{s}V=u;r7EjH-+4F)5dE8Ws@xw(ZcedIa9>8RsM7h zke4)~OG_kZZWWZfDRMzDh9%P|9KtyN(e$3K@D0GE5`M@0w5XMzr9xcnX~r8kGeig2G-3x z_)lhO3cCtb{zgy|5Crz)}ef@@?cLH1YO!htww z<{H>_d`%?1O~;5M#k+4Qvbo+#edNBGYWMYhI5N@Dr_L$yG|5WO*wr$p30=|^39V}}|-Kp<$*s zO6ifQPkl!J3o}Q$suU9-bGEM%z&+Xe9&%cEkCN)fY^zIlQcBtV(QE87S6ozy`uVPv zne~~B^Jd8@yb<>qnpvWIJ)#hnBO@>y{QSoKd>LpYF3jVmoE!ltDZ%9fKI_(F0%RXjrYbRry`hH_fvJr zN>-^pJi+Ss~bmSOm zq_;akmv!pV4<23Qx@2==m0Zs04)RcTO?gLWK%-+SoeN`DX=gTu%IX{fNHQ7cu zyO2c*O0+|RM^}jcO*wsuD)+@jq|Z%P*7H47-jhXOn#R+(AeYye+u4Bv(SZZmF(T{f`TNSB+kba?E zzCvQ?f_3v$I7G!1DHD~sC`2_^;o-*SJDVvRN`pd(452U>M_ok?Mq5vkYL!{xR;eIQ zhI%*&sTjE!$h%hf5+qkJ$0{2zBD4X8teq+-#Tbg6f&Ch`dbZlZqcx;y2C|ZO{mNq`F0Zgnt3#A!M+ht z@fGKx$;mJV6o#hM?%4S3iRkz|sd}KPzDk-wU;AVq(0<&7 zoeK5N4WOwDmiOCS`QBDQ%x!DSaXvC5C%wY>?q#L%&PRh^rfsj55)`{x3pABhmZAIM zD_=bje}$LiYOalKFN)5*T$RSZs70P3zh>hu5nv`h!P!h$-T ztBrR#FW{L`#nT_ImihyhkV8>Q(5SH;pe|ot`&C#B?L)Kl{To}F<7P{h1{CUd{(QoJ8S z6fG5}mFM2WSSC7oNMA)qrO6D}tS%-YfauBA(81LTW3-Rt4iPjX@*(P@TDM9gwj!lhLW=qyC9 z6XmPk8u&3NWZu0tMtap5Nv9?@DgKK<7)=8D)P_AR%@Qpv5E+?T!a(QZjW|S=F@nW26KuUo+`uBdTb=s3IeCOudZ&^t2fAWD)=sVu zUOjnAMif!l;#xkLro~J-;Ok_Y% zEPxE79oBDEUt2CwZ9c-Iz`4{@u57WANn$?lJ5c_7QNf$r3()J}n^U~BhcHI587fDr z+W;~05?izjc&L0Xo>kOn{e>GPsIlD!?vHkjme_%!rmt4G2og*`P-RCy?W`xt?xnme zVeVZu)UfSWcHOsPrrTE*_$t@ZKQu`7MI$ozY5_oA1N`vH3+Fc~*D6%>(o8O5ea(xc zqGaC1Z{F?it8GcklhNqt0Xm^VQr+5Gl60fSxVCoMXbfbaZ^PauJaOf_7>>^n>kqP{ z$Z~+%b9ir)&WQCEnnZ>u`@q+WMuVt@JIBt$ASL_2n<27Mkft^q60%;A&8+KTq3yQ9&y>0hx%$SsFO@4yp`Z`z5EQNf+17W| z*YnB#ZCu)(?`bt!gv}p$Q*yX+sO}x%s9VruY0I!`R^`?z4SWf<%Q&_Y zc@WK9r3kaHN479pP%$YfioBLsLH%YW!$jz~H&a|{pG!9dgx@f?@vd{>OPq&cg&Vng zI0U2ZMV0fm_AsC*q7f5l>eLqcZI6+6E2%0tN8UD{uD@SU75b`bz5(Ig`mAy-_aYCl zzC029TFk4X>P@qIJ2|N``W?#6tatOWi4r~Hj=)1Qkf+mcj8Z(!G1~O0e%UlEr;xk? z%V76K@?Z_)o!X=O3Q+}~Xg~+NT;nPQ#szHCKiVi4ICJin4b@gN5K(!i{B*jsZIW~a z`x-MBEv`8lIGN6&(DriN4O5EcBRA`Ci1?uC5U~YvJj?^`}AQStW*7Q7-A$Qeq|yL?;b$$EZEirzs!zwCfFb~ z%zx00o;_+*{_$r_;-cAz7-O^aD zjT&@w8#k=ex}nH?MrsCUc60{zkHKu0w{qCdvK=zx`Pq~q&Z#)(% zeE{)yF{MvM;qjYzmMOl4F&6-Fq!!25sR#zvEX*Q%r#bFsxlHE@zuSL+_E7dH_omq; z+8=p+!ra)H&`W@Zw8-8W+byQR1lP=&qKvG&IH_p+;Ck2FrfC_^sptX{)+PGXMf0ha zMQo=y9vv0GTvEczohEa&3CHV92v=`mwBgC|xIK!KHnjD-iZ7_I3CnMACWheAA(wkx z3cO^((2Jx#YKmkKM;L$e$Fg4BR1`9d_KDf$@aTuglM3`SwUZO=H?zz9?k2ZD=C=u?O$W~_?l`)IVrw( zVbJYFTHfHydIC$j77j6|ePuK9_&WvQVu(5?UzVdrRUN|QPI<9#n4MqO4D&X=QN3Xn z<8Y`cPO?+gjW?;=fX5;Fj5A-V6j`Anx_ObLN*{<|OoyeuuP#2m3~!O;%k#Wer1K)( zgI+S5giRHBN6$n7&%M;{V%B$S9gn_j>M=btW46wayz$0ip&BkM({0fZ)wBU5UZM@v~DmFVS)HsF0t0mOk#Znd7G! zyT}MJX#Oen(a=u?zHq}=+vQv5v_d(Z0&W&;Cm6JNS<%A+VvK5BtOt?kC1 zo7k33AaCoF4CRXHN0Ad8l5?7bL%iR1u&&iK=L5AN+BD6B(Qb$~-Sk)ZeF$%8w#1}}+Kx7R5#UaU=$e z$`HNyaz9p|Ug*yJtmLlG*w-h#`{w#nhfNIO5GS)uE-}s7rL!6$gJKZ|m|tS>;@T~9 zLp-$g#oOThumHS-tUSeJ8nmQuoAJCVw{h)YhdD=`DxhXHWfF4F#Z>;*o zJ)60G7YR_2NF@Y);!&Sr%Y>;-Y{nr+xT03D-Q0FzSwHGZ*YtzsZ34q_W+z*=cwTAq z%ULoeEUI=XqtO~KT8^JhXeGWly+%QP;td%hc6(@bS6whtM)shV%D{cRJ0C{P_?S0R z8b7$}ra-HVjP?{`>KHi~r7_&PO2|-92_maM1j^z4`~}#+KI5rWN(4zJVVE7TQ-eiS z{Nry9dKkC%LOQ>BD>@%Ru13AFc;FeQRA=?swi_OO=zaS}iUn0&>@8#Lezj1}B6Hee z|0r?w`3Jg{*Y~<~BZht&vvwOYJXIB>{l1tQ*|qVWU8Aii6q%wbo*u?5-jme$J}VX)<U|)_Ulm*sG7+}+A2LEe#l>B0{61) zUYNOD2#*64w1)vQ;#$Wo10RWhzRB#pF_Eu`HHT&UiVTr2w`A|Oj_vxKbmyw^Vb@ykOxRFeQ@ zj9ZVDC?5cENr)AvAw6p8oGzwS0x>4E+$`Vti`q^_b<#KTvrjhhZp4Dp$ zPYpVkp|7}!)b+&flNNh96A7%Bg%+*x}`TY-`pZdd>v$}j%~lY$LP7yB>^E_@zUq) zCRzo0ijJT!Yp(b~L&EY(fVqhk!%jd6r+3H2t+zxiDj^xGZjo_Qw(saKbNEUSYkmbu zls?o>G#|UK;9_#o6Qr!Z#m zhv;9E6js`oOfOk0wSIbPqC(5Vhw-w@e>7>(&)@dp3eB^0^9Xv7x z%tv~EdNVTj%N5dp9RBd+%C(3TvF*!ea zxFvm@((a?cB74uq_brrg2qx-|tzv^s7vPGB&Zo);Xey#~gj)AKCBM+s6RH|1VK92pMB*{Tpd8%n znB|-L9^xUB@na}BgAX#c{h>?j$4uq{y7i6`+99tT9 z&rE%s90LrorOMp6v@zwT<+rYB3He@s3B6mj)Ri^Ea08+oyf<4|*gXaBWgqRTn8bO= z2oqV-(-HL=c1eC}>sE(CDtfGOnu&+((__|HZAo~+NVg)^9(Z28TDLh>P4E((@3*S84>+5F;f~r|{P|4Z z6AvB6iTbMZ*jPd7#NK`AyB2r{G^na@8nS9vZmDrI}ni*NLG307@A z|JoO}w?*DrW&)%SYIl~nS4b}`UK&5I;=@qWm^oNvz#eWMP(xoQNbEQs!K>`)Rzv4~ z_&t;@>~LpAsTE_8-oE^>`JT*9<2rm<8GonBn zX?59=bGN8BerkXG<5e6HDd-PXi=xTn7n11bZp;da`g$e3@xE%wkJ}>-JECT{f7m~J zW${|Rl2-o!U%YEYeRo#K~|@HuN?R0gkBg2Ly& zPrSeWv_=ElLGi|mjF%BrH5>(2JI#5@Z*ghFrQGFzYOO+0Of&9aW>rIh0CkIYK0s!v zm%hQmKuD_PQGK66#c%&0^sqa*D3#&ZObEMQXP=&i$!EoIALg{16QeSzvz&vED26Cr+ir<`fi+%aWP_l7O(MEn^IQNK{wgxs-Df*|sp2kgM6LxG)>1&kusv$O z+M%r!j77|_z4ews83DuLSZKgD()2STN)Wm=4>ItMS-2)@67XRrFg9o(RA)8)u->VZ zd|N`S0hXaaBT#apc|UtZ8;22r43{uei}-peN7>=-PQt70wP_2vi((Y_t~A_?d)Q71 zquNqQyd`Bfg^_rPnshFx51%Bak>y9d1@lH-}K$=ftr0UJ? z_fq5!GP!a!BOE;(i4uf+pb4+2tsdvK^me>kii84w({Nz5tcXKvQmFCwG_KY6Fe<;x z*Vh^tNE8?@C%pAV>J+*C$RL9BZP0tyWCC6o?OWKEzJ8-)&%j%j(ncbFHPtjvUNv?l z%c$K;LF|XCa&T=evsL}RNC~LS2}2VJ70>{x_MOo(ef8mG3Tj~E1^V_4yfp=ItGX24 zzuiC|_e?y|RV0ar+v$4hRjK5xAHBYYN)=)tTnS+J8%E_Feu41YPy%0pK5^Jh7Vr}K zN6My;W+{r2+Pdbz`{gs0aG`OL8bY~w@sgcsB-Jh?d@`?~QT0Fg>-EJzI2>U3 zCtQ=lH`%WXmD35i;goDqLy(H#K2AoLRxW$Tj#l&RlYR_R-*MM`Z}Tw zWfF({Nzu&^(~mEv3L9ZmFv+>Tc1~~fpbm(l^Ur+Zb-HT-LxZSJdvtV^Fj{cBRPw+2#9T z5+tJo?1Oz-p|xzrWz|5*`d}sDCb%7^*8E_QSW_2z!A}X^zJ3+{<+)nEiFX<_o!ABW z92bf{KcZe|)Y7T*5di!YUBxAbjIw#@S>GyW5e=xhH>N#pDdHAR$S@gm`xnCM3-Z|p=M&Ar`0lel57q9jU6 zShv9o3=_1jxbL}XJ_*f7+DWZlmnqF8$mUQEke4fY1O#F_i4~V}lrY1v{;&qM*=ont zMO!H@5toI1UbmY*Aai1%<3W@l%!Jn`{)nA<>lQGE!?Jt#-tXp??A;;_1vB9Gx5uX` zsaB;(T6*=jz-SpcagM$v@Yl&Kjx?-lL+Z>#W)50dvm_qP8+nROL?uw<{RCoJ1qy#r z8l-XchF@RTM+oRPq_Y_n1cFh2Z3Zzq=Nx{1{gBdZH(4eH8j8B}6t|VDa|9BFY?PChriGS{o>l<-H^9~6FewcWWkmx%MJP;K z-iyy&S;1CYmQPv7#YM#5Rz%H4P{iKVS;oUrLo-0xQ{U3hiCf-7)m<8Xc_awDzNJ}h z2m;k#27xA!L7>AcAW$TTB3M=y1PUb3Q~`rP2f$wyJwPC+EeHg(K>C#*t&_zy8y7c! zC3_1WCofHJjcfcisyYr@zMih?uD=>;(e6j(t!E)6EnveXs>vmw7vSu!Bx_|O&*h^3 ztL0ZblywDNEj?_V1U>XbT&)dtY-B{W+(k5X1QiuLG)1&*J^8hjxb%c9Y^ATsSz1cN z9H378{?4{u1}BwlIdRLnDjPWj*#5dBwWo%(9+#q{ww9E(p9fS`L5|z?nvsjTwcf8* zDH!=(=C#w)5mpP3(&qOt^bqEU+K5^h*}1y~NI7tOiMa6ztE;#`y+youJ$Z!#1iX|y z-F$U?rPVcDk1YlmKs?KjiBCq)OHfYGz|}~_Kv~yMRMk>hUQ1U>+ne9gNz>C-+vQh% zoT`4*s?z$Rwrcz^Z7l;~emzGkB^P-+d24;o;|>ID?amDtSg&>q=u1XzYi=8FRV4>S zKT%$HEvSu?jDnY-pizLj6qk~Wlqf&^wvnJM-~zWr%~~rEh@KDx8kYxw9&vy`zzrb$ zQZ6!HHf}0Le7-^+o?4c6s1LpGMkz;JWO%)a+}Q-TCd~vr)0L)23{B+Y)!jW9WcYp zZ}e&!UE{;}SO-Mw^IB240)F75lgP*L$UPZwbK6*Nkm<)rGu*pBaL*94Jkqu*oYbKO z8-pV7+evP~Kk!5=fl;qq+R;iUxy(_r$_Y)E`Yy;_nZrpTabfroAr*ZFkV*uf12WP= zwY$9uEqCKXZq}oXzgaab8Dj0F7(wb6n{-xrzl}- z(a={X*h%?l%t8smVK)X+1uBbXn*mSK)=#G0kgr@XY+7d~E6|j4Up~GWb^v_1#LWQ6 zWHF3BYp^xF`1)eco#vMNYEQe+tm2ctds7uXG6F`U;vX>TRkthxW<@pcM-$6)y-Bvu z{a|h#T_b#VM;4}sT`34#0Eq+{?af2RY(0x?KkeX$Ssu0uG7>koXNB6AT`mBJe@wE$ zsK0fUEJ3e7%aQ+P9~u}e6jeMbO#O5#1E=EsH(y&|w7MaVe*;E^9J^$E=wsW9DwFav zp;+eitHGG!7d%4JmUDJvz zgmsvdp~GS7!sq%U1(!D&b2Qp=g+Jp>$zfE({O)ym;e3sc4(BC0Z-$zBh0J4uj^fa3 z--c`y5rma@#;SnS1Vl->Z<<9V-WdaU z`B-mtncR?uu#oQh`%jn17);bX!Vigb6+#Nu;}X2~iHktVz;4#SCp1B!q=u(RRCOs) z)s&lFF=o=fazXmD=*oQyyaTaTtB*C()>oaU z9W@qojRzJkkjw?tB$n8kUUzBZUVIqoV#?~gFN8#$Ck|AiSN3xVcV;r|x~5CPPB&DT z)K}BWTQw_<;KxyODu(J7Op@U4^D^$%fC1M>O3YK_RqoYZL6h{x8v`u^98+piA#`)| zqu4n5RUmf%MlZwi<C3JqATmnYu@6Z3Va)@Azy-=P8FAU9_PADBeHytgSKuYmXmk!OfLmR9iCgbd{P+^Fl%9RgSMs`_Xjm(2IrC z7eft+6Hs81EtDH?>UgmQpRc66r=wcm!cxgF#BZ$)bsEM0D3UwEUvXo)_HOV6Dt zvLUAIZb;+oa+zpI>ru?IZDfVXH=q)lc$a;NSqWhgTFt`#tDUG#{a(?f$^MUXm2zHi zNK`k%Brj2id-=J3fHczF&wJh27^UciO_qM3DZPQp&L~4(r%z`k8kgFzz$AgZX7zJu z8P7CxF-ti|iS4?{_Zq?g#*aWHb5XcGPtgyb1(RD*;q~mzQ`djhwjBviV`!0M<5`v_ zgh`srEG0kOj=RuX%IaAOUc8+1qT2L(({vZZrfi~QRgqBsvqgQg)MxBT2Pq*C`XDt7 z-oTuqj*{jX9*6g%w|i~^l^B&ruxeS^7bJ&nH}NvD~jJ$Znqbgc4zbese$AL@owQe#1vn zrs6Aot3dyC(z4al5vXK_tor_w37Vk1?(fO+3?GSjoVr|7{ZLBNdqynZ!=jB~k}HIw zT<*vQPnBY;p5kD#&t7CTU~fc=ppNPuY@se~pJ91rE5*ywI;3_l^4Y!H1BCQolTHT* zS$mA)5Xa1ha7>^Qst0()oV8gckgH}^Et=@*-Qb^Pqbn+U7-CW3oj3OH!6ZFYb6vsC zC~Q54*AE0c`kuCcTAR69KQnA7e~n>t{5}~;oPzs3R(ng}#g&g&%`|tZ8>$Bmvg3#? zSZ-0^cr^ig7PO=sAzYb`hY`wA?ruJg&Z%6!wIA_pI4z>1%$l)LwM=1>)5}fHSH4Up zqVAb#K74S6p&11h7|SfanL)r9)?l2nQhs}HqfH}8u)a7C@)LWP0VRFSnK`xb5dpaq zek7ysJD`#(VvAUfD`iMy90djY2@sq}8I2j_$8+B$UsU>kOjVbKNscz4xF5WrIG7D4 zkYrHhA4gRYBAU}5&rZI0_1$gdy21PVLsUXP9JVJvRJ`{ddn!EL^wJBPVcUQ~GYV-b zl9U^$#AwdT5&6NArx~ff6G?T_&O5$%td7tdsCi_{v^4hJT?8#TIIZr=ExbCzV zbWQVN%VZMWN1JJ6FUR37?^rTc-QS|<+>#B#iM&x)y2VYpEK-g&-Eu*Q>8ZkZ%f#EHI@^t{NIZ^>KY>uVQB?Iu3z z?_z&5su5jtzgDw09LcM3)hY&)pQhxIP6|)$T)T4Du$i(eWHUPE5vv8r1bQpR;wP7Qeo}aaSwHUNK~d*dUD2%m0jR|BqVwmb?&gTW zTAl%uXeynx!!YaIQ2~c_`X|855WNy6NtwHRE!#At!Lo@^E7NJkAO;k*vpJ#L$=b(b0$3? zflmWjhRKu4K;tXVGWS{!9N&qg*{Q%zkrwvnDCv*A{_WeG|U`mic zfwiY>eWaF8V9864teZOWUeqv2Q&BsO5!>pb>qU?1n9S}*u4=fiYtW?bBMs_|s2pr; z<6w+m%zCM;ZM@Zzk#jAR;iEf+ZSKuIsk@p!pL~k%aU;h@!e|xtI4fwZ-ZTl?s zLB7%zI*qScUrJNBWJ=jwZFmnxX%wt|bJu>E+w?B#Q!)~9@t203R`G3kx*;k+LoTWn zQuQ=Zf1j(p!B32Y*1EbQVJnyxxkkpOV_@OE{~0DJvO8DSP=`ddJx!++H*>FYXNs%j zQ3si;swj)gTDvv>mM2ens`@)`zGwE-2N7gKiwx@f15Z&zF1=%twHT25DlbhX@Hkam zaZ&mXmdA+SW1!L-Xq6Jgx`hTNN()}O9BZQH<&K}0FD36vG*gdP)s14oBxxf*W<r5?HM!?#Uxc_ZpCOO# zyv9v5>8@3qtD1W|cozjFja(j;^IJGeNe^^jv`y(CrIWXgQ$4qhlFPpg6zS8f)N_q-J-l7vw=VJd01`>#-I zy_UY^>@vwYw%kzWLun(tVNCy%2WUi{Y&Y7I8-g5m^ePiO-rD0#-{QvEoog;DINN-J zYTsgqNxt#0VZG8`S#(9z&VKJ1%Vt~5b#D}E@_se}>(&vk7j6Mx5-%;{4;g%)_gudF zMB^~AxGFzB=u^N;*ytR}|6=YtprT5)cDtb)kQ^m6AUR3SAZjOa&W)gC6eJ@^Qpq4H zf+A5R2N4k@2?orHAR>YSq9Tf7AW0Ae=~vy2&b@QzKh0YAf9t(9GvaXesk2k<+Eumd ztKkf|-2+*+7fZbZ>3uhB=HKAfirvZ+=WRudS@O0zMvZf^`dDx{6Zy}-as}KZtd1X5 z;O>9c9f(P3pXKE0CpMgPI61XiY#lu5)%eDcfG(^a%4M>&8f7{XcgPpqBCF%GOQl80 zaj8SmxK^i_=4WW^3;r^%P_-wQ<4qyj#HS}&WKE>nyDR$=@Ld&t;LGf4_dT6;T}(>!KT4*{ zf4pe3zf7xog2B%a?)@3NbhL|rR?Yb(%iunGHcs!vLHBC4(?1=%9`$)%&i9kL8-}So z>eu(gtsqlm&ugQ=J=%6V^b4Z5`Csl&eCentSDt)-{Lu$}$(!v1ooMha2OAl|W|yA# zkDobODH3m=P#lfpyuo#E*m#TIsGR(ZY65y#k%#+Niqu$#|YM`y;F!@oo41ovQ;igI08L z&WIQWNet% zszA@1ED0o?;y3TRlK>~n+pynZ;TxUl$6CFMZW_~dDUCke+wT<*gt%=F9w+fb?Kw4h zAMPDP4`uH{bHbNYu41r{xx`?0T0WNjEXqBclLHy{So_Y-Mh zaU{JXnSkm^%rw{e=+;$_!+2uen%4XZaxU(1bo%iG17GD*vP(d)u2WId3^n6X^F(Tv zp(0WuNfPhX-~w>15m8nSE5a_cVsVkUfm9vL zRw6)q6T_MdAc<)4xC#*jS^`dk#*OZ?#5(na@bBiGRA#FigZb##9m|h$P@f+=~_KA`v8B_|B0N zB1B?&5#FUocbSMDjEw^gV6zXwh}il4l#7@F`pg3IN%NZi^iA{%dpoUV>Kf%J+w&7LNP$} zt^nW1x~F0{uflP;-!+N2aMvI35(HkwN@-^i_S{aKlwKf`Scay-?<3YdMdEMdbh06U zP&O*`Rk-qUEm|V}v6*W#;1dt)?YcrN2JMw#x)4Q}I2xoFkyufLL=!QU+E!M*X>zt27#wWpG#R(`Hc9#SddW0g1!38UPxr+bQ{1BYB4A#MKbRkXv zhU_0p7QtJ-)aH$cyCu7$(b!eISm0c7%1O^T$r63BZKEd1&(qz!dj2RFojZ z6KTC?>YL&sG1bX_GbN{LS=nX^Q?jsLXasiuS+@jFJ2&%vGkG;9W{OH$6TN-rnu_xF z)6HEeD&~lqPfE{48rTQSg*FMtDJ8=Y9*hA9Z0c)=t6VYt+sv&K_DS<`vMhec;)uGT zPa`P+QvvfW$(urPC-!AHGDpp4`5!l%l?T9GXY71t%IdPYd<9_m<26{bw*oLnb_d+* z4p#w~|J1{TG7qB|I5zStri%tY*rdP5QzSA>0CwPHQIh+%c)UW3!ftFlTd@EvKTsW^Y^=H3 z_GDSr`IA{SJ`4^{bL}UOX&jtuZ8#IDH*+cfcnr>Bt}VSJU_LSDvVM^CTub3u0az}r zM1@-kGLnDl(sdJ)Pv>%HN^Z0vKAp;CVH5q7TzF)ck%v5QnRk?^Qm}yy0Q)N28}Y^# zaeqZNsxkE8z)M==p@`ZCBI4&huOc){(dd0Kb}E5$_2mipU8;C7AKtl^>J}7Q6|3`v zUI11TD^iB$6E4F%^Hx&vwWo96IG&uxixU|KbnCH_Q3TLu%Pbjcq1YosK8V_){5v2*MKuq!3Gp8A`_ zz+ax`l<(ah!aSeQbUt3JI6)Nd8F@H5QWzsI={}v*j6`XfJI`DyN}Q>=TBo#C1Uc8y z(yYL|cm8Bt(wF>_csBvqZ904R5CAQ4mpe#B6iE0i!(bM!Q$wXOhcbSW}mrl{tW zM9fTiMFQGdNB}n8JQ9hTPds)8A7LT6Q+#(Q2mK}kcOC2b;}wPTN816e+|(7}NO3Nk zZs)Kr(I`Oqs)`^W*fRZ8%J|%nfx{J9 zj>qAW ztliyc@WTWB7cq5cBK#z2z6R0lM{gJQ4|50vjPUF zJ%?5VjJ*6n&1IpuB^isFBBAnjia#(UAX&gN73fRk|EJ8|sIf)uv($V9iY=;QA&~29 zH`KVG78RikMB)O9OQ0#}|SB^_K+LF<24#LKslZyCFc@BpBtk7=j=a zEG=+*(mw=2Xnb1AHC5>KAM4j$K_S*sD8Vs~->|imTg#xJYbme%Px!UqHbuZDRS;WZ z(O+^yVJG~N8xlkTXohq>*KfK1U@B0Afr3?_yhsIGfzk{VzQTGl)Ik>3)dQn~v_Mu4 z+1^li3xAXY3B2%k<^0BBphyJ;#qe7ys(1{Prl2qxC`|!ihIIu{LudF)0Z@OPen<2+D!hJt#a z@cfT>50sao4!crb{!ieCb*oWBfB36ULt#Mtu^J>8#NRZqerqKZ0s)120(FcCiXNbF zA}CE!1B+PK3N^%tzx)CUH{y?9Km$lnI76@hSdZ{fkP^SOLKRm6xc1+nCDsL`hA;7# z*`ZJ-{s;&OH}N;K|3ROi*o?aQ{~d(_$n?)Z6qM$mj$Tvr1`sJg8-GA4))hhxnc^>n zK;cuwkw)|)(EM*}uKPF?WW~BQH-=mBZ!rl9z~YZ-AdxKo#_bVkyN_?x=cS%U)9SU2njQ8j?817Hn`@}VFfDXjv84e$aPWMka~)Q~p* z>UL0g8-JV~5_scpy7+^`LE#<>iep_T8^z;TmyH@I$6xLR1_DM* z{FZ5h&>ibCQN!=}%U)0@9)Dzlg!A~DOn=Zl*1Zh^=W1QHjiG!1kNj7lkKY{-e4QW& zh4>No_kRBe0ffRJ^^ph~3FO}xfr142Ab->5dY^?t3!!N7-ylOMl2IQQ{slV( zsCNVKA?xl%4MXHF_kuza`A^IIMi!y)4+Snl5gH(j0KWeTWaQth0);m6$HyUINB-F= zP(UQ>462hDTn8kfNCgE-vi_15&A+h^1yS;!I{Xb;LirjLYRUT7{(>$c`M}1|OE&6Y z{{~}1b}_0*Ccj08lbC^mH2Kq?AhAvUX1Vo(_w z2Z@97H|GDqqEOUNJtYV5C=^mCj0}n!{Es*(|0WU?V9I~E;`+CtFjUsR{XYSztcM$F zXexh&8z@Yb|KM*uwnD+Itap*WuvXSNq6WC~SIz(hyYj~gpz&8IOrY0)tWP|l5Lqac z{{YJZocEuQStvdNh0a20@t+`Ce!B;`yFy{L{7>qq?wbFM;X;f9cRBvMYRJGS#Q*s9 zy2hvv^#5|W7gQ>d)`}?WMN}|W)~TRyR!HFh8fk?@K^1Ey9vM#;k4!|6h^a!AkV$EN z%K(MkL23>Py90cd^kKS0@>UlV<^^bpD(VI4JU;0k=rj4G=TN8e;{g!MZ`q)Z3+D5;*6|3gXjtUHO4+&ie^0sNt)iVEO3xZL-9} z7Qi1g3q>S5L7n6$J%>8WPkIh@nxFI>>O4Q`In;@Mvh@if8@n!C*S*c^z4D^R9&S*# zH8p+IM!DCAX_+_J{K_3VA+;wv|FN1BXpSIayn6k?Ho>bIUCgofGnYpm^_{cyxm7Th zc*JkGIzldB6RG5sOt|OveJ+;Q7cYFAV$k$V2xOlPh9`Yz74g!TKVM>GF;f7_2LHF~ zQpw--5~EYGv^ABzBzq_U&*)kt%BuX>WioCTA-0_6&8aXff=m_R%2fQY%8jot=N6}* zCxfDO)sZ`!g>HYY5)Te(y>R37|9=&(6t+Er;|c%^haUA{Ep^8e#nSu&4F z_D)CLCa?4jjdZF%yxZWBecsgwT+`X=(T6gvsB_!@|9L?zS%%~Lq@TXNTGPWhrpmx3 z<8)w2cxim`rc#0v^7wbRX^sla8ksCJSFmN@wKM5llLPc7)r+caCr}^9FC4&dJhqXD z`|`o#A4+q{?_G%fyo+&lFt#BlHldmLHO*wfz=Aifps^^~QQ)C(MehIA`du;y?K^v` zwwc)C1Z9i4IpNlDp7ht1EKQO2iWs86u=)Kya*;2Y^5$jsU&l%r!p|&<7qFzS5l+E+IiCMi7y2 zfYmF{TDSO`J$2_fNY*P*@K-sWpGJ+Ni#-N|M z()j28VOmgRLmz%0H2*=Y1YX3X25xTVWT)ffQxw;dW!B(BiOX}q=->!&yEKYP8^z2d z!YQTBNUtTs$IrkgAhwwWuE`}UCax_=qbQ}oCnTz(&8G$DW|N1@X{m4477&r91@}B_ zv8pO+qu}f!DpG1&S^4<*1h#TYX-I;i) zL5z}MLN0X!nDfW?n%SqA#><_|4xI~QKJkcigxUVx@WaOP_q>u9K$vE*1 zt+K8BK;NxZje^sc@=EH;v!W6)g|h;%%zh=Z3t1dX^}HS&xiv51I+y(swR6csoY=Dd zL1oFVAD#Kqc~z)Uf1U)xU$(`yCUg}##)$_!qSYsoXLJG3C2$?6dWjOF+Lr>mH9lZQ zQOILG+xthqekc2kO%XVn(wZ7Sg*-tXAA zwSRCi;WhikiJ@l_-o+vh^!Z$>P7A>1guj#lC*X*_9o%A(-pzzv{y0-3p=`$|;y*N| zG+3V#vc%^2{K%&Gi4}n>S$!C%0|u)8?Zdi_n|yWpzwO@+oWP!6rYvs%Y9(+2Q?4@G zayeJ$TeU-X&b=_S6Q^e%4v>6)-12;~U5V)v7aoU1`xkSMbDM#+^U6=75k{K~bY`_^ zVr}dY$8^(5pM)ZE=D&%Jmf(ZpCR|WkS;n*;^ch|NVwsXB8lc9ORI?3`Zq8 zJ~l)11c8fYd{|zo5_QyveiQ59l&ep*r2x$3a2Clf@H3(Qedq5Ki1{Yzi9J`YIWDGF)5m<%3A=z0;kbY1p`I_KrpDT zT|z)H9Pt_RdgOAbIJbG>46h2i^7S(NTV;I&La`8#6ly`P1T%^9mz|s9^?!#ZTNOk5 zFWwmtk28uD8zFrA>TJ858VEay6yvm0kSwk{mRtz5AlV$Yq;p8vr=;Z!f?LhoLa1P^ zL)^mmo%-hkXyMz+m%(`mxIM|dA}4XP`Iq$idur)EX{3hGja#auhggoAbJ;aNd4_DZ zM)q;@Y_|SvzE9|`jA7(-ZGP0Iqm8|z0Z)Jy4g>hsJHPIWQb7+Z1$T%Bofx0%_kYUd zctFImx#Idr5v~4hno#lj9odZ!X3Rgxpj_pX)#E>$VkP@2je$O>catJrbS!l_-?IKG zzriqvHNWr)?E)wCWEkC`!nr-0B>J4I{lJhJ!XZu)1g8D)nfKk8+8@Cs`)veSzPb#W z>c|$z>TWAQNLwcQs;?No6kTiRelY8bFWYAStmULDXZAhZ@Ms*vLy+QFuow&*E;HrM2 z%maV*UwTwlkz}&sZWycbtu(!i>0YLR((*3zlK#jg&eBi75v@7iKHiLwG>LnKJ;JW< ztmta3%PYzMv0`zw+3UNY11)gGqW9#0nd}d0=mhmqFd`Cbkj!_UP{IPffoHtc84YFU^W^T-7Sgw@p3a213eLAD_OY zo*I91hUI{dhq^}M7_ySonWdjcwdFr8!KlN5#3l(el!8(i2M}zxW5`vyy?4*lKW3Jc z3I4R#?2G+fD@(k3e&|_A#{SM70BuK#j?mK6m_@k=EFcXS72KK|PIhB<`+nc^d z)cfxlUdG)xmfQ5}%tJTn+u_+(moK&9nx4!`T};lma!Np%1u0!zwH@OIcI@m=dFU2# zYWT_9)$hu>BC9XX1>Iu$E~zJX4Zf`eY|POmR>~@%ewGkKIPen^%_4Sc65VINAX*Uq z6T*>BWqQFPTnVb){h^ z%M3hDSTF?E^SC!n0VfP@vhNO&ow)*R1C>~n0BrLHp@VN!>`FAGblaZVth&9fz363V z^1SoNCLMNHYH@=gq=VXYFRi{3wdd*QFRx#g?kHb5-m=`hz@YQCxcV20+j4r!WFf_g z?A8t30V9X+Yz|VpAJ5lxVkK~2M7ChXW7!+u=+CA)KNv+5) zH(lMs-(ZY~zRpP#_>nYkseCWKQ~nlhp1+{(CrA z^ZfGfeXOhfvM-K&IM_bHTLr{hPi9gs%>m)|YUXrbnaFa6ZStU@d(Sj#t5bYmnBAn^ z{Ti2>O-o^c08Alig(RHFR$7;HirQYR561MmO|@;zW4dA-88HW)xQ;EESToSv^7^<2ncuN_3j3|Qnw7r4;x9D@hD(%zl@w)JrPe%R{yJjm1 zGBPN`#_e*FSWv+E#ne|%qY8b*+;MN@#_4#N=(t=DB1vk(1T91p{H9mDq;Z95x!|MdZso)SuC*WE|;;F5O9 zysY9S^zEK0vum6An^?=2G_q?kkfDm= z&~by&aiuU3a5x%Q#Pkw|W9stM+ZO;5^@VUlaOX~6P|h0mPh5d_nTn16voCAHkjeLx1L`>D6l(wx0trxCJOWx zr~-=;`$C`kXmK~Q@$!VjM%vRSN1}e5Xplh(Rg@g}4^X*8j&*Rm?G_O-tuztQ*Xq{f z1b6z!e$?(g2+!8ii@|a zAc@yq=pD{v@iSycfz_SFDUA-T>{~xMUPyR5NSl{`oM8a#Y0ett#H@R1Q;I@f*o8Ed zX4E%fx!$Yv4HDyd9eUmq+YU_1r8+KK5CW&q4*aSzcdV+Hy6U0WA3pwgb<2KAfPfnO zOF_v2<}(<)KzzWEu6vKcoKjx++G4O!;3)4|9{zU1*|uKDH0XYsm_2S%{<^3DjJt@9 z6ty@OM&K@nd)=iOZPFa%4h9#Xcx@L%f6ZI#8-`9y`9#t%3&zH9@x5r;i>(a4*#ZFUKsLv4k_+^f>&Bs!V zDoWLSaa)4iO)ZQz%GBpnot)IoLu6(RN^r-;IK_ar|0IRvX;&702Xm_W?r-qG3ID+N zdjl2_lFFtk&mw)p?_FqJm{k^l?YIJ_XF8%s%<5YUAJTNJ7~i-NEpKOkYekKIf2{8w z`^8hu#_q$M#1NmuM{jP6V+jj<;F?i-*2-Y>(R#Yo4`78TCcuGdqV z?~Yic>7iACZVSF;DKf1prnDwFG!ykvnGXsj&W;R<)F!=J&A8fpfFJntvwh@YFUs?U zV*s0uW@E1$A5&_T7Q)3#=ITI%6gt9W(*+^SS?!>3{kvYbbSDzSg2jBrmv0no;z@U~ zjRpp%GTfD5)KFf29Ea8H{SQ-Fqp^^kGSPI-7u~16Y@{z1j@s2Wo;I%`Uql&9G>UM! zF4v37@w#H~T*c7Xl@7f8tECAfQar94j=g>g+Z~D7gMaOJiC#<`HxqdkEkZ1&B?2u} zKDMd%d6_oK~&ib9!_MvBIBZrSfALDw|z&<1;Q*;Aj2V}VMYw4WJ+kIrQ}hKLoI&Uy{GRBL#$4q=6Lx+98>#4v8c@AM*M94TNB7 z;|=6^20jEn0Xf`IPSrw#`D_9vtxmq^Iz4hZ;p&wakr$el<~Bc0EGX+^{9#>li+1Je zq$B{M$R?W<)_I~bBlE!*q22OLT}^9W;bOb@b7L@3pFFQ_v$Z`x#N2T#r1L`K8aAGe zp(XRG`kpI~ROOY!2&5d{ol)vRPBYh4l1X=+L^XTiA9tr{9Y2E===rL;pRM)44&xnH zl?K2BZ0XEMtxSr4U5jcqiz=F7x;)5SL0~Vdq5Q*U&rK|{n}NxpYOzWPTLMn#r3UQ` z~JHRqFxp`;xWlGkYr(sg~^|eLQr>x)`^%d`pKAIfd8S-}N z^>LhIz>tcU|HemxOO4&GgC2&bF_N<6^Q_ls63DTR98JDE$*{aoBE^W0&#$k8eN*zv4L0rysmkaX^q%B6u?q~V zoSUbYo?^Z#Uguaez4z5bS^(B`9|11V3a zKzNel7Gx%i(LhDHv|GHZt)CzWj!DdVd0&gU`enZI$oM-4M=ymwWLk8Xv%yo`X)sAM z*Wwd-ZMEP#+ZYzEyWBGw&A|3^a(%Skv3+NAeYD(Ug=@6{%*@!0WDON3 z$)mizC%KNHZIN8{)`Qaw9DZ2TDyO55Li&XiNR|2wl_yK+A`XS40z{_Lz*VhXMg0<;$j z$8L8S9D&K*0TQ&tZM_qw$|ba<$zX96X&k+qf9`t@w_i6(n(igt$e;?i_aQx#G|;dY z9QXvc{dq|K`a=!t^P2Q~iksi5C`U`U^4Q$aSGzErm#g5V*lS`e@Y&mrrN|=vyMFBf zN26tHSFpqn`eFPeYm5(oxK4Z?nfpPr;a#7uy~|*75<}~bnCue!hkozo;}cYOJJ+!q z-xpI7ea9EBU5eV)i6iXE{9H>AZ0e9Z)pJqseMA`3xi*|WQS@tn!WO=-Rx>RRq)QFF zlt0l{w4o%J4&rb5+zGzmHN=cy4NdPt@%unt>rKg&i9?`Qq&N|6nU8*>GPVFr-{#K0E$mWFn zgSZp3J$33UTBX+vewzAWu|CYjEhX1qTWN2t{y|yeax1+QJR8r9@K&bLyyh0yrYib@ z>!JOMX>nd(ux1SfgX6*R2G zWGVURLa1Jyx|=)7_MRv$Ds{_2@>ueI>A5Bk-)M&H;t#{0T{Huc>eu#lU)Nl{SD*8o z*)?(o$o+fQfRTi_K@fTJYyM4r67Gn%LuhHX!O$_h^+Njl?>MQ>yGl3qy(+o`wnNHn zN%yi%zD$=u@TfjFH0`na+JX@_^fAkvO3bmkgIK#n-mhs?c}FkCpIn>U^1Wt^wQGd? zO!A6()V6?+j-cAvP5CjOJgf63%vcpHQ|acWJ9T~H(XPD6 z$t7i&08BkZkK|vXZu6@;{YaeqYfBCJ_Sl47do5Q!e7KcmVthyS{l%Xa%b*45@XQ#_Kmjb_k%e%YqJ)F^T1t# zC?`+(#r`VJDlml0vpm*L!dTQPeP#3end4>RB)j-^Fe~??;iwYGap6|?zusqgcdB3c zLiWP-Zw^l`k(LvG_ogc{x619R;v^fRWp{M`c=*AZjbBa1Cbs{`QamG&_U(0B8CQ$z z46B!daHZl4GGlry-vd}L-}c@8XTlR`i7)pZZtS8&%7hU&51N17W zu?ak89$A*-oP_b=uY52;`E3nHR3A5;O_t6G8H!*+VN~honq$yL;I>RE*&Tr|3vTI| z;`{pXzMyBRm45ou9rs`!M9DG>)l)=)lqMF1?{(*nRC7SgH!wP_o84w-gPdmo8d zM>2%WOu(iYLFCKPctPfjn}m*YPhM@V6+g|JAI4L8>urY_qipqKzwSK?ar^w8{EnUr zVL?SGX_8^o8jcC3{pbb(8#3)MWI>t4?3%@pH&4VU``J*I1pI$f%2t`FfBp5rK83#qSMaE+-qo`>WG3+^pmkeUHgOisK;^b1(_#_j+AaBvuGh@3uDUROblVUnVJ15 z;*7Wj&DhJEcr0O|6t9Ch8V`$_qf7b_x+3B!<`|2~q~8&m7FF+$F0nGJ1hx#>iN!51g~LturYLHT z2*8Z1#K{9{9=@M0+6N^p=e8ErUhLg^{gjOP-IXBe_e|q4N-9y2Fs-(}0TFbLh$ev{L{0_V`2#b_n#ODo-oPNZd77|dw&ZndT=`xr8vOi#O6OsN6vW+NkxRw zx;xgr+2I$i(FiU3_9W!u0pdRR6xufXmjypEtNqO{2 zM&li+Q@$N<=hiaczv$0oG_!jy^l1LalW)5!M1$0-m(VW18p-JiRQ(3&LRJmdN7J}t{!1aX=oQW1o~cpxznpTo%kesyUZ(n zhi6^lF1nZ8t9^dl;-GY9=E*y{Rp(L-6)`R1H8Euo_xhsc*LI$~ef{AeQ;C7G<%iCt zPL$oX>a7htA_Y{&0H6c(Ih%lv1GcK<^y9HN7QJ}pIE!P0L4XptHx(&^B0o{hCm4I$Tvo%1s zp(z5O+h9Vyu^bq*x1sD2&}}H00dyNm8UWpf23Yh*Z7^hSEDjPmNkiy{D$xMl zhDyEw-G*w10NsX4a{%3jN<{$OhPJ2y-G;V30o{hy-~ru+rupz9Fz5&c(>`7c>Z+7T z{`FnHznt~*Es+VGsX#rR>VoYt*&ute8WeiVB+Y#QBqPwHrVdKlc}8b~a~Vg@jxb0t zCOFX&NTULh1cmq;4)edwF{mwVLhe2xz)+b$nyElif#*=QLgbPq1RV)x5KvOvc7uEl z%BUzaC&)dq4SWSMv)b6?3`%5@piry5nm#ptyj7 z{pq+|K^}j%)t%qgV8d43-Y7?tm6f9({88IPLBF<{F^GL}A&XQ50d;Vbw3xyhRFk=T zh4n5$@Wj-w6X#~r9^4Sr%nDGSekXi`g{cl7*7@~w)yoodezw`(g1-5P3m!2)n<$k9 zIBX?pLZT05z3@0vxN&2Y5N;7>ls&q$a`)*Ip0i62&Sd`Bzbi;$Tlwx@z!tsBdE)AP zu@MM2kgK2sRAtVv_^rdIN*29bO58v56~B35Pt*RLaPEDv6>` z?vDbNXKrbZ-wAmYN<8(UE-jY`(U*X~_416VkdLHEwMb2le$7YSA;*qG zw#NPw4R1!PXjp$%#rvRgCr@v)KAqoMZ0d`V#_`f`k5Wm(qv8C!Q~C3?^o9WcvT4YO zGw1V&fPbh(fl_0)pC^>&I1Yftcf*3!?b-&U_PR2b_!c6TXRzucL-_#hQAzp*9`o?KfC{mmM9`p3?{m`__W*j&GoPqOh1u? zpO4`oLG6p;uKB$rS7H-}NhSu-EPlPBf|~C`MH5oAq1J_|y$=~8DBD+%MFwCE6;zdi zdKV-k$tRR=IfXq8VvTtoUOlK3bSb<2V974t_6jrk95zl>`<%{^Vz~XyB63*72$z8Lyq6evs+&mnLp%2@L#YDLn1S zIeH1SI??CIhE2a0t(JgN38oWm-W;n1IyUsu3|I&hajspFv5l`QKVAQ{y98PF%3Ao$6TrL;GzDHzrt=))}S zC3J=@s?>4h)zc>yOid*g%Og)Fc#(lZ@MbLDWOcm?N((qPaQh-O9J|E{T&GclSHH1_ zE60o1POV_wTt)G9rW!d&ggCg31BSukZolFOcX+Ke7T@+>l%nZdSh+pq z%o2*!)ydINKHBQLz%KC7&P(;_W8;@EwQd+2o~*$m6jnusQ{OKCswQu5K}HIL8bru) z20hB_{#e`$E3ob5Dw}?JJiKvH((_OsSwhpXcE;qPv@B zC8EXZr2s)x`hJ&fTPemIELRN6shfZ1?wTx?c^$QL%fqV22i)$j^xh6b(M7be{cJ|1 zlLO9awadFPIm5SMkDq3wCptbExI8nu5HWW?nB)9GZHZam_JD_GL_4fw@>0u>&A&Jw z&AHAdl?o<0025jA@p>=(j4cKxf;#0&zBggQwFk#@fBRjG z{K|pp8)=A=GM7oN664QfOMcmho4;2Avw{-DCSzvSo)=6nmhTZ=;oO)xB-fgy=|vsZ zyV?6`iY)oQ{uTcB?W7^Q=*k7@Z^niVN@EYMor)j)sQ5x;z=c>KQPug@7PZ?3Q6|}a z?!`wtm7=jHrcc+tKb#wri1m#)uV4w}*E!la{^Br4H3+;=ov*~I9qH4s7})K_st`!% z+MdsW3Lw79vqMKPQfeshMMaq5awN71jk{3ehgqV*?>})l70>&T%?Lj>y(6z27c2e> z=iK%P$Mt3x);|H4guRGo-J9NxJF~PETlqnhNP{Ml##{F&`#ZNXG-;E6&P~`&$nsQQ zjj*qL>UP8+ll~(!VA$1hwRO2wIUN{m=h@TelAo;jt3O8iStq}N^S*OVe`=mQY8RKU zSYp^VBR`yRQwL?VJ9Yl-X5;4s!MmBxkvVOb=6Db~E_&*s*~Z-i52k*itB9lZ?@Npc zx(gU?tn@78fBr@mcPmPmHI46`bIQz!*XU zQ08HAlTLSnt8NnQ`xtb(y{~|( zazf8h&&ACSX9a(CI6c)pPxmWuAmpcRx&dcerhDt(b_qxk37&^Csk*i4)>~YgmnGk3 z^>SrT&0P;x!op`F-9Cj)F2_v#io1cgCo;b-BwQD5;JAQvDhUWB`qmh8auKAd@XW%NH0|pI!)hg;6ZX^`iIv!4Y$<{ey~cFYPre z;N|~Plm^Cm<-iblW6YcGlCZR)q${531TBdvdn1VuH!a*=uO~W)k6oo6iMZ`{KjW>M z_c<(ndCM8@G~nPV@jU@`C}Q>_jjo?DP`Ccn%S@-<&Aws8xMN1jdWUJNVm^2I-CXV6 ztkMQHpTW@VceGzuf1jYj;ehZ{Qte?@ZRbUQ`Oa7^S>D)mbFuBvJ(BH3VaeY;<>VSq zv#Ro#I*fI{ai!&m)oFgW{4|_y`hwBTem+LL7&%Twgy_} z-!gS}hsW_bpk>HPaso=;bpC$mo5?#Dxjkb=O1>Jed`vfpX}e$%J0Oh`p44q^sDAx} zAlP&1gq4?YEuxE6{x#?ODAS_hb~=R|hV+HVn7$i|BOK4n(Bw z$)K^k%7=<-Ve&zmik6Xmrcv}&e&Th}vG>XJ6IQ35eS~$`=d}o=+p4Pz7Fy{%wOtny z9DzRk<0D8lRBCpF=!Ji^h)hehOV%vPbT8f8MFE%El zn`^(kYKP;ua8l|;8g)Xxm}H$bAAj6%yl_*E*W*!qbLwH1wy8Icdg(oil#E!0f%hHP zw&~nQ;)$k#3-zDp4~EoyOir@LD_!4Nf=!!VpN?pNgsco)K-NTy|L}m}ApUUX_8?-J zIDRmXzY&Ie$lZYu!#=SDSGg4z!O)m9Xxz<$6v1rtNA`DBq9g0>syz z;v2^Adr8qVX+|@%}@qK8Pe`M*mQyrvGQ z)Zz!o_ z5kEN6>L)SG_RYwW?Q(+p&Z>p*VZMpuPpn=o3YX|btWnIRP|9n4e{FxfPWV9G)2pJb zCM%J{J9TBYPPHjYmDqXq#jM3YuRL-pmx(A?{$aD^o96_|xF00)iZAcj4bTHt(U`>h~_omw}5#v$`dg2;|*?<)8g#udXuFF$(p%S~ob&8}2|`QiRayhK>* z&RGQ9evi%N=z@1#6XQb0Uz{5m9D{l{ODvExKz3hcOz)3NqDzzBA8dZH%TDLjWIo<+ zg5HbGWZwN=#5XyhRO?K&L+bpQ^sKt9!TBf(>t{jG%3S zw*8k`mD4OWmQ|-pmx?;+l{zgdtZeerRn6f9!P`Fl7oUH3v-x%~dU4=IQSWSuQBG|@ z9DU7K{%@eWgR$k^#dBqETHPh)w=b#&5_FEe>$yr}87yZut(cHxFLeAH$@@6=*KHHP z%2!W)nu>V&Sg5>^aH9mHL5Ud-MI|sA zEN>oZd;V~dgeVd87uECRzJez$QY4d>T)}-tNO%H*ja0h=q6Fkh9*LZuyuu0cBm_Me zD}~&WY%i9Ha>QRQ`=Ovz`cgRYQ(hAL2W34S8*Y(v6fa<9)1-}TJbG>IUV~JTVnl3c z|I^;P$6iOW(#8gp>eof;5eEB%w{YpJmAwhuxn5d>CJ)5X3kH2xLSL#)JRg;1l$ZPX ziE;D3=C#8E9Il?XgN#qyJlUw*)?*ccxY2qZ_jUJP2ZJtmE`t-&yTFHm`61WMj8}`< zHAc2_&`r}21V>bkOTFk=*cMh!{Hn&i*QY&rRjS+C)TltQS+$gavS<4>AG7xC630F4 z^bK7>jLBoaj-EbSCV9gu)2y`LvhB4v?un$wRlfHq za=D8qDWeCgLJ6d6j7jI&!G%0Y0VpMGk>Oz&YP>gftDd*?o%}5C)BR>rJAbXs_OQ=9FKyxRr?G3pc0`m^ zel_$@==;%NeQ3?x5?KrMe6jKe6VoM|YlmyJ-iBJqihoZhOw3)kHJufgt_S4?AX1VJ zS)l(K>6?pa$YT>XvO|vUPM(Qbe6-GONll&eo?i@qJi;i>I{nhzgk1^581;0GegC=t z#gM$j&-}CeyrXuCIoWkbfK;ZnIt~vASxunVyid_8+3`7@O?x-;l~+!l#IEYS=6YXX zn+#g+A1lEr@yMVAB59)@?$R+KGooLFrA;Dr7bkcr$$a1jFBo0j{X7r|lYf+ZPlag_+hocWfilia2%cEZiX9BNA zUjv?^q+XMg7jjDjcnYNdgEc;jAyG7ga|&@AAG1ZW8~?vnv~ef!@a!VqO*#5(t?YID z@cZU#2YhtIm}$Npw= z{YIKc&R;_FCL#!eTJu8vL8Gb*1w%!u=dT((98=cNYa74iLVNCHH@Gd7wk!z=a0k<* zcb6LQZrycwMY8eTU4HRWtK)l(*>fFv<=hE^r-dUCM_;xYq^=Y-rJ8hn3a|?HDaf#n zKhIL0M-Vx9aF2Q6v!1TYbPW2e$uZw|#W3^7o%^I1^X$BrY~JJtQu|t$r$evNy(L<{ zn~4|OEn2;O>O1Cc+JesL2d<02@)peZw{Y*e_VC`L(}F$ep~|z8dvT}(<*oyo^8^w7 z^Pi$lPVNf4hBTDj5t99MEy`5m%Of9b+979InK_ZZbdXCIoE-b;(Q5r%F{RN|y;$}n zTakyorHtg4lER35u%Z9t=9Yujfr98Ep3s+3c{4AC#A^gf%69*PyXN1I9MchiF*Sn{ zIl9~!fSSZl6TnY9K@fUZm4*p_#|gu17g1#2rPeYMdgSyoA(eCIA1_~{iwAn2Kk4%R zdT*%F!TRfa_m3jVO%HbS6PwmpE_R+el?dk-;f~Y@Rt>T+P><9%SBwa^G}2Kt_I1*U zaE#vXX%=Ott!;>Lz&Ywz`yFr(wKP_+RP^xiRrCxB0PjW%M{0z-TZKe;TWN);Ybk~~ z9R@I_PL)?5-Y8u)|@(jqNqG4HWG|wbV^W?Hd%a8=K$!XwfWM3Hrfc*EM0VNLd)n^dJm`>quGOFbx%bYyWV64=u}J?E{LQSoNSF zGY3aSJ5?+JAGy!OSVbX%qE3E`9g9|VZZO#CAQ&to76xN+BFVHEx!o^B#WFn9+`!S> z!Yr7e3YN(|tPH$-G(!9i*m+|;t^Gsn3=irnYiQY7W9SmOADRcAo1Ea|8iP z`CnNiHMULJDagyw*T&Gy!CqC}%s)UoOvT>O!$M0dSTjUT)z=AYr5+USQ8pZ#YEEVT2Qy*)$@h==0j!;eUeOKDdI;ieS2`_6?W=`qxm(0px*7H{0}X= z8PD?3sC3!CJM*GFP)k-iBZ|=`Ob2<1AT*P^ZPEI?=uSC}h82#vX4yIzp}O~0%fUV+ z-!}kM3ch;^&^!yih2xpFMwagLJ@&ju?;)Wf|AAZY;5V9n8*uL}{P_Z)SscbqyF5@- zJsDW2B{ENN2wRI8=dc+xNUk1M6@W2c0yCdc@zmy=tj(``FO`*LDR7Q754`NVzXh*+ zs!~v>T>wT~uncJIx+k7>zTCSjs+tWsO}M#BH`Ut-mY1{jMq>cDc$sB&3D68Tox7e? z6s>gAnz8DbERXlQd*6EN<{wm9d7lKZ0W_i*Kr=3j`q}V0-R44l0(@40Jv_w&LC(ZDmRteS2n^Q{vYbzI;yIzZTQ}s?(V(m?oJWuZV)#O5)#rN zjdY4AUD915AQDQcC=${kNQj`Qgp>#Z-`b#fp5uLQe7^S`-x%NU56^L5Yt5@>thMI+ zT^XLy(2M>uy;(cp_>W|>Cek~=w1J792*{8yF)F^69H>BABewM=qguV-nrPVLf6IZl z`B^aF!{!x0MqW1la|-WnWt4Dio;SG3SPFkUzeO3?wl zD}g?jtp=tEMf}`wP6^o?T7eN>cT(~$z@W55odyjRTRH6uC^qk3Qp6&wWp-I)c&cP6 zPaXiXPJ7#%Rp|$BZj{Xzz?pU=d63U{%GbkVZ1&%AuJ9jZB-CvR>+Os_R`; z!!S{{iqz7?_@e)0%AG>YD2W02nG{T#Q$@B?<7I)3bO8G%ENtzmo>0^=iej@MsZ4+1 zv&#eNI&;n!6T9~Wq+8-`iTvJ<-?c(d-NR#*|Cc;+zMk+e_sI@pvw{v7{< zYJe%f8uc0zW0MxcFmCq4u8FwfBz^P;n}-BrY{7*#mS2HJl+&8rCw82~2=Q*?lMZ8~ zg*4qMFKa|4v7eQ{HPe0d9!y$f+mYd7!eW4I($*F}SOPT`MSaPyWVp89GFkh5>GCY8 z(vn;*rKrVf2=Q9$GS-H7(+wWlWwEquO^16$=ncI>lV&MgMw$~L#uPZX8O!eKqKGp;X51W3qvSnzVHqs*bw-NJoh38zo=)z_3C*@1Tq(J^9kHpb zi?=%^sVPwcgv`Hl>X;4-%Zp zq!n~XF1}L|s7fu$j1rHMOsq112)>!SK+0S1Jwg42;s-J%xm;nF&bC$chbLDRhiPri z=Nr+eS3#PONP5hi@2dcfG>)*d#BwYN-lTGQDI9wE)Pd0o!&>5D=OA++p?qCW7fibS zKE^KF+DzmR@=?>Re#>m&yq|BvmpJ3QB+xuF{)%Gn8mJqPXmPvdh`IMSUO8%qK7ntXZrt zBay4PcrS-3Q{FTcSnA0uH9WQ-Chwn6PJ0zP_+oSsZT{2U7v!D|M6u*f)v&~BKDA{T8!OX^szdzjW&+tTd9M+^PQTo)3Xi5kCs+wV}*b&QRoEx!UZ zLNboWF}7Q$w^0)H^osd_tEeF@JgSYwf&233MmEfHx16fIFNQvPv zx|#*GWHK48kv5SQnI5$Yp#>FCK|`UXb*?)%5wSo0WtjAY4uME%P}cogjYsvBP!8SD zQBGC$sW)FTKDqeMitLozWzTtH;oE)xo%dRl2Z^;T~5Ku)HF1-lZ+h~+lWB7iY2$PPEhzW>ju3gIB`LS=I z#C&m(8Y@ex<-6-R@dqMi(R@3z*5j=izUq>D%QQ0*3Xu@oESohfXSX)A{+J=kHxF~l?VukzGDivVtA$Y>JqxnSDbblsDw@0ZRgef= z*0v*Fa`WRA9yO-iG8Q^zHcA}FIzX3Ney38pZ(VYoRg101{+^q`85YS}%xEttwo-5N z^p*qD=OcaPaZ=K+abMMvjouSluqi2#;mnd1dgd#{tH{pY3d&}w!A}#ap3p$iDJ^XJ z{A`N-(Isv)=1}_H?10x7_?lsmzJ;$4UQA#4$v`4p~PtCs&b)CEN`V(0)YV+?SGAcAtbRU|(%1~uYYpS=yq~qS+eCPbe z@0n_NJh&i(C0<-pY()$ASn{ht!}3Em17-y$?oO(&VV(XJLTg>=#FKCI1V>!eVCfbZ zS}_Jm)ZbLaG+lpqybV1LU^8H=P^-gMHt9FDYQtPjh^^du%slP=7*Jz}XZDiM8)UO1 zYqV?{b14QRj)x;l5gf`U+T$PN4~uTXq;VA;;u0or1=Apd2AX@yJ z;S5Sq)O+qi4-8AAxerWDXUHb@%`^}gp)T$0hdBBD(o;LvYy&}SK}oL|N%7@~cd#eDEv(sVGAHH>#d!(?4T3tT=c3h3e- zmyNFG5JzXdV&ioXiT1ARhHve&wwa1-ix}Ly4=Q3|(l{;GUJK5>)vRjG*(_+3k=11q zA{ZvUJr~^mhz6D_^l}00=TB5dU(vXJl-xDppW9~}w$Yg`@rRsF z^eOK49~|lfXD5_WLYv@|p#b+&hOt-WneYe1C!YL|QJ!i&x!J zmA56^PhTYL>VTSDIKe%jO=B;x$vrxGucdF_><9To^M5RrYrcEH`+eJ9G4)c4=>wQ_ zTLxb7=Rwc61ZX1$Yh;TZtsdMGukWvP;u{6ctBO!pdj zEV+f7ew9lk68<3{rxFAyB88uMQNd=i(PbTIl8_$1+*oQH##2|QA}4Nm@ujq=-;Pk! z435f&XIYemHZbW}u}H9W^hX+(kgvY;WrPM#ke`fl9!+8Vm?O9qVL@G1T$yq0DH-!WbJ}tMcNFceuvdX88-X zt+-fL0R{H8BOM_*fHLkOiW(T7ta-1A?MhriVqig!*KA8fr&QO{(a^K`=yee$&E=pO zsa%jOs&{b@hktY;5v(0#i6L&#NHR_o&e0Lumu;rRPCuuj9MVKJQHi}}vz#LH{uRXs zT_bYSOY~D@4$2B@nH2G2b4AiXb82DIV>ekO?q&|#`}u)-Xn7W+LLK*N7AD*VHv&yj z@57{f9p2dIxuitQ;@GWp3~j{CI}G=xk8ZhENfJ%$vfYd+77*03?6bVXf(~=UKO9t57g1x7A$qXGPz2^QUQwPS8xz{C>S-w(VO*6wWPA|87XACL# z2Olq~?8LPp!r|9ymI_#*HRy!5hpMeI$%QBj3285rLgmxrVfx7WNf2Dr9x`?9fR)IL zsBwm70~-2|ozYO+52YaDQaZN|b0$n=o=yRbX<72tgvTSAXz9TtIm zqDsrXW%NNl&X(Tk=osW0swQP#9p~oK$sEc? zb4vqT7g6YtndH-w?`+YbNarG>9?MxyhZV?sisxpb$|dT)Ksko1BOgy=a0KlCppng~ zMFork$*bQr96UxomJM^DD*|)@7s_MSJBxs%>7-@n#iUV+WEkXff{Wz)iVo9}WmQ(? z7x^wsfMo+Rj`QFiC`6%?Ns;YIL6Ng-ybk!4jzQ)ffTfq&lV_~tG(*h?93;an%>;1j z4PCcn@zQ`x13t{9&qJ0M^j7yhM%|eLBNu@Hrax+vXi>hycIcg!j}MB! z)YV%C706x39mBD-_F)n7-zZMb*m@Ka?9Rao<6!sj+750D)BBW|!lyc4n9KP&v{e^d zMD}5q52wF?vHwtf)aaw#$2-u3%^K(uf(soRHG)O^-2i^V#X>f=v z+be0k994WS$1Wws4_IBXLvKD`qJDD(yld;ZO97<L~WLy#*6-an_+n`R2UkAsQPppViI0O zJa%b@>-zRC{(?FV9xN8IvE zB+C#=3UB1)=2C&Y^+6!u;}41wK$}a#AcH{&oGwF(M;`mIy6XhQZe?F-G0*1rR6<*m zSs_2POJ6S!_p@EtBa5Fad8b+ zD#|zRhTf;30@W)q`cQ$y84R$uFiN{5#_lsyUs;TEo*+qV-l0|D+dfvx98 zPQxuG6blD39WH-1GvQA~)qa5Yx2W9!hSr|0sm{eMqdtA@y|~d`9^$Oq_z!o%vG6gc zb-51y7i(TiD6oSpWbG~dr8rff86(Fa&0N1mybZ+C%DNLeg93Tj%%KXtVs?634}Oy4 zWZUX_UoZbpx6UFO>ENm&`t%8G$v7EJ5y_l)k5D*;{B%%8_#qZh1>uKaR8)9N2(1CA zsYt-aW`M^4?1ccl3*Ss~@{I!VE{9*#lk*~h@OSt}{L>8>SSKI!kwbx#kiZ6*(}OSw zEr-J+ex2Ps&(r74YY1Hk=m@wFp&7vM|ECFe-u=(pM~$d`Ad^n^NFX*7zSkOV>BYDt zkEf#4GRVfCvhPIWKn&UD-1DhSg^cx^s^NW>(M%aB`I3AP>uiOUQ zY+pM(=pv6C~)5mi0;x8-LwP)_RLAuNM(>Vf}J3+418MDyxLZ$TB|@@m>=+kJ8h<(C zuaE}6oq?$2$XT`^sy*_DGk#SfIdul2VkD=|IH^c-DvW3+7~oOuON<&QtS@~aNWsiBC@Oq?3} zAM1et0|`7i>CP(&0;mXsmU$D%V(X7`1s#Vx!7b+PO9S(nU8J8LXDu#^`{kCu;#K@k z7DROw&fJ2iz``GH`BiS=Z{v@k?7}bSoL70_#5q>}ys`OB>7`_?x0qD20v#i(%s#um z8?$HE>>K&zoWFu}{B{na0tImAfZ;(wRH@((=lrT$@H1zcWN=fn9L5_{(~w^TwO^M< zqbi1)UjJNVbLHJ>&iqlo02o~UV+n)P8zL%WaC$?a*2-Bgt1u0%!(obb&P-5D!t5yX zUE@m}sVk<=Qg?^`_~o&`!j=5)Wr(=pXX%6pApVEPe&NJV4Mao~|7qZFtT^B+0DbU_ zEDoQtPr2eJ>7tY5BAK42W{X*oWfI1jPrY4F~ zz^nf@{^tS(5sCHG=yPzar@ljkWIesjzqzb{1OF$Q^(=LaOJ~GW6COV$VScR{SIYAg znJ+T&N`;J%_|@k9R!b{S<`HEsd;dj?Ygx!G03JmYsi1-_SDF2JbajHBbAji){{Y~XKy#x`N z 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%0A6vbut|OT3@QNkpq2uQ|o} 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 diff --git a/eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/AlonzoEraGen.hs b/eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/AlonzoEraGen.hs deleted file mode 100644 index 4195d910d93..00000000000 --- a/eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/AlonzoEraGen.hs +++ /dev/null @@ -1,568 +0,0 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -fno-warn-orphans #-} - --- | AlonzoEra instances for EraGen and ScriptClass -module Test.Cardano.Ledger.Alonzo.AlonzoEraGen where - -import Cardano.Ledger.Address (Addr (..)) -import Cardano.Ledger.Allegra.Scripts (Timelock (..), translateTimelock) -import Cardano.Ledger.Allegra.TxAuxData (AllegraTxAuxData (..)) -import Cardano.Ledger.Alonzo (AlonzoEra) -import Cardano.Ledger.Alonzo.Core -import Cardano.Ledger.Alonzo.PParams -import Cardano.Ledger.Alonzo.Rules (vKeyLocked) -import Cardano.Ledger.Alonzo.Scripts as Alonzo ( - AlonzoPlutusPurpose (..), - AlonzoScript (..), - ExUnits (..), - Prices (..), - isPlutusScript, - plutusScriptLanguage, - pointWiseExUnits, - toAsIx, - txscriptfee, - ) -import Cardano.Ledger.Alonzo.Tx ( - AlonzoTx (..), - IsValid (..), - hashScriptIntegrity, - totExUnits, - ) -import Cardano.Ledger.Alonzo.TxAuxData (AlonzoTxAuxData (..), mkAlonzoTxAuxData) -import Cardano.Ledger.Alonzo.TxBody ( - AlonzoTxBody (..), - AlonzoTxOut (..), - inputs', - utxoEntrySize, - ) -import Cardano.Ledger.Alonzo.TxWits ( - AlonzoTxWits (..), - Redeemers (..), - TxDats (..), - ) -import Cardano.Ledger.Alonzo.UTxO (AlonzoScriptsNeeded (..)) -import Cardano.Ledger.AuxiliaryData (AuxiliaryDataHash) -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.Binary (EncCBOR) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Credential (Credential (..)) -import Cardano.Ledger.Crypto -import Cardano.Ledger.Keys (KeyHash, KeyRole (Witness)) -import Cardano.Ledger.Mary (MaryEra) -import Cardano.Ledger.Mary.Value ( - AssetName (..), - MultiAsset (..), - PolicyID (..), - multiAssetFromList, - policies, - ) -import Cardano.Ledger.Plutus.Data (Data (..)) -import Cardano.Ledger.Plutus.Language (Language (..), SLanguage (..)) -import Cardano.Ledger.Shelley.PParams (Update) -import Cardano.Ledger.TxIn (TxIn) -import Cardano.Ledger.UTxO ( - EraUTxO (..), - UTxO (..), - coinBalance, - getScriptsNeeded, - txInsFilter, - ) -import Cardano.Ledger.Val (Val (isAdaOnly, (<+>), (<×>))) -import Control.Monad (replicateM) -import qualified Data.List as List -import Data.Map.Strict (Map) -import qualified Data.Map.Strict as Map -import Data.Proxy (Proxy (..)) -import Data.Ratio ((%)) -import Data.Sequence.Strict (StrictSeq ((:|>))) -import qualified Data.Sequence.Strict as Seq (fromList) -import Data.Set as Set -import Lens.Micro -import Numeric.Natural (Natural) -import qualified PlutusLedgerApi.Common as P (Data (..)) -import System.Random -import Test.Cardano.Ledger.AllegraEraGen (genValidityInterval) -import Test.Cardano.Ledger.Alonzo.Arbitrary (alwaysFails, alwaysSucceeds, mkPlutusScript') -import Test.Cardano.Ledger.Binary.Random -import Test.Cardano.Ledger.MaryEraGen (addTokens, genMint, maryGenesisValue, policyIndex) -import Test.Cardano.Ledger.Plutus (zeroTestingCostModels) -import Test.Cardano.Ledger.Plutus.Examples -import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes (Mock) -import Test.Cardano.Ledger.Shelley.Constants (Constants (..)) -import Test.Cardano.Ledger.Shelley.Generator.Core ( - GenEnv (..), - ScriptInfo, - TwoPhase2ArgInfo (..), - TwoPhase3ArgInfo (..), - findPlutus, - genNatural, - hashData, - ) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (EraGen (..), MinGenTxout (..)) -import Test.Cardano.Ledger.Shelley.Generator.ScriptClass (Quantifier (..), ScriptClass (..)) -import Test.Cardano.Ledger.Shelley.Generator.Update (genM, genShelleyPParamsUpdate) -import qualified Test.Cardano.Ledger.Shelley.Generator.Update as Shelley (genPParams) -import Test.Cardano.Ledger.Shelley.Generator.Utxo (encodedLen, myDiscard) -import Test.Cardano.Ledger.Shelley.Utils (unsafeBoundRational) -import Test.QuickCheck hiding ((><)) - --- ============================================================ - --- | We are choosing new TxOut to pay fees, We want only Key locked addresss with Ada only values. -vKeyLockedAdaOnly :: Crypto c => TxOut (AlonzoEra c) -> Bool -vKeyLockedAdaOnly txOut = vKeyLocked txOut && isAdaOnly (txOut ^. valueTxOutL) - -phase2scripts3Arg :: forall era. AlonzoEraScript era => [TwoPhase3ArgInfo era] -phase2scripts3Arg = - [ mkTwoPhase3ArgInfo (alwaysSucceeds @'PlutusV1 3) (P.I 1) (P.I 1, bigMem, bigStep) True - , mkTwoPhase3ArgInfo - (mkPlutusScript' (guessTheNumber3 SPlutusV1)) - (P.I 9) - (P.I 9, bigMem, bigStep) - True - , mkTwoPhase3ArgInfo (mkPlutusScript' (evendata3 SPlutusV1)) (P.I 8) (P.I 8, bigMem, bigStep) True - , mkTwoPhase3ArgInfo (mkPlutusScript' (odddata3 SPlutusV1)) (P.I 9) (P.I 9, bigMem, bigStep) True - , mkTwoPhase3ArgInfo (mkPlutusScript' (sumsTo103 SPlutusV1)) (P.I 1) (P.I 9, bigMem, bigStep) True - , mkTwoPhase3ArgInfo (alwaysFails @'PlutusV1 3) (P.I 1) (P.I 1, bigMem, bigStep) False - ] - where - mkTwoPhase3ArgInfo script = TwoPhase3ArgInfo script (hashScript @era script) - -phase2scripts2Arg :: forall era. AlonzoEraScript era => [TwoPhase2ArgInfo era] -phase2scripts2Arg = - [ mkTwoPhase2ArgInfo (alwaysSucceeds @'PlutusV1 2) (P.I 1, bigMem, bigStep) True - , mkTwoPhase2ArgInfo (mkPlutusScript' (oddRedeemer2 SPlutusV1)) (P.I 13, bigMem, bigStep) True - , mkTwoPhase2ArgInfo (mkPlutusScript' (evenRedeemer2 SPlutusV1)) (P.I 14, bigMem, bigStep) True - , mkTwoPhase2ArgInfo (mkPlutusScript' (redeemerIs102 SPlutusV1)) (P.I 10, bigMem, bigStep) True - , mkTwoPhase2ArgInfo (alwaysFails @'PlutusV1 2) (P.I 1, bigMem, bigStep) False - ] - where - mkTwoPhase2ArgInfo script = TwoPhase2ArgInfo script (hashScript @era script) - -phase2scripts3ArgSucceeds :: forall era. AlonzoEraScript era => Script era -> Bool -phase2scripts3ArgSucceeds script = - maybe True getSucceeds3 $ - List.find (\info -> getScript3 info == script) phase2scripts3Arg - -phase2scripts2ArgSucceeds :: forall era. AlonzoEraScript era => Script era -> Bool -phase2scripts2ArgSucceeds script = - maybe True getSucceeds2 $ - List.find (\info -> getScript2 info == script) phase2scripts2Arg - -genPlutus2Arg :: AlonzoEraScript era => Gen (Maybe (TwoPhase2ArgInfo era)) -genPlutus2Arg = frequency [(10, Just <$> elements phase2scripts2Arg), (90, pure Nothing)] - --- | Gen a Mint value in the Alonzo Era, with a 10% chance that it includes an AlonzoScript -genAlonzoMint :: Crypto c => MultiAsset c -> Gen (MultiAsset c, [AlonzoScript (AlonzoEra c)]) -genAlonzoMint startvalue = do - ans <- genPlutus2Arg - case ans of - Nothing -> pure (startvalue, []) - Just (TwoPhase2ArgInfo script shash _ _) -> do - count <- chooseEnum (1, 10) - let assetname = AssetName "purple" - pure (multiAssetFromList [(PolicyID shash, assetname, count)] <> startvalue, [script]) - -genPair :: Gen a -> Gen b -> Gen (a, b) -genPair x y = (,) <$> x <*> y - -genPlutusData :: Gen P.Data -genPlutusData = resize 5 (sized gendata) - where - gendata n - | n > 0 = - oneof - [ P.I <$> arbitrary - , P.B <$> arbitrary - , P.Map <$> listOf (genPair (gendata (n `div` 2)) (gendata (n `div` 2))) - , P.Constr <$> arbitrary <*> listOf (gendata (n `div` 2)) - , P.List <$> listOf (gendata (n `div` 2)) - ] - gendata _ = oneof [P.I <$> arbitrary, P.B <$> arbitrary] - -genSet :: Ord a => Gen a -> Gen (Set a) -genSet gen = - frequency - [ (1, pure Set.empty) - , (2, Set.fromList <$> sequence [gen]) - , (1, Set.fromList <$> sequence [gen, gen]) - ] - -genAux :: forall c. Mock c => Constants -> Gen (StrictMaybe (AlonzoTxAuxData (AlonzoEra c))) -genAux constants = do - maybeAux <- genEraAuxiliaryData @(MaryEra c) constants - pure $ - fmap - (\(AllegraTxAuxData x y) -> mkAlonzoTxAuxData x (TimelockScript . translateTimelock <$> y)) - maybeAux - -instance Crypto c => ScriptClass (AlonzoEra c) where - basescript = someLeaf - isKey _ (TimelockScript x) = isKey (Proxy @(MaryEra c)) $ translateTimelock x - isKey _ (PlutusScript _) = Nothing - isOnePhase _ (TimelockScript _) = True - isOnePhase _ (PlutusScript _) = False - quantify _ (TimelockScript x) = fmap (TimelockScript . translateTimelock) (quantify (Proxy @(MaryEra c)) (translateTimelock x)) - quantify _ x = Leaf x - unQuantify _ quant = - TimelockScript . translateTimelock $ - unQuantify (Proxy @(MaryEra c)) (fmap (translateTimelock . unTime) quant) - -unTime :: AlonzoScript era -> Timelock era -unTime (TimelockScript x) = x -unTime (PlutusScript _) = error "Plutus in Timelock" - -okAsCollateral :: forall c. Mock c => UTxO (AlonzoEra c) -> TxIn c -> Bool -okAsCollateral utxo inputx = - maybe False vKeyLockedAdaOnly $ Map.lookup inputx (unUTxO utxo) - -genAlonzoTxBody :: - forall c. - Mock c => - GenEnv (AlonzoEra c) -> - UTxO (AlonzoEra c) -> - PParams (AlonzoEra c) -> - SlotNo -> - Set.Set (TxIn c) -> - StrictSeq (TxOut (AlonzoEra c)) -> - StrictSeq (TxCert (AlonzoEra c)) -> - Withdrawals c -> - Coin -> - StrictMaybe (Update (AlonzoEra c)) -> - StrictMaybe (AuxiliaryDataHash c) -> - Gen (TxBody (AlonzoEra c), [Script (AlonzoEra c)]) -genAlonzoTxBody _genenv utxo pparams currentslot input txOuts certs withdrawals fee updates auxDHash = do - netid <- genM $ pure Testnet -- frequency [(2, pure Mainnet), (1, pure Testnet)] - startvalue <- genMint - (minted, plutusScripts) <- genAlonzoMint startvalue - let (minted2, txouts2) = case addTokens (Proxy @(AlonzoEra c)) mempty pparams minted txOuts of - Nothing -> (mempty, txOuts) - Just os -> (minted, os) - scriptsFromPolicies = (policyIndex Map.!) <$> Set.toList (policies startvalue) - txouts3 = fmap addMaybeDataHashToTxOut txouts2 - validityInterval <- genValidityInterval currentslot - return - ( AlonzoTxBody - input - (Set.filter (okAsCollateral utxo) input) -- Set.empty -- collateral -- TODO do something better here (use genenv ?) - txouts3 - certs - withdrawals - fee - validityInterval -- (ValidityInterval SNothing SNothing) -- (ValidityInterval low high) - updates - -- reqSignerHashes - Set.empty -- TODO do something better here - minted2 - -- scriptIntegrityHash starts out with empty Redeemers, - -- as Remdeemers are added it is recomputed in updateEraTxBody - (hashScriptIntegrity @(AlonzoEra c) Set.empty (Redeemers Map.empty) (TxDats Map.empty)) - auxDHash - netid - , List.map TimelockScript scriptsFromPolicies <> plutusScripts - ) - -genSlotAfter :: SlotNo -> Gen SlotNo -genSlotAfter currentSlot = do - ttl <- genNatural 50 100 - pure $ currentSlot + SlotNo (fromIntegral ttl) - --- | Gen an Alonzo PParamsUpdate, by adding to a Shelley PParamsData -genAlonzoPParamsUpdate :: - forall c. - Crypto c => - Constants -> - PParams (AlonzoEra c) -> - Gen (PParamsUpdate (AlonzoEra c)) -genAlonzoPParamsUpdate constants pp = do - maryPPUpdate <- - genShelleyPParamsUpdate @(MaryEra c) constants $ - downgradePParams (DowngradeAlonzoPParams {dappMinUTxOValue = Coin 100}) pp - coinPerWord <- genM (CoinPerWord . Coin <$> choose (1, 5)) - let genPrice = unsafeBoundRational . (% 100) <$> choose (0, 200) - prices <- genM (Prices <$> genPrice <*> genPrice) - let maxTxExUnits = SNothing - -- maxTxExUnits <- genM (ExUnits <$> (choose (100, 5000)) <*> (choose (100, 5000))) - maxBlockExUnits <- genM (ExUnits <$> genNatural 100 5000 <*> genNatural 100 5000) - -- Not too small for maxValSize, if this is too small then any Tx with Value - -- that has lots of policyIds will fail. The Shelley Era uses hard coded 4000 - maxValSize <- genM (genNatural 4000 5000) - let alonzoUpgrade = - UpgradeAlonzoPParams - { uappCoinsPerUTxOWord = coinPerWord - , uappCostModels = SJust $ zeroTestingCostModels [PlutusV1] - , uappPrices = prices - , uappMaxTxExUnits = maxTxExUnits - , uappMaxBlockExUnits = maxBlockExUnits - , uappMaxValSize = maxValSize - , uappCollateralPercentage = SJust 25 -- percent of fee in collateral - , uappMaxCollateralInputs = SJust 100 -- max number of inputs in collateral - } - pure $ upgradePParamsUpdate alonzoUpgrade maryPPUpdate - -genAlonzoPParams :: - forall c. - Crypto c => - Constants -> - Gen (PParams (AlonzoEra c)) -genAlonzoPParams constants = do - let constants' = constants {minMajorPV = natVersion @5} - -- This ensures that "_d" field is not 0, and that the major protocol version - -- is large enough to not trigger plutus script failures - -- (no bultins are alllowed before major version 5). - maryPP <- Shelley.genPParams @(MaryEra c) constants' - coinPerWord <- CoinPerWord . Coin <$> choose (1, 5) - let prices = Prices minBound minBound - -- prices <- Prices <$> (Coin <$> choose (100, 5000)) <*> (Coin <$> choose (100, 5000)) - let maxTxExUnits = ExUnits (5 * bigMem + 1) (5 * bigStep + 1) - -- maxTxExUnits <- ExUnits <$> (choose (100, 5000)) <*> (choose (100, 5000)) - maxBlockExUnits <- - ExUnits - <$> genNatural (20 * bigMem + 1) (30 * bigMem + 1) - <*> genNatural (20 * bigStep + 1) (30 * bigStep + 1) - maxValSize <- genNatural 4000 10000 -- This can't be too small. Shelley uses Hard coded 4000 - let alonzoUpgrade = - UpgradeAlonzoPParams - { uappCoinsPerUTxOWord = coinPerWord - , uappCostModels = zeroTestingCostModels [PlutusV1] - , uappPrices = prices - , uappMaxTxExUnits = maxTxExUnits - , uappMaxBlockExUnits = maxBlockExUnits - , uappMaxValSize = maxValSize - , uappCollateralPercentage = 25 -- percent of fee in collateral - , uappMaxCollateralInputs = 100 -- max number of inputs in collateral - } - pure $ upgradePParams alonzoUpgrade maryPP - -bigMem :: Natural -bigMem = 50000 - -bigStep :: Natural -bigStep = 99999 - -instance Mock c => EraGen (AlonzoEra c) where - genEraAuxiliaryData = genAux - genGenesisValue = maryGenesisValue - genEraTwoPhase3Arg = phase2scripts3Arg - genEraTwoPhase2Arg = phase2scripts2Arg - - genEraTxBody = genAlonzoTxBody - updateEraTxBody utxo pp witnesses txb coinx txin txout = new - where - langs = langsUsed @(AlonzoEra c) (witnesses ^. scriptTxWitsL) - langViews = Set.map (getLanguageView pp) langs - new = - txb - { atbInputs = atbInputs txb <> txin - , atbCollateral = atbCollateral txb <> Set.filter (okAsCollateral utxo) txin -- In Alonzo, extra inputs also are added to collateral - , atbTxFee = coinx - , atbOutputs = atbOutputs txb :|> txout - , -- The witnesses may have changed, recompute the scriptIntegrityHash. - atbScriptIntegrityHash = - hashScriptIntegrity - langViews - (witnesses ^. rdmrsTxWitsL) - (witnesses ^. datsTxWitsL) - } - - addInputs txb txin = txb {atbInputs = atbInputs txb <> txin} - - genEraPParamsUpdate = genAlonzoPParamsUpdate - genEraPParams = genAlonzoPParams - genEraTxWits (utxo, txbody, scriptinfo) setWitVKey mapScriptWit = new - where - new = - AlonzoTxWits - setWitVKey - Set.empty - mapScriptWit - -- (dataMapFromTxOut (Prelude.foldr (:) [] (outputs' txbody)) (TxDats (getDataMap scriptinfo mapScriptWit))) - (dataMapFromTxOut smallUtxo (TxDats (getDataMap scriptinfo mapScriptWit))) - -- The data hashes come from two places - (Redeemers rdmrMap) - txinputs = inputs' txbody - smallUtxo :: [TxOut (AlonzoEra c)] - smallUtxo = Map.elems (unUTxO (txInsFilter utxo txinputs)) - AlonzoScriptsNeeded purposeHashPairs = getScriptsNeeded @(AlonzoEra c) utxo txbody - rdmrMap = List.foldl' accum Map.empty purposeHashPairs -- Search through the pairs for Plutus scripts - accum ans (purpose, hash1) = - case Map.lookup hash1 mapScriptWit of - Nothing -> ans - Just script -> - if isNativeScript @(AlonzoEra c) script - then ans -- Native scripts don't have redeemers - else case Map.lookup hash1 (fst scriptinfo) of -- It could be one of the known 3-Arg Plutus Scripts - Just info -> addRedeemMap (getRedeemer3 info) purpose ans -- Add it to the redeemer map - Nothing -> case Map.lookup hash1 (snd scriptinfo) of -- It could be one of the known 2-Arg Plutus Scripts - Just info -> addRedeemMap (getRedeemer2 info) purpose ans -- Add it to the redeemer map - Nothing -> ans - - constructTx bod wit auxdata = AlonzoTx bod wit (IsValid v) auxdata - where - v = all twoPhaseValidates (txscripts' wit) - twoPhaseValidates script = - isNativeScript @(AlonzoEra c) script - || (phase2scripts3ArgSucceeds script && phase2scripts2ArgSucceeds script) - - genEraGoodTxOut = vKeyLockedAdaOnly - - genEraScriptCost pp script = - if isPlutusScript script - then case List.find (\info -> getScript3 @(AlonzoEra c) info == script) genEraTwoPhase3Arg of - Just (TwoPhase3ArgInfo _script _hash inputdata (rdmr, mems, steps) _succeed) -> - txscriptfee (pp ^. ppPricesL) (ExUnits mems steps) - <+> storageCost 10 pp (rdmr, ExUnits mems steps) -- Extra 10 for the RdmrPtr - <+> storageCost 32 pp inputdata -- Extra 32 for the hash - <+> storageCost 0 pp script - Nothing -> storageCost 0 pp script - else storageCost 0 pp script - - -- For some reason, the EraGen generators occasionally generate an extra script witness. - -- There is some evidence that this arises because the script hash appears as the PolicyId - -- in a Value. But that is not been verified. Regardless of the cause, we can fix this by - -- discarding the trace. Note that this is failure to generate a "random" but valid - -- transaction. Discarding the trace adjust for this inadequacy in the generation process. - -- This only appears in the Alonzo era, so this "fix" is applied here, in the genEraDone - -- method of the EraGen class in the (AlonzoEra c) instance. - genEraDone utxo pp tx = - let theFee = tx ^. bodyTxL . feeTxBodyL -- Coin supplied to pay fees - minimumFee = getMinFeeTxUtxo @(AlonzoEra c) pp tx utxo - neededHashes = getScriptsHashesNeeded $ getScriptsNeeded utxo (tx ^. bodyTxL) - oldScriptWits = tx ^. witsTxL . scriptTxWitsL - newWits = oldScriptWits `Map.restrictKeys` neededHashes - in if minimumFee <= theFee - then - if oldScriptWits == newWits - then pure tx - else myDiscard "Random extra scriptwitness: genEraDone: AlonzoEraGen.hs" - else myDiscard "MinFeee violation: genEraDone: AlonzoEraGen.hs" - - genEraTweakBlock pp txns = - let txTotal, ppMax :: ExUnits - txTotal = foldMap totExUnits txns - ppMax = pp ^. ppMaxBlockExUnitsL - in if pointWiseExUnits (<=) txTotal ppMax - then pure txns - else myDiscard "TotExUnits violation: genEraTweakBlock: AlonzoEraGen.hs" - - hasFailedScripts tx = IsValid False == tx ^. isValidTxL - - feeOrCollateral tx utxo = - case tx ^. isValidTxL of - IsValid True -> tx ^. bodyTxL . feeTxBodyL - IsValid False -> sumCollateral tx utxo - -sumCollateral :: (EraTx era, AlonzoEraTxBody era) => Tx era -> UTxO era -> Coin -sumCollateral tx utxo = - coinBalance $ txInsFilter utxo $ tx ^. bodyTxL . collateralInputsTxBodyL - -storageCost :: forall era t. (EraPParams era, EncCBOR t) => Integer -> PParams era -> t -> Coin -storageCost extra pp x = (extra + encodedLen @era x) <×> pp ^. ppMinFeeAL - -addRedeemMap :: - forall c. - Crypto c => - (P.Data, Natural, Natural) -> - AlonzoPlutusPurpose AsIxItem (AlonzoEra c) -> - Map (AlonzoPlutusPurpose AsIx (AlonzoEra c)) (Data (AlonzoEra c), ExUnits) -> - Map (AlonzoPlutusPurpose AsIx (AlonzoEra c)) (Data (AlonzoEra c), ExUnits) -addRedeemMap (dat, space, steps) purpose ans = - let ptr = hoistPlutusPurpose toAsIx purpose - in Map.insert ptr (Data dat, ExUnits space steps) ans - -getDataMap :: - forall era. - Era era => - ScriptInfo era -> - Map (ScriptHash (EraCrypto era)) (Script era) -> - Map (DataHash (EraCrypto era)) (Data era) -getDataMap (scriptInfo3, _) = Map.foldlWithKey' accum Map.empty - where - accum ans hsh _script = - case Map.lookup hsh scriptInfo3 of - Nothing -> ans - Just (TwoPhase3ArgInfo _script _hash dat _redeem _) -> - Map.insert (hashData @era dat) (Data dat) ans - -instance Mock c => MinGenTxout (AlonzoEra c) where - calcEraMinUTxO txOut pp = utxoEntrySize txOut <×> unCoinPerWord (pp ^. ppCoinsPerUTxOWordL) - addValToTxOut v (AlonzoTxOut a u _b) = AlonzoTxOut a (v <+> u) (dataFromAddr a) - genEraTxOut genv genVal addrs = do - values <- replicateM (length addrs) genVal - let makeTxOut addr val = - case addr of - Addr _network (ScriptHashObj shash) _stakeref -> - AlonzoTxOut addr val $ snd $ findPlutus genv shash - _ -> AlonzoTxOut addr val SNothing - pure (zipWith makeTxOut addrs values) - --- | If an Address is script address, we can find a potential data hash for it from --- genEraTwoPhase3Arg, which contains all known 3 arg plutus scripts in the tests set. --- If the script has is not in that map, then its data hash is SNothing. -dataFromAddr :: forall c. Mock c => Addr c -> StrictMaybe (DataHash c) -dataFromAddr (Addr _network (ScriptHashObj shash) _stakeref) = - let f info = shash == hashScript @(AlonzoEra c) (getScript3 @(AlonzoEra c) info) - in case List.find f genEraTwoPhase3Arg of - Just info -> SJust (hashData @(AlonzoEra c) (getData3 info)) - Nothing -> SNothing -dataFromAddr _ = SNothing - --- | We can find the data associated with the data hashes in the TxOuts, since --- genEraTwoPhase3Arg, which contains all known 3 arg plutus scripts stores the data. -dataMapFromTxOut :: - forall c. - Mock c => - [TxOut (AlonzoEra c)] -> - TxDats (AlonzoEra c) -> - TxDats (AlonzoEra c) -dataMapFromTxOut txouts datahashmap = Prelude.foldl accum datahashmap txouts - where - f dhash info = hashData @(AlonzoEra c) (getData3 info) == dhash - accum !ans (AlonzoTxOut _ _ SNothing) = ans - accum ans@(TxDats' m) (AlonzoTxOut _ _ (SJust dhash)) = - case List.find (f dhash) (genEraTwoPhase3Arg @(AlonzoEra c)) of - Just info -> TxDats (Map.insert dhash (Data (getData3 info)) m) - Nothing -> ans - -addMaybeDataHashToTxOut :: Mock c => TxOut (AlonzoEra c) -> TxOut (AlonzoEra c) -addMaybeDataHashToTxOut (AlonzoTxOut addr val _) = AlonzoTxOut addr val (dataFromAddr addr) - -someLeaf :: - forall era. - Era era => - Proxy era -> - KeyHash 'Witness (EraCrypto era) -> - AlonzoScript era -someLeaf _proxy keyHash = - let - -- We use KeyHash as a source of entropy for initialization of an StdGen for - -- generating slot and mode - (s, g) = uniformR (0, 199) $ mkHashStdGen keyHash - slot = SlotNo s - (mode, _) = uniformR (0 :: Int, 2) g -- mode==0 is a time leaf, mode 1 or 2 is a signature leaf - in - case mode of - 0 -> - TimelockScript $ - (RequireAnyOf . Seq.fromList) [RequireTimeStart slot, RequireTimeExpire slot] - _ -> TimelockScript $ RequireSignature keyHash - --- | given the "txscripts" field of the TxWits, compute the set of languages used in a transaction -langsUsed :: - AlonzoEraScript era => - Map.Map (ScriptHash (EraCrypto era)) (Script era) -> - Set Language -langsUsed hashScriptMap = - Set.fromList - [ plutusScriptLanguage plutusScript - | script <- Map.elems hashScriptMap - , Just plutusScript <- [toPlutusScript script] - ] diff --git a/eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/EraMapping.hs b/eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/EraMapping.hs deleted file mode 100644 index d4b54547c88..00000000000 --- a/eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/EraMapping.hs +++ /dev/null @@ -1,11 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE TypeFamilies #-} - -module Test.Cardano.Ledger.Alonzo.EraMapping where - -import Cardano.Ledger.Alonzo (AlonzoEra) -import Cardano.Ledger.Core (EraRule) -import Cardano.Protocol.TPraos.Rules.Tickn (TICKN) -import Test.Cardano.Ledger.EraBuffet (TestCrypto) - -type instance EraRule "TICKN" (AlonzoEra TestCrypto) = TICKN diff --git a/eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/Examples/Consensus.hs b/eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/Examples/Consensus.hs deleted file mode 100644 index cefa5adcd55..00000000000 --- a/eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/Examples/Consensus.hs +++ /dev/null @@ -1,191 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Alonzo.Examples.Consensus where - -import Cardano.Ledger.Allegra.Scripts (Timelock (..)) -import Cardano.Ledger.Alonzo (Alonzo) -import Cardano.Ledger.Alonzo.Core -import Cardano.Ledger.Alonzo.Genesis (AlonzoGenesis (..)) -import Cardano.Ledger.Alonzo.Scripts ( - AlonzoPlutusPurpose (..), - AlonzoScript (..), - ExUnits (..), - Prices (..), - ) -import Cardano.Ledger.Alonzo.Tx (AlonzoTx (..), IsValid (..)) -import Cardano.Ledger.Alonzo.TxAuxData (AuxiliaryDataHash (..), mkAlonzoTxAuxData) -import Cardano.Ledger.Alonzo.TxBody (AlonzoTxBody (..), AlonzoTxOut (..)) -import Cardano.Ledger.Alonzo.TxWits (AlonzoTxWits (..), Redeemers (..), TxDats (..)) -import Cardano.Ledger.BaseTypes (NonNegativeInterval, StrictMaybe (..), boundRational) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Crypto (StandardCrypto) -import Cardano.Ledger.Keys (asWitness) -import Cardano.Ledger.Mary.Value (MaryValue (..)) -import Cardano.Ledger.Plutus.CostModels (mkCostModels) -import Cardano.Ledger.Plutus.Data (Data (..), hashData) -import Cardano.Ledger.Plutus.Language (Language (..)) -import Cardano.Ledger.SafeHash (hashAnnotated) -import Cardano.Ledger.Shelley.API ( - ApplyTxError (..), - Credential (..), - Network (..), - NewEpochState (..), - ProposedPPUpdates (..), - RewardAccount (..), - TxId (..), - Update (..), - ) -import Cardano.Ledger.Shelley.Rules (ShelleyDelegsPredFailure (..), ShelleyLedgerPredFailure (..)) -import Cardano.Ledger.Shelley.Tx (ShelleyTx (..)) -import Cardano.Ledger.TxIn (mkTxInPartial) -import Cardano.Slotting.Slot (EpochNo (..), SlotNo (..)) -import Data.Default.Class (def) -import qualified Data.Map.Strict as Map -import Data.Proxy (Proxy (..)) -import qualified Data.Sequence.Strict as StrictSeq -import qualified Data.Set as Set -import GHC.Stack (HasCallStack) -import Lens.Micro -import qualified PlutusLedgerApi.Common as P -import Test.Cardano.Ledger.Alonzo.Arbitrary (alwaysFails, alwaysSucceeds) -import Test.Cardano.Ledger.Core.KeyPair (mkAddr, mkWitnessesVKey) -import Test.Cardano.Ledger.Core.Utils (mkDummySafeHash) -import qualified Test.Cardano.Ledger.Mary.Examples.Consensus as SLE -import Test.Cardano.Ledger.Plutus (zeroTestingCostModelV1) -import qualified Test.Cardano.Ledger.Shelley.Examples.Consensus as SLE - --- | ShelleyLedgerExamples for Alonzo era -ledgerExamplesAlonzo :: SLE.ShelleyLedgerExamples Alonzo -ledgerExamplesAlonzo = - SLE.ShelleyLedgerExamples - { SLE.sleBlock = SLE.exampleShelleyLedgerBlock exampleTransactionInBlock - , SLE.sleHashHeader = SLE.exampleHashHeader (Proxy @Alonzo) - , SLE.sleTx = exampleTransactionInBlock - , SLE.sleApplyTxError = - ApplyTxError $ - pure $ - DelegsFailure $ - DelegateeNotRegisteredDELEG @Alonzo (SLE.mkKeyHash 1) - , SLE.sleRewardsCredentials = - Set.fromList - [ Left (Coin 100) - , Right (ScriptHashObj (SLE.mkScriptHash 1)) - , Right (KeyHashObj (SLE.mkKeyHash 2)) - ] - , SLE.sleResultExamples = resultExamples - , SLE.sleNewEpochState = exampleAlonzoNewEpochState - , SLE.sleChainDepState = SLE.exampleLedgerChainDepState 1 - , SLE.sleTranslationContext = exampleAlonzoGenesis - } - where - resultExamples = - SLE.ShelleyResultExamples - { SLE.srePParams = def - , SLE.sreProposedPPUpdates = examplePPPU - , SLE.srePoolDistr = SLE.examplePoolDistr - , SLE.sreNonMyopicRewards = SLE.exampleNonMyopicRewards - , SLE.sreShelleyGenesis = SLE.testShelleyGenesis - } - examplePPPU = - ProposedPPUpdates $ - Map.singleton - (SLE.mkKeyHash 0) - (emptyPParamsUpdate & ppuCollateralPercentageL .~ SJust 150) - -exampleTxBodyAlonzo :: AlonzoTxBody Alonzo -exampleTxBodyAlonzo = - AlonzoTxBody - (Set.fromList [mkTxInPartial (TxId (mkDummySafeHash Proxy 1)) 0]) -- inputs - (Set.fromList [mkTxInPartial (TxId (mkDummySafeHash Proxy 2)) 1]) -- collateral - ( StrictSeq.fromList - [ AlonzoTxOut - (mkAddr (SLE.examplePayKey, SLE.exampleStakeKey)) - (SLE.exampleMultiAssetValue 2) - (SJust $ mkDummySafeHash Proxy 1) -- outputs - ] - ) - SLE.exampleCerts -- txcerts - ( Withdrawals $ - Map.singleton - (RewardAccount Testnet (SLE.keyToCredential SLE.exampleStakeKey)) - (Coin 100) -- txwdrls - ) - (Coin 999) -- txfee - (ValidityInterval (SJust (SlotNo 2)) (SJust (SlotNo 4))) -- txvldt - ( SJust $ - Update - ( ProposedPPUpdates $ - Map.singleton - (SLE.mkKeyHash 1) - (emptyPParamsUpdate & ppuMaxBHSizeL .~ SJust 4000) - ) - (EpochNo 0) - ) -- txUpdates - (Set.singleton $ SLE.mkKeyHash 212) -- reqSignerHashes - exampleMultiAsset -- mint - (SJust $ mkDummySafeHash (Proxy @StandardCrypto) 42) -- scriptIntegrityHash - (SJust . AuxiliaryDataHash $ mkDummySafeHash (Proxy @StandardCrypto) 42) -- adHash - (SJust Mainnet) -- txnetworkid - where - MaryValue _ exampleMultiAsset = SLE.exampleMultiAssetValue 3 - -datumExample :: Data Alonzo -datumExample = Data (P.I 191) - -redeemerExample :: Data Alonzo -redeemerExample = Data (P.I 919) - -exampleTx :: ShelleyTx Alonzo -exampleTx = - ShelleyTx - exampleTxBodyAlonzo - ( AlonzoTxWits - (mkWitnessesVKey (hashAnnotated exampleTxBodyAlonzo) [asWitness SLE.examplePayKey]) -- vkey - mempty -- bootstrap - ( Map.singleton - (hashScript @Alonzo $ alwaysSucceeds @'PlutusV1 3) - (alwaysSucceeds @'PlutusV1 3) -- txscripts - ) - (TxDats $ Map.singleton (hashData datumExample) datumExample) - ( Redeemers $ - Map.singleton (AlonzoSpending $ AsIx 0) (redeemerExample, ExUnits 5000 5000) - ) -- redeemers - ) - ( SJust $ - mkAlonzoTxAuxData - SLE.exampleAuxDataMap -- auxiliary data - [alwaysFails @'PlutusV1 2, TimelockScript $ RequireAllOf mempty] -- Scripts - ) - -exampleTransactionInBlock :: AlonzoTx Alonzo -exampleTransactionInBlock = AlonzoTx b w (IsValid True) a - where - ShelleyTx b w a = exampleTx - -exampleAlonzoNewEpochState :: NewEpochState Alonzo -exampleAlonzoNewEpochState = - SLE.exampleNewEpochState - (SLE.exampleMultiAssetValue 1) - emptyPParams - (emptyPParams & ppCoinsPerUTxOWordL .~ CoinPerWord (Coin 1)) - -exampleAlonzoGenesis :: AlonzoGenesis -exampleAlonzoGenesis = - AlonzoGenesis - { agCoinsPerUTxOWord = CoinPerWord $ Coin 1 - , agCostModels = mkCostModels (Map.fromList [(PlutusV1, zeroTestingCostModelV1)]) - , agPrices = Prices (boundRational' 90) (boundRational' 91) - , agMaxTxExUnits = ExUnits 123 123 - , agMaxBlockExUnits = ExUnits 223 223 - , agMaxValSize = 1234 - , agCollateralPercentage = 20 - , agMaxCollateralInputs = 30 - } - where - boundRational' :: HasCallStack => Rational -> NonNegativeInterval - boundRational' x = case boundRational x of - Nothing -> error $ "Expected non-negative value but got: " <> show x - Just x' -> x' diff --git a/eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/Scripts.hs b/eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/Scripts.hs deleted file mode 100644 index cb0db1d3728..00000000000 --- a/eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/Scripts.hs +++ /dev/null @@ -1,6 +0,0 @@ -module Test.Cardano.Ledger.Alonzo.Scripts ( - alwaysSucceeds, - alwaysFails, -) where - -import Test.Cardano.Ledger.Alonzo.Arbitrary (alwaysFails, alwaysSucceeds) diff --git a/eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/Serialisation/Generators.hs b/eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/Serialisation/Generators.hs deleted file mode 100644 index 20b5250151d..00000000000 --- a/eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/Serialisation/Generators.hs +++ /dev/null @@ -1,122 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TupleSections #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Alonzo.Serialisation.Generators where - -import Cardano.Ledger.Alonzo (AlonzoEra) -import Cardano.Ledger.Alonzo.Core -import Cardano.Ledger.Alonzo.Scripts (AlonzoScript (..)) -import Cardano.Ledger.Alonzo.Tx (AlonzoTxBody (..)) -import Cardano.Ledger.Alonzo.TxAuxData (AuxiliaryDataHash) -import Cardano.Ledger.Alonzo.TxBody (AlonzoTxOut (..)) -import Cardano.Ledger.BaseTypes -import Cardano.Ledger.Binary (EncCBOR (..)) -import Cardano.Ledger.Coin (Coin) -import Cardano.Ledger.Crypto -import Cardano.Ledger.Keys (KeyHash) -import Cardano.Ledger.Mary.Value (MultiAsset) -import Cardano.Ledger.Plutus.Data (BinaryData, Data (..)) -import Cardano.Ledger.Shelley.PParams (Update) -import Cardano.Ledger.Shelley.TxCert (ShelleyTxCert) -import Cardano.Ledger.TxIn (TxIn) -import Cardano.Ledger.Val (Val) -import Codec.CBOR.Term (Term (..)) -import Data.Maybe (catMaybes) -import Data.Typeable (Typeable) -import Test.Cardano.Ledger.Alonzo.Arbitrary () -import Test.Cardano.Ledger.Binary.Twiddle -import Test.Cardano.Ledger.Shelley.Serialisation.EraIndepGenerators () -import Test.Cardano.Ledger.Shelley.Serialisation.Generators () -import Test.QuickCheck - -instance (Era era, Val (Value era)) => Twiddle (AlonzoTxOut era) where - twiddle v = twiddle v . toTerm v - -instance Twiddle SlotNo where - twiddle v = twiddle v . toTerm v - -instance Era era => Twiddle (ShelleyTxCert era) where - twiddle v = twiddle v . toTerm v - -instance Crypto c => Twiddle (Withdrawals c) where - twiddle v = twiddle v . toTerm v - -instance Crypto c => Twiddle (AuxiliaryDataHash c) where - twiddle v = twiddle v . toTerm v - -instance Crypto c => Twiddle (Update (AlonzoEra c)) where - twiddle v = twiddle v . toTerm v - -instance Crypto c => Twiddle (MultiAsset c) where - twiddle v = twiddle v . encodingToTerm v . encCBOR - -instance Crypto c => Twiddle (ScriptIntegrityHash c) where - twiddle v = twiddle v . toTerm v - -instance (Crypto c, Typeable t) => Twiddle (KeyHash t c) where - twiddle v = twiddle v . toTerm v - -instance Twiddle Network where - twiddle v = twiddle v . toTerm v - -instance Crypto c => Twiddle (TxIn c) where - twiddle v = twiddle v . toTerm v - -instance Twiddle Coin where - twiddle v = twiddle v . toTerm v - -instance Crypto c => Twiddle (AlonzoTxBody (AlonzoEra c)) where - twiddle v txBody = do - inputs' <- twiddle v $ atbInputs txBody - outputs' <- twiddle v $ atbOutputs txBody - fee' <- twiddle v $ atbTxFee txBody - -- Empty collateral can be represented by empty set or the - -- value can be omitted entirely - ttl' <- twiddleStrictMaybe v . invalidHereafter $ atbValidityInterval txBody - cert' <- emptyOrNothing v $ atbCerts txBody - withdrawals' <- twiddle v $ atbWithdrawals txBody - update' <- twiddleStrictMaybe v $ atbUpdate txBody - auxDataHash' <- twiddleStrictMaybe v $ atbAuxDataHash txBody - validityStart' <- twiddleStrictMaybe v . invalidBefore $ atbValidityInterval txBody - mint' <- twiddle v $ atbMint txBody - scriptDataHash' <- twiddleStrictMaybe v $ atbScriptIntegrityHash txBody - collateral' <- emptyOrNothing v $ atbCollateral txBody - requiredSigners' <- emptyOrNothing v $ atbReqSignerHashes txBody - networkId' <- twiddleStrictMaybe v $ atbTxNetworkId txBody - mp <- elements [TMap, TMapI] - let fields = - [ (TInt 0, inputs') - , (TInt 1, outputs') - , (TInt 2, fee') - ] - <> catMaybes - [ (TInt 3,) <$> ttl' - , (TInt 4,) <$> cert' - , (TInt 5,) <$> Just withdrawals' - , (TInt 6,) <$> update' - , (TInt 7,) <$> auxDataHash' - , (TInt 8,) <$> validityStart' - , (TInt 9,) <$> Just mint' - , (TInt 11,) <$> scriptDataHash' - , (TInt 13,) <$> collateral' - , (TInt 14,) <$> requiredSigners' - , (TInt 15,) <$> networkId' - ] - fields' <- shuffle fields - pure $ mp fields' - -instance Crypto c => Twiddle (AlonzoScript (AlonzoEra c)) where - twiddle v = twiddle v . toTerm v - -instance Typeable c => Twiddle (Data (AlonzoEra c)) where - twiddle v = twiddle v . toTerm v - -instance Crypto c => Twiddle (BinaryData (AlonzoEra c)) where - twiddle v = twiddle v . toTerm v diff --git a/eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/Trace.hs b/eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/Trace.hs deleted file mode 100644 index 3ce4d0def87..00000000000 --- a/eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/Trace.hs +++ /dev/null @@ -1,82 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} --- HasTrace instances for AlonzoLEDGE -{-# OPTIONS_GHC -fno-warn-orphans #-} - --- | Export HasTrace instance for AlonzoLEDGE Alonzo Era. -module Test.Cardano.Ledger.Alonzo.Trace () where - -import Cardano.Ledger.Alonzo.Core -import Cardano.Ledger.Alonzo.Rules (AlonzoLEDGER) -import Cardano.Ledger.Alonzo.Tx (AlonzoTx) -import Cardano.Ledger.BaseTypes (Globals) -import Cardano.Ledger.Shelley.LedgerState (CertState (..), UTxOState) -import Cardano.Ledger.Shelley.Rules ( - DelegsEnv, - DelplEnv, - LedgerEnv (..), - ShelleyDelplPredFailure, - UtxoEnv, - ) -import Cardano.Ledger.UTxO (EraUTxO) -import Cardano.Slotting.Slot (SlotNo (..)) -import Control.Monad.Trans.Reader (runReaderT) -import Control.State.Transition -import Data.Functor.Identity (runIdentity) -import Data.Sequence (Seq) -import Test.Cardano.Ledger.Alonzo.AlonzoEraGen () -import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes (Mock) -import Test.Cardano.Ledger.Shelley.Generator.Core (GenEnv (..)) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (EraGen (..), MinLEDGER_STS) -import Test.Cardano.Ledger.Shelley.Generator.ShelleyEraGen () -import Test.Cardano.Ledger.Shelley.Generator.Trace.Ledger (genAccountState) -import Test.Cardano.Ledger.Shelley.Generator.Trace.TxCert (CERTS) -import Test.Cardano.Ledger.Shelley.Generator.Utxo (genTx) -import qualified Test.Control.State.Transition.Trace.Generator.QuickCheck as TQC - --- The AlonzoLEDGER STS combines utxo and delegation rules and allows for generating transactions --- with meaningful delegation certificates. -instance - ( EraGen era - , EraGov era - , EraUTxO era - , AlonzoEraTx era - , Mock (EraCrypto era) - , MinLEDGER_STS era - , Embed (EraRule "DELPL" era) (CERTS era) - , Environment (EraRule "DELPL" era) ~ DelplEnv era - , State (EraRule "DELPL" era) ~ CertState era - , Signal (EraRule "DELPL" era) ~ TxCert era - , PredicateFailure (EraRule "DELPL" era) ~ ShelleyDelplPredFailure era - , Embed (EraRule "DELEGS" era) (AlonzoLEDGER era) - , Embed (EraRule "UTXOW" era) (AlonzoLEDGER era) - , Environment (EraRule "UTXOW" era) ~ UtxoEnv era - , State (EraRule "UTXOW" era) ~ UTxOState era - , Signal (EraRule "UTXOW" era) ~ Tx era - , Environment (EraRule "DELEGS" era) ~ DelegsEnv era - , State (EraRule "DELEGS" era) ~ CertState era - , Signal (EraRule "DELEGS" era) ~ Seq (TxCert era) - , Tx era ~ AlonzoTx era - , ProtVerAtMost era 8 - ) => - TQC.HasTrace (AlonzoLEDGER era) (GenEnv era) - where - envGen GenEnv {geConstants} = - LedgerEnv (SlotNo 0) minBound - <$> genEraPParams @era geConstants - <*> genAccountState geConstants - - sigGen genenv env state = genTx genenv env state - - shrinkSignal _ = [] -- TODO add some kind of Shrinker? - - type BaseEnv (AlonzoLEDGER era) = Globals - interpretSTS globals act = runIdentity $ runReaderT act globals diff --git a/eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/Translation/Golden.hs b/eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/Translation/Golden.hs deleted file mode 100644 index f9acdafd323..00000000000 --- a/eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/Translation/Golden.hs +++ /dev/null @@ -1,86 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Alonzo.Translation.Golden ( - generateGoldenFile, - assertTranslationResultsMatchGolden, -) where - -import Cardano.Ledger.Alonzo.Plutus.Context (ContextError, toPlutusTxInfo) -import Cardano.Ledger.Alonzo.Scripts (AlonzoEraScript) -import Cardano.Ledger.Binary.Encoding (serialize) -import Cardano.Ledger.Core -import Control.Exception (throwIO) -import qualified Data.ByteString.Lazy as BSL -import Data.Functor.Identity (Identity) -import GHC.Stack (HasCallStack) -import Test.Cardano.Ledger.Alonzo.Translation.TranslatableGen ( - TranslatableGen (..), - TxInfoLanguage (..), - epochInfo, - systemStart, - toVersionedTxInfo, - translationInstances, - ) -import Test.Cardano.Ledger.Alonzo.Translation.TranslationInstance ( - TranslationInstance (..), - deserializeTranslationInstances, - ) -import Test.QuickCheck (Arbitrary) -import Test.Tasty.HUnit (Assertion, assertEqual) - --- | Generates arguments for `ExtendedUTxO.txInfo`, applies them to it --- and serializes both arguments and result to golden/translations.cbor file -generateGoldenFile :: - forall era. - ( Show (ContextError era) - , AlonzoEraScript era - , TranslatableGen era - , Arbitrary (PParamsHKD Identity era) - ) => - FilePath -> - IO () -generateGoldenFile file = do - putStrLn $ "Generating golden file for TxInfo: " <> file - let instances = translationInstances @era 100 100000 -- 100 instances with an arbitrary seed - let cbor = serialize (eraProtVerHigh @era) instances - BSL.writeFile file cbor - -assertTranslationResultsMatchGolden :: - forall era. - ( TranslatableGen era - , Show (ContextError era) - , HasCallStack - ) => - IO FilePath -> - Assertion -assertTranslationResultsMatchGolden file = do - bs <- file >>= BSL.readFile - instances <- either throwIO pure (deserializeTranslationInstances @era bs) - mapM_ assertTranslationComparison instances - -assertTranslationComparison :: - forall era. - ( TranslatableGen era - , Show (ContextError era) - , HasCallStack - ) => - TranslationInstance era -> - Assertion -assertTranslationComparison (TranslationInstance pp lang utxo tx expected) = - case mkTxInfoLanguage @era lang of - TxInfoLanguage slang -> do - case toPlutusTxInfo slang pp epochInfo systemStart utxo tx of - Left e -> error $ show e - Right actual -> assertEqual errorMessage expected $ toVersionedTxInfo slang actual - where - errorMessage = - unlines - [ "Unexpected txinfo with arguments: " - , " pp: " <> show pp - , " language: " <> show lang - , " utxo: " <> show utxo - , " tx: " <> show tx - ] diff --git a/eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/Translation/TranslatableGen.hs b/eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/Translation/TranslatableGen.hs deleted file mode 100644 index 73c5441e4f3..00000000000 --- a/eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/Translation/TranslatableGen.hs +++ /dev/null @@ -1,119 +0,0 @@ -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableSuperClasses #-} - -module Test.Cardano.Ledger.Alonzo.Translation.TranslatableGen ( - TranslatableGen (..), - TxInfoLanguage (..), - translationInstances, - epochInfo, - toVersionedTxInfo, - systemStart, -) where - -import Cardano.Ledger.Alonzo (Alonzo) -import Cardano.Ledger.Alonzo.Plutus.Context ( - ContextError, - EraPlutusTxInfo, - PlutusTxInfo, - toPlutusTxInfo, - ) -import Cardano.Ledger.Alonzo.Scripts (AlonzoEraScript (eraMaxLanguage)) -import Cardano.Ledger.Alonzo.TxWits (Redeemers) -import Cardano.Ledger.Core as Core -import Cardano.Ledger.Plutus.Language (Language (..), SLanguage (..)) -import Cardano.Ledger.UTxO (UTxO (..)) -import Cardano.Slotting.EpochInfo (EpochInfo, fixedEpochInfo) -import Cardano.Slotting.Slot (EpochSize (..)) -import Cardano.Slotting.Time (SystemStart (..), mkSlotLength) -import qualified Data.Map.Strict as Map -import qualified Data.Set as Set -import Data.Time.Clock.POSIX (posixSecondsToUTCTime) -import GHC.Stack -import Lens.Micro ((^.)) -import Test.Cardano.Ledger.Alonzo.Serialisation.Generators () -import Test.Cardano.Ledger.Alonzo.Translation.TranslationInstance ( - TranslationInstance (..), - VersionedTxInfo (..), - ) -import Test.QuickCheck ( - Arbitrary, - Gen, - arbitrary, - elements, - vectorOf, - ) -import Test.QuickCheck.Gen (Gen (MkGen)) -import Test.QuickCheck.Random (mkQCGen) - -data TxInfoLanguage era where - TxInfoLanguage :: EraPlutusTxInfo l era => SLanguage l -> TxInfoLanguage era - -class EraTx era => TranslatableGen era where - tgRedeemers :: Gen (Redeemers era) - tgTx :: Language -> Gen (Core.Tx era) - tgUtxo :: Language -> Core.Tx era -> Gen (UTxO era) - mkTxInfoLanguage :: HasCallStack => Language -> TxInfoLanguage era - -instance TranslatableGen Alonzo where - tgRedeemers = arbitrary - tgTx _ = arbitrary :: Gen (Tx Alonzo) - tgUtxo _ tx = do - let ins = tx ^. bodyTxL ^. inputsTxBodyL - outs <- vectorOf (length ins) (arbitrary :: Gen (TxOut Alonzo)) - pure $ UTxO (Map.fromList $ Set.toList ins `zip` outs) - mkTxInfoLanguage PlutusV1 = TxInfoLanguage SPlutusV1 - mkTxInfoLanguage lang = - error $ "Language " ++ show lang ++ " is not supported in " ++ eraName @Alonzo - -translationInstances :: - forall era. - ( AlonzoEraScript era - , TranslatableGen era - , Show (ContextError era) - , Arbitrary (PParams era) - ) => - Int -> - Int -> - [TranslationInstance era] -translationInstances size seed = - generateWithSeed seed $ vectorOf size genTranslationInstance - -generateWithSeed :: Int -> Gen a -> a -generateWithSeed seed (MkGen g) = g (mkQCGen seed) 30 - -toVersionedTxInfo :: SLanguage l -> PlutusTxInfo l -> VersionedTxInfo -toVersionedTxInfo slang txInfo = - case slang of - SPlutusV1 -> TxInfoPV1 txInfo - SPlutusV2 -> TxInfoPV2 txInfo - SPlutusV3 -> TxInfoPV3 txInfo - -genTranslationInstance :: - forall era. - ( AlonzoEraScript era - , TranslatableGen era - , Show (ContextError era) - , Arbitrary (PParams era) - ) => - Gen (TranslationInstance era) -genTranslationInstance = do - pp <- arbitrary :: Gen (PParams era) - lang <- elements [minBound .. eraMaxLanguage @era] - tx <- tgTx @era lang - utxo <- tgUtxo lang tx - case mkTxInfoLanguage @era lang of - TxInfoLanguage slang -> do - case toPlutusTxInfo slang pp epochInfo systemStart utxo tx of - Left err -> error $ show err - Right txInfo -> pure $ TranslationInstance pp lang utxo tx $ toVersionedTxInfo slang txInfo - -epochInfo :: EpochInfo (Either a) -epochInfo = fixedEpochInfo (EpochSize 100) (mkSlotLength 1) - -systemStart :: SystemStart -systemStart = SystemStart $ posixSecondsToUTCTime 1684445839000 -- 18/05/2023 diff --git a/eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/Translation/TranslationInstance.hs b/eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/Translation/TranslationInstance.hs deleted file mode 100644 index e9955890832..00000000000 --- a/eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/Translation/TranslationInstance.hs +++ /dev/null @@ -1,176 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Alonzo.Translation.TranslationInstance ( - TranslationInstance (..), - deserializeTranslationInstances, - VersionedTxInfo (..), -) where - -import Cardano.Ledger.Plutus.Language (Language (..)) - -import Cardano.Ledger.Core as Core - -import Cardano.Ledger.Binary ( - Annotator, - DecCBOR (..), - DecoderError, - EncCBOR (..), - decodeFullAnnotator, - decodeList, - fromPlainDecoder, - fromPlainEncoding, - ) -import Cardano.Ledger.Binary.Coders ( - Decode (..), - Encode (..), - decode, - encode, - (!>), - (<*!), - ) -import Cardano.Ledger.UTxO (UTxO (..)) -import qualified Codec.Serialise as Cborg (Serialise (..)) -import qualified Data.ByteString.Lazy as BSL -import Data.Typeable (Typeable) -import GHC.Generics (Generic) -import qualified PlutusLedgerApi.V1 as PV1 -import qualified PlutusLedgerApi.V2 as PV2 -import qualified PlutusLedgerApi.V3 as PV3 - -data VersionedTxInfo - = TxInfoPV1 PV1.TxInfo - | TxInfoPV2 PV2.TxInfo - | TxInfoPV3 PV3.TxInfo - deriving (Show, Eq, Generic) - --- | Represents arguments passed to `alonzoTxInfo` along with the produced result. -data TranslationInstance era = TranslationInstance - { tiPparams :: PParams era - , tiLanguage :: Language - , tiUtxo :: UTxO era - , tiTx :: Core.Tx era - , tiResult :: VersionedTxInfo - } - deriving (Generic) - -deriving instance - (Era era, Eq (PParams era), Eq (UTxO era), Eq (Core.Tx era)) => Eq (TranslationInstance era) -deriving instance - (Era era, Show (PParams era), Show (UTxO era), Show (Core.Tx era)) => Show (TranslationInstance era) - -instance Cborg.Serialise PV1.DCert -instance Cborg.Serialise PV1.TxInInfo -instance Cborg.Serialise PV1.TxInfo -instance Cborg.Serialise PV1.TxOut -instance Cborg.Serialise PV2.ScriptPurpose -instance Cborg.Serialise PV2.TxId -instance Cborg.Serialise PV2.TxOutRef -instance Cborg.Serialise PV2.TxInInfo -instance Cborg.Serialise PV2.TxInfo -instance Cborg.Serialise PV3.Address -instance Cborg.Serialise PV3.BuiltinData -instance Cborg.Serialise PV3.ChangedParameters -instance Cborg.Serialise PV3.ColdCommitteeCredential -instance Cborg.Serialise PV3.Committee -instance Cborg.Serialise PV3.Constitution -instance Cborg.Serialise PV3.Credential -instance Cborg.Serialise PV3.CurrencySymbol -instance Cborg.Serialise PV3.DRep -instance Cborg.Serialise PV3.DRepCredential -instance Cborg.Serialise PV3.DatumHash -instance Cborg.Serialise PV3.Delegatee -instance Cborg.Serialise PV3.GovernanceAction -instance Cborg.Serialise PV3.GovernanceActionId -instance Cborg.Serialise PV3.HotCommitteeCredential -instance Cborg.Serialise PV3.Lovelace -instance Cborg.Serialise PV3.OutputDatum -instance Cborg.Serialise PV3.POSIXTime -instance Cborg.Serialise PV3.ProposalProcedure -instance Cborg.Serialise PV3.ProtocolVersion -instance Cborg.Serialise PV3.PubKeyHash -instance Cborg.Serialise PV3.ScriptHash -instance Cborg.Serialise PV3.ScriptPurpose -instance Cborg.Serialise PV3.StakingCredential -instance Cborg.Serialise PV3.TokenName -instance Cborg.Serialise PV3.TxCert -instance Cborg.Serialise PV3.TxId -instance Cborg.Serialise PV3.TxInInfo -instance Cborg.Serialise PV3.TxInfo -instance Cborg.Serialise PV3.TxOut -instance Cborg.Serialise PV3.TxOutRef -instance Cborg.Serialise PV3.Value -instance Cborg.Serialise PV3.Vote -instance Cborg.Serialise PV3.Voter -instance (Cborg.Serialise k, Cborg.Serialise v) => Cborg.Serialise (PV3.Map k v) -instance Cborg.Serialise a => Cborg.Serialise (PV3.Extended a) -instance Cborg.Serialise a => Cborg.Serialise (PV3.Interval a) -instance Cborg.Serialise a => Cborg.Serialise (PV3.LowerBound a) -instance Cborg.Serialise a => Cborg.Serialise (PV3.UpperBound a) -instance Cborg.Serialise PV3.Rational - -instance Cborg.Serialise VersionedTxInfo - -instance EncCBOR VersionedTxInfo where - encCBOR = fromPlainEncoding . Cborg.encode - -instance DecCBOR VersionedTxInfo where - decCBOR = fromPlainDecoder Cborg.decode - -instance - ( Typeable era - , EncCBOR (PParams era) - , EncCBOR (UTxO era) - , EncCBOR (Core.Tx era) - ) => - EncCBOR (TranslationInstance era) - where - encCBOR (TranslationInstance pp l u tx r) = - encode $ - Rec TranslationInstance - !> To pp - !> To l - !> To u - !> To tx - !> To r - -instance - ( Typeable era - , DecCBOR (PParams era) - , DecCBOR (UTxO era) - , DecCBOR (Annotator (Core.Tx era)) - ) => - DecCBOR (Annotator (TranslationInstance era)) - where - decCBOR = - decode $ - Ann (RecD TranslationInstance) - <*! Ann From - <*! Ann From - <*! Ann From - <*! From - <*! Ann From - -deserializeTranslationInstances :: - forall era. - ( Era era - , DecCBOR (PParams era) - , DecCBOR (UTxO era) - , DecCBOR (Annotator (Core.Tx era)) - ) => - BSL.ByteString -> - Either DecoderError [TranslationInstance era] -deserializeTranslationInstances = decodeFullAnnotator (eraProtVerHigh @era) "Translations" decList - where - decList = sequence <$> decodeList decCBOR diff --git a/eras/alonzo/test-suite/test/GenerateGoldenFileMain.hs b/eras/alonzo/test-suite/test/GenerateGoldenFileMain.hs deleted file mode 100644 index 0e0bfef6ceb..00000000000 --- a/eras/alonzo/test-suite/test/GenerateGoldenFileMain.hs +++ /dev/null @@ -1,11 +0,0 @@ -{-# LANGUAGE TypeApplications #-} - -module Main where - -import Cardano.Ledger.Alonzo (Alonzo) -import Test.Cardano.Ledger.Alonzo.Translation.Golden (generateGoldenFile) -import Test.Cardano.Ledger.Alonzo.Translation.TranslatableGen () - --- | Generates golden translation file for Alonzo era -main :: IO () -main = generateGoldenFile @Alonzo "eras/alonzo/test-suite/golden/translations.cbor" diff --git a/eras/alonzo/test-suite/test/Test/Cardano/Ledger/Alonzo/ChainTrace.hs b/eras/alonzo/test-suite/test/Test/Cardano/Ledger/Alonzo/ChainTrace.hs deleted file mode 100644 index 63d32353da1..00000000000 --- a/eras/alonzo/test-suite/test/Test/Cardano/Ledger/Alonzo/ChainTrace.hs +++ /dev/null @@ -1,174 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} --- Embed instances for (AlonzoEra TestCrypto) -{-# OPTIONS_GHC -fno-warn-orphans #-} - -module Test.Cardano.Ledger.Alonzo.ChainTrace ( - tests, -) where - -import Cardano.Ledger.Alonzo (AlonzoEra) -import Cardano.Ledger.Alonzo.Plutus.Evaluate ( - collectPlutusScriptsWithContext, - evalPlutusScripts, - ) -import Cardano.Ledger.Alonzo.Rules (AlonzoBBODY, AlonzoLEDGER) -import Cardano.Ledger.Alonzo.Scripts (AlonzoScript (..), ExUnits (..), mkPlutusScript) -import Cardano.Ledger.Alonzo.Tx (AlonzoEraTx (..), IsValid (..), totExUnits) -import Cardano.Ledger.Core -import Cardano.Ledger.Plutus.Evaluate (PlutusWithContext (..), ScriptResult (..)) -import Cardano.Ledger.Plutus.Language (plutusFromRunnable) -import Cardano.Ledger.Shelley.LedgerState hiding (circulation) -import Cardano.Ledger.Slot (EpochSize (..)) -import Cardano.Ledger.UTxO (UTxO (..)) -import Cardano.Slotting.EpochInfo (fixedEpochInfo) -import Cardano.Slotting.Time (SystemStart (..), mkSlotLength) -import Control.State.Transition -import qualified Data.Map.Strict as Map -import qualified Data.Set as Set -import Data.Time.Clock.POSIX (posixSecondsToUTCTime) -import Data.Word (Word64) -import Lens.Micro -import Lens.Micro.Extras (view) -import Test.Cardano.Ledger.Alonzo.AlonzoEraGen (sumCollateral) -import Test.Cardano.Ledger.Alonzo.EraMapping () -import Test.Cardano.Ledger.Alonzo.Trace () -import Test.Cardano.Ledger.EraBuffet (TestCrypto) -import Test.Cardano.Ledger.Shelley.Constants (defaultConstants) -import Test.Cardano.Ledger.Shelley.Rules.Chain ( - CHAIN, - ChainEvent (..), - ChainState (..), - TestChainPredicateFailure (..), - ) -import Test.Cardano.Ledger.Shelley.Rules.TestChain ( - forAllChainTrace, - ledgerTraceFromBlock, - ) -import Test.Control.State.Transition.Trace (SourceSignalTarget (..), sourceSignalTargets) -import Test.QuickCheck ( - Property, - conjoin, - counterexample, - (.&&.), - (===), - ) -import Test.Tasty -import qualified Test.Tasty.QuickCheck as TQC - -type A = AlonzoEra TestCrypto - -instance Embed (AlonzoBBODY A) (CHAIN A) where - wrapFailed = BbodyFailure - wrapEvent = BbodyEvent - -traceLen :: Word64 -traceLen = 100 - -data HasPlutus = HasPlutus | NoPlutus - deriving (Show) - -tests :: TestTree -tests = - TQC.testProperty "alonzo specific" $ - forAllChainTrace @A traceLen defaultConstants $ \tr -> - conjoin $ map alonzoSpecificProps (sourceSignalTargets tr) - -alonzoSpecificProps :: - SourceSignalTarget (CHAIN A) -> - Property -alonzoSpecificProps SourceSignalTarget {source = chainSt, signal = block} = - conjoin $ - map alonzoSpecificPropsLEDGER $ - sourceSignalTargets ledgerTr - where - (tickedChainSt, ledgerTr) = ledgerTraceFromBlock chainSt block - pp = (view curPParamsEpochStateL . nesEs . chainNes) tickedChainSt - alonzoSpecificPropsLEDGER :: SourceSignalTarget (AlonzoLEDGER A) -> Property - alonzoSpecificPropsLEDGER - SourceSignalTarget - { source = LedgerState UTxOState {utxosUtxo = UTxO u, utxosDeposited = dp, utxosFees = f} ds - , signal = tx - , target = LedgerState UTxOState {utxosUtxo = UTxO u', utxosDeposited = dp', utxosFees = f'} ds' - } = - let isValid' = tx ^. isValidTxL - noNewUTxO = u' `Map.isSubmapOf` u - collateralInFees = f <> sumCollateral tx (UTxO u) == f' - utxoConsumed = not $ u `Map.isSubmapOf` u' - allScripts = tx ^. witsTxL . scriptTxWitsL - hasPlutus = if all (isNativeScript @A) allScripts then NoPlutus else HasPlutus - totEU = totExUnits tx - nonTrivialExU = exUnitsMem totEU > 0 && exUnitsSteps totEU > 0 - collected = - -- Note that none of our plutus scripts use validity intervals, - -- so it is safe to use anything for the epech info and the system start. - case collectPlutusScriptsWithContext - (fixedEpochInfo (EpochSize 100) (mkSlotLength 1)) -- arbitrary - (SystemStart $ posixSecondsToUTCTime 0) -- arbitrary - pp - tx - (UTxO u) of - Left e -> error $ "Plutus script collection error: " <> show e - Right c -> c - collectedScripts = - Set.fromList - [ plutus - | PlutusWithContext {pwcScript} <- collected - , Just plutus <- [mkPlutusScript $ either id plutusFromRunnable pwcScript] - ] - suppliedPScrpts = Set.fromList [plutus | PlutusScript plutus <- Map.elems allScripts] - expectedPScripts = collectedScripts == suppliedPScrpts - allPlutusTrue = case evalPlutusScripts tx collected of - Fails _ _ -> False - Passes _ -> True - in counterexample - ( mconcat - [ "\nHas plutus scripts: " - , show hasPlutus - , "\nIs valid: " - , show isValid' - , "\nAt least one UTxO is consumed: " - , show utxoConsumed - , "\nNon trivial execution units: " - , show nonTrivialExU - , "\nReceived the expected plutus scripts: " - , show expectedPScripts - , "\nPlutus scripts all evaluate to true: " - , show allPlutusTrue - , "\nNo new UTxO: " - , show noNewUTxO - , "\nThe collateral amount was added to the fees: " - , show collateralInFees - , "\nThe deposit pot is unchanged: " - , show (dp == dp') - , "\nThe delegation state is unchanged: " - , show (ds == ds') - ] - ) - ( counterexample "At least one UTxO is consumed" utxoConsumed - .&&. ( case (hasPlutus, isValid') of - (NoPlutus, IsValid True) -> totEU === ExUnits 0 0 - (NoPlutus, IsValid False) -> counterexample "No Plutus scripts, but isValid == False" False - (HasPlutus, IsValid True) -> - conjoin - [ counterexample "Non trivial execution units" nonTrivialExU - , counterexample "Received the expected plutus scripts" expectedPScripts - , counterexample "Plutus scripts all evaluate to true" allPlutusTrue - ] - (HasPlutus, IsValid False) -> - conjoin - [ counterexample "No new UTxO" noNewUTxO - , counterexample "The collateral amount was added to the fees" collateralInFees - , dp === dp' - , ds === ds' - , counterexample "No failing Plutus scripts" $ not allPlutusTrue - ] - ) - ) diff --git a/eras/alonzo/test-suite/test/Test/Cardano/Ledger/Alonzo/Golden.hs b/eras/alonzo/test-suite/test/Test/Cardano/Ledger/Alonzo/Golden.hs deleted file mode 100644 index 317fdfe6380..00000000000 --- a/eras/alonzo/test-suite/test/Test/Cardano/Ledger/Alonzo/Golden.hs +++ /dev/null @@ -1,577 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - --- | --- Module : Test.Cardano.Ledger.Alonzo.Golden --- Description : Golden Tests for the Alonzo era -module Test.Cardano.Ledger.Alonzo.Golden ( - tests, -) -where - -import Cardano.Ledger.Alonzo (Alonzo) -import Cardano.Ledger.Alonzo.Core -import Cardano.Ledger.Alonzo.Genesis (AlonzoGenesis (..)) -import Cardano.Ledger.Alonzo.PParams ( - LangDepView (..), - getLanguageView, - ) -import Cardano.Ledger.Alonzo.Rules (FailureDescription (..), TagMismatchDescription (..)) -import Cardano.Ledger.Alonzo.Tx (IsValid (..), alonzoMinFeeTx) -import Cardano.Ledger.Alonzo.TxBody (AlonzoTxOut (..), utxoEntrySize) -import Cardano.Ledger.BaseTypes (SlotNo (..), StrictMaybe (..), boundRational) -import Cardano.Ledger.Binary (decCBOR, decodeFullAnnotator) -import Cardano.Ledger.Binary.Plain as Plain (serialize) -import Cardano.Ledger.Block (Block (..)) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Mary.Value (valueFromList) -import Cardano.Ledger.Plutus.CostModels ( - CostModel, - CostModels, - mkCostModel, - mkCostModels, - ) -import Cardano.Ledger.Plutus.Data (Data (..), hashData) -import Cardano.Ledger.Plutus.ExUnits ( - ExUnits (..), - Prices (..), - ) -import Cardano.Ledger.Plutus.Language (Language (..)) -import Cardano.Protocol.TPraos.BHeader (BHeader) -import Data.Aeson (eitherDecodeFileStrict) -import qualified Data.Aeson as Aeson -import qualified Data.ByteString.Base16 as B16 -import qualified Data.ByteString.Base16.Lazy as B16L -import qualified Data.ByteString.Lazy as BSL -import Data.Either (fromRight) -import qualified Data.List.NonEmpty as NE -import qualified Data.Map.Strict as Map -import Data.Maybe (fromJust) -import Data.Sequence.Strict -import GHC.Stack (HasCallStack) -import Lens.Micro -import Paths_cardano_ledger_alonzo_test -import qualified PlutusLedgerApi.V1 as PV1 (Data (..)) -import Test.Cardano.Ledger.Alonzo.Examples.Consensus (ledgerExamplesAlonzo) -import Test.Cardano.Ledger.EraBuffet (StandardCrypto) -import Test.Cardano.Ledger.Mary.Golden ( - largestName, - minUTxO, - pid1, - pid2, - pid3, - smallName, - smallestName, - ) -import Test.Cardano.Ledger.Plutus (zeroTestingCostModels) -import Test.Cardano.Ledger.Shelley.Examples.Cast (aliceAddr, bobAddr, carlAddr) -import qualified Test.Cardano.Ledger.Shelley.Examples.Consensus as SLE -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.HUnit (Assertion, testCase, (@?=)) - -readDataFile :: FilePath -> IO BSL.ByteString -readDataFile name = getDataFileName name >>= BSL.readFile - --- | ada cost of storing a word8 of data as a UTxO entry, assuming no change to minUTxOValue -coinsPerUTxOWordLocal :: Integer -coinsPerUTxOWordLocal = quot minUTxOValueShelleyMA utxoEntrySizeWithoutValLocal - where - utxoEntrySizeWithoutValLocal = 29 - Coin minUTxOValueShelleyMA = minUTxO - -calcMinUTxO :: AlonzoTxOut Alonzo -> Coin -calcMinUTxO tout = Coin (utxoEntrySize tout * coinsPerUTxOWordLocal) - -tests :: TestTree -tests = - testGroup - "Alonzo Golden Tests" - [ goldenCborSerialization - , goldenJsonSerialization - , goldenMinFee - , goldenScriptIntegrity - , goldenGenesisSerialization - , goldenUTxOEntryMinAda - ] - --- | (heapWords of a DataHash) * coinsPerUTxOWordLocal is 344820 -goldenUTxOEntryMinAda :: TestTree -goldenUTxOEntryMinAda = - testGroup - "golden tests - UTxOEntryMinAda" - [ testCase "one policy, one (smallest) name, yes datum hash" $ - calcMinUTxO - ( AlonzoTxOut - carlAddr - (valueFromList (Coin 1407406) [(pid1, smallestName, 1)]) - (SJust $ hashData @Alonzo (Data (PV1.List []))) - ) - @?= Coin 1655136 - , testCase "one policy, one (smallest) name, no datum hash" $ - calcMinUTxO - ( AlonzoTxOut - bobAddr - (valueFromList (Coin 1407406) [(pid1, smallestName, 1)]) - SNothing - ) - @?= Coin 1310316 - , testCase "one policy, one (small) name" $ - calcMinUTxO - ( AlonzoTxOut - aliceAddr - (valueFromList (Coin 1444443) [(pid1, smallName 1, 1)]) - SNothing - ) - @?= Coin 1344798 - , testCase "one policy, three (small) names" $ - calcMinUTxO - ( AlonzoTxOut - aliceAddr - ( valueFromList - (Coin 1555554) - [ (pid1, smallName 1, 1) - , (pid1, smallName 2, 1) - , (pid1, smallName 3, 1) - ] - ) - SNothing - ) - @?= Coin 1448244 - , testCase "one policy, one (largest) name" $ - calcMinUTxO - ( AlonzoTxOut - carlAddr - (valueFromList (Coin 1555554) [(pid1, largestName 65, 1)]) - SNothing - ) - @?= Coin 1448244 - , testCase "one policy, three (largest) name, with hash" $ - calcMinUTxO - ( AlonzoTxOut - carlAddr - ( valueFromList - (Coin 1962961) - [ (pid1, largestName 65, 1) - , (pid1, largestName 66, 1) - , (pid1, largestName 67, 1) - ] - ) - (SJust $ hashData @Alonzo (Data (PV1.Constr 0 [PV1.Constr 0 []]))) - ) - @?= Coin 2172366 - , testCase "two policies, one (smallest) name" $ - calcMinUTxO - ( AlonzoTxOut - aliceAddr - (valueFromList (Coin 1592591) [(pid1, smallestName, 1), (pid2, smallestName, 1)]) - SNothing - ) - @?= Coin 1482726 - , testCase "two policies, one (smallest) name, with hash" $ - calcMinUTxO - ( AlonzoTxOut - aliceAddr - (valueFromList (Coin 1592591) [(pid1, smallestName, 1), (pid2, smallestName, 1)]) - (SJust $ hashData @Alonzo (Data (PV1.Constr 0 []))) - ) - @?= Coin 1827546 - , testCase "two policies, two (small) names" $ - calcMinUTxO - ( AlonzoTxOut - bobAddr - (valueFromList (Coin 1629628) [(pid1, smallName 1, 1), (pid2, smallName 2, 1)]) - SNothing - ) - @?= Coin 1517208 - , testCase "three policies, ninety-six (small) names" $ - calcMinUTxO - ( AlonzoTxOut - aliceAddr - ( let f i c = (i, smallName c, 1) - in valueFromList - (Coin 7407400) - [ f i c - | (i, cs) <- - [(pid1, [32 .. 63]), (pid2, [64 .. 95]), (pid3, [96 .. 127])] - , c <- cs - ] - ) - SNothing - ) - @?= Coin 6896400 - , testCase "utxo entry size of ada-only" $ - -- This value, 29, is helpful for comparing the alonzo protocol parameter utxoCostPerWord - -- with the old parameter minUTxOValue. - -- If we wish to keep the ada-only, no datum hash, minimum value nearly the same, - -- we can divide minUTxOValue by 29 and round. - utxoEntrySize @Alonzo (AlonzoTxOut aliceAddr mempty SNothing) @?= 29 - ] - -goldenCborSerialization :: TestTree -goldenCborSerialization = - testGroup - "golden tests - CBOR serialization" - [ testCase "Alonzo Block" $ do - expected <- readDataFile "golden/block.cbor" - Plain.serialize (SLE.sleBlock ledgerExamplesAlonzo) @?= expected - , testCase "Alonzo Tx" $ do - expected <- readDataFile "golden/tx.cbor" - Plain.serialize (SLE.sleTx ledgerExamplesAlonzo) @?= expected - ] - -goldenJsonSerialization :: TestTree -goldenJsonSerialization = - testGroup - "golden tests - JSON serialization" - [ testCase "ValidityInterval" $ do - let value = - [ ValidityInterval - { invalidBefore = SNothing - , invalidHereafter = SNothing - } - , ValidityInterval - { invalidBefore = SJust (SlotNo 12345) - , invalidHereafter = SNothing - } - , ValidityInterval - { invalidBefore = SNothing - , invalidHereafter = SJust (SlotNo 12354) - } - , ValidityInterval - { invalidBefore = SJust (SlotNo 12345) - , invalidHereafter = SJust (SlotNo 12354) - } - ] - expected <- Aeson.throwDecode =<< readDataFile "golden/ValidityInterval.json" - Aeson.toJSON value @?= expected - , testCase "IsValid" $ do - let value = - [ IsValid True - , IsValid False - ] - expected <- Aeson.throwDecode =<< readDataFile "golden/IsValid.json" - Aeson.toJSON value @?= expected - , testCase "FailureDescription" $ do - let value = - [ PlutusFailure "A description" "A reconstruction" - ] - expected <- Aeson.throwDecode =<< readDataFile "golden/FailureDescription.json" - Aeson.toJSON value @?= expected - , testCase "TagMismatchDescription" $ do - let value = - [ PassedUnexpectedly - , FailedUnexpectedly (NE.fromList [PlutusFailure "A description" "A reconstruction"]) - ] - expected <- Aeson.throwDecode =<< readDataFile "golden/TagMismatchDescription.json" - Aeson.toJSON value @?= expected - ] - -goldenGenesisSerialization :: TestTree -goldenGenesisSerialization = - testGroup - "golden tests - Alonzo Genesis serialization" - [ testCase "JSON deserialization" $ do - let file = "golden/mainnet-alonzo-genesis.json" - deserialized <- (eitherDecodeFileStrict file :: IO (Either String AlonzoGenesis)) - deserialized @?= Right expectedGenesis - ] - -goldenMinFee :: TestTree -goldenMinFee = - testGroup - "golden tests - minimum fee calculation" - [ testCase "Alonzo Block" $ do - -- This golden test uses the block from: - -- https://github.com/input-output-hk/cardano-node/issues/4228#issuecomment-1195707491 - -- - -- The first transaction in this block is invalid due to: - -- FeeTooSmallUTxO (Coin 1006053) (Coin 1001829) - -- - -- The correct behavior is for the minimum fee for this transaction - -- to be 1006053 lovelace, as indicated by the failure above. - -- Nodes that had the bug determined the minimum fee to be 1001829. - hex <- readDataFile "golden/hex-block-node-issue-4228.cbor" - let cborBytesBlock = - case B16L.decode hex of - Left err -> error err - Right val -> val - txsSeq = - case decodeFullAnnotator (eraProtVerHigh @Alonzo) "Block" decCBOR cborBytesBlock of - Left err -> error (show err) - Right (Block _h txs :: Block (BHeader StandardCrypto) Alonzo) -> txs - firstTx = - case fromTxSeq @Alonzo txsSeq of - tx :<| _ -> tx - Empty -> error "Block doesn't have any transactions" - - -- Below are the relevant protocol parameters that were active - -- at the time this block was rejected. - priceMem = fromJust $ boundRational 0.0577 - priceSteps = fromJust $ boundRational 0.0000721 - pricesParam = Prices priceMem priceSteps - pp = - emptyPParams - & ppMinFeeAL .~ Coin 44 - & ppMinFeeBL .~ Coin 155381 - & ppPricesL .~ pricesParam - - Coin 1006053 @?= alonzoMinFeeTx pp firstTx - ] - -fromRightError :: (HasCallStack, Show a) => String -> Either a b -> b -fromRightError errorMsg = - either (\e -> error $ errorMsg ++ ": " ++ show e) id - -exPP :: PParams Alonzo -exPP = - emptyPParams - & ppCostModelsL .~ zeroTestingCostModels [PlutusV1, PlutusV2] - -exampleLangDepViewPV1 :: LangDepView -exampleLangDepViewPV1 = LangDepView b1 b2 - where - b1 = - fromRightError "invalid hex encoding of the language inside exampleLangDepViewPV1" $ - B16.decode "4100" - b2 = - fromRightError "invalid hex encoding of the cost model inside exampleLangDepViewPV1" $ - B16.decode $ - "58a89f0000000000000000000000000000000000000000000000000000000000" - <> "0000000000000000000000000000000000000000000000000000000000000000" - <> "0000000000000000000000000000000000000000000000000000000000000000" - <> "0000000000000000000000000000000000000000000000000000000000000000" - <> "0000000000000000000000000000000000000000000000000000000000000000" - <> "000000000000000000ff" - -exampleLangDepViewPV2 :: LangDepView -exampleLangDepViewPV2 = LangDepView b1 b2 - where - b1 = - fromRightError "invalid hex encoding of the language inside exampleLangDepViewPV2" $ - B16.decode "01" - b2 = - fromRightError "invalid hex encoding of the cost model inside exampleLangDepViewPV2" $ - B16.decode $ - "98af000000000000000000000000000000000000000000000000000000000000" - <> "0000000000000000000000000000000000000000000000000000000000000000" - <> "0000000000000000000000000000000000000000000000000000000000000000" - <> "0000000000000000000000000000000000000000000000000000000000000000" - <> "0000000000000000000000000000000000000000000000000000000000000000" - <> "0000000000000000000000000000000000" - -testScriptIntegritpHash :: - HasCallStack => - PParams Alonzo -> - Language -> - LangDepView -> - Assertion -testScriptIntegritpHash pp lang view = getLanguageView pp lang @?= view - -goldenScriptIntegrity :: TestTree -goldenScriptIntegrity = - testGroup - "golden tests - script integrity hash" - [ testCase "PlutusV1" $ testScriptIntegritpHash exPP PlutusV1 exampleLangDepViewPV1 - , testCase "PlutusV2" $ testScriptIntegritpHash exPP PlutusV2 exampleLangDepViewPV2 - ] - -expectedGenesis :: AlonzoGenesis -expectedGenesis = - AlonzoGenesis - { agCoinsPerUTxOWord = CoinPerWord $ Coin 34482 - , agPrices = Prices (fromJust $ boundRational 0.0577) (fromJust $ boundRational 0.0000721) - , agCostModels = expectedCostModels - , agMaxTxExUnits = ExUnits 10000000 10000000000 - , agMaxBlockExUnits = ExUnits 50000000 40000000000 - , agMaxValSize = 5000 - , agCollateralPercentage = 150 - , agMaxCollateralInputs = 3 - } - -expectedCostModels :: CostModels -expectedCostModels = - mkCostModels - (Map.fromList [(PlutusV1, expectedCostModel), (PlutusV2, expectedCostModelV2)]) - -expectedCostModel :: CostModel -expectedCostModel = - fromRight - (error ("Error creating CostModel from known parameters" <> show expectedPParams)) - (mkCostModel PlutusV1 expectedPParams) - -expectedCostModelV2 :: CostModel -expectedCostModelV2 = - fromRight - (error ("Error creating CostModel from known PlutusV2 parameters" <> show expectedPParams)) - (mkCostModel PlutusV2 (expectedPParams ++ (replicate 9 0))) - -expectedPParams :: [Integer] -expectedPParams = - [ 197209 - , 0 - , 1 - , 1 - , 396231 - , 621 - , 0 - , 1 - , 150000 - , 1000 - , 0 - , 1 - , 150000 - , 32 - , 2477736 - , 29175 - , 4 - , 29773 - , 100 - , 29773 - , 100 - , 29773 - , 100 - , 29773 - , 100 - , 29773 - , 100 - , 29773 - , 100 - , 100 - , 100 - , 29773 - , 100 - , 150000 - , 32 - , 150000 - , 32 - , 150000 - , 32 - , 150000 - , 1000 - , 0 - , 1 - , 150000 - , 32 - , 150000 - , 1000 - , 0 - , 8 - , 148000 - , 425507 - , 118 - , 0 - , 1 - , 1 - , 150000 - , 1000 - , 0 - , 8 - , 150000 - , 112536 - , 247 - , 1 - , 150000 - , 10000 - , 1 - , 136542 - , 1326 - , 1 - , 1000 - , 150000 - , 1000 - , 1 - , 150000 - , 32 - , 150000 - , 32 - , 150000 - , 32 - , 1 - , 1 - , 150000 - , 1 - , 150000 - , 4 - , 103599 - , 248 - , 1 - , 103599 - , 248 - , 1 - , 145276 - , 1366 - , 1 - , 179690 - , 497 - , 1 - , 150000 - , 32 - , 150000 - , 32 - , 150000 - , 32 - , 150000 - , 32 - , 150000 - , 32 - , 150000 - , 32 - , 148000 - , 425507 - , 118 - , 0 - , 1 - , 1 - , 61516 - , 11218 - , 0 - , 1 - , 150000 - , 32 - , 148000 - , 425507 - , 118 - , 0 - , 1 - , 1 - , 148000 - , 425507 - , 118 - , 0 - , 1 - , 1 - , 2477736 - , 29175 - , 4 - , 0 - , 82363 - , 4 - , 150000 - , 5000 - , 0 - , 1 - , 150000 - , 32 - , 197209 - , 0 - , 1 - , 1 - , 150000 - , 32 - , 150000 - , 32 - , 150000 - , 32 - , 150000 - , 32 - , 150000 - , 32 - , 150000 - , 32 - , 150000 - , 32 - , 3345831 - , 1 - , 1 - ] diff --git a/eras/alonzo/test-suite/test/Test/Cardano/Ledger/Alonzo/GoldenTranslation.hs b/eras/alonzo/test-suite/test/Test/Cardano/Ledger/Alonzo/GoldenTranslation.hs deleted file mode 100644 index 55aab409726..00000000000 --- a/eras/alonzo/test-suite/test/Test/Cardano/Ledger/Alonzo/GoldenTranslation.hs +++ /dev/null @@ -1,40 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE BlockArguments #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} - --- | Deserializes `TranslationInstance`s from golden/translations.cbor file. --- --- Each instance represents arguments passed to `ExtendedUTxO.txInfo` along with the produced result. --- This test checks that calling `alonzoTxInfo` with the arguments from this file, produces the same result as in the flie. --- --- To regenerate the golden file (for example, if the logic in the translation changes), --- run the following command from the root of the repository: --- cabal run cardano-ledger-alonzotest:gen-golden" -module Test.Cardano.Ledger.Alonzo.GoldenTranslation ( - tests, -) -where - -import Test.Cardano.Ledger.Alonzo.Serialisation.Generators () - -import Cardano.Ledger.Alonzo (Alonzo) -import Paths_cardano_ledger_alonzo_test (getDataFileName) -import Test.Cardano.Ledger.Alonzo.Translation.Golden (assertTranslationResultsMatchGolden) -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.HUnit (Assertion, testCase) - -tests :: TestTree -tests = - testGroup - "Golden translation tests" - [testCase "golden/translations.cbor" $ goldenAssertion "golden/translations.cbor"] - -goldenAssertion :: String -> Assertion -goldenAssertion file = assertTranslationResultsMatchGolden @Alonzo (getDataFileName file) diff --git a/eras/alonzo/test-suite/test/Test/Cardano/Ledger/Alonzo/PlutusScriptExamples.hs b/eras/alonzo/test-suite/test/Test/Cardano/Ledger/Alonzo/PlutusScriptExamples.hs deleted file mode 100644 index 7034c495ca1..00000000000 --- a/eras/alonzo/test-suite/test/Test/Cardano/Ledger/Alonzo/PlutusScriptExamples.hs +++ /dev/null @@ -1,200 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} -{-# OPTIONS_GHC -fno-warn-orphans #-} - -module Test.Cardano.Ledger.Alonzo.PlutusScriptExamples ( - tests, -) -where - -import Cardano.Ledger.Alonzo (Alonzo) -import Cardano.Ledger.Alonzo.Plutus.Context (EraPlutusTxInfo) -import Cardano.Ledger.Alonzo.Scripts (ExUnits (..)) -import Cardano.Ledger.Core (EraCrypto, eraProtVerLow) -import Cardano.Ledger.Plutus.Evaluate ( - PlutusDatums (..), - PlutusWithContext (..), - ScriptResult (Fails, Passes), - runPlutusScript, - ) -import Cardano.Ledger.Plutus.Language ( - Language (..), - Plutus (..), - PlutusLanguage (..), - SLanguage (..), - hashPlutusScript, - plutusLanguage, - ) -import Data.Bifunctor (first) -import GHC.Stack -import qualified PlutusLedgerApi.Common as P -import Test.Cardano.Ledger.Plutus ( - alwaysFailsPlutus, - alwaysSucceedsPlutus, - testingEvaluationContext, - zeroTestingCostModel, - ) -import Test.Cardano.Ledger.Plutus.Examples -import Test.Tasty -import Test.Tasty.HUnit (Assertion, assertBool, testCase) - --- ============================================= - -data ShouldSucceed = ShouldSucceed | ShouldFail - -directPlutusTest :: - forall era l. - (HasCallStack, EraPlutusTxInfo l era) => - ShouldSucceed -> - Plutus l -> - [P.Data] -> - Assertion -directPlutusTest expectation plutus datums = - case (expectation, evalWithTightBudget) of - (ShouldSucceed, Left e) -> - assertBool ("This script should have succeeded, but: " <> show e) False - (ShouldSucceed, Right _) -> - assertBool "" True - (ShouldFail, Left ((P.CekError _))) -> - assertBool "" True -- TODO rule out cost model failure - (ShouldFail, Left e) -> - assertBool ("Not the script failure we expected: " <> show e) False - (ShouldFail, Right _) -> - assertBool "This script should have failed" False - where - lang = plutusLanguage plutus - evalContext = testingEvaluationContext lang - -- Evaluate a script with sufficient budget to run it. - pv = eraProtVerLow @era - evalWithTightBudget :: Either P.EvaluationError P.ExBudget - evalWithTightBudget = do - plutusRunnable <- first P.CodecError $ decodePlutusRunnable pv plutus - budget <- - snd $ evaluatePlutusRunnableBudget pv P.Quiet evalContext plutusRunnable datums - snd $ evaluatePlutusRunnable pv P.Verbose evalContext budget plutusRunnable datums - -tests :: TestTree -tests = - testGroup - "run plutus script directly" - [ testCase "always true" $ - directPlutusTest @Alonzo - ShouldSucceed - (alwaysSucceedsPlutus @'PlutusV1 4) - [] - , testCase "always false" $ - directPlutusTest @Alonzo - ShouldFail - (alwaysFailsPlutus @'PlutusV1 0) - [] - , testCase "guess the number, correct" $ - directPlutusTest @Alonzo - ShouldSucceed - (guessTheNumber2 SPlutusV1) - [P.I 3, P.I 3] - , testCase "guess the number, incorrect" $ - directPlutusTest @Alonzo - ShouldFail - (guessTheNumber2 SPlutusV1) - [P.I 3, P.I 4] - , testCase "guess the number with 3 args, correct" $ - directPlutusTest @Alonzo - ShouldSucceed - (guessTheNumber3 SPlutusV1) - [P.I 3, P.I 3, P.I 9] - , testCase "evendata with 3 args, correct" $ - directPlutusTest @Alonzo - ShouldSucceed - (evendata3 SPlutusV1) - [P.I 4, P.I 3, P.I 9] - , testCase "evendata with 3 args, incorrect" $ - directPlutusTest @Alonzo - ShouldFail - (evendata3 SPlutusV1) - [P.I 3, P.I 3, P.I 9] - , testCase "odd data with 3 args, correct" $ - directPlutusTest @Alonzo - ShouldSucceed - (odddata3 SPlutusV1) - [P.I 3, P.I 3, P.I 9] - , testCase "odd data with 3 args, incorrect" $ - directPlutusTest @Alonzo - ShouldFail - (odddata3 SPlutusV1) - [P.I 4, P.I 3, P.I 9] - , testCase "sumsTo10 with 3 args, correct" $ - directPlutusTest @Alonzo - ShouldSucceed - (sumsTo103 SPlutusV1) - [P.I 3, P.I 7, P.I 9] - , testCase "sumsTo10 with 3 args, incorrect" $ - directPlutusTest @Alonzo - ShouldFail - (sumsTo103 SPlutusV1) - [P.I 4, P.I 3, P.I 9] - , testCase "even redeemer with 2 args, correct" $ - directPlutusTest @Alonzo - ShouldSucceed - (evenRedeemer2 SPlutusV1) - [P.I 12, P.I 9] - , testCase "odd redeemer with 2 args, correct" $ - directPlutusTest @Alonzo - ShouldSucceed - (oddRedeemer2 SPlutusV1) - [P.I 11, P.I 9] - , testCase "redeemer is 10 with 2 args, correct" $ - directPlutusTest @Alonzo - ShouldSucceed - (redeemerIs102 SPlutusV1) - [P.I 10, P.I 10] - , explainTestTree - ] - --- ========================================= - -explainTest :: - forall era l. - EraPlutusTxInfo l era => - Plutus l -> - ShouldSucceed -> - [P.Data] -> - Assertion -explainTest plutus mode ds = - let pwc = - PlutusWithContext - { pwcProtocolVersion = eraProtVerLow @era - , pwcScript = Left plutus - , pwcScriptHash = hashPlutusScript @l @(EraCrypto era) plutus - , pwcDatums = PlutusDatums ds - , pwcExUnits = ExUnits 100000000 10000000 - , pwcCostModel = zeroTestingCostModel (plutusLanguage plutus) - } - in case (mode, runPlutusScript pwc) of - (ShouldSucceed, Passes _) -> assertBool "" True - (ShouldSucceed, Fails _ xs) -> assertBool (show xs) False - (ShouldFail, Passes _) -> assertBool ("Test that should fail, passes: " ++ show pwc) False - (ShouldFail, Fails _ _) -> assertBool "" True - -explainTestTree :: TestTree -explainTestTree = - testGroup - "explain failures tests" - [ testCase - "even data with 3 args, fails as expected" - (explainTest @Alonzo (evendata3 SPlutusV1) ShouldFail [P.I 3, P.I 3, P.I 5]) - , testCase - "even data with 3 args, succeeds as expected" - (explainTest @Alonzo (evendata3 SPlutusV1) ShouldSucceed [P.I 4, P.I 3, P.I 5]) - , testCase - "guess the number with 3 args, succeeds as expected" - (explainTest @Alonzo (guessTheNumber3 SPlutusV1) ShouldSucceed [P.I 4, P.I 4, P.I 5]) - , testCase - "guess the number with 3 args, fails as expected" - (explainTest @Alonzo (guessTheNumber3 SPlutusV1) ShouldFail [P.I 4, P.I 5, P.I 5]) - ] diff --git a/eras/alonzo/test-suite/test/Test/Cardano/Ledger/Alonzo/Serialisation/Canonical.hs b/eras/alonzo/test-suite/test/Test/Cardano/Ledger/Alonzo/Serialisation/Canonical.hs deleted file mode 100644 index b6d18726dd8..00000000000 --- a/eras/alonzo/test-suite/test/Test/Cardano/Ledger/Alonzo/Serialisation/Canonical.hs +++ /dev/null @@ -1,134 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Alonzo.Serialisation.Canonical (tests) where - -import Cardano.Ledger.Alonzo (Alonzo, AlonzoEra) -import Cardano.Ledger.Alonzo.PParams -import Cardano.Ledger.Binary ( - Annotator (..), - Decoder, - TokenType (..), - decodeBool, - decodeBytesCanonical, - decodeDoubleCanonical, - decodeFullAnnotator, - decodeIntegerCanonical, - decodeListLenCanonical, - decodeMapLenCanonical, - decodeNull, - decodeSimpleCanonical, - decodeStringCanonical, - peekTokenType, - serialize, - withSlice, - ) -import Cardano.Ledger.Core -import Cardano.Ledger.Crypto -import Cardano.Ledger.Plutus.Language (Language) -import Control.Monad (replicateM, unless, void) -import qualified Data.ByteString.Base16 as B16 -import Data.ByteString.Lazy as LBS -import Data.Functor.Compose (Compose (..)) -import Data.Set (Set) -import qualified Data.Set as Set -import Test.Cardano.Ledger.Alonzo.Arbitrary () -import Test.Cardano.Ledger.Alonzo.Serialisation.Generators () -import qualified Test.QuickCheck.Property as QCP -import Test.Tasty -import Test.Tasty.QuickCheck - -tests :: TestTree -tests = testProperty "LangDepView encoding is canonical" (canonicalLangDepView @StandardCrypto) - -canonicalLangDepView :: forall c. Crypto c => PParams (AlonzoEra c) -> Set Language -> Property -canonicalLangDepView pparams langs = - let langViews = Set.fromList $ getLanguageView pparams <$> Set.toList langs - encodedViews = serialize (eraProtVerHigh @(AlonzoEra c)) $ encodeLangViews langViews - base16String = show (B16.encode $ LBS.toStrict encodedViews) - in counterexample base16String $ case isCanonical encodedViews of - Right () -> QCP.succeeded - Left message -> QCP.failed {QCP.reason = message} - -isCanonical :: LBS.ByteString -> Either String () -isCanonical bytes = - case decodeFullAnnotator (eraProtVerHigh @Alonzo) "Canonicity check" checkCanonicalTerm bytes of - Left err -> Left (show err) - Right x -> x - -checkCanonicalTerm :: Decoder s (Annotator (Either String ())) -checkCanonicalTerm = do - tt <- peekTokenType - let t _ = pure (Right ()) - failNotImplemented = - fail $ "canonicity check for " <> show tt <> " not implemented" - case tt of - TypeUInt -> t <$> decodeIntegerCanonical - TypeUInt64 -> t <$> decodeIntegerCanonical - TypeNInt -> t <$> decodeIntegerCanonical - TypeNInt64 -> t <$> decodeIntegerCanonical - TypeInteger -> t <$> decodeIntegerCanonical - TypeFloat16 -> t <$> decodeDoubleCanonical - TypeFloat32 -> t <$> decodeDoubleCanonical - TypeFloat64 -> t <$> decodeDoubleCanonical - TypeBytes -> t <$> decodeBytesCanonical - TypeBytesIndef -> fail "indefinite bytes encoding" - TypeString -> t <$> decodeStringCanonical - TypeStringIndef -> fail "indefinite string encoding" - TypeListLen -> t <$> checkCanonicalList - TypeListLen64 -> t <$> checkCanonicalList - TypeListLenIndef -> fail "indefinite list encoding" - TypeMapLen -> checkCanonicalMap - TypeMapLen64 -> checkCanonicalMap - TypeMapLenIndef -> fail "indefinite map encoding" - TypeTag -> failNotImplemented - TypeTag64 -> failNotImplemented - TypeBool -> t <$> decodeBool - TypeNull -> t <$> decodeNull - TypeSimple -> t <$> decodeSimpleCanonical - TypeBreak -> failNotImplemented - TypeInvalid -> failNotImplemented - -{- -- The keys in the map must be sorted as follows: - - If two keys have different lengths, the shorter one sorts earlier. - - If two keys have the same length, the one with the lower value - in (byte-wise) lexical order sorts earlier. --} - -shortLex :: ByteString -> ByteString -> Ordering -shortLex x y = case compare (LBS.length x) (LBS.length y) of - LT -> LT - GT -> GT - EQ -> compare (LBS.unpack x) (LBS.unpack y) - -checkCanonicalMap :: Decoder s (Annotator (Either String ())) -checkCanonicalMap = do - n <- decodeMapLenCanonical - keys <- replicateM n checkCanonicalKVPair - let keys' :: Annotator (Either String [ByteString]) - keys' = getCompose (traverse Compose keys) - pure $ - Annotator $ \fullBytes -> do - ks <- runAnnotator keys' fullBytes - unless (isSorted ks) (Left "map keys out of order") - -checkCanonicalList :: Decoder s (Annotator (Either String ())) -checkCanonicalList = do - len <- decodeListLenCanonical - checkedTerms <- replicateM len checkCanonicalTerm - pure $ void <$> getCompose (traverse Compose checkedTerms) - -isSorted :: [ByteString] -> Bool -isSorted [] = True -isSorted [_] = True -isSorted (x : xs@(y : _)) = case shortLex x y of - GT -> False - _ -> isSorted xs - -checkCanonicalKVPair :: Decoder s (Annotator (Either String ByteString)) -checkCanonicalKVPair = do - (key, keyBytes) <- withSlice checkCanonicalTerm - value <- checkCanonicalTerm - pure $ getCompose (Compose key *> Compose value *> Compose (Right <$> keyBytes)) diff --git a/eras/alonzo/test-suite/test/Test/Cardano/Ledger/Alonzo/Serialisation/Tripping.hs b/eras/alonzo/test-suite/test/Test/Cardano/Ledger/Alonzo/Serialisation/Tripping.hs deleted file mode 100644 index 41fbb781010..00000000000 --- a/eras/alonzo/test-suite/test/Test/Cardano/Ledger/Alonzo/Serialisation/Tripping.hs +++ /dev/null @@ -1,61 +0,0 @@ -{-# LANGUAGE AllowAmbiguousTypes #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Alonzo.Serialisation.Tripping where - -import Cardano.Ledger.Alonzo (Alonzo) -import Cardano.Ledger.Alonzo.Rules ( - AlonzoUtxoPredFailure, - AlonzoUtxosPredFailure, - AlonzoUtxowPredFailure, - ) -import Cardano.Ledger.Alonzo.Scripts (eqAlonzoScriptRaw) -import Cardano.Ledger.Block (Block) -import Cardano.Ledger.Core -import Cardano.Ledger.MemoBytes (zipMemoRawType) -import Cardano.Ledger.Plutus.Data (BinaryData, Data (..)) -import Cardano.Protocol.TPraos.BHeader (BHeader) -import Test.Cardano.Ledger.Alonzo.Arbitrary () -import Test.Cardano.Ledger.Alonzo.Serialisation.Generators () -import Test.Cardano.Ledger.Binary.Arbitrary () -import Test.Cardano.Ledger.Binary.RoundTrip -import Test.Cardano.Ledger.Shelley.ConcreteCryptoTypes -import Test.Cardano.Ledger.ShelleyMA.Serialisation.Generators () -import Test.Tasty -import Test.Tasty.QuickCheck - -tests :: TestTree -tests = - testGroup - "Alonzo CBOR round-trip" - [ skip $ - testProperty "alonzo/Script twiddled" $ - roundTripAnnTwiddledProperty @(Script Alonzo) eqAlonzoScriptRaw - , skip $ - testProperty "alonzo/Data twiddled" $ - roundTripAnnTwiddledProperty @(Data Alonzo) (zipMemoRawType (===)) - , skip $ - testProperty "alonzo/BinaryData twiddled" $ - roundTripTwiddledProperty @(BinaryData Alonzo) - , skip $ - testProperty "alonzo/TxBody twiddled" $ - roundTripAnnTwiddledProperty @(TxBody Alonzo) (zipMemoRawType (===)) - , testProperty "alonzo/AlonzoUtxowPredFailure" $ - roundTripCborExpectation @(AlonzoUtxowPredFailure Alonzo) - , testProperty "alonzo/AlonzoUtxoPredFailure" $ - roundTripCborExpectation @(AlonzoUtxoPredFailure Alonzo) - , testProperty "alonzo/AlonzoUtxosPredFailure" $ - roundTripCborExpectation @(AlonzoUtxosPredFailure Alonzo) - , testProperty "alonzo/Block" $ - roundTripAnnRangeExpectation @(Block (BHeader StandardCrypto) Alonzo) - (eraProtVerLow @Alonzo) - (eraProtVerHigh @Alonzo) - ] - where - skip _ = testProperty "Test skipped" True diff --git a/eras/alonzo/test-suite/test/Test/Cardano/Ledger/Alonzo/Translation.hs b/eras/alonzo/test-suite/test/Test/Cardano/Ledger/Alonzo/Translation.hs deleted file mode 100644 index 198c4eda602..00000000000 --- a/eras/alonzo/test-suite/test/Test/Cardano/Ledger/Alonzo/Translation.hs +++ /dev/null @@ -1,70 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE UndecidableInstances #-} -{-# OPTIONS_GHC -Wno-orphans #-} - -module Test.Cardano.Ledger.Alonzo.Translation ( - tests, -) -where - -import Cardano.Ledger.Alonzo (Alonzo) -import Cardano.Ledger.BaseTypes hiding ((==>)) -import Cardano.Ledger.Mary (Mary) -import Cardano.Ledger.Shelley.Core -import Cardano.Ledger.Shelley.PParams -import Lens.Micro -import Test.Cardano.Ledger.AllegraEraGen () -import Test.Cardano.Ledger.Binary.RoundTrip -import Test.Cardano.Ledger.Mary.Arbitrary () -import Test.Cardano.Ledger.Shelley.Generator.ShelleyEraGen () -import Test.Cardano.Ledger.Shelley.Serialisation.EraIndepGenerators () -import Test.Cardano.Ledger.Shelley.Serialisation.Generators () -import Test.Cardano.Ledger.ShelleyMA.Serialisation.Generators () -import Test.QuickCheck ((==>)) -import Test.QuickCheck.Monadic -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.QuickCheck (testProperty) - -tests :: TestTree -tests = - testGroup - "Translation" - [ alonzoEncodeDecodeTests - ] - -alonzoEncodeDecodeTests :: TestTree -alonzoEncodeDecodeTests = - testGroup - "encoded mary types can be decoded as alonzo types" - [ testProperty "decoding auxilliary" $ - embedTripAnnExpectation @(TxAuxData Mary) @(TxAuxData Alonzo) - (eraProtVerLow @Mary) - (eraProtVerLow @Alonzo) - (\_ _ -> pure ()) - , testProperty "decoding txbody" $ \txBody -> - let hasDeprecatedField = - case txBody ^. updateTxBodyL of - SNothing -> False - SJust (Update (ProposedPPUpdates ups) _) -> - any (\ppu -> isSJust (ppu ^. ppuMinUTxOValueL)) ups - in not hasDeprecatedField ==> - monadicIO - ( run $ - embedTripAnnExpectation @(TxBody Mary) @(TxBody Alonzo) - (eraProtVerLow @Mary) - (eraProtVerLow @Alonzo) - (\_ _ -> pure ()) - txBody - ) - , testProperty "decoding witnesses" $ - embedTripAnnExpectation @(TxWits Mary) @(TxWits Alonzo) - (eraProtVerLow @Mary) - (eraProtVerLow @Alonzo) - (\_ _ -> pure ()) - ] diff --git a/eras/alonzo/test-suite/test/Test/Cardano/Ledger/Alonzo/TxInfo.hs b/eras/alonzo/test-suite/test/Test/Cardano/Ledger/Alonzo/TxInfo.hs deleted file mode 100644 index c650875edf5..00000000000 --- a/eras/alonzo/test-suite/test/Test/Cardano/Ledger/Alonzo/TxInfo.hs +++ /dev/null @@ -1,148 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Test.Cardano.Ledger.Alonzo.TxInfo ( - tests, -) where - -import Cardano.Ledger.Address (Addr (..), BootstrapAddress (..)) -import Cardano.Ledger.Alonzo (Alonzo) -import Cardano.Ledger.Alonzo.Core -import Cardano.Ledger.Alonzo.Plutus.Context (ContextError, toPlutusTxInfo) -import Cardano.Ledger.Alonzo.Plutus.TxInfo (transValidityInterval) -import Cardano.Ledger.Alonzo.Tx (AlonzoTx (..), IsValid (..)) -import Cardano.Ledger.Alonzo.TxBody (AlonzoTxBody (..), AlonzoTxOut (..)) -import Cardano.Ledger.BaseTypes (Network (..), StrictMaybe (..), natVersion) -import qualified Cardano.Ledger.BaseTypes as BT (ProtVer (..)) -import Cardano.Ledger.Coin (Coin (..)) -import Cardano.Ledger.Credential (StakeReference (..)) -import Cardano.Ledger.Crypto (StandardCrypto) -import Cardano.Ledger.Plutus.Language (SLanguage (..)) -import Cardano.Ledger.TxIn (TxIn (..), mkTxInPartial) -import Cardano.Ledger.UTxO (UTxO (..)) -import qualified Cardano.Ledger.Val as Val -import Cardano.Slotting.EpochInfo (EpochInfo, fixedEpochInfo) -import Cardano.Slotting.Slot (EpochSize (..), SlotNo (..)) -import Cardano.Slotting.Time (SystemStart (..), mkSlotLength) -import Data.Default.Class (def) -import qualified Data.Map.Strict as Map -import qualified Data.Sequence.Strict as StrictSeq -import qualified Data.Set as Set -import Data.Time.Clock.POSIX (posixSecondsToUTCTime) -import Lens.Micro -import qualified PlutusLedgerApi.V1 as PV1 -import Test.Cardano.Ledger.Shelley.Address.Bootstrap (aliceByronAddr) -import Test.Cardano.Ledger.Shelley.Examples.Cast (alicePHK) -import Test.Cardano.Ledger.Shelley.Generator.EraGen (genesisId) -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.HUnit (Assertion, assertFailure, testCase, (@?=)) - -byronAddr :: Addr StandardCrypto -byronAddr = AddrBootstrap (BootstrapAddress aliceByronAddr) - -shelleyAddr :: Addr StandardCrypto -shelleyAddr = Addr Testnet alicePHK StakeRefNull - -ei :: EpochInfo (Either a) -ei = fixedEpochInfo (EpochSize 100) (mkSlotLength 1) - -ss :: SystemStart -ss = SystemStart $ posixSecondsToUTCTime 0 - --- This input is only a "Byron input" in the sense --- that we attach it to a Byron output in the UTxO created below. -byronInput :: TxIn StandardCrypto -byronInput = mkTxInPartial genesisId 0 - --- This input is only a "Shelley input" in the sense --- that we attach it to a Shelley output in the UTxO created below. -shelleyInput :: TxIn StandardCrypto -shelleyInput = mkTxInPartial genesisId 1 - -byronOutput :: TxOut Alonzo -byronOutput = AlonzoTxOut byronAddr (Val.inject $ Coin 1) SNothing - -shelleyOutput :: TxOut Alonzo -shelleyOutput = AlonzoTxOut shelleyAddr (Val.inject $ Coin 2) SNothing - -utxo :: UTxO Alonzo -utxo = UTxO $ Map.fromList [(byronInput, byronOutput), (shelleyInput, shelleyOutput)] - -txb :: TxIn StandardCrypto -> TxOut Alonzo -> TxBody Alonzo -txb i o = - AlonzoTxBody - (Set.singleton i) -- inputs - mempty -- collateral - (StrictSeq.singleton o) -- outputs - mempty -- certs - (Withdrawals mempty) -- withdrawals - (Coin 2) -- txfee - (ValidityInterval SNothing SNothing) -- validity interval - SNothing -- updates - mempty -- required signers - mempty -- mint - SNothing -- script integrity hash - SNothing -- auxiliary data hash - SNothing -- network ID - -txEx :: TxIn StandardCrypto -> TxOut Alonzo -> Tx Alonzo -txEx i o = AlonzoTx (txb i o) mempty (IsValid True) SNothing - -silentlyIgnore :: Tx Alonzo -> Assertion -silentlyIgnore tx = - case toPlutusTxInfo SPlutusV1 def ei ss utxo tx of - Right _ -> pure () - Left e -> assertFailure $ "no translation error was expected, but got: " <> show e - --- | The test checks that the old implementation of 'transVITime' stays intentionally incorrect, --- by returning close upper bound of the validaty interval. -transVITimeUpperBoundIsClosed :: Assertion -transVITimeUpperBoundIsClosed = do - let interval = ValidityInterval SNothing (SJust (SlotNo 40)) - case transValidityInterval (def :: PParams Alonzo) ei ss interval of - Left (e :: ContextError Alonzo) -> - assertFailure $ "no translation error was expected, but got: " <> show e - Right t -> - t - @?= ( PV1.Interval - (PV1.LowerBound PV1.NegInf True) - (PV1.UpperBound (PV1.Finite (PV1.POSIXTime 40000)) True) - ) - --- | The test checks that since protocol version 9 'transVITime' works correctly, --- by returning open upper bound of the validaty interval. -transVITimeUpperBoundIsOpen :: Assertion -transVITimeUpperBoundIsOpen = do - let interval = ValidityInterval SNothing (SJust (SlotNo 40)) - case transValidityInterval - (def & ppProtocolVersionL .~ BT.ProtVer (natVersion @9) 0 :: PParams Alonzo) - ei - ss - interval of - Left (e :: ContextError Alonzo) -> - assertFailure $ "no translation error was expected, but got: " <> show e - Right t -> - t - @?= ( PV1.Interval - (PV1.LowerBound PV1.NegInf True) - (PV1.UpperBound (PV1.Finite (PV1.POSIXTime 40000)) False) - ) - -tests :: TestTree -tests = - testGroup - "txInfo translation" - [ testGroup - "Plutus V1" - [ testCase "silently ignore byron txout" $ - silentlyIgnore (txEx shelleyInput byronOutput) - , testCase "silently ignore byron txin" $ - silentlyIgnore (txEx byronInput shelleyOutput) - ] - , testGroup - "transVITime" - [ testCase "validity interval's upper bound is close when protocol < 9" transVITimeUpperBoundIsClosed - , testCase "validity interval's upper bound is open when protocol >= 9" transVITimeUpperBoundIsOpen - ] - ] diff --git a/eras/alonzo/test-suite/test/Tests.hs b/eras/alonzo/test-suite/test/Tests.hs deleted file mode 100644 index 4100064a9eb..00000000000 --- a/eras/alonzo/test-suite/test/Tests.hs +++ /dev/null @@ -1,59 +0,0 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - -module Main where - -import Cardano.Ledger.Alonzo (AlonzoEra) -import Cardano.Ledger.Alonzo.Rules (AlonzoLEDGER) -import Data.Proxy (Proxy (..)) -import System.Environment (lookupEnv) -import qualified Test.Cardano.Ledger.Alonzo.ChainTrace as ChainTrace -import qualified Test.Cardano.Ledger.Alonzo.Golden as Golden -import qualified Test.Cardano.Ledger.Alonzo.GoldenTranslation as GoldenTranslation -import qualified Test.Cardano.Ledger.Alonzo.PlutusScriptExamples as PlutusScriptExamples -import qualified Test.Cardano.Ledger.Alonzo.Serialisation.Canonical as Canonical -import qualified Test.Cardano.Ledger.Alonzo.Serialisation.Tripping as Tripping -import qualified Test.Cardano.Ledger.Alonzo.Translation as Translation -import qualified Test.Cardano.Ledger.Alonzo.TxInfo as TxInfo -import Test.Cardano.Ledger.EraBuffet (TestCrypto) -import qualified Test.Cardano.Ledger.Shelley.PropertyTests as Shelley -import qualified Test.Cardano.Ledger.Shelley.Rules.AdaPreservation as AdaPreservation -import qualified Test.Cardano.Ledger.Shelley.Rules.IncrementalStake as IncrementalStake -import Test.Tasty - -type A = AlonzoEra TestCrypto - -main :: IO () -main = do - nightly <- lookupEnv "NIGHTLY" - defaultMain $ case nightly of - Nothing -> defaultTests - Just _ -> nightlyTests - -defaultTests :: TestTree -defaultTests = - testGroup - "Alonzo tests" - [ AdaPreservation.tests @A @(AlonzoLEDGER A) 50 - , Tripping.tests - , Translation.tests - , Canonical.tests - , Golden.tests - , GoldenTranslation.tests - , PlutusScriptExamples.tests - , TxInfo.tests - ] - -nightlyTests :: TestTree -nightlyTests = - testGroup - "Alonzo tests - nightly" - $ Shelley.commonTests @A @(AlonzoLEDGER A) - ++ [ IncrementalStake.incrStakeComparisonTest (Proxy :: Proxy A) - , ChainTrace.tests - ] diff --git a/eras/babbage/formal-spec/IOHKCoverPage.sty b/eras/babbage/formal-spec/IOHKCoverPage.sty deleted file mode 100644 index b99545a71e5..00000000000 --- a/eras/babbage/formal-spec/IOHKCoverPage.sty +++ /dev/null @@ -1,265 +0,0 @@ -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{IOHKCoverPage}[2019/09/12] - -\RequirePackage{fancyhdr} -%\RequirePackage{xcolor} - -\newif\if@deliverable -\newif\if@teamreport -\newif\if@wpreport -\newif\if@techreport -\DeclareOption{deliverable} - {\@deliverabletrue} -\DeclareOption{teamreport} - {\@teamreporttrue} -\DeclareOption{wpreport} - {\@wpreporttrue} -\DeclareOption{techreport} - {\@techreporttrue} - \ProcessOptions -% -\def\IOHK{IOHK} -% -\def\reportnumber#1{\def\@reportnumber{#1}} -\def\reportmonth#1{\def\@reportmonth{#1}} -\def\reportyear#1{\def\@reportyear{#1}} -\def\email#1{\def\@email{#1}} -\def\@reportnumber{?} -\def\@reportmonth{} -\def\@reportyear{} -% -\def\Project#1{\def\@Project{#1}} -\def\ReportNumber#1{\def\@ReportNumber{#1}} -\def\DeliverableNumber#1{\def\@DeliverableNumber{#1}} -\def\DeliverableTitle#1#2{\def\@DeliverableTitle{#1}\def\@ShortDelTitle{#2}} -\def\DueDate#1{\def\@DueDate{#1}} -%% should be possible to convert! KH -\def\SubmissionDate#1#2{\def\@SubmissionDate{#1}\def\@ShortSubmissionDate{#2}} -\def\VersionDate#1{\def\@VersionDate{#1}} -\def\LeaderName#1{\def\@LeaderName{#1}} -\def\Authors#1{\def\@Authors{#1}} -\def\DeliverableResponsible#1{\def\@DeliverableResponsible{#1}} -\def\Institution#1{\def\@Institution{#1}} -\def\InstitutionAddress#1{\def\@InstitutionAddress{#1}} -\def\EditorName#1{\def\@EditorName{#1}} -\def\WorkPackage#1{\def\@WorkPackage{#1}} -\def\TaskNumber#1{\def\@TaskNumber{{\@emph Task number:} #1}} -\def\Version#1{\def\@Version{#1}} -\def\SVNRevision#1{\def\@SVNRevision{#1}} -\def\LastEditor#1{\def\@LastEditor{#1}} -%\def\Reviewers#1{\def\@ReviewersTitle{\@bold Reviewers:}\def\@Reviewers{#1}} -\def\Reviewers#1{\@Reviewerstrue\def\@Reviewers{#1}} -\def\LastDate#1{\def\@LastDate{#1}} -\def\DisseminationPU{\def\@IsPU{$\surd$}} -\def\DisseminationCO{\def\@IsCO{$\surd$}} -\def\DisseminationDR{\def\@IsDR{$\surd$}} -\newcommand{\Revision}[5]{\@writefile{cov}{\hline \hfil #1\hfil\\}} -\newcommand{\Task}[3]{\@Taskstrue\@writefile{par}{\hline #1\\}} - -\def\@Project{Cardano} -\def\@Authors{XXXX} -\def\@ReportNumber{XXXX} -\def\@DeliverableNumber{XXXX} -\def\@DeliverableTitle{XXXX} -\def\@ShortDelTitle{\@DeliverableTitle} -\def\@DueDate{XXXX} -\def\@SubmissionDate{XXXX} -\def\@ShortSubmissionDate{\@SubmissionDate} -\def\@LeaderName{XXXX} -\def\@DeliverableResponsible{XXXX} -\def\@Institution{XXXX} -\def\@InstitutionAddress{XXXX} -\def\@EditorName{XXXX} -\def\@WorkPackage{XXXX} -\def\@TaskNumber{~} -\def\@Version{XXXX} -\def\@SVNRevision{XXXX} -\def\@LastEditor{XXXX} -\def\@Reviewers{~} -\newif\if@Reviewers -\newif\if@Tasks -\@Tasksfalse -\def\@LastDate{XXXX} -\def\@IsPP{} -\def\@IsPU{} -\def\@IsRE{} -\def\@IsCO{} -\def\@Revision{} -\def\@Task{} - -%%cover fonts -\def\@ProjFont{\fontsize{24}{28}\usefont{T1}{ptm}{b}{n}\selectfont} -\def\@TitleFont{\fontsize{18}{24}\usefont{T1}{ptm}{b}{n}\selectfont} -\def\@Large{\fontsize{18}{21}\usefont{T1}{ptm}{m}{n}\selectfont} -\def\@Small{\fontsize{9}{11}\usefont{T1}{ptm}{m}{n}\selectfont} -\def\@font{\fontsize{12}{12}\usefont{T1}{ptm}{m}{n}\selectfont} -\def\@sc{\fontshape{sc}\selectfont} -\def\@emph{\fontshape{sl}\selectfont} -\def\@bold{\fontseries{b}\selectfont} - - -\newdimen\@CoverPageWidth -\newdimen\@CoverPageHeight -\newdimen\@TableWidth -\@CoverPageWidth=\paperwidth -\@CoverPageHeight=\paperheight -\@TableWidth=\paperwidth -\advance\@CoverPageWidth by -1.5in -\advance\@CoverPageHeight by -2in -\advance\@TableWidth by -5cm -\newdimen\TableWidth -\TableWidth=\@TableWidth - - -\newcommand{\@CoverBody}{ -\@font -\parbox{\linewidth}{\centering - \vspace{15mm} -% {Project no. 644235}\par - \vspace{6mm} - {\@ProjFont \Project{}}\par - \vspace{6mm} -% {Research \& Innovation Action (RIA)}\par -% {\@sc \large{\textbf{Refactoring Parallel Heterogeneous Resource-Aware Applications -- a Software Engineering Approach}}}\par - \vspace{10mm} - \if@deliverable - {\@TitleFont \@DeliverableTitle\\ - \vspace{18mm} - {Deliverable }\@DeliverableNumber}\par - \vspace{16mm} - \begin{large} - \begin{center} - {\@Authors } - \end{center} - \end{large} - \par - \vspace{1cm} -% \begin{tabular}{r@{: }l} -% Due date of deliverable& \@DueDate\\ -% Actual submission date& \@SubmissionDate -% \end{tabular} - \par - \fi - \if@techreport - {\@TitleFont \@DeliverableTitle\\ - \vspace{3mm}} - {\Project{} Technical Report \# \@ReportNumber}\par - \vspace{6mm} - {\@Authors \vspace{1cm} }\par - \fi - -} -\parbox{\linewidth}{\flushright - \vspace{10mm} - \if@techreport - Report Registration Date: \@SubmissionDate - \else - {\@emph Project:} \@Project \par - \vspace{5mm} - \fi - \if@deliverable - {\@emph Type:} Deliverable\par - {\@emph Due Date:} \@DueDate\par - % {\@emph WP number:} \@WorkPackage\par - %{\@TaskNumber}\par - \vspace{5mm} - {\@emph Responsible team:} \@DeliverableResponsible\par - {\@emph Editor:} \@EditorName\par - {\@emph Team Leader:} \@LeaderName\par - \fi - \if@teamreport - \vspace{5mm} - {\@emph Report type:} Team Leader's Progress Report\par - \vspace{5mm} - {\@emph Name of Team leader:} \@LeaderName\par - {\@emph Institution \& address:} \@InstitutionAddress\par - \fi - \if@wpreport - {\@emph Report type:} WP Leader's Progress Report\par - {\@emph WP number:} \@WorkPackage\par - \vspace{5mm} - {\@emph Name of WP leader:} \@LeaderName\par - {\@emph Institution \& address:} \@InstitutionAddress\par - \fi -} -\vfill -\parbox{\linewidth}{\centering -{Version \@Version}\par - {\@SubmissionDate}\par - \vspace{5mm}} -{ -\newdimen\@msize -\@msize=\linewidth -\advance\@msize by -1cm -\advance\@msize by -6\tabcolsep -\begin{tabular}{ | p{0.7cm} | p{\@msize} | p{0.3cm} |} - \hline - \multicolumn{3}{|c|}{{\@bold Dissemination Level}}\\ - \hline - {\@bold PU} & Public & \@IsPU\\ - \hline - {{\@bold CO}} & Confidential, only for company distribution & \@IsCO\\ - \hline - {\@bold DR} & Draft, not for general circulation & \@IsDR\\ - \hline - \end{tabular} - } -} - -\newcommand{\@PrintCoverPage}{\bgroup\global\setbox255\vbox{% - \vspace*{-.25in}% - \noindent\hspace*{-.25in}% - \renewcommand{\thepage}{\roman{page}} - \pagestyle{myheadings} \markboth{}{} - - \rlap{ - \begin{minipage}[t][\@CoverPageHeight][t]{\@CoverPageWidth}% - \parbox{\linewidth}{ - \begin{minipage}[c]{6cm} - \includegraphics[width=6cm]{iohk-share-logo.jpg} - \end{minipage} - \hfill -% \begin{minipage}[c]{3.5cm} -% \includegraphics[width=3.5cm]{figures/H2020.jpg} -% \end{minipage} - } - \@CoverBody - \end{minipage} - }% -}\egroup\shipout\box255} - - -\newcommand{\@PrintBackCoverPage}{% -\pagestyle{myheadings}% -\markboth{\@Project: \@ShortDelTitle~(v.\@Version, \@ShortSubmissionDate)}% - {\@Project: \@ShortDelTitle~(v.\@Version, \@ShortSubmissionDate)}% -} - - - -\AtBeginDocument{\@PrintCoverPage\@PrintBackCoverPage% - \renewcommand{\thepage}{\roman{page}}% -% \setcounter{page}{1}% -} - -%% Added change log -- KH - -\newcounter{change} - -\newenvironment{changelog}{% -\clearpage -\setcounter{change}{0} -\section*{Change Log} -% -\begin{tabular}{||p{0.8cm}|p{1.6cm}|p{3cm}|p{1.5cm}|p{7.6cm}||}% -\hline\hline% -\textbf{Rev.} & \textbf{Date} & \textbf{Who} & \textbf{Team} & \textbf{What}% -}{% -\\\hline\hline% -\end{tabular}% -\clearpage% -} - -\newcommand{\change}[4]{\stepcounter{change}% -\\\hline% -\arabic{change}} diff --git a/eras/babbage/formal-spec/Makefile b/eras/babbage/formal-spec/Makefile deleted file mode 100644 index ef068aa8650..00000000000 --- a/eras/babbage/formal-spec/Makefile +++ /dev/null @@ -1,43 +0,0 @@ -## -## Makefile for a specification of the delegation rules, based on: -## -## https://tex.stackexchange.com/questions/40738/how-to-properly-make-a-latex-project -## - -# Document name -ifndef DOCNAME - DOCNAME = babbage-ledger -endif - -# You want latexmk to *always* run, because make does not have all the info. -# Also, include non-file targets in .PHONY so they are run regardless of any -# file of the given name existing. -.PHONY: $(DOCNAME).pdf all clean - -# The first rule in a Makefile is the one executed by default ("make"). It -# should always be the "all" rule, so that "make" and "make all" are identical. -all: $(DOCNAME).pdf - -## -## CUSTOM BUILD RULES -## - -## -## MAIN LATEXMK RULE -## - -# -pdf tells latexmk to generate PDF directly (instead of DVI). -# -pdflatex="" tells latexmk to call a specific backend with specific options. -# -use-make tells latexmk to call make for generating missing files. - -# -interaction=nonstopmode keeps the pdflatex backend from stopping at a -# missing file reference and interactively asking you for an alternative. - -$(DOCNAME).pdf: $(DOCNAME).tex - latexmk -pdf -pdflatex="pdflatex -synctex=1 -interaction=nonstopmode" -use-make $(DOCNAME).tex - -watch: $(DOCNAME).tex - latexmk -pvc -pdf -pdflatex="pdflatex -synctex=1 -interaction=nonstopmode" -use-make $(DOCNAME).tex - -clean: - latexmk -CA diff --git a/eras/babbage/formal-spec/babbage-ledger.tex b/eras/babbage/formal-spec/babbage-ledger.tex deleted file mode 100644 index 99156d9e23f..00000000000 --- a/eras/babbage/formal-spec/babbage-ledger.tex +++ /dev/null @@ -1,384 +0,0 @@ -\documentclass[11pt,a4paper,dvipsnames]{article} -% \usepackage[deliverable]{IOHKCoverPage} - - -\usepackage[margin=2.5cm]{geometry} -\usepackage{iohk} -\usepackage{microtype} -\usepackage{mathpazo} % nice fonts -\usepackage{amsmath} -\usepackage{amssymb} -\usepackage{amsthm} -\usepackage{latexsym} -\usepackage{mathtools} -\usepackage{stmaryrd} -\usepackage{extarrows} -\usepackage{slashed} -\usepackage[colon]{natbib} -\usepackage[unicode=true,pdftex,pdfa,colorlinks=true]{hyperref} -\usepackage{xcolor} -\usepackage[capitalise,noabbrev,nameinlink]{cleveref} -\usepackage{float} -\floatstyle{boxed} -\restylefloat{figure} -\usepackage{tikz} -\usepackage{booktabs} -\usepackage{enumerate} -\usepackage{comments} \newcommand{\khcomment}[1]{\comment{KH}{#1}} - - -%% -%% Package `semantic` can be used for writing inference rules. -%% -\usepackage{semantic} -%% Setup for the semantic package -\setpremisesspace{20pt} - -% % data for Deliverable header -- added by KH from an EU H2020 project template -% \DeliverableNumber{GL-D2} -% \DeliverableTitle{A Formal Specification of the Cardano Ledger integrating Plutus Core}{Formal Spec: Cardano Ledger with Plutus Core} -% \DeliverableResponsible{Formal Methods Team} -% \EditorName{Andre Knispel, \IOHK} -% \Authors{ -% Andre Knispel \quad \texttt{andre.knispel@iohk.io}\\ -% Polina Vinogradova \quad \texttt{polina.vinogradova@iohk.io} -% % I think Andre is the main author of this document? KH -% } -% \DueDate{28$^{\textrm{th}}$ February 2021} -% \SubmissionDate{}{} -% \LeaderName{Philipp Kant, \IOHK} -% \InstitutionAddress{\IOHK} -% \Version{FS-2.2.0} -% \Project{Goguen Ledger} -% \DisseminationDR - -%% -%% Types -%% -\newcommand{\Nothing}{\ensuremath{\Diamond}} -\newcommand{\N}{\ensuremath{\mathbb{N}}} -\newcommand{\Bool}{\type{Bool}} -\newcommand{\Npos}{\ensuremath{\mathbb{N}^{+}}} -\newcommand{\Z}{\ensuremath{\mathbb{Z}}} -\newcommand{\R}{\ensuremath{\mathbb{R}}} -\newcommand{\Rnn}{\ensuremath{\mathbb{R}^{\geq 0}}} -\newcommand{\Tx}{\type{Tx}} -\newcommand{\ShelleyTx}{\type{ShelleyTx}} -\newcommand{\GoguenTx}{\type{GoguenTx}} -\newcommand{\TxBody}{\type{TxBody}} -\newcommand{\UnsignedData}{\type{UnsignedData}} -\newcommand{\VldSR}{\type{VldSR}} -\newcommand{\VldOut}{\type{VldOut}} -\newcommand{\Vlds}{\type{Vlds}} -\newcommand{\TxWitness}{\type{TxWitness}} -\newcommand{\Ix}{\type{Ix}} -\newcommand{\RdmrPtr}{\type{RdmrPtr}} -\newcommand{\TxId}{\type{TxId}} -\newcommand{\Addr}{\type{Addr}} -\newcommand{\UTxO}{\type{UTxO}} -\newcommand{\UTxOIn}{\type{UTxOIn}} -\newcommand{\Wdrl}{\type{Wdrl}} -\newcommand{\Coin}{\type{Coin}} -\newcommand{\PParams}{\type{PParams}} -\newcommand{\ShelleyPParams}{\type{ShelleyPParams}} -\newcommand{\NewParams}{\type{NewParams}} -\newcommand{\Slot}{\type{Slot}} -\newcommand{\MemoryEstimate}{\type{MemoryEstimate}} -\newcommand{\UTCTime}{\type{UTCTime}} -\newcommand{\SlotsPrior}{\ensuremath{\mathsf{SlotsPrior}}} -\newcommand{\SlotsPerEpoch}{\mathsf{SlotsPerEpoch}} -\newcommand{\SlotsPerKESPeriod}{\mathsf{SlotsPerKESPeriod}} -\newcommand{\SlotsStabilityParam}{\fun{k}} -\newcommand{\Duration}{\type{Duration}} -\newcommand{\StakePools}{\type{StakePools}} -\newcommand{\StakeDeleg}{\type{StakeDeleg}} -\newcommand{\StakeCreds}{\type{StakeCreds}} -\newcommand{\Seed}{\type{Seed}} -\newcommand{\seedOp}{\star} -\newcommand{\Ppm}{\type{Ppm}} -\newcommand{\Tppm}{\mathsf{T_{ppm}}} -\newcommand{\Value}{\type{Value}} -\newcommand{\ProtVer}{\ensuremath{\type{ProtVer}}} -\newcommand{\Language}{\type{Language}} -\newcommand{\ApName}{\ensuremath{\type{ApName}}} -\newcommand{\ApVer}{\ensuremath{\type{ApVer}}} -\newcommand{\SystemTag}{\ensuremath{\type{SystemTag}}} -\newcommand{\InstallerHash}{\ensuremath{\type{InstallerHash}}} -\newcommand{\PPUpdate}{\type{PPUpdate}} -\newcommand{\Applications}{\type{Applications}} -\newcommand{\AVUpdate}{\type{AVUpdate}} -\newcommand{\Update}{\type{Update}} -\newcommand{\DCert}{\type{DCert}} -\newcommand{\DCertRegKey}{\type{DCert_{regkey}}} -\newcommand{\DCertDeRegKey}{\type{DCert_{deregkey}}} -\newcommand{\DCertDeleg}{\type{DCert_{delegate}}} -\newcommand{\DCertRegPool}{\type{DCert_{regpool}}} -\newcommand{\DCertRetirePool}{\type{DCert_{retirepool}}} -\newcommand{\DCertGen}{\type{DCert_{genesis}}} -\newcommand{\DCertMir}{\type{DCert_{mir}}} -\newcommand{\PoolParam}{\type{PoolParam}} -\newcommand{\UTxOState}{\ensuremath{\type{UTxOState}}} -\newcommand{\SFState}{\ensuremath{\type{SFState}}} -\newcommand{\ledgerState}{\ensuremath{\type{ledgerState}}} -\newcommand{\ValEnv}{\type{ValEnv}} -\newcommand{\ValState}{\type{ValState}} -\newcommand{\ScrInData}{\type{ScrInData}} -\newcommand{\AddrRWD}{\type{Addr_{rwd}}} -\newcommand{\AddrB}{\type{Addr_{base}}} -\newcommand{\AddrP}{\type{Addr_{ptr}}} -\newcommand{\AddrE}{\type{Addr_{enterprise}}} -\newcommand{\AddrBS}{\type{Addr_{bootstrap}}} -\newcommand{\Ptr}{\type{Ptr}} -\newcommand{\DState}{\type{DState}} -\newcommand{\DWEnv}{\type{DWEnv}} -\newcommand{\DPSEnv}{\type{DPSEnv}} -\newcommand{\DPEnv}{\type{DPEnv}} -\newcommand{\DEnv}{\type{DEnv}} -\newcommand{\PEnv}{\type{PEnv}} -\newcommand{\DPState}{\type{DPState}} -\newcommand{\PState}{\type{PState}} -\newcommand{\DCertBody}{\type{DCertBody}} -\newcommand{\TData}{\type{TData}} -\newcommand{\DPoolReap}{\ensuremath{\type{poolreap}}} -\newcommand{\UPIState}{\type{UPIState}} -\newcommand{\UpdatePayload}{\type{UpdatePayload}} -\newcommand{\NetworkId}{\mathsf{NetworkId}} - -% multi-signature -\newcommand{\StakeCredential}{\type{Credential}_{stake}} -\newcommand{\StakeDelegs}{\type{StakeDelegs}} -\newcommand{\Quorum}{\type{Quorum}} - -\newcommand{\txwitsVKey}[1]{\fun{txwitsVKey}~\var{#1}} -\newcommand{\txwitsScript}[1]{\fun{txwitsScript}~\var{#1}} - -\newcommand{\AddrVKey}{\type{Addr^{vkey}}} -\newcommand{\AddrRWDVKey}{\type{Addr_{rwd}^{vkey}}} -\newcommand{\AddrRWDScr}{\type{Addr_{rwd}^{script}}} -\newcommand{\AddrVKeyB}{\type{Addr^{vkey}_{base}}} -\newcommand{\AddrVKeyP}{\type{Addr^{vkey}_{ptr}}} -\newcommand{\AddrVKeyE}{\type{Addr^{vkey}_{enterprise}}} -\newcommand{\AddrVKeyBS}{\type{Addr^{vkey}_{bootstrap}}} -\newcommand{\AddrScr}{\type{Addr^{script}}} -\newcommand{\AddrScrBase}{\type{Addr_{base}^{script}}} -\newcommand{\AddrScrEnterprise}{\type{Addr_{enterprise}^{script}}} -\newcommand{\AddrScrPtr}{\type{Addr_{ptr}^{script}}} -\newcommand{\AuxiliaryDataHash}{\type{AuxiliaryDataHash}} -\newcommand{\AuxiliaryData}{\type{AuxiliaryData}} -\newcommand{\Metadata}{\type{Metadata}} -\newcommand{\DataHash}{\type{DataHash}} -\newcommand{\TxInfo}{\type{TxInfo}} -\newcommand{\Datum}{\type{Datum}} -\newcommand{\Redeemer}{\type{Redeemer}} -\newcommand{\EpochInfo}{\type{EpochInfo}} -\newcommand{\SystemStart}{\type{SystemStart}} -\newcommand{\ScriptHash}{\type{ScriptHash}} -\newcommand{\PolicyID}{\type{PolicyID}} -\newcommand{\LangDepView}{\type{LangDepView}} -\newcommand{\ScriptIntegrityHash}{\type{ScriptIntegrityHash}} -\newcommand{\Script}{\type{Script}} -\newcommand{\ScriptPlutus}{\type{Script}_{plc}} -\newcommand{\PlutusVI}{\type{PlutusV1}} -\newcommand{\PlutusVII}{\type{PlutusV2}} -\newcommand{\ScriptPhOne}{\type{Script^{ph1}}} -\newcommand{\ScriptPhTwo}{\type{Script^{ph2}}} -\newcommand{\ScriptV}{\type{Script_{v}}} -\newcommand{\ScriptPurpose}{\type{ScriptPurpose}} -\newcommand{\Rdmrs}{\type{Rdmrs}} -\newcommand{\DorR}{\type{DorR}} -\newcommand{\ValidationData}{\type{ValidationData}} -\newcommand{\IsValid}{\type{IsValid}} -\newcommand{\HashUnsData}{\type{HashUnsData}} -\newcommand{\True}{\mathsf{True}} -\newcommand{\False}{\mathsf{False}} -\newcommand{\MSig}{\type{MSig}} -\newcommand{\Tag}{\type{Tag}} -\newcommand{\Credential}{\type{Credential}} -\newcommand{\AssetID}{\type{AssetID}} - -%% Adding witnesses -\newcommand{\AssetName}{\type{AssetName}} -\newcommand{\Quantity}{\type{Quantity}} -\newcommand{\TxIn}{\type{TxIn}} -\newcommand{\OutRef}{\type{OutRef}} -\newcommand{\ShelleyTxIn}{\type{ShelleyTxIn}} -\newcommand{\ShelleyTxOut}{\type{ShelleyTxOut}} -\newcommand{\ShelleyUTxO}{\type{ShelleyUTxO}} -\newcommand{\ShelleyChainState}{\type{ShelleyChainState}} -\newcommand{\HasDV}{\type{HasDV}} -\newcommand{\TxInScr}{\type{TxInScr}} -\newcommand{\Info}{\type{Info}} -\newcommand{\ExUnits}{\type{ExUnits}} -\newcommand{\CostMod}{\type{CostModel}} -\newcommand{\ByteString}{\type{ByteString}} -\newcommand{\ValidityInterval}{\type{ValidityInterval}} -\newcommand{\Network}{\type{Network}} -\newcommand{\Prices}{\type{Prices}} -\newcommand{\IsFee}{\type{IsFee}} -\newcommand{\TxOut}{\type{TxOut}} -\newcommand{\OutFoo}{\type{OutFoo}} -\newcommand{\VKey}{\type{VKey}} -\newcommand{\VKeyEv}{\type{VKey_{ev}}} -\newcommand{\VKeyGen}{\type{VKey_G}} -\newcommand{\SKey}{\type{SKey}} -\newcommand{\SKeyEv}{\type{SKey_{ev}}} -\newcommand{\KeyHash}{\type{KeyHash}} -\newcommand{\RewardAcnt}{\type{RewardAcnt}} -\newcommand{\KeyHashGen}{\type{KeyHash_G}} -\newcommand{\KeyPair}{\type{KeyPair}} -\newcommand{\KeyPairEv}{\type{KeyPair_{ev}}} -\newcommand{\Sig}{\type{Sig}} -\newcommand{\Data}{\type{Data}} -%% Adding delegation -\newcommand{\Epoch}{\type{Epoch}} -\newcommand{\KESPeriod}{\type{KESPeriod}} -%% Blockchain -\newcommand{\Gkeys}{\var{G_{keys}}} -\newcommand{\Block}{\type{Block}} -\newcommand{\SlotId}{\type{SlotId}} -\newcommand{\PPUpdateEnv}{\type{PPUpdateEnv}} -\newcommand{\AVUpdateEnv}{\type{AVUpdateEnv}} -\newcommand{\AVUpdateState}{\type{AVUpdateState}} -\newcommand{\UpdateEnv}{\type{UpdateEnv}} -\newcommand{\UpdateState}{\type{UpdateState}} -\newcommand{\UTxOEnv}{\type{UTxOEnv}} -\newcommand{\CEEnv}{\type{CEEnv}} -\newcommand{\CEState}{\type{CEState}} -\newcommand{\BDEnv}{\type{BDEnv}} -\newcommand{\BDState}{\type{BDState}} -\newcommand{\LEnv}{\type{LEnv}} -\newcommand{\LState}{\type{LState}} -\newcommand{\GoguenChainState}{\type{GoguenChainState}} -%% -%% Functions -%% -\newcommand{\txins}[1]{\fun{txins}~ \var{#1}} -\newcommand{\txouts}[1]{\fun{txouts}~ \var{#1}} -\newcommand{\txcerts}[1]{\fun{txcerts}~ \var{#1}} -\newcommand{\txid}[1]{\fun{txid}~ \var{#1}} -\newcommand{\outs}[1]{\fun{outs}~ \var{#1}} -\newcommand{\values}[1]{\fun{values}~ #1} -\newcommand{\ubalance}[1]{\fun{ubalance}~ \var{#1}} -\newcommand{\txttl}[1]{\fun{txttl}~ \var{#1}} -\newcommand{\firstSlot}[1]{\fun{firstSlot}~ \var{#1}} -\newcommand{\deposited}[2]{\fun{deposited}~ \var{#1} ~ \var{#2}} -\newcommand{\decayedKey}[4]{\fun{decayedKey}~ \var{#1}~ \var{#2}~ \var{#3}~ \var{#4}} -\newcommand{\decayedTx}[3]{\fun{decayedTx}~ \var{#1}~ \var{#2}~ \var{#3}} -\newcommand{\keyRefund}[6]{\fun{keyRefund}~ {#1}~{#2}~{#3}~\var{#4}~\var{#5}~\var{#6}} -\newcommand{\refund}[4]{\fun{refund}~ \var{#1}~ \var{#2}~ {#3}~ {#4}} -\newcommand{\keyRefunds}[2]{\fun{keyRefunds}~ \var{#1}~ \var{#2}} -\newcommand{\consumed}[4]{\fun{consumed}~ \var{#1}~ \var{#2}~ \var{#3}~ \var{#4}} -\newcommand{\produced}[2]{\fun{produced}~ \var{#1}~ \var{#2}} -\newcommand{\applyFun}[2]{\fun{#1}~\var{#2}} - -\newcommand{\RegKey}[1]{\textsc{RegKey}(#1)} -\newcommand{\DeregKey}[1]{\textsc{DeregKey}(#1)} -\newcommand{\Delegate}[1]{\textsc{Delegate}(#1)} -\newcommand{\RegPool}[1]{\textsc{RegPool}(#1)} -\newcommand{\RetirePool}[1]{\textsc{RetirePool}(#1)} -\newcommand{\cwitness}[1]{\fun{cwitness}~ \var{#1}} -\newcommand{\dpool}[1]{\fun{dpool}~ \var{#1}} -\newcommand{\poolParam}[1]{\fun{poolParam}~ \var{#1}} -\newcommand{\retire}[1]{\fun{retire}~ \var{#1}} -\newcommand{\addrRw}[1]{\fun{addr_{rwd}}~ \var{#1}} -\newcommand{\epoch}[1]{\fun{epoch}~\var{#1}} -\newcommand{\kesPeriod}[1]{\fun{kesPeriod}~\var{#1}} -\newcommand{\pps}[1]{\fun{pps}~ \var{#1}} - -%% UTxO witnesses -\newcommand{\inputs}[1]{\fun{inputs}~ \var{#1}} -\newcommand{\txwits}[1]{\fun{txwits}~ \var{#1}} -\newcommand{\verify}[3]{\fun{verify} ~ #1 ~ #2 ~ #3} -\newcommand{\sign}[2]{\fun{sign} ~ #1 ~ #2} -\newcommand{\verifyEv}[4]{\fun{verify_{ev}} ~ #1 ~ #2 ~ #3 ~ #4} -\newcommand{\signEv}[3]{\fun{sign_{ev}} ~ #1 ~ #2 ~ #3} -\newcommand{\serialised}[1]{\llbracket \var{#1} \rrbracket} -\newcommand{\hashKey}[1]{\fun{hashKey}~ \var{#1}} -\newcommand{\txbody}[1]{\fun{txbody}~ \var{#1}} -\newcommand{\txfee}[1]{\fun{txfee}~ \var{#1}} -\newcommand{\txwdrls}[1]{\fun{txwdrls}~ \var{#1}} -\newcommand{\minfee}[2]{\fun{minfee}~ \var{#1}~ \var{#2}} -\newcommand{\slotminus}[2]{\var{#1}~-_{s}~\var{#2}} -\DeclarePairedDelimiter\floor{\lfloor}{\rfloor} -% wildcard parameter -\newcommand{\wcard}[0]{\underline{\phantom{a}}} -%% Adding ledgers... -\newcommand{\utxo}[1]{\fun{utxo}~ #1} -%% Delegation -\newcommand{\delegatesName}{\fun{delegates}} -\newcommand{\delegates}[3]{\delegatesName~#1~#2~#3} -\newcommand{\dwho}[1]{\fun{dwho}~\var{#1}} -\newcommand{\depoch}[1]{\fun{depoch}~\var{#1}} -\newcommand{\dval}{\ensuremath{d_{\mathsf{val}}}} -%% Delegation witnesses -\newcommand{\dbody}[1]{\fun{dbody}~\var{#1}} -\newcommand{\dwit}[1]{\fun{dwit}~\var{#1}} -%% Blockchain -\newcommand{\bwit}[1]{\fun{bwit}~\var{#1}} -\newcommand{\bslot}[1]{\fun{bslot}~\var{#1}} -\newcommand{\bbody}[1]{\fun{bbody}~\var{#1}} -\newcommand{\bhbody}[1]{\fun{bhbody}~\var{#1}} -\newcommand{\bdlgs}[1]{\fun{bdlgs}~\var{#1}} -%% ledgerstate constants -\newcommand{\genesisId}{\ensuremath{Genesis_{Id}}} -\newcommand{\genesisTxOut}{\ensuremath{Genesis_{Out}}} -\newcommand{\genesisUTxO}{\ensuremath{Genesis_{UTxO}}} -\newcommand{\genesisUTxOState}{(\genesisUTxO,\wcard,\wcard,\wcard)} -\newcommand{\emax}{\ensuremath{\mathsf{E_{max}}}} - -\newcommand{\unitInterval}{\ensuremath{[0,~1]}} -\newcommand{\unitIntervalNonNull}{\ensuremath{(0,~1]}} -\newcommand{\nonnegReals}{\ensuremath{[0,~\infty)}} -\newcommand{\posReals}{\ensuremath{(0,~\infty)}} - -\newcommand{\Val}{\fun{Val}} -\newcommand{\Utxo}{\fun{Utxo}} -\newcommand{\field}{\fun{field}} - - -\theoremstyle{definition} -\newtheorem{definition}{Definition}[section] -\newtheorem{property}{Property}[section] -\newtheorem{lemma}[definition]{Lemma} -\newtheorem{theorem}[definition]{Theorem} -\newtheorem{corollary}[definition]{Corollary} - -\newcommand{\leteq}{\ensuremath{\mathrel{\mathop:}=}} - -\definecolor{hldiffcolor}{rgb}{0.95, 0.93, 0} -\newcommand{\hldiff}[1]{\mathchoice - {\colorbox{hldiffcolor}{$\displaystyle#1$}} - {\colorbox{hldiffcolor}{$\textstyle#1$}} - {\colorbox{hldiffcolor}{$\scriptstyle#1$}} - {\colorbox{hldiffcolor}{$\scriptscriptstyle#1$}}} -\DeclareMathOperator{\supp}{supp} - -%% In-para enumeration -- KH -\usepackage{paralist} - -%% Enumeration args -- KH -\usepackage{enumitem} - -\begin{document} - -\input{frontmatter} - -\tableofcontents -\listoffigures - -\include{introduction} -\include{notation} -\include{transactions} -\include{utxo} -\include{remove-overlay} -\include{rewards} - -\begin{appendix} - \include{txinfo} -\end{appendix} - -\addcontentsline{toc}{section}{References} -\bibliographystyle{plainnat} -\bibliography{references} - -\end{document} diff --git a/eras/babbage/formal-spec/comments.sty b/eras/babbage/formal-spec/comments.sty deleted file mode 100644 index b7255e82ecf..00000000000 --- a/eras/babbage/formal-spec/comments.sty +++ /dev/null @@ -1,49 +0,0 @@ -% $id$ -% KH: created comments style file to allow alternative versions of a document. -% KH: added draft environment - -% \newcommand{\red}[1]{#1} - -%% \usepackage[usenames]{color} -%% \definecolor{BrickRed}{cmyk}{0, .89, .5, 0} -%% \definecolor{Blue}{cmyk}{.8, .3, .2, 0} -%% \definecolor{Green}{cmyk}{1, 0, 1, 0} -%% \definecolor{Black}{cmyk}{1, 1, 1, 0} -\newcommand{\red}{\color{BrickRed}} -\newcommand{\blue}{\color{Blue}} -\newcommand{\green}{\color{Green}} -\newcommand{\black}{\color{Black}} - -\newcommand{\eucommentary}[1]{{\red\(\spadesuit\){\textbf{EC Commentary}: \emph{#1}}\(\spadesuit\)}} -\newcommand{\euevaluation}[2]{{\red\(\spadesuit\){\textbf{Evaluation Criteria ({#1})}: \emph{#2}}\(\spadesuit\)}} - -\newcommand{\comment}[2]{{\blue\(\spadesuit\){\bf #1: }{\textit{#2}}\(\spadesuit\)}} -\newcommand{\draftpage}{\newpage} - -\newcommand{\FIXME}[1]{[\textbf{FIXME}: #1]} - -\newcommand{\TODO}[1]{{\green\(\spadesuit\){\textbf{TO DO}: \emph{#1}}\(\spadesuit\)}} - -\newcommand{\TOWRITE}[2]{{\green\(\spadesuit\){#1 [\textbf{WRITE HERE}: #2]}\(\spadesuit\)}} - -\usepackage{marginnote} - -\newcommand{\commentwidth}{8cm} -\newcommand{\marginparsepwidth}{2cm} - - -\newenvironment{draft}{}{} - -\newcommand{\nocomments}{ -\renewcommand{\eucommentary}[1]{} -\renewcommand{\euevaluation}[2]{} -\renewcommand{\comment}[2]{} -\renewcommand{\draftpage}{} -\renewcommand{\FIXME}[1]{} -\renewcommand{\TODO}[1]{} -\renewcommand{\TOWRITE}[2]{} -} - -\DeclareOption{final}{\nocomments} -\DeclareOption{draft}{} -\ProcessOptions* diff --git a/eras/babbage/formal-spec/flake.nix b/eras/babbage/formal-spec/flake.nix deleted file mode 100644 index 3a443fac963..00000000000 --- a/eras/babbage/formal-spec/flake.nix +++ /dev/null @@ -1,30 +0,0 @@ -{ - outputs = inputs: { - packages = - builtins.mapAttrs (_: {nixpkgs, ...}: { - default = with nixpkgs; - buildLatex { - name = "babbage-spec"; - texFiles = ["babbage-ledger"]; - meta = with lib; { - description = "Babbage ledger specification"; - license = licenses.asl20; - platforms = platforms.linux; - }; - src = filterLatex ./.; - - texInputs = { - inherit - (texlive) - scheme-small - collection-latexextra - collection-latexrecommended - collection-mathscience - bclogo - ; - }; - }; - }) - (inputs.main or (import ../../../nix/flake-compat.nix).defaultNix).legacyPackages; - }; -} diff --git a/eras/babbage/formal-spec/frontmatter.tex b/eras/babbage/formal-spec/frontmatter.tex deleted file mode 100644 index 4df67221ce4..00000000000 --- a/eras/babbage/formal-spec/frontmatter.tex +++ /dev/null @@ -1,71 +0,0 @@ -\hypersetup{ - pdftitle={Formal Specification of the Cardano Ledger with Plutus - Integration}, - breaklinks=true, - bookmarks=true, - colorlinks=false, - linkcolor={blue}, - citecolor={blue}, - urlcolor={blue}, - linkbordercolor={white}, - citebordercolor={white}, - urlbordercolor={white} -} - - -\floatstyle{boxed} -\restylefloat{figure} -\cleardoublepage -\renewcommand{\thepage}{\arabic{page}} -\setcounter{page}{1} - -\title{Formal Specification of the Cardano Ledger for the Babbage era} - -\author{ - Andre Knispel \\ {\small \texttt{andre.knispel@iohk.io}} \\ - Jared Corduan \\ {\small \texttt{jared.corduan@iohk.io}} \\ - } - -\date{} - -\maketitle - -\begin{abstract} -This document presents the modifications to the Alonzo ledger specification~ -(see \cite{alonzo_spec}) for the Babbage era. -The Babbage era introduces two main groups of changes. - -The first group involves new ways of providing data to Plutus scripts. -In particular, there is now support for -\href{https://cips.cardano.org/cips/cip31/}{reference inputs}, -\href{https://cips.cardano.org/cips/cip32/}{inline datums}, and -\href{https://cips.cardano.org/cips/cip33/}{reference scripts}. -Additionally, the Babbage era supports -\href{https://github.com/cardano-foundation/CIPs/pull/216}{collateral outputs}, -which supports collateral outputs and asserting the exact collateral. -The former helps with managing collateral for all wallets and the latter helps -reduces the risk of using collateral inputs in hardware wallets. - -The second group of changes involves the handling of block headers. -We introduce a performance optimization, namely using a single VRF value for both -the leader check and the epoch nonce contribution. -We also remove the features introduced in the Shelley era which existed in order -to smoothly transition from a federated environment into a decentralized environment -(with respect to block production). -In particular, there is no longer an overlay schedule or a mechanism for adding -extra entropy to the epoch nonce. -\end{abstract} - -\section*{List of Contributors} -\label{acknowledgements} - -Alex Byaly, -Nicholas Clarke, -Duncan Coutts, -Sebastien Guillemot, -Philipp Kant, -Jan Mazak, -Michal Peyton Jones, -Tim Sheard, -Polina Vinogradova, -Jamie Harper diff --git a/eras/babbage/formal-spec/introduction.tex b/eras/babbage/formal-spec/introduction.tex deleted file mode 100644 index 625adf1c0e1..00000000000 --- a/eras/babbage/formal-spec/introduction.tex +++ /dev/null @@ -1,21 +0,0 @@ -\section{Introduction} - -This specification describes the incremental changes from the Alonzo -era of Cardano to the Babbage era. The main objective of this era is -to make small adjustments in many places, usually to simplify the -ledger or to include features that didn't make it into past eras. As -part of this effort, we also make some changes to the notation used in -these specifications, which should make them easier to understand and -maintain. - -Concretely, this specification makes the following changes: -\begin{itemize} -\item Add reference inputs to transactions -\item Add inline datums in the UTxO -\item Add reference scripts -\item Add transaction fields for specifying and returning collateral -\item Remove the protocol parameters $\var{d}$ and $\var{extraEntropy}$ -\item Remove the overlay schedule -\item Block headers to only include a single VRF value and proof -\item Remove the pre-filtering of unregistered stake credentials in the reward calculation -\end{itemize} diff --git a/eras/babbage/formal-spec/iohk-share-logo.jpg b/eras/babbage/formal-spec/iohk-share-logo.jpg deleted file mode 100644 index 9c864e184c9115ae3013c592fcbec14b8d4410be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9689 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